{"version":3,"file":"vendor.1ad7c745cd03e37b837f.js","mappings":"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B,YAAY/iyB,uBACnD,EACAqiyB,EAAat23B,UAAU433B,iBAAmB,WACtC,OAAOt33B,KAAKu33B,kBAAoBv33B,KAAK623B,cAAcljyB,uBACvD,EACAqiyB,EAAat23B,UAAU823B,sBAAwB,SAAUr33B,GACrDa,KAAKk33B,sBACLl33B,KAAKi23B,oBAAqB,EAC1Bj23B,KAAKw33B,YAAYr43B,EACrB,EACA623B,EAAat23B,UAAU+23B,sBAAwB,SAAUt33B,GACjDa,KAAKi23B,oBACLj23B,KAAKw33B,YAAYr43B,EAEzB,EACA623B,EAAat23B,UAAUi33B,kBAAoB,SAAUx33B,GACjDa,KAAKo33B,iBACLp33B,KAAKk23B,uBAAwB,EAC7Bl23B,KAAKy33B,cAAct43B,EACvB,EACA623B,EAAat23B,UAAUk33B,kBAAoB,SAAUz33B,GAC7Ca,KAAKk23B,uBACLl23B,KAAKy33B,cAAct43B,EAE3B,EACA623B,EAAat23B,UAAUo33B,oBAAsB,SAAU333B,GACnDa,KAAKs33B,mBACLt33B,KAAKm23B,yBAA0B,EAC/Bn23B,KAAK033B,gBAAgBv43B,EACzB,EACA623B,EAAat23B,UAAUq33B,oBAAsB,SAAU533B,GAC/Ca,KAAKm23B,yBACLn23B,KAAK033B,gBAAgBv43B,EAE7B,EACA623B,EAAat23B,UAAU06Y,UAAY,WAC/Bp6Y,KAAKi23B,oBAAqB,EAC1Bj23B,KAAKk23B,uBAAwB,EAC7Bl23B,KAAKm23B,yBAA0B,CACnC,EACAH,EAAat23B,UAAU833B,YAAc,SAAUr43B,GAC3C,IAAIw43B,EAAU333B,KAAKm33B,gBACnB,GAAIQ,EAAS,CACT,IAAI1z3B,EAAI9E,EAAE20F,QAAU6jyB,EAAQ941B,KACxB77B,EAAI7D,EAAE40F,QAAU4jyB,EAAQ741B,IAC5B76B,EAAIpB,KAAK8K,IAAI1J,EAAG,GAChBA,EAAIpB,KAAKgL,IAAI5J,EAAG0z3B,EAAQ541B,OACxB/7B,EAAIH,KAAK8K,IAAI3K,EAAG,GAChBA,EAAIH,KAAKgL,IAAI7K,EAAG203B,EAAQ3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5B,oBACT,EAEAlB,EAAU135B,UAAU245B,kBAAoB,WACpCr45B,KAAKsjO,OAAOvhG,MAAQ,CAAC,EAAG/hI,KAAKq3yB,WAAWt4wB,MAC5C,EAEAq43B,EAAU135B,UAAU445B,mBAAqB,WACrC,IACIC,EADWv8G,EAANh8yB,KAAiBg8yB,MAAO14kB,EAAxBtjO,KAAoCsjO,QAEzCA,aAAkButkB,aAAevtkB,aAAkB0+jB,aACnDu2H,EAAUzB,SAAS96G,IAEvBh8yB,KAAKsjO,OAAOlvN,OAASmk5B,EAAUA,EAAQx25B,QAAUi6yB,CACrD,EAMAo7G,EAAU135B,UAAU045B,UAAY,SAAU7r5B,GAEtC,YADa,IAATA,IAAmBA,EAAO,YACtBA,GACJ,IAAK,SACD,OAAO,IAAIskyB,YACf,IAAK,OACD,OAAO,IAAI7O,UAEf,QACI,OAAO,IAAIi1H,YAEvB,EAEAG,EAAU135B,UAAU845B,eAAiB,WAAc,EAEnDpB,EAAU135B,UAAU8vzB,WAAa,WAC7BxvzB,KAAKg45B,eACLh45B,KAAKm45B,eACLn45B,KAAKw45B,gBACT,EAEApB,EAAU135B,UAAU+45B,iBAAmB,WACnCz45B,KAAK045B,uBACL145B,KAAK245B,sBACT,EAEAvB,EAAU135B,UAAUk55B,iBAAmB,WACnC,MAAO,EACX,EAEAxB,EAAU135B,UAAUm55B,YAAc,WAC9B,MAAO,EACX,EAEAzB,EAAU135B,UAAUi4yB,YAAc,WAAc,EAEhDy/G,EAAU135B,UAAUg55B,qBAAuB,WAAc,EAEzDtB,EAAU135B,UAAUi55B,qBAAuB,WAAc,EACzDvB,EAAU135B,UAAUo55B,eAAiB,SAAUv+G,GAC3Cv6yB,KAAK23yB,aACT,EACAy/G,EAAU135B,UAAUq55B,iBAAmB,WACnC/45B,KAAK4/wB,sBAAmB7xuB,EACxB/tC,KAAK23yB,cACL33yB,KAAKy45B,kBACT,EAOArB,EAAU135B,UAAUs6Y,YAAc,SAAUv7W,GACxCz+B,KAAK635B,eAAiBp53B,EACtBz+B,KAAK835B,eAAer53B,EACxB,EACA243B,EAAU135B,UAAUo45B,eA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,eAAex35B,SAAQ,SAAUy35B,GAG/C,OAFAd,EAAen56B,EAAE,KACjBm56B,EAAe/66B,EAAE,MACV4rD,EAAMgw3B,cAAcC,IAC/B,IACAd,EAAe/66B,EAAE,MACjBxB,OAAOgU,KAAKo5C,EAAM+v3B,UAAUv35B,SAAQ,SAAUy35B,GAG1C,OAFAd,EAAen56B,EAAE,KACjBm56B,EAAe/66B,EAAE,MACV4rB,aAAaggC,EAAM+v3B,SAASE,GACvC,IAGJ,OADAd,EAAe/66B,EAAE,MACV4rD,CACX,EAEA1sD,KAAK486B,UAAY,SAAUns5B,GAIvB,OAHAor5B,EAAen56B,EAAE,KACjBm56B,EAAe/66B,EAAE,MAEb2vB,GACAor5B,EAAev46B,EAAE,GAAG,KACpBu46B,EAAe/66B,EAAE,QAER4rD,EAAMylX,QAAQ1hZ,KAEvBor5B,EAAev46B,EAAE,GAAG,KAExBu46B,EAAe/66B,EAAE,MACVxB,OAAOgU,KAAKo5C,EAAMylX,SAASxqY,MAAK,SAAUk14B,GAG7C,OAFAhB,EAAen56B,EAAE,KACjBm56B,EAAe/66B,EAAE,MACV4rD,EAAMylX,QAAQ0qgB,EACzB,IACJ,EAEA786B,KAAK886B,UAAY,SAAUrs5B,GAIvB,OAHAor5B,EAAen56B,EAAE,KACjBm56B,EAAe/66B,EAAE,MAEb2vB,GACAor5B,EAAev46B,EAAE,GAAG,KACpBu46B,EAAe/66B,EAAE,QAER4rD,EAAMqw3B,kBAAkBts5B,KAEjCor5B,EAAev46B,EAAE,GAAG,KAExBu46B,EAAe/66B,EAAE,MACVxB,OAAOgU,KAAKo5C,EAAMqw3B,mBAAmBp14B,MAAK,SAAUq14B,GAGvD,OAFAnB,EAAen56B,EAAE,MACjBm56B,EAAe/66B,EAAE,MACV4rD,EAAMqw3B,kBAAkBC,EACnC,IACJ,EAEAh96B,KAAKi96B,WAAa,SAAUxs5B,GAIxB,OAHAor5B,EAAen56B,EAAE,MACjBm56B,EAAe/66B,EAAE,MAEb2vB,GACAor5B,EAAev46B,EAAE,GAAG,KACpBu46B,EAAe/66B,EAAE,QAER4rD,EAAMww3B,SAASzs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G,EAAIiE,GACxCjE,IACDA,EAAK,GAEJiE,IACDA,EAAKs8B,EAAM75C,QAEf,IAAIqzP,EAAY91O,EAAKjE,EACrB,KAAI+5O,EAAY,GAAhB,CAGA,IAAI8jtB,EAAY,EAChB,GAAI9jtB,EA3fgB,GA6fhB0jtB,GAAoBl95B,EAAOvgC,EAAIiE,EAAIjE,GADnC697B,EAAYP,GAAiB/85B,EAAOvgC,EAAIiE,EAAIssG,IACOA,OAFvD,CAKA,IAAIut1B,EAzVR,SAAiBv95B,EAAOgwE,GACpB,IAIIwt1B,EACAF,EALAG,EAAYX,GAMZY,EAAY,EACP195B,EAAM75C,OAIf,IAAIujW,EAAM,GAiCV,SAASi0mB,EAAQj38B,GACb,IAAIk38B,EAASJ,EAAS928B,GAClBm38B,EAAUP,EAAU528B,GACpBo38B,EAASN,EAAS928B,EAAI,GACtBq38B,EAAUT,EAAU528B,EAAI,GAC5B428B,EAAU528B,GAAKm38B,EAAUE,EACrBr38B,IAAMg38B,EAAY,IAClBF,EAAS928B,EAAI,GAAK828B,EAAS928B,EAAI,GAC/B428B,EAAU528B,EAAI,GAAK428B,EAAU528B,EAAI,IAErCg38B,IACA,IAAIl08B,EAAI6z8B,GAAYr95B,EAAM895B,GAAS995B,EAAO495B,EAAQC,EAAS,EAAG7t1B,GAC9D4t1B,GAAUp08B,EAEM,IADhBq08B,GAAWr08B,IAKK,KADhBu08B,EAAUZ,GAAWn95B,EAAM495B,EAASC,EAAU,GAAI795B,EAAO895B,EAAQC,EAASA,EAAU,EAAG/t1B,MAInF6t1B,GAAWE,EAOnB,SAAkBH,EAAQC,EAASC,EAAQC,GACvC,IAAIr38B,EAAI,EACR,IAAKA,EAAI,EAAGA,EAAIm38B,EAASn38B,IACrBgjW,EAAIhjW,GAAKs5C,EAAM495B,EAASl38B,GAE5B,IAAIs38B,EAAU,EACVC,EAAUH,EACVhvzB,EAAO8uzB,EAEX,GADA595B,EAAM8uG,KAAU9uG,EAAMi+5B,KACJ,KAAZF,EAMN,GAAgB,IAAZF,EAAJ,CAWA,IAJA,IACIK,EACAC,EACAC,EAHAC,EAAaZ,IAIP,CACNS,EAAS,EACTC,EAAS,EACTC,GAAO,EACP,GACI,GAAIpu1B,EAAQhwE,EAAMi+5B,GAAUv0mB,EAAIs0mB,IAAY,GAIxC,GAHAh+5B,EAAM8uG,KAAU9uG,EAAMi+5B,KACtBE,IACAD,EAAS,EACS,KAAZH,EAAe,CACjBK,GAAO,EACP,KACJ,OAMA,GAHAp+5B,EAAM8uG,KAAU46M,EAAIs0mB,KACpBE,IACAC,EAAS,EACS,KAAZN,EAAe,CACjBO,GAAO,EACP,KACJ,SAEEF,EAASC,GAAUE,GAC7B,GAAID,EACA,MAEJ,EAAG,CAEC,GAAe,KADfF,EAASb,GAAYr95B,EAAMi+5B,GAAUv0mB,EAAKs0mB,EAASH,EAAS,EAAG7t1B,IAC7C,CACd,IAAKtpH,EAAI,EAAGA,EAAIw38B,EAAQx38B,IACpBs5C,EAAM8uG,EAAOpoJ,GAAKgjW,EAAIs0mB,EAAUt38B,GAKpC,GAHAooJ,GAAQovzB,EACRF,GAAWE,GACXL,GAAWK,IACI,EAAG,CACdE,GAAO,EACP,KACJ,CACJ,CAEA,GADAp+5B,EAAM8uG,KAAU9uG,EAAMi+5B,KACJ,KAAZF,EAAe,CACjBK,GAAO,EACP,KACJ,CAEA,GAAe,KADfD,EAAShB,GAAWzzmB,EAAIs0mB,GAAUh+5B,EAAOi+5B,EAASF,EAAS,EAAG/t1B,IAC5C,CACd,IAAKtpH,EAAI,EAAGA,EAAIy38B,EAAQz38B,IACpBs5C,EAAM8uG,EAAOpoJ,GAAKs5C,EAAMi+5B,EAAUv38B,GAKtC,GAHAooJ,GAAQqvzB,EACRF,GAAWE,EAEK,IADhBJ,GAAWI,GACQ,CACfC,GAAO,EACP,KACJ,CACJ,CAEA,GADAp+5B,EAAM8uG,KAAU46M,EAAIs0mB,KACF,KAAZH,EAAe,CACjBO,GAAO,EACP,KACJ,CACAC,GACJ,OAASH,GAAUpB,IAAyBqB,GAAUrB,IACtD,GAAIsB,EACA,MAEAC,EAAa,IACbA,EAAa,GAEjBA,GAAc,CAClB,CAGA,IAFAZ,EAAYY,GACA,IAAMZ,EAAY,GACd,IAAZI,EAAe,CACf,IAAKn38B,EAAI,EAAGA,EAAIq38B,EAASr38B,IACrBs5C,EAAM8uG,EAAOpoJ,GAAKs5C,EAAMi+5B,EAAUv38B,GAEtCs5C,EAAM8uG,EAAOivzB,GAAWr0mB,EAAIs0mB,EAChC,KACK,IAAgB,IAAZH,EACL,MAAM,IAAIvw7B,MAGV,IAAK5mB,EAAI,EAAGA,EAAIm38B,EAASn38B,IACrBs5C,EAAM8uG,EAAOpoJ,GAAKgjW,EAAIs0mB,EAAUt38B,EAExC,CA9FA,KANA,CACI,IAAKA,EAAI,EAAGA,EAAIq38B,EAASr38B,IACrBs5C,EAAM8uG,EAAOpoJ,GAAKs5C,EAAMi+5B,EAAUv38B,GAEtCs5C,EAAM8uG,EAAOivzB,GAAWr0mB,EAAIs0mB,EAEhC,MAXI,IAAKt38B,EAAI,EAAGA,EAAIm38B,EAASn38B,IACrBs5C,EAAM8uG,EAAOpoJ,GAAKgjW,EAAIs0mB,EAAUt38B,EAyG5C,CA1HQ438B,CAASV,EAAQC,EAASC,EAAQC,GA2H1C,SAAmBH,EAAQC,EAASC,EAAQC,GACxC,IAAIr38B,EAAI,EACR,IAAKA,EAAI,EAAGA,EAAIq38B,EAASr38B,IACrBgjW,EAAIhjW,GAAKs5C,EAAM895B,EAASp38B,GAE5B,IAAIs38B,EAAUJ,EAASC,EAAU,EAC7BI,EAAUF,EAAU,EACpBjvzB,EAAOgvzB,EAASC,EAAU,EAC1BQ,EAAe,EACfC,EAAa,EAEjB,GADAx+5B,EAAM8uG,KAAU9uG,EAAMg+5B,KACJ,KAAZH,EAON,GAAgB,IAAZE,EAAJ,CAYA,IADA,IAAIM,EAAaZ,IACJ,CACT,IAAIS,EAAS,EACTC,EAAS,EACTC,GAAO,EACX,GACI,GAAIpu1B,EAAQ05O,EAAIu0mB,GAAUj+5B,EAAMg+5B,IAAY,GAIxC,GAHAh+5B,EAAM8uG,KAAU9uG,EAAMg+5B,KACtBE,IACAC,EAAS,EACS,KAAZN,EAAe,CACjBO,GAAO,EACP,KACJ,OAMA,GAHAp+5B,EAAM8uG,KAAU46M,EAAIu0mB,KACpBE,IACAD,EAAS,EACS,KAAZH,EAAe,CACjBK,GAAO,EACP,KACJ,SAEEF,EAASC,GAAUE,GAC7B,GAAID,EACA,MAEJ,EAAG,CAEC,GAAe,IADfF,EAASL,EAAUR,GAAY3zmB,EAAIu0mB,GAAUj+5B,EAAO495B,EAAQC,EAASA,EAAU,EAAG7t1B,IAChE,CAMd,IAHA6t1B,GAAWK,EACXM,EAAoB,GAHpB1vzB,GAAQovzB,GAIRK,EAAyB,GAHzBP,GAAWE,GAINx38B,EAAIw38B,EAAS,EAAGx38B,GAAK,EAAGA,IACzBs5C,EAAMw+5B,EAAa938B,GAAKs5C,EAAMu+5B,EAAe738B,GAEjD,GAAgB,IAAZm38B,EAAe,CACfO,GAAO,EACP,KACJ,CACJ,CAEA,GADAp+5B,EAAM8uG,KAAU46M,EAAIu0mB,KACF,KAAZF,EAAe,CACjBK,GAAO,EACP,KACJ,CAEA,GAAe,IADfD,EAASJ,EAAUZ,GAAWn95B,EAAMg+5B,GAAUt0mB,EAAK,EAAGq0mB,EAASA,EAAU,EAAG/t1B,IAC1D,CAMd,IAHA+t1B,GAAWI,EACXK,EAAoB,GAHpB1vzB,GAAQqvzB,GAIRI,EAAyB,GAHzBN,GAAWE,GAINz38B,EAAI,EAAGA,EAAIy38B,EAAQz38B,IACpBs5C,EAAMw+5B,EAAa938B,GAAKgjW,EAAI60mB,EAAe738B,GAE/C,GAAIq38B,GAAW,EAAG,CACdK,GAAO,EACP,KACJ,CACJ,CAEA,GADAp+5B,EAAM8uG,KAAU9uG,EAAMg+5B,KACJ,KAAZH,EAAe,CACjBO,GAAO,EACP,KACJ,CACAC,GACJ,OAASH,GAAUpB,IAAyBqB,GAAUrB,IACtD,GAAIsB,EACA,MAEAC,EAAa,IACbA,EAAa,GAEjBA,GAAc,CAClB,CAKA,IAJAZ,EAAYY,GACI,IACZZ,EAAY,GAEA,IAAZM,EAAe,CAKf,IAFAS,EAAoB,GAFpB1vzB,GAAQ+uzB,GAGRU,EAAyB,GAFzBP,GAAWH,GAGNn38B,EAAIm38B,EAAU,EAAGn38B,GAAK,EAAGA,IAC1Bs5C,EAAMw+5B,EAAa938B,GAAKs5C,EAAMu+5B,EAAe738B,GAEjDs5C,EAAM8uG,GAAQ46M,EAAIu0mB,EACtB,KACK,IAAgB,IAAZF,EACL,MAAM,IAAIzw7B,MAIV,IADAix7B,EAAezvzB,GAAQivzB,EAAU,GAC5Br38B,EAAI,EAAGA,EAAIq38B,EAASr38B,IACrBs5C,EAAMu+5B,EAAe738B,GAAKgjW,EAAIhjW,EAEtC,CAtGA,KAVA,CAKI,IAFA838B,EAAoB,GAFpB1vzB,GAAQ+uzB,GAGRU,EAAyB,GAFzBP,GAAWH,GAGNn38B,EAAIm38B,EAAU,EAAGn38B,GAAK,EAAGA,IAC1Bs5C,EAAMw+5B,EAAa938B,GAAKs5C,EAAMu+5B,EAAe738B,GAEjDs5C,EAAM8uG,GAAQ46M,EAAIu0mB,EAEtB,MAfI,IADAM,EAAezvzB,GAAQivzB,EAAU,GAC5Br38B,EAAI,EAAGA,EAAIq38B,EAASr38B,IACrBs5C,EAAMu+5B,EAAe738B,GAAKgjW,EAAIhjW,EAqH1C,CA3PQ+38B,CAAUb,EAAQC,EAASC,EAAQC,GAE3C,CA0PA,OApTAP,EAAW,GACXF,EAAY,GAmTL,CACHoB,UA9SJ,WACI,KAAOhB,EAAY,GAAG,CAClB,IAAIv48B,EAAIu48B,EAAY,EACpB,GAAKv48B,GAAK,GAAKm48B,EAAUn48B,EAAI,IAAMm48B,EAAUn48B,GAAKm48B,EAAUn48B,EAAI,IACxDA,GAAK,GAAKm48B,EAAUn48B,EAAI,IAAMm48B,EAAUn48B,GAAKm48B,EAAUn48B,EAAI,GAC3Dm48B,EAAUn48B,EAAI,GAAKm48B,EAAUn48B,EAAI,IACjCA,SAGH,GAAIm48B,EAAUn48B,GAAKm48B,EAAUn48B,EAAI,GAClC,MAEJw48B,EAAQx48B,EACZ,CACJ,EAiSIw58B,eAhSJ,WACI,KAAOjB,EAAY,GAAG,CAClB,IAAIv48B,EAAIu48B,EAAY,EAChBv48B,EAAI,GAAKm48B,EAAUn48B,EAAI,GAAKm48B,EAAUn48B,EAAI,IAC1CA,IAEJw48B,EAAQx48B,EACZ,CACJ,EAyRIy58B,QArTJ,SAAiBC,EAAWC,GACxBtB,EAASE,GAAamB,EACtBvB,EAAUI,GAAaoB,EACvBpB,GAAa,CACjB,EAmTJ,CAkBaqB,CAAQ/+5B,EAAOgwE,GACpBgv1B,EA9fR,SAAsB758B,GAElB,IADA,IAAIU,EAAI,EACDV,GALa,IAMhBU,GAAS,EAAJV,EACLA,IAAM,EAEV,OAAOA,EAAIU,CACf,CAufiBo58B,CAAazltB,GAC1B,EAAG,CAEC,IADA8jtB,EAAYP,GAAiB/85B,EAAOvgC,EAAIiE,EAAIssG,IAC5Bgv1B,EAAQ,CACpB,IAAI543B,EAAQozK,EACRpzK,EAAQ443B,IACR543B,EAAQ443B,GAEZ9B,GAAoBl95B,EAAOvgC,EAAIA,EAAK2mE,EAAO3mE,EAAK697B,EAAWtt1B,GAC3Dst1B,EAAYl33B,CAChB,CACAm33B,EAAGqB,QAAQn/7B,EAAI697B,GACfC,EAAGmB,YACHlltB,GAAa8jtB,EACb797B,GAAM697B,CACV,OAAuB,IAAd9jtB,GACT+jtB,EAAGoB,gBAlBH,CANA,CAyBJ,CClhBO,IAAIO,GAAa,EAEbC,GAAoB,ECC3BC,IAAsB,EAC1B,SAASC,KACDD,KAGJA,IAAsB,EACtBjy7B,QAAQC,KAAK,gFACjB,CACA,SAASky7B,GAAiBx48B,EAAGsC,GACzB,OAAItC,EAAEy48B,SAAWn28B,EAAEm28B,OACXz48B,EAAE2E,IAAMrC,EAAEqC,EACH3E,EAAE+7L,GAAKz5L,EAAEy5L,GAEb/7L,EAAE2E,EAAIrC,EAAEqC,EAEZ3E,EAAEy48B,OAASn28B,EAAEm28B,MACxB,CACA,IAAIC,GAAW,WACX,SAASA,IACL158B,KAAK258B,OAAS,GACd358B,KAAK458B,aAAe,GACpB558B,KAAK658B,gBAAkB,EACvB758B,KAAK858B,oBAAsBN,EAC/B,CAiIA,OAhIAE,EAAQh68B,UAAUmmM,SAAW,SAAUnkI,EAAIv0B,GACvC,IAAK,IAAIvsC,EAAI,EAAGA,EAAIZ,KAAK258B,OAAOt58B,OAAQO,IACpCZ,KAAK258B,OAAO/48B,GAAGilM,SAASnkI,EAAIv0B,EAEpC,EACAus6B,EAAQh68B,UAAUm28B,eAAiB,SAAUtn4B,EAAQwr4B,GACjDA,EAAgBA,IAAiB,EACjC,IAAIC,EAAch68B,KAAK458B,aAIvB,OAHIrr4B,GAAWyr4B,EAAY358B,QACvBL,KAAKi68B,kBAAkBF,GAEpBC,CACX,EACAN,EAAQh68B,UAAUu68B,kBAAoB,SAAUF,GAC5C/58B,KAAK658B,gBAAkB,EAGvB,IAFA,IAAI/lwB,EAAQ9zM,KAAK258B,OACbK,EAAch68B,KAAK458B,aACdh58B,EAAI,EAAGi+H,EAAMi1E,EAAMzzM,OAAQO,EAAIi+H,EAAKj+H,IACzCZ,KAAKk68B,yBAAyBpmwB,EAAMlzM,GAAI,KAAMm58B,GAElDC,EAAY358B,OAASL,KAAK658B,gBAC1B,GAAQG,EAAaR,GACzB,EACAE,EAAQh68B,UAAUw68B,yBAA2B,SAAUrg0B,EAAIsg0B,EAAWJ,GAClE,IAAIlg0B,EAAG1xG,QAAW4x6B,EAAlB,CAGAlg0B,EAAGug0B,eACHvg0B,EAAGtrE,SACHsrE,EAAGwg0B,cACH,IAAIC,EAAkBzg0B,EAAG68zB,cACzB,GAAI78zB,EAAG48zB,WACH0D,EAAY,UAEX,GAAIG,EAAiB,CAElBH,EADAA,EACYA,EAAUp48B,QAGV,GAIhB,IAFA,IAAIw48B,EAAkBD,EAClBE,EAAiB3g0B,EACd0g0B,GACHA,EAAgBlp3B,OAASmp3B,EACzBD,EAAgBE,kBAChBN,EAAUt48B,KAAK048B,GACfC,EAAiBD,EACjBA,EAAkBA,EAAgB7D,aAE1C,CACA,GAAI78zB,EAAG6g0B,YAAa,CAEhB,IADA,IAAI166B,EAAW65G,EAAG6g0B,cACT958B,EAAI,EAAGA,EAAIo/B,EAAS3/B,OAAQO,IAAK,CACtC,IAAIspF,EAAQlqD,EAASp/B,GACjBi5I,EAAG8g0B,UACHzw3B,EAAMyw3B,SAAWvB,IAErBp58B,KAAKk68B,yBAAyBhw3B,EAAOiw3B,EAAWJ,EACpD,CACAlg0B,EAAG8g0B,QAAU,CACjB,KACK,CACD,IAAIC,EAAO/g0B,EACPsg0B,GAAaA,EAAU958B,OACvBu68B,EAAKC,YAAcV,EAEdS,EAAKC,aAAeD,EAAKC,YAAYx68B,OAAS,IACnDu68B,EAAKC,YAAc,IAEnBvu6B,MAAMsu6B,EAAKj18B,KACX4z8B,KACAqB,EAAKj18B,EAAI,GAET2mC,MAAMsu6B,EAAK79wB,MACXw8wB,KACAqB,EAAK79wB,GAAK,GAEVzwJ,MAAMsu6B,EAAKnB,UACXF,KACAqB,EAAKnB,OAAS,GAElBz58B,KAAK458B,aAAa558B,KAAK658B,mBAAqBe,CAChD,CACA,IAAIE,EAAUjh0B,EAAGkh0B,iBAAmBlh0B,EAAGkh0B,kBACnCD,GACA968B,KAAKk68B,yBAAyBY,EAASX,EAAWJ,GAEtD,IAAIiB,EAAYnh0B,EAAGoh0B,mBACfD,GACAh78B,KAAKk68B,yBAAyBc,EAAWb,EAAWJ,GAExD,IAAImB,EAASrh0B,EAAGltD,iBACZuu3B,GACAl78B,KAAKk68B,yBAAyBgB,EAAQf,EAAWJ,EApErD,CAsEJ,EACAL,EAAQh68B,UAAUy78B,QAAU,SAAUth0B,GAC9BA,EAAGk7zB,MAAQl7zB,EAAGk7zB,KAAK9g7B,UAAYj0B,MAGnCA,KAAK258B,OAAO938B,KAAKg4I,EACrB,EACA6/zB,EAAQh68B,UAAU078B,QAAU,SAAUvh0B,GAClC,GAAIA,aAAcp6I,MACd,IAAK,IAAImB,EAAI,EAAG4B,EAAIq3I,EAAGx5I,OAAQO,EAAI4B,EAAG5B,IAClCZ,KAAKo78B,QAAQvh0B,EAAGj5I,QAFxB,CAMA,IAAIk6W,EAAM,EAAa96W,KAAK258B,OAAQ9/zB,GAChCihO,GAAO,GACP96W,KAAK258B,OAAO127B,OAAO63V,EAAK,EAH5B,CAKJ,EACA4+lB,EAAQh68B,UAAU278B,YAAc,WAC5Br78B,KAAK258B,OAAS,GACd358B,KAAK458B,aAAe,GACpB558B,KAAK658B,gBAAkB,CAE3B,EACAH,EAAQh68B,UAAU478B,SAAW,WACzB,OAAOt78B,KAAK258B,MAChB,EACAD,EAAQh68B,UAAU2l8B,QAAU,WACxBrl8B,KAAK458B,aAAe,KACpB558B,KAAK258B,OAAS,IAClB,EACOD,CACX,CAxIc,GAyId,YCpJA,GAPyB,EAAI1S,kBACpB9k8B,OAAOo0G,uBAAyBp0G,OAAOo0G,sBAAsBjzG,KAAKnB,SAC/DA,OAAOq58B,yBAA2Br58B,OAAOq58B,wBAAwBl48B,KAAKnB,SACvEA,OAAOs58B,0BACPt58B,OAAOsgpB,8BAAiC,SAAUzimB,GACzD,OAAOl6B,WAAWk6B,EAAM,GAC5B,ECRA,IAAI075B,GAAc,CACdC,OAAQ,SAAUh48B,GACd,OAAOA,CACX,EACAi48B,YAAa,SAAUj48B,GACnB,OAAOA,EAAIA,CACf,EACAk48B,aAAc,SAAUl48B,GACpB,OAAOA,GAAK,EAAIA,EACpB,EACAm48B,eAAgB,SAAUn48B,GACtB,OAAKA,GAAK,GAAK,EACJ,GAAMA,EAAIA,GAEb,MAASA,GAAKA,EAAI,GAAK,EACnC,EACAo48B,QAAS,SAAUp48B,GACf,OAAOA,EAAIA,EAAIA,CACnB,EACAq48B,SAAU,SAAUr48B,GAChB,QAASA,EAAIA,EAAIA,EAAI,CACzB,EACAs48B,WAAY,SAAUt48B,GAClB,OAAKA,GAAK,GAAK,EACJ,GAAMA,EAAIA,EAAIA,EAElB,KAAQA,GAAK,GAAKA,EAAIA,EAAI,EACrC,EACAu48B,UAAW,SAAUv48B,GACjB,OAAOA,EAAIA,EAAIA,EAAIA,CACvB,EACAw48B,WAAY,SAAUx48B,GAClB,OAAO,KAAOA,EAAIA,EAAIA,EAAIA,CAC9B,EACAy48B,aAAc,SAAUz48B,GACpB,OAAKA,GAAK,GAAK,EACJ,GAAMA,EAAIA,EAAIA,EAAIA,GAErB,KAAQA,GAAK,GAAKA,EAAIA,EAAIA,EAAI,EAC1C,EACA048B,UAAW,SAAU148B,GACjB,OAAOA,EAAIA,EAAIA,EAAIA,EAAIA,CAC3B,EACA248B,WAAY,SAAU348B,GAClB,QAASA,EAAIA,EAAIA,EAAIA,EAAIA,EAAI,CACjC,EACA448B,aAAc,SAAU548B,GACpB,OAAKA,GAAK,GAAK,EACJ,GAAMA,EAAIA,EAAIA,EAAIA,EAAIA,EAE1B,KAAQA,GAAK,GAAKA,EAAIA,EAAIA,EAAIA,EAAI,EAC7C,EACA648B,aAAc,SAAU748B,GACpB,OAAO,EAAIb,KAAKuxH,IAAI1wH,EAAIb,KAAKsmC,GAAK,EACtC,EACAqz6B,cAAe,SAAU948B,GACrB,OAAOb,KAAK4wH,IAAI/vH,EAAIb,KAAKsmC,GAAK,EAClC,EACAsz6B,gBAAiB,SAAU/48B,GACvB,MAAO,IAAO,EAAIb,KAAKuxH,IAAIvxH,KAAKsmC,GAAKzlC,GACzC,EACAg58B,cAAe,SAAUh58B,GACrB,OAAa,IAANA,EAAU,EAAIb,KAAK6yF,IAAI,KAAMhyF,EAAI,EAC5C,EACAi58B,eAAgB,SAAUj58B,GACtB,OAAa,IAANA,EAAU,EAAI,EAAIb,KAAK6yF,IAAI,GAAI,GAAKhyF,EAC/C,EACAk58B,iBAAkB,SAAUl58B,GACxB,OAAU,IAANA,EACO,EAED,IAANA,EACO,GAENA,GAAK,GAAK,EACJ,GAAMb,KAAK6yF,IAAI,KAAMhyF,EAAI,GAE7B,IAAqC,EAA7Bb,KAAK6yF,IAAI,GAAI,IAAMhyF,EAAI,IAC1C,EACAm58B,WAAY,SAAUn58B,GAClB,OAAO,EAAIb,KAAK4yF,KAAK,EAAI/xF,EAAIA,EACjC,EACAo58B,YAAa,SAAUp58B,GACnB,OAAOb,KAAK4yF,KAAK,KAAO/xF,EAAIA,EAChC,EACAq58B,cAAe,SAAUr58B,GACrB,OAAKA,GAAK,GAAK,GACH,IAAOb,KAAK4yF,KAAK,EAAI/xF,EAAIA,GAAK,GAEnC,IAAOb,KAAK4yF,KAAK,GAAK/xF,GAAK,GAAKA,GAAK,EAChD,EACAs58B,UAAW,SAAUt58B,GACjB,IAAI5C,EACAE,EAAI,GAER,OAAU,IAAN0C,EACO,EAED,IAANA,EACO,IAEN1C,GAAKA,EAAI,GACVA,EAAI,EACJF,EAAIgC,IAGJhC,EAZI,GAYI+B,KAAK2xH,KAAK,EAAIxzH,IAAM,EAAI6B,KAAKsmC,KAEhCnoC,EAAI6B,KAAK6yF,IAAI,EAAG,IAAMhyF,GAAK,IAC9Bb,KAAK4wH,KAAK/vH,EAAI5C,IAAM,EAAI+B,KAAKsmC,IAf3B,IAgBZ,EACA8z6B,WAAY,SAAUv58B,GAClB,IAAI5C,EACAE,EAAI,GAER,OAAU,IAAN0C,EACO,EAED,IAANA,EACO,IAEN1C,GAAKA,EAAI,GACVA,EAAI,EACJF,EAAIgC,IAGJhC,EAZI,GAYI+B,KAAK2xH,KAAK,EAAIxzH,IAAM,EAAI6B,KAAKsmC,IAEjCnoC,EAAI6B,KAAK6yF,IAAI,GAAI,GAAKhyF,GACxBb,KAAK4wH,KAAK/vH,EAAI5C,IAAM,EAAI+B,KAAKsmC,IAf3B,IAesC,EAClD,EACA+z6B,aAAc,SAAUx58B,GACpB,IAAI5C,EACAE,EAAI,GAER,OAAU,IAAN0C,EACO,EAED,IAANA,EACO,IAEN1C,GAAKA,EAAI,GACVA,EAAI,EACJF,EAAIgC,IAGJhC,EAZI,GAYI+B,KAAK2xH,KAAK,EAAIxzH,IAAM,EAAI6B,KAAKsmC,KAEpCzlC,GAAK,GAAK,EACI1C,EAAI6B,KAAK6yF,IAAI,EAAG,IAAMhyF,GAAK,IACpCb,KAAK4wH,KAAK/vH,EAAI5C,IAAM,EAAI+B,KAAKsmC,IAhB/B,KAeI,GAGLnoC,EAAI6B,KAAK6yF,IAAI,GAAI,IAAMhyF,GAAK,IAC7Bb,KAAK4wH,KAAK/vH,EAAI5C,IAAM,EAAI+B,KAAKsmC,IAnB3B,IAmBsC,GAAM,EACxD,EACAg06B,OAAQ,SAAUz58B,GACd,IAAI5C,EAAI,QACR,OAAO4C,EAAIA,IAAM5C,EAAI,GAAK4C,EAAI5C,EAClC,EACAs88B,QAAS,SAAU158B,GACf,IAAI5C,EAAI,QACR,QAAS4C,EAAIA,IAAM5C,EAAI,GAAK4C,EAAI5C,GAAK,CACzC,EACAu88B,UAAW,SAAU358B,GACjB,IAAI5C,EAAI,UACR,OAAK4C,GAAK,GAAK,EACGA,EAAIA,IAAM5C,EAAI,GAAK4C,EAAI5C,GAA9B,GAEJ,KAAQ4C,GAAK,GAAKA,IAAM5C,EAAI,GAAK4C,EAAI5C,GAAK,EACrD,EACAw88B,SAAU,SAAU558B,GAChB,OAAO,EAAI+38B,GAAY8B,UAAU,EAAI758B,EACzC,EACA658B,UAAW,SAAU758B,GACjB,OAAIA,EAAK,EAAI,KACF,OAASA,EAAIA,EAEfA,EAAK,EAAI,KACP,QAAUA,GAAM,IAAM,MAASA,EAAI,IAErCA,EAAK,IAAM,KACT,QAAUA,GAAM,KAAO,MAASA,EAAI,MAGpC,QAAUA,GAAM,MAAQ,MAASA,EAAI,OAEpD,EACA858B,YAAa,SAAU958B,GACnB,OAAIA,EAAI,GACiC,GAA9B+38B,GAAY6B,SAAa,EAAJ558B,GAEU,GAAnC+38B,GAAY8B,UAAc,EAAJ758B,EAAQ,GAAW,EACpD,GAEJ,YCjMA,IAAI+58B,GAAU568B,KAAK6yF,IACfgo3B,GAAW768B,KAAK4yF,KAChBmzD,GAAU,KACV+0zB,GAAkB,KAClBC,GAAaF,GAAS,GACtBG,GAAY,EAAI,EAChBC,GAAM,KACNC,GAAM,KACNC,GAAM,KACV,SAASC,GAAavgyB,GAClB,OAAOA,GAAO90B,IAAW80B,EAAM90B,EACnC,CACA,SAASs1zB,GAAgBxgyB,GACrB,OAAOA,EAAM90B,IAAW80B,GAAO90B,EACnC,CACO,SAAS,GAAQ/wB,EAAIwoH,EAAI0jB,EAAI+mH,EAAI1rX,GACpC,IAAIsz8B,EAAO,EAAItz8B,EACf,OAAOsz8B,EAAOA,GAAQA,EAAO760B,EAAK,EAAIz4H,EAAIihP,GACpCjhP,EAAIA,GAAKA,EAAI0rX,EAAK,EAAI4nlB,EAAO3usB,EACvC,CACO,SAASo6sB,GAAkBtm1B,EAAIwoH,EAAI0jB,EAAI+mH,EAAI1rX,GAC9C,IAAIsz8B,EAAO,EAAItz8B,EACf,OAAO,KAAOihP,EAAKxoH,GAAM660B,EAAO,GAAK3usB,EAAK1jB,GAAMjhP,GAAKsz8B,GAC9C5nlB,EAAK/mH,GAAM3kQ,EAAIA,EAC1B,CACO,SAASg/8B,GAAYvm1B,EAAIwoH,EAAI0jB,EAAI+mH,EAAIptM,EAAKo2B,GAC7C,IAAI9yM,EAAI8pX,EAAK,GAAKzqI,EAAK0jB,GAAMlsI,EACzBv0H,EAAI,GAAKygQ,EAAU,EAAL1jB,EAASxoH,GACvBh3H,EAAI,GAAKw/O,EAAKxoH,GACdl1H,EAAIk1H,EAAK6lD,EACT74K,EAAIvB,EAAIA,EAAI,EAAItC,EAAIH,EACpBkF,EAAIzC,EAAIzC,EAAI,EAAIG,EAAI2B,EACpBwB,EAAItD,EAAIA,EAAI,EAAIyC,EAAIX,EACpBtD,EAAI,EACR,GAAI4+8B,GAAap58B,IAAMo58B,GAAal48B,GAC5Bk48B,GAAa368B,GACbwwM,EAAM,GAAK,GAGP3kB,GAAMtuL,EAAIyC,IACJ,GAAK6rL,GAAM,IACjB2kB,EAAMz0M,KAAO8vL,OAIpB,CACD,IAAIkvxB,EAAOt48B,EAAIA,EAAI,EAAIlB,EAAIV,EAC3B,GAAI858B,GAAaI,GAAO,CACpB,IAAIp58B,EAAIc,EAAIlB,EAERuqL,GAAMnqL,EAAI,GADVkqL,GAAM7rL,EAAItC,EAAIiE,IAER,GAAKkqL,GAAM,IACjB2kB,EAAMz0M,KAAO8vL,GAEbC,GAAM,GAAKA,GAAM,IACjB0kB,EAAMz0M,KAAO+vL,EAErB,MACK,GAAIivxB,EAAO,EAAG,CACf,IAAIC,EAAWZ,GAASW,GACpBt5B,EAAKlg7B,EAAIvB,EAAI,IAAMtC,IAAM+E,EAAIu48B,GAC7Bp5B,EAAKrg7B,EAAIvB,EAAI,IAAMtC,IAAM+E,EAAIu48B,IAa7BnvxB,IAAO7rL,IAXPyh7B,EADAA,EAAK,GACC04B,IAAS14B,EAAI84B,IAGdJ,GAAQ14B,EAAI84B,MAGjB34B,EADAA,EAAK,GACCu4B,IAASv4B,EAAI24B,IAGdJ,GAAQv4B,EAAI24B,QAEQ,EAAI788B,KACvB,GAAKmuL,GAAM,IACjB2kB,EAAMz0M,KAAO8vL,EAErB,KACK,CACD,IAAIjrL,GAAK,EAAIW,EAAIvB,EAAI,EAAItC,EAAI+E,IAAM,EAAI238B,GAAS748B,EAAIA,EAAIA,IACpDqlT,EAAQrnT,KAAK2lT,KAAKtkT,GAAK,EACvBq68B,EAAQb,GAAS748B,GACjB++V,EAAM/gW,KAAKuxH,IAAI81L,GACf/6H,IAAO7rL,EAAI,EAAIi78B,EAAQ36mB,IAAQ,EAAI5iW,GAEnC+lxB,GADA33lB,IAAO9rL,EAAIi78B,GAAS36mB,EAAMg6mB,GAAa/68B,KAAK4wH,IAAIy2L,MAAY,EAAIlpT,KACzDsC,EAAIi78B,GAAS36mB,EAAMg6mB,GAAa/68B,KAAK4wH,IAAIy2L,MAAY,EAAIlpT,IAChEmuL,GAAM,GAAKA,GAAM,IACjB2kB,EAAMz0M,KAAO8vL,GAEbC,GAAM,GAAKA,GAAM,IACjB0kB,EAAMz0M,KAAO+vL,GAEb23lB,GAAM,GAAKA,GAAM,IACjBjzkB,EAAMz0M,KAAO0nxB,EAErB,CACJ,CACA,OAAO1nxB,CACX,CACO,SAAS,GAAaw4H,EAAIwoH,EAAI0jB,EAAI+mH,EAAI0zlB,GACzC,IAAIl78B,EAAI,EAAIygQ,EAAK,GAAK1jB,EAAK,EAAIxoH,EAC3B72H,EAAI,EAAIq/O,EAAK,EAAIyqI,EAAK,EAAIjzP,EAAK,EAAIksI,EACnCljQ,EAAI,EAAIw/O,EAAK,EAAIxoH,EACjBx4H,EAAI,EACR,GAAI4+8B,GAAaj98B,GACTk98B,GAAgB568B,KACZ6rL,GAAMtuL,EAAIyC,IACJ,GAAK6rL,GAAM,IACjBqvxB,EAAQn/8B,KAAO8vL,OAItB,CACD,IAAIkvxB,EAAO/68B,EAAIA,EAAI,EAAItC,EAAIH,EAC3B,GAAIo98B,GAAaI,GACbG,EAAQ,IAAMl78B,GAAK,EAAItC,QAEtB,GAAIq98B,EAAO,EAAG,CACf,IACIlvxB,EADAmvxB,EAAWZ,GAASW,GAEpBjvxB,IAAO9rL,EAAIg78B,IAAa,EAAIt98B,IAD5BmuL,IAAO7rL,EAAIg78B,IAAa,EAAIt98B,KAEtB,GAAKmuL,GAAM,IACjBqvxB,EAAQn/8B,KAAO8vL,GAEfC,GAAM,GAAKA,GAAM,IACjBovxB,EAAQn/8B,KAAO+vL,EAEvB,CACJ,CACA,OAAO/vL,CACX,CACO,SAASo/8B,GAAe5m1B,EAAIwoH,EAAI0jB,EAAI+mH,EAAI1rX,EAAG8gI,GAC9C,IAAIw+0B,GAAOr+tB,EAAKxoH,GAAMz4H,EAAIy4H,EACtB8m1B,GAAO56sB,EAAK1jB,GAAMjhP,EAAIihP,EACtBu+tB,GAAO9zlB,EAAK/mH,GAAM3kQ,EAAI2kQ,EACtB86sB,GAAQF,EAAMD,GAAOt/8B,EAAIs/8B,EACzBI,GAAQF,EAAMD,GAAOv/8B,EAAIu/8B,EACzBI,GAASD,EAAOD,GAAQz/8B,EAAIy/8B,EAChC3+0B,EAAI,GAAKrI,EACTqI,EAAI,GAAKw+0B,EACTx+0B,EAAI,GAAK2+0B,EACT3+0B,EAAI,GAAK6+0B,EACT7+0B,EAAI,GAAK6+0B,EACT7+0B,EAAI,GAAK4+0B,EACT5+0B,EAAI,GAAK0+0B,EACT1+0B,EAAI,GAAK4qP,CACb,CACO,SAASk0lB,GAAkB54tB,EAAI30D,EAAIm2H,EAAIl2H,EAAIoL,EAAIrlE,EAAIgxL,EAAIC,EAAIzkT,EAAGjB,EAAGk9H,GACpE,IAAI9gI,EAGA0pJ,EACA/nJ,EACA4ztB,EACAlglB,EALAytV,EAAW,KACXv/d,EAAIo9D,IAKR+94B,GAAI,GAAK758B,EACT658B,GAAI,GAAK968B,EACT,IAAK,IAAI4K,EAAK,EAAGA,EAAK,EAAGA,GAAM,IAC3Bmw8B,GAAI,GAAK,GAAQ33tB,EAAIwhE,EAAI9qH,EAAI2rH,EAAI76S,GACjCmw8B,GAAI,GAAK,GAAQtsxB,EAAIC,EAAIj6D,EAAIixL,EAAI96S,IACjC+mtB,EAAK,GAAampP,GAAKC,KACdp78B,IACLvD,EAAIwO,EACJjL,EAAIgytB,GAGZhytB,EAAIo9D,IACJ,IAAK,IAAIn/D,EAAI,EAAGA,EAAI,MACZshe,EAAWy7e,IADK/88B,IAIpBkoJ,EAAO1pJ,EAAI8ie,EACXnhe,EAAO3B,EAAI8ie,EACX67e,GAAI,GAAK,GAAQ33tB,EAAIwhE,EAAI9qH,EAAI2rH,EAAI3/J,GACjCi1zB,GAAI,GAAK,GAAQtsxB,EAAIC,EAAIj6D,EAAIixL,EAAI5/J,GACjC6rkB,EAAK,GAAaopP,GAAKD,IACnBh1zB,GAAQ,GAAK6rkB,EAAKhytB,GAClBvD,EAAI0pJ,EACJnmJ,EAAIgytB,IAGJqpP,GAAI,GAAK,GAAQ53tB,EAAIwhE,EAAI9qH,EAAI2rH,EAAI1nT,GACjCi98B,GAAI,GAAK,GAAQvsxB,EAAIC,EAAIj6D,EAAIixL,EAAI3nT,GACjC0zI,EAAK,GAAaup0B,GAAKF,IACnB/88B,GAAQ,GAAK0zI,EAAK9xI,GAClBvD,EAAI2B,EACJ4B,EAAI8xI,GAGJytV,GAAY,IAQxB,OAJIhiW,IACAA,EAAI,GAAK,GAAQkmH,EAAIwhE,EAAI9qH,EAAI2rH,EAAIrpT,GACjC8gI,EAAI,GAAK,GAAQuxD,EAAIC,EAAIj6D,EAAIixL,EAAItpT,IAE9Bs+8B,GAAS/68B,EACpB,CACO,SAASs88B,GAAY74tB,EAAI30D,EAAIm2H,EAAIl2H,EAAIoL,EAAIrlE,EAAIgxL,EAAIC,EAAIw2pB,GAKxD,IAJA,IAAIh4mB,EAAK9gH,EACL+gH,EAAK11K,EACL9uL,EAAI,EACJ+rW,EAAO,EAAIwwmB,EACNt+8B,EAAI,EAAGA,GAAKs+8B,EAAWt+8B,IAAK,CACjC,IAAIxB,EAAIwB,EAAI8tW,EACRzqW,EAAI,GAAQmiP,EAAIwhE,EAAI9qH,EAAI2rH,EAAIrpT,GAC5B4D,EAAI,GAAQyuL,EAAIC,EAAIj6D,EAAIixL,EAAItpT,GAC5Bo1I,EAAKvwI,EAAIijW,EACT7yN,EAAKrxI,EAAImkW,EACbxkW,GAAKE,KAAK4yF,KAAK++C,EAAKA,EAAKH,EAAKA,GAC9B6yN,EAAKjjW,EACLkjW,EAAKnkW,CACT,CACA,OAAOL,CACX,CACO,SAAS,GAAYk1H,EAAIwoH,EAAI0jB,EAAI3kQ,GACpC,IAAIsz8B,EAAO,EAAItz8B,EACf,OAAOsz8B,GAAQA,EAAO760B,EAAK,EAAIz4H,EAAIihP,GAAMjhP,EAAIA,EAAI2kQ,CACrD,CACO,SAAS,GAAsBlsI,EAAIwoH,EAAI0jB,EAAI3kQ,GAC9C,OAAO,IAAM,EAAIA,IAAMihP,EAAKxoH,GAAMz4H,GAAK2kQ,EAAK1jB,GAChD,CAoCO,SAAS,GAAkBxoH,EAAIwoH,EAAI0jB,GACtC,IAAIwsG,EAAU14O,EAAKksI,EAAK,EAAI1jB,EAC5B,OAAgB,IAAZkwH,EACO,IAGC14O,EAAKwoH,GAAMkwH,CAE3B,CACO,SAAS,GAAmB14O,EAAIwoH,EAAI0jB,EAAI3kQ,EAAG8gI,GAC9C,IAAIw+0B,GAAOr+tB,EAAKxoH,GAAMz4H,EAAIy4H,EACtB8m1B,GAAO56sB,EAAK1jB,GAAMjhP,EAAIihP,EACtBw+tB,GAAQF,EAAMD,GAAOt/8B,EAAIs/8B,EAC7Bx+0B,EAAI,GAAKrI,EACTqI,EAAI,GAAKw+0B,EACTx+0B,EAAI,GAAK2+0B,EACT3+0B,EAAI,GAAK2+0B,EACT3+0B,EAAI,GAAKy+0B,EACTz+0B,EAAI,GAAK6jI,CACb,CACO,SAASo7sB,GAAsB/4tB,EAAI30D,EAAIm2H,EAAIl2H,EAAIoL,EAAIrlE,EAAIxzH,EAAGjB,EAAGk9H,GAChE,IAAI9gI,EACA8ie,EAAW,KACXv/d,EAAIo9D,IACR+94B,GAAI,GAAK758B,EACT658B,GAAI,GAAK968B,EACT,IAAK,IAAI4K,EAAK,EAAGA,EAAK,EAAGA,GAAM,IAC3Bmw8B,GAAI,GAAK,GAAY33tB,EAAIwhE,EAAI9qH,EAAIlvL,GACjCmw8B,GAAI,GAAK,GAAYtsxB,EAAIC,EAAIj6D,EAAI7pH,IAC7B+mtB,EAAK,GAAampP,GAAKC,KAClBp78B,IACLvD,EAAIwO,EACJjL,EAAIgytB,GAGZhytB,EAAIo9D,IACJ,IAAK,IAAIn/D,EAAI,EAAGA,EAAI,MACZshe,EAAWy7e,IADK/88B,IAAK,CAIzB,IAAIkoJ,EAAO1pJ,EAAI8ie,EACXnhe,EAAO3B,EAAI8ie,EACf67e,GAAI,GAAK,GAAY33tB,EAAIwhE,EAAI9qH,EAAIh0C,GACjCi1zB,GAAI,GAAK,GAAYtsxB,EAAIC,EAAIj6D,EAAIqxB,GACjC,IAAI6rkB,EAAK,GAAaopP,GAAKD,IAC3B,GAAIh1zB,GAAQ,GAAK6rkB,EAAKhytB,EAClBvD,EAAI0pJ,EACJnmJ,EAAIgytB,MAEH,CACDqpP,GAAI,GAAK,GAAY53tB,EAAIwhE,EAAI9qH,EAAI/7L,GACjCi98B,GAAI,GAAK,GAAYvsxB,EAAIC,EAAIj6D,EAAI12H,GACjC,IAAI0zI,EAAK,GAAaup0B,GAAKF,IACvB/88B,GAAQ,GAAK0zI,EAAK9xI,GAClBvD,EAAI2B,EACJ4B,EAAI8xI,GAGJytV,GAAY,EAEpB,CACJ,CAKA,OAJIhiW,IACAA,EAAI,GAAK,GAAYkmH,EAAIwhE,EAAI9qH,EAAI19L,GACjC8gI,EAAI,GAAK,GAAYuxD,EAAIC,EAAIj6D,EAAIr4H,IAE9Bs+8B,GAAS/68B,EACpB,CACO,SAASy88B,GAAgBh5tB,EAAI30D,EAAIm2H,EAAIl2H,EAAIoL,EAAIrlE,EAAIyn1B,GAKpD,IAJA,IAAIh4mB,EAAK9gH,EACL+gH,EAAK11K,EACL9uL,EAAI,EACJ+rW,EAAO,EAAIwwmB,EACNt+8B,EAAI,EAAGA,GAAKs+8B,EAAWt+8B,IAAK,CACjC,IAAIxB,EAAIwB,EAAI8tW,EACRzqW,EAAI,GAAYmiP,EAAIwhE,EAAI9qH,EAAI19L,GAC5B4D,EAAI,GAAYyuL,EAAIC,EAAIj6D,EAAIr4H,GAC5Bo1I,EAAKvwI,EAAIijW,EACT7yN,EAAKrxI,EAAImkW,EACbxkW,GAAKE,KAAK4yF,KAAK++C,EAAKA,EAAKH,EAAKA,GAC9B6yN,EAAKjjW,EACLkjW,EAAKnkW,CACT,CACA,OAAOL,CACX,CCtVA,IAAI0mhB,GAAS,gCACN,SAASg2b,GAAsBC,GAClC,IAAIC,EAAQD,GAAkBj2b,GAAOj3gB,KAAKkt8B,GAC1C,GAAIC,EAAO,CACP,IAAIj06B,EAASi06B,EAAM,GAAG368B,MAAM,KACxB468B,GAAOnt7B,GAAKiZ,EAAO,IACnBm06B,GAAOpt7B,GAAKiZ,EAAO,IACnBo06B,GAAOrt7B,GAAKiZ,EAAO,IACnBq06B,GAAOtt7B,GAAKiZ,EAAO,IACvB,GAAIgB,MAAMkz6B,EAAMC,EAAMC,EAAMC,GACxB,OAEJ,IAAIt3L,EAAU,GACd,OAAO,SAAUvlxB,GACb,OAAOA,GAAK,EACN,EAAIA,GAAK,EACT,EACAs78B,GAAY,EAAGoB,EAAKE,EAAK,EAAG588B,EAAGulxB,IAAY,GAAQ,EAAGo3L,EAAKE,EAAK,EAAGt3L,EAAQ,GACrF,CACJ,CACJ,CCyCA,SA5DY,WACR,SAASu3L,EAAKvj6B,GACVr8C,KAAK6/8B,SAAU,EACf7/8B,KAAK23Y,WAAa,EAClB33Y,KAAK8/8B,YAAc,EACnB9/8B,KAAK+/8B,SAAU,EACf//8B,KAAKgg9B,MAAQ3j6B,EAAK4j6B,MAAQ,IAC1Bjg9B,KAAKkg9B,OAAS7j6B,EAAK8E,OAAS,EAC5BnhD,KAAK68O,KAAOxgM,EAAKwgM,OAAQ,EACzB78O,KAAKmg9B,QAAU9j6B,EAAK8j6B,SAAWr95B,GAC/B9iD,KAAKog9B,UAAY/j6B,EAAK+j6B,WAAat95B,GACnC9iD,KAAKqg9B,UAAYhk6B,EAAKgk6B,WAAav95B,GACnCzG,EAAKwuE,QAAU7qH,KAAKsg9B,UAAUjk6B,EAAKwuE,OACvC,CA6CA,OA5CA+01B,EAAKlg9B,UAAUgvW,KAAO,SAAU6xmB,EAAY551B,GAKxC,GAJK3mH,KAAK6/8B,UACN7/8B,KAAK23Y,WAAa4okB,EAAavg9B,KAAKkg9B,OACpClg9B,KAAK6/8B,SAAU,IAEf7/8B,KAAK+/8B,QAAT,CAIA,IAAIE,EAAOjg9B,KAAKgg9B,MACZQ,EAAcD,EAAavg9B,KAAK23Y,WAAa33Y,KAAK8/8B,YAClDW,EAAUD,EAAcP,EACxBQ,EAAU,IACVA,EAAU,GAEdA,EAAU598B,KAAKgL,IAAI4y8B,EAAS,GAC5B,IAAIC,EAAa1g9B,KAAK0g9B,WAClB/kX,EAAW+kX,EAAaA,EAAWD,GAAWA,EAElD,GADAzg9B,KAAKmg9B,QAAQxkX,GACG,IAAZ8kX,EAAe,CACf,IAAIzg9B,KAAK68O,KAOL,OAAO,EANP,IAAI8juB,EAAYH,EAAcP,EAC9Bjg9B,KAAK23Y,WAAa4okB,EAAaI,EAC/B3g9B,KAAK8/8B,YAAc,EACnB9/8B,KAAKqg9B,WAKb,CACA,OAAO,CAtBP,CAFIrg9B,KAAK8/8B,aAAen51B,CAyB5B,EACAi51B,EAAKlg9B,UAAUssT,MAAQ,WACnBhsT,KAAK+/8B,SAAU,CACnB,EACAH,EAAKlg9B,UAAUkh9B,OAAS,WACpB5g9B,KAAK+/8B,SAAU,CACnB,EACAH,EAAKlg9B,UAAU4g9B,UAAY,SAAUz11B,GACjC7qH,KAAK6qH,OAASA,EACd7qH,KAAK0g9B,WAAa17sB,GAAWn6I,GACvBA,EACA,GAAYA,IAAWw01B,GAAsBx01B,EACvD,EACO+01B,CACX,CA3DW,GCHX,IAAIiB,GACA,SAAenjyB,GACX19K,KAAKmB,MAAQu8K,CACjB,EAIAojyB,GAAc,WACd,SAASA,IACL9g9B,KAAK4tP,KAAO,CAChB,CA2CA,OA1CAkztB,EAAWph9B,UAAUq7P,OAAS,SAAUr9E,GACpC,IAAI1pH,EAAQ,IAAI6s5B,GAAMnjyB,GAEtB,OADA19K,KAAK+g9B,YAAY/s5B,GACVA,CACX,EACA8s5B,EAAWph9B,UAAUqh9B,YAAc,SAAU/s5B,GACpCh0D,KAAK+mD,MAIN/mD,KAAKw+L,KAAKz9L,KAAOizD,EACjBA,EAAM80F,KAAO9oJ,KAAKw+L,KAClBxqI,EAAMjzD,KAAO,KACbf,KAAKw+L,KAAOxqI,GANZh0D,KAAK+mD,KAAO/mD,KAAKw+L,KAAOxqI,EAQ5Bh0D,KAAK4tP,MACT,EACAkztB,EAAWph9B,UAAUmzB,OAAS,SAAUmhC,GACpC,IAAI80F,EAAO90F,EAAM80F,KACb/nJ,EAAOizD,EAAMjzD,KACb+nJ,EACAA,EAAK/nJ,KAAOA,EAGZf,KAAK+mD,KAAOhmD,EAEZA,EACAA,EAAK+nJ,KAAOA,EAGZ9oJ,KAAKw+L,KAAO11C,EAEhB90F,EAAMjzD,KAAOizD,EAAM80F,KAAO,KAC1B9oJ,KAAK4tP,MACT,EACAkztB,EAAWph9B,UAAUm/H,IAAM,WACvB,OAAO7+H,KAAK4tP,IAChB,EACAkztB,EAAWph9B,UAAUslB,MAAQ,WACzBhlB,KAAK+mD,KAAO/mD,KAAKw+L,KAAO,KACxBx+L,KAAK4tP,KAAO,CAChB,EACOkztB,CACX,CA/CiB,GAiDbE,GAAO,WACP,SAASA,EAAI36yB,GACTrmK,KAAK6+L,MAAQ,IAAIiixB,GACjB9g9B,KAAKih9B,SAAW,GAChBjh9B,KAAKilM,KAAO,CAAC,EACbjlM,KAAKih9B,SAAW56yB,CACpB,CA6CA,OA5CA26yB,EAAIth9B,UAAUwh9B,IAAM,SAAUr87B,EAAK1jB,GAC/B,IAAIg1E,EAAOn2E,KAAK6+L,MACZxvK,EAAMrvB,KAAKilM,KACXlgL,EAAU,KACd,GAAgB,MAAZsK,EAAIxK,GAAc,CAClB,IAAIg6G,EAAM1oD,EAAK0oD,MACX7qE,EAAQh0D,KAAKmh9B,kBACjB,GAAIti1B,GAAO7+H,KAAKih9B,UAAYpi1B,EAAM,EAAG,CACjC,IAAIui1B,EAAiBjr4B,EAAKpvB,KAC1BovB,EAAKtjD,OAAOuu7B,UACL/x7B,EAAI+x7B,EAAev87B,KAC1BE,EAAUq87B,EAAejg9B,MACzBnB,KAAKmh9B,kBAAoBC,CAC7B,CACIpt5B,EACAA,EAAM7yD,MAAQA,EAGd6yD,EAAQ,IAAI6s5B,GAAM1/8B,GAEtB6yD,EAAMnvC,IAAMA,EACZsxD,EAAK4q4B,YAAY/s5B,GACjB3kC,EAAIxK,GAAOmvC,CACf,CACA,OAAOjvC,CACX,EACAi87B,EAAIth9B,UAAUyD,IAAM,SAAU0hB,GAC1B,IAAImvC,EAAQh0D,KAAKilM,KAAKpgL,GAClBsxD,EAAOn2E,KAAK6+L,MAChB,GAAa,MAAT7qI,EAKA,OAJIA,IAAUmiB,EAAKqoH,OACfroH,EAAKtjD,OAAOmhC,GACZmiB,EAAK4q4B,YAAY/s5B,IAEdA,EAAM7yD,KAErB,EACA6/8B,EAAIth9B,UAAUslB,MAAQ,WAClBhlB,KAAK6+L,MAAM75K,QACXhlB,KAAKilM,KAAO,CAAC,CACjB,EACA+7wB,EAAIth9B,UAAUm/H,IAAM,WAChB,OAAO7+H,KAAK6+L,MAAMhgE,KACtB,EACOmi1B,CACX,CApDU,GAqDV,YC5GA,IAAIK,GAAiB,CACjB,YAAe,CAAC,EAAG,EAAG,EAAG,GAAI,UAAa,CAAC,IAAK,IAAK,IAAK,GAC1D,aAAgB,CAAC,IAAK,IAAK,IAAK,GAAI,KAAQ,CAAC,EAAG,IAAK,IAAK,GAC1D,WAAc,CAAC,IAAK,IAAK,IAAK,GAAI,MAAS,CAAC,IAAK,IAAK,IAAK,GAC3D,MAAS,CAAC,IAAK,IAAK,IAAK,GAAI,OAAU,CAAC,IAAK,IAAK,IAAK,GACvD,MAAS,CAAC,EAAG,EAAG,EAAG,GAAI,eAAkB,CAAC,IAAK,IAAK,IAAK,GACzD,KAAQ,CAAC,EAAG,EAAG,IAAK,GAAI,WAAc,CAAC,IAAK,GAAI,IAAK,GACrD,MAAS,CAAC,IAAK,GAAI,GAAI,GAAI,UAAa,CAAC,IAAK,IAAK,IAAK,GACxD,UAAa,CAAC,GAAI,IAAK,IAAK,GAAI,WAAc,CAAC,IAAK,IAAK,EAAG,GAC5D,UAAa,CAAC,IAAK,IAAK,GAAI,GAAI,MAAS,CAAC,IAAK,IAAK,GAAI,GACxD,eAAkB,CAAC,IAAK,IAAK,IAAK,GAAI,SAAY,CAAC,IAAK,IAAK,IAAK,GAClE,QAAW,CAAC,IAAK,GAAI,GAAI,GAAI,KAAQ,CAAC,EAAG,IAAK,IAAK,GACnD,SAAY,CAAC,EAAG,EAAG,IAAK,GAAI,SAAY,CAAC,EAAG,IAAK,IAAK,GACtD,cAAiB,CAAC,IAAK,IAAK,GAAI,GAAI,SAAY,CAAC,IAAK,IAAK,IAAK,GAChE,UAAa,CAAC,EAAG,IAAK,EAAG,GAAI,SAAY,CAAC,IAAK,IAAK,IAAK,GACzD,UAAa,CAAC,IAAK,IAAK,IAAK,GAAI,YAAe,CAAC,IAAK,EAAG,IAAK,GAC9D,eAAkB,CAAC,GAAI,IAAK,GAAI,GAAI,WAAc,CAAC,IAAK,IAAK,EAAG,GAChE,WAAc,CAAC,IAAK,GAAI,IAAK,GAAI,QAAW,CAAC,IAAK,EAAG,EAAG,GACxD,WAAc,CAAC,IAAK,IAAK,IAAK,GAAI,aAAgB,CAAC,IAAK,IAAK,IAAK,GAClE,cAAiB,CAAC,GAAI,GAAI,IAAK,GAAI,cAAiB,CAAC,GAAI,GAAI,GAAI,GACjE,cAAiB,CAAC,GAAI,GAAI,GAAI,GAAI,cAAiB,CAAC,EAAG,IAAK,IAAK,GACjE,WAAc,CAAC,IAAK,EAAG,IAAK,GAAI,SAAY,CAAC,IAAK,GAAI,IAAK,GAC3D,YAAe,CAAC,EAAG,IAAK,IAAK,GAAI,QAAW,CAAC,IAAK,IAAK,IAAK,GAC5D,QAAW,CAAC,IAAK,IAAK,IAAK,GAAI,WAAc,CAAC,GAAI,IAAK,IAAK,GAC5D,UAAa,CAAC,IAAK,GAAI,GAAI,GAAI,YAAe,CAAC,IAAK,IAAK,IAAK,GAC9D,YAAe,CAAC,GAAI,IAAK,GAAI,GAAI,QAAW,CAAC,IAAK,EAAG,IAAK,GAC1D,UAAa,CAAC,IAAK,IAAK,IAAK,GAAI,WAAc,CAAC,IAAK,IAAK,IAAK,GAC/D,KAAQ,CAAC,IAAK,IAAK,EAAG,GAAI,UAAa,CAAC,IAAK,IAAK,GAAI,GACtD,KAAQ,CAAC,IAAK,IAAK,IAAK,GAAI,MAAS,CAAC,EAAG,IAAK,EAAG,GACjD,YAAe,CAAC,IAAK,IAAK,GAAI,GAAI,KAAQ,CAAC,IAAK,IAAK,IAAK,GAC1D,SAAY,CAAC,IAAK,IAAK,IAAK,GAAI,QAAW,CAAC,IAAK,IAAK,IAAK,GAC3D,UAAa,CAAC,IAAK,GAAI,GAAI,GAAI,OAAU,CAAC,GAAI,EAAG,IAAK,GACtD,MAAS,CAAC,IAAK,IAAK,IAAK,GAAI,MAAS,CAAC,IAAK,IAAK,IAAK,GACtD,SAAY,CAAC,IAAK,IAAK,IAAK,GAAI,cAAiB,CAAC,IAAK,IAAK,IAAK,GACjE,UAAa,CAAC,IAAK,IAAK,EAAG,GAAI,aAAgB,CAAC,IAAK,IAAK,IAAK,GAC/D,UAAa,CAAC,IAAK,IAAK,IAAK,GAAI,WAAc,CAAC,IAAK,IAAK,IAAK,GAC/D,UAAa,CAAC,IAAK,IAAK,IAAK,GAAI,qBAAwB,CAAC,IAAK,IAAK,IAAK,GACzE,UAAa,CAAC,IAAK,IAAK,IAAK,GAAI,WAAc,CAAC,IAAK,IAAK,IAAK,GAC/D,UAAa,CAAC,IAAK,IAAK,IAAK,GAAI,UAAa,CAAC,IAAK,IAAK,IAAK,GAC9D,YAAe,CAAC,IAAK,IAAK,IAAK,GAAI,cAAiB,CAAC,GAAI,IAAK,IAAK,GACnE,aAAgB,CAAC,IAAK,IAAK,IAAK,GAAI,eAAkB,CAAC,IAAK,IAAK,IAAK,GACtE,eAAkB,CAAC,IAAK,IAAK,IAAK,GAAI,eAAkB,CAAC,IAAK,IAAK,IAAK,GACxE,YAAe,CAAC,IAAK,IAAK,IAAK,GAAI,KAAQ,CAAC,EAAG,IAAK,EAAG,GACvD,UAAa,CAAC,GAAI,IAAK,GAAI,GAAI,MAAS,CAAC,IAAK,IAAK,IAAK,GACxD,QAAW,CAAC,IAAK,EAAG,IAAK,GAAI,OAAU,CAAC,IAAK,EAAG,EAAG,GACnD,iBAAoB,CAAC,IAAK,IAAK,IAAK,GAAI,WAAc,CAAC,EAAG,EAAG,IAAK,GAClE,aAAgB,CAAC,IAAK,GAAI,IAAK,GAAI,aAAgB,CAAC,IAAK,IAAK,IAAK,GACnE,eAAkB,CAAC,GAAI,IAAK,IAAK,GAAI,gBAAmB,CAAC,IAAK,IAAK,IAAK,GACxE,kBAAqB,CAAC,EAAG,IAAK,IAAK,GAAI,gBAAmB,CAAC,GAAI,IAAK,IAAK,GACzE,gBAAmB,CAAC,IAAK,GAAI,IAAK,GAAI,aAAgB,CAAC,GAAI,GAAI,IAAK,GACpE,UAAa,CAAC,IAAK,IAAK,IAAK,GAAI,UAAa,CAAC,IAAK,IAAK,IAAK,GAC9D,SAAY,CAAC,IAAK,IAAK,IAAK,GAAI,YAAe,CAAC,IAAK,IAAK,IAAK,GAC/D,KAAQ,CAAC,EAAG,EAAG,IAAK,GAAI,QAAW,CAAC,IAAK,IAAK,IAAK,GACnD,MAAS,CAAC,IAAK,IAAK,EAAG,GAAI,UAAa,CAAC,IAAK,IAAK,GAAI,GACvD,OAAU,CAAC,IAAK,IAAK,EAAG,GAAI,UAAa,CAAC,IAAK,GAAI,EAAG,GACtD,OAAU,CAAC,IAAK,IAAK,IAAK,GAAI,cAAiB,CAAC,IAAK,IAAK,IAAK,GAC/D,UAAa,CAAC,IAAK,IAAK,IAAK,GAAI,cAAiB,CAAC,IAAK,IAAK,IAAK,GAClE,cAAiB,CAAC,IAAK,IAAK,IAAK,GAAI,WAAc,CAAC,IAAK,IAAK,IAAK,GACnE,UAAa,CAAC,IAAK,IAAK,IAAK,GAAI,KAAQ,CAAC,IAAK,IAAK,GAAI,GACxD,KAAQ,CAAC,IAAK,IAAK,IAAK,GAAI,KAAQ,CAAC,IAAK,IAAK,IAAK,GACpD,WAAc,CAAC,IAAK,IAAK,IAAK,GAAI,OAAU,CAAC,IAAK,EAAG,IAAK,GAC1D,IAAO,CAAC,IAAK,EAAG,EAAG,GAAI,UAAa,CAAC,IAAK,IAAK,IAAK,GACpD,UAAa,CAAC,GAAI,IAAK,IAAK,GAAI,YAAe,CAAC,IAAK,GAAI,GAAI,GAC7D,OAAU,CAAC,IAAK,IAAK,IAAK,GAAI,WAAc,CAAC,IAAK,IAAK,GAAI,GAC3D,SAAY,CAAC,GAAI,IAAK,GAAI,GAAI,SAAY,CAAC,IAAK,IAAK,IAAK,GAC1D,OAAU,CAAC,IAAK,GAAI,GAAI,GAAI,OAAU,CAAC,IAAK,IAAK,IAAK,GACtD,QAAW,CAAC,IAAK,IAAK,IAAK,GAAI,UAAa,CAAC,IAAK,GAAI,IAAK,GAC3D,UAAa,CAAC,IAAK,IAAK,IAAK,GAAI,UAAa,CAAC,IAAK,IAAK,IAAK,GAC9D,KAAQ,CAAC,IAAK,IAAK,IAAK,GAAI,YAAe,CAAC,EAAG,IAAK,IAAK,GACzD,UAAa,CAAC,GAAI,IAAK,IAAK,GAAI,IAAO,CAAC,IAAK,IAAK,IAAK,GACvD,KAAQ,CAAC,EAAG,IAAK,IAAK,GAAI,QAAW,CAAC,IAAK,IAAK,IAAK,GACrD,OAAU,CAAC,IAAK,GAAI,GAAI,GAAI,UAAa,CAAC,GAAI,IAAK,IAAK,GACxD,OAAU,CAAC,IAAK,IAAK,IAAK,GAAI,MAAS,CAAC,IAAK,IAAK,IAAK,GACvD,MAAS,CAAC,IAAK,IAAK,IAAK,GAAI,WAAc,CAAC,IAAK,IAAK,IAAK,GAC3D,OAAU,CAAC,IAAK,IAAK,EAAG,GAAI,YAAe,CAAC,IAAK,IAAK,GAAI,IAE9D,SAASC,GAAa1g9B,GAElB,OADAA,EAAIiC,KAAKogD,MAAMriD,IACJ,EAAI,EAAIA,EAAI,IAAM,IAAMA,CACvC,CAKA,SAAS2g9B,GAAc7+8B,GACnB,OAAOA,EAAI,EAAI,EAAIA,EAAI,EAAI,EAAIA,CACnC,CACA,SAAS8+8B,GAAY9jyB,GACjB,IAAI/mG,EAAM+mG,EACV,OAAI/mG,EAAIt2E,QAAyC,MAA/Bs2E,EAAI99D,OAAO89D,EAAIt2E,OAAS,GAC/Bih9B,GAAaj3yB,WAAW1zF,GAAO,IAAM,KAEzC2q4B,GAAa3r7B,SAASghD,EAAK,IACtC,CACA,SAAS8q4B,GAAc/jyB,GACnB,IAAI/mG,EAAM+mG,EACV,OAAI/mG,EAAIt2E,QAAyC,MAA/Bs2E,EAAI99D,OAAO89D,EAAIt2E,OAAS,GAC/Bkh9B,GAAcl3yB,WAAW1zF,GAAO,KAEpC4q4B,GAAcl3yB,WAAW1zF,GACpC,CACA,SAAS+q4B,GAAYnytB,EAAI4nB,EAAIv0Q,GAOzB,OANIA,EAAI,EACJA,GAAK,EAEAA,EAAI,IACTA,GAAK,GAED,EAAJA,EAAQ,EACD2sP,GAAM4nB,EAAK5nB,GAAM3sP,EAAI,EAExB,EAAJA,EAAQ,EACDu0Q,EAEH,EAAJv0Q,EAAQ,EACD2sP,GAAM4nB,EAAK5nB,IAAO,EAAI,EAAI3sP,GAAK,EAEnC2sP,CACX,CACA,SAASoytB,GAAW3g9B,EAAGsC,EAAGR,GACtB,OAAO9B,GAAKsC,EAAItC,GAAK8B,CACzB,CACA,SAAS8+8B,GAAQ1h1B,EAAKngI,EAAGoC,EAAGmB,EAAGtC,GAK3B,OAJAk/H,EAAI,GAAKngI,EACTmgI,EAAI,GAAK/9H,EACT+9H,EAAI,GAAK58H,EACT48H,EAAI,GAAKl/H,EACFk/H,CACX,CACA,SAAS2h1B,GAAS3h1B,EAAKl/H,GAKnB,OAJAk/H,EAAI,GAAKl/H,EAAE,GACXk/H,EAAI,GAAKl/H,EAAE,GACXk/H,EAAI,GAAKl/H,EAAE,GACXk/H,EAAI,GAAKl/H,EAAE,GACJk/H,CACX,CACA,IAAI4h1B,GAAa,IAAI,GAAI,IACrBC,GAAiB,KACrB,SAASC,GAAWC,EAAUC,GACtBH,IACAF,GAASE,GAAgBG,GAE7BH,GAAiBD,GAAWZ,IAAIe,EAAUF,IAAmBG,EAAQng9B,QACzE,CACO,SAASwqB,GAAM017B,EAAUC,GAC5B,GAAKD,EAAL,CAGAC,EAAUA,GAAW,GACrB,IAAI59sB,EAASw9sB,GAAW3+8B,IAAI8+8B,GAC5B,GAAI39sB,EACA,OAAOu9sB,GAASK,EAAS59sB,GAG7B,IAAI3tL,GADJsr4B,GAAsB,IACHx18B,QAAQ,KAAM,IAAI8C,cACrC,GAAIonE,KAAO0q4B,GAGP,OAFAQ,GAASK,EAASb,GAAe1q4B,IACjCqr4B,GAAWC,EAAUC,GACdA,EAEX,IAaYC,EAbRC,EAASzr4B,EAAIt2E,OACjB,GAAsB,MAAlBs2E,EAAI99D,OAAO,GACX,OAAe,IAAXup8B,GAA2B,IAAXA,GACZD,EAAKxs7B,SAASghD,EAAI50E,MAAM,EAAG,GAAI,MACvB,GAAKog9B,GAAM,MAIvBP,GAAQM,GAAgB,KAALC,IAAe,GAAY,KAALA,IAAe,EAAU,IAALA,GAAoB,IAALA,IAAc,EAAU,GAALA,GAAmB,GAALA,IAAa,EAAe,IAAXC,EAAezs7B,SAASghD,EAAI50E,MAAM,GAAI,IAAM,GAAM,GAChLig9B,GAAWC,EAAUC,GACdA,QALHN,GAAQM,EAAS,EAAG,EAAG,EAAG,GAOd,IAAXE,GAA2B,IAAXA,GACjBD,EAAKxs7B,SAASghD,EAAI50E,MAAM,EAAG,GAAI,MACvB,GAAKog9B,GAAM,UAIvBP,GAAQM,GAAe,SAALC,IAAkB,IAAU,MAALA,IAAgB,EAAQ,IAALA,EAAsB,IAAXC,EAAezs7B,SAASghD,EAAI50E,MAAM,GAAI,IAAM,IAAO,GAC1Hig9B,GAAWC,EAAUC,GACdA,QALHN,GAAQM,EAAS,EAAG,EAAG,EAAG,QAOlC,EAEJ,IAAI7uiB,EAAK18V,EAAIn2E,QAAQ,KACjB6h9B,EAAK1r4B,EAAIn2E,QAAQ,KACrB,IAAY,IAAR6ya,GAAagviB,EAAK,IAAMD,EAAQ,CAChC,IAAIE,EAAQ3r4B,EAAIl7C,OAAO,EAAG43Y,GACtBhrY,EAASsuC,EAAIl7C,OAAO43Y,EAAK,EAAGgviB,GAAMhviB,EAAK,IAAIzua,MAAM,KACjDygR,EAAQ,EACZ,OAAQi9rB,GACJ,IAAK,OACD,GAAsB,IAAlBj66B,EAAOhoC,OACP,OAAyB,IAAlBgoC,EAAOhoC,OACRuh9B,GAAQM,GAAU756B,EAAO,IAAKA,EAAO,IAAKA,EAAO,GAAI,GACrDu56B,GAAQM,EAAS,EAAG,EAAG,EAAG,GAEpC78rB,EAAQo8rB,GAAcp56B,EAAOzmC,OACjC,IAAK,MACD,OAAIymC,EAAOhoC,QAAU,GACjBuh9B,GAAQM,EAASV,GAAYn56B,EAAO,IAAKm56B,GAAYn56B,EAAO,IAAKm56B,GAAYn56B,EAAO,IAAuB,IAAlBA,EAAOhoC,OAAeglR,EAAQo8rB,GAAcp56B,EAAO,KAC5I256B,GAAWC,EAAUC,GACdA,QAGPN,GAAQM,EAAS,EAAG,EAAG,EAAG,GAGlC,IAAK,OACD,OAAsB,IAAlB756B,EAAOhoC,YACPuh9B,GAAQM,EAAS,EAAG,EAAG,EAAG,IAG9B756B,EAAO,GAAKo56B,GAAcp56B,EAAO,IACjCk66B,GAAUl66B,EAAQ656B,GAClBF,GAAWC,EAAUC,GACdA,GACX,IAAK,MACD,OAAsB,IAAlB756B,EAAOhoC,YACPuh9B,GAAQM,EAAS,EAAG,EAAG,EAAG,IAG9BK,GAAUl66B,EAAQ656B,GAClBF,GAAWC,EAAUC,GACdA,GACX,QACI,OAEZ,CACAN,GAAQM,EAAS,EAAG,EAAG,EAAG,EAlF1B,CAoFJ,CACA,SAASK,GAAUC,EAAMx1M,GACrB,IAAIpqwB,GAAOynK,WAAWm4yB,EAAK,IAAM,IAAO,KAAO,IAAO,IAClD1h9B,EAAI2g9B,GAAce,EAAK,IACvBhg9B,EAAIi/8B,GAAce,EAAK,IACvBrrsB,EAAK30Q,GAAK,GAAMA,GAAK1B,EAAI,GAAK0B,EAAI1B,EAAI0B,EAAI1B,EAC1CyuP,EAAS,EAAJ/sP,EAAQ20Q,EAMjB,OAJAyqsB,GADA50M,EAAOA,GAAQ,GACDs0M,GAA8C,IAAjCI,GAAYnytB,EAAI4nB,EAAIv0Q,EAAI,EAAI,IAAW0+8B,GAAsC,IAAzBI,GAAYnytB,EAAI4nB,EAAIv0Q,IAAW0+8B,GAA8C,IAAjCI,GAAYnytB,EAAI4nB,EAAIv0Q,EAAI,EAAI,IAAW,GAC9I,IAAhB4/8B,EAAKni9B,SACL2swB,EAAK,GAAKw1M,EAAK,IAEZx1M,CACX,CAkDO,SAASy1M,GAAKl11B,EAAO79D,GACxB,IAAIgz5B,EAAWn27B,GAAMghG,GACrB,GAAIm11B,EAAU,CACV,IAAK,IAAI9h9B,EAAI,EAAGA,EAAI,EAAGA,IAEf8h9B,EAAS9h9B,GADT8uD,EAAQ,EACMgz5B,EAAS9h9B,IAAM,EAAI8uD,GAAS,GAG1B,IAAMgz5B,EAAS9h9B,IAAM8uD,EAAQgz5B,EAAS9h9B,GAAM,EAE5D8h9B,EAAS9h9B,GAAK,IACd8h9B,EAAS9h9B,GAAK,IAET8h9B,EAAS9h9B,GAAK,IACnB8h9B,EAAS9h9B,GAAK,GAGtB,OAAO6Y,GAAUip8B,EAA8B,IAApBA,EAASri9B,OAAe,OAAS,MAChE,CACJ,CACO,SAASsi9B,GAAMp11B,GAClB,IAAIm11B,EAAWn27B,GAAMghG,GACrB,GAAIm11B,EACA,QAAS,GAAK,KAAOA,EAAS,IAAM,KAAOA,EAAS,IAAM,KAAOA,EAAS,IAAKn+8B,SAAS,IAAIxC,MAAM,EAE1G,CACO,SAAS6g9B,GAAS57G,EAAiBpzsB,EAAQ1zB,GAC9C,GAAM0zB,GAAUA,EAAOvzJ,QACd2m2B,GAAmB,GAAKA,GAAmB,EADpD,CAIA9muB,EAAMA,GAAO,GACb,IAAI/+H,EAAQ6l2B,GAAmBpzsB,EAAOvzJ,OAAS,GAC3Cwi9B,EAAYhg9B,KAAKyK,MAAMnM,GACvB2h9B,EAAajg9B,KAAKuK,KAAKjM,GACvB+lvB,EAAYtzlB,EAAOivzB,GACnB17N,EAAavzlB,EAAOkvzB,GACpBC,EAAK5h9B,EAAQ0h9B,EAKjB,OAJA3i1B,EAAI,GAAKoh1B,GAAaK,GAAWz6N,EAAU,GAAIC,EAAW,GAAI47N,IAC9D7i1B,EAAI,GAAKoh1B,GAAaK,GAAWz6N,EAAU,GAAIC,EAAW,GAAI47N,IAC9D7i1B,EAAI,GAAKoh1B,GAAaK,GAAWz6N,EAAU,GAAIC,EAAW,GAAI47N,IAC9D7i1B,EAAI,GAAKqh1B,GAAcI,GAAWz6N,EAAU,GAAIC,EAAW,GAAI47N,IACxD7i1B,CAZP,CAaJ,CACO,IAAI8i1B,GAAiBJ,GACrB,SAAS,GAAK57G,EAAiBpzsB,EAAQqvzB,GAC1C,GAAMrvzB,GAAUA,EAAOvzJ,QACd2m2B,GAAmB,GAAKA,GAAmB,EADpD,CAIA,IAAI7l2B,EAAQ6l2B,GAAmBpzsB,EAAOvzJ,OAAS,GAC3Cwi9B,EAAYhg9B,KAAKyK,MAAMnM,GACvB2h9B,EAAajg9B,KAAKuK,KAAKjM,GACvB+lvB,EAAY36tB,GAAMqnI,EAAOivzB,IACzB17N,EAAa56tB,GAAMqnI,EAAOkvzB,IAC1BC,EAAK5h9B,EAAQ0h9B,EACbt11B,EAAQ9zG,GAAU,CAClB6n8B,GAAaK,GAAWz6N,EAAU,GAAIC,EAAW,GAAI47N,IACrDzB,GAAaK,GAAWz6N,EAAU,GAAIC,EAAW,GAAI47N,IACrDzB,GAAaK,GAAWz6N,EAAU,GAAIC,EAAW,GAAI47N,IACrDxB,GAAcI,GAAWz6N,EAAU,GAAIC,EAAW,GAAI47N,KACvD,QACH,OAAOE,EACD,CACE111B,MAAOA,EACPs11B,UAAWA,EACXC,WAAYA,EACZ3h9B,MAAOA,GAETosH,CApBN,CAqBJ,CACO,IAAI211B,GAAa,GACjB,SAASC,GAAU511B,EAAO3qH,EAAG9B,EAAG0B,GACnC,IAAIkg9B,EAAWn27B,GAAMghG,GACrB,GAAIA,EAKA,OAJAm11B,EA5HR,SAAmB11M,GACf,GAAKA,EAAL,CAGA,IAOIxnwB,EACAhC,EARAc,EAAI0owB,EAAK,GAAK,IACdrowB,EAAIqowB,EAAK,GAAK,IACdjnwB,EAAIinwB,EAAK,GAAK,IACdo2M,EAAOvg9B,KAAKgL,IAAIvJ,EAAGK,EAAGoB,GACtBs98B,EAAOxg9B,KAAK8K,IAAIrJ,EAAGK,EAAGoB,GACtBggH,EAAQs91B,EAAOD,EACf/+8B,GAAKg/8B,EAAOD,GAAQ,EAGxB,GAAc,IAAVr91B,EACAvgH,EAAI,EACJhC,EAAI,MAEH,CAEGA,EADAa,EAAI,GACA0hH,GAASs91B,EAAOD,GAGhBr91B,GAAS,EAAIs91B,EAAOD,GAE5B,IAAIE,IAAYD,EAAO/+8B,GAAK,EAAMyhH,EAAQ,GAAMA,EAC5Cw91B,IAAYF,EAAO1+8B,GAAK,EAAMohH,EAAQ,GAAMA,EAC5Cy91B,IAAYH,EAAOt98B,GAAK,EAAMggH,EAAQ,GAAMA,EAC5CzhH,IAAM++8B,EACN798B,EAAIg+8B,EAASD,EAER5+8B,IAAM0+8B,EACX798B,EAAK,EAAI,EAAK898B,EAASE,EAElBz98B,IAAMs98B,IACX798B,EAAK,EAAI,EAAK+98B,EAASD,GAEvB998B,EAAI,IACJA,GAAK,GAELA,EAAI,IACJA,GAAK,EAEb,CACA,IAAIg98B,EAAO,CAAK,IAAJh98B,EAAShC,EAAGa,GAIxB,OAHe,MAAX2owB,EAAK,IACLw1M,EAAK3g9B,KAAKmrwB,EAAK,IAEZw1M,CA5CP,CA6CJ,CA4EmBiB,CAAUf,GAChB,MAAL9/8B,IAAc8/8B,EAAS,GAlS/B,SAAuB9h9B,GAEnB,OADAA,EAAIiC,KAAKogD,MAAMriD,IACJ,EAAI,EAAIA,EAAI,IAAM,IAAMA,CACvC,CA+RoC8i9B,CAAc9g9B,IACrC,MAAL9B,IAAc4h9B,EAAS,GAAKjB,GAAc3g9B,IACrC,MAAL0B,IAAckg9B,EAAS,GAAKjB,GAAcj/8B,IACnCiX,GAAU8o8B,GAAUG,GAAW,OAE9C,CACO,SAASiB,GAAYp21B,EAAO83J,GAC/B,IAAIq9rB,EAAWn27B,GAAMghG,GACrB,GAAIm11B,GAAqB,MAATr9rB,EAEZ,OADAq9rB,EAAS,GAAKnB,GAAcl8rB,GACrB5rQ,GAAUip8B,EAAU,OAEnC,CACO,SAASjp8B,GAAUmq8B,EAAUr38B,GAChC,GAAKq38B,GAAaA,EAASvj9B,OAA3B,CAGA,IAAI4h9B,EAAW2B,EAAS,GAAK,IAAMA,EAAS,GAAK,IAAMA,EAAS,GAIhE,MAHa,SAATr38B,GAA4B,SAATA,GAA4B,SAATA,IACtC018B,GAAY,IAAM2B,EAAS,IAExBr38B,EAAO,IAAM018B,EAAW,GAL/B,CAMJ,CACO,SAAS4B,GAAIt21B,EAAOu21B,GACvB,IAAIrlvB,EAAMlyM,GAAMghG,GAChB,OAAOkxG,GACA,KAAQA,EAAI,GAAK,KAAQA,EAAI,GAAK,KAAQA,EAAI,IAAMA,EAAI,GAAK,KACzD,EAAIA,EAAI,IAAMqlvB,EACnB,CACV,CACO,SAASz78B,KACZ,OAAOoR,GAAU,CACb5W,KAAKogD,MAAsB,IAAhBpgD,KAAKwF,UAChBxF,KAAKogD,MAAsB,IAAhBpgD,KAAKwF,UAChBxF,KAAKogD,MAAsB,IAAhBpgD,KAAKwF,WACjB,MACP,CCpZA,IAAI078B,GAAYlh9B,KAAKogD,MACd,SAAS+g6B,GAAez21B,GAC3B,IAAIqe,EACJ,GAAKre,GAAmB,gBAAVA,GAGT,GAAqB,iBAAVA,GAAsBA,EAAM/sH,QAAQ,SAAW,EAAG,CAC9D,IAAIi+N,EAAMlyM,GAAMghG,GACZkxG,IACAlxG,EAAQ,OAASkxG,EAAI,GAAK,IAAMA,EAAI,GAAK,IAAMA,EAAI,GAAK,IACxD7yF,EAAU6yF,EAAI,GAEtB,OARIlxG,EAAQ,OASZ,MAAO,CACHA,MAAOA,EACPqe,QAAoB,MAAXA,EAAkB,EAAIA,EAEvC,CACA,IAAI,GAAU,KACP,SAAS,GAAahJ,GACzB,OAAOA,EAAY,IAAWA,GAAa,EAC/C,CACO,SAASqh1B,GAAOrh1B,GACnB,OAAOmh1B,GAAsB,IAAZnh1B,GAAmB,GACxC,CACO,SAASsh1B,GAAOth1B,GACnB,OAAOmh1B,GAAsB,IAAZnh1B,GAAmB,GACxC,CAcO,IAAIuh1B,GAAuB,CAC9Btl7B,KAAM,QACNghE,MAAO,MACP5gE,OAAQ,SACRwqN,OAAQ,UAqCL,SAAS26tB,GAAe1myB,GAC3B,OAAOA,KAAUA,EAAInzB,KACzB,CAIO,SAAS85zB,GAAU3myB,GACtB,OAAO0myB,GAAe1myB,IAJnB,SAAsBA,GACzB,OAAOA,KAAUA,EAAI4myB,UACzB,CAEkCC,CAAa7myB,EAC/C,CACO,SAAS8myB,GAAiB9myB,GAC7B,MAAoB,WAAbA,EAAInxK,IACf,CACO,SAASk48B,GAAiB/myB,GAC7B,MAAoB,WAAbA,EAAInxK,IACf,CACO,SAASm48B,GAAWhnyB,GACvB,OAAOA,IAAqB,WAAbA,EAAInxK,MACC,WAAbmxK,EAAInxK,KACf,CACO,SAASo48B,GAASp57B,GACrB,MAAO,QAAUA,EAAK,GAC1B,CACO,SAASq57B,GAAiB/q0B,GAC7B,IAAI/3C,EAAQ+3C,EAAGgr0B,iBACXjg8B,EAAO/hB,KAAK8K,IAAIm0F,EAAM,GAAIA,EAAM,IACpC,OAAOj/F,KAAK8K,IAAI9K,KAAKuK,KAAKvK,KAAKwnB,IAAIzF,GAAQ/hB,KAAKwnB,IAAI,KAAM,EAC9D,CACO,SAASy67B,GAAsBli1B,GAClC,IAAI3+H,EAAI2+H,EAAU3+H,GAAK,EACnBjB,EAAI4/H,EAAU5/H,GAAK,EACnBujH,GAAYqc,EAAUrc,UAAY,GAAKm2D,GACvC9jD,EAAS0x0B,GAAU1n0B,EAAUhK,OAAQ,GACrCC,EAASyx0B,GAAU1n0B,EAAU/J,OAAQ,GACrCks1B,EAAQni1B,EAAUmi1B,OAAS,EAC3BC,EAAQpi1B,EAAUoi1B,OAAS,EAC3B3/zB,EAAM,GAaV,OAZIphJ,GAAKjB,IACLqiJ,EAAIxjJ,KAAK,aAAeoC,EAAI,MAAQjB,EAAI,OAExCujH,GACA8+B,EAAIxjJ,KAAK,UAAY0kH,EAAW,KAErB,IAAXqS,GAA2B,IAAXC,GAChBwsB,EAAIxjJ,KAAK,SAAW+2H,EAAS,IAAMC,EAAS,MAE5Cks1B,GAASC,IACT3/zB,EAAIxjJ,KAAK,QAAUki9B,GAAUgB,EAAQroyB,IAAoB,QAAUqnyB,GAAUiB,EAAQtoyB,IAAoB,QAEtGr3B,EAAIx4I,KAAK,IACpB,CACO,IAAIo48B,GACH,EAAIje,iBAAmBhisB,GAAW9iQ,OAAOitB,MAClC,SAAUwnD,GACb,OAAOz0E,OAAOitB,KAAKkuQ,SAAS/tQ,mBAAmBqnD,IACnD,EAEkB,oBAAXhvD,OACA,SAAUgvD,GACb,OAAOhvD,OAAO5J,KAAK44D,GAAKpyE,SAAS,SACrC,EAEG,SAAUoyE,GAIb,OAAO,IACX,EChJAuu4B,GAAazl9B,MAAMC,UAAUqC,MACjC,SAASoj9B,GAAkBtt1B,EAAIwoH,EAAIoguB,GAC/B,OAAQpguB,EAAKxoH,GAAM4o1B,EAAU5o1B,CACjC,CACA,SAASut1B,GAAmBll1B,EAAKrI,EAAIwoH,EAAIoguB,GAErC,IADA,IAAI5h1B,EAAMhH,EAAGx3H,OACJO,EAAI,EAAGA,EAAIi+H,EAAKj+H,IACrBs/H,EAAIt/H,GAAKuk9B,GAAkBtt1B,EAAGj3H,GAAIy/O,EAAGz/O,GAAI6/8B,GAE7C,OAAOvg1B,CACX,CAcA,SAASml1B,GAAWnl1B,EAAKrI,EAAIwoH,EAAI/lD,GAE7B,IADA,IAAIz7D,EAAMhH,EAAGx3H,OACJO,EAAI,EAAGA,EAAIi+H,EAAKj+H,IACrBs/H,EAAIt/H,GAAKi3H,EAAGj3H,GAAKy/O,EAAGz/O,GAAK05L,EAE7B,OAAOp6D,CACX,CACA,SAASol1B,GAAWpl1B,EAAKrI,EAAIwoH,EAAI/lD,GAG7B,IAFA,IAAIz7D,EAAMhH,EAAGx3H,OACTkl9B,EAAO1m1B,GAAOhH,EAAG,GAAGx3H,OACfO,EAAI,EAAGA,EAAIi+H,EAAKj+H,IAAK,CACrBs/H,EAAIt/H,KACLs/H,EAAIt/H,GAAK,IAEb,IAAK,IAAIwD,EAAI,EAAGA,EAAImh9B,EAAMnh9B,IACtB87H,EAAIt/H,GAAGwD,GAAKyzH,EAAGj3H,GAAGwD,GAAKi8O,EAAGz/O,GAAGwD,GAAKk2L,CAE1C,CACA,OAAOp6D,CACX,CACA,SAASsl1B,GAAeC,EAAMnnf,GAM1B,IALA,IAAIonf,EAAOD,EAAKpl9B,OACZsl9B,EAAOrnf,EAAKj+d,OACZul9B,EAAaF,EAAOC,EAAOrnf,EAAOmnf,EAClCI,EAAahj9B,KAAKgL,IAAI638B,EAAMC,GAC5Bhh8B,EAAOih8B,EAAWC,EAAa,IAAM,CAAEt41B,MAAO,CAAC,EAAG,EAAG,EAAG,GAAIprE,OAAQ,GAC/DvhD,EAAIil9B,EAAYjl9B,EAAIiC,KAAK8K,IAAI+38B,EAAMC,GAAO/k9B,IAC/Cgl9B,EAAW/j9B,KAAK,CACZsgD,OAAQx9B,EAAKw9B,OACborE,MAAO5oG,EAAK4oG,MAAMxrH,SAG9B,CACA,SAASogK,GAAUsjzB,EAAMnnf,EAAMwnf,GAC3B,IAAIC,EAAON,EACP38mB,EAAOw1H,EACX,GAAKynf,EAAKlk9B,MAASinW,EAAKjnW,KAAxB,CAGA,IAAImk9B,EAAUD,EAAK1l9B,OACf4l9B,EAAUn9mB,EAAKzoW,OACnB,GAAI2l9B,IAAYC,EAEZ,GADuBD,EAAUC,EAE7BF,EAAK1l9B,OAAS4l9B,OAGd,IAAK,IAAIrl9B,EAAIol9B,EAASpl9B,EAAIql9B,EAASrl9B,IAC/Bml9B,EAAKlk9B,KAAgB,IAAXik9B,EAAeh9mB,EAAKloW,GAAKsk9B,GAAWtl9B,KAAKkpW,EAAKloW,KAIpE,IAAI2k9B,EAAOQ,EAAK,IAAMA,EAAK,GAAG1l9B,OAC9B,IAASO,EAAI,EAAGA,EAAIml9B,EAAK1l9B,OAAQO,IAC7B,GAAe,IAAXkl9B,EACIx56B,MAAMy56B,EAAKnl9B,MACXml9B,EAAKnl9B,GAAKkoW,EAAKloW,SAInB,IAAK,IAAIwD,EAAI,EAAGA,EAAImh9B,EAAMnh9B,IAClBkoC,MAAMy56B,EAAKnl9B,GAAGwD,MACd2h9B,EAAKnl9B,GAAGwD,GAAK0kW,EAAKloW,GAAGwD,GAxBrC,CA6BJ,CACO,SAAS8h9B,GAAW/k9B,GACvB,GAAI4o8B,EAAY5o8B,GAAQ,CACpB,IAAI09H,EAAM19H,EAAMd,OAChB,GAAI0p8B,EAAY5o8B,EAAM,IAAK,CAEvB,IADA,IAAI8+d,EAAM,GACDr/d,EAAI,EAAGA,EAAIi+H,EAAKj+H,IACrBq/d,EAAIp+d,KAAKqj9B,GAAWtl9B,KAAKuB,EAAMP,KAEnC,OAAOq/d,CACX,CACA,OAAOilf,GAAWtl9B,KAAKuB,EAC3B,CACA,OAAOA,CACX,CACA,SAASgl9B,GAAYn5M,GAKjB,OAJAA,EAAK,GAAKnqwB,KAAKyK,MAAM0/vB,EAAK,KAAO,EACjCA,EAAK,GAAKnqwB,KAAKyK,MAAM0/vB,EAAK,KAAO,EACjCA,EAAK,GAAKnqwB,KAAKyK,MAAM0/vB,EAAK,KAAO,EACjCA,EAAK,GAAgB,MAAXA,EAAK,GAAa,EAAIA,EAAK,GAC9B,QAAUA,EAAKngwB,KAAK,KAAO,GACtC,CAWA,SAASu58B,GAAoBC,GACzB,OAJ6B,IAItBA,GAHsB,IAGoBA,CACrD,CACA,SAASC,GAAiBD,GACtB,OAVsB,IAUfA,GATe,IASoBA,CAC9C,CACA,IAAIE,GAAU,CAAC,EAAG,EAAG,EAAG,GACpBC,GAAS,WACT,SAASA,EAAMj7zB,GACXvrJ,KAAKmgQ,UAAY,GACjBngQ,KAAKym9B,UAAW,EAChBzm9B,KAAK0m9B,UAAW,EAChB1m9B,KAAK2m9B,YAAa,EAClB3m9B,KAAK4m9B,QAAU,EACf5m9B,KAAK6m9B,SAAW,EAChB7m9B,KAAKurJ,SAAWA,CACpB,CA4QA,OA3QAi7zB,EAAM9m9B,UAAUgiK,WAAa,WACzB,OAAO1hK,KAAK44Z,SAChB,EACA4tjB,EAAM9m9B,UAAUon9B,YAAc,WAC1B9m9B,KAAK44Z,WAAY,EACb54Z,KAAK+m9B,gBACL/m9B,KAAK+m9B,eAAeD,aAE5B,EACAN,EAAM9m9B,UAAUsn9B,aAAe,WAC3B,OAAOhn9B,KAAKmgQ,UAAU9/P,QAAU,CACpC,EACAmm9B,EAAM9m9B,UAAUun9B,iBAAmB,WAC/B,OAAOjn9B,KAAK+m9B,cAChB,EACAP,EAAM9m9B,UAAUwn9B,YAAc,SAAUrh6B,EAAM8U,EAAUkwD,GACpD7qH,KAAK2m9B,YAAa,EAClB,IAAIxmtB,EAAYngQ,KAAKmgQ,UACjBthI,EAAMshI,EAAU9/P,OAChBom9B,GAAW,EACXJ,EAtCY,EAuCZll9B,EAAQw5D,EACZ,GAAIov4B,EAAYpv4B,GAAW,CACvB,IAAIws5B,EAlDhB,SAAuBhm9B,GACnB,OAAO4o8B,EAAY5o8B,GAASA,EAAM,IAAM,EAAI,CAChD,CAgD2Bim9B,CAAczs5B,GAC7B0r5B,EAAUc,GACO,IAAbA,IAAmB7j6B,GAASqX,EAAS,KACrB,IAAbws5B,IAAmB7j6B,GAASqX,EAAS,GAAG,OAC3C8r5B,GAAW,EAEnB,MAEI,GAAInj6B,GAASqX,KAAc0v4B,GAAM1v4B,GAC7B0r5B,EAxDQ,OA0DP,GAAIrr5B,GAASL,GACd,GAAKruB,OAAOquB,GAGP,CACD,IAAIupJ,EAAa,GAAYvpJ,GACzBupJ,IACA/iN,EAAQ+iN,EACRmiwB,EA/DD,EAiEP,MARIA,EA5DI,OAsEP,GAAIpc,GAAiBtv4B,GAAW,CACjC,IAAI0s5B,EAAiBh+jB,EAAO,CAAC,EAAGloZ,GAChCkm9B,EAAend,WAAa766B,EAAIsrC,EAASuv4B,YAAY,SAAUod,GAAa,MAAO,CAC/Enl6B,OAAQml6B,EAAUnl6B,OAClBorE,MAAO,GAAY+51B,EAAU/51B,OAC7B,IACAi31B,GAAiB7p5B,GACjB0r5B,EAzEa,EA2ER5B,GAAiB9p5B,KACtB0r5B,EA3Ea,GA6EjBll9B,EAAQkm9B,CACZ,CAEQ,IAARxo1B,EACA7+H,KAAKqm9B,QAAUA,EAEVA,IAAYrm9B,KAAKqm9B,SAlFV,IAkFqBA,IACjCI,GAAW,GAEfzm9B,KAAKym9B,SAAWzm9B,KAAKym9B,UAAYA,EACjC,IAAIc,EAAK,CACL1h6B,KAAMA,EACN1kD,MAAOA,EACPw5D,SAAUA,EACV8l5B,QAAS,GASb,OAPI511B,IACA081B,EAAG181B,OAASA,EACZ081B,EAAG7G,WAAa17sB,GAAWn6I,GACrBA,EACA,GAAYA,IAAWw01B,GAAsBx01B,IAEvDs1I,EAAUt+P,KAAK0l9B,GACRA,CACX,EACAf,EAAM9m9B,UAAU4xa,QAAU,SAAUk2iB,EAASC,GACzC,IAAIC,EAAM1n9B,KAAKmgQ,UACXngQ,KAAK2m9B,YACLe,EAAIn76B,MAAK,SAAUvrC,EAAGsC,GAClB,OAAOtC,EAAE6kD,KAAOviD,EAAEuiD,IACtB,IAQJ,IANA,IAAIwg6B,EAAUrm9B,KAAKqm9B,QACfsB,EAASD,EAAIrn9B,OACbun9B,EAASF,EAAIC,EAAS,GACtB38M,EAAahrwB,KAAKym9B,SAClBzb,EAAQsb,GAAiBD,GACzB3B,EAAa0B,GAAoBC,GAC5Bzl9B,EAAI,EAAGA,EAAI+m9B,EAAQ/m9B,IAAK,CAC7B,IAAI2m9B,EAAKG,EAAI9m9B,GACTO,EAAQom9B,EAAGpm9B,MACXstJ,EAAYm5zB,EAAOzm9B,MACvBom9B,EAAG9G,QAAU8G,EAAG1h6B,KAAO2h6B,EAClBx8M,IACGggM,GAASpq8B,IAAM+m9B,EAAS,EACxBxlzB,GAAUhhK,EAAOstJ,EAAW43zB,GAEvB3B,GACLc,GAAerk9B,EAAM+o8B,WAAYz7yB,EAAUy7yB,YAGvD,CACA,IAAKl/L,GAjIoB,IAkIlBq7M,GACAoB,GACAzn9B,KAAKgn9B,gBACLS,EAAcT,gBACdX,IAAYoB,EAAcpB,UACzBoB,EAAc7ujB,UAAW,CAC7B54Z,KAAK+m9B,eAAiBU,EACtB,IAAIj5mB,EAAak5mB,EAAI,GAAGvm9B,MACxB,IAASP,EAAI,EAAGA,EAAI+m9B,EAAQ/m9B,IA/IhB,IAgJJyl9B,EACAqB,EAAI9m9B,GAAGin9B,cAAgBH,EAAI9m9B,GAAGO,MAAQqtW,EA9InC,IAgJE63mB,EACLqB,EAAI9m9B,GAAGin9B,cACHxC,GAAW,GAAIqC,EAAI9m9B,GAAGO,MAAOqtW,GAAa,GAEzC83mB,GAAiBD,KACtBqB,EAAI9m9B,GAAGin9B,cAvJD,IAuJiBxB,EACjBhB,GAAW,GAAIqC,EAAI9m9B,GAAGO,MAAOqtW,GAAa,GAC1C82mB,GAAW,GAAIoC,EAAI9m9B,GAAGO,MAAOqtW,GAAa,GAG5D,CACJ,EACAg4mB,EAAM9m9B,UAAUgvW,KAAO,SAAU5+V,EAAQ2w8B,GACrC,IAAIzg9B,KAAK44Z,UAAT,CAGI54Z,KAAK+m9B,gBAAkB/m9B,KAAK+m9B,eAAenujB,YAC3C54Z,KAAK+m9B,eAAiB,MAE1B,IAOIe,EAGAhx6B,EACAix6B,EAXAC,EAAoC,MAAvBho9B,KAAK+m9B,eAClB5qI,EAAW6rI,EAAa,gBAAkB,QAC1C3B,EAAUrm9B,KAAKqm9B,QACflmtB,EAAYngQ,KAAKmgQ,UACjB8ntB,EAAS9ntB,EAAU9/P,OACnBkrJ,EAAWvrJ,KAAKurJ,SAChB28zB,EAzKW,IAyKI7B,EAEf8B,EAAYno9B,KAAK4m9B,QACjBjU,EAAU9v8B,KAAKgL,IAGnB,GAAe,IAAXo68B,EACAnx6B,EAAQix6B,EAAY5ntB,EAAU,OAE7B,CACD,GAAIsgtB,EAAU,EACVqH,EAAW,OAEV,GAAIrH,EAAUzg9B,KAAK6m9B,SAAU,CAE9B,IAAKiB,EADOnV,EAAQwV,EAAY,EAAGF,EAAS,GACrBH,GAAY,KAC3B3ntB,EAAU2ntB,GAAUrH,SAAWA,GADDqH,KAKtCA,EAAWnV,EAAQmV,EAAUG,EAAS,EAC1C,KACK,CACD,IAAKH,EAAWK,EAAWL,EAAWG,KAC9B9ntB,EAAU2ntB,GAAUrH,QAAUA,GADQqH,KAK9CA,EAAWnV,EAAQmV,EAAW,EAAGG,EAAS,EAC9C,CACAF,EAAY5ntB,EAAU2ntB,EAAW,GACjChx6B,EAAQqpN,EAAU2ntB,EACtB,CACA,GAAMhx6B,GAASix6B,EAAf,CAGA/n9B,KAAK4m9B,QAAUkB,EACf9n9B,KAAK6m9B,SAAWpG,EAChB,IAAIv+e,EAAY6lf,EAAUtH,QAAU3p6B,EAAM2p6B,QACtCl98B,EAAiB,IAAb2+d,EAAiB,EAAIywe,GAAS8N,EAAU3p6B,EAAM2p6B,SAAWv+e,EAAU,GACvE6lf,EAAUrH,aACVn98B,EAAIwk9B,EAAUrH,WAAWn98B,IAE7B,IAAI6k9B,EAAYJ,EAAaho9B,KAAKqo9B,eAC3BH,EAAe3B,GAAUz28B,EAAOy7I,GAIvC,IAHK+6zB,GAAiBD,KAAY6B,GAAkBE,IAChDA,EAAYpo9B,KAAKqo9B,eAAiB,IAElCro9B,KAAKym9B,SACL328B,EAAOy7I,GAAYhoJ,EAAI,EAAIuzC,EAAM6jB,SAAWot5B,EAAUpt5B,cAErD,GAAI2r5B,GAAiBD,GA9NR,IA+NdA,EACMjB,GAAmBgD,EAAWtx6B,EAAMqlyB,GAAW4rI,EAAU5rI,GAAW540B,GA1UtF,SAA4B28H,EAAKrI,EAAIwoH,EAAIoguB,GAGrC,IAFA,IAAI5h1B,EAAMhH,EAAGx3H,OACTkl9B,EAAO1m1B,GAAOhH,EAAG,GAAGx3H,OACfO,EAAI,EAAGA,EAAIi+H,EAAKj+H,IAAK,CACrBs/H,EAAIt/H,KACLs/H,EAAIt/H,GAAK,IAEb,IAAK,IAAIwD,EAAI,EAAGA,EAAImh9B,EAAMnh9B,IACtB87H,EAAIt/H,GAAGwD,GAAK+g9B,GAAkBtt1B,EAAGj3H,GAAGwD,GAAIi8O,EAAGz/O,GAAGwD,GAAIq88B,EAE1D,CAEJ,CA+TkB6H,CAAmBF,EAAWtx6B,EAAMqlyB,GAAW4rI,EAAU5rI,GAAW540B,QAEzE,GAAI6i9B,GAAoBC,GAAU,CACnC,IAAI3oyB,EAAM5mI,EAAMqlyB,GACZosI,EAAYR,EAAU5rI,GACtBqsI,EAnOiB,IAmOInC,EACzBv28B,EAAOy7I,GAAY,CACfh/I,KAAMi88B,EAAqB,SAAW,SACtCvk9B,EAAGkh9B,GAAkBznyB,EAAIz5K,EAAGsk9B,EAAUtk9B,EAAGV,GACzCP,EAAGmi9B,GAAkBznyB,EAAI16K,EAAGul9B,EAAUvl9B,EAAGO,GACzC2m8B,WAAY766B,EAAIquJ,EAAIwsxB,YAAY,SAAUod,EAAWxsmB,GACjD,IAAI2tmB,EAAgBF,EAAUre,WAAWpvlB,GACzC,MAAO,CACH34T,OAAQgj6B,GAAkBmC,EAAUnl6B,OAAQsm6B,EAActm6B,OAAQ5+C,GAClEgqH,MAAO441B,GAAYf,GAAmB,GAAIkC,EAAU/51B,MAAOk71B,EAAcl71B,MAAOhqH,IAExF,IACAwJ,OAAQw78B,EAAUx78B,QAElBy78B,GACA148B,EAAOy7I,GAAUuxC,GAAKqoxB,GAAkBznyB,EAAIof,GAAIyrxB,EAAUzrxB,GAAIv5L,GAC9DuM,EAAOy7I,GAAU9zB,GAAK0t1B,GAAkBznyB,EAAIjmD,GAAI8w1B,EAAU9w1B,GAAIl0H,IAG9DuM,EAAOy7I,GAAUxrJ,EAAIol9B,GAAkBznyB,EAAI39K,EAAGwo9B,EAAUxo9B,EAAGwD,EAEnE,MACK,GAAI2k9B,EACL9C,GAAmBgD,EAAWtx6B,EAAMqlyB,GAAW4rI,EAAU5rI,GAAW540B,GAC/Dyk9B,IACDl48B,EAAOy7I,GAAY46zB,GAAYiC,QAGlC,CACD,IAAIjn9B,EAAQgk9B,GAAkBru6B,EAAMqlyB,GAAW4rI,EAAU5rI,GAAW540B,GAChEyk9B,EACAho9B,KAAKqo9B,eAAiBln9B,EAGtB2O,EAAOy7I,GAAYpqJ,CAE3B,CACI6m9B,GACAho9B,KAAK0o9B,aAAa548B,EA9DtB,CA7CA,CA6GJ,EACA028B,EAAM9m9B,UAAUgp9B,aAAe,SAAU548B,GACrC,IAAIu28B,EAAUrm9B,KAAKqm9B,QACf96zB,EAAWvrJ,KAAKurJ,SAChBs8zB,EAAgB7n9B,KAAKqo9B,eAnRT,IAoRZhC,EACAv28B,EAAOy7I,GAAYz7I,EAAOy7I,GAAYs8zB,EAlR3B,IAoRNxB,GACL,GAAYv28B,EAAOy7I,GAAWg7zB,IAC9BlB,GAAWkB,GAASA,GAASsB,EAAe,GAC5C/38B,EAAOy7I,GAAY46zB,GAAYI,KAzRjB,IA2RTF,EACLhB,GAAWv18B,EAAOy7I,GAAWz7I,EAAOy7I,GAAWs8zB,EAAe,GA3RhD,IA6RTxB,GACLf,GAAWx18B,EAAOy7I,GAAWz7I,EAAOy7I,GAAWs8zB,EAAe,EAEtE,EACOrB,CACX,CAtRY,GAuRRmC,GAAY,WACZ,SAASA,EAAS748B,EAAQ+sO,EAAM+ruB,EAAwBC,GACpD7o9B,KAAK8o9B,QAAU,CAAC,EAChB9o9B,KAAK+o9B,WAAa,GAClB/o9B,KAAKgp9B,SAAW,EAChBhp9B,KAAKip9B,SAAW,EAChBjp9B,KAAKkp9B,MAAQ,KACblp9B,KAAKmp9B,QAAUr58B,EACf9P,KAAKwxT,MAAQ30E,EACTA,GAAQgsuB,EACRhgB,EAAS,qDAGb7o8B,KAAKop9B,mBAAqBP,EAC1B7o9B,KAAKqp9B,eAAiBT,EAC1B,CA+SA,OA9SAD,EAASjp9B,UAAU4p9B,WAAa,WAC5B,OAAOtp9B,KAAKgp9B,QAChB,EACAL,EAASjp9B,UAAU6p9B,SAAW,WAC1B,OAAOvp9B,KAAKkg9B,MAChB,EACAyI,EAASjp9B,UAAU8p9B,QAAU,WACzB,OAAOxp9B,KAAKwxT,KAChB,EACAm3pB,EAASjp9B,UAAU+p9B,UAAY,WAC3B,OAAOzp9B,KAAKmp9B,OAChB,EACAR,EAASjp9B,UAAUgq9B,aAAe,SAAU558B,GACxC9P,KAAKmp9B,QAAUr58B,CACnB,EACA648B,EAASjp9B,UAAUiq9B,KAAO,SAAU9j6B,EAAM5Y,EAAO49E,GAC7C,OAAO7qH,KAAK4p9B,aAAa/j6B,EAAM5Y,EAAO35B,GAAK25B,GAAQ49E,EACvD,EACA891B,EAASjp9B,UAAUkq9B,aAAe,SAAU/j6B,EAAM5Y,EAAOqoW,EAAWzqR,GAEhE,IADA,IAAI0m1B,EAASvx8B,KAAK8o9B,QACTlo9B,EAAI,EAAGA,EAAI00Y,EAAUj1Y,OAAQO,IAAK,CACvC,IAAI2qJ,EAAW+pP,EAAU10Y,GACrBg2c,EAAQ26f,EAAOhmzB,GACnB,IAAKqrT,EAAO,CACRA,EAAQ26f,EAAOhmzB,GAAY,IAAIi7zB,GAAMj7zB,GACrC,IAAIkkU,OAAe,EACfg4f,EAAgBzn9B,KAAK6p9B,kBAAkBt+zB,GAC3C,GAAIk8zB,EAAe,CACf,IAAIqC,EAAkBrC,EAActntB,UAChC4ptB,EAAcD,EAAgBA,EAAgBzp9B,OAAS,GAC3Dovd,EAAes6f,GAAeA,EAAY5o9B,MAhVvC,IAiVCsm9B,EAAcpB,SAAgC52f,IAC9CA,EAAe02f,GAAY12f,GAEnC,MAEIA,EAAezvd,KAAKmp9B,QAAQ59zB,GAEhC,GAAoB,MAAhBkkU,EACA,SAEA5pa,EAAO,GACP+wZ,EAAMswgB,YAAY,EAAGhB,GAAWz2f,GAAe5kW,GAEnD7qH,KAAK+o9B,WAAWln9B,KAAK0pJ,EACzB,CACAqrT,EAAMswgB,YAAYrh6B,EAAMqg6B,GAAWj56B,EAAMs+G,IAAY1gC,EACzD,CAEA,OADA7qH,KAAKgp9B,SAAWnm9B,KAAK8K,IAAI3N,KAAKgp9B,SAAUnj6B,GACjC7lD,IACX,EACA2o9B,EAASjp9B,UAAUssT,MAAQ,WACvBhsT,KAAKkp9B,MAAMl9pB,QACXhsT,KAAK+/8B,SAAU,CACnB,EACA4I,EAASjp9B,UAAUkh9B,OAAS,WACxB5g9B,KAAKkp9B,MAAMtI,SACX5g9B,KAAK+/8B,SAAU,CACnB,EACA4I,EAASjp9B,UAAUsq9B,SAAW,WAC1B,QAAShq9B,KAAK+/8B,OAClB,EACA4I,EAASjp9B,UAAU2lD,SAAW,SAAUA,GAGpC,OAFArlD,KAAKgp9B,SAAW3j6B,EAChBrlD,KAAKiq9B,QAAS,EACPjq9B,IACX,EACA2o9B,EAASjp9B,UAAUwq9B,cAAgB,WAC/Blq9B,KAAKmq9B,qBACLnq9B,KAAKkp9B,MAAQ,KACb,IAAIkB,EAAWpq9B,KAAKqq9B,SACpB,GAAID,EAEA,IADA,IAAIvr1B,EAAMur1B,EAAS/p9B,OACVO,EAAI,EAAGA,EAAIi+H,EAAKj+H,IACrBwp9B,EAASxp9B,GAAGhB,KAAKI,KAG7B,EACA2o9B,EAASjp9B,UAAU4q9B,iBAAmB,WAClCtq9B,KAAKmq9B,qBACL,IAAIp6tB,EAAY/vP,KAAK+vP,UACjBw6tB,EAAcvq9B,KAAKwq9B,YAKvB,GAJIz6tB,GACAA,EAAU06tB,WAAWzq9B,KAAKkp9B,OAE9Blp9B,KAAKkp9B,MAAQ,KACTqB,EACA,IAAK,IAAI3p9B,EAAI,EAAGA,EAAI2p9B,EAAYlq9B,OAAQO,IACpC2p9B,EAAY3p9B,GAAGhB,KAAKI,KAGhC,EACA2o9B,EAASjp9B,UAAUyq9B,mBAAqB,WAGpC,IAFA,IAAI5Y,EAASvx8B,KAAK8o9B,QACd4B,EAAa1q9B,KAAK+o9B,WACbno9B,EAAI,EAAGA,EAAI8p9B,EAAWrq9B,OAAQO,IACnC2w8B,EAAOmZ,EAAW9p9B,IAAIkm9B,aAE9B,EACA6B,EAASjp9B,UAAUmq9B,kBAAoB,SAAUc,GAC7C,IAAIlD,EACAmD,EAAoB5q9B,KAAKop9B,mBAC7B,GAAIwB,EACA,IAAK,IAAIhq9B,EAAI,EAAGA,EAAIgq9B,EAAkBvq9B,OAAQO,IAAK,CAC/C,IAAIg2c,EAAQg0gB,EAAkBhq9B,GAAGiq9B,SAASF,GACtC/zgB,IACA6wgB,EAAgB7wgB,EAExB,CAEJ,OAAO6wgB,CACX,EACAkB,EAASjp9B,UAAU8mC,MAAQ,SAAUqkF,GACjC,KAAI7qH,KAAKip9B,SAAW,GAApB,CAGAjp9B,KAAKip9B,SAAW,EAIhB,IAHA,IAAI7m9B,EAAOpC,KACPux8B,EAAS,GACTiW,EAAUxn9B,KAAKgp9B,UAAY,EACtBpo9B,EAAI,EAAGA,EAAIZ,KAAK+o9B,WAAW1o9B,OAAQO,IAAK,CAC7C,IAAI2qJ,EAAWvrJ,KAAK+o9B,WAAWno9B,GAC3Bg2c,EAAQ52c,KAAK8o9B,QAAQv9zB,GACrBk8zB,EAAgBzn9B,KAAK6p9B,kBAAkBt+zB,GACvCm8zB,EAAM9wgB,EAAMz2M,UACZ8ntB,EAASP,EAAIrn9B,OAEjB,GADAu2c,EAAMtlC,QAAQk2iB,EAASC,GACnB7wgB,EAAMowgB,eACN,IAAKhn9B,KAAKqp9B,gBAAkBzygB,EAAM6vgB,SAAU,CACxC,IAAImB,EAASF,EAAIO,EAAS,GACtBL,IACAxl9B,EAAK+m9B,QAAQvygB,EAAMrrT,UAAYq8zB,EAAOjt5B,UAE1Ci8Y,EAAMkwgB,aACV,MAEIvV,EAAO1v8B,KAAK+0c,EAGxB,CACA,GAAI26f,EAAOlx8B,QAAUL,KAAKiq9B,OAAQ,CAC9B,IAAI9+jB,EAAO,IAAI,GAAK,CAChB80jB,KAAMuH,EACN3quB,KAAM78O,KAAKwxT,MACXrwQ,MAAOnhD,KAAKkg9B,QAAU,EACtBC,QAAS,SAAUM,GACfr+8B,EAAK6m9B,SAAW,EAChB,IAAI2B,EAAoBxo9B,EAAKgn9B,mBAC7B,GAAIwB,EAAmB,CAEnB,IADA,IAAIE,GAA2B,EACtBlq9B,EAAI,EAAGA,EAAIgq9B,EAAkBvq9B,OAAQO,IAC1C,GAAIgq9B,EAAkBhq9B,GAAGso9B,MAAO,CAC5B4B,GAA2B,EAC3B,KACJ,CAECA,IACD1o9B,EAAKgn9B,mBAAqB,KAElC,CACA,IAASxo9B,EAAI,EAAGA,EAAI2w8B,EAAOlx8B,OAAQO,IAC/B2w8B,EAAO3w8B,GAAG8tW,KAAKtsW,EAAK+m9B,QAAS1I,GAEjC,IAAIsK,EAAc3o9B,EAAK4o9B,YACvB,GAAID,EACA,IAASnq9B,EAAI,EAAGA,EAAImq9B,EAAY1q9B,OAAQO,IACpCmq9B,EAAYnq9B,GAAGwB,EAAK+m9B,QAAS1I,EAGzC,EACAL,UAAW,WACPh+8B,EAAK8n9B,eACT,IAEJlq9B,KAAKkp9B,MAAQ/9jB,EACTnrZ,KAAK+vP,WACL/vP,KAAK+vP,UAAUk7tB,QAAQ9/jB,GAEvBtgS,GACAsgS,EAAKm1jB,UAAUz11B,EAEvB,MAEI7qH,KAAKkq9B,gBAET,OAAOlq9B,IAtEP,CAuEJ,EACA2o9B,EAASjp9B,UAAUqwC,KAAO,SAAUm76B,GAChC,GAAKlr9B,KAAKkp9B,MAAV,CAGA,IAAI/9jB,EAAOnrZ,KAAKkp9B,MACZgC,GACA//jB,EAAKg1jB,QAAQ,GAEjBng9B,KAAKsq9B,kBALL,CAMJ,EACA3B,EAASjp9B,UAAUyhD,MAAQ,SAAU0E,GAEjC,OADA7lD,KAAKkg9B,OAASr65B,EACP7lD,IACX,EACA2o9B,EAASjp9B,UAAUyr9B,OAAS,SAAUzp5B,GAOlC,OANIA,IACK1hE,KAAKgr9B,cACNhr9B,KAAKgr9B,YAAc,IAEvBhr9B,KAAKgr9B,YAAYnp9B,KAAK6/D,IAEnB1hE,IACX,EACA2o9B,EAASjp9B,UAAUwB,KAAO,SAAUwgE,GAOhC,OANIA,IACK1hE,KAAKqq9B,WACNrq9B,KAAKqq9B,SAAW,IAEpBrq9B,KAAKqq9B,SAASxo9B,KAAK6/D,IAEhB1hE,IACX,EACA2o9B,EAASjp9B,UAAU+pB,QAAU,SAAUi4C,GAOnC,OANIA,IACK1hE,KAAKwq9B,cACNxq9B,KAAKwq9B,YAAc,IAEvBxq9B,KAAKwq9B,YAAY3o9B,KAAK6/D,IAEnB1hE,IACX,EACA2o9B,EAASjp9B,UAAU0r9B,QAAU,WACzB,OAAOpr9B,KAAKkp9B,KAChB,EACAP,EAASjp9B,UAAUmr9B,SAAW,SAAUt/zB,GACpC,OAAOvrJ,KAAK8o9B,QAAQv9zB,EACxB,EACAo9zB,EAASjp9B,UAAU2r9B,UAAY,WAC3B,IAAI3+5B,EAAQ1sD,KACZ,OAAOqvB,EAAIrvB,KAAK+o9B,YAAY,SAAUlk8B,GAAO,OAAO6nC,EAAMo85B,QAAQjk8B,EAAM,GAC5E,EACA8j8B,EAASjp9B,UAAU4r9B,WAAa,SAAUh2kB,EAAW41kB,GACjD,IAAK51kB,EAAUj1Y,SAAWL,KAAKkp9B,MAC3B,OAAO,EAIX,IAFA,IAAI3X,EAASvx8B,KAAK8o9B,QACd4B,EAAa1q9B,KAAK+o9B,WACbno9B,EAAI,EAAGA,EAAI00Y,EAAUj1Y,OAAQO,IAAK,CACvC,IAAIg2c,EAAQ26f,EAAOj8jB,EAAU10Y,IACzBg2c,IAAUA,EAAMl1S,eACZwpzB,EACAt0gB,EAAMloG,KAAK1uW,KAAKmp9B,QAAS,GAEF,IAAlBnp9B,KAAKip9B,UACVrygB,EAAMloG,KAAK1uW,KAAKmp9B,QAAS,GAE7BvygB,EAAMkwgB,cAEd,CACA,IAAIyE,GAAa,EACjB,IAAS3q9B,EAAI,EAAGA,EAAI8p9B,EAAWrq9B,OAAQO,IACnC,IAAK2w8B,EAAOmZ,EAAW9p9B,IAAI8gK,aAAc,CACrC6pzB,GAAa,EACb,KACJ,CAKJ,OAHIA,GACAvr9B,KAAKsq9B,mBAEFiB,CACX,EACA5C,EAASjp9B,UAAU8r9B,OAAS,SAAU178B,EAAQ278B,EAAWC,GACrD,GAAK578B,EAAL,CAGA278B,EAAYA,GAAazr9B,KAAK+o9B,WAC9B,IAAK,IAAIno9B,EAAI,EAAGA,EAAI6q9B,EAAUpr9B,OAAQO,IAAK,CACvC,IAAI2qJ,EAAWkg0B,EAAU7q9B,GACrBg2c,EAAQ52c,KAAK8o9B,QAAQv9zB,GACzB,GAAKqrT,IAASA,EAAMl1S,aAApB,CAGA,IAAIgmzB,EAAM9wgB,EAAMz2M,UACZontB,EAAKG,EAAIgE,EAAc,EAAIhE,EAAIrn9B,OAAS,GACxCkn9B,IACAz38B,EAAOy7I,GAAY26zB,GAAWqB,EAAG5s5B,UAJrC,CAMJ,CAbA,CAcJ,EACAgu5B,EAASjp9B,UAAUis9B,mBAAqB,SAAUC,EAAYH,GAC1DA,EAAYA,GAAan48B,GAAKs48B,GAC9B,IAAK,IAAIhr9B,EAAI,EAAGA,EAAI6q9B,EAAUpr9B,OAAQO,IAAK,CACvC,IAAI2qJ,EAAWkg0B,EAAU7q9B,GACrBg2c,EAAQ52c,KAAK8o9B,QAAQv9zB,GACzB,GAAKqrT,EAAL,CAGA,IAAI8wgB,EAAM9wgB,EAAMz2M,UAChB,GAAIuntB,EAAIrn9B,OAAS,EAAG,CAChB,IAAIun9B,EAASF,EAAI9l9B,MACjBg1c,EAAMswgB,YAAYU,EAAO/h6B,KAAM+l6B,EAAWrg0B,IAC1CqrT,EAAMtlC,QAAQtxa,KAAKgp9B,SAAUpygB,EAAMqwgB,mBACvC,CANA,CAOJ,CACJ,EACO0B,CACX,CA/Te,GAgUf,YC5tBO,SAASlh7B,KACZ,OAAO,IAAIjc,MAAOic,SACtB,CACA,IAAIok7B,GAAa,SAAUnjmB,GAEvB,SAASmjmB,EAAUxv6B,GACf,IAAIqQ,EAAQg8T,EAAO9oX,KAAKI,OAASA,KAQjC,OAPA0sD,EAAMqiQ,UAAW,EACjBriQ,EAAMgrV,MAAQ,EACdhrV,EAAMoz5B,YAAc,EACpBpz5B,EAAMo/5B,YAAc,EACpBp/5B,EAAMqz5B,SAAU,EAChB1j6B,EAAOA,GAAQ,CAAC,EAChBqQ,EAAMs6F,MAAQ3qG,EAAK2qG,OAAS,CAAC,EACtBt6F,CACX,CA6HA,OAxIA,GAAUm/5B,EAAWnjmB,GAYrBmjmB,EAAUns9B,UAAUur9B,QAAU,SAAU9/jB,GAChCA,EAAKp7J,WACL/vP,KAAKyq9B,WAAWt/jB,GAEfnrZ,KAAK+r9B,OAIN/r9B,KAAKgs9B,MAAMjr9B,KAAOoqZ,EAClBA,EAAKriQ,KAAO9oJ,KAAKgs9B,MACjB7gkB,EAAKpqZ,KAAO,KACZf,KAAKgs9B,MAAQ7gkB,GANbnrZ,KAAK+r9B,MAAQ/r9B,KAAKgs9B,MAAQ7gkB,EAQ9BA,EAAKp7J,UAAY/vP,IACrB,EACA6r9B,EAAUns9B,UAAUus9B,YAAc,SAAUt5tB,GACxCA,EAAS5C,UAAY/vP,KACrB,IAAImrZ,EAAOx4J,EAASy4tB,UAChBjgkB,GACAnrZ,KAAKir9B,QAAQ9/jB,EAErB,EACA0gkB,EAAUns9B,UAAU+q9B,WAAa,SAAUt/jB,GACvC,GAAKA,EAAKp7J,UAAV,CAGA,IAAIjnG,EAAOqiQ,EAAKriQ,KACZ/nJ,EAAOoqZ,EAAKpqZ,KACZ+nJ,EACAA,EAAK/nJ,KAAOA,EAGZf,KAAK+r9B,MAAQhr9B,EAEbA,EACAA,EAAK+nJ,KAAOA,EAGZ9oJ,KAAKgs9B,MAAQlj0B,EAEjBqiQ,EAAKpqZ,KAAOoqZ,EAAKriQ,KAAOqiQ,EAAKp7J,UAAY,IAfzC,CAgBJ,EACA87tB,EAAUns9B,UAAUws9B,eAAiB,SAAUv5tB,GAC3C,IAAIw4J,EAAOx4J,EAASy4tB,UAChBjgkB,GACAnrZ,KAAKyq9B,WAAWt/jB,GAEpBx4J,EAAS5C,UAAY,IACzB,EACA87tB,EAAUns9B,UAAU6uE,OAAS,SAAU494B,GAInC,IAHA,IAAItm6B,EAAOpe,KAAYznC,KAAK8/8B,YACxB/51B,EAAQlgE,EAAO7lD,KAAK03Y,MACpByT,EAAOnrZ,KAAK+r9B,MACT5gkB,GAAM,CACT,IAAIihkB,EAAWjhkB,EAAKpqZ,KACLoqZ,EAAKz8C,KAAK7oT,EAAMkgE,IAE3BolS,EAAKi1jB,YACLpg9B,KAAKyq9B,WAAWt/jB,GAChBA,EAAOihkB,GAGPjhkB,EAAOihkB,CAEf,CACAps9B,KAAK03Y,MAAQ7xV,EACRsm6B,IACDns9B,KAAK0+B,QAAQ,QAASqnF,GACtB/lH,KAAKgnJ,MAAMz4E,QAAUvuE,KAAKgnJ,MAAMz4E,SAExC,EACAs94B,EAAUns9B,UAAUywT,WAAa,WAC7B,IAAI/tT,EAAOpC,KACXA,KAAK+uT,UAAW,EAOhB,IANA,SAAS2/C,IACDtsW,EAAK2sT,WACL,GAAsB2/C,IACrBtsW,EAAK298B,SAAW398B,EAAKmsE,SAE9B,GAEJ,EACAs94B,EAAUns9B,UAAU8mC,MAAQ,WACpBxmC,KAAK+uT,WAGT/uT,KAAK03Y,MAAQjwW,KACbznC,KAAK8/8B,YAAc,EACnB9/8B,KAAKmwT,aACT,EACA07pB,EAAUns9B,UAAUqwC,KAAO,WACvB/vC,KAAK+uT,UAAW,CACpB,EACA88pB,EAAUns9B,UAAUssT,MAAQ,WACnBhsT,KAAK+/8B,UACN//8B,KAAK8r9B,YAAcrk7B,KACnBznC,KAAK+/8B,SAAU,EAEvB,EACA8L,EAAUns9B,UAAUkh9B,OAAS,WACrB5g9B,KAAK+/8B,UACL//8B,KAAK8/8B,aAAer46B,KAAYznC,KAAK8r9B,YACrC9r9B,KAAK+/8B,SAAU,EAEvB,EACA8L,EAAUns9B,UAAUslB,MAAQ,WAExB,IADA,IAAImmY,EAAOnrZ,KAAK+r9B,MACT5gkB,GAAM,CACT,IAAIihkB,EAAWjhkB,EAAKpqZ,KACpBoqZ,EAAKriQ,KAAOqiQ,EAAKpqZ,KAAOoqZ,EAAKp7J,UAAY,KACzCo7J,EAAOihkB,CACX,CACAps9B,KAAK+r9B,MAAQ/r9B,KAAKgs9B,MAAQ,IAC9B,EACAH,EAAUns9B,UAAUgiK,WAAa,WAC7B,OAAqB,MAAd1hK,KAAK+r9B,KAChB,EACAF,EAAUns9B,UAAU8uP,QAAU,SAAU1+O,EAAQqZ,GAC5CA,EAAUA,GAAW,CAAC,EACtBnpB,KAAKwmC,QACL,IAAImsN,EAAW,IAAI,GAAS7iP,EAAQqZ,EAAQ0zN,MAE5C,OADA78O,KAAKis9B,YAAYt5tB,GACVA,CACX,EACOk5tB,CACX,CA1IgB,CA0Id,IACF,YC7IA,IAGQQ,GAOAC,GATJC,GAAuB,EAAI1lB,aAC3B2lB,IAQIF,GAAsB,CACtB1q0B,YAAa,EAAG6q0B,UAAW,EAAG3q0B,YAAa,EAAG4q0B,WAAY,GAMvD,CACHC,MAfAN,GAAoB,CACpB,QAAS,WAAY,aAAc,QAAS,WAC5C,UAAW,YAAa,YAAa,eAcrCrtxB,MAZoB,CACpB,aAAc,WAAY,aAY1Bk8S,QAPsB,EAAWmxe,IAAmB,SAAU3h9B,GAC9D,IAAIki9B,EAAKli9B,EAAK+B,QAAQ,QAAS,WAC/B,OAAO6/8B,GAAoB3s9B,eAAeit9B,GAAMA,EAAKli9B,CACzD,MAOAmi9B,GACO,CAAC,YAAa,WADrBA,GAES,CAAC,cAAe,aAEzBC,IAAsB,EAC1B,SAASC,GAAmBtu7B,GACxB,IAAIuu7B,EAAcvu7B,EAAMuu7B,YACxB,MAAuB,QAAhBA,GAAyC,UAAhBA,CACpC,CAYA,SAASC,GAAUxu7B,GACfA,IAAUA,EAAMi36B,WAAY,EAChC,CAIA,SAASwX,GAAUhi8B,EAAU2uH,GAGzB,IAFA,IAAIsz0B,EAAQtz0B,EACRuz0B,GAAU,EACPD,GAA4B,IAAnBA,EAAM7j4B,YACb8j4B,EAAUD,EAAME,eACbF,IAAUtz0B,GAAMsz0B,IAAUji8B,EAASmp7B,cAC3C8Y,EAAQA,EAAMzr7B,WAElB,OAAO0r7B,CACX,CACA,IAAIE,GACA,SAAyBpi8B,EAAUuT,GAC/Bz+B,KAAKwiH,gBAAkB,GACvBxiH,KAAKmrY,yBAA2B,GAChCnrY,KAAK4lH,eAAiB,GACtB5lH,KAAKuM,KAAOkyB,EAAMlyB,KAClBvM,KAAK8P,OAAS9P,KAAK++C,cAAgB7zB,EAASog7B,IAC5Ctr8B,KAAKgt9B,YAAcvu7B,EAAMuu7B,YACzBht9B,KAAK8zF,QAAUr1D,EAAMq1D,QACrB9zF,KAAK+zF,QAAUt1D,EAAMs1D,OACzB,EAGAw53B,GAAmB,CACnBC,UAAW,SAAU/u7B,GACjBA,EAAQ8x6B,GAAevw8B,KAAKsr8B,IAAK7s6B,GACjCz+B,KAAKyt9B,oBAAsB,CAAChv7B,EAAMyx6B,IAAKzx6B,EAAM0x6B,KAC7Cnw8B,KAAK0+B,QAAQ,YAAaD,EAC9B,EACA4nM,UAAW,SAAU5nM,GACjBA,EAAQ8x6B,GAAevw8B,KAAKsr8B,IAAK7s6B,GACjC,IAAIiv7B,EAAY1t9B,KAAKyt9B,qBACjBC,GAAcjv7B,EAAMyx6B,MAAQwd,EAAU,IAAMjv7B,EAAM0x6B,MAAQud,EAAU,IACpE1t9B,KAAK2t9B,wBAAuB,GAEhC3t9B,KAAK0+B,QAAQ,YAAaD,EAC9B,EACAmv7B,QAAS,SAAUnv7B,GACfA,EAAQ8x6B,GAAevw8B,KAAKsr8B,IAAK7s6B,GACjCz+B,KAAK2t9B,wBAAuB,GAC5B3t9B,KAAK0+B,QAAQ,UAAWD,EAC5B,EACA6nM,SAAU,SAAU7nM,GAGXyu7B,GAAUlt9B,MAFfy+B,EAAQ8x6B,GAAevw8B,KAAKsr8B,IAAK7s6B,IACbov7B,WAAapv7B,EAAMq0gB,iBAE/B9yiB,KAAK8t9B,qBACLrv7B,EAAMy26B,eAAiB,gBAE3Bl18B,KAAK0+B,QAAQ,WAAYD,GAEjC,EACAsv7B,MAAO,SAAUtv7B,GACbqu7B,IAAsB,EACtBru7B,EAAQ8x6B,GAAevw8B,KAAKsr8B,IAAK7s6B,GACjCz+B,KAAK0+B,QAAQ,aAAcD,EAC/B,EACAuv7B,WAAY,SAAUvv7B,GACdqu7B,KAGJru7B,EAAQ8x6B,GAAevw8B,KAAKsr8B,IAAK7s6B,GACjCz+B,KAAK0+B,QAAQ,aAAcD,GAC/B,EACAwv7B,WAAY,SAAUxv7B,GAElBwu7B,GADAxu7B,EAAQ8x6B,GAAevw8B,KAAKsr8B,IAAK7s6B,IAEjCz+B,KAAKku9B,kBAAoB,IAAI1i8B,KAC7BxrB,KAAKgwD,QAAQmm5B,eAAe136B,EAAO,SACnC8u7B,GAAiBlnvB,UAAUzmO,KAAKI,KAAMy+B,GACtC8u7B,GAAiBC,UAAU5t9B,KAAKI,KAAMy+B,EAC1C,EACA0v7B,UAAW,SAAU1v7B,GAEjBwu7B,GADAxu7B,EAAQ8x6B,GAAevw8B,KAAKsr8B,IAAK7s6B,IAEjCz+B,KAAKgwD,QAAQmm5B,eAAe136B,EAAO,UACnC8u7B,GAAiBlnvB,UAAUzmO,KAAKI,KAAMy+B,EAC1C,EACA2v7B,SAAU,SAAU3v7B,GAEhBwu7B,GADAxu7B,EAAQ8x6B,GAAevw8B,KAAKsr8B,IAAK7s6B,IAEjCz+B,KAAKgwD,QAAQmm5B,eAAe136B,EAAO,OACnC8u7B,GAAiBK,QAAQhu9B,KAAKI,KAAMy+B,IAC/B,IAAIjT,MAAWxrB,KAAKku9B,kBApIT,KAqIZX,GAAiBr73B,MAAMtyF,KAAKI,KAAMy+B,EAE1C,EACAmjH,YAAa,SAAUnjH,GACnB8u7B,GAAiBC,UAAU5t9B,KAAKI,KAAMy+B,EAC1C,EACAqjH,YAAa,SAAUrjH,GACdsu7B,GAAmBtu7B,IACpB8u7B,GAAiBlnvB,UAAUzmO,KAAKI,KAAMy+B,EAE9C,EACAgu7B,UAAW,SAAUhu7B,GACjB8u7B,GAAiBK,QAAQhu9B,KAAKI,KAAMy+B,EACxC,EACAiu7B,WAAY,SAAUju7B,GACbsu7B,GAAmBtu7B,IACpB8u7B,GAAiBjnvB,SAAS1mO,KAAKI,KAAMy+B,EAE7C,GAEJ,EAAY,CAAC,QAAS,WAAY,gBAAgB,SAAU/zB,GACxD6i9B,GAAiB7i9B,GAAQ,SAAU+zB,GAC/BA,EAAQ8x6B,GAAevw8B,KAAKsr8B,IAAK7s6B,GACjCz+B,KAAK0+B,QAAQh0B,EAAM+zB,EACvB,CACJ,IACA,IAAI4v7B,GAAoB,CACpBvs0B,YAAa,SAAUrjH,GACdsu7B,GAAmBtu7B,IACpB4v7B,GAAkBhovB,UAAUzmO,KAAKI,KAAMy+B,EAE/C,EACAgu7B,UAAW,SAAUhu7B,GACjB4v7B,GAAkBT,QAAQhu9B,KAAKI,KAAMy+B,EACzC,EACA4nM,UAAW,SAAU5nM,GACjBz+B,KAAK0+B,QAAQ,YAAaD,EAC9B,EACAmv7B,QAAS,SAAUnv7B,GACf,IAAI6v7B,EAA0Btu9B,KAAK8t9B,mBACnC9t9B,KAAK2t9B,wBAAuB,GAC5B3t9B,KAAK0+B,QAAQ,UAAWD,GACpB6v7B,IACA7v7B,EAAMy26B,eAAiB,iBACvBl18B,KAAK0+B,QAAQ,WAAYD,GAEjC,GAgDJ,SAAS8v7B,GAA4Bng8B,EAAOog8B,EAAiBl/6B,EAAU8wf,GACnEhygB,EAAMs44B,QAAQ8nD,GAAmBl/6B,EACjClhB,EAAMqg8B,aAAaD,GAAmBpub,EACtCzzgB,GAAiByB,EAAMsg8B,UAAWF,EAAiBl/6B,EAAU8wf,EACjE,CACA,SAASuub,GAAyBvg8B,GAC9B,InB/IgCyrH,EAAInvI,EAAMslD,EAASowe,EmB+I/CsmY,EAAUt44B,EAAMs44B,QACpB,IAAK,IAAI8nD,KAAmB9nD,EACpBA,EAAQ/m6B,eAAe6u9B,KnBjJC300B,EmBkJJzrH,EAAMsg8B,UnBlJEhk9B,EmBkJS8j9B,EnBlJHx+5B,EmBkJoB022B,EAAQ8nD,GnBlJnBpub,EmBkJqChygB,EAAMqg8B,aAAaD,GnBjJ3G300B,EAAGxwH,oBAAoB3e,EAAMslD,EAASowe,ImBoJtChygB,EAAMs44B,QAAU,CAAC,CACrB,CACA,IAAIkoD,GACA,SAAyBF,EAAWG,GAChC7u9B,KAAK0m6B,QAAU,CAAC,EAChB1m6B,KAAKyu9B,aAAe,CAAC,EACrBzu9B,KAAK2njB,UAAW,EAChB3njB,KAAK0u9B,UAAYA,EACjB1u9B,KAAK6u9B,YAAcA,CACvB,EAuCJ,SApCuB,SAAUnmmB,GAE7B,SAASommB,EAAgBxjB,EAAK+I,GAC1B,IAzE6Bnp7B,EAAUkD,EACvCyg8B,EAwEIni6B,EAAQg8T,EAAO9oX,KAAKI,OAASA,KASjC,OARA0sD,EAAMoh6B,oBAAqB,EAC3Bph6B,EAAM4+4B,IAAMA,EACZ5+4B,EAAM2n5B,YAAcA,EACpB3n5B,EAAMqi6B,mBAAqB,IAAIH,GAAgBtjB,EAAKiiB,IAChDhB,KACA7/5B,EAAMsi6B,oBAAsB,IAAIJ,GAAgBzp9B,SAAUkp9B,KA/EjCnj8B,EAiFDwhC,EAjFWt+B,EAiFJs+B,EAAMqi6B,mBAhFzCF,EAAczg8B,EAAMyg8B,YACpB,EAAIjoB,uBACJ,EAAY4lB,GAAyBtxe,SAAS,SAAUsze,GACpDD,GAA4Bng8B,EAAOog8B,GAAiB,SAAU/v7B,GAC1Dow7B,EAAYL,GAAiB5u9B,KAAKsrB,EAAUuT,EAChD,GACJ,KAGI,EAAIko6B,sBACJ,EAAY6lB,GAAyBxtxB,OAAO,SAAUwvxB,GAClDD,GAA4Bng8B,EAAOog8B,GAAiB,SAAU/v7B,GAC1Dow7B,EAAYL,GAAiB5u9B,KAAKsrB,EAAUuT,GAlKhE,SAAuBrQ,GACnBA,EAAMu5hB,UAAW,EACO,MAApBv5hB,EAAM6g8B,aACNvi8B,aAAa0B,EAAM6g8B,YACnB7g8B,EAAM6g8B,WAAa,MAEvB7g8B,EAAM6g8B,WAAapp8B,YAAW,WAC1BuI,EAAMu5hB,UAAW,EACjBv5hB,EAAM6g8B,WAAa,IACvB,GAAG,IACP,CAyJoBC,CAAc9g8B,EAClB,GACJ,IAEJ,EAAYo+7B,GAAyBG,OAAO,SAAU6B,GAClDD,GAA4Bng8B,EAAOog8B,GAAiB,SAAU/v7B,GAC1DA,EAAQ6x6B,GAAe7x6B,GAClBrQ,EAAMu5hB,UACPkna,EAAYL,GAAiB5u9B,KAAKsrB,EAAUuT,EAEpD,GACJ,KAyDOiuB,CACX,CAqBA,OAjCA,GAAUoi6B,EAAiBpmmB,GAa3BommB,EAAgBpv9B,UAAU2l8B,QAAU,WAChCspB,GAAyB3u9B,KAAK+u9B,oBAC1BxC,IACAoC,GAAyB3u9B,KAAKgv9B,oBAEtC,EACAF,EAAgBpv9B,UAAU4mZ,UAAY,SAAU+ujB,GAC5Cr18B,KAAKsr8B,IAAIj37B,QAAUrU,KAAKsr8B,IAAIj37B,MAAMgtI,OAASg0zB,GAAe,UAC9D,EACAyZ,EAAgBpv9B,UAAUiu9B,uBAAyB,SAAUwB,GAEzD,GADAnv9B,KAAKyt9B,oBAAsB,KACvBlB,KACMvs9B,KAAK8t9B,oBAAwBqB,EAAsB,CACzDnv9B,KAAK8t9B,mBAAqBqB,EAC1B,IAAIC,EAAqBpv9B,KAAKgv9B,oBAC9BG,EAvEZ,SAAsCjk8B,EAAUkD,GAO5C,SAASih8B,EAAMb,GAQXD,GAA4Bng8B,EAAOog8B,GAPnC,SAA6B/v7B,GACzBA,EAAQ6x6B,GAAe7x6B,GAClByu7B,GAAUhi8B,EAAUuT,EAAM3uB,UAC3B2uB,EA9KhB,SAA8BvT,EAAUuT,GACpC,OAAO8x6B,GAAerl7B,EAASog7B,IAAK,IAAIgiB,GAAgBpi8B,EAAUuT,IAAQ,EAC9E,CA4KwB6w7B,CAAqBpk8B,EAAUuT,GACvCrQ,EAAMyg8B,YAAYL,GAAiB5u9B,KAAKsrB,EAAUuT,GAE1D,GACyE,CAAEgR,SAAS,GACxF,CAfI,EAAIm35B,uBACJ,EAAYimB,GAAmCwC,GAEzC,EAAI1oB,sBACV,EAAYkmB,GAAiCwC,EAYrD,CAuDkBE,CAA6Bvv9B,KAAMov9B,GACnCT,GAAyBS,EACnC,CACJ,EACON,CACX,CAnCsB,CAmCpB,IClSF,IAAIU,GAAM,EACN,EAAIxoB,kBACJwoB,GAAM3s9B,KAAK8K,IAAIzL,OAAO+iG,kBACd/iG,OAAOut9B,QAAUvt9B,OAAOut9B,OAAOC,WAAaxt9B,OAAOut9B,OAAOE,aAC3D,EAAG,IAEP,IACI1q3B,GAAmBuq3B,GAEnBI,GAAmB,OACnBC,GAAoB,OCT3BC,GAAY,GAEhB,SAAS,GAAgBpyyB,GACrB,OAAOA,EAFG,MAEcA,GAAM,IAClC,CACA,IAAIqyyB,GAAW,GACXC,GAAe,GACfC,GnBRO,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,GmBSvBjq2B,GAAMnjH,KAAKmjH,IACXkq2B,GAAiB,WACjB,SAASA,IACT,CAyNA,OAxNAA,EAAcxw9B,UAAUyw9B,kBAAoB,SAAU/s9B,GAClD,OAAO8s9B,EAAcC,kBAAkBnw9B,KAAMoD,EACjD,EACA8s9B,EAAcxw9B,UAAUktP,YAAc,SAAUnuB,GAC5Cz+N,KAAKiE,EAAIw6N,EAAI,GACbz+N,KAAKgD,EAAIy7N,EAAI,EACjB,EACAyxvB,EAAcxw9B,UAAUotP,SAAW,SAAUruB,GACzCz+N,KAAK44H,OAAS6lG,EAAI,GAClBz+N,KAAK64H,OAAS4lG,EAAI,EACtB,EACAyxvB,EAAcxw9B,UAAU0w9B,QAAU,SAAU3xvB,GACxCz+N,KAAK+k9B,MAAQtmvB,EAAI,GACjBz+N,KAAKgl9B,MAAQvmvB,EAAI,EACrB,EACAyxvB,EAAcxw9B,UAAU2w9B,UAAY,SAAU5xvB,GAC1Cz+N,KAAK2sL,QAAU8xC,EAAI,GACnBz+N,KAAK4sL,QAAU6xC,EAAI,EACvB,EACAyxvB,EAAcxw9B,UAAU4w9B,mBAAqB,WACzC,OAAO,GAAgBtw9B,KAAKumH,WACrB,GAAgBvmH,KAAKiE,IACrB,GAAgBjE,KAAKgD,IACrB,GAAgBhD,KAAK44H,OAAS,IAC9B,GAAgB54H,KAAK64H,OAAS,IAC9B,GAAgB74H,KAAK+k9B,QACrB,GAAgB/k9B,KAAKgl9B,MAChC,EACAkL,EAAcxw9B,UAAU+68B,gBAAkB,WACtC,IAAI7twB,EAAkB5sM,KAAKqxF,QAAUrxF,KAAKqxF,OAAOuxC,UAC7C0t1B,EAAqBtw9B,KAAKsw9B,qBAC1Blt9B,EAAIpD,KAAK4iI,UACP0t1B,GAAsB1jxB,GAO5BxpM,EAAIA,GnBpDD,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,GmBqDfkt9B,EACAtw9B,KAAKmw9B,kBAAkB/s9B,GAGvB0s9B,GAAU1s9B,GAEVwpM,IACI0jxB,EACA,GAAWlt9B,EAAGwpM,EAAiBxpM,GAG/B,GAAYA,EAAGwpM,IAGvB5sM,KAAK4iI,UAAYx/H,EACjBpD,KAAKuw9B,yBAAyBnt9B,IAtBtBA,IACA0s9B,GAAU1s9B,GACVpD,KAAKww9B,aAAe,KAqBhC,EACAN,EAAcxw9B,UAAU6w9B,yBAA2B,SAAUnt9B,GACzD,IAAIqt9B,EAAmBzw9B,KAAKyw9B,iBAC5B,GAAwB,MAApBA,GAAiD,IAArBA,EAAwB,CACpDzw9B,KAAK6k9B,eAAekL,IACpB,IAAIW,EAAOX,GAAS,GAAK,GAAK,EAAI,EAC9BY,EAAOZ,GAAS,GAAK,GAAK,EAAI,EAC9B14nB,IAAO04nB,GAAS,GAAKW,GAAQD,EAAmBC,GAAQX,GAAS,IAAM,EACvEz4nB,IAAOy4nB,GAAS,GAAKY,GAAQF,EAAmBE,GAAQZ,GAAS,IAAM,EAC3E3s9B,EAAE,IAAMi0V,EACRj0V,EAAE,IAAMi0V,EACRj0V,EAAE,IAAMk0V,EACRl0V,EAAE,IAAMk0V,CACZ,CACAt3V,KAAKww9B,aAAexw9B,KAAKww9B,cnBnFtB,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,GmBoFnB,GAAcxw9B,KAAKww9B,aAAcpt9B,EACrC,EACA8s9B,EAAcxw9B,UAAUkx9B,qBAAuB,WAG3C,IAFA,IAAIC,EAAgB7w9B,KAChB6+c,EAAY,GACTgygB,GACHhygB,EAAUh9c,KAAKgv9B,GACfA,EAAgBA,EAAcx/3B,OAElC,KAAOw/3B,EAAgBhygB,EAAUj9c,OAC7Biv9B,EAAcpW,kBAElB,OAAOz68B,KAAK4iI,SAChB,EACAst1B,EAAcxw9B,UAAUox9B,kBAAoB,SAAU1t9B,GAClD,GAAKA,EAAL,CAGA,IAAIi0V,EAAKj0V,EAAE,GAAKA,EAAE,GAAKA,EAAE,GAAKA,EAAE,GAC5Bk0V,EAAKl0V,EAAE,GAAKA,EAAE,GAAKA,EAAE,GAAKA,EAAE,GAC5BmjH,EAAW1jH,KAAK0xH,MAAMnxH,EAAE,GAAIA,EAAE,IAC9B2t9B,EAASlu9B,KAAKsmC,GAAK,EAAIo9E,EAAW1jH,KAAK0xH,MAAMnxH,EAAE,GAAIA,EAAE,IACzDk0V,EAAKz0V,KAAK4yF,KAAK6hQ,GAAMz0V,KAAKuxH,IAAI281B,GAC9B15nB,EAAKx0V,KAAK4yF,KAAK4hQ,GACfr3V,KAAK+k9B,MAAQgM,EACb/w9B,KAAKgl9B,MAAQ,EACbhl9B,KAAKumH,UAAYA,EACjBvmH,KAAKiE,GAAKb,EAAE,GACZpD,KAAKgD,GAAKI,EAAE,GACZpD,KAAK44H,OAASy+N,EACdr3V,KAAK64H,OAASy+N,EACdt3V,KAAK2sL,QAAU,EACf3sL,KAAK4sL,QAAU,CAff,CAgBJ,EACAsjyB,EAAcxw9B,UAAUsx9B,mBAAqB,WACzC,GAAKhx9B,KAAK4iI,UAAV,CAGA,IAAIvxC,EAASrxF,KAAKqxF,OACdjuF,EAAIpD,KAAK4iI,UACTvxC,GAAUA,EAAOuxC,YACjB,GAAWot1B,GAAc3+3B,EAAOm/3B,aAAcpt9B,GAC9CA,EAAI4s9B,IAER,IAAIjlM,EAAK/qxB,KAAK2sL,QACVq+lB,EAAKhrxB,KAAK4sL,SACVm+lB,GAAMC,KACNilM,GAAgB,GAAKllM,EACrBklM,GAAgB,GAAKjlM,EACrB,GAAWglM,GAAc5s9B,EAAG6s9B,IAC5BD,GAAa,IAAMjlM,EACnBilM,GAAa,IAAMhlM,EACnB5nxB,EAAI4s9B,IAERhw9B,KAAK8w9B,kBAAkB1t9B,EAjBvB,CAkBJ,EACA8s9B,EAAcxw9B,UAAUml9B,eAAiB,SAAU3k1B,GAC/C,IAAI98H,EAAIpD,KAAK4iI,UAEb,OADA1C,EAAMA,GAAO,GACR98H,GAKL88H,EAAI,GAAKr9H,KAAK4yF,KAAKryF,EAAE,GAAKA,EAAE,GAAKA,EAAE,GAAKA,EAAE,IAC1C88H,EAAI,GAAKr9H,KAAK4yF,KAAKryF,EAAE,GAAKA,EAAE,GAAKA,EAAE,GAAKA,EAAE,IACtCA,EAAE,GAAK,IACP88H,EAAI,IAAMA,EAAI,IAEd98H,EAAE,GAAK,IACP88H,EAAI,IAAMA,EAAI,IAEXA,IAZHA,EAAI,GAAK,EACTA,EAAI,GAAK,EACFA,EAWf,EACAgw1B,EAAcxw9B,UAAUux9B,sBAAwB,SAAUht9B,EAAGjB,GACzD,IAAI+nL,EAAK,CAAC9mL,EAAGjB,GACTwt9B,EAAexw9B,KAAKww9B,aAIxB,OAHIA,GACA,GAAsBzlyB,EAAIA,EAAIylyB,GAE3BzlyB,CACX,EACAmlyB,EAAcxw9B,UAAUwx9B,uBAAyB,SAAUjt9B,EAAGjB,GAC1D,IAAI+nL,EAAK,CAAC9mL,EAAGjB,GACT4/H,EAAY5iI,KAAK4iI,UAIrB,OAHIA,GACA,GAAsBmoD,EAAIA,EAAInoD,GAE3BmoD,CACX,EACAmlyB,EAAcxw9B,UAAUyx9B,aAAe,WACnC,IAAI/t9B,EAAIpD,KAAK4iI,UACb,OAAOx/H,GAAK4iH,GAAI5iH,EAAE,GAAK,GAAK,OAAS4iH,GAAI5iH,EAAE,GAAK,GAAK,MAC/CP,KAAK4yF,KAAKuwB,GAAI5iH,EAAE,GAAKA,EAAE,GAAKA,EAAE,GAAKA,EAAE,KACrC,CACV,EACA8s9B,EAAcxw9B,UAAU0x9B,cAAgB,SAAUvp9B,GAC9Cup9B,GAAcpx9B,KAAM6H,EACxB,EACAqo9B,EAAcC,kBAAoB,SAAUrg9B,EAAQ1M,GAChDA,EAAIA,GAAK,GACT,IAAI2nxB,EAAKj7wB,EAAO68K,SAAW,EACvBq+lB,EAAKl7wB,EAAO88K,SAAW,EACvByqK,EAAKvnV,EAAO8oH,OACZ0+N,EAAKxnV,EAAO+oH,OACZ+kO,EAAK9tV,EAAO2rO,QACZoiH,EAAK/tV,EAAO4rO,QACZn1H,EAAWz2G,EAAOy2G,UAAY,EAC9BtiH,EAAI6L,EAAO7L,EACXjB,EAAI8M,EAAO9M,EACX+h9B,EAAQj18B,EAAOi18B,MAAQli9B,KAAKinC,IAAIh6B,EAAOi18B,OAAS,EAChDC,EAAQl18B,EAAOk18B,MAAQni9B,KAAKinC,KAAKh6B,EAAOk18B,OAAS,EACrD,GAAIj6L,GAAMC,GAAMptb,GAAMC,EAAI,CACtB,IAAIrpN,EAAKu2oB,EAAKntb,EACVvpN,EAAK22oB,EAAKntb,EACdz6V,EAAE,IAAMoxI,EAAK6iN,EAAK0tnB,EAAQ1w0B,EAAKijN,EAC/Bl0V,EAAE,IAAMixI,EAAKijN,EAAK0tnB,EAAQxw0B,EAAK6iN,CACnC,MAEIj0V,EAAE,GAAKA,EAAE,GAAK,EASlB,OAPAA,EAAE,GAAKi0V,EACPj0V,EAAE,GAAKk0V,EACPl0V,EAAE,GAAK4h9B,EAAQ3tnB,EACfj0V,EAAE,GAAK2h9B,EAAQztnB,EACf/wO,GAAY,GAAcnjH,EAAGA,EAAGmjH,GAChCnjH,EAAE,IAAM2nxB,EAAK9mxB,EACbb,EAAE,IAAM4nxB,EAAKhoxB,EACNI,CACX,EACA8s9B,EAAcmB,iBAAmB,WAC7B,IAAI7/8B,EAAQ0+8B,EAAcxw9B,UAC1B8R,EAAMonH,OACFpnH,EAAMqnH,OACFrnH,EAAMi/8B,iBAAmB,EACjCj/8B,EAAMvN,EACFuN,EAAMxO,EACFwO,EAAMm7K,QACFn7K,EAAMo7K,QACFp7K,EAAMuz8B,MACFvz8B,EAAMwz8B,MACFxz8B,EAAM+0G,SACF/0G,EAAMiqO,QACFjqO,EAAMkqO,QAAU,CACnD,CAdgC,GAe1Bw0uB,CACX,CA5NoB,GA8NToB,GAAsB,CAC7B,IAAK,IAAK,UAAW,UAAW,UAAW,UAAW,WAAY,SAAU,SAAU,QAAS,SAE5F,SAASF,GAActh9B,EAAQjI,GAClC,IAAK,IAAIjH,EAAI,EAAGA,EAAI0w9B,GAAoBjx9B,OAAQO,IAAK,CACjD,IAAI2qJ,EAAW+l0B,GAAoB1w9B,GACnCkP,EAAOy7I,GAAY1jJ,EAAO0jJ,EAC9B,CACJ,CACA,YC/OA,IAAIgm0B,GAAiB,CAAC,EACf,SAASpmvB,GAAS/6M,EAAM00N,GAE3B,IAAI0suB,EAAcD,GADlBzsuB,EAAOA,GAAQ2itB,GAEV+pB,IACDA,EAAcD,GAAezsuB,GAAQ,IAAI,GAAI,MAEjD,IAAI/lN,EAAQyy7B,EAAYru9B,IAAIitB,GAK5B,OAJa,MAAT2O,IACAA,EAAQ,EAAY2mN,YAAYt1N,EAAM00N,GAAM/lN,MAC5Cyy7B,EAAYtQ,IAAI9w7B,EAAM2O,IAEnBA,CACX,CACO,SAAS0y7B,GAAqBrh8B,EAAM00N,EAAME,EAAWD,GACxD,IAAIhmN,EAAQosM,GAAS/6M,EAAM00N,GACvB9lN,EAASmnvB,GAAcrhiB,GACvB7gP,EAAIyt9B,GAAY,EAAG3y7B,EAAOimN,GAC1BhiP,EAAI,GAAY,EAAGg8B,EAAQ+lN,GAE/B,OADW,IAAI,GAAa9gP,EAAGjB,EAAG+7B,EAAOC,EAE7C,CACO,SAASmlN,GAAgB/zN,EAAM00N,EAAME,EAAWD,GACnD,IAAI4suB,IAAcvh8B,GAAQ,IAAM,IAAIxrB,MAAM,MAE1C,GAAY,IADF+s9B,EAAUtx9B,OAEhB,OAAOox9B,GAAqBE,EAAU,GAAI7suB,EAAME,EAAWD,GAI3D,IADA,IAAI6suB,EAAa,IAAI,GAAa,EAAG,EAAG,EAAG,GAClChx9B,EAAI,EAAGA,EAAI+w9B,EAAUtx9B,OAAQO,IAAK,CACvC,IAAI8yF,EAAO+93B,GAAqBE,EAAU/w9B,GAAIkkP,EAAME,EAAWD,GACzD,IAANnkP,EAAUgx9B,EAAW9x1B,KAAKpsC,GAAQk+3B,EAAW5uyB,MAAMtvF,EACvD,CACA,OAAOk+3B,CAEf,CACO,SAASF,GAAYzt9B,EAAG86B,EAAOimN,GAOlC,MANkB,UAAdA,EACA/gP,GAAK86B,EAEc,WAAdimN,IACL/gP,GAAK86B,EAAQ,GAEV96B,CACX,CACO,SAAS,GAAYjB,EAAGg8B,EAAQm0sB,GAOnC,MANsB,WAAlBA,EACAnwuB,GAAKg8B,EAAS,EAES,WAAlBm0sB,IACLnwuB,GAAKg8B,GAEFh8B,CACX,CACO,SAASmjxB,GAAcrhiB,GAC1B,OAAO3Z,GAAS,IAAK2Z,EACzB,CAIO,SAAS+suB,GAAa1w9B,EAAOujG,GAChC,MAAqB,iBAAVvjG,EACHA,EAAM88K,YAAY,MAAQ,EACnB5T,WAAWlpK,GAAS,IAAMujG,EAE9B2lE,WAAWlpK,GAEfA,CACX,CACO,SAAS2w9B,GAAsB5x1B,EAAK7jF,EAAMq3C,GAC7C,IAAIq+3B,EAAe116B,EAAK1d,UAAY,SAChCsqH,EAA4B,MAAjB5sG,EAAK4sG,SAAmB5sG,EAAK4sG,SAAW,EACnDjqH,EAAS00D,EAAK10D,OACdD,EAAQ20D,EAAK30D,MACbiz7B,EAAahz7B,EAAS,EACtB/6B,EAAIyvF,EAAKzvF,EACTjB,EAAI0wF,EAAK1wF,EACTgiP,EAAY,OACZituB,EAAoB,MACxB,GAAIF,aAAwBty9B,MACxBwE,GAAK4t9B,GAAaE,EAAa,GAAIr+3B,EAAK30D,OACxC/7B,GAAK6u9B,GAAaE,EAAa,GAAIr+3B,EAAK10D,QACxCgmN,EAAY,KACZituB,EAAoB,UAGpB,OAAQF,GACJ,IAAK,OACD9t9B,GAAKglJ,EACLjmJ,GAAKgv9B,EACLhtuB,EAAY,QACZituB,EAAoB,SACpB,MACJ,IAAK,QACDhu9B,GAAKglJ,EAAWlqH,EAChB/7B,GAAKgv9B,EACLC,EAAoB,SACpB,MACJ,IAAK,MACDhu9B,GAAK86B,EAAQ,EACb/7B,GAAKimJ,EACL+7F,EAAY,SACZituB,EAAoB,SACpB,MACJ,IAAK,SACDhu9B,GAAK86B,EAAQ,EACb/7B,GAAKg8B,EAASiqH,EACd+7F,EAAY,SACZ,MACJ,IAAK,SACD/gP,GAAK86B,EAAQ,EACb/7B,GAAKgv9B,EACLhtuB,EAAY,SACZituB,EAAoB,SACpB,MACJ,IAAK,aACDhu9B,GAAKglJ,EACLjmJ,GAAKgv9B,EACLC,EAAoB,SACpB,MACJ,IAAK,cACDhu9B,GAAK86B,EAAQkqH,EACbjmJ,GAAKgv9B,EACLhtuB,EAAY,QACZituB,EAAoB,SACpB,MACJ,IAAK,YACDhu9B,GAAK86B,EAAQ,EACb/7B,GAAKimJ,EACL+7F,EAAY,SACZ,MACJ,IAAK,eACD/gP,GAAK86B,EAAQ,EACb/7B,GAAKg8B,EAASiqH,EACd+7F,EAAY,SACZituB,EAAoB,SACpB,MACJ,IAAK,gBACDhu9B,GAAKglJ,EACLjmJ,GAAKimJ,EACL,MACJ,IAAK,iBACDhlJ,GAAK86B,EAAQkqH,EACbjmJ,GAAKimJ,EACL+7F,EAAY,QACZ,MACJ,IAAK,mBACD/gP,GAAKglJ,EACLjmJ,GAAKg8B,EAASiqH,EACdgp0B,EAAoB,SACpB,MACJ,IAAK,oBACDhu9B,GAAK86B,EAAQkqH,EACbjmJ,GAAKg8B,EAASiqH,EACd+7F,EAAY,QACZituB,EAAoB,SAShC,OALA/x1B,EAAMA,GAAO,CAAC,GACVj8H,EAAIA,EACRi8H,EAAIl9H,EAAIA,EACRk9H,EAAIqkpB,MAAQv/hB,EACZ9kH,EAAIizmB,cAAgB8+O,EACb/x1B,CACX,CChKO,IAAIgy1B,GAAyB,gBAChCC,GAAsBb,GAAoBtv9B,OAAO,CAAC,WAClDow9B,GAAyB1+7B,GAAO497B,IAAqB,SAAUpkwB,EAAKroM,GAEpE,OADAqoM,EAAIroM,IAAO,EACJqoM,CACX,GAAG,CAAE/kL,QAAQ,IACTkq7B,GAAoB,CAAC,EACrBC,GAAkB,IAAI,GAAa,EAAG,EAAG,EAAG,GAC5Czg4B,GAAW,WACX,SAASA,EAAQ5kD,GACbjtC,KAAKurB,GAAK23b,IACVljd,KAAKuy9B,UAAY,GACjBvy9B,KAAKwy9B,cAAgB,GACrBxy9B,KAAKqvgB,OAAS,CAAC,EACfrvgB,KAAKyy9B,MAAMxl7B,EACf,CAkyBA,OAjyBA4kD,EAAQnyF,UAAU+y9B,MAAQ,SAAUxl7B,GAChCjtC,KAAKiuhB,KAAKhhf,EACd,EACA4kD,EAAQnyF,UAAUk4G,MAAQ,SAAU48B,EAAIH,EAAIl1I,GACxC,OAAQa,KAAKumZ,WACT,IAAK,aACDlyQ,EAAK,EACL,MACJ,IAAK,WACDG,EAAK,EAGb,IAAIpxI,EAAIpD,KAAK4iI,UACRx/H,IACDA,EAAIpD,KAAK4iI,UAAY,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAEzCx/H,EAAE,IAAMoxI,EACRpxI,EAAE,IAAMixI,EACRr0I,KAAKgx9B,qBACLhx9B,KAAK0y9B,YACT,EACA7g4B,EAAQnyF,UAAU068B,aAAe,WAAc,EAC/Cvo3B,EAAQnyF,UAAU268B,YAAc,WAAc,EAC9Cxo3B,EAAQnyF,UAAU6uE,OAAS,WACvBvuE,KAAKy68B,kBACDz68B,KAAK268B,SACL368B,KAAK2y9B,iBAEb,EACA9g4B,EAAQnyF,UAAUiz9B,gBAAkB,SAAUxl1B,GAC1C,IAAI+t0B,EAASl78B,KAAK4y9B,aAClB,GAAI1X,KAAYA,EAAO/y6B,QAAUglG,GAAc,CACtCntI,KAAK6y9B,aACN7y9B,KAAK6y9B,WAAa,CAAC,GAEvB,IAAIA,EAAa7y9B,KAAK6y9B,WAClBzF,EAAUyF,EAAWC,MACrBC,EAAqB7X,EAAO6X,mBAC5B/tuB,OAAY,EACZituB,OAAoB,EACpBe,GAAmB,EACvBD,EAAmB1h4B,OAAS+73B,EAAUpt9B,KAAO,KAC7C,IAAIiz9B,GAAc,EAElB,GADAF,EAAmB3B,cAAclW,GACN,MAAvB2X,EAAWl07B,SAAkB,CAC7B,IAAIu07B,EAAaZ,GACbO,EAAWK,WACXA,EAAWpz1B,KAAK+y1B,EAAWK,YAG3BA,EAAWpz1B,KAAK9/H,KAAKmkP,mBAEpBipuB,GACD8F,EAAWpnB,eAAe9r8B,KAAK4iI,WAE/B5iI,KAAK8x9B,sBACL9x9B,KAAK8x9B,sBAAsBO,GAAmBQ,EAAYK,GAG1DpB,GAAsBO,GAAmBQ,EAAYK,GAEzDH,EAAmB9u9B,EAAIou9B,GAAkBpu9B,EACzC8u9B,EAAmB/v9B,EAAIqv9B,GAAkBrv9B,EACzCgiP,EAAYqtuB,GAAkB9tM,MAC9B0tM,EAAoBI,GAAkBl/O,cACtC,IAAIggP,EAAaN,EAAW737B,OAC5B,GAAIm47B,GAAqC,MAAvBN,EAAWts2B,SAAkB,CAC3C,IAAI6s2B,OAAa,EACbC,OAAa,EACE,WAAfF,GACAC,EAAgC,GAAnBF,EAAWn07B,MACxBs07B,EAAiC,GAApBH,EAAWl07B,SAGxBo07B,EAAavB,GAAasB,EAAW,GAAID,EAAWn07B,OACpDs07B,EAAaxB,GAAasB,EAAW,GAAID,EAAWl07B,SAExDi07B,GAAc,EACdF,EAAmBpmyB,SAAWomyB,EAAmB9u9B,EAAImv9B,GAAchG,EAAU,EAAI8F,EAAWjv9B,GAC5F8u9B,EAAmBnmyB,SAAWmmyB,EAAmB/v9B,EAAIqw9B,GAAcjG,EAAU,EAAI8F,EAAWlw9B,EAChG,CACJ,CAC2B,MAAvB6v9B,EAAWts2B,WACXws2B,EAAmBxs2B,SAAWss2B,EAAWts2B,UAE7C,IAAI+s2B,EAAaT,EAAW1w6B,OACxBmx6B,IACAP,EAAmB9u9B,GAAKqv9B,EAAW,GACnCP,EAAmB/v9B,GAAKsw9B,EAAW,GAC9BL,IACDF,EAAmBpmyB,SAAW2myB,EAAW,GACzCP,EAAmBnmyB,SAAW0myB,EAAW,KAGjD,IAAI5/f,EAAgC,MAArBm/f,EAAWtw2B,OACY,iBAAxBsw2B,EAAWl07B,UAAyBk07B,EAAWl07B,SAASn+B,QAAQ,WAAa,EACrFqy9B,EAAWtw2B,OACbgx2B,EAAwBvz9B,KAAKwz9B,yBAA2Bxz9B,KAAKwz9B,uBAAyB,CAAC,GACvFC,OAAW,EACXC,OAAa,EACbC,OAAa,EACbjggB,GAAY1zd,KAAK4z9B,mBACjBH,EAAWZ,EAAWgB,WACtBH,EAAab,EAAWiB,aACR,MAAZL,GAAiC,SAAbA,IACpBA,EAAWzz9B,KAAK+z9B,qBAEF,MAAdL,GAAqC,SAAfA,IACtBA,EAAa1z9B,KAAKg09B,oBAAoBP,GACtCE,GAAa,KAIjBF,EAAWZ,EAAWoB,YACtBP,EAAab,EAAWqB,cACR,MAAZT,GAAiC,SAAbA,IACpBA,EAAWzz9B,KAAKm09B,kBAEF,MAAdT,GAAqC,SAAfA,IACtBA,EAAa1z9B,KAAKo09B,iBAAiBX,GACnCE,GAAa,KAGrBF,EAAWA,GAAY,UACNF,EAAsBn21B,MAChCs21B,IAAeH,EAAsBn2M,QACrCu2M,IAAeJ,EAAsBI,YACrC3uuB,IAAcuuuB,EAAsBhvM,OACpC0tM,IAAsBsB,EAAsBpgP,gBAC/C6/O,GAAmB,EACnBO,EAAsBn21B,KAAOq21B,EAC7BF,EAAsBn2M,OAASs2M,EAC/BH,EAAsBI,WAAaA,EACnCJ,EAAsBhvM,MAAQv/hB,EAC9BuuuB,EAAsBpgP,cAAgB8+O,EACtC/W,EAAOmZ,oBAAoBd,IAE/BrY,EAAOP,SAAWvB,GACd4Z,GACA9X,EAAOoZ,YAAW,EAE1B,CACJ,EACAzi4B,EAAQnyF,UAAUk09B,gBAAkB,WAChC,OAAO,CACX,EACA/h4B,EAAQnyF,UAAUq09B,kBAAoB,WAClC,MAAO,MACX,EACAli4B,EAAQnyF,UAAUs09B,oBAAsB,SAAUP,GAC9C,MAAO,MACX,EACA5h4B,EAAQnyF,UAAUy09B,eAAiB,WAC/B,OAAOn09B,KAAK+08B,MAAQ/08B,KAAK+08B,KAAKwf,aAAe1E,GAAoBD,EACrE,EACA/93B,EAAQnyF,UAAU009B,iBAAmB,SAAUX,GAC3C,IAAI/50B,EAAkB15I,KAAK+08B,MAAQ/08B,KAAK+08B,KAAKnrtB,qBACzC84tB,EAAsC,iBAApBhp0B,GAAgCntH,GAAMmtH,GACvDgp0B,IACDA,EAAW,CAAC,IAAK,IAAK,IAAK,IAI/B,IAFA,IAAIr9rB,EAAQq9rB,EAAS,GACjB8R,EAASx09B,KAAK+08B,KAAKwf,aACd3z9B,EAAI,EAAGA,EAAI,EAAGA,IACnB8h9B,EAAS9h9B,GAAK8h9B,EAAS9h9B,GAAKykR,GAASmvsB,EAAS,EAAI,MAAQ,EAAInvsB,GAGlE,OADAq9rB,EAAS,GAAK,EACPjp8B,GAAUip8B,EAAU,OAC/B,EACA7w3B,EAAQnyF,UAAUmmM,SAAW,SAAUnkI,EAAIv0B,GAAW,EACtD0kD,EAAQnyF,UAAU+09B,OAAS,SAAU5v8B,EAAK1jB,GAC1B,eAAR0jB,EACA7kB,KAAK009B,cAAcvz9B,GAEN,gBAAR0jB,EACL7kB,KAAK209B,eAAexz9B,GAEP,aAAR0jB,EACL7kB,KAAK409B,YAAYzz9B,GAEJ,UAAR0jB,GACL7kB,KAAKu4K,MAAQv4K,KAAKu4K,OAAS,CAAC,EAC5B8wO,EAAOrpZ,KAAKu4K,MAAOp3K,IAGnBnB,KAAK6kB,GAAO1jB,CAEpB,EACA0wF,EAAQnyF,UAAUyqZ,KAAO,WACrBnqZ,KAAKmoC,QAAS,EACdnoC,KAAK0y9B,YACT,EACA7g4B,EAAQnyF,UAAUujV,KAAO,WACrBjjV,KAAKmoC,QAAS,EACdnoC,KAAK0y9B,YACT,EACA7g4B,EAAQnyF,UAAUuuhB,KAAO,SAAU4mc,EAAU1z9B,GACzC,GAAwB,iBAAb0z9B,EACP709B,KAAKy09B,OAAOI,EAAU1z9B,QAErB,GAAI,GAAS0z9B,GAGd,IAFA,IACIrrB,EAAUl27B,GADJuh9B,GAEDj09B,EAAI,EAAGA,EAAI4o8B,EAAQnp8B,OAAQO,IAAK,CACrC,IAAIikB,EAAM2k7B,EAAQ5o8B,GAClBZ,KAAKy09B,OAAO5v8B,EAAKgw8B,EAAShw8B,GAC9B,CAGJ,OADA7kB,KAAK0y9B,aACE1y9B,IACX,EACA6xF,EAAQnyF,UAAUo19B,yBAA2B,SAAUC,GACnD/09B,KAAKg19B,mBAAmBD,GAExB,IADA,IAAIE,EAAcj19B,KAAKk19B,aACdt09B,EAAI,EAAGA,EAAIZ,KAAKuy9B,UAAUly9B,OAAQO,IAAK,CAC5C,IAAI+xP,EAAW3yP,KAAKuy9B,UAAU3x9B,GAC1Bu09B,EAAsBxiuB,EAASyiuB,sBACnC,KAAIziuB,EAAS62tB,WAAa2L,GAAuBA,IAAwBjD,IAAzE,CAGA,IAAIjrG,EAAat0nB,EAASs0nB,WACtBn32B,EAASm32B,EACPguG,EAAYhuG,GAAcguG,EAChCtiuB,EAAS64tB,OAAO178B,EAJhB,CAKJ,CACJ,EACA+hF,EAAQnyF,UAAUs19B,mBAAqB,SAAUD,GAC7C,IAAIE,EAAcj19B,KAAKk19B,aAClBD,IACDA,EAAcj19B,KAAKk19B,aAAe,CAAC,GAEnCH,EAAQlC,aAAeoC,EAAYpC,aACnCoC,EAAYpC,WAAa7y9B,KAAK6y9B,YAElC7y9B,KAAKq19B,qBAAqBN,EAASE,EAAa9C,GACpD,EACAtg4B,EAAQnyF,UAAU219B,qBAAuB,SAAUN,EAASE,EAAaK,GACrE,IAAK,IAAI109B,EAAI,EAAGA,EAAI009B,EAAYj19B,OAAQO,IAAK,CACzC,IAAIikB,EAAMyw8B,EAAY109B,GACF,MAAhBm09B,EAAQlw8B,IAAkBA,KAAOow8B,IACjCA,EAAYpw8B,GAAO7kB,KAAK6kB,GAEhC,CACJ,EACAgtE,EAAQnyF,UAAU619B,SAAW,WACzB,OAAOv19B,KAAKwy9B,cAAcny9B,OAAS,CACvC,EACAwxF,EAAQnyF,UAAU4kH,SAAW,SAAU55G,GACnC,OAAO1K,KAAKqvgB,OAAO3kgB,EACvB,EACAmnF,EAAQnyF,UAAU819B,YAAc,SAAU9q9B,GACtC,IAAI2kgB,EAASrvgB,KAAKqvgB,OAIlB,OAHKA,EAAO3kgB,KACR2kgB,EAAO3kgB,GAAQ,CAAC,GAEb2kgB,EAAO3kgB,EAClB,EACAmnF,EAAQnyF,UAAU+19B,YAAc,SAAUC,GACtC119B,KAAK83P,SAASo6tB,IAAwB,EAAOwD,EACjD,EACA7j4B,EAAQnyF,UAAUo4P,SAAW,SAAUkkU,EAAW25Z,EAAmBD,EAAaE,GAC9E,IAAIC,EAAgB75Z,IAAck2Z,GAElC,GADgBly9B,KAAKu19B,aACHM,EAAlB,CAGA,IAAIrD,EAAgBxy9B,KAAKwy9B,cACrBsD,EAAe919B,KAAK+19B,gBACxB,KAAIv19B,EAAQgy9B,EAAex2Z,IAAc,KAAM25Z,GAA8C,IAAzBnD,EAAcny9B,OAAlF,CAGA,IAAIsL,EAOJ,GANI3L,KAAKg29B,aAAeH,IACpBlq9B,EAAQ3L,KAAKg29B,WAAWh6Z,IAEvBrwjB,IACDA,EAAS3L,KAAKqvgB,QAAUrvgB,KAAKqvgB,OAAO2sD,IAEnCrwjB,GAAUkq9B,EAAf,CAIKA,GACD719B,KAAK809B,yBAAyBnp9B,GAElC,IAAIsq9B,KAAoBtq9B,GAASA,EAAMuq9B,YAAeN,GAClDK,GACAj29B,KAAKm29B,uBAAsB,GAE/Bn29B,KAAKo29B,eAAep6Z,EAAWrwjB,EAAO3L,KAAKk19B,aAAcS,GAAoBD,IAAgB119B,KAAKq29B,WAAaP,GAAgBA,EAAazw6B,SAAW,EAAGyw6B,GAC1J,IAAI9o4B,EAAchtF,KAAK4y9B,aACnB5X,EAAYh78B,KAAKs29B,WAyBrB,OAxBItp4B,GACAA,EAAY8qK,SAASkkU,EAAW25Z,EAAmBD,EAAaO,GAEhEjb,GACAA,EAAUljtB,SAASkkU,EAAW25Z,EAAmBD,EAAaO,GAE9DJ,GACA719B,KAAKwy9B,cAAgB,GACrBxy9B,KAAKk19B,aAAe,CAAC,GAGhBS,EAID319B,KAAKwy9B,cAAc3w9B,KAAKm6jB,GAHxBh8jB,KAAKwy9B,cAAgB,CAACx2Z,GAM9Bh8jB,KAAKu29B,0BACLv29B,KAAK0y9B,cACAuD,GAAiBj29B,KAAKq29B,YACvBr29B,KAAKm29B,uBAAsB,GAC3Bn29B,KAAK268B,UAAYvB,IAEdzt8B,CAnCP,CAFIk97B,EAAS,SAAW7sY,EAAY,eATpC,CALA,CAoDJ,EACAnqe,EAAQnyF,UAAU829B,UAAY,SAAUnnd,EAAQqmd,EAAaE,GACzD,GAAKvmd,EAAOhvgB,OAGP,CACD,IAAIo29B,EAAe,GACfjE,EAAgBxy9B,KAAKwy9B,cACrB3z1B,EAAMwwY,EAAOhvgB,OACbq29B,EAAY731B,IAAQ2z1B,EAAcny9B,OACtC,GAAIq29B,EACA,IAAK,IAAI919B,EAAI,EAAGA,EAAIi+H,EAAKj+H,IACrB,GAAIyugB,EAAOzugB,KAAO4x9B,EAAc5x9B,GAAI,CAChC819B,GAAY,EACZ,KACJ,CAGR,GAAIA,EACA,OAEJ,IAAS919B,EAAI,EAAGA,EAAIi+H,EAAKj+H,IAAK,CAC1B,IAAIo7jB,EAAY3sD,EAAOzugB,GACnB+19B,OAAW,EACX329B,KAAKg29B,aACLW,EAAW329B,KAAKg29B,WAAWh6Z,EAAW3sD,IAErCsnd,IACDA,EAAW329B,KAAKqvgB,OAAO2sD,IAEvB26Z,GACAF,EAAa509B,KAAK809B,EAE1B,CACA,IAAIC,EAAeH,EAAa531B,EAAM,GAClCo31B,KAAoBW,GAAgBA,EAAaV,YAAeN,GAChEK,GACAj29B,KAAKm29B,uBAAsB,GAE/B,IAAIU,EAAc729B,KAAK829B,aAAaL,GAChCX,EAAe919B,KAAK+19B,gBACxB/19B,KAAK809B,yBAAyB+B,GAC9B729B,KAAKo29B,eAAe/md,EAAOxigB,KAAK,KAAMgq9B,EAAa729B,KAAKk19B,cAAc,GAAQQ,IAAgB119B,KAAKq29B,WAAaP,GAAgBA,EAAazw6B,SAAW,EAAGyw6B,GAC3J,IAAI9o4B,EAAchtF,KAAK4y9B,aACnB5X,EAAYh78B,KAAKs29B,WACjBtp4B,GACAA,EAAYwp4B,UAAUnnd,EAAQqmd,EAAaO,GAE3Cjb,GACAA,EAAUwb,UAAUnnd,EAAQqmd,EAAaO,GAE7Cj29B,KAAKu29B,0BACLv29B,KAAKwy9B,cAAgBnjd,EAAOttgB,QAC5B/B,KAAK0y9B,cACAuD,GAAiBj29B,KAAKq29B,YACvBr29B,KAAKm29B,uBAAsB,GAC3Bn29B,KAAK268B,UAAYvB,GAEzB,MAvDIp58B,KAAKy19B,aAwDb,EACA5j4B,EAAQnyF,UAAU629B,wBAA0B,WACxC,IAAK,IAAI319B,EAAI,EAAGA,EAAIZ,KAAKuy9B,UAAUly9B,OAAQO,IAAK,CAC5C,IAAI+xP,EAAW3yP,KAAKuy9B,UAAU3x9B,GAC1B+xP,EAASs0nB,YACTt0nB,EAAS+2tB,aAAa1p9B,KAAK2yP,EAASs0nB,YAE5C,CACJ,EACAp1xB,EAAQnyF,UAAUq39B,YAAc,SAAUpr9B,GACtC,IAAImvW,EAAMt6W,EAAQR,KAAKwy9B,cAAe7m9B,GACtC,GAAImvW,GAAO,EAAG,CACV,IAAI03mB,EAAgBxy9B,KAAKwy9B,cAAczw9B,QACvCyw9B,EAAcvv8B,OAAO63V,EAAK,GAC1B96W,KAAKw29B,UAAUhE,EACnB,CACJ,EACA3g4B,EAAQnyF,UAAU01a,aAAe,SAAUuyS,EAAU1upB,EAAU+95B,GAC3D,IAAIxE,EAAgBxy9B,KAAKwy9B,cAAczw9B,QACnC+4W,EAAMt6W,EAAQgy9B,EAAe7qQ,GAC7BsvQ,EAAiBz29B,EAAQgy9B,EAAev55B,IAAa,EACrD6hT,GAAO,EACFm8mB,EAIDzE,EAAcvv8B,OAAO63V,EAAK,GAH1B03mB,EAAc13mB,GAAO7hT,EAMpB+95B,IAAaC,GAClBzE,EAAc3w9B,KAAKo3D,GAEvBj5D,KAAKw29B,UAAUhE,EACnB,EACA3g4B,EAAQnyF,UAAUw39B,YAAc,SAAUvr9B,EAAOqX,GACzCA,EACAhjB,KAAK83P,SAASnsP,GAAO,GAGrB3L,KAAK+29B,YAAYpr9B,EAEzB,EACAkmF,EAAQnyF,UAAUo39B,aAAe,SAAUznd,GAGvC,IAFA,IACI8nd,EADAN,EAAc,CAAC,EAEVj29B,EAAI,EAAGA,EAAIyugB,EAAOhvgB,OAAQO,IAAK,CACpC,IAAI+K,EAAQ0jgB,EAAOzugB,GACnByoZ,EAAOwtkB,EAAalr9B,GAChBA,EAAMkn9B,YAENxpkB,EADA8tkB,EAAmBA,GAAoB,CAAC,EACfxr9B,EAAMkn9B,WAEvC,CAIA,OAHIsE,IACAN,EAAYhE,WAAasE,GAEtBN,CACX,EACAhl4B,EAAQnyF,UAAU029B,eAAiB,SAAUp6Z,EAAWrwjB,EAAOsp9B,EAAaU,EAAmB7t2B,EAAYgu2B,GACvG,IAAIsB,IAAyBzr9B,GAASgq9B,GAClChq9B,GAASA,EAAMkn9B,YACf7y9B,KAAK6y9B,WAAaxpkB,EAAO,CAAC,EAAGsskB,EAAoB319B,KAAK6y9B,WAAaoC,EAAYpC,YAC/ExpkB,EAAOrpZ,KAAK6y9B,WAAYln9B,EAAMkn9B,aAEzBuE,GACDnC,EAAYpC,aACZ7y9B,KAAK6y9B,WAAaoC,EAAYpC,YAKtC,IAFA,IAAIwE,EAAmB,CAAC,EACpBC,GAAgB,EACX129B,EAAI,EAAGA,EAAIux9B,GAAoB9x9B,OAAQO,IAAK,CACjD,IAAIikB,EAAMst8B,GAAoBvx9B,GAC1B229B,EAAsBzv2B,GAAcsq2B,GAAuBvt8B,GAC3DlZ,GAAuB,MAAdA,EAAMkZ,GACX0y8B,GACAD,GAAgB,EAChBD,EAAiBxy8B,GAAOlZ,EAAMkZ,IAG9B7kB,KAAK6kB,GAAOlZ,EAAMkZ,GAGjBuy8B,GACmB,MAApBnC,EAAYpw8B,KACR0y8B,GACAD,GAAgB,EAChBD,EAAiBxy8B,GAAOow8B,EAAYpw8B,IAGpC7kB,KAAK6kB,GAAOow8B,EAAYpw8B,GAIxC,CACA,IAAKijG,EACD,IAASlnH,EAAI,EAAGA,EAAIZ,KAAKuy9B,UAAUly9B,OAAQO,IAAK,CAC5C,IAAI+xP,EAAW3yP,KAAKuy9B,UAAU3x9B,GAC1Bqm3B,EAAat0nB,EAASs0nB,WACrBt0nB,EAAS62tB,WACV72tB,EAASg5tB,mBAAmB1kG,GACrBt72B,GAASsp9B,GAAahuG,GACtBt72B,GAASsp9B,EAExB,CAEAqC,GACAt39B,KAAKw39B,iBAAiBx7Z,EAAWq7Z,EAAkBvB,EAE3D,EACAjk4B,EAAQnyF,UAAU+39B,iBAAmB,SAAUC,GAC3C,KAAIA,EAAY3iB,MAAS2iB,EAAYrrB,eAMjCqrB,IAAgB139B,KAApB,CAMA,IAAIuY,EAAKvY,KAAK+08B,KACVx87B,GACAm/8B,EAAYC,YAAYp/8B,GAE5Bm/8B,EAAY3iB,KAAOx87B,EACnBm/8B,EAAYrrB,aAAers8B,IAN3B,CAOJ,EACA6xF,EAAQnyF,UAAUk49B,iBAAmB,SAAUF,GACvCA,EAAY3iB,MACZ2iB,EAAYG,iBAAiBH,EAAY3iB,MAE7C2iB,EAAY3iB,KAAO,KACnB2iB,EAAYrrB,aAAe,IAC/B,EACAx62B,EAAQnyF,UAAUg38B,YAAc,WAC5B,OAAO128B,KAAK839B,SAChB,EACAjm4B,EAAQnyF,UAAUk19B,YAAc,SAAUnpM,GAClCzrxB,KAAK839B,WAAa939B,KAAK839B,YAAcrsM,GACrCzrxB,KAAK+39B,iBAET/39B,KAAKy39B,iBAAiBhsM,GACtBzrxB,KAAK839B,UAAYrsM,EACjBzrxB,KAAK0y9B,YACT,EACA7g4B,EAAQnyF,UAAUq49B,eAAiB,WAC/B,IAAItsM,EAAWzrxB,KAAK839B,UAChBrsM,IACAzrxB,KAAK439B,iBAAiBnsM,GACtBzrxB,KAAK839B,UAAY,KACjB939B,KAAK0y9B,aAEb,EACA7g4B,EAAQnyF,UAAUitF,eAAiB,WAC/B,OAAO3sF,KAAK4y9B,YAChB,EACA/g4B,EAAQnyF,UAAUi19B,eAAiB,SAAUzZ,GACzC,IAAI8c,EAAsBh49B,KAAK4y9B,aAC3BoF,IAAwB9c,IAGxB8c,GAAuBA,IAAwB9c,GAC/Cl78B,KAAKi49B,oBAOT/c,EAAO6X,mBAAqB,IAAI,GAChC/y9B,KAAKy39B,iBAAiBvc,GACtBl78B,KAAK4y9B,aAAe1X,EACpBl78B,KAAK0y9B,aACT,EACA7g4B,EAAQnyF,UAAUg19B,cAAgB,SAAUwD,GACnCl49B,KAAK6y9B,aACN7y9B,KAAK6y9B,WAAa,CAAC,GAEvBxpkB,EAAOrpZ,KAAK6y9B,WAAYqF,GACxBl49B,KAAK0y9B,YACT,EACA7g4B,EAAQnyF,UAAUy49B,iBAAmB,WACjCn49B,KAAK6y9B,WAAa,KAClB7y9B,KAAK0y9B,YACT,EACA7g4B,EAAQnyF,UAAUu49B,kBAAoB,WAClC,IAAI/c,EAASl78B,KAAK4y9B,aACd1X,IACAA,EAAO6X,mBAAqB,KAC5B/y9B,KAAK439B,iBAAiB1c,GACtBl78B,KAAK4y9B,aAAe,KACpB5y9B,KAAKwz9B,uBAAyB,KAC9Bxz9B,KAAK0y9B,aAEb,EACA7g4B,EAAQnyF,UAAUu78B,iBAAmB,WACjC,OAAOj78B,KAAKs29B,UAChB,EACAzk4B,EAAQnyF,UAAU049B,iBAAmB,SAAUC,GACvCr49B,KAAKs29B,YAAct29B,KAAKs29B,aAAe+B,GACvCr49B,KAAKs49B,sBAETt49B,KAAKy39B,iBAAiBY,GACtBr49B,KAAKs29B,WAAa+B,EAClBr49B,KAAK0y9B,YACT,EACA7g4B,EAAQnyF,UAAU449B,oBAAsB,WACpC,IAAItd,EAAYh78B,KAAKs29B,WACjBtb,IACAh78B,KAAK439B,iBAAiB5c,GACtBh78B,KAAKs29B,WAAa,KAClBt29B,KAAK0y9B,aAEb,EACA7g4B,EAAQnyF,UAAUgz9B,WAAa,WAC3B1y9B,KAAK268B,SAAWvB,GAChB,IAAI7g8B,EAAKvY,KAAK+08B,KACVx87B,IACIvY,KAAKq29B,UACL998B,EAAGgg9B,eAGHhg9B,EAAG4yiB,WAGPnrjB,KAAKqs8B,cACLrs8B,KAAKqs8B,aAAaqmB,YAE1B,EACA7g4B,EAAQnyF,UAAUomwB,MAAQ,WACtB9lwB,KAAK0y9B,YACT,EACA7g4B,EAAQnyF,UAAUy29B,sBAAwB,SAAUqC,GAChDx49B,KAAKq29B,UAAYmC,EACjB,IAAIxr4B,EAAchtF,KAAK4y9B,aACnB5X,EAAYh78B,KAAKs29B,WACjBtp4B,IACAA,EAAYqp4B,UAAYmC,GAExBxd,IACAA,EAAUqb,UAAYmC,EAE9B,EACA3m4B,EAAQnyF,UAAUi49B,YAAc,SAAUp/8B,GACtC,GAAIvY,KAAK+08B,OAASx87B,EAAlB,CAGAvY,KAAK+08B,KAAOx87B,EACZ,IAAIg68B,EAAYvy9B,KAAKuy9B,UACrB,GAAIA,EACA,IAAK,IAAI3x9B,EAAI,EAAGA,EAAI2x9B,EAAUly9B,OAAQO,IAClC2X,EAAGw3O,UAAUk8tB,YAAYsG,EAAU3x9B,IAGvCZ,KAAK839B,WACL939B,KAAK839B,UAAUH,YAAYp/8B,GAE3BvY,KAAK4y9B,cACL5y9B,KAAK4y9B,aAAa+E,YAAYp/8B,GAE9BvY,KAAKs29B,YACLt29B,KAAKs29B,WAAWqB,YAAYp/8B,EAfhC,CAiBJ,EACAs5E,EAAQnyF,UAAUm49B,iBAAmB,SAAUt/8B,GAC3C,GAAKvY,KAAK+08B,KAAV,CAGA/08B,KAAK+08B,KAAO,KACZ,IAAIwd,EAAYvy9B,KAAKuy9B,UACrB,GAAIA,EACA,IAAK,IAAI3x9B,EAAI,EAAGA,EAAI2x9B,EAAUly9B,OAAQO,IAClC2X,EAAGw3O,UAAUm8tB,eAAeqG,EAAU3x9B,IAG1CZ,KAAK839B,WACL939B,KAAK839B,UAAUD,iBAAiBt/8B,GAEhCvY,KAAK4y9B,cACL5y9B,KAAK4y9B,aAAaiF,iBAAiBt/8B,GAEnCvY,KAAKs29B,YACLt29B,KAAKs29B,WAAWuB,iBAAiBt/8B,EAfrC,CAiBJ,EACAs5E,EAAQnyF,UAAU8uP,QAAU,SAAU3pO,EAAKg4N,EAAM+ruB,GAC7C,IAAI948B,EAAS+U,EAAM7kB,KAAK6kB,GAAO7kB,KAU3B2yP,EAAW,IAAI,GAAS7iP,EAAQ+sO,EAAM+ruB,GAG1C,OAFA/j8B,IAAQ8tO,EAASs0nB,WAAapi2B,GAC9B7kB,KAAKis9B,YAAYt5tB,EAAU9tO,GACpB8tO,CACX,EACA9gK,EAAQnyF,UAAUus9B,YAAc,SAAUt5tB,EAAU9tO,GAChD,IAAItM,EAAKvY,KAAK+08B,KACVl7zB,EAAK75I,KACT2yP,EAASw4tB,QAAO,WACZtx0B,EAAG4+0B,sBAAsB5z8B,EAC7B,IAAG3jB,MAAK,WACJ,IAAIqx9B,EAAY140B,EAAG040B,UACfz3mB,EAAMt6W,EAAQ+x9B,EAAW5/tB,GACzBmoH,GAAO,GACPy3mB,EAAUtv8B,OAAO63V,EAAK,EAE9B,IACA96W,KAAKuy9B,UAAU1w9B,KAAK8wP,GAChBp6O,GACAA,EAAGw3O,UAAUk8tB,YAAYt5tB,GAE7Bp6O,GAAMA,EAAGmg9B,QACb,EACA7m4B,EAAQnyF,UAAU+49B,sBAAwB,SAAU5z8B,GAChD7kB,KAAK0y9B,YACT,EACA7g4B,EAAQnyF,UAAUi59B,cAAgB,SAAUvq8B,EAAO887B,GAI/C,IAHA,IAAIqH,EAAYvy9B,KAAKuy9B,UACjB1z1B,EAAM0z1B,EAAUly9B,OAChBu49B,EAAgB,GACXh49B,EAAI,EAAGA,EAAIi+H,EAAKj+H,IAAK,CAC1B,IAAI+xP,EAAW4/tB,EAAU3x9B,GACpBwtB,GAASA,IAAUukO,EAASvkO,MAI7Bwq8B,EAAc/29B,KAAK8wP,GAHnBA,EAAS5iN,KAAKm76B,EAKtB,CAEA,OADAlr9B,KAAKuy9B,UAAYqG,EACV549B,IACX,EACA6xF,EAAQnyF,UAAUm59B,UAAY,SAAU/o9B,EAAQoo9B,EAAK910B,GACjDy20B,GAAU749B,KAAM8P,EAAQoo9B,EAAK910B,EACjC,EACAvwD,EAAQnyF,UAAUo59B,YAAc,SAAUhp9B,EAAQoo9B,EAAK910B,GACnDy20B,GAAU749B,KAAM8P,EAAQoo9B,EAAK910B,GAAgB,EACjD,EACAvwD,EAAQnyF,UAAU839B,iBAAmB,SAAUx7Z,EAAWlsjB,EAAQoo9B,EAAK910B,GAEnE,IADA,IAAImw0B,EAAYsG,GAAU749B,KAAM8P,EAAQoo9B,EAAK910B,GACpCxhJ,EAAI,EAAGA,EAAI2x9B,EAAUly9B,OAAQO,IAClC2x9B,EAAU3x9B,GAAGw09B,sBAAwBp5Z,CAE7C,EACAnqe,EAAQnyF,UAAUykP,gBAAkB,WAChC,OAAO,IACX,EACAtyJ,EAAQnyF,UAAUq59B,aAAe,WAC7B,OAAO,IACX,EACAln4B,EAAQw/3B,iBAAmB,WACvB,IAAI2H,EAAUnn4B,EAAQnyF,UAkBtB,SAASu59B,EAAqBp08B,EAAKm8uB,EAAY+0C,EAAMC,GAsBjD,SAASkjL,EAAa929B,EAAMigH,GACxB/iH,OAAO4D,eAAem/G,EAAK,EAAG,CAC1Bl/G,IAAK,WACD,OAAOf,EAAK2zyB,EAChB,EACA9pyB,IAAK,SAAUyxK,GACXt7K,EAAK2zyB,GAAQr4nB,CACjB,IAEJp+K,OAAO4D,eAAem/G,EAAK,EAAG,CAC1Bl/G,IAAK,WACD,OAAOf,EAAK4zyB,EAChB,EACA/pyB,IAAK,SAAUyxK,GACXt7K,EAAK4zyB,GAAQt4nB,CACjB,GAER,CAtCAp+K,OAAO4D,eAAe819B,EAASn08B,EAAK,CAChC1hB,IAAK,WAQD,OAJKnD,KAAKghwB,IAENk4N,EAAal59B,KADHA,KAAKghwB,GAAc,IAG1BhhwB,KAAKghwB,EAChB,EACA/0vB,IAAK,SAAUo2G,GAIXriH,KAAK+1yB,GAAQ1zrB,EAAI,GACjBriH,KAAKg2yB,GAAQ3zrB,EAAI,GACjBriH,KAAKghwB,GAAc3+oB,EACnB622B,EAAal59B,KAAMqiH,EACvB,GAoBR,CAzDA222B,EAAQzs9B,KAAO,UACfys9B,EAAQtu9B,KAAO,GACfsu9B,EAAQ7w7B,OACJ6w7B,EAAQ5kf,OACJ4kf,EAAQj2Q,QACJi2Q,EAAQzykB,UACJyykB,EAAQ1ja,SACJ0ja,EAAQviB,WACJuiB,EAAQ3C,WAAY,EAC5C2C,EAAQre,QAAUvB,GAiDd958B,OAAO4D,iBACP+19B,EAAqB,WAAY,aAAc,IAAK,KACpDA,EAAqB,QAAS,eAAgB,SAAU,UACxDA,EAAqB,SAAU,gBAAiB,UAAW,WAElE,CAjE0B,GAkEpBpn4B,CACX,CA1yBc,GA6yBd,SAASgn4B,GAAUM,EAAYrp9B,EAAQoo9B,EAAK910B,EAAgB9nF,GAExD,IAAIi45B,EAAY,GAChB6G,GAAiBD,EAAY,GAAIA,EAAYrp9B,EAF7Coo9B,EAAMA,GAAO,CAAC,EAE4C910B,EAAgBmw0B,EAAWj45B,GACrF,IAAI++5B,EAAc9G,EAAUly9B,OACxBi59B,GAAe,EACfC,EAAUrB,EAAIh39B,KACds49B,EAAatB,EAAIzu8B,QACjBgw8B,EAAS,WACTH,GAAe,IACfD,GACmB,IACfC,EACOC,GAAWA,IACXC,GAAcA,IAE7B,EACIE,EAAY,aACZL,GACmB,IACfC,EACOC,GAAWA,IACXC,GAAcA,IAE7B,EACKH,GACDE,GAAWA,IAEXhH,EAAUly9B,OAAS,GAAK639B,EAAI/M,QAC5BoH,EAAU,GAAGpH,QAAO,SAAUr78B,EAAQ2w8B,GAClCyX,EAAI/M,OAAO1K,EACf,IAEJ,IAAK,IAAI7/8B,EAAI,EAAGA,EAAI2x9B,EAAUly9B,OAAQO,IAAK,CACvC,IAAI+xP,EAAW4/tB,EAAU3x9B,GACrB649B,GACA9muB,EAASzxP,KAAKu49B,GAEdC,GACA/muB,EAASlpO,QAAQiw8B,GAEjBxB,EAAI534B,OACJqyK,EAASttM,SAAS6y6B,EAAI7y6B,UAE1BstM,EAASnsN,MAAM0x7B,EAAIrt2B,OACvB,CACA,OAAO0n2B,CACX,CACA,SAASoH,GAAe9x9B,EAAQiI,EAAQ+uH,GACpC,IAAK,IAAIj+H,EAAI,EAAGA,EAAIi+H,EAAKj+H,IACrBiH,EAAOjH,GAAKkP,EAAOlP,EAE3B,CAIA,SAASg59B,GAAU9p9B,EAAQjI,EAAQgd,GAC/B,GAAIkl7B,EAAYli8B,EAAOgd,IAInB,GAHKkl7B,EAAYj67B,EAAO+U,MACpB/U,EAAO+U,GAAO,IAEd5D,GAAapZ,EAAOgd,IAAO,CAC3B,IAAIg6G,EAAMh3H,EAAOgd,GAAKxkB,OAClByP,EAAO+U,GAAKxkB,SAAWw+H,IACvB/uH,EAAO+U,GAAO,IAAKhd,EAAOgd,GAAgB,YAAEg6G,GAC5C861B,GAAe7p9B,EAAO+U,GAAMhd,EAAOgd,GAAMg6G,GAEjD,KACK,CACD,IAAIg71B,EAAYhy9B,EAAOgd,GACnBuj8B,EAAYt48B,EAAO+U,GACnB6g8B,EAAOmU,EAAUx59B,OACrB,GAlBD0p8B,EAkBe8vB,EAlBG,IAoBb,IADA,IAAIlU,EAAOkU,EAAU,GAAGx59B,OACfO,EAAI,EAAGA,EAAI8k9B,EAAM9k9B,IACjBwn9B,EAAUxn9B,GAIX+49B,GAAevR,EAAUxn9B,GAAIi59B,EAAUj59B,GAAI+k9B,GAH3CyC,EAAUxn9B,GAAKnB,MAAMC,UAAUqC,MAAMnC,KAAKi69B,EAAUj59B,SAQ5D+49B,GAAevR,EAAWyR,EAAWnU,GAEzC0C,EAAU/n9B,OAASw59B,EAAUx59B,MACjC,MAGAyP,EAAO+U,GAAOhd,EAAOgd,EAE7B,CAiBA,SAASu08B,GAAiBD,EAAYW,EAAQC,EAAYjq9B,EAAQoo9B,EAAK910B,EAAgBmw0B,EAAWj45B,GAS9F,IARA,IAAI0/5B,EAAa1m9B,GAAKxD,GAClBu1C,EAAW6y6B,EAAI7y6B,SACflE,EAAQ+26B,EAAI/26B,MACZ846B,EAAW/B,EAAI+B,SACfC,EAAahC,EAAIgC,WACjBC,GAAc,GAAS/30B,GACvBg40B,EAAkBjB,EAAW5G,UAC7B8H,EAAgB,GACX329B,EAAI,EAAGA,EAAIs29B,EAAW359B,OAAQqD,IAAK,CACxC,IAAI429B,EAAWN,EAAWt29B,GACtB629B,EAAYzq9B,EAAOwq9B,GACvB,GAAiB,MAAbC,GAA6C,MAAxBR,EAAWO,KAC5BH,GAAc/30B,EAAek40B,IACjC,IAAI,GAASC,IACLxwB,EAAYwwB,IACZtwB,GAAiBswB,GAWrBF,EAAcx49B,KAAKy49B,OAXc,CACjC,GAAIR,EAAQ,CACHx/5B,IACDy/5B,EAAWO,GAAYC,EACvBpB,EAAWV,sBAAsBqB,IAErC,QACJ,CACAV,GAAiBD,EAAYmB,EAAUP,EAAWO,GAAWC,EAAWrC,EAAK910B,GAAkBA,EAAek40B,GAAW/H,EAAWj45B,EACxI,MAKMA,IACNy/5B,EAAWO,GAAYC,EACvBpB,EAAWV,sBAAsBqB,GACjCO,EAAcx49B,KAAKy49B,GAE3B,CACA,IAAIE,EAASH,EAAch69B,OAC3B,IAAK459B,GAAYO,EACb,IAAK,IAAI559B,EAAI,EAAGA,EAAIw59B,EAAgB/59B,OAAQO,IAExC,IADI+xP,EAAWynuB,EAAgBx59B,IAClBqm3B,aAAe6yG,GACPnnuB,EAAS24tB,WAAW+O,GACrB,CACZ,IAAIv/mB,EAAMt6W,EAAQ459B,EAAiBznuB,GACnCynuB,EAAgBn38B,OAAO63V,EAAK,EAChC,CAQZ,GAJKo9mB,EAAI534B,QACL+54B,EAAgBxt8B,GAAOwt8B,GAAe,SAAUx18B,GAAO,SAlE1Cy5c,EAkE8Dxud,EAAO+U,OAlE/D05c,EAkEqEw7f,EAAWl18B,KAhEhGkl7B,EAAYzre,IAASyre,EAAYxre,IAE5C,SAAuBwnf,EAAMj9mB,GACzB,IAAIjqO,EAAMkn1B,EAAK1l9B,OACf,GAAIw+H,IAAQiqO,EAAKzoW,OACb,OAAO,EAEX,IAAK,IAAIO,EAAI,EAAGA,EAAIi+H,EAAKj+H,IACrB,GAAIml9B,EAAKnl9B,KAAOkoW,EAAKloW,GACjB,OAAO,EAGf,OAAO,CACX,CAbqD659B,CAAcn8f,EAAMC,IAFzE,IAAqBD,EAAMC,CAkEuF,IAC1Gi8f,EAASH,EAAch69B,QAEvBm69B,EAAS,GACLtC,EAAI534B,QAAUiy4B,EAAUly9B,OAAS,CACrC,IA2BIsyP,EA3BA+nuB,OAAiB,EACjBC,OAAiB,EACjBC,OAAc,EAClB,GAAItg6B,EAKA,IAJAqg6B,EAAiB,CAAC,EACdT,IACAQ,EAAiB,CAAC,GAEb959B,EAAI,EAAGA,EAAI459B,EAAQ559B,IAExB+59B,EADIL,EAAWD,EAAcz59B,IACFm59B,EAAWO,GAClCJ,EACAQ,EAAeJ,GAAYxq9B,EAAOwq9B,GAGlCP,EAAWO,GAAYxq9B,EAAOwq9B,QAIrC,GAAIJ,EAEL,IADAU,EAAc,CAAC,EACNh69B,EAAI,EAAGA,EAAI459B,EAAQ559B,IAExBg69B,EADIN,EAAWD,EAAcz59B,IACLsl9B,GAAW6T,EAAWO,IAC9CV,GAAUG,EAAYjq9B,EAAQwq9B,IAGlC3nuB,EAAW,IAAI,GAASonuB,GAAY,GAAO,EAAOE,EAAWpt8B,GAAOut8B,GAAiB,SAAUznuB,GAAY,OAAOA,EAASs0nB,aAAe6yG,CAAQ,IAAK,OAClJ7yG,WAAa6yG,EAClB5B,EAAI9p8B,QACJukO,EAASvkO,MAAQ8p8B,EAAI9p8B,OAErB8r8B,GAAcQ,GACd/nuB,EAASi3tB,aAAa,EAAG8Q,EAAgBL,GAEzCO,GACAjouB,EAASi3tB,aAAa,EAAGgR,EAAaP,GAE1C1nuB,EAASi3tB,aAAyB,MAAZvk6B,EAAmB,IAAMA,EAAUiV,EAAUqg6B,EAAiB7q9B,EAAQuq9B,GAAel56B,MAAMA,GAAS,GAC1Hg46B,EAAWlN,YAAYt5tB,EAAUmnuB,GACjCvH,EAAU1w9B,KAAK8wP,EACnB,CACJ,CAhNAk3sB,EAAMh42B,GAAS,IACfg42B,EAAMh42B,GAAS,IAgNf,YCzgCA,IAAIwzqB,GAAS,SAAU38Y,GAEnB,SAAS28Y,EAAMhptB,GACX,IAAIqQ,EAAQg8T,EAAO9oX,KAAKI,OAASA,KAIjC,OAHA0sD,EAAMq2pB,SAAU,EAChBr2pB,EAAMm/H,UAAY,GAClBn/H,EAAMuhe,KAAK5xe,GACJqQ,CACX,CAmKA,OA1KA,GAAU24sB,EAAO38Y,GAQjB28Y,EAAM3lwB,UAAUg78B,YAAc,WAC1B,OAAO168B,KAAK6rL,SAChB,EACAw5kB,EAAM3lwB,UAAUsgC,SAAW,WACvB,OAAOhgC,KAAK6rL,UAAU9pL,OAC1B,EACAsjwB,EAAM3lwB,UAAUm79B,QAAU,SAAU//mB,GAChC,OAAO96W,KAAK6rL,UAAUivL,EAC1B,EACAuqZ,EAAM3lwB,UAAUo79B,YAAc,SAAUpw9B,GAEpC,IADA,IAAIs1B,EAAWhgC,KAAK6rL,UACXjrL,EAAI,EAAGA,EAAIo/B,EAAS3/B,OAAQO,IACjC,GAAIo/B,EAASp/B,GAAG8J,OAASA,EACrB,OAAOs1B,EAASp/B,EAG5B,EACAykwB,EAAM3lwB,UAAU0kwB,WAAa,WACzB,OAAOpkwB,KAAK6rL,UAAUxrL,MAC1B,EACAglwB,EAAM3lwB,UAAUylB,IAAM,SAAU+kE,GAY5B,OAXIA,GACIA,IAAUlqF,MAAQkqF,EAAMmH,SAAWrxF,OACnCA,KAAK6rL,UAAUhqL,KAAKqoF,GACpBlqF,KAAK+69B,OAAO7w4B,IAQblqF,IACX,EACAqlwB,EAAM3lwB,UAAUs79B,UAAY,SAAU9w4B,EAAOE,GACzC,GAAIF,GAASA,IAAUlqF,MAAQkqF,EAAMmH,SAAWrxF,MACzCoqF,GAAeA,EAAYiH,SAAWrxF,KAAM,CAC/C,IAAIggC,EAAWhgC,KAAK6rL,UAChBivL,EAAM96U,EAASx/B,QAAQ4pF,GACvB0wR,GAAO,IACP96U,EAAS/c,OAAO63V,EAAK,EAAG5wR,GACxBlqF,KAAK+69B,OAAO7w4B,GAEpB,CACA,OAAOlqF,IACX,EACAqlwB,EAAM3lwB,UAAU+M,QAAU,SAAUwu9B,EAAUr9b,GAC1C,IAAI9iL,EAAM,EAAe96W,KAAK6rL,UAAWovyB,GAIzC,OAHIngnB,GAAO,GACP96W,KAAKk79B,UAAUt9b,EAAU9iL,GAEtB96W,IACX,EACAqlwB,EAAM3lwB,UAAUw79B,UAAY,SAAUhx4B,EAAOltE,GACzC,IAAIgjB,EAAWhgC,KAAK6rL,UAChBiuJ,EAAM95S,EAAShjB,GACnB,GAAIktE,GAASA,IAAUlqF,MAAQkqF,EAAMmH,SAAWrxF,MAAQkqF,IAAU4vP,EAAK,CACnE95S,EAAShjB,GAASktE,EAClB4vP,EAAIzoP,OAAS,KACb,IAAI94E,EAAKvY,KAAK+08B,KACVx87B,GACAuhU,EAAI+9oB,iBAAiBt/8B,GAEzBvY,KAAK+69B,OAAO7w4B,EAChB,CACA,OAAOlqF,IACX,EACAqlwB,EAAM3lwB,UAAUq79B,OAAS,SAAU7w4B,GAC3BA,EAAMmH,QACNnH,EAAMmH,OAAOx+D,OAAOq3D,GAExBA,EAAMmH,OAASrxF,KACf,IAAIuY,EAAKvY,KAAK+08B,KACVx87B,GAAMA,IAAO2xE,EAAM6q3B,MACnB7q3B,EAAMyt4B,YAAYp/8B,GAEtBA,GAAMA,EAAG4yiB,SACb,EACAk6M,EAAM3lwB,UAAUmzB,OAAS,SAAUq3D,GAC/B,IAAI3xE,EAAKvY,KAAK+08B,KACV/06B,EAAWhgC,KAAK6rL,UAChBivL,EAAM,EAAe96U,EAAUkqD,GACnC,OAAI4wR,EAAM,IAGV96U,EAAS/c,OAAO63V,EAAK,GACrB5wR,EAAMmH,OAAS,KACX94E,GACA2xE,EAAM2t4B,iBAAiBt/8B,GAE3BA,GAAMA,EAAG4yiB,WAPEnrjB,IASf,EACAqlwB,EAAM3lwB,UAAUmuP,UAAY,WAGxB,IAFA,IAAI7tN,EAAWhgC,KAAK6rL,UAChBtzK,EAAKvY,KAAK+08B,KACLn08B,EAAI,EAAGA,EAAIo/B,EAAS3/B,OAAQO,IAAK,CACtC,IAAIspF,EAAQlqD,EAASp/B,GACjB2X,GACA2xE,EAAM2t4B,iBAAiBt/8B,GAE3B2xE,EAAMmH,OAAS,IACnB,CAEA,OADArxD,EAAS3/B,OAAS,EACXL,IACX,EACAqlwB,EAAM3lwB,UAAUy79B,UAAY,SAAUz55B,EAAIv0B,GAEtC,IADA,IAAInN,EAAWhgC,KAAK6rL,UACXjrL,EAAI,EAAGA,EAAIo/B,EAAS3/B,OAAQO,IAAK,CACtC,IAAIspF,EAAQlqD,EAASp/B,GACrB8gE,EAAG9hE,KAAKutC,EAAS+8C,EAAOtpF,EAC5B,CACA,OAAOZ,IACX,EACAqlwB,EAAM3lwB,UAAUmmM,SAAW,SAAUnkI,EAAIv0B,GACrC,IAAK,IAAIvsC,EAAI,EAAGA,EAAIZ,KAAK6rL,UAAUxrL,OAAQO,IAAK,CAC5C,IAAIspF,EAAQlqF,KAAK6rL,UAAUjrL,GACvB2iB,EAAUm+C,EAAG9hE,KAAKutC,EAAS+8C,GAC3BA,EAAM64nB,UAAYx/rB,GAClB2mE,EAAM27G,SAASnkI,EAAIv0B,EAE3B,CACA,OAAOntC,IACX,EACAqlwB,EAAM3lwB,UAAUi49B,YAAc,SAAUp/8B,GACpCmwW,EAAOhpX,UAAUi49B,YAAY/39B,KAAKI,KAAMuY,GACxC,IAAK,IAAI3X,EAAI,EAAGA,EAAIZ,KAAK6rL,UAAUxrL,OAAQO,IAC3BZ,KAAK6rL,UAAUjrL,GACrB+29B,YAAYp/8B,EAE1B,EACA8svB,EAAM3lwB,UAAUm49B,iBAAmB,SAAUt/8B,GACzCmwW,EAAOhpX,UAAUm49B,iBAAiBj49B,KAAKI,KAAMuY,GAC7C,IAAK,IAAI3X,EAAI,EAAGA,EAAIZ,KAAK6rL,UAAUxrL,OAAQO,IAC3BZ,KAAK6rL,UAAUjrL,GACrBi39B,iBAAiBt/8B,EAE/B,EACA8svB,EAAM3lwB,UAAUykP,gBAAkB,SAAUi3uB,GAKxC,IAJA,IAAIlnB,EAAU,IAAI,GAAa,EAAG,EAAG,EAAG,GACpCl06B,EAAWo77B,GAAmBp79B,KAAK6rL,UACnCwvyB,EAAS,GACT3n4B,EAAO,KACF9yF,EAAI,EAAGA,EAAIo/B,EAAS3/B,OAAQO,IAAK,CACtC,IAAIspF,EAAQlqD,EAASp/B,GACrB,IAAIspF,EAAM/hD,SAAU+hD,EAAMox4B,UAA1B,CAGA,IAAIC,EAAYrx4B,EAAMi6J,kBAClBvhH,EAAY14C,EAAMim4B,kBAAkBkL,GACpCz41B,GACA,GAAakp0B,eAAeoI,EAASqnB,EAAW341B,IAChDlvC,EAAOA,GAAQwg3B,EAAQ3j7B,SAClByyJ,MAAMkxxB,KAGXxg3B,EAAOA,GAAQ6n4B,EAAUhr8B,SACpByyJ,MAAMu4yB,EAVf,CAYJ,CACA,OAAO7n4B,GAAQwg3B,CACnB,EACO7uM,CACX,CA5KY,CA4KV,IACFA,GAAM3lwB,UAAU6M,KAAO,QACvB,YChKA,IAAIiv9B,GAAe,CAAC,EAChBp7wB,GAAY,CAAC,EAuBbq7wB,GAAW,WACX,SAASA,EAAQlw8B,EAAI+/6B,EAAKjv5B,GACtB,IAAIqQ,EAAQ1sD,KACZA,KAAK079B,iBAAmB,GACxB179B,KAAK279B,iBAAmB,EACxB379B,KAAKsrK,eAAgB,EACrBtrK,KAAK479B,oBAAqB,EAC1B579B,KAAK679B,WAAY,EACjBx/6B,EAAOA,GAAQ,CAAC,EAChBr8C,KAAKsr8B,IAAMA,EACXtr8B,KAAKurB,GAAKA,EACV,IAAI0I,EAAU,IAAI,GACd6n8B,EAAez/6B,EAAK6jR,UAAY,SAC/Bs7pB,GAAaM,KACdA,EAAe,GAAYN,IAAc,IAO7Cn/6B,EAAK0/6B,aAAoC,MAArB1/6B,EAAK0/6B,cAEnB1/6B,EAAK0/6B,aACX,IAAI3nB,EAAU,IAAIonB,GAAaM,GAAcxwB,EAAKr36B,EAASooB,EAAM9wB,GAC7Dyw8B,EAAU3/6B,EAAK4/6B,KAAO7nB,EAAQ8nB,QAClCl89B,KAAKi0B,QAAUA,EACfj0B,KAAKo08B,QAAUA,EACf,IAQIE,EARA6nB,EAAgB,EAAI9y4B,MAAS,EAAI9vD,QAAWyi8B,EAE1C,KADA,IAAII,GAAahoB,EAAQioB,kBAAmBjoB,EAAQjkzB,MAEtDms0B,EAAmBjg7B,EAAKig7B,kBACc,MAApBA,GAAiD,SAArBA,EAC5C,EAAI31B,uBACF21B,KAIJhoB,EAAc,GAAiBj45B,EAAKi45B,YAHf,KAKzBt08B,KAAKgwD,QAAU,IAAI,GAAQ/7B,EAASmg7B,EAAS+nB,EAAa/nB,EAAQjkzB,KAAMmkzB,GACxEt08B,KAAK+vP,UAAY,IAAI,GAAU,CAC3B/oG,MAAO,CACHz4E,OAAQyt5B,EAAU,KAAO,WAAc,OAAOtv6B,EAAM6v6B,QAAO,EAAO,KAGrEP,GACDh89B,KAAK+vP,UAAUvpN,OAEvB,CAoJA,OAnJAi17B,EAAQ/79B,UAAUylB,IAAM,SAAU00H,GACzBA,IAGL75I,KAAKi0B,QAAQkn7B,QAAQth0B,GACrBA,EAAG890B,YAAY339B,MACfA,KAAKmrjB,UACT,EACAswa,EAAQ/79B,UAAUmzB,OAAS,SAAUgnH,GAC5BA,IAGL75I,KAAKi0B,QAAQmn7B,QAAQvh0B,GACrBA,EAAGg+0B,iBAAiB739B,MACpBA,KAAKmrjB,UACT,EACAswa,EAAQ/79B,UAAU889B,YAAc,SAAUC,EAAQ3gqB,GAC1C97T,KAAKo08B,QAAQooB,aACbx89B,KAAKo08B,QAAQooB,YAAYC,EAAQ3gqB,GAErC97T,KAAKmrjB,SACT,EACAswa,EAAQ/79B,UAAUg99B,mBAAqB,SAAUhj1B,GACzC15I,KAAKo08B,QAAQsoB,oBACb189B,KAAKo08B,QAAQsoB,mBAAmBhj1B,GAEpC15I,KAAKmrjB,UACLnrjB,KAAK289B,iBAAmBjj1B,EACxB15I,KAAK679B,UAjGb,SAAoBni1B,GAChB,IAAKA,EACD,OAAO,EAEX,GAA+B,iBAApBA,EACP,OAAOmq0B,GAAInq0B,EAAiB,GLnBH,GKqBxB,GAAIA,EAAgBwwzB,WAAY,CAIjC,IAHA,IAAIA,EAAaxwzB,EAAgBwwzB,WAC7B0yB,EAAW,EACX/91B,EAAMqr0B,EAAW7p8B,OACZO,EAAI,EAAGA,EAAIi+H,EAAKj+H,IACrBg89B,GAAY/Y,GAAI3Z,EAAWtp8B,GAAG2sH,MAAO,GAGzC,OADAqv2B,GAAY/91B,GL5Ba,EK8B7B,CACA,OAAO,CACX,CA+EyB011B,CAAW760B,EAChC,EACA+h1B,EAAQ/79B,UAAUkqP,mBAAqB,WACnC,OAAO5pP,KAAK289B,gBAChB,EACAlB,EAAQ/79B,UAAUm99B,YAAc,SAAUC,GACtC989B,KAAK679B,UAAYiB,CACrB,EACArB,EAAQ/79B,UAAU609B,WAAa,WAC3B,OAAOv09B,KAAK679B,SAChB,EACAJ,EAAQ/79B,UAAUq99B,mBAAqB,SAAUC,GACxCA,GACDh99B,KAAK+vP,UAAUxhL,QAAO,GAE1BvuE,KAAKsrK,eAAgB,EACrBtrK,KAAKo08B,QAAQjpZ,UACbnrjB,KAAKsrK,eAAgB,CACzB,EACAmwzB,EAAQ/79B,UAAUyrjB,QAAU,WACxBnrjB,KAAKsrK,eAAgB,EACrBtrK,KAAK+vP,UAAUvpN,OACnB,EACAi17B,EAAQ/79B,UAAU6oE,MAAQ,WACtBvoE,KAAKu89B,QAAO,EAChB,EACAd,EAAQ/79B,UAAU689B,OAAS,SAAUS,GACjC,IAAIC,EACAz27B,EAAQiB,KACRznC,KAAKsrK,gBACL2xzB,GAAkB,EAClBj99B,KAAK+89B,mBAAmBC,IAExBh99B,KAAK479B,qBACLqB,GAAkB,EAClBj99B,KAAKk99B,2BAET,IAAIz27B,EAAMgB,KACNw17B,GACAj99B,KAAK279B,iBAAmB,EACxB379B,KAAK0+B,QAAQ,WAAY,CACrB8h7B,YAAa/56B,EAAMD,KAGlBxmC,KAAK079B,iBAAmB,IAC7B179B,KAAK279B,mBACD379B,KAAK279B,iBAAmB379B,KAAK079B,kBAC7B179B,KAAK+vP,UAAUhgN,OAG3B,EACA0r7B,EAAQ/79B,UAAUy99B,mBAAqB,SAAUC,GAC7Cp99B,KAAK079B,iBAAmB0B,CAC5B,EACA3B,EAAQ/79B,UAAUg59B,OAAS,WACvB149B,KAAK+vP,UAAUvpN,QACfxmC,KAAK279B,iBAAmB,CAC5B,EACAF,EAAQ/79B,UAAU649B,aAAe,WAC7Bv49B,KAAK479B,oBAAqB,CAC9B,EACAH,EAAQ/79B,UAAUw99B,wBAA0B,WACxCl99B,KAAK479B,oBAAqB,EACtB579B,KAAKo08B,QAAQmkB,cAA2C,WAA3Bv49B,KAAKo08B,QAAQpv6B,WAC1ChlC,KAAKo08B,QAAQmkB,cAErB,EACAkD,EAAQ/79B,UAAUmvH,OAAS,SAAUxyE,GACjCA,EAAOA,GAAQ,CAAC,EAChBr8C,KAAKo08B,QAAQvl1B,OAAOxyE,EAAKtd,MAAOsd,EAAKrd,QACrCh/B,KAAKgwD,QAAQ6+D,QACjB,EACA4s2B,EAAQ/79B,UAAU299B,eAAiB,WAC/Br99B,KAAK+vP,UAAU/qO,OACnB,EACAy28B,EAAQ/79B,UAAUyrO,SAAW,WACzB,OAAOnrO,KAAKo08B,QAAQjpuB,UACxB,EACAswvB,EAAQ/79B,UAAUs7K,UAAY,WAC1B,OAAOh7K,KAAKo08B,QAAQp5xB,WACxB,EACAygzB,EAAQ/79B,UAAU018B,eAAiB,SAAUC,GACzCr18B,KAAKgwD,QAAQol5B,eAAeC,EAChC,EACAomB,EAAQ/79B,UAAU8s8B,UAAY,SAAUvo8B,EAAGjB,GACvC,OAAOhD,KAAKgwD,QAAQw84B,UAAUvo8B,EAAGjB,EACrC,EACAy49B,EAAQ/79B,UAAUkR,GAAK,SAAUy+B,EAAW3B,EAAcP,GAEtD,OADAntC,KAAKgwD,QAAQp/C,GAAGy+B,EAAW3B,EAAcP,GAClCntC,IACX,EACAy79B,EAAQ/79B,UAAUsuC,IAAM,SAAUqB,EAAW3B,GACzC1tC,KAAKgwD,QAAQhiB,IAAIqB,EAAW3B,EAChC,EACA+t7B,EAAQ/79B,UAAUg/B,QAAU,SAAU2Q,EAAW5Q,GAC7Cz+B,KAAKgwD,QAAQtxB,QAAQ2Q,EAAW5Q,EACpC,EACAg97B,EAAQ/79B,UAAUslB,MAAQ,WAEtB,IADA,IAAI8uL,EAAQ9zM,KAAKi0B,QAAQqn7B,WAChB168B,EAAI,EAAGA,EAAIkzM,EAAMzzM,OAAQO,IAC1BkzM,EAAMlzM,aAAc,IACpBkzM,EAAMlzM,GAAGi39B,iBAAiB739B,MAGlCA,KAAKi0B,QAAQon7B,cACbr78B,KAAKo08B,QAAQpv7B,OACjB,EACAy28B,EAAQ/79B,UAAU2l8B,QAAU,WA/MhC,IAAqB956B,EAgNbvrB,KAAK+vP,UAAUhgN,OACf/vC,KAAKglB,QACLhlB,KAAKi0B,QAAQox6B,UACbrl8B,KAAKo08B,QAAQ/O,UACbrl8B,KAAKgwD,QAAQq14B,UACbrl8B,KAAK+vP,UACD/vP,KAAKi0B,QACDj0B,KAAKo08B,QACDp08B,KAAKgwD,QAAU,KAxNdzkC,EAyNDvrB,KAAKurB,UAxNd60L,GAAU70L,EAyNjB,EACOkw8B,CACX,CAtMc,GAuMP,SAAS/q6B,GAAK464B,EAAKjv5B,GACtB,IAAI9jC,EAAK,IAAIkj9B,GAAQ,IAAenwB,EAAKjv5B,GAEzC,OADA+jK,GAAU7nM,EAAGgT,IAAMhT,EACZA,CACX,CACO,SAAS8s7B,GAAQ9s7B,GACpBA,EAAG8s7B,SACP,CACO,SAASi4B,KACZ,IAAK,IAAIz48B,KAAOu7L,GACRA,GAAUzgN,eAAeklB,IACzBu7L,GAAUv7L,GAAKwg7B,UAGvBjlvB,GAAY,CAAC,CACjB,CACO,SAASn1L,GAAYM,GACxB,OAAO60L,GAAU70L,EACrB,CACO,SAASgy8B,GAAgB7y9B,EAAMs+7B,GAClCwyB,GAAa9w9B,GAAQs+7B,CACzB,CACO,IAAI1i8B,GAAU,QClNjBk39B,GAAiB,KAGjBC,GAAgC,GAc7B,SAASC,GAAUhgzB,EAAKtpK,EAAQ2tH,EAAO22N,GAC5C,IAAIwjc,EAAK9nxB,EAAO,GACZugtB,EAAKvgtB,EAAO,GACZk6V,EAAKvsO,EAAM,GACX0tO,EAAK1tO,EAAM,GACX471B,EAAYhpQ,EAAKunE,EACjB0hM,EAAWnunB,EAAKnB,EAEpB,GAAkB,IAAdqvnB,EACF,OAAoB,IAAbC,EAAiBtvnB,GAAMA,EAAKmB,GAAM,EAQ3C,GAAI/W,EACF,GAAIiloB,EAAY,EAAG,CACjB,GAAIjgzB,GAAOw+mB,EACT,OAAO5tb,EACF,GAAI5wL,GAAOi3iB,EAChB,OAAOllX,CAEX,KAAO,CACL,GAAI/xL,GAAOw+mB,EACT,OAAO5tb,EACF,GAAI5wL,GAAOi3iB,EAChB,OAAOllX,CAEX,KACK,CACL,GAAI/xL,IAAQw+mB,EACV,OAAO5tb,EAGT,GAAI5wL,IAAQi3iB,EACV,OAAOllX,CAEX,CAEA,OAAQ/xL,EAAMw+mB,GAAMyhM,EAAYC,EAAWtvnB,CAC7C,CAMO,SAAS,GAAamymB,EAASr78B,GACpC,OAAQq78B,GACN,IAAK,SACL,IAAK,SACHA,EAAU,MACV,MAEF,IAAK,OACL,IAAK,MACHA,EAAU,KACV,MAEF,IAAK,QACL,IAAK,SACHA,EAAU,OAId,OAAI,GAAgBA,IA9EP9p4B,EA+ED8p4B,EA9EL9p4B,EAAIlqE,QAAQ,aAAc,KA8EZhG,MAAM,MAChB4jK,WAAWo2yB,GAAW,IAAMr78B,EAG9BilK,WAAWo2yB,GAGF,MAAXA,EAAkB7kN,KAAO6kN,EAtFlC,IAAe9p4B,CAuFf,CACO,SAAS1zB,GAAMh/C,EAAGgyQ,EAAW4ntB,GASlC,OARiB,MAAb5ntB,IACFA,EAAY,IAIdA,EAAYpzQ,KAAKgL,IAAIhL,KAAK8K,IAAI,EAAGsoQ,GAAYwntB,IAE7Cx59B,IAAMA,GAAGm/C,QAAQ6yN,GACV4ntB,EAAY559B,GAAKA,CAC1B,CAMO,SAASw5tB,GAAIh/f,GAIlB,OAHAA,EAAIlyL,MAAK,SAAUvrC,EAAGsC,GACpB,OAAOtC,EAAIsC,CACb,IACOm7N,CACT,CAKO,SAASq/vB,GAAapgzB,GAG3B,GAFAA,GAAOA,EAEHpxI,MAAMoxI,GACR,OAAO,EAYT,GAAIA,EAAM,MAGR,IAFA,IAAIv+K,EAAI,EAECyB,EAAI,EAAGA,EAAI,GAAIA,IAAKzB,GAAK,GAChC,GAAI0D,KAAKogD,MAAMy6H,EAAMv+K,GAAKA,IAAMu+K,EAC9B,OAAO98K,EAKb,OAAOm99B,GAAiBrgzB,EAC1B,CAKO,SAASqgzB,GAAiBrgzB,GAE/B,IAAI/mG,EAAM+mG,EAAIn5K,WAAWgL,cAErByu9B,EAASrn5B,EAAIn2E,QAAQ,KACrBuzB,EAAMiq8B,EAAS,GAAKrn5B,EAAI50E,MAAMi89B,EAAS,GAAK,EAC5CC,EAAqBD,EAAS,EAAIA,EAASrn5B,EAAIt2E,OAC/CslyB,EAAWhvtB,EAAIn2E,QAAQ,KACvB099B,EAAiBv4L,EAAW,EAAI,EAAIs4L,EAAqB,EAAIt4L,EACjE,OAAO9iyB,KAAK8K,IAAI,EAAGuw9B,EAAiBnq8B,EACtC,CAKO,SAASoq8B,GAAkBC,EAAYC,GAC5C,IAAIh08B,EAAMxnB,KAAKwnB,IACXmzwB,EAAO36xB,KAAK26xB,KACZ8gM,EAAez79B,KAAKyK,MAAM+c,EAAI+z8B,EAAW,GAAKA,EAAW,IAAM5gM,GAC/D+gM,EAAe179B,KAAKogD,MAAM54B,EAAIxnB,KAAKmjH,IAAIq42B,EAAY,GAAKA,EAAY,KAAO7gM,GAE3EvnhB,EAAYpzQ,KAAKgL,IAAIhL,KAAK8K,KAAK2w9B,EAAeC,EAAc,GAAI,IACpE,OAAQ727B,SAASuuO,GAAkBA,EAAL,EAChC,CAaO,SAASuotB,GAAwBC,EAAW3jnB,EAAK7kG,GACtD,OAAKwotB,EAAU3jnB,IAIH4jnB,GAAgBD,EAAWxotB,GAC1B6kG,IAJJ,CAKX,CAYO,SAAS4jnB,GAAgBD,EAAWxotB,GACzC,IAAInnK,EAAM,GAAc2v3B,GAAW,SAAUnisB,EAAK5+G,GAChD,OAAO4+G,GAAOhwP,MAAMoxI,GAAO,EAAIA,EACjC,GAAG,GAEH,GAAY,IAAR5uE,EACF,MAAO,GAmBT,IAhBA,IAAI4gH,EAAS7sN,KAAK6yF,IAAI,GAAIugL,GACtB0otB,EAAgB,EAAWF,GAAW,SAAU/gzB,GAClD,OAAQpxI,MAAMoxI,GAAO,EAAIA,GAAO5uE,EAAM4gH,EAAS,GACjD,IACIkvwB,EAAuB,IAATlvwB,EACdmvwB,EAAQ,EAAWF,GAAe,SAAUG,GAE9C,OAAOj89B,KAAKyK,MAAMwx9B,EACpB,IACIC,EAAa,GAAcF,GAAO,SAAUvisB,EAAK5+G,GACnD,OAAO4+G,EAAM5+G,CACf,GAAG,GACCijyB,EAAY,EAAWge,GAAe,SAAUG,EAAOhknB,GACzD,OAAOgknB,EAAQD,EAAM/jnB,EACvB,IAEOiknB,EAAaH,GAAa,CAK/B,IAHA,IAAIjx9B,EAAMw3B,OAAO6gJ,kBACbg5yB,EAAQ,KAEHp+9B,EAAI,EAAGi+H,EAAM8h1B,EAAUtg9B,OAAQO,EAAIi+H,IAAOj+H,EAC7C+/8B,EAAU//8B,GAAK+M,IACjBA,EAAMgz8B,EAAU//8B,GAChBo+9B,EAAQp+9B,KAKVi+9B,EAAMG,GACRre,EAAUqe,GAAS,IACjBD,CACJ,CAEA,OAAO,EAAWF,GAAO,SAAUI,GACjC,OAAOA,EAAOvvwB,CAChB,GACF,CAMO,SAASwvwB,GAAQzZ,EAAMnnf,GAC5B,IAAI6ggB,EAAet89B,KAAK8K,IAAImw9B,GAAarY,GAAOqY,GAAax/f,IAGzDxvX,EAAM222B,EAAOnnf,EAEjB,OAAO6ggB,EAAe1B,GAAgC3u3B,EAAM7rD,GAAM6rD,EAAKqw3B,EACzE,CAEO,IAAI957B,GAAmB,iBAKvB,SAAS+57B,GAAUC,GACxB,IAAIC,EAAgB,EAAVz89B,KAAKsmC,GACf,OAAQk27B,EAASC,EAAMA,GAAOA,CAChC,CAMO,SAASC,GAAmB7hzB,GACjC,OAAOA,GAAO8/yB,IAAkB9/yB,EAAM8/yB,EACxC,CAEA,IAAIgC,GAAW,0IAmBR,SAAS78B,GAAUxh8B,GACxB,GAAIA,aAAiBqqB,KACnB,OAAOrqB,EACF,GAAI,GAAgBA,GAAQ,CAMjC,IAAIsF,EAAQ+49B,GAASpt9B,KAAKjR,GAE1B,IAAKsF,EAEH,OAAO,IAAI+kB,KAAKowuB,KAIlB,GAAKn1vB,EAAM,GAWN,CACD,IAAIuyvB,GAAQvyvB,EAAM,IAAM,EAMxB,MAJ+B,MAA3BA,EAAM,GAAGmqD,gBACXoosB,IAASvyvB,EAAM,GAAG1E,MAAM,EAAG,IAGtB,IAAIypB,KAAKA,KAAKkZ,KAAKj+B,EAAM,KAAMA,EAAM,IAAM,GAAK,GAAIA,EAAM,IAAM,EAAGuyvB,IAAQvyvB,EAAM,IAAM,IAAKA,EAAM,IAAM,EAAGA,EAAM,IAAMA,EAAM,GAAG6wB,UAAU,EAAG,GAAK,GAC3J,CAhBA,OAAO,IAAI9L,MAAM/kB,EAAM,KAAMA,EAAM,IAAM,GAAK,GAAIA,EAAM,IAAM,GAAIA,EAAM,IAAM,IAAKA,EAAM,IAAM,IAAKA,EAAM,IAAM,EAAGA,EAAM,IAAMA,EAAM,GAAG6wB,UAAU,EAAG,GAAK,EAiB9J,CAAO,OAAa,MAATn2B,EACF,IAAIqqB,KAAKowuB,KAGX,IAAIpwuB,KAAK3oB,KAAKogD,MAAM9hD,GAC7B,CAQO,SAASs+9B,GAAS/hzB,GACvB,OAAO76K,KAAK6yF,IAAI,GAAI,GAAiBgoF,GACvC,CASO,SAAS,GAAiBA,GAC/B,GAAY,IAARA,EACF,OAAO,EAGT,IAAI3pJ,EAAMlxB,KAAKyK,MAAMzK,KAAKwnB,IAAIqzJ,GAAO76K,KAAK26xB,MAW1C,OAJI9/mB,EAAM76K,KAAK6yF,IAAI,GAAI3hE,IAAQ,IAC7BA,IAGKA,CACT,CAaO,SAASwnwB,GAAK79mB,EAAKz6H,GACxB,IAAIy86B,EAAW,GAAiBhizB,GAC5BiizB,EAAQ989B,KAAK6yF,IAAI,GAAIgq4B,GACrBh99B,EAAIg7K,EAAMiizB,EAiCd,OAHAjizB,GA1BIz6H,EACEvgD,EAAI,IACD,EACIA,EAAI,IACR,EACIA,EAAI,EACR,EACIA,EAAI,EACR,EAEA,GAGHA,EAAI,EACD,EACIA,EAAI,EACR,EACIA,EAAI,EACR,EACIA,EAAI,EACR,EAEA,IAIEi99B,EAGJD,IAAa,IAAMhizB,EAAIt6H,QAAQs86B,EAAW,GAAKA,EAAW,GAAKhizB,CACxE,CAQO,SAASkizB,GAASC,EAAQ/89B,GAC/B,IAAI0C,GAAKq69B,EAAOx/9B,OAAS,GAAKyC,EAAI,EAC9BF,EAAIC,KAAKyK,MAAM9H,GACfvC,GAAK489B,EAAOj99B,EAAI,GAChBzD,EAAIqG,EAAI5C,EACZ,OAAOzD,EAAI8D,EAAI9D,GAAK0g+B,EAAOj99B,GAAKK,GAAKA,CACvC,CAwBO,SAAS689B,GAAgB3p5B,GAC9BA,EAAK5pC,MAAK,SAAUvrC,EAAGsC,GACrB,OAAOy89B,EAAW/+9B,EAAGsC,EAAG,IAAM,EAAI,CACpC,IAIA,IAHA,IAAI4ovB,GAAO,IACP8zO,EAAY,EAEPp/9B,EAAI,EAAGA,EAAIu1E,EAAK91E,QAAS,CAIhC,IAHA,IAAI6he,EAAW/rZ,EAAKv1E,GAAGshe,SACnB+9f,EAAU9p5B,EAAKv1E,GAAGoT,MAEbilW,EAAK,EAAGA,EAAK,EAAGA,IACnBipH,EAASjpH,IAAOizY,IAClBhqR,EAASjpH,GAAMizY,EACf+zO,EAAQhnnB,GAAOA,EAAqB,EAAhB,EAAI+mnB,GAG1B9zO,EAAOhqR,EAASjpH,GAChB+mnB,EAAYC,EAAQhnnB,GAGlBipH,EAAS,KAAOA,EAAS,IAAM+9f,EAAQ,GAAKA,EAAQ,IAAO,EAC7D9p5B,EAAKlzD,OAAOriB,EAAG,GAEfA,GAEJ,CAEA,OAAOu1E,EAEP,SAAS4p5B,EAAW/+9B,EAAGsC,EAAG21W,GACxB,OAAOj4W,EAAEkhe,SAASjpH,GAAM31W,EAAE4+d,SAASjpH,IAAOj4W,EAAEkhe,SAASjpH,KAAQ31W,EAAE4+d,SAASjpH,KAAQj4W,EAAEgT,MAAMilW,GAAM31W,EAAE0Q,MAAMilW,KAAUA,GAAU,EAAL,KAAYA,GAAM8mnB,EAAW/+9B,EAAGsC,EAAG,GAC1J,CACF,CAkBO,SAAS489B,GAAgBxizB,GAC9B,IAAIyizB,EAAW91zB,WAAWqT,GAC1B,OAAOyizB,GAAYzizB,IACF,IAAbyizB,IAAmB,GAAgBzizB,IAAQA,EAAIl9K,QAAQ,MAAQ,GACjE2/9B,EAAWvkO,GACf,CAKO,SAAS,GAAUl+kB,GACxB,OAAQpxI,MAAM4z7B,GAAgBxizB,GAChC,CAOO,SAAS0izB,KACd,OAAOv99B,KAAKogD,MAAsB,EAAhBpgD,KAAKwF,SACzB,CAQO,SAASg49B,GAAyBr/9B,EAAGsC,GAC1C,OAAU,IAANA,EACKtC,EAGFq/9B,GAAyB/89B,EAAGtC,EAAIsC,EACzC,CAQO,SAASg99B,GAAuBt/9B,EAAGsC,GACxC,OAAS,MAALtC,EACKsC,EAGA,MAALA,EACKtC,EAGFA,EAAIsC,EAAI+89B,GAAyBr/9B,EAAGsC,EAC7C,CCnkBA,SAAS,GAAkBu0H,EAAIwoH,EAAIoguB,GACjC,OAAQpguB,EAAKxoH,GAAM4o1B,EAAU5o1B,CAC/B,CAQA,IAAI0o2B,GAA8B,WAC9BC,GAA+B,WAO5B,SAASC,GAAiBt/9B,GAC/B,OAAOA,aAAiB1B,MAAQ0B,EAAiB,MAATA,EAAgB,GAAK,CAACA,EAChE,CAcO,SAASu/9B,GAAgBtgc,EAAKv7gB,EAAK878B,GAExC,GAAIvgc,EAAK,CACPA,EAAIv7gB,GAAOu7gB,EAAIv7gB,IAAQ,CAAC,EACxBu7gB,EAAIwgc,SAAWxgc,EAAIwgc,UAAY,CAAC,EAChCxgc,EAAIwgc,SAAS/78B,GAAOu7gB,EAAIwgc,SAAS/78B,IAAQ,CAAC,EAE1C,IAAK,IAAIjkB,EAAI,EAAGi+H,EAAM8h2B,EAAQtg+B,OAAQO,EAAIi+H,EAAKj+H,IAAK,CAClD,IAAIig+B,EAAaF,EAAQ//9B,IAEpBw/hB,EAAIwgc,SAAS/78B,GAAKllB,eAAekh+B,IAAezgc,EAAIv7gB,GAAKllB,eAAekh+B,KAC3Ezgc,EAAIwgc,SAAS/78B,GAAKg88B,GAAczgc,EAAIv7gB,GAAKg88B,GAE7C,CACF,CACF,CACO,IAAIC,GAAqB,CAAC,YAAa,aAAc,WAAY,aAAc,OAAQ,MAAO,QAAS,kBAAmB,kBAAmB,QAAS,SAAU,aAAc,QAAS,gBAAiB,WAAY,cAAe,aAAc,gBAAiB,gBAAiB,kBAAmB,iBAAkB,oBAAqB,oBAAqB,kBAAmB,cAAe,cAAe,eAAgB,WAana,SAASC,GAAiB7wU,GAC/B,OAAO,GAASA,IAAcv+oB,GAAQu+oB,IAAeA,aAAoB1koB,KAAyB0koB,EAAjBA,EAAS/upB,KAC5F,CAMO,SAAS6/9B,GAAiB9wU,GAC/B,OAAO,GAASA,MAAeA,aAAoBzwpB,MAErD,CAgCO,SAASwh+B,GAAgBC,EAAWC,EAAgBz59B,GACzD,IAAI059B,EAA6B,gBAAT159B,EACpB259B,EAA8B,iBAAT359B,EACrB459B,EAA4B,eAAT559B,EACvBw59B,EAAYA,GAAa,GACzBC,GAAkBA,GAAkB,IAAIp/9B,QACxC,IAAIw/9B,EAAmBr2B,KAEvB,EAAKi2B,GAAgB,SAAUK,EAAYxk9B,GACpC,GAASwk9B,KACZL,EAAenk9B,GAAS,KAe5B,IACA,IAyJqByk9B,EAUjBh5hB,EAnKAjlb,EAsBN,SAAuB098B,EAAWK,EAAkB759B,GAClD,IAAI8b,EAAS,GAEb,GAAa,eAAT9b,EACF,OAAO8b,EAKT,IAAK,IAAIxG,EAAQ,EAAGA,EAAQkk9B,EAAU7g+B,OAAQ2c,IAAS,CACrD,IAAI0k9B,EAAWR,EAAUlk9B,GAErB0k9B,GAA2B,MAAfA,EAASn28B,IACvBg28B,EAAiBt19B,IAAIy19B,EAASn28B,GAAIvO,GAQpCwG,EAAO3hB,KAAK,CACV6/9B,SAAmB,iBAATh69B,GAA2Bi69B,GAAsBD,GAAY,KAAOA,EAC9EE,UAAW,KACXC,QAAS,KACTC,SAAU,MAEd,CAEA,OAAOt+8B,CACT,CApDeu+8B,CAAcb,EAAWK,EAAkB759B,GAmBxD,OAjBI059B,GAAqBC,IAoD3B,SAAqB798B,EAAQ098B,EAAWK,EAAkBJ,GAExD,EAAKA,GAAgB,SAAUK,EAAYxk9B,GACzC,GAAKwk9B,GAA+B,MAAjBA,EAAWj28B,GAA9B,CAIA,IAAIy28B,EAAWC,GAAkBT,EAAWj28B,IACxC228B,EAAcX,EAAiBp+9B,IAAI6+9B,GAEvC,GAAmB,MAAfE,EAAqB,CACvB,IAAIC,EAAa3+8B,EAAO0+8B,GACxBr/1B,IAAQs/1B,EAAWP,UAAW,4BAA8BI,EAAW,MACvEG,EAAWP,UAAYJ,EAGvBW,EAAWT,SAAWR,EAAUgB,GAChCf,EAAenk9B,GAAS,IAC1B,CAbA,CAcF,GACF,CAvEIol9B,CAAY5+8B,EAAQ098B,EAAWK,EAAkBJ,GAG/CC,GAsEN,SAAuB598B,EAAQ298B,GAE7B,EAAKA,GAAgB,SAAUK,EAAYxk9B,GACzC,GAAKwk9B,GAAiC,MAAnBA,EAAW929B,KAI9B,IAAK,IAAI9J,EAAI,EAAGA,EAAI4iB,EAAOnjB,OAAQO,IAAK,CACtC,IAAI8g+B,EAAWl+8B,EAAO5iB,GAAG8g+B,SAEzB,IAAKl+8B,EAAO5iB,GAAGgh+B,WAEZF,IAA4B,MAAfA,EAASn28B,IAA+B,MAAjBi28B,EAAWj28B,MAAgBo28B,GAAsBH,KAAgBG,GAAsBD,IAAaW,GAAiB,OAAQX,EAAUF,GAG5K,OAFAh+8B,EAAO5iB,GAAGgh+B,UAAYJ,OACtBL,EAAenk9B,GAAS,KAG5B,CACF,GACF,CAxFIsl9B,CAAc9+8B,EAAQ298B,GAGpBC,GAAqBC,EAuF3B,SAAwB798B,EAAQ298B,EAAgBW,GAC9C,EAAKX,GAAgB,SAAUK,GAC7B,GAAKA,EAAL,CAQA,IAHA,IAAIW,EACApoT,EAAU,GAGbooT,EAAa3+8B,EAAOu2pB,MAMrBooT,EAAWP,WAAaD,GAAsBQ,EAAWT,WACzDS,EAAWT,UAA6B,MAAjBF,EAAWj28B,KAAe828B,GAAiB,KAAMb,EAAYW,EAAWT,YAC7F3nT,IAGEooT,GACFA,EAAWP,UAAYJ,EACvBW,EAAWL,SAAWA,GAEtBt+8B,EAAO3hB,KAAK,CACV+/9B,UAAWJ,EACXM,SAAUA,EACVJ,SAAU,KACVG,QAAS,OAIb9nT,GA9BA,CA+BF,GACF,CA1HIwoT,CAAe/+8B,EAAQ298B,EAAgBE,GAC9BC,GA2Hb,SAAiC998B,EAAQ298B,GACvC,EAAKA,GAAgB,SAAUK,GAG7Bh+8B,EAAO3hB,KAAK,CACV+/9B,UAAWJ,EACXM,UAAU,EACVJ,SAAU,KACVG,QAAS,MAEb,GACF,CArIIW,CAAwBh/8B,EAAQ298B,GA4IbM,EAzIPj+8B,EAmJVilb,EAAQyigB,KACZ,EAAKu2B,GAAW,SAAUrg7B,GACxB,IAAIsg7B,EAAWtg7B,EAAKsg7B,SACpBA,GAAYj5hB,EAAMx8b,IAAIy19B,EAASn28B,GAAI61B,EACrC,IACA,EAAKqg7B,GAAW,SAAUrg7B,GACxB,IAAIg/e,EAAMh/e,EAAKwg7B,UAEf/+1B,IAAQu9Z,GAAiB,MAAVA,EAAI70gB,KAAek9a,EAAMtlc,IAAIi9hB,EAAI70gB,KAAOk9a,EAAMtlc,IAAIi9hB,EAAI70gB,MAAQ61B,EAAM,mBAAqBg/e,GAAOA,EAAI70gB,KACnH60gB,GAAiB,MAAVA,EAAI70gB,IAAck9a,EAAMx8b,IAAIm0hB,EAAI70gB,GAAI61B,IAC1CA,EAAKyg7B,UAAYzg7B,EAAKyg7B,QAAU,CAAC,EACpC,IAEA,EAAKJ,GAAW,SAAUrg7B,EAAMpkC,GAC9B,IAAI0k9B,EAAWtg7B,EAAKsg7B,SAChBthc,EAAMh/e,EAAKwg7B,UACXC,EAAUzg7B,EAAKyg7B,QAEnB,GAAK,GAASzhc,GAAd,CAYA,GAJAyhc,EAAQn39B,KAAmB,MAAZ01hB,EAAI11hB,KAAeu39B,GAAkB7hc,EAAI11hB,MAAQg39B,EAAWA,EAASh39B,KAElF619B,GAA8Bvj9B,EAE5B0k9B,EACFG,EAAQt28B,GAAK028B,GAAkBP,EAASn28B,SACnC,GAAc,MAAV60gB,EAAI70gB,GACbs28B,EAAQt28B,GAAK028B,GAAkB7hc,EAAI70gB,QAC9B,CAML,IAAIk38B,EAAQ,EAEZ,GACEZ,EAAQt28B,GAAK,KAAOs28B,EAAQn39B,KAAO,KAAO+39B,UACnCh6hB,EAAMtlc,IAAI0+9B,EAAQt28B,IAC7B,CAEAk9a,EAAMx8b,IAAI419B,EAAQt28B,GAAI61B,EA3BtB,CA4BF,IAhMO59B,CACT,CAkMA,SAAS6+8B,GAAiBp0c,EAAMv8H,EAAMC,GACpC,IAAIohH,EAAO2vd,GAAoBhxkB,EAAKu8H,GAAO,MACvCjb,EAAO0vd,GAAoB/wkB,EAAKs8H,GAAO,MAE3C,OAAe,MAARlb,GAAwB,MAARC,GAAgBD,IAASC,CAClD,CAMA,SAASivd,GAAkBvkzB,GAOzB,OAAOglzB,GAAoBhlzB,EAAK,GAClC,CAEO,SAASglzB,GAAoBC,EAAUxl2B,GAC5C,OAAgB,MAAZwl2B,EACKxl2B,EAGFniE,GAAS2n6B,GAAYA,EAAWr/6B,GAASq/6B,IAAa,GAAaA,GAAYA,EAAW,GAAKxl2B,CACxG,CAYO,SAASyl2B,GAAgBC,GAC9B,IAAIn49B,EAAOm49B,EAAen49B,KAE1B,SAAUA,IAAQA,EAAKlK,QAAQ+/9B,IACjC,CAOO,SAASoB,GAAsBH,GACpC,OAAOA,GAA+B,MAAjBA,EAAWj28B,IAAyF,IAA3E028B,GAAkBT,EAAWj28B,IAAI/qB,QAAQgg+B,GACzF,CAwFO,SAASsC,GAAetz9B,EAAMslB,GACnC,OAA+B,MAA3BA,EAAQiu8B,gBACHju8B,EAAQiu8B,gBACe,MAArBju8B,EAAQuwI,UACV1zJ,GAAQmjB,EAAQuwI,WAAah2I,EAAIyF,EAAQuwI,WAAW,SAAUlkK,GACnE,OAAOqO,EAAKwz9B,gBAAgB7h+B,EAC9B,IAAKqO,EAAKwz9B,gBAAgBlu8B,EAAQuwI,WACT,MAAhBvwI,EAAQpqB,KACViH,GAAQmjB,EAAQpqB,MAAQ2kB,EAAIyF,EAAQpqB,MAAM,SAAUvJ,GACzD,OAAOqO,EAAKyz9B,YAAY9h+B,EAC1B,IAAKqO,EAAKyz9B,YAAYnu8B,EAAQpqB,WAHzB,CAKT,CAsBO,SAASw49B,KACd,IAAIr+8B,EAAM,cAAgBs+8B,KAC1B,OAAO,SAAUC,GACf,OAAOA,EAAQv+8B,KAASu+8B,EAAQv+8B,GAAO,CAAC,EAC1C,CACF,CACA,IAAIs+8B,GAAmB/C,KAKhB,SAASiD,GAAYC,EAASC,EAAanjc,GAChD,IAAIzpgB,EAAK6s8B,GAAeD,EAAanjc,GACjCqjc,EAAoB9s8B,EAAG8s8B,kBACvBC,EAAiB/s8B,EAAG+s8B,eAGpBlg9B,EAFSmT,EAAGgt8B,OAGZC,EAAkBxjc,EAAMA,EAAIwjc,gBAAkB,KAelD,OAbKH,GAAqBG,GACxBF,EAAez39B,IAAI239B,EAAiB,CAAC,GAGvCF,EAAe1hN,MAAK,SAAU6hN,EAAaC,GACzC,IAAIC,EAAcC,GAAyBV,EAASQ,EAAUD,EAAa,CACzEI,WAAYL,IAAoBE,EAChCI,WAAW9jc,GAAwB,MAAjBA,EAAI8jc,WAAoB9jc,EAAI8jc,UAC9CC,YAAY/jc,GAAyB,MAAlBA,EAAI+jc,YAAqB/jc,EAAI+jc,aAElD3g9B,EAAOsg9B,EAAW,UAAYC,EAAYlz0B,OAC1CrtI,EAAOsg9B,EAAW,SAAWC,EAAYlz0B,OAAO,EAClD,IACOrtI,CACT,CACO,SAASgg9B,GAAeD,EAAanjc,GAC1C,IAAIgkc,EAEJ,GAAIpp6B,GAASuo6B,GAAc,CACzB,IAAIr2wB,EAAM,CAAC,EACXA,EAAIq2wB,EAAc,SAAW,EAC7Ba,EAASl3wB,CACX,MACEk3wB,EAASb,EAGX,IAAIG,EAAiBx4B,KACjBy4B,EAAS,CAAC,EACVF,GAAoB,EAoBxB,OAnBA,EAAKW,GAAQ,SAAUjj+B,EAAO0jB,GAE5B,GAAY,cAARA,GAA+B,oBAARA,EAA3B,CAKA,IAAIwogB,EAAYxogB,EAAIpe,MAAM,2BAA6B,GACnDq99B,EAAWz2c,EAAU,GACrBg3c,GAAah3c,EAAU,IAAM,IAAI99gB,eAEhCu09B,IAAaO,GAAajkc,GAAOA,EAAIkkc,kBAAoB9j+B,EAAQ4/hB,EAAIkkc,iBAAkBR,GAAY,IAIxGL,EAAoBA,KAAuBK,GACzBJ,EAAevg+B,IAAI2g+B,IAAaJ,EAAez39B,IAAI639B,EAAU,CAAC,IACpEO,GAAalj+B,EAZzB,MAFEwi+B,EAAO9+8B,GAAO1jB,CAelB,IACO,CACLsi+B,kBAAmBA,EACnBC,eAAgBA,EAChBC,OAAQA,EAEZ,CACO,IAAIY,GAAmB,CAC5BN,YAAY,EACZC,WAAW,EACXC,YAAY,GAEHK,GAAqB,CAC9BP,YAAY,EACZC,WAAW,EACXC,YAAY,GAEP,SAASH,GAAyBV,EAASQ,EAAUW,EAAYrkc,GACtEA,EAAMA,GAAOmkc,GACb,IAAIG,EAAcD,EAAWzn9B,MACzB2n9B,EAAWF,EAAWl58B,GACtBq58B,EAAaH,EAAW/59B,KACxB8Y,EAAS,CACXqtI,OAAQ,KACRg00B,UAA0B,MAAfH,GAAmC,MAAZC,GAAkC,MAAdC,GAGxD,IAAKph9B,EAAOqh9B,UAAW,CAErB,IAAIC,OAAY,EAEhB,OADAth9B,EAAOqtI,OAASuvY,EAAI6jc,aAAea,EAAYxB,EAAQnpoB,aAAa2poB,IAAa,CAACgB,GAAa,GACxFth9B,CACT,CAEA,MAAoB,SAAhBkh9B,IAA0C,IAAhBA,GAC5B7h2B,GAAOu9Z,EAAI+jc,WAAY,6DACvB3g9B,EAAOqtI,OAAS,GACTrtI,IAKW,QAAhBkh9B,IACF7h2B,GAAOu9Z,EAAI8jc,UAAW,iDACtBQ,EAAcC,EAAWC,EAAa,MAGxCph9B,EAAOqtI,OAASyy0B,EAAQyB,gBAAgB,CACtCjB,SAAUA,EACV9m9B,MAAO0n9B,EACPn58B,GAAIo58B,EACJj69B,KAAMk69B,IAEDph9B,EACT,CACO,SAASmZ,GAAa2u6B,EAAKzm7B,EAAK1jB,GACrCmq8B,EAAI3u6B,aAAe2u6B,EAAI3u6B,aAAa9X,EAAK1jB,GAASmq8B,EAAIzm7B,GAAO1jB,CAC/D,CAgBO,SAASq3jB,GAAUt+gB,EAAO26S,GAE/B,IAAImwoB,EAAU95B,KACV537B,EAAO,GAKX,OAJA,EAAK4mC,GAAO,SAAUkH,GACpB,IAAIv8B,EAAMgwU,EAAOzzS,IAChB4j7B,EAAQ7h+B,IAAI0hB,KAASvR,EAAKzR,KAAKgjB,GAAMmg9B,EAAQ/49B,IAAI4Y,EAAK,MAAMhjB,KAAKu/C,EACpE,IACO,CACL9tC,KAAMA,EACN0x9B,QAASA,EAEb,CAgBO,SAASC,GAAqBz19B,EAAMymQ,EAAWoqN,EAAa6kgB,EAAazkB,GAC9E,IAAI0kB,EAA+B,MAAblvtB,GAAmC,SAAdA,EAE3C,GAAmB,MAAfivtB,EACF,OAAOA,EAGT,GAAI5h7B,GAAS4h7B,GAEX,OAAOji7B,GADH9hD,EAAQ,GAAkBk/d,GAAe,EAAG6kgB,EAAazkB,GACzC0kB,EAAkBti+B,KAAK8K,IAAImw9B,GAAaz9f,GAAe,GAAIy9f,GAAaoH,IAAgBjvtB,GACvG,GAAIj7M,GAASkq6B,GAClB,OAAOzkB,EAAU,EAAIpgf,EAAc6kgB,EAOnC,IALA,IAAI/guB,EAAe,GACfihuB,EAAU/kgB,EACVglgB,EAAWH,EACX34kB,EAAW1pZ,KAAK8K,IAAIy39B,EAAUA,EAAQ/k+B,OAAS,EAAGgl+B,EAAShl+B,QAEtDO,EAAI,EAAGA,EAAI2rZ,IAAY3rZ,EAAG,CACjC,IAAI42C,EAAOhoC,EAAK819B,iBAAiB1k+B,GAEjC,GAAI42C,GAAsB,YAAdA,EAAKjrC,KAEf43P,EAAavjQ,IAAM6/8B,EAAU,GAAK2kB,EAAUA,EAAUC,GAAUzk+B,OAC3D,CACL,IAAI2k+B,EAAUH,GAAWA,EAAQxk+B,GAAKwk+B,EAAQxk+B,GAAK,EAC/C4k+B,EAAWH,EAASzk+B,GACpBO,EAAQ,GAAkBok+B,EAASC,EAAU/kB,GACjDt8sB,EAAavjQ,GAAKqiD,GAAM9hD,EAAOgk+B,EAAkBti+B,KAAK8K,IAAImw9B,GAAayH,GAAUzH,GAAa0H,IAAavvtB,EAC7G,CACF,CAEA,OAAO9R,CAEX,CCrtBA,IAAIshuB,GAAiB,IACjBC,GAAe,iCACfC,GAAoB,2BAMjB,SAASC,GAAe1pxB,GAC7B,IAAI+jR,EAAM,CACRzuH,KAAM,GACNt8U,IAAK,IAGP,GAAIgnL,EAAe,CACjB,IAAI2pxB,EAAU3pxB,EAAct3M,MAAM6g+B,IAClCxlgB,EAAIzuH,KAAOq0nB,EAAQ,IAAM,GACzB5lgB,EAAI/qc,IAAM2w8B,EAAQ,IAAM,EAC1B,CAEA,OAAO5lgB,CACT,CAuBO,SAAS6lgB,GAAkBC,EAASC,GACzCD,EAAQE,aAAeF,EAEvBA,EAAQ18kB,OAAS,SAAU73Y,GASzB,IACI009B,EAuCWh19B,EAxCXm3W,EAAaroX,KAoCjB,OAKK,GADUkR,EArCDm3W,IAsCgB,WAAWh9W,KAAKtI,SAASrD,UAAU6E,SAAS3E,KAAKsR,IArC7Eg19B,EAEA,SAAUx9mB,GAGR,SAAS6pD,IACP,OAAO7pD,EAAOnoX,MAAMP,KAAMI,YAAcJ,IAC1C,CAEA,OANA4sa,EAAU2F,EAAS7pD,GAMZ6pD,CACT,CARA,CAQElqD,IASF69mB,EAAgB,YACb109B,EAAMy09B,cAAgB59mB,GAAY9nX,MAAMP,KAAMI,UACjD,EAEA,EAAgB8l+B,EAAelm+B,OAGjC,EAAckm+B,EAAcxm+B,UAAW8R,GACvC009B,EAAcP,KAAqB,EACnCO,EAAc78kB,OAASrpZ,KAAKqpZ,OAC5B68kB,EAAcC,UAAYA,GAC1BD,EAAcE,WAAaA,GAC3BF,EAAc79mB,WAAaA,EACpB69mB,CACT,CACF,CAqBO,SAASG,GAAYC,EAAQC,GAClCD,EAAOj9kB,OAASk9kB,EAAUl9kB,MAC5B,CAEA,IAAIm9kB,GAAY3j+B,KAAKogD,MAAsB,GAAhBpgD,KAAKwF,UAiChC,SAAS899B,GAAUh57B,EAASsnC,GAG1B,IAFA,IAAIp9B,EAAO,GAEF54B,EAAK,EAAGA,EAAKre,UAAUC,OAAQoe,IACtC44B,EAAK54B,EAAK,GAAKre,UAAUqe,GAG3B,OAAOze,KAAKqoX,WAAW3oX,UAAU+0E,GAAYl0E,MAAM4sC,EAASkK,EAC9D,CAEA,SAAS+u7B,GAAWj57B,EAASsnC,EAAYp9B,GACvC,OAAOr3C,KAAKqoX,WAAW3oX,UAAU+0E,GAAYl0E,MAAM4sC,EAASkK,EAC9D,CAaO,SAASov7B,GAAsB329B,GAQpC,IAAImkB,EAAU,CAAC,EAEfnkB,EAAO429B,cAAgB,SAAUl0wB,GAM/B,IAvKoBtW,EAuKhByqxB,EAAoBn0wB,EAAIjmN,MAAQimN,EAAI9yN,UAAU6M,KAElD,GAAIo69B,EAAmB,CAxKzB,GAAc,qCAAqCt79B,KAD7B6wM,EA0KHyqxB,GAzKqD,kBAAoBzqxB,EAAgB,aA2KxGsW,EAAI9yN,UAAU6M,KAAOo69B,EACrB,IAAIC,EAAoBhB,GAAee,GAEvC,GAAKC,EAAkB1x8B,KAQhB,GAAI0x8B,EAAkB1x8B,MAAQww8B,GAAc,CACjD,IAAItk1B,EAkEV,SAAuBwl1B,GACrB,IAAIxl1B,EAAYntH,EAAQ2y8B,EAAkBp1nB,MAO1C,OALKpwN,GAAcA,EAAUsk1B,OAC3Btk1B,EAAYntH,EAAQ2y8B,EAAkBp1nB,MAAQ,CAAC,GACrCk0nB,KAAgB,GAGrBtk1B,CACT,CA3EsByl1B,CAAcD,GAC9Bxl1B,EAAUwl1B,EAAkB1x8B,KAAOs9L,CACrC,OAJEv+L,EAAQ2y8B,EAAkBp1nB,MAAQh/I,CAKtC,CAEA,OAAOA,CACT,EAEA1iN,EAAOg39B,SAAW,SAAUhD,EAAUiD,EAASC,GAC7C,IAAIx0wB,EAAMv+L,EAAQ6v8B,GAMlB,GAJItxwB,GAAOA,EAAIkzwB,MACblzwB,EAAMu0wB,EAAUv0wB,EAAIu0wB,GAAW,MAG7BC,IAAsBx0wB,EACxB,MAAM,IAAIhrM,MAAOu/8B,EAAyD,aAAejD,EAAW,KAAOiD,GAAW,IAAM,6BAAjGjD,gCAG7B,OAAOtxwB,CACT,EAEA1iN,EAAOm39B,qBAAuB,SAAU/qxB,GACtC,IAAI0qxB,EAAoBhB,GAAe1pxB,GACnC14L,EAAS,GACT0pM,EAAMj5L,EAAQ2y8B,EAAkBp1nB,MAUpC,OARItkJ,GAAOA,EAAIw4wB,IACb,EAAYx4wB,GAAK,SAAU5sN,EAAGiM,GAC5BA,IAASm59B,IAAgBli9B,EAAO3hB,KAAKvB,EACvC,IAEAkjB,EAAO3hB,KAAKqrN,GAGP1pM,CACT,EAEA1T,EAAOo39B,SAAW,SAAUhrxB,GAE1B,IAAI0qxB,EAAoBhB,GAAe1pxB,GACvC,QAASjoL,EAAQ2y8B,EAAkBp1nB,KACrC,EAMA1hW,EAAOq39B,qBAAuB,WAC5B,IAAIv25B,EAAQ,GAIZ,OAHA,EAAY38C,GAAS,SAAUi5L,EAAK3gN,GAClCqkE,EAAM/uE,KAAK0K,EACb,IACOqkE,CACT,EAMA9gE,EAAOs39B,YAAc,SAAUlrxB,GAC7B,IAAI0qxB,EAAoBhB,GAAe1pxB,GACnCgR,EAAMj5L,EAAQ2y8B,EAAkBp1nB,MACpC,OAAOtkJ,GAAOA,EAAIw4wB,GACpB,CAYF,CC7Re,SAAS2B,GAAgB7+7B,EAAY8+7B,GAElD,IAAK,IAAI1m+B,EAAI,EAAGA,EAAI4nC,EAAWnoC,OAAQO,IAChC4nC,EAAW5nC,GAAG,KACjB4nC,EAAW5nC,GAAG,GAAK4nC,EAAW5nC,GAAG,IAKrC,OADA0m+B,EAAeA,IAAgB,EACxB,SAAUvy2B,EAAOu/J,EAAUlmR,GAGhC,IAFA,IAAIiG,EAAQ,CAAC,EAEJzT,EAAI,EAAGA,EAAI4nC,EAAWnoC,OAAQO,IAAK,CAC1C,IAAI2qJ,EAAW/iH,EAAW5nC,GAAG,GAE7B,KAAI0zR,GAAY,EAAeA,EAAU/oI,IAAa,GAAKn9I,GAAY,EAAeA,EAAUm9I,GAAY,GAA5G,CAIA,IAAImyB,EAAM3oD,EAAMwy2B,WAAWh80B,EAAU+70B,GAE1B,MAAP5pzB,IACFrpK,EAAMm0B,EAAW5nC,GAAG,IAAM88K,EAL5B,CAOF,CAGA,OAAOrpK,CACT,CACF,CC/BO,IAGHmz9B,GAAeH,GAHa,CAAC,CAAC,OAAQ,SAAU,CAAC,cAAe,CAAC,iBAAkB,CAAC,iBAAkB,CAAC,WAAY,CAAC,iBAKpHI,GAEJ,WACE,SAASA,IAAkB,CAM3B,OAJAA,EAAe/n+B,UAAU8n+B,aAAe,SAAUlzsB,EAAUlmR,GAC1D,OAAOo59B,GAAaxn+B,KAAMs0R,EAAUlmR,EACtC,EAEOq59B,CACT,CARA,GCjDIC,GAAmB,IAAI,GAAI,IACxB,SAASC,GAAeC,GAC3B,GAA6B,iBAAlBA,EAA4B,CACnC,IAAIC,EAAeH,GAAiBvk+B,IAAIyk+B,GACxC,OAAOC,GAAgBA,EAAat90B,KACxC,CAEI,OAAOq90B,CAEf,CACO,SAASE,GAAoBF,EAAer90B,EAAOw90B,EAAQr38B,EAAQs38B,GACtE,GAAKJ,EAGA,IAA6B,iBAAlBA,EAA4B,CACxC,GAAKr90B,GAASA,EAAM090B,eAAiBL,IAAmBG,EACpD,OAAOx90B,EAEX,IAAIs90B,EAAeH,GAAiBvk+B,IAAIyk+B,GACpCM,EAAc,CAAEH,OAAQA,EAAQrm6B,GAAIhxC,EAAQs38B,UAAWA,GAa3D,OAZIH,GAECM,GADD590B,EAAQs90B,EAAat90B,QACGs90B,EAAa11jB,QAAQtwa,KAAKqm+B,KAGlD390B,EAAQ,EAAYovB,UAAUiuzB,EAAeQ,GAAaA,KACpDH,aAAeL,EACrBF,GAAiBxmB,IAAI0mB,EAAer90B,EAAM890B,eAAiB,CACvD990B,MAAOA,EACP4nR,QAAS,CAAC+1jB,MAGX390B,CACX,CAEI,OAAOq90B,CACX,CAxBI,OAAOr90B,CAyBf,CACA,SAAS690B,KACL,IAAIP,EAAe7n+B,KAAKqo+B,eACxBro+B,KAAK0wB,OAAS1wB,KAAK0vB,QAAU1vB,KAAKqo+B,eAAiB,KACnD,IAAK,IAAIzn+B,EAAI,EAAGA,EAAIin+B,EAAa11jB,QAAQ9xa,OAAQO,IAAK,CAClD,IAAIsn+B,EAAcL,EAAa11jB,QAAQvxa,GACnC8gE,EAAKwm6B,EAAYxm6B,GACrBA,GAAMA,EAAG1hE,KAAMko+B,EAAYF,WAC3BE,EAAYH,OAAOjiO,OACvB,CACA+hO,EAAa11jB,QAAQ9xa,OAAS,CAClC,CACO,SAAS8n+B,GAAa590B,GACzB,OAAOA,GAASA,EAAMxrH,OAASwrH,EAAMvrH,MACzC,CClDA,IAAIsp8B,GAAY,gCACT,SAASC,GAAan48B,EAAMo+zB,EAAgB1pmB,EAAM0jvB,EAAUr/8B,GAC/D,IAAKql0B,EACD,MAAO,GAEX,IAAImjI,GAAavh8B,EAAO,IAAIxrB,MAAM,MAClCukB,EAAUs/8B,GAAuBj6I,EAAgB1pmB,EAAM0jvB,EAAUr/8B,GACjE,IAAK,IAAIvoB,EAAI,EAAGi+H,EAAM8y1B,EAAUtx9B,OAAQO,EAAIi+H,EAAKj+H,IAC7C+w9B,EAAU/w9B,GAAK8n+B,GAAmB/W,EAAU/w9B,GAAIuoB,GAEpD,OAAOwo8B,EAAU9k9B,KAAK,KAC1B,CACA,SAAS479B,GAAuBj6I,EAAgB1pmB,EAAM0jvB,EAAUr/8B,GAE5D,IAAIw/8B,EAAet/kB,EAAO,CAAC,EAD3BlgY,EAAUA,GAAW,CAAC,GAEtBw/8B,EAAa7jvB,KAAOA,EACpB0jvB,EAAWl+B,GAAUk+B,EAAU,OAC/BG,EAAan7L,cAAgB88J,GAAUnh7B,EAAQqkxB,cAAe,GAC9D,IAAIo7L,EAAUD,EAAaC,QAAUt+B,GAAUnh7B,EAAQy/8B,QAAS,GAChED,EAAaE,YAAc19vB,GAAS,IAAK2Z,GACzC,IAAIgkvB,EAAeH,EAAaG,aAAe39vB,GAAS,IAAK2Z,GAC7D6jvB,EAAan36B,YAAc844B,GAAUnh7B,EAAQqoC,YAAa,IAE1D,IADA,IAAIu36B,EAAev6I,EAAiB3r1B,KAAK8K,IAAI,EAAG6g1B,EAAiB,GACxD5t1B,EAAI,EAAGA,EAAIgo+B,GAAWG,GAAgBD,EAAclo+B,IACzDmo+B,GAAgBD,EAEpB,IAAIE,EAAgB79vB,GAASq9vB,EAAU1jvB,GAUvC,OATIkkvB,EAAgBD,IAChBP,EAAW,GACXQ,EAAgB,GAEpBD,EAAev6I,EAAiBw6I,EAChCL,EAAaH,SAAWA,EACxBG,EAAaK,cAAgBA,EAC7BL,EAAaI,aAAeA,EAC5BJ,EAAan6I,eAAiBA,EACvBm6I,CACX,CACA,SAASD,GAAmBO,EAAU9/8B,GAClC,IAAIql0B,EAAiBrl0B,EAAQql0B,eACzB1pmB,EAAO37N,EAAQ27N,KACfikvB,EAAe5/8B,EAAQ4/8B,aAC3B,IAAKv6I,EACD,MAAO,GAEX,IAAIn8gB,EAAYlnG,GAAS89vB,EAAUnkvB,GACnC,GAAIutF,GAAam8gB,EACb,OAAOy6I,EAEX,IAAK,IAAI7k+B,EAAI,GAAIA,IAAK,CAClB,GAAIiuU,GAAa02pB,GAAgB3k+B,GAAK+kB,EAAQqkxB,cAAe,CACzDy7L,GAAY9/8B,EAAQq/8B,SACpB,KACJ,CACA,IAAIU,EAAkB,IAAN9k+B,EACV+k+B,GAAeF,EAAUF,EAAc5/8B,EAAQ2/8B,aAAc3/8B,EAAQ0/8B,aACrEx2pB,EAAY,EACRxvU,KAAKyK,MAAM279B,EAAS5o+B,OAAS0o+B,EAAe12pB,GAC5C,EAEVA,EAAYlnG,GADZ89vB,EAAWA,EAASxt8B,OAAO,EAAGyt8B,GACCpkvB,EACnC,CAIA,MAHiB,KAAbmkvB,IACAA,EAAW9/8B,EAAQqoC,aAEhBy36B,CACX,CACA,SAASE,GAAe/48B,EAAM248B,EAAcD,EAAcD,GAGtD,IAFA,IAAI9p8B,EAAQ,EACRn+B,EAAI,EACCi+H,EAAMzuG,EAAK/vB,OAAQO,EAAIi+H,GAAO9/F,EAAQgq8B,EAAcno+B,IAAK,CAC9D,IAAIyqP,EAAWj7N,EAAKrX,WAAWnY,GAC/Bm+B,GAAU,GAAKssN,GAAYA,GAAY,IAAOy9uB,EAAeD,CACjE,CACA,OAAOjo+B,CACX,CA+DA,IAAIwo+B,GACA,WACA,EAGAC,GACA,SAAsB/kC,GAClBtk8B,KAAKsk8B,OAAS,GACVA,IACAtk8B,KAAKsk8B,OAASA,EAEtB,EAGAglC,GACA,WACItp+B,KAAK++B,MAAQ,EACb/+B,KAAKg/B,OAAS,EACdh/B,KAAK+o+B,aAAe,EACpB/o+B,KAAKup+B,cAAgB,EACrBvp+B,KAAKwp+B,WAAa,EAClBxp+B,KAAKyp+B,YAAc,EACnBzp+B,KAAKurC,MAAQ,EACjB,EA6HJ,SAASm+7B,GAAWr2U,EAAO18kB,EAAKtiE,EAAOs19B,EAAU9luB,GAC7C,IAKI+luB,EACAC,EANAC,EAAqB,KAARnz5B,EACboz5B,EAAalmuB,GAAaxvP,EAAM219B,KAAKnmuB,IAAc,CAAC,EACpDt4N,EAAQ8nnB,EAAM9nnB,MACdu5M,EAAOilvB,EAAWjlvB,MAAQzwO,EAAMywO,KAChCmlvB,GAAU,EAGd,GAAIN,EAAU,CACV,IAAIO,EAAeH,EAAW7x2B,QAC1Biy2B,EAAgBD,EAAeA,EAAa,GAAKA,EAAa,GAAK,EACvE,GAAwB,MAApBH,EAAWhr8B,OAAsC,SAArBgr8B,EAAWhr8B,MAAkB,CACzD,IAAIqr8B,EAAevY,GAAakY,EAAWhr8B,MAAO4q8B,EAAS5q8B,OAASor8B,EAChE5+7B,EAAMlrC,OAAS,GACX+p+B,EAAeT,EAASU,WAAaV,EAAS5q8B,QAC9C6q8B,EAAWjz5B,EAAI/xE,MAAM,MACrBql+B,GAAU,GAGlBN,EAASU,WAAaD,CAC1B,KACK,CACD,IAAI/k1B,EAAM8+V,GAASxta,EAAKmuK,EAAM6kvB,EAAS5q8B,MAAO4q8B,EAAS9ivB,SAAU8ivB,EAASU,YAC1EV,EAASU,WAAahl1B,EAAIgl1B,WAAaF,EACvCN,EAAcxk1B,EAAIwk1B,YAClBD,EAAWvk1B,EAAI95G,KACnB,CACJ,MAEIq+7B,EAAWjz5B,EAAI/xE,MAAM,MAEzB,IAAK,IAAIhE,EAAI,EAAGA,EAAIgp+B,EAASvp+B,OAAQO,IAAK,CACtC,IAAIwvB,EAAOw58B,EAAShp+B,GAChBy8K,EAAQ,IAAI+rzB,GAYhB,GAXA/rzB,EAAMwmF,UAAYA,EAClBxmF,EAAMjtJ,KAAOA,EACbitJ,EAAMitzB,cAAgBl68B,IAAS058B,EACC,iBAArBC,EAAWhr8B,MAClBs+I,EAAMt+I,MAAQgr8B,EAAWhr8B,MAGzBs+I,EAAMt+I,MAAQ8q8B,EACRA,EAAYjp+B,GACZuqO,GAAS/6M,EAAM00N,GAEpBlkP,GAAMqp+B,EAQP1+7B,EAAM1pC,KAAK,IAAIwn+B,GAAa,CAAChszB,SARb,CAChB,IAAIinxB,GAAU/45B,EAAMA,EAAMlrC,OAAS,KAAOkrC,EAAM,GAAK,IAAI897B,KAAiB/kC,OACtEimC,EAAYjmC,EAAOjk8B,OACR,IAAdkq+B,GAAmBjmC,EAAO,GAAGgmC,aACvBhmC,EAAO,GAAKjnxB,GACXjtJ,IAASm68B,GAAaT,IAAexlC,EAAOzi8B,KAAKw7K,EAC7D,CAIJ,CACJ,CAQA,IAAImtzB,GAAe928B,GAAO,UAAU9uB,MAAM,KAAK,SAAUsoN,EAAKq/D,GAE1D,OADAr/D,EAAIq/D,IAAM,EACHr/D,CACX,GAAG,CAAC,GACJ,SAASu9wB,GAAgBl+sB,GACrB,OAZJ,SAA4BA,GACxB,IAAIrxP,EAAOqxP,EAAGxzQ,WAAW,GACzB,OAAOmiB,GAAQ,IAAQA,GAAQ,KACxBA,GAAQ,KAASA,GAAQ,MACzBA,GAAQ,MAAUA,GAAQ,MAC1BA,GAAQ,MAAUA,GAAQ,IACrC,CAMQwv8B,CAAmBn+sB,MACfi+sB,GAAaj+sB,EAMzB,CACA,SAAS43N,GAAS/zd,EAAM00N,EAAMutF,EAAWs4pB,EAAYC,GAOjD,IANA,IAAIr/7B,EAAQ,GACRs+7B,EAAc,GACdvq7B,EAAO,GACPur7B,EAAc,GACdC,EAAmB,EACnBT,EAAa,EACRzp+B,EAAI,EAAGA,EAAIwvB,EAAK/vB,OAAQO,IAAK,CAClC,IAAI2rR,EAAKn8P,EAAKvX,OAAOjY,GACrB,GAAW,OAAP2rR,EAAJ,CAaA,IAAIw+sB,EAAU5/vB,GAASohD,EAAIznC,GACvBkmvB,GAASL,IAAsBF,GAAgBl+sB,IAC9ChhP,EAAMlrC,OAELgq+B,EAAaU,EAAU14pB,EADvBu4pB,EAAiBP,EAAaU,EAAU14pB,GAErCg4pB,GAYI/q7B,GAAQur7B,KACTG,GACK1r7B,IACDA,EAAOur7B,EACPA,EAAc,GAEdR,EADAS,EAAmB,GAGvBv/7B,EAAM1pC,KAAKy9C,GACXuq7B,EAAYho+B,KAAKwo+B,EAAaS,GAC9BD,GAAet+sB,EAEfjtO,EAAO,GACP+q7B,EAFAS,GAAoBC,IAKhBF,IACAvr7B,GAAQur7B,EACRA,EAAc,GACdC,EAAmB,GAEvBv/7B,EAAM1pC,KAAKy9C,GACXuq7B,EAAYho+B,KAAKwo+B,GACjB/q7B,EAAOitO,EACP89sB,EAAaU,IAnCbC,GACAz/7B,EAAM1pC,KAAKgp+B,GACXhB,EAAYho+B,KAAKip+B,GACjBD,EAAct+sB,EACdu+sB,EAAmBC,IAGnBx/7B,EAAM1pC,KAAK0qR,GACXs9sB,EAAYho+B,KAAKkp+B,KAgC7BV,GAAcU,EACVC,GACAH,GAAet+sB,EACfu+sB,GAAoBC,IAGhBF,IACAvr7B,GAAQur7B,EACRA,EAAc,GACdC,EAAmB,GAEvBxr7B,GAAQitO,GA1DZ,MAXQs+sB,IACAvr7B,GAAQur7B,EACRR,GAAcS,GAElBv/7B,EAAM1pC,KAAKy9C,GACXuq7B,EAAYho+B,KAAKwo+B,GACjB/q7B,EAAO,GACPur7B,EAAc,GACdC,EAAmB,EACnBT,EAAa,CA8DrB,CAgBA,OAfK9+7B,EAAMlrC,QAAWi/C,IAClBA,EAAOlvB,EACPy68B,EAAc,GACdC,EAAmB,GAEnBD,IACAvr7B,GAAQur7B,GAERvr7B,IACA/T,EAAM1pC,KAAKy9C,GACXuq7B,EAAYho+B,KAAKwo+B,IAEA,IAAjB9+7B,EAAMlrC,SACNgq+B,GAAcO,GAEX,CACHP,WAAYA,EACZ9+7B,MAAOA,EACPs+7B,YAAaA,EAErB,CC/cA,IAAIoB,GAAkB,cAAgBpo+B,KAAKogD,MAAuB,GAAhBpgD,KAAKwF,UAC5C6i+B,GAAuB,CAC9BlmN,WAAY,EACZF,cAAe,EACfC,cAAe,EACfl0pB,YAAa,OACb+a,QAAS,EACTnd,MAAO,eAEA082B,GAAiC,CACxC929B,MAAO,CACH2wwB,YAAY,EACZF,eAAe,EACfC,eAAe,EACfl0pB,aAAa,EACb+a,SAAS,IAGjBs/1B,GAAqBD,KAAmB,EACxC,IAAI,GAAsB,CAAC,IAAK,KAAM,aAClCG,GAAqC,CAAC,aACtCC,GAAe,SAAU3inB,GAEzB,SAAS2inB,EAAYp+7B,GACjB,OAAOy7U,EAAO9oX,KAAKI,KAAMitC,IAAUjtC,IACvC,CAyQ+B,IACvBsr+B,EAcR,OA3RA,GAAUD,EAAa3inB,GAIvB2inB,EAAY3r+B,UAAU+y9B,MAAQ,SAAUxl7B,GAEpC,IADA,IAAIu85B,EAAUl27B,GAAK25B,GACVrsC,EAAI,EAAGA,EAAI4o8B,EAAQnp8B,OAAQO,IAAK,CACrC,IAAIikB,EAAM2k7B,EAAQ5o8B,GACN,UAARikB,EACA7kB,KAAKoqZ,SAASn9W,EAAMpoB,IAGpB6jW,EAAOhpX,UAAU+09B,OAAO709B,KAAKI,KAAM6kB,EAAKooB,EAAMpoB,GAEtD,CACK7kB,KAAKqU,OACNrU,KAAKoqZ,SAAS,CAAC,EAEvB,EACAihlB,EAAY3r+B,UAAU6r+B,YAAc,WAAc,EAClDF,EAAY3r+B,UAAU8r+B,WAAa,WAAc,EACjDH,EAAY3r+B,UAAU+r+B,iBAAmB,WAAc,EACvDJ,EAAY3r+B,UAAUgs+B,gBAAkB,WAAc,EACtDL,EAAY3r+B,UAAUis+B,gBAAkB,SAAUC,EAAWC,EAAYC,EAAkBC,GACvF,IAuQqBly1B,EAAI96G,EAAOC,EAvQ5B57B,EAAIpD,KAAK4iI,UACb,GAAI5iI,KAAKmoC,QACFnoC,KAAKs79B,WACkB,IAAvBt79B,KAAKqU,MAAMu3H,SACV5rI,KAAKgs+B,UAmQQny1B,EAlQU75I,KAkQN++B,EAlQY6s8B,EAkQL5s8B,EAlQgB6s8B,EAmQpD,GAAQ/r2B,KAAK+Z,EAAGsqG,mBACZtqG,EAAGjX,WACH,GAAQkp0B,eAAejyzB,EAAGjX,WAE9Bqp2B,GAASlt8B,MAAQA,EACjBkt8B,GAASjt8B,OAASA,GACV,GAAQ2oJ,UAAUskzB,MAxQd7o+B,IAAMA,EAAE,KAAOA,EAAE,GACrB,OAAO,EAEX,GAAI0o+B,GAAoB9r+B,KAAK668B,YACzB,IAAK,IAAIj68B,EAAI,EAAGA,EAAIZ,KAAK668B,YAAYx68B,SAAUO,EAC3C,GAAIZ,KAAK668B,YAAYj68B,GAAGsr+B,aACpB,OAAO,EAInB,GAAIH,GAAqB/r+B,KAAKqxF,OAE1B,IADA,IAAIikxB,EAAWt12B,KAAKqxF,OACbikxB,GAAU,CACb,GAAIA,EAASnt0B,OACT,OAAO,EAEXmt0B,EAAWA,EAASjkxB,MACxB,CAEJ,OAAO,CACX,EACAg64B,EAAY3r+B,UAAUk08B,QAAU,SAAU3v8B,EAAGjB,GACzC,OAAOhD,KAAKms+B,YAAYlo+B,EAAGjB,EAC/B,EACAqo+B,EAAY3r+B,UAAUmmM,SAAW,SAAUnkI,EAAIv0B,GAC3Cu0B,EAAG9hE,KAAKutC,EAASntC,KACrB,EACAqr+B,EAAY3r+B,UAAUys+B,YAAc,SAAUlo+B,EAAGjB,GAC7C,IAAIi8J,EAAQj/J,KAAKix9B,sBAAsBht9B,EAAGjB,GAE1C,OADWhD,KAAKmkP,kBACJyvtB,QAAQ30yB,EAAM,GAAIA,EAAM,GACxC,EACAos0B,EAAY3r+B,UAAUq59B,aAAe,WACjC,IAAIrl4B,EAAO1zF,KAAKos+B,WAChB,IAAKps+B,KAAKos+B,YAAcps+B,KAAK268B,QAAS,CAClC,IAAI/30B,EAAY5iI,KAAK4iI,UACjB+ja,EAAS3miB,KAAKmkP,kBACd9vO,EAAQrU,KAAKqU,MACbg49B,EAAah49B,EAAM2wwB,YAAc,EACjCF,EAAgBzwwB,EAAMywwB,eAAiB,EACvCC,EAAgB1wwB,EAAM0wwB,eAAiB,EAC3CrxrB,EAAO1zF,KAAKos+B,aAAeps+B,KAAKos+B,WAAa,IAAI,GAAa,EAAG,EAAG,EAAG,IACnExp2B,EACA,GAAakp0B,eAAep42B,EAAMizc,EAAQ/ja,GAG1ClvC,EAAKosC,KAAK6ma,IAEV0lc,GAAcvnN,GAAiBC,KAC/BrxrB,EAAK30D,OAAsB,EAAbst8B,EAAiBxp+B,KAAKmjH,IAAI8+pB,GACxCpxrB,EAAK10D,QAAuB,EAAbqt8B,EAAiBxp+B,KAAKmjH,IAAI++pB,GACzCrxrB,EAAKzvF,EAAIpB,KAAKgL,IAAI6lF,EAAKzvF,EAAGyvF,EAAKzvF,EAAI6gxB,EAAgBunN,GACnD344B,EAAK1wF,EAAIH,KAAKgL,IAAI6lF,EAAK1wF,EAAG0wF,EAAK1wF,EAAI+hxB,EAAgBsnN,IAEvD,IAAIzjzB,EAAY5oL,KAAKss+B,mBAChB544B,EAAKq8G,WACNr8G,EAAKzvF,EAAIpB,KAAKyK,MAAMomF,EAAKzvF,EAAI2kL,GAC7Bl1F,EAAK1wF,EAAIH,KAAKyK,MAAMomF,EAAK1wF,EAAI4lL,GAC7Bl1F,EAAK30D,MAAQl8B,KAAKuK,KAAKsmF,EAAK30D,MAAQ,EAAgB,EAAZ6pJ,GACxCl1F,EAAK10D,OAASn8B,KAAKuK,KAAKsmF,EAAK10D,OAAS,EAAgB,EAAZ4pJ,GAElD,CACA,OAAOl1F,CACX,EACA234B,EAAY3r+B,UAAU6s+B,iBAAmB,SAAUC,GAC3CA,GACAxs+B,KAAKys+B,eAAiBzs+B,KAAKys+B,gBAAkB,IAAI,GAAa,EAAG,EAAG,EAAG,GACvEzs+B,KAAKys+B,eAAe3s2B,KAAK0s2B,IAGzBxs+B,KAAKys+B,eAAiB,IAE9B,EACApB,EAAY3r+B,UAAUgt+B,iBAAmB,WACrC,OAAO1s+B,KAAKys+B,cAChB,EACApB,EAAY3r+B,UAAUit+B,aAAe,SAAU9vvB,GAC3C,OAAO78O,KAAKwuP,QAAQ,QAAS3R,EACjC,EACAwuvB,EAAY3r+B,UAAU+49B,sBAAwB,SAAUhlvB,GAClC,UAAdA,EACAzzO,KAAKs09B,aAGLt09B,KAAK0y9B,YAEb,EACA2Y,EAAY3r+B,UAAU+09B,OAAS,SAAU5v8B,EAAK1jB,GAC9B,UAAR0jB,EACA6jW,EAAOhpX,UAAU+09B,OAAO709B,KAAKI,KAAM6kB,EAAK1jB,GAGnCnB,KAAKqU,MAINrU,KAAKska,SAASnja,GAHdnB,KAAKoqZ,SAASjpZ,EAM1B,EACAkq+B,EAAY3r+B,UAAU4ka,SAAW,SAAUuwjB,EAAU1z9B,GAQjD,MAPwB,iBAAb0z9B,EACP709B,KAAKqU,MAAMwg9B,GAAY1z9B,EAGvBkoZ,EAAOrpZ,KAAKqU,MAAOwg9B,GAEvB709B,KAAKs09B,aACEt09B,IACX,EACAqr+B,EAAY3r+B,UAAU409B,WAAa,SAAUsY,GACpCA,GACD5s+B,KAAK0y9B,aAET1y9B,KAAK268B,S1B1KkB,E0B2KnB368B,KAAK6s+B,QACL7s+B,KAAK6s+B,MAAQ,KAErB,EACAxB,EAAY3r+B,UAAUomwB,MAAQ,WAC1B9lwB,KAAKs09B,YACT,EACA+W,EAAY3r+B,UAAUot+B,aAAe,WACjC,S1BnLuB,E0BmLb9s+B,KAAK268B,QACnB,EACA0wB,EAAY3r+B,UAAUqt+B,aAAe,WACjC/s+B,KAAK268B,UAAW,CACpB,EACA0wB,EAAY3r+B,UAAUst+B,YAAc,SAAU9/wB,GAC1C,OAAOk+uB,GAAa8/B,GAAsBh+wB,EAC9C,EACAm+wB,EAAY3r+B,UAAU0qZ,SAAW,SAAUl9L,GAClCA,EAAI+9wB,MACL/9wB,EAAMltN,KAAKgt+B,YAAY9/wB,IAEvBltN,KAAKq29B,UACLr29B,KAAKit+B,aAAe//wB,EAGpBltN,KAAKqU,MAAQ64M,EAEjBltN,KAAKs09B,YACT,EACA+W,EAAY3r+B,UAAUwt+B,cAAgB,SAAUhgxB,GAC5C,OAAOA,EAAI+9wB,GACf,EACAI,EAAY3r+B,UAAUs19B,mBAAqB,SAAUD,GACjDrsmB,EAAOhpX,UAAUs19B,mBAAmBp19B,KAAKI,KAAM+09B,GAC/C,IAAIE,EAAcj19B,KAAKk19B,aACnBH,EAAQ1g9B,QAAU4g9B,EAAY5g9B,QAC9B4g9B,EAAY5g9B,MAAQrU,KAAKmt+B,YAAYnt+B,KAAKgt+B,cAAeht+B,KAAKqU,QAElErU,KAAKq19B,qBAAqBN,EAASE,EAAa,GACpD,EACAoW,EAAY3r+B,UAAU029B,eAAiB,SAAUp6Z,EAAWrwjB,EAAOsp9B,EAAaU,EAAmB7t2B,EAAYgu2B,GAC3GptmB,EAAOhpX,UAAU029B,eAAex29B,KAAKI,KAAMg8jB,EAAWrwjB,EAAOsp9B,EAAaU,EAAmB7t2B,EAAYgu2B,GACzG,IACIsX,EADAhW,IAAyBzr9B,GAASgq9B,GAoBtC,GAlBIhq9B,GAASA,EAAM0I,MACXyzG,EACI6t2B,EACAyX,EAAczh+B,EAAM0I,OAGpB+49B,EAAcpt+B,KAAKmt+B,YAAYnt+B,KAAKgt+B,cAAe/X,EAAY5g9B,OAC/DrU,KAAKmt+B,YAAYC,EAAazh+B,EAAM0I,SAIxC+49B,EAAcpt+B,KAAKmt+B,YAAYnt+B,KAAKgt+B,cAAerX,EAAoB319B,KAAKqU,MAAQ4g9B,EAAY5g9B,OAChGrU,KAAKmt+B,YAAYC,EAAazh+B,EAAM0I,QAGnC+i9B,IACLgW,EAAcnY,EAAY5g9B,OAE1B+49B,EACA,GAAItl3B,EAAY,CACZ,IAAIul3B,EAAcrt+B,KAAKqU,MAEvB,GADArU,KAAKqU,MAAQrU,KAAKgt+B,YAAY5V,EAAuB,CAAC,EAAIiW,GACtDjW,EAEA,IADA,IAAIkW,EAAch69B,GAAK+59B,GACdzs+B,EAAI,EAAGA,EAAI0s+B,EAAYjt+B,OAAQO,KAChCikB,EAAMyo9B,EAAY1s+B,MACXws+B,IACPA,EAAYvo9B,GAAOuo9B,EAAYvo9B,GAC/B7kB,KAAKqU,MAAMwQ,GAAOwo9B,EAAYxo9B,IAI1C,IAAIm18B,EAAa1m9B,GAAK859B,GACtB,IAASxs+B,EAAI,EAAGA,EAAIo59B,EAAW359B,OAAQO,IAAK,CACxC,IAAIikB,EAAMm18B,EAAWp59B,GACrBZ,KAAKqU,MAAMwQ,GAAO7kB,KAAKqU,MAAMwQ,EACjC,CACA7kB,KAAKw39B,iBAAiBx7Z,EAAW,CAC7B3njB,MAAO+49B,GACRtX,EAAc919B,KAAKut+B,yBAC1B,MAEIvt+B,KAAKoqZ,SAASgjlB,GAGtB,IAAII,EAAaxt+B,KAAKq29B,UAAY+U,GAAqC,GACvE,IAASxq+B,EAAI,EAAGA,EAAI4s+B,EAAWnt+B,OAAQO,IAC/BikB,EAAM2o9B,EAAW5s+B,GACjB+K,GAAuB,MAAdA,EAAMkZ,GACf7kB,KAAK6kB,GAAOlZ,EAAMkZ,GAEbuy8B,GACmB,MAApBnC,EAAYpw8B,KACZ7kB,KAAK6kB,GAAOow8B,EAAYpw8B,GAIxC,EACAwm9B,EAAY3r+B,UAAUo39B,aAAe,SAAUznd,GAG3C,IAFA,IACIo+d,EADA5W,EAAcnumB,EAAOhpX,UAAUo39B,aAAal39B,KAAKI,KAAMqvgB,GAElDzugB,EAAI,EAAGA,EAAIyugB,EAAOhvgB,OAAQO,IAAK,CACpC,IAAI+K,EAAQ0jgB,EAAOzugB,GACf+K,EAAM0I,QACNo59B,EAAcA,GAAe,CAAC,EAC9Bzt+B,KAAKmt+B,YAAYM,EAAa9h+B,EAAM0I,OAE5C,CAIA,OAHIo59B,IACA5W,EAAYxi9B,MAAQo59B,GAEjB5W,CACX,EACAwU,EAAY3r+B,UAAUyt+B,YAAc,SAAUC,EAAaC,GAEvD,OADAhklB,EAAO+jlB,EAAaC,GACbD,CACX,EACA/B,EAAY3r+B,UAAU6t+B,uBAAyB,WAC3C,OAAOpC,EACX,EACAE,EAAYha,mBACJia,EAAYD,EAAY3r+B,WAClB6M,KAAO,cACjB++9B,EAAUhQ,WAAY,EACtBgQ,EAAU3l+B,EAAI,EACd2l+B,EAAUvuyB,GAAK,EACfuuyB,EAAU7xB,OAAS,EACnB6xB,EAAUU,SAAU,EACpBV,EAAUjq1B,OAAS,UACnBiq1B,EAAU90B,WAAY,EACtB80B,EAAUoC,aAAc,EACxBpC,EAAUuB,MAAQ,KAClBvB,EAAUgB,mBAAqB,OAC/BhB,EAAU3wB,Q1BnTa,E0BmTHvB,KAEjBiyB,CACX,CA7RkB,CA6RhB,IACE,GAAU,IAAI,GAAa,EAAG,EAAG,EAAG,GACpCY,GAAW,IAAI,GAAa,EAAG,EAAG,EAAG,GAUzC,YCjUA,IAAI,GAAUpp+B,KAAKgL,IACf,GAAUhL,KAAK8K,IACfgg+B,GAAU9q+B,KAAK4wH,IACfm62B,GAAU/q+B,KAAKuxH,IACfozL,GAAgB,EAAV3kT,KAAKsmC,GACX3C,GAAQ,KACRC,GAAM,KACNon8B,GAAY,KACT,SAASC,GAAWxi8B,EAAQz9B,EAAKF,GACpC,GAAsB,IAAlB29B,EAAOjrC,OAAX,CAQA,IALA,IAAIyC,EAAIwoC,EAAO,GACXzM,EAAO/7B,EAAE,GACT+8F,EAAQ/8F,EAAE,GACVg8B,EAAMh8B,EAAE,GACRg9F,EAASh9F,EAAE,GACNlC,EAAI,EAAGA,EAAI0qC,EAAOjrC,OAAQO,IAC/BkC,EAAIwoC,EAAO1qC,GACXi+B,EAAO,GAAQA,EAAM/7B,EAAE,IACvB+8F,EAAQ,GAAQA,EAAO/8F,EAAE,IACzBg8B,EAAM,GAAQA,EAAKh8B,EAAE,IACrBg9F,EAAS,GAAQA,EAAQh9F,EAAE,IAE/B+K,EAAI,GAAKgxB,EACThxB,EAAI,GAAKixB,EACTnxB,EAAI,GAAKkyF,EACTlyF,EAAI,GAAKmyF,CAhBT,CAiBJ,CACO,SAASiu4B,GAAS3nvB,EAAI30D,EAAIm2H,EAAIl2H,EAAI7jL,EAAKF,GAC1CE,EAAI,GAAK,GAAQu4O,EAAIwhE,GACrB/5S,EAAI,GAAK,GAAQ4jL,EAAIC,GACrB/jL,EAAI,GAAK,GAAQy4O,EAAIwhE,GACrBj6S,EAAI,GAAK,GAAQ8jL,EAAIC,EACzB,CACA,IAAIs8yB,GAAO,GACPC,GAAO,GACJ,SAASC,GAAU9nvB,EAAI30D,EAAIm2H,EAAIl2H,EAAIoL,EAAIrlE,EAAIgxL,EAAIC,EAAI76S,EAAKF,GAC3D,IAAIwg+B,EAAe,GACfC,EAAU,GACV/u+B,EAAI8u+B,EAAa/nvB,EAAIwhE,EAAI9qH,EAAI2rH,EAAIulrB,IACrCng+B,EAAI,GAAKkyD,IACTlyD,EAAI,GAAKkyD,IACTpyD,EAAI,IAAK,IACTA,EAAI,IAAK,IACT,IAAK,IAAI/M,EAAI,EAAGA,EAAIvB,EAAGuB,IAAK,CACxB,IAAIqD,EAAImq+B,EAAQhovB,EAAIwhE,EAAI9qH,EAAI2rH,EAAIulrB,GAAKpt+B,IACrCiN,EAAI,GAAK,GAAQ5J,EAAG4J,EAAI,IACxBF,EAAI,GAAK,GAAQ1J,EAAG0J,EAAI,GAC5B,CAEA,IADAtO,EAAI8u+B,EAAa18yB,EAAIC,EAAIj6D,EAAIixL,EAAIulrB,IACxBrt+B,EAAI,EAAGA,EAAIvB,EAAGuB,IAAK,CACxB,IAAIoC,EAAIor+B,EAAQ38yB,EAAIC,EAAIj6D,EAAIixL,EAAIulrB,GAAKrt+B,IACrCiN,EAAI,GAAK,GAAQ7K,EAAG6K,EAAI,IACxBF,EAAI,GAAK,GAAQ3K,EAAG2K,EAAI,GAC5B,CACAE,EAAI,GAAK,GAAQu4O,EAAIv4O,EAAI,IACzBF,EAAI,GAAK,GAAQy4O,EAAIz4O,EAAI,IACzBE,EAAI,GAAK,GAAQ46S,EAAI56S,EAAI,IACzBF,EAAI,GAAK,GAAQ86S,EAAI96S,EAAI,IACzBE,EAAI,GAAK,GAAQ4jL,EAAI5jL,EAAI,IACzBF,EAAI,GAAK,GAAQ8jL,EAAI9jL,EAAI,IACzBE,EAAI,GAAK,GAAQ66S,EAAI76S,EAAI,IACzBF,EAAI,GAAK,GAAQ+6S,EAAI/6S,EAAI,GAC7B,CACO,SAAS0g+B,GAAcjovB,EAAI30D,EAAIm2H,EAAIl2H,EAAIoL,EAAIrlE,EAAI5pH,EAAKF,GACvD,IAAI2g+B,EAAoB,GACpBC,EAAc,GACdlwS,EAAK,GAAQ,GAAQiwS,EAAkBlovB,EAAIwhE,EAAI9qH,GAAK,GAAI,GACxDijkB,EAAK,GAAQ,GAAQuuO,EAAkB78yB,EAAIC,EAAIj6D,GAAK,GAAI,GACxDxzH,EAAIsq+B,EAAYnovB,EAAIwhE,EAAI9qH,EAAIuhgB,GAC5Br7rB,EAAIur+B,EAAY98yB,EAAIC,EAAIj6D,EAAIsooB,GAChClyvB,EAAI,GAAK,GAAQu4O,EAAItpD,EAAI74L,GACzB4J,EAAI,GAAK,GAAQ4jL,EAAIh6D,EAAIz0H,GACzB2K,EAAI,GAAK,GAAQy4O,EAAItpD,EAAI74L,GACzB0J,EAAI,GAAK,GAAQ8jL,EAAIh6D,EAAIz0H,EAC7B,CACO,SAASwr+B,GAAQvq+B,EAAGjB,EAAGk6K,EAAIC,EAAI0rmB,EAAYC,EAAU2lN,EAAe5g+B,EAAKF,GAC5E,IAAI+g+B,EAAU,GACVC,EAAU,GACVpmc,EAAO1liB,KAAKmjH,IAAI6iqB,EAAaC,GACjC,GAAIvgP,EAAO/gP,GAAM,MAAQ+gP,EAAO,KAK5B,OAJA16hB,EAAI,GAAK5J,EAAIi5K,EACbrvK,EAAI,GAAK7K,EAAIm6K,EACbxvK,EAAI,GAAK1J,EAAIi5K,OACbvvK,EAAI,GAAK3K,EAAIm6K,GAuBjB,GApBA32I,GAAM,GAAKon8B,GAAQ/kN,GAAc3rmB,EAAKj5K,EACtCuiC,GAAM,GAAKmn8B,GAAQ9kN,GAAc1rmB,EAAKn6K,EACtCyjC,GAAI,GAAKmn8B,GAAQ9kN,GAAY5rmB,EAAKj5K,EAClCwiC,GAAI,GAAKkn8B,GAAQ7kN,GAAY3rmB,EAAKn6K,EAClC0r+B,EAAQ7g+B,EAAK24B,GAAOC,IACpBko8B,EAAQhh+B,EAAK64B,GAAOC,KACpBoivB,GAA0B,IACT,IACbA,GAA0Brhe,KAE9Bshe,GAAsB,IACP,IACXA,GAAsBthe,IAEtBqhe,EAAaC,IAAa2lN,EAC1B3lN,GAAYthe,GAEPqhe,EAAaC,GAAY2lN,IAC9B5lN,GAAcrhe,IAEdinrB,EAAe,CACf,IAAI7qoB,EAAMklb,EACVA,EAAWD,EACXA,EAAajlb,CACjB,CACA,IAAK,IAAIj1H,EAAQ,EAAGA,EAAQm6iB,EAAUn6iB,GAAS9rO,KAAKsmC,GAAK,EACjDwlM,EAAQk6iB,IACRglN,GAAU,GAAKD,GAAQj/vB,GAASzxD,EAAKj5K,EACrC4p+B,GAAU,GAAKF,GAAQh/vB,GAASxxD,EAAKn6K,EACrC0r+B,EAAQ7g+B,EAAKgg+B,GAAWhg+B,GACxB8g+B,EAAQhh+B,EAAKkg+B,GAAWlg+B,GAGpC,CCtHA,IAAIih+B,GAAM,CACN/o+B,EAAG,EACHxB,EAAG,EACHF,EAAG,EACH6B,EAAG,EACHnB,EAAG,EACHJ,EAAG,EACHH,EAAG,GAEHuq+B,GAAU,GACVC,GAAU,GACVjh+B,GAAM,GACNF,GAAM,GACNoh+B,GAAO,GACPC,GAAO,GACP,GAAUns+B,KAAKgL,IACf,GAAUhL,KAAK8K,IACf,GAAU9K,KAAKuxH,IACf,GAAUvxH,KAAK4wH,IACfw72B,GAAUps+B,KAAKmjH,IACf78E,GAAKtmC,KAAKsmC,GACV,GAAW,EAALA,GACN+l8B,GAAwC,oBAAjBlv9B,aACvBmv9B,GAAY,GAChB,SAASC,GAAO/P,GAEZ,OADQx89B,KAAKogD,MAAMo86B,EAASl27B,GAAK,KAAO,IAC5B,EAAKA,EACrB,CACO,SAASkm8B,GAAmBhinB,EAAQohnB,GACvC,IAAIa,EAAgBF,GAAO/hnB,EAAO,IAC9BiinB,EAAgB,IAChBA,GAAiB,IAErB,IAAIvp3B,EAAQup3B,EAAgBjinB,EAAO,GAC/BkinB,EAAclinB,EAAO,GACzBkinB,GAAexp3B,GACV0o3B,GAAiBc,EAAcD,GAAiB,GACjDC,EAAcD,EAAgB,GAEzBb,GAAiBa,EAAgBC,GAAe,GACrDA,EAAcD,EAAgB,IAExBb,GAAiBa,EAAgBC,EACvCA,EAAcD,GAAiB,GAAMF,GAAOE,EAAgBC,IAEvDd,GAAiBa,EAAgBC,IACtCA,EAAcD,GAAiB,GAAMF,GAAOG,EAAcD,KAE9DjinB,EAAO,GAAKiinB,EACZjinB,EAAO,GAAKkinB,CAChB,CACA,IAAIC,GAAa,WACb,SAASA,EAAUC,GACfzv+B,KAAKwv9B,IAAM,EACXxv9B,KAAK0v+B,IAAM,EACX1v+B,KAAK2v+B,IAAM,EACX3v+B,KAAK4v+B,IAAM,EACX5v+B,KAAK6v+B,IAAM,EACX7v+B,KAAK4tP,KAAO,EACR6hvB,IACAzv+B,KAAK8v+B,WAAY,GAEjB9v+B,KAAK8v+B,YACL9v+B,KAAKwP,KAAO,GAEpB,CAinBA,OAhnBAgg+B,EAAU9v+B,UAAUqw+B,gBAAkB,WAClC/v+B,KAAKm+T,UACT,EACAqxqB,EAAU9v+B,UAAU64U,WAAa,WAC7B,OAAOv4U,KAAKm+T,QAChB,EACAqxqB,EAAU9v+B,UAAUotP,SAAW,SAAUuqG,EAAIC,EAAI04oB,IAC7CA,EAAyBA,GAA0B,GACtB,IACzBhw+B,KAAKiw+B,IAAMhB,GAAQe,EAAyB,GAAM34oB,IAAO,EACzDr3V,KAAKkw+B,IAAMjB,GAAQe,EAAyB,GAAM14oB,IAAO,EAEjE,EACAk4oB,EAAU9v+B,UAAUyw+B,OAAS,SAAU3gB,GACnCxv9B,KAAKwv9B,IAAMA,CACf,EACAggB,EAAU9v+B,UAAUstD,WAAa,SAAUsqL,GACvCt3O,KAAKqn8B,KAAO/vtB,CAChB,EACAk4vB,EAAU9v+B,UAAUqtD,WAAa,WAC7B,OAAO/sD,KAAKqn8B,IAChB,EACAmoC,EAAU9v+B,UAAUonwB,UAAY,WAG5B,OAFA9mwB,KAAKqn8B,MAAQrn8B,KAAKqn8B,KAAKvgM,YACvB9mwB,KAAKihE,QACEjhE,IACX,EACAwv+B,EAAU9v+B,UAAUuhE,MAAQ,WACpBjhE,KAAK8v+B,YACL9v+B,KAAK4tP,KAAO,GAEZ5tP,KAAKow+B,cACLpw+B,KAAKow+B,YAAc,KACnBpw+B,KAAKqw+B,SAAW,GAEpBrw+B,KAAKm+T,UACT,EACAqxqB,EAAU9v+B,UAAUqnwB,OAAS,SAAU9iwB,EAAGjB,GAQtC,OAPAhD,KAAKsw+B,iBACLtw+B,KAAKuw+B,QAAQ3B,GAAI/o+B,EAAG5B,EAAGjB,GACvBhD,KAAKqn8B,MAAQrn8B,KAAKqn8B,KAAKtgM,OAAO9iwB,EAAGjB,GACjChD,KAAK4v+B,IAAM3r+B,EACXjE,KAAK6v+B,IAAM7s+B,EACXhD,KAAK0v+B,IAAMzr+B,EACXjE,KAAK2v+B,IAAM3s+B,EACJhD,IACX,EACAwv+B,EAAU9v+B,UAAUsnwB,OAAS,SAAU/iwB,EAAGjB,GACtC,IAAIwxI,EAAKy61B,GAAQhr+B,EAAIjE,KAAK0v+B,KACtBr71B,EAAK461B,GAAQjs+B,EAAIhD,KAAK2v+B,KACtBa,EAAah81B,EAAKx0I,KAAKiw+B,KAAO571B,EAAKr0I,KAAKkw+B,IAK5C,GAJAlw+B,KAAKuw+B,QAAQ3B,GAAIvq+B,EAAGJ,EAAGjB,GACnBhD,KAAKqn8B,MAAQmpC,GACbxw+B,KAAKqn8B,KAAKrgM,OAAO/iwB,EAAGjB,GAEpBwt+B,EACAxw+B,KAAK0v+B,IAAMzr+B,EACXjE,KAAK2v+B,IAAM3s+B,EACXhD,KAAKyw+B,eAAiB,MAErB,CACD,IAAIh81B,EAAKD,EAAKA,EAAKH,EAAKA,EACpBI,EAAKz0I,KAAKyw+B,iBACVzw+B,KAAK0w+B,YAAczs+B,EACnBjE,KAAK2w+B,YAAc3t+B,EACnBhD,KAAKyw+B,eAAiBh81B,EAE9B,CACA,OAAOz0I,IACX,EACAwv+B,EAAU9v+B,UAAUsqxB,cAAgB,SAAUpie,EAAIl2H,EAAIoL,EAAIrlE,EAAIgxL,EAAIC,GAQ9D,OAPA1oT,KAAKsw+B,iBACLtw+B,KAAKuw+B,QAAQ3B,GAAIzq+B,EAAGyjT,EAAIl2H,EAAIoL,EAAIrlE,EAAIgxL,EAAIC,GACpC1oT,KAAKqn8B,MACLrn8B,KAAKqn8B,KAAKr9K,cAAcpie,EAAIl2H,EAAIoL,EAAIrlE,EAAIgxL,EAAIC,GAEhD1oT,KAAK0v+B,IAAMjnrB,EACXzoT,KAAK2v+B,IAAMjnrB,EACJ1oT,IACX,EACAwv+B,EAAU9v+B,UAAUkx+B,iBAAmB,SAAUhprB,EAAIl2H,EAAIoL,EAAIrlE,GAQzD,OAPAz3H,KAAKsw+B,iBACLtw+B,KAAKuw+B,QAAQ3B,GAAI5o+B,EAAG4hT,EAAIl2H,EAAIoL,EAAIrlE,GAC5Bz3H,KAAKqn8B,MACLrn8B,KAAKqn8B,KAAKupC,iBAAiBhprB,EAAIl2H,EAAIoL,EAAIrlE,GAE3Cz3H,KAAK0v+B,IAAM5yyB,EACX98L,KAAK2v+B,IAAMl42B,EACJz3H,IACX,EACAwv+B,EAAU9v+B,UAAUwqxB,IAAM,SAAUxphB,EAAIumG,EAAIlnW,EAAG8oxB,EAAYC,EAAU2lN,GACjEzu+B,KAAKsw+B,iBACLnB,GAAU,GAAKtmN,EACfsmN,GAAU,GAAKrmN,EACfumN,GAAmBF,GAAWV,GAC9B5lN,EAAasmN,GAAU,GAEvB,IAAIpp3B,GADJ+iqB,EAAWqmN,GAAU,IACEtmN,EAKvB,OAJA7oxB,KAAKuw+B,QAAQ3B,GAAI/p+B,EAAG67P,EAAIumG,EAAIlnW,EAAGA,EAAG8oxB,EAAY9iqB,EAAO,EAAG0o3B,EAAgB,EAAI,GAC5Ezu+B,KAAKqn8B,MAAQrn8B,KAAKqn8B,KAAKn9K,IAAIxphB,EAAIumG,EAAIlnW,EAAG8oxB,EAAYC,EAAU2lN,GAC5Dzu+B,KAAK0v+B,IAAM,GAAQ5mN,GAAY/oxB,EAAI2gQ,EACnC1gQ,KAAK2v+B,IAAM,GAAQ7mN,GAAY/oxB,EAAIknW,EAC5BjnW,IACX,EACAwv+B,EAAU9v+B,UAAUmx+B,MAAQ,SAAUjprB,EAAIl2H,EAAIoL,EAAIrlE,EAAI6f,GAKlD,OAJAt3I,KAAKsw+B,iBACDtw+B,KAAKqn8B,MACLrn8B,KAAKqn8B,KAAKwpC,MAAMjprB,EAAIl2H,EAAIoL,EAAIrlE,EAAI6f,GAE7Bt3I,IACX,EACAwv+B,EAAU9v+B,UAAUg0F,KAAO,SAAUzvF,EAAGjB,EAAGO,EAAGX,GAI1C,OAHA5C,KAAKsw+B,iBACLtw+B,KAAKqn8B,MAAQrn8B,KAAKqn8B,KAAK3z2B,KAAKzvF,EAAGjB,EAAGO,EAAGX,GACrC5C,KAAKuw+B,QAAQ3B,GAAItq+B,EAAGL,EAAGjB,EAAGO,EAAGX,GACtB5C,IACX,EACAwv+B,EAAU9v+B,UAAUunwB,UAAY,WAC5BjnwB,KAAKsw+B,iBACLtw+B,KAAKuw+B,QAAQ3B,GAAInq+B,GACjB,IAAI6yO,EAAMt3O,KAAKqn8B,KACXjhtB,EAAKpmP,KAAK4v+B,IACVn+yB,EAAKzxL,KAAK6v+B,IAMd,OALIv4vB,GACAA,EAAI2vhB,YAERjnwB,KAAK0v+B,IAAMtpvB,EACXpmP,KAAK2v+B,IAAMl+yB,EACJzxL,IACX,EACAwv+B,EAAU9v+B,UAAU09H,KAAO,SAAUk6G,GACjCA,GAAOA,EAAIl6G,OACXp9H,KAAK8w+B,UACT,EACAtB,EAAU9v+B,UAAU09wB,OAAS,SAAU9liB,GACnCA,GAAOA,EAAI8liB,SACXp9wB,KAAK8w+B,UACT,EACAtB,EAAU9v+B,UAAUm/H,IAAM,WACtB,OAAO7+H,KAAK4tP,IAChB,EACA4hvB,EAAU9v+B,UAAUo/H,QAAU,SAAUtvH,GACpC,IAAIqvH,EAAMrvH,EAAKnP,OACTL,KAAKwP,MAAQxP,KAAKwP,KAAKnP,SAAWw+H,IAAQqw2B,KAC5Clv+B,KAAKwP,KAAO,IAAIwQ,aAAa6+G,IAEjC,IAAK,IAAIj+H,EAAI,EAAGA,EAAIi+H,EAAKj+H,IACrBZ,KAAKwP,KAAK5O,GAAK4O,EAAK5O,GAExBZ,KAAK4tP,KAAO/uH,CAChB,EACA2w2B,EAAU9v+B,UAAUqx+B,WAAa,SAAU168B,GACjCA,aAAgB52B,QAClB42B,EAAO,CAACA,IAKZ,IAHA,IAAIwoG,EAAMxoG,EAAKh2B,OACX2w+B,EAAa,EACb7u7B,EAASniD,KAAK4tP,KACThtP,EAAI,EAAGA,EAAIi+H,EAAKj+H,IACrBow+B,GAAc368B,EAAKz1B,GAAGi+H,MAK1B,IAHIqw2B,IAAkBlv+B,KAAKwP,gBAAgBwQ,eACvChgB,KAAKwP,KAAO,IAAIwQ,aAAamiC,EAAS6u7B,IAEjCpw+B,EAAI,EAAGA,EAAIi+H,EAAKj+H,IAErB,IADA,IAAIqw+B,EAAiB568B,EAAKz1B,GAAG4O,KACpB9L,EAAI,EAAGA,EAAIut+B,EAAe5w+B,OAAQqD,IACvC1D,KAAKwP,KAAK2yC,KAAY8u7B,EAAevt+B,GAG7C1D,KAAK4tP,KAAOzrM,CAChB,EACAqt7B,EAAU9v+B,UAAU6w+B,QAAU,SAAUW,EAAKlw+B,EAAGsC,EAAGzC,EAAG8B,EAAGxD,EAAGuD,EAAGP,EAAGS,GAC9D,GAAK5C,KAAK8v+B,UAAV,CAGA,IAAItg+B,EAAOxP,KAAKwP,KACZxP,KAAK4tP,KAAOxtP,UAAUC,OAASmP,EAAKnP,SACpCL,KAAKmx+B,cACL3h+B,EAAOxP,KAAKwP,MAEhB,IAAK,IAAI5O,EAAI,EAAGA,EAAIR,UAAUC,OAAQO,IAClC4O,EAAKxP,KAAK4tP,QAAUxtP,UAAUQ,EAPlC,CASJ,EACA4u+B,EAAU9v+B,UAAU4w+B,eAAiB,WAC7Btw+B,KAAKyw+B,eAAiB,IACtBzw+B,KAAKqn8B,MAAQrn8B,KAAKqn8B,KAAKrgM,OAAOhnwB,KAAK0w+B,YAAa1w+B,KAAK2w+B,aACrD3w+B,KAAKyw+B,eAAiB,EAE9B,EACAjB,EAAU9v+B,UAAUyx+B,YAAc,WAC9B,KAAMnx+B,KAAKwP,gBAAgB/P,OAAQ,CAE/B,IADA,IAAI+1V,EAAU,GACL50V,EAAI,EAAGA,EAAIZ,KAAK4tP,KAAMhtP,IAC3B40V,EAAQ50V,GAAKZ,KAAKwP,KAAK5O,GAE3BZ,KAAKwP,KAAOgmV,CAChB,CACJ,EACAg6oB,EAAU9v+B,UAAUox+B,SAAW,WAC3B,GAAK9w+B,KAAK8v+B,UAAV,CAGA9v+B,KAAKsw+B,iBACL,IAAI9g+B,EAAOxP,KAAKwP,KACZA,aAAgB/P,QAChB+P,EAAKnP,OAASL,KAAK4tP,KACfshvB,IAAiBlv+B,KAAK4tP,KAAO,KAC7B5tP,KAAKwP,KAAO,IAAIwQ,aAAaxQ,IANrC,CASJ,EACAgg+B,EAAU9v+B,UAAUykP,gBAAkB,WAClCt2O,GAAI,GAAKA,GAAI,GAAKkh+B,GAAK,GAAKA,GAAK,GAAK5p8B,OAAO+lJ,UAC7Cv9K,GAAI,GAAKA,GAAI,GAAKqh+B,GAAK,GAAKA,GAAK,IAAM7p8B,OAAO+lJ,UAC9C,IAKItqL,EALA4O,EAAOxP,KAAKwP,KACZqP,EAAK,EACLf,EAAK,EACLsoO,EAAK,EACL30D,EAAK,EAET,IAAK7wL,EAAI,EAAGA,EAAIZ,KAAK4tP,MAAO,CACxB,IAAIsjvB,EAAM1h+B,EAAK5O,KACXww+B,EAAgB,IAANxw+B,EAOd,OANIww+B,IAGAhrvB,EAFAvnO,EAAKrP,EAAK5O,GAGV6wL,EAFA3zK,EAAKtO,EAAK5O,EAAI,IAIVsw+B,GACJ,KAAKtC,GAAI/o+B,EACLgZ,EAAKunO,EAAK52O,EAAK5O,KACfkd,EAAK2zK,EAAKjiL,EAAK5O,KACfmu+B,GAAK,GAAK3ovB,EACV2ovB,GAAK,GAAKt9yB,EACVu9yB,GAAK,GAAK5ovB,EACV4ovB,GAAK,GAAKv9yB,EACV,MACJ,KAAKm9yB,GAAIvq+B,EACL0p+B,GAASlv9B,EAAIf,EAAItO,EAAK5O,GAAI4O,EAAK5O,EAAI,GAAImu+B,GAAMC,IAC7Cnw9B,EAAKrP,EAAK5O,KACVkd,EAAKtO,EAAK5O,KACV,MACJ,KAAKgu+B,GAAIzq+B,EACL+p+B,GAAUrv9B,EAAIf,EAAItO,EAAK5O,KAAM4O,EAAK5O,KAAM4O,EAAK5O,KAAM4O,EAAK5O,KAAM4O,EAAK5O,GAAI4O,EAAK5O,EAAI,GAAImu+B,GAAMC,IAC1Fnw9B,EAAKrP,EAAK5O,KACVkd,EAAKtO,EAAK5O,KACV,MACJ,KAAKgu+B,GAAI5o+B,EACLqo+B,GAAcxv9B,EAAIf,EAAItO,EAAK5O,KAAM4O,EAAK5O,KAAM4O,EAAK5O,GAAI4O,EAAK5O,EAAI,GAAImu+B,GAAMC,IACxEnw9B,EAAKrP,EAAK5O,KACVkd,EAAKtO,EAAK5O,KACV,MACJ,KAAKgu+B,GAAI/p+B,EACL,IAAI67P,EAAKlxP,EAAK5O,KACVqmW,EAAKz3V,EAAK5O,KACVs8K,EAAK1tK,EAAK5O,KACVu8K,EAAK3tK,EAAK5O,KACVioxB,EAAar5wB,EAAK5O,KAClBkoxB,EAAWt5wB,EAAK5O,KAAOioxB,EAC3BjoxB,GAAK,EACL,IAAI6t+B,GAAiBj/9B,EAAK5O,KACtBww+B,IACAhrvB,EAAK,GAAQyiiB,GAAc3rmB,EAAKwjF,EAChCjvE,EAAK,GAAQo3lB,GAAc1rmB,EAAK8pL,GAEpCunoB,GAAQ9tuB,EAAIumG,EAAI/pL,EAAIC,EAAI0rmB,EAAYC,EAAU2lN,EAAeM,GAAMC,IACnEnw9B,EAAK,GAAQiqwB,GAAY5rmB,EAAKwjF,EAC9B5iP,EAAK,GAAQgrwB,GAAY3rmB,EAAK8pL,EAC9B,MACJ,KAAK2noB,GAAItq+B,EAKLyp+B,GAJA3nvB,EAAKvnO,EAAKrP,EAAK5O,KACf6wL,EAAK3zK,EAAKtO,EAAK5O,KAGEwlP,EAFL52O,EAAK5O,KAEY6wL,EADhBjiL,EAAK5O,KACwBmu+B,GAAMC,IAChD,MACJ,KAAKJ,GAAInq+B,EACLoa,EAAKunO,EACLtoO,EAAK2zK,EAGb,GAAS5jL,GAAKA,GAAKkh+B,IACnB,GAASph+B,GAAKA,GAAKqh+B,GACvB,CAIA,OAHU,IAANpu+B,IACAiN,GAAI,GAAKA,GAAI,GAAKF,GAAI,GAAKA,GAAI,GAAK,GAEjC,IAAI,GAAaE,GAAI,GAAIA,GAAI,GAAIF,GAAI,GAAKE,GAAI,GAAIF,GAAI,GAAKE,GAAI,GAC1E,EACA2h+B,EAAU9v+B,UAAU2x+B,iBAAmB,WACnC,IAAI7h+B,EAAOxP,KAAKwP,KACZqvH,EAAM7+H,KAAK4tP,KACX08D,EAAKtqT,KAAKiw+B,IACV1lrB,EAAKvqT,KAAKkw+B,IACVrx9B,EAAK,EACLf,EAAK,EACLsoO,EAAK,EACL30D,EAAK,EACJzxL,KAAKow+B,cACNpw+B,KAAKow+B,YAAc,IAKvB,IAHA,IAAIkB,EAAatx+B,KAAKow+B,YAClBmB,EAAe,EACfC,EAAW,EACN5w+B,EAAI,EAAGA,EAAIi+H,GAAM,CACtB,IAAIqy2B,EAAM1h+B,EAAK5O,KACXww+B,EAAgB,IAANxw+B,EACVww+B,IAGAhrvB,EAFAvnO,EAAKrP,EAAK5O,GAGV6wL,EAFA3zK,EAAKtO,EAAK5O,EAAI,IAIlB,IAAI4B,GAAK,EACT,OAAQ0u+B,GACJ,KAAKtC,GAAI/o+B,EACLgZ,EAAKunO,EAAK52O,EAAK5O,KACfkd,EAAK2zK,EAAKjiL,EAAK5O,KACf,MACJ,KAAKgu+B,GAAIvq+B,EACL,IAAIy4L,EAAKttL,EAAK5O,KAGVyzI,GAFA5c,EAAKjoH,EAAK5O,MAEAkd,GACVmx9B,GAFAz61B,EAAKsoD,EAAKj+K,GAEIyrS,GAAM2krB,GAAQ561B,GAAMk2K,GAAM3pT,IAAMi+H,EAAM,KACpDr8H,EAAIK,KAAK4yF,KAAK++C,EAAKA,EAAKH,EAAKA,GAC7Bx1H,EAAKi+K,EACLh/K,EAAK25G,GAET,MAEJ,KAAKm32B,GAAIzq+B,EACL,IAAIyjT,EAAKp4S,EAAK5O,KACV8wL,EAAKliL,EAAK5O,KAEV62H,GADAqlE,EAAKttL,EAAK5O,KACL4O,EAAK5O,MACV6nT,EAAKj5S,EAAK5O,KACV8nT,EAAKl5S,EAAK5O,KACd4B,EAAIy88B,GAAYpg8B,EAAIf,EAAI8pS,EAAIl2H,EAAIoL,EAAIrlE,EAAIgxL,EAAIC,EAAI,IAChD7pS,EAAK4pS,EACL3qS,EAAK4qS,EACL,MAEJ,KAAKkmrB,GAAI5o+B,EAKLxD,EAAI488B,GAAgBvg8B,EAAIf,EAJpB8pS,EAAKp4S,EAAK5O,KACV8wL,EAAKliL,EAAK5O,KACVk8L,EAAKttL,EAAK5O,KACV62H,EAAKjoH,EAAK5O,KAC8B,IAC5Cie,EAAKi+K,EACLh/K,EAAK25G,EACL,MAEJ,KAAKm32B,GAAI/p+B,EACL,IAAI67P,EAAKlxP,EAAK5O,KACVqmW,EAAKz3V,EAAK5O,KACVs8K,EAAK1tK,EAAK5O,KACVu8K,EAAK3tK,EAAK5O,KACVioxB,EAAar5wB,EAAK5O,KAClBmlH,EAAQv2G,EAAK5O,KACbkoxB,EAAW/iqB,EAAQ8iqB,EACvBjoxB,GAAK,EACgB4O,EAAK5O,KACtBww+B,IACAhrvB,EAAK,GAAQyiiB,GAAc3rmB,EAAKwjF,EAChCjvE,EAAK,GAAQo3lB,GAAc1rmB,EAAK8pL,GAEpCzkW,EAAI,GAAQ06K,EAAIC,GAAM,GAAQ,GAAKt6K,KAAKmjH,IAAID,IAC5ClnG,EAAK,GAAQiqwB,GAAY5rmB,EAAKwjF,EAC9B5iP,EAAK,GAAQgrwB,GAAY3rmB,EAAK8pL,EAC9B,MACJ,KAAK2noB,GAAItq+B,EACL8hP,EAAKvnO,EAAKrP,EAAK5O,KACf6wL,EAAK3zK,EAAKtO,EAAK5O,KAGf4B,EAAY,EAFAgN,EAAK5O,KAEQ,EADZ4O,EAAK5O,KAElB,MAEJ,KAAKgu+B,GAAInq+B,EACL,IAAI+vI,EAAK4xG,EAAKvnO,EACVw1H,EAAKo9C,EAAK3zK,EACdtb,EAAIK,KAAK4yF,KAAK++C,EAAKA,EAAKH,EAAKA,GAC7Bx1H,EAAKunO,EACLtoO,EAAK2zK,EAITjvL,GAAK,IACL8u+B,EAAWE,KAAchv+B,EACzB+u+B,GAAgB/u+B,EAExB,CAEA,OADAxC,KAAKqw+B,SAAWkB,EACTA,CACX,EACA/B,EAAU9v+B,UAAU+x+B,YAAc,SAAUn6vB,EAAKmpuB,GAC7C,IAIIr6tB,EACA30D,EACA5yK,EACAf,EACA7Z,EACAjB,EAEAsu+B,EAIAI,EAEAC,EACAC,EAlBAjv+B,EAAI3C,KAAKwP,KACT86S,EAAKtqT,KAAKiw+B,IACV1lrB,EAAKvqT,KAAKkw+B,IACVrx2B,EAAM7+H,KAAK4tP,KAOXikvB,EAAWpxB,EAAU,EAGrBqxB,EAAc,EACdN,EAAW,EAEXO,EAAgB,EAGpB,IAAIF,IACK7x+B,KAAKow+B,aACNpw+B,KAAKqx+B,mBAETC,EAAatx+B,KAAKow+B,YAElBsB,EAAkBjxB,EADHzg9B,KAAKqw+B,UAMxB129B,EAAI,IAAK,IAAI/Y,EAAI,EAAGA,EAAIi+H,GAAM,CAC1B,IAAIqy2B,EAAMvu+B,EAAE/B,KACRww+B,EAAgB,IAANxw+B,EAWd,OAVIww+B,IAGAhrvB,EAFAvnO,EAAKlc,EAAE/B,GAGP6wL,EAFA3zK,EAAKnb,EAAE/B,EAAI,IAIXsw+B,IAAQtC,GAAIvq+B,GAAK0t+B,EAAgB,IACjCz6vB,EAAI0vhB,OAAO2qO,EAAYC,GACvBG,EAAgB,GAEZb,GACJ,KAAKtC,GAAI/o+B,EACLugP,EAAKvnO,EAAKlc,EAAE/B,KACZ6wL,EAAK3zK,EAAKnb,EAAE/B,KACZ02O,EAAIyvhB,OAAOlovB,EAAIf,GACf,MACJ,KAAK8w9B,GAAIvq+B,EACLJ,EAAItB,EAAE/B,KACNoC,EAAIL,EAAE/B,KACN,IAAI4zI,EAAKy61B,GAAQhr+B,EAAI4a,GACjBw1H,EAAK461B,GAAQjs+B,EAAI8a,GACrB,GAAI02H,EAAK81K,GAAMj2K,EAAKk2K,EAAI,CACpB,GAAIsnrB,EAAU,CAEV,GAAIC,GADAtv+B,EAAI8u+B,EAAWE,MACGE,EAAiB,CACnC,IAAIty+B,GAAKsy+B,EAAkBI,GAAetv+B,EAC1C80O,EAAI0vhB,OAAOnovB,GAAM,EAAIzf,GAAK6E,EAAI7E,EAAG0e,GAAM,EAAI1e,GAAK4D,EAAI5D,GACpD,MAAMua,CACV,CACAm49B,GAAetv+B,CACnB,CACA80O,EAAI0vhB,OAAO/iwB,EAAGjB,GACd6b,EAAK5a,EACL6Z,EAAK9a,EACL+u+B,EAAgB,CACpB,KACK,CACD,IAAIt91B,EAAKD,EAAKA,EAAKH,EAAKA,EACpBI,EAAKs91B,IACLJ,EAAa1t+B,EACb2t+B,EAAa5u+B,EACb+u+B,EAAgBt91B,EAExB,CACA,MAEJ,KAAKm61B,GAAIzq+B,EACL,IAAIyjT,EAAKjlT,EAAE/B,KACP8wL,EAAK/uL,EAAE/B,KACPk8L,EAAKn6L,EAAE/B,KACP62H,EAAK90H,EAAE/B,KACP6nT,EAAK9lT,EAAE/B,KACP8nT,EAAK/lT,EAAE/B,KACX,GAAIix+B,EAAU,CAEV,GAAIC,GADAtv+B,EAAI8u+B,EAAWE,MACGE,EAAiB,CAEnCjzB,GAAe5/7B,EAAI+oS,EAAI9qH,EAAI2rH,EADvBrpT,GAAKsy+B,EAAkBI,GAAetv+B,EACRqs+B,IAClCpwB,GAAe3g8B,EAAI4zK,EAAIj6D,EAAIixL,EAAItpT,EAAG0v+B,IAClCx3vB,EAAI0yiB,cAAc6kN,GAAQ,GAAIC,GAAQ,GAAID,GAAQ,GAAIC,GAAQ,GAAID,GAAQ,GAAIC,GAAQ,IACtF,MAAMn19B,CACV,CACAm49B,GAAetv+B,CACnB,CACA80O,EAAI0yiB,cAAcpie,EAAIl2H,EAAIoL,EAAIrlE,EAAIgxL,EAAIC,GACtC7pS,EAAK4pS,EACL3qS,EAAK4qS,EACL,MAEJ,KAAKkmrB,GAAI5o+B,EAKL,GAJI4hT,EAAKjlT,EAAE/B,KACP8wL,EAAK/uL,EAAE/B,KACPk8L,EAAKn6L,EAAE/B,KACP62H,EAAK90H,EAAE/B,KACPix+B,EAAU,CAEV,GAAIC,GADAtv+B,EAAI8u+B,EAAWE,MACGE,EAAiB,CAEnC,GAAmB7y9B,EAAI+oS,EAAI9qH,EADvB19L,GAAKsy+B,EAAkBI,GAAetv+B,EACRqs+B,IAClC,GAAmB/w9B,EAAI4zK,EAAIj6D,EAAIr4H,EAAG0v+B,IAClCx3vB,EAAIs5vB,iBAAiB/B,GAAQ,GAAIC,GAAQ,GAAID,GAAQ,GAAIC,GAAQ,IACjE,MAAMn19B,CACV,CACAm49B,GAAetv+B,CACnB,CACA80O,EAAIs5vB,iBAAiBhprB,EAAIl2H,EAAIoL,EAAIrlE,GACjC54G,EAAKi+K,EACLh/K,EAAK25G,EACL,MAEJ,KAAKm32B,GAAI/p+B,EACL,IAAI67P,EAAK/9P,EAAE/B,KACPqmW,EAAKtkW,EAAE/B,KACPs8K,EAAKv6K,EAAE/B,KACPu8K,EAAKx6K,EAAE/B,KACPioxB,EAAalmxB,EAAE/B,KACfmlH,EAAQpjH,EAAE/B,KACVox+B,EAAMrv+B,EAAE/B,KACR6t+B,GAAiB9r+B,EAAE/B,KACnBb,EAAKm9K,EAAKC,EAAMD,EAAKC,EACrB80zB,EAAYhD,GAAQ/xzB,EAAKC,GAAM,KAC/B2rmB,EAAWD,EAAa9iqB,EACxBms3B,GAAa,EAejB,GAdIL,IAEIC,GADAtv+B,EAAI8u+B,EAAWE,MACGE,IAClB5oN,EAAWD,EAAa9iqB,GAAS2r3B,EAAkBI,GAAetv+B,EAClE0v+B,GAAa,GAEjBJ,GAAetv+B,GAEfyv+B,GAAa36vB,EAAIqgP,QACjBrgP,EAAIqgP,QAAQj3N,EAAIumG,EAAI/pL,EAAIC,EAAI60zB,EAAKnpN,EAAYC,EAAU2lN,GAGvDn3vB,EAAI4yiB,IAAIxphB,EAAIumG,EAAIlnW,EAAG8oxB,EAAYC,EAAU2lN,GAEzCyD,EACA,MAAMv49B,EAENy39B,IACAhrvB,EAAK,GAAQyiiB,GAAc3rmB,EAAKwjF,EAChCjvE,EAAK,GAAQo3lB,GAAc1rmB,EAAK8pL,GAEpCpoV,EAAK,GAAQiqwB,GAAY5rmB,EAAKwjF,EAC9B5iP,EAAK,GAAQgrwB,GAAY3rmB,EAAK8pL,EAC9B,MACJ,KAAK2noB,GAAItq+B,EACL8hP,EAAKvnO,EAAKlc,EAAE/B,GACZ6wL,EAAK3zK,EAAKnb,EAAE/B,EAAI,GAChBqD,EAAItB,EAAE/B,KACNoC,EAAIL,EAAE/B,KACN,IAAIm+B,EAAQp8B,EAAE/B,KACVo+B,EAASr8B,EAAE/B,KACf,GAAIix+B,EAAU,CAEV,GAAIC,GADAtv+B,EAAI8u+B,EAAWE,MACGE,EAAiB,CACnC,IAAI/xB,EAAM+xB,EAAkBI,EAC5Bx6vB,EAAIyvhB,OAAO9iwB,EAAGjB,GACds0O,EAAI0vhB,OAAO/iwB,EAAI,GAAQ078B,EAAK5g7B,GAAQ/7B,IACpC288B,GAAO5g7B,GACG,GACNu4M,EAAI0vhB,OAAO/iwB,EAAI86B,EAAO/7B,EAAI,GAAQ288B,EAAK3g7B,KAE3C2g7B,GAAO3g7B,GACG,GACNs4M,EAAI0vhB,OAAO/iwB,EAAI,GAAQ86B,EAAQ4g7B,EAAK,GAAI388B,EAAIg8B,IAEhD2g7B,GAAO5g7B,GACG,GACNu4M,EAAI0vhB,OAAO/iwB,EAAGjB,EAAI,GAAQg8B,EAAS2g7B,EAAK,IAE5C,MAAMhm8B,CACV,CACAm49B,GAAetv+B,CACnB,CACA80O,EAAI5jJ,KAAKzvF,EAAGjB,EAAG+7B,EAAOC,GACtB,MACJ,KAAK4v8B,GAAInq+B,EACL,GAAIot+B,EAAU,CACV,IAAIrv+B,EACJ,GAAIsv+B,GADAtv+B,EAAI8u+B,EAAWE,MACGE,EAAiB,CAC/Bty+B,GAAKsy+B,EAAkBI,GAAetv+B,EAC1C80O,EAAI0vhB,OAAOnovB,GAAM,EAAIzf,GAAKgnP,EAAKhnP,EAAG0e,GAAM,EAAI1e,GAAKqyL,EAAKryL,GACtD,MAAMua,CACV,CACAm49B,GAAetv+B,CACnB,CACA80O,EAAI2vhB,YACJpovB,EAAKunO,EACLtoO,EAAK2zK,EAEjB,CACJ,EACA+9yB,EAAU9v+B,UAAU6wB,MAAQ,WACxB,IAAI4h9B,EAAW,IAAI3C,EACfhg+B,EAAOxP,KAAKwP,KAIhB,OAHA2i+B,EAAS3i+B,KAAOA,EAAKzN,MAAQyN,EAAKzN,QAC5BtC,MAAMC,UAAUqC,MAAMnC,KAAK4P,GACjC2i+B,EAASvkvB,KAAO5tP,KAAK4tP,KACdukvB,CACX,EACA3C,EAAUZ,IAAMA,GAChBY,EAAUne,iBAAmB,WACzB,IAAI7/8B,EAAQg+9B,EAAU9v+B,UACtB8R,EAAMs+9B,WAAY,EAClBt+9B,EAAMy+9B,IAAM,EACZz+9B,EAAM0+9B,IAAM,EACZ1+9B,EAAMi/9B,eAAiB,EACvBj/9B,EAAM2sT,SAAW,CACpB,CAP4B,GAQtBqxqB,CACX,CAhoBgB,GAioBhB,YCzrBO,SAAS4C,GAAchsvB,EAAI30D,EAAIm2H,EAAIl2H,EAAI2gJ,EAAWpuU,EAAGjB,GACxD,GAAkB,IAAdqvU,EACA,OAAO,EAEX,IACI17S,EADAuxE,EAAKmqO,EAGT,GAAKrvU,EAAIyuL,EAAKvpF,GAAMllG,EAAI0uL,EAAKxpF,GACrBllG,EAAIyuL,EAAKvpF,GAAMllG,EAAI0uL,EAAKxpF,GACxBjkG,EAAImiP,EAAKl+I,GAAMjkG,EAAI2jT,EAAK1/M,GACxBjkG,EAAImiP,EAAKl+I,GAAMjkG,EAAI2jT,EAAK1/M,EAC5B,OAAO,EAEX,GAAIk+I,IAAOwhE,EAKP,OAAO/kT,KAAKmjH,IAAI/hH,EAAImiP,IAAOl+I,EAAK,EAEpC,IAAI07P,GANAjtU,GAAM86J,EAAKC,IAAO00D,EAAKwhE,IAMZ3jT,EAAIjB,GALTojP,EAAK10D,EAAKk2H,EAAKn2H,IAAO20D,EAAKwhE,GAOrC,OADSg8C,EAAMA,GAAOjtU,EAAKA,EAAK,IACnBuxE,EAAK,EAAIA,EAAK,CAC/B,CCtBO,SAAS,GAAck+I,EAAI30D,EAAIm2H,EAAIl2H,EAAIoL,EAAIrlE,EAAIgxL,EAAIC,EAAI2pB,EAAWpuU,EAAGjB,GACxE,GAAkB,IAAdqvU,EACA,OAAO,EAEX,IAAInqO,EAAKmqO,EACT,QAAKrvU,EAAIyuL,EAAKvpF,GAAMllG,EAAI0uL,EAAKxpF,GAAMllG,EAAIy0H,EAAKvvB,GAAMllG,EAAI0lT,EAAKxgN,GACnDllG,EAAIyuL,EAAKvpF,GAAMllG,EAAI0uL,EAAKxpF,GAAMllG,EAAIy0H,EAAKvvB,GAAMllG,EAAI0lT,EAAKxgN,GACtDjkG,EAAImiP,EAAKl+I,GAAMjkG,EAAI2jT,EAAK1/M,GAAMjkG,EAAI64L,EAAK50F,GAAMjkG,EAAIwkT,EAAKvgN,GACtDjkG,EAAImiP,EAAKl+I,GAAMjkG,EAAI2jT,EAAK1/M,GAAMjkG,EAAI64L,EAAK50F,GAAMjkG,EAAIwkT,EAAKvgN,IAGtD,GAAwBk+I,EAAI30D,EAAIm2H,EAAIl2H,EAAIoL,EAAIrlE,EAAIgxL,EAAIC,EAAIzkT,EAAGjB,EAAG,OAC1DklG,EAAK,CACrB,CCbO,SAAS,GAAck+I,EAAI30D,EAAIm2H,EAAIl2H,EAAIoL,EAAIrlE,EAAI46M,EAAWpuU,EAAGjB,GAChE,GAAkB,IAAdqvU,EACA,OAAO,EAEX,IAAInqO,EAAKmqO,EACT,QAAKrvU,EAAIyuL,EAAKvpF,GAAMllG,EAAI0uL,EAAKxpF,GAAMllG,EAAIy0H,EAAKvvB,GACpCllG,EAAIyuL,EAAKvpF,GAAMllG,EAAI0uL,EAAKxpF,GAAMllG,EAAIy0H,EAAKvvB,GACvCjkG,EAAImiP,EAAKl+I,GAAMjkG,EAAI2jT,EAAK1/M,GAAMjkG,EAAI64L,EAAK50F,GACvCjkG,EAAImiP,EAAKl+I,GAAMjkG,EAAI2jT,EAAK1/M,GAAMjkG,EAAI64L,EAAK50F,IAGvCi32B,GAAsB/4tB,EAAI30D,EAAIm2H,EAAIl2H,EAAIoL,EAAIrlE,EAAIxzH,EAAGjB,EAAG,OAChDklG,EAAK,CACrB,CCdA,IAAI,GAAgB,EAAVrlG,KAAKsmC,GACR,SAASkp8B,GAAgB1jwB,GAK5B,OAJAA,GAAS,IACG,IACRA,GAAS,IAENA,CACX,CCNA,IAAI,GAAgB,EAAV9rO,KAAKsmC,GACR,SAAS,GAAcu3N,EAAIumG,EAAIlnW,EAAG8oxB,EAAYC,EAAU2lN,EAAep8pB,EAAWpuU,EAAGjB,GACxF,GAAkB,IAAdqvU,EACA,OAAO,EAEX,IAAInqO,EAAKmqO,EACTpuU,GAAKy8P,EACL19P,GAAKikW,EACL,IAAItkW,EAAIE,KAAK4yF,KAAKxxF,EAAIA,EAAIjB,EAAIA,GAC9B,GAAKL,EAAIulG,EAAKnoG,GAAO4C,EAAIulG,EAAKnoG,EAC1B,OAAO,EAEX,GAAI8C,KAAKmjH,IAAI6iqB,EAAaC,GAAY,GAAM,KACxC,OAAO,EAEX,GAAI2lN,EAAe,CACf,IAAI7qoB,EAAMilb,EACVA,EAAawpN,GAAgBvpN,GAC7BA,EAAWupN,GAAgBzuoB,EAC/B,MAEIilb,EAAawpN,GAAgBxpN,GAC7BC,EAAWupN,GAAgBvpN,GAE3BD,EAAaC,IACbA,GAAY,IAEhB,IAAIn6iB,EAAQ9rO,KAAK0xH,MAAMvxH,EAAGiB,GAI1B,OAHI0qO,EAAQ,IACRA,GAAS,IAELA,GAASk6iB,GAAcl6iB,GAASm6iB,GAChCn6iB,EAAQ,IAAOk6iB,GAAcl6iB,EAAQ,IAAOm6iB,CACxD,CClCe,SAASwpN,GAAYlsvB,EAAI30D,EAAIm2H,EAAIl2H,EAAIztL,EAAGjB,GACnD,GAAKA,EAAIyuL,GAAMzuL,EAAI0uL,GAAQ1uL,EAAIyuL,GAAMzuL,EAAI0uL,EACrC,OAAO,EAEX,GAAIA,IAAOD,EACP,OAAO,EAEX,IAAIryL,GAAK4D,EAAIyuL,IAAOC,EAAKD,GACrBj4D,EAAMk4D,EAAKD,EAAK,GAAK,EACf,IAANryL,GAAiB,IAANA,IACXo6H,EAAMk4D,EAAKD,EAAK,IAAO,IAE3B,IAAIo3vB,EAAKzp7B,GAAKwoT,EAAKxhE,GAAMA,EACzB,OAAOyisB,IAAO5k7B,EAAI87D,IAAW8o3B,EAAK5k7B,EAAIu1H,EAAM,CAChD,CCPA,IAAI,GAAM,GAAUo12B,IAChB,GAAgB,EAAV/r+B,KAAKsmC,GAKX2qK,GAAQ,EAAE,GAAI,GAAI,GAClB0qwB,GAAU,EAAE,GAAI,GAMpB,SAAS+zB,GAAansvB,EAAI30D,EAAIm2H,EAAIl2H,EAAIoL,EAAIrlE,EAAIgxL,EAAIC,EAAIzkT,EAAGjB,GACrD,GAAKA,EAAIyuL,GAAMzuL,EAAI0uL,GAAM1uL,EAAIy0H,GAAMz0H,EAAI0lT,GAC/B1lT,EAAIyuL,GAAMzuL,EAAI0uL,GAAM1uL,EAAIy0H,GAAMz0H,EAAI0lT,EACtC,OAAO,EAEX,IATIk7C,EASA4uoB,EAAS,GAAkB/gzB,EAAIC,EAAIj6D,EAAIixL,EAAI1lT,EAAG8wM,IAClD,GAAe,IAAX0+xB,EACA,OAAO,EAOP,IAJA,IAAIjv+B,EAAI,EACJkv+B,GAAY,EACZC,OAAM,EACNC,OAAM,EACD/x+B,EAAI,EAAGA,EAAI4x+B,EAAQ5x+B,IAAK,CAC7B,IAAIxB,EAAI00M,GAAMlzM,GACV27W,EAAc,IAANn9W,GAAiB,IAANA,EAAW,GAAM,EAC/B,GAAcgnP,EAAIwhE,EAAI9qH,EAAI2rH,EAAIrpT,GAC9B6E,IAGLwu+B,EAAW,IACXA,EAAW,GAAmBhhzB,EAAIC,EAAIj6D,EAAIixL,EAAI81pB,IAC1CA,GAAQ,GAAKA,GAAQ,IAAMi0B,EAAW,SA3BlD7uoB,IAAM46mB,GAAQ,GAClBA,GAAQ,GAAKA,GAAQ,GACrBA,GAAQ,GAAK56mB,GA4BD8uoB,EAAM,GAAcjhzB,EAAIC,EAAIj6D,EAAIixL,EAAI81pB,GAAQ,IACxCi0B,EAAW,IACXE,EAAM,GAAclhzB,EAAIC,EAAIj6D,EAAIixL,EAAI81pB,GAAQ,MAGnC,IAAbi0B,EACIrz+B,EAAIo/8B,GAAQ,GACZj78B,GAAKmv+B,EAAMjhzB,EAAK8qL,GAAQA,EAEnBn9W,EAAIo/8B,GAAQ,GACjBj78B,GAAKov+B,EAAMD,EAAMn2nB,GAAQA,EAGzBh5W,GAAKmlT,EAAKiqrB,EAAMp2nB,GAAQA,EAIxBn9W,EAAIo/8B,GAAQ,GACZj78B,GAAKmv+B,EAAMjhzB,EAAK8qL,GAAQA,EAGxBh5W,GAAKmlT,EAAKgqrB,EAAMn2nB,GAAQA,EAGpC,CACA,OAAOh5W,CAEf,CACA,SAASqv+B,GAAiBxsvB,EAAI30D,EAAIm2H,EAAIl2H,EAAIoL,EAAIrlE,EAAIxzH,EAAGjB,GACjD,GAAKA,EAAIyuL,GAAMzuL,EAAI0uL,GAAM1uL,EAAIy0H,GACrBz0H,EAAIyuL,GAAMzuL,EAAI0uL,GAAM1uL,EAAIy0H,EAC5B,OAAO,EAEX,IAAI+62B,E/BkJD,SAAyB362B,EAAIwoH,EAAI0jB,EAAIrmF,EAAKo2B,GAC7C,IAAI9yM,EAAI62H,EAAK,EAAIwoH,EAAK0jB,EAClBzgQ,EAAI,GAAK+8O,EAAKxoH,GACdh3H,EAAIg3H,EAAK6lD,EACTr+K,EAAI,EACR,GAAI4+8B,GAAaj98B,GACTk98B,GAAgB568B,KACZ6rL,GAAMtuL,EAAIyC,IACJ,GAAK6rL,GAAM,IACjB2kB,EAAMz0M,KAAO8vL,OAIpB,CACD,IAAIkvxB,EAAO/68B,EAAIA,EAAI,EAAItC,EAAIH,EAC3B,GAAIo98B,GAAaI,IACTlvxB,GAAM7rL,GAAK,EAAItC,KACT,GAAKmuL,GAAM,IACjB2kB,EAAMz0M,KAAO8vL,QAGhB,GAAIkvxB,EAAO,EAAG,CACf,IACIlvxB,EADAmvxB,EAAWZ,GAASW,GAEpBjvxB,IAAO9rL,EAAIg78B,IAAa,EAAIt98B,IAD5BmuL,IAAO7rL,EAAIg78B,IAAa,EAAIt98B,KAEtB,GAAKmuL,GAAM,IACjB2kB,EAAMz0M,KAAO8vL,GAEbC,GAAM,GAAKA,GAAM,IACjB0kB,EAAMz0M,KAAO+vL,EAErB,CACJ,CACA,OAAO/vL,CACX,C+BpLiB,CAAsBoyL,EAAIC,EAAIj6D,EAAIz0H,EAAG8wM,IAClD,GAAe,IAAX0+xB,EACA,OAAO,EAGP,IAAIpz+B,EAAI,GAAwBqyL,EAAIC,EAAIj6D,GACxC,GAAIr4H,GAAK,GAAKA,GAAK,EAAG,CAGlB,IAFA,IAAImE,EAAI,EACJul7B,EAAK,GAAkBr3vB,EAAIC,EAAIj6D,EAAIr4H,GAC9BwB,EAAI,EAAGA,EAAI4x+B,EAAQ5x+B,IAAK,CAC7B,IAAI27W,EAAqB,IAAbzoK,GAAMlzM,IAAyB,IAAbkzM,GAAMlzM,GAAY,GAAM,EAC7C,GAAkBwlP,EAAIwhE,EAAI9qH,EAAIgX,GAAMlzM,IACpCqD,IAGL6vM,GAAMlzM,GAAKxB,EACXmE,GAAKul7B,EAAKr3vB,EAAK8qL,GAAQA,EAGvBh5W,GAAKk0H,EAAKqxzB,EAAKvskB,GAAQA,EAE/B,CACA,OAAOh5W,CACX,CAII,OAFIg5W,EAAqB,IAAbzoK,GAAM,IAAyB,IAAbA,GAAM,GAAY,GAAM,EAC7C,GAAkBsyC,EAAIwhE,EAAI9qH,EAAIgX,GAAM,IACpC7vM,EACE,EAEJwzH,EAAKg6D,EAAK8qL,GAAQA,CAGrC,CACA,SAASs2nB,GAAWnyuB,EAAIumG,EAAIlnW,EAAG8oxB,EAAYC,EAAU2lN,EAAexq+B,EAAGjB,GAEnE,IADAA,GAAKikW,GACGlnW,GAAKiD,GAAKjD,EACd,OAAO,EAEX,IAAI6jW,EAAM/gW,KAAK4yF,KAAK11F,EAAIA,EAAIiD,EAAIA,GAChC8wM,GAAM,IAAM8vJ,EACZ9vJ,GAAM,GAAK8vJ,EACX,IAAIkvoB,EAASjw+B,KAAKmjH,IAAI6iqB,EAAaC,GACnC,GAAIgqN,EAAS,KACT,OAAO,EAEX,GAAIA,GAAU,GAAM,KAAM,CACtBjqN,EAAa,EACbC,EAAW,GACX,IAAItvpB,EAAMi12B,EAAgB,GAAK,EAC/B,OAAIxq+B,GAAK6vM,GAAM,GAAK4sD,GAAMz8P,GAAK6vM,GAAM,GAAK4sD,EAC/BlnI,EAGA,CAEf,CACA,GAAIqvpB,EAAaC,EAAU,CACvB,IAAIiqN,EAAQlqN,EACZA,EAAaC,EACbA,EAAWiqN,CACf,CACIlqN,EAAa,IACbA,GAAc,GACdC,GAAY,IAGhB,IADA,IAAIvlxB,EAAI,EACC3C,EAAI,EAAGA,EAAI,EAAGA,IAAK,CACxB,IAAIio7B,EAAK/0uB,GAAMlzM,GACf,GAAIio7B,EAAKnorB,EAAKz8P,EAAG,CACb,IAAI0qO,EAAQ9rO,KAAK0xH,MAAMvxH,EAAG6l7B,GACtBrvzB,EAAMi12B,EAAgB,GAAK,EAC3B9/vB,EAAQ,IACRA,EAAQ,GAAMA,IAEbA,GAASk6iB,GAAcl6iB,GAASm6iB,GAC7Bn6iB,EAAQ,IAAOk6iB,GAAcl6iB,EAAQ,IAAOm6iB,KAC5Cn6iB,EAAQ9rO,KAAKsmC,GAAK,GAAKwlM,EAAkB,IAAV9rO,KAAKsmC,KACpCqwF,GAAOA,GAEXj2H,GAAKi2H,EAEb,CACJ,CACA,OAAOj2H,CACX,CACA,SAASyv+B,GAAY388B,EAAMg8S,EAAWtiG,EAAU9rO,EAAGjB,GAU/C,IATA,IAOI4kT,EACAl2H,EApKe1wL,EAAGsC,EA4JlBkM,EAAO6mB,EAAK7mB,KACZqvH,EAAMxoG,EAAKwoG,MACXt7H,EAAI,EACJsb,EAAK,EACLf,EAAK,EACLsoO,EAAK,EACL30D,EAAK,EAGA7wL,EAAI,EAAGA,EAAIi+H,GAAM,CACtB,IAAIqy2B,EAAM1h+B,EAAK5O,KACXww+B,EAAgB,IAANxw+B,EAYd,OAXIsw+B,IAAQ,GAAIrr+B,GAAKjF,EAAI,IAChBmvO,IACDxsO,GAAK+u+B,GAAYzz9B,EAAIf,EAAIsoO,EAAI30D,EAAIxtL,EAAGjB,KAGxCou+B,IAGAhrvB,EAFAvnO,EAAKrP,EAAK5O,GAGV6wL,EAFA3zK,EAAKtO,EAAK5O,EAAI,IAIVsw+B,GACJ,KAAK,GAAIrr+B,EAGLgZ,EAFAunO,EAAK52O,EAAK5O,KAGVkd,EAFA2zK,EAAKjiL,EAAK5O,KAGV,MACJ,KAAK,GAAIyD,EACL,GAAI0rO,GACA,GAAI,GAAmBlxN,EAAIf,EAAItO,EAAK5O,GAAI4O,EAAK5O,EAAI,GAAIyxU,EAAWpuU,EAAGjB,GAC/D,OAAO,OAIXO,GAAK+u+B,GAAYzz9B,EAAIf,EAAItO,EAAK5O,GAAI4O,EAAK5O,EAAI,GAAIqD,EAAGjB,IAAM,EAE5D6b,EAAKrP,EAAK5O,KACVkd,EAAKtO,EAAK5O,KACV,MACJ,KAAK,GAAIuD,EACL,GAAI4rO,GACA,GAAI,GAAoBlxN,EAAIf,EAAItO,EAAK5O,KAAM4O,EAAK5O,KAAM4O,EAAK5O,KAAM4O,EAAK5O,KAAM4O,EAAK5O,GAAI4O,EAAK5O,EAAI,GAAIyxU,EAAWpuU,EAAGjB,GAC5G,OAAO,OAIXO,GAAKgv+B,GAAa1z9B,EAAIf,EAAItO,EAAK5O,KAAM4O,EAAK5O,KAAM4O,EAAK5O,KAAM4O,EAAK5O,KAAM4O,EAAK5O,GAAI4O,EAAK5O,EAAI,GAAIqD,EAAGjB,IAAM,EAEzG6b,EAAKrP,EAAK5O,KACVkd,EAAKtO,EAAK5O,KACV,MACJ,KAAK,GAAIoF,EACL,GAAI+pO,GACA,GAAI,GAAwBlxN,EAAIf,EAAItO,EAAK5O,KAAM4O,EAAK5O,KAAM4O,EAAK5O,GAAI4O,EAAK5O,EAAI,GAAIyxU,EAAWpuU,EAAGjB,GAC1F,OAAO,OAIXO,GAAKqv+B,GAAiB/z9B,EAAIf,EAAItO,EAAK5O,KAAM4O,EAAK5O,KAAM4O,EAAK5O,GAAI4O,EAAK5O,EAAI,GAAIqD,EAAGjB,IAAM,EAEvF6b,EAAKrP,EAAK5O,KACVkd,EAAKtO,EAAK5O,KACV,MACJ,KAAK,GAAIiE,EACL,IAAI67P,EAAKlxP,EAAK5O,KACVqmW,EAAKz3V,EAAK5O,KACVs8K,EAAK1tK,EAAK5O,KACVu8K,EAAK3tK,EAAK5O,KACVspT,EAAQ16S,EAAK5O,KACbky+B,EAAStj+B,EAAK5O,KAClBA,GAAK,EACL,IAAI6t+B,KAAmB,EAAIj/9B,EAAK5O,MAChCgnT,EAAK/kT,KAAKuxH,IAAI81L,GAAShtI,EAAKwjF,EAC5BhvE,EAAK7uL,KAAK4wH,IAAIy2L,GAAS/sI,EAAK8pL,EACvBmqoB,GAIDhrvB,EAAKwhE,EACLn2H,EAAKC,GAJLnuL,GAAK+u+B,GAAYzz9B,EAAIf,EAAI8pS,EAAIl2H,EAAIztL,EAAGjB,GAMxC,IAAI0nK,GAAMzmK,EAAIy8P,GAAMvjF,EAAKD,EAAKwjF,EAC9B,GAAI3wB,GACA,GAAI,GAAkB2wB,EAAIumG,EAAI9pL,EAAI+sI,EAAOA,EAAQ4orB,EAAQrE,EAAep8pB,EAAW3nK,EAAI1nK,GACnF,OAAO,OAIXO,GAAKsv+B,GAAWnyuB,EAAIumG,EAAI9pL,EAAI+sI,EAAOA,EAAQ4orB,EAAQrE,EAAe/j0B,EAAI1nK,GAE1E6b,EAAKhc,KAAKuxH,IAAI81L,EAAQ4orB,GAAU51zB,EAAKwjF,EACrC5iP,EAAKjb,KAAK4wH,IAAIy2L,EAAQ4orB,GAAU31zB,EAAK8pL,EACrC,MACJ,KAAK,GAAI3iW,EAOL,GANA8hP,EAAKvnO,EAAKrP,EAAK5O,KACf6wL,EAAK3zK,EAAKtO,EAAK5O,KAGfgnT,EAAKxhE,EAFO52O,EAAK5O,KAGjB8wL,EAAKD,EAFQjiL,EAAK5O,KAGdmvO,GACA,GAAI,GAAmBqW,EAAI30D,EAAIm2H,EAAIn2H,EAAI4gJ,EAAWpuU,EAAGjB,IAC9C,GAAmB4kT,EAAIn2H,EAAIm2H,EAAIl2H,EAAI2gJ,EAAWpuU,EAAGjB,IACjD,GAAmB4kT,EAAIl2H,EAAI00D,EAAI10D,EAAI2gJ,EAAWpuU,EAAGjB,IACjD,GAAmBojP,EAAI10D,EAAI00D,EAAI30D,EAAI4gJ,EAAWpuU,EAAGjB,GACpD,OAAO,OAIXO,GAAK+u+B,GAAY1qrB,EAAIn2H,EAAIm2H,EAAIl2H,EAAIztL,EAAGjB,GACpCO,GAAK+u+B,GAAYlsvB,EAAI10D,EAAI00D,EAAI30D,EAAIxtL,EAAGjB,GAExC,MACJ,KAAK,GAAIyB,EACL,GAAIsrO,GACA,GAAI,GAAmBlxN,EAAIf,EAAIsoO,EAAI30D,EAAI4gJ,EAAWpuU,EAAGjB,GACjD,OAAO,OAIXO,GAAK+u+B,GAAYzz9B,EAAIf,EAAIsoO,EAAI30D,EAAIxtL,EAAGjB,GAExC6b,EAAKunO,EACLtoO,EAAK2zK,EAGjB,CAIA,OAHKs+C,IA9Rc/uO,EA8Ra8c,EA9RVxa,EA8RcmuL,EA7R7B5uL,KAAKmjH,IAAIhlH,EAAIsC,GAFV,QAgSNC,GAAK+u+B,GAAYzz9B,EAAIf,EAAIsoO,EAAI30D,EAAIxtL,EAAGjB,IAAM,GAEjC,IAANO,CACX,CCnSO,IAAI0v+B,GAAqB,EAAS,CACrC712B,KAAM,OACNggpB,OAAQ,KACR81N,cAAe,EACfjwuB,YAAa,EACbM,cAAe,EACfighB,eAAgB,EAChBnxc,UAAW,EACXoxc,QAAS,OACTxmiB,WAAY,GACZk2vB,eAAe,EACfC,aAAa,GACdlI,IACQmI,GAA+B,CACtCh/9B,MAAO,EAAS,CACZ+oH,MAAM,EACNggpB,QAAQ,EACR81N,eAAe,EACfjwuB,aAAa,EACbM,eAAe,EACfighB,gBAAgB,EAChBnxc,WAAW,EACXp1F,YAAY,GACbkuvB,GAA+B929B,QAElCi/9B,GAAiBhiB,GAAoBtv9B,OAAO,CAAC,YAC7C,UAAW,IAAK,KAAM,SAAU,WAEhCmpxB,GAAQ,SAAUzia,GAElB,SAASyia,EAAK9uuB,GACV,OAAOqsU,EAAO9oX,KAAKI,KAAMq8C,IAASr8C,IACtC,CAyVwB,IAChBuz+B,EAQR,OArWA,GAAUpoN,EAAMzia,GAIhByia,EAAKzrxB,UAAU6uE,OAAS,WACpB,IAAI7hB,EAAQ1sD,KACZ0oX,EAAOhpX,UAAU6uE,OAAO3uE,KAAKI,MAC7B,IAAIqU,EAAQrU,KAAKqU,MACjB,GAAIA,EAAMm/9B,MAAO,CACb,IAAI14B,EAAU968B,KAAKyz+B,SAAWzz+B,KAAKyz+B,UAAY,IAAItoN,EAC/C2vL,EAAQ44B,YAAcvoN,EAAKzrxB,UAAUg0+B,YACrC54B,EAAQ44B,UAAY,SAAUp8vB,GAC1B5qL,EAAMgn7B,UAAUp8vB,EAAK5qL,EAAM41K,MAC/B,GAEJw4uB,EAAQ1me,QAAS,EACjB,IAAIu/f,EAAe74B,EAAQzm8B,MAC3B,IAAK,IAAIwQ,KAAOxQ,EACRs/9B,EAAa9u9B,KAASxQ,EAAMwQ,KAC5B8u9B,EAAa9u9B,GAAOxQ,EAAMwQ,IAGlC8u9B,EAAav22B,KAAO/oH,EAAM+oH,KAAO/oH,EAAMm/9B,MAAQ,KAC/CG,EAAaH,MAAQ,KACrBG,EAAa9i3B,YAAc,KAC3Bx8G,EAAM++9B,cAAgBO,EAAav2N,OAAS,MAC5C,IAAK,IAAIx8wB,EAAI,EAAGA,EAAI0y+B,GAAejz+B,SAAUO,EACzCk68B,EAAQw4B,GAAe1y+B,IAAMZ,KAAKsz+B,GAAe1y+B,IAErDk68B,EAAQH,SAAWvB,EACvB,MACSp58B,KAAKyz+B,WACVzz+B,KAAKyz+B,SAAW,KAExB,EACAtoN,EAAKzrxB,UAAUq78B,gBAAkB,WAC7B,OAAO/68B,KAAKyz+B,QAChB,EACAtoN,EAAKzrxB,UAAU+y9B,MAAQ,SAAUxl7B,GAC7B,IAAIu85B,EAAUl27B,GAAK25B,GACnBjtC,KAAKsiO,MAAQtiO,KAAK4z+B,kBAClB,IAAIp61B,EAAex5I,KAAK6z+B,kBACpBr61B,GACAx5I,KAAKoqZ,SAAS5wQ,GAElB,IAAK,IAAI54I,EAAI,EAAGA,EAAI4o8B,EAAQnp8B,OAAQO,IAAK,CACrC,IAAIikB,EAAM2k7B,EAAQ5o8B,GACdO,EAAQ8rC,EAAMpoB,GACN,UAARA,EACK7kB,KAAKqU,MAINg1Y,EAAOrpZ,KAAKqU,MAAOlT,GAHnBnB,KAAKoqZ,SAASjpZ,GAML,UAAR0jB,EACLwkY,EAAOrpZ,KAAKsiO,MAAOnhO,GAGnBunX,EAAOhpX,UAAU+09B,OAAO709B,KAAKI,KAAM6kB,EAAK1jB,EAEhD,CACKnB,KAAKqU,OACNrU,KAAKoqZ,SAAS,CAAC,EAEvB,EACA+gY,EAAKzrxB,UAAUm0+B,gBAAkB,WAC7B,OAAO,IACX,EACA1oN,EAAKzrxB,UAAUk0+B,gBAAkB,WAC7B,MAAO,CAAC,CACZ,EACAzoN,EAAKzrxB,UAAUk09B,gBAAkB,WAC7B,OAAO5z9B,KAAK8z+B,SAChB,EACA3oN,EAAKzrxB,UAAUq09B,kBAAoB,WAC/B,IAAIggB,EAAW/z+B,KAAKqU,MAAM+oH,KAC1B,GAAiB,SAAb222B,EAAqB,CACrB,GAAI/46B,GAAS+46B,GAAW,CACpB,IAAIC,EAAUnwB,GAAIkwB,EAAU,GAC5B,OAAIC,EAAU,GACHpkB,GAEFokB,EAAU,GvB9GF,OuBiHVnkB,EACX,CACK,GAAIkkB,EACL,OAAOlkB,EAEf,CACA,OAAOD,EACX,EACAzkM,EAAKzrxB,UAAUs09B,oBAAsB,SAAUP,GAC3C,IAAIsgB,EAAW/z+B,KAAKqU,MAAM+oH,KAC1B,GAAIpiE,GAAS+46B,GAAW,CACpB,IAAIx79B,EAAKvY,KAAK+08B,KAGd,MAFoBx87B,IAAMA,EAAGg88B,eACX1Q,GAAI4P,EAAU,GvBjIX,GuBmIjB,OAAOsgB,CAEf,CACJ,EACA5oN,EAAKzrxB,UAAUg0+B,UAAY,SAAUp8vB,EAAK28vB,EAAUC,GAAW,EAC/D/oN,EAAKzrxB,UAAUy0+B,YAAc,WACzBn0+B,KAAK268B,UAAYtB,EACrB,EACAluL,EAAKzrxB,UAAU00+B,oBAAsB,SAAUF,GAI3C,OAHCl0+B,KAAKq2B,MAAQr2B,KAAKq0+B,kBACnBr0+B,KAAKq2B,KAAKywuB,YACV9mwB,KAAK0z+B,UAAU1z+B,KAAKq2B,KAAMr2B,KAAKsiO,MAAO4xwB,GAC/Bl0+B,KAAKq2B,IAChB,EACA80vB,EAAKzrxB,UAAU20+B,gBAAkB,WAC7Br0+B,KAAKq2B,KAAO,IAAI,IAAU,EAC9B,EACA80vB,EAAKzrxB,UAAU40+B,UAAY,WACvB,IAAIjg+B,EAAQrU,KAAKqU,MACb+owB,EAAS/owB,EAAM+owB,OACnB,QAAmB,MAAVA,GAA6B,SAAXA,KAAuB/owB,EAAMg+T,UAAY,GACxE,EACA84c,EAAKzrxB,UAAUo0+B,QAAU,WACrB,IACI122B,EADQp9H,KAAKqU,MACA+oH,KACjB,OAAe,MAARA,GAAyB,SAATA,CAC3B,EACA+tpB,EAAKzrxB,UAAUykP,gBAAkB,WAC7B,IAAIzwJ,EAAO1zF,KAAK6s+B,MACZx49B,EAAQrU,KAAKqU,MACbkg+B,GAAmB7g5B,EACvB,GAAI6g5B,EAAiB,CACjB,IAAIC,GAAc,EACbx0+B,KAAKq2B,OACNm+8B,GAAc,EACdx0+B,KAAKq0+B,mBAET,IAAIh+8B,EAAOr2B,KAAKq2B,MACZm+8B,GAAgBx0+B,KAAK268B,QAAUtB,MAC/Bhj7B,EAAKywuB,YACL9mwB,KAAK0z+B,UAAUr98B,EAAMr2B,KAAKsiO,OAAO,GACjCtiO,KAAKm0+B,eAETzg5B,EAAOr9D,EAAK8tN,iBAChB,CAEA,GADAnkP,KAAK6s+B,MAAQn54B,EACT1zF,KAAKs0+B,aAAet0+B,KAAKq2B,MAAQr2B,KAAKq2B,KAAKwoG,MAAQ,EAAG,CACtD,IAAI412B,EAAaz0+B,KAAK00+B,cAAgB10+B,KAAK00+B,YAAchh5B,EAAKnjE,SAC9D,GAAIvwB,KAAK268B,SAAW45B,EAAiB,CACjCE,EAAW302B,KAAKpsC,GAChB,IAAIih5B,EAAYtg+B,EAAM8+9B,cAAgBnz+B,KAAKmx9B,eAAiB,EACxD5t9B,EAAI8Q,EAAMg+T,UACd,IAAKryU,KAAK8z+B,UAAW,CACjB,IAAIc,EAAyB50+B,KAAK40+B,uBAClCrx+B,EAAIV,KAAK8K,IAAIpK,EAA6B,MAA1Bqx+B,EAAiC,EAAIA,EACzD,CACID,EAAY,QACZF,EAAW118B,OAASx7B,EAAIox+B,EACxBF,EAAWz18B,QAAUz7B,EAAIox+B,EACzBF,EAAWxw+B,GAAKV,EAAIox+B,EAAY,EAChCF,EAAWzx+B,GAAKO,EAAIox+B,EAAY,EAExC,CACA,OAAOF,CACX,CACA,OAAO/g5B,CACX,EACAy3rB,EAAKzrxB,UAAUk08B,QAAU,SAAU3v8B,EAAGjB,GAClC,IAAI6x+B,EAAW70+B,KAAKix9B,sBAAsBht9B,EAAGjB,GACzC0wF,EAAO1zF,KAAKmkP,kBACZ9vO,EAAQrU,KAAKqU,MAGjB,GAFApQ,EAAI4w+B,EAAS,GACb7x+B,EAAI6x+B,EAAS,GACTnh5B,EAAKkg3B,QAAQ3v8B,EAAGjB,GAAI,CACpB,IAAI8x+B,EAAY90+B,KAAKq2B,KACrB,GAAIr2B,KAAKs0+B,YAAa,CAClB,IAAIjiqB,EAAYh+T,EAAMg+T,UAClBsiqB,EAAYtg+B,EAAM8+9B,cAAgBnz+B,KAAKmx9B,eAAiB,EAC5D,GAAIwjB,EAAY,QACP30+B,KAAK8z+B,YACNzhqB,EAAYxvU,KAAK8K,IAAI0kU,EAAWryU,KAAK40+B,yBDoFtD,SAAuBE,EAAWziqB,EAAWpuU,EAAGjB,GACnD,OAAOgw+B,GAAY8B,EAAWziqB,GAAW,EAAMpuU,EAAGjB,EACtD,CCpFwB,CAA0B8x+B,EAAWziqB,EAAYsiqB,EAAW1w+B,EAAGjB,IAC/D,OAAO,CAGnB,CACA,GAAIhD,KAAK8z+B,UACL,ODyET,SAAiBgB,EAAW7w+B,EAAGjB,GAClC,OAAOgw+B,GAAY8B,EAAW,GAAG,EAAO7w+B,EAAGjB,EAC/C,CC3EuB,CAAoB8x+B,EAAW7w+B,EAAGjB,EAEjD,CACA,OAAO,CACX,EACAmoxB,EAAKzrxB,UAAUq1+B,WAAa,WACxB/0+B,KAAK268B,SAAWtB,GACZr58B,KAAK6s+B,QACL7s+B,KAAK6s+B,MAAQ,MAEb7s+B,KAAKyz+B,UACLzz+B,KAAKyz+B,SAASsB,aAElB/0+B,KAAK0y9B,YACT,EACAvnM,EAAKzrxB,UAAUomwB,MAAQ,WACnB9lwB,KAAKs09B,aACLt09B,KAAK+0+B,YACT,EACA5pN,EAAKzrxB,UAAUs1+B,aAAe,SAAUn4vB,GACpC,OAAO78O,KAAKwuP,QAAQ,QAAS3R,EACjC,EACAsuiB,EAAKzrxB,UAAU+49B,sBAAwB,SAAUhlvB,GAC3B,UAAdA,EACAzzO,KAAKs09B,aAEc,UAAd7gvB,EACLzzO,KAAK+0+B,aAGL/0+B,KAAK0y9B,YAEb,EACAvnM,EAAKzrxB,UAAU+09B,OAAS,SAAU5v8B,EAAK1jB,GACvB,UAAR0jB,EACA7kB,KAAK4mZ,SAASzlZ,GAGdunX,EAAOhpX,UAAU+09B,OAAO709B,KAAKI,KAAM6kB,EAAK1jB,EAEhD,EACAgqxB,EAAKzrxB,UAAUknZ,SAAW,SAAUiukB,EAAU1z9B,GAC1C,IAAImhO,EAAQtiO,KAAKsiO,MAWjB,OAVKA,IACDA,EAAQtiO,KAAKsiO,MAAQ,CAAC,GAEF,iBAAbuyvB,EACPvyvB,EAAMuyvB,GAAY1z9B,EAGlBkoZ,EAAO/mL,EAAOuyvB,GAElB709B,KAAK+0+B,aACE/0+B,IACX,EACAmrxB,EAAKzrxB,UAAUu1+B,aAAe,WAC1B,SAAUj1+B,KAAK268B,QAAUtB,GAC7B,EACAluL,EAAKzrxB,UAAUst+B,YAAc,SAAU9/wB,GACnC,OAAOk+uB,GAAa6nC,GAAoB/lxB,EAC5C,EACAi+jB,EAAKzrxB,UAAUs19B,mBAAqB,SAAUD,GAC1CrsmB,EAAOhpX,UAAUs19B,mBAAmBp19B,KAAKI,KAAM+09B,GAC/C,IAAIE,EAAcj19B,KAAKk19B,aACnBH,EAAQzyvB,QAAU2yvB,EAAY3yvB,QAC9B2yvB,EAAY3yvB,MAAQ+mL,EAAO,CAAC,EAAGrpZ,KAAKsiO,OAE5C,EACA6ojB,EAAKzrxB,UAAU029B,eAAiB,SAAUp6Z,EAAWrwjB,EAAOsp9B,EAAaU,EAAmB7t2B,EAAYgu2B,GACpGptmB,EAAOhpX,UAAU029B,eAAex29B,KAAKI,KAAMg8jB,EAAWrwjB,EAAOsp9B,EAAaU,EAAmB7t2B,EAAYgu2B,GACzG,IACIof,EADA9d,IAAyBzr9B,GAASgq9B,GAoBtC,GAlBIhq9B,GAASA,EAAM22N,MACXx6G,EACI6t2B,EACAuf,EAAcvp+B,EAAM22N,OAGpB4ywB,EAAc7rlB,EAAO,CAAC,EAAG4rkB,EAAY3yvB,OACrC+mL,EAAO6rlB,EAAavp+B,EAAM22N,SAI9B4ywB,EAAc7rlB,EAAO,CAAC,EAAGsskB,EAAoB319B,KAAKsiO,MAAQ2yvB,EAAY3yvB,OACtE+mL,EAAO6rlB,EAAavp+B,EAAM22N,QAGzB80vB,IACL8d,EAAcjgB,EAAY3yvB,OAE1B4ywB,EACA,GAAIpt3B,EAAY,CACZ9nH,KAAKsiO,MAAQ+mL,EAAO,CAAC,EAAGrpZ,KAAKsiO,OAG7B,IAFA,IAAI6ywB,EAA0B,CAAC,EAC3BC,EAAY9h+B,GAAK4h+B,GACZt0+B,EAAI,EAAGA,EAAIw0+B,EAAU/0+B,OAAQO,IAAK,CACvC,IAAIikB,EAAMuw9B,EAAUx0+B,GACY,iBAArBs0+B,EAAYrw9B,GACnB7kB,KAAKsiO,MAAMz9M,GAAOqw9B,EAAYrw9B,GAG9Bsw9B,EAAwBtw9B,GAAOqw9B,EAAYrw9B,EAEnD,CACA7kB,KAAKw39B,iBAAiBx7Z,EAAW,CAC7B15V,MAAO6ywB,GACRrf,EACP,MAEI919B,KAAKsiO,MAAQ4ywB,EACbl1+B,KAAK+0+B,YAGjB,EACA5pN,EAAKzrxB,UAAUo39B,aAAe,SAAUznd,GAGpC,IAFA,IACIgme,EADAxe,EAAcnumB,EAAOhpX,UAAUo39B,aAAal39B,KAAKI,KAAMqvgB,GAElDzugB,EAAI,EAAGA,EAAIyugB,EAAOhvgB,OAAQO,IAAK,CACpC,IAAI+K,EAAQ0jgB,EAAOzugB,GACf+K,EAAM22N,QACN+ywB,EAAcA,GAAe,CAAC,EAC9Br1+B,KAAKmt+B,YAAYkI,EAAa1p+B,EAAM22N,OAE5C,CAIA,OAHI+ywB,IACAxe,EAAYv0vB,MAAQ+ywB,GAEjBxe,CACX,EACA1rM,EAAKzrxB,UAAU6t+B,uBAAyB,WACpC,OAAO8F,EACX,EACAloN,EAAKzrxB,UAAUws+B,WAAa,WACxB,OAAO,CACX,EACA/gN,EAAK9hY,OAAS,SAAUnvQ,GACpB,IAAIo71B,EAAO,SAAU5snB,GAEjB,SAAS4snB,EAAIj57B,GACT,IAAIqQ,EAAQg8T,EAAO9oX,KAAKI,KAAMq8C,IAASr8C,KAEvC,OADAk6I,EAAaxpF,MAAQwpF,EAAaxpF,KAAK9wD,KAAK8sD,EAAOrQ,GAC5CqQ,CACX,CAOA,OAZA,GAAU4o7B,EAAK5snB,GAMf4snB,EAAI51+B,UAAUm0+B,gBAAkB,WAC5B,OAAOtj9B,EAAM2pH,EAAa7lI,MAC9B,EACAih+B,EAAI51+B,UAAUk0+B,gBAAkB,WAC5B,OAAOrj9B,EAAM2pH,EAAaooF,MAC9B,EACOgzwB,CACX,CAdU,CAcRnqN,GACF,IAAK,IAAItmwB,KAAOq1H,EACqB,mBAAtBA,EAAar1H,KACpByw9B,EAAI51+B,UAAUmlB,GAAOq1H,EAAar1H,IAG1C,OAAOyw9B,CACX,EACAnqN,EAAKkmM,mBACGkiB,EAAYpoN,EAAKzrxB,WACX6M,KAAO,OACjBgn+B,EAAUqB,uBAAyB,EACnCrB,EAAUvD,uBAAyB,EACnCuD,EAAUgC,kBAAmB,EAC7BhC,EAAUiC,WAAY,OACtBjC,EAAU54B,QpCxYa,EoCwYHvB,GAAiCC,KAElDluL,CACX,CAvWW,CAuWT,IACF,YCvYO,IAAIsqN,GAAsB,EAAS,CACtCrC,aAAa,EACbtuvB,KAAM2itB,EACNxj8B,EAAG,EACHjB,EAAG,EACHgiP,UAAW,OACXD,aAAc,MACd9H,WAAY,GACbg2vB,IACCyC,GAAS,SAAUhtnB,GAEnB,SAASgtnB,IACL,OAAkB,OAAXhtnB,GAAmBA,EAAOnoX,MAAMP,KAAMI,YAAcJ,IAC/D,CAwCA,OA3CA,GAAU01+B,EAAOhtnB,GAIjBgtnB,EAAMh2+B,UAAU40+B,UAAY,WACxB,IAAIjg+B,EAAQrU,KAAKqU,MACb+owB,EAAS/owB,EAAM+owB,OACnB,OAAiB,MAAVA,GAA6B,SAAXA,GAAqB/owB,EAAMg+T,UAAY,CACpE,EACAqjqB,EAAMh2+B,UAAUo0+B,QAAU,WACtB,IACI122B,EADQp9H,KAAKqU,MACA+oH,KACjB,OAAe,MAARA,GAAyB,SAATA,CAC3B,EACAs42B,EAAMh2+B,UAAUst+B,YAAc,SAAU9/wB,GACpC,OAAOk+uB,GAAaqqC,GAAqBvoxB,EAC7C,EACAwoxB,EAAMh2+B,UAAUi2+B,gBAAkB,SAAUji5B,GACxC1zF,KAAK6s+B,MAAQn54B,CACjB,EACAgi5B,EAAMh2+B,UAAUykP,gBAAkB,WAC9B,IAAI9vO,EAAQrU,KAAKqU,MACjB,IAAKrU,KAAK6s+B,MAAO,CACb,IAAIz88B,EAAO/b,EAAM+b,KACT,MAARA,EAAgBA,GAAQ,GAAOA,EAAO,GACtC,IAAIsjE,EAAOywJ,GAAgB/zN,EAAM/b,EAAMywO,KAAMzwO,EAAM2wO,UAAW3wO,EAAM0wO,cAGpE,GAFArxJ,EAAKzvF,GAAKoQ,EAAMpQ,GAAK,EACrByvF,EAAK1wF,GAAKqR,EAAMrR,GAAK,EACjBhD,KAAKs0+B,YAAa,CAClB,IAAI/w+B,EAAI8Q,EAAMg+T,UACd3+O,EAAKzvF,GAAKV,EAAI,EACdmwF,EAAK1wF,GAAKO,EAAI,EACdmwF,EAAK30D,OAASx7B,EACdmwF,EAAK10D,QAAUz7B,CACnB,CACAvD,KAAK6s+B,MAAQn54B,CACjB,CACA,OAAO1zF,KAAK6s+B,KAChB,EACA6I,EAAMrkB,sBACeqkB,EAAMh2+B,UACZ4s+B,mBAAqB,IAE7BoJ,CACX,CA7CY,CA6CV,IACFA,GAAMh2+B,UAAU6M,KAAO,QACvB,YC1DO,IAAIqp+B,GAAsB,EAAS,CACtC3x+B,EAAG,EACHjB,EAAG,GACJko+B,IACQ2K,GAAgC,CACvCxh+B,MAAO,EAAS,CACZpQ,GAAG,EACHjB,GAAG,EACH+7B,OAAO,EACPC,QAAQ,EACRq4T,IAAI,EACJC,IAAI,EACJw+oB,QAAQ,EACRC,SAAS,GACV5K,GAA+B929B,QAOlC2h+B,GAAW,SAAUttnB,GAErB,SAASstnB,IACL,OAAkB,OAAXttnB,GAAmBA,EAAOnoX,MAAMP,KAAMI,YAAcJ,IAC/D,CAwCA,OA3CA,GAAUg2+B,EAASttnB,GAInBstnB,EAAQt2+B,UAAUst+B,YAAc,SAAU9/wB,GACtC,OAAOk+uB,GAAawqC,GAAqB1oxB,EAC7C,EACA8oxB,EAAQt2+B,UAAUu2+B,SAAW,SAAUt+oB,GACnC,IAAItjV,EAAQrU,KAAKqU,MACbuQ,EAAOvQ,EAAMsjV,GACjB,GAAY,MAAR/yU,EACA,OAAOA,EAEX,IAnBa/c,EAmBT2xK,GAnBS3xK,EAmBiBwM,EAAMk2I,QAjBf,iBAAX1iJ,GACPA,EAAOk3B,OAASl3B,EAAOm3B,OAiBpB3qB,EAAMk2I,MAAQvqJ,KAAKk2+B,QACzB,IAAK18zB,EACD,OAAO,EAEX,IAAI28zB,EAAmB,UAARx+oB,EAAkB,SAAW,QACxCy+oB,EAAe/h+B,EAAM8h+B,GACzB,OAAoB,MAAhBC,EACO58zB,EAAYm+K,GAGZn+K,EAAYm+K,GAAOn+K,EAAY28zB,GAAYC,CAE1D,EACAJ,EAAQt2+B,UAAUyrO,SAAW,WACzB,OAAOnrO,KAAKi2+B,SAAS,QACzB,EACAD,EAAQt2+B,UAAUs7K,UAAY,WAC1B,OAAOh7K,KAAKi2+B,SAAS,SACzB,EACAD,EAAQt2+B,UAAU6t+B,uBAAyB,WACvC,OAAOsI,EACX,EACAG,EAAQt2+B,UAAUykP,gBAAkB,WAChC,IAAI9vO,EAAQrU,KAAKqU,MAIjB,OAHKrU,KAAK6s+B,QACN7s+B,KAAK6s+B,MAAQ,IAAI,GAAax49B,EAAMpQ,GAAK,EAAGoQ,EAAMrR,GAAK,EAAGhD,KAAKmrO,WAAYnrO,KAAKg7K,cAE7Eh7K,KAAK6s+B,KAChB,EACOmJ,CACX,CA7Cc,CA6CZ,IACFA,GAAQt2+B,UAAU6M,KAAO,QACzB,YCxEA,IAAI,GAAQ1J,KAAKogD,MACV,SAASoz7B,GAAqBC,EAAaC,EAAYli+B,GAC1D,GAAKki+B,EAAL,CAGA,IAAI3urB,EAAK2urB,EAAW3urB,GAChB9qH,EAAKy5yB,EAAWz5yB,GAChBpL,EAAK6kzB,EAAW7kzB,GAChBj6D,EAAK8+2B,EAAW9+2B,GACpB6+2B,EAAY1urB,GAAKA,EACjB0urB,EAAYx5yB,GAAKA,EACjBw5yB,EAAY5kzB,GAAKA,EACjB4kzB,EAAY7+2B,GAAKA,EACjB,IAAI46M,EAAYh+T,GAASA,EAAMg+T,UAC/B,OAAKA,GAGD,GAAW,EAALzqB,KAAY,GAAW,EAAL9qH,KACxBw5yB,EAAY1urB,GAAK0urB,EAAYx5yB,GAAKy4yB,GAAiB3trB,EAAIyqB,GAAW,IAElE,GAAW,EAAL3gJ,KAAY,GAAW,EAALj6D,KACxB6+2B,EAAY5kzB,GAAK4kzB,EAAY7+2B,GAAK892B,GAAiB7jzB,EAAI2gJ,GAAW,IAE/DikqB,GARIA,CAXX,CAoBJ,CACO,SAASE,GAAqBF,EAAaC,EAAYli+B,GAC1D,GAAKki+B,EAAL,CAGA,IAAI5pzB,EAAU4pzB,EAAWty+B,EACrB2oL,EAAU2pzB,EAAWvz+B,EACrByz+B,EAAcF,EAAWx38B,MACzB238B,EAAeH,EAAWv38B,OAC9Bs38B,EAAYry+B,EAAI0oL,EAChB2pzB,EAAYtz+B,EAAI4pL,EAChB0pzB,EAAYv38B,MAAQ038B,EACpBH,EAAYt38B,OAAS038B,EACrB,IAAIrkqB,EAAYh+T,GAASA,EAAMg+T,UAC/B,OAAKA,GAGLikqB,EAAYry+B,EAAIsx+B,GAAiB5ozB,EAAS0lJ,GAAW,GACrDikqB,EAAYtz+B,EAAIuy+B,GAAiB3ozB,EAASylJ,GAAW,GACrDikqB,EAAYv38B,MAAQl8B,KAAK8K,IAAI4n+B,GAAiB5ozB,EAAU8pzB,EAAapkqB,GAAW,GAASikqB,EAAYry+B,EAAmB,IAAhBwy+B,EAAoB,EAAI,GAChIH,EAAYt38B,OAASn8B,KAAK8K,IAAI4n+B,GAAiB3ozB,EAAU8pzB,EAAcrkqB,GAAW,GAASikqB,EAAYtz+B,EAAoB,IAAjB0z+B,EAAqB,EAAI,GAC5HJ,GANIA,CAXX,CAkBJ,CACO,SAASf,GAAiB528B,EAAU0zS,EAAWskqB,GAClD,IAAKtkqB,EACD,OAAO1zS,EAEX,IAAIi48B,EAAkB,GAAiB,EAAXj48B,GAC5B,OAAQi48B,EAAkB,GAAMvkqB,IAAc,GAAM,EAC9CukqB,EAAkB,GACjBA,GAAmBD,EAAqB,GAAK,IAAM,CAC9D,CCnDA,IAAIE,GACA,WACI72+B,KAAKiE,EAAI,EACTjE,KAAKgD,EAAI,EACThD,KAAK++B,MAAQ,EACb/+B,KAAKg/B,OAAS,CAClB,EAIA838B,GAA8B,CAAC,EAC/B10K,GAAQ,SAAU15c,GAElB,SAAS05c,EAAK/lxB,GACV,OAAOqsU,EAAO9oX,KAAKI,KAAMq8C,IAASr8C,IACtC,CAkCA,OArCA,GAAUoi0B,EAAM15c,GAIhB05c,EAAK1i0B,UAAUk0+B,gBAAkB,WAC7B,OAAO,IAAIiD,EACf,EACAz0K,EAAK1i0B,UAAUg0+B,UAAY,SAAUp8vB,EAAKhV,GACtC,IAAIr+N,EACAjB,EACA+7B,EACAC,EACJ,GAAIh/B,KAAKu1+B,iBAAkB,CACvB,IAAIwB,EAAiBP,GAAqBM,GAA6Bx0wB,EAAOtiO,KAAKqU,OACnFpQ,EAAI8y+B,EAAe9y+B,EACnBjB,EAAI+z+B,EAAe/z+B,EACnB+7B,EAAQg48B,EAAeh48B,MACvBC,EAAS+38B,EAAe/38B,OACxB+38B,EAAeh3+B,EAAIuiO,EAAMviO,EACzBuiO,EAAQy0wB,CACZ,MAEI9y+B,EAAIq+N,EAAMr+N,EACVjB,EAAIs/N,EAAMt/N,EACV+7B,EAAQujM,EAAMvjM,MACdC,EAASsjM,EAAMtjM,OAEdsjM,EAAMviO,EC3CZ,SAAmBu3O,EAAKhV,GAC3B,IAKImtI,EACAupD,EACAg+kB,EACAC,EAmCA/07B,EA3CAj+C,EAAIq+N,EAAMr+N,EACVjB,EAAIs/N,EAAMt/N,EACV+7B,EAAQujM,EAAMvjM,MACdC,EAASsjM,EAAMtjM,OACfj/B,EAAIuiO,EAAMviO,EAKVg/B,EAAQ,IACR96B,GAAQ86B,EACRA,GAASA,GAETC,EAAS,IACTh8B,GAAQg8B,EACRA,GAAUA,GAEG,iBAANj/B,EACP0vW,EAAKupD,EAAKg+kB,EAAKC,EAAKl3+B,EAEfA,aAAaN,MACD,IAAbM,EAAEM,OACFovW,EAAKupD,EAAKg+kB,EAAKC,EAAKl3+B,EAAE,GAEJ,IAAbA,EAAEM,QACPovW,EAAKunoB,EAAKj3+B,EAAE,GACZi5Z,EAAKi+kB,EAAKl3+B,EAAE,IAEM,IAAbA,EAAEM,QACPovW,EAAK1vW,EAAE,GACPi5Z,EAAKi+kB,EAAKl3+B,EAAE,GACZi3+B,EAAKj3+B,EAAE,KAGP0vW,EAAK1vW,EAAE,GACPi5Z,EAAKj5Z,EAAE,GACPi3+B,EAAKj3+B,EAAE,GACPk3+B,EAAKl3+B,EAAE,IAIX0vW,EAAKupD,EAAKg+kB,EAAKC,EAAK,EAGpBxnoB,EAAKupD,EAAKj6X,IAEV0wU,GAAM1wU,GADNmjB,EAAQutT,EAAKupD,GAEbA,GAAMj6X,EAAQmjB,GAEd807B,EAAKC,EAAKl48B,IAEVi48B,GAAMj48B,GADNmjB,EAAQ807B,EAAKC,GAEbA,GAAMl48B,EAAQmjB,GAEd82W,EAAKg+kB,EAAKh48B,IAEVg6X,GAAMh6X,GADNkjB,EAAQ82W,EAAKg+kB,GAEbA,GAAMh48B,EAASkjB,GAEfutT,EAAKwnoB,EAAKj48B,IAEVywU,GAAMzwU,GADNkjB,EAAQutT,EAAKwnoB,GAEbA,GAAMj48B,EAASkjB,GAEnBo1L,EAAIyvhB,OAAO9iwB,EAAIwrW,EAAIzsW,GACnBs0O,EAAI0vhB,OAAO/iwB,EAAI86B,EAAQi6X,EAAIh2Z,GACpB,IAAPg2Z,GAAY1hL,EAAI4yiB,IAAIjmxB,EAAI86B,EAAQi6X,EAAIh2Z,EAAIg2Z,EAAIA,GAAKn2Z,KAAKsmC,GAAK,EAAG,GAC9DmuM,EAAI0vhB,OAAO/iwB,EAAI86B,EAAO/7B,EAAIg8B,EAASg48B,GAC5B,IAAPA,GAAY1/vB,EAAI4yiB,IAAIjmxB,EAAI86B,EAAQi48B,EAAIh0+B,EAAIg8B,EAASg48B,EAAIA,EAAI,EAAGn0+B,KAAKsmC,GAAK,GACtEmuM,EAAI0vhB,OAAO/iwB,EAAIgz+B,EAAIj0+B,EAAIg8B,GAChB,IAAPi48B,GAAY3/vB,EAAI4yiB,IAAIjmxB,EAAIgz+B,EAAIj0+B,EAAIg8B,EAASi48B,EAAIA,EAAIp0+B,KAAKsmC,GAAK,EAAGtmC,KAAKsmC,IACnEmuM,EAAI0vhB,OAAO/iwB,EAAGjB,EAAIysW,GACX,IAAPA,GAAYn4H,EAAI4yiB,IAAIjmxB,EAAIwrW,EAAIzsW,EAAIysW,EAAIA,EAAI5sW,KAAKsmC,GAAc,IAAVtmC,KAAKsmC,GAC1D,CD3BY,CAA0BmuM,EAAKhV,GAH/BgV,EAAI5jJ,KAAKzvF,EAAGjB,EAAG+7B,EAAOC,EAK9B,EACAojyB,EAAK1i0B,UAAUws+B,WAAa,WACxB,OAAQls+B,KAAKsiO,MAAMvjM,QAAU/+B,KAAKsiO,MAAMtjM,MAC5C,EACOojyB,CACX,CAvCW,CAuCT,IACFA,GAAK1i0B,UAAU6M,KAAO,OACtB,YE9CA,IAAI2q+B,GAA0B,CAC1B952B,KAAM,QAGC+52B,GAA+B,CACtC9i+B,MAAO,EAAS,CACZ+oH,MAAM,EACNggpB,QAAQ,EACRn6gB,aAAa,EACbM,eAAe,EACf8uE,WAAW,EACX5tF,UAAU,EACVuF,YAAY,EACZjrN,OAAO,EACPC,QAAQ,EACRo48B,iBAAiB,EACjBC,gBAAgB,EAChBC,mBAAmB,EACnBC,mBAAmB,EACnB791B,iBAAiB,EACjBxhB,SAAS,EACTogP,aAAa,EACbk/nB,aAAa,EACb7+nB,cAAc,GACfwynB,GAA+B929B,QAElCoj+B,GAAU,SAAU/unB,GAEpB,SAAS+unB,EAAOp77B,GACZ,IAAIqQ,EAAQg8T,EAAO9oX,KAAKI,OAASA,KAKjC,OAJA0sD,EAAMngD,KAAO,OACbmgD,EAAMm/H,UAAY,GAClBn/H,EAAMgr7B,cAAgBR,GACtBxq7B,EAAMuhe,KAAK5xe,GACJqQ,CACX,CAqaA,OA7aA,GAAU+q7B,EAAQ/unB,GASlB+unB,EAAO/3+B,UAAUg78B,YAAc,WAC3B,OAAO168B,KAAK6rL,SAChB,EACA4rzB,EAAO/3+B,UAAU6uE,OAAS,WACtBm6S,EAAOhpX,UAAU6uE,OAAO3uE,KAAKI,MACzBA,KAAK8s+B,gBACL9s+B,KAAK23+B,kBAET,IAAK,IAAI/2+B,EAAI,EAAGA,EAAIZ,KAAK6rL,UAAUxrL,OAAQO,IAAK,CAC5C,IAAIspF,EAAQlqF,KAAK6rL,UAAUjrL,GAC3BspF,EAAMuv3B,OAASz58B,KAAKy58B,OACpBvv3B,EAAMvkF,EAAI3F,KAAK2F,EACfukF,EAAM6yG,GAAK/8L,KAAK+8L,GAChB7yG,EAAM8h5B,QAAUhs+B,KAAKgs+B,QACrB9h5B,EAAMm3D,OAASrhJ,KAAKqhJ,OACpBn3D,EAAMox4B,UAAYt79B,KAAKs79B,SAC3B,CACJ,EACAmc,EAAO/3+B,UAAU+68B,gBAAkB,WAC/B,IAAIsY,EAAqB/y9B,KAAK+y9B,mBAC1BA,GACAA,EAAmBtY,kBACfsY,EAAmBnw1B,YACnB5iI,KAAK4iI,UAAYmw1B,EAAmBnw1B,YAIxC8lP,EAAOhpX,UAAU+68B,gBAAgB768B,KAAKI,KAE9C,EACAy3+B,EAAO/3+B,UAAUyw9B,kBAAoB,SAAU/s9B,GAC3C,IAAI2v9B,EAAqB/y9B,KAAK+y9B,mBAC9B,OAAOA,EACDA,EAAmB5C,kBAAkB/s9B,GACrCslX,EAAOhpX,UAAUyw9B,kBAAkBvw9B,KAAKI,KAAMoD,EACxD,EACAq0+B,EAAO/3+B,UAAUkx9B,qBAAuB,WAKpC,OAJI5w9B,KAAKqs8B,eACLrs8B,KAAKqs8B,aAAaukB,uBAClB5w9B,KAAKqs8B,aAAasmB,iBAAgB,IAE/BjqmB,EAAOhpX,UAAUkx9B,qBAAqBhx9B,KAAKI,KACtD,EACAy3+B,EAAO/3+B,UAAUi4+B,gBAAkB,WAwZhC,IAA4Btj+B,EAvZ3BrU,KAAK43+B,aAAe,EAwZxBC,GAD+Bxj+B,EAtZRrU,KAAKqU,OAwZ5B,EAAKA,EAAM219B,KAAM6N,IAvZb73+B,KAAKqU,MAAM219B,KACLhq+B,KAAK83+B,mBACL93+B,KAAK+3+B,oBACX/3+B,KAAK6rL,UAAUxrL,OAASL,KAAK43+B,aAC7B53+B,KAAK+s+B,cACT,EACA0K,EAAO/3+B,UAAUi49B,YAAc,SAAUp/8B,GACrCmwW,EAAOhpX,UAAUi49B,YAAY/39B,KAAKI,KAAMuY,GACxC,IAAK,IAAI3X,EAAI,EAAGA,EAAIZ,KAAK6rL,UAAUxrL,OAAQO,IACvCZ,KAAK6rL,UAAUjrL,GAAGm08B,KAAOx87B,CAEjC,EACAk/9B,EAAO/3+B,UAAUm49B,iBAAmB,SAAUt/8B,GAC1CmwW,EAAOhpX,UAAUm49B,iBAAiBj49B,KAAKI,KAAMuY,GAC7C,IAAK,IAAI3X,EAAI,EAAGA,EAAIZ,KAAK6rL,UAAUxrL,OAAQO,IACvCZ,KAAK6rL,UAAUjrL,GAAGm08B,KAAO,IAEjC,EACA0iC,EAAO/3+B,UAAUykP,gBAAkB,WAI/B,GAHInkP,KAAK8s+B,gBACL9s+B,KAAK23+B,mBAEJ33+B,KAAK6s+B,MAAO,CAKb,IAJA,IAAI34B,EAAU,IAAI,GAAa,EAAG,EAAG,EAAG,GACpCl06B,EAAWhgC,KAAK6rL,UAChBwvyB,EAAS,GACT3n4B,EAAO,KACF9yF,EAAI,EAAGA,EAAIo/B,EAAS3/B,OAAQO,IAAK,CACtC,IAAIspF,EAAQlqD,EAASp/B,GACjB269B,EAAYrx4B,EAAMi6J,kBAClBvhH,EAAY14C,EAAMim4B,kBAAkBkL,GACpCz41B,GACAsx0B,EAAQp00B,KAAKy71B,GACbrnB,EAAQpI,eAAelp0B,IACvBlvC,EAAOA,GAAQwg3B,EAAQ3j7B,SAClByyJ,MAAMkxxB,KAGXxg3B,EAAOA,GAAQ6n4B,EAAUhr8B,SACpByyJ,MAAMu4yB,EAEnB,CACAv79B,KAAK6s+B,MAAQn54B,GAAQwg3B,CACzB,CACA,OAAOl08B,KAAK6s+B,KAChB,EACA4K,EAAO/3+B,UAAU209B,oBAAsB,SAAU2jB,GAC7Ch4+B,KAAK03+B,cAAgBM,GAAoBd,EAC7C,EACAO,EAAO/3+B,UAAUi19B,eAAiB,SAAU3n4B,GAI5C,EACAyq5B,EAAO/3+B,UAAUyt+B,YAAc,SAAUC,EAAaC,GAClD,IAAKA,EACD,OAAOD,EAEX,IAAI6K,EAAa5K,EAAYrD,KACzBkO,EAAa9K,EAAYpD,MAASiO,GAAc,CAAC,EASrD,OARA5ulB,EAAO+jlB,EAAaC,GAChB4K,GAAcC,GACdl4+B,KAAKm4+B,WAAWD,EAAYD,GAC5B7K,EAAYpD,KAAOkO,GAEdA,IACL9K,EAAYpD,KAAOkO,GAEhB9K,CACX,EACAqK,EAAO/3+B,UAAUy4+B,WAAa,SAAUD,EAAYD,GAEhD,IADA,IAAIG,EAAY9k+B,GAAK2k+B,GACZr3+B,EAAI,EAAGA,EAAIw3+B,EAAU/3+B,OAAQO,IAAK,CACvC,IAAIy3+B,EAAWD,EAAUx3+B,GACzBs3+B,EAAWG,GAAYH,EAAWG,IAAa,CAAC,EAChDhvlB,EAAO6ulB,EAAWG,GAAWJ,EAAWI,GAC5C,CACJ,EACAZ,EAAO/3+B,UAAU6t+B,uBAAyB,WACtC,OAAO4J,EACX,EACAM,EAAO/3+B,UAAU44+B,kBAAoB,SAAUtvC,GAC3C,IAAI9+2B,EAAQlqF,KAAK6rL,UAAU7rL,KAAK43+B,cAOhC,OANK1t5B,GAAWA,aAAiB8+2B,IAC7B9+2B,EAAQ,IAAI8+2B,GAEhBhp8B,KAAK6rL,UAAU7rL,KAAK43+B,gBAAkB1t5B,EACtCA,EAAM6q3B,KAAO/08B,KAAK+08B,KAClB7q3B,EAAMmH,OAASrxF,KACRkqF,CACX,EACAut5B,EAAO/3+B,UAAUq4+B,kBAAoB,WACjC,IAAI1j+B,EAAQrU,KAAKqU,MACbkk+B,EAAWlk+B,EAAMywO,MAAQ2itB,EACzB+wC,EAAcnk+B,EAAM6jH,QAEpBug3B,EjB7GL,SAAwBro9B,EAAM/b,GACzB,MAAR+b,IAAiBA,GAAQ,IACzB,IASImb,EATAg2U,EAAWltW,EAAMktW,SACjBrpP,EAAU7jH,EAAM6jH,QAChB4sH,EAAOzwO,EAAMywO,KACbt3J,EAAwB,aAAb+zR,EACXm3nB,EAAuBvyN,GAAcrhiB,GACrCkF,EAAasgtB,GAAUj27B,EAAM21O,WAAY0uvB,GACzCC,IAAkBtk+B,EAAqB,gBACvCuk+B,EAA8C,aAAvBvk+B,EAAMwk+B,aAC7B958B,EAAQ1qB,EAAM0qB,MAQdwq8B,GAFAh+7B,EAJS,MAATxM,GAA+B,UAAbwiV,GAAqC,aAAbA,EAIlCnxV,EAAOA,EAAKxrB,MAAM,MAAQ,GAH1BwrB,EAAO+zd,GAAS/zd,EAAM/b,EAAMywO,KAAM/lN,EAAoB,aAAbwiV,EAAyB,GAAGh2U,MAAQ,IAK/DlrC,OAAS2pP,EAC/BhrN,EAASsr6B,GAAUj27B,EAAM2qB,OAAQuq8B,GACrC,GAAIA,EAAgBvq8B,GAAU458B,EAAsB,CAChD,IAAIjqL,EAAY9rzB,KAAKyK,MAAM0xB,EAASgrN,GACpCz+M,EAAQA,EAAMxpC,MAAM,EAAG4szB,EAC3B,CACA,GAAIv+xB,GAAQo9D,GAAqB,MAATzuD,EAKpB,IAJA,IAAI5V,EAAUs/8B,GAAuB1p8B,EAAO+lN,EAAMzwO,EAAMm09B,SAAU,CAC9DI,QAASv09B,EAAMyk+B,gBACftn7B,YAAan9C,EAAMm9C,cAEd5wD,EAAI,EAAGA,EAAI2qC,EAAMlrC,OAAQO,IAC9B2qC,EAAM3qC,GAAK8n+B,GAAmBn97B,EAAM3qC,GAAIuoB,GAGhD,IAAIsg9B,EAAczq8B,EACd+p8B,EAAe,EACnB,IAASno+B,EAAI,EAAGA,EAAI2qC,EAAMlrC,OAAQO,IAC9Bmo+B,EAAelm+B,KAAK8K,IAAIw9N,GAAS5/L,EAAM3qC,GAAIkkP,GAAOikvB,GAEzC,MAAThq8B,IACAA,EAAQgq8B,GAEZ,IAAIS,EAAaT,EASjB,OARI7w2B,IACAux2B,GAAevx2B,EAAQ,GAAKA,EAAQ,GACpCsx2B,GAActx2B,EAAQ,GAAKA,EAAQ,GACnCn5F,GAASm5F,EAAQ,GAAKA,EAAQ,IAE9Byg3B,IACAnP,EAAazq8B,GAEV,CACHwM,MAAOA,EACPvM,OAAQA,EACRwq8B,WAAYA,EACZC,YAAaA,EACbz/uB,WAAYA,EACZ0uvB,qBAAsBA,EACtB3P,aAAcA,EACdQ,cAAeA,EACfxq8B,MAAOA,EAEf,CiBgD2Bg68B,CADRC,GAAa3k+B,GACgBA,GACpC4k+B,EAAaC,GAAmB7k+B,GAChCsk+B,IAAkBtk+B,EAAqB,gBACvCo19B,EAAcgP,EAAahP,YAC3BD,EAAaiP,EAAajP,WAC1BT,EAAe0P,EAAa1P,aAC5BpX,EAAY8mB,EAAalt8B,MACzBy+M,EAAayuvB,EAAazuvB,WAC1BxwG,EAAex5I,KAAK03+B,cACpByB,EAAQ9k+B,EAAMpQ,GAAK,EACnBgkzB,EAAQ5zyB,EAAMrR,GAAK,EACnBgiP,EAAY3wO,EAAMkwwB,OAAS/qoB,EAAa+qoB,OAAS,OACjDpxC,EAAgB9+tB,EAAM8+tB,eAAiB35lB,EAAa25lB,eAAiB,MACrEimQ,EAAQD,EACRE,EAAQ,GAAYpxL,EAAOwwL,EAAalP,cAAep2P,GAC3D,GAAI8lQ,GAAcT,EAAa,CAC3B,IAAIc,EAAO5nB,GAAYynB,EAAO3P,EAAYxkvB,GACtCu0vB,EAAO,GAAYtxL,EAAOwhL,EAAat2P,GAC3C8lQ,GAAcj5+B,KAAKw5+B,kBAAkBnl+B,EAAOA,EAAOil+B,EAAMC,EAAM/P,EAAYC,EAC/E,CACA4P,GAASrvvB,EAAa,EAClBwuvB,IACAY,EAAQK,GAAmBN,EAAOn0vB,EAAWwzvB,GACvB,QAAlBrlQ,EACAkmQ,GAASb,EAAY,GAEE,WAAlBrlQ,IACLkmQ,GAASb,EAAY,KAkB7B,IAfA,IAAIkB,EAAmB,EACnBC,GAAiB,EACjBlmB,GAAWmmB,GAAQ,SAAUvl+B,EAC3BA,EAAM+oH,MACLu82B,GAAiB,EAAMng2B,EAAapc,QACvCs21B,GAAammB,GAAU,WAAYxl+B,EACjCA,EAAM+owB,OACJu7N,GACKn/1B,EAAam60B,aAAcgmB,EAE9B,MADCD,EAtNa,EAsNiClg2B,EAAa4joB,UAElE08N,EAAYzl+B,EAAMgj+B,eAAiB,EACnC0C,EAAmC,MAAf1l+B,EAAM0qB,QACH,aAAnB1qB,EAAMktW,UAA8C,UAAnBltW,EAAMktW,UAA2C,aAAnBltW,EAAMktW,UACzEm3nB,EAAuBD,EAAaC,qBAC/B93+B,EAAI,EAAGA,EAAI+w9B,EAAUtx9B,OAAQO,IAAK,CACvC,IAAIi5I,EAAK75I,KAAKs4+B,kBAAkB,IAC5B0B,EAAang2B,EAAGmz1B,cACpBnz1B,EAAGuwQ,SAAS4vlB,GACZA,EAAW5p9B,KAAOuh8B,EAAU/w9B,GAC5Bo5+B,EAAW/1+B,EAAIm1+B,EACfY,EAAWh3+B,EAAIq2+B,EACXr0vB,IACAg1vB,EAAWh1vB,UAAYA,GAE3Bg1vB,EAAWj1vB,aAAe,SAC1Bi1vB,EAAWpu2B,QAAUv3H,EAAMu3H,QAC3Bou2B,EAAW5G,aAAc,EACrB0G,IACAE,EAAWh1N,WAAa3wwB,EAAMgj+B,gBAAkB,EAChD2C,EAAWnp3B,YAAcx8G,EAAM+i+B,iBAAmB,cAClD4C,EAAWl1N,cAAgBzwwB,EAAMij+B,mBAAqB,EACtD0C,EAAWj1N,cAAgB1wwB,EAAMkj+B,mBAAqB,GAE1DyC,EAAW58N,OAASs2M,EACpBsmB,EAAW582B,KAAOq21B,EACdC,IACAsmB,EAAW3nqB,UAAYh+T,EAAMg+T,WAAaqnqB,EAC1CM,EAAWz2N,SAAWlvwB,EAAMkvwB,SAC5By2N,EAAWx2N,eAAiBnvwB,EAAMmvwB,gBAAkB,GAExDw2N,EAAWl1vB,KAAOyzvB,EAClB0B,GAAgBD,EAAY3l+B,GAC5Bgl+B,GAASrvvB,EACL+vvB,GACAlg2B,EAAG871B,gBAAgB,IAAI,GAAajkB,GAAYsoB,EAAW/1+B,EAAGoQ,EAAM0qB,MAAOi78B,EAAWh1vB,WAAY,GAAYg1vB,EAAWh3+B,EAAG01+B,EAAsBsB,EAAWj1vB,cAAegkvB,EAAc2P,GAElM,CACJ,EACAjB,EAAO/3+B,UAAUo4+B,iBAAmB,WAChC,IAAIzj+B,EAAQrU,KAAKqU,MAEbok+B,EjBtGL,SAAuBro9B,EAAM/b,GAChC,IAAIok+B,EAAe,IAAInP,GAEvB,GADQ,MAARl58B,IAAiBA,GAAQ,KACpBA,EACD,OAAOqo9B,EAUX,IARA,IAOIj19B,EAPA029B,EAAW7l+B,EAAM0qB,MACjBuu4B,EAAYj55B,EAAM2qB,OAClBuiV,EAAWltW,EAAMktW,SACjBoonB,EAAyB,UAAbponB,GAAqC,aAAbA,GAAwC,MAAZ24nB,EAE9D,KADA,CAAEn78B,MAAOm78B,EAAU7P,WAAY,EAAGxjvB,SAAuB,aAAb06H,GAE9ChvT,EAAY+16B,GAAU/16B,UAAY,EAEI,OAAlC/uC,EAAS8k9B,GAAUl29B,KAAKge,KAAgB,CAC5C,IAAI+p9B,EAAe329B,EAAOxG,MACtBm99B,EAAe5n7B,GACfm36B,GAAW+O,EAAcro9B,EAAKkH,UAAUi7B,EAAW4n7B,GAAe9l+B,EAAOs19B,GAE7ED,GAAW+O,EAAcj19B,EAAO,GAAInP,EAAOs19B,EAAUnm9B,EAAO,IAC5D+uC,EAAY+16B,GAAU/16B,SAC1B,CACIA,EAAYniC,EAAK/vB,QACjBqp+B,GAAW+O,EAAcro9B,EAAKkH,UAAUi7B,EAAWniC,EAAK/vB,QAASgU,EAAOs19B,GAE5E,IAAIyQ,EAAc,GACdC,EAAmB,EACnBC,EAAkB,EAClBC,EAAalm+B,EAAM6jH,QACnB1qC,EAAwB,aAAb+zR,EACXi5nB,EAAsC,aAAvBnm+B,EAAMwk+B,aACzB,SAAS4B,EAAWn77B,EAAM+yR,EAAWroF,GACjC1qM,EAAKvgB,MAAQszS,EACb/yR,EAAK0qM,WAAaA,EAClBqwvB,GAAoBrwvB,EACpBswvB,EAAkBz3+B,KAAK8K,IAAI2s+B,EAAiBjoqB,EAChD,CACAupM,EAAO,IAAK,IAAIh7gB,EAAI,EAAGA,EAAI63+B,EAAalt8B,MAAMlrC,OAAQO,IAAK,CAIvD,IAHA,IAAI0+C,EAAOm57B,EAAalt8B,MAAM3qC,GAC1BopP,EAAa,EACbqoF,EAAY,EACPjuU,EAAI,EAAGA,EAAIk7C,EAAKgl5B,OAAOjk8B,OAAQ+D,IAAK,CACzC,IACI2l+B,GADA1szB,EAAQ/9H,EAAKgl5B,OAAOlg8B,IACDy/P,WAAaxvP,EAAM219B,KAAK3szB,EAAMwmF,YAAc,CAAC,EAChE20uB,EAAcn7zB,EAAMm7zB,YAAczO,EAAW7x2B,QAC7Cwi3B,EAAWlC,EAAcA,EAAY,GAAKA,EAAY,GAAK,EAC3D1zvB,EAAOznE,EAAMynE,KAAOilvB,EAAWjlvB,MAAQzwO,EAAMywO,KACjDznE,EAAMkszB,cAAgBpjN,GAAcrhiB,GACpC,IAAI61vB,EAAcrwC,GAAUy/B,EAAW/q8B,OAAQq+I,EAAMkszB,eAOrD,GANAlszB,EAAMtiJ,YAAc4/8B,EACpBnC,IAAgBmC,GAAenC,EAAY,GAAKA,EAAY,IAC5Dn7zB,EAAMr+I,OAAS278B,EACft9zB,EAAM2sE,WAAawgtB,GAAUu/B,EAAW//uB,WAAY31O,EAAM21O,WAAY2wvB,GACtEt9zB,EAAMknmB,MAAQwlN,GAAcA,EAAWxlN,OAASlwwB,EAAMkwwB,MACtDlnmB,EAAM81jB,cAAgB42P,GAAcA,EAAW52P,eAAiB,SAC5DqnQ,GAA6B,MAAbltE,GAAqB+sE,EAAmBh9zB,EAAM2sE,WAAasjrB,EAAW,CAClFlp6B,EAAI,GACJk7C,EAAKgl5B,OAAShl5B,EAAKgl5B,OAAOvi8B,MAAM,EAAGqC,GACnCq2+B,EAAWn77B,EAAM+yR,EAAWroF,GAC5ByuvB,EAAalt8B,MAAQkt8B,EAAalt8B,MAAMxpC,MAAM,EAAGnB,EAAI,IAGrD63+B,EAAalt8B,MAAQkt8B,EAAalt8B,MAAMxpC,MAAM,EAAGnB,GAErD,MAAMg7gB,CACV,CACA,IAAIg/d,EAAkB7Q,EAAWhr8B,MAC7B878B,EAA4C,MAAnBD,GAA+C,SAApBA,EACxD,GAA+B,iBAApBA,GAAuF,MAAvDA,EAAgB/h+B,OAAO+h+B,EAAgBv6+B,OAAS,GACvFg9K,EAAMy9zB,aAAeF,EACrBR,EAAYv4+B,KAAKw7K,GACjBA,EAAM0rzB,aAAe59vB,GAAS9tD,EAAMjtJ,KAAM00N,OAEzC,CACD,GAAI+1vB,EAAwB,CACxB,IAAIE,EAAsBhR,EAAWrw1B,gBACjCsh2B,EAAQD,GAAuBA,EAAoBxw1B,MACnDyw1B,GAEI,GADJA,EAAQ,GAA2BA,MAE/B39zB,EAAMt+I,MAAQl8B,KAAK8K,IAAI0vK,EAAMt+I,MAAOi88B,EAAMj88B,MAAQ478B,EAAcK,EAAMh88B,QAGlF,CACA,IAAIi88B,EAAmBzt5B,GAAwB,MAAZ0s5B,EAC7BA,EAAW7nqB,EAAY,KACL,MAApB4oqB,GAA4BA,EAAmB59zB,EAAMt+I,OAChD878B,GAA0BI,EAAmBP,GAC9Cr9zB,EAAMjtJ,KAAO,GACbitJ,EAAMt+I,MAAQs+I,EAAM0rzB,aAAe,IAGnC1rzB,EAAMjtJ,KAAOm48B,GAAalrzB,EAAMjtJ,KAAM6q9B,EAAmBP,EAAU51vB,EAAMzwO,EAAMm09B,SAAU,CAAEI,QAASv09B,EAAMyk+B,kBAC1Gz7zB,EAAMt+I,MAAQs+I,EAAM0rzB,aAAe59vB,GAAS9tD,EAAMjtJ,KAAM00N,IAI5DznE,EAAM0rzB,aAAe59vB,GAAS9tD,EAAMjtJ,KAAM00N,EAElD,CACAznE,EAAMt+I,OAAS278B,EACfroqB,GAAah1J,EAAMt+I,MACnBgr8B,IAAe//uB,EAAannP,KAAK8K,IAAIq8O,EAAY3sE,EAAM2sE,YAC3D,CACAywvB,EAAWn77B,EAAM+yR,EAAWroF,EAChC,CASA,IARAyuvB,EAAajP,WAAaiP,EAAa158B,MAAQur6B,GAAU4vC,EAAUI,GACnE7B,EAAahP,YAAcgP,EAAaz58B,OAASsr6B,GAAUh9B,EAAW+sE,GACtE5B,EAAalP,cAAgB8Q,EAC7B5B,EAAa1P,aAAeuR,EACxBC,IACA9B,EAAajP,YAAc+Q,EAAW,GAAKA,EAAW,GACtD9B,EAAahP,aAAe8Q,EAAW,GAAKA,EAAW,IAElD35+B,EAAI,EAAGA,EAAIw5+B,EAAY/5+B,OAAQO,IAAK,CACzC,IAAIy8K,EACAy9zB,GADAz9zB,EAAQ+8zB,EAAYx5+B,IACCk6+B,aACzBz9zB,EAAMt+I,MAAQpJ,SAASml9B,EAAc,IAAM,IAAMrC,EAAa158B,KAClE,CACA,OAAO058B,CACX,CiBlB2ByC,CADRlC,GAAa3k+B,GACeA,GACnC009B,EAAe0P,EAAa158B,MAC5Byq8B,EAAaiP,EAAajP,WAC1BC,EAAcgP,EAAahP,YAC3B+O,EAAcnk+B,EAAM6jH,QACpBih3B,EAAQ9k+B,EAAMpQ,GAAK,EACnBgkzB,EAAQ5zyB,EAAMrR,GAAK,EACnBw2I,EAAex5I,KAAK03+B,cACpB1yvB,EAAY3wO,EAAMkwwB,OAAS/qoB,EAAa+qoB,MACxCpxC,EAAgB9+tB,EAAM8+tB,eAAiB35lB,EAAa25lB,cACpDmmQ,EAAO5nB,GAAYynB,EAAO3P,EAAYxkvB,GACtCu0vB,EAAO,GAAYtxL,EAAOwhL,EAAat2P,GACvCgoQ,EAAQ7B,EACR8B,EAAU7B,EACVf,IACA2C,GAAS3C,EAAY,GACrB4C,GAAW5C,EAAY,IAE3B,IAAI6C,EAASF,EAAQpS,EACjBmQ,GAAmB7k+B,IACnBrU,KAAKw5+B,kBAAkBnl+B,EAAOA,EAAOil+B,EAAMC,EAAM/P,EAAYC,GAGjE,IADA,IAAIkP,IAAkBtk+B,EAAqB,gBAClCzT,EAAI,EAAGA,EAAI63+B,EAAalt8B,MAAMlrC,OAAQO,IAAK,CAWhD,IAVA,IAAI0+C,EAAOm57B,EAAalt8B,MAAM3qC,GAC1B0j8B,EAAShl5B,EAAKgl5B,OACdg3C,EAAah3C,EAAOjk8B,OACpB2pP,EAAa1qM,EAAK0qM,WAClBuxvB,EAAgBj87B,EAAKvgB,MACrB8j7B,EAAY,EACZ24B,EAAYL,EACZM,EAAaJ,EACbv4B,EAAaw4B,EAAa,EAC1Bj+zB,OAAQ,EACLwlyB,EAAYy4B,MACXj+zB,EAAQinxB,EAAOue,IAAmBt+L,OAAyB,SAAhBlnmB,EAAMknmB,QACrDvkxB,KAAK07+B,YAAYr+zB,EAAOhpK,EAAO21O,EAAYoxvB,EAASI,EAAW,OAAQ7C,GACvE4C,GAAiBl+zB,EAAMt+I,MACvBy88B,GAAan+zB,EAAMt+I,MACnB8j7B,IAEJ,KAAOC,GAAc,GAC+B,WAA5CzlyB,EAAQinxB,EAAOwe,IAAmBv+L,OACtCvkxB,KAAK07+B,YAAYr+zB,EAAOhpK,EAAO21O,EAAYoxvB,EAASK,EAAY,QAAS9C,GACzE4C,GAAiBl+zB,EAAMt+I,MACvB088B,GAAcp+zB,EAAMt+I,MACpB+j7B,IAGJ,IADA04B,IAAczS,GAAgByS,EAAYL,IAAUE,EAASI,GAAcF,GAAiB,EACrF14B,GAAaC,GAChBzlyB,EAAQinxB,EAAOue,GACf7i9B,KAAK07+B,YAAYr+zB,EAAOhpK,EAAO21O,EAAYoxvB,EAASI,EAAYn+zB,EAAMt+I,MAAQ,EAAG,SAAU458B,GAC3F6C,GAAan+zB,EAAMt+I,MACnB8j7B,IAEJu4B,GAAWpxvB,CACf,CACJ,EACAytvB,EAAO/3+B,UAAUg8+B,YAAc,SAAUr+zB,EAAOhpK,EAAO21O,EAAYoxvB,EAASn3+B,EAAG+gP,EAAW22vB,GACtF,IAAI5R,EAAa119B,EAAM219B,KAAK3szB,EAAMwmF,YAAc,CAAC,EACjDkmuB,EAAW358B,KAAOitJ,EAAMjtJ,KACxB,IAAI+itB,EAAgB91jB,EAAM81jB,cACtBnwuB,EAAIo4+B,EAAUpxvB,EAAa,EACT,QAAlBmpf,EACAnwuB,EAAIo4+B,EAAU/9zB,EAAMr+I,OAAS,EAEN,WAAlBm0sB,IACLnwuB,EAAIo4+B,EAAUpxvB,EAAa3sE,EAAMr+I,OAAS,IAE5Bq+I,EAAMitzB,cAAgB4O,GAAmBnP,IAC7C/p+B,KAAKw5+B,kBAAkBzP,EAAY119B,EAAqB,UAAd2wO,EAClD/gP,EAAIo5K,EAAMt+I,MACI,WAAdimN,EACI/gP,EAAIo5K,EAAMt+I,MAAQ,EAClB96B,EAAGjB,EAAIq6K,EAAMr+I,OAAS,EAAGq+I,EAAMt+I,MAAOs+I,EAAMr+I,QACtD,IAAI258B,IAAiB5O,EAAWrw1B,gBAC5B8+1B,EAAcn7zB,EAAMm7zB,YACpBA,IACAv0+B,EAAIw1+B,GAAmBx1+B,EAAG+gP,EAAWwzvB,GACrCx1+B,GAAKq6K,EAAMr+I,OAAS,EAAIw58B,EAAY,GAAKn7zB,EAAMtiJ,YAAc,GAEjE,IAAI8+G,EAAK75I,KAAKs4+B,kBAAkB,IAC5B0B,EAAang2B,EAAGmz1B,cACpBnz1B,EAAGuwQ,SAAS4vlB,GACZ,IAAIxg2B,EAAex5I,KAAK03+B,cACpBiC,GAAiB,EACjBD,EAAmB,EACnBjmB,EAAWmmB,GAAQ,SAAU7P,EAAaA,EAAW3s2B,KACnD,SAAU/oH,EAAQA,EAAM+oH,MACnBu82B,GAAiB,EAAMng2B,EAAapc,OAC3Cs21B,EAAammB,GAAU,WAAY9P,EAAaA,EAAW3sN,OACzD,WAAY/owB,EAAQA,EAAM+owB,OACpBu7N,GACIgD,GACCni2B,EAAam60B,aAAcgmB,EAC9B,MADkDD,EA/VxC,EA+VsFlg2B,EAAa4joB,SAEvH08N,EAAY/P,EAAWsN,eAAiB,GACrChj+B,EAAMgj+B,eAAiB,EAC9B2C,EAAW5p9B,KAAOitJ,EAAMjtJ,KACxB4p9B,EAAW/1+B,EAAIA,EACf+1+B,EAAWh3+B,EAAIA,EACX82+B,IACAE,EAAWh1N,WAAa+kN,EAAWsN,gBAAkBhj+B,EAAMgj+B,gBAAkB,EAC7E2C,EAAWnp3B,YAAck52B,EAAWqN,iBAAmB/i+B,EAAM+i+B,iBAAmB,cAChF4C,EAAWl1N,cAAgBilN,EAAWuN,mBAAqBjj+B,EAAMij+B,mBAAqB,EACtF0C,EAAWj1N,cAAgBglN,EAAWwN,mBAAqBlj+B,EAAMkj+B,mBAAqB,GAE1FyC,EAAWh1vB,UAAYA,EACvBg1vB,EAAWj1vB,aAAe,SAC1Bi1vB,EAAWl1vB,KAAOznE,EAAMynE,MAAQ2itB,EAChCuyC,EAAWpu2B,QAAU4+zB,GAAUu/B,EAAWn+1B,QAASv3H,EAAMu3H,QAAS,GAClEqu2B,GAAgBD,EAAYjQ,GACxBrW,IACAsmB,EAAW3nqB,UAAYm4nB,GAAUu/B,EAAW13pB,UAAWh+T,EAAMg+T,UAAWqnqB,GACxEM,EAAWz2N,SAAW+mL,GAAUy/B,EAAWxmN,SAAUlvwB,EAAMkvwB,UAC3Dy2N,EAAWx2N,eAAiBnvwB,EAAMmvwB,gBAAkB,EACpDw2N,EAAW58N,OAASs2M,GAEpBD,IACAumB,EAAW582B,KAAOq21B,GAEtB,IAAIzsuB,EAAY3pE,EAAM0rzB,aAClBnpE,EAAavivB,EAAMkszB,cACvB1v1B,EAAG871B,gBAAgB,IAAI,GAAajkB,GAAYsoB,EAAW/1+B,EAAG+iP,EAAWgzvB,EAAWh1vB,WAAY,GAAYg1vB,EAAWh3+B,EAAG485B,EAAYo6E,EAAWj1vB,cAAeiC,EAAW44qB,GAC/K,EACA63E,EAAO/3+B,UAAU85+B,kBAAoB,SAAUnl+B,EAAOwyuB,EAAU5ivB,EAAGjB,EAAG+7B,EAAOC,GACzE,IAOI488B,EACAC,EA+BIC,EAvCJf,EAAsB1m+B,EAAMqlI,gBAC5Bqi2B,EAAkB1n+B,EAAMmj+B,YACxBwE,EAAkB3n+B,EAAMikW,YACxB2joB,EAAYlB,GAAuBA,EAAoBxw1B,MACvD2x1B,EAAsBnB,IAAwBkB,EAC9CE,EAAmB9n+B,EAAMskW,aACzBv2W,EAAOpC,KAGX,GAAIk8+B,GAAuB7n+B,EAAM21O,YAAe+xvB,GAAmBC,EAAkB,EACjFJ,EAAS57+B,KAAKs4+B,kBAAkB,KACzBlulB,SAASwxlB,EAAO5O,eACvB4O,EAAOvn+B,MAAM+oH,KAAO,KACpB,IAAIg/2B,EAAYR,EAAOt5wB,MACvB85wB,EAAUn4+B,EAAIA,EACdm4+B,EAAUp5+B,EAAIA,EACdo5+B,EAAUr98B,MAAQA,EAClBq98B,EAAUp98B,OAASA,EACnBo98B,EAAUr8+B,EAAIo8+B,EACdP,EAAO7G,YACX,CACA,GAAImH,GACIJ,EAAYF,EAAOvn+B,OACb+oH,KAAO292B,GAAuB,KACxCe,EAAU74uB,YAAcqnsB,GAAUj27B,EAAM4uP,YAAa,QAEpD,GAAIg5uB,EAAW,EAChBJ,EAAQ77+B,KAAKs4+B,kBAAkB,KACzB5n9B,OAAS,WACXtuB,EAAKky9B,YACT,EACA,IAAI+nB,EAAWR,EAAMxn+B,MACrBgo+B,EAAS9x1B,MAAQww1B,EAAoBxw1B,MACrC8x1B,EAASp4+B,EAAIA,EACbo4+B,EAASr5+B,EAAIA,EACbq5+B,EAASt98B,MAAQA,EACjBs98B,EAASr98B,OAASA,CACtB,CACI+88B,GAAmBC,KACfF,EAAYF,EAAOvn+B,OACbg+T,UAAY0pqB,EACtBD,EAAU1+N,OAAS4+N,EACnBF,EAAUv4uB,cAAgB+msB,GAAUj27B,EAAMkvP,cAAe,GACzDu4uB,EAAUv4N,SAAWlvwB,EAAMio+B,WAC3BR,EAAUt4N,eAAiBnvwB,EAAMko+B,kBAAoB,EACrDX,EAAOhH,uBAAyB,EAC5BgH,EAAO9H,WAAa8H,EAAOtH,cAC3BwH,EAAU1I,aAAc,EACxB0I,EAAUzpqB,WAAa,IAG/B,IAAImqqB,GAAeZ,GAAUC,GAAOxn+B,MACpCmo+B,EAAYx3N,WAAa3wwB,EAAM2wwB,YAAc,EAC7Cw3N,EAAY3r3B,YAAcx8G,EAAMw8G,aAAe,cAC/C2r3B,EAAY13N,cAAgBzwwB,EAAMywwB,eAAiB,EACnD03N,EAAYz3N,cAAgB1wwB,EAAM0wwB,eAAiB,EACnDy3N,EAAY5w2B,QAAU4+zB,GAAUn27B,EAAMu3H,QAASi7mB,EAASj7mB,QAAS,EACrE,EACA6r2B,EAAOgF,SAAW,SAAUpo+B,GACxB,IAAIywO,EAAO,GASX,OARI43vB,GAAgBro+B,KAChBywO,EAAO,CACHzwO,EAAMwwO,UACNxwO,EAAMuwO,WACN+3vB,GAActo+B,EAAMowO,UACpBpwO,EAAMswO,YAAc,cACtB93O,KAAK,MAEJi4O,GAAQzyN,GAAKyyN,IAASzwO,EAAMkk+B,UAAYlk+B,EAAMywO,IACzD,EACO2yvB,CACX,CA/aa,CA+aX,IACEmF,GAAmB,CAAE/98B,MAAM,EAAMghE,MAAO,EAAG5gE,OAAQ,GACnD498B,GAA4B,CAAE/98B,IAAK,EAAGghE,OAAQ,EAAG2pJ,OAAQ,GACzDqzvB,GAAa,CAAC,YAAa,aAAc,WAAY,cAClD,SAASH,GAAcl4vB,GAC1B,MAAwB,iBAAbA,IACyB,IAA5BA,EAASjkP,QAAQ,QACe,IAA7BikP,EAASjkP,QAAQ,SACW,IAA5BikP,EAASjkP,QAAQ,MAGlB8rC,OAAOm4M,GAIN8itB,EAAoB,KAHpB9itB,EAAW,KAHXA,CAQf,CACA,SAASw1vB,GAAgB7M,EAAaC,GAClC,IAAK,IAAIzs+B,EAAI,EAAGA,EAAIk8+B,GAAWz8+B,OAAQO,IAAK,CACxC,IAAIm8+B,EAAWD,GAAWl8+B,GACtB88K,EAAM2vzB,EAAY0P,GACX,MAAPr/zB,IACA0vzB,EAAY2P,GAAYr/zB,EAEhC,CACJ,CACO,SAASg/zB,GAAgBro+B,GAC5B,OAAyB,MAAlBA,EAAMowO,UAAoBpwO,EAAMswO,YAActwO,EAAMuwO,UAC/D,CAMA,SAASizvB,GAAexj+B,GACpB,GAAIA,EAAO,CACPA,EAAMywO,KAAO2yvB,GAAOgF,SAASpo+B,GAC7B,IAAI2wO,EAAY3wO,EAAMkwwB,MACR,WAAdv/hB,IAA2BA,EAAY,UACvC3wO,EAAMkwwB,MAAsB,MAAbv/hB,GAAqB43vB,GAAiB53vB,GAAcA,EAAY,OAC/E,IAAImuf,EAAgB9+tB,EAAM8+tB,cACR,WAAlBA,IAA+BA,EAAgB,UAC/C9+tB,EAAM8+tB,cAAkC,MAAjBA,GAAyB0pQ,GAA0B1pQ,GAAkBA,EAAgB,MAC1F9+tB,EAAM6jH,UAEpB7jH,EAAM6jH,QAAUuy0B,GAAkBp27B,EAAM6jH,SAEhD,CACJ,CACA,SAAS2h3B,GAAUz8N,EAAQ/qc,GACvB,OAAkB,MAAV+qc,GAAkB/qc,GAAa,GAAgB,gBAAX+qc,GAAuC,SAAXA,EAClE,KACCA,EAAO7ynB,OAAS6ynB,EAAO8sL,WACpB,OACA9sL,CACd,CACA,SAASw8N,GAAQx82B,GACb,OAAgB,MAARA,GAAyB,SAATA,EAClB,KACCA,EAAKmtB,OAASntB,EAAK8s0B,WAChB,OACA9s0B,CACd,CACA,SAASq82B,GAAmBx1+B,EAAG+gP,EAAWwzvB,GACtC,MAAqB,UAAdxzvB,EACA/gP,EAAIu0+B,EAAY,GACH,WAAdxzvB,EACK/gP,EAAIu0+B,EAAY,GAAK,EAAIA,EAAY,GAAK,EAC1Cv0+B,EAAIu0+B,EAAY,EAC/B,CACA,SAASQ,GAAa3k+B,GAClB,IAAI+b,EAAO/b,EAAM+b,KAEjB,OADQ,MAARA,IAAiBA,GAAQ,IAClBA,CACX,CACA,SAAS8o9B,GAAmB7k+B,GACxB,SAAUA,EAAMqlI,iBACTrlI,EAAM21O,YACL31O,EAAMmj+B,aAAenj+B,EAAMikW,YACvC,CACA,YCxfO,IAAI0koB,GAAY9Z,KACZ+Z,GAAkB,SAAUC,EAAaluuB,EAAUyghB,EAAS51oB,GACrE,GAAIA,EAAI,CACN,IAAIsj2B,EAASH,GAAUnj2B,GAGvBsj2B,EAAO930B,UAAYoqnB,EACnB0tN,EAAOnuuB,SAAWA,EAClBmuuB,EAAOD,YAAcA,EAEL,UAAZrj2B,EAAGttI,MACLstI,EAAGgsD,UAAS,SAAU37G,GACpB,IAAIkz5B,EAAcJ,GAAU9y5B,GAC5Bkz5B,EAAYF,YAAcA,EAC1BE,EAAY/30B,UAAYoqnB,EACxB2tN,EAAYpuuB,SAAWA,CACzB,GAEJ,CACF,ECZIquuB,GAAsB,EACtBC,GAAmB,CAAC,EACpBC,GAAiBra,KACjBsa,GAAqBta,KACdua,GAAqB,EACrBC,GAAmB,EACnBC,GAAuB,EACvBC,GAAiB,CAAC,WAAY,OAAQ,UACtCC,GAAiB,CAAC,SAAU,WAAY,OAAQ,UAChDC,GAAmB,GACnBC,GAAiB,EACjBC,GAAwB,YACxBC,GAAuB,WACvBC,GAAqB,SACrBC,GAAuB,WACvBC,GAA4B,eAEvC,SAASC,GAAgBC,GACvB,OAAuB,MAAhBA,GAAyC,SAAjBA,CACjC,CAGA,IAAIC,GAAmB,IAAI,GAAI,KAE/B,SAASC,GAAUjx3B,GACjB,GAAIvyD,GAASuyD,GAAQ,CACnB,IAAIkx3B,EAAcF,GAAiBp7+B,IAAIoqH,GAOvC,OALKkx3B,IACHA,EAAc,GAAelx3B,GAAQ,IACrCgx3B,GAAiBr9B,IAAI3z1B,EAAOkx3B,IAGvBA,CACT,CAAO,GAAIx0C,GAAiB180B,GAAQ,CAClC,IAAI0yW,EAAM52E,EAAO,CAAC,EAAG97R,GAOrB,OANA0yW,EAAIiqe,WAAa766B,EAAIk+F,EAAM280B,YAAY,SAAUn65B,GAC/C,MAAO,CACLoS,OAAQpS,EAAKoS,OACborE,MAAO,GAAex9E,EAAKw9E,OAAQ,IAEvC,IACO0yW,CACT,CAGA,OAAO1yW,CACT,CAEA,SAASmx3B,GAAmB7k2B,EAAImib,EAAW2ib,GACrC9k2B,EAAG+k2B,qBAAuB/k2B,EAAGgl2B,YAAc,KAAOF,GACpD9k2B,EAAG+k2B,mBAAmB5ib,GAGxBnib,EAAGgl2B,WAAaF,CAClB,CAEA,SAASG,GAAoBjl2B,GAG3B6k2B,GAAmB7k2B,EAAI,WAAY8j2B,GACrC,CAEA,SAASoB,GAAoBll2B,GAGvBA,EAAGgl2B,aAAelB,IACpBe,GAAmB7k2B,EAAI,SAAU4j2B,GAErC,CAEA,SAASuB,GAAgBnl2B,GACvB6k2B,GAAmB7k2B,EAAI,OAAQ6j2B,GACjC,CAEA,SAASuB,GAAgBpl2B,GACnBA,EAAGgl2B,aAAenB,IACpBgB,GAAmB7k2B,EAAI,SAAU4j2B,GAErC,CAEA,SAASyB,GAAkBrl2B,GACzBA,EAAGwyC,UAAW,CAChB,CAEA,SAAS8yzB,GAAkBtl2B,GACzBA,EAAGwyC,UAAW,CAChB,CAEA,SAAS+yzB,GAAmBvl2B,EAAIwl2B,EAASC,GACvCD,EAAQxl2B,EAAIyl2B,EACd,CAEA,SAASC,GAAoB1l2B,EAAIwl2B,EAASC,GACxCF,GAAmBvl2B,EAAIwl2B,EAASC,GAChCzl2B,EAAGkpkB,SAAWlpkB,EAAGgsD,UAAS,SAAU37G,GAClCk15B,GAAmBl15B,EAAOm15B,EAASC,EACrC,GACF,CAEO,SAASE,GAAc3l2B,EAAImib,GAChC,OAAQA,GACN,IAAK,WACHnib,EAAGgl2B,WAAalB,GAChB,MAEF,IAAK,SACH9j2B,EAAGgl2B,WAAapB,GAChB,MAEF,IAAK,OACH5j2B,EAAGgl2B,WAAanB,GAChB,MAEF,IAAK,SACH7j2B,EAAGwyC,UAAW,EAEpB,CAkIA,SAASozzB,GAAkBzjb,EAAW0jb,GACpC,IAAI/z+B,EAAQ3L,KAAKqvgB,OAAO2sD,GAExB,GAAIh8jB,KAAKqU,MAAO,CACd,GAAkB,aAAd2njB,EACF,OAhGN,SAAoCnib,EAAImib,EAAW0jb,EAAc/z+B,GAC/D,IAAIg0+B,EAAYD,GAAgBl/+B,EAAQk/+B,EAAc,WAAa,EAC/D1khB,GAAS,EAEb,GAAInhV,aAAc,GAAM,CACtB,IAAIk1D,EAAQwuyB,GAAe1j2B,GACvB+l2B,EAAWD,GAAY5wyB,EAAM8wyB,YAAiC9wyB,EAAM+wyB,WACpEC,EAAaJ,GAAY5wyB,EAAMixyB,cAAqCjxyB,EAAMkxyB,aAE9E,GAAI5B,GAAgBuB,IAAavB,GAAgB0B,GAAa,CAE5D,IAAIG,GADJv0+B,EAAQA,GAAS,CAAC,GACQ0I,OAAS,CAAC,EAET,YAAvB6r+B,EAAc9i3B,MAChB49V,GAAS,EACTrvd,EAAQ09Y,EAAO,CAAC,EAAG19Y,IACnBu0+B,EAAgB72lB,EAAO,CAAC,EAAG62lB,IACb9i3B,KAAOwi3B,IAEbvB,GAAgB6B,EAAc9i3B,OAASih3B,GAAgBuB,IAC7D5khB,GAAS,EAETrvd,EAAQ09Y,EAAO,CAAC,EAAG19Y,IACnBu0+B,EAAgB72lB,EAAO,CAAC,EAAG62lB,IAEb9i3B,KAAOoh3B,GAAUoB,KAEvBvB,GAAgB6B,EAAc9iO,SAAWihO,GAAgB0B,KAC1D/khB,IACHrvd,EAAQ09Y,EAAO,CAAC,EAAG19Y,GACnBu0+B,EAAgB72lB,EAAO,CAAC,EAAG62lB,IAG7BA,EAAc9iO,OAASohO,GAAUuB,IAGvCp0+B,EAAM0I,MAAQ6r+B,CAChB,CACF,CAEA,GAAIv0+B,GAEc,MAAZA,EAAMoxL,GAAY,CACfi+R,IACHrvd,EAAQ09Y,EAAO,CAAC,EAAG19Y,IAGrB,IAAIw0+B,EAAiBtm2B,EAAGsm2B,eACxBx0+B,EAAMoxL,GAAKljD,EAAGkjD,IAAwB,MAAlBojzB,EAAyBA,EAAiBrC,GAChE,CAGF,OAAOny+B,CACT,CA2Cay0+B,CAA2Bpg/B,KAAMg8jB,EAAW0jb,EAAc/z+B,GAC5D,GAAkB,SAAdqwjB,EACT,OA7BN,SAAgCnib,EAAImib,EAAWrwjB,GAC7C,IAAI00+B,EAAU7/+B,EAAQq5I,EAAG240B,cAAex2Z,IAAc,EAClDskb,EAAiBzm2B,EAAGxlI,MAAMu3H,QAC1B202B,EAAaF,EAEZ,KAhGP,SAA2Bxm2B,EAAI5sG,EAAOuz8B,EAAarj3B,GAIjD,IAHA,IAAI9oH,EAAQwlI,EAAGxlI,MACXks+B,EAAY,CAAC,EAER3/+B,EAAI,EAAGA,EAAIqsC,EAAM5sC,OAAQO,IAAK,CACrC,IAAI2qJ,EAAWt+G,EAAMrsC,GACjB88K,EAAMrpK,EAAMk3I,GAChBg11B,EAAUh11B,GAAmB,MAAPmyB,EAAcvgD,GAAgBA,EAAaouB,GAAYmyB,CAC/E,CAEA,IAAS98K,EAAI,EAAGA,EAAIi5I,EAAG040B,UAAUly9B,OAAQO,IAAK,CAC5C,IAAI+xP,EAAW94G,EAAG040B,UAAU3x9B,GAExB+xP,EAASyiuB,uBACVziuB,EAASyiuB,sBAAsB509B,QAAQgg/B,GAAe,GAA6B,UAAxB7tvB,EAASs0nB,YACrEt0nB,EAAS64tB,OAAO+0B,EAAWtz8B,EAE/B,CAEA,OAAOsz8B,CACT,CA0E6BE,CAAkB5m2B,EAAI,CAAC,WAAYmib,EAAW,CACvEpwb,QAAS,IAGP802B,GADJ/0+B,EAAQA,GAAS,CAAC,GACI0I,OAAS,CAAC,EAYhC,OAVyB,MAArBqs+B,EAAU902B,UAEZjgI,EAAQ09Y,EAAO,CAAC,EAAG19Y,GACnB+0+B,EAAYr3lB,EAAO,CAEjBz9Q,QAASy02B,EAAUC,EAAqC,GAApBC,EAAU302B,SAC7C802B,GACH/0+B,EAAM0I,MAAQqs+B,GAGT/0+B,CACT,CASag1+B,CAAuB3g/B,KAAMg8jB,EAAWrwjB,GAC1C,GAAkB,WAAdqwjB,EACT,OA7CN,SAAkCnib,EAAImib,EAAWrwjB,GAE/C,GAAIA,GAEc,MAAZA,EAAMoxL,GAAY,CACpBpxL,EAAQ09Y,EAAO,CAAC,EAAG19Y,GACnB,IAAIi1+B,EAAe/m2B,EAAG+m2B,aACtBj1+B,EAAMoxL,GAAKljD,EAAGkjD,IAAsB,MAAhB6jzB,EAAuBA,EAAe7C,GAC5D,CAGF,OAAOpy+B,CACT,CAiCak1+B,CAAyB7g/B,KAAMg8jB,EAAWrwjB,EAErD,CAEA,OAAOA,CACT,CAQO,SAASm1+B,GAAqBjn2B,GACnCA,EAAGm80B,WAAaypB,GAChB,IAAIzy5B,EAAc6sD,EAAGltD,iBACjBqu3B,EAAYnh0B,EAAGoh0B,mBAEfju3B,IACFA,EAAYgp4B,WAAaypB,IAGvBzkC,IACFA,EAAUgb,WAAaypB,GAE3B,CACO,SAASsB,GAA2Bln2B,EAAI16I,IAC5C6h/B,GAAann2B,EAAI16I,KACd06I,EAAGon2B,eAAiB1B,GAAoB1l2B,EAAIil2B,GAClD,CACO,SAASoC,GAA0Brn2B,EAAI16I,IAC3C6h/B,GAAann2B,EAAI16I,KACd06I,EAAGon2B,eAAiB1B,GAAoB1l2B,EAAIkl2B,GAClD,CACO,SAASoC,GAActn2B,EAAIun2B,GAChCvn2B,EAAGon2B,eAAiB,IAAMG,GAAkB,GAC5C7B,GAAoB1l2B,EAAIil2B,GAC1B,CACO,SAASuC,GAAcxn2B,EAAIun2B,KAC9Bvn2B,EAAGon2B,iBAAmB,IAAMG,GAAkB,MAAQ7B,GAAoB1l2B,EAAIkl2B,GAClF,CACO,SAASuC,GAAUzn2B,GACxB0l2B,GAAoB1l2B,EAAIml2B,GAC1B,CACO,SAASuC,GAAU1n2B,GACxB0l2B,GAAoB1l2B,EAAIol2B,GAC1B,CACO,SAASuC,GAAY3n2B,GAC1B0l2B,GAAoB1l2B,EAAIql2B,GAC1B,CACO,SAASuC,GAAY5n2B,GAC1B0l2B,GAAoB1l2B,EAAIsl2B,GAC1B,CAEA,SAAS6B,GAAann2B,EAAI16I,GACxB,OAAO06I,EAAG6n2B,yBAA2Bvi/B,EAAEu28B,SACzC,CAEO,SAASisC,GAAa1y8B,GAC3B,IAAI8lF,EAAQ9lF,EAAI2oJ,WACZgqzB,EAAqB,GACrBC,EAAoB,GACxB9s3B,EAAM+s3B,eAAc,SAAU5lyB,EAAe2mxB,GAC3C,IAAIkf,EAAkBvE,GAAmB3a,GACrCmf,EAA6B,WAAlB9lyB,EACX30J,EAAOy67B,EAAW/y8B,EAAIgz8B,qBAAqBpf,GAAkB5z7B,EAAIiz8B,wBAAwBrf,IAC5Fmf,GAAYH,EAAkBhg/B,KAAK0lD,GAEhCw67B,EAAgBI,WAElB567B,EAAK6zQ,MAAMv1H,UAAS,SAAU37G,GAC5B+05B,GAAgB/05B,EAClB,IACA835B,GAAYJ,EAAmB//+B,KAAKgh+B,IAGtCkf,EAAgBI,UAAW,CAC7B,IACA,EAAKN,GAAmB,SAAUt67B,GAC5BA,GAAQA,EAAK667B,kBACf767B,EAAK667B,iBAAiBR,GAAoB,EAAO7s3B,EAErD,GACF,CACO,SAASst3B,GAAWC,EAAmBxxoB,EAAOyxoB,EAAWtz8B,GAC9D,IAAIq07B,EAAUr07B,EAAI2oJ,WAGlB,SAAS4qzB,EAAmBhz+B,EAAMiz+B,GAChC,IAAK,IAAI7h/B,EAAI,EAAGA,EAAI6h/B,EAAYpi/B,OAAQO,IAAK,CAC3C,IAAI8wiB,EAASliiB,EAAKkz+B,iBAAiBD,EAAY7h/B,IAC/C8wiB,GAAU6vc,GAAU7vc,EACtB,CACF,CAEA,GATA6wc,EAAYA,GAAa,mBASA,MAArBD,GAICxxoB,GAAmB,SAAVA,EAAd,CAIA,IAAI6xoB,EAAoBrf,EAAQsf,iBAAiBN,GAC7CO,EAAiBF,EAAkB5w3B,iBAEnC8w3B,GAAkBA,EAAe9sb,SACnC8sb,EAAiBA,EAAe9sb,QAGlC,IAAI+sb,EAAgB,GACpBxf,EAAQyf,YAAW,SAAUC,GAC3B,IAAIC,EAAaN,IAAsBK,EACnCE,EAAWF,EAAYjx3B,iBAQ3B,GANImx3B,GAAYA,EAASntb,SACvBmtb,EAAWA,EAASntb,UAMR,WAAdwsb,IAA2BU,GACV,qBAAdV,KAJgBW,GAAYL,EAAiBK,IAAaL,EAAiBI,IAKjE,WAAVnyoB,GAAsBmyoB,GACtB,CAcD,GAbWh08B,EAAIgz8B,qBAAqBe,GAC/B5nrB,MAAMv1H,UAAS,SAAU37G,GAKxBA,EAAM+25B,eAAiBgC,GAAwB,SAAVnyoB,GAIzCkuoB,GAAgB905B,EAClB,IAEI6/2B,EAAYj5lB,GACd0xoB,EAAmBQ,EAAYx+2B,UAAWssO,QACrC,GAAI,GAASA,GAGlB,IAFA,IAAIqyoB,EAAY7v+B,GAAKw9V,GAEZnuW,EAAI,EAAGA,EAAIwg/B,EAAU9i/B,OAAQsC,IACpC6/+B,EAAmBQ,EAAYx+2B,QAAQ2+2B,EAAUxg/B,IAAKmuW,EAAMqyoB,EAAUxg/B,KAI1Emg/B,EAAcjh/B,KAAKmh/B,GACnBxF,GAAmBwF,GAAab,UAAW,CAC7C,CACF,IACA7e,EAAQwe,eAAc,SAAU5lyB,EAAe2mxB,GAC7C,GAAsB,WAAlB3mxB,EAAJ,CAIA,IAAI30J,EAAOtY,EAAIiz8B,wBAAwBrf,GAEnCt76B,GAAQA,EAAK667B,kBACf767B,EAAK667B,iBAAiBU,GAAe,EAAMxf,EAL7C,CAOF,GA9DA,CA+DF,CACO,SAAS8f,GAAcC,EAAmBl4tB,EAAgBl8O,GAC/D,GAAyB,MAArBo08B,GAA+C,MAAlBl4tB,EAAjC,CAIA,IAAI03sB,EAAiB5z7B,EAAI2oJ,WAAWuiK,aAAakppB,EAAmBl4tB,GAEpE,GAAK03sB,EAAL,CAIA2a,GAAmB3a,GAAgBsf,UAAW,EAC9C,IAAI567B,EAAOtY,EAAIiz8B,wBAAwBrf,GAElCt76B,GAASA,EAAK+77B,kBAInB/77B,EAAK6zQ,MAAMv1H,UAAS,SAAU37G,GAC5B805B,GAAgB905B,EAClB,GAXA,CANA,CAkBF,CAyCO,SAASq55B,GAAiCF,EAAmBl4tB,EAAgBzgR,EAAMukC,GACxF,IAAIgxb,EAAM,CACRujhB,WAAW,EACXC,YAAa,MAGf,GAAyB,MAArBJ,GAAmD,WAAtBA,GAAoD,MAAlBl4tB,GAAkC,MAARzgR,EAC3F,OAAOu1d,EAGT,IAAI4igB,EAAiB5z7B,EAAI2oJ,WAAWuiK,aAAakppB,EAAmBl4tB,GAEpE,IAAK03sB,EACH,OAAO5igB,EAGT,IAAI14a,EAAOtY,EAAIiz8B,wBAAwBrf,GAEvC,IAAKt76B,IAASA,EAAKm87B,wBACjB,OAAOzjhB,EAQT,IALA,IAGIujhB,EAHAC,EAAcl87B,EAAKm87B,wBAAwBh5+B,GAKtC9J,EAAI,EAAGA,EAAI6i/B,EAAYpj/B,OAAQO,IAKtC,GAAwC,SAApCo8+B,GAAUyG,EAAY7i/B,IAAIkwW,MAAkB,CAC9C0yoB,GAAY,EACZ,KACF,CAGF,MAAO,CACLA,UAAWA,EACXC,YAAaA,EAEjB,CAqEO,SAASE,GAA6BX,GAE3C,EADcA,EAAYY,cACZ,SAAUjt9B,GACtB,IAAInnB,EAAOmnB,EAAGnnB,KACVjD,EAAOoqB,EAAGpqB,KACdiD,EAAKq0+B,mBAAkB,SAAUhq2B,EAAIihO,GACnCkooB,EAAY508B,WAAW0sU,EAAKvuW,GAAQi1+B,GAAY3n2B,GAAM4n2B,GAAY5n2B,EACpE,GACF,GACF,CACO,SAASiq2B,GAAsBxgB,GACpC,IAAIrjgB,EAAM,GAsBV,OArBAqjgB,EAAQyf,YAAW,SAAUC,GAE3B,EADcA,EAAYY,cACZ,SAAUjt9B,GACXA,EAAGnnB,KAAd,IACIjD,EAAOoqB,EAAGpqB,KACVk2+B,EAAcO,EAAYe,yBAE9B,GAAItB,EAAYpi/B,OAAS,EAAG,CAC1B,IAAI+gD,EAAO,CACTikH,UAAWo90B,EACXvF,YAAa8F,EAAY9F,aAGf,MAAR3w+B,IACF60C,EAAK4tN,SAAWziQ,GAGlB0zd,EAAIp+d,KAAKu/C,EACX,CACF,GACF,IACO6+a,CACT,CASO,SAAS+jhB,GAAoBnq2B,EAAIi3N,EAAOyxoB,GAC7C0B,GAAwBpq2B,GAAI,GAC5B0l2B,GAAoB1l2B,EAAIin2B,IACxBoD,GAAiBrq2B,EAAIi3N,EAAOyxoB,EAC9B,CAIO,SAAS4B,GAAoBtq2B,EAAIi3N,EAAOyxoB,EAAWtzc,GACxDA,EAJK,SAA8Bp1Z,GACnCoq2B,GAAwBpq2B,GAAI,EAC9B,CAEeuq2B,CAAqBvq2B,GAAMmq2B,GAAoBnq2B,EAAIi3N,EAAOyxoB,EACzE,CACO,SAAS2B,GAAiBrq2B,EAAIi3N,EAAOyxoB,GAC1C,IAAIpF,EAASH,GAAUnj2B,GAEV,MAATi3N,GAQFqsoB,EAAOrsoB,MAAQA,EACfqsoB,EAAOoF,UAAYA,GACVpF,EAAOrsoB,QAChBqsoB,EAAOrsoB,MAAQ,KAEnB,CACA,IAAIuzoB,GAAe,CAAC,WAAY,OAAQ,UACpCC,GAAwB,CAC1BC,UAAW,eACXpyQ,UAAW,eACXqyQ,UAAW,gBAMN,SAASC,GAAyB5q2B,EAAI6q2B,EAAWC,EACxDj4+B,GACEi4+B,EAAYA,GAAa,YAEzB,IAAK,IAAI/j/B,EAAI,EAAGA,EAAIyj/B,GAAahk/B,OAAQO,IAAK,CAC5C,IAAIo7jB,EAAYqob,GAAazj/B,GACzBm0H,EAAQ2v3B,EAAU9szB,SAAS,CAACokY,EAAW2ob,IAC/B9q2B,EAAG270B,YAAYx5Z,GAErB3njB,MAAQ3H,EAASA,EAAOqoH,GAASA,EAAMuv3B,GAAsBK,KACrE,CACF,CAqBO,SAASV,GAAwBpq2B,EAAI+q2B,GAC1C,IAAI9yqB,GAA2B,IAAjB8yqB,EACVC,EAAahr2B,EAGbA,EAAGir2B,wBACLD,EAAWnD,wBAA0B7n2B,EAAGir2B,uBAKrChzqB,IAAW+yqB,EAAWE,uBAIzBF,EAAW5D,cAAgB4D,EAAW5D,eAAiB,EACvD4D,EAAWE,sBAAwBjzqB,EAEvC,CACO,SAASkzqB,GAAqBnr2B,GACnC,SAAUA,IAAMA,EAAGkr2B,qBACrB,CA+BO,SAASE,GAAsBnw9B,GACpC,IAAIow9B,EAAcpw9B,EAAQvoB,KAC1B,OAAO24+B,IAAgBhH,IAAsBgH,IAAgB/G,IAAwB+G,IAAgB9G,EACvG,CACO,SAAS+G,GAAkBrw9B,GAChC,IAAIow9B,EAAcpw9B,EAAQvoB,KAC1B,OAAO24+B,IAAgBlH,IAAyBkH,IAAgBjH,EAClE,CCnwBO,IAAImH,GAAkBliB,KAKtB,SAASmiB,GAAmBC,EAAeC,EAAiBlg1B,EACnEmg1B,EACAC,GACE,IAAIC,EAIJ,GAAIH,GAAmBA,EAAgBjiB,QAAS,CAC9C,IAAIqiB,EAAgBJ,EAAgBjiB,QAAQsiB,mBAC5CF,EAAmBC,GAAiBA,EAAc51vB,SACpD,CAEA,IACI81vB,EAA6B,WAAlBP,EAEf,GAHuBC,GAAmBA,EAAgBO,qBAGpC,CACpB,IAAIzg8B,OAAW,EACXwlE,OAAS,EACT1pE,OAAQ,EAgCZ,OA9BIqk8B,GACFng8B,EAAWil5B,GAAUk7C,EAAUng8B,SAAU,KACzCwlE,EAASy/0B,GAAUk7C,EAAU363B,OAAQ,YACrC1pE,EAAQ,IAERkE,EAAWkg8B,EAAgBhe,WAAWse,EAAW,0BAA4B,qBAC7Eh73B,EAAS063B,EAAgBhe,WAAWse,EAAW,wBAA0B,mBACzE1k8B,EAAQok8B,EAAgBhe,WAAWse,EAAW,uBAAyB,mBAIrEH,IAC2B,MAA7BA,EAAiBrg8B,WAAqBA,EAAWqg8B,EAAiBrg8B,UACvC,MAA3Bqg8B,EAAiB763B,SAAmBA,EAAS663B,EAAiB763B,QACpC,MAA1B663B,EAAiBvk8B,QAAkBA,EAAQuk8B,EAAiBvk8B,QAG1D6jN,GAAW7jN,KACbA,EAAQA,EAAMkkH,EAAWog1B,IAGvBzgvB,GAAW3/M,KACbA,EAAWA,EAASggH,IAGT,CACXhgH,SAAUA,GAAY,EACtBlE,MAAOA,EACP0pE,OAAQA,EAGZ,CACE,OAAO,IAEX,CAEA,SAASk73B,GAAkBT,EAAezr2B,EAAI5sG,EAAOs48B,EAAiBlg1B,EAAW3jG,EAAIyp5B,GACnF,IACI66B,EADAC,GAAS,EAGTjhvB,GAAW3/F,IACb8lzB,EAASzp5B,EACTA,EAAK2jG,EACLA,EAAY,MACH,GAASA,KAClB3jG,EAAK2jG,EAAU3jG,GACfyp5B,EAAS9lzB,EAAU8lzB,OACnB86B,EAAS5g1B,EAAU4g1B,OACnBD,EAAY3g1B,EAAU2g1B,UACtB3g1B,EAAYA,EAAUA,WAGxB,IAAI6g1B,EAA6B,UAAlBZ,EAEVY,GAEHrs2B,EAAG8+0B,cAAc,SAGnB,IAAIwtB,EAAkBd,GAAmBC,EAAeC,EAAiBlg1B,EAAW6g1B,EAAWF,GAAa,CAAC,EAAI,KAAMT,GAAmBA,EAAgBa,wBAA0Bb,EAAgBa,wBAAwBvs2B,EAAIwrB,GAAa,MAE7O,GAAI8g1B,GAAmBA,EAAgB9g8B,SAAW,EAAG,CACnD,IAGIgh8B,EAAgB,CAClBhh8B,SAJa8g8B,EAAgB9g8B,SAK7BlE,MAJmBgl8B,EAAgBhl8B,OAIV,EACzB0pE,OAJoBs73B,EAAgBt73B,OAKpC3pH,KAAMwgE,EACN4e,QAAS5e,KAAQyp5B,EAGjB+O,YAAagsB,EACb939B,MAAOk39B,EACPn6B,OAAQA,GAEV86B,EAASps2B,EAAGi/0B,YAAY7r7B,EAAOo58B,GAAiBxs2B,EAAGg/0B,UAAU5r7B,EAAOo58B,EACtE,MACExs2B,EAAG8+0B,iBAEFstB,GAAUps2B,EAAGo0Y,KAAKhhf,GAEnBk+6B,GAAUA,EAAO,GACjBzp5B,GAAMA,GAEV,CAmBA,SAAS4k7B,GAAYzs2B,EAAI5sG,EACzBs48B,EAAiBlg1B,EAAW3jG,EAAIyp5B,GAC9B46B,GAAkB,SAAUls2B,EAAI5sG,EAAOs48B,EAAiBlg1B,EAAW3jG,EAAIyp5B,EACzE,CAYO,SAASo7B,GAAU1s2B,EAAI5sG,EAAOs48B,EAAiBlg1B,EAAW3jG,EAAIyp5B,GACnE46B,GAAkB,QAASls2B,EAAI5sG,EAAOs48B,EAAiBlg1B,EAAW3jG,EAAIyp5B,EACxE,CAMO,SAASq7B,GAAiB3s2B,GAC/B,IAAKA,EAAGk7zB,KACN,OAAO,EAGT,IAAK,IAAIn08B,EAAI,EAAGA,EAAIi5I,EAAG040B,UAAUly9B,OAAQO,IAGvC,GAAuB,UAFRi5I,EAAG040B,UAAU3x9B,GAEfwtB,MACX,OAAO,EAIX,OAAO,CACT,CAKO,SAASmggB,GAAc10Y,EAAI5sG,EAAOs48B,EAAiBlg1B,EAAW3jG,EAAIyp5B,GAEnEq7B,GAAiB3s2B,IAIrBks2B,GAAkB,QAASls2B,EAAI5sG,EAAOs48B,EAAiBlg1B,EAAW3jG,EAAIyp5B,EACxE,CAEA,SAASs7B,GAAmB5s2B,EAAI0r2B,EAAiBlg1B,EAAWnkK,GAC1D24I,EAAGo+0B,oBACHp+0B,EAAGy+0B,sBACH/pc,GAAc10Y,EAAI,CAChBxlI,MAAO,CACLu3H,QAAS,IAEV252B,EAAiBlg1B,EAAWnkK,EACjC,CAEO,SAASwl/B,GAAyB7s2B,EAAI0r2B,EAAiBlg1B,GAC5D,SAASsh1B,IACP9s2B,EAAGxoD,QAAUwoD,EAAGxoD,OAAOx+D,OAAOgnH,EAChC,CAIKA,EAAGkpkB,QAGNlpkB,EAAGgsD,UAAS,SAAU+0wB,GACfA,EAAK73P,SAER0jS,GAAmB7rC,EAAM2qC,EAAiBlg1B,EAAWsh1B,EAEzD,IAPAF,GAAmB5s2B,EAAI0r2B,EAAiBlg1B,EAAWsh1B,EASvD,CAQO,SAASC,GAAa/s2B,GAC3Bur2B,GAAgBvr2B,GAAIgt2B,SAAWht2B,EAAGxlI,KACpC,CCvNA,IAAIyy+B,GAAY,CAAC,EACV,SAASC,GAAa1l/B,EAAO2l/B,GAClC,IAAK,IAAIpm/B,EAAI,EAAGA,EAAIg9+B,GAAev9+B,OAAQO,IAAK,CAC9C,IAAIo7jB,EAAY4hb,GAAeh9+B,GAC3BwvB,EAAO429B,EAAWhrb,GAClBrwjB,EAAQtK,EAAMm09B,YAAYx5Z,GAC9BrwjB,EAAM0I,MAAQ1I,EAAM0I,OAAS,CAAC,EAC9B1I,EAAM0I,MAAM+b,KAAOA,CACrB,CAEA,IAAI629B,EAAY5l/B,EAAMmx9B,cAAczw9B,QACpCV,EAAMo09B,aAAY,GAClBp09B,EAAMija,SAAS,CACbl0Y,KAAM429B,EAAW3j1B,SAEnBhiK,EAAMm19B,UAAUywB,GAAW,EAC7B,CAEA,SAASC,GAAa9md,EAAK+md,EAAaC,GACtC,IAIIC,EAJAC,EAAelnd,EAAIknd,aACnBC,EAAiBnnd,EAAImnd,eACrBC,EAAgBpnd,EAAIond,cACpBC,EAAcN,EAAY9j1B,OAG1Bik1B,IACFD,EAAWC,EAAaI,kBAAkBH,EAAgB,SAAU,KAAMC,EAAeC,GAAeA,EAAYtk/B,IAAI,aAAmC,MAArBik/B,EAA4B,CAChKA,kBAAmBA,GACjB,OAGU,MAAZC,IACFA,EAAWrivB,GAAWo7R,EAAI2hU,aAAe3hU,EAAI2hU,YAAYwlJ,EAAgBnnd,EAAKgnd,GAAqBhnd,EAAI2hU,aAOzG,IAJA,IAAI4lJ,EAAa,CACftk1B,OAAQgk1B,GAGDzm/B,EAAI,EAAGA,EAAIg9+B,GAAev9+B,OAAQO,IAAK,CAC9C,IAAIo7jB,EAAY4hb,GAAeh9+B,GAC3Bgn/B,EAAaT,EAAYnrb,GAC7B2rb,EAAW3rb,GAAasuY,GAAUg9C,EAAeA,EAAaI,kBAAkBH,EAAgBvrb,EAAW,KAAMwrb,EAAeI,GAAcA,EAAWzk/B,IAAI,cAAgB,KAAMkk/B,EACrL,CAEA,OAAOM,CACT,CAEA,SAASE,GAActkb,EAAUukb,EAAmB1nd,EAAK2nd,GAEvD3nd,EAAMA,GAAO0md,GAIb,IAHA,IAAIkB,EAAczkb,aAAoB,GAClC0kb,GAAkB,EAEbrn/B,EAAI,EAAGA,EAAIi9+B,GAAex9+B,OAAQO,IAGzC,IAFIgn/B,EAAaE,EAAkBjK,GAAej9+B,MAEhCgn/B,EAAWrgB,WAAW,QAAS,CAC/C0gB,GAAkB,EAClB,KACF,CAGF,IAAIj75B,EAAcg75B,EAAczkb,EAAWA,EAAS52e,iBAEpD,GAAIs75B,EAAiB,CACdD,IAEEh75B,IACHA,EAAc,IAAI,GAClBu2e,EAASoxZ,eAAe3n4B,IAItBu2e,EAASyyZ,aACXhp4B,EAAYgp4B,WAAazyZ,EAASyyZ,aAItC,IAAIkyB,EAAmBhB,GAAa9md,EAAK0nd,GACrCL,EAAcK,EAAkBzk1B,OAChC8k1B,IAAeV,EAAYlgB,WAAW,QACtC6gB,EAAcC,GAAgBZ,EAAaM,GAAkBA,EAAe1k1B,OAAQ+8X,GAAK,GAAQ4nd,GAQrG,IAPAI,EAAYh49B,KAAO839B,EAAiB7k1B,OAE/B2k1B,GAEHzkb,EAASmxZ,cAAc4zB,GAAiBb,EAAarnd,GAAK,IAGnDx/hB,EAAI,EAAGA,EAAIg9+B,GAAev9+B,OAAQO,IAAK,CAC9C,IACIgn/B,EADA5rb,EAAY4hb,GAAeh9+B,GAG/B,GAFIgn/B,EAAaE,EAAkB9rb,GAEnB,CACd,IAAI26Z,EAAW3p4B,EAAYwo4B,YAAYx5Z,GACnCusb,IAAcj+C,GAAUs9C,EAAWrgB,WAAW,QAAS4gB,GAEvDI,IAAcJ,IAChBxxB,EAASxu7B,QAAUog9B,GAGrB5xB,EAASti9B,MAAQg0+B,GAAgBT,EAAYG,GAAkBA,EAAe/rb,GAAY57B,GAAK,GAAO4nd,GACtGrxB,EAASti9B,MAAM+b,KAAO839B,EAAiBlsb,GAElCgsb,IACyBzkb,EAASiyZ,YAAYx5Z,GAC3B62Z,WAAay1B,GAAiBV,EAAYxnd,GAAK,GAEzE,CACF,CAKApzc,EAAYonZ,SAAWqzgB,EAAYlgB,WAAW,UAEnB,MAAvBv64B,EAAY34E,MAAMpQ,IACpBmk/B,EAAYnk/B,EAAI+oF,EAAY34E,MAAMpQ,GAGT,MAAvB+oF,EAAY34E,MAAMrR,IACpBol/B,EAAYpl/B,EAAIgqF,EAAY34E,MAAMrR,GAGpCgqF,EAAY7kD,QAAUgg9B,EAEtBn75B,EAAYo9T,SAASg+lB,GACrBp75B,EAAY84qB,QAER1lO,EAAIood,mBACNC,GAAWz75B,GAAa+55B,aAAe,SAAUK,GAC/C,IAAIc,EAAmBhB,GAAa9md,EAAK0nd,EAAmBV,GAC5DL,GAAa/55B,EAAak75B,EAC5B,EAEJ,MAAWl75B,IAETA,EAAY7kD,QAAS,GAGvBo7hB,EAASuiM,OACX,CAGO,SAAS4iP,GAAqBhE,EAAW14K,GAC9CA,EAAYA,GAAa,QAKzB,IAJA,IAAI28K,EAAe,CACjBtl1B,OAAQqh1B,EAAU9szB,SAASo0oB,IAGpBpr0B,EAAI,EAAGA,EAAIg9+B,GAAev9+B,OAAQO,IAAK,CAC9C,IAAIo7jB,EAAY4hb,GAAeh9+B,GAC/B+n/B,EAAa3sb,GAAa0ob,EAAU9szB,SAAS,CAACokY,EAAWgwQ,GAC3D,CAEA,OAAO28K,CACT,CAKO,SAASN,GAAgBO,EAAgBC,EAChDzod,EAAK0od,EAAaC,GAEhB,IAAIC,EAAY,CAAC,EAIjB,OA6CF,SAA4BA,EAAWJ,EAAgBxod,EAAK0od,EAAaC,GAEvE3od,EAAMA,GAAO0md,GACb,IAiBImC,EAjBA3lB,EAAUslB,EAAetlB,QACzB4lB,EAAkB5lB,GAAWA,EAAQzl6B,OAAOmr7B,UAe5CG,EAsDN,SAA0BP,GAIxB,IAFA,IAAIQ,EAEGR,GAAkBA,IAAmBA,EAAetlB,SAAS,CAClE,IAAI0G,GAAQ4e,EAAe/q7B,QAAUip7B,IAAW9c,KAEhD,GAAIA,EAAM,CACRof,EAAkBA,GAAmB,CAAC,EAGtC,IAFA,IAAIC,EAAW/1+B,GAAK029B,GAEXpp+B,EAAI,EAAGA,EAAIyo/B,EAAShp/B,OAAQO,IAEnCwo/B,EADcC,EAASzo/B,IACI,CAE/B,CAEAgo/B,EAAiBA,EAAe/pd,WAClC,CAEA,OAAOuqd,CACT,CA3EsBE,CAAiBV,GAGrC,GAAIO,EAGF,IAAK,IAAI7rP,KAFT2rP,EAAa,CAAC,EAEKE,EACjB,GAAIA,EAAcxp/B,eAAe29vB,GAAS,CAExC,IAAIisP,EAAgBX,EAAehxzB,SAAS,CAAC,OAAQ0lkB,IAMrDksP,GAAkBP,EAAW3rP,GAAU,CAAC,EAAGisP,EAAeL,EAAiB9od,EAAK0od,EAAaC,GAAY,GAAO,EAClH,CAIAE,IACFD,EAAUhf,KAAOif,GAGnB,IAAI1noB,EAAWqnoB,EAAezl/B,IAAI,YAE9Bo+W,IACFynoB,EAAUznoB,SAAWA,GAGvB,IAAI9B,EAASmpoB,EAAezl/B,IAAI,aAElB,MAAVs8W,IACFupoB,EAAUvpoB,OAASA,GAGrB+poB,GAAkBR,EAAWJ,EAAgBM,EAAiB9od,EAAK0od,EAAaC,GAAY,GAAM,EACpG,CAxGEU,CAAmBT,EAAWJ,EAAgBxod,EAAK0od,EAAaC,GAChEF,GAAsBx/lB,EAAO2/lB,EAAWH,GAEjCG,CACT,CACO,SAASV,GAAiBM,EAAgBxod,EAAK0od,GACpD1od,EAAMA,GAAO,CAAC,EACd,IACIspd,EADA72B,EAAa,CAAC,EAEd82B,EAAcf,EAAerhB,WAAW,UACxCqiB,EAAgBt/C,GAAUs+C,EAAerhB,WAAW,YAAauhB,EAAc,KAAO,GACtFe,EAAcjB,EAAerhB,WAAW,UAyB5C,MArBkB,aAHlBmiB,EAAgBd,EAAerhB,WAAW,cAAgBuhB,EAAc,KAAO,aAG/CY,EAAgBtpd,EAAI0pd,wBAA0B,OAEzD,MAAjBJ,IACF72B,EAAWl07B,SAAW+q9B,GAGL,MAAfG,IACFh3B,EAAW1w6B,OAAS0n8B,GAGH,MAAfF,IACFA,GAAe9m/B,KAAKsmC,GAAK,IACzB0p7B,EAAWts2B,SAAWoj4B,GAGH,MAAjBC,IACF/2B,EAAW5p0B,SAAW2g2B,GAIxB/2B,EAAWoB,YAA8C,YAAhC20B,EAAezl/B,IAAI,SAAyBi9hB,EAAI2pd,cAAgB,KAAO,OACzFl3B,CACT,CA2GA,IAAIm3B,GAAyB,CAAC,YAAa,aAAc,WAAY,aAAc,kBAAmB,iBAAkB,oBAAqB,qBACzIC,GAAkB,CAAC,QAAS,aAAc,QAAS,SAAU,MAAO,gBAAiB,YACrFC,GAAiB,CAAC,UAAW,cAAe,eAAgB,mBAAoB,kBAAmB,cAAe,cAAe,aAAc,gBAAiB,iBAEpK,SAASV,GAAkBR,EAAWJ,EAAgBM,EAAiB9od,EAAK0od,EAAaC,EAAYoB,EAASC,GAE5GlB,GAAmBJ,GAAeI,GAAmBpC,GACrD,IAAIiD,EAAe3pd,GAAOA,EAAI2pd,aAC1B3uK,EAAYwtK,EAAerhB,WAAW,SACtC8iB,EAAczB,EAAerhB,WAAW,mBACxC371B,EAAU0+zB,GAAUs+C,EAAerhB,WAAW,WAAY2hB,EAAgBt92B,SAE5D,YAAdwvsB,GAAyC,SAAdA,IAQ3BA,EADE2uK,GAGU,MAII,YAAhBM,GAA6C,SAAhBA,IAQ7BA,EADEN,GAGY,MAIbhB,IAGH3tK,EAAYA,GAAa8tK,EAAgB373B,MACzC883B,EAAcA,GAAenB,EAAgBlN,iBAG9B,MAAb5gK,IACF4tK,EAAU5r3B,KAAOg+sB,GAGA,MAAfivK,IACFrB,EAAU5rO,OAASitO,GAGrB,IAAItO,EAAkBzxC,GAAUs+C,EAAerhB,WAAW,mBAAoB2hB,EAAgBnN,iBAEvE,MAAnBA,IACFiN,EAAU32qB,UAAY0pqB,GAGxB,IAAIuO,EAAiBhgD,GAAUs+C,EAAerhB,WAAW,kBAAmB2hB,EAAgBoB,gBAEtE,MAAlBA,IACFtB,EAAUzlO,SAAW+mO,GAGvB,IAAIC,EAAuBjgD,GAAUs+C,EAAerhB,WAAW,wBAAyB2hB,EAAgBqB,sBAE5E,MAAxBA,IACFvB,EAAUxlO,eAAiB+mO,GAGxBzB,GAA0B,MAAXl92B,GAAoBw+2B,IACtCx+2B,EAAUw0Z,GAAOA,EAAIoqd,gBAGR,MAAX5+2B,IACFo92B,EAAUp92B,QAAUA,GAIjBk92B,GAAgBC,GAEG,MAAlBC,EAAU5r3B,MAAgBgja,EAAI2pd,eAChCf,EAAU5r3B,KAAOgja,EAAI2pd,cAOzB,IAAK,IAAInp/B,EAAI,EAAGA,EAAIop/B,GAAuB3p/B,OAAQO,IAAK,CACtD,IAAIikB,EAAMml+B,GAAuBpp/B,GAGtB,OAFP88K,EAAM4sxB,GAAUs+C,EAAerhB,WAAW1i9B,GAAMqk+B,EAAgBrk+B,OAGlEmk+B,EAAUnk+B,GAAO64J,EAErB,CAEA,IAAS98K,EAAI,EAAGA,EAAIqp/B,GAAgB5p/B,OAAQO,IACtCikB,EAAMol+B,GAAgBrp/B,GAGf,OAFP88K,EAAMkr0B,EAAerhB,WAAW1i9B,MAGlCmk+B,EAAUnk+B,GAAO64J,GAIrB,GAA+B,MAA3Bsr0B,EAAU71Q,cAAuB,CACnC,IAAIk3D,EAAWu+M,EAAerhB,WAAW,YAEzB,MAAZl9L,IACF2+M,EAAU71Q,cAAgBk3D,EAE9B,CAEA,IAAK8/M,IAAY/pd,EAAIqqd,WAAY,CAC/B,IAAS7p/B,EAAI,EAAGA,EAAIsp/B,GAAe7p/B,OAAQO,IAAK,CAC9C,IACI88K,EADA74J,EAAMql+B,GAAetp/B,GAGd,OAFP88K,EAAMkr0B,EAAerhB,WAAW1i9B,MAGlCmk+B,EAAUnk+B,GAAO64J,EAErB,CAEA,IAAIgt0B,EAAa9B,EAAerhB,WAAW,cAEzB,MAAdmjB,IACF1B,EAAU1M,WAAaoO,GAGU,SAA9B1B,EAAUtv2B,iBAA4D,YAA9Bsv2B,EAAUtv2B,kBAAkCqw2B,IAOvFf,EAAUtv2B,gBAAkBqw2B,GAGC,SAA1Bf,EAAU1woB,aAAoD,YAA1B0woB,EAAU1woB,cAA8ByxoB,IAO/Ef,EAAU1woB,YAAcyxoB,EAE5B,CACF,CAEO,SAASvkO,GAAQplP,EAAKkjc,GAC3B,IAAIqnB,EAAkBrnB,GAAWA,EAAQ1ryB,SAAS,aAClD,OAAOvlK,GAAK,CACZ+tgB,EAAIv7S,WAAa8lwB,GAAmBA,EAAgBpjB,WAAW,cAAgB,GAAInnc,EAAIx7S,YAAc+lwB,GAAmBA,EAAgBpjB,WAAW,eAAiB,IAAKnnc,EAAI37S,UAAYkmwB,GAAmBA,EAAgBpjB,WAAW,aAAe,IAAM,KAAMnnc,EAAIz7S,YAAcgmwB,GAAmBA,EAAgBpjB,WAAW,eAAiB,cAAc169B,KAAK,KACxW,CACO,IAAI47+B,GAAavlB,KACjB,SAAS0nB,GAAuBvp/B,EAAOym/B,EAAmB3m/B,EAAO0p/B,GACtE,GAAKxp/B,EAAL,CAIA,IAAI6rN,EAAMu7xB,GAAWpn/B,GACrB6rN,EAAI49xB,UAAY59xB,EAAI/rN,MACpB+rN,EAAI/rN,MAAQA,EACZ,IAAI4p/B,EAAmBjD,EAAkBzk1B,OACzC6pD,EAAI89xB,eAAiBD,EAAiB5n/B,IAAI,kBAEtC+pN,EAAI89xB,iBACN99xB,EAAI+oD,UAAY80uB,EAAiB5n/B,IAAI,aACrC+pN,EAAI+9xB,wBAA0BJ,EAC9B39xB,EAAIy7xB,aAAeb,EAXrB,CAaF,CACO,SAASoD,GAAkBhwC,EAAQ71yB,EAAW71J,EAAM+1+B,EAAiB+B,GAC1E,IAAI6D,EAAkB1C,GAAWvtC,GAEjC,GAAKiwC,EAAgBH,gBAAkBG,EAAgBL,YAAcK,EAAgBhq/B,MAArF,CAKA,IAAI8p/B,EAA0BE,EAAgBF,wBAG1CvrxB,EAAY4quB,GAAU6gD,EAAgB/D,kBAAmB+D,EAAgBL,WACzE5lB,EAAcimB,EAAgBhq/B,MAalC+58B,EAAOuF,QAAU,GACa,MAA7B0qC,EAAgBL,UAAoBvE,GAAYD,IAAaprC,EAAQ,CAEpEuF,QAAS,GACR8kC,EAAiBlg1B,EAAW,MAf/B,SAAgBo7yB,GACd,IAAIt8sB,EAAe8guB,GAAqBz19B,EAAM27+B,EAAgBl1uB,UAAWv2C,EAAWwlwB,EAAazkB,GACjG0qC,EAAgB/D,kBAAgC,IAAZ3mC,EAAgB,KAAOt8sB,EAC3D,IAAI27jB,EAAYonL,GAAa,CAC3BK,eAAgBli1B,EAChBii1B,aAAcA,EACdvlJ,YAAakpJ,EAA0BA,EAAwB9mvB,GAAgBA,EAAe,IAC7FgnvB,EAAgBxC,aAAcxkvB,GACjC4ivB,GAAa7rC,EAAQp7I,EACvB,GAjBA,CAwBF,CC3gBA,IAAIsrL,GAAa,CAAC,YAAa,SAC3BC,GAAkB,CAAC,YAAa,aAAc,WAAY,aAAc,UAAW,aAAc,OAAQ,QAAS,SAAU,YAE5HC,GAAU,IAAI,GAEdC,GAEJ,WACE,SAASA,IAAkB,CAyC3B,OAlCAA,EAAe7r/B,UAAU+yO,aAAe,SAAU+4wB,GAChD,IAAIloB,EAAUtj+B,KAAKsj+B,QACnB,OAAOtj+B,KAAKun+B,WAAW,YAAcikB,GAAcloB,EAAUA,EAAQng+B,IAAIio/B,IAAc,KACzF,EAOAG,EAAe7r/B,UAAU8lxB,QAAU,WACjC,OAAOA,GAAQ,CACb3giB,UAAW7kP,KAAKun+B,WAAW,aAC3B3ivB,WAAY5kP,KAAKun+B,WAAW,cAC5B9ivB,SAAUzkP,KAAKun+B,WAAW,YAC1B5ivB,WAAY3kP,KAAKun+B,WAAW,eAC3Bvn+B,KAAKsj+B,QACV,EAEAioB,EAAe7r/B,UAAU+r/B,YAAc,SAAUr79B,GAM/C,IALA,IAAI/b,EAAQ,CACV+b,KAAMA,EACN+itB,cAAenzuB,KAAKun+B,WAAW,kBAAoBvn+B,KAAKun+B,WAAW,aAG5D3m+B,EAAI,EAAGA,EAAIyq/B,GAAgBhr/B,OAAQO,IAC1CyT,EAAMg3+B,GAAgBzq/B,IAAMZ,KAAKun+B,WAAW8jB,GAAgBzq/B,IAK9D,OAFA0q/B,GAAQlhmB,SAAS/1Y,GACjBi3+B,GAAQ/86B,SACD+86B,GAAQnnwB,iBACjB,EAEOonwB,CACT,CA3CA,GA8CA,YCtDO,I3BuI0Bz7+B,GAC3B47+B,G2BxIKC,GAAqB,CAAC,CAAC,YAAa,SAAU,CAAC,SAAU,SAAU,CAAC,WAAY,CAAC,cAAe,CAAC,iBAAkB,CAAC,iBAAkB,CAAC,eAAgB,CAAC,WAAY,QAAS,CAAC,iBAAkB,cAAe,CAAC,UAAW,OAAQ,CAAC,WAAY,QAAS,CAAC,eAGjQC,GAAevkB,GAAgBskB,IAE/BE,GAEJ,WACE,SAASA,IAAkB,CAM3B,OAJAA,EAAens/B,UAAUks/B,aAAe,SAAUt3tB,GAChD,OAAOs3tB,GAAa5r/B,KAAMs0R,EAC5B,EAEOu3tB,CACT,CARA,GCPWC,GAAqB,CAAC,CAAC,OAAQ,SAAU,CAAC,SAAU,eAAgB,CAAC,YAAa,eAAgB,CAAC,WAAY,CAAC,cAAe,CAAC,iBAAkB,CAAC,iBAAkB,CAAC,eAAgB,CAAC,WAAY,cAAe,CAAC,iBAAkB,oBAAqB,CAAC,UAAW,aAAc,CAAC,WAAY,cAAe,CAAC,aAAc,qBAGtUC,GAAe1kB,GAAgBykB,IAE/BE,GAEJ,WACE,SAASA,IAAkB,CAM3B,OAJAA,EAAets/B,UAAUqs/B,aAAe,SAAUz3tB,EAAUlmR,GAC1D,OAAO29+B,GAAa/r/B,KAAMs0R,EAAUlmR,EACtC,EAEO49+B,CACT,CARA,GCAI/yrB,GAEJ,WACE,SAASA,EAAMp7P,EAAQghe,EAAaykc,GAClCtj+B,KAAK6+hB,YAAcA,EACnB7+hB,KAAKsj+B,QAAUA,EACftj+B,KAAK69D,OAASA,CAShB,CAkIA,OAhIAo7P,EAAMv5T,UAAUgxD,KAAO,SAAUmN,EAAQghe,EAAaykc,GAGpD,IAFA,IAAI/5vB,EAAO,GAEF9qN,EAAK,EAAGA,EAAKre,UAAUC,OAAQoe,IACtC8qN,EAAK9qN,EAAK,GAAKre,UAAUqe,EAE7B,EAMAw6S,EAAMv5T,UAAUus/B,YAAc,SAAUpu7B,EAAQyl6B,GAC9CxiuB,EAAM9gQ,KAAK69D,OAAQA,GAAQ,EAC7B,EAKAo7P,EAAMv5T,UAAUyD,IAAM,SAAUkzB,EAAMix8B,GACpC,OAAY,MAARjx8B,EACKr2B,KAAK69D,OAGP79D,KAAKks/B,OAAOls/B,KAAKs1a,UAAUj/Y,IAAQix8B,GAAgBtn+B,KAAK6+hB,YACjE,EAEA5lO,EAAMv5T,UAAU6n+B,WAAa,SAAU1i9B,EAAKyi9B,GAC1C,IAAIzp6B,EAAS79D,KAAK69D,OACd6/G,EAAgB,MAAV7/G,EAAiBA,EAASA,EAAOh5C,GAE3C,GAAW,MAAP64J,IAAgB4pzB,EAAc,CAChC,IAAIzoc,EAAc7+hB,KAAK6+hB,YAEnBA,IAEFnhX,EAAMmhX,EAAY0oc,WAAW1i9B,GAEjC,CAEA,OAAO64J,CACT,EAKAu7I,EAAMv5T,UAAUk4L,SAAW,SAAUvhK,EAAMwogB,GACzC,IAAIstd,EAAkB,MAAR919B,EACV+19B,EAAYD,EAAUns/B,KAAKs1a,UAAUj/Y,GAAQ,KAGjD,OAAO,IAAI4iS,EAFDkzrB,EAAUns/B,KAAKks/B,OAAOE,GAAaps/B,KAAK69D,OAClDghe,EAAcA,GAAe7+hB,KAAK6+hB,aAAe7+hB,KAAK6+hB,YAAYjnW,SAAS53L,KAAKqs/B,kBAAkBD,IAC/Dps/B,KAAKsj+B,QAC1C,EAMArqqB,EAAMv5T,UAAU2oE,QAAU,WACxB,OAAsB,MAAfroE,KAAK69D,MACd,EAEAo7P,EAAMv5T,UAAU4s/B,YAAc,WAAa,EAG3CrzrB,EAAMv5T,UAAU6wB,MAAQ,WAEtB,OAAO,IAAIy46B,EADAhp8B,KAAKC,aACAswB,EAAMvwB,KAAK69D,QAC7B,EAMAo7P,EAAMv5T,UAAU41a,UAAY,SAAUj/Y,GACpC,MAAoB,iBAATA,EACFA,EAAKzxB,MAAM,KAGbyxB,CACT,EAKA4iS,EAAMv5T,UAAU2s/B,kBAAoB,SAAUh29B,GAC5C,OAAOA,CACT,EAGA4iS,EAAMv5T,UAAUom/B,mBAAqB,WACnC,IAAK,EAAIz85B,MAAQrpF,KAAK69D,OAAQ,CAC5B,GAA6B,MAAzB79D,KAAK69D,OAAOkyL,UACd,QAAS/vP,KAAK69D,OAAOkyL,UAChB,GAAI/vP,KAAK6+hB,YACd,OAAO7+hB,KAAK6+hB,YAAYind,oBAE5B,CACF,EAEA7srB,EAAMv5T,UAAUws/B,OAAS,SAAUK,EAAS1td,GAC1C,IAAI3xU,EAAMltN,KAAK69D,OAEf,IAAK0u7B,EACH,OAAOr/xB,EAGT,IAAK,IAAItsN,EAAI,EAAGA,EAAI2r/B,EAAQls/B,UAErBks/B,EAAQ3r/B,IAOF,OAFXssN,EAAMA,GAAsB,iBAARA,EAAmBA,EAAIq/xB,EAAQ3r/B,IAAM,OAPvBA,KAkBpC,OAJW,MAAPssN,GAAe2xU,IACjB3xU,EAAM2xU,EAAYqtd,OAAOls/B,KAAKqs/B,kBAAkBE,GAAU1td,EAAYA,cAGjE3xU,CACT,EAEO+rG,CACT,CAhJA,GAoJA6sqB,GAAkB7sqB,I7BtBenpT,G6BuBhBmpT,G7BtBXyyrB,GAAY,CAAC,aAAcllB,MAAa359B,KAAK,KACjDiD,GAAOpQ,UAAUgs/B,KAAa,EAM9B57+B,GAAOi/0B,WAAa,SAAU7hoB,GAC5B,SAAUA,IAAOA,EAAIw+xB,IACvB,E6BcF7hD,EAAM5woB,GAAO4yrB,IACbhiD,EAAM5woB,GAAO+yrB,IACbniD,EAAM5woB,GAAOwuqB,IACb59B,EAAM5woB,GAAO,IACb,YChKA,IAAI5yQ,GAAOxjD,KAAKogD,MAAsB,GAAhBpgD,KAAKwF,UAOpB,SAASmk/B,GAAOjg/B,GAGrB,MAAO,CAACA,GAAQ,GAAI85C,MAAQx5C,KAAK,IACnC,CAsJO,SAAS4/+B,GAAqBC,EAAaC,GAEhD,OAAO,EAAa,EAAa,CAAC,EAAGD,GAAa,GAAOC,GAAW,EACtE,CClKA,IAAIC,GAAY,KACZC,GAAY,KACZC,GAAiBD,GACjBE,GAAgB,CAAC,EACjBC,GAAe,CAAC,EACTC,GAAe,EAAIpmD,eAG5B1h8B,SAASk+F,gBAAgB6p5B,MAAQ7z9B,UAAU6kX,UAAY7kX,UAAU8z9B,iBAAiBv87B,cACnEpwD,QAAQos/B,KAAc,EAAIA,GAJEE,GAMtC,SAASM,GAAevgjB,EAAQwgjB,GACrCxgjB,EAASA,EAAOj8Y,cAChBo87B,GAAangjB,GAAU,IAAI,GAAMwgjB,GACjCN,GAAclgjB,GAAUwgjB,CAC1B,CAiBO,SAASC,GAAeJ,GAC7B,OAAOF,GAAaE,EACtB,CAKAE,GAAeP,GCzCf,CACEhn8B,KAAM,CACJ6je,MAAO,CAAC,UAAW,WAAY,QAAS,QAAS,MAAO,OAAQ,OAAQ,SAAU,YAAa,UAAW,WAAY,YACtH6je,UAAW,CAAC,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,OACzF35D,UAAW,CAAC,SAAU,SAAU,UAAW,YAAa,WAAY,SAAU,YAC9E45D,cAAe,CAAC,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,QAE5D3oM,OAAQ,CACNt0tB,SAAU,CACRnrF,IAAK,MACLi5vB,QAAS,QAGbovP,QAAS,CACPC,MAAO,CACLr+0B,MAAO,CACL37E,KAAM,aACNzuD,QAAS,eACT0o9B,MAAO,sBACPC,MAAO,oBACPC,KAAM,kBACN7o+B,MAAO,qBAGX+jM,SAAU,CACR15C,MAAO,YACP690B,KAAM,CAAC,YAAa,QAAS,YAE/BY,SAAU,CACRz+0B,MAAO,CACL1vI,KAAM,OACNou9B,KAAM,eAGVC,UAAW,CACT3+0B,MAAO,CACL/vH,KAAM,uBACNi4Z,IAAK,sBACL5ka,MAAO,QACPs78B,MAAO,SAGXjyP,QAAS,CACP3slB,MAAO,WAET6+0B,YAAa,CACX7+0B,MAAO,gBACP690B,KAAM,CAAC,+BAGXpwO,OAAQ,CACNqxO,UAAW,CACT5xK,IAAK,YACLhlY,IAAK,YACLj4Z,KAAM,aACN+8xB,QAAS,eACT+xK,cAAe,sBACfC,MAAO,cACPt0lB,KAAM,OACNuib,QAAS,UACTgyK,QAAS,UACTC,YAAa,cACb7q/B,EAAG,eACH8q/B,QAAS,WACTn/9B,IAAK,MACL64wB,SAAU,0BACV38vB,MAAO,aACPkj9B,MAAO,qBACPC,OAAQ,iBACRC,OAAQ,eACRC,MAAO,QACPC,aAAc,gBACdC,WAAY,kBACZC,SAAU,aAGdC,KAAM,CACJC,QAAS,CACPC,UAAW,kCACXC,aAAc,mBAEhBryO,OAAQ,CACNsyO,OAAQ,CACN789B,OAAQ,GACR889B,SAAU,8CACVC,YAAa,4BAEfC,SAAU,CACRh99B,OAAQ,+CACR889B,SAAU,sEACVC,YAAa,4CACbvne,UAAW,CACTt+R,OAAQ,GACRhjN,IAAK,MAIXj3B,KAAM,CACJwgpB,QAAS,2BACTw/V,YAAa,qCACbH,SAAU,iCACVC,YAAa,UACbvne,UAAW,CACTt+R,OAAQ,KACRhjN,IAAK,UD9Db2m9B,GAAeR,GE9Cf,CACE/m8B,KAAM,CACJ6je,MAAO,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,OAC3E6je,UAAW,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,MAAO,OAChF35D,UAAW,CAAC,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,OACtD45D,cAAe,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MAEhD3oM,OAAQ,CACNt0tB,SAAU,CACRnrF,IAAK,KACLi5vB,QAAS,OAGbovP,QAAS,CACPC,MAAO,CACLr+0B,MAAO,CACL37E,KAAM,OACNzuD,QAAS,KACT0o9B,MAAO,OACPC,MAAO,OACPC,KAAM,OACN7o+B,MAAO,SAGX+jM,SAAU,CACR15C,MAAO,OACP690B,KAAM,CAAC,OAAQ,KAAM,OAEvBY,SAAU,CACRz+0B,MAAO,CACL1vI,KAAM,OACNou9B,KAAM,WAGVC,UAAW,CACT3+0B,MAAO,CACL/vH,KAAM,SACNi4Z,IAAK,SACL5ka,MAAO,QACPs78B,MAAO,UAGXjyP,QAAS,CACP3slB,MAAO,MAET6+0B,YAAa,CACX7+0B,MAAO,QACP690B,KAAM,CAAC,aAGXpwO,OAAQ,CACNqxO,UAAW,CACT5xK,IAAK,KACLhlY,IAAK,MACLj4Z,KAAM,MACN+8xB,QAAS,MACT+xK,cAAe,QACfC,MAAO,MACPt0lB,KAAM,KACNuib,QAAS,OACTgyK,QAAS,MACTC,YAAa,MACb7q/B,EAAG,MACH8q/B,QAAS,MACTn/9B,IAAK,KACL64wB,SAAU,QACV38vB,MAAO,KACPkj9B,MAAO,MACPC,OAAQ,MACRC,OAAQ,MACRC,MAAO,OACPC,aAAc,OACdC,WAAY,QACZC,SAAU,QAGdC,KAAM,CACJC,QAAS,CACPC,UAAW,sBACXC,aAAc,WAEhBryO,OAAQ,CACNsyO,OAAQ,CACN789B,OAAQ,GACR889B,SAAU,oCACVC,YAAa,sBAEfC,SAAU,CACRh99B,OAAQ,0BACR889B,SAAU,gDACVC,YAAa,iCACbvne,UAAW,CACTt+R,OAAQ,IACRhjN,IAAK,OAIXj3B,KAAM,CACJwgpB,QAAS,SACTw/V,YAAa,uBACbH,SAAU,oBACVC,YAAa,UACbvne,UAAW,CACTt+R,OAAQ,IACRhjN,IAAK,QCpGN,IAAIyd,GAAa,IACbC,GAAaD,IACbE,GAAWD,KACXsr8B,GAAUrr8B,MACVC,GAAWor8B,QACXC,GAA0B,CACnCjme,KAAM,SACNC,MAAO,QACPC,IAAK,MACLqvO,KAAM,YACNH,OAAQ,YACRrjqB,OAAQ,iBACRsiqB,YAAa,uBACb63P,KAAM,yCAEJC,GAAmB,mBACZC,GAAuB,CAChCpme,KAAM,SACNC,MAAO,cACPC,IAAKime,GACL52P,KAAM42P,GAAmB,IAAMF,GAAwB12P,KACvDH,OAAQ+2P,GAAmB,IAAMF,GAAwB72P,OACzDrjqB,OAAQo65B,GAAmB,IAAMF,GAAwBl65B,OACzDsiqB,YAAa43P,GAAwBC,MAE5BG,GAAmB,CAAC,OAAQ,QAAS,MAAO,OAAQ,SAAU,SAAU,eACxEC,GAAY,CAAC,OAAQ,YAAa,UAAW,QAAS,OAAQ,YAAa,MAAO,WAAY,cAAe,OAAQ,SAAU,SAAU,eAC7I,SAAS7vN,GAAIvptB,EAAKkoD,GAEvB,MAAO,OAAOpjG,OAAO,EAAGojG,GADxBloD,GAAO,IAC2Bt2E,QAAUs2E,CAC9C,CACO,SAASq56B,GAAmBC,GACjC,OAAQA,GACN,IAAK,YACL,IAAK,UACH,MAAO,QAET,IAAK,OACL,IAAK,YACH,MAAO,MAET,IAAK,WACL,IAAK,cACH,MAAO,OAET,QAEE,OAAOA,EAEb,CAkBO,SAAS/q7B,GAEhBrf,EAAMqnI,EAAUgj0B,EAAOhD,GACrB,IAAI738B,EAAO,GAAqBwQ,GAC5B7iD,EAAIqyC,EAAK868B,GAAmBD,MAC5Brq/B,EAAIwvC,EAAK+68B,GAAgBF,MAAY,EACrChq/B,EAAIrD,KAAKyK,OAAOzH,EAAI,GAAK,GAAK,EAC9BlD,EAAI0yC,EAAKg78B,GAAeH,MACxB/w/B,EAAIk2C,EAAK,OAAS668B,EAAQ,MAAQ,IAAM,SACxC1q/B,EAAI6vC,EAAKi78B,GAAgBJ,MACzBtt/B,GAAK4C,EAAI,GAAK,GAAK,EACnBpC,EAAIiyC,EAAKk78B,GAAkBL,MAC3Bpv/B,EAAIu0C,EAAKm78B,GAAkBN,MAC3B1s/B,EAAI6xC,EAAKo78B,GAAuBP,MAEhCQ,GADcxD,aAAgB,GAAQA,EAAOI,GAAeJ,GAAQD,KH3CjED,GAAaF,KG4CQl1zB,SAAS,QACjC8xV,EAAQgne,EAAUvt/B,IAAI,SACtBoq/B,EAAYmD,EAAUvt/B,IAAI,aAC1Byw7B,EAAY88D,EAAUvt/B,IAAI,aAC1Bqq/B,EAAgBkD,EAAUvt/B,IAAI,iBAClC,OAAQ+pL,GAAY,IAAIzgL,QAAQ,UAAWzJ,EAAI,IAAIyJ,QAAQ,QAASyzxB,GAAIl9xB,EAAI,IAAM,GAAI,IAAIyJ,QAAQ,OAAQvG,EAAI,IAAIuG,QAAQ,UAAWi9gB,EAAM7jhB,EAAI,IAAI4G,QAAQ,SAAU8g/B,EAAU1n/B,EAAI,IAAI4G,QAAQ,QAASyzxB,GAAIr6xB,EAAG,IAAI4G,QAAQ,OAAQ5G,EAAI,IAAI4G,QAAQ,QAASyzxB,GAAIv9xB,EAAG,IAAI8J,QAAQ,OAAQ9J,EAAI,IAAI8J,QAAQ,UAAWmn7B,EAAUz07B,IAAIsN,QAAQ,QAAS+g/B,EAAcru/B,IAAIsN,QAAQ,OAAQtN,EAAI,IAAIsN,QAAQ,QAASyzxB,GAAI16xB,EAAG,IAAIiH,QAAQ,OAAQjH,EAAI,IAAIiH,QAAQ,QAASyzxB,GAAIt9xB,EAAI,GAAI,IAAI6J,QAAQ,OAAQ7J,EAAI,IAAI6J,QAAQ,QAASyzxB,GAAI98xB,EAAG,IAAIqJ,QAAQ,OAAQrJ,EAAI,IAAIqJ,QAAQ,QAASyzxB,GAAIp/xB,EAAG,IAAI2L,QAAQ,OAAQ3L,EAAI,IAAI2L,QAAQ,SAAUyzxB,GAAI18xB,EAAG,IAAIiJ,QAAQ,OAAQjJ,EAAI,GACnoB,CAkDO,SAASmt/B,GAAiBxv/B,EAAO+u/B,GACtC,IAAI768B,EAAO,GAAqBl0C,GAC5B0E,EAAIwvC,EAAK+68B,GAAgBF,MAAY,EACrCvt/B,EAAI0yC,EAAKg78B,GAAeH,MACxBtt/B,EAAIyyC,EAAKi78B,GAAgBJ,MACzB9s/B,EAAIiyC,EAAKk78B,GAAkBL,MAC3Bpv/B,EAAIu0C,EAAKm78B,GAAkBN,MAE3BU,EAAiB,IADbv78B,EAAKo78B,GAAuBP,MAEhCW,EAAWD,GAAkB,IAAN9v/B,EACvBgw/B,EAASD,GAAkB,IAANzt/B,EACrB2t/B,EAAQD,GAAgB,IAANlu/B,EAClBou/B,EAAUD,GAAe,IAANpu/B,EAGvB,OAFaqu/B,GAAiB,IAANnr/B,EAGf,OACEmr/B,EACF,QACED,EACF,MACED,EACF,OACED,EACF,SACED,EACF,SAEA,aAEX,CACO,SAASK,GAAa9v/B,EAAOo7W,EAAM2zoB,GACxC,IAAI768B,EAAO,GAAgBl0C,GAAS,GAAqBA,GAASA,EAGlE,OAFAo7W,EAAOA,GAAQo0oB,GAAiBxv/B,EAAO+u/B,IAGrC,IAAK,OACH,OAAO768B,EAAK868B,GAAmBD,MAEjC,IAAK,YACH,OAAO768B,EAAK+68B,GAAgBF,OAAa,EAAI,EAAI,EAEnD,IAAK,UACH,OAAOrt/B,KAAKyK,OAAO+nC,EAAK+68B,GAAgBF,MAAY,GAAK,GAE3D,IAAK,QACH,OAAO768B,EAAK+68B,GAAgBF,MAE9B,IAAK,MACH,OAAO768B,EAAKg78B,GAAeH,MAE7B,IAAK,WACH,OAAO768B,EAAKi78B,GAAgBJ,MAAY,GAE1C,IAAK,OACH,OAAO768B,EAAKi78B,GAAgBJ,MAE9B,IAAK,SACH,OAAO768B,EAAKk78B,GAAkBL,MAEhC,IAAK,SACH,OAAO768B,EAAKm78B,GAAkBN,MAEhC,IAAK,cACH,OAAO768B,EAAKo78B,GAAuBP,MAEzC,CACO,SAASC,GAAmBD,GACjC,OAAOA,EAAQ,iBAAmB,aACpC,CACO,SAASE,GAAgBF,GAC9B,OAAOA,EAAQ,cAAgB,UACjC,CACO,SAASG,GAAeH,GAC7B,OAAOA,EAAQ,aAAe,SAChC,CACO,SAASI,GAAgBJ,GAC9B,OAAOA,EAAQ,cAAgB,UACjC,CACO,SAASK,GAAkBL,GAChC,OAAOA,EAAQ,gBAAkB,YACnC,CACO,SAASM,GAAkBN,GAChC,OAAOA,EAAQ,gBAAkB,YACnC,CACO,SAASO,GAAuBP,GACrC,OAAOA,EAAQ,qBAAuB,iBACxC,CACO,SAASgB,GAAmBhB,GACjC,OAAOA,EAAQ,iBAAmB,aACpC,CACO,SAASiB,GAAgBjB,GAC9B,OAAOA,EAAQ,cAAgB,UACjC,CACO,SAASkB,GAAelB,GAC7B,OAAOA,EAAQ,aAAe,SAChC,CACO,SAASmB,GAAgBnB,GAC9B,OAAOA,EAAQ,cAAgB,UACjC,CACO,SAASoB,GAAkBpB,GAChC,OAAOA,EAAQ,gBAAkB,YACnC,CACO,SAASqB,GAAkBrB,GAChC,OAAOA,EAAQ,gBAAkB,YACnC,CACO,SAASsB,GAAuBtB,GACrC,OAAOA,EAAQ,qBAAuB,iBACxC,CCjPO,SAASuB,GAAUxt/B,GACxB,IAAK,GAAUA,GACb,OAAO,GAAgBA,GAAKA,EAAI,IAGlC,IAAIu7C,GAASv7C,EAAI,IAAIW,MAAM,KAC3B,OAAO46C,EAAM,GAAG/yC,QAAQ,iCAAkC,QAAU+yC,EAAMn/C,OAAS,EAAI,IAAMm/C,EAAM,GAAK,GAC1G,CACO,SAASky8B,GAAY/66B,EAAKg76B,GAS/B,OARAh76B,GAAOA,GAAO,IAAIpnE,cAAc9C,QAAQ,SAAS,SAAUhG,EAAOmr/B,GAChE,OAAOA,EAAOhh8B,aAChB,IAEI+g8B,GAAkBh76B,IACpBA,EAAMA,EAAI99D,OAAO,GAAG+3C,cAAgB+lB,EAAI50E,MAAM,IAGzC40E,CACT,CACO,IAAI,GAAoB,GAUxB,SAASk76B,GAAkB1w/B,EAAO8oJ,EAAW6n2B,GAGlD,SAASC,EAAqBp76B,GAC5B,OAAOA,GAAO,GAAYA,GAAOA,EAAM,GACzC,CAEA,SAASq76B,EAAqB9u8B,GAC5B,QAAiB,MAAPA,GAAgB5W,MAAM4W,KAAQxb,SAASwb,GACnD,CAEA,IAAI+u8B,EAA2B,SAAdho2B,EACbio2B,EAAc/w/B,aAAiBqqB,KAEnC,GAAIym+B,GAAcC,EAAa,CAC7B,IAAI788B,EAAO488B,EAAatvD,GAAUxh8B,GAASA,EAE3C,IAAKmrC,OAAO+I,GACV,OAAO,GAAWA,EAjBmB,kCAiBuBy88B,GACvD,GAAII,EACT,MAAO,GAGX,CAEA,GAAkB,YAAdjo2B,EACF,OAAO,GAAoB9oJ,GAAS4w/B,EAAqB5w/B,GAAS,GAAgBA,IAAS6w/B,EAAqB7w/B,GAASA,EAAQ,GAAW,IAI9I,IAAIgx/B,EAAgBjyB,GAAgB/+9B,GACpC,OAAO6w/B,EAAqBG,GAAiBV,GAAUU,GAAiB,GAAoBhx/B,GAAS4w/B,EAAqB5w/B,GAA0B,kBAAVA,EAAsBA,EAAQ,GAAK,GAC/K,CACA,IAAIix/B,GAAgB,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAE/CC,GAAU,SAAUC,EAASr6M,GAC/B,MAAO,IAAMq6M,GAAwB,MAAbr6M,EAAoB,GAAKA,GAAa,GAChE,EAOO,SAASs6M,GAAUC,EAAKC,EAAY5q+B,GACpC,GAAe4q+B,KAClBA,EAAa,CAACA,IAGhB,IAAIC,EAAYD,EAAWpy/B,OAE3B,IAAKqy/B,EACH,MAAO,GAKT,IAFA,IAAIC,EAAQF,EAAW,GAAGE,OAAS,GAE1B/x/B,EAAI,EAAGA,EAAI+x/B,EAAMty/B,OAAQO,IAAK,CACrC,IAAI6mQ,EAAQ2qvB,GAAcxx/B,GAC1B4x/B,EAAMA,EAAI/l/B,QAAQ4l/B,GAAQ5qvB,GAAQ4qvB,GAAQ5qvB,EAAO,GACnD,CAEA,IAAK,IAAIwwiB,EAAY,EAAGA,EAAYy6M,EAAWz6M,IAC7C,IAAK,IAAIv0yB,EAAI,EAAGA,EAAIiv/B,EAAMty/B,OAAQqD,IAAK,CACrC,IAAIg6K,EAAM+00B,EAAWx6M,GAAW06M,EAAMjv/B,IACtC8u/B,EAAMA,EAAI/l/B,QAAQ4l/B,GAAQD,GAAc1u/B,GAAIu0yB,GAAYpwxB,EAAS+n7B,GAAWlyxB,GAAOA,EACrF,CAGF,OAAO800B,CACT,CAWO,SAASI,GAAiBC,EAAOC,GACtC,IAAI1yd,EAAM,GAAgByyd,GAAS,CACjCtl4B,MAAOsl4B,EACPC,aAAcA,GACZD,GAAS,CAAC,EACVtl4B,EAAQ6ya,EAAI7ya,MACZhhH,EAAO6zhB,EAAI7zhB,KACfum/B,EAAe1yd,EAAI0yd,aACnB,IAAIC,EAAa3yd,EAAI2yd,YAAc,OAEnC,OAAKxl4B,EAIc,SAAfwl4B,EACc,YAATxm/B,EAAqB,oJAC1Bqj8B,GAAWri1B,GAAS,KAAOul4B,GAAgB,IAAM,YAAc,iHAAwHljD,GAAWri1B,GAAS,KAAOul4B,GAAgB,IAAM,YAOnO,CACLC,WAAYA,EACZr65B,QAAS,KAHI0nc,EAAI7kF,UAAY,WAGH,OAC1Blnc,MAAgB,YAAT9H,EAAqB,CAC1BwyB,MAAO,EACPC,OAAQ,EACR25U,aAAc,EACdj/N,gBAAiBnsB,GACf,CACFxuF,MAAO,GACPC,OAAQ,GACR25U,aAAc,EACdj/N,gBAAiBnsB,IAxBd,EA4BX,CAYO,SAASypR,GAAWw7mB,EAAKrx/B,EAAO+u/B,GAKzB,SAARsC,GAA0B,UAARA,GAA2B,YAARA,GAA6B,cAARA,GAA+B,SAARA,IACnFA,EAAM,eAGR,IAAIn98B,EAAOst5B,GAAUxh8B,GACjB6x/B,EAAS9C,EAAQ,SAAW,MAC5Blt/B,EAAIqyC,EAAK298B,EAAS,cAClBnt/B,EAAIwvC,EAAK298B,EAAS,WAAa,EAC/Brw/B,EAAI0yC,EAAK298B,EAAS,UAClBpw/B,EAAIyyC,EAAK298B,EAAS,WAClB5v/B,EAAIiyC,EAAK298B,EAAS,aAClBly/B,EAAIu0C,EAAK298B,EAAS,aAClBxv/B,EAAI6xC,EAAK298B,EAAS,kBAEtB,OADMR,EAAI/l/B,QAAQ,KAAMyzxB,GAAIr6xB,EAAG,IAAI4G,QAAQ,IAAK5G,GAAG4G,QAAQ,OAAQzJ,GAAGyJ,QAAQ,KAAMyzxB,GAAIl9xB,EAAI,IAAM,GAAI,IAAIyJ,QAAQ,KAAMyzxB,GAAIv9xB,EAAG,IAAI8J,QAAQ,IAAK9J,GAAG8J,QAAQ,KAAMyzxB,GAAIt9xB,EAAG,IAAI6J,QAAQ,IAAK7J,GAAG6J,QAAQ,KAAMyzxB,GAAI98xB,EAAG,IAAIqJ,QAAQ,IAAKrJ,GAAGqJ,QAAQ,KAAMyzxB,GAAIp/xB,EAAG,IAAI2L,QAAQ,IAAK3L,GAAG2L,QAAQ,MAAOyzxB,GAAI18xB,EAAG,GAEtS,CAOO,SAASyv/B,GAAat86B,GAC3B,OAAOA,EAAMA,EAAI99D,OAAO,GAAG+3C,cAAgB+lB,EAAIl7C,OAAO,GAAKk7C,CAC7D,CAKO,SAASu86B,GAAqB3l4B,EAAOu0Q,GAE1C,OADAA,EAAeA,GAAgB,cACxB,GAAgBv0Q,GAASA,EAAQ,GAAgBA,IAASA,EAAM280B,aAAe380B,EAAM280B,WAAW,IAAM,CAAC,GAAG380B,OAAwBu0Q,CAC3I,CAQO,SAASqxnB,GAAWxzmB,EAAM7vY,GAE/B,GAAe,WAAXA,GAAkC,UAAXA,EAAoB,CAC7C,IAAIkyhB,EAAQ9/hB,OAAOwS,OACnBsthB,EAAMoxd,OAAS,KACfpxd,EAAMjrgB,SAASkE,KAAO0kX,CACxB,MACEz9Y,OAAOwS,KAAKirY,EAAM7vY,EAEtB,CC3NA,IAAI,GAAO,EAKAuj/B,GAAkB,CAAC,OAAQ,QAAS,MAAO,SAAU,QAAS,UAK9DC,GAAW,CAAC,CAAC,QAAS,OAAQ,SAAU,CAAC,SAAU,MAAO,WAErE,SAASC,GAAUC,EAAQp4rB,EAAO8hD,EAAKhtM,EAAUC,GAC/C,IAAIlsK,EAAI,EACJjB,EAAI,EAEQ,MAAZktK,IACFA,EAAWnwG,KAGI,MAAbowG,IACFA,EAAYpwG,KAGd,IAAI0z7B,EAAqB,EACzBr4rB,EAAM+/pB,WAAU,SAAUjx4B,EAAO4wR,GAC/B,IAGIi7c,EACA29L,EAJAhg6B,EAAOxJ,EAAMi6J,kBACbw5P,EAAYviL,EAAMy/pB,QAAQ//mB,EAAM,GAChC64oB,EAAgBh2gB,GAAaA,EAAUx5P,kBAI3C,GAAe,eAAXqvwB,EAAyB,CAC3B,IAAII,EAAQlg6B,EAAK30D,OAAS409B,GAAiBA,EAAc1v/B,EAAIyvF,EAAKzvF,EAAI,IACtE8xzB,EAAQ9xzB,EAAI2v/B,GAGA1j1B,GAAYhmF,EAAM2p6B,SAC5B5v/B,EAAI,EACJ8xzB,EAAQ69L,EACR5w/B,GAAKyw/B,EAAqBv2oB,EAC1Bu2oB,EAAqB//5B,EAAK10D,QAG1By09B,EAAqB5w/B,KAAK8K,IAAI8l/B,EAAoB//5B,EAAK10D,OAE3D,KAAO,CACL,IAAI809B,EAAQpg6B,EAAK10D,QAAU209B,GAAiBA,EAAc3w/B,EAAI0wF,EAAK1wF,EAAI,IACvE0w/B,EAAQ1w/B,EAAI8w/B,GAEA3j1B,GAAajmF,EAAM2p6B,SAC7B5v/B,GAAKwv/B,EAAqBv2oB,EAC1Bl6W,EAAI,EACJ0w/B,EAAQI,EACRL,EAAqB//5B,EAAK30D,OAE1B009B,EAAqB5w/B,KAAK8K,IAAI8l/B,EAAoB//5B,EAAK30D,MAE3D,CAEImrD,EAAM2p6B,UAIV3p6B,EAAMjmF,EAAIA,EACVimF,EAAMlnF,EAAIA,EACVknF,EAAMwo4B,aACK,eAAX8gC,EAA0Bvv/B,EAAI8xzB,EAAQ74c,EAAMl6W,EAAI0w/B,EAAQx2oB,EAC1D,GACF,CAWO,IAAIt6K,GAAM2wzB,GA+CV,SAASQ,GAAcC,EAAc35F,EAAe56iB,GACzDA,EAAS,GAA6BA,GAAU,GAChD,IAAI+ue,EAAiB6rE,EAAct73B,MAC/BilnB,EAAkBq2Q,EAAcr73B,OAChCH,EAAO,GAAam19B,EAAan19B,KAAM2vzB,GACvC1vzB,EAAM,GAAak19B,EAAal19B,IAAKklnB,GACrCnkjB,EAAQ,GAAam05B,EAAan05B,MAAO2uvB,GACzC1uvB,EAAS,GAAak05B,EAAal05B,OAAQkkjB,GAC3CjlnB,EAAQ,GAAai19B,EAAaj19B,MAAOyvzB,GACzCxvzB,EAAS,GAAag19B,EAAah19B,OAAQglnB,GAC3CiwW,EAAiBx0oB,EAAO,GAAKA,EAAO,GACpCy0oB,EAAmBz0oB,EAAO,GAAKA,EAAO,GACtCz2M,EAASgr1B,EAAahr1B,OA8C1B,OA5CI18H,MAAMvN,KACRA,EAAQyvzB,EAAiB3uvB,EAAQq05B,EAAmBr19B,GAGlDyN,MAAMtN,KACRA,EAASglnB,EAAkBlkjB,EAASm05B,EAAiBn19B,GAGzC,MAAVkqI,IAQE18H,MAAMvN,IAAUuN,MAAMtN,KACpBgqI,EAASwlrB,EAAiBxqM,EAC5BjlnB,EAAyB,GAAjByvzB,EAERxvzB,EAA2B,GAAlBglnB,GAKT13mB,MAAMvN,KACRA,EAAQiqI,EAAShqI,GAGfsN,MAAMtN,KACRA,EAASD,EAAQiqI,IAKjB18H,MAAMzN,KACRA,EAAO2vzB,EAAiB3uvB,EAAQ9gE,EAAQm19B,GAGtC5n9B,MAAMxN,KACRA,EAAMklnB,EAAkBlkjB,EAAS9gE,EAASi19B,GAIpCD,EAAan19B,MAAQm19B,EAAan05B,OACxC,IAAK,SACHhhE,EAAO2vzB,EAAiB,EAAIzvzB,EAAQ,EAAI0gV,EAAO,GAC/C,MAEF,IAAK,QACH5gV,EAAO2vzB,EAAiBzvzB,EAAQm19B,EAIpC,OAAQF,EAAal19B,KAAOk19B,EAAal05B,QACvC,IAAK,SACL,IAAK,SACHhhE,EAAMklnB,EAAkB,EAAIhlnB,EAAS,EAAIygV,EAAO,GAChD,MAEF,IAAK,SACH3gV,EAAMklnB,EAAkBhlnB,EAASi19B,EAKrCp19B,EAAOA,GAAQ,EACfC,EAAMA,GAAO,EAETwN,MAAMvN,KAERA,EAAQyvzB,EAAiB0lK,EAAmBr19B,GAAQghE,GAAS,IAG3DvzD,MAAMtN,KAERA,EAASglnB,EAAkBiwW,EAAiBn19B,GAAOghE,GAAU,IAG/D,IAAIpM,EAAO,IAAI,GAAa70D,EAAO4gV,EAAO,GAAI3gV,EAAM2gV,EAAO,GAAI1gV,EAAOC,GAEtE,OADA00D,EAAK+rR,OAASA,EACP/rR,CACT,CA0CO,SAASyg6B,GAAgBt62B,EAAIm62B,EAAc35F,EAAe56iB,EAAQ2gL,EAAKlga,GAC5E,IAWIxsC,EAXA9wF,GAAKw9hB,IAAQA,EAAIg0d,IAAMh0d,EAAIg0d,GAAG,GAC9Bnx/B,GAAKm9hB,IAAQA,EAAIg0d,IAAMh0d,EAAIg0d,GAAG,GAC9BC,EAAej0d,GAAOA,EAAIi0d,cAAgB,MAK9C,IAJAn03B,EAAMA,GAAO2Z,GACT51I,EAAI41I,EAAG51I,EACXi8H,EAAIl9H,EAAI62I,EAAG72I,GAENJ,IAAMK,EACT,OAAO,EAKT,GAAqB,QAAjBox/B,EACF3g6B,EAAmB,UAAZmmD,EAAGttI,KAAmB,IAAI,GAAa,EAAG,GAAIyn/B,EAAaj19B,OAAS,GAAIi19B,EAAah19B,QAAU,GAAK66G,EAAGsqG,uBAI9G,GAFAzwJ,EAAOmmD,EAAGsqG,kBAENtqG,EAAGy20B,qBAAsB,CAC3B,IAAI1t1B,EAAYiX,EAAGs20B,qBAGnBz83B,EAAOA,EAAKnjE,SACPu76B,eAAelp0B,EACtB,CAIF,IAAIsw1B,EAAa6gC,GAAc,EAAgB,CAC7Ch19B,MAAO20D,EAAK30D,MACZC,OAAQ00D,EAAK10D,QACZg19B,GAAe35F,EAAe56iB,GAI7BjrO,EAAK5xI,EAAIsw9B,EAAWjv9B,EAAIyvF,EAAKzvF,EAAI,EACjCowI,EAAKpxI,EAAIiw9B,EAAWlw9B,EAAI0wF,EAAK1wF,EAAI,EAcrC,MAZqB,QAAjBqx/B,GACFn03B,EAAIj8H,EAAIuwI,EACRtU,EAAIl9H,EAAIqxI,IAERnU,EAAIj8H,GAAKuwI,EACTtU,EAAIl9H,GAAKqxI,GAGPnU,IAAQ2Z,GACVA,EAAG640B,cAGE,CACT,CASO,SAAS4hC,GAAgBC,GAC9B,IAAIC,EAAaD,EAAIC,YAAcD,EAAIt0/B,YAAYu0/B,WACnD,OAAO,GAAgBA,GAAcA,EAAaA,EAAa,CAC7Djo/B,KAAMio/B,GACJ,IACN,CAyBO,SAASC,GAAiBC,EAAc9yB,EAAWxhc,GACxD,IAAIu0d,EAAav0d,GAAOA,EAAIu0d,YAC3B,GAAeA,KAAgBA,EAAa,CAACA,EAAYA,IAC1D,IAAIC,EAAU9zvB,EAAMwyvB,GAAS,GAAI,GAC7BuB,EAAU/zvB,EAAMwyvB,GAAS,GAAI,GAIjC,SAASxyvB,EAAMkwX,EAAO8jY,GACpB,IAAIz7G,EAAY,CAAC,EACb07G,EAAgB,EAChBt68B,EAAS,CAAC,EACVu68B,EAAmB,EAavB,GAXA,GAAKhkY,GAAO,SAAUtmnB,GACpB+vC,EAAO/vC,GAAQgq/B,EAAahq/B,EAC9B,IACA,GAAKsmnB,GAAO,SAAUtmnB,GAGpBuq/B,EAAQrzB,EAAWl39B,KAAU2u4B,EAAU3u4B,GAAQ+vC,EAAO/vC,GAAQk39B,EAAUl39B,IACxEgljB,EAAS2pV,EAAW3u4B,IAASqq/B,IAC7Brlc,EAASj1gB,EAAQ/vC,IAASsq/B,GAC5B,IAEIL,EAAWG,GAQb,OANIplc,EAASkya,EAAW5wW,EAAM,IAC5Bv2kB,EAAOu2kB,EAAM,IAAM,KACVthE,EAASkya,EAAW5wW,EAAM,MACnCv2kB,EAAOu2kB,EAAM,IAAM,MAGdv2kB,EAOT,GA3BwB,IA2BpBu68B,GAA2CD,EAK1C,IAAIA,GAhCe,EAiCpB,OAAO17G,EAGP,IAAK,IAAIz44B,EAAI,EAAGA,EAAIownB,EAAM3wnB,OAAQO,IAAK,CACrC,IAAI08vB,EAAStsI,EAAMpwnB,GAEnB,IAAKq0/B,EAAQ57G,EAAW/7I,IAAW23P,EAAQP,EAAcp3P,GAAS,CAChE+7I,EAAU/7I,GAAUo3P,EAAap3P,GACjC,KACF,CACF,CAEA,OAAO+7I,CACT,CAlBA,OAAO5+1B,CAmBX,CAEA,SAASw68B,EAAQ/nyB,EAAKxiN,GACpB,OAAOwiN,EAAIvtN,eAAe+K,EAC5B,CAEA,SAASgljB,EAASxiW,EAAKxiN,GACrB,OAAoB,MAAbwiN,EAAIxiN,IAA+B,SAAdwiN,EAAIxiN,EAClC,CAEA,SAASo1H,EAAKkxf,EAAOlhnB,EAAQjI,GAC3B,GAAKmpnB,GAAO,SAAUtmnB,GACpBoF,EAAOpF,GAAQ7C,EAAO6C,EACxB,GACF,CArEAo1H,EAAKwz3B,GAAS,GAAIoB,EAAcE,GAChC903B,EAAKwz3B,GAAS,GAAIoB,EAAcG,EAqElC,CAKO,SAASK,GAAgBrt/B,GAC9B,OAAOst/B,GAAiB,CAAC,EAAGtt/B,EAC9B,CAOO,SAASst/B,GAAiBrl/B,EAAQjI,GAIvC,OAHAA,GAAUiI,GAAU,GAAKuj/B,IAAiB,SAAU3o/B,GAClD7C,EAAOlI,eAAe+K,KAAUoF,EAAOpF,GAAQ7C,EAAO6C,GACxD,IACOoF,CACT,CAzWkB,GAAayj/B,GAAW,YASxB,GAAaA,GAAW,cChG1C,IAAIt0O,GAAQikN,KAER,GAEJ,SAAUx6mB,GAGR,SAAS0soB,EAAev37B,EAAQghe,EAAaykc,GAC3C,IAAI526B,EAAQg8T,EAAO9oX,KAAKI,KAAM69D,EAAQghe,EAAaykc,IAAYtj+B,KAG/D,OADA0sD,EAAM0mS,IAAM,GAAqB,gBAC1B1mS,CACT,CAkLA,OAzLAkgX,EAAUwolB,EAAgB1soB,GAS1B0soB,EAAe11/B,UAAUgxD,KAAO,SAAUmN,EAAQghe,EAAaykc,GAC7Dtj+B,KAAKq1/B,qBAAqBx37B,EAAQyl6B,EACpC,EAEA8xB,EAAe11/B,UAAU21/B,qBAAuB,SAAUx37B,EAAQyl6B,GAChE,IAAIkxB,EAAa,GAAuBx0/B,MACpCs1/B,EAAsBd,EAAa,GAAuB327B,GAAU,CAAC,EAEzE,EAAaA,EADIyl6B,EAAQlga,WACOjgkB,IAAInD,KAAK8j+B,WACzC,EAAajm6B,EAAQ79D,KAAK8giB,oBAEtB0zd,GACF,GAAwB327B,EAAQy37B,EAAqBd,EAEzD,EAEAY,EAAe11/B,UAAUus/B,YAAc,SAAUpu7B,EAAQyl6B,GACvD,EAAatj+B,KAAK69D,OAAQA,GAAQ,GAClC,IAAI227B,EAAa,GAAuBx0/B,MAEpCw0/B,GACF,GAAwBx0/B,KAAK69D,OAAQA,EAAQ227B,EAEjD,EAMAY,EAAe11/B,UAAU61/B,cAAgB,SAAUC,EAAcC,GAAS,EAyD1EL,EAAe11/B,UAAUohiB,iBAAmB,WAC1C,IAAItpF,EAAOx3c,KAAKC,YAIhB,IrChFG,SAAyBuyN,GAC9B,SAAUA,IAAOA,EAAImzwB,IACvB,CqC8ES+vB,CAAgBl+iB,GAEnB,OAAOA,EAAKopF,cAId,IAAIx2f,EAAS60uB,GAAMj/wB,MAEnB,IAAKoqC,EAAOw2f,cAAe,CAIzB,IAHA,IAAI+0d,EAAU,GACVnjyB,EAAMglP,EAEHhlP,GAAK,CACV,IAAI4tU,EAAM5tU,EAAI9yN,UAAUkhiB,cACxBR,GAAOu1d,EAAQ9z/B,KAAKu+hB,GACpB5tU,EAAMA,EAAI61J,UACZ,CAIA,IAFA,IAAIu4K,EAAgB,CAAC,EAEZhgiB,EAAI+0/B,EAAQt1/B,OAAS,EAAGO,GAAK,EAAGA,IACvCggiB,EAAgB,EAAaA,EAAe+0d,EAAQ/0/B,IAAI,GAG1DwpC,EAAOw2f,cAAgBA,CACzB,CAEA,OAAOx2f,EAAOw2f,aAChB,EAWAw0d,EAAe11/B,UAAUk2/B,uBAAyB,SAAU9xB,EAAU1jc,GACpE,IAAIgmT,EAAW09I,EAAW,QACtB+xB,EAAQ/xB,EAAW,KACvB,OAAOE,GAAyBhk+B,KAAKsj+B,QAASQ,EAAU,CACtD9m9B,MAAOhd,KAAKmD,IAAIij1B,GAAU,GAC1B76zB,GAAIvrB,KAAKmD,IAAI0y/B,GAAO,IACnBz1d,EACL,EAEAg1d,EAAe11/B,UAAUo2/B,mBAAqB,WAE5C,IAAIC,EAAiB/1/B,KACrB,MAAO,CACL6+B,KAAMk39B,EAAe5y/B,IAAI,QACzB27B,IAAKi39B,EAAe5y/B,IAAI,OACxB08F,MAAOk25B,EAAe5y/B,IAAI,SAC1B28F,OAAQi25B,EAAe5y/B,IAAI,UAC3B47B,MAAOg39B,EAAe5y/B,IAAI,SAC1B67B,OAAQ+29B,EAAe5y/B,IAAI,UAE/B,EAQAiy/B,EAAe11/B,UAAUs2/B,aAAe,WACtC,MAAO,EACT,EAEAZ,EAAe11/B,UAAUu2/B,UAAY,SAAUx8C,GAC7Cz58B,KAAK69D,OAAO474B,OAASA,CACvB,EAEA27C,EAAec,gBAAkB,WAC/B,IAAI1k/B,EAAQ4j/B,EAAe11/B,UAC3B8R,EAAMjF,KAAO,YACbiF,EAAM+Z,GAAK,GACX/Z,EAAM9G,KAAO,GACb8G,EAAMsy9B,SAAW,GACjBty9B,EAAMu19B,QAAU,GAChBv19B,EAAM25Q,eAAiB,CACzB,CARiC,GAU1BiquB,CACT,CA3LA,CA2LE,IAEF/uB,GAAY,GAAgB,IAC5BI,GAAsB,IPrLf,SAAgC329B,GACrC,IAAIqm/B,EAAoB,CAAC,EAEzBrm/B,EAAOsm/B,yBAA2B,SAAUl6yB,EAAem6yB,GACzD,IAAIzvB,EAAoBhB,GAAe1pxB,GACvCi6yB,EAAkBvvB,EAAkBp1nB,MAAQ6kpB,CAC9C,EAEAvm/B,EAAOwm/B,iBAAmB,SAAUp6yB,EAAer+I,GACjD,IAAItxD,EAAOsxD,EAAOtxD,KAElB,IAAKA,EAAM,CACT,IAAIgq/B,EAAoB3wB,GAAe1pxB,GAAes1J,KAElD1hW,EAAOs39B,YAAYlrxB,IAAkBi6yB,EAAkBI,KACzDhq/B,EAAO4p/B,EAAkBI,GAAmB147B,GAEhD,CAEA,OAAOtxD,CACT,CACF,COiKA,CAAqC,IPvJ9B,SAAiCiq/B,EAAQC,GA+F9C,SAASC,EAA0BjI,EAAO/j/B,GAQxC,OAPK+j/B,EAAM/j/B,KACT+j/B,EAAM/j/B,GAAQ,CACZis/B,YAAa,GACbC,UAAW,KAIRnI,EAAM/j/B,EACf,CAhGA8r/B,EAAOK,kBAAoB,SAAUC,EAAgBC,EAAc7t+B,EAAUikB,GAC3E,GAAK2p9B,EAAez2/B,OAApB,CAIA,IAAImjB,EAmDN,SAA4Buz+B,GAC1B,IAAItI,EAAQ,CAAC,EACTuI,EAAc,GAuBlB,OAtBA,EAAYD,GAAc,SAAUrs/B,GAClC,IOsFmBwxM,EACnB+6yB,EPvFIrlW,EAAW8kW,EAA0BjI,EAAO/j/B,GAE5Cws/B,EAoCR,SAAkCC,EAAcJ,GAC9C,IAAIG,EAAgB,GAIpB,OAHA,EAAYC,GAAc,SAAUC,GAClC,EAAeL,EAAcK,IAAQ,GAAKF,EAAcr1/B,KAAKu1/B,EAC/D,IACOF,CACT,CA1CwBG,CADDzlW,EAASulW,cOqFTj7yB,EPrFyCxxM,EOsF5Dus/B,EAAO,GACX,EAAY,GAAehwB,qBAAqB/qxB,IAAgB,SAAUsW,GACxEykyB,EAAOA,EAAKj1/B,OAAOwwN,EAAIv2D,cAAgBu2D,EAAI9yN,UAAUu8J,cAAgB,GACvE,IAEAg71B,EAAO,EAAWA,GAAM,SAAU1q/B,GAChC,OAAOq59B,GAAer59B,GAAMilW,IAC9B,IAEsB,YAAlBt1J,GAA+B,EAAe+6yB,EAAM,YAAc,GACpEA,EAAKps+B,QAAQ,WAGRos+B,GPlGwDF,GAC3DnlW,EAAS0lW,WAAaJ,EAAc72/B,OAER,IAAxBuxpB,EAAS0lW,YACXN,EAAYn1/B,KAAK6I,GAGnB,EAAYws/B,GAAe,SAAUK,GAC/B,EAAe3lW,EAAS+kW,YAAaY,GAAiB,GACxD3lW,EAAS+kW,YAAY90/B,KAAK01/B,GAG5B,IAAIC,EAAWd,EAA0BjI,EAAO8I,GAE5C,EAAeC,EAASZ,UAAWW,GAAiB,GACtDC,EAASZ,UAAU/0/B,KAAK6I,EAE5B,GACF,IACO,CACL+j/B,MAAOA,EACPuI,YAAaA,EAEjB,CAhFeS,CAAmBV,GAC5BtI,EAAQjr+B,EAAOir+B,MACfuI,EAAcxz+B,EAAOwz+B,YACrBU,EAAgB,CAAC,EAKrB,IAJA,EAAYZ,GAAgB,SAAUps/B,GACpCgt/B,EAAcht/B,IAAQ,CACxB,IAEOss/B,EAAY32/B,QAAQ,CACzB,IAAIs3/B,EAAoBX,EAAYp1/B,MAChCg2/B,EAAanJ,EAAMkJ,GACnBE,IAAsBH,EAAcC,GAEpCE,IACF3u+B,EAAStpB,KAAKutC,EAASwq9B,EAAmBC,EAAWT,aAAap1/B,gBAC3D21/B,EAAcC,IAGvB,EAAYC,EAAWhB,UAAWiB,EAAoBC,EAAmBC,EAC3E,CAEA,EAAYL,GAAe,WAOzB,MAAM,IAAIlw+B,MANG,GAOf,GA/BA,CAiCA,SAASuw+B,EAAWC,GAClBvJ,EAAMuJ,GAAmBV,aAEmB,IAAxC7I,EAAMuJ,GAAmBV,YAC3BN,EAAYn1/B,KAAKm2/B,EAErB,CAQA,SAASF,EAAiBE,GACxBN,EAAcM,IAAqB,EACnCD,EAAWC,EACb,CACF,CAmDF,COuCA,CAAsC,IAmBtC,YC9NA,IAAIjye,GAAW,GAEU,oBAAd1sf,YAET0sf,GAAW1sf,UAAU0sf,UAAY,IAGnC,IAAIkye,GAAa,qBACjB,UACEn7B,SAAU,OAEVo7B,QAAS,SACT3q4B,MAAO,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,WAChG4q4B,cAAe,CAAC,UAAW,UAAW,WACtCnJ,KAAM,CACJxb,MAAO,CACL4kB,OAAQ,CAAC,CACP7q4B,MAAO0q4B,GACPI,WAAY,CAAC,EAAG,GAChBC,WAAY,CAAC,EAAG,GAChBC,WAAY,EACZhy4B,SAAU1jH,KAAKsmC,GAAK,GACnB,CACDokF,MAAO0q4B,GACP/9f,OAAQ,SACRm+f,WAAY,CAAC,CAAC,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAC/BC,WAAY,CAAC,EAAG,GAChBC,WAAY,IACX,CACDhr4B,MAAO0q4B,GACPI,WAAY,CAAC,EAAG,GAChBC,WAAY,CAAC,EAAG,GAChB/x4B,UAAW1jH,KAAKsmC,GAAK,GACpB,CACDokF,MAAO0q4B,GACPI,WAAY,CAAC,CAAC,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAC/BC,WAAY,CAAC,EAAG,IACf,CACD/q4B,MAAO0q4B,GACPI,WAAY,CAAC,CAAC,EAAG,GAAI,CAAC,EAAG,IACzBC,WAAY,CAAC,EAAG,EAAG,EAAG,GACtB/x4B,SAAU1jH,KAAKsmC,GAAK,GACnB,CACDokF,MAAO0q4B,GACP/9f,OAAQ,WACRm+f,WAAY,CAAC,CAAC,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAC/BC,WAAY,CAAC,EAAG,GAChBC,WAAY,QAMlBvP,UAAW,CAITrkwB,WAAYohS,GAASt/gB,MAAM,QAAU,kBAAoB,aAEzDg+O,SAAU,GACVI,UAAW,SACXD,WAAY,UAKd4zwB,UAAW,KACXC,eAAgB,CACdpz8B,SAAU,IACVwlE,OAAQ,YAEVklI,UAAW,OACX2owB,kBAAmB,IACnBC,wBAAyB,IACzBC,gBAAiB,aACjBC,sBAAuB,aACvBC,mBAAoB,IAEpBC,qBAAsB,IACtBC,YAAa,IAMbC,oBAAqB,IAErBnH,QAAQ,GCnFH,IAAIoH,GAAoBhuD,GAAc,CAAC,UAAW,QAAS,WAAY,SAAU,cAAe,eAC5F,GAAyB,WACzBiuD,GAA2B,YAC3B,GAA4B,aAC5BC,GAA8B,eAC9BC,GAA4B,aAC5BC,GAAwB,UACxBC,GAA0B,SAC1BC,GAAuB,MCRvBC,GAAa,CACtBC,KAAM,EACNC,MAAO,EACPC,IAAK,GAGHC,GAAmB32B,KAyBhB,SAAS42B,GAAgCC,EAAiB/W,EAAan7+B,GAC5E,IAAIggB,EAAS,CAAC,EACVmy+B,EAAeC,GAAgCjX,GAEnD,IAAKgX,IAAiBD,EACpB,OAAOly+B,EAGT,IAKIqy+B,EACAC,EANAC,EAAiB,GACjBC,EAAmB,GACnB/2B,EAAU0f,EAAY1f,QACtBg3B,EAAaT,GAAiBv2B,GAASg3B,WACvCz1+B,EAAMm1+B,EAAa5mqB,IAAM,IAAMvrV,EAAO0y/B,eAI1C,EADAR,EAAkBA,EAAgBh4/B,SACZ,SAAUy4/B,EAAmBC,GACjD,IAAIC,EAAe,GAASF,GAAqBA,EAAoBT,EAAgBU,GAAe,CAClG/v/B,KAAM8v/B,GAGkB,YAAtBE,EAAanu/B,MAA8C,MAAxB2t/B,IACrCA,EAAuBO,EACvBN,EAA2BQ,EAA0BD,IAGvD7y+B,EAAO6y+B,EAAahw/B,MAAQ,EAC9B,IACA,IAAIkw/B,EAAgBN,EAAWn3/B,IAAI0hB,IAAQy1+B,EAAWru/B,IAAI4Y,EAAK,CAC7Dg2+B,eAAgBV,EAChBW,YAAa,IA+Bf,SAASC,EAAQC,EAAWC,EAASC,GACnC,IAAK,IAAIt6/B,EAAI,EAAGA,EAAIs6/B,EAAUt6/B,IAC5Bo6/B,EAAUn5/B,KAAKo5/B,EAAUr6/B,EAE7B,CAEA,SAAS+5/B,EAA0BD,GACjC,IAAIS,EAAUT,EAAaS,QAC3B,OAAOA,EAAUA,EAAQ96/B,OAAS,CACpC,CAIA,OAxCA,EAAK05/B,GAAiB,SAAUW,EAAcD,GAC5C,IAAIW,EAAeV,EAAahw/B,KAC5B6+C,EAAQox8B,EAA0BD,GAEtC,GAA4B,MAAxBR,EAA8B,CAChC,IAAI1z9B,EAAQo09B,EAAcE,YAC1BC,EAAQlz+B,EAAOuz+B,GAAe509B,EAAO+iB,GACrCwx8B,EAAQV,EAAkB7z9B,EAAO+iB,GACjCqx8B,EAAcE,aAAevx8B,CAM/B,MACS2w8B,IAAyBO,GAC9BM,EAAQlz+B,EAAOuz+B,GAAe,EAAG7x8B,GACjCwx8B,EAAQX,EAAgB,EAAG7w8B,KAGrB/iB,EAAQo09B,EAAcC,eAC1BE,EAAQlz+B,EAAOuz+B,GAAe509B,EAAO+iB,GACrCwx8B,EAAQV,EAAkB7z9B,EAAO+iB,GACjCqx8B,EAAcC,gBAAkBtx8B,EAExC,IAaA6w8B,EAAe/5/B,SAAWwnB,EAAOwz+B,SAAWjB,GAC5CC,EAAiBh6/B,SAAWwnB,EAAOyz+B,WAAajB,GACzCxy+B,CACT,CAOO,SAAS0z+B,GAA6BvY,EAAan7+B,EAAQ2z/B,GAChE,IAAI3z+B,EAAS,CAAC,EAGd,IAFmBoy+B,GAAgCjX,GAGjD,OAAOn79B,EAGT,IAEI4z+B,EAFA57qB,EAAeh4U,EAAOg4U,aACtB67qB,EAAmB7z/B,EAAO6z/B,iBAG1B77qB,IAAiB,IAA6BA,IAAiBu5qB,IACjE,EAAKsC,GAAkB,SAAU/jqB,EAAKmjB,GACK,UAApC,GAASnjB,GAAOA,EAAIjtV,KAAOitV,KAC9B8jqB,EAAwB3gpB,EAE5B,IAGF,IAAI6gpB,EAAY,WAKd,IAJA,IAAIC,EAAU,CAAC,EACXC,EAAU,CAAC,EACXC,EAAe,GAEVl7/B,EAAI,EAAGi+H,EAAMh8H,KAAKgL,IAAI,EAAG2t/B,GAAW56/B,EAAIi+H,EAAKj+H,IAAK,CACzD,IAAIm7/B,EAAcC,GAAen0/B,EAAO2H,KAAMqwU,EAAch4U,EAAO0y/B,eAAgBmB,EAAkB7z/B,EAAO83H,WAAY/+H,GACxHk7/B,EAAaj6/B,KAAKk6/B,GAClB,IAAIE,EAAeF,IAAgBtC,GAAWG,IAY9C,GARIqC,GAA6B,MAAbL,EAAQ34/B,GAAarC,IAAM66/B,IAC7CG,EAAQ34/B,EAAIrC,IAGG,MAAbg7/B,EAAQv8/B,GAAau8/B,EAAQv8/B,IAAMu8/B,EAAQ34/B,IAAMg5/B,GAAgBH,EAAaF,EAAQv8/B,KAAOo6/B,GAAWG,OAC1GgC,EAAQv8/B,EAAIuB,GAGVshZ,EAAU05mB,IAAYE,EAAaF,EAAQv8/B,KAAOo6/B,GAAWG,IAC/D,OAAOgC,EASJK,IACCF,IAAgBtC,GAAWE,OAAsB,MAAbkC,EAAQ54/B,GAAarC,IAAM66/B,IACjEI,EAAQ54/B,EAAIrC,GAGG,MAAbi7/B,EAAQx8/B,GAAaw8/B,EAAQx8/B,IAAMw8/B,EAAQ54/B,IAC7C44/B,EAAQx8/B,EAAIuB,GAGlB,CAEA,SAASshZ,EAAUy5mB,GACjB,OAAsB,MAAfA,EAAU14/B,GAA4B,MAAf04/B,EAAUt8/B,CAC1C,CAEA,OAAO6iZ,EAAU05mB,GAAWA,EAAU15mB,EAAU25mB,GAAWA,EAAU,IACvE,CA9CgB,GAgDhB,GAAIF,EAAW,CACb9z+B,EAAO1mB,MAAQ,CAACw6/B,EAAU14/B,GAE1B,IAAIi5/B,EAAwC,MAAzBT,EAAgCA,EAAwBE,EAAUt8/B,EAGrFwoB,EAAOwz+B,SAAW,CAACa,GACnBr0+B,EAAOyz+B,WAAa,CAACY,EACvB,CAEA,OAAOr0+B,CACT,CAKO,SAASoy+B,GAAgCjX,GAQ9C,IAFeA,EAAY7/+B,IAAI,QAAQ,GAGrC,OAAO6g+B,GAAyBgf,EAAY1f,QAAS,UAAW,CAC9Dtm9B,MAAOgm+B,EAAY7/+B,IAAI,gBAAgB,GACvCooB,GAAIy39B,EAAY7/+B,IAAI,aAAa,IAChCoh+B,IAAkB1z0B,OAAO,EAEhC,CAuBO,SAASsr2B,GAAat0/B,EAAQu0/B,GACnC,OAAOJ,GAAen0/B,EAAO2H,KAAM3H,EAAOg4U,aAAch4U,EAAO0y/B,eAAgB1y/B,EAAO6z/B,iBAAkB7z/B,EAAO83H,WAAYy83B,EAC7H,CAGA,SAASJ,GAAexs/B,EAAMqwU,EAAc06qB,EAAgBmB,EAAkB/73B,EAAYy83B,GACxF,IAAI54+B,EAUA64+B,EACAC,EAPJ,GAAIr7+B,GAAazR,GACf,OAAOiq/B,GAAWG,IAQpB,GAAI8B,EAAkB,CACpB,IAAIa,EAAab,EAAiBU,GAE9B,GAASG,IACXF,EAAUE,EAAW7x/B,KACrB4x/B,EAAUC,EAAWhw/B,MACZyuD,GAASuh8B,KAClBF,EAAUE,EAEd,CAEA,GAAe,MAAXD,EACF,MAAmB,YAAZA,EAAwB7C,GAAWC,KAAOD,GAAWG,IAG9D,GAAI/5qB,IAAiBs5qB,GAA0B,CAC7C,IAAIqD,EAAgBht/B,EAEpB,GAAI+q/B,IAAmBf,IAGrB,IAFA,IAAIiD,EAASD,EAAcJ,GAElBx7/B,EAAI,EAAGA,GAAK67/B,GAAU,IAAIp8/B,QAAUO,EAhCnC,EAgCgDA,IACxD,GAAsD,OAAjD4iB,EAASk5+B,EAAYD,EAAO983B,EAAa/+H,KAC5C,OAAO4iB,OAIX,IAAS5iB,EAAI,EAAGA,EAAI47/B,EAAcn8/B,QAAUO,EAtClC,EAsC+CA,IAAK,CAC5D,IAAIoiI,EAAMw53B,EAAc783B,EAAa/+H,GAErC,GAAIoiI,GAAgD,OAAxCx/G,EAASk5+B,EAAY153B,EAAIo53B,KACnC,OAAO54+B,CAEX,CAEJ,MAAO,GAAIq8T,IAAiB,GAA2B,CACrD,IAAI88qB,EAAiBnt/B,EAErB,IAAK6s/B,EACH,OAAO5C,GAAWG,IAGpB,IAASh5/B,EAAI,EAAGA,EAAI+7/B,EAAet8/B,QAAUO,EArDjC,EAqD8CA,IAGxD,IAFIwgD,EAAOu78B,EAAe/7/B,KAE2B,OAAxC4iB,EAASk5+B,EAAYt78B,EAAKi78B,KACrC,OAAO74+B,CAGb,MAAO,GAAIq8T,IAAiBu5qB,GAA6B,CACvD,IAAIwD,EAAmBpt/B,EAEvB,IAAK6s/B,EACH,OAAO5C,GAAWG,IAKpB,KAFI6C,EAASG,EAAiBP,KAEfp7+B,GAAaw7+B,GAC1B,OAAOhD,GAAWG,IAGpB,IAASh5/B,EAAI,EAAGA,EAAI67/B,EAAOp8/B,QAAUO,EAzEzB,EAyEsCA,IAChD,GAAyC,OAApC4iB,EAASk5+B,EAAYD,EAAO77/B,KAC/B,OAAO4iB,CAGb,MAAO,GAAIq8T,IAAiB,GAC1B,KAAIg9qB,EAAert/B,EAEnB,IAAS5O,EAAI,EAAGA,EAAIi8/B,EAAax8/B,QAAUO,EAjF/B,EAiF4CA,IAAK,CAC3D,IAAIwgD,EACAs8H,EAAMqjzB,GADN3/6B,EAAOy78B,EAAaj8/B,IAGxB,IAAK+Q,GAAQ+rK,GACX,OAAO+70B,GAAWG,IAGpB,GAA6C,OAAxCp2+B,EAASk5+B,EAAYh/0B,EAAI0+0B,KAC5B,OAAO54+B,CAEX,CAbuB,CAgBzB,SAASk5+B,EAAYh/0B,GACnB,IAAIo/0B,EAAQ9h8B,GAAS0iH,GAGrB,OAAW,MAAPA,GAAeh2I,SAASg2I,IAAgB,KAARA,EAC3Bo/0B,EAAQrD,GAAWE,MAAQF,GAAWG,IACpCkD,GAAiB,MAARp/0B,EACX+70B,GAAWC,UADb,CAGT,CAEA,OAAOD,GAAWG,GACpB,CC/VA,IC0BImD,GACAC,GACAC,GD5BAC,GAA2BhyD,KED3BiyD,GAAaj6B,KACbk6B,GAAal6B,KAEbm6B,GAEJ,WACE,SAASA,IAAgB,CAYzB,OAVAA,EAAa39/B,UAAU49/B,oBAAsB,SAAU5y/B,EAAM0jB,EAAOmv+B,GAClE,IAAIC,EAAiB/8B,GAAiBzg+B,KAAKmD,IAAI,SAAS,IACpDs6/B,EAAiBz9/B,KAAKmD,IAAI,cAAc,GAC5C,OAAOu6/B,GAAe19/B,KAAMm9/B,GAAYK,EAAgBC,EAAgB/y/B,EAAM0jB,EAAOmv+B,EACvF,EAEAF,EAAa39/B,UAAUi+/B,kBAAoB,YA2D7C,SAAsBh6+B,EAAMs7vB,GAC1BA,EAAMt7vB,GAAMi6+B,WAAa,EACzB3+O,EAAMt7vB,GAAMk6+B,eAAiB,CAAC,CAChC,CA7DIC,CAAa99/B,KAAMm9/B,GACrB,EAEOE,CACT,CAdA,GAgBO,SAASU,GAAoBz6B,EAAS549B,EAAM0jB,EAAOmv+B,GACxD,IAAIS,EAAgBv9B,GAAiB6C,EAAQng+B,IAAI,CAAC,OAAQ,QAAS,YACnE,OAAOu6/B,GAAep6B,EAAS85B,GAAYY,EAAe,KAAMtz/B,EAAM0jB,EAAOmv+B,EAC/E,CAqBA,SAASG,GAAe/5+B,EAAMs7vB,EAAOu+O,EAAgBC,EAAgB/y/B,EAAM0jB,EAAOmv+B,GAEhF,IAAIU,EAAch/O,EADlB7wvB,EAAQA,GAASzK,GAEbi6+B,EAAaK,EAAYL,YAAc,EACvCC,EAAiBI,EAAYJ,eAAiBI,EAAYJ,gBAAkB,CAAC,EAEjF,GAAIA,EAAel+/B,eAAe+K,GAChC,OAAOmz/B,EAAenz/B,GAGxB,IAAIwnW,EAAwB,MAAdqrpB,GAAuBE,EA7BvC,SAA2B5oJ,EAAUqpJ,GAGnC,IAFA,IAAIC,EAAatpJ,EAASx02B,OAEjBO,EAAI,EAAGA,EAAIu9/B,EAAYv9/B,IAC9B,GAAIi02B,EAASj02B,GAAGP,OAAS69/B,EACvB,OAAOrpJ,EAASj02B,GAIpB,OAAOi02B,EAASspJ,EAAa,EAC/B,CAmByEC,CAAkBX,EAAgBF,GAAnDC,EAItD,IAFAtrpB,EAAUA,GAAWsrpB,IAEJtrpB,EAAQ7xW,OAAzB,CAIA,IAAIg+/B,EAAoBnspB,EAAQ0rpB,GAOhC,OALIlz/B,IACFmz/B,EAAenz/B,GAAQ2z/B,GAGzBJ,EAAYL,YAAcA,EAAa,GAAK1rpB,EAAQ7xW,OAC7Cg+/B,CATP,CAUF,CDzCA,IAAIC,GAAmB,cAqEnBC,GAEJ,SAAU71oB,GAGR,SAAS61oB,IACP,OAAkB,OAAX71oB,GAAmBA,EAAOnoX,MAAMP,KAAMI,YAAcJ,IAC7D,CAsnBA,OA1nBA4sa,EAAU2xlB,EAAa71oB,GAMvB61oB,EAAY7+/B,UAAUgxD,KAAO,SAAUmN,EAAQghe,EAAaykc,EAASviuB,EAAO8rM,EAAQ2xjB,GAClFz9vB,EAAQA,GAAS,CAAC,EAClB/gQ,KAAK69D,OAAS,KAEd79D,KAAKy+/B,OAAS,IAAI,GAAM19vB,GACxB/gQ,KAAK0+/B,QAAU,IAAI,GAAM7xjB,GACzB7sc,KAAK2+/B,eAAiBH,CACxB,EAEAD,EAAY7+/B,UAAU8q2B,UAAY,SAAU3syB,EAAQxhB,EAAMui9B,GAMxD,IAAIC,EAAWC,GAAwBzi9B,GAEvCr8C,KAAK2+/B,eAAen0J,UAAU3syB,EAAQ+g8B,EAAyBC,GAE/D7+/B,KAAK++/B,aAAa,KAAMF,EAC1B,EAUAN,EAAY7+/B,UAAUs//B,YAAc,SAAUzy/B,EAAM6zhB,GAClD,OAAOpgiB,KAAK++/B,aAAaxy/B,EAAMuy/B,GAAwB1+d,GACzD,EAEAm+d,EAAY7+/B,UAAUq//B,aAAe,SAAUxy/B,EAAM6zhB,GACnD,IAAI6+d,GAAgB,EAChBT,EAAgBx+/B,KAAK2+/B,eAEzB,IAAKpy/B,GAAiB,aAATA,EAAqB,CAChC,IAAI2y/B,EAAaV,EAAcW,YAAqB,aAAT5y/B,GAMtCvM,KAAK69D,QAAmB,aAATtxD,GAGlBvM,KAAKss/B,cAELts/B,KAAKo//B,aAAaF,EAAY9+d,IAJ9B68d,GAASj9/B,KAAMk//B,GAOjBD,GAAgB,CAClB,CAcA,GAZa,aAAT1y/B,GAAgC,UAATA,GACzBvM,KAAKss/B,eAWF//+B,GAAiB,aAATA,GAAgC,aAATA,EAAqB,CACvD,IAAI8y/B,EAAiBb,EAAcc,kBAAkBt//B,MAEjDq//B,IACFJ,GAAgB,EAEhBj//B,KAAKo//B,aAAaC,EAAgBj/d,GAEtC,CAEA,IAAK7zhB,GAAiB,aAATA,GAAgC,UAATA,EAAkB,CACpD,IAAIgz/B,EAAef,EAAcgB,eAAex//B,MAE5Cu//B,EAAal//B,QACf,EAAKk//B,GAAc,SAAUE,GAC3BR,GAAgB,EAEhBj//B,KAAKo//B,aAAaK,EAAar/d,EACjC,GAAGpgiB,KAEP,CAEA,OAAOi//B,CACT,EAEAV,EAAY7+/B,UAAUus/B,YAAc,SAAUpu7B,GAC5C79D,KAAKo//B,aAAavh8B,EAAQ,KAC5B,EAEA0g8B,EAAY7+/B,UAAU0//B,aAAe,SAAUx9B,EAAWxhc,GACxD,IAAIvie,EAAS79D,KAAK69D,OACd6h8B,EAAgB1//B,KAAK2//B,eACrBC,EAAkB5//B,KAAK6//B,iBACvBC,EAAe,GACfC,EAAiB70D,KACjB80D,EAA0B5/d,GAAOA,EAAI4/d,wBFnM3CnG,GEoMuB75/B,MFpMGs6/B,WAAapvD,KEuMrC,EAAK02B,GAAW,SAAUq+B,EAAiBn8B,GAClB,MAAnBm8B,IAICvz2B,GAAew60B,SAASpD,GAGlBA,IACTg8B,EAAaj+/B,KAAKii+B,GAClBi8B,EAAe9z/B,IAAI639B,GAAU,IAH7Bjm6B,EAAOim6B,GAAgC,MAApBjm6B,EAAOim6B,GAAoBvz8B,EAAM0v+B,GAAmBn/vB,EAAMjjM,EAAOim6B,GAAWm8B,GAAiB,GAKpH,IAEID,GAKFA,EAAwBh+O,MAAK,SAAUtkmB,EAAKwi1B,GACtCxz2B,GAAew60B,SAASg5B,KAA4BH,EAAe58/B,IAAI+8/B,KACzEJ,EAAaj+/B,KAAKq+/B,GAClBH,EAAe9z/B,IAAIi0/B,GAAwB,GAE/C,IAGFxz2B,GAAemq2B,kBAAkBiJ,EAAcpz2B,GAAey60B,wBAE9D,SAAwBrD,GACtB,IAAIq8B,ED/OH,SAA+B78B,EAASQ,EAAUq8B,GACvD,IAAIC,EAAwBlD,GAAyB/5/B,IAAI2g+B,GAEzD,IAAKs8B,EACH,OAAOD,EAGT,IAAIE,EAAkBD,EAAsB98B,GAE5C,OAAK+8B,EAUEF,EAAkBn+/B,OAAOq+/B,GATvBF,CAUX,CC2N8BG,CAAsBtggC,KAAM8j+B,EAAU,GAA2BlC,EAAUkC,KAC/Fy8B,EAAcb,EAAcv8/B,IAAI2g+B,GAGhC08B,EAAgB,GAA0BD,EAAaJ,EAD1DI,EAA6BP,GAA2BA,EAAwB78/B,IAAI2g+B,GAAY,eAAiB,cAAnG,e3C8Jd,SAAmC08B,EAAe18B,EAAU28B,GAEjE,EAAKD,GAAe,SAAUp/8B,GAC5B,IAAIwg7B,EAAYxg7B,EAAKwg7B,UAEjB,GAASA,KACXxg7B,EAAKyg7B,QAAQiC,SAAWA,EACxB1i7B,EAAKyg7B,QAAQkF,QAKnB,SAA0BjD,EAAU48B,EAAeC,EAAgBF,GAIjE,OAHcC,EAAcn0/B,KAAOm0/B,EAAcn0/B,KAAOo0/B,EAAiBA,EAAe55B,QACtF05B,EAAmBnK,iBAAiBxyB,EAAU48B,EAGlD,CAV6BpK,CAAiBxyB,EAAUlC,EAAWxg7B,EAAKsg7B,SAAU++B,GAEhF,GACF,E2CrKM,CAAoCD,EAAe18B,EAAUp30B,IAI7D7uF,EAAOim6B,GAAY,KACnB47B,EAAczz/B,IAAI639B,EAAU,MAC5B87B,EAAgB3z/B,IAAI639B,EAAU,GAC9B,IAGI88B,EAHAC,EAAoB,GACpBC,EAAkB,GAClBC,EAAuB,EAG3B,EAAKP,GAAe,SAAUr+B,EAAYnl9B,GACxC,IAAI6l9B,EAAiBV,EAAWT,SAC5Bg/B,EAAgBv+B,EAAWP,UAE/B,GAAK8+B,EAWE,CACL,IAAIM,EAA4B,WAAbl9B,EACfm9B,EAAsBv02B,GAAeo60B,SAAShD,EAAU3B,EAAWN,QAAQkF,SAAUi6B,GAGzF,IAAKC,EAgBH,OAIF,GAAiB,YAAbn9B,EAAwB,CAC1B,GAAI88B,EAQF,OAGFA,GAAgB,CAClB,CAEA,GAAI/9B,GAAkBA,EAAe5i+B,cAAgBghgC,EACnDp+B,EAAen49B,KAAOy39B,EAAWN,QAAQn39B,KAEzCm49B,EAAeopB,YAAYyU,EAAe1ggC,MAC1C6i+B,EAAe0yB,cAAcmL,GAAe,OACvC,CAEL,IAAIQ,EAAW73mB,EAAO,CACpBl+H,eAAgBnuQ,GACfml9B,EAAWN,SAGdx4kB,EAFAw5kB,EAAiB,IAAIo+B,EAAoBP,EAAe1ggC,KAAMA,KAAMkhgC,GAE7CA,GAEnB/+B,EAAWL,WACbe,EAAes+B,kBAAmB,GAGpCt+B,EAAeny6B,KAAKgw8B,EAAe1ggC,KAAMA,MAKzC6i+B,EAAe0yB,cAAc,MAAM,EACrC,CACF,MA3EM1yB,IAIFA,EAAeopB,YAAY,CAAC,EAAGjs/B,MAC/B6i+B,EAAe0yB,cAAc,CAAC,GAAG,IAwEjC1yB,GACFg+B,EAAkBh//B,KAAKgh+B,EAAehl6B,QACtCij8B,EAAgBj//B,KAAKgh+B,GACrBk+B,MAGAF,EAAkBh//B,UAAK,GACvBi//B,EAAgBj//B,UAAK,GAEzB,GAAG7B,MACH69D,EAAOim6B,GAAY+8B,EACnBnB,EAAczz/B,IAAI639B,EAAUg9B,GAC5BlB,EAAgB3z/B,IAAI639B,EAAUi9B,GAEb,WAAbj9B,GACFi5B,GAAsB/8/B,KAE1B,GAxHsGA,MA2HjGA,KAAKohgC,gBACRrE,GAAsB/8/B,KAE1B,EAMAu+/B,EAAY7+/B,UAAU4q2B,UAAY,WAChC,IAAIzsyB,EAASttC,EAAMvwB,KAAK69D,QAyBxB,OAxBA,EAAKA,GAAQ,SAAUwj8B,EAAev9B,GACpC,GAAIp30B,GAAew60B,SAASpD,GAAW,CAQrC,IAPA,IAAIzn7B,EAAO,GAA2Bgl9B,GAIlCC,EAAUjl9B,EAAKh8C,OACfkhgC,GAAc,EAET3ggC,EAAI0ggC,EAAU,EAAG1ggC,GAAK,EAAGA,IAE5By7C,EAAKz7C,KAAO,GAAgCy7C,EAAKz7C,IACnD2ggC,GAAc,GAEdll9B,EAAKz7C,GAAK,MACT2ggC,GAAeD,KAIpBjl9B,EAAKh8C,OAASihgC,EACdzj8B,EAAOim6B,GAAYzn7B,CACrB,CACF,WACOwhB,EAAOyg8B,IACPzg8B,CACT,EAEA0g8B,EAAY7+/B,UAAU0jkB,SAAW,WAC/B,OAAOpjkB,KAAKy+/B,MACd,EAEAF,EAAY7+/B,UAAU4t/B,eAAiB,WACrC,OAAOtt/B,KAAK0+/B,OACd,EAEAH,EAAY7+/B,UAAU8hgC,iBAAmB,SAAU1s+B,GACjD90B,KAAKyhgC,SAAW3s+B,CAClB,EAEAyp+B,EAAY7+/B,UAAUkm/B,iBAAmB,WACvC,OAAO5l/B,KAAKyhgC,QACd,EAMAlD,EAAY7+/B,UAAUy6V,aAAe,SAAU2poB,EAAUhpnB,GACvD,IAAI3kS,EAAOn2E,KAAK2//B,eAAex8/B,IAAI2g+B,GAEnC,GAAI3t5B,EAAM,CACR,IAAIur7B,EAAOvr7B,EAAK2kS,GAAO,GAEvB,GAAI4mpB,EACF,OAAOA,EACF,GAAW,MAAP5mpB,EACT,IAAK,IAAIl6W,EAAI,EAAGA,EAAIu1E,EAAK91E,OAAQO,IAC/B,GAAIu1E,EAAKv1E,GACP,OAAOu1E,EAAKv1E,EAIpB,CACF,EAMA29/B,EAAY7+/B,UAAUql+B,gBAAkB,SAAUpj0B,GAChD,IAAImi0B,EAAWni0B,EAAUmi0B,SAEzB,IAAKA,EACH,MAAO,GAGT,IAUItg9B,EAVAxG,EAAQ2kJ,EAAU3kJ,MAClBuO,EAAKo2I,EAAUp2I,GACf7gB,EAAOi3J,EAAUj3J,KAEjBi3/B,EAAQ3hgC,KAAK2//B,eAAex8/B,IAAI2g+B,GAEpC,OAAK69B,GAAUA,EAAMthgC,QAMR,MAAT2c,GACFwG,EAAS,GACT,EAAK,GAA2BxG,IAAQ,SAAU89V,GAChD6mpB,EAAM7mpB,IAAQt3V,EAAO3hB,KAAK8//B,EAAM7mpB,GAClC,KAEAt3V,EADe,MAAN+H,EACAq2+B,GAAgB,KAAMr2+B,EAAIo2+B,GAClB,MAARj3/B,EACAk3/B,GAAgB,OAAQl3/B,EAAMi3/B,GAG9B90+B,GAAO80+B,GAAO,SAAUD,GAC/B,QAASA,CACX,IAGKG,GAAgBr++B,EAAQm+I,IArBtB,EAsBX,EAoBA481B,EAAY7+/B,UAAUoigC,eAAiB,SAAUng2B,GAC/C,IASsBz7J,EAChB67/B,EACAC,EACAC,EAUY582B,EAtBdp2D,EAAQ0yE,EAAU1yE,MAClB604B,EAAWni0B,EAAUmi0B,SACrBo+B,GAQEH,EAAYj+B,EAAW,QACvBk+B,EAASl+B,EAAW,KACpBm+B,EAAWn+B,EAAW,SAHN599B,EAPO+oF,IAWE,MAAhB/oF,EAAE67/B,IAAmC,MAAb77/B,EAAE87/B,IAAkC,MAAf97/B,EAAE+7/B,GAMxD,KAN6E,CAC/En+B,SAAUA,EAEV9m9B,MAAO9W,EAAE67/B,GACTx2+B,GAAIrlB,EAAE87/B,GACNt3/B,KAAMxE,EAAE+7/B,KAXZ,OAekB582B,EAfFw82B,GAJHK,EAAYligC,KAAK+k+B,gBAAgBm9B,GAC5Cr1+B,GAAO7sB,KAAK2//B,eAAex8/B,IAAI2g+B,IAAW,SAAU49B,GACpD,QAASA,CACX,IACwC//1B,GAgB/BA,EAAU90I,OAASA,GAAOw4H,EAAKsc,EAAU90I,QAAUw4H,CAE9D,EAEAk52B,EAAY7+/B,UAAUoi/B,cAAgB,SAAUhe,EAAUpi6B,EAAIv0B,GAC5D,IAAIuy9B,EAAgB1//B,KAAK2//B,eAEzB,GAAI36vB,GAAW8+tB,GAAW,CACxB,IAAIq+B,EAAczg8B,EACd0g8B,EAAat+B,EACjB47B,EAAc19O,MAAK,SAAU2/O,EAAOzlzB,GAClC,IAAK,IAAIt7M,EAAI,EAAG+ggC,GAAS/ggC,EAAI+ggC,EAAMthgC,OAAQO,IAAK,CAC9C,IAAI8ggC,EAAOC,EAAM/ggC,GACjB8ggC,GAAQU,EAAWxigC,KAAKuigC,EAAajmzB,EAAewlzB,EAAMA,EAAKv2uB,eACjE,CACF,GACF,MAGE,IAFA,IAAIw2uB,EAAQ3m8B,GAAS8o6B,GAAY47B,EAAcv8/B,IAAI2g+B,GAAY,GAASA,GAAY9j+B,KAAK8hgC,eAAeh+B,GAAY,KAE3Glj+B,EAAI,EAAG+ggC,GAAS/ggC,EAAI+ggC,EAAMthgC,OAAQO,IAAK,CAC9C,IAAI8ggC,EAAOC,EAAM/ggC,GACjB8ggC,GAAQhg8B,EAAG9hE,KAAKutC,EAASu09B,EAAMA,EAAKv2uB,eACtC,CAEJ,EAMAozuB,EAAY7+/B,UAAU2igC,gBAAkB,SAAU33/B,GAChD,IAAIwhJ,EAAU,GAA8BxhJ,EAAM,MAClD,OAAOmiB,GAAO7sB,KAAK2//B,eAAex8/B,IAAI,WAAW,SAAUm//B,GACzD,QAASA,GAAwB,MAAXp22B,GAAmBo22B,EAAU53/B,OAASwhJ,CAC9D,GACF,EAMAqy2B,EAAY7+/B,UAAUkj/B,iBAAmB,SAAU1F,GACjD,OAAOl9+B,KAAK2//B,eAAex8/B,IAAI,UAAU+5+B,EAC3C,EAOAqhB,EAAY7+/B,UAAU6igC,gBAAkB,SAAUx7B,GAChD,OAAOl68B,GAAO7sB,KAAK2//B,eAAex8/B,IAAI,WAAW,SAAUm//B,GACzD,QAASA,GAAaA,EAAUv7B,UAAYA,CAC9C,GACF,EAMAw3B,EAAY7+/B,UAAU4j1B,UAAY,WAChC,OAAOz2zB,GAAO7sB,KAAK2//B,eAAex8/B,IAAI,WAAW,SAAUm//B,GACzD,QAASA,CACX,GACF,EAMA/D,EAAY7+/B,UAAU8igC,eAAiB,WACrC,OAAOxigC,KAAK6//B,iBAAiB18/B,IAAI,SACnC,EAOAo7/B,EAAY7+/B,UAAUqj/B,WAAa,SAAUrh7B,EAAIv0B,GAC/C6v9B,GAAwBh9/B,MACxB,EAAKA,KAAKohgC,gBAAgB,SAAUqB,GAClC,IAAI3lP,EAAS98wB,KAAK2//B,eAAex8/B,IAAI,UAAUs//B,GAE/C/g8B,EAAG9hE,KAAKutC,EAAS2vuB,EAAQ2lP,EAC3B,GAAGzigC,KACL,EASAu+/B,EAAY7+/B,UAAUgjgC,cAAgB,SAAUhh8B,EAAIv0B,GAClD,EAAKntC,KAAK2//B,eAAex8/B,IAAI,WAAW,SAAU25wB,GAChDA,GAAUp7sB,EAAG9hE,KAAKutC,EAAS2vuB,EAAQA,EAAO3xf,eAC5C,GACF,EAOAozuB,EAAY7+/B,UAAUijgC,iBAAmB,SAAU57B,EAASrl6B,EAAIv0B,GAC9D6v9B,GAAwBh9/B,MACxB,EAAKA,KAAKohgC,gBAAgB,SAAUqB,GAClC,IAAI3lP,EAAS98wB,KAAK2//B,eAAex8/B,IAAI,UAAUs//B,GAE3C3lP,EAAOiqN,UAAYA,GACrBrl6B,EAAG9hE,KAAKutC,EAAS2vuB,EAAQ2lP,EAE7B,GAAGzigC,KACL,EAMAu+/B,EAAY7+/B,UAAUkjgC,oBAAsB,SAAU77B,EAASrl6B,EAAIv0B,GACjE,OAAO,EAAKntC,KAAKuigC,gBAAgBx7B,GAAUrl6B,EAAIv0B,EACjD,EAEAox9B,EAAY7+/B,UAAUmjgC,iBAAmB,SAAU7f,GAEjD,OADAga,GAAwBh9/B,MACyC,MAA1DA,KAAK8igC,kBAAkB3//B,IAAI6/+B,EAAY73tB,eAChD,EAEAozuB,EAAY7+/B,UAAUqjgC,wBAA0B,WAC9C,OAAQ/igC,KAAKohgC,gBAAkB,IAAIr//B,OACrC,EAEAw8/B,EAAY7+/B,UAAUsjgC,aAAe,SAAUth8B,EAAIv0B,GACjD6v9B,GAAwBh9/B,MACxB,IAAIijgC,EAAmB,GACvB,EAAKjjgC,KAAKohgC,gBAAgB,SAAU8B,GAClC,IAAIpmP,EAAS98wB,KAAK2//B,eAAex8/B,IAAI,UAAU+//B,GAE/Cxh8B,EAAG9hE,KAAKutC,EAAS2vuB,EAAQomP,IAAiBD,EAAiBphgC,KAAKqhgC,EAClE,GAAGljgC,MACHA,KAAKohgC,eAAiB6B,EACtBjjgC,KAAK8igC,kBAAoB53D,GAAc+3D,EACzC,EAEA1E,EAAY7+/B,UAAU4s/B,YAAc,SAAUx39B,GAC5Cio+B,GAAsB/8/B,MACtB,IAAI0//B,EAAgB1//B,KAAK2//B,eACrBwD,EAAiB,GACrBzD,EAAc19O,MAAK,SAAU9zhB,EAAYhyC,GACnCxvD,GAAew60B,SAAShrxB,IAC1BinzB,EAAethgC,KAAKq6M,EAExB,IACAxvD,GAAemq2B,kBAAkBsM,EAAgBz22B,GAAey60B,wBAAwB,SAAUjrxB,GAChG,EAAKwjzB,EAAcv8/B,IAAI+4M,IAAgB,SAAU7xD,IAC3CA,GAAgC,WAAlB6xD,GAyD1B,SAA2B8myB,EAAalu9B,GACtC,GAAIA,EAAS,CACX,IAAI9X,EAAQ8X,EAAQoo9B,YAChB3x9B,EAAKuJ,EAAQiovB,SACbzf,EAASxouB,EAAQwm+B,WACrB,OAAgB,MAATt++B,GAAiBgm+B,EAAY73tB,iBAAmBnuQ,GAAe,MAANuO,GAAcy39B,EAAYz39B,KAAOA,GAAgB,MAAV+xuB,GAAkB0lP,EAAYt4+B,OAAS4yvB,CAChJ,CACF,CAhEyD8lQ,CAAkB/42B,EAAWv1H,IAC5Eu1H,EAAUii2B,aAEd,GACF,GACF,EAEAiS,EAAY8E,eACVtG,GAAwB,SAAUz5B,GAChC,IAAIggC,EAAgBhgC,EAAQ89B,eAAiB,GAC7C,EAAK99B,EAAQq8B,eAAex8/B,IAAI,WAAW,SAAU25wB,GAEnDA,GAAUwmP,EAAczhgC,KAAKi7wB,EAAO3xf,eACtC,IACAm4sB,EAAQw/B,kBAAoB53D,GAAco4D,EAC5C,EAEAtG,GAA0B,SAAU15B,GAQpC,OAEA25B,GAAW,SAAU35B,EAAS47B,GAG5B57B,EAAQzl6B,OAAS,CAAC,EAClByl6B,EAAQzl6B,OAAOyg8B,IA1qBI,EA6qBnBh7B,EAAQq8B,eAAiBz0D,GAAc,CACrCpuL,OAAQ,KAEVwmN,EAAQu8B,iBAAmB30D,KAG3B,IAAIq4D,EAAarE,EAAWlQ,KAExB,GAASuU,IAAqC,MAAtBA,EAAWpt9B,UACrCot9B,EAAWpt9B,SAAU,GAuB7B,SAAoB0nB,EAAQkjM,GAG1B,IAAIyiwB,EAAqB3l8B,EAAO0vD,QAAU1vD,EAAO4l8B,WACjD,EAAK1iwB,GAAO,SAAU2iwB,EAAWh5/B,GAClB,eAATA,GAAyB84/B,GAMxB922B,GAAew60B,SAASx89B,KACF,iBAAdg5/B,EACT7l8B,EAAOnzD,GAASmzD,EAAOnzD,GAA2Bo2P,EAAMjjM,EAAOnzD,GAAOg5/B,GAAW,GAAlDnz+B,EAAMmz+B,GAEjB,MAAhB7l8B,EAAOnzD,KACTmzD,EAAOnzD,GAAQg5/B,GAIvB,GACF,CAzCMC,CAAWzE,EAAY57B,EAAQm7B,OAAO5g8B,QAEtCijM,EAAMo+vB,EAAY0E,IAAe,GAEjCtgC,EAAQ87B,aAAaF,EAAY,KACnC,IAGKX,CACT,CA5nBA,CA4nBE,IAkCF,SAASqD,GAAgB3ze,EAAM00c,EAAUg/B,GAGvC,GAAIhw/B,GAAQgx9B,GAAW,CACrB,IAAIkhC,EAAW34D,KAOf,OANA,EAAKy3B,GAAU,SAAUmhC,GACH,MAAhBA,GAEQ,MADG,GAA8BA,EAAc,OACvCD,EAAS53/B,IAAI63/B,GAAc,EAEjD,IACOj3+B,GAAO80+B,GAAO,SAAUD,GAC7B,OAAOA,GAAQmC,EAAS1ggC,IAAIu+/B,EAAKzze,GACnC,GACF,CACE,IAAI81e,EAAW,GAA8BphC,EAAU,MACvD,OAAO918B,GAAO80+B,GAAO,SAAUD,GAC7B,OAAOA,GAAoB,MAAZqC,GAAoBrC,EAAKzze,KAAU81e,CACpD,GAEJ,CAEA,SAASlC,GAAgB3zwB,EAAYvsF,GAGnC,OAAOA,EAAUhiK,eAAe,WAAaktB,GAAOqhO,GAAY,SAAUwzwB,GACxE,OAAOA,GAAQA,EAAK36B,UAAYpl0B,EAAUol0B,OAC5C,IAAK74uB,CACP,CAEA,SAAS4wwB,GAAwBzi9B,GAC/B,IAAI2j9B,EAA0B90D,KAQ9B,OAPA7u5B,GAAQ,EAAK,GAA2BA,EAAK2n9B,eAAe,SAAUlgC,GAKpEk8B,EAAwB/z/B,IAAI639B,GAAU,EACxC,IACO,CACLk8B,wBAAyBA,EAE7B,CAEAn2D,EAAM00D,GAAalB,IACnB,YEhzBA,IAAI4G,GAAmB,CAAC,SAAU,QAAS,WAAY,YAAa,sBAAuB,iBAAkB,QAAS,aAAc,KAAM,MAAO,aAAc,sBAC/J,YAEA,QAAS,qBAcT,SATE,SAAsBC,GACpB,EAAYD,IAAkB,SAAUxv7B,GACtCz0E,KAAKy0E,GAAc,GAAYyv7B,EAAWzv7B,GAAayv7B,EACzD,GAAGlkgC,KACL,ECZF,IAAImkgC,GAA2B,CAAC,EAE5BC,GAEJ,WACE,SAASA,IACPpkgC,KAAKqkgC,mBAAqB,EAC5B,CA6BA,OA3BAD,EAAwB1kgC,UAAUQ,OAAS,SAAUoj+B,EAASr07B,GAC5D,IAAIq19B,EAAoB,GACxB,EAAYH,IAA0B,SAAUI,EAASh4/B,GACvD,IAAI4pE,EAAOou7B,EAAQrkgC,OAAOoj+B,EAASr07B,GACnCq19B,EAAoBA,EAAkBtigC,OAAOm0E,GAAQ,GACvD,IACAn2E,KAAKqkgC,mBAAqBC,CAC5B,EAEAF,EAAwB1kgC,UAAU6uE,OAAS,SAAU+05B,EAASr07B,GAC5D,EAAYjvC,KAAKqkgC,oBAAoB,SAAUnhB,GAC7CA,EAAS306B,QAAU206B,EAAS306B,OAAO+05B,EAASr07B,EAC9C,GACF,EAEAm19B,EAAwB1kgC,UAAU8kgC,qBAAuB,WACvD,OAAOxkgC,KAAKqkgC,mBAAmBtigC,OACjC,EAEAqigC,EAAwBt55B,SAAW,SAAUv+F,EAAMg4/B,GACjDJ,GAAyB53/B,GAAQg4/B,CACnC,EAEAH,EAAwBjhgC,IAAM,SAAUoJ,GACtC,OAAO43/B,GAAyB53/B,EAClC,EAEO63/B,CACT,CAjCA,GAmCA,YCnCA,IAAIK,GAAY,mBAQZC,GAEJ,WASE,SAASA,EAAcz19B,GACrBjvC,KAAK2kgC,iBAAmB,GACxB3kgC,KAAK4kgC,WAAa,GAMlB5kgC,KAAK6kgC,qBAAuB,GAC5B7kgC,KAAK8kgC,KAAO719B,CACd,CAgIA,OA9HAy19B,EAAchlgC,UAAU8q2B,UAAY,SAAUu6J,EAAWnG,EAAyBx+d,GAC5E2ke,IAEF,EAAKtkC,GAAiBskC,EAAUjoP,SAAS,SAAUA,GACjDA,GAAUA,EAAOttwB,MAAQyR,GAAa67vB,EAAOttwB,OAASm77B,GAAe7tL,EAAOttwB,KAC9E,IACA,EAAKix9B,GAAiBskC,EAAUC,UAAU,SAAUA,GAClDA,GAAWA,EAAQn9/B,QAAUoZ,GAAa+j/B,EAAQn9/B,SAAW8i8B,GAAeq6D,EAAQn9/B,OACtF,KAMFk9/B,EAAYx0+B,EAAMw0+B,GAIlB,IAAIE,EAAejlgC,KAAKklgC,cACpBC,EA4KR,SACAJ,EAAWnG,EAAyBv43B,GAClC,IACI++3B,EACAlG,EAFAmG,EAAY,GAGZC,EAAqBP,EAAU7F,WAE/BqG,EAAiBR,EAAU/54B,SAC3Bw64B,EAAwBT,EAAU57+B,QAClCs8+B,EAAcV,EAAUW,MACxBC,IAAaZ,EAAUW,MACvBE,KAAiBJ,GAAyBD,GAAkBD,GAAsBA,EAAmBt64B,UAqDzG,SAAS664B,EAAaho8B,GACpB,EAAK+g8B,GAAyB,SAAUkH,GACtCA,EAAWjo8B,EAAQwoE,EACrB,GACF,CAEA,OAzDIi/3B,GACFpG,EAAaoG,GAEGt64B,WACdk04B,EAAWl04B,SAAWu64B,KAKlBK,GAAeD,KACjBZ,EAAU57+B,QAAU47+B,EAAUW,MAAQ,MAGxCxG,EAAa6F,GAGbY,GACEh0/B,GAAQ8z/B,IACV,EAAKA,GAAa,SAAUM,GAQtBA,GAAeA,EAAYlo8B,SACzBko8B,EAAY926B,MACdo26B,EAAUxjgC,KAAKkkgC,GACLX,IAEVA,EAAeW,GAGrB,IASJF,EAAa3G,GACb,EAAKsG,GAAuB,SAAU3n8B,GACpC,OAAOgo8B,EAAaho8B,EACtB,IACA,EAAKwn8B,GAAW,SAAUK,GACxB,OAAOG,EAAaH,EAAM7n8B,OAC5B,IAQO,CACLqh8B,WAAYA,EACZ8G,gBAAiBR,GAAyB,GAC1CJ,aAAcA,EACdC,UAAWA,EAEf,CAxP0BY,CAAelB,EAAWnG,GAA0BqG,GAC1EjlgC,KAAKkmgC,eAAiBf,EAAgBjG,WAElC+F,GAiBEE,EAAgBa,gBAAgB3lgC,SAClC4kgC,EAAae,gBAAkBb,EAAgBa,iBAG7Cb,EAAgBE,UAAUhlgC,SAC5B4kgC,EAAaI,UAAYF,EAAgBE,WAGvCF,EAAgBC,eAClBH,EAAaG,aAAeD,EAAgBC,eAG9CplgC,KAAKklgC,cAAgBC,CAEzB,EAEAT,EAAchlgC,UAAUy//B,YAAc,SAAUgH,GAC9C,IAAIlB,EAAejlgC,KAAKklgC,cAKxB,OAJAllgC,KAAK2kgC,iBAAmBM,EAAae,gBACrChmgC,KAAK4kgC,WAAaK,EAAaI,UAC/BrlgC,KAAKomgC,cAAgBnB,EAAaG,aAClCplgC,KAAK6kgC,qBAAuB,GACrBt0+B,EAAM41+B,EAKXlB,EAAa/F,WAAal//B,KAAKkmgC,eACnC,EAEAxB,EAAchlgC,UAAU4//B,kBAAoB,SAAUh8B,GACpD,IAAIzl6B,EACAmo8B,EAAkBhmgC,KAAK2kgC,iBAE3B,GAAIqB,EAAgB3lgC,OAAQ,CAG1B,IAAIgmgC,EAAgB/iC,EAAQnpoB,aAAa,YAErCksqB,IACFxo8B,EAASttC,EACTy1+B,EAAgBK,EAAcC,oBAElC,CAEA,OAAOzo8B,CACT,EAEA6m8B,EAAchlgC,UAAU8//B,eAAiB,SAAUl8B,GACjD,IA+NmBijC,EAAUt+sB,EA/NzBu+sB,EAAUxmgC,KAAK8kgC,KAAK35xB,WAEpBs7xB,EAAWzmgC,KAAK8kgC,KAAK9p1B,YAErBqq1B,EAAYrlgC,KAAK4kgC,WACjBQ,EAAeplgC,KAAKomgC,cACpBz30B,EAAU,GACVnrK,EAAS,GAEb,IAAK6h/B,EAAUhlgC,SAAW+kgC,EACxB,OAAO5h/B,EAIT,IAAK,IAAI5iB,EAAI,EAAGi+H,EAAMwm4B,EAAUhlgC,OAAQO,EAAIi+H,EAAKj+H,IAC3C8lgC,GAAgBrB,EAAUzkgC,GAAGquF,MAAOu36B,EAASC,IAC/C930B,EAAQ9sL,KAAKjB,GAmBjB,OAZK+tL,EAAQtuL,QAAU+kgC,IACrBz20B,EAAU,EAAE,IAGVA,EAAQtuL,SAoMOkmgC,EApMkB530B,EAoMRs5H,EApMiBjoT,KAAK6kgC,qBAsM9C0B,EAAS15/B,KAAK,OAASo7S,EAASp7S,KAAK,QArMxC2W,EAAS6L,EAAIs/J,GAAS,SAAU3xK,GAC9B,OAAOuT,GAAiB,IAAXvT,EAAeoo/B,EAAavn8B,OAASwn8B,EAAUro/B,GAAO6gD,OACrE,KAIF79D,KAAK6kgC,qBAAuBl20B,EACrBnrK,CACT,EAEOkh/B,CACT,CApJA,GAwSA,SAASgC,GAAgBz36B,EAAOu36B,EAASC,GACvC,IAAIE,EAAU,CACZ5n+B,MAAOyn+B,EACPxn+B,OAAQyn+B,EACRG,YAAaJ,EAAUC,GAGrBI,GAAa,EAejB,OAdA,EAAK536B,GAAO,SAAU9tF,EAAO8shB,GAC3B,IAAIr0T,EAAUq0T,EAAKxnhB,MAAMg+/B,IAEzB,GAAK7qyB,GAAYA,EAAQ,IAAOA,EAAQ,GAAxC,CAIA,IAAIkkO,EAAWlkO,EAAQ,GACnBktyB,EAAWltyB,EAAQ,GAAGrqN,eAS9B,SAAiBw3/B,EAAMC,EAAQlpkB,GAC7B,MAAiB,QAAbA,EACKipkB,GAAQC,EACO,QAAblpkB,EACFipkB,GAAQC,EAGRD,IAASC,CAEpB,EAhBS984B,CAAQy84B,EAAQG,GAAW3lgC,EAAO28b,KACrC+okB,GAAa,EANf,CAQF,IACOA,CACT,CAiHA,YC5bA,IAAI,GAAO,EACP,GAAW,GACXI,GAAkB,CAAC,YAAa,YAAa,YAAa,YAAa,aAAc,QAAS,aAElG,SAASC,GAAmB9me,GAC1B,IAAI+me,EAAe/me,GAAOA,EAAImkd,UAE9B,GAAK4iB,EAIL,IAAK,IAAIvmgC,EAAI,EAAGi+H,EAAMoo4B,GAAgB5mgC,OAAQO,EAAIi+H,EAAKj+H,IAAK,CAC1D,IAAIijQ,EAAYojwB,GAAgBrmgC,GAC5BwmgC,EAAqBD,EAAa9j2B,OAClCgk2B,EAAuBF,EAAavmC,SAEpCwmC,GAAsBA,EAAmBvjwB,KAK3Cu8R,EAAIv8R,GAAau8R,EAAIv8R,IAAc,CAAC,EAE/Bu8R,EAAIv8R,GAAWxgG,OAGlB,EAAa+8X,EAAIv8R,GAAWxgG,OAAQ+j2B,EAAmBvjwB,IAFvDu8R,EAAIv8R,GAAWxgG,OAAS+j2B,EAAmBvjwB,GAK7CujwB,EAAmBvjwB,GAAa,MAG9BwjwB,GAAwBA,EAAqBxjwB,KAK/Cu8R,EAAIv8R,GAAau8R,EAAIv8R,IAAc,CAAC,EAE/Bu8R,EAAIv8R,GAAW+8tB,SAGlB,EAAaxgc,EAAIv8R,GAAW+8tB,SAAUymC,EAAqBxjwB,IAF3Du8R,EAAIv8R,GAAW+8tB,SAAWymC,EAAqBxjwB,GAKjDwjwB,EAAqBxjwB,GAAa,KAEtC,CACF,CAEA,SAASyjwB,GAAsBlne,EAAKmne,EAASC,GAC3C,GAAIpne,GAAOA,EAAImne,KAAanne,EAAImne,GAASlk2B,QAAU+8X,EAAImne,GAAS3mC,UAAW,CACzE,IAAI6mC,EAAYrne,EAAImne,GAASlk2B,OACzBqk2B,EAActne,EAAImne,GAAS3mC,SAE3B6mC,IAOED,GACFpne,EAAImne,GAASlk2B,OAAS+8X,EAAImne,GAAS3mC,SAAW,KAC9C,EAAgBxgc,EAAImne,GAAUE,IAE9Brne,EAAImne,GAAWE,GAIfC,IAKFtne,EAAIwgc,SAAWxgc,EAAIwgc,UAAY,CAAC,EAChCxgc,EAAIwgc,SAAS2mC,GAAWG,EAGpBA,EAAY52pB,QACdsvL,EAAIwgc,SAAS9vnB,MAAQ42pB,EAAY52pB,OAG/B42pB,EAAYnlB,YACdnid,EAAIwgc,SAAS2hB,UAAYmlB,EAAYnlB,WAG3C,CACF,CAEA,SAASolB,GAAsBvne,GAC7Bkne,GAAsBlne,EAAK,aAC3Bkne,GAAsBlne,EAAK,aAC3Bkne,GAAsBlne,EAAK,aAC3Bkne,GAAsBlne,EAAK,SAC3Bkne,GAAsBlne,EAAK,aAE3Bkne,GAAsBlne,EAAK,cAE3Bkne,GAAsBlne,EAAK,YAC7B,CAEA,SAASwne,GAAgBxne,EAAK70Y,GAE5B,IAAIs82B,EAAiB,GAASzne,IAAQA,EAAI70Y,GACtCy91B,EAAY,GAAS6e,IAAmBA,EAAe7e,UAE3D,GAAIA,EAMF,IAAK,IAAIpo/B,EAAI,EAAGi+H,EAAM,GAA6Bx+H,OAAQO,EAAIi+H,EAAKj+H,IAAK,CACvE,IAAIkngC,EAAe,GAA6BlngC,GAE5Coo/B,EAAUrp/B,eAAemogC,KAC3BD,EAAeC,GAAgB9e,EAAU8e,GAE7C,CAEJ,CAEA,SAASC,GAAsB3ne,GACzBA,IACFune,GAAsBvne,GACtBwne,GAAgBxne,EAAK,SACrBA,EAAIwgc,UAAYgnC,GAAgBxne,EAAIwgc,SAAU,SAElD,CA8GA,SAASonC,GAAM1ngC,GACb,OAAO,GAAeA,GAAKA,EAAIA,EAAI,CAACA,GAAK,EAC3C,CAEA,SAAS2ngC,GAAM3ngC,GACb,OAAQ,GAAeA,GAAKA,EAAE,GAAKA,IAAM,CAAC,CAC5C,CC/MA,SAAS4ngC,GAAuBrq8B,GAC9BA,GAAU,EAAKsq8B,IAAmB,SAAU372B,GACtCA,EAAK,KAAM3uF,KAAY2uF,EAAK,KAAM3uF,KACpCA,EAAO2uF,EAAK,IAAM3uF,EAAO2uF,EAAK,IAElC,GACF,CAEA,IAAI272B,GAAoB,CAAC,CAAC,IAAK,QAAS,CAAC,IAAK,OAAQ,CAAC,KAAM,SAAU,CAAC,KAAM,WAC1EC,GAA0B,CAAC,OAAQ,MAAO,WAAY,SAAU,UAAW,QAAS,YAAa,WAAY,YAC7GC,GAAqB,CAAC,CAAC,eAAgB,mBAAoB,CAAC,cAAe,kBAAmB,CAAC,cAAe,mBAElH,SAASC,GAAmBzq8B,GAC1B,IAAI0m7B,EAAY1m7B,GAAUA,EAAO0m7B,UAEjC,GAAIA,EACF,IAAK,IAAI3j/B,EAAI,EAAGA,EAAIyngC,GAAmBhogC,OAAQO,IAAK,CAClD,IAAI2ngC,EAAUF,GAAmBzngC,GAAG,GAChC4ngC,EAAUH,GAAmBzngC,GAAG,GAEV,MAAtB2j/B,EAAUgkB,KACZhkB,EAAUikB,GAAWjkB,EAAUgkB,GAMnC,CAEJ,CAEA,SAASE,GAAe5q8B,GACjBA,GAIkB,SAAnBA,EAAO6q8B,SAAuC,MAAjB7q8B,EAAO4hT,QAAyC,MAAvB5hT,EAAO8xK,eAK/D9xK,EAAO8xK,aAAe9xK,EAAO4hT,OAEjC,CAEA,SAASkppB,GAAoB9q8B,GACtBA,GAIDA,EAAO+q8B,WAAa/q8B,EAAOontB,OAC7BpntB,EAAOontB,KAAOpntB,EAAO+q8B,SAMzB,CAoBA,SAASC,GAAar5/B,EAAMkyD,GAC1B,GAAIlyD,EACF,IAAK,IAAI5O,EAAI,EAAGA,EAAI4O,EAAKnP,OAAQO,IAC/B8gE,EAAGlyD,EAAK5O,IACR4O,EAAK5O,IAAMiogC,GAAar5/B,EAAK5O,GAAGo/B,SAAU0hC,EAGhD,CAEe,SAASon8B,GAAqBjr8B,EAAQkr8B,ID2HtC,SAA2Blr8B,EAAQkr8B,GAChD,GAAKf,GAAMnq8B,EAAOi/sB,SAAS,SAAUksP,GACnC,GAASA,IAtHb,SAAuBA,GACrB,GAAK,GAASA,GAAd,CAIA9B,GAAmB8B,GACnBrB,GAAsBqB,GACtBpB,GAAgBoB,EAAW,SAE3BpB,GAAgBoB,EAAW,cAE3BpB,GAAgBoB,EAAW,aAEvBA,EAAUpoC,WACZgnC,GAAgBoB,EAAUpoC,SAAU,SAEpCgnC,GAAgBoB,EAAUpoC,SAAU,cAEpCgnC,GAAgBoB,EAAUpoC,SAAU,cAGtC,IAAIqoC,EAAYD,EAAUC,UAEtBA,IACF/B,GAAmB+B,GACnBlB,GAAsBkB,IAGxB,IAAIC,EAAWF,EAAUE,SAErBA,IACFhC,GAAmBgC,GACnBnB,GAAsBmB,IAGxB,IAAIC,EAAWH,EAAUG,SAErBA,GACFpB,GAAsBoB,GAGxB,IAAI35/B,EAAOw5/B,EAAUx5/B,KAGrB,GAAuB,UAAnBw5/B,EAAUz8/B,KAAkB,CAC9BiD,EAAOA,GAAQw5/B,EAAU54wB,MACzB,IAAIg5wB,EAAWJ,EAAUr/lB,OAASq/lB,EAAUK,MAE5C,GAAID,IAAa,GAAoBA,GACnC,IAAK,IAAIxogC,EAAI,EAAGA,EAAIwogC,EAAS/ogC,OAAQO,IACnCmngC,GAAsBqB,EAASxogC,IAInC,EAAYoogC,EAAUhgJ,YAAY,SAAU5oV,GAC1Cune,GAAsBvne,EACxB,GACF,CAEA,GAAI5whB,IAAS,GAAoBA,GAC/B,IAAS5O,EAAI,EAAGA,EAAI4O,EAAKnP,OAAQO,IAC/BmngC,GAAsBv4/B,EAAK5O,IAO/B,IAFAqogC,EAAYD,EAAUC,YAELA,EAAUz5/B,KACzB,KAAI85/B,EAASL,EAAUz5/B,KAEvB,IAAS5O,EAAI,EAAGA,EAAI0ogC,EAAOjpgC,OAAQO,IACjCmngC,GAAsBuB,EAAO1ogC,GAHJ,CAU7B,IAFAsogC,EAAWF,EAAUE,WAELA,EAAS15/B,KACvB,KAAI+5/B,EAASL,EAAS15/B,KAEtB,IAAS5O,EAAI,EAAGA,EAAI2ogC,EAAOlpgC,OAAQO,IAC7B,GAAe2ogC,EAAO3ogC,KACxBmngC,GAAsBwB,EAAO3ogC,GAAG,IAChCmngC,GAAsBwB,EAAO3ogC,GAAG,KAEhCmngC,GAAsBwB,EAAO3ogC,GAPP,CAaL,UAAnBoogC,EAAUz8/B,MACZq7/B,GAAgBoB,EAAW,aAC3BpB,GAAgBoB,EAAW,SAC3BpB,GAAgBoB,EAAW,WACC,YAAnBA,EAAUz8/B,MACnB+6/B,GAAsB0B,EAAUQ,WAAY,aAC5C,EAAYR,EAAU9kvB,QAAQ,SAAUk8Q,GACtCune,GAAsBvne,EACxB,KAC4B,SAAnB4oe,EAAUz8/B,MACnBo7/B,GAAsBqB,EAAUnumB,OApGlC,CAuGF,CAY2B4umB,CAAcT,EACvC,IACA,IAAIzjN,EAAO,CAAC,QAAS,QAAS,aAAc,YAAa,aAAc,eAAgB,SACvFwjN,GAAWxjN,EAAK1jzB,KAAK,YAAa,eAAgB,UAAW,YAC7D,GAAK0jzB,GAAM,SAAUmkN,GACnB,GAAK1B,GAAMnq8B,EAAO6r8B,KAAY,SAAUC,GAClCA,IACF/B,GAAgB+B,EAAS,aACzB/B,GAAgB+B,EAAQC,YAAa,SAEzC,GACF,IACA,GAAK5B,GAAMnq8B,EAAOqquB,WAAW,SAAU2hO,GACrC,IAAIC,EAAsBD,GAAeA,EAAYC,oBACrDlC,GAAgBkC,EAAqB,aACrClC,GAAgBkC,GAAuBA,EAAoBF,YAAa,QAC1E,IACA,GAAK5B,GAAMnq8B,EAAOks8B,WAAW,SAAUC,GACrC1C,GAAsB0C,EAAa,aACnCpC,GAAgBoC,EAAa,YAC7BpC,GAAgBoC,EAAa,cAC7BpC,GAAgBoC,EAAa,YAC/B,IAEA,GAAKhC,GAAMnq8B,EAAOww7B,QAAQ,SAAU4b,GAClCrC,GAAgBqC,EAAU,QAEtBA,EAASv//B,MAA6B,MAArBu//B,EAASP,WAC5BO,EAASP,SAAWO,EAASv//B,YACtBu//B,EAASv//B,MAOM,MAApBu//B,EAASC,SAA2C,MAAxBD,EAASE,cACvCF,EAASE,YAAcF,EAASC,eACzBD,EAASC,QAcpB,IACA,GAAKlC,GAAMnq8B,EAAOus8B,MAAM,SAAUC,GAC5B,GAASA,KACXtC,GAAsBsC,GACtB,GAAKrC,GAAMqC,EAAOC,UAAU,SAAUC,GACpCxC,GAAsBwC,EACxB,IAEJ,IACA,GAAKvC,GAAMnq8B,EAAOmtD,WAAW,SAAUw/4B,GACrCzC,GAAsByC,GACtBlD,GAAsBkD,EAAa,SACnClD,GAAsBkD,EAAa,aACnClD,GAAsBkD,EAAa,gBAAgB,GACnD,IAAIh7/B,EAAOg7/B,EAAYh7/B,KACvB,GAAeA,IAAS,EAAYA,GAAM,SAAU4xC,GAC9C,GAAgBA,KAClBkm9B,GAAsBlm9B,EAAM,SAC5Bkm9B,GAAsBlm9B,EAAM,aAEhC,GACF,IACA,GAAK4m9B,GAAMnq8B,EAAO4v7B,UAAU,SAAUgd,GACpCnD,GAAsBmD,EAAY,aAClC,GAAKA,EAAWt47B,SAAS,SAAUu47B,GACjCpD,GAAsBoD,EAAY,YACpC,GACF,IACA9C,GAAgBK,GAAMpq8B,EAAO+r8B,aAAc,SAC3ChC,GAAgBK,GAAMpq8B,EAAOwgF,SAASur3B,YAAa,QAErD,EC/ME,CAAY/r8B,EAAQkr8B,GAEpBlr8B,EAAOi/sB,OAAS2jN,GAAiB5i6B,EAAOi/sB,QACxC,EAAKj/sB,EAAOi/sB,QAAQ,SAAUksP,GAC5B,GAAK,GAASA,GAAd,CAIA,IAAIvsL,EAAausL,EAAUz8/B,KAE3B,GAAmB,SAAfkw0B,EAC4B,MAA1BusL,EAAU2B,eACZ3B,EAAU79mB,KAAO69mB,EAAU2B,mBAMxB,GAAmB,QAAfluL,GAAuC,UAAfA,EAAwB,CAYzD,GAX2B,MAAvBusL,EAAU4B,YACZ5B,EAAUpkqB,UAAYokqB,EAAU4B,WAOlCnC,GAAeO,EAAU3ngC,QACrBmO,EAAOw5/B,EAAUx5/B,QAERyR,GAAazR,GACxB,IAAK,IAAI5O,EAAI,EAAGA,EAAI4O,EAAKnP,OAAQO,IAC/B6ngC,GAAej5/B,EAAK5O,IAIK,MAAzBoogC,EAAU6B,cACZ7B,EAAUpoC,SAAWooC,EAAUpoC,UAAY,CAAC,GAExCooC,EAAUpoC,SAASkqC,UAAY,QAKjC9B,EAAUpoC,SAASkqC,UAAY9B,EAAU6B,aAG/C,MAAO,GAAmB,UAAfpuL,EAAwB,CACjC,IAAIsuL,EA3KV,SAAa3qe,EAAK/pgB,GAIhB,IAHA,IAAIk29B,EA0KkC,gBA1KnB3n/B,MAAM,KACrBsoN,EAAMkzU,EAEDx/hB,EAAI,EAAGA,EAAI2r/B,EAAQls/B,QAGf,OAFX6sN,EAAMA,GAAOA,EAAIq/xB,EAAQ3r/B,KADSA,KAQpC,OAAOssN,CACT,CA8JyB/pN,CAAI6lgC,GACP,MAAhB+B,GA7JN,SAAa3qe,EAAK/pgB,EAAMqnJ,EAAKwrxB,GAM3B,IALA,IAEIrk7B,EAFA0n+B,EA4JuC,kBA5JxB3n/B,MAAM,KACrBsoN,EAAMkzU,EAENx/hB,EAAI,EAEDA,EAAI2r/B,EAAQls/B,OAAS,EAAGO,IAGb,MAAZssN,EAFJroM,EAAM0n+B,EAAQ3r/B,MAGZssN,EAAIroM,GAAO,CAAC,GAGdqoM,EAAMA,EAAIroM,GAGwB,MAAnBqoM,EAAIq/xB,EAAQ3r/B,MAC3BssN,EAAIq/xB,EAAQ3r/B,IAAM88K,EAEtB,CA0I8B,CAAIsr1B,EAAW,EAAmB+B,EAC5D,MAAO,GAAmB,QAAftuL,EAAsB,CAI/B,IAAIjt0B,EAEJ,GALA84/B,GAAmBU,GACnBV,GAAmBU,EAAUgC,iBAC7B1C,GAAmBU,EAAUpoC,WACzBpx9B,EAAOw5/B,EAAUx5/B,QAERyR,GAAazR,GACxB,IAAS5O,EAAI,EAAGA,EAAI4O,EAAKnP,OAAQO,IACR,iBAAZ4O,EAAK5O,KACd0ngC,GAAmB94/B,EAAK5O,IACxB0ngC,GAAmB94/B,EAAK5O,IAAM4O,EAAK5O,GAAGgg+B,UAI9C,MAAO,GAAmB,aAAfnkJ,EAA2B,CACpC,IAAIwuL,EAAkBjC,EAAUiC,gBAE5BA,IACFjC,EAAUpoC,SAAWooC,EAAUpoC,UAAY,CAAC,EAEvCooC,EAAUpoC,SAAS9vnB,QACtBk4pB,EAAUpoC,SAAS9vnB,MAAQm6pB,IAQ/BtC,GAAoBK,GACpBH,GAAaG,EAAUx5/B,KAAMm5/B,GAC/B,KAA0B,UAAflsL,GAAyC,WAAfA,EA7GzC,SAA0B5+wB,GACnBA,GAI4B,MAA7BA,EAAOqt8B,qBACTrt8B,EAAO+i6B,SAAW/i6B,EAAO+i6B,UAAY,CAAC,EAET,MAAzB/i6B,EAAO+i6B,SAAS9vnB,QAKlBjzS,EAAO+i6B,SAAS9vnB,MAAQ,aAG9B,CA8FMq6pB,CAAiBnC,GACO,QAAfvsL,IACLusL,EAAUoC,UAAYpC,EAAU35+B,MAKlC25+B,EAAU35+B,IAAM25+B,EAAUoC,SAGxBpC,EAAUqC,aAKZ,EAASrC,EAAWA,EAAUqC,cAIF,MAA5BrC,EAAUsC,iBACZtC,EAAUpoC,SAAWooC,EAAUpoC,UAAY,CAAC,EAExCooC,EAAUpoC,UAAwC,MAA5BooC,EAAUpoC,SAAS9+3B,QAK3Ckn6B,EAAUpoC,SAAS9+3B,MAAQkn6B,EAAUsC,iBAIzCpD,GAAuBc,EA3GvB,CA4GF,IAEInr8B,EAAO6jE,YACT7jE,EAAO0t8B,UAAY1t8B,EAAO6jE,WAG5B,EAAK0m4B,IAAyB,SAAU1k3B,GACtC,IAAIv6H,EAAU00C,EAAO6lF,GAEjBv6H,IACGxX,GAAQwX,KACXA,EAAU,CAACA,IAGb,EAAKA,GAAS,SAAU00C,GACtBqq8B,GAAuBrq8B,EACzB,IAEJ,GACF,CC/NA,SAAS2t8B,GAAeC,GACtB,EAAKA,GAAe,SAAUC,EAAiBC,GAC7C,IAAIC,EAAY,GACZC,EAAY,CAACjwQ,IAAKA,KAClBkwQ,EAAO,CAACJ,EAAgBK,qBAAsBL,EAAgBM,sBAC9D3t9B,EAAaqt9B,EAAgBl8/B,KAC7By8/B,EAAmBP,EAAgBO,iBACnCC,EAAgBR,EAAgB1oB,YAAY7/+B,IAAI,kBAAoB,WAGxEk7C,EAAW8oV,OAAO2koB,GAAM,SAAUr8E,EAAI3kwB,EAAIzlB,GACxC,IAOI8m2B,EACAC,EARAt95B,EAAMzwD,EAAWl7C,IAAIuogC,EAAgBW,iBAAkBhn2B,GAG3D,GAAI/4H,MAAMwiE,GACR,OAAO+85B,EAMLI,EACFG,EAAsB/t9B,EAAWiu9B,YAAYjn2B,GAE7C8m2B,EAAU9t9B,EAAWl7C,IAAIuogC,EAAgBa,mBAAoBln2B,GAM/D,IAFA,IAAImn2B,EAAc5wQ,IAETx3vB,EAAIungC,EAAa,EAAGvngC,GAAK,EAAGA,IAAK,CACxC,IAAIqogC,EAAYhB,EAAcrngC,GAM9B,GAJK6ngC,IACHG,EAAsBK,EAAUj9/B,KAAKk9/B,WAAWD,EAAUF,mBAAoBJ,IAG5EC,GAAuB,EAAG,CAC5B,IAAI1u1B,EAAM+u1B,EAAUj9/B,KAAKm9/B,cAAcF,EAAUV,qBAAsBK,GAEvE,GAAsB,QAAlBF,GACiB,aAAlBA,GAAgCxu1B,EAAM,GAAuB,aAAlBwu1B,GAAgCxu1B,EAAM,GAAuB,aAAlBwu1B,GAAgCp95B,GAAO,GAAK4uE,EAAM,GACtH,aAAlBwu1B,GAAgCp95B,GAAO,GAAK4uE,EAAM,EACnD,CAIE5uE,EAAMow3B,GAAQpw3B,EAAK4uE,GACnB8u1B,EAAc9u1B,EACd,KACF,CACJ,CACF,CAIA,OAFAku1B,EAAU,GAAK985B,EACf885B,EAAU,GAAKY,EACRZ,CACT,GACF,GACF,CC3FA,ICNIj1+B,GAAI62B,GAAInoC,GASRun/B,GACAC,GDJAC,GAGF,SAAoB1i+B,GAClBpqC,KAAKwP,KAAO46B,EAAO56B,OAAS46B,EAAOy1S,eAAiBu5qB,GAA8B,CAAC,EAAI,IACvFp5/B,KAAK6/U,aAAez1S,EAAOy1S,cAAgBy5qB,GAE3Ct5/B,KAAKu6/B,eAAiBnw9B,EAAOmw9B,gBAAkBhB,GAC/Cv5/B,KAAK2/H,WAAav1F,EAAOu1F,YAAc,EACvC3/H,KAAK+sgC,wBAA0B3i+B,EAAO2i+B,wBACtC/sgC,KAAKgtgC,cAAgB5i+B,EAAO4i+B,cAC5B,IAAItR,EAAmB17/B,KAAK07/B,iBAAmBtx9B,EAAOsx9B,iBAEtD,GAAIA,EACF,IAAK,IAAI96/B,EAAI,EAAGA,EAAI86/B,EAAiBr7/B,OAAQO,IAAK,CAChD,IAAI+2V,EAAM+jqB,EAAiB96/B,GAEX,MAAZ+2V,EAAIprV,MACF4v/B,GAAan8/B,KAAMY,KAAO64/B,GAAWC,OACvC/hqB,EAAIprV,KAAO,UAGjB,CAEJ,EAKK,SAAS0ggC,GAAiBvv1B,GAC/B,OAAOA,aAAeov1B,EACxB,CAMO,SAASI,GAAaC,EAAYC,EACzCvtrB,GACEA,EAAeA,GAAgBwtrB,GAAmBF,GAClD,IAAI5S,EAAiB6S,EAAkB7S,eACnC+S,EAgFN,SAAmC99/B,EAAMqwU,EAAc06qB,EAAgBgT,EAKvE7R,GACE,IAAIqR,EACApt4B,EAKJ,IAAKnwH,EACH,MAAO,CACLks/B,iBAAkB8R,GAA0B9R,GAC5C/73B,WAAYA,EACZot4B,wBAAyBA,GAI7B,GAAIltrB,IAAiBs5qB,GAA0B,CAC7C,IAAIqD,EAAgBht/B,EAKC,SAAjB+9/B,GAA2C,MAAhBA,EAC7BE,IAAqB,SAAU/v1B,GAElB,MAAPA,GAAuB,MAARA,IACb1iH,GAAS0iH,GACG,MAAd/9C,IAAuBA,EAAa,GAEpCA,EAAa,EAInB,GAAG463B,EAAgBiC,EAAe,IAElC783B,EAAar8E,GAASiq9B,GAAgBA,EAAeA,EAAe,EAAI,EAGrE7R,GAAmC,IAAf/73B,IACvB+73B,EAAmB,GACnB+R,IAAqB,SAAU/v1B,EAAK1gK,GAClC0++B,EAAiB1++B,GAAgB,MAAP0gK,EAAcA,EAAM,GAAK,EACrD,GAAG680B,EAAgBiC,EAAez87B,MAGpCgt8B,EAA0BrR,EAAmBA,EAAiBr7/B,OAASk6/B,IAAmBf,GAAuBgD,EAAcn8/B,OAASm8/B,EAAc,GAAKA,EAAc,GAAGn8/B,OAAS,IACvL,MAAO,GAAIw/U,IAAiB,GACrB67qB,IACHA,EAyBN,SAAqCls/B,GAInC,IAHA,IACI09M,EADAusI,EAAa,EAGVA,EAAajqV,EAAKnP,UAAY6sN,EAAM19M,EAAKiqV,QAGhD,GAAIvsI,EACF,OAAO55M,GAAK45M,EAEhB,CAnCyBwgzB,CAA4Bl+/B,SAE5C,GAAIqwU,IAAiBu5qB,GACrBsC,IACHA,EAAmB,GACnB,EAAKls/B,GAAM,SAAUm+/B,EAAQ9o/B,GAC3B62+B,EAAiB75/B,KAAKgjB,EACxB,UAEG,GAAIg7T,IAAiB,GAAwB,CAClD,IAAI0qnB,EAASw2B,GAAiBvx9B,EAAK,IACnCu9/B,EAA0Bp7/B,GAAQ447B,IAAWA,EAAOlq8B,QAAU,CAChE,CAMA,MAAO,CACLs/H,WAAYA,EACZ+73B,iBAAkB8R,GAA0B9R,GAC5CqR,wBAAyBA,EAE7B,CA3JmBa,CAA0BT,EAAYttrB,EAAc06qB,EAAgB6S,EAAkBG,aAAcH,EAAkB102B,YAUvI,OATa,IAAIo02B,GAAW,CAC1Bt9/B,KAAM29/B,EACNttrB,aAAcA,EACd06qB,eAAgBA,EAChBmB,iBAAkB4R,EAAW5R,iBAC7B/73B,WAAY2t4B,EAAW3t4B,WACvBot4B,wBAAyBO,EAAWP,wBACpCC,cAAez8+B,EAAM68+B,IAGzB,CAKO,SAASS,GAAiCr+/B,GAC/C,OAAO,IAAIs9/B,GAAW,CACpBt9/B,KAAMA,EACNqwU,aAAc5+T,GAAazR,GAAQ6p/B,GAA4B,IAEnE,CAmBO,SAASgU,GAAmB79/B,GACjC,IAAIqwU,EAAey5qB,GAEnB,GAAIr4+B,GAAazR,GACfqwU,EAAew5qB,QACV,GAAI1n/B,GAAQnC,GAAO,CAEJ,IAAhBA,EAAKnP,SACPw/U,EAAes5qB,IAGjB,IAAK,IAAIv4/B,EAAI,EAAGi+H,EAAMrvH,EAAKnP,OAAQO,EAAIi+H,EAAKj+H,IAAK,CAC/C,IAAIwgD,EAAO5xC,EAAK5O,GAEhB,GAAY,MAARwgD,EAAJ,CAEO,GAAIzvC,GAAQyvC,GAAO,CACxBy+R,EAAes5qB,GACf,KACF,CAAO,GAAI,GAAS/38B,GAAO,CACzBy+R,EAAe,GACf,KACF,EACF,CACF,MAAO,GAAI,GAASrwU,GAClB,IAAK,IAAIqV,KAAOrV,EACd,GAAItH,GAAOsH,EAAMqV,IAAQkl7B,EAAYv67B,EAAKqV,IAAO,CAC/Cg7T,EAAeu5qB,GACf,KACF,CAIJ,OAAOv5qB,CACT,CAkGA,SAAS2trB,GAA0B9R,GACjC,GAAKA,EAAL,CAKA,IAAIjlvB,EAAUy0rB,KACd,OAAO776B,EAAIqs+B,GAAkB,SAAUoS,EAAS9w/B,GAK9C,IAAIokC,EAAO,CACT12C,MALFojgC,EAAU,GAASA,GAAWA,EAAU,CACtCpjgC,KAAMojgC,IAIQpjgC,KACd09J,YAAa0l2B,EAAQ1l2B,YACrB77J,KAAMuhgC,EAAQvhgC,MAKhB,GAAiB,MAAb60C,EAAK12C,KACP,OAAO02C,EAITA,EAAK12C,MAAQ,GAMW,MAApB02C,EAAKgnH,cACPhnH,EAAKgnH,YAAchnH,EAAK12C,MAG1B,IAAIqjgC,EAAQt3vB,EAAQtzQ,IAAIi+C,EAAK12C,MAU7B,OARKqjgC,EAKH3s9B,EAAK12C,MAAQ,IAAMqjgC,EAAMxk9B,QAJzBktN,EAAQxqQ,IAAIm1C,EAAK12C,KAAM,CACrB6+C,MAAO,IAMJnI,CACT,GA1CA,CA2CF,CAEA,SAASqs9B,GAAqB/r8B,EAAI647B,EAAgB/q/B,EAAMw+/B,GACtD,GAAIzT,IAAmBf,GACrB,IAAK,IAAI54/B,EAAI,EAAGA,EAAI4O,EAAKnP,QAAUO,EAAIotgC,EAASptgC,IAC9C8gE,EAAGlyD,EAAK5O,GAAK4O,EAAK5O,GAAG,GAAK,KAAMA,OAGlC,KAAI2p8B,EAAS/67B,EAAK,IAAM,GAExB,IAAS5O,EAAI,EAAGA,EAAI2p8B,EAAOlq8B,QAAUO,EAAIotgC,EAASptgC,IAChD8gE,EAAG6o4B,EAAO3p8B,GAAIA,EAHU,CAM9B,CAEO,SAASqtgC,GAAyBpmgC,GACvC,IAAIg4U,EAAeh4U,EAAOg4U,aAC1B,OAAOA,IAAiB,IAA6BA,IAAiBu5qB,EACxE,CC7QA,IAAI8U,GAEJ,WACE,SAASA,EAAoBC,EAAaC,GAExC,IAAIvmgC,EAAUolgC,GAAiBkB,GAA+DA,EAAhDN,GAAiCM,GAE/EnugC,KAAKyhwB,QAAU55vB,EACf,IAAI2H,EAAOxP,KAAKykJ,MAAQ58I,EAAO2H,KAE3B3H,EAAOg4U,eAAiBw5qB,KAO1Br5/B,KAAK85J,QAAU,EACf95J,KAAKqugC,SAAWD,EAChBpugC,KAAKykJ,MAAQj1I,GAGfq9/B,GAAa7sgC,KAAMwP,EAAM3H,EAC3B,CAkJA,OAhJAqmgC,EAAoBxugC,UAAU+rV,UAAY,WACxC,OAAOzrV,KAAKyhwB,OACd,EAEAysQ,EAAoBxugC,UAAU6pD,MAAQ,WACpC,OAAO,CACT,EAEA2k9B,EAAoBxugC,UAAUusB,QAAU,SAAU6uV,EAAK56O,GAEvD,EAEAgu4B,EAAoBxugC,UAAU4ugC,WAAa,SAAU94qB,GAAU,EAE/D04qB,EAAoBxugC,UAAUsp7B,MAAQ,WAAa,EAEnDklF,EAAoBhY,gBAAkB,WAGpC,IAAI1k/B,EAAQ08/B,EAAoBxugC,UAChC8R,EAAM+8/B,MAAO,EACb/8/B,EAAM4zI,YAAa,CACrB,CANsC,GAQtC8o3B,EAAoB7K,cAAgB,WAClC,IAAI1s+B,EAEJk2+B,GAAe,SAAU329B,EAAU1mC,EAAM3H,GACvC,IAAIg4U,EAAeh4U,EAAOg4U,aACtB06qB,EAAiB1y/B,EAAO0y/B,eACxB563B,EAAa93H,EAAO83H,WACpBw73B,EAAUtz/B,EAAO6z/B,iBASrB,GAFArymB,EAAOnzW,EANO029B,GAAgB4B,GAAgB3urB,EAAc06qB,KAQxD16qB,IAAiBw5qB,GACnBnj9B,EAASjqB,QAAUwi/B,EACnBv49B,EAASqT,MAAQml9B,EACjBx49B,EAASy49B,YAAcC,MAClB,CACL,IAAIC,EAAgBC,GAAuBjvrB,EAAc06qB,GACzDrk9B,EAASjqB,QAAU5oB,GAAKwrgC,EAAe,KAAMr//B,EAAMmwH,EAAYw73B,GAC/D,IAAI4T,EAAaC,GAAwBnvrB,EAAc06qB,GACvDrk9B,EAASqT,MAAQlmD,GAAK0rgC,EAAY,KAAMv//B,EAAMmwH,EAAYw73B,EAC5D,CACF,EAEA,IAAIsT,EAAuB,SAAU3zpB,EAAK56O,GACxC46O,GAAY96W,KAAK85J,QACjB55B,EAAMA,GAAO,GAKb,IAJA,IAAI1wH,EAAOxP,KAAKykJ,MACZ2p3B,EAAUpugC,KAAKqugC,SACfls9B,EAASis9B,EAAUtzpB,EAEdl6W,EAAI,EAAGA,EAAIwtgC,EAASxtgC,IAC3Bs/H,EAAIt/H,GAAK4O,EAAK2yC,EAASvhD,GAGzB,OAAOs/H,CACT,EAEI0u4B,EAA2B,SAAUpo+B,EAAOC,EAAKxS,EAASs2I,GAI5D,IAHA,IAAI/6J,EAAOxP,KAAKykJ,MACZ2p3B,EAAUpugC,KAAKqugC,SAEV12qB,EAAM,EAAGA,EAAMy2qB,EAASz2qB,IAAO,CAOtC,IANA,IAAIs3qB,EAAY1k2B,EAAOotL,GACnB9pV,EAAsB,MAAhBohgC,EAAU,GAAalv8B,IAAWkv8B,EAAU,GAClDthgC,EAAsB,MAAhBshgC,EAAU,IAAa,IAAYA,EAAU,GACnD1l9B,EAAQ9iB,EAAMD,EACdi4L,EAAMxqM,EAAQ0jU,GAET/2V,EAAI,EAAGA,EAAI2oD,EAAO3oD,IAAK,CAE9B,IAAI88K,EAAMluK,EAAK5O,EAAIwtgC,EAAUz2qB,GAC7Bl5H,EAAIj4L,EAAQ5lC,GAAK88K,EACjBA,EAAM7vK,IAAQA,EAAM6vK,GACpBA,EAAM/vK,IAAQA,EAAM+vK,EACtB,CAEAux1B,EAAU,GAAKphgC,EACfohgC,EAAU,GAAKthgC,CACjB,CACF,EAEI+ggC,EAAqB,WACvB,OAAO1ugC,KAAKykJ,MAAQzkJ,KAAKykJ,MAAMpkJ,OAASL,KAAKqugC,SAAW,CAC1D,EA6CA,SAASa,EAAiB15qB,GACxB,IAAK,IAAI50V,EAAI,EAAGA,EAAI40V,EAAQn1V,OAAQO,IAClCZ,KAAKykJ,MAAM5iJ,KAAK2zV,EAAQ50V,GAE5B,EA/CmB+1B,EAAK,CAAC,GAAMwi+B,GAA2B,IAAMI,IAA2B,CACzFgV,MAAM,EACND,WAAYY,GACXv4+B,EAAGwi+B,GAA2B,IAAMK,IAAwB,CAC7D+U,MAAM,EACND,WAAY,WACV,MAAM,IAAI9m/B,MAAM,4DAClB,GACCmP,EAAG,IAA6B,CACjC43+B,MAAM,EACND,WAAYY,GACXv4+B,EAAGyi+B,IAA+B,CACnCmV,MAAM,EACND,WAAY,SAAU94qB,GACpB,IAAIhmV,EAAOxP,KAAKykJ,MAChB,EAAK+wM,GAAS,SAAUijK,EAAQ5ze,GAG9B,IAFA,IAAIsq/B,EAAS3//B,EAAKqV,KAASrV,EAAKqV,GAAO,IAE9BjkB,EAAI,EAAGA,GAAK63f,GAAU,IAAIp4f,OAAQO,IACzCuugC,EAAOttgC,KAAK42f,EAAO73f,GAEvB,GACF,GACC+1B,EAAG,IAA0B,CAC9B23+B,WAAYY,GACXv4+B,EAAG0i+B,IAA6B,CACjCj02B,YAAY,EACZmp3B,MAAM,EACND,WAAY,SAAU94qB,GAKpBx1V,KAAKykJ,MAAQ+wM,CACf,EAEAwzlB,MAAO,WAELhp7B,KAAK85J,SAAW95J,KAAKupD,QACrBvpD,KAAKykJ,MAAQ,IACf,GAxCFmo3B,GAyCGj2+B,CAOL,CAtHoC,GAwH7Bu3+B,CACT,CAxKA,GA4KIkB,GAAgB,SAAUC,EAAS1v4B,EAAYw73B,EAASrgpB,GAC1D,OAAOu0pB,EAAQv0pB,EACjB,EAEIw0pB,KAA0B34+B,GAAK,CAAC,GAAMwi+B,GAA2B,IAAMI,IAA2B,SAAU8V,EAAS1v4B,EAAYw73B,EAASrgpB,GAC5I,OAAOu0pB,EAAQv0pB,EAAMn7O,EACvB,EAAGhpG,GAAGwi+B,GAA2B,IAAMK,IAAwB,SAAU6V,EAAS1v4B,EAAYw73B,EAASrgpB,EAAK56O,GAC1G46O,GAAOn7O,EAIP,IAHA,IAAIv+E,EAAO8+E,GAAO,GACd1wH,EAAO6//B,EAEFzugC,EAAI,EAAGA,EAAI4O,EAAKnP,OAAQO,IAAK,CACpC,IAAIoiI,EAAMxzH,EAAK5O,GACfwgD,EAAKxgD,GAAKoiI,EAAMA,EAAI83O,GAAO,IAC7B,CAEA,OAAO15T,CACT,EAAGzqB,GAAG,IAA6By4+B,GAAez4+B,GAAGyi+B,IAA+B,SAAUiW,EAAS1v4B,EAAYw73B,EAASrgpB,EAAK56O,GAG/H,IAFA,IAAI9+E,EAAO8+E,GAAO,GAETt/H,EAAI,EAAGA,EAAIu6/B,EAAQ96/B,OAAQO,IAAK,CASvC,IAAI2zI,EAAM863B,EARIlU,EAAQv6/B,GAAG8J,MASzB02C,EAAKxgD,GAAK2zI,EAAMA,EAAIumO,GAAO,IAC7B,CAEA,OAAO15T,CACT,EAAGzqB,GAAG,IAA0By4+B,GAAez4+B,IACxC,SAASm4+B,GAAuBjvrB,EAAc06qB,GAOnD,OANa+U,GAAuBd,GAAgB3urB,EAAc06qB,GAOpE,CAEA,IAAIgV,GAAc,SAAUF,EAAS1v4B,EAAYw73B,GAC/C,OAAOkU,EAAQhvgC,MACjB,EAEImvgC,KAA2Bhi9B,GAAK,CAAC,GAAM2r8B,GAA2B,IAAMI,IAA2B,SAAU8V,EAAS1v4B,EAAYw73B,GACpI,OAAOt4/B,KAAK8K,IAAI,EAAG0hgC,EAAQhvgC,OAASs/H,EACtC,EAAGnyE,GAAG2r8B,GAA2B,IAAMK,IAAwB,SAAU6V,EAAS1v4B,EAAYw73B,GAC5F,IAAIn43B,EAAMqs4B,EAAQ,GAClB,OAAOrs4B,EAAMngI,KAAK8K,IAAI,EAAGq1H,EAAI3iI,OAASs/H,GAAc,CACtD,EAAGnyE,GAAG,IAA6B+h9B,GAAa/h9B,GAAG4r8B,IAA+B,SAAUiW,EAAS1v4B,EAAYw73B,GAS/G,IAAI5m3B,EAAM863B,EARIlU,EAAQ,GAAGzw/B,MASzB,OAAO6pI,EAAMA,EAAIl0I,OAAS,CAC5B,EAAGmtD,GAAG,IAA0B+h9B,GAAa/h9B,IACtC,SAASwh9B,GAAwBnvrB,EAAc06qB,GAOpD,OANaiV,GAAwBhB,GAAgB3urB,EAAc06qB,GAOrE,CAEA,IAAIkV,GAAoB,SAAUv/W,EAAUksW,EAAU5i9B,GACpD,OAAO02mB,EAASksW,EAClB,EAEIsT,KAA2Brq/B,GAAK,CAAC,GAAM8z+B,IAA4BsW,GAAmBpq/B,GAAG,IAA6B,SAAU6qoB,EAAUksW,EAAU5i9B,GACtJ,OAAO02mB,EAAS12mB,EAClB,EAAGn0B,GAAG+z+B,IAA+BqW,GAAmBpq/B,GAAG,IAA0B,SAAU6qoB,EAAUksW,EAAU5i9B,GAGjH,IAAIr4C,EAAQ4/9B,GAAiB7wU,GAC7B,OAAS/upB,aAAiB1B,MAAiB0B,EAAMi7/B,GAAdj7/B,CACrC,EAAGkkB,GAAGg0+B,IAA6BoW,GAAmBpq/B,IAC/C,SAASsq/B,GAAwB9vrB,GAOtC,OANa6vrB,GAAwB7vrB,EAOvC,CAEA,SAAS2urB,GAAgB3urB,EAAc06qB,GACrC,OAAO16qB,IAAiBs5qB,GAA2Bt5qB,EAAe,IAAM06qB,EAAiB16qB,CAC3F,CASO,SAAS+vrB,GAAiBpggC,EAAM61J,EAEvCsyL,GACE,GAAKnoV,EAAL,CAKA,IAAI0gpB,EAAW1gpB,EAAKqggC,eAAexq2B,GAEnC,GAAgB,MAAZ6qf,EAAJ,CAIA,IAAInhd,EAAQv/L,EAAKsggC,WACbjwrB,EAAe9wI,EAAM08I,YAAY5L,aAErC,GAAW,MAAP8X,EAAa,CACf,IAAIykqB,EAAW5s/B,EAAKuggC,kBAAkBp4qB,GAClCn+S,EAAWu1J,EAAMih0B,qBAAqB5T,GAC1C,OAAOuT,GAAwB9vrB,EAAxB8vrB,CAAsCz/W,EAAUksW,EAAU5i9B,EACnE,CACE,IAAIh2B,EAAS0soB,EAMb,OAJIrwU,IAAiB,KACnBr8T,EAASu98B,GAAiB7wU,IAGrB1soB,CAhBT,CAPA,CAyBF,CCrUA,IAAIys/B,GAAsB,cAEtBC,GAEJ,WACE,SAASA,IAAmB,CA+H5B,OAzHAA,EAAgBxwgC,UAAUywgC,cAAgB,SAAU9q2B,EAAW2pG,GAC7D,IAAIx/P,EAAOxP,KAAKwkI,QAAQwqI,GACpBr0M,EAAW36D,KAAKowgC,YAAY/q2B,EAAW2pG,GACvCqhwB,EAAe7ggC,EAAK88/B,YAAYjn2B,GAChC36J,EAAO8E,EAAKw4U,QAAQ3iL,GACpBir2B,EAAU9ggC,EAAKqggC,eAAexq2B,GAC9BhxJ,EAAQ7E,EAAK+ggC,cAAclr2B,EAAW,SACtC93C,EAAQl5G,GAASA,EAAM7E,EAAK+ggC,cAAclr2B,EAAW,aAAe,QACpEizM,EAAcjkW,GAASA,EAAM+owB,OAC7B0mN,EAAW9j+B,KAAK8j+B,SAChBke,EAAwB,WAAble,EACX0sC,EAAahhgC,EAAKghgC,YAAchhgC,EAAKghgC,WAAWrtgC,MACpD,MAAO,CACL+4M,cAAe4nxB,EACf2sC,iBAAkBzwgC,KAAK+m+B,QACvB57sB,eAAgBnrR,KAAKmrR,eACrBsxjB,WAAYulK,EAAWhi/B,KAAK+m+B,QAAU,KACtCmW,YAAal9+B,KAAKk9+B,YAClBngO,SAAUilO,EAAWhi/B,KAAKurB,GAAK,KAC/B+v+B,WAAYtZ,EAAWhi/B,KAAK0K,KAAO,KACnCA,KAAMA,EACN26J,UAAWgr2B,EACX7ggC,KAAM8ggC,EACNthwB,SAAUA,EACV7tQ,MAAOw5D,EACP4yD,MAAOA,EACP+qP,YAAaA,EACbo4pB,eAAgBF,EAAaA,EAAWG,eAAiB,KACzD9o/B,OAAQ2o/B,EAAaA,EAAW3o/B,OAAS,KAEzC8q+B,MAAO,CAAC,aAAc,OAAQ,SAElC,EAaAud,EAAgBxwgC,UAAUgo/B,kBAAoB,SAAUri1B,EAAW5/I,EAAQupP,EAAUw4uB,EAAepic,EAAWwrd,GAC7Gnr/B,EAASA,GAAU,SACnB,IAAIjW,EAAOxP,KAAKwkI,QAAQwqI,GACpB3mO,EAASroC,KAAKmwgC,cAAc9q2B,EAAW2pG,GAgB3C,OAdI4hwB,IACFvo+B,EAAOlnC,MAAQyvgC,EAAaxpB,mBAGT,MAAjBI,GAAyB,GAAen/8B,EAAOlnC,SACjDknC,EAAOlnC,MAAQknC,EAAOlnC,MAAMqm/B,IAGzBpic,IAGHA,EAFgB51iB,EAAKqhgC,aAAaxr2B,GAEZliK,IAAe,WAAXsiB,EAAsB,CAAC,QAAS,aAAe,CAACA,EAAQ,QAAS,eAGzF,GAAkB2/hB,IACpB/8gB,EAAO5iB,OAASA,EAChB4iB,EAAOyo+B,eAAiBtpB,EACjBpic,EAAU/8gB,IACR,GAAgB+8gB,GACfmtc,GAAUntc,EAAW/8gB,GAGpB57B,QAAQwjgC,IAAqB,SAAUj1+B,EAAQ+1+B,GACxD,IAAIly4B,EAAMky4B,EAAO1wgC,OACb2wgC,EAAWD,EAEY,MAAvBC,EAASn4/B,OAAO,IAA2C,MAA7Bm4/B,EAASn4/B,OAAOgmH,EAAM,KACtDmy4B,GAAYA,EAASjvgC,MAAM,EAAG88H,EAAM,IAStC,IAAI6+C,EAAMky1B,GAAiBpggC,EAAM61J,EAAW2r2B,GAE5C,GAAIJ,GAAgB,GAAeA,EAAaxpB,mBAAoB,CAClE,IAAIgV,EAAW5s/B,EAAKuggC,kBAAkBiB,GAElC5U,GAAY,IACd1+0B,EAAMkz1B,EAAaxpB,kBAAkBgV,GAEzC,CAEA,OAAc,MAAP1+0B,EAAcA,EAAM,GAAK,EAClC,SA7BK,CA+BT,EAMAwy1B,EAAgBxwgC,UAAU0wgC,YAAc,SAAUt1pB,EAAK9rG,GACrD,OAAO4gwB,GAAiB5vgC,KAAKwkI,QAAQwqI,GAAW8rG,EAClD,EASAo1pB,EAAgBxwgC,UAAUu3X,cAAgB,SAAU5xN,EAAW4r2B,EAAgBjiwB,GAG/E,EAEOkhwB,CACT,CAjIA,GAmJO,SAASgB,GAA6B1t/B,GAC3C,IAAI2t/B,EAEAC,EAqBJ,OAnBI,GAAgB5t/B,GACdA,EAAOjX,OACT6kgC,EAAiB5t/B,GAcnB2t/B,EAAa3t/B,EAGR,CACL4M,KAAM+g/B,EAENE,KAAMD,EAEV,CCjLO,SAAStyZ,GAAWl+S,GACzB,OAAO,IAAI0wsB,GAAK1wsB,EAClB,CAEA,IAAI0wsB,GAEJ,WACE,SAASA,EAAK1wsB,GACZA,EAASA,GAAU,CAAC,EACpB5gU,KAAKuxgC,OAAS3wsB,EAAO3/P,MACrBjhE,KAAKwxgC,MAAQ5wsB,EAAO6wsB,KACpBzxgC,KAAKu3Y,OAAS32E,EAAOr3Q,MACrBvpD,KAAK0xgC,SAAW9wsB,EAAO+wsB,QACvB3xgC,KAAKowL,QAAS,CAChB,CA+MA,OArMAkh1B,EAAK5xgC,UAAUkygC,QAAU,SAAUC,GACjC,IAcIC,EAdAC,EAAS/xgC,KAAKgygC,UACd/7e,EAAO47e,GAAeA,EAAY57e,KAItC,GAAIj2hB,KAAKowL,QAAU2h1B,EAAQ,CACzB,IAAI5k+B,EAAUntC,KAAKmtC,QACnBA,EAAQ39B,KAAO29B,EAAQ8k+B,WAAaF,EAAO5k+B,QAAQ8k+B,UACrD,CAEIjygC,KAAKkygC,aACPlygC,KAAKkygC,WAAWC,YAAcnygC,MAK5BA,KAAKwxgC,QAAUv7e,IACjB67e,EAAa9xgC,KAAKwxgC,MAAMxxgC,KAAKmtC,UAK/B,IAeIil+B,EAfAC,EAAYC,EAAetygC,KAAKuygC,QAChCC,EAAmBxygC,KAAKyygC,eAAiB,EACzCC,EAAQJ,EAAeT,GAAeA,EAAYa,OAClDC,EAAed,GAAeA,EAAYc,cAAgB,EAM9D,SAASL,EAAe501B,GAGtB,QAFEA,GAAO,KAAOA,EAAM,GAEfA,CACT,CARI201B,IAAcK,GAASF,IAAqBG,IAC9Cb,EAAa,UAWX9xgC,KAAKowL,QAAyB,UAAf0h1B,KACjB9xgC,KAAKowL,QAAS,EACdgi1B,EAAqBpygC,KAAK4ygC,SAAS38e,IAGrCj2hB,KAAKuygC,OAASG,EACd1ygC,KAAKyygC,cAAgBE,EACrB,IAAIjkqB,EAAOmjqB,GAAeA,EAAYnjqB,KAmBtC,GAZE1uW,KAAK6ygC,QALHd,EAKaA,EAAOe,cAOL9ygC,KAAKu3Y,OAASv3Y,KAAKu3Y,OAAOv3Y,KAAKmtC,SAAW4yB,IAKzD//D,KAAK+ygC,UAAW,CAClB,IAAIvs+B,EAAQxmC,KAAKgzgC,UACbvs+B,EAAM5jC,KAAKgL,IAAY,MAAR6gW,EAAe1uW,KAAKgzgC,UAAYtkqB,EAAO3uS,IAAU//D,KAAK6ygC,SAEzE,IAAK58e,IAASm8e,GAAsB5r+B,EAAQC,GAAM,CAChD,IAAIws+B,EAAWjzgC,KAAK+ygC,UAEpB,GAAIphgC,GAAQshgC,GACV,IAAK,IAAIrygC,EAAI,EAAGA,EAAIqygC,EAAS5ygC,OAAQO,IACnCZ,KAAKkzgC,YAAYD,EAASrygC,GAAI4lC,EAAOC,EAAKis+B,EAAOC,QAGnD3ygC,KAAKkzgC,YAAYD,EAAUzs+B,EAAOC,EAAKis+B,EAAOC,EAElD,CAEA3ygC,KAAKgzgC,UAAYvs+B,EAGjB,IAAI0s+B,EAAwC,MAAzBnzgC,KAAKozgC,iBAA2BpzgC,KAAKozgC,iBAAmB3s+B,EAO3EzmC,KAAK8ygC,cAAgBK,CACvB,MAIEnzgC,KAAKgzgC,UAAYhzgC,KAAK8ygC,cAAyC,MAAzB9ygC,KAAKozgC,iBAA2BpzgC,KAAKozgC,iBAAmBpzgC,KAAK6ygC,QAGrG,OAAO7ygC,KAAKqzgC,YACd,EAEA/B,EAAK5xgC,UAAUomwB,MAAQ,WACrB9lwB,KAAKowL,QAAS,EACdpwL,KAAK0xgC,UAAY1xgC,KAAK0xgC,SAAS1xgC,KAAKmtC,QACtC,EAEAmk+B,EAAK5xgC,UAAUwzgC,YAAc,SAAUD,EAAUzs+B,EAAOC,EAAKis+B,EAAOC,GAClEhxgC,GAASs/D,MAAMz6B,EAAOC,EAAKis+B,EAAOC,GAClC3ygC,KAAKszgC,iBAAmBL,EAExBjzgC,KAAKszgC,iBAAiB,CACpB9s+B,MAAOA,EACPC,IAAKA,EACL8iB,MAAO9iB,EAAMD,EACbzlC,KAAMY,GAASZ,MACdf,KAAKmtC,QACV,EAEAmk+B,EAAK5xgC,UAAUkzgC,SAAW,SAAU38e,GAGlC,IAAIg9e,EACAb,EAHJpygC,KAAKgzgC,UAAYhzgC,KAAK8ygC,cAAgB9ygC,KAAK6ygC,QAAU,EACrD7ygC,KAAKozgC,iBAAmB,MAInBn9e,GAAQj2hB,KAAKuxgC,UAChB0B,EAAWjzgC,KAAKuxgC,OAAOvxgC,KAAKmtC,WAEZ8l+B,EAASA,WACvBb,EAAqBa,EAASb,mBAC9Ba,EAAWA,EAASA,UAIlBthgC,GAAQshgC,KAAcA,EAAS5ygC,SACjC4ygC,EAAW,OAIfjzgC,KAAK+ygC,UAAYE,EACjBjzgC,KAAKuygC,OAASvygC,KAAKyygC,cAAgB,KACnC,IAAIc,EAAavzgC,KAAKwzgC,YAEtB,OADAD,GAAcA,EAAWztQ,QAClBssQ,CACT,EAEAd,EAAK5xgC,UAAU2zgC,WAAa,WAC1B,OAAOrzgC,KAAK+ygC,WAAa/ygC,KAAKgzgC,UAAYhzgC,KAAK6ygC,OACjD,EAOAvB,EAAK5xgC,UAAUkmQ,KAAO,SAAU6twB,IAM1BzzgC,KAAKwzgC,cAAgBC,GAAYzzgC,KAAKowL,UACxCpwL,KAAKwzgC,YAAcC,EACnBA,EAASzB,UAAYhygC,KACrByzgC,EAAS3tQ,QAEb,EAEAwrQ,EAAK5xgC,UAAU2l8B,QAAU,WACnBrl8B,KAAK0zgC,YAIT1zgC,KAAKgygC,YAAchygC,KAAKgygC,UAAUwB,YAAc,MAChDxzgC,KAAKwzgC,cAAgBxzgC,KAAKwzgC,YAAYxB,UAAY,MAClDhygC,KAAKowL,QAAS,EACdpwL,KAAK0zgC,WAAY,EACnB,EAEApC,EAAK5xgC,UAAUi0gC,YAAc,WAC3B,OAAO3zgC,KAAKgygC,SACd,EAEAV,EAAK5xgC,UAAUk0gC,cAAgB,WAC7B,OAAO5zgC,KAAKwzgC,WACd,EAEAlC,EAAK5xgC,UAAUm0gC,aAAe,SAAUpt+B,GAMtCzmC,KAAK8ygC,cAAgB9ygC,KAAKozgC,iBAAmB3s+B,CAC/C,EAEO6q+B,CACT,CAxNA,GA4NI3vgC,GAAW,WACb,IAAI8kC,EACA1G,EACA2y+B,EACAC,EACAmB,EACAxogC,EAAK,CACP21D,MAAO,SAAUngE,EAAG3B,EAAG40gC,EAAOC,GAC5Bj0+B,EAAUj/B,EACV2lC,EAAMtnC,EACNuzgC,EAAQqB,EACRpB,EAAeqB,EACfF,EAAWjxgC,KAAKuK,KAAKulgC,EAAeD,GACpCpngC,EAAGvK,KAAO2xgC,EAAQ,GAAKC,EAAe,EAAIsB,EAAUC,CACtD,GAEF,OAAO5ogC,EAEP,SAAS4ogC,IACP,OAAOn0+B,EAAU0G,EAAM1G,IAAY,IACrC,CAEA,SAASk0+B,IACP,IAAI5u2B,EAAYtlI,EAAU+z+B,EAAWpB,EAAQ7vgC,KAAKuK,KAAK2yB,EAAU+z+B,GAC7Dtw/B,EAASuc,GAAW0G,EAAM,KAAO4+H,EAAYst2B,EAAett2B,EAE9DtlI,EAEF,OADAA,IACOvc,CACT,CACF,CA9Be,GCvIR,SAAS2w/B,GAAWnlsB,GACzB,MAAM,IAAIxnT,MAAMwnT,EAClB,CCxFO,SAASolsB,GAAejzgC,EAC/Bi/hB,GAEE,IAAIk8d,EAAUl8d,GAAOA,EAAI7zhB,KAEzB,MAAgB,YAAZ+v/B,EAEKn7/B,GAGO,SAAZm7/B,GACAh58B,GAASniD,IAAmB,MAATA,GAA2B,MAAVA,IACtCA,GAASwh8B,GAAUxh8B,IAQL,MAATA,GAA2B,KAAVA,EAAey6vB,KAEpCz6vB,EACL,CDhCoC,oBAAZkmB,SACrBA,QAAQC,MAAQD,QAAQgD,ICiC3B,IAAIgq/B,GAAiBnpE,GAAc,CACjC,OAAU,SAAUxtxB,GAIlB,OAAOrT,WAAWqT,EACpB,EACA,KAAQ,SAAUA,GAEhB,OAAQilxB,GAAUjlxB,EACpB,EACA,KAAQ,SAAUA,GAChB,OAAO1iH,GAAS0iH,GAAOrrJ,GAAKqrJ,GAAOA,CACrC,IAEK,SAAS421B,GAAkB/ngC,GAChC,OAAO8ngC,GAAelxgC,IAAIoJ,EAC5B,CACA,IAAIgogC,GAA0B,CAC5B3ogC,GAAI,SAAU4ogC,EAAMC,GAClB,OAAOD,EAAOC,CAChB,EACAjkzB,IAAK,SAAUgkzB,EAAMC,GACnB,OAAOD,GAAQC,CACjB,EACApngC,GAAI,SAAUmngC,EAAMC,GAClB,OAAOD,EAAOC,CAChB,EACA9jzB,IAAK,SAAU6jzB,EAAMC,GACnB,OAAOD,GAAQC,CACjB,GAGEC,GAEJ,WACE,SAASA,EAAsBrhmB,EAAIohmB,GAC5Bnx9B,GAASmx9B,IAOZN,GANa,IASfn0gC,KAAK20gC,MAAQJ,GAAwBlhmB,GACrCrza,KAAK40gC,WAAa10C,GAAgBu0C,EACpC,CAQA,OALAC,EAAsBh1gC,UAAU40gB,SAAW,SAAUkggB,GAEnD,OAAOlx9B,GAASkx9B,GAAQx0gC,KAAK20gC,MAAMH,EAAMx0gC,KAAK40gC,YAAc50gC,KAAK20gC,MAAMz0C,GAAgBs0C,GAAOx0gC,KAAK40gC,WACrG,EAEOF,CACT,CAvBA,GAyBIG,GAEJ,WAOE,SAASA,EAAoB5h4B,EAAO6h4B,GAClC,IAAIC,EAAmB,SAAV9h4B,EACbjzI,KAAKg1gC,UAAYD,EAAS,GAAK,EAEX,MAAhBD,IACFA,EAAeC,EAAS,MAAQ,OAGlC/0gC,KAAKi1gC,cAAiC,QAAjBH,GAAyB,IAAY/08B,GAC5D,CAmCA,OA/BA808B,EAAoBn1gC,UAAU40gB,SAAW,SAAUkggB,EAAMC,GAEvD,IAAIS,EAAY5x9B,GAASkx9B,GAAQA,EAAOt0C,GAAgBs0C,GACpDW,EAAY7x9B,GAASmx9B,GAAQA,EAAOv0C,GAAgBu0C,GACpDW,EAAiB9o+B,MAAM4o+B,GACvBG,EAAiB/o+B,MAAM6o+B,GAU3B,GARIC,IACFF,EAAYl1gC,KAAKi1gC,eAGfI,IACFF,EAAYn1gC,KAAKi1gC,eAGfG,GAAkBC,EAAgB,CACpC,IAAIC,EAAYt68B,GAASw58B,GACrBe,EAAYv68B,GAASy58B,GAErBa,IACFJ,EAAYK,EAAYf,EAAO,GAG7Be,IACFJ,EAAYG,EAAYb,EAAO,EAEnC,CAEA,OAAOS,EAAYC,EAAYn1gC,KAAKg1gC,UAAYE,EAAYC,GAAan1gC,KAAKg1gC,UAAY,CAC5F,EAEOH,CACT,CApDA,GAwDIW,GAEJ,WACE,SAASA,EAAyBC,EAAMhB,GACtCz0gC,KAAK01gC,MAAQjB,EACbz0gC,KAAK21gC,MAAQF,EACbz1gC,KAAK41gC,mBAAqBnB,EAC1Bz0gC,KAAK40gC,WAAa10C,GAAgBu0C,EACpC,CAiBA,OAdAe,EAAyB91gC,UAAU40gB,SAAW,SAAUkggB,GACtD,IAAIqB,EAAWrB,IAASx0gC,KAAK01gC,MAE7B,IAAKG,EAAU,CACb,IAAIC,SAAoBtB,EAEpBsB,IAAe91gC,KAAK41gC,aAA+B,WAAfE,GAAgD,WAArB91gC,KAAK41gC,cACtEC,EAAW31C,GAAgBs0C,KAAUx0gC,KAAK40gC,WAE9C,CAEA,OAAO50gC,KAAK21gC,MAAQE,GAAYA,CAClC,EAEOL,CACT,CAxBA,GAoEO,SAASO,GAAuB1imB,EAAIohmB,GACzC,MAAc,OAAPphmB,GAAsB,OAAPA,EAAc,IAAImimB,GAAgC,OAAPnimB,EAAaohmB,GAAQvsgC,GAAOqsgC,GAAyBlhmB,GAAM,IAAIqhmB,GAAsBrhmB,EAAIohmB,GAAQ,IACpK,CCvNA,IAAIuB,GAEJ,WACE,SAASA,IAAkB,CA4D3B,OA1DAA,EAAet2gC,UAAUu2gC,WAAa,WAEpC,MAAM,IAAIzu/B,MAAM,gBAClB,EAEAwu/B,EAAet2gC,UAAUmwgC,eAAiB,SAAUxq2B,GAElD,MAAM,IAAI79I,MAAM,gBAClB,EAEAwu/B,EAAet2gC,UAAUw2gC,aAAe,WAExC,EAMAF,EAAet2gC,UAAU4l+B,iBAAmB,SAAU3toB,GAEtD,EAYAq+qB,EAAet2gC,UAAUy2gC,sBAAwB,WAEjD,EAEAH,EAAet2gC,UAAU6pD,MAAQ,WAEjC,EAQAys9B,EAAet2gC,UAAU02gC,cAAgB,SAAU/w2B,EAAW+21B,GAE9D,EAEA4Z,EAAet2gC,UAAU22gC,sBAAwB,SAAUnmX,EAAUksW,GAErE,EAEA4Z,EAAet2gC,UAAU42gC,aAAe,SAAUC,EAAQC,GACxD,OAAOpC,GAAemC,EAAQC,EAChC,EAEOR,CACT,CA9DA,GA4KA,SAASC,GAAWQ,GAalB,OAVKC,GAFcD,EAAS52rB,eAS1Bs0rB,GANa,IASRsC,EAASjngC,IAClB,CAEA,SAAS0mgC,GAAaO,GACpB,IAAI52rB,EAAe42rB,EAAS52rB,aACxBrwU,EAAOingC,EAASjngC,KAYpB,GAVKkngC,GAAwB72rB,IAO3Bs0rB,GANa,IASXt0rB,IAAiBs5qB,GAA0B,CAG7C,IAFA,IAAI31+B,EAAS,GAEJ5iB,EAAI,EAAGi+H,EAAMrvH,EAAKnP,OAAQO,EAAIi+H,EAAKj+H,IAE1C4iB,EAAO3hB,KAAK2N,EAAK5O,GAAGmB,SAGtB,OAAOyhB,CACT,CAAO,GAAIq8T,IAAiB,GAA2B,CAGrD,IAFIr8T,EAAS,GAEJ5iB,EAAI,EAAGi+H,EAAMrvH,EAAKnP,OAAQO,EAAIi+H,EAAKj+H,IAE1C4iB,EAAO3hB,KAAKwnZ,EAAO,CAAC,EAAG75Y,EAAK5O,KAG9B,OAAO4iB,CACT,CACF,CAEA,SAAS8h9B,GAAiB5s0B,EAAYi+2B,EAAYh/qB,GAChD,GAAW,MAAPA,EAKJ,OAAIr0S,GAASq0S,KACTrrT,MAAMqrT,KAASzvV,GAAOyugC,EAAYh/qB,GAC7Bj/L,EAAWi/L,GACTzvV,GAAOyugC,EAAYh/qB,GACrBg/qB,EAAWh/qB,QADb,CAGT,CAEA,SAASw+qB,GAAsBz92B,GAC7B,OAAOnoI,EAAMmoI,EACf,CAEA,IAAIk+2B,GAAuB1rE,KA8D3B,SAAS2rE,GAAyBC,EAAaC,EAAcC,EAC7DC,GAGOF,EAAa12gC,QAKhB8zgC,GAPW,IAUR,GAAS2C,IAKZ3C,GAfW,IAkBb,IAAI+C,EAAYJ,EAAYvqgC,KACxB4qgC,EAAoBP,GAAqBzzgC,IAAI+zgC,GAE5CC,GAKHhD,GA1BW,IA8Bb,IAAIiD,EAAkB/n/B,EAAI0n/B,GAAc,SAAUM,GAChD,OA9QJ,SAA8BC,EAAgBH,GAC5C,IAAII,EAAY,IAAIvB,GAChBxmgC,EAAO8ngC,EAAe9ngC,KACtBqwU,EAAe03rB,EAAU13rB,aAAey3rB,EAAez3rB,aACvD23rB,EAAoBF,EAAe334B,WAGnC234B,EAAe/c,iBAAmBhB,IAQpC4a,GAVW,IAmBb,IAAIz72B,EAAa,GACbi+2B,EAAa,CAAC,EACdxb,EAAUmc,EAAe5b,iBAE7B,GAAIP,EACF,EAAKA,GAAS,SAAUsc,EAAQ38pB,GAC9B,IAAIpwW,EAAO+sgC,EAAO/sgC,KACdgtgC,EAAY,CACd16/B,MAAO89V,EACPpwW,KAAMA,EACN09J,YAAaqv2B,EAAOrv2B,aAEtB1P,EAAW72J,KAAK61gC,GAGJ,MAARhtgC,IAMExC,GAAOyugC,EAAYjsgC,IAKrBypgC,GAPa,IAUfwC,EAAWjsgC,GAAQgtgC,EAEvB,SAIE,IAAK,IAAI92gC,EAAI,EAAGA,EAAI02gC,EAAevK,wBAA8BnsgC,IAG/D83J,EAAW72J,KAAK,CACdmb,MAAOpc,IAMf,IAAIiugC,EAAgBC,GAAuBjvrB,EAAc05qB,IAErD4d,EAAkBQ,cACpBJ,EAAU1H,eAAiB,SAAUxq2B,GACnC,OAAOwp2B,EAAcr//B,EAAMgogC,EAAmB9+2B,EAAY2M,EAC5D,EAEAky2B,EAAUtB,WAAa5ygC,GAAK4ygC,GAAY,KAAMqB,IAGhDC,EAAUrB,aAAe7ygC,GAAK6ygC,GAAc,KAAMoB,GAClD,IAAIvI,EAAaC,GAAwBnvrB,EAAc05qB,IACvDge,EAAUhu9B,MAAQlmD,GAAK0rgC,EAAY,KAAMv//B,EAAMgogC,EAAmB9+2B,GAClE,IAAIk/2B,EAAiBjI,GAAwB9vrB,GAE7C03rB,EAAUnB,cAAgB,SAAU/w2B,EAAW+21B,GAC7C,IAAI0R,EAAUe,EAAcr//B,EAAMgogC,EAAmB9+2B,EAAY2M,GACjE,OAAOgx2B,EAAsBvI,EAAS1R,EACxC,EAEA,IAAIia,EAAwBkB,EAAUlB,sBAAwB,SAAUnmX,EAAUksW,GAChF,GAAgB,MAAZlsW,EAAJ,CAIA,IAAIunX,EAAS/+2B,EAAW0j2B,GAExB,OAAIqb,EACKG,EAAe1nX,EAAUksW,EAAUqb,EAAO/sgC,WADnD,CAJA,CAOF,EAIA,OAFA6sgC,EAAUjyC,iBAAmBji+B,GAAKii+B,GAAkB,KAAM5s0B,EAAYi+2B,GACtEY,EAAUpB,sBAAwB9ygC,GAAK8ygC,GAAuB,KAAMz92B,GAC7D6+2B,CACT,CAsKWM,CAAqBR,EAAUF,EACxC,IAiBA,OAAO9n/B,EAhBUox8B,GAAiB02C,EAAkBv04B,UAAU,CAC5D6z4B,SAAUW,EAAgB,GAC1BU,aAAcV,EACdt7sB,OAAQvrS,EAAMum/B,EAAYh7sB,YAaL,SAAUt4S,EAAQu0/B,GACvC,IA4BIC,EA1BC,GAASx0/B,IAKZ2w/B,GAPW,IAUR3w/B,EAAOhU,MAKV2kgC,GAfW,IAoBRuC,GAFcrJ,GAAmB7p/B,EAAOhU,QAO3C2kgC,GAzBW,IA6Bb,IAAI8D,EAAgBlB,EAAa,GAwBjC,GAAIkB,GAAiC,IAAhBF,IAEjBv0/B,EAAOk1I,WAAY,CACrB,IAAI/4B,EAAas44B,EAAct44B,WAO3BA,IACFn8G,EAAOhU,KAAOyogC,EAAczogC,KAAKzN,MAAM,EAAG49H,GAAY39H,OAAOwhB,EAAOhU,OAGtEwogC,EAAsB,CACpBzd,eAAgBhB,GAChBgU,aAAc5t4B,EACd+4B,WAAYu/2B,EAAcjL,cAAct02B,WAE5C,MACEs/2B,EAAsB,CACpBzd,eAAgBhB,GAChBgU,aAAc,EACd702B,WAAYl1I,EAAOk1I,YAIvB,OAAOw02B,GAAa1p/B,EAAOhU,KAAMwogC,EAAqB,KACxD,GACF,CAEA,SAAStB,GAAwB72rB,GAC/B,OAAOA,IAAiBs5qB,IAA4Bt5qB,IAAiB,EACvE,CCpcA,IAqBIq4rB,GArBAC,GAAY,YAKLC,UAAyBr4/B,cAAgBo4/B,GAAY14gC,MAAQsgB,YAC7Ds4/B,UAAyBx4/B,cAAgBs4/B,GAAY14gC,MAAQogB,YAC7Dy4/B,UAAwBx4/B,aAAeq4/B,GAAY14gC,MAAQqgB,WAC3Dy4/B,UAA0Bt4/B,eAAiBk4/B,GAAY14gC,MAAQwgB,aAKtEu4/B,GAAY,CACd,MAASD,GACT,IAAOD,GAEP,QAAW74gC,MACX,OAAUA,MACV,KAAQ84gC,IAIV,SAASE,GAAeC,GAEtB,OAAOA,EAAW,MAAQN,GAAkBC,EAC9C,CAgBA,SAASM,GAAa5p0B,EAAO6p0B,EAAQtc,EAAS719B,EAAK29C,GACjD,IAAIy07B,EAAWL,GAAUlc,GAAW,SAEpC,GAAIl46B,EAAQ,CACV,IAAI007B,EAAW/p0B,EAAM6p0B,GACjBG,EAASD,GAAYA,EAASz4gC,OAElC,GAAM04gC,IAAWty+B,EAAM,CAIrB,IAHA,IAAIuy+B,EAAW,IAAIH,EAASpy+B,GAGnBriC,EAAI,EAAGA,EAAI20gC,EAAQ30gC,IAC1B40gC,EAAS50gC,GAAK00gC,EAAS10gC,GAGzB2qM,EAAM6p0B,GAAUI,CAClB,CACF,MACEjq0B,EAAM6p0B,GAAU,IAAIC,EAASpy+B,EAEjC,CAOA,IAAIwy+B,GAEJ,WACE,SAASA,IACPj5gC,KAAKk5gC,QAAU,GAEfl5gC,KAAKm5gC,WAAa,GAClBn5gC,KAAKo5gC,QAAU,GACfp5gC,KAAKu3Y,OAAS,EACdv3Y,KAAKq5gC,UAAY,EACjBr5gC,KAAKs5gC,kBAAoBpuE,IAC3B,CA2jCA,OArjCA+tE,EAAUv5gC,UAAUy5b,SAAW,SAAUjjZ,EAAUqj+B,EAAiBC,GAKlEx5gC,KAAKy5gC,UAAYvj+B,EAEjBl2C,KAAKk5gC,QAAU,GACfl5gC,KAAK05gC,SAAW,KAChB15gC,KAAKssgC,YAActsgC,KAAK25gC,mBACxB,IAAI9xgC,EAASquC,EAASu1S,YAClBmurB,EAAgB55gC,KAAK65gC,sBAAwB3B,GAAuBrwgC,EAAOg4U,cAE/E7/U,KAAK85gC,gBAAkBN,GAAkBI,EAEzC55gC,KAAKm5gC,WAAa,GACWlL,GAAyBpmgC,GACtD7H,KAAK+5gC,YAAc1q/B,EAAIkq/B,GAAiB,SAAU5hrB,GAOhD,MAAO,CAELprV,KAAMorV,EAAIprV,KACVitC,SAAUm+S,EAAIn+S,SAElB,IAEAx5C,KAAKg6gC,sBAAsB,EAAG9j+B,EAASqT,QACzC,EAEA0v9B,EAAUv5gC,UAAUu6gC,YAAc,WAChC,OAAOj6gC,KAAKy5gC,SACd,EAUAR,EAAUv5gC,UAAU+rV,UAAY,WAC9B,OAAOzrV,KAAKy5gC,UAAUhurB,WACxB,EAMAwtrB,EAAUv5gC,UAAUw6gC,2BAA6B,SAAU7d,EAAS9v/B,GAClE,IAAI4tgC,EAAmBn6gC,KAAKs5gC,kBACxB5g3B,EAAa14J,KAAK+5gC,YAClBK,EAAaD,EAAiBh3gC,IAAIk5/B,GAEtC,GAAkB,MAAd+d,GACF,GAAI1h3B,EAAW0h3B,GAAY7tgC,OAASA,EAClC,OAAO6tgC,OAGTA,EAAa1h3B,EAAWr4J,OAS1B,OANAq4J,EAAW0h3B,GAAc,CACvB7tgC,KAAMA,GAER4tgC,EAAiBlugC,IAAIow/B,EAAS+d,GAC9Bp6gC,KAAKk5gC,QAAQkB,GAAc,IAAI5B,GAAUjsgC,GAAQ,SAASvM,KAAKq5gC,WAC/Dr5gC,KAAKm5gC,WAAWiB,GA/HX,CAACr68B,KAAU,KAgITq68B,CACT,EAEAnB,EAAUv5gC,UAAU26gC,mBAAqB,SAAUzB,EAAQ0B,GACzD,IAAIn08B,EAAQnmE,KAAKk5gC,QAAQN,GACrBjhrB,EAAM33V,KAAK+5gC,YAAYnB,GACvB2B,EAAav6gC,KAAKm5gC,WAClBh39B,EAASw1S,EAAI6irB,eAAiB,EAC9B374B,EAAM14D,EAAM9lE,OAED,IAAX8hD,IAGFo49B,EAAW3B,GA7IR,CAAC748B,KAAU,MAkJhB,IAFA,IAAI068B,EAAeF,EAAW3B,GAErBh4gC,EAAIuhD,EAAQvhD,EAAIi+H,EAAKj+H,IAAK,CACjC,IAAI88K,EAAMv3G,EAAMvlE,GAAK05gC,EAAYI,gBAAgBv08B,EAAMvlE,IAElD0rC,MAAMoxI,KACT+81B,EAAa,GAAK53gC,KAAKgL,IAAI6vK,EAAK+81B,EAAa,IAC7CA,EAAa,GAAK53gC,KAAK8K,IAAI+vK,EAAK+81B,EAAa,IAEjD,CAEA9irB,EAAI2irB,YAAcA,EAClB3irB,EAAI6irB,cAAgB374B,EACpB84N,EAAIprV,KAAO,SACb,EAEA0sgC,EAAUv5gC,UAAUi7gC,eAAiB,SAAU/B,GAG7C,OAFc54gC,KAAK+5gC,YAAYnB,GACL0B,WAE5B,EAEArB,EAAUv5gC,UAAUswgC,qBAAuB,SAAU5T,GACnD,IAAIh78B,EAAOphD,KAAK+5gC,YAAY3d,GAC5B,OAAOh78B,GAAQA,EAAK5H,QACtB,EAMAy/9B,EAAUv5gC,UAAU4ugC,WAAa,SAAU9+/B,GAKzC,IAAI0mC,EAAWl2C,KAAKy5gC,UAChBjz+B,EAAQxmC,KAAKupD,QACjBrT,EAASo49B,WAAW9+/B,GACpB,IAAIi3B,EAAMyP,EAASqT,QAUnB,OARKrT,EAASkvG,aACZ3+G,GAAOD,GAGLA,EAAQC,GACVzmC,KAAKg6gC,sBAAsBxz+B,EAAOC,GAAK,GAGlC,CAACD,EAAOC,EACjB,EAEAwy+B,EAAUv5gC,UAAUk7gC,aAAe,SAAUl+/B,EAAQm+/B,GAQnD,IAPA,IAAIl18B,EAAS3lE,KAAKk5gC,QACdxg3B,EAAa14J,KAAK+5gC,YAClBe,EAASpi3B,EAAWr4J,OACpB06gC,EAAY/6gC,KAAKm5gC,WACjB3y+B,EAAQxmC,KAAKupD,QACb9iB,EAAMD,EAAQ3jC,KAAK8K,IAAI+O,EAAOrc,OAAQw6gC,GAAc,GAE/Cj6gC,EAAI,EAAGA,EAAIk6gC,EAAQl6gC,IAE1B+3gC,GAAahz8B,EAAQ/kE,GADjB+2V,EAAMj/L,EAAW93J,IACO2L,KAAMk6B,GAAK,GAKzC,IAFA,IAAIu0+B,EAAgB,GAEXlgqB,EAAMt0U,EAAOs0U,EAAMr0U,EAAKq0U,IAG/B,IAFA,IAAImgqB,EAAYngqB,EAAMt0U,EAEboy+B,EAAS,EAAGA,EAASkC,EAAQlC,IAAU,CAC9C,IAAIjhrB,EAAMj/L,EAAWkg3B,GACjBl71B,EAAMw61B,GAAuBgD,UAAUt7gC,KAAKI,KAAM0c,EAAOu+/B,IAAcD,EAAerjrB,EAAIn+S,SAAUyh+B,EAAWrC,GACnHjz8B,EAAOiz8B,GAAQ99pB,GAAOp9L,EACtB,IAAI+81B,EAAeM,EAAUnC,GAC7Bl71B,EAAM+81B,EAAa,KAAOA,EAAa,GAAK/81B,GAC5CA,EAAM+81B,EAAa,KAAOA,EAAa,GAAK/81B,EAC9C,CAIF,OADA19K,KAAKq5gC,UAAYr5gC,KAAKu3Y,OAAS9wW,EACxB,CACLD,MAAOA,EACPC,IAAKA,EAET,EAEAwy+B,EAAUv5gC,UAAUs6gC,sBAAwB,SAAUxz+B,EAAOC,EAAK29C,GAUhE,IATA,IAAIluC,EAAWl2C,KAAKy5gC,UAChB9z8B,EAAS3lE,KAAKk5gC,QACdxg3B,EAAa14J,KAAK+5gC,YAClBe,EAASpi3B,EAAWr4J,OACpB06gC,EAAY/6gC,KAAKm5gC,WACjBgC,EAAW9r/B,EAAIqpI,GAAY,SAAUi/L,GACvC,OAAOA,EAAIn+S,QACb,IAES54C,EAAI,EAAGA,EAAIk6gC,EAAQl6gC,IAAK,CAC/B,IAAI+2V,EAAMj/L,EAAW93J,GAEhBm6gC,EAAUn6gC,KACbm6gC,EAAUn6gC,GArPT,CAACm/D,KAAU,MAwPd448B,GAAahz8B,EAAQ/kE,EAAG+2V,EAAIprV,KAAMk6B,EAAK29C,EACzC,CAEA,GAAIluC,EAASy49B,YACXz49B,EAASy49B,YAAYno+B,EAAOC,EAAKk/B,EAAQo18B,QAIzC,IAFA,IAAI7qX,EAAW,GAENp1S,EAAMt0U,EAAOs0U,EAAMr0U,EAAKq0U,IAAO,CAEtCo1S,EAAWh6mB,EAASjqB,QAAQ6uV,EAAKo1S,GAQjC,IAAK,IAAI0oX,EAAS,EAAGA,EAASkC,EAAQlC,IAAU,CAC9C,IAAIwC,EAAaz18B,EAAOiz8B,GAEpBl71B,EAAM19K,KAAK85gC,gBAAgB5pX,EAAUirX,EAASvC,GAAS99pB,EAAK89pB,GAEhEwC,EAAWtgqB,GAAOp9L,EAClB,IAAI+81B,EAAeM,EAAUnC,GAC7Bl71B,EAAM+81B,EAAa,KAAOA,EAAa,GAAK/81B,GAC5CA,EAAM+81B,EAAa,KAAOA,EAAa,GAAK/81B,EAC9C,CACF,EAGGxnI,EAASkvG,YAAclvG,EAAS8y4B,OAEnC9y4B,EAAS8y4B,QAGXhp7B,KAAKq5gC,UAAYr5gC,KAAKu3Y,OAAS9wW,EAE/BzmC,KAAKo5gC,QAAU,EACjB,EAEAH,EAAUv5gC,UAAU6pD,MAAQ,WAC1B,OAAOvpD,KAAKu3Y,MACd,EAMA0hoB,EAAUv5gC,UAAUyD,IAAM,SAAUw0V,EAAKmjB,GACvC,KAAMA,GAAO,GAAKA,EAAM96W,KAAKu3Y,QAC3B,OAAOqkX,IAGT,IAAIy/Q,EAAWr7gC,KAAKk5gC,QAAQvhrB,GAC5B,OAAO0jrB,EAAWA,EAASr7gC,KAAKssgC,YAAYxxpB,IAAQ8gZ,GACtD,EAEAq9Q,EAAUv5gC,UAAUg9iB,UAAY,SAAUhkZ,EAAYoiN,GACpD,IAAIp+V,EAAS,GACT4+/B,EAAS,GAEb,GAAW,MAAPxgqB,EAAa,CACfA,EAAMpiN,EAENA,EAAa,GAEb,IAAK,IAAI93J,EAAI,EAAGA,EAAIZ,KAAK+5gC,YAAY15gC,OAAQO,IAC3C06gC,EAAOz5gC,KAAKjB,EAEhB,MACE06gC,EAAS5i3B,EAGF93J,EAAI,EAAb,IAAK,IAAWi+H,EAAMy84B,EAAOj7gC,OAAQO,EAAIi+H,EAAKj+H,IAC5C8b,EAAO7a,KAAK7B,KAAKmD,IAAIm4gC,EAAO16gC,GAAIk6W,IAGlC,OAAOp+V,CACT,EAMAu8/B,EAAUv5gC,UAAUitgC,cAAgB,SAAUh1qB,EAAK4jrB,GACjD,KAAMA,GAAU,GAAKA,EAASv7gC,KAAKq5gC,WACjC,OAAOz9Q,IAGT,IAAIy/Q,EAAWr7gC,KAAKk5gC,QAAQvhrB,GAC5B,OAAO0jrB,EAAWA,EAASE,GAAU3/Q,GACvC,EAMAq9Q,EAAUv5gC,UAAU87gC,OAAS,SAAU7jrB,GACrC,IACI7oP,EAAM,EAEV,GAHc9uG,KAAKk5gC,QAAQvhrB,GAIzB,IAAK,IAAI/2V,EAAI,EAAGi+H,EAAM7+H,KAAKupD,QAAS3oD,EAAIi+H,EAAKj+H,IAAK,CAChD,IAAIO,EAAQnB,KAAKmD,IAAIw0V,EAAK/2V,GAErB0rC,MAAMnrC,KACT2tG,GAAO3tG,EAEX,CAGF,OAAO2tG,CACT,EAMAmq6B,EAAUv5gC,UAAU+7gC,UAAY,SAAU9jrB,GACxC,IAAI+jrB,EAAe,GAEnB17gC,KAAKgixB,KAAK,CAACrqb,IAAM,SAAUj6K,GACpBpxI,MAAMoxI,IACTg+1B,EAAa75gC,KAAK67K,EAEtB,IAGA,IAAIi+1B,EAAqBD,EAAanv+B,MAAK,SAAUvrC,EAAGsC,GACtD,OAAOtC,EAAIsC,CACb,IACIu7H,EAAM7+H,KAAKupD,QAEf,OAAe,IAARs1E,EAAY,EAAIA,EAAM,GAAM,EAAI884B,GAAoB984B,EAAM,GAAK,IAAM884B,EAAmB984B,EAAM,GAAK884B,EAAmB984B,EAAM,EAAI,IAAM,CAC/I,EAMAo64B,EAAUv5gC,UAAUsj+B,gBAAkB,SAAU44C,GAC9C,GAAIA,GAAY57gC,KAAKq5gC,WAAauC,EAAW,EAC3C,OAAQ,EAGV,IAAK57gC,KAAK05gC,SACR,OAAOkC,EAIT,IAAIjt1B,EAAU3uL,KAAK05gC,SAEfrJ,EAAe1h1B,EAAQit1B,GAE3B,GAAoB,MAAhBvL,GAAwBA,EAAerwgC,KAAKu3Y,QAAU84nB,IAAiBuL,EACzE,OAAOA,EAMT,IAHA,IAAI/8+B,EAAO,EACPghE,EAAQ7/F,KAAKu3Y,OAAS,EAEnB14W,GAAQghE,GAAO,CACpB,IAAIylI,GAAOzmM,EAAOghE,GAAS,EAAI,EAE/B,GAAI8uF,EAAQ22C,GAAOs2yB,EACjB/8+B,EAAOymM,EAAM,MACR,MAAI32C,EAAQ22C,GAAOs2yB,GAGxB,OAAOt2yB,EAFPzlI,EAAQylI,EAAM,CAGhB,CACF,CAEA,OAAQ,CACV,EAWA2zyB,EAAUv5gC,UAAUm8gC,iBAAmB,SAAUlkrB,EAAKx2V,EAAOonzB,GAC3D,IACIuzN,EADS97gC,KAAKk5gC,QACGvhrB,GACjBokrB,EAAiB,GAErB,IAAKD,EACH,OAAOC,EAGU,MAAfxzN,IACFA,EAAcxovB,KAOhB,IAJA,IAAI+lH,EAAU/lH,IACVi88B,GAAW,EACXC,EAAoB,EAEfr7gC,EAAI,EAAGi+H,EAAM7+H,KAAKupD,QAAS3oD,EAAIi+H,EAAKj+H,IAAK,CAChD,IACI2niB,EAAOpniB,EAAQ26gC,EADH97gC,KAAKssgC,YAAY1rgC,IAE7Bm5V,EAAOl3V,KAAKmjH,IAAIuib,GAEhBxuM,GAAQwud,KAONxud,EAAOj0K,GAAWi0K,IAASj0K,GAAWyiX,GAAQ,GAAKyze,EAAU,KAC/Dl21B,EAAUi0K,EACViirB,EAAUzze,EACV0ze,EAAoB,GAGlB1ze,IAASyze,IACXD,EAAeE,KAAuBr7gC,GAG5C,CAGA,OADAm7gC,EAAe17gC,OAAS47gC,EACjBF,CACT,EAEA9C,EAAUv5gC,UAAUw8gC,WAAa,WAC/B,IAAIC,EACAxt1B,EAAU3uL,KAAK05gC,SAEnB,GAAI/q1B,EAAS,CACX,IAAIq6wB,EAAOr6wB,EAAQ1uL,YACfm8gC,EAAYp8gC,KAAKu3Y,OAErB,GAAIyxjB,IAASvp8B,MAAO,CAClB08gC,EAAa,IAAInzE,EAAKozE,GAEtB,IAAK,IAAIx7gC,EAAI,EAAGA,EAAIw7gC,EAAWx7gC,IAC7Bu7gC,EAAWv7gC,GAAK+tL,EAAQ/tL,EAE5B,MACEu7gC,EAAa,IAAInzE,EAAKr6wB,EAAQzmK,OAAQ,EAAGk0/B,EAE7C,MAIE,IAFAD,EAAa,IADTnzE,EAAOyvE,GAAez4gC,KAAKq5gC,YACTr5gC,KAAKupD,SAElB3oD,EAAI,EAAGA,EAAIu7gC,EAAW97gC,OAAQO,IACrCu7gC,EAAWv7gC,GAAKA,EAIpB,OAAOu7gC,CACT,EAMAlD,EAAUv5gC,UAAUmtB,OAAS,SAAUi/+B,EAAMpq8B,GAC3C,IAAK1hE,KAAKu3Y,OACR,OAAOv3Y,KAaT,IAVA,IAAIg5gC,EAAWh5gC,KAAKuwB,QAChBg5B,EAAQyv9B,EAASzv9B,QAEjB4y9B,EAAa,IADN1D,GAAeO,EAASK,WAClB,CAAS9v9B,GACtBpoD,EAAQ,GACRitgC,EAAUtC,EAAKzrgC,OACf8hD,EAAS,EACTk69B,EAAOvQ,EAAK,GACZnm8B,EAASqz8B,EAASE,QAEbt4gC,EAAI,EAAGA,EAAI2oD,EAAO3oD,IAAK,CAC9B,IAAIit/B,OAAO,EACP0tB,EAASvC,EAAS1M,YAAY1rgC,GAElC,GAAgB,IAAZwtgC,EACFvgB,EAAOns7B,EAAG9gE,QACL,GAAgB,IAAZwtgC,EAETvgB,EAAOns7B,EADGiE,EAAO028B,GAAMd,GACR36gC,OACV,CAGL,IAFA,IAAI8C,EAAI,EAEDA,EAAI0qgC,EAAS1qgC,IAClBvC,EAAMuC,GAAKiiE,EAAOmm8B,EAAKpogC,IAAI63gC,GAG7Bp6gC,EAAMuC,GAAK9C,EACXit/B,EAAOns7B,EAAGnhE,MAAM,KAAMY,EACxB,CAEI0s/B,IACFsuB,EAAWh69B,KAAYo59B,EAE3B,CAaA,OAVIp59B,EAASoH,IACXyv9B,EAASU,SAAWyC,GAGtBnD,EAASzhoB,OAASp1V,EAElB629B,EAASI,QAAU,GAEnBJ,EAASsD,mBAEFtD,CACT,EAOAC,EAAUv5gC,UAAU0zqB,YAAc,SAAUrxiB,GAC1C,IAAIi34B,EAAWh5gC,KAAKuwB,QAChBsuG,EAAMm64B,EAASzhoB,OAEnB,IAAK14Q,EACH,OAAO7+H,KAGT,IAAI8rgC,EAAOx4/B,GAAKyuH,GACZqs4B,EAAUtC,EAAKzrgC,OAEnB,IAAK+tgC,EACH,OAAOpugC,KAGT,IAAIu8gC,EAAgBvD,EAASzv9B,QAEzB4y9B,EAAa,IADN1D,GAAeO,EAASK,WAClB,CAASkD,GACtBp69B,EAAS,EACTk69B,EAAOvQ,EAAK,GACZj+/B,EAAMk0H,EAAMs64B,GAAM,GAClB1ugC,EAAMo0H,EAAMs64B,GAAM,GAClBG,EAAWxD,EAASE,QACpBuD,GAAgB,EAEpB,IAAKzD,EAASU,SAAU,CAEtB,IAAI5+pB,EAAM,EAEV,GAAgB,IAAZszpB,EAAe,CAGjB,IAFA,IAAIgN,EAAaoB,EAAS1Q,EAAK,IAEtBlrgC,EAAI,EAAGA,EAAIi+H,EAAKj+H,MACnB88K,EAAM091B,EAAWx6gC,KAMViN,GAAO6vK,GAAO/vK,GAAO2+B,MAAMoxI,MACpCy+1B,EAAWh69B,KAAY24T,GAGzBA,IAGF2hqB,GAAgB,CAClB,MAAO,GAAgB,IAAZrO,EAAe,CACpBgN,EAAaoB,EAAS1Q,EAAK,IAA/B,IACI4Q,EAAcF,EAAS1Q,EAAK,IAC5B/8B,EAAOht2B,EAAM+p4B,EAAK,IAAI,GACtB98B,EAAOjt2B,EAAM+p4B,EAAK,IAAI,GAE1B,IAASlrgC,EAAI,EAAGA,EAAIi+H,EAAKj+H,IAAK,CAC5B,IAAI88K,EAAM091B,EAAWx6gC,GACjB29d,EAAOm+iB,EAAY97gC,IAElB88K,GAAO7vK,GAAO6vK,GAAO/vK,GAAO2+B,MAAMoxI,MAAU6gT,GAAQwwgB,GAAQxwgB,GAAQywgB,GAAQ1i8B,MAAMiyb,MACrF49iB,EAAWh69B,KAAY24T,GAGzBA,GACF,CAEA2hqB,GAAgB,CAClB,CACF,CAEA,IAAKA,EACH,GAAgB,IAAZrO,EACF,IAASxtgC,EAAI,EAAGA,EAAI27gC,EAAe37gC,IAAK,CACtC,IAAIg7gC,EAAW5C,EAAS1M,YAAY1rgC,KAChC88K,EAAM8+1B,EAAS1Q,EAAK,IAAI8P,KAEjB/tgC,GAAO6vK,GAAO/vK,GAAO2+B,MAAMoxI,MACpCy+1B,EAAWh69B,KAAYy59B,EAE3B,MAEA,IAASh7gC,EAAI,EAAGA,EAAI27gC,EAAe37gC,IAAK,CAItC,IAHA,IAAIit/B,GAAO,EAGFnq/B,GAFLk4gC,EAAW5C,EAAS1M,YAAY1rgC,GAEvB,GAAG8C,EAAI0qgC,EAAS1qgC,IAAK,CAChC,IAAIi5gC,EAAO7Q,EAAKpogC,KACZg6K,EAAM8+1B,EAASG,GAAMf,IAEf754B,EAAM464B,GAAM,IAAMj/1B,EAAM37C,EAAM464B,GAAM,MAC5C9uB,GAAO,EAEX,CAEIA,IACFsuB,EAAWh69B,KAAY629B,EAAS1M,YAAY1rgC,GAEhD,CAeJ,OAVIuhD,EAASo69B,IACXvD,EAASU,SAAWyC,GAGtBnD,EAASzhoB,OAASp1V,EAElB629B,EAASI,QAAU,GAEnBJ,EAASsD,mBAEFtD,CACT,EAgBAC,EAAUv5gC,UAAU2vB,IAAM,SAAUy8+B,EAAMpq8B,GAExC,IAAI5xD,EAAS9P,KAAKuwB,MAAMu7+B,GAIxB,OAFA9rgC,KAAK48gC,YAAY9sgC,EAAQg8/B,EAAMpq8B,GAExB5xD,CACT,EAMAmpgC,EAAUv5gC,UAAUynY,OAAS,SAAU2koB,EAAMpq8B,GAC3C1hE,KAAK48gC,YAAY58gC,KAAM8rgC,EAAMpq8B,EAC/B,EAEAu38B,EAAUv5gC,UAAUk9gC,YAAc,SAAU9sgC,EAAQg8/B,EAAMpq8B,GAQxD,IAPA,IAAIm78B,EAAe/sgC,EAAOopgC,QACtB4D,EAAc,GACd1O,EAAUtC,EAAKzrgC,OACf08gC,EAAYjtgC,EAAOy5C,QACnB7sC,EAAS,GACTq+/B,EAAYjrgC,EAAOqpgC,WAEdv4gC,EAAI,EAAGA,EAAIkrgC,EAAKzrgC,OAAQO,IAC/Bm6gC,EAAUjP,EAAKlrgC,IAptBZ,CAACm/D,KAAU,KAutBhB,IAAK,IAAIslG,EAAY,EAAGA,EAAY032B,EAAW132B,IAAa,CAG1D,IAFA,IAAIu22B,EAAW9rgC,EAAOw8/B,YAAYjn2B,GAEzB3hK,EAAI,EAAGA,EAAI0qgC,EAAS1qgC,IAC3BgZ,EAAOhZ,GAAKm5gC,EAAa/Q,EAAKpogC,IAAIk4gC,GAGpCl//B,EAAO0x/B,GAAW/o2B,EAClB,IAAI232B,EAAWt78B,GAAMA,EAAGnhE,MAAM,KAAMmc,GAEpC,GAAgB,MAAZsggC,EAOF,IALwB,iBAAbA,IACTF,EAAY,GAAKE,EACjBA,EAAWF,GAGJl8gC,EAAI,EAAGA,EAAIo8gC,EAAS38gC,OAAQO,IAAK,CACxC,IAAI+2V,EAAMm0qB,EAAKlrgC,GACX88K,EAAMs/1B,EAASp8gC,GACfq8gC,EAAiBlC,EAAUpjrB,GAC3B0jrB,EAAWwB,EAAallrB,GAExB0jrB,IACFA,EAASO,GAAYl+1B,GAGnBA,EAAMu/1B,EAAe,KACvBA,EAAe,GAAKv/1B,GAGlBA,EAAMu/1B,EAAe,KACvBA,EAAe,GAAKv/1B,EAExB,CAEJ,CACF,EAQAu71B,EAAUv5gC,UAAUw9gC,eAAiB,SAAUC,EAAgBzxtB,GAC7D,IAOI0xtB,EACA/7xB,EACAg8xB,EATAvtgC,EAAS9P,KAAKuwB,MAAM,CAAC4s/B,IAAiB,GAEtC9B,EADgBvrgC,EAAOopgC,QACEiE,GACzBt+4B,EAAM7+H,KAAKupD,QACX+z9B,EAAe,EACfC,EAAY16gC,KAAKyK,MAAM,EAAIo+S,GAC3B8xtB,EAAkBx9gC,KAAKssgC,YAAY,GAInC6P,EAAa,IAAK1D,GAAez4gC,KAAKq5gC,WAAzB,CAAqCx2gC,KAAKgL,IAAuC,GAAlChL,KAAKuK,KAAKyxH,EAAM0+4B,GAAa,GAAQ1+4B,IAErGs94B,EAAWmB,KAAkBE,EAE7B,IAAK,IAAI58gC,EAAI,EAAGA,EAAIi+H,EAAM,EAAGj+H,GAAK28gC,EAAW,CAM3C,IALA,IAAIE,EAAiB56gC,KAAKgL,IAAIjN,EAAI28gC,EAAW1+4B,EAAM,GAC/C6+4B,EAAe76gC,KAAKgL,IAAIjN,EAAgB,EAAZ28gC,EAAe1+4B,GAC3C8+4B,GAAQD,EAAeD,GAAkB,EACzCG,EAAO,EAEF9iqB,EAAM2iqB,EAAgB3iqB,EAAM4iqB,EAAc5iqB,IAAO,CACxD,IACI93W,EAAIq4gC,EADJO,EAAW57gC,KAAKssgC,YAAYxxpB,IAG5BxuU,MAAMtpC,KAIV46gC,GAAQ56gC,EACV,CAEA46gC,GAAQF,EAAeD,EACvB,IAAIr7X,EAAaxhpB,EACbi9gC,EAAWh7gC,KAAKgL,IAAIjN,EAAI28gC,EAAW1+4B,GACnCi/4B,EAAUl9gC,EAAI,EACdm9gC,EAAU1C,EAASmC,GACvBJ,GAAW,EACXC,EAAej7X,EACf,IAAI47X,GAAiB,EACjBC,EAAW,EAGf,IAASnjqB,EAAMsnS,EAAYtnS,EAAM+iqB,EAAU/iqB,IAAO,CAChD,IAAI8gqB,EACA54gC,EAAIq4gC,EADJO,EAAW57gC,KAAKssgC,YAAYxxpB,IAG5BxuU,MAAMtpC,IACRi7gC,IAEID,EAAgB,IAClBA,EAAgBpC,KAOpBv6xB,EAAOx+O,KAAKmjH,KAAK835B,EAAUH,IAAS36gC,EAAI+6gC,IAAYD,EAAUhjqB,IAAQ8iqB,EAAOG,KAElEX,IACTA,EAAU/7xB,EACVg8xB,EAAezB,EAEnB,CAEIqC,EAAW,GAAKA,EAAWJ,EAAWz7X,IAGxC+5X,EAAWmB,KAAkBz6gC,KAAKgL,IAAImwgC,EAAeX,GACrDA,EAAex6gC,KAAK8K,IAAIqwgC,EAAeX,IAGzClB,EAAWmB,KAAkBD,EAC7BG,EAAkBH,CACpB,CAOA,OAJAlB,EAAWmB,KAAkBt9gC,KAAKssgC,YAAYzt4B,EAAM,GACpD/uH,EAAOynY,OAAS+loB,EAChBxtgC,EAAO4pgC,SAAWyC,EAClBrsgC,EAAOw8/B,YAActsgC,KAAKk+gC,WACnBpugC,CACT,EAOAmpgC,EAAUv5gC,UAAUy+gC,WAAa,SAAU7q2B,EAAWo4I,EAAM0ytB,EAAaC,GAWvE,IAVA,IAAIvugC,EAAS9P,KAAKuwB,MAAM,CAAC+iJ,IAAY,GACjCgr2B,EAAgBxugC,EAAOopgC,QACvBqF,EAAc,GACdhB,EAAY16gC,KAAKyK,MAAM,EAAIo+S,GAC3B2vtB,EAAWiD,EAAchr2B,GACzBz0C,EAAM7+H,KAAKupD,QACX0z9B,EAAiBntgC,EAAOqpgC,WAAW7l2B,GAr2BlC,CAACvzG,KAAU,KAs2BZo88B,EAAa,IAAK1D,GAAez4gC,KAAKq5gC,WAAzB,CAAqCx2gC,KAAKuK,KAAKyxH,EAAM0+4B,IAClEp79B,EAAS,EAEJvhD,EAAI,EAAGA,EAAIi+H,EAAKj+H,GAAK28gC,EAAW,CAEnCA,EAAY1+4B,EAAMj+H,IACpB28gC,EAAY1+4B,EAAMj+H,EAClB29gC,EAAYl+gC,OAASk9gC,GAGvB,IAAK,IAAI75gC,EAAI,EAAGA,EAAI65gC,EAAW75gC,IAAK,CAClC,IAAI+rxB,EAAUzvxB,KAAKssgC,YAAY1rgC,EAAI8C,GACnC66gC,EAAY76gC,GAAK23gC,EAAS5rP,EAC5B,CAEA,IAAItuxB,EAAQi9gC,EAAYG,GACpBC,EAAiBx+gC,KAAKssgC,YAAYzpgC,KAAKgL,IAAIjN,EAAIy9gC,EAAYE,EAAap9gC,IAAU,EAAG09H,EAAM,IAE/Fw84B,EAASmD,GAAkBr9gC,EAEvBA,EAAQ87gC,EAAe,KACzBA,EAAe,GAAK97gC,GAGlBA,EAAQ87gC,EAAe,KACzBA,EAAe,GAAK97gC,GAGtBg7gC,EAAWh69B,KAAYq89B,CACzB,CAOA,OALA1ugC,EAAOynY,OAASp1V,EAChBryC,EAAO4pgC,SAAWyC,EAElBrsgC,EAAOwsgC,mBAEAxsgC,CACT,EAWAmpgC,EAAUv5gC,UAAUsixB,KAAO,SAAU8pP,EAAMpq8B,GACzC,GAAK1hE,KAAKu3Y,OAOV,IAHA,IAAI62nB,EAAUtC,EAAKzrgC,OACfslE,EAAS3lE,KAAKk5gC,QAETt4gC,EAAI,EAAGi+H,EAAM7+H,KAAKupD,QAAS3oD,EAAIi+H,EAAKj+H,IAAK,CAChD,IAAI26gC,EAASv7gC,KAAKssgC,YAAY1rgC,GAE9B,OAAQwtgC,GACN,KAAK,EACH1s8B,EAAG9gE,GACH,MAEF,KAAK,EACH8gE,EAAGiE,EAAOmm8B,EAAK,IAAIyP,GAAS36gC,GAC5B,MAEF,KAAK,EACH8gE,EAAGiE,EAAOmm8B,EAAK,IAAIyP,GAAS518B,EAAOmm8B,EAAK,IAAIyP,GAAS36gC,GACrD,MAEF,QAIE,IAHA,IAAI8C,EAAI,EACJvC,EAAQ,GAELuC,EAAI0qgC,EAAS1qgC,IAClBvC,EAAMuC,GAAKiiE,EAAOmm8B,EAAKpogC,IAAI63gC,GAI7Bp6gC,EAAMuC,GAAK9C,EACX8gE,EAAGnhE,MAAM,KAAMY,GAErB,CACF,EAMA83gC,EAAUv5gC,UAAU++gC,cAAgB,SAAU9mrB,GAE5C,IAAImkrB,EAAU97gC,KAAKk5gC,QAAQvhrB,GACvB+mrB,EAp8BC,CAAC3+8B,KAAU,KAs8BhB,IAAK+78B,EACH,OAAO4C,EAIT,IAKIzP,EALA0P,EAAU3+gC,KAAKupD,QAOnB,IAHcvpD,KAAK05gC,SAIjB,OAAO15gC,KAAKm5gC,WAAWxhrB,GAAK51V,QAK9B,GAFAktgC,EAAYjvgC,KAAKo5gC,QAAQzhrB,GAGvB,OAAOs3qB,EAAUltgC,QAOnB,IAHA,IAAI8L,GADJohgC,EAAYyP,GACQ,GAChB/wgC,EAAMshgC,EAAU,GAEXrugC,EAAI,EAAGA,EAAI+9gC,EAAS/9gC,IAAK,CAChC,IACIO,EAAQ26gC,EADC97gC,KAAKssgC,YAAY1rgC,IAE9BO,EAAQ0M,IAAQA,EAAM1M,GACtBA,EAAQwM,IAAQA,EAAMxM,EACxB,CAIA,OAFA8tgC,EAAY,CAACphgC,EAAKF,GAClB3N,KAAKo5gC,QAAQzhrB,GAAOs3qB,EACbA,CACT,EAMAgK,EAAUv5gC,UAAUmwgC,eAAiB,SAAU/0pB,GAC7C,IAAIygqB,EAASv7gC,KAAKssgC,YAAYxxpB,GAE9B,GAAK96W,KAAKy5gC,UAAUr03B,WAUlB,OAAOplJ,KAAKy5gC,UAAUxt/B,QAAQsv/B,GAN9B,IAHA,IAAI791B,EAAM,GACN/3G,EAAS3lE,KAAKk5gC,QAETt4gC,EAAI,EAAGA,EAAI+kE,EAAOtlE,OAAQO,IACjC88K,EAAI77K,KAAK8jE,EAAO/kE,GAAG26gC,IAGrB,OAAO791B,CAIX,EAQAu71B,EAAUv5gC,UAAU6wB,MAAQ,SAAUqu/B,EAAYC,GAChD,IAngCgBC,EACd91E,EAkgCEl57B,EAAS,IAAImpgC,EACbtz8B,EAAS3lE,KAAKk5gC,QACd6F,EAAgBH,GAAclr/B,GAAOkr/B,GAAY,SAAU1xzB,EAAK0rzB,GAElE,OADA1rzB,EAAI0rzB,IAAU,EACP1rzB,CACT,GAAG,CAAC,GAEJ,GAAI6xzB,EACF,IAAK,IAAIn+gC,EAAI,EAAGA,EAAI+kE,EAAOtlE,OAAQO,IAEjCkP,EAAOopgC,QAAQt4gC,GAAMm+gC,EAAcn+gC,IA5gCrCoo8B,aADc81E,EA6gCmDn58B,EAAO/kE,IA5gCnDX,eAETR,MAAQq/gC,EAAc/8gC,QAAU,IAAIin8B,EAAK81E,IA0gCXn58B,EAAO/kE,QAGjDkP,EAAOopgC,QAAUvz8B,EAWnB,OARA3lE,KAAKg/gC,iBAAiBlvgC,GAEjB+ugC,IACH/ugC,EAAO4pgC,SAAW15gC,KAAKi/gC,iBAGzBnvgC,EAAOwsgC,mBAEAxsgC,CACT,EAEAmpgC,EAAUv5gC,UAAUs/gC,iBAAmB,SAAUlvgC,GAC/CA,EAAOynY,OAASv3Y,KAAKu3Y,OACrBznY,EAAOupgC,UAAYr5gC,KAAKq5gC,UACxBvpgC,EAAO2pgC,UAAYz5gC,KAAKy5gC,UACxB3pgC,EAAOiqgC,YAAc/5gC,KAAK+5gC,YAC1BjqgC,EAAOspgC,QAAU7o/B,EAAMvwB,KAAKo5gC,SAC5BtpgC,EAAOqpgC,WAAa5o/B,EAAMvwB,KAAKm5gC,WACjC,EAEAF,EAAUv5gC,UAAUu/gC,cAAgB,WAClC,GAAIj/gC,KAAK05gC,SAAU,CACjB,IAAI1wE,EAAOhp8B,KAAK05gC,SAASz5gC,YACrB0uL,OAAU,EAEd,GAAIq6wB,IAASvp8B,MAAO,CAClB,IAAI28gC,EAAYp8gC,KAAK05gC,SAASr5gC,OAC9BsuL,EAAU,IAAIq6wB,EAAKozE,GAEnB,IAAK,IAAIx7gC,EAAI,EAAGA,EAAIw7gC,EAAWx7gC,IAC7B+tL,EAAQ/tL,GAAKZ,KAAK05gC,SAAS94gC,EAE/B,MACE+tL,EAAU,IAAIq6wB,EAAKhp8B,KAAK05gC,UAG1B,OAAO/q1B,CACT,CAEA,OAAO,IACT,EAEAsq1B,EAAUv5gC,UAAUi6gC,mBAAqB,SAAU7+pB,GACjD,OAAOA,CACT,EAEAm+pB,EAAUv5gC,UAAUw+gC,WAAa,SAAUpjqB,GACzC,OAAIA,EAAM96W,KAAKu3Y,QAAUz8B,GAAO,EACvB96W,KAAK05gC,SAAS5+pB,IAGf,CACV,EAEAm+pB,EAAUv5gC,UAAU48gC,iBAAmB,WACrCt8gC,KAAKssgC,YAActsgC,KAAK05gC,SAAW15gC,KAAKk+gC,WAAal+gC,KAAK25gC,kBAC5D,EAEAV,EAAU5V,cAAgB,WACxB,SAAS6b,EAAkBhvX,EAAU12mB,EAAU6rH,EAAW+21B,GACxD,OAAOgY,GAAelkX,EAASksW,GAAWp8/B,KAAK+5gC,YAAY3d,GAC7D,CAEA8b,GAAyB,CACvBgD,UAAWgE,EACXC,WAAY,SAAUjvX,EAAU12mB,EAAU6rH,EAAW+21B,GACnD,OAAOgY,GAAelkX,EAAS12mB,GAAWx5C,KAAK+5gC,YAAY3d,GAC7D,EACAgjB,aAAcF,EACdtm+B,SAAU,SAAUs3mB,EAAU12mB,EAAU6rH,EAAW+21B,GAKjD,IAAIj7/B,EAAQ+upB,IAA+B,MAAlBA,EAAS/upB,MAAgB+upB,EAAWA,EAAS/upB,OACtE,OAAOizgC,GAAejzgC,aAAiB1B,MAAQ0B,EAAMi7/B,GACnDj7/B,EAAOnB,KAAK+5gC,YAAY3d,GAC5B,EACAz51B,WAAY,SAAUutf,EAAU12mB,EAAU6rH,EAAW+21B,GACnD,OAAOlsW,EAASksW,EAClB,EAEJ,CAxB0B,GA0BnB6c,CACT,CArkCA,GAukCA,YC/iCA,IAAIoG,GAEJ,WACE,SAASA,EAAcC,GAErBt/gC,KAAKu/gC,YAAc,GACnBv/gC,KAAKw/gC,WAAa,GAElBx/gC,KAAKy/gC,kBAAoB,GACzBz/gC,KAAK0/gC,iBAAmB,EACxB1/gC,KAAKowL,QAAS,EACdpwL,KAAK2/gC,YAAcL,CACrB,CA+SA,OAzSAD,EAAc3/gC,UAAUomwB,MAAQ,WAC9B9lwB,KAAK4/gC,gBAAgB,GAAI,IAEzB5/gC,KAAKw/gC,WAAa,GAClBx/gC,KAAKowL,QAAS,CAChB,EAEAiv1B,EAAc3/gC,UAAUkghC,gBAAkB,SAAUC,EAAYC,GAC9D9/gC,KAAKu/gC,YAAcM,EACnB7/gC,KAAKy/gC,kBAAoBK,EACzB9/gC,KAAK0/gC,mBAED1/gC,KAAK0/gC,iBAAmB,OAC1B1/gC,KAAK0/gC,iBAAmB,EAE5B,EAOAL,EAAc3/gC,UAAUqghC,gBAAkB,WACxC,OAAO//gC,KAAK2/gC,YAAYvsrB,IAAM,IAAMpzV,KAAK0/gC,gBAC3C,EAMAL,EAAc3/gC,UAAUsghC,cAAgB,WAGlChghC,KAAKighC,aACPjghC,KAAKkghC,gBAELlghC,KAAKowL,QAAS,EAElB,EAEAiv1B,EAAc3/gC,UAAUwghC,cAAgB,WACtClghC,KAAK4/gC,gBAAgB,GAAI,IAEzB,IAKIO,EACAL,EANAR,EAAat/gC,KAAK2/gC,YAElBS,EAAkBpghC,KAAKqghC,6BAEvBC,IAAgBF,EAAgB//gC,OAIpC,GAAI2h/B,GAASs9B,GAAa,CACxB,IAAIt8B,EAAcs8B,EACd9vgC,OAAO,EACPqwU,OAAe,EACfw3rB,OAAW,EAEf,GAAIiJ,EAAa,CACf,IAAIC,EAAcH,EAAgB,GAClCG,EAAYP,gBAEZxwgC,GADA6ngC,EAAWkJ,EAAY90rB,aACPj8U,KAChBqwU,EAAew3rB,EAASx3rB,aACxBigsB,EAAmB,CAACS,EAAYR,kBAClC,MAGIlgsB,EAAe5+T,GADfzR,EAAOwz+B,EAAY7/+B,IAAI,QAAQ,IACKk2/B,GAA4B,GAChEymB,EAAmB,GAIvB,IAAIU,EAAmBxghC,KAAKyghC,2BAA6B,CAAC,EACtDC,EAAkBrJ,GAAYA,EAASrK,eAAiB,CAAC,EACzDzS,EAAiBjwD,GAAUk2E,EAAiBjmB,eAAgBmmB,EAAgBnmB,iBAAmB,KAC/FgT,EAAejjE,GAAUk2E,EAAiBjT,aAAcmT,EAAgBnT,cAIxE702B,EAAa4xyB,GAAUk2E,EAAiB9n3B,WAAYgo3B,EAAgBho3B,YAIxEyn3B,EADwB5lB,IAAmBmmB,EAAgBnmB,kBAAoBgT,KAAmBmT,EAAgBnT,cAAgB702B,EAC3F,CAACw02B,GAAa19/B,EAAM,CACzD+q/B,eAAgBA,EAChBgT,aAAcA,EACd702B,WAAYA,GACXmnL,IAAiB,EACtB,KAAO,CACL,IAAIm6qB,EAAeslB,EAEnB,GAAIgB,EAAa,CACf,IAAI98/B,EAASxjB,KAAK2ghC,gBAAgBP,GAElCD,EAAmB38/B,EAAOq8/B,WAC1BC,EAAmBt8/B,EAAOs8/B,gBAC5B,MAGIK,EAAmB,CAACjT,GADHlT,EAAa72/B,IAAI,UAAU,GACCnD,KAAKyghC,0BAA2B,OAC7EX,EAAmB,EAEzB,CAMA9/gC,KAAK4/gC,gBAAgBO,EAAkBL,EACzC,EAEAT,EAAc3/gC,UAAUihhC,gBAAkB,SAAUC,GAClD,IAoBIf,EApBA7lB,EAAeh6/B,KAAK2/gC,YACpBkB,EAAkB7mB,EAAa72/B,IAAI,aAAa,GAChD29gC,EAAsB9mB,EAAa72/B,IAAI,uBAAuB,GAMvC,MAAvB29gC,GAGuB,IAArBF,EAAUvghC,QAKZ0ghC,GAPW,IAYf,IRhL+Bl5gC,EQgL3BkvgC,EAAe,GACf+I,EAAmB,GA0BvB,OAzBA,EAAKc,GAAW,SAAUI,GACxBA,EAAMhB,gBACN,IAAI3I,EAAW2J,EAAMv1rB,UAAUq1rB,GAAuB,GAG3B,MAAvBA,GAAgCzJ,GAKlC0J,GAPW,IAUbhK,EAAal1gC,KAAKw1gC,GAClByI,EAAiBj+gC,KAAKm/gC,EAAMjB,kBAC9B,IAEIc,EACFhB,EFsBC,SAA4BoB,EAAgBpB,EAAY7I,GAC7D,IAAIkK,EAAmBzgD,GAAiBwgD,GACpCE,EAAUD,EAAiB7ghC,OAG1B8ghC,GAKHhN,GAPW,IAUb,IAAK,IAAIvzgC,EAAI,EAAGi+H,EAAMsi5B,EAASvghC,EAAIi+H,EAAKj+H,IAEtCi/gC,EAAahJ,GADKqK,EAAiBtghC,GACgBi/gC,GAG/Cj/gC,IAAMi+H,EAAM,IACdgh5B,EAAWx/gC,OAASwC,KAAK8K,IAAIkygC,EAAWx/gC,OAAQ,IAIpD,OAAOw/gC,CACT,CE9CmBuB,CAAmBP,EAAiB9J,EACjC/c,EAAa7uuB,gBAEG,MAAvB21vB,IACTjB,EAAa,ERxMgBh4gC,EQwMIkvgC,EAAa,GRvM3C,IAAIjK,GAAW,CACpBt9/B,KAAM3H,EAAO2H,KACbqwU,aAAch4U,EAAOg4U,aACrB06qB,eAAgB1y/B,EAAO0y/B,eACvBmB,iBAAkBnr+B,EAAM1oB,EAAO6z/B,kBAC/B/73B,WAAY93H,EAAO83H,WACnBot4B,wBAAyBllgC,EAAOklgC,6BQoMzB,CACL8S,WAAYA,EACZC,iBAAkBA,EAEtB,EAEAT,EAAc3/gC,UAAUughC,SAAW,WACjC,GAAIjghC,KAAKowL,OACP,OAAO,EAMT,IAFA,IAAIgw1B,EAAkBpghC,KAAKqghC,6BAElBz/gC,EAAI,EAAGA,EAAIw/gC,EAAgB//gC,OAAQO,IAAK,CAC/C,IAAIyghC,EAAWjB,EAAgBx/gC,GAE/B,GAEAyghC,EAASpB,YAAcjghC,KAAKy/gC,kBAAkB7+gC,KAAOyghC,EAAStB,kBAC5D,OAAO,CAEX,CACF,EAOAV,EAAc3/gC,UAAU+rV,UAAY,SAAU5hN,GAC5CA,EAAcA,GAAe,EAC7B,IAAIhiI,EAAS7H,KAAKu/gC,YAAY114B,GAE9B,IAAKhiI,EAAQ,CAEX,IAAIu4gC,EAAkBpghC,KAAKqghC,6BAE3B,OAAOD,EAAgB,IAAMA,EAAgB,GAAG30rB,UAAU5hN,EAC5D,CAEA,OAAOhiI,CACT,EAWAw3gC,EAAc3/gC,UAAU4hhC,mBAAqB,SAAUC,GAKrD,IAAIlowB,EAASkowB,EAAiBC,kBAC9B,OAAOxhhC,KAAKyhhC,mBAAmBpowB,EAAO3gH,WAAY6o3B,EAAiB15gC,OAAQwxQ,EAAO3xK,KACpF,EAEA236B,EAAc3/gC,UAAU+hhC,mBAAqB,SAAUC,EAAWC,EAAcC,GAE9E,IACIC,EAAY7hhC,KAAKw/gC,WACjBsC,EAAiBD,EAFH,GAIbC,IACHA,EAAiBD,EALD,GAK0B,CAAC,GAG7C,IAAIE,EAAcD,EAAeF,GAEjC,IAAKG,EAAa,CAChB,IAAIxB,EAAcvghC,KAAKqghC,6BAA6B,GAEhDr+B,GAAShi/B,KAAK2/gC,cAAgBY,EAChCwB,EAAcxB,EAAYkB,mBAAmBC,EAAWC,EAAcC,IAEtEG,EAAc,IAAI,IAEN5olB,SAAS,IAAI+0kB,GAAoByT,EAAcD,EAAUrhhC,QAASqhhC,GAGhFI,EAAeF,GAAiBG,CAClC,CAEA,OAAOA,CACT,EAOA1C,EAAc3/gC,UAAU2ghC,2BAA6B,WAInD,IAAIf,EAAat/gC,KAAK2/gC,YAEtB,GAAI39B,GAASs9B,GAAa,CACxB,IAAItlB,EAAeC,GAAgCqlB,GACnD,OAAQtlB,EAAoB,CAACA,EAAagoB,oBAAnB,EACzB,CACE,OAAO3y/B,ElBlKN,SAA2C2q+B,GAGhD,OAAKA,EAAa72/B,IAAI,aAAa,IAAU62/B,EAAa72/B,IAAI,uBAAuB,GAI9E6g+B,GAAyBg2B,EAAa12B,QAAS,UAAW,CAC/Dtm9B,MAAOg9+B,EAAa72/B,IAAI,oBAAoB,GAC5CooB,GAAIyu+B,EAAa72/B,IAAI,iBAAiB,IACrCoh+B,IAAkB1z0B,OANZ,EAOX,CkBuJiBox3B,CAAkC3C,IAAa,SAAUtlB,GAClE,OAAOA,EAAagoB,kBACtB,GAEJ,EAEA3C,EAAc3/gC,UAAU+ghC,wBAA0B,WAChD,IACIlmB,EACAgT,EACA702B,EAHA4m3B,EAAat/gC,KAAK2/gC,YAKtB,GAAI39B,GAASs9B,GACX/kB,EAAiB+kB,EAAWn8gC,IAAI,kBAAkB,GAClDoqgC,EAAe+R,EAAWn8gC,IAAI,gBAAgB,GAC9Cu1J,EAAa4m3B,EAAWn8gC,IAAI,cAAc,QAEvC,IAAKnD,KAAKqghC,6BAA6BhghC,OAAQ,CAChD,IAAI00H,EAAQuq5B,EACZ/kB,EAAiBxl4B,EAAM5xH,IAAI,kBAAkB,GAC7CoqgC,EAAex44B,EAAM5xH,IAAI,gBAAgB,GACzCu1J,EAAa3jC,EAAM5xH,IAAI,cAAc,EACvC,CAEF,MAAO,CACLo3/B,eAAgBA,EAChBgT,aAAcA,EACd702B,WAAYA,EAEhB,EAEO2m3B,CACT,CA1TA,GA+TO,SAAS6C,GAA4BloB,GACpBA,EAAan87B,OAAO+kE,WACvB+n0B,GAAeqvD,EAAan87B,OAAO+kE,UACxD,CAEA,SAASo/2B,GAASs9B,GAEhB,MAA+B,WAAxBA,EAAWx7C,QACpB,CAEA,SAASi9C,GAAQoB,GACf,MAAM,IAAI36/B,MAAM26/B,EAClB,CC3aA,IAAIC,GAA0B,gBAE9B,SAASC,GAAoBr5B,EAAW+J,GACtC,IAAIuvB,EAAgBt5B,EAAUz73B,OAAS,UACnCg15B,EAAev5B,EAAUvkwB,UAAY,GACrC+9xB,EAAiBx5B,EAAUpkwB,YAAc,MACzC69xB,EAAiBz5B,EAAUz73B,OAAS,UACpCm15B,EAAgB15B,EAAUvkwB,UAAY,GACtCk+xB,EAAkB35B,EAAUpkwB,YAAc,MAE9C,MAAmB,SAAfmuwB,EAEK,CAEL6vB,UAAW,aAAehzE,GAAW2yE,EAAe,IAAM,YAAc3yE,GAAW0yE,GAAiB,gBAAkB1yE,GAAW4yE,EAAiB,IAElJ3mM,WAAY,aAAe+zH,GAAW8yE,EAAgB,IAAM,YAAc9yE,GAAW6yE,GAAkB,gBAAkB7yE,GAAW+yE,EAAkB,KAGjJ,CACLC,UAAW,CACTn+xB,SAAU89xB,EACVnl5B,KAAMkl5B,EACN19xB,WAAY49xB,GAEd3mM,WAAY,CACVp3lB,SAAUi+xB,EACVtl5B,KAAMql5B,EACN79xB,WAAY+9xB,GAIpB,CAIA,IAAIE,GAAY,CAAC,EAAG,GAAI,GAAI,IACxBC,GAAiB,CAAC,GAAI,KAAM,OAAQ,UAEjC,SAASC,GAAoBx2gC,EAAMsxD,GAExC,OADAA,EAAOtxD,KAAOA,EACPsxD,CACT,CAEA,SAASml9B,GAAkB3R,GACzB,MAAqB,YAAdA,EAAK9kgC,IACd,CAEA,SAAS02gC,GAAW5R,GAClB,OAAO2R,GAAkB3R,GAAQ6R,GAAeC,EAClD,CAEA,SAASC,GAAiB/R,GACxB,GAAI2R,GAAkB3R,GAAO,CAC3B,IAAIgS,EAAa,EACbC,EAAcjS,EAAK39W,OAAOrzpB,OAC1BkjhC,EAAgBD,EAAc,GAAKA,EAAc,IAAMjS,EAAKmS,SAYhE,OAXA,EAAKnS,EAAK39W,QAAQ,SAAU+vX,GAC1B,IAAIC,EAAcN,GAAiBK,GAG/BC,GAAeL,IACjBA,EAAaK,KAAgBH,KAC5BG,GAEEV,GAAkBS,KAAcA,EAASD,WAEhD,IACOH,CACT,CAEA,OAAO,CACT,CAEA,SAASH,GAAa5ryB,EAAK98M,EAAUmp/B,EAAsBC,GACzD,IAyGcC,EAzGVL,EAAWhp/B,EAASgp/B,SACpB5kH,GAwGUilH,EAxGIT,GAAiB5o/B,GAyG5B,CACLw/G,KAAM6o4B,GAAUgB,GAChBC,SAAUhB,GAAee,KA1GvBE,EAAoB,GACpBC,EAAYxp/B,EAASk5nB,QAAU,GACnC7whB,IAAQmh5B,GAAarygC,GAAQqygC,IAC7BA,EAAYA,GAAa,GACzB,IAAIC,EAAY3syB,EAAI2syB,UAEpB,GAAIzp/B,EAAS0p/B,YAAcD,EAAW,CACpCD,EAAYA,EAAUjihC,QACtB,IAAImgsB,EAAW,CACbiiV,SAAU,MACVC,UAAW,QAGb,GAAIl8gC,GAAOg6rB,EAAU+hV,GAAY,CAC/B,IAAII,EAAe,IAAIxP,GAAoB3yU,EAAS+hV,GAAY,MAChED,EAAUz3+B,MAAK,SAAUvrC,EAAGsC,GAC1B,OAAO+ghC,EAAa/vgB,SAAStzgB,EAAEsjhC,UAAWhhhC,EAAEghhC,UAC9C,GACF,KACuB,eAAdL,GACLD,EAAU1p9B,SAEhB,CAEA,EAAK0p9B,GAAW,SAAUP,EAAU3oqB,GAClC,IAAIgqI,EAAiBtqd,EAASsqd,eAC1By/hB,EAAgBtB,GAAWQ,EAAXR,CACpBn+hB,EAAiBz7F,EAAOA,EAAO,CAAC,EAAG/xK,GAAM,CACvCwtQ,eAAgBA,IACbxtQ,EAAKmsyB,EAAU3oqB,EAAM,EAAI8jjB,EAAK5kxB,KAAO,EAAG4p4B,GAC5B,MAAjBW,GAAyBR,EAAkBlihC,KAAK0ihC,EAClD,IACA,IAAIA,EAAmC,aAAnBjtyB,EAAIy7wB,WAA4BgxB,EAAkBl3gC,KAAK+x5B,EAAKklH,UAAYU,GAAcT,EAAkBl3gC,KAAK,IAAK22gC,EAAWG,EAAuB/kH,EAAK5kxB,MAE7K,GAAIwp4B,EACF,OAAOe,EAGT,IAAIE,EAAoB5yB,GAAkBr39B,EAAS3F,OAAQ,UAAWyiN,EAAIw6wB,QACtE8wB,EAAYP,GAAoBuB,EAAkBtsyB,EAAIy7wB,YAAY6vB,UAEtE,MAAuB,aAAnBtryB,EAAIy7wB,WACC2xB,GAAuBptyB,EAAKmtyB,EAAmB7B,GAAahkH,EAAKklH,SAAWS,EAE5EC,GAAc,eAAkB5B,EAAY,IAAMR,GAA0B,MAASxyE,GAAW60E,GAAqB,SAAWF,EAAeZ,EAE1J,CAEA,SAASR,GAAe7ryB,EAAK98M,EAAUmp/B,EAAsBC,GAC3D,IAAI7wB,EAAaz7wB,EAAIy7wB,WACjB4xB,EAASnq/B,EAASmq/B,OAClBC,EAAUpq/B,EAASoq/B,QACnBC,GAAYrq/B,EAASsq/B,WACrBp6gC,EAAO8vB,EAAS9vB,KAChBon/B,EAASx6wB,EAAIw6wB,OAEbhtgB,EAAiBtqd,EAASsqd,gBAAkBxtQ,EAAIwtQ,gBAAkB,SAAU3jf,GAE9E,OAAOkuB,EADPluB,EAAQwQ,GAAQxQ,GAASA,EAAQ,CAACA,IAChB,SAAUu8K,EAAKo9L,GAC/B,OAAO+2oB,GAAkBn00B,EAAK/rK,GAAQozgC,GAAmBA,EAAgBjqqB,GAAOiqqB,EAAiBjzB,EACnG,GACF,EAEA,IAAI6yB,IAAUC,EAAd,CAIA,IAAII,EAAYH,EAAW,GAAKvtyB,EAAI2tyB,mBAAmBC,kBAAkB1q/B,EAASsq/B,WAAYtq/B,EAAS2q/B,aAAe,OAAQpyB,GAC1HqyB,EAAeT,EAAS,GAAK9yB,GAAkBnn/B,EAAM,UAAWon/B,GAChEizB,EAAkBvq/B,EAASyvH,UAC3Bo73B,EAAoBT,EAAU,GAAK9/hB,EAAetqd,EAASr5B,OAC3DmkhC,GAAmBT,IAAaF,EAEhCY,GAAsBV,GAAYF,EAElChu/B,EAAK0r/B,GAAoBuB,EAAkB7wB,GAC3C6vB,EAAYjs/B,EAAGis/B,UACf/mM,EAAallzB,EAAGklzB,WAEpB,MAAsB,aAAfk3K,GAA6B8xB,EAAW,GAAKG,IAAcL,EAAS,GAAKD,GAAuBptyB,EAAK8tyB,EAAcxC,KACvHgC,EAAU,GAwDf,SAAiCttyB,EAAK56N,EAAQ8ogC,EAAYD,EAAoBlxgC,GAC5E,IAAIwhK,EAAS,CAACxhK,GACV8rW,EAAcolqB,EAAqB,GAAK,GAM5C,OALAC,GAAc3v2B,EAAOh0K,KAAK,CACxBq2H,QAAS,CAAC,EAAG,EAAG,EAAGioP,GACnBoka,MAAO,UAGFjtiB,EAAI2tyB,mBAAmBQ,kBAAkB9zgC,GAAQ+K,GAAUA,EAAO7P,KAAK,MAAQ6P,EAAQm5J,EAChG,CAjEoB6v2B,CAAwBpuyB,EAAK+tyB,EAAmBC,EAAiBC,EAAoB1pM,IAAe2oM,IAAeK,EAAW,GAAKG,IAAcL,EAAS,GAoC9K,SAA4Bj6gC,EAAMi7gC,EAAetxgC,GAE/C,MAAO,gBAAmBA,EAAQ,KADlBsxgC,EAAgB,kBAAoB,IACA,KAAQ/1E,GAAWll8B,GAAQ,SACjF,CAvCmLk7gC,CAAmBR,GAAeP,EAAUjC,KAAegC,EAAU,GAyCxP,SAA6BnmD,EAAW+mD,EAAYD,EAAoBlxgC,GAKtE,MAAO,iBAFQmxgC,EAAa,4BADXD,EAAqB,OAAS,QACuB,IAEjC,IAAMlxgC,EAAQ,KACjDgb,EAFFov8B,EAAY9s9B,GAAQ8s9B,GAAaA,EAAY,CAACA,IAE7B,SAAUt99B,GACzB,OAAOyu8B,GAAWzu8B,EACpB,IAAG0L,KAAK,gBAAkB,SAC5B,CAlD6Pg5gC,CAAoBR,EAAmBC,EAAiBC,EAAoB1pM,IAAc8nM,EAfrV,CAgBF,CAMO,SAASmC,GAAmBtr/B,EAAUyq/B,EAAoBlyB,EAAYkxB,EAAWnyB,EAAQ8xB,GAC9F,GAAKpp/B,EAYL,OARcyo/B,GAAWzo/B,EAQlB+hC,CAPG,CACRu17B,OAAQA,EACRiB,WAAYA,EACZkxB,UAAWA,EACXgB,mBAAoBA,EACpBngiB,eAAgBtqd,EAASsqd,gBAEPtqd,EAAU,EAAGop/B,EACnC,CASA,SAASY,GAAcuB,EAAgBC,GAGrC,MAAO,uBADsBA,EACtB,UAAoC5D,GAA0B,MAAS2D,EAAvE,sCACT,CAkBA,SAASrB,GAAuBptyB,EAAK5sO,EAAM2J,GACzC,OAAOijO,EAAI2tyB,mBAAmBQ,kBAAkB/6gC,EAAM2J,EACxD,CAaO,SAAS4xgC,GAAoCnpQ,EAAQz3mB,GAG1D,OAAO6t1B,GAFKp2O,EAAOt4oB,UAAU+r4B,cAAclr2B,EAAW,SACpCy3mB,EAAOopQ,gBAE3B,CACO,SAASC,GAA2Bpx5B,EAAOg+3B,GAChD,IAAI763B,EAAUnD,EAAM5xH,IAAI,WACxB,OAAkB,MAAX+0H,EAAkBA,EACR,aAAf663B,EAA4B,CAAC,EAAG,IAAM,EAC1C,CAOA,IAAIqzB,GAEJ,WACE,SAASA,IACPpmhC,KAAKqmhC,eAAiB,CAAC,EAIvBrmhC,KAAKsmhC,iBAAmBlmD,IAC1B,CA4DA,OA1DAgmD,EAA0B1mhC,UAAU6mhC,mBAAqB,WACvD,MAAO,aAAevmhC,KAAKsmhC,kBAC7B,EAEAF,EAA0B1mhC,UAAUwlhC,kBAAoB,SAAUJ,EAAY7iE,EAAU8wC,GACtF,IAAIx3iB,EAA0B,aAAfw3iB,EAA4B/y/B,KAAKumhC,qBAAuB,KACnEpo0B,EAASy0yB,GAAiB,CAC5Brl4B,MAAO001B,EACP118B,KAAMu4gC,EACN/xB,WAAYA,EACZx3iB,SAAUA,IAGZ,OAAIvgZ,GAASmjJ,GACJA,GAMPn+M,KAAKqmhC,eAAe9qkB,GAAYp9P,EAAO9pM,MAChC8pM,EAAOzlH,QAElB,EAkBA0t7B,EAA0B1mhC,UAAU+lhC,kBAAoB,SAAUr1/B,EAAMylJ,GACtE,IAAI2w2B,EAAW,CAAC,EAEZ70gC,GAAQkkK,GACV,EAAKA,GAAQ,SAAU4w2B,GACrB,OAAOp9nB,EAAOm9nB,EAAUC,EAC1B,IAEAp9nB,EAAOm9nB,EAAU3w2B,GAGnB,IAAIguF,EAAY7jQ,KAAKumhC,qBAGrB,OADAvmhC,KAAKqmhC,eAAexixB,GAAa2ixB,EAC1B,IAAM3ixB,EAAY,IAAMzzO,EAAO,GACxC,EAEOg2/B,CACT,CApEA,GClPO,SAASM,GAA2Btmf,GACzC,IAUIumf,EACAC,EACA5C,EACAM,EAbAxnQ,EAAS18O,EAAI08O,OACbz3mB,EAAY+6X,EAAI/6X,UAChB4r2B,EAAiB7we,EAAI6we,eACrBzhgC,EAAOstwB,EAAOt4oB,UACdqi5B,EAAcr3gC,EAAKs3gC,iBAAiB,oBACpCC,EAAgBF,EAAYxmhC,OAC5Bc,EAAQ27wB,EAAOszP,YAAY/q2B,GAC3B2h3B,EAAar1gC,GAAQxQ,GACrBgkhC,EAAcc,GAAoCnpQ,EAAQz3mB,GAO9D,GAAI0h3B,EAAgB,GAAKC,IAAeD,EAAe,CACrD,IAAIE,EAwCR,SAAiC9lhC,EAAO27wB,EAAQz3mB,EAAWwh3B,EAAa5kE,GAEtE,IAAIzy8B,EAAOstwB,EAAOt4oB,UACd0i5B,EAAsBxz/B,GAAOvyB,GAAO,SAAU+lhC,EAAqBxp2B,EAAKo9L,GAC1E,IAAIqsqB,EAAU33gC,EAAK819B,iBAAiBxqnB,GACpC,OAA6BosqB,GAAuBC,IAA+B,IAApBA,EAAQ9o4B,SAA4C,MAAvB8o4B,EAAQ/+2B,WACtG,IAAG,GACCg/2B,EAAe,GACfC,EAAmB,GACnB3zX,EAAS,GAMb,SAAS4zX,EAAY5p2B,EAAKi6K,GACxB,IAAI6+qB,EAAUhngC,EAAK819B,iBAAiB3toB,GAE/B6+qB,IAAyC,IAA9BA,EAAQ+Q,UAAUlp4B,UAI9B6o4B,EACFxzX,EAAO7xpB,KAAKkhhC,GAAoB,YAAa,CAC3C+B,WAAY,UACZK,YAAaljE,EACbv38B,KAAM8rgC,EAAQpu2B,YACdjnK,MAAOu8K,EACPzzB,UAAWus3B,EAAQjqgC,SAGrB66gC,EAAavlhC,KAAK67K,GAClB2p2B,EAAiBxlhC,KAAK20gC,EAAQjqgC,OAElC,CAEA,OA1BAs6gC,EAAYxmhC,OAAS,EAAKwmhC,GAAa,SAAUlvrB,GAC/C2vrB,EAAY1X,GAAiBpggC,EAAM61J,EAAWsyL,GAAMA,EACtD,IACE,EAAKx2V,EAAOmmhC,GAuBP,CACLF,aAAcA,EACdC,iBAAkBA,EAClB3zX,OAAQA,EAEZ,CAjF0B8zX,CAAwBrmhC,EAAO27wB,EAAQz3mB,EAAWwh3B,EAAa1B,GACrFwB,EAAcM,EAAgBG,aAC9BR,EAAkBK,EAAgBI,iBAClCrD,EAAYiD,EAAgBvzX,OAE5B4wX,EAAY2C,EAAgBG,aAAa,EAC3C,MAAO,GAAIL,EAAe,CACxB,IAAIvQ,EAAUhngC,EAAK819B,iBAAiBuhD,EAAY,IAChDvC,EAAYqC,EAAc/W,GAAiBpggC,EAAM61J,EAAWwh3B,EAAY,IACxED,EAAkBpQ,EAAQjqgC,IAC5B,MACE+3gC,EAAYqC,EAAcK,EAAa7lhC,EAAM,GAAKA,EAIpD,IAAIsmhC,EAAsB7kD,GAAgB9lN,GACtCw+O,EAAamsB,GAAuB3qQ,EAAOpywB,MAAQ,GACnD2w/B,EAAW7r/B,EAAKw4U,QAAQ3iL,GACxBqi3B,EAAazW,EAAiB3V,EAAaD,EAC/C,OAAO0nB,GAAoB,UAAW,CACpClu/B,OAAQym+B,EAGRkoB,SAAUvS,IAAmBwW,EAC7BnD,UAAWA,EACX5wX,OAAQ,CAACqvX,GAAoB,YAAa,CACxC+B,WAAY,OACZK,YAAaA,EAGbz6gC,KAAMg9gC,EAGN/C,QAASty/B,GAAKq1/B,GACdvmhC,MAAOwlhC,EACP183B,UAAW283B,KACT5khC,OAAOgihC,GAAa,KAE5B,CC/CA,IAAI,GAAQ,KAEZ,SAAS2D,GAAgBn4gC,EAAM61J,GAC7B,OAAO71J,EAAKw4U,QAAQ3iL,IAAc71J,EAAKike,MAAMpuU,EAC/C,CAEO,IAAIui3B,GAAmC,+BAE1CC,GAEJ,SAAUn/pB,GAGR,SAASm/pB,IAUP,IAAIn79B,EAAmB,OAAXg8T,GAAmBA,EAAOnoX,MAAMP,KAAMI,YAAcJ,KAMhE,OADA0sD,EAAMo79B,wBAA0B,CAAC,EAC1Bp79B,CACT,CA6dA,OAhfAkgX,EAAUi7mB,EAAan/pB,GAqBvBm/pB,EAAYnohC,UAAUgxD,KAAO,SAAUmN,EAAQghe,EAAaykc,GAC1Dtj+B,KAAKk9+B,YAAcl9+B,KAAKmrR,eACxBnrR,KAAK+nhC,SAAWjpa,GAAW,CACzBv1jB,MAAOy+9B,GACP/m9B,MAAOgn9B,KAETjohC,KAAK+nhC,SAAS56+B,QAAU,CACtB4nF,MAAO/0H,MAETA,KAAKq1/B,qBAAqBx37B,EAAQyl6B,IACd,GAAMtj+B,MAAMkohC,cAAgB,IAAI7I,GAAcr/gC,OACpDgghC,gBACd,IAAIxwgC,EAAOxP,KAAKmohC,eAAetq9B,EAAQyl6B,GACvC8kD,GAAS54gC,EAAMxP,MACfA,KAAK+nhC,SAAS56+B,QAAQ39B,KAAOA,EAM7B,GAAMxP,MAAMqohC,oBAAsB74gC,EAWlC84gC,GAAetohC,MAEfA,KAAKuohC,yBAAyB/4gC,EAChC,EAMAq4gC,EAAYnohC,UAAU21/B,qBAAuB,SAAUx37B,EAAQyl6B,GAC7D,IAAIkxB,EAAaF,GAAgBt0/B,MAC7Bs1/B,EAAsBd,EAAaU,GAAgBr37B,GAAU,CAAC,EAK9D2q9B,EAAexohC,KAAK+m+B,QAEpBr60B,GAAew60B,SAASshD,KAC1BA,GAAgB,UAGlB,EAAa3q9B,EAAQyl6B,EAAQlga,WAAWjgkB,IAAInD,KAAK+m+B,UACjD,EAAalp6B,EAAQ79D,KAAK8giB,oBAE1B,GAA0Bjje,EAAQ,QAAS,CAAC,SAC5C79D,KAAKyohC,kBAAkB5q9B,EAAOruD,MAE1Bgl/B,GACFC,GAAiB527B,EAAQy37B,EAAqBd,EAElD,EAEAqzB,EAAYnohC,UAAUus/B,YAAc,SAAUy8B,EAAiBplD,GAE7DolD,EAAkB,EAAa1ohC,KAAK69D,OAAQ6q9B,GAAiB,GAC7D1ohC,KAAKyohC,kBAAkBC,EAAgBl5gC,MACvC,IAAIgl/B,EAAaF,GAAgBt0/B,MAE7Bw0/B,GACFC,GAAiBz0/B,KAAK69D,OAAQ6q9B,EAAiBl0B,GAGjD,IAAI0zB,EAAgB,GAAMlohC,MAAMkohC,cAChCA,EAAcpiR,QACdoiR,EAAclI,gBACd,IAAIxwgC,EAAOxP,KAAKmohC,eAAeO,EAAiBplD,GAChD8kD,GAAS54gC,EAAMxP,MACfA,KAAK+nhC,SAASjiR,QACd9lwB,KAAK+nhC,SAAS56+B,QAAQ39B,KAAOA,EAC7B,GAAMxP,MAAMqohC,oBAAsB74gC,EAClC84gC,GAAetohC,MAEfA,KAAKuohC,yBAAyB/4gC,EAChC,EAEAq4gC,EAAYnohC,UAAU+ohC,kBAAoB,SAAUj5gC,GAIlD,GAAIA,IAAS,GAAoBA,GAG/B,IAFA,IAAIy9B,EAAQ,CAAC,QAEJrsC,EAAI,EAAGA,EAAI4O,EAAKnP,OAAQO,IAC3B4O,EAAK5O,IAAM4O,EAAK5O,GAAGS,OACrB,GAA0BmO,EAAK5O,GAAI,QAASqsC,EAIpD,EAOA46+B,EAAYnohC,UAAUyohC,eAAiB,SAAUtq9B,EAAQyl6B,GAEzD,EAMAukD,EAAYnohC,UAAU4ugC,WAAa,SAAUjm+B,GAIhCroC,KAAKi2gC,aACX3H,WAAWjm+B,EAAO74B,KACzB,EASAq4gC,EAAYnohC,UAAU8kI,QAAU,SAAUwqI,GACxC,IAAI7hM,EAAOw78B,GAAe3ohC,MAE1B,GAAImtE,EAAM,CACR,IAAI39D,EAAO29D,EAAKhgC,QAAQ39B,KACxB,OAAmB,MAAZw/P,EAAmBx/P,EAAOA,EAAKo5gC,cAAc55wB,EACtD,CAKE,OAAO,GAAMhvQ,MAAMwP,IAEvB,EAEAq4gC,EAAYnohC,UAAUkk/B,WAAa,WACjC,IAAIilC,EAAW7ohC,KAAKwkI,UACpB,OAAOqk5B,GAAYA,EAASC,iBAAmBD,EAASC,mBAAqB,CAAC,CAC5Et5gC,KAAMq5gC,GAEV,EAEAhB,EAAYnohC,UAAUo/H,QAAU,SAAUtvH,GACxC,IAAI29D,EAAOw78B,GAAe3ohC,MAE1B,GAAImtE,EAAM,CACR,IAAIhgC,EAAUggC,EAAKhgC,QAMnBA,EAAQ8k+B,WAAazigC,EASjB29D,IAASntE,KAAK+nhC,WAChB56+B,EAAQ39B,KAAOA,EAEnB,CAEA,GAAMxP,MAAMwP,KAAOA,CACrB,EAEAq4gC,EAAYnohC,UAAUqphC,UAAY,WAChC,IAAIlhgC,EAAS7nB,KAAKmD,IAAI,UAAU,GAEhC,GAAI0kB,EACF,OAAO,GAAqBA,EAEhC,EAEAgggC,EAAYnohC,UAAUsihC,iBAAmB,WACvC,OAAO,GAAMhihC,MAAMkohC,aACrB,EAEAL,EAAYnohC,UAAU+rV,UAAY,WAChC,OAAOzrV,KAAKgihC,mBAAmBv2rB,WACjC,EAMAo8rB,EAAYnohC,UAAUu2gC,WAAa,WACjC,OAAO,GAAMj2gC,MAAMqohC,mBACrB,EAEAR,EAAYnohC,UAAUsphC,WAAa,WAEjC,OADchphC,KAAKmD,IAAI,YACL,QACpB,EAEA0khC,EAAYnohC,UAAUuphC,gBAAkB,WACtC,MAA6B,WAAtBjphC,KAAKgphC,YACd,EASAnB,EAAYnohC,UAAUwphC,YAAc,WAClC,IAAIhmC,EAAWlj/B,KAAK+xH,iBAEpB,OAAOmx3B,GAAYA,EAASgmC,aAAehmC,EAASgmC,aACtD,EAiBArB,EAAYnohC,UAAUu3X,cAAgB,SAAU5xN,EAAW4r2B,EAAgBjiwB,GACzE,OAAO03wB,GAA2B,CAChC5pQ,OAAQ98wB,KACRqlK,UAAWA,EACX4r2B,eAAgBA,GAEpB,EAEA4W,EAAYnohC,UAAUom/B,mBAAqB,WACzC,IAAIxiB,EAAUtj+B,KAAKsj+B,QAGnB,GAAI,EAAIj64B,QAAUi64B,IAAWA,EAAQrH,KACnC,OAAO,EAGT,IAAIktD,EAAmBnphC,KAAKun+B,WAAW,aAQvC,OANI4hD,GACEnphC,KAAKwkI,UAAUj7E,QAAUvpD,KAAKun+B,WAAW,wBAC3C4hD,GAAmB,KAIdA,CACX,EAEAtB,EAAYnohC,UAAU4s/B,YAAc,WAClCts/B,KAAK+nhC,SAASjiR,OAChB,EAEA+hR,EAAYnohC,UAAU49/B,oBAAsB,SAAU5y/B,EAAM0jB,EAAO8v+B,GACjE,IAAI56B,EAAUtj+B,KAAKsj+B,QAEf/12B,EAAQ8v4B,GAAa39/B,UAAU49/B,oBAAoB19/B,KAAKI,KAAM0K,EAAM0jB,EAAO8v+B,GAM/E,OAJK3w4B,IACHA,EAAQ+12B,EAAQg6B,oBAAoB5y/B,EAAM0jB,EAAO8v+B,IAG5C3w4B,CACT,EAOAs65B,EAAYnohC,UAAU0phC,kBAAoB,SAAUC,GAClD,OAAOrphC,KAAKi2gC,aAAa6Q,iBAAiBuC,EAC5C,EAMAxB,EAAYnohC,UAAU4phC,eAAiB,WACrC,OAAOtphC,KAAKmD,IAAI,cAClB,EAMA0khC,EAAYnohC,UAAU6phC,wBAA0B,WAC9C,OAAOvphC,KAAKmD,IAAI,uBAClB,EAGA0khC,EAAYnohC,UAAU82Q,OAAS,SAAUgzwB,EAAkBx6wB,GACzDhvQ,KAAKyphC,aAAazphC,KAAKwkI,QAAQwqI,GAAWw6wB,EAC5C,EAEA3B,EAAYnohC,UAAU+rM,SAAW,SAAU+90B,EAAkBx6wB,GAC3D,IAAI06wB,EAAc1phC,KAAK69D,OAAO6r9B,YAE9B,GAAKA,EAAL,CAIA,IAAIr7+B,EAAeruC,KAAK69D,OAAOxvB,aAC3B7+B,EAAOxP,KAAKwkI,QAAQwqI,GAExB,GAAqB,WAAjB3gO,GAA6C,QAAhBq7+B,EAG/B,OAFA1phC,KAAK69D,OAAO6r9B,YAAc,CAAC,OAC3B1phC,KAAK8nhC,wBAA0B,CAAC,GAIlC,IAAK,IAAIlnhC,EAAI,EAAGA,EAAI4ohC,EAAiBnphC,OAAQO,IAAK,CAChD,IACI+ohC,EAAWhC,GAAgBn4gC,EADfg6gC,EAAiB5ohC,IAEjC8ohC,EAAYC,IAAY,EACxB3phC,KAAK8nhC,wBAAwB6B,IAAa,CAC5C,CAhBA,CAiBF,EAEA9B,EAAYnohC,UAAUkqhC,aAAe,SAAUJ,EAAkBx6wB,GAG/D,IAFA,IAAI66wB,EAAS,GAEJjphC,EAAI,EAAGA,EAAI4ohC,EAAiBnphC,OAAQO,IAC3CiphC,EAAO,GAAKL,EAAiB5ohC,GAC7BZ,KAAKouC,WAAWo7+B,EAAiB5ohC,GAAIouQ,GAAYhvQ,KAAKyrM,SAASo+0B,EAAQ76wB,GAAYhvQ,KAAKw2Q,OAAOqzwB,EAAQ76wB,EAE3G,EAEA64wB,EAAYnohC,UAAUqk/B,uBAAyB,WAC7C,GAAgC,QAA5B/j/B,KAAK69D,OAAO6r9B,YACd,MAAO,GAAG3nhC,MAAMnC,KAAKI,KAAKwkI,UAAU034B,cAOtC,IAJA,IAAI4N,EAAyB9phC,KAAK8nhC,wBAC9BiC,EAAY,GAAYD,GACxBrnC,EAAc,GAET7h/B,EAAI,EAAGA,EAAImphC,EAAU1phC,OAAQO,IAAK,CACzC,IAAIykK,EAAYyk3B,EAAuBC,EAAUnphC,IAE7CykK,GAAa,GACfo90B,EAAY5g/B,KAAKwjK,EAErB,CAEA,OAAOo90B,CACT,EAEAolC,EAAYnohC,UAAU0uC,WAAa,SAAUi3H,EAAW2pG,GACtD,IAAI06wB,EAAc1phC,KAAK69D,OAAO6r9B,YAE9B,IAAKA,EACH,OAAO,EAGT,IAAIl6gC,EAAOxP,KAAKwkI,QAAQwqI,GACxB,OAAwB,QAAhB06wB,GAAyBA,EAAY/B,GAAgBn4gC,EAAM61J,OAAiB71J,EAAKqhgC,aAAaxr2B,GAAWliK,IAAI,CAAC,SAAU,YAClI,EAEA0khC,EAAYnohC,UAAUsqhC,6BAA+B,WACnD,GAAIhqhC,KAAK4nhC,IACP,OAAO,EAGT,IAAIqC,EAAyBjqhC,KAAK69D,OAAOqs9B,oBAEzC,QAAKD,KAI0B,IAA3BA,GAKGA,GAA0BA,EAAuB9z+B,QAC1D,EAEA0x+B,EAAYnohC,UAAU+phC,aAAe,SAAUj6gC,EAAMg6gC,GACnD,IAAI7y/B,EAAI62B,EAEJqQ,EAAS79D,KAAK69D,OACdxvB,EAAewvB,EAAOxvB,aACtBwwF,EAAM2q5B,EAAiBnphC,OAE3B,GAAKguC,GAAiBwwF,EAItB,GAAqB,WAAjBxwF,EACFwvB,EAAO6r9B,YAAc,WAChB,GAAqB,aAAjBr7+B,EAA6B,CACjC,GAAgBwvB,EAAO6r9B,eAC1B7r9B,EAAO6r9B,YAAc,CAAC,GAKxB,IAFA,IAAIA,EAAc7r9B,EAAO6r9B,YAEhB9ohC,EAAI,EAAGA,EAAIi+H,EAAKj+H,IAAK,CAC5B,IAAIykK,EAAYmk3B,EAAiB5ohC,GAGjC8ohC,EADIC,EAAWhC,GAAgBn4gC,EAAM61J,KACb,EACxBrlK,KAAK8nhC,wBAAwB6B,GAAYn6gC,EAAK88/B,YAAYjn2B,EAC5D,CACF,MAAO,GAAqB,WAAjBh3H,IAA8C,IAAjBA,EAAuB,CAC7D,IAAI87+B,EAAgBX,EAAiB3q5B,EAAM,GACvC8q5B,EAAWhC,GAAgBn4gC,EAAM26gC,GACrCts9B,EAAO6r9B,cAAe/y/B,EAAK,CAAC,GAAMgz/B,IAAY,EAAMhz/B,GACpD32B,KAAK8nhC,0BAA2Bt69B,EAAK,CAAC,GAAMm89B,GAAYn6gC,EAAK88/B,YAAY6d,GAAgB389B,EAC3F,CACF,EAEAq69B,EAAYnohC,UAAU6ohC,yBAA2B,SAAU/4gC,GAGzD,IAAIxP,KAAK69D,OAAO6r9B,YAAhB,CAIA,IAAIjnC,EAAc,GAEdjz+B,EAAK46gC,eACP56gC,EAAKwywB,MAAK,SAAUlna,GAClB,IAAIgzpB,EAAUt+/B,EAAKqggC,eAAe/0pB,GAE9BgzpB,GAAWA,EAAQzh1B,UACrBo2zB,EAAY5g/B,KAAKi5W,EAErB,IAGE2noB,EAAYpi/B,OAAS,GACvBL,KAAKyphC,aAAaj6gC,EAAMiz+B,EAf1B,CAiBF,EAMAolC,EAAYnhD,cAAgB,SAAUl0wB,GACpC,OAAO9lE,GAAeg60B,cAAcl0wB,EACtC,EAEAq1zB,EAAY3xB,gBAAkB,WAC5B,IAAI1k/B,EAAQq2gC,EAAYnohC,UACxB8R,EAAMjF,KAAO,kBACbiF,EAAM0r+B,YAAc,EACpB1r+B,EAAM64gC,mBAAoB,EAC1B74gC,EAAM84gC,iBAAkB,EACxB94gC,EAAM+4gC,cAAgB,SAEtB/4gC,EAAMg5gC,sBAAwB,YAC9Bh5gC,EAAM00gC,eAAiB,MACzB,CAV8B,GAYvB2B,CACT,CAlfA,CAkfEn73B,IAWF,SAAS473B,GAAetlC,GAGtB,IAAIt4+B,EAAOs4+B,EAAYt4+B,KAElB,GAA0Bs4+B,KAC7BA,EAAYt4+B,KAIhB,SAA2Bs4+B,GACzB,IAAIxz+B,EAAOwz+B,EAAYizB,aACnBwU,EAAWj7gC,EAAKs3gC,iBAAiB,cACjC4D,EAAU,GAKd,OAJA,EAAYD,GAAU,SAAUE,GAC9B,IAAInU,EAAUhngC,EAAK819B,iBAAiBqlD,GACpCnU,EAAQpu2B,aAAesi3B,EAAQ7ohC,KAAK20gC,EAAQpu2B,YAC9C,IACOsi3B,EAAQ79gC,KAAK,IACtB,CAbuB+9gC,CAAkB5nC,IAAgBt4+B,EAEzD,CAaA,SAASs9gC,GAAc76+B,GACrB,OAAOA,EAAQ4nF,MAAMkh5B,aAAa1s9B,OACpC,CAEA,SAAS0+9B,GAAc96+B,GACrB,IAAI618B,EAAc718B,EAAQ4nF,MAE1B,OADAiu3B,EAAYlk3B,QAAQkk3B,EAAYizB,aAAa4U,gBACtCC,EACT,CAEA,SAASA,GAAiBt78B,EAAOriC,GAE3BA,EAAQ8k+B,YAAczi8B,EAAM/oC,IAAM0G,EAAQ8k+B,WAAW1o9B,SACvDpc,EAAQ4nF,MAAMkh5B,aAAa4U,aAAa19+B,EAAQ8k+B,WAEpD,CAGA,SAASmW,GAAS54gC,EAAMwz+B,GACtB,EAAY,GAAmBxz+B,EAAKu7gC,kBAAmBv7gC,EAAKw7gC,qBAAqB,SAAUv28B,GACzFjlE,EAAKy7gC,WAAWx28B,EAAY,GAAay28B,GAAcloC,GACzD,GACF,CAEA,SAASkoC,GAAaloC,EAAa71C,GACjC,IAAIhg4B,EAAOw78B,GAAe3lC,GAO1B,OALI716B,GAEFA,EAAK0m8B,cAAc1mE,GAAWnt8B,MAAMupD,SAG/B4j5B,CACT,CAEA,SAASw7E,GAAe3lC,GACtB,IAAImoC,GAAanoC,EAAY1f,SAAW,CAAC,GAAG6nD,UACxCC,EAAWD,GAAaA,EAAUE,YAAYroC,EAAY5vpB,KAE9D,GAAIg4rB,EAAU,CAGZ,IAAIj+8B,EAAOi+8B,EAASjZ,YAEpB,GAAIhl8B,EAAM,CACR,IAAIm+8B,EAAen+8B,EAAKm+8B,aAEpBA,IACFn+8B,EAAOm+8B,EAAanohC,IAAI6/+B,EAAY5vpB,KAExC,CAEA,OAAOjmR,CACT,CACF,CApFA,EAAa068B,GAAa3X,IAC1B,EAAa2X,GAAaxqB,IAC1Bh3B,GAAYwhD,GAAan73B,IAoFzB,YC5lBA,IAAI6+3B,GAEJ,WACE,SAASA,IACPvrhC,KAAKo7T,MAAQ,IAAI,GACjBp7T,KAAKozV,IAAM,GAAqB,gBAClC,CAwCA,OAtCAm4rB,EAAc7rhC,UAAUgxD,KAAO,SAAU4y6B,EAASr07B,GAAM,EAExDs8+B,EAAc7rhC,UAAU4uH,OAAS,SAAUyG,EAAOuu2B,EAASr07B,EAAKna,GAAU,EAE1Ey2/B,EAAc7rhC,UAAU2l8B,QAAU,SAAUi+B,EAASr07B,GAAM,EAE3Ds8+B,EAAc7rhC,UAAU8rhC,WAAa,SAAUz25B,EAAOuu2B,EAASr07B,EAAKna,GACpE,EAEAy2/B,EAAc7rhC,UAAU+rhC,aAAe,SAAU125B,EAAOuu2B,EAASr07B,EAAKna,GACtE,EAEAy2/B,EAAc7rhC,UAAUgshC,aAAe,SAAU325B,EAAOuu2B,EAASr07B,EAAKna,GACtE,EAOAy2/B,EAAc7rhC,UAAU0i/B,iBAAmB,SAAUupC,EAAcC,EAAQtoD,GAC3E,EASAioD,EAAc7rhC,UAAUmshC,aAAe,SAAUnq9B,GAC/C,IAAI05P,EAAQp7T,KAAKo7T,MAEbA,GACFA,EAAMv1H,SAASnkI,EAEnB,EAEO6p9B,CACT,CA7CA,GAgDA,GAA4BA,IAC5B,GAAgCA,IAChC,YCnDe,SAASO,KACtB,IAAI7sQ,EAAQikN,KACZ,OAAO,SAAU8f,GACf,IAAI548B,EAAS60uB,EAAM+jO,GACf+oC,EAAkB/oC,EAAY+oC,gBAC9BC,IAAkB5h/B,EAAO8tyB,MACzB+zM,IAAwB7h/B,EAAO8h/B,kBAI/Bh0M,EAAQ9tyB,EAAO8tyB,SAAW6zM,IAAmBA,EAAgB7zM,OAC7D8gL,EAAc5u9B,EAAO8h/B,qBAAuBH,IAAmBA,EAAgBG,mBACnF,QAAUF,IAAkB9zM,GAAS+zM,IAAwBjzB,IAAgB,OAC/E,CACF,CC5DA,IAAI,GAAM,GAAUpqB,IAChBtj8B,GAAS,CAAC,GAAI,GAAI,IAClB,GAAWzoC,KAAK4yF,KAChB027B,GAAYtphC,KAAK0xH,MACN,SAAS635B,GAAc/1/B,EAAMjzB,GACxC,GAAKA,EAAL,CAGA,IAEI8t+B,EACAm7C,EACAzrhC,EACAwD,EACAV,EACAZ,EAPA0M,EAAO6mB,EAAK7mB,KACZqvH,EAAMxoG,EAAKwoG,MAOXh5H,EAAI,GAAIA,EACR1B,EAAI,GAAIA,EACRE,EAAI,GAAIA,EACRC,EAAI,GAAIA,EACRO,EAAI,GAAIA,EACRmB,EAAI,GAAIA,EACZ,IAAKpF,EAAI,EAAGwD,EAAI,EAAGxD,EAAIi+H,GAAM,CAIzB,OAHAqy2B,EAAM1h+B,EAAK5O,KACXwD,EAAIxD,EACJyrhC,EAAS,EACDn7C,GACJ,KAAKrr+B,EAGL,KAAKxB,EACDgohC,EAAS,EACT,MACJ,KAAKlohC,EACDkohC,EAAS,EACT,MACJ,KAAKrmhC,EACDqmhC,EAAS,EACT,MACJ,KAAKxnhC,EACD,IAAIZ,EAAIb,EAAE,GACNJ,EAAII,EAAE,GACNi0V,EAAK,GAASj0V,EAAE,GAAKA,EAAE,GAAKA,EAAE,GAAKA,EAAE,IACrCk0V,EAAK,GAASl0V,EAAE,GAAKA,EAAE,GAAKA,EAAE,GAAKA,EAAE,IACrCurO,EAAQw9yB,IAAW/ohC,EAAE,GAAKk0V,EAAIl0V,EAAE,GAAKi0V,GACzC7nV,EAAK5O,IAAMy2V,EACX7nV,EAAK5O,MAAQqD,EACbuL,EAAK5O,IAAM02V,EACX9nV,EAAK5O,MAAQoC,EACbwM,EAAK5O,MAAQy2V,EACb7nV,EAAK5O,MAAQ02V,EACb9nV,EAAK5O,MAAQ+tO,EACbn/N,EAAK5O,MAAQ+tO,EAEbvqO,EADAxD,GAAK,EAEL,MACJ,KAAK0D,EACDxB,EAAE,GAAK0M,EAAK5O,KACZkC,EAAE,GAAK0M,EAAK5O,KACZ,GAAiBkC,EAAGA,EAAGM,GACvBoM,EAAKpL,KAAOtB,EAAE,GACd0M,EAAKpL,KAAOtB,EAAE,GACdA,EAAE,IAAM0M,EAAK5O,KACbkC,EAAE,IAAM0M,EAAK5O,KACb,GAAiBkC,EAAGA,EAAGM,GACvBoM,EAAKpL,KAAOtB,EAAE,GACd0M,EAAKpL,KAAOtB,EAAE,GAEtB,IAAKY,EAAI,EAAGA,EAAI2ohC,EAAQ3ohC,IAAK,CACzB,IAAIqtrB,EAAMzlpB,GAAO5nC,GACjBqtrB,EAAI,GAAKvhrB,EAAK5O,KACdmwrB,EAAI,GAAKvhrB,EAAK5O,KACd,GAAiBmwrB,EAAKA,EAAK3trB,GAC3BoM,EAAKpL,KAAO2srB,EAAI,GAChBvhrB,EAAKpL,KAAO2srB,EAAI,EACpB,CACJ,CACA16pB,EAAK058B,iBAtEL,CAuEJ,CC3EA,IAAI,GAAWlt+B,KAAK4yF,KAChB,GAAU5yF,KAAK4wH,IACf,GAAU5wH,KAAKuxH,IACf,GAAKvxH,KAAKsmC,GACd,SAASmj/B,GAAKrphC,GACV,OAAOJ,KAAK4yF,KAAKxyF,EAAE,GAAKA,EAAE,GAAKA,EAAE,GAAKA,EAAE,GAC5C,CAEA,SAASsphC,GAAOlqhC,EAAGY,GACf,OAAQZ,EAAE,GAAKY,EAAE,GAAKZ,EAAE,GAAKY,EAAE,KAAOqphC,GAAKjqhC,GAAKiqhC,GAAKrphC,GACzD,CAEA,SAASuphC,GAAOnqhC,EAAGY,GACf,OAAQZ,EAAE,GAAKY,EAAE,GAAKZ,EAAE,GAAKY,EAAE,IAAM,EAAI,GACnCJ,KAAK2lT,KAAK+juB,GAAOlqhC,EAAGY,GAC9B,CAEA,SAASwphC,GAAW7kuB,EAAIl2H,EAAIoL,EAAIrlE,EAAIzlG,EAAI8iG,EAAIooD,EAAIC,EAAIuv2B,EAAQx7C,EAAK768B,GAC7D,IAAI278B,EAAM06C,GAAU,GAAK,KACrBC,EAAK,GAAQ36C,IAAQpqrB,EAAK9qH,GAAM,EAC9B,GAAQk1yB,IAAQtgzB,EAAKj6D,GAAM,EAC7Bm15B,GAAM,EAAI,GAAQ56C,IAAQpqrB,EAAK9qH,GAAM,EACnC,GAAQk1yB,IAAQtgzB,EAAKj6D,GAAM,EAC7BnD,EAAUq45B,EAAKA,GAAOzv2B,EAAKA,GAAO0v2B,EAAKA,GAAOzv2B,EAAKA,GACnD7oD,EAAS,IACT4oD,GAAM,GAAS5oD,GACf6oD,GAAM,GAAS7oD,IAEnB,IAAI5xH,GAAKsvB,IAAO8iG,GAAM,EAAI,GACpB,IAAYooD,EAAKA,GAAOC,EAAKA,GACvBD,EAAKA,GAAO0v2B,EAAKA,GACjBzv2B,EAAKA,GAAOwv2B,EAAKA,KAAUzv2B,EAAKA,GAAO0v2B,EAAKA,GAC7Czv2B,EAAKA,GAAOwv2B,EAAKA,MAAS,EACjCE,EAAMnqhC,EAAIw6K,EAAK0v2B,EAAKzv2B,EACpB2v2B,EAAMpqhC,GAAKy6K,EAAKwv2B,EAAKzv2B,EACrBwjF,GAAMknD,EAAK9qH,GAAM,EACf,GAAQk1yB,GAAO66C,EACf,GAAQ76C,GAAO86C,EACjB7lrB,GAAMv1K,EAAKj6D,GAAM,EACf,GAAQu62B,GAAO66C,EACf,GAAQ76C,GAAO86C,EACjB5iuB,EAAQsiuB,GAAO,CAAC,EAAG,GAAI,EAAEG,EAAKE,GAAO3v2B,GAAK0v2B,EAAKE,GAAO3v2B,IACtD96K,EAAI,EAAEsqhC,EAAKE,GAAO3v2B,GAAK0v2B,EAAKE,GAAO3v2B,GACnCl6K,EAAI,GAAG,EAAI0phC,EAAKE,GAAO3v2B,IAAM,EAAI0v2B,EAAKE,GAAO3v2B,GAC7C21zB,EAAS05C,GAAOnqhC,EAAGY,GAOvB,GANIsphC,GAAOlqhC,EAAGY,KAAO,IACjB6v+B,EAAS,IAETy5C,GAAOlqhC,EAAGY,IAAM,IAChB6v+B,EAAS,GAETA,EAAS,EAAG,CACZ,IAAIzz+B,EAAIwD,KAAKogD,MAAM6v7B,EAAS,GAAK,KAAO,IACxCA,EAAc,EAAL,GAAUzz+B,EAAI,EAAK,EAChC,CACAg3B,EAAKk68B,QAAQW,EAAKxwuB,EAAIumG,EAAI/pL,EAAIC,EAAI+sI,EAAO4orB,EAAQd,EAAKl92B,EAC1D,CACA,IAAIi45B,GAAa,mCACbC,GAAY,sCAsNZC,GAAW,SAAUvkqB,GAErB,SAASukqB,IACL,OAAkB,OAAXvkqB,GAAmBA,EAAOnoX,MAAMP,KAAMI,YAAcJ,IAC/D,CAEA,OALA,GAAUithC,EAASvkqB,GAInBukqB,EAAQvthC,UAAUos8B,eAAiB,SAAU1o8B,GAAK,EAC3C6phC,CACX,CAPc,CAOZ,IACF,SAASC,GAAY72/B,GACjB,OAAuB,MAAhBA,EAAKyoG,OAChB,CACA,SAASqu5B,GAAkBx28B,EAAKt6B,GAC5B,IAAIy47B,EAjOR,SAAmCtl+B,GAC/B,IAAI6mB,EAAO,IAAI,GACf,IAAK7mB,EACD,OAAO6mB,EAEX,IAII+2/B,EAJAC,EAAM,EACNC,EAAM,EACNC,EAAWF,EACXG,EAAWF,EAEX1+C,EAAM,GAAUA,IAChB6+C,EAAUj+gC,EAAK/I,MAAMsmhC,IACzB,IAAKU,EACD,OAAOp3/B,EAEX,IAAK,IAAI7zB,EAAI,EAAGA,EAAIirhC,EAAQpthC,OAAQmC,IAAK,CAMrC,IALA,IAAIkrhC,EAAUD,EAAQjrhC,GAClBmrhC,EAASD,EAAQ70gC,OAAO,GACxBq49B,OAAM,EACNpu+B,EAAI4qhC,EAAQjnhC,MAAMumhC,KAAc,GAChCY,EAAO9qhC,EAAEzC,OACJO,EAAI,EAAGA,EAAIgthC,EAAMhthC,IACtBkC,EAAElC,GAAKypK,WAAWvnK,EAAElC,IAGxB,IADA,IAAIotC,EAAM,EACHA,EAAM4/+B,GAAM,CACf,IAAIC,OAAS,EACTC,OAAS,EACT5w2B,OAAK,EACLC,OAAK,EACL60zB,OAAM,EACNhg9B,OAAK,EACL8iG,OAAK,EACL8yL,EAAKyluB,EACL371B,EAAK471B,EACLzu5B,OAAM,EACNszuB,OAAW,EACf,OAAQw7K,GACJ,IAAK,IACDN,GAAOvqhC,EAAEkrC,KACTs/+B,GAAOxqhC,EAAEkrC,KACTkj8B,EAAMtC,EAAIvq+B,EACVgyB,EAAKk68B,QAAQW,EAAKm8C,EAAKC,GACvB,MACJ,IAAK,IACDD,EAAMvqhC,EAAEkrC,KACRs/+B,EAAMxqhC,EAAEkrC,KACRkj8B,EAAMtC,EAAIvq+B,EACVgyB,EAAKk68B,QAAQW,EAAKm8C,EAAKC,GACvB,MACJ,IAAK,IACDD,GAAOvqhC,EAAEkrC,KACTs/+B,GAAOxqhC,EAAEkrC,KACTkj8B,EAAMtC,EAAI/o+B,EACVwwB,EAAKk68B,QAAQW,EAAKm8C,EAAKC,GACvBC,EAAWF,EACXG,EAAWF,EACXK,EAAS,IACT,MACJ,IAAK,IACDN,EAAMvqhC,EAAEkrC,KACRs/+B,EAAMxqhC,EAAEkrC,KACRkj8B,EAAMtC,EAAI/o+B,EACVwwB,EAAKk68B,QAAQW,EAAKm8C,EAAKC,GACvBC,EAAWF,EACXG,EAAWF,EACXK,EAAS,IACT,MACJ,IAAK,IACDN,GAAOvqhC,EAAEkrC,KACTkj8B,EAAMtC,EAAIvq+B,EACVgyB,EAAKk68B,QAAQW,EAAKm8C,EAAKC,GACvB,MACJ,IAAK,IACDD,EAAMvqhC,EAAEkrC,KACRkj8B,EAAMtC,EAAIvq+B,EACVgyB,EAAKk68B,QAAQW,EAAKm8C,EAAKC,GACvB,MACJ,IAAK,IACDA,GAAOxqhC,EAAEkrC,KACTkj8B,EAAMtC,EAAIvq+B,EACVgyB,EAAKk68B,QAAQW,EAAKm8C,EAAKC,GACvB,MACJ,IAAK,IACDA,EAAMxqhC,EAAEkrC,KACRkj8B,EAAMtC,EAAIvq+B,EACVgyB,EAAKk68B,QAAQW,EAAKm8C,EAAKC,GACvB,MACJ,IAAK,IACDp8C,EAAMtC,EAAIzq+B,EACVkyB,EAAKk68B,QAAQW,EAAKpu+B,EAAEkrC,KAAQlrC,EAAEkrC,KAAQlrC,EAAEkrC,KAAQlrC,EAAEkrC,KAAQlrC,EAAEkrC,KAAQlrC,EAAEkrC,MACtEq/+B,EAAMvqhC,EAAEkrC,EAAM,GACds/+B,EAAMxqhC,EAAEkrC,EAAM,GACd,MACJ,IAAK,IACDkj8B,EAAMtC,EAAIzq+B,EACVkyB,EAAKk68B,QAAQW,EAAKpu+B,EAAEkrC,KAASq/+B,EAAKvqhC,EAAEkrC,KAASs/+B,EAAKxqhC,EAAEkrC,KAASq/+B,EAAKvqhC,EAAEkrC,KAASs/+B,EAAKxqhC,EAAEkrC,KAASq/+B,EAAKvqhC,EAAEkrC,KAASs/+B,GAC7GD,GAAOvqhC,EAAEkrC,EAAM,GACfs/+B,GAAOxqhC,EAAEkrC,EAAM,GACf,MACJ,IAAK,IACD6/+B,EAASR,EACTS,EAASR,EACTzu5B,EAAMxoG,EAAKwoG,MACXszuB,EAAW970B,EAAK7mB,KACZ49gC,IAAYx+C,EAAIzq+B,IAChB0phC,GAAUR,EAAMl7K,EAAStzuB,EAAM,GAC/Biv5B,GAAUR,EAAMn7K,EAAStzuB,EAAM,IAEnCqy2B,EAAMtC,EAAIzq+B,EACVyjT,EAAK9kT,EAAEkrC,KACP0jJ,EAAK5uL,EAAEkrC,KACPq/+B,EAAMvqhC,EAAEkrC,KACRs/+B,EAAMxqhC,EAAEkrC,KACR3X,EAAKk68B,QAAQW,EAAK28C,EAAQC,EAAQlmuB,EAAIl2H,EAAI271B,EAAKC,GAC/C,MACJ,IAAK,IACDO,EAASR,EACTS,EAASR,EACTzu5B,EAAMxoG,EAAKwoG,MACXszuB,EAAW970B,EAAK7mB,KACZ49gC,IAAYx+C,EAAIzq+B,IAChB0phC,GAAUR,EAAMl7K,EAAStzuB,EAAM,GAC/Biv5B,GAAUR,EAAMn7K,EAAStzuB,EAAM,IAEnCqy2B,EAAMtC,EAAIzq+B,EACVyjT,EAAKyluB,EAAMvqhC,EAAEkrC,KACb0jJ,EAAK471B,EAAMxqhC,EAAEkrC,KACbq/+B,GAAOvqhC,EAAEkrC,KACTs/+B,GAAOxqhC,EAAEkrC,KACT3X,EAAKk68B,QAAQW,EAAK28C,EAAQC,EAAQlmuB,EAAIl2H,EAAI271B,EAAKC,GAC/C,MACJ,IAAK,IACD1luB,EAAK9kT,EAAEkrC,KACP0jJ,EAAK5uL,EAAEkrC,KACPq/+B,EAAMvqhC,EAAEkrC,KACRs/+B,EAAMxqhC,EAAEkrC,KACRkj8B,EAAMtC,EAAI5o+B,EACVqwB,EAAKk68B,QAAQW,EAAKtprB,EAAIl2H,EAAI271B,EAAKC,GAC/B,MACJ,IAAK,IACD1luB,EAAK9kT,EAAEkrC,KAASq/+B,EAChB371B,EAAK5uL,EAAEkrC,KAASs/+B,EAChBD,GAAOvqhC,EAAEkrC,KACTs/+B,GAAOxqhC,EAAEkrC,KACTkj8B,EAAMtC,EAAI5o+B,EACVqwB,EAAKk68B,QAAQW,EAAKtprB,EAAIl2H,EAAI271B,EAAKC,GAC/B,MACJ,IAAK,IACDO,EAASR,EACTS,EAASR,EACTzu5B,EAAMxoG,EAAKwoG,MACXszuB,EAAW970B,EAAK7mB,KACZ49gC,IAAYx+C,EAAI5o+B,IAChB6nhC,GAAUR,EAAMl7K,EAAStzuB,EAAM,GAC/Biv5B,GAAUR,EAAMn7K,EAAStzuB,EAAM,IAEnCwu5B,EAAMvqhC,EAAEkrC,KACRs/+B,EAAMxqhC,EAAEkrC,KACRkj8B,EAAMtC,EAAI5o+B,EACVqwB,EAAKk68B,QAAQW,EAAK28C,EAAQC,EAAQT,EAAKC,GACvC,MACJ,IAAK,IACDO,EAASR,EACTS,EAASR,EACTzu5B,EAAMxoG,EAAKwoG,MACXszuB,EAAW970B,EAAK7mB,KACZ49gC,IAAYx+C,EAAI5o+B,IAChB6nhC,GAAUR,EAAMl7K,EAAStzuB,EAAM,GAC/Biv5B,GAAUR,EAAMn7K,EAAStzuB,EAAM,IAEnCwu5B,GAAOvqhC,EAAEkrC,KACTs/+B,GAAOxqhC,EAAEkrC,KACTkj8B,EAAMtC,EAAI5o+B,EACVqwB,EAAKk68B,QAAQW,EAAK28C,EAAQC,EAAQT,EAAKC,GACvC,MACJ,IAAK,IACDpw2B,EAAKp6K,EAAEkrC,KACPmvI,EAAKr6K,EAAEkrC,KACPgk8B,EAAMlv+B,EAAEkrC,KACRhc,EAAKlvB,EAAEkrC,KACP8mF,EAAKhyH,EAAEkrC,KAKPy++B,GAJA7kuB,EAAKyluB,EAAK371B,EAAK471B,EACfD,EAAMvqhC,EAAEkrC,KACRs/+B,EAAMxqhC,EAAEkrC,KAEqBhc,EAAI8iG,EAAIooD,EAAIC,EAAI60zB,EAD7Cd,EAAMtC,EAAI/p+B,EAC6CwxB,GACvD,MACJ,IAAK,IACD6mJ,EAAKp6K,EAAEkrC,KACPmvI,EAAKr6K,EAAEkrC,KACPgk8B,EAAMlv+B,EAAEkrC,KACRhc,EAAKlvB,EAAEkrC,KACP8mF,EAAKhyH,EAAEkrC,KAKPy++B,GAJA7kuB,EAAKyluB,EAAK371B,EAAK471B,EACfD,GAAOvqhC,EAAEkrC,KACTs/+B,GAAOxqhC,EAAEkrC,KAEoBhc,EAAI8iG,EAAIooD,EAAIC,EAAI60zB,EAD7Cd,EAAMtC,EAAI/p+B,EAC6CwxB,GAGnE,CACe,MAAXs3/B,GAA6B,MAAXA,IAClBz8C,EAAMtC,EAAInq+B,EACV4xB,EAAKk68B,QAAQW,GACbm8C,EAAME,EACND,EAAME,GAEVJ,EAAUl8C,CACd,CAEA,OADA768B,EAAKy68B,WACEz68B,CACX,CAaoB03/B,CAA0Bp38B,GACtCq38B,EAAY3koB,EAAO,CAAC,EAAGhtW,GAkB3B,OAjBA2x+B,EAAUt6C,UAAY,SAAUr98B,GAC5B,GAAI62/B,GAAY72/B,GACZA,EAAKyoG,QAAQg22B,EAAUtl+B,OACnB8nO,EAAMjhN,EAAK02B,eAEX12B,EAAKo78B,YAAYn6vB,EAAK,OAGzB,CACD,IAAIA,EAAMjhN,EACVy+8B,EAAUrD,YAAYn6vB,EAAK,EAC/B,CACJ,EACA02yB,EAAUliF,eAAiB,SAAU1o8B,GACjCgphC,GAAct3C,EAAW1x+B,GACzBpD,KAAK+0+B,YACT,EACOi5C,CACX,CACO,SAASC,GAAiBt38B,EAAKt6B,GAClC,OAAO,IAAI4w+B,GAAQE,GAAkBx28B,EAAKt6B,GAC9C,CAmCO,SAAS6x+B,GAAUC,EAAY9x+B,GAClCA,EAAOA,GAAQ,CAAC,EAChB,IAAIhmB,EAAO,IAAI,GAqBf,OApBI83/B,EAAW7rzB,OACXjsM,EAAKuwX,SAASunoB,EAAW7rzB,OAE7BjsM,EAAKiuY,SAAS6pnB,EAAW95gC,OACrBgoC,EAAK+x+B,cACLhC,GAAc/1/B,EAAKA,KAAM83/B,EAAWv9D,wBAGhCv06B,EAAKgy+B,QACLh4/B,EAAKy67B,kBAAkBq9D,EAAWv9D,wBAGlCv67B,EAAK+67B,cAAc+8D,GAG3B93/B,EAAKq98B,UAAYy6C,EAAWz6C,UAC5Br98B,EAAKy16B,eAAiBz16B,EAAKy16B,eAC3Bz16B,EAAK1wB,EAAIwohC,EAAWxohC,EACpB0wB,EAAK0mK,GAAKox1B,EAAWpx1B,GACrB1mK,EAAKoj7B,OAAS00E,EAAW10E,OAClBpj7B,CACX,CCjXA,IAAIi4/B,GACA,WACItuhC,KAAK0gQ,GAAK,EACV1gQ,KAAKinW,GAAK,EACVjnW,KAAKD,EAAI,CACb,EAIA4ia,GAAU,SAAUj6C,GAEpB,SAASi6C,EAAOtmX,GACZ,OAAOqsU,EAAO9oX,KAAKI,KAAMq8C,IAASr8C,IACtC,CAQA,OAXA,GAAU2ia,EAAQj6C,GAIlBi6C,EAAOjja,UAAUk0+B,gBAAkB,WAC/B,OAAO,IAAI06C,EACf,EACA3rnB,EAAOjja,UAAUg0+B,UAAY,SAAUp8vB,EAAKhV,GACxCgV,EAAIyvhB,OAAOzkiB,EAAMo+B,GAAKp+B,EAAMviO,EAAGuiO,EAAM2kI,IACrC3vH,EAAI4yiB,IAAI5njB,EAAMo+B,GAAIp+B,EAAM2kI,GAAI3kI,EAAMviO,EAAG,EAAa,EAAV8C,KAAKsmC,GACjD,EACOw5X,CACX,CAba,CAaX,IAEFA,GAAOjja,UAAU6M,KAAO,SACxB,YCzBA,IAAIgihC,GACA,WACIvuhC,KAAK0gQ,GAAK,EACV1gQ,KAAKinW,GAAK,EACVjnW,KAAKk9K,GAAK,EACVl9K,KAAKm9K,GAAK,CACd,EAIAqx2B,GAAW,SAAU9lqB,GAErB,SAAS8lqB,EAAQny+B,GACb,OAAOqsU,EAAO9oX,KAAKI,KAAMq8C,IAASr8C,IACtC,CAmBA,OAtBA,GAAUwuhC,EAAS9lqB,GAInB8lqB,EAAQ9uhC,UAAUk0+B,gBAAkB,WAChC,OAAO,IAAI26C,EACf,EACAC,EAAQ9uhC,UAAUg0+B,UAAY,SAAUp8vB,EAAKhV,GACzC,IAAI5+N,EAAI,SACJO,EAAIq+N,EAAMo+B,GACV19P,EAAIs/N,EAAM2kI,GACVjmW,EAAIshO,EAAMplD,GACV55K,EAAIg/N,EAAMnlD,GACV4tmB,EAAK/pxB,EAAI0C,EACTsnxB,EAAK1nxB,EAAII,EACb4zO,EAAIyvhB,OAAO9iwB,EAAIjD,EAAGgC,GAClBs0O,EAAI0yiB,cAAc/lxB,EAAIjD,EAAGgC,EAAIgoxB,EAAI/mxB,EAAI8mxB,EAAI/nxB,EAAIM,EAAGW,EAAGjB,EAAIM,GACvDg0O,EAAI0yiB,cAAc/lxB,EAAI8mxB,EAAI/nxB,EAAIM,EAAGW,EAAIjD,EAAGgC,EAAIgoxB,EAAI/mxB,EAAIjD,EAAGgC,GACvDs0O,EAAI0yiB,cAAc/lxB,EAAIjD,EAAGgC,EAAIgoxB,EAAI/mxB,EAAI8mxB,EAAI/nxB,EAAIM,EAAGW,EAAGjB,EAAIM,GACvDg0O,EAAI0yiB,cAAc/lxB,EAAI8mxB,EAAI/nxB,EAAIM,EAAGW,EAAIjD,EAAGgC,EAAIgoxB,EAAI/mxB,EAAIjD,EAAGgC,GACvDs0O,EAAI2vhB,WACR,EACOunR,CACX,CAxBc,CAwBZ,IACFA,GAAQ9uhC,UAAU6M,KAAO,UACzB,YCrCA,IAAI,GAAK1J,KAAKsmC,GACV,GAAW,EAAL,GACN,GAAUtmC,KAAK4wH,IACf,GAAU5wH,KAAKuxH,IACfq65B,GAAW5rhC,KAAK2lT,KAChBkmuB,GAAY7rhC,KAAK0xH,MACjB,GAAU1xH,KAAKmjH,IACf,GAAWnjH,KAAK4yF,KAChB,GAAU5yF,KAAK8K,IACf,GAAU9K,KAAKgL,IACf1O,GAAI,KAaR,SAASwvhC,GAAsBvoyB,EAAI30D,EAAIm2H,EAAIl2H,EAAIp6C,EAAQjiI,EAAIuvV,GACvD,IAAIgqrB,EAAMxoyB,EAAKwhE,EACXinuB,EAAMp91B,EAAKC,EACX/3K,GAAMirV,EAAYvvV,GAAMA,GAAM,GAASu5gC,EAAMA,EAAMC,EAAMA,GACzD9jQ,EAAKpxwB,EAAKk1gC,EACV7jQ,GAAMrxwB,EAAKi1gC,EACXE,EAAM1oyB,EAAK2kiB,EACXgkQ,EAAMt91B,EAAKu5lB,EACXgkQ,EAAMpnuB,EAAKmje,EACXkkQ,EAAMv91B,EAAKs5lB,EACX2gK,GAAOmjG,EAAME,GAAO,EACpBpjG,GAAOmjG,EAAME,GAAO,EACpBz64B,EAAKw64B,EAAMF,EACXz64B,EAAK464B,EAAMF,EACXt64B,EAAKD,EAAKA,EAAKH,EAAKA,EACpBt0I,EAAIu3I,EAASjiI,EACbvU,EAAIguhC,EAAMG,EAAMD,EAAMD,EACtBpshC,GAAK0xI,EAAK,GAAK,EAAI,GAAK,GAAS,GAAQ,EAAGt0I,EAAIA,EAAI00I,EAAK3zI,EAAIA,IAC7DouhC,GAAOpuhC,EAAIuzI,EAAKG,EAAK7xI,GAAK8xI,EAC1B22yB,IAAQtq7B,EAAI0zI,EAAKH,EAAK1xI,GAAK8xI,EAC3Bi2oB,GAAO5pxB,EAAIuzI,EAAKG,EAAK7xI,GAAK8xI,EAC1Bk2oB,IAAQ7pxB,EAAI0zI,EAAKH,EAAK1xI,GAAK8xI,EAC3B064B,EAAMD,EAAMvjG,EACZyjG,EAAMhkG,EAAMQ,EACZyjG,EAAM3kQ,EAAMihK,EACZ2jG,EAAM3kQ,EAAMihK,EAKhB,OAJIujG,EAAMA,EAAMC,EAAMA,EAAMC,EAAMA,EAAMC,EAAMA,IAC1CJ,EAAMxkQ,EACN0gK,EAAMzgK,GAEH,CACHjqhB,GAAIwuxB,EACJjorB,GAAImklB,EACJhlsB,IAAK2kiB,EACLt5lB,IAAKu5lB,EACLpje,GAAIsnuB,GAAO534B,EAASv3I,EAAI,GACxB2xL,GAAI05vB,GAAO9zyB,EAASv3I,EAAI,GAEhC,CC3DA,IAAIwvhC,GACA,WACIvvhC,KAAK0gQ,GAAK,EACV1gQ,KAAKinW,GAAK,EACVjnW,KAAKsuW,GAAK,EACVtuW,KAAKD,EAAI,EACTC,KAAK6oxB,WAAa,EAClB7oxB,KAAK8oxB,SAAqB,EAAVjmxB,KAAKsmC,GACrBnpC,KAAK4kW,WAAY,EACjB5kW,KAAKwvhC,aAAe,CACxB,EAIAtiN,GAAU,SAAUxkd,GAEpB,SAASwkd,EAAO7wxB,GACZ,OAAOqsU,EAAO9oX,KAAKI,KAAMq8C,IAASr8C,IACtC,CAWA,OAdA,GAAUkt0B,EAAQxkd,GAIlBwkd,EAAOxt0B,UAAUk0+B,gBAAkB,WAC/B,OAAO,IAAI27C,EACf,EACAriN,EAAOxt0B,UAAUg0+B,UAAY,SAAUp8vB,EAAKhV,ID+DzC,SAAmBgV,EAAKhV,GAC3B,IAAI3rM,EACA2gH,EAAS,GAAQgrF,EAAMviO,EAAG,GAC1B2s0B,EAAc,GAAQpqmB,EAAMgsI,IAAM,EAAG,GACrCmhrB,EAAYn44B,EAAS,EAEzB,GAAKm44B,GADgB/iN,EAAc,EACnC,CAOA,GAJK+iN,IACDn44B,EAASo1rB,EACTA,EAAc,GAEdA,EAAcp1rB,EAAQ,CACtB,IAAIssN,EAAMtsN,EACVA,EAASo1rB,EACTA,EAAc9oe,CAClB,CACA,IAAIilb,EAAavmjB,EAAMumjB,WAAYC,EAAWxmjB,EAAMwmjB,SACpD,IAAIx8uB,MAAMu8uB,KAAev8uB,MAAMw8uB,GAA/B,CAGA,IAAIpohB,EAAKp+B,EAAMo+B,GAAIumG,EAAK3kI,EAAM2kI,GAC1BrC,IAActiI,EAAMsiI,UACpBslb,EAAM,GAAQpB,EAAWD,GACzBjysB,EAAMszsB,EAAM,IAAOA,EAAM,GAE7B,GADAtzsB,EAAMz3E,KAAM+qxB,EAAMtzsB,GACZ0gE,EAASn4I,GAGV,GAAI+qxB,EAAM,GAAM/qxB,GACjBm4O,EAAIyvhB,OAAOrmgB,EAAKppH,EAAS,GAAQuxoB,GAAa5hb,EAAK3vN,EAAS,GAAQuxoB,IACpEvxiB,EAAI4yiB,IAAIxphB,EAAIumG,EAAI3vN,EAAQuxoB,EAAYC,GAAWlkb,GAC3C8ne,EAAcvt0B,KACdm4O,EAAIyvhB,OAAOrmgB,EAAKgskB,EAAc,GAAQ5jD,GAAW7hb,EAAKyle,EAAc,GAAQ5jD,IAC5ExxiB,EAAI4yiB,IAAIxphB,EAAIumG,EAAIyle,EAAa5jD,EAAUD,EAAYjkb,QAGtD,CACD,IAAI8qrB,OAAW,EACXC,OAAS,EACTC,OAAW,EACXC,OAAS,EACTC,OAAO,EACPC,OAAO,EACPC,OAAO,EACPC,OAAO,EACPC,OAAS,EACTC,OAAS,EACTC,OAAgB,EAChBC,OAAgB,EAChBC,OAAM,EACNC,OAAM,EACNC,OAAO,EACPC,OAAO,EACPC,EAAMp54B,EAAS,GAAQuxoB,GACvB8nQ,EAAMr54B,EAAS,GAAQuxoB,GACvB+nQ,EAAOlkN,EAAc,GAAQ5jD,GAC7B+nQ,EAAOnkN,EAAc,GAAQ5jD,GAC7BgoQ,EAAS5mQ,EAAM/qxB,GACnB,GAAI2xhC,EAAQ,CACR,IAAItB,EAAeltzB,EAAMktzB,aACrBA,IACA74/B,EAxFhB,SAA+BthB,GAC3B,IAAIopN,EACJ,GAAI9sN,GAAQ0D,GAAK,CACb,IAAIwpH,EAAMxpH,EAAGhV,OACb,IAAKw+H,EACD,OAAOxpH,EAGPopN,EADQ,IAAR5/F,EACM,CAACxpH,EAAG,GAAIA,EAAG,GAAI,EAAG,GAEX,IAARwpH,EACC,CAACxpH,EAAG,GAAIA,EAAG,GAAIA,EAAG,GAAIA,EAAG,IAElB,IAARwpH,EACCxpH,EAAGrT,OAAOqT,EAAG,IAGbA,CAEd,MAEIopN,EAAM,CAACppN,EAAIA,EAAIA,EAAIA,GAEvB,OAAOopN,CACX,CAgEqBsyzB,CAAsBvB,GAAeE,EAAW/4/B,EAAG,GAAIg5/B,EAASh5/B,EAAG,GAAIi5/B,EAAWj5/B,EAAG,GAAIk5/B,EAASl5/B,EAAG,IAE9G,IAAIq6/B,EAAS,GAAQ154B,EAASo1rB,GAAe,EAO7C,GANAojN,EAAO,GAAQkB,EAAQpB,GACvBG,EAAO,GAAQiB,EAAQnB,GACvBG,EAAO,GAAQgB,EAAQtB,GACvBO,EAAO,GAAQe,EAAQrB,GACvBS,EAAgBF,EAAS,GAAQJ,EAAMC,GACvCM,EAAgBF,EAAS,GAAQH,EAAMC,IACnCC,EAAS/whC,IAAKgxhC,EAAShxhC,MACvBmxhC,EAAMh54B,EAAS,GAAQwxoB,GACvBynQ,EAAMj54B,EAAS,GAAQwxoB,GACvB0nQ,EAAO9jN,EAAc,GAAQ7jD,GAC7B4nQ,EAAO/jN,EAAc,GAAQ7jD,GACzBqB,EAAM,IAAI,CACV,IAAI+mQ,EA1JxB,SAAmB7qyB,EAAI30D,EAAIm2H,EAAIl2H,EAAIoL,EAAIrlE,EAAIgxL,EAAIC,GAC3C,IAAIwouB,EAAOtpuB,EAAKxhE,EACZ+qyB,EAAOz/1B,EAAKD,EACZ2/1B,EAAO3ouB,EAAK3rH,EACZu01B,EAAO3ouB,EAAKjxL,EACZr4H,EAAIiyhC,EAAOH,EAAOE,EAAOD,EAC7B,KAAI/xhC,EAAIA,EAAID,IAIZ,MAAO,CAACinP,GADRhnP,GAAKgyhC,GAAQ3/1B,EAAKh6D,GAAM455B,GAAQjryB,EAAKtpD,IAAO19L,GAC3B8xhC,EAAMz/1B,EAAKryL,EAAI+xhC,EACpC,CA+I+Bxp2B,CAAU+o2B,EAAKC,EAAKH,EAAMC,EAAMH,EAAKC,EAAKK,EAAMC,GAC3D,GAAII,EAAM,CACN,IAAI7qyB,EAAKsqyB,EAAMO,EAAK,GAChBx/1B,EAAKk/1B,EAAMM,EAAK,GAChBrpuB,EAAK0ouB,EAAMW,EAAK,GAChBv/1B,EAAK6+1B,EAAMU,EAAK,GAChBjwhC,EAAI,EAAI,GAAQythC,IAAUroyB,EAAKwhE,EAAKn2H,EAAKC,IAAO,GAAS00D,EAAKA,EAAK30D,EAAKA,GAAM,GAASm2H,EAAKA,EAAKl2H,EAAKA,KAAQ,GAC9GpuL,EAAI,GAAS2thC,EAAK,GAAKA,EAAK,GAAKA,EAAK,GAAKA,EAAK,IACpDb,EAAgB,GAAQF,GAAS544B,EAASh0I,IAAMtC,EAAI,IACpDqvhC,EAAgB,GAAQF,GAASzjN,EAAcpp0B,IAAMtC,EAAI,GAC7D,CACJ,CAER,CACA,GAAK8vhC,EAGA,GAAIV,EAAgBjxhC,GAAG,CACxB,IAAImyhC,EAAU,GAAQ1B,EAAUQ,GAC5BmB,EAAQ,GAAQ1B,EAAQO,GACxBoB,EAAM7C,GAAsB6B,EAAMC,EAAMC,EAAKC,EAAKr54B,EAAQg64B,EAAS1srB,GACnE6srB,EAAM9C,GAAsB2B,EAAKC,EAAKK,EAAMC,EAAMv54B,EAAQi64B,EAAO3srB,GACrEttH,EAAIyvhB,OAAOrmgB,EAAK8wxB,EAAI9wxB,GAAK8wxB,EAAIpryB,GAAI6gH,EAAKuqrB,EAAIvqrB,GAAKuqrB,EAAI//1B,IAC/C2+1B,EAAgBF,GAAUoB,IAAYC,EACtCj6yB,EAAI4yiB,IAAIxphB,EAAK8wxB,EAAI9wxB,GAAIumG,EAAKuqrB,EAAIvqrB,GAAImprB,EAAe1B,GAAU8C,EAAI//1B,GAAI+/1B,EAAIpryB,IAAKsoyB,GAAU+C,EAAIhg2B,GAAIgg2B,EAAIrryB,KAAMw+G,IAGxG0srB,EAAU,GAAKh6yB,EAAI4yiB,IAAIxphB,EAAK8wxB,EAAI9wxB,GAAIumG,EAAKuqrB,EAAIvqrB,GAAIqqrB,EAAS5C,GAAU8C,EAAI//1B,GAAI+/1B,EAAIpryB,IAAKsoyB,GAAU8C,EAAI9/1B,GAAI8/1B,EAAI5puB,KAAMg9C,GACjHttH,EAAI4yiB,IAAIxphB,EAAIumG,EAAI3vN,EAAQo34B,GAAU8C,EAAIvqrB,GAAKuqrB,EAAI9/1B,GAAI8/1B,EAAI9wxB,GAAK8wxB,EAAI5puB,IAAK8muB,GAAU+C,EAAIxqrB,GAAKwqrB,EAAI//1B,GAAI+/1B,EAAI/wxB,GAAK+wxB,EAAI7puB,KAAMg9C,GACnH2srB,EAAQ,GAAKj6yB,EAAI4yiB,IAAIxphB,EAAK+wxB,EAAI/wxB,GAAIumG,EAAKwqrB,EAAIxqrB,GAAIsqrB,EAAO7C,GAAU+C,EAAI//1B,GAAI+/1B,EAAI7puB,IAAK8muB,GAAU+C,EAAIhg2B,GAAIgg2B,EAAIrryB,KAAMw+G,GAErH,MAEIttH,EAAIyvhB,OAAOrmgB,EAAKgwxB,EAAKzprB,EAAK0prB,GAC1Br5yB,EAAI4yiB,IAAIxphB,EAAIumG,EAAI3vN,EAAQuxoB,EAAYC,GAAWlkb,QAnB/CttH,EAAIyvhB,OAAOrmgB,EAAKgwxB,EAAKzprB,EAAK0prB,GAqBxBjkN,EAAcvt0B,IAAO2xhC,EAGlBT,EAAgBlxhC,IACjBmyhC,EAAU,GAAQ5B,EAAUW,GAE5BmB,EAAM7C,GAAsBiC,EAAMC,EAAMP,EAAKC,EAAK7jN,IADlD6kN,EAAQ,GAAQ5B,EAAQU,IAC+CzrrB,GACvE6srB,EAAM9C,GAAsB+B,EAAKC,EAAKH,EAAMC,EAAM/jN,GAAc4kN,EAAS1srB,GAC7EttH,EAAI0vhB,OAAOtmgB,EAAK8wxB,EAAI9wxB,GAAK8wxB,EAAIpryB,GAAI6gH,EAAKuqrB,EAAIvqrB,GAAKuqrB,EAAI//1B,IAC/C4+1B,EAAgBF,GAAUmB,IAAYC,EACtCj6yB,EAAI4yiB,IAAIxphB,EAAK8wxB,EAAI9wxB,GAAIumG,EAAKuqrB,EAAIvqrB,GAAIoprB,EAAe3B,GAAU8C,EAAI//1B,GAAI+/1B,EAAIpryB,IAAKsoyB,GAAU+C,EAAIhg2B,GAAIgg2B,EAAIrryB,KAAMw+G,IAGxG2srB,EAAQ,GAAKj6yB,EAAI4yiB,IAAIxphB,EAAK8wxB,EAAI9wxB,GAAIumG,EAAKuqrB,EAAIvqrB,GAAIsqrB,EAAO7C,GAAU8C,EAAI//1B,GAAI+/1B,EAAIpryB,IAAKsoyB,GAAU8C,EAAI9/1B,GAAI8/1B,EAAI5puB,KAAMg9C,GAC7GttH,EAAI4yiB,IAAIxphB,EAAIumG,EAAIyle,EAAagiN,GAAU8C,EAAIvqrB,GAAKuqrB,EAAI9/1B,GAAI8/1B,EAAI9wxB,GAAK8wxB,EAAI5puB,IAAK8muB,GAAU+C,EAAIxqrB,GAAKwqrB,EAAI//1B,GAAI+/1B,EAAI/wxB,GAAK+wxB,EAAI7puB,IAAKg9C,GACvH0srB,EAAU,GAAKh6yB,EAAI4yiB,IAAIxphB,EAAK+wxB,EAAI/wxB,GAAIumG,EAAKwqrB,EAAIxqrB,GAAIqqrB,EAAS5C,GAAU+C,EAAI//1B,GAAI+/1B,EAAI7puB,IAAK8muB,GAAU+C,EAAIhg2B,GAAIgg2B,EAAIrryB,KAAMw+G,MAIrHttH,EAAI0vhB,OAAOtmgB,EAAKkwxB,EAAM3prB,EAAK4prB,GAC3Bv5yB,EAAI4yiB,IAAIxphB,EAAIumG,EAAIyle,EAAa5jD,EAAUD,EAAYjkb,IAnBnDttH,EAAI0vhB,OAAOtmgB,EAAKkwxB,EAAM3prB,EAAK4prB,EAqBnC,MA5GIv5yB,EAAIyvhB,OAAOrmgB,EAAIumG,GA6GnB3vH,EAAI2vhB,WApHJ,CAbA,CAkIJ,CCxMQ,CAA4B3vhB,EAAKhV,EACrC,EACA4qmB,EAAOxt0B,UAAUws+B,WAAa,WAC1B,OAAOls+B,KAAKsiO,MAAMumjB,aAAe7oxB,KAAKsiO,MAAMwmjB,UACrC9oxB,KAAKsiO,MAAMviO,IAAMC,KAAKsiO,MAAMgsI,EACvC,EACO4+d,CACX,CAhBa,CAgBX,IACFA,GAAOxt0B,UAAU6M,KAAO,SACxB,YCjCA,IAAImlhC,GACA,WACI1xhC,KAAK0gQ,GAAK,EACV1gQ,KAAKinW,GAAK,EACVjnW,KAAKD,EAAI,EACTC,KAAKsuW,GAAK,CACd,EAIAqjrB,GAAQ,SAAUjpqB,GAElB,SAASipqB,EAAKt1+B,GACV,OAAOqsU,EAAO9oX,KAAKI,KAAMq8C,IAASr8C,IACtC,CAaA,OAhBA,GAAU2xhC,EAAMjpqB,GAIhBipqB,EAAKjyhC,UAAUk0+B,gBAAkB,WAC7B,OAAO,IAAI89C,EACf,EACAC,EAAKjyhC,UAAUg0+B,UAAY,SAAUp8vB,EAAKhV,GACtC,IAAIr+N,EAAIq+N,EAAMo+B,GACV19P,EAAIs/N,EAAM2kI,GACVz/C,EAAgB,EAAV3kT,KAAKsmC,GACfmuM,EAAIyvhB,OAAO9iwB,EAAIq+N,EAAMviO,EAAGiD,GACxBs0O,EAAI4yiB,IAAIjmxB,EAAGjB,EAAGs/N,EAAMviO,EAAG,EAAGynT,GAAK,GAC/BlwE,EAAIyvhB,OAAO9iwB,EAAIq+N,EAAMgsI,GAAItrW,GACzBs0O,EAAI4yiB,IAAIjmxB,EAAGjB,EAAGs/N,EAAMgsI,GAAI,EAAG9mD,GAAK,EACpC,EACOmquB,CACX,CAlBW,CAkBT,IACFA,GAAKjyhC,UAAU6M,KAAO,OACtB,YC/BO,SAAS,GAAU+qO,EAAKhV,EAAO2kiB,GAClC,IAAInhpB,EAASw8G,EAAMx8G,OACfx6E,EAASg3L,EAAMh3L,OACnB,GAAIA,GAAUA,EAAOjrC,QAAU,EAAG,CAC9B,GAAIylH,EAAQ,CACR,IAAI8r6B,ECLD,SAAsBtm/B,EAAQw6E,EAAQ+r6B,EAAQC,GACzD,IAII/+pB,EACAC,EACAnlX,EACAF,EAPAokhC,EAAM,GACN9uhC,EAAI,GACJ6nL,EAAK,GACLC,EAAK,GAKT,GAAI+m2B,EAAY,CACZjkhC,EAAM,CAACkyD,IAAUA,KACjBpyD,EAAM,EAAC,KAAW,KAClB,IAAK,IAAI/M,EAAI,EAAGi+H,EAAMvzF,EAAOjrC,OAAQO,EAAIi+H,EAAKj+H,IAC1C,GAAMiN,EAAKA,EAAKy9B,EAAO1qC,IACvB,GAAM+M,EAAKA,EAAK29B,EAAO1qC,IAE3B,GAAMiN,EAAKA,EAAKikhC,EAAW,IAC3B,GAAMnkhC,EAAKA,EAAKmkhC,EAAW,GAC/B,CACA,IAASlxhC,EAAI,EAAGi+H,EAAMvzF,EAAOjrC,OAAQO,EAAIi+H,EAAKj+H,IAAK,CAC/C,IAAIu0I,EAAQ7pG,EAAO1qC,GACnB,GAAIixhC,EACA9+pB,EAAYznV,EAAO1qC,EAAIA,EAAI,EAAIi+H,EAAM,GACrCm0P,EAAY1nV,GAAQ1qC,EAAI,GAAKi+H,OAE5B,CACD,GAAU,IAANj+H,GAAWA,IAAMi+H,EAAM,EAAG,CAC1Bkz5B,EAAIlwhC,KAAK,GAAQypC,EAAO1qC,KACxB,QACJ,CAEImyX,EAAYznV,EAAO1qC,EAAI,GACvBoyX,EAAY1nV,EAAO1qC,EAAI,EAE/B,CACA,GAAMqC,EAAG+vX,EAAWD,GACpB,GAAQ9vX,EAAGA,EAAG6iH,GACd,IAAIo2qB,EAAK,GAAW/mpB,EAAO49O,GACvB4hW,EAAK,GAAWx/kB,EAAO69O,GACvBlkR,EAAMotrB,EAAKvnE,EACH,IAAR7lnB,IACAotrB,GAAMptrB,EACN6lnB,GAAM7lnB,GAEV,GAAQg8E,EAAI7nL,GAAIi5xB,GAChB,GAAQnxmB,EAAI9nL,EAAG0xtB,GACf,IAAIq9T,EAAM,GAAM,GAAI784B,EAAO21C,GACvBmn2B,EAAM,GAAM,GAAI984B,EAAO41C,GACvB+m2B,IACA,GAAME,EAAKA,EAAKnkhC,GAChB,GAAMmkhC,EAAKA,EAAKrkhC,GAChB,GAAMskhC,EAAKA,EAAKpkhC,GAChB,GAAMokhC,EAAKA,EAAKtkhC,IAEpBokhC,EAAIlwhC,KAAKmwhC,GACTD,EAAIlwhC,KAAKowhC,EACb,CAIA,OAHIJ,GACAE,EAAIlwhC,KAAKkwhC,EAAI5z+B,SAEV4z+B,CACX,CDxDgCG,CAAa5m/B,EAAQw6E,EAAQmhpB,EAAW3kiB,EAAM6vzB,kBAClE76yB,EAAIyvhB,OAAOz7tB,EAAO,GAAG,GAAIA,EAAO,GAAG,IAEnC,IADA,IAAIuzF,EAAMvzF,EAAOjrC,OACRO,EAAI,EAAGA,GAAKqmwB,EAAYpooB,EAAMA,EAAM,GAAIj+H,IAAK,CAClD,IAAIqxhC,EAAML,EAAkB,EAAJhxhC,GACpBwxhC,EAAMR,EAAkB,EAAJhxhC,EAAQ,GAC5BkC,EAAIwoC,GAAQ1qC,EAAI,GAAKi+H,GACzBy4G,EAAI0yiB,cAAcioQ,EAAI,GAAIA,EAAI,GAAIG,EAAI,GAAIA,EAAI,GAAItvhC,EAAE,GAAIA,EAAE,GAC9D,CACJ,KACK,CACDw0O,EAAIyvhB,OAAOz7tB,EAAO,GAAG,GAAIA,EAAO,GAAG,IAC1B1qC,EAAI,EAAb,IAAK,IAAW4B,EAAI8oC,EAAOjrC,OAAQO,EAAI4B,EAAG5B,IACtC02O,EAAI0vhB,OAAO17tB,EAAO1qC,GAAG,GAAI0qC,EAAO1qC,GAAG,GAE3C,CACAqmwB,GAAa3vhB,EAAI2vhB,WACrB,CACJ,CErBA,IAAIorR,GACA,WACIryhC,KAAKsrC,OAAS,KACdtrC,KAAK8lH,OAAS,EACd9lH,KAAKmyhC,iBAAmB,IAC5B,EAIAvo/B,GAAW,SAAU8+U,GAErB,SAAS9+U,EAAQyS,GACb,OAAOqsU,EAAO9oX,KAAKI,KAAMq8C,IAASr8C,IACtC,CAOA,OAVA,GAAU4pC,EAAS8+U,GAInB9+U,EAAQlqC,UAAUk0+B,gBAAkB,WAChC,OAAO,IAAIy+C,EACf,EACAzo/B,EAAQlqC,UAAUg0+B,UAAY,SAAUp8vB,EAAKhV,GACzC,GAAqBgV,EAAKhV,GAAO,EACrC,EACO14L,CACX,CAZc,CAYZ,IAEFA,GAAQlqC,UAAU6M,KAAO,UACzB,YCxBA,IAAI+lhC,GACA,WACItyhC,KAAKsrC,OAAS,KACdtrC,KAAKyg9B,QAAU,EACfzg9B,KAAK8lH,OAAS,EACd9lH,KAAKmyhC,iBAAmB,IAC5B,EAIAlxnB,GAAY,SAAUv4C,GAEtB,SAASu4C,EAAS5kX,GACd,OAAOqsU,EAAO9oX,KAAKI,KAAMq8C,IAASr8C,IACtC,CAaA,OAhBA,GAAUiha,EAAUv4C,GAIpBu4C,EAASvha,UAAUm0+B,gBAAkB,WACjC,MAAO,CACHz2N,OAAQ,OACRhgpB,KAAM,KAEd,EACA6jS,EAASvha,UAAUk0+B,gBAAkB,WACjC,OAAO,IAAI0+C,EACf,EACArxnB,EAASvha,UAAUg0+B,UAAY,SAAUp8vB,EAAKhV,GAC1C,GAAqBgV,EAAKhV,GAAO,EACrC,EACO2+L,CACX,CAlBe,CAkBb,IACFA,GAASvha,UAAU6M,KAAO,WAC1B,YC9BA,IAAI,GAA8B,CAAC,EAC/BgmhC,GACA,WACIvyhC,KAAK4nT,GAAK,EACV5nT,KAAK0xL,GAAK,EACV1xL,KAAK88L,GAAK,EACV98L,KAAKy3H,GAAK,EACVz3H,KAAKyg9B,QAAU,CACnB,EAIA32L,GAAQ,SAAUpha,GAElB,SAASoha,EAAKztuB,GACV,OAAOqsU,EAAO9oX,KAAKI,KAAMq8C,IAASr8C,IACtC,CA8CA,OAjDA,GAAU8pxB,EAAMpha,GAIhBoha,EAAKpqxB,UAAUm0+B,gBAAkB,WAC7B,MAAO,CACHz2N,OAAQ,OACRhgpB,KAAM,KAEd,EACA0spB,EAAKpqxB,UAAUk0+B,gBAAkB,WAC7B,OAAO,IAAI2+C,EACf,EACAzoQ,EAAKpqxB,UAAUg0+B,UAAY,SAAUp8vB,EAAKhV,GACtC,IAAIslF,EACAl2H,EACAoL,EACArlE,EACJ,GAAIz3H,KAAKu1+B,iBAAkB,CACvB,IAAIwB,EAAiBV,GAAqB,GAA6B/zwB,EAAOtiO,KAAKqU,OACnFuzS,EAAKmvrB,EAAenvrB,GACpBl2H,EAAKqlzB,EAAerlzB,GACpBoL,EAAKi6yB,EAAej6yB,GACpBrlE,EAAKs/2B,EAAet/2B,EACxB,MAEImwL,EAAKtlF,EAAMslF,GACXl2H,EAAK4wC,EAAM5wC,GACXoL,EAAKwlC,EAAMxlC,GACXrlE,EAAK6qG,EAAM7qG,GAEf,IAAIgp1B,EAAUn+uB,EAAMm+uB,QACJ,IAAZA,IAGJnpuB,EAAIyvhB,OAAOn/c,EAAIl2H,GACX+uxB,EAAU,IACV3jxB,EAAK8qH,GAAM,EAAI64pB,GAAW3jxB,EAAK2jxB,EAC/Bhp1B,EAAKi6D,GAAM,EAAI+uxB,GAAWhp1B,EAAKgp1B,GAEnCnpuB,EAAI0vhB,OAAOlqkB,EAAIrlE,GACnB,EACAqypB,EAAKpqxB,UAAU8yhC,QAAU,SAAU1vhC,GAC/B,IAAIw/N,EAAQtiO,KAAKsiO,MACjB,MAAO,CACHA,EAAMslF,IAAM,EAAI9kT,GAAKw/N,EAAMxlC,GAAKh6L,EAChCw/N,EAAM5wC,IAAM,EAAI5uL,GAAKw/N,EAAM7qG,GAAK30H,EAExC,EACOgnxB,CACX,CAnDW,CAmDT,IACFA,GAAKpqxB,UAAU6M,KAAO,OACtB,YChEA,IAAI2zH,GAAM,GACNuy5B,GACA,WACIzyhC,KAAK4nT,GAAK,EACV5nT,KAAK0xL,GAAK,EACV1xL,KAAK88L,GAAK,EACV98L,KAAKy3H,GAAK,EACVz3H,KAAK0yhC,KAAO,EACZ1yhC,KAAK2yhC,KAAO,EACZ3yhC,KAAKyg9B,QAAU,CACnB,EAIJ,SAASmyE,GAAatwzB,EAAOljO,EAAGyzhC,GAC5B,IAAIC,EAAOxwzB,EAAMwwzB,KACbC,EAAOzwzB,EAAMywzB,KACjB,OAAY,MAARD,GAAwB,MAARC,EACT,EACFF,EAAY10E,GAAoB,IAAS77uB,EAAMslF,GAAItlF,EAAMowzB,KAAMpwzB,EAAMwwzB,KAAMxwzB,EAAMxlC,GAAI19L,IACrFyzhC,EAAY10E,GAAoB,IAAS77uB,EAAM5wC,GAAI4wC,EAAMqwzB,KAAMrwzB,EAAMywzB,KAAMzwzB,EAAM7qG,GAAIr4H,IAInF,EACFyzhC,EAAY,GAAwB,IAAavwzB,EAAMslF,GAAItlF,EAAMowzB,KAAMpwzB,EAAMxlC,GAAI19L,IACjFyzhC,EAAY,GAAwB,IAAavwzB,EAAM5wC,GAAI4wC,EAAMqwzB,KAAMrwzB,EAAM7qG,GAAIr4H,GAG9F,CACA,IAAI4zhC,GAAe,SAAUtqqB,GAEzB,SAASsqqB,EAAY32+B,GACjB,OAAOqsU,EAAO9oX,KAAKI,KAAMq8C,IAASr8C,IACtC,CAwDA,OA3DA,GAAUgzhC,EAAatqqB,GAIvBsqqB,EAAYtzhC,UAAUm0+B,gBAAkB,WACpC,MAAO,CACHz2N,OAAQ,OACRhgpB,KAAM,KAEd,EACA415B,EAAYtzhC,UAAUk0+B,gBAAkB,WACpC,OAAO,IAAI6+C,EACf,EACAO,EAAYtzhC,UAAUg0+B,UAAY,SAAUp8vB,EAAKhV,GAC7C,IAAIslF,EAAKtlF,EAAMslF,GACXl2H,EAAK4wC,EAAM5wC,GACXoL,EAAKwlC,EAAMxlC,GACXrlE,EAAK6qG,EAAM7qG,GACXi75B,EAAOpwzB,EAAMowzB,KACbC,EAAOrwzB,EAAMqwzB,KACbG,EAAOxwzB,EAAMwwzB,KACbC,EAAOzwzB,EAAMywzB,KACbtyE,EAAUn+uB,EAAMm+uB,QACJ,IAAZA,IAGJnpuB,EAAIyvhB,OAAOn/c,EAAIl2H,GACH,MAARoh2B,GAAwB,MAARC,GACZtyE,EAAU,IACV,GAAmB74pB,EAAI8quB,EAAM511B,EAAI2jxB,EAASvg1B,IAC1Cwy5B,EAAOxy5B,GAAI,GACX48D,EAAK58D,GAAI,GACT,GAAmBwxD,EAAIih2B,EAAMl75B,EAAIgp1B,EAASvg1B,IAC1Cyy5B,EAAOzy5B,GAAI,GACXzI,EAAKyI,GAAI,IAEbo3G,EAAIs5vB,iBAAiB8hD,EAAMC,EAAM711B,EAAIrlE,KAGjCgp1B,EAAU,IACVhC,GAAe72pB,EAAI8quB,EAAMI,EAAMh21B,EAAI2jxB,EAASvg1B,IAC5Cwy5B,EAAOxy5B,GAAI,GACX4y5B,EAAO5y5B,GAAI,GACX48D,EAAK58D,GAAI,GACTu+0B,GAAe/sxB,EAAIih2B,EAAMI,EAAMt75B,EAAIgp1B,EAASvg1B,IAC5Cyy5B,EAAOzy5B,GAAI,GACX6y5B,EAAO7y5B,GAAI,GACXzI,EAAKyI,GAAI,IAEbo3G,EAAI0yiB,cAAc0oQ,EAAMC,EAAMG,EAAMC,EAAMj21B,EAAIrlE,IAEtD,EACAu75B,EAAYtzhC,UAAU8yhC,QAAU,SAAUpzhC,GACtC,OAAOwzhC,GAAa5yhC,KAAKsiO,MAAOljO,GAAG,EACvC,EACA4zhC,EAAYtzhC,UAAUuzhC,UAAY,SAAU7zhC,GACxC,IAAI0D,EAAI8vhC,GAAa5yhC,KAAKsiO,MAAOljO,GAAG,GACpC,OAAO,GAAe0D,EAAGA,EAC7B,EACOkwhC,CACX,CA7DkB,CA6DhB,IAEFA,GAAYtzhC,UAAU6M,KAAO,eAC7B,YChGA,IAAI2mhC,GACA,WACIlzhC,KAAK0gQ,GAAK,EACV1gQ,KAAKinW,GAAK,EACVjnW,KAAKD,EAAI,EACTC,KAAK6oxB,WAAa,EAClB7oxB,KAAK8oxB,SAAqB,EAAVjmxB,KAAKsmC,GACrBnpC,KAAK4kW,WAAY,CACrB,EAIAqlb,GAAO,SAAUvha,GAEjB,SAASuha,EAAI5tuB,GACT,OAAOqsU,EAAO9oX,KAAKI,KAAMq8C,IAASr8C,IACtC,CAsBA,OAzBA,GAAUiqxB,EAAKvha,GAIfuha,EAAIvqxB,UAAUm0+B,gBAAkB,WAC5B,MAAO,CACHz2N,OAAQ,OACRhgpB,KAAM,KAEd,EACA6spB,EAAIvqxB,UAAUk0+B,gBAAkB,WAC5B,OAAO,IAAIs/C,EACf,EACAjpQ,EAAIvqxB,UAAUg0+B,UAAY,SAAUp8vB,EAAKhV,GACrC,IAAIr+N,EAAIq+N,EAAMo+B,GACV19P,EAAIs/N,EAAM2kI,GACVlnW,EAAI8C,KAAK8K,IAAI20N,EAAMviO,EAAG,GACtB8oxB,EAAavmjB,EAAMumjB,WACnBC,EAAWxmjB,EAAMwmjB,SACjBlkb,EAAYtiI,EAAMsiI,UAClBuurB,EAAQtwhC,KAAKuxH,IAAIy0pB,GACjBuqQ,EAAQvwhC,KAAK4wH,IAAIo1pB,GACrBvxiB,EAAIyvhB,OAAOosR,EAAQpzhC,EAAIkE,EAAGmvhC,EAAQrzhC,EAAIiD,GACtCs0O,EAAI4yiB,IAAIjmxB,EAAGjB,EAAGjD,EAAG8oxB,EAAYC,GAAWlkb,EAC5C,EACOqlb,CACX,CA3BU,CA2BR,IACFA,GAAIvqxB,UAAU6M,KAAO,MACrB,YCzCA,IAAI8mhC,GAAgB,SAAU3qqB,GAE1B,SAAS2qqB,IACL,IAAI3m+B,EAAmB,OAAXg8T,GAAmBA,EAAOnoX,MAAMP,KAAMI,YAAcJ,KAEhE,OADA0sD,EAAMngD,KAAO,WACNmgD,CACX,CAsCA,OA3CA,GAAU2m+B,EAAc3qqB,GAMxB2qqB,EAAa3zhC,UAAU4zhC,iBAAmB,WAGtC,IAFA,IAAI/0yB,EAAQv+O,KAAKsiO,MAAMic,MACnB8siB,EAAYrrxB,KAAKi1+B,eACZr0+B,EAAI,EAAGA,EAAI29O,EAAMl+O,OAAQO,IAC9ByqxB,EAAYA,GAAa9siB,EAAM39O,GAAGq0+B,eAElC5pN,GACArrxB,KAAK+0+B,YAEb,EACAs+C,EAAa3zhC,UAAU6r+B,YAAc,WACjCvr+B,KAAKszhC,mBAGL,IAFA,IAAI/0yB,EAAQv+O,KAAKsiO,MAAMic,OAAS,GAC5Bz8I,EAAQ9hG,KAAK6k9B,iBACRjk9B,EAAI,EAAGA,EAAI29O,EAAMl+O,OAAQO,IACzB29O,EAAM39O,GAAGy1B,MACVkoN,EAAM39O,GAAGyz+B,kBAEb91vB,EAAM39O,GAAGy1B,KAAKy2N,SAAShrJ,EAAM,GAAIA,EAAM,GAAIy8I,EAAM39O,GAAGov+B,uBAE5D,EACAqjD,EAAa3zhC,UAAUg0+B,UAAY,SAAUp8vB,EAAKhV,GAE9C,IADA,IAAIic,EAAQjc,EAAMic,OAAS,GAClB39O,EAAI,EAAGA,EAAI29O,EAAMl+O,OAAQO,IAC9B29O,EAAM39O,GAAG8y+B,UAAUp8vB,EAAKiH,EAAM39O,GAAG0hO,OAAO,EAEhD,EACA+wzB,EAAa3zhC,UAAU8r+B,WAAa,WAEhC,IADA,IAAIjtvB,EAAQv+O,KAAKsiO,MAAMic,OAAS,GACvB39O,EAAI,EAAGA,EAAI29O,EAAMl+O,OAAQO,IAC9B29O,EAAM39O,GAAGuz+B,aAEjB,EACAk/C,EAAa3zhC,UAAUykP,gBAAkB,WAErC,OADAnkP,KAAKszhC,iBAAiB1zhC,KAAKI,MACpB,GAAKN,UAAUykP,gBAAgBvkP,KAAKI,KAC/C,EACOqzhC,CACX,CA7CmB,CA6CjB,IACF,YCpCA,GAZgB,WACZ,SAAShxQ,EAAS6nL,GACdlq8B,KAAKkq8B,WAAaA,GAAc,EACpC,CAOA,OANA7nL,EAAS3ixB,UAAUwjxB,aAAe,SAAU/guB,EAAQorE,GAChDvtH,KAAKkq8B,WAAWro8B,KAAK,CACjBsgD,OAAQA,EACRorE,MAAOA,GAEf,EACO80pB,CACX,CAXe,GCgBf,GAdsB,SAAU35Z,GAE5B,SAASk6Z,EAAe3+wB,EAAGjB,EAAG85L,EAAIrlE,EAAIyy0B,EAAYqpF,GAC9C,IAAI7m+B,EAAQg8T,EAAO9oX,KAAKI,KAAMkq8B,IAAelq8B,KAO7C,OANA0sD,EAAMzoD,EAAS,MAALA,EAAY,EAAIA,EAC1ByoD,EAAM1pD,EAAS,MAALA,EAAY,EAAIA,EAC1B0pD,EAAMowI,GAAW,MAANA,EAAa,EAAIA,EAC5BpwI,EAAM+qE,GAAW,MAANA,EAAa,EAAIA,EAC5B/qE,EAAMngD,KAAO,SACbmgD,EAAM3/C,OAASwmhC,IAAe,EACvB7m+B,CACX,CACA,OAXA,GAAUk2tB,EAAgBl6Z,GAWnBk6Z,CACX,CAbqB,CAanB,ICAF,GAbsB,SAAUl6Z,GAE5B,SAAS8qqB,EAAevvhC,EAAGjB,EAAGjD,EAAGmq8B,EAAYqpF,GACzC,IAAI7m+B,EAAQg8T,EAAO9oX,KAAKI,KAAMkq8B,IAAelq8B,KAM7C,OALA0sD,EAAMzoD,EAAS,MAALA,EAAY,GAAMA,EAC5ByoD,EAAM1pD,EAAS,MAALA,EAAY,GAAMA,EAC5B0pD,EAAM3sD,EAAS,MAALA,EAAY,GAAMA,EAC5B2sD,EAAMngD,KAAO,SACbmgD,EAAM3/C,OAASwmhC,IAAe,EACvB7m+B,CACX,CACA,OAVA,GAAU8m+B,EAAgB9qqB,GAUnB8qqB,CACX,CAZqB,CAYnB,ICbF,IAAIjp3B,GAAS,CAAC,EAAG,GACbkp3B,GAAU,CAAC,EAAG,GACd,GAAQ,IAAI,GACZ,GAAQ,IAAI,GACZC,GAAwB,WACxB,SAASA,EAAqBhg8B,EAAMkvC,GAChC5iI,KAAK2zhC,SAAW,GAChB3zhC,KAAKgkzB,MAAQ,GACbhkzB,KAAK4zhC,QAAU,CAAC,EAAG,GACnB,IAAK,IAAIhzhC,EAAI,EAAGA,EAAI,EAAGA,IACnBZ,KAAK2zhC,SAAS/yhC,GAAK,IAAI,GAE3B,IAASA,EAAI,EAAGA,EAAI,EAAGA,IACnBZ,KAAKgkzB,MAAMpjzB,GAAK,IAAI,GAEpB8yF,GACA1zF,KAAK6zhC,iBAAiBng8B,EAAMkvC,EAEpC,CAkGA,OAjGA8w5B,EAAqBh0hC,UAAUm0hC,iBAAmB,SAAUng8B,EAAMkvC,GAC9D,IAAIo8B,EAAUh/J,KAAK2zhC,SACfpuO,EAAOvlzB,KAAKgkzB,MACZ//yB,EAAIyvF,EAAKzvF,EACTjB,EAAI0wF,EAAK1wF,EACT85L,EAAK74L,EAAIyvF,EAAK30D,MACd04F,EAAKz0H,EAAI0wF,EAAK10D,OAKlB,GAJAggI,EAAQ,GAAG/yJ,IAAIhI,EAAGjB,GAClBg8J,EAAQ,GAAG/yJ,IAAI6wL,EAAI95L,GACnBg8J,EAAQ,GAAG/yJ,IAAI6wL,EAAIrlE,GACnBunC,EAAQ,GAAG/yJ,IAAIhI,EAAGwzH,GACdmL,EACA,IAAK,IAAIhiI,EAAI,EAAGA,EAAI,EAAGA,IACnBo+J,EAAQp+J,GAAGgiI,UAAUA,GAO7B,IAJA,GAAM1tG,IAAIqwxB,EAAK,GAAIvmpB,EAAQ,GAAIA,EAAQ,IACvC,GAAM9pI,IAAIqwxB,EAAK,GAAIvmpB,EAAQ,GAAIA,EAAQ,IACvCumpB,EAAK,GAAGj2yB,YACRi2yB,EAAK,GAAGj2yB,YACC1O,EAAI,EAAGA,EAAI,EAAGA,IACnBZ,KAAK4zhC,QAAQhzhC,GAAK2kzB,EAAK3kzB,GAAG4hL,IAAIxjB,EAAQ,GAE9C,EACA003B,EAAqBh0hC,UAAUioL,UAAY,SAAU9rI,EAAOs35B,GACxD,IAAI2gF,GAAa,EACbC,GAAS5gF,EAGb,OAFA,GAAMln8B,IAAI8zD,IAAUA,KACpB,GAAM9zD,IAAI,EAAG,IACRjM,KAAKg0hC,uBAAuBh0hC,KAAM67C,EAAO,GAAO,GAAOk4+B,EAAO,KAC/DD,GAAa,EACTC,KAIH/zhC,KAAKg0hC,uBAAuBn4+B,EAAO77C,KAAM,GAAO,GAAO+zhC,GAAQ,KAChED,GAAa,EACTC,IAIHA,GACD,GAAMj05B,KAAKqz0B,EAAK2gF,EAAa,GAAQ,IAV1BA,CAanB,EACAJ,EAAqBh0hC,UAAUs0hC,uBAAyB,SAAU5xhC,EAAMy5C,EAAOk35B,EAAOC,EAAO+gF,EAAO11R,GAEhG,IADA,IAAIy1R,GAAa,EACRlzhC,EAAI,EAAGA,EAAI,EAAGA,IAAK,CACxB,IAAI6pM,EAAOzqM,KAAKgkzB,MAAMpjzB,GAGtB,GAFAZ,KAAKi0hC,qBAAqBrzhC,EAAGwB,EAAKuxhC,SAAUpp3B,IAC5CvqK,KAAKi0hC,qBAAqBrzhC,EAAGi7C,EAAM83+B,SAAUF,IACzClp3B,GAAO,GAAKkp3B,GAAQ,IAAMlp3B,GAAO,GAAKkp3B,GAAQ,GAAI,CAElD,GADAK,GAAa,EACTC,EACA,OAAOD,EAEX,IAAII,EAAQrxhC,KAAKmjH,IAAIyt6B,GAAQ,GAAKlp3B,GAAO,IACrC4p3B,EAAQtxhC,KAAKmjH,IAAIukD,GAAO,GAAKkp3B,GAAQ,IACrC5whC,KAAKgL,IAAIqmhC,EAAOC,GAASnhF,EAAMn00B,QAC3Bq15B,EAAQC,EACR,GAAMry7B,MAAMkx2B,EAAOvowB,GAAOyp1B,EAAQ71R,GAGlC,GAAMv8pB,MAAMkx2B,EAAOvowB,EAAM0p1B,EAAQ91R,GAG7C,MACS00M,IACDmhF,EAAQrxhC,KAAKmjH,IAAIyt6B,GAAQ,GAAKlp3B,GAAO,IACrC4p3B,EAAQtxhC,KAAKmjH,IAAIukD,GAAO,GAAKkp3B,GAAQ,IACrC5whC,KAAKgL,IAAIqmhC,EAAOC,GAASphF,EAAMl00B,QAC3Bq15B,EAAQC,EACR,GAAMry7B,MAAMix2B,EAAOtowB,EAAMyp1B,EAAQ71R,GAGjC,GAAMv8pB,MAAMix2B,EAAOtowB,GAAO0p1B,EAAQ91R,IAIlD,CACA,OAAOy1R,CACX,EACAJ,EAAqBh0hC,UAAUu0hC,qBAAuB,SAAUt8rB,EAAK34L,EAAS9+B,GAM1E,IALA,IAAIuqE,EAAOzqM,KAAKgkzB,MAAMrsd,GAClB38T,EAASh7B,KAAK4zhC,QACdn9jB,EAAOz3T,EAAQ,GAAGwjB,IAAIioB,GAAQzvK,EAAO28T,GACrC9pV,EAAM4od,EACN9od,EAAM8od,EACD71d,EAAI,EAAGA,EAAIo+J,EAAQ3+J,OAAQO,IAAK,CACrC,IAAIwzhC,EAASp13B,EAAQp+J,GAAG4hL,IAAIioB,GAAQzvK,EAAO28T,GAC3C9pV,EAAMhL,KAAKgL,IAAIumhC,EAAQvmhC,GACvBF,EAAM9K,KAAK8K,IAAIymhC,EAAQzmhC,EAC3B,CACAuyH,EAAI,GAAKryH,EACTqyH,EAAI,GAAKvyH,CACb,EACO+lhC,CACX,CAjH2B,GAkH3B,YCpHA,IAAItwhC,GAAI,GACJixhC,GAA0B,SAAU3rqB,GAEpC,SAAS2rqB,IACL,IAAI3n+B,EAAmB,OAAXg8T,GAAmBA,EAAOnoX,MAAMP,KAAMI,YAAcJ,KAMhE,OALA0sD,EAAM4n+B,UAAW,EACjB5n+B,EAAMgh7B,aAAc,EACpBhh7B,EAAM6n+B,cAAgB,GACtB7n+B,EAAM8n+B,uBAAyB,GAC/B9n+B,EAAM8wU,QAAU,EACT9wU,CACX,CA+FA,OAxGA,GAAU2n+B,EAAwB3rqB,GAUlC2rqB,EAAuB30hC,UAAUmmM,SAAW,SAAUnkI,EAAIv0B,GACtDu0B,EAAG9hE,KAAKutC,EAASntC,KACrB,EACAq0hC,EAAuB30hC,UAAU0qZ,SAAW,WACxCpqZ,KAAKqU,MAAQ,CAAC,CAClB,EACAgghC,EAAuB30hC,UAAU47I,UAAY,WACzC,OAAOt7I,KAAKw9X,OAChB,EACA62pB,EAAuB30hC,UAAUgs+B,gBAAkB,WAC/C1r+B,KAAKw9X,QAAUx9X,KAAKu0hC,cAAcl0hC,MACtC,EACAg0hC,EAAuB30hC,UAAU+0hC,iBAAmB,WAChDz0hC,KAAKu0hC,cAAgB,GACrBv0hC,KAAKw0hC,uBAAyB,GAC9Bx0hC,KAAKw9X,QAAU,EACfx9X,KAAK0y9B,aACL1y9B,KAAKs0hC,UAAW,CACpB,EACAD,EAAuB30hC,UAAUg1hC,0BAA4B,WACzD10hC,KAAKw0hC,uBAAyB,EAClC,EACAH,EAAuB30hC,UAAUi1hC,eAAiB,SAAUp+E,EAAaq+E,GACjEA,EACA50hC,KAAKw0hC,uBAAuB3yhC,KAAK008B,GAGjCv28B,KAAKu0hC,cAAc1yhC,KAAK008B,GAE5Bv28B,KAAK0y9B,YACT,EACA2hE,EAAuB30hC,UAAUm1hC,gBAAkB,SAAUC,EAAcF,GACvEA,EAAgBA,IAAiB,EACjC,IAAK,IAAIh0hC,EAAI,EAAGA,EAAIk0hC,EAAaz0hC,OAAQO,IACrCZ,KAAK20hC,eAAeG,EAAal0hC,GAAIg0hC,EAE7C,EACAP,EAAuB30hC,UAAUq1hC,gBAAkB,WAC/C,OAAO/0hC,KAAKu0hC,aAChB,EACAF,EAAuB30hC,UAAUs1hC,wBAA0B,WACvD,OAAOh1hC,KAAKw0hC,sBAChB,EACAH,EAAuB30hC,UAAUu1hC,uBAAyB,SAAUvz9B,GAChE,IAAK,IAAI9gE,EAAIZ,KAAKw9X,QAAS58X,EAAIZ,KAAKu0hC,cAAcl0hC,OAAQO,IACtD8gE,GAAMA,EAAG1hE,KAAKu0hC,cAAc3zhC,IAEhC,IAASA,EAAI,EAAGA,EAAIZ,KAAKw0hC,uBAAuBn0hC,OAAQO,IACpD8gE,GAAMA,EAAG1hE,KAAKw0hC,uBAAuB5zhC,GAE7C,EACAyzhC,EAAuB30hC,UAAU6uE,OAAS,WACtCvuE,KAAKy68B,kBACL,IAAK,IAAI758B,EAAIZ,KAAKw9X,QAAS58X,EAAIZ,KAAKu0hC,cAAcl0hC,OAAQO,KAClD218B,EAAcv28B,KAAKu0hC,cAAc3zhC,IACzBywF,OAASrxF,KACrBu28B,EAAYho4B,SACZgo4B,EAAYll3B,OAAS,KAEzB,IAASzwF,EAAI,EAAGA,EAAIZ,KAAKw0hC,uBAAuBn0hC,OAAQO,IAAK,CACzD,IAAI218B,KAAcv28B,KAAKw0hC,uBAAuB5zhC,IAClCywF,OAASrxF,KACrBu28B,EAAYho4B,SACZgo4B,EAAYll3B,OAAS,IACzB,CACJ,EACAgj8B,EAAuB30hC,UAAUykP,gBAAkB,WAC/C,IAAKnkP,KAAK6s+B,MAAO,CAEb,IADA,IAAIn54B,EAAO,IAAI,GAAa3zB,IAAUA,KAAU,KAAW,KAClDn/D,EAAI,EAAGA,EAAIZ,KAAKu0hC,cAAcl0hC,OAAQO,IAAK,CAChD,IAAI218B,EAAcv28B,KAAKu0hC,cAAc3zhC,GACjC269B,EAAYhlB,EAAYpytB,kBAAkB5zN,QAC1Cgm7B,EAAY+Z,sBACZiL,EAAUzvB,eAAeyK,EAAY4Z,kBAAkB/s9B,KAE3DswF,EAAKsvF,MAAMu4yB,EACf,CACAv79B,KAAK6s+B,MAAQn54B,CACjB,CACA,OAAO1zF,KAAK6s+B,KAChB,EACAwnD,EAAuB30hC,UAAUk08B,QAAU,SAAU3v8B,EAAGjB,GACpD,IAAI6x+B,EAAW70+B,KAAKix9B,sBAAsBht9B,EAAGjB,GAE7C,GADWhD,KAAKmkP,kBACPyvtB,QAAQihC,EAAS,GAAIA,EAAS,IACnC,IAAK,IAAIj0+B,EAAI,EAAGA,EAAIZ,KAAKu0hC,cAAcl0hC,OAAQO,IAE3C,GADkBZ,KAAKu0hC,cAAc3zhC,GACrBgz8B,QAAQ3v8B,EAAGjB,GACvB,OAAO,EAInB,OAAO,CACX,EACOqxhC,CACX,CA1G6B,CA0G3B,IACF,YClCA,IAAI,GAAUxxhC,KAAK8K,IACf,GAAU9K,KAAKgL,IACfqnhC,GAAkB,CAAC,EAKhB,SAASC,GAAY94+B,GAC1B,OAAO,GAAKgtW,OAAOhtW,EACrB,CACA,IAAI+4+B,GnBkOG,SAA0Bz+8B,EAAK0+8B,GAClC,IAAIrH,EAAYb,GAAkBx28B,EAAK0+8B,GAWvC,OAVW,SAAU3sqB,GAEjB,SAAS4snB,EAAIj57B,GACT,IAAIqQ,EAAQg8T,EAAO9oX,KAAKI,KAAMq8C,IAASr8C,KAGvC,OAFA0sD,EAAMo/4B,eAAiBkiF,EAAUliF,eACjCp/4B,EAAMgn7B,UAAYs6C,EAAUt6C,UACrBhn7B,CACX,CACA,OAPA,GAAU4o7B,EAAK5snB,GAOR4snB,CACX,CATU,CASR23C,GAEN,EmB1OO,SAASqI,GAAWnjL,EAAU91zB,GACnC,OAAO+4+B,GAAqBjjL,EAAU91zB,EACxC,CAaO,SAASk5+B,GAAc7qhC,EAAM8qhC,GAClCN,GAAgBxqhC,GAAQ8qhC,CAC1B,CA6BO,SAASC,GAAc/qhC,GAC5B,GAAIwqhC,GAAgBv1hC,eAAe+K,GACjC,OAAOwqhC,GAAgBxqhC,EAE3B,CASO,SAASgrhC,GAASvjL,EAAU91zB,EAAMq3C,EAAMwtC,GAC7C,IAAI7qG,EAAO,GAA0B870B,EAAU91zB,GAU/C,OARIq3C,IACa,WAAXwtC,IACFxtC,EAAOii8B,GAAcji8B,EAAMr9D,EAAK8tN,oBAGlCyxyB,GAAWv//B,EAAMq9D,IAGZr9D,CACT,CASO,SAASw//B,GAAUvhpB,EAAU5gT,EAAMwtC,GACxC,IAAI405B,EAAQ,IAAI,GAAQ,CACtBzhhC,MAAO,CACLk2I,MAAO+pP,EACPrwY,EAAGyvF,EAAKzvF,EACRjB,EAAG0wF,EAAK1wF,EACR+7B,MAAO20D,EAAK30D,MACZC,OAAQ00D,EAAK10D,QAEftO,OAAQ,SAAU2lX,GAChB,GAAe,WAAXn1Q,EAAqB,CACvB,IAAI605B,EAAe,CACjBh3/B,MAAOs3W,EAAIt3W,MACXC,OAAQq3W,EAAIr3W,QAEd82/B,EAAMxxnB,SAASqxnB,GAAcji8B,EAAMqi8B,GACrC,CACF,IAEF,OAAOD,CACT,CASA,SAASH,GAAcji8B,EAAMqi8B,GAE3B,IAEI/2/B,EAFAgqI,EAAS+s3B,EAAah3/B,MAAQg3/B,EAAa/2/B,OAC3CD,EAAQ20D,EAAK10D,OAASgqI,EAY1B,OAREhqI,EADED,GAAS20D,EAAK30D,MACP20D,EAAK10D,QAEdD,EAAQ20D,EAAK30D,OACIiqI,EAKZ,CACL/kK,EAHOyvF,EAAKzvF,EAAIyvF,EAAK30D,MAAQ,EAGrBA,EAAQ,EAChB/7B,EAHO0wF,EAAK1wF,EAAI0wF,EAAK10D,OAAS,EAGtBA,EAAS,EACjBD,MAAOA,EACPC,OAAQA,EAEZ,CAEO,IAAI,GnBuGJ,SAAmBg3/B,EAAS35+B,GAG/B,IAFA,IAAI45+B,EAAW,GACXp35B,EAAMm35B,EAAQ31hC,OACTO,EAAI,EAAGA,EAAIi+H,EAAKj+H,IAAK,CAC1B,IAAIs1hC,EAASF,EAAQp1hC,GACrBq1hC,EAASp0hC,KAAKq0hC,EAAO9hD,qBAAoB,GAC7C,CACA,IAAI+hD,EAAa,IAAI,GAAK95+B,GAW1B,OAVA85+B,EAAW9hD,kBACX8hD,EAAWziD,UAAY,SAAUr98B,GAC7B,GAAI62/B,GAAY72/B,GAAO,CACnBA,EAAK068B,WAAWklD,GAChB,IAAI3+yB,EAAMjhN,EAAK02B,aACXuqL,GACAjhN,EAAKo78B,YAAYn6vB,EAAK,EAE9B,CACJ,EACO6+yB,CACX,EmBnHO,SAASP,GAAWv//B,EAAMq9D,GAC/B,GAAKr9D,EAAKy16B,eAAV,CAIA,IACI1o8B,EADWizB,EAAK8tN,kBACH+utB,mBAAmBx/2B,GACpCr9D,EAAKy16B,eAAe1o8B,EAJpB,CAKF,CAKO,SAAS,GAAqBk/N,EAAO+vG,GAI1C,OAHA,GAA0C/vG,EAAOA,EAAO,CACtD+vG,UAAWA,IAEN/vG,CACT,CAKO,SAAS,GAAqB9yJ,GAEnC,OADA,GAA0CA,EAAM8yJ,MAAO9yJ,EAAM8yJ,MAAO9yJ,EAAMn7D,OACnEm7D,CACT,CAUO,IAAI,GAAmB+l6B,GASvB,SAASpx2B,GAAar0H,EAAQqvc,GAGnC,IAFA,IAAIi3kB,EAAM,GAAgB,IAEnBtmhC,GAAUA,IAAWqvc,GAC1B,GAAWi3kB,EAAKtmhC,EAAOqg9B,oBAAqBimE,GAC5CtmhC,EAASA,EAAOuhF,OAGlB,OAAO+k8B,CACT,CAWO,SAAS,GAAetmhC,EAAQ8yH,EAAWg8B,GAShD,OARIh8B,IAAcmn0B,EAAYnn0B,KAC5BA,EAAY,GAAcut1B,kBAAkBvt1B,IAG1Cg8B,IACFh8B,EAAY,GAAc,GAAIA,IAGzB,GAAsB,GAAI9yH,EAAQ8yH,EAC3C,CAQO,SAAS06N,GAAmB3vO,EAAWiV,EAAWg8B,GAEvD,IAAIy33B,EAAyB,IAAjBzz5B,EAAU,IAA6B,IAAjBA,EAAU,IAA6B,IAAjBA,EAAU,GAAW,EAAI//H,KAAKmjH,IAAI,EAAI4c,EAAU,GAAKA,EAAU,IACnH0z5B,EAAyB,IAAjB1z5B,EAAU,IAA6B,IAAjBA,EAAU,IAA6B,IAAjBA,EAAU,GAAW,EAAI//H,KAAKmjH,IAAI,EAAI4c,EAAU,GAAKA,EAAU,IACnHirG,EAAS,CAAe,SAAdlgH,GAAwB0o6B,EAAsB,UAAd1o6B,EAAwB0o6B,EAAQ,EAAiB,QAAd1o6B,GAAuB2o6B,EAAsB,WAAd3o6B,EAAyB2o6B,EAAQ,GAEjJ,OADAzozB,EAAS,GAAeA,EAAQjrG,EAAWg8B,GACpC/7J,KAAKmjH,IAAI6nH,EAAO,IAAMhrO,KAAKmjH,IAAI6nH,EAAO,IAAMA,EAAO,GAAK,EAAI,QAAU,OAASA,EAAO,GAAK,EAAI,SAAW,KACnH,CAEA,SAAS0ozB,GAAW184B,GAClB,OAAQA,EAAGkpkB,OACb,CAWO,SAASyzU,GAAgBC,EAAIC,EAAInxC,GACtC,GAAKkxC,GAAOC,EAAZ,CA4BA,IAvBMC,EAuBFC,GAvBED,EAAQ,CAAC,EAuBOF,EAtBlB5w1B,UAAS,SAAUhsD,GACf084B,GAAW184B,IAAOA,EAAGg94B,OACvBF,EAAM984B,EAAGg94B,MAAQh94B,EAErB,IACO884B,GAkBTD,EAAG7w1B,UAAS,SAAUhsD,GACpB,GAAI084B,GAAW184B,IAAOA,EAAGg94B,KAAM,CAC7B,IAAIC,EAAQF,EAAO/84B,EAAGg94B,MAEtB,GAAIC,EAAO,CACT,IAAIng4B,EAAUog4B,EAAmBl94B,GACjCA,EAAGo0Y,KAAK8ogB,EAAmBD,IAC3BxwC,GAAYzs2B,EAAI8c,EAAS4u1B,EAAiBvI,GAAUnj2B,GAAIwrB,UAC1D,CACF,CACF,GArCA,CAYA,SAAS0x3B,EAAmBl94B,GAC1B,IAAIqzE,EAAM,CACRjpN,EAAG41I,EAAG51I,EACNjB,EAAG62I,EAAG72I,EACNujH,SAAUszB,EAAGtzB,UAOf,OAnCJ,SAAgBszB,GACd,OAAmB,MAAZA,EAAGyoF,KACZ,CA6BQ00zB,CAAOn94B,KACTqzE,EAAIoV,MAAQ+mL,EAAO,CAAC,EAAGxvQ,EAAGyoF,QAGrBpV,CACT,CAcF,CACO,SAAS+p0B,GAAiB3r/B,EAAQooD,GAGvC,OAAOrkE,EAAIic,GAAQ,SAAU6pG,GAC3B,IAAIlxI,EAAIkxI,EAAM,GACdlxI,EAAI,GAAQA,EAAGyvF,EAAKzvF,GACpBA,EAAI,GAAQA,EAAGyvF,EAAKzvF,EAAIyvF,EAAK30D,OAC7B,IAAI/7B,EAAImyI,EAAM,GAGd,OAFAnyI,EAAI,GAAQA,EAAG0wF,EAAK1wF,GAEb,CAACiB,EADRjB,EAAI,GAAQA,EAAG0wF,EAAK1wF,EAAI0wF,EAAK10D,QAE/B,GACF,CAKO,SAASk4/B,GAAeC,EAAYzj8B,GACzC,IAAIzvF,EAAI,GAAQkzhC,EAAWlzhC,EAAGyvF,EAAKzvF,GAC/B64L,EAAK,GAAQq61B,EAAWlzhC,EAAIkzhC,EAAWp4/B,MAAO20D,EAAKzvF,EAAIyvF,EAAK30D,OAC5D/7B,EAAI,GAAQm0hC,EAAWn0hC,EAAG0wF,EAAK1wF,GAC/By0H,EAAK,GAAQ0/5B,EAAWn0hC,EAAIm0hC,EAAWn4/B,OAAQ00D,EAAK1wF,EAAI0wF,EAAK10D,QAGjE,GAAI89J,GAAM74L,GAAKwzH,GAAMz0H,EACnB,MAAO,CACLiB,EAAGA,EACHjB,EAAGA,EACH+7B,MAAO+9J,EAAK74L,EACZ+6B,OAAQy4F,EAAKz0H,EAGnB,CACO,SAASgvhB,GAAWolgB,EAC3Bh3f,EAAK1sc,GACH,IAAIs67B,EAAY3koB,EAAO,CACrBmtjB,WAAW,GACVp2a,GACC/rhB,EAAQ25gC,EAAU35gC,MAAQ,CAC5B8+9B,eAAe,GASjB,GAPAz/4B,EAAOA,GAAQ,CACbzvF,GAAI,EACJjB,GAAI,EACJ+7B,MAAO,EACPC,OAAQ,GAGNo4/B,EACF,OAAuC,IAAhCA,EAAQ52hC,QAAQ,aAAqB6T,EAAMk2I,MAAQ6s4B,EAAQr1hC,MAAM,GAAI,EAASsS,EAAOq/E,GAAO,IAAI,GAAQs67B,IAAc0H,GAAS0B,EAAQ3qhC,QAAQ,UAAW,IAAKuhhC,EAAWt67B,EAAM,SAE3L,CAQO,SAAS2j8B,GAAqBC,EAAKC,EAAKC,EAAKC,EAAKns/B,GACvD,IAAK,IAAI1qC,EAAI,EAAGmjQ,EAAKz4N,EAAOA,EAAOjrC,OAAS,GAAIO,EAAI0qC,EAAOjrC,OAAQO,IAAK,CACtE,IAAIkC,EAAIwoC,EAAO1qC,GAEf,GAAI82hC,GAAkBJ,EAAKC,EAAKC,EAAKC,EAAK30hC,EAAE,GAAIA,EAAE,GAAIihQ,EAAG,GAAIA,EAAG,IAC9D,OAAO,EAGTA,EAAKjhQ,CACP,CACF,CAQO,SAAS40hC,GAAkBJ,EAAKC,EAAKC,EAAKC,EAAKE,EAAKC,EAAKC,EAAKC,GAEnE,IAAInxrB,EAAK6wrB,EAAMF,EACX1wrB,EAAK6wrB,EAAMF,EACX9lG,EAAKomG,EAAMF,EACXI,EAAKD,EAAMF,EAGXI,EAAiBC,GAAexmG,EAAIsmG,EAAIpxrB,EAAIC,GAEhD,GAgCF,SAAkBlpL,GAChB,OAAOA,GAAO,MAAQA,IAAQ,IAChC,CAlCMw62B,CAASF,GACX,OAAO,EAOT,IAAIG,EAAQb,EAAMK,EACdS,EAAQb,EAAMK,EACd1xhC,EAAI+xhC,GAAeE,EAAOC,EAAOzxrB,EAAIC,GAAMoxrB,EAE/C,GAAI9xhC,EAAI,GAAKA,EAAI,EACf,OAAO,EAGT,IAAIpD,EAAIm1hC,GAAeE,EAAOC,EAAO3mG,EAAIsmG,GAAMC,EAE/C,QAAIl1hC,EAAI,GAAKA,EAAI,EAKnB,CAKA,SAASm1hC,GAAerwuB,EAAIl2H,EAAIoL,EAAIrlE,GAClC,OAAOmwL,EAAKnwL,EAAKqlE,EAAKpL,CACxB,CAMO,SAAS2m2B,GAAiBj4f,GAC/B,IAAIk4f,EAAoBl4f,EAAIk4f,kBACxBz1D,EAAiBzic,EAAIyic,eACrBw4B,EAAWj7d,EAAIi7d,SACfk9B,EAAuBv99B,GAASs99B,GAAqB,CACvDlze,UAAWkze,GACTA,EACAx0D,EAAWjB,EAAeiB,SAC1B34sB,EAAiB03sB,EAAe13sB,eAChCymjB,EAAkB,CACpB11nB,cAAe4nxB,EACfp59B,KAAM2w/B,EACN1I,MAAO,CAAC,SAEV/gL,EAAgBkyJ,EAAW,SAAW34sB,EACtC,IAAIqtwB,EAAuBp4f,EAAIo4f,qBAE3BA,GACF,EAAKllhC,GAAKklhC,IAAuB,SAAU3zgC,GACpC3c,GAAO0p0B,EAAiB/szB,KAC3B+szB,EAAgB/szB,GAAO2zgC,EAAqB3zgC,GAC5C+szB,EAAgB+gL,MAAM9w/B,KAAKgjB,GAE/B,IAGF,IAAIs49B,EAASH,GAAU58c,EAAIvmZ,IAC3Bsj2B,EAAOkG,kBAAoBvf,EAC3BqZ,EAAOhytB,eAAiBA,EACxBgytB,EAAOs7C,cAAgB,CACrB/thC,KAAM2w/B,EACNx97B,OAAQ,EAAS,CACf66B,QAAS2i6B,EACTzpL,gBAAiBA,GAChB2mN,GAEP,CAEA,SAASG,GAAgB7+4B,EAAIn4E,GAC3B,IAAIn+C,EAGAs2H,EAAGkpkB,UACLx/rB,EAAUm+C,EAAGm4E,IAGVt2H,GACHs2H,EAAGgsD,SAASnkI,EAEhB,CAEO,SAASi39B,GAAiB3oH,EAAKtu2B,GACpC,GAAIsu2B,EACF,GAAIr+5B,GAAQq+5B,GACV,IAAK,IAAIpv6B,EAAI,EAAGA,EAAIov6B,EAAI3v6B,OAAQO,IAC9B83hC,GAAgB1oH,EAAIpv6B,GAAI8gE,QAG1Bg39B,GAAgB1oH,EAAKtu2B,EAG3B,CAGA6z9B,GAAc,SAAU,IACxBA,GAAc,UAAW,IACzBA,GAAc,SAAU,IACxBA,GAAc,OAAQ,IACtBA,GAAc,UAAW,IACzBA,GAAc,WAAY,IAC1BA,GAAc,OAAQ,IACtBA,GAAc,OAAQ,IACtBA,GAAc,cAAe,IAC7BA,GAAc,MAAO,ICzgBrB,IAAI,GAAQ,KACRqD,GAAgB9M,KAEhB+M,GAEJ,WACE,SAASA,IACP74hC,KAAKo7T,MAAQ,IAAI,GACjBp7T,KAAKozV,IAAM,GAAqB,aAChCpzV,KAAK84hC,WAAah6a,GAAW,CAC3B2yZ,KAAMsnB,GACN939B,MAAO+39B,KAETh5hC,KAAK84hC,WAAW3r/B,QAAU,CACxBoa,KAAMvnD,KAEV,CA8FA,OA5FA64hC,EAAUn5hC,UAAUgxD,KAAO,SAAU4y6B,EAASr07B,GAAM,EAEpD4p/B,EAAUn5hC,UAAU4uH,OAAS,SAAU003B,EAAa1f,EAASr07B,EAAKna,GAIlE,EAMA+jgC,EAAUn5hC,UAAU89rB,UAAY,SAAUwlT,EAAa1f,EAASr07B,EAAKna,GACnE,IAAItlB,EAAOwz+B,EAAYx+2B,QAAQ1vG,GAAWA,EAAQk6O,UAE7Cx/P,GAQLyphC,GAAgBzphC,EAAMslB,EAAS,WACjC,EAMA+jgC,EAAUn5hC,UAAUkpgC,SAAW,SAAU5lB,EAAa1f,EAASr07B,EAAKna,GAClE,IAAItlB,EAAOwz+B,EAAYx+2B,QAAQ1vG,GAAWA,EAAQk6O,UAE7Cx/P,GAQLyphC,GAAgBzphC,EAAMslB,EAAS,SACjC,EAMA+jgC,EAAUn5hC,UAAUmzB,OAAS,SAAUyw8B,EAASr07B,GAC9CjvC,KAAKo7T,MAAMvtE,WACb,EAMAgryB,EAAUn5hC,UAAU2l8B,QAAU,SAAUi+B,EAASr07B,GAAM,EAEvD4p/B,EAAUn5hC,UAAU8rhC,WAAa,SAAUxoC,EAAa1f,EAASr07B,EAAKna,GACpE90B,KAAKsuH,OAAO003B,EAAa1f,EAASr07B,EAAKna,EACzC,EAGA+jgC,EAAUn5hC,UAAU+rhC,aAAe,SAAUzoC,EAAa1f,EAASr07B,EAAKna,GACtE90B,KAAKsuH,OAAO003B,EAAa1f,EAASr07B,EAAKna,EACzC,EAGA+jgC,EAAUn5hC,UAAUgshC,aAAe,SAAU1oC,EAAa1f,EAASr07B,EAAKna,GACtE90B,KAAKsuH,OAAO003B,EAAa1f,EAASr07B,EAAKna,EACzC,EASA+jgC,EAAUn5hC,UAAUmshC,aAAe,SAAUnq9B,GAC3Ci39B,GAAiB34hC,KAAKo7T,MAAO15P,EAC/B,EAEAm39B,EAAUK,iBAAmB,SAAUpkgC,EAAS2/C,GAC9C,GAAM3/C,GAASqkgC,aAAe1k9B,CAChC,EAEAok9B,EAAU3iC,qBACI2iC,EAAUn5hC,UAChB6M,KAAO,SAGRsshC,CACT,CA1GA,GAiHA,SAASO,GAAWv/4B,EAAIluI,EAAOy1+B,GACzBvn2B,GAAMmr2B,GAAqBnr2B,KAClB,aAAVluI,EAAuBw1+B,GAAgBE,IAAexn2B,EAAIun2B,EAE/D,CAEA,SAAS63C,GAAgBzphC,EAAMslB,EAASnpB,GACtC,IAAI05J,EAAY,GAAyB71J,EAAMslB,GAC3Css9B,EAAiBts9B,GAAmC,MAAxBA,EAAQukgC,a9D8mBnC,SAA2BA,GAChC,IAAIj4C,EAAiB9D,GAAiB+7C,GAMtC,OAJsB,MAAlBj4C,GAA0B/D,IAAuB,KACnD+D,EAAiB9D,GAAiB+7C,GAAgBh8C,MAG7C+D,CACT,C8DtnBiEk4C,CAAkBxkgC,EAAQukgC,cAAgB,KAExF,MAAbh03B,EACF,EAAK,GAA2BA,IAAY,SAAUoqnB,GACpD2pQ,GAAW5phC,EAAKkz+B,iBAAiBjzN,GAAU9jxB,EAAOy1+B,EACpD,IAEA5x+B,EAAKq0+B,mBAAkB,SAAUhq2B,GAC/Bu/4B,GAAWv/4B,EAAIluI,EAAOy1+B,EACxB,GAEJ,CAKA,SAAS23C,GAAe5r/B,GACtB,OAAOyr/B,GAAczr/B,EAAQ4nF,MAC/B,CAEA,SAASik6B,GAAgB7r/B,GACvB,IAAI618B,EAAc718B,EAAQ4nF,MACtBuu2B,EAAUn27B,EAAQm27B,QAClBr07B,EAAM9B,EAAQ8B,IACdna,EAAUqY,EAAQrY,QAElBo3/B,EAAoBlpC,EAAY+oC,gBAAgBG,kBAChD3k+B,EAAOpa,EAAQoa,KACf4x+B,EAAerkgC,GAAW,GAAMA,GAASqkgC,aACzC1k9B,EAAay38B,EAAoB,2BAA6BiN,GAAgB5x+B,EAAK4x+B,GAAgBA,EAErG,SAMF,MAJmB,WAAf1k9B,GACFltB,EAAKktB,GAAYuu6B,EAAa1f,EAASr07B,EAAKna,GAGvCykgC,GAAkB9k9B,EAC3B,CAzBA,GAA4Bok9B,IAC5B,GAAgCA,IA0BhC,IAAIU,GAAoB,CACtBC,yBAA0B,CACxBvmB,SAAU,SAAU5q+B,EAAQ8E,GAC1BA,EAAQoa,KAAKky+B,kBAAkBpx/B,EAAQ8E,EAAQ4nF,MAAO5nF,EAAQm27B,QAASn27B,EAAQ8B,IAAK9B,EAAQrY,QAC9F,GAEFw5F,OAAQ,CAKN8j5B,oBAAoB,EACpBa,SAAU,SAAU5q+B,EAAQ8E,GAC1BA,EAAQoa,KAAK+mE,OAAOnhF,EAAQ4nF,MAAO5nF,EAAQm27B,QAASn27B,EAAQ8B,IAAK9B,EAAQrY,QAC3E,IAGJ,YCjMA,IAAI4kgC,GAAgB,2BAChBC,GAAO,mBACPC,GAAgB,mBAYb,SAASx1/B,GAASlzB,EAAIiwC,EAAOhhB,GAClC,IAAI05/B,EAIAtxf,EACAn6gB,EACAipB,EACAyi/B,EANAC,EAAW,EACXC,EAAW,EACX/26B,EAAQ,KAOZ,SAAS7wG,IACP4nhC,GAAW,IAAIxugC,MAAOic,UACtBw7E,EAAQ,KACR/xG,EAAG3Q,MAAM6tB,EAAOipB,GAAQ,GAC1B,CANA8J,EAAQA,GAAS,EAQjB,IAAIugB,EAAK,WAGP,IAFA,IAAIu49B,EAAS,GAEJx7gC,EAAK,EAAGA,EAAKre,UAAUC,OAAQoe,IACtCw7gC,EAAOx7gC,GAAMre,UAAUqe,GAGzBo7gC,GAAW,IAAIrugC,MAAOic,UACtBrZ,EAAQpuB,KACRq3C,EAAO4i/B,EACP,IAAIC,EAAYJ,GAAoB34+B,EAChCg5+B,EAAeL,GAAoB35/B,EACvC25/B,EAAmB,KACnBvxf,EAAOsxf,GAAYM,EAAeJ,EAAWC,GAAYE,EACzDxtgC,aAAau2F,GASTk36B,EACFl36B,EAAQp9F,WAAWzT,EAAM8nhC,GAErB3xf,GAAQ,EACVn2hB,IAEA6wG,EAAQp9F,WAAWzT,GAAOm2hB,GAI9Bwxf,EAAWF,CACb,EAsBA,OAfAn49B,EAAG18C,MAAQ,WACLi+F,IACFv2F,aAAau2F,GACbA,EAAQ,KAEZ,EAMAvhD,EAAGo49B,iBAAmB,SAAUtzJ,GAC9BszJ,EAAmBtzJ,CACrB,EAEO9k0B,CACT,CAuBO,SAASmtxB,GAAe3hoB,EAAKkt0B,EAAQ1uuB,EAAM2uuB,GAChD,IAAInphC,EAAKg8M,EAAIkt0B,GAEb,GAAKlphC,EAAL,CAIA,IAAIophC,EAAWpphC,EAAGwohC,KAAkBxohC,EAChCqphC,EAAmBrphC,EAAG0ohC,IAG1B,GAFe1ohC,EAAGyohC,MAEDjuuB,GAAQ6uuB,IAAqBF,EAAc,CAC1D,GAAY,MAAR3uuB,IAAiB2uuB,EACnB,OAAOnt0B,EAAIkt0B,GAAUE,GAGvBpphC,EAAKg8M,EAAIkt0B,GAAUh2/B,GAASk2/B,EAAU5uuB,EAAuB,aAAjB2uuB,IACzCX,IAAiBY,EACpBpphC,EAAG0ohC,IAAiBS,EACpBnphC,EAAGyohC,IAAQjuuB,CACb,CAEA,OAAOx6S,CAjBP,CAkBF,CAKO,SAAS8T,GAAMkoM,EAAKkt0B,GACzB,IAAIlphC,EAAKg8M,EAAIkt0B,GAETlphC,GAAMA,EAAGwohC,MAEXxohC,EAAG8T,OAAS9T,EAAG8T,QACfkoM,EAAIkt0B,GAAUlphC,EAAGwohC,IAErB,CC7IA,IAAI,GAAQx2D,KACRs3D,GAAsB,CACxBj2C,UAAWld,GAAgBykB,IAAoB,GAC/C35Q,UAAWk1P,GAAgBskB,IAAoB,IAE7C8uC,GAAkB,CACpBtoT,UAAW,SACXoyQ,UAAW,QAGb,SAASm2C,GAAe13C,EAAa23C,GAGnC,OAFkB33C,EAAY43C,mBAAqBJ,GAAoBG,KAGrEtzgC,QAAQC,KAAK,uBAAyBqzgC,EAAY,MAC3CH,GAAoBj2C,UAI/B,CAEA,SAASs2C,GAAmB73C,EAAa23C,GAIvC,OAFe33C,EAAYkjC,gBAAkBuU,GAAgBE,KAG3DtzgC,QAAQC,KAAK,uBAAyBqzgC,EAAY,MAC3C,OAIX,CAEA,IAAIG,GAAkB,CACpBC,mBAAmB,EACnBC,kBAAkB,EAClB/59B,MAAO,SAAU+h7B,EAAa1f,GAC5B,IAAI9z9B,EAAOwz+B,EAAYx+2B,UACnBm25B,EAAY33C,EAAYwnC,uBAAyB,YAEjDyQ,EAAaj4C,EAAYprzB,SAAS+i2B,GAElCO,EADWR,GAAe13C,EAAa23C,EACzBQ,CAASF,GACvBG,EAAcH,EAAW1zD,WAAW,SAEpC6zD,IACF5rhC,EAAK6rhC,UAAU,QAASD,GACxBA,EAAYt1R,OAAQ,GAItB,IAAIltnB,EAAWii5B,GAAmB73C,EAAa23C,GAC3Cpt6B,EAAQ2t6B,EAAYti5B,GAEpB0i5B,EAAgBt2xB,GAAWz3I,GAASA,EAAQ,KAC5Cgu6B,EAAoC,SAArBL,EAAY995B,MAA0C,SAAvB895B,EAAY99Q,OAE9D,IAAK89Q,EAAYti5B,IAAa0i5B,GAAiBC,EAAc,CAI3D,IAAIC,EAAex4C,EAAYsa,oBAC/Bta,EAAYt4+B,KAAM,KAAM449B,EAAQk/B,kBAE3B04B,EAAYti5B,KACfsi5B,EAAYti5B,GAAY4i5B,EACxBhshC,EAAK6rhC,UAAU,oBAAoB,IAGrCH,EAAY995B,KAA4B,SAArB895B,EAAY995B,MAAmB4nI,GAAWk2xB,EAAY995B,MAAQo+5B,EAAeN,EAAY995B,KAC5G895B,EAAY99Q,OAAgC,SAAvB89Q,EAAY99Q,QAAqBp4gB,GAAWk2xB,EAAY99Q,QAAUo+Q,EAAeN,EAAY99Q,MACpH,CAKA,GAHA5twB,EAAK6rhC,UAAU,QAASH,GACxB1rhC,EAAK6rhC,UAAU,WAAYzi5B,IAEtB0q1B,EAAQu/B,iBAAiB7f,IAAgBs4C,EAE5C,OADA9rhC,EAAK6rhC,UAAU,oBAAoB,GAC5B,CACLI,SAAU,SAAUjshC,EAAMsrW,GACxB,IAAI4grB,EAAa14C,EAAYmtB,cAAcr1pB,GACvCypoB,EAAYl7lB,EAAO,CAAC,EAAG6xoB,GAC3B32C,EAAU3r2B,GAAY0i5B,EAAcI,GACpClshC,EAAKmshC,cAAc7grB,EAAK,QAASypoB,EACnC,EAGN,GAEEq3C,GAAc,IAAI,GAClBC,GAAgB,CAClBd,mBAAmB,EACnBC,kBAAkB,EAClB/59B,MAAO,SAAU+h7B,EAAa1f,GAC5B,IAAI0f,EAAYqnC,oBAAqB/mD,EAAQu/B,iBAAiB7f,GAA9D,CAIA,IAAIxz+B,EAAOwz+B,EAAYx+2B,UACnBm25B,EAAY33C,EAAYwnC,uBAAyB,YAEjD2Q,EAAWT,GAAe13C,EAAa23C,GACvC/h5B,EAAWppI,EAAKsshC,UAAU,YAC9B,MAAO,CACLL,SAAUjshC,EAAK46gC,cAAgB,SAAU56gC,EAAMsrW,GAE7C,IAAIgzpB,EAAUt+/B,EAAKqggC,eAAe/0pB,GAElC,GAAIgzpB,GAAWA,EAAQ6sB,GAAY,CACjCiB,GAAY/99B,OAASiw8B,EAAQ6sB,GAC7B,IAAItmhC,EAAQ8mhC,EAASS,IAErBvyoB,EADkB75Y,EAAKushC,uBAAuBjhrB,EAAK,SAC/BzmW,GAEhBunhC,GAAY/99B,OAAO216B,QACrBhk+B,EAAKmshC,cAAc7grB,EAAK,QAAS8grB,GAAY/99B,OAAO216B,OACpDooD,GAAY/99B,OAAO216B,MAAM1tO,OAAQ,GAG/BltnB,KAAYvkI,GACd7E,EAAKmshC,cAAc7grB,EAAK,oBAAoB,EAEhD,CACF,EAAI,KA3BN,CA6BF,GAIEkhrB,GAAuB,CACzBhB,kBAAkB,EAClBiB,aAAc,SAAU34D,GAGtB,IAAI44D,EAA0BhxF,KAC9Bo4B,EAAQyf,YAAW,SAAUC,GAC3B,IAAIkV,EAAUlV,EAAYgmC,aAE1B,IAAIhmC,EAAYimC,kBAAhB,CAIA,IAAIpkgC,EAAMm+9B,EAAYz2+B,KAAO,IAAM2r/B,EAC/BikC,EAAaD,EAAwB/4hC,IAAI0hB,GAExCs3gC,IACHA,EAAa,CAAC,EACdD,EAAwBjwhC,IAAI4Y,EAAKs3gC,IAGnC,GAAMn5C,GAAa509B,MAAQ+tgC,CAV3B,CAWF,IACA74D,EAAQyf,YAAW,SAAUC,GAC3B,IAAIA,EAAYimC,oBAAqB3lD,EAAQu/B,iBAAiB7f,GAA9D,CAIA,IAAIo5C,EAAUp5C,EAAYizB,aACtBomB,EAAS,CAAC,EACV7shC,EAAOwz+B,EAAYx+2B,UACnB235B,EAAa,GAAMn5C,GAAa509B,MAChCusgC,EAAY33C,EAAYwnC,uBAAyB,YACjD5x4B,EAAWii5B,GAAmB73C,EAAa23C,GAC/CnrhC,EAAKwywB,MAAK,SAAUlna,GAClB,IAAIygqB,EAAS/rgC,EAAK88/B,YAAYxxpB,GAC9BuhrB,EAAO9gB,GAAUzgqB,CACnB,IAGAshrB,EAAQp6Q,MAAK,SAAUu5P,GACrB,IAAIzgqB,EAAMuhrB,EAAO9gB,GAMjB,GALkB/rgC,EAAK+ggC,cAAcz1pB,EAAK,oBAKzB,CACf,IAAIypoB,EAAY/0+B,EAAKushC,uBAAuBjhrB,EAAK,SAC7CwiZ,EAAS8+R,EAAQp0sB,QAAQuzrB,IAAWA,EAAS,GAC7CwB,EAAYqf,EAAQ7y+B,QACxBg77B,EAAU3r2B,GAAYoq2B,EAAYsa,oBAAoBhgQ,EAAQ6+R,EAAYpf,EAC5E,CACF,GA3BA,CA4BF,GACF,GC5LE,GAAKl6gC,KAAKsmC,GCMVmz/B,GAEJ,WACE,SAASA,EAAUp4B,EAAYj19B,EAAKst/B,EAAuBC,GAEzDx8hC,KAAKy8hC,cAAgBvxF,KACrBlr8B,KAAKkkgC,WAAaA,EAClBlkgC,KAAKivC,IAAMA,EAKXst/B,EAAwBv8hC,KAAK08hC,uBAAyBH,EAAsBx6hC,QAC5Ey6hC,EAAiBx8hC,KAAK28hC,gBAAkBH,EAAez6hC,QACvD/B,KAAK48hC,aAAeL,EAAsBv6hC,OAAOw6hC,EACnD,CAqYA,OAnYAF,EAAU58hC,UAAU4s/B,YAAc,SAAUhpB,EAASxu8B,GAiBnDwu8B,EAAQgpB,YAAYx39B,GAQpB90B,KAAKy8hC,cAAcz6Q,MAAK,SAAU66Q,GAChC,IAAIC,EAAcD,EAAWC,YAC7BA,GAAeA,EAAYh3R,OAC7B,GACF,EAGAw2R,EAAU58hC,UAAUq9hC,eAAiB,SAAU5v9B,EAAMg96B,GAEnD,GAAKh96B,EAAK+k8B,WAAV,CAIA,IAAIkZ,EAAWprhC,KAAKg9hC,aAAa75hC,IAAIgqE,EAAK+k8B,WAAW3m/B,IAEjD0xgC,EAAO7R,EAASj++B,QAEhBuhU,GADey7oB,GAAWihC,EAAS8R,sBAAwBD,GAAQA,EAAK/Q,oBAAsB/+8B,EAAKgw9B,gBAAkB/R,EAASvisB,WACzGuisB,EAAS18qB,KAAO,KACrCikqB,EAAesqB,GAAQA,EAAKtqB,aAEhC,MAAO,CACLjkqB,KAAMA,EACNgkqB,MAH0B,MAAhBC,EAAuB9vgC,KAAKuK,KAAKulgC,EAAejkqB,GAAQ,KAIlEikqB,aAAcA,EAZhB,CAcF,EAEA2pB,EAAU58hC,UAAU2rhC,YAAc,SAAU+R,GAC1C,OAAOp9hC,KAAKg9hC,aAAa75hC,IAAIi6hC,EAC/B,EAUAd,EAAU58hC,UAAU29hC,kBAAoB,SAAUr6C,EAAaz77B,GAC7D,IAAI6j+B,EAAWprhC,KAAKg9hC,aAAa75hC,IAAI6/+B,EAAY5vpB,KAG7CkqsB,EADOt6C,EAAYx+2B,UACJj7E,QAMf2i+B,EAAoBd,EAAS8R,oBAAsB31+B,EAAKiy+B,0BAA4B8D,GAAWlS,EAASpo+B,UACxGk1xB,EAAQ8qK,EAAY7/+B,IAAI,UAAYm6hC,GAAWt6C,EAAY7/+B,IAAI,kBAG/DwvgC,EAA2D,QAA5C3vB,EAAY7/+B,IAAI,wBAAoCm6hC,EAAU,KACjFt6C,EAAY+oC,gBAAkBX,EAASj++B,QAAU,CAC/C+++B,kBAAmBA,EACnBvZ,aAAcA,EACdz6L,MAAOA,EAEX,EAEAokN,EAAU58hC,UAAU69hC,iBAAmB,SAAUj6D,GAC/C,IAAI6nD,EAAYnrhC,KACZw9hC,EAAcrS,EAAU6R,aAAe9xF,KAC3Co4B,EAAQyf,YAAW,SAAUC,GAC3B,IAAIgW,EAAchW,EAAYsmC,iBAC1B8T,EAAap6C,EAAY5vpB,IAC7BoqsB,EAAYvxhC,IAAImxhC,EAAY,CAC1B7xgC,GAAI6xgC,EACJr2+B,KAAM,KACNy3I,KAAM,KACNx7I,UAAWgg8B,EAAYumC,0BACvB2T,mBAAoBlkC,KAAiBhW,EAAYy6C,oBAAsBz6C,EAAYy6C,sBACnF50sB,YAAa,EACb6lB,KAAM7rW,KAAKogD,MAAM+18B,GAAe,KAChCzv8B,MAAO,IAGT4h+B,EAAUuS,MAAM16C,EAAaA,EAAY+kC,SAC3C,GACF,EAEAuU,EAAU58hC,UAAUi+hC,kBAAoB,WACtC,IAAIC,EAAe59hC,KAAKy8hC,cACpBn5D,EAAUtj+B,KAAKivC,IAAI2oJ,WACnB3oJ,EAAMjvC,KAAKivC,IACf,EAAKjvC,KAAK48hC,cAAc,SAAU5s+B,GAChC,IAAI6t+B,EAASD,EAAaz6hC,IAAI6sD,EAAQojS,MAAQwqsB,EAAa3xhC,IAAI+jD,EAAQojS,IAAK,CAAC,GAQ7EvwN,KAAS7yE,EAAQiR,OAASjR,EAAQis+B,cAPrB,IAQbjs+B,EAAQiR,OAASjhE,KAAK89hC,uBAAuB9t+B,EAAS6t+B,EAAQv6D,EAASr07B,GACvE+gB,EAAQis+B,cAAgBj8hC,KAAK+9hC,wBAAwB/t+B,EAAS6t+B,EAAQv6D,EAASr07B,EACjF,GAAGjvC,KACL,EAEAs8hC,EAAU58hC,UAAUs+hC,YAAc,SAAUz2+B,EAAMwtE,EAAOuu2B,EAASr07B,GAChE,IAAI6p/B,EAAavx+B,EAAKux+B,WAClB3r/B,EAAU2r/B,EAAW3r/B,QACzBA,EAAQ4nF,MAAQA,EAChB5nF,EAAQm27B,QAAUA,EAClBn27B,EAAQ8B,IAAMA,EACd6p/B,EAAWmF,SAAW12+B,EAAKiy+B,yBAE3Bx5hC,KAAK09hC,MAAM3o6B,EAAO+j6B,EACpB,EAEAwD,EAAU58hC,UAAUw+hC,0BAA4B,SAAU56D,EAASxu8B,GAEjE90B,KAAKm+hC,mBAAmBn+hC,KAAK08hC,uBAAwBp5D,EAASxu8B,EAAS,CACrEu+nB,OAAO,GAEX,EAEAipY,EAAU58hC,UAAU0+hC,mBAAqB,SAAU96D,EAASxu8B,EAASsrgB,GACnEpgiB,KAAKm+hC,mBAAmBn+hC,KAAK28hC,gBAAiBr5D,EAASxu8B,EAASsrgB,EAClE,EAEAk8f,EAAU58hC,UAAUy+hC,mBAAqB,SAAUE,EAAe/6D,EAASxu8B,EAASsrgB,GAClFA,EAAMA,GAAO,CAAC,EACd,IAAIize,GAAa,EACb8X,EAAYnrhC,KA2DhB,SAASs+hC,EAAal+f,EAAKjzd,GACzB,OAAOizd,EAAIm+f,YAAcn+f,EAAIo+f,UAAYp+f,EAAIo+f,SAASr7hC,IAAIgqE,EAAK+k8B,WAAW3m/B,IAC5E,CA5DA,EAAK8ygC,GAAe,SAAUI,EAAc3jrB,GAC1C,IAAIslL,EAAIs+f,YAAct+f,EAAIs+f,aAAeD,EAAaC,WAAtD,CAIA,IAAIC,EAAqBxT,EAAUsR,cAAct5hC,IAAIs7hC,EAAarrsB,KAE9DwrsB,EAAgBD,EAAmBC,cACnC9B,EAAc6B,EAAmB7B,YAErC,GAAIA,EAAa,CACf,IAAI+B,EACAvT,EAAewR,EAAYxR,aAC/BA,EAAatpQ,MAAK,SAAUnzuB,GACtByv/B,EAAal+f,EAAKvxf,KACpBA,EAAKi3tB,QACL+4R,GAAqB,EAEzB,IACAA,GAAsB/B,EAAYh3R,QAClCqlR,EAAUxlC,cAAcm3C,EAAahogC,GACrC,IAAIgqgC,EAAgB3T,EAAU4R,eAAeD,EAAa18f,EAAIizH,OAK9Di4X,EAAatpQ,MAAK,SAAUnzuB,GAC1BA,EAAK+i+B,QAAQktB,EACf,IAEIhC,EAAYlrB,QAAQktB,KACtBzrB,GAAa,EAEjB,MAAWurB,GACTA,EAAc58Q,MAAK,SAAU70sB,EAAMiw9B,GAC7BkB,EAAal+f,EAAKjzd,IACpBA,EAAK24rB,QAGP,IAAI+rQ,EAAcsZ,EAAU4R,eAAe5v9B,EAAMizd,EAAIizH,OASrDw+W,EAAY57e,MAAQwogB,EAAazD,kBAAoB13D,EAAQu/B,iBAAiB117B,EAAKhgC,QAAQ4nF,OAC3Fo25B,EAAUxlC,cAAcx46B,EAAMr4C,GAE1Bq4C,EAAKyk8B,QAAQC,KACfwB,GAAa,EAEjB,GAnDF,CAqDF,IAMArzgC,KAAKqzgC,WAAaA,GAAcrzgC,KAAKqzgC,UACvC,EAEAipB,EAAU58hC,UAAUq/hC,mBAAqB,SAAUz7D,GACjD,IAAI+vC,EACJ/vC,EAAQyf,YAAW,SAAUC,GAE3BqwB,EAAarwB,EAAY+kC,SAASnW,WAAayB,CACjD,IACArzgC,KAAKqzgC,WAAaA,GAAcrzgC,KAAKqzgC,UACvC,EAEAipB,EAAU58hC,UAAU+xgC,KAAO,WAEzBzxgC,KAAKg9hC,aAAah7Q,MAAK,SAAUopQ,GAC/B,IAAIj+8B,EAAOi+8B,EAAS5s1B,KAEpB,EAAG,CACD,GAAIrxH,EAAK8w9B,QAAS,CAChB7S,EAASvisB,WAAa17Q,EAAKgw9B,gBAC3B,KACF,CAEAhw9B,EAAOA,EAAKwm8B,aACd,OAASxm8B,EACX,GACF,EAEAmv9B,EAAU58hC,UAAUim/B,cAAgB,SAAUx46B,EAAMr4C,GACtC,WAAZA,IAAyBq4C,EAAKhgC,QAAQrY,QAAUA,EAClD,EAEAwngC,EAAU58hC,UAAUo+hC,uBAAyB,SAAUW,EAAcE,EAAoBr7D,EAASr07B,GAChG,IAAIk8+B,EAAYnrhC,KACZg/hC,EAAmBL,EAAmBC,cAGtCK,EAAmBN,EAAmBC,cAAgB1zF,KACtDzuH,EAAagiN,EAAahiN,WAC1ByiN,EAAkBT,EAAaS,gBAYnC,SAASh/hC,EAAO8i/B,GACd,IAAIo6C,EAAap6C,EAAY5vpB,IAGzBjmR,EAAO8x9B,EAAiBhzhC,IAAImxhC,EAAY4B,GAAoBA,EAAiB77hC,IAAIi6hC,IAAet+a,GAAW,CAC7G2yZ,KAAM0tB,GACNl+9B,MAAOm+9B,GACP71+B,MAAO81+B,MAETly9B,EAAKhgC,QAAU,CACb4nF,MAAOiu3B,EACP1f,QAASA,EACTr07B,IAAKA,EAELqw/B,eAAgBb,EAAac,WAAad,EAAae,SACvD/tB,KAAMgtB,EAAahtB,KACnBxw8B,MAAOw99B,EAAax99B,MACpBkq9B,UAAWA,GAGbA,EAAUuS,MAAM16C,EAAa716B,EAC/B,CA7BIsx9B,EAAa1D,kBACfz3D,EAAQo/B,cAAcxigC,GACbu80B,EACT6mJ,EAAQs/B,oBAAoBnmL,EAAYv80B,GAC/Bg/hC,GACTA,EAAgB57D,EAASr07B,GAAK+yuB,KAAK9hxB,EAyBvC,EAEAo8hC,EAAU58hC,UAAUq+hC,wBAA0B,SAAUU,EAAcE,EAAoBr7D,EAASr07B,GACjG,IAAIk8+B,EAAYnrhC,KACZ88hC,EAAc6B,EAAmB7B,YAAc6B,EAAmB7B,aACnEh+a,GAAW,CACZ79iB,MAAOw+9B,KAET3C,EAAY3v/B,QAAU,CACpBm27B,QAASA,EACTr07B,IAAKA,EACLgt/B,aAAcwC,EAAaxC,aAC3B9Q,UAAWA,GAEb,IAAIuU,EAAkB5C,EAAYxR,aAG9BqU,EAAkB7C,EAAYxR,aAAepgF,KAC7CzuH,EAAagiN,EAAahiN,WAC1ByiN,EAAkBT,EAAaS,gBAC/BU,GAAkB,EAClBC,GAAyB,EA4B7B,SAASC,EAAW98C,GAClB,IAAIo6C,EAAap6C,EAAY5vpB,IACzBvkT,EAAO8w/B,EAAgB1zhC,IAAImxhC,EAAYsC,GAAmBA,EAAgBv8hC,IAAIi6hC,KAElFyC,GAAyB,EAAM/gb,GAAW,CACxC79iB,MAAO8+9B,GACPpuB,QAASquB,OAEXnx/B,EAAK1B,QAAU,CACb4nF,MAAOiu3B,EACP48C,gBAAiBA,GAInB/w/B,EAAKox/B,MAAQnD,EACbju/B,EAAKov/B,QAAU2B,EAEfzU,EAAUuS,MAAM16C,EAAan08B,EAC/B,CAjCAg0F,IAAQ475B,EAAa1D,kBANR,IAQTt+M,EACF6mJ,EAAQs/B,oBAAoBnmL,EAAYqjN,GAC/BZ,EACTA,EAAgB57D,EAASr07B,GAAK+yuB,KAAK89Q,IAMjCF,GAAkB,EAClB,EAAKt8D,EAAQhgJ,YAAaw8M,IAuB1BD,GACF/C,EAAYh3R,OAEhB,EAEAw2R,EAAU58hC,UAAUg+hC,MAAQ,SAAU16C,EAAa716B,GACjD,IAAIiw9B,EAAap6C,EAAY5vpB,IAEzBg4rB,EAAWprhC,KAAKg9hC,aAAa75hC,IAAIi6hC,IAEpChS,EAASrk+B,OAASqk+B,EAASrk+B,KAAOomB,GACnCi+8B,EAAS5s1B,MAAQ4s1B,EAAS5s1B,KAAKonE,KAAKz4L,GACpCi+8B,EAAS5s1B,KAAOrxH,EAChBA,EAAKgw9B,gBAAkB/R,EAAS7h+B,QAChC4jB,EAAK+k8B,WAAakZ,CACpB,EAEAkR,EAAU4D,iBAAmB,SAAUzB,EAAcC,GAUnD,OATI15xB,GAAWy5xB,KACbA,EAAe,CACbxC,aAAcwC,EACdhiN,WAAY0jN,GAAiB1B,KAIjCA,EAAarrsB,IAAMo5pB,GAAO,gBAC1BkyC,IAAeD,EAAaC,WAAaA,GAClCD,CACT,EAGOnC,CACT,CAnZA,GAqZA,SAASmD,GAAiBty/B,GACxBA,EAAQ8u/B,aAAa9u/B,EAAQm27B,QAASn27B,EAAQ8B,IAAK9B,EAAQrY,QAC7D,CAEA,SAASirgC,GAAU5y/B,GACjB,OAAOA,EAAQyy/B,iBAAmBQ,EACpC,CAEA,SAASA,KACPpgiC,KAAKigiC,MAAMn6R,QACX9lwB,KAAK4zgC,gBAAgB9tQ,OACvB,CAEA,SAASk6R,KACPhgiC,KAAKigiC,OAASjgiC,KAAKigiC,MAAMn6R,OAC3B,CAEA,SAASq5R,GAAehy/B,GACtB,OAAOA,EAAQsk+B,KAAOtk+B,EAAQsk+B,KAAKtk+B,EAAQ4nF,MAAO5nF,EAAQm27B,QAASn27B,EAAQ8B,IAAK9B,EAAQrY,SAAW,IACrG,CAEA,SAASsqgC,GAAgBjy/B,GACnBA,EAAQmy/B,gBACVny/B,EAAQ39B,KAAK6whC,iBAGf,IAAIC,EAAenz/B,EAAQmz/B,aAAe7/D,GAAiBtz7B,EAAQ8zB,MAAM9zB,EAAQ4nF,MAAO5nF,EAAQm27B,QAASn27B,EAAQ8B,IAAK9B,EAAQrY,UAC9H,OAAOwrgC,EAAajgiC,OAAS,EAAIgvB,EAAIixgC,GAAc,SAAUr9hC,EAAG63W,GAC9D,OAAOylrB,GAAuBzlrB,EAChC,IAAK0lrB,EACP,CAEA,IAAIA,GAA2BD,GAAuB,GAEtD,SAASA,GAAuBE,GAC9B,OAAO,SAAUp4/B,EAAQ8E,GACvB,IAAI39B,EAAO29B,EAAQ39B,KACfkxhC,EAAcvz/B,EAAQmz/B,aAAaG,GAEvC,GAAIC,GAAeA,EAAYjF,SAC7B,IAAK,IAAI76hC,EAAIynC,EAAO7B,MAAO5lC,EAAIynC,EAAO5B,IAAK7lC,IACzC8/hC,EAAYjF,SAASjshC,EAAM5O,QAEpB8/hC,GAAeA,EAAYztB,UACpCytB,EAAYztB,SAAS5q+B,EAAQ74B,EAEjC,CACF,CAEA,SAAS6vhC,GAAgBly/B,GACvB,OAAOA,EAAQ39B,KAAK+5C,OACtB,CAUA,SAAS42+B,GAAiBQ,GACxBlkN,GAAa,KAEb,IAEEkkN,EAAWC,GAAaC,GAC1B,CAAE,MAAO1hiC,GAAI,CAEb,OAAOs90B,EACT,CAEA,IAEIA,GAFAmkN,GAAc,CAAC,EACfC,GAAU,CAAC,EAef,SAASC,GAAYhxhC,EAAQixhC,GAE3B,IAAK,IAAIzjS,KAAUyjS,EAAIrhiC,UAErBoQ,EAAOwtvB,GAAUx6sB,EAIrB,CArBAg++B,GAAYF,GAAa7gyB,IACzB+gyB,GAAYD,GAAS,IAErBD,GAAYj+B,iBAAmBi+B,GAAYh+B,oBAAsB,SAAUr2/B,GACzEkw0B,GAAalw0B,CACf,EAEAq0hC,GAAY9+C,cAAgB,SAAUzpkB,GACd,WAAlBA,EAAKyrjB,UAAyBzrjB,EAAK0ujB,UACrCtqJ,GAAapka,EAAK0ujB,QAEtB,EAYA,YCjgBA,IAAIi6D,GAAW,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,WACpJ,UACEzz6B,MAAOyz6B,GACPv9B,WAAY,CAAC,CAAC,UAAW,UAAW,WAAY,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,WAAY,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,WAAYu9B,KCH3N,IAAIC,GAAgB,UAChBvn5B,GAAkB,UAElBwn5B,GAAa,WACf,MAAO,CACL9iI,SAAU,CACRjsL,UAAW,CACT5knB,MAAO0z6B,KAGXE,UAAW,CACThvT,UAAW,CACT5knB,MAAO,YAGX6z6B,UAAW,CACT58C,UAAW,CACTj33B,MAAO,CAAC,yBAA0B,4BAGtC8z6B,eAAgB,CACdlvT,UAAW,CACT5knB,MAAO,YAIf,EAEIiu6B,GAAe,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,WACxGz6xB,GAAQ,CACV+7tB,UAAU,EACVvv2B,MAAOiu6B,GACP9h5B,gBAAiBA,GACjBkw3B,YAAa,CACXz3R,UAAW,CACT5knB,MAAO,WAET+z6B,WAAY,CACV/z6B,MAAO,WAETlsH,MAAO,CAELksH,MAAO,SAGXs3rB,OAAQ,CACNmkM,UAAW,CACTz73B,MAAO0z6B,KAGXj4C,UAAW,CACTz73B,MAAO0z6B,IAET5x3B,MAAO,CACL250B,UAAW,CACTz73B,MAAO,WAETg06B,aAAc,CACZh06B,MAAO,YAGXkg4B,QAAS,CACP+zC,UAAW,CACTlprB,YAAa2orB,KAGjBnzC,SAAU,CACRx1oB,YAAa,UACb0woB,UAAW,CACTz73B,MAAO0z6B,IAETQ,WAAY,CACVl06B,MAAO,yBAETm06B,YAAa,CACXn06B,MAAO,UACP+qP,YAAa,WAEfqprB,gBAAiB,CACfp06B,MAAO,UACPqe,QAAS,IAEXg25B,YAAa,wBACbhhE,SAAU,CACR8gE,YAAa,CACXpprB,YAAa,UACb/qP,MAAO,WAETo06B,gBAAiB,CACfp06B,MAAO,UACPqe,QAAS,KAGbi25B,eAAgB,CACd1vT,UAAW,CACT5knB,MAAO,UACPxuF,MAAO,GAETyl9B,UAAW,CACTj33B,MAAO,YAGXu06B,uBAAwB,CACtB3vT,UAAW,CACT5knB,MAAO,WAETi33B,UAAW,CACTj33B,MAAO,aAIbg+4B,UAAW,CACTviB,UAAW,CACTz73B,MAAO0z6B,KAGXj26B,SAAU,CACRmnnB,UAAW,CACT5knB,MAAO0z6B,IAET5/hC,MAAO,CACLksH,MAAO0z6B,IAETc,aAAc,CACZx06B,MAAO0z6B,GACP3orB,YAAa2orB,KAGjBl3B,SAAU,CACRxlB,UAAW,CACTh33B,MAAOmsB,IAETso5B,SAAU,CACRz06B,MAAO0z6B,IAETgB,WAAY,CACV106B,MAAO0z6B,IAETiB,UAAW,CACT306B,MAAO0z6B,KAGXkB,SAAUjB,KACVkB,QAASlB,KACTmB,UAAWnB,KACXrlL,aAAcqlL,KACd5h/B,KAAM,CACJ46c,OAAQ,UAEVu0f,MAAO,CACLlh4B,MAAOiu6B,IAET5sC,MAAO,CACLv/0B,MAAO,CACL9hD,MAAO0z6B,IAET7iI,SAAU,CACRjsL,UAAW,CACT5knB,MAAO,CAAC,CAAC,EAAG,4BAGhBg1uB,UAAW,CACTh1uB,MAAO0z6B,IAETl1d,OAAQ,CACNx+c,MAAO,YAGXgh4B,YAAa,CACXhK,UAAW,CACTh33B,MAAO,UACP+06B,OAAQ,UACRhqrB,YAAa,UACbiqrB,aAAc,aAMpBxhyB,GAAM86mB,aAAaslL,UAAUl+sB,MAAO,EACpC,YChKA,IAAIu/sB,GAEJ,WACE,SAASA,IAAoB,CAyF7B,OAvFAA,EAAiB9iiC,UAAUqt8B,eAAiB,SAAU992B,GACpD,IAAIwz8B,EAAW,CAAC,EACZC,EAAY,CAAC,EACbC,EAAa,CAAC,EAElB,GAAI,GAAgB1z8B,GAAQ,CAC1B,IAAI2z8B,EAAch9D,GAAe324B,GAEjCwz8B,EAAS3+D,SAAW8+D,EAAYpxrB,MAAQ,KACxCixrB,EAAS17D,QAAU67D,EAAY1tgC,KAAO,IACxC,KACK,CAGD,IAAI2tgC,EAAa,CAAC,QAAS,OAAQ,MAC/BC,EAAa,CACfp4hC,KAAM,EACN26J,UAAW,EACX2pG,SAAU,GAEZ,EAAY//K,GAAO,SAAUyuF,EAAK74J,GAGhC,IAFA,IAAIk+gC,GAAW,EAENniiC,EAAI,EAAGA,EAAIiiiC,EAAWxiiC,OAAQO,IAAK,CAC1C,IAAIoiiC,EAAaH,EAAWjiiC,GACxBqiiC,EAAYp+gC,EAAIo5J,YAAY+k3B,GAEhC,GAAIC,EAAY,GAAKA,IAAcp+gC,EAAIxkB,OAAS2iiC,EAAW3iiC,OAAQ,CACjE,IAAIyj+B,EAAWj/8B,EAAI9iB,MAAM,EAAGkhiC,GAEX,SAAbn/D,IACF2+D,EAAS3+D,SAAWA,EACpB2+D,EAASO,EAAWzzhC,eAAiBmuK,EACrCql3B,GAAW,EAEf,CACF,CAEID,EAAWnjiC,eAAeklB,KAC5B69gC,EAAU79gC,GAAO64J,EACjBql3B,GAAW,GAGRA,IACHJ,EAAW99gC,GAAO64J,EAEtB,GACF,CAEF,MAAO,CACL+k3B,SAAUA,EACVC,UAAWA,EACXC,WAAYA,EAEhB,EAEAH,EAAiB9iiC,UAAUmtB,OAAS,SAAU+gB,EAAWqhD,GAEvD,IAAIi08B,EAAYljiC,KAAKkjiC,UAErB,IAAKA,EACH,OAAO,EAGT,IAAI3/d,EAAW2/d,EAAU3/d,SACrB4/d,EAAcD,EAAUC,YACxBpu6B,EAAQmu6B,EAAUnu6B,MAClBxtE,EAAO27+B,EAAU37+B,KAErB,IAAKwtE,IAAUxtE,EACb,OAAO,EAGT,IAAIk7+B,EAAWxz8B,EAAMwz8B,SACjBC,EAAYzz8B,EAAMyz8B,UACtB,OAAOlhtB,EAAMihtB,EAAU1t6B,EAAO,aAAeysN,EAAMihtB,EAAU1t6B,EAAO,YAAcysN,EAAMihtB,EAAU1t6B,EAAO,QAAS,mBAAqBysN,EAAMihtB,EAAU1t6B,EAAO,SAAWysN,EAAMihtB,EAAU1t6B,EAAO,OAASysN,EAAMkhtB,EAAWS,EAAa,SAAW3htB,EAAMkhtB,EAAWS,EAAa,cAAgB3htB,EAAMkhtB,EAAWS,EAAa,eAAiB57+B,EAAK67+B,uBAAyB77+B,EAAK67+B,sBAAsBx1/B,EAAWqhD,EAAM0z8B,WAAYp/d,EAAU4/d,IAE/a,SAAS3htB,EAAMvyP,EAAOp1B,EAAM2yF,EAAM624B,GAChC,OAAsB,MAAfp08B,EAAMu9D,IAAiB3yF,EAAKwp+B,GAAc724B,KAAUv9D,EAAMu9D,EACnE,CACF,EAEAg24B,EAAiB9iiC,UAAU4t8B,aAAe,WAExCtt8B,KAAKkjiC,UAAY,IACnB,EAEOV,CACT,CA3FA,GCrBIc,GAAuB,CAAC,SAAU,aAAc,eAAgB,gBAChEC,GAAeD,GAAqBthiC,OAAO,CAAC,qBAE5CwhiC,GAAmB,CACrBzI,mBAAmB,EAEnBC,kBAAkB,EAClB/59B,MAAO,SAAU+h7B,EAAa1f,GAC5B,IAAI9z9B,EAAOwz+B,EAAYx+2B,UAMvB,GAJIw+2B,EAAYygD,YACdj0hC,EAAK6rhC,UAAU,aAAcr4C,EAAYygD,YAGtCzgD,EAAYsnC,gBAAjB,CAQA,IAJA,IAAIoZ,EAAgB,CAAC,EACjBC,EAAkB,CAAC,EACnBC,GAAc,EAEThjiC,EAAI,EAAGA,EAAI0iiC,GAAqBjjiC,OAAQO,IAAK,CACpD,IAAIijiC,EAAiBP,GAAqB1iiC,GACtC88K,EAAMsl0B,EAAY7/+B,IAAI0giC,GAEtB7+xB,GAAWtnF,IACbkm3B,GAAc,EACdD,EAAgBE,GAAkBnm3B,GAElCgm3B,EAAcG,GAAkBnm3B,CAEpC,CAQA,GANAgm3B,EAAcxpiB,OAASwpiB,EAAcxpiB,QAAU8of,EAAYunC,cAC3D/6gC,EAAK6rhC,UAAUhyoB,EAAO,CACpBo6oB,WAAYzgD,EAAYygD,YAAcC,EAAcxpiB,OACpD4piB,iBAAkB9gD,EAAY7/+B,IAAI,qBACjCugiC,KAECpgE,EAAQu/B,iBAAiB7f,GAA7B,CAIA,IAAI+gD,EAAgBzwhC,GAAKqwhC,GAYzB,MAAO,CACLlI,SAAUmI,EAXZ,SAAkBp0hC,EAAMsrW,GAItB,IAHA,IAAIngT,EAAWqo7B,EAAYotB,YAAYt1pB,GACnCzyU,EAAS268B,EAAYmtB,cAAcr1pB,GAE9Bl6W,EAAI,EAAGA,EAAImjiC,EAAc1jiC,OAAQO,IAAK,CAC7C,IAAIijiC,EAAiBE,EAAcnjiC,GACnC4O,EAAKmshC,cAAc7grB,EAAK+orB,EAAgBF,EAAgBE,GAAgBlp+B,EAAUtyB,GACpF,CACF,EAGqC,KAfrC,CA1BA,CA2CF,GAEE27/B,GAAiB,CACnBjJ,mBAAmB,EAEnBC,kBAAkB,EAClB/59B,MAAO,SAAU+h7B,EAAa1f,GAC5B,GAAK0f,EAAYsnC,kBAKbhnD,EAAQu/B,iBAAiB7f,GAmB7B,MAAO,CACLy4C,SAhBSz4C,EAAYx+2B,UAgBN4l5B,cAdjB,SAAkB56gC,EAAMsrW,GAGtB,IAFA,IAAI4poB,EAAYl1+B,EAAKqhgC,aAAa/1pB,GAEzBl6W,EAAI,EAAGA,EAAI2iiC,GAAaljiC,OAAQO,IAAK,CAC5C,IAAIijiC,EAAiBN,GAAa3iiC,GAC9B88K,EAAMgn0B,EAAUnd,WAAWs8D,GAAgB,GAEpC,MAAPnm3B,GACFluK,EAAKmshC,cAAc7grB,EAAK+orB,EAAgBnm3B,EAE5C,CACF,EAG4C,KAE9C,GC9FK,SAASum3B,GAAsBz0hC,EAAM61J,EAAWxgJ,GACrD,OAAQA,GACN,IAAK,QAEH,OADYrV,EAAK+ggC,cAAclr2B,EAAW,SAC7B71J,EAAKsshC,UAAU,aAE9B,IAAK,UACH,OAAOtshC,EAAK+ggC,cAAclr2B,EAAW,SAASz5B,QAEhD,IAAK,SACL,IAAK,aACL,IAAK,QACH,OAAOp8H,EAAK+ggC,cAAclr2B,EAAWxgJ,GAQ3C,CACO,SAASq/gC,GAAkB10hC,EAAMqV,GACtC,OAAQA,GACN,IAAK,QAEH,OADYrV,EAAKsshC,UAAU,SACdtshC,EAAKsshC,UAAU,aAE9B,IAAK,UACH,OAAOtshC,EAAKsshC,UAAU,SAASlw5B,QAEjC,IAAK,SACL,IAAK,aACL,IAAK,QACH,OAAOp8H,EAAKsshC,UAAUj3gC,GAQ5B,CACO,SAASs/gC,GAAsB30hC,EAAM61J,EAAWxgJ,EAAK1jB,GAC1D,OAAQ0jB,GACN,IAAK,QAESrV,EAAKushC,uBAAuB123B,EAAW,SAC7C71J,EAAKsshC,UAAU,aAAe36hC,EAEpCqO,EAAKmshC,cAAct23B,EAAW,oBAAoB,GAClD,MAEF,IAAK,UACH71J,EAAKushC,uBAAuB123B,EAAW,SAASz5B,QAAUzqI,EAC1D,MAEF,IAAK,SACL,IAAK,aACL,IAAK,QACHqO,EAAKmshC,cAAct23B,EAAWxgJ,EAAK1jB,GASzC,CC/DO,SAASijiC,GAA6B3nN,EAAY4nN,GACvD,SAASC,EAAiBhhE,EAASxu8B,GACjC,IAAIwu+B,EAAgB,GAQpB,OAPAhgC,EAAQwe,cAAc,CACpBhe,SAAU,SACViD,QAAStqJ,EACTxtvB,MAAOn6D,IACN,SAAUku9B,GACXsgB,EAAczhgC,KAAKmh/B,EAAY9F,YACjC,IACOomB,CACT,CAEA,EAAK,CAAC,CAAC7mL,EAAa,eAAgB,gBAAiB,CAACA,EAAa,SAAU,UAAW,CAACA,EAAa,WAAY,cAAc,SAAU8nN,GACxIF,EAAiBE,EAAU,IAAI,SAAUzvgC,EAASwu8B,EAASr07B,GACzDna,EAAUu0X,EAAO,CAAC,EAAGv0X,GAMrBma,EAAIu1/B,eAAen7oB,EAAOv0X,EAAS,CACjCvoB,KAAMg4hC,EAAU,GAChBrnD,YAAaonD,EAAiBhhE,EAASxu8B,KAE3C,GACF,GACF,CAEA,SAAS2vgC,GAA+Bl4hC,EAAMm4hC,EAAcC,EAAOrhE,EAASxu8B,GAC1E,IAAI8vgC,EAAkBr4hC,EAAOm4hC,EAExBC,EAAMp6L,SAASq6L,IAKlBthE,EAAQwe,cAAc,CACpBhe,SAAU,SACViD,QAAS,QACR,SAAUic,GAKX,IAJA,IAAI9F,EAAc8F,EAAY9F,YAC1BwsC,EAAc1mC,EAAYnl7B,OAAO6r9B,YACjCr91B,EAAWv3J,EAAQu3J,SAEdzrL,EAAI,EAAGA,EAAIyrL,EAAShsL,OAAQO,IACnC,GAAIyrL,EAASzrL,GAAGs8+B,cAAgBA,EAAa,CAC3C,IAAI1t+B,EAAOwz+B,EAAYx+2B,UACnB6gC,EAAYy9zB,GAAetz9B,EAAMslB,EAAQ+vgC,mBAC7CF,EAAMjmgC,QAAQkmgC,EAAiB,CAC7Br4hC,KAAMq4hC,EACN7nR,SAAUimO,EAAYz39B,GACtB7gB,KAAMiH,GAAQ0zJ,GAAa71J,EAAKw4U,QAAQ3iL,EAAU,IAAM71J,EAAKw4U,QAAQ3iL,GACrEgnB,SAAUrxH,GAAS0u9B,GAAeA,EAAcrgoB,EAAO,CAAC,EAAGqgoB,IAE/D,CAEJ,GAEJ,CChEO,SAASob,GAAoBh1hC,EAAQs+7B,EAAK22F,GAG/C,IAFA,IAAIj6wB,EAEGh7Q,KACDs+7B,EAAIt+7B,KACNg7Q,EAAQh7Q,GAEJi1hC,KAKNj1hC,EAASA,EAAOu87B,cAAgBv87B,EAAOuhF,OAGzC,OAAOy5L,CACT,CC3DA,IAAIk6wB,GAAgBniiC,KAAKogD,MAAsB,EAAhBpgD,KAAKwF,UAChC48hC,GAAyD,mBAA1B3liC,OAAO4D,eACtCiI,GAAW,WACX,SAASA,IACLnL,KAAKkliC,IAAM,cAAgBF,IAC/B,CAkCA,OAjCA75hC,EAAQzL,UAAUyD,IAAM,SAAU0hB,GAC9B,OAAO7kB,KAAKmliC,OAAOtghC,GAAK7kB,KAAKkliC,IACjC,EACA/5hC,EAAQzL,UAAUuM,IAAM,SAAU4Y,EAAK1jB,GACnC,IAAI2O,EAAS9P,KAAKmliC,OAAOtghC,GAWzB,OAVIoghC,GACA3liC,OAAO4D,eAAe4M,EAAQ9P,KAAKkliC,IAAK,CACpC/jiC,MAAOA,EACPwC,YAAY,EACZG,cAAc,IAIlBgM,EAAO9P,KAAKkliC,KAAO/jiC,EAEhBnB,IACX,EACAmL,EAAQzL,UAAkB,OAAI,SAAUmlB,GACpC,QAAI7kB,KAAK+L,IAAI8Y,YACF7kB,KAAKmliC,OAAOtghC,GAAK7kB,KAAKkliC,MACtB,EAGf,EACA/5hC,EAAQzL,UAAUqM,IAAM,SAAU8Y,GAC9B,QAAS7kB,KAAKmliC,OAAOtghC,GAAK7kB,KAAKkliC,IACnC,EACA/5hC,EAAQzL,UAAUyliC,OAAS,SAAUtghC,GACjC,GAAIA,IAAQvlB,OAAOulB,GACf,MAAMhlB,UAAU,8CAEpB,OAAOglB,CACX,EACO1Z,CACX,CAtCc,GAuCd,YCaA,IAAIiixB,GAAW,GAAa/jY,OAAO,CACjC98Y,KAAM,WACN+1N,MAAO,CACLo+B,GAAI,EACJumG,GAAI,EACJloU,MAAO,EACPC,OAAQ,GAEV008B,UAAW,SAAUr98B,EAAMisM,GACzB,IAAIo+B,EAAKp+B,EAAMo+B,GACXumG,EAAK3kI,EAAM2kI,GACXloU,EAAQujM,EAAMvjM,MAAQ,EACtBC,EAASsjM,EAAMtjM,OAAS,EAC5B3I,EAAK0wuB,OAAOrmgB,EAAIumG,EAAKjoU,GACrB3I,EAAK2wuB,OAAOtmgB,EAAK3hO,EAAOkoU,EAAKjoU,GAC7B3I,EAAK2wuB,OAAOtmgB,EAAK3hO,EAAOkoU,EAAKjoU,GAC7B3I,EAAK4wuB,WACP,IAOE+lB,GAAU,GAAa3jY,OAAO,CAChC98Y,KAAM,UACN+1N,MAAO,CACLo+B,GAAI,EACJumG,GAAI,EACJloU,MAAO,EACPC,OAAQ,GAEV008B,UAAW,SAAUr98B,EAAMisM,GACzB,IAAIo+B,EAAKp+B,EAAMo+B,GACXumG,EAAK3kI,EAAM2kI,GACXloU,EAAQujM,EAAMvjM,MAAQ,EACtBC,EAASsjM,EAAMtjM,OAAS,EAC5B3I,EAAK0wuB,OAAOrmgB,EAAIumG,EAAKjoU,GACrB3I,EAAK2wuB,OAAOtmgB,EAAK3hO,EAAOkoU,GACxB5wU,EAAK2wuB,OAAOtmgB,EAAIumG,EAAKjoU,GACrB3I,EAAK2wuB,OAAOtmgB,EAAK3hO,EAAOkoU,GACxB5wU,EAAK4wuB,WACP,IAOEjsU,GAAM,GAAa3xC,OAAO,CAC5B98Y,KAAM,MACN+1N,MAAO,CAELr+N,EAAG,EACHjB,EAAG,EACH+7B,MAAO,EACPC,OAAQ,GAEV008B,UAAW,SAAUr98B,EAAMisM,GACzB,IAAIr+N,EAAIq+N,EAAMr+N,EACVjB,EAAIs/N,EAAMt/N,EACVO,EAAI++N,EAAMvjM,MAAQ,EAAI,EAEtBn8B,EAAIC,KAAK8K,IAAIpK,EAAG++N,EAAMtjM,QACtBj/B,EAAIwD,EAAI,EAER8wI,EAAKt0I,EAAIA,GAAK6C,EAAI7C,GAClBknW,EAAKjkW,EAAIJ,EAAI7C,EAAIs0I,EACjBs6F,EAAQ9rO,KAAK2xH,KAAK6f,EAAKt0I,GAEvBy0I,EAAK3xI,KAAKuxH,IAAIu6G,GAAS5uO,EACvBqliC,EAAOviiC,KAAK4wH,IAAIk7G,GAChB02zB,EAAOxiiC,KAAKuxH,IAAIu6G,GAChB22zB,EAAY,GAAJvliC,EACRwliC,EAAa,GAAJxliC,EACbs2B,EAAK0wuB,OAAO9iwB,EAAIuwI,EAAIyyN,EAAK5yN,GACzBh+G,EAAK6zvB,IAAIjmxB,EAAGgjW,EAAIlnW,EAAG8C,KAAKsmC,GAAKwlM,EAAiB,EAAV9rO,KAAKsmC,GAASwlM,GAClDt4M,EAAK2zvB,cAAc/lxB,EAAIuwI,EAAK4w5B,EAAOE,EAAOr+rB,EAAK5yN,EAAKgx5B,EAAOC,EAAOrhiC,EAAGjB,EAAIuiiC,EAAQthiC,EAAGjB,GACpFqzB,EAAK2zvB,cAAc/lxB,EAAGjB,EAAIuiiC,EAAQthiC,EAAIuwI,EAAK4w5B,EAAOE,EAAOr+rB,EAAK5yN,EAAKgx5B,EAAOC,EAAOrhiC,EAAIuwI,EAAIyyN,EAAK5yN,GAC9Fh+G,EAAK4wuB,WACP,IAOEu+R,GAAQ,GAAan8oB,OAAO,CAC9B98Y,KAAM,QACN+1N,MAAO,CACLr+N,EAAG,EACHjB,EAAG,EACH+7B,MAAO,EACPC,OAAQ,GAEV008B,UAAW,SAAUp8vB,EAAKhV,GACxB,IAAItjM,EAASsjM,EAAMtjM,OACfD,EAAQujM,EAAMvjM,MACd96B,EAAIq+N,EAAMr+N,EACVjB,EAAIs/N,EAAMt/N,EACVwxI,EAAKz1G,EAAQ,EAAI,EACrBu4M,EAAIyvhB,OAAO9iwB,EAAGjB,GACds0O,EAAI0vhB,OAAO/iwB,EAAIuwI,EAAIxxI,EAAIg8B,GACvBs4M,EAAI0vhB,OAAO/iwB,EAAGjB,EAAIg8B,EAAS,EAAI,GAC/Bs4M,EAAI0vhB,OAAO/iwB,EAAIuwI,EAAIxxI,EAAIg8B,GACvBs4M,EAAI0vhB,OAAO/iwB,EAAGjB,GACds0O,EAAI2vhB,WACN,IAkBEw+R,GAAoB,CACtBnm/B,KAAM,SAAUr7C,EAAGjB,EAAGO,EAAGX,EAAG0/N,GAC1BA,EAAMslF,GAAK3jT,EACXq+N,EAAM5wC,GAAK1uL,EAAIJ,EAAI,EACnB0/N,EAAMxlC,GAAK74L,EAAIV,EACf++N,EAAM7qG,GAAKz0H,EAAIJ,EAAI,CACrB,EACA8wF,KAAM,SAAUzvF,EAAGjB,EAAGO,EAAGX,EAAG0/N,GAC1BA,EAAMr+N,EAAIA,EACVq+N,EAAMt/N,EAAIA,EACVs/N,EAAMvjM,MAAQx7B,EACd++N,EAAMtjM,OAASp8B,CACjB,EACA8iiC,UAAW,SAAUzhiC,EAAGjB,EAAGO,EAAGX,EAAG0/N,GAC/BA,EAAMr+N,EAAIA,EACVq+N,EAAMt/N,EAAIA,EACVs/N,EAAMvjM,MAAQx7B,EACd++N,EAAMtjM,OAASp8B,EACf0/N,EAAMviO,EAAI8C,KAAKgL,IAAItK,EAAGX,GAAK,CAC7B,EACA8tX,OAAQ,SAAUzsX,EAAGjB,EAAGO,EAAGX,EAAG0/N,GAC5B,IAAI19M,EAAO/hB,KAAKgL,IAAItK,EAAGX,GACvB0/N,EAAMr+N,EAAIA,EACVq+N,EAAMt/N,EAAIA,EACVs/N,EAAMvjM,MAAQna,EACd09M,EAAMtjM,OAASpa,CACjB,EACAqrN,OAAQ,SAAUhsO,EAAGjB,EAAGO,EAAGX,EAAG0/N,GAE5BA,EAAMo+B,GAAKz8P,EAAIV,EAAI,EACnB++N,EAAM2kI,GAAKjkW,EAAIJ,EAAI,EACnB0/N,EAAMviO,EAAI8C,KAAKgL,IAAItK,EAAGX,GAAK,CAC7B,EACA+iiC,QAAS,SAAU1hiC,EAAGjB,EAAGO,EAAGX,EAAG0/N,GAC7BA,EAAMo+B,GAAKz8P,EAAIV,EAAI,EACnB++N,EAAM2kI,GAAKjkW,EAAIJ,EAAI,EACnB0/N,EAAMvjM,MAAQx7B,EACd++N,EAAMtjM,OAASp8B,CACjB,EACAgjiC,IAAK,SAAU3hiC,EAAGjB,EAAGO,EAAGX,EAAG0/N,GACzBA,EAAMr+N,EAAIA,EAAIV,EAAI,EAClB++N,EAAMt/N,EAAIA,EAAIJ,EAAI,EAClB0/N,EAAMvjM,MAAQx7B,EACd++N,EAAMtjM,OAASp8B,CACjB,EACAijiC,MAAO,SAAU5hiC,EAAGjB,EAAGO,EAAGX,EAAG0/N,GAC3BA,EAAMr+N,EAAIA,EAAIV,EAAI,EAClB++N,EAAMt/N,EAAIA,EAAIJ,EAAI,EAClB0/N,EAAMvjM,MAAQx7B,EACd++N,EAAMtjM,OAASp8B,CACjB,EACAkjiC,SAAU,SAAU7hiC,EAAGjB,EAAGO,EAAGX,EAAG0/N,GAC9BA,EAAMo+B,GAAKz8P,EAAIV,EAAI,EACnB++N,EAAM2kI,GAAKjkW,EAAIJ,EAAI,EACnB0/N,EAAMvjM,MAAQx7B,EACd++N,EAAMtjM,OAASp8B,CACjB,GAESmjiC,GAAqB,CAAC,EACjC,EAtEkB,CAChBzm/B,KAAM,GACNo0C,KAAM,GACNgy8B,UAAW,GACXh1qB,OAAQ,GACRzgJ,OAAQ,GACR01zB,QAAS34Q,GACT44Q,IAAK5qmB,GACL6qmB,MAAOL,GACPM,SAAU14Q,KA6DM,SAAU47K,EAAMt+7B,GAChCq7hC,GAAmBr7hC,GAAQ,IAAIs+7B,CACjC,IACA,IAAIg9F,GAAY,GAAa38oB,OAAO,CAClC98Y,KAAM,SACN+1N,MAAO,CACL2j0B,WAAY,GACZhiiC,EAAG,EACHjB,EAAG,EACH+7B,MAAO,EACPC,OAAQ,GAEV8y7B,sBAAuB,SAAU5x1B,EAAK47L,EAAQpoO,GAC5C,IAAI2xD,EAAMys0B,GAAsB5x1B,EAAK47L,EAAQpoO,GACzC4uI,EAAQtiO,KAAKsiO,MAMjB,OAJIA,GAA8B,QAArBA,EAAM2j0B,YAA4C,WAApBnquB,EAAOn9R,WAChD0mH,EAAIriJ,EAAI0wF,EAAK1wF,EAAkB,GAAd0wF,EAAK10D,QAGjBqmH,CACT,EACAqu1B,UAAW,SAAUp8vB,EAAKhV,EAAO4j0B,GAC/B,IAAID,EAAa3j0B,EAAM2j0B,WAEvB,GAAmB,SAAfA,EAAuB,CACzB,IAAIE,EAAcJ,GAAmBE,GAEhCE,IAGHA,EAAcJ,GADdE,EAAa,SAIfR,GAAkBQ,GAAY3j0B,EAAMr+N,EAAGq+N,EAAMt/N,EAAGs/N,EAAMvjM,MAAOujM,EAAMtjM,OAAQmngC,EAAY7j0B,OACvF6j0B,EAAYzyD,UAAUp8vB,EAAK6uzB,EAAY7j0B,MAAO4j0B,EAChD,CACF,IAGF,SAASE,GAAmB746B,EAAO4v4B,GACjC,GAAkB,UAAdn9/B,KAAKuM,KAAkB,CACzB,IAAI85hC,EAAcrmiC,KAAKqU,MAEnBrU,KAAKsmiC,gBACPD,EAAYjpR,OAAS7vpB,EACrB846B,EAAYjp6B,KAAO+/3B,GAAc,OAEjCkpC,EAAYh0tB,UAAY,GACW,SAA1BryU,KAAKsiO,MAAM2j0B,WACpBI,EAAYjpR,OAAS7vpB,EAErB846B,EAAYjp6B,KAAO7P,EAGrBvtH,KAAK0y9B,YACP,CACF,CAMO,SAAS,GAAauzE,EAAYhiiC,EAAGjB,EAAGO,EAAGX,EAAG2qH,EACrDg56B,GAEE,IAMIC,EANAn+9B,EAA0C,IAAhC499B,EAAWzliC,QAAQ,SAgCjC,OA9BI6nE,IACF499B,EAAaA,EAAWxqgC,OAAO,EAAG,GAAGlsB,cAAgB02hC,EAAWxqgC,OAAO,KAMvE+qgC,EADqC,IAAnCP,EAAWzliC,QAAQ,YACR,GAAkByliC,EAAWlkiC,MAAM,GAAI,IAAI,GAAakC,EAAGjB,EAAGO,EAAGX,GAAI2jiC,EAAa,SAAW,SAC/D,IAAlCN,EAAWzliC,QAAQ,WACf,GAAiByliC,EAAWlkiC,MAAM,GAAI,CAAC,EAAG,IAAI,GAAakC,EAAGjB,EAAGO,EAAGX,GAAI2jiC,EAAa,SAAW,SAEhG,IAAIP,GAAU,CACzB1j0B,MAAO,CACL2j0B,WAAYA,EACZhiiC,EAAGA,EACHjB,EAAGA,EACH+7B,MAAOx7B,EACPy7B,OAAQp8B,MAKH0jiC,eAAiBj+9B,EAE5Bm+9B,EAAWC,SAAWL,GAElB746B,GACFi56B,EAAWC,SAASl56B,GAGfi56B,CACT,CACO,SAASE,GAAoBnuC,GAKlC,OAJK5m/B,GAAQ4m/B,KACXA,EAAa,EAAEA,GAAaA,IAGvB,CAACA,EAAW,IAAM,EAAGA,EAAW,IAAM,EAC/C,CACO,SAASouC,GAAsBC,EAAcruC,GAClD,GAAoB,MAAhBquC,EAQJ,OAJKj1hC,GAAQi1hC,KACXA,EAAe,CAACA,EAAcA,IAGzB,CAAC,GAAaA,EAAa,GAAIruC,EAAW,KAAO,EAAG,GAAajuD,GAAUs8F,EAAa,GAAIA,EAAa,IAAKruC,EAAW,KAAO,EACzI,CCnWA,SAASsuC,GAAU3j/B,GACf,OAAOxb,SAASwb,EACpB,CAqCO,SAAS4j/B,GAAkBxvzB,EAAKpqB,EAAKx5H,GAKxC,IAJA,IAAIqz8B,EAA8B,WAAb750B,EAAI3gN,KAnBtB,SAA8B+qO,EAAKpqB,EAAKx5H,GAC3C,IAAI30D,EAAQ20D,EAAK30D,MACbC,EAAS00D,EAAK10D,OACdnxB,EAAMhL,KAAKgL,IAAIkxB,EAAOC,GACtB/6B,EAAa,MAATipN,EAAIjpN,EAAY,GAAMipN,EAAIjpN,EAC9BjB,EAAa,MAATkqN,EAAIlqN,EAAY,GAAMkqN,EAAIlqN,EAC9BjD,EAAa,MAATmtN,EAAIntN,EAAY,GAAMmtN,EAAIntN,EAUlC,OATKmtN,EAAIngN,SACL9I,EAAIA,EAAI86B,EAAQ20D,EAAKzvF,EACrBjB,EAAIA,EAAIg8B,EAAS00D,EAAK1wF,EACtBjD,GAAQ8N,GAEZ5J,EAAI4iiC,GAAU5iiC,GAAKA,EAAI,GACvBjB,EAAI6jiC,GAAU7jiC,GAAKA,EAAI,GACvBjD,EAAIA,GAAK,GAAK8miC,GAAU9miC,GAAKA,EAAI,GACZu3O,EAAI0vzB,qBAAqB/iiC,EAAGjB,EAAG,EAAGiB,EAAGjB,EAAGjD,EAEjE,CAGUiniC,CAAqB1vzB,EAAKpqB,EAAKx5H,GAtClC,SAA8B4jJ,EAAKpqB,EAAKx5H,GAC3C,IAAIzvF,EAAa,MAATipN,EAAIjpN,EAAY,EAAIipN,EAAIjpN,EAC5B64L,EAAe,MAAVowB,EAAIpwB,GAAa,EAAIowB,EAAIpwB,GAC9B95L,EAAa,MAATkqN,EAAIlqN,EAAY,EAAIkqN,EAAIlqN,EAC5By0H,EAAe,MAAVy1F,EAAIz1F,GAAa,EAAIy1F,EAAIz1F,GAYlC,OAXKy1F,EAAIngN,SACL9I,EAAIA,EAAIyvF,EAAK30D,MAAQ20D,EAAKzvF,EAC1B64L,EAAKA,EAAKppG,EAAK30D,MAAQ20D,EAAKzvF,EAC5BjB,EAAIA,EAAI0wF,EAAK10D,OAAS00D,EAAK1wF,EAC3By0H,EAAKA,EAAK/jC,EAAK10D,OAAS00D,EAAK1wF,GAEjCiB,EAAI4iiC,GAAU5iiC,GAAKA,EAAI,EACvB64L,EAAK+p2B,GAAU/p2B,GAAMA,EAAK,EAC1B95L,EAAI6jiC,GAAU7jiC,GAAKA,EAAI,EACvBy0H,EAAKov6B,GAAUpv6B,GAAMA,EAAK,EACL6/G,EAAI2riB,qBAAqBh/wB,EAAGjB,EAAG85L,EAAIrlE,EAE5D,CAsBUwrpB,CAAqB3riB,EAAKpqB,EAAKx5H,GACjCw22B,EAAah9uB,EAAIg9uB,WACZtp8B,EAAI,EAAGA,EAAIsp8B,EAAW7p8B,OAAQO,IACnCmmiC,EAAe7jR,aAAagnL,EAAWtp8B,GAAGuhD,OAAQ+n5B,EAAWtp8B,GAAG2sH,OAEpE,OAAOw56B,CACX,CAeA,SAASE,GAAWvp3B,GAChB,OAAO/nJ,SAAS+nJ,EAAK,GACzB,CACO,SAAS48D,GAAQnqF,EAAM+24B,EAAO7q/B,GACjC,IAAI8q/B,EAAK,CAAC,QAAS,UAAUD,GACzBE,EAAM,CAAC,cAAe,gBAAgBF,GACtCG,EAAM,CAAC,cAAe,cAAcH,GACpCI,EAAM,CAAC,eAAgB,iBAAiBJ,GAC5C,GAAgB,MAAZ7q/B,EAAK8q/B,IAA4B,SAAb9q/B,EAAK8q/B,GACzB,OAAO983B,WAAWhuH,EAAK8q/B,IAE3B,IAAI1gB,EAAMthhC,SAASswZ,YAAYE,iBAAiBxlQ,GAChD,OAASA,EAAKi34B,IAAQH,GAAWxgB,EAAI0gB,KAAQF,GAAW924B,EAAK97I,MAAM8yhC,MAC5DF,GAAWxgB,EAAI4gB,KAAS,IACxBJ,GAAWxgB,EAAI6gB,KAAS,GAAM,CACzC,CClEO,SAAS/sI,GAAY1gxB,GACxB,IAZ8B0t5B,EAAUl1tB,EAYpCh+T,EAAQwlI,EAAGxlI,MACXkvwB,EAAWlvwB,EAAMkvwB,UAAYlvwB,EAAMg+T,UAAY,IAbrBk1tB,EAa4ClzhC,EAAMkvwB,SAbxClxc,EAakDh+T,EAAMg+T,UAZ3Fk1tB,GAAyB,UAAbA,GAA0Bl1tB,EAAY,EAGnC,WAAbk1tB,EACD,CAAC,EAAIl1tB,EAAW,EAAIA,GACP,WAAbk1tB,EACI,CAACl1tB,GACD/uR,GAASik/B,GACL,CAACA,GAAY51hC,GAAQ41hC,GAAYA,EAAW,KAP/C,MAYP/jR,EAAiBnvwB,EAAMmvwB,eAC3B,GAAID,EAAU,CACV,IAAIikR,EAAenzhC,EAAM8+9B,eAAiBt51B,EAAGs30B,aAAgBt30B,EAAGs30B,eAAiB,EAC7Eq2E,GAA+B,IAAhBA,IACfjkR,EAAWl0vB,EAAIk0vB,GAAU,SAAUgzP,GAC/B,OAAOA,EAASixB,CACpB,IACAhkR,GAAkBgkR,EAE1B,CACA,MAAO,CAACjkR,EAAUC,EACtB,CCfA,IAAIikR,GAAmB,IAAI,IAAU,GACrC,SAASC,GAAerzhC,GACpB,IAAI+owB,EAAS/owB,EAAM+owB,OACnB,QAAmB,MAAVA,GAA6B,SAAXA,KAAuB/owB,EAAMg+T,UAAY,GACxE,CACA,SAASs1tB,GAAuBC,GAC5B,MAA+B,iBAAjBA,GAA8C,SAAjBA,CAC/C,CACA,SAASC,GAAaxzhC,GAClB,IAAI+oH,EAAO/oH,EAAM+oH,KACjB,OAAe,MAARA,GAAyB,SAATA,CAC3B,CACA,SAAS0q6B,GAAWxwzB,EAAKjjO,GACrB,GAAyB,MAArBA,EAAM4uP,aAA6C,IAAtB5uP,EAAM4uP,YAAmB,CACtD,IAAI8kyB,EAAsBzwzB,EAAIovhB,YAC9BpvhB,EAAIovhB,YAAcryvB,EAAM4uP,YAAc5uP,EAAMu3H,QAC5C0rG,EAAIl6G,OACJk6G,EAAIovhB,YAAcqhS,CACtB,MAEIzwzB,EAAIl6G,MAEZ,CACA,SAAS4q6B,GAAa1wzB,EAAKjjO,GACvB,GAA2B,MAAvBA,EAAMkvP,eAAiD,IAAxBlvP,EAAMkvP,cAAqB,CAC1D,IAAIwkyB,EAAsBzwzB,EAAIovhB,YAC9BpvhB,EAAIovhB,YAAcryvB,EAAMkvP,cAAgBlvP,EAAMu3H,QAC9C0rG,EAAI8liB,SACJ9liB,EAAIovhB,YAAcqhS,CACtB,MAEIzwzB,EAAI8liB,QAEZ,CACO,SAAS6qR,GAAoB3wzB,EAAKmkB,EAAS5hH,GAC9C,IAAI0Q,EAAQu90B,GAAoBrsuB,EAAQlxG,MAAOkxG,EAAQy6uB,QAASr81B,GAChE,GAAIsu1B,GAAa590B,GAAQ,CACrB,IAAI294B,EAAgB5wzB,EAAI6wzB,cAAc594B,EAAOkxG,EAAQlyF,QAAU,UAC/D,GAAyB,mBAAd6+3B,WACJF,GACAA,EAAcv/a,aAAc,CAC/B,IAAI3gd,EAAS,IAAIog4B,UACjBpg4B,EAAOqg4B,cAAe5syB,EAAQx3P,GAAK,EAAKw3P,EAAQz4P,GAAK,GACrDglK,EAAOsg4B,WAAW,EAAG,GAAI7syB,EAAQl1I,UAAY,GAAKm2D,IAClD1U,EAAOug4B,UAAW9syB,EAAQ7iI,QAAU,EAAK6iI,EAAQ5iI,QAAU,GAC3Dqv6B,EAAcv/a,aAAa3gd,EAC/B,CACA,OAAOkg4B,CACX,CACJ,CAwMA,IAAIM,GAAsB,CAAC,aAAc,gBAAiB,iBACtDC,GAAe,CACf,CAAC,UAAW,QAAS,CAAC,WAAY,SAAU,CAAC,aAAc,KAE/D,SAASC,GAAgBpxzB,EAAKjjO,EAAOs0hC,EAAWC,EAAax6gC,GACzD,IAAI0+8B,GAAe,EACnB,IAAK87D,GAEGv0hC,KADJs0hC,EAAYA,GAAa,CAAC,GAEtB,OAAO,EAGf,GAAIC,GAAev0hC,EAAMu3H,UAAY+85B,EAAU/85B,QAAS,CACpDi95B,GAAevxzB,EAAKlpN,GACpB0+8B,GAAe,EACf,IAAIlh2B,EAAU/oI,KAAK8K,IAAI9K,KAAKgL,IAAIwG,EAAMu3H,QAAS,GAAI,GACnD0rG,EAAIovhB,YAAcp6tB,MAAMs/F,GAAWs/1B,GAAqBt/1B,QAAUA,CACtE,EACIg95B,GAAev0hC,EAAMo6G,QAAUk66B,EAAUl66B,SACpCq+2B,IACD+7D,GAAevxzB,EAAKlpN,GACpB0+8B,GAAe,GAEnBx1vB,EAAIwxzB,yBAA2Bz0hC,EAAMo6G,OAASy82B,GAAqBz82B,OAEvE,IAAK,IAAI7tH,EAAI,EAAGA,EAAI4niC,GAAoBnoiC,OAAQO,IAAK,CACjD,IAAI2qJ,EAAWi94B,GAAoB5niC,IAC/BgoiC,GAAev0hC,EAAMk3I,KAAco94B,EAAUp94B,MACxCuh1B,IACD+7D,GAAevxzB,EAAKlpN,GACpB0+8B,GAAe,GAEnBx1vB,EAAI/rF,GAAY+rF,EAAIk4uB,KAAOn78B,EAAMk3I,IAAa,GAEtD,CAQA,OAPIq94B,GAAev0hC,EAAMw8G,cAAgB836B,EAAU936B,eAC1Ci82B,IACD+7D,GAAevxzB,EAAKlpN,GACpB0+8B,GAAe,GAEnBx1vB,EAAIzmH,YAAcx8G,EAAMw8G,aAAeq62B,GAAqBr62B,aAEzDi82B,CACX,CACA,SAASi8D,GAA2BzxzB,EAAKz9F,EAAIyoiB,EAAQsmX,EAAax6gC,GAC9D,IAAI/Z,EAAQ8mhC,GAASth5B,EAAIzrH,EAAMoq8B,SAC3BmwE,EAAYC,EACV,KACCtmX,GAAU64W,GAAS74W,EAAQl0pB,EAAMoq8B,UAAY,CAAC,EACrD,GAAInk9B,IAAUs0hC,EACV,OAAO,EAEX,IAAI77D,EAAe47D,GAAgBpxzB,EAAKjjO,EAAOs0hC,EAAWC,EAAax6gC,GAsBvE,IArBIw6gC,GAAev0hC,EAAM+oH,OAASur6B,EAAUvr6B,QACnC0v2B,IACD+7D,GAAevxzB,EAAKlpN,GACpB0+8B,GAAe,GAEnB66D,GAAuBtzhC,EAAM+oH,QAAUk6G,EAAI2N,UAAY5wO,EAAM+oH,QAE7Dwr6B,GAAev0hC,EAAM+owB,SAAWurR,EAAUvrR,UACrC0vN,IACD+7D,GAAevxzB,EAAKlpN,GACpB0+8B,GAAe,GAEnB66D,GAAuBtzhC,EAAM+owB,UAAY9liB,EAAI8yhB,YAAc/1vB,EAAM+owB,UAEjEwrR,GAAev0hC,EAAMu3H,UAAY+85B,EAAU/85B,WACtCkh2B,IACD+7D,GAAevxzB,EAAKlpN,GACpB0+8B,GAAe,GAEnBx1vB,EAAIovhB,YAA+B,MAAjBryvB,EAAMu3H,QAAkB,EAAIv3H,EAAMu3H,SAEpDiO,EAAGy61B,YAAa,CAChB,IACI00D,EADY30hC,EAAMg+T,WACWh+T,EAAM8+9B,eAAiBt51B,EAAGs30B,aAAgBt30B,EAAGs30B,eAAiB,GAC3F75uB,EAAI+6F,YAAc22tB,IACbl8D,IACD+7D,GAAevxzB,EAAKlpN,GACpB0+8B,GAAe,GAEnBx1vB,EAAI+6F,UAAY22tB,EAExB,CACA,IAAK,IAAIpoiC,EAAI,EAAGA,EAAI6niC,GAAapoiC,OAAQO,IAAK,CAC1C,IAAI4rJ,EAAOi84B,GAAa7niC,GACpB2qJ,EAAWiB,EAAK,IAChBo84B,GAAev0hC,EAAMk3I,KAAco94B,EAAUp94B,MACxCuh1B,IACD+7D,GAAevxzB,EAAKlpN,GACpB0+8B,GAAe,GAEnBx1vB,EAAI/rF,GAAYl3I,EAAMk3I,IAAaiB,EAAK,GAEhD,CACA,OAAOsg1B,CACX,CAIA,SAASm8D,GAAoB3xzB,EAAKz9F,GAC9B,IAAIz2I,EAAIy2I,EAAGjX,UACP4s1B,EAAMl4uB,EAAIk4uB,KAAO,EACjBps9B,EACAk0O,EAAIqxY,aAAa6mW,EAAMps9B,EAAE,GAAIos9B,EAAMps9B,EAAE,GAAIos9B,EAAMps9B,EAAE,GAAIos9B,EAAMps9B,EAAE,GAAIos9B,EAAMps9B,EAAE,GAAIos9B,EAAMps9B,EAAE,IAGrFk0O,EAAIqxY,aAAa6mW,EAAK,EAAG,EAAGA,EAAK,EAAG,EAE5C,CA2BA,IAAI05E,GAAiB,EACjBC,GAAkB,EAClBC,GAAiB,EACjBC,GAAwB,EAY5B,SAASR,GAAevxzB,EAAKlpN,GACzBA,EAAMk7gC,WAAahyzB,EAAIl6G,OACvBhvG,EAAMm7gC,aAAejyzB,EAAI8liB,SACzBhvvB,EAAMk7gC,UAAY,GAClBl7gC,EAAMm7gC,YAAc,EACxB,CACA,SAASpO,GAASth5B,EAAI2+0B,GAClB,OAAOA,GAAW3+0B,EAAGoz1B,cAA4Bpz1B,EAAGxlI,KACxD,CACO,SAASm1hC,GAAYlyzB,EAAKz9F,GAC7B6z2B,GAAMp2wB,EAAKz9F,EAAI,CAAE2+0B,SAAS,EAAOoT,UAAW,EAAGC,WAAY,IAAK,EACpE,CACO,SAAS6hB,GAAMp2wB,EAAKz9F,EAAIzrH,EAAOq7gC,GAClC,IAAIrmiC,EAAIy2I,EAAGjX,UACX,IAAKiX,EAAG8x1B,gBAAgBv98B,EAAMw98B,UAAWx98B,EAAMy98B,YAAY,GAAO,GAG9D,OAFAhy1B,EAAG8g0B,UAAYvB,QACfv/zB,EAAG6v5B,cAAe,GAGtB,IAAIvvF,EAAYtg0B,EAAGgh0B,YACf8uF,EAAkBv7gC,EAAMu7gC,gBACxBC,GAAoB,EACpBC,GAAgB,EAkBpB,GAjBKF,IFlYF,SAA2BxvF,EAAW2vF,GACzC,GAAI3vF,IAAc2vF,IAAmB3vF,IAAc2vF,EAC/C,OAAO,EAEX,IAAK3vF,IAAc2vF,GAAkB3vF,EAAU958B,SAAWypiC,EAAczpiC,OACpE,OAAO,EAEX,IAAK,IAAIO,EAAI,EAAGA,EAAIu58B,EAAU958B,OAAQO,IAClC,GAAIu58B,EAAUv58B,KAAOkpiC,EAAclpiC,GAC/B,OAAO,EAGf,OAAO,CACX,CEqX4BmpiC,CAAkB5vF,EAAWwvF,KAC7CA,GAAmBA,EAAgBtpiC,SACnCwoiC,GAAevxzB,EAAKlpN,GACpBkpN,EAAI0khB,UACJ6tS,EAAgBD,GAAoB,EACpCx7gC,EAAMu7gC,gBAAkB,KACxBv7gC,EAAM47gC,YAAa,EACnB57gC,EAAMk0pB,OAAS,MAEf63R,GAAaA,EAAU958B,SACvBwoiC,GAAevxzB,EAAKlpN,GACpBkpN,EAAIjjN,OA3EhB,SAA0B8l7B,EAAW7iuB,EAAKlpN,GAEtC,IADA,IAAI47gC,GAAa,EACRppiC,EAAI,EAAGA,EAAIu58B,EAAU958B,OAAQO,IAAK,CACvC,IAAI6qxB,EAAW0uL,EAAUv58B,GACzBopiC,EAAaA,GAAcv+Q,EAASygN,aACpC+8D,GAAoB3xzB,EAAKm0iB,GACzBn0iB,EAAIwvhB,YACJ2kB,EAASioN,UAAUp8vB,EAAKm0iB,EAASnpjB,OACjCgV,EAAI6zK,MACR,CACA/8X,EAAM47gC,WAAaA,CACvB,CAiEYC,CAAiB9vF,EAAW7iuB,EAAKlpN,GACjCw7gC,GAAoB,GAExBx7gC,EAAMu7gC,gBAAkBxvF,GAExB/r7B,EAAM47gC,WACNnw5B,EAAG6v5B,cAAe,MADtB,CAIA7v5B,EAAG0x1B,aAAe1x1B,EAAG0x1B,cACrB1x1B,EAAG4x1B,mBACH,IAAInpT,EAASl0pB,EAAMk0pB,OACdA,IACDunX,EAAgBD,GAAoB,GAExC,IA/EwBt6yB,EAAIC,EA+ExB26yB,EAAerw5B,aAAc,IAC1BA,EAAG271B,WA9Dd,SAAsBnh+B,GAClB,IAAIy/9B,EAAU+zD,GAAaxzhC,GACvBig+B,EAAYozD,GAAerzhC,GAC/B,QAASA,EAAMkvwB,aACLuwN,GAAWQ,IACbR,GAAiC,iBAAfz/9B,EAAM+oH,MACxBk32B,GAAqC,iBAAjBjg+B,EAAM+owB,QAC3B/owB,EAAM6+9B,cAAgB,GACtB7+9B,EAAMkvP,cAAgB,GACtBlvP,EAAM4uP,YAAc,EAC/B,CAqDWknyB,CAAatw5B,EAAGxlI,OACnBu1hC,IAlFoBt6yB,EAkFoBlsP,EAlFhBmsP,EAkFmB+yb,EAAO1/iB,UAjFlD0sH,GAAMC,EACCD,EAAG,KAAOC,EAAG,IACbD,EAAG,KAAOC,EAAG,IACbD,EAAG,KAAOC,EAAG,IACbD,EAAG,KAAOC,EAAG,IACbD,EAAG,KAAOC,EAAG,IACbD,EAAG,KAAOC,EAAG,GAEdD,GAAOC,IA0Ebs5yB,GAAevxzB,EAAKlpN,GACpB66gC,GAAoB3xzB,EAAKz9F,IAEnBqw5B,GACNrB,GAAevxzB,EAAKlpN,GAExB,IAAI/Z,EAAQ8mhC,GAASth5B,EAAIzrH,EAAMoq8B,SAC3B3+0B,aAAc,IACVzrH,EAAMg8gC,eAAiBlB,KACvBW,GAAgB,EAChBz7gC,EAAMg8gC,aAAelB,IAEzBH,GAA2BzxzB,EAAKz9F,EAAIyoiB,EAAQunX,EAAez7gC,GACtD87gC,IAAkB97gC,EAAMk7gC,WAAcl7gC,EAAMm7gC,cAC7CjyzB,EAAIwvhB,YAnahB,SAAmBxvhB,EAAKz9F,EAAIxlI,EAAO6/9B,GAC/B,IAAIv98B,EACA298B,EAAYozD,GAAerzhC,GAC3By/9B,EAAU+zD,GAAaxzhC,GACvB6+9B,EAAgB7+9B,EAAM6+9B,cACtBm3D,EAAan3D,EAAgB,EAC7Bo3D,GAAazw5B,EAAGxjH,KACdwjH,EAAGu6V,SAAUi2jB,IAAeC,GAC9Bzw5B,EAAGw61B,kBAEP,IAAIh+8B,EAAOwjH,EAAGxjH,MAAQoxgC,GAClB8C,EAAY1w5B,EAAG8g0B,QACnB,IAAKu5B,EAAS,CACV,IAAI922B,EAAO/oH,EAAM+oH,KACbggpB,EAAS/owB,EAAM+owB,OACfotR,EAAkB12D,KAAa122B,EAAK8s0B,WACpCugG,EAAoBn2D,KAAel3N,EAAO8sL,WAC1CwgG,EAAiB52D,KAAa122B,EAAKmtB,MACnCog5B,EAAmBr2D,KAAel3N,EAAO7ynB,MACzCqg5B,OAAe,EACfC,OAAiB,EACjBC,OAAc,EACdC,OAAgB,EAChBr38B,OAAO,GACP828B,GAAmBC,KACnB/28B,EAAOmmD,EAAGsqG,mBAEVqmzB,IACAI,EAAeL,EACTzD,GAAkBxvzB,EAAKl6G,EAAM1pC,GAC7BmmD,EAAGmx5B,qBACTnx5B,EAAGmx5B,qBAAuBJ,GAE1BH,IACAI,EAAiBN,EACXzD,GAAkBxvzB,EAAK8liB,EAAQ1prB,GAC/BmmD,EAAGox5B,uBACTpx5B,EAAGox5B,uBAAyBJ,GAE5BH,IACAI,EAAeP,IAAc1w5B,EAAGqx5B,oBAC1BjD,GAAoB3wzB,EAAKl6G,EAAMyc,GAC/BA,EAAGqx5B,oBACTrx5B,EAAGqx5B,oBAAsBJ,GAEzBH,IACAI,EAAiBR,IAAc1w5B,EAAGsx5B,sBAC5BlD,GAAoB3wzB,EAAK8liB,EAAQvjoB,GACjCA,EAAGsx5B,sBACTtx5B,EAAGsx5B,sBAAwBL,GAE3BN,EACAlzzB,EAAI2N,UAAY2lzB,EAEXF,IACDI,EACAxzzB,EAAI2N,UAAY6lzB,EAGhBh3D,GAAU,GAGd22D,EACAnzzB,EAAI8yhB,YAAcygS,EAEbF,IACDI,EACAzzzB,EAAI8yhB,YAAc2gS,EAGlBz2D,GAAY,EAGxB,CACA,IAEI/wN,EACAC,EAHA1hrB,EAAQ+3C,EAAGgr0B,iBACfxu7B,EAAKy2N,SAAShrJ,EAAM,GAAIA,EAAM,GAAI+3C,EAAGm21B,wBAGjC14vB,EAAI4tiB,aAAe7wwB,EAAMkvwB,WACHA,GAAtB5svB,EAAK4j4B,GAAY1gxB,IAAmB,GAAI2poB,EAAiB7svB,EAAG,IAEhE,IAAIy0gC,GAAe,GACfd,GAAcC,EAAYlxF,MAC1Bhj7B,EAAK858B,OAAO74vB,EAAIk4uB,KACZ66E,EACAh0gC,EAAK22B,WAAW,OAGhB32B,EAAK22B,WAAWsqL,GAChB8zzB,GAAe,GAEnB/0gC,EAAK4qC,QACL44E,EAAG651B,UAAUr98B,EAAMwjH,EAAGyoF,MAAO4xwB,GAC7B798B,EAAKy68B,WACLj31B,EAAGs61B,eAEHi3D,GACA/0gC,EAAKo78B,YAAYn6vB,EAAK+yzB,EAAan3D,EAAgB,GAEnD3vN,IACAjsiB,EAAI4tiB,YAAY3B,GAChBjsiB,EAAIksiB,eAAiBA,GAEpB0wN,IACG7/9B,EAAM++9B,aACFkB,GACA0zD,GAAa1wzB,EAAKjjO,GAElBy/9B,GACAg0D,GAAWxwzB,EAAKjjO,KAIhBy/9B,GACAg0D,GAAWxwzB,EAAKjjO,GAEhBig+B,GACA0zD,GAAa1wzB,EAAKjjO,KAI1BkvwB,GACAjsiB,EAAI4tiB,YAAY,GAExB,CAySQmmR,CAAU/zzB,EAAKz9F,EAAIxlI,EAAO61hC,GACtBA,IACA97gC,EAAMk7gC,UAAYj1hC,EAAM+oH,MAAQ,GAChChvG,EAAMm7gC,YAAcl1hC,EAAM+owB,QAAU,KAIpCvjoB,aAAc,IACVzrH,EAAMg8gC,eAAiBhB,KACvBS,GAAgB,EAChBz7gC,EAAMg8gC,aAAehB,IAEzBL,GAA2BzxzB,EAAKz9F,EAAIyoiB,EAAQunX,EAAez7gC,GAhRvE,SAAmBkpN,EAAKz9F,EAAIxlI,GACxB,IAAIsiB,EACAvG,EAAO/b,EAAM+b,KAEjB,GADQ,MAARA,IAAiBA,GAAQ,IACrBA,EAAM,CACNknN,EAAIwN,KAAOzwO,EAAMywO,MAAQ2itB,EACzBnwtB,EAAI0N,UAAY3wO,EAAM2wO,UACtB1N,EAAIyN,aAAe1wO,EAAM0wO,aACzB,IAAIw+hB,OAAW,EACXC,OAAiB,EACjBlsiB,EAAI4tiB,aAAe7wwB,EAAMkvwB,WACHA,GAAtB5svB,EAAK4j4B,GAAY1gxB,IAAmB,GAAI2poB,EAAiB7svB,EAAG,IAE5D4svB,IACAjsiB,EAAI4tiB,YAAY3B,GAChBjsiB,EAAIksiB,eAAiBA,GAErBnvwB,EAAM++9B,aACFs0D,GAAerzhC,IACfijO,EAAIgzhB,WAAWl6uB,EAAM/b,EAAMpQ,EAAGoQ,EAAMrR,GAEpC6kiC,GAAaxzhC,IACbijO,EAAI0O,SAAS51N,EAAM/b,EAAMpQ,EAAGoQ,EAAMrR,KAIlC6kiC,GAAaxzhC,IACbijO,EAAI0O,SAAS51N,EAAM/b,EAAMpQ,EAAGoQ,EAAMrR,GAElC0kiC,GAAerzhC,IACfijO,EAAIgzhB,WAAWl6uB,EAAM/b,EAAMpQ,EAAGoQ,EAAMrR,IAGxCugxB,GACAjsiB,EAAI4tiB,YAAY,GAExB,CACJ,CA4OYomR,CAAUh0zB,EAAKz9F,EAAIxlI,IAEdwlI,aAAc,IACfzrH,EAAMg8gC,eAAiBjB,KACvBU,GAAgB,EAChBz7gC,EAAMg8gC,aAAejB,IA9IrC,SAAwB7xzB,EAAKz9F,EAAIyoiB,EAAQsmX,EAAax6gC,GAC3Cs6gC,GAAgBpxzB,EAAK6jzB,GAASth5B,EAAIzrH,EAAMoq8B,SAAUl2S,GAAU64W,GAAS74W,EAAQl0pB,EAAMoq8B,SAAUowE,EAAax6gC,EACrH,CA8IYm9gC,CAAej0zB,EAAKz9F,EAAIyoiB,EAAQunX,EAAez7gC,GA5T3D,SAAoBkpN,EAAKz9F,EAAIxlI,GACzB,IAAIk2I,EAAQ1Q,EAAGq81B,QAAUpO,GAAoBzz9B,EAAMk2I,MAAO1Q,EAAGq81B,QAASr81B,EAAIA,EAAGnpH,QAC7E,GAAK65H,GAAU490B,GAAa590B,GAA5B,CAGA,IAAItmJ,EAAIoQ,EAAMpQ,GAAK,EACfjB,EAAIqR,EAAMrR,GAAK,EACf+7B,EAAQ86G,EAAGsxF,WACXnsM,EAAS66G,EAAGmhC,YACZhS,EAASze,EAAMxrH,MAAQwrH,EAAMvrH,OAWjC,GAVa,MAATD,GAA2B,MAAVC,EACjBD,EAAQC,EAASgqI,EAEF,MAAVhqI,GAA2B,MAATD,EACvBC,EAASD,EAAQiqI,EAEH,MAATjqI,GAA2B,MAAVC,IACtBD,EAAQwrH,EAAMxrH,MACdC,EAASurH,EAAMvrH,QAEf3qB,EAAMyh+B,QAAUzh+B,EAAM0h+B,QAAS,CAC/B,IAAI1+oB,EAAKhjV,EAAMgjV,IAAM,EACjBC,EAAKjjV,EAAMijV,IAAM,EACrBhgH,EAAII,UAAUntF,EAAO8sM,EAAIC,EAAIjjV,EAAMyh+B,OAAQzh+B,EAAM0h+B,QAAS9x+B,EAAGjB,EAAG+7B,EAAOC,EAC3E,MACK,GAAI3qB,EAAMgjV,IAAMhjV,EAAMijV,GAAI,CAC3B,IAEIw+oB,EAAS/28B,GAFTs4T,EAAKhjV,EAAMgjV,IAGX0+oB,EAAU/28B,GAFVs4T,EAAKjjV,EAAMijV,IAGfhgH,EAAII,UAAUntF,EAAO8sM,EAAIC,EAAIw+oB,EAAQC,EAAS9x+B,EAAGjB,EAAG+7B,EAAOC,EAC/D,MAEIs4M,EAAII,UAAUntF,EAAOtmJ,EAAGjB,EAAG+7B,EAAOC,EA7BtC,CA+BJ,CA0RYwsgC,CAAWl0zB,EAAKz9F,EAAIxlI,IAEfwlI,EAAGm74B,0BACJ5mgC,EAAMg8gC,eAAiBf,KACvBQ,GAAgB,EAChBz7gC,EAAMg8gC,aAAef,IAcrC,SAA0B/xzB,EAAKz9F,EAAIzrH,GAC/B,IAAI0mgC,EAAej74B,EAAGk74B,kBAClB0W,EAAuB5x5B,EAAGm74B,0BAC9B19yB,EAAIjjN,OACJ,IAQIzzB,EACAi+H,EATA6s6B,EAAa,CACb/B,gBAAiB,KACjBrnX,OAAQ,KACR0nX,YAAY,EACZp+D,UAAWx98B,EAAMw98B,UACjBC,WAAYz98B,EAAMy98B,WAClBrT,QAASpq8B,EAAMoq8B,SAInB,IAAK539B,EAAIi5I,EAAGyB,YAAazc,EAAMi25B,EAAaz0hC,OAAQO,EAAIi+H,EAAKj+H,KACrD218B,EAAcu+E,EAAal0hC,IACnB2q+B,aAAeh1B,EAAYg1B,cACvCh1B,EAAYk1B,mBACZiiB,GAAMp2wB,EAAKi/tB,EAAam1F,EAAY9qiC,IAAMi+H,EAAM,GAChD030B,EAAYm1B,kBACZn1B,EAAYi1B,YAAcj1B,EAAYi1B,aACtCkgE,EAAWppX,OAASi0R,EAExB,IAAK,IAAIo1F,EAAM,EAAGC,EAAQH,EAAqBpriC,OAAQsriC,EAAMC,EAAOD,IAAO,CACvE,IAAIp1F,KAAck1F,EAAqBE,IAC3BpgE,aAAeh1B,EAAYg1B,cACvCh1B,EAAYk1B,mBACZiiB,GAAMp2wB,EAAKi/tB,EAAam1F,EAAYC,IAAQC,EAAQ,GACpDr1F,EAAYm1B,kBACZn1B,EAAYi1B,YAAcj1B,EAAYi1B,aACtCkgE,EAAWppX,OAASi0R,CACxB,CACA18zB,EAAG664B,4BACH764B,EAAGy64B,UAAW,EACdh9yB,EAAI0khB,SACR,CA/CY6vS,CAAiBv0zB,EAAKz9F,EAAIzrH,IAG9B87gC,GAAgBT,GAChBZ,GAAevxzB,EAAKlpN,GAExByrH,EAAG6x1B,kBACH7x1B,EAAG2x1B,YAAc3x1B,EAAG2x1B,aACpBp98B,EAAMk0pB,OAASzoiB,EACfA,EAAG8g0B,QAAU,EACb9g0B,EAAG6v5B,cAAe,CAjElB,CAkEJ,CCvdA,IAAIoC,GAAW,IAAI,GACfC,GAAa,IAAI,GAAI,KACrBC,GAAY,CAAC,SAAU,aAAc,mBAAoB,QAAS,kBAAmB,aAAc,aAAc,eAAgB,iBAQ9H,SAASC,GAA+BC,EAAaj9/B,GAC1D,GAAoB,SAAhBi9/B,EACF,OAAO,KAGT,IAAI18E,EAAMvg7B,EAAI4pS,sBACVtgU,EAAK02B,EAAIk9/B,QACTlvwB,EAA4B,QAApB1kR,EAAG677B,QAAQ7n8B,KAEnB2/hC,EAAYpmS,OACdgmS,GAAiB,OAAEI,GAGrB,IAAIE,EAAaN,GAAS3oiC,IAAI+oiC,GAE9B,GAAIE,EACF,OAAOA,EAGT,IAAIC,EAAW,EAASH,EAAa,CACnChyiB,OAAQ,OACRq+f,WAAY,EACZurC,kBAAkB,EAClBv26B,MAAO,qBACPmsB,gBAAiB,KACjB2+2B,WAAY,EACZC,WAAY,EACZ/x4B,SAAU,EACV+l7B,aAAc,IACdC,cAAe,MAGgB,SAA7BF,EAAS3y5B,kBACX2y5B,EAAS3y5B,gBAAkB,MAG7B,IAAI+hH,EAAU,CACZlyF,OAAQ,UAOV,OAEA,SAA2BkyF,GAIzB,IAHA,IAcIzwG,EAdA13I,EAAO,CAACk88B,GACRg9E,GAAa,EAER5riC,EAAI,EAAGA,EAAIoriC,GAAU3riC,SAAUO,EAAG,CACzC,IAAIO,EAAQkriC,EAASL,GAAUpriC,IAE/B,GAAa,MAATO,IAAkBwQ,GAAQxQ,KAAW65D,GAAS75D,KAAWmiD,GAASniD,IAA2B,kBAAVA,EAAqB,CAC1GqriC,GAAa,EACb,KACF,CAEAl5hC,EAAKzR,KAAKV,EACZ,CAIA,GAAIqriC,EAAY,CACdxh5B,EAAW13I,EAAKzG,KAAK,MAAQowR,EAAQ,OAAS,IAC9C,IAAI/pQ,EAAQ64gC,GAAW5oiC,IAAI6nJ,GAEvB93H,IACF+pQ,EAAQxhC,EAAQ6otB,WAAapx7B,EAAQuoO,EAAQlxG,MAAQr3H,EAEzD,CAEA,IAaIokN,EAbA+gxB,EAAao0C,GAAoBJ,EAASh0C,YAC1CC,EAmSR,SAA6B59F,GAC3B,IAAKA,GAAwB,iBAATA,GAAqC,IAAhBA,EAAKr65B,OAC5C,MAAO,CAAC,EAAG,GAGb,GAAIijD,GAASo32B,GAAO,CAClB,IAAIgyI,EAAc7piC,KAAKuK,KAAKst5B,GAC5B,MAAO,CAACgyI,EAAaA,EACvB,CAEA,IAAIC,EAAYt9gC,EAAIqr4B,GAAM,SAAUr75B,GAClC,OAAOwD,KAAKuK,KAAK/N,EACnB,IACA,OAAOq75B,EAAKr65B,OAAS,EAAIssiC,EAAU3qiC,OAAO2qiC,GAAaA,CACzD,CAjTqBC,CAAoBP,EAAS/zC,YAC1Cu0C,EAAcC,GAAqBT,EAASnyiB,QAC5C6yiB,EA2TC19gC,EA3TuCgp+B,GA2T7B,SAAU/48B,GACzB,OAAO0t/B,GAAoB1t/B,EAC7B,IA5TM2t/B,EAAmBD,GAAoB10C,GACvCnh3B,GAAU8lJ,GAAS,EAAY4qqB,eAC/BqlG,EAAUjwwB,GAAS,CACrB7lR,IAAK,IACL+1hC,MAAO,CAAC,EACRtohC,IAAK,MACLmb,SAAU,IAERqlU,EAyBJ,WAcE,IAFA,IAAItmU,EAAQ,EAEHn+B,EAAI,EAAGwsiC,EAAOL,EAAkB1siC,OAAQO,EAAIwsiC,IAAQxsiC,EAC3Dm+B,EAAQuh8B,GAAuBvh8B,EAAOgugC,EAAkBnsiC,IAG1D,IAAIysiC,EAAgB,EAEpB,IAASzsiC,EAAI,EAAGwsiC,EAAOP,EAAYxsiC,OAAQO,EAAIwsiC,IAAQxsiC,EACrDysiC,EAAgB/sE,GAAuB+sE,EAAeR,EAAYjsiC,GAAGP,QAGvE0+B,GAASsugC,EACT,IAAIrugC,EAASiugC,EAAmBF,EAAkB1siC,OAASwsiC,EAAYxsiC,OAiBvE,MAAO,CACL0+B,MAAOl8B,KAAK8K,IAAI,EAAG9K,KAAKgL,IAAIkxB,EAAOstgC,EAASC,eAC5CttgC,OAAQn8B,KAAK8K,IAAI,EAAG9K,KAAKgL,IAAImxB,EAAQqtgC,EAASE,gBAElD,CAvEYe,GAGRn25B,IACFA,EAAOp4G,MAAQsmU,EAAMtmU,MAAQyw7B,EAC7Br40B,EAAOn4G,OAASqmU,EAAMrmU,OAASww7B,EAC/Bl4uB,EAAMngG,EAAOpqF,WAAW,OAmE1B,WACMuqL,IACFA,EAAIG,UAAU,EAAG,EAAGtgG,EAAOp4G,MAAOo4G,EAAOn4G,QAErCqtgC,EAAS3y5B,kBACX49F,EAAI2N,UAAYonzB,EAAS3y5B,gBACzB49F,EAAIuyhB,SAAS,EAAG,EAAG1ynB,EAAOp4G,MAAOo4G,EAAOn4G,UAM5C,IAFA,IAAI23b,EAAO,EAEF/1d,EAAI,EAAGA,EAAI03/B,EAAWj4/B,SAAUO,EACvC+1d,GAAQ2hiB,EAAW13/B,GAGrB,KAAI+1d,GAAQ,GAUZ,IALA,IAAI3zd,GAAKiqiC,EACLM,EAAM,EACNC,EAAW,EACXC,EAAO,EAEJzqiC,EAAIqiW,EAAMrmU,QAAQ,CACvB,GAAIuugC,EAAM,GAAM,EAAG,CAMjB,IALA,IAAIG,EAAYF,EAAW,EAAIX,EAAYxsiC,OACvC4D,EAAI,EACJ0piC,EAAO,EACPC,EAAY,EAET3piC,EAAkB,EAAdohW,EAAMtmU,OAAW,CAC1B,IAAI23b,EAAO,EAEX,IAAS91d,EAAI,EAAGA,EAAIy3/B,EAAWo1C,GAAMptiC,SAAUO,EAC7C81d,GAAQ2hiB,EAAWo1C,GAAM7siC,GAG3B,GAAI81d,GAAQ,EAEV,MAIF,GAAIi3kB,EAAO,GAAM,EAAG,CAClB,IAAI/ohC,EAAmC,IAA3B,EAAIynhC,EAAS9zC,YACrB159B,EAAO56B,EAAIo0/B,EAAWo1C,GAAME,GAAQ/ohC,EACpCoghB,EAAQhiiB,EAAIs1/B,EAAWi1C,GAAO3ohC,EAC9Bma,EAAQs59B,EAAWo1C,GAAME,GAAQtB,EAAS9zC,WAC1Cv59B,EAASs59B,EAAWi1C,GAAOlB,EAAS9zC,WACpCs1C,EAAYD,EAAY,EAAIf,EAAYa,GAAWrtiC,OACvDytiC,EAAYjvgC,EAAMmmgB,EAAOjmgB,EAAOC,EAAQ6tgC,EAAYa,GAAWG,GACjE,CAEA5piC,GAAKo0/B,EAAWo1C,GAAME,KACpBC,IACAD,IAEWt1C,EAAWo1C,GAAMptiC,SAC5BstiC,EAAO,EAEX,GAEEF,IAEWp1C,EAAWh4/B,SACtBotiC,EAAO,EAEX,CAEAzqiC,GAAKs1/B,EAAWi1C,KACdC,IACAD,IAEUj1C,EAAWj4/B,SACrBktiC,EAAM,EAEV,CAEA,SAASO,EAAY7piC,EAAGjB,EAAG+7B,EAAOC,EAAQingC,GACxC,IAAInk8B,EAAQm7L,EAAQ,EAAIuyrB,EACpBt1d,EAAS,GAAa+riB,EAAYhiiC,EAAI69F,EAAO9+F,EAAI8+F,EAAO/iE,EAAQ+iE,EAAO9iE,EAAS8iE,EAAOuq8B,EAAS9+6B,MAAO8+6B,EAASvI,kBAEpH,GAAI7mwB,EAAO,CACT,IAAI8wwB,EAAcx1hC,EAAG677B,QAAQ45F,iBAAiB9ziB,GAE1C6ziB,GACFb,EAAQltgC,SAASn+B,KAAKksiC,EAE1B,MAEEvE,GAAYlyzB,EAAK4iR,EAErB,CACF,CAhKA+ziB,GAEIzB,GACFT,GAAW7qF,IAAIl2zB,EAAU7T,GAAU+15B,GAGrCzxyB,EAAQlxG,MAAQpT,EAChBskH,EAAQ6otB,WAAa4oF,EACrBzxyB,EAAQyyyB,SAAW7osB,EAAMtmU,MACzB08N,EAAQ0yyB,UAAY9osB,EAAMrmU,MAwJ5B,CAvNAovgC,CAAkB3yyB,GAClBA,EAAQl1I,SAAW8l7B,EAAS9l7B,SAC5Bk1I,EAAQ7iI,OAAS6iI,EAAQ5iI,OAASokK,EAAQ,EAAI,EAAIuyrB,EAClDs8E,GAAS7/hC,IAAIigiC,EAAazwyB,GAC1BywyB,EAAYpmS,OAAQ,EACbrqgB,CAmNT,CAQA,SAASqxyB,GAAqB5yiB,GAC5B,IAAKA,GAA4B,IAAlBA,EAAO75f,OACpB,MAAO,CAAC,CAAC,SAGX,GAAI26D,GAASk/b,GACX,MAAO,CAAC,CAACA,IAKX,IAFA,IAAIm0iB,GAAc,EAETztiC,EAAI,EAAGA,EAAIs5f,EAAO75f,SAAUO,EACnC,IAAKo6D,GAASk/b,EAAOt5f,IAAK,CACxBytiC,GAAc,EACd,KACF,CAGF,GAAIA,EACF,OAAOvB,GAAqB,CAAC5yiB,IAG/B,IAAI12e,EAAS,GAEb,IAAS5iB,EAAI,EAAGA,EAAIs5f,EAAO75f,SAAUO,EAC/Bo6D,GAASk/b,EAAOt5f,IAClB4iB,EAAO3hB,KAAK,CAACq4f,EAAOt5f,KAEpB4iB,EAAO3hB,KAAKq4f,EAAOt5f,IAIvB,OAAO4iB,CACT,CASA,SAASiphC,GAAoB/xI,GAC3B,IAAKA,GAAwB,IAAhBA,EAAKr65B,OAChB,MAAO,CAAC,CAAC,EAAG,IAGd,GAAIijD,GAASo32B,GAEX,MAAO,CAAC,CADJiyI,EAAY9piC,KAAKuK,KAAKst5B,GACNiyI,IAUtB,IAFA,IAAI2B,GAAc,EAET1tiC,EAAI,EAAGA,EAAI855B,EAAKr65B,SAAUO,EACjC,IAAK0iD,GAASo32B,EAAK955B,IAAK,CACtB0tiC,GAAc,EACd,KACF,CAGF,GAAIA,EACF,OAAO7B,GAAoB,CAAC/xI,IAG9B,IAAIl34B,EAAS,GAEb,IAAS5iB,EAAI,EAAGA,EAAI855B,EAAKr65B,SAAUO,EACjC,GAAI0iD,GAASo32B,EAAK955B,IAAK,CACrB,IAAI+riC,EAAY9piC,KAAKuK,KAAKst5B,EAAK955B,IAC/B4iB,EAAO3hB,KAAK,CAAC8qiC,EAAWA,GAC1B,MACMA,EAAYt9gC,EAAIqr4B,EAAK955B,IAAI,SAAUvB,GACrC,OAAOwD,KAAKuK,KAAK/N,EACnB,KAEcgB,OAAS,GAAM,EAG3BmjB,EAAO3hB,KAAK8qiC,EAAU3qiC,OAAO2qiC,IAE7BnphC,EAAO3hB,KAAK8qiC,GAKlB,OAAOnphC,CACT,CAwCA,SAASwphC,GAAoBtyI,GAG3B,IAFA,IAAI6zI,EAAc,EAET3tiC,EAAI,EAAGA,EAAI855B,EAAKr65B,SAAUO,EACjC2tiC,GAAe7zI,EAAK955B,GAGtB,OAAI855B,EAAKr65B,OAAS,GAAM,EAGD,EAAdkuiC,EAGFA,CACT,CCvaA,SADgB,IAAI,GCEpB,IAAIC,GAAa,CAAC,EAWX,SAASC,GAAQ/jiC,GAOtB,OAAO8jiC,GAAW9jiC,EACpB,CCgBO,IAAI,GAAU,QACVuxJ,GAAe,CACxByy4B,QAAS,SAUPC,GAA6B,IAE7BC,GAAyB,IAEzBC,GAAyB,IACzBC,GAAwB,IAKxBC,GAAoC,KAO7BC,GAAW,CACpBC,UAAW,CACTrxW,OApB4B,IAqB5BsxW,cA3BmC,IA4BnCC,UApB+B,KAsBjCC,OAAQ,CACNC,OAAQT,GACRU,mBAtBqC,KAuBrCC,OAAQV,GACRW,MAAOV,GACPW,kBAfoC,KAgBpCC,UAvB4B,IAwB5BC,MAhBwB,IAiBxBC,WAAYb,GACZc,KAjBuB,IAkBvBC,MAjBwB,MAyBxBC,GAAsB,sBACtBC,GAAiB,kBACjBC,GAA0B,sBAC1BC,GAAa,kBACbC,GAAqB,wBAOzB,SAASC,GAAwC3/gC,GAC/C,OAAO,WAGL,IAFA,IAAI4mB,EAAO,GAEF54B,EAAK,EAAGA,EAAKre,UAAUC,OAAQoe,IACtC44B,EAAK54B,GAAMre,UAAUqe,GAGvB,IAAIze,KAAKqwiC,aAKT,OAAOC,GAA+BtwiC,KAAMywB,EAAQ4mB,GAJlDk5/B,GAAgBvwiC,KAAKurB,GAKzB,CACF,CAEA,SAASilhC,GAA8C//gC,GACrD,OAAO,WAGL,IAFA,IAAI4mB,EAAO,GAEF54B,EAAK,EAAGA,EAAKre,UAAUC,OAAQoe,IACtC44B,EAAK54B,GAAMre,UAAUqe,GAGvB,OAAO6xhC,GAA+BtwiC,KAAMywB,EAAQ4mB,EACtD,CACF,CAEA,SAASi5/B,GAA+Bz2+B,EAAMppC,EAAQ4mB,GAGpD,OADAA,EAAK,GAAKA,EAAK,IAAMA,EAAK,GAAG9nC,cACtB,GAAS7P,UAAU+wB,GAAQlwB,MAAMs5D,EAAMxiB,EAChD,CAEA,IAkBIi6X,GACA0snB,GACAyS,GACAC,GACAC,GACAtT,GACAuT,GACAC,GACAC,GACAC,GACAC,GACA1i7B,GACA2i7B,GACAC,GACAC,GACAC,GACAC,GACAC,GAnCAC,GAEJ,SAAU7orB,GAGR,SAAS6orB,IACP,OAAkB,OAAX7orB,GAAmBA,EAAOnoX,MAAMP,KAAMI,YAAcJ,IAC7D,CAEA,OANA4sa,EAAU2koB,EAAe7orB,GAMlB6orB,CACT,CARA,CAQE,IAEEC,GAAqBD,GAAc7xiC,UACvC8xiC,GAAmB5giC,GAAK4/hC,GAA8C,MACtEgB,GAAmBxjgC,IAAMwigC,GAA8C,OAuBvE,IAAIiB,GAEJ,SAAU/orB,GAGR,SAAS+orB,EAAQnmG,EACjBvqsB,EAAO1kN,GACL,IAAIqQ,EAAQg8T,EAAO9oX,KAAKI,KAAM,IAAIwiiC,KAAuBxiiC,KAEzD0sD,EAAMgl/B,aAAe,GACrBhl/B,EAAMil/B,WAAa,CAAC,EACpBjl/B,EAAMkl/B,iBAAmB,GACzBll/B,EAAMiz8B,eAAiB,CAAC,EAExBjz8B,EAAMml/B,gBAAkB,GACxBx1/B,EAAOA,GAAQ,CAAC,EAEZ2e,GAAS+lM,KACXA,EAAQ+wyB,GAAa/wyB,IAGvBr0M,EAAMql/B,KAAOzmG,EACb,IAcI/y7B,EAAKm0C,EAAMsl/B,IAAM,GAAa1mG,EAAK,CACrCproB,SAAU7jR,EAAK6jR,UAfK,SAgBpBj7N,iBAAkB5oD,EAAK4oD,iBACvBlmE,MAAOsd,EAAKtd,MACZC,OAAQqd,EAAKrd,OACbi97B,IAAK5/6B,EAAK4/6B,IACVF,aAAczxB,GAAUju5B,EAAK0/6B,cAlBL,GAmBxBO,iBAAkBhyB,GAAUju5B,EAAKig7B,iBApBR,QAqBzBhoB,YAAaj45B,EAAKi45B,cAEpB5n5B,EAAMul/B,KAAO51/B,EAAK4/6B,IAElBvv6B,EAAMwl/B,kBAAoB9tgC,GAAS/gC,GAAKkV,EAAGgwD,MAAOhwD,GAAK,KACvDwoP,EAAQxwO,EAAMwwO,KACL,GAAeA,GAAO,GAC/Br0M,EAAM+x8B,OAAS19vB,EACfr0M,EAAMgy8B,Q1E1MH,SAA4B7xjB,GACjC,GAAI7xY,GAAS6xY,GAAS,CACpB,IAAIwgjB,EAAYN,GAAclgjB,EAAOj8Y,gBAAkB,CAAC,EAExD,OAAIi8Y,IAAW+/iB,IAAa//iB,IAAWggjB,GAC9Bt89B,EAAM889B,GAENvsvB,EAAMvwO,EAAM889B,GAAY989B,EAAMw89B,GAAcD,MAAkB,EAEzE,CACE,OAAOhsvB,EAAMvwO,EAAMs8a,GAASt8a,EAAMw89B,GAAcD,MAAkB,EAEtE,C0E8LoBqlD,CAAmB91/B,EAAKwwZ,QAAUogjB,IAClDvg8B,EAAM0l/B,aAAe,IAAIC,GACzB,IAAIpjgC,EAAMyd,EAAMo48B,KAAOqsC,GAAmBzk/B,GAE1C,SAAS4l/B,EAAiBtxiC,EAAGsC,GAC3B,OAAOtC,EAAEuxiC,OAASjviC,EAAEiviC,MACtB,CAgBA,OAdA,GAAQC,GAAaF,GACrB,GAAQG,GAAoBH,GAC5B5l/B,EAAMgm/B,WAAa,IAAI,GAAUhm/B,EAAOzd,EAAKwjgC,GAAoBD,IACjE9l/B,EAAMim/B,eAAiB,IAAIpB,GAE3B7k/B,EAAMkm/B,cAGNlm/B,EAAMmiE,OAASxrH,GAAKqpD,EAAMmiE,OAAQniE,GAClCn0C,EAAGw3O,UAAUn/O,GAAG,QAAS87C,EAAMmm/B,SAAUnm/B,GACzCqk/B,GAAkBx4hC,EAAIm0C,GACtBsk/B,GAAez4hC,EAAIm0C,GAEnBi+4B,GAAej+4B,GACRA,CACT,CAk3DA,OA17DAkgX,EAAU6koB,EAAS/orB,GA0EnB+orB,EAAQ/xiC,UAAUmziC,SAAW,WAC3B,IAAI7yiC,KAAK0zgC,UAAT,CAIA49B,GAAmBtxiC,MACnB,IAAImrhC,EAAYnrhC,KAAK0yiC,WAErB,GAAI1yiC,KAAKgwiC,IAAiB,CACxB,IAAI57jB,EAASp0e,KAAKgwiC,IAAgB57jB,OAClCp0e,KAAK+viC,KAAuB,EAE5B,IACEz+nB,GAAQtxa,MACR0wiC,GAAcni+B,OAAO3uE,KAAKI,KAAM,KAAMA,KAAKgwiC,IAAgB9i6B,aAC7D,CAAE,MAAO/tI,GAGP,MAFAa,KAAK+viC,KAAuB,EAC5B/viC,KAAKgwiC,IAAkB,KACjB7wiC,CACR,CAQAa,KAAKgyiC,IAAIzp+B,QAETvoE,KAAK+viC,KAAuB,EAC5B/viC,KAAKgwiC,IAAkB,KACvBa,GAAoBjxiC,KAAKI,KAAMo0e,GAC/B08jB,GAAoBlxiC,KAAKI,KAAMo0e,EACjC,MACK,GAAI+2iB,EAAU9X,WAAY,CAE3B,IAAIy/B,EArPiB,EAsPjBxvE,EAAUtj+B,KAAKimuB,OACfh3rB,EAAMjvC,KAAK8kgC,KACfqmB,EAAU9X,YAAa,EAEvB,EAAG,CACD,IAAI1y8B,GAAa,IAAIn1C,KACrB2//B,EAAU4T,mBAAmBz7D,GAE7B6nD,EAAU+S,0BAA0B56D,GACpC+5D,GAAkBr9hC,KAAMsj+B,GAOxB6nD,EAAUiT,mBAAmB96D,GAC7B4tE,GAAalxiC,KAAMA,KAAKimuB,OAAQh3rB,EAAK,SAAU,CAAC,GAChD6jgC,IAAe,IAAItnhC,KAASm1C,CAC9B,OAASmy+B,EAAa,GAAK3nB,EAAU9X,YAGhC8X,EAAU9X,YACbrzgC,KAAKgyiC,IAAIzp+B,OAIb,CA7DF,CA8DF,EAEAkp+B,EAAQ/xiC,UAAUqziC,OAAS,WACzB,OAAO/yiC,KAAK+xiC,IACd,EAEAN,EAAQ/xiC,UAAU+ze,MAAQ,WACxB,OAAOzze,KAAKurB,EACd,EAEAkmhC,EAAQ/xiC,UAAUysiC,MAAQ,WACxB,OAAOnsiC,KAAKgyiC,GACd,EAEAP,EAAQ/xiC,UAAUsziC,MAAQ,WACxB,OAAOhziC,KAAKiyiC,IACd,EAIAR,EAAQ/xiC,UAAU8q2B,UAAY,SAAU3syB,EAAQio4B,EAAUC,GACxD,IAAI/l8B,KAAK+viC,IAQT,GAAI/viC,KAAK0zgC,UACP68B,GAAgBvwiC,KAAKurB,QADvB,CAKA,IAAI6od,EACA4vhB,EACAivC,EAYJ,GAVI,GAASntG,KACXC,EAAaD,EAASC,WACtB3xd,EAAS0xd,EAAS1xd,OAClB4vhB,EAAel+D,EAASk+D,aACxBivC,EAAgBntG,EAASh+0B,WACzBg+0B,EAAWA,EAASA,UAGtB9l8B,KAAK+viC,KAAuB,GAEvB/viC,KAAKimuB,QAAU6/N,EAAU,CAC5B,IAAI04D,EAAgB,IAAI,GAAcx+/B,KAAK8kgC,MACvC/jwB,EAAQ/gQ,KAAKy+/B,OACbn7B,EAAUtj+B,KAAKimuB,OAAS,IAAIlme,GAChCujuB,EAAQ6nD,UAAYnrhC,KAAK0yiC,WACzBpvE,EAAQrH,IAAMj89B,KAAKiyiC,KACnB3uE,EAAQ5y6B,KAAK,KAAM,KAAM,KAAMqwM,EAAO/gQ,KAAK0+/B,QAASF,EACtD,CAEAx+/B,KAAKimuB,OAAOukI,UAAU3syB,EAAQ,CAC5Bmm8B,aAAcA,GACbpF,IAEH,IAAI1x3B,EAAe,CACjBgm6B,iBAAkBD,EAClBh0C,eAAe,GAGjB,GAAIl5D,EACF/l8B,KAAKgwiC,IAAkB,CACrB57jB,OAAQA,EACRlnW,aAAcA,GAEhBltI,KAAK+viC,KAAuB,EAG5B/viC,KAAKmsiC,QAAQzzE,aACR,CACL,IACEpnjB,GAAQtxa,MACR0wiC,GAAcni+B,OAAO3uE,KAAKI,KAAM,KAAMktI,EACxC,CAAE,MAAO/tI,GAGP,MAFAa,KAAKgwiC,IAAkB,KACvBhwiC,KAAK+viC,KAAuB,EACtB5wiC,CACR,CAIKa,KAAKiyiC,MAERjyiC,KAAKgyiC,IAAIzp+B,QAGXvoE,KAAKgwiC,IAAkB,KACvBhwiC,KAAK+viC,KAAuB,EAC5Bc,GAAoBjxiC,KAAKI,KAAMo0e,GAC/B08jB,GAAoBlxiC,KAAKI,KAAMo0e,EACjC,CAhEA,CAiEF,EAMAq9jB,EAAQ/xiC,UAAUyziC,SAAW,WAE7B,EAGA1B,EAAQ/xiC,UAAUk4L,SAAW,WAC3B,OAAO53L,KAAKimuB,MACd,EAEAwrU,EAAQ/xiC,UAAU4q2B,UAAY,WAC5B,OAAOtq2B,KAAKimuB,QAAUjmuB,KAAKimuB,OAAOqkI,WACpC,EAEAmnM,EAAQ/xiC,UAAUyrO,SAAW,WAC3B,OAAOnrO,KAAKgyiC,IAAI7m0B,UAClB,EAEAsm0B,EAAQ/xiC,UAAUs7K,UAAY,WAC5B,OAAOh7K,KAAKgyiC,IAAIh33B,WAClB,EAEAy23B,EAAQ/xiC,UAAUm5U,oBAAsB,WACtC,OAAO74U,KAAKgyiC,IAAI59F,QAAQob,KAErB,EAAIxoB,iBAAmB9k8B,OAAO+iG,kBAAoB,CACvD,EAOAws8B,EAAQ/xiC,UAAU0ziC,kBAAoB,SAAU/2/B,GAK9C,OAAOr8C,KAAKqziC,eAAeh3/B,EAC7B,EAEAo1/B,EAAQ/xiC,UAAU2ziC,eAAiB,SAAUh3/B,GAU3C,OATAA,EAAOA,GAAQ,CAAC,EACFr8C,KAAKgyiC,IAAI59F,QAQRg/F,kBAAkB,CAC/B155B,gBAAiBr9F,EAAKq9F,iBAAmB15I,KAAKimuB,OAAO9iuB,IAAI,mBACzDyrH,WAAYvyE,EAAKuyE,YAAc5uH,KAAK64U,uBAExC,EAEA44tB,EAAQ/xiC,UAAU4ziC,kBAAoB,SAAUj3/B,GAU9C,OATAA,EAAOA,GAAQ,CAAC,EACFr8C,KAAKgyiC,IAAI59F,QAQRm/F,eAAe,CAC5BC,WAAYn3/B,EAAKm3/B,YAErB,EAMA/B,EAAQ/xiC,UAAU+ziC,cAAgB,WAChC,GAAK,EAAI/sG,aAAT,CAIA,IAAInu7B,EAAKvY,KAAKgyiC,IAMd,OAHA,EAFWz5hC,EAAG0b,QAAQ4h7B,kBAEX,SAAUh8zB,GACnBA,EAAG8+0B,cAAc,MAAM,EACzB,IACOpg9B,EAAG677B,QAAQhnrB,WARlB,CASF,EAEAqkxB,EAAQ/xiC,UAAUw8vB,WAAa,SAAU7/sB,GACvC,IAAIr8C,KAAK0zgC,UAAT,CAMA,IAAIggC,GADJr3/B,EAAOA,GAAQ,CAAC,GACaq3/B,kBACzBpwE,EAAUtj+B,KAAKimuB,OACf0tU,EAAyB,GACzBvxiC,EAAOpC,KACX,EAAK0ziC,GAAmB,SAAUx31B,GAChConxB,EAAQwe,cAAc,CACpBhe,SAAU5nxB,IACT,SAAU7xD,GACX,IAAI9iG,EAAOnlD,EAAKu9/B,eAAet12B,EAAUup5B,UAEpCrs/B,EAAK6zQ,MAAMjzR,SACdwrgC,EAAuB9xiC,KAAK0lD,GAC5BA,EAAK6zQ,MAAMjzR,QAAS,EAExB,GACF,IACA,IAAIjY,EAAqC,QAA/BlwB,KAAKgyiC,IAAI59F,QAAQpv6B,UAAsBhlC,KAAKyziC,gBAAkBzziC,KAAKqziC,eAAeh3/B,GAAM+wO,UAAU,UAAY/wO,GAAQA,EAAK9vC,MAAQ,QAI7I,OAHA,EAAKoniC,GAAwB,SAAUps/B,GACrCA,EAAK6zQ,MAAMjzR,QAAS,CACtB,IACOjY,CAvBP,CAFEqghC,GAAgBvwiC,KAAKurB,GA0BzB,EAEAkmhC,EAAQ/xiC,UAAUm0iC,oBAAsB,SAAUx3/B,GAChD,IAAIr8C,KAAK0zgC,UAAT,CAKA,IAAIogC,EAAsB,QAAdz3/B,EAAK9vC,KACbqqe,EAAU52e,KAAKo7T,MACfu3oB,EAAU9v8B,KAAKgL,IACf+k8B,EAAU/v8B,KAAK8K,IACfomiC,EAAah0+B,IAEjB,GAAIi0+B,GAAgBp9jB,GAAU,CAC5B,IAAI4jC,EAASu5hB,EACT/ugB,EAAQ+ugB,EACRE,GAAU,IACVC,GAAW,IACXC,EAAe,GACfC,EAAQ/3/B,GAAQA,EAAKuyE,YAAc5uH,KAAK64U,sBAC5C,EAAK,IAAW,SAAUu3M,EAAO7kgB,GAC/B,GAAI6kgB,EAAMh1N,QAAUw7K,EAAS,CAC3B,IAAIz/V,EAAS285B,EAAQ1jhB,EAAM+7gB,QAAQ/3F,QAAQigG,YAAYp65B,UAAYm2Y,EAAMijhB,eAAe9ihC,EAAM8rB,IAC1F05+B,EAAe3lgB,EAAM2ihB,SAASp/8B,wBAClC6mb,EAASm4b,EAAQojF,EAAal3/B,KAAM27e,GACpCwqB,EAAQ2ta,EAAQojF,EAAaj3/B,IAAKkmgB,GAClCivgB,EAAUrhG,EAAQmjF,EAAal27B,MAAOo08B,GACtCC,EAAWthG,EAAQmjF,EAAaj27B,OAAQo08B,GACxCC,EAAatyiC,KAAK,CAChByp8B,IAAKn0zB,EACLt4G,KAAMk3/B,EAAal3/B,KACnBC,IAAKi3/B,EAAaj3/B,KAEtB,CACF,IAKA,IAAIC,GAFJk1gC,GAAWG,IAFX55hB,GAAU45hB,GAKNp1gC,GAFJk1gC,GAAYE,IAFZpvgB,GAASovgB,GAKL18tB,EAAe,EAAYmwnB,eAC3BysG,EAAO,GAAa58tB,EAAc,CACpCxX,SAAU4zuB,EAAQ,MAAQ,WAO5B,GALAQ,EAAKzl7B,OAAO,CACV9vF,MAAOA,EACPC,OAAQA,IAGN80gC,EAAO,CACT,IAAIS,EAAY,GAahB,OAZA,EAAKJ,GAAc,SAAU/y/B,GAC3B,IAAIn9C,EAAIm9C,EAAKviB,KAAO27e,EAChBx3gB,EAAIo+C,EAAKtiB,IAAMkmgB,EACnBuvgB,GAAa,2BAA6BtwiC,EAAI,IAAMjB,EAAI,MAAQo+C,EAAKkq5B,IAAM,MAC7E,IACAgpG,EAAKlgG,QAAQogG,aAAav65B,UAAYs65B,EAElCl4/B,EAAKo4/B,0BACPH,EAAKlgG,QAAQsoB,mBAAmBrg7B,EAAKo4/B,0BAGvCH,EAAKv3E,qBACEu3E,EAAKlgG,QAAQhnrB,WACtB,CA2BE,OAzBI/wO,EAAKo4/B,0BACPH,EAAKnvhC,IAAI,IAAI,GAAa,CACxBm9M,MAAO,CACLr+N,EAAG,EACHjB,EAAG,EACH+7B,MAAOA,EACPC,OAAQA,GAEV3qB,MAAO,CACL+oH,KAAM/gF,EAAKo4/B,6BAKjB,EAAKN,GAAc,SAAU/y/B,GAC3B,IAAIi1V,EAAM,IAAI,GAAc,CAC1BhiY,MAAO,CACLpQ,EAAGm9C,EAAKviB,KAAOu1gC,EAAQ55hB,EACvBx3gB,EAAGo+C,EAAKtiB,IAAMs1gC,EAAQpvgB,EACtBz6Y,MAAOnpG,EAAKkq5B,OAGhBgpG,EAAKnvhC,IAAIkxX,EACX,IACAi+pB,EAAKv3E,qBACErlpB,EAAatqD,UAAU,UAAY/wO,GAAQA,EAAK9vC,MAAQ,OAEnE,CACE,OAAOvM,KAAKk8vB,WAAW7/sB,EA1FzB,CAFEk0/B,GAAgBvwiC,KAAKurB,GA8FzB,EAEAkmhC,EAAQ/xiC,UAAUg1iC,eAAiB,SAAUtwE,EAAQjj+B,GACnD,OAAOwviC,GAAe3wiC,KAAM,iBAAkBok+B,EAAQjj+B,EACxD,EAEAswiC,EAAQ/xiC,UAAUi1iC,iBAAmB,SAAUvwE,EAAQjj+B,GACrD,OAAOwviC,GAAe3wiC,KAAM,mBAAoBok+B,EAAQjj+B,EAC1D,EAQAswiC,EAAQ/xiC,UAAUk1iC,aAAe,SAAUxwE,EAAQjj+B,GAMjD,IACIqiB,EANJ,IAAIxjB,KAAK0zgC,UA+BT,OAvBA,EADiB,GAFH1zgC,KAAKimuB,OAE6Bm+P,IAC/B,SAAUvz0B,EAAQhsI,GACjCA,EAAIrkB,QAAQ,WAAa,GAAK,EAAKqwJ,GAAQ,SAAU97B,GACnD,IAAImu3B,EAAWnu3B,EAAMhD,iBAErB,GAAImx3B,GAAYA,EAAS2xD,aACvBrxhC,EAASA,KAAY0/9B,EAAS2xD,aAAa1ziC,QACtC,GAAY,iBAAR0jB,EAAwB,CACjC,IAAI0iC,EAAOvnD,KAAK2xiC,WAAW586B,EAAM6+6B,UAE7Brs/B,GAAQA,EAAKst/B,eACfrxhC,EAASA,GAAU+jC,EAAKst/B,aAAa1ziC,EAAO4zH,GAMhD,CAKF,GAAG/0H,KACL,GAAGA,QACMwjB,EA9BP+shC,GAAgBvwiC,KAAKurB,GA+BzB,EAkBAkmhC,EAAQ/xiC,UAAUo8hC,UAAY,SAAU13D,EAAQs6D,GAC9C,IACIoW,EAAe,GADL90iC,KAAKimuB,OAC+Bm+P,EAAQ,CACxDR,gBAAiB,WAUfp09B,EARcsliC,EAAa9xD,YAQRx+2B,UACnBu+1B,EAAkB+xE,EAAan1iC,eAAe,mBAAqBm1iC,EAAa/xE,gBAAkB+xE,EAAan1iC,eAAe,aAAe6P,EAAKwz9B,gBAAgB8xE,EAAazv4B,WAAa,KAChM,OAA0B,MAAnB09zB,EAA0BkhE,GAAsBz0hC,EAAMuz9B,EAAiB27D,GAAcwF,GAAkB10hC,EAAMkvhC,EACtH,EAMA+S,EAAQ/xiC,UAAUwi/B,wBAA0B,SAAUrf,GACpD,OAAO7i+B,KAAK2//B,eAAe98B,EAAe+wE,SAC5C,EAMAnC,EAAQ/xiC,UAAUui/B,qBAAuB,SAAUe,GACjD,OAAOhj/B,KAAK2xiC,WAAW3uD,EAAY4wD,SACrC,EAEAnC,EAAQ/xiC,UAAUkziC,YAAc,WAC9B,IV/pBqCmC,EAAepQ,EAAO11/B,EU+pBvDyd,EAAQ1sD,KAEZ,EAAKg1iC,IAAmB,SAAUC,GAChC,IAAIjl/B,EAAU,SAAU7wD,GACtB,IAGIkpC,EAHAi77B,EAAU526B,EAAMkrI,WAEhB/9C,EAAK16I,EAAE2Q,OA6BX,GA3B8B,cAAZmliC,EAGhB5sgC,EAAS,CAAC,EAEVwxG,GAAMir5B,GAAoBjr5B,GAAI,SAAUxoD,GACtC,IAAI8r5B,EAASH,GAAU3r5B,GAEvB,GAAI8r5B,GAA8B,MAApBA,EAAO930B,UAAmB,CACtC,IAAIy4pB,EAAYq/K,EAAOr/K,WAAawlK,EAAQsf,iBAAiBzF,EAAOD,aAEpE,OADA708B,EAASy1xB,GAAaA,EAAUqyM,cAAchzB,EAAO930B,UAAW830B,EAAOnuuB,SAAUn1H,IAAO,CAAC,GAClF,CACT,CACK,GAAIsj2B,EAAOp8iB,UAEZ,OADA14Z,EAASghX,EAAO,CAAC,EAAG8zlB,EAAOp8iB,YACpB,CAEb,IAAG,GAUD14Z,EAAQ,CACV,IAAI6zK,EAAgB7zK,EAAO6zK,cACvBivE,EAAiB9iP,EAAO8iP,eAMN,aAAlBjvE,GAAkD,cAAlBA,GAAmD,aAAlBA,IACnEA,EAAgB,SAChBivE,EAAiB9iP,EAAO608B,aAG1B,IAAIno3B,EAAQmnF,GAAmC,MAAlBivE,GAA0Bm4sB,EAAQnpoB,aAAaj+I,EAAeivE,GACvF5jO,EAAOwtE,GAASroE,EAAyB,WAAnBqoE,EAAM+u2B,SAAwB,aAAe,kBAAkB/u2B,EAAM6+6B,UAW/FvrgC,EAAO5J,MAAQt/B,EACfkpC,EAAO97B,KAAO0oiC,EACdvo/B,EAAMkg5B,iBAAiBs2F,UAAY,CACjC3/d,SAAU1pb,EACVsp5B,YAAa96/B,EACb0sF,MAAOA,EACPxtE,KAAMA,GAGRmF,EAAMhuB,QAAQu2gC,EAAS5sgC,EACzB,CACF,EAOA2nB,EAAQi94B,sBAAuB,EAE/Bvg5B,EAAMsl/B,IAAIphiC,GAAGqkiC,EAASjl/B,EAAStD,EACjC,IACA,EAAKwo/B,IAAgB,SAAUC,EAAYvngC,GACzC8e,EAAMim/B,eAAe/hiC,GAAGg9B,GAAW,SAAUnP,GAC3Cz+B,KAAK0+B,QAAQkP,EAAWnP,EAC1B,GAAGiuB,EACL,IAGA,EAAK,CAAC,kBAAkB,SAAU9e,GAChC8e,EAAMim/B,eAAe/hiC,GAAGg9B,GAAW,SAAUnP,GAC3Cz+B,KAAK0+B,QAAQkP,EAAWnP,EAC1B,GAAGiuB,EACL,IV5vBqCqo/B,EU6vBZ/0iC,KAAK2yiC,eV7vBsBhO,EU6vBN3kiC,KV7vBaivC,EU6vBPjvC,KAAK8kgC,KV5vB3DiwC,EAAcnkiC,GAAG,iBAAiB,SAAUy3B,GAC1C,IAAIi77B,EAAUr07B,EAAI2oJ,WAEdvvJ,EAAO+sgC,aACT3Q,GAA+B,MAAO,gBAAiBE,EAAOrhE,EAASj77B,GACvEo8/B,GAA+B,MAAO,gBAAiBE,EAAOrhE,EAASj77B,IACxC,WAAtBA,EAAOgtgC,YAChB5Q,GAA+B,MAAO,WAAYE,EAAOrhE,EAASj77B,GAClEo8/B,GAA+B,MAAO,WAAYE,EAAOrhE,EAASj77B,IACnC,aAAtBA,EAAOgtgC,aAChB5Q,GAA+B,MAAO,aAAcE,EAAOrhE,EAASj77B,GACpEo8/B,GAA+B,MAAO,aAAcE,EAAOrhE,EAASj77B,GAExE,GUgvBA,EAEAopgC,EAAQ/xiC,UAAU2wiC,WAAa,WAC7B,OAAOrwiC,KAAK0zgC,SACd,EAEA+9B,EAAQ/xiC,UAAUslB,MAAQ,WACpBhlB,KAAK0zgC,UACP68B,GAAgBvwiC,KAAKurB,IAIvBvrB,KAAKwq2B,UAAU,CACb1tF,OAAQ,KACP,EACL,EAEA20R,EAAQ/xiC,UAAU2l8B,QAAU,WAC1B,GAAIrl8B,KAAK0zgC,UACP68B,GAAgBvwiC,KAAKurB,QADvB,CAKAvrB,KAAK0zgC,WAAY,EACP1zgC,KAAK+yiC,UAGb,GAAuB/yiC,KAAK+yiC,SAAUuC,GAAmB,IAG3D,IAAIllhB,EAAQpwhB,KACRivC,EAAMmhf,EAAM00e,KACZxhC,EAAUlzc,EAAM61M,OACpB,EAAK71M,EAAMwhhB,kBAAkB,SAAUvn5B,GACrCA,EAAUg7yB,QAAQi+B,EAASr07B,EAC7B,IACA,EAAKmhf,EAAMshhB,cAAc,SAAUthhB,GACjCA,EAAMi1a,QAAQi+B,EAASr07B,EACzB,IAEAmhf,EAAM4hhB,IAAI3sG,UAIVj1a,EAAM2hhB,KAAO3hhB,EAAM61M,OAAS71M,EAAMuhhB,WAAavhhB,EAAMuve,eAAiBvve,EAAMshhB,aAAethhB,EAAMwhhB,iBAAmBxhhB,EAAMsihB,WAAatihB,EAAM00e,KAAO10e,EAAM4hhB,IAAM5hhB,EAAM8hhB,kBAAoB9hhB,EAAMque,OAASrue,EAAMgihB,aAAehihB,EAAMuihB,eAAiB,YAC9O,GAAUvihB,EAAM7kgB,GAxBvB,CAyBF,EAMAkmhC,EAAQ/xiC,UAAUmvH,OAAS,SAAUxyE,GACnC,IAAIr8C,KAAK+viC,IAQT,GAAI/viC,KAAK0zgC,UACP68B,GAAgBvwiC,KAAKurB,QADvB,CAKAvrB,KAAKgyiC,IAAInj7B,OAAOxyE,GAEhB,IAAIin7B,EAAUtj+B,KAAKimuB,OAInB,GAFAjmuB,KAAKu1iC,YAAcv1iC,KAAKu1iC,WAAW1m7B,SAE9By02B,EAAL,CAIA,IAAIkyE,EAAclyE,EAAQ07B,YAAY,SAClC5qhB,EAAS/3b,GAAQA,EAAK+3b,OAItBp0e,KAAKgwiC,MACO,MAAV57jB,IACFA,EAASp0e,KAAKgwiC,IAAgB57jB,QAGhCohkB,GAAc,EACdx1iC,KAAKgwiC,IAAkB,MAGzBhwiC,KAAK+viC,KAAuB,EAE5B,IACEyF,GAAelkoB,GAAQtxa,MACvB0wiC,GAAcni+B,OAAO3uE,KAAKI,KAAM,CAC9BuM,KAAM,SACNwjP,UAAWs5J,EAAO,CAEhBhkW,SAAU,GACThJ,GAAQA,EAAK0zM,YAEpB,CAAE,MAAO5wP,GAEP,MADAa,KAAK+viC,KAAuB,EACtB5wiC,CACR,CAEAa,KAAK+viC,KAAuB,EAC5Bc,GAAoBjxiC,KAAKI,KAAMo0e,GAC/B08jB,GAAoBlxiC,KAAKI,KAAMo0e,EAlC/B,CAVA,CA6CF,EAEAq9jB,EAAQ/xiC,UAAUsm8B,YAAc,SAAUt77B,EAAMwt9B,GAC9C,GAAIl49B,KAAK0zgC,UACP68B,GAAgBvwiC,KAAKurB,SAYvB,GARI,GAAS7gB,KACXwt9B,EAAMxt9B,EACNA,EAAO,IAGTA,EAAOA,GAAQ,UACf1K,KAAKmm8B,cAEAsvG,GAAe/qiC,GAApB,CAQA,IAAImvI,EAAK475B,GAAe/qiC,GAAM1K,KAAK8kgC,KAAM5sC,GACrC3/8B,EAAKvY,KAAKgyiC,IACdhyiC,KAAKu1iC,WAAa175B,EAClBthI,EAAG4M,IAAI00H,EALP,CAMF,EAMA435B,EAAQ/xiC,UAAUym8B,YAAc,WAC1Bnm8B,KAAK0zgC,UACP68B,GAAgBvwiC,KAAKurB,KAIvBvrB,KAAKu1iC,YAAcv1iC,KAAKgyiC,IAAIn/gC,OAAO7yB,KAAKu1iC,YACxCv1iC,KAAKu1iC,WAAa,KACpB,EAEA9D,EAAQ/xiC,UAAUg2iC,oBAAsB,SAAUC,GAChD,IAAI7ghC,EAAUu0X,EAAO,CAAC,EAAGsspB,GAEzB,OADA7ghC,EAAQvoB,KAAO2oiC,GAAeS,EAASppiC,MAChCuoB,CACT,EAYA28gC,EAAQ/xiC,UAAU8kiC,eAAiB,SAAU1vgC,EAASsrgB,GACpD,GAAIpgiB,KAAK0zgC,UACP68B,GAAgBvwiC,KAAKurB,SAUvB,GANK,GAAS60gB,KACZA,EAAM,CACJhsD,SAAUgsD,IAIT7uH,GAAQz8Y,EAAQvoB,OAKhBvM,KAAKimuB,OAKV,GAAIjmuB,KAAK+viC,IACP/viC,KAAK6xiC,gBAAgBhwiC,KAAKizB,OAD5B,CAMA,IAAIs/c,EAASgsD,EAAIhsD,OACjBw8jB,GAAiBhxiC,KAAKI,KAAM80B,EAASs/c,GACrC,IAAI7ra,EAAQ63d,EAAI73d,MAEZA,EACFvoE,KAAKgyiC,IAAIzp+B,SACU,IAAVA,GAAmB,EAAI63N,QAAQomqB,QAMxCxm8B,KAAKkyiC,oBAGPrB,GAAoBjxiC,KAAKI,KAAMo0e,GAC/B08jB,GAAoBlxiC,KAAKI,KAAMo0e,EAlB/B,CAmBF,EAEAq9jB,EAAQ/xiC,UAAUk2iC,kBAAoB,WACpC,GAAUl3gC,QAAQ,sBAAuB1+B,KAAKimuB,OAAQjmuB,KAAK8kgC,KAAM,CAG/D3kJ,cAAe,IAEnB,EAEAsxL,EAAQ/xiC,UAAU4ugC,WAAa,SAAUjm+B,GACvC,GAAIroC,KAAK0zgC,UACP68B,GAAgBvwiC,KAAKurB,QADvB,CAKA,IAAI2x9B,EAAc708B,EAAO608B,YACXl9+B,KAAK43L,WACOgrzB,iBAAiB1F,GAM/BoxB,WAAWjm+B,GAQvBroC,KAAK0yiC,WAAWr/B,YAAa,EAC7BrzgC,KAAKmsiC,QAAQzzE,QAnBb,CAoBF,EAIA+4E,EAAQpuC,cAAgB,WAikBtB,SAAS1F,EAAkBr6B,GACzBA,EAAQq6B,oBACRr6B,EAAQyf,YAAW,SAAUC,GAC3BA,EAAY2a,mBACd,GACF,CAoKA,SAASk4C,EAAmBh85B,GAI1B,IAHA,IAAIr1B,EAAY,GACZyi4B,EAAYpt2B,EAAG240B,cAEV5x9B,EAAI,EAAGA,EAAIqm/B,EAAU5m/B,OAAQO,IAAK,CACzC,IAAIo7jB,EAAYirb,EAAUrm/B,GAEN,aAAdo7jB,GAA0C,SAAdA,GAAsC,WAAdA,GACxDx3c,EAAU3iH,KAAKm6jB,EAEnB,CAGInib,EAAGwyC,UAAYxyC,EAAGw1X,OAAO74P,QAC3BhyJ,EAAU3iH,KAAK,UAGbg4I,EAAGgl2B,aAAelB,IAAwB9j2B,EAAGw1X,OAAOuxd,SACtDp82B,EAAU3iH,KAAK,YACNg4I,EAAGgl2B,aAAenB,IAAoB7j2B,EAAGw1X,OAAO41Q,MACzDzgqB,EAAU3iH,KAAK,QAGjBg4I,EAAG280B,UAAUhy2B,EACf,CAiDA,SAASsx7B,EAAQ/g7B,EAAOxtE,GACtB,IAAIwtE,EAAMgh7B,aAAV,CAIA,IAAIpwiC,EAAIovH,EAAM5xH,IAAI,MAAQ,EACtBs28B,EAAS1k1B,EAAM5xH,IAAI,WAAa,EAEpCokD,EAAKsk+B,cAAa,SAAUhy4B,GAG1B,OAFAm85B,EAAUn85B,EAAIl0I,EAAG8z8B,GAAQ,MAElB,CACT,GATA,CAUF,CAIA,SAASu8F,EAAUn85B,EAAIl0I,EAAG8z8B,EAAQw8F,GAEhC,IAAI50iC,EAAQw4I,EAAGltD,iBACXup9B,EAAYr85B,EAAGoh0B,mBAGnB,GAFcph0B,EAAGkpkB,QAMf,IAFA,IAAI/irB,EAAW65G,EAAG6g0B,cAET958B,EAAI,EAAGA,EAAIo/B,EAAS3/B,OAAQO,IACnCq1iC,EAAQpziC,KAAK8K,IAAIqoiC,EAAUh2gC,EAASp/B,GAAI+E,EAAG8z8B,EAAQw8F,GAAQA,QAI7Dp85B,EAAGl0I,EAAIA,EACPk0I,EAAG4/zB,OAASA,EACZw8F,EAAQpziC,KAAK8K,IAAIksI,EAAGkjD,GAAIk52B,GAY1B,GARI50iC,IACFA,EAAMsE,EAAIA,EACVtE,EAAMo48B,OAASA,EAGf/x6B,SAASuugC,KAAW50iC,EAAM07L,GAAKk52B,EAAQ,IAGrCC,EAAW,CACb,IAAIC,EAAsBt85B,EAAGs85B,oBAC7BD,EAAUvwiC,EAAIA,EACduwiC,EAAUz8F,OAASA,EACnB/x6B,SAASuugC,KAAWC,EAAUn52B,GAAKk52B,GAASE,GAAuBA,EAAoBC,UAAY,GAAK,GAC1G,CAEA,OAAOH,CACT,CAIA,SAASxgF,EAAY1g2B,EAAOxtE,GAC1BA,EAAKsk+B,cAAa,SAAUhy4B,GAE1B,IAAI,GAAyBA,GAA7B,CAIA,IAAI7sD,EAAc6sD,EAAGltD,iBACjBqu3B,EAAYnh0B,EAAGoh0B,mBAEfph0B,EAAGk80B,kBACLl80B,EAAGk80B,gBAAkB,MAGnB/o4B,GAAeA,EAAY+o4B,kBAC7B/o4B,EAAY+o4B,gBAAkB,MAG5B/a,GAAaA,EAAU+a,kBACzB/a,EAAU+a,gBAAkB,MAI1Bl80B,EAAG070B,YACL170B,EAAGw85B,WAAax85B,EAAG240B,cACnB340B,EAAG470B,eACM570B,EAAGw85B,aACZx85B,EAAGw85B,WAAa,KAtBlB,CAwBF,GACF,CAEA,SAASC,EAAavh7B,EAAOxtE,GAC3B,IAAIgv/B,EAAsBxh7B,EAAM6iE,SAAS,kBACrC4+2B,EAAkBzh7B,EAAM+w3B,qBACxBzg8B,EAAWkx/B,EAAoBpziC,IAAI,YACnC4y9B,EAAkB1w6B,EAAW,EAAI,CACnCA,SAAUA,EACVlE,MAAOo1/B,EAAoBpziC,IAAI,SAC/B0nH,OAAQ0r7B,EAAoBpziC,IAAI,WAE9B,KACJokD,EAAKsk+B,cAAa,SAAUhy4B,GAC1B,GAAIA,EAAGw1X,QAAUx1X,EAAGw1X,OAAOuxd,SAAU,CAEnC,GAAI,GAAyB/m1B,GAC3B,OASF,GANIA,aAAc,IlFntCrB,SAAwBA,GAC7B,IAAIk1D,EAAQwuyB,GAAe1j2B,GAC3Bk1D,EAAM+wyB,WAAajm2B,EAAGxlI,MAAM+oH,KAC5B2xE,EAAMkxyB,aAAepm2B,EAAGxlI,MAAM+owB,OAC9B,IAAI36D,EAAc5okB,EAAGw1X,OAAO74P,QAAU,CAAC,EACvCznE,EAAM8wyB,WAAap9R,EAAYpusB,OAASousB,EAAYpusB,MAAM+oH,MAAQ,KAClE2xE,EAAMixyB,aAAev9R,EAAYpusB,OAASousB,EAAYpusB,MAAM+owB,QAAU,IACxE,CkF6sCYq5R,CAAe585B,GAKbA,EAAG8g0B,QAAS,CACd,IAAI07F,EAAax85B,EAAGw85B,WAEhBA,GACFx85B,EAAG280B,UAAU6/E,EAEjB,CAGA,GAAIG,EAAiB,CACnB385B,EAAGk80B,gBAAkBA,EACrB,IAAI/o4B,EAAc6sD,EAAGltD,iBACjBqu3B,EAAYnh0B,EAAGoh0B,mBAEfju3B,IACFA,EAAY+o4B,gBAAkBA,GAG5B/a,IACFA,EAAU+a,gBAAkBA,EAEhC,CAGIl80B,EAAG8g0B,SACLk7F,EAAmBh85B,EAEvB,CACF,GACF,CAh8BAy3R,GAAU,SAAUqznB,GAClB,IAAIxZ,EAAYwZ,EAAM+N,WACtBvnB,EAAUoS,iBAAiBoH,EAAM1+T,QACjCklT,EAAUwS,oBACVK,GAAY2G,GAAO,GACnB3G,GAAY2G,GAAO,GACnBxZ,EAAU1Z,MACZ,EAMAusB,GAAc,SAAU2G,EAAO1tyB,GAQ7B,IAPA,IAAIqsuB,EAAUqhE,EAAM1+T,OAChBklT,EAAYwZ,EAAM+N,WAClBgE,EAAWz/yB,EAAc0tyB,EAAMiN,iBAAmBjN,EAAM+M,aACxD9g6B,EAAUqmH,EAAc0tyB,EAAMhlC,eAAiBglC,EAAMgN,WACrDp5hC,EAAKoshC,EAAMqN,IACX/igC,EAAM01/B,EAAM7/B,KAEPlkgC,EAAI,EAAGA,EAAI81iC,EAASr2iC,OAAQO,IACnC81iC,EAAS91iC,GAAG+1iC,SAAU,EAOxB,SAASC,EAAU7h7B,GAOjB,IAAI8h7B,EAAiB9h7B,EAAMos4B,iBAE3Bps4B,EAAMos4B,kBAAmB,EAEzB,IAAI758B,EAAS,OAASytE,EAAMxpG,GAAK,IAAMwpG,EAAMxoH,KACzCg7C,GAAQsv/B,GAAkBjm6B,EAAQtpF,GAEtC,IAAKC,EAAM,CACT,IAAIuv/B,EAAYlxE,GAAe7w2B,EAAMxoH,OAYrCg7C,EAAO,IAXK0vM,EAAc,GAAc6vuB,SAASgwE,EAAUtlsB,KAAMslsB,EAAU5hhC,KAK3E8txB,GAAU8jL,SAASgwE,EAAU5hhC,OAOxBw7B,KAAK4y6B,EAASr07B,GACnB2hG,EAAQtpF,GAAUC,EAClBmv/B,EAAS70iC,KAAK0lD,GACdhvC,EAAG4M,IAAIoiC,EAAK6zQ,MACd,CAEArmM,EAAM6+6B,SAAWrs/B,EAAKwv/B,KAAOzv/B,EAC7BC,EAAKov/B,SAAU,EACfpv/B,EAAKyv/B,QAAUji7B,EACfxtE,EAAK6zQ,MAAM67uB,kBAAoB,CAC7BnzE,SAAU/u2B,EAAM+u2B,SAChB9m9B,MAAO+3G,EAAMo2J,iBAEdl0B,GAAek0xB,EAAU6S,YAAYz2+B,EAAMwtE,EAAOuu2B,EAASr07B,EAC9D,CAEA,IAhDAgoN,EAAcqsuB,EAAQwe,eAAc,SAAU5lyB,EAAennF,GACzC,WAAlBmnF,GAA8B061B,EAAU7h7B,EAC1C,IAAKuu2B,EAAQyf,WAAW6zD,GA8Cfh2iC,EAAI,EAAGA,EAAI81iC,EAASr2iC,QAAS,CACpC,IAAIknD,EAAOmv/B,EAAS91iC,GAEf2mD,EAAKov/B,QAYR/1iC,MAXCq2P,GAAe1vM,EAAKux+B,WAAWzzF,UAChC9s7B,EAAGsa,OAAO00B,EAAK6zQ,OACf7zQ,EAAK894B,QAAQi+B,EAASr07B,GACtByngC,EAASzzhC,OAAOriB,EAAG,GAEfgwI,EAAQrpF,EAAKwv/B,QAAUxv/B,UAClBqpF,EAAQrpF,EAAKwv/B,MAGtBxv/B,EAAKwv/B,KAAOxv/B,EAAK6zQ,MAAM67uB,kBAAoB,KAI/C,CACF,EAEAxG,GAAiB,SAAU9L,EAAOl0gC,EAAQqE,EAASgv8B,EAAUiD,GAC3D,IAAIzD,EAAUqhE,EAAM1+T,OAGpB,GAFAq9P,EAAQk+B,iBAAiB1s+B,GAEpBgv8B,EAAL,CAQA,IAAI704B,EAAQ,CAAC,EACbA,EAAM604B,EAAW,MAAQhv8B,EAAQgv8B,EAAW,MAC5C704B,EAAM604B,EAAW,SAAWhv8B,EAAQgv8B,EAAW,SAC/C704B,EAAM604B,EAAW,QAAUhv8B,EAAQgv8B,EAAW,QAC9C,IAAIni0B,EAAY,CACdmi0B,SAAUA,EACV704B,MAAOA,GAET834B,IAAYpl0B,EAAUol0B,QAAUA,GAEhC,IACImwE,EADAC,EAAkBrihC,EAAQqihC,gBAGP,MAAnBA,IACFD,EAAqBhsG,KACrB,EAAK,GAA2BisG,IAAkB,SAAU5rhC,GAC1D,IAAI6rhC,EAAU,GAA8B7rhC,EAAI,MAEjC,MAAX6rhC,GACFF,EAAmBjriC,IAAImriC,GAAS,EAEpC,KAIF9zE,GAAWA,EAAQwe,cAAcng1B,GAAW,SAAU5sC,GAGpD,IAFiBmi7B,GAA0D,MAApCA,EAAmB/ziC,IAAI4xH,EAAMxpG,IAQpE,GAAI459B,GAAkBrw9B,GACpB,GAAIigG,aAAiB4opB,GACf7ovB,EAAQvoB,OAASyx+B,IAA0Blp9B,EAAQuihC,SAAYti7B,EAAM5xH,IAAI,CAAC,WAAY,clFvwB/F,SAAwC6/+B,EAAalu9B,EAASma,GACnE,IAAIiu8B,EAAc8F,EAAY9F,YAC1B1t+B,EAAOwz+B,EAAYx+2B,QAAQ1vG,EAAQk6O,UAEvC,GAAKx/P,EAAL,CAQA,IAAI61J,EAAYy9zB,GAAetz9B,EAAMslB,GAErCuwI,GAAa1zJ,GAAQ0zJ,GAAaA,EAAU,GAAKA,IAAc,EAC/D,IAAIxrB,EAAKrqI,EAAKkz+B,iBAAiBr90B,GAE/B,IAAKxrB,EAIH,IAHA,IAAItwF,EAAQ/5C,EAAK+5C,QACbxpB,EAAU,GAEN85G,GAAM95G,EAAUwpB,GACtBswF,EAAKrqI,EAAKkz+B,iBAAiB3i9B,KAI/B,GAAI85G,EAAI,CACN,IAAIsj2B,EAASH,GAAUnj2B,GACvBwo2B,GAAWnF,EAAaC,EAAOrsoB,MAAOqsoB,EAAOoF,UAAWtz8B,EAC1D,KAAO,CAGL,IAAIqogC,EAAUt0D,EAAY7/+B,IAAI,CAAC,WAAY,UACvCo/+B,EAAYS,EAAY7/+B,IAAI,CAAC,WAAY,cAE9B,MAAXm0iC,GACFj1D,GAAWnF,EAAao6D,EAAS/0D,EAAWtz8B,EAEhD,CA5BA,CA6BF,CkFiuBcsogC,CAA+Bxi7B,EAAOjgG,EAAS6vgC,EAAM7/B,UAElD,CACL,IAAInu+B,EAAK4s9B,GAAiCxu3B,EAAM+u2B,SAAU/u2B,EAAMo2J,eAAgBr2P,EAAQpqB,KAAMi6hC,EAAM7/B,MAChGthB,EAAY7s9B,EAAG6s9B,UACfC,EAAc9s9B,EAAG8s9B,YAEjB3u9B,EAAQvoB,OAASyx+B,IAAyBwF,IAAc1u9B,EAAQuihC,SAClEj0D,GAAcru3B,EAAM+u2B,SAAU/u2B,EAAMo2J,eAAgBw5wB,EAAM7/B,MAOxDrhB,GACF,EAAKA,GAAa,SAAU+zD,GAC1B1ihC,EAAQvoB,OAASyx+B,GAAwBmD,GAAcq2D,GAAcn2D,GAAcm2D,EACrF,GAEJ,MACSvyD,GAAsBnw9B,IAE3BigG,aAAiB4opB,KlFvpBxB,SAAoCqlO,EAAalu9B,EAASma,GAC/D,GAAKg28B,GAAsBnw9B,GAA3B,CAIA,IAAIk6O,EAAWl6O,EAAQk6O,SAEnB3pG,EAAYy9zB,GADLkgB,EAAYx+2B,QAAQwqI,GACMl6O,GAEhCnjB,GAAQ0zJ,KACXA,EAAY,CAACA,IAGf290B,EAAYlu9B,EAAQvoB,OAAS6x+B,GAA4B,eAAiBtp9B,EAAQvoB,OAAS2x+B,GAAqB,SAAW,YAAY740B,EAAW2pG,EAVlJ,CAWF,CkF0oBYyoyB,CAA2B1i7B,EAAOjgG,EAAS6vgC,EAAM7/B,MACjDnhB,GAA6B5u3B,GAC7Bs86B,GAAmB1M,GAGzB,GAAGA,GACHrhE,GAAWA,EAAQwe,cAAcng1B,GAAW,SAAU5sC,GACnCmi7B,GAA0D,MAApCA,EAAmB/ziC,IAAI4xH,EAAMxpG,KAOpEmshC,EAAS/S,EAAmB,WAAb7gE,EAAwB,aAAe,kBAAkB/u2B,EAAM6+6B,UAChF,GAAGjP,EA9EH,MAFE,EAAK,GAAG3iiC,OAAO2iiC,EAAMiN,kBAAkB5viC,OAAO2iiC,EAAM+M,cAAegG,GAkFrE,SAASA,EAASnw/B,GAChBA,GAAQA,EAAKov/B,SAAWpv/B,EAAK92B,IAAW82B,EAAK92B,GAAQ82B,EAAKyv/B,QAAS1zE,EAASqhE,EAAM7/B,KAAMhw+B,EAC1F,CACF,EAEA47gC,GAAgB,CACdiH,iBAAkB,SAAU7ihC,GAC1Bw8Y,GAAQtxa,MACR0wiC,GAAcni+B,OAAO3uE,KAAKI,KAAM80B,EAAS,CAIvCmq+B,cAAoC,MAArBnq+B,EAAQ8s8B,WAE3B,EACArz5B,OAAQ,SAAUz5C,EAASo4G,GACzB,IAAIo21B,EAAUtj+B,KAAKimuB,OACfh3rB,EAAMjvC,KAAK8kgC,KACXvs/B,EAAKvY,KAAKgyiC,IACV4F,EAAc53iC,KAAKoyiC,aACnBjnB,EAAYnrhC,KAAK0yiC,WAErB,GAAKpvE,EAAL,CAIAA,EAAQk+B,iBAAiB1s+B,GACzBq2/B,EAAU7+B,YAAYhpB,EAASxu8B,GAC/Bq2/B,EAAU4T,mBAAmBz7D,GAM7Bs0E,EAAY13iC,OAAOoj+B,EAASr07B,GAC5Bk8+B,EAAU+S,0BAA0B56D,EAASxu8B,GAI7CuogC,GAAkBr9hC,KAAMsj+B,GAKxBs0E,EAAYrp+B,OAAO+05B,EAASr07B,GAC5B0u9B,EAAkBr6B,GAClB6nD,EAAUiT,mBAAmB96D,EAASxu8B,GACtCw5F,GAAOtuH,KAAMsj+B,EAASr07B,EAAKna,EAASo4G,GAEpC,IAAIwM,EAAkB4p1B,EAAQng+B,IAAI,oBAAsB,cACpD259B,EAAWwG,EAAQng+B,IAAI,YAC3BoV,EAAGmk9B,mBAAmBhj1B,GAEN,MAAZoj1B,GAAiC,SAAbA,GACtBvk9B,EAAGsk9B,YAAYC,GAGjB,GAAUp+7B,QAAQ,cAAe4k8B,EAASr07B,EAjC1C,CAkCF,EACAwr6B,gBAAiB,SAAU3l7B,GACzB,IAAI43B,EAAQ1sD,KAERsj+B,EAAUtj+B,KAAKimuB,OACfh3rB,EAAMjvC,KAAK8kgC,KAEf,GAAKxhC,EAAL,CAIAA,EAAQk+B,iBAAiB1s+B,GAEzB,IAAI+ihC,EAAqB,GACzBv0E,EAAQwe,eAAc,SAAU5lyB,EAAe2mxB,GAC7C,GAAsB,WAAlB3mxB,EAAJ,CAIA,IAAI471B,EAAgBpr/B,EAAMw17B,wBAAwBrf,GAElD,GAAIi1E,GAAiBA,EAAcnB,QACjC,GAAImB,EAAcr9F,gBAAiB,CACjC,IAAIj37B,EAASs0hC,EAAcr9F,gBAAgBooB,EAAgBS,EAASr07B,EAAKna,GACzEtR,GAAUA,EAAO+qD,QAAUsp+B,EAAmBh2iC,KAAKi2iC,EACrD,MACED,EAAmBh2iC,KAAKi2iC,EAT5B,CAYF,IACA,IAAIC,EAAiB7sG,KACrBo4B,EAAQyf,YAAW,SAAUC,GAC3B,IAAIg1D,EAAYtr/B,EAAMil/B,WAAW3uD,EAAY4wD,UAE7C,GAAIoE,EAAUv9F,gBAAiB,CAC7B,IAAIj37B,EAASw0hC,EAAUv9F,gBAAgBuoC,EAAa1f,EAASr07B,EAAKna,GAClEtR,GAAUA,EAAO+qD,QAAUwp+B,EAAe9riC,IAAI+2+B,EAAY5vpB,IAAK,EACjE,MACE2ktB,EAAe9riC,IAAI+2+B,EAAY5vpB,IAAK,EAExC,IACAuqqB,EAAkBr6B,GAGlBtj+B,KAAK0yiC,WAAWtU,mBAAmB96D,EAASxu8B,EAAS,CACnDypgC,UAAU,EACVC,SAAUuZ,IAKZ7G,GAAalxiC,KAAMsj+B,EAASr07B,EAAKna,EAAS,CAAC,EAAGijhC,GAC9C,GAAUr5gC,QAAQ,cAAe4k8B,EAASr07B,EA3C1C,CA4CF,EACAu8+B,WAAY,SAAU12/B,GACpB,IAAIwu8B,EAAUtj+B,KAAKimuB,OAEdq9P,IAILA,EAAQk+B,iBAAiB1s+B,GACzBkuxB,GAAUk2O,iBAAiBpkgC,EAAS,cACpC6o+B,EAAkBr6B,GAElBtj+B,KAAK0yiC,WAAWtU,mBAAmB96D,EAASxu8B,EAAS,CACnDypgC,UAAU,IAGZjw6B,GAAOtuH,KAAMsj+B,EAAStj+B,KAAK8kgC,KAAMhw+B,EAAS,CAAC,GAC3C,GAAU4J,QAAQ,cAAe4k8B,EAAStj+B,KAAK8kgC,MACjD,EACA4mB,aAAc,SAAU52/B,GAEtB,IAAI43B,EAAQ1sD,KAERsj+B,EAAUtj+B,KAAKimuB,OAEdq9P,IAILA,EAAQk+B,iBAAiB1s+B,GAEzBwu8B,EAAQyf,YAAW,SAAUC,GAC3BA,EAAYx+2B,UAAU675B,gBACxB,IAEAr9O,GAAUk2O,iBAAiBpkgC,EAAS,gBACpC6o+B,EAAkBr6B,GAElBtj+B,KAAK0yiC,WAAWtU,mBAAmB96D,EAASxu8B,EAAS,CACnD4pgC,WAAY,SACZH,UAAU,IAGZj7D,EAAQwe,eAAc,SAAU5lyB,EAAe2mxB,GAC7C,GAAsB,WAAlB3mxB,EAA4B,CAC9B,IAAI471B,EAAgBpr/B,EAAMw17B,wBAAwBrf,GAElDi1E,GAAiBA,EAAcnB,SAAWmB,EAAcpsB,aAAa7oD,EAAgBS,EAAS526B,EAAMo48B,KAAMhw+B,EAC5G,CACF,IACAwu8B,EAAQyf,YAAW,SAAUC,GACXt27B,EAAMil/B,WAAW3uD,EAAY4wD,UACnCloB,aAAa1oC,EAAa1f,EAAS526B,EAAMo48B,KAAMhw+B,EAC3D,IACA,GAAU4J,QAAQ,cAAe4k8B,EAAStj+B,KAAK8kgC,MACjD,EACA2mB,aAAc,SAAU32/B,GACtB47gC,GAAcni+B,OAAO3uE,KAAKI,KAAM80B,EAClC,GAGF67gC,GAAiB,SAAUhM,EAAOlw9B,EAAY2v5B,EAAQjj+B,GACpD,GAAIwjiC,EAAMjxB,UACR68B,GAAgB5L,EAAMp5gC,SAWxB,IAPA,IAII/H,EAJA8/8B,EAAUqhE,EAAM1+T,OAEhBgyU,EAAetT,EAAMyN,aAAa5tC,uBAGlCswC,EAAe,GAAsBxxE,EAASc,GAEzCxj+B,EAAI,EAAGA,EAAIq3iC,EAAa53iC,OAAQO,IAAK,CAC5C,IAAIsi/B,EAAW+0D,EAAar3iC,GAE5B,GAAIsi/B,EAASzu6B,IAAgF,OAAhEjxD,EAAS0/9B,EAASzu6B,GAAY6u5B,EAASwxE,EAAc3ziC,IAChF,OAAOqiB,CAEX,CAKF,EAEA65gC,GAAoB,SAAUsH,EAAOrhE,GACnC,IAAI40E,EAAYvT,EAAMgN,WAClBxmB,EAAYwZ,EAAM+N,WACtBpvE,EAAQyf,YAAW,SAAUC,GAC3BmoC,EAAUkS,kBAAkBr6C,EAAak1D,EAAUl1D,EAAY4wD,UACjE,GACF,EAEAhD,GAAmB,SAAU97gC,EAASs/c,GACpC,IAAI1nb,EAAQ1sD,KAERsj+B,EAAUtj+B,KAAK43L,WACfstzB,EAAcpw9B,EAAQvoB,KACtB4riC,EAAgBrjhC,EAAQqjhC,cACxBC,EAAa7moB,GAAQ2zkB,GACrBmzD,EAAaD,EAAWC,WACxBC,GAAcD,EAAW9p+B,QAAU,UAAU3pE,MAAM,KACnDu0hC,EAAemf,EAAW12iC,MAC1B22iC,EAA2B,MAAjBD,EAAW,IAAc1yE,GAAe0yE,EAAW,IACjEt4iC,KAAK+viC,KAAuB,EAC5B,IAAIyI,EAAW,CAAC1jhC,GACZ2jhC,GAAU,EAEV3jhC,EAAQ88C,QACV6m+B,GAAU,EACVD,EAAWnphC,EAAIyF,EAAQ88C,OAAO,SAAUxwB,GAGtC,OAFAA,EAAO,EAASioW,EAAO,CAAC,EAAGjoW,GAAOtsB,IAC7B88C,MAAQ,KACNxwB,CACT,KAGF,IACIu0/B,EADA+C,EAAgB,GAEhBC,EAAiB1zD,GAAsBnw9B,GACvC8jhC,EAAazzD,GAAkBrw9B,GAiCnC,GA/BI8jhC,GACFj3D,GAAa3h/B,KAAK8kgC,MAGpB,EAAK0zC,GAAU,SAAUK,GASvB,IALAlD,GAFAA,EAAWyC,EAAW9s+B,OAAOut+B,EAAWns/B,EAAMu5qB,OAAQv5qB,EAAMo48B,QAErCz7mB,EAAO,CAAC,EAAGwvpB,IAEzBtsiC,KAAO8riC,EAAW55gC,OAASk3gC,EAASppiC,KAC7CmsiC,EAAc72iC,KAAK8ziC,GAEfiD,EAAY,CACd,IAAIjihC,EAAK,GAAyB7B,GAC9B4u8B,EAAiB/s8B,EAAG+s8B,eAGpB2f,EAFoB1s9B,EAAG8s8B,kBAEiBC,EAAepw9B,OAAO,GAAK,SACvEm9hC,GAAe/j/B,EAAOys+B,EAAc0f,EAAWx1D,GAC/CguD,GAAmB3k/B,EACrB,MAAWis/B,GAGTlI,GAAe/j/B,EAAOys+B,EAAc0f,EAAW,UAC/CxH,GAAmB3k/B,IACV6r/B,GACT9H,GAAe/j/B,EAAOys+B,EAAc0f,EAAWN,EAAQ/msB,KAAM+msB,EAAQrjhC,IAEzE,IAEqB,SAAjBikgC,IAA4Byf,IAAeD,IAAmBJ,EAChE,IAEMv4iC,KAAKgwiC,KACP1+nB,GAAQtxa,MACR0wiC,GAAcni+B,OAAO3uE,KAAKI,KAAM80B,GAChC90B,KAAKgwiC,IAAkB,MAEvBU,GAAcvX,GAAcv5hC,KAAKI,KAAM80B,EAE3C,CAAE,MAAO31B,GAEP,MADAa,KAAK+viC,KAAuB,EACtB5wiC,CACR,CAgBF,GAXEw2iC,EADE8C,EACS,CACTlsiC,KAAM8riC,EAAW55gC,OAASym9B,EAC1BizD,cAAeA,EACfvm+B,MAAO8m+B,GAGEA,EAAc,GAG3B14iC,KAAK+viC,KAAuB,GAEvB37jB,EAAQ,CACX,IAAI2gkB,EAAgB/0iC,KAAK2yiC,eAGzB,GAFAoC,EAAcr2gC,QAAQi3gC,EAASppiC,KAAMopiC,GAEjCgD,EAAgB,CAClB,IAAIlxrB,EAAS,CACXl7W,KAAM,gBACN4riC,cAAeA,EACf9r3B,SAAUy3zB,GAAsBxgB,GAChC8xE,YAAatghC,EAAQsghC,cAAe,EACpCC,WAAYvghC,EAAQvoB,KACpBs4hC,kBAAmB/vgC,GAErBighC,EAAcr2gC,QAAQ+oV,EAAOl7W,KAAMk7W,EACrC,CACF,CACF,EAEAoprB,GAAsB,SAAUz8jB,GAG9B,IAFA,IAAI0kkB,EAAiB94iC,KAAK6xiC,gBAEnBiH,EAAez4iC,QAAQ,CAC5B,IAAIy0B,EAAUgkhC,EAAe36/B,QAC7Byy/B,GAAiBhxiC,KAAKI,KAAM80B,EAASs/c,EACvC,CACF,EAEA08jB,GAAsB,SAAU18jB,IAC7BA,GAAUp0e,KAAK0+B,QAAQ,UAC1B,EAeAqygC,GAAoB,SAAUx4hC,EAAIoshC,GAChCpshC,EAAG3H,GAAG,YAAY,SAAUy3B,GAC1Bs8/B,EAAMjmgC,QAAQ,WAAY2J,IAQ1B9vB,EAAGw3O,UAAUruF,cAAiBij4B,EAAMqL,KAAoBrL,EAAM+N,WAAWr/B,YAAesxB,EAAMkN,gBAAgBxxiC,QAC5GskiC,EAAMjmgC,QAAQ,WAElB,GACF,EAEAsygC,GAAiB,SAAUz4hC,EAAIoshC,GAC7BpshC,EAAG3H,GAAG,aAAa,SAAUzR,GAC3B,IACIq4iC,EAAa1S,GADR3liC,EAAE2Q,OAC8Bk1+B,IAErCwyD,IlFtkCL,SAA0CA,EAAYr4iC,EAAG8vC,GAK9D,IAAIku8B,EAASH,GAAUw6D,GAEnB7ghC,EAAK4s9B,GAAiCpG,EAAOkG,kBAAmBlG,EAAOhytB,eAAgBgytB,EAAO47D,sBAAuB9pgC,GACrHw08B,EAAc9s9B,EAAG8s9B,YACjBD,EAAY7s9B,EAAG6s9B,UAIfC,GACED,GACFJ,GAAcjG,EAAOkG,kBAAmBlG,EAAOhytB,eAAgBl8O,GAGjE,EAAKw08B,GAAa,SAAU+zD,GAC1B,OAAOz2D,GAA2By2D,EAAYr4iC,EAChD,MAIAkj/B,GAAWlF,EAAOD,YAAaC,EAAOrsoB,MAAOqsoB,EAAOoF,UAAWtz8B,GAE1C,SAAjBku8B,EAAOrsoB,OACTsyoB,GAAcjG,EAAOkG,kBAAmBlG,EAAOhytB,eAAgBl8O,GAMjE8x8B,GAA2By2D,EAAYr4iC,GAE3C,CkFoiCU65iC,CAAiCxB,EAAYr4iC,EAAGwliC,EAAM7/B,MACtDusC,GAAmB1M,GAEvB,IAAG/zhC,GAAG,YAAY,SAAUzR,GAC1B,IACIq4iC,EAAa1S,GADR3liC,EAAE2Q,OAC8Bk1+B,IAErCwyD,IlF1iCL,SAAyCA,EAAYr4iC,EAAG8vC,GAK7D0y8B,GAAa1y8B,GACb,IAAIku8B,EAASH,GAAUw6D,GACnB/zD,EAAcF,GAAiCpG,EAAOkG,kBAAmBlG,EAAOhytB,eAAgBgytB,EAAO47D,sBAAuB9pgC,GAAKw08B,YAEnIA,EACF,EAAKA,GAAa,SAAU+zD,GAC1B,OAAOt2D,GAA0Bs2D,EAAYr4iC,EAC/C,IAEA+h/B,GAA0Bs2D,EAAYr4iC,EAE1C,CkF2hCU85iC,CAAgCzB,EAAYr4iC,EAAGwliC,EAAM7/B,MACrDusC,GAAmB1M,GAEvB,IAAG/zhC,GAAG,SAAS,SAAUzR,GACvB,IACIq4iC,EAAa1S,GADR3liC,EAAE2Q,QAC8B,SAAUA,GACjD,OAAsC,MAA/Bkt+B,GAAUlt+B,GAAQu1J,SAC3B,IAAG,GAEH,GAAImy4B,EAAY,CACd,IAAIrC,EAAaqC,EAAWnr3B,SAAW,WAAa,SAChD8wzB,EAASH,GAAUw6D,GAEvB7S,EAAM7/B,KAAK0/B,eAAe,CACxBj4hC,KAAM4oiC,EACNnmyB,SAAUmuuB,EAAOnuuB,SACjB+ztB,gBAAiBoa,EAAO930B,UACxB630B,YAAaC,EAAOD,YACpBk4D,aAAa,GAEjB,CACF,GACF,EAuEA9m7B,GAAS,SAAUq26B,EAAOrhE,EAASr07B,EAAKna,EAASo4G,IA5DjD,SAAyBo21B,GAEvB,IAAI41E,EAAmB,GACnBC,EAAgB,GAChBC,GAAoB,EAexB,GAdA91E,EAAQwe,eAAc,SAAU5lyB,EAAe2mxB,GAC7C,IAAIppB,EAASopB,EAAe1/9B,IAAI,WAAa,EACzCwC,EAAIk99B,EAAe1/9B,IAAI,MAAQ,EAC/Bk2iC,EAAYx2E,EAAemzB,eAC/BojD,EAAoBA,KAAuBC,GACxB,WAAlBn91B,EAA6Bi91B,EAAgBD,GAAkBr3iC,KAAK,CACnE438B,OAAQA,EACR9z8B,EAAGA,EACHm1W,IAAK+nnB,EAAe13sB,eACpB5+Q,KAAM2vM,EACNr3L,IAAKw0hC,GAET,IAEID,EAAmB,CAErB,IACIE,EACAC,EAFAC,EAAUN,EAAiBl3iC,OAAOm3iC,GAGtC,GAAQK,GAAS,SAAUx4iC,EAAGsC,GAC5B,OAAItC,EAAEy48B,SAAWn28B,EAAEm28B,OACVz48B,EAAE2E,EAAIrC,EAAEqC,EAGV3E,EAAEy48B,OAASn28B,EAAEm28B,MACtB,IACA,EAAK+/F,GAAS,SAAUp4/B,GACtB,IAAIyh7B,EAAiBS,EAAQnpoB,aAAa/4S,EAAK70C,KAAM60C,EAAK05T,KACtD2+lB,EAASr45B,EAAKq45B,OACd507B,EAAMu8B,EAAKv8B,IAEW,MAAtBy0hC,IACF7/F,EAAS528B,KAAK8K,IAAI2riC,EAAoB7/F,IAGpC507B,GACE407B,IAAW6/F,GAAsBz0hC,IAAQ00hC,GAC3C9/F,IAGF8/F,EAAkB10hC,GACT00hC,IACL9/F,IAAW6/F,GACb7/F,IAGF8/F,EAAkB,IAGpBD,EAAqB7/F,EACrBopB,EAAeozB,UAAUx8C,EAC3B,GACF,CACF,CAGEggG,CAAgBn2E,GAChB2tE,GAAiBtM,EAAOrhE,EAASr07B,EAAKna,EAASo4G,GAC/C,EAAKy35B,EAAM+M,cAAc,SAAUthhB,GACjCA,EAAMumhB,SAAU,CAClB,IACAzF,GAAavM,EAAOrhE,EAASr07B,EAAKna,EAASo4G,GAE3C,EAAKy35B,EAAM+M,cAAc,SAAUthhB,GAC5BA,EAAMumhB,SACTvmhB,EAAMv9f,OAAOyw8B,EAASr07B,EAE1B,GACF,EAEAgigC,GAAmB,SAAUtM,EAAOrhE,EAASr07B,EAAKna,EAASo4G,EAAcws6B,GACvE,EAAKA,GAAa/U,EAAMiN,kBAAkB,SAAUkG,GAClD,IAAIj1E,EAAiBi1E,EAAcd,QACnCvhF,EAAYoN,EAAgBi1E,GAC5BA,EAAcxp7B,OAAOu02B,EAAgBS,EAASr07B,EAAKna,GACnDghhC,EAAQjzE,EAAgBi1E,GACxBxB,EAAazzE,EAAgBi1E,EAC/B,GACF,EAMA5G,GAAe,SAAUvM,EAAOrhE,EAASr07B,EAAKna,EAASo4G,EAAcsx5B,GAEnE,IAAIrT,EAAYwZ,EAAM+N,WACtBxl6B,EAAem8Q,EAAOn8Q,GAAgB,CAAC,EAAG,CACxCizuB,cAAemjH,EAAQhgJ,cAGzB,GAAU5kzB,QAAQ,sBAAuB4k8B,EAASr07B,EAAKi+F,GACvD,IAAImm4B,GAAa,EACjB/vC,EAAQyf,YAAW,SAAUC,GAC3B,IAAIg1D,EAAYrT,EAAMgN,WAAW3uD,EAAY4wD,UAC7CoE,EAAUrB,SAAU,EACpB,IAAI7d,EAAakf,EAAUlf,WAC3B3N,EAAUxlC,cAAcmzC,EAAYhkgC,GAEpC2g8B,EAAYutB,EAAag1D,GAErBxZ,GAAYA,EAASr7hC,IAAI6/+B,EAAY5vpB,MACvC0lsB,EAAWhzR,QAGTgzR,EAAWlnB,QAAQuZ,EAAU4R,eAAejE,MAC9CzlB,GAAa,GAGf2kC,EAAU58uB,MAAMg5K,SAAW4ugB,EAAY7/+B,IAAI,UA0G/C,SAAqB6/+B,EAAag1D,GAChC,IAAIx/C,EAAYxV,EAAY7/+B,IAAI,cAAgB,KAChD60iC,EAAUnsB,cAAa,SAAUhy4B,GAE1BA,EAAGkpkB,UAENlpkB,EAAGxlI,MAAMo6G,MAAQ+p4B,EAErB,GACF,CA/GImhD,CAAY32D,EAAag1D,GACzBr0D,GAA6BX,EAC/B,IACAmoC,EAAU9X,WAAaA,GAAc8X,EAAU9X,WAC/C,GAAU30+B,QAAQ,sBAAuB4k8B,EAASr07B,EAAKi+F,GAEvD,GAAUxuG,QAAQ,oBAAqB4k8B,EAASr07B,EAAKi+F,GACrDo21B,EAAQyf,YAAW,SAAUC,GAC3B,IAAIg1D,EAAYrT,EAAMgN,WAAW3uD,EAAY4wD,UAE7CkC,EAAQ9yD,EAAag1D,GAGrB1B,EAAatzD,EAAag1D,EAC5B,IAsDF,SAAgCrT,EAAOrhE,GACrC,IACIrv8B,EADK0wgC,EAAMqN,IACE/9gC,QACb2lhC,EAAU,EACd3lhC,EAAQ4xK,UAAS,SAAUhsD,GACpBA,EAAGkpkB,SACN62V,GAEJ,IAEIA,EAAUt2E,EAAQng+B,IAAI,yBAA2B,EAAIkmF,OAAS,EAAI9vD,QACpE+p8B,EAAQyf,YAAW,SAAUC,GAC3B,IAAIA,EAAY62D,uBAAhB,CAIA,IAAI7B,EAAYrT,EAAMgN,WAAW3uD,EAAY4wD,UAEzCoE,EAAUrB,SACZqB,EAAUnsB,cAAa,SAAUhy4B,GAC3BA,EAAGw1X,OAAOuxd,WACZ/m1B,EAAGw1X,OAAOuxd,SAAS1K,YAAa,EAEpC,GATF,CAWF,GAEJ,CA/EE4jF,CAAuBnV,EAAOrhE,GAC9B,GAAU5k8B,QAAQ,qBAAsB4k8B,EAASr07B,EAAKi+F,EACxD,EAEAmk6B,GAAqB,SAAU1M,GAC7BA,EAAMsL,KAA2B,EAEjCtL,EAAMwH,QAAQzzE,QAChB,EAEA44E,GAAqB,SAAU3M,GACxBA,EAAMsL,MAIXtL,EAAMwH,QAAQl4gC,QAAQ4xK,UAAS,SAAUhsD,GAEnC,GAAyBA,IAI7Bg85B,EAAmBh85B,EACrB,IACA8q5B,EAAMsL,KAA2B,EACnC,EA6NAkB,GAAqB,SAAUxM,GAC7B,OAAO,IAEP,SAAUj8qB,GAGR,SAAS6pD,IACP,OAAkB,OAAX7pD,GAAmBA,EAAOnoX,MAAMP,KAAMI,YAAcJ,IAC7D,CA4DA,OAhEA4sa,EAAU2F,EAAS7pD,GAMnB6pD,EAAQ7ya,UAAU8kgC,qBAAuB,WACvC,OAAOmgC,EAAMyN,aAAa5tC,sBAC5B,EAEAjylB,EAAQ7ya,UAAUq6iC,sBAAwB,SAAUlg6B,GAClD,KAAOA,GAAI,CACT,IAAImg6B,EAAYng6B,EAAGo95B,kBAEnB,GAAiB,MAAb+C,EACF,OAAOrV,EAAM1+T,OAAO9rY,aAAa6/sB,EAAUl2E,SAAUk2E,EAAUh9hC,OAGjE68H,EAAKA,EAAGxoD,MACV,CACF,EAEAkhV,EAAQ7ya,UAAUyh/B,cAAgB,SAAUtn2B,EAAIun2B,GAC9CD,GAActn2B,EAAIun2B,GAClBiwD,GAAmB1M,EACrB,EAEApynB,EAAQ7ya,UAAU2h/B,cAAgB,SAAUxn2B,EAAIun2B,GAC9CC,GAAcxn2B,EAAIun2B,GAClBiwD,GAAmB1M,EACrB,EAEApynB,EAAQ7ya,UAAU4h/B,UAAY,SAAUzn2B,GACtCyn2B,GAAUzn2B,GACVw35B,GAAmB1M,EACrB,EAEApynB,EAAQ7ya,UAAU6h/B,UAAY,SAAU1n2B,GACtC0n2B,GAAU1n2B,GACVw35B,GAAmB1M,EACrB,EAEApynB,EAAQ7ya,UAAU8h/B,YAAc,SAAU3n2B,GACxC2n2B,GAAY3n2B,GACZw35B,GAAmB1M,EACrB,EAEApynB,EAAQ7ya,UAAU+h/B,YAAc,SAAU5n2B,GACxC4n2B,GAAY5n2B,GACZw35B,GAAmB1M,EACrB,EAEApynB,EAAQ7ya,UAAUk4L,SAAW,WAC3B,OAAO+s2B,EAAM/s2B,UACf,EAEA26O,EAAQ7ya,UAAUwi/B,wBAA0B,SAAUrf,GACpD,OAAO8hE,EAAMziD,wBAAwBrf,EACvC,EAEAtwjB,EAAQ7ya,UAAUui/B,qBAAuB,SAAUe,GACjD,OAAO2hD,EAAM1iD,qBAAqBe,EACpC,EAEOzwkB,CACT,CApEW,CAoET,IApEK,CAoEUoynB,EACnB,EAEAyM,GAAgB,SAAUhhhB,GACxB,SAAS6phB,EAA4BC,EAAQz0hC,GAC3C,IAAK,IAAI7kB,EAAI,EAAGA,EAAIs5iC,EAAO75iC,OAAQO,IAChBs5iC,EAAOt5iC,GACbuviC,IAAsB1qhC,CAErC,CAEA,EAAKyvhC,IAAgB,SAAUC,EAAYvngC,GACzCwif,EAAMuihB,eAAe/hiC,GAAGg9B,GAAW,SAAUnP,GAC3C,GAAIu1gC,GAAgB5jhB,EAAMh1N,QAl/DP,IAk/DiBg1N,EAAM+/gB,IAAgD,CACxF,GAAI1xgC,GAASA,EAAM05gC,cACjB,OAGF,IAAIgC,EAAW/phB,EAAMslhB,oBAAoBj3gC,GACrC27gC,EAAgB,GACpB,EAAK,IAAW,SAAUC,GACpBA,IAAejqhB,GAASiqhB,EAAWj/uB,QAAUg1N,EAAMh1N,OACrDg/uB,EAAcv4iC,KAAKw4iC,EAEvB,IACAJ,EAA4BG,EA9/DX,GA+/DjB,EAAKA,GAAe,SAAUC,GA9/DZ,IA+/DZA,EAAWlK,KACbkK,EAAW7V,eAAe2V,EAE9B,IACAF,EAA4BG,EAlgEX,EAmgEnB,CACF,GACF,GACF,CACF,CA9iCwB,GAgjCjB3I,CACT,CA57DA,CA47DE,IAEE6I,GAAe7I,GAAQ/xiC,UAC3B46iC,GAAa1piC,GAAKw/hC,GAAwC,MAC1DkK,GAAatsgC,IAAMoigC,GAAwC,OAM3DkK,GAAa78G,IAAM,SAAUpu5B,EAAWqyB,EAAI41K,GAC1C,IAAIl1O,EAAOpC,KAiBXA,KAAK4Q,GAAGhR,KAAKI,KAAMqvC,GAdnB,SAASkrgC,IAGP,IAFA,IAAIC,EAAQ,GAEH/7hC,EAAK,EAAGA,EAAKre,UAAUC,OAAQoe,IACtC+7hC,EAAM/7hC,GAAMre,UAAUqe,GAGxBijD,GAAMA,EAAGnhE,OAASmhE,EAAGnhE,MAAMP,KAAMw6iC,GAEjCp4iC,EAAK4rC,IAAIqB,EAAWkrgC,EACtB,GAIuCjj0B,EACzC,EAEA,IAAI09zB,GAAoB,CAAC,QAAS,WAAY,YAAa,WAAY,YAAa,YAAa,UAAW,YAAa,eAEzH,SAASzE,GAAgBhlhC,GAIzB,CAEA,IAAIgmZ,GAAU,CAAC,EAKX2joB,GAAiB,CAAC,EAClBzC,GAAqB,GACrB7zC,GAA0B,GAC1B4zC,GAAc,GACdV,GAAe,CAAC,EAChB2D,GAAiB,CAAC,EAClB,GAAY,CAAC,EACbzB,GAAkB,CAAC,EACnByG,IAAU,IAAIjvhC,KAAS,EACvBkvhC,IAAe,IAAIlvhC,KAAS,EAC5B8phC,GAAoB,qBAYjB,SAAS,GAAKhqG,EAAKvqsB,EAAO1kN,GAC/B,IAAIs+/B,IAAat+/B,GAAQA,EAAK4/6B,KAE9B,GAAI0+E,EAAU,CAOZ,IAAIC,EAAgBn1G,GAAiB6F,GAErC,GAAIsvG,EAKF,OAAOA,CAQX,CAEA,IAAIxqhB,EAAQ,IAAIqhhB,GAAQnmG,EAAKvqsB,EAAO1kN,GAMpC,OALA+ze,EAAM7kgB,GAAK,MAAQkvhC,KACnB,GAAUrqhB,EAAM7kgB,IAAM6kgB,EACtBuqhB,GAAY,GAAuBrvG,EAAKgqG,GAAmBllhB,EAAM7kgB,IACjE6lhC,GAAchhhB,GACd,GAAU1xf,QAAQ,YAAa0xf,GACxBA,CACT,CAmBO,SAAS5tc,GAAQo0Z,GAEtB,GAAIjle,GAAQile,GAAU,CACpB,IAAIsjkB,EAAStjkB,EACbA,EAAU,KAEV,EAAKsjkB,GAAQ,SAAU9phB,GACF,MAAfA,EAAMh1N,QACRw7K,EAAUw5C,EAAMh1N,MAEpB,IACAw7K,EAAUA,GAAW,KAAO8jkB,KAC5B,EAAKR,GAAQ,SAAU9phB,GACrBA,EAAMh1N,MAAQw7K,CAChB,GACF,CAGA,OADAo9jB,GAAgBp9jB,IAAW,EACpBA,CACT,CACO,SAAS7la,GAAW6la,GACzBo9jB,GAAgBp9jB,IAAW,CAC7B,CAMO,IAAIikkB,GAAa9p+B,GAKjB,SAAS,GAAQq/c,GAClBp1d,GAASo1d,GACXA,EAAQ,GAAUA,GACPA,aAAiBqhhB,KAE5BrhhB,EAAQq1a,GAAiBr1a,IAGvBA,aAAiBqhhB,KAAYrhhB,EAAMighB,cACrCjghB,EAAMi1a,SAEV,CACO,SAASI,GAAiB6F,GAC/B,OAAO,G1GxoDF,SAAsBA,EAAKzm7B,GAChC,OAAOym7B,EAAIz/2B,aAAey/2B,EAAIz/2B,aAAahnE,GAAOym7B,EAAIzm7B,EACxD,C0GsoDmB,CAAuBym7B,EAAKgqG,IAC/C,CACO,SAASwF,GAAgBj2hC,GAC9B,OAAO,GAAUA,EACnB,CAKO,SAASk2hC,GAAcrwiC,EAAMq2P,GAClC+wyB,GAAapniC,GAAQq2P,CACvB,CAKO,SAASi6yB,GAAqBC,GAC/Bz6iC,EAAQo+/B,GAAyBq8C,GAAoB,GACvDr8C,GAAwB/8/B,KAAKo5iC,EAEjC,CACO,SAASC,GAAkBrtgC,EAAUstgC,GAC1CC,GAAkB3I,GAAoB5kgC,EAAUstgC,EAAWxM,GAC7D,CAMO,SAAS0M,GAAiBC,GAC/BC,GAAwB,YAAaD,EACvC,CAMO,SAASE,GAAmBC,GACjCF,GAAwB,cAAeE,EACzC,CACO,SAASF,GAAwB7wiC,EAAMg3D,GAC5C,GAAU9wD,GAAGlG,EAAMg3D,EACrB,CACO,SAASg6+B,GAAerD,EAAYhpgC,EAAWi8B,GAChD05L,GAAW31N,KACbi8B,EAASj8B,EACTA,EAAY,IAGd,IAAI8lgC,EAAa,GAASkD,GAAcA,EAAW9riC,KAAO,CAAC8riC,EAAYA,EAAa,CAClF55gC,MAAO4Q,IACN,GAEHgpgC,EAAW55gC,OAAS45gC,EAAW55gC,OAAS02gC,GAAY5liC,cACpD8/B,EAAYgpgC,EAAW55gC,MAEnBy2gC,GAAe7lgC,KAMnBwzF,GAAOqt6B,GAAW7kiC,KAAK8piC,IAAejF,GAAW7kiC,KAAKgkC,IAEjDkiY,GAAQ4joB,KACX5joB,GAAQ4joB,GAAc,CACpB7p+B,OAAQA,EACR+s+B,WAAYA,IAIhBnD,GAAe7lgC,GAAa8lgC,EAC9B,CACO,SAASwG,GAAyBpviC,EAAMqviC,GAC7CvJ,GAAwBvn8B,SAASv+F,EAAMqviC,EACzC,CAOO,SAASC,GAA8BtviC,GAC5C,IAAIqviC,EAAkBvJ,GAAwBlviC,IAAIoJ,GAElD,GAAIqviC,EACF,OAAOA,EAAgBE,kBAAoBF,EAAgBE,oBAAsBF,EAAgBlj5B,WAAW32J,OAEhH,CAGA,SAASg6iC,GAAelugC,EAAUmugC,GAChCZ,GAAkB5I,GAAa3kgC,EAAUmugC,EAAYpN,GAAwB,SAC/E,CAEA,SAASqN,GAAepugC,EAAUqugC,GAChCd,GAAkB5I,GAAa3kgC,EAAUqugC,EAAYpN,GAAuB,SAC9E,CAGA,IAAIqN,GAAkB,GAEtB,SAASf,GAAkBgB,EAAYvugC,EAAU38B,EAAImriC,EAAiB3d,GAkBpE,IAjBI15xB,GAAWn3N,IAAa,GAASA,MACnC38B,EAAK28B,EACLA,EAAWwugC,KAeT77iC,EAAQ27iC,GAAiBjriC,IAAO,GAApC,CAIAiriC,GAAgBt6iC,KAAKqP,GACrB,IAAIuthC,EAAe,GAAUyB,iBAAiBhvhC,EAAIwthC,GAClDD,EAAa8T,OAAS1kgC,EACtB4w/B,EAAa9pgC,MAAQzjB,EACrBkriC,EAAWv6iC,KAAK48hC,EANhB,CAOF,CAEO,SAAS6d,GAAgB5xiC,EAAM6xiC,GACpC9G,GAAe/qiC,GAAQ6xiC,CACzB,CAkBO,SAASC,GAAiBj4C,GAK/Bx8D,EAAe,CACbF,aAAc08D,GAElB,CAMO,SAASk4C,GAAYpnxB,EAASqnxB,EAASC,GAC5C,IAAIF,EAAchO,GAAQ,eAC1BgO,GAAeA,EAAYpnxB,EAASqnxB,EAASC,EAC/C,CACO,SAASxm4B,GAAOk/G,GACrB,IAAIl/G,EAASs43B,GAAQ,UACrB,OAAOt43B,GAAUA,EAAOk/G,EAC1B,CACO,IAAIunxB,GjD/rEJ,SAAmCzlC,GAExC,IAAI5qgC,GADJ4qgC,EAAoB5m/B,EAAM4m/B,IACG5qgC,KAGxBA,GAKH4ngC,GAPW,IAUb,IAAI0oC,EAAatwiC,EAAK3H,MAAM,KAEF,IAAtBi4iC,EAAWx8iC,QAKb8zgC,GAjBW,IAsBb,IAAI2oC,GAAY,EAEM,YAAlBD,EAAW,KACbtwiC,EAAOswiC,EAAW,GAClBC,GAAY,GAGd3lC,EAAkBQ,YAAcmlC,EAChClmC,GAAqB3qgC,IAAIM,EAAM4qgC,EACjC,EiD6qEA8kC,GAAepN,GAAwB/T,IACvCmhB,GAAelN,GAAmClT,IAClDogB,GAAelN,GAAmC/S,IAClDigB,GAAepN,GAAwBrL,IACvCyY,GAAelN,GAAmC/K,IAClDiY,GAj5E4B,KClEb,SAAqB34E,EAASr07B,GAC3Cq07B,EAAQo/B,eAAc,SAAU1f,GAC9B,IAAI1f,EAAQu/B,iBAAiB7f,GAA7B,CAIA,IAAIxz+B,EAAOwz+B,EAAYx+2B,UAEnBh1H,EAAKutiC,iBACPvtiC,EAAKwywB,MAAK,SAAUlna,GAClB,IAAI04nB,EAAQhk+B,EAAK+ggC,cAAcz1pB,EAAK,SAEhC04nB,IACchk+B,EAAKushC,uBAAuBjhrB,EAAK,SACvC04nB,MAAQy4D,GAA+Bz4D,EAAOvk8B,GAE5D,IAGF,IAAIuk8B,EAAQhk+B,EAAKsshC,UAAU,SAEvBtoD,IACUhk+B,EAAKsshC,UAAU,SACrBtoD,MAAQy4D,GAA+Bz4D,EAAOvk8B,GAnBtD,CAqBF,GACF,ID07EA+rgC,GAAqB,IACrBE,GAv6EmC,KxDxCpB,SAAmB53E,GAChC,IAAI05E,EAAe9xG,KACnBo4B,EAAQyf,YAAW,SAAUC,GAC3B,IAAIrw8B,EAAQqw8B,EAAY7/+B,IAAI,SAE5B,GAAIwvC,EAAO,CACT,IAAI849B,EAAgBuxC,EAAa75iC,IAAIwvC,IAAUqqgC,EAAa/wiC,IAAI0mC,EAAO,IACnEnjC,EAAOwz+B,EAAYx+2B,UACnBio4B,EAAY,CAGdV,qBAAsBv8/B,EAAKytiC,mBAAmB,wBAC9CjxC,qBAAsBx8/B,EAAKytiC,mBAAmB,wBAC9C5wC,iBAAkB78/B,EAAKytiC,mBAAmB,oBAC1C1wC,mBAAoB/8/B,EAAKytiC,mBAAmB,sBAC5ChxC,iBAAkBz8/B,EAAKytiC,mBAAmB,oBAC1CztiC,KAAMA,EACNwz+B,YAAaA,GAGf,IAAKypB,EAAUJ,mBAAsBI,EAAUR,mBAAoBQ,EAAUF,mBAC3E,OAGFd,EAAcprgC,QAAUmP,EAAK0tiC,mBAAmB,kBAAmBzxC,EAAcA,EAAcprgC,OAAS,GAAG2i/B,aAC3GyoB,EAAc5pgC,KAAK4qgC,EACrB,CACF,IACAuwC,EAAah7R,KAAKwpP,GACpB,IwDm7EA8wC,GAAgB,WjB38ED,SAAwBrtgC,EAAKoN,GAE1C,EADAA,EAAOA,GAAQ,CAAC,EACM,CACpBjsB,KAAM,UACNw5X,UAAW,OACXnlK,SAAU,GACVG,WAAY,SACZC,UAAW,SACXF,WAAY,aACZw4zB,UAAW,2BACXC,aAAa,EACb7v7B,MAAO,UACP8v7B,cAAe,GACfhruB,UAAW,EACXonoB,OAAQ,IAEV,IAAIr+oB,EAAQ,IAAI,GACZ37I,EAAO,IAAI,GAAa,CAC1BprK,MAAO,CACL+oH,KAAM/gF,EAAK8ggC,WAEb1jG,OAAQp95B,EAAKo95B,OACb9z8B,EAAG,MAELy1T,EAAMj2S,IAAIs6J,GACV,IAyBIyqmB,EAzBAl9rB,EAAc,IAAI,GAAa,CACjC34E,MAAO,CACL+b,KAAMisB,EAAKjsB,KACXgtG,KAAM/gF,EAAKutW,UACXnlK,SAAUpoM,EAAKooM,SACfG,WAAYvoM,EAAKuoM,WACjBC,UAAWxoM,EAAKwoM,UAChBF,WAAYtoM,EAAKsoM,YAEnB80tB,OAAQp95B,EAAKo95B,OACb9z8B,EAAG,QAED23iC,EAAY,IAAI,GAAa,CAC/BjpiC,MAAO,CACL+oH,KAAM,QAERpwC,YAAaA,EACb6l4B,WAAY,CACVl07B,SAAU,QACVsqH,SAAU,IAEZwwzB,OAAQp95B,EAAKo95B,OACb9z8B,EAAG,QA0DL,OAxDAy1T,EAAMj2S,IAAIm4hC,GAGNjhgC,EAAK+ggC,eACPlzR,EAAM,IAAI,GAAY,CACpB5njB,MAAO,CACLumjB,YAAa,GAAK,EAClBC,UAAW,GAAK,EAAI,GACpB/oxB,EAAGs8C,EAAKghgC,eAEVhpiC,MAAO,CACL+owB,OAAQ/guB,EAAKkxE,MACbk2pB,QAAS,QACTpxc,UAAWh2R,EAAKg2R,WAElBonoB,OAAQp95B,EAAKo95B,OACb9z8B,EAAG,SAEDqv+B,cAAa,GAAMrrB,KAAK,IAAM,CAChC7gM,SAAe,EAAL,GAAS,IAClBtivB,MAAM,iBACT0jvB,EAAI8qN,cAAa,GAAMrrB,KAAK,IAAM,CAChC9gM,WAAiB,EAAL,GAAS,IACpB1nuB,MAAM,KAAK3a,MAAM,iBACpB40R,EAAMj2S,IAAI+kwB,IAIZ9ud,EAAMvsM,OAAS,WACb,IAAIm4H,EAAYh6J,EAAYm3J,kBAAkBplN,MAC1Ch/B,EAAIs8C,EAAK+ggC,YAAc/ggC,EAAKghgC,cAAgB,EAG5C38yB,GAAMzxN,EAAIk8L,WAAiB,EAAJprO,GAASs8C,EAAK+ggC,aAAep2zB,EAAY,GAAK,GAAKA,GAAa,GAAK3qM,EAAK+ggC,aAAep2zB,EAAY,EAAI,EAAIA,EAAY,IACjJ3qM,EAAK+ggC,YAAc,EAAIp2zB,EAAY,IACnCA,EAAY,EAAIjnP,GACfknW,EAAKh4T,EAAI+rI,YAAc,EAC3B3+H,EAAK+ggC,aAAelzR,EAAItjY,SAAS,CAC/BlmJ,GAAIA,EACJumG,GAAIA,IAENq2sB,EAAU12pB,SAAS,CACjB3iZ,EAAGy8P,EAAK3gQ,EACRiD,EAAGikW,EAAKlnW,EACRg/B,MAAW,EAAJh/B,EACPi/B,OAAY,EAAJj/B,IAEV0/K,EAAKmnO,SAAS,CACZ3iZ,EAAG,EACHjB,EAAG,EACH+7B,MAAOkQ,EAAIk8L,WACXnsM,OAAQiQ,EAAI+rI,aAEhB,EAEAogJ,EAAMvsM,SACCusM,CACT,IiBm2EAsgvB,GAAe,CACbnviC,KAAMyx+B,GACNv/8B,MAAOu/8B,GACPzv6B,OAAQyv6B,IACPl77B,IACH44/B,GAAe,CACbnviC,KAAM0x+B,GACNx/8B,MAAOw/8B,GACP1v6B,OAAQ0v6B,IACPn77B,IACH44/B,GAAe,CACbnviC,KAAM2x+B,GACNz/8B,MAAOy/8B,GACP3v6B,OAAQ2v6B,IACPp77B,IACH44/B,GAAe,CACbnviC,KAAM4x+B,GACN1/8B,MAAO0/8B,GACP5v6B,OAAQ4v6B,IACPr77B,IACH44/B,GAAe,CACbnviC,KAAM6x+B,GACN3/8B,MAAO2/8B,GACP7v6B,OAAQ6v6B,IACPt77B,IAEHi4/B,GAAc,QAASlr7B,IACvBkr7B,GAAc,OAAQ9psB,IAGf,IAAIsssB,GAAW,CAAC,EE/+EnBlx6B,GAAa,GACbmx6B,GAAqB,CACvBxC,qBAAsBA,GACtBE,kBAAmBA,GACnBG,iBAAkBA,GAClBG,mBAAoBA,GACpBD,wBAAyBA,GACzBG,eAAgBA,GAChBC,yBAA0BA,GAC1BI,eAAgBA,GAChBE,eAAgBA,GAChBW,kBAAmBA,GACnBN,gBAAiBA,GACjBG,YAAaA,GACbgB,aHhBK,SAAsB/yiC,EAAMgziC,GAOjClP,GAAW9jiC,GAAQgziC,CACrB,EGSE1O,SAAUA,GACV55C,eAAgB1o2B,GAChB6+3B,cAAe,GACf1D,YAAalqQ,GACbk7Q,UAAW71O,GAEX26P,uBAAwB,SAAU18C,GAChCv02B,GAAeg60B,cAAcu6B,EAC/B,EACA28C,sBAAuB,SAAUC,GAC/B,GAAcn3E,cAAcm3E,EAC9B,EACAC,oBAAqB,SAAUC,GAC7BpgS,GAAY+oN,cAAcq3E,EAC5B,EACAC,kBAAmB,SAAUC,GAC3Bj7P,GAAU0jL,cAAcu3E,EAC1B,EACA7nD,yBAA0B,SAAUl6yB,EAAem6yB,GACjD3p2B,GAAe0p2B,yBAAyBl6yB,EAAem6yB,EACzD,EACA94B,gBAAiB,SAAU2gF,EAAaC,GACtC5gF,GAAgB2gF,EAAaC,EAC/B,GAEK,SAASx/H,GAAIr2pB,GACd32Q,GAAQ22Q,GAEV,EAAKA,GAAK,SAAU81xB,GAClBz/H,GAAIy/H,EACN,IAIE59iC,EAAQ6rI,GAAYi8I,IAAQ,IAIhCj8I,GAAWxqI,KAAKymR,GAEZtjB,GAAWsjB,KACbA,EAAM,CACJ+1xB,QAAS/1xB,IAIbA,EAAI+1xB,QAAQb,IACd,CCtEA,SAASc,GAAwBC,GAC/B,OAAqC,MAA9BA,EAAqC,EAAIA,EAA2Bl+iC,QAAU,CACvF,CAEA,SAASm+iC,GAAiBp9/B,GACxB,OAAOA,CACT,CAEA,IAAIq9/B,GAEJ,WAIE,SAASA,EAAWC,EAAQC,EAAQC,EAAcC,EAAc1xgC,EAChE2xgC,GACE9+iC,KAAK++iC,KAAOL,EACZ1+iC,KAAKg/iC,KAAOL,EACZ3+iC,KAAKi/iC,cAAgBL,GAAgBJ,GACrCx+iC,KAAKk/iC,cAAgBL,GAAgBL,GAErCx+iC,KAAKmtC,QAAUA,EACfntC,KAAKm/iC,kBAAiC,aAAbL,CAC3B,CA+NA,OAzNAL,EAAW/+iC,UAAUylB,IAAM,SAAU46B,GAEnC,OADA//C,KAAKinI,KAAOlnF,EACL//C,IACT,EAMAy+iC,EAAW/+iC,UAAU6uE,OAAS,SAAUxuB,GAEtC,OADA//C,KAAKsxI,QAAUvxF,EACR//C,IACT,EAMAy+iC,EAAW/+iC,UAAU0/iC,gBAAkB,SAAUr//B,GAE/C,OADA//C,KAAKq/iC,iBAAmBt//B,EACjB//C,IACT,EAMAy+iC,EAAW/+iC,UAAU4/iC,gBAAkB,SAAUv//B,GAE/C,OADA//C,KAAKu/iC,iBAAmBx//B,EACjB//C,IACT,EAMAy+iC,EAAW/+iC,UAAU8/iC,iBAAmB,SAAUz//B,GAEhD,OADA//C,KAAKy/iC,kBAAoB1//B,EAClB//C,IACT,EAMAy+iC,EAAW/+iC,UAAUmzB,OAAS,SAAUktB,GAEtC,OADA//C,KAAK0/iC,QAAU3//B,EACR//C,IACT,EAEAy+iC,EAAW/+iC,UAAUqiZ,QAAU,WAC7B/hZ,KAAKA,KAAKm/iC,kBAAoB,mBAAqB,qBACrD,EAEAV,EAAW/+iC,UAAUigjC,iBAAmB,WACtC,IAAIjB,EAAS1+iC,KAAK++iC,KACdJ,EAAS3+iC,KAAKg/iC,KACdY,EAAkB,CAAC,EACnBC,EAAgB,IAAIpgjC,MAAMi/iC,EAAOr+iC,QACjCy/iC,EAAgB,IAAIrgjC,MAAMk/iC,EAAOt+iC,QAErCL,KAAK+/iC,cAAcrB,EAAQ,KAAMmB,EAAe,iBAEhD7/iC,KAAK+/iC,cAAcpB,EAAQiB,EAAiBE,EAAe,iBAE3D,IAAK,IAAIl/iC,EAAI,EAAGA,EAAI89iC,EAAOr+iC,OAAQO,IAAK,CACtC,IAAIo/iC,EAASH,EAAcj/iC,GACvBq/iC,EAAeL,EAAgBI,GAC/BE,EAAkB5B,GAAwB2B,GAE9C,GAAIC,EAAkB,EAAG,CAGvB,IAAIC,EAASF,EAAa9hgC,QAEE,IAAxB8hgC,EAAa5/iC,SACfu/iC,EAAgBI,GAAUC,EAAa,IAGzCjgjC,KAAKsxI,SAAWtxI,KAAKsxI,QAAQ6u6B,EAAQv/iC,EACvC,MAA+B,IAApBs/iC,GACTN,EAAgBI,GAAU,KAC1BhgjC,KAAKsxI,SAAWtxI,KAAKsxI,QAAQ2u6B,EAAcr/iC,IAE3CZ,KAAK0/iC,SAAW1/iC,KAAK0/iC,QAAQ9+iC,EAEjC,CAEAZ,KAAKogjC,gBAAgBN,EAAeF,EACtC,EA4BAnB,EAAW/+iC,UAAU2gjC,iBAAmB,WACtC,IAAI3B,EAAS1+iC,KAAK++iC,KACdJ,EAAS3+iC,KAAKg/iC,KACdsB,EAAkB,CAAC,EACnBV,EAAkB,CAAC,EACnBC,EAAgB,GAChBC,EAAgB,GAEpB9/iC,KAAK+/iC,cAAcrB,EAAQ4B,EAAiBT,EAAe,iBAE3D7/iC,KAAK+/iC,cAAcpB,EAAQiB,EAAiBE,EAAe,iBAE3D,IAAK,IAAIl/iC,EAAI,EAAGA,EAAIi/iC,EAAcx/iC,OAAQO,IAAK,CAC7C,IAAIo/iC,EAASH,EAAcj/iC,GACvB2/iC,EAAeD,EAAgBN,GAC/BC,EAAeL,EAAgBI,GAC/BQ,EAAkBlC,GAAwBiC,GAC1CL,EAAkB5B,GAAwB2B,GAE9C,GAAIO,EAAkB,GAAyB,IAApBN,EACzBlgjC,KAAKq/iC,kBAAoBr/iC,KAAKq/iC,iBAAiBY,EAAcM,GAC7DX,EAAgBI,GAAU,UACrB,GAAwB,IAApBQ,GAAyBN,EAAkB,EACpDlgjC,KAAKu/iC,kBAAoBv/iC,KAAKu/iC,iBAAiBU,EAAcM,GAC7DX,EAAgBI,GAAU,UACrB,GAAwB,IAApBQ,GAA6C,IAApBN,EAClClgjC,KAAKsxI,SAAWtxI,KAAKsxI,QAAQ2u6B,EAAcM,GAC3CX,EAAgBI,GAAU,UACrB,GAAIQ,EAAkB,GAAKN,EAAkB,EAClDlgjC,KAAKy/iC,mBAAqBz/iC,KAAKy/iC,kBAAkBQ,EAAcM,GAC/DX,EAAgBI,GAAU,UACrB,GAAIQ,EAAkB,EAC3B,IAAK,IAAI7U,EAAM,EAAGA,EAAM6U,EAAiB7U,IACvC3riC,KAAK0/iC,SAAW1/iC,KAAK0/iC,QAAQa,EAAa5U,SAG5C3riC,KAAK0/iC,SAAW1/iC,KAAK0/iC,QAAQa,EAEjC,CAEAvgjC,KAAKogjC,gBAAgBN,EAAeF,EACtC,EAEAnB,EAAW/+iC,UAAU0gjC,gBAAkB,SAAUN,EAAeF,GAC9D,IAAK,IAAIh/iC,EAAI,EAAGA,EAAIk/iC,EAAcz/iC,OAAQO,IAAK,CAC7C,IAAI6/iC,EAASX,EAAcl/iC,GACvBq/iC,EAAeL,EAAgBa,GAC/BC,EAAepC,GAAwB2B,GAE3C,GAAIS,EAAe,EACjB,IAAK,IAAIt8iC,EAAI,EAAGA,EAAIs8iC,EAAct8iC,IAChCpE,KAAKinI,MAAQjnI,KAAKinI,KAAKg56B,EAAa77iC,SAEZ,IAAjBs8iC,GACT1gjC,KAAKinI,MAAQjnI,KAAKinI,KAAKg56B,GAIzBL,EAAgBa,GAAU,IAC5B,CACF,EAEAhC,EAAW/+iC,UAAUqgjC,cAAgB,SAAUth1B,EAC/CpvM,EAGAsxhC,EAAQC,GAGN,IAFA,IAAIC,EAAiB7gjC,KAAKm/iC,kBAEjBv+iC,EAAI,EAAGA,EAAI69N,EAAIp+N,OAAQO,IAAK,CAEnC,IAAIikB,EAAM,OAAS7kB,KAAK4gjC,GAAeni1B,EAAI79N,GAAIA,GAM/C,GAJKigjC,IACHF,EAAO//iC,GAAKikB,GAGTwK,EAAL,CAIA,IAAIyxhC,EAAYzxhC,EAAIxK,GAChB67hC,EAAepC,GAAwBwC,GAEtB,IAAjBJ,GAGFrxhC,EAAIxK,GAAOjkB,EAEPigjC,GACFF,EAAO9+iC,KAAKgjB,IAEY,IAAjB67hC,EACTrxhC,EAAIxK,GAAO,CAACi8hC,EAAWlgjC,GAEvBkgjC,EAAUj/iC,KAAKjB,EAhBjB,CAkBF,CACF,EAEO69iC,CACT,CA7OA,GA+OA,YCtPA,IAAIsC,GAEJ,WACE,SAASA,EAAmBl5hC,EAAQm5hC,GAClChhjC,KAAKo3vB,QAAUvvuB,EACf7nB,KAAKihjC,QAAUD,CACjB,CA0BA,OAxBAD,EAAmBrhjC,UAAUyD,IAAM,WACjC,MAAO,CAELwtgC,eAAgB3wgC,KAAKkhjC,yBACrBr5hC,OAAQ7nB,KAAKo3vB,QAEjB,EAUA2pT,EAAmBrhjC,UAAUwhjC,uBAAyB,WAKpD,OAJKlhjC,KAAKmhjC,kBACRnhjC,KAAKmhjC,gBAAkBnhjC,KAAKihjC,QAAUjhjC,KAAKihjC,QAAQG,2BAA6B,IAG3EphjC,KAAKmhjC,eACd,EAEOJ,CACT,CA/BA,GAqHA,SAASM,GAAqBx5hC,EAAQ8vU,GAKpC,OAJK9vU,EAAOloB,eAAeg4V,KACzB9vU,EAAO8vU,GAAO,IAGT9vU,EAAO8vU,EAChB,CAGO,SAAS2ptB,GAAuB/5N,GACrC,MAAoB,aAAbA,EAA0B,UAAyB,SAAbA,EAAsB,OAAS,OAC9E,CChFA,SA7CE,SAA+BnnT,GAkC7BpgiB,KAAKunhC,UAAY,CAAC,EAEP,MAAPnnf,GACF,EAAcpgiB,KAAMogiB,EAExB,EC5CF,IAAI,GAAQ8ic,KACRq+E,GAAe,CACjBC,MAAO,IACP1jyB,IAAK,IACL2jyB,QAAS,IACT135B,OAAQ,IACRlkG,KAAM,KAcJ67/B,GAEJ,WACE,SAASA,EAAiBthhB,GACxBpgiB,KAAK04J,WAAa0nY,EAAI1nY,WACtB14J,KAAK2hjC,YAAcvhhB,EAAIwhhB,iBACvB5hjC,KAAK6H,OAASu4hB,EAAIv4hB,OAClB7H,KAAK6hjC,cAAgBzhhB,EAAI0hhB,mBAEzB9hjC,KAAK+hjC,kBAAkB3hhB,EAAIwhhB,iBAC7B,CAsJA,OApJAF,EAAiBhijC,UAAUsijC,mBAAqB,WAC9C,OAAOhijC,KAAK2hjC,WACd,EAEAD,EAAiBhijC,UAAUqijC,kBAAoB,SAAUH,GACvD5hjC,KAAK2hjC,YAAcC,EAEdA,IAIA5hjC,KAAKiijC,cACRjijC,KAAKiijC,YAAcC,GAAuBlijC,KAAK6H,SAEnD,EAUA65iC,EAAiBhijC,UAAUyijC,wBAA0B,SAAU9lD,GAC7D,OAAO/xD,GAAUtq8B,KAAKiijC,YAAY9+iC,IAAIk5/B,IAAW,EACnD,EAQAqlD,EAAiBhijC,UAAU0ijC,mBAAqB,SAAUhmD,GACxD,IAAIV,EAAmB17/B,KAAK6H,OAAO6z/B,iBAEnC,GAAIA,EACF,OAAOA,EAAiBU,EAE5B,EAEAslD,EAAiBhijC,UAAU8hhC,gBAAkB,WAS3C,IARA,IAAIhmB,EAAWx7/B,KAAK6hjC,cAChBQ,EAAyBp0C,GAAyBjugC,KAAK6H,QACvDy6iC,GAAkBC,GAA2B/mD,GAG7CgnD,EAAU,GACV12C,EAAO,GAEF22C,EAAa,EAAGC,EAAe,EAAGD,EAAajnD,EAAUinD,IAAc,CAC9E,IAAIjpgC,OAAW,EACXjtC,OAAO,EACP+tgC,OAAc,EACdqoC,EAAe3ijC,KAAK04J,WAAWgq5B,GAEnC,GAAIC,GAAgBA,EAAaC,gBAAkBH,EACjDjpgC,EAAW6ogC,EAAyBM,EAAaj4iC,KAAO,KACxD6B,EAAOo2iC,EAAap2iC,KACpB+tgC,EAAcqoC,EAAaroC,YAC3BooC,QACK,CACL,IAAIG,EAAe7ijC,KAAKoijC,mBAAmBK,GAEvCI,IACFrpgC,EAAW6ogC,EAAyBQ,EAAan4iC,KAAO,KACxD6B,EAAOs2iC,EAAat2iC,KAExB,CAEAu//B,EAAKjqgC,KAAK,CACR23C,SAAUA,EACVjtC,KAAMA,EACN+tgC,YAAaA,KAQX+nC,GAAsC,MAAZ7ogC,GAEzBmpgC,GAAiBA,EAAaG,qBACjCN,GAAWF,EACT9ogC,EAAS/sC,QAAQ,MAAO,MAAMA,QAAQ,MAAO,MAC7C+sC,GAGJgpgC,GAAW,IACXA,GAAWjB,GAAah1iC,IAAS,IAE7B+tgC,IACFkoC,GAAWloC,EAAYlnrB,KAGzBovtB,GAAW,GACb,CAKA,IAAI36iC,EAAS7H,KAAK6H,OAElB,MAAO,CACL6wJ,WAAYoz2B,EACZpk6B,KAHS,CAAC7/F,EAAO0y/B,eAAgB1y/B,EAAO83H,WAAY6i7B,GAAS31iC,KAAK,MAKtE,EAEA60iC,EAAiBhijC,UAAU0hjC,yBAA2B,WAGpD,IAFA,IAAI59hC,EAAS,GAEJi/hC,EAAa,EAAGC,EAAe,EAAGD,EAAazijC,KAAK6hjC,cAAeY,IAAc,CACxF,IAAInlT,OAAS,EACTqlT,EAAe3ijC,KAAK04J,WAAWgq5B,GAEnC,GAAIC,GAAgBA,EAAaC,gBAAkBH,EAC5CE,EAAaG,qBAChBxlT,EAASqlT,EAAaj4iC,MAGxBg4iC,QACK,CACL,IAAIG,EAAe7ijC,KAAKoijC,mBAAmBK,GAEvCI,IACFvlT,EAASulT,EAAan4iC,KAE1B,CAEA8Y,EAAO3hB,KAAKy7vB,EACd,CAEA,OAAO95uB,CACT,EAEAk+hC,EAAiBhijC,UAAUqjjC,2BAA6B,SAAUtrC,GAChEz3gC,KAAK04J,WAAW72J,KAAK41gC,GACrBA,EAAOqrC,oBAAqB,EAC5B9ijC,KAAK6hjC,gBAIL7hjC,KAAK+hjC,mBAAkB,EACzB,EAEOL,CACT,CA/JA,GAkKO,SAASsB,GAAmB3pyB,GACjC,OAAOA,aAAkBqoyB,EAC3B,CACO,SAASuB,GAAiB9nD,GAG/B,IAFA,IAAI+nD,EAAiBh4G,KAEZtq8B,EAAI,EAAGA,GAAKu6/B,GAAW,IAAI96/B,OAAQO,IAAK,CAC/C,IAAIuijC,EAAgBhoD,EAAQv6/B,GACxBwijC,EAAc,GAASD,GAAiBA,EAAcz4iC,KAAOy4iC,EAE9C,MAAfC,GAA0D,MAAnCF,EAAe//iC,IAAIigjC,IAC5CF,EAAej3iC,IAAIm3iC,EAAaxijC,EAEpC,CAEA,OAAOsijC,CACT,CACO,SAAShB,GAAuBr6iC,GACrC,IAAIw7iC,EAAc,GAAMx7iC,GACxB,OAAOw7iC,EAAYC,aAAeD,EAAYC,WAAaL,GAAiBp7iC,EAAO6z/B,kBACrF,CACO,SAAS6mD,GAA2B/mD,GACzC,OAAOA,EAAW,EACpB,CCpMA,IAaI+nD,GACA9vkB,GACA+vkB,GACAC,GACAC,GACAC,GACAC,GAnBA,GAAW,GACX,GAAM,EACN,GAAuC,oBAAf9jiC,WAA6BrgB,MAAQqgB,WAM7D+jiC,GAA0B,CAAC,gBAAiB,YAAa,UAAW,sBAAuB,cAAe,aAAc,WAAY,kBAAmB,cAAe,YAAa,oBACnLC,GAAmB,CAAC,sBAYpBC,GAEJ,WAME,SAASA,EAAWC,EAAiBC,GAgCnC,IAAIvr5B,EA/BJ14J,KAAKuM,KAAO,OACZvM,KAAK2hjC,aAAc,EACnB3hjC,KAAKkkjC,UAAY,GACjBlkjC,KAAKmkjC,QAAU,GAKfnkjC,KAAKokjC,QAAU,CAAC,EAEhBpkjC,KAAKqkjC,QAAU,CAAC,EAEhBrkjC,KAAKskjC,aAAe,GAEpBtkjC,KAAKukjC,aAAe,GAEpBvkjC,KAAKwkjC,YAAc,GAEnBxkjC,KAAKykjC,mBAAqB,CAAC,EAC3BzkjC,KAAK0kjC,iBAAmB,CAAC,EAKzB1kjC,KAAKoqhC,eAAgB,EAGrBpqhC,KAAK2kjC,qBAAuB,CAAC,eAAgB,aAAc,iBAAkB,OAE7E3kjC,KAAK+qhC,kBAAoB,CAAC,aAAc,eACxC/qhC,KAAKgrhC,mBAAqB,CAAC,aAAc,kBAEzC,IAAI45B,GAAoB,EAEpB5B,GAAmBgB,IACrBtr5B,EAAasr5B,EAAgBtr5B,WAC7B14J,KAAK2hjC,YAAcqC,EAAgBhC,qBACnChijC,KAAKihjC,QAAU+C,IAEfY,GAAoB,EACpBls5B,EAAasr5B,GAGftr5B,EAAaA,GAAc,CAAC,IAAK,KAOjC,IANA,IAAIms5B,EAAiB,CAAC,EAClBn0C,EAAiB,GACjBo0C,EAAqB,CAAC,EACtBC,GAAc,EACdC,EAAW,CAAC,EAEPpkjC,EAAI,EAAGA,EAAI83J,EAAWr4J,OAAQO,IAAK,CAE1C,IAAIqkjC,EAAevs5B,EAAW93J,GAC1BskjC,EAAgB,GAAgBD,GAAgB,IAAI,GAAsB,CAC5Ev6iC,KAAMu6iC,IACDA,aAAwB,GAAmEA,EAA1C,IAAI,GAAsBA,GAC9EE,EAAgBD,EAAcx6iC,KAClCw6iC,EAAc34iC,KAAO24iC,EAAc34iC,MAAQ,QAEtC24iC,EAAc77B,WACjB67B,EAAc77B,SAAW87B,EACzBD,EAAcE,cAAgB,GAGhC,IAAI79B,EAAY29B,EAAc39B,UAAY29B,EAAc39B,WAAa,CAAC,EACtE7W,EAAe7ugC,KAAKsjjC,GACpBN,EAAeM,GAAiBD,EAED,MAA3BF,EAASG,KACXJ,GAAc,GAGZG,EAAcG,wBAChBP,EAAmBK,GAAiB,IAGX,IAAvB59B,EAAUlsB,WACZr7/B,KAAKsljC,YAAc1kjC,GAGI,IAArB2mhC,EAAUxnQ,SACZ//wB,KAAKuljC,UAAY3kjC,GAOfgkjC,IACFM,EAActC,cAAgBhijC,EAElC,CAUA,GARAZ,KAAK04J,WAAag42B,EAClB1wgC,KAAKwljC,UAAYX,EAEjB7kjC,KAAKyljC,sBAAsBV,GAE3B/kjC,KAAKikjC,UAAYA,EACjBjkjC,KAAK0ljC,oBAAsBZ,EAEvB9kjC,KAAK2hjC,YAAa,CACpB,IAAIgE,EAAiB3ljC,KAAK4ljC,cAAgB,KAC1C,EAAYl1C,GAAgB,SAAUrU,GACpCspD,EAAe15iC,IAAI44iC,EAAexoD,GAASumD,cAAevmD,EAC5D,GACF,CACF,CAi/BA,OA79BA0nD,EAAWrkjC,UAAUmmjC,aAAe,SAAUlutB,GAC5C,IAAIihrB,EAAS54gC,KAAK8ljC,mBAAmBnutB,GAErC,GAAc,MAAVihrB,EACF,OAAOjhrB,EAKT,GAFAihrB,EAASjhrB,GAEJ33V,KAAK2hjC,YACR,OAAO3hjC,KAAK04J,WAAWkg3B,GAKzB,IAAIvc,EAAUr8/B,KAAK4ljC,cAAczijC,IAAIy1gC,GAErC,GAAe,MAAXvc,EACF,OAAOA,EAGT,IAAIwmD,EAAe7ijC,KAAKihjC,QAAQmB,mBAAmBxpC,GAEnD,OAAIiqC,EACKA,EAAan4iC,UADtB,CAGF,EAOAq5iC,EAAWrkjC,UAAUqwgC,kBAAoB,SAAUp4qB,GACjD,IAAIihrB,EAAS54gC,KAAK8ljC,mBAAmBnutB,GAErC,GAAc,MAAVihrB,EACF,OAAOA,EAGT,GAAW,MAAPjhrB,EACF,OAAQ,EAGV,IAAI6+qB,EAAUx2gC,KAAK+ljC,YAAYputB,GAE/B,OAAO6+qB,EAAUA,EAAQosC,cAAgB5ijC,KAAK2hjC,YAAc3hjC,KAAKihjC,QAAQkB,wBAAwBxqtB,IAAQ,CAC3G,EAsBAostB,EAAWrkjC,UAAUomjC,mBAAqB,SAAUnutB,GAClD,GAAI,GAAgBA,IACV,MAAPA,IAAgBrrT,MAAMqrT,KAAS33V,KAAK+ljC,YAAYputB,MAAU33V,KAAK2hjC,aAAe3hjC,KAAKihjC,QAAQkB,wBAAwBxqtB,GAAO,GAC3H,OAAQA,CAEZ,EAEAostB,EAAWrkjC,UAAUsmjC,kBAAoB,SAAUrutB,GASjD,OARa33V,KAAK+vgC,kBAAkBp4qB,EAStC,EASAostB,EAAWrkjC,UAAU4l+B,iBAAmB,SAAU3toB,GAEhD,OAAO33V,KAAK+ljC,YAAY/ljC,KAAK6ljC,aAAalutB,GAC5C,EAEAostB,EAAWrkjC,UAAU+ljC,sBAAwB,SAAUV,GACrD,IAAIF,EAAiB7kjC,KAAKwljC,UAC1BxljC,KAAK+ljC,YAAchB,EAAc,SAAU1oD,GACzC,OAAOwoD,EAAelljC,eAAe08/B,GAAWwoD,EAAexoD,QAAWtu9B,CAC5E,EAAI,SAAUsu9B,GACZ,OAAOwoD,EAAexoD,EACxB,CACF,EAMA0nD,EAAWrkjC,UAAUumjC,qBAAuB,WAC1C,OAAOjmjC,KAAKkmjC,YAAYC,gBAAgBpkjC,OAC1C,EAEAgijC,EAAWrkjC,UAAU0mjC,aAAe,SAAU/8B,EAAUvuqB,GACtD,IAAIursB,EAAoBrmjC,KAAKkmjC,YAE7B,GAAW,MAAPprsB,EACF,OAAOursB,EAAkBC,uBAAuBj9B,GAGlD,IAAIvd,EAAOu6C,EAAkBx+hC,OAAOwhgC,GACpC,OAAOvd,EAAOA,EAAKhxpB,GAAO,IAC5B,EAEAipsB,EAAWrkjC,UAAUonhC,iBAAmB,SAAUuC,GAGhD,OAFwBrphC,KAAKkmjC,YACAr+hC,OAAOwhgC,IACpB,IAAItnhC,OACtB,EAEAgijC,EAAWrkjC,UAAUowgC,SAAW,WAC9B,OAAO9vgC,KAAKumjC,MACd,EAYAxC,EAAWrkjC,UAAUy5b,SAAW,SAAU3pb,EAAMg3iC,EAAUhtC,GACxD,IAEIzq0B,EAFAriJ,EAAQ1sD,KAQZ,GAJIwP,aAAgB,KAClBu/L,EAAQv/L,IAGLu/L,EAAO,CACV,IAAIr2C,EAAa14J,KAAK04J,WAClBxiH,EAAW+29B,GAAiBz9/B,IAAS,EAAmBA,GAAQ,IAAI0+/B,GAAoB1+/B,EAAMkpJ,EAAWr4J,QAAUmP,EACvHu/L,EAAQ,IAAI,GACZ,IAAI812B,EAAiB,GAAIns5B,GAAY,SAAU2j2B,GAC7C,MAAO,CACL9v/B,KAAMmgD,EAAM84/B,UAAUnpD,GAAS9v/B,KAC/BitC,SAAU6i9B,EAEd,IACAttzB,EAAMoqP,SAASjjZ,EAAU2ugC,EAAgBrrC,EAC3C,CAEAx5gC,KAAKumjC,OAASx32B,EAEd/uM,KAAKkkjC,WAAasC,GAAY,IAAIzkjC,QAClC/B,KAAKmkjC,QAAU,GACfnkjC,KAAKymjC,iBAAmB,CAAC,EAEzBzmjC,KAAK0mjC,QAAQ,EAAG332B,EAAMxlJ,SAItBvpD,KAAKkmjC,YHxTF,SAA6B12iC,EAAM6pQ,GACxC,IAAIstyB,EAAU,CAAC,EACX9+hC,EAAS8+hC,EAAQ9+hC,OAAS,CAAC,EAC3B++hC,EAAsB17G,KACtB27G,EAAiB,GACjBC,EAAmB,GACnBC,EAAmB,CAAC,EACxB,EAAKv3iC,EAAKkpJ,YAAY,SAAU2j2B,GAC9B,IAwFqBC,EAxFjB6qB,EAAU33gC,EAAK819B,iBAAiB+2B,GAChCgtB,EAAWlC,EAAQkC,SAEvB,GAAIA,EAAU,CAKZ,IAAI+7B,EAAgBj+B,EAAQi+B,cAC5B/D,GAAqBx5hC,EAAQwhgC,GAAU+7B,GAAiB/oD,EAEnD8qB,EAAQ6/B,eACXJ,EAAoB36iC,IAAIo9gC,EAAU,GA+EnB,aAHE/sB,EAvEG6qB,EAAQ56gC,OA0EY,SAAZ+v/B,IAzE1BuqD,EAAe,GAAKxqD,GAKtBglD,GAAqB0F,EAAkB19B,GAAU+7B,GAAiB51iC,EAAKuggC,kBAAkBoX,EAAQz8gC,OAG/Fy8gC,EAAQ8/B,gBACVH,EAAiBjljC,KAAKw6/B,EAE1B,CAEAnD,GAAkBl3O,MAAK,SAAU/+wB,EAAGkz+B,GAClC,IAAI+wE,EAAY7F,GAAqBx5hC,EAAQsu9B,GACzCimB,EAAW+qB,EAAQI,UAAUpxC,GAEjB,MAAZimB,IAAiC,IAAbA,IACtB8qD,EAAU9qD,GAAY+qB,EAAQz8gC,KAElC,GACF,IACA,IAAIy7iC,EAAkB,GAClBG,EAAyB,CAAC,EAC9BM,EAAoB5kS,MAAK,SAAU/+wB,EAAGomhC,GACpC,IAAI/N,EAASzz/B,EAAOwhgC,GACpBi9B,EAAuBj9B,GAAY/N,EAAO,GAG1C6qC,EAAkBA,EAAgBnkjC,OAAOs5gC,EAC3C,IACAqrC,EAAQR,gBAAkBA,EAC1BQ,EAAQQ,sBAAwB93hC,EAAI82hC,GAAiB,SAAU9pD,GAC7D,OAAO7s/B,EAAK819B,iBAAiB+2B,GAASumD,aACxC,IACA+D,EAAQL,uBAAyBA,EACjC,IAAIc,EAAcv/hC,EAAOxmB,MAGrB+ljC,GAAeA,EAAY/mjC,SAC7BwmjC,EAAiBO,EAAYrljC,SAG/B,IAAIsljC,EAAgBx/hC,EAAOw2H,QAW3B,OATIgp6B,GAAiBA,EAAchnjC,OACjCymjC,EAAmBO,EAActljC,QACvB+kjC,EAAiBzmjC,SAC3BymjC,EAAmBD,EAAe9kjC,SAGpC8lB,EAAOg/hC,eAAiBA,EACxBh/hC,EAAOi/hC,iBAAmBA,EAC1BH,EAAQn2C,WAAa,IAAIuwC,GAAmBgG,EAAkB1tyB,GACvDstyB,CACT,CGuOuBW,CAAoBtnjC,KAAMA,KAAKihjC,SAClDjhjC,KAAKwwgC,WAAaxwgC,KAAKkmjC,YAAY11C,UACrC,EAMAuzC,EAAWrkjC,UAAU4ugC,WAAa,SAAU9+/B,GAC1C,IAAIuyH,EAAQ/hI,KAAKumjC,OAAOj4C,WAAW9+/B,GAEnCxP,KAAK0mjC,QAAQ3k7B,EAAM,GAAIA,EAAM,GAC/B,EAkBAgi7B,EAAWrkjC,UAAUk7gC,aAAe,SAAUl+/B,EAAQs0mB,GACpD,IAAIr6lB,EAAK32B,KAAKumjC,OAAO3rC,aAAal+/B,EAAQs0mB,EAAM3wnB,QAC5CmmC,EAAQ7P,EAAG6P,MACXC,EAAM9P,EAAG8P,IAET8ghC,EAAuBvnjC,KAAKwnjC,wBAIhC,GAFAxnjC,KAAKynjC,qBAEDz2b,EACF,IAAK,IAAIl2Q,EAAMt0U,EAAOs0U,EAAMr0U,EAAKq0U,IAAO,CACtC,IAAImgqB,EAAYngqB,EAAMt0U,EACtBxmC,KAAKkkjC,UAAUppsB,GAAOk2Q,EAAMiqZ,GAExBssC,GACF3D,GAAe5jjC,KAAM86W,EAEzB,CAEJ,EAEAipsB,EAAWrkjC,UAAU+njC,mBAAqB,WAIxC,IAHA,IAAI142B,EAAQ/uM,KAAKumjC,OACb7t5B,EAAa14J,KAAK04J,WAEb93J,EAAI,EAAGA,EAAI83J,EAAWr4J,OAAQO,IAAK,CAC1C,IAAI41gC,EAAUx2gC,KAAKwljC,UAAU9s5B,EAAW93J,IAEpC41gC,EAAQ8D,aACVvr0B,EAAMsr0B,mBAAmB7D,EAAQosC,cAAepsC,EAAQ8D,YAE5D,CACF,EAEAypC,EAAWrkjC,UAAU8njC,sBAAwB,WAC3C,IAAItxgC,EAAWl2C,KAAKumjC,OAAOtsC,cAE3B,OAAyB,MAAlBj6gC,KAAKuljC,WAAqBrvgC,EAASu1S,YAAY5L,eAAiBw5qB,KAA8Bnj9B,EAASy49B,WAChH,EAEAo1C,EAAWrkjC,UAAUgnjC,QAAU,SAAUlghC,EAAOC,GAC9C,KAAID,GAASC,GAAb,CAIA,IACIyP,EADQl2C,KAAKumjC,OACItsC,cAErBj6gC,KAAKynjC,qBAEL,IAAIjB,EAAWxmjC,KAAKkkjC,UAChBwD,EAAS1njC,KAAKmkjC,QAWlB,GAVmBjugC,EAASu1S,YAAY5L,eACA,KASf3pS,EAASq49B,KAGhC,IAFA,IAAIo5C,EAAiB,GAEZ7ssB,EAAMt0U,EAAOs0U,EAAMr0U,EAAKq0U,IAAO,CAEtC,IAAIo1S,EAAWh6mB,EAASjqB,QAAQ6uV,EAAK6ssB,GAMrC,IAJK3njC,KAAKoqhC,eAAiBppD,GAAiB9wU,KAC1ClwpB,KAAKoqhC,eAAgB,GAGnBl6X,EAAU,CACZ,IAAImrW,EAAWnrW,EAASxlpB,KAEH,MAAjB87iC,EAAS1rsB,IAA4B,MAAZugpB,IAC3BmrD,EAAS1rsB,GAAO4nnB,GAAoB24B,EAAU,OAGhD,IAAIt7O,EAAS7vH,EAAS3koB,GAEH,MAAfm8hC,EAAO5ssB,IAA0B,MAAVila,IACzB2nS,EAAO5ssB,GAAO4nnB,GAAoB3iN,EAAQ,MAE9C,CACF,CAGF,GAAI//wB,KAAKwnjC,wBACP,IAAS1ssB,EAAMt0U,EAAOs0U,EAAMr0U,EAAKq0U,IAC/B8osB,GAAe5jjC,KAAM86W,GAIzByosB,GAAqBvjjC,KApDrB,CAqDF,EAiBA+jjC,EAAWrkjC,UAAUkojC,qBAAuB,SAAUjwtB,GACpD,OAAO33V,KAAKykjC,mBAAmB9stB,IAAQ33V,KAAKumjC,OAAO9nC,cAAcz+gC,KAAKgmjC,kBAAkBrutB,GAC1F,EAOAostB,EAAWrkjC,UAAUmojC,qBAAuB,SAAUt94B,EAAQotL,GAC5DA,EAAM33V,KAAK6ljC,aAAalutB,GACxB33V,KAAKykjC,mBAAmB9stB,GAAOptL,EAAOxoK,OACxC,EAEAgijC,EAAWrkjC,UAAUu9iC,mBAAqB,SAAUp4hC,GAClD,OAAO7kB,KAAK0kjC,iBAAiB7/hC,EAC/B,EAEAk/hC,EAAWrkjC,UAAUw9iC,mBAAqB,SAAUr4hC,EAAK1jB,GACvD,GAAS0jB,GAAO,EAAc7kB,KAAK0kjC,iBAAkB7/hC,GAAO7kB,KAAK0kjC,iBAAiB7/hC,GAAO1jB,CAC3F,EASA4ijC,EAAWrkjC,UAAUsoV,QAAU,SAAU8yB,GACvC,IAAI8gqB,EAAW57gC,KAAKssgC,YAAYxxpB,GAC5BpwW,EAAO1K,KAAKkkjC,UAAUtoC,GAU1B,OARY,MAARlxgC,GAAoC,MAApB1K,KAAKsljC,cACvB56iC,EAAO84iC,GAAmBxjjC,KAAMA,KAAKsljC,YAAa1pC,IAGxC,MAARlxgC,IACFA,EAAO,IAGFA,CACT,EAEAq5iC,EAAWrkjC,UAAUoojC,aAAe,SAAUlvC,EAAQ99pB,GACpD,IAAI2msB,EAAUzhjC,KAAKumjC,OAAOpjjC,IAAIy1gC,EAAQ99pB,GAElCw/pB,EAAct6gC,KAAKumjC,OAAO5rC,eAAe/B,GAE7C,OAAI0B,EACKA,EAAYtxJ,WAAWy4L,GAGzBA,CACT,EASAsC,EAAWrkjC,UAAU+ze,MAAQ,SAAU34H,GACrC,OAAO24H,GAAMzze,KAAMA,KAAKssgC,YAAYxxpB,GACtC,EAEAipsB,EAAWrkjC,UAAU6pD,MAAQ,WAC3B,OAAOvpD,KAAKumjC,OAAOh9/B,OACrB,EAQAw6/B,EAAWrkjC,UAAUyD,IAAM,SAAUw0V,EAAKmjB,GACxC,IAAI/rK,EAAQ/uM,KAAKumjC,OACb/vC,EAAUx2gC,KAAKwljC,UAAU7ttB,GAE7B,GAAI6+qB,EACF,OAAOzn0B,EAAM5rM,IAAIqzgC,EAAQosC,cAAe9nsB,EAE5C,EAMAipsB,EAAWrkjC,UAAUitgC,cAAgB,SAAUh1qB,EAAK4jrB,GAClD,IAAIxs0B,EAAQ/uM,KAAKumjC,OACb/vC,EAAUx2gC,KAAKwljC,UAAU7ttB,GAE7B,GAAI6+qB,EACF,OAAOzn0B,EAAM49zB,cAAc6J,EAAQosC,cAAernC,EAEtD,EAEAwoC,EAAWrkjC,UAAUw8gC,WAAa,WAChC,OAAOl8gC,KAAKumjC,OAAOrqC,YACrB,EAEA6nC,EAAWrkjC,UAAU++gC,cAAgB,SAAU9mrB,GAC7C,OAAO33V,KAAKumjC,OAAO9nC,cAAcz+gC,KAAKgmjC,kBAAkBrutB,GAC1D,EAEAostB,EAAWrkjC,UAAU87gC,OAAS,SAAU7jrB,GACtC,OAAO33V,KAAKumjC,OAAO/qC,OAAOx7gC,KAAKgmjC,kBAAkBrutB,GACnD,EAEAostB,EAAWrkjC,UAAU+7gC,UAAY,SAAU9jrB,GACzC,OAAO33V,KAAKumjC,OAAO9qC,UAAUz7gC,KAAKgmjC,kBAAkBrutB,GACtD,EAEAostB,EAAWrkjC,UAAUg9iB,UAAY,SAAUhkZ,EAAYoiN,GACrD,IAAIpuT,EAAQ1sD,KAER+uM,EAAQ/uM,KAAKumjC,OACjB,OAAO,GAAe7t5B,GAAcq2C,EAAM2tW,UAAU,GAAIhkZ,GAAY,SAAUi/L,GAC5E,OAAOjrS,EAAMs5/B,kBAAkBrutB,EACjC,IAAImjB,GAAO/rK,EAAM2tW,UAAUhkZ,EAC7B,EAOAqr5B,EAAWrkjC,UAAUgwjB,SAAW,SAAU50M,GAGxC,IAFA,IAAIqssB,EAAwBnnjC,KAAKkmjC,YAAYiB,sBAEpCvmjC,EAAI,EAAGi+H,EAAMso7B,EAAsB9mjC,OAAQO,EAAIi+H,EAAKj+H,IAI3D,GAAI0rC,MAAMtsC,KAAKumjC,OAAOpjjC,IAAIgkjC,EAAsBvmjC,GAAIk6W,IAClD,OAAO,EAIX,OAAO,CACT,EAMAipsB,EAAWrkjC,UAAUuj+B,YAAc,SAAUv49B,GAC3C,IAAK,IAAI9J,EAAI,EAAGi+H,EAAM7+H,KAAKumjC,OAAOh9/B,QAAS3oD,EAAIi+H,EAAKj+H,IAClD,GAAIZ,KAAKgoV,QAAQpnV,KAAO8J,EACtB,OAAO9J,EAIX,OAAQ,CACV,EAEAmjjC,EAAWrkjC,UAAU4sgC,YAAc,SAAUxxpB,GAC3C,OAAO96W,KAAKumjC,OAAOj6C,YAAYxxpB,EACjC,EAEAipsB,EAAWrkjC,UAAUsj+B,gBAAkB,SAAU44C,GAC/C,OAAO57gC,KAAKumjC,OAAOvjF,gBAAgB44C,EACrC,EAUAmoC,EAAWrkjC,UAAUgtgC,WAAa,SAAU/0qB,EAAKx2V,GAS/C,IAAIy6gC,GARkBjkrB,GAAO33V,KAAK0ljC,oBAAoB/ttB,IAQvBx2V,GAE/B,OAAgB,MAAZy6gC,GAAoBtv+B,MAAMsv+B,IAnpBZ,EAupBXA,CACT,EAWAmoC,EAAWrkjC,UAAUm8gC,iBAAmB,SAAUlkrB,EAAKx2V,EAAOonzB,GAC5D,OAAOvozB,KAAKumjC,OAAO1qC,iBAAiB77gC,KAAKgmjC,kBAAkBrutB,GAAMx2V,EAAOonzB,EAC1E,EAEAw7P,EAAWrkjC,UAAUsixB,KAAO,SAAU8pP,EAAMpq8B,EAAI41K,GAG1C,GAAkBw0xB,KACpBx0xB,EAAM51K,EACNA,EAAKoq8B,EACLA,EAAO,IAIT,IAAIi8C,EAAOzw0B,GAAOt3O,KACdgojC,EAAa,GAAIvE,GAAoB33C,GAAO9rgC,KAAKgmjC,kBAAmBhmjC,MAExEA,KAAKumjC,OAAOvkS,KAAKgmS,EAAYD,EAAO,GAAYrm/B,EAAIqm/B,GAAQrm/B,EAC9D,EAEAqi/B,EAAWrkjC,UAAUuojC,WAAa,SAAUn8C,EAAMpq8B,EAAI41K,GAGhD,GAAkBw0xB,KACpBx0xB,EAAM51K,EACNA,EAAKoq8B,EACLA,EAAO,IAIT,IAAIi8C,EAAOzw0B,GAAOt3O,KACdgojC,EAAa,GAAIvE,GAAoB33C,GAAO9rgC,KAAKgmjC,kBAAmBhmjC,MAExE,OADAA,KAAKumjC,OAASvmjC,KAAKumjC,OAAO15hC,OAAOm7hC,EAAYD,EAAO,GAAYrm/B,EAAIqm/B,GAAQrm/B,GACrE1hE,IACT,EAOA+jjC,EAAWrkjC,UAAU0zqB,YAAc,SAAUrxiB,GAG3C,IAAIr1E,EAAQ1sD,KAERkojC,EAAa,CAAC,EACdp8C,EAAO,GAAY/p4B,GACnBim7B,EAAa,GAQjB,OAPA,EAAYl8C,GAAM,SAAUn0qB,GAC1B,IAAIihrB,EAASls9B,EAAMs5/B,kBAAkBrutB,GAErCuwtB,EAAWtvC,GAAU724B,EAAM41N,GAC3BqwtB,EAAWnmjC,KAAK+2gC,EAClB,IACA54gC,KAAKumjC,OAASvmjC,KAAKumjC,OAAOnzY,YAAY80Y,GAC/BlojC,IACT,EAIA+jjC,EAAWrkjC,UAAUyojC,SAAW,SAAUr8C,EAAMpq8B,EAAI41K,GAG9C,GAAkBw0xB,KACpBx0xB,EAAM51K,EACNA,EAAKoq8B,EACLA,EAAO,IAITx0xB,EAAMA,GAAOt3O,KACb,IAAIwjB,EAAS,GAIb,OAHAxjB,KAAKgixB,KAAK8pP,GAAM,WACdto/B,EAAO3hB,KAAK6/D,GAAMA,EAAGnhE,MAAMP,KAAMI,WACnC,GAAGk3O,GACI9zN,CACT,EAEAugiC,EAAWrkjC,UAAU2vB,IAAM,SAAUy8+B,EAAMpq8B,EAAI41K,EAAK8w0B,GAGlD,IAAIL,EAAOzw0B,GAAO8w0B,GAAapojC,KAC3BgojC,EAAa,GAAIvE,GAAoB33C,GAAO9rgC,KAAKgmjC,kBAAmBhmjC,MACpEm2E,EAAOwt+B,GAAyB3jjC,MAEpC,OADAm2E,EAAKow+B,OAASvmjC,KAAKumjC,OAAOl3hC,IAAI24hC,EAAYD,EAAO,GAAYrm/B,EAAIqm/B,GAAQrm/B,GAClEyU,CACT,EAEA4t+B,EAAWrkjC,UAAUynY,OAAS,SAAU2koB,EAAMpq8B,EAAI41K,EAAK8w0B,GACrD,IAGIL,EAAOzw0B,GAAO8w0B,GAAapojC,KAY3BgojC,EAAa,GAAIvE,GAAoB33C,GAAO9rgC,KAAKgmjC,kBAAmBhmjC,MAKxEA,KAAKumjC,OAAOp/qB,OAAO6grB,EAAYD,EAAO,GAAYrm/B,EAAIqm/B,GAAQrm/B,EAChE,EAOAqi/B,EAAWrkjC,UAAUy+gC,WAAa,SAAU7q2B,EAAWo4I,EAAM0ytB,EAAaC,GACxE,IAAIlo8B,EAAOwt+B,GAAyB3jjC,MAEpC,OADAm2E,EAAKow+B,OAASvmjC,KAAKumjC,OAAOpoC,WAAWn+gC,KAAKgmjC,kBAAkB1y4B,GAAYo4I,EAAM0ytB,EAAaC,GACpFlo8B,CACT,EAQA4t+B,EAAWrkjC,UAAUw9gC,eAAiB,SAAUC,EAAgBzxtB,GAC9D,IAAIv1O,EAAOwt+B,GAAyB3jjC,MAEpC,OADAm2E,EAAKow+B,OAASvmjC,KAAKumjC,OAAOrpC,eAAel9gC,KAAKgmjC,kBAAkB7oC,GAAiBzxtB,GAC1Ev1O,CACT,EAEA4t+B,EAAWrkjC,UAAUmwgC,eAAiB,SAAU/0pB,GAC9C,OAAO96W,KAAKumjC,OAAO12C,eAAe/0pB,EACpC,EAOAipsB,EAAWrkjC,UAAUmxgC,aAAe,SAAU/1pB,GAC5C,IAAImpsB,EAAYjkjC,KAAKikjC,UACjB/zZ,EAAWlwpB,KAAK6vgC,eAAe/0pB,GACnC,OAAO,IAAI,GAAMo1S,EAAU+zZ,EAAWA,GAAaA,EAAU3gF,QAC/D,EAMAygF,EAAWrkjC,UAAU6oiB,KAAO,SAAU8/gB,GACpC,IAAIC,EAAWtojC,KACf,OAAO,IAAI,GAAWqojC,EAAYA,EAAUv4C,WAAWoM,aAAe,GAAIl8gC,KAAK8vgC,WAAWoM,cAAc,SAAUphqB,GAChH,OAAO24H,GAAM40kB,EAAWvtsB,EAC1B,IAAG,SAAUA,GACX,OAAO24H,GAAM60kB,EAAUxtsB,EACzB,GACF,EAMAipsB,EAAWrkjC,UAAUo8hC,UAAY,SAAUj3gC,GACzC,IAAIk8E,EAAS/gG,KAAKokjC,QAClB,OAAOrj9B,GAAUA,EAAOl8E,EAC1B,EAEAk/hC,EAAWrkjC,UAAU27hC,UAAY,SAAUktB,EAAO7q4B,GAChD19K,KAAKokjC,QAAUpkjC,KAAKokjC,SAAW,CAAC,EAE5B,GAASmE,GACX,EAAcvojC,KAAKokjC,QAASmE,GAE5BvojC,KAAKokjC,QAAQmE,GAAS7q4B,CAE1B,EAOAqm4B,EAAWrkjC,UAAU6wgC,cAAgB,SAAUz1pB,EAAKj2V,GAClD,IAAI2jiC,EAAaxojC,KAAKskjC,aAAaxpsB,GAC/Bp9L,EAAM8q4B,GAAcA,EAAW3jiC,GAEnC,OAAW,MAAP64J,EAEK19K,KAAK87hC,UAAUj3gC,GAGjB64J,CACT,EAMAqm4B,EAAWrkjC,UAAUq9iC,cAAgB,WACnC,OAAO/8iC,KAAKskjC,aAAajkjC,OAAS,CACpC,EAOA0jjC,EAAWrkjC,UAAUq8hC,uBAAyB,SAAUjhrB,EAAKj2V,GAC3D,IAAI4jiC,EAAczojC,KAAKskjC,aACnBkE,EAAaC,EAAY3tsB,GAExB0tsB,IACHA,EAAaC,EAAY3tsB,GAAO,CAAC,GAGnC,IAAIp9L,EAAM8q4B,EAAW3jiC,GAcrB,OAZW,MAAP64J,IAGE,GAFJA,EAAM19K,KAAK87hC,UAAUj3gC,IAGnB64J,EAAMA,EAAI37K,QACD,GAAS27K,KAClBA,EAAM,EAAc,CAAC,EAAGA,IAG1B8q4B,EAAW3jiC,GAAO64J,GAGbA,CACT,EAGAqm4B,EAAWrkjC,UAAUi8hC,cAAgB,SAAU7grB,EAAKj2V,EAAK1jB,GACvD,IAAIqnjC,EAAaxojC,KAAKskjC,aAAaxpsB,IAAQ,CAAC,EAC5C96W,KAAKskjC,aAAaxpsB,GAAO0tsB,EAErB,GAAS3jiC,GACX,EAAc2jiC,EAAY3jiC,GAE1B2jiC,EAAW3jiC,GAAO1jB,CAEtB,EAMA4ijC,EAAWrkjC,UAAU2giC,eAAiB,WACpCrgiC,KAAKokjC,QAAU,CAAC,EAChBpkjC,KAAKskjC,aAAe,EACtB,EAEAP,EAAWrkjC,UAAUgpjC,UAAY,SAAU7jiC,EAAK64J,GAC9C,GAAS74J,GAAO,EAAc7kB,KAAKqkjC,QAASx/hC,GAAO7kB,KAAKqkjC,QAAQx/hC,GAAO64J,CACzE,EAMAqm4B,EAAWrkjC,UAAUipjC,UAAY,SAAU9jiC,GACzC,OAAO7kB,KAAKqkjC,QAAQx/hC,EACtB,EAMAk/hC,EAAWrkjC,UAAUkpjC,cAAgB,SAAU9tsB,GAC7C,OAAO96W,KAAKukjC,aAAazpsB,EAC3B,EAMAipsB,EAAWrkjC,UAAUmpjC,cAAgB,SAAU/tsB,EAAK55O,EAAQ4/H,GAC1D9gQ,KAAKukjC,aAAazpsB,GAAOh6G,EAAQ,EAAc9gQ,KAAKukjC,aAAazpsB,IAAQ,CAAC,EAAG55O,GAAUA,CACzF,EAMA6i7B,EAAWrkjC,UAAUopjC,iBAAmB,WACtC9ojC,KAAKukjC,aAAalkjC,OAAS,CAC7B,EAMA0jjC,EAAWrkjC,UAAUqpjC,iBAAmB,SAAUjusB,EAAKjhO,GACrD,IAAIqj2B,EAAcl9+B,KAAKikjC,WAAajkjC,KAAKikjC,UAAU/mE,YACnDD,GAAgBC,EAAal9+B,KAAKgvQ,SAAU8rG,EAAKjhO,GACjD75I,KAAKwkjC,YAAY1psB,GAAOjhO,CAC1B,EAEAkq6B,EAAWrkjC,UAAUgj/B,iBAAmB,SAAU5noB,GAChD,OAAO96W,KAAKwkjC,YAAY1psB,EAC1B,EAEAipsB,EAAWrkjC,UAAUmk/B,kBAAoB,SAAUni7B,EAAIv0B,GACrD,EAAYntC,KAAKwkjC,aAAa,SAAU3q6B,EAAIihO,GACtCjhO,GACFn4E,GAAMA,EAAG9hE,KAAKutC,EAAS0sG,EAAIihO,EAE/B,GACF,EAOAipsB,EAAWrkjC,UAAUmrhC,aAAe,SAAU108B,GAO5C,OANKA,IACHA,EAAO,IAAI4t+B,EAAW/jjC,KAAKihjC,QAAUjhjC,KAAKihjC,QAAU,GAAIjhjC,KAAK04J,WAAY14J,KAAK+ljC,YAAa/ljC,MAAOA,KAAKikjC,YAGzGP,GAAmBvt+B,EAAMn2E,MACzBm2E,EAAKow+B,OAASvmjC,KAAKumjC,OACZpw+B,CACT,EAMA4t+B,EAAWrkjC,UAAUurhC,WAAa,SAAUx28B,EAAYu0+B,GACtD,IAAI19/B,EAAiBtrD,KAAKy0E,GAErB,GAAkBnpB,KAIvBtrD,KAAKipjC,iBAAmBjpjC,KAAKipjC,kBAAoB,GAEjDjpjC,KAAKipjC,iBAAiBpnjC,KAAK4yE,GAE3Bz0E,KAAKy0E,GAAc,WACjB,IAAI4wE,EAAM/5F,EAAe/qD,MAAMP,KAAMI,WACrC,OAAO4ojC,EAAezojC,MAAMP,KAAM,CAACqlJ,GAAKrjJ,OAAO,GAAa5B,YAC9D,EACF,EAKA2jjC,EAAW1gD,eACTkgD,GAAuB,SAAU/ziC,GAC/B,IAAIs1iC,EAAqBt1iC,EAAKk2iC,oBAC9B,EAAYZ,GAAoB,SAAUoE,EAAiBvxtB,GACzD,IAAI6+qB,EAAUhngC,EAAKg2iC,UAAU7ttB,GAEzB2irB,EAAc9D,EAAQ8D,YACtBvr0B,EAAQv/L,EAAK+2iC,OAEjB,GAAIjsC,EAAa,CACf4uC,EAAkBpE,EAAmBnttB,GAAO,IAAI,GAAe2irB,EAAYtxJ,WAAW3o3B,QAGtF,IAAK,IAAIO,EAAI,EAAGA,EAAIsojC,EAAgB7ojC,OAAQO,IAC1CsojC,EAAgBtojC,IArhCN,EAwhCZ,IAASA,EAAI,EAAGA,EAAImuM,EAAMxlJ,QAAS3oD,IAEjCsojC,EAAgBn62B,EAAM5rM,IAAIqzgC,EAAQosC,cAAehijC,IAAMA,CAE3D,CACF,GACF,EAEA4ijC,GAAqB,SAAUh0iC,EAAMopgC,EAAQ99pB,GAC3C,OAAO4nnB,GAAoBlz9B,EAAKs4iC,aAAalvC,EAAQ99pB,GAAM,KAC7D,EAMA24H,GAAQ,SAAUjke,EAAMosgC,GACtB,IAAIrw/B,EAAK/b,EAAK20iC,QAAQvoC,GAUtB,OARU,MAANrw/B,GAAgC,MAAlB/b,EAAK+1iC,YACrBh6hC,EAAKi4hC,GAAmBh0iC,EAAMA,EAAK+1iC,UAAW3pC,IAGtC,MAANrw/B,IACFA,EAjjCQ,QAijCSqw/B,GAGZrw/B,CACT,EAEAk4hC,GAAsB,SAAU/q5B,GAK9B,OAJK,GAAeA,KAClBA,EAA2B,MAAdA,EAAqB,CAACA,GAAc,IAG5CA,CACT,EAMAir5B,GAA2B,SAAU/qgC,GACnC,IAAIu9B,EAAO,IAAI4t+B,EAAWnrgC,EAASqogC,QAAUrogC,EAASqogC,QAAU,GAAIrogC,EAAS8/G,WAAY9/G,EAASmtgC,YAAantgC,GAAWA,EAASqrgC,WAGnI,OADAP,GAAmBvt+B,EAAMv9B,GAClBu9B,CACT,EAEAut+B,GAAqB,SAAU5ziC,EAAQjI,GACrC,EAAYg8iC,GAAwB7hjC,OAAO6F,EAAOohjC,kBAAoB,KAAK,SAAU195B,GAC/E1jJ,EAAOlI,eAAe4rJ,KACxBz7I,EAAOy7I,GAAY1jJ,EAAO0jJ,GAE9B,IACAz7I,EAAOm5iC,iBAAmBphjC,EAAOohjC,iBACjC,EAAYnF,IAAkB,SAAUv45B,GACtCz7I,EAAOy7I,GAAY,EAAa1jJ,EAAO0jJ,GACzC,IACAz7I,EAAO40iC,iBAAmB,EAAc,CAAC,EAAG78iC,EAAO68iC,iBACrD,OAEAd,GAAiB,SAAUp0iC,EAAMsrW,GAC/B,IAAI0rsB,EAAWh3iC,EAAK00iC,UAChBwD,EAASl4iC,EAAK20iC,QACdgF,EAAa35iC,EAAK81iC,YAClB8D,EAAW55iC,EAAK+1iC,UAChB76iC,EAAO87iC,EAAS1rsB,GAChBvvV,EAAKm8hC,EAAO5ssB,GAUhB,GARY,MAARpwW,GAA8B,MAAdy+iC,IAClB3C,EAAS1rsB,GAAOpwW,EAAO84iC,GAAmBh0iC,EAAM25iC,EAAYrusB,IAGpD,MAANvvV,GAA0B,MAAZ69hC,IAChB1B,EAAO5ssB,GAAOvvV,EAAKi4hC,GAAmBh0iC,EAAM45iC,EAAUtusB,IAG9C,MAANvvV,GAAsB,MAAR7gB,EAAc,CAC9B,IAAI2+iC,EAAkB75iC,EAAKi3iC,iBACvB6C,EAAQD,EAAgB3+iC,IAAS2+iC,EAAgB3+iC,IAAS,GAAK,EACnE6gB,EAAK7gB,EAED4+iC,EAAQ,IACV/9hC,GAAM,SAAW+9hC,GAGnB5B,EAAO5ssB,GAAOvvV,CAChB,CACF,IAGKw4hC,CACT,CApmCA,GAsmCA,YC/nCO,SAASwF,GAAiB1hjC,EAAQu4hB,GACvC,OAAOophB,GAAwB3hjC,EAAQu4hB,GAAK1nY,UAC9C,CAce,SAAS8w5B,GACxB3hjC,EAAQu4hB,GACD6se,GAAiBplgC,KACpBA,EAASgmgC,GAAiChmgC,IAI5C,IAAI4hjC,GADJrphB,EAAMA,GAAO,CAAC,GACI25d,iBAAmB,GACjCoB,EAAU/6d,EAAIs7d,kBAAoB7z/B,EAAO6z/B,kBAAoB,GAC7DguD,EAAkBx+G,KAClBlqE,EAAa,GACbw6H,EA4PN,SAAqB3z/B,EAAQ4hjC,EAAStuD,EAASwuD,GAG7C,IAAInuD,EAAW34/B,KAAK8K,IAAI9F,EAAOklgC,yBAA2B,EAAG08C,EAAQppjC,OAAQ86/B,EAAQ96/B,OAAQspjC,GAAe,GAQ5G,OAPA,EAAKF,GAAS,SAAUG,GACtB,IAAIC,EAEA,GAASD,KAAgBC,EAAoBD,EAAWzuD,WAC1DK,EAAW34/B,KAAK8K,IAAI6t/B,EAAUquD,EAAkBxpjC,QAEpD,IACOm7/B,CACT,CAxQiBsuD,CAAYjijC,EAAQ4hjC,EAAStuD,EAAS/6d,EAAI2phB,iBAGrDC,EAAuB5phB,EAAI6phB,yBAA2B1H,GAA2B/mD,GACjF0uD,EAA6B/uD,IAAYtz/B,EAAO6z/B,iBAChDwnD,EAAiBgH,EAA6BhI,GAAuBr6iC,GAAUo7iC,GAAiB9nD,GAChGgvD,EAAY/phB,EAAIgqhB,cAEfD,GAAa/phB,EAAIiqhB,kBACpBF,EAAY/phB,EAAIiqhB,gBAAgBxijC,EAAQ2z/B,IAM1C,IAHA,IAAI8uD,EAAep/G,GAAci/G,GAC7BI,EAAa,IAAIjyC,GAAe9c,GAE3B56/B,EAAI,EAAGA,EAAI2pjC,EAAWlqjC,OAAQO,IACrC2pjC,EAAW3pjC,IAAM,EAGnB,SAAS4pjC,EAAc5xC,GACrB,IAAI99pB,EAAMyvsB,EAAW3xC,GAErB,GAAI99pB,EAAM,EAAG,CACX,IAAIqosB,EAAgBhoD,EAAQyd,GACxBrc,EAAa,GAAS4mD,GAAiBA,EAAgB,CACzDz4iC,KAAMy4iC,GAEJhhF,EAAa,IAAI,GACjBihF,EAAc7mD,EAAW7x/B,KAEV,MAAf04iC,GAA0D,MAAnCF,EAAe//iC,IAAIigjC,KAI5CjhF,EAAWz39B,KAAOy39B,EAAW/5zB,YAAcg74B,GAG1B,MAAnB7mD,EAAWhw/B,OAAiB419B,EAAW519B,KAAOgw/B,EAAWhw/B,MAC/B,MAA1Bgw/B,EAAWn01B,cAAwB+5zB,EAAW/5zB,YAAcm01B,EAAWn01B,aACvE,IAAI+34B,EAASn/K,EAAW3g4B,OAIxB,OAHAkqjC,EAAW3xC,GAAUunC,EACrBh+E,EAAWygF,cAAgBhqC,EAC3B53I,EAAWn/3B,KAAKsg+B,GACTA,CACT,CAEA,OAAOnhG,EAAWlmhB,EACpB,CAEA,IAAKkvsB,EACH,IAASppjC,EAAI,EAAGA,EAAI46/B,EAAU56/B,IAC5B4pjC,EAAc5pjC,GAKlB0pjC,EAAatoS,MAAK,SAAUyoS,EAAaphC,GACvC,IAAIoB,EAAWhqD,GAAiBgqF,GAAa1ojC,QAI7C,GAAwB,IAApB0ohC,EAASpqhC,SAAiB26D,GAASyv9B,EAAS,KAAOA,EAAS,GAAK,EACnE6/B,EAAar+iC,IAAIo9gC,GAAU,OAD7B,CAKA,IAAIqhC,EAAgBJ,EAAar+iC,IAAIo9gC,EAAU,IAC/C,EAAKoB,GAAU,SAAUkgC,EAAoB7vsB,GAE3C,IAAI8vsB,EAAe5v/B,GAAS2v/B,GAAsBzH,EAAe//iC,IAAIwnjC,GAAsBA,EAEvE,MAAhBC,GAAwBA,EAAepvD,IACzCkvD,EAAc5vsB,GAAO8vsB,EACrBC,EAASL,EAAcI,GAAevhC,EAAUvuqB,GAEpD,GAXA,CAYF,IAEA,IAAIgwsB,EAAc,EAiElB,SAASD,EAAS1oF,EAAYknD,EAAU+7B,GACC,MAAnClsD,GAAkB/1/B,IAAIkmhC,GACxBlnD,EAAWolD,UAAU8B,GAAY+7B,GAEjCjjF,EAAWknD,SAAWA,EACtBlnD,EAAWijF,cAAgBA,EAC3BsE,EAAgBz9iC,IAAIo9gC,GAAU,GAElC,CAxEA,EAAKogC,GAAS,SAAUsB,GACtB,IAAI1hC,EACAwgC,EACAmB,EACApB,EAEJ,GAAI5u/B,GAAS+v/B,GACX1hC,EAAW0hC,EACXnB,EAAa,CAAC,MACT,CAELvgC,GADAugC,EAAamB,GACSrgjC,KACtB,IAAI4vgC,EAAcsvC,EAAWtvC,YAC7BsvC,EAAWtvC,YAAc,MACzBsvC,EAAavgqB,EAAO,CAAC,EAAGugqB,IACbtvC,YAAcA,EAEzBuvC,EAAoBD,EAAWzuD,QAC/B6vD,EAAsBpB,EAAWriC,UACjCqiC,EAAWl/iC,KAAOk/iC,EAAWvgC,SAAWugC,EAAWxE,cAAgBwE,EAAWzuD,QAAUyuD,EAAWriC,UAAY,IACjH,CAEA,IAAIkD,EAAW6/B,EAAannjC,IAAIkmhC,GAEhC,IAAiB,IAAboB,EAAJ,CAMA,KAFAA,EAAWhqD,GAAiBgqD,IAEdpqhC,OACZ,IAAK,IAAIO,EAAI,EAAGA,GAAKipjC,GAAqBA,EAAkBxpjC,QAAU,GAAIO,IAAK,CAC7E,KAAOkqjC,EAActvD,GAAmD,MAAvCgvD,EAAcM,GAAazhC,UAC1DyhC,IAGFA,EAActvD,GAAYivB,EAAS5ohC,KAAKipjC,IAC1C,CAIF,EAAKrgC,GAAU,SAAUmgC,EAAcxF,GACrC,IAAIjjF,EAAaqoF,EAAcI,GAQ/B,GANIV,GAAiD,MAAnBN,EAAWr9iC,OAC3C419B,EAAW519B,KAAOq9iC,EAAWr9iC,MAG/Bs+iC,EAAS,EAAS1oF,EAAYynF,GAAavgC,EAAU+7B,GAE9B,MAAnBjjF,EAAWz39B,MAAgBm/iC,EAAmB,CAChD,IAAIoB,EAAwBpB,EAAkBzE,IAC7C,GAAS6F,KAA2BA,EAAwB,CAC3DvgjC,KAAMugjC,IAER9oF,EAAWz39B,KAAOy39B,EAAW/5zB,YAAc6i5B,EAAsBvgjC,KACjEy39B,EAAW8kF,eAAiBgE,EAAsBhE,cACpD,CAGA+D,GAAuB,EAAS7oF,EAAWolD,UAAWyjC,EACxD,GAnCA,CAoCF,IAaA,IAAIE,EAAgB9qhB,EAAI8qhB,cACpBC,EAAqB/qhB,EAAI+qhB,mBACzBC,EAAiC,MAAtBD,EACfA,EAAqBD,EAAgBC,GAAsB,EAAI,EAC/D,IAAI5y4B,EAAQ2y4B,GAAiB,QAE7B,SAASG,EAA0BlpF,GACV,MAAnBA,EAAWz39B,OAEby39B,EAAWz39B,KAAOy39B,EAAWknD,SAEjC,CAGA,GAAK2gC,EAoCH,EAAKhpL,GAAY,SAAUmhG,GAEzBkpF,EAA0BlpF,EAC5B,IAGAnhG,EAAWz01B,MAAK,SAAU++gC,EAAOC,GAC/B,OAAOD,EAAM1I,cAAgB2I,EAAM3I,aACrC,SA3CA,IAAK,IAAIgI,EAAe,EAAGA,EAAepvD,EAAUovD,IAAgB,CAClE,IAAIzoF,EAAaqoF,EAAcI,GAGf,MAFDzoF,EAAWknD,WAIxBlnD,EAAWknD,SAAWmiC,GAAgBjz4B,EAAOmx4B,EAAiB0B,GAC9DjpF,EAAWijF,cAAgB,IAEtB8F,GAAiBC,GAAsB,KAC1ChpF,EAAW6kF,cAAe,GAG5BmE,KAGFE,EAA0BlpF,GAEH,MAAnBA,EAAW519B,MAAiB4v/B,GAAat0/B,EAAQ+ijC,KAAkBnxD,GAAWC,QAY/Ev3B,EAAW6kF,cAAkD,MAAjC7kF,EAAWolD,UAAUlsB,UAAuD,MAAnCl5B,EAAWolD,UAAUjsB,cAC3Fn5B,EAAW519B,KAAO,UAEtB,CAcF,OAQF,SAA2BiX,GAGzB,IAFA,IAAIioiC,EAAiBvgH,KAEZtq8B,EAAI,EAAGA,EAAI4iB,EAAOnjB,OAAQO,IAAK,CACtC,IAAI+2V,EAAMn0U,EAAO5iB,GACb8qjC,EAAkB/ztB,EAAIjtV,KACtB6+C,EAAQkigC,EAAetojC,IAAIuojC,IAAoB,EAE/CnigC,EAAQ,IAEVouS,EAAIjtV,KAAOghjC,GAAmBnigC,EAAQ,IAGxCA,IACAkigC,EAAex/iC,IAAIy/iC,EAAiBnigC,EACtC,CACF,CAzBEoigC,CAAkB3qL,GACX,IAAI0gL,GAAiB,CAC1B75iC,OAAQA,EACR6wJ,WAAYsouB,EACZ8gL,mBAAoBtmD,EACpBomD,iBAAkBoI,GAEtB,CA4CA,SAASwB,GAAgB9gjC,EAAM2kB,EAAK+7hC,GAClC,GAAIA,GAAY/7hC,EAAI021B,OAAOr72B,GAAO,CAGhC,IAFA,IAAI9J,EAAI,EAEDyuB,EAAI021B,OAAOr72B,EAAO9J,IACvBA,IAGF8J,GAAQ9J,CACV,CAGA,OADAyuB,EAAIpjB,IAAIvB,GAAM,GACPA,CACT,CC/RA,IAAIkhjC,GAGF,SAAsBC,GACpB7rjC,KAAK8rjC,aAAe,GACpB9rjC,KAAK+rjC,QAAU7gH,KACflr8B,KAAKgsjC,gBAAkB9gH,KACvBlr8B,KAAK6rjC,aAAeA,CACtB,EAeEI,GAAW,CACbC,YAAa,SAAUlpE,EAAax/9B,EAAQuoiC,EAASC,GACnD,IAAIG,EAAanpE,EAAY4S,uBAAuB,QAASrxB,IAAkB1z0B,OAAO,GAClFu75B,EAAappE,EAAY4S,uBAAuB,QAASrxB,IAAkB1z0B,OAAO,GAYtFrtI,EAAOsoiC,aAAe,CAAC,IAAK,KAC5BC,EAAQ9/iC,IAAI,IAAKkgjC,GACjBJ,EAAQ9/iC,IAAI,IAAKmgjC,GAEbC,GAAWF,KACbH,EAAgB//iC,IAAI,IAAKkgjC,GACzB3oiC,EAAO8oiC,sBAAwB,GAG7BD,GAAWD,KACbJ,EAAgB//iC,IAAI,IAAKmgjC,GACO,MAAhC5oiC,EAAO8oiC,wBAAkC9oiC,EAAO8oiC,sBAAwB,GAE5E,EACAC,WAAY,SAAUvpE,EAAax/9B,EAAQuoiC,EAASC,GAClD,IAAIQ,EAAkBxpE,EAAY4S,uBAAuB,aAAcrxB,IAAkB1z0B,OAAO,GAQhGrtI,EAAOsoiC,aAAe,CAAC,UACvBC,EAAQ9/iC,IAAI,SAAUugjC,GAElBH,GAAWG,KACbR,EAAgB//iC,IAAI,SAAUugjC,GAC9BhpiC,EAAO8oiC,sBAAwB,EAEnC,EACA5uO,MAAO,SAAUslK,EAAax/9B,EAAQuoiC,EAASC,GAC7C,IAAIS,EAAazpE,EAAY4S,uBAAuB,QAASrxB,IAAkB1z0B,OAAO,GAClF675B,EAAkBD,EAAWE,cAAc,cAC3CC,EAAiBH,EAAWE,cAAc,aAY9CnpiC,EAAOsoiC,aAAe,CAAC,SAAU,SACjCC,EAAQ9/iC,IAAI,SAAUygjC,GACtBX,EAAQ9/iC,IAAI,QAAS2gjC,GAEjBP,GAAWK,KACbV,EAAgB//iC,IAAI,SAAUygjC,GAC9BlpiC,EAAO8oiC,sBAAwB,GAG7BD,GAAWO,KACbZ,EAAgB//iC,IAAI,QAAS2gjC,GACG,MAAhCppiC,EAAO8oiC,wBAAkC9oiC,EAAO8oiC,sBAAwB,GAE5E,EACAliD,IAAK,SAAUpnB,EAAax/9B,EAAQuoiC,EAASC,GAC3CxoiC,EAAOsoiC,aAAe,CAAC,MAAO,MAChC,EACA5jR,SAAU,SAAU86M,EAAax/9B,EAAQuoiC,EAASC,GAChD,IAAI1oF,EAAU0f,EAAY1f,QACtBupF,EAAgBvpF,EAAQnpoB,aAAa,WAAY6opB,EAAY7/+B,IAAI,kBACjE2ojC,EAAetoiC,EAAOsoiC,aAAee,EAAcn05B,WAAW32J,QAClE,EAAK8qjC,EAAcC,mBAAmB,SAAUC,EAAW/viC,GACzD,IAAIgwiC,EAAY1pF,EAAQnpoB,aAAa,eAAgB4ytB,GACjDE,EAAUnB,EAAa9uiC,GAC3B+uiC,EAAQ9/iC,IAAIghjC,EAASD,GAEjBX,GAAWW,KACbhB,EAAgB//iC,IAAIghjC,EAASD,GAEO,MAAhCxpiC,EAAO8oiC,wBACT9oiC,EAAO8oiC,sBAAwBtviC,GAGrC,GACF,GAGF,SAASqviC,GAAWW,GAClB,MAAiC,aAA1BA,EAAU7pjC,IAAI,OACvB,CCnIO,SAAS+pjC,GAAgBlqE,EAAaghE,EAAiB5jhB,GAE5D,IAEI+shB,EACA9zyB,EACAtqE,EAJAq+2B,GADJhthB,EAAMA,GAAO,CAAC,GACIgthB,QACdC,EAAwBjthB,EAAIithB,uBA+GlC,SAAiCrJ,GAC/B,OAAQhB,GAAmBgB,EAAgB3qyB,OAC7C,CA5GMi0yB,CAAwBtJ,IAG1B3qyB,EAAS2qyB,EAAgB3qyB,OACzB8zyB,EAAsB9zyB,EAAO3gH,WAC7Bq2C,EAAQi12B,EAAgBj12B,OAJxBo+2B,EAAsBnJ,EAQxB,IACIuJ,EACAC,EACAzhD,EACAC,EAJAyhD,KAAczqE,IAAeA,EAAY7/+B,IAAI,UAkCjD,GA7BA,EAAKgqjC,GAAqB,SAAUjI,EAAeloiC,GAC7Cg+C,GAASkq/B,KACXiI,EAAoBnwiC,GAASkoiC,EAAgB,CAC3Cx6iC,KAAMw6iC,IAINuI,IAAavI,EAAc8B,eAExBoG,GAAYG,IAAoBrI,EAAc5qC,cACjDizC,EAAmBrI,GAIhBsI,GAAyC,YAAvBtI,EAAc34iC,MAA6C,SAAvB24iC,EAAc34iC,MAAqB8gjC,GAAyBA,IAA0BnI,EAAc77B,WAC7JmkC,EAAiBtI,GAGvB,KAEIsI,GAAmBJ,GAAYG,IAGjCH,GAAU,GAMRI,EAAgB,CAIlBzhD,EAAuB,qBAAuB/oB,EAAYz39B,GAC1Dyg/B,EAAuB,qBAAuBhpB,EAAYz39B,GAEtDgiiC,IACFA,EAAiBlI,uBAAwB,GAG3C,IAAIqI,EAAuBF,EAAenkC,SACtCskC,EAAiBH,EAAejhjC,KAChCqhjC,EAAyB,EAC7B,EAAKT,GAAqB,SAAUjI,GAC9BA,EAAc77B,WAAaqkC,GAC7BE,GAEJ,IACA,IAAIC,EAA6B,CAC/BnjjC,KAAMqhgC,EACNsd,SAAUqkC,EACVtI,cAAewI,EACfrhjC,KAAMohjC,EACN3G,cAAc,EACdlE,oBAAoB,EACpBF,cAAeuK,EAAoB9sjC,QAEjCytjC,EAA6B,CAC/BpjjC,KAAMshgC,EAGNqd,SAAUrd,EACVo5C,cAAewI,EAAyB,EACxCrhjC,KAAMohjC,EACN3G,cAAc,EACdlE,oBAAoB,EACpBF,cAAeuK,EAAoB9sjC,OAAS,GAG1Cg5Q,GACEtqE,IACF8+2B,EAA2BjL,cAAgB7z2B,EAAMmr0B,2BAA2BlO,EAAsB2hD,GAClGG,EAA2BlL,cAAgB7z2B,EAAMmr0B,2BAA2BnO,EAAsB4hD,IAGpGt0yB,EAAO0pyB,2BAA2B8K,GAClCx0yB,EAAO0pyB,2BAA2B+K,KAElCX,EAAoBtrjC,KAAKgsjC,GACzBV,EAAoBtrjC,KAAKisjC,GAE7B,CAEA,MAAO,CACLzhD,iBAAkBmhD,GAAkBA,EAAe9ijC,KACnD6hgC,mBAAoBghD,GAAoBA,EAAiB7ijC,KACzDuhgC,iBAAkBmhD,EAClBphD,qBAAsBA,EACtBD,qBAAsBA,EAE1B,CAMO,SAASgiD,GAAmBv+iC,EAAMw+iC,GAGvC,QAASA,GAAcA,IAAex+iC,EAAKytiC,mBAAmB,mBAChE,CACO,SAASgR,GAAoBz+iC,EAAM0+iC,GACxC,OAAOH,GAAmBv+iC,EAAM0+iC,GAAa1+iC,EAAKytiC,mBAAmB,wBAA0BiR,CACjG,CCTA,SA9DA,SAA0BC,EAAWnrE,EAAa5id,GAChDA,EAAMA,GAAO,CAAC,EACd,IACIv4hB,EADAqghC,EAAgBllC,EAAYg/B,mBAE5BosC,GAAmB,EAEnBD,GACFC,GAAmB,EACnBvmjC,EAASgmgC,GAAiCsgD,IAI1CC,GAFAvmjC,EAASqghC,EAAcz8rB,aAEG5L,eAAiB,GAG7C,IAAIwuuB,EFhDC,SAAiCrrE,GACtC,IAAI6oE,EAAe7oE,EAAY7/+B,IAAI,oBAC/BqgB,EAAS,IAAIooiC,GAAaC,GAC1BthgC,EAAQ0hgC,GAASJ,GAErB,GAAIthgC,EAEF,OADAA,EAAMy47B,EAAax/9B,EAAQA,EAAOuoiC,QAASvoiC,EAAOwoiC,iBAC3CxoiC,CAEX,CEuCqB8qiC,CAAwBtrE,GACvCurE,EAjFN,SAA4BvrE,EAAaqrE,GACvC,IAEIE,EAFA1C,EAAe7oE,EAAY7/+B,IAAI,oBAC/BqrjC,EAAqBnc,GAAiBlviC,IAAI0ojC,GAwB9C,OArBIwC,GAAgBA,EAAavC,eAC/ByC,EAAkB,EAAWF,EAAavC,cAAc,SAAUn0tB,GAChE,IAAI6+qB,EAAU,CACZ9rgC,KAAMitV,GAEJq1tB,EAAYqB,EAAatC,QAAQ5ojC,IAAIw0V,GAEzC,GAAIq1tB,EAAW,CACb,IAAIzlO,EAAWylO,EAAU7pjC,IAAI,QAC7BqzgC,EAAQjqgC,KAAO+0iC,GAAuB/5N,EACxC,CAEA,OAAOivL,CACT,KAGG+3C,IAEHA,EAAkBC,IAAuBA,EAAmB1S,kBAAoB0S,EAAmB1S,oBAAsB0S,EAAmB915B,WAAW32J,UAAY,CAAC,IAAK,MAGpKwsjC,CACT,CAsDwBE,CAAmBzrE,EAAaqrE,GAClDK,EAAqBtuhB,EAAIsuhB,mBACzBrE,EAAkB,GAAkBqE,GAAsBA,EAAqBA,EAAqB,GAAa50D,GAAiCy0D,EAAiBvrE,GAAe,KAQlL3puB,EAASmwyB,GAAwB3hjC,EAPR,CAC3Bky/B,gBAAiBw0D,EACjBrD,cAAe9qhB,EAAI8qhB,cACnBd,aAAcpnE,EAAY+lC,YAC1BshC,gBAAiBA,EACjBJ,yBAA0BmE,IAGxB9B,EA/DN,SAA2BqC,EAAatJ,EAAuBgJ,GAC7D,IAAI/B,EACAsC,EA0BJ,OAzBAP,GAAgB,EAAYM,GAAa,SAAUn4C,EAASpa,GAC1D,IAAIitB,EAAW7S,EAAQ6S,SACnBwlC,EAAoBR,EAAarC,gBAAgB7ojC,IAAIkmhC,GAErDwlC,IAC2B,MAAzBvC,IACFA,EAAwBlwD,GAG1Boa,EAAQ8D,YAAcu0C,EAAkBl0C,iBAEpC0qC,IACF7uC,EAAQ6uC,uBAAwB,IAIF,MAA9B7uC,EAAQ+Q,UAAUlsB,WACpBuzD,GAAgB,EAEpB,IAEKA,GAA0C,MAAzBtC,IACpBqC,EAAYrC,GAAuB/kC,UAAUlsB,SAAW,GAGnDixD,CACT,CAkC8BwC,CAAkBz1yB,EAAO3gH,WAAY0nY,EAAIilhB,sBAAuBgJ,GACxFt/2B,EAASq/2B,EAA8D,KAA3ClmC,EAAc5G,mBAAmBjowB,GAC7D01yB,EAAuB7B,GAAgBlqE,EAAa,CACtD3puB,OAAQA,EACRtqE,MAAOA,IAELv/L,EAAO,IAAI,GAAW6pQ,EAAQ2puB,GAClCxz+B,EAAK0tiC,mBAAmB6R,GACxB,IAAIv1C,EAA0C,MAAzB8yC,GAUvB,SAAmCzkjC,GACjC,GAAIA,EAAOg4U,eAAiB,GAAwB,CAClD,IAAImvuB,EAKR,SAA0Bvw1B,GAGxB,IAFA,IAAI79N,EAAI,EAEDA,EAAI69N,EAAIp+N,QAAoB,MAAVo+N,EAAI79N,IAC3BA,IAGF,OAAO69N,EAAI79N,EACb,CAbqBqujC,CAAiBpnjC,EAAO2H,MAAQ,IACjD,OAAQ,GAAeux9B,GAAiBiuF,GAC1C,CACF,CAfwDE,CAA0BrnjC,GAAU,SAAUyogC,EAASjU,EAASh31B,EAAW+21B,GAE/H,OAAOA,IAAakwD,EAAwBjn5B,EAAYrlK,KAAK65gC,sBAAsBvJ,EAASjU,EAASh31B,EAAW+21B,EAClH,EAAI,KAIJ,OAHA5s/B,EAAK46gC,eAAgB,EACrB56gC,EAAK2pb,SACLi1nB,EAAmBvmjC,EAASknM,EAAO,KAAMyq0B,GAClChqgC,CACT,ECtHA,IAAI2/iC,GAEJ,WACE,SAASA,EAAMr5qB,GACb91Y,KAAKovjC,SAAWt5qB,GAAW,CAAC,EAC5B91Y,KAAKo5gC,QAAU,CAACr58B,KAAU,IAC5B,CA6EA,OA3EAov/B,EAAMzvjC,UAAU2vjC,WAAa,SAAU3kjC,GACrC,OAAO1K,KAAKovjC,SAAS1kjC,EACvB,EAMAykjC,EAAMzvjC,UAAU4vjC,YAAc,SAAUzzgC,GACtC,IAAI0uH,EAASvqK,KAAKo5gC,QAClBv99B,EAAM,GAAK0uH,EAAO,KAAOA,EAAO,GAAK1uH,EAAM,IAC3CA,EAAM,GAAK0uH,EAAO,KAAOA,EAAO,GAAK1uH,EAAM,GAE7C,EAMAszgC,EAAMzvjC,UAAU6vjC,oBAAsB,SAAU//iC,EAAMmoV,GACpD33V,KAAKsvjC,YAAY9/iC,EAAKo4iC,qBAAqBjwtB,GAC7C,EAQAw3tB,EAAMzvjC,UAAU8vjC,UAAY,WAC1B,OAAOxvjC,KAAKo5gC,QAAQr3gC,OACtB,EAMAotjC,EAAMzvjC,UAAU+vjC,UAAY,SAAUjphC,EAAOC,GAC3C,IAAIiphC,EAAa1vjC,KAAKo5gC,QAEjB9s+B,MAAM9F,KACTkphC,EAAW,GAAKlphC,GAGb8F,MAAM7F,KACTiphC,EAAW,GAAKjphC,EAEpB,EAMA0ohC,EAAMzvjC,UAAUiwjC,gBAAkB,SAAUxujC,GAC1C,OAAOnB,KAAKo5gC,QAAQ,IAAMj4gC,GAASnB,KAAKo5gC,QAAQ,IAAMj4gC,CACxD,EAOAgujC,EAAMzvjC,UAAU+9iB,QAAU,WACxB,OAAOz9iB,KAAK4vjC,QACd,EAOAT,EAAMzvjC,UAAUmwjC,SAAW,SAAUpygB,GACnCz9iB,KAAK4vjC,SAAWnygB,CAClB,EAEO0xgB,CACT,CAlFA,GAoFA,GAAgCA,IAChC,YCxFA,IAAIW,GAAU,EAwFd,SAAS9nuB,GAAQ96H,GACf,OAAI,GAASA,IAAqB,MAAbA,EAAI/rN,MAChB+rN,EAAI/rN,MAEJ+rN,EAAM,EAEjB,CAEA,SA5FA,WACE,SAAS6i2B,EAAY3vhB,GACnBpgiB,KAAKgp3B,WAAa5oV,EAAI4oV,YAAc,GACpChp3B,KAAKgwjC,aAAe5vhB,EAAI6vhB,YACxBjwjC,KAAKkwjC,eAAiB9vhB,EAAI+vhB,cAC1BnwjC,KAAKozV,MAAQ08tB,EACf,CA2EA,OAzEAC,EAAYK,kBAAoB,SAAUpD,GACxC,IAAInv/B,EAASmv/B,EAAUnv/B,OACnBruD,EAAOquD,EAAOruD,KACdw52B,EAAax52B,GAAQ6f,EAAI7f,EAAMw4U,IACnC,OAAO,IAAI+nuB,EAAY,CACrB/mM,WAAYA,EACZinM,aAAcjnM,EAEdmnM,eAAuC,IAAxBty/B,EAAOwy/B,cAE1B,EAIAN,EAAYrwjC,UAAU4wjC,WAAa,SAAUlu1B,GAE3C,OAAOpiO,KAAKuwjC,kBAAkBptjC,IAAIi/N,EACpC,EAMA2t1B,EAAYrwjC,UAAUg7gC,gBAAkB,SAAUt4yB,GAChD,IAAIplN,EACAiziC,EAAcjwjC,KAAKgwjC,aAMvB,IAAKh1/B,GAASonK,KAAc6t1B,EAC1B,OAAO7t1B,EAWT,GAAI6t1B,IAAgBjwjC,KAAKkwjC,eAGvB,OAFAlziC,EAAQhd,KAAKgp3B,WAAW3o3B,OACxBL,KAAKgp3B,WAAWhs2B,GAASolN,EAClBplN,EAGT,IAAIqS,EAAMrvB,KAAKuwjC,kBAgBf,OAXa,OAFbvziC,EAAQqS,EAAIlsB,IAAIi/N,MAGV6t1B,GACFjziC,EAAQhd,KAAKgp3B,WAAW3o3B,OACxBL,KAAKgp3B,WAAWhs2B,GAASolN,EAEzB/yM,EAAIpjB,IAAIm2N,EAAUplN,IAElBA,EAAQ4+uB,KAIL5+uB,CACT,EAGA+yiC,EAAYrwjC,UAAU6wjC,gBAAkB,WACtC,OAAOvwjC,KAAKilM,OAASjlM,KAAKilM,KAAOimwB,GAAclr8B,KAAKgp3B,YACtD,EAEO+mM,CACT,CAlFA,GCCO,SAASS,GAAqB1u9B,GACnC,MAAsB,aAAfA,EAAMv1F,MAAsC,QAAfu1F,EAAMv1F,IAC5C,CA2BO,SAASkkjC,GAAiBvulB,GAC/B,IAAIy9f,EAAQ989B,KAAK6yF,IAAI,GAAI,GAAiBwsY,IAEtCx/d,EAAIw/d,EAAWy9f,EAanB,OAXKj99B,EAEY,IAANA,EACTA,EAAI,EACW,IAANA,EACTA,EAAI,EAGJA,GAAK,EAPLA,EAAI,EAUCugD,GAAMvgD,EAAIi99B,EACnB,CAKO,SAAS+wF,GAAqBxulB,GAEnC,OAAO47f,GAAa57f,GAAY,CAClC,CAEA,SAASxpI,GAAMi4tB,EAAgB71sB,EAAKvwM,GAClCom5B,EAAe71sB,GAAOj4W,KAAK8K,IAAI9K,KAAKgL,IAAI8ijC,EAAe71sB,GAAMvwM,EAAO,IAAKA,EAAO,GAClF,CAaO,SAAS,GAAQmT,EAAKnT,GAC3B,OAAOmT,GAAOnT,EAAO,IAAMmT,GAAOnT,EAAO,EAC3C,CACO,SAAS,GAAUmT,EAAKnT,GAC7B,OAAIA,EAAO,KAAOA,EAAO,GAChB,IAGDmT,EAAMnT,EAAO,KAAOA,EAAO,GAAKA,EAAO,GACjD,CACO,SAAS,GAAMmT,EAAKnT,GACzB,OAAOmT,GAAOnT,EAAO,GAAKA,EAAO,IAAMA,EAAO,EAChD,CC7EA,IAAIqm5B,GAEJ,SAAUlosB,GAGR,SAASkosB,EAAa96qB,GACpB,IAAIppV,EAAQg8T,EAAO9oX,KAAKI,KAAM81Y,IAAY91Y,KAE1C0sD,EAAMngD,KAAO,UAEb,IAAI+tgC,EAAc5t9B,EAAM2igC,WAAW,eAkBnC,OAdK/0C,IACHA,EAAc,IAAI,GAAY,CAAC,IAG7B3ogC,GAAQ2ogC,KACVA,EAAc,IAAI,GAAY,CAC5BtxJ,WAAY351B,EAAIir/B,GAAa,SAAUl59B,GACrC,OAAO,GAASA,GAAQA,EAAKjgD,MAAQigD,CACvC,OAIJsL,EAAMmkgC,aAAev2C,EACrB5t9B,EAAM0s9B,QAAU1s9B,EAAM2igC,WAAW,WAAa,CAAC,EAAG/0C,EAAYtxJ,WAAW3o3B,OAAS,GAC3EqsD,CACT,CAsKA,OAhMAkgX,EAAUgkpB,EAAclosB,GA4BxBkosB,EAAalxjC,UAAU6sB,MAAQ,SAAUmxJ,GAEvC,OAAW,MAAPA,EACKk+kB,IAGF5gsB,GAAS0iH,GAAO19K,KAAK6wjC,aAAaP,WAAW5y4B,GAClD76K,KAAKogD,MAAMy6H,EACf,EAEAkz4B,EAAalxjC,UAAUk08B,QAAU,SAAUpG,GAEzC,OAAO,GADPA,EAAOxt8B,KAAKusB,MAAMih7B,GACext8B,KAAKo5gC,UAAkD,MAAtCp5gC,KAAK6wjC,aAAa7nM,WAAWwkF,EACjF,EAQAojH,EAAalxjC,UAAU4P,UAAY,SAAUouK,GAE3C,OAAO,GADPA,EAAM19K,KAAK8wjC,eAAe9wjC,KAAKusB,MAAMmxJ,IACH19K,KAAKo5gC,QACzC,EAOAw3C,EAAalxjC,UAAUoiG,MAAQ,SAAU47E,GAEvC,OADAA,EAAM76K,KAAKogD,MAAM,GAAkBy6H,EAAK19K,KAAKo5gC,UACtCp5gC,KAAK+wjC,oBAAoBrz4B,EAClC,EAEAkz4B,EAAalxjC,UAAU80zB,SAAW,WAKhC,IAJA,IAAIluxB,EAAQ,GACRikI,EAASvqK,KAAKo5gC,QACd5rE,EAAOjjyB,EAAO,GAEXijyB,GAAQjjyB,EAAO,IACpBjkI,EAAMzkC,KAAK,CACTV,MAAOqs8B,IAETA,IAGF,OAAOln6B,CACT,EAEAsqhC,EAAalxjC,UAAUsxjC,cAAgB,SAAUC,GAGjD,EAMAL,EAAalxjC,UAAUwxjC,YAAc,SAAU15gC,GAC7C,GAAY,MAARA,EAAJ,CAYA,IAPA,IAAI25gC,EAAqB35gC,EAAK45gC,eAC1BC,EAAiBrxjC,KAAKsxjC,sBAAwB,GAC9CC,EAAiBvxjC,KAAKwxjC,sBAAwB,GAE9CC,EAAU,EACVC,EAAiB1xjC,KAAK6wjC,aAAa7nM,WAAW3o3B,OAEzCw+H,EAAMh8H,KAAKgL,IAAI6jjC,EAAgBP,EAAmB9wjC,QAASoxjC,EAAU5y7B,IAAO4y7B,EAAS,CAC5F,IAAIp+H,EAAgB89H,EAAmBM,GACvCJ,EAAeI,GAAWp+H,EAC1Bk+H,EAAel+H,GAAiBo+H,CAClC,CAKA,IAFA,IAAIE,EAAgB,EAEbF,EAAUC,IAAkBD,EAAS,CAC1C,KAAwC,MAAjCF,EAAeI,IACpBA,IAIFN,EAAexvjC,KAAK8vjC,GACpBJ,EAAeI,GAAiBF,CAClC,CA1BA,MAFEzxjC,KAAKsxjC,sBAAwBtxjC,KAAKwxjC,sBAAwB,IA6B9D,EAEAZ,EAAalxjC,UAAUoxjC,eAAiB,SAAUrP,GAChD,IAAImQ,EAAuB5xjC,KAAKwxjC,sBAGhC,OAAOI,GAAwBnQ,GAAW,GAAKA,EAAUmQ,EAAqBvxjC,OAASuxjC,EAAqBnQ,GAAWA,CACzH,EAkBAmP,EAAalxjC,UAAUqxjC,oBAAsB,SAAUc,GACrD,IAAIC,EAAuB9xjC,KAAKsxjC,sBAGhC,OAAOQ,GAAwBD,GAAc,GAAKA,EAAaC,EAAqBzxjC,OAASyxjC,EAAqBD,GAAcA,CAClI,EAMAjB,EAAalxjC,UAAUkviB,SAAW,SAAUt9O,GAC1C,IAAKtxT,KAAKy9iB,UAAW,CACnB,IAAI41Y,EAAgBrz7B,KAAK+wjC,oBAAoBz/vB,EAAKnwT,OAC9C4wjC,EAAW/xjC,KAAK6wjC,aAAa7nM,WAAWqqE,GAG5C,OAAmB,MAAZ0+H,EAAmB,GAAKA,EAAW,EAC5C,CACF,EAEAnB,EAAalxjC,UAAU6pD,MAAQ,WAC7B,OAAOvpD,KAAKo5gC,QAAQ,GAAKp5gC,KAAKo5gC,QAAQ,GAAK,CAC7C,EAEAw3C,EAAalxjC,UAAU6vjC,oBAAsB,SAAU//iC,EAAMmoV,GAC3D33V,KAAKsvjC,YAAY9/iC,EAAKo4iC,qBAAqBjwtB,GAC7C,EAOAi5tB,EAAalxjC,UAAUiwjC,gBAAkB,SAAUxujC,GAEjD,OADAA,EAAQnB,KAAK8wjC,eAAe3vjC,GACrBnB,KAAKo5gC,QAAQ,IAAMj4gC,GAASnB,KAAKo5gC,QAAQ,IAAMj4gC,CACxD,EAEAyvjC,EAAalxjC,UAAUi7gC,eAAiB,WACtC,OAAO36gC,KAAK6wjC,YACd,EAEAD,EAAalxjC,UAAUsyjC,cAAgB,WAAa,EAEpDpB,EAAalxjC,UAAUuyjC,eAAiB,WAAa,EAErDrB,EAAarkjC,KAAO,UACbqkjC,CACT,CAlMA,CAkME,IAEF,GAAMlqF,cAAckqF,IACpB,YC9MA,IAAIsB,GAAc,GAEdC,GAEJ,SAAUzpsB,GAGR,SAASypsB,IACP,IAAIzlgC,EAAmB,OAAXg8T,GAAmBA,EAAOnoX,MAAMP,KAAMI,YAAcJ,KAMhE,OAJA0sD,EAAMngD,KAAO,WAEbmgD,EAAM0lgC,UAAY,EAClB1lgC,EAAM2lgC,mBAAqB,EACpB3lgC,CACT,CAwPA,OAlQAkgX,EAAUulpB,EAAezpsB,GAYzBypsB,EAAczyjC,UAAU6sB,MAAQ,SAAUmxJ,GACxC,OAAOA,CACT,EAEAy04B,EAAczyjC,UAAUk08B,QAAU,SAAUl2xB,GAC1C,OAAO,GAAeA,EAAK19K,KAAKo5gC,QAClC,EAEA+4C,EAAczyjC,UAAU4P,UAAY,SAAUouK,GAC5C,OAAO,GAAiBA,EAAK19K,KAAKo5gC,QACpC,EAEA+4C,EAAczyjC,UAAUoiG,MAAQ,SAAU47E,GACxC,OAAO,GAAaA,EAAK19K,KAAKo5gC,QAChC,EAEA+4C,EAAczyjC,UAAU+vjC,UAAY,SAAUjphC,EAAOC,GACnD,IAAIiphC,EAAa1vjC,KAAKo5gC,QAEjB9s+B,MAAM9F,KACTkphC,EAAW,GAAKrl5B,WAAW7jI,IAGxB8F,MAAM7F,KACTiphC,EAAW,GAAKrl5B,WAAW5jI,GAE/B,EAEA0rhC,EAAczyjC,UAAU4vjC,YAAc,SAAUzzgC,GAC9C,IAAI0uH,EAASvqK,KAAKo5gC,QAClBv99B,EAAM,GAAK0uH,EAAO,KAAOA,EAAO,GAAK1uH,EAAM,IAC3CA,EAAM,GAAK0uH,EAAO,KAAOA,EAAO,GAAK1uH,EAAM,IAE3C77C,KAAKyvjC,UAAUll5B,EAAO,GAAIA,EAAO,GACnC,EAEA4n5B,EAAczyjC,UAAU4yjC,YAAc,WACpC,OAAOtyjC,KAAKoyjC,SACd,EAEAD,EAAczyjC,UAAU4uB,YAAc,SAAU4zc,GAC9Clie,KAAKoyjC,UAAYlwlB,EAGjBlie,KAAKuyjC,YAAcvyjC,KAAKo5gC,QAAQr3gC,QAChC/B,KAAKqyjC,mBAAqB,GAA4BnwlB,EACxD,EAMAiwlB,EAAczyjC,UAAU80zB,SAAW,SAAUg+P,GAC3C,IAAItwlB,EAAWlie,KAAKoyjC,UAChB7n5B,EAASvqK,KAAKo5gC,QACdu3C,EAAiB3wjC,KAAKuyjC,YACtBE,EAAoBzyjC,KAAKqyjC,mBACzB/rhC,EAAQ,GAEZ,IAAK47b,EACH,OAAO57b,EAMLikI,EAAO,GAAKom5B,EAAe,KACzB6B,EACFlshC,EAAMzkC,KAAK,CACTV,MAAO+wjC,GAAYvB,EAAe,GAAKzulB,EAAUuwlB,KAGnDnshC,EAAMzkC,KAAK,CACTV,MAAOopK,EAAO,MAOpB,IAFA,IAAI+mJ,EAAOq/vB,EAAe,GAEnBr/vB,GAAQq/vB,EAAe,KAC5BrqhC,EAAMzkC,KAAK,CACTV,MAAOmwT,KAGTA,EAAO4gwB,GAAY5gwB,EAAO4wK,EAAUuwlB,MAEvBnshC,EAAMA,EAAMjmC,OAAS,GAAGc,QAMrC,GAAImlC,EAAMjmC,OA7BI,IA8BZ,MAAO,GAMX,IAAIqyjC,EAAepshC,EAAMjmC,OAASimC,EAAMA,EAAMjmC,OAAS,GAAGc,MAAQwvjC,EAAe,GAcjF,OAZIpm5B,EAAO,GAAKmo5B,IACVF,EACFlshC,EAAMzkC,KAAK,CACTV,MAAO+wjC,GAAYQ,EAAexwlB,EAAUuwlB,KAG9CnshC,EAAMzkC,KAAK,CACTV,MAAOopK,EAAO,MAKbjkI,CACT,EAEA6rhC,EAAczyjC,UAAUsxjC,cAAgB,SAAUC,GAKhD,IAJA,IAAI3qhC,EAAQtmC,KAAKw0zB,UAAS,GACtBm+P,EAAa,GACbpo5B,EAASvqK,KAAKwvjC,YAET5ujC,EAAI,EAAGA,EAAI0lC,EAAMjmC,OAAQO,IAAK,CAQrC,IAPA,IAAIk/6B,EAAWx54B,EAAM1lC,GACjBgyjC,EAAWtshC,EAAM1lC,EAAI,GACrB2oD,EAAQ,EACRspgC,EAAkB,GAElBC,GADWhzI,EAAS3+6B,MAAQyxjC,EAASzxjC,OACV8vjC,EAExB1ngC,EAAQ0ngC,EAAc,GAAG,CAC9B,IAAI8B,EAAYb,GAAYU,EAASzxjC,OAASooD,EAAQ,GAAKupgC,GAEvDC,EAAYxo5B,EAAO,IAAMwo5B,EAAYxo5B,EAAO,IAC9Cso5B,EAAgBhxjC,KAAKkxjC,GAGvBxpgC,GACF,CAEAopgC,EAAW9wjC,KAAKgxjC,EAClB,CAEA,OAAOF,CACT,EAOAR,EAAczyjC,UAAUkviB,SAAW,SAAUp/hB,EAAM4whB,GACjD,GAAY,MAAR5whB,EACF,MAAO,GAGT,IAAIymQ,EAAYmqR,GAAOA,EAAInqR,UAY3B,OAViB,MAAbA,EACFA,EAAY,GAAwBzmQ,EAAKrO,QAAU,EAC5B,SAAd80Q,IAETA,EAAYj2Q,KAAKqyjC,oBAMZ,GADOH,GAAY1ijC,EAAKrO,MAAO80Q,GAAW,GAEnD,EAMAk8yB,EAAczyjC,UAAUsyjC,cAAgB,SAAUf,EAAa+B,EAAaC,GAC1EhC,EAAcA,GAAe,EAC7B,IAAI1m5B,EAASvqK,KAAKo5gC,QACd5mf,EAAOjoX,EAAO,GAAKA,EAAO,GAE9B,GAAK7iI,SAAS8qf,GAAd,CAMIA,EAAO,IACTA,GAAQA,EACRjoX,EAAOjwG,WAGT,IAAI92C,EFtMD,SAAgC+mJ,EAAQ0m5B,EAAa+B,EAAaC,GACvE,IAAIzviC,EAAS,CAAC,EACVgvgB,EAAOjoX,EAAO,GAAKA,EAAO,GAC1B23T,EAAW1+c,EAAO0+c,SAAWq5T,GAAK/oQ,EAAOy+hB,GAAa,GAEvC,MAAf+B,GAAuB9wlB,EAAW8wlB,IACpC9wlB,EAAW1+c,EAAO0+c,SAAW8wlB,GAGZ,MAAfC,GAAuB/wlB,EAAW+wlB,IACpC/wlB,EAAW1+c,EAAO0+c,SAAW+wlB,GAI/B,IAAIh9yB,EAAYzyP,EAAOiviC,kBAAoB/B,GAAqBxulB,GAIhE,OAkCK,SAAmByulB,EAAgBpm5B,IACvC7iI,SAASiphC,EAAe,MAAQA,EAAe,GAAKpm5B,EAAO,KAC3D7iI,SAASiphC,EAAe,MAAQA,EAAe,GAAKpm5B,EAAO,IAC5DmuL,GAAMi4tB,EAAgB,EAAGpm5B,GACzBmuL,GAAMi4tB,EAAgB,EAAGpm5B,GAErBom5B,EAAe,GAAKA,EAAe,KACrCA,EAAe,GAAKA,EAAe,GAEvC,CA5CEuC,CADqB1viC,EAAOmtiC,eAAiB,CAAC1tgC,GAAMpgD,KAAKuK,KAAKm9J,EAAO,GAAK23T,GAAYA,EAAUjsN,GAAYhzN,GAAMpgD,KAAKyK,MAAMi9J,EAAO,GAAK23T,GAAYA,EAAUjsN,IACrI1rG,GACnB/mJ,CACT,CEmLiB,CAA8B+mJ,EAAQ0m5B,EAAa+B,EAAaC,GAC7EjzjC,KAAKqyjC,mBAAqB7uiC,EAAOiviC,kBACjCzyjC,KAAKoyjC,UAAY5uiC,EAAO0+c,SACxBlie,KAAKuyjC,YAAc/uiC,EAAOmtiC,cAZ1B,CAaF,EAEAwB,EAAczyjC,UAAUuyjC,eAAiB,SAAU7xhB,GACjD,IAAI71X,EAASvqK,KAAKo5gC,QAElB,GAAI7u2B,EAAO,KAAOA,EAAO,GACvB,GAAkB,IAAdA,EAAO,GAAU,CAGnB,IAAI4o5B,EAAatwjC,KAAKmjH,IAAIukD,EAAO,IAM5B61X,EAAIgzhB,SACP7o5B,EAAO,IAAM4o5B,EAAa,GAG1B5o5B,EAAO,IAAM4o5B,EAAa,CAE9B,MACE5o5B,EAAO,GAAK,EAIhB,IAAIioX,EAAOjoX,EAAO,GAAKA,EAAO,GAEzB7iI,SAAS8qf,KACZjoX,EAAO,GAAK,EACZA,EAAO,GAAK,GAGdvqK,KAAKgyjC,cAAc5xhB,EAAI6whB,YAAa7whB,EAAI4yhB,YAAa5yhB,EAAI6yhB,aAEzD,IAAI/wlB,EAAWlie,KAAKoyjC,UAEfhyhB,EAAIizhB,SACP9o5B,EAAO,GAAK2n5B,GAAYrvjC,KAAKyK,MAAMi9J,EAAO,GAAK23T,GAAYA,IAGxDk+D,EAAIgzhB,SACP7o5B,EAAO,GAAK2n5B,GAAYrvjC,KAAKuK,KAAKm9J,EAAO,GAAK23T,GAAYA,GAE9D,EAEAiwlB,EAAczyjC,UAAU4zjC,cAAgB,SAAUzljC,EAAKF,GACrD3N,KAAKuyjC,YAAc,CAAC1kjC,EAAKF,EAC3B,EAEAwkjC,EAAc5ljC,KAAO,WACd4ljC,CACT,CApQA,CAoQE,IAEF,GAAMzrF,cAAcyrF,IACpB,YC7QA,IAAIoB,GAA8C,oBAAjBvziC,aAC7BwziC,GAAoBD,GAA8BvziC,aAARvgB,MACvC,SAASg0jC,GAAmBv8gC,GACjC,OAAIvlC,GAAQulC,GAEHq8gC,GAAsB,IAAIvziC,aAAak3B,GAAOA,EAIhD,IAAIs8gC,GAAiBt8gC,EAC9B,CCRA,IAAIw8gC,GAAe,cAEnB,SAASC,GAAiB3wE,GACxB,OAAOA,EAAY7/+B,IAAI,UAAYuwjC,GAAe1wE,EAAY9F,WAChE,CAEA,SAAS02E,GAAWnp3B,GAClB,OAAOA,EAAKktJ,IAAMltJ,EAAKztL,KACzB,CAoCO,SAAS62iC,GAAuBp3O,EAAY6mJ,GACjD,IAAIqoD,EAAe,GAOnB,OANAroD,EAAQq/B,iBAAiBlmL,GAAY,SAAUumK,GAEzC8wE,GAAc9wE,IAChB2oC,EAAa9phC,KAAKmh/B,EAEtB,IACO2oC,CACT,CA4EO,SAASooC,GAAiBC,GAC/B,IAAIC,EAnEN,SAA6BD,GAQ3B,IAAIE,EAAa,CAAC,EAClB,EAAKF,GAAW,SAAUhxE,GACxB,IACImxE,EADYnxE,EAAYjx3B,iBACHm35B,cAEzB,GAAsB,SAAlBirC,EAAS5njC,MAAqC,UAAlB4njC,EAAS5njC,KASzC,IALA,IAAIiD,EAAOwz+B,EAAYx+2B,UACnB3/G,EAAMsviC,EAASx8tB,IAAM,IAAMw8tB,EAASn3iC,MACpC47/B,EAASppgC,EAAKuggC,kBAAkBvggC,EAAK42iC,aAAa+N,EAASx8tB,MAC3D5oJ,EAAQv/L,EAAKsggC,WAERlvgC,EAAI,EAAGwzjC,EAAMrl3B,EAAMxlJ,QAAS3oD,EAAIwzjC,IAAOxzjC,EAAG,CACjD,IAAIO,EAAQ4tM,EAAM5rM,IAAIy1gC,EAAQh4gC,GAEzBszjC,EAAWrviC,GAKdqviC,EAAWrviC,GAAKhjB,KAAKV,GAHrB+yjC,EAAWrviC,GAAO,CAAC1jB,EAMvB,CACF,IACA,IAAI8yjC,EAAc,CAAC,EAEnB,IAAK,IAAIpviC,KAAOqviC,EACd,GAAIA,EAAWv0jC,eAAeklB,GAAM,CAClC,IAAIwviC,EAAeH,EAAWrviC,GAE9B,GAAIwviC,EAAc,CAEhBA,EAAa9nhC,MAAK,SAAUvrC,EAAGsC,GAC7B,OAAOtC,EAAIsC,CACb,IAGA,IAFA,IAAIuK,EAAM,KAEDzJ,EAAI,EAAGA,EAAIiwjC,EAAah0jC,SAAU+D,EAAG,CAC5C,IAAI2hH,EAAQsu8B,EAAajwjC,GAAKiwjC,EAAajwjC,EAAI,GAE3C2hH,EAAQ,IAEVl4G,EAAc,OAARA,EAAek4G,EAAQljH,KAAKgL,IAAIA,EAAKk4G,GAE/C,CAGAku8B,EAAYpviC,GAAOhX,CACrB,CACF,CAGF,OAAOomjC,CACT,CAGoBK,CAAoBN,GAClCO,EAAiB,GAuCrB,OAtCA,EAAKP,GAAW,SAAUhxE,GACxB,IAGI3kF,EAFA81J,EADYnxE,EAAYjx3B,iBACHm35B,cACrBsrC,EAAaL,EAAS3E,YAG1B,GAAsB,aAAlB2E,EAAS5njC,KACX8x5B,EAAY81J,EAASM,oBAChB,GAAsB,UAAlBN,EAAS5njC,MAAsC,SAAlB4njC,EAAS5njC,KAAiB,CAChE,IAAIsY,EAAMsviC,EAASx8tB,IAAM,IAAMw8tB,EAASn3iC,MACpC03iC,EAAST,EAAYpviC,GACrB8viC,EAAa9xjC,KAAKmjH,IAAIwu8B,EAAW,GAAKA,EAAW,IACjD1y9B,EAAQqy9B,EAASry9B,MAAM0t9B,YACvBoF,EAAY/xjC,KAAKmjH,IAAIlkB,EAAM,GAAKA,EAAM,IAC1Cu8zB,EAAYq2J,EAASC,EAAaC,EAAYF,EAASC,CACzD,KAAO,CACL,IAAInljC,EAAOwz+B,EAAYx+2B,UACvB65xB,EAAYx75B,KAAKmjH,IAAIwu8B,EAAW,GAAKA,EAAW,IAAMhljC,EAAK+5C,OAC7D,CAEA,IAAIu8wB,EAAW,GAAak9K,EAAY7/+B,IAAI,YAAak75B,GACrDw2J,EAAc,GAAa7xE,EAAY7/+B,IAAI,eAAgBk75B,GAC3Dy2J,EAAc,GAElB9xE,EAAY7/+B,IAAI,iBAAmB4xjC,GAAc/xE,GAAe,GAAM,GAAI3kF,GACtE22J,EAAShyE,EAAY7/+B,IAAI,UACzB8xjC,EAAiBjyE,EAAY7/+B,IAAI,kBACrCoxjC,EAAe1yjC,KAAK,CAClBw85B,UAAWA,EACXv4F,SAAUA,EACV+uP,YAAaA,EACbC,YAAaA,EACbE,OAAQA,EACRC,eAAgBA,EAChBC,QAAStB,GAAWO,GACpBgB,QAASxB,GAAiB3wE,IAE9B,IACOoyE,GAAuBb,EAChC,CAEA,SAASa,GAAuBb,GAE9B,IAAIc,EAAa,CAAC,EAClB,EAAKd,GAAgB,SAAUe,EAAYx6sB,GACzC,IAAIo6sB,EAAUI,EAAWJ,QACrB72J,EAAYi3J,EAAWj3J,UACvBk3J,EAAgBF,EAAWH,IAAY,CACzC72J,UAAWA,EACXk9E,cAAel9E,EACfm3J,eAAgB,EAChBC,YAAa,KACbv4sB,IAAK,MACLw4sB,OAAQ,CAAC,GAEPA,EAASH,EAAcG,OAC3BL,EAAWH,GAAWK,EACtB,IAAIJ,EAAUG,EAAWH,QAEpBO,EAAOP,IACVI,EAAcC,iBAGhBE,EAAOP,GAAWO,EAAOP,IAAY,CACnCp2hC,MAAO,EACPmxI,SAAU,GAMZ,IAAI41pB,EAAWwvP,EAAWxvP,SAEtBA,IAAa4vP,EAAOP,GAASp2hC,QAE/B22hC,EAAOP,GAASp2hC,MAAQ+myB,EACxBA,EAAWjj0B,KAAKgL,IAAI0njC,EAAch6E,cAAez1K,GACjDyvP,EAAch6E,eAAiBz1K,GAGjC,IAAI+uP,EAAcS,EAAWT,YAC7BA,IAAgBa,EAAOP,GAASjl5B,SAAW2k5B,GAC3C,IAAIC,EAAcQ,EAAWR,YAC7BA,IAAgBY,EAAOP,GAASh3sB,SAAW22sB,GAC3C,IAAIE,EAASM,EAAWN,OACd,MAAVA,IAAmBO,EAAcr4sB,IAAM83sB,GACvC,IAAIC,EAAiBK,EAAWL,eACd,MAAlBA,IAA2BM,EAAcE,YAAcR,EACzD,IACA,IAAIzxiC,EAAS,CAAC,EA8Fd,OA7FA,EAAK6xiC,GAAY,SAAUE,EAAe1J,GACxCroiC,EAAOqoiC,GAAgB,CAAC,EACxB,IAAI6J,EAASH,EAAcG,OACvBr3J,EAAYk3J,EAAcl3J,UAC1Bs3J,EAAqBJ,EAAcE,YAEvC,GAA0B,MAAtBE,EAA4B,CAC9B,IAAIj0zB,EAAcpuP,GAAKoijC,GAAQr1jC,OAG/Bs1jC,EAAqB9yjC,KAAK8K,IAAI,GAAmB,EAAd+zP,EAAiB,IAAM,GAC5D,CAEA,IAAI+zzB,EAAc,GAAaE,EAAoBt3J,GAC/Cu3J,EAAgB,GAAaL,EAAcr4sB,IAAK,GAChDq+nB,EAAgBg6E,EAAch6E,cAC9Bi6E,EAAiBD,EAAcC,eAC/BK,GAAat6E,EAAgBk6E,IAAgBD,GAAkBA,EAAiB,GAAKI,GACzFC,EAAYhzjC,KAAK8K,IAAIkojC,EAAW,GAEhC,EAAKH,GAAQ,SAAU51gC,GACrB,IAAIowH,EAAWpwH,EAAOowH,SAClBiuM,EAAWr+T,EAAOq+T,SAEtB,GAAKr+T,EAAO/gB,MAyBN+2hC,EAAah2gC,EAAO/gB,MAEpBmxI,IACF4l5B,EAAajzjC,KAAKgL,IAAIiojC,EAAY5l5B,IAIhCiuM,IACF23sB,EAAajzjC,KAAK8K,IAAImojC,EAAY33sB,IAGpCr+T,EAAO/gB,MAAQ+2hC,EACfv6E,GAAiBu6E,EAAaF,EAAgBE,EAC9CN,QAtCiB,CACjB,IAAIM,EAAaD,EAEb3l5B,GAAYA,EAAW4l5B,IACzBA,EAAajzjC,KAAKgL,IAAIqiK,EAAUqr0B,IAQ9Bp9nB,GAAYA,EAAW23sB,IACzBA,EAAa33sB,GAGX23sB,IAAeD,IACjB/1gC,EAAO/gB,MAAQ+2hC,EACfv6E,GAAiBu6E,EAAaF,EAAgBE,EAC9CN,IAEJ,CAmBF,IAEAK,GAAat6E,EAAgBk6E,IAAgBD,GAAkBA,EAAiB,GAAKI,GACrFC,EAAYhzjC,KAAK8K,IAAIkojC,EAAW,GAChC,IACI77Y,EADA+7Y,EAAW,EAEf,EAAKL,GAAQ,SAAU51gC,EAAQg7T,GACxBh7T,EAAO/gB,QACV+gB,EAAO/gB,MAAQ82hC,GAGjB77Y,EAAal6nB,EACbi2gC,GAAYj2gC,EAAO/gB,OAAS,EAAI62hC,EAClC,IAEI57Y,IACF+7Y,GAAY/7Y,EAAWj7oB,MAAQ62hC,GAGjC,IAAIzzgC,GAAU4zgC,EAAW,EACzB,EAAKL,GAAQ,SAAU51gC,EAAQq1gC,GAC7B3xiC,EAAOqoiC,GAAcsJ,GAAW3xiC,EAAOqoiC,GAAcsJ,IAAY,CAC/D92J,UAAWA,EACXl82B,OAAQA,EACRpjB,MAAO+gB,EAAO/gB,OAEhBojB,GAAUrC,EAAO/gB,OAAS,EAAI62hC,EAChC,GACF,IACOpyiC,CACT,CAeO,SAAS09G,GAAOu7sB,EAAY6mJ,GACjC,IAAIqoD,EAAekoC,GAAuBp3O,EAAY6mJ,GAClD0yF,EAAoBjC,GAAiBpoC,GACzC,EAAKA,GAAc,SAAU3oC,GAC3B,IAAIxz+B,EAAOwz+B,EAAYx+2B,UAEnB2v7B,EADYnxE,EAAYjx3B,iBACHm35B,cACrBisC,EAAUxB,GAAiB3wE,GAC3BizE,EAAmBD,EAAkBpC,GAAWO,IAAWgB,GAC3De,EAAeD,EAAiB9zgC,OAChCgmd,EAAc8tjB,EAAiBl3hC,MACnCvvB,EAAKk5iC,UAAU,CACbrqJ,UAAW43J,EAAiB53J,UAC5Bl82B,OAAQ+zgC,EACRtxiC,KAAMujf,GAEV,GACF,CAEO,SAASgujB,GAAwB15O,GACtC,MAAO,CACLA,WAAYA,EACZg1L,KAAMqa,KACN7q9B,MAAO,SAAU+h7B,GACf,GAAK8wE,GAAc9wE,GAAnB,CAIA,IAAIxz+B,EAAOwz+B,EAAYx+2B,UACnBo3D,EAAYonzB,EAAYjx3B,iBACxBoi8B,EAAWv43B,EAAUst1B,cACrBmZ,EAAYzm2B,EAAUw63B,aAAajC,GACnCkC,EAAc7mjC,EAAKuggC,kBAAkBvggC,EAAK42iC,aAAa/jB,EAAU1qsB,MACjE2+tB,EAAa9mjC,EAAKuggC,kBAAkBvggC,EAAK42iC,aAAa+N,EAASx8tB,MAC/D4+tB,EAAiBvzE,EAAY7/+B,IAAI,kBAAkB,GACnDqzjC,EAAWhnjC,EAAK42iC,aAAa/jB,EAAU1qsB,KACvC8+tB,EAAiBjnjC,EAAKytiC,mBAAmB,wBACzC/2N,EAAU6nO,GAAmBv+iC,EAAMgnjC,MAAehnjC,EAAKytiC,mBAAmB,mBAC1EyZ,EAAer0B,EAAU34f,eACzBithB,EAqHV,SAA2BxC,EAAU9xB,GACnC,OAAOA,EAAUu0B,cAAcv0B,EAAUw0B,YAA+B,QAAnBx0B,EAAU91hC,KAAiB,EAAI,GACtF,CAvH2BuqjC,CAAkB3C,EAAU9xB,GAC7C00B,EAAUhC,GAAc/xE,GACxBg0E,EAAeh0E,EAAY7/+B,IAAI,iBAAmB,EAClD8zjC,EAAgBR,GAAkBjnjC,EAAKuggC,kBAAkB0mD,GAEzDtujB,EAAc34f,EAAKm5iC,UAAU,QAC7BuN,EAAe1mjC,EAAKm5iC,UAAU,UAClC,MAAO,CACL11C,SAAU,SAAU5q+B,EAAQ74B,GAW1B,IAVA,IAMI61J,EANA97G,EAAQlhB,EAAOkhB,MACf2tgC,EAAcH,GAAWtD,GAA2B,EAARlqgC,GAC5C4tgC,EAAwBJ,GAAWR,GAAkB9C,GAA2B,EAARlqgC,GACxE6tgC,EAAmBL,GAAWtD,GAAmBlqgC,GACjD8tgC,EAAcz73B,EAAUm6X,OAAOuhgB,UAC/BC,EAASb,EAAeW,EAAYt4hC,MAAQs4hC,EAAYr4hC,OAExD+vK,EAAQv/L,EAAKsggC,WACb0nD,EAAY,EAEsB,OAA9Bny5B,EAAYh9H,EAAOtnC,SAAiB,CAC1C,IAAII,EAAQ4tM,EAAM5rM,IAAI+i1B,EAAU+wO,EAAgBZ,EAAahx5B,GACzDoy5B,EAAY1o3B,EAAM5rM,IAAImzjC,EAAYjx5B,GAClCqy5B,EAAYf,EACZnotB,OAAa,EAGb03e,IACF13e,GAAcrtW,EAAQ4tM,EAAM5rM,IAAIkzjC,EAAahx5B,IAG/C,IAAIphK,OAAI,EACJjB,OAAI,EACJ+7B,OAAQ,EACRC,OAAS,EAEb,GAAI03hC,EAAc,CAChB,IAAIz35B,EAAQ28B,EAAU+73B,YAAY,CAACx2jC,EAAOs2jC,IAEtCvxO,IAEFwxO,EADiB973B,EAAU+73B,YAAY,CAACnptB,EAAYiptB,IAC7B,IAGzBxzjC,EAAIyzjC,EACJ10jC,EAAIi8J,EAAM,GAAKi35B,EACfn3hC,EAAQkgI,EAAM,GAAKy45B,EACnB14hC,EAASmpe,EAELtlgB,KAAKmjH,IAAIjnF,GAASi4hC,IACpBj4hC,GAASA,EAAQ,GAAK,EAAI,GAAKi4hC,EAEnC,MACM/35B,EAAQ28B,EAAU+73B,YAAY,CAACF,EAAWt2jC,IAE1C+k1B,IAEFwxO,EADiB973B,EAAU+73B,YAAY,CAACF,EAAWjptB,IAC5B,IAGzBvqW,EAAIg7J,EAAM,GAAKi35B,EACflzjC,EAAI00jC,EACJ34hC,EAAQope,EACRnpe,EAASigI,EAAM,GAAKy45B,EAEhB70jC,KAAKmjH,IAAIhnF,GAAUg4hC,IAErBh4hC,GAAUA,GAAU,GAAK,EAAI,GAAKg4hC,GAIjCD,GAQHG,EAAYM,GAAavzjC,EACzBizjC,EAAYM,EAAY,GAAKx0jC,EAC7Bk0jC,EAAYM,EAAY,GAAKd,EAAe33hC,EAAQC,EAEhDm4hC,IACFA,EAAsBK,GAAad,EAAeW,EAAYpzjC,EAAIA,EAClEkzjC,EAAsBK,EAAY,GAAKd,EAAe1zjC,EAAIq0jC,EAAYr0jC,EACtEm0jC,EAAsBK,EAAY,GAAKD,GAGzCH,EAAiB/x5B,GAAaA,GAjB9B71J,EAAKq5iC,cAAcxj5B,EAAW,CAC5BphK,EAAGA,EACHjB,EAAGA,EACH+7B,MAAOA,EACPC,OAAQA,IAgBZw4hC,GAAa,CACf,CAEIT,GACFvnjC,EAAKk5iC,UAAU,CACbwO,YAAaA,EACbE,iBAAkBA,EAClBD,sBAAuBA,EACvBS,oBAAqBlB,GAG3B,EAnHF,CAqHF,EAEJ,CAEA,SAAS5C,GAAc9wE,GACrB,OAAOA,EAAYjx3B,kBAA0D,gBAAtCix3B,EAAYjx3B,iBAAiBxlH,IACtE,CAEA,SAASwojC,GAAc/xE,GACrB,OAAOA,EAAY+oC,iBAAmB/oC,EAAY+oC,gBAAgB7zM,KACpE,CC7cA,IAcIl2C,GAEJ,SAAUt5a,GAGR,SAASs5a,EAAUv3qB,GACjB,IAAI/9D,EAAQg8T,EAAO9oX,KAAKI,KAAMyqH,IAAazqH,KAG3C,OADA0sD,EAAMngD,KAAO,OACNmgD,CACT,CAwGA,OA/GAkgX,EAAUo1X,EAAWt5a,GAarBs5a,EAAUtiyB,UAAUkviB,SAAW,SAAUt9O,GACvC,IAAIwgsB,EAAS9x/B,KAAKqvjC,WAAW,UAC7B,OAAOnq/B,GAAOosP,EAAKnwT,MAAO0u/B,G1FHvB,SAA6CI,GAClD,OAAQA,GACN,IAAK,OACL,IAAK,QACH,MAAO,MAET,IAAK,cACH,MAAO,cAET,QAEE,MAAO,SAEb,C0FVmD4nE,CAAoC7nE,GAAmBhw/B,KAAK83jC,kBAAoBjoE,GAAqBr65B,OAAQs85B,EAAQ9x/B,KAAKqvjC,WAAW,UACtL,EAEArtR,EAAUtiyB,UAAUgo/B,kBAAoB,SAAUp2rB,EAAMwpD,EAAKixb,GAC3D,IAAImkN,EAAQlw/B,KAAKqvjC,WAAW,UAE5B,O1F2BG,SAAuB/9vB,EAAMwpD,EAAKsqM,EAAW8nc,EAAMgD,GACxD,IAAIhj0B,EAAW,KAEf,GAAI,GAAgBk4X,GAElBl4X,EAAWk4X,OACN,GAAI,GAAkBA,GAE3Bl4X,EAAWk4X,EAAU9zP,EAAKnwT,MAAO25W,EAAK,CACpCprT,MAAO4hQ,EAAK5hQ,YAET,CACL,IAAIshR,EAAW,EAAc,CAAC,EAAG0+qB,IAEjC,GAAIp+rB,EAAK5hQ,MAAQ,EACf,IAAK,IAAI9uD,EAAI,EAAGA,EAAIkv/B,GAAiBzv/B,SAAUO,EAC7CowU,EAAS8+qB,GAAiBlv/B,IAAM,YAAcowU,EAAS8+qB,GAAiBlv/B,IAAM,IAIlF,IAAIm3jC,EAAkB3ygB,GAAkC,IAAtBA,EAAUvtM,QAAoButM,EAC9D,EAAgBA,EAAWp0O,GAAYA,EACrCurC,EAAOo0oB,GAAiBr/rB,EAAKnwT,MAAO+u/B,GAExC,GAAI6nE,EAAgBx7sB,GAClBrvL,EAAW6q4B,EAAgBx7sB,QACtB,GAAIw7sB,EAAgBlgtB,QAAS,CAIlC,IAASj3W,EAFMmv/B,GAAUvv/B,QAAQ+7W,GAET,EAAG37W,GAAK,IAAKA,EACnC,GAAIm3jC,EAAgBx7sB,GAAO,CACzBrvL,EAAW6q4B,EAAgBx7sB,GAC3B,KACF,CAGFrvL,EAAWA,GAAY8jJ,EAAS2+qB,IAClC,CAEA,GAAI,GAAezi0B,GAAW,CAC5B,IAAI8q4B,EAAwB,MAAd1mwB,EAAK5hQ,MAAgB,EAAI4hQ,EAAK5hQ,OAAS,EAAI4hQ,EAAK5hQ,MAAQw9H,EAAS7sL,OAASixT,EAAK5hQ,MAE7Fw9H,EAAWA,EADX8q4B,EAAUn1jC,KAAKgL,IAAImqjC,EAAS9q4B,EAAS7sL,OAAS,GAEhD,CACF,CAEA,OAAO6kE,GAAO,IAAI15C,KAAK8lS,EAAKnwT,OAAQ+rL,EAAUgj0B,EAAOhD,EACvD,C0F3EW+qE,CAAc3mwB,EAAMwpD,EAAKixb,EADrB/ryB,KAAKqvjC,WAAW,UAC2Bn/D,EACxD,EAMAluN,EAAUtiyB,UAAU80zB,SAAW,WAC7B,IAAItyV,EAAWlie,KAAKoyjC,UAChB7n5B,EAASvqK,KAAKo5gC,QACd9y+B,EAAQ,GAEZ,IAAK47b,EACH,OAAO57b,EAGTA,EAAMzkC,KAAK,CACTV,MAAOopK,EAAO,GACd76G,MAAO,IAET,IAAIoi8B,EAAS9x/B,KAAKqvjC,WAAW,UACzB6I,EAsPR,SAA0BC,EAAgBC,EAAgBloE,EAAO3l1B,GAC/D,I1FxRgC0l1B,E0FyR5BooE,EAAYtoE,GACZ9loB,EAAO,EAEX,SAASqusB,EAAep2lB,EAAUq2lB,EAAcC,EAAcC,EAAeC,EAAerkzB,EAAQn0I,GAOlG,IANA,IAAI7qF,EAAO,IAAI7pB,KAAK+siC,GAChBz3R,EAAWy3R,EACX51jC,EAAI0yC,EAAKojhC,KAIN33R,EAAW03R,GAAgB13R,GAAYv2nB,EAAO,IACnDrqC,EAAIr+H,KAAK,CACPV,MAAO2/xB,IAETn+xB,GAAKu/d,EACL7sb,EAAKqjhC,GAAe/1jC,GACpBm+xB,EAAWzrvB,EAAK5N,UAIlBy4F,EAAIr+H,KAAK,CACPV,MAAO2/xB,EACP63R,QAAQ,GAEZ,CAEA,SAASC,EAAcC,EAAUC,EAAgBC,GAC/C,IAAIC,EAAgB,GAChBC,GAAgBH,EAAez4jC,OAEnC,IAnMJ,SAAyBk8W,EAAMkiH,EAAQC,EAAQwxhB,GAC7C,IAAIgpE,EAAQ,GAAqBz6lB,GAC7B06lB,EAAQ,GAAqBz6lB,GAE7B06lB,EAAS,SAAU78sB,GACrB,OAAO00oB,GAAaioE,EAAO38sB,EAAM2zoB,KAAWe,GAAakoE,EAAO58sB,EAAM2zoB,EACxE,EAEImpE,EAAa,WACf,OAAOD,EAAO,OAChB,EAIIE,EAAc,WAChB,OAAOD,KAAgBD,EAAO,QAChC,EAEIx8H,EAAY,WACd,OAAO08H,KAAiBF,EAAO,MACjC,EAGIG,EAAa,WACf,OAAO38H,KAAew8H,EAAO,OAC/B,EAEII,EAAe,WACjB,OAAOD,KAAgBH,EAAO,SAChC,EAEIK,EAAe,WACjB,OAAOD,KAAkBJ,EAAO,SAClC,EAMA,OAAQ78sB,GACN,IAAK,OACH,OAAO88sB,IAET,IAAK,QACH,OAAOC,IAET,IAAK,MACH,OAAO18H,IAET,IAAK,OACH,OAAO28H,IAET,IAAK,SACH,OAAOC,IAET,IAAK,SACH,OAAOC,IAET,IAAK,cACH,OAvBKA,KAAkBL,EAAO,eAyBpC,CAsIQM,CAAgB1pE,GAAmB6oE,GAAWtu5B,EAAO,GAAIA,EAAO,GAAI2l1B,GAAxE,CAII+oE,IACFH,EAAiB,CAAC,CAEhB33jC,MAAOw4jC,GAAwB,IAAInuiC,KAAK++I,EAAO,IAAKsu5B,EAAU3oE,IAC7D,CACD/u/B,MAAOopK,EAAO,MAIlB,IAAK,IAAI3pK,EAAI,EAAGA,EAAIk4jC,EAAez4jC,OAAS,EAAGO,IAAK,CAClD,IAAIg5jC,EAAYd,EAAel4jC,GAAGO,MAC9B04jC,EAAUf,EAAel4jC,EAAI,GAAGO,MAEpC,GAAIy4jC,IAAcC,EAAlB,CAIA,IAAI33lB,OAAW,EACX43lB,OAAa,EACbz/e,OAAa,EAGjB,OAAQw+e,GACN,IAAK,OACH32lB,EAAWr/d,KAAK8K,IAAI,EAAG9K,KAAKogD,MAAMm1gC,EAAiB3oE,GAAU,MAC7DqqE,EAAa3pE,GAAmBD,GAChC71a,EAAa62a,GAAmBhB,GAChC,MAEF,IAAK,YACL,IAAK,UACL,IAAK,QACHhuhB,EAAW63lB,GAAiB3B,GAC5B0B,EAAa1pE,GAAgBF,GAC7B71a,EAAa82a,GAAgBjB,GAC7B,MAEF,IAAK,OAEL,IAAK,YACL,IAAK,MACHhuhB,EAAW83lB,GAAgB5B,GAE3B0B,EAAazpE,GAAeH,GAC5B71a,EAAa+2a,GAAelB,IACnB,EACT,MAEF,IAAK,WACL,IAAK,cACL,IAAK,OACHhuhB,EAAW+3lB,GAAgB7B,GAC3B0B,EAAaxpE,GAAgBJ,GAC7B71a,EAAag3a,GAAgBnB,GAC7B,MAEF,IAAK,SACHhuhB,EAAWg4lB,GAA6B9B,GAAgB,GACxD0B,EAAavpE,GAAkBL,GAC/B71a,EAAai3a,GAAkBpB,GAC/B,MAEF,IAAK,SACHhuhB,EAAWg4lB,GAA6B9B,GAAgB,GACxD0B,EAAatpE,GAAkBN,GAC/B71a,EAAak3a,GAAkBrB,GAC/B,MAEF,IAAK,cACHhuhB,EAAWi4lB,GAAwB/B,GACnC0B,EAAarpE,GAAuBP,GACpC71a,EAAam3a,GAAuBtB,GAIxCooE,EAAep2lB,EAAU03lB,EAAWC,EAASC,EAAYz/e,EAAYhmU,EAAQ2kzB,GAE5D,SAAbH,GAAuBE,EAAW14jC,OAAS,GAAW,IAANO,GAElDm4jC,EAAWluiC,QAAQ,CACjB1pB,MAAO43jC,EAAW,GAAG53jC,MAAQ+ge,GAjEjC,CAoEF,CAEA,IAASthe,EAAI,EAAGA,EAAIo4jC,EAAc34jC,OAAQO,IACxCm4jC,EAAWl3jC,KAAKm3jC,EAAcp4jC,IAIhC,OAAOo4jC,CA5FP,CA6FF,CAOA,IALA,IAAIoB,EAAc,GACdC,EAAoB,GACpBt5d,EAAY,EACZu5d,EAAqB,EAEhB15jC,EAAI,EAAGA,EAAIy3jC,EAAUh4jC,QAAU4pX,IArIxB,MAqI8CrpX,EAAG,CAC/D,IAAI25jC,EAAkBvqE,GAAmBqoE,EAAUz3jC,IAEnD,I1Fha8Bqv/B,E0FgaPooE,EAAUz3jC,M1F/Zfov/B,GAAmBC,K0FoarC2oE,EAAcP,EAAUz3jC,GAAIw5jC,EAAYA,EAAY/5jC,OAAS,IAAM,GAAIg6jC,GAGnEE,KAFsBlC,EAAUz3jC,EAAI,GAAKov/B,GAAmBqoE,EAAUz3jC,EAAI,IAAM,OAEvC,CAC3C,GAAIy5jC,EAAkBh6jC,OAAQ,CAC5Bi6jC,EAAqBv5d,EAErBs5d,EAAkB9thC,MAAK,SAAUvrC,EAAGsC,GAClC,OAAOtC,EAAEG,MAAQmC,EAAEnC,KACrB,IAGA,IAFA,IAAIq5jC,EAA6B,GAExB7uB,EAAM,EAAGA,EAAM0uB,EAAkBh6jC,SAAUsriC,EAAK,CACvD,IAAI8uB,EAAYJ,EAAkB1uB,GAAKxqiC,MAE3B,IAARwqiC,GAAa0uB,EAAkB1uB,EAAM,GAAGxqiC,QAAUs5jC,IACpDD,EAA2B34jC,KAAKw4jC,EAAkB1uB,IAE9C8uB,GAAalw5B,EAAO,IAAMkw5B,GAAalw5B,EAAO,IAChDw2b,IAGN,CAEA,IAAI25d,GAAiBnw5B,EAAO,GAAKA,EAAO,IAAM6t5B,EAE9C,GAAIr3d,EAA4B,IAAhB25d,GAAuBJ,EAAqBI,EAAgB,IAC1E,MAMF,GAFAN,EAAYv4jC,KAAK24jC,GAEbz5d,EAAY25d,GAAiBvC,IAAmBE,EAAUz3jC,GAC5D,KAEJ,CAGAy5jC,EAAoB,EACtB,CACF,CAQA,IAAIM,EAAsB9tiC,GAAOwC,EAAI+qiC,GAAa,SAAUrB,GAC1D,OAAOlsiC,GAAOksiC,GAAY,SAAUznwB,GAClC,OAAOA,EAAKnwT,OAASopK,EAAO,IAAM+mJ,EAAKnwT,OAASopK,EAAO,KAAO+mJ,EAAKqnwB,MACrE,GACF,KAAI,SAAUI,GACZ,OAAOA,EAAW14jC,OAAS,CAC7B,IACIimC,EAAQ,GACRk3I,EAAWm94B,EAAoBt6jC,OAAS,EAE5C,IAASO,EAAI,EAAGA,EAAI+5jC,EAAoBt6jC,SAAUO,EAGhD,IAFA,IAAIm4jC,EAAa4B,EAAoB/5jC,GAE5B8C,EAAI,EAAGA,EAAIq1jC,EAAW14jC,SAAUqD,EACvC4iC,EAAMzkC,KAAK,CACTV,MAAO43jC,EAAWr1jC,GAAGvC,MACrBuuD,MAAO8tH,EAAW58K,IAKxB0lC,EAAMiG,MAAK,SAAUvrC,EAAGsC,GACtB,OAAOtC,EAAEG,MAAQmC,EAAEnC,KACrB,IAEA,IAAIqiB,EAAS,GAEb,IAAS5iB,EAAI,EAAGA,EAAI0lC,EAAMjmC,SAAUO,EACxB,IAANA,GAAW0lC,EAAM1lC,GAAGO,QAAUmlC,EAAM1lC,EAAI,GAAGO,OAC7CqiB,EAAO3hB,KAAKykC,EAAM1lC,IAItB,OAAO4iB,CACT,CAvdqBo3iC,CAAiB56jC,KAAK83jC,cAAe93jC,KAAK66jC,gBAAiB/oE,EAAQvn1B,GAMpF,OALAjkI,EAAQA,EAAMtkC,OAAOk2jC,IACfr2jC,KAAK,CACTV,MAAOopK,EAAO,GACd76G,MAAO,IAEFppB,CACT,EAEA07vB,EAAUtiyB,UAAUuyjC,eAAiB,SAAU7xhB,GAC7C,IAAI71X,EAASvqK,KAAKo5gC,QASlB,GAPI7u2B,EAAO,KAAOA,EAAO,KAEvBA,EAAO,IAAMkl1B,GACbll1B,EAAO,IAAMkl1B,IAIXll1B,EAAO,MAAO,KAAaA,EAAO,KAAOxqG,IAAU,CACrD,IAAIp9D,EAAI,IAAI6oB,KACZ++I,EAAO,IAAM,IAAI/+I,KAAK7oB,EAAEslhB,cAAetlhB,EAAEulhB,WAAYvlhB,EAAE6hC,WACvD+lI,EAAO,GAAKA,EAAO,GAAKkl1B,EAC1B,CAEAzv/B,KAAKgyjC,cAAc5xhB,EAAI6whB,YAAa7whB,EAAI4yhB,YAAa5yhB,EAAI6yhB,YAC3D,EAEAjxR,EAAUtiyB,UAAUsyjC,cAAgB,SAAU8I,EAAe9H,EAAaC,GACxE6H,EAAgBA,GAAiB,GACjC,IAAIvw5B,EAASvqK,KAAKo5gC,QACd5mf,EAAOjoX,EAAO,GAAKA,EAAO,GAC9BvqK,KAAK66jC,gBAAkBroiB,EAAOsoiB,EAEX,MAAf9H,GAAuBhzjC,KAAK66jC,gBAAkB7H,IAChDhzjC,KAAK66jC,gBAAkB7H,GAGN,MAAfC,GAAuBjzjC,KAAK66jC,gBAAkB5H,IAChDjzjC,KAAK66jC,gBAAkB5H,GAGzB,IAAI8H,EAAoBC,GAAe36jC,OACnCy6W,EAAMj4W,KAAKgL,IAtGN,SAAU7M,EAAGiD,EAAG0V,EAAIiE,GAC/B,KAAOjE,EAAKiE,GAAI,CACd,IAAI0nN,EAAM3rN,EAAKiE,IAAO,EAElB5c,EAAEskO,GAAK,GAAKrhO,EACd0V,EAAK2rN,EAAM,EAEX1nN,EAAK0nN,CAET,CAEA,OAAO3rN,CACT,CA0FuBshjC,CAAOD,GAAgBh7jC,KAAK66jC,gBAAiB,EAAGE,GAAoBA,EAAoB,GAE3G/6jC,KAAKoyjC,UAAY4I,GAAelgtB,GAAK,GAGrC96W,KAAK83jC,cAAgBkD,GAAen4jC,KAAK8K,IAAImtW,EAAM,EAAG,IAAI,EAC5D,EAEAknb,EAAUtiyB,UAAU6sB,MAAQ,SAAUmxJ,GAEpC,OAAOp6H,GAASo6H,GAAOA,GAAO,GAAqBA,EACrD,EAEAsknB,EAAUtiyB,UAAUk08B,QAAU,SAAUl2xB,GACtC,OAAO,GAAoB19K,KAAKusB,MAAMmxJ,GAAM19K,KAAKo5gC,QACnD,EAEAp3O,EAAUtiyB,UAAU4P,UAAY,SAAUouK,GACxC,OAAO,GAAsB19K,KAAKusB,MAAMmxJ,GAAM19K,KAAKo5gC,QACrD,EAEAp3O,EAAUtiyB,UAAUoiG,MAAQ,SAAU47E,GACpC,OAAO,GAAkBA,EAAK19K,KAAKo5gC,QACrC,EAEAp3O,EAAUz1xB,KAAO,OACVy1xB,CACT,CAjHA,CAiHEtthB,IASEsmzB,GAAiB,CACrB,CAAC,SAAU92gC,IAAa,CAAC,SAAUC,IAAa,CAAC,OAAQC,IAAW,CAAC,cAAeA,OAAe,CAAC,WAAYA,OAAgB,CAAC,MAAOqr8B,SAAgB,CAAC,YAAaA,QAAgB,CAAC,OAAQA,QAAc,CAAC,QAASA,SAAe,CAAC,UAAWA,QAAe,CAAC,YAAapr8B,GAAW,GAAI,CAAC,OAAQA,KAkHvS,SAAS21gC,GAAgB5B,EAAgB8C,GAEvC,OADA9C,GAAkB3oE,IACM,GAAK,GAC3B2oE,EAAiB,IAAM,EACvBA,EAAiB,IAAM,EAAIA,EAAiB,IAAM,EAAI,CAC1D,CAEA,SAAS2B,GAAiB3B,GAGxB,OADAA,GADuB,QAEC,EAAI,EAAIA,EAAiB,EAAI,EAAIA,EAAiB,EAAI,EAAI,CACpF,CAEA,SAAS6B,GAAgB7B,GAEvB,OADAA,GAAkBh0gC,IACM,GAAK,GAAKg0gC,EAAiB,EAAI,EAAIA,EAAiB,IAAM,EAAIA,EAAiB,EAAI,EAAI,CACjH,CAEA,SAAS8B,GAA6B9B,EAAgB+C,GAEpD,OADA/C,GAAkB+C,EAAYh3gC,GAAaD,IACnB,GAAK,GAAKk0gC,EAAiB,GAAK,GAAKA,EAAiB,GAAK,GAAKA,EAAiB,GAAK,GAAKA,EAAiB,EAAI,EAAIA,EAAiB,EAAI,EAAI,CACvK,CAEA,SAAS+B,GAAwB/B,GAC/B,OAAO,GAAgBA,GAAgB,EACzC,CAEA,SAASuB,GAAwBtkhC,EAAMwjhC,EAAU3oE,GAC/C,IAAIkrE,EAAU,IAAI5viC,KAAK6pB,GAEvB,OAAQ268B,GAAmB6oE,IACzB,IAAK,OACL,IAAK,QACHuC,EAAQjqE,GAAgBjB,IAAQ,GAElC,IAAK,MACHkrE,EAAQhqE,GAAelB,IAAQ,GAEjC,IAAK,OACHkrE,EAAQ/pE,GAAgBnB,IAAQ,GAElC,IAAK,SACHkrE,EAAQ9pE,GAAkBpB,IAAQ,GAEpC,IAAK,SACHkrE,EAAQ7pE,GAAkBrB,IAAQ,GAClCkrE,EAAQ5pE,GAAuBtB,IAAQ,GAG3C,OAAOkrE,EAAQ3zhC,SACjB,CAqOA,GAAMi/7B,cAAc1kM,IACpB,YC1iBA,IAAIq5R,GAAa,GAAM37jC,UAEnB47jC,GAAqB5mzB,GAAch1Q,UACnC67jC,GAAmB,GACnBC,GAAY34jC,KAAKyK,MACjBmujC,GAAW54jC,KAAKuK,KAChB,GAAUvK,KAAK6yF,IACfgm+B,GAAU74jC,KAAKwnB,IAEfk8wB,GAEJ,SAAU79a,GAGR,SAAS69a,IACP,IAAI75uB,EAAmB,OAAXg8T,GAAmBA,EAAOnoX,MAAMP,KAAMI,YAAcJ,KAOhE,OALA0sD,EAAMngD,KAAO,MACbmgD,EAAMrG,KAAO,GACbqG,EAAMivgC,eAAiB,IAAIjnzB,GAE3BhoN,EAAM0lgC,UAAY,EACX1lgC,CACT,CAwHA,OAnIAkgX,EAAU25X,EAAU79a,GAiBpB69a,EAAS7myB,UAAU80zB,SAAW,SAAUg+P,GACtC,IAAIoJ,EAAgB57jC,KAAK27jC,eACrBpx5B,EAASvqK,KAAKo5gC,QACdyiD,EAAiBD,EAAcpM,YAEnC,OAAO,EADK8L,GAAmB9mQ,SAAS50zB,KAAKI,KAAMwyjC,IAC1B,SAAUlhwB,GACjC,IAAI5zI,EAAM4zI,EAAKnwT,MACX26jC,EAAS,GAAiB,GAAQ97jC,KAAKqmD,KAAMq3H,IAIjD,OAFAo+4B,EAASp+4B,IAAQnT,EAAO,IAAMvqK,KAAK+7jC,QAAUC,GAAiBF,EAAQD,EAAe,IAAMC,EAEpF,CACL36jC,MAFF26jC,EAASp+4B,IAAQnT,EAAO,IAAMvqK,KAAKi8jC,QAAUD,GAAiBF,EAAQD,EAAe,IAAMC,EAI7F,GAAG97jC,KACL,EAEAumyB,EAAS7myB,UAAU+vjC,UAAY,SAAUjphC,EAAOC,GAC9C,IAAI4f,EAAOq1gC,GAAQ17jC,KAAKqmD,MAExB7f,EAAQk1hC,GAAQ74jC,KAAK8K,IAAI,EAAG64B,IAAU6f,EACtC5f,EAAMi1hC,GAAQ74jC,KAAK8K,IAAI,EAAG84B,IAAQ4f,EAClCi1gC,GAAmB7L,UAAU7vjC,KAAKI,KAAMwmC,EAAOC,EACjD,EAMA8/vB,EAAS7myB,UAAU8vjC,UAAY,WAC7B,IAAInpgC,EAAOrmD,KAAKqmD,KACZkkH,EAAS8w5B,GAAW7L,UAAU5vjC,KAAKI,MACvCuqK,EAAO,GAAK,GAAQlkH,EAAMkkH,EAAO,IACjCA,EAAO,GAAK,GAAQlkH,EAAMkkH,EAAO,IAEjC,IACIsx5B,EADgB77jC,KAAK27jC,eACUnM,YAGnC,OAFAxvjC,KAAK+7jC,UAAYxx5B,EAAO,GAAKyx5B,GAAiBzx5B,EAAO,GAAIsx5B,EAAe,KACxE77jC,KAAKi8jC,UAAY1x5B,EAAO,GAAKyx5B,GAAiBzx5B,EAAO,GAAIsx5B,EAAe,KACjEtx5B,CACT,EAEAg8nB,EAAS7myB,UAAU4vjC,YAAc,SAAU/k5B,GACzCvqK,KAAK27jC,eAAerM,YAAY/k5B,GAEhC,IAAIlkH,EAAOrmD,KAAKqmD,KAChBkkH,EAAO,GAAKmx5B,GAAQnx5B,EAAO,IAAMmx5B,GAAQr1gC,GACzCkkH,EAAO,GAAKmx5B,GAAQnx5B,EAAO,IAAMmx5B,GAAQr1gC,GACzCg1gC,GAAW/L,YAAY1vjC,KAAKI,KAAMuqK,EACpC,EAEAg8nB,EAAS7myB,UAAU6vjC,oBAAsB,SAAU//iC,EAAMmoV,GAGvD33V,KAAKsvjC,YAAY9/iC,EAAKo4iC,qBAAqBjwtB,GAC7C,EAOA4uc,EAAS7myB,UAAUsyjC,cAAgB,SAAU8I,GAC3CA,EAAgBA,GAAiB,GACjC,IAAIvw5B,EAASvqK,KAAKo5gC,QACd5mf,EAAOjoX,EAAO,GAAKA,EAAO,GAE9B,KAAIioX,IAASzyd,KAAYyyd,GAAQ,GAAjC,CAIA,IAAItwD,EAAW,GAAoBswD,GAQnC,IAPUsoiB,EAAgBtoiB,EAAOtwD,GAEtB,KACTA,GAAY,KAIN51b,MAAM41b,IAAar/d,KAAKmjH,IAAIk8W,GAAY,GAAKr/d,KAAKmjH,IAAIk8W,GAAY,GACxEA,GAAY,GAGd,IAAIg6lB,EAAa,CAAC,GAAiBT,GAASlx5B,EAAO,GAAK23T,GAAYA,GAAW,GAAiBs5lB,GAAUjx5B,EAAO,GAAK23T,GAAYA,IAClIlie,KAAKoyjC,UAAYlwlB,EACjBlie,KAAKuyjC,YAAc2J,CAhBnB,CAiBF,EAEA31R,EAAS7myB,UAAUuyjC,eAAiB,SAAU7xhB,GAC5Ck7hB,GAAmBrJ,eAAeryjC,KAAKI,KAAMogiB,GAC7CpgiB,KAAK+7jC,QAAU37hB,EAAIizhB,OACnBrzjC,KAAKi8jC,QAAU77hB,EAAIgzhB,MACrB,EAEA7sR,EAAS7myB,UAAU6sB,MAAQ,SAAUmxJ,GACnC,OAAOA,CACT,EAEA6onB,EAAS7myB,UAAUk08B,QAAU,SAAUl2xB,GAErC,OAAO,GADPA,EAAMg+4B,GAAQh+4B,GAAOg+4B,GAAQ17jC,KAAKqmD,MACFrmD,KAAKo5gC,QACvC,EAEA7yO,EAAS7myB,UAAU4P,UAAY,SAAUouK,GAEvC,OAAO,GADPA,EAAMg+4B,GAAQh+4B,GAAOg+4B,GAAQ17jC,KAAKqmD,MACArmD,KAAKo5gC,QACzC,EAEA7yO,EAAS7myB,UAAUoiG,MAAQ,SAAU47E,GAEnC,OADAA,EAAM,GAAkBA,EAAK19K,KAAKo5gC,SAC3B,GAAQp5gC,KAAKqmD,KAAMq3H,EAC5B,EAEA6onB,EAASh6xB,KAAO,MACTg6xB,CACT,CArIA,CAqIE,IAEE/0xB,GAAQ+0xB,GAAS7myB,UAIrB,SAASs8jC,GAAiBt+4B,EAAKy+4B,GAC7B,OAAOZ,GAAiB794B,EAAK,GAAwBy+4B,GACvD,CALA3qjC,GAAMw/iC,cAAgBsK,GAAmBtK,cACzCx/iC,GAAMo9hB,SAAW0shB,GAAmB1shB,SAMpC,GAAM83b,cAAcngM,IACpB,YC/JA,IAAI61R,GAEJ,WACE,SAASA,EAAmBt69B,EAAOizB,EACnC8m8B,GACE77jC,KAAKq8jC,eAAev69B,EAAOizB,EAAO8m8B,EACpC,CAyKA,OAlKAO,EAAmB18jC,UAAU28jC,eAAiB,SAAUv69B,EAAOizB,EAC/Dqp2B,GACMA,EAAW,GAAKA,EAAW,KAC7BA,EAAa,CAACxiO,IAAKA,MAGrB57vB,KAAKs8jC,SAAWl+F,EAAW,GAC3Bp+9B,KAAKu8jC,SAAWn+F,EAAW,GAC3B,IAAIo+F,EAAYx8jC,KAAKy8jC,WAA4B,YAAf369B,EAAMv1F,KACxCvM,KAAK08jC,eAAgC,aAAf569B,EAAMv1F,MAAuBwoH,EAAM4n8B,kBAAoB5n8B,EAAM4n8B,mBACnF,IAAIC,EAAc58jC,KAAK68jC,aAAe9n8B,EAAM5xH,IAAI,OAAO,GAEnD6hQ,GAAW43zB,GAEb58jC,KAAK88jC,aAAeC,GAAqBj79B,EAAO869B,EAAY,CAC1D/ujC,IAAKuw9B,EAAW,GAChBzw9B,IAAKyw9B,EAAW,MAEO,YAAhBw+F,IACT58jC,KAAK88jC,aAAeC,GAAqBj79B,EAAO869B,IAGlD,IAAII,EAAch9jC,KAAKi9jC,aAAelo8B,EAAM5xH,IAAI,OAAO,GAYvD,GAVI6hQ,GAAWg4zB,GAEbh9jC,KAAKk9jC,aAAeH,GAAqBj79B,EAAOk79B,EAAY,CAC1DnvjC,IAAKuw9B,EAAW,GAChBzw9B,IAAKyw9B,EAAW,MAEO,YAAhB4+F,IACTh9jC,KAAKk9jC,aAAeH,GAAqBj79B,EAAOk79B,IAG9CR,EAIFx8jC,KAAKm9jC,aAAepo8B,EAAMqo8B,gBAAgB/8jC,WACrC,CACL,IAAIg9jC,EAActo8B,EAAM5xH,IAAI,eACxBm6jC,EAAiB3rjC,GAAQ0rjC,GAAeA,EAAc,CAACA,GAAe,EAAGA,GAAe,GAE3D,kBAAtBC,EAAe,IAAiD,kBAAtBA,EAAe,GAKlEt9jC,KAAKu9jC,kBAAoB,CAAC,EAAG,GAE7Bv9jC,KAAKu9jC,kBAAoB,CAAC1rG,GAAayrG,EAAe,GAAI,GAAIzrG,GAAayrG,EAAe,GAAI,GAElG,CACF,EASAlB,EAAmB18jC,UAAUy9Z,UAAY,WAUvC,IAAIq/pB,EAAYx8jC,KAAKy8jC,WACjBe,EAAUx9jC,KAAKs8jC,SACfmB,EAAUz9jC,KAAKu8jC,SACfmB,EAAc19jC,KAAKm9jC,aACnBQ,EAAmB39jC,KAAKu9jC,kBACxB/qiB,EAAQgqiB,EAAqD,KAAzCiB,EAAUD,GAAW36jC,KAAKmjH,IAAIw38B,GAGlD3vjC,EAA4B,YAAtB7N,KAAK68jC,aAA6BW,EAAUx9jC,KAAK88jC,aACvDnvjC,EAA4B,YAAtB3N,KAAKi9jC,aAA6BQ,EAAUz9jC,KAAKk9jC,aAEvDU,EAAkB,MAAP/vjC,EACXgwjC,EAAkB,MAAPlwjC,EAEJ,MAAPE,IACFA,EAAM2ujC,EAAYkB,EAAc,EAAI9hU,IAAM4hU,EAAUG,EAAiB,GAAKnriB,GAGjE,MAAP7khB,IACFA,EAAM6ujC,EAAYkB,EAAcA,EAAc,EAAI9hU,IAAM6hU,EAAUE,EAAiB,GAAKnriB,IAGlF,MAAP3khB,IAAgB65B,SAAS75B,MAAUA,EAAM+tvB,MAClC,MAAPjuvB,IAAgB+5B,SAAS/5B,MAAUA,EAAMiuvB,KAC1C,IAAIn+M,EAAU4sZ,GAAMx87B,IAAQw87B,GAAM187B,IAAQ6ujC,IAAckB,EAEpD19jC,KAAK08jC,iBAEH7ujC,EAAM,GAAKF,EAAM,IAAMiwjC,IACzB/vjC,EAAM,GAIJA,EAAM,GAAKF,EAAM,IAAMkwjC,IACzBlwjC,EAAM,IAQV,IAAImwjC,EAAgB99jC,KAAK+9jC,eACrBC,EAAgBh+jC,KAAKi+jC,eAczB,OAZqB,MAAjBH,IACFjwjC,EAAMiwjC,EACNF,GAAW,GAGQ,MAAjBI,IACFrwjC,EAAMqwjC,EACNH,GAAW,GAKN,CACLhwjC,IAAKA,EACLF,IAAKA,EACLiwjC,SAAUA,EACVC,SAAUA,EACVpghB,QAASA,EAEb,EAEA2+gB,EAAmB18jC,UAAUw+jC,iBAAmB,SAAUC,EAAYzg5B,GAKpE19K,KAAKo+jC,GAAkBD,IAAezg5B,CACxC,EAEA0+4B,EAAmB18jC,UAAU2+jC,oBAAsB,SAAUF,EAAYzg5B,GAQvE19K,KAPWs+jC,GAAwBH,IAOtBzg5B,CACf,EAEA0+4B,EAAmB18jC,UAAU4lC,OAAS,WAEpCtlC,KAAKu+jC,QAAS,CAChB,EAEOnC,CACT,CA9KA,GAiLIkC,GAA0B,CAC5BzwjC,IAAK,iBACLF,IAAK,kBAEHywjC,GAAoB,CACtBvwjC,IAAK,WACLF,IAAK,YAkBA,SAAS6wjC,GAAyB189B,EAAOizB,EAChD8m8B,GAEE,IAAI4C,EAAgB389B,EAAM289B,cAE1B,OAAIA,IAIJA,EAAgB,IAAIrC,GAAmBt69B,EAAOizB,EAAO8m8B,GAErD/59B,EAAM289B,cAAgBA,EACfA,EACT,CACO,SAAS1B,GAAqBj79B,EAAOkoL,GAC1C,OAAiB,MAAVA,EAAiB,KAAOqgrB,GAAMrgrB,GAAU4xe,IAAM95pB,EAAMv1E,MAAMy9P,EACnE,CC1MO,SAAS00yB,GAAe589B,EAAOizB,GACpC,IAAI4p8B,EAAY789B,EAAMv1F,KAClBqyjC,EAAkBJ,GAAyB189B,EAAOizB,EAAOjzB,EAAM0t9B,aAAarypB,YAChFr7T,EAAM+t9B,SAAS+O,EAAgBnhhB,SAC/B,IAAI5viB,EAAM+wjC,EAAgB/wjC,IACtBF,EAAMixjC,EAAgBjxjC,IAUtB219B,EAAUvu2B,EAAMuu2B,QAEpB,GAAIA,GAAyB,SAAdq7F,EAEb,CACA,IAAIE,EAAkBhL,GAAuB,MAAOvwF,GAChDw7F,GAA8B,EAKlC,GAJA,EAAYD,GAAiB,SAAU77E,GACrC87E,EAA8BA,GAA+B97E,EAAYkmC,gBAAkBn05B,EAAM01E,IACnG,IAEIq03B,EAA6B,CAG/B,IAAI9I,EAAoBjC,GAAiB8K,GAErCE,EAeV,SAAgClxjC,EAAKF,EAAKonH,EAC1Cih8B,GAEE,IAAIxB,EAAaz/7B,EAAM01E,KAAK+k3B,YACxBwP,EAAaxK,EAAW,GAAKA,EAAW,GAExCyK,EJ2PN,SAA8BjJ,EAAmBvr3B,EAAMu4yB,GACrD,GAAIgzE,GAAqBvr3B,EAAM,CAC7B,IAAIjnL,EAASwyiC,EAAkBpC,GAAWnp3B,IAE1C,OAIOjnL,CACT,CACF,CIrQ0B07iC,CAAqBlJ,EAAmBjh8B,EAAM01E,MAEtE,QAA0B18J,IAAtBkxhC,EACF,MAAO,CACLpxjC,IAAKA,EACLF,IAAKA,GAIT,IAAIwxjC,EAAcp//B,IAClB,EAAYk//B,GAAmB,SAAU79gC,GACvC+9gC,EAAct8jC,KAAKgL,IAAIuzC,EAAKe,OAAQg9gC,EACtC,IACA,IAAIC,GAAc,IAClB,EAAYH,GAAmB,SAAU79gC,GACvCg+gC,EAAcv8jC,KAAK8K,IAAIyzC,EAAKe,OAASf,EAAKriB,MAAOqgiC,EACnD,IACAD,EAAct8jC,KAAKmjH,IAAIm58B,GACvBC,EAAcv8jC,KAAKmjH,IAAIo58B,GACvB,IAAIC,EAAgBF,EAAcC,EAE9BE,EAAW3xjC,EAAME,EAEjB0xjC,EAAiBD,GADM,GAAKH,EAAcC,GAAeJ,GACNM,EAGvD,MAAO,CACLzxjC,IAFFA,GAAO0xjC,GAAkBJ,EAAcE,GAGrC1xjC,IAJFA,GAAO4xjC,GAAkBH,EAAcC,GAMzC,CAnD0BG,CAAuB3xjC,EAAKF,EAAKonH,EAAOih8B,GAC5DnojC,EAAMkxjC,EAAclxjC,IACpBF,EAAMoxjC,EAAcpxjC,GACtB,CACF,CAEA,MAAO,CACL48J,OAAQ,CAAC18J,EAAKF,GAGd0ljC,OAAQuL,EAAgBhB,SACxBxK,OAAQwL,EAAgBf,SAE5B,CA2CO,SAAS4B,GAAgB399B,EAAO499B,GACrC,IAAI3q8B,EAAQ2q8B,EACRC,EAAajB,GAAe589B,EAAOizB,GACnCw1C,EAASo15B,EAAWp15B,OACpB0m5B,EAAcl87B,EAAM5xH,IAAI,eAExB2+F,aAAiBqzS,KACnBrzS,EAAMz7C,KAAO0uE,EAAM5xH,IAAI,YAGzB,IAAIw7jC,EAAY789B,EAAMv1F,KAClB21d,EAAWntW,EAAM5xH,IAAI,YACrBy8jC,EAAiC,aAAdjB,GAA0C,SAAdA,EACnD789B,EAAM2t9B,UAAUll5B,EAAO,GAAIA,EAAO,IAClCzoE,EAAMmw9B,eAAe,CACnBhB,YAAaA,EACboC,OAAQsM,EAAWtM,OACnBD,OAAQuM,EAAWvM,OACnBJ,YAAa4M,EAAmB7q8B,EAAM5xH,IAAI,eAAiB,KAC3D8vjC,YAAa2M,EAAmB7q8B,EAAM5xH,IAAI,eAAiB,OAO7C,MAAZ++d,GACFpgY,EAAMxzE,aAAewzE,EAAMxzE,YAAY4zc,EAE3C,CAKO,SAAS29lB,GAAmB9q8B,EAAOwytB,GAGxC,GAFAA,EAAWA,GAAYxytB,EAAM5xH,IAAI,QAG/B,OAAQok1B,GAEN,IAAK,WACH,OAAO,IAAIu4O,GAAa,CACtBxlD,YAAavl5B,EAAM4l5B,eAAiB5l5B,EAAM4l5B,iBAAmB5l5B,EAAMqo8B,gBACnE7y5B,OAAQ,CAACxqG,KAAU,OAGvB,IAAK,OACH,OAAO,IAAIw0M,GAAU,CACnBs4L,OAAQ93U,EAAMuu2B,QAAQgqB,iBACtBwE,OAAQ/83B,EAAMuu2B,QAAQng+B,IAAI,YAG9B,QAEE,OAAO,IAAK,GAAM2j+B,SAASv/I,IAAa7ykB,IAGhD,CAoBO,SAASqrzB,GAAmBt13B,GACjC,IAoBmB/oI,EAhBA8w7B,EAJfzmN,EAAiBthmB,EAAKu13B,gBAAgB78jC,IAAI,aAC1C88jC,EAAkC,aAAdx13B,EAAKl+L,KAAsBk+L,EAAK3oG,MAAM0t9B,YAAY,GAAK,KAE/E,MAAwB,SAApB/k3B,EAAK3oG,MAAMv1F,MACIim/B,EAIfzmN,EAHO,SAAUz6e,EAAMwpD,GACrB,OAAOrwK,EAAK3oG,MAAM4l5B,kBAAkBp2rB,EAAMwpD,EAAK03oB,EACjD,GAEO,GAAgBzmN,GAClB,SAAUymN,GACf,OAAO,SAAUlhsB,GAGf,IAAIjwT,EAAQopM,EAAK3oG,MAAM8sc,SAASt9O,GAEhC,OADWkhsB,EAAI/l/B,QAAQ,UAAoB,MAATpL,EAAgBA,EAAQ,GAE5D,CACF,CARO,CAQL0qyB,GACO,GAAkBA,IACVrquB,EAgBfqquB,EAfO,SAAUz6e,EAAMwpD,GAWrB,OAJyB,MAArBmltB,IACFnltB,EAAMxpD,EAAKnwT,MAAQ8+jC,GAGdv+/B,EAAGw+/B,GAAgBz13B,EAAM6mH,GAAOwpD,EAAmB,MAAdxpD,EAAK5hQ,MAAgB,CAC/DA,MAAO4hQ,EAAK5hQ,OACV,KACN,GAGK,SAAU4hQ,GACf,OAAO7mH,EAAK3oG,MAAM8sc,SAASt9O,EAC7B,CAEJ,CACO,SAAS4uwB,GAAgBz13B,EAAM6mH,GAIpC,MAAqB,aAAd7mH,EAAKl+L,KAAsBk+L,EAAK3oG,MAAM8sc,SAASt9O,GAAQA,EAAKnwT,KACrE,CA+CA,SAASg/jC,GAAeC,EAAU368B,GAChC,IAAIwh0B,EAAgBxh0B,EAAS5iH,KAAKsmC,GAAK,IACnCk3hC,EAAcD,EAASrhiC,MACvBuhiC,EAAeF,EAASphiC,OACxBuhiC,EAAaF,EAAcx9jC,KAAKmjH,IAAInjH,KAAKuxH,IAAI6yzB,IAAkBpk7B,KAAKmjH,IAAIs68B,EAAez9jC,KAAK4wH,IAAIwzzB,IAChGu5I,EAAcH,EAAcx9jC,KAAKmjH,IAAInjH,KAAK4wH,IAAIwzzB,IAAkBpk7B,KAAKmjH,IAAIs68B,EAAez9jC,KAAKuxH,IAAI6yzB,IAErG,OADkB,IAAI,GAAam5I,EAASn8jC,EAAGm8jC,EAASp9jC,EAAGu9jC,EAAYC,EAEzE,CAOO,SAASC,GAA0B1r8B,GACxC,IAAImtW,EAAWntW,EAAM5xH,IAAI,YACzB,OAAmB,MAAZ++d,EAAmB,OAASA,CACrC,CAOO,SAASw+lB,GAAoBj23B,GAClC,MAAqB,aAAdA,EAAKl+L,MAA2E,IAApDk0jC,GAA0Bh23B,EAAKu13B,gBACpE,CACO,SAASW,GAAwBnxjC,EAAMy9iC,GAE5C,IAAI2T,EAAa,CAAC,EAalB,OATA,EAAYpxjC,EAAKs3gC,iBAAiBmmC,IAAU,SAAUtiC,GAOpDi2C,EAAW3S,GAAoBz+iC,EAAMm7gC,KAAY,CACnD,IACO,GAAYi2C,EACrB,CCnUA,IAAIC,GAEJ,WACE,SAASA,IAAwB,CAgBjC,OAdAA,EAAqBnhkC,UAAUi9jC,iBAAmB,WAEhD,OADa38jC,KAAK69D,OACHikC,KACjB,EAOA++9B,EAAqBnhkC,UAAUohkC,iBAAmB,WAElD,EAEOD,CACT,CAlBA,GCeO,SAASE,GAAW/9E,GACzB,OAAO,GAAiB,KAAMA,EAChC,CAQO,IAAI,GAAY,CACrB+qE,mBAAoBA,GACpBb,gBAAiBA,GACjBe,oBAAqBA,IAoBhB,SAAS+S,GAAY5iG,EAAYvg6B,GACtC,IAAImv/B,EAAYnv/B,EAEVA,aAAkB,KACtBmv/B,EAAY,IAAI,GAAMnv/B,IAUxB,IAAIikC,EAAQ,GAA8Bkr9B,GAG1C,OAFAlr9B,EAAM2t9B,UAAUrxF,EAAW,GAAIA,EAAW,IAC1C,GAA2Bt83B,EAAOkr9B,GAC3Blr9B,CACT,CAYO,SAASm/9B,GAA4BhowB,GAC1C,EAAaA,EAAO4nwB,GACtB,CAGO,SAAS,GAAgBj4E,EAAgBvs8B,GAE9C,OAAO,GAAqBus8B,EAAgB,KAAM,KAAqB,YADvEvs8B,EAAOA,GAAQ,CAAC,GAC6C1wC,MAC/D,CCnIA,IAAI,GAAU,KACd,SAAS,GAAc3K,EAAGsC,GACtB,OAAOT,KAAKmjH,IAAIhlH,EAAIsC,GAAK,EAC7B,CACO,SAAS,GAAQgoC,EAAQrnC,EAAGjB,GAC/B,IAAIO,EAAI,EACJT,EAAIwoC,EAAO,GACf,IAAKxoC,EACD,OAAO,EAEX,IAAK,IAAIlC,EAAI,EAAGA,EAAI0qC,EAAOjrC,OAAQO,IAAK,CACpC,IAAImjQ,EAAKz4N,EAAO1qC,GAChB2C,GAAK+u+B,GAAYxv+B,EAAE,GAAIA,EAAE,GAAIihQ,EAAG,GAAIA,EAAG,GAAI9/P,EAAGjB,GAC9CF,EAAIihQ,CACR,CACA,IAAIlsI,EAAKvsF,EAAO,GAIhB,OAHK,GAAcxoC,EAAE,GAAI+0H,EAAG,KAAQ,GAAc/0H,EAAE,GAAI+0H,EAAG,MACvDt0H,GAAK+u+B,GAAYxv+B,EAAE,GAAIA,EAAE,GAAI+0H,EAAG,GAAIA,EAAG,GAAI5zH,EAAGjB,IAErC,IAANO,CACX,CC4BA,IAAI29jC,GAAgB,GAEpB,SAASC,GAAgB71hC,EAAQs3F,GAC/B,IAAK,IAAI9/H,EAAI,EAAGA,EAAIwoC,EAAOjrC,OAAQyC,IACjC,GAAoBwoC,EAAOxoC,GAAIwoC,EAAOxoC,GAAI8/H,EAE9C,CAEA,SAASw+7B,GAAqB91hC,EAAQz9B,EAAKF,EAAK62L,GAC9C,IAAK,IAAI5jM,EAAI,EAAGA,EAAI0qC,EAAOjrC,OAAQO,IAAK,CACtC,IAAIkC,EAAIwoC,EAAO1qC,GAEX4jM,IAEF1hM,EAAI0hM,EAAWltE,QAAQx0H,IAGrBA,GAAK4kC,SAAS5kC,EAAE,KAAO4kC,SAAS5kC,EAAE,MACpC,GAAS+K,EAAKA,EAAK/K,GACnB,GAAS6K,EAAKA,EAAK7K,GAEvB,CACF,CAwBA,IAAIu+jC,GAEJ,WACE,SAASA,EAAO32jC,GACd1K,KAAK0K,KAAOA,CACd,CAwBA,OAtBA22jC,EAAO3hkC,UAAUshC,UAAY,SAAU/B,GACrCj/B,KAAK62X,QAAU53V,CACjB,EAQAoiiC,EAAO3hkC,UAAU0gC,UAAY,WAC3B,IAAInB,EAASj/B,KAAK62X,QAQlB,OANK53V,IAGHA,EAASj/B,KAAK62X,QAAU72X,KAAKshkC,cAGxBriiC,CACT,EAEOoiiC,CACT,CA5BA,GAgCIE,GAGF,SAAgCC,EAAUC,GACxCzhkC,KAAKuM,KAAO,UACZvM,KAAKwhkC,SAAWA,EAChBxhkC,KAAKyhkC,UAAYA,CACnB,EAOEC,GAGF,SAAmCp2hC,GACjCtrC,KAAKuM,KAAO,aACZvM,KAAKsrC,OAASA,CAChB,EAOEq2hC,GAEJ,SAAUj5sB,GAGR,SAASi5sB,EAAcj3jC,EAAMupO,EAAYuhB,GACvC,IAAI9oM,EAAQg8T,EAAO9oX,KAAKI,KAAM0K,IAAS1K,KAKvC,OAHA0sD,EAAMngD,KAAO,UACbmgD,EAAMunL,WAAaA,EACnBvnL,EAAMmqU,QAAUrhI,GAAM,CAACA,EAAG,GAAIA,EAAG,IAC1B9oM,CACT,CAoJA,OA7JAkgX,EAAU+0pB,EAAej5sB,GAWzBi5sB,EAAcjikC,UAAU4hkC,WAAa,WAKnC,IAJA,IACIM,EADA3t1B,EAAaj0O,KAAKi0O,WAElB4t1B,EAAiB,EAEZjhkC,EAAI,EAAGA,EAAIqzO,EAAW5zO,OAAQO,IAAK,CAC1C,IAAIwpgC,EAAMn2xB,EAAWrzO,GACjB4gkC,EAAWp3D,EAAIo3D,SAGf58iC,EAAO48iC,GAAYA,EAASnhkC,OAE5BukB,EAAOi9iC,IACTD,EAAax3D,EACby3D,EAAiBj9iC,EAErB,CAEA,GAAIg9iC,EACF,OApHN,SAAkBt2hC,GAQhB,IAPA,IAAIo55B,EAAa,EACbhksB,EAAK,EACLumG,EAAK,EACLpoO,EAAMvzF,EAAOjrC,OACb+lP,EAAK96M,EAAOuzF,EAAM,GAAG,GACrB4yD,EAAKnmJ,EAAOuzF,EAAM,GAAG,GAEhBj+H,EAAI,EAAGA,EAAIi+H,EAAKj+H,IAAK,CAC5B,IAAIgnT,EAAKt8Q,EAAO1qC,GAAG,GACf8wL,EAAKpmJ,EAAO1qC,GAAG,GACfI,EAAIolP,EAAK10D,EAAKk2H,EAAKn2H,EACvBizwB,GAAc1j8B,EACd0/P,IAAOta,EAAKwhE,GAAM5mT,EAClBimW,IAAOx1K,EAAKC,GAAM1wL,EAClBolP,EAAKwhE,EACLn2H,EAAKC,CACP,CAEA,OAAOgzwB,EAAa,CAAChksB,EAAKgksB,EAAa,EAAGz9lB,EAAKy9lB,EAAa,EAAGA,GAAc,CAACp55B,EAAO,GAAG,IAAM,EAAGA,EAAO,GAAG,IAAM,EACnH,CAgGaksV,CAASoqsB,EAAWJ,UAI7B,IAAI9t+B,EAAO1zF,KAAKmkP,kBAChB,MAAO,CAACzwJ,EAAKzvF,EAAIyvF,EAAK30D,MAAQ,EAAG20D,EAAK1wF,EAAI0wF,EAAK10D,OAAS,EAC1D,EAEA2iiC,EAAcjikC,UAAUykP,gBAAkB,SAAU3/C,GAClD,IAAI9wG,EAAO1zF,KAAK6s+B,MAEhB,GAAIn54B,IAAS8wG,EACX,OAAO9wG,EAGT,IAAI7lF,EAAM,CAACkyD,IAAUA,KACjBpyD,EAAM,EAAC,KAAW,KAuBtB,OArBA,EADiB3N,KAAKi0O,YACL,SAAUm2xB,GACR,YAAbA,EAAI79/B,KAEN60jC,GAAqBh3D,EAAIo3D,SAAU3zjC,EAAKF,EAAK62L,GAE7C,EAAK4l0B,EAAI9+9B,QAAQ,SAAUA,GACzB81hC,GAAqB91hC,EAAQz9B,EAAKF,EAAK62L,EACzC,GAEJ,IAEM98J,SAAS75B,EAAI,KAAO65B,SAAS75B,EAAI,KAAO65B,SAAS/5B,EAAI,KAAO+5B,SAAS/5B,EAAI,MAC7EE,EAAI,GAAKA,EAAI,GAAKF,EAAI,GAAKA,EAAI,GAAK,GAGtC+lF,EAAO,IAAI,GAAa7lF,EAAI,GAAIA,EAAI,GAAIF,EAAI,GAAKE,EAAI,GAAIF,EAAI,GAAKE,EAAI,IAEjE22L,IACHxkM,KAAK6s+B,MAAQn54B,GAGRA,CACT,EAEAiu+B,EAAcjikC,UAAUk08B,QAAU,SAAU30yB,GAC1C,IAAIvrE,EAAO1zF,KAAKmkP,kBACZlQ,EAAaj0O,KAAKi0O,WAEtB,IAAKvgJ,EAAKkg3B,QAAQ30yB,EAAM,GAAIA,EAAM,IAChC,OAAO,EAGT6i6B,EAAS,IAAK,IAAIlhkC,EAAI,EAAGi+H,EAAMo1G,EAAW5zO,OAAQO,EAAIi+H,EAAKj+H,IAAK,CAC9D,IAAIwpgC,EAAMn2xB,EAAWrzO,GAErB,GAAiB,YAAbwpgC,EAAI79/B,KAAR,CAIA,IAAIi1jC,EAAWp3D,EAAIo3D,SACfC,EAAYr3D,EAAIq3D,UAEpB,GAAI,GAAuBD,EAAUvi6B,EAAM,GAAIA,EAAM,IAAK,CAExD,IAAK,IAAIv7J,EAAI,EAAGA,GAAK+9jC,EAAYA,EAAUphkC,OAAS,GAAIqD,IACtD,GAAI,GAAuB+9jC,EAAU/9jC,GAAIu7J,EAAM,GAAIA,EAAM,IACvD,SAAS6i6B,EAIb,OAAO,CACT,CAdA,CAeF,CAEA,OAAO,CACT,EAUAH,EAAcjikC,UAAUqikC,YAAc,SAAU99jC,EAAGjB,EAAG+7B,EAAOC,GAC3D,IAAI00D,EAAO1zF,KAAKmkP,kBACZn7E,EAASt1E,EAAK30D,MAAQ20D,EAAK10D,OAE1BD,EAEOC,IACVA,EAASD,EAAQiqI,GAFjBjqI,EAAQiqI,EAAShqI,EASnB,IAJA,IAAIlvB,EAAS,IAAI,GAAa7L,EAAGjB,EAAG+7B,EAAOC,GACvC4jG,EAAYlvC,EAAKw/2B,mBAAmBpj8B,GACpCmkO,EAAaj0O,KAAKi0O,WAEbrzO,EAAI,EAAGA,EAAIqzO,EAAW5zO,OAAQO,IAAK,CAC1C,IAAIwpgC,EAAMn2xB,EAAWrzO,GAEJ,YAAbwpgC,EAAI79/B,MACN40jC,GAAgB/2D,EAAIo3D,SAAU5+7B,GAC9B,EAAKwn4B,EAAIq3D,WAAW,SAAUluV,GAC5B4tV,GAAgB5tV,EAAU3wmB,EAC5B,KAEA,EAAKwn4B,EAAI9+9B,QAAQ,SAAUA,GACzB61hC,GAAgB71hC,EAAQs3F,EAC1B,GAEJ,EAEAlvC,EAAO1zF,KAAK6s+B,OACP/s2B,KAAKhwH,GAEV9P,KAAK62X,QAAU,CAACnjS,EAAKzvF,EAAIyvF,EAAK30D,MAAQ,EAAG20D,EAAK1wF,EAAI0wF,EAAK10D,OAAS,EAClE,EAEA2iiC,EAAcjikC,UAAUmrhC,aAAe,SAAUnghC,GACvC,MAARA,IAAiBA,EAAO1K,KAAK0K,MAC7B,IAAIs3jC,EAAY,IAAIL,EAAcj3jC,EAAM1K,KAAKi0O,WAAYj0O,KAAK62X,SAI9D,OAHAmrsB,EAAUn1F,MAAQ7s+B,KAAK6s+B,MACvBm1F,EAAUD,YAAc,KAEjBC,CACT,EAEOL,CACT,CA/JA,CA+JEN,IAIEY,GAEJ,SAAUv5sB,GAGR,SAASu5sB,EAAav3jC,EAAMw3jC,GAC1B,IAAIx1gC,EAAQg8T,EAAO9oX,KAAKI,KAAM0K,IAAS1K,KAIvC,OAFA0sD,EAAMngD,KAAO,SACbmgD,EAAMy1gC,oBAAsBD,EACrBx1gC,CACT,CAmBA,OA3BAkgX,EAAUq1pB,EAAcv5sB,GAUxBu5sB,EAAavikC,UAAU4hkC,WAAa,WAOlC,IANA,IAAIzn7B,EAAK75I,KAAKmikC,oBACVzu+B,EAAOmmD,EAAGsqG,kBACVllN,EAAS,CAACy0D,EAAKzvF,EAAIyvF,EAAK30D,MAAQ,EAAG20D,EAAK1wF,EAAI0wF,EAAK10D,OAAS,GAC1Do3/B,EAAM,GAAgB8qC,IACtBpxjC,EAAS+pI,EAEN/pI,IAAWA,EAAOsyjC,qBACvB,GAAWhsC,EAAKtmhC,EAAOqg9B,oBAAqBimE,GAC5CtmhC,EAASA,EAAOuhF,OAKlB,OAFA,GAAc+k8B,EAAKA,GACnB,GAAoBn3/B,EAAQA,EAAQm3/B,GAC7Bn3/B,CACT,EAEOgjiC,CACT,CA7BA,CA6BEZ,IC/PF,SAASgB,GAAY7xmB,EAAO8xmB,EAAeC,GACzC,IAAK,IAAI1hkC,EAAI,EAAGA,EAAI2vd,EAAMnwd,OAAQQ,IAChC2vd,EAAM3vd,GAAK2hkC,GAAWhymB,EAAM3vd,GAAIyhkC,EAAczhkC,GAAI0hkC,EAEtD,CAEA,SAASC,GAAWzt7B,EAAYut7B,EAAeC,GAK7C,IAJA,IAAI/+iC,EAAS,GACT0zU,EAAQoruB,EAAc,GACtBnruB,EAAQmruB,EAAc,GAEjB1hkC,EAAI,EAAGA,EAAIm0I,EAAW10I,OAAQO,GAAK,EAAG,CAC7C,IAAIqD,EAAI8wI,EAAWh8H,WAAWnY,GAAK,GAC/BoC,EAAI+xI,EAAWh8H,WAAWnY,EAAI,GAAK,GAEvCqD,EAAIA,GAAK,IAAU,EAAJA,GACfjB,EAAIA,GAAK,IAAU,EAAJA,GAIfk0V,EAFAjzV,GAAKizV,EAGLC,EAFAn0V,GAAKm0V,EAIL3zU,EAAO3hB,KAAK,CAACoC,EAAIs+jC,EAAav/jC,EAAIu/jC,GACpC,CAEA,OAAO/+iC,CACT,CAEe,SAASi/iC,GAAa/lB,EAASgmB,GAE5C,OAAO,EAAW,IADlBhmB,EA7EF,SAAgBrshC,GACd,IAAKA,EAAKsyiC,aACR,OAAOtyiC,EAGT,IAAIuyiC,EAAiBvyiC,EACjBkyiC,EAAcK,EAAeC,UAsCjC,OApCmB,MAAfN,IACFA,EAAc,MAIhB,EADeK,EAAel3hC,UACR,SAAUymC,GAC9B,IAAIptC,EAAWotC,EAAQptC,SACnBu9hC,EAAgBv9hC,EAASu9hC,cACzBx9hC,EAAcC,EAASD,YAG3B,GAAKw9hC,EAIL,OAAQv9hC,EAASx4B,MACf,IAAK,aACHw4B,EAASD,YAAc09hC,GAAW19hC,EAAaw9hC,EAAeC,GAC9D,MAEF,IAAK,UAIL,IAAK,kBACHF,GAAYv9hC,EAAaw9hC,EAAeC,GACxC,MAEF,IAAK,eACH,EAAYz9hC,GAAa,SAAU0rb,EAAO11G,GACxC,OAAOuntB,GAAY7xmB,EAAO8xmB,EAAcxntB,GAAMyntB,EAChD,IAEN,IAEAK,EAAeD,cAAe,EACvBC,CACT,CAgCY/5iC,CAAO6zhC,IACuBhxgC,UAAU,SAAUo3hC,GAE1D,OAAOA,EAAW/9hC,UAAY+9hC,EAAWt6hC,YAAcs6hC,EAAW/9hC,SAASD,YAAYzkC,OAAS,CAClG,KAAI,SAAUyikC,GACZ,IAAIt6hC,EAAas6hC,EAAWt6hC,WACxB4h+B,EAAM04D,EAAW/9hC,SACjBkvM,EAAa,GAEjB,OAAQm2xB,EAAI79/B,MACV,IAAK,UACH,IAAIu4B,EAAcsl+B,EAAItl+B,YAGtBmvM,EAAWpyO,KAAK,IAAI0/jC,GAAuBz8hC,EAAY,GAAIA,EAAY/iC,MAAM,KAC7E,MAEF,IAAK,eACH,EAAYqogC,EAAItl+B,aAAa,SAAUsc,GACjCA,EAAK,IACP6yL,EAAWpyO,KAAK,IAAI0/jC,GAAuBnghC,EAAK,GAAIA,EAAKr/C,MAAM,IAEnE,IACA,MAEF,IAAK,aACHkyO,EAAWpyO,KAAK,IAAI6/jC,GAA0B,CAACt3D,EAAItl+B,eACnD,MAEF,IAAK,kBACHmvM,EAAWpyO,KAAK,IAAI6/jC,GAA0Bt3D,EAAItl+B,cAGtD,IAAIi+J,EAAS,IAAI4+3B,GAAcn5hC,EAAWk6hC,GAAgB,QAASzu1B,EAAYzrM,EAAWgtN,IAE1F,OADAzyD,EAAOv6J,WAAaA,EACbu6J,CACT,GACF,CCxHO,SAAS0ozB,GAAYr79B,EAAM00N,EAAMy/hB,EAAOpxC,EAAej7mB,EAAS8x2B,EAAMx84B,EAAUw8J,GAarF,OAZa,IAAIq7hB,GAAK,CACpBhxwB,MAAO,CACL+b,KAAMA,EACN00N,KAAMA,EACNy/hB,MAAOA,EACPpxC,cAAeA,EACfj7mB,QAASA,EACT8x2B,KAAMA,EACNzonB,SAAU/zR,EAAW,WAAa,KAClCw8J,WAAYA,KAGF7F,iBAChB,CCXA,IAAI,GAAQ++uB,KAgCZ,SAAS6/F,GAA2Bt43B,EAAMu43B,GACxC,IAQIp1+B,EACAq1+B,EATAC,EAAcC,GAAa143B,EAAM,UACjC243B,EAAsB3C,GAA0BuC,GAGpD,OAFaK,GAAaH,EAAaE,KASnC,GAAkBA,GACpBx1+B,EAAS01+B,GAAuC743B,EAAM243B,IAEtDH,EAA+C,SAAxBG,EAuF3B,SAAkC343B,GAChC,IAAIjnL,EAAS,GAAMinL,GAAM843B,aACzB,OAAiB,MAAV//iC,EAAiBA,EAAS,GAAMinL,GAAM843B,aAAe943B,EAAK+43B,2BACnE,CA1F4DC,CAAyBh53B,GAAQ243B,EACzFx1+B,EAAS81+B,GAAoCj53B,EAAMw43B,IAI9CU,GAAaT,EAAaE,EAAqB,CACpDx1+B,OAAQA,EACRg2+B,sBAAuBX,IAE3B,CAyDA,SAASE,GAAa143B,EAAMj+C,GAE1B,OAAO,GAAMi+C,GAAMj+C,KAAU,GAAMi+C,GAAMj+C,GAAQ,GACnD,CAEA,SAAS626B,GAAanwiC,EAAOrO,GAC3B,IAAK,IAAIjkB,EAAI,EAAGA,EAAIsyB,EAAM7yB,OAAQO,IAChC,GAAIsyB,EAAMtyB,GAAGikB,MAAQA,EACnB,OAAOqO,EAAMtyB,GAAGO,KAGtB,CAEA,SAASwikC,GAAazwiC,EAAOrO,EAAK1jB,GAKhC,OAJA+xB,EAAMrxB,KAAK,CACTgjB,IAAKA,EACL1jB,MAAOA,IAEFA,CACT,CAqGA,SAASuikC,GAAoCj53B,EAAMo53B,EAAkBC,GACnE,IAAI/3R,EAAiBg0R,GAAmBt13B,GACpCs53B,EAAet53B,EAAK3oG,MACpBki+B,EAAgBD,EAAavU,YAC7BwT,EAAav43B,EAAKu13B,gBAClBx8iC,EAAS,GAETkrV,EAAO7rW,KAAK8K,KAAKk2jC,GAAoB,GAAK,EAAG,GAC7CjK,EAAYoK,EAAc,GAC1Bjje,EAAYgje,EAAax6gC,QAKX,IAAdqwgC,GAAmBlrtB,EAAO,GAAKqyP,EAAYryP,EAAO,IACpDkrtB,EAAY/2jC,KAAKogD,MAAMpgD,KAAKuK,KAAKwsjC,EAAYlrtB,GAAQA,IAQvD,IAAIu1tB,EAAevD,GAAoBj23B,GACnCy53B,EAAkBlB,EAAW7/jC,IAAI,iBAAmB8gkC,EACpDE,EAAkBnB,EAAW7/jC,IAAI,iBAAmB8gkC,EAEpDC,GAAmBtK,IAAcoK,EAAc,IACjDrmb,EAAQqmb,EAAc,IAMxB,IAFA,IAAIvJ,EAAYb,EAETa,GAAauJ,EAAc,GAAIvJ,GAAa/rtB,EACjDivS,EAAQ88a,GAOV,SAAS98a,EAAQ88a,GACf,IAAI2J,EAAU,CACZjjkC,MAAOs5jC,GAETj3iC,EAAO3hB,KAAKiikC,EAAWrJ,EAAY,CACjC4J,eAAgBt4R,EAAeq4R,GAC/BE,SAAUP,EAAan1hB,SAASw1hB,GAChC3J,UAAWA,GAEf,CAEA,OAfI0J,GAAmB1J,EAAY/rtB,IAASs1tB,EAAc,IACxDrmb,EAAQqmb,EAAc,IAcjBxgjC,CACT,CAEA,SAAS8/iC,GAAuC743B,EAAMo53B,EAAkBC,GACtE,IAAIC,EAAet53B,EAAK3oG,MACpBiqsB,EAAiBg0R,GAAmBt13B,GACpCjnL,EAAS,GAab,OAZA,EAAYugjC,EAAavvQ,YAAY,SAAUljgB,GAC7C,IAAIgzwB,EAAWP,EAAan1hB,SAASt9O,GACjCmpwB,EAAYnpwB,EAAKnwT,MAEjB0ikC,EAAiBvywB,EAAKnwT,MAAOmjkC,IAC/B9gjC,EAAO3hB,KAAKiikC,EAAWrJ,EAAY,CACjC4J,eAAgBt4R,EAAez6e,GAC/BgzwB,SAAUA,EACV7J,UAAWA,GAGjB,IACOj3iC,CACT,CCnTA,IAAI+gjC,GAAoB,CAAC,EAAG,GAKxBn7R,GAEJ,WACE,SAASA,EAAKzxc,EAAK71P,EAAOyoE,GACxBvqK,KAAKwkkC,QAAS,EACdxkkC,KAAKq+vB,SAAU,EACfr+vB,KAAK23V,IAAMA,EACX33V,KAAK8hG,MAAQA,EACb9hG,KAAKo5gC,QAAU7u2B,GAAU,CAAC,EAAG,EAC/B,CAyLA,OAnLA6+nB,EAAK1pyB,UAAUk08B,QAAU,SAAU30yB,GACjC,IAAIsL,EAASvqK,KAAKo5gC,QACdvrgC,EAAMhL,KAAKgL,IAAI08J,EAAO,GAAIA,EAAO,IACjC58J,EAAM9K,KAAK8K,IAAI48J,EAAO,GAAIA,EAAO,IACrC,OAAOtL,GAASpxJ,GAAOoxJ,GAAStxJ,CAClC,EAMAy7xB,EAAK1pyB,UAAU+kkC,YAAc,SAAUj1jC,GACrC,OAAOxP,KAAK8hG,MAAM8x2B,QAAQpk8B,EAC5B,EAMA45xB,EAAK1pyB,UAAU8vjC,UAAY,WACzB,OAAOxvjC,KAAKo5gC,QAAQr3gC,OACtB,EAMAqnyB,EAAK1pyB,UAAUy+9B,kBAAoB,SAAUC,GAC3C,OAAOD,GAAkBC,GAAcp+9B,KAAK8hG,MAAM0t9B,YAAaxvjC,KAAKo5gC,QACtE,EAMAhwO,EAAK1pyB,UAAU+vjC,UAAY,SAAUjphC,EAAOC,GAC1C,IAAI8jI,EAASvqK,KAAKo5gC,QAClB7u2B,EAAO,GAAK/jI,EACZ+jI,EAAO,GAAK9jI,CACd,EAMA2iwB,EAAK1pyB,UAAUm3jC,YAAc,SAAUrnjC,EAAMkpV,GAC3C,IAAInuL,EAASvqK,KAAKo5gC,QACdt36B,EAAQ9hG,KAAK8hG,MAQjB,OAPAtyF,EAAOsyF,EAAMxyF,UAAUE,GAEnBxP,KAAKwkkC,QAAyB,YAAf1i+B,EAAMv1F,MAEvBm4jC,GADAn65B,EAASA,EAAOxoK,QACW+/F,EAAMv4C,SAG5Bm06B,GAAUlu9B,EAAM+0jC,GAAmBh65B,EAAQmuL,EACpD,EAMA0wc,EAAK1pyB,UAAUilkC,YAAc,SAAU1l6B,EAAOy5L,GAC5C,IAAInuL,EAASvqK,KAAKo5gC,QACdt36B,EAAQ9hG,KAAK8hG,MAEb9hG,KAAKwkkC,QAAyB,YAAf1i+B,EAAMv1F,MAEvBm4jC,GADAn65B,EAASA,EAAOxoK,QACW+/F,EAAMv4C,SAGnC,IAAInqD,EAAIs+9B,GAAUz+zB,EAAOsL,EAAQg65B,GAAmB7ruB,GACpD,OAAO14V,KAAK8hG,MAAMA,MAAM1iG,EAC1B,EAMAgqyB,EAAK1pyB,UAAUklkC,YAAc,SAAUzv7B,EAAOujN,GAG9C,EAYA0wc,EAAK1pyB,UAAUmlkC,eAAiB,SAAUzkiB,GAExC,IAAI0kiB,GADJ1kiB,EAAMA,GAAO,CAAC,GACM0kiB,WAAa9kkC,KAAK+kkC,eAGlCC,EAAc31iC,EDxGf,SAAyBo7K,EAAMq63B,GAEpC,MAAqB,aAAdr63B,EAAKl+L,KA0Cd,SAA2Bk+L,EAAMq63B,GAC/B,IAQIx+hC,EACA2+hC,EATAC,EAAa/B,GAAa143B,EAAM,SAChC063B,EAAqB1E,GAA0BqE,GAC/CthjC,EAAS6/iC,GAAa6B,EAAYC,GAEtC,GAAI3hjC,EACF,OAAOA,EAWT,GAJKshjC,EAAU3hkC,IAAI,UAAWsnM,EAAK3oG,MAAM27c,YACvCn3gB,EAAQ,IAGN,GAAkB6+hC,GACpB7+hC,EAAQg9hC,GAAuC743B,EAAM063B,GAAoB,QAItE,GAA2B,SAAvBA,EAA+B,CACpC,IAAIC,EAAerC,GAA2Bt43B,EAAMA,EAAKu13B,iBACzDiF,EAAuBG,EAAaxB,sBACpCt9hC,EAAQ,EAAW8+hC,EAAax3+B,QAAQ,SAAUkstB,GAChD,OAAOA,EAAU2gR,SACnB,GACF,MAEEn0hC,EAAQo9hC,GAAoCj53B,EAD5Cw63B,EAAuBE,GACiD,GAI5E,OAAOxB,GAAauB,EAAYC,EAAoB,CAClD7+hC,MAAOA,EACP2+hC,qBAAsBA,GAE1B,CAhFoCI,CAAkB563B,EAAMq63B,GAAa,CACrEx+hC,MAAO,EAAWmkK,EAAK3oG,MAAM0ytB,YAAY,SAAUljgB,GACjD,OAAOA,EAAKnwT,KACd,IAEJ,CC+FiBmkkC,CAAgBtlkC,KAAM8kkC,GAChBx+hC,OACU,SAAUi/hC,GACrC,MAAO,CACLtm6B,MAAOj/J,KAAK62jC,YAAgC,YAApB72jC,KAAK8hG,MAAMv1F,KAAqBvM,KAAK8hG,MAAMiv9B,oBAAoBwU,GAAWA,GAClG9K,UAAW8K,EAEf,GAAGvlkC,MAGH,OA4FJ,SAA8ByqM,EAAMu63B,EAAaQ,EAAgB9suB,GAC/D,IAAI+suB,EAAWT,EAAY3kkC,OAE3B,GAAKoqM,EAAK+53B,SAAUgB,GAAmBC,EAAvC,CAIA,IACI9gjC,EACA+gjC,EAFAlR,EAAa/p3B,EAAK+k3B,YAItB,GAAiB,IAAbiW,EACFT,EAAY,GAAG/l6B,MAAQu15B,EAAW,GAClC7viC,EAAOqgjC,EAAY,GAAK,CACtB/l6B,MAAOu15B,EAAW,QAEf,CACL,IAAImR,EAAWX,EAAYS,EAAW,GAAGhL,UAAYuK,EAAY,GAAGvK,UAChEmL,GAAWZ,EAAYS,EAAW,GAAGxm6B,MAAQ+l6B,EAAY,GAAG/l6B,OAAS0m6B,EACzE,EAAKX,GAAa,SAAUa,GAC1BA,EAAU5m6B,OAAS2m6B,EAAU,CAC/B,IAEAF,EAAW,EADMj73B,EAAK3oG,MAAM0t9B,YACF,GAAKwV,EAAYS,EAAW,GAAGhL,UACzD91iC,EAAO,CACLs6I,MAAO+l6B,EAAYS,EAAW,GAAGxm6B,MAAQ2m6B,EAAUF,GAErDV,EAAYnjkC,KAAK8iB,EACnB,CAEA,IAAI05uB,EAAUm2T,EAAW,GAAKA,EAAW,GAErCz0F,EAAWilG,EAAY,GAAG/l6B,MAAOu15B,EAAW,MAC9C97tB,EAAQssuB,EAAY,GAAG/l6B,MAAQu15B,EAAW,GAAKwQ,EAAY7mhC,SAGzDu6S,GAASqnoB,EAAWy0F,EAAW,GAAIwQ,EAAY,GAAG/l6B,QACpD+l6B,EAAYn6iC,QAAQ,CAClBo0I,MAAOu15B,EAAW,KAIlBz0F,EAAWy0F,EAAW,GAAI7viC,EAAKs6I,SACjCy5L,EAAQ/zU,EAAKs6I,MAAQu15B,EAAW,GAAKwQ,EAAYpjkC,OAG/C82V,GAASqnoB,EAAWp78B,EAAKs6I,MAAOu15B,EAAW,KAC7CwQ,EAAYnjkC,KAAK,CACfo9J,MAAOu15B,EAAW,IA3CtB,CA+CA,SAASz0F,EAAW/+9B,EAAGsC,GAKrB,OAFAtC,EAAIiiD,GAAMjiD,GACVsC,EAAI2/C,GAAM3/C,GACH+6vB,EAAUr9vB,EAAIsC,EAAItC,EAAIsC,CAC/B,CACF,CAxJIwikC,CAAqB9lkC,KAAMglkC,EADNF,EAAU3hkC,IAAI,kBACqBi9hB,EAAI1nM,OACrDssuB,CACT,EAEA57R,EAAK1pyB,UAAUqmkC,oBAAsB,WACnC,GAAwB,YAApB/lkC,KAAK8hG,MAAMv1F,KAEb,MAAO,GAGT,IACI0kjC,EADiBjxjC,KAAK+0H,MAAM6iE,SAAS,aACRz0L,IAAI,eAerC,OAbM8tjC,EAAc,GAAKA,EAAc,MACrCA,EAAc,GAIO5hiC,EADNrvB,KAAK8hG,MAAMkv9B,cAAcC,IACH,SAAU4B,GAC/C,OAAOxjiC,EAAIwjiC,GAAiB,SAAUE,GACpC,MAAO,CACL9z5B,MAAOj/J,KAAK62jC,YAAY9D,GACxB0H,UAAW1H,EAEf,GAAG/yjC,KACL,GAAGA,KAEL,EAEAopyB,EAAK1pyB,UAAUsmkC,cAAgB,WAC7B,OD1J6Bv73B,EC0JLzqM,KDxJL,aAAdyqM,EAAKl+L,KAoBd,SAA4Bk+L,GAC1B,IAAIu43B,EAAav43B,EAAKu13B,gBAClBx8iC,EAASu/iC,GAA2Bt43B,EAAMu43B,GAC9C,OAAQA,EAAW7/jC,IAAI,SAAWsnM,EAAK3oG,MAAM27c,UAAY,CACvD7vd,OAAQ,GACRg2+B,sBAAuBpgjC,EAAOogjC,uBAC5BpgjC,CACN,CA3BoCyijC,CAAmBx73B,GA+FvD,SAA8BA,GAC5B,IAAInkK,EAAQmkK,EAAK3oG,MAAM0ytB,WACnBzoB,EAAiBg0R,GAAmBt13B,GACxC,MAAO,CACL78G,OAAQ,EAAWtnD,GAAO,SAAUgrR,EAAMwpD,GACxC,MAAO,CACLprT,MAAO4hQ,EAAK5hQ,MACZ20gC,eAAgBt4R,EAAez6e,EAAMwpD,GACrCwptB,SAAU753B,EAAK3oG,MAAM8sc,SAASt9O,GAC9BmpwB,UAAWnpwB,EAAKnwT,MAEpB,IAEJ,CA5G+D+kkC,CAAqBz73B,ICwJlD78G,OD1J3B,IAA0B68G,CC2J/B,EAEA2+lB,EAAK1pyB,UAAUsgkC,cAAgB,WAC7B,OAAOhgkC,KAAK+0H,MAAM6iE,SAAS,YAC7B,EAUAwxmB,EAAK1pyB,UAAUqlkC,aAAe,WAC5B,OAAO/kkC,KAAK+0H,MAAM6iE,SAAS,WAC7B,EAMAwxmB,EAAK1pyB,UAAU+0jC,aAAe,WAC5B,IAAID,EAAax0jC,KAAKo5gC,QAClBh7C,EAAap+9B,KAAK8hG,MAAM0t9B,YACxB3w7B,EAAMu/1B,EAAW,GAAKA,EAAW,IAAMp+9B,KAAKwkkC,OAAS,EAAI,GAErD,IAAR3l8B,IAAcA,EAAM,GACpB,IAAIj6G,EAAO/hB,KAAKmjH,IAAIwu8B,EAAW,GAAKA,EAAW,IAC/C,OAAO3xjC,KAAKmjH,IAAIphG,GAAQi6G,CAC1B,EAQAuqqB,EAAK1pyB,UAAU8jkC,0BAA4B,WACzC,ODlDG,SAAmC/43B,GACxC,IAAIpiK,EA8EN,SAAoDoiK,GAClD,IAAIu43B,EAAav43B,EAAKu13B,gBACtB,MAAO,CACLmG,WAAY173B,EAAK273B,UAAY373B,EAAK273B,YAAc373B,EAAKi/V,eAAiBj/V,EAAKi/V,eAAiB,GAAK,EACjGigd,YAAaq5E,EAAW7/jC,IAAI,WAAa,EACzC2hP,KAAMk+0B,EAAWx9S,UAErB,CArFe6gT,CAA2C573B,GACpDshmB,EAAiBg0R,GAAmBt13B,GACpClkF,GAAYl+E,EAAO89hC,WAAa99hC,EAAOsh9B,aAAe,IAAM9m/B,KAAKsmC,GACjE46hC,EAAet53B,EAAK3oG,MACpBki+B,EAAgBD,EAAavU,YAI7Bzud,EAAYgje,EAAax6gC,QAE7B,GAAIy6gC,EAAc,GAAKA,EAAc,GAAK,EACxC,OAAO,EAGT,IAAIt1tB,EAAO,EAEPqyP,EAAY,KACdryP,EAAO7rW,KAAK8K,IAAI,EAAG9K,KAAKyK,MAAMyzlB,EAAY,MAW5C,IARA,IAAI05d,EAAYuJ,EAAc,GAC1BsC,EAAW773B,EAAKos3B,YAAY4D,EAAY,GAAKhw3B,EAAKos3B,YAAY4D,GAC9D8L,EAAQ1jkC,KAAKmjH,IAAIsg9B,EAAWzjkC,KAAKuxH,IAAI7N,IACrCig9B,EAAQ3jkC,KAAKmjH,IAAIsg9B,EAAWzjkC,KAAK4wH,IAAIlN,IACrCkg9B,EAAO,EACPC,EAAO,EAGJjM,GAAauJ,EAAc,GAAIvJ,GAAa/rtB,EAAM,CACvD,IAAI3vU,EACAC,EAGA00D,EAAO,GAA4Bq4sB,EAAe,CACpD5qyB,MAAOs5jC,IACLpyhC,EAAOy8M,KAAM,SAAU,OAE3B/lN,EAAqB,IAAb20D,EAAK30D,MACbC,EAAuB,IAAd00D,EAAK10D,OAEdyniC,EAAO5jkC,KAAK8K,IAAI84jC,EAAM1niC,EAAO,GAC7B2niC,EAAO7jkC,KAAK8K,IAAI+4jC,EAAM1niC,EAAQ,EAChC,CAEA,IAAI2niC,EAAKF,EAAOF,EACZK,EAAKF,EAAOF,EAEhBl6hC,MAAMq6hC,KAAQA,EAAK5mgC,KACnBzzB,MAAMs6hC,KAAQA,EAAK7mgC,KACnB,IAAImia,EAAWr/d,KAAK8K,IAAI,EAAG9K,KAAKyK,MAAMzK,KAAKgL,IAAI84jC,EAAIC,KAC/C1ziC,EAAQ,GAAMu3K,EAAK11E,OACnBy/7B,EAAa/p3B,EAAK+k3B,YAClBqX,EAAmB3ziC,EAAM2ziC,iBACzBC,EAAgB5ziC,EAAM4ziC,cAsB1B,OAfwB,MAApBD,GAA6C,MAAjBC,GAAyBjkkC,KAAKmjH,IAAI6g9B,EAAmB3kmB,IAAa,GAAKr/d,KAAKmjH,IAAI8g9B,EAAgB/le,IAAc,GAE3I8le,EAAmB3kmB,GAEnBhvc,EAAM6ziC,cAAgBvS,EAAW,IAAMthiC,EAAM8ziC,cAAgBxS,EAAW,GACzEtylB,EAAW2kmB,GAIT3ziC,EAAM4ziC,cAAgB/le,EACtB7tkB,EAAM2ziC,iBAAmB3kmB,EACzBhvc,EAAM6ziC,YAAcvS,EAAW,GAC/BthiC,EAAM8ziC,YAAcxS,EAAW,IAG5BtylB,CACT,CC3BWshmB,CAA0BxjkC,KACnC,EAEOopyB,CACT,CAjMA,GAmMA,SAASs7R,GAAmBn65B,EAAQ085B,GAClC,IAEIxntB,GAFOl1M,EAAO,GAAKA,EAAO,IACpB085B,EACgB,EAC1B185B,EAAO,IAAMk1M,EACbl1M,EAAO,IAAMk1M,CACf,CAwEA,YCxOO,SAASyntB,GAAqB11jC,GACnC,IAAIynT,EAAQvsK,GAAe28P,OAAO73Y,GAElC,OADAk7I,GAAeg60B,cAAcztqB,GACtBA,CACT,CACO,SAASkuwB,GAAoB31jC,GAClC,IAAIg5J,EAAO,GAAc6+O,OAAO73Y,GAEhC,OADA,GAAck19B,cAAcl8zB,GACrBA,CACT,CACO,SAAS485B,GAAkB51jC,GAChC,IAAIynT,EAAQ0kd,GAAYt0X,OAAO73Y,GAE/B,OADAmswB,GAAY+oN,cAAcztqB,GACnBA,CACT,CACO,SAASouwB,GAAgB71jC,GAC9B,IAAIg5J,EAAOw4oB,GAAU35Z,OAAO73Y,GAE5B,OADAwxyB,GAAU0jL,cAAcl8zB,GACjBA,CACT,CC9DA,IAAI,GAAgB,EAAV3nK,KAAKsmC,GACX,GAAM,GAAUyl8B,IAChB04F,GAAuB,CAAC,MAAO,QAAS,SAAU,QAEtD,SAASC,GAAmBll9B,EAAK4mC,EAAUv1D,EAAM8z+B,EAAOC,GACtD,IAAI1oiC,EAAQ20D,EAAK30D,MACbC,EAAS00D,EAAK10D,OAElB,OAAQqjF,GACN,IAAK,MACHml9B,EAAMv7jC,IAAIynF,EAAKzvF,EAAI86B,EAAQ,EAAG20D,EAAK1wF,EAAIimJ,GACvCw+6B,EAAOx7jC,IAAI,GAAI,GACf,MAEF,IAAK,SACHu7jC,EAAMv7jC,IAAIynF,EAAKzvF,EAAI86B,EAAQ,EAAG20D,EAAK1wF,EAAIg8B,EAASiqH,GAChDw+6B,EAAOx7jC,IAAI,EAAG,GACd,MAEF,IAAK,OACHu7jC,EAAMv7jC,IAAIynF,EAAKzvF,EAAIglJ,EAAUv1D,EAAK1wF,EAAIg8B,EAAS,GAC/CyoiC,EAAOx7jC,KAAK,EAAG,GACf,MAEF,IAAK,QACHu7jC,EAAMv7jC,IAAIynF,EAAKzvF,EAAI86B,EAAQkqH,EAAUv1D,EAAK1wF,EAAIg8B,EAAS,GACvDyoiC,EAAOx7jC,IAAI,EAAG,GAGpB,CAEA,SAASy7jC,GAAkBhn0B,EAAIumG,EAAIlnW,EAAG8oxB,EAAYC,EAAU2lN,EAAexq+B,EAAGjB,EAAGk9H,GAC/Ej8H,GAAKy8P,EACL19P,GAAKikW,EACL,IAAItkW,EAAIE,KAAK4yF,KAAKxxF,EAAIA,EAAIjB,EAAIA,GAI1B+nxB,GAHJ9mxB,GAAKtB,GAGQ5C,EAAI2gQ,EACbsqhB,GAHJhoxB,GAAKL,GAGQ5C,EAAIknW,EAEjB,GAAIpkW,KAAKmjH,IAAI6iqB,EAAaC,GAAY,GAAM,KAI1C,OAFA5opB,EAAI,GAAK6qpB,EACT7qpB,EAAI,GAAK8qpB,EACFroxB,EAAI5C,EAGb,GAAI0u+B,EAAe,CACjB,IAAI7qoB,EAAMilb,EACVA,EAAawpN,GAAgBvpN,GAC7BA,EAAWupN,GAAgBzuoB,EAC7B,MACEilb,EAAawpN,GAAgBxpN,GAC7BC,EAAWupN,GAAgBvpN,GAGzBD,EAAaC,IACfA,GAAY,IAGd,IAAIn6iB,EAAQ9rO,KAAK0xH,MAAMvxH,EAAGiB,GAM1B,GAJI0qO,EAAQ,IACVA,GAAS,IAGPA,GAASk6iB,GAAcl6iB,GAASm6iB,GAAYn6iB,EAAQ,IAAOk6iB,GAAcl6iB,EAAQ,IAAOm6iB,EAI1F,OAFA5opB,EAAI,GAAK6qpB,EACT7qpB,EAAI,GAAK8qpB,EACFroxB,EAAI5C,EAGb,IAAI6nT,EAAK7nT,EAAI8C,KAAKuxH,IAAIy0pB,GAAcnohB,EAChChvE,EAAK3xL,EAAI8C,KAAK4wH,IAAIo1pB,GAAc5hb,EAChCnqK,EAAK/8L,EAAI8C,KAAKuxH,IAAI00pB,GAAYpohB,EAC9BjpI,EAAK13H,EAAI8C,KAAK4wH,IAAIq1pB,GAAY7hb,EAC9B0tX,GAAM/sa,EAAK3jT,IAAM2jT,EAAK3jT,IAAMytL,EAAK1uL,IAAM0uL,EAAK1uL,GAC5CyxI,GAAMqoD,EAAK74L,IAAM64L,EAAK74L,IAAMwzH,EAAKz0H,IAAMy0H,EAAKz0H,GAEhD,OAAI2xtB,EAAKlglB,GACPvU,EAAI,GAAK0nL,EACT1nL,EAAI,GAAKwxD,EACF7uL,KAAK4yF,KAAKk/nB,KAEjBz0lB,EAAI,GAAK48D,EACT58D,EAAI,GAAKzI,EACF50H,KAAK4yF,KAAKg/C,GAErB,CAEA,SAASkz7B,GAAmB//wB,EAAIl2H,EAAIoL,EAAIrlE,EAAIxzH,EAAGjB,EAAGk9H,EAAK0n8B,GACrD,IAAIpz7B,EAAKvwI,EAAI2jT,EACTvzK,EAAKrxI,EAAI0uL,EACT291B,EAAMvy1B,EAAK8qH,EACX0nuB,EAAM735B,EAAKi6D,EACXm24B,EAAUhlkC,KAAK4yF,KAAK457B,EAAMA,EAAMC,EAAMA,GAKtClwhC,GADeo1I,GAHnB664B,GAAOw4C,GAGuBxz7B,GAF9Bi74B,GAAOu4C,IAGgBA,EAEnBD,IACFxokC,EAAIyD,KAAKgL,IAAIhL,KAAK8K,IAAIvO,EAAG,GAAI,IAG/BA,GAAKyokC,EACL,IAAI98S,EAAK7qpB,EAAI,GAAK0nL,EAAKxoT,EAAIiwhC,EACvBrkQ,EAAK9qpB,EAAI,GAAKwxD,EAAKtyL,EAAIkwhC,EAC3B,OAAOzshC,KAAK4yF,MAAMs1rB,EAAK9mxB,IAAM8mxB,EAAK9mxB,IAAM+mxB,EAAKhoxB,IAAMgoxB,EAAKhoxB,GAC1D,CAEA,SAAS8kkC,GAAmBlgxB,EAAIl2H,EAAI3yJ,EAAOC,EAAQ/6B,EAAGjB,EAAGk9H,GACnDnhG,EAAQ,IACV6oR,GAAU7oR,EACVA,GAASA,GAGPC,EAAS,IACX0yJ,GAAU1yJ,EACVA,GAAUA,GAGZ,IAAI89J,EAAK8qH,EAAK7oR,EACV04F,EAAKi6D,EAAK1yJ,EACV+rvB,EAAK7qpB,EAAI,GAAKr9H,KAAKgL,IAAIhL,KAAK8K,IAAI1J,EAAG2jT,GAAK9qH,GACxCkulB,EAAK9qpB,EAAI,GAAKr9H,KAAKgL,IAAIhL,KAAK8K,IAAI3K,EAAG0uL,GAAKj6D,GAC5C,OAAO50H,KAAK4yF,MAAMs1rB,EAAK9mxB,IAAM8mxB,EAAK9mxB,IAAM+mxB,EAAKhoxB,IAAMgoxB,EAAKhoxB,GAC1D,CAEA,IAAI+kkC,GAAQ,GAEZ,SAASC,GAAmB77jC,EAAIunF,EAAMwsC,GACpC,IAAI65N,EAAO+tuB,GAAmBp0+B,EAAKzvF,EAAGyvF,EAAK1wF,EAAG0wF,EAAK30D,MAAO20D,EAAK10D,OAAQ7yB,EAAGlI,EAAGkI,EAAGnJ,EAAG+kkC,IAEnF,OADA7n8B,EAAIj0H,IAAI87jC,GAAM,GAAIA,GAAM,IACjBhuuB,CACT,CAOA,SAASkuuB,GAAmB97jC,EAAIkqB,EAAM6pG,GAYpC,IAXA,IAII0nL,EACAl2H,EALA7yK,EAAK,EACLf,EAAK,EACLsoO,EAAK,EACL30D,EAAK,EAGL3L,EAAU/lH,IACVvwD,EAAO6mB,EAAK7mB,KACZvL,EAAIkI,EAAGlI,EACPjB,EAAImJ,EAAGnJ,EAEFpC,EAAI,EAAGA,EAAI4O,EAAKnP,QAAS,CAChC,IAAI6w+B,EAAM1h+B,EAAK5O,KAEL,IAANA,IAGFwlP,EAFAvnO,EAAKrP,EAAK5O,GAGV6wL,EAFA3zK,EAAKtO,EAAK5O,EAAI,IAKhB,IAAI+B,EAAImjL,EAER,OAAQorzB,GACN,KAAK,GAAIrr+B,EAKPgZ,EAFAunO,EAAK52O,EAAK5O,KAGVkd,EAFA2zK,EAAKjiL,EAAK5O,KAGV,MAEF,KAAK,GAAIyD,EACP1B,EAAIglkC,GAAmB9ojC,EAAIf,EAAItO,EAAK5O,GAAI4O,EAAK5O,EAAI,GAAIqD,EAAGjB,EAAG+kkC,IAAO,GAClElpjC,EAAKrP,EAAK5O,KACVkd,EAAKtO,EAAK5O,KACV,MAEF,KAAK,GAAIuD,EACPxB,EAAIq88B,GAAkBng8B,EAAIf,EAAItO,EAAK5O,KAAM4O,EAAK5O,KAAM4O,EAAK5O,KAAM4O,EAAK5O,KAAM4O,EAAK5O,GAAI4O,EAAK5O,EAAI,GAAIqD,EAAGjB,EAAG+kkC,IACtGlpjC,EAAKrP,EAAK5O,KACVkd,EAAKtO,EAAK5O,KACV,MAEF,KAAK,GAAIoF,EACPrD,EAAIw88B,GAAsBtg8B,EAAIf,EAAItO,EAAK5O,KAAM4O,EAAK5O,KAAM4O,EAAK5O,GAAI4O,EAAK5O,EAAI,GAAIqD,EAAGjB,EAAG+kkC,IACpFlpjC,EAAKrP,EAAK5O,KACVkd,EAAKtO,EAAK5O,KACV,MAEF,KAAK,GAAIiE,EAEP,IAAI67P,EAAKlxP,EAAK5O,KACVqmW,EAAKz3V,EAAK5O,KACVs8K,EAAK1tK,EAAK5O,KACVu8K,EAAK3tK,EAAK5O,KACVspT,EAAQ16S,EAAK5O,KACbky+B,EAAStj+B,EAAK5O,KAElBA,GAAK,EACL,IAAI6t+B,KAAmB,EAAIj/9B,EAAK5O,MAChCgnT,EAAK/kT,KAAKuxH,IAAI81L,GAAShtI,EAAKwjF,EAC5BhvE,EAAK7uL,KAAK4wH,IAAIy2L,GAAS/sI,EAAK8pL,EAExBrmW,GAAK,IAEPwlP,EAAKwhE,EACLn2H,EAAKC,GAMP/uL,EAAI+kkC,GAAkBhn0B,EAAIumG,EAAI9pL,EAAI+sI,EAAOA,EAAQ4orB,EAAQrE,GAF/Cxq+B,EAAIy8P,GAAMvjF,EAAKD,EAAKwjF,EAE8C19P,EAAG+kkC,IAC/ElpjC,EAAKhc,KAAKuxH,IAAI81L,EAAQ4orB,GAAU51zB,EAAKwjF,EACrC5iP,EAAKjb,KAAK4wH,IAAIy2L,EAAQ4orB,GAAU31zB,EAAK8pL,EACrC,MAEF,KAAK,GAAI3iW,EAKP3B,EAAImlkC,GAJJ1h1B,EAAKvnO,EAAKrP,EAAK5O,KACf6wL,EAAK3zK,EAAKtO,EAAK5O,KACH4O,EAAK5O,KACJ4O,EAAK5O,KAC4BqD,EAAGjB,EAAG+kkC,IACpD,MAEF,KAAK,GAAItjkC,EACP9B,EAAIglkC,GAAmB9ojC,EAAIf,EAAIsoO,EAAI30D,EAAIxtL,EAAGjB,EAAG+kkC,IAAO,GACpDlpjC,EAAKunO,EACLtoO,EAAK2zK,EAIL9uL,EAAImjL,IACNA,EAAUnjL,EACVu9H,EAAIj0H,IAAI87jC,GAAM,GAAIA,GAAM,IAE5B,CAEA,OAAOji5B,CACT,CAGA,IAAIoi5B,GAAM,IAAI,GACVC,GAAM,IAAI,GACVC,GAAM,IAAI,GACV5u8B,GAAM,IAAI,GACV6u8B,GAAO,IAAI,GASR,SAASC,GAAsBx4jC,EAAQy4jC,GAC5C,GAAKz4jC,EAAL,CAIA,IAAIomiC,EAAYpmiC,EAAOmr8B,mBACnB558B,EAAQyO,EAAO68E,iBAEnB,GAAMtrF,GAAS60iC,EAAf,CAIA,IAAIsyB,EAAmB14jC,EAAOqmiC,qBAAuB,CAAC,EAClD7qgC,EAAS,CAAC,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,IAC9Bm9hC,EAAcD,EAAiB7t+B,YAAc2s+B,GAC7ChqB,EAAYj8iC,EAAM8iP,kBAAkB5zN,QACxC+shC,EAAUxxG,eAAezq8B,EAAMuv9B,wBAC/B,IAAI9qyB,EAAU/lH,IACV2ogC,EAAcF,EAAiBv/qB,OAC/B0/qB,EAAkB74jC,EAAO8g9B,uBACzBg4G,EAA0BD,GAAmB,GAAO,GAAIA,GACxD9p8B,EAAM0p8B,EAAeplkC,IAAI,YAAc,EAEvCulkC,GACFN,GAAIto8B,KAAK4o8B,GAGX,IAAK,IAAI9nkC,EAAI,EAAGA,EAAI6nkC,EAAYpokC,OAAQO,IAAK,CAE3C2mkC,GADgBkB,EAAY7nkC,GACE,EAAG08iC,EAAW4qB,GAAK1u8B,IACjD,GAAMky0B,YAAYy8H,GAAKD,GAAK1u8B,GAAKqF,GAEjCsp8B,GAAIvl8B,UAAUgm8B,GAEd,IAAI7yC,EAAejmhC,EAAOq0O,kBACtB41G,EAAO2uuB,EAAcA,EAAYz/6B,SAASk/6B,IAAOr4jC,aAAkB,GAAOm4jC,GAAmBE,GAAKr4jC,EAAOumB,KAAM+xiC,IAAOJ,GAAmBG,GAAKpyC,EAAcqyC,IAE5JruuB,EAAOj0K,IACTA,EAAUi0K,EAEVouuB,GAAIvl8B,UAAU+l8B,GACdP,GAAIxl8B,UAAU+l8B,GACdP,GAAIv68B,QAAQviF,EAAO,IACnB68hC,GAAIt68B,QAAQviF,EAAO,IACnB48hC,GAAIr68B,QAAQviF,EAAO,IAEvB,CAEAu9hC,GAAev9hC,EAAQi9hC,EAAeplkC,IAAI,iBAC1C+yiC,EAAUtvpB,SAAS,CACjBt7W,OAAQA,GAxCV,CAPA,CAiDF,CAEA,IAAIu++B,GAAS,GACTi/C,GAAe,IAAI,GAOhB,SAASD,GAAeE,EAAYC,GACzC,GAAMA,GAAgB,KAAOA,EAAe,EAA5C,CAIAA,EAAeA,EAAe,IAAMnmkC,KAAKsmC,GAKzC++hC,GAAI3t4B,UAAUwu4B,EAAW,IACzBZ,GAAI5t4B,UAAUwu4B,EAAW,IACzBX,GAAI7t4B,UAAUwu4B,EAAW,IACzB,GAAM7ziC,IAAIskG,GAAK0u8B,GAAKC,IACpB,GAAMjziC,IAAImziC,GAAMD,GAAKD,IACrB,IAAIxiH,EAAOns1B,GAAIqF,MACX0m1B,EAAO8iH,GAAKxp8B,MAEhB,KAAI8m1B,EAAO,MAAQJ,EAAO,MAA1B,CAIA/r1B,GAAI13B,MAAM,EAAI6j3B,GACd0iH,GAAKvm+B,MAAM,EAAIyj3B,GACf,IAAI0jH,EAAWzv8B,GAAIgpD,IAAI6l5B,IAGvB,GAFsBxlkC,KAAKuxH,IAAI408B,GAETC,EAAU,CAG9B,IAAItmkC,EAAIglkC,GAAmBQ,GAAIlkkC,EAAGkkkC,GAAInlkC,EAAGolkC,GAAInkkC,EAAGmkkC,GAAIplkC,EAAGklkC,GAAIjkkC,EAAGikkC,GAAIllkC,EAAG6mhC,IAAQ,GAC7Ei/C,GAAavu4B,UAAUsv1B,IAEvBi/C,GAAap9H,YAAY28H,GAAM1lkC,EAAIE,KAAKinC,IAAIjnC,KAAKsmC,GAAK6/hC,IAEtD,IAAI5pkC,EAAIgpkC,GAAInkkC,IAAMkkkC,GAAIlkkC,GAAK6kkC,GAAa7kkC,EAAIkkkC,GAAIlkkC,IAAMmkkC,GAAInkkC,EAAIkkkC,GAAIlkkC,IAAM6kkC,GAAa9lkC,EAAImlkC,GAAInlkC,IAAMolkC,GAAIplkC,EAAImlkC,GAAInlkC,GAE/G,GAAIspC,MAAMltC,GACR,OAGEA,EAAI,EACN,GAAM0gI,KAAKgp8B,GAAcX,IAChB/okC,EAAI,GACb,GAAM0gI,KAAKgp8B,GAAcV,IAG3BU,GAAaj78B,QAAQk78B,EAAW,GAClC,CA5BA,CAjBA,CA8CF,CAMO,SAASG,GAAkBH,EAAYI,EAAeC,GAC3D,GAAMA,GAAmB,KAAOA,EAAkB,EAAlD,CAIAA,EAAkBA,EAAkB,IAAMvmkC,KAAKsmC,GAC/C++hC,GAAI3t4B,UAAUwu4B,EAAW,IACzBZ,GAAI5t4B,UAAUwu4B,EAAW,IACzBX,GAAI7t4B,UAAUwu4B,EAAW,IACzB,GAAM7ziC,IAAIskG,GAAK2u8B,GAAKD,IACpB,GAAMhziC,IAAImziC,GAAMD,GAAKD,IACrB,IAAIxiH,EAAOns1B,GAAIqF,MACX0m1B,EAAO8iH,GAAKxp8B,MAEhB,KAAI8m1B,EAAO,MAAQJ,EAAO,QAI1B/r1B,GAAI13B,MAAM,EAAI6j3B,GACd0iH,GAAKvm+B,MAAM,EAAIyj3B,GACA/r1B,GAAIgpD,IAAI2m5B,GACEtmkC,KAAKuxH,IAAIg18B,IAEC,CAEjC,IAAIzmkC,EAAIglkC,GAAmBQ,GAAIlkkC,EAAGkkkC,GAAInlkC,EAAGolkC,GAAInkkC,EAAGmkkC,GAAIplkC,EAAGklkC,GAAIjkkC,EAAGikkC,GAAIllkC,EAAG6mhC,IAAQ,GAC7Ei/C,GAAavu4B,UAAUsv1B,IACvB,IAAIw/C,EAAUxmkC,KAAKsmC,GAAK,EAEpBmgiC,EAAWD,EADFxmkC,KAAK2lT,KAAK6/wB,GAAK7l5B,IAAI2m5B,IACEC,EAElC,GAAIE,GAAYD,EAEd,GAAMvp8B,KAAKgp8B,GAAcV,QACpB,CAELU,GAAap9H,YAAY28H,GAAM1lkC,EAAIE,KAAKinC,IAAIjnC,KAAKsmC,GAAK,EAAImgiC,IAE1D,IAAIlqkC,EAAIgpkC,GAAInkkC,IAAMkkkC,GAAIlkkC,GAAK6kkC,GAAa7kkC,EAAIkkkC,GAAIlkkC,IAAMmkkC,GAAInkkC,EAAIkkkC,GAAIlkkC,IAAM6kkC,GAAa9lkC,EAAImlkC,GAAInlkC,IAAMolkC,GAAIplkC,EAAImlkC,GAAInlkC,GAE/G,GAAIspC,MAAMltC,GACR,OAGEA,EAAI,EACN,GAAM0gI,KAAKgp8B,GAAcX,IAChB/okC,EAAI,GACb,GAAM0gI,KAAKgp8B,GAAcV,GAE7B,CAEAU,GAAaj78B,QAAQk78B,EAAW,GAClC,CAjDA,CAkDF,CAEA,SAASQ,GAAkBrzB,EAAW/tgC,EAAQ6zhB,EAAW4rb,GACvD,IAAI4hF,EAAyB,WAAdxtgB,EACX26Z,EAAW6yG,EAAWtzB,EAAYA,EAAU1gF,YAAYx5Z,GAE5D26Z,EAASxu7B,OAASA,EAElB,IAAI29E,EAAS8h4B,EAAWzk/B,IAAI,UAExB2iH,IAAqB,IAAXA,IACZA,EAAS,IAGX6w2B,EAASr0vB,MAAQq0vB,EAASr0vB,OAAS,CAAC,EAEhCx8G,EAAS,IACX6w2B,EAASr0vB,MAAMx8G,OAASA,GAG1B,IAAI2j9B,EAAW7hF,EAAWhwzB,SAAS,aAAag0zB,eAChD49E,EAAWtzB,EAAU9rpB,SAASq/qB,GAAY9yG,EAASti9B,MAAQo1jC,CAC7D,CAEA,SAASC,GAAmBrziC,EAAMisM,GAChC,IAAIx8G,EAASw8G,EAAMx8G,OACfx6E,EAASg3L,EAAMh3L,OAEnB,GAAKA,EAML,GAFAjV,EAAK0wuB,OAAOz7tB,EAAO,GAAG,GAAIA,EAAO,GAAG,IAEhCw6E,EAAS,GAAKx6E,EAAOjrC,QAAU,EAAG,CACpC,IAAIsl9B,EAAO,GAAYr66B,EAAO,GAAIA,EAAO,IACrCi66B,EAAO,GAAYj66B,EAAO,GAAIA,EAAO,IAEzC,IAAKq66B,IAASJ,EAGZ,OAFAlv7B,EAAK2wuB,OAAO17tB,EAAO,GAAG,GAAIA,EAAO,GAAG,SACpCjV,EAAK2wuB,OAAO17tB,EAAO,GAAG,GAAIA,EAAO,GAAG,IAItC,IAAIq+hC,EAAU9mkC,KAAKgL,IAAI838B,EAAMJ,GAAQz/1B,EACjC8j9B,EAAY,GAAY,GAAIt+hC,EAAO,GAAIA,EAAO,GAAIq+hC,EAAUhkH,GAC5DkkH,EAAY,GAAY,GAAIv+hC,EAAO,GAAIA,EAAO,GAAIq+hC,EAAUpkH,GAC5DukH,EAAY,GAAY,GAAIF,EAAWC,EAAW,IACtDxziC,EAAK2zvB,cAAc4/S,EAAU,GAAIA,EAAU,GAAIA,EAAU,GAAIA,EAAU,GAAIE,EAAU,GAAIA,EAAU,IACnGzziC,EAAK2zvB,cAAc6/S,EAAU,GAAIA,EAAU,GAAIA,EAAU,GAAIA,EAAU,GAAIv+hC,EAAO,GAAG,GAAIA,EAAO,GAAG,GACrG,MACE,IAAK,IAAI1qC,EAAI,EAAGA,EAAI0qC,EAAOjrC,OAAQO,IACjCy1B,EAAK2wuB,OAAO17tB,EAAO1qC,GAAG,GAAI0qC,EAAO1qC,GAAG,GAG1C,CAMO,SAASmpkC,GAAkBxmgB,EAAUolb,EAAcnv2B,GACxD,IAAI085B,EAAY3ye,EAAS03Y,mBACrB558B,EAAQkikB,EAAS52e,iBAErB,GAAKtrF,EAAL,CAaA,IAJA,IAAIom/B,EAAckB,EAAatl1B,OAC3B8k1B,EAAaV,EAAYtk/B,IAAI,QAC7B6mkC,EAAoB3okC,EAAM8mC,OAErBvnC,EAAI,EAAGA,EAAIi9+B,GAAex9+B,OAAQO,IAAK,CAC9C,IAAIo7jB,EAAY6hb,GAAej9+B,GAC3Bgn/B,EAAae,EAAa3sb,GAC1BwtgB,EAAyB,WAAdxtgB,EAEf,GAAI4rb,EAAY,CACd,IAAIW,EAAYX,EAAWzk/B,IAAI,QAG/B,IAFqBqmkC,EAAWQ,EAAoB1/H,GAAUjp8B,EAAMgugB,OAAO2sD,IAAc36jB,EAAMgugB,OAAO2sD,GAAW7zhB,OAAQ6hiC,MAGrH1/H,GAAUi+C,EAAWJ,GACvB,CACE,IAAIxxB,EAAW6yG,EAAWtzB,EAAYA,GAAaA,EAAU7miB,OAAO2sD,GAEhE26Z,IACFA,EAASxu7B,QAAS,GAGpB,QACF,CAGG+tgC,IACHA,EAAY,IAAI,GAChB3ye,EAAS60Z,iBAAiB89E,GAGrBszB,IAAaQ,GAAsB7hF,GACtCohF,GAAkBrzB,GAAW,EAAM,SAAUvtD,EAAatl1B,QAIxDkga,EAASyyZ,aACXkgF,EAAUlgF,WAAazyZ,EAASyyZ,aAIpCuzG,GAAkBrzB,GAAW,EAAOl6e,EAAW4rb,EACjD,CACF,CAEA,GAAIsuD,EAAW,CACb,EAASA,EAAU7hiC,MAAOmlI,GAE1B085B,EAAU7hiC,MAAM+oH,KAAO,KACvB,IAAIg56B,EAAY3uD,EAAYtk/B,IAAI,cACVogkB,EAAS4ye,oBAAsB5ye,EAAS4ye,qBAAuB,CAAC,GACtEC,UAAYA,IAAa,EAEzCF,EAAUxiE,UAAYg2F,EACxB,CAxDA,MALMxzB,GACF3ye,EAAS+0Z,qBA6Df,CACO,SAAS2xG,GAAyBvlF,EAAWwlF,GAClDA,EAAgBA,GAAiB,YAKjC,IAJA,IAAIvhF,EAAe,CACjBtl1B,OAAQqh1B,EAAU9szB,SAASsy4B,IAGpBtpkC,EAAI,EAAGA,EAAIg9+B,GAAev9+B,OAAQO,IAAK,CAC9C,IAAIo7jB,EAAY4hb,GAAeh9+B,GAC/B+n/B,EAAa3sb,GAAa0ob,EAAU9szB,SAAS,CAACokY,EAAWkugB,GAC3D,CAEA,OAAOvhF,CACT,CCtkBO,SAASwhF,GAAkB15gC,GAGhC,IAFA,IAAI0lB,EAAO,GAEFv1E,EAAI,EAAGA,EAAI6vD,EAAMpwD,OAAQO,IAAK,CACrC,IAAIktgC,EAAUr98B,EAAM7vD,GAEpB,IAAIktgC,EAAQs8D,YAAYjiiC,OAAxB,CAIA,IAAI9mC,EAAQysgC,EAAQzsgC,MAChBuhI,EAAYvhI,EAAMuv9B,uBAElBy5G,EAAYhpkC,EAAM8iP,kBAClBmm1B,GAAiB1n8B,GAAaA,EAAU,GAAK,MAAQA,EAAU,GAAK,KACpE2n8B,EAAYlpkC,EAAMgT,MAAMorW,QAAU,EAClC+qtB,EAAaH,EAAU95iC,QAC3Bi6iC,EAAW1+H,eAAelp0B,GAC1B4n8B,EAAWvmkC,GAAKsmkC,EAAY,EAC5BC,EAAWxnkC,GAAKunkC,EAAY,EAC5BC,EAAWzriC,OAASwriC,EACpBC,EAAWxriC,QAAUuriC,EACrB,IAAIt12B,EAAMq12B,EAAgB,IAAI,GAAqBD,EAAWzn8B,GAAa,KAC3EzsD,EAAKt0E,KAAK,CACRR,MAAOA,EACP60iC,UAAWpoC,EAAQooC,UACnBxi9B,KAAM82+B,EACNH,UAAWA,EACXp12B,IAAKA,EACLpnL,SAAUig+B,EAAQjg+B,SAClBu8hC,YAAat8D,EAAQs8D,YACrBK,aAAc38D,EAAQ48D,qBACtBC,YAAaL,EACb1n8B,UAAWA,GAzBb,CA2BF,CAEA,OAAOzsD,CACT,CAEA,SAASy0/B,GAAYz0/B,EAAM00/B,EAAOC,EAASC,EAAUC,EAAUC,GAC7D,IAAIps8B,EAAM1oD,EAAK91E,OAEf,KAAIw+H,EAAM,GAAV,CAIA1oD,EAAK5pC,MAAK,SAAUvrC,EAAGsC,GACrB,OAAOtC,EAAE0yF,KAAKm3+B,GAASvnkC,EAAEowF,KAAKm3+B,EAChC,IAOA,IANA,IACI9k9B,EADAml9B,EAAU,EAEVC,GAAW,EACXC,EAAS,GACTC,EAAc,EAETzqkC,EAAI,EAAGA,EAAIi+H,EAAKj+H,IAAK,CAC5B,IAAIwgD,EAAO+0B,EAAKv1E,GACZ8yF,EAAOtyC,EAAKsyC,MAChBqyB,EAAQryB,EAAKm3+B,GAASK,GAEV,IAEVx3+B,EAAKm3+B,IAAU9k9B,EACf3kE,EAAK//C,MAAMwpkC,IAAU9k9B,EACrBol9B,GAAW,GAGb,IAAIhthC,EAAQt7C,KAAK8K,KAAKo4G,EAAO,GAC7Bql9B,EAAOvpkC,KAAKs8C,GACZkthC,GAAelthC,EACf+shC,EAAUx3+B,EAAKm3+B,GAASn3+B,EAAKo3+B,EAC/B,CAEIO,EAAc,GAAKJ,GAErBK,GAAWD,EAAcxs8B,EAAK,EAAGA,GAInC,IAEI617B,EACA6W,EAHA7mjC,EAAQyxD,EAAK,GACbxxD,EAAOwxD,EAAK0oD,EAAM,GAuHtB,OApHA2s8B,IAEA9W,EAAS,GAAK+W,GAAa/W,EAAQ,IACnC6W,EAAS,GAAKE,EAAYF,EAAQ,IAClCC,IACAE,EAAchX,EAAQ6W,EAAQ,GAC9BG,EAAcH,EAAQ7W,GAAS,GAE/B8W,IAEI9W,EAAS,GACXiX,GAAoBjX,GAGlB6W,EAAS,GACXI,EAAmBJ,GAqGdJ,CA3JP,CAyDA,SAASK,IACP9W,EAAShwiC,EAAMgvE,KAAKm3+B,GAASE,EAC7BQ,EAASP,EAAWrmjC,EAAK+uE,KAAKm3+B,GAASlmjC,EAAK+uE,KAAKo3+B,EACnD,CAEA,SAASY,EAAcE,EAAcC,EAAeC,GAClD,GAAIF,EAAe,EAAG,CAEpB,IAAIG,EAAiBlpkC,KAAKgL,IAAIg+jC,GAAgBD,GAE9C,GAAIG,EAAiB,EAAG,CACtBT,EAAUS,EAAiBD,EAAS,EAAGjt8B,GACvC,IAAImt8B,EAAWD,EAAiBH,EAE5BI,EAAW,GACbP,GAAaO,EAAWF,EAAS,EAErC,MACEL,GAAaG,EAAeE,EAAS,EAEzC,CACF,CAEA,SAASR,EAAUvl9B,EAAOv/E,EAAOC,GACjB,IAAVs/E,IACFol9B,GAAW,GAGb,IAAK,IAAIvqkC,EAAI4lC,EAAO5lC,EAAI6lC,EAAK7lC,IAAK,CAChC,IAAIwgD,EAAO+0B,EAAKv1E,GACLwgD,EAAKsyC,KACXm3+B,IAAU9k9B,EACf3kE,EAAK//C,MAAMwpkC,IAAU9k9B,CACvB,CACF,CAGA,SAAS0l9B,EAAY1l9B,EAAOkm9B,GAI1B,IAHA,IAAIrtK,EAAO,GACPstK,EAAY,EAEPtrkC,EAAI,EAAGA,EAAIi+H,EAAKj+H,IAAK,CAC5B,IAAIurkC,EAAeh2/B,EAAKv1E,EAAI,GAAG8yF,KAC3BwpR,EAAMr6W,KAAK8K,IAAIwoE,EAAKv1E,GAAG8yF,KAAKm3+B,GAASsB,EAAatB,GAASsB,EAAarB,GAAU,GACtFlsK,EAAK/85B,KAAKq7W,GACVgvtB,GAAahvtB,CACf,CAEA,GAAKgvtB,EAAL,CAIA,IAAIE,EAAiBvpkC,KAAKgL,IAAIhL,KAAKmjH,IAAID,GAASmm9B,EAAWD,GAE3D,GAAIlm9B,EAAQ,EACV,IAASnlH,EAAI,EAAGA,EAAIi+H,EAAM,EAAGj+H,IAI3B0qkC,EAFe1sK,EAAKh+5B,GAAKwrkC,EAEL,EAAGxrkC,EAAI,QAI7B,IAASA,EAAIi+H,EAAM,EAAGj+H,EAAI,EAAGA,IAG3B0qkC,GADe1sK,EAAKh+5B,EAAI,GAAKwrkC,EACRxrkC,EAAGi+H,EAhB5B,CAmBF,CAOA,SAAS8s8B,EAAmB5l9B,GAC1B,IAAIyT,EAAMzT,EAAQ,GAAK,EAAI,EAC3BA,EAAQljH,KAAKmjH,IAAID,GAGjB,IAFA,IAAIsm9B,EAAmBxpkC,KAAKuK,KAAK24G,GAAS8Y,EAAM,IAEvCj+H,EAAI,EAAGA,EAAIi+H,EAAM,EAAGj+H,IAW3B,GAVI44H,EAAM,EAER8x8B,EAAUe,EAAkB,EAAGzrkC,EAAI,GAGnC0qkC,GAAWe,EAAkBxt8B,EAAMj+H,EAAI,EAAGi+H,IAG5C9Y,GAASsm9B,IAEI,EACX,MAGN,CAGF,CAiBO,SAASC,GAAen2/B,EAAMo2/B,EAAUC,EAC/CvB,GACE,OAAOL,GAAYz0/B,EAAM,IAAK,SAAUo2/B,EAAUC,EAAavB,EACjE,CACO,SAASwB,GAAYC,GAC1B,IAAIC,EAAkB,GAEtBD,EAAUngiC,MAAK,SAAUvrC,EAAGsC,GAC1B,OAAOA,EAAEuqC,SAAW7sC,EAAE6sC,QACxB,IACA,IAAI28hC,EAAa,IAAI,GAAa,EAAG,EAAG,EAAG,GAE3C,SAASoC,EAAO/y7B,GACd,IAAKA,EAAG1xG,OAAQ,CAEd,IAAI0kiC,EAAgBhz7B,EAAG270B,YAAY,YAEP,MAAxBq3G,EAAc1kiC,SAChB0kiC,EAAc1kiC,QAAS,EAE3B,CAEA0xG,EAAG1xG,QAAS,CACd,CAEA,IAAK,IAAIvnC,EAAI,EAAGA,EAAI8rkC,EAAUrskC,OAAQO,IAAK,CACzC,IAAIk5yB,EAAY4yR,EAAU9rkC,GACtB0pkC,EAAgBxwR,EAAU6wR,YAC1BN,EAAYvwR,EAAUuwR,UACtBzn8B,EAAYk3qB,EAAUl3qB,UACtBvhI,EAAQy4yB,EAAUz4yB,MAClB60iC,EAAYp8P,EAAUo8P,UAC1Bs0B,EAAW1q8B,KAAKg6qB,EAAUpmtB,MAE1B82+B,EAAWzriC,OAAS,GACpByriC,EAAWxriC,QAAU,GACrBwriC,EAAWvmkC,GAAK,IAChBumkC,EAAWxnkC,GAAK,IAIhB,IAHA,IAAIiyN,EAAM6klB,EAAU7klB,IAChB6+zB,GAAa,EAER1vhC,EAAI,EAAGA,EAAIuokC,EAAgBtskC,OAAQ+D,IAAK,CAC/C,IAAI0okC,EAAgBH,EAAgBvokC,GAEpC,GAAKomkC,EAAW7i5B,UAAUml5B,EAAcp5+B,MAAxC,CAIA,GAAI42+B,GAAiBwC,EAAcnC,YAAa,CAE9C72C,GAAa,EACb,KACF,CAYA,GAVKg5C,EAAc732B,MAEjB632B,EAAc732B,IAAM,IAAI,GAAqB632B,EAAczC,UAAWyC,EAAclq8B,YAGjFqyF,IAEHA,EAAM,IAAI,GAAqBo12B,EAAWzn8B,IAGxCqyF,EAAIttC,UAAUml5B,EAAc732B,KAAM,CACpC6+zB,GAAa,EACb,KACF,CArBA,CAsBF,CAGIA,GACF84C,EAAOvrkC,GACP60iC,GAAa02B,EAAO12B,KAEpB70iC,EAAM4shB,KAAK,SAAU6rR,EAAUswR,YAAYjiiC,QAC3C+tgC,GAAaA,EAAUjohB,KAAK,SAAU6rR,EAAUswR,YAAY2C,kBAC5DJ,EAAgB9qkC,KAAKi4yB,GAEzB,CACF,CC/RA,SAASkzR,GAAS1hiC,GAChB,GAAIA,EAAQ,CAGV,IAFA,IAAI2hiC,EAAY,GAEPrskC,EAAI,EAAGA,EAAI0qC,EAAOjrC,OAAQO,IACjCqskC,EAAUprkC,KAAKypC,EAAO1qC,GAAGmB,SAG3B,OAAOkrkC,CACT,CACF,CAEA,SAASC,GAA4BpzR,EAAWiuL,GAC9C,IAAI1m+B,EAAQy4yB,EAAUz4yB,MAClB60iC,EAAYnuE,GAAUA,EAAO9sB,mBACjC,MAAO,CACL51yB,UAAWy0oB,EAAUz0oB,UACrB2pG,SAAU8qiB,EAAU9qiB,SACpBkuuB,YAAapjM,EAAUkpM,YAAY9F,YACnC9s9B,KAAM0pxB,EAAUz4yB,MAAMgT,MAAM+b,KAC5BsjE,KAAMomtB,EAAUqzR,SAChB7vB,UAAWxjQ,EAAUpmtB,KAGrB6wrB,MAAOljxB,EAAMgT,MAAMkwwB,MACnBpxC,cAAe9xuB,EAAMgT,MAAM8+tB,cAC3Bi6V,gBAAiBJ,GAAS92B,GAAaA,EAAU5z0B,MAAMh3L,QAE3D,CAEA,IAAI+hiC,GAA6B,CAAC,QAAS,gBAAiB,QAAS,SAAU,YAC3EC,GAAqB,IAAI,GACzBC,GAAwBrqG,KACxBsqG,GAA0BtqG,KAE9B,SAASuqG,GAAe39jC,EAAQjI,EAAQyL,GACtC,IAAK,IAAI1S,EAAI,EAAGA,EAAI0S,EAAKjT,OAAQO,IAAK,CACpC,IAAIikB,EAAMvR,EAAK1S,GAEI,MAAfiH,EAAOgd,KACT/U,EAAO+U,GAAOhd,EAAOgd,GAEzB,CACF,CAEA,IAAI6ojC,GAAqB,CAAC,IAAK,IAAK,YAEhCC,GAEJ,WACE,SAASA,IACP3tkC,KAAK4tkC,WAAa,GAClB5tkC,KAAK6tkC,eAAiB,EACxB,CAoYA,OAlYAF,EAAajukC,UAAUoukC,YAAc,WACnC9tkC,KAAK4tkC,WAAa,GAClB5tkC,KAAK6tkC,eAAiB,EACxB,EAMAF,EAAajukC,UAAUqukC,UAAY,SAAU1o6B,EAAW2pG,EAAUg0uB,EAAa3h/B,EAAOopkC,GACpF,IAAIjvP,EAAan60B,EAAMgT,MAEnBw+8B,EADSxx9B,EAAMgr8B,aACKwmB,YAAc,CAAC,EAEnCm7G,EAAiB3skC,EAAMuv9B,uBACvB0sF,EAAYj8iC,EAAM8iP,kBAAkB0vtB,QACxC,GAAa/H,eAAewxG,EAAWA,EAAW0wB,GAE9CA,EACFV,GAAmBx8G,kBAAkBk9G,IAGrCV,GAAmBrpkC,EAAIqpkC,GAAmBtqkC,EAAIsqkC,GAAmB/m9B,SAAW+m9B,GAAmB3g5B,QAAU2g5B,GAAmB1g5B,QAAU,EACtI0g5B,GAAmB108B,OAAS008B,GAAmBz08B,OAAS,GAG1Dy08B,GAAmB/m9B,SAAW8r3B,GAAgBi7F,GAAmB/m9B,UACjE,IACI4m9B,EADAtzgC,EAAOx4D,EAAMgr8B,aAGjB,GAAIxy4B,EAAM,CACRszgC,EAAWtzgC,EAAKsqL,kBAAkB0vtB,QAClC,IAAIjx0B,EAAY/oE,EAAK+25B,uBACrB,GAAa9kB,eAAeqhI,EAAUA,EAAUvq8B,EAClD,CAEA,IAAIqr8B,EAAad,GAAYtzgC,EAAKoh5B,mBAElCj78B,KAAK4tkC,WAAW/rkC,KAAK,CACnBR,MAAOA,EACP60iC,UAAW+3B,EACXjrF,YAAaA,EACb390B,UAAWA,EACX2pG,SAAUA,EACVy7zB,aAAcA,EACdC,qBAAsB,KACtBh3+B,KAAM4p9B,EACN6vB,SAAUA,EAGVt/hC,SAAUs/hC,EAAWA,EAASpuiC,MAAQouiC,EAASnuiC,OAAS,EAGxDoriC,YAAa,CACXjiiC,OAAQ9mC,EAAM8mC,OACd4kiC,iBAAkBkB,GAAcA,EAAW9liC,OAC3ClkC,EAAGqpkC,GAAmBrpkC,EACtBjB,EAAGsqkC,GAAmBtqkC,EACtB41H,OAAQ008B,GAAmB108B,OAC3BC,OAAQy08B,GAAmBz08B,OAC3BtS,SAAU+m9B,GAAmB/m9B,SAC7BlyG,MAAO,CACLpQ,EAAGu30B,EAAWv30B,EACdjB,EAAGw40B,EAAWx40B,EACduhxB,MAAOi3D,EAAWj3D,MAClBpxC,cAAeqoG,EAAWroG,cAC1Bp0sB,MAAOy8yB,EAAWz8yB,MAClBC,OAAQw8yB,EAAWx8yB,OACnBylN,SAAU+2lB,EAAW/2lB,UAEvBpjG,OAAQhgJ,EAAMggJ,OACd6s7B,YAAar7G,EAAWl07B,SACxBwviC,YAAat7G,EAAWts2B,WAG9B,EAEAon9B,EAAajukC,UAAU0ukC,kBAAoB,SAAUp2B,GACnD,IAAItr/B,EAAQ1sD,KAEZA,KAAK6tkC,eAAehskC,KAAKm2iC,GAEzB,IAAIh1D,EAAcg1D,EAAUhB,QACxByzB,EAAeznF,EAAY7/+B,IAAI,gBAK7B6hQ,GAAWyl0B,IAAiBn3jC,GAAKm3jC,GAAcpqkC,SAIrD23iC,EAAU58uB,MAAMv1H,UAAS,SAAU37G,GACjC,GAAIA,EAAM/hD,OACR,OAAO,EAIT,IAAI+y6B,EAAShx3B,EAAMyC,iBACfww5B,EAASH,GAAU9y5B,GAEnBgx3B,IAAWA,EAAOmzH,oBACpB3hhC,EAAMqhhC,UAAU5wF,EAAO930B,UAAW830B,EAAOnuuB,SAAUg0uB,EAAa9nC,EAAQuvH,EAE5E,GACF,EAEAkD,EAAajukC,UAAU4ukC,mBAAqB,SAAUr/hC,GACpD,IAAIlQ,EAAQkQ,EAAIk8L,WACZnsM,EAASiQ,EAAI+rI,YAEjB,SAASuz5B,EAAkB107B,EAAI0u7B,GAC7B,OAAO,WACLD,GAAsBzu7B,EAAI0u7B,EAC5B,CACF,CAEA,IAAK,IAAI3nkC,EAAI,EAAGA,EAAIZ,KAAK4tkC,WAAWvtkC,OAAQO,IAAK,CAC/C,IAAIk5yB,EAAY95yB,KAAK4tkC,WAAWhtkC,GAC5BS,EAAQy4yB,EAAUz4yB,MAClB0m+B,EAAS1m+B,EAAMgr8B,aACfmiI,EAAmB10R,EAAUswR,YAC7BK,OAAe,EAQnBA,GALEA,EADEzl0B,GAAW80iB,EAAU2wR,cACR3wR,EAAU2wR,aAAayC,GAA4BpzR,EAAWiuL,IAE9DjuL,EAAU2wR,eAGI,CAAC,EAChC3wR,EAAU4wR,qBAAuBD,EACjC,IAAIgE,EAAiB5rkC,KAAKsmC,GAAK,IAG3B4+7B,GACFA,EAAOrT,cAAc,CAEnB5B,OAAO,EAEPn07B,SAA4B,MAAlB8riC,EAAaxmkC,GAA+B,MAAlBwmkC,EAAaznkC,EAAY,KAAOwrkC,EAAiBN,YAErF3n9B,SAAiC,MAAvBkk9B,EAAahl9B,OAAiBgl9B,EAAahl9B,OAASgp9B,EAAiBD,EAAiBL,YAChGhshC,OAAQ,CAACsohC,EAAaj27B,IAAM,EAAGi27B,EAAap27B,IAAM,KAItD,IAAIq67B,GAAuB,EAwB3B,GAtBsB,MAAlBjE,EAAaxmkC,GAEf5C,EAAM4C,EAAI,GAAawmkC,EAAaxmkC,EAAG86B,GACvC19B,EAAMija,SAAS,IAAK,GAEpBoqqB,GAAuB,IAEvBrtkC,EAAM4C,EAAIuqkC,EAAiBvqkC,EAC3B5C,EAAMija,SAAS,IAAKkqqB,EAAiBn6jC,MAAMpQ,IAGvB,MAAlBwmkC,EAAaznkC,GAEf3B,EAAM2B,EAAI,GAAaynkC,EAAaznkC,EAAGg8B,GACvC39B,EAAMija,SAAS,IAAK,GAEpBoqqB,GAAuB,IAEvBrtkC,EAAM2B,EAAIwrkC,EAAiBxrkC,EAC3B3B,EAAMija,SAAS,IAAKkqqB,EAAiBn6jC,MAAMrR,IAGzCynkC,EAAa2C,gBAAiB,CAChC,IAAI/0G,EAAY0P,EAAO9sB,mBAEnBod,IACFA,EAAUzxkB,SAAS,CACjBt7W,OAAQm/hC,EAAa2C,kBAGvBsB,GAAuB,EAE3B,CAEuBnB,GAAsBlskC,GAC5BqtkC,qBAAuBA,EACxCrtkC,EAAMklH,SAAkC,MAAvBkk9B,EAAahl9B,OAAiBgl9B,EAAahl9B,OAASgp9B,EAAiBD,EAAiBjo9B,SACvGllH,EAAMu3H,OAAS418B,EAAiB518B,OAChCv3H,EAAMw3H,OAAS218B,EAAiB318B,OAEhC,IAAK,IAAIn1H,EAAI,EAAGA,EAAI2pkC,GAA2BhtkC,OAAQqD,IAAK,CAC1D,IAAImhB,EAAMwojC,GAA2B3pkC,GACrCrC,EAAMija,SAASz/Y,EAA0B,MAArB4ljC,EAAa5ljC,GAAe4ljC,EAAa5ljC,GAAO2pjC,EAAiBn6jC,MAAMwQ,GAC7F,CAEA,GAAI4ljC,EAAalkrB,WAIf,GAHAllZ,EAAMklZ,WAAY,EAClBllZ,EAAMggJ,OAAS,OAEX0m1B,EAAQ,CACV,IAAIk8E,EAAYnqQ,EAAUkpM,YAEC,MAAvBlpM,EAAUz0oB,YAEZ4+4B,EADWnqQ,EAAUkpM,YAAYx+2B,QAAQs1qB,EAAU9qiB,UAClC6hwB,aAAa/2N,EAAUz0oB,YAG1ChkK,EAAMuP,GAAG,OAAQ29jC,EAAkBxmG,EAAQk8E,EAAUrs3B,SAAS,cAChE,OAGAv2L,EAAM2sC,IAAI,QACV3sC,EAAMggJ,OAASmt7B,EAAiBnt7B,MAEpC,CACF,EAEAss7B,EAAajukC,UAAUwhI,OAAS,SAAUjyF,GACxC,IAAIlQ,EAAQkQ,EAAIk8L,WACZnsM,EAASiQ,EAAI+rI,YACb0x5B,EAAYvC,GAAkBnqkC,KAAK4tkC,YACnCe,EAAuB9hjC,GAAO6/iC,GAAW,SAAUtrhC,GACrD,MAAyC,WAAlCA,EAAKqphC,aAAamE,WAC3B,IACIC,EAAuBhijC,GAAO6/iC,GAAW,SAAUtrhC,GACrD,MAAyC,WAAlCA,EAAKqphC,aAAamE,WAC3B,ID/EKhE,GCgFU+D,EDhFQ,IAAK,QCgFS,EAAG5viC,EDjF5CksiC,WCkFIqB,GAAeuC,EAAsB,EAAG7viC,GAIxCytiC,GAH6B5/iC,GAAO6/iC,GAAW,SAAUtrhC,GACvD,OAAOA,EAAKqphC,aAAagC,WAC3B,IAEF,EAMAkB,EAAajukC,UAAUovkC,qBAAuB,WAC5C,IAAIpihC,EAAQ1sD,KAEZ,EAAKA,KAAK6tkC,gBAAgB,SAAU71B,GAClC,IAAIh1D,EAAcg1D,EAAUhB,QACxB+3B,EAAwB/2B,EAAU+2B,sBAClC5lD,EAAmBnmC,EAAY8C,qBACnCkyD,EAAU58uB,MAAMv1H,UAAS,SAAU37G,GACjC,GAAIA,EAAM/hD,SAAW+hD,EAAM8k/B,oBACzB,OAAO,EAGT,IAAIN,GAAwBK,EACxB1tkC,EAAQ6oF,EAAMyC,kBAEb+h/B,GAAwBrtkC,IAC3BqtkC,EAAuBnB,GAAsBlskC,GAAOqtkC,sBAGlDA,GACFhihC,EAAMuihC,iBAAiB/k/B,EAAO845B,GAG5BmmC,GACFz89B,EAAMwihC,eAAehl/B,EAAO845B,EAEhC,GACF,GACF,EAEA2qF,EAAajukC,UAAUuvkC,iBAAmB,SAAUp17B,EAAImp2B,GAEtD,IAAI9nC,EAASrh0B,EAAGltD,iBAEZww5B,EAASH,GAAUnj2B,GACnBwrB,EAAY830B,EAAO930B,UAEvB,GAAI61yB,GAAuB,MAAb71yB,EAAmB,CAC/B,IAAI71J,EAAOwz+B,EAAYx+2B,QAAQ242B,EAAOnuuB,UAClC01uB,EAAYl1+B,EAAKqhgC,aAAaxr2B,GAC9B7rB,EAAe,CAAC,EAChB217B,EAAc3/jC,EAAK+ggC,cAAclr2B,EAAW,SAEhD,GAAI8p6B,EAAa,CACf,IAAIzwC,EAAalvhC,EAAKsshC,UAAU,YAEhCti5B,EAAa4joB,OAAS+xT,EAAYzwC,EACpC,CAEA,IAAI6pC,EAAiB7jF,EAAU9szB,SAAS,aACxCmy4B,GAAkBlw7B,EAAIow7B,GAAyBvlF,GAAYlr2B,GAC3D8u7B,GAAsBzu7B,EAAI0u7B,EAC5B,CACF,EAEAoF,EAAajukC,UAAUwvkC,eAAiB,SAAUr17B,EAAImp2B,GACpD,IAAI9nC,EAASrh0B,EAAGltD,iBACZ0r4B,EAAYx+0B,EAAGoh0B,mBAEnB,GAAIC,IACArh0B,EAAGm17B,sBAAwB9zH,EAAO/y6B,SAAW+y6B,EAAOogB,YAAczh1B,EAAGu17B,wBAA0B5oF,GAAiB3s2B,IAAM,CACxH,IACIw17B,GADAC,EAAc/B,GAAsBryH,IACZm0H,UACxBlyF,EAASH,GAAUnj2B,GACnBwrB,EAAY830B,EAAO930B,UACnBt8C,EAAW,CACb9kH,EAAGi38B,EAAOj38B,EACVjB,EAAGk48B,EAAOl48B,EACVujH,SAAU201B,EAAO301B,UAEf/2G,EAAOwz+B,EAAYx+2B,QAAQ242B,EAAOnuuB,UAEtC,GAAKqg0B,EAaE,CACLn0H,EAAOjtb,KAAKohjB,GAEZ,IAAIh5B,EAAax85B,EAAGw85B,WAEhBA,IACE71iC,EAAQ61iC,EAAY,WAAa,GACnCn7F,EAAOjtb,KAAKqhjB,EAAYC,iBAGtB/ukC,EAAQ61iC,EAAY,aAAe,GACrCn7F,EAAOjtb,KAAKqhjB,EAAYE,oBAI5BlpF,GAAYprC,EAAQny1B,EAAUi63B,EAAa390B,EAC7C,MA1BE,GAFA61yB,EAAOjtb,KAAKlla,IAEP0/3B,GAAWvtC,GAAQ8vC,eAAgB,CACtC,IAAIykF,EAAanlI,GAAU4Q,EAAO7m8B,MAAMu3H,QAAS,GAEjDsv0B,EAAO7m8B,MAAMu3H,QAAU,EACvB262B,GAAUrrC,EAAQ,CAChB7m8B,MAAO,CACLu3H,QAAS6j8B,IAEVzsF,EAAa390B,EAClB,CAqBF,GAFAiq6B,EAAYD,UAAYtm9B,EAEpBmy1B,EAAO7rc,OAAO74P,OAAQ,CACxB,IAAIk5zB,EAAeJ,EAAYC,gBAAkB,CAAC,EAClD9B,GAAeiC,EAAc3m9B,EAAU2k9B,IACvCD,GAAeiC,EAAcx0H,EAAO7rc,OAAO74P,OAAQk3zB,GACrD,CAEA,GAAIxyH,EAAO7rc,OAAOuxd,SAAU,CAC1B,IAAI+uG,EAAiBL,EAAYE,kBAAoB,CAAC,EACtD/B,GAAekC,EAAgB5m9B,EAAU2k9B,IACzCD,GAAekC,EAAgBz0H,EAAO7rc,OAAOuxd,SAAU8sG,GACzD,CAEAxiF,GAAkBhwC,EAAQ71yB,EAAW71J,EAAMwz+B,EAAaA,EAC1D,CAEA,GAAI3qB,IAAcA,EAAUlw7B,SAAWkw7B,EAAUiD,UAAW,CAEtD+zG,GADAC,EAAc9B,GAAwBn1G,IACdg3G,UAD5B,IAAIC,EAEAM,EAAY,CACdtkiC,OAAQ+s7B,EAAU/1vB,MAAMh3L,QAGrB+jiC,GASHh3G,EAAUpqc,KAAK,CACb3rT,MAAO+s2B,IAET/oF,GAAYjuB,EAAW,CACrB/1vB,MAAOst2B,GACN5sF,KAbH3qB,EAAUzxkB,SAASgprB,GACnBv3G,EAAUhk9B,MAAM6+9B,cAAgB,EAChCqT,GAAUluB,EAAW,CACnBhk9B,MAAO,CACL6+9B,cAAe,IAEhB8P,IAULssF,EAAYD,UAAYO,CAC1B,CACF,EAEOjC,CACT,CAzYA,GA2YA,YCtcA,IAAIkC,GAAkB3sG,KACf,SAAS4sG,GAAmBC,GACjCA,EAAUx0B,wBAAwB,uBAAuB,SAAUj4E,EAASr07B,EAAK5G,GAE/E,IAAI2niC,EAAeH,GAAgB5giC,GAAK+giC,aAEnCA,IACHA,EAAeH,GAAgB5giC,GAAK+giC,aAAe,IAAI,IAGzDA,EAAalC,aACf,IACAiC,EAAUx0B,wBAAwB,uBAAuB,SAAUj4E,EAASr07B,EAAK5G,GAC/E,IAAI2niC,EAAeH,GAAgB5giC,GAAK+giC,aACxC3niC,EAAO830B,cAAcj71B,SAAQ,SAAU43vB,GACrCkzT,EAAa5B,kBAAkBn/hC,EAAIgz8B,qBAAqBnlO,GAC1D,IACAkzT,EAAa1B,mBAAmBr/hC,GAChC+giC,EAAa9u8B,OAAOjyF,GACpB+giC,EAAalB,sBACf,GACF,CCzDA,SAASmB,GAAU1kjC,EAAI6o7B,EAASob,GAC5B,IAAI0gH,EAAS,EAAYroI,eACrB9o6B,EAAQq16B,EAAQjpuB,WAChBnsM,EAASo16B,EAAQp5xB,YACjBm15B,EAAcD,EAAO77jC,MAWzB,OAVI87jC,IACAA,EAAYxxiC,SAAW,WACvBwxiC,EAAYtxiC,KAAO,IACnBsxiC,EAAYrxiC,IAAM,IAClBqxiC,EAAYpxiC,MAAQA,EAAQ,KAC5BoxiC,EAAYnxiC,OAASA,EAAS,KAC9BkxiC,EAAOvziC,aAAa,iBAAkBpR,IAE1C2kjC,EAAOnxiC,MAAQA,EAAQyw7B,EACvB0gH,EAAOlxiC,OAASA,EAASww7B,EAClB0gH,CACX,CCyBAvxJ,GAAImxJ,IDvBJ,IAAI9/6B,GAAS,SAAU04N,GAEnB,SAAS14N,EAAMzkI,EAAI6o7B,EAASob,GACxB,IAiBIlkB,EAjBA5+4B,EAAQg8T,EAAO9oX,KAAKI,OAASA,KACjC0sD,EAAM0jhC,YAAa,EACnB1jhC,EAAM2jhC,eAAiB,GACvB3jhC,EAAM8i6B,IAAM,EACZ9i6B,EAAM4jhC,SAAU,EAChB5jhC,EAAMovQ,OAAS,CAAC,EAChBpvQ,EAAMgh7B,aAAc,EACpBhh7B,EAAM+s5B,OAAS,EACf/s5B,EAAM6jhC,oBAAsB,EAC5B7jhC,EAAMiu5B,SAAU,EAChBju5B,EAAM8jhC,kBAAmB,EACzB9jhC,EAAM+jhC,QAAS,EACf/jhC,EAAMgkhC,YAAc,EACpBhkhC,EAAMikhC,aAAe,EACrBjkhC,EAAMkkhC,WAAa,EACnBlkhC,EAAMmkhC,iBAAmB,KACzBnkhC,EAAMokhC,eAAiB,KAEvBthH,EAAMA,GAAOvq3B,GACK,iBAAP15E,EACP+/6B,EAAM2kI,GAAU1kjC,EAAI6o7B,EAASob,GAExB,GAAcjk8B,KAEnBA,GADA+/6B,EAAM//6B,GACGA,IAEbmhC,EAAMnhC,GAAKA,EACXmhC,EAAM4+4B,IAAMA,EACZ,IAAIC,EAAWD,EAAIj37B,MAUnB,OATIk37B,IACA,GAAuBD,GACvBA,EAAIylI,cAAgB,WAAc,OAAO,CAAO,EAChDxlI,EAASrz0B,QAAU,IACnBqz0B,EAAS9rlB,OAAS,IAClB8rlB,EAASisC,YAAc,KAE3B9q7B,EAAM0n5B,QAAUA,EAChB1n5B,EAAM8i6B,IAAMA,EACL9i6B,CACX,CAiOA,OA1QA,GAAUsjG,EAAO04N,GA0CjB14N,EAAMtwJ,UAAUs3T,gBAAkB,WAC9B,OAAOh3T,KAAK4wkC,WAAa5wkC,KAAK2wkC,YAClC,EACA3g7B,EAAMtwJ,UAAU8r+B,WAAa,WACzBxr+B,KAAK6wkC,iBAAmB7wkC,KAAK2wkC,aAC7B3wkC,KAAK8wkC,eAAiB9wkC,KAAK4wkC,UAC/B,EACA5g7B,EAAMtwJ,UAAUsxkC,YAAc,WAC1BhxkC,KAAKs3O,IAAMt3O,KAAKsr8B,IAAIv+4B,WAAW,MAC/B/sD,KAAKs3O,IAAIk4uB,IAAMxv9B,KAAKwv9B,GACxB,EACAx/zB,EAAMtwJ,UAAUuxkC,aAAe,WAC3BjxkC,KAAKwwkC,kBAAmB,CAC5B,EACAxg7B,EAAMtwJ,UAAUwxkC,iBAAmB,WAC/B,IAAI1hH,EAAMxv9B,KAAKwv9B,IACfxv9B,KAAKmxkC,QAAUlB,GAAU,QAAUjwkC,KAAKurB,GAAIvrB,KAAKo08B,QAASob,GAC1Dxv9B,KAAKoxkC,QAAUpxkC,KAAKmxkC,QAAQpkhC,WAAW,MAC3B,IAARyi6B,GACAxv9B,KAAKoxkC,QAAQtv+B,MAAM0t3B,EAAKA,EAEhC,EACAx/zB,EAAMtwJ,UAAU2xkC,mBAAqB,SAAUr3H,EAAas3H,EAAU1lG,EAAWC,GAC7E,GAAI7r+B,KAAKwwkC,iBAEL,OADAxwkC,KAAKwwkC,kBAAmB,EACjB,KAEX,IAkFIe,EAlFAC,EAAqB,GACrBjB,EAAsBvwkC,KAAKuwkC,oBAC3BpzI,GAAO,EACPs0I,EAAc,IAAI,GAAa,EAAG,EAAG,EAAG,GAC5C,SAASC,EAAmBh++B,GACxB,GAAKA,EAAKhsD,aAAcgsD,EAAKq8G,SAG7B,GAAkC,IAA9Byh4B,EAAmBnxkC,QACf01hC,EAAe,IAAI,GAAa,EAAG,EAAG,EAAG,IAChCj25B,KAAKpsC,GAClB89+B,EAAmB3vkC,KAAKk0hC,OAEvB,CAID,IAHA,IA+BQA,EA/BJny3B,GAAW,EACX+t6B,EAAe5xgC,IACf6xgC,EAAqB,EAChBhxkC,EAAI,EAAGA,EAAI4wkC,EAAmBnxkC,SAAUO,EAAG,CAChD,IAAIixkC,EAAaL,EAAmB5wkC,GACpC,GAAIixkC,EAAWlq5B,UAAUj0F,GAAO,CAC5B,IAAIo++B,EAAgB,IAAI,GAAa,EAAG,EAAG,EAAG,GAC9CA,EAAchy8B,KAAK+x8B,GACnBC,EAAc9u5B,MAAMtvF,GACpB89+B,EAAmB5wkC,GAAKkxkC,EACxBlu6B,GAAW,EACX,KACJ,CACK,GAAIu5xB,EAAM,CACXs0I,EAAY3x8B,KAAKpsC,GACjB+9+B,EAAYzu5B,MAAM6u5B,GAClB,IAAIE,EAAQr++B,EAAK30D,MAAQ20D,EAAK10D,OAC1BgziC,EAAQH,EAAW9yiC,MAAQ8yiC,EAAW7yiC,OAEtCiziC,EADcR,EAAY1yiC,MAAQ0yiC,EAAYzyiC,OACpB+yiC,EAAQC,EAClCC,EAAYN,IACZA,EAAeM,EACfL,EAAqBhxkC,EAE7B,CACJ,CACIu87B,IACAq0I,EAAmBI,GAAoB5u5B,MAAMtvF,GAC7CkwE,GAAW,GAEVA,KACGmy3B,EAAe,IAAI,GAAa,EAAG,EAAG,EAAG,IAChCj25B,KAAKpsC,GAClB89+B,EAAmB3vkC,KAAKk0hC,IAEvB54F,IACDA,EAAOq0I,EAAmBnxkC,QAAUkwkC,EAE5C,CACJ,CACA,IAAK,IAAI3vkC,EAAIZ,KAAK2wkC,aAAc/vkC,EAAIZ,KAAK4wkC,aAAchwkC,EAEnD,GADIi5I,EAAKmg0B,EAAYp58B,GACb,CACJ,IAAIsxkC,EAAcr47B,EAAG8x1B,gBAAgBC,EAAWC,GAAY,GAAM,IAC9DsmG,EAAWt47B,EAAG6v5B,eAAkB7v5B,EAAG8g0B,QAAUvB,KAAgB84H,GAC3Dr47B,EAAG6y1B,mBACH,OAEFglG,EAAmBS,GAEvB,IAAIC,EAAUF,IAAiBr47B,EAAG8g0B,QAAUvB,KAAgBv/zB,EAAG6v5B,cACzD7v5B,EAAGk/0B,eACH,KACFq5G,GACAV,EAAmBU,EAE3B,CAEJ,IAASxxkC,EAAIZ,KAAK6wkC,iBAAkBjwkC,EAAIZ,KAAK8wkC,iBAAkBlwkC,EAAG,CAC9D,IAAIi5I,EAGIs47B,EAFJD,GADAr47B,EAAKy37B,EAAS1wkC,IACG+q+B,gBAAgBC,EAAWC,GAAY,GAAM,IAC9Dhy1B,GAAQq47B,GAAgBr47B,EAAGk7zB,OAASl7zB,EAAG6v5B,eACnCyoC,EAAWt47B,EAAG6y1B,qBAEdglG,EAAmBS,EAG/B,CAEA,GAEI,IADAZ,GAAmB,EACV3wkC,EAAI,EAAGA,EAAI4wkC,EAAmBnxkC,QACnC,GAAImxkC,EAAmB5wkC,GAAGmvM,SACtByh4B,EAAmBvujC,OAAOriB,EAAG,OADjC,CAIA,IAAK,IAAIwD,EAAIxD,EAAI,EAAGwD,EAAIotkC,EAAmBnxkC,QACnCmxkC,EAAmB5wkC,GAAG+mL,UAAU6p5B,EAAmBptkC,KACnDmtkC,GAAmB,EACnBC,EAAmB5wkC,GAAGoiL,MAAMwu5B,EAAmBptkC,IAC/CotkC,EAAmBvujC,OAAO7e,EAAG,IAG7BA,IAGRxD,GAXA,QAaC2wkC,GAET,OADAvxkC,KAAKqykC,YAAcb,EACZA,CACX,EACAxh7B,EAAMtwJ,UAAU4ykC,mBAAqB,WACjC,OAAQtykC,KAAKqykC,aAAe,IAAItwkC,OACpC,EACAiuJ,EAAMtwJ,UAAUmvH,OAAS,SAAU9vF,EAAOC,GACtC,IAAIww7B,EAAMxv9B,KAAKwv9B,IACXlkB,EAAMtr8B,KAAKsr8B,IACXC,EAAWD,EAAIj37B,MACf88jC,EAAUnxkC,KAAKmxkC,QACf5lI,IACAA,EAASxs6B,MAAQA,EAAQ,KACzBws6B,EAASvs6B,OAASA,EAAS,MAE/Bss6B,EAAIvs6B,MAAQA,EAAQyw7B,EACpBlkB,EAAIts6B,OAASA,EAASww7B,EAClB2hH,IACAA,EAAQpyiC,MAAQA,EAAQyw7B,EACxB2hH,EAAQnyiC,OAASA,EAASww7B,EACd,IAARA,GACAxv9B,KAAKoxkC,QAAQtv+B,MAAM0t3B,EAAKA,GAGpC,EACAx/zB,EAAMtwJ,UAAUslB,MAAQ,SAAUutjC,EAAU7j9B,EAAY8j9B,GACpD,IAAIlnI,EAAMtr8B,KAAKsr8B,IACXh0tB,EAAMt3O,KAAKs3O,IACXv4M,EAAQus6B,EAAIvs6B,MACZC,EAASss6B,EAAIts6B,OACjB0vF,EAAaA,GAAc1uH,KAAK0uH,WAChC,IAAI+j9B,EAAiBzykC,KAAKowkC,aAAemC,EACrClC,EAAiBrwkC,KAAKqwkC,eACtB7gH,EAAMxv9B,KAAKwv9B,IACXpt9B,EAAOpC,KACPyykC,IACKzykC,KAAKmxkC,SACNnxkC,KAAKkxkC,mBAETlxkC,KAAKoxkC,QAAQtoC,yBAA2B,OACxC9oiC,KAAKoxkC,QAAQ151B,UAAU4ztB,EAAK,EAAG,EAAGvs6B,EAAQyw7B,EAAKxw7B,EAASww7B,IAE5D,IAAI2hH,EAAUnxkC,KAAKmxkC,QACnB,SAASuB,EAAQzukC,EAAGjB,EAAG+7B,EAAOC,GAE1B,GADAs4M,EAAIG,UAAUxzO,EAAGjB,EAAG+7B,EAAOC,GACvB0vF,GAA6B,gBAAfA,EAA8B,CAC5C,IAAIik9B,OAA8B,EAC9B,GAAsBjk9B,IAGtBik9B,GAFkBjk9B,EAAW3hH,QAAW2hH,EAAWkk9B,UAAY7ziC,GACxD2vF,EAAWmk9B,WAAa7ziC,IAExB0vF,EAAWok9B,kBACXhsC,GAAkBxvzB,EAAK5oH,EAAY,CAClCzqH,EAAG,EACHjB,EAAG,EACH+7B,MAAOA,EACPC,OAAQA,IAEhB0vF,EAAWok9B,iBAAmBH,EAC9Bjk9B,EAAWkk9B,QAAU7ziC,EACrB2vF,EAAWmk9B,SAAW7ziC,GAEjB,GAA0B0vF,KAC/BA,EAAWkK,OAASlK,EAAWkK,QAAU421B,EACzC9g2B,EAAWmK,OAASnK,EAAWmK,QAAU221B,EACzCmjH,EAA8B1qC,GAAoB3wzB,EAAK5oH,EAAY,CAC/Do3oB,MAAO,WACH1jwB,EAAK6ukC,eACL7ukC,EAAK2wkC,UAAU5nhB,SACnB,KAGR7zU,EAAIjjN,OACJijN,EAAI2N,UAAY0t1B,GAA+Bjk9B,EAC/C4oH,EAAIuyhB,SAAS5lwB,EAAGjB,EAAG+7B,EAAOC,GAC1Bs4M,EAAI0khB,SACR,CACIy2U,IACAn71B,EAAIjjN,OACJijN,EAAIovhB,YAAc2pU,EAClB/41B,EAAII,UAAUy51B,EAASltkC,EAAGjB,EAAG+7B,EAAOC,GACpCs4M,EAAI0khB,UAEZ,EAEKw2U,GAAgBC,EACjBC,EAAQ,EAAG,EAAG3ziC,EAAOC,GAEhBwziC,EAAanykC,QAClB,EAAUmykC,GAAc,SAAU9++B,GAC9Bg/+B,EAAQh/+B,EAAKzvF,EAAIur9B,EAAK973B,EAAK1wF,EAAIws9B,EAAK973B,EAAK30D,MAAQyw7B,EAAK973B,EAAK10D,OAASww7B,EACxE,GAER,EACOx/zB,CACX,CA5QY,CA4QV,IACF,YEhSA,IAAIgj7B,GAAqB,IACrBC,GAAgB,OAChBC,GAA2B,IA2B3BC,GAAiB,WACjB,SAASA,EAAchj7B,EAAMl8H,EAASooB,EAAM9wB,GACxCvrB,KAAKuM,KAAO,SACZvM,KAAKozkC,YAAc,GACnBpzkC,KAAKqzkC,iBAAmB,GACxBrzkC,KAAKukY,QAAU,CAAC,EAChBvkY,KAAKszkC,aAAe,CAAC,EACrBtzkC,KAAKuzkC,2BAA4B,EACjCvzkC,KAAKuM,KAAO,SACZ,IAAIinkC,GAAgBrj7B,EAAKnkE,UACc,WAAhCmkE,EAAKnkE,SAASp7B,cACrB5wD,KAAK2hwB,MAAQtltB,EAAO,EAAY,CAAC,EAAGA,GAAQ,CAAC,GAC7Cr8C,KAAKwv9B,IAAMnz6B,EAAK4oD,kBAAoBA,GACpCjlG,KAAKyzkC,cAAgBD,EACrBxzkC,KAAKmwJ,KAAOA,EACIA,EAAK97I,QAEjB,GAAuB87I,GACvBA,EAAKlW,UAAY,IAErBj6I,KAAKi0B,QAAUA,EACf,IAAIy/iC,EAAa1zkC,KAAKozkC,YACtBpzkC,KAAKqzkC,iBAAmB,GACxB,IAAIv1iC,EAAS99B,KAAKukY,QAClB,GAAKivsB,EAMA,CACD,IAAIG,EAAaxj7B,EACbpxH,EAAQ40iC,EAAW50iC,MACnBC,EAAS20iC,EAAW30iC,OACN,MAAdqd,EAAKtd,QACLA,EAAQsd,EAAKtd,OAEE,MAAfsd,EAAKrd,SACLA,EAASqd,EAAKrd,QAElBh/B,KAAKwv9B,IAAMnz6B,EAAK4oD,kBAAoB,EACpC0u+B,EAAW50iC,MAAQA,EAAQ/+B,KAAKwv9B,IAChCmkH,EAAW30iC,OAASA,EAASh/B,KAAKwv9B,IAClCxv9B,KAAK4qK,OAAS7rI,EACd/+B,KAAK6qK,QAAU7rI,EACf,IAAI40iC,EAAY,IAAI,GAAMD,EAAY3zkC,KAAMA,KAAKwv9B,KACjDokH,EAAUC,aAAc,EACxBD,EAAU5C,cACVlziC,EAAOm1iC,QAAiBW,EACxBA,EAAUn6H,OAASw5H,GACnBS,EAAW7xkC,KAAKoxkC,IAChBjzkC,KAAK8zkC,SAAW3j7B,CACpB,KA5BmB,CACfnwJ,KAAK4qK,OAAS0vE,GAAQnqF,EAAM,EAAG9zG,GAC/Br8C,KAAK6qK,QAAUyvE,GAAQnqF,EAAM,EAAG9zG,GAChC,IAAI03hC,EAAU/zkC,KAAK8zkC,SAvC/B,SAAoB/0iC,EAAOC,GACvB,IAAI+0iC,EAAU5ukC,SAASmE,cAAc,OASrC,OARAyqkC,EAAQ1/jC,MAAM2qY,QAAU,CACpB,oBACA,SAAWjgX,EAAQ,KACnB,UAAYC,EAAS,KACrB,YACA,WACA,kBACFnyB,KAAK,KAAO,IACPknkC,CACX,CA4B0Ch9J,CAAW/26B,KAAK4qK,OAAQ5qK,KAAK6qK,SAC3D1a,EAAK57I,YAAYw/jC,EACrB,CAwBJ,CAmiBA,OAliBAZ,EAAczzkC,UAAUslC,QAAU,WAC9B,MAAO,QACX,EACAmuiC,EAAczzkC,UAAUs0kC,eAAiB,WACrC,OAAOh0kC,KAAKyzkC,aAChB,EACAN,EAAczzkC,UAAU289B,gBAAkB,WACtC,OAAOr89B,KAAK8zkC,QAChB,EACAX,EAAczzkC,UAAUu0kC,sBAAwB,WAC5C,IAAIC,EAAel0kC,KAAKq89B,kBACxB,GAAI63G,EACA,MAAO,CACHhz+B,WAAYgz+B,EAAahz+B,YAAc,EACvCK,UAAW2y+B,EAAa3y+B,WAAa,EAGjD,EACA4x+B,EAAczzkC,UAAUyrjB,QAAU,SAAUgphB,GACxC,IAAIh+/B,EAAOn2E,KAAKi0B,QAAQ4h7B,gBAAe,GACnCy7H,EAAWtxkC,KAAKqzkC,iBAChBK,EAAa1zkC,KAAKozkC,YACtBpzkC,KAAKo0kC,UAAYvxkC,KAAKwF,SACtBrI,KAAKq0kC,WAAWl+/B,EAAMm7/B,EAAU6C,EAAUn0kC,KAAKo0kC,WAC/C,IAAK,IAAIxzkC,EAAI,EAAGA,EAAI8ykC,EAAWrzkC,OAAQO,IAAK,CACxC,IAAI+E,EAAI+tkC,EAAW9ykC,GACfouH,EAAQhvH,KAAKukY,QAAQ5+X,GACzB,IAAKqpH,EAAM6k9B,aAAe7k9B,EAAMm8b,QAAS,CACrC,IAAIz8b,EAAmB,IAAN9tH,EAAUZ,KAAK289B,iBAAmB,KACnD3t2B,EAAMm8b,QAAQz8b,EAClB,CACJ,CAIA,OAHI1uH,KAAK2hwB,MAAMo6N,eACX/79B,KAAKqzkC,iBAAmBl9/B,EAAKp0E,SAE1B/B,IACX,EACAmzkC,EAAczzkC,UAAU649B,aAAe,WACnCv49B,KAAKs0kC,gBAAgBt0kC,KAAKi0B,QAAQ4h7B,gBAAe,GACrD,EACAs9H,EAAczzkC,UAAU40kC,gBAAkB,SAAUn+/B,GAChD,IAAI0oD,EAAM1oD,EAAK91E,OACX619B,EAAal29B,KAAKu0kC,YAEtB,GADAr+G,GAAcA,EAAWlx8B,QACpB65G,EAAL,CASA,IANA,IAKIy4G,EALAlpN,EAAQ,CACRoq8B,SAAS,EACToT,UAAW5r+B,KAAK4qK,OAChBih0B,WAAY7r+B,KAAK6qK,SAGZjqK,EAAI,EAAGA,EAAIi+H,EAAKj+H,IAAK,CAC1B,IAAIi5I,EAAK1jE,EAAKv1E,GACVi5I,EAAGw80B,YACEH,IACDA,EAAal29B,KAAKu0kC,YAAcv0kC,KAAKw0kC,SAASxB,KAE7C171B,IACDA,EAAM4+uB,EAAW5+uB,KACbjjN,OAERq59B,GAAMp2wB,EAAKz9F,EAAIzrH,EAAOxtB,IAAMi+H,EAAM,GAE1C,CACIy4G,GACAA,EAAI0khB,SArBR,CAuBJ,EACAm3U,EAAczzkC,UAAU+0kC,cAAgB,WACpC,OAAOz0kC,KAAKw0kC,SAASxB,GACzB,EACAG,EAAczzkC,UAAUg1kC,SAAW,SAAUp91B,EAAKz9F,GAC9C2v5B,GAAYlyzB,EAAKz9F,EACrB,EACAs57B,EAAczzkC,UAAU20kC,WAAa,SAAUl+/B,EAAMm7/B,EAAU6C,EAAUQ,GACrE,GAAI30kC,KAAKo0kC,YAAcO,EAAvB,CAGAR,EAAWA,IAAY,EACvBn0kC,KAAK40kC,mBAAmBz+/B,GACxB,IAAIx/C,EAAK32B,KAAK60kC,aAAa1+/B,EAAMm7/B,EAAU6C,GAAWrykB,EAAWnre,EAAGmre,SAAUgzkB,EAAoBn+iC,EAAGm+iC,kBAOrG,GANI90kC,KAAKuzkC,2BACLvzkC,KAAK+0kC,qBAELD,GACA90kC,KAAKs0kC,gBAAgBn+/B,GAEpB2rb,EAOD9hgB,KAAKg1kC,WAAU,SAAUhm9B,GACrBA,EAAMw82B,YAAcx82B,EAAMw82B,YAC9B,QATW,CACX,IAAIypG,EAASj1kC,KACb,IAAsB,WAClBi1kC,EAAOZ,WAAWl+/B,EAAMm7/B,EAAU6C,EAAUQ,EAChD,GACJ,CAfA,CAqBJ,EACAxB,EAAczzkC,UAAUq1kC,mBAAqB,WACzC,IAAIz91B,EAAMt3O,KAAKw0kC,SAASvB,IAAe371B,IACnCv4M,EAAQ/+B,KAAK8zkC,SAAS/0iC,MACtBC,EAASh/B,KAAK8zkC,SAAS90iC,OAC3Bs4M,EAAIG,UAAU,EAAG,EAAG14M,EAAOC,GAC3Bh/B,KAAKk1kC,kBAAiB,SAAUlm9B,GACxBA,EAAMsh9B,SACNh51B,EAAII,UAAU1oH,EAAMs80B,IAAK,EAAG,EAAGvs6B,EAAOC,EAE9C,GACJ,EACAm0iC,EAAczzkC,UAAUm1kC,aAAe,SAAU1+/B,EAAMm7/B,EAAU6C,GAI7D,IAHA,IAAIznhC,EAAQ1sD,KACRm1kC,EAAY,GACZp5G,EAAe/79B,KAAK2hwB,MAAMo6N,aACrBr68B,EAAK,EAAGA,EAAK1hB,KAAKozkC,YAAY/ykC,OAAQqhB,IAAM,CACjD,IAAI+37B,EAASz58B,KAAKozkC,YAAY1xjC,GAC1BstG,EAAQhvH,KAAKukY,QAAQk1kB,GACrBzq1B,EAAM6k9B,aACH7k9B,IAAUhvH,KAAKu0kC,cACdvl9B,EAAM2r1B,SAAWw5H,IACrBgB,EAAUtzkC,KAAKmtH,EAEvB,CAgFA,IA/EA,IAAI8yY,GAAW,EACXgzkB,GAAoB,EACpB9vkB,EAAU,SAAUthgB,GACpB,IAsBI9C,EAtBAouH,EAAQmm9B,EAAUzxkC,GAClB4zO,EAAMtoH,EAAMsoH,IACZk71B,EAAez2G,GACZ/s2B,EAAMqi9B,mBAAmBl7/B,EAAMm7/B,EAAUr5a,EAAOrtf,OAAQqtf,EAAOptf,SAClErkI,EAAQ2tiC,EAAWnl9B,EAAM2h9B,aAAe3h9B,EAAM0h9B,YAC9C0E,GAAYjB,GAAYnl9B,EAAM0+2B,aAAeli9B,KAAKC,IAClDk1C,EAAYy0gC,GAAY5pjC,KAAKC,MAC7BijG,EAAaM,EAAMyq1B,SAAWxhT,EAAOm7a,YAAY,GAC/Cn7a,EAAO0kU,iBAAmB,KAChC,GAAI3t2B,EAAM2h9B,eAAiB3h9B,EAAM4h9B,WAC7B5h9B,EAAMhqG,OAAM,EAAO0pG,EAAY8j9B,QAE9B,GAAIhsiC,IAAUwoF,EAAM2h9B,aAAc,CACnC,IAAI0E,EAAUl//B,EAAK3vC,GACd6uiC,EAAQ3nG,aAAgB2nG,EAAQ/gD,WAAY6/C,GAC7Cnl9B,EAAMhqG,OAAM,EAAO0pG,EAAY8j9B,EAEvC,EACe,IAAXhsiC,IACAnf,QAAQvlB,MAAM,4CACd0kC,EAAQwoF,EAAM2h9B,cAGlB,IAAIxhrB,EAAU,SAAUmmrB,GACpB,IAAIlnjC,EAAQ,CACRoq8B,SAAS,EACTwxE,YAAY,EACZ1nX,OAAQ,KACRspT,UAAWl/6B,EAAMk+G,OACjBih0B,WAAYn/6B,EAAMm+G,SAEtB,IAAKjqK,EAAI4lC,EAAO5lC,EAAIouH,EAAM4h9B,WAAYhwkC,IAAK,CACvC,IAAIi5I,EAAK1jE,EAAKv1E,GAKd,GAJIi5I,EAAGw80B,YACHy+G,GAAoB,GAExBpohC,EAAM6ohC,WAAW177B,EAAI7qB,EAAO+s2B,EAAcu5G,EAAalnjC,EAAOxtB,IAAMouH,EAAM4h9B,WAAa,GACnFwE,GACY5pjC,KAAKC,MAAQk1C,EACb,GACR,KAGZ,CACIvyC,EAAMu7gC,iBACNryzB,EAAI0khB,SAEZ,EACA,GAAIw2U,EACA,GAA4B,IAAxBA,EAAanykC,OACbO,EAAIouH,EAAM4h9B,gBAIV,IADA,IAAIphH,EAAMv3T,EAAOu3T,IACRzv9B,EAAI,EAAGA,EAAIyykC,EAAanykC,SAAUN,EAAG,CAC1C,IAAI2zF,EAAO8++B,EAAazykC,GACxBu3O,EAAIjjN,OACJijN,EAAIwvhB,YACJxvhB,EAAI5jJ,KAAKA,EAAKzvF,EAAIur9B,EAAK973B,EAAK1wF,EAAIws9B,EAAK973B,EAAK30D,MAAQyw7B,EAAK973B,EAAK10D,OAASww7B,GACrEl4uB,EAAI6zK,OACJgE,EAAQz7T,GACR4jJ,EAAI0khB,SACR,MAIJ1khB,EAAIjjN,OACJ86X,IACA73K,EAAI0khB,UAERhtoB,EAAM0h9B,YAAc9vkC,EAChBouH,EAAM0h9B,YAAc1h9B,EAAM4h9B,aAC1B9ukB,GAAW,EAEnB,EACIm2J,EAASj4pB,KACJ0D,EAAI,EAAGA,EAAIyxkC,EAAU90kC,OAAQqD,IAClCshgB,EAAQthgB,GASZ,OAPI,EAAI+i8B,KACJ,EAAUzm8B,KAAKukY,SAAS,SAAUv1Q,GAC1BA,GAASA,EAAMsoH,KAAOtoH,EAAMsoH,IAAI/hH,MAChCvG,EAAMsoH,IAAI/hH,MAElB,IAEG,CACHusY,SAAUA,EACVgzkB,kBAAmBA,EAE3B,EACA3B,EAAczzkC,UAAU61kC,WAAa,SAAU177B,EAAI+wP,EAAcmxlB,EAAcu5G,EAAalnjC,EAAOq7gC,GAC/F,IAAInyzB,EAAMszJ,EAAatzJ,IACvB,GAAIykvB,EAAc,CACd,IAAIyQ,EAAY3y1B,EAAGk/0B,iBACdu8G,GAAe9oG,GAAaA,EAAU7kzB,UAAU2t5B,MACjD5nF,GAAMp2wB,EAAKz9F,EAAIzrH,EAAOq7gC,GACtB5v5B,EAAG0y1B,iBAAiBC,GAE5B,MAEIkhB,GAAMp2wB,EAAKz9F,EAAIzrH,EAAOq7gC,EAE9B,EACA0pC,EAAczzkC,UAAU80kC,SAAW,SAAU/6H,EAAQ62H,GAC7CtwkC,KAAKyzkC,gBAAkBzzkC,KAAKuzkC,4BAC5B95H,EAASw5H,IAEb,IAAIjk9B,EAAQhvH,KAAKukY,QAAQk1kB,GAiBzB,OAhBKzq1B,KACDA,EAAQ,IAAI,GAAM,MAAQyq1B,EAAQz58B,KAAMA,KAAKwv9B,MACvC/V,OAASA,EACfzq1B,EAAM6k9B,aAAc,EAChB7zkC,KAAKszkC,aAAa75H,GAClB,EAAWzq1B,EAAOhvH,KAAKszkC,aAAa75H,IAAS,GAExCz58B,KAAKszkC,aAAa75H,EAASy5H,KAChC,EAAWlk9B,EAAOhvH,KAAKszkC,aAAa75H,EAASy5H,KAA2B,GAExE5C,IACAth9B,EAAMsh9B,QAAUA,GAEpBtwkC,KAAKw1kC,YAAY/7H,EAAQzq1B,GACzBA,EAAMgi9B,eAEHhi9B,CACX,EACAmk9B,EAAczzkC,UAAU81kC,YAAc,SAAU/7H,EAAQzq1B,GACpD,IAAIym9B,EAAYz1kC,KAAKukY,QACjBmvsB,EAAa1zkC,KAAKozkC,YAClBv08B,EAAM608B,EAAWrzkC,OACjB0zkC,EAAU/zkC,KAAK8zkC,SACf4B,EAAY,KACZ90kC,GAAK,EACT,IAAI60kC,EAAUh8H,IArVtB,SAAsBzq1B,GAClB,QAAKA,MAGDA,EAAM6k9B,aAGoB,mBAAlB7k9B,EAAY,QACU,mBAAnBA,EAAa,QAIhC,CA+Ua2m9B,CAAa3m9B,GAAlB,CAMA,GAAI6P,EAAM,GAAK460B,EAASi6H,EAAW,GAAI,CACnC,IAAK9ykC,EAAI,EAAGA,EAAIi+H,EAAM,KACd608B,EAAW9ykC,GAAK648B,GACbi6H,EAAW9ykC,EAAI,GAAK648B,GAFN748B,KAMzB80kC,EAAYD,EAAU/B,EAAW9ykC,GACrC,CAGA,GAFA8ykC,EAAWzwjC,OAAOriB,EAAI,EAAG,EAAG648B,GAC5Bg8H,EAAUh8H,GAAUzq1B,GACfA,EAAMsh9B,QACP,GAAIoF,EAAW,CACX,IAAIE,EAAUF,EAAUpqI,IACpBsqI,EAAQxr/B,YACR2p/B,EAAQpyiC,aAAaqtF,EAAMs80B,IAAKsqI,EAAQxr/B,aAGxC2p/B,EAAQx/jC,YAAYy6G,EAAMs80B,IAElC,MAEQyoI,EAAQ5p/B,WACR4p/B,EAAQpyiC,aAAaqtF,EAAMs80B,IAAKyoI,EAAQ5p/B,YAGxC4p/B,EAAQx/jC,YAAYy6G,EAAMs80B,KAItCt80B,EAAM+j9B,UAAY/ykC,IA/BlB,CAgCJ,EACAmzkC,EAAczzkC,UAAUs1kC,UAAY,SAAUtzgC,EAAIv0B,GAE9C,IADA,IAAIumiC,EAAa1zkC,KAAKozkC,YACbxykC,EAAI,EAAGA,EAAI8ykC,EAAWrzkC,OAAQO,IAAK,CACxC,IAAI+E,EAAI+tkC,EAAW9ykC,GACnB8gE,EAAG9hE,KAAKutC,EAASntC,KAAKukY,QAAQ5+X,GAAIA,EACtC,CACJ,EACAwtkC,EAAczzkC,UAAUw1kC,iBAAmB,SAAUxzgC,EAAIv0B,GAErD,IADA,IAAIumiC,EAAa1zkC,KAAKozkC,YACbxykC,EAAI,EAAGA,EAAI8ykC,EAAWrzkC,OAAQO,IAAK,CACxC,IAAI+E,EAAI+tkC,EAAW9ykC,GACfouH,EAAQhvH,KAAKukY,QAAQ5+X,GACrBqpH,EAAM6k9B,aACNnygC,EAAG9hE,KAAKutC,EAAS6hF,EAAOrpH,EAEhC,CACJ,EACAwtkC,EAAczzkC,UAAUk28B,eAAiB,SAAUl04B,EAAIv0B,GAEnD,IADA,IAAIumiC,EAAa1zkC,KAAKozkC,YACbxykC,EAAI,EAAGA,EAAI8ykC,EAAWrzkC,OAAQO,IAAK,CACxC,IAAI+E,EAAI+tkC,EAAW9ykC,GACfouH,EAAQhvH,KAAKukY,QAAQ5+X,GACpBqpH,EAAM6k9B,aACPnygC,EAAG9hE,KAAKutC,EAAS6hF,EAAOrpH,EAEhC,CACJ,EACAwtkC,EAAczzkC,UAAUm8I,UAAY,WAChC,OAAO77I,KAAKukY,OAChB,EACA4usB,EAAczzkC,UAAUk1kC,mBAAqB,SAAUz+/B,GAInD,SAAS0//B,EAAgB/6tB,GACjB46tB,IACIA,EAAU9E,aAAe91tB,IACzB46tB,EAAU/6H,SAAU,GAExB+6H,EAAU9E,WAAa91tB,EAE/B,CACA,GAXA96W,KAAKk1kC,kBAAiB,SAAUlm9B,EAAOrpH,GACnCqpH,EAAM2r1B,QAAU3r1B,EAAMyh9B,QAAS,CACnC,IASIzwkC,KAAKyzkC,cACL,IAAK,IAAI9nC,EAAM,EAAGA,EAAMx19B,EAAK91E,OAAQsriC,IAEjC,IADI9x5B,EAAK1jE,EAAKw19B,IACPlyF,SAAWtj4B,EAAKw19B,EAAM,GAAGlyF,QAAU5/zB,EAAG6z1B,YAAa,CACtD1t+B,KAAKuzkC,2BAA4B,EACjC,KACJ,CAGR,IAEIuC,EACAl1kC,EAHA80kC,EAAY,KACZK,EAAwB,EAG5B,IAAKn1kC,EAAI,EAAGA,EAAIu1E,EAAK91E,OAAQO,IAAK,CAC9B,IAAIi5I,EACA4/zB,GADA5/zB,EAAK1jE,EAAKv1E,IACE648B,OACZzq1B,OAAQ,EACR8m9B,IAAer8H,IACfq8H,EAAar8H,EACbs8H,EAAwB,GAExBl87B,EAAG6z1B,cACH1+2B,EAAQhvH,KAAKw0kC,SAAS/6H,EAlchB,KAkc0Cz58B,KAAKuzkC,4BAC/C7lG,aAAc,EACpBqoG,EAAwB,GAGxB/m9B,EAAQhvH,KAAKw0kC,SAAS/6H,GAAUs8H,EAAwB,EAAI7C,GAA2B,GAAIlzkC,KAAKuzkC,2BAE/Fvk9B,EAAM6k9B,aACP,EAAc,UAAYp6H,EAAS,kCAAoCzq1B,EAAMzjG,IAE7EyjG,IAAU0m9B,IACV1m9B,EAAMyh9B,QAAS,EACXzh9B,EAAM2h9B,eAAiB/vkC,IACvBouH,EAAM2r1B,SAAU,GAEpB3r1B,EAAM2h9B,aAAe/vkC,EAChBouH,EAAM0+2B,YAIP1+2B,EAAM0h9B,aAAe,EAHrB1h9B,EAAM0h9B,YAAc9vkC,EAKxBi1kC,EAAgBj1kC,GAChB80kC,EAAY1m9B,GAEX6qB,EAAG8g0B,QAAUvB,KAAgBv/zB,EAAGw80B,YACjCrn2B,EAAM2r1B,SAAU,EACZ3r1B,EAAM0+2B,aAAe1+2B,EAAM0h9B,YAAc,IACzC1h9B,EAAM0h9B,YAAc9vkC,GAGhC,CACAi1kC,EAAgBj1kC,GAChBZ,KAAKk1kC,kBAAiB,SAAUlm9B,EAAOrpH,IAC9BqpH,EAAMyh9B,QAAUzh9B,EAAMgoM,kBAAoB,IAC3ChoM,EAAM2r1B,SAAU,EAChB3r1B,EAAM2h9B,aAAe3h9B,EAAM4h9B,WAAa5h9B,EAAM0h9B,YAAc,GAE5D1h9B,EAAM2r1B,SAAW3r1B,EAAM0h9B,YAAc,IACrC1h9B,EAAM0h9B,YAAc1h9B,EAAM2h9B,aAElC,GACJ,EACAwC,EAAczzkC,UAAUslB,MAAQ,WAE5B,OADAhlB,KAAKk1kC,iBAAiBl1kC,KAAKg2kC,aACpBh2kC,IACX,EACAmzkC,EAAczzkC,UAAUs2kC,YAAc,SAAUhn9B,GAC5CA,EAAMhqG,OACV,EACAmujC,EAAczzkC,UAAUg99B,mBAAqB,SAAUhj1B,GACnD15I,KAAK289B,iBAAmBjj1B,EACxB,EAAU15I,KAAKukY,SAAS,SAAUv1Q,GAC9BA,EAAMii9B,cACV,GACJ,EACAkC,EAAczzkC,UAAU889B,YAAc,SAAU/iB,EAAQ39oB,GACpD,GAAIA,EAAQ,CACR,IAAIm6wB,EAAcj2kC,KAAKszkC,aAClB2C,EAAYx8H,GAIb,EAAWw8H,EAAYx8H,GAAS39oB,GAAQ,GAHxCm6wB,EAAYx8H,GAAU39oB,EAK1B,IAAK,IAAIl7T,EAAI,EAAGA,EAAIZ,KAAKozkC,YAAY/ykC,OAAQO,IAAK,CAC9C,IAAIs1kC,EAAUl2kC,KAAKozkC,YAAYxykC,GAC3Bs1kC,IAAYz8H,GAAUy8H,IAAYz8H,EAASy5H,IAE3C,EADYlzkC,KAAKukY,QAAQ2xsB,GACPD,EAAYx8H,IAAS,EAE/C,CACJ,CACJ,EACA05H,EAAczzkC,UAAUy2kC,SAAW,SAAU18H,GACzC,IAAI376B,EAAS99B,KAAKukY,QACdmvsB,EAAa1zkC,KAAKozkC,YAClBpk9B,EAAQlxF,EAAO276B,GACdzq1B,IAGLA,EAAMs80B,IAAI5p6B,WAAW7E,YAAYmyF,EAAMs80B,YAChCxt6B,EAAO276B,GACdi6H,EAAWzwjC,OAAO,EAAaywjC,EAAYj6H,GAAS,GACxD,EACA05H,EAAczzkC,UAAUmvH,OAAS,SAAU9vF,EAAOC,GAC9C,GAAKh/B,KAAK8zkC,SAASz/jC,MAQd,CACD,IAAI0/jC,EAAU/zkC,KAAK8zkC,SACnBC,EAAQ1/jC,MAAMC,QAAU,OACxB,IAAI+nC,EAAOr8C,KAAK2hwB,MACZxxmB,EAAOnwJ,KAAKmwJ,KAMhB,GALS,MAATpxH,IAAkBsd,EAAKtd,MAAQA,GACrB,MAAVC,IAAmBqd,EAAKrd,OAASA,GACjCD,EAAQu7M,GAAQnqF,EAAM,EAAG9zG,GACzBrd,EAASs7M,GAAQnqF,EAAM,EAAG9zG,GAC1B03hC,EAAQ1/jC,MAAMC,QAAU,GACpBtU,KAAK4qK,SAAW7rI,GAASC,IAAWh/B,KAAK6qK,QAAS,CAGlD,IAAK,IAAIt/I,KAFTwojC,EAAQ1/jC,MAAM0qB,MAAQA,EAAQ,KAC9Bg1iC,EAAQ1/jC,MAAM2qB,OAASA,EAAS,KACjBh/B,KAAKukY,QACZvkY,KAAKukY,QAAQ5kY,eAAe4rB,IAC5BvrB,KAAKukY,QAAQh5W,GAAIsjG,OAAO9vF,EAAOC,GAGvCh/B,KAAKmrjB,SAAQ,EACjB,CACAnrjB,KAAK4qK,OAAS7rI,EACd/+B,KAAK6qK,QAAU7rI,CACnB,KA9B0B,CACtB,GAAa,MAATD,GAA2B,MAAVC,EACjB,OAEJh/B,KAAK4qK,OAAS7rI,EACd/+B,KAAK6qK,QAAU7rI,EACfh/B,KAAKw0kC,SAASvB,IAAepk9B,OAAO9vF,EAAOC,EAC/C,CAwBA,OAAOh/B,IACX,EACAmzkC,EAAczzkC,UAAU02kC,WAAa,SAAU38H,GAC3C,IAAIzq1B,EAAQhvH,KAAKukY,QAAQk1kB,GACrBzq1B,GACAA,EAAMhqG,OAEd,EACAmujC,EAAczzkC,UAAU2l8B,QAAU,WAC9Brl8B,KAAKmwJ,KAAKlW,UAAY,GACtBj6I,KAAKmwJ,KACDnwJ,KAAKi0B,QACDj0B,KAAK8zkC,SACD9zkC,KAAKukY,QAAU,IAC/B,EACA4usB,EAAczzkC,UAAU0ziC,kBAAoB,SAAU/2/B,GAElD,GADAA,EAAOA,GAAQ,CAAC,EACZr8C,KAAKyzkC,gBAAkBzzkC,KAAK+0kC,mBAC5B,OAAO/0kC,KAAKukY,QAAQ0usB,QAAe3nI,IAEvC,IAAI+qI,EAAa,IAAI,GAAM,QAASr2kC,KAAMq8C,EAAKuyE,YAAc5uH,KAAKwv9B,KAClE6mH,EAAWrF,cACXqF,EAAWrxjC,OAAM,EAAOq3B,EAAKq9F,iBAAmB15I,KAAK289B,kBACrD,IAAIrlvB,EAAM++1B,EAAW/+1B,IACrB,GAAIj7L,EAAKuyE,YAAc5uH,KAAKwv9B,IAAK,CAC7Bxv9B,KAAKmrjB,UACL,IAAImrhB,EAAUD,EAAW/qI,IAAIvs6B,MACzBw3iC,EAAWF,EAAW/qI,IAAIts6B,OAC9Bh/B,KAAKg1kC,WAAU,SAAUhm9B,GACjBA,EAAM6k9B,YACNv81B,EAAII,UAAU1oH,EAAMs80B,IAAK,EAAG,EAAGgrI,EAASC,GAEnCvn9B,EAAMqk7B,iBACX/7zB,EAAIjjN,OACJ26F,EAAMqk7B,eAAe/7zB,GACrBA,EAAI0khB,UAEZ,GACJ,MAQI,IANA,IAAI5tuB,EAAQ,CACRoq8B,SAAS,EACToT,UAAW5r+B,KAAK4qK,OAChBih0B,WAAY7r+B,KAAK6qK,SAEjBmvyB,EAAch68B,KAAKi0B,QAAQ4h7B,gBAAe,GACrCj18B,EAAI,EAAGi+H,EAAMm70B,EAAY358B,OAAQO,EAAIi+H,EAAKj+H,IAAK,CACpD,IAAIi5I,EAAKmg0B,EAAYp58B,GACrB8s/B,GAAMp2wB,EAAKz9F,EAAIzrH,EAAOxtB,IAAMi+H,EAAM,EACtC,CAEJ,OAAOw38B,EAAW/qI,GACtB,EACA6nI,EAAczzkC,UAAUyrO,SAAW,WAC/B,OAAOnrO,KAAK4qK,MAChB,EACAuo6B,EAAczzkC,UAAUs7K,UAAY,WAChC,OAAOh7K,KAAK6qK,OAChB,EACOso6B,CACX,CAzlBoB,GA0lBpB,YC9nBA,IAAI,GAAUtwkC,KAAK4wH,IACf,GAAU5wH,KAAKuxH,IACf,GAAKvxH,KAAKsmC,GACV,GAAgB,EAAVtmC,KAAKsmC,GACX+jvB,GAAS,IAAM,GACfspT,GAAoB,WACpB,SAASA,IACT,CA4FA,OA3FAA,EAAiB92kC,UAAUuhE,MAAQ,SAAUg1M,GACzCj2Q,KAAKy2kC,QAAS,EACdz2kC,KAAKq7D,GAAK,GACVr7D,KAAK02kC,KAAO,GACZ12kC,KAAKooG,GAAKvlG,KAAK6yF,IAAI,GAAIugL,GAAa,EACxC,EACAug0B,EAAiB92kC,UAAUqnwB,OAAS,SAAU9iwB,EAAGjB,GAC7ChD,KAAKinI,KAAK,IAAKhjI,EAAGjB,EACtB,EACAwzkC,EAAiB92kC,UAAUsnwB,OAAS,SAAU/iwB,EAAGjB,GAC7ChD,KAAKinI,KAAK,IAAKhjI,EAAGjB,EACtB,EACAwzkC,EAAiB92kC,UAAUsqxB,cAAgB,SAAU/lxB,EAAGjB,EAAG85L,EAAIrlE,EAAIgxL,EAAIC,GACnE1oT,KAAKinI,KAAK,IAAKhjI,EAAGjB,EAAG85L,EAAIrlE,EAAIgxL,EAAIC,EACrC,EACA8txB,EAAiB92kC,UAAUkx+B,iBAAmB,SAAU3s+B,EAAGjB,EAAG85L,EAAIrlE,GAC9Dz3H,KAAKinI,KAAK,IAAKhjI,EAAGjB,EAAG85L,EAAIrlE,EAC7B,EACA++8B,EAAiB92kC,UAAUwqxB,IAAM,SAAUxphB,EAAIumG,EAAIlnW,EAAG8oxB,EAAYC,EAAU2lN,GACxEzu+B,KAAK23d,QAAQj3N,EAAIumG,EAAIlnW,EAAGA,EAAG,EAAG8oxB,EAAYC,EAAU2lN,EACxD,EACA+nG,EAAiB92kC,UAAUi4d,QAAU,SAAUj3N,EAAIumG,EAAI/pL,EAAIC,EAAI60zB,EAAKnpN,EAAYC,EAAU2lN,GACtF,IAMIv2J,EANA46J,EAAShqN,EAAWD,EACpBjkb,GAAa6poB,EACbkoG,EAAiB9zkC,KAAKmjH,IAAI8s3B,GAC1B8jG,EAAW,GAAaD,EAAiB,MACrC/xuB,EAAYkuoB,GAAU,IAAOA,GAAU,IAC3C+jG,EAAe/jG,EAAS,EAAIA,EAAS,GAAOA,EAAS,GAAM,GAG3D56J,IADA0+P,IAGK,GAAaD,IAITE,GAAgB,MAAUjyuB,EAEvC,IAAIx+G,EAAKsa,EAAKxjF,EAAK,GAAQ2rmB,GACvBp3lB,EAAKw1K,EAAK9pL,EAAK,GAAQ0rmB,GACvB7oxB,KAAKy2kC,QACLz2kC,KAAKinI,KAAK,IAAKm/G,EAAI30D,GAEvB,IAAIql5B,EAAOj0kC,KAAKogD,MAAM+u7B,EAAM9kN,IAC5B,GAAI0pT,EAAU,CACV,IAAI9zkC,EAAI,EAAI9C,KAAKooG,GACb2u+B,GAAYnyuB,EAAY,GAAK,IAAM,GAAM9hW,GAC7C9C,KAAKinI,KAAK,IAAKi2C,EAAIC,EAAI255B,EAAM,GAAIlyuB,EAAWlkG,EAAKxjF,EAAK,GAAQ2rmB,EAAakuT,GAAW9vuB,EAAK9pL,EAAK,GAAQ0rmB,EAAakuT,IACjHj0kC,EAAI,KACJ9C,KAAKinI,KAAK,IAAKi2C,EAAIC,EAAI255B,EAAM,GAAIlyuB,EAAWx+G,EAAI30D,EAExD,KACK,CACD,IAAIxtL,EAAIy8P,EAAKxjF,EAAK,GAAQ4rmB,GACtB9lxB,EAAIikW,EAAK9pL,EAAK,GAAQ2rmB,GAC1B9oxB,KAAKinI,KAAK,IAAKi2C,EAAIC,EAAI255B,GAAO5+P,GAAQtze,EAAW3gW,EAAGjB,EACxD,CACJ,EACAwzkC,EAAiB92kC,UAAUg0F,KAAO,SAAUzvF,EAAGjB,EAAGO,EAAGX,GACjD5C,KAAKinI,KAAK,IAAKhjI,EAAGjB,GAClBhD,KAAKinI,KAAK,IAAK1jI,EAAG,GAClBvD,KAAKinI,KAAK,IAAK,EAAGrkI,GAClB5C,KAAKinI,KAAK,KAAM1jI,EAAG,GACnBvD,KAAKinI,KAAK,IACd,EACAuv8B,EAAiB92kC,UAAUunwB,UAAY,WAC/BjnwB,KAAKq7D,GAAGh7D,OAAS,GACjBL,KAAKinI,KAAK,IAElB,EACAuv8B,EAAiB92kC,UAAUunI,KAAO,SAAUiq2B,EAAKlw+B,EAAGsC,EAAGzC,EAAG8B,EAAGxD,EAAGuD,EAAGP,EAAGS,GAGlE,IAFA,IAAIo0kC,EAAO,GACPl0kC,EAAI9C,KAAKooG,GACJxnG,EAAI,EAAGA,EAAIR,UAAUC,OAAQO,IAAK,CACvC,IAAI88K,EAAMt9K,UAAUQ,GACpB,GAAI0rC,MAAMoxI,GAEN,YADA19K,KAAK0m9B,UAAW,GAGpBswH,EAAKn1kC,KAAKgB,KAAKogD,MAAMy6H,EAAM56K,GAAKA,EACpC,CACA9C,KAAKq7D,GAAGx5D,KAAKqv+B,EAAM8lG,EAAKnqkC,KAAK,MAC7B7M,KAAKy2kC,OAAiB,MAARvlG,CAClB,EACAslG,EAAiB92kC,UAAUu3kC,YAAc,WACrCj3kC,KAAK02kC,KAAO12kC,KAAK0m9B,SAAW,GAAK1m9B,KAAKq7D,GAAGxuD,KAAK,IAC9C7M,KAAKq7D,GAAK,EACd,EACAm7gC,EAAiB92kC,UAAUw3kC,OAAS,WAChC,OAAOl3kC,KAAK02kC,IAChB,EACOF,CACX,CA/FuB,GAgGvB,YCjGA,IAAIhh0B,GAAO,OACP,GAAY3yQ,KAAKogD,MASjBk0hC,GAAc,CAAC,UAAW,aAAc,YACxCC,GAAiB/njC,EAAI8njC,IAAa,SAAU3q7B,GAAQ,MAAO,UAAYA,EAAKj9I,aAAe,ICdxF,IAAI8nkC,GAAQ,6BACRC,GAAU,+BACVC,GAAQ,gCACRC,GAAgB,uCACpB,SAASlukC,GAAcoB,GAC1B,OAAOvF,SAASq3vB,gBAAgB66U,GAAO3skC,EAC3C,CAEO,SAAS+skC,GAAYrgkC,EAAKyN,EAAKsohC,EAAOntgC,EAAU5P,GACnD,MAAO,CACHhZ,IAAKA,EACL+1hC,MAAOA,GAAS,CAAC,EACjBntgC,SAAUA,EACV5P,KAAMA,EACNvL,IAAKA,EAEb,CAqBO,SAAS6yjC,GAAc797B,EAAIx9F,GAE9B,IAAI74C,GADJ64C,EAAOA,GAAQ,CAAC,GACHw38B,QAAU,KAAO,GAQ9B,OAPA,SAAS8jF,EAAkB997B,GACvB,IAAI75G,EAAW65G,EAAG75G,SAAU5oB,EAAMyiI,EAAGziI,IAAK+1hC,EAAQtz5B,EAAGsz5B,MAAO/8gC,EAAOypH,EAAGzpH,KACtE,OAzBR,SAA2B1lB,EAAMyiiC,GAC7B,IAAIyqC,EAAW,GACf,GAAIzqC,EACA,IAAK,IAAItohC,KAAOsohC,EAAO,CACnB,IAAIzv3B,EAAMyv3B,EAAMtohC,GACZwjV,EAAOxjV,GACC,IAAR64J,KAGa,IAARA,GAAuB,MAAPA,IACrB2qL,GAAQ,KAAQ3qL,EAAM,KAE1Bk65B,EAAS/1kC,KAAKwmW,GAClB,CAEJ,MAAO,IAAM39V,EAAO,IAAMktkC,EAAS/qkC,KAAK,KAAO,GACnD,CASegrkC,CAAkBzgkC,EAAK+1hC,IACf,UAAR/1hC,EAAkBw47B,GAAWx/6B,GAAQA,GAAQ,KAC7C4P,EAAW,GAAKx8B,EAAI6rB,EAAI2Q,GAAU,SAAUkqD,GAAS,OAAOyt/B,EAAkBzt/B,EAAQ,IAAGr9E,KAAKrJ,GAAKA,EAAI,IAT3G,KAUsB4T,EAVR,GAWrB,CACOugkC,CAAkB997B,EAC7B,CA2BO,SAASi+7B,GAAiBC,GAC7B,MAAO,CACHA,KAAMA,EACNC,YAAa,CAAC,EACdC,aAAc,CAAC,EACfC,cAAe,CAAC,EAChBC,cAAe,CAAC,EAChB57lB,KAAM,CAAC,EACP67lB,SAAU,CAAC,EACXC,SAAU,CAAC,EACXC,YAAa,EACbC,WAAY,EACZC,UAAW,EACXC,YAAa,EACbC,WAAY,EACZC,YAAa,EAErB,CACO,SAASC,GAAe75iC,EAAOC,EAAQgB,EAAUwzgC,GACpD,OAAOikC,GAAY,MAAO,OAAQ,CAC9B,MAAS14iC,EACT,OAAUC,EACV,MAASq4iC,GACT,cAAeC,GACf,QAAW,MACX,YAAe,OACf,UAAW9jC,GAAa,OAASz0gC,EAAQ,IAAMC,GAChDgB,EACP,CCjGO,IAAI64iC,GAAa,CACpB/8H,QAAS,gBACTC,SAAU,gBACVC,WAAY,gBACZL,YAAa,eACbC,aAAc,eACdC,eAAgB,gBAChBI,UAAW,eACXC,WAAY,eACZC,aAAc,gBACdC,UAAW,gBACXC,WAAY,gBACZC,aAAc,gBACdC,aAAc,gBACdC,cAAe,gBACfC,gBAAiB,gBACjBC,cAAe,eACfC,eAAgB,eAChBC,iBAAkB,gBAClBC,WAAY,gBACZC,YAAa,gBACbC,cAAe,iBAEf+7H,GAAqB,mBACzB,SAASC,GAAgBl/7B,EAAIm/7B,EAAS3ijC,GAClC,IAAIisM,EAAQ+mL,EAAO,CAAC,EAAGxvQ,EAAGyoF,OAC1B+mL,EAAO/mL,EAAO022B,GACdn/7B,EAAG651B,UAAUr98B,EAAMisM,GACnB,IAAI222B,EAAiB,IAAI,GAIzB,OAHAA,EAAeh4gC,MAAM2j5B,GAAiB/q0B,IACtCxjH,EAAKo78B,YAAYwnG,EAAgB,GACjCA,EAAehC,cACRgC,EAAe/B,QAC1B,CACA,SAASgC,GAAmBppkC,EAAQ8yH,GAChC,IAAI+pD,EAAU/pD,EAAU+pD,QAASC,EAAUhqD,EAAUgqD,SACjDD,GAAWC,KACX98K,EAAOgpkC,IAAsBns5B,EAAU,MAAQC,EAAU,KAEjE,CACO,IAAIus5B,GAAoB,CAC3B/78B,KAAM,OACNwO,QAAS,UACTymM,UAAW,eACXmxc,eAAgB,qBAEpB,SAAS41T,GAAaC,EAASjrjC,GAC3B,IAAIkrjC,EAAgBlrjC,EAAM2pjC,KAAO,QAAU3pjC,EAAMmqjC,aAEjD,OADAnqjC,EAAMiqjC,SAASiB,GAAiBD,EACzBC,CACX,CAsCA,SAASC,GAAc1u9B,GACnB,OAAO7vD,GAAS6vD,GACVgu9B,GAAWhu9B,GACP,gBAAkBgu9B,GAAWhu9B,GAAU,IACvCw01B,GAAsBx01B,GAAUA,EAAS,GAC7C,EACV,CACO,SAAS2u9B,GAAmB3/7B,EAAIsz5B,EAAO/+gC,EAAOqrjC,GACjD,IAAIlnH,EAAY140B,EAAG040B,UACf1z1B,EAAM0z1B,EAAUly9B,OAChBq5kC,EAAgB,GACpB,GAAI7/7B,aAAc,GAAc,CAC5B,IAAIi80B,EAjDZ,SAAwCj80B,EAAIsz5B,EAAO/+gC,GAC/C,IAEIurjC,EACAC,EAHAr71B,EAAQ1kG,EAAGyoF,MAAMic,MACjBs71B,EAAe,CAAC,EA4BpB,GAzBA,EAAKt71B,GAAO,SAAUloN,GAClB,IAAIyjjC,EAAWhC,GAAiB1pjC,EAAM2pjC,MACtC+B,EAAS/p1B,WAAY,EACrByp1B,GAAmBnjjC,EAAM,CAAC,EAAGyjjC,GAAU,GACvC,IAAIzB,EAAWyB,EAASzB,SACpBD,EAAW0B,EAAS1B,SACpB2B,EAAYzmkC,GAAK+kkC,GACjBx58B,EAAMk78B,EAAU15kC,OACpB,GAAKw+H,EAAL,CAIA,IAAIm78B,EAAW3B,EADfuB,EAAmBG,EAAUl78B,EAAM,IAEnC,IAAK,IAAI4h1B,KAAWu5H,EAAU,CAC1B,IAAIzyH,EAAKyyH,EAASv5H,GAClBo5H,EAAap5H,GAAWo5H,EAAap5H,IAAY,CAAE998B,EAAG,IACtDk3kC,EAAap5H,GAAS998B,GAAK4k9B,EAAG5k9B,GAAK,EACvC,CACA,IAAK,IAAIitF,KAAawo/B,EAAU,CAC5B,IAAI165B,EAAM065B,EAASxo/B,GAAWmgK,UAC1BryE,EAAIl9K,QAAQo5kC,IAAqB,IACjCD,EAAkBj85B,EAE1B,CAbA,CAcJ,IACKi85B,EAAL,CAGAxsC,EAAMxqiC,GAAI,EACV,IAAI22kC,EAAgBF,GAAaS,EAAczrjC,GAC/C,OAAOurjC,EAAgBltkC,QAAQmtkC,EAAkBN,EAHjD,CAIJ,CAa2BW,CAA+Bpg8B,EAAIsz5B,EAAO/+gC,GAC7D,GAAI0n8B,EACA4jH,EAAc73kC,KAAKi09B,QAElB,IAAKj31B,EACN,MAER,MACK,IAAKA,EACN,OAGJ,IADA,IAAIq78B,EAAiB,CAAC,EACbt5kC,EAAI,EAAGA,EAAIi+H,EAAKj+H,IAAK,CAC1B,IAAI+xP,EAAW4/tB,EAAU3x9B,GACrBu5kC,EAAS,CAACxn1B,EAAS22tB,aAAe,IAAO,KACzCz+1B,EAAS0u9B,GAAc5m1B,EAASy4tB,UAAUvg2B,QAC1C1pE,EAAQwxM,EAAS42tB,WACjB1+1B,EACAsv9B,EAAOt4kC,KAAKgpH,GAGZsv9B,EAAOt4kC,KAAK,UAEZs/C,GACAg5hC,EAAOt4kC,KAAKs/C,EAAQ,IAAO,KAE3BwxM,EAAS62tB,WACT2wH,EAAOt4kC,KAAK,YAEhB,IAAIq29B,EAAMiiH,EAAOttkC,KAAK,KACtBqtkC,EAAehiH,GAAOgiH,EAAehiH,IAAQ,CAACA,EAAK,IACnDgiH,EAAehiH,GAAK,GAAGr29B,KAAK8wP,EAChC,CACA,SAASyn1B,EAAyBC,GAC9B,IA0DIhkjC,EA1DAk87B,EAAY8nH,EAAc,GAC1Bx78B,EAAM0z1B,EAAUly9B,OAChBi6kC,EAAe,CAAC,EAChBC,EAAW,CAAC,EACZC,EAAW,CAAC,EACZC,EAAkC,4BACtC,SAASC,EAA0B/n1B,EAAUgo1B,EAAQC,GAGjD,IAFA,IAAIrpI,EAAS5+sB,EAAS04tB,YAClB7D,EAAU70tB,EAAS22tB,aACd5l9B,EAAI,EAAGA,EAAI6t8B,EAAOlx8B,OAAQqD,IAAK,CACpC,IAAIkzc,EAAQ26f,EAAO7t8B,GACnB,GAAIkzc,EAAMowgB,eAAgB,CACtB,IAAIU,EAAM9wgB,EAAMz2M,UACZpO,EAAW6kN,EAAMrrT,SAErB,GADAqv7B,IAAkB7o1B,EAAW6o1B,EAAc7o1B,IACvCA,EACA,IAAK,IAAInxP,EAAI,EAAGA,EAAI8m9B,EAAIrn9B,OAAQO,IAAK,CACjC,IAAI2m9B,EAAKG,EAAI9m9B,GACT6/8B,EAAU598B,KAAKogD,MAAMsk6B,EAAG1h6B,KAAO2h6B,EAAU,KAAO,IAChDqzH,EAAWtB,GAAchyH,EAAG181B,QAC5BlwD,EAAW4s5B,EAAG5s5B,UACdK,GAASL,IAAarX,GAASqX,MAC/BgghC,EAAOl6H,GAAWk6H,EAAOl6H,IAAY,CAAC,EACtCk6H,EAAOl6H,GAAS1utB,GAAYw1tB,EAAG5s5B,SAC3BkghC,IACAF,EAAOl6H,GAASg6H,GAAmCI,GAG/D,CAER,CACJ,CACJ,CACA,IAAK,IAAIj6kC,EAAI,EAAGA,EAAIi+H,EAAKj+H,KAEjBuo8B,GADAx2sB,EAAW4/tB,EAAU3x9B,IACCqm3B,YAIF,UAAfkiF,GACLuxI,EAA0B/n1B,EAAU4n1B,IAHnCd,GAAaiB,EAA0B/n1B,EAAU2n1B,GAM1D,IAAK,IAAI75H,KAAW65H,EAAc,CAC9B,IAAI138B,EAAY,CAAC,EACjBwu1B,GAAcxu1B,EAAWiX,GACzBwvQ,EAAOzmR,EAAW038B,EAAa75H,IAC/B,IAAI9p4B,EAAMmu4B,GAAsBli1B,GAC5Bk48B,EAAiBR,EAAa75H,GAASg6H,GAC3CD,EAAS/5H,GAAW9p4B,EAAM,CACtBisD,UAAWjsD,GACX,CAAC,EACLuigC,GAAmBsB,EAAS/5H,GAAU790B,GAClCk48B,IACAN,EAAS/5H,GAASg6H,GAAmCK,EAE7D,CAGA,IAAIC,GAAkB,EACtB,IAAK,IAAIt6H,KAAW85H,EAAU,CAC1BC,EAAS/5H,GAAW+5H,EAAS/5H,IAAY,CAAC,EAC1C,IAAI2wB,GAAW/68B,EACXykjC,EAAiBP,EAAS95H,GAASg6H,GACnCrpG,IACA/68B,EAAO,IAAI,IAEf,IAAIu1gC,EAAQv1gC,EAAKwoG,MACjBxoG,EAAK4qC,QACLu5gC,EAAS/5H,GAAS998B,EAAIo2kC,GAAgBl/7B,EAAI0g8B,EAAS95H,GAAUpq7B,GAC7D,IAAI2kjC,EAAS3kjC,EAAKwoG,MAClB,IAAKuy2B,GAAWw6D,IAAUovC,EAAQ,CAC9BD,GAAkB,EAClB,KACJ,CACID,IACAN,EAAS/5H,GAASg6H,GAAmCK,EAE7D,CAEA,IAAKC,EACD,IAAK,IAAIt6H,KAAW+5H,SACTA,EAAS/5H,GAAS998B,EAGjC,IAAK82kC,EACD,IAAS74kC,EAAI,EAAGA,EAAIi+H,EAAKj+H,IAAK,CAC1B,IAAI+xP,EACAw2sB,EACe,WADfA,GADAx2sB,EAAW4/tB,EAAU3x9B,IACCqm3B,aAEtByzN,EAA0B/n1B,EAAU6n1B,GAAU,SAAUjv7B,GAAY,OAAO4t7B,GAAkB5t7B,EAAW,GAEhH,CAEJ,IAEI0v7B,EAFAC,EAAW5nkC,GAAKknkC,GAChBW,GAAyB,EAE7B,IAASv6kC,EAAI,EAAGA,EAAIs6kC,EAAS76kC,OAAQO,IAAK,CACtC,IAAIi3H,EAAKqj9B,EAASt6kC,EAAI,GAClBy/O,EAAK661B,EAASt6kC,GAClB,GAAI45kC,EAAS3i9B,GAAIih9B,MAAwB0B,EAASn61B,GAAIy41B,IAAqB,CACvEqC,GAAyB,EACzB,KACJ,CACAF,EAAkBT,EAAS3i9B,GAAIih9B,GACnC,CACA,GAAIqC,GAA0BF,EAAiB,CAC3C,IAAK,IAAIx6H,KAAW+5H,EACZA,EAAS/5H,GAASq4H,YACX0B,EAAS/5H,GAASq4H,IAGjC3rC,EAAM2rC,IAAsBmC,CAChC,CACA,GAAIpujC,GAAOqujC,GAAU,SAAUz6H,GAAW,OAAOnt8B,GAAKknkC,EAAS/5H,IAAUpg9B,OAAS,CAAG,IAAGA,OAEpF,OADoB+4kC,GAAaoB,EAAUpsjC,GACpB,IAAMisjC,EAAc,GAAK,OAExD,CACA,IAAK,IAAIx1jC,KAAOq1jC,GACRpkH,EAAeskH,EAAyBF,EAAer1jC,MAEvD60jC,EAAc73kC,KAAKi09B,GAG3B,GAAI4jH,EAAcr5kC,OAAQ,CACtB,IAAIuvF,EAAYxhE,EAAM2pjC,KAAO,QAAU3pjC,EAAMkqjC,cAC7ClqjC,EAAMgqjC,SAAS,IAAMxo/B,GAAa,CAC9BmgK,UAAW2p1B,EAAc7skC,KAAK,MAElCsgiC,EAAa,MAAIv98B,CACrB,CACJ,CCrQA,IAAI,GAAQ/sF,KAAKogD,MACjB,SAAS,GAAYy6H,GACjB,OAAOA,GAAO1iH,GAAS0iH,EAAIlpK,IAC/B,CACA,SAAS4mkC,GAAa195B,GAClB,OAAOA,GAAOsnF,GAAWtnF,EAAI0vG,UACjC,CACA,SAASiuzB,GAAcluC,EAAO94hC,EAAOwlI,EAAIzrH,IHH1B,SAAyBktjC,EAAYjnkC,EAAOwlI,EAAI1M,GAC3D,IAAIvB,EAA2B,MAAjBv3H,EAAMu3H,QAAkB,EAAIv3H,EAAMu3H,QAChD,GAAIiO,aAAc,GACdyh8B,EAAW,UAAW1v8B,OAD1B,CAIA,GAhBJ,SAAqBv3H,GACjB,IAAI+oH,EAAO/oH,EAAM+oH,KACjB,OAAe,MAARA,GAAgBA,IAASo4I,EACpC,CAaQ+l0B,CAAYlnkC,GAAQ,CACpB,IAAI+oH,EAAO4m1B,GAAe3v8B,EAAM+oH,MAChCk+8B,EAAW,OAAQl+8B,EAAK7P,OACxB,IAAI01I,EAAmC,MAArB5uP,EAAM4uP,YAClB5uP,EAAM4uP,YAAc7lI,EAAKwO,QAAUA,EACnCxO,EAAKwO,QAAUA,GACjBuB,GAAe81H,EAAc,IAC7Bq40B,EAAW,eAAgBr40B,EAEnC,MAEIq40B,EAAW,OAAQ9l0B,IAEvB,GAzBJ,SAAuBnhQ,GACnB,IAAI+owB,EAAS/owB,EAAM+owB,OACnB,OAAiB,MAAVA,GAAkBA,IAAW5ngB,EACxC,CAsBQgm0B,CAAcnnkC,GAAQ,CACtB,IAAI+owB,EAAS4mM,GAAe3v8B,EAAM+owB,QAClCk+T,EAAW,SAAUl+T,EAAO7vpB,OAC5B,IAAIku9B,EAAcpnkC,EAAM8+9B,cAClBt51B,EAAGs30B,eACH,EACF7xuB,EAAem81B,GAAepnkC,EAAMg+T,WAAa,GAAKopwB,EAAc,EACpEl40B,EAAuC,MAAvBlvP,EAAMkvP,cACpBlvP,EAAMkvP,cAAgB65gB,EAAOxxoB,QAAUA,EACvCwxoB,EAAOxxoB,QAAUA,EACnBwn2B,EAAc/+9B,EAAM++9B,YAUxB,IATIjm2B,GAA+B,IAAhBmyG,IACfg81B,EAAW,eAAgBh81B,IAE3BnyG,GAAeim2B,IACfkoG,EAAW,cAAeloG,EAAc,SAAW,SAEnDjm2B,GAAeo2H,EAAgB,IAC/B+30B,EAAW,iBAAkB/30B,GAE7BlvP,EAAMkvwB,SAAU,CAChB,IAAI5svB,EAAK4j4B,GAAY1gxB,GAAK0poB,EAAW5svB,EAAG,GAAI6svB,EAAiB7svB,EAAG,GAC5D4svB,IACAC,EAAiB,GAAUA,GAAkB,GAC7C83T,EAAW,mBAAoB/3T,EAAS12wB,KAAK,OACzC22wB,GAAkBr2oB,IAClBmu8B,EAAW,oBAAqB93T,GAG5C,MACSr2oB,GACLmu8B,EAAW,mBAAoB9l0B,IAEnC,IAAK,IAAI50Q,EAAI,EAAGA,EAAIu2kC,GAAY92kC,OAAQO,IAAK,CACzC,IAAI2qJ,EAAW4r7B,GAAYv2kC,GAC3B,GAAIusI,GAAe94H,EAAMk3I,KAAc0n1B,GAAmB1n1B,GAAW,CACjE,IAAImyB,EAAMrpK,EAAMk3I,IAAa0n1B,GAAmB1n1B,GAChDmyB,GAAO495B,EAAWlE,GAAex2kC,GAAI88K,EACzC,CACJ,CACJ,MACSvwC,GACLmu8B,EAAW,SAAU9l0B,GAxDzB,CA0DJ,EG3DIkm0B,EAAgB,SAAU72jC,EAAK64J,GAC3B,IAAIi+5B,EAAuB,SAAR92jC,GAA0B,WAARA,EACjC82jC,GAAgBj3H,GAAWhnyB,GAC3Bk+5B,GAAYvnkC,EAAO84hC,EAAOtohC,EAAKuJ,GAE1ButjC,GAAgBt3H,GAAU3myB,GAC/Bm+5B,GAAWhi8B,EAAIsz5B,EAAOtohC,EAAKuJ,GAG3B++gC,EAAMtohC,GAAO64J,CAErB,GAAGrpK,EAAOwlI,GAAI,GA+MlB,SAAmBA,EAAIsz5B,EAAO/+gC,GAC1B,IAAI/Z,EAAQwlI,EAAGxlI,MACf,GhKtLG,SAAmBA,GACtB,OAAOA,IACCA,EAAM2wwB,YAAc3wwB,EAAMywwB,eAAiBzwwB,EAAM0wwB,cAC7D,CgKmLQ+0N,CAAUzl+B,GAAQ,CAClB,IAAIynkC,EhKnLL,SAAsBvlI,GACzB,IAAIli8B,EAAQki8B,EAAYli8B,MACpB0nkC,EAAcxlI,EAAYsO,iBAC9B,MAAO,CACHxw8B,EAAMw8G,aACLx8G,EAAM2wwB,YAAc,GAAG5huB,QAAQ,IAC/B/uC,EAAMywwB,eAAiB,GAAG1huB,QAAQ,IAClC/uC,EAAM0wwB,eAAiB,GAAG3huB,QAAQ,GACnC24hC,EAAY,GACZA,EAAY,IACdlvkC,KAAK,IACX,CgKwKwBmvkC,CAAani8B,GACzBm+7B,EAAc5pjC,EAAM4pjC,YACpBiE,EAAWjE,EAAY8D,GAC3B,IAAKG,EAAU,CACX,IAAIF,EAAcli8B,EAAGgr0B,iBACjBjs1B,EAASmj9B,EAAY,GACrBlj9B,EAASkj9B,EAAY,GACzB,IAAKnj9B,IAAWC,EACZ,OAEJ,IAAIV,EAAU9jH,EAAMywwB,eAAiB,EACjC1spB,EAAU/jH,EAAM0wwB,eAAiB,EACjCm3T,EAAS7nkC,EAAM2wwB,WACfruvB,EAAKqt7B,GAAe3v8B,EAAMw8G,aAAc+a,EAAUj1G,EAAGi1G,QAASre,EAAQ52F,EAAG42F,MAGzE4u9B,EAFQD,EAAS,EAAItj9B,EAEE,IADfsj9B,EAAS,EAAIrj9B,EAEzBoj9B,EAAW7tjC,EAAM2pjC,KAAO,KAAO3pjC,EAAMoqjC,YACrCpqjC,EAAMmud,KAAK0/lB,GAAYxE,GAAY,SAAUwE,EAAU,CACnD,GAAMA,EACN,EAAK,QACL,EAAK,QACL,MAAS,OACT,OAAU,QACX,CACCxE,GAAY,eAAgB,GAAI,CAC5B,GAAMt/8B,EAAUS,EAChB,GAAMR,EAAUS,EAChB,aAAgBsj9B,EAChB,cAAe5u9B,EACf,gBAAiBqe,MAGzBos8B,EAAY8D,GAAaG,CAC7B,CACA9uC,EAAMtghC,OAAS837B,GAASs3H,EAC5B,CACJ,CAtPIG,CAAUvi8B,EAAIsz5B,EAAO/+gC,EACzB,CACA,SAASiujC,GAAcj5kC,GACnB,OAAO,GAAaA,EAAE,GAAK,IACpB,GAAaA,EAAE,KACf,GAAaA,EAAE,KACf,GAAaA,EAAE,GAAK,EAC/B,CAIA,SAASulnB,GAAawkb,EAAO/piC,EAAGk5kC,GAC5B,GAAIl5kC,KAJR,SAAqBA,GACjB,OAAO,GAAaA,EAAE,KAAO,GAAaA,EAAE,GAChD,CAEem5kC,CAAYn5kC,KAAMi5kC,GAAcj5kC,IAAK,CAC5C,IAAIsrN,EAAM4t3B,EAAW,GAAK,IAC1BnvC,EAAMvq6B,UAAYy58B,GAAcj5kC,GAC1B,aAAe,GAAMA,EAAE,GAAKsrN,GAAOA,EAAM,IAAM,GAAMtrN,EAAE,GAAKsrN,GAAOA,EAAM,IhKdhF,SAAsBtrN,GACzB,MAAO,UACD6g9B,GAAO7g9B,EAAE,IAAM,IACf6g9B,GAAO7g9B,EAAE,IAAM,IACf6g9B,GAAO7g9B,EAAE,IAAM,IACf6g9B,GAAO7g9B,EAAE,IAAM,IACf8g9B,GAAO9g9B,EAAE,IAAM,IACf8g9B,GAAO9g9B,EAAE,IACT,GACV,CgKK6Fo5kC,CAAap5kC,EACtG,CACJ,CACA,SAASq5kC,GAAiBn62B,EAAO6q0B,EAAOz+0B,GAGpC,IAFA,IAAIpjL,EAASg3L,EAAMh3L,OACfoxiC,EAAS,GACJ97kC,EAAI,EAAGA,EAAI0qC,EAAOjrC,OAAQO,IAC/B87kC,EAAO76kC,KAAK,GAAMypC,EAAO1qC,GAAG,GAAK8tN,GAAOA,GACxCgu3B,EAAO76kC,KAAK,GAAMypC,EAAO1qC,GAAG,GAAK8tN,GAAOA,GAE5Cy+0B,EAAM7hgC,OAASoxiC,EAAO7vkC,KAAK,IAC/B,CACA,SAAS8vkC,GAAkBr62B,GACvB,OAAQA,EAAMx8G,MAClB,CAeA,IAd4B31D,GACpByshC,GAaJC,GAAmB,CACnB5s2B,OAAQ,EAfgB9/K,GAeI,CAAC,KAAM,KAAM,KAdrCyshC,GAAiBvtjC,EAAI8gC,IAAM,SAAU/O,GACrC,MAAwB,iBAATA,EAAoB,CAACA,EAAMA,GAAQA,CACtD,IACO,SAAUkhL,EAAO6q0B,EAAOz+0B,GAC3B,IAAK,IAAI9tN,EAAI,EAAGA,EAAIg8kC,GAAev8kC,OAAQO,IAAK,CAC5C,IAAIwgD,EAAOw7hC,GAAeh8kC,GACtB88K,EAAM4kD,EAAMlhL,EAAK,IACV,MAAPs8H,IACAyv3B,EAAM/r/B,EAAK,IAAM,GAAMs8H,EAAMgxC,GAAOA,EAE5C,CACJ,IAIAsyM,SAAU,CAACy7qB,GAAkBE,IAC7B13iC,QAAS,CAACw3iC,GAAkBE,KAWzB,SAASG,GAAajj8B,EAAIzrH,GAC7B,IAAI/Z,EAAQwlI,EAAGxlI,MACXiuN,EAAQzoF,EAAGyoF,MACXy62B,EAAgBF,GAAiBhj8B,EAAGttI,MACpC4giC,EAAQ,CAAC,EACTnmF,EAAe547B,EAAM2hO,UACrBit1B,EAAY,OACZ9pG,EAAgBr51B,EAAGxlI,MAAM6+9B,cACzBj9tB,EAAa7nP,EAAMkujC,UAAY13H,GAAiB/q0B,IAAQ,EAC5D,IAAIkj8B,GACI3ujC,EAAM6ujC,YACLF,EAAc,KAAOA,EAAc,GAAGz62B,IACtC0kvB,GArBb,SAA2Bnt0B,GAEvB,IADA,IAAI040B,EAAY140B,EAAG040B,UACV3x9B,EAAI,EAAGA,EAAI2x9B,EAAUly9B,OAAQO,IAClC,GAAgC,UAA5B2x9B,EAAU3x9B,GAAGqm3B,WACb,OAAO,EAGf,OAAO,CACX,CAa6Bi2N,CAAkBrj8B,IAClCq51B,EAAgB,EAKpB,CACD,IAAIiqG,GAAiBtj8B,EAAGxjH,MAAQwjH,EAAGo71B,eAC9Bp71B,EAAGxjH,MACJwjH,EAAGw61B,kBAEP,IAAIh+8B,EAAOwjH,EAAGxjH,KACV8mjC,IACA9mjC,EAAKywuB,YACLjtnB,EAAG651B,UAAUr98B,EAAMwjH,EAAGyoF,OACtBzoF,EAAGs61B,eAEP,IAAIipG,EAAc/mjC,EAAKkiT,aACnB8kwB,EAAQxj8B,EACRo/7B,EAAiBoE,EAAMC,iBACvBD,EAAME,mBAAqBH,GACvBnE,GACD/lG,IAAkBmqG,EAAMG,yBACtBvE,IACDA,EAAiBoE,EAAMC,iBAAmB,IAAI,IAElDrE,EAAeh4gC,MAAMg1M,GACrB5/O,EAAKo78B,YAAYwnG,EAAgB/lG,GACjC+lG,EAAehC,cACfoG,EAAME,iBAAmBH,EACzBC,EAAMG,uBAAyBtqG,GAEnCi6D,EAAMxqiC,EAAIs2kC,EAAe/B,QAC7B,KAhC6B,CACzB8F,EAAYnj8B,EAAGttI,KACf,IAAImiN,EAAM7rN,KAAK6yF,IAAI,GAAIugL,GACvB8m0B,EAAc,GAAGz62B,EAAO6q0B,EAAOz+0B,EACnC,CAgCA,OAHAi6Z,GAAawkb,EAAOtz5B,EAAGjX,WACvBy48B,GAAcluC,EAAO94hC,EAAOwlI,EAAIzrH,GAChCA,EAAM2hO,WAAayp1B,GAAmB3/7B,EAAIsz5B,EAAO/+gC,GAC1CqpjC,GAAYuF,EAAWnj8B,EAAGtuH,GAAK,GAAI4hhC,EAC9C,CAuFO,SAAS,GAAMtz5B,EAAIzrH,GACtB,OAAIyrH,aAAc,GACPij8B,GAAajj8B,EAAIzrH,GAEnByrH,aAAc,GA1FpB,SAAuBA,EAAIzrH,GAC9B,IAAI/Z,EAAQwlI,EAAGxlI,MACXk2I,EAAQl2I,EAAMk2I,MASlB,GARIA,IAAUvvF,GAASuvF,KACf,GAAYA,GACZA,EAAQA,EAAM/1I,IAET4mkC,GAAa7w7B,KAClBA,EAAQA,EAAM6iI,cAGjB7iI,EAAL,CAGA,IAAItmJ,EAAIoQ,EAAMpQ,GAAK,EACfjB,EAAIqR,EAAMrR,GAAK,EAGfmqiC,EAAQ,CACRlygC,KAAMsvH,EACNxrH,MAJK1qB,EAAM0qB,MAKXC,OAJK3qB,EAAM2qB,QAef,OATI/6B,IACAkpiC,EAAMlpiC,EAAIA,GAEVjB,IACAmqiC,EAAMnqiC,EAAIA,GAEd2lnB,GAAawkb,EAAOtz5B,EAAGjX,WACvBy48B,GAAcluC,EAAO94hC,EAAOwlI,EAAIzrH,GAChCA,EAAM2hO,WAAayp1B,GAAmB3/7B,EAAIsz5B,EAAO/+gC,GAC1CqpjC,GAAY,QAAS597B,EAAGtuH,GAAK,GAAI4hhC,EAnBxC,CAoBJ,CA0DeswC,CAAc5j8B,EAAIzrH,GAEpByrH,aAAc,GA1DpB,SAAuBA,EAAIzrH,GAC9B,IAAI/Z,EAAQwlI,EAAGxlI,MACX+b,EAAO/b,EAAM+b,KAEjB,GADQ,MAARA,IAAiBA,GAAQ,IACpBA,IAAQkc,MAAMj4B,EAAMpQ,KAAMqoC,MAAMj4B,EAAMrR,GAA3C,CAGA,IAAI8hP,EAAOzwO,EAAMywO,MAAQ2itB,EACrBxj8B,EAAIoQ,EAAMpQ,GAAK,EACfjB,EhKxID,SAAqBA,EAAGgnP,EAAYjF,GAOvC,MANqB,QAAjBA,EACA/hP,GAAKgnP,EAAa,EAEI,WAAjBjF,IACL/hP,GAAKgnP,EAAa,GAEfhnP,CACX,CgKgIY06kC,CAAYrpkC,EAAMrR,GAAK,EAAGmjxB,GAAcrhiB,GAAOzwO,EAAM0wO,cAGzDoozB,EAAQ,CACR,oBAAqB,UACrB,cAJYhpF,GAAqB9v8B,EAAM2wO,YACpC3wO,EAAM2wO,WAKb,GAAI03vB,GAAgBro+B,GAAQ,CACxB,IAAIspkC,EAAmB,GACnB941B,EAAYxwO,EAAMwwO,UAClBJ,EAAWk4vB,GAActo+B,EAAMowO,UACnC,IAAKp6E,WAAWo6E,GACZ,OAEJ,IAAIE,EAAatwO,EAAMswO,YAAc6itB,EACjC5itB,EAAavwO,EAAMuwO,WACvB+41B,GAAoB,aAAel51B,EAAW,gBAAkBE,EAAa,IACzEE,GAA2B,WAAdA,IACb841B,GAAoB,cAAgB941B,EAAY,KAEhDD,GAA6B,WAAfA,IACd+41B,GAAoB,eAAiB/41B,EAAa,KAEtDuozB,EAAM94hC,MAAQspkC,CAClB,MAEIxwC,EAAM94hC,MAAQ,SAAWywO,EAc7B,OAZI10N,EAAK3pB,MAAM,QACX0miC,EAAM,aAAe,YAErBlpiC,IACAkpiC,EAAMlpiC,EAAIA,GAEVjB,IACAmqiC,EAAMnqiC,EAAIA,GAEd2lnB,GAAawkb,EAAOtz5B,EAAGjX,WACvBy48B,GAAcluC,EAAO94hC,EAAOwlI,EAAIzrH,GAChCA,EAAM2hO,WAAayp1B,GAAmB3/7B,EAAIsz5B,EAAO/+gC,GAC1CqpjC,GAAY,OAAQ597B,EAAGtuH,GAAK,GAAI4hhC,OAAOp//B,EAAW3d,EA3CzD,CA4CJ,CASewtjC,CAAc/j8B,EAAIzrH,QADxB,CAGT,CA0CO,SAASwtjC,GAAYvnkC,EAAO84hC,EAAOr9hC,EAAQse,GAC9C,IACIyvjC,EADAng6B,EAAMrpK,EAAMvE,GAEZgukC,EAAgB,CAChB,cAAiBpg6B,EAAI3wK,OACf,iBACA,qBAEV,GAAIy38B,GAAiB9myB,GACjBmg6B,EAAc,iBACdC,EAAcl2xB,GAAKlqI,EAAIz5K,EACvB65kC,EAAcps5B,GAAKhU,EAAI16K,EACvB86kC,EAAchh5B,GAAKpf,EAAIof,GACvBgh5B,EAAcrm9B,GAAKimD,EAAIjmD,OAEtB,KAAIgt1B,GAAiB/myB,GAUtB,OATAmg6B,EAAc,iBACdC,EAAcp90B,GAAK4psB,GAAU5sxB,EAAIz5K,EAAG,IACpC65kC,EAAc72uB,GAAKqjmB,GAAU5sxB,EAAI16K,EAAG,IACpC86kC,EAAc/9kC,EAAIuq8B,GAAU5sxB,EAAI39K,EAAG,GAOvC,CAGA,IAFA,IAAI6zJ,EAAS8pB,EAAIwsxB,WACbA,EAAa,GACRtp8B,EAAI,EAAGi+H,EAAM+0B,EAAOvzJ,OAAQO,EAAIi+H,IAAOj+H,EAAG,CAC/C,IAAIuhD,EAAoC,IAA3B+h6B,GAAOtwzB,EAAOhzJ,GAAGuhD,QAAgB,IAE1CxrB,EAAKqt7B,GADOpwzB,EAAOhzJ,GAAG2sH,OACUA,EAAQ52F,EAAG42F,MAAOqe,EAAUj1G,EAAGi1G,QAC/Dmy8B,EAAa,CACb,OAAU57hC,GAEd47hC,EAAW,cAAgBxw9B,EACvBqe,EAAU,IACVmy8B,EAAW,gBAAkBny8B,GAEjCs+zB,EAAWro8B,KAAK41kC,GAAY,OAAQ72kC,EAAI,GAAIm9kC,GAChD,CACA,IACIC,EAActG,GADED,GAAYoG,EAAa,GAAIC,EAAe5zI,IAE5DguI,EAAgB9pjC,EAAM8pjC,cACtB+F,EAAa/F,EAAc8F,GAC1BC,IACDA,EAAa7vjC,EAAM2pjC,KAAO,KAAO3pjC,EAAMqqjC,cACvCP,EAAc8F,GAAeC,EAC7BH,EAAcvyjC,GAAK0yjC,EACnB7vjC,EAAMmud,KAAK0hmB,GAAcxG,GAAYoG,EAAaI,EAAYH,EAAe5zI,IAEjFijG,EAAMr9hC,GAAU608B,GAASs5H,EAC7B,CACO,SAASpC,GAAWhi8B,EAAIsz5B,EAAOr9hC,EAAQse,GAC1C,IAOI87D,EAPAwzF,EAAM7jC,EAAGxlI,MAAMvE,GACfimhC,EAAel84B,EAAGsqG,kBAClB+51B,EAAe,CAAC,EAChB306B,EAASmU,EAAInU,OACb406B,EAAsB,cAAX506B,EACX606B,EAAqB,aAAX706B,EACV806B,EAAqB,aAAX906B,EAEd,GAAI66yB,GAAe1myB,GAAM,CACrB,IAAI4g6B,EAAe5g6B,EAAI6g6B,WACnBC,EAAgB9g6B,EAAI+g6B,YACpBC,OAAW,EACXC,EAAejh6B,EAAInzB,MAUvB,GATIvvF,GAAS2jhC,GACTD,EAAWC,EAEN,GAAYA,GACjBD,EAAWC,EAAanqkC,IAEnB4mkC,GAAauD,KAClBD,EAAWC,EAAavxzB,aAEP,oBAAVqP,MAAuB,CAC9B,IAAI0lvB,EAAS,oEACbt/4B,GAAOy78B,EAAcn8D,GACrBt/4B,GAAO278B,EAAer8D,EAC1B,MACK,GAAoB,MAAhBm8D,GAAyC,MAAjBE,EAAuB,CACpD,IAAII,EAAmB,SAAUC,EAAOxosB,GACpC,GAAIwosB,EAAO,CACP,IAAI7grB,EAAQ6grB,EAAMC,IACd//iC,EAAQu/iC,GAAgBjosB,EAAIt3W,MAC5BC,EAASw/iC,GAAiBnosB,EAAIr3W,OAChB,YAAd6/iC,EAAMznkC,MACFgnkC,GACAp/iC,EAAS,EACTD,GAASg3/B,EAAah3/B,OAEjBs/iC,IACLt/iC,EAAQ,EACRC,GAAU+2/B,EAAa/2/B,SAG/B6/iC,EAAM1xC,MAAMpugC,MAAQA,EACpB8/iC,EAAM1xC,MAAMnugC,OAASA,EACjBg/X,IACAA,EAAMrhY,aAAa,QAASoC,GAC5Bi/X,EAAMrhY,aAAa,SAAUqC,GAErC,CACJ,EACI+/iC,EAAej3G,GAAoB42G,EAAU,KAAM7k8B,GAAI,SAAUw8P,GACjE8nsB,GAAYS,EAAiBI,EAAc3osB,GAC3CuosB,EAAiB10/B,EAAOmsT,EAC5B,IACI0osB,GAAgBA,EAAahgjC,OAASggjC,EAAa//iC,SACnDs/iC,EAAeA,GAAgBS,EAAahgjC,MAC5Cy/iC,EAAgBA,GAAiBO,EAAa//iC,OAEtD,CACAkrD,EAAQut/B,GAAY,QAAS,MAAO,CAChCx8iC,KAAMyjjC,EACN3/iC,MAAOu/iC,EACPt/iC,OAAQw/iC,IAEZN,EAAan/iC,MAAQu/iC,EACrBJ,EAAal/iC,OAASw/iC,CAC1B,MACS9g6B,EAAI4myB,aACTp63B,EAAQ35D,EAAMmtJ,EAAI4myB,YAClB45H,EAAan/iC,MAAQ2+I,EAAIww3B,SACzBgwC,EAAal/iC,OAAS0+I,EAAIyw3B,WAE9B,GAAKjk9B,EAAL,CAGA,IAAI+0/B,EACAC,EACAf,EACAc,EAAeC,EAAgB,EAE1Bd,GACLc,EAAgB,EAChBD,EAAef,EAAan/iC,MAAQg3/B,EAAah3/B,OAE5Cs/iC,GACLY,EAAe,EACfC,EAAgBhB,EAAal/iC,OAAS+2/B,EAAa/2/B,QAGnDk/iC,EAAaiB,aAAe,iBAEZ,MAAhBF,GAAyB3yiC,MAAM2yiC,KAC/Bf,EAAan/iC,MAAQkgjC,GAEJ,MAAjBC,GAA0B5yiC,MAAM4yiC,KAChChB,EAAal/iC,OAASkgjC,GAE1B,IAAIE,EAAmBt6H,GAAsBpnyB,GAC7C0h6B,IAAqBlB,EAAakB,iBAAmBA,GACrD,IAAIJ,EAAevH,GAAY,UAAW,GAAIyG,EAAc,CAACh0/B,IACzDm1/B,EAAa3H,GAAcsH,GAC3B/G,EAAe7pjC,EAAM6pjC,aACrBqH,EAAYrH,EAAaoH,GACxBC,IACDA,EAAYlxjC,EAAM2pjC,KAAO,KAAO3pjC,EAAMsqjC,aACtCT,EAAaoH,GAAcC,EAC3BpB,EAAa3yjC,GAAK+zjC,EAClBN,EAAe5wjC,EAAMmud,KAAK+imB,GAAa7H,GAAY,UAAW6H,EAAWpB,EAAc,CAACh0/B,KAE5Fij9B,EAAMr9hC,GAAU608B,GAAS26H,EAnCzB,CAoCJ,CACO,SAAS1qH,GAAYnpM,EAAU0hR,EAAO/+gC,GACzC,IAAI+pjC,EAAgB/pjC,EAAM+pjC,cAAe57lB,EAAOnud,EAAMmud,KAClDgjmB,EAAapH,EAAc1sT,EAASlgwB,IACxC,IAAKg0jC,EAAY,CAEb,IAAIC,EAAgB,CAChBj0jC,GAFJg0jC,EAAanxjC,EAAM2pjC,KAAO,KAAO3pjC,EAAMuqjC,eAIvCR,EAAc1sT,EAASlgwB,IAAMg0jC,EAC7BhjmB,EAAKgjmB,GAAc9H,GAAY,WAAY8H,EAAYC,EAAe,CAAC1C,GAAarxT,EAAUr9vB,IAClG,CACA++gC,EAAM,aAAexoF,GAAS46H,EAClC,CC3cO,SAAStk1B,GAAe7qO,GAC3B,OAAOjrB,SAAS81P,eAAe7qO,EACnC,CAIO,SAASuR,GAAaD,EAAYqv2B,EAAS0uM,GAC9C/9iC,EAAWC,aAAaov2B,EAAS0uM,EACrC,CACO,SAAS5ijC,GAAYwsD,EAAMa,GAC9Bb,EAAKxsD,YAAYqtD,EACrB,CACO,SAAS31E,GAAY80E,EAAMa,GAC9Bb,EAAK90E,YAAY21E,EACrB,CACO,SAASxoD,GAAW2nD,GACvB,OAAOA,EAAK3nD,UAChB,CACO,SAAS0oD,GAAYf,GACxB,OAAOA,EAAKe,WAChB,CAIO,SAASuq4B,GAAetr4B,EAAMj5D,GACjCi5D,EAAK2D,YAAc58D,CACvB,CCvBA,IAAIsvjC,GAAY,GACZC,GAAQ,IACRC,GAAYnI,GAAY,GAAI,IAChC,SAASoI,GAAQ/+kC,GACb,YAAaitC,IAANjtC,CACX,CACA,SAASg/kC,GAAMh/kC,GACX,YAAaitC,IAANjtC,CACX,CACA,SAASi/kC,GAAkB//iC,EAAUggjC,EAAUC,GAE3C,IADA,IAAI5wjC,EAAM,CAAC,EACFzuB,EAAIo/kC,EAAUp/kC,GAAKq/kC,IAAUr/kC,EAAG,CACrC,IAAIikB,EAAMmb,EAASp/B,GAAGikB,SACVkpB,IAARlpB,IAMAwK,EAAIxK,GAAOjkB,EAEnB,CACA,OAAOyuB,CACX,CACA,SAAS6wjC,GAAUC,EAAQC,GACvB,IAAIC,EAAYF,EAAOt7jC,MAAQu7jC,EAAOv7jC,IAEtC,OADgBs7jC,EAAO/okC,MAAQgpkC,EAAOhpkC,KAClBipkC,CACxB,CACA,SAASC,GAAUC,GACf,IAAI3/kC,EACAo/B,EAAWugjC,EAAMvgjC,SACjB5oB,EAAMmpkC,EAAMnpkC,IAChB,GAAI0okC,GAAM1okC,GAAM,CACZ,IAAI0nkC,EAAOyB,EAAMzB,IAAMx1kC,GAAc8N,GAErC,GADAopkC,GAAYZ,GAAWW,GACnB5ukC,GAAQquB,GACR,IAAKp/B,EAAI,EAAGA,EAAIo/B,EAAS3/B,SAAUO,EAAG,CAClC,IAAI2rR,EAAKvsP,EAASp/B,GACR,MAAN2rR,GACA,GAAgBuyzB,EAAKwB,GAAU/zzB,GAEvC,MAEKuzzB,GAAMS,EAAMnwjC,QAAU,GAASmwjC,EAAMnwjC,OAC1C,GAAgB0ujC,EAAK,GAAmByB,EAAMnwjC,MAEtD,MAEImwjC,EAAMzB,IAAM,GAAmByB,EAAMnwjC,MAEzC,OAAOmwjC,EAAMzB,GACjB,CACA,SAAS2B,GAAUC,EAAWnm1B,EAAQom1B,EAAQC,EAAUX,GACpD,KAAOW,GAAYX,IAAUW,EAAU,CACnC,IAAIr0zB,EAAKo0zB,EAAOC,GACN,MAANr0zB,GACA,GAAiBm0zB,EAAWJ,GAAU/zzB,GAAKhyB,EAEnD,CACJ,CACA,SAASsm1B,GAAaH,EAAWC,EAAQC,EAAUX,GAC/C,KAAOW,GAAYX,IAAUW,EAAU,CACnC,IAAIr0zB,EAAKo0zB,EAAOC,GACN,MAANr0zB,IACIuzzB,GAAMvzzB,EAAGn1Q,KAET,GADe,GAAem1Q,EAAGuyzB,KACPvyzB,EAAGuyzB,KAG7B,GAAgB4B,EAAWn0zB,EAAGuyzB,KAG1C,CACJ,CACO,SAAS0B,GAAYM,EAAUP,GAClC,IAAI17jC,EACAi6jC,EAAMyB,EAAMzB,IACZiC,EAAWD,GAAYA,EAAS3zC,OAAS,CAAC,EAC1CA,EAAQozC,EAAMpzC,OAAS,CAAC,EAC5B,GAAI4zC,IAAa5zC,EAAjB,CAGA,IAAKtohC,KAAOsohC,EAAO,CACf,IAAIpk5B,EAAMok5B,EAAMtohC,GACNk8jC,EAASl8jC,KACPkkI,KACI,IAARA,EACA+17B,EAAInijC,aAAa9X,EAAK,KAET,IAARkkI,EACL+17B,EAAIx8jB,gBAAgBz9f,GAGhBA,EAAI9L,WAAW,KAAO4mkC,GACtBb,EAAInijC,aAAa9X,EAAKkkI,GAET,gBAARlkI,GAAiC,UAARA,EAC9Bi6jC,EAAIkC,eAAezJ,GAAO1yjC,EAAKkkI,GAE1BlkI,EAAI9L,WAAW,KAAO2mkC,GAC3BZ,EAAIkC,eAAexJ,GAAe3yjC,EAAKkkI,GAElClkI,EAAI9L,WAAW,KAAO2mkC,GAC3BZ,EAAIkC,eAAe1J,GAASzyjC,EAAKkkI,GAGjC+17B,EAAInijC,aAAa9X,EAAKkkI,GAItC,CACA,IAAKlkI,KAAOk8jC,EACFl8jC,KAAOsohC,GACT2xC,EAAIx8jB,gBAAgBz9f,EAhC5B,CAmCJ,CAiFA,SAASo8jC,GAAWH,EAAUP,GAC1B,IAAIzB,EAAOyB,EAAMzB,IAAMgC,EAAShC,IAC5BoC,EAAQJ,EAAS9gjC,SACjBusP,EAAKg0zB,EAAMvgjC,SACX8gjC,IAAaP,IAGjBC,GAAYM,EAAUP,GAClBV,GAAQU,EAAMnwjC,MACV0vjC,GAAMoB,IAAUpB,GAAMvzzB,GAClB20zB,IAAU30zB,GA1F1B,SAAwBm0zB,EAAWQ,EAAOC,GAatC,IAZA,IAQIC,EACAC,EACAC,EAVAC,EAAc,EACdC,EAAc,EACdC,EAAYP,EAAM7glC,OAAS,EAC3BqhlC,EAAgBR,EAAM,GACtBS,EAAcT,EAAMO,GACpBG,EAAYT,EAAM9glC,OAAS,EAC3BwhlC,EAAgBV,EAAM,GACtBW,EAAcX,EAAMS,GAKjBL,GAAeE,GAAaD,GAAeI,GACzB,MAAjBF,EACAA,EAAgBR,IAAQK,GAEJ,MAAfI,EACLA,EAAcT,IAAQO,GAEA,MAAjBI,EACLA,EAAgBV,IAAQK,GAEJ,MAAfM,EACLA,EAAcX,IAAQS,GAEjB1B,GAAUwB,EAAeG,IAC9BZ,GAAWS,EAAeG,GAC1BH,EAAgBR,IAAQK,GACxBM,EAAgBV,IAAQK,IAEnBtB,GAAUyB,EAAaG,IAC5Bb,GAAWU,EAAaG,GACxBH,EAAcT,IAAQO,GACtBK,EAAcX,IAAQS,IAEjB1B,GAAUwB,EAAeI,IAC9Bb,GAAWS,EAAeI,GAC1B,GAAiBpB,EAAWgB,EAAc5C,IAAK,GAAgB6C,EAAY7C,MAC3E4C,EAAgBR,IAAQK,GACxBO,EAAcX,IAAQS,IAEjB1B,GAAUyB,EAAaE,IAC5BZ,GAAWU,EAAaE,GACxB,GAAiBnB,EAAWiB,EAAY7C,IAAK4C,EAAc5C,KAC3D6C,EAAcT,IAAQO,GACtBI,EAAgBV,IAAQK,KAGpB3B,GAAQuB,KACRA,EAAcrB,GAAkBmB,EAAOK,EAAaE,IAGpD5B,GADJwB,EAAWD,EAAYS,EAAch9jC,QAKjCy8jC,EAAYJ,EAAMG,IACJjqkC,MAAQyqkC,EAAczqkC,IAJpC,GAAiBspkC,EAAWJ,GAAUuB,GAAgBH,EAAc5C,MAQhEmC,GAAWK,EAAWO,GACtBX,EAAMG,QAAYtziC,EAClB,GAAiB2yiC,EAAWY,EAAUxC,IAAK4C,EAAc5C,MAGjE+C,EAAgBV,IAAQK,KAG5BD,GAAeE,GAAaD,GAAeI,KACvCL,EAAcE,EAEdhB,GAAUC,EADuB,MAAxBS,EAAMS,EAAY,GAAa,KAAOT,EAAMS,EAAY,GAAG9C,IACvCqC,EAAOK,EAAaI,GAGjDf,GAAaH,EAAWQ,EAAOK,EAAaE,GAGxD,CAYgBM,CAAejD,EAAKoC,EAAO30zB,GAG1BuzzB,GAAMvzzB,IACPuzzB,GAAMgB,EAAS1wjC,OACf,GAAmB0ujC,EAAK,IAE5B2B,GAAU3B,EAAK,KAAMvyzB,EAAI,EAAGA,EAAGlsR,OAAS,IAEnCy/kC,GAAMoB,GACXL,GAAa/B,EAAKoC,EAAO,EAAGA,EAAM7glC,OAAS,GAEtCy/kC,GAAMgB,EAAS1wjC,OACpB,GAAmB0ujC,EAAK,IAGvBgC,EAAS1wjC,OAASmwjC,EAAMnwjC,OACzB0vjC,GAAMoB,IACNL,GAAa/B,EAAKoC,EAAO,EAAGA,EAAM7glC,OAAS,GAE/C,GAAmBy+kC,EAAKyB,EAAMnwjC,OAEtC,CCpOA,IAAI4xjC,GAAQ,EACRC,GAAc,WACd,SAASA,EAAW9x7B,EAAMl8H,EAASooB,GAS/B,GARAr8C,KAAKuM,KAAO,MACZvM,KAAKu49B,aA4MF,WAIP,EA/MIv49B,KAAKw89B,YA2MF,WAIP,EA9MIx89B,KAAKi0B,QAAUA,EACfj0B,KAAK2hwB,MAAQtltB,EAAOgtW,EAAO,CAAC,EAAGhtW,GAC/Br8C,KAAKmwJ,KAAOA,EACZnwJ,KAAKkliC,IAAM,KAAO88C,KAClBhilC,KAAKkilC,UAAYtJ,GAAev8hC,EAAKtd,MAAOsd,EAAKrd,QAC7CmxH,IAAS9zG,EAAK4/6B,IAAK,CACnB,IAAI9w7B,EAAWnrC,KAAKomJ,UAAYjhJ,SAASmE,cAAc,OACvD6hC,EAAS92B,MAAM2qY,QAAU,oCACzB,IAAImjsB,EAASnilC,KAAKoilC,QAAUpilC,KAAKkilC,UAAUpD,IAAMx1kC,GAAc,OAC/Dk3kC,GAAY,KAAMxglC,KAAKkilC,WACvB/2iC,EAAS52B,YAAY4tkC,GACrBhy7B,EAAK57I,YAAY42B,EACrB,CACAnrC,KAAK6uH,OAAOxyE,EAAKtd,MAAOsd,EAAKrd,OACjC,CAyLA,OAxLAijjC,EAAWvilC,UAAUslC,QAAU,WAC3B,OAAOhlC,KAAKuM,IAChB,EACA01kC,EAAWvilC,UAAU289B,gBAAkB,WACnC,OAAOr89B,KAAKomJ,SAChB,EACA677B,EAAWvilC,UAAUu0kC,sBAAwB,WACzC,IAAIC,EAAel0kC,KAAKq89B,kBACxB,GAAI63G,EACA,MAAO,CACHhz+B,WAAYgz+B,EAAahz+B,YAAc,EACvCK,UAAW2y+B,EAAa3y+B,WAAa,EAGjD,EACA0g/B,EAAWvilC,UAAU20iC,UAAY,WAC7B,OAAOr0iC,KAAKoilC,OAChB,EACAH,EAAWvilC,UAAUyrjB,QAAU,WAC3B,GAAInrjB,KAAKmwJ,KAAM,CACX,IAAIow7B,EAAQvglC,KAAKqilC,cAAc,CAC3BpF,YAAY,IAEhBsD,EAAMpzC,MAAM94hC,MAAQ,kDDyLjB,SAAeyskC,EAAUP,GACpC,GAAIL,GAAUY,EAAUP,GACpBU,GAAWH,EAAUP,OAEpB,CACD,IAAIzB,EAAMgC,EAAShC,IACfwD,EAAW,GAAexD,GAC9BwB,GAAUC,GACO,OAAb+B,IACA,GAAiBA,EAAU/B,EAAMzB,IAAK,GAAgBA,IACtD+B,GAAayB,EAAU,CAACxB,GAAW,EAAG,GAE9C,CAEJ,CCtMYt6N,CAAMxm3B,KAAKkilC,UAAW3B,GACtBvglC,KAAKkilC,UAAY3B,CACrB,CACJ,EACA0B,EAAWvilC,UAAUsuiC,iBAAmB,SAAUn05B,GAC9C,OAAO,GAAMA,EAAIi+7B,GAAiB93kC,KAAKkliC,KAC3C,EACA+8C,EAAWvilC,UAAU2ilC,cAAgB,SAAUhmiC,GAC3CA,EAAOA,GAAQ,CAAC,EAChB,IAAI85B,EAAOn2E,KAAKi0B,QAAQ4h7B,gBAAe,GACnC926B,EAAQ/+B,KAAK4qK,OACb5rI,EAASh/B,KAAK6qK,QACdz8I,EAAQ0pjC,GAAiB93kC,KAAKkliC,KAClC92gC,EAAM2hO,UAAY1zM,EAAK0zM,UACvB3hO,EAAM6ujC,WAAa5giC,EAAK4giC,WACxB7ujC,EAAMkujC,SAAWjgiC,EAAKigiC,SACtB,IAAIt8iC,EAAW,GACXuijC,EAAUvilC,KAAKwilC,SAwJ3B,SAA+BzjjC,EAAOC,EAAQ06G,EAAiBtrH,GAC3D,IAAIm0jC,EACJ,GAAI7o8B,GAAuC,SAApBA,EAQnB,GAPA6o8B,EAAU9K,GAAY,OAAQ,KAAM,CAChC14iC,MAAOA,EACPC,OAAQA,EACR/6B,EAAG,IACHjB,EAAG,IACHuoB,GAAI,MAEJm57B,GAAWhr0B,GACXki8B,GAAY,CAAEx+8B,KAAMsc,GAAmB6o8B,EAAQp1C,MAAO,OAAQ/+gC,QAE7D,GAAIi27B,GAAU3q0B,GACfmi8B,GAAW,CACPxnkC,MAAO,CACH+oH,KAAMsc,GAEVosnB,MAAOhjtB,GACPqhM,gBAAiB,WAAc,MAAO,CAAGplN,MAAOA,EAAOC,OAAQA,EAAW,GAC3EujjC,EAAQp1C,MAAO,OAAQ/+gC,OAEzB,CACD,IAAIuI,EAAKqt7B,GAAetq0B,GAAkBnsB,EAAQ52F,EAAG42F,MAAOqe,EAAUj1G,EAAGi1G,QACzE228B,EAAQp1C,MAAM/v6B,KAAO7P,EACrBqe,EAAU,IAAM228B,EAAQp1C,MAAM,gBAAkBvh6B,EACpD,CAEJ,OAAO228B,CACX,CArLsCE,CAAsB1jjC,EAAOC,EAAQh/B,KAAK289B,iBAAkBvu8B,GAC1Fm0jC,GAAWvijC,EAASn+B,KAAK0glC,GACzB,IAAIG,EAAarmiC,EAAKigiC,SACuC,KAAtDt8kC,KAAK2ilC,WAAalL,GAAY,IAAK,OAAQ,CAAC,EAAG,IACtDz3kC,KAAKq0kC,WAAWl+/B,EAAM/nD,EAAOs0jC,EAAYA,EAAU1ijC,SAAWA,GAC9D0ijC,GAAa1ijC,EAASn+B,KAAK6glC,GAC3B,IAAInmmB,EAAOltd,EAAI/b,GAAK8a,EAAMmud,OAAO,SAAUhxd,GAAM,OAAO6C,EAAMmud,KAAKhxd,EAAK,IAIxE,GAHIgxd,EAAKl8e,QACL2/B,EAASn+B,KAAK41kC,GAAY,OAAQ,OAAQ,CAAC,EAAGl7lB,IAE9Clgc,EAAK0zM,UAAW,CAChB,IAAI6y1B,EL5BT,SAAsBC,EAAeC,EAAgBzmiC,GAExD,IAAI74C,GADJ64C,EAAOA,GAAQ,CAAC,GACHw38B,QAAU,KAAO,GAC1BkvF,EAAe,KAAOv/kC,EACtBw/kC,EAAax/kC,EAAI,IACjBy/kC,EAAY5zjC,EAAI/b,GAAKuvkC,IAAgB,SAAUjz/B,GAC/C,OAAOA,EAAYmz/B,EAAe1zjC,EAAI/b,GAAKuvkC,EAAcjz/B,KAAa,SAAUmiK,GAC5E,OAAOA,EAAW,IAAM8w1B,EAAcjz/B,GAAWmiK,GAAY,GACjE,IAAGllP,KAAKrJ,GAAKw/kC,CACjB,IAAGn2kC,KAAKrJ,GACJssP,EAAazgO,EAAI/b,GAAKwvkC,IAAiB,SAAUxJ,GACjD,MAAO,cAAgBA,EAAgByJ,EAAe1zjC,EAAI/b,GAAKwvkC,EAAexJ,KAAiB,SAAU74H,GACrG,OAAOA,EAAUsiI,EAAe1zjC,EAAI/b,GAAKwvkC,EAAexJ,GAAe74H,KAAW,SAAU1utB,GACxF,IAAIr0E,EAAMol6B,EAAexJ,GAAe74H,GAAS1utB,GAIjD,MAHiB,MAAbA,IACAr0E,EAAM,SAAYA,EAAM,MAErBq0E,EAAW,IAAMr0E,EAAM,GAClC,IAAG7wK,KAAKrJ,GAAKw/kC,CACjB,IAAGn2kC,KAAKrJ,GAAKw/kC,CACjB,IAAGn2kC,KAAKrJ,GACR,OAAKy/kC,GAAcnz1B,EAGZ,CAAC,YAAamz1B,EAAWnz1B,EAAY,OAAOjjP,KAAKrJ,GAF7C,EAGf,CKGkC0/kC,CAAa90jC,EAAMgqjC,SAAUhqjC,EAAMiqjC,SAAU,CAAExkF,SAAS,IAC9E,GAAI+uF,EAAiB,CACjB,IAAIO,EAAY1L,GAAY,QAAS,MAAO,CAAC,EAAG,GAAImL,GACpD5ijC,EAASn+B,KAAKshlC,EAClB,CACJ,CACA,OAAOvK,GAAe75iC,EAAOC,EAAQgB,EAAUqc,EAAKm3/B,WACxD,EACAyuC,EAAWvilC,UAAU6ziC,eAAiB,SAAUl3/B,GAE5C,OADAA,EAAOA,GAAQ,CAAC,EACTq7hC,GAAc13kC,KAAKqilC,cAAc,CACpCty1B,UAAWu6sB,GAAUju5B,EAAK+miC,cAAc,GACxCnG,YAAY,EACZX,UAAU,EACV9oC,WAAYlpG,GAAUju5B,EAAKm3/B,YAAY,KACvC,CAAE3/C,SAAS,GACnB,EACAouF,EAAWvilC,UAAUg99B,mBAAqB,SAAUhj1B,GAChD15I,KAAK289B,iBAAmBjj1B,CAC5B,EACAuo8B,EAAWvilC,UAAU80iC,WAAa,WAC9B,OAAOx0iC,KAAK2ilC,YAAc3ilC,KAAK2ilC,WAAW7D,GAC9C,EACAmD,EAAWvilC,UAAU20kC,WAAa,SAAUl+/B,EAAM/nD,EAAO8xG,GAOrD,IANA,IAGImj9B,EACAv5C,EAJAw5C,EAAUntgC,EAAK91E,OACfkjlC,EAAuB,GACvBC,EAA4B,EAG5BC,EAAmB,EACd7ilC,EAAI,EAAGA,EAAI0ilC,EAAS1ilC,IAAK,CAC9B,IAAI218B,EAAcpg4B,EAAKv1E,GACvB,IAAK218B,EAAY+kB,UAAW,CACxB,IAAInhB,EAAY5D,EAAYsE,YACxBh80B,EAAMs70B,GAAaA,EAAU958B,QAAU,EACvCqjlC,EAAU55C,GAAiBA,EAAczpiC,QAAU,EACnDsjlC,OAAM,EACV,IAAKA,EAAM9glC,KAAK8K,IAAIkxH,EAAM,EAAG6k9B,EAAU,GAAIC,GAAO,KAC1CxpI,IAAa2vF,GACV3vF,EAAUwpI,KAAS75C,EAAc65C,IAFSA,KAMrD,IAAK,IAAIh4C,EAAM+3C,EAAU,EAAG/3C,EAAMg4C,EAAKh4C,IAEnC03C,EAAuBE,IADvBC,EACwE,GAE5E,IAAK,IAAII,EAAMD,EAAM,EAAGC,EAAM/k9B,EAAK+k9B,IAAO,CACtC,IAAIC,EAAa,CAAC,EAClBjvH,GAAYza,EAAUypI,GAAMC,EAAYz1jC,GACxC,IAAIjsB,EAAIs1kC,GAAY,IAAK,UAAYgM,IAAoBI,EAAY,KACpER,EAAuBA,EAAqBrjjC,SAAWkgG,GAAKr+H,KAAKM,GAClEohlC,EAAqBC,KAA+BrhlC,EACpDkhlC,EAAuBlhlC,CAC3B,CACA2niC,EAAgB3vF,EAChB,IAAIl6e,EAAM,GAAMs2e,EAAano7B,GACzB6xc,IACCojnB,EAAuBA,EAAqBrjjC,SAAWkgG,GAAKr+H,KAAKo+d,EAE1E,CACJ,CACJ,EACAginB,EAAWvilC,UAAUmvH,OAAS,SAAU9vF,EAAOC,GAC3C,IAAIqd,EAAOr8C,KAAK2hwB,MACZxxmB,EAAOnwJ,KAAKmwJ,KACZhlH,EAAWnrC,KAAKomJ,UASpB,GARS,MAATrnH,IAAkBsd,EAAKtd,MAAQA,GACrB,MAAVC,IAAmBqd,EAAKrd,OAASA,GAC7BmxH,GAAQhlH,IACRA,EAAS92B,MAAMC,QAAU,OACzByqB,EAAQu7M,GAAQnqF,EAAM,EAAG9zG,GACzBrd,EAASs7M,GAAQnqF,EAAM,EAAG9zG,GAC1BlR,EAAS92B,MAAMC,QAAU,IAEzBtU,KAAK4qK,SAAW7rI,GAAS/+B,KAAK6qK,UAAY7rI,EAAQ,CAGlD,GAFAh/B,KAAK4qK,OAAS7rI,EACd/+B,KAAK6qK,QAAU7rI,EACXmM,EAAU,CACV,IAAI24iC,EAAgB34iC,EAAS92B,MAC7ByvkC,EAAc/kjC,MAAQA,EAAQ,KAC9B+kjC,EAAc9kjC,OAASA,EAAS,IACpC,CACA,GAAKql7B,GAAUrk9B,KAAK289B,kBAahB389B,KAAKmrjB,cAb8B,CACnC,IAAIg3hB,EAASnilC,KAAKoilC,QACdD,IACAA,EAAOxljC,aAAa,QAASoC,GAC7BojjC,EAAOxljC,aAAa,SAAUqC,IAElC,IAAI+kjC,EAAO/jlC,KAAKwilC,UAAYxilC,KAAKwilC,SAAS1D,IACtCiF,IACAA,EAAKpnjC,aAAa,QAASoC,GAC3BgljC,EAAKpnjC,aAAa,SAAUqC,GAEpC,CAIJ,CACJ,EACAijjC,EAAWvilC,UAAUyrO,SAAW,WAC5B,OAAOnrO,KAAK4qK,MAChB,EACAq36B,EAAWvilC,UAAUs7K,UAAY,WAC7B,OAAOh7K,KAAK6qK,OAChB,EACAo36B,EAAWvilC,UAAU2l8B,QAAU,WACvBrl8B,KAAKmwJ,OACLnwJ,KAAKmwJ,KAAKlW,UAAY,IAE1Bj6I,KAAKoilC,QACDpilC,KAAKomJ,UACDpmJ,KAAKi0B,QACDj0B,KAAKkilC,UACDlilC,KAAKwilC,SACDxilC,KAAK2ilC,WAAa,IAC1C,EACAV,EAAWvilC,UAAUslB,MAAQ,WACrBhlB,KAAKoilC,UACLpilC,KAAKoilC,QAAQno8B,UAAY,MAE7Bj6I,KAAKkilC,UAAY,IACrB,EACAD,EAAWvilC,UAAU0tR,UAAY,SAAUhmB,GACvC,IAAIzwL,EAAM32E,KAAKuziC,iBACXhhhC,EAAS,sBACb,OAAI60O,GACAzwL,EAAMsu4B,GAAatu4B,KACLpkD,EAAS,UAAYokD,EAEhCpkD,EAAS,iBAAmBjD,mBAAmBqnD,EAC1D,EACOsrgC,CACX,CA7MiB,GAmPjB,YCtFA,GAjHA,SAAUv5tB,GAGR,SAASs7tB,IACP,IAAIt3hC,EAAmB,OAAXg8T,GAAmBA,EAAOnoX,MAAMP,KAAMI,YAAcJ,KAIhE,OAFA0sD,EAAMngD,KAAOy3kC,EAAgBz3kC,KAC7BmgD,EAAM499B,iBAAkB,EACjB599B,CACT,CAqGA,OA7GAkgX,EAAUo3qB,EAAiBt7tB,GAU3Bs7tB,EAAgBtklC,UAAUyohC,eAAiB,SAAUtq9B,GASnD,OAAO,GAAiB,KAAM79D,KAAM,CAClC0ujC,oBAAoB,GAExB,EAEAs1B,EAAgBtklC,UAAUuklC,cAAgB,SAAU7jjB,GAClD,IAAIhlO,EAAQ,IAAI,GACZ97Q,EAAO,GAAa,OAAQ,EAAG8gf,EAAI41P,WAAa,EAAG51P,EAAI8jjB,UAAW,EAAG9jjB,EAAI+xM,UAAUirC,QAAQ,GAC/Fhid,EAAMj2S,IAAIm6B,GACVA,EAAKglX,SAAS87H,EAAI+xM,WAClB,IAAIusT,EAAa1+hC,KAAKwkI,UAAUs35B,UAAU,UACtCqoD,EAAenklC,KAAKwkI,UAAUs35B,UAAU,gBACxCmK,EAA4B,SAAfvH,EAAwB,SAAWA,EAEhD95gC,EAAwB,GAAjBw7gB,EAAI41P,WACX97R,EAAS,GAAa+riB,GAAa7lgB,EAAI8jjB,UAAYt/jC,GAAQ,GAAIw7gB,EAAI41P,WAAapxwB,GAAQ,EAAGA,EAAMA,EAAMw7gB,EAAImkd,UAAUnn3B,MACzHg+L,EAAMj2S,IAAI+0e,GACVA,EAAO51F,SAAS87H,EAAImkd,WACpB,IAAI6/F,EAAkC,YAAnBhkjB,EAAIikjB,WAA2BF,EAAe/jjB,EAAIikjB,YAAc,EAUnF,OATAnqlB,EAAO3zY,SAAW699B,EAAevhlC,KAAKsmC,GAAK,IAC3C+wd,EAAOm2d,UAAU,CAACjwb,EAAI8jjB,UAAY,EAAG9jjB,EAAI41P,WAAa,IAElDiwQ,EAAWzliC,QAAQ,UAAY,IACjC05f,EAAO7lf,MAAM+owB,OAASljR,EAAO7lf,MAAM+oH,KACnC88X,EAAO7lf,MAAM+oH,KAAO,OACpB88X,EAAO7lf,MAAMg+T,UAAY,GAGpBjX,CACT,EAEA4oxB,EAAgBz3kC,KAAO,cACvBy3kC,EAAgB/n7B,aAAe,CAAC,OAAQ,SACxC+n7B,EAAgBpjjB,cAAgB,CAE9Bj7hB,EAAG,EACHosH,iBAAkB,cAClBuy9B,iBAAiB,EACjBn5rB,MAAM,EACN9pZ,MAAO,CACLs9B,SAAU,OAIZ4ljC,SAAU,CACRthwB,MAAM,EACN+nqB,gBAAgB,EAChB/h2B,SAAU,GAEZkplB,UAAW,CACTpzsB,MAAO,EACPxyB,KAAM,SAERq09B,SAAU,CACR9+3B,OAAO,GAUT4sQ,MAAM,EAEN5oP,QAAQ,EACR0+9B,eAAgB,KAChBtqlB,OAAQ,cACRq+f,WAAY,EACZ6rF,aAAc,KACdK,YAAY,EAKZC,cAAe,OAEfC,cAAc,EAEdC,SAAU,OACVhsF,gBAAiB,SAEjBI,YAAa,EACbC,oBAAqBl57B,IACrBmq9B,oBAAqB,CACnB26D,YAAa,SAEfC,kBAAkB,GAEbd,CACT,CA/GA,CA+GErmU,ICjHK,SAASonU,GAAgBv1kC,EAAM61J,GACpC,IAAI2/6B,EAAYx1kC,EAAKs3gC,iBAAiB,kBAClCjo5B,EAAMmm9B,EAAU3klC,OAEpB,GAAY,IAARw+H,EAAW,CACb,IAAI034B,EAAS3G,GAAiBpggC,EAAM61J,EAAW2/6B,EAAU,IACzD,OAAiB,MAAVzuE,EAAiBA,EAAS,GAAK,IACxC,CAAO,GAAI134B,EAAK,CAGd,IAFA,IAAIm48B,EAAO,GAEFp2kC,EAAI,EAAGA,EAAIoklC,EAAU3klC,OAAQO,IACpCo2kC,EAAKn1kC,KAAK+tgC,GAAiBpggC,EAAM61J,EAAW2/6B,EAAUpklC,KAGxD,OAAOo2kC,EAAKnqkC,KAAK,IACnB,CACF,CACO,SAASo4kC,GAA4Bz1kC,EAAM43+B,GAChD,IAAI49F,EAAYx1kC,EAAKs3gC,iBAAiB,kBAEtC,IAAKn1gC,GAAQy1+B,GACX,OAAOA,EAAoB,GAK7B,IAFA,IAAI4vF,EAAO,GAEFp2kC,EAAI,EAAGA,EAAIoklC,EAAU3klC,OAAQO,IAAK,CACzC,IAAIw7/B,EAAW5s/B,EAAKuggC,kBAAkBi1E,EAAUpklC,IAE5Cw7/B,GAAY,GACd46E,EAAKn1kC,KAAKul/B,EAAkBgV,GAEhC,CAEA,OAAO46E,EAAKnqkC,KAAK,IACnB,CC9BA,IAAI,GAEJ,SAAU67W,GAGR,SAAShnX,EAAO8N,EAAMsrW,EAAKoquB,EAAa7oiC,GACtC,IAAIqQ,EAAQg8T,EAAO9oX,KAAKI,OAASA,KAIjC,OAFA0sD,EAAMimgB,WAAWnjjB,EAAMsrW,EAAKoquB,EAAa7oiC,GAElCqQ,CACT,CAkTA,OA1TAkgX,EAAUlra,EAAQgnX,GAUlBhnX,EAAOhC,UAAUyllC,cAAgB,SAAUl/C,EAAYz2hC,EAAMsrW,EAAKy9oB,EAAYguC,GAE5EvmiC,KAAK6tP,YAOL,IAAI24yB,EAAa,GAAaP,GAAa,GAAI,EAAG,EAAG,EAAG,KAAMM,GAC9DC,EAAWv4gB,KAAK,CACdlxV,GAAI,IACJivyB,SAAS,EACTpz2B,OAAQ2/3B,EAAW,GAAK,EACxB1/3B,OAAQ0/3B,EAAW,GAAK,IAG1BiuC,EAAW5u7B,MAAQwt+B,GACnBpllC,KAAKqllC,YAAcp/C,EACnBjmiC,KAAKmlB,IAAIqhhC,EACX,EAOA9kiC,EAAOhC,UAAU4llC,oBAAsB,SAAUC,GAC/CvllC,KAAK669B,QAAQ,GAAGlC,cAAc,KAAM4sH,EACtC,EAEA7jlC,EAAOhC,UAAU8llC,cAAgB,WAC/B,OAAOxllC,KAAKqllC,WACd,EAYA3jlC,EAAOhC,UAAU+llC,cAAgB,WAC/B,OAAOzllC,KAAK669B,QAAQ,EACtB,EAMAn59B,EAAOhC,UAAU89rB,UAAY,WAC3B2jT,GAAcnh/B,KAAK669B,QAAQ,GAC7B,EAMAn59B,EAAOhC,UAAUkpgC,SAAW,WAC1BvnB,GAAcrh/B,KAAK669B,QAAQ,GAC7B,EAOAn59B,EAAOhC,UAAUgmlC,KAAO,SAAUjsI,EAAQ9z8B,GACxC,IAAI6giC,EAAaxmiC,KAAK669B,QAAQ,GAC9B2rE,EAAW/sF,OAASA,EACpB+sF,EAAW7giC,EAAIA,CACjB,EAEAjE,EAAOhC,UAAU8mZ,aAAe,SAAUD,EAAWo/rB,GACnD,IAAIn/C,EAAaxmiC,KAAK669B,QAAQ,GAC9B2rE,EAAWjgpB,UAAYA,EACvBigpB,EAAWnl5B,QAAUsk8B,GAAmBp/rB,EAAY,OAASigpB,EAAWnl5B,MAC1E,EAMA3/I,EAAOhC,UAAUizjB,WAAa,SAAUnjjB,EAAMsrW,EAAKoquB,EAAa7oiC,GAC9Dr8C,KAAKo0e,QAAS,EACd,IAAI6xjB,EAAaz2hC,EAAK+ggC,cAAcz1pB,EAAK,WAAa,SAClDkooB,EAAcxz+B,EAAKy0iC,UACnB1rD,EAAa72/B,EAAOkklC,cAAcp2kC,EAAMsrW,GACxC26oB,EAASwwC,IAAejmiC,KAAKqllC,YAC7BQ,EAAmBxpiC,GAAQA,EAAKwpiC,iBAEpC,GAAIpwF,EAAQ,CACV,IAAI8wC,EAAa/2hC,EAAK+ggC,cAAcz1pB,EAAK,oBAEzC96W,KAAKmllC,cAAcl/C,EAAYz2hC,EAAMsrW,EAAKy9oB,EAAYguC,EACxD,KAAO,EACDC,EAAaxmiC,KAAK669B,QAAQ,IACnBzmf,QAAS,EACpB,IAAItke,EAAS,CACX8oH,OAAQ2/3B,EAAW,GAAK,EACxB1/3B,OAAQ0/3B,EAAW,GAAK,GAE1BstF,EAAmBr/C,EAAWv4gB,KAAKn+gB,GAAU,GAAoB02hC,EAAY12hC,EAAQkz+B,EAAalooB,GAClG8roB,GAAa4/C,EACf,CAIA,GAFAxmiC,KAAK8llC,cAAct2kC,EAAMsrW,EAAKy9oB,EAAY2sF,EAAa7oiC,GAEnDo58B,EAAQ,CACV,IAAI+wC,EAAaxmiC,KAAK669B,QAAQ,GAEzBgrH,IACC/1kC,EAAS,CACX8oH,OAAQ54H,KAAK+llC,OACblt9B,OAAQ74H,KAAKgmlC,OACb3xkC,MAAO,CAELu3H,QAAS465B,EAAWnyhC,MAAMu3H,UAG9B465B,EAAW5t6B,OAAS4t6B,EAAW3t6B,OAAS,EACxC2t6B,EAAWnyhC,MAAMu3H,QAAU,EAC3B,GAAkB465B,EAAY12hC,EAAQkz+B,EAAalooB,GAEvD,CAEI+quB,GAEF7llC,KAAK669B,QAAQ,GAAGlC,cAAc,QAElC,EAEAj39B,EAAOhC,UAAUomlC,cAAgB,SAAUt2kC,EAAMsrW,EAAKy9oB,EAAY2sF,EAAa7oiC,GAC7E,IAEI4piC,EACAC,EACAC,EACAr1uB,EACAyxoB,EACA6jG,EACAt+F,EACAu+F,EACAhxI,EAVAmxF,EAAaxmiC,KAAK669B,QAAQ,GAC1BmoB,EAAcxz+B,EAAKy0iC,UAuBvB,GAZIihC,IACFe,EAAoBf,EAAYe,kBAChCC,EAAgBhB,EAAYgB,cAC5BC,EAAkBjB,EAAYiB,gBAC9Br1uB,EAAQo0uB,EAAYp0uB,MACpByxoB,EAAY2iG,EAAY3iG,UACxBuF,EAAoBo9F,EAAYp9F,kBAChCu+F,EAAanB,EAAYmB,WACzBhxI,EAAc6vI,EAAY7vI,YAC1B+wI,EAAmBlB,EAAYkB,mBAG5BlB,GAAe11kC,EAAK46gC,cAAe,CACtC,IAAI1lC,EAAYwgG,GAAeA,EAAYxgG,UAAYwgG,EAAYxgG,UAAYl1+B,EAAKqhgC,aAAa/1pB,GAC7FwruB,EAAgB5hG,EAAU9szB,SAAS,YACvCqu5B,EAAoBK,EAAc1u5B,SAAS,aAAam0zB,eACxDo6F,EAAkBzhG,EAAU9szB,SAAS,CAAC,SAAU,cAAcm0zB,eAC9Dm6F,EAAgBxhG,EAAU9szB,SAAS,CAAC,OAAQ,cAAcm0zB,eAC1Dj7oB,EAAQw1uB,EAAcnjlC,IAAI,SAC1Bo/+B,EAAY+jG,EAAcnjlC,IAAI,aAC9BijlC,EAAmBE,EAAcnjlC,IAAI,YACrC2k/B,EAAoBY,GAAqBhE,GACzC2hG,EAAaC,EAAc/+G,WAAW,SACtClyB,EAAcqvC,EAAUnd,WAAW,SACrC,CAEA,IAAI68G,EAAe50kC,EAAK+ggC,cAAcz1pB,EAAK,gBAC3C0rrB,EAAWv4gB,KAAK,YAAam2jB,GAAgB,GAAKvhlC,KAAKsmC,GAAK,KAAO,GACnE,IAAIy9/B,EAAeD,GAAsBn3hC,EAAK+ggC,cAAcz1pB,EAAK,gBAAiBy9oB,GAE9EquC,IACFJ,EAAWviiC,EAAI2iiC,EAAa,GAC5BJ,EAAWxjiC,EAAI4jiC,EAAa,IAG9BvxF,GAAemxF,EAAWv4gB,KAAK,SAAUonb,GACzC,IAAIgxF,EAAc72hC,EAAK+ggC,cAAcz1pB,EAAK,SACtCyruB,EAAclgD,EAAYjp6B,KAE9B,GAAIop6B,aAAsB,GAAS,CACjC,IAAIggD,EAAYhgD,EAAWnyhC,MAC3BmyhC,EAAWp8oB,SAASf,EAAO,CAEzB9+P,MAAOi87B,EAAUj87B,MACjBtmJ,EAAGuilC,EAAUvilC,EACbjB,EAAGwjlC,EAAUxjlC,EACb+7B,MAAOynjC,EAAUznjC,MACjBC,OAAQwnjC,EAAUxnjC,QACjBqngC,GACL,MACMG,EAAWF,eAIbE,EAAWp8oB,SAASf,EAAO,CAAC,EAAGg9oB,IAE/BG,EAAWp8oB,SAASi8oB,GAItBG,EAAWnyhC,MAAMm/9B,MAAQ,KACzBgzD,EAAWC,SAAS8/C,EAAalqiC,GAAQA,EAAKoqiC,kBAC9CjgD,EAAWnyhC,MAAM8+9B,eAAgB,EAGnC,IAAIuzG,EAAQl3kC,EAAK+ggC,cAAcz1pB,EAAK,SAChC6ruB,EAAW3mlC,KAAK4mlC,IAEP,MAATF,EACc,MAAZC,IACF3mlC,KAAK4mlC,IAAMpgD,EAAWzp2B,GACtByp2B,EAAWzp2B,IAAM2p5B,GAEE,MAAZC,IACTngD,EAAWzp2B,GAAK4p5B,EAChB3mlC,KAAK4mlC,IAAM,MAGb,IAAIC,EAAexqiC,GAAQA,EAAKwqiC,aAChCh/F,GAAc2+C,EAAY1+C,EAAmB,CAC3CR,aAActE,EACduE,eAAgBzsoB,EAChBinf,YAKF,SAA6Bjnf,GAC3B,OAAO+ruB,EAAer3kC,EAAKw4U,QAAQ8yB,GAAOiquB,GAAgBv1kC,EAAMsrW,EAClE,EANEivoB,aAAcw8F,EACd/7F,eAAgB67C,EAAYz65B,UAO9B5rI,KAAK+llC,OAASxtF,EAAW,GAAK,EAC9Bv4/B,KAAKgmlC,OAASztF,EAAW,GAAK,EAC9B,IAAIs0E,EAAgBrmC,EAAWhxE,YAAY,YAC3Cq3G,EAAcx4jC,MAAQ4xkC,EACtBz/C,EAAWhxE,YAAY,UAAUnh9B,MAAQ8xkC,EACzC3/C,EAAWhxE,YAAY,QAAQnh9B,MAAQ6xkC,EAGvC,IAAIY,EAA2B,MAAdT,IAAqC,IAAfA,EAAsBxjlC,KAAK8K,IAAI,IAAK,EAAI3N,KAAKgmlC,QAClFt+iC,SAAS2+iC,IAAeA,EAAa,GAAKA,EAAa,EAEzDxZ,EAAcj08B,OAAS54H,KAAK+llC,OAASe,EACrCja,EAAch08B,OAAS74H,KAAKgmlC,OAASc,EACrC9mlC,KAAK+mlC,eAAe,GACpB5iG,GAAoBnk/B,KAAM8wW,EAAOyxoB,EAAW6jG,EAC9C,EAEA1klC,EAAOhC,UAAUqnlC,eAAiB,SAAUjl/B,GAC1C9hG,KAAK44H,OAAS54H,KAAK64H,OAAS/2B,CAC9B,EAEApgG,EAAOhC,UAAUsnlC,QAAU,SAAUtlhC,EAAIsh7B,EAAa5id,GACpD,IAAIomgB,EAAaxmiC,KAAK669B,QAAQ,GAC1Bx1zB,EAAY230B,GAAUh9+B,MAAMqlK,UAC5B4h7B,EAAe7mjB,GAAOA,EAAIrwS,UAI9B,GAFA/vP,KAAKo0e,OAASoyjB,EAAWpyjB,QAAS,EAE9BgsD,GAAOA,EAAI8mjB,UAAW,CACxB,IAAIl6/B,EAAcw58B,EAAW758B,iBAEzBK,GACF,GAAsBA,EAAa,CACjC34E,MAAO,CACLu3H,QAAS,IAEVo32B,EAAa,CACd390B,UAAWA,EACX2g1B,UAAWihG,EACXvlhC,GAAI,WACF8k+B,EAAWvuE,mBACb,GAGN,MACEuuE,EAAWvuE,oBAGb,GAAsBuuE,EAAY,CAChCnyhC,MAAO,CACLu3H,QAAS,GAEXhT,OAAQ,EACRC,OAAQ,GACPmq3B,EAAa,CACd390B,UAAWA,EACX3jG,GAAIA,EACJsk7B,UAAWihG,GAEf,EAEAvllC,EAAOkklC,cAAgB,SAAUp2kC,EAAMsrW,GACrC,OAAO4rrB,GAAoBl3hC,EAAK+ggC,cAAcz1pB,EAAK,cACrD,EAEOp5W,CACT,CA5TA,CA4TE,IAEF,SAAS0jlC,GAAY5w8B,EAAIH,GACvBr0I,KAAKqxF,OAAOumB,MAAM48B,EAAIH,EACxB,CAEA,YC1UA,SAAS8y8B,GAAgB33kC,EAAM2lI,EAAO2lO,EAAKslL,GACzC,OAAOjrZ,IAAU7oG,MAAM6oG,EAAM,MAAQ7oG,MAAM6oG,EAAM,OAASirZ,EAAIgnjB,UAAYhnjB,EAAIgnjB,SAAStsuB,OAGlFslL,EAAIinjB,YAAcjnjB,EAAIinjB,UAAUzzI,QAAQz+zB,EAAM,GAAIA,EAAM,MAA8C,SAAtC3lI,EAAK+ggC,cAAcz1pB,EAAK,SAC/F,CAEA,SAASwsuB,GAAmBlnjB,GAO1B,OANW,MAAPA,GAAgB,GAASA,KAC3BA,EAAM,CACJgnjB,SAAUhnjB,IAIPA,GAAO,CAAC,CACjB,CAEA,SAASmnjB,GAAgB/3kC,GACvB,IAAIwz+B,EAAcxz+B,EAAKy0iC,UACnBqiC,EAAgBtjG,EAAYprzB,SAAS,YACzC,MAAO,CACLqu5B,kBAAmBK,EAAc1u5B,SAAS,aAAam0zB,eACvDm6F,cAAeljG,EAAYprzB,SAAS,CAAC,OAAQ,cAAcm0zB,eAC3Do6F,gBAAiBnjG,EAAYprzB,SAAS,CAAC,SAAU,cAAcm0zB,eAC/Dj7oB,MAAOw1uB,EAAcnjlC,IAAI,SACzBo/+B,UAAW+jG,EAAcnjlC,IAAI,aAC7BijlC,iBAAkBE,EAAcnjlC,IAAI,YACpCkjlC,WAAYC,EAAcnjlC,IAAI,SAC9B2k/B,kBAAmBY,GAAqB1F,GACxC3tC,YAAa2tC,EAAY7/+B,IAAI,UAEjC,CAEA,IAAIqklC,GAEJ,WACE,SAASA,EAAWC,GAClBznlC,KAAKo7T,MAAQ,IAAI,GACjBp7T,KAAK0nlC,YAAcD,GAAc,EACnC,CA8JA,OAxJAD,EAAW9nlC,UAAUizjB,WAAa,SAAUnjjB,EAAM4whB,GAEhDpgiB,KAAK2nlC,gBAAkB,KACvBvnjB,EAAMknjB,GAAmBlnjB,GACzB,IAAIhlO,EAAQp7T,KAAKo7T,MACb4nrB,EAAcxz+B,EAAKy0iC,UACnBrxf,EAAU5yjB,KAAKykJ,MACfgj8B,EAAaznlC,KAAK0nlC,YAClB7B,EAAmBzljB,EAAIyljB,iBACvBX,EAAcqC,GAAgB/3kC,GAC9Bo4kC,EAAkB,CACpB/B,iBAAkBA,GAGhBgC,EAAiBznjB,EAAIynjB,gBAAkB,SAAU/suB,GACnD,OAAOtrW,EAAKo5iC,cAAc9tsB,EAC5B,EAIK83M,GACHx3P,EAAMvtE,YAGRr+O,EAAK+4hB,KAAKqqB,GAASztiB,KAAI,SAAUg7hC,GAC/B,IAAIhr6B,EAAQ0y8B,EAAe1nC,GAE3B,GAAIgnC,GAAgB33kC,EAAM2lI,EAAOgr6B,EAAQ//gB,GAAM,CAC7C,IAAI0njB,EAAW,IAAIL,EAAWj4kC,EAAM2wiC,EAAQ+kC,EAAa0C,GACzDE,EAASl71B,YAAYz3G,GACrB3lI,EAAKu5iC,iBAAiB5I,EAAQ2nC,GAC9B1sxB,EAAMj2S,IAAI2ikC,EACZ,CACF,IAAGv5gC,QAAO,SAAU4x+B,EAAQ4nC,GAC1B,IAAID,EAAWl1hB,EAAQ8vb,iBAAiBqlG,GACpC5y8B,EAAQ0y8B,EAAe1nC,GAE3B,GAAKgnC,GAAgB33kC,EAAM2lI,EAAOgr6B,EAAQ//gB,GAA1C,CAKA,IAAI4njB,EAAgBx4kC,EAAK+ggC,cAAc4vC,EAAQ,WAAa,SACxD8nC,EAAgBH,GAAYA,EAAStC,eAAiBsC,EAAStC,gBAEnE,IAAKsC,GACFG,GAAiBA,IAAkBD,EACpC5sxB,EAAMvoS,OAAOi1jC,IACbA,EAAW,IAAIL,EAAWj4kC,EAAM2wiC,EAAQ+kC,EAAa0C,IAC5Ch71B,YAAYz3G,OAChB,CACL2y8B,EAASn1hB,WAAWnjjB,EAAM2wiC,EAAQ+kC,EAAa0C,GAC/C,IAAI93kC,EAAS,CACX7L,EAAGkxI,EAAM,GACTnyI,EAAGmyI,EAAM,IAEX0w8B,EAAmBiC,EAAS75jB,KAAKn+gB,GAAU,GAAoBg4kC,EAAUh4kC,EAAQkz+B,EACnF,CAGA5nrB,EAAMj2S,IAAI2ikC,GACVt4kC,EAAKu5iC,iBAAiB5I,EAAQ2nC,EArB9B,MAFE1sxB,EAAMvoS,OAAOi1jC,EAwBjB,IAAGj1jC,QAAO,SAAUk1jC,GAClB,IAAIlu8B,EAAK+4a,EAAQ8vb,iBAAiBqlG,GAClClu8B,GAAMA,EAAGmt8B,SAAQ,WACf5rxB,EAAMvoS,OAAOgnH,EACf,GAAGmp2B,EACL,IAAGjhmB,UACH/hZ,KAAKkolC,gBAAkBL,EACvB7nlC,KAAKykJ,MAAQj1I,CACf,EAIAg4kC,EAAW9nlC,UAAU+rhC,aAAe,WAClC,IAAI/+9B,EAAQ1sD,KAERwP,EAAOxP,KAAKykJ,MAEZj1I,GAEFA,EAAKq0+B,mBAAkB,SAAUhq2B,EAAIihO,GACnC,IAAI3lO,EAAQzoF,EAAMw7hC,gBAAgBptuB,GAElCjhO,EAAG+yG,YAAYz3G,GACf0E,EAAG640B,YACL,GAEJ,EAIA80H,EAAW9nlC,UAAUyolC,yBAA2B,SAAU34kC,GACxDxP,KAAKoolC,aAAeb,GAAgB/3kC,GACpCxP,KAAKykJ,MAAQ,KACbzkJ,KAAKo7T,MAAMvtE,WACb,EAOA251B,EAAW9nlC,UAAU2olC,kBAAoB,SAAUC,EAAY94kC,EAAM4whB,GAKnE,SAASmojB,EAA0B1u8B,GAC5BA,EAAGkpkB,UACNlpkB,EAAG6z1B,aAAc,EACjB7z1B,EAAG270B,YAAY,YAAYU,YAAa,EAE5C,CARAl29B,KAAK2nlC,gBAAkB,GACvBvnjB,EAAMknjB,GAAmBlnjB,GASzB,IAAK,IAAItlL,EAAMwtuB,EAAW9hjC,MAAOs0U,EAAMwtuB,EAAW7hjC,IAAKq0U,IAAO,CAC5D,IAAI3lO,EAAQ3lI,EAAKo5iC,cAAc9tsB,GAE/B,GAAIqsuB,GAAgB33kC,EAAM2lI,EAAO2lO,EAAKslL,GAAM,CAC1C,IAAIvmZ,EAAK,IAAI75I,KAAK0nlC,YAAYl4kC,EAAMsrW,EAAK96W,KAAKoolC,cAC9Cvu8B,EAAGgsD,SAAS0i5B,GACZ1u8B,EAAG+yG,YAAYz3G,GACfn1I,KAAKo7T,MAAMj2S,IAAI00H,GACfrqI,EAAKu5iC,iBAAiBjusB,EAAKjhO,GAE3B75I,KAAK2nlC,gBAAgB9llC,KAAKg4I,EAC5B,CACF,CACF,EAIA2t8B,EAAW9nlC,UAAUmshC,aAAe,SAAUnq9B,GAC5C,GAAyB1hE,KAAK2nlC,iBAAmB3nlC,KAAKo7T,MAAO15P,EAC/D,EAEA8lhC,EAAW9nlC,UAAUmzB,OAAS,SAAU2jhC,GACtC,IAAIp7uB,EAAQp7T,KAAKo7T,MACb5rT,EAAOxP,KAAKykJ,MAEZj1I,GAAQgniC,EACVhniC,EAAKq0+B,mBAAkB,SAAUhq2B,GAC/BA,EAAGmt8B,SAAQ,WACT5rxB,EAAMvoS,OAAOgnH,EACf,GAAGrqI,EAAKy0iC,UACV,IAEA7ovB,EAAMvtE,WAEV,EAGO251B,CACT,CAnKA,GAqKA,YC3MO,SAASgB,GAAqBtlG,EAAU1z+B,EAAMi5kC,GACnD,IAAIt0B,EAAWjxE,EAASgmC,cACpBmZ,EAAYn/C,EAASkzE,aAAajC,GAClCu0B,EAyCN,SAAuBrmD,EAAWomD,GAChC,IAAIC,EAAa,EACbn+6B,EAAS833B,EAAUvg8B,MAAM0t9B,YAsB7B,MApBoB,UAAhBi5B,EACFC,EAAan+6B,EAAO,GACK,QAAhBk+6B,EACTC,EAAan+6B,EAAO,GAGbjnH,GAASmliC,KAAiBn8iC,MAAMm8iC,GACrCC,EAAaD,EAIPl+6B,EAAO,GAAK,EACdm+6B,EAAan+6B,EAAO,GAEbA,EAAO,GAAK,IACjBm+6B,EAAan+6B,EAAO,IAKvBm+6B,CACT,CAlEmBC,CAActmD,EAAWomD,GACtCG,EAAcz0B,EAASx8tB,IACvBkxvB,EAAexmD,EAAU1qsB,IACzB6+tB,EAAWhnjC,EAAK42iC,aAAayiC,GAC7BC,EAAUt5kC,EAAK42iC,aAAawiC,GAC5BG,EAAkC,MAAjBF,GAAyC,WAAjBA,EAA4B,EAAI,EACzE/8E,EAAOz8+B,EAAI6z9B,EAASxq1B,YAAY,SAAU2w3B,GAC5C,OAAO75gC,EAAK42iC,aAAa/8B,EAC3B,IACInjM,GAAU,EACVuwO,EAAiBjnjC,EAAKytiC,mBAAmB,wBAkB7C,OAhBI8Q,GAAmBv+iC,EAAMs8/B,EAAK,MAIhC5lL,GAAU,EACV4lL,EAAK,GAAK2qD,GAGR1I,GAAmBv+iC,EAAMs8/B,EAAK,MAIhC5lL,GAAU,EACV4lL,EAAK,GAAK2qD,GAGL,CACLuyB,iBAAkBl9E,EAClB48E,WAAYA,EACZG,aAAcA,EACdD,YAAaA,EACb1iQ,UAAWA,EACXswO,SAAUA,EACVsyB,QAASA,EACTC,eAAgBA,EAChB/8E,qBAAsBx8/B,EAAKytiC,mBAAmB,wBAElD,CA6BO,SAASgsC,GAAkBC,EAAehmG,EAAU1z+B,EAAMsrW,GAC/D,IAAI35W,EAAQy6vB,IAERstV,EAAchjQ,UAChB/k1B,EAAQqO,EAAKrM,IAAIqM,EAAKytiC,mBAAmB,wBAAyBnisB,IAGhExuU,MAAMnrC,KACRA,EAAQ+nlC,EAAcR,YAGxB,IAAIK,EAAiBG,EAAcH,eAC/BI,EAAc,GAGlB,OAFAA,EAAYJ,GAAkBv5kC,EAAKrM,IAAI+llC,EAAcJ,QAAShuuB,GAC9DquuB,EAAY,EAAIJ,GAAkB5nlC,EAC3B+h/B,EAASy0E,YAAYwxB,EAC9B,CCpFA,IAAI,GAAUtmlC,KAAKgL,IACf,GAAUhL,KAAK8K,IAEnB,SAASy7kC,GAAYnllC,EAAGjB,GACtB,OAAOspC,MAAMroC,IAAMqoC,MAAMtpC,EAC3B,CAQA,SAASqmlC,GAAY/x2B,EAAKhsM,EAAQ9E,EAAO8ijC,EAAQC,EAAQ/v9B,EAAK1T,EAAQ0+9B,EAAgBG,GAUpF,IATA,IAAIztvB,EACAC,EACAqyvB,EACAC,EACA/2D,EACAC,EACA73qB,EAAMt0U,EACN9iC,EAAI,EAEDA,EAAI4llC,EAAQ5llC,IAAK,CACtB,IAAIO,EAAIqnC,EAAa,EAANwvU,GACX93W,EAAIsoC,EAAa,EAANwvU,EAAU,GAEzB,GAAIA,GAAOyuuB,GAAUzuuB,EAAM,EACzB,MAGF,GAAIsuuB,GAAYnllC,EAAGjB,GAAI,CACrB,GAAI2hlC,EAAc,CAChB7puB,GAAOthP,EACP,QACF,CAEA,KACF,CAEA,GAAIshP,IAAQt0U,EACV8wM,EAAI99G,EAAM,EAAI,SAAW,UAAUv1H,EAAGjB,GACtCwmlC,EAAOvllC,EACPwllC,EAAOzmlC,MACF,CACL,IAAIwxI,EAAKvwI,EAAIizV,EACT7iN,EAAKrxI,EAAIm0V,EAEb,GAAI3iN,EAAKA,EAAKH,EAAKA,EAAK,GAAK,CAC3BymO,GAAOthP,EACP,QACF,CAEA,GAAI1T,EAAS,EAAG,CAKd,IAJA,IAAIi0jB,EAAUj/T,EAAMthP,EAChBu8rB,EAAQzqxB,EAAiB,EAAVyuoB,GACf25U,EAAQpo9B,EAAiB,EAAVyuoB,EAAc,GAE1Bg8I,IAAU9xzB,GAAKyv/B,IAAU1w/B,GAAKU,EAAI4llC,GACvC5llC,IAEAo3W,GAAOthP,EACPu8rB,EAAQzqxB,EAAiB,GAFzByuoB,GAAWvgjB,IAGXk63B,EAAQpo9B,EAAiB,EAAVyuoB,EAAc,GAG7BvliB,GAFAvwI,EAAIqnC,EAAa,EAANwvU,IAEF5jB,EACT7iN,GAFArxI,EAAIsoC,EAAa,EAANwvU,EAAU,IAEZ3jB,EAGX,IAAIuyvB,EAAOhmlC,EAAI,EAEf,GAAIihlC,EAEF,KAAOyE,GAAYrzR,EAAO29L,IAAUg2F,EAAOJ,GACzCI,IAEA3zR,EAAQzqxB,EAAiB,GADzByuoB,GAAWvgjB,IAEXk63B,EAAQpo9B,EAAiB,EAAVyuoB,EAAc,GAIjC,IAAI4va,EAAe,GACfn3I,EAAK,EACLC,EAAK,EACLm3I,OAAW,EACXC,OAAW,EAEf,GAAIH,GAAQJ,GAAUF,GAAYrzR,EAAO29L,GACvCg/B,EAAOzuhC,EACP0uhC,EAAO3vhC,MACF,CACLwv8B,EAAKz8I,EAAQ7+d,EACbu7mB,EAAKihD,EAAQv8pB,EACb,IAAIg4rB,EAAMlrhC,EAAIizV,EACVm4rB,EAAMt5N,EAAQ9xzB,EACdmrhC,EAAMpshC,EAAIm0V,EACVm4rB,EAAM57B,EAAQ1w/B,EACd8mlC,OAAa,EACbC,OAAa,EAEjB,GAAuB,MAAnBvF,EAAwB,CAG1B,IAAIwF,EAAQx3I,EAAK,EAAI,GAAK,EAC1BkgF,EAAOzuhC,EAAI+llC,GAHXF,EAAajnlC,KAAKmjH,IAAImp6B,IAGUrp6B,EAChC6s6B,EAAO3vhC,EACP4mlC,EAAW3llC,EAAI+llC,GAJfD,EAAalnlC,KAAKmjH,IAAIqp6B,IAIcvp6B,EACpC+j+B,EAAW7mlC,CACb,MAAO,GAAuB,MAAnBwhlC,EAAwB,CAGjC,IAAIyF,EAAQx3I,EAAK,EAAI,GAAK,EAC1BigF,EAAOzuhC,EACP0uhC,EAAO3vhC,EAAIinlC,GAJXH,EAAajnlC,KAAKmjH,IAAIop6B,IAIUtp6B,EAChC8j+B,EAAW3llC,EACX4llC,EAAW7mlC,EAAIinlC,GALfF,EAAalnlC,KAAKmjH,IAAIsp6B,IAKcxp6B,CACtC,MACEgk+B,EAAajnlC,KAAK4yF,KAAK057B,EAAMA,EAAMC,EAAMA,GAIzCsD,EAAOzuhC,EAAIuu8B,EAAK1s1B,GAAU,GAD1B6j+B,GAFAI,EAAalnlC,KAAK4yF,KAAK457B,EAAMA,EAAMC,EAAMA,KAEZy6D,EAAaD,KAE1Cn3D,EAAO3vhC,EAAIyv8B,EAAK3s1B,GAAU,EAAI6j+B,GAG9BE,EAAW7mlC,EAAIyv8B,EAAK3s1B,EAAS6j+B,EAG7BC,EAAW,GAJXA,EAAW3llC,EAAIuu8B,EAAK1s1B,EAAS6j+B,EAIA,GAAQ5zR,EAAO9xzB,IAC5C4llC,EAAW,GAAQA,EAAU,GAAQn2F,EAAO1w/B,IAC5C4mlC,EAAW,GAAQA,EAAU,GAAQ7zR,EAAO9xzB,IAM5C0uhC,EAAO3vhC,GAFPyv8B,GAHAo3I,EAAW,GAAQA,EAAU,GAAQn2F,EAAO1w/B,KAG5BA,GAEA8mlC,EAAaC,EAG7Br3D,EAAO,GAJPA,EAAOzuhC,GAFPuu8B,EAAKo3I,EAAW3llC,GAEA6llC,EAAaC,EAIR,GAAQ7yvB,EAAOjzV,IACpC0uhC,EAAO,GAAQA,EAAM,GAAQx7rB,EAAOn0V,IAMpC4mlC,EAAW3llC,GAFXuu8B,EAAKvu8B,GAHLyuhC,EAAO,GAAQA,EAAM,GAAQx7rB,EAAOjzV,MAKhB8llC,EAAaD,EACjCD,EAAW7mlC,GAFXyv8B,EAAKzv8B,GAHL2vhC,EAAO,GAAQA,EAAM,GAAQx7rB,EAAOn0V,MAKhB+mlC,EAAaD,CAErC,CAEAxy2B,EAAI0yiB,cAAcw/T,EAAMC,EAAM/2D,EAAMC,EAAM1uhC,EAAGjB,GAC7CwmlC,EAAOI,EACPH,EAAOI,CACT,MACEvy2B,EAAI0vhB,OAAO/iwB,EAAGjB,EAElB,CAEAk0V,EAAQjzV,EACRkzV,EAAQn0V,EACR83W,GAAOthP,CACT,CAEA,OAAO91H,CACT,CAEA,IAAIwmlC,GAGF,WACElqlC,KAAK8lH,OAAS,EACd9lH,KAAKmyhC,kBAAmB,CAC1B,EAKEg4D,GAEJ,SAAUzhuB,GAGR,SAASyhuB,EAAW9tiC,GAClB,IAAIqQ,EAAQg8T,EAAO9oX,KAAKI,KAAMq8C,IAASr8C,KAGvC,OADA0sD,EAAMngD,KAAO,cACNmgD,CACT,CA6GA,OApHAkgX,EAAUu9qB,EAAYzhuB,GAStByhuB,EAAWzqlC,UAAUm0+B,gBAAkB,WACrC,MAAO,CACLz2N,OAAQ,OACRhgpB,KAAM,KAEV,EAEA+s9B,EAAWzqlC,UAAUk0+B,gBAAkB,WACrC,OAAO,IAAIs2G,EACb,EAEAC,EAAWzqlC,UAAUg0+B,UAAY,SAAUp8vB,EAAKhV,GAC9C,IAAIh3L,EAASg3L,EAAMh3L,OACf1qC,EAAI,EACJi+H,EAAMvzF,EAAOjrC,OAAS,EAE1B,GAAIiiO,EAAMqi3B,aAAc,CAEtB,KAAO9l9B,EAAM,GACNuq9B,GAAY99iC,EAAa,EAANuzF,EAAU,GAAIvzF,EAAa,EAANuzF,EAAU,IADzCA,KAMhB,KAAOj+H,EAAIi+H,GACJuq9B,GAAY99iC,EAAW,EAAJ1qC,GAAQ0qC,EAAW,EAAJ1qC,EAAQ,IADjCA,KAKlB,CAEA,KAAOA,EAAIi+H,GACTj+H,GAAKyolC,GAAY/x2B,EAAKhsM,EAAQ1qC,EAAGi+H,EAAKA,EAAK,EAAGyjG,EAAMx8G,OAAQw8G,EAAMki3B,eAAgBli3B,EAAMqi3B,cAAgB,CAE5G,EAEAwF,EAAWzqlC,UAAU0qlC,WAAa,SAAUC,EAAM1yvB,GAC3C33V,KAAKq2B,OACRr2B,KAAKq0+B,kBACLr0+B,KAAK0z+B,UAAU1z+B,KAAKq2B,KAAMr2B,KAAKsiO,QAWjC,IARA,IAGI8jB,EACA30D,EAHAjiL,EADOxP,KAAKq2B,KACA7mB,KACZo/9B,EAAM,GAAUA,IAGhB07G,EAAiB,MAAR3yvB,EACT7jJ,EAAQ,GAEHlzM,EAAI,EAAGA,EAAI4O,EAAKnP,QAAS,CAChC,IACI4D,OAAI,EACJjB,OAAI,EACJ85L,OAAK,EACLrlE,OAAK,EACLgxL,OAAK,EACLC,OAAK,EACLtpT,OAAI,EAER,OATUoQ,EAAK5O,MAUb,KAAKgu+B,EAAI/o+B,EACPugP,EAAK52O,EAAK5O,KACV6wL,EAAKjiL,EAAK5O,KACV,MAEF,KAAKgu+B,EAAIvq+B,EAKP,GAJAJ,EAAIuL,EAAK5O,KACToC,EAAIwM,EAAK5O,MACTxB,EAAIkrlC,GAAUD,EAAOjk2B,IAAOniP,EAAImiP,IAAOik2B,EAAO545B,IAAOzuL,EAAIyuL,KAEhD,GAAKryL,GAAK,EAAG,CACpB,IAAIs+K,EAAM4s6B,GAAUtnlC,EAAIyuL,GAAMryL,EAAIqyL,GAAMxtL,EAAImiP,GAAMhnP,EAAIgnP,EACtD,OAAOkk2B,EAAS,CAACD,EAAM3s6B,GAAO,CAACA,EAAK2s6B,EACtC,CAEAjk2B,EAAKniP,EACLwtL,EAAKzuL,EACL,MAEF,KAAK4r+B,EAAIzq+B,EACPF,EAAIuL,EAAK5O,KACToC,EAAIwM,EAAK5O,KACTk8L,EAAKttL,EAAK5O,KACV62H,EAAKjoH,EAAK5O,KACV6nT,EAAKj5S,EAAK5O,KACV8nT,EAAKl5S,EAAK5O,KACV,IAAI2plC,EAAQD,EAASlsI,GAAYh4tB,EAAIniP,EAAG64L,EAAI2rH,EAAI4hyB,EAAMv24B,GAASsqwB,GAAY3sxB,EAAIzuL,EAAGy0H,EAAIixL,EAAI2hyB,EAAMv24B,GAEhG,GAAIy24B,EAAQ,EACV,IAAK,IAAI5+C,EAAM,EAAGA,EAAM4+C,EAAO5+C,IAAO,CACpC,IAAI/kR,EAAM9ykB,EAAM631B,GAEhB,GAAI/kR,GAAO,GAAKA,GAAO,EAErB,OADIlpmB,EAAM4s6B,EAAS,GAAQ745B,EAAIzuL,EAAGy0H,EAAIixL,EAAIk+d,GAAO,GAAQxgiB,EAAIniP,EAAG64L,EAAI2rH,EAAIm+d,GACjE0jU,EAAS,CAACD,EAAM3s6B,GAAO,CAACA,EAAK2s6B,EAExC,CAGFjk2B,EAAKqiE,EACLh3H,EAAKi3H,EAGX,CACF,EAEOyhyB,CACT,CAtHA,CAsHE,IAIEK,GAEJ,SAAU9huB,GAGR,SAAS8huB,IACP,OAAkB,OAAX9huB,GAAmBA,EAAOnoX,MAAMP,KAAMI,YAAcJ,IAC7D,CAEA,OANA4sa,EAAU49qB,EAAgB9huB,GAMnB8huB,CACT,CARA,CAQEN,IAEEO,GAEJ,SAAU/huB,GAGR,SAAS+huB,EAAUpuiC,GACjB,IAAIqQ,EAAQg8T,EAAO9oX,KAAKI,KAAMq8C,IAASr8C,KAGvC,OADA0sD,EAAMngD,KAAO,aACNmgD,CACT,CAoCA,OA3CAkgX,EAAU69qB,EAAW/huB,GASrB+huB,EAAU/qlC,UAAUk0+B,gBAAkB,WACpC,OAAO,IAAI42G,EACb,EAEAC,EAAU/qlC,UAAUg0+B,UAAY,SAAUp8vB,EAAKhV,GAC7C,IAAIh3L,EAASg3L,EAAMh3L,OACfo/iC,EAAkBpo3B,EAAMoo3B,gBACxB9plC,EAAI,EACJi+H,EAAMvzF,EAAOjrC,OAAS,EACtBmklC,EAAiBli3B,EAAMki3B,eAE3B,GAAIli3B,EAAMqi3B,aAAc,CAEtB,KAAO9l9B,EAAM,GACNuq9B,GAAY99iC,EAAa,EAANuzF,EAAU,GAAIvzF,EAAa,EAANuzF,EAAU,IADzCA,KAMhB,KAAOj+H,EAAIi+H,GACJuq9B,GAAY99iC,EAAW,EAAJ1qC,GAAQ0qC,EAAW,EAAJ1qC,EAAQ,IADjCA,KAKlB,CAEA,KAAOA,EAAIi+H,GAAK,CACd,IAAIn7H,EAAI2llC,GAAY/x2B,EAAKhsM,EAAQ1qC,EAAGi+H,EAAKA,EAAK,EAAGyjG,EAAMx8G,OAAQ0+9B,EAAgBli3B,EAAMqi3B,cACrF0E,GAAY/x2B,EAAKoz2B,EAAiB9plC,EAAI8C,EAAI,EAAGA,EAAGm7H,GAAM,EAAGyjG,EAAMqo3B,gBAAiBnG,EAAgBli3B,EAAMqi3B,cACtG/jlC,GAAK8C,EAAI,EACT4zO,EAAI2vhB,WACN,CACF,EAEOwjV,CACT,CA7CA,CA6CE,IC3WF,SAASG,GAAmBhv5B,EAAWiv5B,EAAc7nG,EAAa9h/B,EAAMiq9B,GACtE,IAAIz33B,EAAOkoG,EAAUkv5B,UACjB7mlC,EAAIyvF,EAAKzvF,EACTjB,EAAI0wF,EAAK1wF,EACT+7B,EAAQ20D,EAAK30D,MACbC,EAAS00D,EAAK10D,OACdqzS,EAAY2wqB,EAAY7/+B,IAAI,CAAC,YAAa,WAAa,EAE3Dc,GAAKouU,EAAY,EACjBrvU,GAAKqvU,EAAY,EACjBtzS,GAASszS,EACTrzS,GAAUqzS,EAEVpuU,EAAIpB,KAAKyK,MAAMrJ,GACf86B,EAAQl8B,KAAKogD,MAAMlkB,GACnB,IAAI0svB,EAAW,IAAI,GAAa,CAC9BnpjB,MAAO,CACLr+N,EAAGA,EACHjB,EAAGA,EACH+7B,MAAOA,EACPC,OAAQA,KAIZ,GAAI6rjC,EAAc,CAChB,IAAI12B,EAAWv43B,EAAUst1B,cACrBx/e,EAAeyqhB,EAASzqhB,eACxBqhjB,EAAiB52B,EAAS91T,QAE1B30N,GACEqhjB,IACFt/T,EAASnpjB,MAAMr+N,GAAK86B,GAGtB0svB,EAASnpjB,MAAMvjM,MAAQ,IAElBgsjC,IACHt/T,EAASnpjB,MAAMt/N,GAAKg8B,GAGtBysvB,EAASnpjB,MAAMtjM,OAAS,GAG1B,IAAIgsjC,EAAWhm1B,GAAWmmtB,GAAU,SAAU1K,GAC5C0K,EAAO1K,EAASh1L,EAClB,EAAI,KACJ,GAAkBA,EAAU,CAC1BnpjB,MAAO,CACLvjM,MAAOA,EACPC,OAAQA,EACR/6B,EAAGA,EACHjB,EAAGA,IAEJgg/B,EAAa,KAAM9h/B,EAAM8plC,EAC9B,CAEA,OAAOv/T,CACT,CAEA,SAASw/T,GAAoBvtQ,EAAOmtQ,EAAc7nG,GAChD,IAAIkoG,EAAaxtQ,EAAMotQ,UAEnBx8uB,EAAKrrT,GAAMioiC,EAAW58uB,GAAI,GAC1BvuW,EAAIkjD,GAAMioiC,EAAWnrlC,EAAG,GACxB0rxB,EAAW,IAAI,GAAe,CAChCnpjB,MAAO,CACLo+B,GAAIz9M,GAAMy6xB,EAAMh9kB,GAAI,GACpBumG,GAAIhkT,GAAMy6xB,EAAMz2e,GAAI,GACpBqH,GAAIA,EACJvuW,EAAGA,EACH8oxB,WAAYqiU,EAAWriU,WACvBC,SAAUoiU,EAAWpiU,SACrBlkb,UAAWsmvB,EAAWtmvB,aAqB1B,OAjBIimvB,IACyC,UAA5BntQ,EAAMwrM,cAAcvxrB,IAGjC8zb,EAASnpjB,MAAMwmjB,SAAWoiU,EAAWriU,WAErC4C,EAASnpjB,MAAMviO,EAAIuuW,EAGrB,GAAkBm9a,EAAU,CAC1BnpjB,MAAO,CACLwmjB,SAAUoiU,EAAWpiU,SACrB/oxB,EAAGA,IAEJij/B,IAGEv3N,CACT,CAEA,SAAS0/T,GAAejoG,EAAU2nG,EAAc7nG,EAAa9h/B,EAAMiq9B,GACjE,OAAK+3B,EAEwB,UAAlBA,EAAS32+B,KACX0+kC,GAAoB/nG,EAAU2nG,EAAc7nG,GACxB,gBAAlBE,EAAS32+B,KACXq+kC,GAAmB1nG,EAAU2nG,EAAc7nG,EAAa9h/B,EAAMiq9B,GAGhE,KAPE,IAQX,CC9GO,SAASigI,GAAuBloG,EAAU32+B,GAC/C,OAAO22+B,EAAS32+B,OAASA,CAC3B,CCmBA,SAAS8+kC,GAAaC,EAASC,GAC7B,GAAID,EAAQjrlC,SAAWkrlC,EAAQlrlC,OAA/B,CAIA,IAAK,IAAIO,EAAI,EAAGA,EAAI0qlC,EAAQjrlC,OAAQO,IAClC,GAAI0qlC,EAAQ1qlC,KAAO2qlC,EAAQ3qlC,GACzB,OAIJ,OAAO,CARP,CASF,CAEA,SAAS4qlC,GAAelgjC,GAMtB,IALA,IAAIivI,EAAOx6G,IACPy6G,EAAOz6G,IACP06G,GAAO,IACPC,GAAO,IAEF95K,EAAI,EAAGA,EAAI0qC,EAAOjrC,QAAS,CAClC,IAAI4D,EAAIqnC,EAAO1qC,KACXoC,EAAIsoC,EAAO1qC,KAEV0rC,MAAMroC,KACTs2K,EAAO13K,KAAKgL,IAAI5J,EAAGs2K,GACnBE,EAAO53K,KAAK8K,IAAI1J,EAAGw2K,IAGhBnuI,MAAMtpC,KACTw3K,EAAO33K,KAAKgL,IAAI7K,EAAGw3K,GACnBE,EAAO73K,KAAK8K,IAAI3K,EAAG03K,GAEvB,CAEA,MAAO,CAAC,CAACH,EAAMC,GAAO,CAACC,EAAMC,GAC/B,CAEA,SAAS+w6B,GAAgBH,EAASC,GAChC,IAAI50jC,EAAK60jC,GAAeF,GACpBI,EAAO/0jC,EAAG,GACVg1jC,EAAOh1jC,EAAG,GAEV62B,EAAKg+hC,GAAeD,GACpBx8G,EAAOvh7B,EAAG,GACVwh7B,EAAOxh7B,EAAG,GAGd,OAAO3qD,KAAK8K,IAAI9K,KAAKmjH,IAAI0l+B,EAAK,GAAK38G,EAAK,IAAKls+B,KAAKmjH,IAAI0l+B,EAAK,GAAK38G,EAAK,IAAKls+B,KAAKmjH,IAAI2l+B,EAAK,GAAK38G,EAAK,IAAKns+B,KAAKmjH,IAAI2l+B,EAAK,GAAK38G,EAAK,IACjI,CAEA,SAAS48G,GAAU9l+B,GACjB,OAAO,GAAgBA,GAAUA,EAASA,EAAS,GAAM,CAC3D,CAmBA,SAAS+l+B,GAAmBvgjC,EAAQ438B,EAAU4oG,EAAYnH,GACxD,IAAIxwB,EAAWjxE,EAASgmC,cACpB6iE,EAA6B,MAAjB53B,EAASx8tB,KAAgC,WAAjBw8tB,EAASx8tB,IAAmB,EAAI,EACpEq0vB,EAAa,GACbprlC,EAAI,EACJqrlC,EAAS,GACT9/kC,EAAK,GACL+/kC,EAAS,GACTC,EAAiB,GAErB,GAAIxH,EAAc,CAChB,IAAK/jlC,EAAI,EAAGA,EAAI0qC,EAAOjrC,OAAQO,GAAK,EAC7B0rC,MAAMhB,EAAO1qC,KAAQ0rC,MAAMhB,EAAO1qC,EAAI,KACzCurlC,EAAetqlC,KAAKypC,EAAO1qC,GAAI0qC,EAAO1qC,EAAI,IAI9C0qC,EAAS6gjC,CACX,CAEA,IAAKvrlC,EAAI,EAAGA,EAAI0qC,EAAOjrC,OAAS,EAAGO,GAAK,EAOtC,OANAsrlC,EAAO,GAAK5gjC,EAAO1qC,EAAI,GACvBsrlC,EAAO,GAAK5gjC,EAAO1qC,EAAI,GACvBuL,EAAG,GAAKm/B,EAAO1qC,GACfuL,EAAG,GAAKm/B,EAAO1qC,EAAI,GACnBorlC,EAAWnqlC,KAAKsK,EAAG,GAAIA,EAAG,IAElB2/kC,GACN,IAAK,MACHG,EAAOF,GAAaG,EAAOH,GAC3BE,EAAO,EAAIF,GAAa5/kC,EAAG,EAAI4/kC,GAC/BC,EAAWnqlC,KAAKoqlC,EAAO,GAAIA,EAAO,IAClC,MAEF,IAAK,SACH,IAAIxi2B,GAAUt9O,EAAG4/kC,GAAaG,EAAOH,IAAc,EAC/CK,EAAU,GACdH,EAAOF,GAAaK,EAAQL,GAAati2B,EACzCwi2B,EAAO,EAAIF,GAAa5/kC,EAAG,EAAI4/kC,GAC/BK,EAAQ,EAAIL,GAAaG,EAAO,EAAIH,GACpCC,EAAWnqlC,KAAKoqlC,EAAO,GAAIA,EAAO,IAClCD,EAAWnqlC,KAAKuqlC,EAAQ,GAAIA,EAAQ,IACpC,MAEF,QAEEH,EAAOF,GAAa5/kC,EAAG4/kC,GACvBE,EAAO,EAAIF,GAAaG,EAAO,EAAIH,GACnCC,EAAWnqlC,KAAKoqlC,EAAO,GAAIA,EAAO,IAMxC,OADAD,EAAWnqlC,KAAKypC,EAAO1qC,KAAM0qC,EAAO1qC,MAC7BorlC,CACT,CAmOA,SAASK,GAAgB/gjC,EAAQwvU,GAC/B,MAAO,CAACxvU,EAAa,EAANwvU,GAAUxvU,EAAa,EAANwvU,EAAU,GAC5C,CAqCA,SAASwxuB,GAAqBtpG,GAC5B,GAAIA,EAAY7/+B,IAAI,CAAC,WAAY,SAC/B,OAAO,EAGT,IAAK,IAAIvC,EAAI,EAAGA,EAAIg9+B,GAAev9+B,OAAQO,IACzC,GAAIoi/B,EAAY7/+B,IAAI,CAACy6+B,GAAeh9+B,GAAI,WAAY,SAClD,OAAO,EAIX,OAAO,CACT,CAEA,SAAS2rlC,GAAmBC,EAAUtpG,EAAU2nG,EAAc7nG,GAC5D,GAAIooG,GAAuBloG,EAAU,eAAgB,CACnD,IAAIupG,EAAkBzpG,EAAYprzB,SAAS,YACvC805B,EAAmBD,EAAgBtplC,IAAI,kBACvCi0zB,EAAS4rL,EAAYx+2B,UACrBmo9B,EAAyB,CAC3BC,eAAgB,GAEdzhI,EAASmhI,GAAqBtpG,GAAe,SAAUviC,EAAS1hgB,GAClEytoB,EAASK,kBAAkBpsI,EAAS1hgB,EAAUq4W,EAAQu1R,EAAwBD,EAAkBD,EAAiBvpG,EACnH,EAAI,KACAx5c,EAAew5c,EAASgmC,cAAcx/e,eACtC+hP,EAAWm/T,GAAmB1nG,EAAU2nG,EAAc7nG,GAAa,WACrE,IAAIuhG,EAAWiI,EAASM,UAEpBvI,GAAYsG,GAC0B,MAApC8B,EAAuBI,WACzBxI,EAASt2jB,KAAK,CACZhqhB,EAAG0olC,EAAuBI,UAC1B/plC,EAAG2plC,EAAuBK,WAIlC,GAAG7hI,GAEH,IAAK63B,EAAY7/+B,IAAI,QAAQ,GAAO,CAClC,IAAIi5+B,EAAY3wN,EAASnpjB,MACrB6w1B,EAAatwjC,KAAK8K,IAAIyu+B,EAAUr98B,MAAOq98B,EAAUp98B,QAEjD0qgB,GACF0yc,EAAUp5+B,GAAKmwjC,EACf/2E,EAAUp98B,QAAuB,EAAbm0hC,IAEpB/2E,EAAUn4+B,GAAKkvjC,EACf/2E,EAAUr98B,OAAsB,EAAbo0hC,EAEvB,CAOA,OAJIhoG,GACFA,EAAO,EAAG1/L,GAGLA,CACT,CAOE,OAAOw/T,GAAoB/nG,EAAU2nG,EAAc7nG,EAEvD,CAgBA,IAAIiqG,GAEJ,SAAUvkuB,GAGR,SAASukuB,IACP,OAAkB,OAAXvkuB,GAAmBA,EAAOnoX,MAAMP,KAAMI,YAAcJ,IAC7D,CAiuBA,OAruBA4sa,EAAUqgrB,EAAUvkuB,GAMpBukuB,EAASvtlC,UAAUgxD,KAAO,WACxB,IAAI0ooB,EAAY,IAAI,GAChB8zZ,EAAa,IAAI,GACrBltlC,KAAKo7T,MAAMj2S,IAAI+nkC,EAAW9xxB,OAC1Bp7T,KAAKmtlC,YAAcD,EACnBltlC,KAAKotlC,WAAah0Z,CACpB,EAEA6zZ,EAASvtlC,UAAU4uH,OAAS,SAAU003B,EAAa1f,EAASr07B,GAC1D,IAAIyd,EAAQ1sD,KAERkj/B,EAAWF,EAAYjx3B,iBACvBqpM,EAAQp7T,KAAKo7T,MACb5rT,EAAOwz+B,EAAYx+2B,UACnB6o9B,EAAiBrqG,EAAYprzB,SAAS,aACtC015B,EAAiBtqG,EAAYprzB,SAAS,aACtCtsJ,EAAS97B,EAAKm5iC,UAAU,WAAa,GACrC4kC,EAAoC,UAAlBrqG,EAAS32+B,KAC3BihlC,EAAextlC,KAAKytlC,UACpBP,EAAaltlC,KAAKmtlC,YAClBnsrB,EAAWhha,KAAKquY,UAChBppW,EAAUjlC,KAAK0tlC,SACft0Z,EAAYp5rB,KAAKotlC,WACjBvC,GAAgBvnH,EAAQrH,KAAO+mB,EAAY8C,qBAC3C6nG,GAAeL,EAAejlhC,UAC9BoghC,EAAc6E,EAAenqlC,IAAI,UACjC+llC,EAAgBV,GAAqBtlG,EAAU1z+B,EAAMi5kC,GACrDiC,EAAkBiD,GAzc1B,SAA4BzqG,EAAU1z+B,EAAM05kC,GAC1C,IAAKA,EAAc1yB,SACjB,MAAO,GAMT,IAHA,IAAI337B,EAAMrvH,EAAK+5C,QACXje,EAASmohC,GAAyB,EAAN507B,GAEvBi8O,EAAM,EAAGA,EAAMj8O,EAAKi8O,IAAO,CAClC,IAAI3uW,EAAK88kC,GAAkBC,EAAehmG,EAAU1z+B,EAAMsrW,GAC1DxvU,EAAa,EAANwvU,GAAW3uW,EAAG,GACrBm/B,EAAa,EAANwvU,EAAU,GAAK3uW,EAAG,EAC3B,CAEA,OAAOm/B,CACT,CA0byCsijC,CAAmB1qG,EAAU1z+B,EAAM05kC,GACpEzE,EAAazhG,EAAY7/+B,IAAI,cAC7BwhlC,EAAe3hG,EAAY7/+B,IAAI,gBAC/B0qlC,EAAepJ,IAAe8I,GA3OtC,SAAyBvqG,EAAaxz+B,EAAM0z+B,GAC1C,IAAIwhG,EAAgB1hG,EAAY7/+B,IAAI,iBAChC2qlC,EAA2B,SAAlBpJ,EAEb,IAAIA,GAAkBoJ,EAAtB,CAIA,IAAIjyO,EAAeqnI,EAAS6qG,eAAe,WAAW,GAEtD,GAAKlyO,KAODiyO,IAiBN,SAAqCjyO,EAAcrs2B,GAKjD,IAAIgljC,EAAa34M,EAAa2zM,YAC1Bw+B,EAAYnrlC,KAAKmjH,IAAIwu8B,EAAW,GAAKA,EAAW,IAAM34M,EAAa/5wB,MAAMv4C,QAC7Ejd,MAAM0hjC,KAAeA,EAAY,GAMjC,IAHA,IAAI1wD,EAAU9thC,EAAK+5C,QACfmlT,EAAO7rW,KAAK8K,IAAI,EAAG9K,KAAKogD,MAAMq6+B,EAAU,IAEnCj43B,EAAY,EAAGA,EAAYi43B,EAASj43B,GAAaqpM,EACxD,GAEE,IAFE,GAAUk3uB,cAAcp2kC,EAAM61J,GAChCw2sB,EAAanyU,eAAiB,EAAI,GAC5BskjB,EACN,OAAO,EAIX,OAAO,CACT,CAtCKC,CAA4BpyO,EAAcrs2B,IAD7C,CAMA,IAAI0+kC,EAAkB1+kC,EAAK42iC,aAAavqM,EAAalkhB,KACjDw2vB,EAAW,CAAC,EAKhB,OAJA,EAAYtyO,EAAamqN,iBAAiB,SAAUlsR,GAClD,IAAIu5I,EAAgBx3E,EAAa/5wB,MAAMiv9B,oBAAoBj3Q,EAAU2gR,WACrE0zB,EAAS96J,GAAiB,CAC5B,IACO,SAAUhuxB,GACf,OAAQ8o7B,EAASxulC,eAAe6P,EAAKrM,IAAI+qlC,EAAiB7o7B,GAC5D,CAXA,CAdA,CA0BF,CA2MyD+o7B,CAAgBprG,EAAaxz+B,EAAM0z+B,GAEpFtwb,EAAU5yjB,KAAKykJ,MACnBmua,GAAWA,EAAQixb,mBAAkB,SAAUhq2B,EAAIihO,GAC7CjhO,EAAGw08B,SACLjzxB,EAAMvoS,OAAOgnH,GACb+4a,EAAQm2f,iBAAiBjusB,EAAK,MAElC,IAEK2puB,GACHyI,EAAWr6jC,SAGbuoS,EAAMj2S,IAAIi0qB,GAEV,IACIk1Z,EADA5/uB,GAAQ6+uB,GAAkBvqG,EAAY7/+B,IAAI,QAG1C+/+B,GAAYA,EAAS4nG,SAAW9nG,EAAY7/+B,IAAI,QAAQ,KAI1B,OAHhCmrlC,EAAqBprG,EAAS4nG,WAGP/rjC,OACrBuvjC,EAAmBrqlC,GAAK,GACxBqqlC,EAAmBtrlC,GAAK,GACxBsrlC,EAAmBvvjC,OAAS,GAC5BuvjC,EAAmBtvjC,QAAU,IACpBsvjC,EAAmBhgvB,KAC5BggvB,EAAmBhgvB,IAAM,GACzBggvB,EAAmBvulC,GAAK,KAI5BC,KAAKuulC,oBAAsBD,EAC3B,IAAI/H,EA9WR,SAA2B/2kC,EAAM0z+B,EAAUj08B,GACzC,IAAIu/iC,EAAiBh/kC,EAAKsshC,UAAU,cAEpC,GAAK0yD,GAAmBA,EAAenulC,QAAWmP,EAAK+5C,SAKjC,gBAAlB257B,EAAS32+B,KAAb,CAWA,IAHA,IAAI88gC,EACAolE,EAEK7tlC,EAAI4tlC,EAAenulC,OAAS,EAAGO,GAAK,EAAGA,IAAK,CACnD,IAAI41gC,EAAUhngC,EAAK819B,iBAAiBkpH,EAAe5tlC,GAAG0yK,WAGtD,GAAiB,OAFjB+12B,EAAW7S,GAAWA,EAAQ6S,WAEO,MAAbA,EAAkB,CACxColE,EAAaD,EAAe5tlC,GAC5B,KACF,CACF,CAEA,GAAK6tlC,EAAL,CAcA,IAAIhk5B,EAAOy4yB,EAASliI,QAAQqoK,GAExBn/E,EAAa,EAAWukJ,EAAWnsU,OAAO,SAAUvyuB,GAEtD,MAAO,CACLkvH,MAAOwrC,EAAKms3B,cAAcns3B,EAAKos3B,YAAY9mhC,EAAK5uC,QAChDosH,MAAOx9E,EAAKw9E,MAEhB,IACImh+B,EAAUxkJ,EAAW7p8B,OACrBsulC,EAAcF,EAAWE,YAAY5slC,QAErC2slC,GAAWxkJ,EAAW,GAAGjryB,MAAQiryB,EAAWwkJ,EAAU,GAAGzv7B,QAC3DiryB,EAAW5v4B,UACXq0hC,EAAYr0hC,WAGd,IAAIs0hC,EA5GN,SAAwB1kJ,EAAY7jyB,GAClC,IAGIwo7B,EACAC,EAJAC,EAAgB,GAChBlw9B,EAAMqr0B,EAAW7p8B,OAKrB,SAAS2ulC,EAASC,EAAOC,EAAOC,GAC9B,IAAI1n7B,EAASwn7B,EAAMhw7B,MAGnB,MAAO,CACLA,MAAOkw7B,EACP5h+B,MAHU,IADH4h+B,EAAe1n7B,IAAWyn7B,EAAMjw7B,MAAQwI,GAC7B,CAACwn7B,EAAM1h+B,MAAO2h+B,EAAM3h+B,QAK1C,CAEA,IAAK,IAAI3sH,EAAI,EAAGA,EAAIi+H,EAAKj+H,IAAK,CAC5B,IAAIo5d,EAASkwe,EAAWtp8B,GACpBq+J,EAAQ+6T,EAAO/6T,MAEnB,GAAIA,EAAQ,EACV4v7B,EAA0B70nB,MACrB,IAAI/6T,EAAQoH,EAAS,CACtByo7B,EACFC,EAAcltlC,KAAKmtlC,EAASF,EAAsB90nB,EAAQ3zT,IACjDwo7B,GAETE,EAAcltlC,KAAKmtlC,EAASH,EAAyB70nB,EAAQ,GAAIg1nB,EAASH,EAAyB70nB,EAAQ3zT,IAI7G,KACF,CACMwo7B,IACFE,EAAcltlC,KAAKmtlC,EAASH,EAAyB70nB,EAAQ,IAE7D60nB,EAA0B,MAG5BE,EAAcltlC,KAAKm4d,GACnB80nB,EAAuB90nB,CACzB,CACF,CAEA,OAAO+0nB,CACT,CA8D0BK,CAAellJ,EAAyB,MAAbm/E,EAAmBp6+B,EAAIk8L,WAAal8L,EAAI+rI,aACvFq06B,EAAiBT,EAAkBvulC,OAEvC,IAAKgvlC,GAAkBX,EAErB,OAAOxkJ,EAAW,GAAGjryB,MAAQ,EAAI0v7B,EAAY,GAAKA,EAAY,GAAKzkJ,EAAWwkJ,EAAU,GAAGnh+B,MAAQoh+B,EAAY,GAAKA,EAAY,GAAKzkJ,EAAW,GAAG380B,MAGrJ,IAEI+h+B,EAAWV,EAAkB,GAAG3v7B,MAFnB,GAGbsw7B,EAAWX,EAAkBS,EAAiB,GAAGpw7B,MAHpC,GAIbuw7B,EAAYD,EAAWD,EAE3B,GAAIE,EAAY,KACd,MAAO,cAGT,EAAYZ,GAAmB,SAAU7+iC,GACvCA,EAAKoS,QAAUpS,EAAKkvH,MAAQqw7B,GAAYE,CAC1C,IACAZ,EAAkB/slC,KAAK,CAErBsgD,OAAQktiC,EAAiBT,EAAkBS,EAAiB,GAAGltiC,OAAS,GACxEorE,MAAOoh+B,EAAY,IAAM,gBAE3BC,EAAkB/jkC,QAAQ,CACxBs3B,OAAQktiC,EAAiBT,EAAkB,GAAGzsiC,OAAS,GACvDorE,MAAOoh+B,EAAY,IAAM,gBAE3B,IAAIrx5B,EAAW,IAAI,GAAuB,EAAG,EAAG,EAAG,EAAGsx5B,GAAmB,GAGzE,OAFAtx5B,EAAS+r1B,GAAYimE,EACrBhy5B,EAAS+r1B,EAAW,KAAOkmE,EACpBjy5B,CA1DP,CArBA,CAgFF,CAgRsBmy5B,CAAkBjglC,EAAM0z+B,EAAUj08B,IAAQz/B,EAAKsshC,UAAU,SAAStshC,EAAKsshC,UAAU,aAEnG,GAAM96nB,GAAYwsrB,EAAajhlC,OAAS22+B,EAAS32+B,MAAQmiW,IAAS1uW,KAAKwpX,MAoChE,CACDmkuB,IAAgB1ojC,EAElBA,EAAUjlC,KAAK0vlC,YAAYpkjC,EAAQo/iC,GAC1BzljC,IAAY0ojC,IAErBv0Z,EAAUvmqB,OAAOoS,GACjBA,EAAUjlC,KAAK0tlC,SAAW,MAIvBH,GACHvtlC,KAAK2vlC,sBAAsB3sG,EAAaE,EAAUgQ,GAAqBqzF,IAIzE,IAAIqJ,EAAcx2Z,EAAUs9Q,cAExBk5I,EAEF,GAAkBA,EAAa,CAC7Btt3B,MAFgBiq3B,GAAmBvslC,KAAMkj/B,GAAU,EAAOF,GAEvC1gxB,OAClB0gxB,GAEH5pT,EAAUw7R,YAAY23H,GAAmBvslC,KAAMkj/B,GAAU,EAAMF,IAKjEyhG,GAAcyI,EAAWv6hB,WAAWnjjB,EAAM,CACxC43kC,SAAUyG,EACVxG,UAAWiH,EACXzI,kBAAkB,EAClBgC,eAAgB,SAAU/suB,GACxB,MAAO,CAACxvU,EAAa,EAANwvU,GAAUxvU,EAAa,EAANwvU,EAAU,GAC5C,IAIGuwuB,GAAarrlC,KAAK6vlC,iBAAkBnF,IAAqBW,GAAarrlC,KAAK8vlC,QAASxkjC,KACnFu/iC,EACF7qlC,KAAK+vlC,mBAAmBvglC,EAAMk7kC,EAAiBxnG,EAAUj08B,EAAKy/T,EAAM+5uB,EAAa9D,IAG7Ej2uB,IAEFpjU,EAASugjC,GAAmBvgjC,EAAQ438B,EAAUx0oB,EAAMi2uB,GAEhD+F,IACFA,EAAkBmB,GAAmBnB,EAAiBxnG,EAAUx0oB,EAAMi2uB,KAI1E3jrB,EAASpa,SAAS,CAChBt7W,OAAQA,IAEVrG,GAAWA,EAAQ2hX,SAAS,CAC1Bt7W,OAAQA,EACRo/iC,gBAAiBA,KAIzB,MAjGEjG,GAAcyI,EAAWv6hB,WAAWnjjB,EAAM,CACxC43kC,SAAUyG,EACVxG,UAAWiH,EACXzI,kBAAkB,EAClBgC,eAAgB,SAAU/suB,GACxB,MAAO,CAACxvU,EAAa,EAANwvU,GAAUxvU,EAAa,EAANwvU,EAAU,GAC5C,IAEF+vuB,GAAgB7qlC,KAAKgwlC,0BAA0BxglC,EAAM0z+B,EAAUorG,GAE3D5/uB,IAEFpjU,EAASugjC,GAAmBvgjC,EAAQ438B,EAAUx0oB,EAAMi2uB,GAEhD+F,IACFA,EAAkBmB,GAAmBnB,EAAiBxnG,EAAUx0oB,EAAMi2uB,KAI1E3jrB,EAAWhha,KAAKiwlC,aAAa3kjC,GAEzBqijC,EACF1ojC,EAAUjlC,KAAK0vlC,YAAYpkjC,EAAQo/iC,GAE5BzljC,IACLm0pB,EAAUvmqB,OAAOoS,GACjBA,EAAUjlC,KAAK0tlC,SAAW,MAIzBH,GACHvtlC,KAAK2vlC,sBAAsB3sG,EAAaE,EAAUgQ,GAAqBqzF,IAGzEntZ,EAAUw7R,YAAY23H,GAAmBvslC,KAAMkj/B,GAAU,EAAMF,IAiEjE,IAAIsjG,EAAgBtjG,EAAYprzB,SAAS,YACrCk5K,EAAQw1uB,EAAcnjlC,IAAI,SAC1Bo/+B,EAAY+jG,EAAcnjlC,IAAI,aAC9BijlC,EAAmBE,EAAcnjlC,IAAI,YACzC69Z,EAAS5W,SAAS,EAClBijsB,EAAezhG,eAAgB,CAC7Bxu3B,KAAM,OACNggpB,OAAQmpU,EACR7iU,SAAU,WAEZ+gO,GAAyBzjlB,EAAUgilB,EAAa,aAE5ChilB,EAAS3sZ,MAAMg+T,UAAY,GAA6D,WAAxD2wqB,EAAY7/+B,IAAI,CAAC,WAAY,YAAa,YACpD69Z,EAAS18S,SAAS,YAAYjwG,MACpCg+T,WAAa2uF,EAAS3sZ,MAAMg+T,UAAY,GAI5D2qqB,GAAUh8kB,GAAUk8kB,YAAc8F,EAAY9F,YAC9CiH,GAAoBnjlB,EAAUlwD,EAAOyxoB,EAAW6jG,GAChD,IAAItg+B,EAAS8l+B,GAAU5oG,EAAY7/+B,IAAI,WACnCqhlC,EAAiBxhG,EAAY7/+B,IAAI,kBAOrC,GANA69Z,EAASpa,SAAS,CAChB9gS,OAAQA,EACR0+9B,eAAgBA,EAChBG,aAAcA,IAGZ1/iC,EAAS,CACX,IAAIirjC,EAAkB1glC,EAAKytiC,mBAAmB,mBAC1C0tC,EAAkB,EACtB1ljC,EAAQmlX,SAAS,EAAgBkjsB,EAAe9lH,eAAgB,CAC9Dpq2B,KAAMmp9B,EACN368B,QAAS,GACT83oB,SAAU,QACV8vN,MAAOhk+B,EAAKsshC,UAAU,SAAStoD,SAG7B08G,IACFvF,EAAkBiB,GAAUsE,EAAgB/slC,IAAI,YAGlD8hC,EAAQ2hX,SAAS,CACf9gS,OAAQA,EACR6k+B,gBAAiBA,EACjBnG,eAAgBA,EAChBG,aAAcA,IAEhBlgG,GAAyBx/8B,EAAS+98B,EAAa,aAE/ChG,GAAU/38B,GAASi48B,YAAc8F,EAAY9F,YAC7CiH,GAAoBl/8B,EAAS6rU,EAAOyxoB,EAAW6jG,EACjD,CAEA,IAAI+J,EAAkB,SAAUp7H,GAC9Bro6B,EAAM0jiC,iBAAiBr7H,EACzB,EAEAvl9B,EAAKq0+B,mBAAkB,SAAUhq2B,GAE/BA,IAAOA,EAAG+k2B,mBAAqBuxG,EACjC,IACAnwlC,KAAKquY,UAAUuwmB,mBAAqBuxG,EACpCnwlC,KAAKykJ,MAAQj1I,EAEbxP,KAAKytlC,UAAYvqG,EACjBlj/B,KAAK6vlC,iBAAmBnF,EACxB1qlC,KAAK8vlC,QAAUxkjC,EACftrC,KAAKwpX,MAAQ9a,EACb1uW,KAAKqwlC,aAAe5H,EAEhBzlG,EAAY7/+B,IAAI,sBAClBnD,KAAKswlC,cAActtG,EAAahilB,GAChC/7X,GAAWjlC,KAAKswlC,cAActtG,EAAa/98B,GAE/C,EAEAgojC,EAASvtlC,UAAU4wlC,cAAgB,SAAUttG,EAAanp2B,GACxDmj2B,GAAUnj2B,GAAIknT,UAAY,CACxB7kP,cAAe,SACfu0zB,iBAAkB,OAClBtlvB,eAAgB63tB,EAAY73tB,eAC5B+xtB,YAAa8F,EAAY9F,YACzBoe,WAAYtY,EAAYt4+B,KACxB+x0B,WAAY,OAEhB,EAEAwwQ,EAASvtlC,UAAU89rB,UAAY,SAAUwlT,EAAa1f,EAASr07B,EAAKna,GAClE,IAAItlB,EAAOwz+B,EAAYx+2B,UACnB6gC,EAAY,GAAyB71J,EAAMslB,GAI/C,GAFA90B,KAAKowlC,iBAAiB,cAEhB/q7B,aAAqB5lK,QAAuB,MAAb4lK,GAAqBA,GAAa,EAAG,CACxE,IAAI/5H,EAAS97B,EAAKm5iC,UAAU,UACxBzujB,EAAS1qf,EAAKkz+B,iBAAiBr90B,GAEnC,IAAK60V,EAAQ,CAEX,IAAIj2f,EAAIqnC,EAAmB,EAAZ+5H,GACXriK,EAAIsoC,EAAmB,EAAZ+5H,EAAgB,GAE/B,GAAI/4H,MAAMroC,IAAMqoC,MAAMtpC,GAEpB,OAIF,GAAIhD,KAAKuulC,sBAAwBvulC,KAAKuulC,oBAAoB36I,QAAQ3v8B,EAAGjB,GACnE,OAGF,IAAIy28B,EAASupC,EAAY7/+B,IAAI,WAAa,EACtCwC,EAAIq9+B,EAAY7/+B,IAAI,MAAQ,GAChC+2f,EAAS,IAAI,GAAU1qf,EAAM61J,IACtBphK,EAAIA,EACXi2f,EAAOl3f,EAAIA,EACXk3f,EAAOwrlB,KAAKjsI,EAAQ9z8B,GAEpB,IAAI4qlC,EAAcr2lB,EAAOurlB,gBAAgB94/B,iBAErC4jgC,IACFA,EAAY92I,OAASA,EACrB82I,EAAY5qlC,EAAIA,EAChB4qlC,EAAYxz5B,GAAK/8L,KAAKquY,UAAUtxM,GAAK,GAGvCm9T,EAAOm0lB,QAAS,EAChB7+kC,EAAKu5iC,iBAAiB1j5B,EAAW60V,GAEjCA,EAAOorlB,qBAAoB,GAC3BtllC,KAAKo7T,MAAMj2S,IAAI+0e,EACjB,CAEAA,EAAOsjM,WACT,MAEEwlH,GAAUtjzB,UAAU89rB,UAAU59rB,KAAKI,KAAMgj/B,EAAa1f,EAASr07B,EAAKna,EAExE,EAEAm4jC,EAASvtlC,UAAUkpgC,SAAW,SAAU5lB,EAAa1f,EAASr07B,EAAKna,GACjE,IAAItlB,EAAOwz+B,EAAYx+2B,UACnB6gC,EAAY,GAAyB71J,EAAMslB,GAI/C,GAFA90B,KAAKowlC,iBAAiB,UAEL,MAAb/q7B,GAAqBA,GAAa,EAAG,CACvC,IAAI60V,EAAS1qf,EAAKkz+B,iBAAiBr90B,GAE/B60V,IACEA,EAAOm0lB,QACT7+kC,EAAKu5iC,iBAAiB1j5B,EAAW,MACjCrlK,KAAKo7T,MAAMvoS,OAAOqne,IAElBA,EAAO0ugB,WAGb,MAIE5lN,GAAUtjzB,UAAUkpgC,SAAShpgC,KAAKI,KAAMgj/B,EAAa1f,EAASr07B,EAAKna,EAEvE,EAEAm4jC,EAASvtlC,UAAU0wlC,iBAAmB,SAAUr7H,GAC9C,IAAI9v7B,EAAUjlC,KAAK0tlC,SACnBluG,GAAcx/+B,KAAKquY,UAAW0mlB,GAC9B9v7B,GAAWu68B,GAAcv68B,EAAS8v7B,EACpC,EAEAk4H,EAASvtlC,UAAUuwlC,aAAe,SAAU3kjC,GAC1C,IAAI01X,EAAWhha,KAAKquY,UAiBpB,OAfI2yB,GACFhha,KAAKotlC,WAAWv6jC,OAAOmuY,GAGzBA,EAAW,IAAImprB,GAAW,CACxB7n3B,MAAO,CACLh3L,OAAQA,GAEV0k8B,uBAAwB,EACxBjzyB,GAAI,KAGN/8L,KAAKotlC,WAAWjokC,IAAI67Y,GAEpBhha,KAAKquY,UAAY2yB,EACVA,CACT,EAEAisrB,EAASvtlC,UAAUgwlC,YAAc,SAAUpkjC,EAAQo/iC,GACjD,IAAIzljC,EAAUjlC,KAAK0tlC,SAiBnB,OAfIzojC,GACFjlC,KAAKotlC,WAAWv6jC,OAAOoS,GAGzBA,EAAU,IAAIwljC,GAAU,CACtBno3B,MAAO,CACLh3L,OAAQA,EACRo/iC,gBAAiBA,GAEnB16G,uBAAwB,IAG1Bhw+B,KAAKotlC,WAAWjokC,IAAI8f,GAEpBjlC,KAAK0tlC,SAAWzojC,EACTA,CACT,EAEAgojC,EAASvtlC,UAAUswlC,0BAA4B,SAAUxglC,EAAM0z+B,EAAUmkG,GACvE,IAAImJ,EACAjD,EACAp5B,EAAWjxE,EAASgmC,cACpBunE,EAAgBt8B,EAAS91T,QAEP,gBAAlB6kP,EAAS32+B,MACXiklC,EAAuBr8B,EAASzqhB,eAChC6jjB,GAAkB,GACS,UAAlBrqG,EAAS32+B,OAClBiklC,EAAwC,UAAjBr8B,EAASx8tB,IAChC41vB,GAAkB,GAGpB,IAAIvqG,EAAcxz+B,EAAKy0iC,UACnBysC,EAAiB1tG,EAAY7/+B,IAAI,qBAEjC,GAAkButlC,KACpBA,EAAiBA,EAAe,OAGlC,IAAIC,EAAc3tG,EAAY7/+B,IAAI,mBAAqB,EACnDytlC,EAAmB,GAAkBD,GAAeA,EAAY,MAAQA,EAC5EnhlC,EAAKq0+B,mBAAkB,SAAU3pf,EAAQp/I,GACvC,IAAIjhO,EAAKqgX,EAET,GAAIrgX,EAAI,CACN,IAAI1E,EAAQ,CAAC+kX,EAAOj2f,EAAGi2f,EAAOl3f,GAC1BwjC,OAAQ,EACRC,OAAM,EACN1G,OAAU,EAEd,GAAIsnjC,EACF,GAAIkG,EAAiB,CACnB,IAAIsD,EAAYxJ,EACZpo7B,EAAQik1B,EAAS4tG,aAAa378B,GAE9Bq78B,GACFhqjC,EAAQqqjC,EAAUhoU,WAClBpivB,EAAMoqjC,EAAU/nU,SAChB/ovB,GAAWk/H,EAAM,GAAK,IAAMp8J,KAAKsmC,KAEjC3C,EAAQqqjC,EAAUvivB,GAClB7nU,EAAMoqjC,EAAU9wlC,EAChBggC,EAAUk/H,EAAM,GAEpB,KAAO,CACL,IAAI8x7B,EAAW1J,EAEXmJ,GACFhqjC,EAAQuqjC,EAAS9slC,EACjBwiC,EAAMsqjC,EAAS9slC,EAAI8slC,EAAShyjC,MAC5BgB,EAAUm6d,EAAOj2f,IAEjBuiC,EAAQuqjC,EAAS/tlC,EAAI+tlC,EAAS/xjC,OAC9ByH,EAAMsqjC,EAAS/tlC,EACf+8B,EAAUm6d,EAAOl3f,EAErB,CAGF,IAAIi6L,EAAQx2J,IAAQD,EAAQ,GAAKzG,EAAUyG,IAAUC,EAAMD,GAEvDiqjC,IACFxz5B,EAAQ,EAAIA,GAGd,IAAI97I,EAAQ,GAAkBwviC,GAAeA,EAAY71uB,GAAO41uB,EAAiBzz5B,EAAQ2z5B,EACrFpqD,EAAa3s5B,EAAG4r8B,gBAChBr1jC,EAAOo2gC,EAAW758B,iBACtBktD,EAAGo0Y,KAAK,CACNr1Z,OAAQ,EACRC,OAAQ,IAEVghB,EAAGg/0B,UAAU,CACXjg2B,OAAQ,EACRC,OAAQ,GACP,CACDxzE,SAAU,IACV606B,YAAY,EACZ/46B,MAAOA,IAGL/wB,GACFA,EAAK0o8B,YAAY,CACfzk9B,MAAO,CACLu3H,QAAS,IAEV,CACDvmF,SAAU,IACVlE,MAAOA,IAIXql/B,EAAW4oC,uBAAwB,CACrC,CACF,GACF,EAEA6d,EAASvtlC,UAAUiwlC,sBAAwB,SAAU3sG,EAAaE,EAAU6G,GAC1E,IAAIinG,EAAgBhuG,EAAYprzB,SAAS,YAEzC,GAAI005B,GAAqBtpG,GAAc,CACrC,IAAIiuG,EAASjuG,EAAYx+2B,UACrBw8R,EAAWhha,KAAKquY,UAEhB/iW,EAAS2ljC,EAAOtoC,UAAU,UAE9B,IAAKr9gC,EAGH,OAFA01X,EAASi3jB,yBACTj49B,KAAK8slC,UAAY,MAInB,IAAIvI,EAAWvklC,KAAK8slC,UAEfvI,KACHA,EAAWvklC,KAAK8slC,UAAY,IAAI,GAAa,CAC3C/v5B,GAAI,OAGG05wB,YAAa,EACtBz1iB,EAAS2zjB,eAAe309B,KAAK8slC,WAC7B9rrB,EAASouqB,uBAAwB,GAInC,IAAI/p6B,EA5oBV,SAA6B/5H,GAG3B,IAFA,IALmBrnC,EAAGjB,EAKlB67H,EAAMvzF,EAAOjrC,OAAS,EAEnBw+H,EAAM,IAPM56H,EAQAqnC,EAAa,EAANuzF,EAAU,GARd77H,EAQkBsoC,EAAa,EAANuzF,EAAU,GAPlDvyF,MAAMroC,IAAMqoC,MAAMtpC,IAMT67H,KAMhB,OAAOA,EAAM,CACf,CAkoBsBqy9B,CAAoB5ljC,GAEhC+5H,GAAa,IACfwi1B,GAAc7mlB,EAAU0nlB,GAAqB1F,EAAa,YAAa,CACrE+G,aAAcA,EACdzC,aAActE,EACduE,eAAgBli1B,EAChB08rB,YAAa,SAAU18rB,EAAW+6X,EAAKgnd,GACrC,OAA4B,MAArBA,EAA4B69F,GAA4BgM,EAAQ7pG,GAAqB29F,GAAgBkM,EAAQ5r7B,EACtH,EACAmj1B,kBAAkB,GA9hB5B,SAAmCwoG,EAAe9tG,GAChD,IAAIixE,EAAWjxE,EAASgmC,cACpBx/e,EAAeyqhB,EAASzqhB,eACxBynjB,EAAiBh9B,EAAS91T,QAC1BkmB,EAAQ76O,EAAeynjB,EAAiB,QAAU,OAAS,SAC3Dh+W,EAAgBzpM,EAAe,SAAWynjB,EAAiB,MAAQ,SACvE,MAAO,CACL9t7B,OAAQ,CACNkhnB,MAAOysU,EAAc7tlC,IAAI,UAAYohxB,EACrCpxC,cAAe69W,EAAc7tlC,IAAI,kBAAoBgwuB,GAG3D,CAmhBWi+W,CAA0BJ,EAAe9tG,IAC5ClilB,EAAS6xjB,WAAWl07B,SAAW,KAEnC,MAAW3+B,KAAK8slC,YACd9slC,KAAKquY,UAAU4plB,oBAEfj49B,KAAK8slC,UAAY,KAErB,EAEAG,EAASvtlC,UAAUmtlC,kBAAoB,SAAUpsI,EAAS1hgB,EAAUvvc,EAAM6hlC,EAAiBrmG,EAAgBgmG,EAAe9tG,GACxH,IAAIqhG,EAAWvklC,KAAK8slC,UAChB9rrB,EAAWhha,KAAKquY,UAEpB,GAAIk2sB,EAAU,CAGR9jI,EAAU,GAAkC,MAA7B4wI,EAAgBtE,YACjCsE,EAAgBtE,UAAYxI,EAAStglC,EACrCotlC,EAAgBrE,UAAYzI,EAASvhlC,GAGvC,IAAIsoC,EAAS97B,EAAKm5iC,UAAU,UACxB3lE,EAAcxz+B,EAAKy0iC,UACnB0gC,EAAe3hG,EAAY7/+B,IAAI,gBAC/B8yQ,EAAY+60B,EAAc7tlC,IAAI,aAC9B8lJ,EAAW+n8B,EAAc7tlC,IAAI,aAAe,EAC5CgxjC,EAAWjxE,EAASgmC,cACpBx/e,EAAeyqhB,EAASzqhB,eACxBynjB,EAAiBh9B,EAAS91T,QAC1BgpV,EAAYtooB,EAASz8O,MACrB+n3B,EAAO8G,EAAiBznjB,EAAe29iB,EAAUpjlC,EAAIojlC,EAAUrklC,EAAIqklC,EAAUrojC,OAAS0qgB,EAAe29iB,EAAUpjlC,EAAIojlC,EAAUtojC,MAAQsojC,EAAUrklC,EAC/IsulC,GAAa5njB,EAAezgZ,EAAW,IAAMko8B,GAAkB,EAAI,GACnEI,GAAa7njB,EAAe,GAAKzgZ,IAAako8B,GAAkB,EAAI,GACpEx5vB,EAAM+xM,EAAe,IAAM,IAC3B8njB,EA1qBV,SAAuBlmjC,EAAQ++iC,EAAM1yvB,GAQnC,IAPA,IAEI32V,EACAsC,EAHAu7H,EAAMvzF,EAAOjrC,OAAS,EACtBu4gC,EAAiB,MAARjhrB,EAAc,EAAI,EAG3B85vB,EAAY,EACZ7i2B,GAAa,EAERhuP,EAAI,EAAGA,EAAIi+H,EAAKj+H,IAGvB,GAFA0C,EAAIgoC,EAAW,EAAJ1qC,EAAQg4gC,IAEfts+B,MAAMhpC,KAAMgpC,MAAMhB,EAAW,EAAJ1qC,EAAQ,EAAIg4gC,IAIzC,GAAU,IAANh4gC,EAAJ,CAKA,GAAII,GAAKqplC,GAAQ/mlC,GAAK+mlC,GAAQrplC,GAAKqplC,GAAQ/mlC,GAAK+mlC,EAAM,CACpDz71B,EAAYhuP,EACZ,KACF,CAEA6wlC,EAAY7wlC,EACZI,EAAIsC,CARJ,MAFEtC,EAAIsC,EAaR,MAAO,CACLy+H,MAAO,CAAC0v9B,EAAW7i2B,GACnBxvP,GAAIirlC,EAAOrplC,IAAMsC,EAAItC,GAEzB,CAyoB2B0wlC,CAAcpmjC,EAAQ++iC,EAAM1yvB,GAC7ChpK,EAAU6i6B,EAAezv9B,MACzBwma,EAAO55W,EAAQ,GAAKA,EAAQ,GAC5BxtL,OAAQ,EAEZ,GAAIoniB,GAAQ,EAAG,CAEb,GAAIA,EAAO,IAAMo8iB,EAAc,CAC7B,IAAIx4kC,EAAKkglC,GAAgB/gjC,EAAQqjJ,EAAQ,IACzC415B,EAASt2jB,KAAK,CACZhqhB,EAAGkI,EAAG,GAAKmllC,EACXtulC,EAAGmJ,EAAG,GAAKollC,IAEbvmG,IAAmB7p/B,EAAQ6h/B,EAAYotB,YAAYzh1B,EAAQ,IAC7D,KAAO,EACDxiL,EAAK60Z,EAASoprB,WAAWC,EAAM1yvB,KAC7B4svB,EAASt2jB,KAAK,CAClBhqhB,EAAGkI,EAAG,GAAKmllC,EACXtulC,EAAGmJ,EAAG,GAAKollC,IAEb,IAAI/ivB,EAAaw0oB,EAAYotB,YAAYzh1B,EAAQ,IAC7C8/K,EAAWu0oB,EAAYotB,YAAYzh1B,EAAQ,IAC/Cq8zB,IAAmB7p/B,EAAQ,GAA+BqO,EAAMymQ,EAAWu4F,EAAYC,EAAU+ivB,EAAepylC,GAClH,CAEAiylC,EAAgBzE,eAAiBj+5B,EAAQ,EAC3C,KAAO,CAGL,IAAImsL,EAAkB,IAAZ2lmB,GAAiB4wI,EAAgBzE,eAAiB,EAAIj+5B,EAAQ,GAAK,EACzExiL,EAAKkglC,GAAgB/gjC,EAAQwvU,GACjCkwoB,IAAmB7p/B,EAAQ6h/B,EAAYotB,YAAYt1pB,IACnDypuB,EAASt2jB,KAAK,CACZhqhB,EAAGkI,EAAG,GAAKmllC,EACXtulC,EAAGmJ,EAAG,GAAKollC,GAEf,CAEA,GAAIvmG,EAAgB,CAClB,IAAI/rO,EAAQwpO,GAAW87F,GAEW,mBAAvBtlU,EAAM8nO,cACf9nO,EAAM8nO,aAAa5l/B,EAEvB,CACF,CACF,EAOA8rlC,EAASvtlC,UAAUqwlC,mBAAqB,SAAUvglC,EAAMk7kC,EAAiBxnG,EAAUj08B,EAAKy/T,EAAM+5uB,EAAa9D,GACzG,IAAI3jrB,EAAWhha,KAAKquY,UAChBppW,EAAUjlC,KAAK0tlC,SACf1qG,EAAcxz+B,EAAKy0iC,UACnB17gB,ECrkCO,SAA2BqqB,EAASp9N,EAASm8vB,EAAoBC,EAAoBC,EAAaC,EAAaC,EAAgBC,GAoB5I,IAnBA,IAAIzpjB,EAvBN,SAAkBqqB,EAASp9N,GACzB,IAAIy8vB,EAAa,GAkBjB,OAjBAz8vB,EAAQ+yM,KAAKqqB,GAASztiB,KAAI,SAAU21V,GAClCm3uB,EAAWpwlC,KAAK,CACdqv+B,IAAK,IACLp2nB,IAAKA,GAET,IAAGvsS,QAAO,SAAU4x+B,EAAQ4nC,GAC1BkK,EAAWpwlC,KAAK,CACdqv+B,IAAK,IACLp2nB,IAAKituB,EACLnra,KAAMujY,GAEV,IAAGtthC,QAAO,SAAUioV,GAClBm3uB,EAAWpwlC,KAAK,CACdqv+B,IAAK,IACLp2nB,IAAKA,GAET,IAAGinC,UACIkwsB,CACT,CAGaC,CAASt/hB,EAASp9N,GAMzB28vB,EAAa,GACbC,EAAa,GAEbC,EAAoB,GACpBC,EAAoB,GACpB7skC,EAAS,GACT8skC,EAAgB,GAChBC,EAAa,GACbC,EAAsBjK,GAAqBqJ,EAAar8vB,EAASu8vB,GAEjEW,EAAY9/hB,EAAQ+1f,UAAU,WAAa,GAC3CskB,EAAYz3uB,EAAQmztB,UAAU,WAAa,GAEtC/njC,EAAI,EAAGA,EAAI2niB,EAAKloiB,OAAQO,IAAK,CACpC,IAAI+xlC,EAAWpqjB,EAAK3niB,GAChBgylC,GAAa,EACbC,OAAU,EACVC,OAAU,EAGd,OAAQH,EAASzhH,KACf,IAAK,IACH2hH,EAAyB,EAAfF,EAAS73uB,IACnBg4uB,EAA0B,EAAhBH,EAAS/1a,KACnB,IAAIm2a,EAAWL,EAAUG,GACrBG,EAAWN,EAAUG,EAAU,GAC/B98R,EAAQk3Q,EAAU6lB,GAClBp/F,EAAQu5E,EAAU6lB,EAAU,IAE5BxmjC,MAAMymjC,IAAazmjC,MAAM0mjC,MAC3BD,EAAWh9R,EACXi9R,EAAWt/F,GAGby+F,EAAWtwlC,KAAKkxlC,EAAUC,GAC1BZ,EAAWvwlC,KAAKk0zB,EAAO29L,GACvB2+F,EAAkBxwlC,KAAK8vlC,EAAmBkB,GAAUlB,EAAmBkB,EAAU,IACjFP,EAAkBzwlC,KAAK+vlC,EAAmBkB,GAAUlB,EAAmBkB,EAAU,IACjFN,EAAW3wlC,KAAK2zV,EAAQ82qB,YAAYqmF,EAAS/1a,OAC7C,MAEF,IAAK,IACH,IAAIujY,EAASwyC,EAAS73uB,IAClBm4uB,EAAsBR,EAAoBzJ,iBAC1CkK,EAAQrB,EAAYl6B,YAAY,CAACniuB,EAAQryV,IAAI8vlC,EAAoB,GAAI9yC,GAAS3qtB,EAAQryV,IAAI8vlC,EAAoB,GAAI9yC,KACtH2yC,EAAmB,EAAT3yC,EACVgyC,EAAWtwlC,KAAKqxlC,EAAM,GAAIA,EAAM,IAChCd,EAAWvwlC,KAAKorkC,EAAU6lB,GAAU7lB,EAAU6lB,EAAU,IACxD,IAAIK,EAAiBlK,GAAkBwJ,EAAqBZ,EAAar8vB,EAAS2qtB,GAClFkyC,EAAkBxwlC,KAAKsxlC,EAAe,GAAIA,EAAe,IACzDb,EAAkBzwlC,KAAK+vlC,EAAmBkB,GAAUlB,EAAmBkB,EAAU,IACjFN,EAAW3wlC,KAAK2zV,EAAQ82qB,YAAY6zC,IACpC,MAEF,IAAK,IACHyyC,GAAa,EAIbA,IACFntkC,EAAO5jB,KAAK8wlC,GACZJ,EAAc1wlC,KAAK0wlC,EAAclylC,QAErC,CAIAkylC,EAAchmjC,MAAK,SAAUvrC,EAAGsC,GAC9B,OAAOkvlC,EAAWxxlC,GAAKwxlC,EAAWlvlC,EACpC,IACA,IAAIu7H,EAAMsz9B,EAAW9xlC,OACjB+ylC,EAAmB3/B,GAAmB507B,GACtCw09B,EAAmB5/B,GAAmB507B,GACtCy09B,EAA0B7/B,GAAmB507B,GAC7C009B,EAA0B9/B,GAAmB507B,GAC7C209B,EAAe,GAEnB,IAAS5ylC,EAAI,EAAGA,EAAI2xlC,EAAclylC,OAAQO,IAAK,CAC7C,IAAIk6W,EAAMy3uB,EAAc3xlC,GACpB2wJ,EAAS,EAAJ3wJ,EACL6ylC,EAAa,EAAN34uB,EACXs4uB,EAAiB7h8B,GAAM4g8B,EAAWsB,GAClCL,EAAiB7h8B,EAAK,GAAK4g8B,EAAWsB,EAAO,GAC7CJ,EAAiB9h8B,GAAM6g8B,EAAWqB,GAClCJ,EAAiB9h8B,EAAK,GAAK6g8B,EAAWqB,EAAO,GAC7CH,EAAwB/h8B,GAAM8g8B,EAAkBoB,GAChDH,EAAwB/h8B,EAAK,GAAK8g8B,EAAkBoB,EAAO,GAC3DF,EAAwBhi8B,GAAM+g8B,EAAkBmB,GAChDF,EAAwBhi8B,EAAK,GAAK+g8B,EAAkBmB,EAAO,GAC3DD,EAAa5ylC,GAAK6kB,EAAOq1V,EAC3B,CAEA,MAAO,CACL/6U,QAASqzjC,EACTrylC,KAAMsylC,EACNK,iBAAkBJ,EAClBK,cAAeJ,EACf9tkC,OAAQ+tkC,EAEZ,CD29BeI,CAAkB5zlC,KAAKykJ,MAAOj1I,EAAMxP,KAAK6vlC,iBAAkBnF,EAAiB1qlC,KAAKytlC,UAAWvqG,EAAUlj/B,KAAKqwlC,cAClHtwjC,EAAUwogB,EAAKxogB,QACf2zjC,EAAmBnrjB,EAAKmrjB,iBACxB3ylC,EAAOwniB,EAAKxniB,KACZ4ylC,EAAgBprjB,EAAKorjB,cAazB,GAXIjlvB,IAEF3uU,EAAU8rjC,GAAmBtjjB,EAAKxogB,QAASmj9B,EAAUx0oB,EAAMi2uB,GAC3D+O,EAAmB7H,GAAmBtjjB,EAAKmrjB,iBAAkBxwG,EAAUx0oB,EAAMi2uB,GAC7E5jlC,EAAO8qlC,GAAmBtjjB,EAAKxniB,KAAMmi/B,EAAUx0oB,EAAMi2uB,GACrDgP,EAAgB9H,GAAmBtjjB,EAAKorjB,cAAezwG,EAAUx0oB,EAAMi2uB,IAMrE8G,GAAgB1rjC,EAASh/B,GAAQ,KAAQkkC,GAAWwmjC,GAAgBiI,EAAkBC,GAAiB,IAczG,OAbA3yrB,EAAS23jB,gBACT33jB,EAASpa,SAAS,CAChBt7W,OAAQvqC,SAGNkkC,IACFA,EAAQ0z7B,gBACR1z7B,EAAQ2hX,SAAS,CACft7W,OAAQvqC,EACR2plC,gBAAiBiJ,MAOvB3yrB,EAAS1+L,MAAMux3B,SAAWtrjB,EAAKxogB,QAC/BihY,EAAS1+L,MAAMh3L,OAASvL,EACxB,IAAIjwB,EAAS,CACXwyN,MAAO,CACLh3L,OAAQvqC,IAKRwniB,EAAKxogB,UAAYA,IACnBjwB,EAAOwyN,MAAMux3B,SAAWtrjB,EAAKxniB,MAI/Biga,EAAS23jB,gBACT,GAAoB33jB,EAAUlxZ,EAAQkz+B,GAElC/98B,IACFA,EAAQ2hX,SAAS,CAEft7W,OAAQvL,EACR2qjC,gBAAiBgJ,IAEnBzujC,EAAQ0z7B,gBACR,GAAoB1z7B,EAAS,CAC3Bq9L,MAAO,CACLoo3B,gBAAiBiJ,IAElB3wG,GAEChilB,EAAS1+L,MAAMh3L,SAAWrG,EAAQq9L,MAAMh3L,SAC1CrG,EAAQq9L,MAAMh3L,OAAS01X,EAAS1+L,MAAMh3L,SAO1C,IAHA,IAAIwojC,EAAkB,GAClBC,EAAaxrjB,EAAK9ihB,OAEb7kB,EAAI,EAAGA,EAAImzlC,EAAW1zlC,OAAQO,IAGrC,GAAY,MAFFmzlC,EAAWnzlC,GAAGsw+B,IAEP,CACf,IAAIr31B,EAAKrqI,EAAKkz+B,iBAAiBqxG,EAAWnzlC,GAAGg8qB,MAEzC/iiB,GACFi68B,EAAgBjylC,KAAK,CACnBg4I,GAAIA,EACJm68B,MAAOpzlC,GAIb,CAGEoga,EAASuxjB,WAAavxjB,EAASuxjB,UAAUly9B,QAC3C2ga,EAASuxjB,UAAU,GAAGpH,QAAO,WAC3Blm7B,GAAWA,EAAQ8v8B,aAGnB,IAFA,IAAIzp8B,EAAS01X,EAAS1+L,MAAMux3B,SAEnBjzlC,EAAI,EAAGA,EAAIkzlC,EAAgBzzlC,OAAQO,IAAK,CAC/C,IAAIi5I,EAAKi68B,EAAgBlzlC,GAAGi5I,GACxB13F,EAAoC,EAA3B2xiC,EAAgBlzlC,GAAGozlC,MAChCn68B,EAAG51I,EAAIqnC,EAAO6W,GACd03F,EAAG72I,EAAIsoC,EAAO6W,EAAS,GACvB03F,EAAG640B,YACL,CACF,GAEJ,EAEAu6H,EAASvtlC,UAAUmzB,OAAS,SAAUyw8B,GACpC,IAAIloqB,EAAQp7T,KAAKo7T,MACbw3P,EAAU5yjB,KAAKykJ,MAEnBzkJ,KAAKotlC,WAAWv/1B,YAEhB7tP,KAAKmtlC,YAAYt6jC,QAAO,GAGxB+/hB,GAAWA,EAAQixb,mBAAkB,SAAUhq2B,EAAIihO,GAC7CjhO,EAAGw08B,SACLjzxB,EAAMvoS,OAAOgnH,GACb+4a,EAAQm2f,iBAAiBjusB,EAAK,MAElC,IACA96W,KAAKquY,UAAYruY,KAAK0tlC,SAAW1tlC,KAAKytlC,UAAYztlC,KAAK8vlC,QAAU9vlC,KAAK6vlC,iBAAmB7vlC,KAAK8slC,UAAY9slC,KAAKykJ,MAAQ,IACzH,EAEAwo8B,EAAS1glC,KAAO,OACT0glC,CACT,CAvuBA,CAuuBEjqS,IAEF,YExtCe,SAASixS,GAAax3Q,EAAYy3Q,GAC/C,MAAO,CACLz3Q,WAAYA,EACZg1L,KAAMqa,KACN7q9B,MAAO,SAAU+h7B,GACf,IAAIxz+B,EAAOwz+B,EAAYx+2B,UACnB0+2B,EAAWF,EAAYjx3B,iBACvBg65B,EAAkB/oC,EAAY+oC,gBAC9BooE,EAAgBD,GAA0BnoE,EAAgB7zM,MAE9D,GAAKgrK,EAAL,CAIA,IAAI4oB,EAAOz8+B,EAAI6z9B,EAASxq1B,YAAY,SAAUi/L,GAC5C,OAAOnoV,EAAK42iC,aAAazutB,EAC3B,IAAG51V,MAAM,EAAG,GACR+4gC,EAAShP,EAAKzrgC,OACdo2jC,EAAiBjnjC,EAAKytiC,mBAAmB,wBAEzC8Q,GAAmBv+iC,EAAMs8/B,EAAK,MAChCA,EAAK,GAAK2qD,GAGR1I,GAAmBv+iC,EAAMs8/B,EAAK,MAChCA,EAAK,GAAK2qD,GAGZ,IAAI1n3B,EAAQv/L,EAAKsggC,WACbskF,EAAU5klC,EAAKuggC,kBAAkBjE,EAAK,IACtCuoF,EAAU7klC,EAAKuggC,kBAAkBjE,EAAK,IAC1C,OAAOgP,GAAU,CACf7H,SAAU,SAAU5q+B,EAAQ74B,GAM1B,IALA,IAAIgi+B,EAAWnp8B,EAAO5B,IAAM4B,EAAO7B,MAC/B8E,EAAS6ojC,GAAiB1gC,GAAmBjiF,EAAWspC,GACxDw5E,EAAQ,GACRC,EAAS,GAEJ3zlC,EAAIynC,EAAO7B,MAAO2b,EAAS,EAAGvhD,EAAIynC,EAAO5B,IAAK7lC,IAAK,CAC1D,IAAIu0I,OAAQ,EAEZ,GAAe,IAAX2l4B,EAAc,CAChB,IAAI72gC,EAAI8qM,EAAM5rM,IAAIixlC,EAASxzlC,GAE3Bu0I,EAAQ+t2B,EAASy0E,YAAY1zjC,EAAG,KAAMswlC,EACxC,MACED,EAAM,GAAKvl5B,EAAM5rM,IAAIixlC,EAASxzlC,GAC9B0zlC,EAAM,GAAKvl5B,EAAM5rM,IAAIkxlC,EAASzzlC,GAE9Bu0I,EAAQ+t2B,EAASy0E,YAAY28B,EAAO,KAAMC,GAGxCJ,GACF7ojC,EAAO6W,KAAYgzF,EAAM,GACzB7pG,EAAO6W,KAAYgzF,EAAM,IAEzB3lI,EAAKq5iC,cAAcjojC,EAAGu0I,EAAMpzI,QAEhC,CAEAoylC,GAAiB3klC,EAAKk5iC,UAAU,SAAUp9gC,EAC5C,EAjDF,CAmDF,EAEJ,CCpEA,IAAI0kN,GAAW,CACbsoJ,QAAS,SAAUxhW,GAIjB,IAHA,IAAIg4D,EAAM,EACNvlD,EAAQ,EAEH3oD,EAAI,EAAGA,EAAIk2C,EAAMz2C,OAAQO,IAC3B0rC,MAAMwK,EAAMl2C,MACfkuG,GAAOh4D,EAAMl2C,GACb2oD,KAKJ,OAAiB,IAAVA,EAAcqysB,IAAM9spB,EAAMvlD,CACnC,EACAulD,IAAK,SAAUh4D,GAGb,IAFA,IAAIg4D,EAAM,EAEDluG,EAAI,EAAGA,EAAIk2C,EAAMz2C,OAAQO,IAEhCkuG,GAAOh4D,EAAMl2C,IAAM,EAGrB,OAAOkuG,CACT,EACAnhG,IAAK,SAAUmpC,GAGb,IAFA,IAAInpC,GAAM,IAED/M,EAAI,EAAGA,EAAIk2C,EAAMz2C,OAAQO,IAChCk2C,EAAMl2C,GAAK+M,IAAQA,EAAMmpC,EAAMl2C,IAIjC,OAAO8mC,SAAS/5B,GAAOA,EAAMiuvB,GAC/B,EACA/tvB,IAAK,SAAUipC,GAGb,IAFA,IAAIjpC,EAAMkyD,IAEDn/D,EAAI,EAAGA,EAAIk2C,EAAMz2C,OAAQO,IAChCk2C,EAAMl2C,GAAKiN,IAAQA,EAAMipC,EAAMl2C,IAIjC,OAAO8mC,SAAS75B,GAAOA,EAAM+tvB,GAC/B,EAGA44V,QAAS,SAAU19iC,GACjB,OAAOA,EAAM,EACf,GAGE29iC,GAAe,SAAU39iC,GAC3B,OAAOj0C,KAAKogD,MAAMnM,EAAMz2C,OAAS,EACnC,EAEe,SAASq0lC,GAAWj4Q,GACjC,MAAO,CACLA,WAAYA,EAGZx7wB,MAAO,SAAU+h7B,EAAa1f,EAASr07B,GACrC,IAAIz/B,EAAOwz+B,EAAYx+2B,UACnBog9B,EAAW5hG,EAAY7/+B,IAAI,YAC3B+/+B,EAAWF,EAAYjx3B,iBACvBxoE,EAAQ/5C,EAAK+5C,QAEjB,GAAIA,EAAQ,IAAwB,gBAAlB257B,EAAS32+B,MAA0Bq4kC,EAAU,CAC7D,IAAIzwB,EAAWjxE,EAASgmC,cACpBmZ,EAAYn/C,EAASkzE,aAAajC,GAClC5p5B,EAAS4p5B,EAAS3E,YAClBhgG,EAAMvg7B,EAAI4pS,sBAEVj0T,EAAO/hB,KAAKmjH,IAAIukD,EAAO,GAAKA,EAAO,KAAOilzB,GAAO,GACjD9jqB,EAAO7oT,KAAKogD,MAAMsG,EAAQ3kC,GAE9B,GAAI8iB,SAASgkR,IAASA,EAAO,EAAG,CACb,SAAbk5xB,GACF5hG,EAAYlk3B,QAAQtvH,EAAK0tgC,eAAe1tgC,EAAK42iC,aAAa/jB,EAAU1qsB,KAAM,EAAIjsC,IAGhF,IAAIn1L,OAAU,EAEVv7D,GAAS4phC,GACXru9B,EAAUy5H,GAAS401B,GACV5/0B,GAAW4/0B,KACpBru9B,EAAUqu9B,GAGRru9B,GAEFys3B,EAAYlk3B,QAAQtvH,EAAK2ugC,WAAW3ugC,EAAK42iC,aAAa/jB,EAAU1qsB,KAAM,EAAIjsC,EAAMn1L,EAASk+9B,IAE7F,CACF,CACF,EAEJ,CC7FA,IAAIE,GAEJ,SAAUjsuB,GAGR,SAASisuB,IACP,IAAIjoiC,EAAmB,OAAXg8T,GAAmBA,EAAOnoX,MAAMP,KAAMI,YAAcJ,KAGhE,OADA0sD,EAAMngD,KAAOoolC,EAAmBpolC,KACzBmgD,CACT,CAoHA,OA3HAkgX,EAAU+nrB,EAAoBjsuB,GAS9BisuB,EAAmBj1lC,UAAUyohC,eAAiB,SAAUtq9B,EAAQyl6B,GAC9D,OAAO,GAAiB,KAAMtj+B,KAAM,CAClC0ujC,oBAAoB,GAExB,EAEAimC,EAAmBj1lC,UAAUk1lC,kBAAoB,SAAUzzlC,EAAO2qgC,EAAM+oF,GACtE,IAAI3xG,EAAWlj/B,KAAK+xH,iBAEpB,GAAImx3B,GAAYA,EAAS4xG,UAAW,CAElC,IAAIC,EAAc7xG,EAAS4xG,UAAU3zlC,GACjC6zlC,EAAO9xG,EAASy0E,YAAYo9B,GAEhC,GAAIF,EACF,EAAK3xG,EAAS5mI,WAAW,SAAU7xqB,EAAMqwK,GAEvC,GAAkB,aAAdrwK,EAAKl+L,MAA+B,MAARu//B,EAAc,CAC5C,IAAImpF,EAAaxq5B,EAAKo63B,iBAClBqwB,EAAeH,EAAYj6uB,GAE3ByuX,EAAsB,OAAduiS,EAAKhxpB,IAA+B,OAAdgxpB,EAAKhxpB,GASvC,GAPIyuX,IACF2rX,GAAgB,GAMdD,EAAW50lC,OAAS,EACtB,OACK,GAA0B,IAAtB40lC,EAAW50lC,OAKpB,YADA20lC,EAAKl6uB,GAAOrwK,EAAKms3B,cAAcns3B,EAAK+k3B,YAAYjmV,EAAQ,EAAI,KAQ9D,IAJA,IAAI4rX,OAAY,EACZl27B,OAAQ,EACRm27B,EAAgB,EAEXx0lC,EAAI,EAAGA,EAAIq0lC,EAAW50lC,OAAQO,IAAK,CAC1C,IAAIy0lC,EAAYJ,EAAWr0lC,GAAGq+J,MAG1Bw75B,EAAY75jC,IAAMq0lC,EAAW50lC,OAAS,EAAI40lC,EAAWr0lC,EAAI,GAAG65jC,UAAY26B,EAAgBH,EAAWr0lC,GAAG65jC,UAE1G,GAAIA,IAAcy6B,EAAc,CAC9Bj27B,EAAQo27B,EACR,KACF,CAAO,GAAI56B,EAAYy6B,EACrBC,EAAYE,OACP,GAAiB,MAAbF,GAAqB16B,EAAYy6B,EAAc,CACxDj27B,GAASo27B,EAAYF,GAAa,EAClC,KACF,CAEU,IAANv0lC,IAGFw0lC,EAAgB36B,EAAYw6B,EAAW,GAAGx6B,UAE9C,CAEa,MAATx75B,IACGk27B,EAIMA,IAGTl27B,EAAQg27B,EAAWA,EAAW50lC,OAAS,GAAG4+J,OAJ1CA,EAAQg27B,EAAW,GAAGh27B,OAQ1B+17B,EAAKl6uB,GAAOrwK,EAAKms3B,cAAc335B,EACjC,CACF,QACK,CACL,IAAIzvJ,EAAOxP,KAAKwkI,UACZriF,EAAS3yC,EAAKm5iC,UAAU,UACxB/jiC,EAAOpV,EAAKm5iC,UAAU,QACtB2sC,EAAcpyG,EAASgmC,cAAcx/e,eAAiB,EAAI,EAC9DsrjB,EAAKM,IAAgBnziC,EAASv9B,EAAO,CACvC,CAEA,OAAOowkC,CACT,CAEA,MAAO,CAACp5V,IAAKA,IACf,EAEA+4V,EAAmBpolC,KAAO,sBAC1BoolC,EAAmB/zjB,cAAgB,CAEjCj7hB,EAAG,EACHosH,iBAAkB,cAClBuy9B,iBAAiB,EAKjBttB,aAAc,EACdu+B,YAAa,EAEbr9Q,OAAO,EACPs9Q,eAAgB,IAChBx8F,YAAa,IACby8F,qBAAsB,OAEjBd,CACT,CA7HA,CA6HEh3U,IAEFA,GAAY+oN,cAAciuH,IAC1B,YCpDA,GA5EA,SAAUjsuB,GAGR,SAASgtuB,IACP,IAAIhpiC,EAAmB,OAAXg8T,GAAmBA,EAAOnoX,MAAMP,KAAMI,YAAcJ,KAGhE,OADA0sD,EAAMngD,KAAOmplC,EAAenplC,KACrBmgD,CACT,CAiEA,OAxEAkgX,EAAU8orB,EAAgBhtuB,GAS1BgtuB,EAAeh2lC,UAAUyohC,eAAiB,WACxC,OAAO,GAAiB,KAAMnohC,KAAM,CAClC0ujC,oBAAoB,EACpBrJ,wBAAyBrljC,KAAKmD,IAAI,gBAAgB,IAAS,MAE/D,EAMAuylC,EAAeh2lC,UAAU4phC,eAAiB,WAExC,QAAOtphC,KAAKmD,IAAI,UAAWnD,KAAKmD,IAAI,cACtC,EAMAuylC,EAAeh2lC,UAAU6phC,wBAA0B,WAEjD,IAAIxwB,EAAuB/4/B,KAAKmD,IAAI,wBAChCqylC,EAAiBx1lC,KAAKmD,IAAI,kBAM9B,OAJIqylC,EAAiBz8F,IACnBA,EAAuBy8F,GAGlBz8F,CACT,EAEA28F,EAAeh2lC,UAAUi2lC,cAAgB,SAAUtw7B,EAAW71J,EAAMyzkC,GAClE,OAAOA,EAAUvv/B,KAAKlkF,EAAKo5iC,cAAcvj5B,GAC3C,EAEAqw7B,EAAenplC,KAAO,aACtBmplC,EAAez57B,aAAe,CAAC,OAAQ,SACvCy57B,EAAe90jB,cAAgB6rd,GAAqBmpG,GAAmBh1jB,cAAe,CAGpFz1I,MAAM,EACN0qsB,UAAU,EACVC,gBAAgB,EAChB9qF,gBAAiB,CACfz94B,MAAO,2BACP+qP,YAAa,KACbk/nB,YAAa,EACbkT,WAAY,QACZ/xoB,aAAc,EACdqsa,WAAY,EACZn0pB,YAAa,KACbi0pB,cAAe,EACfC,cAAe,EACfn5oB,QAAS,GAEX4qI,OAAQ,CACN+tuB,UAAW,CACTjsoB,YAAa,YAGjBy9uB,cAAc,IAETL,CACT,CA1EA,CA0EEE,IC3EF,IAAII,GAGF,WACEh2lC,KAAK0gQ,GAAK,EACV1gQ,KAAKinW,GAAK,EACVjnW,KAAKsuW,GAAK,EACVtuW,KAAKD,EAAI,EACTC,KAAK6oxB,WAAa,EAClB7oxB,KAAK8oxB,SAAqB,EAAVjmxB,KAAKsmC,GACrBnpC,KAAK4kW,WAAY,CACnB,EAKEqxvB,GAEJ,SAAUvtuB,GAGR,SAASutuB,EAAY55iC,GACnB,IAAIqQ,EAAQg8T,EAAO9oX,KAAKI,KAAMq8C,IAASr8C,KAGvC,OADA0sD,EAAMngD,KAAO,UACNmgD,CACT,CA6CA,OApDAkgX,EAAUqprB,EAAavtuB,GASvButuB,EAAYv2lC,UAAUk0+B,gBAAkB,WACtC,OAAO,IAAIoiH,EACb,EAEAC,EAAYv2lC,UAAUg0+B,UAAY,SAAUp8vB,EAAKhV,GAC/C,IAAIo+B,EAAKp+B,EAAMo+B,GACXumG,EAAK3kI,EAAM2kI,GACXqH,EAAKzrW,KAAK8K,IAAI20N,EAAMgsI,IAAM,EAAG,GAC7BvuW,EAAI8C,KAAK8K,IAAI20N,EAAMviO,EAAG,GACtB4V,EAAgB,IAAV5V,EAAIuuW,GACV4nvB,EAAU5nvB,EAAK34V,EACfkzwB,EAAavmjB,EAAMumjB,WACnBC,EAAWxmjB,EAAMwmjB,SACjBlkb,EAAYtiI,EAAMsiI,UAClBp9C,EAAgB,EAAV3kT,KAAKsmC,GACXgtjC,EAAiBvxvB,EAAYkkb,EAAWD,EAAarhe,EAAMqhe,EAAaC,EAAWthe,EAElF2uyB,IAEHttU,EAAaC,GAAYlkb,EAAYp9C,GAAOA,IAG9C,IAAI4uyB,EAAavzlC,KAAKuxH,IAAIy0pB,GACtBwtU,EAAaxzlC,KAAK4wH,IAAIo1pB,GACtBytU,EAAWzzlC,KAAKuxH,IAAI00pB,GACpBytU,EAAW1zlC,KAAK4wH,IAAIq1pB,GAEpBqtU,GACF7+2B,EAAIyvhB,OAAOqvV,EAAa9nvB,EAAK5tG,EAAI211B,EAAa/nvB,EAAKrH,GACnD3vH,EAAI4yiB,IAAIksU,EAAaF,EAAUx11B,EAAI211B,EAAaH,EAAUjvvB,EAAItxV,GAAK9S,KAAKsmC,GAAK0/uB,EAAYA,GAAajkb,IAEtGttH,EAAIyvhB,OAAOqvV,EAAar2lC,EAAI2gQ,EAAI211B,EAAat2lC,EAAIknW,GAGnD3vH,EAAI4yiB,IAAIxphB,EAAIumG,EAAIlnW,EAAG8oxB,EAAYC,GAAWlkb,GAC1CttH,EAAI4yiB,IAAIosU,EAAWJ,EAAUx11B,EAAI611B,EAAWL,EAAUjvvB,EAAItxV,EAAImzwB,EAAqB,EAAVjmxB,KAAKsmC,GAAQ2/uB,EAAWjmxB,KAAKsmC,IAAKy7T,GAEhG,IAAP0J,GACFh3H,EAAI4yiB,IAAIxphB,EAAIumG,EAAIqH,EAAIw6a,EAAUD,EAAYjkb,EAG9C,EAEOqxvB,CACT,CAtDA,CAsDE,IAEF,YC8FA,SAASO,GAAqB7n3B,EAAO1lF,EAAUsglB,GAC7C,OAAOtglB,EAAWpmJ,KAAK4wH,IAAIk7G,IAAU46f,GAAS,EAAI,EACpD,CAEA,SAASktX,GAAqB9n3B,EAAO1lF,EAAUsglB,GAC7C,OAAOtglB,EAAWpmJ,KAAKuxH,IAAIu6G,IAAU46f,EAAQ,GAAK,EACpD,CClLO,SAASmtX,GAAsB3h+B,EAAOutG,EAAOq03B,GAClD,IAAInnE,EAAez65B,EAAM5xH,IAAI,gBAE7B,GAAoB,MAAhBqshC,EACF,OAAOmnE,EAAa,CAClBnnE,aAAc,GACZ,KAGD79gC,GAAQ69gC,KACXA,EAAe,CAACA,EAAcA,EAAcA,EAAcA,IAG5D,IAAI75gC,EAAK9S,KAAKmjH,IAAIs8G,EAAMviO,GAAK,EAAIuiO,EAAMgsI,IAAM,GAC7C,MAAO,CACLkhrB,aAAcnggC,EAAImggC,GAAc,SAAUn6gC,GACxC,OAAOw88B,GAAax88B,EAAIM,EAC1B,IAEJ,CCHA,IAAI,GAAU9S,KAAK8K,IACf,GAAU9K,KAAKgL,IA0Bf+olC,GAEJ,SAAUluuB,GAGR,SAASkuuB,IACP,IAAIlqiC,EAAQg8T,EAAO9oX,KAAKI,OAASA,KAIjC,OAFA0sD,EAAMngD,KAAOqqlC,EAAQrqlC,KACrBmgD,EAAMmqiC,eAAgB,EACfnqiC,CACT,CA6cA,OArdAkgX,EAAUgqrB,EAASluuB,GAUnBkuuB,EAAQl3lC,UAAU4uH,OAAS,SAAU003B,EAAa1f,EAASr07B,EAAKna,GAC9D90B,KAAKimuB,OAAS+8Q,EAEdhj/B,KAAK82lC,0BAA0B7njC,GAE/BjvC,KAAK+2lC,gBAAgB/zG,GAErB,IAAIg0G,EAAuBh0G,EAAY7/+B,IAAI,qBAEd,gBAAzB6zlC,GAAmE,UAAzBA,KAE5Ch3lC,KAAK2nlC,gBAAkB,KACvB3nlC,KAAKi3lC,aAAej3lC,KAAKk3lC,aAAal0G,EAAa1f,EAASr07B,GAAOjvC,KAAKm3lC,cAAcn0G,EAAa1f,EAASr07B,EAAKna,GAIrH,EAEA8hkC,EAAQl3lC,UAAU85hC,yBAA2B,SAAUx2C,GACrDhj/B,KAAKo3lC,SAELp3lC,KAAK+2lC,gBAAgB/zG,GAIrBhj/B,KAAKq3lC,iBAAiBr0G,EACxB,EAEA4zG,EAAQl3lC,UAAU+5hC,kBAAoB,SAAUpx/B,EAAQ268B,GAEtDhj/B,KAAK2nlC,gBAAkB,GAEvB3nlC,KAAKs3lC,wBAAwBjvjC,EAAQ268B,EACvC,EAEA4zG,EAAQl3lC,UAAUmshC,aAAe,SAAUnq9B,GACzCi39B,GAAiB34hC,KAAK2nlC,iBAAmB3nlC,KAAKo7T,MAAO15P,EACvD,EAEAk1hC,EAAQl3lC,UAAUq3lC,gBAAkB,SAAU/zG,GAC5C,IAAIu0G,EAAcv0G,EAAY+oC,gBAAgB7zM,MAErB,MAArBl40B,KAAKi3lC,cAAwBM,IAAgBv3lC,KAAKi3lC,eACpDj3lC,KAAKi3lC,aAAeM,EAEpBv3lC,KAAKo3lC,SAET,EAEAR,EAAQl3lC,UAAUy3lC,cAAgB,SAAUn0G,EAAa1f,EAASr07B,EAAKna,GACrE,IAKI07jC,EALAp1xB,EAAQp7T,KAAKo7T,MACb5rT,EAAOwz+B,EAAYx+2B,UACnBoub,EAAU5yjB,KAAKykJ,MACfwa,EAAQ+j1B,EAAYjx3B,iBACpBoi8B,EAAWl15B,EAAMiq3B,cAGF,gBAAfjq3B,EAAM1yJ,KACRiklC,EAAuBr8B,EAASzqhB,eACR,UAAfzqY,EAAM1yJ,OACfiklC,EAAwC,UAAjBr8B,EAASx8tB,KAGlC,IAAI6/vB,EAAiBx0G,EAAY8C,qBAAuB9C,EAAc,KAClEy0G,EA+fR,SAA4Bz0G,EAAaE,GACvC,IAAIw0G,EAAqB10G,EAAY7/+B,IAAI,gBAAgB,GACrDgxjC,EAAWjxE,EAASgmC,cAcxB,GAAIwuE,GAAwC,aAAlBvjC,EAAS5njC,MAAyC,gBAAlB22+B,EAAS32+B,KACjE,MAAO,CACL4njC,SAAUA,EACVwjC,UAAWz0G,EAASkzE,aAAajC,GAGvC,CArhB0ByjC,CAAmB50G,EAAa/j1B,GAElDw47B,GACFz3lC,KAAK63lC,oBAAoBJ,EAAiBjolC,EAAMy/B,GAGlD,IAAI6ojC,EAAY90G,EAAY7/+B,IAAI,QAAQ,IAASs0lC,EAC7CM,EA5GR,SAAqB947B,EAAOzvJ,GAC1B,IAAIuolC,EAAmB947B,EAAM6r7B,SAAW7r7B,EAAM6r7B,UAE9C,GAAIM,GAAuBns7B,EAAO,eAAgB,CAChD,IAAIk15B,EAAWl15B,EAAMiq3B,cAIrB,GAAsB,aAAlBirC,EAAS5njC,OAAwB4njC,EAASqQ,OAAQ,CACpD,IAAIwzB,EAAcxolC,EAAKm5iC,UAAU,aAE7BwL,EAASzqhB,gBACXqujB,EAAiB9zlC,GAAK+zlC,EACtBD,EAAiBh5jC,OAAuB,EAAdi5jC,IAE1BD,EAAiB/0lC,GAAKg1lC,EACtBD,EAAiB/4jC,QAAwB,EAAdg5jC,EAE/B,CACF,CAEA,OAAOD,CACT,CAsF2BE,CAAYh57B,EAAOzvJ,GAE1C4rT,EAAM28pB,iBAGN,IAAI89H,EAAW7yG,EAAY7/+B,IAAI,YAAY,GACvCozjC,EAAiBvzE,EAAY7/+B,IAAI,kBAAkB,GACnD+0lC,EAAkBl1G,EAAYprzB,SAAS,mBACvCug6B,EAAkBD,EAAgB/0lC,IAAI,iBAAmB,EACzDi1lC,EAAQ,GACRC,EAAWr4lC,KAAKs4lC,eAChBC,EAAazjkC,GAAWA,EAAQyjkC,WAChCC,EAAgB1jkC,GAA4B,oBAAjBA,EAAQvoB,KAEvC,SAASkslC,EAAiBpz7B,GACxB,IAAIqz7B,EAAW/vC,GAAU1p5B,EAAM1yJ,MAAMiD,EAAM61J,GACvC0+6B,EA80BV,SAA4B9k7B,EAAOux7B,EAAsBtv9B,GAEvD,OAAO,IADyB,UAAf+9B,EAAM1yJ,KAAmB,GAAS,IAC7B,CACpB+1N,MAAOq23B,GAAsBnI,EAAsBtv9B,EAAQ+9B,GAC3Dm1U,QAAQ,EACRr3S,GAAI,GAER,CAr1BiB675B,CAAmB357B,EAAOux7B,EAAsBkI,GAU3D,OATA3U,EAAK35rB,SAAS8tsB,EAAgBnsG,gBAEX,gBAAf9s1B,EAAM1yJ,KACRw3kC,EAAKn9rB,SAAS,IAAKuxsB,GAEnBpU,EAAKn9rB,SAAS,eAAgBuxsB,GAGhCC,EAAM/y7B,GAAa0+6B,EACZA,CACT,CAGAv0kC,EAAK+4hB,KAAKqqB,GAASztiB,KAAI,SAAUkgJ,GAC/B,IAAIq/0B,EAAYl1+B,EAAKqhgC,aAAaxr2B,GAC9BnkC,EAASyn7B,GAAU1p5B,EAAM1yJ,MAAMiD,EAAM61J,EAAWq/0B,GAOpD,GALI6xE,GACFkiC,EAAiBpz7B,GAId71J,EAAKkgjB,SAASrqZ,IAAewz7B,GAAc557B,EAAM1yJ,MAAM20H,GAA5D,CAIA,IAAI439B,GAAY,EAEZhB,IAGFgB,EAAY3tsB,GAAKlsP,EAAM1yJ,MAAMwrlC,EAAkB729B,IAGjD,IAAI2Y,EAAKk/8B,GAAe957B,EAAM1yJ,MAAMy2+B,EAAaxz+B,EAAM61J,EAAWnkC,EAAQsv9B,EAAsBgH,EAAgBrjC,EAASp/7B,OAAO,EAAO8g+B,GAEnI4B,IASF598B,EAAGm17B,qBAAsB,GAG3BgqB,GAAYn/8B,EAAIrqI,EAAM61J,EAAWq/0B,EAAWxj3B,EAAQ8h3B,EAAawtG,EAAqC,UAAfvx7B,EAAM1yJ,MAEzFgslC,EACF1+8B,EAAGo0Y,KAAK,CACN3rT,MAAOphG,IAEAu29B,EACTwB,GAAwBxB,EAAiBD,EAAgB398B,EAAI3Y,EAAQmkC,EAAWmr7B,GAAsB,GAAO,GAE7GjqG,GAAU1s2B,EAAI,CACZyoF,MAAOphG,GACN8h3B,EAAa390B,GAGlB71J,EAAKu5iC,iBAAiB1j5B,EAAWxrB,GACjCuhL,EAAMj2S,IAAI00H,GACVA,EAAG1xG,OAAS2wjC,CAxCZ,CAyCF,IAAGvqhC,QAAO,SAAUs6O,EAAU4kN,GAC5B,IAAIi3e,EAAYl1+B,EAAKqhgC,aAAahotB,GAC9B3nL,EAASyn7B,GAAU1p5B,EAAM1yJ,MAAMiD,EAAMq5S,EAAU67rB,GAEnD,GAAI6xE,EAAgB,CAClB,IAAIwtB,OAAO,EAEa,IAApBsU,EAASh4lC,OACX0jlC,EAAO0U,EAAiBhrlB,KAExBs2kB,EAAOsU,EAAS5qlB,IACXrjH,SAAS8tsB,EAAgBnsG,gBAEX,gBAAf9s1B,EAAM1yJ,KACRw3kC,EAAKn9rB,SAAS,IAAKuxsB,GAEnBpU,EAAKn9rB,SAAS,eAAgBuxsB,GAGhCC,EAAMvvyB,GAAYk7xB,GAGpB,IAAI2U,EAAW/vC,GAAU1p5B,EAAM1yJ,MAAMiD,EAAMq5S,GAE3Cy9rB,GAAYy9F,EAAM,CAChBzh3B,MAFUq23B,GAAsBnI,EAAsBkI,EAAUz57B,IAG/Du47B,EAAgB3uyB,EACrB,CAEA,IAAIhvK,EAAK+4a,EAAQ8vb,iBAAiBj1e,GAElC,GAAKj+f,EAAKkgjB,SAAS7mQ,IAAcgwyB,GAAc557B,EAAM1yJ,MAAM20H,GAA3D,CAKA,IAAI439B,GAAY,EAoBhB,GAlBIhB,IACFgB,EAAY3tsB,GAAKlsP,EAAM1yJ,MAAMwrlC,EAAkB729B,KAG7Ck6L,EAAMvoS,OAAOgnH,GAIZA,EAGH+s2B,GAAa/s2B,GAFbA,EAAKk/8B,GAAe957B,EAAM1yJ,MAAMy2+B,EAAaxz+B,EAAMq5S,EAAU3nL,EAAQsv9B,EAAsBgH,EAAgBrjC,EAASp/7B,QAAS8kB,EAAIg88B,GAK/H4B,IACF598B,EAAGm17B,qBAAsB,GAGvBwpB,EAAe,CACjB,IAAIt9I,EAASrh0B,EAAGltD,iBAEhB,GAAIuu3B,EAAQ,CACV,IAAIiwC,EAAkB1C,GAAWvtC,GAEA,MAA7BiwC,EAAgBL,YAOlBK,EAAgBL,UAAYK,EAAgBhq/B,MAEhD,CACF,MAGI63lC,GAAYn/8B,EAAIrqI,EAAMq5S,EAAU67rB,EAAWxj3B,EAAQ8h3B,EAAawtG,EAAqC,UAAfvx7B,EAAM1yJ,MAG5FgslC,EACF1+8B,EAAGo0Y,KAAK,CACN3rT,MAAOphG,IAEAu29B,EACTwB,GAAwBxB,EAAiBD,EAAgB398B,EAAI3Y,EAAQ2nL,EAAU2nyB,GAAsB,EAAMgI,GAE3GlyG,GAAYzs2B,EAAI,CACdyoF,MAAOphG,GACN8h3B,EAAan6rB,EAAU,MAG5Br5S,EAAKu5iC,iBAAiBlgwB,EAAUhvK,GAChCA,EAAG1xG,OAAS2wjC,EACZ19xB,EAAMj2S,IAAI00H,EA1DV,MAFEuhL,EAAMvoS,OAAOgnH,EA6DjB,IAAGhnH,QAAO,SAAUwyI,GAClB,IAAIxrB,EAAK+4a,EAAQ8vb,iBAAiBr90B,GAClCxrB,GAAM6s2B,GAAyB7s2B,EAAImp2B,EAAa390B,EAClD,IAAG08O,UACH,IAAIm3sB,EAAUl5lC,KAAKm5lC,mBAAqBn5lC,KAAKm5lC,iBAAmB,IAAI,IACpED,EAAQrr2B,YAER,IAAK,IAAIjtP,EAAI,EAAGA,EAAIw3lC,EAAM/3lC,SAAUO,EAClCs4lC,EAAQ/zkC,IAAIizkC,EAAMx3lC,IAGpBw6T,EAAMj2S,IAAI+zkC,GACVl5lC,KAAKs4lC,eAAiBF,EACtBp4lC,KAAKykJ,MAAQj1I,CACf,EAEAonlC,EAAQl3lC,UAAUw3lC,aAAe,SAAUl0G,EAAa1f,EAASr07B,GAC/DjvC,KAAKo3lC,SAELgC,GAAYp2G,EAAahj/B,KAAKo7T,OAE9Bp7T,KAAKq3lC,iBAAiBr0G,EACxB,EAEA4zG,EAAQl3lC,UAAU43lC,wBAA0B,SAAUjvjC,EAAQ268B,GAC5Dhj/B,KAAKq5lC,oBAELD,GAAYp2G,EAAahj/B,KAAKo7T,MAAOp7T,KAAK2nlC,iBAAiB,EAC7D,EAEAiP,EAAQl3lC,UAAU23lC,iBAAmB,SAAUr0G,GAE7C,IAAIv3N,EAAWu3N,EAAY7/+B,IAAI,QAAQ,IAASgolC,GAAenoG,EAAYjx3B,kBAAkB,EAAOix3B,GAChG5nrB,EAAQp7T,KAAKo7T,MAEbqwd,EACFrwd,EAAMw5pB,YAAYnpM,GAElBrwd,EAAM28pB,gBAEV,EAEA6+H,EAAQl3lC,UAAUm4lC,oBAAsB,SAAUJ,EAAiBjolC,EAAMy/B,GACvE,IAAIyd,EAAQ1sD,KAGZ,GAAKwP,EAAK+5C,QAAV,CAIA,IAAI4qgC,EAAWsjC,EAAgBtjC,SAE/B,GAAIn0jC,KAAK62lC,cACP72lC,KAAKs5lC,kBAAkB9plC,EAAMiolC,EAAiBxojC,GAE9CjvC,KAAK62lC,eAAgB,MAChB,CACL,IAAI0C,EAAiB,SAAUz+uB,GAC7B,IAAIjhO,EAAKrqI,EAAKkz+B,iBAAiB5noB,GAC3Bx4I,EAAQzoF,GAAMA,EAAGyoF,MACrB,OAAOA,GAEPz/N,KAAKmjH,IAAImu8B,EAASzqhB,eAAiBpnU,EAAMtjM,OAASsjM,EAAMvjM,QACrD,CACL,EAEA/+B,KAAKw5lC,YAAc,WACjB9siC,EAAM+siC,0BAA0BjqlC,EAAM+plC,EAAgBplC,EAAUllhC,EAClE,EAEAA,EAAIk9/B,QAAQv7hC,GAAG,WAAY5Q,KAAKw5lC,YAClC,CAvBA,CAwBF,EAEA5C,EAAQl3lC,UAAUg6lC,UAAY,SAAUlqlC,EAAM2kjC,EAAUwlC,GACtD,IAAInijC,EAAO,GAcX,OAbAhoC,EAAKwywB,KAAKxywB,EAAK42iC,aAAa+N,EAASx8tB,MAAM,SAAU07lB,EAAe5jK,GAClE,IAAImqU,EAAcD,EAAalqU,GAC/BmqU,EAA6B,MAAfA,EAAsBh+V,IAAMg+V,EAC1CpijC,EAAK31C,KAAK,CACRwjK,UAAWoqnB,EACXmqU,YAAaA,EACbvmK,cAAeA,GAEnB,IACA774B,EAAKjL,MAAK,SAAUvrC,EAAGsC,GAErB,OAAOA,EAAEs2lC,YAAc54lC,EAAE44lC,WAC3B,IACO,CACLxoC,eAAgB/hiC,EAAImoB,GAAM,SAAU4J,GAClC,OAAOA,EAAKiy4B,aACd,IAEJ,EAEAujK,EAAQl3lC,UAAUm6lC,8BAAgC,SAAUrqlC,EAAMmqlC,EAAcxlC,GAK9E,IAJA,IAAIry9B,EAAQqy9B,EAASry9B,MACjBg4/B,EAAiBtqlC,EAAK42iC,aAAa+N,EAASx8tB,KAC5ClpM,EAAYtpH,OAAO+lJ,UAEdum4B,EAAU,EAAG5y7B,EAAM/8B,EAAM646B,iBAAiB3xJ,WAAW3o3B,OAAQoxjC,EAAU5y7B,IAAO4y7B,EAAS,CAC9F,IAAIl2C,EAAS/rgC,EAAKk9/B,WAAWotF,EAAgBh4/B,EAAMiv9B,oBAAoBU,IACnEtwjC,EAAQo6gC,EAAS,EACnBp2+B,OAAO8oL,UACP0r4B,EAAanqlC,EAAKwz9B,gBAAgBu4C,IAEpC,GAAIp6gC,EAAQstJ,EACV,OAAO,EAGTA,EAAYttJ,CACd,CAEA,OAAO,CACT,EAQAy1lC,EAAQl3lC,UAAUq6lC,wBAA0B,SAAUC,EAAW7lC,GAM/D,IALA,IAAIry9B,EAAQqy9B,EAASry9B,MACjByoE,EAASzoE,EAAM0t9B,YACfiC,EAAU5ujC,KAAK8K,IAAI,EAAG48J,EAAO,IAC7BgioB,EAAU1pyB,KAAKgL,IAAI08J,EAAO,GAAIzoE,EAAM646B,iBAAiB3xJ,WAAW3o3B,OAAS,GAEtEoxjC,GAAWllR,IAAWklR,EAC3B,GAAIuoC,EAAU5oC,eAAeK,KAAa3v9B,EAAMiv9B,oBAAoBU,GAClE,OAAO,CAGb,EAEAmlC,EAAQl3lC,UAAU+5lC,0BAA4B,SAAUjqlC,EAAMmqlC,EAAcxlC,EAAUllhC,GACpF,GAAKjvC,KAAK65lC,8BAA8BrqlC,EAAMmqlC,EAAcxlC,GAA5D,CAIA,IAAI8lC,EAAWj6lC,KAAK05lC,UAAUlqlC,EAAM2kjC,EAAUwlC,GAE1C35lC,KAAK+5lC,wBAAwBE,EAAU9lC,KACzCn0jC,KAAK82lC,0BAA0B7njC,GAE/BA,EAAIu1/B,eAAe,CACjBj4hC,KAAM,kBACN2vM,cAAei42B,EAASx8tB,IAAM,OAC9Bs6c,OAAQkiR,EAASn3iC,MACjBi9kC,SAAUA,IAXd,CAcF,EAEArD,EAAQl3lC,UAAU45lC,kBAAoB,SAAU9plC,EAAMiolC,EAAiBxojC,GACrE,IAAIklhC,EAAWsjC,EAAgBtjC,SAE3B+lC,EAAal6lC,KAAK05lC,UAAUlqlC,EAAM2kjC,GAAU,SAAU1kS,GACxD,OAAOjgxB,EAAKrM,IAAIqM,EAAK42iC,aAAaqxC,EAAgBE,UAAUhgwB,KAAM83b,EACpE,IAEAxgvB,EAAIu1/B,eAAe,CACjBj4hC,KAAM,kBACN2vM,cAAei42B,EAASx8tB,IAAM,OAC9B4gwB,YAAY,EACZtmT,OAAQkiR,EAASn3iC,MACjBi9kC,SAAUC,GAEd,EAEAtD,EAAQl3lC,UAAUmzB,OAAS,SAAUyw8B,EAASr07B,GAC5CjvC,KAAKo3lC,OAAOp3lC,KAAKimuB,QAEjBjmuB,KAAK82lC,0BAA0B7njC,EACjC,EAEA2njC,EAAQl3lC,UAAU2l8B,QAAU,SAAUi+B,EAASr07B,GAC7CjvC,KAAK82lC,0BAA0B7njC,EACjC,EAEA2njC,EAAQl3lC,UAAUo3lC,0BAA4B,SAAU7njC,GAClDjvC,KAAKw5lC,cACPvqjC,EAAIk9/B,QAAQn+/B,IAAI,WAAYhuC,KAAKw5lC,aACjCx5lC,KAAKw5lC,YAAc,KAEvB,EAEA5C,EAAQl3lC,UAAU03lC,OAAS,SAAUri+B,GACnC,IAAIqmM,EAAQp7T,KAAKo7T,MACb5rT,EAAOxP,KAAKykJ,MAEZ1vB,GAASA,EAAM+w3B,sBAAwBt2+B,IAASxP,KAAKi3lC,cACvDj3lC,KAAKq5lC,oBAELr5lC,KAAKs4lC,eAAiB,GACtB9olC,EAAKq0+B,mBAAkB,SAAUhq2B,GAC/B6s2B,GAAyB7s2B,EAAI9kB,EAAOio3B,GAAUnj2B,GAAIwrB,UACpD,KAEA+1J,EAAMvtE,YAGR7tP,KAAKykJ,MAAQ,KACbzkJ,KAAK62lC,eAAgB,CACvB,EAEAD,EAAQl3lC,UAAU25lC,kBAAoB,WACpCr5lC,KAAKo7T,MAAMvoS,OAAO7yB,KAAKm5lC,kBACvBn5lC,KAAKm5lC,iBAAmB,IAC1B,EAEAvC,EAAQrqlC,KAAO,MACRqqlC,CACT,CAvdA,CAudE5zS,IAEE73Z,GAAO,CACT+gqB,YAAa,SAAUiuC,EAAsBj59B,GAC3C,IAAIk59B,EAAYl59B,EAAOniG,MAAQ,GAAK,EAAI,EACpCs7jC,EAAan59B,EAAOliG,OAAS,GAAK,EAAI,EAEtCo7jC,EAAY,IACdl59B,EAAOj9H,GAAKi9H,EAAOniG,MACnBmiG,EAAOniG,OAASmiG,EAAOniG,OAGrBs7jC,EAAa,IACfn59B,EAAOl+H,GAAKk+H,EAAOliG,OACnBkiG,EAAOliG,QAAUkiG,EAAOliG,QAG1B,IAAIs7jC,EAAaH,EAAqBl2lC,EAAIk2lC,EAAqBp7jC,MAC3Dw7jC,EAAaJ,EAAqBn3lC,EAAIm3lC,EAAqBn7jC,OAC3D/6B,EAAI,GAAQi9H,EAAOj9H,EAAGk2lC,EAAqBl2lC,GAC3C64L,EAAK,GAAQ57D,EAAOj9H,EAAIi9H,EAAOniG,MAAOu7jC,GACtCt3lC,EAAI,GAAQk+H,EAAOl+H,EAAGm3lC,EAAqBn3lC,GAC3Cy0H,EAAK,GAAQyJ,EAAOl+H,EAAIk+H,EAAOliG,OAAQu7jC,GACvCC,EAAW195B,EAAK74L,EAChBw2lC,EAAWhj+B,EAAKz0H,EAoBpB,OAfAk+H,EAAOj9H,EAAIu2lC,GAAYv2lC,EAAIq2lC,EAAax95B,EAAK74L,EAC7Ci9H,EAAOl+H,EAAIy3lC,GAAYz3lC,EAAIu3lC,EAAa9i+B,EAAKz0H,EAC7Ck+H,EAAOniG,MAAQy7jC,EAAW,EAAI195B,EAAK74L,EACnCi9H,EAAOliG,OAASy7jC,EAAW,EAAIhj+B,EAAKz0H,EAEhCo3lC,EAAY,IACdl59B,EAAOj9H,GAAKi9H,EAAOniG,MACnBmiG,EAAOniG,OAASmiG,EAAOniG,OAGrBs7jC,EAAa,IACfn59B,EAAOl+H,GAAKk+H,EAAOliG,OACnBkiG,EAAOliG,QAAUkiG,EAAOliG,QAGnBw7jC,GAAYC,CACrB,EACA/8Q,MAAO,SAAUq6Q,EAAkB729B,GACjC,IAAIw59B,EAAQx59B,EAAOotO,IAAMptO,EAAOnhI,EAAI,GAAK,EAEzC,GAAI26lC,EAAQ,EAAG,CACb,IAAI92vB,EAAM1iO,EAAOnhI,EACjBmhI,EAAOnhI,EAAImhI,EAAOotO,GAClBptO,EAAOotO,GAAK1K,CACd,CAEA,IAAI7jW,EAAI,GAAQmhI,EAAOnhI,EAAGg4lC,EAAiBh4lC,GACvCuuW,EAAK,GAAQptO,EAAOotO,GAAIypvB,EAAiBzpvB,IAC7CptO,EAAOnhI,EAAIA,EACXmhI,EAAOotO,GAAKA,EACZ,IAAIqiH,EAAU5wd,EAAIuuW,EAAK,EAQvB,OANIosvB,EAAQ,IACN92vB,EAAM1iO,EAAOnhI,EACjBmhI,EAAOnhI,EAAImhI,EAAOotO,GAClBptO,EAAOotO,GAAK1K,GAGP+sH,CACT,GAEEoooB,GAAiB,CACnB7sC,YAAa,SAAUlpE,EAAaxz+B,EAAMq5S,EAAU3nL,EAAQwoa,EAAc8tjB,EAAgBxqC,EAAWnnE,EAAUgwG,GAC7G,IAAInigC,EAAO,IAAI,GAAK,CAClB4uI,MAAO+mL,EAAO,CAAC,EAAGnoR,GAClB67D,GAAI,IAWN,OATArpG,EAAKingC,YAAc9xyB,EACnBn1N,EAAKhpF,KAAO,OAER8slC,IACc9jgC,EAAK4uI,MACConU,EAAe,SAAW,SACnB,GAGxBh2c,CACT,EACAgqvB,MAAO,SAAUslK,EAAaxz+B,EAAMq5S,EAAU3nL,EAAQ059B,EAAUpD,EAAgBxqC,EAAWnnE,EAAUgwG,GACnG,IAAIrgE,GAAcolE,GAAY/E,EAAW,GAAU,GAC/CppR,EAAS,IAAI+oN,EAAW,CAC1BlzzB,MAAOphG,EACP67D,GAAI,IAEN0voB,EAAO/h0B,KAAO,OACd,IFlmB8CmwlC,EAE5CC,EEgmBEC,EAAcC,GAA2BJ,GAK7C,GAJAnuR,EAAOqlJ,uBFnmBuC+oI,EEmmBmBE,EFjmB/DD,GEimB4E,CAC5EA,WAAYtlE,IAAe,KFnmBhB,CAAC,GACMslE,WACf,SAAU569B,EAAK7jF,EAAM05+B,GAC1B,IAAIhkE,EAAe116B,EAAK1d,SAExB,IAAKoz7B,GAAgBA,aAAwBty9B,MAC3C,OAAOqy9B,GAAsB5x1B,EAAK7jF,EAAM05+B,GAG1C,IAAIklE,EAAuBJ,EAAgB9oI,GACvC9o0B,EAA4B,MAAjB5sG,EAAK4sG,SAAmB5sG,EAAK4sG,SAAW,EACnDwjrB,EAASzs0B,KAAKsiO,MACdo+B,EAAK+rkB,EAAO/rkB,GACZumG,EAAKwle,EAAOxle,GACZlnW,EAAI0s0B,EAAO1s0B,EACXuuW,EAAKm+d,EAAOn+d,GACZ4svB,GAAWn7lC,EAAIuuW,GAAM,EACrBu6a,EAAa4jD,EAAO5jD,WACpBC,EAAW2jD,EAAO3jD,SAClBqyU,GAAetyU,EAAaC,GAAY,EACxCsyU,EAAYN,EAAaj4lC,KAAKmjH,IAAIjmH,EAAIuuW,GAAM,EAAI,EAChDs/nB,EAAU/q+B,KAAKuxH,IACfu52B,EAAU9q+B,KAAK4wH,IAEfxvH,EAAIy8P,EAAK3gQ,EAAI6t+B,EAAQ/kN,GACrB7lxB,EAAIikW,EAAKlnW,EAAI4t+B,EAAQ9kN,GACrB7jiB,EAAY,OACZituB,EAAoB,MAExB,OAAQgpI,GACN,IAAK,WACHh3lC,EAAIy8P,GAAM4tG,EAAKrlN,GAAY2k1B,EAAQutH,GACnCn4lC,EAAIikW,GAAMqH,EAAKrlN,GAAY0k1B,EAAQwtH,GACnCn22B,EAAY,SACZituB,EAAoB,MACpB,MAEF,IAAK,iBACHhu9B,EAAIy8P,GAAM4tG,EAAKrlN,GAAY2k1B,EAAQutH,GACnCn4lC,EAAIikW,GAAMqH,EAAKrlN,GAAY0k1B,EAAQwtH,GACnCn22B,EAAY,SACZituB,EAAoB,SACpB,MAEF,IAAK,aACHhu9B,EAAIy8P,EAAKw61B,EAAUttH,EAAQ/kN,GAAc2tU,GAAqB3tU,EAAY5/nB,EAAWmy8B,GAAW,GAChGp4lC,EAAIikW,EAAKi0vB,EAAUvtH,EAAQ9kN,GAAc4tU,GAAqB5tU,EAAY5/nB,EAAWmy8B,GAAW,GAChGp22B,EAAY,QACZituB,EAAoB,SACpB,MAEF,IAAK,mBACHhu9B,EAAIy8P,EAAKw61B,EAAUttH,EAAQ/kN,GAAc2tU,GAAqB3tU,GAAa5/nB,EAAWmy8B,GAAW,GACjGp4lC,EAAIikW,EAAKi0vB,EAAUvtH,EAAQ9kN,GAAc4tU,GAAqB5tU,GAAa5/nB,EAAWmy8B,GAAW,GACjGp22B,EAAY,OACZituB,EAAoB,SACpB,MAEF,IAAK,SACHhu9B,EAAIy8P,EAAKw61B,EAAUttH,EAAQutH,GAC3Bn4lC,EAAIikW,EAAKi0vB,EAAUvtH,EAAQwtH,GAC3Bn22B,EAAY,SACZituB,EAAoB,SACpB,MAEF,IAAK,SACHhu9B,EAAIy8P,GAAM3gQ,EAAIkpJ,GAAY2k1B,EAAQutH,GAClCn4lC,EAAIikW,GAAMlnW,EAAIkpJ,GAAY0k1B,EAAQwtH,GAClCn22B,EAAY,SACZituB,EAAoB,SACpB,MAEF,IAAK,eACHhu9B,EAAIy8P,GAAM3gQ,EAAIkpJ,GAAY2k1B,EAAQutH,GAClCn4lC,EAAIikW,GAAMlnW,EAAIkpJ,GAAY0k1B,EAAQwtH,GAClCn22B,EAAY,SACZituB,EAAoB,MACpB,MAEF,IAAK,WACHhu9B,EAAIy8P,EAAKw61B,EAAUttH,EAAQ9kN,GAAY0tU,GAAqB1tU,EAAU7/nB,EAAWmy8B,GAAW,GAC5Fp4lC,EAAIikW,EAAKi0vB,EAAUvtH,EAAQ7kN,GAAY2tU,GAAqB3tU,EAAU7/nB,EAAWmy8B,GAAW,GAC5Fp22B,EAAY,OACZituB,EAAoB,SACpB,MAEF,IAAK,iBACHhu9B,EAAIy8P,EAAKw61B,EAAUttH,EAAQ9kN,GAAY0tU,GAAqB1tU,GAAW7/nB,EAAWmy8B,GAAW,GAC7Fp4lC,EAAIikW,EAAKi0vB,EAAUvtH,EAAQ7kN,GAAY2tU,GAAqB3tU,GAAW7/nB,EAAWmy8B,GAAW,GAC7Fp22B,EAAY,QACZituB,EAAoB,SACpB,MAEF,QACE,OAAOH,GAAsB5x1B,EAAK7jF,EAAM05+B,GAQ5C,OALA715B,EAAMA,GAAO,CAAC,GACVj8H,EAAIA,EACRi8H,EAAIl9H,EAAIA,EACRk9H,EAAIqkpB,MAAQv/hB,EACZ9kH,EAAIizmB,cAAgB8+O,EACb/x1B,CACT,GE+fMs39B,EAAgB,CAClB,IACI6D,EAAkBT,EAAW,IAAM,WACnCU,EAAgB,CAAC,EAFH7uR,EAAOnqmB,MAGb+43B,GAAmBT,EAAW159B,EAAOotO,GAAKptO,EAAO2npB,WAC7DyyU,EAAcD,GAAmBn69B,EAAOm69B,IACvCx1G,EAAWS,GAAcC,IAAW95K,EAAQ,CAC3CnqmB,MAAOg53B,GAEN9D,EACL,CAEA,OAAO/qR,CACT,GA2BF,SAASwsR,GAAwBxB,EAAiB8D,EAAsB1h9B,EAAI3Y,EAAQ2nL,EAAU6gP,EAAcm8c,EAAU2yG,GACpH,IAAIgD,EACAC,EAEA/xjB,GACF+xjB,EAAa,CACXx3lC,EAAGi9H,EAAOj9H,EACV86B,MAAOmiG,EAAOniG,OAEhBy8jC,EAAe,CACbx4lC,EAAGk+H,EAAOl+H,EACVg8B,OAAQkiG,EAAOliG,UAGjBy8jC,EAAa,CACXz4lC,EAAGk+H,EAAOl+H,EACVg8B,OAAQkiG,EAAOliG,QAEjBw8jC,EAAe,CACbv3lC,EAAGi9H,EAAOj9H,EACV86B,MAAOmiG,EAAOniG,QAIby5jC,IAGF3yG,EAAWS,GAAcC,IAAW1s2B,EAAI,CACvCyoF,MAAOk53B,GACND,EAAsB1yyB,EAAU,OAIpCg9rB,EAAWS,GAAcC,IAAW1s2B,EAAI,CACvCyoF,MAAOm53B,GAFgBF,EAAuB9D,EAAgBtjC,SAASp/7B,MAAQ,KAG1D8zL,EACzB,CAEA,SAAS6yyB,GAAwBxu4B,EAAKjgL,GACpC,IAAK,IAAIrsC,EAAI,EAAGA,EAAIqsC,EAAM5sC,OAAQO,IAChC,IAAK8mC,SAASwlL,EAAIjgL,EAAMrsC,KACtB,OAAO,EAIX,OAAO,CACT,CAEA,IAAI+6lC,GAAe,CAAC,IAAK,IAAK,QAAS,UACnCC,GAAgB,CAAC,KAAM,KAAM,IAAK,aAAc,YAChD/C,GAAgB,CAClB3sC,YAAa,SAAUhr7B,GACrB,OAAQw69B,GAAwBx69B,EAAQy69B,GAC1C,EACAj+Q,MAAO,SAAUx8sB,GACf,OAAQw69B,GAAwBx69B,EAAQ069B,GAC1C,GAEEjzC,GAAY,CAGduD,YAAa,SAAU18iC,EAAM61J,EAAWq/0B,GACtC,IAAIxj3B,EAAS1xH,EAAKo5iC,cAAcvj5B,GAC5Bw27B,EAAiBn3G,EAoGzB,SAAsBA,EAAWo3G,GAE/B,IAAIxjvB,EAAcosoB,EAAUvh/B,IAAI,CAAC,YAAa,gBAE9C,IAAKm1W,GAA+B,SAAhBA,EAClB,OAAO,EAGT,IAAIjmC,EAAYqyqB,EAAUvh/B,IAAI,CAAC,YAAa,iBAAmB,EAE3D47B,EAAQuN,MAAMwvjC,EAAU/8jC,OAASoG,OAAO+lJ,UAAYroL,KAAKmjH,IAAI81+B,EAAU/8jC,OACvEC,EAASsN,MAAMwvjC,EAAU98jC,QAAUmG,OAAO+lJ,UAAYroL,KAAKmjH,IAAI81+B,EAAU98jC,QAC7E,OAAOn8B,KAAKgL,IAAIwkU,EAAWtzS,EAAOC,EACpC,CAjHqCm9I,CAAauo0B,EAAWxj3B,GAAU,EAE/D669B,EAAQ769B,EAAOniG,MAAQ,EAAI,GAAK,EAChCi9jC,EAAQ969B,EAAOliG,OAAS,EAAI,GAAK,EACrC,MAAO,CACL/6B,EAAGi9H,EAAOj9H,EAAI83lC,EAAQF,EAAiB,EACvC74lC,EAAGk+H,EAAOl+H,EAAIg5lC,EAAQH,EAAiB,EACvC98jC,MAAOmiG,EAAOniG,MAAQg9jC,EAAQF,EAC9B78jC,OAAQkiG,EAAOliG,OAASg9jC,EAAQH,EAEpC,EACAn+Q,MAAO,SAAUlu0B,EAAM61J,EAAWq/0B,GAChC,IAAIxj3B,EAAS1xH,EAAKo5iC,cAAcvj5B,GAChC,MAAO,CACLq7F,GAAIx/H,EAAOw/H,GACXumG,GAAI/lO,EAAO+lO,GACXqH,GAAIptO,EAAOotO,GACXvuW,EAAGmhI,EAAOnhI,EACV8oxB,WAAY3npB,EAAO2npB,WACnBC,SAAU5npB,EAAO4npB,SACjBlkb,UAAW1jO,EAAO0jO,UAEtB,GAOF,SAASo2vB,GAA2BJ,GAClC,OAAO,SAAUA,GACf,IAAIqB,EAAarB,EAAW,MAAQ,QACpC,OAAO,SAAUj8jC,GACf,OAAQA,GACN,IAAK,QACL,IAAK,cACL,IAAK,MACL,IAAK,YACH,OAAOA,EAAWs9jC,EAEpB,QACE,OAAOt9jC,EAEb,CACF,CAdO,CAcLi8jC,EACJ,CAEA,SAAS5B,GAAYn/8B,EAAIrqI,EAAM61J,EAAWq/0B,EAAWxj3B,EAAQ8h3B,EAAawtG,EAAsB5zQ,GAC9F,IAAIvo0B,EAAQ7E,EAAK+ggC,cAAclr2B,EAAW,SAE1C,GAAKu3qB,GAGE,IAAKomK,EAAY7/+B,IAAI,YAAa,CACvC,IAAI+4lC,EAAcri9B,EAAGyoF,MAErB+mL,EAAO6ysB,EADYxF,GAAsBhyG,EAAU9szB,SAAS,aAAcsk6B,GAAa,IAEvFri9B,EAAG+sQ,SAASs1sB,EACd,MARc,CACZ,IAAIvjvB,EAAe+roB,EAAUvh/B,IAAI,CAAC,YAAa,kBAAoB,EACnE02I,EAAG+sQ,SAAS,IAAKjuC,EACnB,CAOA9+N,EAAGuwQ,SAAS/1Y,GACZ,IAAIgh8B,EAAcqvC,EAAUnd,WAAW,UACvClyB,GAAex7zB,EAAGo0Y,KAAK,SAAUonb,GACjC,IAAI8mJ,EAAuBv/Q,EAAU4zQ,EAAuBtv9B,EAAOnhI,GAAKmhI,EAAOotO,GAAK,SAAW,WAAaptO,EAAO4npB,UAAY5npB,EAAO2npB,WAAa,WAAa,aAAe2nU,EAAuBtv9B,EAAOliG,QAAU,EAAI,SAAW,MAAQkiG,EAAOniG,OAAS,EAAI,QAAU,OACxQ+o9B,EAAoBY,GAAqBhE,GAC7CmD,GAAchu2B,EAAIiu2B,EAAmB,CACnCR,aAActE,EACduE,eAAgBli1B,EAChB08rB,YAAagjP,GAAgB/hG,EAAYx+2B,UAAW6gC,GACpD0k1B,aAAc11+B,EAAM+oH,KACpBot3B,eAAgBn2+B,EAAMu3H,QACtBk+2B,uBAAwBqyG,IAE1B,IAAI96lC,EAAQw4I,EAAGltD,iBAEf,GAAIiwvB,GAAWv70B,EAAO,CACpB,IAAIs9B,EAAW+l9B,EAAUvh/B,IAAI,CAAC,QAAS,aACvC02I,EAAGg50B,WAAWtw2B,OAAsB,WAAb5jF,GAA+B,KFjrBnD,SAA+B8tyB,EAAQslJ,EAAc8oI,EAAiBuB,GAC3E,GAAI94iC,GAAS84iC,GAEX3vR,EAAOioJ,cAAc,CACnBnu2B,SAAU61+B,SAGP,GAAIzqlC,GAAQog9B,GAEjBtlJ,EAAOioJ,cAAc,CACnBnu2B,SAAU,QAHP,CAQP,IAII81+B,EAJA/53B,EAAQmqmB,EAAOnqmB,MACfumjB,EAAavmjB,EAAMsiI,UAAYtiI,EAAMumjB,WAAavmjB,EAAMwmjB,SACxDA,EAAWxmjB,EAAMsiI,UAAYtiI,EAAMwmjB,SAAWxmjB,EAAMumjB,WACpDsyU,GAAetyU,EAAaC,GAAY,EAExCmyU,EAAuBJ,EAAgB9oI,GAE3C,OAAQkpI,GACN,IAAK,WACL,IAAK,iBACL,IAAK,SACL,IAAK,eACL,IAAK,SACHoB,EAAclB,EACd,MAEF,IAAK,aACL,IAAK,mBACHkB,EAAcxzU,EACd,MAEF,IAAK,WACL,IAAK,iBACHwzU,EAAcvzU,EACd,MAEF,QAIE,YAHA2jD,EAAOioJ,cAAc,CACnBnu2B,SAAU,IAKhB,IAAId,EAAmB,IAAV5iH,KAAKsmC,GAAWkzjC,EASA,WAAzBpB,GAAqCx1+B,EAAS5iH,KAAKsmC,GAAK,GAAKs8E,EAAmB,IAAV5iH,KAAKsmC,KAC7Es8E,GAAU5iH,KAAKsmC,IAGjBsjyB,EAAOioJ,cAAc,CACnBnu2B,SAAUd,GAjDZ,CAmDF,CEknBI62+B,CAAsBzi9B,EAAiB,YAAbl7G,EAAyBw9jC,EAAuBx9jC,EAAUq8jC,GAA2BxK,GAAuB9rG,EAAUvh/B,IAAI,CAAC,QAAS,WAChK,CAEAyn/B,GAAuBvp/B,EAAOym/B,EAAmB9E,EAAYotB,YAAY/q2B,IAAY,SAAUlkK,GAC7F,OAAO8jlC,GAA4Bz1kC,EAAMrO,EAC3C,IACA,IAAImllC,EAAgB5hG,EAAU9szB,SAAS,CAAC,aACxCuszB,GAAoBtq2B,EAAIys8B,EAAcnjlC,IAAI,SAAUmjlC,EAAcnjlC,IAAI,aAAcmjlC,EAAcnjlC,IAAI,aACtGsh/B,GAAyB5q2B,EAAI6q2B,GA7D/B,SAAuBxj3B,GACrB,OAA4B,MAArBA,EAAO2npB,YAAyC,MAAnB3npB,EAAO4npB,UAAoB5npB,EAAO2npB,aAAe3npB,EAAO4npB,QAC9F,CA6DMyzU,CAAcr79B,KAChB2Y,EAAGxlI,MAAM+oH,KAAO,OAChByc,EAAGxlI,MAAM+owB,OAAS,OAClB,EAAKvjoB,EAAGw1X,QAAQ,SAAU1jgB,GACpBA,EAAM0I,QACR1I,EAAM0I,MAAM+oH,KAAOzxH,EAAM0I,MAAM+owB,OAAS,OAE5C,IAEJ,CAkBA,IAAIo/U,GAGF,WAA0B,EAKxBC,GAEJ,SAAU/zuB,GAGR,SAAS+zuB,EAAUpgjC,GACjB,IAAIqQ,EAAQg8T,EAAO9oX,KAAKI,KAAMq8C,IAASr8C,KAGvC,OADA0sD,EAAMngD,KAAO,WACNmgD,CACT,CAyBA,OAhCAkgX,EAAU6vrB,EAAW/zuB,GASrB+zuB,EAAU/8lC,UAAUk0+B,gBAAkB,WACpC,OAAO,IAAI4oH,EACb,EAEAC,EAAU/8lC,UAAUg0+B,UAAY,SAAUp8vB,EAAKhV,GAU7C,IAPA,IAAIh3L,EAASg3L,EAAMh3L,OACfgrhC,EAAat2jC,KAAKs2jC,WAClBD,EAAc,EAAIr2jC,KAAKs2jC,WACvBomC,EAAa,GACb93kC,EAAO,GACPkhzB,EAAW9l0B,KAAK8l0B,SAEXll0B,EAAI,EAAGA,EAAI0qC,EAAOjrC,OAAQO,GAAK,EACtCgkB,EAAK0xiC,GAAcxwP,EACnBlhzB,EAAKyxiC,GAAe/qhC,EAAO1qC,EAAI,GAC/B87lC,EAAWpmC,GAAchrhC,EAAO1qC,EAAI01jC,GACpComC,EAAWrmC,GAAe/qhC,EAAO1qC,EAAIy1jC,GACrC/+0B,EAAI5jJ,KAAKgpgC,EAAW,GAAIA,EAAW,GAAI93kC,EAAK,GAAIA,EAAK,GAEzD,EAEO63kC,CACT,CAlCA,CAkCE,IAEF,SAASrD,GAAYp2G,EAAa5nrB,EAAOuhyB,EAAgBjvH,GAEvD,IAAIl+9B,EAAOwz+B,EAAYx+2B,UACnB8x7B,EAAa9mjC,EAAKm5iC,UAAU,uBAAyB,EAAI,EACzDyO,EAAmB5njC,EAAKm5iC,UAAU,oBAClC7iP,EAAWt2zB,EAAKm5iC,UAAU,QAC1BuvC,EAAkBl1G,EAAYprzB,SAAS,mBACvCgl6B,EAAWptlC,EAAKm5iC,UAAU,yBAE9B,GAAIi0C,EAAU,CACZ,IAAI7Y,EAAO,IAAI0Y,GAAU,CACvBn63B,MAAO,CACLh3L,OAAQsxjC,GAEVlvH,cAAeA,EACft5f,QAAQ,EACRr3S,GAAI,IAENgn5B,EAAKztB,WAAaA,EAClBytB,EAAK3sB,iBAAmBA,EACxB2sB,EAAKj+Q,SAAWA,EAChBi+Q,EAAK35rB,SAAS8tsB,EAAgBnsG,gBAC9B3wrB,EAAMj2S,IAAI4+jC,GACV4Y,GAAkBA,EAAe96lC,KAAKkilC,EACxC,CAEA,IAAIlq8B,EAAK,IAAI4i9B,GAAU,CACrBn63B,MAAO,CACLh3L,OAAQ97B,EAAKm5iC,UAAU,gBAEzBj7E,cAAeA,EACfz3B,qBAAqB,EACrBl5wB,GAAI,IAENljD,EAAGy86B,WAAaA,EAChBz86B,EAAGu96B,iBAAmBA,EACtBv96B,EAAGisrB,SAAWA,EACd1qgB,EAAMj2S,IAAI00H,GACVA,EAAGuwQ,SAAS56Y,EAAKsshC,UAAU,UAE3B9+C,GAAUnj2B,GAAIqj2B,YAAc8F,EAAY9F,YAEnC8F,EAAY7/+B,IAAI,YACnB02I,EAAGjpI,GAAG,YAAaislC,IACnBhj9B,EAAGjpI,GAAG,YAAaislC,KAGrBF,GAAkBA,EAAe96lC,KAAKg4I,EACxC,CAGA,IAAIgj9B,GAA2Bz4jC,IAAS,SAAU3F,GAChD,IACI4mI,EAIN,SAAgCy37B,EAAW74lC,EAAGjB,GAS5C,IARA,IAAIszjC,EAAawmC,EAAUxmC,WACvBD,EAAc,EAAIC,EAClBhrhC,EAASwxjC,EAAUx63B,MAAMh3L,OACzB8rhC,EAAmB0lC,EAAU1lC,iBAC7BslC,EAAa,GACb93kC,EAAO,GACPkhzB,EAAWg3R,EAAUh3R,SAEhBll0B,EAAI,EAAGi+H,EAAMvzF,EAAOjrC,OAAS,EAAGO,EAAIi+H,EAAKj+H,IAAK,CACrD,IAAIwc,EAAS,EAAJxc,EAWT,GAVAgkB,EAAK0xiC,GAAcxwP,EACnBlhzB,EAAKyxiC,GAAe/qhC,EAAOluB,EAAK,GAChCs/kC,EAAWpmC,GAAchrhC,EAAOluB,EAAKk5iC,GACrComC,EAAWrmC,GAAe/qhC,EAAOluB,EAAKi5iC,GAElCzxiC,EAAKyxiC,GAAe,IACtBqmC,EAAWrmC,IAAgBzxiC,EAAKyxiC,GAChCzxiC,EAAKyxiC,IAAgBzxiC,EAAKyxiC,IAGxBpyjC,GAAKy4lC,EAAW,IAAMz4lC,GAAKy4lC,EAAW,GAAK93kC,EAAK,IAAM5hB,GAAK05lC,EAAW,IAAM15lC,GAAK05lC,EAAW,GAAK93kC,EAAK,GACxG,OAAOwyiC,EAAiBx2jC,EAE5B,CAEA,OAAQ,CACV,CA/BkBm8lC,CADA/8lC,KACkCy+B,EAAM05F,QAAS15F,EAAM25F,SACvE4k3B,GAFgBh9+B,MAEKqlK,UAAYA,GAAa,EAAIA,EAAY,IAChE,GAAG,IAAI,GA+BP,SAASsz7B,GAAsBnI,EAAsBtv9B,EAAQ+9B,GAC3D,GAAIms7B,GAAuBns7B,EAAO,eAAgB,CAChD,IAAIm90B,EAAYl72B,EACZm27B,EAAcp45B,EAAM6r7B,UACxB,MAAO,CACL7mlC,EAAGuslC,EAAuBp0G,EAAUn4+B,EAAIozjC,EAAYpzjC,EACpDjB,EAAGwtlC,EAAuBn5B,EAAYr0jC,EAAIo5+B,EAAUp5+B,EACpD+7B,MAAOyxjC,EAAuBp0G,EAAUr98B,MAAQs4hC,EAAYt4hC,MAC5DC,OAAQwxjC,EAAuBn5B,EAAYr4hC,OAASo98B,EAAUp98B,OAElE,CACE,IACIk9jC,EAAch79B,EAClB,MAAO,CACLw/H,IAHE22zB,EAAcp45B,EAAM6r7B,WAGNpq1B,GAChBumG,GAAIowtB,EAAYpwtB,GAChBqH,GAAIkivB,EAAuBn5B,EAAY/otB,GAAK4tvB,EAAY5tvB,GACxDvuW,EAAGywlC,EAAuBn5B,EAAYt3jC,EAAIm8lC,EAAYn8lC,EACtD8oxB,WAAY2nU,EAAuB0L,EAAYrzU,WAAa,EAC5DC,SAAU0nU,EAAuB0L,EAAYpzU,SAAqB,EAAVjmxB,KAAKsmC,GAGnE,CAWA,YCr+BA,IAAI,GAAgB,EAAVtmC,KAAKsmC,GACX6zjC,GAASn6lC,KAAKsmC,GAAK,IAEvB,SAAS8zjC,GAAYj6G,EAAa/z8B,GAChC,OAAO,GAAqB+z8B,EAAY8S,qBAAsB,CAC5D/29B,MAAOkQ,EAAIk8L,WACXnsM,OAAQiQ,EAAI+rI,aAEhB,CAEO,SAASki7B,GAAkBl6G,EAAa/z8B,GAC7C,IAAIg97B,EAAWgxH,GAAYj6G,EAAa/z8B,GAEpChQ,EAAS+j9B,EAAY7/+B,IAAI,UACzBm0I,EAAS0r2B,EAAY7/+B,IAAI,UAExB,GAAem0I,KAClBA,EAAS,CAAC,EAAGA,IAGf,IAKIopH,EACAumG,EANAloU,EAAQ,GAAakt8B,EAASlt8B,MAAOkQ,EAAIk8L,YACzCnsM,EAAS,GAAait8B,EAASjt8B,OAAQiQ,EAAI+rI,aAC3Cp2J,EAAO/hB,KAAKgL,IAAIkxB,EAAOC,GACvBsvU,EAAK,GAAah3N,EAAO,GAAI1yH,EAAO,GACpC7kB,EAAI,GAAau3I,EAAO,GAAI1yH,EAAO,GAGnCs+9B,EAAWF,EAAYjx3B,iBAE3B,GAAImx3B,EAAU,CAEZ,IAAI/t2B,EAAQ+t2B,EAASy0E,YAAY14hC,GACjCyhO,EAAKvrH,EAAM,IAAM,EACjB8xN,EAAK9xN,EAAM,IAAM,CACnB,MACO,GAAel2G,KAClBA,EAAS,CAACA,EAAQA,IAGpByhO,EAAK,GAAazhO,EAAO,GAAIF,GAASkt8B,EAASho+B,EAC/CgjW,EAAK,GAAahoU,EAAO,GAAID,GAAUit8B,EAASjp+B,EAGlD,MAAO,CACL09P,GAAIA,EACJumG,GAAIA,EACJqH,GAAIA,EACJvuW,EAAGA,EAEP,CACe,SAASo9lC,GAAU1gR,EAAY6mJ,EAASr07B,GACrDq07B,EAAQq/B,iBAAiBlmL,GAAY,SAAUumK,GAC7C,IAAIxz+B,EAAOwz+B,EAAYx+2B,UACnBgy7B,EAAWhnjC,EAAK42iC,aAAa,SAC7Bn6E,EAAWgxH,GAAYj6G,EAAa/z8B,GAEpCtY,EAAKumkC,GAAkBl6G,EAAa/z8B,GACpCyxN,EAAK/pO,EAAG+pO,GACRumG,EAAKtwU,EAAGswU,GACRlnW,EAAI42B,EAAG52B,EACPuuW,EAAK33U,EAAG23U,GAERu6a,GAAcm6N,EAAY7/+B,IAAI,cAAgB65lC,GAC9ChvR,EAAWg1K,EAAY7/+B,IAAI,YAAc65lC,GACzCI,EAAiB,EACrB5tlC,EAAKwywB,KAAKw0S,GAAU,SAAUr1jC,IAC3BmrC,MAAMnrC,IAAUi8lC,GACnB,IACA,IAAItu/B,EAAMt/F,EAAKgsgC,OAAOg7C,GAElB6mC,EAAax6lC,KAAKsmC,IAAM2lE,GAAOsu/B,GAAkB,EACjDx4vB,EAAYo+oB,EAAY7/+B,IAAI,aAC5Bm6lC,EAAWt6G,EAAY7/+B,IAAI,YAC3Bo6lC,EAAmBv6G,EAAY7/+B,IAAI,oBAEnConK,EAAS/6J,EAAKivgC,cAAc+3C,GAChCjs5B,EAAO,GAAK,EAEZ,IAAIiz7B,EAAY,GACZC,EAA6B,EAC7BC,EAAe70U,EACfrvpB,EAAMorO,EAAY,GAAK,EAmD3B,GAlDAp1V,EAAKk5iC,UAAU,CACbz8E,SAAUA,EACVls+B,EAAGA,IAELyP,EAAKwywB,KAAKw0S,GAAU,SAAUr1jC,EAAO25W,GACnC,IAAInsI,EAEJ,GAAIriM,MAAMnrC,GACRqO,EAAKq5iC,cAAc/tsB,EAAK,CACtBnsI,MAAOithB,IACPitB,WAAYjtB,IACZktB,SAAUltB,IACVh3Z,UAAWA,EACXlkG,GAAIA,EACJumG,GAAIA,EACJqH,GAAIA,EACJvuW,EAAGu9lC,EAAW1hW,IAAM77vB,QATxB,EAgBE4uO,EADe,SAAb2u3B,EACc,IAARxu/B,GAAayu/B,EAAmBF,EAAal8lC,EAAQk8lC,EAErD,GAAMD,GAGJpvR,GACVr/lB,EAAQq/lB,EACRwvR,GAAaxvR,GAEbyvR,GAA8Bt8lC,EAGhC,IAAI2nxB,EAAW40U,EAAelk+B,EAAMm1G,EACpCn/N,EAAKq5iC,cAAc/tsB,EAAK,CACtBnsI,MAAOA,EACPk6iB,WAAY60U,EACZ50U,SAAUA,EACVlkb,UAAWA,EACXlkG,GAAIA,EACJumG,GAAIA,EACJqH,GAAIA,EACJvuW,EAAGu9lC,EAAW5/H,GAAUv89B,EAAOopK,EAAQ,CAAC+jM,EAAIvuW,IAAMA,IAEpD29lC,EAAe50U,CA3Bf,CA4BF,IAGI00U,EAAY,IAAOJ,EAGrB,GAAII,GAAa,KAAM,CACrB,IAAIG,EAAU,GAAMP,EACpB5tlC,EAAKwywB,KAAKw0S,GAAU,SAAUr1jC,EAAO25W,GACnC,IAAKxuU,MAAMnrC,GAAQ,CACjB,IAAIy8lC,EAAWpulC,EAAKo5iC,cAAc9tsB,GAClC8ivB,EAASjv3B,MAAQgv3B,EACjBC,EAAS/0U,WAAaA,EAAarvpB,EAAMshP,EAAM6ivB,EAC/CC,EAAS90U,SAAWD,EAAarvpB,GAAOshP,EAAM,GAAK6ivB,CACrD,CACF,GACF,MACEN,EAAaG,EAAYC,EACzBC,EAAe70U,EACfr5wB,EAAKwywB,KAAKw0S,GAAU,SAAUr1jC,EAAO25W,GACnC,IAAKxuU,MAAMnrC,GAAQ,CACjB,IAAI08lC,EAAWrulC,EAAKo5iC,cAAc9tsB,GAC9BnsI,EAAQkv3B,EAASlv3B,QAAUq/lB,EAAWA,EAAW7s0B,EAAQk8lC,EAC7DQ,EAASh1U,WAAa60U,EACtBG,EAAS/0U,SAAW40U,EAAelk+B,EAAMm1G,EACzC+u3B,GAAgBlk+B,EAAMm1G,CACxB,CACF,GAGN,GACF,CCnKe,SAASmv3B,GAAWrhR,GACjC,MAAO,CACLA,WAAYA,EACZx7wB,MAAO,SAAU+h7B,EAAa1f,GAC5B,IAAIy6H,EAAez6H,EAAQw+B,eAAe,CACxCh+B,SAAU,WAGZ,GAAKi6H,GAAiBA,EAAa19lC,OAAnC,CAIA,IAAImP,EAAOwz+B,EAAYx+2B,UACvBh1H,EAAKy4iC,YAAW,SAAUntsB,GAGxB,IAFA,IAAIpwW,EAAO8E,EAAKw4U,QAAQ8yB,GAEfl6W,EAAI,EAAGA,EAAIm9lC,EAAa19lC,OAAQO,IAEvC,IAAKm9lC,EAAan9lC,GAAGwtC,WAAW1jC,GAC9B,OAAO,EAIX,OAAO,CACT,GAdA,CAeF,EAEJ,CCrBA,IAAI,GAAS7H,KAAKsmC,GAAK,IAEvB,SAAS60jC,GAAiB7nhC,EAAMuqL,EAAIumG,EAAIlnW,EAAGy5H,EAAKoy2B,EAAWC,EAAYoyH,EAAUC,EAASC,GACxF,KAAIhohC,EAAK91E,OAAS,GAAlB,CAmEA,IAFA,IAAIw+H,EAAM1oD,EAAK91E,OAENO,EAAI,EAAGA,EAAIi+H,EAAKj+H,IACvB,GAAyB,UAArBu1E,EAAKv1E,GAAG+9B,UAAiD,cAAzBw3C,EAAKv1E,GAAGw9lC,aAA8B,CACxE,IAAI5p9B,EAAKr+D,EAAKv1E,GAAGS,MAAM4C,EAAIk6lC,EAC3BhohC,EAAKv1E,GAAGmokC,WAAW,GAAG,IAAMv07B,EAC5Br+D,EAAKv1E,GAAGS,MAAM4C,EAAIk6lC,CACpB,CAGE7xB,GAAen2/B,EAAM+nhC,EAASA,EAAUryH,IA/C5C,SAAsBnywB,GAWpB,IATA,IAAI2k4B,EAAU,CACZlohC,KAAM,GACNukG,KAAM,GAEJ4j7B,EAAa,CACfnohC,KAAM,GACNukG,KAAM,GAGC95K,EAAI,EAAGA,EAAI84N,EAAMr5N,OAAQO,IAChC,GAA8B,SAA1B84N,EAAM94N,GAAGw9lC,aAAb,CAIA,IAAIh9iC,EAAOs4K,EAAM94N,GACb29lC,EAAOn9iC,EAAK//C,MAAM2B,EAAIikW,EAAKq3vB,EAAaD,EACxChq9B,EAAKxxI,KAAKmjH,IAAI5kE,EAAK//C,MAAM2B,EAAIikW,GAEjC,GAAI5yN,GAAMkq9B,EAAK7j7B,KAAM,CACnB,IAAIlmC,EAAKpzF,EAAK//C,MAAM4C,EAAIy8P,EAAKt/M,EAAKmk6B,KAAO/r1B,EAErCgl+B,EAAKz+lC,EAAIqhD,EAAKy9E,IAEd4/9B,EAAK57lC,KAAKmjH,IAAIwuB,GAAMgq9B,EAAK37lC,KAAK4yF,KAAK4+C,EAAKA,GAAM,EAAIG,EAAKA,EAAKgq9B,EAAKA,IAAOA,EAC5ED,EAAKE,GAAKA,EACVF,EAAK7j7B,KAAOrmC,CACd,CAEAkq9B,EAAKpohC,KAAKt0E,KAAKu/C,EAhBf,CAmBFs9iC,EAAwCL,GACxCK,EAAwCJ,EAC1C,CAaEK,CAAaxohC,EA1Ef,CAIA,SAASuohC,EAAwCH,GAI/C,IAHA,IAAIE,EAAKF,EAAKE,GACVG,EAAMH,EAAKA,EAEN79lC,EAAI,EAAGA,EAAI29lC,EAAKpohC,KAAK91E,OAAQO,IAAK,CACzC,IAAIwgD,EAAOm9iC,EAAKpohC,KAAKv1E,GACjByzI,EAAKxxI,KAAKmjH,IAAI5kE,EAAK//C,MAAM2B,EAAIikW,GAE7Bu3vB,EAAKz+lC,EAAIqhD,EAAKy9E,IACdgg+B,EAAML,EAAKA,EAEXhq9B,EAAK3xI,KAAK4yF,MAAM,EAAI5yF,KAAKmjH,IAAIquB,EAAKA,EAAKuq9B,IAAQC,GAC/CrsO,EAAO9xnB,GAAMlsH,EAAKpzF,EAAKmk6B,MAAQ/r1B,EAC/BpT,EAASoswB,EAAOpx0B,EAAK//C,MAAM4C,EAG/B66lC,GAAmB19iC,EAFEA,EAAK29iC,gBAAkB34+B,EAASoT,GAEZ,GACzCp4E,EAAK//C,MAAM4C,EAAIuu3B,CACjB,CACF,CAqDF,CA8GA,SAASssO,GAAmB599B,EAAQ0oe,EAAgBo1f,GAKlD,QAJyB,IAArBA,IACFA,GAAmB,GAGS,MAA1B999B,EAAO+99B,gBAAX,CAKA,IAAI59lC,EAAQ6/H,EAAO7/H,MACfgT,EAAQhT,EAAMgT,MACd+rjC,EAAWl/7B,EAAOxtC,KAClBwrgC,EAAU7qlC,EAAMqlI,gBAChBxhB,EAAU7jH,EAAM6jH,QAChBwi3B,EAAWxi3B,EAAUA,EAAQ,GAAKA,EAAQ,GAAK,EAC/CqpP,EAAWltW,EAAMktW,SAEjB49uB,EAAgB/+B,EAASrhiC,OAASmgkC,EAAU,EAAIxkH,GAEpD,GAAI9wY,EAAiBu1f,GAAiBH,EAAkB,CACtD,IAAI1l3B,EAAY8m1B,EAASphiC,OAEzB,GAAIuiV,GAAYA,EAAS96W,MAAM,SAAU,CAGvCpF,EAAMija,SAAS,kBAAmB,MAElCjja,EAAMija,SAAS,QAASslM,EAAiB8wY,GAEzC,IAAI0kH,EAAY/9lC,EAAM8iP,kBACtB9iP,EAAMija,SAAS,QAASzha,KAAKuK,KAAKgylC,EAAUrgkC,QAC5C19B,EAAMija,SAAS,kBAAmB46rB,EACpC,KAAO,CACL,IAAIG,EAAsBz1f,EAAiB8wY,EACvCx61B,EAAW0pd,EAAiBu1f,EAC9BE,EAEFL,EAAmBK,EAAsBn+9B,EAAOo+9B,mBAG9C,KAGAD,EAEF,KACAh+lC,EAAMija,SAAS,QAASpkR,EAC1B,CAEA,IAAIq/8B,EAAUl+lC,EAAM8iP,kBACpBi80B,EAASrhiC,MAAQwgkC,EAAQxgkC,MACzB,IAAI0gV,GAAUp+W,EAAMgT,MAAMorW,QAAU,GAAK,IACzC2gtB,EAASphiC,OAASugkC,EAAQvgkC,OAASygV,EACnC2gtB,EAASp9jC,IAAMo9jC,EAASphiC,OAASs6M,GAAa,CAChD,CA/CA,CAgDF,CAEA,SAASkm3B,GAAiBtD,GAExB,MAAgC,WAAzBA,EAAYv9jC,QACrB,CCnPA,IAAI8gkC,GAEJ,SAAU/2uB,GAGR,SAAS+2uB,EAASjwlC,EAAMsrW,EAAK+ta,GAC3B,IAAIn8tB,EAAQg8T,EAAO9oX,KAAKI,OAASA,KAEjC0sD,EAAMqwI,GAAK,EACX,IAAI3sK,EAAO,IAAI,GAMf,OAJAs8B,EAAMio6B,eAAevk8B,GAErBs8B,EAAMimgB,WAAWnjjB,EAAMsrW,EAAK+ta,GAAY,GAEjCn8tB,CACT,CAyJA,OAtKAkgX,EAAU6yrB,EAAU/2uB,GAepB+2uB,EAAS//lC,UAAUizjB,WAAa,SAAUnjjB,EAAMsrW,EAAK+ta,EAAY62U,GAC/D,IAAIjzR,EAASzs0B,KACTgj/B,EAAcxz+B,EAAKy0iC,UACnBv/D,EAAYl1+B,EAAKqhgC,aAAa/1pB,GAC9BwruB,EAAgB5hG,EAAU9szB,SAAS,YACnC12D,EAAS1xH,EAAKo5iC,cAAc9tsB,GAG5BohvB,EAAc7ysB,EAAOqtsB,GAAsBhyG,EAAU9szB,SAAS,aAAc12D,GAAQ,GAAOA,GAE/F,GAAI50F,MAAM4vjC,EAAYrzU,YAEpB4jD,EAAO7lb,SAASs1sB,OAFlB,CAMA,GAAIwD,EAAa,CACfjzR,EAAO7lb,SAASs1sB,GAChB,IAAI52G,EAAgBtC,EAAYzb,WAAW,iBAEvCyb,EAAY1f,QAAQrH,KAGtB,GAAkBxvJ,EAAQ,CACxB7zsB,OAAQ,EACRC,OAAQ,GACPmq3B,EAAa,CACd390B,UAAWy1M,EACXmroB,QAAQ,IAEVx5K,EAAO9/oB,QAAUuv6B,EAAYx71B,GAC7B+rkB,EAAO7/oB,QAAUsv6B,EAAYj1vB,IACF,UAAlBq+oB,GACT74K,EAAOnqmB,MAAMviO,EAAImhI,EAAOotO,GACxB,GAAkBm+d,EAAQ,CACxBnqmB,MAAO,CACLviO,EAAGmhI,EAAOnhI,IAEXij/B,EAAalooB,IAGI,MAAd+ta,GACF4jD,EAAO7lb,SAAS,CACdiiY,WAAYA,EACZC,SAAUD,IAEZ,GAAkB4jD,EAAQ,CACxBnqmB,MAAO,CACLumjB,WAAY3npB,EAAO2npB,WACnBC,SAAU5npB,EAAO4npB,WAElBk6N,EAAalooB,KAEhB2xd,EAAOnqmB,MAAMwmjB,SAAW5npB,EAAO2npB,WAC/B,GAAoB4jD,EAAQ,CAC1BnqmB,MAAO,CACLwmjB,SAAU5npB,EAAO4npB,WAElBk6N,EAAalooB,GAGxB,MACE8roB,GAAan6K,GAEb,GAAoBA,EAAQ,CAC1BnqmB,MAAO453B,GACNl5G,EAAalooB,GAGlB2xd,EAAOrib,SAAS56Y,EAAK+ggC,cAAcz1pB,EAAK,UACxC2poB,GAAyBh4K,EAAQi4K,GACjC,IAAI5yK,GAAY5wsB,EAAO2npB,WAAa3npB,EAAO4npB,UAAY,EACnD3muB,EAAS6g8B,EAAY7/+B,IAAI,kBACzBqxI,EAAK3xI,KAAKuxH,IAAI09sB,GAAY3vxB,EAC1BkyF,EAAKxxI,KAAK4wH,IAAIq+sB,GAAY3vxB,EAC1Bkz5B,EAAcqvC,EAAUnd,WAAW,UACvClyB,GAAe5oI,EAAOx+S,KAAK,SAAUonb,GAErCr18B,KAAK2/lC,aAAa38G,EAAaxz+B,EAAMsrW,GAErC2xd,EAAO+oJ,YAAY,YAAYlzvB,MAAQ+mL,EAAO,CAC5CtpZ,EAAGmhI,EAAOnhI,GAAKumlC,EAAcnjlC,IAAI,UAAWmjlC,EAAcnjlC,IAAI,cAAoB,IACjFuzlC,GAAsBpQ,EAAc1u5B,SAAS,aAAc12D,IAC9DmoR,EAAOojb,EAAO+oJ,YAAY,UAAW,CACnCvx9B,EAAGuwI,EACHxxI,EAAGqxI,EACHiuF,MAAOo03B,GAAsBhyG,EAAU9szB,SAAS,CAAC,SAAU,cAAe12D,KAE5EmoR,EAAOojb,EAAO+oJ,YAAY,QAAS,CACjClzvB,MAAOo03B,GAAsBhyG,EAAU9szB,SAAS,CAAC,OAAQ,cAAe12D,KAE1E,IAAIg16B,EAAYzpO,EAAOwuI,mBACnBn7I,EAAY2M,EAAO9/uB,iBACvBup9B,GAAa7spB,EAAO6spB,EAAU1gF,YAAY,UAAW,CACnDvx9B,EAAGuwI,EACHxxI,EAAGqxI,IAGLg1Q,EAAOy2a,EAAU01J,YAAY,UAAW,CACtCvx9B,EAAGuwI,EACHxxI,EAAGqxI,IAEL8v2B,GAAoBnk/B,KAAMsmlC,EAAcnjlC,IAAI,SAAUmjlC,EAAcnjlC,IAAI,aAAcmjlC,EAAcnjlC,IAAI,YAxFxG,CAyFF,EAEAs8lC,EAAS//lC,UAAUigmC,aAAe,SAAU38G,EAAaxz+B,EAAMsrW,GAC7D,IAAI2xd,EAASzs0B,KACT0k/B,EAAYl1+B,EAAKqhgC,aAAa/1pB,GAC9ByttB,EAAiB7jF,EAAU9szB,SAAS,aACpCvjL,EAAQ7E,EAAK+ggC,cAAcz1pB,EAAK,SAChCyruB,EAAclykC,GAASA,EAAM+oH,KAC7Bwi+B,EAAgBvrlC,GAASA,EAAMu3H,QACnCi82B,GAAcp7K,EAAQi8K,GAAqBhE,GAAY,CACrD4C,aAAc93+B,EAAKy0iC,UACnB18D,eAAgBzsoB,EAChBivoB,aAAcw8F,EACd/7F,eAAgBo1G,EAChB79P,YAAaihJ,EAAY0E,kBAAkB5soB,EAAK,WAAatrW,EAAKw4U,QAAQ8yB,KAE5E,IAAIgld,EAAY2M,EAAO9/uB,iBAEvB8/uB,EAAOioJ,cAAc,CAEnB/17B,SAAU,KACV4nF,SAAU,OAIZu5sB,EAAU7xS,KAAK,CACblxV,GAAI,KAEN,IAAI2szB,EAAgB1G,EAAY7/+B,IAAI,CAAC,QAAS,aAE9C,GAAsB,YAAlBum/B,GAAiD,UAAlBA,EACjCj9K,EAAO6rJ,0BACF,CACL,IAAIt3jB,EAAWhha,KAAKi78B,mBAEfj6iB,IACHA,EAAW,IAAI,GACfhha,KAAKo49B,iBAAiBp3jB,IAIxB+oqB,GAAkB/pkC,KAAMiqkC,GAAyBvlF,GAAY,CAC3DtnO,OAAQmpU,EACR368B,QAAS4+zB,GAAU+9H,EAAeplkC,IAAI,CAAC,YAAa,YAAay8lC,EAAe,IAEpF,CACF,EAEOH,CACT,CAxKA,CAwKE,IAuFF,SAlFA,SAAU/2uB,GAGR,SAASm3uB,IACP,IAAInziC,EAAmB,OAAXg8T,GAAmBA,EAAOnoX,MAAMP,KAAMI,YAAcJ,KAGhE,OADA0sD,EAAMqihC,uBAAwB,EACvBrihC,CACT,CAuEA,OA9EAkgX,EAAUizrB,EAASn3uB,GASnBm3uB,EAAQngmC,UAAU4uH,OAAS,SAAU003B,EAAa1f,EAASr07B,EAAKna,GAC9D,IAGI+zvB,EAHAr5wB,EAAOwz+B,EAAYx+2B,UACnBoub,EAAU5yjB,KAAKykJ,MACf22K,EAAQp7T,KAAKo7T,MAGjB,IAAKw3P,GAAWpjjB,EAAK+5C,QAAU,EAAG,CAGhC,IAFA,IAAI+4K,EAAQ9yN,EAAKo5iC,cAAc,GAEtB9njC,EAAI,EAAGwrC,MAAMg2L,GAASA,EAAMumjB,aAAe/nxB,EAAI0O,EAAK+5C,UAAWzoD,EACtEwhO,EAAQ9yN,EAAKo5iC,cAAc9njC,GAGzBwhO,IACFumjB,EAAavmjB,EAAMumjB,WAEvB,CAQA,GALI7oxB,KAAK8/lC,oBACP1kyB,EAAMvoS,OAAO7yB,KAAK8/lC,oBAIC,IAAjBtwlC,EAAK+5C,SAAiBy57B,EAAY7/+B,IAAI,mBAAoB,CAC5D,IAAIsp0B,EAAS,IAAI,GAAe,CAC9BnqmB,MAAO463B,GAAkBl6G,EAAa/z8B,KAExCw9xB,EAAOrib,SAAS44lB,EAAYprzB,SAAS,oBAAoBm0zB,gBACzD/r/B,KAAK8/lC,mBAAqBrzR,EAC1BrxgB,EAAMj2S,IAAIsnzB,EACZ,CAEAj9zB,EAAK+4hB,KAAKqqB,GAASztiB,KAAI,SAAU21V,GAC/B,IAAIilvB,EAAW,IAAIN,GAASjwlC,EAAMsrW,EAAK+ta,GACvCr5wB,EAAKu5iC,iBAAiBjusB,EAAKilvB,GAC3B3kyB,EAAMj2S,IAAI46kC,EACZ,IAAGxxhC,QAAO,SAAU4x+B,EAAQ4nC,GAC1B,IAAIgY,EAAWntiB,EAAQ8vb,iBAAiBqlG,GACxCgY,EAASptiB,WAAWnjjB,EAAM2wiC,EAAQt3R,GAClCk3U,EAAS/xjC,IAAI,SACbotR,EAAMj2S,IAAI46kC,GACVvwlC,EAAKu5iC,iBAAiB5I,EAAQ4/C,EAChC,IAAGltkC,QAAO,SAAUioV,GAElB,GADe83M,EAAQ8vb,iBAAiB5noB,GACGkooB,EAAalooB,EAC1D,IAAGinC,UDcQ,SAAwBihmB,GACrC,IAEItivB,EACAumG,EAHAz3V,EAAOwz+B,EAAYx+2B,UACnBw79B,EAAkB,GAGlBC,GAAiB,EACjBC,GAAsBl9G,EAAY7/+B,IAAI,sBAAwB,GAAK,GACnE8o+B,EAAWz89B,EAAKm5iC,UAAU,YAC1B5ojC,EAAIyP,EAAKm5iC,UAAU,KACnB/8E,EAAYK,EAASlt8B,MACrBk/jC,EAAWhyH,EAASho+B,EACpBi6lC,EAAUjyH,EAASjp+B,EACnB6o+B,EAAaI,EAASjt8B,OAE1B,SAASmhkC,EAAWtm9B,GAClBA,EAAG1xG,QAAS,CACd,CAgBA34B,EAAKwywB,MAAK,SAAUlna,GAClB,IAAI2xd,EAASj9zB,EAAKkz+B,iBAAiB5noB,GAC/BohvB,EAAczvR,EAAOnqmB,MACrBjhO,EAAQor0B,EAAO9/uB,iBACfup9B,EAAYzpO,EAAOwuI,mBACnBypC,EAAYl1+B,EAAKqhgC,aAAa/1pB,GAC9BkotB,EAAat+E,EAAU9szB,SAAS,SAEhC8xzB,EAAgBs5E,EAAW7/jC,IAAI,aAAeuh/B,EAAUvh/B,IAAI,CAAC,WAAY,QAAS,aAClFym/B,EAAgBo5E,EAAW7/jC,IAAI,uBAC/Bi7lC,EAAep7B,EAAW7/jC,IAAI,WAC9BwsO,EAAe,GAAaqz1B,EAAW7/jC,IAAI,gBAAiByo+B,GAC5Dw0H,EAAcp9B,EAAW7/jC,IAAI,eAC7BolkC,EAAiB7jF,EAAU9szB,SAAS,aACpCyo6B,EAAe93B,EAAeplkC,IAAI,UACtCk9lC,EAAe,GAAaA,EAAcz0H,GAC1C,IAAI00H,EAAgB/3B,EAAeplkC,IAAI,WAGvC,GAFAm9lC,EAAgB,GAAaA,EAAe10H,GAExC/o+B,KAAKmjH,IAAIk2+B,EAAYpzU,SAAWozU,EAAYrzU,YAAcq3U,EAS5D,OARA,EAAK7+lC,EAAMgugB,OAAQ8wlB,GACnB9+lC,EAAM8mC,QAAS,OAEX+tgC,IACF,EAAKA,EAAU7miB,OAAQ8wlB,GACvBjqD,EAAU/tgC,QAAS,IAMvB,GA7CF,SAAsB9mC,GACpB,IAAKA,EAAM8mC,OACT,OAAO,EAGT,IAAK,IAAItjB,KAAOxjB,EAAMgugB,OACpB,IAAiC,IAA7BhugB,EAAMgugB,OAAOxqf,GAAKsjB,OACpB,OAAO,EAIX,OAAO,CACT,CAiCOo4jC,CAAal/lC,GAAlB,CAIA,IAGI+3+B,EACAC,EACA0vF,EACA/j1B,EANA8slB,GAAYoqR,EAAYrzU,WAAaqzU,EAAYpzU,UAAY,EAC7D2oK,EAAK5u7B,KAAKuxH,IAAI09sB,GACdimN,EAAKl1hC,KAAK4wH,IAAIq+sB,GAKlBpxkB,EAAKw71B,EAAYx71B,GACjBumG,EAAKi1vB,EAAYj1vB,GACjB,IAAIu5vB,EAAkC,WAAlB92G,GAAgD,UAAlBA,EAElD,GAAsB,WAAlBA,EACFtQ,EAAQ8iH,EAAYx71B,GACpB24uB,EAAQ6iH,EAAYj1vB,GACpBjiH,EAAY,aACP,CACL,IAAI4iE,GAAM44yB,GAAiBtE,EAAYn8lC,EAAIm8lC,EAAY5tvB,IAAM,EAAImjlB,EAAKyqK,EAAYn8lC,EAAI0x7B,GAAM/wrB,EACxFhvE,GAAM8u6B,GAAiBtE,EAAYn8lC,EAAIm8lC,EAAY5tvB,IAAM,EAAIyprB,EAAKmkE,EAAYn8lC,EAAIg4hC,GAAM9wrB,EAI5F,GAHAmyoB,EAAQxxrB,EAAU,EAAL6poB,EACb4nD,EAAQ3nzB,EAAU,EAALqm2B,GAERyoE,EAAe,CAElB,IAAI1j6B,EAAK8qH,EAAK6poB,GAAM4uK,EAAetgmC,EAAIm8lC,EAAYn8lC,GAC/C03H,EAAKi6D,EAAKqm2B,GAAMsoE,EAAetgmC,EAAIm8lC,EAAYn8lC,GAC/C0oT,EAAK3rH,GAAM20vB,EAAK,GAAK,EAAI,GAAK6uK,EAKhClnH,EAFmB,SAAjBglH,EAEM3sK,EAAK,EAAIwsK,EAAWtu3B,EAAesu3B,EAAWryH,EAAYj8vB,EAE1D84E,GAAMgpoB,EAAK,GAAKm4D,EAAgBA,GAG1CvQ,EATS5h3B,EAUTsx8B,EAAa,CAAC,CAACnhxB,EAAIl2H,GAAK,CAACoL,EAAIrlE,GAAK,CAACgxL,EAV1BhxL,GAWX,CAEAutH,EAAYw72B,EAAgB,SAA4B,SAAjBpC,EAA0B3sK,EAAK,EAAI,QAAU,OAASA,EAAK,EAAI,OAAS,OACjH,CAEA,IAAIto5B,EAAKtmC,KAAKsmC,GACVwg9B,EAAc,EACdlk4B,EAASu98B,EAAW7/jC,IAAI,UAE5B,GAAImgD,GAASmiE,GACXkk4B,EAAclk4B,GAAUt8E,EAAK,UACxB,GAAsB,WAAlBug9B,EACTC,EAAc,OACT,GAAe,WAAXlk4B,IAAkC,IAAXA,EAEhCkk4B,EADkBl4D,EAAK,GAAK3/G,EAAW3oyB,GAAM2oyB,OAExC,GAAe,eAAXrstB,GAA6C,YAAlBik4B,GAAiD,UAAlBA,EAA2B,CAC9F,IAAI/rpB,EAAM96V,KAAK0xH,MAAMk9zB,EAAIsmG,GAErBp6rB,EAAM,IACRA,EAAW,EAALx0T,EAASw0T,GAGJo6rB,EAAK,IAGhBp6rB,EAAMx0T,EAAKw0T,GAGbgspB,EAAchspB,EAAMx0T,CACtB,CAUA,GARA82jC,IAAmBt2G,EACnBto/B,EAAM4C,EAAIm1+B,EACV/3+B,EAAM2B,EAAIq2+B,EACVh4+B,EAAMklH,SAAWoj4B,EACjBto/B,EAAMija,SAAS,CACb6uU,cAAe,WAGZqtX,EA0BE,CACLn/lC,EAAMija,SAAS,CACbigX,MAAOv/hB,IAET,IAAIy9d,EAAcphtB,EAAMgugB,OAAO74P,OAE3Bisc,IACFA,EAAYx+sB,GAAK5C,EAAM4C,EACvBw+sB,EAAYz/sB,GAAK3B,EAAM2B,EAE3B,KApCoB,CAClB,IAAIo9jC,EAAW/+jC,EAAM8iP,kBAAkB5zN,QACvC6viC,EAASt0H,eAAezq8B,EAAMuv9B,wBAE9B,IAAInxmB,GAAUp+W,EAAMgT,MAAMorW,QAAU,GAAK,IACzC2gtB,EAASp9jC,GAAKy8W,EAAS,EACvB2gtB,EAASphiC,QAAUygV,EACnBugvB,EAAgBn+lC,KAAK,CACnBR,MAAOA,EACP60iC,UAAWA,EACXv3gC,SAAU+q9B,EACV7q3B,IAAKwh+B,EACL96I,KAAM+6I,EACNt3B,aAAcT,EAAeplkC,IAAI,gBACjCimkC,gBAAiBb,EAAeplkC,IAAI,mBACpCgmkC,cAAe,IAAI,GAAM13I,EAAIsmG,GAC7BgxC,WAAYA,EACZ/j1B,UAAWA,EACX4kwB,cAAeA,EACfw0G,aAAcA,EACdzu3B,aAAcA,EACdyw3B,YAAaA,EACb1sgC,KAAM0s+B,EACNk/B,mBAAoBl/B,EAASrhiC,MAC7BkgkC,gBAAiB59lC,EAAMgT,MAAM0qB,OAEjC,CAYA0tyB,EAAOioJ,cAAc,CACnBny2B,OAAQi++B,GAtHV,CAwHF,KAEKP,GAAkBj9G,EAAY7/+B,IAAI,sBAtWzC,SAAsB68lC,EAAiBt/1B,EAAIumG,EAAIlnW,EAAG6r+B,EAAWC,EAAYoyH,EAAUC,GAMjF,IALA,IAAIuC,EAAW,GACXC,EAAY,GACZC,EAAYx7jC,OAAO+lJ,UACnB016B,GAAcz7jC,OAAO+lJ,UAEhBtqL,EAAI,EAAGA,EAAIo/lC,EAAgB3/lC,OAAQO,IAAK,CAC/C,IAAIS,EAAQ2+lC,EAAgBp/lC,GAAGS,MAE3Bm+lC,GAAiBQ,EAAgBp/lC,MAIjCS,EAAM4C,EAAIy8P,GACZig2B,EAAY99lC,KAAKgL,IAAI8ylC,EAAWt/lC,EAAM4C,GACtCw8lC,EAAS5+lC,KAAKm+lC,EAAgBp/lC,MAE9BggmC,EAAa/9lC,KAAK8K,IAAIizlC,EAAYv/lC,EAAM4C,GACxCy8lC,EAAU7+lC,KAAKm+lC,EAAgBp/lC,KAEnC,CAEA,IAASA,EAAI,EAAGA,EAAIo/lC,EAAgB3/lC,OAAQO,IAG1C,IAAK4+lC,GAFDt+9B,EAAS8+9B,EAAgBp/lC,KAEIsgI,EAAO6n8B,WAAY,CAClD,GAA8B,MAA1B7n8B,EAAO+99B,gBACT,SAGE59lC,EAAQ6/H,EAAO7/H,MAAnB,IAEI09lC,EADAh2B,EAAa7n8B,EAAO6n8B,WAKpBg2B,EAFwB,SAAxB799B,EAAOk99B,aACL/8lC,EAAM4C,EAAIy8P,EACMqo0B,EAAW,GAAG,GAAK7n8B,EAAO0o3B,cAAgBq0G,EAAW/89B,EAAOyuG,aAE5Dsu3B,EAAWryH,EAAY1q2B,EAAOyuG,aAAeo51B,EAAW,GAAG,GAAK7n8B,EAAO0o3B,cAE1D,cAAxB1o3B,EAAOk99B,aACZ/8lC,EAAM4C,EAAIy8P,EACMig2B,EAAY1C,EAAW/89B,EAAOk/9B,YAE9BnC,EAAWryH,EAAYg1H,EAAa1/9B,EAAOk/9B,YAG3D/+lC,EAAM4C,EAAIy8P,EACMr/P,EAAM4C,EAAIg6lC,EAAW/89B,EAAOk/9B,YAE5BnC,EAAWryH,EAAYvq+B,EAAM4C,EAAIi9H,EAAOk/9B,YAI9Dl/9B,EAAO699B,gBAAkBA,EACzBD,GAAmB599B,EAAQ699B,EAC7B,CAMF,IAHAf,GAAiB0C,EAAWhg2B,EAAIumG,EAAIlnW,EAAG,EAAG6r+B,EAAWC,EAAYoyH,EAAUC,EAAS0C,GACpF5C,GAAiByC,EAAU//1B,EAAIumG,EAAIlnW,GAAI,EAAG6r+B,EAAWC,EAAYoyH,EAAUC,EAASyC,GAE3E//lC,EAAI,EAAGA,EAAIo/lC,EAAgB3/lC,OAAQO,IAAK,CAC/C,IAAIsgI,EAEJ,IAAKs+9B,GAFDt+9B,EAAS8+9B,EAAgBp/lC,KAEIsgI,EAAO6n8B,WAAY,CAC9C1nkC,EAAQ6/H,EAAO7/H,MACf0nkC,EAAa7n8B,EAAO6n8B,WADxB,IAEI83B,EAAwC,SAAxB3/9B,EAAOk99B,aACvBlm+B,EAAU72H,EAAMgT,MAAM6jH,QACtBwi3B,EAAWxi3B,EAAUA,EAAQ,GAAKA,EAAQ,GAAK,EAE/C4o+B,EAAgBz/lC,EAAMgT,MAAMqlI,gBAAkB,EAAIgh2B,EAClDqmH,EAAgB7/9B,EAAOxtC,KAAK30D,MAAQ+hkC,EACpC/mwB,EAAOgvuB,EAAW,GAAG,GAAKA,EAAW,GAAG,GAExC83B,EACEx/lC,EAAM4C,EAAIy8P,EACZqo0B,EAAW,GAAG,GAAKk1B,EAAW/89B,EAAOyuG,aAAeox3B,EAAgB7/9B,EAAO0o3B,cAE3Em/E,EAAW,GAAG,GAAKk1B,EAAWryH,EAAY1q2B,EAAOyuG,aAAeox3B,EAAgB7/9B,EAAO0o3B,eAGrFvo/B,EAAM4C,EAAIy8P,EACZqo0B,EAAW,GAAG,GAAK1nkC,EAAM4C,EAAIi9H,EAAO0o3B,cAEpCm/E,EAAW,GAAG,GAAK1nkC,EAAM4C,EAAIi9H,EAAO0o3B,cAGtCm/E,EAAW,GAAG,GAAKA,EAAW,GAAG,GAAKhvuB,GAGxCgvuB,EAAW,GAAG,GAAKA,EAAW,GAAG,GAAK1nkC,EAAM2B,CAC9C,CACF,CACF,CAwQIg+lC,CAAahB,EAAiBt/1B,EAAIumG,EAAIlnW,EAAG6r+B,EAAWC,EAAYoyH,EAAUC,GAG5E,IAAK,IAAIt9lC,EAAI,EAAGA,EAAIo/lC,EAAgB3/lC,OAAQO,IAAK,CAC/C,IAAIsgI,EAAS8+9B,EAAgBp/lC,GACzBS,EAAQ6/H,EAAO7/H,MACf60iC,EAAYh16B,EAAOg16B,UACnB+qD,EAAe30jC,MAAMjrC,EAAM4C,IAAMqoC,MAAMjrC,EAAM2B,GAEjD,GAAI3B,EAAO,CACTA,EAAMija,SAAS,CACbigX,MAAOrjpB,EAAO8jH,YAGZi82B,IACF,EAAK5/lC,EAAMgugB,OAAQ8wlB,GACnB9+lC,EAAM8mC,QAAS,GAGjB,IAAIs6qB,EAAcphtB,EAAMgugB,OAAO74P,OAE3Bisc,IACFA,EAAYx+sB,GAAK5C,EAAM4C,EACvBw+sB,EAAYz/sB,GAAK3B,EAAM2B,EAE3B,CAEA,GAAIkziC,EAAW,CACb,IAAI6yB,EAAa7n8B,EAAO6n8B,WAEpBk4B,IAAiBl4B,GACnB,EAAK7yB,EAAU7miB,OAAQ8wlB,GACvBjqD,EAAU/tgC,QAAS,IAEnB0giC,GAAeE,EAAY7n8B,EAAO8n8B,cAClCE,GAAkBH,EAAY7n8B,EAAOio8B,cAAejo8B,EAAOko8B,iBAC3DlzB,EAAUtvpB,SAAS,CACjBt7W,OAAQy9hC,IAGV1nkC,EAAMgr8B,aAAa8pG,oBAAsB,CACvCltpB,OAAQ,IAAI,GAAM8/qB,EAAW,GAAG,GAAIA,EAAW,GAAG,KAGxD,CACF,CACF,CCvPI,CAAY/lF,GAEmC,cAA3CA,EAAY7/+B,IAAI,yBAClBnD,KAAKykJ,MAAQj1I,EAEjB,EAEAqwlC,EAAQngmC,UAAU2l8B,QAAU,WAAa,EAEzCw6J,EAAQngmC,UAAUm1iC,aAAe,SAAU1/5B,EAAO6t2B,GAChD,IACIk+G,EADOl+G,EAAYx+2B,UACDok7B,cAAc,GAEpC,GAAIs4C,EAAY,CACd,IAAI1s9B,EAAKW,EAAM,GAAK+r9B,EAAWxg2B,GAC3BrsH,EAAKc,EAAM,GAAK+r9B,EAAWj6vB,GAC3B3vN,EAASz0I,KAAK4yF,KAAK++C,EAAKA,EAAKH,EAAKA,GACtC,OAAOiD,GAAU4p9B,EAAWnhmC,GAAKu3I,GAAU4p9B,EAAW5yvB,EACxD,CACF,EAEAuxvB,EAAQtzlC,KAAO,MACRszlC,CACT,CAhFA,CAgFE78S,IChQa,SAASm+S,GAAuBn+G,EAAa5id,EAAKomhB,GAC/DpmhB,EAAMzuhB,GAAQyuhB,IAAQ,CACpB25d,gBAAiB35d,IACd/2I,EAAO,CACV+gqB,aAAcpnE,EAAY+lC,aACzB3of,GACH,IAAIv4hB,EAASm7+B,EAAYv3pB,YACrB/yL,EAAa8w5B,GAAwB3hjC,EAAQu4hB,GAAK1nY,WAClDviF,EAAO,IAAI,GAAWuiF,EAAYsq1B,GAEtC,OADA7s6B,EAAKgjX,SAAStxb,EAAQ2+iC,GACfrw+B,CACT,CCpBA,IAAIirhC,GAEJ,WACE,SAASA,EACTC,EACAprF,GACEj2gC,KAAKshmC,0BAA4BD,EACjCrhmC,KAAKuhmC,YAActrF,CACrB,CAgCA,OA9BAmrF,EAAqB1hmC,UAAU8hmC,YAAc,WAC3C,IAAInyF,EAAUrvgC,KAAKuhmC,cAInB,OAAOlyF,EAAQ84C,SAAS94C,EAAQrnrB,QAClC,EAEAo5wB,EAAqB1hmC,UAAU+hmC,YAAc,SAAU/2lC,GAGrD,OAFc1K,KAAKuhmC,cAEJt+H,YAAYv49B,IAAS,CACtC,EAEA02lC,EAAqB1hmC,UAAUuj+B,YAAc,SAAUv49B,GAMrD,OAF4B1K,KAAKshmC,4BAEJr+H,YAAYv49B,EAC3C,EAEA02lC,EAAqB1hmC,UAAU6wgC,cAAgB,SAAUlr2B,EAAWxgJ,GAIlE,OAF4B7kB,KAAKshmC,4BAEJ/wF,cAAclr2B,EAAWxgJ,EACxD,EAEOu8kC,CACT,CAvCA,GAyCA,YCxCA,IAAI5xU,GAAY,KAqLhB,SAjLA,SAAU9ma,GAGR,SAASg5uB,IACP,OAAkB,OAAXh5uB,GAAmBA,EAAOnoX,MAAMP,KAAMI,YAAcJ,IAC7D,CAyKA,OA7KA4sa,EAAU80rB,EAAgBh5uB,GAU1Bg5uB,EAAehimC,UAAUgxD,KAAO,SAAUmN,GACxC6qT,EAAOhpX,UAAUgxD,KAAKnwD,MAAMP,KAAMI,WAIlCJ,KAAK2hmC,qBAAuB,IAAI,GAAqB,GAAY3hmC,KAAKwkI,QAASxkI,MAAO,GAAYA,KAAKi2gC,WAAYj2gC,OAEnHA,KAAK4hmC,kBAAkB/jiC,EACzB,EAMA6jiC,EAAehimC,UAAUus/B,YAAc,WACrCvjoB,EAAOhpX,UAAUus/B,YAAY1r/B,MAAMP,KAAMI,UAC3C,EAMAshmC,EAAehimC,UAAUyohC,eAAiB,WACxC,OAAOg5E,GAAuBnhmC,KAAM,CAClC+5/B,gBAAiB,CAAC,SAClBswD,gBAAiB,GAAa9uD,GAA8Bv7/B,OAEhE,EAMA0hmC,EAAehimC,UAAUywgC,cAAgB,SAAU9q2B,GACjD,IAAI71J,EAAOxP,KAAKwkI,UAEZq99B,EAAYryU,GAAUhgxB,GACtBqv9B,EAAQgjI,EAAUhjI,MAEtB,IAAKA,EAAO,CACV,IAAIijI,EAAc,GAClBtylC,EAAKwywB,KAAKxywB,EAAK42iC,aAAa,UAAU,SAAUjljC,GAC9C2gmC,EAAYjgmC,KAAKV,EACnB,IACA099B,EAAQgjI,EAAUhjI,MAAQH,GAAgBojI,EAAatylC,EAAKy0iC,UAAU9gjC,IAAI,oBAC5E,CAEA,IAAIklC,EAASqgV,EAAOhpX,UAAUywgC,cAAcvwgC,KAAKI,KAAMqlK,GAKvD,OAFAh9H,EAAOo46B,QAAUoe,EAAMx5zB,IAAc,EACrCh9H,EAAOsq9B,MAAM9w/B,KAAK,WACXwmC,CACT,EAEAq5jC,EAAehimC,UAAUkimC,kBAAoB,SAAU/jiC,GAErD,GAA0BA,EAAQ,YAAa,CAAC,SAChD,IAAIkkiC,EAAqBlkiC,EAAOq4+B,UAC5B8rD,EAAuBnkiC,EAAO+i6B,SAASs1E,UAE3C6rD,EAAmB9+wB,KAAO8+wB,EAAmB9+wB,MAAQplR,EAAOx8D,MAAM4hV,KAClE++wB,EAAqB/+wB,KAAO++wB,EAAqB/+wB,MAAQplR,EAAO+i6B,SAASv/9B,MAAM4hV,IACjF,EAEAy+wB,EAAen1lC,KAAO,aACtBm1lC,EAAe9gkB,cAAgB,CAE7Bj7hB,EAAG,EACH2+kC,iBAAiB,EACjBpsF,QAAS,OAETj59B,OAAQ,CAAC,MAAO,OAChBq4G,OAAQ,CAAC,EAAG,OAEZstN,WAAW,EACXikb,WAAY,GAEZmlD,SAAU,EAGVi0R,kBAAmB,EAEnBC,eAAgB,GAKhBC,iBAAkB,EAElB5E,kBAAkB,EAElB1+jC,KAAM,EACNC,IAAK,EACL+gE,MAAO,EACPC,OAAQ,EACR/gE,MAAO,KACPC,OAAQ,KACR39B,MAAO,CAGLokH,OAAQ,EACRw9N,MAAM,EACNs+B,SAAU,WAEV5iV,SAAU,QAEV+p+B,QAAS,OAGT/4xB,aAAc,MAEdyw3B,YAAa,GAEbgC,oBAAqB,GAMvBlsD,UAAW,CACTjztB,MAAM,EAEN5iV,OAAQ,GAER438B,QAAS,GACTny1B,QAAQ,EACRkj9B,aAAc,GACdI,gBAAiB,GACjBj3V,UAAW,CAETpzsB,MAAO,EACPxyB,KAAM,UAGVg4+B,UAAW,CACT/M,YAAa,EACb6qH,WAAY,SAEdC,iBAAiB,EACjBC,iBAAkB,CAChBh1+B,MAAO,YACPqe,QAAS,GAEX429B,YAAa,CAEX/1B,aAAa,GAEf7rG,SAAU,CACR9+3B,OAAO,EACPgp6B,UAAW,GAGb23F,mBAAmB,EAEnBn9G,cAAe,YACfoT,kBAAmB,IAEnBgqG,oBAAqB,aACrB7pG,sBAAuB,aACvBF,wBAAyB,IACzBC,gBAAiB,cAEZ8oG,CACT,CA/KA,CA+KE/jV,ICjGF,GApFA,SAAUj1Z,GAGR,SAASi6uB,IACP,IAAIj2iC,EAAmB,OAAXg8T,GAAmBA,EAAOnoX,MAAMP,KAAMI,YAAcJ,KAIhE,OAFA0sD,EAAMngD,KAAOo2lC,EAAmBp2lC,KAChCmgD,EAAM499B,iBAAkB,EACjB599B,CACT,CAwEA,OAhFAkgX,EAAU+1rB,EAAoBj6uB,GAU9Bi6uB,EAAmBjjmC,UAAUyohC,eAAiB,SAAUtq9B,EAAQyl6B,GAC9D,OAAO,GAAiB,KAAMtj+B,KAAM,CAClC0ujC,oBAAoB,GAExB,EAEAi0C,EAAmBjjmC,UAAU4phC,eAAiB,WAC5C,IAAItwB,EAAch5/B,KAAK69D,OAAOm77B,YAE9B,OAAmB,MAAfA,EAEKh5/B,KAAK69D,OAAOq6wB,MAAQ,IAAMl40B,KAAKmD,IAAI,eAGrC61/B,CACT,EAEA2pG,EAAmBjjmC,UAAU6phC,wBAA0B,WACrD,IAAIxwB,EAAuB/4/B,KAAK69D,OAAOk77B,qBAEvC,OAA4B,MAAxBA,EAEK/4/B,KAAK69D,OAAOq6wB,MAAQ,IAAMl40B,KAAKmD,IAAI,wBAGrC41/B,CACT,EAEA4pG,EAAmBjjmC,UAAUi2lC,cAAgB,SAAUtw7B,EAAW71J,EAAMyzkC,GACtE,OAAOA,EAAU9t8B,MAAM3lI,EAAKo5iC,cAAcvj5B,GAC5C,EAEAs97B,EAAmBjjmC,UAAUs2/B,aAAe,WAE1C,OAAOh2/B,KAAKwkI,UAAUj7E,QAAUvpD,KAAKuphC,0BAA4BvphC,KAAKurB,GAAK,EAC7E,EAEAo3kC,EAAmBp2lC,KAAO,iBAC1Bo2lC,EAAmB1m8B,aAAe,CAAC,OAAQ,QAAS,MAAO,aAAc,YACzE0m8B,EAAmB/hkB,cAAgB,CACjC7ua,iBAAkB,cAElBpsH,EAAG,EACH2+kC,iBAAiB,EACjB/rF,WAAY,GAEZrgL,OAAO,EAEPs9Q,eAAgB,IAEhBjxG,UAAW,CACT342B,QAAS,IAGXg11B,SAAU,CACR9+3B,OAAO,GAITqpT,MAAM,EACN30I,OAAQ,CACN+tuB,UAAW,CACTjsoB,YAAa,YAGjB4xqB,oBAAqB,CACnB26D,YAAa,UAIV8d,CACT,CAlFA,CAkFEhlV,ICjFF,IAEIilV,GAGF,WAAiC,EAK/BC,GAEJ,SAAUn6uB,GAGR,SAASm6uB,EAAgBxmjC,GACvB,IAAIqQ,EAAQg8T,EAAO9oX,KAAKI,KAAMq8C,IAASr8C,KAIvC,OAFA0sD,EAAMo2iC,KAAO,EACbp2iC,EAAMq2iC,cAAgB,EACfr2iC,CACT,CA+JA,OAvKAkgX,EAAUi2rB,EAAiBn6uB,GAU3Bm6uB,EAAgBnjmC,UAAUk0+B,gBAAkB,WAC1C,OAAO,IAAIgvH,EACb,EAEAC,EAAgBnjmC,UAAUuhE,MAAQ,WAChCjhE,KAAKs0hC,UAAW,EAChBt0hC,KAAK8imC,KAAO,CACd,EAEAD,EAAgBnjmC,UAAUg0+B,UAAY,SAAUr98B,EAAMisM,GACpD,IAOI1hO,EAPA0qC,EAASg3L,EAAMh3L,OACf1mB,EAAO09M,EAAM19M,KACbo+kC,EAAchjmC,KAAKgjmC,YACnBC,EAAmBD,EAAY1g4B,MAC/BgV,EAAMjhN,EAAK02B,WAAa12B,EAAK02B,aAAe12B,EAC5C6skC,EAAW5r3B,GAAO1yN,EAAK,GAtCJ,EAuCnBu+kC,EAAgBnjmC,KAAKmjmC,cAGzB,GAAID,EACFljmC,KAAKqn8B,KAAO/vtB,MADd,CAOA,IAFAt3O,KAAKqn8B,KAAO,KAEPzm8B,EAAIZ,KAAK8imC,KAAMlimC,EAAI0qC,EAAOjrC,QAAS,CACtC,IAAI4D,EAAIqnC,EAAO1qC,KACXoC,EAAIsoC,EAAO1qC,KAEX0rC,MAAMroC,IAAMqoC,MAAMtpC,IAIlBmgmC,IAAkBA,EAAcvvJ,QAAQ3v8B,EAAGjB,KAI/CigmC,EAAiBh/lC,EAAIA,EAAI2gB,EAAK,GAAK,EACnCq+kC,EAAiBjgmC,EAAIA,EAAI4hB,EAAK,GAAK,EACnCq+kC,EAAiBlkkC,MAAQna,EAAK,GAC9Bq+kC,EAAiBjkkC,OAASpa,EAAK,GAC/Bo+kC,EAAYtvH,UAAUr98B,EAAM4skC,GAAkB,GAChD,CAEIjjmC,KAAK0t+B,cACP1t+B,KAAK8imC,KAAOlimC,EACZZ,KAAKs0hC,UAAW,EAzBlB,CA2BF,EAEAuuE,EAAgBnjmC,UAAU8r+B,WAAa,WACrC,IAKI5q+B,EALA0hO,EAAQtiO,KAAKsiO,MACbh3L,EAASg3L,EAAMh3L,OACf1mB,EAAO09M,EAAM19M,KACb0yN,EAAMt3O,KAAKqn8B,KACX87J,EAAgBnjmC,KAAKmjmC,cAGzB,GAAK7r3B,EAAL,CAKA,IAAK12O,EAAIZ,KAAK8imC,KAAMlimC,EAAI0qC,EAAOjrC,QAAS,CACtC,IAAI4D,EAAIqnC,EAAO1qC,KACXoC,EAAIsoC,EAAO1qC,KAEX0rC,MAAMroC,IAAMqoC,MAAMtpC,IAIlBmgmC,IAAkBA,EAAcvvJ,QAAQ3v8B,EAAGjB,IAM/Cs0O,EAAIuyhB,SAAS5lwB,EAAI2gB,EAAK,GAAK,EAAG5hB,EAAI4hB,EAAK,GAAK,EAAGA,EAAK,GAAIA,EAAK,GAC/D,CAEI5kB,KAAK0t+B,cACP1t+B,KAAK8imC,KAAOlimC,EACZZ,KAAKs0hC,UAAW,EAtBlB,CAwBF,EAEAuuE,EAAgBnjmC,UAAU0jmC,cAAgB,SAAUn/lC,EAAGjB,GAWrD,IARA,IAAIs/N,EAAQtiO,KAAKsiO,MACbh3L,EAASg3L,EAAMh3L,OACf1mB,EAAO09M,EAAM19M,KACbrhB,EAAIV,KAAK8K,IAAIiX,EAAK,GAAI,GACtBhiB,EAAIC,KAAK8K,IAAIiX,EAAK,GAAI,GAIjBk2V,EAAMxvU,EAAOjrC,OAAS,EAAI,EAAGy6W,GAAO,EAAGA,IAAO,CACrD,IAAIl6W,EAAU,EAANk6W,EACJ10H,EAAK96M,EAAO1qC,GAAK2C,EAAI,EACrBkuL,EAAKnmJ,EAAO1qC,EAAI,GAAKgC,EAAI,EAE7B,GAAIqB,GAAKmiP,GAAMpjP,GAAKyuL,GAAMxtL,GAAKmiP,EAAK7iP,GAAKP,GAAKyuL,EAAK7uL,EACjD,OAAOk4W,CAEX,CAEA,OAAQ,CACV,EAEA+nvB,EAAgBnjmC,UAAUk08B,QAAU,SAAU3v8B,EAAGjB,GAC/C,IAAI6x+B,EAAW70+B,KAAKix9B,sBAAsBht9B,EAAGjB,GACzC0wF,EAAO1zF,KAAKmkP,kBAIhB,OAHAlgP,EAAI4w+B,EAAS,GACb7x+B,EAAI6x+B,EAAS,GAETnh5B,EAAKkg3B,QAAQ3v8B,EAAGjB,IAEJhD,KAAK+imC,aAAe/imC,KAAKojmC,cAAcn/lC,EAAGjB,KACtC,GAGpBhD,KAAK+imC,cAAgB,GACd,EACT,EAEAF,EAAgBnjmC,UAAUykP,gBAAkB,WAE1C,IAAIzwJ,EAAO1zF,KAAK6s+B,MAEhB,IAAKn54B,EAAM,CAWT,IAVA,IAAI4uI,EAAQtiO,KAAKsiO,MACbh3L,EAASg3L,EAAMh3L,OACf1mB,EAAO09M,EAAM19M,KACbrhB,EAAIqhB,EAAK,GACThiB,EAAIgiB,EAAK,GACT21J,EAAOx6G,IACPy6G,EAAOz6G,IACP06G,GAAO,IACPC,GAAO,IAEF95K,EAAI,EAAGA,EAAI0qC,EAAOjrC,QAAS,CAClC,IAAI4D,EAAIqnC,EAAO1qC,KACXoC,EAAIsoC,EAAO1qC,KACf25K,EAAO13K,KAAKgL,IAAI5J,EAAGs2K,GACnBE,EAAO53K,KAAK8K,IAAI1J,EAAGw2K,GACnBD,EAAO33K,KAAKgL,IAAI7K,EAAGw3K,GACnBE,EAAO73K,KAAK8K,IAAI3K,EAAG03K,EACrB,CAEAhnF,EAAO1zF,KAAK6s+B,MAAQ,IAAI,GAAqBtyzB,EAAOh3K,EAAI,EAAGi3K,EAAO53K,EAAI,EAAG63K,EAAOF,EAAOh3K,EAAGm3K,EAAOF,EAAO53K,EAC1G,CAEA,OAAO8wF,CACT,EAEOmvgC,CACT,CAzKA,CAyKE,IAEEQ,GAEJ,WACE,SAASA,IACPrjmC,KAAKo7T,MAAQ,IAAI,EACnB,CAmIA,OA7HAioyB,EAAgB3jmC,UAAUizjB,WAAa,SAAUnjjB,EAAM4whB,GACrDpgiB,KAAKo3lC,SAEL,IAAItP,EAAW9nlC,KAAKsjmC,UAEpBxb,EAASlhsB,SAAS,CAChBt7W,OAAQ97B,EAAKm5iC,UAAU,YAGzB3ojC,KAAKujmC,WAAWzb,EAAUt4kC,EAAM4whB,EAClC,EAEAijkB,EAAgB3jmC,UAAU+rhC,aAAe,SAAUj8gC,GACjD,IAAI87B,EAAS97B,EAAKm5iC,UAAU,UAC5B3ojC,KAAKo7T,MAAM+/pB,WAAU,SAAUjx4B,GAC7B,GAAwB,MAApBA,EAAMy1C,WAAoB,CAC5B,IAAId,EAA4C,GAArC30C,EAAM01C,SAAW11C,EAAMy1C,YAC9Bx3G,EAAgC,EAAnB+hE,EAAMy1C,WAAiB,EACxCr0F,EAAS,IAAItrB,aAAasrB,EAAOpjB,OAAQC,EAAY02G,EACvD,CAEA30C,EAAM08T,SAAS,SAAUt7W,GAEzB4+C,EAAMjpB,OACR,GACF,EAEAoiiC,EAAgB3jmC,UAAUyolC,yBAA2B,SAAU34kC,GAC7DxP,KAAKo3lC,QACP,EAEAiM,EAAgB3jmC,UAAU2olC,kBAAoB,SAAUC,EAAY94kC,EAAM4whB,GACxE,IAAIojkB,EAAYxjmC,KAAKyjmC,UAAU,GAC3Bn4jC,EAAS97B,EAAKm5iC,UAAU,UACxB+pC,EAAY8Q,GAAaA,EAAUlh4B,MAAMh3L,OAG7C,GAAIonjC,GAAaA,EAAUrylC,OAAS,IAAK,CACvC,IAAI04gC,EAAS25E,EAAUrylC,OACnB4skC,EAAY,IAAIjtjC,aAAa+4/B,EAASzt+B,EAAOjrC,QAEjD4skC,EAAUhhkC,IAAIymlC,GACdzlB,EAAUhhkC,IAAIq/B,EAAQyt+B,GAEtByqF,EAAU5j+B,SAAW0o9B,EAAW7hjC,IAChC+8jC,EAAU58sB,SAAS,CACjBt7W,OAAQ2hiC,GAEZ,KAAO,CAELjtkC,KAAKyjmC,UAAY,GAEjB,IAAI3b,EAAW9nlC,KAAKsjmC,UAEpBxb,EAASno9B,WAAa2o9B,EAAW9hjC,MACjCshjC,EAASlo9B,SAAW0o9B,EAAW7hjC,IAC/BqhjC,EAASp6G,aAAc,EACvBo6G,EAASlhsB,SAAS,CAChBt7W,OAAQA,IAGVtrC,KAAKujmC,WAAWzb,EAAUt4kC,EAAM4whB,EAClC,CACF,EAEAijkB,EAAgB3jmC,UAAUmshC,aAAe,SAAUnq9B,GACjD1hE,KAAKyjmC,UAAU,IAAM/hiC,EAAG1hE,KAAKyjmC,UAAU,GACzC,EAEAJ,EAAgB3jmC,UAAU4jmC,QAAU,WAClC,IAAIxb,EAAW,IAAI+a,GAAgB,CACjCxh9B,OAAQ,YAOV,OALAym8B,EAAS7xI,qBAAsB,EAC/Bj28B,KAAKo7T,MAAMj2S,IAAI2ikC,GAEf9nlC,KAAKyjmC,UAAU5hmC,KAAKimlC,GAEbA,CACT,EAEAub,EAAgB3jmC,UAAU6jmC,WAAa,SAAUzb,EAAUt4kC,EAAM4whB,GAC/D,IAAI6jhB,EAAYz0iC,EAAKy0iC,UACrB7jhB,EAAMA,GAAO,CAAC,EACd,IAAIx7gB,EAAOpV,EAAKsshC,UAAU,cAC1BgsD,EAASlhsB,SAAS,OAAQhiY,aAAgBnlB,MAAQmlB,EAAO,CAACA,EAAMA,IAChEkjkC,EAASqb,cAAgB/ikB,EAAIinjB,WAAa,KAE1CS,EAASkb,YAAc,GAAaxzlC,EAAKsshC,UAAU,UAAW,EAAG,EAAG,EAAG,GAEvEgsD,EAASrhD,SAAWqhD,EAASkb,YAAYv8D,SACzC,IAAIi9D,EAAgB5b,EAASxl3B,MAAM19M,KAAK,GA7RjB,EA8RvBkjkC,EAAS19rB,SACT65pB,EAAUrs3B,SAAS,aAAam0zB,aAAa23G,EAAgB,CAAC,QAAS,aAAc,eAAiB,CAAC,WACvG,IAAIxoE,EAAc1rhC,EAAKsshC,UAAU,SAC7ByqD,EAAcrrD,GAAeA,EAAY995B,KAEzCmp9B,GACFuB,EAASrhD,SAAS8/C,GAGpB,IAAIppG,EAASH,GAAU8qG,GAGvB3qG,EAAOD,YAAc+mE,EAAU/mE,YAC/B4qG,EAASl3kC,GAAG,aAAa,SAAUzR,GACjCg++B,EAAO930B,UAAY,KACnB,IAAIA,EAAYyi7B,EAASib,aAErB197B,GAAa,IAEf830B,EAAO930B,UAAYA,GAAayi7B,EAASno9B,YAAc,GAE3D,GACF,EAEA0j+B,EAAgB3jmC,UAAUmzB,OAAS,WACjC7yB,KAAKo3lC,QACP,EAEAiM,EAAgB3jmC,UAAU03lC,OAAS,WACjCp3lC,KAAKyjmC,UAAY,GACjBzjmC,KAAKo7T,MAAMvtE,WACb,EAEOw12B,CACT,CAvIA,GAyIA,YCzNA,GAxGA,SAAU36uB,GAGR,SAASi7uB,IACP,IAAIj3iC,EAAmB,OAAXg8T,GAAmBA,EAAOnoX,MAAMP,KAAMI,YAAcJ,KAGhE,OADA0sD,EAAMngD,KAAOo3lC,EAAYp3lC,KAClBmgD,CACT,CA6FA,OApGAkgX,EAAU+2rB,EAAaj7uB,GASvBi7uB,EAAYjkmC,UAAU4uH,OAAS,SAAU003B,EAAa1f,EAASr07B,GAC7D,IAAIz/B,EAAOwz+B,EAAYx+2B,UAENxkI,KAAK4jmC,kBAAkBp0lC,EAAMwz+B,GAEnCrwb,WAAWnjjB,EAAM,CAK1B63kC,UAAWrnlC,KAAK6jmC,cAAc7gH,KAEhChj/B,KAAK44Z,WAAY,CACnB,EAEA+qsB,EAAYjkmC,UAAU85hC,yBAA2B,SAAUx2C,EAAa1f,EAASr07B,GAC/E,IAAIz/B,EAAOwz+B,EAAYx+2B,UAENxkI,KAAK4jmC,kBAAkBp0lC,EAAMwz+B,GAEnCmlG,yBAAyB34kC,GACpCxP,KAAK44Z,WAAY,CACnB,EAEA+qsB,EAAYjkmC,UAAU+5hC,kBAAoB,SAAU6uD,EAAYtlG,EAAa1f,GAC3Etj+B,KAAKmtlC,YAAY9E,kBAAkBC,EAAYtlG,EAAYx+2B,UAAW,CACpE6i9B,UAAWrnlC,KAAK6jmC,cAAc7gH,KAGhChj/B,KAAK44Z,UAAY0vrB,EAAW7hjC,MAAQu88B,EAAYx+2B,UAAUj7E,OAC5D,EAEAo6iC,EAAYjkmC,UAAU+68B,gBAAkB,SAAUuoC,EAAa1f,EAASr07B,GACtE,IAAIz/B,EAAOwz+B,EAAYx+2B,UAKvB,GAFAxkI,KAAKo7T,MAAM0qc,SAEN9lwB,KAAK44Z,WAAappZ,EAAK+5C,QAAU,IACpC,MAAO,CACLglB,QAAQ,GAGV,IAAI82E,EAAM4u8B,GAAa,IAAIhzhC,MAAM+h7B,EAAa1f,EAASr07B,GAEnDo2G,EAAI4t3B,UACN5t3B,EAAI4t3B,SAAS,CACXzs+B,MAAO,EACPC,IAAKj3B,EAAK+5C,QACVA,MAAO/5C,EAAK+5C,SACX/5C,GAGLxP,KAAKmtlC,YAAY1hE,aAAaj8gC,EAElC,EAEAm0lC,EAAYjkmC,UAAUmshC,aAAe,SAAUnq9B,GAC7C1hE,KAAKmtlC,aAAentlC,KAAKmtlC,YAAYthE,aAAanq9B,EACpD,EAEAiiiC,EAAYjkmC,UAAUmkmC,cAAgB,SAAU7gH,GAC9C,IAAIE,EAAWF,EAAYjx3B,iBACvB+x+B,EAAW5gH,GAAYA,EAAS4nG,SAAW5nG,EAAS4nG,UACxD,OAAO9nG,EAAY7/+B,IAAI,QAAQ,GAAQ2gmC,EAAW,IACpD,EAEAH,EAAYjkmC,UAAUkkmC,kBAAoB,SAAUp0lC,EAAMwz+B,GACxD,IAAIkqG,EAAaltlC,KAAKmtlC,YAElBoK,EADkBv0G,EAAY+oC,gBACA7zM,MAUlC,OARKg1Q,GAAcqK,IAAgBv3lC,KAAKi3lC,eACtC/J,GAAcA,EAAWr6jC,SACzBq6jC,EAAaltlC,KAAKmtlC,YAAcoK,EAAc,IAAI,GAAoB,IAAI,GAC1Ev3lC,KAAKi3lC,aAAeM,EACpBv3lC,KAAKo7T,MAAMvtE,aAGb7tP,KAAKo7T,MAAMj2S,IAAI+nkC,EAAW9xxB,OACnB8xxB,CACT,EAEAyW,EAAYjkmC,UAAUmzB,OAAS,SAAUyw8B,EAASr07B,GAChDjvC,KAAKmtlC,aAAentlC,KAAKmtlC,YAAYt6jC,QAAO,GAC5C7yB,KAAKmtlC,YAAc,IACrB,EAEAwW,EAAYjkmC,UAAU2l8B,QAAU,WAAa,EAE7Cs+J,EAAYp3lC,KAAO,UACZo3lC,CACT,CAtGA,CAsGE3gT,IC5EF,GA7BA,SAAUt6b,GAGR,SAASq7uB,IACP,OAAkB,OAAXr7uB,GAAmBA,EAAOnoX,MAAMP,KAAMI,YAAcJ,IAC7D,CAqBA,OAzBA4sa,EAAUm3rB,EAAWr7uB,GAMrBq7uB,EAAUx3lC,KAAO,OACjBw3lC,EAAU9n8B,aAAe,CAAC,QAAS,SACnC8n8B,EAAUvvG,WAAa,MACvBuvG,EAAUnjkB,cAAgB,CACxB39M,MAAM,EAENt9U,EAAG,EACHk5B,KAAM,MACNC,IAAK,GACL+gE,MAAO,MACPC,OAAQ,GAERkkgC,cAAc,EAGdtq9B,gBAAiB,gBACjB891B,YAAa,EACbl/nB,YAAa,QAERyrvB,CACT,CA3BA,CA2BEr38B,IC1BF,IAAIu38B,GAEJ,SAAUv7uB,GAGR,SAASu7uB,IACP,OAAkB,OAAXv7uB,GAAmBA,EAAOnoX,MAAMP,KAAMI,YAAcJ,IAC7D,CAOA,OAXA4sa,EAAUq3rB,EAAoBv7uB,GAM9Bu7uB,EAAmBvkmC,UAAUohkC,iBAAmB,WAC9C,OAAO9gkC,KAAK41/B,uBAAuB,OAAQrxB,IAAkB1z0B,OAAO,EACtE,EAEAoz8B,EAAmB13lC,KAAO,kBACnB03lC,CACT,CAbA,CAaEv38B,IAGF,EAAau38B,GAAoBpjC,ICvBjC,IAAIjgiB,GAAgB,CAClB39M,MAAM,EAENt9U,EAAG,EAEH04vB,SAAS,EAET3zvB,KAAM,GAENw5lC,aAAc,MAEdC,WAAY,KACZC,aAAc,CACZl07B,SAAU,KACVs4zB,SAAU,MACVh36B,YAAa,KAGf6yiC,cAAe,CAAC,EAEhBn6F,QAAS,GAET91hB,QAAQ,EAERkwnB,cAAc,EACdjm9B,QAAS,CACP4kM,MAAM,GAER2mrB,YAAa,CAAC,EACdxrG,SAAU,CACRn7kB,MAAM,EACNshxB,QAAQ,EACRC,gBAAiB,KACjBryX,UAAW,CACT5knB,MAAO,UACPxuF,MAAO,EACPxyB,KAAM,SAGR2tf,OAAQ,CAAC,OAAQ,QACjBq+f,WAAY,CAAC,GAAI,KAEnBksG,SAAU,CACRxhxB,MAAM,EAEN1gO,QAAQ,EAERliH,OAAQ,EACR8xuB,UAAW,CACTpzsB,MAAO,IAGXwj0B,UAAW,CACTt/gB,MAAM,EAEN1gO,QAAQ,EACRkD,OAAQ,EAERi/+B,aAAc,KAEdC,aAAc,KACdllvB,OAAQ,EAERh7H,SAAU,IAEZ08yB,UAAW,CACTl+sB,MAAM,EACNkvZ,UAAW,CACT5knB,MAAO,CAAC,WACRxuF,MAAO,EACPxyB,KAAM,UAGV60hC,UAAW,CACTn+sB,MAAM,EACNuhqB,UAAW,CACTj33B,MAAO,CAAC,wBAAyB,4BAInCsuvB,GAAe,EAAa,CAE9BwhN,aAAa,EAEblN,cAAe,KAIfhvB,UAAW,CACTl+sB,MAAM,GAERwhxB,SAAU,CAERj/B,gBAAgB,EAChBtjmB,SAAU,QAEZqgY,UAAW,CACTrgY,SAAU,SAEX0+D,IACCyhgB,GAAY,EAAa,CAC3Bg7B,YAAa,CAAC,EAAG,GACjBj/J,SAAU,CAERn7kB,KAAM,QAERwhxB,SAAU,CAERxhxB,KAAM,QAIRguuB,YAAa,EACb8B,UAAW,CAET9vuB,MAAM,EAENguuB,YAAa,EAEb5wjC,OAAQ,EAER8xuB,UAAW,CACX,GAEFkvT,eAAgB,CACdp+sB,MAAM,EACNkvZ,UAAW,CACT5knB,MAAO,UACPxuF,MAAO,KAGV6hgB,IAoBH,UACEx+T,SAAUy5oB,GACV162B,MAAOkhiC,GACPx8+B,KAtBa,EAAa,CAC1BorgC,YAAa,EACb1uN,UAAW,CAETmiQ,cAAc,EACdC,cAAc,EACd36H,KAAM,CACJ1/5B,QAAS,CACPs6K,WAAY,UAIlBu8yB,UAAW,CACTl+sB,MAAM,IAEPo/sB,IAQDh4gC,IAPY,EAAgB,CAC5Bu6kC,QAAS,IACRviE,KCvJI,IAAIwiE,GAAa,CACtB1jmC,MAAO,EACPihO,SAAU,EACVv8K,KAAM,EACNx7B,IAAK,GCOQ,SAASy6kC,GAAiB/0B,EAAWrmE,EAAUq7F,EAAoBC,GAChF,EAAKH,IAAY,SAAU5hmC,EAAGsk1B,GAC5B,IAAI3mT,EAAgB9/R,EAAMA,EAAM,CAAC,EAAGmk2B,GAAY19Q,IAAW,GAAOy9Q,GAAoB,GAElFE,EAEJ,SAAUx8uB,GAGR,SAASw8uB,IACP,IAAIx4iC,EAAmB,OAAXg8T,GAAmBA,EAAOnoX,MAAMP,KAAMI,YAAcJ,KAGhE,OADA0sD,EAAMngD,KAAOm9/B,EAAW,QAAUniL,EAC3B76xB,CACT,CA+CA,OAtDAkgX,EAAUs4rB,EAAWx8uB,GASrBw8uB,EAAUxlmC,UAAU21/B,qBAAuB,SAAUx37B,EAAQyl6B,GAC3D,IAAIkxB,EAAaF,GAAgBt0/B,MAC7Bs1/B,EAAsBd,EAAaU,GAAgBr37B,GAAU,CAAC,EAElEijM,EAAMjjM,EADWyl6B,EAAQlga,WACAjgkB,IAAIok1B,EAAW,SACxCzmlB,EAAMjjM,EAAQ79D,KAAK8giB,oBACnBjje,EAAOtxD,KAAO44lC,GAAYtniC,GAEtB227B,GACFC,GAAiB527B,EAAQy37B,EAAqBd,EAElD,EAEA0wG,EAAUxlmC,UAAU61/B,cAAgB,WAGV,aAFPv1/B,KAAK69D,OAEPtxD,OACbvM,KAAKolmC,cAAgB,GAAYh1C,kBAAkBpwjC,MAEvD,EAOAklmC,EAAUxlmC,UAAU09jC,cAAgB,SAAU/tD,GAC5C,IAAIxx8B,EAAS79D,KAAK69D,OAGlB,GAAoB,aAAhBA,EAAOtxD,KACT,OAAI8igC,EACKxx8B,EAAOruD,KAGTxP,KAAKolmC,cAAcp8O,UAE9B,EAEAk8O,EAAUxlmC,UAAUi7gC,eAAiB,WACnC,OAAO36gC,KAAKolmC,aACd,EAEAF,EAAU34lC,KAAOm9/B,EAAW,QAAUniL,EACtC29Q,EAAUtkkB,cAAgBA,EACnBskkB,CACT,CAxDA,CAwDEH,GAEFh1B,EAAUpyB,uBAAuBunD,EACnC,IACAn1B,EAAU35E,yBAAyBsT,EAAW,OAAQy7F,GACxD,CAEA,SAASA,GAAYtniC,GAEnB,OAAOA,EAAOtxD,OAASsxD,EAAOruD,KAAO,WAAa,QACpD,CCjFA,IAAI61lC,GAEJ,WACE,SAASA,EAAU36lC,GACjB1K,KAAKuM,KAAO,YACZvM,KAAKslmC,SAAW,GAChBtlmC,KAAKgkzB,MAAQ,CAAC,EACdhkzB,KAAK0K,KAAOA,GAAQ,EACtB,CA0BA,OAxBA26lC,EAAU3lmC,UAAUsh3B,QAAU,SAAUrphB,GACtC,OAAO33V,KAAKgkzB,MAAMrsd,EACpB,EAEA0twB,EAAU3lmC,UAAU482B,QAAU,WAC5B,OAAO,EAAWt82B,KAAKslmC,UAAU,SAAU3twB,GACzC,OAAO33V,KAAKgkzB,MAAMrsd,EACpB,GAAG33V,KACL,EAEAqlmC,EAAU3lmC,UAAUqulC,eAAiB,SAAUpvB,GAE7C,OADAA,EAAYA,EAAUpvjC,cACf,GAAcvP,KAAKs82B,WAAW,SAAU7xqB,GAC7C,OAAOA,EAAK3oG,MAAMv1F,OAASoyjC,CAC7B,GACF,EAEA0mC,EAAU3lmC,UAAU6lmC,QAAU,SAAU965B,GACtC,IAAIktJ,EAAMltJ,EAAKktJ,IACf33V,KAAKgkzB,MAAMrsd,GAAOltJ,EAElBzqM,KAAKslmC,SAASzjmC,KAAK81V,EACrB,EAEO0twB,CACT,CAjCA,GCCWG,GAAwB,CAAC,IAAK,KAEzC,SAASC,GAA4B3jgC,GACnC,MAAsB,aAAfA,EAAMv1F,MAAsC,SAAfu1F,EAAMv1F,IAC5C,CAEA,IAAIm5lC,GAEJ,SAAUh9uB,GAGR,SAASg9uB,IACP,IAAIh5iC,EAAmB,OAAXg8T,GAAmBA,EAAOnoX,MAAMP,KAAMI,YAAcJ,KAIhE,OAFA0sD,EAAMngD,KAAO,cACbmgD,EAAMgsG,WAAa8s8B,GACZ94iC,CACT,CA6HA,OArIAkgX,EAAU84rB,EAAah9uB,GAevBg9uB,EAAYhmmC,UAAUimmC,oBAAsB,WAC1C3lmC,KAAK4lmC,WAAa5lmC,KAAK6lmC,cAAgB,KACvC,IAAIC,EAAa9lmC,KAAKgh3B,QAAQ,KAAKl/wB,MAC/BikgC,EAAa/lmC,KAAKgh3B,QAAQ,KAAKl/wB,MAEnC,GAAK2jgC,GAA4BK,IAAgBL,GAA4BM,GAA7E,CAIA,IAAIC,EAAeF,EAAWt2C,YAC1By2C,EAAeF,EAAWv2C,YAC1BhphC,EAAQxmC,KAAK23jC,YAAY,CAACquC,EAAa,GAAIC,EAAa,KACxDx/jC,EAAMzmC,KAAK23jC,YAAY,CAACquC,EAAa,GAAIC,EAAa,KACtDC,EAAaF,EAAa,GAAKA,EAAa,GAC5CG,EAAaF,EAAa,GAAKA,EAAa,GAEhD,GAAKC,GAAeC,EAApB,CAKA,IAAIvt+B,GAAUnyF,EAAI,GAAKD,EAAM,IAAM0/jC,EAC/Brt+B,GAAUpyF,EAAI,GAAKD,EAAM,IAAM2/jC,EAC/BC,EAAa5/jC,EAAM,GAAKw/jC,EAAa,GAAKpt+B,EAC1Cyt+B,EAAa7/jC,EAAM,GAAKy/jC,EAAa,GAAKpt+B,EAC1Cz1H,EAAIpD,KAAK4lmC,WAAa,CAACht+B,EAAQ,EAAG,EAAGC,EAAQut+B,EAAYC,GAC7DrmmC,KAAK6lmC,cAAgB,GAAO,GAAIzimC,EARhC,CAXA,CAoBF,EAMAsimC,EAAYhmmC,UAAUwphC,YAAc,WAClC,OAAOlphC,KAAK+tlC,eAAe,WAAW,IAAM/tlC,KAAK+tlC,eAAe,QAAQ,IAAM/tlC,KAAKgh3B,QAAQ,IAC7F,EAEA0kP,EAAYhmmC,UAAUm1iC,aAAe,SAAU1/5B,GAC7C,IAAImx9B,EAAQtmmC,KAAKgh3B,QAAQ,KACrBulP,EAAQvmmC,KAAKgh3B,QAAQ,KACzB,OAAOslP,EAAM1yJ,QAAQ0yJ,EAAME,aAAarx9B,EAAM,MAAQox9B,EAAM3yJ,QAAQ2yJ,EAAMC,aAAarx9B,EAAM,IAC/F,EAEAuw9B,EAAYhmmC,UAAU+kkC,YAAc,SAAUj1jC,GAC5C,OAAOxP,KAAKgh3B,QAAQ,KAAKyjN,YAAYj1jC,EAAK,KAAOxP,KAAKgh3B,QAAQ,KAAKyjN,YAAYj1jC,EAAK,GACtF,EAEAk2lC,EAAYhmmC,UAAU+mmC,YAAc,SAAUC,EAAOC,GACnD,IAAIC,EAAY5mmC,KAAK23jC,YAAY+uC,GAC7BG,EAAY7mmC,KAAK23jC,YAAYgvC,GAC7Btl3B,EAAOrhP,KAAK8qlC,UACZhphB,EAAO,IAAI,GAAa8kiB,EAAU,GAAIA,EAAU,GAAIC,EAAU,GAAKD,EAAU,GAAIC,EAAU,GAAKD,EAAU,IAC9G,OAAOvl3B,EAAK15D,UAAUm6Y,EACxB,EAEA4jiB,EAAYhmmC,UAAUi4jC,YAAc,SAAUnojC,EAAMkpV,EAAOx4N,GACzDA,EAAMA,GAAO,GACb,IAAI4m+B,EAAOt3lC,EAAK,GACZu3lC,EAAOv3lC,EAAK,GAEhB,GAAIxP,KAAK4lmC,YACE,MAARkB,GAAgBp/jC,SAASo/jC,IAAiB,MAARC,GAAgBr/jC,SAASq/jC,GAC5D,OAAOj7J,GAAe5r0B,EAAK1wH,EAAMxP,KAAK4lmC,YAGxC,IAAIrh7B,EAAQvkL,KAAKgh3B,QAAQ,KACrBv8rB,EAAQzkL,KAAKgh3B,QAAQ,KAGzB,OAFA9gvB,EAAI,GAAKqkD,EAAMqy4B,cAAcry4B,EAAMsy4B,YAAYiwC,EAAMpuwB,IACrDx4N,EAAI,GAAKukD,EAAMmy4B,cAAcny4B,EAAMoy4B,YAAYkwC,EAAMruwB,IAC9Cx4N,CACT,EAEAwl+B,EAAYhmmC,UAAUo1lC,UAAY,SAAUtllC,EAAM0wH,GAChD,IAAIojG,EAAStjO,KAAKgh3B,QAAQ,KAAKl/wB,MAC3ByhI,EAASvjO,KAAKgh3B,QAAQ,KAAKl/wB,MAC3BklgC,EAAc1j4B,EAAOks1B,YACrBy3C,EAAc1j4B,EAAOis1B,YACrBvrjC,EAAIq/N,EAAO/2M,MAAM/c,EAAK,IACtBxM,EAAIugO,EAAOh3M,MAAM/c,EAAK,IAI1B,OAHA0wH,EAAMA,GAAO,IACT,GAAKr9H,KAAKgL,IAAIhL,KAAK8K,IAAI9K,KAAKgL,IAAIm5lC,EAAY,GAAIA,EAAY,IAAK/imC,GAAIpB,KAAK8K,IAAIq5lC,EAAY,GAAIA,EAAY,KAC9G9m+B,EAAI,GAAKr9H,KAAKgL,IAAIhL,KAAK8K,IAAI9K,KAAKgL,IAAIo5lC,EAAY,GAAIA,EAAY,IAAKjkmC,GAAIH,KAAK8K,IAAIs5lC,EAAY,GAAIA,EAAY,KACvG/m+B,CACT,EAEAwl+B,EAAYhmmC,UAAUklkC,YAAc,SAAUzv7B,EAAOujN,GACnD,IAAIx4N,EAAM,GAEV,GAAIlgI,KAAK6lmC,cACP,OAAO/5J,GAAe5r0B,EAAKiV,EAAOn1I,KAAK6lmC,eAGzC,IAAIth7B,EAAQvkL,KAAKgh3B,QAAQ,KACrBv8rB,EAAQzkL,KAAKgh3B,QAAQ,KAGzB,OAFA9gvB,EAAI,GAAKqkD,EAAMog5B,YAAYpg5B,EAAMii7B,aAAarx9B,EAAM,IAAKujN,GACzDx4N,EAAI,GAAKukD,EAAMkg5B,YAAYlg5B,EAAM+h7B,aAAarx9B,EAAM,IAAKujN,GAClDx4N,CACT,EAEAwl+B,EAAYhmmC,UAAU02jC,aAAe,SAAU3r3B,GAC7C,OAAOzqM,KAAKgh3B,QAAqB,MAAbv2qB,EAAKktJ,IAAc,IAAM,IAC/C,EAOA+twB,EAAYhmmC,UAAUorlC,QAAU,WAC9B,IAAIoc,EAAUlnmC,KAAKgh3B,QAAQ,KAAKmmP,kBAC5BnpS,EAAUh+zB,KAAKgh3B,QAAQ,KAAKmmP,kBAC5BljmC,EAAIpB,KAAKgL,IAAIq5lC,EAAQ,GAAIA,EAAQ,IACjClkmC,EAAIH,KAAKgL,IAAImwzB,EAAQ,GAAIA,EAAQ,IACjCj/xB,EAAQl8B,KAAK8K,IAAIu5lC,EAAQ,GAAIA,EAAQ,IAAMjjmC,EAC3C+6B,EAASn8B,KAAK8K,IAAIqwzB,EAAQ,GAAIA,EAAQ,IAAMh7zB,EAChD,OAAO,IAAI,GAAaiB,EAAGjB,EAAG+7B,EAAOC,EACvC,EAEO0mkC,CACT,CAvIA,CD2BA,IC+GA,YCpJA,IAAI0B,GAEJ,SAAU1+uB,GAGR,SAAS0+uB,EAAOzvwB,EAAK71P,EAAOulgC,EAAa9/Q,EAAU5ozB,GACjD,IAAI+tB,EAAQg8T,EAAO9oX,KAAKI,KAAM23V,EAAK71P,EAAOulgC,IAAgBrnmC,KAU1D,OAHA0sD,EAAM1vC,MAAQ,EACd0vC,EAAMngD,KAAOg70B,GAAY,QACzB76xB,EAAM/tB,SAAWA,GAAY,SACtB+tB,CACT,CA0CA,OAxDAkgX,EAAUw6rB,EAAQ1+uB,GAgBlB0+uB,EAAO1nmC,UAAUgqiB,aAAe,WAC9B,IAAI/qgB,EAAW3+B,KAAK2+B,SACpB,MAAoB,QAAbA,GAAmC,WAAbA,CAC/B,EAWAyokC,EAAO1nmC,UAAUynmC,gBAAkB,SAAU1pY,GAC3C,IAAIx9P,EAAMjge,KAAKwvjC,YAIf,OAHAvvlB,EAAI,GAAKjge,KAAK42jC,cAAc32lB,EAAI,IAChCA,EAAI,GAAKjge,KAAK42jC,cAAc32lB,EAAI,IAChCw9P,GAAOx9P,EAAI,GAAKA,EAAI,IAAMA,EAAI3la,UACvB2la,CACT,EAEAmnoB,EAAO1nmC,UAAUklkC,YAAc,SAAUzv7B,EAAOujN,GAC9C,OAAO14V,KAAK2kkC,YAAY3kkC,KAAKwmmC,aAAarx9B,EAAmB,MAAbn1I,KAAK23V,IAAc,EAAI,IAAKe,EAC9E,EAOA0uwB,EAAO1nmC,UAAU4nmC,oBAAsB,SAAU9vjC,GAC/C,GAAkB,aAAdx3C,KAAKuM,KACP,OAAO,EAGTvM,KAAK+0H,MAAMl3D,OAAO0piC,iBAAmB/vjC,EACrCx3C,KAAK8hG,MAAMov9B,YAAY15gC,EACzB,EAEO4vjC,CACT,CA1DA,CA0DE,IAEF,YC1DO,SAAS,GAAOI,EAAWx6C,EAAW5shB,GAC3CA,EAAMA,GAAO,CAAC,EACd,IAAI75S,EAAOih3B,EAAUz1+B,iBACjB04E,EAAOui3B,EAAUvi3B,KACjBvpE,EAAS,CAAC,EACVum+B,EAAoBh95B,EAAKi95B,kBAAkB,GAC3CC,EAAkBl95B,EAAK9rK,SACvBipkC,EAAeH,EAAoB,SAAWE,EAC9C16C,EAAUxi3B,EAAKktJ,IACfjkQ,EAAO6yJ,EAAK+w0B,UACZuwC,EAAY,CAACn0gC,EAAKzvF,EAAGyvF,EAAKzvF,EAAIyvF,EAAK30D,MAAO20D,EAAK1wF,EAAG0wF,EAAK1wF,EAAI0wF,EAAK10D,QAChE87U,EAAM,CACRj8U,KAAM,EACNghE,MAAO,EACP/gE,IAAK,EACLghE,OAAQ,EACRykgC,OAAQ,GAENpzS,EAAa67P,EAAU7pjC,IAAI,WAAa,EACxC2kmC,EAAuB,MAAZ76C,EAAkB,CAAC46C,EAAU,GAAK12S,EAAY02S,EAAU,GAAK12S,GAAc,CAAC02S,EAAU,GAAK12S,EAAY02S,EAAU,GAAK12S,GAErI,GAAIs2S,EAAmB,CACrB,IAAIM,EAAcN,EAAkB7wC,cAAc6wC,EAAkB5wC,YAAY,IAChFixC,EAAShtvB,EAAIypvB,QAAU1hmC,KAAK8K,IAAI9K,KAAKgL,IAAIk6lC,EAAaD,EAAS,IAAKA,EAAS,GAC/E,CAGA5m+B,EAAOviG,SAAW,CAAa,MAAZsuhC,EAAkB66C,EAAShtvB,EAAI8svB,IAAiBC,EAAU,GAAgB,MAAZ56C,EAAkB66C,EAAShtvB,EAAI8svB,IAAiBC,EAAU,IAE3I3m+B,EAAO3a,SAAW1jH,KAAKsmC,GAAK,GAAiB,MAAZ8jhC,EAAkB,EAAI,GAQvD/r7B,EAAO8m+B,eAAiB9m+B,EAAO+m+B,cAAgB/m+B,EAAOgn+B,cANzC,CACXppkC,KAAM,EACNghE,OAAQ,EACRjhE,MAAO,EACPghE,MAAO,GAEoE8ngC,GAC7Ezm+B,EAAO2o3B,YAAc49G,EAAoBK,EAAShtvB,EAAI6svB,IAAoBG,EAAShtvB,EAAIypvB,QAAU,EAE7Fv3C,EAAU7pjC,IAAI,CAAC,WAAY,aAC7B+9H,EAAO+m+B,eAAiB/m+B,EAAO+m+B,eAG7B,GAAgB7nkB,EAAI+nkB,YAAan7C,EAAU7pjC,IAAI,CAAC,YAAa,cAC/D+9H,EAAO8m+B,gBAAkB9m+B,EAAO8m+B,gBAIlC,IAAIr+G,EAAcqjE,EAAU7pjC,IAAI,CAAC,YAAa,WAI9C,OAHA+9H,EAAOyo3B,YAA+B,QAAjBi+G,GAA0Bj+G,EAAcA,EAE7Dzo3B,EAAO67D,GAAK,EACL77D,CACT,CACO,SAASkn+B,GAAoBplH,GAClC,MAA+C,gBAAxCA,EAAY7/+B,IAAI,mBACzB,CACO,SAASklmC,GAAerlH,GAC7B,IAAIslH,EAAe,CACjBn8C,WAAY,KACZC,WAAY,MAcd,OAZA,EAAYk8C,GAAc,SAAUrlmC,EAAG4hB,GACrC,IAAI0i0B,EAAW1i0B,EAAIpY,QAAQ,SAAU,IACjCugjC,EAAYhqE,EAAY4S,uBAAuBruK,EAAUg9I,IAAkB1z0B,OAAO,GAQtFy38B,EAAazjlC,GAAOmoiC,CACtB,IACOs7C,CACT,CC9EA,IAAI,GAAUzlmC,KAAKwnB,IACZ,SAASk+kC,GAAgBzmgC,EAAOkr9B,EAAWw7C,GAChD,IAAIltC,EAAqB5mzB,GAAch1Q,UAKnC+omC,EAAentC,EAAmB9mQ,SAAS50zB,KAAK4omC,GAChDE,EAAoBptC,EAAmB9mQ,SAAS50zB,KAAK4omC,GAAc,GACnEG,EAAqBF,EAAapomC,OAAS,EAC3CuomC,EAAkBttC,EAAmBhJ,YAAY1yjC,KAAK4omC,GACtDK,EAAcnqC,GAAe589B,EAAOkr9B,GACpCjyC,EAAY8tF,EAAYt+7B,OACxBu+7B,EAAaD,EAAYx1C,OACzB01C,EAAaF,EAAYz1C,OAE7B,GAAmB,QAAftx9B,EAAMv1F,KAAgB,CACxB,IAAIq4lC,EAAU,GAAQ9igC,EAAMz7C,MAC5B009B,EAAY,CAAC,GAAQA,EAAU,IAAM6pF,EAAS,GAAQ7pF,EAAU,IAAM6pF,EACxE,CAEA9igC,EAAM2t9B,UAAU10C,EAAU,GAAIA,EAAU,IACxCj56B,EAAMmw9B,eAAe,CACnBhB,YAAa03C,EACbt1C,OAAQy1C,EACR11C,OAAQ21C,IAEV,IAAIx+7B,EAAS+w5B,EAAmB9L,UAAU5vjC,KAAKkiG,GAG3CgngC,IACF/tF,EAAU,GAAKxw2B,EAAO,IAGpBw+7B,IACFhuF,EAAU,GAAKxw2B,EAAO,IAGxB,IAAI23T,EAAWo5lB,EAAmBhJ,YAAY1yjC,KAAKkiG,GAC/Cj0F,EAAMktgC,EAAU,GAChBptgC,EAAMotgC,EAAU,GAEpB,GAAI+tF,GAAcC,EAEhB7moB,GAAYv0d,EAAME,GAAO86lC,OACpB,GAAIG,EAGT,IAFAn7lC,EAAMotgC,EAAU,GAAK74iB,EAAWymoB,EAEzBh7lC,EAAMotgC,EAAU,IAAMrz+B,SAAS/5B,IAAQ+5B,SAASqz+B,EAAU,KAC/D74iB,EAAWuulB,GAAiBvulB,GAC5Bv0d,EAAMotgC,EAAU,GAAK74iB,EAAWymoB,OAE7B,GAAII,EAIT,IAFAl7lC,EAAMktgC,EAAU,GAAK74iB,EAAWymoB,EAEzB96lC,EAAMktgC,EAAU,IAAMrz+B,SAAS75B,IAAQ65B,SAASqz+B,EAAU,KAC/D74iB,EAAWuulB,GAAiBvulB,GAC5Br0d,EAAMktgC,EAAU,GAAK74iB,EAAWymoB,MAE7B,CACkB7mgC,EAAM0ytB,WAAWn0zB,OAAS,EAE1BsomC,IACrBzmoB,EAAWuulB,GAAiBvulB,IAG9B,IAAIngW,EAAQmgW,EAAWymoB,GAEvB96lC,EAAMo1C,IADNt1C,EAAM9K,KAAKuK,KAAK2tgC,EAAU,GAAK74iB,GAAYA,GACzBngW,IAER,GAAKg54B,EAAU,IAAM,GAC7BltgC,EAAM,EACNF,EAAMs1C,GAAM8+E,IACHp0H,EAAM,GAAKotgC,EAAU,IAAM,IACpCptgC,EAAM,EACNE,GAAOo1C,GAAM8+E,GAEjB,CAGA,IAAIuhqB,GAAMmlU,EAAa,GAAGtnmC,MAAQunmC,EAAkB,GAAGvnmC,OAASynmC,EAC5Dz56B,GAAMs56B,EAAaE,GAAoBxnmC,MAAQunmC,EAAkBC,GAAoBxnmC,OAASynmC,EAElGttC,EAAmB7L,UAAU7vjC,KAAKkiG,EAAOj0F,EAAMq0d,EAAWohU,EAAI31xB,EAAMu0d,EAAW/yS,GAC/Ems4B,EAAmBhtiC,YAAY1uB,KAAKkiG,EAAOogY,IAEvCohU,GAAMn0mB,IACRms4B,EAAmBhI,cAAc1zjC,KAAKkiG,EAAOj0F,EAAMq0d,EAAUv0d,EAAMu0d,EAWvE,CCxFA,IAAI+zN,GAEJ,WACE,SAASA,EAAKuxa,EAAWlkI,EAASr07B,GAEhCjvC,KAAKuM,KAAO,OACZvM,KAAKgpmC,WAAa,CAAC,EACnBhpmC,KAAKipmC,YAAc,GACnBjpmC,KAAKkpmC,SAAW,CAAC,EACjBlpmC,KAAKmpmC,UAAY,GACjBnpmC,KAAKopmC,oBAAqB,EAC1BppmC,KAAK04J,WAAa8s8B,GAElBxlmC,KAAKqpmC,eAAe7B,EAAWlkI,EAASr07B,GAExCjvC,KAAK+0H,MAAQyy+B,CACf,CAkaA,OAhaAvxa,EAAKv2rB,UAAU43jC,QAAU,WACvB,OAAOt3jC,KAAK6s+B,KACd,EAEA52S,EAAKv2rB,UAAU6uE,OAAS,SAAU+05B,EAASr07B,GACzC,IAAIq6jC,EAAUtpmC,KAAKkpmC,SAInB,SAASK,EAAgBhkT,GACvB,IAAImjN,EAEA8gG,EAAcl2lC,GAAKiyyB,GACnB1mrB,EAAM2q+B,EAAYnpmC,OAEtB,GAAKw+H,EAAL,CAMA,IAFA,IAAI4q+B,EAAiB,GAEZ7omC,EAAIi+H,EAAM,EAAGj+H,GAAK,EAAGA,IAAK,CACjC,IAEI6pM,EAAO86mB,GAFAikT,EAAY5omC,IAGnBm0H,EAAQ01E,EAAK11E,MACbjzB,EAAQ2oG,EAAK3oG,MAGjB0u9B,GAAqB1u9B,IAAUizB,EAAM5xH,IAAI,eAA0C,MAAzB4xH,EAAM5xH,IAAI,YAClEsmmC,EAAe5nmC,KAAK4oM,IAEpBg13B,GAAgB399B,EAAOizB,GAEnBy77B,GAAqB1u9B,KAEvB4m6B,EAAUj+zB,GAGhB,CAKIg/5B,EAAeppmC,SACZqogC,GAEH+2D,IADA/2D,EAAU+gG,EAAe7nmC,OACDkgG,MAAO4m6B,EAAQ3z4B,OAGzC,EAAK00+B,GAAgB,SAAUh/5B,GAC7B895B,GAAgB995B,EAAK3oG,MAAO2oG,EAAK11E,MAAO2z4B,EAAQ5m6B,MAClD,IAnCF,CAqCF,CA/CA9hG,KAAK0pmC,aAAapmI,EAAStj+B,KAAK+0H,OAiDhCw0+B,EAAgBD,EAAQrlmC,GACxBslmC,EAAgBD,EAAQtmmC,GAExB,IAAI2mmC,EAAgB,CAAC,EACrB,EAAKL,EAAQrlmC,GAAG,SAAUsgL,GACxBql7B,GAAcN,EAAS,IAAK/k7B,EAAOol7B,EACrC,IACA,EAAKL,EAAQtmmC,GAAG,SAAUyhL,GACxBml7B,GAAcN,EAAS,IAAK7k7B,EAAOkl7B,EACrC,IAGA3pmC,KAAK6uH,OAAO7uH,KAAK+0H,MAAO9lF,EAC1B,EAMAgnpB,EAAKv2rB,UAAUmvH,OAAS,SAAU24+B,EAAWv4jC,EAAK46jC,GAChD,IAAIC,EAAkBtC,EAAU1xG,qBAC5Bi0G,GAAkBF,GAAsBrC,EAAUrkmC,IAAI,gBACtD6mmC,EAAWj2G,GAAc+1G,EAAiB,CAC5C/qkC,MAAOkQ,EAAIk8L,WACXnsM,OAAQiQ,EAAI+rI,cAEdh7K,KAAK6s+B,MAAQm9H,EACb,IAAIC,EAAWjqmC,KAAKmpmC,UA8BpB,SAASe,IACP,EAAKD,GAAU,SAAUx/5B,GACvB,IAAIi/V,EAAej/V,EAAKi/V,eACpBn/X,EAASm/X,EAAe,CAAC,EAAGsgkB,EAASjrkC,OAAS,CAAC,EAAGirkC,EAAShrkC,QAC3D87U,EAAMrwK,EAAK4zjB,QAAU,EAAI,EAC7B5zjB,EAAKgl3B,UAAUll5B,EAAOuwM,GAAMvwM,EAAO,EAAIuwM,IAuW/C,SAA6BrwK,EAAM0/5B,GACjC,IAAI31C,EAAa/p3B,EAAK+k3B,YAClB46C,EAAgB51C,EAAW,GAAKA,EAAW,GAE/C/p3B,EAAKms3B,cAA6B,MAAbns3B,EAAKktJ,IAAc,SAAU14L,GAChD,OAAOA,EAAQkr8B,CACjB,EAAI,SAAUlr8B,GACZ,OAAOmr8B,EAAgBnr8B,EAAQkr8B,CACjC,EACA1/5B,EAAK+75B,aAA4B,MAAb/75B,EAAKktJ,IAAc,SAAU14L,GAC/C,OAAOA,EAAQkr8B,CACjB,EAAI,SAAUlr8B,GACZ,OAAOmr8B,EAAgBnr8B,EAAQkr8B,CACjC,CACF,CApXQE,CAAoB5/5B,EAAMi/V,EAAesgkB,EAAS/lmC,EAAI+lmC,EAAShnmC,EACjE,GACF,CArCAknmC,IAEIH,IACF,EAAKE,GAAU,SAAUx/5B,GACvB,IAAKA,EAAK11E,MAAM5xH,IAAI,CAAC,YAAa,WAAY,CAC5C,IAAImnmC,E/DoHP,SAAgC7/5B,GACrC,IAAIui3B,EAAYvi3B,EAAK11E,MACjBjzB,EAAQ2oG,EAAK3oG,MAEjB,GAAKkr9B,EAAU7pjC,IAAI,CAAC,YAAa,WAAY2+F,EAAM27c,UAAnD,CAIA,IAAI8sjB,EACAxpgB,EACAypgB,EAAsB1ogC,EAAM0t9B,YAG9Bzud,EADEj/f,aAAiBg+9B,GACPh+9B,EAAMv4C,SAElBghjC,EAAuBzogC,EAAM0ytB,YACIn0zB,OAGnC,IAEIqzF,EAFA+2gC,EAAiBhg6B,EAAKu13B,gBACtBj0R,EAAiBg0R,GAAmBt13B,GAEpCikK,EAAO,EAEPqyP,EAAY,KACdryP,EAAO7rW,KAAKuK,KAAK2zlB,EAAY,KAG/B,IAAK,IAAIngmB,EAAI,EAAGA,EAAImgmB,EAAWngmB,GAAK8tW,EAAM,CACxC,IAGIrtW,EAAQ0qyB,EAHDw+T,EAAuBA,EAAqB3pmC,GAAK,CAC1DO,MAAOqpmC,EAAoB,GAAK5pmC,GAEDA,GAE7B8pmC,EAAavqC,GADSsqC,EAAeh/G,YAAYpq/B,GACAopmC,EAAetnmC,IAAI,WAAa,GACrFuwF,EAAOA,EAAKsvF,MAAM0n7B,GAAch3gC,EAAOg3gC,CACzC,CAEA,OAAOh3gC,CAhCP,CAiCF,C+D3J+Bi3gC,CAAuBlg6B,GAE5C,GAAI6/5B,EAAgB,CAClB,IAAI3ywB,EAAMltJ,EAAKi/V,eAAiB,SAAW,QACvCjqL,EAASh1K,EAAK11E,MAAM5xH,IAAI,CAAC,YAAa,WAC1C6mmC,EAASrywB,IAAQ2ywB,EAAe3ywB,GAAO8nB,EAEjB,QAAlBh1K,EAAK9rK,SACPqrkC,EAAShnmC,GAAKsnmC,EAAetrkC,OAASygV,EACX,SAAlBh1K,EAAK9rK,WACdqrkC,EAAS/lmC,GAAKqmmC,EAAevrkC,MAAQ0gV,EAEzC,CACF,CACF,IACAyqvB,KAGF,EAAKlqmC,KAAKipmC,aAAa,SAAUhq8B,GAG/BA,EAAM0m8B,qBACR,GAWF,EAEA1va,EAAKv2rB,UAAUsh3B,QAAU,SAAUrphB,EAAKo1tB,GACtC,IAAI69C,EAAe5qmC,KAAKkpmC,SAASvxwB,GAEjC,GAAoB,MAAhBizwB,EACF,OAAOA,EAAa79C,GAAa,EAErC,EAEA92X,EAAKv2rB,UAAU482B,QAAU,WACvB,OAAOt82B,KAAKmpmC,UAAUpnmC,OACxB,EAEAk0rB,EAAKv2rB,UAAUmrmC,aAAe,SAAUC,EAAYC,GAClD,GAAkB,MAAdD,GAAoC,MAAdC,EAAoB,CAC5C,IAAIlmlC,EAAM,IAAMimlC,EAAa,IAAMC,EACnC,OAAO/qmC,KAAKgpmC,WAAWnklC,EACzB,CAEI,GAASimlC,KACXC,EAAaD,EAAWC,WACxBD,EAAaA,EAAWA,YAG1B,IAAK,IAAIlqmC,EAAI,EAAGoqmC,EAAYhrmC,KAAKipmC,YAAaromC,EAAIoqmC,EAAU3qmC,OAAQO,IAClE,GAAIoqmC,EAAUpqmC,GAAGog3B,QAAQ,KAAKhk2B,QAAU8tlC,GAAcE,EAAUpqmC,GAAGog3B,QAAQ,KAAKhk2B,QAAU+tlC,EACxF,OAAOC,EAAUpqmC,EAGvB,EAEAq1rB,EAAKv2rB,UAAUurmC,cAAgB,WAC7B,OAAOjrmC,KAAKipmC,YAAYlnmC,OAC1B,EAMAk0rB,EAAKv2rB,UAAUg1iC,eAAiB,SAAUpxE,EAASc,EAAQjj+B,GACzD,IAAI2O,EAAS9P,KAAKkrmC,mBAAmB9mI,GAErC,OAAOt09B,EAAO8rL,UAAY9rL,EAAO8rL,UAAU+73B,YAAYx2jC,GAAS2O,EAAO26L,KAAO36L,EAAO26L,KAAKms3B,cAAc9mjC,EAAO26L,KAAKos3B,YAAY11jC,IAAU,IAC5I,EAMA80rB,EAAKv2rB,UAAUi1iC,iBAAmB,SAAUrxE,EAASc,EAAQjj+B,GAC3D,IAAI2O,EAAS9P,KAAKkrmC,mBAAmB9mI,GAErC,OAAOt09B,EAAO8rL,UAAY9rL,EAAO8rL,UAAUgp4B,YAAYzjkC,GAAS2O,EAAO26L,KAAO36L,EAAO26L,KAAKk63B,YAAY70jC,EAAO26L,KAAK+75B,aAAarlmC,IAAU,IAC3I,EAEA80rB,EAAKv2rB,UAAUwrmC,mBAAqB,SAAU9mI,GAC5C,IAKIxoyB,EACA6O,EANAu4yB,EAAc5e,EAAO4e,YACrBmpE,EAAa/nF,EAAO+nF,YAAcnpE,GAAeA,EAAY4S,uBAAuB,QAASrxB,IAAkB1z0B,OAAO,GACtHu75B,EAAahoF,EAAOgoF,YAAcppE,GAAeA,EAAY4S,uBAAuB,QAASrxB,IAAkB1z0B,OAAO,GACtH228B,EAAYpjI,EAAOojI,UACnB2D,EAAanrmC,KAAKipmC,YAsBtB,OAlBIjmH,EAEFxi/B,EAAQ2qmC,EADRvv6B,EAAYonzB,EAAYjx3B,kBACS,IAAM6pE,EAAY,MAC1Cuw3B,GAAcC,EACvBxw3B,EAAY57L,KAAK6qmC,aAAa1+C,EAAWhhyB,eAAgBihyB,EAAWjhyB,gBAC3DghyB,EACT1h3B,EAAOzqM,KAAKgh3B,QAAQ,IAAKmrM,EAAWhhyB,gBAC3BihyB,EACT3h3B,EAAOzqM,KAAKgh3B,QAAQ,IAAKorM,EAAWjhyB,gBAE7Bq80B,GACMA,EAAUz1+B,mBAER/xH,OACX47L,EAAY57L,KAAKipmC,YAAY,IAI5B,CACLrt6B,UAAWA,EACX6O,KAAMA,EAEV,EAMAwrf,EAAKv2rB,UAAUm1iC,aAAe,SAAU1/5B,GACtC,IAAI8pB,EAAQj/J,KAAKipmC,YAAY,GAE7B,GAAIhq8B,EACF,OAAOA,EAAM414B,aAAa1/5B,EAE9B,EAMA8gjB,EAAKv2rB,UAAU2pmC,eAAiB,SAAU7B,EAAWlkI,EAASr07B,GAC5D,IAAIyd,EAAQ1sD,KAERumP,EAAOvmP,KACPormC,EAAmB,CACrBvskC,MAAM,EACNghE,OAAO,EACP/gE,KAAK,EACLghE,QAAQ,GAENwpgC,EAAU,CACZrlmC,EAAG,CAAC,EACJjB,EAAG,CAAC,GAEFqomC,EAAY,CACdpnmC,EAAG,EACHjB,EAAG,GAML,GAHAsg+B,EAAQwe,cAAc,QAASwpH,EAAkB,KAAMtrmC,MACvDsj+B,EAAQwe,cAAc,QAASwpH,EAAkB,KAAMtrmC,OAElDqrmC,EAAUpnmC,IAAMonmC,EAAUromC,EAI7B,OAFAhD,KAAKkpmC,SAAW,CAAC,OACjBlpmC,KAAKmpmC,UAAY,IAqBnB,SAASmC,EAAkBjvG,GACzB,OAAO,SAAU2wD,EAAWlysB,GAC1B,GAAKywvB,GAAoBv+C,EAAWw6C,GAApC,CAIA,IAAII,EAAe56C,EAAU7pjC,IAAI,YAEjB,MAAZk5/B,EAEmB,QAAjBurG,GAA2C,WAAjBA,IAE5BA,EAAewD,EAAiBtrgC,OAAS,MAAQ,UAI9B,SAAjB8ngC,GAA4C,UAAjBA,IAE7BA,EAAewD,EAAiBvskC,KAAO,QAAU,QAIrDuskC,EAAiBxD,IAAgB,EACjC,IAAIn95B,EAAO,IAAI,GAAO4xzB,EAASwjE,GAAmB7S,GAAY,CAAC,EAAG,GAAIA,EAAU7pjC,IAAI,QAASykmC,GACzFv7C,EAA2B,aAAd5h3B,EAAKl+L,KACtBk+L,EAAK+53B,OAASnY,GAAcW,EAAU7pjC,IAAI,eAC1CsnM,EAAK4zjB,QAAU2uT,EAAU7pjC,IAAI,WAE7B6pjC,EAAUvi3B,KAAOA,EAEjBA,EAAK11E,MAAQi47B,EAEbvi3B,EAAK87C,KAAOA,EAEZ97C,EAAKztL,MAAQ89V,EAEbv0H,EAAK4i3B,UAAUtnmC,KAAK4oM,GAEpB6+5B,EAAQjtG,GAASvhpB,GAAOrwK,EACxB4g6B,EAAUhvG,IAnCV,CAoCF,CACF,CA1DAr8/B,KAAKkpmC,SAAWI,EAEhB,EAAKA,EAAQrlmC,GAAG,SAAUsgL,EAAOum7B,GAC/B,EAAKxB,EAAQtmmC,GAAG,SAAUyhL,EAAOsm7B,GAC/B,IAAIlmlC,EAAM,IAAMimlC,EAAa,IAAMC,EAC/Bnv6B,EAAY,IAAI,GAAY/2K,GAChC+2K,EAAUm6X,OAASrpgB,EACnBkvI,EAAU7mE,MAAQyy+B,EAClB96iC,EAAMs8iC,WAAWnklC,GAAO+2K,EAExBlvI,EAAMu8iC,YAAYpnmC,KAAK+5L,GAEvBA,EAAU2p6B,QAAQhh7B,GAClBqX,EAAU2p6B,QAAQ9g7B,EACpB,GACF,GA4CF,EAMAwxgB,EAAKv2rB,UAAUgqmC,aAAe,SAAUpmI,EAASkkI,GA6B/C,SAASl4C,EAAY9/iC,EAAMi7L,GACzB,EAAKk23B,GAAwBnxjC,EAAMi7L,EAAKktJ,MAAM,SAAUA,GACtDltJ,EAAK3oG,MAAMyt9B,oBAAoB//iC,EAAMmoV,EACvC,GACF,CA/BA,EAAK33V,KAAKmpmC,WAAW,SAAU1+5B,GAG7B,GAFAA,EAAK3oG,MAAM2t9B,UAAU1v/B,KAAU,KAEb,aAAd0qI,EAAKl+L,KAAqB,CAC5B,IAAIg7lC,EAAmB985B,EAAK11E,MAAM5xH,IAAI,oBACtCsnM,EAAK3oG,MAAMov9B,YAAYq2C,EACzB,CACF,IACAjkI,EAAQyf,YAAW,SAAUC,GAC3B,GAAIolH,GAAoBplH,GAAc,CACpC,IAAIwoH,EAAenD,GAAerlH,GAC9BmpE,EAAaq/C,EAAar/C,WAC1BC,EAAao/C,EAAap/C,WAE9B,IAAKm/C,GAAoBp/C,EAAYq7C,KAAe+D,GAAoBn/C,EAAYo7C,GAClF,OAGF,IAAI5r6B,EAAY57L,KAAK6qmC,aAAa1+C,EAAWhhyB,eAAgBihyB,EAAWjhyB,gBACpE37Q,EAAOwz+B,EAAYx+2B,UACnB+/C,EAAQqX,EAAUolrB,QAAQ,KAC1Bv8rB,EAAQmX,EAAUolrB,QAAQ,KAC9BsuM,EAAY9/iC,EAAM+0K,GAClB+q4B,EAAY9/iC,EAAMi1K,EACpB,CACF,GAAGzkL,KAOL,EAMAi2rB,EAAKv2rB,UAAU+rmC,eAAiB,SAAU9zwB,GACxC,IAAI+zwB,EAAW,GACXC,EAAY,GAOhB,OANA,EAAK3rmC,KAAKirmC,iBAAiB,SAAUrv6B,GACnC,IAAIu43B,EAAkB,MAAPx8tB,GAAuB,SAARA,EAAiB/7J,EAAUolrB,QAAQrphB,GAAO/7J,EAAUst1B,cAC9EyuE,EAAY/75B,EAAUw63B,aAAajC,GACvC3zjC,EAAQkrmC,EAAUv3C,GAAY,GAAKu3C,EAAS7pmC,KAAKsyjC,GACjD3zjC,EAAQmrmC,EAAWhU,GAAa,GAAKgU,EAAU9pmC,KAAK81lC,EACtD,IACO,CACL+T,SAAUA,EACVC,UAAWA,EAEf,EAEA11a,EAAK/1rB,OAAS,SAAUoj+B,EAASr07B,GAC/B,IAAI28jC,EAAQ,GAkCZ,OAjCAtoI,EAAQwe,cAAc,QAAQ,SAAU0lH,EAAW1svB,GACjD,IAAIv0H,EAAO,IAAI0vc,EAAKuxa,EAAWlkI,EAASr07B,GACxCs3M,EAAK77O,KAAO,QAAUowW,EAGtBv0H,EAAK13H,OAAO24+B,EAAWv4jC,GAAK,GAC5Bu4jC,EAAUz1+B,iBAAmBw0H,EAC7Bql3B,EAAM/pmC,KAAK0kP,EACb,IAEA+8uB,EAAQyf,YAAW,SAAUC,GAC3B,GAAKolH,GAAoBplH,GAAzB,CAIA,IAAIwoH,EAAenD,GAAerlH,GAC9BmpE,EAAaq/C,EAAar/C,WAC1BC,EAAao/C,EAAap/C,WAa1B7l0B,EAZY4l0B,EAAW2U,mBAYN/u8B,iBACrBix3B,EAAYjx3B,iBAAmBw0H,EAAKsk3B,aAAa1+C,EAAWhhyB,eAAgBihyB,EAAWjhyB,eAlBvF,CAmBF,IACOyg1B,CACT,EAGA31a,EAAKv9hB,WAAa8s8B,GACXvva,CACT,CAjbA,GAubA,SAASs1a,GAAoBv+C,EAAWw6C,GACtC,OAAOx6C,EAAU8T,qBAAuB0mC,CAC1C,CAEA,SAASoC,GAAcN,EAASuC,EAAcph6B,EAC9Ck/5B,GACEl/5B,EAAKi95B,gBAAkB,WAErB,OAAOD,EAAoB,CAACA,GAAqB,EACnD,EAKA,IACIA,EADAkE,EAAYrC,EAAQuC,GAEpB7+C,EAAYvi3B,EAAK11E,MACjBwv+B,EAASv3C,EAAU7pjC,IAAI,CAAC,WAAY,WACpCqhmC,EAAkBx3C,EAAU7pjC,IAAI,CAAC,WAAY,oBAEjD,GAAKohmC,EAAL,CAKA,GAAuB,MAAnBC,EACEsH,GAAgBH,EAAUnH,MAC5BiD,EAAoBkE,EAAUnH,SAIhC,IAAK,IAAI1pvB,KAAO6wvB,EACd,GAAIA,EAAUhsmC,eAAem7W,IAAQgxvB,GAAgBH,EAAU7wvB,MAE3D6uvB,EAAcoC,EAAmBJ,EAAU7wvB,KAAQ,CACrD2svB,EAAoBkE,EAAU7wvB,GAC9B,KACF,CAIA2svB,IACFkC,EAAcoC,EAAmBtE,KAAsB,EApBzD,CAuBA,SAASsE,EAAmBth6B,GAC1B,OAAOA,EAAKktJ,IAAM,IAAMltJ,EAAKztL,KAC/B,CACF,CAEA,SAAS8ulC,GAAgBrh6B,GACvB,OAAOA,GAAsB,aAAdA,EAAKl+L,MAAqC,SAAdk+L,EAAKl+L,M/DnV3C,SAAyBk+L,GAC9B,IAAI2zxB,EAAa3zxB,EAAK3oG,MAAM0t9B,YACxB3hjC,EAAMuw9B,EAAW,GACjBzw9B,EAAMyw9B,EAAW,GACrB,QAASvw9B,EAAM,GAAKF,EAAM,GAAKE,EAAM,GAAKF,EAAM,EAClD,C+D8UqEq+lC,CAAgBvh6B,EACrF,CAkBA,YCpgBA,IAAI,GAAK5nM,KAAKsmC,GAwBV8ikC,GAEJ,WACE,SAASA,EAAYj/C,EAAW5shB,GAC9BpgiB,KAAKo7T,MAAQ,IAAI,GACjBp7T,KAAKogiB,IAAMA,EACXpgiB,KAAKgtjC,UAAYA,EAEjB,EAAS5shB,EAAK,CACZypd,YAAa,EACbq+G,cAAe,EACfD,cAAe,EACfD,eAAgB,EAChB5znB,QAAQ,EACR83nB,gBAAiB,WACf,OAAO,CACT,IAGF,IAAIC,EAAiB,IAAI,GAAc,CACrClomC,EAAGm8hB,EAAIzhgB,SAAS,GAChB37B,EAAGo9hB,EAAIzhgB,SAAS,GAChB4nF,SAAU65a,EAAI75a,WAIhB4l/B,EAAe1xJ,kBACfz68B,KAAKosmC,gBAAkBD,CACzB,CA2DA,OAzDAF,EAAYvsmC,UAAU2smC,WAAa,SAAU3hmC,GAC3C,QAAS4hmC,GAAS5hmC,EACpB,EAEAuhmC,EAAYvsmC,UAAUylB,IAAM,SAAUza,GACpC4hmC,GAAS5hmC,GAAM1K,KAAKogiB,IAAKpgiB,KAAKgtjC,UAAWhtjC,KAAKo7T,MAAOp7T,KAAKosmC,gBAC5D,EAEAH,EAAYvsmC,UAAU6smC,SAAW,WAC/B,OAAOvsmC,KAAKo7T,KACd,EAEA6wyB,EAAYO,gBAAkB,SAAUC,EAAcroX,EAAcz2nB,GAClE,IACIq3H,EACAituB,EAFAy6I,EAAettI,GAAUh7O,EAAeqoX,GAsB5C,OAlBIltI,GAAmBmtI,IAErBz6I,EAAoBtk2B,EAAY,EAAI,MAAQ,SAC5Cq3H,EAAY,UACHu6uB,GAAmBmtI,EAAe,KAE3Cz6I,EAAoBtk2B,EAAY,EAAI,SAAW,MAC/Cq3H,EAAY,WAEZituB,EAAoB,SAGlBjtuB,EADE0n3B,EAAe,GAAKA,EAAe,GACzB/++B,EAAY,EAAI,QAAU,OAE1BA,EAAY,EAAI,OAAS,SAIlC,CACLpH,SAAUmm/B,EACV1n3B,UAAWA,EACXituB,kBAAmBA,EAEvB,EAEAg6I,EAAYU,sBAAwB,SAAU3/C,GAC5C,IAAIjsnB,EAAY,CACd7kP,cAAe8w2B,EAAUlpF,SACzB34sB,eAAgB6hyB,EAAU7hyB,gBAG5B,OADA41K,EAAUisnB,EAAUlpF,SAAW,SAAWkpF,EAAU7hyB,eAC7C41K,CACT,EAEAkrqB,EAAYW,cAAgB,SAAU5/C,GACpC,IAAI6/C,EAAa7/C,EAAU7pjC,IAAI,WAC/B,OAAO6pjC,EAAU7pjC,IAAI,aAChB6pjC,EAAU7pjC,IAAI,iBAAmB0pmC,GAAcA,EAAW5pxB,KACjE,EAEOgpxB,CACT,CAtFA,GAyFIK,GAAW,CACbluM,SAAU,SAAUh+X,EAAK4shB,EAAW5xvB,EAAO+wyB,GACzC,IAAIvmiB,EAAQonf,EAAU7pjC,IAAI,CAAC,WAAY,SAMvC,GAJc,SAAVyikB,GAAoBxlC,EAAI8rkB,kBAC1BtmiB,EAAQxlC,EAAI8rkB,gBAAgB,aAGzBtmiB,EAAL,CAIA,IAAIr7Z,EAASyi5B,EAAUvi3B,KAAK+k3B,YACxBxn5B,EAASmk8B,EAAevp+B,UACxBul8B,EAAM,CAAC595B,EAAO,GAAI,GAClB695B,EAAM,CAAC795B,EAAO,GAAI,GAClB8zlB,EAAU8pU,EAAI,GAAKC,EAAI,GAEvBpg6B,IACF,GAAiBmg6B,EAAKA,EAAKng6B,GAC3B,GAAiBog6B,EAAKA,EAAKpg6B,IAG7B,IAAImqkB,EAAY9oV,EAAO,CACrBo6X,QAAS,SACRupS,EAAUp13B,SAAS,CAAC,WAAY,cAAcg0zB,gBAC7Cts8B,EAAO,IAAI,GAAa,CAC1BgjL,MAAO,CACLslF,GAAIugxB,EAAI,GACRz24B,GAAIy24B,EAAI,GACRrr4B,GAAIsr4B,EAAI,GACR3w8B,GAAI2w8B,EAAI,IAEV/zjC,MAAO89tB,EACPyiQ,uBAAwBx0c,EAAIw0c,wBAA0B,EACtDxggB,QAAQ,EACRr3S,GAAI,IAEN,GAA6Bz9I,EAAKgjL,MAAOhjL,EAAKjrC,MAAMg+T,WACpD/yR,EAAKu3+B,KAAO,OACZz7tB,EAAMj2S,IAAIm6B,GACV,IAAIwtjC,EAAS9/C,EAAU7pjC,IAAI,CAAC,WAAY,WAExC,GAAc,MAAV2pmC,EAAgB,CAClB,IAAIC,EAAY//C,EAAU7pjC,IAAI,CAAC,WAAY,eAEvC63D,GAAS8xiC,KAEXA,EAAS,CAACA,EAAQA,KAGhB9xiC,GAAS+xiC,IAAczpjC,GAASypjC,MAElCA,EAAY,CAACA,EAAWA,IAG1B,IAAIC,EAAcrmE,GAAsBqmB,EAAU7pjC,IAAI,CAAC,WAAY,kBAAoB,EAAG4pmC,GACtFE,EAAgBF,EAAU,GAC1BG,EAAiBH,EAAU,GAC/B,EAAK,CAAC,CACJtn/B,OAAQ26a,EAAI75a,SAAW1jH,KAAKsmC,GAAK,EACjCgZ,OAAQ6qjC,EAAY,GACpBjtmC,EAAG,GACF,CACD0lH,OAAQ26a,EAAI75a,SAAW1jH,KAAKsmC,GAAK,EACjCgZ,OAAQ6qjC,EAAY,GACpBjtmC,EAAG8C,KAAK4yF,MAAM0y+B,EAAI,GAAKC,EAAI,KAAOD,EAAI,GAAKC,EAAI,KAAOD,EAAI,GAAKC,EAAI,KAAOD,EAAI,GAAKC,EAAI,QACrF,SAAUjz7B,EAAOn4H,GACnB,GAAsB,SAAlB8vlC,EAAO9vlC,IAAsC,MAAjB8vlC,EAAO9vlC,GAAgB,CACrD,IAAIk9e,EAAS,GAAa4ymB,EAAO9vlC,IAASiwlC,EAAgB,GAAIC,EAAiB,EAAGD,EAAeC,EAAgB/6X,EAAUirC,QAAQ,GAE/Hr9wB,EAAIo1I,EAAMp1I,EAAIo1I,EAAMhzF,OACpBh2C,EAAKkyvB,EAAU+pU,EAAMD,EACzBjukB,EAAO+zB,KAAK,CACV1na,SAAU4uB,EAAM1vB,OAChBxhH,EAAGkI,EAAG,GAAKpM,EAAI8C,KAAKuxH,IAAIgsa,EAAI75a,UAC5BvjH,EAAGmJ,EAAG,GAAKpM,EAAI8C,KAAK4wH,IAAI2sa,EAAI75a,UAC5B6tX,QAAQ,EACRr3S,GAAI,KAENq+H,EAAMj2S,IAAI+0e,EACZ,CACF,GACF,CAzEA,CA0EF,EACAizmB,cAAe,SAAU/skB,EAAK4shB,EAAW5xvB,EAAO+wyB,GAC9C,IAAIiB,EAqPR,SAA6BhyyB,EAAO+wyB,EAAgBn/C,EAAW5shB,GAC7D,IAAI31V,EAAOui3B,EAAUvi3B,KACjBq63B,EAAY9X,EAAUp13B,SAAS,YAC/BguY,EAAQk/f,EAAU3hkC,IAAI,QAM1B,GAJc,SAAVyikB,GAAoBxlC,EAAI8rkB,kBAC1BtmiB,EAAQxlC,EAAI8rkB,gBAAgB,aAGzBtmiB,IAASn7X,EAAK3oG,MAAM27c,UAAzB,CAWA,IAPA,IAAI4viB,EAAiBvoB,EAAUlt4B,SAAS,aACpCy16B,EAAejtkB,EAAI6nkB,cAAgBnjC,EAAU3hkC,IAAI,UAEjDiqmC,EAAWE,GADG7i6B,EAAKo63B,iBACiBsnC,EAAevp+B,UAAWyq+B,EAAc,EAAShgB,EAAezhG,eAAgB,CACtHxuO,OAAQ4vS,EAAU7pjC,IAAI,CAAC,WAAY,YAAa,YAC9C,SAEKvC,EAAI,EAAGA,EAAIwsmC,EAAS/smC,OAAQO,IACnCw6T,EAAMj2S,IAAIiolC,EAASxsmC,IAGrB,OAAOwsmC,CAbP,CAcF,CA9QmBG,CAAoBnyyB,EAAO+wyB,EAAgBn/C,EAAW5shB,GACjEotkB,EA4SR,SAAwBpyyB,EAAO+wyB,EAAgBn/C,EAAW5shB,GACxD,IAAI31V,EAAOui3B,EAAUvi3B,KAGrB,GAFW8mY,GAASnxC,EAAIqtkB,cAAezgD,EAAU7pjC,IAAI,CAAC,YAAa,YAEtDsnM,EAAK3oG,MAAM27c,UAAxB,CAIA,IAAIulhB,EAAahW,EAAUp13B,SAAS,aAChC816B,EAAc1qC,EAAW7/jC,IAAI,UAC7ByqF,EAAS68G,EAAKu73B,gBAEdl+R,GAAiBv2N,GAASnxC,EAAIupd,YAAaq5E,EAAW7/jC,IAAI,YAAc,GAAK,GAAK,IAClFq/lC,EAAcyJ,GAAYO,gBAAgBpskB,EAAI75a,SAAUuhrB,EAAe1nQ,EAAI4nkB,gBAC3E2F,EAAkB3gD,EAAUoQ,eAAiBpQ,EAAUoQ,eAAc,GACrEowC,EAAW,GACXp5nB,EAAS63nB,GAAYW,cAAc5/C,GACnCs3C,EAAet3C,EAAU7pjC,IAAI,gBA2DjC,OA1DA,EAAKyqF,GAAQ,SAAUkstB,EAAW98xB,GAChC,IAAIy9iC,EAAgC,YAApBhw3B,EAAK3oG,MAAMv1F,KAAqBk+L,EAAK3oG,MAAMiv9B,oBAAoBj3Q,EAAU2gR,WAAa3gR,EAAU2gR,UAC5G4J,EAAiBvqR,EAAUuqR,eAC3BC,EAAWxqR,EAAUwqR,SACrBspC,EAAiB5qC,EAErB,GAAI2qC,GAAmBA,EAAgBlzC,GAAY,CACjD,IAAIozC,EAAkBF,EAAgBlzC,GAElC,GAASozC,IAAoBA,EAAgB7kH,YAC/C4kH,EAAiB,IAAI,GAAMC,EAAgB7kH,UAAWg6E,EAAYhW,EAAU1pF,SAEhF,CAEA,IAAI15kB,EAAYgktB,EAAen73B,gBAAkBu60B,EAAU7pjC,IAAI,CAAC,WAAY,YAAa,UACrFkylC,EAAY5q5B,EAAKos3B,YAAY4D,GAC7Bv/G,EAAS,IAAI,GAAa,CAC5Bj38B,EAAGoxlC,EACHrylC,EAAGo9hB,EAAIypd,YAAczpd,EAAI4nkB,eAAiB0F,EAC1Cnn/B,SAAUi8+B,EAAYj8+B,SACtB6tX,OAAQA,EACRr3S,GAAI,IAAM+8mB,EAAUpqvB,OAAS,GAC7Br7C,MAAOg0+B,GAAgBulH,EAAgB,CACrCx9kC,KAAMi0iC,EACN9/S,MAAOqpV,EAAermI,WAAW,SAAS,IAASi7H,EAAYx92B,UAC/Dmuf,cAAey6X,EAAermI,WAAW,iBAAiB,IAASqmI,EAAermI,WAAW,YAAY,IAASi7H,EAAYvwI,kBAC9H701B,KAAM4nI,GAAW4kJ,GAAaA,EAOhB,aAAdn/M,EAAKl+L,KAAsB+3jC,EAAyB,UAAd753B,EAAKl+L,KAAmBkujC,EAAY,GAAKA,EAAWz9iC,GAAS4sY,MAKvG,GAFAsxjB,EAAO27E,KAAO,SAAW4jC,EAErB6pC,EAAc,CAChB,IAAIvjqB,EAAYkrqB,GAAYU,sBAAsB3/C,GAClDjsnB,EAAUkI,WAAa,YACvBlI,EAAU5/b,MAAQmjkC,EAClBvjoB,EAAU+sqB,UAAY9wlC,EAEJ,aAAdytL,EAAKl+L,OACPw0b,EAAU17R,UAAYo15B,GAGxBz9E,GAAU9hC,GAAQn6gB,UAAYA,CAChC,CAGAorqB,EAAehnlC,IAAI+17B,GACnBA,EAAOT,kBACP+yJ,EAAS3rmC,KAAKq58B,GACd9/oB,EAAMj2S,IAAI+17B,GACVA,EAAO8V,oBACT,IACOw8I,CAtEP,CAuEF,CAzXmBO,CAAe3yyB,EAAO+wyB,EAAgBn/C,EAAW5shB,IAkIpE,SAA4B4shB,EAAWwgD,EAAUQ,GAC/C,IAAIttC,GAAoB1T,EAAUvi3B,MAAlC,CAOA,IAAIi65B,EAAe13C,EAAU7pjC,IAAI,CAAC,YAAa,iBAC3CwhmC,EAAe33C,EAAU7pjC,IAAI,CAAC,YAAa,iBAI/C6qmC,EAAUA,GAAW,GACrB,IAAIC,GAFJT,EAAWA,GAAY,IAEG,GACtBU,EAAYV,EAAS,GACrBW,EAAYX,EAASA,EAASntmC,OAAS,GACvC+tmC,EAAYZ,EAASA,EAASntmC,OAAS,GACvCoiyB,EAAYurU,EAAQ,GACpBluL,EAAWkuL,EAAQ,GACnBtrU,EAAWsrU,EAAQA,EAAQ3tmC,OAAS,GACpCuyjC,EAAWo7C,EAAQA,EAAQ3tmC,OAAS,IAEnB,IAAjBqkmC,GACF2J,GAASJ,GACTI,GAAS5rU,IACA6rU,GAAqBL,EAAYC,KACtCxJ,GACF2J,GAASH,GACTG,GAASvuL,KAETuuL,GAASJ,GACTI,GAAS5rU,MAIQ,IAAjBkiU,GACF0J,GAASF,GACTE,GAAS3rU,IACA4rU,GAAqBF,EAAWD,KACrCxJ,GACF0J,GAASD,GACTC,GAASz7C,KAETy7C,GAASF,GACTE,GAAS3rU,IA1Cb,CA6CF,EAjLI6rU,CAAmBvhD,EAAWwgD,EAAUJ,GA8Q5C,SAA6BhyyB,EAAO+wyB,EAAgBn/C,EAAWi7C,GAC7D,IAAIx95B,EAAOui3B,EAAUvi3B,KACjB+j6B,EAAiBxhD,EAAUp13B,SAAS,aAExC,GAAK426B,EAAerrmC,IAAI,UAAWsnM,EAAK3oG,MAAM27c,UAA9C,CAIA,IAAIgxjB,EAAmBhk6B,EAAKs73B,sBAE5B,GAAK0oC,EAAiBpumC,OAUtB,IANA,IAAIgtlC,EAAiBmhB,EAAe526B,SAAS,aACzCy16B,EAAepF,EAAgBuG,EAAerrmC,IAAI,UAClDurmC,EAAqB,EAASrhB,EAAezhG,eAAgB,EAASohE,EAAUp13B,SAAS,YAAYg0zB,eAAgB,CACvHxuO,OAAQ4vS,EAAU7pjC,IAAI,CAAC,WAAY,YAAa,aAGzCvC,EAAI,EAAGA,EAAI6tmC,EAAiBpumC,OAAQO,IAG3C,IAFA,IAAI+tmC,EAAgBrB,GAAYmB,EAAiB7tmC,GAAIurmC,EAAevp+B,UAAWyq+B,EAAcqB,EAAoB,cAAgB9tmC,GAExH8C,EAAI,EAAGA,EAAIirmC,EAActumC,OAAQqD,IACxC03T,EAAMj2S,IAAIwplC,EAAcjrmC,GAlB5B,CAqBF,CAxSIkrmC,CAAoBxzyB,EAAO+wyB,EAAgBn/C,EAAW5shB,EAAI6nkB,eAGtDj7C,EAAU7pjC,IAAI,CAAC,YAAa,iBAU9BspkC,GATgBtC,GAAkB96iC,EAAIm+kC,GAAU,SAAUnsmC,GACxD,MAAO,CACLA,MAAOA,EACPwsC,SAAUxsC,EAAM07L,GAChBqt4B,YAAa,CACXjiiC,OAAQ9mC,EAAM8mC,QAGpB,KAGJ,EACAuh+B,SAAU,SAAUtpe,EAAK4shB,EAAW5xvB,EAAO+wyB,GACzC,IAAIzhmC,EAAO6mkB,GAASnxC,EAAIspe,SAAUsjD,EAAU7pjC,IAAI,SAEhD,GAAKuH,EAAL,CAIA,IAQI83lC,EAOAqM,EAfA3K,EAAel3C,EAAU7pjC,IAAI,gBAC7B+kmC,EAAgB9nkB,EAAI8nkB,cACpBt/G,EAAiBokE,EAAUp13B,SAAS,iBACpCslL,EAAM8vsB,EAAU7pjC,IAAI,YAAc,EAClConK,EAASyi5B,EAAUvi3B,KAAK+k3B,YACxBs/C,EAAYvk8B,EAAO,GAAKA,EAAO,IAAM,EAAI,EACzCloD,EAAM,CAAkB,UAAjB6h/B,EAA2B357B,EAAO,GAAKuk8B,EAAY5xvB,EAAuB,QAAjBgnvB,EAAyB357B,EAAO,GAAKuk8B,EAAY5xvB,GAAO3yM,EAAO,GAAKA,EAAO,IAAM,EACrJwk8B,GAAqB7K,GAAgB9jkB,EAAIypd,YAAcq+G,EAAgBhrvB,EAAM,GAEzE8xvB,EAAehiD,EAAU7pjC,IAAI,cAEb,MAAhB6rmC,IACFA,EAAeA,EAAe,GAAK,KAKjCD,GAAqB7K,GACvB1B,EAAcyJ,GAAYO,gBAAgBpskB,EAAI75a,SAA0B,MAAhByo/B,EAAuBA,EAAe5ukB,EAAI75a,SAClG2h/B,IAEA1F,EAsDN,SAAuBj8+B,EAAUwr2B,EAAck9I,EAAY1k8B,GACzD,IACIy6E,EACAituB,EAFAy6I,EAAettI,GAAU6vI,EAAa1o/B,GAGtC83oB,EAAU9zlB,EAAO,GAAKA,EAAO,GAC7B2k8B,EAA0B,UAAjBn9I,IAA6B1zN,GAA4B,UAAjB0zN,GAA4B1zN,EAkBjF,OAhBIkhO,GAAmBmtI,EAAe,GAAK,IACzCz6I,EAAoBi9I,EAAS,SAAW,MACxClq3B,EAAY,UACHu6uB,GAAmBmtI,EAAoB,IAAL,KAC3Cz6I,EAAoBi9I,EAAS,MAAQ,SACrClq3B,EAAY,WAEZituB,EAAoB,SAGlBjtuB,EADE0n3B,EAAoB,IAAL,IAAYA,EAAe,GAAK,EACrCwC,EAAS,OAAS,QAElBA,EAAS,QAAU,QAI5B,CACL3o/B,SAAUmm/B,EACV1n3B,UAAWA,EACXituB,kBAAmBA,EAEvB,CAlFoBk9I,CAAc/ukB,EAAI75a,SAAU29+B,EAAc8K,GAAgB,EAAGzk8B,GAG7C,OAF9Bsk8B,EAAyBzukB,EAAIyukB,0BAG3BA,EAAyBhsmC,KAAKmjH,IAAI6o/B,EAAyBhsmC,KAAK4wH,IAAI+u+B,EAAYj8+B,YAC/E7+E,SAASmnkC,KAA4BA,EAAyB,QAInE,IAAIt2H,EAAWqQ,EAAepjO,UAC1B4pV,EAAcpiD,EAAU7pjC,IAAI,gBAAgB,IAAS,CAAC,EACtDql+B,EAAW4mI,EAAY5mI,SACvBt4zB,EAAWqha,GAASnxC,EAAIivkB,qBAAsBD,EAAYl/7B,SAAU2+7B,GACpE3zJ,EAAS,IAAI,GAAa,CAC5Bj38B,EAAGo+G,EAAI,GACPr/G,EAAGq/G,EAAI,GACPkE,SAAUi8+B,EAAYj8+B,SACtB6tX,OAAQ63nB,GAAYW,cAAc5/C,GAClC34iC,MAAOg0+B,GAAgBO,EAAgB,CACrCx49B,KAAM1lB,EACNo6O,KAAMyzvB,EACNh3nB,SAAU,WACVxiV,MAAOmxI,EACPs4zB,SAAUA,EACVpr2B,KAAMwr3B,EAAen2wB,gBAAkBu60B,EAAU7pjC,IAAI,CAAC,WAAY,YAAa,UAC/EohxB,MAAOqkO,EAAezl/B,IAAI,UAAYq/lC,EAAYx92B,UAClDmuf,cAAey1Q,EAAezl/B,IAAI,kBAAoBq/lC,EAAYvwI,oBAEpEl1xB,GAAI,IAWN,GATA,GAAyB,CACvBljD,GAAIqh0B,EACJ2nB,eAAgBmqF,EAChB3xD,SAAU3w/B,IAEZww8B,EAAOo0J,WAAa5kmC,EAEpBww8B,EAAO27E,KAAO,OAEVm2B,EAAU7pjC,IAAI,gBAAiB,CACjC,IAAI49b,EAAYkrqB,GAAYU,sBAAsB3/C,GAClDjsnB,EAAUkI,WAAa,WACvBlI,EAAUr2b,KAAOA,EACjBsy+B,GAAU9hC,GAAQn6gB,UAAYA,CAChC,CAGAorqB,EAAehnlC,IAAI+17B,GACnBA,EAAOT,kBACPr/oB,EAAMj2S,IAAI+17B,GACVA,EAAO8V,oBAzEP,CA0EF,GAmFF,SAASq9I,GAASx09B,GAChBA,IAAOA,EAAG1xG,QAAS,EACrB,CAEA,SAASmmkC,GAAqBvukC,EAASh/B,GAErC,IAAIwumC,EAAYxvkC,GAAWA,EAAQokN,kBAAkB5zN,QACjDi/kC,EAAWzumC,GAAQA,EAAKojP,kBAAkB5zN,QAE9C,GAAKg/kC,GAAcC,EAAnB,CAMA,IAAIC,EAAgB,GAAoB,IAIxC,OAHA,GAAkBA,EAAeA,GAAgB1vkC,EAAQwmF,UACzDgp/B,EAAUzjK,eAAe,GAAe,GAAI2jK,EAAe1vkC,EAAQow7B,sBACnEq/I,EAAS1jK,eAAe,GAAe,GAAI2jK,EAAe1umC,EAAKov9B,sBACxDo/I,EAAU5n7B,UAAU6n7B,EAR3B,CASF,CAEA,SAAST,GAAqB7K,GAC5B,MAAwB,WAAjBA,GAA8C,WAAjBA,CACtC,CAEA,SAASoJ,GAAYtoC,EAAa0qC,EAAerC,EAAcsC,EAAeC,GAK5E,IAJA,IAAI5B,EAAU,GACV7lC,EAAM,GACNC,EAAM,GAEDxnkC,EAAI,EAAGA,EAAIokkC,EAAY3kkC,OAAQO,IAAK,CAC3C,IAAIy0lC,EAAYrwB,EAAYpkkC,GAAGq+J,MAC/Bkp6B,EAAI,GAAKktB,EACTltB,EAAI,GAAK,EACTC,EAAI,GAAKitB,EACTjtB,EAAI,GAAKilC,EAELqC,IACF,GAAiBvnC,EAAKA,EAAKunC,GAC3B,GAAiBtnC,EAAKA,EAAKsnC,IAI7B,IAAIG,EAAS,IAAI,GAAa,CAC5Bvt4B,MAAO,CACLslF,GAAIugxB,EAAI,GACRz24B,GAAIy24B,EAAI,GACRrr4B,GAAIsr4B,EAAI,GACR3w8B,GAAI2w8B,EAAI,IAEV/zjC,MAAOs7lC,EACP5y6B,GAAI,EACJy4yB,WAAW,EACXphgB,QAAQ,IAEV,GAA6By7nB,EAAOvt4B,MAAOut4B,EAAOx7lC,MAAMg+T,WACxDw9xB,EAAOh5E,KAAO+4E,EAAa,IAAM5qC,EAAYpkkC,GAAG65jC,UAChDuzC,EAAQnsmC,KAAKgumC,EACf,CAEA,OAAO7B,CACT,CAyIA,YC1XA,SAAS8B,GAAgBC,EAAeC,GACtC,MAAyB,QAAlBD,GAA2Bp+lC,GAAQo+lC,IAAkBvvmC,EAAQuvmC,EAAeC,IAAkB,GAAKD,IAAkBC,CAC9H,CA+CO,SAASC,GAAYjjD,GAC1B,IAAIkjD,GAAoBljD,EAAU1pF,QAAQnpoB,aAAa,gBAAkB,CAAC,GAAG+1wB,iBAC7E,OAAOA,GAAoBA,EAAiBC,SAASC,GAAQpjD,GAC/D,CAMA,SAASqjD,GAAgBC,GACvB,QAASA,EAAiBntmC,IAAI,CAAC,SAAU,QAC3C,CAOO,SAASitmC,GAAQr7+B,GACtB,OAAOA,EAAMxoH,KAAO,KAAOwoH,EAAMxpG,EACnC,CCxRA,IAAIgllC,GAAmB,CAAC,EAKpBC,GAEJ,SAAU9nvB,GAGR,SAAS8nvB,IACP,IAAI9jjC,EAAmB,OAAXg8T,GAAmBA,EAAOnoX,MAAMP,KAAMI,YAAcJ,KAGhE,OADA0sD,EAAMngD,KAAOikmC,EAASjkmC,KACfmgD,CACT,CAgFA,OAvFAkgX,EAAU4jsB,EAAU9nvB,GAapB8nvB,EAAS9wmC,UAAU4uH,OAAS,SAAU0+7B,EAAW1pF,EAASr07B,EAAKna,GAM7D90B,KAAKywmC,kBD4LF,SAAkBzjD,GACvB,IAAI0jD,EAAWT,GAAYjjD,GAE3B,GAAK0jD,EAAL,CAIA,IAAIJ,EAAmBI,EAASJ,iBAC5BxugC,EAAQ4ugC,EAASjm6B,KAAK3oG,MACtBjkC,EAASyyiC,EAAiBzyiC,OAC1Bp4C,EAAS6qlC,EAAiBntmC,IAAI,UAC9BhC,EAAQmvmC,EAAiBntmC,IAAI,SAEpB,MAAThC,IACFA,EAAQ2gG,EAAMv1E,MAAMprB,IAGtB,IAAIwvmC,EAAYN,GAAgBC,GAGlB,MAAV7qlC,IACFo4C,EAAOp4C,OAASkrlC,EAAY,OAAS,QAGvC,IAAIpm8B,EAASzoE,EAAM0t9B,YAAYztjC,QAC/BwoK,EAAO,GAAKA,EAAO,IAAMA,EAAOjwG,WAGvB,MAATn5D,GAEGA,EAAQopK,EAAO,MAEhBppK,EAAQopK,EAAO,IAGbppK,EAAQopK,EAAO,KACjBppK,EAAQopK,EAAO,IAGjB1sG,EAAO18D,MAAQA,EAEXwvmC,IACF9yiC,EAAOp4C,OAASirlC,EAASjm6B,KAAK3oG,MAAM27c,UAAY,OAAS,OArC3D,CAuCF,CCxO6B,CAAgCuvgB,GAEzDtksB,EAAOhpX,UAAU4uH,OAAO/tH,MAAMP,KAAMI,WAEpCJ,KAAK4wmC,0BAA0B5jD,EAAW/9gC,GAAK,EACjD,EAMAuhkC,EAAS9wmC,UAAUmxmC,kBAAoB,SAAU7jD,EAAW1pF,EAASr07B,EAAKna,GACxE90B,KAAK4wmC,0BAA0B5jD,EAAW/9gC,GAAK,EACjD,EAMAuhkC,EAAS9wmC,UAAUmzB,OAAS,SAAUyw8B,EAASr07B,GAC7C,IAAI269B,EAAc5pgC,KAAK8wmC,aACvBlnG,GAAeA,EAAY/2+B,OAAOoc,EACpC,EAMAuhkC,EAAS9wmC,UAAU2l8B,QAAU,SAAUi+B,EAASr07B,GAC9CjvC,KAAK+wmC,oBAAoB9hkC,GAEzBy5U,EAAOhpX,UAAU2l8B,QAAQ9k8B,MAAMP,KAAMI,UACvC,EAEAowmC,EAAS9wmC,UAAUkxmC,0BAA4B,SAAU5jD,EAAW/9gC,EAAK82tB,GACvE,IAAIirW,EAAQR,EAASS,oBAAoBjxmC,KAAKywmC,kBAE9C,GAAKO,EAAL,CAIA,IAAIV,EDoMD,SAA6BtjD,GAClC,IAAI0jD,EAAWT,GAAYjjD,GAC3B,OAAO0jD,GAAYA,EAASJ,gBAC9B,CCvM2B,CAA2CtjD,GAClEsjD,GAAoBtwmC,KAAK8wmC,eAAiB9wmC,KAAK8wmC,aAAe,IAAIE,IAAU1i/B,OAAO0+7B,EAAWsjD,EAAkBrhkC,EAAK82tB,GAAe/lwB,KAAK+wmC,oBAAoB9hkC,EAH7J,CAIF,EAEAuhkC,EAAS9wmC,UAAUqxmC,oBAAsB,SAAU9hkC,GACjDjvC,KAAK8wmC,cAAgB9wmC,KAAK8wmC,aAAazrK,QAAQp25B,GAC/CjvC,KAAK8wmC,aAAe,IACtB,EAEAN,EAASU,yBAA2B,SAAU3kmC,EAAMm97B,GAOlD6mK,GAAiBhkmC,GAAQm97B,CAC3B,EAIA8mK,EAASS,oBAAsB,SAAU1kmC,GACvC,OAAOA,GAAQgkmC,GAAiBhkmC,EAClC,EAGAikmC,EAASjkmC,KAAO,OACTikmC,CACT,CAzFA,CAyFE,IAEF,YClGA,IAAI,GAAQttI,KACL,SAASiuI,GAA4BC,EAAU9nU,EAAW0jR,EAAWw6C,GAC1E,IAAI/85B,EAAOui3B,EAAUvi3B,KAErB,IAAIA,EAAK3oG,MAAM27c,UAAf,CAKA,IAAI4zjB,EAAiBrkD,EAAUp13B,SAAS,aACpC015B,EAAiB+jB,EAAez56B,SAAS,aACzC056B,EAAahkB,EAAenqlC,IAAI,SAChC6mmC,EAAWxC,EAAUz1+B,iBAAiBul8B,UACtC0N,EAAcv63B,EAAKo63B,eAAe,CACpCC,UAAWusC,EACX34wB,OAAO,IAGT,GAAKssuB,EAAY3kkC,OAAjB,CAMA,IAAIkxmC,EAAgBD,EAAWjxmC,OAC3BmxmC,EAAsB,GAAMJ,GAAUK,gBACtCC,EAAqB,KACrBprS,EAAa,EAEjB,GAAIkrS,EACF,IAAK,IAAI5wmC,EAAI,EAAGA,EAAIokkC,EAAY3kkC,OAAQO,IAAK,CAC3C,IAAI+wmC,EAASH,EAAoBrumC,IAAI6hkC,EAAYpkkC,GAAG65jC,WAEpD,GAAc,MAAVk3C,EAAgB,CAClBrrS,GAAcqrS,GAAUJ,EAAgB,GAAK3wmC,GAAK2wmC,EAClD,KACF,CACF,CAGF,IAAIzo9B,EAAO2hD,EAAKms3B,cAAcoO,EAAY,GAAG/l6B,OACzCul1B,EAAY8oG,EAAe9lH,eAG/B,IAFA8pI,EAAa,GAAeA,GAAcA,EAAa,CAACA,GAE/C1wmC,EAAI,EAAGA,EAAIokkC,EAAY3kkC,OAAQO,IAAK,CAC3C,IAAIy0lC,EAAY5q5B,EAAKms3B,cAAcoO,EAAYpkkC,GAAGq+J,OAC9Ch7J,OAAI,EACJjB,OAAI,EACJ+7B,OAAQ,EACRC,OAAS,EAETyrK,EAAKi/V,gBACPzliB,EAAI6kJ,EACJ9lJ,EAAIgnmC,EAAShnmC,EACb+7B,EAAQs2jC,EAAYpxlC,EACpB+6B,EAASgrkC,EAAShrkC,OAClB8pH,EAAO7kJ,EAAI86B,IAEX96B,EAAI+lmC,EAAS/lmC,EACbjB,EAAI8lJ,EACJ/pH,EAAQirkC,EAASjrkC,MAEjB+pH,EAAO9lJ,GADPg8B,EAASq2jC,EAAYrylC,IAIvB,IAAIy3jC,EAAYuK,EAAYpkkC,EAAI,GAAG65jC,UACtB,MAAbA,GAAqBi3C,EAAmBzlmC,IAAIwujC,EAAWn0P,GACvDh9B,EAAUnkxB,IAAI,IAAI,GAAa,CAC7B0xgC,KAAmB,MAAb4jC,EAAoB,QAAUA,EAAY,KAChDn41B,MAAO,CACLr+N,EAAGA,EACHjB,EAAGA,EACH+7B,MAAOA,EACPC,OAAQA,GAEV3qB,MAAO,EAAgB,CACrB+oH,KAAMk0+B,EAAWhrS,IAChBk+K,GACHhP,WAAW,EACXphgB,QAAQ,KAEVkyV,GAAcA,EAAa,GAAKirS,CAClC,CAEA,GAAMH,GAAUK,gBAAkBC,CAhElC,CAdA,CA+EF,CACO,SAASE,GAA0BR,GACxC,GAAMA,GAAUK,gBAAkB,IACpC,CCnFA,IAAII,GAAmB,CAAC,WAAY,gBAAiB,YACjDC,GAAmB,CAAC,YAAa,YAAa,kBAE9CC,GAEJ,SAAUrpvB,GAGR,SAASqpvB,IACP,IAAIrljC,EAAmB,OAAXg8T,GAAmBA,EAAOnoX,MAAMP,KAAMI,YAAcJ,KAIhE,OAFA0sD,EAAMngD,KAAOwlmC,EAAkBxlmC,KAC/BmgD,EAAM+jjC,iBAAmB,uBAClB/jjC,CACT,CA2DA,OAnEAkgX,EAAUmlsB,EAAmBrpvB,GAc7BqpvB,EAAkBrymC,UAAU4uH,OAAS,SAAU0+7B,EAAW1pF,EAASr07B,EAAKna,GACtE90B,KAAKo7T,MAAMvtE,YACX,IAAImk3B,EAAehymC,KAAKiymC,WAIxB,GAHAjymC,KAAKiymC,WAAa,IAAI,GACtBjymC,KAAKo7T,MAAMj2S,IAAInlB,KAAKiymC,YAEfjlD,EAAU7pjC,IAAI,QAAnB,CAIA,IAAIqkmC,EAAYx6C,EAAU8T,mBACtB5/7B,EAAS,GAA2Bsm+B,EAAWx6C,GAC/CklD,EAAc,IAAI,GAAYllD,EAAW,EAAc,CACzDk/C,gBAAiB,SAAUiG,GAGzB,IAFA,IAAIC,EAAa5K,EAAUz1+B,iBAAiBk5+B,gBAEnCrqmC,EAAI,EAAGA,EAAIwxmC,EAAW/xmC,OAAQO,IACrC,GAAI4vjC,GAAqB4hD,EAAWxxmC,GAAGw1jC,aAAapJ,EAAUvi3B,MAAM3oG,OAElE,OAAO,EAKX,OAAO,CACT,GACCo/B,IACH,EAAY2w+B,GAAkBK,EAAY/slC,IAAK+slC,GAE/ClymC,KAAKiymC,WAAW9slC,IAAI+slC,EAAY3F,YAEhC,EAAYuF,IAAkB,SAAUpnmC,GAClCsijC,EAAU7pjC,IAAI,CAACuH,EAAM,UACvB2nmC,GAAoB3nmC,GAAM1K,KAAMA,KAAKiymC,WAAYjlD,EAAWw6C,EAEhE,GAAGxnmC,MAI8B80B,GAA4B,oBAAjBA,EAAQvoB,MAA8BuoB,EAAQyjkC,YAGxF,GAAwByZ,EAAchymC,KAAKiymC,WAAYjlD,GAGzDtksB,EAAOhpX,UAAU4uH,OAAO1uH,KAAKI,KAAMgtjC,EAAW1pF,EAASr07B,EAAKna,EArC5D,CAsCF,EAEAi9kC,EAAkBrymC,UAAUmzB,OAAS,WACnC++kC,GAA0B5xmC,KAC5B,EAEA+xmC,EAAkBxlmC,KAAO,gBAClBwlmC,CACT,CArEA,CAqEE,IAEEM,GAAsB,CACxBlxE,UAAW,SAAUiwE,EAAU9nU,EAAW0jR,EAAWw6C,GACnD,IAAI/85B,EAAOui3B,EAAUvi3B,KAErB,IAAIA,EAAK3oG,MAAM27c,UAAf,CAIA,IAAI60jB,EAAiBtlD,EAAUp13B,SAAS,aACpCy15B,EAAiBilB,EAAe166B,SAAS,aACzCy+C,EAAag32B,EAAelqlC,IAAI,SACpCkzO,EAAa,GAAeA,GAAcA,EAAa,CAACA,GAWxD,IAVA,IAAI2z3B,EAAWxC,EAAUz1+B,iBAAiBul8B,UACtC5thB,EAAej/V,EAAKi/V,eACpBilR,EAAY,EACZq2Q,EAAcv63B,EAAKo63B,eAAe,CACpCC,UAAWwtC,IAETjy3B,EAAK,GACL0jB,EAAK,GACLoue,EAAYk7W,EAAezhG,eAEtBhr/B,EAAI,EAAGA,EAAIokkC,EAAY3kkC,OAAQO,IAAK,CAC3C,IAAIy0lC,EAAY5q5B,EAAKms3B,cAAcoO,EAAYpkkC,GAAGq+J,OAE9CyqY,GACFrpT,EAAG,GAAKg12B,EACRh12B,EAAG,GAAK2p3B,EAAShnmC,EACjB+gQ,EAAG,GAAKsx1B,EACRtx1B,EAAG,GAAKim2B,EAAShnmC,EAAIgnmC,EAAShrkC,SAE9BqhN,EAAG,GAAK2p3B,EAAS/lmC,EACjBo8O,EAAG,GAAKg12B,EACRtx1B,EAAG,GAAKim2B,EAAS/lmC,EAAI+lmC,EAASjrkC,MAC9BglO,EAAG,GAAKsx1B,GAGV,IAAI/uR,EAAa3X,IAAct4kB,EAAWh2O,OACtCo6jC,EAAYuK,EAAYpkkC,GAAG65jC,UAC3Bn7gC,EAAO,IAAI,GAAa,CAC1Bu3+B,KAAmB,MAAb4jC,EAAoB,QAAUuK,EAAYpkkC,GAAG65jC,UAAY,KAC/DjlF,WAAW,EACXlzwB,MAAO,CACLslF,GAAIvnE,EAAG,GACP3uD,GAAI2uD,EAAG,GACPvjD,GAAIinE,EAAG,GACPtsI,GAAIssI,EAAG,IAET1vP,MAAO,EAAgB,CACrB+owB,OAAQ/miB,EAAWiwlB,IAClBn0F,GACH/9P,QAAQ,IAEV,GAA6B90b,EAAKgjL,MAAO6vgB,EAAU9/Z,WACnDi3d,EAAUnkxB,IAAIm6B,EAChB,CAjDA,CAkDF,EACA+h/B,eAAgB,SAAU+vE,EAAU9nU,EAAW0jR,EAAWw6C,GACxD,IAAI/85B,EAAOui3B,EAAUvi3B,KAEjB4i5B,EADsBrgC,EAAUp13B,SAAS,kBACJA,SAAS,aAC9Coy6B,EAAWxC,EAAUz1+B,iBAAiBul8B,UACtC5thB,EAAej/V,EAAKi/V,eACpB+kkB,EAAmBhk6B,EAAKs73B,sBAE5B,GAAK0oC,EAAiBpumC,OAQtB,IAJA,IAAIggP,EAAK,GACL0jB,EAAK,GACLoue,EAAYk7W,EAAezhG,eAEtBhr/B,EAAI,EAAGA,EAAI6tmC,EAAiBpumC,OAAQO,IAC3C,IAAK,IAAI8C,EAAI,EAAGA,EAAI+qmC,EAAiB7tmC,GAAGP,OAAQqD,IAAK,CACnD,IAAI2xlC,EAAY5q5B,EAAKms3B,cAAc63C,EAAiB7tmC,GAAG8C,GAAGu7J,OAEtDyqY,GACFrpT,EAAG,GAAKg12B,EACRh12B,EAAG,GAAK2p3B,EAAShnmC,EACjB+gQ,EAAG,GAAKsx1B,EACRtx1B,EAAG,GAAKim2B,EAAShnmC,EAAIgnmC,EAAShrkC,SAE9BqhN,EAAG,GAAK2p3B,EAAS/lmC,EACjBo8O,EAAG,GAAKg12B,EACRtx1B,EAAG,GAAKim2B,EAAS/lmC,EAAI+lmC,EAASjrkC,MAC9BglO,EAAG,GAAKsx1B,GAGV,IAAI/1iC,EAAO,IAAI,GAAa,CAC1Bu3+B,KAAM,cAAgB43E,EAAiB7tmC,GAAG8C,GAAG+2jC,UAC7CjlF,WAAW,EACXlzwB,MAAO,CACLslF,GAAIvnE,EAAG,GACP3uD,GAAI2uD,EAAG,GACPvjD,GAAIinE,EAAG,GACPtsI,GAAIssI,EAAG,IAET1vP,MAAO89tB,EACP/9P,QAAQ,IAEV,GAA6B90b,EAAKgjL,MAAO6vgB,EAAU9/Z,WACnDi3d,EAAUnkxB,IAAIm6B,EAChB,CAEJ,EACA8h/B,UAAW,SAAUgwE,EAAU9nU,EAAW0jR,EAAWw6C,GACnD2J,GAA4BC,EAAU9nU,EAAW0jR,EAAWw6C,EAC9D,GAGE+K,GAEJ,SAAU7pvB,GAGR,SAAS6pvB,IACP,IAAI7ljC,EAAmB,OAAXg8T,GAAmBA,EAAOnoX,MAAMP,KAAMI,YAAcJ,KAGhE,OADA0sD,EAAMngD,KAAOgmmC,EAAmBhmmC,KACzBmgD,CACT,CAGA,OAVAkgX,EAAU2lsB,EAAoB7pvB,GAS9B6pvB,EAAmBhmmC,KAAO,QACnBgmmC,CACT,CAZA,CAYER,IAIES,GAEJ,SAAU9pvB,GAGR,SAAS8pvB,IACP,IAAI9ljC,EAAmB,OAAXg8T,GAAmBA,EAAOnoX,MAAMP,KAAMI,YAAcJ,KAGhE,OADA0sD,EAAMngD,KAAOgmmC,GAAmBhmmC,KACzBmgD,CACT,CAGA,OAVAkgX,EAAU4lsB,EAAoB9pvB,GAS9B8pvB,EAAmBjmmC,KAAO,QACnBimmC,CACT,CAZA,CAYET,ICzNEU,GAEJ,SAAU/pvB,GAGR,SAAS+pvB,IACP,IAAI/ljC,EAAmB,OAAXg8T,GAAmBA,EAAOnoX,MAAMP,KAAMI,YAAcJ,KAGhE,OADA0sD,EAAMngD,KAAO,OACNmgD,CACT,CAkBA,OAzBAkgX,EAAU6lsB,EAAU/pvB,GASpB+pvB,EAAS/ymC,UAAU4uH,OAAS,SAAUk5+B,EAAWlkI,GAC/Ctj+B,KAAKo7T,MAAMvtE,YAEP252B,EAAUrkmC,IAAI,SAChBnD,KAAKo7T,MAAMj2S,IAAI,IAAI,GAAK,CACtBm9M,MAAOkl4B,EAAUz1+B,iBAAiBul8B,UAClCjjjC,MAAO,EAAS,CACd+oH,KAAMoq+B,EAAUrkmC,IAAI,oBACnBqkmC,EAAUz7G,gBACb33gB,QAAQ,EACRr3S,IAAK,IAGX,EAEA016B,EAASlmmC,KAAO,OACTkmmC,CACT,CA3BA,CA2BE,IAEEC,GAAc,CAGhBvwjC,OAAQ,GAEH,SAAS,GAAQ4thC,GACtBA,EAAUnyB,sBAAsB60D,IAChC1iC,EAAUpyB,uBAAuB,IACjCoyB,EAAUp0B,yBAAyB,cAAe,IAClDmpD,GAAiB/0B,EAAW,IAAKk0B,GAAoByO,IACrD5N,GAAiB/0B,EAAW,IAAKk0B,GAAoByO,IACrD3iC,EAAUnyB,sBAAsB20D,IAChCxiC,EAAUnyB,sBAAsB40D,IAChCziC,EAAU/0B,sBAAqB,SAAUn9+B,GAEnCA,EAAO0mH,OAAS1mH,EAAO4mH,QAAU5mH,EAAO0oL,OAC1C1oL,EAAO0oL,KAAO,CAAC,EAEnB,GACF,CC3De,SAASos3B,GAAYrvI,GAClCA,EAAQq/B,iBAAiB,SAAS,SAAU3f,GAC1C,IAAIxz+B,EAAOwz+B,EAAYx+2B,UACnBl5F,EAAS,GACT438B,EAAWF,EAAYjx3B,iBAE3B,GAAKmx3B,EAAL,CAIA,IAAI39L,EAAO29L,EAAS0vH,mBACpB,EAAYrtT,GAAM,SAAU96mB,EAAMsi3B,GAChCv9iC,EAAKwywB,KAAKxywB,EAAK42iC,aAAa7gQ,EAAKwnQ,GAAWp1tB,MAAM,SAAUj6K,EAAKrY,GAC/D/5H,EAAO+5H,GAAa/5H,EAAO+5H,IAAc,GACzC,IAAIlwB,EAAQ+t2B,EAASy0E,YAAYj64B,EAAKqv4B,GACtCzhhC,EAAO+5H,GAAW0n5B,GAAa8lD,GAAa199B,GAASA,EAAQ299B,GAAqB5vH,EACpF,GACF,IAEA1z+B,EAAKwywB,MAAK,SAAUlna,GAIlB,IAAIskB,EAAa,GAAY9zV,EAAOwvU,IAAM,SAAU3lO,GAClD,OAAO099B,GAAa199B,EACtB,KAAM299B,GAAqB5vH,GAE3B538B,EAAOwvU,GAAKj5W,KAAKu9X,EAAWr9X,SAC5ByN,EAAKq5iC,cAAc/tsB,EAAKxvU,EAAOwvU,GACjC,GArBA,CAsBF,GACF,CAEA,SAAS+3vB,GAAa199B,GACpB,OAAQ7oG,MAAM6oG,EAAM,MAAQ7oG,MAAM6oG,EAAM,GAC1C,CAEA,SAAS299B,GAAqB5vH,GAG5B,MAAO,CAACA,EAASxivB,GAAIwivB,EAASj8oB,GAChC,CCvCe,SAAS8rwB,GAAoBl1iC,GAC1C,IAAIm1iC,EAAcn1iC,EAAO6/wB,MAEzB,GAAIs1R,EAAa,CACV,GAAeA,KAClBA,EAAc,CAACA,IAGjB,IAAIC,EAAkB,GACtB,EAAYD,GAAa,SAAUE,EAAUp4vB,GACvCo4vB,EAASC,WACPD,EAAS3mmC,OAAS2mmC,EAAS5w4B,QAC7B4w4B,EAAS5w4B,MAAQ4w4B,EAAS3mmC,MAG5BsxD,EAAOww7B,MAAQxw7B,EAAOww7B,OAAS,GAE1B,GAAexw7B,EAAOww7B,SACzBxw7B,EAAOww7B,MAAQ,CAACxw7B,EAAOww7B,QAGzBxw7B,EAAOww7B,MAAMxs/B,KAAKqxmC,IAElBD,EAAgBpxmC,KAAKqxmC,EAEzB,IACAr1iC,EAAO6/wB,MAAQu1R,CACjB,CAEA,EAAYp1iC,EAAOi/sB,QAAQ,SAAUksP,GAC/BA,GAAgC,UAAnBA,EAAUz8/B,MAAoBy8/B,EAAUoqG,aACvDpqG,EAAUqqG,WAAarqG,EAAUoqG,WAErC,GACF,CC3BA,IAAIE,GAEJ,SAAU5qvB,GAGR,SAAS4qvB,IACP,IAAI5mjC,EAAmB,OAAXg8T,GAAmBA,EAAOnoX,MAAMP,KAAMI,YAAcJ,KAGhE,OADA0sD,EAAMngD,KAAO+mmC,EAAU/mmC,KAChBmgD,CACT,CAsLA,OA7LAkgX,EAAU0msB,EAAW5qvB,GASrB4qvB,EAAU5zmC,UAAU4uH,OAAS,SAAU003B,EAAa1f,EAASr07B,GAC3D,IAAIyuyB,EAAQslK,EAAYjx3B,iBACpBqpM,EAAQp7T,KAAKo7T,MACb5rT,EAAOwz+B,EAAYx+2B,UACnBoub,EAAU5yjB,KAAKykJ,MAEnB,SAAS8u9B,EAAa/jmC,EAAMsrW,GAC1B,IAAImrrB,EAAaz2hC,EAAK+ggC,cAAcz1pB,EAAK,WAAa,SAEtD,GAAmB,SAAfmrrB,EAAJ,CAIA,IAAI1tC,EAAa,GAA+B/o/B,EAAK+ggC,cAAcz1pB,EAAK,eACpE0rrB,EAAa,GAAwBP,GAAa,GAAI,EAAG,EAAG,GAC5Dm+C,EAAe50kC,EAAK+ggC,cAAcz1pB,EAAK,iBAAmB,EAU9D,OATA0rrB,EAAWv4gB,KAAK,CACd55gB,MAAO,CACL8+9B,eAAe,GAEjBp2yB,GAAI,IACJnkE,OAAQ2/3B,EAAW,GAAK,EACxB1/3B,OAAQ0/3B,EAAW,GAAK,EACxBhy4B,SAAU699B,EAAevhlC,KAAKsmC,GAAK,KAAO,IAErCq9/B,CAdP,CAeF,CAEA,SAASgtE,EAAc9gB,EAAWzlB,EAAWwmC,EAAajkmC,EAAMsrW,EAAK26oB,GAEnEg+G,EAAY5l3B,YAEZ,IAAK,IAAIjtP,EAAI,EAAGA,EAAIqskC,EAAU5skC,OAAS,EAAGO,IAAK,CAC7C,IAAI4liC,EAAa+sE,EAAa/jmC,EAAMsrW,GAEhC0rrB,IACFA,EAAWktE,SAAW9ymC,EAElB8xlC,EAAU9xlC,IACZ4liC,EAAW55yB,YAAY8l2B,EAAU9xlC,IACjC,EAAQ60/B,EAAS,YAAc,eAAe+wC,EAAY,CACxDviiC,EAAGgpkC,EAAUrskC,GAAG,GAChBoC,EAAGiqkC,EAAUrskC,GAAG,IACfoi/B,EAAalooB,IAEhB0rrB,EAAW55yB,YAAYqg1B,EAAUrskC,IAGnC6ymC,EAAYtulC,IAAIqhhC,GAEpB,CACF,CAEA,SAASmtE,EAAiBrokC,GACxB,OAAO,EAAWA,GAAQ,SAAUn/B,GAClC,MAAO,CAACux0B,EAAMh9kB,GAAIg9kB,EAAMz2e,GAC1B,GACF,CAEAz3V,EAAK+4hB,KAAKqqB,GAASztiB,KAAI,SAAU21V,GAC/B,IAAIxvU,EAAS97B,EAAKo5iC,cAAc9tsB,GAEhC,GAAKxvU,EAAL,CAIA,IAAIrG,EAAU,IAAI,GACd+7X,EAAW,IAAI,GACflxZ,EAAS,CACXwyN,MAAO,CACLh3L,OAAQA,IAGZrG,EAAQq9L,MAAMh3L,OAASqokC,EAAiBrokC,GACxC01X,EAAS1+L,MAAMh3L,OAASqokC,EAAiBrokC,GACzC,GAAkBrG,EAASn1B,EAAQkz+B,EAAalooB,GAChD,GAAkBkmD,EAAUlxZ,EAAQkz+B,EAAalooB,GACjD,IAAI84vB,EAAY,IAAI,GAChBH,EAAc,IAAI,GACtBG,EAAUzulC,IAAI67Y,GACd4ysB,EAAUzulC,IAAI8f,GACd2ukC,EAAUzulC,IAAIsulC,GACdD,EAAcxysB,EAAS1+L,MAAMh3L,OAAQA,EAAQmokC,EAAajkmC,EAAMsrW,GAAK,GACrEtrW,EAAKu5iC,iBAAiBjusB,EAAK84vB,EAnB3B,CAoBF,IAAGrliC,QAAO,SAAU4x+B,EAAQ4nC,GAC1B,IAAI6rB,EAAYhhjB,EAAQ8vb,iBAAiBqlG,GACrC/mrB,EAAW4ysB,EAAU/4I,QAAQ,GAC7B517B,EAAU2ukC,EAAU/4I,QAAQ,GAC5B44I,EAAcG,EAAU/4I,QAAQ,GAChC/q9B,EAAS,CACXwyN,MAAO,CACLh3L,OAAQ97B,EAAKo5iC,cAAczI,KAI1BrwiC,EAAOwyN,MAAMh3L,SAIlBkokC,EAAcxysB,EAAS1+L,MAAMh3L,OAAQx7B,EAAOwyN,MAAMh3L,OAAQmokC,EAAajkmC,EAAM2wiC,GAAQ,GACrFv5D,GAAa3h9B,GACb2h9B,GAAa5llB,GACb,GAAoBA,EAAUlxZ,EAAQkz+B,GACtC,GAAoB/98B,EAASn1B,EAAQkz+B,GACrCxz+B,EAAKu5iC,iBAAiB5I,EAAQyzD,GAChC,IAAG/glC,QAAO,SAAUioV,GAClB1/C,EAAMvoS,OAAO+/hB,EAAQ8vb,iBAAiB5noB,GACxC,IAAGinC,UACHvyY,EAAKq0+B,mBAAkB,SAAU+vH,EAAW94vB,GAC1C,IAAI4poB,EAAYl1+B,EAAKqhgC,aAAa/1pB,GAC9BkmD,EAAW4ysB,EAAU/4I,QAAQ,GAC7B517B,EAAU2ukC,EAAU/4I,QAAQ,GAC5B44I,EAAcG,EAAU/4I,QAAQ,GAEhC0pB,EAAY/0+B,EAAK+ggC,cAAcz1pB,EAAK,SACpCvtP,EAAQg33B,EAAUnn3B,KACtBg+L,EAAMj2S,IAAIyulC,GACV5ysB,EAAS5W,SAAS,EAAgBs6lB,EAAU9szB,SAAS,aAAag0zB,eAAgB,CAChFxu3B,KAAM,OACNggpB,OAAQ7vpB,KAEVk33B,GAAyBzjlB,EAAU0jlB,EAAW,aAC9CD,GAAyBx/8B,EAASy/8B,EAAW,aAC7C,IAAI4oG,EAAiB5oG,EAAU9szB,SAAS,aACpCi86B,EAAgBvmB,EAAejlhC,WAAailhC,EAAezujB,YAAYx2d,UAC3EpjC,EAAQkD,OAAS0rkC,EACjB,EAAY,CAAC,WAAY,SAAU,SAAS,SAAU73iB,GACpD,IAAI4rb,EAAalD,EAAU9szB,SAAS,CAACokY,EAAW,cAC5C83iB,EAAclsH,EAAWv/6B,WAAau/6B,EAAW/od,YAAYx2d,UAEjEpjC,EAAQuw7B,YAAYx5Z,GAAW7zhB,OAAS2rkC,GAAeD,CACzD,IACA5ukC,EAAQmlX,SAAS,EAAgBkjsB,EAAe9lH,eAAgB,CAC9Dpq2B,KAAM7P,EACNqe,QAAS,GACT4n2B,MAAO+Q,EAAU/Q,SAEnB,IAAI8yG,EAAgB5hG,EAAU9szB,SAAS,YACnCm86B,EAAiBztB,EAAc1u5B,SAAS,aAAam0zB,eACzD0nH,EAAYt4I,WAAU,SAAUqrE,GAC9B,GAAIA,aAAsB,GAAS,CACjC,IAAIggD,EAAYhgD,EAAWnyhC,MAC3BmyhC,EAAWp8oB,SAAS,EAAc,CAEhC7/P,MAAOi87B,EAAUj87B,MACjBtmJ,EAAGuilC,EAAUvilC,EACbjB,EAAGwjlC,EAAUxjlC,EACb+7B,MAAOynjC,EAAUznjC,MACjBC,OAAQwnjC,EAAUxnjC,QACjBul9B,GACL,MACEiiD,EAAWp8oB,SAASm6lB,GACpBiiD,EAAWC,SAASl56B,GACpBi56B,EAAWnyhC,MAAM8+9B,eAAgB,EAGXqzD,EAAWhxE,YAAY,YAC7Bnh9B,MAAQ,EAAa0/lC,GACvC,IAAIhyQ,EAAcvy1B,EAAKsggC,WAAW3sgC,IAAIqM,EAAKuggC,kBAAkBy2B,EAAWktE,UAAW54vB,IACnE,MAAfinf,GAAuBz1zB,MAAMy1zB,MAAkBA,EAAc,IAC9D8lJ,GAAc2+C,EAAY99C,GAAqBhE,GAAY,CACzD4C,aAAc93+B,EAAKy0iC,UACnB18D,eAAgBzsoB,EAChB0soB,cAAeg/C,EAAWktE,SAC1B3xQ,YAAaA,EACbgoJ,aAAcx83B,EACdi93B,eAAgBjG,EAAU342B,SAE9B,IACAu42B,GAAoByvH,EAAWttB,EAAcnjlC,IAAI,SAAUmjlC,EAAcnjlC,IAAI,aAAcmjlC,EAAcnjlC,IAAI,YAC/G,IACAnD,KAAKykJ,MAAQj1I,CACf,EAEA8jmC,EAAU5zmC,UAAUmzB,OAAS,WAC3B7yB,KAAKo7T,MAAMvtE,YACX7tP,KAAKykJ,MAAQ,IACf,EAEA6u9B,EAAU/mmC,KAAO,QACV+mmC,CACT,CA/LA,CA+LEtwT,IAEF,YCtMA,IAAIgxT,GAEJ,SAAUtrvB,GAGR,SAASsrvB,IACP,IAAItnjC,EAAmB,OAAXg8T,GAAmBA,EAAOnoX,MAAMP,KAAMI,YAAcJ,KAIhE,OAFA0sD,EAAMngD,KAAOynmC,EAAiBznmC,KAC9BmgD,EAAM499B,iBAAkB,EACjB599B,CACT,CAiFA,OAzFAkgX,EAAUonsB,EAAkBtrvB,GAW5BsrvB,EAAiBt0mC,UAAUgxD,KAAO,SAAUmN,GAC1C6qT,EAAOhpX,UAAUgxD,KAAKnwD,MAAMP,KAAMI,WAIlCJ,KAAK2hmC,qBAAuB,IAAI,GAAqB,GAAY3hmC,KAAKwkI,QAASxkI,MAAO,GAAYA,KAAKi2gC,WAAYj2gC,MACrH,EAEAg0mC,EAAiBt0mC,UAAUyohC,eAAiB,SAAUtq9B,EAAQyl6B,GAC5D,OAAO69H,GAAuBnhmC,KAAM,CAClCkrjC,cAAe,aACfC,mBAAoBpr/B,KAExB,EAEAi0iC,EAAiBt0mC,UAAUu3X,cAAgB,SAAU5xN,EAAW4r2B,EAAgBjiwB,GAC9E,IAAIx/P,EAAOxP,KAAKwkI,UAEZyv+B,EADWj0mC,KAAK+xH,iBACS6g/B,mBACzBlomC,EAAO1K,KAAKwkI,UAAUwjN,QAAQ3iL,GAC9B6u8B,EAAyB,KAATxpmC,EAAc1K,KAAK0K,KAAOA,EAC1Cy6gC,EAAcc,GAAoCjmhC,KAAMqlK,GAC5D,OAAO092B,GAAoB,UAAW,CACpClu/B,OAAQq/kC,EACRhwF,YAAY,EACZxwX,OAAQ,EAAWugd,GAAe,SAAUxp6B,GAC1C,IAAI/sB,EAAMluK,EAAKrM,IAAIqM,EAAK42iC,aAAa372B,EAAKktJ,KAAMtyL,GAChD,OAAO092B,GAAoB,YAAa,CACtC+B,WAAY,UACZK,YAAaA,EACbz6gC,KAAM+/L,EAAK//L,KACXvJ,MAAOu8K,EACP4m2B,UAAW5m2B,GAEf,KAEJ,EAEAs27B,EAAiBt0mC,UAAUy0mC,mBAAqB,SAAU9u8B,GACxD,GAAiB,MAAbA,EAOF,IANA,IAAI+xpB,EAASp3zB,KAAKwkI,UACd0+2B,EAAWlj/B,KAAK+xH,iBAChBr1G,EAAS06yB,EAAO16Q,UAAU,EAAWwmc,EAASxq1B,YAAY,SAAUi/L,GACtE,OAAOy/d,EAAOgvP,aAAazutB,EAC7B,IAAItyL,GAEKzkK,EAAI,EAAGi+H,EAAMniH,EAAOrc,OAAQO,EAAIi+H,EAAKj+H,IAC5C,IAAK0rC,MAAM5vB,EAAO9b,IAAK,CACrB,IAAIqzmC,EAAgB/wH,EAAS0vH,mBAC7B,OAAO1vH,EAASkxH,aAAaH,EAAcrzmC,GAAGi2jC,YAAYn6iC,EAAO9b,IAAKA,EACxE,CAGN,EAEAozmC,EAAiBznmC,KAAO,eACxBynmC,EAAiB/38B,aAAe,CAAC,SACjC+38B,EAAiBpzkB,cAAgB,CAE/Bj7hB,EAAG,EACHuy/B,QAAS,OACTnm4B,iBAAkB,QAClBuy9B,iBAAiB,EACjB+uB,WAAY,EACZlhY,UAAW,CACTpzsB,MAAO,EACPxyB,KAAM,QACNM,KAAM,SAERxL,MAAO,CACLs9B,SAAU,OAKZ459B,WAAY,GAGPy7G,CACT,CA3FA,CA2FEr2V,IAEF,YChGA,IAAI02V,GAAmBpP,GAAY9jmC,MAEnC,SAASmzmC,GAAal0kB,EAAKn9M,GACzB,OAAO,EAAgB,CACrBA,KAAMA,GACLm9M,EACL,CAEA,IAAIm0kB,GAEJ,SAAU7rvB,GAGR,SAAS6rvB,IACP,IAAI7njC,EAAmB,OAAXg8T,GAAmBA,EAAOnoX,MAAMP,KAAMI,YAAcJ,KAGhE,OADA0sD,EAAMngD,KAAOgomC,EAAWhomC,KACjBmgD,CACT,CAsGA,OA7GAkgX,EAAU2nsB,EAAY7rvB,GAStB6rvB,EAAW70mC,UAAU61/B,cAAgB,WACnC,IAAI8nE,EAAcr9jC,KAAKmD,IAAI,eACvB8tjC,EAAcjxjC,KAAKmD,IAAI,eACvB2+F,EAAQ9hG,KAAKmD,IAAI,SACjBi75B,EAAWp+5B,KAAKmD,IAAI,YACpBshmC,EAAWzkmC,KAAKmD,IAAI,YAEpBo/1B,EAAYvi2B,KAAKmD,IAAI,aACrBkhmC,EAAgBrkmC,KAAKmD,IAAI,YACzBqxmC,EAAWx0mC,KAAKmD,IAAI,CAAC,WAAY,SACjCsxmC,EAAgBz0mC,KAAKmD,IAAI,CAAC,WAAY,cACtC+mgC,EAAUlqgC,KAAKmD,IAAI,eACnBmhmC,EAAetkmC,KAAKmD,IAAI,gBACxBuxmC,EAAkB,EAAW10mC,KAAKmD,IAAI,cAAgB,IAAI,SAAUwxmC,GAE9C,MAApBA,EAAahnmC,KAAegnmC,EAAahnmC,IAAM,IAAMgnmC,EAAa9mmC,IACpE8mmC,EAAa9mmC,IAAM,EACU,MAApB8mmC,EAAa9mmC,KAAe8mmC,EAAa9mmC,IAAM,IAAM8mmC,EAAahnmC,MAC3EgnmC,EAAahnmC,IAAM,GAGrB,IAAIinmC,EAAiBvQ,EAEK,MAAtBsQ,EAAapn/B,QACfqn/B,EAAiB,EAAgB,CAC/Brn/B,MAAOon/B,EAAapn/B,OACnB82+B,IAIL,IAAIwQ,EAAoB,EAAa,EAAaF,GAAe,CAC/Dt3C,YAAaA,EACbpM,YAAaA,EACbnv9B,MAAOA,EACPs8zB,SAAUA,EACVqmM,SAAUA,EAEVliQ,UAAWA,EAEX731B,KAAMiqmC,EAAavklC,KACnBoklC,SAAUA,EACVtQ,aAAc,MACdh6F,QAASA,EAETm6F,cAAeuQ,EACftQ,aAAcA,IACb,GAEH,GAAI,GAAgBmQ,GAAgB,CAClC,IAAIK,EAAUD,EAAkBnqmC,KAChCmqmC,EAAkBnqmC,KAAO+pmC,EAAchomC,QAAQ,UAAsB,MAAXqomC,EAAkBA,EAAU,GACxF,MAAW,GAAkBL,KAC3BI,EAAkBnqmC,KAAO+pmC,EAAcI,EAAkBnqmC,KAAMmqmC,IAGjE,IAAI9/+B,EAAQ,IAAI,GAAM8/+B,EAAmB,KAAM70mC,KAAKsj+B,SAKpD,OAJA,EAAavu2B,EAAO8r8B,GAAqBnhkC,WAEzCq1H,EAAM+u2B,SAAW,QACjB/u2B,EAAMo2J,eAAiBnrR,KAAKmrR,eACrBp2J,CACT,GAAG/0H,MACHA,KAAK+0mC,iBAAmBL,CAC1B,EAEAH,EAAW70mC,UAAUs1mC,mBAAqB,WACxC,OAAOh1mC,KAAK+0mC,gBACd,EAEAR,EAAWhomC,KAAO,QAClBgomC,EAAW3zkB,cAAgB,CAEzBj7hB,EAAG,EACHs5B,OAAQ,CAAC,MAAO,OAChBq4G,OAAQ,MACRuxoB,WAAY,GACZ6gP,SAAU,CACRzmrB,MAAM,GAIRo6uB,YAAa,CAAC,EAAG,GACjBpM,YAAa,EACb9mD,YAAa,GACbro6B,OAAO,EAEPwgI,MAAO,UACP87rB,SAAU,EAAa,CACrBjsL,UAAW,CACT5knB,MAAO,SAER8m/B,GAAiBj2M,UACpB77D,UAAW+xQ,GAAaD,GAAiB9xQ,WAAW,GACpDkiQ,SAAU6P,GAAaD,GAAiB5P,UAAU,GAElDtjE,UAAWmzE,GAAaD,GAAiBlzE,WAAW,GACpDC,UAAWkzE,GAAaD,GAAiBjzE,WAAW,GAEpD+xE,UAAW,IAENoB,CACT,CA/GA,CA+GE7n9B,IAEF,YC5HA,IAAI,GAAmB,CAAC,WAAY,gBAAiB,YAEjD,GAEJ,SAAUg8N,GAGR,SAAS4qvB,IACP,IAAI5mjC,EAAmB,OAAXg8T,GAAmBA,EAAOnoX,MAAMP,KAAMI,YAAcJ,KAGhE,OADA0sD,EAAMngD,KAAO+mmC,EAAU/mmC,KAChBmgD,CACT,CAoKA,OA3KAkgX,EAAU0msB,EAAW5qvB,GASrB4qvB,EAAU5zmC,UAAU4uH,OAAS,SAAU2m/B,EAAY3xI,EAASr07B,GAC9CjvC,KAAKo7T,MACXvtE,YAEN7tP,KAAKk1mC,WAAWD,GAEhBj1mC,KAAKm1mC,uBAAuBF,EAC9B,EAEA3B,EAAU5zmC,UAAUw1mC,WAAa,SAAUD,GACzC,IAAI5mH,EAAQ4mH,EAAWlj/B,iBAevB,EAbmB,EADCs83B,EAAMukH,oBACmB,SAAUwC,GACrD,IAAI1rG,EAAW0rG,EAAcrg/B,MAAM5xH,IAAI,YAAciymC,EAAc1qmC,KAAO,GAU1E,OARkB,IAAI,GAAY0qmC,EAAcrg/B,MAAO,CACrD204B,SAAUA,EACV/q+B,SAAU,CAAC0v9B,EAAM3tvB,GAAI2tvB,EAAMpnpB,IAC3B1gP,SAAU6u/B,EAAczm4B,MACxBq53B,gBAAiB,EACjBC,eAAgB,EAChBC,cAAe,GAGnB,KAC0B,SAAUgK,GAClC,EAAY,GAAkBA,EAAY/slC,IAAK+slC,GAC/ClymC,KAAKo7T,MAAMj2S,IAAI+slC,EAAY3F,WAC7B,GAAGvsmC,KACL,EAEAszmC,EAAU5zmC,UAAUy1mC,uBAAyB,SAAUF,GACrD,IAAI5mH,EAAQ4mH,EAAWlj/B,iBACnBki/B,EAAgB5lH,EAAMukH,mBAE1B,GAAKqB,EAAc5zmC,OAAnB,CAIA,IAAIiiO,EAAQ2y4B,EAAW9xmC,IAAI,SACvBmvmC,EAAiB2C,EAAWr96B,SAAS,aACrCy56B,EAAiB4D,EAAWr96B,SAAS,aACrCy15B,EAAiBilB,EAAe166B,SAAS,aACzC015B,EAAiB+jB,EAAez56B,SAAS,aACzCy96B,EAAgB/C,EAAenvmC,IAAI,QACnCmymC,EAAgBjE,EAAelumC,IAAI,QACnCoymC,EAAkBloB,EAAelqlC,IAAI,SACrCsumC,EAAkBnkB,EAAenqlC,IAAI,SACrCqymC,EAAqB,GAAeD,GAAmBA,EAAkB,CAACA,GAC1EE,EAAqB,GAAehE,GAAmBA,EAAkB,CAACA,GAC1EiE,EAAa,GACbC,EAAa,GAQjB,GAAc,WAAVrz4B,EAKF,IAJA,IAAIsz4B,EAAc3B,EAAc,GAAGpvC,iBAC/Bnk0B,EAAK2tvB,EAAM3tvB,GACXumG,EAAKonpB,EAAMpnpB,GAENrmW,EAAI,EAAGA,EAAIg1mC,EAAYv1mC,OAAQO,IAClCy0mC,GAEFK,EADiBG,EAAcH,EAAYF,EAAoB50mC,IACxCiB,KAAK,IAAI,GAAe,CAC7CygO,MAAO,CACLo+B,GAAIA,EACJumG,GAAIA,EACJlnW,EAAG61mC,EAAYh1mC,GAAGq+J,UAKpBq28B,GAAiB10mC,EAAIg1mC,EAAYv1mC,OAAS,GAE5Cs1mC,EADiBE,EAAcF,EAAYF,EAAoB70mC,IACxCiB,KAAK,IAAI,GAAa,CAC3CygO,MAAO,CACLo+B,GAAIA,EACJumG,GAAIA,EACJqH,GAAIsnwB,EAAYh1mC,GAAGq+J,MACnBl/J,EAAG61mC,EAAYh1mC,EAAI,GAAGq+J,cAO5B,KAAI628B,EACAC,EAAkB,EAAW9B,GAAe,SAAUmB,EAAet6vB,GACvE,IAAIkqtB,EAAcowC,EAAcvwC,iBAEhC,OADAixC,EAAyC,MAArBA,EAA4B9wC,EAAY3kkC,OAAS,EAAIwC,KAAKgL,IAAIm3jC,EAAY3kkC,OAAS,EAAGy1mC,GACnG,EAAW9wC,GAAa,SAAUqwB,GACvC,OAAOhnG,EAAM+lH,aAAa/e,EAAUp27B,MAAO67M,EAC7C,GACF,IACIk7vB,EAAa,GAEjB,IAASp1mC,EAAI,EAAGA,GAAKk1mC,EAAmBl1mC,IAAK,CAG3C,IAFA,IAAI0qC,EAAS,GAEJlnC,EAAI,EAAGA,EAAI6vmC,EAAc5zmC,OAAQ+D,IACxCknC,EAAOzpC,KAAKk0mC,EAAgB3xmC,GAAGxD,IAI7B0qC,EAAO,IACTA,EAAOzpC,KAAKypC,EAAO,GAAGvpC,SAOpBszmC,GAEFK,EADiBG,EAAcH,EAAYF,EAAoB50mC,IACxCiB,KAAK,IAAI,GAAiB,CAC/CygO,MAAO,CACLh3L,OAAQA,MAKVgqkC,GAAiBU,GAEnBL,EADiBE,EAAcF,EAAYF,EAAoB70mC,EAAI,IAC5CiB,KAAK,IAAI,GAAgB,CAC9CygO,MAAO,CACLh3L,OAAQA,EAAOtpC,OAAOg0mC,OAK5BA,EAAa1qkC,EAAOvpC,QAAQu4D,SAC9B,CA7CqB,CAgDzB,IAAI63qB,EAAYk7W,EAAezhG,eAC3BpH,EAAY8oG,EAAe9lH,eAE/B,EAAYmuI,GAAY,SAAUA,EAAY76vB,GAC5C96W,KAAKo7T,MAAMj2S,IAAI,GAAkBwwlC,EAAY,CAC3CthmC,MAAO,EAAgB,CACrB+owB,OAAQ,OACRhgpB,KAAMq4+B,EAAmB36vB,EAAM26vB,EAAmBp1mC,SACjDmk/B,GACHpwgB,QAAQ,IAEZ,GAAGp0e,MACH,EAAY01mC,GAAY,SAAUA,EAAY56vB,GAC5C96W,KAAKo7T,MAAMj2S,IAAI,GAAkBuwlC,EAAY,CAC3CrhmC,MAAO,EAAgB,CACrB+oH,KAAM,OACNggpB,OAAQo4V,EAAmB16vB,EAAM06vB,EAAmBn1mC,SACnD8xuB,GACH/9P,QAAQ,IAEZ,GAAGp0e,KAzHH,CAgBA,SAAS61mC,EAAcI,EAAYC,EAAqBp7vB,GACtD,IAAIwrd,EAAaxrd,EAAMo7vB,EAAoB71mC,OAE3C,OADA41mC,EAAW3vS,GAAc2vS,EAAW3vS,IAAe,GAC5CA,CACT,CAsGF,EAEAgtS,EAAU/mmC,KAAO,QACV+mmC,CACT,CA7KA,CA6KE,IAEF,YCrLA,IAAI6C,GAEJ,SAAUztvB,GAGR,SAASytvB,EAAcx+wB,EAAK71P,EAAOs0gC,GACjC,IAAI1pjC,EAAQg8T,EAAO9oX,KAAKI,KAAM23V,EAAK71P,EAAOs0gC,IAAiBp2mC,KAK3D,OAHA0sD,EAAMngD,KAAO,QACbmgD,EAAMiiL,MAAQ,EACdjiL,EAAMhiD,KAAO,GACNgiD,CACT,CAEA,OAXAkgX,EAAUupsB,EAAeztvB,GAWlBytvB,CACT,CAbA,CAaE,IAEF,YCbA,IAAIE,GAEJ,WACE,SAASA,EAAMpB,EAAY3xI,EAASr07B,GAKlCjvC,KAAK04J,WAAa,GAClB14J,KAAKimuB,OAASgvY,EACdj1mC,KAAKs2mC,eAAiBjnlC,EAAI4llC,EAAWD,sBAAsB,SAAUuB,EAAgBz7vB,GACnF,IAAInjB,EAAM,aAAemjB,EACrBs6vB,EAAgB,IAAI,GAAcz9wB,EAAK,IAAIjjF,IAO/C,OALA0g2B,EAAc1qmC,KAAO6rmC,EAAepzmC,IAAI,QAExCiymC,EAAcrg/B,MAAQwh/B,EACtBA,EAAe9r6B,KAAO2q6B,EACtBp1mC,KAAK04J,WAAW72J,KAAK81V,GACdy9wB,CACT,GAAGp1mC,MACHA,KAAK6uH,OAAOom/B,EAAYhmkC,EAC1B,CAyIA,OAvIAonkC,EAAM32mC,UAAUkzmC,iBAAmB,WACjC,OAAO5ymC,KAAKs2mC,cACd,EAEAD,EAAM32mC,UAAUi4jC,YAAc,SAAUx2jC,EAAOq1mC,GAC7C,IAAIpB,EAAgBp1mC,KAAKs2mC,eAAeE,GACxC,OAAOx2mC,KAAKo0mC,aAAagB,EAAcv+C,YAAY11jC,GAAQq1mC,EAC7D,EAGAH,EAAM32mC,UAAU00mC,aAAe,SAAUn18B,EAAOu38B,GAC9C,IACI7n4B,EADgB3uO,KAAKs2mC,eAAeE,GACd7n4B,MAG1B,MAAO,CAFC3uO,KAAK0gQ,GAAKzhG,EAAQp8J,KAAKuxH,IAAIu6G,GAC3B3uO,KAAKinW,GAAKhoM,EAAQp8J,KAAK4wH,IAAIk7G,GAErC,EAEA0n4B,EAAM32mC,UAAUklkC,YAAc,SAAUz4jC,GACtC,IAAIqoI,EAAKroI,EAAG,GAAKnM,KAAK0gQ,GAClBrsH,EAAKloI,EAAG,GAAKnM,KAAKinW,GAClB3vN,EAASz0I,KAAK4yF,KAAK++C,EAAKA,EAAKH,EAAKA,GACtCG,GAAM8C,EACNjD,GAAMiD,EAQN,IAPA,IAIIm/9B,EAJAp3I,EAASx89B,KAAK0xH,OAAO8f,EAAIG,GAGzBki+B,EAAgB32iC,IAEhB42iC,GAAkB,EAEb/1mC,EAAI,EAAGA,EAAIZ,KAAKs2mC,eAAej2mC,OAAQO,IAAK,CACnD,IAAIw0mC,EAAgBp1mC,KAAKs2mC,eAAe11mC,GACpC2niB,EAAO1liB,KAAKmjH,IAAIq52B,EAAS+1I,EAAczm4B,OAEvC45T,EAAOmukB,IACTD,EAAcrB,EACduB,EAAiB/1mC,EACjB81mC,EAAgBnukB,EAEpB,CAEA,MAAO,CAACoukB,IAAkBF,GAAeA,EAAY9xC,YAAYrt7B,IACnE,EAEA++9B,EAAM32mC,UAAUmvH,OAAS,SAAUom/B,EAAYhmkC,GAC7C,IAAIhQ,EAASg2kC,EAAW9xmC,IAAI,UACxByo+B,EAAY387B,EAAIk8L,WAChB0gwB,EAAa587B,EAAI+rI,YACjB477B,EAAW/zmC,KAAKgL,IAAI+99B,EAAWC,GAAc,EACjD7r+B,KAAK0gQ,GAAK,GAAwBzhO,EAAO,GAAI2s8B,GAC7C5r+B,KAAKinW,GAAK,GAAwBhoU,EAAO,GAAI4s8B,GAC7C7r+B,KAAK6oxB,WAAaosV,EAAW9xmC,IAAI,cAAgBN,KAAKsmC,GAAK,IAE3D,IAAImuG,EAAS299B,EAAW9xmC,IAAI,WAExB63D,GAASs8E,IAAWh0F,GAASg0F,MAC/BA,EAAS,CAAC,EAAGA,IAGft3I,KAAKsuW,GAAK,GAAwBh3N,EAAO,GAAIs/9B,GAC7C52mC,KAAKD,EAAI,GAAwBu3I,EAAO,GAAIs/9B,GAC5C,EAAK52mC,KAAKs2mC,gBAAgB,SAAUlB,EAAet6vB,GACjDs6vB,EAAc3lD,UAAUzvjC,KAAKsuW,GAAItuW,KAAKD,GACtC,IAAI4uO,EAAQ3uO,KAAK6oxB,WAAa/ta,EAAMj4W,KAAKsmC,GAAK,EAAInpC,KAAKs2mC,eAAej2mC,OAEtEsuO,EAAQ9rO,KAAK0xH,MAAM1xH,KAAK4wH,IAAIk7G,GAAQ9rO,KAAKuxH,IAAIu6G,IAC7Cym4B,EAAczm4B,MAAQA,CACxB,GAAG3uO,KACL,EAEAq2mC,EAAM32mC,UAAU6uE,OAAS,SAAU+05B,EAASr07B,GAC1C,IAAIglkC,EAAgBj0mC,KAAKs2mC,eACrBrB,EAAaj1mC,KAAKimuB,OACtB,EAAKguY,GAAe,SAAUmB,GAC5BA,EAActzgC,MAAM2t9B,UAAU1v/B,KAAU,IAC1C,IACAuj6B,EAAQq/B,iBAAiB,SAAS,SAAUk0G,EAAa/7vB,GACvD,GAA4C,UAAxC+7vB,EAAY1zmC,IAAI,qBACjBmg+B,EAAQnpoB,aAAa,QAAS08wB,EAAY1zmC,IAAI,iBAAmB8xmC,EADpE,CAKA,IAAIzlmC,EAAOqnmC,EAAYry+B,UACvB,EAAKyv+B,GAAe,SAAUmB,GAC5BA,EAActzgC,MAAMyt9B,oBAAoB//iC,EAAMA,EAAK42iC,aAAagvD,EAAcz9wB,KAChF,GALA,CAMF,GAAG33V,MACH,IAAIixjC,EAAcgkD,EAAW9xmC,IAAI,eAC7B2zmC,EAAa,IAAIpi2B,GACrBoi2B,EAAWrnD,UAAU,EAAGwB,GACxB6lD,EAAWxolC,YAAY,GAEvB,EAAK2llC,GAAe,SAAUmB,EAAet6vB,GAC3CytvB,GAAgB6M,EAActzgC,MAAOszgC,EAAcrg/B,MAAO+h/B,EAC5D,GACF,EAEAT,EAAM32mC,UAAUg1iC,eAAiB,SAAUpxE,EAASc,EAAQjj+B,GAE1D,OADAkmB,QAAQC,KAAK,oBACN,IACT,EAEA+ulC,EAAM32mC,UAAUi1iC,iBAAmB,SAAUrxE,EAASc,EAAQxs2B,GAE5D,OADAvwG,QAAQC,KAAK,oBACN,IACT,EAEA+ulC,EAAM32mC,UAAUm1iC,aAAe,SAAU1/5B,GAEvC,OADA9tH,QAAQC,KAAK,qBACN,CACT,EAEA+ulC,EAAMn2mC,OAAS,SAAUoj+B,EAASr07B,GAChC,IAAI8nkC,EAAY,GAahB,OAZAzzI,EAAQwe,cAAc,SAAS,SAAUmzH,GACvC,IAAI5mH,EAAQ,IAAIgoH,EAAMpB,EAAY3xI,EAASr07B,GAC3C8nkC,EAAUl1mC,KAAKws/B,GACf4mH,EAAWlj/B,iBAAmBs83B,CAChC,IACA/qB,EAAQq/B,iBAAiB,SAAS,SAAUk0G,GACE,UAAxCA,EAAY1zmC,IAAI,sBAGlB0zmC,EAAY9k/B,iBAAmBgl/B,EAAUF,EAAY1zmC,IAAI,eAAiB,GAE9E,IACO4zmC,CACT,EAMAV,EAAM398B,WAAa,GACZ298B,CACT,CA9JA,GAgKA,YCtKO,SAAS,GAAQtmC,GACtBA,EAAUp0B,yBAAyB,QAAS,IAC5Co0B,EAAUpyB,uBAAuB,IACjCoyB,EAAUnyB,sBAAsB,IAChCmyB,EAAU9zB,eAAe,CACvBx/N,WAAY,QACZx7wB,MAAO,SAAU+h7B,GACf,IAAIxz+B,EAAOwz+B,EAAYx+2B,UAEvBh1H,EAAKwywB,MAAK,SAAUlna,GAClBtrW,EAAKmshC,cAAc7grB,EAAK,aAAc,YACxC,IAEAtrW,EAAK6rhC,UAAU,aAAc,YAC/B,GAEJ,CChBA,IAAI27E,GAAO,0BAaJ,SAASC,GAAQ1+lC,EAAI2+lC,GAC1B,QAASpnG,GAASv3/B,GAAI2+lC,EACxB,CAEA,SAASpnG,GAASv3/B,GAChB,OAAOA,EAAGy+lC,MAAUz+lC,EAAGy+lC,IAAQ,CAAC,EAClC,CAWA,GAAuB,CACrBzqmC,KAAM,mBACNkyB,MAAO,oBACP8vC,OAAQ,UACPzrB,IC9BH,IAAIq0jC,GAEJ,SAAUzuvB,GAGR,SAASyuvB,EAAe5+lC,GACtB,IAAIm0C,EAAQg8T,EAAO9oX,KAAKI,OAASA,KAEjC0sD,EAAMsl/B,IAAMz5hC,EAEZ,IAAI6+lC,EAAmB/zmC,GAAKqpD,EAAM2qjC,kBAAmB3qjC,GACjD4qjC,EAAmBj0mC,GAAKqpD,EAAM6qjC,kBAAmB7qjC,GACjD8qjC,EAAiBn0mC,GAAKqpD,EAAM+qjC,gBAAiB/qjC,GAC7CgrjC,EAAoBr0mC,GAAKqpD,EAAMirjC,mBAAoBjrjC,GACnDkrjC,EAAev0mC,GAAKqpD,EAAMmrjC,cAAenrjC,GA0C7C,OAnCAA,EAAM1pC,OAAS,SAAU80lC,EAAa13kB,GAEpCpgiB,KAAK8xU,UACL9xU,KAAK+3mC,KAAO,EAASxnlC,EAAM6vgB,IAAQ,CAAC,EAAG,CACrC43kB,kBAAkB,EAClBC,iBAAiB,EAEjBC,kBAAkB,EAClBC,yBAAyB,IAGR,MAAfL,IACFA,GAAc,IAGI,IAAhBA,GAAwC,SAAhBA,GAA0C,QAAhBA,IACpDv/lC,EAAG3H,GAAG,YAAawmmC,GACnB7+lC,EAAG3H,GAAG,YAAa0mmC,GACnB/+lC,EAAG3H,GAAG,UAAW4mmC,KAGC,IAAhBM,GAAwC,UAAhBA,GAA2C,SAAhBA,IACrDv/lC,EAAG3H,GAAG,aAAc8mmC,GACpBn/lC,EAAG3H,GAAG,QAASgnmC,GAEnB,EAEAlrjC,EAAMolR,QAAU,WACdv5T,EAAGy1B,IAAI,YAAaopkC,GACpB7+lC,EAAGy1B,IAAI,YAAaspkC,GACpB/+lC,EAAGy1B,IAAI,UAAWwpkC,GAClBj/lC,EAAGy1B,IAAI,aAAc0pkC,GACrBn/lC,EAAGy1B,IAAI,QAAS4pkC,EAClB,EAEOlrjC,CACT,CA0IA,OAhMAkgX,EAAUuqsB,EAAgBzuvB,GAwD1ByuvB,EAAez3mC,UAAU0gH,WAAa,WACpC,OAAOpgH,KAAKo4mC,SACd,EAEAjB,EAAez3mC,UAAU24mC,WAAa,WACpC,OAAOr4mC,KAAKs4mC,SACd,EAEAnB,EAAez3mC,UAAU64mC,kBAAoB,SAAUC,GACrDx4mC,KAAKw4mC,eAAiBA,CACxB,EAEArB,EAAez3mC,UAAU2l8B,QAAU,WACjCrl8B,KAAK8xU,SACP,EAEAqlyB,EAAez3mC,UAAU23mC,kBAAoB,SAAUl4mC,GACrD,IAAI,GAA6CA,GAAjD,CAMA,IAFA,IAAI06I,EAAK16I,EAAE2Q,OAEJ+pI,GAAI,CACT,GAAIA,EAAG0sQ,UACL,OAIF1sQ,EAAKA,EAAGwyzB,cAAgBxyzB,EAAGxoD,MAC7B,CAEA,IAAIptF,EAAI9E,EAAEg5H,QACNn1H,EAAI7D,EAAEi5H,QAGNp4H,KAAKw4mC,gBAAkBx4mC,KAAKw4mC,eAAer5mC,EAAG8E,EAAGjB,KACnDhD,KAAK0qK,GAAKzmK,EACVjE,KAAK2qK,GAAK3nK,EACVhD,KAAKo4mC,WAAY,EApBnB,CAsBF,EAEAjB,EAAez3mC,UAAU63mC,kBAAoB,SAAUp4mC,GACrD,GAAKa,KAAKo4mC,WAAcK,GAAoB,kBAAmBt5mC,EAAGa,KAAK+3mC,OAA4B,UAAnB54mC,EAAEs28B,eAA4B,GAAyBz18B,KAAKgyiC,IAAK,aAAjJ,CAIA,IAAI/tiC,EAAI9E,EAAEg5H,QACNn1H,EAAI7D,EAAEi5H,QACNsg/B,EAAO14mC,KAAK0qK,GACZiu8B,EAAO34mC,KAAK2qK,GACZn2B,EAAKvwI,EAAIy0mC,EACTrk+B,EAAKrxI,EAAI21mC,EACb34mC,KAAK0qK,GAAKzmK,EACVjE,KAAK2qK,GAAK3nK,EACVhD,KAAK+3mC,KAAKI,yBAA2B,GAAeh5mC,EAAEs/B,OACtDC,GAAQ1+B,KAAM,MAAO,kBAAmBb,EAAG,CACzCq1I,GAAIA,EACJH,GAAIA,EACJqk+B,KAAMA,EACNC,KAAMA,EACNnmP,KAAMvu3B,EACNwu3B,KAAMzv3B,EACNy1mC,oBAAqB,MAlBvB,CAoBF,EAEAtB,EAAez3mC,UAAU+3mC,gBAAkB,SAAUt4mC,GAC9C,GAA6CA,KAChDa,KAAKo4mC,WAAY,EAErB,EAEAjB,EAAez3mC,UAAUi4mC,mBAAqB,SAAUx4mC,GACtD,IAAIy5mC,EAAaH,GAAoB,mBAAoBt5mC,EAAGa,KAAK+3mC,MAC7Dc,EAAaJ,GAAoB,mBAAoBt5mC,EAAGa,KAAK+3mC,MAC7DtnK,EAAatx8B,EAAEsx8B,WACfqoK,EAAqBj2mC,KAAKmjH,IAAIyq1B,GAC9B9jxB,EAAUxtL,EAAEg5H,QACZy0D,EAAUztL,EAAEi5H,QAEhB,GAAmB,IAAfq40B,IAAqBmoK,GAAeC,GAAxC,CAOA,GAAID,EAAY,CASd,IAAI/j7B,EAASik7B,EAAqB,EAAI,IAAMA,EAAqB,EAAI,IAAM,IAE3EC,GAAuB/4mC,KAAM,OAAQ,mBAAoBb,EAAG,CAC1D2iG,MAFU2u2B,EAAa,EAAI57wB,EAAS,EAAIA,EAGxClI,QAASA,EACTC,QAASA,EACT6r7B,oBAAqB,MAEzB,CAEA,GAAII,EAAY,CAEd,IAAI7njB,EAAWnujB,KAAKmjH,IAAIyq1B,GAGxBsoK,GAAuB/4mC,KAAM,aAAc,mBAAoBb,EAAG,CAChE65mC,aAFiBvoK,EAAa,EAAI,GAAK,IAAMz/Y,EAAW,EAAI,GAAMA,EAAW,EAAI,IAAO,KAGxFrkY,QAASA,EACTC,QAASA,EACT6r7B,oBAAqB,MAEzB,CAnCA,CAoCF,EAEAtB,EAAez3mC,UAAUm4mC,cAAgB,SAAU14mC,GAC7C,GAAyBa,KAAKgyiC,IAAK,cAKvC+mE,GAAuB/4mC,KAAM,OAAQ,KAAMb,EAAG,CAC5C2iG,MAFU3iG,EAAEwy8B,WAAa,EAAI,IAAM,EAAI,IAGvChlxB,QAASxtL,EAAE0y8B,OACXjlxB,QAASztL,EAAE2y8B,OACX2mK,oBAAqB,MAEzB,EAEOtB,CACT,CAlMA,CAkME,IAEF,SAAS4B,GAAuBxo+B,EAAYlhG,EAAW4pkC,EAAiB95mC,EAAG+5mC,GACrE3o+B,EAAWio+B,gBAAkBjo+B,EAAWio+B,eAAer5mC,EAAG+5mC,EAAevs7B,QAASus7B,EAAets7B,WAInG,GAAeztL,EAAEs/B,OACjBC,GAAQ6xG,EAAYlhG,EAAW4pkC,EAAiB95mC,EAAG+5mC,GAEvD,CAEA,SAASx6kC,GAAQ6xG,EAAYlhG,EAAW4pkC,EAAiB95mC,EAAG+5mC,GAG1DA,EAAeT,oBAAsBp1mC,GAAKo1mC,GAAqB,KAAMQ,EAAiB95mC,GAEtFoxI,EAAW7xG,QAAQ2Q,EAAW6pkC,EAChC,CAQA,SAAST,GAAoBQ,EAAiB95mC,EAAGsrH,GAC/C,IAAIqrR,EAAUrrR,EAASwu/B,GACvB,OAAQA,GAAmBnjuB,KAAa96U,GAAS86U,IAAY32Y,EAAEs/B,MAAMq3W,EAAU,OACjF,CAEA,YCtOO,SAASqjuB,GAAgBC,EAAgB5k+B,EAAIH,GAClD,IAAIvkI,EAASspmC,EAAetpmC,OAC5BA,EAAO7L,GAAKuwI,EACZ1kI,EAAO9M,GAAKqxI,EACZvkI,EAAOg2vB,OACT,CAKO,SAASuzW,GAAiBD,EAAgBE,EAAW9g/B,EAAOC,GACjE,IAAI3oH,EAASspmC,EAAetpmC,OACxBypmC,EAAYH,EAAeG,UAC3B1++B,EAAUu++B,EAAez5kC,KAAOy5kC,EAAez5kC,MAAQ,EAG3D,GAFAk7F,GAAWy++B,EAEPC,EAAW,CACb,IAAIC,EAAUD,EAAU1rmC,KAAO,EAC3B4rmC,EAAUF,EAAU5rmC,KAAOoyD,IAC/B86D,EAAUh4H,KAAK8K,IAAI9K,KAAKgL,IAAI4rmC,EAAS5++B,GAAU2++B,EACjD,CAEA,IAAIE,EAAY7++B,EAAUu++B,EAAez5kC,KACzCy5kC,EAAez5kC,KAAOk7F,EAEtB/qH,EAAO7L,IAAMu0H,EAAQ1oH,EAAO7L,IAAMy1mC,EAAY,GAC9C5pmC,EAAO9M,IAAMy1H,EAAQ3oH,EAAO9M,IAAM02mC,EAAY,GAC9C5pmC,EAAO8oH,QAAU8g/B,EACjB5pmC,EAAO+oH,QAAU6g/B,EACjB5pmC,EAAOg2vB,OACT,CClCA,IC3BI6zW,GD2BAC,GAAsB,CACxB,YAAe,EACf,QAAW,EACX,MAAS,GAOJ,SAASC,GAAoB16mC,EAAG8vC,EAAK6qkC,GAC1C,IAAI/k/B,EAAQ9lF,EAAI8qgC,sBAAsB56iC,EAAE4s8B,WAEpCm3C,EAAWnu3B,GAASA,EAAMhD,iBAC9B,OAAOgD,GAASA,IAAU+k/B,IAAwBF,GAAoBj6mC,eAAeo1H,EAAM+u2B,WAAaof,GAAYA,EAASnu3B,QAAU+k/B,CACzI,CEzDO,SAASC,GAASj8sB,GACjB9iW,GAAS8iW,KAETA,GADa,IAAIG,WACJC,gBAAgBJ,EAAK,aAEtC,IAAIk8sB,EAAUl8sB,EAId,IAHyB,IAArBk8sB,EAAQ1whC,WACR0whC,EAAUA,EAAQ7vhC,YAEoB,QAAnC6vhC,EAAQhuhC,SAASz8E,eAAgD,IAArByqmC,EAAQ1whC,UACvD0whC,EAAUA,EAAQ5vhC,YAEtB,OAAO4vhC,CACX,CDGA,IAAIC,GAAmC,CACnC,KAAQ,OACR,OAAU,SACV,eAAgB,YAChB,QAAW,UACX,eAAgB,cAChB,iBAAkB,gBAClB,mBAAoB,WACpB,oBAAqB,iBACrB,iBAAkB,UAClB,kBAAmB,WACnB,oBAAqB,aACrB,cAAe,aACf,YAAa,WACb,aAAc,YACd,cAAe,aACf,cAAe,YACf,WAAc,aACd,QAAW,WAEXC,GAAwC5mmC,GAAK2mmC,IAC7CE,GAA4B,CAC5B,qBAAsB,eACtB,aAAc,aAEdC,GAAiC9mmC,GAAK6mmC,IACtCE,GAAa,WACb,SAASA,IACLr6mC,KAAKs6mC,MAAQ,CAAC,EACdt6mC,KAAKgowB,MAAQ,IACjB,CAgTA,OA/SAqyW,EAAU36mC,UAAU6sB,MAAQ,SAAU4/I,EAAKi0X,GACvCA,EAAMA,GAAO,CAAC,EACd,IAAItiI,EAAMi8sB,GAAS5t8B,GAMnBnsK,KAAKu6mC,gBAAkB,GACvB,IAAIpq9B,EAAO,IAAI,GACfnwJ,KAAKgowB,MAAQ73mB,EACb,IAAIqq9B,EAAQ,GACRC,EAAU38sB,EAAIjyU,aAAa,YAAc,GACzC9sD,EAAQsrI,WAAYyzP,EAAIjyU,aAAa,UAAYu0c,EAAIrhgB,OACrDC,EAASqrI,WAAYyzP,EAAIjyU,aAAa,WAAau0c,EAAIphgB,QAC3DsN,MAAMvN,KAAWA,EAAQ,MACzBuN,MAAMtN,KAAYA,EAAS,MAC3B07kC,GAAgB58sB,EAAK3tQ,EAAM,MAAM,GAAM,GAEvC,IADA,IAOIwq9B,EACAC,EARA1whC,EAAQ4zU,EAAI3zU,WACTD,GACHlqF,KAAK66mC,WAAW3whC,EAAOimE,EAAMqq9B,EAAO,MAAM,GAAO,GACjDtwhC,EAAQA,EAAME,YAMlB,GA8bR,SAAmBmyZ,EAAMu+nB,GACrB,IAAK,IAAIl6mC,EAAI,EAAGA,EAAIk6mC,EAAez6mC,OAAQO,IAAK,CAC5C,IAAIwgD,EAAO05jC,EAAel6mC,GAC1BwgD,EAAK,GAAG/sC,MAAM+sC,EAAK,IAAMm7b,EAAKn7b,EAAK,GACvC,CACJ,CAvcQ25jC,CAAU/6mC,KAAKs6mC,MAAOt6mC,KAAKu6mC,iBAC3Bv6mC,KAAKu6mC,gBAAkB,GAGnBE,EAAS,CACT,IAAIO,EAAaC,GAAoBR,GACjCO,EAAW36mC,QAAU,IACrBs6mC,EAAc,CACV12mC,EAAGomK,WAAY2w8B,EAAW,IAAM,GAChCh4mC,EAAGqnK,WAAY2w8B,EAAW,IAAM,GAChCj8kC,MAAOsrI,WAAW2w8B,EAAW,IAC7Bh8kC,OAAQqrI,WAAW2w8B,EAAW,KAG1C,CACA,GAAIL,GAAwB,MAAT57kC,GAA2B,MAAVC,IAChC47kC,EAAmBM,GAAqBP,EAAa,CAAE12mC,EAAG,EAAGjB,EAAG,EAAG+7B,MAAOA,EAAOC,OAAQA,KACpFohgB,EAAI+6kB,eAAe,CACpB,IAAIC,EAASjr9B,GACbA,EAAO,IAAI,IACNhrI,IAAIi2lC,GACTA,EAAOxi/B,OAASwi/B,EAAOvi/B,OAAS+h/B,EAAiB94gC,MACjDs5gC,EAAOn3mC,EAAI22mC,EAAiB32mC,EAC5Bm3mC,EAAOp4mC,EAAI43mC,EAAiB53mC,CAChC,CAOJ,OALKo9hB,EAAIi7kB,gBAA2B,MAATt8kC,GAA2B,MAAVC,GACxCmxH,EAAKyk0B,YAAY,IAAI,GAAK,CACtBtyvB,MAAO,CAAEr+N,EAAG,EAAGjB,EAAG,EAAG+7B,MAAOA,EAAOC,OAAQA,MAG5C,CACHmxH,KAAMA,EACNpxH,MAAOA,EACPC,OAAQA,EACR27kC,YAAaA,EACbC,iBAAkBA,EAClBJ,MAAOA,EAEf,EACAH,EAAU36mC,UAAUm7mC,WAAa,SAAUS,EAAShmZ,EAAaklZ,EAAOe,EAAWC,EAAUC,GACzF,IACI5h+B,EADA7tD,EAAWsvhC,EAAQtvhC,SAASz8E,cAE5BmsmC,EAAkBH,EAOtB,GANiB,SAAbvvhC,IACAwvhC,GAAW,GAEE,SAAbxvhC,IACAyvhC,GAAW,GAEE,SAAbzvhC,GAAoC,WAAbA,EACvB6tD,EAAKy7kB,MAEJ,CACD,IAAKkmZ,EAAU,CACX,IAAIG,EAAWhC,GAAY3thC,GAC3B,GAAI2vhC,GAAYzzmC,GAAOyxmC,GAAa3thC,GAAW,CAC3C6tD,EAAK8h+B,EAAS/7mC,KAAKI,KAAMs7mC,EAAShmZ,GAClC,IAAI2sS,EAAWq5G,EAAQzvhC,aAAa,QACpC,GAAIo26B,EAAU,CACV,IAAI25G,EAAW,CACXlxmC,KAAMu3/B,EACNs5G,UAAW,KACXM,gBAAiB7vhC,EACjB6tD,GAAIA,GAER2g+B,EAAM34mC,KAAK+5mC,GACM,MAAb5vhC,IACA0vhC,EAAkBE,EAE1B,MACSL,GACLf,EAAM34mC,KAAK,CACP6I,KAAM6wmC,EAAU7wmC,KAChB6wmC,UAAWA,EACXM,gBAAiB7vhC,EACjB6tD,GAAIA,IAGZy7kB,EAAYnwsB,IAAI00H,EACpB,CACJ,CACA,IAAIuyB,EAAS0v8B,GAAmB9vhC,GAChC,GAAIogF,GAAUlkK,GAAO4zmC,GAAoB9vhC,GAAW,CAChD,IAAI+4E,EAAMqH,EAAOxsK,KAAKI,KAAMs7mC,GACxB/vlC,EAAK+vlC,EAAQzvhC,aAAa,MAC1BtgE,IACAvrB,KAAKs6mC,MAAM/ulC,GAAMw5I,EAEzB,CACJ,CACA,GAAIlrB,GAAMA,EAAGkpkB,QAET,IADA,IAAI74nB,EAAQoxhC,EAAQnxhC,WACbD,GACoB,IAAnBA,EAAMZ,SACNtpF,KAAK66mC,WAAW3whC,EAAO2vD,EAAI2g+B,EAAOkB,EAAiBF,EAAUC,GAErC,IAAnBvxhC,EAAMZ,UAAkBmyhC,GAC7Bz7mC,KAAK+7mC,WAAW7xhC,EAAO2vD,GAE3B3vD,EAAQA,EAAME,WAG1B,EACAiwhC,EAAU36mC,UAAUq8mC,WAAa,SAAUT,EAAShmZ,GAChD,IAAIllsB,EAAO,IAAI,GAAM,CACjB/b,MAAO,CACH+b,KAAMkrlC,EAAQtuhC,aAElBonZ,QAAQ,EACRnwe,EAAGjE,KAAKg8mC,QAAU,EAClBh5mC,EAAGhD,KAAKi8mC,QAAU,IAEtBC,GAAa5mZ,EAAallsB,GAC1BsqlC,GAAgBY,EAASlrlC,EAAMpwB,KAAKu6mC,iBAAiB,GAAO,GAiSpE,SAA4BnqlC,EAAMklsB,GAC9B,IAAI6mZ,EAAkB7mZ,EAAY8mZ,YAClC,GAAID,EAAiB,CACjB,IAAIp33B,EAAeo33B,EAAgBp33B,aAC/Bs33B,EAAiBt33B,EAChBA,GAAiC,SAAjBA,EAGK,aAAjBA,EACLs33B,EAAiB,aAEK,gBAAjBt33B,GAAmD,qBAAjBA,EACvCs33B,EAAiB,MAEK,eAAjBt33B,GAAkD,oBAAjBA,EACtCs33B,EAAiB,SAEK,YAAjBt33B,GAA+C,iBAAjBA,IACnCs33B,EAAiB,UAZjBA,EAAiB,aAcrBjslC,EAAK/b,MAAM0wO,aAAes33B,CAC9B,CACA,IAAIC,EAAuBhnZ,EAAYinZ,iBACvC,GAAID,EAAsB,CACtB,IAAIt33B,EAAYs33B,EAAqBt33B,UACjCw33B,EAAcx33B,EACdA,IACkB,WAAdA,IACAw33B,EAAc,UAElBpslC,EAAK/b,MAAM2wO,UAAYw33B,EAE/B,CACJ,CAjUQC,CAAmBrslC,EAAMklsB,GACzB,IAAI0zR,EAAY549B,EAAK/b,MACjBowO,EAAWukwB,EAAUvkwB,SACrBA,GAAYA,EAAW,IACvBukwB,EAAUvkwB,SAAW,EACrBr0N,EAAKwoG,QAAU6rH,EAAW,EAC1Br0N,EAAKyoG,QAAU4rH,EAAW,GAE9B,IAAIK,GAAQkkwB,EAAUvkwB,UAAYukwB,EAAUrkwB,aAAe,CACvDqkwB,EAAUnkwB,UACVmkwB,EAAUpkwB,YACTokwB,EAAUvkwB,UAAY,IAAM,KAC7BukwB,EAAUrkwB,YAAc,cAC1B93O,KAAK,KACPm8+B,EAAUlkwB,KAAOA,EACjB,IAAIpxJ,EAAOtjE,EAAK+zN,kBAGhB,OAFAnkP,KAAKg8mC,QAAUtohC,EAAK30D,MACpBu2rB,EAAYnwsB,IAAIiL,GACTA,CACX,EACAiqlC,EAAUh3G,mBACNs2G,GAAc,CACV,EAAK,SAAU2B,EAAShmZ,GACpB,IAAInztB,EAAI,IAAI,GAGZ,OAFA+5mC,GAAa5mZ,EAAanztB,GAC1Bu4mC,GAAgBY,EAASn5mC,EAAGnC,KAAKu6mC,iBAAiB,GAAO,GAClDp4mC,CACX,EACA,KAAQ,SAAUm5mC,EAAShmZ,GACvB,IAAI5hoB,EAAO,IAAI,GAUf,OATAwohC,GAAa5mZ,EAAa5hoB,GAC1BgnhC,GAAgBY,EAAS5nhC,EAAM1zF,KAAKu6mC,iBAAiB,GAAO,GAC5D7mhC,EAAKkzT,SAAS,CACV3iZ,EAAGomK,WAAWix8B,EAAQzvhC,aAAa,MAAQ,KAC3C7oF,EAAGqnK,WAAWix8B,EAAQzvhC,aAAa,MAAQ,KAC3C9sD,MAAOsrI,WAAWix8B,EAAQzvhC,aAAa,UAAY,KACnD7sD,OAAQqrI,WAAWix8B,EAAQzvhC,aAAa,WAAa,OAEzD6H,EAAK0gZ,QAAS,EACP1gZ,CACX,EACA,OAAU,SAAU4nhC,EAAShmZ,GACzB,IAAIrlf,EAAS,IAAI,GASjB,OARAis4B,GAAa5mZ,EAAarlf,GAC1Byq4B,GAAgBY,EAASrr4B,EAAQjwO,KAAKu6mC,iBAAiB,GAAO,GAC9Dtq4B,EAAO22K,SAAS,CACZlmJ,GAAIr2F,WAAWix8B,EAAQzvhC,aAAa,OAAS,KAC7Co7Q,GAAI58L,WAAWix8B,EAAQzvhC,aAAa,OAAS,KAC7C9rF,EAAGsqK,WAAWix8B,EAAQzvhC,aAAa,MAAQ,OAE/CokJ,EAAOmkQ,QAAS,EACTnkQ,CACX,EACA,KAAQ,SAAUqr4B,EAAShmZ,GACvB,IAAIh2qB,EAAO,IAAI,GAUf,OATA48jC,GAAa5mZ,EAAah2qB,GAC1Bo7jC,GAAgBY,EAASh8jC,EAAMt/C,KAAKu6mC,iBAAiB,GAAO,GAC5Dj7jC,EAAKsnW,SAAS,CACVh/F,GAAIv9I,WAAWix8B,EAAQzvhC,aAAa,OAAS,KAC7C6lG,GAAIrnB,WAAWix8B,EAAQzvhC,aAAa,OAAS,KAC7CixG,GAAIzyB,WAAWix8B,EAAQzvhC,aAAa,OAAS,KAC7C4rC,GAAI4yC,WAAWix8B,EAAQzvhC,aAAa,OAAS,OAEjDvsC,EAAK80b,QAAS,EACP90b,CACX,EACA,QAAW,SAAUg8jC,EAAShmZ,GAC1B,IAAI39P,EAAU,IAAI,GAUlB,OATAukpB,GAAa5mZ,EAAa39P,GAC1B+ipB,GAAgBY,EAAS3jpB,EAAS33d,KAAKu6mC,iBAAiB,GAAO,GAC/D5ipB,EAAQ/wE,SAAS,CACblmJ,GAAIr2F,WAAWix8B,EAAQzvhC,aAAa,OAAS,KAC7Co7Q,GAAI58L,WAAWix8B,EAAQzvhC,aAAa,OAAS,KAC7CqxF,GAAI7S,WAAWix8B,EAAQzvhC,aAAa,OAAS,KAC7CsxF,GAAI9S,WAAWix8B,EAAQzvhC,aAAa,OAAS,OAEjD8rY,EAAQyc,QAAS,EACVzc,CACX,EACA,QAAW,SAAU2jpB,EAAShmZ,GAC1B,IACIonZ,EADAC,EAAYrB,EAAQzvhC,aAAa,UAEjC8whC,IACAD,EAAYE,GAAYD,IAE5B,IAAI13kC,EAAU,IAAI,GAAQ,CACtBq9L,MAAO,CACHh3L,OAAQoxkC,GAAa,IAEzBtooB,QAAQ,IAIZ,OAFA8noB,GAAa5mZ,EAAarwrB,GAC1By1kC,GAAgBY,EAASr2kC,EAASjlC,KAAKu6mC,iBAAiB,GAAO,GACxDt1kC,CACX,EACA,SAAY,SAAUq2kC,EAAShmZ,GAC3B,IACIonZ,EADAC,EAAYrB,EAAQzvhC,aAAa,UAEjC8whC,IACAD,EAAYE,GAAYD,IAE5B,IAAI37sB,EAAW,IAAI,GAAS,CACxB1+L,MAAO,CACHh3L,OAAQoxkC,GAAa,IAEzBtooB,QAAQ,IAIZ,OAFA8noB,GAAa5mZ,EAAat0T,GAC1B05sB,GAAgBY,EAASt6sB,EAAUhha,KAAKu6mC,iBAAiB,GAAO,GACzDv5sB,CACX,EACA,MAAS,SAAUs6sB,EAAShmZ,GACxB,IAAIj/U,EAAM,IAAI,GAWd,OAVA6luB,GAAa5mZ,EAAaj/U,GAC1BqkuB,GAAgBY,EAASjluB,EAAKr2Y,KAAKu6mC,iBAAiB,GAAO,GAC3DlkuB,EAAIiuB,SAAS,CACT/5Q,MAAO+w9B,EAAQzvhC,aAAa,eAAiByvhC,EAAQzvhC,aAAa,QAClE5nF,GAAIq3mC,EAAQzvhC,aAAa,KACzB7oF,GAAIs4mC,EAAQzvhC,aAAa,KACzB9sD,OAAQu8kC,EAAQzvhC,aAAa,SAC7B7sD,QAASs8kC,EAAQzvhC,aAAa,YAElCwqT,EAAI+9F,QAAS,EACN/9F,CACX,EACA,KAAQ,SAAUiluB,EAAShmZ,GACvB,IAAIrxtB,EAAIq3mC,EAAQzvhC,aAAa,MAAQ,IACjC7oF,EAAIs4mC,EAAQzvhC,aAAa,MAAQ,IACjC2oD,EAAK8m+B,EAAQzvhC,aAAa,OAAS,IACnCwoD,EAAKin+B,EAAQzvhC,aAAa,OAAS,IACvC7rF,KAAKg8mC,OAAS3x8B,WAAWpmK,GAAKomK,WAAW71B,GACzCx0I,KAAKi8mC,OAAS5x8B,WAAWrnK,GAAKqnK,WAAWh2B,GACzC,IAAIlyI,EAAI,IAAI,GAGZ,OAFA+5mC,GAAa5mZ,EAAanztB,GAC1Bu4mC,GAAgBY,EAASn5mC,EAAGnC,KAAKu6mC,iBAAiB,GAAO,GAClDp4mC,CACX,EACA,MAAS,SAAUm5mC,EAAShmZ,GACxB,IAAIrxtB,EAAIq3mC,EAAQzvhC,aAAa,KACzB7oF,EAAIs4mC,EAAQzvhC,aAAa,KACpB,MAAL5nF,IACAjE,KAAKg8mC,OAAS3x8B,WAAWpmK,IAEpB,MAALjB,IACAhD,KAAKi8mC,OAAS5x8B,WAAWrnK,IAE7B,IAAIwxI,EAAK8m+B,EAAQzvhC,aAAa,OAAS,IACnCwoD,EAAKin+B,EAAQzvhC,aAAa,OAAS,IACnC1pF,EAAI,IAAI,GAKZ,OAJA+5mC,GAAa5mZ,EAAanztB,GAC1Bu4mC,GAAgBY,EAASn5mC,EAAGnC,KAAKu6mC,iBAAiB,GAAO,GACzDv6mC,KAAKg8mC,QAAU3x8B,WAAW71B,GAC1Bx0I,KAAKi8mC,QAAU5x8B,WAAWh2B,GACnBlyI,CACX,EACA,KAAQ,SAAUm5mC,EAAShmZ,GACvB,IACIj/rB,EAAO43/B,GADHqtF,EAAQzvhC,aAAa,MAAQ,IAKrC,OAHAqwhC,GAAa5mZ,EAAaj/rB,GAC1BqklC,GAAgBY,EAASjllC,EAAMr2B,KAAKu6mC,iBAAiB,GAAO,GAC5DlklC,EAAK+9c,QAAS,EACP/9c,CACX,IAGDgklC,CACX,CArTgB,GAsTZyB,GAAqB,CACrB,eAAkB,SAAUR,GACxB,IAAI1zzB,EAAKjyR,SAAS2llC,EAAQzvhC,aAAa,OAAS,IAAK,IACjD6lG,EAAK/7J,SAAS2llC,EAAQzvhC,aAAa,OAAS,IAAK,IACjDixG,EAAKnnK,SAAS2llC,EAAQzvhC,aAAa,OAAS,KAAM,IAClD4rC,EAAK9hG,SAAS2llC,EAAQzvhC,aAAa,OAAS,IAAK,IACjDyxG,EAAW,IAAI,GAAesqH,EAAIl2H,EAAIoL,EAAIrlE,GAG9C,OAFAol/B,GAAqBvB,EAASh+6B,GAC9Bw/6B,GAAwBxB,EAASh+6B,GAC1BA,CACX,EACA,eAAkB,SAAUg+6B,GACxB,IAAI562B,EAAK/qO,SAAS2llC,EAAQzvhC,aAAa,OAAS,IAAK,IACjDo7Q,EAAKtxU,SAAS2llC,EAAQzvhC,aAAa,OAAS,IAAK,IACjD9rF,EAAI41B,SAAS2llC,EAAQzvhC,aAAa,MAAQ,IAAK,IAC/CyxG,EAAW,IAAI,GAAeojE,EAAIumG,EAAIlnW,GAG1C,OAFA88mC,GAAqBvB,EAASh+6B,GAC9Bw/6B,GAAwBxB,EAASh+6B,GAC1BA,CACX,GAEJ,SAASu/6B,GAAqBvB,EAASh+6B,GAEb,mBADFg+6B,EAAQzvhC,aAAa,mBAErCyxG,EAASvwL,QAAS,EAE1B,CACA,SAAS+vmC,GAAwBxB,EAASh+6B,GAEtC,IADA,IAAIvtJ,EAAOurkC,EAAQnxhC,WACZp6C,GAAM,CACT,GAAsB,IAAlBA,EAAKu5C,UACoC,SAAtCv5C,EAAKi8C,SAASi+W,oBAAgC,CACjD,IACI9nZ,EADA46jC,EAAYhtkC,EAAK87C,aAAa,UAG9B1pC,EADA46jC,GAAaA,EAAUv8mC,QAAQ,KAAO,EAC7Bm1B,SAASonlC,EAAW,IAAM,IAE9BA,EACI1y8B,WAAW0y8B,GAGX,EAEb,IAAIC,EAAY,CAAC,EACjBC,GAAiBltkC,EAAMitkC,EAAWA,GAClC,IAAIE,EAAYF,EAAUE,WACnBntkC,EAAK87C,aAAa,eAClB,UACPyxG,EAAS4swB,WAAWro8B,KAAK,CACrBsgD,OAAQA,EACRorE,MAAO2v/B,GAEf,CACAntkC,EAAOA,EAAKq6C,WAChB,CACJ,CACA,SAAS8xhC,GAAa7qhC,EAAQnH,GACtBmH,GAAUA,EAAOkrhC,mBACZryhC,EAAMqyhC,mBACPryhC,EAAMqyhC,iBAAmB,CAAC,GAE9B,EAASryhC,EAAMqyhC,iBAAkBlrhC,EAAOkrhC,kBAEhD,CACA,SAASK,GAAYO,GAGjB,IAFA,IAAIhniC,EAAO8kiC,GAAoBkC,GAC3B7xkC,EAAS,GACJ1qC,EAAI,EAAGA,EAAIu1E,EAAK91E,OAAQO,GAAK,EAAG,CACrC,IAAIqD,EAAIomK,WAAWl0F,EAAKv1E,IACpBoC,EAAIqnK,WAAWl0F,EAAKv1E,EAAI,IAC5B0qC,EAAOzpC,KAAK,CAACoC,EAAGjB,GACpB,CACA,OAAOsoC,CACX,CACA,SAASovkC,GAAgBY,EAASzh+B,EAAIih+B,EAAgBsC,EAAiBC,GACnE,IAAIziK,EAAO/g0B,EACPyj+B,EAAiB1iK,EAAK2hK,iBAAmB3hK,EAAK2hK,kBAAoB,CAAC,EACnEgB,EAAY,CAAC,EACQ,IAArBjC,EAAQhyhC,WAsGhB,SAAiCgyhC,EAASjyhC,GACtC,IAAIu5C,EAAY04+B,EAAQzvhC,aAAa,aACrC,GAAI+2C,EAAW,CACXA,EAAYA,EAAUn2H,QAAQ,KAAM,KACpC,IAAI+wmC,EAAiB,GACjB1wmC,EAAK,KACT81H,EAAUn2H,QAAQgxmC,IAAgB,SAAU9miC,EAAKpqE,EAAMpL,GAEnD,OADAq8mC,EAAe37mC,KAAK0K,EAAMpL,GACnB,EACX,IACA,IAAK,IAAIP,EAAI48mC,EAAen9mC,OAAS,EAAGO,EAAI,EAAGA,GAAK,EAAG,CACnD,IAAIO,EAAQq8mC,EAAe58mC,GACvB2L,EAAOixmC,EAAe58mC,EAAI,GAC1B88mC,EAAWzC,GAAoB95mC,GAEnC,OADA2L,EAAKA,G5OliBN,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,G4OmiBPP,GACJ,IAAK,YACD,GAAiBO,EAAIA,EAAI,CAACu9J,WAAWqz8B,EAAS,IAAKrz8B,WAAWqz8B,EAAS,IAAM,OAC7E,MACJ,IAAK,QACD,GAAa5wmC,EAAIA,EAAI,CAACu9J,WAAWqz8B,EAAS,IAAKrz8B,WAAWqz8B,EAAS,IAAMA,EAAS,MAClF,MACJ,IAAK,SACD,GAAc5wmC,EAAIA,GAAKu9J,WAAWqz8B,EAAS,IAAMC,IACjD,MACJ,IAAK,QAED,GAAW7wmC,EAAI,CAAC,EAAG,EADVjK,KAAKinC,IAAIugI,WAAWqz8B,EAAS,IAAMC,IAClB,EAAG,EAAG,GAAI7wmC,GACpC,MACJ,IAAK,QAED,GAAWA,EAAI,CAAC,EADPjK,KAAKinC,IAAIugI,WAAWqz8B,EAAS,IAAMC,IACrB,EAAG,EAAG,EAAG,GAAI7wmC,GACpC,MACJ,IAAK,SACDA,EAAG,GAAKu9J,WAAWqz8B,EAAS,IAC5B5wmC,EAAG,GAAKu9J,WAAWqz8B,EAAS,IAC5B5wmC,EAAG,GAAKu9J,WAAWqz8B,EAAS,IAC5B5wmC,EAAG,GAAKu9J,WAAWqz8B,EAAS,IAC5B5wmC,EAAG,GAAKu9J,WAAWqz8B,EAAS,IAC5B5wmC,EAAG,GAAKu9J,WAAWqz8B,EAAS,IAGxC,CACAr0hC,EAAKyn4B,kBAAkBhk9B,EAC3B,CACJ,CAlJQ8wmC,CAAwBtC,EAASzh+B,GACjCoj+B,GAAiB3B,EAASgC,EAAgBC,GACrCH,GAyKb,SAA6B9B,EAASuC,EAAwBC,GAC1D,IAAK,IAAIl9mC,EAAI,EAAGA,EAAIs5mC,GAAsC75mC,OAAQO,IAAK,CACnE,IAAIm9mC,EAAc7D,GAAsCt5mC,GAEvC,OADbo9mC,EAAY1C,EAAQzvhC,aAAakyhC,MAEjCF,EAAuB5D,GAAiC8D,IAAgBC,EAEhF,CACA,IAASp9mC,EAAI,EAAGA,EAAIw5mC,GAA+B/5mC,OAAQO,IAAK,CAC5D,IACIo9mC,EADAD,EAAc3D,GAA+Bx5mC,GAEhC,OADbo9mC,EAAY1C,EAAQzvhC,aAAakyhC,MAEjCD,EAAgB3D,GAA0B4D,IAAgBC,EAElE,CACJ,CAvLYC,CAAoB3C,EAASgC,EAAgBC,IAGrD3iK,EAAKvm8B,MAAQum8B,EAAKvm8B,OAAS,CAAC,EACD,MAAvBipmC,EAAelg/B,OACfw90B,EAAKvm8B,MAAM+oH,KAAO8g/B,GAAmBtjK,EAAM,OAAQ0iK,EAAelg/B,KAAM09+B,IAE/C,MAAzBwC,EAAelgW,SACfw9L,EAAKvm8B,MAAM+owB,OAAS8gW,GAAmBtjK,EAAM,SAAU0iK,EAAelgW,OAAQ09V,IAElF,EAAK,CACD,YAAa,UAAW,cAAe,gBAAiB,aAAc,aACvE,SAAUvv9B,GACuB,MAA5B+x9B,EAAe/x9B,KACfqvzB,EAAKvm8B,MAAMk3I,GAAY8e,WAAWiz8B,EAAe/x9B,IAEzD,IACA,EAAK,CACD,iBAAkB,UAAW,WAAY,aAAc,aAAc,YAAa,cACnF,SAAUA,GACuB,MAA5B+x9B,EAAe/x9B,KACfqvzB,EAAKvm8B,MAAMk3I,GAAY+x9B,EAAe/x9B,GAE9C,IACI8x9B,IACAziK,EAAKwhK,YAAcmB,GAEnBD,EAAe/5V,WACfq3L,EAAKvm8B,MAAMkvwB,SAAWl0vB,EAAI4rlC,GAAoBqC,EAAe/5V,WAAW,SAAU5ssB,GAC9E,OAAO0zF,WAAW1zF,EACtB,KAE8B,WAA9B2miC,EAAetw6B,YAAyD,aAA9Bsw6B,EAAetw6B,aACzD4twB,EAAK0gB,WAAY,GAEU,SAA3BgiJ,EAAehpmC,UACfsm8B,EAAKzy6B,QAAS,EAEtB,CAmCA,IAAI23Y,GAAW,oBACf,SAASo+rB,GAAmBrk+B,EAAIppH,EAAQkmD,EAAKmkiC,GACzC,IAAIqD,EAAWxniC,GAAOA,EAAIlwE,MAAMq5a,IAChC,IAAIq+rB,EAQJ,MAHY,SAARxniC,IACAA,EAAM,MAEHA,EAPH,IAAIzmD,EAAMmC,GAAK8rlC,EAAS,IACxBrD,EAAej5mC,KAAK,CAACg4I,EAAIppH,EAAQP,GAOzC,CAOA,IAAI,GAAY,sCAChB,SAAS+qlC,GAAoBmD,GACzB,OAAOA,EAAO33mC,MAAM,KAAc,EACtC,CACA,IAAIg3mC,GAAiB,oEACjBE,GAAkB96mC,KAAKsmC,GAAK,IA+C5Bk1kC,GAAa,6BACjB,SAASpB,GAAiB3B,EAASuC,EAAwBC,GACvD,IAKIQ,EALAjqmC,EAAQinmC,EAAQzvhC,aAAa,SACjC,GAAKx3E,EAKL,IAFAgqmC,GAAW9rjC,UAAY,EAE6B,OAA5C+rjC,EAAiBD,GAAWjsmC,KAAKiC,KAAiB,CACtD,IAAIkqmC,EAAaD,EAAe,GAC5BE,EAAuBt2mC,GAAO+xmC,GAAkCsE,GAC9DtE,GAAiCsE,GACjC,KACFC,IACAX,EAAuBW,GAAwBF,EAAe,IAElE,IAAIG,EAAgBv2mC,GAAOiymC,GAA2BoE,GAChDpE,GAA0BoE,GAC1B,KACFE,IACAX,EAAgBW,GAAiBH,EAAe,GAExD,CACJ,CAiBO,SAASpD,GAAqBP,EAAa5kF,GAC9C,IAAIn95B,EAASm95B,EAAah3/B,MAAQ47kC,EAAY57kC,MAC1C85F,EAASk95B,EAAa/2/B,OAAS27kC,EAAY37kC,OAC3C8iE,EAAQj/F,KAAKgL,IAAI+qH,EAAQC,GAC7B,MAAO,CACH/2B,MAAOA,EACP79F,IAAK02mC,EAAY12mC,EAAI02mC,EAAY57kC,MAAQ,GAAK+iE,GAASi07B,EAAa9xhC,EAAI8xhC,EAAah3/B,MAAQ,GAC7F/7B,IAAK23mC,EAAY33mC,EAAI23mC,EAAY37kC,OAAS,GAAK8iE,GAASi07B,EAAa/yhC,EAAI+yhC,EAAa/2/B,OAAS,GAEvG,CElkBA,ICqBA,IAAI0/kC,GAA+BxzK,GAAc,CAAC,OAAQ,SAAU,OAAQ,UAAW,UAAW,WAAY,OAE9G,OAAQ,QAIR,MAEIyzK,GAEJ,WACE,SAASA,EAAetp1B,EAASyoI,GAC/B99Z,KAAKuM,KAAO,SAEZvM,KAAK4+mC,gBAAkB1zK,KAEvBlr8B,KAAK6+mC,eAAiB,GACtB7+mC,KAAK8+mC,SAAWzp1B,EAOhBr1R,KAAK++mC,WAAahF,GAASj8sB,EAC7B,CA8MA,OA5MA6gtB,EAAej/mC,UAAUmlJ,KAAO,WAK9B,IAAIm69B,EAAeh/mC,KAAKi/mC,cAMxB,IAAKD,EAAc,CACjBA,EAAeh/mC,KAAKi/mC,cAAgBj/mC,KAAKk/mC,cAAcl/mC,KAAK++mC,YAE5D/+mC,KAAK6+mC,eAAeh9mC,KAAKm9mC,GAEzBh/mC,KAAKm/mC,cAAgBn/mC,KAAKi/mC,cAAclpF,aAAaxlgC,QAKrD,IAAIoG,EAwMV,SAAuB6jlC,GACrB,IAAIlwG,EAAU,GACV80G,EAAal0K,KAmBjB,OAjBA,EAAKsvK,GAAO,SAAU6E,GAIpB,GAA2B,MAAvBA,EAAU9D,UAAd,CAIA,IAAIx46B,EAAS,IAAIk/3B,GAAao9C,EAAU30mC,KAAM20mC,EAAUxl+B,IAGxDyw3B,EAAQzogC,KAAKkhM,GAIbq86B,EAAWnzmC,IAAIozmC,EAAU30mC,KAAMq4L,EAT/B,CAUF,IACO,CACLun0B,QAASA,EACT80G,WAAYA,EAEhB,CAjOeE,CAAcN,EAAaxE,OAChClwG,EAAU3z+B,EAAG2z+B,QACb80G,EAAazolC,EAAGyolC,WAEpBp/mC,KAAKu/mC,SAAWj1G,EAChBtqgC,KAAKw/mC,YAAcJ,CACrB,CAEA,MAAO,CACLrpF,aAAc/1hC,KAAKm/mC,cACnB70G,QAAStqgC,KAAKu/mC,SACdH,WAAYp/mC,KAAKw/mC,YAErB,EAEAb,EAAej/mC,UAAUw/mC,cAAgB,SAAUO,GACjD,IAAIj8lC,EACAk8lC,EH6eiBvz8B,EAAKi0X,EG3e1B,IAMEv9Z,GAAwB,OADxB68+B,GAJAl8lC,EAASi8lC,IH0eUtz8B,EG1eSsz8B,EH0eJr/kB,EG1eY,CAClC+6kB,eAAe,EACfE,gBAAgB,IHyeP,IAAIhB,IACH9tlC,MAAM4/I,EAAKi0X,KGzejB,CAAC,GACgBjwY,MAEzB,CAAE,MAAOhxJ,GACP,MAAM,IAAIqoB,MAAM,uBAAyBroB,EAAE4yB,QAC7C,CAGA,IAAIo+H,EAAO,IAAI,GACfA,EAAKhrI,IAAIu6lC,GACTvv9B,EAAKiy6B,qBAAsB,EA4B3B,IAAIl0B,EAAW1qhC,EAAOub,MAClBovgC,EAAY3qhC,EAAOwb,OACnB27kC,EAAcn3lC,EAAOm3lC,YACrB5kF,EAAe/1hC,KAAKm/mC,cAExB,IAAKppF,EAAc,CACjB,IAAI4pF,OAAS,EACTC,OAAS,EACTC,OAAa,EACbC,OAAc,EAoBlB,GAlBgB,MAAZ5xE,GACFyxE,EAAS,EACTE,EAAa3xE,GACJysE,IACTgF,EAAShF,EAAY12mC,EACrB47mC,EAAalF,EAAY57kC,OAGV,MAAbovgC,GACFyxE,EAAS,EACTE,EAAc3xE,GACLwsE,IACTiF,EAASjF,EAAY33mC,EACrB88mC,EAAcnF,EAAY37kC,QAKd,MAAV2glC,GAA4B,MAAVC,EAAgB,CACpC,IAAIG,EAAyBL,EAAcv73B,kBAE7B,MAAVw73B,IACFA,EAASI,EAAuB97mC,EAChC47mC,EAAaE,EAAuBhhlC,OAGxB,MAAV6glC,IACFA,EAASG,EAAuB/8mC,EAChC88mC,EAAcC,EAAuB/glC,OAEzC,CAEA+2/B,EAAe/1hC,KAAKm/mC,cAAgB,IAAI,GAAaQ,EAAQC,EAAQC,EAAYC,EACnF,CAEA,GAAInF,EAAa,CACf,IAAIC,EAAmBM,GAAqBP,EAAa5kF,GAEzD2pF,EAAc9m/B,OAAS8m/B,EAAc7m/B,OAAS+h/B,EAAiB94gC,MAC/D49gC,EAAcz7mC,EAAI22mC,EAAiB32mC,EACnCy7mC,EAAc18mC,EAAI43mC,EAAiB53mC,CACrC,CAQAmtJ,EAAKyk0B,YAAY,IAAI,GAAK,CACxBtyvB,MAAOyzzB,EAAaliF,WAEtB,IAAI2mK,EAAQ,GAOZ,OANA,EAAKh3lC,EAAOg3lC,OAAO,SAAU6E,GA+DjC,IAAmBxl+B,EA9DsD,MAA/D6k+B,GAA6Bv7mC,IAAIk8mC,EAAUxD,mBAC7CrB,EAAM34mC,KAAKw9mC,IA6DAxl+B,EA5DDwl+B,EAAUxl+B,IA+DvBu6V,QAAS,EAERv6V,EAAGkpkB,SACLlpkB,EAAGgsD,UAAS,SAAU37G,GACpBA,EAAMkqZ,QAAS,CACjB,IAlEA,IACO,CACLjkV,KAAMA,EACN4l4B,aAAcA,EACdykF,MAAOA,EAEX,EAaAmE,EAAej/mC,UAAUsgnC,WAAa,SAAUC,GAG9C,IAAIC,EAAclgnC,KAAK4+mC,gBACnBuB,EAAaD,EAAY/8mC,IAAI88mC,GAEjC,OAAIE,IAIJA,EAAangnC,KAAK6+mC,eAAej9mC,OAC9B5B,KAAKk/mC,cAAcl/mC,KAAK++mC,YAC3BmB,EAAYj0mC,IAAIg0mC,EAASE,GAQlBA,EACT,EAEAxB,EAAej/mC,UAAU0gnC,YAAc,SAAUH,GAC/C,IAAIC,EAAclgnC,KAAK4+mC,gBACnBuB,EAAaD,EAAY/8mC,IAAI88mC,GAE7BE,IACFD,EAAYz9O,UAAUw9O,GAEtBjgnC,KAAK6+mC,eAAeh9mC,KAAKs+mC,GAE7B,EAEOxB,CACT,CA9NA,GDnCI0B,GAAW,CAAC,IAAK,IACjBC,GAAa,OACb,GAAS,CAAC,CAAC,CAAC,EAAG,KAAM,CAAC,EAAG,MAAO,CAAC,GAAI,MAAO,CAAC,GAAI,GAAI,CAAC,GAAI,IAAM,CAAC,GAAI,IAAM,CAAC,GAAI,KAAM,CAAC,GAAI,IAAM,CAAC,GAAI,IAAM,CAAC,GAAI,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,MAAO,CAAC,CAAC,GAAI,MAAO,CAAC,GAAI,MAAO,CAAC,GAAI,MAAO,CAAC,GAAI,MAAO,CAAC,GAAI,OAAQ,CAAC,CAAC,GAAI,MAAO,CAAC,GAAI,MAAO,CAAC,GAAI,MAAO,CAAC,GAAI,MAAO,CAAC,GAAI,OAAQ,CAAC,CAAC,GAAI,MAAO,CAAC,GAAI,MAAO,CAAC,GAAI,MAAO,CAAC,GAAI,MAAO,CAAC,GAAI,OAAQ,CAAC,CAAC,EAAG,MAAO,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,MAAO,CAAC,EAAG,OAAQ,CAAC,CAAC,GAAI,MAAO,CAAC,GAAI,MAAO,CAAC,GAAI,MAAO,CAAC,GAAI,MAAO,CAAC,GAAI,OAAQ,CAAC,CAAC,GAAI,MAAO,CAAC,GAAI,MAAO,CAAC,GAAI,MAAO,CAAC,GAAI,MAAO,CAAC,GAAI,OAAQ,CAAC,CAAC,GAAI,MAAO,CAAC,GAAI,MAAO,CAAC,GAAI,MAAO,CAAC,GAAI,MAAO,CAAC,GAAI,OAAQ,CAAC,CAAC,GAAI,IAAK,CAAC,GAAI,MAAO,CAAC,GAAI,MAAO,CAAC,GAAI,IAAK,CAAC,GAAI,KAAM,CAAC,CAAC,GAAI,MAAO,CAAC,GAAI,MAAO,CAAC,GAAI,MAAO,CAAC,GAAI,MAAO,CAAC,GAAI,OAAQ,CAAC,CAAC,GAAI,MAAO,CAAC,GAAI,GAAI,CAAC,GAAI,GAAI,CAAC,GAAI,MAAO,CAAC,GAAI,OAAQ,CAAC,CAAC,EAAG,KAAM,CAAC,EAAG,MAAO,CAAC,GAAI,MAAO,CAAC,GAAI,GAAI,CAAC,GAAI,GAAI,CAAC,GAAI,MAAO,CAAC,EAAG,MAAO,CAAC,EAAG,KAAM,CAAC,EAAG,OAEnzB1/mC,GAAI,EAAGA,GAAI,GAAOP,OAAQO,KACjC,IAAK,IAAI8C,GAAI,EAAGA,GAAI,GAAO9C,IAAGP,OAAQqD,KACpC,GAAO9C,IAAG8C,IAAG,IAAM,KACnB,GAAO9C,IAAG8C,IAAG,KAAM,GACnB,GAAO9C,IAAG8C,IAAG,IAAM28mC,GAAS,GAC5B,GAAOz/mC,IAAG8C,IAAG,IAAM28mC,GAAS,GEZhC,IAAIE,GAAkB,CACpB,KAAQ,CAAC,GAAI,IAEb,GAAM,CAAC,GAAI,IACX,GAAM,CAAC,GAAI,GACX,GAAM,EAAE,GAAI,IAEZ,GAAM,CAAC,EAAG,ICHR,GAAS,CAAC,CAAC,CAAC,mBAAoB,mBAAoB,CAAC,mBAAoB,mBAAoB,CAAC,mBAAoB,oBAAqB,CAAC,mBAAoB,oBAAqB,CAAC,mBAAoB,qBCKtMC,GAEJ,WACE,SAASA,EAAgBnr1B,EAASor1B,EAAS9jE,GA2G7C,IAAoB90iC,EA1GhB7H,KAAKuM,KAAO,UACZvM,KAAK0gnC,WAAax1K,KAClBlr8B,KAAK8+mC,SAAWzp1B,EAChBr1R,KAAK2gnC,cAAgBhkE,EAErB38iC,KAAK4gnC,SAsGC5ljC,GADUnzD,EArGW44mC,GAsGuB,oBAATnmmC,MAAwBA,KAAKiS,MAAQjS,KAAKiS,MAAM1kB,GAAU,IAAI9E,SAAS,WAAa8E,EAAS,KAAnC,GAA1EA,CArG3B,CAmFA,OA5EA24mC,EAAgB9gnC,UAAUmlJ,KAAO,SAAU4xH,EAASiszB,GAClDA,EAAeA,GApBS,OAsBxB,IAAIpl0B,EAASt9P,KAAK0gnC,WAAWv9mC,IAAIu/jC,GAEjC,IAAKpl0B,EAAQ,CACX,IAAIuj3B,EAAa7gnC,KAAK8gnC,gBAAgBp+C,GAEtCpl0B,EAASt9P,KAAK0gnC,WAAWz0mC,IAAIy2jC,EAAc,CACzCp4D,QAASu2G,EACT9qF,aAAcgrF,GAAsBF,IAExC,CAEA,IAAIzB,EAAal0K,KACb81K,EAAe,GAWnB,OAVA,EAAK1j3B,EAAOgtwB,SAAS,SAAUvn0B,GAC7B,IAAIk+6B,EAAal+6B,EAAOr4L,KAEpB+rQ,GAAWvuQ,GAAOuuQ,EAASwq2B,KAC7Bl+6B,EAASA,EAAO8n1B,aAAao2F,EAAaxq2B,EAAQwq2B,KAGpDD,EAAan/mC,KAAKkhM,GAClBq86B,EAAWnzmC,IAAIg1mC,EAAYl+6B,EAC7B,IACO,CACLun0B,QAAS02G,EACTjrF,aAAcz4xB,EAAOy4xB,cAAgB,IAAI,GAAa,EAAG,EAAG,EAAG,GAC/DqpF,WAAYA,EAEhB,EAEAoB,EAAgB9gnC,UAAUohnC,gBAAkB,SAAUp+C,GACpD,IAEIm+C,EAFAxr1B,EAAUr1R,KAAK8+mC,SACf2B,EAAUzgnC,KAAK4gnC,SAGnB,IACEC,EAAaJ,EAAU,GAAaA,EAAS/9C,GAAgB,EAC/D,CAAE,MAAOvjkC,GACP,MAAM,IAAIqoB,MAAM,2BAA6BroB,EAAE4yB,QACjD,CAeA,OJnEW,SAAmBq5+B,EAASd,GACzC,GAAgB,UAAZc,EAAqB,CACvB,IAAK,IAAIxqgC,EAAI,EAAGA,EAAI0pgC,EAAQjqgC,OAAQO,IAElC,GAAI0pgC,EAAQ1pgC,GAAG8J,OAAS41mC,GACtB,OAIJh2G,EAAQzogC,KAAK,IAAI8/jC,GAAc2+C,GAAY,EAAW,IAAQ,SAAU9+C,GACtE,MAAO,CACLj1jC,KAAM,UACNi1jC,SAAUA,EAEd,IAAI6+C,IACN,CACF,CIsCIa,CAAU7r1B,EAASwr1B,GACnB,EAAKA,GAAY,SAAU996B,GACzB,IAAIk+6B,EAAal+6B,EAAOr4L,MF/Df,SAAuB0ggC,EAASro0B,GAC7C,GAAgB,UAAZqo0B,EAAqB,CACvB,IAAI+1G,EAAWZ,GAAgBx96B,EAAOr4L,MAEtC,GAAIy2mC,EAAU,CACZ,IAAI3r3B,EAAKzyD,EAAO3iK,YAChBo1N,EAAG,IAAM2r3B,EAAS,GAAK,KACvB3r3B,EAAG,KAAO2r3B,EAAS,GAAK,GACxBp+6B,EAAO/hK,UAAUw0N,EACnB,CACF,CACF,CEqDM,CAAa6/B,EAAStyF,GDpEb,SAAyBqo0B,EAASro0B,GAC/B,UAAZqo0B,GAAuC,OAAhBro0B,EAAOr4L,MAChCq4L,EAAOkxC,WAAWpyO,KAAK,CACrB0K,KAAM,UACNi1jC,SAAU,GAAO,IAGvB,CC8DM4/C,CAAgB/r1B,EAAStyF,GAGzB,IAAIs+6B,EAAcrhnC,KAAK2gnC,eAAiB3gnC,KAAK2gnC,cAAcM,GAEvDI,GACFt+6B,EAAOg/3B,YAAYs/C,EAAYxilC,KAAMwilC,EAAYvilC,IAAKuilC,EAAYtilC,MAAOsilC,EAAYrilC,OAEzF,GAAGh/B,MACI6gnC,CACT,EAOAL,EAAgB9gnC,UAAU4hnC,cAAgB,WACxC,MAAO,CAIL5kE,QAAS18iC,KAAK4gnC,SACdH,QAASzgnC,KAAK4gnC,SACdjkE,aAAc38iC,KAAK2gnC,cAEvB,EAEOH,CACT,CA5FA,GAgGA,SAASO,GAAsBz2G,GAG7B,IAFA,IAAI526B,EAEK9yF,EAAI,EAAGA,EAAI0pgC,EAAQjqgC,OAAQO,IAAK,CACvC,IAAI2gnC,EAAaj3G,EAAQ1pgC,GAAGujP,mBAC5BzwJ,EAAOA,GAAQ6thC,EAAWhxlC,SACrByyJ,MAAMu+7B,EACb,CAEA,OAAO7thC,CACT,CClHA,IAAIz/D,GAAUi36B,KACd,UA+BEuxG,YAAa,SAAUpnxB,EAASms1B,EAAQC,GACtC,GAAID,EAAO1jtB,IAAK,CACd,IAAI3mU,EAAW,IAAIwnhC,GAAetp1B,EAASms1B,EAAO1jtB,KAClD7pY,GAAQhoB,IAAIopR,EAASl+L,EACvB,KAAO,CAML,IAAIsphC,EAAUe,EAAO9kE,SAAW8kE,EAAOf,QAEnCA,IAAYe,EAAO91kC,SACrB+1kC,EAAkBD,EAAO7kE,aAEzB8jE,EAAUe,EAGRrqhC,EAAW,IAAIqphC,GAAgBnr1B,EAASor1B,EAASgB,GACrDxtlC,GAAQhoB,IAAIopR,EAASl+L,EACvB,CACF,EACAuqhC,eAAgB,SAAUrs1B,GACxB,OAAOphQ,GAAQ9wB,IAAIkyR,EACrB,EAMAis1B,cAAe,SAAUjs1B,GACvB,IAAIl+L,EAAWljE,GAAQ9wB,IAAIkyR,GAE3B,OAAOl+L,GAA8B,YAAlBA,EAAS5qF,MAAsB4qF,EAASmqhC,eAC7D,EACAz89B,KAAM,SAAUwwI,EAAS5e,EAASiszB,GAChC,IAAIvr+B,EAAWljE,GAAQ9wB,IAAIkyR,GAE3B,GAAKl+L,EAQL,OAAOA,EAAS0tD,KAAK4xH,EAASiszB,EAChC,GC/DF,IAAIi/C,GAA4B,CAAC,OAAQ,SAAU,OAAQ,UAAW,UAAW,WAAY,QACzFC,GAA+B,GAAqBD,IACpDE,GAAwB,GAAqBF,GAA0B3/mC,OAAO,CAAC,OAC/E8/mC,GAAiB,GAAqBH,GAA0B3/mC,OAAO,CAAC,OACxE+/mC,GAAc7+I,KAElB,SAAS8+I,GAAkBjt/B,GACzB,IAAIwv3B,EAAYxv3B,EAAMg33B,eAClBk2H,EAAYlt/B,EAAM5xH,IAAI,aAO1B,OAJiB,MAAb8+mC,IACF19H,EAAUnn3B,KAAO6k/B,GAGZ19H,CACT,CAKA,SAAS29H,GAAaC,GACpB,IAAI9tmC,EAAQ8tmC,EAAU9tmC,MAElBA,IACFA,EAAM+owB,OAAS/owB,EAAM+owB,QAAU/owB,EAAM+oH,KACrC/oH,EAAM+oH,KAAO,KAEjB,CAEA,IAAIgl/B,GAEJ,WACE,SAASA,EAAQnzkC,GACf,IAAImsR,EAAQ,IAAI,GAChBp7T,KAAKozV,IAAMo5pB,GAAO,eAClBxs/B,KAAKqinC,YAAc,IAAI,GAAepzkC,EAAIk9/B,SAC1CnsiC,KAAKsinC,gBAAkB,CACrBxymC,OAAQsrT,GAEVp7T,KAAKo7T,MAAQA,EACbA,EAAMj2S,IAAInlB,KAAKuinC,cAAgB,IAAI,IACnCnnzB,EAAMj2S,IAAInlB,KAAKwinC,UAAY,IAAI,GACjC,CAgcA,OA9bAJ,EAAQ1inC,UAAU61H,KAAO,SAAUkt/B,EAAen/I,EAASr07B,EAAKyzkC,EAAU5tlC,GACxE,IAAI6tlC,EAAmC,QAA3BF,EAAc3+I,SAGtBt09B,EAAOizmC,EAAcj++B,SAAWi++B,EAAcj++B,UAClDm++B,GAASr/I,EAAQwe,cAAc,CAC7Bhe,SAAU,SACViD,QAAS,QACR,SAAU67I,GACNpzmC,GAAQozmC,EAAUC,oBAAsBJ,IAC3CjzmC,EAAOozmC,EAAUp++B,UAErB,IACA,IAAI4l4B,EAAMq4G,EAAc1w/B,iBACpB+w/B,EAAe9inC,KAAKuinC,cACpBnnzB,EAAQp7T,KAAKo7T,MACb2nzB,EAAgB34G,EAAI44G,mBACpBC,EAAmBF,EAAc9x8B,IACjCiy8B,EAAoBH,EAAcI,MAEnBL,EAAajoJ,QAAQ,IAAM/l8B,GAG5CsmS,EAAMn3T,EAAIi/mC,EAAkBj/mC,EAC5Bm3T,EAAMp4T,EAAIkgnC,EAAkBlgnC,EAC5Bo4T,EAAMxiM,OAASsq/B,EAAkBtq/B,OACjCwiM,EAAMviM,OAASqq/B,EAAkBrq/B,OACjCuiM,EAAM0qc,SAEN,GAAoB1qc,EAAO8nzB,EAAmBT,GAGhD,IAAIW,EAA6B5zmC,GAAQA,EAAKsshC,UAAU,eAAiBtshC,EAAKsshC,UAAU,cAAcz7hC,OAAS,EAC3GgjnC,EAAe,CACjBp0kC,IAAKA,EACLm79B,IAAKA,EACLq4G,cAAeA,EACfjzmC,KAAMA,EACN4zmC,2BAA4BA,EAC5BT,MAAOA,EACPM,iBAAkBA,GAGK,YAArB74G,EAAIk5G,aACNtjnC,KAAKujnC,cAAcF,GACW,WAArBj5G,EAAIk5G,cACbtjnC,KAAKwjnC,UAAUH,GAGjBrjnC,KAAK6xI,kBAAkB4w+B,EAAen/I,EAASr07B,GAE/CjvC,KAAKyjnC,wBAAwBhB,EAAeK,EAAc7zkC,EAAKyzkC,EACjE,EAEAN,EAAQ1inC,UAAU6jnC,cAAgB,SAAUF,GAC1C,IAAIK,EAAqB1jnC,KAAK2jnC,oBAAsB,KAChDC,EAAoB,KACpBd,EAAe9inC,KAAKuinC,cACpBU,EAAmBI,EAAaJ,iBAChCR,EAAgBY,EAAaZ,cAC7BjzmC,EAAO6zmC,EAAa7zmC,KACpBg1L,EAAa6+6B,EAAaj5G,IAAI5l0B,WAC9BgovB,EAAmBhovB,GAAcA,EAAW18K,OAEhD,SAASu1U,EAAeloN,EAAO7d,GAM7B,OALIA,IAEF6d,EAAQ7d,EAAQ6d,IAGXA,GAAS,CAACA,EAAM,GAAK8t+B,EAAiBrq/B,OAASqq/B,EAAiBh/mC,EAAGkxI,EAAM,GAAK8t+B,EAAiBpq/B,OAASoq/B,EAAiBjgnC,EAClI,CAIA,SAAS6gnC,EAAuBC,GAK9B,IAJA,IAAIC,EAAY,GAEZzs/B,GAAWk1zB,GAAoBhovB,GAAcA,EAAWltE,QAEnD12H,EAAI,EAAGA,EAAIkjnC,EAASzjnC,SAAUO,EAAG,CACxC,IAAIojnC,EAAQ3mxB,EAAeymxB,EAASljnC,GAAI02H,GACxC0s/B,GAASD,EAAUlinC,KAAKminC,EAC1B,CAEA,OAAOD,CACT,CAEA,SAASE,EAAa34kC,GACpB,MAAO,CACLg3L,MAAO,CACLh3L,OAAQu4kC,EAAuBv4kC,IAGrC,CAEAw3kC,EAAaj13B,YAEb,EAAYw13B,EAAaj5G,IAAIE,SAAS,SAAUvn0B,GAC9C,IAAIk+6B,EAAal+6B,EAAOr4L,KAMpBw5mC,EAAcR,EAAmBvgnC,IAAI89mC,GAErCtqlC,EAAKitlC,EAAkBzgnC,IAAI89mC,IAAe,CAAC,EAC3CxxV,EAAU94vB,EAAG84vB,QACb00V,EAAcxtlC,EAAGwtlC,YAEhBD,IACHA,EAAcR,EAAmBz3mC,IAAIg1mC,EAAY,IAAI,IACrD6B,EAAa39lC,IAAI++lC,GACjBz0V,EAAUjgxB,EAAOA,EAAKyz9B,YAAYg+I,GAAc,KAChDkD,EAAcd,EAAaV,MAAQF,EAAc2B,eAAenD,GAAczxmC,EAAOA,EAAKqhgC,aAAaphP,GAAW,KAClHm0V,EAAkB33mC,IAAIg1mC,EAAY,CAChCxxV,QAASA,EACT00V,YAAaA,KAIjB,IAAIE,EAAkB,GAClBC,EAAmB,GACvB,EAAYvh7B,EAAOkxC,YAAY,SAAUlvM,GAEvC,GAAsB,YAAlBA,EAASx4B,KAAoB,CAC/B,IAAIsnd,EAAQ,CAAC9ub,EAASy8hC,UAAUx/jC,OAAO+iC,EAAS08hC,WAAa,IAEzDj1I,IACF34d,EAAQ0wpB,GAAa1wpB,EAAO24d,IAG9B,EAAY34d,GAAO,SAAU9C,GAC3BszpB,EAAgBxinC,KAAK,IAAI,GAAgBoinC,EAAalzpB,IACxD,GACF,KACK,CACD,IAAIzlb,EAASvG,EAASuG,OAElBkh5B,IACFlh5B,EAASi5kC,GAAaj5kC,EAAQkh5B,GAAkB,IAGlD,EAAYlh5B,GAAQ,SAAUA,GAC5Bg5kC,EAAiBzinC,KAAK,IAAI,GAAiBoinC,EAAa34kC,IAC1D,GACF,CACJ,IACA,IAAIk5kC,EAAWnnxB,EAAet6J,EAAO3iK,YAAaokK,GAAcA,EAAWltE,SAE3E,SAASmt/B,EAAmBC,EAAUC,GACpC,GAAKD,EAASrknC,OAAd,CAIA,IAAIuknC,EAAe,IAAI,GAAqB,CAC1C54I,SAAS,EACTgE,uBAAwB,EACxB1twB,MAAO,CACLic,MAAOmm4B,KAGXR,EAAY/+lC,IAAIy/lC,GAChBC,GAA0BxB,EAAcuB,EAAcn1V,EAAS00V,GAC/DW,GAAoBzB,EAAcuB,EAAc3D,EAAYkD,EAAa1B,EAAehzV,EAAS+0V,GAE7FG,IACFzC,GAAa0C,GACb,EAAYA,EAAav1mB,OAAQ6ymB,IAfnC,CAiBF,CAEAuC,EAAmBJ,GACnBI,EAAmBH,GAAkB,EACvC,IAEAZ,EAAmB1hW,MAAK,SAAUkiW,EAAajD,GAC7C,IAAItqlC,EAAKitlC,EAAkBzgnC,IAAI89mC,GAC3BxxV,EAAU94vB,EAAG84vB,QACb00V,EAAcxtlC,EAAGwtlC,YAErBY,GAA2B1B,EAAca,EAAajD,EAAYkD,EAAa1B,EAAehzV,GAC9Fu1V,GAAsB3B,EAAca,EAAajD,EAAYkD,EAAa1B,GAC1EwC,GAA2B5B,EAAca,EAAajD,EAAYkD,EAAa1B,EACjF,GAAGzinC,KACL,EAEAoinC,EAAQ1inC,UAAU8jnC,UAAY,SAAUH,GACtC,IAAIhu1B,EAAUgu1B,EAAaj5G,IAAI/6+B,IAC3B4zlC,EAAmBI,EAAaJ,iBACpCjjnC,KAAKwinC,UAAUv+mC,EAAIg/mC,EAAiBh/mC,EACpCjE,KAAKwinC,UAAUx/mC,EAAIignC,EAAiBjgnC,EACpChD,KAAKwinC,UAAU5p/B,OAASqq/B,EAAiBrq/B,OACzC54H,KAAKwinC,UAAU3p/B,OAASoq/B,EAAiBpq/B,OAErC74H,KAAKklnC,oBAAoB7v1B,KAC3Br1R,KAAKmlnC,WAELnlnC,KAAKolnC,QAAQ/v1B,IAGf,IAAIgw1B,EAAmBrlnC,KAAKslnC,kBAAoB,KAC5C9hI,GAAY,EAChB,EAAYxj/B,KAAKulnC,kBAAkB/K,OAAO,SAAU6E,GAKlD,IAAI4B,EAAa5B,EAAU30mC,KACvB+3mC,EAAgBY,EAAaZ,cAC7BjzmC,EAAO6zmC,EAAa7zmC,KACpBqsmC,EAAkBwD,EAAUxD,gBAC5Bhi+B,EAAKwl+B,EAAUxl+B,GACf41oB,EAAUjgxB,EAAOA,EAAKyz9B,YAAYg+I,GAAc,KAChDkD,EAAc1B,EAAc2B,eAAenD,GAEU,MAArDW,GAA6Bz+mC,IAAI04mC,IAA4Bhi+B,aAAc,IAC7Egr+B,GAA0BxB,EAAcxp+B,EAAI41oB,EAAS00V,GAGnDtq+B,aAAc,KAChBA,EAAGmy1B,SAAU,GAMfny1B,EAAGsm2B,eAAiB,EAEfk/H,EAAU9D,YAG8B,MAAvCuG,GAAe3+mC,IAAI04mC,IACrBiJ,GAAoBzB,EAAcxp+B,EAAIon+B,EAAYkD,EAAa1B,EAAehzV,EAAS,MAGzFs1V,GAA2B1B,EAAcxp+B,EAAIon+B,EAAYkD,EAAa1B,EAAehzV,GACrFu1V,GAAsB3B,EAAcxp+B,EAAIon+B,EAAYkD,EAAa1B,GAEf,MAA9CZ,GAAsB1+mC,IAAI04mC,KAGZ,SAFFoJ,GAA2B5B,EAAcxp+B,EAAIon+B,EAAYkD,EAAa1B,KAGlFj/H,GAAY,IAGJ6hI,EAAiBlinC,IAAI89mC,IAAeoE,EAAiBp5mC,IAAIg1mC,EAAY,KAC3Ep/mC,KAAKg4I,IAGf,GAAG75I,MAEHA,KAAKwlnC,qBAAqBhiI,EAAW6/H,EACvC,EAEAjB,EAAQ1inC,UAAU8lnC,qBAAuB,SAAUhiI,EAAW6/H,GAI5D,GAAI7/H,GAAa6/H,EAAaV,MAAO,CACnC,IAGI8C,EAHYpC,EAAaZ,cAAc7q7B,SAAS,CAAC,OAAQ,cAAcm0zB,eAGjDng3B,QAE1B5rI,KAAKulnC,kBAAkBp19B,KAAK01C,UAAS,SAAUhsD,GAC7C,IAAKA,EAAGkpkB,QAAS,CAGf+9R,GAAqBjn2B,GACrB,IAAIxlI,EAAQwlI,EAAG270B,YAAY,QAAQnh9B,OAAS,CAAC,EAExB,MAAjBA,EAAMu3H,SAAgC,MAAb65+B,IAC3BpxmC,EAAMu3H,QAAU65+B,GAKlB5r+B,EAAG270B,YAAY,WACjB,CACF,GACF,CACF,EAEA4sJ,EAAQ1inC,UAAUmzB,OAAS,WACzB7yB,KAAKuinC,cAAc103B,YAEnB7tP,KAAK2jnC,oBAAsB,KAE3B3jnC,KAAKwinC,UAAU303B,YAEf7tP,KAAKmlnC,WAELnlnC,KAAKqinC,YAAYh9K,UAEjBrl8B,KAAKsinC,gBAAkB,IACzB,EAEAF,EAAQ1inC,UAAUgk/B,wBAA0B,SAAUh5+B,EAAMg7mC,GAC1D,GAAY,MAARh7mC,EACF,MAAO,GAGT,IAAI0//B,EAAMs7G,EAAS3z/B,iBAEnB,GAAyB,YAArBq44B,EAAIk5G,aAA4B,CAClC,IAAII,EAAqB1jnC,KAAK2jnC,oBAE9B,GAAID,EAAoB,CACtB,IAAIQ,EAAcR,EAAmBvgnC,IAAIuH,GACzC,OAAOw5mC,EAAc,CAACA,GAAe,EACvC,CACF,MAAO,GAAyB,WAArB95G,EAAIk5G,aACb,OAAOtjnC,KAAKslnC,mBAAqBtlnC,KAAKslnC,kBAAkBninC,IAAIuH,IAAS,EAEzE,EAEA03mC,EAAQ1inC,UAAUwlnC,oBAAsB,SAAU7v1B,GAChD,OAAOr1R,KAAK2lnC,cAAgBtw1B,CAC9B,EAEA+s1B,EAAQ1inC,UAAU0lnC,QAAU,SAAU/v1B,GACpC,IAAIl+L,EAAWyuhC,GAAiBlE,eAAers1B,GAE/C,GAAIl+L,GAA8B,WAAlBA,EAAS5qF,KAAmB,CAC1C,IAAI4zmC,EAAahphC,EAAS6ohC,WAAWhgnC,KAAKozV,KAE1CpzV,KAAKwinC,UAAUr9lC,IAAIg7lC,EAAWhw9B,MAE9BnwJ,KAAKulnC,kBAAoBpF,EACzBngnC,KAAK2lnC,YAActw1B,CACrB,CACF,EAEA+s1B,EAAQ1inC,UAAUylnC,SAAW,WAC3B,IAAI9v1B,EAAUr1R,KAAK2lnC,YAEnB,GAAe,MAAXtw1B,EAAJ,CAIA,IAAIl+L,EAAWyuhC,GAAiBlE,eAAers1B,GAE3Cl+L,GAA8B,WAAlBA,EAAS5qF,MACvB4qF,EAASiphC,YAAYpgnC,KAAKozV,KAG5BpzV,KAAKulnC,kBAAoB,KACzBvlnC,KAAKslnC,kBAAoB,KAEzBtlnC,KAAKwinC,UAAU303B,YAEf7tP,KAAK2lnC,YAAc,IAbnB,CAcF,EAEAvD,EAAQ1inC,UAAUmyI,kBAAoB,SAAU4w+B,EAAen/I,EAASr07B,GACtE,IAAIm79B,EAAMq4G,EAAc1w/B,iBACpBwe,EAAavwI,KAAKqinC,YAClBjJ,EAAiBp5mC,KAAKsinC,gBAE1BlJ,EAAeG,UAAYkJ,EAAct/mC,IAAI,cAC7Ci2mC,EAAez5kC,KAAOyq+B,EAAI/p+B,UAG1BkwG,EAAWvtH,OAAOy/lC,EAAct/mC,IAAI,UAAW,GAC/C,IAAI2g+B,EAAW2+I,EAAc3+I,SAE7B,SAAS+hJ,IACP,IAAIv6iC,EAAS,CACX/+D,KAAM,UACN2vM,cAAe4nxB,GAGjB,OADAx45B,EAAOw45B,EAAW,MAAQ2+I,EAAcl3lC,GACjC+/C,CACT,CAEAilE,EAAWviG,IAAI,OAAOp9B,GAAG,OAAO,SAAUzR,GACxCa,KAAK8lnC,gBAAiB,EACtB,GAA2B1M,EAAgBj6mC,EAAEq1I,GAAIr1I,EAAEk1I,IACnDplG,EAAIu1/B,eAAe,EAAcqhF,IAAkB,CACjDrx+B,GAAIr1I,EAAEq1I,GACNH,GAAIl1I,EAAEk1I,GACN07G,UAAW,CACT1qM,SAAU,KAGhB,GAAGrlD,MACHuwI,EAAWviG,IAAI,QAAQp9B,GAAG,QAAQ,SAAUzR,GAC1Ca,KAAK8lnC,gBAAiB,EACtB,GAA4B1M,EAAgBj6mC,EAAE2iG,MAAO3iG,EAAEwtL,QAASxtL,EAAEytL,SAClE39I,EAAIu1/B,eAAe,EAAcqhF,IAAkB,CACjDlmlC,KAAMxgC,EAAE2iG,MACR6qF,QAASxtL,EAAEwtL,QACXC,QAASztL,EAAEytL,QACXmjE,UAAW,CACT1qM,SAAU,KAGhB,GAAGrlD,MACHuwI,EAAWgo+B,mBAAkB,SAAUp5mC,EAAG8E,EAAGjB,GAC3C,OAAOongC,EAAIyqC,aAAa,CAAC5wiC,EAAGjB,MAAQ62mC,GAAoB16mC,EAAG8vC,EAAKwzkC,EAClE,GACF,EAcAL,EAAQ1inC,UAAUqmnC,oBAAsB,WACtC/lnC,KAAKo7T,MAAMv1H,UAAS,SAAUhsD,GAC5B,IAAIx4I,EAAQw4I,EAAGltD,iBAEXtrF,IACFA,EAAM8mC,OAAS45kC,GAAY1gnC,GAAO8mC,OAEtC,GACF,EAEAi6kC,EAAQ1inC,UAAU+jnC,wBAA0B,SAAUhB,EAAeK,EAAc7zkC,EAAKyzkC,GACtF,IAAIsD,EAAUhmnC,KACd8inC,EAAa90kC,IAAI,aACjB80kC,EAAa90kC,IAAI,SAEby0kC,EAAct/mC,IAAI,kBACpB2/mC,EAAalymC,GAAG,aAAa,WAC3Bo1mC,EAAQF,gBAAiB,CAC3B,IACAhD,EAAalymC,GAAG,SAAS,SAAUzR,GAC5B6mnC,EAAQF,iBAIbE,EAAQF,gBAAiB,EAC3B,IAEJ,EAEO1D,CACT,CA5cA,GAgdA,SAASyC,GAA0BxB,EAAcxp+B,EAAIwrB,EAAW8+8B,GAQ9D,IAAI8B,EAAmB9B,EAAYvs7B,SAAS,aACxCsu7B,EAAqB/B,EAAYvs7B,SAAS,CAAC,WAAY,cACvDuu7B,EAAiBhC,EAAYvs7B,SAAS,CAAC,OAAQ,cAC/Cwu7B,EAAmBjC,EAAYvs7B,SAAS,CAAC,SAAU,cAGnDwwzB,EAAc45H,GAAkBiE,GAChC/lI,EAAgB8hI,GAAkBkE,GAClCG,EAAcrE,GAAkBoE,GAChC1lI,EAAYshI,GAAkBmE,GAE9B32mC,EAAO6zmC,EAAa7zmC,KAExB,GAAIA,EAAM,CAIR,IAAI6E,EAAQ7E,EAAK+ggC,cAAclr2B,EAAW,SACtCmu0B,EAAQhk+B,EAAK+ggC,cAAclr2B,EAAW,SAEtCg+8B,EAAaD,4BAA8B/umC,EAAM+oH,OACnDgr3B,EAAYhr3B,KAAO/oH,EAAM+oH,MAGvBo22B,IACF4U,EAAY5U,MAAQy4D,GAA+Bz4D,EAAO6vI,EAAap0kC,KAE3E,CAIA4qG,EAAGyqR,SAAS8jlB,GACZvu2B,EAAGxlI,MAAM8+9B,eAAgB,EACzBt51B,EAAG270B,YAAY,YAAYnh9B,MAAQ6r+B,EACnCrm2B,EAAG270B,YAAY,UAAUnh9B,MAAQgymC,EACjCxs+B,EAAG270B,YAAY,QAAQnh9B,MAAQqs+B,EAE/BI,GAAqBjn2B,EACvB,CAEA,SAASir+B,GAAoBzB,EAAcxp+B,EAAIon+B,EAAYkD,EAAa1B,EACxEhzV,EACA62V,GACE,IAAI92mC,EAAO6zmC,EAAa7zmC,KACpBmzmC,EAAQU,EAAaV,MACrB4D,EAAY/2mC,GAAQ88B,MAAM98B,EAAKrM,IAAIqM,EAAK42iC,aAAa,SAAU32R,IAC/DyxU,EAAa1xlC,GAAQA,EAAKo5iC,cAAcn5R,GAK5C,GAAIkzV,GAAS4D,GAAarlB,GAAcA,EAAWslB,UAAW,CAC5D,IAAIv3hC,EAAS0zhC,EAAkB1B,EAAVxxV,EACjB63N,OAAe,IAEd93+B,GAAQigxB,GAAW,KACtB63N,EAAem7H,GAGjB,IAAIgE,EAAmBH,EAAU,CAC/Bjj9B,OAAQ,CACNkhnB,MAAO,SACPpxC,cAAe,WAEf,KAGJ00Q,GAAchu2B,EAAI6u2B,GAAqBy7H,GAAc,CACnD78H,aAAcA,EACdC,eAAgBt45B,EAChB8ywB,YAAak/Q,GACZwF,GACH,IAAIvrK,EAASrh0B,EAAGltD,iBAEhB,GAAIuu3B,IACF6mK,GAAY7mK,GAAQ/y6B,OAAS+y6B,EAAO/y6B,OAEhC0xG,EAAGg50B,YAAcyzJ,GAAS,CAE5B,IAAI5yhC,EAAOmmD,EAAGsqG,kBAAkB5zN,QAKhCspH,EAAGg50B,WAAWK,WAAax/3B,EAC3BmmD,EAAGg50B,WAAWl07B,SAAW,EAAE2nlC,EAAQ,GAAK5yhC,EAAKzvF,GAAKyvF,EAAK30D,MAAQ,IAAM,KAAMunlC,EAAQ,GAAK5yhC,EAAK1wF,GAAK0wF,EAAK10D,OAAS,IAAM,IACxH,CASF66G,EAAGu17B,uBAAwB,CAC7B,MACEv17B,EAAGo+0B,oBACHp+0B,EAAGs+0B,mBACHt+0B,EAAGu17B,sBAAwB,IAE/B,CAEA,SAAS21C,GAA2B1B,EAAcqD,EAAczF,EAAYkD,EAAa1B,EACzFhzV,GAGM4zV,EAAa7zmC,KAQf6zmC,EAAa7zmC,KAAKu5iC,iBAAiBt5R,EAASi3V,GAQ1C1pI,GAAU0pI,GAAc3lrB,UAAY,CAClC7kP,cAAe,MACfivE,eAAgBs31B,EAAct31B,eAC9Bw71B,SAAUlE,EAAct31B,eACxBzgR,KAAMu2mC,EACNl+6B,OAAQoh7B,GAAeA,EAAYtmjC,QAAU,CAAC,EAGtD,CAEA,SAASmnjC,GAAsB3B,EAAcxp+B,EAAIon+B,EAAYkD,EAAa1B,GACnEY,EAAa7zmC,MAChB,GAAyB,CACvBqqI,GAAIA,EACJgp1B,eAAgB4/I,EAChBpnH,SAAU4lH,EAEV3oF,kBAAmB6rF,EAAYhhnC,IAAI,YAGzC,CAEA,SAAS8hnC,GAA2B5B,EAAcxp+B,EAAIon+B,EAAYkD,EAAa1B,GAE7E5o+B,EAAGir2B,wBAA0B29H,EAAct/mC,IAAI,gBAE/C,IAAImjlC,EAAgB69B,EAAYvs7B,SAAS,YACrCk5K,EAAQw1uB,EAAcnjlC,IAAI,SAO9B,OANAgh/B,GAAoBtq2B,EAAIi3N,EAAOw1uB,EAAcnjlC,IAAI,aAAcmjlC,EAAcnjlC,IAAI,aAE7EkgnC,EAAaV,OnMmEZ,SAAyC9o+B,EAAIgp1B,EAAgBk2E,GAClE,IAAI57D,EAASH,GAAUnj2B,GACvBsj2B,EAAOkG,kBAAoBxgB,EAAeiB,SAC1CqZ,EAAOhytB,eAAiB03sB,EAAe13sB,eACvCgytB,EAAO47D,sBAAwBA,CACjC,CmMvEI6tE,CAAgC/s+B,EAAI4o+B,EAAexB,GAG9CnwwB,CACT,CAEA,SAASyzwB,GAAa/zpB,EACtBq2pB,EAAclC,GACZ,IACImC,EADAt7kC,EAAW,GAGf,SAASu7kC,IACPD,EAAU,EACZ,CAEA,SAASE,IACHF,EAAQzmnC,SACVmrC,EAAS3pC,KAAKilnC,GACdA,EAAU,GAEd,CAEA,IAAIh/lC,EAAS++lC,EAAa,CACxB7jM,aAAc+jM,EACd9jM,WAAY+jM,EACZlkM,UAAWikM,EACXhkM,QAASikM,EACT7x+B,MAAO,SAAUlxI,EAAGjB,GAEd0kC,SAASzjC,IAAMyjC,SAAS1kC,IAC1B8jnC,EAAQjlnC,KAAK,CAACoC,EAAGjB,GAErB,EACAugM,OAAQ,WAAa,IAavB,OAXCoh7B,GAAU78lC,EAAOk75B,eAClB,EAAYxyd,GAAO,SAAUx5H,GAC3BlvU,EAAOg75B,YAEP,IAAK,IAAIli7B,EAAI,EAAGA,EAAIo2V,EAAK32V,OAAQO,IAC/BknB,EAAOqtH,MAAM6hN,EAAKp2V,GAAG,GAAIo2V,EAAKp2V,GAAG,IAGnCknB,EAAOi75B,SACT,KACC4hM,GAAU78lC,EAAOm75B,aACXz34B,CACT,CAEA,YC/sBA,IAAI0+H,GAEJ,SAAUw+M,GAGR,SAASx+M,IACP,IAAIx9G,EAAmB,OAAXg8T,GAAmBA,EAAOnoX,MAAMP,KAAMI,YAAcJ,KAGhE,OADA0sD,EAAMngD,KAAO29J,EAAQ39J,KACdmgD,CACT,CAuIA,OA9IAkgX,EAAU1iQ,EAASw+M,GASnBx+M,EAAQxqK,UAAU4uH,OAAS,SAAU24/B,EAAU3jJ,EAASr07B,EAAKna,GAE3D,IAAIA,GAA4B,oBAAjBA,EAAQvoB,MAA8BuoB,EAAQ/W,OAAS/d,KAAKozV,IAA3E,CAIA,IAAIh4B,EAAQp7T,KAAKo7T,MAGjB,GAFAA,EAAMvtE,aAEFo53B,EAASpE,kBAAb,CASA,GALI7inC,KAAKknnC,UAAYpylC,GAA4B,YAAjBA,EAAQvoB,MACtCvM,KAAKknnC,SAASnB,sBAIVjxlC,GAA4B,YAAjBA,EAAQvoB,MAAgD,WAA1BuoB,EAAQonL,eAA8BpnL,EAAQiovB,WAAakqW,EAAS17lC,IAY7Gy6lC,EAAUhmnC,KAAKknnC,WACR9rzB,EAAMj2S,IAAI6gmC,EAAQ5qzB,YAZ7B,GAAI6rzB,EAASE,aAAc,CACzB,IAAInB,EAAUhmnC,KAAKknnC,UAAY,IAAI,GAAQj4kC,GAC3CmsR,EAAMj2S,IAAI6gmC,EAAQ5qzB,OAClB4qzB,EAAQzw/B,KAAK0x/B,EAAU3jJ,EAASr07B,EAAKjvC,KAAM80B,GAC3C90B,KAAKknnC,SAAWlB,CAClB,MAEEhmnC,KAAKknnC,UAAYlnnC,KAAKknnC,SAASr0lC,SAC/B7yB,KAAKknnC,SAAW,KAOpBD,EAAS9jnC,IAAI,qBAAuBmg+B,EAAQnpoB,aAAa,WAAan6V,KAAKonnC,eAAeH,EAAU3jJ,EAASr07B,EAvB7G,CAPA,CA+BF,EAEAi7H,EAAQxqK,UAAUmzB,OAAS,WACzB7yB,KAAKknnC,UAAYlnnC,KAAKknnC,SAASr0lC,SAC/B7yB,KAAKknnC,SAAW,KAChBlnnC,KAAKo7T,MAAMvtE,WACb,EAEA3jF,EAAQxqK,UAAU2l8B,QAAU,WAC1Brl8B,KAAKknnC,UAAYlnnC,KAAKknnC,SAASr0lC,SAC/B7yB,KAAKknnC,SAAW,IAClB,EAEAh98B,EAAQxqK,UAAU0nnC,eAAiB,SAAUH,EAAU3jJ,EAASr07B,GAC9D,IAAIo4kC,EAAeJ,EAASI,aACxBjszB,EAAQp7T,KAAKo7T,MACjBiszB,EAAarlW,KAAKqlW,EAAajhE,aAAa,UAAU,SAAUjljC,EAAOmmnC,GACrE,IAAIh7kC,MAAMnrC,GAAV,CAIA,IAAI+/H,EAASmm/B,EAAaz+D,cAAc0+D,GAExC,GAAKpm/B,GAAWA,EAAOiU,MAAvB,CAKA,IAAIA,EAAQjU,EAAOiU,MACfhzF,EAAS++E,EAAO/+E,OAChB8tL,EAAS,IAAI,GAAe,CAC9B57N,MAAO,CAOL+oH,KAAM6p/B,EAASzi/B,UAAUs35B,UAAU,SAAS1+5B,MAE9CklG,MAAO,CACLo+B,GAAIvrH,EAAM,GAAc,EAAThzF,EACf8kT,GAAI9xN,EAAM,GACVp1I,EAAG,GAELq0e,QAAQ,EAERr3S,GAAI,GAAM56I,EAAgC,EAAvB277B,GAAmB,KAWxC,IAAK377B,EAAQ,CACX,IAAImyxB,EAAW2yS,EAASM,WAAW/i/B,UAC/B84nB,EAAS+pX,EAAar/xB,QAAQs/xB,GAC9BE,EAAclzS,EAAS2uJ,YAAY3lO,GACnConP,EAAY2iI,EAAax2G,aAAay2G,GACtCtkD,EAAat+E,EAAU9szB,SAAS,SAChCss7B,EAAc5vS,EAASouK,iBAAiB8kI,GAQ5C3/H,GAAc53wB,EAAQy4wB,GAAqBhE,GAAY,CACrD4C,aAAc,CACZI,kBAAmB,SAAU5soB,EAAKnvW,GAChC,OAAOs7mC,EAASv/H,kBAAkB8/H,EAAa77mC,EACjD,GAEFo21B,YAAazkG,IAEfrthB,EAAOm/1B,uBAAwB,EAE1BpM,EAAW7/jC,IAAI,aAClB8sO,EAAOykvB,cAAc,CACnB/17B,SAAU,WAIdullC,EAAYtlI,mBAAqB,SAAU7pB,GACzCyqB,GAAcvvwB,EAAQ8kvB,EACxB,CACF,CAEA35pB,EAAMj2S,IAAI8qN,EAnEV,CAPA,CA2EF,GACF,EAEA/lE,EAAQ39J,KAAO,MACR29J,CACT,CAhJA,CAgJE84oB,IAEF,YClJA,IAAIykU,GAEJ,SAAU/+vB,GAGR,SAAS++vB,IACP,IAAI/6jC,EAAmB,OAAXg8T,GAAmBA,EAAOnoX,MAAMP,KAAMI,YAAcJ,KAiBhE,OAfA0sD,EAAMngD,KAAOk7mC,EAAUl7mC,KAEvBmgD,EAAMy6jC,cAAe,EAErBz6jC,EAAMwhzB,YAAc,GAEpBxhzB,EAAMynjC,mBAAqB,SAAU9u8B,GACnC,GAAiB,MAAbA,EAAmB,CACrB,IAAIi4lB,EAASt9vB,KAAKwkI,UAAUwjN,QAAQ3iL,GAChC+k2B,EAAMpqgC,KAAK+xH,iBACXgxE,EAASqn0B,EAAIs9G,UAAUpqX,GAC3B,OAAOv6jB,GAAUqn0B,EAAIutD,YAAY503B,EAAO3iK,YAC1C,CACF,EAEOssB,CACT,CAmMA,OAxNAkgX,EAAU66sB,EAAW/+vB,GAuBrB++vB,EAAU/nnC,UAAUyohC,eAAiB,SAAUtq9B,GAQ7C,IAPA,IAAIruD,EAAO2xlC,GAAuBnhmC,KAAM,CACtC+5/B,gBAAiB,CAAC,SAClBswD,gBAAiB,GAAa9uD,GAA8Bv7/B,QAE1D2nnC,EAAc,KACdC,EAAgB,GAEXhnnC,EAAI,EAAGi+H,EAAMrvH,EAAK+5C,QAAS3oD,EAAIi+H,EAAKj+H,IAAK,CAChD,IAAIinnC,EAASr4mC,EAAKw4U,QAAQpnV,GAC1B+mnC,EAAY17mC,IAAI47mC,GAAQ,EAC1B,CAcA,OAXA,EADgBjC,GAAiB/g+B,KAAK7kJ,KAAK8nnC,aAAc9nnC,KAAK69D,OAAO44M,QAASz2Q,KAAK69D,OAAO6kgC,cACpEp4D,SAAS,SAAUvn0B,GACvC,IAAIr4L,EAAOq4L,EAAOr4L,KAEbi9mC,EAAYxknC,IAAIuH,IACnBk9mC,EAAc/lnC,KAAK6I,EAEvB,IAIA8E,EAAKorgC,aAAa,GAAIgtG,GACfp4mC,CACT,EAOAi4mC,EAAU/nnC,UAAUmjnC,gBAAkB,WACpC,IAAI8D,EAAW3mnC,KAAK69D,OAAO8ojC,SAC3B,OAAmB,MAAZA,EAAmB3mnC,KAAKsj+B,QAAQnpoB,aAAa,MAAOwsxB,GAAY,IACzE,EAEAc,EAAU/nnC,UAAUoonC,WAAa,WAC/B,OAAQ9nnC,KAAK6inC,mBAAqB7inC,MAAM69D,OAAOxuC,GACjD,EAQAo4lC,EAAU/nnC,UAAU0wgC,YAAc,SAAU/q2B,GAG1C,IAAI71J,EAAOxP,KAAKwkI,UAChB,OAAOh1H,EAAKrM,IAAIqM,EAAK42iC,aAAa,SAAU/g5B,EAC9C,EAMAoi9B,EAAU/nnC,UAAU0knC,eAAiB,SAAUnD,GAC7C,IAAIzxmC,EAAOxP,KAAKwkI,UAChB,OAAOh1H,EAAKqhgC,aAAarhgC,EAAKyz9B,YAAYg+I,GAC5C,EAMAwG,EAAU/nnC,UAAUu3X,cAAgB,SAAU5xN,EAAW4r2B,EAAgBjiwB,GAQvE,IANA,IAAIx/P,EAAOxP,KAAKwkI,UACZrjI,EAAQnB,KAAKowgC,YAAY/q2B,GACzB36J,EAAO8E,EAAKw4U,QAAQ3iL,GACpB6osB,EAAclu2B,KAAKku2B,YACnB65Q,EAAc,GAETnnnC,EAAI,EAAGA,EAAIst2B,EAAY7t2B,OAAQO,IAAK,CAC3C,IAAIonnC,EAAa95Q,EAAYtt2B,GAAGymnC,aAAapkJ,YAAYv49B,GACrD8rjC,EAAWhnjC,EAAK42iC,aAAa,SAE5B95gC,MAAM4h0B,EAAYtt2B,GAAGymnC,aAAalknC,IAAIqzjC,EAAUwxD,KACnDD,EAAYlmnC,KAAKqs2B,EAAYtt2B,GAAG8J,KAEpC,CAEA,OAAOq4gC,GAAoB,UAAW,CACpClu/B,OAAQkzlC,EAAYl7mC,KAAK,MACzB22gC,UAAWukG,EAAY1nnC,OACvBqzpB,OAAQ,CAACqvX,GAAoB,YAAa,CACxCr4gC,KAAMA,EACNvJ,MAAOA,MAGb,EAEAsmnC,EAAU/nnC,UAAUyhC,QAAU,SAAUxB,GACtC3/B,KAAK69D,OAAOl+B,KAAOA,CACrB,EAEA8nlC,EAAU/nnC,UAAUshC,UAAY,SAAU/B,GACxCj/B,KAAK69D,OAAO5+B,OAASA,CACvB,EAEAwolC,EAAU/nnC,UAAUuklC,cAAgB,SAAU7jjB,GAC5C,IAAI6nlB,EAAW7nlB,EAAI3vT,MAAQ,YACvBA,EAAO,GAAaw34B,EAAU,EAAG,EAAG7nlB,EAAI8jjB,UAAW9jjB,EAAI41P,WAAY51P,EAAImkd,UAAUnn3B,MAWrF,OAVAqzG,EAAK6zL,SAAS87H,EAAImkd,WAElB9zwB,EAAKp8N,MAAM+owB,OAAS,OAEhB6qW,EAASznnC,QAAQ,UAAY,IAC/BiwO,EAAKp8N,MAAM+owB,OAAS3siB,EAAKp8N,MAAM+oH,KAC/BqzG,EAAKp8N,MAAM+oH,KAAO,OAClBqzG,EAAKp8N,MAAMg+T,UAAY,GAGlB5hG,CACT,EAEAg34B,EAAUl7mC,KAAO,aACjBk7mC,EAAUxr9B,aAAe,CAAC,OAC1Bwr9B,EAAUjzH,WAAa,MACvBizH,EAAU7mlB,cAAgB,CAIxBj7hB,EAAG,EACHosH,iBAAkB,MAElB1iG,IAAK,GAMLwP,KAAM,SAENC,IAAK,SAULoplC,YAAa,KAMbC,kBAAkB,EAIlBC,eAAgB,KAEhBnplC,OAAQ,KACRU,KAAM,EACN0olC,WAAY,KACZh6kC,cAAc,EACdhtC,MAAO,CACL4hV,MAAM,EACN11N,MAAO,QAGTg33B,UAAW,CACT/M,YAAa,GACbl/nB,YAAa,OACb2pwB,UAAW,QAEbrhJ,SAAU,CACRv/9B,MAAO,CACL4hV,MAAM,EACN11N,MAAO,gBAETg33B,UAAW,CACT09H,UAAW,wBAGfzr2B,OAAQ,CACNn1Q,MAAO,CACL4hV,MAAM,EACN11N,MAAO,gBAETg33B,UAAW,CACTh33B,MAAO,wBAGXm18B,aAAc,QAET+kD,CACT,CA1NA,CA0NE9pW,IAEF,YC3Le,SAAS2qW,GAAiBhlJ,GACvC,IAAIilJ,EAAe,CAAC,EACpBjlJ,EAAQq/B,iBAAiB,OAAO,SAAU3f,GACxC,IAAIwlI,EAAexlI,EAAY6/H,kBAC3Bh+lC,EAAM2jmC,EAAe,IAAMA,EAAaj9lC,GAAK,IAAMy39B,EAAY8kI,cAClES,EAAa1jmC,GAAO0jmC,EAAa1jmC,IAAQ,IAAIhjB,KAAKmh/B,EACrD,IACA,EAAYulI,GAAc,SAAUE,EAAY5jmC,GAK9C,IAJA,IAlDoB6jmC,EAAOC,EACzBhB,EAiDEn4mC,GAlDgBk5mC,EAkDM,EAAWD,GAAY,SAAUzlI,GACzD,OAAOA,EAAYx+2B,SACrB,IApD2Bmk/B,EAoDvBF,EAAW,GAAGtlnC,IAAI,uBAnDpBwknC,EAAc,CAAC,EACnB,EAAYe,GAAO,SAAUl5mC,GAC3BA,EAAKwywB,KAAKxywB,EAAK42iC,aAAa,UAAU,SAAUjljC,EAAO25W,GAErD,IAAIw5W,EAAS,MAAQ9ktB,EAAKw4U,QAAQ8yB,GAClC6swB,EAAYrzZ,GAAUqzZ,EAAYrzZ,IAAW,GAExChorB,MAAMnrC,IACTwmnC,EAAYrzZ,GAAQzytB,KAAKV,EAE7B,GACF,IACOunnC,EAAM,GAAGr5lC,IAAIq5lC,EAAM,GAAGtiE,aAAa,UAAU,SAAUjljC,EAAO25W,GAOnE,IANA,IAAIw5W,EAAS,MAAQo0Z,EAAM,GAAG1gyB,QAAQ8yB,GAClChsQ,EAAM,EACNjhG,EAAMkyD,IACNpyD,GAAM,IACNkxH,EAAM8o/B,EAAYrzZ,GAAQj0tB,OAErBO,EAAI,EAAGA,EAAIi+H,EAAKj+H,IACvBiN,EAAMhL,KAAKgL,IAAIA,EAAK85mC,EAAYrzZ,GAAQ1ztB,IACxC+M,EAAM9K,KAAK8K,IAAIA,EAAKg6mC,EAAYrzZ,GAAQ1ztB,IACxCkuG,GAAO64gC,EAAYrzZ,GAAQ1ztB,GAe7B,OAAe,IAARi+H,EAAY+8nB,IAVG,QAAlB+sX,EACO96mC,EACkB,QAAlB86mC,EACAh7mC,EACkB,YAAlBg7mC,EACA75gC,EAAM+vB,EAEN/vB,CAIb,KAeWluG,EAAI,EAAGA,EAAI6nnC,EAAWponC,OAAQO,IACrC6nnC,EAAW7nnC,GAAGymnC,aAAeoB,EAAW7nnC,GAAG4jI,UAI7C,IAAS5jI,EAAI,EAAGA,EAAI6nnC,EAAWponC,OAAQO,IACrC6nnC,EAAW7nnC,GAAGst2B,YAAcu6Q,EAC5BA,EAAW7nnC,GAAGumnC,aAAqB,IAANvmnC,IAAY6nnC,EAAW7nnC,GAAGiinC,kBACvD4F,EAAW7nnC,GAAGk+H,QAAQtvH,EAAKq7gC,gBAC3B49F,EAAW7nnC,GAAG2mnC,WAAakB,EAAW,EAE1C,GACF,CCnEe,SAASG,GAAgBtlJ,GACtC,IAAIulJ,EAAmB,CAAC,EACxBvlJ,EAAQq/B,iBAAiB,OAAO,SAAUigH,GACxC,IAAIx3G,EAAUw3G,EAAUkF,aAExB,IAAIlF,EAAUC,oBAAqBgG,EAAiBz9G,GAApD,CAIA,IAAI09G,EAAmB,CAAC,EACxB,EAAYlG,EAAU10Q,aAAa,SAAU66Q,GAC3C,IAAI3+G,EAAM2+G,EAAah3/B,iBACnBviH,EAAOu5mC,EAAa1B,aAEpB0B,EAAa5lnC,IAAI,qBAAuBmg+B,EAAQnpoB,aAAa,WAC/D3qV,EAAKwywB,KAAKxywB,EAAK42iC,aAAa,UAAU,SAAUjljC,EAAO25W,GACrD,IAAIpwW,EAAO8E,EAAKw4U,QAAQ8yB,GACpB/3K,EAASqn0B,EAAIs9G,UAAUh9mC,GAI3B,GAAKq4L,IAAUz2J,MAAMnrC,GAArB,CAIA,IAAIghD,EAAS2mkC,EAAiBp+mC,IAAS,EACnCyqI,EAAQi13B,EAAIutD,YAAY503B,EAAO3iK,aACnC0olC,EAAiBp+mC,GAAQy3C,EAAS,EAClC3yC,EAAKq5iC,cAAc/tsB,EAAK,CACtB3lO,MAAOA,EACPhzF,OAAQA,GAPV,CASF,GAEJ,IAEA,IAAI3yC,EAAOozmC,EAAUp++B,UACrBh1H,EAAKwywB,MAAK,SAAUlna,GAClB,IAAIpwW,EAAO8E,EAAKw4U,QAAQ8yB,GACpB55O,EAAS1xH,EAAKo5iC,cAAc9tsB,IAAQ,CAAC,EACzC55O,EAAOsl/B,WAAasC,EAAiBp+mC,GACrC8E,EAAKq5iC,cAAc/tsB,EAAK55O,EAC1B,IACA2n/B,EAAiBz9G,IAAW,CApC5B,CAqCF,GACF,CCnCA,IAAI49G,GAAmB,GAEnBx+8B,GAEJ,SAAUk+M,GAGR,SAASl+M,EAAK9/J,GACZ,IAAIgiD,EAAQg8T,EAAO9oX,KAAKI,OAASA,KAiBjC,OAfA0sD,EAAMngD,KAAO,OACbmgD,EAAMgsG,WAAa,CAAC,IAAK,KAOzBhsG,EAAMu8jC,mBAAqB,IAAI,GAK/Bv8jC,EAAMw8jC,kBAAoB,IAAI,GAC9Bx8jC,EAAMhiD,KAAOA,EACNgiD,CACT,CAoNA,OAzOAkgX,EAAUpiQ,EAAMk+M,GAuBhBl+M,EAAK9qK,UAAUi2+B,gBAAkB,SAAU1x+B,EAAGjB,EAAG+7B,EAAOC,GAEtD,OADAh/B,KAAK6s+B,MAAQ,IAAI,GAAa5o+B,EAAGjB,EAAG+7B,EAAOC,GACpCh/B,KAAK6s+B,KACd,EAMAri0B,EAAK9qK,UAAUykP,gBAAkB,WAC/B,OAAOnkP,KAAK6s+B,KACd,EAEAri0B,EAAK9qK,UAAUypnC,YAAc,SAAUllnC,EAAGjB,EAAG+7B,EAAOC,GAClDh/B,KAAKopnC,aAAanlnC,EAAGjB,EAAG+7B,EAAOC,GAE/Bh/B,KAAKqpnC,UAAY,IAAI,GAAaplnC,EAAGjB,EAAG+7B,EAAOC,EACjD,EAMAwrI,EAAK9qK,UAAU0pnC,aAAe,SAAUnlnC,EAAGjB,EAAG+7B,EAAOC,GACnD,IAAI00D,EAAO1zF,KAAKmkP,kBACZml4B,EAAetpnC,KAAKkpnC,kBACxBI,EAAa1m/B,UAAYlvC,EAAKw/2B,mBAAmB,IAAI,GAAajv8B,EAAGjB,EAAG+7B,EAAOC,IAC/E,IAAIuqlC,EAAYD,EAAaj4hC,OAC7Bi4hC,EAAaj4hC,OAAS,KACtBi4hC,EAAat4J,qBACbs4J,EAAaj4hC,OAASk4hC,EAEtBvpnC,KAAK8sM,kBACP,EAMAtiC,EAAK9qK,UAAUshC,UAAY,SAAUwolC,EAAav6kC,GAC3Cu6kC,IAILxpnC,KAAK62X,QAAU,CAAC,GAAa2yvB,EAAY,GAAIv6kC,EAAIk8L,YAAa,GAAaq+4B,EAAY,GAAIv6kC,EAAI+rI,cAE/Fh7K,KAAKypnC,uBACP,EAEAj/8B,EAAK9qK,UAAUyhC,QAAU,SAAUxB,GACjCA,EAAOA,GAAQ,EACf,IAAI45kC,EAAYv5mC,KAAKu5mC,UAEjBA,IACmB,MAAjBA,EAAU5rmC,MACZgyB,EAAO98B,KAAKgL,IAAI0rmC,EAAU5rmC,IAAKgyB,IAGZ,MAAjB45kC,EAAU1rmC,MACZ8xB,EAAO98B,KAAK8K,IAAI4rmC,EAAU1rmC,IAAK8xB,KAInC3/B,KAAK0pnC,MAAQ/plC,EAEb3/B,KAAKypnC,sBACP,EAMAj/8B,EAAK9qK,UAAUiqnC,iBAAmB,WAEhC,IAAIC,EAAU5pnC,KAAKmkP,kBAGnB,MAAO,CAFEyl4B,EAAQ3lnC,EAAI2lnC,EAAQ7qlC,MAAQ,EAC5B6qlC,EAAQ5mnC,EAAI4mnC,EAAQ5qlC,OAAS,EAExC,EAEAwrI,EAAK9qK,UAAU0gC,UAAY,WACzB,OAAOpgC,KAAK62X,SAAW72X,KAAK2pnC,kBAC9B,EAEAn/8B,EAAK9qK,UAAU2gC,QAAU,WACvB,OAAOrgC,KAAK0pnC,OAAS,CACvB,EAEAl/8B,EAAK9qK,UAAUmqnC,iBAAmB,WAChC,OAAO7pnC,KAAKipnC,mBAAmB94J,mBACjC,EAMA3lzB,EAAK9qK,UAAU+pnC,qBAAuB,WAEpC,IAAIK,EAAqB9pnC,KAAKkpnC,kBAAkB/4J,oBAE5C45J,EAAgB/pnC,KAAKipnC,mBACrBe,EAAgBhqnC,KAAK2pnC,mBACrB1qlC,EAASj/B,KAAKogC,YACdT,EAAO3/B,KAAKqgC,UAChBpB,EAAS,GAAsB,GAAIA,EAAQ6qlC,GAC3CE,EAAgB,GAAsB,GAAIA,EAAeF,GACzDC,EAAcp97B,QAAU1tJ,EAAO,GAC/B8qlC,EAAcn97B,QAAU3tJ,EAAO,GAC/B8qlC,EAAc9lnC,EAAI+lnC,EAAc,GAAK/qlC,EAAO,GAC5C8qlC,EAAc/mnC,EAAIgnnC,EAAc,GAAK/qlC,EAAO,GAC5C8qlC,EAAcnx/B,OAASmx/B,EAAclx/B,OAASl5F,EAE9C3/B,KAAK8sM,kBACP,EAOAtiC,EAAK9qK,UAAUotM,iBAAmB,WAChC,IAAIm96B,EAAoBjqnC,KAAKipnC,mBACzBiB,EAAmBlqnC,KAAKkpnC,kBAC5BgB,EAAiB74hC,OAAS44hC,EAC1BA,EAAkBxvK,kBAClByvK,EAAiBzvK,kBACjB,GAAYz68B,KAAK4iI,YAAc5iI,KAAK4iI,UAAY,IAAKsn/B,EAAiBtn/B,WzP/M/D,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IyPgNvB5iI,KAAKmqnC,cAAgBD,EAAiB/5J,oBACtCnw9B,KAAKww9B,aAAexw9B,KAAKww9B,cAAgB,GACzC,GAAcxw9B,KAAKww9B,aAAcxw9B,KAAK4iI,WACtC5iI,KAAKgx9B,oBACP,EAEAxmzB,EAAK9qK,UAAUsjnC,iBAAmB,WAChC,IAAIkH,EAAmBlqnC,KAAKkpnC,kBACxBe,EAAoBjqnC,KAAKipnC,mBAIzB37C,EAAqB,IAAI,GAG7B,OAFAA,EAAmB1q8B,UAAYqn/B,EAAkBrn/B,UACjD0q8B,EAAmBt8G,qBACZ,CACLmyJ,KAAM,CACJl/mC,EAAGqpkC,EAAmBrpkC,EACtBjB,EAAGsqkC,EAAmBtqkC,EACtB41H,OAAQ008B,EAAmB108B,OAC3BC,OAAQy08B,EAAmBz08B,QAE7Bo4C,IAAK,CACHhtK,EAAGimnC,EAAiBjmnC,EACpBjB,EAAGknnC,EAAiBlnnC,EACpB41H,OAAQsx/B,EAAiBtx/B,OACzBC,OAAQqx/B,EAAiBrx/B,QAG/B,EAEA2xC,EAAK9qK,UAAUu9lC,YAAc,WAC3B,OAAOj9lC,KAAKqpnC,SACd,EAMA7+8B,EAAK9qK,UAAU0qnC,qBAAuB,WACpC,IAAI12hC,EAAO1zF,KAAKmkP,kBAAkB5zN,QAElC,OADAmjE,EAAKo42B,eAAe9r8B,KAAK4iI,WAClBlvC,CACT,EAMA82E,EAAK9qK,UAAUi4jC,YAAc,SAAUnojC,EAAM66mC,EAAQnq/B,GACnD,IAAI0C,EAAYyn/B,EAASrqnC,KAAKmqnC,cAAgBnqnC,KAAK4iI,UAEnD,OADA1C,EAAMA,GAAO,GACN0C,EAAYom/B,GAAiB9o/B,EAAK1wH,EAAMozH,GAAa,GAAY1C,EAAK1wH,EAC/E,EAMAg7J,EAAK9qK,UAAUklkC,YAAc,SAAUzv7B,GACrC,IAAIq70B,EAAexw9B,KAAKww9B,aACxB,OAAOA,EAAew4J,GAAiB,GAAI7z+B,EAAOq70B,GAAgB,CAACr70B,EAAM,GAAIA,EAAM,GACrF,EAEAq1B,EAAK9qK,UAAUg1iC,eAAiB,SAAUpxE,EAASc,EAAQjj+B,GACzD,IAAI+h/B,EAAWonI,GAAYlmJ,GAC3B,OAAO8e,IAAalj/B,KAAOkj/B,EAASy0E,YAAYx2jC,GAAS,IAC3D,EAEAqpK,EAAK9qK,UAAUi1iC,iBAAmB,SAAUrxE,EAASc,EAAQxs2B,GAC3D,IAAIsr3B,EAAWonI,GAAYlmJ,GAC3B,OAAO8e,IAAalj/B,KAAOkj/B,EAAS0hF,YAAYht8B,GAAS,IAC3D,EAMA4yC,EAAK9qK,UAAUm1iC,aAAe,SAAU1/5B,GACtC,OAAOn1I,KAAKoqnC,uBAAuBx2K,QAAQz+zB,EAAM,GAAIA,EAAM,GAC7D,EAEAq1B,EAAK9R,WAAa,CAAC,IAAK,KACjB8R,CACT,CA3OA,CA2OE,IAEF,SAAS8/8B,GAAYlmJ,GACnB,IAAI4e,EAAc5e,EAAO4e,YACzB,OAAOA,EAAcA,EAAYjx3B,iBAAmB,IACtD,CAEA,YC1PA,IAAIw4/B,GAAqB,CACvB,QAAW,CACTrC,YAAa,IACbsC,iBAAiB,GAEnB,OAAU,CACRtC,YAAa,EACbsC,iBAAiB,IAGVC,GAAkB,CAAC,MAAO,OAEjCC,GAEJ,SAAUhiwB,GAGR,SAASgiwB,EAAIhgnC,EAAM2kB,EAAK+wgB,GACtB,IAAI1ze,EAAQg8T,EAAO9oX,KAAKI,KAAM0K,IAAS1K,KAEvC0sD,EAAMgsG,WAAa+x9B,GACnB/9jC,EAAMngD,KAAO,MAEbmgD,EAAMi+jC,cAAgB,KACtBj+jC,EAAMr9B,IAAMA,EACZ,IA6BI0mgC,EA7BAvx1B,EAAa47V,EAAI57V,WACjB38L,EAAS+9mC,GAAiB/g+B,KAAKx1H,EAAK+wgB,EAAI3pR,QAAS2pR,EAAIsiiB,cACrDvr+B,EAAWyuhC,GAAiBlE,eAAerylC,GAE3Ci7+B,GADe598B,EAAM42jC,aAAenshC,EAAWA,EAAS5qF,KAAO,KACrDmgD,EAAM498B,QAAUzigC,EAAOyigC,SACjChjS,EAAgBijZ,GAAmBpzhC,EAAS5qF,MA0BhD,GAzBAmgD,EAAM8yjC,YAAc33mC,EAAOu3mC,WAC3B1yjC,EAAM498B,QAAUzigC,EAAOyigC,QAqBvB598B,EAAM83I,WAAaA,EAGfA,EAEF,IAAK,IAAI5jM,EAAI,EAAGA,EAAI0pgC,EAAQjqgC,OAAQO,IAAK,CACvC,IAAI2gnC,EAAaj3G,EAAQ1pgC,GAAGujP,gBAAgB3/C,IAC5Cux1B,EAAeA,GAAgBwrF,EAAWhxlC,SAC7ByyJ,MAAMu+7B,EACrB,MAEAxrF,EAAeluhC,EAAOkuhC,aAWxB,OARArp+B,EAAMip7B,gBAAgBogD,EAAa9xhC,EAAG8xhC,EAAa/yhC,EAAG+yhC,EAAah3/B,MAAOg3/B,EAAa/2/B,QAKvF0tB,EAAMw7jC,YAAc1j7B,EAAa,EAAI,GAAiB47V,EAAI8nlB,YAAa5gZ,EAAc4gZ,aAErFx7jC,EAAMk+jC,kBAAmBpm7B,GAAqB8iiB,EAAckjZ,gBACrD99jC,CACT,CAgHA,OA7KAkgX,EAAU89sB,EAAKhiwB,GA+DfgiwB,EAAIhrnC,UAAU0pnC,aAAe,SAAUnlnC,EAAGjB,EAAG+7B,EAAOC,GAClD,IAAI00D,EAAO1zF,KAAKmkP,kBACZqm4B,EAAkBxqnC,KAAK4qnC,iBAC3Bl3hC,EAAOA,EAAKnjE,QAERi6lC,IAEF92hC,EAAK1wF,GAAK0wF,EAAK1wF,EAAI0wF,EAAK10D,QAG1B,IAAIkrlC,EAAmBlqnC,KAAKkpnC,kBAC5BgB,EAAiBtn/B,UAAYlvC,EAAKw/2B,mBAAmB,IAAI,GAAajv8B,EAAGjB,EAAG+7B,EAAOC,IACnF,IAAIuqlC,EAAYW,EAAiB74hC,OACjC64hC,EAAiB74hC,OAAS,KAC1B64hC,EAAiBl5J,qBACjBk5J,EAAiB74hC,OAASk4hC,EAEtBiB,IACFN,EAAiBrx/B,QAAUqx/B,EAAiBrx/B,QAG9C74H,KAAK8sM,kBACP,EAEA496B,EAAIhrnC,UAAUgonC,UAAY,SAAUh9mC,GAClC,OAAO1K,KAAKw/mC,YAAYr8mC,IAAIuH,EAC9B,EAEAggnC,EAAIhrnC,UAAUmrnC,iBAAmB,SAAU5r9B,GAGzC,IAFA,IAAIqr2B,EAAUtqgC,KAAKsqgC,QAEV1pgC,EAAI,EAAGA,EAAI0pgC,EAAQjqgC,OAAQO,IAAK,CACvC,IAAImiM,EAASun0B,EAAQ1pgC,GAErB,GAAoB,YAAhBmiM,EAAOx2L,MAAsBw2L,EAAO6wwB,QAAQ30yB,GAC9C,OAAOqr2B,EAAQ1pgC,EAEnB,CACF,EAMA8pnC,EAAIhrnC,UAAUornC,YAAc,SAAUpgnC,EAAM21mC,GAC1CrgnC,KAAK2qnC,cAAc1+mC,IAAIvB,EAAM21mC,EAC/B,EAMAqK,EAAIhrnC,UAAUqrnC,YAAc,SAAUrgnC,GACpC,IAAIq4L,EAAS/iM,KAAKw/mC,YAAYr8mC,IAAIuH,GAGlC,OAAO1K,KAAK2qnC,cAAcxnnC,IAAIuH,IAASq4L,GAAUA,EAAO3iK,WAC1D,EAEAsqlC,EAAIhrnC,UAAUi4jC,YAAc,SAAUnojC,EAAM66mC,EAAQnq/B,GAMlD,GALI,GAAgB1wH,KAElBA,EAAOxP,KAAK+qnC,YAAYv7mC,IAGtBA,EAAM,CACR,IAAIg1L,EAAaxkM,KAAKwkM,WAOtB,OALIA,IAEFh1L,EAAOg1L,EAAWltE,QAAQ9nH,IAGrBA,GAAQxP,KAAKgrnC,iBAAiBx7mC,EAAM66mC,EAAQnq/B,EACrD,CACF,EAEAwq/B,EAAIhrnC,UAAUklkC,YAAc,SAAUzv7B,GACpC,IAAIqvD,EAAaxkM,KAAKwkM,WAOtB,OALIA,IAEFrvD,EAAQqvD,EAAW96E,UAAUyrB,IAGxBA,GAASn1I,KAAKirnC,iBAAiB91+B,EACxC,EAMAu1+B,EAAIhrnC,UAAUurnC,iBAAmB,SAAU91+B,GACzC,OAAOuzO,EAAOhpX,UAAUklkC,YAAYhlkC,KAAKI,KAAMm1I,EACjD,EAEAu1+B,EAAIhrnC,UAAUsrnC,iBAAmB,SAAU/0pB,EAAWo0pB,EAAQnq/B,GAC5D,OAAOwoP,EAAOhpX,UAAUi4jC,YAAY/3jC,KAAKI,KAAMi2d,EAAWo0pB,EAAQnq/B,EACpE,EAEAwq/B,EAAIhrnC,UAAUg1iC,eAAiB,SAAUpxE,EAASc,EAAQjj+B,GACxD,IAAI+h/B,EAAW,GAAY9e,GAC3B,OAAO8e,IAAalj/B,KAAOkj/B,EAASy0E,YAAYx2jC,GAAS,IAC3D,EAEAupnC,EAAIhrnC,UAAUi1iC,iBAAmB,SAAUrxE,EAASc,EAAQxs2B,GAC1D,IAAIsr3B,EAAW,GAAY9e,GAC3B,OAAO8e,IAAalj/B,KAAOkj/B,EAAS0hF,YAAYht8B,GAAS,IAC3D,EAEO8y/B,CACT,CA/KA,CA+KE,IAKF,SAAS,GAAYtmJ,GACnB,IAAIshJ,EAAWthJ,EAAOshJ,SAClB1iI,EAAc5e,EAAO4e,YACzB,OAAO0iI,EAAWA,EAAS3z/B,iBAAmBix3B,EAAcA,EAAYjx3B,mBACpEix3B,EAAY4S,uBAAuB,MAAOrxB,IAAkB1z0B,OAAO,IAAM,CAAC,GAAG9+B,iBAAmB,IACtG,CAPA,EAAa24/B,GAAK,IASlB,YCtMA,SAASQ,GAAUxF,EAAUz2kC,GAC3B,IAAIm5kC,EAAiB1C,EAASvinC,IAAI,kBAElC,GAAsB,MAAlBilnC,EAAwB,CAC1B,IAAI+C,EAAY/C,EAAe,GAC3BgD,EAAgBhD,EAAe,GAEnC,GAAM1glC,SAASyjlC,EAAU,KAAOzjlC,SAASyjlC,EAAU,KAAOzjlC,SAAS0jlC,EAAc,KAAO1jlC,SAAS0jlC,EAAc,IAIxG,CAEL,IAAIC,EAAerrnC,KAAKwkM,WAExB,GAAI6m7B,EAAc,CAChB,IAAI5hT,EAAO0hT,EAAU,GACjBtuN,EAAOsuN,EAAU,GACjBzhT,EAAO0hT,EAAc,GACrBtuN,EAAOsuN,EAAc,GACzBD,EAAY,CAACprjC,IAAUA,KACvBqrjC,EAAgB,EAAC,KAAW,KAE5B,IAAIE,EAAa,SAAUll4B,EAAI30D,EAAIm2H,EAAIl2H,GAIrC,IAHA,IAAIl9C,EAAKozK,EAAKxhE,EACV/xG,EAAKq9C,EAAKD,EAEL7wL,EAAI,EAAGA,GAAK,IAAKA,IAAK,CAC7B,IAAIkC,EAAIlC,EAAI,IACRuL,EAAKk/mC,EAAa/z/B,QAAQ,CAAC8uH,EAAK5xG,EAAK1xI,EAAG2uL,EAAKp9C,EAAKvxI,IACtD,GAAWqonC,EAAWA,EAAWh/mC,GACjC,GAAWi/mC,EAAeA,EAAej/mC,EAC3C,CACF,EAGAm/mC,EAAW7hT,EAAMozF,EAAMnzF,EAAMmzF,GAE7ByuN,EAAW5hT,EAAMmzF,EAAMnzF,EAAMozF,GAE7BwuN,EAAW5hT,EAAMozF,EAAMrzF,EAAMqzF,GAE7BwuN,EAAW7hT,EAAMqzF,EAAMpzF,EAAMmzF,EAC/B,CAEA785B,KAAK21+B,gBAAgBw1I,EAAU,GAAIA,EAAU,GAAIC,EAAc,GAAKD,EAAU,GAAIC,EAAc,GAAKD,EAAU,GACjH,CACF,CAEA,IAOIlslC,EACAra,EAeAqn9B,EAvBAv44B,EAAO1zF,KAAKmkP,kBACZon4B,EAAe7F,EAASvinC,IAAI,gBAC5BqonC,EAAa9F,EAASvinC,IAAI,cAC1Byo+B,EAAY387B,EAAIk8L,WAChB0gwB,EAAa587B,EAAI+rI,YACjBhS,EAASt1E,EAAK30D,MAAQ20D,EAAK10D,OAASh/B,KAAKkonC,YACzCuD,GAAmB,EAmBvB,GAfIF,GAAgBC,IAClBvslC,EAAS,CAAC,GAAwBsslC,EAAa,GAAI3/I,GAAY,GAAwB2/I,EAAa,GAAI1/I,IACxGjn9B,EAAO,GAAwB4mmC,EAAY3onC,KAAKgL,IAAI+99B,EAAWC,IAE1Dv/7B,MAAMrN,EAAO,KAAQqN,MAAMrN,EAAO,KAAQqN,MAAM1nB,KACnD6mmC,GAAmB,IAUnBA,EACFx/I,EAAW,CAAC,EAERjj0B,EAAS,GAEXij0B,EAASlt8B,MAAQna,EACjBqn9B,EAASjt8B,OAASpa,EAAOokJ,IAEzBij0B,EAASjt8B,OAASpa,EAClBqn9B,EAASlt8B,MAAQna,EAAOokJ,GAG1Bij0B,EAASjp+B,EAAIi8B,EAAO,GAAKgt8B,EAASjt8B,OAAS,EAC3Cit8B,EAASho+B,EAAIg7B,EAAO,GAAKgt8B,EAASlt8B,MAAQ,MACrC,CAEL,IAAI2slC,EAAkBhG,EAAS5vH,qBAC/B41H,EAAgB1i9B,OAASA,EACzBij0B,EAAW,GAAqBy/I,EAAiB,CAC/C3slC,MAAO6s8B,EACP5s8B,OAAQ6s8B,GAEZ,CAEA7r+B,KAAKmpnC,YAAYl9I,EAASho+B,EAAGgo+B,EAASjp+B,EAAGip+B,EAASlt8B,MAAOkt8B,EAASjt8B,QAClEh/B,KAAKghC,UAAU0klC,EAASvinC,IAAI,UAAW8rC,GACvCjvC,KAAKmhC,QAAQuklC,EAASvinC,IAAI,QAC5B,CAUA,IAAIwonC,GAEJ,WACE,SAASA,IAEP3rnC,KAAK04J,WAAa+x9B,EACpB,CA0FA,OAxFAkB,EAAWjsnC,UAAUQ,OAAS,SAAUoj+B,EAASr07B,GAC/C,IAAI28kC,EAAU,GAEd,SAASC,EAAuB92/B,GAC9B,MAAO,CACL2t8B,aAAc3t8B,EAAM5xH,IAAI,gBACxB+knC,YAAanz/B,EAAM5xH,IAAI,eACvBqhM,WAAYzvE,EAAM5xH,IAAI,cAE1B,CAGAmg+B,EAAQwe,cAAc,OAAO,SAAU4jI,EAAU5qwB,GAC/C,IAAIzlF,EAAUqw1B,EAASvinC,IAAI,OACvBingC,EAAM,IAAI,GAAI/0uB,EAAUylF,EAAKzlF,EAAS,EAAc,CACtD5e,QAASiv2B,EAASvinC,IAAI,YACrB0onC,EAAuBnG,KAC1Bt7G,EAAImvG,UAAYmM,EAASvinC,IAAI,cAC7ByonC,EAAQ/pnC,KAAKuogC,GAEbs7G,EAAS3z/B,iBAAmBq44B,EAC5BA,EAAIr14B,MAAQ2w/B,EAEZt7G,EAAIv74B,OAASq8/B,GACb9gH,EAAIv74B,OAAO62/B,EAAUz2kC,EACvB,IACAq07B,EAAQyf,YAAW,SAAUC,GAG3B,GAAiB,QAFFA,EAAY7/+B,IAAI,oBAEP,CACtB,IAAIwjnC,EAAW3jI,EAAY7/+B,IAAI,aAAe,EAC9C6/+B,EAAYjx3B,iBAAmB65/B,EAAQjF,EACzC,CACF,IAEA,IAAImF,EAAwB,CAAC,EA2B7B,OA1BAxoJ,EAAQq/B,iBAAiB,OAAO,SAAU3f,GACxC,IAAKA,EAAY6/H,kBAAmB,CAClC,IAAIz3G,EAAUpoB,EAAY8kI,aAC1BgE,EAAsB1gH,GAAW0gH,EAAsB1gH,IAAY,GACnE0gH,EAAsB1gH,GAASvpgC,KAAKmh/B,EACtC,CACF,IACA,EAAY8oI,GAAuB,SAAUlJ,EAAWx3G,GACtD,IAAI2gH,EAAc,EAAWnJ,GAAW,SAAUoJ,GAChD,OAAOA,EAAgB7onC,IAAI,UAC7B,IACIingC,EAAM,IAAI,GAAIgB,EAASA,EAAS,EAAc,CAChD30vB,QAAS,EAAgBs12B,IACxBF,EAAuBjJ,EAAU,MACpCx4G,EAAImvG,UAAY,GAAgBh5mC,MAAM,KAAM,EAAWqinC,GAAW,SAAUoJ,GAC1E,OAAOA,EAAgB7onC,IAAI,aAC7B,KACAyonC,EAAQ/pnC,KAAKuogC,GAEbA,EAAIv74B,OAASq8/B,GACb9gH,EAAIv74B,OAAO+z/B,EAAU,GAAI3zkC,GACzB,EAAY2zkC,GAAW,SAAUoJ,GAC/BA,EAAgBj6/B,iBAAmBq44B,EAxE3C,SAAsBA,EAAKr14B,GACzB,EAAYA,EAAM5xH,IAAI,aAAa,SAAUk9mC,EAAU31mC,GACrD0//B,EAAI0gH,YAAYpgnC,EAAM21mC,EACxB,GACF,CAqEQ4L,CAAa7hH,EAAK4hH,EACpB,GACF,IACOJ,CACT,EAMAD,EAAWjsnC,UAAUwsnC,iBAAmB,SAAUC,EAAiB921B,EAAS5e,EAASiszB,GAKnF,IAHA,IAAI0pD,GAAcD,GAAmB,IAAIpqnC,QACrC4lnC,EAAc,KAET/mnC,EAAI,EAAGA,EAAIwrnC,EAAW/rnC,OAAQO,IACrC+mnC,EAAY17mC,IAAImgnC,EAAWxrnC,GAAG8J,KAAM0hnC,EAAWxrnC,IAUjD,OANA,EADaglnC,GAAiB/g+B,KAAKwwI,EAAS5e,EAASiszB,GAClCp4D,SAAS,SAAUvn0B,GACpC,IAAIr4L,EAAOq4L,EAAOr4L,MACjBi9mC,EAAYxknC,IAAIuH,IAAS0hnC,EAAWvqnC,KAAK,CACxC6I,KAAMA,GAEV,IACO0hnC,CACT,EAEOT,CACT,CA/FA,GAkGA,SADiB,IAAIA,GCnNrB,IAAIU,GAEJ,SAAU3jwB,GAGR,SAAS2jwB,IACP,IAAI3/jC,EAAmB,OAAXg8T,GAAmBA,EAAOnoX,MAAMP,KAAMI,YAAcJ,KAGhE,OADA0sD,EAAMngD,KAAO8/mC,EAAS9/mC,KACfmgD,CACT,CAgLA,OAvLAkgX,EAAUy/sB,EAAU3jwB,GASpB2jwB,EAAS3snC,UAAUgxD,KAAO,SAAUmN,EAAQghe,EAAaykc,GACvD,IAAIz79B,EAAS+9mC,GAAiBlE,eAAe7jjC,EAAOxuC,KAEpD,GAAIxnB,GAA0B,YAAhBA,EAAO0E,KAAoB,CACvC,IAAIg4+B,EAAY1m7B,EAAO0m7B,UAAY1m7B,EAAO0m7B,WAAa,CAAC,EAElD,UAAWA,IACfA,EAAUh33B,MAAQ,OAEtB,CAEAvtH,KAAKq1/B,qBAAqBx37B,EAAQyl6B,GAElC,GAA0Bzl6B,EAAQ,QAAS,CAAC,QAC9C,EAEAwujC,EAAS3snC,UAAU61/B,cAAgB,WACjC,IAAI7o8B,EAAQ1sD,KAER69D,EAAS79D,KAAK69D,OAClBA,EAAOys8B,QAAU,GAAW4hH,iBAAiBrujC,EAAOys8B,QAASzs8B,EAAOxuC,IAAKwuC,EAAO44M,QAAS54M,EAAO6kgC,cAChG,IAAIh5C,EAAc,CAAC,EACnB1phC,KAAKssnC,gBAAkB,GAAczujC,EAAOys8B,SAAW,IAAI,SAAUiiH,EAAgBC,GACnF,IAAIvL,EAAauL,EAAU9hnC,KAU3B,OARIu2mC,IACFsL,EAAetgnC,IAAIg1mC,EAAY,IAAI,GAAMuL,EAAW9/jC,EAAOA,EAAM426B,UAE7DkpJ,EAAUng8B,WACZq91B,EAAYu3F,IAAc,IAIvBsL,CACT,GAAG,MAEE1ujC,EAAO6r9B,cACV7r9B,EAAO6r9B,YAAcA,EAEzB,EAMA2iG,EAAS3snC,UAAU0knC,eAAiB,SAAU15mC,GAC5C,OAAO1K,KAAKssnC,gBAAgBnpnC,IAAIuH,IAAS,IAAI,GAAM,KAAM1K,KAAMA,KAAKsj+B,QACtE,EAOA+oJ,EAAS3snC,UAAUgo/B,kBAAoB,SAAUh9+B,EAAM+a,GACrD,IAAI0+lC,EAAcnknC,KAAKoknC,eAAe15mC,GAClC06iB,EAAuB,WAAX3/hB,EAAsB0+lC,EAAYhhnC,IAAI,CAAC,QAAS,cAAgBghnC,EAAYhhnC,IAAI,CAAC,WAAY,QAAS,cAClHklC,EAAS,CACX39B,KAAMA,GAGR,OAAI,GAAkB06iB,IACpB/8gB,EAAO5iB,OAASA,EACT2/hB,EAAU/8gB,IACR,GAAgB+8gB,GAClBA,EAAU34iB,QAAQ,MAAe,MAAR/B,EAAeA,EAAO,SADjD,CAGT,EAEA2hnC,EAAS3snC,UAAUyhC,QAAU,SAAUxB,GACrC3/B,KAAK69D,OAAOl+B,KAAOA,CACrB,EAEA0slC,EAAS3snC,UAAUshC,UAAY,SAAU/B,GACvCj/B,KAAK69D,OAAO5+B,OAASA,CACvB,EAGAotlC,EAAS3snC,UAAU82Q,OAAS,SAAU9rQ,GACpC,IAAImzD,EAAS79D,KAAK69D,OACdxvB,EAAewvB,EAAOxvB,aAErBA,IAIgB,aAAjBA,IACFwvB,EAAO6r9B,YAAc,OAGL7r9B,EAAO6r9B,cAAgB7r9B,EAAO6r9B,YAAc,CAAC,IACnDh/gC,IAAQ,EACtB,EAEA2hnC,EAAS3snC,UAAU+snC,SAAW,SAAU/hnC,GACtC,IAAIg/gC,EAAc1phC,KAAK69D,OAAO6r9B,YAE1BA,IACFA,EAAYh/gC,IAAQ,EAExB,EAEA2hnC,EAAS3snC,UAAU4r5B,eAAiB,SAAU5g5B,GAC5C1K,KAAKA,KAAKouC,WAAW1jC,GAAQ,WAAa,UAAUA,EACtD,EAEA2hnC,EAAS3snC,UAAU0uC,WAAa,SAAU1jC,GACxC,IAAIg/gC,EAAc1phC,KAAK69D,OAAO6r9B,YAC9B,SAAUA,IAAeA,EAAYh/gC,GACvC,EAEA2hnC,EAAS9/mC,KAAO,MAChB8/mC,EAAS73H,WAAa,MACtB63H,EAASzrlB,cAAgB,CAEvBj7hB,EAAG,EACHs9U,MAAM,EACNpkT,KAAM,SACNC,IAAK,SAILoplC,YAAa,KAMb9zoB,QAAQ,EAER/kd,IAAK,GAGL+4lC,eAAgB,KAEhBnplC,OAAQ,KACRU,KAAM,EACN0olC,WAAY,KAEZhnnC,MAAO,CACL4hV,MAAM,EACN11N,MAAO,QAETg33B,UAAW,CACT/M,YAAa,GACbl/nB,YAAa,QAMfsonB,SAAU,CACRv/9B,MAAO,CACL4hV,MAAM,EACN11N,MAAO,gBAETg33B,UAAW,CACTh33B,MAAO,wBAGXipJ,OAAQ,CACNn1Q,MAAO,CACL4hV,MAAM,EACN11N,MAAO,gBAETg33B,UAAW,CACTh33B,MAAO,wBAGX+84B,QAAS,IAKJ+hH,CACT,CAzLA,CAyLE3/9B,IAEF,YCtMA,SAASgg+B,GAAenlkC,EAAM4tF,GAE5B,OAAO5tF,EAAK0jkC,iBAAmB1jkC,EAAK0jkC,iBAAiB91+B,GAAS5tF,EAAKq9gC,YAAYzv7B,EACjF,CAEO,SAASw3+B,GAAoBplkC,EAAMzyB,EAASyklC,EAAWtqkC,GAC5D,IAAI29kC,EAAerlkC,EAAKlnB,UACpBpB,EAASsoB,EAAKnnB,YACdT,EAAO7K,EAAQ6K,KACfw1G,EAAQ5tF,EAAKyjkC,iBAAmBzjkC,EAAKyjkC,iBAAiB/rlC,GAAUsoB,EAAKowgC,YAAY14hC,GAQrF,GANkB,MAAdnK,EAAQ0/G,IAA4B,MAAd1/G,EAAQu/G,KAChCc,EAAM,IAAMrgH,EAAQ0/G,GACpBW,EAAM,IAAMrgH,EAAQu/G,GACpB9sF,EAAKvmB,UAAU0rlC,GAAenlkC,EAAM4tF,GAAQlmG,IAGlC,MAARtP,EAAc,CAChB,GAAI45kC,EAAW,CACb,IAAIC,EAAUD,EAAU1rmC,KAAO,EAC3B4rmC,EAAUF,EAAU5rmC,KAAOoyD,IAC/BpgC,EAAO98B,KAAK8K,IAAI9K,KAAKgL,IAAI++mC,EAAejtlC,EAAM85kC,GAAUD,GAAWoT,CACrE,CAGArlkC,EAAKqxE,QAAUj5F,EACf4nB,EAAKsxE,QAAUl5F,EACf,IAAIktlC,GAAQ/3lC,EAAQ63J,QAAUplI,EAAKtjD,IAAM07B,EAAO,GAC5CmtlC,GAAQh4lC,EAAQ83J,QAAUrlI,EAAKvkD,IAAM28B,EAAO,GAChD4nB,EAAKtjD,GAAK4onC,EACVtlkC,EAAKvkD,GAAK8pnC,EACVvlkC,EAAKkz5B,kBAELlz5B,EAAKvmB,UAAU0rlC,GAAenlkC,EAAM4tF,GAAQlmG,GAC5CsY,EAAKpmB,QAAQxB,EAAOitlC,EACtB,CAEA,MAAO,CACL3tlC,OAAQsoB,EAAKnnB,YACbT,KAAM4nB,EAAKlnB,UAEf,CCnCA,IAAI0slC,GAEJ,SAAUrkwB,GAGR,SAASqkwB,IACP,IAAIrgkC,EAAmB,OAAXg8T,GAAmBA,EAAOnoX,MAAMP,KAAMI,YAAcJ,KAIhE,OAFA0sD,EAAMngD,KAAOwgnC,EAAQxgnC,KACrBmgD,EAAM427B,kBAAmB,EAClB527B,CACT,CAiEA,OAzEAkgX,EAAUmgtB,EAASrkwB,GAUnBqkwB,EAAQrtnC,UAAUgxD,KAAO,SAAU4y6B,EAASr07B,GAC1CjvC,KAAK8kgC,KAAO719B,CACd,EAEA89kC,EAAQrtnC,UAAU4uH,OAAS,SAAUo3/B,EAAUpiJ,EAASr07B,EAAKna,GAG3D,GAFA90B,KAAKimuB,OAASy/Y,GAETA,EAASvinC,IAAI,QAGhB,OAFAnD,KAAKknnC,UAAYlnnC,KAAKknnC,SAASr0lC,cAC/B7yB,KAAKknnC,SAAW,MAIblnnC,KAAKknnC,WACRlnnC,KAAKknnC,SAAW,IAAI,GAAQj4kC,IAG9B,IAAI+2kC,EAAUhmnC,KAAKknnC,SACnBlB,EAAQzw/B,KAAKmw/B,EAAUpiJ,EAASr07B,EAAKjvC,KAAM80B,GAC3CkxlC,EAAQ5qzB,MAAMxqT,GAAG,QAAS5Q,KAAKgtnC,mBAAoBhtnC,MACnDgmnC,EAAQ5qzB,MAAMg5K,OAASsxoB,EAASvinC,IAAI,UACpCnD,KAAKo7T,MAAMj2S,IAAI6gmC,EAAQ5qzB,OACvBp7T,KAAKitnC,mBAAmBvH,EAAUpiJ,EAASr07B,EAC7C,EAEA89kC,EAAQrtnC,UAAUstnC,mBAAqB,SAAU7tnC,GAC/C,IAAI4hc,EACJ+jmB,GAAoB3liC,EAAE2Q,QAAQ,SAAUiwB,GACtC,OAAqD,OAA7Cgha,EAAYi8iB,GAAUj98B,GAASgha,UACzC,IAAG,GAECA,GACF/gc,KAAK8kgC,KAAK0/B,eAAe,CACvBj4hC,KAAM,kBACN2gnC,MAAOltnC,KAAKimuB,OAAO16sB,GACnB7gB,KAAMq2b,EAAUr2b,MAGtB,EAEAqinC,EAAQrtnC,UAAUutnC,mBAAqB,SAAUl4/B,EAAOuu2B,EAASr07B,GAC/D,IAAIyd,EAAQ1sD,KAEZA,KAAKknnC,SAAS9rzB,MAAMv1H,UAAS,SAAUx8G,GACrC,IAAI03W,EAAYi8iB,GAAU3z5B,GAAM03W,UAEhC,GAAIA,EAGF,OAFAr0Y,EAAMu5qB,OAAO73rB,WAAW2yZ,EAAUr2b,MAAQukC,EAAIuy8B,YAAYn45B,GAAQp6C,EAAIwy8B,YAAYp45B,IAE3E,CAEX,GACF,EAEA0jiC,EAAQrtnC,UAAUgk/B,wBAA0B,SAAUh5+B,GACpD,OAAO1K,KAAKknnC,UAAYlnnC,KAAKknnC,SAASxjI,wBAAwBh5+B,EAAM1K,KAAKimuB,OAC3E,EAEA8mZ,EAAQrtnC,UAAU2l8B,QAAU,WAC1Brl8B,KAAKknnC,UAAYlnnC,KAAKknnC,SAASr0lC,QACjC,EAEAk6lC,EAAQxgnC,KAAO,MACRwgnC,CACT,CA3EA,CA2EE,IAEF,YC9EA,SAAS,GAAY131B,EAASqnxB,EAASC,GACrCipE,GAAiBnpE,YAAYpnxB,EAASqnxB,EAASC,EACjD,CAEO,SAAS,GAAQozB,GAStB,SAASo9C,EAAW18lC,EAAQ4nhC,GAC1BA,EAAW9p+B,OAAS,yBACpBwhgC,EAAUr0B,eAAerD,GAAY,SAAUvjhC,EAASwu8B,GACtD,IAAIj3yB,EAAW,CAAC,EACZoid,EAAc,GAqBlB,OApBA60V,EAAQwe,cAAc,CACpBhe,SAAU,MACV704B,MAAOn6D,IACN,SAAU4wlC,GACXA,EAASj1lC,GAAQqE,EAAQpqB,MAEzB,EADUg7mC,EAAS3z/B,iBACVu44B,SAAS,SAAUvn0B,GAC1B1W,EAAS0W,EAAOr4L,MAAQg7mC,EAASt3kC,WAAW20J,EAAOr4L,QAAS,CAC9D,IAEA,IAAIsmnB,EAAQ,GACZ,EAAK3kc,GAAU,SAAUppL,EAAGyH,GAC1B2hL,EAAS3hL,IAASsmnB,EAAMnvnB,KAAK6I,EAC/B,IACA+joB,EAAY5soB,KAAK,CACf8knC,SAAUjB,EAASv61B,eAEnBzgR,KAAMsmnB,GAEV,IACO,CACL3kc,SAAUA,EACVoid,YAAaA,EACb/joB,KAAMoqB,EAAQpqB,KAElB,GACF,CAvCAqlkC,EAAUp0B,yBAAyB,MAAO,IAC1Co0B,EAAUpyB,uBAAuB,IACjCoyB,EAAUnyB,sBAAsB,IAChCmyB,EAAUtyB,aAAa,cAAe,IACtCsyB,EAAUtyB,aAAa,UAAU,SAAUpoxB,GACzC,OAAOuw1B,GAAiBtE,cAAcjs1B,EACxC,IAmCA831B,EAAW,iBAAkB,CAC3B5gnC,KAAM,kBACNkyB,MAAO,qBAET0ulC,EAAW,SAAU,CACnB5gnC,KAAM,YACNkyB,MAAO,gBAET0ulC,EAAW,WAAY,CACrB5gnC,KAAM,cACNkyB,MAAO,kBAYTsxiC,EAAUr0B,eAAe,CACvBnviC,KAAM,UACNkyB,MAAO,UACP8vC,OAAQ,oBACP,SAAUz5C,EAASwu8B,EAASr07B,GAC7B,IAAIitK,EAAgBpnL,EAAQonL,eAAiB,SAC7ConxB,EAAQwe,cAAc,CACpBhe,SAAU5nxB,EACVjtH,MAAOn6D,IACN,SAAU+t8B,GACX,IAAIunC,EAAMvnC,EAAe9w2B,iBAEzB,GAAiB,QAAbq44B,EAAI79/B,KAAR,CAIA,IAAI84I,EAAMsn+B,GAAoBviH,EAAKt1+B,EAAS+t8B,EAAe1/9B,IAAI,cAAe8rC,GAC9E4z7B,EAAe7h8B,WAAa6h8B,EAAe7h8B,UAAUqkH,EAAIpmH,QACzD4j8B,EAAe1h8B,SAAW0h8B,EAAe1h8B,QAAQkkH,EAAI1lH,MAG/B,WAAlBu8K,GACF,EAAK2mxB,EAAe30H,aAAa,SAAU80I,GACzCA,EAAYhi9B,UAAUqkH,EAAIpmH,QAC1B+j9B,EAAY7h9B,QAAQkkH,EAAI1lH,KAC1B,GAXF,CAaF,GACF,GACF,CC/BO,SAASusxB,GAAU7iuB,EAAM+jiC,GAC9B,IAAIptlC,EAAWqpD,EAAKgkiC,SAAWhkiC,EAAKrpD,SAAW,GAC3Cq5e,EAAWhwb,EAAK3nD,WAAW1B,SAC3BstlC,EAAWjkiC,EAAKkkiC,SAAS3snC,EAAIy4gB,EAAShwb,EAAKkkiC,SAAS3snC,EAAI,GAAK,KAEjE,GAAIo/B,EAAS3/B,OAAQ,EAkEvB,SAAuBgpF,GAMrB,IALA,IAAIrpD,EAAWqpD,EAAKrpD,SAChB3gC,EAAI2gC,EAAS3/B,OACb89C,EAAQ,EACRs8b,EAAS,IAEJp7e,GAAK,GAAG,CACf,IAAI6qF,EAAQlqD,EAAS3gC,GACrB6qF,EAAMqjiC,SAAShjU,QAAUpswB,EACzB+rC,EAAMqjiC,SAASl9gC,UAAYlyD,EAC3Bs8b,GAAUvwZ,EAAMqjiC,SAAS9yoB,OACzBt8b,GAAS+rC,EAAMqjiC,SAASpvkC,MAAQs8b,CAClC,CACF,CA9EIgxU,CAAcpiuB,GACd,IAAIk20B,GAAYv/3B,EAAS,GAAGutlC,SAAShjU,OAASvqxB,EAASA,EAAS3/B,OAAS,GAAGktnC,SAAShjU,QAAU,EAE3F+iU,GACFjkiC,EAAKkkiC,SAAShjU,OAAS+iU,EAASC,SAAShjU,OAAS6iU,EAAW/jiC,EAAMikiC,GACnEjkiC,EAAKkkiC,SAASl9gC,SAAWhnB,EAAKkkiC,SAAShjU,OAASg1G,GAEhDl20B,EAAKkkiC,SAAShjU,OAASg1G,CAE3B,MAAW+tN,IACTjkiC,EAAKkkiC,SAAShjU,OAAS+iU,EAASC,SAAShjU,OAAS6iU,EAAW/jiC,EAAMikiC,IAGrEjkiC,EAAK3nD,WAAW6rlC,SAAS/hU,gBAkF3B,SAAmBgiU,EAAUF,EAAUnuqB,EAAUiuqB,GAC/C,GAAIE,EAAU,CAUZ,IATA,IAAIG,EAAeD,EACfE,EAAcF,EACdG,EAAcD,EAAYhslC,WAAW1B,SAAS,GAC9C4tlC,EAAaN,EACbO,EAAcJ,EAAaF,SAASl9gC,SACpCy9gC,EAAaJ,EAAYH,SAASl9gC,SAClC09gC,EAAaJ,EAAYJ,SAASl9gC,SAClC29gC,EAAYJ,EAAWL,SAASl9gC,SAE7Bu9gC,EAAahjU,GAAUgjU,GAAaF,EAAchjU,GAASgjU,GAAcE,GAAcF,GAAa,CACzGD,EAAe7iU,GAAU6iU,GACzBE,EAAcjjU,GAASijU,GACvBF,EAAaF,SAASpuqB,SAAWquqB,EACjC,IAAIrvkC,EAAQyvkC,EAAWL,SAAShjU,OAASyjU,EAAYN,EAAYH,SAAShjU,OAASujU,EAAaV,EAAWQ,EAAYF,GAEnHvvkC,EAAQ,IACVitwB,GAAY6iU,GAAaL,EAAYJ,EAAUruqB,GAAWquqB,EAAUrvkC,GACpE2vkC,GAAc3vkC,EACd0vkC,GAAe1vkC,GAGjB6vkC,GAAaJ,EAAWL,SAASl9gC,SACjCy9gC,GAAcJ,EAAYH,SAASl9gC,SACnCw9gC,GAAeJ,EAAaF,SAASl9gC,SACrC09gC,GAAcJ,EAAYJ,SAASl9gC,QACrC,CAEIu9gC,IAAehjU,GAAU6iU,KAC3BA,EAAaF,SAAS5iU,OAASijU,EAC/BH,EAAaF,SAASl9gC,UAAY29gC,EAAYH,GAG5CH,IAAgBhjU,GAASijU,KAC3BA,EAAYJ,SAAS5iU,OAAS+iU,EAC9BC,EAAYJ,SAASl9gC,UAAYy9gC,EAAaC,EAC9C5uqB,EAAWquqB,EAEf,CAEA,OAAOruqB,CACT,CA5H6CusW,CAAUriuB,EAAMikiC,EAAUjkiC,EAAK3nD,WAAW6rlC,SAAS/hU,iBAAmBnyS,EAAS,GAAI+zmB,EAChI,CAUO,SAAS9gU,GAAWjjuB,GACzB,IAAI6kiC,EAAQ7kiC,EAAKkkiC,SAAShjU,OAASlhuB,EAAK3nD,WAAW6rlC,SAASl9gC,SAC5DhnB,EAAKq/9B,UAAU,CACbzkjC,EAAGiqnC,IACF,GACH7kiC,EAAKkkiC,SAASl9gC,UAAYhnB,EAAK3nD,WAAW6rlC,SAASl9gC,QACrD,CACO,SAAS,GAAW3uC,GACzB,OAAOthE,UAAUC,OAASqhE,EAAKysjC,EACjC,CAKO,SAASC,GAAiBzwxB,EAAK59V,GAEpC,OADA49V,GAAO96V,KAAKsmC,GAAK,EACV,CACLllC,EAAGlE,EAAI8C,KAAKuxH,IAAIupO,GAChB36V,EAAGjD,EAAI8C,KAAK4wH,IAAIkqO,GAEpB,CAqGA,SAASitd,GAAUvhuB,GACjB,IAAIrpD,EAAWqpD,EAAKrpD,SACpB,OAAOA,EAAS3/B,QAAUgpF,EAAKgkiC,SAAWrtlC,EAASA,EAAS3/B,OAAS,GAAKgpF,EAAKkkiC,SAAS5iU,MAC1F,CAQA,SAASD,GAASrhuB,GAChB,IAAIrpD,EAAWqpD,EAAKrpD,SACpB,OAAOA,EAAS3/B,QAAUgpF,EAAKgkiC,SAAWrtlC,EAAS,GAAKqpD,EAAKkkiC,SAAS5iU,MACxE,CAOA,SAASsjU,GAAaL,EAAYvkiC,EAAM81X,GACtC,OAAOyuqB,EAAWL,SAASpuqB,SAASz9a,aAAe2nD,EAAK3nD,WAAakslC,EAAWL,SAASpuqB,SAAWA,CACtG,CAYA,SAASisW,GAAYijU,EAAIl4mC,EAAIgoC,GAC3B,IAAIs8b,EAASt8b,GAAShoC,EAAGo3mC,SAAS3snC,EAAIytnC,EAAGd,SAAS3snC,GAClDuV,EAAGo3mC,SAAS9yoB,QAAUA,EACtBtke,EAAGo3mC,SAASpvkC,OAASA,EACrBhoC,EAAGo3mC,SAASl9gC,UAAYlyD,EACxBhoC,EAAGo3mC,SAAShjU,QAAUpswB,EACtBkwkC,EAAGd,SAAS9yoB,QAAUA,CACxB,CASA,SAAS0zoB,GAAkBG,EAAOC,GAChC,OAAOD,EAAM5slC,aAAe6slC,EAAM7slC,WAAa,EAAI,CACrD,CCrQA,IAAI8slC,GAGF,WACExunC,KAAKyunC,YAAc,GACnBzunC,KAAK0unC,YAAc,EACrB,EAKEC,GAEJ,SAAUjmwB,GAGR,SAASimwB,EAAStykC,GAChB,OAAOqsU,EAAO9oX,KAAKI,KAAMq8C,IAASr8C,IACpC,CAkDA,OAtDA4sa,EAAU+htB,EAAUjmwB,GAMpBimwB,EAASjvnC,UAAUm0+B,gBAAkB,WACnC,MAAO,CACLz2N,OAAQ,OACRhgpB,KAAM,KAEV,EAEAux/B,EAASjvnC,UAAUk0+B,gBAAkB,WACnC,OAAO,IAAI46I,EACb,EAEAG,EAASjvnC,UAAUg0+B,UAAY,SAAUp8vB,EAAKhV,GAC5C,IAAIos5B,EAAcps5B,EAAMos5B,YACpBE,EAAWF,EAAYrunC,OACvBounC,EAAcns5B,EAAMms5B,YACpBI,EAAgBH,EAAY,GAC5BI,EAAeJ,EAAYE,EAAW,GAE1C,GAAiB,IAAbA,EAGF,OAFAt34B,EAAIyvhB,OAAO0nX,EAAY,GAAIA,EAAY,SACvCn34B,EAAI0vhB,OAAO6nX,EAAc,GAAIA,EAAc,IAI7C,IAAIr7H,EAASlxxB,EAAMkxxB,OACfu7H,EAAqB,OAAXv7H,GAA8B,OAAXA,EAAkB,EAAI,EACnDrd,EAAW,EAAI44I,EACfC,EAAe,GAAa1s5B,EAAM0s5B,aAAc,GAChDC,EAAW,GACfA,EAASF,GAAWN,EAAYM,GAChCE,EAAS94I,GAAYs4I,EAAYt4I,IAAa24I,EAAa34I,GAAYs4I,EAAYt4I,IAAa64I,EAChG134B,EAAIyvhB,OAAO0nX,EAAY,GAAIA,EAAY,IACvCn34B,EAAI0vhB,OAAOioX,EAAS,GAAIA,EAAS,IACjC334B,EAAIyvhB,OAAO8nX,EAAc,GAAIA,EAAc,IAC3CI,EAASF,GAAWF,EAAcE,GAClCz34B,EAAI0vhB,OAAOioX,EAAS,GAAIA,EAAS,IACjCA,EAASF,GAAWD,EAAaC,GACjCz34B,EAAI0vhB,OAAOioX,EAAS,GAAIA,EAAS,IACjC334B,EAAI0vhB,OAAO8nX,EAAa,GAAIA,EAAa,IAEzC,IAAK,IAAIlunC,EAAI,EAAGA,EAAIgunC,EAAW,EAAGhunC,IAAK,CACrC,IAAIu0I,EAAQu5+B,EAAY9tnC,GACxB02O,EAAIyvhB,OAAO5xnB,EAAM,GAAIA,EAAM,IAC3B85+B,EAASF,GAAW55+B,EAAM45+B,GAC1Bz34B,EAAI0vhB,OAAOioX,EAAS,GAAIA,EAAS,GACnC,CACF,EAEON,CACT,CAxDA,CAwDE,IAEEO,GAEJ,SAAUxmwB,GAGR,SAASwmwB,IACP,IAAIxikC,EAAmB,OAAXg8T,GAAmBA,EAAOnoX,MAAMP,KAAMI,YAAcJ,KAIhE,OAFA0sD,EAAMngD,KAAO2inC,EAAS3inC,KACtBmgD,EAAMyikC,WAAa,IAAI,GAChBzikC,CACT,CAkMA,OA1MAkgX,EAAUsitB,EAAUxmwB,GAUpBwmwB,EAASxvnC,UAAUgxD,KAAO,SAAU4y6B,EAASr07B,GAC3CjvC,KAAKqinC,YAAc,IAAI,GAAepzkC,EAAIk9/B,SAC1CnsiC,KAAKsinC,gBAAkB,CACrBxymC,OAAQ9P,KAAKo7T,OAEfp7T,KAAKo7T,MAAMj2S,IAAInlB,KAAKmvnC,WACtB,EAEAD,EAASxvnC,UAAU4uH,OAAS,SAAU003B,EAAa1f,EAASr07B,GAC1D,IAAIz/B,EAAOwz+B,EAAYx+2B,UACnB4q/B,EAAapsI,EAAYosI,WACzBh0zB,EAAQp7T,KAAKmvnC,WAGF,WAFFnsI,EAAY7/+B,IAAI,WAG3Bi4T,EAAMn3T,EAAImrnC,EAAWnrnC,EAAImrnC,EAAWrwlC,MAAQ,EAC5Cq8R,EAAMp4T,EAAIosnC,EAAWpsnC,EAAIosnC,EAAWpwlC,OAAS,IAE7Co8R,EAAMn3T,EAAImrnC,EAAWnrnC,EACrBm3T,EAAMp4T,EAAIosnC,EAAWpsnC,GAGvBhD,KAAKqvnC,oBAAoBrsI,EAAa/z8B,GAEtCjvC,KAAK6xI,kBAAkBmx2B,EAAa1f,EAASr07B,GAE7C,IAAI2jhB,EAAU5yjB,KAAKykJ,MACnBj1I,EAAK+4hB,KAAKqqB,GAASztiB,KAAI,SAAUg7hC,GAC3B,GAAgB3wiC,EAAM2wiC,IAExBmvE,GAAW9/mC,EAAM2wiC,EAAQ,KAAM/kvB,EAAO4nrB,EAE1C,IAAGz06B,QAAO,SAAU4x+B,EAAQ4nC,GAC1B,IAAID,EAAWl1hB,EAAQ8vb,iBAAiBqlG,GAEnC,GAAgBv4kC,EAAM2wiC,GAM3BmvE,GAAW9/mC,EAAM2wiC,EAAQ2nC,EAAU1sxB,EAAO4nrB,GALxC8kG,GAAYhjvB,GAAW8tN,EAASm1hB,EAAQD,EAAU1sxB,EAAO4nrB,EAM7D,IAAGnw9B,QAAO,SAAUk1jC,GAClB,IAAID,EAAWl1hB,EAAQ8vb,iBAAiBqlG,GAMpCD,GACFhjvB,GAAW8tN,EAASm1hB,EAAQD,EAAU1sxB,EAAO4nrB,EAEjD,IAAGjhmB,UACH/hZ,KAAKuvnC,gBAAkBvsI,EAAY7/+B,IAAI,kBAEvCnD,KAAKwvnC,wBAAwBxsI,IAEgB,IAAzCA,EAAY7/+B,IAAI,sBAClBqM,EAAKq0+B,mBAAkB,SAAUhq2B,EAAIwrB,GACnCxrB,EAAG7rG,IAAI,SAASp9B,GAAG,SAAS,WAC1Bq+B,EAAIu1/B,eAAe,CACjBj4hC,KAAM,wBACNwwwB,SAAUimO,EAAYz39B,GACtB85I,UAAWA,GAEf,GACF,IAGFrlK,KAAKykJ,MAAQj1I,CACf,EAEA0/mC,EAASxvnC,UAAU2vnC,oBAAsB,SAAUrsI,EAAa/z8B,GAC9D,IAAIz/B,EAAOwz+B,EAAYx+2B,UACnBl5F,EAAS,GACb97B,EAAKwywB,MAAK,SAAUlna,GAClB,IAAI55O,EAAS1xH,EAAKo5iC,cAAc9tsB,IAE5B55O,GAAW50F,MAAM40F,EAAOj9H,IAAOqoC,MAAM40F,EAAOl+H,IAC9CsoC,EAAOzpC,KAAK,EAAEq/H,EAAOj9H,GAAIi9H,EAAOl+H,GAEpC,IACA,IAAI6K,EAAM,GACNF,EAAM,GACV,GAAgB29B,EAAQz9B,EAAKF,GAG7B,IAAI8hnC,EAASzvnC,KAAKw8zB,KACdkzT,EAAS1vnC,KAAK0wyB,KAEd/iyB,EAAI,GAAKE,EAAI,IAAO,IACtBA,EAAI,GAAK4hnC,EAASA,EAAO,GAAK5hnC,EAAI,GAAK,EACvCF,EAAI,GAAK+hnC,EAASA,EAAO,GAAK/hnC,EAAI,GAAK,GAGrCA,EAAI,GAAKE,EAAI,IAAO,IACtBA,EAAI,GAAK4hnC,EAASA,EAAO,GAAK5hnC,EAAI,GAAK,EACvCF,EAAI,GAAK+hnC,EAASA,EAAO,GAAK/hnC,EAAI,GAAK,GAGzC,IAAIginC,EAAe3sI,EAAYjx3B,iBAAmB,IAAI,GACtD49/B,EAAapW,UAAYv2H,EAAY7/+B,IAAI,cACzCwsnC,EAAah6I,gBAAgB9n+B,EAAI,GAAIA,EAAI,GAAIF,EAAI,GAAKE,EAAI,GAAIF,EAAI,GAAKE,EAAI,IAC3E8hnC,EAAa3ulC,UAAUgi9B,EAAY7/+B,IAAI,UAAW8rC,GAClD0glC,EAAaxulC,QAAQ6h9B,EAAY7/+B,IAAI,SAErCnD,KAAKo7T,MAAM6yN,KAAK,CACdhqhB,EAAG0rnC,EAAa1rnC,EAChBjB,EAAG2snC,EAAa3snC,EAChB41H,OAAQ+2/B,EAAa/2/B,OACrBC,OAAQ82/B,EAAa92/B,SAEvB74H,KAAKw8zB,KAAO3uzB,EACZ7N,KAAK0wyB,KAAO/iyB,CACd,EAEAuhnC,EAASxvnC,UAAUmyI,kBAAoB,SAAUmx2B,EAAa1f,EAASr07B,GACrE,IAAIyd,EAAQ1sD,KAERuwI,EAAavwI,KAAKqinC,YAClBjJ,EAAiBp5mC,KAAKsinC,gBACtBlnzB,EAAQp7T,KAAKo7T,MACjB7qL,EAAWgo+B,mBAAkB,SAAUp5mC,EAAG8E,EAAGjB,GAC3C,IAAI0wF,EAAO0nO,EAAMj3E,kBAEjB,OADAzwJ,EAAKo42B,eAAe1woB,EAAMx4L,WACnBlvC,EAAKkg3B,QAAQ3v8B,EAAGjB,KAAO62mC,GAAoB16mC,EAAG8vC,EAAK+z8B,EAC5D,IACAzy2B,EAAWvtH,OAAOgg+B,EAAY7/+B,IAAI,SAClCi2mC,EAAeG,UAAYv2H,EAAY7/+B,IAAI,cAC3Ci2mC,EAAez5kC,KAAOqj9B,EAAYjx3B,iBAAiB1xF,UACnDkwG,EAAWviG,IAAI,OAAOA,IAAI,QAAQp9B,GAAG,OAAO,SAAUzR,GACpD,GAA2Bi6mC,EAAgBj6mC,EAAEq1I,GAAIr1I,EAAEk1I,IACnDplG,EAAIu1/B,eAAe,CACjBznR,SAAUimO,EAAYz39B,GACtBhf,KAAM,WACNioI,GAAIr1I,EAAEq1I,GACNH,GAAIl1I,EAAEk1I,IAEV,IAAGzjI,GAAG,QAAQ,SAAUzR,GACtB,GAA4Bi6mC,EAAgBj6mC,EAAE2iG,MAAO3iG,EAAEwtL,QAASxtL,EAAEytL,SAClE39I,EAAIu1/B,eAAe,CACjBznR,SAAUimO,EAAYz39B,GACtBhf,KAAM,WACNozB,KAAMxgC,EAAE2iG,MACR6qF,QAASxtL,EAAEwtL,QACXC,QAASztL,EAAEytL,UAGblgI,EAAM8ikC,wBAAwBxsI,GAG9B/z8B,EAAI2mgC,mBACN,GACF,EAEAs5E,EAASxvnC,UAAU8vnC,wBAA0B,SAAUxsI,GACrD,IAAIxz+B,EAAOwz+B,EAAYx+2B,UAEnBor/B,EAAY5vnC,KAAK6vnC,oBAAoB7sI,GAEzCxz+B,EAAKq0+B,mBAAkB,SAAUhq2B,EAAIihO,GACnCjhO,EAAGkt8B,eAAe6oC,EACpB,GACF,EAEAV,EAASxvnC,UAAUmwnC,oBAAsB,SAAU7sI,GACjD,IAAIE,EAAWF,EAAYjx3B,iBAE3B,GAAsB,SAAlBmx3B,EAAS32+B,KACX,OAAO,EAGT,IAAIujnC,EAAiB9vnC,KAAKuvnC,gBACtBQ,EAAY7sI,EAAStq3B,QAAU,EAInC,QAFesq3B,EAAS7i9B,UACI,GAAKyvlC,EAAiB,GAC/BC,CACrB,EAEAb,EAASxvnC,UAAU2l8B,QAAU,WAC3Brl8B,KAAKqinC,aAAerinC,KAAKqinC,YAAYh9K,UACrCrl8B,KAAKsinC,gBAAkB,IACzB,EAEA4M,EAASxvnC,UAAUmzB,OAAS,WAC1B7yB,KAAKmvnC,WAAWth4B,YAEhB7tP,KAAKykJ,MAAQ,IACf,EAEAyq+B,EAAS3inC,KAAO,OACT2inC,CACT,CA5MA,CA4MElsU,IAEF,SAAS,GAAgBxzyB,EAAM61J,GAC7B,IAAInkC,EAAS1xH,EAAKo5iC,cAAcvj5B,GAChC,OAAOnkC,IAAW50F,MAAM40F,EAAOj9H,KAAOqoC,MAAM40F,EAAOl+H,EACrD,CAEA,SAASssnC,GAAW9/mC,EAAM61J,EAAWyi7B,EAAU1sxB,EAAO4nrB,GACpD,IAAIyS,GAAUqyF,EACVz+/B,EAAO75E,EAAKuqZ,KAAKi2tB,mBAAmB3q9B,GACpCq/0B,EAAYr75B,EAAKuuG,WACjB2u5B,EAAcl9/B,EAAKyy8B,UAAU,SAAS1+5B,KACtCqp9B,GAAqC,IAAlBp9/B,EAAKgkiC,UAA+C,IAAzBhkiC,EAAKrpD,SAAS3/B,OAAekmlC,EAAc,OACzF0pC,EAAczgnC,EAAKuqZ,KAAK5pQ,KACxBtoJ,EAASwhF,EAAK3nD,aAAeuulC,EAAc5miC,EAAOA,EAAK3nD,YAAc2nD,EACrE6miC,EAAiB1gnC,EAAKkz+B,iBAAiB76+B,EAAOw9J,WAC9C8q9B,EAAetonC,EAAO8gjC,YACtBynE,EAAkBF,EAAiB,CACrCjsnC,EAAGisnC,EAAeG,OAClBrtnC,EAAGktnC,EAAeI,OAClBC,KAAML,EAAeM,gBACrBC,KAAMP,EAAeQ,iBACnBP,EACAQ,EAAetniC,EAAKs/9B,YAEpBlzD,IACFqyF,EAAW,IAAI,GAAUt4kC,EAAM61J,EAAW,KAAM,CAC9Coh7B,iBAAkBA,EAClBI,cAAc,KAEP5ilC,EAAImsnC,EAAgBnsnC,EAC7B6jlC,EAAS9klC,EAAIotnC,EAAgBptnC,GAE7B8klC,EAASn1hB,WAAWnjjB,EAAM61J,EAAW,KAAM,CACzCoh7B,iBAAkBA,EAClBI,cAAc,IAIlBiB,EAAS0oC,gBAAkB1oC,EAAS8oC,aACpC9oC,EAAS4oC,gBAAkB5oC,EAAS+oC,aACpC/oC,EAAS8oC,aAAeD,EAAaJ,KACrCzoC,EAAS+oC,aAAeF,EAAaF,KACrCr1zB,EAAMj2S,IAAI2ikC,GACVt4kC,EAAKu5iC,iBAAiB1j5B,EAAWyi7B,GACjCA,EAASuoC,OAASvoC,EAAS7jlC,EAC3B6jlC,EAASwoC,OAASxoC,EAAS9klC,EAC3B,GAAoB8klC,EAAU,CAC5B7jlC,EAAG0snC,EAAa1snC,EAChBjB,EAAG2tnC,EAAa3tnC,GACfgg/B,GACH,IAAIwjD,EAAashD,EAASrC,gBAE1B,GAAkC,WAA9BziG,EAAY7/+B,IAAI,UAAwB,CAC1C,IAAI2tnC,EAAWb,EAAYjwlC,SAAS,GAChC+wlC,EAAaD,EAASnoE,YACtBp8pB,EAAWukuB,EAAS9wlC,SAAS3/B,OAC7Bs9V,OAAM,EACNkqM,OAAS,EAEb,GAAI8olB,EAAa1snC,IAAM8snC,EAAW9snC,IAAuB,IAAlBolF,EAAKgkiC,UAAqByD,EAAS9wlC,SAAS3/B,OAAQ,CACzF,IAAI4+B,EAAS,CACXh7B,GAAI6snC,EAAS9wlC,SAAS,GAAG2ohC,YAAY1kjC,EAAI6snC,EAAS9wlC,SAASusX,EAAW,GAAGo8pB,YAAY1kjC,GAAK,EAC1FjB,GAAI8tnC,EAAS9wlC,SAAS,GAAG2ohC,YAAY3ljC,EAAI8tnC,EAAS9wlC,SAASusX,EAAW,GAAGo8pB,YAAY3ljC,GAAK,IAE5F26V,EAAM96V,KAAK0xH,MAAMt1F,EAAOj8B,EAAI+tnC,EAAW/tnC,EAAGi8B,EAAOh7B,EAAI8snC,EAAW9snC,IAEtD,IACR05V,EAAgB,EAAV96V,KAAKsmC,GAASw0T,IAGtBkqM,EAAS5ogB,EAAOh7B,EAAI8snC,EAAW9snC,KAG7B05V,GAAY96V,KAAKsmC,GAErB,MACEw0T,EAAM96V,KAAK0xH,MAAMo8/B,EAAa3tnC,EAAI+tnC,EAAW/tnC,EAAG2tnC,EAAa1snC,EAAI8snC,EAAW9snC,IAElE,IACR05V,EAAgB,EAAV96V,KAAKsmC,GAASw0T,GAGO,IAAzBt0Q,EAAKrpD,SAAS3/B,QAAyC,IAAzBgpF,EAAKrpD,SAAS3/B,SAAkC,IAAlBgpF,EAAKgkiC,UACnExllB,EAAS8olB,EAAa1snC,EAAI8snC,EAAW9snC,KAGnC05V,GAAY96V,KAAKsmC,KAGnB0+f,EAAS8olB,EAAa1snC,EAAI8snC,EAAW9snC,KAGnC05V,GAAY96V,KAAKsmC,IAKvB,IAAI4o7B,EAAelqb,EAAS,OAAS,QACjCkjd,EAAmBrG,EAAU9szB,SAAS,SACtCnyE,EAASsl4B,EAAiB5n/B,IAAI,UAC9B6tnC,EAAoBvrgC,GAAU5iH,KAAKsmC,GAAK,KACxC6jD,EAAcw58B,EAAW758B,iBAEzBK,IACFw58B,EAAW9xE,cAAc,CACvB/17B,SAAUos9B,EAAiB5n/B,IAAI,aAAe4u9B,EAC9Cxr2B,SAAoB,MAAVd,GAAkBk4O,EAAMqzxB,EAClCh2lC,OAAQ,WAEVgyD,EAAYs3U,SAAS,gBAAiB,UAE1C,CAGA,IAAIxzD,EAAQ4zoB,EAAUvh/B,IAAI,CAAC,WAAY,UACnC8tnC,EAA6B,aAAVngxB,EAAuB,GAAmBznR,EAAK6niC,sBAAuB7niC,EAAK8niC,wBAAoC,aAAVrgxB,EAAuBznR,EAAK6niC,sBAAkC,eAAVpgxB,EAAyBznR,EAAK8niC,uBAAyB,KAEnOF,IAEFj0I,GAAU8qG,GAAUh3uB,MAAQmgxB,GAqBhC,SAAkBjuI,EAAa355B,EAAM4miC,EAAanoC,EAAUsoC,EAAiBD,EAAcQ,EAAcv1zB,GACvG,IAAIsprB,EAAYr75B,EAAKuuG,WACjBw57B,EAAYpuI,EAAY7/+B,IAAI,aAC5B+9H,EAAS8h3B,EAAY7/+B,IAAI,UACzBqw/B,EAASxQ,EAAYquI,YACrBC,EAAYtuI,EAAY7/+B,IAAI,CAAC,YAAa,cAC1CounC,EAAmBvuI,EAAY7/+B,IAAI,oBACnCgvuB,EAAYuyQ,EAAU9szB,SAAS,aAAag0zB,eAC5C/jpB,EAAOigvB,EAAS0pC,OAGpB,GAAkB,UAAdJ,EACE/niC,EAAK3nD,YAAc2nD,EAAK3nD,aAAeuulC,IACpCpoxB,IACHA,EAAOigvB,EAAS0pC,OAAS,IAAI,GAAoB,CAC/Clv5B,MAAOmv5B,GAAavw/B,EAAQsy3B,EAAQ89H,EAAWlB,EAAiBA,MAIpE,GAAoBvoxB,EAAM,CACxBvlI,MAAOmv5B,GAAavw/B,EAAQsy3B,EAAQ89H,EAAWnB,EAAcQ,IAC5D3tI,SAEA,GAAkB,aAAdouI,GACM,eAAXlw/B,GACE73C,IAAS4miC,GAAe5miC,EAAKrpD,UAAqC,IAAzBqpD,EAAKrpD,SAAS3/B,SAAkC,IAAlBgpF,EAAKgkiC,SAAmB,CAIjG,IAHA,IAAIrtlC,EAAWqpD,EAAKrpD,SAChB0ulC,EAAc,GAET9tnC,EAAI,EAAGA,EAAIo/B,EAAS3/B,OAAQO,IAAK,CACxC,IAAI8wnC,EAAc1xlC,EAASp/B,GAAG+njC,YAC9B+lE,EAAY7snC,KAAK,CAAC6vnC,EAAYztnC,EAAGytnC,EAAY1unC,GAC/C,CAEK6kW,IACHA,EAAOigvB,EAAS0pC,OAAS,IAAI7C,GAAS,CACpCrs5B,MAAO,CACLms5B,YAAa,CAACkC,EAAa1snC,EAAG0snC,EAAa3tnC,GAC3C0rnC,YAAa,CAAC,CAACiC,EAAa1snC,EAAG0snC,EAAa3tnC,IAC5Cww/B,OAAQA,EACRw7H,aAAcuC,MAKpB,GAAoB1pxB,EAAM,CACxBvlI,MAAO,CACLms5B,YAAa,CAACkC,EAAa1snC,EAAG0snC,EAAa3tnC,GAC3C0rnC,YAAaA,IAEd1rI,EACL,CASAn7oB,IAAwB,aAAdupxB,GAA6B/niC,EAAKgkiC,YAC9CxlxB,EAAKuiD,SAAS,EAAgB,CAC5B+olB,eAAe,EACf/12B,KAAM,MACL+0mB,IACHsyQ,GAAyB58oB,EAAM68oB,EAAW,aAC1C5D,GAAqBj5oB,GACrBzsC,EAAMj2S,IAAI0iV,GAEd,CAvFE8pxB,CAAS3uI,EAAa355B,EAAM4miC,EAAanoC,EAAUsoC,EAAiBD,EAAcQ,EAAcv1zB,GAE5F0sxB,EAAS0pC,SACX1pC,EAASlpG,mBAAqB,SAAU7pB,GACtC,GAAgB,SAAZA,EAAoB,CAItB,IAAI/tb,EAAW39c,EAAK3nD,YAAclyB,EAAKkz+B,iBAAiBr55B,EAAK3nD,WAAW2jI,WAElE2hY,GAAYA,EAAS63c,aAAenB,IACxC8B,GAAcsoG,EAAS0pC,OAAQz8J,EAEnC,CACF,EAEJ,CAyEA,SAAS68J,GAAevoiC,EAAM75E,EAAM4rT,EAAO4nrB,EAAa6uI,GACtD,IAEIl7lC,EAAKm7lC,GAFStinC,EAAKuqZ,KAAK5pQ,KAEQ9mE,GAChCxhF,EAAS8uB,EAAG9uB,OACZsonC,EAAex5lC,EAAGw5lC,aAElBroC,EAAWt4kC,EAAKkz+B,iBAAiBr55B,EAAKg8E,WAE1C,GAAKyi7B,EAAL,CAIA,IACIiqC,EADiBvinC,EAAKkz+B,iBAAiB76+B,EAAOw9J,WAClBms9B,OAK5B3pxB,EAAOigvB,EAAS0pC,UAA+B,IAApB3pnC,EAAOwlnC,UAAiD,IAA3BxlnC,EAAOm4B,SAAS3/B,OAAe0xnC,OAAahklC,GACpGqjlC,EAAYpuI,EAAY7/+B,IAAI,aAC5B6unC,EAAYhvI,EAAY7/+B,IAAI,UAC5Bqw/B,EAASxQ,EAAY7/+B,IAAI,UACzBmunC,EAAYtuI,EAAY7/+B,IAAI,CAAC,YAAa,cAE1C0kW,IACgB,UAAdupxB,EACF,GAAsBvpxB,EAAM,CAC1BvlI,MAAOmv5B,GAAaO,EAAWx+H,EAAQ89H,EAAWnB,EAAcA,GAChE97mC,MAAO,CACLu3H,QAAS,IAEVo32B,EAAa,CACdth7B,GAAI,WACF05P,EAAMvoS,OAAOg1U,EACf,EACAm+oB,UAAW6rI,IAEU,aAAdT,GAA0D,eAA9BpuI,EAAY7/+B,IAAI,WACrD,GAAsB0kW,EAAM,CAC1BvlI,MAAO,CACLms5B,YAAa,CAAC0B,EAAalsnC,EAAGksnC,EAAantnC,GAC3C0rnC,YAAa,CAAC,CAACyB,EAAalsnC,EAAGksnC,EAAantnC,KAE9CqR,MAAO,CACLu3H,QAAS,IAEVo32B,EAAa,CACdth7B,GAAI,WACF05P,EAAMvoS,OAAOg1U,EACf,EACAm+oB,UAAW6rI,IAxCjB,CA4CF,CAEA,SAASC,GAAc7B,EAAa5miC,GAIlC,IAHA,IACI8miC,EADAtonC,EAASwhF,EAAK3nD,aAAeuulC,EAAc5miC,EAAOA,EAAK3nD,YAAc2nD,EAGf,OAAnD8miC,EAAetonC,EAAO8gjC,cAC3B9gjC,EAASA,EAAO65B,aAAeuulC,EAAcponC,EAASA,EAAO65B,YAAc75B,EAG7E,MAAO,CACLA,OAAQA,EACRsonC,aAAcA,EAElB,CAEA,SAASrrxB,GAAWt1V,EAAM61J,EAAWyi7B,EAAU1sxB,EAAO4nrB,GACpD,IAAI355B,EAAO75E,EAAKuqZ,KAAKi2tB,mBAAmB3q9B,GAEpC8q9B,EAAe2B,GADDtinC,EAAKuqZ,KAAK5pQ,KACkB9mE,GAAM8miC,aAEhD0B,EAAqB,CACvBxskC,SAAU297B,EAAY7/+B,IAAI,2BAC1B0nH,OAAQm43B,EAAY7/+B,IAAI,0BAE1B,GAAsB2klC,EAAU,CAC9B7jlC,EAAGksnC,EAAalsnC,EAAI,EACpBjB,EAAGmtnC,EAAantnC,EAAI,GACnBgg/B,EAAa,CACdth7B,GAAI,WACF05P,EAAMvoS,OAAOi1jC,GACbt4kC,EAAKu5iC,iBAAiB1j5B,EAAW,KACnC,EACA2g1B,UAAW6rI,IAEb/pC,EAASd,QAAQ,KAAMx3kC,EAAKy0iC,UAAW,CACrCijC,WAAW,EACXn31B,UAAW8h4B,IAGbxoiC,EAAKrpD,SAAS9a,SAAQ,SAAUu2gB,GAC9Bm2lB,GAAen2lB,EAAWjshB,EAAM4rT,EAAO4nrB,EAAa6uI,EACtD,IAEAD,GAAevoiC,EAAM75E,EAAM4rT,EAAO4nrB,EAAa6uI,EACjD,CAEA,SAASJ,GAAaO,EAAWx+H,EAAQ89H,EAAWnB,EAAcQ,GAChE,IAAIj+F,EACAC,EACAG,EACAC,EACAnruB,EACA9qH,EACApL,EACAj6D,EAEJ,GAAkB,WAAdu6/B,EAAwB,CAC1Bpq0B,EAAKuo0B,EAAaI,KAClB7+7B,EAAKy+7B,EAAaM,KAClB3z7B,EAAK6z7B,EAAaJ,KAClB94/B,EAAKk5/B,EAAaF,KAClB,IAAIwB,EAAc7D,GAAiBxm0B,EAAIl2H,GACnCwg8B,EAAc9D,GAAiBxm0B,EAAIl2H,GAAMj6D,EAAKi6D,GAAM4/7B,GACpDa,EAAc/D,GAAiBtx7B,EAAIrlE,GAAMi6D,EAAKj6D,GAAM65/B,GACpDc,EAAchE,GAAiBtx7B,EAAIrlE,GACvC,MAAO,CACLmwL,GAAIqq0B,EAAYhunC,GAAK,EACrBytL,GAAIug8B,EAAYjvnC,GAAK,EACrB85L,GAAIs17B,EAAYnunC,GAAK,EACrBwzH,GAAI26/B,EAAYpvnC,GAAK,EACrB0vhC,KAAMw/F,EAAYjunC,GAAK,EACvB0uhC,KAAMu/F,EAAYlvnC,GAAK,EACvB8vhC,KAAMq/F,EAAYlunC,GAAK,EACvB8uhC,KAAMo/F,EAAYnvnC,GAAK,EAE3B,CAqBA,OApBE4kT,EAAKuo0B,EAAalsnC,EAClBytL,EAAKy+7B,EAAantnC,EAClB85L,EAAK6z7B,EAAa1snC,EAClBwzH,EAAKk5/B,EAAa3tnC,EAEH,OAAXww/B,GAA8B,OAAXA,IACrBk/B,EAAO9quB,GAAM9qH,EAAK8qH,GAAM0p0B,EACxB3+F,EAAOjh2B,EACPoh2B,EAAOh21B,GAAM8qH,EAAK9qH,GAAMw07B,EACxBv+F,EAAOt75B,GAGM,OAAX+73B,GAA8B,OAAXA,IACrBk/B,EAAO9quB,EACP+quB,EAAOjh2B,GAAMj6D,EAAKi6D,GAAM4/7B,EACxBx+F,EAAOh21B,EACPi21B,EAAOt75B,GAAMi6D,EAAKj6D,GAAM65/B,GAIrB,CACL1p0B,GAAIA,EACJl2H,GAAIA,EACJoL,GAAIA,EACJrlE,GAAIA,EACJi75B,KAAMA,EACNC,KAAMA,EACNG,KAAMA,EACNC,KAAMA,EAEV,CAEA,YCvpBA,IAAI,GAAQ7vD,KAkCZ,SAASmvJ,GAAkBjylB,EAAK/6Y,GAC9B,GA0DO,GA1DQrlJ,MA0DI6ohC,WA1DJ7ohC,KAAO,CAEpB,IAAI0onC,EAAQr/tB,EAAO,CAAC,EAAG,GAAMrpZ,MAAM0onC,OACnCA,EAAM1onC,KAAKgvQ,UAAY3pH,EACvBit+B,GAAQjt+B,EAAKqj+B,EAAOtolB,EACtB,MAEEmylB,GAAWlt+B,EAAKrlJ,KAAKgvQ,SAAU,GAAMhvQ,MAAM6ohC,SAAUzof,GAGvD,OAAO/6Y,CACT,CAEA,SAASmt+B,GAAgBpylB,EAAK/6Y,GAE5B,OADA+6Y,EAAIqylB,QAAUrylB,EAAIqylB,OAAOlkjC,SAClB82E,CACT,CAEA,SAASqt+B,GAAsBtylB,EAAK/6Y,GAQlC,OAHA,EAAK,GAAMA,GAAKqj+B,OAAO,SAAUl5mC,EAAMw/P,GACrCx/P,IAAS61I,GAAOkt+B,GAAW/inC,EAAKq7gC,eAAgB77wB,EAAU3pH,EAAK+6Y,EACjE,IACO/6Y,CACT,CASA,SAASuj4B,GAAc55wB,GACrB,IAAI65wB,EAAW,GAAM7ohC,MAAM6ohC,SAC3B,OAAmB,MAAZ75wB,GAAgC,MAAZ65wB,EAAmBA,EAAW,GAAMA,GAAU6/F,MAAM152B,EACjF,CAMA,SAAS85wB,KACP,IAAID,EAAW,GAAM7ohC,MAAM6ohC,SAC3B,OAAmB,MAAZA,EAAmB,CAAC,CACzBr5gC,KAAMq5gC,IACHx5/B,EAAI/b,GAAK,GAAMu1gC,GAAU6/F,QAAQ,SAAUn8mC,GAC9C,MAAO,CACLA,KAAMA,EACNiD,KAAM,GAAMq5gC,GAAU6/F,MAAMn8mC,GAEhC,GACF,CAMA,SAAS+lnC,GAAQzpG,EAAU6/F,EAAOtolB,GAChC,GAAMyof,GAAU6/F,MAAQ,CAAC,EACzB,EAAKA,GAAO,SAAUl5mC,EAAMw/P,GAC1Buj3B,GAAW/inC,EAAMw/P,EAAU65wB,EAAUzof,EACvC,GACF,CAEA,SAASmylB,GAAW/inC,EAAMw/P,EAAU65wB,EAAUzof,GAC5C,GAAMyof,GAAU6/F,MAAM152B,GAAYx/P,EAClC,GAAMA,GAAMq5gC,SAAWA,EACvBr5gC,EAAKw/P,SAAWA,EAEZoxR,EAAIqylB,SACNjjnC,EAAK4whB,EAAIuylB,YAAcvylB,EAAIqylB,OAC3BrylB,EAAIqylB,OAAOrylB,EAAIwylB,UAAU5j3B,IAAax/P,GAIxCA,EAAKo5gC,cAAgBA,GACrBp5gC,EAAKs5gC,iBAAmBA,EAC1B,CAEA,SApHA,SAAwB1of,GACtB,IAAIyof,EAAWzof,EAAIyof,SACf6/F,EAAQtolB,EAAIsolB,MAEXA,IACHA,EAAQ,CACNl3wB,KAAMq3qB,GAERzof,EAAIwylB,UAAY,CACdphxB,KAAM,SAIV4uL,EAAIsolB,MAAQtolB,EAAIyof,SAAW,KAC3BypG,GAAQzpG,EAAU6/F,EAAOtolB,GAEzB,EAAKsolB,GAAO,SAAUl5mC,GACpB,EAAKq5gC,EAAS87B,sBAAsB,SAAUlw+B,GAC5CjlE,EAAKy7gC,WAAWx28B,EAAYu13B,GAAMqoL,GAAmBjylB,GACvD,GACF,IAEAyof,EAASoC,WAAW,eAAgBjhF,GAAM0oL,GAAuBtylB,IAGjE,EAAKyof,EAASkC,mBAAmB,SAAUt28B,GACzCo08B,EAASoC,WAAWx28B,EAAYu13B,GAAMwoL,GAAiBpylB,GACzD,IAEAv9Z,GAAO6l/B,EAAM7/F,EAAS75wB,YAAc65wB,EACtC,EC5BA,IAAI1+N,GAEJ,WACE,SAASA,EAASz/yB,EAAMmonC,GACtB7ynC,KAAKu3I,MAAQ,EACbv3I,KAAKg/B,OAAS,EASdh/B,KAAKqlK,WAAa,EAClBrlK,KAAKggC,SAAW,GAChBhgC,KAAKg6P,aAAe,GACpBh6P,KAAKqtnC,UAAW,EAChBrtnC,KAAK0K,KAAOA,GAAQ,GACpB1K,KAAK6ynC,SAAWA,CAClB,CAwOA,OAlOA1oU,EAASzqzB,UAAUoznC,UAAY,WAC7B,OAAO9ynC,KAAKqlK,UAAY,CAC1B,EAEA8kpB,EAASzqzB,UAAUqznC,SAAW,SAAU5pmC,EAASu4C,EAAIv0B,GAC/C,GAAkBhkB,KACpBgkB,EAAUu0B,EACVA,EAAKv4C,EACLA,EAAU,MAKR,GAFJA,EAAUA,GAAW,CAAC,KAGpBA,EAAU,CACR8pH,MAAO9pH,IAIX,IAEI6pmC,EAFA//+B,EAAQ9pH,EAAQ8pH,OAAS,WACzBjzG,EAAWhgC,KAAKmpB,EAAQ8kgB,MAAQ,YAE1B,aAAVh7Y,IAAyB+/+B,EAAmBtxjC,EAAG9hE,KAAKutC,EAASntC,OAE7D,IAAK,IAAIY,EAAI,GAAIoynC,GAAoBpynC,EAAIo/B,EAAS3/B,OAAQO,IACxDo/B,EAASp/B,GAAGmynC,SAAS5pmC,EAASu4C,EAAIv0B,GAG1B,cAAV8lG,GAAyBvxE,EAAG9hE,KAAKutC,EAASntC,KAC5C,EAMAmqzB,EAASzqzB,UAAUuznC,qBAAuB,SAAU17+B,GAClD,IAAIv4G,EAAS,EACbh/B,KAAKu3I,MAAQA,EAEb,IAAK,IAAI32I,EAAI,EAAGA,EAAIZ,KAAKggC,SAAS3/B,OAAQO,IAAK,CAC7C,IAAIspF,EAAQlqF,KAAKggC,SAASp/B,GAC1BspF,EAAM+oiC,qBAAqB17+B,EAAQ,GAE/BrtD,EAAMlrD,OAASA,IACjBA,EAASkrD,EAAMlrD,OAEnB,CAEAh/B,KAAKg/B,OAASA,EAAS,CACzB,EAEAmrxB,EAASzqzB,UAAUwznC,YAAc,SAAU3nmC,GACzC,GAAIvrB,KAAKyze,UAAYlod,EACnB,OAAOvrB,KAGT,IAAK,IAAIY,EAAI,EAAGo/B,EAAWhgC,KAAKggC,SAAU6+F,EAAM7+F,EAAS3/B,OAAQO,EAAIi+H,EAAKj+H,IAAK,CAC7E,IAAIykJ,EAAMrlH,EAASp/B,GAAGsynC,YAAY3nmC,GAElC,GAAI85H,EACF,OAAOA,CAEX,CACF,EAEA8kqB,EAASzqzB,UAAUk9B,SAAW,SAAUysD,GACtC,GAAIA,IAASrpF,KACX,OAAO,EAGT,IAAK,IAAIY,EAAI,EAAGo/B,EAAWhgC,KAAKggC,SAAU6+F,EAAM7+F,EAAS3/B,OAAQO,EAAIi+H,EAAKj+H,IAAK,CAC7E,IAAIykJ,EAAMrlH,EAASp/B,GAAGg8B,SAASysD,GAE/B,GAAIg8D,EACF,OAAOA,CAEX,CACF,EAOA8kqB,EAASzqzB,UAAUyznC,aAAe,SAAUC,GAI1C,IAHA,IAAIv0qB,EAAY,GACZx1X,EAAO+piC,EAAcpznC,KAAOA,KAAK0hC,WAE9B2nD,GACLw1X,EAAUh9c,KAAKwnF,GACfA,EAAOA,EAAK3nD,WAId,OADAm9a,EAAUvkZ,UACHukZ,CACT,EAEAsrW,EAASzqzB,UAAUwxnC,oBAAsB,WAIvC,IAHA,IAAIvi8B,EAAU,GACV0k8B,EAAWrznC,KAERqznC,GACL1k8B,EAAQ9sL,KAAKwxnC,EAAShu9B,WACtBgu9B,EAAWA,EAAS3xlC,WAItB,OADAitJ,EAAQr0H,UACDq0H,CACT,EAEAw7nB,EAASzqzB,UAAUyxnC,qBAAuB,WACxC,IAAIxi8B,EAAU,GAId,OAHA3uL,KAAK+ynC,UAAS,SAAUt3lB,GACtB9sW,EAAQ9sL,KAAK45hB,EAAUp2X,UACzB,IACOspB,CACT,EAEAw7nB,EAASzqzB,UAAUw8H,SAAW,SAAUo3C,GACtC,IAAI9jK,EAAOxP,KAAK6ynC,SAASrjnC,KACzB,OAAOA,EAAKsggC,WAAW3sgC,IAAIqM,EAAKuggC,kBAAkBz81B,GAAa,SAAUtzK,KAAKqlK,UAChF,EAEA8kpB,EAASzqzB,UAAUgpjC,UAAY,SAAUxn7B,EAAQ4/H,GAC/C9gQ,KAAKqlK,WAAa,GAAKrlK,KAAK6ynC,SAASrjnC,KAAKq5iC,cAAc7ojC,KAAKqlK,UAAWnkC,EAAQ4/H,EAClF,EAMAqpjB,EAASzqzB,UAAUipjC,UAAY,WAC7B,OAAO3ojC,KAAK6ynC,SAASrjnC,KAAKo5iC,cAAc5ojC,KAAKqlK,UAC/C,EAKA8kpB,EAASzqzB,UAAUk4L,SAAW,SAAUvhK,GACtC,KAAIr2B,KAAKqlK,UAAY,GAMrB,OAFerlK,KAAK6ynC,SACKrjnC,KAAKqhgC,aAAa7wgC,KAAKqlK,WAC/BuyB,SAASvhK,EAC5B,EAGA8zxB,EAASzqzB,UAAU4znC,cAAgB,WACjC,OAAQtznC,KAAK6ynC,SAASU,aAAe,IAAIvznC,KAAKu3I,MAChD,EAEA4yqB,EAASzqzB,UAAU27hC,UAAY,SAAUx2gC,EAAK1jB,GAC5CnB,KAAKqlK,WAAa,GAAKrlK,KAAK6ynC,SAASrjnC,KAAKmshC,cAAc37hC,KAAKqlK,UAAWxgJ,EAAK1jB,EAC/E,EAOAgpzB,EAASzqzB,UAAUo8hC,UAAY,SAAUj3gC,GACvC,OAAO7kB,KAAK6ynC,SAASrjnC,KAAK+ggC,cAAcvwgC,KAAKqlK,UAAWxgJ,EAC1D,EAEAslyB,EAASzqzB,UAAU4sgC,YAAc,WAC/B,OAAOtsgC,KAAK6ynC,SAASrjnC,KAAK88/B,YAAYtsgC,KAAKqlK,UAC7C,EAEA8kpB,EAASzqzB,UAAU+ze,MAAQ,WACzB,OAAOzze,KAAK6ynC,SAASrjnC,KAAKike,MAAMzze,KAAKqlK,UACvC,EAMA8kpB,EAASzqzB,UAAU8znC,cAAgB,WACjC,GAAIxznC,KAAK0hC,WAAY,CAGnB,IAFA,IAAI1B,EAAWhgC,KAAK0hC,WAAW1B,SAEtBp/B,EAAI,EAAGA,EAAIo/B,EAAS3/B,SAAUO,EACrC,GAAIo/B,EAASp/B,KAAOZ,KAClB,OAAOY,EAIX,OAAQ,CACV,CAEA,OAAQ,CACV,EASAupzB,EAASzqzB,UAAU+znC,aAAe,SAAUpqiC,GAG1C,IAFA,IAAIgI,EAAShI,EAAK3nD,WAEX2vD,GAAQ,CACb,GAAIA,IAAWrxF,KACb,OAAO,EAGTqxF,EAASA,EAAO3vD,UAClB,CAEA,OAAO,CACT,EASAyoxB,EAASzqzB,UAAUg0nC,eAAiB,SAAUrqiC,GAC5C,OAAOA,IAASrpF,MAAQqpF,EAAKoqiC,aAAazznC,KAC5C,EAEOmqzB,CACT,CA3PA,GAgQIwpU,GAEJ,WACE,SAASA,EAAK1vE,GACZjkjC,KAAKuM,KAAO,OACZvM,KAAK8hxB,OAAS,GACd9hxB,KAAKikjC,UAAYA,CACnB,CAkGA,OAhGA0vE,EAAKj0nC,UAAUqznC,SAAW,SAAU5pmC,EAASu4C,EAAIv0B,GAC/CntC,KAAKmwJ,KAAK4i+B,SAAS5pmC,EAASu4C,EAAIv0B,EAClC,EAEAwmlC,EAAKj0nC,UAAUswnC,mBAAqB,SAAU3q9B,GAC5C,IAAIu22B,EAAW57gC,KAAKwP,KAAK88/B,YAAYjn2B,GACrC,OAAOrlK,KAAK8hxB,OAAO85P,EACrB,EAEA+3G,EAAKj0nC,UAAUwznC,YAAc,SAAUxonC,GACrC,OAAO1K,KAAKmwJ,KAAK+i+B,YAAYxonC,EAC/B,EAOAipnC,EAAKj0nC,UAAU6uE,OAAS,WAItB,IAHA,IAAI/+D,EAAOxP,KAAKwP,KACZ4gP,EAAQpwP,KAAK8hxB,OAERlhxB,EAAI,EAAGi+H,EAAMuxH,EAAM/vP,OAAQO,EAAIi+H,EAAKj+H,IAC3CwvP,EAAMxvP,GAAGykK,WAAa,EAGxB,IAASzkK,EAAI,EAAGi+H,EAAMrvH,EAAK+5C,QAAS3oD,EAAIi+H,EAAKj+H,IAC3CwvP,EAAM5gP,EAAK88/B,YAAY1rgC,IAAIykK,UAAYzkK,CAE3C,EAMA+ynC,EAAKj0nC,UAAUk0nC,aAAe,WAC5B5znC,KAAKwP,KAAKs5iC,kBACZ,EAkBA6qE,EAAKE,WAAa,SAAUr5S,EAAUypO,EAAW6vE,GAC/C,IAAI/5tB,EAAO,IAAI45tB,EAAK1vE,GAChB8vE,EAAW,GACXC,EAAS,GAGb,SAASC,EAAeC,EAAUxylC,GAChC,IAAIvgC,EAAQ+ynC,EAAS/ynC,MACrB6ynC,EAASnxnC,KAAK8K,IAAIqmnC,EAAQ,GAAe7ynC,GAASA,EAAMd,OAAS,GACjE0znC,EAASlynC,KAAKqynC,GACd,IAAI7qiC,EAAO,IAAI8guB,GAASu4K,GAAoBwxJ,EAASxpnC,KAAM,IAAKqvZ,GAChEr4X,EAsCN,SAAkBwoD,EAAOb,GACvB,IAAIrpD,EAAWqpD,EAAKrpD,SAEhBkqD,EAAMxoD,aAAe2nD,IAIzBrpD,EAASn+B,KAAKqoF,GACdA,EAAMxoD,WAAa2nD,EACrB,CA/CmButa,CAASvta,EAAM3nD,GAAcq4X,EAAK5pQ,KAAO9mE,EAEtD0wU,EAAK+nX,OAAOjgxB,KAAKwnF,GAEjB,IAAIrpD,EAAWk0lC,EAASl0lC,SAExB,GAAIA,EACF,IAAK,IAAIp/B,EAAI,EAAGA,EAAIo/B,EAAS3/B,OAAQO,IACnCqznC,EAAej0lC,EAASp/B,GAAIyoF,EAGlC,CAlBA4qiC,CAAez5S,GAoBfzgb,EAAK5pQ,KAAK8i+B,qBAAqB,GAC/B,IAAIv69B,EAAa8w5B,GAAwBuqE,EAAU,CACjDh6H,gBAAiB,CAAC,SAClBgwD,gBAAiBiqE,IAChBt79B,WACCviF,EAAO,IAAI,GAAWuiF,EAAYur5B,GAStC,OARA9t+B,EAAKgjX,SAAS46rB,GACdD,GAAcA,EAAW39iC,GACzB,GAAe,CACb0y8B,SAAU1y8B,EACVs8iC,OAAQ14tB,EACR44tB,WAAY,SAEd54tB,EAAKxrV,SACEwrV,CACT,EAEO45tB,CACT,CAxGA,GA0HA,YCvYO,SAASQ,GAAmBr/lC,EAASs/lC,EAAmBpxI,GAC7D,GAAIlu9B,GAAW,EAAes/lC,EAAmBt/lC,EAAQvoB,OAAS,EAAG,CACnE,IAAI4jJ,EAAO6y1B,EAAYx+2B,UAAUu1R,KAAK5pQ,KAClCkk+B,EAAav/lC,EAAQu/lC,WAMzB,GAJI,GAAgBA,KAClBA,EAAalk+B,EAAK+i+B,YAAYmB,IAG5BA,GAAclk+B,EAAKvzH,SAASy3lC,GAC9B,MAAO,CACLhriC,KAAMgriC,GAIV,IAAIC,EAAex/lC,EAAQw/lC,aAE3B,GAAoB,MAAhBA,IAAyBD,EAAalk+B,EAAK+i+B,YAAYoB,IACzD,MAAO,CACLjriC,KAAMgriC,EAGZ,CACF,CAEO,SAASE,GAAclriC,GAG5B,IAFA,IAAIhzD,EAAO,GAEJgzD,IACLA,EAAOA,EAAK3nD,aACJrL,EAAKx0B,KAAKwnF,GAGpB,OAAOhzD,EAAKikC,SACd,CACO,SAASk6jC,GAAcC,EAAUpriC,GAEtC,OAAO,EADQkriC,GAAcE,GACGpriC,IAAS,CAC3C,CAEO,SAASqriC,GAAiBrriC,EAAM255B,GAGrC,IAFA,IAAI2xI,EAAe,GAEZtriC,GAAM,CACX,IAAIuriC,EAAgBvriC,EAAKg8E,UACzBsv9B,EAAa9ynC,KAAK,CAChB6I,KAAM2+E,EAAK3+E,KACX26J,UAAWuv9B,EACXzznC,MAAO6h/B,EAAYotB,YAAYwkH,KAEjCvriC,EAAOA,EAAK3nD,UACd,CAGA,OADAizlC,EAAar6jC,UACNq6jC,CACT,CCjDA,IAAIE,GAEJ,SAAUnswB,GAGR,SAASmswB,IACP,IAAInokC,EAAmB,OAAXg8T,GAAmBA,EAAOnoX,MAAMP,KAAMI,YAAcJ,KAKhE,OAHA0sD,EAAM499B,iBAAkB,EAExB599B,EAAM299B,mBAAoB,EACnB399B,CACT,CAiJA,OA1JAkgX,EAAUiotB,EAAiBnswB,GAe3BmswB,EAAgBn1nC,UAAUyohC,eAAiB,SAAUtq9B,GAEnD,IAAIsyF,EAAO,CACTzlJ,KAAMmzD,EAAOnzD,KACbs1B,SAAU69B,EAAOruD,MAEfqrZ,EAASh9V,EAAOg9V,QAAU,CAAC,EAC3Bi6tB,EAAc,IAAI,GAAMj6tB,EAAQ76Z,KAAMA,KAAKsj+B,SAC3CvpkB,EAAO,GAAK85tB,WAAW1j+B,EAAMnwJ,MAEjC,SAAoB+oR,GAClBA,EAASkiwB,WAAW,gBAAgB,SAAUl25B,EAAO+lP,GACnD,IAAIzxR,EAAO0wU,EAAKi2tB,mBAAmBl1wB,GAMnC,OAJMzxR,GAAQA,EAAKrpD,SAAS3/B,QAAUgpF,EAAKgkiC,WACzCt4/B,EAAM8pa,YAAci2lB,GAGf///B,CACT,GACF,IAEIgggC,EAAY,EAChBh7tB,EAAKg5tB,SAAS,YAAY,SAAU1piC,GAC9BA,EAAKkuD,MAAQw9+B,IACfA,EAAY1riC,EAAKkuD,MAErB,IACA,IACIy9+B,EADoBn3jC,EAAOo3jC,mBACYp3jC,EAAOq3jC,kBAAoB,EAAIr3jC,EAAOq3jC,iBAAmBH,EAMpG,OALAh7tB,EAAK5pQ,KAAK4i+B,SAAS,YAAY,SAAU1piC,GACvC,IAAIjoC,EAAOioC,EAAKwpiC,SAASrjnC,KAAKqggC,eAAexm7B,EAAKg8E,WAElDh8E,EAAKgkiC,SAAWjskC,GAA0B,MAAlBA,EAAKi6Q,WAAqBj6Q,EAAKi6Q,UAAYhyO,EAAKkuD,OAASy9+B,CACnF,IACOj7tB,EAAKvqZ,IACd,EAOAqlnC,EAAgBn1nC,UAAU2xnC,UAAY,WACpC,IAAI79H,EAASxz/B,KAAKmD,IAAI,UAQtB,MANe,eAAXqw/B,EACFA,EAAS,KACW,aAAXA,IACTA,EAAS,MAGJA,CACT,EAEAqhI,EAAgBn1nC,UAAUyhC,QAAU,SAAUxB,GAC5C3/B,KAAK69D,OAAOl+B,KAAOA,CACrB,EAEAk1lC,EAAgBn1nC,UAAUshC,UAAY,SAAU/B,GAC9Cj/B,KAAK69D,OAAO5+B,OAASA,CACvB,EAEA41lC,EAAgBn1nC,UAAUu3X,cAAgB,SAAU5xN,EAAW4r2B,EAAgBjiwB,GAO7E,IANA,IAAI+qJ,EAAO/5Z,KAAKwkI,UAAUu1R,KACtB+2tB,EAAW/2tB,EAAK5pQ,KAAKnwH,SAAS,GAC9BqpD,EAAO0wU,EAAKi2tB,mBAAmB3q9B,GAC/BlkK,EAAQkoF,EAAK6yC,WACbxxH,EAAO2+E,EAAK3+E,KAET2+E,GAAQA,IAASyniC,GACtBpmnC,EAAO2+E,EAAK3nD,WAAWh3B,KAAO,IAAMA,EACpC2+E,EAAOA,EAAK3nD,WAGd,OAAOqh/B,GAAoB,YAAa,CACtCr4gC,KAAMA,EACNvJ,MAAOA,EACPyjhC,QAASt4+B,MAAMnrC,IAAmB,MAATA,GAE7B,EAGA0znC,EAAgBn1nC,UAAUywgC,cAAgB,SAAU9q2B,GAClD,IAAIh9H,EAASqgV,EAAOhpX,UAAUywgC,cAAc5vgC,MAAMP,KAAMI,WAEpDipF,EAAOrpF,KAAKwkI,UAAUu1R,KAAKi2tB,mBAAmB3q9B,GAGlD,OAFAh9H,EAAO8slC,cAAgBT,GAAiBrriC,EAAMrpF,MAC9CqoC,EAAOgzR,WAAahyO,EAAKgkiC,SAClBhllC,CACT,EAEAwslC,EAAgBtonC,KAAO,cAGvBsonC,EAAgBrgI,WAAa,MAC7BqgI,EAAgBj0lB,cAAgB,CAE9Bj7hB,EAAG,EACHosH,iBAAkB,OAElBlzF,KAAM,MACNC,IAAK,MACL+gE,MAAO,MACPC,OAAQ,MAERohC,OAAQ,aAERkw/B,UAAW,QACXG,iBAAkB,MAElBpO,MAAM,EAEN2M,eAAgB,GAEhB7wlC,OAAQ,KACRU,KAAM,EACN6z9B,OAAQ,KACRt5f,OAAQ,cACRq+f,WAAY,EACZ08H,mBAAmB,EACnBC,iBAAkB,EAClB/iZ,UAAW,CACT5knB,MAAO,OACPxuF,MAAO,IACPq2lC,UAAW,IAEb7wI,UAAW,CACTh33B,MAAO,iBAEPiq3B,YAAa,KAEfn2+B,MAAO,CACL4hV,MAAM,GAER21qB,gBAAiB,SACjBF,kBAAmB,IACnBC,wBAAyB,KAEpBk8H,CACT,CA5JA,CA4JEl3W,IAEF,YCrIA,SAAS03W,GAAWll+B,EAAMjnI,GAIxB,IAHA,IACImgE,EADA+mK,EAAQ,CAACjgG,GAGN9mE,EAAO+mK,EAAMxuP,OAIlB,GAFAsnB,EAASmgE,GAELA,EAAKgkiC,SAAU,CACjB,IAAIrtlC,EAAWqpD,EAAKrpD,SAEpB,GAAIA,EAAS3/B,OACX,IAAK,IAAIO,EAAIo/B,EAAS3/B,OAAS,EAAGO,GAAK,EAAGA,IACxCwvP,EAAMvuP,KAAKm+B,EAASp/B,GAG1B,CAEJ,CClDe,SAAS4rzB,GAAW82K,EAASr07B,GAC1Cq07B,EAAQq/B,iBAAiB,QAAQ,SAAU3f,IAK7C,SAAsBA,EAAa/z8B,GACjC,IAAImglC,EPuHC,SAAqBpsI,EAAa/z8B,GACvC,OAAO,GAAqB+z8B,EAAY8S,qBAAsB,CAC5D/29B,MAAOkQ,EAAIk8L,WACXnsM,OAAQiQ,EAAI+rI,aAEhB,CO5HmB,CAAYgo0B,EAAa/z8B,GAC1C+z8B,EAAYosI,WAAaA,EACzB,IAAIlu/B,EAAS8h3B,EAAY7/+B,IAAI,UACzB47B,EAAQ,EACRC,EAAS,EACToulC,EAAa,KAEF,WAAXls/B,GACFniG,EAAQ,EAAIl8B,KAAKsmC,GACjBnK,EAASn8B,KAAKgL,IAAIuhnC,EAAWpwlC,OAAQowlC,EAAWrwlC,OAAS,EACzDqulC,EAAa,IAAI,SAAUkB,EAAOC,GAChC,OAAQD,EAAM5slC,aAAe6slC,EAAM7slC,WAAa,EAAI,GAAK4slC,EAAM/2+B,KACjE,MAEAx4G,EAAQqwlC,EAAWrwlC,MACnBC,EAASowlC,EAAWpwlC,OACpBoulC,EAAa,MAGf,IAAI6C,EAAcjtI,EAAYx+2B,UAAUu1R,KAAK5pQ,KACzC2g+B,EAAWb,EAAYjwlC,SAAS,GAEpC,GAAI8wlC,EAAU,EPVT,SAAcwE,GACnB,IAAInl+B,EAAOml+B,EACXnl+B,EAAKo99B,SAAW,CACd/hU,gBAAiB,KACjBrsW,SAAUhvT,EACVo6pB,OAAQ,EACRl6sB,SAAU,EACVoqY,OAAQ,EACRt8b,MAAO,EACPv9C,EAAG,EACH+pzB,OAAQ,MAMV,IAJA,IACIthuB,EACArpD,EAFAowN,EAAQ,CAACjgG,GAIN9mE,EAAO+mK,EAAMxuP,OAIlB,GAFAo+B,EAAWqpD,EAAKrpD,SAEZqpD,EAAKgkiC,UAAYrtlC,EAAS3/B,OAG5B,IAFA,IAESO,EAFDo/B,EAAS3/B,OAEA,EAAGO,GAAK,EAAGA,IAAK,CAC/B,IAAIspF,EAAQlqD,EAASp/B,GACrBspF,EAAMqjiC,SAAW,CACf/hU,gBAAiB,KACjBrsW,SAAUj1X,EACVqguB,OAAQ,EACRl6sB,SAAU,EACVoqY,OAAQ,EACRt8b,MAAO,EACPv9C,EAAGA,EACH+pzB,OAAQ,MAEVv6jB,EAAMvuP,KAAKqoF,EACb,CAGN,CO5BI,CAAK+liC,GD5BT,SAAmB9/9B,EAAMjnI,EAAUkkmC,GAKjC,IAJA,IAEI/jiC,EAFA+mK,EAAQ,CAACjgG,GACTpvJ,EAAO,GAGJsoF,EAAO+mK,EAAMxuP,OAIlB,GAFAb,EAAKc,KAAKwnF,GAENA,EAAKgkiC,SAAU,CACjB,IAAIrtlC,EAAWqpD,EAAKrpD,SAEpB,GAAIA,EAAS3/B,OACX,IAAK,IAAIO,EAAI,EAAGA,EAAIo/B,EAAS3/B,OAAQO,IACnCwvP,EAAMvuP,KAAKm+B,EAASp/B,GAG1B,CAGF,KAAOyoF,EAAOtoF,EAAKa,OAEjBsnB,EAASmgE,EAAM+jiC,EAEnB,CCKImI,CAAUzE,EAAU5kU,GAAWkhU,GAC/B6C,EAAY1C,SAASl9gC,UAAYyghC,EAASvD,SAAShjU,OACnD8qU,GAAWvE,EAAUxkU,IACrB,IAAI9xS,EAASs2mB,EACT78E,EAAU68E,EACV58E,EAAW48E,EACfuE,GAAWvE,GAAU,SAAUzniC,GAC7B,IAAIplF,EAAIolF,EAAKs/9B,YAAY1kjC,EAErBA,EAAIu2gB,EAAOmuiB,YAAY1kjC,IACzBu2gB,EAASnxb,GAGPplF,EAAIgwiC,EAAQ0U,YAAY1kjC,IAC1BgwiC,EAAU5q9B,GAGRA,EAAKkuD,MAAQ285B,EAAS385B,QACxB285B,EAAW7q9B,EAEf,IACA,IAAI08B,EAAQy0Z,IAAWy5hB,EAAU,EAAIm5E,EAAW5ymB,EAAQy5hB,GAAW,EAC/DuhF,EAAOzvgC,EAAQy0Z,EAAOmuiB,YAAY1kjC,EAClCwxnC,EAAO,EACPC,EAAO,EACPC,EAAU,EACVC,EAAU,EAEd,GAAe,WAAX10/B,EACFu0/B,EAAO12lC,GAASk1gC,EAAQ0U,YAAY1kjC,EAAI8hH,EAAQyvgC,GAEhDE,EAAO12lC,GAAUk1gC,EAAS385B,MAAQ,GAAK,GACvC89+B,GAAWvE,GAAU,SAAUzniC,GAC7BssiC,GAAWtsiC,EAAKs/9B,YAAY1kjC,EAAIuxnC,GAAQC,EACxCG,GAAWvsiC,EAAKkuD,MAAQ,GAAKm++B,EAC7B,IAAIG,EAAYzH,GAAiBuH,EAASC,GAC1CvsiC,EAAKq/9B,UAAU,CACbzkjC,EAAG4xnC,EAAU5xnC,EACbjB,EAAG6ynC,EAAU7ynC,EACbutnC,KAAMoF,EACNlF,KAAMmF,IACL,EACL,QACK,CACL,IAAIE,EAAW9yI,EAAYquI,YAEV,OAAbyE,GAAkC,OAAbA,GACvBJ,EAAO12lC,GAAUi1gC,EAAQ0U,YAAY1kjC,EAAI8hH,EAAQyvgC,GACjDC,EAAO12lC,GAASm1gC,EAAS385B,MAAQ,GAAK,GACtC89+B,GAAWvE,GAAU,SAAUzniC,GAC7BusiC,GAAWvsiC,EAAKs/9B,YAAY1kjC,EAAIuxnC,GAAQE,EACxCC,EAAuB,OAAbG,GAAqBzsiC,EAAKkuD,MAAQ,GAAKk++B,EAAO12lC,GAASsqD,EAAKkuD,MAAQ,GAAKk++B,EACnFpsiC,EAAKq/9B,UAAU,CACbzkjC,EAAG0xnC,EACH3ynC,IACC,EACL,KACsB,OAAb8ynC,GAAkC,OAAbA,IAC9BL,EAAO12lC,GAASk1gC,EAAQ0U,YAAY1kjC,EAAI8hH,EAAQyvgC,GAChDE,EAAO12lC,GAAUk1gC,EAAS385B,MAAQ,GAAK,GACvC89+B,GAAWvE,GAAU,SAAUzniC,GAC7BssiC,GAAWtsiC,EAAKs/9B,YAAY1kjC,EAAIuxnC,GAAQC,EACxCG,EAAuB,OAAbE,GAAqBzsiC,EAAKkuD,MAAQ,GAAKm++B,EAAO12lC,GAAUqqD,EAAKkuD,MAAQ,GAAKm++B,EACpFrsiC,EAAKq/9B,UAAU,CACbzkjC,EAAG0xnC,EACH3ynC,IACC,EACL,IAEJ,CACF,CACF,CApGI+ynC,CAAa/yI,EAAa/z8B,EAC5B,GACF,CCLe,SAAS+mlC,GAAW1yJ,GACjCA,EAAQq/B,iBAAiB,QAAQ,SAAU3f,GACzC,IAAIxz+B,EAAOwz+B,EAAYx+2B,UACZh1H,EAAKuqZ,KACXg5tB,UAAS,SAAU1piC,GACtB,IAEIh1E,EAFQg1E,EAAKuuG,WAECA,SAAS,aAAam0zB,eAExC1imB,EADkB75Y,EAAKushC,uBAAuB1y8B,EAAKg8E,UAAW,SAC1ChxJ,EACtB,GACF,GACF,CCXA,IAAI4hnC,GAAc,CAAC,oBAAqB,gBAAiB,eCD1C,SAASC,GAAuBlzI,GAC7C,IACIjplB,EADOiplB,EAAYx+2B,UACPu1R,KACZo8tB,EAAoB,CAAC,EACzBp8tB,EAAKg5tB,UAAS,SAAU1piC,GAItB,IAFA,IAAItpD,EAAUspD,EAEPtpD,GAAWA,EAAQw3G,MAAQ,GAChCx3G,EAAUA,EAAQ2B,WAGpB,IAAI8x8B,EAAQuqB,GAAoB/a,EAAY1f,QAASvj8B,EAAQr1B,MAAQq1B,EAAQslI,UAAY,GAAI8w9B,GAC7F9siC,EAAKgy8B,UAAU,QAAS7nD,EAC1B,GACF,CC0RA,SAAS4iJ,GAAkBlC,GAIzB,IAAIplhC,EAAM,EACV,EAAYolhC,EAASl0lC,UAAU,SAAUkqD,GACvCksiC,GAAkBlsiC,GAClB,IAAImsiC,EAAansiC,EAAM/oF,MACvB,GAAek1nC,KAAgBA,EAAaA,EAAW,IACvDvnhC,GAAOunhC,CACT,IACA,IAAIC,EAAYpC,EAAS/ynC,MAErB,GAAem1nC,KACjBA,EAAYA,EAAU,KAGP,MAAbA,GAAqBhqlC,MAAMgqlC,MAC7BA,EAAYxnhC,GAIVwnhC,EAAY,IACdA,EAAY,GAGd,GAAepC,EAAS/ynC,OAAS+ynC,EAAS/ynC,MAAM,GAAKm1nC,EAAYpC,EAAS/ynC,MAAQm1nC,CACpF,CA2CA,SApWA,SAAU5twB,GAGR,SAAS6twB,IACP,IAAI7pkC,EAAmB,OAAXg8T,GAAmBA,EAAOnoX,MAAMP,KAAMI,YAAcJ,KAIhE,OAFA0sD,EAAMngD,KAAOgqnC,EAAmBhqnC,KAChCmgD,EAAMmt/B,wBAAyB,EACxBnt/B,CACT,CA8QA,OAtRAkgX,EAAU2ptB,EAAoB7twB,GAc9B6twB,EAAmB72nC,UAAUyohC,eAAiB,SAAUtq9B,EAAQyl6B,GAE9D,IAAInz0B,EAAO,CACTzlJ,KAAMmzD,EAAOnzD,KACbs1B,SAAU69B,EAAOruD,MAEnB4mnC,GAAkBjm+B,GAClB,IAAI+zH,EAASrmN,EAAOqmN,QAAU,GAK1Bsy2B,EAA4Bx2nC,KAAKw2nC,0BAA4B,CAAC,EAC9DC,EAAwB,IAAI,GAAM,CACpClyI,UAAWiyI,GACVx2nC,KAAMsj+B,GACTp/sB,EAASrmN,EAAOqmN,OAgSpB,SAAoBA,EAAQo/sB,GAC1B,IAQIozJ,EACAC,EATAC,EAAkBn2J,GAAiB6C,EAAQng+B,IAAI,UAC/C0znC,EAAkBp2J,GAAiB6C,EAAQng+B,IAAI,CAAC,OAAQ,QAAS,YAErE,GAAKyznC,EAAL,CAOA,EAHA1y2B,EAASA,GAAU,IAGC,SAAU4y2B,GAC5B,IAAI/hgC,EAAQ,IAAI,GAAM+hgC,GAClBC,EAAahigC,EAAM5xH,IAAI,SACvB6znC,EAAajigC,EAAM5xH,IAAI,UAEvB4xH,EAAM5xH,IAAI,CAAC,YAAa,WAAa4znC,GAA6B,SAAfA,KACrDL,GAAiB,IAGf3hgC,EAAM5xH,IAAI,CAAC,YAAa,WAAa6znC,GAA6B,SAAfA,KACrDL,GAAiB,EAErB,IACA,IAAIM,EAAS/y2B,EAAO,KAAOA,EAAO,GAAK,CAAC,GAUxC,OARKwy2B,IACHO,EAAO1pgC,MAAQqpgC,EAAgB70nC,UAG5B40nC,GAAkBE,IACrBI,EAAOzjJ,MAAQqjJ,EAAgB90nC,SAG1BmiR,CA5BP,CA6BF,CAnU6Bgz2B,CAAWhz2B,EAAQo/sB,GAC5C,IAAIiwJ,EAAc,EAAWrv2B,GAAU,IAAI,SAAU4y2B,GACnD,OAAO,IAAI,GAAMA,EAAaL,EAAuBnzJ,EACvD,GAAGtj+B,MAIC+5Z,EAAO,GAAK85tB,WAAW1j+B,EAAMnwJ,MAEjC,SAAoB+oR,GAClBA,EAASkiwB,WAAW,gBAAgB,SAAUl25B,EAAO+lP,GACnD,IAAIzxR,EAAO0wU,EAAKi2tB,mBAAmBl1wB,GAC/Bq8wB,EAAa9tiC,EAAOkqiC,EAAYlqiC,EAAKkuD,OAAS,KAGlD,OADAxiB,EAAM8pa,YAAcs4lB,GAAcV,EAC3B1hgC,CACT,GACF,IAEA,OAAOglS,EAAKvqZ,IACd,EAEA+mnC,EAAmB72nC,UAAU61/B,cAAgB,WAC3Cv1/B,KAAKo3nC,eACP,EAQAb,EAAmB72nC,UAAUu3X,cAAgB,SAAU5xN,EAAW4r2B,EAAgBjiwB,GAChF,IAAIx/P,EAAOxP,KAAKwkI,UACZrjI,EAAQnB,KAAKowgC,YAAY/q2B,GAE7B,OAAO092B,GAAoB,YAAa,CACtCr4gC,KAFS8E,EAAKw4U,QAAQ3iL,GAGtBlkK,MAAOA,GAEX,EAUAo1nC,EAAmB72nC,UAAUywgC,cAAgB,SAAU9q2B,GACrD,IAAIh9H,EAASqgV,EAAOhpX,UAAUywgC,cAAc5vgC,MAAMP,KAAMI,WAEpDipF,EAAOrpF,KAAKwkI,UAAUu1R,KAAKi2tB,mBAAmB3q9B,GAIlD,OAHAh9H,EAAO8slC,cAAgBT,GAAiBrriC,EAAMrpF,MAE9CqoC,EAAOsslC,aAAetslC,EAAO8slC,cACtB9slC,CACT,EAYAkulC,EAAmB72nC,UAAU23nC,cAAgB,SAAUjI,GAKrDpvnC,KAAKovnC,WAAapvnC,KAAKovnC,YAAc,CAAC,EACtC,EAAcpvnC,KAAKovnC,WAAYA,EACjC,EAOAmH,EAAmB72nC,UAAU43nC,aAAe,SAAU/rmC,GAapD,IAAIgsmC,EAAav3nC,KAAKw3nC,YAEjBD,IACHA,EAAav3nC,KAAKw3nC,YAAc,KAMhCx3nC,KAAKy3nC,iBAAmB,GAG1B,IAAIz6mC,EAAQu6mC,EAAWp0nC,IAAIooB,GAM3B,OAJa,MAATvO,GACFu6mC,EAAWtrnC,IAAIsf,EAAIvO,EAAQhd,KAAKy3nC,oBAG3Bz6mC,CACT,EAEAu5mC,EAAmB72nC,UAAUg4nC,YAAc,WACzC,OAAO13nC,KAAK23nC,SACd,EAEApB,EAAmB72nC,UAAU03nC,cAAgB,SAAU3C,GACrDA,EAAWz0nC,KAAK23nC,UAAYlD,EAAWA,EAAWz0nC,KAAK23nC,UACvD,IAAIxn+B,EAAOnwJ,KAAKi2gC,aAAal8mB,KAAK5pQ,KAE7Bsk+B,IAAYA,IAAatk+B,GAASA,EAAKvzH,SAAS63lC,MACnDz0nC,KAAK23nC,UAAYxn+B,EAErB,EAEAom+B,EAAmB72nC,UAAUk4nC,gBAAkB,WAC7C1B,GAAuBl2nC,KACzB,EAEAu2nC,EAAmBhqnC,KAAO,iBAC1BgqnC,EAAmB/hI,WAAa,MAChC+hI,EAAmB31lB,cAAgB,CAEjCo4d,YAAa,EAEbn69B,KAAM,SACNC,IAAK,SACLC,MAAO,MACPC,OAAQ,MACRuN,MAAM,EACNsrlC,WAAY,SACZC,YAAa,IAAO,EAAIj1nC,KAAK4yF,KAAK,IAClCsiiC,UAAW,KACXC,cAAe,IAEfC,gBAAiB,MACjB9U,MAAM,EACNhmQ,UAAW,aACXptnB,WAAW,EACX4owB,wBAAyB,IACzBC,gBAAiB,eACjB4Q,WAAY,CACVvmrB,MAAM,EACNjkT,OAAQ,GACRH,KAAM,SACNC,IAAK,SAGLo5lC,eAAgB,GAChB3zI,UAAW,CACTh33B,MAAO,kBACPy73B,UAAW,CACTz73B,MAAO,SAGXqz2B,SAAU,CACR2jB,UAAW,CACTh33B,MAAO,qBAKblsH,MAAO,CACL4hV,MAAM,EAENh6L,SAAU,EACV/wB,QAAS,EACTv5F,SAAU,SAEV4uF,MAAO,OACPg0P,SAAU,YAIZ42wB,WAAY,CACVl1yB,MAAM,EACNtkT,SAAU,CAAC,EAAG,OACdK,OAAQ,GAGRuiV,SAAU,WAEV4xX,cAAe,UAEjBoxQ,UAAW,CACTh33B,MAAO,KACP6qgC,WAAY,KACZC,gBAAiB,KACjB7gJ,YAAa,EACb8gJ,SAAU,EACVhgxB,YAAa,OACbigxB,sBAAuB,MAKzB33J,SAAU,CACRu3J,WAAY,CACVl1yB,MAAM,EACNtkT,SAAU,CAAC,EAAG,OACd4iV,SAAU,WACV4xX,cAAe,WAGnBqlZ,gBAAiB,EACjBC,UAAW,KACXC,UAAW,KACXnrgC,MAAO,GAUP6qgC,WAAY,KACZC,gBAAiB,KACjBM,eAAgB,QAChBnyT,WAAY,GAEZoyT,mBAAoB,KAKpB102B,OAAQ,IAKHqy2B,CACT,CAxRA,CAwRE54W,IC5RF,IAIIk7W,GAEJ,WACE,SAASA,EAAWC,GAClB94nC,KAAKo7T,MAAQ,IAAI,GACjB09zB,EAAe3zmC,IAAInlB,KAAKo7T,MAC1B,CAqHA,OAnHAy9zB,EAAWn5nC,UAAU4uH,OAAS,SAAU003B,EAAa/z8B,EAAKollC,EAAYjjvB,GACpE,IAAIr8Q,EAAQiu3B,EAAYprzB,SAAS,cAC7Bmh8B,EAAY/4nC,KAAKo7T,MAGrB,GAFA29zB,EAAUlr4B,YAEL94H,EAAM5xH,IAAI,SAAYkxnC,EAA3B,CAIA,IAAIpO,EAAmBlx/B,EAAM6iE,SAAS,aAClC0u5B,EAAgBvx9B,EAAM6iE,SAAS,YAC/BgxzB,EAAiBq9H,EAAiBru7B,SAAS,aAC3Coh8B,EAAyB1yC,EAAc1u5B,SAAS,CAAC,YAAa,cAC9Dqh8B,EAAc,CAChB52gC,IAAK,CACHxjF,KAAMk2F,EAAM5xH,IAAI,QAChB08F,MAAOk1B,EAAM5xH,IAAI,SACjB27B,IAAKi2F,EAAM5xH,IAAI,OACf28F,OAAQi1B,EAAM5xH,IAAI,WAEpBy/L,IAAK,CACH7jK,MAAOkQ,EAAIk8L,WACXnsM,OAAQiQ,EAAI+rI,aAEdk98B,eAAgBnjgC,EAAM5xH,IAAI,kBAC1BmrnB,WAAY,EACZ4qgB,WAAY,IAGdl5nC,KAAKm5nC,SAAS9E,EAAY4E,EAAarwI,GAEvC5o/B,KAAKo5nC,eAAep2I,EAAai2I,EAAahT,EAAkB3/B,EAAe19F,EAAgBowI,EAAwB5nvB,GAEvH,GAAuB2nvB,EAAWE,EAAY52gC,IAAK42gC,EAAYr27B,IA1B/D,CA2BF,EAOAi27B,EAAWn5nC,UAAUy5nC,SAAW,SAAU9E,EAAY4E,EAAarwI,GACjE,IAAK,IAAIv/5B,EAAOgriC,EAAYhriC,EAAMA,EAAOA,EAAK3nD,WAAY,CACxD,IAAItR,EAAOsy8B,GAAoBr54B,EAAKuuG,WAAWz0L,IAAI,QAAS,IACxDi9jC,EAAWx3E,EAAe6C,YAAYr79B,GACtC8zjC,EAAYrhlC,KAAK8K,IAAIyyjC,EAASrhiC,MAAQs6lC,GAAkBJ,EAAYf,gBACxEe,EAAY3qgB,YAAc41d,EAzDjB,EA0DT+0C,EAAYC,WAAWr3nC,KAAK,CAC1BwnF,KAAMA,EACNj5D,KAAMA,EACN2O,MAAOmljC,GAEX,CACF,EAMA20C,EAAWn5nC,UAAU05nC,eAAiB,SAAUp2I,EAAai2I,EAAahT,EAAkB3/B,EAAe19F,EAAgBowI,EAAwB5nvB,GAUjJ,IARA,I9M8B6B4inB,EAAc35F,EAAe56iB,EACxD+ue,EACAxqM,EACA//oB,EACAjB,EACA85L,EACArlE,E8MpCEo7uB,EAAQ,EACRqlR,EAAiBe,EAAYf,eAC7Bl5lC,EAASgk9B,EAAY7/+B,IAAI,CAAC,aAAc,WACxCm2nC,G9M2ByBtlI,E8M3BeilI,EAAY52gC,I9M4BtDmsuB,GADyC6rE,E8M3BkB4+N,EAAYr27B,K9M4BxC7jK,MAC/BilnB,EAAkBq2Q,EAAcr73B,OAChC/6B,EAAI,GAAa+v/B,EAAan19B,KAAM2vzB,GACpCxr1B,EAAI,GAAagx/B,EAAal19B,IAAKklnB,GACnClnd,EAAK,GAAak3zB,EAAan05B,MAAO2uvB,GACtC/2tB,EAAK,GAAau83B,EAAal05B,OAAQkkjB,IAC1C13mB,MAAMroC,IAAMqoC,MAAM+9H,WAAW2p1B,EAAan19B,UAAY56B,EAAI,IAC1DqoC,MAAMwwJ,IAAOxwJ,MAAM+9H,WAAW2p1B,EAAan05B,WAAai9F,EAAK0xpB,IAC7DlizB,MAAMtpC,IAAMspC,MAAM+9H,WAAW2p1B,EAAal19B,SAAW97B,EAAI,IACzDspC,MAAMmrF,IAAOnrF,MAAM+9H,WAAW2p1B,EAAal05B,YAAc23B,EAAKushB,GAC/DvkS,EAAS,GAA6BA,GAAU,GACzC,CACL1gV,MAAOl8B,KAAK8K,IAAImvL,EAAK74L,EAAIw7W,EAAO,GAAKA,EAAO,GAAI,GAChDzgV,OAAQn8B,KAAK8K,IAAI8pH,EAAKz0H,EAAIy8W,EAAO,GAAKA,EAAO,GAAI,K8MxC7C6uQ,EAAa2qgB,EAAY3qgB,WACzB4qgB,EAAaD,EAAYC,WACzBjzC,EAAoBK,EAAc1u5B,SAAS,aAAam0zB,eAEnDnr/B,EAAIs4nC,EAAW74nC,OAAS,EAAGO,GAAK,EAAGA,IAAK,CAC/C,IAAIwgD,EAAO83kC,EAAWt4nC,GAClB24nC,EAAWn4kC,EAAKioC,KAChB66/B,EAAY9iiC,EAAKriB,MACjB3O,EAAOgxB,EAAKhxB,KAEZk+lB,EAAagrgB,EAAcv6lC,QAC7BuvlB,GAAc41d,EAAYg0C,EAC1Bh0C,EAAYg0C,EACZ9nmC,EAAO,MAGT,IAAIypH,EAAK,IAAI,GAAgB,CAC3ByoF,MAAO,CACLh3L,OAAQkulC,GAAe3mR,EAAO,EAAGqxO,EAAWlljC,EAAQp+B,IAAMs4nC,EAAW74nC,OAAS,EAAS,IAANO,IAEnFyT,MAAO,EAAS4xmC,EAAiBl6H,eAAgB,CAC/CroO,SAAU,UAEZ12rB,YAAa,IAAI,GAAa,CAC5B34E,MAAOg0+B,GAAgBO,EAAgB,CACrCx49B,KAAMA,MAGVyi8B,WAAY,CACVl07B,SAAU,UAEZo+J,GAAuB,IAAnB+gzB,GACJ27I,QAASzvL,GAAM54jB,EAAUmovB,KAE3B1/+B,EAAGu17B,uBAAwB,EAC3Bv17B,EAAGltD,iBAAiB6o4B,YAAY,YAAYnh9B,MAAQg0+B,GAAgB2wI,EAAwB,CAC1F5omC,KAAMA,IAERypH,EAAG270B,YAAY,YAAYnh9B,MAAQ4xkC,EACnC9hG,GAAoBtq2B,EAAIys8B,EAAcnjlC,IAAI,SAAUmjlC,EAAcnjlC,IAAI,aAAcmjlC,EAAcnjlC,IAAI,aACtGnD,KAAKo7T,MAAMj2S,IAAI00H,GACfy28B,GAAcz28B,EAAImp2B,EAAau2I,GAC/B1mR,GAASqxO,EAtHA,CAuHX,CACF,EAEA20C,EAAWn5nC,UAAUmzB,OAAS,WAC5B7yB,KAAKo7T,MAAMvtE,WACb,EAEOgr4B,CACT,CA1HA,GA4HA,SAASW,GAAev1nC,EAAGjB,EAAGkhlC,EAAWluT,EAAYjvuB,EAAMy3I,GACzD,IAAIlzJ,EAAS,CAAC,CAACyb,EAAO9iD,EAAIA,EAjIT,EAiI2BjB,GAAI,CAACiB,EAAIiglC,EAAWlhlC,GAAI,CAACiB,EAAIiglC,EAAWlhlC,EAAIgzxB,GAAa,CAACjvuB,EAAO9iD,EAAIA,EAjIhG,EAiIkHjB,EAAIgzxB,IAGvI,OAFCx3lB,GAAQlzJ,EAAOroB,OAAO,EAAG,EAAG,CAAChf,EAAIiglC,EAlIjB,EAkI2ClhlC,EAAIgzxB,EAAa,KAC5EjvuB,GAAQzb,EAAOzpC,KAAK,CAACoC,EAAGjB,EAAIgzxB,EAAa,IACnC1qvB,CACT,CAGA,SAASgljC,GAAcz28B,EAAImp2B,EAAau2I,GACtCv8I,GAAUnj2B,GAAIknT,UAAY,CACxB7kP,cAAe,SACfu0zB,iBAAkB,UAClBtlvB,eAAgB63tB,EAAY73tB,eAC5B+xtB,YAAa8F,EAAY9F,YACzBoe,WAAYtY,EAAYt4+B,KACxB+x0B,WAAY,UACZi9S,SAAU,aACV3w2B,SAAU,CACR1jH,UAAWk09B,GAAYA,EAASl09B,UAChC36J,KAAM6unC,GAAYA,EAAS7unC,MAE7BiqnC,aAAc4E,GAAY7E,GAAiB6E,EAAUv2I,GAEzD,CAEA,YCvJA,IAAI22I,GAEJ,WACE,SAASA,IACP35nC,KAAKo1Y,SAAW,GAChBp1Y,KAAK45nC,aAAe,CAAC,CACvB,CAwEA,OA9DAD,EAAcj6nC,UAAUylB,IAAM,SAAU00H,EAAI/pI,EAAQu1C,EAAUlE,EAAO0pE,GACnE,OAAI7qH,KAAK45nC,aAAa//+B,EAAGtuH,MAIzBvrB,KAAK45nC,aAAa//+B,EAAGtuH,KAAM,EAE3BvrB,KAAKo1Y,SAASvzY,KAAK,CACjBg4I,GAAIA,EACJ/pI,OAAQA,EACRu1C,SAAUA,EACVlE,MAAOA,EACP0pE,OAAQA,KAGH,EACT,EAMA8ugC,EAAcj6nC,UAAUoigB,SAAW,SAAU54e,GAE3C,OADAlpB,KAAK65nC,kBAAoB3wmC,EAClBlpB,IACT,EAMA25nC,EAAcj6nC,UAAU8mC,MAAQ,WAgB9B,IAfA,IAAIkmB,EAAQ1sD,KAERupD,EAAQvpD,KAAKo1Y,SAAS/0Y,OAEtBy5nC,EAAiB,aACnBvwkC,GAEa,IAEXmD,EAAM0oV,SAAS/0Y,OAAS,EACxBqsD,EAAMktkC,aAAe,CAAC,EACtBltkC,EAAMmtkC,mBAAqBntkC,EAAMmtkC,oBAErC,EAESj5nC,EAAI,EAAGi+H,EAAM7+H,KAAKo1Y,SAAS/0Y,OAAQO,EAAIi+H,EAAKj+H,IAAK,CACxD,IAAIwgD,EAAOphD,KAAKo1Y,SAASx0Y,GACzBwgD,EAAKy4F,GAAGg/0B,UAAUz36B,EAAKtxC,OAAQ,CAC7Bu1C,SAAUjE,EAAKiE,SACflE,MAAOC,EAAKD,MACZ0pE,OAAQzpE,EAAKypE,OACbqv2B,YAAY,EACZh59B,KAAM44nC,EACNrwmC,QAASqwmC,GAEb,CAEA,OAAO95nC,IACT,EAEO25nC,CACT,CA7EA,GCII,GAAQ,GACR,GAAO,GAEPI,GAAoB,QACpBC,GAAyB,aAEzBC,GAA6B,GAAnBn8I,GAEVo8I,GAA2B,EAAnBp8I,GACRq8I,GAAgC,EAAnBr8I,GACbs8I,GAAoB/yJ,GAAgB,CAAC,CAAC,OAAQ,SAElD,CAAC,SAAU,eAAgB,CAAC,YAAa,eAAgB,CAAC,cAAe,CAAC,iBAAkB,CAAC,iBAAkB,CAAC,iBAI5GgzJ,GAAqB,SAAUtlgC,GAEjC,IAAIwv3B,EAAY61I,GAAkBrlgC,GAGlC,OADAwv3B,EAAUnnO,OAASmnO,EAAUnn3B,KAAOmn3B,EAAUlyqB,UAAY,KACnDkyqB,CACT,EAEI,GAAQrhB,KAERo3J,GAEJ,SAAU5xwB,GAGR,SAAS4xwB,IACP,IAAI5tkC,EAAmB,OAAXg8T,GAAmBA,EAAOnoX,MAAMP,KAAMI,YAAcJ,KAKhE,OAHA0sD,EAAMngD,KAAO+tnC,EAAY/tnC,KACzBmgD,EAAMzmC,OAAS,QACfymC,EAAM0oV,SAigBD,CACLmlvB,UAAW,GACX5w4B,WAAY,GACZjxJ,QAAS,IAngBFhsC,CACT,CAufA,OAhgBAkgX,EAAU0ttB,EAAa5xwB,GAevB4xwB,EAAY56nC,UAAU4uH,OAAS,SAAU003B,EAAa1f,EAASr07B,EAAKna,GAOlE,KAAIt0B,EANS8i+B,EAAQw+B,eAAe,CAClCh+B,SAAU,SACViD,QAAS,UACT934B,MAAOn6D,IAGWku9B,GAAe,GAAnC,CAIAhj/B,KAAKgj/B,YAAcA,EACnBhj/B,KAAKivC,IAAMA,EACXjvC,KAAKsj+B,QAAUA,EACf,IACIhuB,EAAa,GAA0Bxg7B,EAD/B,CAAC,oBAAqB,qBACyBku9B,GACvDkC,EAAcpw9B,GAAWA,EAAQvoB,KACjC6inC,EAAapsI,EAAYosI,WACzB35H,GAAUz1/B,KAAKw6nC,SACfC,EAAcz6nC,KAAKo1Y,SAEnBslvB,EAAyB,sBAAhBx1I,GAAuC5vC,GAAcmlL,EAAc,CAC9EE,cAAeF,EAAYF,UAAUjlL,EAAWjs3B,KAAKij7B,eACrD3+4B,UAAW74F,EAAQ64F,WACjB,KAEAmrgC,EAAiB94nC,KAAK46nC,oBAAoBxL,GAE1CvkC,EAAe7nG,EAAY7/+B,IAAI,aAE/B03nC,EAAe76nC,KAAK86nC,UAAUhC,EAAgB91I,EAAa03I,IAE/D7vC,GAAiBp1F,GAAYvQ,GAA+B,sBAAhBA,GAAuD,sBAAhBA,EAA8G21I,EAAaE,gBAApF/6nC,KAAKg7nC,aAAalC,EAAgB+B,EAAc73I,EAAa03I,GAEvL16nC,KAAKi7nC,iBAAiBhslC,GAEtBjvC,KAAKk7nC,kBAAkBl4I,EAAa/z8B,EAAKqm6B,EA3BzC,CA4BF,EAEAglL,EAAY56nC,UAAUk7nC,oBAAsB,SAAUxL,GACpD,IAAI0J,EAAiB94nC,KAAKm7nC,gBAc1B,OAZKrC,IAGHA,EAAiB94nC,KAAKm7nC,gBAAkB,IAAI,GAE5Cn7nC,KAAK4yiC,YAAYkmF,GAEjB94nC,KAAKo7T,MAAMj2S,IAAI2zmC,IAGjBA,EAAe70nC,EAAImrnC,EAAWnrnC,EAC9B60nC,EAAe91nC,EAAIosnC,EAAWpsnC,EACvB81nC,CACT,EAEAwB,EAAY56nC,UAAUo7nC,UAAY,SAAUhC,EAAgB91I,EAAa03I,GACvE,IAAIU,EAAWp4I,EAAYx+2B,UAAUu1R,KACjCmjG,EAAUl9f,KAAKw6nC,SAEfa,EA4bC,CACLd,UAAW,GACX5w4B,WAAY,GACZjxJ,QAAS,IA9bL+hiC,EA2bC,CACLF,UAAW,GACX5w4B,WAAY,GACZjxJ,QAAS,IA7bL4iiC,EAAat7nC,KAAKo1Y,SAClBmmvB,EAAmB,GAEvB,SAASC,EAAankP,EAAU5jV,EAAS6hK,EAAa/9kB,GACpD,OAkcN,SAAoByr2B,EAAay3I,EAAaa,EAAYZ,EAAQW,EAAmBE,EAAkBlkP,EAAU5jV,EAAS6hK,EAAa/9kB,GAErI,GAAK8/vB,EAAL,CASA,IAAIokP,EAAapkP,EAASsxK,YACtBn5iC,EAAOwz+B,EAAYx+2B,UACnBk3/B,EAAYrkP,EAASz/sB,WAKzB,GAFApoL,EAAKu5iC,iBAAiB1xK,EAAShyuB,UAAW,MAErCo29B,GAAeA,EAAWE,SAA/B,CAIA,IAAIC,EAAYH,EAAW18lC,MACvB88lC,EAAaJ,EAAWz8lC,OACxBw48B,EAAcikJ,EAAWjkJ,YACzBskJ,EAAgBL,EAAWngK,UAC3BygK,EAAe1kP,EAASi1H,cACxB0vH,EAAcvokB,GAAWA,EAAQ64c,cACjC2vH,EAAmB5kP,EAASr9oB,aAC5Bki4B,EAAcT,EAAWS,YACzBt4b,EAAWq4b,GAAoBA,EAAiB57nC,OAChD87nC,EAAuBT,EAAU9j8B,SAAS,aAC1Cwk8B,EAAyBV,EAAU9j8B,SAAS,CAAC,WAAY,cACzDyk8B,EAAqBX,EAAU9j8B,SAAS,CAAC,OAAQ,cACjD0k8B,EAAuBZ,EAAU9j8B,SAAS,CAAC,SAAU,cACrD+gL,EAAewjxB,EAAqBh5nC,IAAI,iBAAmB,EAI3Di4T,EAAQmh0B,EAAY,YAAa,IAErC,GAAKnh0B,EAAL,CAYA,GARAk6Z,EAAYnwsB,IAAIi2S,GAEhBA,EAAMn3T,EAAIw3nC,EAAWx3nC,GAAK,EAC1Bm3T,EAAMp4T,EAAIy4nC,EAAWz4nC,GAAK,EAC1Bo4T,EAAMs3pB,aACN,GAAMt3pB,GAAOoh0B,UAAYZ,EACzB,GAAMxg0B,GAAOqh0B,WAAaZ,EAEtBJ,EAAWiB,gBACb,OAAOth0B,EAIT,IAAIuh0B,EAAKJ,EAAY,aAAc,GAAMhl/B,EAAO2i/B,IAChDyC,GAwCA,SAA0Bvh0B,EAAOuh0B,EAAIC,GACnC,IAAIz/I,EAASH,GAAU2/I,GAYvB,GAVAx/I,EAAO930B,UAAYgyuB,EAAShyuB,UAC5B830B,EAAOD,YAAc8F,EAAY9F,YACjCy/I,EAAG/1uB,SAAS,CACV3iZ,EAAG,EACHjB,EAAG,EACH+7B,MAAO68lC,EACP58lC,OAAQ68lC,EACR97nC,EAAG44W,IAGDmjxB,EAIFe,EAAiBF,OACZ,CACLA,EAAGrhK,WAAY,EACf,IAAIjn9B,EAAQgj4B,EAASykJ,UAAU,SAC3BghG,EAAoBzonC,EAAM+owB,OAC1BgrO,EAAciyI,GAAmB8B,GACrC/zI,EAAYhr3B,KAAO0//B,EACnB,IAAI58I,EAAgBk6I,GAAkBgC,GACtCl8I,EAAc9i3B,KAAOg//B,EAAuBj5nC,IAAI,eAChD,IAAIu9+B,EAAY05I,GAAkBiC,GAClC37I,EAAUtj3B,KAAOi//B,EAAmBl5nC,IAAI,eACxC,IAAIkjnC,EAAc+T,GAAkBkC,GAGpC,GAFAjW,EAAYjp/B,KAAOk//B,EAAqBn5nC,IAAI,eAExCy5nC,EAAe,CACjB,IAAIG,EAAkBnB,EAAY,EAAIpkJ,EACtCwlJ,EACAL,EAAIG,EAAmBzonC,EAAMu3H,QAAS,CACpC3nI,EAAGuz+B,EACHx0+B,EAAG,EACH+7B,MAAOg+lC,EACP/9lC,OAAQk9lC,GAEZ,MAEIS,EAAG1kK,oBAGP0kK,EAAGr4tB,SAAS8jlB,GACZu0I,EAAGnnK,YAAY,YAAYnh9B,MAAQ6r+B,EACnCy8I,EAAGnnK,YAAY,QAAQnh9B,MAAQqs+B,EAC/Bi8I,EAAGnnK,YAAY,UAAUnh9B,MAAQgymC,EACjCvlI,GAAqB67I,EACvB,CAEAvh0B,EAAMj2S,IAAIw3mC,EACZ,CA7FMM,CAAiB7h0B,EAAOuh0B,EAAI/4b,GAAY63b,EAAWyB,kBACzD,IAAI52C,EAAgBo1C,EAAU9j8B,SAAS,YACnCk5K,EAAQw1uB,EAAcnjlC,IAAI,SAC1Bo/+B,EAAY+jG,EAAcnjlC,IAAI,aAC9B8riB,EAAaq3iB,EAAcnjlC,IAAI,YAC/Bg6nC,EAA2B,aAAVrsxB,EAAuBumiB,EAAS65O,sBAAkC,eAAVpgxB,EAAyBumiB,EAAS85O,uBAAyBrgxB,EAExI,GAAI8yV,EAIEohT,GAAqB5prB,IACvB6orB,GAAwB7orB,GAAO,GAG7Buh0B,IACF14I,GAAwB04I,GAAK1tlB,GAE7Bz/hB,EAAKu5iC,iBAAiB1xK,EAAShyuB,UAAWs39B,GAC1Cz4I,GAAiBy4I,EAAIQ,EAAgB56I,QAElC,CACL,IAAI7p5B,EAAU6jiC,EAAY,UAAW,GAAMhl/B,EAAO4i/B,IAClDzhiC,GAwEF,SAAuB0iO,EAAO1iO,GAC5B,IAAIyk5B,EAASH,GAAUtk5B,GAEvByk5B,EAAO930B,UAAYgyuB,EAAShyuB,UAC5B830B,EAAOD,YAAc8F,EAAY9F,YACjC,IAAInU,EAAelm+B,KAAK8K,IAAIiunC,EAAY,EAAIpkJ,EAAa,GACrDjO,EAAgB1m+B,KAAK8K,IAAIkunC,EAAa,EAAIrkJ,EAAa,GAU3D,GATA9+4B,EAAQsz4B,SAAU,EAClBtz4B,EAAQkuT,SAAS,CACf3iZ,EAAGuz+B,EACHx0+B,EAAGw0+B,EACHz48B,MAAOgq8B,EACP/p8B,OAAQuq8B,EACRxp+B,EAAG44W,IAGDmjxB,EAIFe,EAAiBnkiC,OACZ,CACLA,EAAQ4i4B,WAAY,EACpB,IAAI8hK,EAAY/lP,EAASykJ,UAAU,SAC/ByqD,EAAc62C,EAAUhggC,KACxBgr3B,EAAciyI,GAAmB8B,GACrC/zI,EAAYhr3B,KAAOmp9B,EACnBn+F,EAAY5U,MAAQ4pJ,EAAU5pJ,MAC9B,IAAI0M,EAAgBk6I,GAAkBgC,GAClC17I,EAAY05I,GAAkBiC,GAC9BhW,EAAc+T,GAAkBkC,GAEpCU,EAAYtkiC,EAAS6t/B,EAAa62C,EAAUxx/B,QAAS,MACrDlzC,EAAQ4rU,SAAS8jlB,GACjB1v5B,EAAQ883B,YAAY,YAAYnh9B,MAAQ6r+B,EACxCxn5B,EAAQ883B,YAAY,QAAQnh9B,MAAQqs+B,EACpCho5B,EAAQ883B,YAAY,UAAUnh9B,MAAQgymC,EACtCvlI,GAAqBpo5B,EACvB,CAEA0iO,EAAMj2S,IAAIuzE,EACZ,CAjHa2kiC,CAAcji0B,EAAO1iO,GAChCikiC,EAAGW,iBAAkB,EAEjBX,GAAM33I,GAAqB23I,IAC7B14I,GAAwB04I,GAAI,GAG9B14I,GAAwB7orB,GAAQ6zO,GAEhCz/hB,EAAKu5iC,iBAAiB1xK,EAAShyuB,UAAW+1J,GAC1C8orB,GAAiB9orB,EAAO+h0B,EAAgB56I,EAC1C,CAEA,OAAOnnrB,CApDP,CAvBA,CAbA,CA8LA,SAASyh0B,EAAiB9wiC,IAGvBA,EAAQuv4B,WAAaigK,EAAiB15nC,KAAKkqF,EAC9C,CAEA,SAASixiC,EAAYphJ,EAAQ2qG,EAAaqZ,EAC1C29B,GACE,IAAIxyI,EAAmB2wI,EAAU9j8B,SAAS2l8B,EAAiBvD,GAAyBD,IAChFh4R,EAAc2gI,GAAoBg5J,EAAUv4nC,IAAI,QAAS,MACzDq6nC,EAASzyI,EAAiBxjB,WAAW,QACzCsgB,GAAcjM,EAAQ8M,GAAqBgzI,EAAW6B,EAAiBvD,GAAyBD,IAAoB,CAClHh4R,YAAay7R,EAASz7R,EAAc,KACpCgoJ,aAAcw8F,EACd/7F,eAAgBo1G,EAChBt4G,aAActE,EACduE,eAAgBlwG,EAAShyuB,YAE3B,IAAI61yB,EAAS0gC,EAAOjv5B,iBAEpB,GAAKuu3B,EAAL,CAIA,IAAI8tC,EAAY9tC,EAAO7m8B,MACnBmk+B,EAAc/tC,GAAkBu+C,EAAU9w3B,SAAW,GAErDqlgC,IACF3hJ,EAAOlnB,cAAc,CACnBxB,WAAYqqK,IAEdriL,EAAOmzH,oBAAqB,GAG9BnzH,EAAOd,aAAe,WACpB,IAAIr76B,EAAQl8B,KAAK8K,KAAK4vnC,EAAiBA,EAAex+lC,MAAQ688B,EAAOt5wB,MAAMvjM,OAASy58B,EAAY,GAAKA,EAAY,GAAI,GACjHx58B,EAASn8B,KAAK8K,KAAK4vnC,EAAiBA,EAAev+lC,OAAS488B,EAAOt5wB,MAAMtjM,QAAUw58B,EAAY,GAAKA,EAAY,GAAI,GAEpHwQ,EAAUjq9B,QAAUA,GAASiq9B,EAAUhq9B,SAAWA,GACpDk86B,EAAO52iB,SAAS,CACdvlY,MAAOA,EACPC,OAAQA,GAGd,EAEAgq9B,EAAUlQ,gBAAkB,EAC5BkQ,EAAUnQ,aAAe,WACzB4kJ,EAAiBz0I,EAAWu0I,EAAgB9B,GAC5C,IAAIiC,EAAoBxiL,EAAO521B,SAAS,YACxCm5gC,EAAiBC,EAAoBA,EAAkBrpnC,MAAQ,KAAMkpnC,EAAgB9B,EA5BrF,CA6BF,CAEA,SAASgC,EAAiBppnC,EAAOkpnC,EAAgB9B,GAC/C,IAAIrrmC,EAAO/b,EAAQA,EAAM+b,KAAO,KAEhC,IAAKmtmC,GAAkB9B,EAAWkC,YAAsB,MAARvtmC,EAAc,CAC5D,IAAIwtmC,EAAW56I,EAAY7/+B,IAAI,iBAAiB,GAChDkR,EAAM+b,KAAOwtmC,EAAWA,EAAW,IAAMxtmC,EAAOA,CAClD,CACF,CAEA,SAASmsmC,EAAYsB,EAAa70L,EAAMzxzB,EAAO5xI,GAC7C,IAAIomF,EAAyB,MAAfiwiC,GAAuBV,EAAWuC,GAAa7B,GACzD8B,EAAQzC,EAAkBwC,GAkB9B,OAhBI9xiC,GAEFuviC,EAAWuC,GAAa7B,GAAe,KAiB3C,SAAoC8B,EAAO/xiC,GACzC,IAAIgyiC,EAAUD,EAAM/B,GAAgB,CAAC,EAEjChwiC,aAAmB,IACrBgyiC,EAAQrlB,KAAO3shC,EAAQ9nF,EACvB85nC,EAAQplB,KAAO5shC,EAAQ/oF,GAEvB+6nC,EAAQC,SAAW30uB,EAAO,CAAC,EAAGt9T,EAAQu2I,MAE1C,CAzBI275B,CAA2BH,EAAO/xiC,IAE1B+viC,KACN/viC,EAAU,IAAIi92B,aAES,KACrBj92B,EAAQgxG,GAkElB,SAAqBxlD,EAAO2m/B,GAC1B,OAAO3m/B,EAAQ0i/B,GAAUiE,CAC3B,CApEuBC,CAAY5m/B,EAAO5xI,IAuBxC,SAAmCm4nC,EAAO/xiC,GACxC,IAAIgyiC,EAAUD,EAAM/B,GAAgB,CAAC,EACjCr6lC,EAAa212B,EAAS312B,WACtBqhrB,EAAUh3nB,aAAmB,GAEjC,GAAIrqD,KAAgBg5lC,GAA+B,cAArBA,EAAO/sgC,WAA4B,CAC/D,IAAIywgC,EAAa,EACbC,EAAa,EAGbC,EAAcjD,EAAkB1x4B,WAAWjoN,EAAW4q+B,gBAErDouH,GAAU4D,GAAeA,EAAYN,WACxCI,EAAaE,EAAYN,SAASj/lC,MAClCs/lC,EAAaC,EAAYN,SAASh/lC,QAKhC+jrB,GACFg7a,EAAQrlB,KAAO,EACfqlB,EAAQplB,KAAO0lB,GAEfN,EAAQC,SAAW,CACjB/5nC,EAAGm6nC,EACHp7nC,EAAGq7nC,EACHt/lC,MAAO,EACPC,OAAQ,EAGd,CAGA++lC,EAAQQ,QAAUx7a,CACpB,CAtDMy7a,CAA0BV,EAAO/xiC,IAI9B0uiC,EAAYoD,GAAa9B,GAAgBhwiC,CAClD,CAkDF,CA5wBa0yiC,CAAWz7I,EAAay3I,EAAaa,EAAYZ,EAAQW,EAAmBE,EAAkBlkP,EAAU5jV,EAAS6hK,EAAa/9kB,EACvI,EAiBA,SAASmn/B,EAAWzC,EAAkB0C,EAAiBrpa,EAAaspa,EAAUrn/B,GAe5E,SAASs9M,EAAOxrQ,GAEd,OAAOA,EAAKoqZ,OACd,CAEA,SAASorpB,EAAYh20B,EAAU4kN,GAC7B,IAAI4pY,EAAuB,MAAZxulB,EAAmBoz0B,EAAiBpz0B,GAAY,KAC3D4qQ,EAAsB,MAAZhmD,EAAmBkxnB,EAAgBlxnB,GAAY,KACzDryM,EAAQog0B,EAAankP,EAAU5jV,EAAS6hK,EAAa/9kB,GACzD6jL,GAASsj0B,EAAWrnP,GAAYA,EAASr9oB,cAAgB,GAAIy5T,GAAWA,EAAQz5T,cAAgB,GAAIohE,EAAOwj0B,EAAUrn/B,EAAQ,EAC/H,CArBIqn/B,GACFD,EAAkB1C,EAClB,EAAKA,GAAkB,SAAU/xiC,EAAOltE,IACrCktE,EAAM4oiC,aAAe+L,EAAY7hnC,EAAOA,EAC3C,KAIE,IAAI,GAAW2hnC,EAAiB1C,EAAkBpnyB,EAAQA,GAAQ1vU,IAAI05mC,GAAatwjC,OAAOswjC,GAAahsmC,OAAOm36B,GAAM60L,EAAa,OAAO98uB,SAc9I,CArCA28uB,CAAWtD,EAASjr+B,KAAO,CAACir+B,EAASjr+B,MAAQ,GAAI+sW,GAAWA,EAAQ/sW,KAAO,CAAC+sW,EAAQ/sW,MAAQ,GAAI2o+B,EAAgBsC,IAAal+nB,IAAYA,EAAS,GAElJ,IAAI4hoB,EAqCJ,SAAsB7qmC,GACpB,IAAI6qmC,EAuYD,CACLvE,UAAW,GACX5w4B,WAAY,GACZjxJ,QAAS,IAnYP,OANAzkE,GAAW,EAAKA,GAAS,SAAU86K,EAAO8u7B,GACxC,IAAIkB,EAASD,EAAcjB,GAC3B,EAAK9u7B,GAAO,SAAUl1D,GACpBA,IAAOkl/B,EAAOl9nC,KAAKg4I,GAAK,GAAMA,GAAIml/B,YAAa,EACjD,GACF,IACOF,CACT,CA9CoBG,CAAa3D,GAGjC,OAFAt7nC,KAAKw6nC,SAAWY,EAChBp7nC,KAAKo1Y,SAAWqlvB,EACT,CACLY,kBAAmBA,EACnByD,cAAeA,EACf/D,cA0CF,WACE,EAAK+D,GAAe,SAAU9uN,GAC5B,EAAKA,GAAK,SAAUn2xB,GAClBA,EAAGxoD,QAAUwoD,EAAGxoD,OAAOx+D,OAAOgnH,EAChC,GACF,IACA,EAAK0h/B,GAAkB,SAAU1h/B,GAC/BA,EAAGyh1B,WAAY,EAGfzh1B,EAAGisnB,OACL,GACF,EACF,EAEAw0X,EAAY56nC,UAAUs7nC,aAAe,SAAUlC,EAAgB+B,EAAc73I,EAAa03I,GACxF,IAAI7kxB,EAAiBmtoB,EAAY7/+B,IAAI,2BACjC2yW,EAAektoB,EAAY7/+B,IAAI,mBAE/BkiD,GAAY2/M,GAAW6wG,GAAkB,EAAIA,IAAmB,EAChEhrP,GAAUm6I,GAAW8wG,GAAgB,KAAOA,IAAiB,WAC7DopxB,EDjHC,IAAIvF,GCmHT,EAAKkB,EAAaiE,eAAe,SAAU/v7B,EAAO8u7B,GAChD,EAAK9u7B,GAAO,SAAUl1D,EAAI+h4B,GACxB,IAAI/h4B,EAAGyh1B,UAAP,CAIA,IAEIxr9B,EAFAuhF,EAASwoD,EAAGxoD,OAGZ8tiC,EAAa,GAAM9tiC,GAEvB,GAAIqpiC,GAA+B,cAArBA,EAAO/sgC,UACnB79G,EAASuhF,IAAWqpiC,EAAOC,cAGzB,CACAr45B,MAAO,CACLr+N,EAAG,EACHjB,EAAG,EACH+7B,MAAOogmC,EAAW3C,UAClBx9lC,OAAQmgmC,EAAW1C,YAErBponC,MAAO,CACLu3H,QAAS,IAGX,CACAv3H,MAAO,CACLu3H,QAAS,QAGR,CACL,IAAIk1M,EAAU,EACVtnG,EAAU,EAET2l5B,EAAWH,aAIdl+yB,EAAUq+yB,EAAW3C,UAAY,EACjChj5B,EAAU2l5B,EAAW1C,WAAa,GAGpC3snC,EAAyB,cAAhB+tnC,EAA8B,CACrC55nC,EAAG68U,EACH99U,EAAGw2O,EACHnlO,MAAO,CACLu3H,QAAS,IAET,CACF02F,MAAO,CACLr+N,EAAG68U,EACH99U,EAAGw2O,EACHz6M,MAAO,EACPC,OAAQ,GAEV3qB,MAAO,CACLu3H,QAAS,GAGf,CAGA97H,GAAUovnC,EAAc/5mC,IAAI00H,EAAI/pI,EAAQu1C,EAAU,EAAGwlE,EA3DrD,CA4DF,GACF,IAEA,EAAK7qH,KAAKo1Y,UAAU,SAAUrmM,EAAO8u7B,GACnC,EAAK9u7B,GAAO,SAAUl1D,EAAI+h4B,GACxB,IAAIj3/B,EAAOk2mC,EAAaQ,kBAAkBwC,GAAajiH,GACnD9rgC,EAAS,CAAC,EAET6U,IAIDk1H,aAAc,GACC,MAAbl1H,EAAK+zlC,OACP5omC,EAAO7L,EAAI41I,EAAG51I,EACd6L,EAAO9M,EAAI62I,EAAG72I,EACd62I,EAAG51I,EAAI0gB,EAAK+zlC,KACZ7+9B,EAAG72I,EAAI2hB,EAAKg0lC,OAGVh0lC,EAAKq5mC,WACPlunC,EAAOwyN,MAAQ+mL,EAAO,CAAC,EAAGxvQ,EAAGyoF,OAC7BzoF,EAAG+sQ,SAASjiY,EAAKq5mC,WAGfr5mC,EAAK45mC,QACP1k/B,EAAGyqR,SAAS,UAAW,GACvBx0Z,EAAOuE,MAAQ,CACbu3H,QAAS,IAIiB,IAArBiO,EAAGxlI,MAAMu3H,UACd97H,EAAOuE,MAAQ,CACbu3H,QAAS,KAKjBsz/B,EAAc/5mC,IAAI00H,EAAI/pI,EAAQu1C,EAAU,EAAGwlE,GAC7C,GACF,GAAG7qH,MACHA,KAAKimB,OAAS,YACdi5mC,EAAcp9nB,SAASz+f,IAAK,WAC1BrD,KAAKimB,OAAS,QACd40mC,EAAaE,eACf,GAAG/6nC,OAAOwmC,OACZ,EAEA8zlC,EAAY56nC,UAAUu7nC,iBAAmB,SAAUhslC,GACjD,IAAIshG,EAAavwI,KAAKqinC,YAEjB9x+B,KACHA,EAAavwI,KAAKqinC,YAAc,IAAI,GAAepzkC,EAAIk9/B,UAC5CnphC,OAAOhjB,KAAKgj/B,YAAY7/+B,IAAI,SACvCotI,EAAW3/H,GAAG,MAAOvN,GAAKrD,KAAKuhH,OAAQvhH,OACvCuwI,EAAW3/H,GAAG,OAAQvN,GAAKrD,KAAKo/nC,QAASp/nC,QAG3C,IAAI0zF,EAAO,IAAI,GAAa,EAAG,EAAGzkD,EAAIk8L,WAAYl8L,EAAI+rI,aACtDzqC,EAAWgo+B,mBAAkB,SAAUp5mC,EAAG8E,EAAGjB,GAC3C,OAAO0wF,EAAKkg3B,QAAQ3v8B,EAAGjB,EACzB,GACF,EAEAs3nC,EAAY56nC,UAAU2/nC,iBAAmB,WACvC,IAAI9u/B,EAAavwI,KAAKqinC,YAElB9x+B,IACFA,EAAW80zB,UACX90zB,EAAa,KAEjB,EAEA+p/B,EAAY56nC,UAAU6hH,OAAS,SAAUpiH,GACvC,GAAoB,cAAhBa,KAAKimB,SAA2BpjB,KAAKmjH,IAAI7mH,EAAEq1I,IAxU9B,GAwUsD3xI,KAAKmjH,IAAI7mH,EAAEk1I,IAxUjE,GAwUwF,CAEvG,IAAI8b,EAAOnwJ,KAAKgj/B,YAAYx+2B,UAAUu1R,KAAK5pQ,KAE3C,IAAKA,EACH,OAGF,IAAI4g+B,EAAa5g+B,EAAKw45B,YAEtB,IAAKooE,EACH,OAGF/wnC,KAAKivC,IAAIu1/B,eAAe,CACtBj4hC,KAAM,cACNwR,KAAM/d,KAAKozV,IACX2pb,SAAU/8wB,KAAKgj/B,YAAYz39B,GAC3B+zmC,SAAU,CACRr7nC,EAAG8snC,EAAW9snC,EAAI9E,EAAEq1I,GACpBxxI,EAAG+tnC,EAAW/tnC,EAAI7D,EAAEk1I,GACpBt1G,MAAOgylC,EAAWhylC,MAClBC,OAAQ+xlC,EAAW/xlC,SAGzB,CACF,EAEAs7lC,EAAY56nC,UAAU0/nC,QAAU,SAAUjgoC,GACxC,IAAIwioB,EAASxioB,EAAEwtL,QACX06sB,EAASlo4B,EAAEytL,QAEf,GAAoB,cAAhB5sL,KAAKimB,OAAwB,CAE/B,IAAIkqI,EAAOnwJ,KAAKgj/B,YAAYx+2B,UAAUu1R,KAAK5pQ,KAE3C,IAAKA,EACH,OAGF,IAAI4g+B,EAAa5g+B,EAAKw45B,YAEtB,IAAKooE,EACH,OAGF,IAAIr9hC,EAAO,IAAI,GAAaq9hC,EAAW9snC,EAAG8snC,EAAW/tnC,EAAG+tnC,EAAWhylC,MAAOgylC,EAAW/xlC,QACjFowlC,EAAapvnC,KAAKgj/B,YAAYosI,WAK9BhsnC,E9Q1bC,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,G8Q2brB,GAAiBA,EAAGA,EAAG,GAJvBu+nB,GAAUytf,EAAWnrnC,KACrBoj4B,GAAU+nP,EAAWpsnC,KAIrB,GAAaI,EAAGA,EAAG,CAACjE,EAAE2iG,MAAO3iG,EAAE2iG,QAC/B,GAAiB1+F,EAAGA,EAAG,CAACu+nB,EAAQ0lQ,IAChC3zyB,EAAKo42B,eAAe1o8B,GACpBpD,KAAKivC,IAAIu1/B,eAAe,CACtBj4hC,KAAM,gBACNwR,KAAM/d,KAAKozV,IACX2pb,SAAU/8wB,KAAKgj/B,YAAYz39B,GAC3B+zmC,SAAU,CACRr7nC,EAAGyvF,EAAKzvF,EACRjB,EAAG0wF,EAAK1wF,EACR+7B,MAAO20D,EAAK30D,MACZC,OAAQ00D,EAAK10D,SAGnB,CACF,EAEAs7lC,EAAY56nC,UAAUkziC,YAAc,SAAUkmF,GAC5C,IAAIpskC,EAAQ1sD,KAEZ84nC,EAAelonC,GAAG,SAAS,SAAUzR,GACnC,GAAqB,UAAjButD,EAAMzmC,OAAV,CAIA,IAAIk31B,EAAYzwzB,EAAMs27B,YAAY7/+B,IAAI,aAAa,GAEnD,GAAKg62B,EAAL,CAIA,IAAIm4F,EAAa5o5B,EAAM6ykC,WAAWpgoC,EAAEg5H,QAASh5H,EAAEi5H,SAE/C,GAAKk90B,EAAL,CAIA,IAAIjs3B,EAAOis3B,EAAWjs3B,KAEtB,GAAIA,EAAKs/9B,YAAYg1E,WACnBjxkC,EAAM8ykC,YAAYlqL,QAElB,GAAkB,eAAdn4F,EACFzwzB,EAAM+ykC,YAAYnqL,QACb,GAAkB,SAAdn4F,EAAsB,CAC/B,IAAIunI,EAAYr75B,EAAKwpiC,SAASrjnC,KAAKqhgC,aAAaxn7B,EAAKg8E,WACjDs6O,EAAO+kmB,EAAUvh/B,IAAI,QAAQ,GAC7Bu8nC,EAAah7I,EAAUvh/B,IAAI,UAAU,IAAS,QAClDw8Y,GAAQwzmB,GAAWxzmB,EAAM+/uB,EAC3B,CAdF,CANA,CANA,CA4BF,GAAG1/nC,KACL,EAEAs6nC,EAAY56nC,UAAUw7nC,kBAAoB,SAAUl4I,EAAa/z8B,EAAKqm6B,GACpE,IAAI5o5B,EAAQ1sD,KAEPs18B,IACHA,EAAmD,MAAtC0tC,EAAY7/+B,IAAI,aAAa,GAAgB,CACxDkmF,KAAM255B,EAAY00I,eAIlB13nC,KAAKu/nC,WAAWtwlC,EAAIk8L,WAAa,EAAGl8L,EAAI+rI,YAAc,MAGtDs6xB,EAAa,CACXjs3B,KAAM255B,EAAYx+2B,UAAUu1R,KAAK5pQ,QAKtCnwJ,KAAK2/nC,cAAgB3/nC,KAAK2/nC,YAAc,IAAI,GAAW3/nC,KAAKo7T,SAAS9sM,OAAO003B,EAAa/z8B,EAAKqm6B,EAAWjs3B,MAAM,SAAUA,GACnG,cAAjB38B,EAAMzmC,SACR,GAAqB+89B,EAAY00I,cAAeruiC,GAAQ38B,EAAM8ykC,YAAY,CACxEn2iC,KAAMA,IACH38B,EAAM+ykC,YAAY,CACrBp2iC,KAAMA,IAGZ,GACF,EAMAixiC,EAAY56nC,UAAUmzB,OAAS,WAC7B7yB,KAAKq/nC,mBAELr/nC,KAAKm7nC,iBAAmBn7nC,KAAKm7nC,gBAAgBtt4B,YAC7C7tP,KAAKo1Y,SA0EA,CACLmlvB,UAAW,GACX5w4B,WAAY,GACZjxJ,QAAS,IA5ET14F,KAAKimB,OAAS,QACdjmB,KAAK2/nC,aAAe3/nC,KAAK2/nC,YAAY9smC,QACvC,EAEAynmC,EAAY56nC,UAAU2l8B,QAAU,WAC9Brl8B,KAAKq/nC,kBACP,EAEA/E,EAAY56nC,UAAU+/nC,YAAc,SAAUnqL,GAC5Ct18B,KAAKivC,IAAIu1/B,eAAe,CACtBj4hC,KAAM,oBACNwR,KAAM/d,KAAKozV,IACX2pb,SAAU/8wB,KAAKgj/B,YAAYz39B,GAC3B8omC,WAAY/+K,EAAWjs3B,MAE3B,EAEAixiC,EAAY56nC,UAAU8/nC,YAAc,SAAUlqL,GAC5Ct18B,KAAKivC,IAAIu1/B,eAAe,CACtBj4hC,KAAM,oBACNwR,KAAM/d,KAAKozV,IACX2pb,SAAU/8wB,KAAKgj/B,YAAYz39B,GAC3B8omC,WAAY/+K,EAAWjs3B,MAE3B,EAYAixiC,EAAY56nC,UAAU6/nC,WAAa,SAAUt7nC,EAAGjB,GAC9C,IAAIsy8B,EAwBJ,OAvBet18B,KAAKgj/B,YAAY00I,cACvB3E,SAAS,CAChB9kmB,KAAM,eACNh7Y,MAAO,aACN,SAAU5pD,GACX,IAAI06/B,EAAO/jlC,KAAKo1Y,SAASzrJ,WAAWtgK,EAAKij7B,eAGzC,GAAIy3E,EAAM,CACR,IAAI5u8B,EAAQ4u8B,EAAK9yH,sBAAsBht9B,EAAGjB,GACtCs/N,EAAQyh3B,EAAKzh3B,MAEjB,KAAIA,EAAMr+N,GAAKkxI,EAAM,IAAMA,EAAM,IAAMmtF,EAAMr+N,EAAIq+N,EAAMvjM,OAASujM,EAAMt/N,GAAKmyI,EAAM,IAAMA,EAAM,IAAMmtF,EAAMt/N,EAAIs/N,EAAMtjM,QAOjH,OAAO,EANPs26B,EAAa,CACXjs3B,KAAMA,EACN8uC,QAASgd,EAAM,GACf/c,QAAS+c,EAAM,GAKrB,CACF,GAAGn1I,MACIs18B,CACT,EAEAglL,EAAY/tnC,KAAO,UACZ+tnC,CACT,CAlgBA,CAkgBEt3U,IAyWF,YCr5BA,IAAI,GAAO,EACP,GAAW,GACX48U,IAAiC,EAEjCC,GAEJ,WACE,SAASA,EAAchikC,GACrB,IAAIiikC,EAAgBjikC,EAAOiikC,cACvBphG,EAAa7g+B,EAAOtxD,KACpBwznC,EAAa//nC,KAAK69D,OAAS,EAAaA,GAC5C79D,KAAKuM,KAAOmyhC,EACZ1+hC,KAAK8/nC,cAAgBA,EACrB9/nC,KAAKggoC,eAAiBC,GAAYH,GAClC,IAAII,EAAgBL,EAAcrjG,eAAekC,GACjD1+hC,KAAKmgoC,YAAcD,EAAcC,YACjCngoC,KAAKogoC,eAAiBF,EAAcE,eACpCpgoC,KAAKqgoC,oBAAsBH,EAAcG,oBAAoBP,GAEvC,cAAlBA,GACFQ,GAAqBP,GAgS3B,SAAgCA,GAC9B,IAAIQ,EAAYR,EAAWQ,UAC3BR,EAAWS,kBAAmB,EAC9B,EAAYD,GAAW,SAAUE,EAAOzjnC,GACtCyjnC,EAAMC,YAAc1jnC,EAGA,MAAhByjnC,EAAM1/hC,SACRg/hC,EAAWS,kBAAmB,EAElC,GACF,CA1SMG,CAAuBZ,IACI,aAAlBD,EACTC,EAAW/2Q,WA0SjB,SAAwC+2Q,GAEtC,IAAI/2Q,EAAa+2Q,EAAW/2Q,WACxB43Q,EAAcb,EAAWa,YAAc,CAAC,EACxC7/hC,EAASg/hC,EAAWh/hC,OAKxB,GAJA,GAAKioxB,GAAY,SAAU63Q,EAAM7jnC,GAC/B4jnC,EAAYC,GAAQ7jnC,CACtB,KAEK,GAAe+jF,GAAS,CAC3B,IAAI+/hC,EAAc,GAEd,GAAgB//hC,GAClB,GAAKA,GAAQ,SAAU99F,EAAG49nC,GACxB,IAAI7jnC,EAAQ4jnC,EAAYC,GACxBC,EAAqB,MAAT9jnC,EAAgBA,EAAQ4inC,IAAiC38nC,CACvE,IAGA69nC,EAAYlB,IAAiC7+hC,EAG/CA,EAASggiC,GAAkBhB,EAAYe,EACzC,CAIA,IAAK,IAAIlgoC,EAAIoo3B,EAAW3o3B,OAAS,EAAGO,GAAK,EAAGA,IACzB,MAAbmgG,EAAOngG,YACFggoC,EAAY53Q,EAAWpo3B,IAC9Boo3B,EAAWpn3B,MAGjB,CA3U8Bo/nC,CAA+BjB,GAErDO,GAAqBP,GAAY,IAGnC,GAAgC,WAAlBD,GAA8BC,EAAW3hK,YACvDkiK,GAAqBP,GAEzB,CAkRA,OAhRAF,EAAcngoC,UAAUuhoC,iBAAmB,SAAU9/nC,GACnD,IAAI69H,EAAah/H,KAAKggoC,eAAe7+nC,GAErC,OAAOnB,KAAKqgoC,oBAAoBrhgC,EAAY79H,EAC9C,EAEA0+nC,EAAcngoC,UAAUwhoC,cAAgB,WACtC,OAAO,GAAYlhoC,KAAKggoC,eAAgBhgoC,KAC1C,EASA6/nC,EAAcsB,gBAAkB,WAC9B,OAAO,GAAYtB,EAAcrjG,eACnC,EAYAqjG,EAAcuB,YAAc,SAAU1iG,GACpC,OAAOmhG,EAAcrjG,eAAe78hC,eAAe++hC,EACrD,EAOAmhG,EAAcwB,WAAa,SAAUtgiC,EAAQ73E,EAAUikB,GACjD,GAAgB4zD,GAClB,EAAYA,EAAQ73E,EAAUikB,GAE9BjkB,EAAStpB,KAAKutC,EAAS4zD,EAE3B,EAEA8+hC,EAAcyB,UAAY,SAAUvgiC,EAAQ73E,EAAUikB,GACpD,IAAI2kD,EACAyviC,EAAY,GAAexgiC,GAAU,GAAK,GAAgBA,GAAU,CAAC,GAAKjP,GAAY,EAAM,MAKhG,OAJA+tiC,EAAcwB,WAAWtgiC,GAAQ,SAAU99F,EAAG4hB,GAC5C,IAAIoviB,EAAS/qiB,EAAStpB,KAAKutC,EAASlqC,EAAG4hB,GACvCitE,EAAYyviC,EAAYttkB,EAASstkB,EAAU18mC,GAAOoviB,CACpD,IACOstkB,CACT,EAMA1B,EAAc2B,gBAAkB,SAAUt06B,GACxC,IACIu06B,EADAxhqB,EAAM,CAAC,EAQX,OANA/yQ,GAAO,GAAK2y6B,EAAcrjG,gBAAgB,SAAU55hC,EAAG87hC,GACjDxx0B,EAAIvtN,eAAe++hC,KACrBz+jB,EAAIy+jB,GAAcxx0B,EAAIwx0B,GACtB+iG,GAAY,EAEhB,IACOA,EAAYxhqB,EAAM,IAC3B,EAWA4/pB,EAAc6B,mBAAqB,SAAUC,GAC3C,GAAI,GAAeA,GACjBA,EAAcA,EAAY5/nC,YACrB,KAAI,GAAS4/nC,GAOlB,MAAO,GANP,IAAI7iV,EAAU,GACd,GAAK6iV,GAAa,SAAUvglC,EAAM70C,GAChCuyyB,EAAQj9yB,KAAK0K,EACf,IACAo1nC,EAAc7iV,CAGhB,CAOA,OALA6iV,EAAYp1lC,MAAK,SAAU+xX,EAAOC,GAGhC,MAAiB,UAAVA,GAA+B,UAAVD,GAAgD,IAA3BA,EAAM99Z,QAAQ,SAAiB,GAAK,CACvF,IACOmhoC,CACT,EAOA9B,EAAc+B,UAAY,SAAUC,EAAaC,GAC/C,MAAuB,UAAhBA,KAA6BD,GAAoD,IAArCA,EAAYrhoC,QAAQshoC,IAAsBD,IAAgBC,CAC/G,EAUAjC,EAAckC,eAAiB,SAAU5goC,EAAOo/nC,EAAWyB,GAIzD,IAHA,IAAIC,EACAj8gC,EAAMjmD,IAEDn/D,EAAI,EAAGi+H,EAAM0hgC,EAAUlgoC,OAAQO,EAAIi+H,EAAKj+H,IAAK,CACpD,IAAIshoC,EAAa3B,EAAU3/nC,GAAGO,MAE9B,GAAkB,MAAd+goC,EAAoB,CACtB,GAAIA,IAAe/goC,GAKhB,GAAgB+goC,IAAeA,IAAe/goC,EAAQ,GACvD,OAAOP,EAGTohoC,GAA0BG,EAAeD,EAAYthoC,EACvD,CACF,CAEA,IAASA,EAAI,EAAGi+H,EAAM0hgC,EAAUlgoC,OAAQO,EAAIi+H,EAAKj+H,IAAK,CACpD,IAAI6/nC,EAAQF,EAAU3/nC,GAClBshe,EAAWu+pB,EAAMv+pB,SACjB+9f,EAAUwgK,EAAMzsnC,MAEpB,GAAIkud,EAAU,CACZ,GAAIA,EAAS,MAAO,KAClB,GAAI69f,GAAWE,EAAQ,GAAI9+9B,EAAO+ge,EAAS,IACzC,OAAOthe,OAEJ,GAAIshe,EAAS,KAAOnia,KACzB,GAAIgg6B,GAAWE,EAAQ,GAAI/9f,EAAS,GAAI/ge,GACtC,OAAOP,OAEJ,GAAIm/9B,GAAWE,EAAQ,GAAI/9f,EAAS,GAAI/ge,IAAU4+9B,GAAWE,EAAQ,GAAI9+9B,EAAO+ge,EAAS,IAC9F,OAAOthe,EAGTohoC,GAA0BG,EAAejgqB,EAAS,GAAIthe,GACtDohoC,GAA0BG,EAAejgqB,EAAS,GAAIthe,EACxD,CACF,CAEA,GAAIohoC,EACF,OAAO7goC,IAAU4+D,IAAWwgkC,EAAUlgoC,OAAS,EAAIc,KAAU,IAAY,EAAI8goC,EAG/E,SAASE,EAAezk9B,EAAK1gK,GAC3B,IAAIolnC,EAASv/nC,KAAKmjH,IAAI03D,EAAMv8K,GAExBihoC,EAASp8gC,IACXA,EAAMo8gC,EACNH,EAAYjlnC,EAEhB,CACF,EAEA6inC,EAAcrjG,eAAiB,CAC7Bjv6B,MAAO,CACL4ygC,YAAakC,GAAgB,SAC7BjC,eAAgB,WACd,IAAIL,EAAa//nC,KAAK69D,OACtB,OAAO,GAAyC,aAA7BkikC,EAAWD,cAA+B,SAAU3+nC,EAAOmhoC,GAE5E,OADCA,IAAiBnhoC,EAAQnB,KAAKggoC,eAAe7+nC,IACvCohoC,GAAc3ioC,KAAKI,KAAMmB,EAClC,EAAI,SAAUA,EAAOmhoC,EAAcpigC,GAGjC,IAAIsigC,IAAmBtigC,EAGvB,OAFCoigC,IAAiBnhoC,EAAQnB,KAAKggoC,eAAe7+nC,IAC9C++H,EAAM,GAAiB/+H,EAAO4+nC,EAAW0C,aAAcvigC,GAChDsigC,EAAiBtigC,EAAM,GAAkBA,EAAK,OACvD,EAAGlgI,KACL,EACAqgoC,oBAAqB,CACnB3kL,OAAQ,SAAU180B,GAChB,OAAO,GAAkB,GAAiBA,EAAYh/H,KAAK69D,OAAO4kkC,cAAe,OACnF,EACArg6B,SAAUmg6B,GACVG,UAAW,SAAU1jgC,EAAY79H,GAC/B,IAAIqiB,EAASm/mC,GAAmB/ioC,KAAKI,KAAMmB,GAM3C,OAJc,MAAVqiB,IACFA,EAAS,GAAkB,GAAiBw7G,EAAYh/H,KAAK69D,OAAO4kkC,cAAe,SAG9Ej/mC,CACT,EACAo/mC,MAAOC,KAGXC,SAAUC,IAA8B,SAAUx1gC,EAAOpsH,GACvD,OAAO,GAAkBosH,EAAOpsH,EAClC,IACAk3nC,gBAAiB0K,IAA8B,SAAUx1gC,EAAOpsH,GAC9D,OAAO,GAAkBosH,EAAO,KAAMpsH,EACxC,IACA6hoC,eAAgBD,IAA8B,SAAUx1gC,EAAOpsH,GAC7D,OAAO,GAAkBosH,EAAO,KAAM,KAAMpsH,EAC9C,IACAi3nC,WAAY2K,IAA8B,SAAUx1gC,EAAOpsH,GACzD,OAAO,GAAoBosH,EAAOpsH,EACpC,IACAqy+B,MAAO,CACL2sJ,YAAakC,GAAgB,SAC7BhC,oBAAqB,CACnB3kL,OAAQ,KACRt5uB,SAAUmg6B,GACVG,UAAW,KACXE,MAAO,OAGXh3/B,QAAS,CACPu0/B,YAAakC,GAAgB,WAC7BhC,oBAAqB4C,GAAgC,CAAC,EAAG,KAE3Dv8C,MAAO,CACLy5C,YAAakC,GAAgB,SAC7BhC,oBAAqB,CACnB3kL,OAAQmnL,GACRzg6B,SAAUyg6B,GACVH,UAAWG,GACXD,MAAOC,KAGX3ooB,OAAQ,CACNimoB,YAAa,SAAUh/nC,EAAOuL,EAAQC,GAEpCA,EAAO,SADS3M,KAAKihoC,iBAAiB9/nC,GAExC,EACAk/nC,oBAAqB,CACnB3kL,OAAQwnL,GACR9g6B,SAAUmg6B,GACVG,UAAW,SAAU1jgC,EAAY79H,GAC/B,IAAIqiB,EAASm/mC,GAAmB/ioC,KAAKI,KAAMmB,GAM3C,OAJc,MAAVqiB,IACFA,EAAS0/mC,GAAatjoC,KAAKI,KAAMg/H,IAG5Bx7G,CACT,EACAo/mC,MAAOC,KAGXtqI,WAAY,CACV4nI,YAAakC,GAAgB,cAC7BhC,oBAAqB4C,GAAgC,CAAC,EAAG,MAGtDpD,CACT,CA5SA,GA8VA,SAASS,GAAqBP,EAAY1zE,GACxC,IAAItr9B,EAASg/hC,EAAWh/hC,OACpBoiiC,EAAY,GAEZ,GAAgBpiiC,GAClB,GAAKA,GAAQ,SAAU99F,GACrBkgoC,EAAUthoC,KAAKoB,EACjB,IACmB,MAAV89F,GACToiiC,EAAUthoC,KAAKk/F,GAQZsr9B,GAAmC,IAArB82E,EAAU9ioC,QALT,CAClBktH,MAAO,EACP2sY,OAAQ,GAGkDv6f,eAAeogoC,EAAWxznC,QAEpF42nC,EAAU,GAAKA,EAAU,IAG3BpC,GAAkBhB,EAAYoD,EAChC,CAEA,SAASJ,GAA8BK,GACrC,MAAO,CACLjD,YAAa,SAAUh/nC,EAAOuL,EAAQC,GAEpC,IAAIiuW,EAAe56W,KAAKihoC,iBAAiB9/nC,GAEzCwL,EAAO,QAASy2nC,EAAW12nC,EAAO,SAAUkuW,GAC9C,EACAylxB,oBAAqB4C,GAAgC,CAAC,EAAG,IAE7D,CAEA,SAASC,GAAalkgC,GACpB,IAAIj+B,EAAS/gG,KAAK69D,OAAOkjC,OACzB,OAAOA,EAAOl+F,KAAKogD,MAAMy66B,GAAU1+1B,EAAY,CAAC,EAAG,GAAI,CAAC,EAAGj+B,EAAO1gG,OAAS,IAAI,MAAW,CAAC,CAC7F,CAEA,SAASgioC,GAAgB3jG,GACvB,OAAO,SAAUv9hC,EAAOuL,EAAQC,GAC9BA,EAAO+xhC,EAAY1+hC,KAAKihoC,iBAAiB9/nC,GAC3C,CACF,CAEA,SAASohoC,GAAcvjgC,GACrB,IAAIj+B,EAAS/gG,KAAK69D,OAAOkjC,OACzB,OAAOA,EAAO/gG,KAAK69D,OAAOg/K,MAAQ79G,IAAe4ggC,GAAgC5ggC,EAAaj+B,EAAO1gG,OAAS2+H,EAChH,CAEA,SAAS6jgC,KAEP,OAAO7ioC,KAAK69D,OAAOkjC,OAAO,EAC5B,CAMA,SAASkiiC,GAAgCI,GACvC,MAAO,CACL3nL,OAAQ,SAAU180B,GAChB,OAAO0+1B,GAAU1+1B,EAAYqkgC,EAAcrjoC,KAAK69D,OAAOkjC,QAAQ,EACjE,EACAqhI,SAAUmg6B,GACVG,UAAW,SAAU1jgC,EAAY79H,GAC/B,IAAIqiB,EAASm/mC,GAAmB/ioC,KAAKI,KAAMmB,GAM3C,OAJc,MAAVqiB,IACFA,EAASk68B,GAAU1+1B,EAAYqkgC,EAAcrjoC,KAAK69D,OAAOkjC,QAAQ,IAG5Dv9E,CACT,EACAo/mC,MAAOC,GAEX,CAEA,SAASF,GAAmBxhoC,GAC1B,IAAI4+nC,EAAa//nC,KAAK69D,OAClB0ikC,EAAYR,EAAWQ,UAE3B,GAAIR,EAAWS,iBAAkB,CAC/B,IACIC,EAAQF,EADKV,GAAckC,eAAe5goC,EAAOo/nC,IAGrD,GAAIE,GAASA,EAAM1/hC,OACjB,OAAO0/hC,EAAM1/hC,OAAO/gG,KAAKuM,KAE7B,CACF,CAEA,SAASw0nC,GAAkBhB,EAAYoD,GAerC,OAdApD,EAAWh/hC,OAASoiiC,EAEI,UAApBpD,EAAWxznC,OACbwznC,EAAW0C,aAAe,EAAWU,GAAW,SAAU/hlC,GAOxD,OANY,GAAcA,IAMV,CAAC,EAAG,EAAG,EAAG,EAC5B,KAGK+hlC,CACT,CAMA,IAAIlD,GAAc,CAChBvkL,OAAQ,SAAUv68B,GAChB,OAAOu89B,GAAUv89B,EAAOnB,KAAK69D,OAAOug6B,WAAY,CAAC,EAAG,IAAI,EAC1D,EACAskK,UAAW,SAAUvhoC,GACnB,IAAIo/nC,EAAYvgoC,KAAK69D,OAAO0ikC,UACxB+C,EAAazD,GAAckC,eAAe5goC,EAAOo/nC,GAAW,GAEhE,GAAkB,MAAd+C,EACF,OAAO5lK,GAAU4lK,EAAY,CAAC,EAAG/C,EAAUlgoC,OAAS,GAAI,CAAC,EAAG,IAAI,EAEpE,EACA+hO,SAAU,SAAUjhO,GAClB,IAAI6b,EAAQhd,KAAK69D,OAAOmrzB,WAAahp3B,KAAK69D,OAAO+ikC,YAAYz/nC,GAASA,EAEtE,OAAgB,MAAT6b,EAAgB4inC,GAAgC5inC,CACzD,EACA4lnC,MAAO,IAGT,SAAS7iK,GAAW/r9B,EAAOhT,EAAGsC,GAC5B,OAAO0Q,EAAQhT,GAAKsC,EAAItC,EAAIsC,CAC9B,CAEA,YCjfA,IACI,GAAQ4/9B,KACZ,UACEzmJ,WAAY,UACZx7wB,MAAO,SAAU+h7B,GACf,IACI7y1B,EADO6y1B,EAAYx+2B,UAAUu1R,KACjB5pQ,KAEZA,EAAK2i+B,aAITyQ,GAAWpz+B,EACX,CAAC,EAAG6y1B,EAAY00I,cAAcvE,eAAgBnwI,EAChD,GAGF,SAASugJ,GAAWl6iC,EAAMm6iC,EAAkBC,EAAmBzgJ,GAC7D,IAAI04I,EAAYryiC,EAAKuuG,WACjB8r8B,EAAar6iC,EAAKs/9B,YAClBn5iC,EAAO65E,EAAKwpiC,SAASrjnC,KAEzB,GAAKk0nC,IAAcA,EAAWpoK,WAAcooK,EAAW/H,SAAvD,CAIA,IAMIgI,EANAC,EAAqBlI,EAAU9j8B,SA1Bb,aA2BlBis8B,EAiCN,SAAsBD,EAAoBJ,EAAkBxgJ,GAC1D,IAAI6gJ,EAAUx6uB,EAAO,CAAC,EAAGm6uB,GACrBhN,EAA4BxzI,EAAYwzI,0BAQ5C,OAPA,EAAK,CAAC,QAAS,aAAc,oBAAoB,SAAUsN,GAEzDtN,EAA0BsN,GAAcN,EAAiBM,GACzD,IAAIpm9B,EAAMkm9B,EAAmBzgoC,IAAI2goC,GACjCtN,EAA0BsN,GAAc,KACjC,MAAPpm9B,IAAgBmm9B,EAAQC,GAAcpm9B,EACxC,IACOmm9B,CACT,CA5CgBE,CAAaH,EAAoBJ,EAAkBxgJ,GAC7DghJ,EAAcx0nC,EAAKushC,uBAAuB1y8B,EAAKg8E,UAAW,SAE1DizM,EAAcsrxB,EAAmBzgoC,IAAI,eACrCo1nC,EAAwBqL,EAAmBzgoC,IAAI,yBAGtB,MAAzBo1nC,IAGFjgxB,EAuDJ,SAA8BigxB,EAAuBoL,GACnD,OAAwB,MAAjBA,EACLxgL,GAAUwgL,EAAe,KAAM,KAAMpL,GAAyB,IAClE,CA1DkB0L,CAAqB1L,EADnCoL,EAAgBO,GAAeL,KAIjCG,EAAY5mX,OAAS9ka,EACrB,IAAIt+G,EAAe3wK,EAAK2wK,aAExB,GAAKA,GAAiBA,EAAa35P,OAI5B,CACL,IAAI8joC,EAyDR,SAA4B96iC,EAAMqyiC,EAAWgI,EAAYE,EAAoBC,EAAS7p4B,GACpF,GAAKA,GAAiBA,EAAa35P,OAAnC,CAIA,IAAI+joC,EAAcC,GAAe3I,EAAW,UAA6B,MAAjBmI,EAAQt2gC,OAAmC,SAAlBs2gC,EAAQt2gC,QAAqB82gC,GAAe3I,EAAW,eAAiB2I,GAAe3I,EAAW,oBAEnL,GAAK0I,EAAL,CAIA,IAAI3L,EAAYiD,EAAUv4nC,IAAI,aAC1Bu1nC,EAAYgD,EAAUv4nC,IAAI,aAC1Bi79B,EAAaslK,EAAWtlK,WAAWr89B,QAC1B,MAAb02nC,GAAqBA,EAAYr6J,EAAW,KAAOA,EAAW,GAAKq6J,GACtD,MAAbC,GAAqBA,EAAYt6J,EAAW,KAAOA,EAAW,GAAKs6J,GACnE,IAAIC,EAAiB+C,EAAUv4nC,IAAI,kBAC/Bi9hB,EAAM,CACR7zhB,KAAM63nC,EAAY15nC,KAClB0z9B,WAAYA,EACZr93B,OAAQqjiC,EAAYrigC,OAGL,UAAbq+Z,EAAI7zhB,MAAwC,UAAnBosnC,GAAiD,OAAnBA,EAIzDv4lB,EAAI0/lB,cAAgB,UAHpB1/lB,EAAI0/lB,cAAgB,WACpB1/lB,EAAIvjT,MAAO,GAKb,IAAItJ,EAAU,IAAI,GAAc6sT,GAEhC,OADA,GAAM7sT,GAAS+w5B,iBAAmB3L,EAC3Bpl5B,CAvBP,CANA,CA8BF,CA1FoBgx5B,CAAmBl7iC,EAAMqyiC,EAAWgI,EAAYE,EAAoBC,EAAS7p4B,GAE7F,EAAKA,GAAc,SAAU9vK,EAAOltE,GAElC,GAAIktE,EAAMqtD,OAASks/B,EAAkBpjoC,QAAU6pF,IAAUu5iC,EAAkBv5iC,EAAMqtD,OAAQ,CACvF,IAAIit/B,EAwGZ,SAAmB9I,EAAWmI,EAAS35iC,EAAOltE,EAAOu2N,EAASyvwB,GAC5D,IAAIyhJ,EAAep7uB,EAAO,CAAC,EAAGw6uB,GAE9B,GAAItw5B,EAAS,CAEX,IAAImx5B,EAAcnx5B,EAAQhnO,KACtBosnC,EAAiC,UAAhB+L,GAA2B,GAAMnx5B,GAAS+w5B,iBAC3DnjoC,EAA2B,UAAnBw3nC,EAA6B37mC,EAA2B,OAAnB27mC,EAA0B31I,EAAYs0I,aAAaptiC,EAAMupZ,SAAWvpZ,EAAMgyC,SAASw//B,EAAUv4nC,IAAI,oBAClJshoC,EAAaC,GAAenx5B,EAAQ0t5B,iBAAiB9/nC,EACvD,CAEA,OAAOsjoC,CACT,CApH0BnD,CAAU5F,EAAWmI,EAAS35iC,EAAOltE,EAAOmnnC,EAAWnhJ,GACzEugJ,GAAWr5iC,EAAOs6iC,EAAaf,EAAmBzgJ,EACpD,CACF,GACF,MAbE2gJ,EAAgBO,GAAeL,GAE/BG,EAAY5mgC,KAAOumgC,CAtBrB,CAkCF,CAeA,SAASO,GAAeL,GACtB,IAAIt2gC,EAAQo3gC,GAAqBd,EAAS,SAE1C,GAAIt2gC,EAAO,CACT,IAAI6qgC,EAAauM,GAAqBd,EAAS,cAC3CxL,EAAkBsM,GAAqBd,EAAS,mBAUpD,OARIxL,IACF9qgC,EAAQ411B,GAAU511B,EAAO,KAAM,KAAM8qgC,IAGnCD,IACF7qgC,EAAQo21B,GAAYp21B,EAAO6qgC,IAGtB7qgC,CACT,CACF,CAOA,SAASo3gC,GAAqBd,EAASn5nC,GACrC,IAAIvJ,EAAQ0ioC,EAAQn5nC,GAEpB,GAAa,MAATvJ,GAA2B,SAAVA,EACnB,OAAOA,CAEX,CA4CA,SAASkjoC,GAAe3I,EAAWhxnC,GAGjC,IAAIq3H,EAAQ25/B,EAAUv4nC,IAAIuH,GAC1B,OAAOiH,GAAQowH,IAAUA,EAAM1hI,OAAS,CACtCqK,KAAMA,EACNq3H,MAAOA,GACL,IACN,CChJA,IAAI,GAAUl/H,KAAK8K,IACf,GAAU9K,KAAKgL,IACfuogC,GAAgB,GAChB,GAAO,EACPwuH,GAAoB,CAAC,YAAa,eAClCC,GAAiB,CAAC,YAAa,YAC/BC,GAAwB,CAAC,aAAc,QACvCC,GAA0B,CAAC,aAAc,UAM7C,UACEtoT,WAAY,UACZx7wB,MAAO,SAAU+h7B,EAAa1f,EAASr07B,EAAKna,GAG1C,IAAI0x+B,EAAUv39B,EAAIk8L,WACds7xB,EAAWx39B,EAAI+rI,YACfgq9B,EAAehiJ,EAAYnl7B,OAC3BuxjC,EAAa,GAAqBpsI,EAAY8S,qBAAsB,CACtE/29B,MAAOkQ,EAAIk8L,WACXnsM,OAAQiQ,EAAI+rI,cAEVp2J,EAAOognC,EAAapgnC,MAAQ,GAE5B4p0B,EAAiB,GAAa4nL,GAAcg5G,EAAWrwlC,MAAOna,EAAK,IAAK4h/B,GACxExiX,EAAkB,GAAaoyX,GAAcg5G,EAAWpwlC,OAAQpa,EAAK,IAAK6h/B,GAE1EvhB,EAAcpw9B,GAAWA,EAAQvoB,KAEjC+o8B,EAAa,GAA0Bxg7B,EAD/B,CAAC,oBAAqB,qBACyBku9B,GACvDs8I,EAA2B,kBAAhBp6I,GAAmD,gBAAhBA,EAAgCpw9B,EAAQwqmC,SAAW,KACjG7K,EAAWzxI,EAAY00I,cACvBuN,EAAgB,GAAqBxQ,GAEzC,GAAoB,gBAAhBvvI,EAA+B,CACjC,IAAIggJ,EAA2B,sBAAhBhgJ,EAgWrB,SAA0BlC,EAAa1tC,EAAYm/K,EAAUjmS,EAAgBxqM,GAG3E,IAOI3yjB,EAPAgiiC,GAAY/9K,GAAc,CAAC,GAAGjs3B,KAC9B87iC,EAAc,CAAC32S,EAAgBxqM,GAEnC,IAAKqve,GAAYA,IAAaoB,EAC5B,OAAO0Q,EAOT,IAHA,IAAIC,EAAW52S,EAAiBxqM,EAC5B3ia,EAAO+j5B,EAAWpiJ,EAAYnl7B,OAAOo6jC,gBAElC5miC,EAASgiiC,EAAS3xlC,YAAY,CAKnC,IAHA,IAAIotE,EAAM,EACNuqa,EAAWhob,EAAOrxD,SAEbp/B,EAAI,EAAGi+H,EAAMw6Y,EAASh5gB,OAAQO,EAAIi+H,EAAKj+H,IAC9CkuG,GAAOuqa,EAASz4gB,GAAGs7H,WAGrB,IAAImpgC,EAAgBhS,EAASn3/B,WAE7B,GAAsB,IAAlBmpgC,EACF,OAAOF,EAGT9j5B,GAAQvyI,EAAMu2hC,EAEd,IAAIxmmB,EAAcxtc,EAAOumG,WACrB4/yB,EAAc34c,EAAY17hB,IAAIyhoC,KAElCvj5B,GAAQ,EAAIm2vB,EAAcA,GAAe,EAAIA,EAD3B30+B,KAAK8K,IAAI6p+B,EAAa8tJ,GAAoBzmmB,KACch8hB,KAAK6yF,IAAI2rJ,EAAM,KAClFh8M,KAAqBg8M,EAAOh8M,IACnCgulC,EAAWhiiC,CACb,CAEAgwJ,EAAO+j5B,IAAa/j5B,EAAO+j5B,GAC3B,IAAItjiC,EAAQj/F,KAAK6yF,IAAI2rJ,EAAO+j5B,EAAU,IACtC,MAAO,CAAC52S,EAAiB1svB,EAAOkijB,EAAkBlijB,EACpD,CA1Y2DyjiC,CAAiBviJ,EAAa1tC,EAAYm/K,EAAUjmS,EAAgBxqM,GAAmBs7e,EAAW,CAACA,EAASvgmC,MAAOugmC,EAAStgmC,QAAU,CAACwvzB,EAAgBxqM,GACxMwhf,EAASR,EAAaz4lC,KAEtBi5lC,GAAqB,QAAXA,GAA+B,SAAXA,IAEhCA,EAAS,QAGX,IAAIr8mC,EAAU,CACZ2umC,YAAakN,EAAalN,YAC1BvrlC,KAAMi5lC,EACNzN,UAAWiN,EAAajN,WAG1BtD,EAAS5B,SAASe,eAKlB,IAAI6R,EAAmB,CACrBxhoC,EAAG,EACHjB,EAAG,EACH+7B,MAAOmmmC,EAAS,GAChBlmmC,OAAQkmmC,EAAS,GACjB7j5B,KAAM6j5B,EAAS,GAAKA,EAAS,IAE/BzQ,EAAS/rE,UAAU+8E,GACnBpsT,GAASo7S,EAAUtrmC,GAAS,EAAO,GAEnCs8mC,EAAmBhR,EAAS9rE,YAC5B,GAAKs8E,GAAe,SAAU57iC,EAAMrsE,GAClC,IAAIq5mC,GAAc4O,EAAcjonC,EAAQ,IAAMy3mC,GAAUv4/B,WACxD7yC,EAAKq/9B,UAAU,EAAc,CAC3BtqF,WAAY,CAACi4J,EAAYA,GACzB7+I,YAAa,EACb0kJ,YAAa,GACZuJ,GACL,GACF,CAEA,IAAIC,EAAW1iJ,EAAYx+2B,UAAUu1R,KAAK5pQ,KAC1Cu1+B,EAASh9E,UAoWb,SAA+B0mE,EAAYkQ,EAAUhqL,GACnD,GAAIgqL,EACF,MAAO,CACLr7nC,EAAGq7nC,EAASr7nC,EACZjB,EAAGs8nC,EAASt8nC,GAIhB,IAAI2ioC,EAAkB,CACpB1hoC,EAAG,EACHjB,EAAG,GAGL,IAAKsy8B,EACH,OAAOqwL,EAMT,IAAItR,EAAa/+K,EAAWjs3B,KACxB63C,EAASmz/B,EAAW1rE,YAExB,IAAKzn7B,EACH,OAAOykgC,EAOT,IAHA,IAAIC,EAAe,CAAC1kgC,EAAOniG,MAAQ,EAAGmiG,EAAOliG,OAAS,GAClDqqD,EAAOgriC,EAEJhriC,GAAM,CACX,IAAIq6iC,EAAar6iC,EAAKs/9B,YACtBi9E,EAAa,IAAMlC,EAAWz/nC,EAC9B2hoC,EAAa,IAAMlC,EAAW1goC,EAC9BqmF,EAAOA,EAAK3nD,UACd,CAEA,MAAO,CACLz9B,EAAGmrnC,EAAWrwlC,MAAQ,EAAI6mmC,EAAa,GACvC5ioC,EAAGosnC,EAAWpwlC,OAAS,EAAI4mmC,EAAa,GAE5C,CA9YuBC,CAAsBzW,EAAYkQ,EAAUhqL,IAAa,GAC5E0tC,EAAYq0I,cAAcjI,GAG1B0W,GAASJ,EACT,IAAI,IAActW,EAAWnrnC,GAAImrnC,EAAWpsnC,EAAGwjgC,EAASC,GAAWw+H,EAAexQ,EAAU,EAC9F,GAqBF,SAASp7S,GAAShwvB,EAAMlgE,EAAS48mC,EAAcxu/B,GAC7C,IAAIx4G,EACAC,EAEJ,IAAIqqD,EAAKypiC,YAAT,CAIA,IAAI2I,EAAapyiC,EAAKs/9B,YACtB5phC,EAAQ08lC,EAAW18lC,MACnBC,EAASy8lC,EAAWz8lC,OAEpB,IAAI08lC,EAAYryiC,EAAKuuG,WACjB4/yB,EAAckkJ,EAAUv4nC,IAAIyhoC,IAC5BoB,EAAetK,EAAUv4nC,IAAI0hoC,IAAkB,EAC/C3H,EAAmBoI,GAAoB5J,GACvCQ,EAAcr5nC,KAAK8K,IAAI6p+B,EAAa0lJ,GACpC+I,EAAezuJ,EAAcwuJ,EAC7BE,EAAoBhK,EAAc8J,EACtC38iC,EAAKq/9B,UAAU,CACblxE,YAAaA,EACb0kJ,YAAaA,EACbgB,iBAAkBA,IACjB,GAGH,IAAIiJ,GAFJpnmC,EAAQ,GAAQA,EAAQ,EAAIknmC,EAAc,KAC1CjnmC,EAAS,GAAQA,EAASinmC,EAAeC,EAAmB,IAExDls4B,EA0DN,SAAsB3wK,EAAMqyiC,EAAWyK,EAAWh9mC,EAAS48mC,EAAcxu/B,GACvE,IAAIyiH,EAAe3wK,EAAKrpD,UAAY,GAChCommC,EAAUj9mC,EAAQojB,KACV,QAAZ65lC,GAAiC,SAAZA,IAAuBA,EAAU,MACtD,IAAIC,EAAqC,MAArBl9mC,EAAQ4umC,WAAqB5umC,EAAQ4umC,WAAaxg/B,EAEtE,GAAIwu/B,IAAiBM,EACnB,OAAOh9iC,EAAK2wK,aAAe,GAI7BA,EAAe,GAAcA,GAAc,SAAU9vK,GACnD,OAAQA,EAAM4oiC,WAChB,IAoEF,SAAc943B,EAAcos4B,GACtBA,GACFps4B,EAAaztN,MAAK,SAAUvrC,EAAGsC,GAC7B,IAAIiliB,EAAmB,QAAZ69lB,EAAoBploC,EAAEk7H,WAAa54H,EAAE44H,WAAa54H,EAAE44H,WAAal7H,EAAEk7H,WAC9E,OAAgB,IAATqsa,EAAyB,QAAZ69lB,EAAoBploC,EAAEqkK,UAAY/hK,EAAE+hK,UAAY/hK,EAAE+hK,UAAYrkK,EAAEqkK,UAAYkjY,CAClG,GAIJ,CA5EE,CAAKvuS,EAAcos4B,GACnB,IAAI5ulC,EAiFN,SAAmBkklC,EAAW17lC,EAAUommC,GAItC,IAFA,IAAIt3hC,EAAM,EAEDluG,EAAI,EAAGi+H,EAAM7+F,EAAS3/B,OAAQO,EAAIi+H,EAAKj+H,IAC9CkuG,GAAO9uE,EAASp/B,GAAGs7H,WAOrB,IACIki2B,EADA9qzB,EAAYoo9B,EAAUv4nC,IAAI,mBAkB9B,OAfK68B,GAAaA,EAAS3/B,OAEF,UAAdizK,GAAyB8y9B,GAClChoK,EAAa,CAACp+7B,EAASA,EAAS3/B,OAAS,GAAG67H,WAAYl8F,EAAS,GAAGk8F,YACxD,QAAZkqgC,GAAqBhoK,EAAW9j6B,YAG9B8j6B,EAAa,CAACr+5B,KAAU,KACxB,GAAK//B,GAAU,SAAUkqD,GACvB,IAAI/oF,EAAQ+oF,EAAMgyC,SAASo3C,GAC3BnyK,EAAQi99B,EAAW,KAAOA,EAAW,GAAKj99B,GAC1CA,EAAQi99B,EAAW,KAAOA,EAAW,GAAKj99B,EAC5C,KAXFi99B,EAAa,CAACxiO,IAAKA,KAcd,CACL9spB,IAAKA,EACLsv3B,WAAYA,EAEhB,CAnHakoK,CAAU5K,EAAW1h4B,EAAcos4B,GAE9C,GAAiB,IAAb5ulC,EAAKs3D,IACP,OAAOzlB,EAAK2wK,aAAe,GAK7B,GAFAxiN,EAAKs3D,IAiCP,SAA2B4shC,EAAWyK,EAAWr3hC,EAAKs3hC,EAASt5mB,GAE7D,IAAKs5mB,EACH,OAAOt3hC,EAOT,IAJA,IAAI03tB,EAAak1T,EAAUv4nC,IAAI,cAC3B07H,EAAMiuZ,EAAgBzshB,OACtBkmoC,EAAc1ngC,EAETj+H,EAAIi+H,EAAM,EAAGj+H,GAAK,EAAGA,IAAK,CACjC,IAAIO,EAAQ2rhB,EAA4B,QAAZs5mB,EAAoBvngC,EAAMj+H,EAAI,EAAIA,GAAGs7H,WAE7D/6H,EAAQ2tG,EAAMq3hC,EAAY3/T,IAC5B+/T,EAAc3loC,EACdkuG,GAAO3tG,EAEX,CAGA,MADY,QAAZiloC,EAAoBt5mB,EAAgB7pgB,OAAO,EAAG47G,EAAM0ngC,GAAez5mB,EAAgB7pgB,OAAOsjnC,EAAa1ngC,EAAM0ngC,GACtGz3hC,CACT,CAtDa03hC,CAAkB9K,EAAWyK,EAAW3ulC,EAAKs3D,IAAKs3hC,EAASps4B,GAErD,IAAbxiN,EAAKs3D,IACP,OAAOzlB,EAAK2wK,aAAe,GAI7B,IAAK,IAAIp5P,EAAI,EAAGi+H,EAAMm7H,EAAa35P,OAAQO,EAAIi+H,EAAKj+H,IAAK,CACvD,IAAIygP,EAAO2Y,EAAap5P,GAAGs7H,WAAa1kF,EAAKs3D,IAAMq3hC,EAEnDns4B,EAAap5P,GAAG8njC,UAAU,CACxBrn0B,KAAMA,GAEV,CAaA,OAXIgl5B,IACFrs4B,EAAa35P,QAAUgpF,EAAKq/9B,UAAU,CACpCi1E,YAAY,IACX,GACH3j4B,EAAa35P,OAAS,GAGxBgpF,EAAK2wK,aAAeA,EACpB3wK,EAAKq/9B,UAAU,CACbtqF,WAAY5m7B,EAAK4m7B,aAChB,GACIpkuB,CACT,CA1GqBys4B,CAAap9iC,EAAMqyiC,EAAWyK,EAAWh9mC,EAAS48mC,EAAcxu/B,GAEnF,GAAKyiH,EAAa35P,OAAlB,CAIA,IAAIqzF,EAAO,CACTzvF,EAAGgioC,EACHjjoC,EAAGkjoC,EACHnnmC,MAAOA,EACPC,OAAQA,GAEN0nmC,EAAiB,GAAQ3nmC,EAAOC,GAChC2nmC,EAAO5mkC,IAEPijE,EAAM,GACVA,EAAIq+G,KAAO,EAEX,IAAK,IAAIzgP,EAAI,EAAGi+H,EAAMm7H,EAAa35P,OAAQO,EAAIi+H,GAAM,CACnD,IAAI30C,EAAQ8vK,EAAap5P,GACzBoiI,EAAInhI,KAAKqoF,GACT84C,EAAIq+G,MAAQn3J,EAAMy+9B,YAAYtn0B,KAC9B,IAAIp0I,EAAQ25hC,GAAM5jgC,EAAK0jgC,EAAgBv9mC,EAAQ2umC,aAE3C7qhC,GAAS05hC,GACX/loC,IACA+loC,EAAO15hC,IAGL+1B,EAAIq+G,MAAQr+G,EAAIphI,MAAM+mjC,YAAYtn0B,KAClC1iN,GAASqkG,EAAK0jgC,EAAgBhziC,EAAMsyiC,GAAc,GAClDU,EAAiB,GAAQhziC,EAAK30D,MAAO20D,EAAK10D,QAC1CgkG,EAAI3iI,OAAS2iI,EAAIq+G,KAAO,EACxBsl5B,EAAO5mkC,IAEb,CAMA,GAJIijE,EAAI3iI,QACNs+B,GAASqkG,EAAK0jgC,EAAgBhziC,EAAMsyiC,GAAc,IAG/CD,EAAc,CACjB,IAAInN,EAAqB8C,EAAUv4nC,IAAI,sBAEb,MAAtBy1nC,GAA8BuN,EAAYvN,IAC5CmN,GAAe,EAEnB,CAEA,IAASnloC,EAAI,EAAGi+H,EAAMm7H,EAAa35P,OAAQO,EAAIi+H,EAAKj+H,IAClDy40B,GAASr/kB,EAAap5P,GAAIuoB,EAAS48mC,EAAcxu/B,EAAQ,EA9C3D,CAzBA,CAyEF,CA+IA,SAASqv/B,GAAM5jgC,EAAK0jgC,EAAgBzp8B,GAIlC,IAHA,IAAI4p8B,EAAU,EACVC,EAAU/mkC,IAELn/D,EAAI,EAAGygP,OAAO,EAAQxiH,EAAMmE,EAAI3iI,OAAQO,EAAIi+H,EAAKj+H,KACxDygP,EAAOr+G,EAAIpiI,GAAG+njC,YAAYtn0B,QAGxBA,EAAOyl5B,IAAYA,EAAUzl5B,GAC7BA,EAAOwl5B,IAAYA,EAAUxl5B,IAIjC,IAAI0l5B,EAAa/jgC,EAAIq+G,KAAOr+G,EAAIq+G,KAC5B3+O,EAAIgkoC,EAAiBA,EAAiBzp8B,EAC1C,OAAO8p8B,EAAa,GAAQrkoC,EAAImkoC,EAAUE,EAAYA,GAAcrkoC,EAAIokoC,IAAY/mkC,GACtF,CAMA,SAASphC,GAASqkG,EAAK0jgC,EAAgBhziC,EAAMsyiC,EAAcz9jC,GASzD,IAAIy+jC,EAAYN,IAAmBhziC,EAAK30D,MAAQ,EAAI,EAChDkomC,EAAY,EAAID,EAChB12+B,EAAK,CAAC,IAAK,KACX624B,EAAK,CAAC,QAAS,UACfxihC,EAAO+uE,EAAK48D,EAAG02+B,IACfE,EAAiBR,EAAiB1jgC,EAAIq+G,KAAOql5B,EAAiB,GAE9Dn+jC,GAAS2+jC,EAAiBxziC,EAAKyz8B,EAAG8/F,OACpCC,EAAiBxziC,EAAKyz8B,EAAG8/F,KAG3B,IAAK,IAAIrmoC,EAAI,EAAGy5oB,EAASr3gB,EAAI3iI,OAAQO,EAAIy5oB,EAAQz5oB,IAAK,CACpD,IAAIyoF,EAAO25C,EAAIpiI,GACX8ioC,EAAa,CAAC,EACdh1xB,EAAOw4xB,EAAiB79iC,EAAKs/9B,YAAYtn0B,KAAO6l5B,EAAiB,EACjEC,EAAMzD,EAAWv8F,EAAG8/F,IAAc,GAAQC,EAAiB,EAAIlB,EAAc,GAE7EoB,EAAS1ziC,EAAK48D,EAAG02+B,IAActziC,EAAKyz8B,EAAG6/F,IAAcrinC,EACrD0inC,EAAQzmoC,IAAMy5oB,EAAS,GAAK+sf,EAAS14xB,EAAO04xB,EAAS14xB,EACrD44xB,EAAM5D,EAAWv8F,EAAG6/F,IAAc,GAAQK,EAAQ,EAAIrB,EAAc,GACxEtC,EAAWpz+B,EAAG22+B,IAAcvziC,EAAK48D,EAAG22+B,IAAc,GAAQjB,EAAcmB,EAAM,GAC9EzD,EAAWpz+B,EAAG02+B,IAAcrinC,EAAO,GAAQqhnC,EAAcsB,EAAM,GAC/D3inC,GAAQ0inC,EACRh+iC,EAAKq/9B,UAAUg7E,GAAY,EAC7B,CAEAhwiC,EAAK48D,EAAG22+B,KAAeC,EACvBxziC,EAAKyz8B,EAAG8/F,KAAeC,CACzB,CA8FA,SAASpB,GAASz8iC,EAAM01X,EAAUkmrB,EAAexQ,EAAUl9+B,GACzD,IAAIms/B,EAAar6iC,EAAKs/9B,YAClB4+E,EAAsBtC,EAAc1t/B,GACpCml/B,EAAkB6K,GAAuBA,IAAwBl+iC,EAErE,KAAIk+iC,IAAwB7K,GAAmBnl/B,IAAU0t/B,EAAc5koC,QAAUgpF,IAASoriC,GAA1F,CAIApriC,EAAKq/9B,UAAU,CAEbizE,UAAU,EAGVrgK,WAAYohK,IAAoB39qB,EAASp3R,UAAU+78B,GACnDhH,gBAAiBA,IAChB,GAEH,IAAI8K,EAAgB,IAAI,GAAazorB,EAAS96c,EAAIy/nC,EAAWz/nC,EAAG86c,EAAS/7c,EAAI0goC,EAAW1goC,EAAG+7c,EAAShgb,MAAOggb,EAAS//a,QACpH,GAAKqqD,EAAK2wK,cAAgB,IAAI,SAAU9vK,GACtC47iC,GAAS57iC,EAAOs9iC,EAAevC,EAAexQ,EAAUl9+B,EAAQ,EAClE,GAdA,CAeF,CAEA,SAAS+t/B,GAAoBvwgC,GAC3B,OAAOA,EAAM5xH,IAAI2hoC,IAAyB/vgC,EAAM5xH,IAAI4hoC,IAA2B,CACjF,CCzgBe,SAAS0C,GAAenkK,GACrC,IAAIy6H,EAAez6H,EAAQw+B,eAAe,CACxCh+B,SAAU,WAGPi6H,GAAiBA,EAAa19lC,QAInCij+B,EAAQq/B,iBAAiB,SAAS,SAAU+kI,GAC1C,IAAIC,EAAiBD,EAAYE,oBAE7Bp4nC,EADQk4nC,EAAYG,WACPr4nC,KACbs4nC,EAAgBH,EAAex/E,SAASw/E,EAAe3/yB,SAC3Dx4U,EAAKy4iC,YAAW,SAAUntsB,GACxB,IACI14I,EADQ5yN,EAAKqhgC,aAAa/1pB,GACTysnB,WAAW,YAEhC,GAAgB,MAAZnlwB,EAAkB,CAChB9+K,GAAS8+K,KACXA,EAAW0l6B,EAAc1l6B,IAI3B,IAAK,IAAIxhO,EAAI,EAAGA,EAAIm9lC,EAAa19lC,OAAQO,IACvC,IAAKm9lC,EAAan9lC,GAAGwtC,WAAWg0L,GAC9B,OAAO,CAGb,CAEA,OAAO,CACT,GACF,GACF,CClCe,SAAS2l6B,GAAezkK,GACrC,IAAI0kK,EAAe,CAAC,EACpB1kK,EAAQq/B,iBAAiB,SAAS,SAAU3f,GAC1C,IAAI2kJ,EAAiB3kJ,EAAY4kJ,oBAC7Bp4nC,EAAOwz+B,EAAYx+2B,UACnByjgC,EAAqB,CAAC,EAC1BN,EAAe3lX,MAAK,SAAUlna,GAC5B,IAAIpwW,EAAOi9nC,EAAe3/yB,QAAQ8yB,GAElCmtxB,EAAmB,MAAQv9nC,GAAQowW,EACnC,IAAI4poB,EAAYijJ,EAAe92H,aAAa/1pB,GACxCzmW,EAAQqw+B,EAAU9szB,SAAS,aAAam0zB,eAEvC13+B,EAAM+oH,OAET/oH,EAAM+oH,KAAO4l3B,EAAYsa,oBAAoB5y/B,EAAMs9nC,IAGrDL,EAAehsG,cAAc7grB,EAAK,QAASzmW,GAG3C,IAFA,IAAI6znC,EAAmB,CAAC,SAAU,aAAc,oBAEvCtnoC,EAAI,EAAGA,EAAIsnoC,EAAiB7noC,OAAQO,IAAK,CAChD,IAAIunoC,EAAezjJ,EAAUnd,WAAW2gK,EAAiBtnoC,IAAI,GAEzC,MAAhBunoC,GACFR,EAAehsG,cAAc7grB,EAAKotxB,EAAiBtnoC,GAAIunoC,EAE3D,CACF,IAEIR,EAAep+kC,SACjB/5C,EAAKwywB,MAAK,SAAUlna,GAClB,IACIstxB,EADQ54nC,EAAKqhgC,aAAa/1pB,GACNysnB,WAAW,YAEnC,GAAmB,MAAf6gK,EAAqB,CACnBptkC,GAASotkC,KACXA,EAAcH,EAAmB,MAAQG,IAG3C,IAAIC,EAAgBV,EAAep3H,cAAc63H,EAAa,SAE9D/+uB,EADY75Y,EAAKushC,uBAAuBjhrB,EAAK,SAC/ButxB,GAGd,IAFA,IAAIC,EAAa,CAAC,SAAU,aAAc,oBAEjC1noC,EAAI,EAAGA,EAAI0noC,EAAWjooC,OAAQO,IACrC4O,EAAKmshC,cAAc7grB,EAAKwtxB,EAAW1noC,GAAI+moC,EAAep3H,cAAc63H,EAAaE,EAAW1noC,IAEhG,CACF,GAEJ,GACF,CCnDA,SAAS,GAAUI,GAKjB,OAJMA,aAAavB,QACjBuB,EAAI,CAACA,EAAGA,IAGHA,CACT,CAEe,SAASunoC,GAAgBjlK,GACtCA,EAAQq/B,iBAAiB,SAAS,SAAU3f,GAC1C,IAAIyL,EAAQzL,EAAY6kJ,WACpBz+H,EAAWpmB,EAAYwlJ,cACvBviG,EAAa,GAAUjjD,EAAY7/+B,IAAI,eACvCo1/B,EAAa,GAAUvV,EAAY7/+B,IAAI,mBAG3CimgC,EAASiyB,UAAU,aAAc4K,GAAcA,EAAW,IAC1D78B,EAASiyB,UAAU,WAAY4K,GAAcA,EAAW,IACxD78B,EAASiyB,UAAU,iBAAkB9iC,GAAcA,EAAW,IAC9D6Q,EAASiyB,UAAU,eAAgB9iC,GAAcA,EAAW,IAC5D6Q,EAASiyB,UAAU,QAASr4C,EAAYprzB,SAAS,aAAag0zB,gBAC9Dwd,EAASpnP,MAAK,SAAUlna,GACtB,IAAI4poB,EAAY0kB,EAASyH,aAAa/1pB,GAClCjT,EAAO4mpB,EAAMg6I,eAAe3txB,GAC5BmrrB,EAAa,GAAUvhD,EAAUnd,WAAW,UAAU,IACtDgxB,EAAa,GAAU7T,EAAUnd,WAAW,cAAc,IAE1Dlz9B,EAAQqw+B,EAAU9szB,SAAS,aAAag0zB,eACxCo4I,EAAc56H,EAAS2yB,uBAAuBjhrB,EAAK,SAGvD,OAFAuuC,EAAO26uB,EAAa3vnC,GAEZ2vnC,EAAY5mX,QAClB,IAAK,SAED,IAAIggX,EAAYv1xB,EAAKymxB,MAAMxyF,UAAU,SACrCkoG,EAAY5mX,OAASggX,GAAaA,EAAUhggC,KAC5C,MAGJ,IAAK,SAEGgggC,EAAYv1xB,EAAK0mxB,MAAMzyF,UAAU,SACrCkoG,EAAY5mX,OAASggX,GAAaA,EAAUhggC,KAKlD6o6B,EAAW,IAAMp+rB,EAAKwzrB,UAAU,aAAc4K,EAAW,IACzDA,EAAW,IAAMp+rB,EAAKwzrB,UAAU,WAAY4K,EAAW,IACvD1tC,EAAW,IAAM1wpB,EAAKwzrB,UAAU,iBAAkB9iC,EAAW,IAC7DA,EAAW,IAAM1wpB,EAAKwzrB,UAAU,eAAgB9iC,EAAW,GAC7D,GACF,GACF,CCrDA,IAAImwI,GAAgB,SAOhBC,GAAyB,SAAU3lJ,GACrC,OAAOA,EAAY7/+B,IAAI,kBAAoB,IAC7C,EASIyloC,GAAkB,SAAU5lJ,EAAa6lJ,GAC3C,IAAIC,EAAsBH,GAAuB3lJ,GAC7C3i/B,EAAS,GACT0ooC,EAAgB,GAEpB,GAAI,GAAgBD,GAClBzooC,EAASyooC,OACJ,GAAI,GAAeA,GAExB,YADA9lJ,EAAYgmJ,gBAAkBF,GAK5BD,EAAexooC,IACjBA,EAASwooC,GAIX,IAAIhqgC,EAAMx+H,EAAS,EAAIA,EAAS,EAAIA,EAAS,EAC7C0ooC,EAAgB,GAEhB,IAAK,IAAInooC,EAAI,EAAGA,EAAIi+H,EAAKj+H,IACvBmooC,EAAclnoC,MAAMjB,EAAI,EAAIA,EAAI,EAAIA,GAAK,IAAMA,EAAI,GAAK,EAAI,IAG9Doi/B,EAAYgmJ,gBAAkBD,CAChC,EAUIE,GAAgB,SAAUl/0B,EAAIC,EAAIg5rB,GACpC,IAAIn7+B,EAAS,CAACkiT,EAAGx+R,GAAIw+R,EAAG1kJ,WAAWx4J,KAAK,KACpCiD,EAAS,CAACk6S,EAAGz+R,GAAIy+R,EAAG3kJ,WAAWx4J,KAAK,KACxC,MAAO,CAACm2+B,EAAY5vpB,IAAKvrV,EAAQiI,GAAQjD,KAAK67nC,GAChD,EAQIQ,GAAiB,SAAUrknC,GAC7B,IAAIvR,EAAOuR,EAAIjgB,MAAM8joC,IACrB,MAAO,CAACp1nC,EAAK,GAAIA,EAAK,GAAIA,EAAK,IAAIzG,KAAK67nC,GAC1C,EAQIS,GAAiB,SAAUthyB,EAAMm7oB,GACnC,IAAIn+9B,EAAMoknC,GAAcphyB,EAAKymxB,MAAOzmxB,EAAK0mxB,MAAOvrI,GAChD,OAAOA,EAAYomJ,UAAUvknC,EAC/B,EASIwknC,GAA6B,SAAUxhyB,EAAMm7oB,GAG/C,OAFUsmJ,GAAwBL,GAAcphyB,EAAKymxB,MAAOzmxB,EAAK0mxB,MAAOvrI,GAAcA,GAC3EsmJ,GAAwBL,GAAcphyB,EAAK0mxB,MAAO1mxB,EAAKymxB,MAAOtrI,GAAcA,EAEzF,EAOIsmJ,GAA0B,SAAUzknC,EAAKm+9B,GAC3C,IAAIumJ,EAAUvmJ,EAAYomJ,UAC1B,OAAOG,EAAQ1knC,GAAO0knC,EAAQ1knC,GAAKxkB,OAAS,CAC9C,EAoDO,SAASmpoC,GAAoB3hyB,EAAMm7oB,EAAahm+B,EAAOysnC,GAC5D,IAAIC,EAAsBf,GAAuB3lJ,GAC7C2mJ,EAAe,GAAeD,GAElC,IAAKA,EACH,OAAO,KAGT,IAAIE,EAAYT,GAAethyB,EAAMm7oB,GAErC,IAAK4mJ,EACH,OAAO,KAKT,IAFA,IAAIC,GAAa,EAERjpoC,EAAI,EAAGA,EAAIgpoC,EAAUvpoC,OAAQO,IACpC,GAAIgpoC,EAAUhpoC,KAAOoc,EAAO,CAC1B6snC,EAAYjpoC,EACZ,KACF,CAIF,IAAIkpoC,EAAWT,GAA2BxhyB,EAAMm7oB,GAChD4lJ,GAAgB5lJ,EAAa8mJ,GAC7BjiyB,EAAKsqY,UAAYtqY,EAAKsqY,WAAa,CAAC,EAEpC,IAAI43Z,EAASd,GAAcphyB,EAAKymxB,MAAOzmxB,EAAK0mxB,MAAOvrI,GAC/C+lJ,EAAgB/lJ,EAAYgmJ,gBAE5BgB,EAAmBL,GAAmBG,EAAW,EAAf,EAAuB,EAE7D,GAAKF,EAAUK,UAqBb,OAAOlB,EAAciB,EAAmBH,GAnBxC,IAAIK,EAAchB,GAAea,GAC7BlrgC,EAAMyqgC,GAAwBY,EAAalnJ,GAC3CmnJ,EAAWpB,EAAcc,EAAYhrgC,EAAMmrgC,GAE/C,OAAIP,EAEEE,EACED,GAAkD,IAA3BA,EAAoB,IACrC7qgC,EAAMmrgC,GAAoB,EAAIG,GAAYA,IAEzCtrgC,EAAM,EAAI,EAAI,GAAKmrgC,GAAoB,EAAIG,GAAYA,GAG1DtrgC,EAAMmrgC,GAAoB,EAAIG,GAAYA,EAG7CpB,EAAcc,EAAYhrgC,EAAMmrgC,EAK7C,CClNO,SAASI,GAAapnJ,GAC3B,IAAIE,EAAWF,EAAYjx3B,iBAE3B,IAAImx3B,GAA8B,SAAlBA,EAAS32+B,KAAzB,CAIA,IAAIki/B,EAAQzL,EAAY6kJ,WACxBp5I,EAAMskI,UAAS,SAAU1piC,GACvB,IAAI0rC,EAAQ1rC,EAAKuuG,WACjBvuG,EAAKq/9B,UAAU,EAAE3z7B,EAAM5xH,IAAI,MAAO4xH,EAAM5xH,IAAI,MAC9C,IACAknoC,GAAiB57I,EAAOzL,EAPxB,CAQF,CACO,SAASqnJ,GAAiB57I,EAAOzL,GACtCyL,EAAM67I,UAAS,SAAUziyB,EAAM7qV,GAC7B,IAAIo4mC,EAAY,GAAiBvtxB,EAAKjwK,WAAWz0L,IAAI,CAAC,YAAa,eAAgBqmoC,GAAoB3hyB,EAAMm7oB,EAAahm+B,GAAO,GAAO,GACpIqjO,EAAK,GAAWwnH,EAAKymxB,MAAM3lE,aAC3B5kzB,EAAK,GAAW8jG,EAAK0mxB,MAAM5lE,aAC3Br9gC,EAAS,CAAC+0M,EAAI0jB,IAEbqx3B,GACH9plC,EAAOzpC,KAAK,EAAEw+O,EAAG,GAAK0jB,EAAG,IAAM,GAAK1jB,EAAG,GAAK0jB,EAAG,IAAMqx3B,GAAY/04B,EAAG,GAAK0jB,EAAG,IAAM,GAAKA,EAAG,GAAK1jB,EAAG,IAAM+04B,IAG1GvtxB,EAAK6gtB,UAAUp9gC,EACjB,GACF,CC5Be,SAASi/lC,GAAkBjnK,EAASr07B,GACjDq07B,EAAQq/B,iBAAiB,SAAS,SAAU3f,GAC1C,IAAI9h3B,EAAS8h3B,EAAY7/+B,IAAI,UACzB+/+B,EAAWF,EAAYjx3B,iBAE3B,GAAImx3B,GAA8B,SAAlBA,EAAS32+B,KAAiB,CACxC,IAAI6qzB,EAAS4rL,EAAYx+2B,UACrBgmgC,EAAe,GACnB,EAAKtnJ,EAASxq1B,YAAY,SAAU2w3B,GAClCmhH,EAAeA,EAAaxooC,OAAOo1zB,EAAO0vN,iBAAiBuC,GAC7D,IAEA,IAAK,IAAIhk3B,EAAY,EAAGA,EAAY+xpB,EAAO7twB,QAAS87G,IAAa,CAI/D,IAHA,IAAIlkK,EAAQ,GACRuujB,GAAW,EAEN9ujB,EAAI,EAAGA,EAAI4poC,EAAanqoC,OAAQO,IAAK,CAC5C,IAAI88K,EAAM05oB,EAAOj0zB,IAAIqnoC,EAAa5poC,GAAIykK,GAEjC/4H,MAAMoxI,KACTgyY,GAAW,GAGbvujB,EAAMU,KAAK67K,EACb,CAEIgyY,EACF0nQ,EAAOyxP,cAAcxj5B,EAAW690B,EAASy0E,YAAYx2jC,IAGrDi2zB,EAAOyxP,cAAcxj5B,EAAW,CAACu2lB,IAAKA,KAE1C,CAEAyuY,GAAiBjzU,EAAOq3L,MAAOzL,EACjC,MAAY9h3B,GAAqB,SAAXA,GACpBkpgC,GAAapnJ,EAEjB,GACF,CCzCO,SAASynJ,GAAmBznJ,GACjC,IAAIE,EAAWF,EAAYjx3B,iBAE3B,GAAsB,SAAlBmx3B,EAAS32+B,KACX,OAAO,EAGT,IAAIujnC,EAAiB9sI,EAAYnl7B,OAAOiyjC,eACpCC,EAAY7sI,EAAStq3B,OAIzB,QAFesq3B,EAAS7i9B,UACI,GAAKyvlC,EAAiB,GAC/BC,CACrB,CACO,SAASnqC,GAAcv8/B,GAC5B,IAAIkv6B,EAAalv6B,EAAKyy8B,UAAU,cAMhC,OAJIvjC,aAAsB94/B,QACxB84/B,GAAcA,EAAW,GAAKA,EAAW,IAAM,IAGzCA,CACV,CClBA,IAAI,GAAK11/B,KAAKsmC,GACVuhmC,GAAqB,GAqBlB,SAASC,GAAe3nJ,EAAa4nJ,EAASC,EAAc3vpB,GACjE,IAAIgogB,EAAWF,EAAYjx3B,iBAE3B,IAAImx3B,GAA8B,SAAlBA,EAAS32+B,KAAzB,CAIA,IAAImnF,EAAOwv5B,EAAS/+vB,kBAChB4kC,EAAWi6tB,EAAYx+2B,UACvBiq3B,EAAQ1luB,EAAS0luB,MACjB/tvB,EAAKhtK,EAAK30D,MAAQ,EAAI20D,EAAKzvF,EAC3BgjW,EAAKvzQ,EAAK10D,OAAS,EAAI00D,EAAK1wF,EAC5BjD,EAAI8C,KAAKgL,IAAI6lF,EAAK30D,MAAO20D,EAAK10D,QAAU,EACxCuqB,EAAQw/N,EAASx/N,QAMrB,GALAw/N,EAAS2/xB,UAAU,CACjBhozB,GAAIA,EACJumG,GAAIA,IAGD19S,EAAL,CAIA,GAAIshlC,EAAc,CAChB,IAAIl0mC,EAAKus9B,EAAS0hF,YAAY1plB,GAC1B4vpB,EAAQn0mC,EAAG,GACXo0mC,EAAQp0mC,EAAG,GAEX1zB,EAAI,CAAC6noC,EAAQpq4B,EAAIqq4B,EAAQ9jyB,GAC7B,GAAehkW,EAAGA,GAClB,GAAWA,EAAGA,EAAGlD,GACjB8qoC,EAAaniF,UAAU,CAAChozB,EAAKz9P,EAAE,GAAIgkW,EAAKhkW,EAAE,KAAK,GAE/C+noC,GAAgBH,EADU7nJ,EAAY7/+B,IAAI,CAAC,WAAY,gBACJu9P,EAAIumG,EACzD,CAEAgkyB,GAAoBL,GAAS5nJ,EAAayL,EAAO1luB,EAAUhpR,EAAG2gQ,EAAIumG,EAAI19S,GAEtEkl8B,EAAM67I,UAAS,SAAUziyB,EAAM7qV,GAC7B,IAGIi1gC,EAHAmjG,EAAY,GAAiBvtxB,EAAKjwK,WAAWz0L,IAAI,CAAC,YAAa,cAAeqmoC,GAAoB3hyB,EAAMm7oB,EAAahm+B,GAAQ,GAC7HqjO,EAAK,GAAWwnH,EAAKymxB,MAAM3lE,aAC3B5kzB,EAAK,GAAW8jG,EAAK0mxB,MAAM5lE,aAE3BuiF,GAAO7q5B,EAAG,GAAK0jB,EAAG,IAAM,EACxBon4B,GAAO9q5B,EAAG,GAAK0jB,EAAG,IAAM,GAEvBqx3B,IAEHnjG,EAAM,CAACvxxB,GADP003B,GAAa,GACW8V,GAAO,EAAI9V,GAAYnuxB,EAAKmuxB,EAAY+V,GAAO,EAAI/V,KAG7EvtxB,EAAK6gtB,UAAU,CAACro0B,EAAI0jB,EAAIkuxB,GAC1B,GA/BA,CAhBA,CAgDF,CACA,IAAIg5G,GAAsB,CACxB9poC,MAAO,SAAU6h/B,EAAayL,EAAO1luB,EAAUhpR,EAAG2gQ,EAAIumG,EAAI19S,GACxD,IAAIolL,EAAQ,EACR7/H,EAAMi6K,EAASyyvB,OAAO,SACtB4vH,EAAsB,EAAVvooC,KAAKsmC,IAAU2lE,GAAOvlD,GACtCkl8B,EAAMskI,UAAS,SAAU1piC,GACvB,IAAIloF,EAAQkoF,EAAK6yC,SAAS,SACtBmvgC,EAAaD,GAAat8hC,EAAM3tG,EAAQ,GAAK,EACjDwtO,GAAS085B,EACThijC,EAAKq/9B,UAAU,CAAC3ojC,EAAI8C,KAAKuxH,IAAIu6G,GAAS+xB,EAAI3gQ,EAAI8C,KAAK4wH,IAAIk7G,GAASs4H,IAChEt4H,GAAS085B,CACX,GACF,EACA9yI,WAAY,SAAUvV,EAAayL,EAAO1luB,EAAUhpR,EAAG2gQ,EAAIumG,EAAI19S,GAC7D,IAAI+hlC,EAAY,EAChBZ,GAAmBrqoC,OAASkpD,EAC5B,IAAIqmkC,EAAY6a,GAAmBznJ,GACnCyL,EAAMskI,UAAS,SAAU1piC,GACvB,IAAIkv6B,EAAaqtF,GAAcv8/B,GAG/B/8C,MAAMis9B,KAAgBA,EAAa,GACnCA,EAAa,IAAMA,EAAa,GAChCA,GAAcq3H,EACd,IAAI2b,EAAmB1ooC,KAAK2xH,KAAK+j4B,EAAa,EAAIx4/B,GAElDusC,MAAMi/lC,KAAsBA,EAAmB,GAAK,GACpDb,GAAmBrhjC,EAAKg8E,WAAakm+B,EACrCD,GAAgC,EAAnBC,CACf,IACA,IAAIC,GAAoB,EAAI,GAAKF,GAAa/hlC,EAAQ,EAClDolL,EAAQ,EACZ8/wB,EAAMskI,UAAS,SAAU1piC,GACvB,IAAIgijC,EAAaG,EAAmBd,GAAmBrhjC,EAAKg8E,WAC5DspE,GAAS085B,IAIPhijC,EAAKs/9B,cAAgBt/9B,EAAKs/9B,YAAYi6E,QAAUv5iC,EAAKq/9B,UAAU,CAAC3ojC,EAAI8C,KAAKuxH,IAAIu6G,GAAS+xB,EAAI3gQ,EAAI8C,KAAK4wH,IAAIk7G,GAASs4H,IAClHt4H,GAAS085B,CACX,GACF,GAEK,SAASL,GAAgB3hjC,EAAMoijC,EAAqB/q4B,EAAIumG,GAC7D,IAAIptN,EAAKxwD,EAAKqijC,eAEd,GAAK7x/B,EAAL,CAIA,IACI8v2B,EADYtg6B,EAAKuuG,WACOz0L,IAAI,CAAC,QAAS,YAAc,EACpDqjiC,EAAa3s5B,EAAG4r8B,gBAEpB,GAAIgmD,EAAqB,CACvB,IAAIpphC,EAAMh5B,EAAKs/9B,YACXhrtB,EAAM96V,KAAK0xH,MAAMlS,EAAI,GAAK4kP,EAAI5kP,EAAI,GAAKq+I,GAEvCi9F,EAAM,IACRA,EAAgB,EAAV96V,KAAKsmC,GAASw0T,GAGtB,IAAIkqM,EAASxlb,EAAI,GAAKq+I,EAElBmnS,IACFlqM,GAAY96V,KAAKsmC,IAGnB,IAAI4o7B,EAAelqb,EAAS,OAAS,QACrC2+f,EAAW9xE,cAAc,CACvBnu2B,UAAWo3O,EACXh/T,SAAUoz7B,EACV/27B,OAAQ,WAEV,IAAI6xiC,EAAgBrmC,EAAWhxE,YAAY,YAC3C,EAAcq3G,EAAch6G,aAAeg6G,EAAch6G,WAAa,CAAC,GAAI,CACzEl07B,SAAUoz7B,GAEd,MACEy0E,EAAW9xE,cAAc,CACvBnu2B,SAAUoj4B,GAAe9m/B,KAAKsmC,GAAK,KAhCvC,CAmCF,CClKe,SAASwimC,GAAoBroK,GAC1CA,EAAQq/B,iBAAiB,SAAS,SAAU3f,GACR,aAA9BA,EAAY7/+B,IAAI,WAClBwnoC,GAAe3nJ,EAAa,aAEhC,GACF,CCIA,IAAI,GAAc,GCJH,SAAS4oJ,GAAiBtoK,GACvCA,EAAQq/B,iBAAiB,SAAS,SAAU+kI,GAC1C,IAAIxkJ,EAAWwkJ,EAAY31gC,iBAE3B,IAAImx3B,GAA8B,SAAlBA,EAAS32+B,KAIzB,GAAkC,UAA9Bm7nC,EAAYvkoC,IAAI,UAAuB,CACzC,IAAI0ooC,EAAoBnE,EAAYoE,iBAAmB,CAAC,EACpDC,EAAUrE,EAAYG,WACtB18T,EAAa4gU,EAAQv8nC,KACrB45/B,EAAW2iI,EAAQ3iI,SACnB4iI,EAAatE,EAAY9v8B,SAAS,SAClCq08B,EAAaD,EAAW7ooC,IAAI,cAE5BukoC,EAAYoE,gBACd3gU,EAAWnpD,MAAK,SAAUlna,GACxB,IAAIvvV,EAAK4/yB,EAAW13V,MAAM34H,GAC1Bqwd,EAAW09O,cAAc/tsB,EAAK+wxB,EAAkBtgnC,IAAO,CAACqwuB,IAAKA,KAC/D,IACUqwY,GAA6B,SAAfA,EAEA,aAAfA,GACTtB,GAAejD,EAAa,SAF5B0C,GAAa1C,GAKf,IAAIwE,EAAmB/gU,EAAWszM,cAAc,SAC5C0tH,EAAmB/iI,EAASqV,cAAc,SAE1C2tH,EAAYJ,EAAW7ooC,IAAI,aAC3B0yL,EAAam28B,EAAW7ooC,IAAI,cAC5BkpoC,EAAiB,GAAeD,GAAaA,EAAY,CAACA,EAAWA,GACrEE,EAAkB,GAAez28B,GAAcA,EAAa,CAACA,EAAYA,GAE7Ey28B,EAAkB,CAACA,EAAgB,GAAIA,EAAgB,IACvD,IAAItpY,EAAUmoE,EAAWg9O,SAAS,SAAS,SAAUhnjC,EAAO25W,GAC1D,IAAI3lO,EAAQg2rB,EAAWy9O,cAAc9tsB,GACjCyxxB,EAAM7uK,GAAUv89B,EAAO+qoC,EAAkBG,GAM7C,OAJI//lC,MAAMigmC,KACRA,GAAOF,EAAe,GAAKA,EAAe,IAAM,GAG3C,CACL9ooC,EAAGgpoC,EACHA,IAAKA,EACL3J,MAAOz3T,EAAW0lM,aAAa/1pB,GAAK33W,IAAI,SACxCL,GAAIqyI,GAAS7oG,MAAM6oG,EAAM,KAAO7oG,MAAM6oG,EAAM,IAAM,KAAOA,EAE7D,IACIk03B,EAAQD,EAAS++C,SAAS,SAAS,SAAUhnjC,EAAO25W,GACtD,IAAIjT,EAAOkkyB,EAAQtD,eAAe3txB,GAC9Bn4W,EAAI+69B,GAAUv89B,EAAOgroC,EAAkBG,GAEvChgmC,MAAM3pC,KACRA,GAAK2poC,EAAgB,GAAKA,EAAgB,IAAM,GAGlD,IAAIE,EAAY3kyB,EAAKjwK,WACjBw97B,EAAY,GAAiBvtxB,EAAKjwK,WAAWz0L,IAAI,CAAC,YAAa,eAAgBqmoC,GAAoB3hyB,EAAM6/xB,EAAa5sxB,GAAK,GAAO,GACtI,MAAO,CACL/wD,GAAIi5c,EAAQn7Z,EAAKymxB,MAAMjp9B,WACvB2kJ,GAAIg5c,EAAQn7Z,EAAK0mxB,MAAMlp9B,WACvB1iK,EAAGA,EACHyynC,UAAWA,EACXqX,kBAAmBD,EAAUrpoC,IAAI,qBAErC,IAEIuwF,EAAOwv5B,EAAS/+vB,kBAChBuo5B,ED/DH,SAAqBC,EAASC,EAASvwlC,GAmB5C,IAlBA,IAAI+zM,EAAQu84B,EACRtjI,EAAQujI,EACRl5iC,EAAOr3C,EAAKq3C,KACZ30D,EAAQ20D,EAAK30D,MACbC,EAAS00D,EAAK10D,OACdC,EAAS,CAACy0D,EAAKzvF,EAAI86B,EAAQ,EAAG20D,EAAK1wF,EAAIg8B,EAAS,GAEhD6tmC,EAA0B,MAAhBxwlC,EAAKwwlC,QAAkB,GAAMxwlC,EAAKwwlC,QAWvCjsoC,EAAI,EAAGA,EAAIwvP,EAAM/vP,OAAQO,IAAK,CACrC,IAAIvB,EAAI+wP,EAAMxvP,GAETvB,EAAEyD,IACLzD,EAAEyD,EAAI,GAAYi8B,GAASl8B,KAAKwF,SAAW,IAAO42B,EAAO,GAAID,GAAUn8B,KAAKwF,SAAW,IAAO42B,EAAO,KAGvG5/B,EAAEytoC,GAAK,GAAWztoC,EAAEyD,GACpBzD,EAAEgqgC,MAAQ,IACZ,CAKA,IAEI0jI,EACAC,EAHAC,EAAmC,MAAjB5wlC,EAAK6wlC,SAAmB,GAAM7wlC,EAAK6wlC,SACrDA,EAAWD,EAGf,MAAO,CACLE,OAAQ,WACND,EAA6B,GAAlBD,CACb,EACAG,SAAU,SAAUtyxB,GAClB1qH,EAAM0qH,GAAK8nxB,OAAQ,CACrB,EACAyK,WAAY,SAAUvyxB,GACpB1qH,EAAM0qH,GAAK8nxB,OAAQ,CACrB,EAKA0K,WAAY,SAAU5rkC,GACpBqrkC,EAAqBrrkC,CACvB,EAKA6rkC,UAAW,SAAU7rkC,GACnBsrkC,EAAoBtrkC,CACtB,EAQAgtS,KAAM,SAAUhtS,GACdqrkC,GAAsBA,EAAmB384B,EAAOi5wB,GAIhD,IAHA,IAAImkI,EAAM,GACNC,EAAOr94B,EAAM/vP,OAERO,EAAI,EAAGA,EAAIyogC,EAAMhpgC,OAAQO,IAAK,CACrC,IAAIzB,EAAIkqgC,EAAMzogC,GAEd,IAAIzB,EAAEstoC,kBAAN,CAIA,IAAI1i1B,EAAK5qT,EAAE4qT,GAEX,GAASyj1B,GADLxj1B,EAAK7qT,EAAE6qT,IACMlnT,EAAGinT,EAAGjnT,GACvB,IAAIH,EAAI,GAAS6qoC,GAAOruoC,EAAEwD,EACtBY,EAAIymT,EAAGzmT,GAAKwmT,EAAGxmT,EAAIymT,EAAGzmT,GAEtB+oC,MAAM/oC,KACRA,EAAI,GAGN,GAAeiqoC,EAAKA,IACnBzj1B,EAAG640B,OAAS,GAAY740B,EAAGjnT,EAAGinT,EAAGjnT,EAAG0qoC,EAAKjqoC,EAAIZ,EAAIuqoC,IACjDlj1B,EAAG440B,OAAS,GAAY540B,EAAGlnT,EAAGknT,EAAGlnT,EAAG0qoC,IAAO,EAAIjqoC,GAAKZ,EAAIuqoC,EAdzD,CAeF,CAGA,IAAStsoC,EAAI,EAAGA,EAAI6soC,EAAM7soC,KACpBvB,EAAI+wP,EAAMxvP,IAEPgioC,QACL,GAAS4K,EAAKvumC,EAAQ5/B,EAAEyD,GAIxB,GAAYzD,EAAEyD,EAAGzD,EAAEyD,EAAG0qoC,EAAKX,EAAUK,IAMzC,IAAStsoC,EAAI,EAAGA,EAAI6soC,EAAM7soC,IACxB,CAAImpT,EAAK35D,EAAMxvP,GAEf,IAFA,IAESwD,EAAIxD,EAAI,EAAGwD,EAAIqpoC,EAAMrpoC,IAAK,CACjC,IAAI4lT,EACJ,GAASwj1B,GADLxj1B,EAAK55D,EAAMhsP,IACEtB,EAAGinT,EAAGjnT,GAGb,KAFNH,EAAI,GAAS6qoC,MAIf,GAASA,EAAK3qoC,KAAKwF,SAAW,GAAKxF,KAAKwF,SAAW,IACnD1F,EAAI,GAGN,IAAI+qoC,GAAW3j1B,EAAGwi1B,IAAMvi1B,EAAGui1B,KAAO5poC,EAAIA,GACrConT,EAAG640B,OAAS,GAAY740B,EAAG+i1B,GAAI/i1B,EAAG+i1B,GAAIU,EAAKE,IAC3C1j1B,EAAG440B,OAAS,GAAY540B,EAAG8i1B,GAAI9i1B,EAAG8i1B,GAAIU,GAAME,EAC/C,CAhBiB,CAmBnB,IAAIzqoC,EAAI,GAER,IAASrC,EAAI,EAAGA,EAAI6soC,EAAM7soC,IAAK,CAC7B,IAAIvB,KAAI+wP,EAAMxvP,IAEPgioC,QACL,GAAS3/nC,EAAG5D,EAAEyD,EAAGzD,EAAEytoC,IACnB,GAAYztoC,EAAEyD,EAAGzD,EAAEyD,EAAGG,EAAGiqoC,GACzB,GAAU7toC,EAAEytoC,GAAIztoC,EAAEyD,GAEtB,CAGA,IAAIg/f,GADJoroB,GAAsB,MACI,IAC1BF,GAAqBA,EAAkB584B,EAAOi5wB,EAAOvngB,GACrDpgc,GAAMA,EAAGogc,EACX,EAEJ,CCrF0B6roB,CAAY3qY,EAASqmQ,EAAO,CAC9C316B,KAAMA,EACNm5iC,QAASb,EAAW7ooC,IAAI,WACxB+poC,SAAUlB,EAAW7ooC,IAAI,cAE3BupoC,EAAcY,YAAW,SAAUl94B,EAAOi5wB,GACxC,IAAK,IAAIzogC,EAAI,EAAG4B,EAAI4tP,EAAM/vP,OAAQO,EAAI4B,EAAG5B,IACnCwvP,EAAMxvP,GAAGgioC,OAEX,GAAUxy4B,EAAMxvP,GAAGkC,EAAGipoC,EAAQ6B,eAAehtoC,GAAG+njC,YAGtD,IACA+jF,EAAca,WAAU,SAAUn94B,EAAOi5wB,EAAO9l/B,GAC9C,IAAK,IAAI3iB,EAAI,EAAG4B,EAAI4tP,EAAM/vP,OAAQO,EAAI4B,EAAG5B,IAClCwvP,EAAMxvP,GAAGgioC,OACZmJ,EAAQ6B,eAAehtoC,GAAG8njC,UAAUt4zB,EAAMxvP,GAAGkC,GAG/C+ooC,EAAkB1gU,EAAW13V,MAAM7ye,IAAMwvP,EAAMxvP,GAAGkC,EAGpD,IAASlC,EAAI,EAAG4B,EAAI6mgC,EAAMhpgC,OAAQO,EAAI4B,EAAG5B,IAAK,CAC5C,IAAIzB,EAAIkqgC,EAAMzogC,GACVinW,EAAOkkyB,EAAQtD,eAAe7noC,GAC9By/O,EAAKlhP,EAAE4qT,GAAGjnT,EACVihQ,EAAK5kQ,EAAE6qT,GAAGlnT,EACVwoC,EAASu8T,EAAK8gtB,aAClBr9gC,EAASA,EAASA,EAAOvpC,QAAU,IAC5B,GAAKupC,EAAO,IAAM,GACzBA,EAAO,GAAKA,EAAO,IAAM,GACzB,GAAUA,EAAO,GAAI+0M,GACrB,GAAU/0M,EAAO,GAAIy4N,IAEhB5kQ,EAAEi2nC,YACL9plC,EAAO,GAAK,EAAE+0M,EAAG,GAAK0jB,EAAG,IAAM,GAAK1jB,EAAG,GAAK0jB,EAAG,IAAM5kQ,EAAEi2nC,WAAY/04B,EAAG,GAAK0jB,EAAG,IAAM,GAAKA,EAAG,GAAK1jB,EAAG,IAAMlhP,EAAEi2nC,YAG9GvtxB,EAAK6gtB,UAAUp9gC,EACjB,CACF,IACAo8lC,EAAYiG,YAAcjB,EAC1BhF,EAAYoE,gBAAkBD,EAE9Ba,EAAch+xB,MAChB,MAEEg5xB,EAAYiG,YAAc,IAE9B,GACF,CChHe,SAASE,GAAmBvqK,EAASr07B,GAClD,IAAIyngC,EAAW,GA+Cf,OA9CApzE,EAAQq/B,iBAAiB,SAAS,SAAU3f,GAC1C,IAAI8qJ,EAAe9qJ,EAAY7/+B,IAAI,oBAEnC,IAAK2qoC,GAAiC,SAAjBA,EAAyB,CAC5C,IAAI12U,EAAS4rL,EAAYx+2B,UAKrB32H,EAAM,GACNF,EAAM,GACV,GANgBypzB,EAAO+wP,UAAS,SAAUrtsB,GACxC,IAAI4poB,EAAYttL,EAAOy5M,aAAa/1pB,GACpC,MAAO,EAAE4poB,EAAUvh/B,IAAI,MAAOuh/B,EAAUvh/B,IAAI,KAC9C,IAG2B0K,EAAKF,GAE5BA,EAAI,GAAKE,EAAI,IAAO,IACtBF,EAAI,IAAM,EACVE,EAAI,IAAM,GAGRF,EAAI,GAAKE,EAAI,IAAO,IACtBF,EAAI,IAAM,EACVE,EAAI,IAAM,GAGZ,IAAIm7J,GAAUr7J,EAAI,GAAKE,EAAI,KAAOF,EAAI,GAAKE,EAAI,IAE3Co+9B,EArCV,SAAqB+W,EAAa/z8B,EAAK+5H,GAIrC,OAAO+q1B,GAHM1qmB,EAAO25lB,EAAY8S,qBAAsB,CACpD9s1B,OAAQA,IAEmB,CAC3BjqI,MAAOkQ,EAAIk8L,WACXnsM,OAAQiQ,EAAI+rI,aAEhB,CA6BqB,CAAYgo0B,EAAa/z8B,EAAK+5H,GAEzC18H,MAAM08H,KACRn7J,EAAM,CAACo+9B,EAASho+B,EAAGgo+B,EAASjp+B,GAC5B2K,EAAM,CAACs+9B,EAASho+B,EAAIgo+B,EAASlt8B,MAAOkt8B,EAASjp+B,EAAIip+B,EAASjt8B,SAG5D,IAAI+umC,EAAUpgoC,EAAI,GAAKE,EAAI,GACvBmgoC,EAAWrgoC,EAAI,GAAKE,EAAI,GACxB+99B,EAAYK,EAASlt8B,MACrB8s8B,EAAaI,EAASjt8B,OACtB2wlC,EAAe3sI,EAAYjx3B,iBAAmB,IAAI,GACtD49/B,EAAapW,UAAYv2H,EAAY7/+B,IAAI,cACzCwsnC,EAAah6I,gBAAgB9n+B,EAAI,GAAIA,EAAI,GAAIkgoC,EAASC,GACtDre,EAAaxG,YAAYl9I,EAASho+B,EAAGgo+B,EAASjp+B,EAAG4o+B,EAAWC,GAE5D8jJ,EAAa3ulC,UAAUgi9B,EAAY7/+B,IAAI,UAAW8rC,GAClD0glC,EAAaxulC,QAAQ6h9B,EAAY7/+B,IAAI,SACrCuziC,EAAS70iC,KAAK8tnC,EAChB,CACF,IACOj5E,CACT,CC1DA,IAqBUhurB,GArBNulxB,GAAoB,GAAavuoC,UACjCwuoC,GAAmB,GAAoBxuoC,UAEvCyuoC,GAGF,WAEEnuoC,KAAK4nT,GAAK,EACV5nT,KAAK0xL,GAAK,EAEV1xL,KAAK88L,GAAK,EACV98L,KAAKy3H,GAAK,EACVz3H,KAAKyg9B,QAAU,CACjB,EAiBF,SAAS2tL,GAAe9r6B,GACtB,OAAOh2L,OAAOg2L,EAAMowzB,OAASpm/B,OAAOg2L,EAAMqwzB,KAC5C,CAXE/lnB,GAEA,WACE,OAAkB,OAAXlkD,IAAmBA,GAAOnoX,MAAMP,KAAMI,YAAcJ,IAC7D,GALQ0oX,GAQRylxB,IAsDF,SA9CA,SAAUzlxB,GAGR,SAAS2lxB,EAAWhylC,GAClB,IAAIqQ,EAAQg8T,EAAO9oX,KAAKI,KAAMq8C,IAASr8C,KAGvC,OADA0sD,EAAMngD,KAAO,UACNmgD,CACT,CAmCA,OA1CAkgX,EAAUyhuB,EAAY3lxB,GAStB2lxB,EAAW3uoC,UAAUm0+B,gBAAkB,WACrC,MAAO,CACLz2N,OAAQ,OACRhgpB,KAAM,KAEV,EAEAixgC,EAAW3uoC,UAAUk0+B,gBAAkB,WACrC,OAAO,IAAIu6J,EACb,EAEAE,EAAW3uoC,UAAUg0+B,UAAY,SAAUp8vB,EAAKhV,GAC1C8r6B,GAAe9r6B,GACjB2r6B,GAAkBv6J,UAAU9z+B,KAAKI,KAAMs3O,EAAKhV,GAE5C4r6B,GAAiBx6J,UAAU9z+B,KAAKI,KAAMs3O,EAAKhV,EAE/C,EAEA+r6B,EAAW3uoC,UAAU8yhC,QAAU,SAAUpzhC,GACvC,OAAIgvoC,GAAepuoC,KAAKsiO,OACf2r6B,GAAkBz7G,QAAQ5yhC,KAAKI,KAAMZ,GAErC8uoC,GAAiB17G,QAAQ5yhC,KAAKI,KAAMZ,EAE/C,EAEAivoC,EAAW3uoC,UAAUuzhC,UAAY,SAAU7zhC,GACzC,IAAIkjO,EAAQtiO,KAAKsiO,MACbx/N,EAAIsroC,GAAe9r6B,GAAS,CAACA,EAAMxlC,GAAKwlC,EAAMslF,GAAItlF,EAAM7qG,GAAK6qG,EAAM5wC,IAAMw88B,GAAiBj7G,UAAUrzhC,KAAKI,KAAMZ,GACnH,OAAO,GAAe0D,EAAGA,EAC3B,EAEOuroC,CACT,CA5CA,CA4CE,IC/EF,IAAIC,GAAoB,CAAC,aAAc,YAEvC,SAASC,GAAkBC,GACzB,MAAO,IAAMA,EAAiB,MAChC,CAEA,SAASC,GAAoB/joC,EAAM8n2B,EAAU13f,GAC3C,IAAImrrB,EAAazzL,EAAS+9J,cAAcz1pB,EAAKpwW,GAE7C,IAAKu7hC,GAA6B,SAAfA,EACjB,OAAOA,EAGT,IAAI1tC,EAAa/lJ,EAAS+9J,cAAcz1pB,EAAKpwW,EAAO,QAChD05kC,EAAe5xO,EAAS+9J,cAAcz1pB,EAAKpwW,EAAO,UAClDk8hC,EAAep0L,EAAS+9J,cAAcz1pB,EAAKpwW,EAAO,UAClDo5hC,EAAmBtxL,EAAS+9J,cAAcz1pB,EAAKpwW,EAAO,cACtDgkoC,EAAgB,GAA+Bn2I,GAEnD,OAAO0tC,EAAayoG,EADE,GAAiC9nG,GAAgB,EAAG8nG,IACnBtqD,GAAgB,KAAOtgD,GAAoB,GACpG,CAMA,SAASyvE,GAAa7omC,EAAM8n2B,EAAU13f,GACpC,IAAImrrB,EAAazzL,EAAS+9J,cAAcz1pB,EAAKpwW,GAE7C,GAAKu7hC,GAA6B,SAAfA,EAAnB,CAIA,IAAI1tC,EAAa/lJ,EAAS+9J,cAAcz1pB,EAAKpwW,EAAO,QAChD05kC,EAAe5xO,EAAS+9J,cAAcz1pB,EAAKpwW,EAAO,UAClDk8hC,EAAep0L,EAAS+9J,cAAcz1pB,EAAKpwW,EAAO,UAClDo5hC,EAAmBtxL,EAAS+9J,cAAcz1pB,EAAKpwW,EAAO,cACtDgkoC,EAAgB,GAA+Bn2I,GAC/Co2I,EAAkB,GAAiC/nG,GAAgB,EAAG8nG,GACtEloG,EAAa,GAAwBP,GAAayoG,EAAc,GAAK,EAAIC,EAAgB,IAAKD,EAAc,GAAK,EAAIC,EAAgB,GAAID,EAAc,GAAIA,EAAc,GAAI,KAAM5qG,GAGvL,OAFA0C,EAAWooG,oBAAsC,MAAhBxqD,GAAwB93iC,MAAM83iC,QAAgB,GAAUA,EAAevhlC,KAAKsmC,GAAK,KAAO,EACzHq9/B,EAAW97hC,KAAOA,EACX87hC,CAXP,CAYF,CAWA,SAASqoG,GAAc35J,EAAa5p8B,GAClC4p8B,EAAYttrB,GAAKt8Q,EAAO,GAAG,GAC3B4p8B,EAAYxjzB,GAAKpmJ,EAAO,GAAG,GAC3B4p8B,EAAYp4yB,GAAKxxJ,EAAO,GAAG,GAC3B4p8B,EAAYz92B,GAAKnsF,EAAO,GAAG,GAC3B4p8B,EAAYz0B,QAAU,EACtB,IAAIwxE,EAAM3m/B,EAAO,GAEb2m/B,GACF/8C,EAAYw9C,KAAOT,EAAI,GACvB/8C,EAAYy9C,KAAOV,EAAI,KAEvB/8C,EAAYw9C,KAAO92R,IACnBs5O,EAAYy9C,KAAO/2R,IAEvB,CAEA,IAAI,GAEJ,SAAUlzY,GAGR,SAASoha,EAAK0oF,EAAU13f,EAAKoquB,GAC3B,IAAIx4hC,EAAQg8T,EAAO9oX,KAAKI,OAASA,KAIjC,OAFA0sD,EAAMoilC,YAAYt8R,EAAU13f,EAAKoquB,GAE1Bx4hC,CACT,CA2VA,OAnWAkgX,EAAUk9W,EAAMpha,GAUhBoha,EAAKpqxB,UAAUovoC,YAAc,SAAUt8R,EAAU13f,EAAKoquB,GACpD,IAAIliG,EAAcxwI,EAASyxM,UAEvB3kgC,EA1CR,SAAoBhU,GAClB,IAAIgU,EAAO,IAAI,GAAW,CACxB50C,KAAM,OACN6q+B,kBAAkB,IAGpB,OADAs5J,GAAcvvlC,EAAKgjL,MAAOh3L,GACnBgU,CACT,CAmCeyvlC,CADMv8R,EAASo2M,cAAc9tsB,IAExCx7T,EAAKgjL,MAAMm+uB,QAAU,EACrB,GAAkBnh6B,EAAM,CACtBgjL,MAAO,CACLm+uB,QAAS,IAEVuiC,EAAalooB,GAChB96W,KAAKmlB,IAAIm6B,GACT,EAAKgvlC,IAAmB,SAAUE,GAChC,IAAIt0oB,EAASq5mB,GAAai7B,EAAgBh8R,EAAU13f,GAIpD96W,KAAKmlB,IAAI+0e,GACTl6f,KAAKuuoC,GAAkBC,IAAmBC,GAAoBD,EAAgBh8R,EAAU13f,EAC1F,GAAG96W,MAEHA,KAAKgvoC,iBAAiBx8R,EAAU13f,EAAKoquB,EACvC,EAGAp7T,EAAKpqxB,UAAUizjB,WAAa,SAAU6/S,EAAU13f,EAAKoquB,GACnD,IAAIliG,EAAcxwI,EAASyxM,UACvB3kgC,EAAOt/C,KAAK869B,YAAY,QACxBiuG,EAAav2N,EAASo2M,cAAc9tsB,GACpChrW,EAAS,CACXwyN,MAAO,CAAC,GAEVus6B,GAAc/+nC,EAAOwyN,MAAOym2B,GAC5B,GAAoBzphC,EAAMxvC,EAAQkz+B,EAAalooB,GAC/C,EAAKwzxB,IAAmB,SAAUE,GAChC,IAAIvoG,EAAawoG,GAAoBD,EAAgBh8R,EAAU13f,GAC3Dj2V,EAAM0pnC,GAAkBC,GAE5B,GAAIxuoC,KAAK6kB,KAASohhC,EAAY,CAC5BjmiC,KAAK6yB,OAAO7yB,KAAK869B,YAAY0zK,IAC7B,IAAIt0oB,EAASq5mB,GAAai7B,EAAgBh8R,EAAU13f,GACpD96W,KAAKmlB,IAAI+0e,EACX,CAEAl6f,KAAK6kB,GAAOohhC,CACd,GAAGjmiC,MAEHA,KAAKgvoC,iBAAiBx8R,EAAU13f,EAAKoquB,EACvC,EAIAp7T,EAAKpqxB,UAAUuvoC,YAAc,WAC3B,OAAOjvoC,KAAK669B,QAAQ,EACtB,EAEA/wM,EAAKpqxB,UAAUsvoC,iBAAmB,SAAUx8R,EAAU13f,EAAKoquB,GACzD,IAAIliG,EAAcxwI,EAASyxM,UACvB3kgC,EAAOt/C,KAAK869B,YAAY,QACxBo0K,EAAoBhqD,GAAeA,EAAYgqD,kBAC/CC,EAAgBjqD,GAAeA,EAAYiqD,cAC3CC,EAAkBlqD,GAAeA,EAAYkqD,gBAC7CtnJ,EAAoBo9F,GAAeA,EAAYp9F,kBAC/Cs+F,EAAmBlB,GAAeA,EAAYkB,iBAC9Ct1uB,EAAQo0uB,GAAeA,EAAYp0uB,MACnCyxoB,EAAY2iG,GAAeA,EAAY3iG,UAE3C,IAAK2iG,GAAe1yO,EAAS43K,cAAe,CAC1C,IAAI1lC,EAAYlyI,EAASq+J,aAAa/1pB,GAClCwruB,EAAgB5hG,EAAU9szB,SAAS,YACvCs38B,EAAoB5oD,EAAc1u5B,SAAS,aAAag0zB,eACxDujJ,EAAgBzqJ,EAAU9szB,SAAS,CAAC,OAAQ,cAAcg0zB,eAC1DwjJ,EAAkB1qJ,EAAU9szB,SAAS,CAAC,SAAU,cAAcg0zB,eAC9Dw6F,EAAmBE,EAAcnjlC,IAAI,YACrC2tW,EAAQw1uB,EAAcnjlC,IAAI,SAC1Bo/+B,EAAY+jG,EAAcnjlC,IAAI,aAC9B2k/B,EAAoBY,GAAqBhE,EAC3C,CAEA,IAAIvyQ,EAAYqgI,EAAS+9J,cAAcz1pB,EAAK,SACxCyruB,EAAcp0W,EAAUirC,OAC5B99tB,EAAK8qW,SAAS+nV,GACd7yrB,EAAKjrC,MAAM+oH,KAAO,KAClB99E,EAAKjrC,MAAM8+9B,eAAgB,EAC3B7z7B,EAAKk26B,YAAY,YAAYnh9B,MAAQ66nC,EACrC5vlC,EAAKk26B,YAAY,QAAQnh9B,MAAQ86nC,EACjC7vlC,EAAKk26B,YAAY,UAAUnh9B,MAAQ+6nC,EAEnC,EAAKd,IAAmB,SAAUE,GAChC,IAAIt0oB,EAASl6f,KAAK869B,YAAY0zK,GAE9B,GAAIt0oB,EAAQ,CAEVA,EAAOusiB,SAAS8/C,GAChBrslB,EAAO7lf,MAAMu3H,QAAUummB,EAAUvmmB,QAEjC,IAAK,IAAIhrI,EAAI,EAAGA,EAAIg9+B,GAAev9+B,OAAQO,IAAK,CAC9C,IAAIo7jB,EAAY4hb,GAAeh9+B,GAC3ByuoC,EAAY/vlC,EAAKglE,SAAS03c,GAE9B,GAAIqzkB,EAAW,CACb,IAAIC,EAAiBD,EAAUh7nC,OAAS,CAAC,EACrC1I,EAAQuuf,EAAOs7d,YAAYx5Z,GAC3BuzkB,EAAa5joC,EAAM0I,QAAU1I,EAAM0I,MAAQ,CAAC,GAEnB,MAAzBi7nC,EAAelyX,SACjBmyX,EAAWr1oB,EAAOosiB,eAAiB,SAAW,QAAUgpG,EAAelyX,QAG3C,MAA1BkyX,EAAe1jgC,UACjB2jgC,EAAW3jgC,QAAU0jgC,EAAe1jgC,QAExC,CACF,CAEAsuX,EAAOw4d,YACT,CACF,GAAG1y9B,MACH,IAAIu2gC,EAASvzB,EAAYotB,YAAYt1pB,GACrC+soB,GAAc7n/B,KAAM8n/B,EAAmB,CACrCP,eAAgBzsoB,EAChBwsoB,aAAc,CACZI,kBAAmB,SAAUri1B,EAAW22Z,GACtC,OAAOgnb,EAAY0E,kBAAkBri1B,EAAW22Z,EAAWw2S,EAASxjmB,SACtE,GAEF+6uB,aAAcw8F,GAAe,OAC7B/7F,eAAgBr4Q,EAAUvmmB,QAC1Bm2tB,aAAwB,MAAVw0K,EAAiB/jK,EAASxqhB,QAAQ8yB,GAAOpzU,SAAS6u+B,GAAUtz9B,GAAMsz9B,GAAUA,GAAU,KAEtG,IAAIl1gC,EAAQrB,KAAK2sF,iBAGjB,GAAItrF,EAAO,CACT,IAAImuoC,EAAmB1nJ,EAAkBzk1B,OACzChiK,EAAMouoC,QAAUpuoC,EAAMgT,MAAMkwwB,MAC5BljxB,EAAMquoC,gBAAkBruoC,EAAMgT,MAAM8+tB,cAEpC9xuB,EAAMsuoC,WAAaH,EAAiBrsoC,IAAI,aAAe,SACvD,IAAI8lJ,EAAWum/B,EAAiBrsoC,IAAI,YAE/BwO,GAAQs3I,KACXA,EAAW,CAACA,EAAUA,IAGxB5nJ,EAAMuuoC,gBAAkB3m/B,CAC1B,CAEAjpJ,KAAK009B,cAAc,CACjB/17B,SAAU,KACVm07B,OAAO,EACPvw2B,QAAQ,IAGV4h4B,GAAoBnk/B,KAAM8wW,EAAOyxoB,EAAW6jG,EAC9C,EAEAt8T,EAAKpqxB,UAAU89rB,UAAY,WACzB2jT,GAAcnh/B,KAChB,EAEA8pxB,EAAKpqxB,UAAUkpgC,SAAW,WACxBvnB,GAAcrh/B,KAChB,EAEA8pxB,EAAKpqxB,UAAU+rhC,aAAe,SAAUj5K,EAAU13f,GAChD96W,KAAK6uoC,cAAcr8R,EAASo2M,cAAc9tsB,GAC5C,EAEAgva,EAAKpqxB,UAAUmvoC,cAAgB,SAAUvjmC,GACvC,IAAI4/xB,EAAWlr0B,KAAK869B,YAAY,QAChC+zK,GAAc3jU,EAAS5omB,MAAOh3L,GAC9B4/xB,EAASplE,OACX,EAEAgkB,EAAKpqxB,UAAU068B,aAAe,WAC5B,IAAIhhR,EAAYp5rB,KACZ6voC,EAAaz2c,EAAU0hS,YAAY,cACnCg1K,EAAW12c,EAAU0hS,YAAY,YACjCz59B,EAAQ+3rB,EAAUzsmB,iBAEtB,GAAKkjjC,GAAeC,GAAczuoC,IAASA,EAAM8mC,OAAjD,CAOA,IAHA,IAAI4nmC,EAAW,EACXrumC,EAAa1hC,KAAKqxF,OAEf3vD,GACDA,EAAWk3F,SACbm3gC,GAAYrumC,EAAWk3F,QAGzBl3F,EAAaA,EAAW2vD,OAG1B,IAAI/xC,EAAO85oB,EAAU0hS,YAAY,QAGjC,GAAK969B,KAAK268B,SAAYr75B,EAAKq75B,QAA3B,CAIA,IAAI8F,EAAUnh6B,EAAKgjL,MAAMm+uB,QACrBuvL,EAAU1wlC,EAAKkz+B,QAAQ,GACvBy9G,EAAQ3wlC,EAAKkz+B,QAAQ/xE,GACrB998B,EAAI,GAAW,GAAIstoC,EAAOD,GAgC9B,GA/BA,GAAiBrtoC,EAAGA,GAiBhBktoC,IACFA,EAAWjj5B,YAAYoj5B,GACvBE,EAAkBL,EAAY,GAC9BA,EAAWj3gC,OAASi3gC,EAAWh3gC,OAASk3gC,EAAWtvL,EACnDovL,EAAWn9K,cAGTo9K,IACFA,EAASlj5B,YAAYqj5B,GACrBC,EAAkBJ,EAAU,GAC5BA,EAASl3gC,OAASk3gC,EAASj3gC,OAASk3gC,EAAWtvL,EAC/CqvL,EAASp9K,cAGPrx9B,IAAUA,EAAM8mC,OAAQ,CAC1B9mC,EAAM4C,EAAI5C,EAAM2B,EAAI,EACpB3B,EAAMsrL,QAAUtrL,EAAMurL,QAAU,EAChC,IAAIo4D,OAAY,EACZituB,OAAoB,EACpBhp0B,EAAW5nJ,EAAMuuoC,gBACjBt+C,EAAYro8B,EAAS,GAAK8m/B,EAC1Bx+C,EAAYto8B,EAAS,GAAK8m/B,EAC1BI,EAAc1vL,EAAU,EACxB2vL,EAAU9wlC,EAAK2z+B,UAAUk9G,GACzB9woC,EAAI,CAAC+woC,EAAQ,IAAKA,EAAQ,IAC1B564B,EAAKl2M,EAAKkz+B,QAAQ29G,GAElB9woC,EAAE,GAAK,IACTA,EAAE,IAAMA,EAAE,GACVA,EAAE,IAAMA,EAAE,IAGZ,IAAIm6H,EAAM42gC,EAAQ,GAAK,GAAK,EAAI,EAEhC,GAAyB,UAArB/uoC,EAAMsuoC,YAA+C,QAArBtuoC,EAAMsuoC,WAAsB,CAC9D,IAAIpphC,GAAY1jH,KAAK0xH,MAAM67gC,EAAQ,GAAIA,EAAQ,IAE3CH,EAAM,GAAKD,EAAQ,KACrBzphC,EAAW1jH,KAAKsmC,GAAKo9E,GAGvBllH,EAAMklH,SAAWA,CACnB,CAEA,IAAI8tB,OAAK,EAET,OAAQhzI,EAAMsuoC,YACZ,IAAK,iBACL,IAAK,kBACL,IAAK,eACL,IAAK,SACHt7/B,GAAMk98B,EACNt/H,EAAoB,SACpB,MAEF,IAAK,oBACL,IAAK,qBACL,IAAK,kBACH590B,EAAKk98B,EACLt/H,EAAoB,MACpB,MAEF,QACE590B,EAAK,EACL490B,EAAoB,SAGxB,OAAQ5w9B,EAAMsuoC,YACZ,IAAK,MACHtuoC,EAAM4C,EAAItB,EAAE,GAAK2ulC,EAAY2+C,EAAM,GACnC5uoC,EAAM2B,EAAIL,EAAE,GAAK4ulC,EAAY0+C,EAAM,GACnCjr5B,EAAYriP,EAAE,GAAK,GAAM,OAASA,EAAE,IAAM,GAAM,QAAU,SAC1Dsv9B,EAAoBtv9B,EAAE,GAAK,GAAM,MAAQA,EAAE,IAAM,GAAM,SAAW,SAClE,MAEF,IAAK,QACHtB,EAAM4C,GAAKtB,EAAE,GAAK2ulC,EAAY0+C,EAAQ,GACtC3uoC,EAAM2B,GAAKL,EAAE,GAAK4ulC,EAAYy+C,EAAQ,GACtChr5B,EAAYriP,EAAE,GAAK,GAAM,QAAUA,EAAE,IAAM,GAAM,OAAS,SAC1Dsv9B,EAAoBtv9B,EAAE,GAAK,GAAM,SAAWA,EAAE,IAAM,GAAM,MAAQ,SAClE,MAEF,IAAK,iBACL,IAAK,cACL,IAAK,oBACHtB,EAAM4C,EAAIqtlC,EAAY939B,EAAMw2gC,EAAQ,GACpC3uoC,EAAM2B,EAAIgtoC,EAAQ,GAAK37/B,EACvB2wG,EAAYor5B,EAAQ,GAAK,EAAI,QAAU,OACvC/uoC,EAAMsrL,SAAW2k6B,EAAY939B,EAC7Bn4H,EAAMurL,SAAWv4C,EACjB,MAEF,IAAK,kBACL,IAAK,eACL,IAAK,qBACL,IAAK,SACHhzI,EAAM4C,EAAIuxP,EAAG,GACbn0P,EAAM2B,EAAIwyP,EAAG,GAAKnhH,EAClB2wG,EAAY,SACZ3jP,EAAMurL,SAAWv4C,EACjB,MAEF,IAAK,eACL,IAAK,YACL,IAAK,kBACHhzI,EAAM4C,GAAKqtlC,EAAY939B,EAAMy2gC,EAAM,GACnC5uoC,EAAM2B,EAAIitoC,EAAM,GAAK57/B,EACrB2wG,EAAYor5B,EAAQ,IAAM,EAAI,QAAU,OACxC/uoC,EAAMsrL,QAAU2k6B,EAAY939B,EAC5Bn4H,EAAMurL,SAAWv4C,EAIrBhzI,EAAMu3H,OAASv3H,EAAMw3H,OAASk3gC,EAC9B1uoC,EAAMija,SAAS,CAEb6uU,cAAe9xuB,EAAMquoC,iBAAmBz9K,EACxC1tM,MAAOljxB,EAAMouoC,SAAWzq5B,GAE5B,CA9IA,CAlBA,CA0BA,SAASkr5B,EAAkBh2oB,EAAQumd,GAKjC,IAAI4vL,EAAoBn2oB,EAAO00oB,oBAE/B,GAAyB,MAArByB,EAA2B,CAC7B,IAAID,EAAU9wlC,EAAK2z+B,UAAUxyE,GAC7Bvmd,EAAO+zB,KAAK,YAAyB,IAAZwyb,GAAiB,EAAI,GAAK598B,KAAKsmC,GAAK,EAAItmC,KAAK0xH,MAAM67gC,EAAQ,GAAIA,EAAQ,IAClG,MACEl2oB,EAAO+zB,KAAK,WAAYoinB,EAE5B,CA0HF,EAEOvmX,CACT,CArWA,CAqWE,IAEF,YCnTA,SAAS,GAAgB0oF,GACvB,IAAIyxM,EAAYzxM,EAASyxM,UACrBqiC,EAAgBriC,EAAUrs3B,SAAS,YACvC,MAAO,CACLu6iB,UAAW8xU,EAAUrs3B,SAAS,aAAag0zB,eAC3CsjJ,kBAAmB5oD,EAAc1u5B,SAAS,CAAC,cAAcg0zB,eACzDujJ,cAAelrF,EAAUrs3B,SAAS,CAAC,OAAQ,cAAcg0zB,eACzDwjJ,gBAAiBnrF,EAAUrs3B,SAAS,CAAC,SAAU,cAAcg0zB,eAC7Dw6F,iBAAkBE,EAAcnjlC,IAAI,YACpCo/+B,UAAW+jG,EAAcnjlC,IAAI,aAC7B2tW,MAAOw1uB,EAAcnjlC,IAAI,SACzB2k/B,kBAAmBY,GAAqBu7D,GAE5C,CAEA,SAASqsF,GAAWnkoC,GAClB,OAAOmgC,MAAMngC,EAAG,KAAOmgC,MAAMngC,EAAG,GAClC,CAEA,SAASokoC,GAAcC,GACrB,OAAOA,IAAQF,GAAWE,EAAI,MAAQF,GAAWE,EAAI,GACvD,CAEA,SAvJA,WACE,SAASC,EAASC,GAChB1woC,KAAKo7T,MAAQ,IAAI,GACjBp7T,KAAK2woC,UAAYD,GAAY,EAC/B,CAqHA,OAnHAD,EAAS/woC,UAAUizjB,WAAa,SAAU6/S,GACxC,IAAI9lzB,EAAQ1sD,KAGZA,KAAK2nlC,gBAAkB,KACvB,IAAIipD,EAAW5woC,KACXo7T,EAAQw10B,EAASx10B,MACjBy10B,EAAcD,EAASE,UAC3BF,EAASE,UAAYt+R,EAGhBq+R,GACHz10B,EAAMvtE,YAGR,IAAIq31B,EAAc,GAAgB1yO,GAClCA,EAASjqU,KAAKsomB,GAAa1rnC,KAAI,SAAU21V,GACvCpuT,EAAMqu6B,OAAOvoH,EAAU13f,EAAKoquB,EAC9B,IAAG32gC,QAAO,SAAU4x+B,EAAQ4nC,GAC1Br7hC,EAAMqklC,UAAUF,EAAar+R,EAAUu1O,EAAQ5nC,EAAQ+kC,EACzD,IAAGryjC,QAAO,SAAUioV,GAClB1/C,EAAMvoS,OAAOg+mC,EAAYnuJ,iBAAiB5noB,GAC5C,IAAGinC,SACL,EAIA0uvB,EAAS/woC,UAAU+rhC,aAAe,WAChC,IAAIj5K,EAAWxy2B,KAAK8woC,UAEft+R,GAILA,EAASqxI,mBAAkB,SAAUhq2B,EAAIihO,GACvCjhO,EAAG4x4B,aAAaj5K,EAAU13f,EAC5B,GAAG96W,KACL,EAIAywoC,EAAS/woC,UAAUyolC,yBAA2B,SAAU31O,GACtDxy2B,KAAKoolC,aAAe,GAAgB51O,GACpCxy2B,KAAK8woC,UAAY,KACjB9woC,KAAKo7T,MAAMvtE,WACb,EAIA4i5B,EAAS/woC,UAAU2olC,kBAAoB,SAAUC,EAAY91O,GAG3D,SAAS+1O,EAA0B1u8B,GAC5BA,EAAGkpkB,SAiEd,SAAwBlpkB,GACtB,OAAOA,EAAG040B,WAAa140B,EAAG040B,UAAUly9B,OAAS,CAC/C,CAnE0B2woC,CAAen3/B,KACjCA,EAAG6z1B,aAAc,EACjB7z1B,EAAG270B,YAAY,YAAYU,YAAa,EAE5C,CAPAl29B,KAAK2nlC,gBAAkB,GASvB,IAAK,IAAI7suB,EAAMwtuB,EAAW9hjC,MAAOs0U,EAAMwtuB,EAAW7hjC,IAAKq0U,IAGrD,GAAIy1xB,GAFa/9R,EAASo2M,cAAc9tsB,IAET,CAC7B,IAAIjhO,EAAK,IAAI75I,KAAK2woC,UAAUn+R,EAAU13f,EAAK96W,KAAKoolC,cAChDvu8B,EAAGgsD,SAAS0i5B,GACZvolC,KAAKo7T,MAAMj2S,IAAI00H,GACf24tB,EAASu2M,iBAAiBjusB,EAAKjhO,GAE/B75I,KAAK2nlC,gBAAgB9llC,KAAKg4I,EAC5B,CAEJ,EAIA42/B,EAAS/woC,UAAUmzB,OAAS,WAC1B7yB,KAAKo7T,MAAMvtE,WACb,EAIA4i5B,EAAS/woC,UAAUmshC,aAAe,SAAUnq9B,GAC1C,GAAyB1hE,KAAK2nlC,iBAAmB3nlC,KAAKo7T,MAAO15P,EAC/D,EAEA+ukC,EAAS/woC,UAAUq79B,OAAS,SAAUvoH,EAAU13f,EAAKoquB,GAGnD,GAAKqrD,GAFY/9R,EAASo2M,cAAc9tsB,IAExC,CAIA,IAAIjhO,EAAK,IAAI75I,KAAK2woC,UAAUn+R,EAAU13f,EAAKoquB,GAC3C1yO,EAASu2M,iBAAiBjusB,EAAKjhO,GAC/B75I,KAAKo7T,MAAMj2S,IAAI00H,EAJf,CAKF,EAEA42/B,EAAS/woC,UAAUqxoC,UAAY,SAAUF,EAAaI,EAAalpD,EAAQ5nC,EAAQ+kC,GACjF,IAAIxziB,EAASm/lB,EAAYnuJ,iBAAiBqlG,GAErCwoD,GAAcU,EAAYroF,cAAczI,KAKxCzugB,EAGHA,EAAOihB,WAAWs+kB,EAAa9wF,EAAQ+kC,GAFvCxziB,EAAS,IAAI1xiB,KAAK2woC,UAAUM,EAAa9wF,EAAQ+kC,GAKnD+rD,EAAYloF,iBAAiB5I,EAAQzugB,GACrC1xiB,KAAKo7T,MAAMj2S,IAAIushB,IAXb1xiB,KAAKo7T,MAAMvoS,OAAO6+gB,EAYtB,EAEO++lB,CACT,CA1HA,GCHA,IAAI3l9B,GAAK,GACLC,GAAK,GACLC,GAAK,GACLujzB,GAAc,GACd2iK,GAAe,GACf,GAAUruoC,KAAKmjH,IAEnB,SAASmrhC,GAAqBC,EAAanymC,EAAQq4G,GASjD,IARA,IAIIl4I,EAJAy4H,EAAKu5gC,EAAY,GACjB/w5B,EAAK+w5B,EAAY,GACjBrt4B,EAAKqt4B,EAAY,GACjBzuoC,EAAIo9D,IAEJsxkC,EAAe/5/B,EAASA,EACxB4qV,EAAW,GAENt0d,EAAK,GAAKA,GAAM,GAAKA,GAAM,GAClCk9K,GAAG,GAAKyjzB,GAAY122B,EAAG,GAAIwoH,EAAG,GAAI0jB,EAAG,GAAIn2P,GACzCk9K,GAAG,GAAKyjzB,GAAY122B,EAAG,GAAIwoH,EAAG,GAAI0jB,EAAG,GAAIn2P,IACrC26hB,EAAO,GAAQ2omB,GAAapm9B,GAAI7rJ,GAAUoymC,IAEnC1uoC,IACTA,EAAI4liB,EACJnpiB,EAAIwO,GAMR,IAAK,IAAIhN,EAAI,EAAGA,EAAI,GAAIA,IAAK,CAE3B,IAAIG,EAAO3B,EAAI8ie,EAGfn3S,GAAG,GAAKwjzB,GAAY122B,EAAG,GAAIwoH,EAAG,GAAI0jB,EAAG,GAAI3kQ,GACzC2rL,GAAG,GAAKwjzB,GAAY122B,EAAG,GAAIwoH,EAAG,GAAI0jB,EAAG,GAAI3kQ,GACzC4rL,GAAG,GAAKujzB,GAAY122B,EAAG,GAAIwoH,EAAG,GAAI0jB,EAAG,GAAIhjQ,GACzCiqL,GAAG,GAAKujzB,GAAY122B,EAAG,GAAIwoH,EAAG,GAAI0jB,EAAG,GAAIhjQ,GACzC,IAAIwniB,EAAO2omB,GAAanm9B,GAAI9rJ,GAAUoymC,EAEtC,GAAI,GAAQ9omB,GAAQ,IAClB,MAIF,IAAI+omB,EAAWJ,GAAalm9B,GAAI/rJ,GAAUoymC,EAC1CnvqB,GAAY,EAERqmE,EAAO,EACL+omB,GAAY,EACdlyoC,GAAQ8ie,EAER9ie,GAAQ8ie,EAGNovqB,GAAY,EACdlyoC,GAAQ8ie,EAER9ie,GAAQ8ie,CAGd,CAEA,OAAO9ie,CACT,CAGe,SAASmyoC,GAAW9iJ,EAAO3s5B,GACxC,IAAI0viC,EAAO,GACPC,EAAqB,GACrBjB,EAAM,CAAC,GAAI,GAAI,IACfkB,EAAO,CAAC,GAAI,IACZzuoC,EAAI,GACR6+F,GAAS,EACT2s5B,EAAM67I,UAAS,SAAUziyB,EAAMiT,GAC7B,IAAIiutB,EAAalhuB,EAAK8gtB,YAClBgpF,EAAa9pyB,EAAKi0rB,UAAU,cAC5B81G,EAAW/pyB,EAAKi0rB,UAAU,YAEzBitC,EAAW8oE,aACd9oE,EAAW8oE,WAAa,CAAC,GAAW9oE,EAAW,IAAK,GAAWA,EAAW,KAEtEA,EAAW,IACbA,EAAW8oE,WAAWhwoC,KAAK,GAAWknkC,EAAW,MAIrD,IAAI+oE,EAAiB/oE,EAAW8oE,WAEhC,GAAqB,MAAjB9oE,EAAW,GAAY,CAKzB,GAJA,GAAUynE,EAAI,GAAIsB,EAAe,IACjC,GAAUtB,EAAI,GAAIsB,EAAe,IACjC,GAAUtB,EAAI,GAAIsB,EAAe,IAE7BH,GAA6B,SAAfA,EAAuB,CACvC,IAAIp5I,EAAaqtF,GAAc/9uB,EAAKymxB,OAChClvnC,EAAI+xoC,GAAqBX,EAAKsB,EAAe,GAAIv5I,EAAaz25B,GAElE2viC,EAAmBjB,EAAI,GAAG,GAAIA,EAAI,GAAG,GAAIA,EAAI,GAAG,GAAIpxoC,EAAGoyoC,GACvDhB,EAAI,GAAG,GAAKgB,EAAK,GACjBhB,EAAI,GAAG,GAAKgB,EAAK,GACjBC,EAAmBjB,EAAI,GAAG,GAAIA,EAAI,GAAG,GAAIA,EAAI,GAAG,GAAIpxoC,EAAGoyoC,GACvDhB,EAAI,GAAG,GAAKgB,EAAK,GACjBhB,EAAI,GAAG,GAAKgB,EAAK,EACnB,CAEII,GAAyB,SAAbA,IACVr5I,EAAaqtF,GAAc/9uB,EAAK0mxB,OAChCnvnC,EAAI+xoC,GAAqBX,EAAKsB,EAAe,GAAIv5I,EAAaz25B,GAElE2viC,EAAmBjB,EAAI,GAAG,GAAIA,EAAI,GAAG,GAAIA,EAAI,GAAG,GAAIpxoC,EAAGoyoC,GACvDhB,EAAI,GAAG,GAAKgB,EAAK,GACjBhB,EAAI,GAAG,GAAKgB,EAAK,GACjBC,EAAmBjB,EAAI,GAAG,GAAIA,EAAI,GAAG,GAAIA,EAAI,GAAG,GAAIpxoC,EAAGoyoC,GACvDhB,EAAI,GAAG,GAAKgB,EAAK,GACjBhB,EAAI,GAAG,GAAKgB,EAAK,IAInB,GAAUzoE,EAAW,GAAIynE,EAAI,IAC7B,GAAUznE,EAAW,GAAIynE,EAAI,IAC7B,GAAUznE,EAAW,GAAIynE,EAAI,GAC/B,MAEI,GAAUkB,EAAK,GAAII,EAAe,IAClC,GAAUJ,EAAK,GAAII,EAAe,IAClC,GAAS7uoC,EAAGyuoC,EAAK,GAAIA,EAAK,IAC1B,GAAezuoC,EAAGA,GAEd0uoC,GAA6B,SAAfA,IACZp5I,EAAaqtF,GAAc/9uB,EAAKymxB,OACpC,GAAiBojB,EAAK,GAAIA,EAAK,GAAIzuoC,EAAGs1/B,EAAaz25B,IAGjD8viC,GAAyB,SAAbA,IACVr5I,EAAaqtF,GAAc/9uB,EAAK0mxB,OACpC,GAAiBmjB,EAAK,GAAIA,EAAK,GAAIzuoC,GAAIs1/B,EAAaz25B,IAGtD,GAAUin+B,EAAW,GAAI2oE,EAAK,IAC9B,GAAU3oE,EAAW,GAAI2oE,EAAK,GAEpC,GACF,CCpIA,SAASK,GAAe7uJ,GACtB,MAAyB,SAAlBA,EAAS32+B,IAClB,CAEA,IAAIyloC,GAEJ,SAAUtpxB,GAGR,SAASspxB,IACP,IAAItllC,EAAmB,OAAXg8T,GAAmBA,EAAOnoX,MAAMP,KAAMI,YAAcJ,KAGhE,OADA0sD,EAAMngD,KAAOyloC,EAAUzloC,KAChBmgD,CACT,CA2OA,OAlPAkgX,EAAUoluB,EAAWtpxB,GASrBspxB,EAAUtyoC,UAAUgxD,KAAO,SAAU4y6B,EAASr07B,GAC5C,IAAIi+iC,EAAa,IAAI,GACjB0jD,EAAW,IAAI,GACfx10B,EAAQp7T,KAAKo7T,MACjBp7T,KAAKqinC,YAAc,IAAI,GAAepzkC,EAAIk9/B,SAC1CnsiC,KAAKsinC,gBAAkB,CACrBxymC,OAAQsrT,GAEVA,EAAMj2S,IAAI+nkC,EAAW9xxB,OACrBA,EAAMj2S,IAAIyrnC,EAASx10B,OACnBp7T,KAAKmtlC,YAAcD,EACnBltlC,KAAKiyoC,UAAYrB,EACjB5woC,KAAKkyoC,cAAe,CACtB,EAEAF,EAAUtyoC,UAAU4uH,OAAS,SAAU003B,EAAa1f,EAASr07B,GAC3D,IAAIyd,EAAQ1sD,KAERkj/B,EAAWF,EAAYjx3B,iBAC3B/xH,KAAKimuB,OAAS+8Q,EACd,IAAIkqG,EAAaltlC,KAAKmtlC,YAClByjD,EAAW5woC,KAAKiyoC,UAChB720B,EAAQp7T,KAAKo7T,MAEjB,GAAI220B,GAAe7uJ,GAAW,CAC5B,IAAIivJ,EAAe,CACjBluoC,EAAGi/+B,EAASj/+B,EACZjB,EAAGkg/B,EAASlg/B,EACZ41H,OAAQsq3B,EAAStq3B,OACjBC,OAAQqq3B,EAASrq3B,QAGf74H,KAAKkyoC,aACP920B,EAAM6yN,KAAKkknB,GAEX,GAAoB/20B,EAAO+20B,EAAcnvJ,EAE7C,CAGAuuJ,GAAWvuJ,EAAY6kJ,WAAY4C,GAAmBznJ,IACtD,IAAIxz+B,EAAOwz+B,EAAYx+2B,UACvB0o9B,EAAWv6hB,WAAWnjjB,GACtB,IAAI45/B,EAAWpmB,EAAYwlJ,cAE3BoI,EAASj+kB,WAAWy2c,GAEpBppgC,KAAKwvnC,0BAELxvnC,KAAK6xI,kBAAkBmx2B,EAAa1f,EAASr07B,GAE7CviB,aAAa1sB,KAAKoyoC,gBAClB,IAAIzE,EAAc3qJ,EAAY2qJ,YAC1B0E,EAAkBrvJ,EAAY7/+B,IAAI,CAAC,QAAS,oBAE5CwqoC,GACF3toC,KAAKsyoC,2BAA2B3E,EAAa0E,GAG/C,IAAInxgC,EAAS8h3B,EAAY7/+B,IAAI,UAC7BqM,EAAKi/+B,MAAMskI,UAAS,SAAU1piC,GAC5B,IAAIyxR,EAAMzxR,EAAKg8E,UACXxrB,EAAKxwD,EAAKqijC,eACVhnJ,EAAYr75B,EAAKuuG,WAErB,GAAK/9C,EAAL,CAKAA,EAAG7rG,IAAI,QAAQA,IAAI,WACnB,IAAIu4W,EAAYm+lB,EAAUvh/B,IAAI,aAE1BojZ,GACF1sQ,EAAGjpI,GAAG,QAAQ,SAAUzR,GACtB,OAAQ+hI,GACN,IAAK,QACHysgC,EAAYR,UACXzglC,EAAM6llC,YAAc7llC,EAAM4llC,2BAA2B3E,EAAa0E,GACnE1E,EAAYP,SAAStyxB,GAErBtrW,EAAKq5iC,cAAc/tsB,EAAK,CAACjhO,EAAG51I,EAAG41I,EAAG72I,IAClC,MAEF,IAAK,WACHwM,EAAKq5iC,cAAc/tsB,EAAK,CAACjhO,EAAG51I,EAAG41I,EAAG72I,IAElCqmF,EAAKq/9B,UAAU,CACbk6E,OAAO,IACN,GAEH+H,GAAe3nJ,EAAa,aAAc355B,EAAM,CAAClqF,EAAEg5H,QAASh5H,EAAEi5H,UAE9D1rE,EAAM++9B,aAAazoC,GAEnB,MAGF,QACExz+B,EAAKq5iC,cAAc/tsB,EAAK,CAACjhO,EAAG51I,EAAG41I,EAAG72I,IAElCqnoC,GAAiBrnJ,EAAY6kJ,WAAY7kJ,GAEzCt27B,EAAM++9B,aAAazoC,GAIzB,IAAGpy+B,GAAG,WAAW,WACX+8nC,GACFA,EAAYN,WAAWvyxB,EAE3B,IAGFjhO,EAAG2sQ,aAAaD,IAAam+lB,EAAUvh/B,IAAI,WAG7B,cAFFuh/B,EAAUvh/B,IAAI,CAAC,WAAY,YAGrC65+B,GAAUnj2B,GAAIi3N,MAAQznR,EAAKmpjC,yBAnD7B,CAqDF,IACAhjoC,EAAKi/+B,MAAM67I,UAAS,SAAUziyB,GAC5B,IAAIhuN,EAAKguN,EAAK6jyB,eACV56xB,EAAQjJ,EAAKjwK,WAAWz0L,IAAI,CAAC,WAAY,UAExC02I,GAIS,cAAVi3N,IACFksoB,GAAUnj2B,GAAIi3N,MAAQ,CACpBjJ,KAAM,CAACA,EAAKxiM,WACZh8E,KAAM,CAACw+Q,EAAKymxB,MAAMjp9B,UAAWwiM,EAAK0mxB,MAAMlp9B,YAG9C,IACA,IAAIom+B,EAAoD,aAA9BzoJ,EAAY7/+B,IAAI,WAA4B6/+B,EAAY7/+B,IAAI,CAAC,WAAY,gBAC/Fu9P,EAAKlxP,EAAKm5iC,UAAU,MACpB1htB,EAAKz3V,EAAKm5iC,UAAU,MACxBn5iC,EAAKi/+B,MAAMskI,UAAS,SAAU1piC,GAC5B2hjC,GAAgB3hjC,EAAMoijC,EAAqB/q4B,EAAIumG,EACjD,IACAjnW,KAAKkyoC,cAAe,CACtB,EAEAF,EAAUtyoC,UAAU2l8B,QAAU,WAC5Brl8B,KAAKqinC,aAAerinC,KAAKqinC,YAAYh9K,UACrCrl8B,KAAKsinC,gBAAkB,IACzB,EAEA0vB,EAAUtyoC,UAAU4yoC,2BAA6B,SAAU3E,EAAa0E,GACtE,IAAIjwoC,EAAOpC,MAEX,SAAU0uW,IACRi/xB,EAAYj/xB,MAAK,SAAUnrV,GACzBnhB,EAAKqphC,aAAarphC,EAAK6juB,SACtB7juB,EAAKmwoC,YAAchvnC,KAAa8unC,EAAkBjwoC,EAAKgwoC,eAAiBvsnC,WAAW6oV,EAAM,IAAMA,IAClG,GACD,CALD,EAMF,EAEAsjyB,EAAUtyoC,UAAUmyI,kBAAoB,SAAUmx2B,EAAa1f,EAASr07B,GACtE,IAAIyd,EAAQ1sD,KAERuwI,EAAavwI,KAAKqinC,YAClBjJ,EAAiBp5mC,KAAKsinC,gBACtBlnzB,EAAQp7T,KAAKo7T,MACjB7qL,EAAWgo+B,mBAAkB,SAAUp5mC,EAAG8E,EAAGjB,GAC3C,IAAI0wF,EAAO0nO,EAAMj3E,kBAEjB,OADAzwJ,EAAKo42B,eAAe1woB,EAAMx4L,WACnBlvC,EAAKkg3B,QAAQ3v8B,EAAGjB,KAAO62mC,GAAoB16mC,EAAG8vC,EAAK+z8B,EAC5D,IAEK+uJ,GAAe/uJ,EAAYjx3B,mBAKhCwe,EAAWvtH,OAAOgg+B,EAAY7/+B,IAAI,SAClCi2mC,EAAeG,UAAYv2H,EAAY7/+B,IAAI,cAC3Ci2mC,EAAez5kC,KAAOqj9B,EAAYjx3B,iBAAiB1xF,UACnDkwG,EAAWviG,IAAI,OAAOA,IAAI,QAAQp9B,GAAG,OAAO,SAAUzR,GACpD,GAA2Bi6mC,EAAgBj6mC,EAAEq1I,GAAIr1I,EAAEk1I,IACnDplG,EAAIu1/B,eAAe,CACjBznR,SAAUimO,EAAYz39B,GACtBhf,KAAM,YACNioI,GAAIr1I,EAAEq1I,GACNH,GAAIl1I,EAAEk1I,IAEV,IAAGzjI,GAAG,QAAQ,SAAUzR,GACtB,GAA4Bi6mC,EAAgBj6mC,EAAE2iG,MAAO3iG,EAAEwtL,QAASxtL,EAAEytL,SAClE39I,EAAIu1/B,eAAe,CACjBznR,SAAUimO,EAAYz39B,GACtBhf,KAAM,YACNozB,KAAMxgC,EAAE2iG,MACR6qF,QAASxtL,EAAEwtL,QACXC,QAASztL,EAAEytL,UAGblgI,EAAM8ikC,0BAEN+hB,GAAWvuJ,EAAY6kJ,WAAY4C,GAAmBznJ,IAEtDt27B,EAAMullC,UAAUxmH,eAGhBx8+B,EAAI2mgC,mBACN,KAjCErl6B,EAAWuhM,SAkCf,EAEAkg0B,EAAUtyoC,UAAU8vnC,wBAA0B,WAC5C,IAAIxsI,EAAchj/B,KAAKimuB,OACnBz2tB,EAAOwz+B,EAAYx+2B,UACnBor/B,EAAY6a,GAAmBznJ,GACnCxz+B,EAAKq0+B,mBAAkB,SAAUhq2B,EAAIihO,GACnCjhO,GAAMA,EAAGkt8B,eAAe6oC,EAC1B,GACF,EAEAoiB,EAAUtyoC,UAAU+rhC,aAAe,SAAUzoC,GAC3CuuJ,GAAWvuJ,EAAY6kJ,WAAY4C,GAAmBznJ,IAEtDhj/B,KAAKmtlC,YAAY1hE,eAEjBzrhC,KAAKiyoC,UAAUxmH,cACjB,EAEAumH,EAAUtyoC,UAAUmzB,OAAS,SAAUyw8B,EAASr07B,GAC9CjvC,KAAKmtlC,aAAentlC,KAAKmtlC,YAAYt6jC,SACrC7yB,KAAKiyoC,WAAajyoC,KAAKiyoC,UAAUp/mC,QACnC,EAEAm/mC,EAAUzloC,KAAO,QACVyloC,CACT,CApPA,CAoPEhvV,IAEF,YCxQA,SAASyvV,GAAgBlnnC,GACvB,MAAO,OAASA,CAClB,CAEA,IAAImnnC,GAEJ,WACE,SAASA,EAAMC,GACb3yoC,KAAKuM,KAAO,QACZvM,KAAKowP,MAAQ,GACbpwP,KAAKqpgC,MAAQ,GACbrpgC,KAAK4yoC,UAAY,CAAC,EAMlB5yoC,KAAK6yoC,UAAY,CAAC,EAClB7yoC,KAAK8yoC,UAAYH,IAAY,CAC/B,CAiRA,OA3QAD,EAAMhzoC,UAAUqzoC,WAAa,WAC3B,OAAO/yoC,KAAK8yoC,SACd,EAOAJ,EAAMhzoC,UAAUmpR,QAAU,SAAUt9P,EAAI85I,GACtC95I,EAAW,MAANA,EAAa,GAAK85I,EAAY,GAAK95I,EACxC,IAAIynnC,EAAWhzoC,KAAK4yoC,UAEpB,IAAII,EAASP,GAAgBlnnC,IAA7B,CAQA,IAAI89D,EAAO,IAAI4pjC,GAAU1nnC,EAAI85I,GAI7B,OAHAh8E,EAAK6pjC,UAAYlzoC,KACjBA,KAAKowP,MAAMvuP,KAAKwnF,GAChB2pjC,EAASP,GAAgBlnnC,IAAO89D,EACzBA,CANP,CAOF,EAOAqpjC,EAAMhzoC,UAAUkuoC,eAAiB,SAAUvo+B,GACzC,IAAIk22B,EAASv7gC,KAAKwP,KAAK88/B,YAAYjn2B,GACnC,OAAOrlK,KAAKowP,MAAMmrxB,EACpB,EAOAm3H,EAAMhzoC,UAAUwznC,YAAc,SAAU3nmC,GACtC,OAAOvrB,KAAK4yoC,UAAUH,GAAgBlnnC,GACxC,EAOAmnnC,EAAMhzoC,UAAUyzoC,QAAU,SAAUpp1B,EAAIC,EAAI3kJ,GAC1C,IAAI2t+B,EAAWhzoC,KAAK4yoC,UAChBQ,EAAWpzoC,KAAK6yoC,UAkBpB,GAhBI,GAAgB9o1B,KAClBA,EAAK/pT,KAAKowP,MAAM25D,IAGd,GAAgBC,KAClBA,EAAKhqT,KAAKowP,MAAM45D,IAGZD,aAAckp1B,KAClBlp1B,EAAKip1B,EAASP,GAAgB1o1B,KAG1BC,aAAcip1B,KAClBjp1B,EAAKgp1B,EAASP,GAAgBzo1B,KAG3BD,GAAOC,EAAZ,CAIA,IAAInlS,EAAMklS,EAAGx+R,GAAK,IAAMy+R,EAAGz+R,GACvBs8U,EAAO,IAAIwryB,GAAUtp1B,EAAIC,EAAI3kJ,GAgBjC,OAfAwiM,EAAKqryB,UAAYlzoC,KAEbA,KAAK8yoC,YACP/o1B,EAAGup1B,SAASzxoC,KAAKgmW,GACjB79C,EAAG4i1B,QAAQ/qoC,KAAKgmW,IAGlB99C,EAAGs/sB,MAAMxngC,KAAKgmW,GAEV99C,IAAOC,GACTA,EAAGq/sB,MAAMxngC,KAAKgmW,GAGhB7nW,KAAKqpgC,MAAMxngC,KAAKgmW,GAChBuryB,EAASvunC,GAAOgjV,EACTA,CAnBP,CAoBF,EAOA6qyB,EAAMhzoC,UAAU+ooC,eAAiB,SAAUpj+B,GACzC,IAAIk22B,EAASv7gC,KAAKopgC,SAASkD,YAAYjn2B,GACvC,OAAOrlK,KAAKqpgC,MAAMkS,EACpB,EAOAm3H,EAAMhzoC,UAAU6zoC,QAAU,SAAUxp1B,EAAIC,GAClCD,aAAckp1B,KAChBlp1B,EAAKA,EAAGx+R,IAGNy+R,aAAcip1B,KAChBjp1B,EAAKA,EAAGz+R,IAGV,IAAI6nnC,EAAWpzoC,KAAK6yoC,UAEpB,OAAI7yoC,KAAK8yoC,UACAM,EAASrp1B,EAAK,IAAMC,GAEpBop1B,EAASrp1B,EAAK,IAAMC,IAAOop1B,EAASpp1B,EAAK,IAAMD,EAE1D,EAOA2o1B,EAAMhzoC,UAAUqznC,SAAW,SAAUrxjC,EAAIv0B,GAIvC,IAHA,IAAIijN,EAAQpwP,KAAKowP,MACbvxH,EAAMuxH,EAAM/vP,OAEPO,EAAI,EAAGA,EAAIi+H,EAAKj+H,IACnBwvP,EAAMxvP,GAAGykK,WAAa,GACxB3jG,EAAG9hE,KAAKutC,EAASijN,EAAMxvP,GAAIA,EAGjC,EAOA8xoC,EAAMhzoC,UAAU4qoC,SAAW,SAAU5okC,EAAIv0B,GAIvC,IAHA,IAAIk89B,EAAQrpgC,KAAKqpgC,MACbxq4B,EAAMwq4B,EAAMhpgC,OAEPO,EAAI,EAAGA,EAAIi+H,EAAKj+H,IACnByogC,EAAMzogC,GAAGykK,WAAa,GAAKgk2B,EAAMzogC,GAAG0tnC,MAAMjp9B,WAAa,GAAKgk2B,EAAMzogC,GAAG2tnC,MAAMlp9B,WAAa,GAC1F3jG,EAAG9hE,KAAKutC,EAASk89B,EAAMzogC,GAAIA,EAGjC,EAQA8xoC,EAAMhzoC,UAAU8zoC,qBAAuB,SAAU9xkC,EAAI+xkC,EAAW9lhC,EAAWxgF,GAKzE,GAJMsmmC,aAAqBR,KACzBQ,EAAYzzoC,KAAK4yoC,UAAUH,GAAgBgB,KAGxCA,EAAL,CAMA,IAFA,IAAIC,EAAyB,QAAd/lhC,EAAsB,WAA2B,OAAdA,EAAqB,UAAY,QAE1E/sH,EAAI,EAAGA,EAAIZ,KAAKowP,MAAM/vP,OAAQO,IACrCZ,KAAKowP,MAAMxvP,GAAG+yoC,WAAY,EAG5B,IAAIjykC,EAAG9hE,KAAKutC,EAASsmmC,EAAW,MAMhC,IAFA,IAAIj1lC,EAAQ,CAACi1lC,GAENj1lC,EAAMn+C,QACX,KAAIkimB,EAAc/jjB,EAAML,QACpBkr9B,EAAQ9ma,EAAYmxiB,GAExB,IAAS9yoC,EAAI,EAAGA,EAAIyogC,EAAMhpgC,OAAQO,IAAK,CACrC,IAAIzB,EAAIkqgC,EAAMzogC,GACVgzoC,EAAYz0oC,EAAEmvnC,QAAU/rhB,EAAcpjmB,EAAEovnC,MAAQpvnC,EAAEmvnC,MAEtD,IAAKslB,EAAUD,UAAW,CACxB,GAAIjykC,EAAG9hE,KAAKutC,EAASymmC,EAAWrxiB,GAE9B,OAGF/jjB,EAAM38C,KAAK+xoC,GACXA,EAAUD,WAAY,CACxB,CACF,CAhB+B,CAfjC,CAiCF,EASAjB,EAAMhzoC,UAAU6uE,OAAS,WAMvB,IALA,IAAI/+D,EAAOxP,KAAKwP,KACZ45/B,EAAWppgC,KAAKopgC,SAChBh5wB,EAAQpwP,KAAKowP,MACbi5wB,EAAQrpgC,KAAKqpgC,MAERzogC,EAAI,EAAGi+H,EAAMuxH,EAAM/vP,OAAQO,EAAIi+H,EAAKj+H,IAC3CwvP,EAAMxvP,GAAGykK,WAAa,EAGxB,IAASzkK,EAAI,EAAGi+H,EAAMrvH,EAAK+5C,QAAS3oD,EAAIi+H,EAAKj+H,IAC3CwvP,EAAM5gP,EAAK88/B,YAAY1rgC,IAAIykK,UAAYzkK,EAQzC,IALAwogC,EAAS6+C,YAAW,SAAUntsB,GAC5B,IAAIjT,EAAOwhqB,EAAMD,EAASkD,YAAYxxpB,IACtC,OAAOjT,EAAKymxB,MAAMjp9B,WAAa,GAAKwiM,EAAK0mxB,MAAMlp9B,WAAa,CAC9D,IAESzkK,EAAI,EAAGi+H,EAAMwq4B,EAAMhpgC,OAAQO,EAAIi+H,EAAKj+H,IAC3CyogC,EAAMzogC,GAAGykK,WAAa,EAGxB,IAASzkK,EAAI,EAAGi+H,EAAMuq4B,EAAS7/8B,QAAS3oD,EAAIi+H,EAAKj+H,IAC/CyogC,EAAMD,EAASkD,YAAY1rgC,IAAIykK,UAAYzkK,CAE/C,EAOA8xoC,EAAMhzoC,UAAU6wB,MAAQ,WAKtB,IAJA,IAAIk+9B,EAAQ,IAAIikJ,EAAM1yoC,KAAK8yoC,WACvB1i5B,EAAQpwP,KAAKowP,MACbi5wB,EAAQrpgC,KAAKqpgC,MAERzogC,EAAI,EAAGA,EAAIwvP,EAAM/vP,OAAQO,IAChC6t/B,EAAM5luB,QAAQz4B,EAAMxvP,GAAG2qB,GAAI6kO,EAAMxvP,GAAGykK,WAGtC,IAASzkK,EAAI,EAAGA,EAAIyogC,EAAMhpgC,OAAQO,IAAK,CACrC,IAAIzB,EAAIkqgC,EAAMzogC,GACd6t/B,EAAM0kJ,QAAQh0oC,EAAEmvnC,MAAM/imC,GAAIpsB,EAAEovnC,MAAMhjmC,GAAIpsB,EAAEkmK,UAC1C,CAEA,OAAOop1B,CACT,EAGOikJ,CACT,CA/RA,GAiSIO,GAEJ,WACE,SAASA,EAAU1nnC,EAAI85I,GACrBrlK,KAAK4soC,QAAU,GACf5soC,KAAKszoC,SAAW,GAChBtzoC,KAAKqpgC,MAAQ,GACbrpgC,KAAKqlK,WAAa,EAClBrlK,KAAKurB,GAAW,MAANA,EAAa,GAAKA,EAC5BvrB,KAAKqlK,UAAyB,MAAbA,GAAqB,EAAIA,CAC5C,CAuGA,OAjGA4t+B,EAAUvzoC,UAAUwtxB,OAAS,WAC3B,OAAOltxB,KAAKqpgC,MAAMhpgC,MACpB,EAMA4yoC,EAAUvzoC,UAAUm0oC,SAAW,WAC7B,OAAO7zoC,KAAK4soC,QAAQvsoC,MACtB,EAMA4yoC,EAAUvzoC,UAAUo0oC,UAAY,WAC9B,OAAO9zoC,KAAKszoC,SAASjzoC,MACvB,EAEA4yoC,EAAUvzoC,UAAUk4L,SAAW,SAAUvhK,GACvC,KAAIr2B,KAAKqlK,UAAY,GAMrB,OAFYrlK,KAAKkzoC,UACK1joC,KAAKqhgC,aAAa7wgC,KAAKqlK,WAC5BuyB,SAASvhK,EAC5B,EAEA48mC,EAAUvzoC,UAAU8yoC,uBAAyB,WAM3C,IALA,IAAI/vJ,EAAc,CAChB56oB,KAAM,GACNx+Q,KAAM,IAGCzoF,EAAI,EAAGA,EAAIZ,KAAKqpgC,MAAMhpgC,OAAQO,IAAK,CAC1C,IAAImzoC,EAAe/zoC,KAAKqpgC,MAAMzogC,GAE1BmzoC,EAAa1u+B,UAAY,IAI7Bo90B,EAAY56oB,KAAKhmW,KAAKkyoC,EAAa1u+B,WACnCo90B,EAAYp55B,KAAKxnF,KAAKkyoC,EAAazlB,MAAMjp9B,UAAW0u+B,EAAaxlB,MAAMlp9B,WACzE,CAEA,OAAOo90B,CACT,EAEAwwJ,EAAUvzoC,UAAUs0oC,yBAA2B,WAI7C,IAHA,IAAIC,EAAoB,KACpBC,EAAoB,KAEftzoC,EAAI,EAAGA,EAAIZ,KAAKqpgC,MAAMhpgC,OAAQO,IAAK,CAC1C,IAAImzoC,EAAe/zoC,KAAKqpgC,MAAMzogC,GAE9B,KAAImzoC,EAAa1u+B,UAAY,GAA7B,CAIA4u+B,EAAkBhooC,IAAI8noC,EAAa1u+B,WAAW,GAK9C,IAJA,IAAI8u+B,EAAmB,CAACJ,EAAazlB,OACjC8lB,EAAmB,CAACL,EAAaxlB,OACjC8lB,EAAoB,EAEjBA,EAAoBF,EAAiB9zoC,QAAQ,CAClD,IAAIi0oC,EAAaH,EAAiBE,GAClCA,IACAH,EAAkBjooC,IAAIqooC,EAAWjv+B,WAAW,GAE5C,IAAK,IAAIjhK,EAAI,EAAGA,EAAIkwoC,EAAW1H,QAAQvsoC,OAAQ+D,IAC7C6voC,EAAkBhooC,IAAIqooC,EAAW1H,QAAQxooC,GAAGihK,WAAW,GACvD8u+B,EAAiBtyoC,KAAKyyoC,EAAW1H,QAAQxooC,GAAGkqnC,MAEhD,CAIA,IAFA+lB,EAAoB,EAEbA,EAAoBD,EAAiB/zoC,QAAQ,CAClD,IAAIg0nC,EAAa+f,EAAiBC,GAIlC,IAHAA,IACAH,EAAkBjooC,IAAIoonC,EAAWhv9B,WAAW,GAEnCjhK,EAAI,EAAGA,EAAIiwnC,EAAWif,SAASjzoC,OAAQ+D,IAC9C6voC,EAAkBhooC,IAAIoonC,EAAWif,SAASlvoC,GAAGihK,WAAW,GACxD+u+B,EAAiBvyoC,KAAKwynC,EAAWif,SAASlvoC,GAAGmqnC,MAEjD,CA7BA,CA8BF,CAEA,MAAO,CACL1mxB,KAAMosyB,EAAkB3goC,OACxB+1E,KAAM6qjC,EAAkB5goC,OAE5B,EAEO2/nC,CACT,CAhHA,GAkHII,GAEJ,WACE,SAASA,EAAUtp1B,EAAIC,EAAI3kJ,GACzBrlK,KAAKqlK,WAAa,EAClBrlK,KAAKsunC,MAAQvk0B,EACb/pT,KAAKuunC,MAAQvk0B,EACbhqT,KAAKqlK,UAAyB,MAAbA,GAAqB,EAAIA,CAC5C,CA0DA,OAvDAgu+B,EAAU3zoC,UAAUk4L,SAAW,SAAUvhK,GACvC,KAAIr2B,KAAKqlK,UAAY,GAMrB,OAFYrlK,KAAKkzoC,UACK9pI,SAASyH,aAAa7wgC,KAAKqlK,WAChCuyB,SAASvhK,EAC5B,EAEAg9mC,EAAU3zoC,UAAU8yoC,uBAAyB,WAC3C,MAAO,CACL3qyB,KAAM,CAAC7nW,KAAKqlK,WACZh8E,KAAM,CAACrpF,KAAKsunC,MAAMjp9B,UAAWrlK,KAAKuunC,MAAMlp9B,WAE5C,EAEAgu+B,EAAU3zoC,UAAUs0oC,yBAA2B,WAC7C,IAAIC,EAAoB,KACpBC,EAAoB,KACxBD,EAAkBhooC,IAAIjM,KAAKqlK,WAAW,GAKtC,IAJA,IAAIkv+B,EAAc,CAACv0oC,KAAKsunC,OACpBkmB,EAAc,CAACx0oC,KAAKuunC,OACpB8lB,EAAoB,EAEjBA,EAAoBE,EAAYl0oC,QAAQ,CAC7C,IAAIi0oC,EAAaC,EAAYF,GAC7BA,IACAH,EAAkBjooC,IAAIqooC,EAAWjv+B,WAAW,GAE5C,IAAK,IAAIjhK,EAAI,EAAGA,EAAIkwoC,EAAW1H,QAAQvsoC,OAAQ+D,IAC7C6voC,EAAkBhooC,IAAIqooC,EAAW1H,QAAQxooC,GAAGihK,WAAW,GACvDkv+B,EAAY1yoC,KAAKyyoC,EAAW1H,QAAQxooC,GAAGkqnC,MAE3C,CAIA,IAFA+lB,EAAoB,EAEbA,EAAoBG,EAAYn0oC,QAAQ,CAC7C,IAAIg0nC,EAAamgB,EAAYH,GAI7B,IAHAA,IACAH,EAAkBjooC,IAAIoonC,EAAWhv9B,WAAW,GAEnCjhK,EAAI,EAAGA,EAAIiwnC,EAAWif,SAASjzoC,OAAQ+D,IAC9C6voC,EAAkBhooC,IAAIoonC,EAAWif,SAASlvoC,GAAGihK,WAAW,GACxDmv+B,EAAY3yoC,KAAKwynC,EAAWif,SAASlvoC,GAAGmqnC,MAE5C,CAEA,MAAO,CACL1mxB,KAAMosyB,EAAkB3goC,OACxB+1E,KAAM6qjC,EAAkB5goC,OAE5B,EAEO+/nC,CACT,CAjEA,GAmEA,SAASoB,GAA0BC,EAAUC,GAC3C,MAAO,CAILz4gC,SAAU,SAAUo3C,GAClB,IAAI9jK,EAAOxP,KAAK00oC,GAAUC,GAC1B,OAAOnloC,EAAKsggC,WAAW3sgC,IAAIqM,EAAKuggC,kBAAkBz81B,GAAa,SAAUtzK,KAAKqlK,UAChF,EAEAg23B,UAAW,SAAUx2gC,EAAK1jB,GACxBnB,KAAKqlK,WAAa,GAAKrlK,KAAK00oC,GAAUC,GAAUh5G,cAAc37hC,KAAKqlK,UAAWxgJ,EAAK1jB,EACrF,EACA26hC,UAAW,SAAUj3gC,GACnB,OAAO7kB,KAAK00oC,GAAUC,GAAUpkI,cAAcvwgC,KAAKqlK,UAAWxgJ,EAChE,EACA6jiC,UAAW,SAAUxn7B,EAAQ4/H,GAC3B9gQ,KAAKqlK,WAAa,GAAKrlK,KAAK00oC,GAAUC,GAAU9rF,cAAc7ojC,KAAKqlK,UAAWnkC,EAAQ4/H,EACxF,EACA6nzB,UAAW,WACT,OAAO3ojC,KAAK00oC,GAAUC,GAAU/rF,cAAc5ojC,KAAKqlK,UACrD,EACAqm+B,aAAc,WACZ,OAAO1roC,KAAK00oC,GAAUC,GAAUjyJ,iBAAiB1i/B,KAAKqlK,UACxD,EACAin2B,YAAa,WACX,OAAOtsgC,KAAK00oC,GAAUC,GAAUroI,YAAYtsgC,KAAKqlK,UACnD,EAEJ,CAKA,EAAa4t+B,GAAWwB,GAA0B,YAAa,SAC/D,EAAapB,GAAWoB,GAA0B,YAAa,aAC/D,YC9fe,SAASG,GAAwBxk5B,EAAOi5wB,EAAOrmB,EAAa2vJ,EAAU7e,GAKnF,IAFA,IAAIrlI,EAAQ,IAAI,GAAMkkJ,GAEb/xoC,EAAI,EAAGA,EAAIwvP,EAAM/vP,OAAQO,IAChC6t/B,EAAM5luB,QAAQ,GACdz4B,EAAMxvP,GAAG2qB,GAAI6kO,EAAMxvP,GAAG8J,KAAM9J,GAAIA,GAGlC,IAAIi0oC,EAAe,GACfC,EAAa,GACbC,EAAY,EAEhB,IAASn0oC,EAAI,EAAGA,EAAIyogC,EAAMhpgC,OAAQO,IAAK,CACrC,IAAI++Y,EAAO0pnB,EAAMzogC,GACbiH,EAAS83Y,EAAK93Y,OACdiI,EAAS6vY,EAAK7vY,OAEd2++B,EAAM0kJ,QAAQtroC,EAAQiI,EAAQiloC,KAChCD,EAAWjzoC,KAAK89Y,GAChBk1vB,EAAahzoC,KAAK,GAAgB6g+B,GAAoB/ilB,EAAKp0X,GAAI,MAAO1jB,EAAS,MAAQiI,IACvFiloC,IAEJ,CAEA,IACIhs3B,EADAm6tB,EAAWF,EAAY7/+B,IAAI,oBAG/B,GAAiB,gBAAb+/+B,GAA2C,UAAbA,EAChCn6tB,EAAW,GAAiB34B,EAAO4yvB,OAC9B,CACL,IAAIgyJ,EAAe3iG,GAAiBlviC,IAAI+/+B,GACpC6W,EAAkBi7I,GAAeA,EAAat8+B,YAAmB,GAIjE,EAAeqh2B,EAAiB,SAAW,GAC7CA,EAAgB/3/B,OAAO,CAAC,UAG1B,IAAI02J,EAAa8w5B,GAAwBp5zB,EAAO,CAC9C2pwB,gBAAiBA,EACjBqwD,aAAcpnE,EAAY+lC,cACzBrw3B,YACHqwH,EAAW,IAAI,GAAWrwH,EAAYsq1B,IAC7B7pjB,SAAS/oM,EACpB,CAEA,IAAIg5wB,EAAW,IAAI,GAAW,CAAC,SAAUpmB,GAkBzC,OAjBAomB,EAASjwkB,SAAS27sB,EAAYD,GAC9B/gB,GAAcA,EAAW/q2B,EAAUqgvB,GACnC,GAAe,CACbyf,SAAU9/vB,EACV0p2B,OAAQhkI,EACRkkI,WAAY,QACZjK,MAAO,CACLr/hC,KAAM0/L,EACN8+E,KAAMuhqB,GAERwpH,UAAW,CACTvpiC,KAAM,OACNw+Q,KAAM,cAIV4mpB,EAAMlg7B,SACCkg7B,CACT,CChEA,IAAIwmJ,GAEJ,SAAUvsxB,GAGR,SAASusxB,IACP,IAAIvolC,EAAmB,OAAXg8T,GAAmBA,EAAOnoX,MAAMP,KAAMI,YAAcJ,KAIhE,OAFA0sD,EAAMngD,KAAO0ooC,EAAiB1ooC,KAC9BmgD,EAAM499B,iBAAkB,EACjB599B,CACT,CAiPA,OAzPAkgX,EAAUqouB,EAAkBvsxB,GAU5BusxB,EAAiBv1oC,UAAUgxD,KAAO,SAAUmN,GAC1C6qT,EAAOhpX,UAAUgxD,KAAKnwD,MAAMP,KAAMI,WAElC,IAAIgC,EAAOpC,KAEX,SAAS4noC,IACP,OAAOxloC,EAAK8yoC,eACd,CAGAl1oC,KAAK2hmC,qBAAuB,IAAI,GAAqBimC,EAAmBA,GACxE5noC,KAAKyohC,kBAAkB5q9B,EAAOwr8B,OAASxr8B,EAAO8rW,OAE9C3pa,KAAKm1oC,uBACP,EAEAF,EAAiBv1oC,UAAUus/B,YAAc,SAAUpu7B,GACjD6qT,EAAOhpX,UAAUus/B,YAAY1r/B,MAAMP,KAAMI,WAEzCJ,KAAKyohC,kBAAkB5q9B,EAAOwr8B,OAASxr8B,EAAO8rW,OAE9C3pa,KAAKm1oC,uBACP,EAEAF,EAAiBv1oC,UAAU21/B,qBAAuB,SAAUx37B,GAC1D6qT,EAAOhpX,UAAU21/B,qBAAqB90/B,MAAMP,KAAMI,WAElDsg+B,GAAgB7i6B,EAAQ,YAAa,CAAC,QACxC,EAEAo3kC,EAAiBv1oC,UAAUyohC,eAAiB,SAAUtq9B,EAAQyl6B,GAC5D,IhByD8B0f,EgBzD1BqmB,EAAQxr8B,EAAOwr8B,OAASxr8B,EAAO8rW,OAAS,GACxCv5K,EAAQvyL,EAAOruD,MAAQquD,EAAOuyL,OAAS,GACvChuP,EAAOpC,KAEX,GAAIowP,GAASi5wB,EAAO,ChBsDjBs/H,GAD2B3lJ,EgBnDVhj/B,QhBwDtBgj/B,EAAYgmJ,gBAAkB,GAC9BhmJ,EAAYomJ,UAAY,CAAC,EAEzBR,GAAgB5lJ,IgB1DZ,IAAIyL,EAAQmmJ,GAAwBxk5B,EAAOi5wB,EAAOrpgC,MAAM,GAO1D,SAAoB+oR,EAAUqgvB,GAE5BrgvB,EAASkiwB,WAAW,gBAAgB,SAAUl25B,GAC5C,IAEIqghC,EAFmBhzoC,EAAKizoC,kBACVtghC,EAAMwy2B,WAAW,aAQnC,OALI6tK,IACFA,EAAcv2mB,YAAc9pa,EAAM8pa,YAClC9pa,EAAM8pa,YAAcu2mB,GAGfrghC,CACT,IAEA,IAAIughC,EAAc,GAAM51oC,UAAUk4L,SAElC,SAAS298B,EAAYl/mC,EAAMwogB,GACzB,IAAI9pa,EAAQughC,EAAY11oC,KAAKI,KAAMq2B,EAAMwogB,GAEzC,OADA9pa,EAAMs33B,kBAAoBA,EACnBt33B,CACT,CAQA,SAASs33B,EAAkBE,GACzB,GAAIA,IAA2B,UAAfA,EAAQ,IAAiC,UAAfA,EAAQ,IAAiB,CACjE,IAAIipJ,EAAajpJ,EAAQxq/B,QAQzB,MANmB,UAAfwq/B,EAAQ,GACVipJ,EAAW,GAAK,YACQ,UAAfjpJ,EAAQ,KACjBipJ,EAAW,GAAK,aAGXA,CACT,CAEA,OAAOjpJ,CACT,CApBA6c,EAAS6hB,WAAW,gBAAgB,SAAUl25B,GAG5C,OAFAA,EAAMs33B,kBAAoBA,EAC1Bt33B,EAAM6iE,SAAW298B,EACVxghC,CACT,GAiBF,IA/CE,OAHA,EAAY053B,EAAM4a,OAAO,SAAUxhqB,IhBmElC,SAAmC99C,EAAIC,EAAIg5rB,EAAahm+B,GAC7D,GAAK2rnC,GAAuB3lJ,GAA5B,CAIA,IAAIn+9B,EAAMoknC,GAAcl/0B,EAAIC,EAAIg5rB,GAC5BumJ,EAAUvmJ,EAAYomJ,UACtBqM,EAAgBlM,EAAQL,GAAerknC,IAEvC0knC,EAAQ1knC,KAAS4wnC,EACnBlM,EAAQ1knC,GAAKolnC,WAAY,EAChBwL,GAAiBlM,EAAQ1knC,KAClC4wnC,EAAcxL,WAAY,EAC1BV,EAAQ1knC,GAAKolnC,WAAY,GAG3BV,EAAQ1knC,GAAO0knC,EAAQ1knC,IAAQ,GAC/B0knC,EAAQ1knC,GAAKhjB,KAAKmb,EAdlB,CAeF,CgBpFQ04nC,CAA0B7tyB,EAAKymxB,MAAOzmxB,EAAK0mxB,MAAOvunC,KAAM6nW,EAAKxiM,UAC/D,GAAGrlK,MACIyu/B,EAAMj/+B,IACf,CA+CF,EAEAyloC,EAAiBv1oC,UAAUmooC,SAAW,WACpC,OAAO7noC,KAAKwkI,UAAUiq3B,KACxB,EAEAwmJ,EAAiBv1oC,UAAU8ooC,YAAc,WACvC,OAAOxooC,KAAK6noC,WAAWz+H,QACzB,EAEA6rI,EAAiBv1oC,UAAUkooC,kBAAoB,WAC7C,OAAO5noC,KAAKk1oC,eACd,EAEAD,EAAiBv1oC,UAAUu3X,cAAgB,SAAU5xN,EAAW4r2B,EAAgBjiwB,GAC9E,GAAiB,SAAbA,EAAqB,CACvB,IAAI+Z,EAAW/oR,KAAKwkI,UAChBn8F,EAASroC,KAAKmwgC,cAAc9q2B,EAAW2pG,GACvC64F,EAAO9+E,EAAS0luB,MAAMg6I,eAAepj+B,GACrC8/J,EAAap8C,EAASi/D,QAAQ6f,EAAKymxB,MAAMjp9B,WACzC4htB,EAAal+lB,EAASi/D,QAAQ6f,EAAK0mxB,MAAMlp9B,WACzCql3B,EAAU,GAGd,OAFc,MAAdvltB,GAAsBultB,EAAQ7ohC,KAAKsjU,GACrB,MAAd8hjB,GAAsByjK,EAAQ7ohC,KAAKol3B,GAC5B87J,GAAoB,YAAa,CACtCr4gC,KAAMgghC,EAAQ79gC,KAAK,OACnB1L,MAAOknC,EAAOlnC,MACdyjhC,QAAyB,MAAhBv8+B,EAAOlnC,OAEpB,CAQA,OALiBulhC,GAA2B,CAC1C5pQ,OAAQ98wB,KACRqlK,UAAWA,EACX4r2B,eAAgBA,GAGpB,EAEAgkI,EAAiBv1oC,UAAUy1oC,sBAAwB,WACjD,IAAInsR,EAAa,EAAWhp3B,KAAK69D,OAAOmrzB,YAAc,IAAI,SAAU5mpB,GAElE,OAAyB,MAAlBA,EAASjhO,MAAgBihO,EAAW,EAAc,CACvDjhO,MAAO,GACNihO,EACL,IACIul6B,EAAiB,IAAI,GAAW,CAAC,SAAU3noC,MAC/C2noC,EAAexusB,SAAS6vb,GACxBhp3B,KAAKk1oC,gBAAkBvN,EACvB3noC,KAAKq1oC,kBAAoB1N,EAAex/E,UAAS,SAAUrtsB,GACzD,OAAO6sxB,EAAe92H,aAAa/1pB,EACrC,GACF,EAEAm6xB,EAAiBv1oC,UAAUyhC,QAAU,SAAUxB,GAC7C3/B,KAAK69D,OAAOl+B,KAAOA,CACrB,EAEAs1mC,EAAiBv1oC,UAAUshC,UAAY,SAAU/B,GAC/Cj/B,KAAK69D,OAAO5+B,OAASA,CACvB,EAEAg2mC,EAAiBv1oC,UAAUom/B,mBAAqB,WAC9C,OAAOp9nB,EAAOhpX,UAAUom/B,mBAAmBlm/B,KAAKI,SACpB,UAAvBA,KAAKmD,IAAI,WAAyBnD,KAAKmD,IAAI,CAAC,QAAS,oBAC5D,EAEA8xoC,EAAiB1ooC,KAAO,eACxB0ooC,EAAiBh5+B,aAAe,CAAC,OAAQ,QAAS,MAAO,aAAc,YACvEg5+B,EAAiBr0mB,cAAgB,CAE/Bj7hB,EAAG,EACHosH,iBAAkB,OAMlBuy9B,iBAAiB,EACjBpj9B,OAAQ,KAERy0gC,SAAU,CACRC,aAAa,GAGft1jC,MAAO,CACL2rjC,WAAY,KAEZG,UAAW,CAAC,EAAG,IACfS,QAAS,GAETK,SAAU,GAEVr38B,WAAY,GACZw88B,iBAAiB,GAEnBxzmC,KAAM,SACNC,IAAK,SAKLo7d,OAAQ,SACRq+f,WAAY,GACZs9I,WAAY,CAAC,OAAQ,QACrBC,eAAgB,GAChBC,UAAW,CACTp3mC,SAAU,SACVsqH,SAAU,GAEZs9P,WAAW,EACX48tB,MAAM,EAENlklC,OAAQ,KACRU,KAAM,EAENmwlC,eAAgB,GAUhBzunC,MAAO,CACL4hV,MAAM,EACNmiO,UAAW,OAEbm/b,UAAW,CAAC,EACZpyQ,UAAW,CACT5knB,MAAO,OACPxuF,MAAO,EACP6sG,QAAS,IAEXg11B,SAAU,CACR9+3B,OAAO,EACPzgG,MAAO,CACL4hV,MAAM,IAGVzsE,OAAQ,CACN+tuB,UAAW,CACTjsoB,YAAa,aAIZ28xB,CACT,CA3PA,CA2PEt3X,IAEF,YC/PA,IAAI06R,GAAa,CACf9riC,KAAM,YACNkyB,MAAO,YACP8vC,OAAQ,QCZNynkC,GAGF,WACEh2oC,KAAK2uO,MAAQ,EACb3uO,KAAK++B,MAAQ,GACb/+B,KAAKD,EAAI,GACTC,KAAKiE,EAAI,EACTjE,KAAKgD,EAAI,CACX,EAKEizoC,GAEJ,SAAUvtxB,GAGR,SAASutxB,EAAY55lC,GACnB,IAAIqQ,EAAQg8T,EAAO9oX,KAAKI,KAAMq8C,IAASr8C,KAGvC,OADA0sD,EAAMngD,KAAO,UACNmgD,CACT,CAsBA,OA7BAkgX,EAAUqpuB,EAAavtxB,GASvButxB,EAAYv2oC,UAAUk0+B,gBAAkB,WACtC,OAAO,IAAIoiK,EACb,EAEAC,EAAYv2oC,UAAUg0+B,UAAY,SAAUp8vB,EAAKhV,GAC/C,IAAIsrwB,EAAU/q+B,KAAKuxH,IACfu52B,EAAU9q+B,KAAK4wH,IACf1zH,EAAIuiO,EAAMviO,EACVg/B,EAAQujM,EAAMvjM,MACd4vM,EAAQrM,EAAMqM,MACd1qO,EAAIq+N,EAAMr+N,EAAI2p+B,EAAQj/vB,GAAS5vM,GAASA,GAASh/B,EAAI,EAAI,EAAI,GAC7DiD,EAAIs/N,EAAMt/N,EAAI2q+B,EAAQh/vB,GAAS5vM,GAASA,GAASh/B,EAAI,EAAI,EAAI,GACjE4uO,EAAQrM,EAAMqM,MAAQ9rO,KAAKsmC,GAAK,EAChCmuM,EAAIyvhB,OAAO9iwB,EAAGjB,GACds0O,EAAI0vhB,OAAO1kiB,EAAMr+N,EAAI2p+B,EAAQj/vB,GAAS5vM,EAAOujM,EAAMt/N,EAAI2q+B,EAAQh/vB,GAAS5vM,GACxEu4M,EAAI0vhB,OAAO1kiB,EAAMr+N,EAAI2p+B,EAAQtrwB,EAAMqM,OAAS5uO,EAAGuiO,EAAMt/N,EAAI2q+B,EAAQrrwB,EAAMqM,OAAS5uO,GAChFu3O,EAAI0vhB,OAAO1kiB,EAAMr+N,EAAI2p+B,EAAQj/vB,GAAS5vM,EAAOujM,EAAMt/N,EAAI2q+B,EAAQh/vB,GAAS5vM,GACxEu4M,EAAI0vhB,OAAO/iwB,EAAGjB,EAChB,EAEOizoC,CACT,CA/BA,CA+BE,IAEF,YCvBA,SAASC,GAAY/0oC,EAAO4qyB,GAC1B,IAAI1qyB,EAAiB,MAATF,EAAgB,GAAKA,EAAQ,GAUzC,OARI4qyB,IACE/wuB,GAAS+wuB,GACX1qyB,EAAQ0qyB,EAAet/xB,QAAQ,UAAWpL,GACjC2jQ,GAAW+miB,KACpB1qyB,EAAQ0qyB,EAAe5qyB,KAIpBE,CACT,CAEA,IAAI80oC,GAEJ,SAAUztxB,GAGR,SAASytxB,IACP,IAAIzplC,EAAmB,OAAXg8T,GAAmBA,EAAOnoX,MAAMP,KAAMI,YAAcJ,KAGhE,OADA0sD,EAAMngD,KAAO4poC,EAAU5poC,KAChBmgD,CACT,CAygBA,OAhhBAkgX,EAAUupuB,EAAWztxB,GASrBytxB,EAAUz2oC,UAAU4uH,OAAS,SAAU003B,EAAa1f,EAASr07B,GAC3DjvC,KAAKo7T,MAAMvtE,YACX,IAAIuo5B,EAAYpzJ,EAAY7/+B,IAAI,CAAC,WAAY,YAAa,UACtDkzoC,EA5CR,SAAuBrzJ,EAAa/z8B,GAClC,IAAIhQ,EAAS+j9B,EAAY7/+B,IAAI,UACzB47B,EAAQkQ,EAAIk8L,WACZnsM,EAASiQ,EAAI+rI,YACbp2J,EAAO/hB,KAAKgL,IAAIkxB,EAAOC,GAI3B,MAAO,CACL0hO,GAJO,GAAazhO,EAAO,GAAIgQ,EAAIk8L,YAKnC87H,GAJO,GAAahoU,EAAO,GAAIgQ,EAAI+rI,aAKnCj7K,EAJM,GAAaij/B,EAAY7/+B,IAAI,UAAWyhB,EAAO,GAMzD,CA+BkBwlJ,CAAc440B,EAAa/z8B,GAEzCjvC,KAAKs2oC,YAAYtzJ,EAAa1f,EAASr07B,EAAKmnmC,EAAWC,GAEvDr2oC,KAAKykJ,MAAQu+1B,EAAYx+2B,SAC3B,EAEA2xgC,EAAUz2oC,UAAU2l8B,QAAU,WAAa,EAE3C8wM,EAAUz2oC,UAAU42oC,YAAc,SAAUtzJ,EAAa1f,EAASr07B,EAAKmnmC,EAAWC,GAChF,IAAIj70B,EAAQp7T,KAAKo7T,MACbwpC,EAAYo+oB,EAAY7/+B,IAAI,aAC5B0lxB,GAAcm6N,EAAY7/+B,IAAI,cAAgB,IAAMN,KAAKsmC,GACzD2/uB,GAAYk6N,EAAY7/+B,IAAI,YAAc,IAAMN,KAAKsmC,GACrDotmC,EAAgBvzJ,EAAYprzB,SAAS,YAErC4+8B,EADWD,EAAcpzoC,IAAI,YACP,GAAU,GAChCszoC,EAAWF,EAAcpzoC,IAAI,QAC7BkqlC,EAAiBkpD,EAAc3+8B,SAAS,aACxC8+8B,EAAgBrpD,EAAelqlC,IAAI,SACnCkqX,EAAS,CAACw7Z,EAAYC,GAC1BumN,GAAmBhinB,GAASzoB,GAO5B,IAJA,IAAI+xyB,GADJ7tX,EAAWz7Z,EAAO,KADlBw7Z,EAAax7Z,EAAO,IAGhBupxB,EAAe/tX,EACf0sD,EAAU,GAEL300B,EAAI,EAAG61oC,GAAY71oC,EAAIw1oC,EAAU/1oC,OAAQO,IAAK,CAErD,IAEI6r0B,EAAS,IAAI+pU,EAAS,CACxBl06B,MAAO,CACLumjB,WAAY+tX,EACZ9tX,SAJJA,EAAWD,EAAa8tX,EADV9zoC,KAAKgL,IAAIhL,KAAK8K,IAAIyooC,EAAUx1oC,GAAG,GAAI,GAAI,GAMjD8/P,GAAI214B,EAAQ314B,GACZumG,GAAIovyB,EAAQpvyB,GACZrC,UAAWA,EACX0J,GAAI+nyB,EAAQt2oC,EAAI22oC,EAChB32oC,EAAGs2oC,EAAQt2oC,GAEbq0e,QAAQ,IAEVq4V,EAAOnoa,SAAS,CACdlnS,KAAMg5gC,EAAUx1oC,GAAG,KAErB6r0B,EAAOnoa,SAAS+orB,EAAezhG,aAE/B,CAAC,QAAS,WACVr2K,EAAQ1z0B,KAAK4q0B,GACbmqU,EAAe9tX,CACjB,CAEAysD,EAAQj7wB,UACR,EAAKi7wB,GAAS,SAAU9I,GACtB,OAAOrxgB,EAAMj2S,IAAIsnzB,EACnB,IAEA,IAAI5vmB,EAAW,SAAU4jvB,GAEvB,GAAIA,GAAW,EACb,OAAO21L,EAAU,GAAG,GAGtB,IAAIx1oC,EAEJ,IAAKA,EAAI,EAAGA,EAAIw1oC,EAAU/1oC,OAAQO,IAChC,GAAIw1oC,EAAUx1oC,GAAG,IAAM6/8B,IAAkB,IAAN7/8B,EAAU,EAAIw1oC,EAAUx1oC,EAAI,GAAG,IAAM6/8B,EACtE,OAAO21L,EAAUx1oC,GAAG,GAKxB,OAAOw1oC,EAAUx1oC,EAAI,GAAG,EAC1B,EAEAZ,KAAK62oC,aAAa7zJ,EAAa1f,EAASr07B,EAAK4tL,EAAUw56B,EAASxtX,EAAYC,EAAUlkb,EAAW8xyB,GAEjG12oC,KAAK82oC,sBAAsB9zJ,EAAa1f,EAASr07B,EAAK4tL,EAAUw56B,GAEhEr2oC,KAAK+2oC,cAAc/zJ,EAAaqzJ,GAEhCr2oC,KAAKg3oC,eAAeh0J,EAAa1f,EAASr07B,EAAK4tL,EAAUw56B,EAASxtX,EAAYC,EAAUlkb,EAAW8xyB,EACrG,EAEAP,EAAUz2oC,UAAUm3oC,aAAe,SAAU7zJ,EAAa1f,EAASr07B,EAAK4tL,EAAUw56B,EAASxtX,EAAYC,EAAUlkb,EAAW8xyB,GAuB1H,IAtBA,IAmBIvjH,EACAC,EApBAh4tB,EAAQp7T,KAAKo7T,MACb16D,EAAK214B,EAAQ314B,GACbumG,EAAKovyB,EAAQpvyB,GACblnW,EAAIs2oC,EAAQt2oC,EACZk3oC,GAAUj0J,EAAY7/+B,IAAI,OAC1B+zoC,GAAUl0J,EAAY7/+B,IAAI,OAC1BmvmC,EAAiBtvH,EAAYprzB,SAAS,aACtCkt4B,EAAY9hF,EAAYprzB,SAAS,YACjCor4B,EAAahgF,EAAYprzB,SAAS,aAClCq53B,EAAcjuE,EAAY7/+B,IAAI,eAC9Bg0oC,EAAiBryE,EAAU3hkC,IAAI,eAC/Bi0oC,EAAe,GAAa9kC,EAAenvmC,IAAI,UAAWpD,GAC1Ds3oC,EAAU,GAAavyE,EAAU3hkC,IAAI,UAAWpD,GAChD4uO,EAAQk6iB,EACRn6a,GAAQo6a,EAAWD,GAAcooS,EACjCqmF,EAAU5oyB,EAAOyoyB,EACjBI,EAAiBjlC,EAAe166B,SAAS,aAAag0zB,eACtD+jH,EAAgB7qC,EAAUlt4B,SAAS,aAAag0zB,eAChD4rJ,EAAoBllC,EAAenvmC,IAAI,YAIlCvC,EAAI,EAAGA,GAAKqwjC,EAAarwjC,IAAK,CAIrC,GAHAuyhC,EAAQtwhC,KAAKuxH,IAAIu6G,GACjBykzB,EAAQvwhC,KAAK4wH,IAAIk7G,GAEb2j4B,EAAenvmC,IAAI,QAAS,CAC9B,IACIg+hC,EAAY,IAAI,GAAa,CAC/B7+zB,MAAO,CACLslF,GAAIuruB,GAASpzhC,GAHbkpJ,EAAWuu/B,EAAoBA,EAAoBd,EAAgBA,IAGtCh24B,EAC7BhvE,GAAI0h2B,GAASrzhC,EAAIkpJ,GAAYg+M,EAC7BnqK,GAAIq21B,GAASpzhC,EAAIq3oC,EAAenu/B,GAAYy3G,EAC5CjpI,GAAI275B,GAASrzhC,EAAIq3oC,EAAenu/B,GAAYg+M,GAE9C5yV,MAAOkjoC,EACPnjqB,QAAQ,IAGoB,SAA1BmjqB,EAAen6X,QACjB+jR,EAAU78nB,SAAS,CACjB84W,OAAQvgjB,EAASj8N,EAAIqwjC,KAIzB71vB,EAAMj2S,IAAIg8gC,EACZ,CAGA,GAAI6hC,EAAW7/jC,IAAI,QAAS,CAC1B,IAAI8lJ,EAAW+56B,EAAW7/jC,IAAI,YAAcq0oC,EACxCn2oC,EAAQ60oC,GAAYjzlC,GAAMriD,EAAIqwjC,GAAeimF,EAASD,GAAUA,GAASj0E,EAAW7/jC,IAAI,cACxFs0oC,EAAY566B,EAASj8N,EAAIqwjC,GACzBymF,EAAavkH,GAASpzhC,EAAIq3oC,EAAenu/B,GAAYy3G,EACrDi34B,EAAavkH,GAASrzhC,EAAIq3oC,EAAenu/B,GAAYg+M,EACrDm1vB,EAAap5B,EAAW7/jC,IAAI,UAC5BsiH,EAAS,EAEM,WAAf22+B,GACF32+B,GAAUkpH,EAAQ,EAAI9rO,KAAKsmC,IAEdtmC,KAAKsmC,GAAK,IACrBs8E,GAAU5iH,KAAKsmC,IAEO,eAAfizjC,EACT32+B,GAAUkpH,EAAQ9rO,KAAKsmC,GAAK,EACnBma,GAAS84iC,KAClB32+B,EAAS22+B,EAAav5lC,KAAKsmC,GAAK,KAGnB,IAAXs8E,EACF21M,EAAMj2S,IAAI,IAAI,GAAa,CACzB9Q,MAAOg0+B,GAAgB26E,EAAY,CACjC5yiC,KAAM/uB,EACN4C,EAAGyzoC,EACH10oC,EAAG20oC,EACHxka,cAAeigT,GAAS,GAAM,MAAQA,EAAQ,GAAM,SAAW,SAC/D7uQ,MAAO4uQ,GAAS,GAAM,OAASA,EAAQ,GAAM,QAAU,UACtD,CACDppC,aAAc0tJ,IAEhBrjqB,QAAQ,KAGVh5K,EAAMj2S,IAAI,IAAI,GAAa,CACzB9Q,MAAOg0+B,GAAgB26E,EAAY,CACjC5yiC,KAAM/uB,EACN4C,EAAGyzoC,EACH10oC,EAAG20oC,EACHxka,cAAe,SACfoxC,MAAO,UACN,CACDwlO,aAAc0tJ,IAEhBrjqB,QAAQ,EACRznT,QAAS+q9B,EACT9q9B,QAAS+q9B,EACTpxhC,SAAUd,IAGhB,CAGA,GAAIq/8B,EAAU3hkC,IAAI,SAAWvC,IAAMqwjC,EAAa,CAE9Cho6B,GADIA,EAAW676B,EAAU3hkC,IAAI,aACP8lJ,EAAWyt/B,EAAgBA,EAEjD,IAAK,IAAItyoC,EAAI,EAAGA,GAAK+yoC,EAAgB/yoC,IAAK,CACxC+uhC,EAAQtwhC,KAAKuxH,IAAIu6G,GACjBykzB,EAAQvwhC,KAAK4wH,IAAIk7G,GACjB,IAAIip6B,EAAW,IAAI,GAAa,CAC9Bt16B,MAAO,CACLslF,GAAIuruB,GAASpzhC,EAAIkpJ,GAAYy3G,EAC7BhvE,GAAI0h2B,GAASrzhC,EAAIkpJ,GAAYg+M,EAC7BnqK,GAAIq21B,GAASpzhC,EAAIs3oC,EAAUpu/B,GAAYy3G,EACvCjpI,GAAI275B,GAASrzhC,EAAIs3oC,EAAUpu/B,GAAYg+M,GAEzCmtI,QAAQ,EACR//d,MAAOs7lC,IAGoB,SAAzBA,EAAcvyV,QAChBw6X,EAAStzuB,SAAS,CAChB84W,OAAQvgjB,GAAUj8N,EAAIwD,EAAI+yoC,GAAkBlmF,KAIhD71vB,EAAMj2S,IAAIyynC,GACVjp6B,GAAS2o6B,CACX,CAEA3o6B,GAAS2o6B,CACX,MACE3o6B,GAAS+/H,CAEb,CACF,EAEAynyB,EAAUz2oC,UAAUs3oC,eAAiB,SAAUh0J,EAAa1f,EAASr07B,EAAK4tL,EAAUw56B,EAASxtX,EAAYC,EAAUlkb,EAAW8xyB,GAC5H,IAAIt70B,EAAQp7T,KAAKo7T,MACbw3P,EAAU5yjB,KAAKykJ,MACfoz/B,EAAkB73oC,KAAK83oC,aACvBC,EAAe,GACfC,EAAch1J,EAAY7/+B,IAAI,CAAC,UAAW,SAC1C80oC,EAAgBj1J,EAAYprzB,SAAS,YACrCsg9B,EAAeD,EAAc90oC,IAAI,QACjCqM,EAAOwz+B,EAAYx+2B,UACnBgy7B,EAAWhnjC,EAAK42iC,aAAa,SAC7B6wF,GAAUj0J,EAAY7/+B,IAAI,OAC1B+zoC,GAAUl0J,EAAY7/+B,IAAI,OAC1Bg1oC,EAAc,CAAClB,EAAQC,GACvBkB,EAAc,CAACvvX,EAAYC,GAE/B,SAASuvX,EAAcv9xB,EAAKnsI,GAC1B,IASIusQ,EARAo9pB,EADY9ooC,EAAKqhgC,aAAa/1pB,GACLljL,SAAS,WAClC2g9B,EAAe,GAAaD,EAAan1oC,IAAI,SAAUkzoC,EAAQt2oC,GAC/Dy4oC,EAAgB,GAAaF,EAAan1oC,IAAI,UAAWkzoC,EAAQt2oC,GACjE04oC,EAAaz1J,EAAY7/+B,IAAI,CAAC,UAAW,SACzCu1oC,EAAgBJ,EAAan1oC,IAAI,gBACjCw1oC,EAAiB,GAAaD,EAAc,GAAIrC,EAAQt2oC,GACxD64oC,EAAiB,GAAaF,EAAc,GAAIrC,EAAQt2oC,GACxD84oC,EAAoBP,EAAan1oC,IAAI,cAoBzC,OAhBE+3e,EADEu9pB,EACQ,GAAaA,EAAYE,EAAiBJ,EAAe,EAAGK,EAAiBJ,EAAeD,EAAcC,EAAe,KAAMK,GAE/H,IAAI,GAAY,CACxBv26B,MAAO,CACLqM,OAAQ9rO,KAAKsmC,GAAK,EAClBpK,MAAOw5mC,EACPx4oC,EAAGy4oC,EACHv0oC,EAAG00oC,EACH31oC,EAAG41oC,MAKDryhC,WAAaooH,EAAQ9rO,KAAKsmC,GAAK,GACvC+xc,EAAQj3e,EAAIoyoC,EAAQ314B,GACpBw6O,EAAQl4e,EAAIqzoC,EAAQpvyB,GACbi0I,CACT,CAEA,SAAS49pB,EAAeh+xB,EAAKgua,GAC3B,IACIiwX,EADWd,EAAc90oC,IAAI,YACH,GAAU,GACpC61oC,EAAYf,EAAc90oC,IAAI,WAC9B81oC,EAAgBD,EAAYf,EAAc90oC,IAAI,SAAWuzoC,EAAgBlnoC,EAAK+5C,QAC9E+kT,EAAK0qyB,EAAY3C,EAAQt2oC,EAAIk5oC,EAAgB5C,EAAQt2oC,GAAK+6W,EAAM,GAAKm+xB,EACrEl5oC,EAAIi5oC,EAAY3C,EAAQt2oC,EAAIs2oC,EAAQt2oC,EAAI+6W,EAAMm+xB,EAC9ChmI,EAAW,IAAI8lI,EAAa,CAC9Bz26B,MAAO,CACLumjB,WAAYA,EACZC,SAAUA,EACVpohB,GAAI214B,EAAQ314B,GACZumG,GAAIovyB,EAAQpvyB,GACZrC,UAAWA,EACX0J,GAAIA,EACJvuW,EAAGA,KAIP,OADAi5oC,IAAc/lI,EAASl20B,GAAKm68B,EAAS1noC,EAAKrM,IAAIqzjC,EAAU17sB,GAAOo8xB,GACxDjkI,CACT,EAEIilI,GAAgBF,KAClBxooC,EAAK+4hB,KAAKqqB,GAASztiB,KAAI,SAAU21V,GAC/B,IAAIp9L,EAAMluK,EAAKrM,IAAIqzjC,EAAU17sB,GAE7B,GAAIk9xB,EAAa,CACf,IAAI98pB,EAAUm9pB,EAAcv9xB,EAAK+ta,GAEjC,GAAkB3tS,EAAS,CACzB30X,YAAaj6E,OAAOoxI,GAAO069B,EAAY,GAAK16K,GAAUhgzB,EAAKy69B,EAAaC,GAAa,IAASv1oC,KAAKsmC,GAAK,IACvG658B,GACH5nrB,EAAMj2S,IAAI+1d,GACV1re,EAAKu5iC,iBAAiBjusB,EAAKogI,EAC7B,CAEA,GAAIg9pB,EAAc,CAChB,IAAIjlI,EAAW6lI,EAAeh+xB,EAAK+ta,GAC/BqwX,EAASjB,EAAc90oC,IAAI,QAC/B,GAAkB8vgC,EAAU,CAC1B3wyB,MAAO,CACLwmjB,SAAU40M,GAAUhgzB,EAAKy69B,EAAaC,EAAac,KAEpDl2J,GACH5nrB,EAAMj2S,IAAI8t/B,GAGVh2B,GAAgB+F,EAAY9F,YAAa1t+B,EAAKw/P,SAAU8rG,EAAKm4pB,GAC7D8kI,EAAaj9xB,GAAOm4pB,CACtB,CACF,IAAG1k8B,QAAO,SAAU4x+B,EAAQ4nC,GAC1B,IAAIrq6B,EAAMluK,EAAKrM,IAAIqzjC,EAAUrW,GAE7B,GAAI63F,EAAa,CACf,IAAImB,EAAkBvmlB,EAAQ8vb,iBAAiBqlG,GAC3CqxD,EAAiBD,EAAkBA,EAAgB5yhC,SAAWsiqB,EAC9D3tS,EAAUm9pB,EAAcl4F,EAAQi5F,GACpCl+pB,EAAQ30X,SAAW6yhC,EACnB,GAAoBl+pB,EAAS,CAC3B30X,YAAaj6E,OAAOoxI,GAAO069B,EAAY,GAAK16K,GAAUhgzB,EAAKy69B,EAAaC,GAAa,IAASv1oC,KAAKsmC,GAAK,IACvG658B,GACH5nrB,EAAMj2S,IAAI+1d,GACV1re,EAAKu5iC,iBAAiB5I,EAAQjlkB,EAChC,CAEA,GAAIg9pB,EAAc,CAChB,IAAImB,EAAmBxB,EAAgB9vD,GAEnC90E,EAAW6lI,EAAe34F,EADPk5F,EAAmBA,EAAiB/26B,MAAMwmjB,SAAWD,GAExEqwX,EAASjB,EAAc90oC,IAAI,QAC/B,GAAoB8vgC,EAAU,CAC5B3wyB,MAAO,CACLwmjB,SAAU40M,GAAUhgzB,EAAKy69B,EAAaC,EAAac,KAEpDl2J,GACH5nrB,EAAMj2S,IAAI8t/B,GAGVh2B,GAAgB+F,EAAY9F,YAAa1t+B,EAAKw/P,SAAUmxyB,EAAQltC,GAChE8kI,EAAa53F,GAAUltC,CACzB,CACF,IAAGlxnB,UACHvyY,EAAKwywB,MAAK,SAAUlna,GAClB,IAAI4poB,EAAYl1+B,EAAKqhgC,aAAa/1pB,GAC9BwruB,EAAgB5hG,EAAU9szB,SAAS,YACnCk5K,EAAQw1uB,EAAcnjlC,IAAI,SAC1Bo/+B,EAAY+jG,EAAcnjlC,IAAI,aAC9BijlC,EAAmBE,EAAcnjlC,IAAI,YAEzC,GAAI60oC,EAAa,CACf,IAAI98pB,EAAU1re,EAAKkz+B,iBAAiB5noB,GAChCurrB,EAAc72hC,EAAK+ggC,cAAcz1pB,EAAK,SACtCyruB,EAAclgD,EAAYjp6B,KAE9B,GAAI89W,aAAmB,GAAS,CAC9B,IAAIsrmB,EAAYtrmB,EAAQ7me,MACxB6me,EAAQ9wF,SAASf,EAAO,CACtB9+P,MAAOi87B,EAAUj87B,MACjBtmJ,EAAGuilC,EAAUvilC,EACbjB,EAAGwjlC,EAAUxjlC,EACb+7B,MAAOynjC,EAAUznjC,MACjBC,OAAQwnjC,EAAUxnjC,QACjBqngC,GACL,MACEnrjB,EAAQ9wF,SAASi8oB,GACA,YAAjBnrjB,EAAQ3ue,MAAsB2ue,EAAQurjB,SAAS8/C,GAGjDrrmB,EAAQ52E,SAASoglB,EAAU9szB,SAAS,CAAC,UAAW,cAAcm0zB,gBAEnC,SAAvB7wgB,EAAQ7me,MAAM+oH,MAChB89W,EAAQ52E,SAAS,OAAQznM,EAAS6gwB,GAAUlu9B,EAAKrM,IAAIqzjC,EAAU17sB,GAAMq9xB,EAAa,CAAC,EAAG,IAAI,KAG5Fj9pB,EAAQilgB,eAAiB,EACzBsE,GAAyBvpgB,EAASwpgB,GAClCP,GAAoBjpgB,EAASpqI,EAAOyxoB,EAAW6jG,EACjD,CAEA,GAAI8xD,EAAc,CAChB,IAAIjlI,EAAW8kI,EAAaj9xB,GAC5Bm4pB,EAAS7onB,SAAS56Y,EAAK+ggC,cAAcz1pB,EAAK,UAC1Cm4pB,EAAS3umB,SAASoglB,EAAU9szB,SAAS,CAAC,WAAY,cAAcm0zB,gBAChEknB,EAAS9yB,eAAiB,EAC1BsE,GAAyBwuB,EAAUvuB,GACnCP,GAAoB8uB,EAAUniqB,EAAOyxoB,EAAW6jG,EAClD,CACF,IACApmlC,KAAK83oC,aAAeC,EAExB,EAEA5B,EAAUz2oC,UAAUq3oC,cAAgB,SAAU/zJ,EAAaqzJ,GACzD,IAAIiD,EAAct2J,EAAYprzB,SAAS,UAGvC,GAFiB0h9B,EAAYn2oC,IAAI,QAEjB,CACd,IAAIo2oC,EAAaD,EAAYn2oC,IAAI,QAC7Bq2oC,EAAaF,EAAYn2oC,IAAI,QAC7Bg/G,EAAem3hC,EAAYn2oC,IAAI,gBAC/Bs2oC,EAAmBH,EAAYn2oC,IAAI,cACnC8lZ,EAAS,GAAauwvB,EAAYnD,EAAQ314B,GAAK644B,EAAa,EAAI,GAAap3hC,EAAa,GAAIk0hC,EAAQt2oC,GAAIs2oC,EAAQpvyB,GAAKsyyB,EAAa,EAAI,GAAap3hC,EAAa,GAAIk0hC,EAAQt2oC,GAAIw5oC,EAAYA,EAAY,KAAME,GACpNxwvB,EAAOlsN,GAAKu88B,EAAYn2oC,IAAI,aAAe,EAAI,EAC/C8lZ,EAAOqb,SAASg1uB,EAAY1h9B,SAAS,aAAam0zB,gBAClD/r/B,KAAKo7T,MAAMj2S,IAAI8jY,EACjB,CACF,EAEAktvB,EAAUz2oC,UAAUo3oC,sBAAwB,SAAU9zJ,EAAa1f,EAASr07B,EAAK4tL,EAAUw56B,GACzF,IAAI3plC,EAAQ1sD,KAERwP,EAAOwz+B,EAAYx+2B,UACnBgy7B,EAAWhnjC,EAAK42iC,aAAa,SAC7B6wF,GAAUj0J,EAAY7/+B,IAAI,OAC1B+zoC,GAAUl0J,EAAY7/+B,IAAI,OAC1Bo7wB,EAAe,IAAI,GACnBm7X,EAAc,GACdC,EAAe,GACf9uD,EAAe7nG,EAAY8C,qBAC3B8zJ,EAAmB52J,EAAY7/+B,IAAI,CAAC,UAAW,cACnDqM,EAAK+4hB,KAAKvoiB,KAAKykJ,OAAOt/H,KAAI,SAAU21V,GAClC4+xB,EAAY5+xB,GAAO,IAAI,GAAa,CAClCs5H,QAAQ,IAEVulqB,EAAa7+xB,GAAO,IAAI,GAAa,CACnCs5H,QAAQ,GAEZ,IAAG7la,QAAO,SAAUusS,EAAKituB,GACvB2xD,EAAY5+xB,GAAOpuT,EAAMmtlC,UAAU9xD,GACnC4xD,EAAa7+xB,GAAOpuT,EAAMotlC,WAAW/xD,EACvC,IAAGhmsB,UACHvyY,EAAKwywB,MAAK,SAAUlna,GAClB,IAAI4poB,EAAYl1+B,EAAKqhgC,aAAa/1pB,GAC9B35W,EAAQqO,EAAKrM,IAAIqzjC,EAAU17sB,GAC3B84vB,EAAY,IAAI,GAChB6jC,EAAY566B,EAAS6gwB,GAAUv89B,EAAO,CAAC81oC,EAAQC,GAAS,CAAC,EAAG,IAAI,IAChE6C,EAAiBr1J,EAAU9szB,SAAS,SAExC,GAAImi9B,EAAe52oC,IAAI,QAAS,CAC9B,IAAI62oC,EAAoBD,EAAe52oC,IAAI,gBACvC82oC,EAAS5D,EAAQ314B,GAAK,GAAas54B,EAAkB,GAAI3D,EAAQt2oC,GACjEm6oC,EAAS7D,EAAQpvyB,GAAK,GAAa+yyB,EAAkB,GAAI3D,EAAQt2oC,IACjEo6oC,EAAUT,EAAY5+xB,IAClBmzK,KAAK,CACXlxV,GAAI688B,EAAmB,EAAI,EAC3BvloC,MAAOg0+B,GAAgB0xJ,EAAgB,CACrC91oC,EAAGg2oC,EACHj3oC,EAAGk3oC,EACH9pnC,KAAM5gB,EAAKw4U,QAAQ8yB,GACnBypa,MAAO,SACPpxC,cAAe,UACd,CACD42Q,aAAc0tJ,MAGlB7jC,EAAUzulC,IAAIg1nC,EAChB,CAEA,IAAIC,EAAkB11J,EAAU9szB,SAAS,UAEzC,GAAIwi9B,EAAgBj3oC,IAAI,QAAS,CAC/B,IAAIk3oC,EAAqBD,EAAgBj3oC,IAAI,gBACzCm3oC,EAAUjE,EAAQ314B,GAAK,GAAa254B,EAAmB,GAAIhE,EAAQt2oC,GACnEw6oC,EAAUlE,EAAQpvyB,GAAK,GAAaozyB,EAAmB,GAAIhE,EAAQt2oC,GACnEg/B,EAAQ,GAAaq7mC,EAAgBj3oC,IAAI,SAAUkzoC,EAAQt2oC,GAC3Di/B,EAAS,GAAao7mC,EAAgBj3oC,IAAI,UAAWkzoC,EAAQt2oC,GAC7Dy6oC,EAAcx3J,EAAY7/+B,IAAI,CAAC,WAAY,SAAWqM,EAAK+ggC,cAAcz1pB,EAAK,SAAS19O,KAAOq6gC,EAC9F0C,EAAUR,EAAa7+xB,GACvB2/xB,EAAcL,EAAgBj3oC,IAAI,aACtCg3oC,EAAQlsnB,KAAK,CACXlxV,GAAI688B,EAAmB,EAAI,EAC3BvloC,MAAOg0+B,GAAgB+xJ,EAAiB,CACtCn2oC,EAAGq2oC,EACHt3oC,EAAGu3oC,EACHnqnC,KAAM8lnC,GAAY/0oC,EAAOs5oC,GACzB17mC,MAAOuN,MAAMvN,GAAS,KAAOA,EAC7BC,OAAQsN,MAAMtN,GAAU,KAAOA,EAC/BulvB,MAAO,SACPpxC,cAAe,UACd,CACD42Q,aAAcywJ,MAGlB5vJ,GAAuBuvJ,EAAS,CAC9B92+B,OAAQ+2+B,GACPj5oC,GAAO,SAAUA,GAClB,OAAO+0oC,GAAY/0oC,EAAOs5oC,EAC5B,IACA5vD,GAAgB3/F,GAAkBivJ,EAASr/xB,EAAKtrW,EAAMwz+B,EAAa,CACjE0E,kBAAmB,SAAUH,EAAgB9h+B,EAAQupP,EAAUw4uB,EAAekzJ,EAAK9pI,GACjF,OAAOslI,GAAYtlI,EAAeA,EAAaxpB,kBAAoBjm/B,EAAOs5oC,EAC5E,IAEF7mC,EAAUzulC,IAAIg1nC,EAChB,CAEA57X,EAAap5vB,IAAIyulC,EACnB,IACA5zmC,KAAKo7T,MAAMj2S,IAAIo5vB,GACfv+wB,KAAK65oC,UAAYH,EACjB15oC,KAAK85oC,WAAaH,CACpB,EAEAxD,EAAU5poC,KAAO,QACV4poC,CACT,CAlhBA,CAkhBEnzV,IAEF,YC5aA,GA/IA,SAAUt6b,GAGR,SAASiyxB,IACP,IAAIjulC,EAAmB,OAAXg8T,GAAmBA,EAAOnoX,MAAMP,KAAMI,YAAcJ,KAIhE,OAFA0sD,EAAMngD,KAAOouoC,EAAiBpuoC,KAC9BmgD,EAAM899B,sBAAwB,YACvB999B,CACT,CAmIA,OA3IAkgX,EAAU+tuB,EAAkBjyxB,GAU5BiyxB,EAAiBj7oC,UAAUyohC,eAAiB,SAAUtq9B,EAAQyl6B,GAC5D,OAAO69H,GAAuBnhmC,KAAM,CAAC,SACvC,EAEA26oC,EAAiBpuoC,KAAO,eACxBouoC,EAAiB/5mB,cAAgB,CAE/Bj7hB,EAAG,EACHuy/B,QAAS,OAETj59B,OAAQ,CAAC,MAAO,OAChBqljC,iBAAiB,EACjBht8B,OAAQ,MACRuxoB,WAAY,IACZC,UAAW,GACXlkb,WAAW,EAEX/2V,IAAK,EAELF,IAAK,IAELsjjC,YAAa,GAEb7yJ,SAAU,CAERn7kB,MAAM,EACN4ywB,UAAU,EACV1jX,UAAW,CACT5knB,MAAO,CAAC,CAAC,EAAG,YACZxuF,MAAO,KAIXk0+B,SAAU,CAERhwrB,MAAM,EACNuwnB,SAAS,EACTz06B,MAAO,GACP82jC,UAAU,EACV1qsB,MAAM,GAGRg2oB,UAAW,CAETl+sB,MAAM,EAEN5iV,OAAQ,GACR4oJ,SAAU,GAEVkplB,UAAW,CACT5knB,MAAO,UACPxuF,MAAO,EACPxyB,KAAM,UAIVk4lC,SAAU,CAERxhxB,MAAM,EAENguuB,YAAa,EAEb5wjC,OAAQ,EACR4oJ,SAAU,GAEVkplB,UAAW,CACT5knB,MAAO,UACPxuF,MAAO,EACPxyB,KAAM,UAGVg21B,UAAW,CACTt/gB,MAAM,EACNh6L,SAAU,GAEV17B,MAAO,UACPk3H,SAAU,GACVh/H,OAAQ,GAEVy1X,QAAS,CACPzqQ,KAAM,KACNtuH,aAAc,CAAC,EAAG,GAClB8gO,MAAM,EACNmztB,WAAW,EACX/1iC,OAAQ,MACR0+B,MAAO,EACPwngC,YAAY,GAEdt9oB,OAAQ,CACNhmE,MAAM,EACNmztB,WAAW,EACXxxhC,KAAM,EACN6rN,KAAM,SACNtuH,aAAc,CAAC,EAAG,GAClBok7B,YAAY,EACZhiD,UAAW,CACTh33B,MAAO,OACPiq3B,YAAa,EACbl/nB,YAAa,YAGjBjpM,MAAO,CACL4zK,MAAM,EAEN9gO,aAAc,CAAC,EAAG,OAElBoL,MAAO,UACPk3H,SAAU,GACVumwB,gBAAgB,GAElBj/a,OAAQ,CACN9oP,MAAM,EACNvpM,gBAAiB,gBACjB891B,YAAa,EACbl/nB,YAAa,OACbv5U,MAAO,IACPC,OAAQ,KACRk5F,QAAS,CAAC,EAAG,IAEb/V,aAAc,CAAC,EAAG,OAGlBoL,MAAO,UACPk3H,SAAU,GACVG,WAAY,OACZoF,WAAY,GACZghwB,gBAAgB,IAGb2vJ,CACT,CA7IA,CA6IEh9X,IC5IF,IAAIi9X,GAAoB,CAAC,YAAa,WAKlCC,GAEJ,SAAUnyxB,GAGR,SAASmyxB,EAAYrroC,EAAMsrW,GACzB,IAAIpuT,EAAQg8T,EAAO9oX,KAAKI,OAASA,KAE7BilC,EAAUynB,EACVwp/B,EAAY,IAAI,GAChB9lhC,EAAO,IAAI,GAOf,OANA6U,EAAQ0v7B,eAAevk8B,GAEvBs8B,EAAM0r6B,iBAAiB89E,GAEvBxp/B,EAAMimgB,WAAWnjjB,EAAMsrW,GAAK,GAErBpuT,CACT,CAuGA,OAtHAkgX,EAAUiuuB,EAAanyxB,GAiBvBmyxB,EAAYn7oC,UAAUizjB,WAAa,SAAUnjjB,EAAMsrW,EAAK4kvB,GACtD,IAAIz6jC,EAAUjlC,KACVgj/B,EAAcxz+B,EAAKy0iC,UACnBv/D,EAAYl1+B,EAAKqhgC,aAAa/1pB,GAC9B55O,EAAS1xH,EAAKo5iC,cAAc9tsB,GAC5BwruB,EAAgB5hG,EAAU9szB,SAAS,YACnChsD,EAAU842B,EAAUvh/B,IAAIy3oC,IAC5BhvgC,EAAqB,MAAXA,EAAkB,EAAIA,EAE3B8z9B,GACH94G,GAAa3h9B,GAIfA,EAAQmlX,SAAS56Y,EAAK+ggC,cAAcz1pB,EAAK,UACzC71U,EAAQ5wB,MAAMqvwB,SAAW,QAErBg8U,GACFz6jC,EAAQ2hX,SAAS,CACft7W,OAAQ41F,EAAO51F,SAEjBrG,EAAQ5wB,MAAMu3H,QAAU,EACxB,GAAkB3mG,EAAS,CACzB5wB,MAAO,CACLu3H,QAASA,IAEVo32B,EAAalooB,IAEhB,GAAoB71U,EAAS,CAC3B5wB,MAAO,CACLu3H,QAASA,GAEX02F,MAAO,CACLh3L,OAAQ41F,EAAO51F,SAEhB038B,EAAalooB,GAGlB2poB,GAAyBx/8B,EAASy/8B,GAElC1k/B,KAAK2/lC,aAAanwlC,EAAMsrW,GAExBqpoB,GAAoBnk/B,KAAMsmlC,EAAcnjlC,IAAI,SAAUmjlC,EAAcnjlC,IAAI,aAAcmjlC,EAAcnjlC,IAAI,YAC1G,EAEA03oC,EAAYn7oC,UAAUigmC,aAAe,SAAUnwlC,EAAMsrW,GACnD,IAAI71U,EAAUjlC,KACVk2iC,EAAYl2iC,KAAKi78B,mBACjBn7I,EAAY76xB,EAAQ0nD,iBACpBq25B,EAAcxz+B,EAAKy0iC,UACnBv/D,EAAYl1+B,EAAKqhgC,aAAa/1pB,GAE9B0nvB,EADShzlC,EAAKo5iC,cAAc9tsB,GACPz5W,MACrBgT,EAAQ7E,EAAK+ggC,cAAcz1pB,EAAK,SAChCyruB,EAAclykC,EAAM+oH,KACxByq3B,GACA/nL,EAAW4oL,GAAqBhE,GAAY,CAC1C4C,aAAc93+B,EAAKy0iC,UACnB18D,eAAgBzsoB,EAChB0voB,eAAgBn2+B,EAAMu3H,QACtBm2tB,YAAavy1B,EAAKw4U,QAAQ8yB,IACzB,CACDz3M,OAAQ,CACNkhnB,MAAOi+U,EAAYx92B,UACnBmuf,cAAeqvX,EAAYrvX,iBAG/BlusB,EAAQyv7B,cAAc,CACpB5B,OAAO,EACPvw2B,SAAUig/B,EAAYjg/B,OACtBux2B,aAAcyyH,EAEdtyH,YAAasyH,IAEf,IAAIxd,EAAay5B,EAAYz5B,WAC7B7yB,EAAUtvpB,SAAS,CACjBt7W,OAAQy9hC,IAEV9jiC,EAAQkxgC,oBAAsB,CAC5BltpB,OAAQ8/qB,EAAa,IAAI,GAAcA,EAAW,GAAG,GAAIA,EAAW,GAAG,IAAM,MAI/E,GAAoBjpQ,EAAW,CAC7BzrzB,MAAO,CACLpQ,EAAGu+lC,EAAYv+lC,EACfjB,EAAGw/lC,EAAYx/lC,IAEhBgg/B,EAAalooB,GAChBgld,EAAU7xS,KAAK,CACb1na,SAAUi8+B,EAAYj8+B,SACtBomE,QAAS616B,EAAYv+lC,EACrB2oL,QAAS416B,EAAYx/lC,EACrB+5L,GAAI,KAENgt4B,GAAkB9kiC,EAASgliC,GAAyBvlF,GAAY,CAE9DtnO,OAAQmpU,GAEZ,EAEOs0D,CACT,CAxHA,CAwHE,IA8CF,SA1CA,SAAUnyxB,GAGR,SAASoyxB,IACP,IAAIpulC,EAAmB,OAAXg8T,GAAmBA,EAAOnoX,MAAMP,KAAMI,YAAcJ,KAIhE,OAFA0sD,EAAMngD,KAAOuuoC,EAAWvuoC,KACxBmgD,EAAMqihC,uBAAwB,EACvBrihC,CACT,CA8BA,OAtCAkgX,EAAUkuuB,EAAYpyxB,GAUtBoyxB,EAAWp7oC,UAAU4uH,OAAS,SAAU003B,EAAa1f,EAASr07B,GAC5D,IAAIz/B,EAAOwz+B,EAAYx+2B,UACnBoub,EAAU5yjB,KAAKykJ,MACf22K,EAAQp7T,KAAKo7T,MACjB5rT,EAAK+4hB,KAAKqqB,GAASztiB,KAAI,SAAU21V,GAC/B,IAAIigyB,EAAc,IAAIF,GAAYrroC,EAAMsrW,GACxCtrW,EAAKu5iC,iBAAiBjusB,EAAKigyB,GAC3B3/0B,EAAMj2S,IAAI41nC,EACZ,IAAGxskC,QAAO,SAAU4x+B,EAAQ4nC,GAC1B,IAAI04C,EAAQ7tkB,EAAQ8vb,iBAAiBqlG,GACrC04C,EAAM9tkB,WAAWnjjB,EAAM2wiC,GACvB/kvB,EAAMj2S,IAAIs7mC,GACVjxnC,EAAKu5iC,iBAAiB5I,EAAQsgF,EAChC,IAAG5tmC,QAAO,SAAUioV,GAElB,GADY83M,EAAQ8vb,iBAAiB5noB,GACGkooB,EAAalooB,EACvD,IAAGinC,UACH/hZ,KAAKykJ,MAAQj1I,CACf,EAEAsroC,EAAWp7oC,UAAUmzB,OAAS,WAC5B7yB,KAAKo7T,MAAMvtE,YACX7tP,KAAKykJ,MAAQ,IACf,EAEAq2/B,EAAWp7oC,UAAU2l8B,QAAU,WAAa,EAE5Cy1M,EAAWvuoC,KAAO,SACXuuoC,CACT,CAxCA,CAwCE93V,IC1KF,IAAIg4V,GAEJ,SAAUtyxB,GAGR,SAASsyxB,IACP,IAAItulC,EAAmB,OAAXg8T,GAAmBA,EAAOnoX,MAAMP,KAAMI,YAAcJ,KAGhE,OADA0sD,EAAMngD,KAAOyuoC,EAAkBzuoC,KACxBmgD,CACT,CA6FA,OApGAkgX,EAAUouuB,EAAmBtyxB,GAS7BsyxB,EAAkBt7oC,UAAUgxD,KAAO,SAAUmN,GAC3C6qT,EAAOhpX,UAAUgxD,KAAKnwD,MAAMP,KAAMI,WAIlCJ,KAAK2hmC,qBAAuB,IAAI,GAAqB,GAAY3hmC,KAAKwkI,QAASxkI,MAAO,GAAYA,KAAKi2gC,WAAYj2gC,OAEnHA,KAAK4hmC,kBAAkB/jiC,EACzB,EAEAm9kC,EAAkBt7oC,UAAUyohC,eAAiB,SAAUtq9B,EAAQyl6B,GAC7D,OAAO69H,GAAuBnhmC,KAAM,CAClC+5/B,gBAAiB,CAAC,SAClBswD,gBAAiB,GAAa9uD,GAA8Bv7/B,OAEhE,EAEAg7oC,EAAkBt7oC,UAAUkimC,kBAAoB,SAAU/jiC,GAExD6i6B,GAAgB7i6B,EAAQ,YAAa,CAAC,SACtC,IAAIkkiC,EAAqBlkiC,EAAOq4+B,UAC5B8rD,EAAuBnkiC,EAAO+i6B,SAASs1E,UAE3C6rD,EAAmB9+wB,KAAO8+wB,EAAmB9+wB,MAAQplR,EAAOx8D,MAAM4hV,KAClE++wB,EAAqB/+wB,KAAO++wB,EAAqB/+wB,MAAQplR,EAAO+i6B,SAASv/9B,MAAM4hV,IACjF,EAGA+3zB,EAAkBt7oC,UAAUywgC,cAAgB,SAAU9q2B,GACpD,IAAI71J,EAAOxP,KAAKwkI,UAEZn8F,EAASqgV,EAAOhpX,UAAUywgC,cAAcvwgC,KAAKI,KAAMqlK,GAEnDmx5B,EAAWhnjC,EAAK42iC,aAAa,SAC7Bt38B,EAAMt/F,EAAKgsgC,OAAOg7C,GAItB,OAFAnuhC,EAAOo46B,QAAW3x2B,IAAYt/F,EAAKrM,IAAIqzjC,EAAUnx5B,GAAav2D,EAAM,KAAK1rD,QAAQ,GAAzD,EACxB/a,EAAOsq9B,MAAM9w/B,KAAK,WACXwmC,CACT,EAEA2ymC,EAAkBzuoC,KAAO,gBACzByuoC,EAAkBp6mB,cAAgB,CAEhCj7hB,EAAG,EACH2+kC,iBAAiB,EACjBpsF,QAAS,OACTr59B,KAAM,GACNC,IAAK,GACL+gE,MAAO,GACPC,OAAQ,GAMRwpxB,QAAS,KACTjjtB,QAAS,OACT95H,KAAM,aACNin9B,OAAQ,WACRt2oB,IAAK,EACL+9xB,YAAa,SACb55oC,MAAO,CACL4hV,MAAM,EACNtkT,SAAU,SAGZu3gC,UAAW,CACTjztB,MAAM,EACN5iV,OAAQ,GACR8xuB,UAAW,CAETpzsB,MAAO,IAGXwl9B,UAAW,CAETjsoB,YAAa,OACbk/nB,YAAa,GAEf5W,SAAU,CACRv/9B,MAAO,CACL4hV,MAAM,IAGVzsE,OAAQ,CACN+tuB,UAAW,CACTjsoB,YAAa,aAIZ0iyB,CACT,CAtGA,CAsGEr9X,IAEF,YC8Fe,SAASu9X,GAAa53K,EAASr07B,GAC5Cq07B,EAAQq/B,iBAAiB,UAAU,SAAU3f,GAC3C,IAAIxz+B,EAAOwz+B,EAAYx+2B,UACnBgy7B,EAAWhnjC,EAAK42iC,aAAa,SAC7B75gC,EAAOy28B,EAAY7/+B,IAAI,QACvB8o+B,EAjNR,SAAqB+W,EAAa/z8B,GAChC,OAAO,GAAqB+z8B,EAAY8S,qBAAsB,CAC5D/29B,MAAOkQ,EAAIk8L,WACXnsM,OAAQiQ,EAAI+rI,aAEhB,CA4MmB,CAAYgo0B,EAAa/z8B,GACpCuk9B,EAASxQ,EAAY7/+B,IAAI,UACzByo+B,EAAYK,EAASlt8B,MACrB8s8B,EAAaI,EAASjt8B,OACtB2vJ,EA9MR,SAA0Bn/K,EAAM+8B,GAQ9B,IAPA,IAAIiqhC,EAAWhnjC,EAAK42iC,aAAa,SAC7Bs3D,EAAWlumC,EAAK24iC,SAASqO,GAAU,SAAU944B,GAC/C,OAAOA,CACT,IACIiR,EAAU,GACVu7X,EAAuB,cAAT39gB,EAET3rC,EAAI,EAAGi+H,EAAMrvH,EAAK+5C,QAAS3oD,EAAIi+H,EAAKj+H,IAC3C+tL,EAAQ/tL,GAAKA,EAYf,OARIokQ,GAAWz4N,GACboiJ,EAAQpiJ,KAAKA,GACK,SAATA,GACToiJ,EAAQpiJ,MAAK,SAAUvrC,EAAGsC,GACxB,OAAO4mjB,EAAcwzjB,EAAS18mC,GAAK08mC,EAASp6mC,GAAKo6mC,EAASp6mC,GAAKo6mC,EAAS18mC,EAC1E,IAGK2tL,CACT,CAwLkBws9B,CAAiB3roC,EAAM+8B,GACjCtoC,EAAIgo+B,EAASho+B,EACbjB,EAAIip+B,EAASjp+B,EACbo4oC,EAAwB,eAAX5nJ,EAA0B,CAAC,GAAaxQ,EAAY7/+B,IAAI,WAAY0o+B,GAAa,GAAamX,EAAY7/+B,IAAI,WAAY0o+B,IAAe,CAAC,GAAamX,EAAY7/+B,IAAI,WAAYyo+B,GAAY,GAAaoX,EAAY7/+B,IAAI,WAAYyo+B,IACrPxN,EAAa5u9B,EAAKivgC,cAAc+3C,GAChC3ojC,EAAMm1+B,EAAY7/+B,IAAI,OACtBwK,EAAMq1+B,EAAY7/+B,IAAI,OAEf,MAAP0K,IACFA,EAAMhL,KAAKgL,IAAIuw9B,EAAW,GAAI,IAGrB,MAAPzw9B,IACFA,EAAMyw9B,EAAW,IAGnB,IAAI68K,EAAcj4J,EAAY7/+B,IAAI,eAC9B+5W,EAAM8loB,EAAY7/+B,IAAI,OAEtBk4oC,IADsB,eAAX7nJ,EAA0B5nB,EAAYC,GAC1B3unB,GAAO1tW,EAAK+5C,QAAU,IAAM/5C,EAAK+5C,QAExD+xlC,EAAgB,SAAUxgyB,EAAK34T,GAEjC,GAAe,eAAXqx8B,EAAyB,CAC3B,IACIx9N,EAAa0nM,GADLlu9B,EAAKrM,IAAIqzjC,EAAU17sB,IAAQ,EACL,CAACjtW,EAAKF,GAAMytoC,GAAY,GACtD3p9B,OAAK,EAET,OAAQwp9B,GACN,IAAK,MACHxp9B,EAAKzuL,EACL,MAEF,IAAK,SACHyuL,EAAKzuL,GAAK6o+B,EAAa71M,GAAc,EACrC,MAEF,IAAK,SACHvkmB,EAAKzuL,GAAK6o+B,EAAa71M,GAI3B,MAAO,CAAC,CAAC7zuB,EAAQsvI,GAAK,CAACtvI,EAAQsvI,EAAKukmB,GACtC,CAEA,IAEI5viB,EADA891B,EAAYxmH,GADNlu9B,EAAKrM,IAAIqzjC,EAAU17sB,IAAQ,EACN,CAACjtW,EAAKF,GAAMytoC,GAAY,GAGvD,OAAQH,GACN,IAAK,OACH705B,EAAKniP,EACL,MAEF,IAAK,SACHmiP,EAAKniP,GAAK2n+B,EAAYs4G,GAAa,EACnC,MAEF,IAAK,QACH991B,EAAKniP,EAAI2n+B,EAAYs4G,EAIzB,MAAO,CAAC,CAAC991B,EAAIjkM,GAAS,CAACikM,EAAK891B,EAAW/hiC,GACzC,EAEa,cAAT5V,IAEF8umC,GAAYA,EACZn+xB,GAAOA,EAEQ,eAAXs2oB,EACFvv/B,GAAK2n+B,EAEL5o+B,GAAK6o+B,EAGPl9yB,EAAUA,EAAQr0H,WAGpB,IAAK,IAAI15D,EAAI,EAAGA,EAAI+tL,EAAQtuL,OAAQO,IAAK,CACvC,IAAIk6W,EAAMnsL,EAAQ/tL,GACdm5qB,EAAUprf,EAAQ/tL,EAAI,GACtB8j/B,EAAYl1+B,EAAKqhgC,aAAa/1pB,GAElC,GAAe,eAAX04oB,EAAyB,CAC3B,IAAIz09B,EAAQ2l9B,EAAUvh/B,IAAI,CAAC,YAAa,UAE3B,MAAT47B,EACFA,EAAQs8mC,GAERt8mC,EAAQ,GAAaA,EAAO6s8B,GAEf,cAATr/7B,IACFxN,GAASA,IAIb,IAAIyH,EAAQ80mC,EAAcxgyB,EAAK72W,GAC3BwiC,EAAM60mC,EAAcvhe,EAAS91qB,EAAI86B,GACrC96B,GAAK86B,EAAQm+U,EACb1tW,EAAKq5iC,cAAc/tsB,EAAK,CACtBxvU,OAAQ9E,EAAMxkC,OAAOykC,EAAI1kC,QAAQu4D,YAErC,KAAO,CACL,IAAIt7B,EAAS0l9B,EAAUvh/B,IAAI,CAAC,YAAa,WAE3B,MAAV67B,EACFA,EAASq8mC,GAETr8mC,EAAS,GAAaA,EAAQ6s8B,GAEjB,cAATt/7B,IACFvN,GAAUA,IAIVwH,EAAQ80mC,EAAcxgyB,EAAK93W,GAC3ByjC,EAAM60mC,EAAcvhe,EAAS/2qB,EAAIg8B,GACrCh8B,GAAKg8B,EAASk+U,EACd1tW,EAAKq5iC,cAAc/tsB,EAAK,CACtBxvU,OAAQ9E,EAAMxkC,OAAOykC,EAAI1kC,QAAQu4D,YAErC,CACF,EAlTJ,SAAqB9qD,GACnB,IACIgk/B,EADchk/B,EAAKy0iC,UACE9gjC,IAAI,UAC7BqM,EAAKwywB,MAAK,SAAUlna,GAClB,IAOI91H,EACAo0vB,EACAC,EACA0vF,EAVArkF,EAAYl1+B,EAAKqhgC,aAAa/1pB,GAE9B4uoB,EADahF,EAAU9szB,SAAS,SACLz0L,IAAI,YAC/BolkC,EAAiB7jF,EAAU9szB,SAAS,aACpC12D,EAAS1xH,EAAKo5iC,cAAc9tsB,GAC5BxvU,EAAS41F,EAAO51F,OAChBk1jC,EAAkC,UAAlB92G,GAA+C,WAAlBA,GAAgD,WAAlBA,GAAgD,eAAlBA,GAAoD,gBAAlBA,EAM/I,GAAI82G,EACoB,eAAlB92G,GACFtQ,GAAS9t8B,EAAO,GAAG,GAAKA,EAAO,GAAG,IAAM,EAAI,EAC5C+t8B,GAAS/t8B,EAAO,GAAG,GAAKA,EAAO,GAAG,IAAM,EACxC05M,EAAY,QACe,gBAAlB0kwB,GACTtQ,GAAS9t8B,EAAO,GAAG,GAAKA,EAAO,GAAG,IAAM,EAAI,EAC5C+t8B,GAAS/t8B,EAAO,GAAG,GAAKA,EAAO,GAAG,IAAM,EACxC05M,EAAY,UAEZo0vB,GAAS9t8B,EAAO,GAAG,GAAKA,EAAO,GAAG,GAAKA,EAAO,GAAG,GAAKA,EAAO,GAAG,IAAM,EACtE+t8B,GAAS/t8B,EAAO,GAAG,GAAKA,EAAO,GAAG,GAAKA,EAAO,GAAG,GAAKA,EAAO,GAAG,IAAM,EACtE05M,EAAY,UAGd+j1B,EAAa,CAAC,CAAC3vF,EAAOC,GAAQ,CAACD,EAAOC,QACjC,CACL,IAAIzxrB,OAAK,EACLl2H,OAAK,EACLoL,OAAK,EACLrlE,OAAK,EACL4o+B,EAAe93B,EAAeplkC,IAAI,UAchB,SAAlBum/B,GAEF9hsB,GAAMt8Q,EAAO,GAAG,GAAKA,EAAO,GAAG,IAAM,EACrComJ,GAAMpmJ,EAAO,GAAG,GAAKA,EAAO,GAAG,IAAM,EAErC8t8B,GADAt8yB,EAAK8qH,EAAKy4yB,GACG,EACbr72B,EAAY,SACe,UAAlB0kwB,GAET9hsB,GAAMt8Q,EAAO,GAAG,GAAKA,EAAO,GAAG,IAAM,EACrComJ,GAAMpmJ,EAAO,GAAG,GAAKA,EAAO,GAAG,IAAM,EAErC8t8B,GADAt8yB,EAAK8qH,EAAKy4yB,GACG,EACbr72B,EAAY,QACe,QAAlB0kwB,GAET9hsB,GAAMt8Q,EAAO,GAAG,GAAKA,EAAO,GAAG,IAAM,EAGrC+t8B,GADA5h3B,GADAi6D,GAAMpmJ,EAAO,GAAG,GAAKA,EAAO,GAAG,IAAM,GAC3B+0jC,GACG,EACbr72B,EAAY,UACe,WAAlB0kwB,GAET9hsB,GAAMt8Q,EAAO,GAAG,GAAKA,EAAO,GAAG,IAAM,EAGrC+t8B,GADA5h3B,GADAi6D,GAAMpmJ,EAAO,GAAG,GAAKA,EAAO,GAAG,IAAM,GAC3B+0jC,GACG,EACbr72B,EAAY,UACe,aAAlB0kwB,GAET9hsB,EAAgB,eAAX4rsB,EAA0Blo9B,EAAO,GAAG,GAAKA,EAAO,GAAG,GACxDomJ,EAAgB,eAAX8h0B,EAA0Blo9B,EAAO,GAAG,GAAKA,EAAO,GAAG,GAEzC,eAAXko9B,GAEFna,GADA5h3B,EAAKi6D,EAAK2u6B,GACG,EACbr72B,EAAY,WAGZo0vB,GADAt8yB,EAAK8qH,EAAKy4yB,GACG,EACbr72B,EAAY,QAEa,gBAAlB0kwB,GAET9hsB,EAAKt8Q,EAAO,GAAG,GACfomJ,EAAKpmJ,EAAO,GAAG,GAEA,eAAXko9B,GAEFna,GADA5h3B,EAAKi6D,EAAK2u6B,GACG,EACbr72B,EAAY,WAGZo0vB,GADAt8yB,EAAK8qH,EAAKy4yB,GACG,EACbr72B,EAAY,WAEa,YAAlB0kwB,GAET9hsB,EAAKt8Q,EAAO,GAAG,GACfomJ,EAAgB,eAAX8h0B,EAA0Blo9B,EAAO,GAAG,GAAKA,EAAO,GAAG,GAEzC,eAAXko9B,GAEFna,GADA5h3B,EAAKi6D,EAAK2u6B,GACG,EACbr72B,EAAY,WAGZo0vB,GADAt8yB,EAAK8qH,EAAKy4yB,GACG,EACbr72B,EAAY,UAEa,eAAlB0kwB,GAET9hsB,EAAgB,eAAX4rsB,EAA0Blo9B,EAAO,GAAG,GAAKA,EAAO,GAAG,GACxDomJ,EAAgB,eAAX8h0B,EAA0Blo9B,EAAO,GAAG,GAAKA,EAAO,GAAG,GAEzC,eAAXko9B,GAEFna,GADA5h3B,EAAKi6D,EAAK2u6B,GACG,EACbr72B,EAAY,WAGZo0vB,GADAt8yB,EAAK8qH,EAAKy4yB,GACG,EACbr72B,EAAY,WAId4iE,GAAMt8Q,EAAO,GAAG,GAAKA,EAAO,GAAG,IAAM,EACrComJ,GAAMpmJ,EAAO,GAAG,GAAKA,EAAO,GAAG,IAAM,EAEtB,eAAXko9B,GAEFna,GADA5h3B,EAAKi6D,EAAK2u6B,GACG,EACbr72B,EAAY,WAGZo0vB,GADAt8yB,EAAK8qH,EAAKy4yB,GACG,EACbr72B,EAAY,SAID,eAAXwuwB,EAEFpa,EADAt8yB,EAAK8qH,EAILyxrB,EADA5h3B,EAAKi6D,EAIPq34B,EAAa,CAAC,CAACnhxB,EAAIl2H,GAAK,CAACoL,EAAIrlE,GAC/B,CAEAyJ,EAAO7/H,MAAQ,CACb0nkC,WAAYA,EACZ9kkC,EAAGm1+B,EACHp2+B,EAAGq2+B,EACHlmQ,cAAe,SACfnuf,UAAWA,EACXziI,OAAQi++B,EAEZ,GACF,CAyIIgC,CAAYhzlC,EACd,GACF,CClVA,IAEI+roC,GAEJ,SAAU7yxB,GAGR,SAAS6yxB,IACP,IAAI7ulC,EAAmB,OAAXg8T,GAAmBA,EAAOnoX,MAAMP,KAAMI,YAAcJ,KAKhE,OAHA0sD,EAAMngD,KAAOgvoC,EAAahvoC,KAC1BmgD,EAAM8ulC,WAAa,IAAI,GACvB9ulC,EAAMoiQ,cAAe,EACdpiQ,CACT,CAuFA,OAhGAkgX,EAAU2uuB,EAAc7yxB,GAWxB6yxB,EAAa77oC,UAAUgxD,KAAO,WAC5B1wD,KAAKo7T,MAAMj2S,IAAInlB,KAAKw7oC,WACtB,EAMAD,EAAa77oC,UAAU4uH,OAAS,SAAU003B,EAAa1f,EAASr07B,EAAKna,GAEnE90B,KAAK2nlC,gBAAkB,KACvB,IAAI8zD,EAAYz7oC,KAAKw7oC,WACjBhsoC,EAAOwz+B,EAAYx+2B,UACnBoub,EAAU5yjB,KAAKykJ,MACfy+1B,EAAWF,EAAYjx3B,iBACvB2mC,EAAawq1B,EAASxq1B,WACtBws7B,EAAc,GAAgBliG,GA2BlC,GA1BAxz+B,EAAK+4hB,KAAKqqB,GAASztiB,KAEnB,SAAau2nC,GAEXC,GADWC,GAAMpsoC,EAAMisoC,EAAWC,EAAchj/B,EAAYwq1B,GACvC1z+B,EAAMksoC,EAAcx2D,EAC3C,IAL4B32gC,QAO5B,SAAgBmtkC,EAAcG,GAC5B,IAAIv8lC,EAAOszgB,EAAQ8vb,iBAAiBm5J,GAChCvwmC,EAASwwmC,GAAiBtsoC,EAAMksoC,EAAchj/B,EAAYwq1B,GAC9D1z+B,EAAKu5iC,iBAAiB2yF,EAAcp8lC,GACpC,GAAoBA,EAAM,CACxBgjL,MAAO,CACLh3L,OAAQA,IAET038B,EAAa04J,GAChB90J,GAAatn8B,GACbq8lC,GAAer8lC,EAAM9vC,EAAMksoC,EAAcx2D,EAC3C,IAlB2CryjC,QAoB3C,SAAgBgpnC,GACd,IAAIv8lC,EAAOszgB,EAAQ8vb,iBAAiBm5J,GACpCJ,EAAU5onC,OAAOysB,EACnB,IAvB0DyiW,WA0BrD/hZ,KAAK8uT,aAAc,CACtB9uT,KAAK8uT,cAAe,EACpB,IAAI28d,EA2CV,SAA6By3N,EAAUF,EAAath7B,GAClD,IAAImr/B,EAAgB3pE,EAASnu3B,MACzBrhC,EAAOwv5B,EAASo0E,UAChB17E,EAAS,IAAI,GAAa,CAC5Bt5wB,MAAO,CACLr+N,EAAGyvF,EAAKzvF,EACRjB,EAAG0wF,EAAK1wF,EACR+7B,MAAO20D,EAAK30D,MACZC,OAAQ00D,EAAK10D,UAGb24T,EAAsC,eAAhCk1tB,EAAc1pjC,IAAI,UAA6B,QAAU,SAQnE,OAPAy4+B,EAAOh1lB,SAASjvD,EAAK,GACrB,GAAkBikpB,EAAQ,CACxBt5wB,MAAO,CACLvjM,MAAO20D,EAAK30D,MACZC,OAAQ00D,EAAK10D,SAEdgk9B,GA7D2D,WAExDn99B,YAAW,WACT41nC,EAAU1jL,gBACZ,GACF,IAyDG6jB,CACT,CA/DqBmgK,CAAoB74J,EAAUF,GAM7Cy4J,EAAU7mL,YAAYnpM,EACxB,CAEAzrxB,KAAKykJ,MAAQj1I,CACf,EAEA+roC,EAAa77oC,UAAU85hC,yBAA2B,SAAUx2C,EAAa1f,EAASr07B,GAChFjvC,KAAK8uT,cAAe,EACpB9uT,KAAKykJ,MAAQ,KAEbzkJ,KAAKw7oC,WAAW3t5B,WAClB,EAEA0t5B,EAAa77oC,UAAU+5hC,kBAAoB,SAAU6uD,EAAYtlG,EAAa1f,GAO5E,IANA,IAAI9z9B,EAAOwz+B,EAAYx+2B,UACnB0+2B,EAAWF,EAAYjx3B,iBACvB2mC,EAAawq1B,EAASxq1B,WACtBws7B,EAAc,GAAgBliG,GAC9B25G,EAAiB38lC,KAAK2nlC,gBAAkB,GAEnCti7B,EAAYij7B,EAAW9hjC,MAAO6+H,EAAYij7B,EAAW7hjC,IAAK4+H,IAAa,CAC9E,IAAI/lH,EAAOs8lC,GAAMpsoC,EAAMxP,KAAKw7oC,WAAYn2+B,EAAW3M,EAAYwq1B,GAC/D5j8B,EAAKou7B,aAAc,EACnBiuK,GAAer8lC,EAAM9vC,EAAM61J,EAAW6/6B,GACtCyX,EAAe96lC,KAAKy9C,EACtB,CACF,EAEAi8lC,EAAa77oC,UAAUmzB,OAAS,WAC9B7yB,KAAKw7oC,YAAcx7oC,KAAKw7oC,WAAW3t5B,YACnC7tP,KAAKykJ,MAAQ,IACf,EAEA82/B,EAAahvoC,KAAO,WACbgvoC,CACT,CAlGA,CAkGEv4V,IAwBF,SAAS84V,GAAiBtsoC,EAAM61J,EAAW3M,EAAYwq1B,GAGrD,IAFA,IAAI538B,EAAS,GAEJ1qC,EAAI,EAAGA,EAAI83J,EAAWr4J,OAAQO,IAAK,CAC1C,IAAIy7/B,EAAU3j2B,EAAW93J,GACrBO,EAAQqO,EAAKrM,IAAIqM,EAAK42iC,aAAa/pD,GAAUh31B,GAE5C22+B,GAAa76oC,EAAO+h/B,EAASliI,QAAQq7I,GAAS9v/B,OACjD++B,EAAOzpC,KAAKqh/B,EAASy0E,YAAYx2jC,EAAOk7/B,GAE5C,CAEA,OAAO/w9B,CACT,CAEA,SAASswmC,GAAMpsoC,EAAMisoC,EAAWp2+B,EAAW3M,EAAYwq1B,GACrD,IAAI538B,EAASwwmC,GAAiBtsoC,EAAM61J,EAAW3M,EAAYwq1B,GACvD5j8B,EAAO,IAAI,GAAiB,CAC9BgjL,MAAO,CACLh3L,OAAQA,GAGVyxJ,GAAI,KAIN,OAFA0+8B,EAAUt2nC,IAAIm6B,GACd9vC,EAAKu5iC,iBAAiB1j5B,EAAW/lH,GAC1BA,CACT,CAEA,SAAS,GAAgB0j8B,GACvB,IAAIl93B,EAASk93B,EAAY7/+B,IAAI,UAAU,GAIvC,OAHW,IAAX2iH,IAAoBA,EA7JD,IA+JnBuk1B,GADAvk1B,EAASo62B,GAAgBp62B,MACPA,EAAS,GACpB,CACLA,OAAQA,EAEZ,CAEA,SAAS61hC,GAAe9hgC,EAAIrqI,EAAM61J,EAAW6/6B,GAC3Crr8B,EAAGuwQ,SAAS56Y,EAAK+ggC,cAAclr2B,EAAW,UAC1CxrB,EAAGxlI,MAAM+oH,KAAO,KAChByc,EAAG+sQ,SAAS,SAAUs+rB,EAAYp/9B,QAClC,IAAI4+3B,EAAYl1+B,EAAKqhgC,aAAaxr2B,GAC9Bih7B,EAAgB5hG,EAAU9szB,SAAS,YACvC6szB,GAAyB5q2B,EAAI6q2B,EAAW,aACxCP,GAAoBtq2B,EAAIys8B,EAAcnjlC,IAAI,SAAUmjlC,EAAcnjlC,IAAI,aAAcmjlC,EAAcnjlC,IAAI,YACxG,CAqBA,SAAS64oC,GAAat+9B,EAAK6pqB,GACzB,MAAoB,aAAbA,EAAiC,MAAP7pqB,EAAqB,MAAPA,GAAepxI,MAAMoxI,EACtE,CAEA,YCrIA,SAASu+9B,GAAkBj5J,GAOzB,IAAI6pE,EAAgB7pE,EAAY1f,QAAQnpoB,aAAa,WAAY6opB,EAAY7/+B,IAAI,kBAEjF,GAAK0pjC,EAAL,CAIA,IAAIzC,EAAe,CAAC,EAKpB,OAJA,EAAKyC,EAAcn05B,YAAY,SAAUu05B,GACvC,IAAIivF,GAAsCjvF,EAO5BxgjC,QAAQ,MAAO,IAN7B29iC,EAAa6C,GAAWivF,CAC1B,IACO9xF,CAPP,CAQF,CAMA,SA1FA,SAAU1hsB,GAGR,SAASyzxB,IACP,IAAIzvlC,EAAmB,OAAXg8T,GAAmBA,EAAOnoX,MAAMP,KAAMI,YAAcJ,KAKhE,OAHA0sD,EAAMngD,KAAO4voC,EAAoB5voC,KACjCmgD,EAAM899B,sBAAwB,YAC9B999B,EAAMw59B,eAAiB,SAChBx59B,CACT,CAoDA,OA7DAkgX,EAAUuvuB,EAAqBzzxB,GAW/ByzxB,EAAoBz8oC,UAAUyohC,eAAiB,SAAUtq9B,EAAQyl6B,GAC/D,OAAO,GAAiB,KAAMtj+B,KAAM,CAClC0ujC,mBAAoBrrjC,GAAK44oC,GAAmB,KAAMj8oC,OAEtD,EAQAm8oC,EAAoBz8oC,UAAU08oC,2BAA6B,SAAUC,GACnE,IAAIn5J,EAAWlj/B,KAAK+xH,iBAChBviH,EAAOxP,KAAKwkI,UACZmqD,EAAU,GAMd,OALAu0zB,EAASo5J,gBAAgB9soC,GAAM,SAAU+soC,EAAgBl3+B,GACnDg3+B,IAAgBE,GAClB5t9B,EAAQ9sL,KAAK2N,EAAK88/B,YAAYjn2B,GAElC,IACOspB,CACT,EAEAwt9B,EAAoB5voC,KAAO,kBAC3B4voC,EAAoBlg/B,aAAe,CAAC,YACpCkg/B,EAAoBv7mB,cAAgB,CAElCj7hB,EAAG,EACHosH,iBAAkB,WAClByqhC,cAAe,EACfn7oC,MAAO,CACL4hV,MAAM,GAERw5zB,gBAAiB,IACjBC,cAAe,EACfvqa,UAAW,CACTpzsB,MAAO,EACP6sG,QAAS,IACTr/H,KAAM,SAERq09B,SAAU,CACRv/9B,MAAO,CACL4hV,MAAM,IAGV+1qB,YAAa,IACblz4B,QAAQ,EACR8y4B,gBAAiB,UAEZujJ,CACT,CA/DA,CA+DEx+X,ICtEF,IAAI,GAAoB,CAAC,YAAa,WA2BtC,SA1BqB,CACnB8+D,WAAY,WACZx7wB,MAAO,SAAU+h7B,EAAa1f,GAC5B,IAAI4f,EAAWF,EAAYjx3B,iBACvB4qhC,EAAa,CACft5+B,OAAQ2/0B,EAAY7/+B,IAAI,CAAC,YAAa,YACtCsmJ,OAAQu51B,EAAY7/+B,IAAI,iBACxBy5oC,SAAU55J,EAAY7/+B,IAAI,oBAE5B,MAAO,CACL8vgC,SAAU,SAAU5q+B,EAAQ74B,GAC1B0z+B,EAASo5J,gBAAgB9soC,GAAM,SAAU6soC,EAAah3+B,GACpD,IAAIz5B,EAAU+wgC,EAAWN,GAEzB,GAAoB,WAAhBA,GAA4B7soC,EAAK46gC,cAAe,CAClD,IAAIyyH,EAAcrtoC,EAAKqhgC,aAAaxr2B,GAAWliK,IAAI,IAAmB,GACvD,MAAf05oC,IAAwBjxgC,EAAUixgC,EACpC,CAEkBrtoC,EAAKushC,uBAAuB123B,EAAW,SAC7Cz5B,QAAUA,CACxB,GAAGvjG,EAAO7B,MAAO6B,EAAO5B,IAC1B,EAEJ,GCvBa,SAASq2mC,GAAqBj/kC,IAS7C,SAAgCA,GAC9B,IAAIA,EAAOqquB,SAAX,CAIA,IAAI60W,GAAoB,EACxB,EAAYl/kC,EAAOi/sB,QAAQ,SAAUksP,GAC/BA,GAAgC,aAAnBA,EAAUz8/B,OACzBwwoC,GAAoB,EAExB,IAEIA,IACFl/kC,EAAOqquB,SAAW,CAAC,CAAC,GAVtB,CAYF,CAvBE80W,CAAuBn/kC,GA8BzB,SAAqCA,GAEnC,EADW,GAA2BA,EAAOo/kC,eAC3B,SAAUC,GAC1B,GAAK,GAAgBA,GAArB,CAIA,IAAIV,EAAgBU,EAAWV,eAAiB,EAC5CW,EAAiB,GAA2Bt/kC,EAAOqquB,UAAUs0W,GAE7DW,GAAkBA,EAAerzI,qBACnC,EAAaozI,EAAYC,EAAerzI,qBAAqB,EAN/D,CAQF,GACF,CA3CEszI,CAA4Bv/kC,EAC9B,CCDA,IAEI,GAEJ,SAAU6qT,GAGR,SAAS6yxB,IACP,IAAI7ulC,EAAmB,OAAXg8T,GAAmBA,EAAOnoX,MAAMP,KAAMI,YAAcJ,KAGhE,OADA0sD,EAAMngD,KAAOgvoC,EAAahvoC,KACnBmgD,CACT,CA4CA,OAnDAkgX,EAAU2uuB,EAAc7yxB,GASxB6yxB,EAAa77oC,UAAU4uH,OAAS,SAAUu+7B,EAAevpF,EAASr07B,GAChEjvC,KAAKimuB,OAAS4mV,EACd7sjC,KAAK8kgC,KAAO719B,EAEPjvC,KAAKq9oC,YACRr9oC,KAAKq9oC,UAAY,CAAC,EAClB,EAAKtwhC,IAAU,SAAU/8D,EAAS3gB,GAChCJ,EAAIk9/B,QAAQv7hC,GAAGy+B,EAAWrvC,KAAKq9oC,UAAUhumC,GAAahsC,GAAK2sD,EAAShwD,MACtE,GAAGA,OAGL6u1B,GAAe7u1B,KAAM,2BAA4B6sjC,EAAc1pjC,IAAI,kBAAmB,UACxF,EAEAo4oC,EAAa77oC,UAAU2l8B,QAAU,SAAUi+B,EAASr07B,GAClDjqB,GAAMhlB,KAAM,4BACZ,EAAKA,KAAKq9oC,WAAW,SAAUrtlC,EAAS3gB,GACtCJ,EAAIk9/B,QAAQn+/B,IAAIqB,EAAW2gB,EAC7B,IACAhwD,KAAKq9oC,UAAY,IACnB,EAOA9B,EAAa77oC,UAAU49oC,yBAA2B,SAAUl9mB,GAC1DpgiB,KAAKu9oC,gBAAgBn9mB,EACvB,EAMAm7mB,EAAa77oC,UAAU69oC,gBAAkB,SAAUn9mB,GACjDA,GAAOpgiB,KAAK8kgC,KAAK0/B,eAAen7oB,EAAO,CACrC98Y,KAAM,sBACL6zhB,GACL,EAEAm7mB,EAAahvoC,KAAO,WACbgvoC,CACT,CArDA,CAqDE,IAEExuhC,GAAW,CACbyg2B,UAAW,SAAUru9B,GACfq+oC,GAAax9oC,KAAM,WACrBA,KAAKy9oC,gBAAkB,CAACt+oC,EAAEg5H,QAASh5H,EAAEi5H,SAEzC,EACAw11B,QAAS,SAAUzu9B,GACjB,IAAIu+oC,EAAiB19oC,KAAKy9oC,gBAE1B,GAAID,GAAax9oC,KAAM,UAAY09oC,EAAgB,CACjD,IAAIvogC,EAAQ,CAACh2I,EAAEg5H,QAASh5H,EAAEi5H,SAG1B,GAFWv1H,KAAK6yF,IAAIgojC,EAAe,GAAKvogC,EAAM,GAAI,GAAKtyI,KAAK6yF,IAAIgojC,EAAe,GAAKvogC,EAAM,GAAI,GAtE9E,EAyEd,OAGF,IAAI3xH,EAASxjB,KAAKimuB,OAAOl0mB,iBAAiB4rhC,0BAA0B,CAACx+oC,EAAEg5H,QAASh5H,EAAEi5H,UAE9D,SAApB50G,EAAOk6S,UAAuB19T,KAAKu9oC,gBAAgB,CACjDK,iBAAkBp6nC,EAAOo6nC,kBAE7B,CAEA59oC,KAAKy9oC,gBAAkB,IACzB,EACAp36B,UAAW,SAAUlnO,GAEnB,IAAIa,KAAKy9oC,iBAAoBD,GAAax9oC,KAAM,aAAhD,CAIA,IAAI+0H,EAAQ/0H,KAAKimuB,OACbzitB,EAASuxG,EAAMhD,iBAAiB4rhC,0BAA0B,CAACx+oC,EAAEg5H,QAASh5H,EAAEi5H,UACxEslM,EAAWl6S,EAAOk6S,SACT,SAAbA,GAAuB19T,KAAKs9oC,yBAAyBxjH,iBAAiB/k6B,EAAM5xH,IAAI,uBAEhFnD,KAAKs9oC,yBAAsC,SAAb5/0B,EAAsB,KAClD,CACAkg1B,iBAAkBp6nC,EAAOo6nC,iBAEzB7t5B,UAAwB,SAAb2tE,EAAsB,KAAO,CACtCr4Q,SAAU,IAZd,CAgBF,GAGF,SAASm4lC,GAAaj2lC,EAAMs2lC,GAC1B,IAAI9ohC,EAAQxtE,EAAK0+qB,OACjB,OAAOlxmB,EAAM5xH,IAAI,mBAAqB4xH,EAAM5xH,IAAI,yBAA2B06oC,CAC7E,CAEA,YCxBA,GAvFA,SAAUn1xB,GAGR,SAASo1xB,IACP,IAAIpxlC,EAAmB,OAAXg8T,GAAmBA,EAAOnoX,MAAMP,KAAMI,YAAcJ,KAGhE,OADA0sD,EAAMngD,KAAOuxoC,EAAcvxoC,KACpBmgD,CACT,CA4EA,OAnFAkgX,EAAUkxuB,EAAep1xB,GASzBo1xB,EAAcp+oC,UAAUgxD,KAAO,WAC7Bg4T,EAAOhpX,UAAUgxD,KAAKnwD,MAAMP,KAAMI,WAElCJ,KAAKis/B,YAAY,CAAC,EACpB,EAEA6xJ,EAAcp+oC,UAAUus/B,YAAc,SAAUrqB,GAC9C,IAAIm+J,EAAa//nC,KAAK69D,OACtB+j6B,GAAa,EAAam+J,EAAYn+J,GAAW,GAEjD5h+B,KAAK+9oC,iBACP,EAMAD,EAAcp+oC,UAAUk9B,SAAW,SAAUm4F,EAAOuu2B,GAClD,IAAIk5K,EAAgBznhC,EAAM5xH,IAAI,iBAC9B,OAAwB,MAAjBq5oC,GAAyBl5K,EAAQnpoB,aAAa,WAAYqizB,KAAmBx8oC,IACtF,EAEA89oC,EAAcp+oC,UAAUs+oC,cAAgB,SAAU59mB,GAChD,EAAY,CAAC,iBAAkB,mBAAoB,kBAAmB,kBAAmB,qBAAqB,SAAU11hB,GAClH01hB,EAAIzgiB,eAAe+K,KAErB1K,KAAK69D,OAAOnzD,GAAQ01hB,EAAI11hB,GAE5B,GAAG1K,KACL,EAEA89oC,EAAcp+oC,UAAUq+oC,gBAAkB,WACxC,IAAIrl/B,EAAa14J,KAAK04J,WAAa,GAC/Bo05B,EAAoB9sjC,KAAK8sjC,kBAAoB,GAQjD,EAPiB,GAAc9sjC,KAAKsj+B,QAAQyB,gBAAgB,CAC1DjB,SAAU,kBACR,SAAUkpF,GAGZ,OAAQA,EAAU7pjC,IAAI,kBAAoB,KAAOnD,KAAKmrR,cACxD,GAAGnrR,OACqB,SAAUgtjC,GAChCt05B,EAAW72J,KAAK,MAAQmrjC,EAAU7pjC,IAAI,QACtC2pjC,EAAkBjrjC,KAAKmrjC,EAAU7hyB,eACnC,GACF,EAEA2y3B,EAAcvxoC,KAAO,WACrBuxoC,EAAc7h/B,aAAe,CAAC,gBAC9B6h/B,EAActpJ,WAAa,MAC3BspJ,EAAcl9mB,cAAgB,CAE5Bj7hB,EAAG,EACHk5B,KAAM,GACNC,IAAK,GACL+gE,MAAO,GACPC,OAAQ,GAGRohC,OAAQ,aAGR+8gC,gBAAgB,EAChBC,iBAAkB,KAClBC,gBAAiB,EACjBC,gBAAiB,GACjBC,eAAgB,GAChBC,mBAAoB,GAGpBC,2BAA4B,EAAE,IAAM,IAAM,IAC1CC,oBAAqB,QACrB10I,oBAAqB,MAEhBg0I,CACT,CArFA,CAqFEpx/B,ICxFF,IAAI+x/B,GAEJ,SAAU/1xB,GAGR,SAAS+1xB,EAAa9mzB,EAAK71P,EAAOulgC,EAAa9/Q,EAAUwlO,GACvD,IAAIrggC,EAAQg8T,EAAO9oX,KAAKI,KAAM23V,EAAK71P,EAAOulgC,IAAgBrnmC,KAI1D,OAFA0sD,EAAMngD,KAAOg70B,GAAY,QACzB76xB,EAAMqggC,UAAYA,EACXrggC,CACT,CAMA,OAdAkgX,EAAU6xuB,EAAc/1xB,GAUxB+1xB,EAAa/+oC,UAAUgqiB,aAAe,WACpC,MAA0D,eAAnD1piB,KAAK+xH,iBAAiB6lE,WAAWz0L,IAAI,SAC9C,EAEOs7oC,CACT,CAhBA,CAgBE,IAEF,YCFe,SAASC,GAAW34hC,EAAO44hC,EAAYp0+B,EAAQq0+B,EAAaC,EAASC,GAClF/4hC,EAAQA,GAAS,EACjB,IAAI4u8B,EAAapq5B,EAAO,GAAKA,EAAO,GAUpC,GARe,MAAXs0+B,IACFA,EAAUE,GAASF,EAAS,CAAC,EAAGlqF,KAGnB,MAAXmqF,IACFA,EAAUj8oC,KAAK8K,IAAImxoC,EAAoB,MAAXD,EAAkBA,EAAU,IAGtC,QAAhBD,EAAuB,CACzB,IAAII,EAAan8oC,KAAKmjH,IAAI24hC,EAAW,GAAKA,EAAW,IACrDK,EAAaD,GAASC,EAAY,CAAC,EAAGrqF,IACtCkqF,EAAUC,EAAUC,GAASC,EAAY,CAACH,EAASC,IACnDF,EAAc,CAChB,CAEAD,EAAW,GAAKI,GAASJ,EAAW,GAAIp0+B,GACxCo0+B,EAAW,GAAKI,GAASJ,EAAW,GAAIp0+B,GACxC,IAAI00+B,EAAmBC,GAAYP,EAAYC,GAC/CD,EAAWC,IAAgB74hC,EAE3B,IAKIo5hC,EALAC,EAAgBP,GAAW,EAC3BQ,EAAa90+B,EAAOxoK,QAmBxB,OAlBAk9oC,EAAiB3k9B,KAAO,EAAI+k9B,EAAW,IAAMD,EAAgBC,EAAW,IAAMD,EAC9ET,EAAWC,GAAeG,GAASJ,EAAWC,GAAcS,GAG5DF,EAAeD,GAAYP,EAAYC,GAExB,MAAXC,IAAoBM,EAAa7k9B,OAAS2k9B,EAAiB3k9B,MAAQ6k9B,EAAa3snB,KAAOqsnB,KAEzFF,EAAW,EAAIC,GAAeD,EAAWC,GAAeK,EAAiB3k9B,KAAOuk9B,GAIlFM,EAAeD,GAAYP,EAAYC,GAExB,MAAXE,GAAmBK,EAAa3snB,KAAOssnB,IACzCH,EAAW,EAAIC,GAAeD,EAAWC,GAAeO,EAAa7k9B,KAAOwk9B,GAGvEH,CACT,CAEA,SAASO,GAAYP,EAAYC,GAC/B,IAAI7kzB,EAAO4kzB,EAAWC,GAAeD,EAAW,EAAIC,GAGpD,MAAO,CACLpsnB,KAAM3vhB,KAAKmjH,IAAI+zO,GACfz/J,KAAMy/J,EAAO,GAAK,EAAIA,EAAO,EAAI,EAAI6kzB,GAAe,EAAI,EAE5D,CAEA,SAASG,GAAS59oC,EAAOkoZ,GACvB,OAAOxmZ,KAAKgL,IAAiB,MAAbw7Y,EAAO,GAAaA,EAAO,GAAKtpV,IAAUl9D,KAAK8K,IAAiB,MAAb07Y,EAAO,GAAaA,EAAO,IAAK,IAAWloZ,GAChH,CCnEA,IAAI,GAAO,EACP,GAAU0B,KAAKgL,IACf,GAAUhL,KAAK8K,IACf,GAAY9K,KAAKyK,MACjB,GAAWzK,KAAKuK,KAChB,GAAQ,GACR,GAAKvK,KAAKsmC,GAEVm2mC,GAEJ,WACE,SAASA,EAASzyF,EAAevpF,EAASr07B,GACxCjvC,KAAKuM,KAAO,WAKZvM,KAAKkpmC,SAAW,KAMhBlpmC,KAAKu/oC,YAAc,CAAC,EACpBv/oC,KAAK04J,WAAam05B,EAAcn05B,WAChC14J,KAAKimuB,OAAS4mV,EAEd7sjC,KAAKyy9B,MAAMo6F,EAAevpF,EAASr07B,EACrC,CAoVA,OAlVAqwmC,EAAS5/oC,UAAU+y9B,MAAQ,SAAUo6F,EAAevpF,EAASr07B,GAC3D,IAAIypH,EAAam05B,EAAcn05B,WAC3Bo05B,EAAoBD,EAAcC,kBACtC,GAAKp05B,GAAY,SAAUi/L,EAAKmjB,GAC9B,IAAIiysB,EAAYD,EAAkBhysB,GAC9BkysB,EAAY1pF,EAAQnpoB,aAAa,eAAgB4ytB,GAEjDti3B,EAAOzqM,KAAKkpmC,SAASj9lC,IAAI0rV,EAAK,IAAI,GAAaA,EAAK,GAA8Bq1tB,GAAY,CAAC,EAAG,GAAIA,EAAU7pjC,IAAI,QAAS4pjC,IAE7HV,EAA2B,aAAd5h3B,EAAKl+L,KACtBk+L,EAAK+53B,OAASnY,GAAcW,EAAU7pjC,IAAI,eAC1CsnM,EAAK4zjB,QAAU2uT,EAAU7pjC,IAAI,WAE7B6pjC,EAAUvi3B,KAAOA,EACjBA,EAAK11E,MAAQi47B,EACbvi3B,EAAK14E,iBAAmBi77B,EAAUj77B,iBAAmB/xH,IACvD,GAAGA,KACL,EAMAs/oC,EAAS5/oC,UAAU6uE,OAAS,SAAU+05B,EAASr07B,GAC7CjvC,KAAKw/oC,sBAAsBx/oC,KAAKimuB,OAAQq9P,EAC1C,EAEAg8K,EAAS5/oC,UAAUm1iC,aAAe,SAAU1/5B,GAC1C,IAAIi6+B,EAAapvnC,KAAKy/oC,kBAElBC,EAAWtwB,EAAWswB,SACtBC,EAAavwB,EAAWuwB,WACxBC,EAAgBxwB,EAAWwwB,cAC3BC,EAAQ1qgC,EAAM,EAAIyqgC,GAClBE,EAAU3qgC,EAAMyqgC,GACpB,OAAOC,GAASH,GAAYG,GAASH,EAAWtwB,EAAWpwD,YAAc8gF,GAAWH,GAAcG,GAAWH,EAAavwB,EAAW2wB,YACvI,EAEAT,EAAS5/oC,UAAUk4L,SAAW,WAC5B,OAAO53L,KAAKimuB,MACd,EAMAq5a,EAAS5/oC,UAAU8/oC,sBAAwB,SAAU3yF,EAAevpF,GAClEA,EAAQyf,YAAW,SAAUC,GAC3B,GAAK6pE,EAAcjwhC,SAASom9B,EAAa1f,GAAzC,CAIA,IAAI9z9B,EAAOwz+B,EAAYx+2B,UACvB,GAAKxkI,KAAK04J,YAAY,SAAUi/L,GAC9B,IAAIltJ,EAAOzqM,KAAKkpmC,SAAS/lmC,IAAIw0V,GAE7BltJ,EAAK3oG,MAAMyt9B,oBAAoB//iC,EAAMA,EAAK42iC,aAAazutB,IACvD,GAA2BltJ,EAAK3oG,MAAO2oG,EAAK11E,MAC9C,GAAG/0H,KARH,CASF,GAAGA,KACL,EAMAs/oC,EAAS5/oC,UAAUmvH,OAAS,SAAUg+7B,EAAe59gC,GACnDjvC,KAAK6s+B,MAAQ,GAAyBggF,EAAc/2D,qBAAsB,CACxE/29B,MAAOkQ,EAAIk8L,WACXnsM,OAAQiQ,EAAI+rI,cAGdh7K,KAAKggpC,aACP,EAEAV,EAAS5/oC,UAAU43jC,QAAU,WAC3B,OAAOt3jC,KAAK6s+B,KACd,EAEAyyK,EAAS5/oC,UAAU+/oC,gBAAkB,WACnC,IAgBIQ,EAhBApzF,EAAgB7sjC,KAAKimuB,OACrBvyoB,EAAO1zF,KAAK6s+B,MACZv80B,EAAK,CAAC,IAAK,KACX624B,EAAK,CAAC,QAAS,UACfjm6B,EAAS2r7B,EAAc1pjC,IAAI,UAC3By8oC,EAA2B,eAAX1+gC,EAA0B,EAAI,EAC9C6+gC,EAAersjC,EAAKyz8B,EAAGy4G,IACvBM,EAAe,CAAC,EAAGH,GACnBI,EAAYngpC,KAAK04J,WAAWr4J,OAC5B+9oC,EAAkB,GAASvxF,EAAc1pjC,IAAI,mBAAoB+8oC,GACjE/B,EAAkB,GAAStxF,EAAc1pjC,IAAI,oBAAsB,EAAG,CAAC,EAAGg9oC,IAC1ElC,EAAiBpxF,EAAc1pjC,IAAI,mBAAqBg9oC,EAAY,GAAKA,EAAYhC,GAAmBA,EAAkB,GAAKC,EAAkB,GAAK2B,EAAe,EAIrKnC,EAAmB/wF,EAAc1pjC,IAAI,oBAGpCy6oC,GAMHqC,EAAU,GAASrC,EAAiB,GAAKA,EAAiB,GAAIsC,GAC9DtC,EAAiB,GAAKA,EAAiB,GAAKqC,IAN5CA,EAAU,GAAS7B,GAAmBD,EAAkB,GAAI+B,IAE5DtC,EAAmB,CAACQ,GADGvxF,EAAc1pjC,IAAI,qBAAuB,GAAUg9oC,EAAY,IAC7BF,EAAU,IAClD,GAAKrC,EAAiB,GAAKqC,GAM9C,IAAIG,GAAqBL,EAAeE,IAAYE,EAAYhC,GAEhEiC,EAAoB,IAAMA,EAAoB,GAE9C,IAAIC,EAAkB,CAAC,GAAU,GAAMzC,EAAiB,GAAKQ,EAAiB,IAAM,EAAG,GAAS,GAAMR,EAAiB,GAAKQ,EAAiB,IAAM,GAE/IkC,EAAuBF,EAAoBhC,EAAkBR,EAAiB,GAClF,MAAO,CACL18gC,OAAQA,EACR0+gC,cAAeA,EACfD,WAAYjsjC,EAAK48D,EAAGsv/B,IACpBG,aAAcA,EACdL,SAAUhsjC,EAAK48D,EAAG,EAAIsv/B,IACtB5gF,WAAYtr+B,EAAKyz8B,EAAG,EAAIy4G,IACxB3B,eAAgBA,EAChBG,gBAAiBA,EACjBgC,kBAAmBA,EACnBxC,iBAAkBA,EAClBuC,UAAWA,EACXE,gBAAiBA,EACjBC,qBAAsBA,EAE1B,EAEAhB,EAAS5/oC,UAAUsgpC,YAAc,WAC/B,IAAItsjC,EAAO1zF,KAAK6s+B,MACZtnL,EAAOvlzB,KAAKkpmC,SACZxw8B,EAAa14J,KAAK04J,WAElB029B,EAAapvnC,KAAKy/oC,kBAElBv+gC,EAASku/B,EAAWlu/B,OACxBqkrB,EAAKvjC,MAAK,SAAUv3kB,GAClB,IAAI+p3B,EAAa,CAAC,EAAG46D,EAAWpwD,YAC5BlktB,EAAMrwK,EAAK4zjB,QAAU,EAAI,EAC7B5zjB,EAAKgl3B,UAAU+E,EAAW15sB,GAAM05sB,EAAW,EAAI15sB,GACjD,IACA,GAAKpiN,GAAY,SAAUi/L,EAAKmjB,GAC9B,IAAIu7xB,GAAWjnB,EAAW6uB,eAAiBsC,GAAuBC,IAAyB1lyB,EAAKs0wB,GAC5FqxB,EAAgB,CAClB93e,WAAY,CACV1kqB,EAAGoyoC,EAAQ13mC,SACX37B,EAAGosnC,EAAWpwD,YAEhBx1hB,SAAU,CACRvliB,EAAG,EACHjB,EAAGqzoC,EAAQ13mC,WAGX+hnC,EAAgB,CAClB/3e,WAAY,GAAK,EACjBn/H,SAAU,GAER7qgB,EAAW,CAAC8hnC,EAAcv/gC,GAAQj9H,EAAIyvF,EAAKzvF,EAAGw8oC,EAAcv/gC,GAAQl+H,EAAI0wF,EAAK1wF,GAC7EujH,EAAWm6hC,EAAcx/gC,GACzB0B,ErTxPC,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,GqTyPrB,GAAcA,EAAWA,EAAWrc,GACpC,GAAiBqc,EAAWA,EAAWjkG,GAKvC3+B,KAAKu/oC,YAAY5nzB,GAAO,CACtBh5T,SAAUA,EACV4nF,SAAUA,EACVqc,UAAWA,EACXis+B,uBAAwBwnC,EAAQxnC,uBAChCpB,cAAe4oC,EAAQ5oC,cACvB4B,qBAAsBgnC,EAAQhnC,qBAC9BpH,cAAe,EACfD,eAAgB,EAEpB,GAAGhomC,KACL,EAMAs/oC,EAAS5/oC,UAAUsh3B,QAAU,SAAUrphB,GACrC,OAAO33V,KAAKkpmC,SAAS/lmC,IAAIw0V,EAC3B,EAMA2nzB,EAAS5/oC,UAAUi4jC,YAAc,SAAUx2jC,EAAOw2V,GAChD,OAAO33V,KAAK2gpC,iBAAiB3gpC,KAAKkpmC,SAAS/lmC,IAAIw0V,GAAKk/tB,YAAY11jC,GAAQw2V,EAC1E,EAQA2nzB,EAAS5/oC,UAAU48oC,gBAAkB,SAAU9soC,EAAM0Z,EAAUsd,EAAOC,GAC3D,MAATD,IAAkBA,EAAQ,GACnB,MAAPC,IAAgBA,EAAMj3B,EAAK+5C,SAC3B,IAAI+/iC,EAAUtpmC,KAAKkpmC,SACfxw8B,EAAa14J,KAAK04J,WAClBko/B,EAAiB,GACjBC,EAAa,GACjB,EAAYno/B,GAAY,SAAUu05B,GAChC2zF,EAAe/+oC,KAAK2N,EAAK42iC,aAAa6G,IACtC4zF,EAAWh/oC,KAAKynmC,EAAQnmmC,IAAI8pjC,GAASl47B,MACvC,IAGA,IAFA,IAAI+rhC,EAAe9gpC,KAAK+gpC,iBAEf17+B,EAAY7+H,EAAO6+H,EAAY5+H,EAAK4+H,IAAa,CACxD,IAAIg3+B,OAAc,EAElB,GAAKyE,EAEE,CACLzE,EAAc,SAGd,IAFA,IAAI3/nC,EAASlN,EAAKktiB,UAAUkkmB,EAAgBv7+B,GAEnCjhK,EAAI,EAAG48oC,EAAOto/B,EAAWr4J,OAAQ+D,EAAI48oC,EAAM58oC,IAGlD,GAAc,aAFFy8oC,EAAWz8oC,GAAG68oC,eAAevkoC,EAAOtY,IAEtB,CACxBi4oC,EAAc,WACd,KACF,CAEJ,MAbEA,EAAc,SAehBnznC,EAASmznC,EAAah3+B,EACxB,CACF,EAMAi6+B,EAAS5/oC,UAAUqhpC,eAAiB,WAKlC,IAJA,IAAIro/B,EAAa14J,KAAK04J,WAClB4w8B,EAAUtpmC,KAAKkpmC,SACf43C,GAAe,EAEV18oC,EAAI,EAAG48oC,EAAOto/B,EAAWr4J,OAAQ+D,EAAI48oC,EAAM58oC,IACQ,WAAtDklmC,EAAQnmmC,IAAIu1J,EAAWt0J,IAAI2wH,MAAMkshC,mBACnCH,GAAe,GAInB,OAAOA,CACT,EAOAxB,EAAS5/oC,UAAUihpC,iBAAmB,SAAU1h/B,EAAO04L,GAErD,OAAO,GAAuB,CAAC14L,EAAO,GADrBj/J,KAAKu/oC,YAAY5nzB,GACmB/0N,UACvD,EAMA08gC,EAAS5/oC,UAAUwhpC,cAAgB,SAAUvpzB,GAC3C,OAAO,EAAa33V,KAAKu/oC,YAAY5nzB,GACvC,EAMA2nzB,EAAS5/oC,UAAUi+oC,0BAA4B,SAAUxogC,GACvD,IAAIi6+B,EAAapvnC,KAAKy/oC,kBAElBG,EAAgBxwB,EAAWwwB,cAC3BhC,EAAmBxuB,EAAWwuB,iBAAiB77oC,QAC/Ck+oC,EAAUrC,EAAiB,GAAKA,EAAiB,GACjDrz+B,EAAS,CAAC,EAAG6k9B,EAAWgvB,iBAAmBhvB,EAAW+wB,UAAY,IAEtE,IAAKngpC,KAAK60iC,aAAa1/5B,GACrB,MAAO,CACLuoL,SAAU,OACVkg1B,iBAAkBA,GAKtB,IAGI73hC,EAHAo7hC,EAAahsgC,EAAMyqgC,GAAiBxwB,EAAWuwB,WAAavwB,EAAWkxB,qBAIvE5i1B,EAAW,QACX0i1B,EAAoBhxB,EAAWgxB,kBAE/BgB,EAAcphpC,KAAKimuB,OAAO9iuB,IAAI,8BAG9Bk+oC,EAA4B,MAAlBD,EAAY,GAE1B,GAAIhB,EACEiB,GAAWjB,GAAqBe,EAAalB,EAAUmB,EAAY,IACrE1j1B,EAAW,OACX33M,EAAQo7hC,EAAalB,EAAUmB,EAAY,IAClCC,GAAWjB,GAAqBe,EAAalB,GAAW,EAAImB,EAAY,KACjF1j1B,EAAW,OACX33M,EAAQo7hC,EAAalB,GAAW,EAAImB,EAAY,MAE/Cr7hC,EAAQo7hC,EAAalB,EAAUmB,EAAY,KAAO,IAAMr7hC,EAAQo7hC,EAAalB,GAAW,EAAImB,EAAY,MAAQ,IAAMr7hC,EAAQ,IAGjIA,GAASqpgC,EAAWgvB,gBAAkBgC,GAC9B1B,GAAW34hC,EAAO63hC,EAAkBrz+B,EAAQ,OAClDmzJ,EAAW,WAEV,CACD,IAAI4j1B,EAAW1D,EAAiB,GAAKA,EAAiB,IAEtDA,EAAmB,CAAC,GAAQ,EADlBrz+B,EAAO,GAAK42+B,EAAaG,EACEA,EAAW,KAC/B,GAAK,GAAQ/2+B,EAAO,GAAIqz+B,EAAiB,GAAK0D,GAC/D1D,EAAiB,GAAKA,EAAiB,GAAK0D,CAC9C,CAEF,MAAO,CACL1D,iBAAkBA,EAClBlg1B,SAAUA,EAEd,EAEO4h1B,CACT,CAvWA,GAyWA,SAAS,GAASzghC,EAAK0rC,GACrB,OAAO,GAAQ,GAAQ1rC,EAAK0rC,EAAO,IAAKA,EAAO,GACjD,CAEA,SAASi2+B,GAAwBzzF,EAAWqiE,GAC1C,IAAI1gxB,EAAO0gxB,EAAW2wB,cAAgB3wB,EAAW+wB,UAAY,GAC7D,MAAO,CACLxhnC,SAAU+vU,EAAOq+sB,EACjB8hD,uBAAwBngwB,EACxB++vB,eAAe,EAEnB,CAEA,SAAS8yC,GAAqBxzF,EAAWqiE,GACvC,IAKIzwlC,EAGA0wkC,EARA0wC,EAAe3wB,EAAW2wB,aAC1B3B,EAAkBhvB,EAAWgvB,gBAC7B+B,EAAY/wB,EAAW+wB,UACvBC,EAAoBhxB,EAAWgxB,kBAC/BC,EAAkBjxB,EAAWixB,gBAE7BxxC,EAAyBuxC,EACzB3yC,GAAgB,EAepB,OAZI1gD,EAAYszF,EAAgB,IAC9B1hnC,EAAWouhC,EAAYqzF,EACvB/wC,EAAuB+wC,GACdrzF,GAAaszF,EAAgB,IACtC1hnC,EAAWywlC,EAAWkxB,qBAAuBvzF,EAAYqxF,EAAkBhvB,EAAWwuB,iBAAiB,GACvG/uC,EAAyBuvC,EACzB3wC,GAAgB,IAEhB9ukC,EAAWohnC,GAAgBI,EAAY,EAAIpzF,GAAaqzF,EACxD/wC,EAAuB+wC,GAGlB,CACLzhnC,SAAUA,EACVkwkC,uBAAwBA,EACxBpB,cAAeA,EACf4B,qBAAsBA,EAE1B,CAEA,YC9YA,GAH8B,CAC5BnvmC,OArBF,SAAgCoj+B,EAASr07B,GACvC,IAAIgpgC,EAAe,GAgBnB,OAfA30E,EAAQwe,cAAc,YAAY,SAAU+qE,EAAe/xsB,GACzD,IAAIoooB,EAAW,IAAI,GAAS2pE,EAAevpF,EAASr07B,GACpDi08B,EAASx4+B,KAAO,YAAcowW,EAC9BoooB,EAASr03B,OAAOg+7B,EAAe59gC,GAC/B49gC,EAAc967B,iBAAmBmx3B,EACjCA,EAASnu3B,MAAQ837B,EACjB5U,EAAap2iC,KAAKqh/B,EACpB,IAEA5f,EAAQyf,YAAW,SAAUC,GAC3B,GAA4C,aAAxCA,EAAY7/+B,IAAI,oBAAoC,CACtD,IAAI0pjC,EAAgB7pE,EAAY4S,uBAAuB,WAAYrxB,IAAkB1z0B,OAAO,GAC5Fmy1B,EAAYjx3B,iBAAmB867B,EAAc967B,gBAC/C,CACF,IACOkm7B,CACT,GClBA,IAAIspG,GAEJ,SAAU74xB,GAGR,SAAS64xB,IACP,IAAI70lC,EAAmB,OAAXg8T,GAAmBA,EAAOnoX,MAAMP,KAAMI,YAAcJ,KAQhE,OANA0sD,EAAMngD,KAAOg1oC,EAAkBh1oC,KAK/BmgD,EAAM80lC,gBAAkB,GACjB90lC,CACT,CA6DA,OAzEAkgX,EAAU20uB,EAAmB74xB,GAc7B64xB,EAAkB7hpC,UAAU+hpC,mBAAqB,WAC/C,OAAOp6K,GAAgB,CAAC,CAAC,OAAQ,SAAU,CAAC,YAAa,eAAgB,CAAC,SAAU,eAAgB,CAAC,QAAS,SAAU,CAAC,UAAW,YAA7HA,CAEJrn+B,KAAK43L,SAAS,mBACnB,EAWA2p9B,EAAkB7hpC,UAAUgipC,mBAAqB,SAAUr8U,GACzD,IAAIm8U,EAAkBxhpC,KAAKwhpC,gBAAkB,EAAan8U,GAE1D,GAAIm8U,EACF,IAAK,IAAI5gpC,EAAI4gpC,EAAgBnhpC,OAAS,EAAGO,GAAK,EAAGA,IAC/C,GAAe4gpC,EAAgB5gpC,GAGrC,EAOA2gpC,EAAkB7hpC,UAAUuhpC,eAAiB,SAAU9/oC,GACrD,IAAIqgpC,EAAkBxhpC,KAAKwhpC,gBAE3B,IAAKA,EAAgBnhpC,OACnB,MAAO,SAGT,GAAa,MAATc,GAAiBmrC,OAAOnrC,GAC1B,MAAO,WAIT,GAA+B,IAA3BqgpC,EAAgBnhpC,OAAc,CAChC,IAAI6he,EAAWs/qB,EAAgB,GAE/B,GAAIt/qB,EAAS,IAAM/ge,GAASA,GAAS+ge,EAAS,GAC5C,MAAO,QAEX,MACE,IAAK,IAAIthe,EAAI,EAAGi+H,EAAM2ihC,EAAgBnhpC,OAAQO,EAAIi+H,EAAKj+H,IACrD,GAAI4gpC,EAAgB5gpC,GAAG,IAAMO,GAASA,GAASqgpC,EAAgB5gpC,GAAG,GAChE,MAAO,SAKb,MAAO,UACT,EAEO2gpC,CACT,CA3EA,CA2EE70/B,IAEF,EAAa60/B,GAAmB1gF,IAChC,YCjFA,IAAI8gF,IAAqB,EACrB,GAAU9+oC,KAAKgL,IACf,GAAUhL,KAAK8K,IACf,GAAU9K,KAAK6yF,IACfksjC,GAAU,IACVC,GAAqB,EACrBC,GAAwB,EACxBC,GAAqB,YACrBC,GAAgB,CAClBz+oC,EAAG,CAAC,EAAG,GACPpE,EAAG,CAAC,EAAG,GACPE,EAAG,CAAC,EAAG,GACPyB,EAAG,CAAC,EAAG,IAELmhpC,GAAa,CACf1+oC,EAAG,KACHpE,EAAG,KACHE,EAAG,KACHyB,EAAG,KACH6F,GAAI,OACJ+iO,GAAI,OACJvI,GAAI,OACJj6N,GAAI,QAEFg7oC,GAAoB,CACtBzgH,WAAY,CACVpvtB,UAAW,EACX+qc,OAAQ,wBACRhgpB,KAAM,WAER+khC,eAAe,EACfC,UAAW,SACXC,eAAe,GAEbC,GAAU,EAWVC,GAEJ,SAAU75xB,GAGR,SAAS65xB,EAAgBhqoC,GACvB,IAAIm0C,EAAQg8T,EAAO9oX,KAAKI,OAASA,KAwBjC,OAlBA0sD,EAAM+4F,OAAS,GAKf/4F,EAAM81lC,QAAU,GAChB91lC,EAAM2wlC,UAAY,CAAC,EAMnB3wlC,EAAMsl/B,IAAMz5hC,EACZm0C,EAAM0uQ,MAAQ,IAAI,GAClB1uQ,EAAM+1lC,KAAO,mBAAqBH,KAClC,EAAKI,IAAiB,SAAU1ylC,EAAS3gB,GACvCrvC,KAAKq9oC,UAAUhumC,GAAahsC,GAAK2sD,EAAShwD,KAC5C,GAAG0sD,GACIA,CACT,CA4JA,OAxLAkgX,EAAU21uB,EAAiB75xB,GAkC3B65xB,EAAgB7ipC,UAAUijpC,YAAc,SAAUC,GAOhD,OAFA5ipC,KAAK6ipC,YAAc7ipC,KAAK8ipC,kBACxBF,EAAYG,WAAa/ipC,KAAKgjpC,eAAeJ,GACtC5ipC,IACT,EAEAuipC,EAAgB7ipC,UAAUsjpC,eAAiB,SAAUJ,GACnD,IAAIrqoC,EAAKvY,KAAKgyiC,IAEThyiC,KAAKijpC,kBhFjGP,SAAc1qoC,EAAI2+lC,EAAagsC,GACxBpzI,GAASv3/B,GACf2+lC,GAAegsC,CACvB,CgF+FM,CAAsB3qoC,EAAIwpoC,GAAoB/hpC,KAAKyipC,MAGrD,EAAKzipC,KAAKq9oC,WAAW,SAAUrtlC,EAAS3gB,GACtC92B,EAAG3H,GAAGy+B,EAAW2gB,EACnB,IACAhwD,KAAK6ipC,WAAaD,EAAYG,UAC9B/ipC,KAAKmjpC,aAAeri5B,EAAMvwO,EAAM2xnC,IAAoBU,GAAa,EACnE,EAEAL,EAAgB7ipC,UAAUojpC,gBAAkB,WAC1C,IAAIvqoC,EAAKvY,KAAKgyiC,KhFzGX,SAAiBz5hC,EAAI2+lC,EAAagsC,GACvC,IAAIn08B,EAAQ+g0B,GAASv3/B,GACVw2L,EAAMmo6B,KAEJgsC,IACXn08B,EAAMmo6B,GAAe,KAEzB,CgFmGI,CAAyB3+lC,EAAIwpoC,GAAoB/hpC,KAAKyipC,MACtD,EAAKzipC,KAAKq9oC,WAAW,SAAUrtlC,EAAS3gB,GACtC92B,EAAGy1B,IAAIqB,EAAW2gB,EACpB,IACAhwD,KAAK6ipC,WAAa7ipC,KAAKmjpC,aAAe,IACxC,EAMAZ,EAAgB7ipC,UAAU0jpC,UAAY,SAAUC,GAC9C,GAAIA,GAAaA,EAAUhjpC,OAAQ,CACjC,IAAIijpC,EAAWtjpC,KAAKujpC,QAAU,CAAC,EAC/B,EAAKF,GAAW,SAAUA,GACxBC,EAASD,EAAUG,SAAWjznC,EAAM8ynC,EACtC,GACF,MACErjpC,KAAKujpC,QAAU,KAGjB,OAAOvjpC,IACT,EAEAuipC,EAAgB7ipC,UAAU2v9B,MAAQ,SAAUjvb,GAC1CA,EAAMA,GAAO,CAAC,EAMdpgiB,KAAKijpC,iBAAmB7inB,EAAIqjnB,gBAC5B,IAAI1qB,EAAY/4nC,KAAKo7T,MAYrB,OAVAp7T,KAAKgyiC,IAAI7shC,IAAI4zmC,GAEbA,EAAU9qmB,KAAK,CACbhqhB,EAAGm8hB,EAAIn8hB,GAAK,EACZjB,EAAGo9hB,EAAIp9hB,GAAK,EACZujH,SAAU65a,EAAI75a,UAAY,EAC1BqS,OAAQwna,EAAIxna,QAAU,EACtBC,OAAQuna,EAAIvna,QAAU,IAExB74H,KAAK4lmC,WAAamzB,EAAU5oK,oBACrBnw9B,IACT,EAWAuipC,EAAgB7ipC,UAAUgkpC,aAAe,SAAUC,GAKjDA,EAAkBt0nC,EAAIs0nC,GAAiB,SAAUC,GAC/C,OAAO9i5B,EAAMvwO,EAAM2xnC,IAAoB0B,GAAa,EACtD,IACA,IACIC,EAAY7jpC,KAAKwipC,QACjBsB,EAAY9jpC,KAAKwipC,QAAU,GAC3BjygC,EAAavwI,KACb+jpC,EAAgB/jpC,KAAKgkpC,eAEzB,OADA,IAAI,GAAWH,EAAWF,GAO1B,SAAmBM,EAAOjnoC,GACxB,OAAO63U,EAAOovzB,EAAMC,cAAelnoC,EACrC,GATsD63U,GAAQ1vU,IAAIqjD,GAAa+F,OAAO/F,GAAa31C,QAuBnG,SAAgB46e,GACVo2oB,EAAUp2oB,KAAcs2oB,GAC1BxzgC,EAAW6qL,MAAMvoS,OAAOgxnC,EAAUp2oB,GAEtC,IA3BkH1rH,UAC3G/hZ,KAEP,SAAS60V,EAAO+tzB,EAAa5loC,GAC3B,OAA0B,MAAlB4loC,EAAYr3nC,GAAaq3nC,EAAYr3nC,GAT7B,kBASgDvO,GAAS,IAAM4loC,EAAYG,SAC7F,CAMA,SAASv6kC,EAAYqgP,EAAU4kN,GAC7B,IAAI02oB,EAAmBR,EAAgB961B,GAGvC,GAAgB,MAAZ4kN,GAAoBo2oB,EAAUp2oB,KAAcs2oB,EAC9CD,EAAUj71B,GAAYg71B,EAAUp2oB,OAC3B,CACL,IAAIw2oB,EAAQH,EAAUj71B,GAAwB,MAAZ4kN,GAAoBo2oB,EAAUp2oB,GAAUy2oB,cAAgBC,EAAkBN,EAAUp2oB,IAAa22oB,GAAY7zgC,EAAY8zgC,GAAY9zgC,EAAY4zgC,IACnLG,GAAyB/zgC,EAAY0zgC,EACvC,CACF,CAOF,EAEA1B,EAAgB7ipC,UAAU6kpC,QAAU,WAiBlC,OAVAvkpC,KAAK2ipC,aAAY,GAEjB6B,GAAYxkpC,MAEZA,KAAKgyiC,IAAIn/gC,OAAO7yB,KAAKo7T,OAMdp7T,IACT,EAEAuipC,EAAgB7ipC,UAAU2l8B,QAAU,WAClCrl8B,KAAKukpC,UACLvkpC,KAAKguC,KACP,EAEOu0mC,CACT,CA1LA,CA0LE,IAEF,SAAS8B,GAAY9zgC,EAAYqygC,GAC/B,IAAIqB,EAAQQ,GAAe7B,EAAYG,WAAWsB,YAAY9zgC,EAAYqygC,GAI1E,OAHAqB,EAAMC,cAAgBtB,EACtB9sG,GAAQmuG,EAAOrB,GACfrygC,EAAW6qL,MAAMj2S,IAAI8+nC,GACdA,CACT,CAEA,SAASG,GAAY7zgC,EAAYwzgC,GAC/B,IAAIW,EAAgBC,GAAiBZ,GAOrC,OALIW,EAAcN,cAChBM,EAAcN,YAAY7zgC,EAAYwzgC,GACtCjuG,GAAQiuG,EAAeA,EAAcG,gBAGhCH,CACT,CAEA,SAASa,GAAiBr0gC,EAAY0zgC,GACpC,IAAIrB,EAAcqB,EAAMC,cACxBS,GAAiBV,GAAOW,iBAAiBr0gC,EAAY0zgC,EAAOrB,EAAY7ghC,MAAO6ghC,EACjF,CAEA,SAAS9sG,GAAQmuG,EAAOrB,GACtB,IAAIj9oC,EAAIi9oC,EAAYj9oC,EACf,MAALA,IAAcA,EAAIi8oC,IAClBqC,EAAMp+8B,UAAS,SAAUhsD,GACvBA,EAAGl0I,EAAIA,EACPk0I,EAAGkjD,GAAKp3L,CACV,GACF,CAEA,SAAS2+oC,GAAyB/zgC,EAAY0zgC,GAC5CU,GAAiBV,GAAOY,aAAat0gC,EAAY0zgC,GACjDW,GAAiBr0gC,EAAY0zgC,EAC/B,CAEA,SAASU,GAAiBV,GACxB,OAAOQ,GAAeR,EAAMC,cAAcnB,UAC5C,CAGA,SAAS+B,GAAgBv0gC,EAAYpxI,EAAG4lpC,GACtC,IAMIh6uB,EANA8kc,EAASt/tB,EAAWgzgC,QAExB,IAAK1zS,EACH,OAAO8xS,GAIT,IAAI/+gC,EAAY2N,EAAWq19B,WAI3B,OAHA,EAAK/1P,GAAQ,SAAUv+1B,GACrBA,EAAG0zoC,iBAAiB7lpC,EAAG4lpC,EAAkBnihC,KAAemoS,EAAQz5Z,EAClE,IACOy5Z,CACT,CAGA,SAASk6uB,GAAgB10gC,EAAY0zgC,GACnC,IAAIp0S,EAASt/tB,EAAWgzgC,QAExB,IAAK1zS,EACH,OAAO8xS,GAGT,IAAI6B,EAAUS,EAAMC,cAAcV,QAGlC,OAAkB,MAAXA,EAAkB3zS,EAAO2zS,GAAW7B,EAC7C,CAEA,SAAS6C,GAAYj0gC,GACnB,IAAI20gC,EAAS30gC,EAAWiygC,QACpB2C,EAAiBD,EAAO7kpC,OAK5B,OAJA,EAAK6kpC,GAAQ,SAAUjB,GACrB1zgC,EAAW6qL,MAAMvoS,OAAOoxnC,EAC1B,GAAG1zgC,GACH20gC,EAAO7kpC,OAAS,IACP8kpC,CACX,CAEA,SAAS,GAAQ50gC,EAAY6vZ,GAC3B,IAAIr8L,EAAQ10U,EAAIkhH,EAAWiygC,SAAS,SAAUyB,GAC5C,IAAIrB,EAAcqB,EAAMC,cACpBnihC,EAAQxxG,EAAMqynC,EAAY7ghC,OAC9B,MAAO,CACLghhC,UAAWH,EAAYG,UACvBS,QAASZ,EAAYY,QACrBzhhC,MAAOA,EAEX,IACAwO,EAAW7xG,QAAQ,QAAS,CAC1BqlU,MAAOA,EACPwlY,QAASnpM,EAAImpM,MACb84a,gBAAiBjinB,EAAIiinB,eAEzB,CAiBA,SAAS+C,GAAaxusB,GACpB,IAAIp4Q,EAAOo4Q,EAAMv2c,OAAS,EAE1B,OADAm+L,EAAO,IAAMA,EAAO,GACb,CAACo4Q,EAAM,GAAIA,EAAMp4Q,GAC1B,CAIA,SAAS6m9B,GAAoBC,EAAoB/0gC,EAAYqygC,EAAa2C,GACxE,IAAItB,EAAQ,IAAI,GA2BhB,OA1BAA,EAAM9+nC,IAAI,IAAI,GAAa,CACzBza,KAAM,OACN2J,MAAOmxoC,GAAU5C,GACjBxuqB,QAAQ,EACR7tF,WAAW,EACXllQ,OAAQ,OACRzpC,MAAOoy1B,GAAMy7M,GAAWH,EAAoB/0gC,EAAY0zgC,EAAO,CAAC,IAAK,IAAK,IAAK,MAC/EyB,UAAW17M,GAAM,GAASz5zB,EAAY,CACpCg5lB,OAAO,OAGX,EAAKg8a,GAAmB,SAAUI,GAChC1B,EAAM9+nC,IAAI,IAAI,GAAa,CACzBza,KAAMi7oC,EAAa94oC,KAAK,IACxBwH,MAAO,CACLu3H,QAAS,GAEX26Q,WAAW,EACX6tF,QAAQ,EACRknf,WAAW,EACX1j3B,MAAOoy1B,GAAMy7M,GAAWH,EAAoB/0gC,EAAY0zgC,EAAO0B,GAC/DD,UAAW17M,GAAM,GAASz5zB,EAAY,CACpCg5lB,OAAO,MAGb,IACO06a,CACT,CAEA,SAAS2B,GAAer1gC,EAAY0zgC,EAAO4B,EAAYjD,GACrD,IAAIvw0B,EAAYuw0B,EAAYnhH,WAAWpvtB,WAAa,EAChDyz0B,EAAa,GAAQzz0B,EAAWyv0B,IAChC79oC,EAAI4hpC,EAAW,GAAG,GAClB7ipC,EAAI6ipC,EAAW,GAAG,GAClB/unC,EAAK7yB,EAAIouU,EAAY,EACrBz/S,EAAK5vB,EAAIqvU,EAAY,EACrBv1I,EAAK+o9B,EAAW,GAAG,GACnBpuhC,EAAKouhC,EAAW,GAAG,GACnBE,EAAMjp9B,EAAKgp9B,EAAazz0B,EAAY,EACpC2z0B,EAAMvuhC,EAAKquhC,EAAazz0B,EAAY,EACpCtzS,EAAQ+9J,EAAK74L,EACb+6B,EAASy4F,EAAKz0H,EACdijpC,EAASlnnC,EAAQszS,EACjB6z0B,EAAUlnnC,EAASqzS,EACvB8z0B,GAAgB51gC,EAAY0zgC,EAAO,OAAQhgpC,EAAGjB,EAAG+7B,EAAOC,GAEpD4jnC,EAAYT,gBACdgE,GAAgB51gC,EAAY0zgC,EAAO,IAAKntnC,EAAIlE,EAAIkznC,EAAYI,GAC5DC,GAAgB51gC,EAAY0zgC,EAAO,IAAK8B,EAAKnznC,EAAIkznC,EAAYI,GAC7DC,GAAgB51gC,EAAY0zgC,EAAO,IAAKntnC,EAAIlE,EAAIqznC,EAAQH,GACxDK,GAAgB51gC,EAAY0zgC,EAAO,IAAKntnC,EAAIkvnC,EAAKC,EAAQH,GACzDK,GAAgB51gC,EAAY0zgC,EAAO,KAAMntnC,EAAIlE,EAAIkznC,EAAYA,GAC7DK,GAAgB51gC,EAAY0zgC,EAAO,KAAM8B,EAAKnznC,EAAIkznC,EAAYA,GAC9DK,GAAgB51gC,EAAY0zgC,EAAO,KAAMntnC,EAAIkvnC,EAAKF,EAAYA,GAC9DK,GAAgB51gC,EAAY0zgC,EAAO,KAAM8B,EAAKC,EAAKF,EAAYA,GAEnE,CAEA,SAASjB,GAAat0gC,EAAY0zgC,GAChC,IAAIrB,EAAcqB,EAAMC,cACpB/B,EAAgBS,EAAYT,cAC5BiE,EAASnC,EAAMppL,QAAQ,GAC3BurL,EAAOh8vB,SAASo7vB,GAAU5C,IAC1BwD,EAAOn4nB,KAAK,CACV75C,QAAS+tqB,EACT9ggC,OAAQ8ggC,EAAgB,OAAS,YAEnC,EAAK,CAAC,CAAC,KAAM,CAAC,KAAM,CAAC,KAAM,CAAC,KAAM,CAAC,IAAK,KAAM,CAAC,IAAK,KAAM,CAAC,IAAK,KAAM,CAAC,IAAK,OAAO,SAAUwD,GAC3F,IAAI9rgC,EAAKoqgC,EAAMnpL,YAAY6qL,EAAa94oC,KAAK,KACzCw5oC,EAAoC,IAAxBV,EAAatlpC,OAAeimpC,GAAoB/1gC,EAAYo1gC,EAAa,IAgD7F,SAA6Bp1gC,EAAYg2gC,GACvC,IAAIF,EAAY,CAACC,GAAoB/1gC,EAAYg2gC,EAAgB,IAAKD,GAAoB/1gC,EAAYg2gC,EAAgB,KAEtH,OADkB,MAAjBF,EAAU,IAA+B,MAAjBA,EAAU,KAAeA,EAAU/rlC,UACrD+rlC,EAAUx5oC,KAAK,GACxB,CApDmG25oC,CAAoBj2gC,EAAYo1gC,GAC/H9rgC,GAAMA,EAAGo0Y,KAAK,CACZ75C,QAAS+tqB,EACT7mL,WAAY6mL,EACZ9ggC,OAAQ8ggC,EAAgBF,GAAWoE,GAAa,UAAY,MAEhE,GACF,CAEA,SAASF,GAAgB51gC,EAAY0zgC,EAAOv5oC,EAAMzG,EAAGjB,EAAGO,EAAGX,GACzD,IAAIi3I,EAAKoqgC,EAAMnpL,YAAYpw9B,GAC3BmvI,GAAMA,EAAG+sQ,SAmFX,SAAsBt7W,GACpB,IAAI2qK,EAAO,GAAQ3qK,EAAO,GAAG,GAAIA,EAAO,GAAG,IACvC4qK,EAAO,GAAQ5qK,EAAO,GAAG,GAAIA,EAAO,GAAG,IAG3C,MAAO,CACLrnC,EAAGgyM,EACHjzM,EAAGkzM,EACHn3K,MALS,GAAQuM,EAAO,GAAG,GAAIA,EAAO,GAAG,IAK3B2qK,EACdj3K,OALS,GAAQsM,EAAO,GAAG,GAAIA,EAAO,GAAG,IAK1B4qK,EAEnB,CA9FoBuw8B,CAAaC,GAAYn2gC,EAAY0zgC,EAAO,CAAC,CAAChgpC,EAAGjB,GAAI,CAACiB,EAAIV,EAAGP,EAAIJ,MACrF,CAEA,SAAS4ipC,GAAU5C,GACjB,OAAO,EAAS,CACdzvK,eAAe,GACdyvK,EAAYnhH,WACjB,CAEA,SAASklH,GAAgB1ipC,EAAGjB,EAAG85L,EAAIrlE,GACjC,IAAI5pH,EAAM,CAAC,GAAQ5J,EAAG64L,GAAK,GAAQ95L,EAAGy0H,IAClC9pH,EAAM,CAAC,GAAQ1J,EAAG64L,GAAK,GAAQ95L,EAAGy0H,IACtC,MAAO,CAAC,CAAC5pH,EAAI,GAAIF,EAAI,IAAK,CAACE,EAAI,GAAIF,EAAI,IAEzC,CAMA,SAAS24oC,GAAoB/1gC,EAAYq2gC,GACvC,IAYIpthC,EAAM,GAZA,CACRj2H,EAAG,OACHpE,EAAG,QACHE,EAAG,MACHyB,EAAG,UAQoC8lpC,GAjB3C,SAAsBr2gC,GACpB,OAAO,GAAqBA,EAAW6qL,MACzC,CAe0D,CAAa7qL,IACrE,MAPiB,CACf1xG,KAAM,IACNghE,MAAO,IACP/gE,IAAK,IACLghE,OAAQ,KAGQ05B,EACpB,CAQA,SAASishC,GAAUH,EAAoB/0gC,EAAY0zgC,EAAO4C,EAAiBrygC,EAAIH,GAC7E,IAAIuugC,EAAcqB,EAAMC,cACpB4C,EAAYxB,EAAmByB,YAAYnE,EAAY7ghC,OACvDilhC,EAAaC,GAAa12gC,EAAYiE,EAAIH,GAC9C,EAAKwygC,GAAiB,SAAUK,GAC9B,IAAIC,EAAMnF,GAAckF,GACxBJ,EAAUK,EAAI,IAAIA,EAAI,KAAOH,EAAWG,EAAI,GAC9C,IACAvE,EAAY7ghC,MAAQujhC,EAAmB8B,cAAcT,GAAgBG,EAAU,GAAG,GAAIA,EAAU,GAAG,GAAIA,EAAU,GAAG,GAAIA,EAAU,GAAG,KACrIxC,GAAyB/zgC,EAAY0zgC,GACrC,GAAQ1zgC,EAAY,CAClBg5lB,OAAO,GAEX,CAEA,SAAS89a,GAAa92gC,EAAY0zgC,EAAOzvgC,EAAIH,GAC3C,IAAItS,EAAQkihC,EAAMC,cAAcnihC,MAC5BilhC,EAAaC,GAAa12gC,EAAYiE,EAAIH,GAC9C,EAAKtS,GAAO,SAAUoT,GACpBA,EAAM,IAAM6xgC,EAAW,GACvB7xgC,EAAM,IAAM6xgC,EAAW,EACzB,IACA1C,GAAyB/zgC,EAAY0zgC,GACrC,GAAQ1zgC,EAAY,CAClBg5lB,OAAO,GAEX,CAEA,SAAS09a,GAAa12gC,EAAYiE,EAAIH,GACpC,IAAI0k/B,EAAYxo/B,EAAW6qL,MACvBks1B,EAASvuB,EAAU9nK,sBAAsBz80B,EAAIH,GAC7CkzgC,EAAYxuB,EAAU9nK,sBAAsB,EAAG,GACnD,MAAO,CAACq2L,EAAO,GAAKC,EAAU,GAAID,EAAO,GAAKC,EAAU,GAC1D,CAEA,SAASb,GAAYn2gC,EAAY0zgC,EAAOz0oC,GACtC,IAAIu7Z,EAAQk6uB,GAAgB10gC,EAAY0zgC,GACxC,OAAOl5uB,GAASA,IAAU42uB,GAAqB52uB,EAAM0gX,SAASj8wB,EAAM+gI,EAAWq19B,YAAcr1kC,EAAM/gB,EACrG,CA0CA,SAASo2G,GAAezmH,GACtB,IAAIqopC,EAAOropC,EAAEs/B,MACb+onC,EAAK5hiC,gBAAkB4hiC,EAAK5hiC,gBAC9B,CAEA,SAAS6hiC,GAAiBxD,EAAOhgpC,EAAGjB,GAClC,OAAOihpC,EAAMnpL,YAAY,QAAQlnB,QAAQ3v8B,EAAGjB,EAC9C,CAEA,SAAS0kpC,GAAmBn3gC,EAAYpxI,EAAG4lpC,EAAkBx7a,GAC3D,IAGI70C,EAHAqvd,EAAgBxzgC,EAAWyzgC,eAC3Bj5uB,EAAQx6R,EAAWo3gC,eACnBC,EAAkBr3gC,EAAW4ygC,aAKjC,GAFA5ygC,EAAWkV,OAAO5jJ,KAAKkjpC,EAAiBhjpC,SAnP1C,SAAyBwuI,GACvB,IAAIqmU,EAAQrmU,EAAWkV,OAEvB,IAAKmxT,EAAMv2c,OACT,OAAO,EAGT,IAAI0jQ,EAAK6yM,EAAMA,EAAMv2c,OAAS,GAC1BggP,EAAKu2N,EAAM,GACXpiU,EAAKuvH,EAAG,GAAK1jB,EAAG,GAChBhsG,EAAK0vH,EAAG,GAAK1jB,EAAG,GAEpB,OADW,GAAQ7rG,EAAKA,EAAKH,EAAKA,EAAI,IACxBwtgC,EAChB,CAwOMgG,CAAgBt3gC,IAAewzgC,EAAe,CAChD,GAAIh5uB,IAAUg5uB,EAAe,CACG,WAA9B6D,EAAgBxF,WAA0BoC,GAAYj0gC,GACtD,IAAIqygC,EAAcrynC,EAAMq3nC,GACxBhF,EAAYG,UAAY+E,GAAmBlF,EAAYG,UAAWh4uB,GAClE63uB,EAAYY,QAAUz4uB,IAAU42uB,GAAqB,KAAO52uB,EAAMy4uB,QAClEO,EAAgBxzgC,EAAWyzgC,eAAiBK,GAAY9zgC,EAAYqygC,GAEpErygC,EAAWiygC,QAAQ3gpC,KAAKkipC,EAC1B,CAEA,GAAIA,EAAe,CACjB,IAAIW,EAAgBD,GAAeqD,GAAmBv3gC,EAAWsygC,WAAY93uB,IACtDg5uB,EAAcG,cACpBnihC,MAAQ2ihC,EAAcqD,iBAAiBrB,GAAYn2gC,EAAYwzgC,EAAexzgC,EAAWkV,SAEtG8jlB,IACF66a,GAAY7zgC,EAAYwzgC,GACxBW,EAAcG,aAAat0gC,EAAYwzgC,IAGzCa,GAAiBr0gC,EAAYwzgC,GAC7Brvd,EAAc,CACZ60C,MAAOA,EAEX,CACF,MAAWA,GAAuC,WAA9Bq+a,EAAgBxF,WAA0BwF,EAAgBvF,eAMxEyC,GAAgBv0gC,EAAYpxI,EAAG4lpC,IAAqBP,GAAYj0gC,KAClEmkjB,EAAc,CACZ60C,MAAOA,EACP84a,eAAe,IAKrB,OAAO3td,CACT,CAEA,SAASozd,GAAmB/E,EAAWh4uB,GACrC,MAAkB,SAAdg4uB,EAKKh4uB,EAAMi9uB,iBAGRjF,CACT,CAEA,IAAIL,GAAkB,CACpBl1L,UAAW,SAAUru9B,GACnB,GAAIa,KAAKo4mC,UAGP6vC,GAAcjopC,KAAMb,QACf,IAAKA,EAAE2Q,SAAW3Q,EAAE2Q,OAAOy2Y,UAAW,CAC3C3gS,GAAezmH,GACf,IAAI4lpC,EAAmB/kpC,KAAKo7T,MAAM61pB,sBAAsB9x9B,EAAEg5H,QAASh5H,EAAEi5H,SACrEp4H,KAAKgkpC,eAAiB,MACVhkpC,KAAK2npC,eAAiB7C,GAAgB9kpC,KAAMb,EAAG4lpC,MAGzD/kpC,KAAKo4mC,WAAY,EACjBp4mC,KAAKylJ,OAAS,CAACs//B,EAAiBhjpC,SAEpC,CACF,EACAskO,UAAW,SAAUlnO,GACnB,IAAI8E,EAAI9E,EAAEg5H,QACNn1H,EAAI7D,EAAEi5H,QACN2shC,EAAmB/kpC,KAAKo7T,MAAM61pB,sBAAsBht9B,EAAGjB,GAG3D,GA3HJ,SAAqButI,EAAYpxI,EAAG4lpC,GAClC,GACCx0gC,EAAWsygC,aAmJd,SAAyBtygC,EAAYtsI,EAAGjB,GACtC,IAAIuV,EAAKg4H,EAAWyh6B,IACpB,OAAO/tiC,EAAI,GAAKA,EAAIsU,EAAG4yN,YAAcnoO,EAAI,GAAKA,EAAIuV,EAAGyiK,WACvD,CAnJKkt+B,CAAgB33gC,EAAYpxI,EAAEg5H,QAASh5H,EAAEi5H,SAJ5C,CAQA,IAAI7/G,EAAKg4H,EAAWyh6B,IAChBkzG,EAAS30gC,EAAWiygC,QACpB2F,EAAYrD,GAAgBv0gC,EAAYpxI,EAAG4lpC,GAE/C,IAAKx0gC,EAAW6n+B,UACd,IAAK,IAAIx3mC,EAAI,EAAGA,EAAIskpC,EAAO7kpC,OAAQO,IAAK,CACtC,IAAIgipC,EAAcsC,EAAOtkpC,GAAGsjpC,cAE5B,GAAIiE,IAAcA,IAAcxG,IAAsBiB,EAAYY,UAAY2E,EAAU3E,UAAYiB,GAAe7B,EAAYG,WAAWnvM,QAAQsxM,EAAOtkpC,GAAImkpC,EAAiB,GAAIA,EAAiB,IAEjM,MAEJ,CAGFoD,GAAa5voC,EAAG687B,eAAe,YAjB/B,CAkBF,CAgGIgzM,CAAYpopC,KAAMb,EAAG4lpC,GAEjB/kpC,KAAKo4mC,UAAW,CAClBxy/B,GAAezmH,GACf,IAAIu1rB,EAAcgzd,GAAmB1npC,KAAMb,EAAG4lpC,GAAkB,GAChErwd,GAAe,GAAQ10rB,KAAM00rB,EAC/B,CACF,EACAk5R,QAAS,SAAUzu9B,GACjB8opC,GAAcjopC,KAAMb,EACtB,GAGF,SAAS8opC,GAAc13gC,EAAYpxI,GACjC,GAAIoxI,EAAW6n+B,UAAW,CACxBxy/B,GAAezmH,GACf,IAAI8E,EAAI9E,EAAEg5H,QACNn1H,EAAI7D,EAAEi5H,QACN2shC,EAAmBx0gC,EAAW6qL,MAAM61pB,sBAAsBht9B,EAAGjB,GAC7D0xrB,EAAcgzd,GAAmBn3gC,EAAYpxI,EAAG4lpC,GAAkB,GACtEx0gC,EAAW6n+B,WAAY,EACvB7n+B,EAAWkV,OAAS,GACpBlV,EAAWyzgC,eAAiB,KAE5Btvd,GAAe,GAAQnkjB,EAAYmkjB,EACrC,CACF,CAWA,IAAI+vd,GAAiB,CACnB92J,MAAO06J,GAAgB,GACvBz6J,MAAOy6J,GAAgB,GACvB30jC,KAAM,CACJ2wjC,YAAa,SAAU9zgC,EAAYqygC,GACjC,SAAS0F,EAAYvmhC,GACnB,OAAOA,CACT,CAEA,OAAOsjhC,GAAoB,CACzB0B,YAAauB,EACblB,cAAekB,GACd/3gC,EAAYqygC,EAAa,CAAC,CAAC,KAAM,CAAC,KAAM,CAAC,KAAM,CAAC,KAAM,CAAC,IAAK,KAAM,CAAC,IAAK,KAAM,CAAC,IAAK,KAAM,CAAC,IAAK,MACrG,EACAmF,iBAAkB,SAAUQ,GAC1B,IAAIC,EAAOpD,GAAamD,GACxB,OAAO5B,GAAgB6B,EAAK,GAAG,GAAIA,EAAK,GAAG,GAAIA,EAAK,GAAG,GAAIA,EAAK,GAAG,GACrE,EACA5D,iBAAkB,SAAUr0gC,EAAY0zgC,EAAO4B,EAAYjD,GACzDgD,GAAer1gC,EAAY0zgC,EAAO4B,EAAYjD,EAChD,EACAiC,aAAcA,GACdjxM,QAAS6zM,IAEXxinC,QAAS,CACPo/mC,YAAa,SAAU9zgC,EAAYqygC,GACjC,IAAIqB,EAAQ,IAAI,GAQhB,OALAA,EAAM9+nC,IAAI,IAAI,GAAiB,CAC7Bza,KAAM,OACN2J,MAAOmxoC,GAAU5C,GACjBxuqB,QAAQ,KAEH6vqB,CACT,EACA8D,iBAAkB,SAAUQ,GAC1B,OAAOA,CACT,EACAnE,YAAa,SAAU7zgC,EAAY0zgC,GACjCA,EAAMpxnC,OAAOoxnC,EAAMppL,QAAQ,IAE3BopL,EAAM9+nC,IAAI,IAAI,GAAgB,CAC5Bza,KAAM,OACN67Y,WAAW,EACX3uS,MAAOoy1B,GAAMq9M,GAAc92gC,EAAY0zgC,GACvCyB,UAAW17M,GAAM,GAASz5zB,EAAY,CACpCg5lB,OAAO,MAGb,EACAq7a,iBAAkB,SAAUr0gC,EAAY0zgC,EAAO4B,EAAYjD,GACzDqB,EAAMppL,QAAQ,GAAGj0kB,SAAS,CACxBt7W,OAAQo7mC,GAAYn2gC,EAAY0zgC,EAAO4B,IAE3C,EACAhB,aAAcA,GACdjxM,QAAS6zM,KAIb,SAASY,GAAgBI,GACvB,MAAO,CACLpE,YAAa,SAAU9zgC,EAAYqygC,GACjC,OAAOyC,GAAoB,CACzB0B,YAAa,SAAUhlhC,GACrB,IAAI+khC,EAAY,CAAC/khC,EAAO,CAAC,EAAG,MAE5B,OADA0mhC,GAAW3B,EAAUxslC,UACdwslC,CACT,EACAM,cAAe,SAAUN,GACvB,OAAOA,EAAU2B,EACnB,GACCl4gC,EAAYqygC,EAAa,CAAC,CAAC,CAAC,KAAM,CAAC,MAAO,CAAC,CAAC,KAAM,CAAC,OAAO6F,GAC/D,EACAV,iBAAkB,SAAUQ,GAC1B,IAAIC,EAAOpD,GAAamD,GAGxB,MAAO,CAFG,GAAQC,EAAK,GAAGC,GAAUD,EAAK,GAAGC,IAClC,GAAQD,EAAK,GAAGC,GAAUD,EAAK,GAAGC,IAE9C,EACA7D,iBAAkB,SAAUr0gC,EAAY0zgC,EAAO4B,EAAYjD,GACzD,IAAI8F,EAEA39uB,EAAQk6uB,GAAgB10gC,EAAY0zgC,GAExC,GAAIl5uB,IAAU42uB,IAAsB52uB,EAAM49uB,0BACxCD,EAAc39uB,EAAM49uB,0BAA0BF,OACzC,CACL,IAAIlwoC,EAAKg4H,EAAWyh6B,IACpB02G,EAAc,CAAC,EAAG,CAACnwoC,EAAG4yN,WAAY5yN,EAAGyiK,aAAa,EAAIyt+B,GACxD,CAEA,IAAI3B,EAAY,CAACjB,EAAY6C,GAC7BD,GAAW3B,EAAUxslC,UACrBsrlC,GAAer1gC,EAAY0zgC,EAAO6C,EAAWlE,EAC/C,EACAiC,aAAcA,GACdjxM,QAAS6zM,GAEb,CAEA,YC9xBO,SAASmB,GAAsBl1jC,GAEpC,OADAA,EAAOm1jC,GAAcn1jC,GACd,SAAUo1jC,GACf,OAAO,GAA6BA,EAAap1jC,EACnD,CACF,CACO,SAASq1jC,GAA2Br1jC,EAAMs1jC,GAE/C,OADAt1jC,EAAOm1jC,GAAcn1jC,GACd,SAAU+0jC,GACf,IAAI3tyB,EAA0B,MAApBkuyB,EAA2BA,EAAmBP,EACpDQ,EAAanuyB,EAAMpnR,EAAK30D,MAAQ20D,EAAK10D,OACrCqnB,EAAOy0T,EAAMpnR,EAAKzvF,EAAIyvF,EAAK1wF,EAC/B,MAAO,CAACqjD,EAAMA,GAAQ4imC,GAAc,GACtC,CACF,CACO,SAASC,GAAyBx1jC,EAAMzkD,EAAKk6mC,GAClD,IAAIpzH,EAAe8yH,GAAcn1jC,GACjC,OAAO,SAAUv0F,EAAG4lpC,GAClB,OAAOhvH,EAAaniF,QAAQmxM,EAAiB,GAAIA,EAAiB,MAAQlrC,GAAoB16mC,EAAG8vC,EAAKk6mC,EACxG,CACF,CAEA,SAASN,GAAcn1jC,GACrB,OAAO,GAAaxzF,OAAOwzF,EAC7B,CCpBA,IAAI01jC,GAAc,CAAC,WAAY,gBAAiB,YAE5CC,GAEJ,SAAU3gyB,GAGR,SAAS2gyB,IACP,IAAI38lC,EAAmB,OAAXg8T,GAAmBA,EAAOnoX,MAAMP,KAAMI,YAAcJ,KAGhE,OADA0sD,EAAMngD,KAAO88oC,EAAiB98oC,KACvBmgD,CACT,CA8GA,OArHAkgX,EAAUy8uB,EAAkB3gyB,GAS5B2gyB,EAAiB3ppC,UAAUgxD,KAAO,SAAU4y6B,EAASr07B,GACnDy5U,EAAOhpX,UAAUgxD,KAAKnwD,MAAMP,KAAMI,YAEjCJ,KAAKsppC,iBAAmB,IAAI,GAAgBr6mC,EAAIk9/B,UAAUv7hC,GAAG,QAAS,GAAY5Q,KAAKuppC,SAAUvppC,MACpG,EAEAqppC,EAAiB3ppC,UAAU4uH,OAAS,SAAU0+7B,EAAW1pF,EAASr07B,EAAKna,GACrE,IAwGJ,SAA4Bk4hC,EAAW1pF,EAASxu8B,GAC9C,OAAOA,GAA4B,mBAAjBA,EAAQvoB,MAA6B+29B,EAAQw+B,eAAe,CAC5Eh+B,SAAU,eACV704B,MAAOn6D,IACN,KAAOk4hC,CACZ,CA7GQw8F,CAAmBx8F,EAAW1pF,EAASxu8B,GAA3C,CAIA90B,KAAKgtjC,UAAYA,EACjBhtjC,KAAKivC,IAAMA,EACXjvC,KAAKo7T,MAAMvtE,YACX,IAAImk3B,EAAehymC,KAAKiymC,WAIxB,GAHAjymC,KAAKiymC,WAAa,IAAI,GACtBjymC,KAAKo7T,MAAMj2S,IAAInlB,KAAKiymC,YAEfjlD,EAAU7pjC,IAAI,QAAnB,CAIA,IAAIsmpC,EA2GR,SAA0Bz8F,EAAW1pF,GACnC,OAAOA,EAAQnpoB,aAAa,WAAY6ytB,EAAU7pjC,IAAI,iBACxD,CA7GwB29jC,CAAiB9T,EAAW1pF,GAC5C4f,EAAWumK,EAAc13hC,iBACzB23hC,EAAkB18F,EAAUy0F,qBAC5BkI,EAAYD,EAAgB3qnC,MAC5B44T,EAAMq1tB,EAAUvi3B,KAAKktJ,IAErBiyzB,EAAa,EAAc,CAC7Bh1K,uBAAwB+0K,GAFTzmK,EAASg+J,cAAcvpzB,IAIpCu6wB,EAAc,IAAI,GAAYllD,EAAW48F,GAC7C,EAAYR,GAAal3C,EAAY/slC,IAAK+slC,GAE1ClymC,KAAKiymC,WAAW9slC,IAAI+slC,EAAY3F,YAEhCvsmC,KAAK6ppC,wBAAwBD,EAAYF,EAAiB18F,EAAWy8F,EAAeE,EAAW16mC,GAE/F,GAAwB+ikC,EAAchymC,KAAKiymC,WAAYjlD,EAlBvD,CAXA,CA8BF,EASAq8F,EAAiB3ppC,UAAUmqpC,wBAA0B,SAAUD,EAAYF,EAAiB18F,EAAWy8F,EAAeE,EAAW16mC,GAE/H,IAAIs7H,EAASyi5B,EAAUvi3B,KAAK+k3B,YACxBs6F,EAAYv/+B,EAAO,GAAKA,EAAO,GAC/BgO,EAAQ11K,KAAKgL,IAAI,GAA0B,GAAtBhL,KAAKmjH,IAAI8jiC,IAI9Bp2jC,EAAO,GAAqBxzF,OAAO,CACrC+D,EAAGsmK,EAAO,GACVvnK,GAAI2mpC,EAAY,EAChB5qnC,MAAO+qnC,EACP9qnC,OAAQ2qnC,IAEVj2jC,EAAKzvF,GAAKs0K,EACV7kF,EAAK30D,OAAS,EAAIw5I,EAElBv4K,KAAKsppC,iBAAiBj6L,MAAM,CAC1Bo0L,iBAAiB,EACjBl9hC,SAAUqjiC,EAAWrjiC,SACrBtiH,EAAG2lpC,EAAWjrnC,SAAS,GACvB37B,EAAG4mpC,EAAWjrnC,SAAS,KACtByknC,UAAU,CAAC,CACZI,QAAS,KACT/3X,SAAU,GAAkC/3rB,GAC5CsxjC,iBAAkB,GAAqCtxjC,EAAMzkD,EAAKw6mC,GAClEd,0BAA2B,GAAuCj1jC,EAAM,MACtEivjC,YAAY,CACdI,UAAW,QACXthH,WAAYioH,EACZrH,eAAe,IACdqB,aAuCP,SAA0B12F,GACxB,IAAIvi3B,EAAOui3B,EAAUvi3B,KACrB,OAAO,EAAWui3B,EAAUw0F,iBAAiB,SAAUt/qB,GACrD,MAAO,CACL6grB,UAAW,QACXS,QAAS,KACTzhhC,MAAO,CAAC0oE,EAAKos3B,YAAY30lB,EAAS,IAAI,GAAOz3R,EAAKos3B,YAAY30lB,EAAS,IAAI,IAE/E,GACF,CAhDoB6nrB,CAAiB/8F,GACnC,EAEAq8F,EAAiB3ppC,UAAU6ppC,SAAW,SAAUS,GAC9C,IAAIC,EAAgBD,EAAWjmzB,MAE3BiptB,EAAYhtjC,KAAKgtjC,UACjBvi3B,EAAOui3B,EAAUvi3B,KACjB46nB,EAAY,EAAW4kV,GAAe,SAAUC,GAClD,MAAO,CAACz/8B,EAAKk63B,YAAYulF,EAAUnohC,MAAM,IAAI,GAAO0oE,EAAKk63B,YAAYulF,EAAUnohC,MAAM,IAAI,GAC3F,MAIKir7B,EAAUnv/B,OAAOsslC,WAAaH,EAAWzgb,OAASygb,EAAW3H,gBAEhEripC,KAAKivC,IAAIu1/B,eAAe,CACtBj4hC,KAAM,iBACN69oC,eAAgBp9F,EAAUzhiC,GAC1B85yB,UAAWA,GAGjB,EAEAgkV,EAAiB3ppC,UAAU2l8B,QAAU,WACnCrl8B,KAAKsppC,iBAAiBjkN,SACxB,EAEAgkN,EAAiB98oC,KAAO,eACjB88oC,CACT,CAvHA,CAuHE,IAwBF,YC1JA,IAAI,GAAa,CACf98oC,KAAM,iBACNkyB,MAAO,oBCML4rnC,GAAoB,CACtB99oC,KAAM,QACNm9oC,gBAAiB,CACf3qnC,MAAO,GACPy48B,YAAa,EACbl/nB,YAAa,oBACb/qP,MAAO,oBACPqe,QAAS,IAEXu+gC,UAAU,EACVxkpC,EAAG,IAEE,SAAS,GAAQoqkC,GACtBA,EAAUnyB,sBAAsB,IAChCmyB,EAAUpyB,uBAAuB,IACjCoyB,EAAUp0B,yBAAyB,WAAY,IAC/Co0B,EAAU/0B,qBAAqB8hG,IAC/B/sE,EAAUpyB,uBAAuB,IACjCoyB,EAAUnyB,sBAAsB,IAChCknD,GAAiB/0B,EAAW,WAAY,GAAmBs6E,IDtBtD,SAAgCt6E,GACrCA,EAAUr0B,eAAe,IAAY,SAAU5mhC,EAASwu8B,GACtDA,EAAQwe,cAAc,CACpBhe,SAAU,eACV704B,MAAOn6D,IACN,SAAUw1nC,GACXA,EAAkB7/8B,KAAK11E,MAAM2shC,mBAAmB5snC,EAAQuwyB,UAC1D,GACF,IAKA0qQ,EAAUr0B,eAAe,sBAAsB,SAAU5mhC,EAASwu8B,GAChEA,EAAQwe,cAAc,CACpBhe,SAAU,WACV704B,MAAOn6D,IACN,SAAU+3hC,GACXA,EAAcmxF,cAAclpnC,EAC9B,GACF,GACF,CCEEy1nC,CAAuBx6E,EACzB,CCrBA,IAAIy6E,GAGF,WACExqpC,KAAK4nT,GAAK,EACV5nT,KAAK0xL,GAAK,EACV1xL,KAAK88L,GAAK,EACV98L,KAAKy3H,GAAK,EACVz3H,KAAK0yhC,KAAO,EACZ1yhC,KAAK2yhC,KAAO,EACZ3yhC,KAAK8yhC,KAAO,EACZ9yhC,KAAK+yhC,KAAO,EACZ/yhC,KAAKuqK,OAAS,CAChB,EAKEkg/B,GAEJ,SAAU/hyB,GAGR,SAAS+hyB,EAAWpumC,GAClB,OAAOqsU,EAAO9oX,KAAKI,KAAMq8C,IAASr8C,IACpC,CA8BA,OAlCA4sa,EAAU69uB,EAAY/hyB,GAMtB+hyB,EAAW/qpC,UAAUk0+B,gBAAkB,WACrC,OAAO,IAAI42K,EACb,EAEAC,EAAW/qpC,UAAUg0+B,UAAY,SAAUp8vB,EAAKhV,GAC9C,IAAI/3D,EAAS+3D,EAAM/3D,OACnB+sE,EAAIyvhB,OAAOzkiB,EAAMslF,GAAItlF,EAAM5wC,IAC3B4lD,EAAI0yiB,cAAc1njB,EAAMowzB,KAAMpwzB,EAAMqwzB,KAAMrwzB,EAAMwwzB,KAAMxwzB,EAAMywzB,KAAMzwzB,EAAMxlC,GAAIwlC,EAAM7qG,IAE7D,aAAjB6qG,EAAMkxxB,QACRl8wB,EAAI0vhB,OAAO1kiB,EAAMxlC,GAAKvyB,EAAQ+3D,EAAM7qG,IACpC6/G,EAAI0yiB,cAAc1njB,EAAMwwzB,KAAOvo3B,EAAQ+3D,EAAMywzB,KAAMzwzB,EAAMowzB,KAAOno3B,EAAQ+3D,EAAMqwzB,KAAMrwzB,EAAMslF,GAAKr9I,EAAQ+3D,EAAM5wC,MAE7G4lD,EAAI0vhB,OAAO1kiB,EAAMxlC,GAAIwlC,EAAM7qG,GAAK8yC,GAChC+sE,EAAI0yiB,cAAc1njB,EAAMwwzB,KAAMxwzB,EAAMywzB,KAAOxo3B,EAAQ+3D,EAAMowzB,KAAMpwzB,EAAMqwzB,KAAOpo3B,EAAQ+3D,EAAMslF,GAAItlF,EAAM5wC,GAAKnnB,IAG3G+sE,EAAI2vhB,WACN,EAEAwjZ,EAAW/qpC,UAAU89rB,UAAY,WAC/B2jT,GAAcnh/B,KAChB,EAEAyqpC,EAAW/qpC,UAAUkpgC,SAAW,WAC9BvnB,GAAcrh/B,KAChB,EAEOyqpC,CACT,CApCA,CAoCE,IAEEC,GAEJ,SAAUhiyB,GAGR,SAASgiyB,IACP,IAAIh+lC,EAAmB,OAAXg8T,GAAmBA,EAAOnoX,MAAMP,KAAMI,YAAcJ,KAIhE,OAFA0sD,EAAMngD,KAAOm+oC,EAAWn+oC,KACxBmgD,EAAMi+lC,yBAA0B,EACzBj+lC,CACT,CAuLA,OA/LAkgX,EAAU89uB,EAAYhiyB,GAUtBgiyB,EAAWhrpC,UAAU4uH,OAAS,SAAU003B,EAAa1f,EAASr07B,GAC5D,IAAI27mC,EAAa5qpC,KACbyu/B,EAAQzL,EAAY6kJ,WACpBzs0B,EAAQp7T,KAAKo7T,MACbg0zB,EAAapsI,EAAYosI,WAEzBrwlC,EAAQqwlC,EAAWrwlC,MAEnBC,EAASowlC,EAAWpwlC,OACpB+pP,EAAWi6tB,EAAYx+2B,UACvB4k4B,EAAWpmB,EAAYx+2B,QAAQ,QAC/Bgv3B,EAASxQ,EAAY7/+B,IAAI,UAC7BnD,KAAKimuB,OAAS+8Q,EACd5nrB,EAAMvtE,YACNutE,EAAMn3T,EAAImrnC,EAAWnrnC,EACrBm3T,EAAMp4T,EAAIosnC,EAAWpsnC,EAErByr/B,EAAM67I,UAAS,SAAUziyB,GACvB,IAAIhsO,EAAQ,IAAI4uhC,GACZttK,EAASH,GAAUnh3B,GACvBsh3B,EAAO930B,UAAYwiM,EAAKxiM,UACxB830B,EAAOD,YAAc8F,EAAY9F,YACjCC,EAAOnuuB,SAAW,OAClB,IAYI44C,EACAl2H,EACAoL,EACArlE,EACAi75B,EACAC,EACAG,EACAC,EAnBAy5G,EAAY3kyB,EAAKjwK,WACjBy15B,EAAiBm/C,EAAU508B,SAAS,aACpC057B,EAAYjkC,EAAelqlC,IAAI,aAC/B0npC,EAAWhjzB,EAAKymxB,MAAM3lE,YACtBmiG,EAAajjzB,EAAKymxB,MAAM127B,WACxBmz9B,EAASD,EAAW3npC,IAAI,UACxB6npC,EAASF,EAAW3npC,IAAI,UACxB8npC,EAAWpjzB,EAAK0mxB,MAAM5lE,YACtBuiG,EAAarjzB,EAAK0mxB,MAAM327B,WACxBuz9B,EAASD,EAAW/npC,IAAI,UACxBiopC,EAASF,EAAW/npC,IAAI,UACxBkopC,EAAaxjzB,EAAK8gtB,YAStB9s7B,EAAMymG,MAAM/3D,OAAS1nK,KAAK8K,IAAI,EAAG09oC,EAAWh3gC,IAC5CxY,EAAMymG,MAAMkxxB,OAASA,EAEN,aAAXA,GACF5rsB,GAAgB,MAAVmj2B,EAAiBA,EAAShsnC,EAAQ8rnC,EAAS5mpC,GAAKonpC,EAAW/zzB,GACjE5lK,GAAgB,MAAVs59B,EAAiBA,EAAShsnC,EAAS6rnC,EAAS7npC,GAAK6npC,EAASx2gC,GAChEyoD,GAAgB,MAAVqu9B,EAAiBA,EAASpsnC,EAAQksnC,EAAShnpC,GAAKonpC,EAAWtrZ,GAEjE2yR,EAAO9quB,EACP+quB,EAAOjh2B,GAAM,EAAI4/7B,IAFjB75/B,EAAe,MAAV2zhC,EAAiBA,EAASpsnC,EAASisnC,EAASjopC,GAEdsunC,EACnCx+F,EAAOh21B,EACPi21B,EAAOrh2B,EAAK4/7B,EAAY75/B,GAAM,EAAI65/B,KAElC1p0B,GAAgB,MAAVmj2B,EAAiBA,EAAShsnC,EAAQ8rnC,EAAS5mpC,GAAK4mpC,EAASr2gC,GAC/Dk9C,GAAgB,MAAVs59B,EAAiBA,EAAShsnC,EAAS6rnC,EAAS7npC,GAAKqopC,EAAW/zzB,GAGlEo7rB,EAAO9quB,GAAM,EAAI0p0B,IAFjBx07B,EAAe,MAAVqu9B,EAAiBA,EAASpsnC,EAAQksnC,EAAShnpC,GAEbqtnC,EACnC3+F,EAAOjh2B,EACPoh2B,EAAOlruB,EAAK0p0B,EAAYx07B,GAAM,EAAIw07B,GAClCv+F,EAJAt75B,GAAgB,MAAV2zhC,EAAiBA,EAASpsnC,EAASisnC,EAASjopC,GAAKqopC,EAAWtrZ,IAOpElkoB,EAAM+qR,SAAS,CACbh/F,GAAIA,EACJl2H,GAAIA,EACJoL,GAAIA,EACJrlE,GAAIA,EACJi75B,KAAMA,EACNC,KAAMA,EACNG,KAAMA,EACNC,KAAMA,IAERl35B,EAAMuuR,SAASijsB,EAAethG,gBAE9Bu/J,GAAgBzvhC,EAAMxnH,MAAOm/+B,EAAQ3rpB,GACrC,IAAI0jzB,EAAuB,GAAK/e,EAAUrpoC,IAAI,SAC1CqopC,EAAuB9iK,GAAqB8jJ,EAAW,aAC3D3kJ,GAAchs3B,EAAO2vhC,EAAsB,CACzClkK,aAAc,CACZI,kBAAmB,SAAUri1B,EAAW22Z,EAAWhtT,EAAUw4uB,EAAepic,EAAWwrd,GACrF,OAAO5tB,EAAY0E,kBAAkBri1B,EAAW22Z,EAAW,OAAQwrb,EAEnEh9C,GAAUplZ,EAAWommB,EAAqBno/B,QAAUmo/B,EAAqBno/B,OAAOlgK,IAAI,aAAcoopC,GAAuB36I,EAC3H,GAEFrpB,eAAgB1/oB,EAAKxiM,UACrB08rB,YAAawpT,IAEf1vhC,EAAM641B,cAAc,CAClB/17B,SAAU,WAEZ,IAAI2njC,EAAgBkmD,EAAU508B,SAAS,YACvC6szB,GAAyB5o3B,EAAO2wgC,EAAW,aAAa,SAAUz3gC,GAChE,IAAI1gH,EAAQ0gH,EAAMg33B,eAElB,OADAu/J,GAAgBj3oC,EAAOm/+B,EAAQ3rpB,GACxBxzV,CACT,IACA+mT,EAAMj2S,IAAI02G,GACVut4B,EAAS2/C,iBAAiBlhtB,EAAKxiM,UAAWxpC,GAC1C,IAAIi1O,EAAQw1uB,EAAcnjlC,IAAI,SAC9Bgh/B,GAAoBto3B,EAAiB,cAAVi1O,EAAwBjJ,EAAK2qyB,yBAAqC,eAAV1hyB,EAAyBjJ,EAAKmsyB,2BAA6BljyB,EAAOw1uB,EAAcnjlC,IAAI,aAAcmjlC,EAAcnjlC,IAAI,YACzM,IAEAsr/B,EAAMskI,UAAS,SAAU1piC,GACvB,IAAI63C,EAAS73C,EAAKs/9B,YACdjkE,EAAYr75B,EAAKuuG,WACjB6z9B,EAAQ/mK,EAAUvh/B,IAAI,UACtBuopC,EAAQhnK,EAAUvh/B,IAAI,UACtBmjlC,EAAgB5hG,EAAU9szB,SAAS,YACnClkG,EAAO,IAAI,GAAa,CAC1B4uI,MAAO,CACLr+N,EAAY,MAATwnpC,EAAgBA,EAAQ1snC,EAAQmiG,EAAOj9H,EAC1CjB,EAAY,MAAT0opC,EAAgBA,EAAQ1snC,EAASkiG,EAAOl+H,EAC3C+7B,MAAOmiG,EAAOsT,GACdx1G,OAAQkiG,EAAOmT,IAEjBhgI,MAAOqw+B,EAAU9szB,SAAS,aAAam0zB,eACvChvzB,GAAI,KAEN8qzB,GAAcn05B,EAAMg15B,GAAqBhE,GAAY,CACnD4C,aAAc,CACZI,kBAAmB,SAAUri1B,EAAW22Z,GACtC,OAAOgnb,EAAY0E,kBAAkBri1B,EAAW22Z,EAAW,OAC7D,GAEFurb,eAAgBl+5B,EAAKg8E,UACrB08rB,YAAa14wB,EAAK99D,KAEpBmoE,EAAK07+B,uBAAwB,EAC7B17+B,EAAK4wU,SAAS,OAAQj7U,EAAKyy8B,UAAU,UACrCpo8B,EAAK4wU,SAAS,QAASj7U,EAAKyy8B,UAAU,SAAStoD,OAC/CiR,GAAyB/w5B,EAAMgx5B,GAC/BtprB,EAAMj2S,IAAIuuE,GACVq1L,EAASggyB,iBAAiB1/9B,EAAKg8E,UAAW3xE,GAC1Csp5B,GAAUtp5B,GAAMs7K,SAAW,OAC3B,IAAI8hG,EAAQw1uB,EAAcnjlC,IAAI,SAC9Bgh/B,GAAoBzw5B,EAAgB,cAAVo9Q,EAAwBznR,EAAKmpjC,yBAAqC,eAAV1hyB,EAAyBznR,EAAK2qjC,2BAA6BljyB,EAAOw1uB,EAAcnjlC,IAAI,aAAcmjlC,EAAcnjlC,IAAI,YACxM,IACA4lR,EAAS86tB,mBAAkB,SAAUhq2B,EAAIwrB,GACvB0jH,EAAS8nvB,aAAaxr2B,GAExBliK,IAAI,eAChB02I,EAAGjiC,MAAQ,SAAU48B,EAAIH,GACvBu2gC,EAAWD,yBAA0B,EACrC3qpC,KAAKsiO,MAAMr+N,GAAKuwI,EAChBx0I,KAAKsiO,MAAMt/N,GAAKqxI,EAChBr0I,KAAK8lwB,QACL72tB,EAAIu1/B,eAAe,CACjBj4hC,KAAM,WACNwwwB,SAAUimO,EAAYz39B,GACtB85I,UAAW0jH,EAASujvB,YAAYjn2B,GAChCsm/B,OAAQ3rpC,KAAKsiO,MAAMr+N,EAAI86B,EACvB6snC,OAAQ5rpC,KAAKsiO,MAAMt/N,EAAIg8B,GAE3B,EAEA66G,EAAG6rgC,UAAY,WACbkF,EAAWD,yBAA0B,CACvC,EAEA9wgC,EAAG0sQ,WAAY,EACf1sQ,EAAGwH,OAAS,OAEhB,KAEKrhJ,KAAKykJ,OAASu+1B,EAAY8C,sBAC7B1qrB,EAAMw5pB,YAmDZ,SAA6Blh4B,EAAMsv5B,EAAath7B,GAC9C,IAAIk66B,EAAS,IAAI,GAAa,CAC5Bt5wB,MAAO,CACLr+N,EAAGyvF,EAAKzvF,EAAI,GACZjB,EAAG0wF,EAAK1wF,EAAI,GACZ+7B,MAAO,EACPC,OAAQ00D,EAAK10D,OAAS,MAQ1B,OALA,GAAkB488B,EAAQ,CACxBt5wB,MAAO,CACLvjM,MAAO20D,EAAK30D,MAAQ,KAErBik9B,GAhE6E,WAC1E5nrB,EAAM28pB,gBACR,IA+DG6jB,CACT,CAlEwB,CAAoBxgrB,EAAMj3E,kBAAmB6+vB,IAKjEhj/B,KAAKykJ,MAAQu+1B,EAAYx+2B,SAC3B,EAEAkmhC,EAAWhrpC,UAAU2l8B,QAAU,WAAa,EAE5CqlN,EAAWn+oC,KAAO,SACXm+oC,CACT,CAjMA,CAiME1nW,IASF,SAASsoW,GAAgBO,EAAYr4J,EAAQ3rpB,GAC3C,OAAQgkzB,EAAWzuhC,MACjB,IAAK,SACHyuhC,EAAWzuhC,KAAOyqO,EAAKymxB,MAAMxyF,UAAU,SACvC+vH,EAAWr4K,MAAQ3roB,EAAKymxB,MAAMxyF,UAAU,SAAStoD,MACjD,MAEF,IAAK,SACHq4K,EAAWzuhC,KAAOyqO,EAAK0mxB,MAAMzyF,UAAU,SACvC+vH,EAAWr4K,MAAQ3roB,EAAK0mxB,MAAMzyF,UAAU,SAAStoD,MACjD,MAEF,IAAK,WACH,IAAIs4K,EAAcjkzB,EAAKymxB,MAAMxyF,UAAU,SACnCiwH,EAAclkzB,EAAK0mxB,MAAMzyF,UAAU,SAEnC9g+B,GAAS8wlC,IAAgB9wlC,GAAS+wlC,KACpCF,EAAWzuhC,KAAO,IAAI,GAAuB,EAAG,IAAgB,eAAXo23B,KAAuC,aAAXA,GAAwB,CAAC,CACxGjm4B,MAAOu+hC,EACP3pmC,OAAQ,GACP,CACDorE,MAAOw+hC,EACP5pmC,OAAQ,MAKlB,CAoBA,YCvTA,IAAI6pmC,GAEJ,SAAUtjyB,GAGR,SAASsjyB,IACP,IAAIt/lC,EAAmB,OAAXg8T,GAAmBA,EAAOnoX,MAAMP,KAAMI,YAAcJ,KAGhE,OADA0sD,EAAMngD,KAAOy/oC,EAAkBz/oC,KACxBmgD,CACT,CAoLA,OA3LAkgX,EAAUo/uB,EAAmBtjyB,GAa7BsjyB,EAAkBtspC,UAAUyohC,eAAiB,SAAUtq9B,EAAQyl6B,GAC7D,IAAI35jB,EAAQ9rW,EAAOwr8B,OAASxr8B,EAAO8rW,MAC/Bv5K,EAAQvyL,EAAOruD,MAAQquD,EAAOuyL,MAC9B8zB,EAASrmN,EAAOqmN,OACpBlkR,KAAKuznC,YAAc,GAGnB,IAFA,IAAIA,EAAcvznC,KAAKuznC,YAEd3ynC,EAAI,EAAGA,EAAIsjR,EAAO7jR,OAAQO,IACV,MAAnBsjR,EAAOtjR,GAAG22I,OAAiB2sI,EAAOtjR,GAAG22I,OAAS,IAChDg8+B,EAAYrv2B,EAAOtjR,GAAG22I,OAAS,IAAI,GAAM2sI,EAAOtjR,GAAIZ,KAAMsj+B,IAQ9D,GAAIlzuB,GAASu5K,EAAO,CAClB,IAAI8klB,EAAQmmJ,GAAwBxk5B,EAAOu5K,EAAO3pa,MAAM,GAI1D,SAAoB+oR,EAAUqgvB,GAC5BrgvB,EAASkiwB,WAAW,gBAAgB,SAAUl25B,EAAO+lP,GACnD,IAAIkooB,EAAcju3B,EAAM8pa,YACpB39Z,EAAS8h3B,EAAYx+2B,UAAUok7B,cAAc9tsB,GAEjD,GAAI55O,EAAQ,CACV,IAAI+qhC,EAAY/qhC,EAAOqW,MACnB4/+B,EAAan0I,EAAYuwI,YAAY04B,GAErC90B,IACFpigC,EAAM8pa,YAAcs4lB,EAExB,CAEA,OAAOpigC,CACT,IACAq04B,EAAS6hB,WAAW,gBAAgB,SAAUl25B,EAAO+lP,GACnD,IAAIkooB,EAAcju3B,EAAM8pa,YAEpB39Z,EADO8h3B,EAAY6kJ,WAAWY,eAAe3txB,GAC/BwzwB,MAAM3lE,YAExB,GAAIzn7B,EAAQ,CACV,IAAIqW,EAAQrW,EAAOqW,MACf4/+B,EAAan0I,EAAYuwI,YAAYh8+B,GAErC4/+B,IACFpigC,EAAM8pa,YAAcs4lB,EAExB,CAEA,OAAOpigC,CACT,GACF,IAnCE,OAAO053B,EAAMj/+B,IACf,CAmCF,EAEAw8oC,EAAkBtspC,UAAUwspC,gBAAkB,SAAU7m/B,EAAW8m/B,GACjE,IACIj8f,GADQlwpB,KAAK69D,OAAOruD,MAAQxP,KAAK69D,OAAOuyL,OACvB/qF,GACrB6qf,EAASy7f,OAASQ,EAAc,GAChCj8f,EAAS07f,OAASO,EAAc,EAClC,EAQAH,EAAkBtspC,UAAUmooC,SAAW,WACrC,OAAO7noC,KAAKwkI,UAAUiq3B,KACxB,EAQAu9J,EAAkBtspC,UAAU8ooC,YAAc,WACxC,OAAOxooC,KAAK6noC,WAAWz+H,QACzB,EAEA4iJ,EAAkBtspC,UAAUu3X,cAAgB,SAAU5xN,EAAW4r2B,EAAgBjiwB,GAC/E,SAAS41wB,EAAQln2B,GACf,OAAOpxI,MAAMoxI,IAAe,MAAPA,CACvB,CAGA,GAAiB,SAAbsxF,EAAqB,CACvB,IAAI3mO,EAASroC,KAAKmwgC,cAAc9q2B,EAAW2pG,GACvCo94B,EAAa/jnC,EAAO74B,KACpB68oC,EAAYhknC,EAAOlnC,MAEvB,OAAO4hhC,GAAoB,YAAa,CACtCr4gC,KAFa0hpC,EAAWvkpC,OAAS,OAASukpC,EAAWt8oC,OAGrD3O,MAAOkrpC,EACPznI,QAASA,EAAQynI,IAErB,CAEI,IACIlrpC,EADOnB,KAAK6noC,WAAW+F,eAAevo+B,GACzBsj5B,YAAYxnjC,MACzBm8vB,EAASt9vB,KAAKmwgC,cAAc9q2B,EAAW2pG,GAAUx/P,KAAK9E,KAC1D,OAAOq4gC,GAAoB,YAAa,CACtCr4gC,KAAgB,MAAV4yvB,EAAiBA,EAAS,GAAK,KACrCn8vB,MAAOA,EACPyjhC,QAASA,EAAQzjhC,IAGzB,EAEA6qpC,EAAkBtspC,UAAU61/B,cAAgB,WAAa,EAGzDy2J,EAAkBtspC,UAAUywgC,cAAgB,SAAU9q2B,EAAW2pG,GAC/D,IAAI3mO,EAASqgV,EAAOhpX,UAAUywgC,cAAcvwgC,KAAKI,KAAMqlK,EAAW2pG,GAElE,GAAoB,MAAhB3mO,EAAOlnC,OAA8B,SAAb6tQ,EAAqB,CAC/C,IACIs94B,EADOtspC,KAAK6noC,WAAW+F,eAAevo+B,GACrBsj5B,YAAYxnjC,MACjCknC,EAAOlnC,MAAQmrpC,CACjB,CAEA,OAAOjknC,CACT,EAEA2jnC,EAAkBz/oC,KAAO,gBACzBy/oC,EAAkBprnB,cAAgB,CAEhCj7hB,EAAG,EACHosH,iBAAkB,OAClBlzF,KAAM,KACNC,IAAK,KACL+gE,MAAO,MACPC,OAAQ,KACR0z5B,OAAQ,aACRgpI,UAAW,GACX+vB,QAAS,EACThmwB,WAAW,EACXimwB,iBAAkB,GAClBnrpC,MAAO,CACL4hV,MAAM,EACNtkT,SAAU,QACV8lN,SAAU,IAEZsx5B,UAAW,CACT9yzB,MAAM,EACNx+F,SAAU,IAEZy/B,OAAQ,GACRuo4B,UAAW,UACXt6a,UAAW,CACT5knB,MAAO,UACPqe,QAAS,GACTwp/B,UAAW,IAEbx0J,SAAU,CACRv/9B,MAAO,CACL4hV,MAAM,GAERkvZ,UAAW,CACTvmmB,QAAS,KAGb4qI,OAAQ,CACN+tuB,UAAW,CACTjsoB,YAAa,YAGjBsgpB,gBAAiB,SACjBF,kBAAmB,KAEdszJ,CACT,CA7LA,CA6LEruY,IAEF,YCpMe,SAAS+uY,GAAappL,EAASr07B,GAC5Cq07B,EAAQq/B,iBAAiB,UAAU,SAAU3f,GAC3C,IAAIw5I,EAAYx5I,EAAY7/+B,IAAI,aAC5BoppC,EAAUvpK,EAAY7/+B,IAAI,WAC1BisnC,EAqBR,SAAqBpsI,EAAa/z8B,GAChC,OAAO,GAAqB+z8B,EAAY8S,qBAAsB,CAC5D/29B,MAAOkQ,EAAIk8L,WACXnsM,OAAQiQ,EAAI+rI,aAEhB,CA1BqB,CAAYgo0B,EAAa/z8B,GAC1C+z8B,EAAYosI,WAAaA,EACzB,IAAIrwlC,EAAQqwlC,EAAWrwlC,MACnBC,EAASowlC,EAAWpwlC,OACpByv9B,EAAQzL,EAAY6kJ,WACpBz34B,EAAQq+vB,EAAMr+vB,MACdi5wB,EAAQ5a,EAAM4a,OAgCtB,SAA2Bj5wB,GACzB,EAAYA,GAAO,SAAU/mK,GAC3B,IAAI82C,EAASrxB,GAAIzlB,EAAKiqjC,SAAUqZ,IAC5BvshC,EAAStxB,GAAIzlB,EAAKujjC,QAAS+f,IAC3BC,EAAevjkC,EAAK6yC,YAAc,EAClC/6H,EAAQ0B,KAAK8K,IAAIwyH,EAAQC,EAAQwshC,GACrCvjkC,EAAKq/9B,UAAU,CACbvnjC,MAAOA,IACN,EACL,GACF,CAzCI0rpC,CAAkBz85B,GAqBtB,SAAsBA,EAAOi5wB,EAAOmzH,EAAW+vB,EAASxtnC,EAAOC,EAAQuoR,EAAYissB,EAAQi5J,IA6B3F,SAA6Br85B,EAAOi5wB,EAAOmzH,EAAWz9lC,EAAOC,EAAQw09B,EAAQi5J,GAW3E,IARA,IAAIK,EAAc,GAEdC,EAAc,GAEdC,EAAgB,GAChBC,EAAiB,GACjBhppC,EAAI,EAECrD,EAAI,EAAGA,EAAIyogC,EAAMhpgC,OAAQO,IAChCkspC,EAAYlspC,GAAK,EAGnB,IAASA,EAAI,EAAGA,EAAIwvP,EAAM/vP,OAAQO,IAChCmspC,EAAYnspC,GAAKwvP,EAAMxvP,GAAGgsoC,QAAQvsoC,OAEX,IAAnB0spC,EAAYnspC,IACdospC,EAAcnrpC,KAAKuuP,EAAMxvP,IAQ7B,IAJA,IAAIsspC,GAAgB,EAIbF,EAAc3spC,QAAQ,CAC3B,IAAK,IAAIy6W,EAAM,EAAGA,EAAMkyyB,EAAc3spC,OAAQy6W,IAAO,CACnD,IAAIzxR,EAAO2jkC,EAAclyyB,GACrB15T,EAAOioC,EAAK6pjC,UAAU1joC,KAAKqggC,eAAexm7B,EAAKg8E,WAC/C8n/B,EAA4B,MAAd/rmC,EAAKm2F,OAAiBn2F,EAAKm2F,OAAS,EAElD41gC,GAAe/rmC,EAAKm2F,MAAQ21gC,IAC9BA,EAAe9rmC,EAAKm2F,OAGtBluD,EAAKq/9B,UAAU,CACbnx6B,MAAO41gC,EAAc/rmC,EAAKm2F,MAAQtzI,IACjC,GACQ,aAAXuv/B,EAAwBnq6B,EAAKq/9B,UAAU,CACrCr06B,GAAImo/B,IACH,GAAQnziC,EAAKq/9B,UAAU,CACxBl06B,GAAIgo/B,IACH,GAEH,IAAK,IAAI4wB,EAAU,EAAGA,EAAU/jkC,EAAKiqjC,SAASjzoC,OAAQ+spC,IAAW,CAC/D,IAAIvlzB,EAAOx+Q,EAAKiqjC,SAAS8Z,GAEzBN,EADgBzjJ,EAAM7ogC,QAAQqnW,IACL,EACzB,IAAIwsxB,EAAaxsxB,EAAK0mxB,MAGW,KAA3Bw+B,EAFU385B,EAAM5vP,QAAQ6znC,KAEQ44B,EAAezspC,QAAQ6znC,GAAc,GACzE44B,EAAeprpC,KAAKwynC,EAExB,CACF,GAEEpwnC,EACF+opC,EAAgBC,EAChBA,EAAiB,EACnB,CAEA,IAASrspC,EAAI,EAAGA,EAAIkspC,EAAYzspC,OAAQO,IACtC,GAAuB,IAAnBkspC,EAAYlspC,GACd,MAAM,IAAI4mB,MAAM,iDAIpB,IAAIw8E,EAAWkpjC,EAAejppC,EAAI,EAAIippC,EAAejppC,EAAI,EAErDwopC,GAA2B,SAAdA,GAanB,SAAiCr85B,EAAOq85B,EAAWj5J,EAAQxv5B,GACzD,GAAkB,UAAdyojC,EAAuB,CAKzB,IAJA,IAAIY,EAAiB,GACjBC,EAAcl95B,EACdqs4B,EAAa,EAEV6wB,EAAYjtpC,QAAQ,CACzB,IAAK,IAAIO,EAAI,EAAGA,EAAI0spC,EAAYjtpC,OAAQO,IAAK,CAC3C,IAAIyoF,EAAOikkC,EAAY1spC,GACvByoF,EAAKq/9B,UAAU,CACb6kG,aAAc9wB,IACb,GAEH,IAAK,IAAIr4nC,EAAI,EAAGA,EAAIilF,EAAKujjC,QAAQvsoC,OAAQ+D,IAAK,CAC5C,IAAIyjW,EAAOx+Q,EAAKujjC,QAAQxooC,GAEpBippC,EAAe7spC,QAAQqnW,EAAKymxB,OAAS,GACvC++B,EAAexrpC,KAAKgmW,EAAKymxB,MAE7B,CACF,CAEAg/B,EAAcD,EACdA,EAAiB,KACf5wB,CACJ,CAEA,EAAYrs4B,GAAO,SAAU/mK,GACtBmkkC,GAAYnkkC,IACfA,EAAKq/9B,UAAU,CACbnx6B,MAAO10I,KAAK8K,IAAI,EAAGq2F,EAAW3a,EAAKs/9B,YAAY4kG,gBAC9C,EAEP,GACF,KAAyB,YAAdd,GAab,SAAwBr85B,EAAOpsJ,GAC7B,EAAYosJ,GAAO,SAAU/mK,GACtBmkkC,GAAYnkkC,IAAUA,EAAKiqjC,SAASjzoC,QACvCgpF,EAAKq/9B,UAAU,CACbnx6B,MAAOvzC,IACN,EAEP,GACF,CApBIypjC,CAAer95B,EAAOpsJ,EAE1B,CAjDI0pjC,CAAwBt95B,EAAOq85B,EAAWj5J,EAAQxv5B,GA4EtD,SAA2BosJ,EAAOwhsB,EAAI4hE,GACpC,EAAYpjwB,GAAO,SAAU/mK,GAC3B,IAAI4ikC,EAAY5ikC,EAAKs/9B,YAAYpx6B,MAAQq6yB,EAC9B,aAAX4hE,EAAwBnq6B,EAAKq/9B,UAAU,CACrC1ljC,EAAGippC,IACF,GAAQ5ikC,EAAKq/9B,UAAU,CACxBzkjC,EAAGgopC,IACF,EACL,GACF,CAjFE0B,CAAkBv95B,EADE,aAAXojwB,GAAyBx09B,EAASw9lC,GAAax4hC,GAAYjlE,EAAQy9lC,GAAax4hC,EAC5Dwv5B,EAC/B,EA1GEo6J,CAAoBx95B,EAAOi5wB,EAAOmzH,EAAWz9lC,EAAOC,EAAQw09B,EAAQi5J,GAuMtE,SAA2Br85B,EAAOi5wB,EAAOrq+B,EAAQD,EAAOwtnC,EAAShl2B,EAAYissB,GAC3E,IAAIq6J,EAeN,SAA+Bz95B,EAAOojwB,GACpC,IAAIq6J,EAAiB,GACjBC,EAAqB,aAAXt6J,EAAwB,IAAM,IACxCu6J,EAAcv1lB,GAAUpoU,GAAO,SAAU/mK,GAC3C,OAAOA,EAAKs/9B,YAAYmlG,EAC1B,IAOA,OANAC,EAAYz6oC,KAAKi5B,MAAK,SAAUvrC,EAAGsC,GACjC,OAAOtC,EAAIsC,CACb,IACA,EAAYyqpC,EAAYz6oC,MAAM,SAAUuR,GACtCgpoC,EAAehspC,KAAKkspC,EAAY/oL,QAAQ7h+B,IAAI0hB,GAC9C,IACOgpoC,CACT,CA5BuBG,CAAsB595B,EAAOojwB,IAkCpD,SAA6Bq6J,EAAgBxkJ,EAAOrq+B,EAAQD,EAAOwtnC,EAAS/4J,GAC1E,IAAIy6J,EAAQlulC,IACZ,EAAY8tlC,GAAgB,SAAUz95B,GACpC,IAAI/wP,EAAI+wP,EAAM/vP,OACVyuG,EAAM,EACV,EAAYshJ,GAAO,SAAU/mK,GAC3BylB,GAAOzlB,EAAKs/9B,YAAYxnjC,KAC1B,IACA,IAAI0w7B,EAAgB,aAAX2hE,GAAyBz09B,GAAS1/B,EAAI,GAAKktpC,GAAWz9iC,GAAO9vE,GAAU3/B,EAAI,GAAKktpC,GAAWz9iC,EAEhG+i1B,EAAKo8N,IACPA,EAAQp8N,EAEZ,IACA,EAAYg8N,GAAgB,SAAUz95B,GACpC,EAAYA,GAAO,SAAU/mK,EAAMzoF,GACjC,IAAIstpC,EAAS7kkC,EAAKs/9B,YAAYxnjC,MAAQ8spC,EAEvB,aAAXz6J,GACFnq6B,EAAKq/9B,UAAU,CACbzkjC,EAAGrD,IACF,GACHyoF,EAAKq/9B,UAAU,CACbl06B,GAAI05gC,IACH,KAEH7kkC,EAAKq/9B,UAAU,CACb1ljC,EAAGpC,IACF,GACHyoF,EAAKq/9B,UAAU,CACbr06B,GAAI65gC,IACH,GAEP,GACF,IACA,EAAY7kJ,GAAO,SAAUxhqB,GAC3B,IAAIsmzB,GAAUtmzB,EAAK3rO,WAAa+xhC,EAChCpmzB,EAAK6gtB,UAAU,CACbr06B,GAAI85gC,IACH,EACL,GACF,EA1EEC,CAAoBP,EAAgBxkJ,EAAOrq+B,EAAQD,EAAOwtnC,EAAS/4J,GACnE66J,GAAkBR,EAAgBtB,EAASvtnC,EAAQD,EAAOy09B,GAE1D,IAAK,IAAInuuB,EAAQ,EAAGkiC,EAAa,EAAGA,IAIlC+m2B,GAAiBT,EADjBxo4B,GAAS,IAC+BmuuB,GACxC66J,GAAkBR,EAAgBtB,EAASvtnC,EAAQD,EAAOy09B,GAC1D+6J,GAAiBV,EAAgBxo4B,EAAOmuuB,GACxC66J,GAAkBR,EAAgBtB,EAASvtnC,EAAQD,EAAOy09B,EAE9D,CApNEg7J,CAAkBp+5B,EAAOi5wB,EAAOrq+B,EAAQD,EAAOwtnC,EAAShl2B,EAAYissB,GAictE,SAA2BpjwB,EAAOojwB,GAChC,IAAIs6J,EAAqB,aAAXt6J,EAAwB,IAAM,IAC5C,EAAYpjwB,GAAO,SAAU/mK,GAC3BA,EAAKiqjC,SAAS/mmC,MAAK,SAAUvrC,EAAGsC,GAC9B,OAAOtC,EAAEutnC,MAAM5lE,YAAYmlG,GAAWxqpC,EAAEirnC,MAAM5lE,YAAYmlG,EAC5D,IACAzkkC,EAAKujjC,QAAQrgmC,MAAK,SAAUvrC,EAAGsC,GAC7B,OAAOtC,EAAEstnC,MAAM3lE,YAAYmlG,GAAWxqpC,EAAEgrnC,MAAM3lE,YAAYmlG,EAC5D,GACF,IACA,EAAY195B,GAAO,SAAU/mK,GAC3B,IAAIiuQ,EAAK,EACLyoa,EAAK,EACT,EAAY12qB,EAAKiqjC,UAAU,SAAUzryB,GACnCA,EAAK6gtB,UAAU,CACbpxtB,GAAIA,IACH,GACHA,GAAMuQ,EAAK8gtB,YAAYt06B,EACzB,IACA,EAAYhrD,EAAKujjC,SAAS,SAAU/kyB,GAClCA,EAAK6gtB,UAAU,CACb3oT,GAAIA,IACH,GACHA,GAAMl4Z,EAAK8gtB,YAAYt06B,EACzB,GACF,GACF,CA1dEo6gC,CAAkBr+5B,EAAOojwB,EAC3B,CAlBIk7J,CAAat+5B,EAAOi5wB,EAAOmzH,EAAW+vB,EAASxtnC,EAAOC,EAHZ,IAHtB,GAAcoxN,GAAO,SAAU/mK,GACjD,OAAkC,IAA3BA,EAAKs/9B,YAAYxnjC,KAC1B,IAC+Bd,OAAe,EAAI2i/B,EAAY7/+B,IAAI,oBACrD6/+B,EAAY7/+B,IAAI,UACb6/+B,EAAY7/+B,IAAI,aAElC,GACF,CAyHA,SAASqqpC,GAAYnkkC,GACnB,IAAIjoC,EAAOioC,EAAK6pjC,UAAU1joC,KAAKqggC,eAAexm7B,EAAKg8E,WACnD,OAAqB,MAAdjkH,EAAKm2F,OAAiBn2F,EAAKm2F,OAAS,CAC7C,CA0KA,SAAS82gC,GAAkBR,EAAgBtB,EAASvtnC,EAAQD,EAAOy09B,GACjE,IAAIs6J,EAAqB,aAAXt6J,EAAwB,IAAM,IAC5C,EAAYq6J,GAAgB,SAAUz95B,GAIpC,IAAI893B,EACA7kiC,EACAgrD,EALJ+7G,EAAM7jN,MAAK,SAAUvrC,EAAGsC,GACtB,OAAOtC,EAAE2njC,YAAYmlG,GAAWxqpC,EAAEqljC,YAAYmlG,EAChD,IAQA,IAJA,IAAIr89B,EAAK,EACLpyL,EAAI+wP,EAAM/vP,OACVsupC,EAAwB,aAAXn7J,EAAwB,KAAO,KAEvC5y/B,EAAI,EAAGA,EAAIvB,EAAGuB,KAErByzI,EAAKo9C,GADLpoG,EAAO+mK,EAAMxvP,IACE+njC,YAAYmlG,IAElB,IACP5/B,EAAQ7kiC,EAAKs/9B,YAAYmlG,GAAWz5gC,EACzB,aAAXm/2B,EAAwBnq6B,EAAKq/9B,UAAU,CACrCzkjC,EAAGiqnC,IACF,GAAQ7kiC,EAAKq/9B,UAAU,CACxB1ljC,EAAGkrnC,IACF,IAGLz87B,EAAKpoG,EAAKs/9B,YAAYmlG,GAAWzkkC,EAAKs/9B,YAAYgmG,GAAcpC,EAOlE,IAFAl4gC,EAAKo9C,EAAK869B,GAFiB,aAAX/4J,EAAwBz09B,EAAQC,IAIvC,EASP,IARAkvlC,EAAQ7kiC,EAAKs/9B,YAAYmlG,GAAWz5gC,EACzB,aAAXm/2B,EAAwBnq6B,EAAKq/9B,UAAU,CACrCzkjC,EAAGiqnC,IACF,GAAQ7kiC,EAAKq/9B,UAAU,CACxB1ljC,EAAGkrnC,IACF,GACHz87B,EAAKy87B,EAEIttnC,EAAIvB,EAAI,EAAGuB,GAAK,IAAKA,GAE5ByzI,GADAhrD,EAAO+mK,EAAMxvP,IACH+njC,YAAYmlG,GAAWzkkC,EAAKs/9B,YAAYgmG,GAAcpC,EAAU969B,GAEjE,IACPy87B,EAAQ7kiC,EAAKs/9B,YAAYmlG,GAAWz5gC,EACzB,aAAXm/2B,EAAwBnq6B,EAAKq/9B,UAAU,CACrCzkjC,EAAGiqnC,IACF,GAAQ7kiC,EAAKq/9B,UAAU,CACxB1ljC,EAAGkrnC,IACF,IAGLz87B,EAAKpoG,EAAKs/9B,YAAYmlG,EAG5B,GACF,CAQA,SAASQ,GAAiBT,EAAgBxo4B,EAAOmuuB,GAC/C,EAAYq6J,EAAe9rpC,QAAQu4D,WAAW,SAAU81L,GACtD,EAAYA,GAAO,SAAU/mK,GAC3B,GAAIA,EAAKiqjC,SAASjzoC,OAAQ,CACxB,IAAI2C,EAAI8rG,GAAIzlB,EAAKiqjC,SAAUsb,GAAgBp7J,GAAU1k5B,GAAIzlB,EAAKiqjC,SAAUqZ,IAExE,GAAIrgnC,MAAMtpC,GAAI,CACZ,IAAI67H,EAAMx1C,EAAKiqjC,SAASjzoC,OACxB2C,EAAI67H,EAAM/vB,GAAIzlB,EAAKiqjC,SAAUub,GAAcr7J,GAAU303B,EAAM,CAC7D,CAEA,GAAe,aAAX203B,EAAuB,CACzB,IAAI06H,EAAQ7kiC,EAAKs/9B,YAAY1kjC,GAAKjB,EAAI,GAAOqmF,EAAMmq6B,IAAWnuuB,EAC9Dh8L,EAAKq/9B,UAAU,CACbzkjC,EAAGiqnC,IACF,EACL,KAAO,CACL,IAAI4gC,EAAQzlkC,EAAKs/9B,YAAY3ljC,GAAKA,EAAI,GAAOqmF,EAAMmq6B,IAAWnuuB,EAC9Dh8L,EAAKq/9B,UAAU,CACb1ljC,EAAG8rpC,IACF,EACL,CACF,CACF,GACF,GACF,CAEA,SAASF,GAAe/mzB,EAAM2rpB,GAC5B,OAAO,GAAO3rpB,EAAK0mxB,MAAO/6H,GAAU3rpB,EAAK3rO,UAC3C,CAEA,SAAS2yhC,GAAahnzB,EAAM2rpB,GAC1B,OAAO,GAAO3rpB,EAAK0mxB,MAAO/6H,EAC5B,CAEA,SAASu7J,GAAelnzB,EAAM2rpB,GAC5B,OAAO,GAAO3rpB,EAAKymxB,MAAO96H,GAAU3rpB,EAAK3rO,UAC3C,CAEA,SAAS8yhC,GAAannzB,EAAM2rpB,GAC1B,OAAO,GAAO3rpB,EAAKymxB,MAAO96H,EAC5B,CAEA,SAAS,GAAOnq6B,EAAMmq6B,GACpB,MAAkB,aAAXA,EAAwBnq6B,EAAKs/9B,YAAY1kjC,EAAIolF,EAAKs/9B,YAAYn06B,GAAK,EAAInrD,EAAKs/9B,YAAY3ljC,EAAIqmF,EAAKs/9B,YAAYt06B,GAAK,CAC3H,CAEA,SAASs4gC,GAAa9kzB,GACpB,OAAOA,EAAK3rO,UACd,CAEA,SAASptB,GAAI50D,EAAOwnB,EAAI8x7B,GAKtB,IAJA,IAAI1k5B,EAAM,EACN+vB,EAAM3kF,EAAM75C,OACZO,GAAK,IAEAA,EAAIi+H,GAAK,CAChB,IAAI19H,GAASugE,EAAGxnB,EAAMt5C,GAAI4y/B,GAErBln9B,MAAMnrC,KACT2tG,GAAO3tG,EAEX,CAEA,OAAO2tG,CACT,CAMA,SAASy/iC,GAAiBV,EAAgBxo4B,EAAOmuuB,GAC/C,EAAYq6J,GAAgB,SAAUz95B,GACpC,EAAYA,GAAO,SAAU/mK,GAC3B,GAAIA,EAAKujjC,QAAQvsoC,OAAQ,CACvB,IAAI2C,EAAI8rG,GAAIzlB,EAAKujjC,QAASmiB,GAAgBv7J,GAAU1k5B,GAAIzlB,EAAKujjC,QAAS+f,IAEtE,GAAIrgnC,MAAMtpC,GAAI,CACZ,IAAI67H,EAAMx1C,EAAKujjC,QAAQvsoC,OACvB2C,EAAI67H,EAAM/vB,GAAIzlB,EAAKujjC,QAASoiB,GAAcx7J,GAAU303B,EAAM,CAC5D,CAEA,GAAe,aAAX203B,EAAuB,CACzB,IAAI06H,EAAQ7kiC,EAAKs/9B,YAAY1kjC,GAAKjB,EAAI,GAAOqmF,EAAMmq6B,IAAWnuuB,EAC9Dh8L,EAAKq/9B,UAAU,CACbzkjC,EAAGiqnC,IACF,EACL,KAAO,CACL,IAAI4gC,EAAQzlkC,EAAKs/9B,YAAY3ljC,GAAKA,EAAI,GAAOqmF,EAAMmq6B,IAAWnuuB,EAC9Dh8L,EAAKq/9B,UAAU,CACb1ljC,EAAG8rpC,IACF,EACL,CACF,CACF,GACF,GACF,CC9de,SAASG,GAAa3rL,GACnCA,EAAQq/B,iBAAiB,UAAU,SAAU3f,GAC3C,IAAIyL,EAAQzL,EAAY6kJ,WACpBz34B,EAAQq+vB,EAAMr+vB,MACdi5wB,EAAQ5a,EAAM4a,MAElB,GAAIj5wB,EAAM/vP,OAAQ,CAChB,IAAI6upC,EAAanvlC,IACbovlC,GAAa,IACjB,EAAY/+5B,GAAO,SAAU/mK,GAC3B,IAAIijkC,EAAYjjkC,EAAKs/9B,YAAYxnjC,MAE7BmrpC,EAAY4C,IACdA,EAAa5C,GAGXA,EAAY6C,IACdA,EAAa7C,EAEjB,IACA,EAAYl85B,GAAO,SAAU/mK,GAC3B,IAMI+lkC,EANU,IAAI,GAAc,CAC9B7ipC,KAAM,QACNuznC,cAAe,SACf1hK,WAAY,CAAC8wL,EAAYC,GACzBpujC,OAAQii5B,EAAY7/+B,IAAI,WAEI89nC,iBAAiB53iC,EAAKs/9B,YAAYxnjC,OAC5DkupC,EAAchmkC,EAAKuuG,WAAWz0L,IAAI,CAAC,YAAa,UAEjC,MAAfkspC,GACFhmkC,EAAKgy8B,UAAU,QAASg0H,GACxBhmkC,EAAKgy8B,UAAU,QAAS,CACtBj+5B,KAAMiyhC,MAGRhmkC,EAAKgy8B,UAAU,QAAS+zH,GACxB/lkC,EAAKgy8B,UAAU,QAAS,CACtBj+5B,KAAMgyhC,IAGZ,GACF,CAEI/lJ,EAAMhpgC,QACR,EAAYgpgC,GAAO,SAAUxhqB,GAC3B,IAAIynzB,EAAYznzB,EAAKjwK,WAAWz0L,IAAI,aACpC0kW,EAAKwzrB,UAAU,QAASi0H,EAC1B,GAEJ,GACF,CChDA,IAAIC,GAEJ,WACE,SAASA,IAAyB,CA+FlC,OAzFAA,EAAsB7vpC,UAAUyohC,eAAiB,SAAUtq9B,EAAQyl6B,GAIjE,IAAIg3C,EAKAk1I,EAJArjG,EAAa7oF,EAAQnpoB,aAAa,QAASn6V,KAAKmD,IAAI,eACpDipjC,EAAa9oF,EAAQnpoB,aAAa,QAASn6V,KAAKmD,IAAI,eACpDsspC,EAAYtjG,EAAWhpjC,IAAI,QAC3BuspC,EAAYtjG,EAAWjpjC,IAAI,QAIb,aAAdsspC,GACF5xlC,EAAOqjE,OAAS,aAChBo54B,EAAc6xC,EAAWxxC,iBACzB60I,GAAa,GACU,aAAdE,GACT7xlC,EAAOqjE,OAAS,WAChBo54B,EAAc8xC,EAAWzxC,iBACzB60I,GAAa,GAEb3xlC,EAAOqjE,OAASrjE,EAAOqjE,QAAU,aAGnC,IAAIyuhC,EAAY,CAAC,IAAK,KAClBC,EAAqC,eAAlB/xlC,EAAOqjE,OAA0B,EAAI,EACxD0n9B,EAAc5olC,KAAK6vpC,aAAeF,EAAUC,GAC5C/jD,EAAe8jD,EAAU,EAAIC,GAC7B/O,EAAa,CAAC10F,EAAYC,GAC1B0jG,EAAejP,EAAW+O,GAAkBzspC,IAAI,QAChD4spC,EAAgBlP,EAAW,EAAI+O,GAAkBzspC,IAAI,QACrDqM,EAAOquD,EAAOruD,KAGlB,GAAIA,GAAQggpC,EAAY,CACtB,IAAIQ,EAAkB,GACtB,EAAYxgpC,GAAM,SAAU4xC,EAAMpkC,GAChC,IAAIizoC,EAEA,GAAe7umC,IACjB6umC,EAAU7umC,EAAKr/C,QAEfq/C,EAAKv2B,QAAQ7N,IACJ,GAAeokC,EAAKjgD,SAC7B8upC,EAAU,EAAc,CAAC,EAAG7umC,IACpBjgD,MAAQ8upC,EAAQ9upC,MAAMY,QAE9Bq/C,EAAKjgD,MAAM0pB,QAAQ7N,IAEnBizoC,EAAU7umC,EAGZ4umC,EAAgBnupC,KAAKoupC,EACvB,IACApylC,EAAOruD,KAAOwgpC,CAChB,CAEA,IAAIE,EAAyBlwpC,KAAKkwpC,uBAC9Bn2J,EAAkB,CAAC,CACrBrv/B,KAAMk+kC,EACNr8kC,KAAM+0iC,GAAuBwuG,GAC7Bx1I,YAAaA,EACbiN,UAAW,CACTlp4B,SAAS,EACTg92B,SAAU,GAEZF,QAAS,CAAC,SACT,CACDzw/B,KAAMmhmC,EACNt/lC,KAAM+0iC,GAAuByuG,GAC7B50J,QAAS+0J,EAAuBnupC,UAElC,OAAOo/lC,GAAuBnhmC,KAAM,CAClC+5/B,gBAAiBA,EACjBgwD,gBAAiBmmG,EAAuB7vpC,OAAS,EACjDgqjC,gBAAiB,GAAavwD,GAAiCC,EAAiB/5/B,OAEpF,EAOAuvpC,EAAsB7vpC,UAAUwphC,YAAc,WAC5C,IAAIvxrB,EAAM33V,KAAK6vpC,aACf,OAAO7vpC,KAAKsj+B,QAAQnpoB,aAAaxC,EAAM,OAAQ33V,KAAKmD,IAAIw0V,EAAM,cAAcltJ,IAC9E,EAEO8k9B,CACT,CAjGA,GCFIY,GAEJ,SAAUznyB,GAGR,SAASynyB,IACP,IAAIzjmC,EAAmB,OAAXg8T,GAAmBA,EAAOnoX,MAAMP,KAAMI,YAAcJ,KA6BhE,OA3BA0sD,EAAMngD,KAAO4jpC,EAAmB5jpC,KAUhCmgD,EAAMwjmC,uBAAyB,CAAC,CAC9BxlpC,KAAM,MACNu8iC,gBAAgB,GACf,CACDv8iC,KAAM,KACNu8iC,gBAAgB,GACf,CACDv8iC,KAAM,SACNu8iC,gBAAgB,GACf,CACDv8iC,KAAM,KACNu8iC,gBAAgB,GACf,CACDv8iC,KAAM,MACNu8iC,gBAAgB,IAElBv6/B,EAAMw59B,eAAiB,SAChBx59B,CACT,CA2BA,OA5DAkgX,EAAUujvB,EAAoBznyB,GAmC9BynyB,EAAmB5jpC,KAAO,iBAC1B4jpC,EAAmBl0/B,aAAe,CAAC,QAAS,QAAS,QACrDk0/B,EAAmBvvnB,cAAgB,CAEjCj7hB,EAAG,EACHosH,iBAAkB,cAClBuy9B,iBAAiB,EACjBpj9B,OAAQ,KACRkvhC,SAAU,CAAC,EAAG,IACd7rK,UAAW,CACTh33B,MAAO,OACPiq3B,YAAa,GAEf5W,SAAU,CACR9+3B,OAAO,EACPyi5B,UAAW,CACT/M,YAAa,EACbxyN,WAAY,EACZF,cAAe,EACfC,cAAe,EACfl0pB,YAAa,oBAGjB6n4B,kBAAmB,KAEdy3J,CACT,CA9DA,CA8DExyY,IAEFksL,EAAMsmN,GAAoBZ,IAAuB,GACjD,YChEA,IAAIc,GAEJ,SAAU3nyB,GAGR,SAAS2nyB,IACP,IAAI3jmC,EAAmB,OAAXg8T,GAAmBA,EAAOnoX,MAAMP,KAAMI,YAAcJ,KAGhE,OADA0sD,EAAMngD,KAAO8jpC,EAAY9jpC,KAClBmgD,CACT,CAwDA,OA/DAkgX,EAAUyjvB,EAAa3nyB,GASvB2nyB,EAAY3wpC,UAAU4uH,OAAS,SAAU003B,EAAa1f,EAASr07B,GAC7D,IAAIz/B,EAAOwz+B,EAAYx+2B,UACnB42L,EAAQp7T,KAAKo7T,MACbw3P,EAAU5yjB,KAAKykJ,MAGdzkJ,KAAKykJ,OACR22K,EAAMvtE,YAGR,IAAIyi6B,EAAyC,eAA9BttK,EAAY7/+B,IAAI,UAA6B,EAAI,EAChEqM,EAAK+4hB,KAAKqqB,GAASztiB,KAAI,SAAUg7hC,GAC/B,GAAI3wiC,EAAKkgjB,SAASywf,GAAS,CACzB,IACI2nC,EAAWyoE,GADE/gpC,EAAKo5iC,cAAczI,GACO3wiC,EAAM2wiC,EAAQmwG,GAAU,GACnE9gpC,EAAKu5iC,iBAAiB5I,EAAQ2nC,GAC9B1sxB,EAAMj2S,IAAI2ikC,EACZ,CACF,IAAGv5gC,QAAO,SAAU4x+B,EAAQ4nC,GAC1B,IAAID,EAAWl1hB,EAAQ8vb,iBAAiBqlG,GAExC,GAAKv4kC,EAAKkgjB,SAASywf,GAAnB,CAKA,IAAI+gD,EAAa1xlC,EAAKo5iC,cAAczI,GAE/B2nC,GAGHlhG,GAAakhG,GACb0oE,GAAoBtvD,EAAYpZ,EAAUt4kC,EAAM2wiC,IAHhD2nC,EAAWyoE,GAAgBrvD,EAAY1xlC,EAAM2wiC,EAAQmwG,GAMvDl11B,EAAMj2S,IAAI2ikC,GACVt4kC,EAAKu5iC,iBAAiB5I,EAAQ2nC,EAZ9B,MAFE1sxB,EAAMvoS,OAAOi1jC,EAejB,IAAGj1jC,QAAO,SAAUk1jC,GAClB,IAAIlu8B,EAAK+4a,EAAQ8vb,iBAAiBqlG,GAClClu8B,GAAMuhL,EAAMvoS,OAAOgnH,EACrB,IAAGkoQ,UACH/hZ,KAAKykJ,MAAQj1I,CACf,EAEA6gpC,EAAY3wpC,UAAUmzB,OAAS,SAAUyw8B,GACvC,IAAIloqB,EAAQp7T,KAAKo7T,MACb5rT,EAAOxP,KAAKykJ,MAChBzkJ,KAAKykJ,MAAQ,KACbj1I,GAAQA,EAAKq0+B,mBAAkB,SAAUhq2B,GACvCA,GAAMuhL,EAAMvoS,OAAOgnH,EACrB,GACF,EAEAw2gC,EAAY9jpC,KAAO,UACZ8jpC,CACT,CAjEA,CAiEErtW,IAEEytW,GAGF,WAAyB,EAKvBC,GAEJ,SAAUhoyB,GAGR,SAASgoyB,EAAQr0mC,GACf,IAAIqQ,EAAQg8T,EAAO9oX,KAAKI,KAAMq8C,IAASr8C,KAGvC,OADA0sD,EAAMngD,KAAO,iBACNmgD,CACT,CAyBA,OAhCAkgX,EAAU8jvB,EAAShoyB,GASnBgoyB,EAAQhxpC,UAAUk0+B,gBAAkB,WAClC,OAAO,IAAI68K,EACb,EAEAC,EAAQhxpC,UAAUg0+B,UAAY,SAAUp8vB,EAAKhV,GAC3C,IAAIkm7B,EAAOlm7B,EAAMh3L,OACb1qC,EAAI,EAIR,IAHA02O,EAAIyvhB,OAAOyhZ,EAAK5npC,GAAG,GAAI4npC,EAAK5npC,GAAG,IAC/BA,IAEOA,EAAI,EAAGA,IACZ02O,EAAI0vhB,OAAOwhZ,EAAK5npC,GAAG,GAAI4npC,EAAK5npC,GAAG,IAKjC,IAFA02O,EAAI2vhB,YAEGrmwB,EAAI4npC,EAAKnopC,OAAQO,IACtB02O,EAAIyvhB,OAAOyhZ,EAAK5npC,GAAG,GAAI4npC,EAAK5npC,GAAG,IAC/BA,IACA02O,EAAI0vhB,OAAOwhZ,EAAK5npC,GAAG,GAAI4npC,EAAK5npC,GAAG,GAEnC,EAEO8vpC,CACT,CAlCA,CAkCE,IAEF,SAASH,GAAgBrvD,EAAY1xlC,EAAM61J,EAAWir/B,EAAU76J,GAC9D,IAAI+yJ,EAAOtnD,EAAWsnD,KAClB3ugC,EAAK,IAAI62gC,GAAQ,CACnBpu7B,MAAO,CACLh3L,OAAQmq9B,EAASk7J,GAAUnI,EAAM8H,EAAUpvD,GAAcsnD,KAI7D,OADAgI,GAAoBtvD,EAAYrn9B,EAAIrqI,EAAM61J,EAAWow1B,GAC9C572B,CACT,CAEA,SAAS22gC,GAAoBtvD,EAAYrn9B,EAAIrqI,EAAM61J,EAAWow1B,GAC5D,IAAIzS,EAAcxz+B,EAAKy0iC,WAEvB9qB,EADmB,EAAQ1jC,EAAS,YAAc,gBACrC572B,EAAI,CACfyoF,MAAO,CACLh3L,OAAQ41jC,EAAWsnD,OAEpBxlK,EAAa390B,GAChBxrB,EAAGuwQ,SAAS56Y,EAAK+ggC,cAAclr2B,EAAW,UAC1CxrB,EAAGxlI,MAAM8+9B,eAAgB,EACzBt51B,EAAGkjD,GAAK,IACR,IAAI2nzB,EAAYl1+B,EAAKqhgC,aAAaxr2B,GAC9Bih7B,EAAgB5hG,EAAU9szB,SAAS,YACvC6szB,GAAyB5q2B,EAAI6q2B,GAC7BP,GAAoBtq2B,EAAIys8B,EAAcnjlC,IAAI,SAAUmjlC,EAAcnjlC,IAAI,aAAcmjlC,EAAcnjlC,IAAI,YACxG,CAEA,SAASwtpC,GAAUrlnC,EAAQqsT,EAAKupwB,GAC9B,OAAO,EAAW51jC,GAAQ,SAAU6pG,GAGlC,OAFAA,EAAQA,EAAMpzI,SACR41V,GAAOupwB,EAAW0vD,aACjBz7gC,CACT,GACF,CAEA,YC7JA,IAAI,GAAO,EACI,SAAS07gC,GAAcvtL,GACpC,IAAIyqL,EAkBN,SAA2BzqL,GACzB,IAAI9/8B,EAAS,GACTstoC,EAAW,GAgBf,OAfAxtL,EAAQq/B,iBAAiB,WAAW,SAAU3f,GAC5C,IAAImxE,EAAWnxE,EAAYkmC,cACvBpuqB,EAAM,EAAeg2yB,EAAU38F,GAE/Br5sB,EAAM,IACRA,EAAMg2yB,EAASzwpC,OACfywpC,EAASh2yB,GAAOq5sB,EAChB3wiC,EAAOs3V,GAAO,CACZrwK,KAAM0p3B,EACNxoC,aAAc,KAIlBnogC,EAAOs3V,GAAK6wqB,aAAa9phC,KAAKmh/B,EAChC,IACOx/9B,CACT,CArCoButoC,CAAkBztL,GACpC,GAAKyqL,GAAa,SAAUr5T,GAC1B,IAAIi3L,EAAej3L,EAAUi3L,aAExBA,EAAatrhC,SAuCtB,SAAuBq01B,GACrB,IAMI2pE,EANA81J,EAAWz/N,EAAUjqpB,KACrBkh1B,EAAej3L,EAAUi3L,aACzBqlI,EAAcrlI,EAAatrhC,OAC3B4wpC,EAAev8T,EAAUu8T,aAAe,GACxCC,EAAgBx8T,EAAUw8T,cAAgB,GAC1CC,EAAY,GAGhB,GAAsB,aAAlBh9F,EAAS5njC,KACX8x5B,EAAY81J,EAASM,mBAChB,CACL,IAAI28F,EAAiB,EACrB,GAAKzlI,GAAc,SAAU3oC,GAC3BouK,EAAiBvupC,KAAK8K,IAAIyjpC,EAAgBpuK,EAAYx+2B,UAAUj7E,QAClE,IACA,IAAIghH,EAAS4p5B,EAAS3E,YACtBnxJ,EAAYx75B,KAAKmjH,IAAIukD,EAAO,GAAKA,EAAO,IAAM6m/B,CAChD,CAEA,GAAKzlI,GAAc,SAAU3oC,GAC3B,IAAIquK,EAAgBruK,EAAY7/+B,IAAI,YAE/B,GAAekupC,KAClBA,EAAgB,CAACA,EAAeA,IAGlCF,EAAUtvpC,KAAK,CAAC,GAAawvpC,EAAc,GAAIhzP,IAAc,EAAG,GAAagzP,EAAc,GAAIhzP,IAAc,GAC/G,IACA,IAAIz0T,EAA6B,GAAZy0T,EAAkB,EACnCizP,EAAS1njB,EAAiBonjB,EAAc,GACxCZ,GAAYxmjB,EAAiB0njB,GAAUN,EAAc,IAAMA,EAC3D3qmC,EAAO+pmC,EAAW,EAAIxmjB,EAAiB,EAC3C,GAAK+hb,GAAc,SAAU3oC,EAAalooB,GACxCo2yB,EAAcrvpC,KAAKwkD,GACnBA,GAAQirmC,EAASlB,EACjBa,EAAapvpC,KAAKgB,KAAKgL,IAAIhL,KAAK8K,IAAIyipC,EAAUe,EAAUr2yB,GAAK,IAAKq2yB,EAAUr2yB,GAAK,IACnF,GACF,CAzEIy2yB,CAAc78T,GACd,GAAKi3L,GAAc,SAAU3oC,EAAalooB,IA8E9C,SAA4BkooB,EAAa7g8B,EAAQiumC,GAC/C,IAAIltK,EAAWF,EAAYjx3B,iBACvBviH,EAAOwz+B,EAAYx+2B,UACnBgthC,EAAYpB,EAAW,EACvBqB,EAAwC,eAA9BzuK,EAAY7/+B,IAAI,UAA6B,EAAI,EAC3DuupC,EAAU,EAAID,EACd9B,EAAY,CAAC,IAAK,KAClBgC,EAAOnipC,EAAK42iC,aAAaupG,EAAU8B,IACnCG,EAAQpipC,EAAKs3gC,iBAAiB6oI,EAAU+B,IAE5C,KAAY,MAARC,GAAgBC,EAAMvxpC,OAAS,GAInC,IAAK,IAAIglK,EAAY,EAAGA,EAAY71J,EAAK+5C,QAAS87G,IAAa,CAC7D,IAAIws/B,EAAaripC,EAAKrM,IAAIwupC,EAAMts/B,GAC5Bys/B,EAASC,EAASF,EAAYD,EAAM,GAAIvs/B,GACxC2s/B,EAAOD,EAASF,EAAYD,EAAM,GAAIvs/B,GACtC4s/B,EAAOF,EAASF,EAAYD,EAAM,GAAIvs/B,GACtC6s/B,EAAOH,EAASF,EAAYD,EAAM,GAAIvs/B,GACtC8s/B,EAAOJ,EAASF,EAAYD,EAAM,GAAIvs/B,GACtCmj/B,EAAO,GACX4J,EAAW5J,EAAMyJ,GAAM,GACvBG,EAAW5J,EAAM0J,GAAM,GACvB1J,EAAK3mpC,KAAKmwpC,EAAMC,EAAME,EAAMD,GAC5BG,EAAW7J,EAAMwJ,GACjBK,EAAW7J,EAAM2J,GACjBE,EAAW7J,EAAMsJ,GACjBtipC,EAAKq5iC,cAAcxj5B,EAAW,CAC5Bur/B,aAAckB,EAAOJ,GACrBlJ,KAAMA,GAEV,CAEA,SAASuJ,EAASF,EAAYl6zB,EAAKtyL,GACjC,IAIIlwB,EAJAuoC,EAAMluK,EAAKrM,IAAIw0V,EAAKtyL,GACpBviK,EAAI,GAYR,OAXAA,EAAE2upC,GAAWI,EACb/upC,EAAE4upC,GAAWh0+B,EAGTpxI,MAAMulnC,IAAevlnC,MAAMoxI,GAC7BvoC,EAAQ,CAACymnB,IAAKA,MAEdzmnB,EAAQ+t2B,EAASy0E,YAAY70jC,IACvB2upC,IAAYtvmC,EAGbgzF,CACT,CAEA,SAASi9gC,EAAW5J,EAAMrzgC,EAAO3uG,GAC/B,IAAIswV,EAAS3hP,EAAMpzI,QACfg1X,EAAS5hP,EAAMpzI,QACnB+0X,EAAO26xB,IAAYD,EACnBz6xB,EAAO06xB,IAAYD,EACnBhrnC,EAAQginC,EAAK3mpC,KAAKi1X,EAAQC,GAAUyxxB,EAAK3mpC,KAAKk1X,EAAQD,EACxD,CAEA,SAASu7xB,EAAW7J,EAAMp5yB,GACxB,IAAIrxV,EAAOqxV,EAAUrtW,QACjBkX,EAAKm2V,EAAUrtW,QACnBgc,EAAK0zoC,IAAYD,EACjBv4oC,EAAGw4oC,IAAYD,EACfhJ,EAAK3mpC,KAAKkc,EAAM9E,EAClB,CACF,CA/IMq5oC,CAAmBtvK,EAAatuJ,EAAUw8T,cAAcp2yB,GAAM45e,EAAUu8T,aAAan2yB,GACvF,IACF,GACF,CCdO,IAAIy3yB,GAAmB,CAC5BhmpC,KAAM,kBACNq2H,UAAW,SAAmBv6F,GAC5B,IAAIou+B,EAAWpu+B,EAAOou+B,SAElBA,EAAS52rB,eAAiBs5qB,IAO5Bgb,GANa,IASf,IAAI3w/B,ECEO,SAA4B6r/B,EAASjve,GAOlD,IALA,IAAIoynB,EAAU,GACVC,EAAW,GACXC,GAHJtynB,EAAMA,GAAO,CAAC,GAGKsynB,SACfC,EAA0B,SAAbD,GAAoC,IAAbA,EAE/B9xpC,EAAI,EAAGA,EAAIyugC,EAAQhvgC,OAAQO,IAAK,CACvC,IAAIgypC,EAAUn1b,GAAI4xS,EAAQzugC,GAAGmB,SACzB8wpC,EAAKjzL,GAASgzL,EAAS,KACvBE,EAAKlzL,GAASgzL,EAAS,IACvBG,EAAKnzL,GAASgzL,EAAS,KACvB/kpC,EAAM+kpC,EAAQ,GACdjlpC,EAAMilpC,EAAQA,EAAQvypC,OAAS,GAC/Bq+N,GAAqB,MAAZg07B,EAAmB,IAAMA,IAAaK,EAAKF,GACpDn8kC,EAAMi8kC,EAAa9kpC,EAAMhL,KAAK8K,IAAIE,EAAKglpC,EAAKn07B,GAC5CjoJ,EAAOk8kC,EAAahlpC,EAAM9K,KAAKgL,IAAIF,EAAKolpC,EAAKr07B,GAC7Cs07B,EAAoB5ynB,EAAI4ynB,kBACxB33J,EAAWr2vB,GAAWgu5B,GAAqBA,EAAkB,CAC/D7xpC,MAAOP,IACJo6D,GAASg4lC,GAAqBA,EAAkBvmpC,QAAQ,UAAW7L,EAAI,IAAMA,EAAI,GACtF4xpC,EAAQ3wpC,KAAK,CAACw5/B,EAAU3k7B,EAAKm8kC,EAAIC,EAAIC,EAAIt8kC,IAEzC,IAAK,IAAIryE,EAAI,EAAGA,EAAIwupC,EAAQvypC,OAAQ+D,IAAK,CACvC,IAAI8rpB,EAAW0igB,EAAQxupC,GAEvB,GAAI8rpB,EAAWx5kB,GAAOw5kB,EAAWz5kB,EAAM,CACrC,IAAIw8kC,EAAU,CAAC53J,EAAUnrW,GACzBuigB,EAAS5wpC,KAAKoxpC,EAChB,CACF,CACF,CAEA,MAAO,CACLT,QAASA,EACTC,SAAUA,EAEd,CDvCiBS,CAAmBz8I,EAASR,aAAc5t+B,EAAOyzR,QAC9D,MAAO,CAAC,CACNpjK,WAAY,CAAC,WAAY,MAAO,KAAM,KAAM,KAAM,QAClDlpJ,KAAMgU,EAAOgvoC,SACZ,CACDhjpC,KAAMgU,EAAOivoC,UAEjB,GEjBEU,GAAa,CAAC,QAAS,eAEvBC,GAEJ,SAAU1qyB,GAGR,SAAS0qyB,IACP,IAAI1mmC,EAAmB,OAAXg8T,GAAmBA,EAAOnoX,MAAMP,KAAMI,YAAcJ,KAGhE,OADA0sD,EAAMngD,KAAO6mpC,EAAgB7mpC,KACtBmgD,CACT,CAqJA,OA5JAkgX,EAAUwmvB,EAAiB1qyB,GAS3B0qyB,EAAgB1zpC,UAAU4uH,OAAS,SAAU003B,EAAa1f,EAASr07B,GAEjEjvC,KAAKo7T,MAAM28pB,iBAEX/39B,KAAK2nlC,gBAAkB,KAEvB3nlC,KAAK+2lC,gBAAgB/zG,GAErBhj/B,KAAKi3lC,aAAej3lC,KAAKk3lC,aAAal0G,GAAehj/B,KAAKm3lC,cAAcn0G,EAC1E,EAEAowK,EAAgB1zpC,UAAU85hC,yBAA2B,SAAUx2C,EAAa1f,EAASr07B,GACnFjvC,KAAKo3lC,SAELp3lC,KAAK+2lC,gBAAgB/zG,EACvB,EAEAowK,EAAgB1zpC,UAAU+5hC,kBAAoB,SAAUpx/B,EAAQ268B,EAAa1f,EAASr07B,GACpFjvC,KAAK2nlC,gBAAkB,GACvB3nlC,KAAKi3lC,aAAej3lC,KAAKs3lC,wBAAwBjvjC,EAAQ268B,GAAehj/B,KAAKqzpC,yBAAyBhrnC,EAAQ268B,EAChH,EAEAowK,EAAgB1zpC,UAAUmshC,aAAe,SAAUnq9B,GACjD,GAAyB1hE,KAAK2nlC,iBAAmB3nlC,KAAKo7T,MAAO15P,EAC/D,EAEA0xlC,EAAgB1zpC,UAAUq3lC,gBAAkB,SAAU/zG,GACpD,IAAIu0G,EAAcv0G,EAAY+oC,gBAAgB7zM,MAErB,MAArBl40B,KAAKi3lC,cAAwBM,IAAgBv3lC,KAAKi3lC,eACpDj3lC,KAAKi3lC,aAAeM,EAEpBv3lC,KAAKo3lC,SAET,EAEAg8D,EAAgB1zpC,UAAUy3lC,cAAgB,SAAUn0G,GAClD,IAAIxz+B,EAAOwz+B,EAAYx+2B,UACnBoub,EAAU5yjB,KAAKykJ,MACf22K,EAAQp7T,KAAKo7T,MACbk41B,EAAc9jpC,EAAKm5iC,UAAU,eAC7BmvC,EAAY90G,EAAY7/+B,IAAI,QAAQ,GACpC87J,EAAQ+j1B,EAAYjx3B,iBACpB+x+B,EAAW7k8B,EAAM6r7B,SAAW7r7B,EAAM6r7B,UAGjC9qlC,KAAKykJ,OACR22K,EAAMvtE,YAGRr+O,EAAK+4hB,KAAKqqB,GAASztiB,KAAI,SAAUg7hC,GAC/B,GAAI3wiC,EAAKkgjB,SAASywf,GAAS,CACzB,IAAI+gD,EAAa1xlC,EAAKo5iC,cAAczI,GAEpC,GAAI23C,GAAay7D,GAAmBzvD,EAAU5C,GAC5C,OAGF,IAAIrn9B,EAAK,GAAgBqn9B,EAAY/gD,GAAQ,GAC7C,GAAkBtm6B,EAAI,CACpByoF,MAAO,CACLh3L,OAAQ41jC,EAAWsnD,OAEpBxlK,EAAam9D,GAChBqzG,GAAa35gC,EAAIrqI,EAAM2wiC,EAAQmzG,GAC/Bl41B,EAAMj2S,IAAI00H,GACVrqI,EAAKu5iC,iBAAiB5I,EAAQtm6B,EAChC,CACF,IAAGtrE,QAAO,SAAU4x+B,EAAQ4nC,GAC1B,IAAIlu8B,EAAK+4a,EAAQ8vb,iBAAiBqlG,GAElC,GAAKv4kC,EAAKkgjB,SAASywf,GAAnB,CAKA,IAAI+gD,EAAa1xlC,EAAKo5iC,cAAczI,GAEhC23C,GAAay7D,GAAmBzvD,EAAU5C,GAC5C9lyB,EAAMvoS,OAAOgnH,IAIVA,GAGH,GAAoBA,EAAI,CACtByoF,MAAO,CACLh3L,OAAQ41jC,EAAWsnD,OAEpBxlK,EAAam9D,GAChBv5D,GAAa/s2B,IAPbA,EAAK,GAAgBqn9B,GAUvBsyD,GAAa35gC,EAAIrqI,EAAM2wiC,EAAQmzG,GAC/Bl41B,EAAMj2S,IAAI00H,GACVrqI,EAAKu5iC,iBAAiB5I,EAAQtm6B,GAtB9B,MAFEuhL,EAAMvoS,OAAOgnH,EAyBjB,IAAGhnH,QAAO,SAAUk1jC,GAClB,IAAIlu8B,EAAK+4a,EAAQ8vb,iBAAiBqlG,GAClClu8B,GAAMuhL,EAAMvoS,OAAOgnH,EACrB,IAAGkoQ,UACH/hZ,KAAKykJ,MAAQj1I,CACf,EAEA4jpC,EAAgB1zpC,UAAUw3lC,aAAe,SAAUl0G,GACjDhj/B,KAAKo3lC,SAEL,GAAYp0G,EAAahj/B,KAAKo7T,OAC9B,IAAIqwd,EAAWu3N,EAAY7/+B,IAAI,QAAQ,GAAQgolC,GAAenoG,EAAYjx3B,kBAAkB,EAAOix3B,GAAe,KAE9Gv3N,EACFzrxB,KAAKo7T,MAAMw5pB,YAAYnpM,GAEvBzrxB,KAAKo7T,MAAM28pB,gBAEf,EAEAq7L,EAAgB1zpC,UAAU2zpC,yBAA2B,SAAUhrnC,EAAQ268B,GAKrE,IAJA,IAEI390B,EAFA71J,EAAOwz+B,EAAYx+2B,UACnB8uhC,EAAc9jpC,EAAKm5iC,UAAU,eAGK,OAA9Btj5B,EAAYh9H,EAAOtnC,SAAiB,CAC1C,IACI84I,EAAK,GADQrqI,EAAKo5iC,cAAcvj5B,IAEpCmu/B,GAAa35gC,EAAIrqI,EAAM61J,EAAWiu/B,GAClCz5gC,EAAG6z1B,aAAc,EACjB1t+B,KAAKo7T,MAAMj2S,IAAI00H,GAEf75I,KAAK2nlC,gBAAgB9llC,KAAKg4I,EAC5B,CACF,EAEAu5gC,EAAgB1zpC,UAAU43lC,wBAA0B,SAAUjvjC,EAAQ268B,GACpE,GAAYA,EAAahj/B,KAAKo7T,MAAOp7T,KAAK2nlC,iBAAiB,EAC7D,EAEAyrE,EAAgB1zpC,UAAUmzB,OAAS,SAAUyw8B,GAC3Ctj+B,KAAKo3lC,QACP,EAEAg8D,EAAgB1zpC,UAAU03lC,OAAS,WACjCp3lC,KAAKo7T,MAAMvtE,YACX7tP,KAAKykJ,MAAQ,IACf,EAEA2ugC,EAAgB7mpC,KAAO,cAChB6mpC,CACT,CA9JA,CA8JEpwW,IAEEywW,GAGF,WAA+B,EAK7BC,GAEJ,SAAUhryB,GAGR,SAASgryB,EAAcr3mC,GACrB,IAAIqQ,EAAQg8T,EAAO9oX,KAAKI,KAAMq8C,IAASr8C,KAGvC,OADA0sD,EAAMngD,KAAO,uBACNmgD,CACT,CAyBA,OAhCAkgX,EAAU8mvB,EAAehryB,GASzBgryB,EAAch0pC,UAAUk0+B,gBAAkB,WACxC,OAAO,IAAI6/K,EACb,EAEAC,EAAch0pC,UAAUg0+B,UAAY,SAAUp8vB,EAAKhV,GACjD,IAAIkm7B,EAAOlm7B,EAAMh3L,OAEbtrC,KAAK2zpC,aACPr86B,EAAIyvhB,OAAOyhZ,EAAK,GAAG,GAAIA,EAAK,GAAG,IAC/Blx6B,EAAI0vhB,OAAOwhZ,EAAK,GAAG,GAAIA,EAAK,GAAG,MAE/Blx6B,EAAIyvhB,OAAOyhZ,EAAK,GAAG,GAAIA,EAAK,GAAG,IAC/Blx6B,EAAI0vhB,OAAOwhZ,EAAK,GAAG,GAAIA,EAAK,GAAG,IAC/Blx6B,EAAI0vhB,OAAOwhZ,EAAK,GAAG,GAAIA,EAAK,GAAG,IAC/Blx6B,EAAI0vhB,OAAOwhZ,EAAK,GAAG,GAAIA,EAAK,GAAG,IAC/Blx6B,EAAI2vhB,YACJ3vhB,EAAIyvhB,OAAOyhZ,EAAK,GAAG,GAAIA,EAAK,GAAG,IAC/Blx6B,EAAI0vhB,OAAOwhZ,EAAK,GAAG,GAAIA,EAAK,GAAG,IAC/Blx6B,EAAIyvhB,OAAOyhZ,EAAK,GAAG,GAAIA,EAAK,GAAG,IAC/Blx6B,EAAI0vhB,OAAOwhZ,EAAK,GAAG,GAAIA,EAAK,GAAG,IAEnC,EAEOkL,CACT,CAlCA,CAkCE,IAEF,SAAS,GAAgBxyD,EAAY777B,EAAWow1B,GAC9C,IAAI+yJ,EAAOtnD,EAAWsnD,KACtB,OAAO,IAAIkL,GAAc,CACvBpx7B,MAAO,CACLh3L,OAAQmq9B,EAAS,GAAU+yJ,EAAMtnD,GAAcsnD,GAEjDzr9B,GAAI,KAER,CAEA,SAASw29B,GAAmBzvD,EAAU5C,GAGpC,IAFA,IAAIvwoB,GAAU,EAEL/vd,EAAI,EAAGA,EAAIsgmC,EAAWsnD,KAAKnopC,OAAQO,IAE1C,GAAIkjmC,EAASlwJ,QAAQstJ,EAAWsnD,KAAK5npC,GAAG,GAAIsgmC,EAAWsnD,KAAK5npC,GAAG,IAAK,CAClE+vd,GAAU,EACV,KACF,CAGF,OAAOA,CACT,CAEA,SAAS6isB,GAAa35gC,EAAIrqI,EAAM61J,EAAWiu/B,GACzC,IAAI5uK,EAAYl1+B,EAAKqhgC,aAAaxr2B,GAClCxrB,EAAGuwQ,SAAS56Y,EAAK+ggC,cAAclr2B,EAAW,UAC1CxrB,EAAGxlI,MAAM8+9B,eAAgB,EACzBt51B,EAAG85gC,YAAcL,EACjB7uK,GAAyB5q2B,EAAI6q2B,EAC/B,CAEA,SAAS,GAAUp58B,EAAQ41jC,GACzB,OAAO,EAAW51jC,GAAQ,SAAU6pG,GAGlC,OAFAA,EAAQA,EAAMpzI,SACR,GAAKm/lC,EAAW0vD,aACfz7gC,CACT,GACF,CAEA,IAAIy+gC,GAGF,WAA8B,EAK5BC,GAEJ,SAAUnryB,GAGR,SAASmryB,EAAax3mC,GACpB,IAAIqQ,EAAQg8T,EAAO9oX,KAAKI,KAAMq8C,IAASr8C,KAGvC,OADA0sD,EAAMngD,KAAO,sBACNmgD,CACT,CAsBA,OA7BAkgX,EAAUinvB,EAAcnryB,GASxBmryB,EAAan0pC,UAAUk0+B,gBAAkB,WACvC,OAAO,IAAIggL,EACb,EAEAC,EAAan0pC,UAAUg0+B,UAAY,SAAUp8vB,EAAKhV,GAKhD,IAFA,IAAIh3L,EAASg3L,EAAMh3L,OAEV1qC,EAAI,EAAGA,EAAI0qC,EAAOjrC,QACzB,GAAIL,KAAK8zpC,SAAWxonC,EAAO1qC,KAAM,CAC/B,IAAIqD,EAAIqnC,EAAO1qC,KACf02O,EAAIyvhB,OAAO9iwB,EAAGqnC,EAAO1qC,MACrB02O,EAAI0vhB,OAAO/iwB,EAAGqnC,EAAO1qC,KACvB,MACEA,GAAK,CAGX,EAEOizpC,CACT,CA/BA,CA+BE,IAEF,SAAS,GAAY7wK,EAAa5nrB,EAAOuhyB,EAAgBjvH,GACvD,IAAIl+9B,EAAOwz+B,EAAYx+2B,UACnB0y7B,EAAc1njC,EAAKm5iC,UAAU,eAC7BorG,EAAM,IAAIF,GAAa,CACzBvx7B,MAAO,CACLh3L,OAAQ4rhC,GAEV48F,OAAQ,EACR79M,qBAAqB,IAEvB76oB,EAAMj2S,IAAI4uoC,GACV,IAAIC,EAAM,IAAIH,GAAa,CACzBvx7B,MAAO,CACLh3L,OAAQ4rhC,GAEV48F,QAAS,EACT79M,qBAAqB,IAEvB76oB,EAAMj2S,IAAI6uoC,GACV,IAAIC,EAAS,IAAIJ,GAAa,CAC5Bvx7B,MAAO,CACLh3L,OAAQ4rhC,GAEV48F,OAAQ,EACR79M,qBAAqB,IAEvB76oB,EAAMj2S,IAAI8uoC,GACVC,GAAc,EAAGH,EAAK/wK,GACtBkxK,IAAe,EAAGF,EAAKhxK,GACvBkxK,GAAc,EAAGD,EAAQjxK,GAErBtV,IACFqmL,EAAIrmL,aAAc,EAClBsmL,EAAItmL,aAAc,GAGhBivH,GACFA,EAAe96lC,KAAKkypC,EAAKC,EAE7B,CAEA,SAASE,GAAc559B,EAAMzgD,EAAImp2B,EAAaxz+B,GAE5C,IAAI8oW,EAAc0qoB,EAAY7/+B,IAAI,CAAC,YAAam3L,EAAO,EAAI,cAAgB,kBACxE0ozB,EAAY7/+B,IAAI,CAAC,YAAam3L,EAAO,EAAI,QAAU,WAEzC,IAATA,IACFg+K,EAAc0qoB,EAAY7/+B,IAAI,CAAC,YAAa,qBAK9C,IAAIoh/B,EAAYvB,EAAYprzB,SAAS,aAAam0zB,aAAaonK,IAC/Dt5gC,EAAGuwQ,SAASm6lB,GACZ1q2B,EAAGxlI,MAAM+oH,KAAO,KAChByc,EAAGxlI,MAAM+owB,OAAS9ka,CACpB,CAEA,YClWA,IAAI67yB,GAEJ,SAAUzryB,GAGR,SAASyryB,IACP,IAAIznmC,EAAmB,OAAXg8T,GAAmBA,EAAOnoX,MAAMP,KAAMI,YAAcJ,KAgBhE,OAdA0sD,EAAMngD,KAAO4npC,EAAuB5npC,KACpCmgD,EAAMwjmC,uBAAyB,CAAC,CAC9BxlpC,KAAM,OACNu8iC,gBAAgB,GACf,CACDv8iC,KAAM,QACNu8iC,gBAAgB,GACf,CACDv8iC,KAAM,SACNu8iC,gBAAgB,GACf,CACDv8iC,KAAM,UACNu8iC,gBAAgB,IAEXv6/B,CACT,CAsDA,OA1EAkgX,EAAUunvB,EAAwBzryB,GA2BlCyryB,EAAuBz0pC,UAAU00pC,aAAe,WAC9C,MAAO,MACT,EAEAD,EAAuBz0pC,UAAUi2lC,cAAgB,SAAUtw7B,EAAW71J,EAAMyzkC,GAC1E,IAAIie,EAAa1xlC,EAAKo5iC,cAAcvj5B,GACpC,OAAO677B,GAAcje,EAAUvv/B,KAAKwtgC,EAAWmzD,UACjD,EAEAF,EAAuB5npC,KAAO,qBAC9B4npC,EAAuBl4/B,aAAe,CAAC,QAAS,QAAS,QACzDk4/B,EAAuBvznB,cAAgB,CAErCj7hB,EAAG,EACHosH,iBAAkB,cAClBuy9B,iBAAiB,EAGjBpj9B,OAAQ,KACRiqR,MAAM,EACNo5lB,UAAW,CACTh33B,MAAO,UACP+06B,OAAQ,UACRhqrB,YAAa,UACbiqrB,aAAc,UACd+xH,gBAAiB,KAGjB98K,YAAa,GAEf5W,SAAU,CACR9+3B,OAAO,EACPyi5B,UAAW,CACT/M,YAAa,IAGjBq9E,YAAa,KACbC,YAAa,KACbhvP,SAAU,KACVoS,OAAO,EACPs9Q,eAAgB,IAChBx8F,YAAa,IACbD,qBAAsB,IACtB08F,qBAAsB,MACtB78F,gBAAiB,SACjBF,kBAAmB,KAEdy7J,CACT,CA5EA,CA4EEx2Y,IAEFksL,EAAMsqN,GAAwB5E,IAAuB,GACrD,YCrFe,SAASgF,GAAwB12lC,GACzCA,GAAW,GAAeA,EAAOi/sB,SAKtC,EAAYj/sB,EAAOi/sB,QAAQ,SAAU03Y,GAC/B,GAAgBA,IAAmC,MAApBA,EAAWjopC,OAC5CiopC,EAAWjopC,KAAO,cAEtB,GACF,CCVA,IAAIkopC,GAA2B,CAAC,YAAa,eACzCC,GAA2B,CAAC,YAAa,gBACzCC,GAAuB,CAAC,YAAa,mBACrCC,GAAqB,CAAC,YAAa,SACnCC,GAAqB,CAAC,YAAa,UAsCvC,SArCwB,CACtBp4U,WAAY,cACZg1L,KAAMqa,KAENkP,kBAAkB,EAClB/59B,MAAO,SAAU+h7B,EAAa1f,GAC5B,SAASzmwB,EAASviC,EAAMvlE,GACtB,OAAOA,EAAM5xH,IAAIm3L,EAAO,EAAIs69B,GAAqBC,GACnD,CAEA,SAAShr6B,EAAevvD,EAAMvlE,GAC5B,OAAOA,EAAM5xH,IAAa,IAATm3L,EAAaq69B,GAAuBr69B,EAAO,EAAIm69B,GAA2BC,GAC7F,CAGA,IAAIpxL,EAAQu/B,iBAAiB7f,GAK7B,OADoBA,EAAY+oC,gBAAgB7zM,OACvB,CACvB+6L,SAAU,SAAU5q+B,EAAQ74B,GAG1B,IAFA,IAAI61J,EAEkC,OAA9BA,EAAYh9H,EAAOtnC,SAAiB,CAC1C,IAAI2j/B,EAAYl1+B,EAAKqhgC,aAAaxr2B,GAC9Bi1B,EAAO9qL,EAAKo5iC,cAAcvj5B,GAAWi1B,KACrCjmL,EAAQqw+B,EAAUqH,eACtB13+B,EAAM+oH,KAAOy/F,EAASviC,EAAMoqzB,GAC5Brw+B,EAAM+owB,OAASvzhB,EAAevvD,EAAMoqzB,IAAcrw+B,EAAM+oH,KAExDisR,EADkB75Y,EAAKushC,uBAAuB123B,EAAW,SACrChxJ,EACtB,CACF,EAEJ,GCrCF,IAAIygpC,GAAoB,CACtBr4U,WAAY,cACZg1L,KAAMqa,KACN7q9B,MAAO,SAAU+h7B,GACf,IAAIE,EAAWF,EAAYjx3B,iBACvBviH,EAAOwz+B,EAAYx+2B,UACnBuwhC,EAwJR,SAA8B/xK,EAAaxz+B,GACzC,IACI+6J,EADA4p5B,EAAWnxE,EAAYkmC,cAEvB7qH,EAA8B,aAAlB81J,EAAS5njC,KAAsB4njC,EAASM,gBAAkBlq5B,EAAS4p5B,EAAS3E,YAAa3sjC,KAAKmjH,IAAIukD,EAAO,GAAKA,EAAO,IAAM/6J,EAAK+5C,SAC5IsrgC,EAAc,GAAavqH,GAAU04C,EAAY7/+B,IAAI,eAAgBk75B,GAAYA,GACjFy2J,EAAc,GAAaxqH,GAAU04C,EAAY7/+B,IAAI,eAAgB,GAAIk75B,GACzEv4F,EAAWk9K,EAAY7/+B,IAAI,YAC/B,OAAmB,MAAZ2i0B,EAAmB,GAAaA,EAAUu4F,GAC/Cx75B,KAAK8K,IAAI9K,KAAKgL,IAAIww5B,EAAY,EAAGw2J,GAAcC,EACnD,CAjKsBkgG,CAAqBhyK,EAAaxz+B,GAGhDmgpC,EAAY,CAAC,IAAK,KAClBsF,EAAQzlpC,EAAKuggC,kBAAkBvggC,EAAK42iC,aAAaupG,EAHvC,KAIVuF,EAAS7loC,EAAI7f,EAAKs3gC,iBAAiB6oI,EAHzB,IAG8CngpC,EAAKuggC,kBAAmBvggC,GAChF2lpC,EAAWD,EAAO,GAClBE,EAAYF,EAAO,GACnBG,EAAaH,EAAO,GACpBI,EAAcJ,EAAO,GAOzB,GANA1lpC,EAAKk5iC,UAAU,CACbqsG,YAAaA,EAEbzB,YAAayB,GAAe,QAG1BE,EAAQ,GAAKC,EAAO70pC,OAAS,GAIjC,MAAO,CACL4ygC,SAAUjwB,EAAY+oC,gBAAgB7zM,MAmExC,SAAuB7vyB,EAAQ74B,GAW7B,IATA,IAEI2lI,EAGAkwB,EALA/5H,EAASmohC,GAAkC,EAAfprhC,EAAOkhB,OACnCpH,EAAS,EAETmyiC,EAAQ,GACRC,EAAS,GAETxl5B,EAAQv/L,EAAKsggC,WACbylJ,IAAiBvyK,EAAY7/+B,IAAI,CAAC,YAAa,oBAEb,OAA9BkiK,EAAYh9H,EAAOtnC,SAAiB,CAC1C,IAAI8wpC,EAAa9i9B,EAAM5rM,IAAI8xpC,EAAO5v/B,GAC9Bmw/B,EAAUzm9B,EAAM5rM,IAAIgypC,EAAU9v/B,GAC9Bow/B,EAAW1m9B,EAAM5rM,IAAIiypC,EAAW/v/B,GAChCqw/B,EAAY3m9B,EAAM5rM,IAAIkypC,EAAYhw/B,GAClCsw/B,EAAa5m9B,EAAM5rM,IAAImypC,EAAajw/B,GAEpC/4H,MAAMulnC,IAAevlnC,MAAMopnC,IAAcppnC,MAAMqpnC,IACjDrqnC,EAAO6W,KAAYy5sB,IACnBz5sB,GAAU,IAIZ7W,EAAO6W,KAAYyzmC,GAAQ7m9B,EAAO1pC,EAAWmw/B,EAASC,EAAUL,EAAWG,GAC3EjhE,EAhHU,GAgHOu9D,EACjBv9D,EAhHU,GAgHOohE,EACjBvghC,EAAQ+t2B,EAASy0E,YAAY28B,EAAO,KAAMC,GAC1CjpjC,EAAO6W,KAAYgzF,EAAQA,EAAM,GAAKymnB,IACtCtwtB,EAAO6W,KAAYgzF,EAAQA,EAAM,GAAKymnB,IACtC04V,EApHU,GAoHOqhE,EACjBxghC,EAAQ+t2B,EAASy0E,YAAY28B,EAAO,KAAMC,GAC1CjpjC,EAAO6W,KAAYgzF,EAAQA,EAAM,GAAKymnB,IACxC,CAEApsvB,EAAKk5iC,UAAU,cAAep9gC,EAChC,EApGA,SAAwBjD,EAAQ74B,GAI9B,IAHA,IAAI61J,EACA0pC,EAAQv/L,EAAKsggC,WAEqB,OAA9Bzq2B,EAAYh9H,EAAOtnC,SAAiB,CAC1C,IAAI8wpC,EAAa9i9B,EAAM5rM,IAAI8xpC,EAAO5v/B,GAC9Bmw/B,EAAUzm9B,EAAM5rM,IAAIgypC,EAAU9v/B,GAC9Bow/B,EAAW1m9B,EAAM5rM,IAAIiypC,EAAW/v/B,GAChCqw/B,EAAY3m9B,EAAM5rM,IAAIkypC,EAAYhw/B,GAClCsw/B,EAAa5m9B,EAAM5rM,IAAImypC,EAAajw/B,GACpCww/B,EAAQhzpC,KAAKgL,IAAI2npC,EAASC,GAC1BK,EAASjzpC,KAAK8K,IAAI6npC,EAASC,GAC3BM,EAAahE,EAAS8D,EAAOhE,GAC7BmE,EAAcjE,EAAS+D,EAAQjE,GAC/BoE,EAAclE,EAAS2D,EAAW7D,GAClCqE,EAAenE,EAAS4D,EAAY9D,GACpCrJ,EAAO,GACX4J,EAAW5J,EAAMwN,EAAa,GAC9B5D,EAAW5J,EAAMuN,EAAY,GAC7BvN,EAAK3mpC,KAAKs0pC,EAAsBD,GAAeC,EAAsBH,GAAcG,EAAsBF,GAAcE,EAAsBJ,IAC7I,IACIR,IADY/lpC,EAAKqhgC,aAAaxr2B,GACHliK,IAAI,CAAC,YAAa,oBACjDqM,EAAKq5iC,cAAcxj5B,EAAW,CAC5Bi1B,KAAMs79B,GAAQ7m9B,EAAO1pC,EAAWmw/B,EAASC,EAAUL,EAAWG,GAC9D3E,aAAc4E,EAAUC,EAAWO,EA9C3B,GA8CkDD,EA9ClD,GA+CRvN,KAAMA,EACN6L,UAAW+B,EAAcV,EAAWC,EAAY9D,IAEpD,CAEA,SAASE,EAASr0+B,EAAKm0+B,GACrB,IAAI/upC,EAAI,GAGR,OAFAA,EAvDU,GAuDG+upC,EACb/upC,EAvDU,GAuDG46K,EACNpxI,MAAMulnC,IAAevlnC,MAAMoxI,GAAO,CAACk+kB,IAAKA,KAAOsnP,EAASy0E,YAAY70jC,EAC7E,CAEA,SAASsvpC,EAAW5J,EAAMrzgC,EAAO3uG,GAC/B,IAAIswV,EAAS3hP,EAAMpzI,QACfg1X,EAAS5hP,EAAMpzI,QACnB+0X,EA/DU,GA+DQ,GAAiBA,EA/DzB,GA+D2Ci+xB,EAAc,EAAG,GAAG,GACzEh+xB,EAhEU,GAgEQ,GAAiBA,EAhEzB,GAgE2Cg+xB,EAAc,EAAG,GAAG,GACzEvunC,EAAQginC,EAAK3mpC,KAAKi1X,EAAQC,GAAUyxxB,EAAK3mpC,KAAKk1X,EAAQD,EACxD,CAEA,SAASs/xB,EAAcV,EAAWC,EAAY9D,GAC5C,IAAIwE,EAAOtE,EAAS2D,EAAW7D,GAC3ByE,EAAOvE,EAAS4D,EAAY9D,GAGhC,OAFAwE,EAvEU,IAuEOtB,EAAc,EAC/BuB,EAxEU,IAwEOvB,EAAc,EACxB,CACL9wpC,EAAGoypC,EAAK,GACRrzpC,EAAGqzpC,EAAK,GACRt3nC,MAAiBg2nC,EACjB/1nC,OAAkBs3nC,EAAK,GAAKD,EAAK,GAErC,CAEA,SAASF,EAAsBhhhC,GAE7B,OADAA,EAlFU,GAkFO,GAAiBA,EAlFxB,GAkFwC,GAC3CA,CACT,CACF,EAuCF,GAUF,SAASyghC,GAAQ7m9B,EAAO1pC,EAAWmw/B,EAASC,EAAUL,EAAWG,GAc/D,OAXIC,EAAUC,GACJ,EACCD,EAAUC,EACZ,EAEAF,EACL,EAAIlw/B,EAAY,EAChB0pC,EAAM5rM,IAAIiypC,EAAW/v/B,EAAY,IAAMow/B,EAAW,GAAK,EACzD,CAIJ,CAaA,YCxKA,SAASc,GAAiBC,EAAaC,GACrC,IAAIlpiC,EAAQkpiC,EAAUC,mBAAqBD,EAAUlpiC,MACrDipiC,EAAYr7L,WAAU,SAAUw7L,GAC9BA,EAAW1ooB,KAAK,CACdtohB,EAAG8wpC,EAAU9wpC,EACb8z8B,OAAQg9M,EAAUh9M,OAClBpl8B,MAAO,CACL+owB,OAAgC,WAAxBq5Y,EAAU1T,UAAyBx1hC,EAAQ,KACnD6P,KAA8B,SAAxBq5hC,EAAU1T,UAAuBx1hC,EAAQ,OAGrD,GACF,CAEA,IAAIqpiC,GAEJ,SAAUluyB,GAGR,SAASkuyB,EAAapnpC,EAAMsrW,GAC1B,IAAIpuT,EAAQg8T,EAAO9oX,KAAKI,OAASA,KAE7Bk6f,EAAS,IAAI,GAAU1qf,EAAMsrW,GAC7B07yB,EAAc,IAAI,GAQtB,OANA9pmC,EAAMvnC,IAAI+0e,GAEVxtc,EAAMvnC,IAAIqxoC,GAEV9pmC,EAAMimgB,WAAWnjjB,EAAMsrW,GAEhBpuT,CACT,CA8JA,OA7KAkgX,EAAUgqvB,EAAcluyB,GAiBxBkuyB,EAAal3pC,UAAUm3pC,oBAAsB,WAC3C72pC,KAAK669B,QAAQ,GAAGhtuB,WAClB,EAEA+o6B,EAAal3pC,UAAUo3pC,qBAAuB,SAAUL,GAMtD,IALA,IAAIxwH,EAAawwH,EAAUxwH,WACvB146B,EAAQkpiC,EAAUlpiC,MAClBwpiC,EAAeN,EAAUM,aACzBP,EAAcx2pC,KAAK669B,QAAQ,GAEtBj69B,EAAI,EAAGA,EAAIm2pC,EAAcn2pC,IAAK,CAIrC,IAAI+1pC,EAAa,GAAa1wH,GAAa,GAAI,EAAG,EAAG,EAAG146B,GACxDopiC,EAAW1ooB,KAAK,CACd55gB,MAAO,CACL8+9B,eAAe,GAEjBp2yB,GAAI,GACJq3S,QAAQ,EACRx7W,OAAQ,GACRC,OAAQ,KAEV,IAAI13E,GAASvgD,EAAIm2pC,EAAeN,EAAUO,OAASP,EAAUQ,aAC7DN,EAAWno6B,QAAQ,IAAI,GAAMm7tB,KAAK8sM,EAAUO,OAAQ,CAClDp+hC,OAAQ69hC,EAAUS,YAAc,EAChCr+hC,OAAQ49hC,EAAUS,YAAc,IAC/B/1mC,MAAMA,GAAO3a,QAChBmwnC,EAAWhqL,cAAa,GAAMhjB,KAAK8sM,EAAUO,OAAQ,CACnDprhC,QAAS,IACRzqF,MAAMA,GAAO3a,QAChBgwnC,EAAYrxoC,IAAIwxoC,EAClB,CAEAJ,GAAiBC,EAAaC,EAChC,EAMAG,EAAal3pC,UAAUy3pC,sBAAwB,SAAUV,GAMvD,IALA,IAAIW,EAAep3pC,KAAKq3pC,WACpBb,EAAcx2pC,KAAK669B,QAAQ,GAE3By8L,EAAkB,CAAC,aAAc,SAAU,cAAe,gBAErD12pC,EAAI,EAAGA,EAAI02pC,EAAgBj3pC,OAAQO,IAAK,CAC/C,IAAI2qJ,EAAW+rgC,EAAgB12pC,GAE/B,GAAIw2pC,EAAa7rgC,KAAckrgC,EAAUlrgC,GAGvC,OAFAvrJ,KAAK62pC,2BACL72pC,KAAK82pC,qBAAqBL,EAG9B,CAEAF,GAAiBC,EAAaC,EAChC,EAMAG,EAAal3pC,UAAU89rB,UAAY,WACjC2jT,GAAcnh/B,KAChB,EAMA42pC,EAAal3pC,UAAUkpgC,SAAW,WAChCvnB,GAAcrh/B,KAChB,EAEA42pC,EAAal3pC,UAAU8llC,cAAgB,WACrC,IAAItrlB,EAASl6f,KAAK669B,QAAQ,GAC1B,OAAO3ge,GAAUA,EAAOsrlB,eAC1B,EAMAoxE,EAAal3pC,UAAUizjB,WAAa,SAAUnjjB,EAAMsrW,GAClD,IAAIpuT,EAAQ1sD,KAERgj/B,EAAcxz+B,EAAKy0iC,UACvBjkjC,KAAK669B,QAAQ,GAAGloa,WAAWnjjB,EAAMsrW,GACjC,IAAI07yB,EAAcx2pC,KAAK669B,QAAQ,GAC3B6pB,EAAYl1+B,EAAKqhgC,aAAa/1pB,GAC9BmrrB,EAAaz2hC,EAAK+ggC,cAAcz1pB,EAAK,UACrCy9oB,EAAamuC,GAAoBl3hC,EAAK+ggC,cAAcz1pB,EAAK,eACzDurrB,EAAc72hC,EAAK+ggC,cAAcz1pB,EAAK,SACtCvtP,EAAQ846B,GAAeA,EAAYjp6B,KACnCkp9B,EAAgB5hG,EAAU9szB,SAAS,YACvC4+9B,EAAY1p6B,SAASyrwB,GACrBi+J,EAAY3w9B,UAAS,SAAU8w9B,GAC7BA,EAAWryvB,SAAS,OAAQ/2S,EAC9B,IACA,IAAIq56B,EAAeD,GAAsBn3hC,EAAK+ggC,cAAcz1pB,EAAK,gBAAiBy9oB,GAE9EquC,IACF4vH,EAAYvypC,EAAI2iiC,EAAa,GAC7B4vH,EAAYxzpC,EAAI4jiC,EAAa,IAG/B,IAAIw9C,EAAe50kC,EAAK+ggC,cAAcz1pB,EAAK,gBAC3C07yB,EAAYjwiC,UAAY699B,GAAgB,GAAKvhlC,KAAKsmC,GAAK,KAAO,EAC9D,IAAIstnC,EAAY,CAAC,EACjBA,EAAUc,aAAev0K,EAAY7/+B,IAAI,gBACzCszpC,EAAUS,YAAcxyK,EAAUvh/B,IAAI,CAAC,eAAgB,UACvDszpC,EAAU1T,UAAYr+J,EAAUvh/B,IAAI,CAAC,eAAgB,cACrDszpC,EAAUO,OAAqD,IAA5CtyK,EAAUvh/B,IAAI,CAAC,eAAgB,WAClDszpC,EAAUQ,aAAen8yB,EAAMtrW,EAAK+5C,QACpCktmC,EAAU9wpC,EAAIq9+B,EAAYzb,WAAW,MAAQ,EAC7CkvL,EAAUh9M,OAASupC,EAAYzb,WAAW,WAAa,EACvDkvL,EAAUxwH,WAAaA,EACvBwwH,EAAUlpiC,MAAQA,EAClBkpiC,EAAUC,kBAAoBhyK,EAAUvh/B,IAAI,CAAC,eAAgB,UAC7DszpC,EAAUM,aAAeryK,EAAUvh/B,IAAI,CAAC,eAAgB,WAEzB,WAA3BszpC,EAAUc,cACZv3pC,KAAKq3pC,WAAar3pC,KAAKm3pC,sBAAsBV,GAAaz2pC,KAAK82pC,qBAAqBL,GACpFz2pC,KAAKq3pC,WAAaZ,IAGlBz2pC,KAAKq3pC,WAAa,KAClBr3pC,KAAK62pC,sBAEL72pC,KAAK4++B,mBAAqB,SAAU7pB,GAClB,aAAZA,EAC6B,WAA3B0hM,EAAUc,cACZ7qmC,EAAMoqmC,qBAAqBL,GAER,WAAZ1hM,GACsB,WAA3B0hM,EAAUc,cACZ7qmC,EAAMmqmC,qBAGZ,GAGF72pC,KAAKq3pC,WAAaZ,EAClBtyK,GAAoBnk/B,KAAMsmlC,EAAcnjlC,IAAI,SAAUmjlC,EAAcnjlC,IAAI,aAAcmjlC,EAAcnjlC,IAAI,YAC1G,EAIAyzpC,EAAal3pC,UAAUsnlC,QAAU,SAAUtlhC,GACzCA,GAAMA,GACR,EAGOk1lC,CACT,CA/KA,CA+KE,IAEF,YChIA,GA9DA,SAAUluyB,GAGR,SAAS8uyB,IACP,IAAI9qmC,EAAmB,OAAXg8T,GAAmBA,EAAOnoX,MAAMP,KAAMI,YAAcJ,KAGhE,OADA0sD,EAAMngD,KAAOirpC,EAAkBjrpC,KACxBmgD,CACT,CAmDA,OA1DAkgX,EAAU4qvB,EAAmB9uyB,GAS7B8uyB,EAAkB93pC,UAAUgxD,KAAO,WACjC1wD,KAAKmtlC,YAAc,IAAI,GAAW,GACpC,EAEAqqE,EAAkB93pC,UAAU4uH,OAAS,SAAU003B,EAAa1f,EAASr07B,GACnE,IAAIz/B,EAAOwz+B,EAAYx+2B,UACnBizhC,EAAmBz3pC,KAAKmtlC,YAC5BsqE,EAAiB9kmB,WAAWnjjB,EAAM,CAChC63kC,UAAWrnlC,KAAK6jmC,cAAc7gH,KAEhChj/B,KAAKo7T,MAAMj2S,IAAIsyoC,EAAiBr81B,MAClC,EAEAo81B,EAAkB93pC,UAAUmkmC,cAAgB,SAAU7gH,GACpD,IAAIE,EAAWF,EAAYjx3B,iBACvB+x+B,EAAW5gH,GAAYA,EAAS4nG,SAAW5nG,EAAS4nG,UACxD,OAAO9nG,EAAY7/+B,IAAI,QAAQ,GAAQ2gmC,EAAW,IACpD,EAEA0zD,EAAkB93pC,UAAU+68B,gBAAkB,SAAUuoC,EAAa1f,EAASr07B,GAC5E,IAAIz/B,EAAOwz+B,EAAYx+2B,UACvBxkI,KAAKo7T,MAAM0qc,QACX,IAAIzgnB,EAAM4u8B,GAAa,IAAIhzhC,MAAM+h7B,EAAa1f,EAASr07B,GAEnDo2G,EAAI4t3B,UACN5t3B,EAAI4t3B,SAAS,CACXzs+B,MAAO,EACPC,IAAKj3B,EAAK+5C,QACVA,MAAO/5C,EAAK+5C,SACX/5C,GAGLxP,KAAKmtlC,YAAY1hE,cACnB,EAEA+rI,EAAkB93pC,UAAUg4pC,sBAAwB,SAAU10K,GAC5D,IAAIE,EAAWF,EAAYjx3B,iBAEvBmx3B,GAAYA,EAAS2mI,mBACvB7pnC,KAAKo7T,MAAMx4L,UAAY,GAAasg3B,EAAS2mI,oBAC7C7pnC,KAAKo7T,MAAM41pB,qBAEf,EAEAwmM,EAAkB93pC,UAAUmzB,OAAS,SAAUyw8B,EAASr07B,GACtDjvC,KAAKmtlC,aAAentlC,KAAKmtlC,YAAYt6jC,QAAO,EAC9C,EAEA2koC,EAAkBjrpC,KAAO,gBAClBirpC,CACT,CA5DA,CA4DEx0W,ICCF,GAhEA,SAAUt6b,GAGR,SAASivyB,IACP,IAAIjrmC,EAAmB,OAAXg8T,GAAmBA,EAAOnoX,MAAMP,KAAMI,YAAcJ,KAIhE,OAFA0sD,EAAMngD,KAAOorpC,EAAyBprpC,KACtCmgD,EAAM499B,iBAAkB,EACjB599B,CACT,CAoDA,OA5DAkgX,EAAU+qvB,EAA0BjvyB,GAUpCivyB,EAAyBj4pC,UAAUyohC,eAAiB,SAAUtq9B,EAAQyl6B,GACpE,OAAO,GAAiB,KAAMtj+B,KAAM,CAClC0ujC,oBAAoB,GAExB,EAEAipG,EAAyBj4pC,UAAUi2lC,cAAgB,SAAUtw7B,EAAW71J,EAAMyzkC,GAC5E,OAAOA,EAAU9t8B,MAAM3lI,EAAKo5iC,cAAcvj5B,GAC5C,EAEAsy/B,EAAyBprpC,KAAO,uBAChCorpC,EAAyB17/B,aAAe,CAAC,OAAQ,SACjD07/B,EAAyB/2nB,cAAgB,CACvC7ua,iBAAkB,cAElBpsH,EAAG,EACH2+kC,iBAAiB,EACjBszE,WAAY,SACZ5+J,YAAa,EAEbu+J,aAAc,SACdpswB,MAAM,EAEN0swB,aAAc,CACZb,OAAQ,EAERl1jC,MAAO,IAEPihjC,UAAW,OAEXh5/B,OAAQ,GAEVmg4B,oBAAqB,CACnB26D,YAAa,SAUftsF,WAAY,IAOPo/J,CACT,CA9DA,CA8DEh6Y,ICxDF,IAAIm6Y,GAEJ,SAAUpvyB,GAGR,SAASovyB,EAAWtlT,EAAU13f,EAAKoquB,GACjC,IAAIx4hC,EAAQg8T,EAAO9oX,KAAKI,OAASA,KAMjC,OAJA0sD,EAAMvnC,IAAIunC,EAAMqilC,WAAWv8R,EAAU13f,EAAKoquB,IAE1Cx4hC,EAAMqrmC,oBAAoBvlT,EAAU13f,GAE7BpuT,CACT,CA8KA,OAxLAkgX,EAAUkrvB,EAAYpvyB,GAYtBovyB,EAAWp4pC,UAAUqvoC,WAAa,SAAUv8R,EAAU13f,EAAKoquB,GACzD,OAAO,IAAI,GAAK1yO,EAAU13f,EAAKoquB,EACjC,EAEA4yE,EAAWp4pC,UAAUq4pC,oBAAsB,SAAUvlT,EAAU13f,GAC7D,IACIk9yB,EADYxlT,EAASq+J,aAAa/1pB,GACVljL,SAAS,UACjChzK,EAAOozoC,EAAY70pC,IAAI,cACvB8iiC,EAAa+xH,EAAY70pC,IAAI,UAE5B,GAAeyhB,KAClBA,EAAO,CAACA,EAAMA,IAGhB,IAAIuttB,EAAYqgI,EAAS+9J,cAAcz1pB,EAAK,SACxCvtP,EAAQyqiC,EAAY70pC,IAAI,UAAYgvuB,GAAaA,EAAUirC,OAC3DljR,EAASl6f,KAAK669B,QAAQ,GAEtB769B,KAAKqllC,cAAgBp/C,IAEvBjmiC,KAAK6yB,OAAOqne,IACZA,EAAS,GAAa+riB,GAAa,IAAM,GAAK,EAAG,EAAG146B,IAC7CwvE,GAAK,IACZm9T,EAAO8xe,SAAU,EACjBhs+B,KAAKmlB,IAAI+0e,IAINA,IAKLA,EAAO51F,SAAS,cAAe/2S,GAC/B2sY,EAAO51F,SAAS0zvB,EAAYjsK,aAAa,CAAC,WAC1C7xf,EAAOthY,OAASh0G,EAAK,GACrBs1e,EAAOrhY,OAASj0G,EAAK,GACrBs1e,EAAOusiB,SAASl56B,GAChBvtH,KAAKqllC,YAAcp/C,EACnBjmiC,KAAKi4pC,aAAerzoC,EAEpB5kB,KAAKk4pC,uBAAuB1lT,EAAUwlT,EAAal9yB,GACrD,EAEAg9yB,EAAWp4pC,UAAUw4pC,uBAAyB,SAAU1lT,EAAUwlT,EAAal9yB,GAC7E,IAAIo/I,EAASl6f,KAAK669B,QAAQ,GAE1B,GAAK3ge,EAAL,CAIA,IAAI5ud,EAASkn0B,EAASo2M,cAAc9tsB,GAChCk8yB,EAAqC,IAA5BgB,EAAY70pC,IAAI,UACzB05O,EAAOm76B,EAAY70pC,IAAI,QACvBg1pC,EAAYH,EAAY70pC,IAAI,aAC5Bi1pC,EAAgBJ,EAAY70pC,IAAI,iBAChCk1pC,EAAY,GAAgBL,EAAY70pC,IAAI,UAAU,SAAU23W,GAClE,OAAOA,EAAM03f,EAASjpzB,QAAUytmC,EAAS,CAC3C,IAUA,GARA98pB,EAAO/xd,QAAS,EAEhBnoC,KAAKs4pC,uBAAuBp+pB,EAAQ5ud,GAEhC8snC,EAAgB,IAClBpB,EAASh3pC,KAAKu4pC,eAAer+pB,GAAUk+pB,EAAgB,KAGrDpB,IAAWh3pC,KAAKw4pC,SAAW376B,IAAS78O,KAAKwxT,OAAS2m2B,IAAcn4pC,KAAKy4pC,WAAY,CACnFv+pB,EAAOy+d,gBACP,IAAI+/L,OAAW,EAGbA,EADE,GAAkBL,GACTA,EAAUv9yB,GAEVu9yB,EAGTn+pB,EAAOy+pB,IAAM,IACfD,GAAY1B,EAAS98pB,EAAOy+pB,KAG9B34pC,KAAK44pC,eAAe1+pB,EAAQ88pB,EAAQ0B,EAAU776B,EAAMs76B,EACtD,CAEAn4pC,KAAKw4pC,QAAUxB,EACfh3pC,KAAKwxT,MAAQ30E,EACb78O,KAAKy4pC,WAAaN,CAtClB,CAuCF,EAEAL,EAAWp4pC,UAAUk5pC,eAAiB,SAAU1+pB,EAAQ88pB,EAAQ0B,EAAU776B,EAAMs76B,GAC9E,GAAInB,EAAS,EAAG,CACd98pB,EAAOy+pB,IAAM,EACb,IAAI1jF,EAASj1kC,KACT2yP,EAAWunQ,EAAO1rQ,QAAQ,GAAI3R,GAAM8suB,KAAKwuM,EAAqB,EAATnB,EAAaA,EAAQ,CAC5E2B,IAAKR,EAAY,EAAI,IACpBh3mC,MAAMu3mC,GAAUvtM,QAAO,WACxB8pH,EAAO4jF,sBAAsB3+pB,EAC/B,IAEKr9Q,GACH8V,EAASzxP,MAAK,WACZ+zkC,EAAOpijC,OAAOqne,EAChB,IAGFvnQ,EAASnsN,OACX,CACF,EAEAsxnC,EAAWp4pC,UAAU64pC,eAAiB,SAAUr+pB,GAE9C,OAAO,GAAUA,EAAO4+pB,KAAM5+pB,EAAO6+pB,OAAS,GAAU7+pB,EAAO6+pB,MAAO7+pB,EAAO8+pB,KAC/E,EAEAlB,EAAWp4pC,UAAU44pC,uBAAyB,SAAUp+pB,EAAQ5ud,GAC9D4ud,EAAO4+pB,KAAOxtnC,EAAO,GACrB4ud,EAAO8+pB,KAAO1tnC,EAAO,GACrB4ud,EAAO6+pB,MAAQztnC,EAAO,IAAM,EAAEA,EAAO,GAAG,GAAKA,EAAO,GAAG,IAAM,GAAIA,EAAO,GAAG,GAAKA,EAAO,GAAG,IAAM,EAClG,EAEAwsnC,EAAWp4pC,UAAUizjB,WAAa,SAAU6/S,EAAU13f,EAAKoquB,GACzDlllC,KAAK669B,QAAQ,GAAGloa,WAAW6/S,EAAU13f,EAAKoquB,GAE1ClllC,KAAK+3pC,oBAAoBvlT,EAAU13f,EACrC,EAEAg9yB,EAAWp4pC,UAAUm5pC,sBAAwB,SAAU3+pB,GACrD,IAAI75Q,EAAK65Q,EAAO4+pB,KACZ/05B,EAAKm2P,EAAO8+pB,KACZ/mI,EAAM/3hB,EAAO6+pB,MACb35pC,EAAI86f,EAAOy+pB,IAAM,EAAIz+pB,EAAOy+pB,IAAM,EAAIz+pB,EAAOy+pB,IAC7Ct2iC,EAAM,CAAC63Y,EAAOj2f,EAAGi2f,EAAOl3f,GACxBkokC,EAAU7o9B,EAAItgH,QACdws+B,EAAc,GACd0qL,EAAwB,GAC5B52iC,EAAI,GAAKks3B,EAAYluvB,EAAG,GAAI4xyB,EAAI,GAAIluxB,EAAG,GAAI3kQ,GAC3CijH,EAAI,GAAKks3B,EAAYluvB,EAAG,GAAI4xyB,EAAI,GAAIluxB,EAAG,GAAI3kQ,GAE3C,IAAIi/rB,EAAKnkM,EAAOy+pB,IAAM,EAAIM,EAAsB546B,EAAG,GAAI4xyB,EAAI,GAAIluxB,EAAG,GAAI3kQ,GAAK65pC,EAAsBl15B,EAAG,GAAIkuxB,EAAI,GAAI5xyB,EAAG,GAAI,EAAIjhP,GACvH2gwB,EAAK7lQ,EAAOy+pB,IAAM,EAAIM,EAAsB546B,EAAG,GAAI4xyB,EAAI,GAAIluxB,EAAG,GAAI3kQ,GAAK65pC,EAAsBl15B,EAAG,GAAIkuxB,EAAI,GAAI5xyB,EAAG,GAAI,EAAIjhP,GAC3H86f,EAAO3zY,UAAY1jH,KAAK0xH,MAAMwroB,EAAI1hE,GAAMx7rB,KAAKsmC,GAAK,EAEzB,SAArBnpC,KAAKqllC,aAA+C,SAArBrllC,KAAKqllC,aAA+C,cAArBrllC,KAAKqllC,mBAC9Ct3iC,IAAnBmsd,EAAOg/pB,SAAyBh/pB,EAAOg/pB,QAAUh/pB,EAAOy+pB,KAC1Dz+pB,EAAOrhY,OAAmC,KAA1B,GAAUqy8B,EAAS7o9B,GAEzB,IAANjjH,IACFijH,EAAI,GAAK6o9B,EAAQ,IAAM7o9B,EAAI,GAAK6o9B,EAAQ,IAAM,EAC9C7o9B,EAAI,GAAK6o9B,EAAQ,IAAM7o9B,EAAI,GAAK6o9B,EAAQ,IAAM,IAEpB,IAAnBhxkB,EAAOg/pB,QAEhBh/pB,EAAOrhY,OAAS,EAAI,GAAUwnH,EAAIh+H,GAElC63Y,EAAOrhY,OAAS74H,KAAKi4pC,aAAa,IAItC/9pB,EAAOg/pB,QAAUh/pB,EAAOy+pB,IACxBz+pB,EAAO/xd,QAAS,EAChB+xd,EAAOj2f,EAAIo+G,EAAI,GACf63Y,EAAOl3f,EAAIq/G,EAAI,EACjB,EAEAy1iC,EAAWp4pC,UAAU+rhC,aAAe,SAAUj5K,EAAU13f,GACtD96W,KAAK669B,QAAQ,GAAG4wD,aAAaj5K,EAAU13f,GACvC,IAAIk9yB,EAAcxlT,EAASq+J,aAAa/1pB,GAAKljL,SAAS,UAEtD53L,KAAKk4pC,uBAAuB1lT,EAAUwlT,EAAal9yB,EACrD,EAEOg9yB,CACT,CA1LA,CA0LE,IAEF,YCtMA,IAAI,GAEJ,SAAUpvyB,GAGR,SAASu4C,EAASuxc,EAAU13f,EAAKoquB,GAC/B,IAAIx4hC,EAAQg8T,EAAO9oX,KAAKI,OAASA,KAIjC,OAFA0sD,EAAMysmC,gBAAgB3mT,EAAU13f,EAAKoquB,GAE9Bx4hC,CACT,CAgEA,OAxEAkgX,EAAU3L,EAAUv4C,GAUpBu4C,EAASvha,UAAUy5pC,gBAAkB,SAAU3mT,EAAU13f,EAAKoquB,GAE5D,IAAI55iC,EAASkn0B,EAASo2M,cAAc9tsB,GAChCx7T,EAAO,IAAI,GAAiB,CAC9BgjL,MAAO,CACLh3L,OAAQA,KAGZtrC,KAAKmlB,IAAIm6B,GAETt/C,KAAKgvoC,iBAAiBx8R,EAAU13f,EAAKoquB,EACvC,EAIAjkrB,EAASvha,UAAUizjB,WAAa,SAAU6/S,EAAU13f,EAAKoquB,GACvD,IAAIliG,EAAcxwI,EAASyxM,UAO3B,GANWjkjC,KAAK669B,QAAQ,GACX,CACXv4vB,MAAO,CACLh3L,OAAQkn0B,EAASo2M,cAAc9tsB,KAGDkooB,EAAalooB,GAE/C96W,KAAKgvoC,iBAAiBx8R,EAAU13f,EAAKoquB,EACvC,EAIAjkrB,EAASvha,UAAUsvoC,iBAAmB,SAAUx8R,EAAU13f,EAAKoquB,GAC7D,IAAI5liC,EAAOt/C,KAAK669B,QAAQ,GACpB6pB,EAAYlyI,EAASq+J,aAAa/1pB,GAClCo0xB,EAAoBhqD,GAAeA,EAAYgqD,kBAC/Cp+xB,EAAQo0uB,GAAeA,EAAYp0uB,MACnCyxoB,EAAY2iG,GAAeA,EAAY3iG,UACvC6jG,EAAmBlB,GAAeA,EAAYkB,iBAElD,IAAKlB,GAAe1yO,EAAS43K,cAAe,CAC1C,IAAIk8D,EAAgB5hG,EAAU9szB,SAAS,YACvCs38B,EAAoB5oD,EAAc1u5B,SAAS,aAAag0zB,eACxDw6F,EAAmBE,EAAcnjlC,IAAI,YACrC2tW,EAAQw1uB,EAAcnjlC,IAAI,SAC1Bo/+B,EAAY+jG,EAAcnjlC,IAAI,YAChC,CAEAm8C,EAAK8qW,SAASood,EAAS+9J,cAAcz1pB,EAAK,UAC1Cx7T,EAAKjrC,MAAM+oH,KAAO,KAClB99E,EAAKjrC,MAAM8+9B,eAAgB,EACH7z7B,EAAKk26B,YAAY,YACvBnh9B,MAAQ66nC,EAC1B/qJ,GAAoBnk/B,KAAM8wW,EAAOyxoB,EAAW6jG,EAC9C,EAIAnlrB,EAASvha,UAAU+rhC,aAAe,SAAUj5K,EAAU13f,GACrC96W,KAAK669B,QAAQ,GACnBj0kB,SAAS,SAAU4rd,EAASo2M,cAAc9tsB,GACrD,EAGOmmD,CACT,CA1EA,CA0EE,IAEF,YC7EA,IAAIm4vB,GAEJ,SAAU1wyB,GAGR,SAAS0wyB,IACP,IAAI1smC,EAAmB,OAAXg8T,GAAmBA,EAAOnoX,MAAMP,KAAMI,YAAcJ,KAIhE,OAFA0sD,EAAM2smC,WAAa,EACnB3smC,EAAM4smC,kBAAoB,EACnB5smC,CACT,CA6FA,OArGAkgX,EAAUwsvB,EAAgB1wyB,GAW1B0wyB,EAAe15pC,UAAUqvoC,WAAa,SAAUv8R,EAAU13f,EAAKoquB,GAC7D,OAAO,IAAI,GAAS1yO,EAAU13f,EAAKoquB,EACrC,EAIAk0E,EAAe15pC,UAAU44pC,uBAAyB,SAAUp+pB,EAAQ5ud,GAClEtrC,KAAK8vlC,QAAUxkjC,EAIf,IAHA,IAAIiunC,EAAY,CAAC,GACb16hC,EAAM,EAEDj+H,EAAI,EAAGA,EAAI0qC,EAAOjrC,OAAQO,IAAK,CACtC,IAAIy/O,EAAK/0M,EAAO1qC,EAAI,GAChBmjQ,EAAKz4N,EAAO1qC,GAChBi+H,GAAO,GAAUwhH,EAAI0jB,GACrBw15B,EAAU13pC,KAAKg9H,EACjB,CAEA,GAAY,IAARA,EAAJ,CAKA,IAASj+H,EAAI,EAAGA,EAAI24pC,EAAUl5pC,OAAQO,IACpC24pC,EAAU34pC,IAAMi+H,EAGlB7+H,KAAKw5pC,SAAWD,EAChBv5pC,KAAKu+L,QAAU1/D,CAPf,MAFE7+H,KAAKu+L,QAAU,CAUnB,EAIA669B,EAAe15pC,UAAU64pC,eAAiB,WACxC,OAAOv4pC,KAAKu+L,OACd,EAIA669B,EAAe15pC,UAAUm5pC,sBAAwB,SAAU3+pB,GACzD,IAAI96f,EAAI86f,EAAOy+pB,IAAM,EAAIz+pB,EAAOy+pB,IAAM,EAAIz+pB,EAAOy+pB,IAC7CrtnC,EAAStrC,KAAK8vlC,QACdr77B,EAAUz0J,KAAKw5pC,SACf36hC,EAAMvzF,EAAOjrC,OAEjB,GAAKo0J,EAAL,CAKA,IACI39G,EADAqx6B,EAAYno9B,KAAKq5pC,WAGrB,GAAIj6pC,EAAIY,KAAKs5pC,kBAAmB,CAK9B,IAAKxinC,EAFOj0C,KAAKgL,IAAIs68B,EAAY,EAAGtp1B,EAAM,GAEtB/nF,GAAS,KACvB29G,EAAQ39G,IAAU13C,GADQ03C,KAOhCA,EAAQj0C,KAAKgL,IAAIipC,EAAO+nF,EAAM,EAChC,KAAO,CACL,IAAK/nF,EAAQqx6B,EAAWrx6B,EAAQ+nF,KAC1B41B,EAAQ39G,GAAS13C,GADc03C,KAMrCA,EAAQj0C,KAAKgL,IAAIipC,EAAQ,EAAG+nF,EAAM,EACpC,CAEA,IAAI/7H,GAAK1D,EAAIq1J,EAAQ39G,KAAW29G,EAAQ39G,EAAQ,GAAK29G,EAAQ39G,IACzD+gF,EAAKvsF,EAAOwL,GACZupM,EAAK/0M,EAAOwL,EAAQ,GACxBojd,EAAOj2f,EAAI4zH,EAAG,IAAM,EAAI/0H,GAAKA,EAAIu9O,EAAG,GACpC65Q,EAAOl3f,EAAI60H,EAAG,IAAM,EAAI/0H,GAAKA,EAAIu9O,EAAG,GACpC,IAAIg+c,EAAKnkM,EAAOy+pB,IAAM,EAAIt46B,EAAG,GAAKxoH,EAAG,GAAKA,EAAG,GAAKwoH,EAAG,GACjD0/gB,EAAK7lQ,EAAOy+pB,IAAM,EAAIt46B,EAAG,GAAKxoH,EAAG,GAAKA,EAAG,GAAKwoH,EAAG,GACrD65Q,EAAO3zY,UAAY1jH,KAAK0xH,MAAMwroB,EAAI1hE,GAAMx7rB,KAAKsmC,GAAK,EAClDnpC,KAAKq5pC,WAAavinC,EAClB92C,KAAKs5pC,kBAAoBl6pC,EACzB86f,EAAO/xd,QAAS,CAtChB,CAuCF,EAGOixnC,CACT,CAvGA,CAuGE,IAEF,YCzGA,IAAIK,GAGF,WACEz5pC,KAAKgha,UAAW,EAChBhha,KAAKo1nC,UAAY,EACjBp1nC,KAAK05pC,KAAO,EACd,EAKEC,GAEJ,SAAUjxyB,GAGR,SAASixyB,EAAet9mC,GACtB,IAAIqQ,EAAQg8T,EAAO9oX,KAAKI,KAAMq8C,IAASr8C,KAIvC,OAFA0sD,EAAMo2iC,KAAO,EACbp2iC,EAAMq2iC,cAAgB,EACfr2iC,CACT,CA+JA,OAvKAkgX,EAAU+svB,EAAgBjxyB,GAU1BixyB,EAAej6pC,UAAUuhE,MAAQ,WAC/BjhE,KAAKs0hC,UAAW,EAChBt0hC,KAAK8imC,KAAO,CACd,EAEA62D,EAAej6pC,UAAUm0+B,gBAAkB,WACzC,MAAO,CACLz2N,OAAQ,OACRhgpB,KAAM,KAEV,EAEAu8hC,EAAej6pC,UAAUk0+B,gBAAkB,WACzC,OAAO,IAAI6lL,EACb,EAEAE,EAAej6pC,UAAUg0+B,UAAY,SAAUp8vB,EAAKhV,GAClD,IAEI1hO,EAFA84pC,EAAOp37B,EAAMo37B,KACbtkC,EAAY9y5B,EAAM8y5B,UAGtB,GAAI9y5B,EAAM0+L,SACR,IAAKpga,EAAIZ,KAAK8imC,KAAMlimC,EAAI84pC,EAAKr5pC,QAAS,CACpC,IAAIkpD,EAAQmwmC,EAAK94pC,KAEjB,GAAI2oD,EAAQ,EAAG,CACb+tL,EAAIyvhB,OAAO2yZ,EAAK94pC,KAAM84pC,EAAK94pC,MAE3B,IAAK,IAAI8C,EAAI,EAAGA,EAAI6lD,EAAO7lD,IACzB4zO,EAAI0vhB,OAAO0yZ,EAAK94pC,KAAM84pC,EAAK94pC,KAE/B,CACF,MAEA,IAAKA,EAAIZ,KAAK8imC,KAAMlimC,EAAI84pC,EAAKr5pC,QAAS,CACpC,IAAI+lP,EAAKsz6B,EAAK94pC,KACV6wL,EAAKio+B,EAAK94pC,KACVgnT,EAAK8x2B,EAAK94pC,KACV8wL,EAAKgo+B,EAAK94pC,KAGd,GAFA02O,EAAIyvhB,OAAO3ghB,EAAI30D,GAEX2j8B,EAAY,EAAG,CACjB,IAAIt47B,GAAMspD,EAAKwhE,GAAM,GAAKn2H,EAAKC,GAAM0j8B,EACjC39/B,GAAMg6D,EAAKC,GAAM,GAAKk2H,EAAKxhE,GAAMgv4B,EACrC994B,EAAIs5vB,iBAAiB9zyB,EAAIrlE,EAAImwL,EAAIl2H,EACnC,MACE4lD,EAAI0vhB,OAAOp/c,EAAIl2H,EAEnB,CAGE1xL,KAAK0t+B,cACP1t+B,KAAK8imC,KAAOlimC,EACZZ,KAAKs0hC,UAAW,EAEpB,EAEAqlI,EAAej6pC,UAAU0jmC,cAAgB,SAAUn/lC,EAAGjB,GACpD,IAAIs/N,EAAQtiO,KAAKsiO,MACbo37B,EAAOp37B,EAAMo37B,KACbtkC,EAAY9y5B,EAAM8y5B,UAClB/izB,EAAYryU,KAAKqU,MAAMg+T,UAE3B,GAAI/vG,EAAM0+L,SAGR,IAFA,IAAI37P,EAAY,EAEPzkK,EAAI,EAAGA,EAAI84pC,EAAKr5pC,QAAS,CAChC,IAAIkpD,EAAQmwmC,EAAK94pC,KAEjB,GAAI2oD,EAAQ,EAIV,IAHA,IAAI68L,EAAKsz6B,EAAK94pC,KACV6wL,EAAKio+B,EAAK94pC,KAEL8C,EAAI,EAAGA,EAAI6lD,EAAO7lD,IAIzB,GAAI,GAA0B0iP,EAAI30D,EAH9Bm2H,EAAK8x2B,EAAK94pC,KACV8wL,EAAKgo+B,EAAK94pC,KAEgCyxU,EAAWpuU,EAAGjB,GAC1D,OAAOqiK,EAKbA,GACF,MAIA,IAFIA,EAAY,EAEPzkK,EAAI,EAAGA,EAAI84pC,EAAKr5pC,QAAS,CAC5B+lP,EAAKsz6B,EAAK94pC,KACV6wL,EAAKio+B,EAAK94pC,KADd,IAEIgnT,EAAK8x2B,EAAK94pC,KACV8wL,EAAKgo+B,EAAK94pC,KAEd,GAAIw0nC,EAAY,GAId,GAAI,GAA+Bhv4B,EAAI30D,GAH7B20D,EAAKwhE,GAAM,GAAKn2H,EAAKC,GAAM0j8B,GAC3B3j8B,EAAKC,GAAM,GAAKk2H,EAAKxhE,GAAMgv4B,EAEcxt0B,EAAIl2H,EAAI2gJ,EAAWpuU,EAAGjB,GACvE,OAAOqiK,OAGT,GAAI,GAA0B+gF,EAAI30D,EAAIm2H,EAAIl2H,EAAI2gJ,EAAWpuU,EAAGjB,GAC1D,OAAOqiK,EAIXA,GACF,CAGF,OAAQ,CACV,EAEAs0/B,EAAej6pC,UAAUk08B,QAAU,SAAU3v8B,EAAGjB,GAC9C,IAAI6x+B,EAAW70+B,KAAKix9B,sBAAsBht9B,EAAGjB,GACzC0wF,EAAO1zF,KAAKmkP,kBAIhB,OAHAlgP,EAAI4w+B,EAAS,GACb7x+B,EAAI6x+B,EAAS,GAETnh5B,EAAKkg3B,QAAQ3v8B,EAAGjB,IAEJhD,KAAK+imC,aAAe/imC,KAAKojmC,cAAcn/lC,EAAGjB,KACtC,GAGpBhD,KAAK+imC,cAAgB,GACd,EACT,EAEA42D,EAAej6pC,UAAUykP,gBAAkB,WAEzC,IAAIzwJ,EAAO1zF,KAAK6s+B,MAEhB,IAAKn54B,EAAM,CAQT,IAPA,IACIpoD,EADQtrC,KAAKsiO,MACEo37B,KACfn/+B,EAAOx6G,IACPy6G,EAAOz6G,IACP06G,GAAO,IACPC,GAAO,IAEF95K,EAAI,EAAGA,EAAI0qC,EAAOjrC,QAAS,CAClC,IAAI4D,EAAIqnC,EAAO1qC,KACXoC,EAAIsoC,EAAO1qC,KACf25K,EAAO13K,KAAKgL,IAAI5J,EAAGs2K,GACnBE,EAAO53K,KAAK8K,IAAI1J,EAAGw2K,GACnBD,EAAO33K,KAAKgL,IAAI7K,EAAGw3K,GACnBE,EAAO73K,KAAK8K,IAAI3K,EAAG03K,EACrB,CAEAhnF,EAAO1zF,KAAK6s+B,MAAQ,IAAI,GAAqBtyzB,EAAMC,EAAMC,EAAMC,EACjE,CAEA,OAAOhnF,CACT,EAEOimkC,CACT,CAzKA,CAyKE,IA0IF,SAtIA,WACE,SAASC,IACP55pC,KAAKo7T,MAAQ,IAAI,EACnB,CAgIA,OA1HAw+1B,EAAcl6pC,UAAUizjB,WAAa,SAAUnjjB,GAC7CxP,KAAKo3lC,SAEL,IAAIyiE,EAAS75pC,KAAKsjmC,UAElBu2D,EAAOjzwB,SAAS,CACd8ywB,KAAMlqpC,EAAKm5iC,UAAU,iBAGvB3ojC,KAAKujmC,WAAWs2D,EAAQrqpC,EAC1B,EAOAoqpC,EAAcl6pC,UAAUyolC,yBAA2B,SAAU34kC,GAC3DxP,KAAKo7T,MAAMvtE,YAEX7tP,KAAKo3lC,QACP,EAOAwiE,EAAcl6pC,UAAU2olC,kBAAoB,SAAUC,EAAY94kC,GAChE,IAAIg0lC,EAAYxjmC,KAAKyjmC,UAAU,GAC3B16B,EAAav5jC,EAAKm5iC,UAAU,eAC5BmxG,EAAUt2D,GAAaA,EAAUlh4B,MAAMo37B,KAG3C,GAAII,GAAWA,EAAQz5pC,OAAS,IAAK,CACnC,IAAI04gC,EAAS+gJ,EAAQz5pC,OACjB05pC,EAAU,IAAI/5oC,aAAa+4/B,EAASgwD,EAAW1okC,QAEnD05pC,EAAQ9tpC,IAAI6tpC,GACZC,EAAQ9tpC,IAAI88jC,EAAYhwD,GACxByqF,EAAU58sB,SAAS,CACjB8ywB,KAAMK,GAEV,KAAO,CAEL/5pC,KAAKyjmC,UAAY,GAEjB,IAAIo2D,EAAS75pC,KAAKsjmC,UAElBu2D,EAAOnsL,aAAc,EACrBmsL,EAAOjzwB,SAAS,CACd8ywB,KAAM3wF,IAGR/okC,KAAKujmC,WAAWs2D,EAAQrqpC,GAExBqqpC,EAAOlpF,aAAe2X,EAAW9hjC,KACnC,CACF,EAMAoznC,EAAcl6pC,UAAUmzB,OAAS,WAC/B7yB,KAAKo3lC,QACP,EAEAwiE,EAAcl6pC,UAAUmshC,aAAe,SAAUnq9B,GAC/C1hE,KAAKyjmC,UAAU,IAAM/hiC,EAAG1hE,KAAKyjmC,UAAU,GACzC,EAEAm2D,EAAcl6pC,UAAU4jmC,QAAU,WAChC,IAAIu2D,EAAS,IAAIF,GAAe,CAC9Bt4gC,OAAQ,UACR40zB,qBAAqB,IAMvB,OAHAj28B,KAAKyjmC,UAAU5hmC,KAAKg4pC,GAEpB75pC,KAAKo7T,MAAMj2S,IAAI00oC,GACRA,CACT,EAEAD,EAAcl6pC,UAAU6jmC,WAAa,SAAUs2D,EAAQrqpC,EAAMwqpC,GAC3D,IAAI/1G,EAAYz0iC,EAAKy0iC,UACrB41G,EAAOjzwB,SAAS,CACdoa,SAAUijpB,EAAU9gjC,IAAI,YACxBiynC,UAAWnxE,EAAU9gjC,IAAI,CAAC,YAAa,gBAEzC02pC,EAAOzvwB,SAAS65pB,EAAUrs3B,SAAS,aAAag0zB,gBAChDiuK,EAAOxlpC,MAAM8+9B,eAAgB,EAC7B,IAAI9+9B,EAAQ7E,EAAKsshC,UAAU,SAEvBznhC,GAASA,EAAM+owB,QACjBy8Y,EAAOv1vB,SAAS,SAAUjwZ,EAAM+owB,QAGlCy8Y,EAAOv1vB,SAAS,OAAQ,MACxB,IAAI64kB,EAASH,GAAU68K,GAGvB18K,EAAOD,YAAc+mE,EAAU/mE,YAC/B28K,EAAOjppC,GAAG,aAAa,SAAUzR,GAC/Bg++B,EAAO930B,UAAY,KACnB,IAAIA,EAAYw0/B,EAAO92D,aAEnB197B,EAAY,IAEd830B,EAAO930B,UAAYA,EAAYw0/B,EAAOlpF,aAE1C,GACF,EAIAipF,EAAcl6pC,UAAU03lC,OAAS,WAC/Bp3lC,KAAKyjmC,UAAY,GACjBzjmC,KAAKo7T,MAAMvtE,WACb,EAGO+r6B,CACT,CApIA,GC9LA,IAAIK,GAAc,CAChBx9U,WAAY,QACZg1L,KAAMqa,KACN7q9B,MAAO,SAAU+h7B,GACf,IAAIE,EAAWF,EAAYjx3B,iBAE3B,GAAKmx3B,EAAL,CAQA,IAAIg3K,EAAal3K,EAAY7/+B,IAAI,YAC7B4zjC,EAAU/zE,EAAY+oC,gBAAgB7zM,MAC1C,MAAO,CACL+6L,SAAU,SAAU5q+B,EAAQmq0B,GAC1B,IAAIr+Y,EAAa,GAEjB,GAAI4imB,EAAS,CACX,IAAIzrhC,OAAS,EACTkm8B,EAAWnp8B,EAAO5B,IAAM4B,EAAO7B,MAEnC,GAAI0znC,EAAY,CAGd,IAFA,IAAIC,EAAmB,EAEdv5pC,EAAIynC,EAAO7B,MAAO5lC,EAAIynC,EAAO5B,IAAK7lC,IACzCu5pC,GAAoBn3K,EAAYo3K,mBAAmBx5pC,GAGrD0qC,EAAS,IAAItrB,aAAawx9B,EAA8B,EAAnB2oL,EACvC,MACE7unC,EAAS,IAAItrB,aAAwB,EAAXwx9B,GAG5B,IAAIrv7B,EAAS,EACTh2C,EAAK,GAET,IAASvL,EAAIynC,EAAO7B,MAAO5lC,EAAIynC,EAAO5B,IAAK7lC,IAAK,CAC9C,IAAIi+H,EAAMmk3B,EAAYq3K,cAAcz5pC,EAAGuzd,GAEnC+lsB,IACF5unC,EAAO6W,KAAY08E,GAGrB,IAAK,IAAIn7H,EAAI,EAAGA,EAAIm7H,EAAKn7H,IACvByI,EAAK+2+B,EAASy0E,YAAYxjmB,EAAWzwd,IAAI,EAAOyI,GAChDm/B,EAAO6W,KAAYh2C,EAAG,GACtBm/B,EAAO6W,KAAYh2C,EAAG,EAE1B,CAEAqm2B,EAASk2M,UAAU,cAAep9gC,EACpC,MACE,IAAS1qC,EAAIynC,EAAO7B,MAAO5lC,EAAIynC,EAAO5B,IAAK7lC,IAAK,CAC9C,IAAI8j/B,EAAYlyI,EAASq+J,aAAajwgC,GAElC4voC,GADA3xgC,EAAMmk3B,EAAYq3K,cAAcz5pC,EAAGuzd,GAC7B,IAEV,GAAI+lsB,EACF,IAAK,IAAI91pC,EAAI,EAAGA,EAAIy6H,EAAKz6H,IACvBosoC,EAAI3uoC,KAAKqh/B,EAASy0E,YAAYxjmB,EAAW/vd,SAEtC,CACLosoC,EAAI,GAAKttJ,EAASy0E,YAAYxjmB,EAAW,IACzCq8qB,EAAI,GAAKttJ,EAASy0E,YAAYxjmB,EAAW,IACzC,IAAIihqB,EAAY1wI,EAAUvh/B,IAAI,CAAC,YAAa,eAEvCiynC,IACHob,EAAI,GAAK,EAAEA,EAAI,GAAG,GAAKA,EAAI,GAAG,IAAM,GAAKA,EAAI,GAAG,GAAKA,EAAI,GAAG,IAAMpb,GAAYob,EAAI,GAAG,GAAKA,EAAI,GAAG,IAAM,GAAKA,EAAI,GAAG,GAAKA,EAAI,GAAG,IAAMpb,GAEzI,CAEA5iR,EAASq2M,cAAcjojC,EAAG4voC,EAC5B,CAEJ,EAjEF,CAmEF,GAEF,YCgGA,GAxKA,SAAU9nxB,GAGR,SAAS4xyB,IACP,IAAI5tmC,EAAmB,OAAXg8T,GAAmBA,EAAOnoX,MAAMP,KAAMI,YAAcJ,KAGhE,OADA0sD,EAAMngD,KAAO+tpC,EAAU/tpC,KAChBmgD,CACT,CA6JA,OApKAkgX,EAAU0tvB,EAAW5xyB,GASrB4xyB,EAAU56pC,UAAU4uH,OAAS,SAAU003B,EAAa1f,EAASr07B,GAC3D,IAAIz/B,EAAOwz+B,EAAYx+2B,UAEnBosgC,EAAW5woC,KAAKu6pC,gBAAgB/qpC,EAAMwz+B,GAEtCvpC,EAASupC,EAAY7/+B,IAAI,UACzB6wL,EAAcgvzB,EAAY7/+B,IAAI,CAAC,SAAU,gBACzCoV,EAAK02B,EAAIk9/B,QAIT2H,EAAiC,QAAzBv7hC,EAAG677B,QAAQpv6B,UAElB8ugC,GACHv7hC,EAAG677B,QAAQogI,SAAS/6H,GAAQz07B,OAAM,GAIZ,MAApBhlB,KAAKw6pC,aAAwB1mH,GAC/Bv7hC,EAAGik9B,YAAYx89B,KAAKw6pC,YAAa,CAC/BpqF,YAAY,IAIZpwkC,KAAKy6pC,YAAYz3K,IAAgBhvzB,EAAc,IAC5C8/2B,GACHv7hC,EAAGik9B,YAAY/iB,EAAQ,CACrB22H,YAAY,EACZC,eAAgBxtkC,KAAK8K,IAAI9K,KAAKgL,IAAImmL,EAAc,GAAK,GAAK,GAAI,MAOpE488B,EAASj+kB,WAAWnjjB,GACpB,IAAIi8wB,EAAWu3N,EAAY7/+B,IAAI,QAAQ,IAASgolC,GAAenoG,EAAYjx3B,kBAAkB,EAAOix3B,GAEhGv3N,EACFzrxB,KAAKo7T,MAAMw5pB,YAAYnpM,GAEvBzrxB,KAAKo7T,MAAM28pB,iBAGb/39B,KAAKw6pC,YAAc/gN,EACnBz58B,KAAK44Z,WAAY,CACnB,EAEA0hwB,EAAU56pC,UAAU85hC,yBAA2B,SAAUx2C,EAAa1f,EAASr07B,GAC7E,IAAIz/B,EAAOwz+B,EAAYx+2B,UAERxkI,KAAKu6pC,gBAAgB/qpC,EAAMwz+B,GAEjCmlG,yBAAyB34kC,GAElCxP,KAAKg2kC,YAAY/miC,GAEjBjvC,KAAK44Z,WAAY,CACnB,EAEA0hwB,EAAU56pC,UAAU+5hC,kBAAoB,SAAU6uD,EAAYtlG,EAAa1f,GACzEtj+B,KAAKiyoC,UAAU5pD,kBAAkBC,EAAYtlG,EAAYx+2B,WAEzDxkI,KAAK44Z,UAAY0vrB,EAAW7hjC,MAAQu88B,EAAYx+2B,UAAUj7E,OAC5D,EAEA+wmC,EAAU56pC,UAAUmshC,aAAe,SAAUnq9B,GAC3C1hE,KAAKiyoC,WAAajyoC,KAAKiyoC,UAAUpmH,aAAanq9B,EAChD,EAEA44lC,EAAU56pC,UAAU+68B,gBAAkB,SAAUuoC,EAAa1f,EAASr07B,GACpE,IAAIz/B,EAAOwz+B,EAAYx+2B,UACnBun5B,EAAkB/oC,EAAY+oC,gBAElC,IAAK/rhC,KAAK44Z,WAAamznB,EAAgB7zM,OAAS6zM,EAAgBG,kBAE9D,MAAO,CACL398B,QAAQ,GAKV,IAAI82E,EAAM,GAAYpkF,MAAM+h7B,EAAa1f,EAASr07B,GAE9Co2G,EAAI4t3B,UACN5t3B,EAAI4t3B,SAAS,CACXzs+B,MAAO,EACPC,IAAKj3B,EAAK+5C,QACVA,MAAO/5C,EAAK+5C,SACX/5C,GAILxP,KAAKiyoC,UAAUxmH,eAEfzrhC,KAAKg2kC,YAAY/miC,EAErB,EAEAqrnC,EAAU56pC,UAAU66pC,gBAAkB,SAAU/qpC,EAAMwz+B,GACpD,IAAI4tJ,EAAW5woC,KAAKiyoC,UAEhByoB,EAAY16pC,KAAKy6pC,YAAYz3K,GAE7Bk3K,IAAel3K,EAAY7/+B,IAAI,YAE/Bo0lC,EADkBv0G,EAAY+oC,gBACA7zM,MAoBlC,OAZK04T,GAAY8pB,IAAc16pC,KAAK26pC,WAAaT,IAAel6pC,KAAK46pC,aAAerjE,IAAgBv3lC,KAAKi3lC,eACnG25C,GACFA,EAAS/9mC,SAGX+9mC,EAAW5woC,KAAKiyoC,UAAY16C,EAAc,IAAI,GAAkB,IAAI,GAAS2iE,EAAaQ,EAAY,GAAiB,GAAWA,EAAY,GAAa,IAC3J16pC,KAAK26pC,UAAYD,EACjB16pC,KAAK46pC,YAAcV,EACnBl6pC,KAAKi3lC,aAAeM,GAGtBv3lC,KAAKo7T,MAAMj2S,IAAIyrnC,EAASx10B,OACjBw10B,CACT,EAEA0pB,EAAU56pC,UAAU+6pC,YAAc,SAAUz3K,GAC1C,QAASA,EAAY7/+B,IAAI,CAAC,SAAU,QACtC,EAEAm3pC,EAAU56pC,UAAUs2kC,YAAc,SAAU/miC,GAE1C,IAAI12B,EAAK02B,EAAIk9/B,QACwB,QAAzB5zhC,EAAG677B,QAAQpv6B,WAEW,MAApBhlC,KAAKw6pC,aACjBjipC,EAAG677B,QAAQogI,SAASx0kC,KAAKw6pC,aAAax1oC,OAAM,EAEhD,EAEAs1oC,EAAU56pC,UAAUmzB,OAAS,SAAUyw8B,EAASr07B,GAC9CjvC,KAAKiyoC,WAAajyoC,KAAKiyoC,UAAUp/mC,SACjC7yB,KAAKiyoC,UAAY,KAEjBjyoC,KAAKg2kC,YAAY/miC,EACnB,EAEAqrnC,EAAU56pC,UAAU2l8B,QAAU,SAAUi+B,EAASr07B,GAC/CjvC,KAAK6yB,OAAOyw8B,EAASr07B,EACvB,EAEAqrnC,EAAU/tpC,KAAO,QACV+tpC,CACT,CAtKA,CAsKEt3W,IC3KF,IAAI63W,GAAmC,oBAAhB96oC,YAA8BtgB,MAAQsgB,YACzD+6oC,GAAqC,oBAAjB76oC,aAA+BxgB,MAAQwgB,aAE/D,SAAS86oC,GAAU/xJ,GACjB,IAAIx5/B,EAAOw5/B,EAAUx5/B,KAEjBA,GAAQA,EAAK,IAAMA,EAAK,GAAG,IAAMA,EAAK,GAAG,GAAGyvJ,QAK9C+p2B,EAAUx5/B,KAAO6f,EAAI7f,GAAM,SAAU8ggC,GACnC,IACIxggC,EAAS,CACX6nH,OAFW,CAAC244B,EAAQ,GAAGrx2B,MAAOqx2B,EAAQ,GAAGrx2B,QAa3C,OARIqx2B,EAAQ,GAAG5lgC,OACboF,EAAOsrM,SAAWk1zB,EAAQ,GAAG5lgC,MAG3B4lgC,EAAQ,GAAG5lgC,OACboF,EAAOkrpC,OAAS1qJ,EAAQ,GAAG5lgC,MAGtB4+7B,EAAS,CAACx57B,EAAQwggC,EAAQ,GAAIA,EAAQ,IAC/C,IAEJ,CAEA,IAAI2qJ,GAEJ,SAAUvyyB,GAGR,SAASuyyB,IACP,IAAIvumC,EAAmB,OAAXg8T,GAAmBA,EAAOnoX,MAAMP,KAAMI,YAAcJ,KAKhE,OAHA0sD,EAAMngD,KAAO0upC,EAAiB1upC,KAC9BmgD,EAAM899B,sBAAwB,YAC9B999B,EAAMw59B,eAAiB,SAChBx59B,CACT,CA+QA,OAxRAkgX,EAAUquvB,EAAkBvyyB,GAW5BuyyB,EAAiBv7pC,UAAUgxD,KAAO,SAAUmN,GAE1CA,EAAOruD,KAAOquD,EAAOruD,MAAQ,GAE7BurpC,GAAUl9lC,GAEV,IAAIr6C,EAASxjB,KAAKk7pC,wBAAwBr9lC,EAAOruD,MAEjDxP,KAAKm7pC,YAAc33oC,EAAO43oC,WAC1Bp7pC,KAAKq7pC,kBAAoB73oC,EAAO83oC,iBAE5B93oC,EAAO43oC,aACTv9lC,EAAOruD,KAAO,IAAIwQ,aAAawD,EAAO+lC,QAGxCm/T,EAAOhpX,UAAUgxD,KAAKnwD,MAAMP,KAAMI,UACpC,EAEA66pC,EAAiBv7pC,UAAUus/B,YAAc,SAAUpu7B,GAGjD,GAFAk9lC,GAAUl9lC,GAENA,EAAOruD,KAAM,CAEf,IAAIgU,EAASxjB,KAAKk7pC,wBAAwBr9lC,EAAOruD,MAEjDxP,KAAKm7pC,YAAc33oC,EAAO43oC,WAC1Bp7pC,KAAKq7pC,kBAAoB73oC,EAAO83oC,iBAE5B93oC,EAAO43oC,aACTv9lC,EAAOruD,KAAO,IAAIwQ,aAAawD,EAAO+lC,OAE1C,CAEAm/T,EAAOhpX,UAAUus/B,YAAY1r/B,MAAMP,KAAMI,UAC3C,EAEA66pC,EAAiBv7pC,UAAU4ugC,WAAa,SAAUjm+B,GAChD,IAAI7kB,EAASxjB,KAAKk7pC,wBAAwB7ynC,EAAO74B,MAE7CgU,EAAO43oC,aACJp7pC,KAAKm7pC,aAIRn7pC,KAAKm7pC,YAAchwN,GAAYnr8B,KAAKm7pC,YAAa33oC,EAAO43oC,YACxDp7pC,KAAKq7pC,kBAAoBlwN,GAAYnr8B,KAAKq7pC,kBAAmB73oC,EAAO83oC,oBAJpEt7pC,KAAKm7pC,YAAc33oC,EAAO43oC,WAC1Bp7pC,KAAKq7pC,kBAAoB73oC,EAAO83oC,kBAMlCjznC,EAAO74B,KAAO,IAAIwQ,aAAawD,EAAO+lC,QAGxCvpD,KAAKi2gC,aAAa3H,WAAWjm+B,EAAO74B,KACtC,EAEAyrpC,EAAiBv7pC,UAAU67pC,wBAA0B,SAAUzgzB,GAC7D,IAAI4poB,EAAY1k/B,KAAKwkI,UAAUqs4B,aAAa/1pB,GAS5C,OARa4poB,EAAU7m7B,kBAAkBp+D,MAAQil/B,EAAU7m7B,OAAS6m7B,EAAUnd,WAAW,SAS3F,EAEA0zL,EAAiBv7pC,UAAU06pC,mBAAqB,SAAUt/yB,GACxD,OAAI96W,KAAKq7pC,kBACAr7pC,KAAKq7pC,kBAAwB,EAANvgzB,EAAU,GAEjC96W,KAAKu7pC,wBAAwBzgzB,GAAKz6W,MAE7C,EAEA46pC,EAAiBv7pC,UAAU26pC,cAAgB,SAAUv/yB,EAAK56O,GACxD,GAAIlgI,KAAKq7pC,kBAAmB,CAI1B,IAHA,IAAIl5mC,EAASniD,KAAKq7pC,kBAAwB,EAANvgzB,GAChCj8O,EAAM7+H,KAAKq7pC,kBAAwB,EAANvgzB,EAAU,GAElCl6W,EAAI,EAAGA,EAAIi+H,EAAKj+H,IACvBs/H,EAAIt/H,GAAKs/H,EAAIt/H,IAAM,GACnBs/H,EAAIt/H,GAAG,GAAKZ,KAAKm7pC,YAAYh5mC,EAAa,EAAJvhD,GACtCs/H,EAAIt/H,GAAG,GAAKZ,KAAKm7pC,YAAYh5mC,EAAa,EAAJvhD,EAAQ,GAGhD,OAAOi+H,CACT,CACE,IAAIlH,EAAS33H,KAAKu7pC,wBAAwBzgzB,GAE1C,IAASl6W,EAAI,EAAGA,EAAI+2H,EAAOt3H,OAAQO,IACjCs/H,EAAIt/H,GAAKs/H,EAAIt/H,IAAM,GACnBs/H,EAAIt/H,GAAG,GAAK+2H,EAAO/2H,GAAG,GACtBs/H,EAAIt/H,GAAG,GAAK+2H,EAAO/2H,GAAG,GAGxB,OAAO+2H,EAAOt3H,MAElB,EAEA46pC,EAAiBv7pC,UAAUw7pC,wBAA0B,SAAU1rpC,GAC7D,IAAIiwH,EAAc,EAQlB,GANIz/H,KAAKm7pC,cACP17hC,EAAcz/H,KAAKm7pC,YAAY96pC,QAK7BijD,GAAS9zC,EAAK,IAAK,CASrB,IARA,IAAIqvH,EAAMrvH,EAAKnP,OAEXm7pC,EAA4B,IAAIX,GAAUh8hC,GAC1C48hC,EAAgB,IAAIX,GAAWj8hC,GAC/B68hC,EAAe,EACfC,EAAe,EACf5+I,EAAY,EAEPn8gC,EAAI,EAAGA,EAAIi+H,GAAM,CACxBk+4B,IACA,IAAIxz9B,EAAQ/5C,EAAK5O,KAEjB46pC,EAA0BG,KAAkBD,EAAej8hC,EAE3D+7hC,EAA0BG,KAAkBpymC,EAE5C,IAAK,IAAI7lD,EAAI,EAAGA,EAAI6lD,EAAO7lD,IAAK,CAC9B,IAAIO,EAAIuL,EAAK5O,KACToC,EAAIwM,EAAK5O,KACb66pC,EAAcC,KAAkBz3pC,EAChCw3pC,EAAcC,KAAkB14pC,CAOlC,CACF,CAEA,MAAO,CACLs4pC,iBAAkB,IAAIv7oC,YAAYy7oC,EAA0BtzoC,OAAQ,EAAGyzoC,GACvEP,WAAYK,EACZlymC,MAAOwz9B,EAEX,CAEA,MAAO,CACLu+I,iBAAkB,KAClBF,WAAY,KACZ7xmC,MAAO/5C,EAAKnP,OAEhB,EAEA46pC,EAAiBv7pC,UAAUyohC,eAAiB,SAAUtq9B,EAAQyl6B,GACjB,IAQvC9wH,EAAW,IAAI,GAAW,CAAC,SAAUxy2B,MAezC,OAdAwy2B,EAAS43K,eAAgB,EACzB53K,EAASr5a,SAASt7X,EAAOruD,KAAM,IAAI,SAAU0gpB,EAAUmsW,EAASh31B,EAAW+21B,GAEzE,GAAIlsW,aAAoBzwpB,MACtB,OAAOm8vB,IAEP42G,EAAS43K,eAAgB,EACzB,IAAIjphC,EAAQ+upB,EAAS/upB,MAErB,OAAa,MAATA,EACKA,aAAiB1B,MAAQ0B,EAAMi7/B,GAAYj7/B,OADpD,CAIJ,IACOqx2B,CACT,EAEAyoT,EAAiBv7pC,UAAUu3X,cAAgB,SAAU5xN,EAAW4r2B,EAAgBjiwB,GAC9E,IACI01uB,EADO1k/B,KAAKwkI,UACKqs4B,aAAaxr2B,GAC9B36J,EAAOg6+B,EAAUvh/B,IAAI,QAEzB,GAAIuH,EACF,OAAOA,EAGT,IAAI0wM,EAAWspyB,EAAUvh/B,IAAI,YACzB63pC,EAASt2K,EAAUvh/B,IAAI,UACvBunhC,EAAU,GAGd,OAFY,MAAZtv0B,GAAoBsv0B,EAAQ7ohC,KAAKu5M,GACvB,MAAV4/8B,GAAkBtwI,EAAQ7ohC,KAAKm5pC,GACxBj4I,GAAoB,YAAa,CACtCr4gC,KAAMgghC,EAAQ79gC,KAAK,QAEvB,EAEAoupC,EAAiBv7pC,UAAU+9hC,mBAAqB,WAC9C,QAASz9hC,KAAKmD,IAAI,CAAC,SAAU,QAC/B,EAEA83pC,EAAiBv7pC,UAAU4phC,eAAiB,WAC1C,IAAItwB,EAAch5/B,KAAK69D,OAAOm77B,YAE9B,OAAmB,MAAfA,EACKh5/B,KAAK69D,OAAOq6wB,MAAQ,IAAMl40B,KAAKmD,IAAI,eAGrC61/B,CACT,EAEAiiK,EAAiBv7pC,UAAU6phC,wBAA0B,WACnD,IAAIxwB,EAAuB/4/B,KAAK69D,OAAOk77B,qBAEvC,OAA4B,MAAxBA,EACK/4/B,KAAK69D,OAAOq6wB,MAAQ,IAAMl40B,KAAKmD,IAAI,wBAGrC41/B,CACT,EAEAkiK,EAAiBv7pC,UAAUs2/B,aAAe,WACxC,IAAIgiK,EAAch4pC,KAAK43L,SAAS,UAC5B5D,EAAcgk+B,EAAY70pC,IAAI,eAClC,OAAOnD,KAAKwkI,UAAUj7E,QAAUvpD,KAAKuphC,0BACnCvphC,KAAKurB,GAAKysoC,EAAY70pC,IAAI,SAAW6wL,EAAc,EAAIA,EAAc,GAAK,EAC9E,EAEAin+B,EAAiB1upC,KAAO,eACxB0upC,EAAiBh//B,aAAe,CAAC,OAAQ,QAAS,MAAO,YACzDg//B,EAAiBr6nB,cAAgB,CAC/B7ua,iBAAkB,MAElBpsH,EAAG,EACH2+kC,iBAAiB,EAEjBwmB,WAAY,EACZC,WAAY,EACZ7wmB,OAAQ,CAAC,OAAQ,QACjBq+f,WAAY,CAAC,GAAI,IAEjBouH,SAAU,EACV92+B,OAAQ,CACNozM,MAAM,EACN+z0B,OAAQ,EACRoB,cAAe,EACfl+pB,OAAQ,SACRq+f,WAAY,EACZ17wB,MAAM,EACN7oD,YAAa,IAEfkkpB,OAAO,EAEPs9Q,eAAgB,IAChBx0rB,UAAU,EACV7V,MAAM,EACN9pZ,MAAO,CACL4hV,MAAM,EACNtkT,SAAU,OAIZwzsB,UAAW,CACTvmmB,QAAS,KAGNqvhC,CACT,CA1RA,CA0REt9Y,IAEF,YCpUA,SAAS,GAAU38wB,GAKjB,OAJMA,aAAavB,QACjBuB,EAAI,CAACA,EAAGA,IAGHA,CACT,CA4BA,SA1BkB,CAChBy70B,WAAY,QACZx7wB,MAAO,SAAU+h7B,GACf,IAAIijD,EAAa,GAAUjjD,EAAY7/+B,IAAI,WACvCo1/B,EAAa,GAAUvV,EAAY7/+B,IAAI,eACvCqM,EAAOwz+B,EAAYx+2B,UAgBvB,OAfAh1H,EAAK6rhC,UAAU,aAAc4K,GAAcA,EAAW,IACtDz2hC,EAAK6rhC,UAAU,WAAY4K,GAAcA,EAAW,IACpDz2hC,EAAK6rhC,UAAU,iBAAkB9iC,GAAcA,EAAW,IAC1D/o/B,EAAK6rhC,UAAU,eAAgB9iC,GAAcA,EAAW,IAYjD,CACLkjC,SAAUjshC,EAAK46gC,cAXjB,SAAkB56gC,EAAMsrW,GACtB,IAAI4poB,EAAYl1+B,EAAKqhgC,aAAa/1pB,GAC9BmrrB,EAAa,GAAUvhD,EAAUnd,WAAW,UAAU,IACtDgxB,EAAa,GAAU7T,EAAUnd,WAAW,cAAc,IAC9D0+D,EAAW,IAAMz2hC,EAAKmshC,cAAc7grB,EAAK,aAAcmrrB,EAAW,IAClEA,EAAW,IAAMz2hC,EAAKmshC,cAAc7grB,EAAK,WAAYmrrB,EAAW,IAChE1tC,EAAW,IAAM/o/B,EAAKmshC,cAAc7grB,EAAK,iBAAkBy9oB,EAAW,IACtEA,EAAW,IAAM/o/B,EAAKmshC,cAAc7grB,EAAK,eAAgBy9oB,EAAW,GACtE,EAG4C,KAE9C,GC7BF,IAEInvlB,GAEJ,WACE,SAASA,IACPppa,KAAK47pC,SAAW,GAChB57pC,KAAKw7N,UAAY,GACjBx7N,KAAK67pC,WAAa,EAClB77pC,KAAK87pC,WAAa,EAClB97pC,KAAK+7pC,gBAAkB,CACrBn6nB,QAAS,KACTo6nB,WAAY,MAEd,IAAI7khC,EAAS,EAAY0wzB,eACzB7n8B,KAAKm3I,OAASA,CAChB,CA0HA,OAjHAiyR,EAAa1pa,UAAU6uE,OAAS,SAAU/+D,EAAMuvB,EAAOC,EAAQ1vB,EAAW2spC,EAAWC,GACnF,IAAIxuK,EAAQ1t/B,KAAKm8pC,YAEbC,EAAkBp8pC,KAAKq8pC,aAAaJ,EAAW,WAE/CK,EAAqBt8pC,KAAKq8pC,aAAaJ,EAAW,cAElDl8pC,EAAIC,KAAKw7N,UAAYx7N,KAAK47pC,SAC1BzkhC,EAASn3I,KAAKm3I,OACdmgG,EAAMngG,EAAOpqF,WAAW,MACxB8xE,EAAMrvH,EAAKnP,OACf82I,EAAOp4G,MAAQA,EACfo4G,EAAOn4G,OAASA,EAEhB,IAAK,IAAIp+B,EAAI,EAAGA,EAAIi+H,IAAOj+H,EAAG,CAC5B,IAAIkC,EAAI0M,EAAK5O,GACTqD,EAAInB,EAAE,GACNE,EAAIF,EAAE,GAGNuiR,EAAQ/1Q,EAFAxM,EAAE,IAIdw0O,EAAIovhB,YAAcrhf,EAClB/tC,EAAII,UAAUg2wB,EAAOzp/B,EAAIlE,EAAGiD,EAAIjD,EAClC,CAEA,IAAKo3I,EAAOp4G,QAAUo4G,EAAOn4G,OAG3B,OAAOm4G,EAYT,IARA,IAAIogG,EAAYD,EAAI4O,aAAa,EAAG,EAAG/uG,EAAOp4G,MAAOo4G,EAAOn4G,QACxDmvG,EAASopG,EAAU/nO,KACnB2yC,EAAS,EACTo6mC,EAAWpuhC,EAAO9tI,OAClBy7pC,EAAa97pC,KAAK87pC,WAElBU,EADax8pC,KAAK67pC,WACSC,EAExB35mC,EAASo6mC,GAAU,CACpBl34B,EAAQl3I,EAAOhsF,EAAS,GAAK,IAAjC,IACIs6mC,EAA6D,EAA5C55pC,KAAKyK,MAAc,IAAR+3Q,GAEhC,GAAIA,EAAQ,EAAG,CACb,IAAI/nF,EAAW4+9B,EAAU724B,GAAS+24B,EAAkBE,EAEpDj34B,EAAQ,IAAMA,EAAQA,EAAQm34B,EAAcV,GAC5C3thC,EAAOhsF,KAAYm7I,EAASm/9B,GAC5BtuhC,EAAOhsF,KAAYm7I,EAASm/9B,EAAiB,GAC7CtuhC,EAAOhsF,KAAYm7I,EAASm/9B,EAAiB,GAC7CtuhC,EAAOhsF,KAAYm7I,EAASm/9B,EAAiB,GAAKp34B,EAAQ,GAC5D,MACEljO,GAAU,CAEd,CAGA,OADAm1L,EAAI8R,aAAa7R,EAAW,EAAG,GACxBpgG,CACT,EAMAiyR,EAAa1pa,UAAUy8pC,UAAY,WACjC,IAAIO,EAAc18pC,KAAK28pC,eAAiB38pC,KAAK28pC,aAAe,EAAY90N,gBAEpE9n8B,EAAIC,KAAKw7N,UAAYx7N,KAAK47pC,SAC1Bj5pC,EAAQ,EAAJ5C,EACR28pC,EAAY39nC,MAAQp8B,EACpB+5pC,EAAY19nC,OAASr8B,EACrB,IAAI20O,EAAMol7B,EAAY3vmC,WAAW,MAejC,OAdAuqL,EAAIG,UAAU,EAAG,EAAG90O,EAAGA,GAIvB20O,EAAIwtiB,cAAgBnixB,EACpB20O,EAAI0tiB,WAAahlxB,KAAK47pC,SAGtBtk7B,EAAIzmH,YAAc,OAElBymH,EAAIwvhB,YACJxvhB,EAAI4yiB,KAAKnqxB,EAAGA,EAAGC,KAAKw7N,UAAW,EAAa,EAAV34N,KAAKsmC,IAAQ,GAC/CmuM,EAAI2vhB,YACJ3vhB,EAAIl6G,OACGs/hC,CACT,EAOAtzvB,EAAa1pa,UAAU28pC,aAAe,SAAUJ,EAAWtwpC,GAMzD,IALA,IAAIixpC,EAAiB58pC,KAAK+7pC,gBACtBc,EAAoBD,EAAejxpC,KAAWixpC,EAAejxpC,GAAS,IAAIoT,kBAAkB,OAC5FwuG,EAAQ,CAAC,EAAG,EAAG,EAAG,GAClBv/E,EAAM,EAEDptC,EAAI,EAAGA,EAAI,IAAKA,IACvBq7pC,EAAUtwpC,GAAO/K,EAAI,KAAK,EAAM2sH,GAChCsviC,EAAkB7unC,KAASu/E,EAAM,GACjCsviC,EAAkB7unC,KAASu/E,EAAM,GACjCsviC,EAAkB7unC,KAASu/E,EAAM,GACjCsviC,EAAkB7unC,KAASu/E,EAAM,GAGnC,OAAOsviC,CACT,EAEOzzvB,CACT,CAvIA,GAyIA,YC1FA,SAAS0zvB,GAAc55K,GACrB,IAAIxq1B,EAAawq1B,EAASxq1B,WAE1B,MAAyB,QAAlBA,EAAW,IAAkC,QAAlBA,EAAW,EAC/C,CAEA,IAAIqkgC,GAEJ,SAAUr0yB,GAGR,SAASq0yB,IACP,IAAIrwmC,EAAmB,OAAXg8T,GAAmBA,EAAOnoX,MAAMP,KAAMI,YAAcJ,KAGhE,OADA0sD,EAAMngD,KAAOwwpC,EAAYxwpC,KAClBmgD,CACT,CAyOA,OAhPAkgX,EAAUmwvB,EAAar0yB,GASvBq0yB,EAAYr9pC,UAAU4uH,OAAS,SAAU003B,EAAa1f,EAASr07B,GAC7D,IAAI+tnC,EACJ15L,EAAQwe,cAAc,aAAa,SAAUypB,GAC3CA,EAAU0xJ,kBAAiB,SAAUC,GAC/BA,IAAiBl6K,IACnBg6K,EAAwBzxJ,EAE5B,GACF,IASAvrgC,KAAK2nlC,gBAAkB,KACvB3nlC,KAAKo7T,MAAMvtE,YACX,IAAIq1vB,EAAWF,EAAYjx3B,iBAEL,gBAAlBmx3B,EAAS32+B,MAA4C,aAAlB22+B,EAAS32+B,KAC9CvM,KAAKm9pC,8BAA8Bn6K,EAAa/z8B,EAAK,EAAG+z8B,EAAYx+2B,UAAUj7E,SACrEuzmC,GAAc55K,IACvBlj/B,KAAKo9pC,aAAal6K,EAAUF,EAAag6K,EAAuB/tnC,EAEpE,EAEA8tnC,EAAYr9pC,UAAU85hC,yBAA2B,SAAUx2C,EAAa1f,EAASr07B,GAC/EjvC,KAAKo7T,MAAMvtE,WACb,EAEAkv6B,EAAYr9pC,UAAU+5hC,kBAAoB,SAAUpx/B,EAAQ268B,EAAa1f,EAASr07B,GAChF,IAAIi08B,EAAWF,EAAYjx3B,iBAEvBmx3B,IAEE45K,GAAc55K,GAChBlj/B,KAAKsuH,OAAO003B,EAAa1f,EAASr07B,IAElCjvC,KAAK2nlC,gBAAkB,GAEvB3nlC,KAAKm9pC,8BAA8Bn6K,EAAa/z8B,EAAK5G,EAAO7B,MAAO6B,EAAO5B,KAAK,IAGrF,EAEAs2nC,EAAYr9pC,UAAUmshC,aAAe,SAAUnq9B,GAC7C,GAAyB1hE,KAAK2nlC,iBAAmB3nlC,KAAKo7T,MAAO15P,EAC/D,EAEAq7lC,EAAYr9pC,UAAUy9pC,8BAAgC,SAAUn6K,EAAa/z8B,EAAKzI,EAAOC,EAAKin8B,GAC5F,IAEI3u8B,EACAC,EACAgokC,EACAC,EALA/jH,EAAWF,EAAYjx3B,iBACvBsriC,EAAgBjyE,GAAuBloG,EAAU,eAMrD,GAAIm6K,EAAe,CACjB,IAAI94+B,EAAQ2+zB,EAASliI,QAAQ,KACzBv8rB,EAAQy+zB,EAASliI,QAAQ,KAa7Bji1B,EAAQwlJ,EAAMkw4B,eAAiB,GAC/Bz1hC,EAASylJ,EAAMgw4B,eAAiB,GAChCuyC,EAAczi7B,EAAMziF,MAAM0t9B,YAC1By3C,EAAcxi7B,EAAM3iF,MAAM0t9B,WAC5B,CAeA,IAbA,IAAIp0vB,EAAQp7T,KAAKo7T,MACb5rT,EAAOwz+B,EAAYx+2B,UACnB072B,EAAgB8C,EAAYprzB,SAAS,CAAC,WAAY,cAAcm0zB,eAChErL,EAAYsC,EAAYprzB,SAAS,CAAC,OAAQ,cAAcm0zB,eACxDs6H,EAAcrjI,EAAYprzB,SAAS,CAAC,SAAU,cAAcm0zB,eAC5DpzoB,EAAeqqoB,EAAY7/+B,IAAI,CAAC,YAAa,iBAC7C2k/B,EAAoBY,GAAqB1F,GACzCsjG,EAAgBtjG,EAAYprzB,SAAS,YACrCk5K,EAAQw1uB,EAAcnjlC,IAAI,SAC1Bo/+B,EAAY+jG,EAAcnjlC,IAAI,aAC9BijlC,EAAmBE,EAAcnjlC,IAAI,YACrCsnhC,EAAW4yI,EAAgB,CAAC7tpC,EAAK42iC,aAAa,KAAM52iC,EAAK42iC,aAAa,KAAM52iC,EAAK42iC,aAAa,UAAY,CAAC52iC,EAAK42iC,aAAa,QAAS52iC,EAAK42iC,aAAa,UAEnJtrsB,EAAMt0U,EAAOs0U,EAAMr0U,EAAKq0U,IAAO,CACtC,IAAIpnR,OAAO,EACPr/E,EAAQ7E,EAAK+ggC,cAAcz1pB,EAAK,SAEpC,GAAIuizB,EAAe,CACjB,IAAIC,EAAW9tpC,EAAKrM,IAAIsnhC,EAAS,GAAI3vqB,GACjCyizB,EAAW/tpC,EAAKrM,IAAIsnhC,EAAS,GAAI3vqB,GAErC,GAAIxuU,MAAM98B,EAAKrM,IAAIsnhC,EAAS,GAAI3vqB,KAASxuU,MAAMgxnC,IAAahxnC,MAAMixnC,IAAaD,EAAWt2D,EAAY,IAAMs2D,EAAWt2D,EAAY,IAAMu2D,EAAWt2D,EAAY,IAAMs2D,EAAWt2D,EAAY,GAC3L,SAGF,IAAI9x9B,EAAQ+t2B,EAASy0E,YAAY,CAAC2lG,EAAUC,IAC5C7pkC,EAAO,IAAI,GAAa,CACtB4uI,MAAO,CACLr+N,EAAGkxI,EAAM,GAAKp2G,EAAQ,EACtB/7B,EAAGmyI,EAAM,GAAKn2G,EAAS,EACvBD,MAAOA,EACPC,OAAQA,GAEV3qB,MAAOA,GAEX,KAAO,CAEL,GAAIi4B,MAAM98B,EAAKrM,IAAIsnhC,EAAS,GAAI3vqB,IAC9B,SAGFpnR,EAAO,IAAI,GAAa,CACtBqpG,GAAI,EACJulC,MAAO4gxB,EAASs6K,WAAW,CAAChupC,EAAKrM,IAAIsnhC,EAAS,GAAI3vqB,KAAO2izB,aACzDpppC,MAAOA,GAEX,CAGA,GAAI7E,EAAK46gC,cAAe,CACtB,IAAI1lC,EAAYl1+B,EAAKqhgC,aAAa/1pB,GAC9B4izB,EAAkBh5K,EAAU9szB,SAAS,YACzCsozB,EAAgBw9K,EAAgB9l+B,SAAS,aAAam0zB,eACtDrL,EAAYgE,EAAU9szB,SAAS,CAAC,OAAQ,cAAcm0zB,eACtDs6H,EAAc3hI,EAAU9szB,SAAS,CAAC,SAAU,cAAcm0zB,eAM1DpzoB,EAAe+roB,EAAUvh/B,IAAI,CAAC,YAAa,iBAC3C2tW,EAAQ4szB,EAAgBv6pC,IAAI,SAC5Bo/+B,EAAYm7K,EAAgBv6pC,IAAI,aAChCijlC,EAAmBs3E,EAAgBv6pC,IAAI,YACvC2k/B,EAAoBY,GAAqBhE,EAC3C,CAEAhx5B,EAAK4uI,MAAMviO,EAAI44W,EACf,IAAIh+S,EAAWqo7B,EAAYotB,YAAYt1pB,GACnCinf,EAAc,IAEdpnyB,GAA2B,MAAfA,EAAS,KACvBonyB,EAAcpnyB,EAAS,GAAK,IAG9Bkt7B,GAAcn05B,EAAMo05B,EAAmB,CACrCR,aAActE,EACduE,eAAgBzsoB,EAChB0voB,eAAgBn2+B,EAAMu3H,QACtBm2tB,YAAaA,IAEfruwB,EAAK8h4B,YAAY,YAAYnh9B,MAAQ6r+B,EACrCxs5B,EAAK8h4B,YAAY,QAAQnh9B,MAAQqs+B,EACjCht5B,EAAK8h4B,YAAY,UAAUnh9B,MAAQgymC,EACnCliI,GAAoBzw5B,EAAMo9Q,EAAOyxoB,EAAW6jG,GAC5C1y/B,EAAKg64B,YAAcA,EAEfA,IAEFh64B,EAAK27a,OAAOuxd,SAAS1K,YAAa,GAGpC96pB,EAAMj2S,IAAIuuE,GACVlkF,EAAKu5iC,iBAAiBjusB,EAAKpnR,GAEvB1zF,KAAK2nlC,iBACP3nlC,KAAK2nlC,gBAAgB9llC,KAAK6xF,EAE9B,CACF,EAEAqpkC,EAAYr9pC,UAAU09pC,aAAe,SAAUhzJ,EAAKpnB,EAAa26K,EAAgB1unC,GAC/E,IAAI2unC,EAAiBD,EAAeE,cAAcj8nB,QAC9Ck8nB,EAAoBH,EAAeE,cAAc7B,WAIjDxspC,EAAOwz+B,EAAYx+2B,UACnBu5hC,EAAU/9pC,KAAKg+pC,UAAYh+pC,KAAKg+pC,UAAY,IAAI,GACpDD,EAAQnC,SAAW54K,EAAY7/+B,IAAI,YACnC46pC,EAAQvi8B,UAAYwnxB,EAAY7/+B,IAAI,aACpC46pC,EAAQjC,WAAa94K,EAAY7/+B,IAAI,cACrC46pC,EAAQlC,WAAa74K,EAAY7/+B,IAAI,cACrC,IAAIuwF,EAAO026B,EAAI6yF,cAAc1skC,QACzBw5lC,EAAgB3/G,EAAIy/G,mBACxBn2hC,EAAKo42B,eAAei+K,GAEpB,IAAI9lnC,EAAIpB,KAAK8K,IAAI+lF,EAAKzvF,EAAG,GACrBjB,EAAIH,KAAK8K,IAAI+lF,EAAK1wF,EAAG,GACrB85L,EAAKj6L,KAAKgL,IAAI6lF,EAAK30D,MAAQ20D,EAAKzvF,EAAGgrC,EAAIk8L,YACvC1zG,EAAK50H,KAAKgL,IAAI6lF,EAAK10D,OAAS00D,EAAK1wF,EAAGisC,EAAI+rI,aACxCj8I,EAAQ+9J,EAAK74L,EACb+6B,EAASy4F,EAAKz0H,EACd8ogC,EAAO,CAACt8/B,EAAK42iC,aAAa,OAAQ52iC,EAAK42iC,aAAa,OAAQ52iC,EAAK42iC,aAAa,UAC9E96gC,EAAS97B,EAAK24iC,SAASr8C,GAAM,SAAU1s+B,EAAKF,EAAK/9B,GACnD,IAAIgL,EAAKi+/B,EAAIutD,YAAY,CAACv4hC,EAAKF,IAI/B,OAHA/yB,EAAG,IAAMlI,EACTkI,EAAG,IAAMnJ,EACTmJ,EAAGtK,KAAKV,GACDgL,CACT,IACIiy9B,EAAau/L,EAAenuG,YAC5B0sG,EAAoC,yBAAxByB,EAAepxpC,KA9OnC,SAAgC6x9B,EAAYr81B,GAC1C,IAAIk8hC,EAAW7/L,EAAW,GAAKA,EAAW,GAE1C,OADAr81B,EAAQ,EAAEA,EAAM,GAAKq81B,EAAW,IAAM6/L,GAAWl8hC,EAAM,GAAKq81B,EAAW,IAAM6/L,GACtE,SAAUvg/B,GACf,OAAOA,GAAO37C,EAAM,IAAM27C,GAAO37C,EAAM,EACzC,CACF,CAwOqEm8hC,CAAuB9/L,EAAYu/L,EAAe9/lC,OAAOkkE,OAnR9H,SAA+Bq81B,EAAYmiK,EAAWl08B,GACpD,IAAI4x+B,EAAW7/L,EAAW,GAAKA,EAAW,GAMtCv/1B,GALJ0hgC,EAAY,EAAWA,GAAW,SAAUE,GAC1C,MAAO,CACLv+pB,SAAU,EAAEu+pB,EAAMv+pB,SAAS,GAAKk8f,EAAW,IAAM6/L,GAAWx9B,EAAMv+pB,SAAS,GAAKk8f,EAAW,IAAM6/L,GAErG,KACoB59pC,OAChBkyD,EAAY,EAChB,OAAO,SAAUmrH,GACf,IAAI98K,EAEJ,IAAKA,EAAI2xD,EAAW3xD,EAAIi+H,EAAKj+H,IAG3B,IAFIshe,EAAWq+pB,EAAU3/nC,GAAGshe,UAEf,IAAMxkT,GAAOA,GAAOwkT,EAAS,GAAI,CAC5C3va,EAAY3xD,EACZ,KACF,CAGF,GAAIA,IAAMi+H,EAER,IAAKj+H,EAAI2xD,EAAY,EAAG3xD,GAAK,EAAGA,IAAK,CACnC,IAAIshe,EAEJ,IAFIA,EAAWq+pB,EAAU3/nC,GAAGshe,UAEf,IAAMxkT,GAAOA,GAAOwkT,EAAS,GAAI,CAC5C3va,EAAY3xD,EACZ,KACF,CACF,CAGF,OAAOA,GAAK,GAAKA,EAAIi+H,GAAOwtD,EAASzrL,EACvC,CACF,CAgPuIu9pC,CAAsB//L,EAAYu/L,EAAeS,eAAgBT,EAAe9/lC,OAAOwuH,UAC1N0x+B,EAAQxvlC,OAAOjjC,EAAQvM,EAAOC,EAAQ4+nC,EAAerwiC,MAAM2zgC,gBAAiB,CAC1Et/lB,QAASg8nB,EAAerwiC,MAAM6ygC,iBAC9B47B,WAAY8B,EAAkBvwiC,MAAM6ygC,kBACnC87B,GACH,IAAI7lxB,EAAM,IAAI,GAAc,CAC1BhiY,MAAO,CACL0qB,MAAOA,EACPC,OAAQA,EACR/6B,EAAGA,EACHjB,EAAGA,EACHunJ,MAAOwzgC,EAAQ5mhC,QAEjBi9V,QAAQ,IAEVp0e,KAAKo7T,MAAMj2S,IAAIkxX,EACjB,EAEA0mxB,EAAYxwpC,KAAO,UACZwwpC,CACT,CAlPA,CAkPE/5W,IAEF,YC3PA,GAhDA,SAAUt6b,GAGR,SAAS21yB,IACP,IAAI3xmC,EAAmB,OAAXg8T,GAAmBA,EAAOnoX,MAAMP,KAAMI,YAAcJ,KAGhE,OADA0sD,EAAMngD,KAAO8xpC,EAAmB9xpC,KACzBmgD,CACT,CAqCA,OA5CAkgX,EAAUyxvB,EAAoB31yB,GAS9B21yB,EAAmB3+pC,UAAUyohC,eAAiB,SAAUtq9B,EAAQyl6B,GAC9D,OAAO,GAAiB,KAAMtj+B,KAAM,CAClCkrjC,cAAe,SAEnB,EAEAmzG,EAAmB3+pC,UAAU+9hC,mBAAqB,WAChD,IAAIme,EAAkBvJ,GAAiBlviC,IAAInD,KAAKmD,IAAI,qBAEpD,GAAIy4iC,GAAmBA,EAAgBlj5B,WACrC,MAAyC,QAAlCkj5B,EAAgBlj5B,WAAW,IAAkD,QAAlCkj5B,EAAgBlj5B,WAAW,EAEjF,EAEA2lgC,EAAmB9xpC,KAAO,iBAC1B8xpC,EAAmBpigC,aAAe,CAAC,OAAQ,MAAO,YAClDoigC,EAAmBz9nB,cAAgB,CACjC7ua,iBAAkB,cAElBpsH,EAAG,EAKHghnC,SAAU,EACVi1C,SAAU,GACVpg8B,UAAW,GACXqg8B,WAAY,EACZC,WAAY,EACZtl5B,OAAQ,CACN+tuB,UAAW,CACTjsoB,YAAa,aAIZ+lzB,CACT,CA9CA,CA8CE1gZ,IC1CF,IAAI2gZ,GAAyB,CAAC,YAAa,eAEvCC,GAAe,CAAC,CAClBjugC,GAAI,IACJ624B,GAAI,QACJnqhC,MAAO,EACPwhpC,QAAS,CAAC,OAAQ,UACjB,CACDlugC,GAAI,IACJ624B,GAAI,SACJnqhC,MAAO,EACPwhpC,QAAS,CAAC,MAAO,YAEfC,GAAmB,IAAI,GAsG3B,SAASC,GAAclvpC,EAAM61J,EAAWq/0B,EAAWtkd,GACjD,IAAIl/Z,EAAS1xH,EAAKo5iC,cAAcvj5B,GAC5Bs5/B,EAAej6K,EAAUvh/B,IAAI,gBAC7By7pC,EAAal6K,EAAUvh/B,IAAI,cAC3B07pC,EAAiBn6K,EAAUvh/B,IAAI,mBAAqB,QAEpDojH,GADem+3B,EAAUvh/B,IAAI,iBACD,GAAKN,KAAKsmC,GAAK,KAAO,EAClD21nC,EAAoBp6K,EAAUvh/B,IAAI,sBAAwB,EAC1D2i/B,EAAqBpB,EAAUoB,qBAC/Bi5K,EAAa,CACf15/B,UAAWA,EACXnkC,OAAQA,EACRwj3B,UAAWA,EACXuhD,WAAYz2hC,EAAK+ggC,cAAclr2B,EAAW,WAAa,SACvDhxJ,MAAO7E,EAAK+ggC,cAAclr2B,EAAW,SACrCu5/B,WAAYA,EACZD,aAAcA,EACdK,sBAAuBt6K,EAAUvh/B,IAAI,yBACrC27pC,kBAAmBA,EACnBv4iC,SAAUA,EACVix+B,eAAgB1xG,EAAqBpB,EAAY,KACjD2hG,WAAYvgG,GAAsBpB,EAAUvh/B,IAAI,CAAC,WAAY,UAC7D45L,GAAI2nzB,EAAUnd,WAAW,KAAK,IAAS,IAY3C,SAA0Bmd,EAAWi6K,EAAcz9hC,EAAQk/Z,EAAK6+nB,GAC9D,IAKIC,EALA1oG,EAAWp2hB,EAAIo2hB,SACf2oG,EAAqBz6K,EAAUvh/B,IAAI,sBACnCk/hC,EAAYjigB,EAAI8id,SAASkzE,aAAah2hB,EAAI8id,SAASgmC,eACnDk2I,EAAS/8H,EAAUu0B,cAAcv0B,EAAUw0B,YAAY,IACvDwoG,EAAY,IAAMn+hC,EAAOs17B,EAASrvB,KAAO,GAG7C,GAAI,GAAeg4H,GAAqB,CACtC,IAAIG,EAAuB,CAACC,GAAqBl9H,EAAW88H,EAAmB,IAAMC,EAAQG,GAAqBl9H,EAAW88H,EAAmB,IAAMC,GACtJE,EAAqB,GAAKA,EAAqB,IAAMA,EAAqBhlmC,UAC1E4kmC,EAAiBI,EAAqBD,EACxC,MACEH,EAD+B,MAAtBC,EACQI,GAAqBl9H,EAAW88H,GAAsBC,EAC9DT,EACQv+nB,EAAIo/nB,eAAehpG,EAASx5iC,OAAOqipC,GAAaD,EAEhDl+hC,EAAOs17B,EAASrvB,IAGnC83H,EAAiBC,eAAiBA,EAE9BP,IACFM,EAAiBQ,gBAAkBv+hC,EAAOs17B,EAASrvB,KAKrD83H,EAAiBS,OAASR,EAAiB,EAAI,GAAK,CACtD,CAvCES,CAAiBj7K,EAAWi6K,EAAcz9hC,EAAQk/Z,EAAK2+nB,GA8CzD,SAA2BvvpC,EAAM61J,EAAWnkC,EAAQy9hC,EAAcC,EAAYM,EAAgBQ,EAAQZ,EAAmB1+nB,EAAK6+nB,GAC5H,IAIIW,EAJAppG,EAAWp2hB,EAAIo2hB,SACfqpG,EAAcz/nB,EAAIy/nB,YAClBC,EAAej9pC,KAAKmjH,IAAIkb,EAAO2+hC,EAAY14H,KAC3C5uC,EAAa/o/B,EAAK+ggC,cAAclr2B,EAAW,eAI7Cu6/B,EADE,GAAernK,GACEA,EAAWx2/B,QAEZ,MAAdw2/B,EAEiB,CAAC,OAAQ,QAET,CAACA,EAAYA,IAQnBsnK,EAAY7ipC,OAAS,GAAa4ipC,EAAiBC,EAAY7ipC,OAAQ8ipC,GACxFF,EAAiBppG,EAASx5iC,OAAS,GAAa4ipC,EAAiBppG,EAASx5iC,OAAQ2hpC,EAAemB,EAAej9pC,KAAKmjH,IAAIk5iC,IACzHD,EAAiB1mK,WAAaqnK,GAEZX,EAAiBc,YAAc,CAACH,EAAiB,GAAKd,EAAmBc,EAAiB,GAAKd,IAErGtoG,EAASx5iC,SAAWojhB,EAAIsJ,cAAgB,EAAI,GAAKg2nB,CAC/D,CA1EEM,CAAkBxwpC,EAAM61J,EAAWnkC,EAAQy9hC,EAAcC,EAAYG,EAAWG,eAAgBH,EAAWW,OAAQZ,EAAmB1+nB,EAAK2+nB,GA4E7I,SAA0Br6K,EAAWq7K,EAAax5iC,EAAU65a,EAAK6+nB,GAI/D,IAAIgB,EAAiBv7K,EAAUvh/B,IAAIm7pC,KAA2B,EAE1D2B,IACFxB,GAAiBxwoB,KAAK,CACpBr1Z,OAAQmniC,EAAY,GACpBlniC,OAAQkniC,EAAY,GACpBx5iC,SAAUA,IAEZk4iC,GAAiBhkN,kBACjBwlN,GAAkBxB,GAAiBttM,eACnC8uM,GAAkBF,EAAY3/nB,EAAIo2hB,SAASx5iC,QAG7CiipC,EAAiBgB,eAAiBA,GAAkB,CACtD,CA7FEC,CAAiBx7K,EAAWq6K,EAAWgB,YAAax5iC,EAAU65a,EAAK2+nB,GACnE,IAAIxmK,EAAawmK,EAAWxmK,WACxBquC,EAAeD,GAAsBjiD,EAAUvh/B,IAAI,gBAAiBo1/B,GAExE,OA2FF,SAA2B7T,EAAW6T,EAAYr33B,EAAQy9hC,EAAcC,EAAYh4H,EAAci4H,EAAgBoB,EAAgBf,EAAgBO,EAAiBr/nB,EAAK6+nB,GACtK,IAAIY,EAAcz/nB,EAAIy/nB,YAClBrpG,EAAWp2hB,EAAIo2hB,SACfkpG,EAAST,EAAiBS,OAC1BS,EAAat9pC,KAAK8K,IAAI4q/B,EAAWi+D,EAASx5iC,OAASijpC,EAAgB,GACnEG,EAAUD,EAId,GAAIxB,EAAc,CAChB,IAAI0B,EAAoBx9pC,KAAKmjH,IAAIk5iC,GAC7BoB,EAAe,GAAgB57K,EAAUvh/B,IAAI,gBAAiB,OAAS,GACvEo9pC,GAAY,EAEZD,EAAari/B,YAAY,OAASqi/B,EAAajgqC,OAAS,IAC1DkgqC,GAAY,EACZD,EAAeA,EAAav+pC,MAAM,EAAGu+pC,EAAajgqC,OAAS,IAG7D,IAAImgqC,EAAsB,GAAaF,EAAc/nK,EAAWi+D,EAASx5iC,QACrEyjpC,EAAiB59pC,KAAK8K,IAAIwypC,EAAmC,EAAtBK,EAAyB,GAGhEE,EAASH,EAAY,EAA0B,EAAtBC,EAGzBG,EAAkB,GAAUhC,GAC5BiC,EAAcD,EAAkBhC,EAAekC,IAAYR,EAAoBK,GAAUD,GAK7FA,EAAiBN,EAAmC,GADpDK,GADYH,EAAoBO,EAAcT,GAChB,GAAKI,EAAYK,EAAc/9pC,KAAK8K,IAAIizpC,EAAc,EAAG,KAEvFF,EAASH,EAAY,EAA0B,EAAtBC,EAEpBG,GAAoC,UAAjBhC,IACtBiC,EAAcnB,EAAkBoB,IAAYh+pC,KAAKmjH,IAAIy5iC,GAAmBiB,GAAUD,GAAkB,GAGtGL,EAAUQ,EAAcH,EAAiBC,EACzCzB,EAAiB2B,YAAcA,EAC/B3B,EAAiBqB,aAAeE,CAClC,CAEA,IAAIM,EAAUpB,GAAUU,EAAU,GAC9BW,EAAe9B,EAAiB8B,aAAe,GACnDA,EAAalB,EAAY7ipC,OAASkkH,EAAO2+hC,EAAY14H,IAAM,EAC3D45H,EAAavqG,EAASx5iC,OAA4B,UAAnB6hpC,EAA6BiC,EAA6B,QAAnBjC,EAA2BK,EAAiB4B,EAAU5B,EAAiB,EAEzIt4H,IACFm6H,EAAa,IAAMn6H,EAAa,GAChCm6H,EAAa,IAAMn6H,EAAa,IAGlC,IAAIo6H,EAAiB/B,EAAiB+B,eAAiB,GACvDA,EAAenB,EAAY7ipC,OAASkkH,EAAO2+hC,EAAYvvgC,IACvD0wgC,EAAexqG,EAASx5iC,OAASkkH,EAAOs17B,EAASlm6B,IACjD,IAAI2wgC,EAAehC,EAAiBgC,aAAe,EAAc,CAAC,EAAG//hC,GACrE+/hC,EAAazqG,EAASrvB,IAAMu4H,EAAS78pC,KAAK8K,IAAI9K,KAAKmjH,IAAIkb,EAAOs17B,EAASrvB,KAAMtkiC,KAAKmjH,IAAI+6iC,EAAavqG,EAASx5iC,OAAS8jpC,IACrHG,EAAapB,EAAY14H,IAAMjm6B,EAAO2+hC,EAAY14H,IAClD,IAAIkgD,EAAY43E,EAAiB53E,UAAY,CAAC,EAE9CA,EAAUw4E,EAAYvvgC,KAAOpvB,EAAO2+hC,EAAYvvgC,IAChD+27B,EAAUw4E,EAAY14H,IAAM/mgB,EAAI8goB,OAAOrB,EAAY14H,IACnDkgD,EAAU7wB,EAASlm6B,IAAM,EACzB+27B,EAAU7wB,EAASrvB,IAAMjm6B,EAAOs17B,EAASrvB,GAC3C,CA9JEg6H,CAAkBz8K,EAAW6T,EAAYr33B,EAAQy9hC,EAAcC,EAAYh4H,EAAci4H,EAAgBE,EAAWkB,eAAgBlB,EAAWG,eAAgBH,EAAWU,gBAAiBr/nB,EAAK2+nB,GACzLA,CACT,CAkCA,SAASQ,GAAqB909B,EAAMtpM,GAClC,OAAOspM,EAAKms3B,cAAcns3B,EAAKos3B,YAAYps3B,EAAK3oG,MAAMv1E,MAAMprB,IAC9D,CA0HA,SAAS0za,GAAWkqvB,GAClB,IAAID,EAAoBC,EAAWD,kBAC/BzooC,EAAO,GACX0ooC,EAAW94H,YAAa64H,EAAoB,GAAIA,EAAoB,EAAGA,EAAmBA,GAO1F,OANAzooC,EAAK43f,KAAK,CACR+9c,SAAS,IAEG,UAAd318B,EAAK9pB,MAAoB8pB,EAAKiuY,SAAS,CACrC6ukB,eAAe,IAEV988B,CACT,CAEA,SAAS+qoC,GAA4B7ptB,EAAK6oF,EAAK2+nB,EAAYl5K,GACzD,IAAIw7K,EAAS9ptB,EAAI+ptB,kBACb/oK,EAAawmK,EAAWxmK,WACxB0nK,EAAiBlB,EAAWkB,eAC5Bc,EAAehC,EAAWgC,aAC1BvqG,EAAWp2hB,EAAIo2hB,SACfoqG,EAAc7B,EAAW6B,aAAe,EACxC5jpC,EAAQ,EACRu/V,EAAOg8oB,EAAWn4d,EAAIo2hB,SAASx5iC,OAASijpC,EAA2C,EAA1BlB,EAAWuB,aAoBxE,IAnBAiB,GAAShqtB,GAAK,SAAUlhb,GACtBA,EAAKmroC,0BAA4BxkpC,EACjCqZ,EAAKoroC,uBAAyBb,EAE1B5jpC,EAAQ4jpC,EACVtlF,GAAWjljC,EAAM,KAAMqroC,EAAW1kpC,GAAQ+hpC,EAAYl5K,GAEtDy1F,GAAWjljC,EAAM,KAAM,CACrBuiG,OAAQ,EACRC,OAAQ,GACPkmiC,EAAYl5K,GAAU,WACvBw7K,EAAOxuoC,OAAOwD,EAChB,IAIFrZ,GACF,IAEOA,EAAQ4jpC,EAAa5jpC,IAAS,CACnC,IAAIqZ,EAAOw+Y,GAAWkqvB,GACtB1ooC,EAAKmroC,0BAA4BxkpC,EACjCqZ,EAAKoroC,uBAAyBb,EAC9BS,EAAOl8oC,IAAIkR,GACX,IAAIvmB,EAAS4xpC,EAAW1kpC,GACxBs+jC,GAAWjljC,EAAM,CACfpyB,EAAG6L,EAAO7L,EACVjB,EAAG8M,EAAO9M,EACV41H,OAAQ,EACRC,OAAQ,GACP,CACDD,OAAQ9oH,EAAO8oH,OACfC,OAAQ/oH,EAAO+oH,OACftS,SAAUz2G,EAAOy2G,UAChBw4iC,EAAYl5K,EACjB,CAEA,SAAS67K,EAAW1kpC,GAClB,IAAI2hB,EAAWoioC,EAAah/pC,QAGxB29pC,EAASX,EAAWW,OACpB9+pC,EAAIoc,EAOR,OALyC,UAArC+hpC,EAAWC,sBAAoCU,EAAS,EAAIA,EAAS,KACvE9+pC,EAAIggqC,EAAc,EAAI5jpC,GAGxB2hB,EAAS63hC,EAASx5iC,OAASu/V,GAAQ37W,EAAIggqC,EAAc,EAAI,IAAOG,EAAavqG,EAASx5iC,OAC/E,CACL/Y,EAAG06B,EAAS,GACZ37B,EAAG27B,EAAS,GACZi6F,OAAQmmiC,EAAWgB,YAAY,GAC/BlniC,OAAQkmiC,EAAWgB,YAAY,GAC/Bx5iC,SAAUw4iC,EAAWx4iC,SAEzB,CACF,CAEA,SAASo7iC,GAA2BpqtB,EAAK6oF,EAAK2+nB,EAAYl5K,GACxD,IAAIw7K,EAAS9ptB,EAAI+ptB,kBACbM,EAAWrqtB,EAAIsqtB,oBAEdD,EAcHtmF,GAAWsmF,EAAU,KAAM,CACzB39pC,EAAG86pC,EAAWgC,aAAa,GAC3B/9pC,EAAG+7pC,EAAWgC,aAAa,GAC3BnoiC,OAAQmmiC,EAAWgB,YAAY,GAC/BlniC,OAAQkmiC,EAAWgB,YAAY,GAC/Bx5iC,SAAUw4iC,EAAWx4iC,UACpBw4iC,EAAYl5K,IAnBf+7K,EAAWrqtB,EAAIsqtB,oBAAsBhtvB,GAAWkqvB,GAChDsC,EAAOl8oC,IAAIy8oC,GACXtmF,GAAWsmF,EAAU,CACnB39pC,EAAG86pC,EAAWgC,aAAa,GAC3B/9pC,EAAG+7pC,EAAWgC,aAAa,GAC3BnoiC,OAAQ,EACRC,OAAQ,EACRtS,SAAUw4iC,EAAWx4iC,UACpB,CACDqS,OAAQmmiC,EAAWgB,YAAY,GAC/BlniC,OAAQkmiC,EAAWgB,YAAY,IAC9BhB,EAAYl5K,GAUnB,CAGA,SAASi8K,GAAsBvqtB,EAAKwntB,EAAYl5K,GAC9C,IAAIzJ,EAAY,EAAc,CAAC,EAAG2iL,EAAWkC,cACzCc,EAAUxqtB,EAAIyqtB,mBAEbD,EAcHzmF,GAAWymF,EAAS,KAAM,CACxBz/7B,MAAO85wB,GACN2iL,EAAYl5K,KAffk8K,EAAUxqtB,EAAIyqtB,mBAAqB,IAAI,GAAa,CAClDjl+B,GAAI,EACJulC,MAAO85wB,EACPhogB,QAAQ,EACR//d,MAAO,CACL+owB,OAAQ,cACRhgpB,KAAM,cACNi1M,UAAW,MAGPirzB,iBAAkB,EAC1B/lrB,EAAIpyb,IAAI48oC,GAMZ,CAEA,SAASE,GAAmB1qtB,EAAK6oF,EAAK2+nB,EAAYl5K,GAEhD,GAAIk5K,EAAWH,WAAY,CACzB,IAAInzY,EAAWl0U,EAAI2qtB,oBACf76E,EAAY,EAAc,CAAC,EAAG03E,EAAW13E,WACzC7wB,EAAWp2hB,EAAIo2hB,SACfghC,EAAiBunE,EAAWvnE,eAC5Bny7B,EAAY05/B,EAAW15/B,UAE3B,GAAIomnB,EACF,GAAoBA,EAAU,CAC5BnpjB,MAAO+k3B,GACNmQ,EAAgBny7B,OACd,CACLgi7B,EAAU7wB,EAASrvB,IAAM,EACzB17Q,EAAW,IAAI,GAAa,CAC1BnpjB,MAAO+k3B,IAGT9voB,EAAI+ptB,kBAAkB1sM,YAAYnpM,GAElCl0U,EAAI2qtB,oBAAsBz2Y,EAC1B,IAAI37wB,EAAS,CAAC,EACdA,EAAO0mjC,EAASrvB,IAAM43H,EAAW13E,UAAU7wB,EAASrvB,IACpD,EAAQthD,EAAW,cAAgB,aAAap6N,EAAU,CACxDnpjB,MAAOxyN,GACN0nlC,EAAgBny7B,EACrB,CACF,CACF,CAEA,SAASwr2B,GAAarhgC,EAAM61J,GAC1B,IAAIq/0B,EAAYl1+B,EAAKqhgC,aAAaxr2B,GAGlC,OAFAq/0B,EAAU0B,wBAA0BA,GACpC1B,EAAUoB,mBAAqBA,GACxBpB,CACT,CAEA,SAAS0B,GAAwB/v9B,GAE/B,MAAO,CACLrZ,MAAOqZ,EAAKmroC,0BACZj4mC,MAAOlzB,EAAKoroC,uBAEhB,CAEA,SAAS37K,KAEP,OAAO9l/B,KAAK6+hB,YAAYind,wBAA0B9l/B,KAAKun+B,WAAW,YACpE,CAEA,SAAS46L,GAAU3ypC,EAAM4whB,EAAK2+nB,EAAYl5K,GAExC,IAAItuiB,EAAM,IAAI,GAEV8ptB,EAAS,IAAI,GAgBjB,OAfA9ptB,EAAIpyb,IAAIk8oC,GACR9ptB,EAAI+ptB,kBAAoBD,EACxBA,EAAOp9pC,EAAI86pC,EAAWiC,eAAe,GACrCK,EAAOr+pC,EAAI+7pC,EAAWiC,eAAe,GAEjCjC,EAAWJ,aACbyC,GAA4B7ptB,EAAK6oF,EAAK2+nB,GAEtC4C,GAA2BpqtB,EAAK6oF,EAAK2+nB,GAGvC+C,GAAsBvqtB,EAAKwntB,EAAYl5K,GACvCo8K,GAAmB1qtB,EAAK6oF,EAAK2+nB,EAAYl5K,GACzCtuiB,EAAI6qtB,oBAAsBC,GAAY7ypC,EAAMuvpC,GAC5CxntB,EAAI+qtB,sBAAwBvD,EACrBxntB,CACT,CAqBA,SAASgrtB,GAAU/ypC,EAAM61J,EAAWmy7B,EAAgBjgpB,GAElD,IAAI+lmB,EAAY/lmB,EAAIyqtB,mBACpB1kH,GAAaA,EAAUrlF,oBACvB,IAAI15uB,EAAQ,GACZgj7B,GAAShqtB,GAAK,SAAUlhb,GACtBkoN,EAAM18O,KAAKw0B,EACb,IACAkhb,EAAIsqtB,qBAAuBtj7B,EAAM18O,KAAK01c,EAAIsqtB,qBAE1CtqtB,EAAI2qtB,sBAAwB1qE,EAAiB,MAC7C,EAAYj52B,GAAO,SAAUloN,GAC3B,GAAsBA,EAAM,CAC1BuiG,OAAQ,EACRC,OAAQ,GACP2+9B,EAAgBny7B,GAAW,WAC5BkyS,EAAIlmX,QAAUkmX,EAAIlmX,OAAOx+D,OAAO0kb,EAClC,GACF,IACA/nc,EAAKu5iC,iBAAiB1j5B,EAAW,KACnC,CAEA,SAASg9/B,GAAY7ypC,EAAMuvpC,GACzB,MAAO,CAACvvpC,EAAK+ggC,cAAcwuJ,EAAW15/B,UAAW,WAAa,SAAU05/B,EAAWJ,eAAgBI,EAAWH,YAAY/xpC,KAAK,IACjI,CAEA,SAAS00pC,GAAShqtB,EAAK71Y,EAAIv0B,GAEzB,EAAYoqa,EAAI+ptB,kBAAkBthoC,YAAY,SAAU65G,GACtDA,IAAO09T,EAAIyqtB,oBAAsBtgmC,EAAG9hE,KAAKutC,EAAS0sG,EACpD,GACF,CAEA,SAASyh8B,GAAWzh8B,EAAI2ohC,EAAgBC,EAAgB1D,EAAYl5K,EAAUnk7B,GAC5E8gmC,GAAkB3ohC,EAAGo0Y,KAAKu0oB,GAEtBzD,EAAWH,aAAe/4K,EAC5B48K,GAAkB5ohC,EAAGo0Y,KAAKw0oB,GAE1BA,GAAkB,EAAQ58K,EAAW,cAAgB,aAAahs2B,EAAI4ohC,EAAgB1D,EAAWvnE,eAAgBunE,EAAW15/B,UAAW3jG,EAE3I,CAEA,SAAS,GAAa61Y,EAAK6oF,EAAK2+nB,GAC9B,IAAI15/B,EAAY05/B,EAAW15/B,UACvBq/0B,EAAYq6K,EAAWr6K,UAGvB4hG,EAAgB5hG,EAAU9szB,SAAS,YACnCsozB,EAAgBomG,EAAc1u5B,SAAS,aAAam0zB,eACpDrL,EAAYgE,EAAU9szB,SAAS,CAAC,OAAQ,cAAcm0zB,eACtDs6H,EAAc3hI,EAAU9szB,SAAS,CAAC,SAAU,cAAcm0zB,eAC1D12C,EAAcqvC,EAAUnd,WAAW,UACnCz2nB,EAAQw1uB,EAAcnjlC,IAAI,SAC1Bo/+B,EAAY+jG,EAAcnjlC,IAAI,aAC9BkjlC,EAAaC,EAAcnjlC,IAAI,SACnCo+pC,GAAShqtB,GAAK,SAAUlhb,GACtB,GAAIA,aAAgB,GAAS,CAC3B,IAAImwjC,EAAYnwjC,EAAKhiB,MACrBgiB,EAAK+zX,SAAS,EAAc,CAE1B7/P,MAAOi87B,EAAUj87B,MACjBtmJ,EAAGuilC,EAAUvilC,EACbjB,EAAGwjlC,EAAUxjlC,EACb+7B,MAAOynjC,EAAUznjC,MACjBC,OAAQwnjC,EAAUxnjC,QACjB+/nC,EAAW1qpC,OAChB,MACEgiB,EAAK+zX,SAAS20wB,EAAW1qpC,OAG3B,IAAIw4jC,EAAgBx2iC,EAAKm/7B,YAAY,YACrCq3G,EAAcx4jC,MAAQ6r+B,EAElBmmG,IAEFxZ,EAAcj08B,OAAuB,IAAdviG,EAAKuiG,OAC5Bi08B,EAAch08B,OAAuB,IAAdxiG,EAAKwiG,QAG9BxiG,EAAKm/7B,YAAY,QAAQnh9B,MAAQqs+B,EACjCrq9B,EAAKm/7B,YAAY,UAAUnh9B,MAAQgymC,EACnChxK,IAAgBh/6B,EAAKgrH,OAASg0zB,GAC9Bh/6B,EAAK0mK,GAAKgi+B,EAAWhi+B,EACvB,IACA,IAAI2l+B,EAAqBtioB,EAAIo2hB,SAASgoG,UAAUO,EAAWG,eAAiB,IAE5Er3K,GADctwiB,EAAIyqtB,mBACKt5K,GAAqBhE,GAAY,CACtD4C,aAAclnd,EAAI4id,YAClBuE,eAAgBli1B,EAChB08rB,YAAagjP,GAAgB3kjB,EAAI4id,YAAYx+2B,UAAW6gC,GACxD0k1B,aAAcg1K,EAAW1qpC,MAAM+oH,KAC/Bot3B,eAAgBu0K,EAAW1qpC,MAAMu3H,QACjCk+2B,uBAAwB44K,IAE1Bv+K,GAAoB5siB,EAAKzmG,EAAOyxoB,EAAW+jG,EAAcnjlC,IAAI,YAC/D,CAEA,SAAS09pC,GAAW8B,GAClB,IAAIC,EAAe//pC,KAAKogD,MAAM0/mC,GAE9B,OAAO9/pC,KAAKmjH,IAAI28iC,EAAQC,GAAgB,KAAOA,EAAe//pC,KAAKuK,KAAKu1pC,EAC1E,CAEA,SA1mBA,SAAUj6yB,GAGR,SAASm6yB,IACP,IAAIn2mC,EAAmB,OAAXg8T,GAAmBA,EAAOnoX,MAAMP,KAAMI,YAAcJ,KAGhE,OADA0sD,EAAMngD,KAAOs2pC,EAAiBt2pC,KACvBmgD,CACT,CAsFA,OA7FAkgX,EAAUi2vB,EAAkBn6yB,GAS5Bm6yB,EAAiBnjqC,UAAU4uH,OAAS,SAAU003B,EAAa1f,EAASr07B,GAClE,IAAImsR,EAAQp7T,KAAKo7T,MACb5rT,EAAOwz+B,EAAYx+2B,UACnBoub,EAAU5yjB,KAAKykJ,MACfm3C,EAAYonzB,EAAYjx3B,iBAExB23a,EADW9tW,EAAUst1B,cACGx/e,eACxBo5nB,EAAeln+B,EAAUm6X,OAAOuhgB,UAChCl3hB,EAAM,CACR8goB,OAAQ,CACNnioC,MAAOkQ,EAAIk8L,WACXnsM,OAAQiQ,EAAI+rI,aAEdgo0B,YAAaA,EACbE,SAAUtnzB,EACV4j+B,eAAgB,CAAC,CAACsD,EAAa7+pC,EAAG6+pC,EAAa7+pC,EAAI6+pC,EAAa/joC,OAAQ,CAAC+joC,EAAa9/pC,EAAG8/pC,EAAa9/pC,EAAI8/pC,EAAa9joC,SACvH0qgB,aAAcA,EACd8shB,SAAU+nG,IAAc70nB,GACxBm2nB,YAAatB,GAAa,GAAK70nB,IA+CjC,OA7CAl6hB,EAAK+4hB,KAAKqqB,GAASztiB,KAAI,SAAUkgJ,GAC/B,GAAK71J,EAAKkgjB,SAASrqZ,GAAnB,CAIA,IAAIq/0B,EAAYmsB,GAAarhgC,EAAM61J,GAC/B05/B,EAAaL,GAAclvpC,EAAM61J,EAAWq/0B,EAAWtkd,GACvD7oF,EAAM4qtB,GAAU3ypC,EAAM4whB,EAAK2+nB,GAC/BvvpC,EAAKu5iC,iBAAiB1j5B,EAAWkyS,GACjCn8I,EAAMj2S,IAAIoyb,GACV,GAAaA,EAAK6oF,EAAK2+nB,EAPvB,CAQF,IAAGxwlC,QAAO,SAAUs6O,EAAU4kN,GAC5B,IAAIl2D,EAAMq7G,EAAQ8vb,iBAAiBj1e,GAEnC,GAAKj+f,EAAKkgjB,SAAS7mQ,GAAnB,CAKA,IAAI67rB,EAAYmsB,GAAarhgC,EAAMq5S,GAC/Bk22B,EAAaL,GAAclvpC,EAAMq5S,EAAU67rB,EAAWtkd,GACtD2ioB,EAAoBV,GAAY7ypC,EAAMuvpC,GAEtCxntB,GAAOwrtB,IAAsBxrtB,EAAI6qtB,sBACnChn2B,EAAMvoS,OAAO0kb,GACb/nc,EAAKu5iC,iBAAiBlgwB,EAAU,MAChC0uJ,EAAM,MAGJA,EAobV,SAAmBA,EAAK6oF,EAAK2+nB,GAC3B,IAAIvnE,EAAiBunE,EAAWvnE,eAC5Bny7B,EAAY05/B,EAAW15/B,UAE3B,GADakyS,EAAI+ptB,kBACW,CAC1Br9pC,EAAG86pC,EAAWiC,eAAe,GAC7Bh+pC,EAAG+7pC,EAAWiC,eAAe,IAC5BxpE,EAAgBny7B,GAEf05/B,EAAWJ,aACbyC,GAA4B7ptB,EAAK6oF,EAAK2+nB,GAAY,GAElD4C,GAA2BpqtB,EAAK6oF,EAAK2+nB,GAAY,GAGnD+C,GAAsBvqtB,EAAKwntB,GAAY,GACvCkD,GAAmB1qtB,EAAK6oF,EAAK2+nB,GAAY,EAC3C,CApcQiE,CAAUzrtB,EAAK6oF,EAAK2+nB,GAEpBxntB,EAAM4qtB,GAAU3ypC,EAAM4whB,EAAK2+nB,GAAY,GAGzCvvpC,EAAKu5iC,iBAAiBlgwB,EAAU0uJ,GAChCA,EAAI+qtB,sBAAwBvD,EAE5B3j2B,EAAMj2S,IAAIoyb,GACV,GAAaA,EAAK6oF,EAAK2+nB,EAtBvB,MAFE3j2B,EAAMvoS,OAAO0kb,EAyBjB,IAAG1kb,QAAO,SAAUwyI,GAClB,IAAIkyS,EAAMq7G,EAAQ8vb,iBAAiBr90B,GACnCkyS,GAAOgrtB,GAAU3vmB,EAASvtZ,EAAWkyS,EAAI+qtB,sBAAsB9qE,eAAgBjgpB,EACjF,IAAGx1D,UACH/hZ,KAAKykJ,MAAQj1I,EACNxP,KAAKo7T,KACd,EAEAyn2B,EAAiBnjqC,UAAUmzB,OAAS,SAAUyw8B,EAASr07B,GACrD,IAAImsR,EAAQp7T,KAAKo7T,MACb5rT,EAAOxP,KAAKykJ,MAEZ6+0B,EAAQng+B,IAAI,aACVqM,GACFA,EAAKq0+B,mBAAkB,SAAUtsiB,GAC/BgrtB,GAAU/ypC,EAAMwt+B,GAAUzliB,GAAKlyS,UAAWi+zB,EAAS/rhB,EACrD,IAGFn8I,EAAMvtE,WAEV,EAEAg16B,EAAiBt2pC,KAAO,eACjBs2pC,CACT,CA/FA,CA+FE7/W,ICnEF,GAlDA,SAAUt6b,GAGR,SAASu6yB,IACP,IAAIv2mC,EAAmB,OAAXg8T,GAAmBA,EAAOnoX,MAAMP,KAAMI,YAAcJ,KAKhE,OAHA0sD,EAAMngD,KAAO02pC,EAAwB12pC,KACrCmgD,EAAM499B,iBAAkB,EACxB599B,EAAM699B,cAAgB,YACf799B,CACT,CAqCA,OA9CAkgX,EAAUq2vB,EAAyBv6yB,GAWnCu6yB,EAAwBvjqC,UAAUyohC,eAAiB,SAAUtq9B,GAG3D,OADAA,EAAOlrB,MAAQ,KACR+1U,EAAOhpX,UAAUyohC,eAAe5nhC,MAAMP,KAAMI,UACrD,EAEA6iqC,EAAwB12pC,KAAO,sBAC/B02pC,EAAwBhngC,aAAe,CAAC,QACxCgngC,EAAwBrioB,cAAgB6rd,GAAqBmpG,GAAmBh1jB,cAAe,CAC7F1mC,OAAQ,SACRq+f,WAAY,KACZ6rF,aAAc,KACdy6E,eAAgB,KAChBj4H,aAAc,KACd05H,aAAc,KACd3B,cAAc,EACdK,sBAAuB,MACvBJ,YAAY,EACZO,mBAAoB,KACpBL,kBAAmB,IACnB9pG,OAAQ,QAGRh8D,YAAa,EACbp4B,SAAU,CAGR9+3B,OAAO,GAET00K,OAAQ,CACN+tuB,UAAW,CACTjsoB,YAAa,cAIZ2qzB,CACT,CAhDA,CAgDErtE,IC5CF,IAAIstE,GAEJ,SAAUx6yB,GAGR,SAASw6yB,IACP,IAAIx2mC,EAAmB,OAAXg8T,GAAmBA,EAAOnoX,MAAMP,KAAMI,YAAcJ,KAIhE,OAFA0sD,EAAMngD,KAAO22pC,EAAe32pC,KAC5BmgD,EAAM63U,QAAU,GACT73U,CACT,CAqHA,OA7HAkgX,EAAUs2vB,EAAgBx6yB,GAU1Bw6yB,EAAexjqC,UAAU4uH,OAAS,SAAU003B,EAAa1f,EAASr07B,GAChE,IAAIz/B,EAAOwz+B,EAAYx+2B,UACnBpiI,EAAOpC,KACPo7T,EAAQp7T,KAAKo7T,MACb+n2B,EAAengL,EAAYogL,iBAC3Bh0C,EAAa5/mC,EAAKm5iC,UAAU,cAC5Bj19B,EAAO07hC,EAAW17hC,KAClB2p+B,EAAc+xD,EAAW/xD,YAI7B,SAASgmG,EAAUjinC,GACjB,OAAOA,EAAK12C,IACd,CALA0wT,EAAMn3T,EAAI,EACVm3T,EAAMp4T,EAAI0wF,EAAK1wF,EAAIq6jC,EAAY,GAM/B,IAAIimG,EAAa,IAAI,GAAWtjqC,KAAKujqC,eAAiB,GAAIJ,EAAcE,EAAWA,GAC/EG,EAAkB,GAGtB,SAASv9pC,EAAQwf,EAAQq1V,EAAKituB,GAC5B,IAAI07E,EAAkBrhqC,EAAKmiY,QAE3B,GAAe,WAAX9+W,EAAJ,CAWA,IANA,IAEIpR,EAcA4wB,EAhBAy+nC,EAAU,GACVp4E,EAAU,GAEV385B,EAAUw0+B,EAAarozB,GAAKnsL,QAC5BvqL,EAAI,EAEDA,EAAIuqL,EAAQtuL,OAAQ+D,IAAK,CAC9B,IAAI88H,EAAS1xH,EAAKo5iC,cAAcj63B,EAAQvqL,IACpCH,EAAIi9H,EAAOj9H,EACXwtL,EAAKvwD,EAAOuwD,GACZzuL,EAAIk+H,EAAOl+H,EACf0gqC,EAAQ7hqC,KAAKoC,EAAGwtL,GAChB655B,EAAQzplC,KAAKoC,EAAGwtL,EAAKzuL,GACrBqR,EAAQ7E,EAAK+ggC,cAAc5h1B,EAAQvqL,GAAI,QACzC,CAGA,IAAIu/pC,EAAan0pC,EAAKo5iC,cAAcj63B,EAAQ,IAExC8wL,EADaujoB,EAAYprzB,SAAS,SACdz0L,IAAI,UACxBmjlC,EAAgBtjG,EAAYprzB,SAAS,YAEzC,GAAe,QAAXnyK,EAAkB,CACpB,IAAIm+oC,EAAaJ,EAAgB1ozB,GAAO,IAAI,GAC5C71U,EAAU,IAAIwljC,GAAU,CACtBno3B,MAAO,CACLh3L,OAAQo4nC,EACRh5E,gBAAiBY,EACjBxl+B,OAAQ,GACR6k+B,gBAAiB,GACjBx4D,kBAAkB,GAEpBp11B,GAAI,IAEN6m+B,EAAWz+oC,IAAI8f,GACfm2R,EAAMj2S,IAAIy+oC,GAEN5gL,EAAY8C,sBACd7g9B,EAAQ2v7B,YAuDlB,SAA6Blh4B,EAAMsv5B,EAAath7B,GAC9C,IAAIk66B,EAAS,IAAI,GAAa,CAC5Bt5wB,MAAO,CACLr+N,EAAGyvF,EAAKzvF,EAAI,GACZjB,EAAG0wF,EAAK1wF,EAAI,GACZ+7B,MAAO,EACPC,OAAQ00D,EAAK10D,OAAS,MAU1B,OAPA,GAAkB488B,EAAQ,CACxBt5wB,MAAO,CACLr+N,EAAGyvF,EAAKzvF,EAAI,GACZ86B,MAAO20D,EAAK30D,MAAQ,IACpBC,OAAQ00D,EAAK10D,OAAS,KAEvBgk9B,GAtEqF,WAC9E/98B,EAAQ8y7B,gBACV,IAqED6jB,CACT,CAxE8B,CAAoB328B,EAAQk/M,kBAAmB6+vB,GAIvE,MACM4gL,EAAaH,EAAgB17E,GACjC9ijC,EAAU2+nC,EAAW/oM,QAAQ,GAC7Bz/pB,EAAMj2S,IAAIy+oC,GACVJ,EAAgB1ozB,GAAO8ozB,EACvB,GAAoB3+nC,EAAS,CAC3Bq9L,MAAO,CACLh3L,OAAQo4nC,EACRh5E,gBAAiBY,IAElBtoG,GACH4D,GAAa3h9B,GAGf4i9B,GAAc5i9B,EAASyj9B,GAAqB1F,GAAc,CACxDuE,eAAgB54zB,EAAQvqL,EAAI,GAC5B291B,YAAavy1B,EAAKw4U,QAAQr5J,EAAQvqL,EAAI,IACtC2l/B,aAAc11+B,EAAM+oH,MACnB,CACDimC,OAAQ,CACN8vkB,cAAe,YAInBlusB,EAAQyv7B,cAAc,CACpB/17B,SAAU,KACVm07B,OAAO,IAET,IAAIqnL,EAAUl1mC,EAAQ0nD,iBAElBwtjC,IACFA,EAAQl2oC,EAAI0/pC,EAAW1/pC,EAAIw7W,EAC3B06xB,EAAQn3oC,EAAI2gqC,EAAWly+B,GAAKky+B,EAAW3gqC,EAAI,GAG7CiiC,EAAQmlX,SAAS/1Y,GACjB7E,EAAKu5iC,iBAAiBjusB,EAAK71U,GAC3Bw/8B,GAAyBx/8B,EAAS+98B,GAClCmB,GAAoBl/8B,EAASqhjC,EAAcnjlC,IAAI,SAAUmjlC,EAAcnjlC,IAAI,aAAcmjlC,EAAcnjlC,IAAI,YAlF3G,MAFEi4T,EAAMvoS,OAAO4woC,EAAgB3ozB,GAqFjC,CA3FAwozB,EAAWn+oC,IAAI9hB,GAAK4C,EAASjG,KAAM,QAAQuuE,OAAOlrE,GAAK4C,EAASjG,KAAM,WAAW6yB,OAAOxvB,GAAK4C,EAASjG,KAAM,WAAW+hZ,UA6FvH/hZ,KAAKujqC,cAAgBJ,EACrBnjqC,KAAKukY,QAAUi/xB,CACjB,EAEAN,EAAe32pC,KAAO,aACf22pC,CACT,CA/HA,CA+HElgX,IAuBF,YCzJA,IAEI6gX,GAEJ,SAAUn7yB,GAGR,SAASm7yB,IACP,IAAIn3mC,EAAmB,OAAXg8T,GAAmBA,EAAOnoX,MAAMP,KAAMI,YAAcJ,KAGhE,OADA0sD,EAAMngD,KAAOs3pC,EAAsBt3pC,KAC5BmgD,CACT,CAoOA,OA3OAkgX,EAAUi3vB,EAAuBn7yB,GAajCm7yB,EAAsBnkqC,UAAUgxD,KAAO,SAAUmN,GAE/C6qT,EAAOhpX,UAAUgxD,KAAKnwD,MAAMP,KAAMI,WAKlCJ,KAAK2hmC,qBAAuB,IAAI,GAAqB,GAAY3hmC,KAAKwkI,QAASxkI,MAAO,GAAYA,KAAKi2gC,WAAYj2gC,MACrH,EASA6jqC,EAAsBnkqC,UAAUokqC,QAAU,SAAUt0pC,GAClD,IAAIu0pC,EAAgBv0pC,EAAKnP,OASrB2jqC,EAAgB,CAAC,EAEjBjW,EAAcv1lB,GAAUhpjB,GAAM,SAAU4xC,GAK1C,OAJK4inC,EAAcrkqC,eAAeyhD,EAAK,GAAK,MAC1C4inC,EAAc5inC,EAAK,GAAK,KAAO,GAG1BA,EAAK,EACd,IACI6inC,EAAY,GAChBlW,EAAY/oL,QAAQhjN,MAAK,SAAUtojB,EAAO70M,GACxCo/oC,EAAUpiqC,KAAK,CACb6I,KAAMma,EACNq/oC,SAAUxq8B,GAEd,IAGA,IAFA,IAAIyq8B,EAAWF,EAAU5jqC,OAEhBqD,EAAI,EAAGA,EAAIygqC,IAAYzgqC,EAAG,CAGjC,IAFA,IAAI45vB,EAAS2ma,EAAUvgqC,GAAGgH,KAEjBtG,EAAI,EAAGA,EAAI6/pC,EAAUvgqC,GAAGwgqC,SAAS7jqC,SAAU+D,EAAG,CACrD,IAAIggqC,EAAYH,EAAUvgqC,GAAGwgqC,SAAS9/pC,GAAG,GAAK,GAC9C4/pC,EAAcI,GAAa1gqC,CAC7B,CAEA,IAAK,IAAI0gqC,KAAaJ,EAChBA,EAAcrkqC,eAAeykqC,IAAcJ,EAAcI,KAAe1gqC,IAC1EsgqC,EAAcI,GAAa1gqC,EAC3B8L,EAAKu0pC,GAAiB,CAACK,EAAW,EAAG9ma,GACrCyma,IAGN,CAEA,OAAOv0pC,CACT,EAQAq0pC,EAAsBnkqC,UAAUyohC,eAAiB,SAAUtq9B,EAAQyl6B,GAajE,IAZA,IACI/7I,EADkBvn1B,KAAK41/B,uBAAuB,aAAcrxB,IAAkB1z0B,OAAO,GAC1D1tJ,IAAI,QAE/BkhqC,EAAa,GAAcxmmC,EAAOruD,MAAM,SAAU0gpB,GACpD,YAAuBninB,IAAhBminB,EAAS,EAClB,IAEI1gpB,EAAOxP,KAAK8jqC,QAAQO,GAAc,IAClC79G,EAAW,GACX/vyB,EAAUz2Q,KAAKy2Q,QAAU,KACzBltN,EAAQ,EAEH3oD,EAAI,EAAGA,EAAI4O,EAAKnP,SAAUO,EACjC4ljC,EAAS3kjC,KAAK2N,EAAK5O,GAvGH,IAyGX61Q,EAAQtzQ,IAAIqM,EAAK5O,GAzGN,MA0Gd61Q,EAAQxqQ,IAAIuD,EAAK5O,GA1GH,GA0GwB2oD,GACtCA,KAIJ,IAAImvG,EAAa8w5B,GAAwBh6iC,EAAM,CAC7Cuq/B,gBAAiB,CAAC,UAClB2B,iBAAkB,CAAC,CACjBhx/B,KAAM,OACN6B,KAAM+0iC,GAAuB/5N,IAC5B,CACD780B,KAAM,QACN6B,KAAM,SACL,CACD7B,KAAM,OACN6B,KAAM,YAER69iC,aAAc,CACZh7D,OAAQ,EACRju/B,MAAO,EACPk6/B,SAAU,KAEX3i2B,WACCviF,EAAO,IAAI,GAAWuiF,EAAY14J,MAEtC,OADAm2E,EAAKgjX,SAAS3pb,GACP2mE,CACT,EAOA0tlC,EAAsBnkqC,UAAU0jqC,eAAiB,WAK/C,IAJA,IAAI5zpC,EAAOxP,KAAKwkI,UACZ8/hC,EAAW90pC,EAAK+5C,QAChBg7mC,EAAW,GAEN3jqC,EAAI,EAAGA,EAAI0jqC,IAAY1jqC,EAC9B2jqC,EAAS3jqC,GAAKA,EAGhB,IAAI4jqC,EAAUh1pC,EAAK42iC,aAAa,UAE5B2nG,EAAcv1lB,GAAU+rmB,GAAU,SAAUvnpC,GAC9C,OAAOxN,EAAKrM,IAAI,OAAQ6Z,EAC1B,IACIynpC,EAAc,GAUlB,OATA1W,EAAY/oL,QAAQhjN,MAAK,SAAUtojB,EAAO70M,GACxC60M,EAAMntL,MAAK,SAAUm4nC,EAAQC,GAC3B,OAAOn1pC,EAAKrM,IAAIqhqC,EAASE,GAAUl1pC,EAAKrM,IAAIqhqC,EAASG,EACvD,IACAF,EAAY5iqC,KAAK,CACf6I,KAAMma,EACN8pK,QAAS+qC,GAEb,IACO+q8B,CACT,EAMAZ,EAAsBnkqC,UAAUklqC,mBAAqB,SAAUjt0B,EAAKx2V,EAAOgzjC,GACpE,GAAex8tB,KAClBA,EAAMA,EAAM,CAACA,GAAO,IAStB,IANA,IAIIkt0B,EAJAr1pC,EAAOxP,KAAKwkI,UACZigiC,EAAczkqC,KAAKojqC,iBACnBz0+B,EAAU,GACVw1+B,EAAWM,EAAYpkqC,OAGlBO,EAAI,EAAGA,EAAIujqC,IAAYvjqC,EAAG,CAKjC,IAJA,IAAIklL,EAAU3gJ,OAAO+lJ,UACjB45+B,GAAc,EACdC,EAAWN,EAAY7jqC,GAAG+tL,QAAQtuL,OAE7B+D,EAAI,EAAGA,EAAI2gqC,IAAY3gqC,EAAG,CACjC,IAAI4gqC,EAAWx1pC,EAAKrM,IAAIw0V,EAAI,GAAI8s0B,EAAY7jqC,GAAG+tL,QAAQvqL,IACnD21V,EAAOl3V,KAAKmjH,IAAIg/iC,EAAW7jqC,GAE3B44V,GAAQj0K,IACV+++B,EAAeG,EACfl/+B,EAAUi0K,EACV+q0B,EAAaL,EAAY7jqC,GAAG+tL,QAAQvqL,GAExC,CAEAuqL,EAAQ9sL,KAAKijqC,EACf,CAEA,MAAO,CACLriL,YAAa9zzB,EACbk2+B,aAAcA,EAElB,EAEAhB,EAAsBnkqC,UAAUu3X,cAAgB,SAAU5xN,EAAW4r2B,EAAgBjiwB,GACnF,IAAIx/P,EAAOxP,KAAKwkI,UAGhB,OAAOu+4B,GAAoB,YAAa,CACtCr4gC,KAHS8E,EAAKw4U,QAAQ3iL,GAItBlkK,MAHUqO,EAAKrM,IAAIqM,EAAK42iC,aAAa,SAAU/g5B,IAKnD,EAEAw+/B,EAAsBt3pC,KAAO,oBAC7Bs3pC,EAAsB5ngC,aAAe,CAAC,cACtC4ngC,EAAsBjjoB,cAAgB,CAEpCj7hB,EAAG,EACHuy/B,QAAS,OACTnm4B,iBAAkB,aAElBsr8B,YAAa,CAAC,MAAO,OAErB4nG,gBAAiB,EACjBrsK,gBAAiB,SACjBv3/B,MAAO,CACLo+W,OAAQ,EACRx8B,MAAM,EACNtkT,SAAU,OACV8lN,SAAU,IAEZm8uB,SAAU,CACRv/9B,MAAO,CACL4hV,MAAM,KAIL4g1B,CACT,CA7OA,CA6OElmZ,IAEF,YC1Pe,SAASunZ,GAAiB5hM,EAASr07B,GAChDq07B,EAAQq/B,iBAAiB,cAAc,SAAU3f,GAC/C,IAAIxz+B,EAAOwz+B,EAAYx+2B,UACnB4q3B,EAASpM,EAAYjx3B,iBACrBq9/B,EAAa,CAAC,EAEd17hC,EAAO075B,EAAOkoE,UAClB83D,EAAW17hC,KAAOA,EAClB,IAAI2p+B,EAAcr6E,EAAY7/+B,IAAI,eAC9BsnM,EAAO2kzB,EAAOpuI,UAClBouQ,EAAW/xD,YAAcA,EAEL,eAAhB5y3B,EAAK+ozB,QACP6pE,EAAY,GAAK,GAAwBA,EAAY,GAAI3p+B,EAAK10D,QAC9Dq+hC,EAAY,GAAK,GAAwBA,EAAY,GAAI3p+B,EAAK10D,QAE9DmmoC,GAAmB31pC,EAAMwz+B,EADZtv5B,EAAK10D,OAASq+hC,EAAY,GAAKA,EAAY,MAGxDA,EAAY,GAAK,GAAwBA,EAAY,GAAI3p+B,EAAK30D,OAC9Ds+hC,EAAY,GAAK,GAAwBA,EAAY,GAAI3p+B,EAAK30D,OAE9DomoC,GAAmB31pC,EAAMwz+B,EADbtv5B,EAAK30D,MAAQs+hC,EAAY,GAAKA,EAAY,KAIxD7tjC,EAAKk5iC,UAAU,aAAc0mE,EAC/B,GACF,CASA,SAAS+1C,GAAmB31pC,EAAMwz+B,EAAahk9B,GAC7C,GAAKxvB,EAAK+5C,QAyBV,IArBA,IAmBI67mC,EAnBAliL,EAAWF,EAAYjx3B,iBAEvB0yiC,EAAczhL,EAAYogL,iBAE1BoB,EAAUh1pC,EAAK42iC,aAAa,UAC5BoQ,EAAWhnjC,EAAK42iC,aAAa,SAC7Bi/G,EAAc,EAAWZ,GAAa,SAAUa,GAClD,OAAO,EAAWA,EAAY32+B,SAAS,SAAUmsL,GAC/C,IAAI3uW,EAAK+2+B,EAASy0E,YAAYnojC,EAAKrM,IAAIqhqC,EAAS1pzB,IAEhD,OADA3uW,EAAG,GAAKqD,EAAKrM,IAAIqzjC,EAAU17sB,GACpB3uW,CACT,GACF,IACIk6C,EAoCN,SAAyB72C,GAOvB,IANA,IAAI20pC,EAAW30pC,EAAKnP,OAChB0kqC,EAAWv1pC,EAAK,GAAGnP,OACnBmpZ,EAAO,GACP/3N,EAAK,GACL9jL,EAAM,EAED/M,EAAI,EAAGA,EAAImkqC,IAAYnkqC,EAAG,CAGjC,IAFA,IAAI6nL,EAAO,EAEFrkL,EAAI,EAAGA,EAAI+/pC,IAAY//pC,EAC9BqkL,GAAQj5K,EAAKpL,GAAGxD,GAAG,GAGjB6nL,EAAO96K,IACTA,EAAM86K,GAGR+gO,EAAK3nZ,KAAK4mL,EACZ,CAEA,IAAK,IAAI/kL,EAAI,EAAGA,EAAIqhqC,IAAYrhqC,EAC9B+tL,EAAG/tL,IAAMiK,EAAM67Y,EAAK9lZ,IAAM,EAG5BiK,EAAM,EAEN,IAAK,IAAInL,EAAI,EAAGA,EAAIuiqC,IAAYviqC,EAAG,CACjC,IAAIssG,EAAM06S,EAAKhnZ,GAAKivL,EAAGjvL,GAEnBssG,EAAMnhG,IACRA,EAAMmhG,EAEV,CAEA,MAAO,CACL2iF,GAAIA,EACJ9jL,IAAKA,EAET,CA3Ea43pC,CAAgBF,GACvBG,EAAWn/mC,EAAKorI,GAChBogwB,EAAK7y5B,EAASqnB,EAAK14C,IAEnBtO,EAAIolqC,EAAYpkqC,OAChB+C,EAAIqhqC,EAAY,GAAG91+B,QAAQtuL,OAGtB+D,EAAI,EAAGA,EAAIhB,IAAKgB,EAAG,CAC1BghqC,EAASI,EAASphqC,GAAKyt7B,EACvBri7B,EAAKq5iC,cAAc47G,EAAY,GAAG91+B,QAAQvqL,GAAI,CAC5C2rJ,WAAY,EACZ9rJ,EAAGohqC,EAAY,GAAGjhqC,GAAG,GACrBqtL,GAAI2z+B,EACJpiqC,EAAGqiqC,EAAY,GAAGjhqC,GAAG,GAAKyt7B,IAG5B,IAAK,IAAIjx7B,EAAI,EAAGA,EAAIvB,IAAKuB,EACvBwkqC,GAAUC,EAAYzkqC,EAAI,GAAGwD,GAAG,GAAKyt7B,EACrCri7B,EAAKq5iC,cAAc47G,EAAY7jqC,GAAG+tL,QAAQvqL,GAAI,CAC5C2rJ,WAAYnvJ,EACZqD,EAAGohqC,EAAYzkqC,GAAGwD,GAAG,GACrBqtL,GAAI2z+B,EACJpiqC,EAAGqiqC,EAAYzkqC,GAAGwD,GAAG,GAAKyt7B,GAGhC,CACF,CCxEA,IAMI4zO,GAEJ,SAAU/8yB,GAGR,SAAS+8yB,EAAcp8kC,EAAM255B,EAAa1f,EAASr07B,GACjD,IAAIyd,EAAQg8T,EAAO9oX,KAAKI,OAASA,KAEjC0sD,EAAMqwI,GAda,EAenBrwI,EAAMmm6B,WAAa,CACjBtw2B,QAAQ,GAEVy63B,GAAUtw7B,GAAOww7B,YAAc8F,EAAY9F,YAC3C,IAAI9s9B,EAAO,IAAI,GAAa,CAC1B2sK,GAnBe,EAoBfq3S,OAAQ/qZ,EAAKuuG,WAAWz0L,IAAI,CAAC,QAAS,aAOxC,OAJAupD,EAAMio6B,eAAevk8B,GAErBs8B,EAAMimgB,YAAW,EAAMtpe,EAAM255B,EAAa1f,EAASr07B,GAE5Cyd,CACT,CA2LA,OA/MAkgX,EAAU64vB,EAAe/8yB,GAsBzB+8yB,EAAc/lqC,UAAUizjB,WAAa,SAAU+siB,EAAar2gC,EAC5D255B,EAAa1f,EAASr07B,GACpBjvC,KAAKqpF,KAAOA,EACZA,EAAKo3iC,MAAQzgoC,KACbgj/B,EAAcA,GAAehj/B,KAAK0lqC,aAClCpiM,EAAUA,GAAWtj+B,KAAK2lqC,SAC1B,IAAIl5V,EAASzs0B,KACbg9+B,GAAUvwK,GAAQpnqB,UAAYh8E,EAAKg8E,UACnC,IAAIq/0B,EAAYr75B,EAAKuuG,WACjB0u5B,EAAgB5hG,EAAU9szB,SAAS,YACnC12D,EAAS73C,EAAKs/9B,YACduzC,EAAc,EAAc,CAAC,EAAGh79B,GACpCg79B,EAAY76lC,MAAQ,KACpB,IAAI+m/B,EAAc/+5B,EAAKyy8B,UAAU,SACjC1zC,EAAY1kO,SAAW,QACvB,IAAI8vN,EAAQnq5B,EAAKyy8B,UAAU,SAEvBtoD,IACF4U,EAAY5U,MAAQy4D,GAA+Bz4D,EAAOvk8B,IAG5D,IAAIug/B,EAAeknE,GAAsBhyG,EAAU9szB,SAAS,aAAcsk6B,GAAa,GACvF,EAAcA,EAAa1sE,GAC3B,EAAY5xC,IAAgB,SAAU5hb,GACpC,IAAIrwjB,EAAQ8g0B,EAAO+oJ,YAAYx5Z,GAC3B4pmB,EAAiBlhL,EAAU9szB,SAAS,CAACokY,EAAW,cACpDrwjB,EAAM0I,MAAQuxpC,EAAe75K,eAE7B,IAAIyjC,EAAeknE,GAAsBkvE,EAAgB1pE,GAErD1sE,IACF7jhC,EAAM22N,MAAQktzB,EAElB,IAEIkwE,GACFjzR,EAAO7lb,SAASs1sB,GAChBzvR,EAAOnqmB,MAAMviO,EAAImhI,EAAOotO,GACxB,GAAkBm+d,EAAQ,CACxBnqmB,MAAO,CACLviO,EAAGmhI,EAAOnhI,IAEXij/B,EAAa355B,EAAKg8E,aAIrB,GAAoBonqB,EAAQ,CAC1BnqmB,MAAO453B,GACNl5G,GACH4D,GAAan6K,IAGfA,EAAOrib,SAASg+lB,GAEhBpo/B,KAAK2/lC,aAAa38G,GAElB,IAAI3tC,EAAcqvC,EAAUnd,WAAW,UACvClyB,GAAe5oI,EAAOx+S,KAAK,SAAUonb,GACrCr18B,KAAK0lqC,aAAe1iL,GAAehj/B,KAAK0lqC,aACxC1lqC,KAAK2lqC,SAAWriM,GAAWtj+B,KAAK2lqC,SAChC,IAAI70zB,EAAQw1uB,EAAcnjlC,IAAI,SAE9Bgh/B,GAAoBnk/B,KADW,aAAV8wW,EAAuBznR,EAAK6niC,sBAAkC,eAAVpgxB,EAAyBznR,EAAK8niC,uBAAyBrgxB,EACtFw1uB,EAAcnjlC,IAAI,aAAcmjlC,EAAcnjlC,IAAI,YAC9F,EAEAsiqC,EAAc/lqC,UAAUigmC,aAAe,SAAU38G,GAC/C,IAAIt27B,EAAQ1sD,KAER0k/B,EAAY1k/B,KAAKqpF,KAAKuuG,WACtBmzzB,EAAmBrG,EAAU9szB,SAAS,SACtC12D,EAASlhI,KAAKqpF,KAAKs/9B,YACnBh60B,EAAQztG,EAAO4npB,SAAW5npB,EAAO2npB,WACjCipD,GAAY5wsB,EAAO2npB,WAAa3npB,EAAO4npB,UAAY,EACnDt0oB,EAAK3xI,KAAKuxH,IAAI09sB,GACdz9rB,EAAKxxI,KAAK4wH,IAAIq+sB,GACdrF,EAASzs0B,KACTqB,EAAQor0B,EAAO9/uB,iBACf04E,EAAYrlK,KAAKqpF,KAAKg8E,UACtB4sqB,EAAgB84K,EAAiB5n/B,IAAI,YAAc,IAAMN,KAAKsmC,GAC9D08nC,EAAgB96K,EAAiB5n/B,IAAI,WAA8B,MAAjB8u0B,GAAyBpv0B,KAAKmjH,IAAI2oH,GAASsjmB,GA6FjG,SAAS6zV,EAAa/wiC,EAAOrqH,GAC3B,IAAIq7pC,EAAYhxiC,EAAM5xH,IAAIuH,GAE1B,OAAiB,MAAbq7pC,EACKh7K,EAAiB5n/B,IAAIuH,GAGvBq7pC,CACT,CApGA1kqC,EAAM8mC,QAAU09nC,EAEhB,EAAYhoL,IAAgB,SAAU7hb,GACpC,IAAIgqmB,EAAgC,WAAdhqmB,EAAyB0ob,EAAU9szB,SAAS,SAAW8szB,EAAU9szB,SAAS,CAACokY,EAAW,UACxGwtgB,EAAyB,WAAdxtgB,EACXrwjB,EAAQ69jC,EAAWnokC,EAAQA,EAAMm09B,YAAYx5Z,GAC7C5riB,EAAO4y9B,EAAY0E,kBAAkBri1B,EAAW22Z,GAEhDwtgB,IACFp5iC,EAAOA,GAAQs8B,EAAM28B,KAAK3+E,MAG5BiB,EAAM0I,MAAQg0+B,GAAgB29K,EAAiB,CAAC,EAAG,KAAoB,WAAdhqmB,GAAwB,GAE7E5riB,IACFzkB,EAAM0I,MAAM+b,KAAOA,GAIrB,IAAI61oC,EAAUD,EAAgB7iqC,IAAI,QAEnB,MAAX8iqC,GAAoBz8F,IACtB79jC,EAAMw8B,QAAU89nC,GAGlB,IAOIlmqC,EAPA2p/B,EAAgBo8K,EAAaE,EAAiB,YAC9CE,EAAc18F,EAAW/8P,EAASA,EAAOp9T,OAAO2sD,GAChDwxP,EAAa04W,EAAY7xpC,MAAM+oH,KACnC8oiC,EAAYrzM,WAAa,CACvBoB,YAA8C,YAAjC+xM,EAAgB7iqC,IAAI,SAAyBqqzB,EAAa,KACvEjrsB,OAA0B,YAAlBmn4B,GAGV,IAAIy8K,EAAeL,EAAaE,EAAiB,aAAe,EAC5Dhh7B,EAAY8g7B,EAAaE,EAAiB,SAExB,YAAlBt8K,GACF3p/B,EAAImhI,EAAOnhI,EAAIomqC,EACfnh7B,EAAY8slB,EAAWjv0B,KAAKsmC,GAAK,EAAI,QAAU,QAE1C67M,GAA2B,WAAdA,EASO,SAAdA,GACTjlP,EAAImhI,EAAOotO,GAAK63zB,EAEZr0V,EAAWjv0B,KAAKsmC,GAAK,IACvB67M,EAAY,UAES,UAAdA,IACTjlP,EAAImhI,EAAOnhI,EAAIomqC,EAEXr0V,EAAWjv0B,KAAKsmC,GAAK,IACvB67M,EAAY,UAhBZjlP,EADE4uO,IAAU,EAAI9rO,KAAKsmC,IAAoB,IAAd+3F,EAAOotO,GAC9B,GAECptO,EAAOnhI,EAAImhI,EAAOotO,IAAM,EAG/BtpH,EAAY,UAgBhBr5O,EAAM0I,MAAMkwwB,MAAQv/hB,EACpBr5O,EAAM0I,MAAM8+tB,cAAgB2yb,EAAaE,EAAiB,kBAAoB,SAC9Er6pC,EAAM1H,EAAIlE,EAAIy0I,EAAKtT,EAAOw/H,GAC1B/0P,EAAM3I,EAAIjD,EAAIs0I,EAAKnT,EAAO+lO,GAC1B,IAAIm1vB,EAAa0pE,EAAaE,EAAiB,UAC3CvgjC,EAAS,EAEM,WAAf22+B,GACF32+B,EAAS4s3B,IAAiBvgK,IAEbjv0B,KAAKsmC,GAAK,GAAKs8E,EAAmB,IAAV5iH,KAAKsmC,KACxCs8E,GAAU5iH,KAAKsmC,IAEO,eAAfizjC,GACT32+B,EAAS5iH,KAAKsmC,GAAK,EAAI2oyB,GAEVjv0B,KAAKsmC,GAAK,EACrBs8E,GAAU5iH,KAAKsmC,GACNs8E,GAAU5iH,KAAKsmC,GAAK,IAC7Bs8E,GAAU5iH,KAAKsmC,IAER,GAAgBizjC,KACzB32+B,EAAS22+B,EAAav5lC,KAAKsmC,GAAK,KAGlCx9B,EAAM46G,SAAW8r3B,GAAgB5s3B,EACnC,IAYApkH,EAAMiz9B,YACR,EAEOmxM,CACT,CAjNA,CAiNE,IAEF,YClOO,IAAIW,GAAsB,qBAC7BC,GAAmB,oBCInBC,GAEJ,SAAU59yB,GAGR,SAAS49yB,IACP,IAAI55mC,EAAmB,OAAXg8T,GAAmBA,EAAOnoX,MAAMP,KAAMI,YAAcJ,KAGhE,OADA0sD,EAAMngD,KAAO+5pC,EAAa/5pC,KACnBmgD,CACT,CA6KA,OApLAkgX,EAAU05vB,EAAc59yB,GASxB49yB,EAAa5mqC,UAAU4uH,OAAS,SAAU003B,EAAa1f,EAASr07B,EAChEna,GACE,IAAI1yB,EAAOpC,KACXA,KAAKgj/B,YAAcA,EACnBhj/B,KAAKivC,IAAMA,EACXjvC,KAAKsj+B,QAAUA,EACf,IAAI9z9B,EAAOwz+B,EAAYx+2B,UACnByr/B,EAAczgnC,EAAKuqZ,KAAK5pQ,KACxBo2gC,EAAUvjL,EAAY00I,cACtBt8zB,EAAQp7T,KAAKo7T,MACbor2B,EAAyBxjL,EAAY7/+B,IAAI,0BACzC+6e,EAAc,GAClBqorB,EAAQxzC,UAAS,SAAU1piC,GACzB60Z,EAAYr8e,KAAKwnF,EACnB,IACA,IAAIo9kC,EAAczmqC,KAAK0mqC,cAAgB,IAQvC,SAAoBxorB,EAAauorB,GAO/B,SAAS5x0B,EAAOxrQ,GACd,OAAOA,EAAKoqZ,OACd,CAEA,SAASorpB,EAAY1+E,EAAQ4nC,IAO/B,SAAsBh3M,EAASt9U,GAM7B,GALK+ymB,IAA0Bz1R,GAAYA,EAAQ70wB,aAEjD60wB,EAAU,MAGRA,IAAYk/O,GAAex8jB,IAAYw8jB,EACzC,GAAIx8jB,GAAWA,EAAQgtkB,MACjB1vP,GAEFt9U,EAAQgtkB,MAAM9tkB,YAAW,EAAOo+U,EAASiyG,EAAa1f,EAASr07B,GAE/Dz/B,EAAKu5iC,iBAAiBh4K,EAAQ1ruB,UAAWouZ,EAAQgtkB,SAerCp3iC,EAZDoqe,IAiBbpqe,EAAKo3iC,QACPrl0B,EAAMvoS,OAAOw2D,EAAKo3iC,OAClBp3iC,EAAKo3iC,MAAQ,WAjBN,GAAI1vP,EAAS,CAElB,IAAI0vP,EAAQ,IAAI,GAAc1vP,EAASiyG,EAAa1f,EAASr07B,GAC7DmsR,EAAMj2S,IAAIs7mC,GAEVjxnC,EAAKu5iC,iBAAiBh4K,EAAQ1ruB,UAAWo79B,EAC3C,CAIJ,IAAoBp3iC,CAFpB,CA7BImyiC,CAFwB,MAAVr7E,EAAiB,KAAOjikB,EAAYiikB,GAC1B,MAAV4nC,EAAiB,KAAO0+E,EAAY1+E,GAEpD,CAd2B,IAAvB7pmB,EAAY79e,QAAuC,IAAvBomqC,EAAYpmqC,QAI5C,IAAI,GAAWomqC,EAAavorB,EAAarpJ,EAAQA,GAAQ1vU,IAAI05mC,GAAatwjC,OAAOswjC,GAAahsmC,OAAO,GAAagsmC,EAAa,OAAO98uB,SAWxI,CAvBA28uB,CAAWxgpB,EAAauorB,GA+DxB,SAAsBx2C,EAAawE,GAC7BA,EAASl9+B,MAAQ,GAEfn1I,EAAKukqC,aAEPvkqC,EAAKukqC,aAAah0mB,YAAW,EAAOs9jB,EAAajtI,EAAa1f,EAASr07B,IAGvE7sC,EAAKukqC,aAAe,IAAI,GAAc12C,EAAajtI,EAAa1f,EAASr07B,GACzEmsR,EAAMj2S,IAAI/iB,EAAKukqC,eAIjBlyC,EAASgM,MAAMzylC,IAAI,SACnB5rC,EAAKukqC,aAAa/1pC,GAAG,SAAS,SAAUzR,GACtCiD,EAAKo9nC,YAAY/K,EAAS/ylC,WAC5B,KACSt/B,EAAKukqC,eAEdvr2B,EAAMvoS,OAAOzwB,EAAKukqC,cAClBvkqC,EAAKukqC,aAAe,KAExB,CApFAC,CAAa32C,EAAas2C,GAE1BvmqC,KAAK4yiC,cAEL5yiC,KAAK0mqC,aAAexorB,CAiFtB,EAMAoorB,EAAa5mqC,UAAUkziC,YAAc,WACnC,IAAIlm/B,EAAQ1sD,KAEZA,KAAKo7T,MAAMptR,IAAI,SACfhuC,KAAKo7T,MAAMxqT,GAAG,SAAS,SAAUzR,GAC/B,IAAI0nqC,GAAc,EAEHn6mC,EAAMs27B,YAAY00I,cAExB3E,UAAS,SAAU1piC,GAC1B,IAAKw9kC,GAAex9kC,EAAKo3iC,OAASp3iC,EAAKo3iC,QAAUthoC,EAAE2Q,OAAQ,CACzD,IAAIqt2B,EAAY9zxB,EAAKuuG,WAAWz0L,IAAI,aAEpC,GAAkB,eAAdg62B,EACFzwzB,EAAM8ykC,YAAYn2iC,QACb,GAAkB,SAAd8zxB,EAAsB,CAC/B,IAAIunI,EAAYr75B,EAAKuuG,WACjB+nN,EAAO+kmB,EAAUvh/B,IAAI,QAErBw8Y,GAEFwzmB,GAAWxzmB,EADM+kmB,EAAUvh/B,IAAI,UAAU,IAAS,SAGtD,CAEA0jqC,GAAc,CAChB,CACF,GACF,GACF,EAMAP,EAAa5mqC,UAAU8/nC,YAAc,SAAUn2iC,GACzCA,IAASrpF,KAAKgj/B,YAAY00I,eAC5B13nC,KAAKivC,IAAIu1/B,eAAe,CACtBj4hC,KAAM65pC,GACNropC,KAAM/d,KAAKozV,IACX2pb,SAAU/8wB,KAAKgj/B,YAAYz39B,GAC3B8omC,WAAYhriC,GAGlB,EAMAi9kC,EAAa5mqC,UAAUm1iC,aAAe,SAAU1/5B,EAAO6t2B,GACrD,IACIk+G,EADWl+G,EAAYx+2B,UACDok7B,cAAc,GAExC,GAAIs4C,EAAY,CACd,IAAI1s9B,EAAKW,EAAM,GAAK+r9B,EAAWxg2B,GAC3BrsH,EAAKc,EAAM,GAAK+r9B,EAAWj6vB,GAC3B3vN,EAASz0I,KAAK4yF,KAAK++C,EAAKA,EAAKH,EAAKA,GACtC,OAAOiD,GAAU4p9B,EAAWnhmC,GAAKu3I,GAAU4p9B,EAAW5yvB,EACxD,CACF,EAEAg4zB,EAAa/5pC,KAAO,WACb+5pC,CACT,CAtLA,CAsLEtjX,IAEF,YCrCA,SAAS,GAAkBkxU,GAIzB,IAAIplhC,EAAM,EACV,EAAYolhC,EAASl0lC,UAAU,SAAUkqD,GACvC,GAAkBA,GAClB,IAAImsiC,EAAansiC,EAAM/oF,MAEvB,GAAek1nC,KAAgBA,EAAaA,EAAW,IACvDvnhC,GAAOunhC,CACT,IACA,IAAIC,EAAYpC,EAAS/ynC,MAErB,GAAem1nC,KACjBA,EAAYA,EAAU,KAGP,MAAbA,GAAqBhqlC,MAAMgqlC,MAC7BA,EAAYxnhC,GAIVwnhC,EAAY,IACdA,EAAY,GAGd,GAAepC,EAAS/ynC,OAAS+ynC,EAAS/ynC,MAAM,GAAKm1nC,EAAYpC,EAAS/ynC,MAAQm1nC,CACpF,CAEA,SAjLA,SAAU5twB,GAGR,SAASo+yB,IACP,IAAIp6mC,EAAmB,OAAXg8T,GAAmBA,EAAOnoX,MAAMP,KAAMI,YAAcJ,KAIhE,OAFA0sD,EAAMngD,KAAOu6pC,EAAoBv6pC,KACjCmgD,EAAM299B,mBAAoB,EACnB399B,CACT,CAuIA,OA/IAkgX,EAAUk6vB,EAAqBp+yB,GAU/Bo+yB,EAAoBpnqC,UAAUyohC,eAAiB,SAAUtq9B,EAAQyl6B,GAE/D,IAAInz0B,EAAO,CACTzlJ,KAAMmzD,EAAOnzD,KACbs1B,SAAU69B,EAAOruD,MAEnB,GAAkB2gJ,GAClB,IAAIoj+B,EAAcvznC,KAAK+mqC,aAAe,EAAWlpmC,EAAOqmN,QAAU,IAAI,SAAU4y2B,GAC9E,OAAO,IAAI,GAAMA,EAAa92nC,KAAMsj+B,EACtC,GAAGtj+B,MAIC+5Z,EAAO,GAAK85tB,WAAW1j+B,EAAMnwJ,MAEjC,SAAoB+oR,GAClBA,EAASkiwB,WAAW,gBAAgB,SAAUl25B,EAAO+lP,GACnD,IAAIzxR,EAAO0wU,EAAKi2tB,mBAAmBl1wB,GAC/Bq8wB,EAAa5D,EAAYlqiC,EAAKkuD,OAElC,OADA4/+B,IAAepigC,EAAM8pa,YAAcs4lB,GAC5BpigC,CACT,GACF,IAEA,OAAOglS,EAAKvqZ,IACd,EAEAs3pC,EAAoBpnqC,UAAU61/B,cAAgB,WAC5Cv1/B,KAAKo3nC,eACP,EAMA0vC,EAAoBpnqC,UAAUywgC,cAAgB,SAAU9q2B,GACtD,IAAIh9H,EAASqgV,EAAOhpX,UAAUywgC,cAAc5vgC,MAAMP,KAAMI,WAEpDipF,EAAOrpF,KAAKwkI,UAAUu1R,KAAKi2tB,mBAAmB3q9B,GAElD,OADAh9H,EAAOsslC,aAAeD,GAAiBrriC,EAAMrpF,MACtCqoC,CACT,EAEAy+nC,EAAoBpnqC,UAAU4znC,cAAgB,SAAUjqiC,GACtD,OAAOrpF,KAAK+mqC,cAAgB/mqC,KAAK+mqC,aAAa19kC,EAAKkuD,MACrD,EAEAuvhC,EAAoBpnqC,UAAUg4nC,YAAc,WAC1C,OAAO13nC,KAAK23nC,SACd,EAEAmvC,EAAoBpnqC,UAAU03nC,cAAgB,SAAU3C,GACtDA,EAAWz0nC,KAAK23nC,UAAYlD,EAAWA,EAAWz0nC,KAAK23nC,UACvD,IAAIxn+B,EAAOnwJ,KAAKi2gC,aAAal8mB,KAAK5pQ,KAE7Bsk+B,IAAYA,IAAatk+B,GAASA,EAAKvzH,SAAS63lC,MACnDz0nC,KAAK23nC,UAAYxn+B,EAErB,EAEA22gC,EAAoBpnqC,UAAUk4nC,gBAAkB,WAC9C1B,GAAuBl2nC,KACzB,EAEA8mqC,EAAoBv6pC,KAAO,kBAC3Bu6pC,EAAoBlmoB,cAAgB,CAElCj7hB,EAAG,EAEHs5B,OAAQ,CAAC,MAAO,OAChBq4G,OAAQ,CAAC,EAAG,OAEZstN,WAAW,EACXikb,WAAY,GAEZmlD,SAAU,EAEVuvR,kBAAkB,EAElBpgP,UAAW,aACXqpT,wBAAwB,EACxBnlqC,MAAO,CAELokH,OAAQ,SACRw9N,MAAM,EACNr3M,QAAS,EAGT24oB,MAAO,SACP5lvB,SAAU,SACVsqH,SAAU,EACVmrV,QAAQ,GAEVmwgB,UAAW,CACT/M,YAAa,EACbl/nB,YAAa,QACboyoB,WAAY,QACZ1lO,WAAY,EACZn0pB,YAAa,qBACbi0pB,cAAe,EACfC,cAAe,EACfn5oB,QAAS,GAEXg11B,SAAU,CACR9vnB,MAAO,cAETm0a,KAAM,CACJs/N,UAAW,CACT342B,QAAS,IAEXvqI,MAAO,CACLuqI,QAAS,KAIb052B,cAAe,YACfoT,kBAAmB,IACnBC,wBAAyB,IACzBnp/B,KAAM,GAaN+8B,KAAM,QAEDu6nC,CACT,CAjJA,CAiJEnpZ,ICxJF,IAAI,GAAS96wB,KAAKsmC,GAAK,IACR,SAAS69nC,GAAevqV,EAAY6mJ,EAASr07B,GAC1Dq07B,EAAQq/B,iBAAiBlmL,GAAY,SAAUumK,GAC7C,IAAI/j9B,EAAS+j9B,EAAY7/+B,IAAI,UACzBm0I,EAAS0r2B,EAAY7/+B,IAAI,UAExB,GAAem0I,KAClBA,EAAS,CAAC,EAAGA,IAGV,GAAer4G,KAClBA,EAAS,CAACA,EAAQA,IAGpB,IAAIF,EAAQkQ,EAAIk8L,WACZnsM,EAASiQ,EAAI+rI,YACbp2J,EAAO/hB,KAAKgL,IAAIkxB,EAAOC,GACvB0hO,EAAK,GAAazhO,EAAO,GAAIF,GAC7BkoU,EAAK,GAAahoU,EAAO,GAAID,GAC7BsvU,EAAK,GAAah3N,EAAO,GAAI1yH,EAAO,GACpC7kB,EAAI,GAAau3I,EAAO,GAAI1yH,EAAO,GACnCikwB,GAAcm6N,EAAY7/+B,IAAI,cAAgB,GAC9C6q0B,EAAWg1K,EAAY7/+B,IAAI,YAAc,GACzC8snC,EAAcjtI,EAAYx+2B,UAAUu1R,KAAK5pQ,KACzCu1+B,EAAW1iJ,EAAY00I,cACvBuvC,EAAYvhC,EAASnu/B,MACrBhrG,EAAOy28B,EAAY7/+B,IAAI,QAEf,MAARopC,GACF,GAAam5lC,EAAUn5lC,GAGzB,IAAI6wjC,EAAiB,EACrB,EAAYsoC,EAAS1lmC,UAAU,SAAUkqD,IACtC59C,MAAM49C,EAAMgyC,aAAekh+B,GAC9B,IACA,IAAItu/B,EAAM42hC,EAASxpgC,WAEfmh+B,EAAax6lC,KAAKsmC,IAAM2lE,GAAOsu/B,GAAkB,EACjD8pE,EAAmBxhC,EAASnu/B,MAAQ,EACpC2sI,EAASwh3B,EAAS1mmC,QAAUkooC,GAAoB,EAAI,GACpDC,GAAapnqC,EAAIuuW,IAAOpqF,GAAU,GAClC0gF,EAAYo+oB,EAAY7/+B,IAAI,aAC5Bo6lC,EAAmBv6G,EAAY7/+B,IAAI,oBAInCq2H,EAAMorO,EAAY,GAAK,EAMvB65xB,EAAa,SAAUp1iC,EAAMw/rB,GAC/B,GAAKx/rB,EAAL,CAIA,IAAIy/rB,EAAWD,EAEf,GAAIx/rB,IAAS4miC,EAAa,CAExB,IAAI9unC,EAAQkoF,EAAK6yC,WACbyyG,EAAgB,IAAR7/H,GAAayu/B,EAAmBF,EAAal8lC,EAAQk8lC,EAE7D1u3B,EAAQq/lB,IACVr/lB,EAAQq/lB,GAMVllD,EAAWD,EAAarvpB,EAAMm1G,EAC9B,IAAIp3F,EAAQluD,EAAKkuD,MAAQ0vhC,GAAaC,GAAoB,EAAI,GAC1DE,EAAS94zB,EAAK64zB,EAAY5vhC,EAC1B8vhC,EAAO/4zB,EAAK64zB,GAAa5vhC,EAAQ,GACjC4/+B,EAAan0I,EAAYswI,cAAcjqiC,GAE3C,GAAI8tiC,EAAY,CACd,IAAImwC,EAAOnwC,EAAWh0nC,IAAI,MAAM,GAC5BokqC,EAAMpwC,EAAWh0nC,IAAI,KAAK,GAC1BqkqC,EAAWrwC,EAAWh0nC,IAAI,UAAU,GAExB,MAAZqkqC,IACFF,EAAOE,EAAS,GAChBD,EAAMC,EAAS,IAGT,MAARF,IAAiBF,EAAS,GAAaE,EAAM1ipC,EAAO,IAC7C,MAAP2ipC,IAAgBF,EAAO,GAAaE,EAAK3ipC,EAAO,GAClD,CAEAykE,EAAKq/9B,UAAU,CACb/50B,MAAOA,EACPk6iB,WAAYA,EACZC,SAAUA,EACVlkb,UAAWA,EACXlkG,GAAIA,EACJumG,GAAIA,EACJqH,GAAI84zB,EACJrnqC,EAAGsnqC,GAEP,CAGA,GAAIh+kC,EAAKrpD,UAAYqpD,EAAKrpD,SAAS3/B,OAAQ,CAEzC,IAAIonqC,EAAiB,EACrB,EAAYp+kC,EAAKrpD,UAAU,SAAUqpD,GACnCo+kC,GAAkBhpC,EAAWp1iC,EAAMw/rB,EAAa4+Y,EAClD,GACF,CAEA,OAAO3+Y,EAAWD,CAzDlB,CA0DF,EAGA,GAAIq+Y,EAAkB,CACpB,IAAIE,EAAS94zB,EACT+4zB,EAAO/4zB,EAAK64zB,EACZx47B,EAAkB,EAAV9rO,KAAKsmC,GACjB8mlC,EAAYvnE,UAAU,CACpB/50B,MAAOA,EACPk6iB,WAAYA,EACZC,SAAUD,EAAal6iB,EACvBi2H,UAAWA,EACXlkG,GAAIA,EACJumG,GAAIA,EACJqH,GAAI84zB,EACJrnqC,EAAGsnqC,GAEP,CAEA5oC,EAAWiH,EAAU78W,EACvB,GACF,CAKA,SAAS,GAAax/rB,EAAMqoZ,GAC1B,IAAI1xc,EAAWqpD,EAAKrpD,UAAY,GAChCqpD,EAAKrpD,SAiBP,SAAcA,EAAU0xc,GACtB,GAAI,GAAkBA,GAAY,CAChC,IAAIg2rB,EAAc,EAAW1noC,GAAU,SAAUkqD,EAAO4wR,GACtD,IAAI35W,EAAQ+oF,EAAMgyC,WAClB,MAAO,CACL7zF,OAAQ,CACNkvG,MAAOrtD,EAAMqtD,MACbv4G,OAAQkrD,EAAMlrD,OACdqmI,UAAWn7E,EAAMm7E,UACjBnpC,SAAU,WACR,OAAO/6H,CACT,GAEF6b,MAAO89V,EAEX,IAIA,OAHA4szB,EAAYn7nC,MAAK,SAAUvrC,EAAGsC,GAC5B,OAAOoue,EAAU1we,EAAEqnC,OAAQ/kC,EAAE+kC,OAC/B,IACO,EAAWq/nC,GAAa,SAAU53pC,GACvC,OAAOkwB,EAASlwB,EAAOkN,MACzB,GACF,CACE,IAAI2qpC,EAAwB,QAAdj2rB,EACd,OAAO1xc,EAASuM,MAAK,SAAUvrC,EAAGsC,GAChC,IAAIiliB,GAAQvniB,EAAEk7H,WAAa54H,EAAE44H,aAAeyriC,EAAU,GAAK,GAC3D,OAAgB,IAATp/nB,GAAcvniB,EAAEqkK,UAAY/hK,EAAE+hK,YAAcsigC,GAAW,EAAI,GAAKp/nB,CACzE,GAEJ,CA9CkB,CAAKvogB,EAAU0xc,GAE3B1xc,EAAS3/B,QACX,EAAYgpF,EAAKrpD,UAAU,SAAUkqD,GACnC,GAAaA,EAAOwnZ,EACtB,GAEJ,CCtJe,SAASk2rB,GAAetkM,GACrC,IAAI0kK,EAAe,CAAC,EAoBpB1kK,EAAQq/B,iBAAiB,YAAY,SAAU3f,GAC7C,IAAIxz+B,EAAOwz+B,EAAYx+2B,UACnBu1R,EAAOvqZ,EAAKuqZ,KAChBA,EAAKg5tB,UAAS,SAAU1piC,GACtB,IACIh1E,EADQg1E,EAAKuuG,WACCA,SAAS,aAAam0zB,eAEnC13+B,EAAM+oH,OACT/oH,EAAM+oH,KA1BZ,SAAmB/zC,EAAM255B,EAAa6kL,GAIpC,IAFA,IAAI9noC,EAAUspD,EAEPtpD,GAAWA,EAAQw3G,MAAQ,GAChCx3G,EAAUA,EAAQ2B,WAGpB,IAAI6rF,EAAQy13B,EAAYsa,oBAAoBv99B,EAAQr1B,MAAQq1B,EAAQslI,UAAY,GAAI2i+B,GAOpF,OALI3+iC,EAAKkuD,MAAQ,GAAKv8E,GAASuyD,KAE7BA,EAAQk11B,GAAKl11B,GAAQlkC,EAAKkuD,MAAQ,IAAMswhC,EAAa,GAAK,KAGrDt6iC,CACT,CAUmBu6iC,CAAUz+kC,EAAM255B,EAAajplB,EAAK5pQ,KAAKnxH,SAItDqqX,EADkB75Y,EAAKushC,uBAAuB1y8B,EAAKg8E,UAAW,SAC1ChxJ,EACtB,GACF,GACF,CChCO,IAAI0zpC,GAAoB,CAC7Bx6iC,MAAO,OACP+qP,YAAa,UAEJ0vzB,GAAyB,CAClC9tqB,OAAQ,EACRq+f,WAAY,EACZurC,iBAAkB,EAClBL,WAAY,EACZgrD,WAAY,EACZ/H,MAAO,EACPlzG,MAAO,GAGEy0L,GAAmB/kM,KAoD9B,SAhDA,SAAUx6mB,GAGR,SAASw/yB,IACP,IAAIx7mC,EAAmB,OAAXg8T,GAAmBA,EAAOnoX,MAAMP,KAAMI,YAAcJ,KAGhE,OADA0sD,EAAMngD,KAAO27pC,EAAkB37pC,KACxBmgD,CACT,CAqCA,OA5CAkgX,EAAUs7vB,EAAmBx/yB,GAS7Bw/yB,EAAkBxoqC,UAAU61/B,cAAgB,WAC1Cv1/B,KAAKmoqC,cAAgBnoqC,KAAKmD,IAAI,UAAU,GACxCnD,KAAKooqC,SAAWpoqC,KAAKmD,IAAI,KAAK,EAChC,EAEA+kqC,EAAkBxoqC,UAAUyohC,eAAiB,SAAUtq9B,EAAQyl6B,GAC7D,OAAO,GAAiB,KAAMtj+B,KAChC,EAEAkoqC,EAAkBxoqC,UAAUywgC,cAAgB,SAAU9q2B,EAAW2pG,EAAUn1H,GACzE,IAAIxxG,EAASqgV,EAAOhpX,UAAUywgC,cAAcvwgC,KAAKI,KAAMqlK,EAAW2pG,GAGlE,OADAn1H,IAAOxxG,EAAOmP,KAAOywnC,GAAiBpuhC,GAAIriG,MACnCnP,CACT,EAEA6/nC,EAAkB37pC,KAAO,gBACzB27pC,EAAkBjsgC,aAAe,CAAC,OAAQ,QAAS,MAAO,aAAc,YACxEisgC,EAAkBtnoB,cAAgB,CAChC7ua,iBAAkB,cAElBpsH,EAAG,EACH2+kC,iBAAiB,EAIjBn5rB,MAAM,GASD+8wB,CACT,CA9CA,CA8CEvqZ,ICpEF,SAAS0qZ,GAAgBC,EAAUp4gB,GAGjC,OADAA,EAAWA,GAAY,CAAC,EAAG,GACpB,EAAW,CAAC,IAAK,MAAM,SAAUv4T,EAAKihrB,GAC3C,IAAInu0B,EAAOzqM,KAAKgh3B,QAAQrphB,GACpBj6K,EAAMwye,EAAS0oX,GACft01B,EAAWgk/B,EAAS1vJ,GAAU,EAClC,MAAqB,aAAdnu0B,EAAKl+L,KAAsBk+L,EAAKgq3B,eAAiB5xjC,KAAKmjH,IAAIykF,EAAKos3B,YAAYn54B,EAAM4G,GAAYmmB,EAAKos3B,YAAYn54B,EAAM4G,GAC7H,GAAGtkL,KACL,CCTA,SAAS,GAAgBsoqC,EAAUp4gB,GAEjC,OADAA,EAAWA,GAAY,CAAC,EAAG,GACpB,EAAW,CAAC,EAAG,IAAI,SAAU0oX,GAClC,IAAIl71B,EAAMwye,EAAS0oX,GACft01B,EAAWgk/B,EAAS1vJ,GAAU,EAC9Bv4xB,EAAK,GACL0jB,EAAK,GAIT,OAHA1jB,EAAGu4xB,GAAUl71B,EAAM4G,EACnBy/E,EAAG60wB,GAAUl71B,EAAM4G,EACnB+7D,EAAG,EAAIu4xB,GAAU70wB,EAAG,EAAI60wB,GAAU1oX,EAAS,EAAI0oX,GACxC/1gC,KAAKmjH,IAAIhmH,KAAK23jC,YAAYt30B,GAAIu4xB,GAAU54gC,KAAK23jC,YAAY5zzB,GAAI60wB,GACtE,GAAG54gC,KACL,CCZA,SAAS,GAAgBsoqC,EAAUp4gB,GAEjC,IAAIzld,EAAOzqM,KAAKgh3B,UACZtjsB,EAAMwye,aAAoBzwpB,MAAQywpB,EAAS,GAAKA,EAChD5re,GAAYgk/B,aAAoB7oqC,MAAQ6oqC,EAAS,GAAKA,GAAY,EACtE,MAAqB,aAAd799B,EAAKl+L,KAAsBk+L,EAAKgq3B,eAAiB5xjC,KAAKmjH,IAAIykF,EAAKos3B,YAAYn54B,EAAM4G,GAAYmmB,EAAKos3B,YAAYn54B,EAAM4G,GAC7H,CCNA,SAAS,GAAgBgk/B,EAAUp4gB,GAGjC,OADAA,EAAWA,GAAY,CAAC,EAAG,GACpB,EAAW,CAAC,SAAU,UAAU,SAAUv4T,EAAKihrB,GACpD,IAEInu0B,EAAOzqM,KAFM,MAAQ23V,EAAM,UAG3Bj6K,EAAMwye,EAAS0oX,GACft01B,EAAWgk/B,EAAS1vJ,GAAU,EAC9Bp1/B,EAAuB,aAAdinL,EAAKl+L,KAAsBk+L,EAAKgq3B,eAAiB5xjC,KAAKmjH,IAAIykF,EAAKos3B,YAAYn54B,EAAM4G,GAAYmmB,EAAKos3B,YAAYn54B,EAAM4G,IAMjI,MAJY,UAARqzK,IACFn0U,EAASA,EAAS3gB,KAAKsmC,GAAK,KAGvB3lB,CACT,GAAGxjB,KACL,CCbO,SAASuoqC,GAAqBl0pC,EAAOm0pC,EAAQC,EAAyBC,GAU3E,OAAOr0pC,IAAUA,EAAMs0pC,SAA2B,IAAjBt0pC,EAAMs0pC,SAAqBF,IAA4BC,GAA+B,UAAXF,IAC7F,SAAXA,GAAqBtgqC,GAAOmM,EAAO,SACzC,CASO,SAASu0pC,GAA8BC,EAAWL,EAAQh/F,GAC/D,IACI32G,EACA7l4B,EACA87kC,EAHAC,EAAWF,EAKf,GAAe,SAAXL,EACFM,EAAmBC,MACd,CACLD,EAAmB,CAAC,EACpB5gqC,GAAO6gqC,EAAU,UAAYD,EAAiB14oC,KAAO24oC,EAAS34oC,MAC9DloB,GAAO6gqC,EAAU,UAAYD,EAAiB9+L,KAAO++L,EAAS/+L,MAC9D9h+B,GAAO6gqC,EAAU,cAAgBD,EAAiB1riC,KAAO2riC,EAASt1M,UAClEvr9B,GAAO6gqC,EAAU,gBAAkBD,EAAiB1rZ,OAAS2rZ,EAASr1M,YACtExr9B,GAAO6gqC,EAAU,gBAAkBD,EAAiBnk7B,WAAaok7B,EAASpk7B,YAC1Ez8O,GAAO6gqC,EAAU,cAAgBD,EAAiBrk7B,SAAWsk7B,EAAStk7B,UACtEv8O,GAAO6gqC,EAAU,eAAiBD,EAAiBjk7B,UAAYkk7B,EAASlk7B,WACxE38O,GAAO6gqC,EAAU,gBAAkBD,EAAiBlk7B,WAAamk7B,EAASnk7B,YAC1E53J,EAAc,CACZzgF,KAAM,OACN8H,MAAOy0pC,EAMP10rB,QAAQ,GAEVy+e,EAAa,CAAC,EACd,IAAIm2M,EAAY9gqC,GAAO6gqC,EAAU,gBAE7Bv/F,EACF32G,EAAWl07B,SAAWqqoC,EAAYD,EAASh3M,aAAe,SAE1Di3M,IAAcn2M,EAAWl07B,SAAWoqoC,EAASh3M,cAG/C7p9B,GAAO6gqC,EAAU,kBAAoBl2M,EAAWl07B,SAAWoqoC,EAASh3M,cACpE7p9B,GAAO6gqC,EAAU,gBAAkBl2M,EAAW1w6B,OAAS4mnC,EAASz1M,YAChEpr9B,GAAO6gqC,EAAU,kBAAoBl2M,EAAWts2B,SAAWwijC,EAAS3kb,cACpEl8uB,GAAO6gqC,EAAU,kBAAoBl2M,EAAW5p0B,SAAW8/gC,EAASE,aACtE,CAMA,OAJAC,GAA6BJ,EAAkBD,GAC/C,EAAKC,EAAiB9+L,MAAM,SAAUm/L,GACpCD,GAA6BC,EAAUA,EACzC,IACO,CACLt2M,WAAYA,EACZ7l4B,YAAaA,EAEjB,CAKA,SAASk8kC,GAA6BhpiC,EAAKipiC,GACpCA,IAULA,EAASrk7B,KAAOqk7B,EAAS5wL,UAAY4wL,EAASrk7B,KAC9C58O,GAAOihqC,EAAU,qBAAuBjpiC,EAAImyM,UAAY821B,EAASC,iBACjElhqC,GAAOihqC,EAAU,eAAiBjpiC,EAAIqkpB,MAAQ4kZ,EAASnk7B,WACvD98O,GAAOihqC,EAAU,uBAAyBjpiC,EAAIizmB,cAAgBg2b,EAASl3M,mBACvE/p9B,GAAOihqC,EAAU,oBAAsBjpiC,EAAI8pH,WAAam/6B,EAASp37B,gBACjE7pO,GAAOihqC,EAAU,eAAiBjpiC,EAAInhG,MAAQoqoC,EAASni7B,WACvD9+O,GAAOihqC,EAAU,gBAAkBjpiC,EAAIlhG,OAASmqoC,EAASvpQ,YACzD135B,GAAOihqC,EAAU,yBAA2BjpiC,EAAIwZ,gBAAkByvhC,EAASpuL,qBAC3E7y+B,GAAOihqC,EAAU,iBAAmBjpiC,EAAIhI,QAAUixiC,EAAS3wL,aAC3Dtw+B,GAAOihqC,EAAU,qBAAuBjpiC,EAAIo4O,YAAc6wzB,EAASntL,iBACnE9z+B,GAAOihqC,EAAU,qBAAuBjpiC,EAAIs32B,YAAc2xL,EAASptL,iBACnE7z+B,GAAOihqC,EAAU,sBAAwBjpiC,EAAIy4O,aAAewwzB,EAAShtL,kBACrEj0+B,GAAOihqC,EAAU,wBAA0BjpiC,EAAIrP,YAAcs4iC,EAASE,oBACtEnhqC,GAAOihqC,EAAU,uBAAyBjpiC,EAAI8kpB,WAAamkZ,EAASG,mBACpEphqC,GAAOihqC,EAAU,0BAA4BjpiC,EAAI4kpB,cAAgBqkZ,EAASI,sBAC1ErhqC,GAAOihqC,EAAU,0BAA4BjpiC,EAAI6kpB,cAAgBokZ,EAASK,sBAC5E,CAWO,SAASC,GAAiCC,EAASC,EAAOC,GAC/D,IAAI1piC,EAAMwpiC,EAEVxpiC,EAAI6x1B,aAAe7x1B,EAAI6x1B,cAAgB63M,EAAMjroC,UAAY,SACzC,MAAhBiroC,EAAMznnC,SAAmB+9E,EAAIoz1B,WAAas2M,EAAMznnC,QAC9B,MAAlBynnC,EAAMrjjC,WAAqB2Z,EAAIkknB,aAAewlb,EAAMrjjC,UAClC,MAAlBqjjC,EAAM3ghC,WAAqB/oB,EAAI+oiC,aAAeW,EAAM3ghC,UACpD,IAAIyqU,EAAWxzV,EAAI6x1B,aAAavx9B,QAAQ,WAAa,EACjDqpqC,EAAWH,EAAQtsiC,MAAQ,OAC/B0siC,GAAqB5piC,EAAKypiC,GAC1B,IAAII,EAAiC,MAAhB7piC,EAAIuz1B,SAsBzB,OApBI//f,EACEq2sB,IACF7piC,EAAIuz1B,SAAWm2M,EAAM/1M,YAAc,QAClC3z1B,EAAIwz1B,YAAck2M,EAAM91M,eAAiB5z1B,EAAIwz1B,WAAak2M,EAAM91M,eAChE5z1B,EAAIwz1B,aAAexz1B,EAAIwz1B,WAAam2M,GACd,MAAvB3piC,EAAIkpiC,kBAA4BlpiC,EAAIkpiC,gBAAkB,KAGpDW,IACF7piC,EAAIuz1B,SAAWi2M,EAAQtsiC,MAAQwsiC,EAAM31M,aAAe,SAGrD/z1B,EAAIwz1B,YAAck2M,EAAM11M,gBAAkBh01B,EAAIwz1B,WAAak2M,EAAM11M,gBAGpEh01B,EAAI9vG,KAAOu5oC,EAAMv5oC,KACjB8vG,EAAI8p2B,KAAO2/L,EAAM3/L,KACjB,EAAK2/L,EAAM3/L,MAAM,SAAUm/L,GACzBW,GAAqBX,EAAUA,EACjC,IACOjpiC,CACT,CAEA,SAAS4piC,GAAqB5piC,EAAKipiC,GAC5BA,IAILjhqC,GAAOihqC,EAAU,UAAYjpiC,EAAIuz1B,SAAW01M,EAAS/riC,MACrDl1H,GAAOihqC,EAAU,YAAcjpiC,EAAIwz1B,WAAay1M,EAAS/riC,MACzDl1H,GAAOihqC,EAAU,eAAiBjpiC,EAAIkpiC,gBAAkBD,EAAS921B,WACjEnqU,GAAOihqC,EAAU,UAAYjpiC,EAAI4kH,KAAOqk7B,EAASrk7B,MACjD58O,GAAOihqC,EAAU,eAAiBjpiC,EAAI2kH,UAAYsk7B,EAAStk7B,WAC3D38O,GAAOihqC,EAAU,gBAAkBjpiC,EAAI0kH,WAAauk7B,EAASvk7B,YAC7D18O,GAAOihqC,EAAU,cAAgBjpiC,EAAIukH,SAAW0k7B,EAAS1k7B,UACzDv8O,GAAOihqC,EAAU,gBAAkBjpiC,EAAIykH,WAAawk7B,EAASxk7B,YAC7Dz8O,GAAOihqC,EAAU,WAAajpiC,EAAI8kH,UAAYmk7B,EAAS5kZ,OACvDr8wB,GAAOihqC,EAAU,mBAAqBjpiC,EAAI+x1B,kBAAoBk3M,EAASh2b,eACvEjruB,GAAOihqC,EAAU,gBAAkBjpiC,EAAI6xG,eAAiBo37B,EAASn/6B,YACjE9hP,GAAOihqC,EAAU,WAAajpiC,EAAI8mH,UAAYmi7B,EAASpqoC,OACvD72B,GAAOihqC,EAAU,YAAcjpiC,EAAI0/xB,WAAaupQ,EAASnqoC,QACzD92B,GAAOihqC,EAAU,qBAAuBjpiC,EAAI662B,oBAAsBouL,EAASzvhC,iBAC3ExxI,GAAOihqC,EAAU,aAAejpiC,EAAIs42B,YAAc2wL,EAASjxiC,SAC3DhwH,GAAOihqC,EAAU,iBAAmBjpiC,EAAI872B,gBAAkBmtL,EAAS7wzB,aACnEpwW,GAAOihqC,EAAU,iBAAmBjpiC,EAAI672B,gBAAkBotL,EAAS3xL,aACnEtv+B,GAAOihqC,EAAU,kBAAoBjpiC,EAAIi82B,iBAAmBgtL,EAASxwzB,cACrEzwW,GAAOihqC,EAAU,iBAAmBjpiC,EAAImpiC,mBAAqBF,EAASt4iC,aACtE3oH,GAAOihqC,EAAU,gBAAkBjpiC,EAAIopiC,kBAAoBH,EAASnkZ,YACpE98wB,GAAOihqC,EAAU,mBAAqBjpiC,EAAIqpiC,qBAAuBJ,EAASrkZ,eAC1E58wB,GAAOihqC,EAAU,mBAAqBjpiC,EAAIspiC,qBAAuBL,EAASpkZ,eAC1E78wB,GAAOihqC,EAAU,qBAAuBjpiC,EAAIk32B,gBAAkB+xL,EAAS/xL,iBACvElv+B,GAAOihqC,EAAU,oBAAsBjpiC,EAAIm32B,eAAiB8xL,EAAS9xL,gBACrEnv+B,GAAOihqC,EAAU,uBAAyBjpiC,EAAIo32B,kBAAoB6xL,EAAS7xL,mBAC3Epv+B,GAAOihqC,EAAU,uBAAyBjpiC,EAAIq32B,kBAAoB4xL,EAAS5xL,mBAC7E,CCnLA,IAAIyyL,GAA6B,CAC/BrroC,SAAU,CAAC,IAAK,KAChBmjE,MAAO,CAAC,SAAU,UAClB9mE,OAAQ,CAAC,UAAW,YAElBivoC,GAAyB32pC,GAAK02pC,IAOvBE,IANex2oC,GAAO497B,IAAqB,SAAUpkwB,EAAKroM,GAEnE,OADAqoM,EAAIroM,GAAO,EACJqoM,CACT,GAAG,CAAC,GACwBokwB,GAAoBzk9B,KAAK,MAEf,CAAC,GAAI,QAAS,QAAS,UAEzDs9pC,GAAuBjnM,KAG3B,SAASknM,GAA0B9kL,EAAezr2B,EAAIwwhC,EAAUxroB,EAAax5X,GAC3E,IAAIilgC,EAAgBhlL,EAAgB,YAChCxprB,EAASuprB,GAAmBC,EAAezmd,EAAax5X,IAAc,CAAC,EACvEklgC,EAAaJ,GAAqBtwhC,GAAI0whC,WAa1C,OAXIzu2B,EAAOz2Q,SAAW,IAEpBy2Q,EAAOqvpB,OAASo/M,EAAalnqC,GAAKmnqC,GAAY,CAC5C3whC,GAAIA,EACJ0whC,WAAYA,IACT,KACLzu2B,EAAOo+pB,YAAa,EACpBp+pB,EAAO1tS,MAAQk39B,GAGjBj8lB,EAAOvtF,EAAQuu2B,EAASC,IACjBxu2B,CACT,CAEO,SAAS2u2B,GAAsB5whC,EAAIwwhC,EAAU9kL,EAAiBlp8B,GAEnE,IAAIgpH,GADJhpH,EAAOA,GAAQ,CAAC,GACKgpH,UACjBow1B,EAASp58B,EAAKo58B,OACdi1K,EAAarunC,EAAKqunC,WAClB7/E,EAAetlG,EAAgBO,qBAE/B/2yB,EAAQo79B,GAAqBtwhC,GAC7B8whC,EAAWN,EAASh2pC,MACxB06L,EAAMw79B,WAAaF,EAASl/M,OAC5B,IAAIy/M,EAAiB,CAAC,EAClBC,EAAa,CAAC,EAgBlB,GA8WF,SAAuChxhC,EAAIwwhC,EAAU52X,GACnD,IAAK,IAAI7yyB,EAAI,EAAGA,EAAIqpqC,GAAuB5pqC,OAAQO,IAAK,CACtD,IAAIkqqC,EAAab,GAAuBrpqC,GACpCmqqC,EAASf,GAA2Bc,GACpCE,EAAYX,EAASS,GAErBE,IACFv3X,EAASs3X,EAAO,IAAMC,EAAU,GAChCv3X,EAASs3X,EAAO,IAAMC,EAAU,GAEpC,CAEA,IAASpqqC,EAAI,EAAGA,EAAI0w9B,GAAoBjx9B,OAAQO,IAAK,CACnD,IAAIikB,EAAMys8B,GAAoB1w9B,GAET,MAAjBypqC,EAASxlpC,KACX4uxB,EAAS5uxB,GAAOwlpC,EAASxlpC,GAE7B,CACF,CAhZEompC,CAA8BpxhC,EAAIwwhC,EAAUQ,GAC5CK,GAAiC,QAASb,EAAUQ,GACpDK,GAAiC,QAASb,EAAUQ,IAE/Cp1K,GAAUo1F,IAmWjB,SAAwChx8B,EAAIwwhC,EAAUO,GAIpD,IAHA,IAAI9ijC,EAAauijC,EAASvijC,WACtBqjjC,EAAiBC,GAAgBtjjC,GAAcwp2B,GAAsBmP,GAAiB342B,GAAc,IAE/FlnH,EAAI,EAAGA,EAAIuqqC,EAAe9qqC,OAAQO,IAAK,CAC9C,IAAIikB,EAAMsmpC,EAAevqqC,GAEzB,GAAY,UAARikB,GAA2B,UAARA,GAA2B,UAARA,EAA1C,CAIA,IAAIwmpC,EAAQxxhC,EAAGh1H,GAOf+lpC,EAAe/lpC,GAAOwmpC,CATtB,CAUF,CACF,CAtXIC,CAA+BzxhC,EAAIwwhC,EAAUO,GAC7CW,GAAkC,QAAS1xhC,EAAIwwhC,EAAUO,GACzDW,GAAkC,QAAS1xhC,EAAIwwhC,EAAUO,GA2Y7D,SAAoCY,EAAQnB,EAAUM,EAAUC,GAC9D,GAAKD,EAAL,CAIA,IACIc,EADAC,EAAcF,EAAOn3pC,MAGzB,GAAIq3pC,EAAa,CACf,IAAIC,EAAkBhB,EAAS7ijC,WAC3B8jjC,EAAevB,EAASvijC,WAE5B,GAAI6jjC,IAAoBP,GAAgBO,GAAkB,CACxD,IAAIR,EAAiB1qM,GAAiBkrM,IACrCF,IAAwBA,EAAsBb,EAAev2pC,MAAQ,CAAC,GAEvE,IAAK,IAAIzT,EAAI,EAAGA,EAAIuqqC,EAAe9qqC,OAAQO,IAAK,CAC9C,IACIyqqC,EAAQK,EADR7mpC,EAAMsmpC,EAAevqqC,IAGzB6qqC,EAAoB5mpC,GAAOwmpC,CAC7B,CACF,MAAO,GAAIG,EAAOj+L,yBAA2B69L,GAAgBQ,IAAiBR,GAAgBO,IAAoBnrqC,EAAQorqC,EAAc,UAAY,GAAI,CACtJ,IAAIxphC,EAAiBophC,EAAOj+L,yBACxBs+L,EAAsBzphC,EAAiBA,EAAe/tI,MAAQ,KAElE,GAAIw3pC,EAAqB,EACtBJ,IAAwBA,EAAsBb,EAAev2pC,MAAQ,CAAC,GACvE,IAAIy3pC,EAAYx4pC,GAAKq3pC,GAErB,IAAS/pqC,EAAI,EAAGA,EAAIkrqC,EAAUzrqC,OAAQO,IAAK,CACzC,IAAIikB,EAEAgnpC,EAFAhnpC,EAAMinpC,EAAUlrqC,MAGdyqqC,EAAQK,EAAY7mpC,GACxB4mpC,EAAoB5mpC,GAAOwmpC,EAE/B,CACF,CACF,CACF,CArCA,CAsCF,CAnbIU,CAA2BlyhC,EAAIwwhC,EAAUM,EAAUC,IAGrDC,EAAWx2pC,MAAQs2pC,EA+ErB,SAA4B9whC,EAC5BmyhC,EAAetB,GACb,IAAIC,EAAWqB,EAAc33pC,MAE7B,IAAKwlI,EAAGkpkB,SAAW4nd,EAAU,CAC3B,GAAID,EAAY,CACd7whC,EAAGuwQ,SAAS,CAAC,GAiBb,IAFA,IAAImokB,EAAY140B,EAAG040B,UAEV3x9B,EAAI,EAAGA,EAAI2x9B,EAAUly9B,OAAQO,IAAK,CACzC,IAAI+xP,EAAW4/tB,EAAU3x9B,GAEG,UAAxB+xP,EAASs0nB,YACXt0nB,EAAS+2tB,aAAa7v0B,EAAGxlI,MAE7B,CACF,CAEAwlI,EAAGyqR,SAASqmwB,EACd,CAEIqB,IAEFA,EAAc33pC,MAAQ,KAEtB23pC,GAAiBnyhC,EAAGo0Y,KAAK+9oB,GACzBA,EAAc33pC,MAAQs2pC,EAE1B,CAxHEsB,CAAmBpyhC,EAAIgxhC,EAAYH,GAqIrC,SAAwB7whC,EAAIwwhC,GAE1BniqC,GAAOmiqC,EAAU,YAAcxwhC,EAAGu6V,OAASi2rB,EAASj2rB,QACpDlse,GAAOmiqC,EAAU,YAAcxwhC,EAAG1xG,OAASkioC,EAASlioC,QAEhD0xG,aAAc,IAChB3xI,GAAOmiqC,EAAU,eAAiBxwhC,EAAGyh1B,UAAY+uM,EAAS/uM,WAGxDzh1B,aAAc,IAChB3xI,GAAOmiqC,EAAU,eAAiBxwhC,EAAG271B,UAAY60L,EAAS70L,UAE9D,CAhJE02L,CAAeryhC,EAAIwwhC,GAEfx/E,EACF,GAAIp1F,EAAQ,CACV,IAAI02K,EAAmB,CAAC,EACxB,EAAKjC,IAA0B,SAAU3+gC,GACvC,IAAIiB,EAAOjB,EAAW8+gC,EAAS9+gC,GAAY8+gC,EAEvC79gC,GAAQA,EAAK4/gC,YACX7ghC,IACF4ghC,EAAiB5ghC,GAAY4ghC,EAAiB5ghC,IAAa,CAAC,GAG9D89P,EAAO99P,EAAW4ghC,EAAiB5ghC,GAAY4ghC,EAAkB3/gC,EAAK4/gC,WAE1E,IACA,IAAItw2B,EAASsu2B,GAA0B,QAASvwhC,EAAIwwhC,EAAU9kL,EAAiBlg1B,GAE3Ey2J,EAAOz2Q,SAAW,GACpBw0F,EAAGi/0B,YAAYqzM,EAAkBrw2B,EAErC,MAoGJ,SAA8BjiL,EAAIwwhC,EAAUhlgC,EAAWtwC,EACvD61iC,GACE,GAAIA,EAAgB,CAClB,IAAI9u2B,EAASsu2B,GAA0B,SAAUvwhC,EAAIwwhC,EAAUt1iC,EAAOswC,GAElEy2J,EAAOz2Q,SAAW,GACpBw0F,EAAGi/0B,YAAY8xM,EAAgB9u2B,EAEnC,CACF,CA5GMuw2B,CAAqBxyhC,EAAIwwhC,EAAUhlgC,GAAa,EAAGkg1B,EAAiBqlL,GAKxE0B,GAAczyhC,EAAIwwhC,GAClBM,EAAW9whC,EAAGisnB,QAAUjsnB,EAAG640B,YAC7B,CACO,SAAS45M,GAAczyhC,EAAIwwhC,GAIhC,IAFA,IAAIkC,EAAepC,GAAqBtwhC,GAAI0yhC,aAEnC3rqC,EAAI,EAAGA,EAAIspqC,GAAyB7pqC,OAAQO,IAAK,CACxD,IAAI2qJ,EAAW2+gC,GAAyBtpqC,GACpC4rJ,EAAOjB,EAAW8+gC,EAAS9+gC,GAAY8+gC,EAEvC79gC,GAAQA,EAAKgghC,UACVD,IACHA,EAAepC,GAAqBtwhC,GAAI0yhC,aAAe,CAAC,GAGtDhhhC,IACFghhC,EAAahhhC,GAAYghhC,EAAahhhC,IAAa,CAAC,GAGtD89P,EAAO99P,EAAWghhC,EAAahhhC,GAAYghhC,EAAc//gC,EAAKgghC,SAElE,CACF,CACO,SAASC,GAAqB5yhC,EAAIwwhC,EAAU9kL,EAAiBv8wB,GAClE,GAAInvF,EAAI,CACN,IAAIy7tB,EAAWz7tB,EAAGxoD,OACdk7kC,EAAepC,GAAqBtwhC,GAAI0yhC,aAE5C,GAAIA,EAAc,CAGhB,IAAIzw2B,EAASsu2B,GAA0B,SAAUvwhC,EAAIwwhC,EAAU9kL,EAAiB,GAEhFzprB,EAAO56T,KAAO,WACZo02B,EAASzi1B,OAAOgnH,GAChBmvF,GAAYA,GACd,EAEAnvF,EAAGg/0B,UAAU0zM,EAAczw2B,EAC7B,MACEw5iB,EAASzi1B,OAAOgnH,GAChBmvF,GAAYA,GAEhB,CACF,CACO,SAASoi8B,GAAgBtjjC,GAC9B,MAAsB,QAAfA,CACT,CAwEA,IAAI4kjC,GAAiB,CAAC,EAClBC,GAAsB,CAExBhkjB,aAAc,SAAU9jmB,EAAK64J,GAM3B,OADAgv/B,GAAe7yhC,GAAGh1H,GAAO64J,EAClB19K,IACT,EACAmkI,aAAc,SAAUt/G,GAKtB,OAAO6npC,GAAe7yhC,GAAGh1H,EAC3B,EACA+hY,SAAU,SAAU/hY,EAAK64J,GAKvB,IAAI7jC,EAAK6yhC,GAAe7yhC,GAIxB,OAHYA,EAAGyoF,QAAUzoF,EAAGyoF,MAAQ,CAAC,IAC/Bz9M,GAAO64J,EACb7jC,EAAGk71B,YAAcl71B,EAAGk71B,aACb/0+B,IACT,EACA4sqC,SAAU,SAAU/npC,GAKlB,IAAIy9M,EAAQoq8B,GAAe7yhC,GAAGyoF,MAE9B,GAAIA,EACF,OAAOA,EAAMz9M,EAEjB,EACAy/Y,SAAU,SAAUz/Y,EAAK64J,GAKvB,IAAI7jC,EAAK6yhC,GAAe7yhC,GACpBxlI,EAAQwlI,EAAGxlI,MAaf,OAXIA,IAOFA,EAAMwQ,GAAO64J,EACb7jC,EAAGy60B,YAAcz60B,EAAGy60B,cAGft09B,IACT,EACAm7hC,SAAU,SAAUt2gC,GAKlB,IAAIxQ,EAAQq4pC,GAAe7yhC,GAAGxlI,MAE9B,GAAIA,EACF,OAAOA,EAAMwQ,EAEjB,EACAgopC,SAAU,SAAUhopC,EAAK64J,GAOvB,OAFYgv/B,GAAe7yhC,GAAG0+B,QAAUm0/B,GAAe7yhC,GAAG0+B,MAAQ,CAAC,IAC7D1zJ,GAAO64J,EACN19K,IACT,EACA8sqC,SAAU,SAAUjopC,GAKlB,IAAI0zJ,EAAQm0/B,GAAe7yhC,GAAG0+B,MAE9B,GAAIA,EACF,OAAOA,EAAM1zJ,EAEjB,GAWF,SAAS2lpC,KAMP,IAAIp8oC,EAAQpuB,KACR65I,EAAKzrH,EAAMyrH,GAEf,GAAKA,EAAL,CAMA,IAAIkzhC,EAAmB5C,GAAqBtwhC,GAAI0whC,WAC5CyC,EAAkB5+oC,EAAMm8oC,WAOxBwC,IAAqBC,GAMzBN,GAAe7yhC,GAAKA,EAEpBmzhC,EAAgBL,KANdv+oC,EAAMyrH,GAAKzrH,EAAMm8oC,WAAa,IAdhC,CAsBF,CAEA,SAASgB,GAAkC0B,EAAUzB,EAAQnB,EAAUO,GACrE,IAAIsC,EAAU7C,EAAS4C,GAEvB,GAAKC,EAAL,CAIA,IACIC,EADAC,EAAgB5B,EAAOyB,GAG3B,GAAIG,EAAe,CACjB,IAAItljC,EAAauijC,EAASvijC,WACtBuljC,EAAiBH,EAAQpljC,WAE7B,GAAIuljC,EAGF,IAFCF,IAAyBA,EAAuBvC,EAAeqC,GAAY,CAAC,GAEzE7B,GAAgBiC,GAClBhkxB,EAAO8jxB,EAAsBC,QAI7B,IAFA,IAAIjC,EAAiB1qM,GAAiB4sM,GAE7BzsqC,EAAI,EAAGA,EAAIuqqC,EAAe9qqC,OAAQO,IAAK,CAC9C,IACIyqqC,EAAQ+B,EADRvopC,EAAMsmpC,EAAevqqC,IAEzBusqC,EAAqBtopC,GAAOwmpC,CAC9B,MAEG,GAAID,GAAgBtjjC,IAAetnH,EAAQsnH,EAAYmljC,IAAa,EAAG,EAC3EE,IAAyBA,EAAuBvC,EAAeqC,GAAY,CAAC,GAC7E,IAAIK,EAAoBh6pC,GAAK85pC,GAE7B,IAASxsqC,EAAI,EAAGA,EAAI0sqC,EAAkBjtqC,OAAQO,IAAK,CACjD,IAAIikB,EACAwmpC,EAAQ+B,EADRvopC,EAAMyopC,EAAkB1sqC,IAGxB2sqC,GAA4BL,EAAQropC,GAAMwmpC,KAC5C8B,EAAqBtopC,GAAOwmpC,EAEhC,CACF,CACF,CApCA,CAqCF,CAEA,SAASH,GAAiC+B,EAAU5C,EAAU52X,GAC5D,IAAIy5X,EAAU7C,EAAS4C,GAEvB,GAAKC,EAOL,IAHA,IAAIM,EAAiB/5X,EAASw5X,GAAY,CAAC,EACvCQ,EAAan6pC,GAAK45pC,GAEbtsqC,EAAI,EAAGA,EAAI6sqC,EAAWptqC,OAAQO,IAAK,CAC1C,IAAIikB,EAAM4opC,EAAW7sqC,GAGrB4sqC,EAAe3opC,GAAOqh8B,GAAWgnN,EAAQropC,GAC3C,CACF,CAwFA,SAAS0opC,GAA4BG,EAAQrC,GAE3C,OAAQthO,EAAY2jO,GAA+CA,IAAWrC,EAAtC,MAAVqC,GAAkBhmoC,SAASgmoC,EAC3D,CCnfA,IAAIC,GAAoBzqM,KACpB0qM,GAAwB,CAAC,UAAW,SAAU,QAAS,QAAS,SAM7D,SAASC,GAAwCh0hC,GAEtDA,EAAG8+0B,cAAc,YAEjB9+0B,EAAGo0Y,KAAK0/oB,GAAkB9zhC,GAC5B,CACO,SAASi0hC,GAAuBj0hC,EAAIk0hC,EAAexoL,GACxD,GAAKA,EAAgBO,sBAAyBioL,EAI9C,GAAIp8pC,GAAQo8pC,GACV,EAAKA,GAAe,SAAUC,GAC5BF,GAAuBj0hC,EAAIm0hC,EAAqBzoL,EAClD,QAHF,CAOA,IAAIplvB,EAAY4t6B,EAAc5t6B,UAC1B96M,EAAW0onC,EAAc1onC,SAE7B,GAAIkg8B,GAA+B,MAAZlg8B,EAAkB,CAGvC,IAAIy2Q,EAASuprB,GAAmB,QAASE,EAAiB,GAC1Dlg8B,EAAWy2Q,GAAUA,EAAOz2Q,QAC9B,CAEA,GAAK86M,GAAc96M,EAAnB,CAIA,IAAI4onC,EAAiBN,GAAkB9zhC,GACvC,EAAKqwhC,IAA0B,SAAUgE,GAKvC,IAAIv76B,EAJAu76B,IAAmBr0hC,EAAGq0hC,KAO1B/t6B,EAAU5zN,MAAK,SAAUvrC,EAAGsC,GAC1B,OAAOtC,EAAEy/8B,QAAUn98B,EAAEm98B,OACvB,IACA,EAAKtgtB,GAAW,SAAUontB,GAExB,IAAIgL,EAAY140B,EAAG040B,UACf47M,EAAWD,EAAiB3mN,EAAG2mN,GAAkB3mN,EAQrD,GAAK4mN,EAAL,CAIA,IAAIC,EAAW96pC,GAAK66pC,GASpB,GAPKD,IAEHE,EAAWvhpC,GAAOuhpC,GAAU,SAAUvppC,GACpC,OAAOrkB,EAAQotqC,GAAuB/opC,GAAO,CAC/C,KAGGuppC,EAAS/tqC,OAAd,CAIKsyP,KACHA,EAAW94G,EAAG20G,QAAQ0/6B,EAAgBH,EAAclx7B,MAAM,IACjDzuN,MAAQ,YAGnB,IAAK,IAAIxtB,EAAI,EAAGA,EAAI2x9B,EAAUly9B,OAAQO,IAEhC2x9B,EAAU3x9B,KAAO+xP,GAAY4/tB,EAAU3x9B,GAAGqm3B,aAAet0nB,EAASs0nB,YACpEsrG,EAAU3x9B,GAAG0q9B,WAAW8iN,GAI5BF,IAAmBD,EAAeC,GAAkBD,EAAeC,IAAmB,CAAC,GACvF,IAAIG,EAAcH,EAAiBD,EAAeC,GAAkBD,EACpE,EAAKG,GAAU,SAAUvppC,GAEvBwppC,EAAYxppC,KAASqppC,EAAiBr0hC,EAAGq0hC,GAAkBr0hC,IAAO,CAAC,GAAGh1H,EACxE,IACA8tO,EAASi3tB,aAAavk6B,EAAWki6B,EAAG9G,QAAS0tN,EAAUC,EAAU7mN,EAAG181B,OApBpE,CAbA,CAkCF,IAEK8nI,GAULA,EAASxxM,MAAM4snC,EAAc5snC,OAAS,GAAGkE,SAASA,GAAU7e,MAAMunoC,EAAcljjC,QAClF,GA1EA,CAdA,CAyFF,CC/FA,IAAIyjjC,GAAW,WACX91+B,GAAS,SACT+1+B,GAAO,OACPtjlC,GAAS,SACTujlC,GAAS,CAACh2+B,GAAQ81+B,GAAUC,GAAMtjlC,IAClCwjlC,GAAkB,CACpBprgC,OAAQ,CAAC,aACTu9zB,SAAU,CAAC0tM,GAAU,aACrBrpZ,KAAM,CAACspZ,GAAM,aACb/35B,OAAQ,CAACvrL,GAAQ,cAEfyjlC,GAAa,CACfrrgC,OAAQ,CAAC,SACTu9zB,SAAU,CAAC0tM,GAAU,SACrBrpZ,KAAM,CAACspZ,GAAM,SACb/35B,OAAQ,CAACvrL,GAAQ,UAEf0jlC,GAAqB,CAAC,IAAK,KAG3BC,GAAoB,QACpBC,GAAoB,CACtBxrgC,OAAQ,CAAC,EACTu9zB,SAAU,CAAC,EACX37M,KAAM,CAAC,EACPzugB,OAAQ,CAAC,GAcPs45B,GAAiB,CACnB5iH,YPjDa,SAAgChpE,GAC7C,IAAIxv5B,EAAOwv5B,EAASntb,OAAOuhgB,UAC3B,MAAO,CACLp0E,SAAU,CAER32+B,KAAM,cACNtI,EAAGyvF,EAAKzvF,EACRjB,EAAG0wF,EAAK1wF,EACR+7B,MAAO20D,EAAK30D,MACZC,OAAQ00D,EAAK10D,QAEfiQ,IAAK,CACHgwH,MAAO,SAAUzvJ,GAEf,OAAO0z+B,EAASy0E,YAAYnojC,EAC9B,EACAoV,KAAM,GAAYyjpC,GAAiBnlL,IAGzC,EO+BEknB,IN/Ca,SAA0BlnB,GACvC,IAAIxv5B,EAAOwv5B,EAAS/+vB,kBACpB,MAAO,CACL++vB,SAAU,CACR32+B,KAAM,MACNtI,EAAGyvF,EAAKzvF,EACRjB,EAAG0wF,EAAK1wF,EACR+7B,MAAO20D,EAAK30D,MACZC,OAAQ00D,EAAK10D,OACbW,KAAMuj9B,EAAS7i9B,WAEjB4O,IAAK,CACHgwH,MAAO,SAAUzvJ,GAIf,OAAO0z+B,EAASy0E,YAAYnojC,EAC9B,EACAoV,KAAM,GAAY,GAAiBs+9B,IAGzC,EM2BEkM,OLtDa,SAA6BlM,GAC1C,IAAIxv5B,EAAOwv5B,EAASo0E,UACpB,MAAO,CACLp0E,SAAU,CACR32+B,KAAM,aACNtI,EAAGyvF,EAAKzvF,EACRjB,EAAG0wF,EAAK1wF,EACR+7B,MAAO20D,EAAK30D,MACZC,OAAQ00D,EAAK10D,QAEfiQ,IAAK,CACHgwH,MAAO,SAAUye,GAEf,OAAOwl0B,EAASy0E,YAAYj64B,EAC9B,EACA94J,KAAMvhB,GAAK,GAAiB6/+B,IAGlC,EKqCExlK,MJ5Ca,SAA4BwlK,GACzC,IAAI6rL,EAAa7rL,EAAS8rL,gBACtBC,EAAY/rL,EAASgsL,eACrB53hC,EAASy3hC,EAAWv/G,YAExB,OADAl46B,EAAO,GAAKA,EAAO,IAAMA,EAAOh9E,UACzB,CACL4o7B,SAAU,CACR32+B,KAAM,QACNm0P,GAAIwivB,EAASxivB,GACbumG,GAAIi8oB,EAASj8oB,GACblnW,EAAGu3I,EAAO,GACVg3N,GAAIh3N,EAAO,IAEbroG,IAAK,CACHgwH,MAAO,SAAUzvJ,GACf,IAAI8nI,EAASy3hC,EAAWI,aAAa3/pC,EAAK,IACtCm/N,EAAQsg8B,EAAUG,YAAY5/pC,EAAK,IACnCyvJ,EAAQik1B,EAASkxH,aAAa,CAAC989B,EAAQq3F,IAE3C,OADA1vE,EAAMp9J,KAAKy1I,EAAQq3F,EAAQ9rO,KAAKsmC,GAAK,KAC9B81H,CACT,EACAr6I,KAAM,GAAY,GAAiBs+9B,IAGzC,EIqBE6mB,SClEa,SAA+B7mB,GAC5C,IAAIxv5B,EAAOwv5B,EAASo0E,UAChB+3G,EAAYnsL,EAASosL,eACzB,MAAO,CACLpsL,SAAU,CACR32+B,KAAM,WACNtI,EAAGyvF,EAAKzvF,EACRjB,EAAG0wF,EAAK1wF,EACR+7B,MAAO20D,EAAK30D,MACZC,OAAQ00D,EAAK10D,OACbuwoC,UAAWrsL,EAAS31Y,eACpB92C,WAAYysb,EAASssL,gBACrBH,UAAW,CACT7ooC,MAAO6ooC,EAAU7ooC,MACjBC,IAAK4ooC,EAAU5ooC,IACfsz5B,MAAOs1O,EAAUt1O,MACjB01O,SAAUJ,EAAUK,SAGxBzgoC,IAAK,CACHgwH,MAAO,SAAUzvJ,EAAMkpV,GACrB,OAAOwqpB,EAASy0E,YAAYnojC,EAAMkpV,EACpC,GAGN,GD4CA,SAAS,GAAO7+M,GACd,OAAOA,aAAc,EACvB,CAEA,SAAS81hC,GAAc91hC,GACrB,OAAOA,aAAc,EACvB,CAuHA,SAlGA,SAAU6uO,GAGR,SAASknzB,IACP,IAAIljnC,EAAmB,OAAXg8T,GAAmBA,EAAOnoX,MAAMP,KAAMI,YAAcJ,KAGhE,OADA0sD,EAAMngD,KAAOqjqC,EAAgBrjqC,KACtBmgD,CACT,CAuFA,OA9FAkgX,EAAUgjwB,EAAiBlnzB,GAS3BknzB,EAAgBlwqC,UAAU4uH,OAAS,SAAUuhjC,EAAcvsM,EAASr07B,EAAKna,GAEvE90B,KAAK2nlC,gBAAkB,KACvB,IAAI/0hB,EAAU5yjB,KAAKykJ,MACfj1I,EAAOqgqC,EAAarriC,UACpB42L,EAAQp7T,KAAKo7T,MACb002B,EAAaC,GAAeF,EAAcrgqC,EAAM8z9B,EAASr07B,GAExD2jhB,GAGHx3P,EAAMvtE,YAGRr+O,EAAK+4hB,KAAKqqB,GAASztiB,KAAI,SAAUg7hC,GAC/B6vH,GAAmB/goC,EAAK,KAAMkxgC,EAAQ2vH,EAAW3vH,EAAQrrhC,GAAU+6oC,EAAcz02B,EAAO5rT,EAC1F,IAAGqjB,QAAO,SAAUk1jC,GAClB,IAAIlu8B,EAAK+4a,EAAQ8vb,iBAAiBqlG,GAClClu8B,GAAM4yhC,GAAqB5yhC,EAAIouhC,GAAiBpuhC,GAAIh8E,OAAQgymC,EAC9D,IAAGthmC,QAAO,SAAU4x+B,EAAQ4nC,GAC1B,IAAIjxD,EAAQlke,EAAQ8vb,iBAAiBqlG,GACrCioF,GAAmB/goC,EAAK6n/B,EAAOqpB,EAAQ2vH,EAAW3vH,EAAQrrhC,GAAU+6oC,EAAcz02B,EAAO5rT,EAC3F,IAAGuyY,UAEH,IAAI0pY,EAAWokZ,EAAa1sqC,IAAI,QAAQ,GAAQgolC,GAAe0kF,EAAa99iC,kBAAkB,EAAO89iC,GAAgB,KAEjHpkZ,EACFrwd,EAAMw5pB,YAAYnpM,GAElBrwd,EAAM28pB,iBAGR/39B,KAAKykJ,MAAQj1I,CACf,EAEAogqC,EAAgBlwqC,UAAU85hC,yBAA2B,SAAUq2I,EAAcvsM,EAASr07B,GACpFjvC,KAAKo7T,MAAMvtE,YACX7tP,KAAKykJ,MAAQ,IACf,EAEAmrhC,EAAgBlwqC,UAAU+5hC,kBAAoB,SAAUpx/B,EAAQwnoC,EAAcvsM,EAASr07B,EAAKna,GAC1F,IAAItlB,EAAOqgqC,EAAarriC,UACpBsriC,EAAaC,GAAeF,EAAcrgqC,EAAM8z9B,EAASr07B,GACzD0tjC,EAAiB38lC,KAAK2nlC,gBAAkB,GAE5C,SAASsoF,EAA4Bp2hC,GAC9BA,EAAGkpkB,UACNlpkB,EAAG6z1B,aAAc,EACjB7z1B,EAAG270B,YAAY,YAAYU,YAAa,EAE5C,CAEA,IAAK,IAAIp7mB,EAAMzyU,EAAO7B,MAAOs0U,EAAMzyU,EAAO5B,IAAKq0U,IAAO,CACpD,IAAIjhO,EAAKm2hC,GAAmB,KAAM,KAAMl1zB,EAAKg1zB,EAAWh1zB,EAAKhmV,GAAU+6oC,EAAc7vqC,KAAKo7T,MAAO5rT,GAE7FqqI,IACFA,EAAGgsD,SAASoq+B,GACZtzE,EAAe96lC,KAAKg4I,GAExB,CACF,EAEA+1hC,EAAgBlwqC,UAAUmshC,aAAe,SAAUnq9B,GACjD,GAA6B1hE,KAAK2nlC,iBAAmB3nlC,KAAKo7T,MAAO15P,EACnE,EAEAkumC,EAAgBlwqC,UAAU0jiC,sBAAwB,SAAUx1/B,EAAWqhD,EAAOs0e,EAAU4/d,GACtF,IAAI+sI,EAAcjhlC,EAAMlD,QAExB,GAAmB,MAAfmklC,GAAuB3smB,EAAS74jB,OAASwlqC,EAC3C,OAAO,EAKT,MAAQ3smB,EAAWA,EAAS8oY,cAAgB9oY,EAASlye,SAAWkye,IAAavjkB,KAAKo7T,OAChF,GAAImoQ,EAAS74jB,OAASwlqC,EACpB,OAAO,EAIX,OAAO,CACT,EAEAN,EAAgBrjqC,KAAO,SAChBqjqC,CACT,CAhGA,CAgGE5sX,IAIF,SAASmtX,GAAS9F,GAChB,IACIxwhC,EADAu2hC,EAAc/F,EAAS99pC,KAI3B,GAAoB,SAAhB6jqC,EAAwB,CAC1B,IAAI9t8B,EAAQ+n8B,EAAS/n8B,MAEjB+t8B,EAA0B,MAAf/t8B,EAAMvjM,OAAiC,MAAhBujM,EAAMtjM,OAAiB,CAC3D/6B,EAAGq+N,EAAMr+N,GAAK,EACdjB,EAAGs/N,EAAMt/N,GAAK,EACd+7B,MAAOujM,EAAMvjM,MACbC,OAAQsjM,EAAMtjM,QACZ,KACAmz0B,EAAWm+T,GAAYhu8B,GAE3BzoF,EAAK,GAAqBs4tB,EAAU,KAAMk+T,EAAU/t8B,EAAMphG,QAAU,UACpE+miC,GAAiBpuhC,GAAI02hC,eAAiBp+T,CACxC,MAAO,GAAoB,UAAhBi+T,EACTv2hC,EAAK,IAAI,GAAkB,CAAC,GAC5BouhC,GAAiBpuhC,GAAI22hC,gBAAkBnG,EAASh2pC,MAAMk2I,WACjD,GAAoB,SAAhB6lhC,EACTv2hC,EAAK,IAAI,GAAiB,CAAC,QACtB,GAAoB,UAAhBu2hC,EACTv2hC,EAAK,IAAI,OACJ,IAAoB,iBAAhBu2hC,EACT,MAAM,IAAI5opC,MAAM,wCAEhB,IAAIu5gC,EAAM,GAA0BqvI,GAE/BrvI,GAOH5sB,GANa,IASft63B,EAAK,IAAIkn5B,CACX,CASA,OAPAknI,GAAiBpuhC,GAAI42hC,kBAAoBL,EACzCv2hC,EAAGnvI,KAAO2/pC,EAAS3/pC,KAInBmvI,EAAGsm2B,eAAiB,EACpBtm2B,EAAG+m2B,aAAe,EACX/m2B,CACT,CAEA,SAAS62hC,GACTzhoC,EAAK4qG,EAAIwrB,EAAWglgC,EAAUsG,EAAgB3tL,EAAayS,GAEzDo4K,GAAwCh0hC,GACxC,IAAI+2hC,EAAWD,GAAkBA,EAAettgC,OAAO60zB,IAEnD04M,GAGF/2hC,EAAG660B,cAAck8M,GAIfvG,GAAmC,MAAvBA,EAASvijC,aACvBuijC,EAASvijC,WAAa6mjC,IAIxB,IAAIhE,EAAWN,GAAYA,EAASh2pC,MAEpC,GAAIs2pC,EAAU,CACZ,GAAgB,SAAZ9whC,EAAGttI,KAAiB,CACtB,IAAIskqC,EAAkBlG,EAEtBziqC,GAAO2oqC,EAAiB,cAAgBA,EAAgBzziC,KAAOyziC,EAAgBp9M,UAC/Evr9B,GAAO2oqC,EAAiB,gBAAkBA,EAAgBzzZ,OAASyzZ,EAAgBn9M,WACrF,CAEA,IAAIo9M,OAAe,EACfC,EAAW,GAAOl3hC,GAAM8whC,EAASn3L,MAAQ,KAEzCvk8B,GAAO8hoC,IACTA,EAASjra,OAAQ,EACjBgra,EAAe7kI,GAA+B8kI,EAAU9hoC,IAI1D07nC,EAASqG,eAAiBF,CAC5B,CAEInB,GAAc91hC,IACZ8whC,IACEmG,EAAenG,EAASqG,kBAG1BrG,EAASn3L,MAAQs9L,GAKvBrG,GAAsB5whC,EAAIwwhC,EAAUrnL,EAAa,CAC/C390B,UAAWA,EACXow1B,OAAQA,EACRi1K,YAAY,IAEdoD,GAAuBj0hC,EAAIwwhC,EAAS4G,kBAAmBjuL,EACzD,CAEA,SAASkuL,GAAgBvlqC,EAAOkuI,EAAIs3hC,EAAYxG,EAAUgG,GACxD,IAAIS,EAAgBv3hC,EAAGkpkB,QAAU,KAAOlpkB,EACpC+2hC,EAAWD,GAAkBA,EAAehlqC,GAAOus9B,IAEvD,GAAIk5M,EAAe,CAEjB,IAAIz6M,EAAWy6M,EAAc57M,YAAY7p9B,GAEzC,IAAiB,IAAbg/pC,EAAoB,CACtB,IAAI0G,EAAwBD,EAAc9sjC,SAAS34G,GAE/C0lqC,IACFA,EAAsBh9pC,MAAQ,KAElC,MAEEsi9B,EAASti9B,MAAQs2pC,GAAY,KAO3BiG,IACFj6M,EAAS9D,WAAa+9M,GAGxB9vL,GAAqBswL,EACvB,CACF,CAuBA,SAASE,GAAoBF,EAAe/G,EAAU1+pC,GACpD,IAAI69jC,EAAW79jC,IAAU6sL,GACrB24+B,EAAa3nG,EAAW6gG,EAAWkH,GAAoBlH,EAAU1+pC,GACjE6lqC,EAAQL,EAAaA,EAAWp0+B,GAAK,KAG5B,MAATy0+B,KAEShoG,EAAW4nG,EAAgBA,EAAc57M,YAAY7p9B,IACvDoxL,GAAKy0+B,GAAS,EAE3B,CAEA,SAASzB,GAAeF,EAAcrgqC,EAAM8z9B,EAASr07B,GACnD,IAAI6goC,EAAaD,EAAa1sqC,IAAI,cAC9B+/+B,EAAW2sL,EAAa99iC,iBACxBgw2B,EAAgB,CAAC,EAEjBmhB,IAOFnhB,EAAgBmhB,EAAS4rL,eAAiB5rL,EAAS4rL,eAAe5rL,GAAY4rL,GAAe5rL,EAAS32+B,MAAM22+B,IAwC9G,IArCA,IA8BIuuL,EACAC,EA/BAC,EAAU,EAAS,CACrBxm8B,SAAUl8L,EAAIk8L,SACdnwD,UAAW/rI,EAAI+rI,UACfmx3B,MAAOl9/B,EAAIk9/B,MACXtztB,oBAAqB5pS,EAAI4pS,oBACzB13U,MAoEF,SAAew2V,EAAKoroB,GAElB,OADmB,MAAnBA,IAA4BA,EAAkB0uM,GACvCjiqC,EAAKsggC,WAAW3sgC,IAAIqM,EAAKuggC,kBAAkBp4qB,GAAO,GAAIoroB,EAC/D,EAtEE1u9B,MAiHF,SAAeu9pC,EAAW7uM,GAKL,MAAnBA,IAA4BA,EAAkB0uM,GAC9C,IAAIp9pC,EAAQ7E,EAAK+ggC,cAAcxtC,EAAiB,SAC5CwjH,EAAclykC,GAASA,EAAM+oH,KAC7BwO,EAAUv3H,GAASA,EAAMu3H,QACzB242B,EAAYstL,EAAkB9uM,EAAiBvqyB,IAAQuzzB,eAC5C,MAAfw6F,IAAwBhiG,EAAUnn3B,KAAOmp9B,GAC9B,MAAX368B,IAAoB242B,EAAU342B,QAAUA,GACxC,IAAIw0Z,EAAM,CACR2pd,aAAc/u7B,GAASurhC,GAAeA,EAAc,QAElDvjB,EAAahD,EAAcj9F,EAAiBvqyB,IAI5CwwzB,EAAY,GAAiCg6E,EAAY,KAAM5iiB,GAAK,GAAO,GAC/E4od,EAAU549B,KAAO4yiC,EAAWz7F,WAAW,QAAUj9B,GAAUulO,EAAanoL,kBAAkB3kB,EAAiBvqyB,IAASus5B,GAAgBv1kC,EAAMuz9B,IAAoB,KAC9J,IAAIlQ,EAAa,GAAkCmwG,EAAY5iiB,GAAK,GAKpE,OAJA0xoB,EAAkBF,EAAWrtL,GAC7BA,EAAYklL,GAAiCllL,EAAWyE,EAAWn2B,GACnE++M,GAAaG,EAAoBxtL,EAAWqtL,GAC5CrtL,EAAUokL,QAAS,EACZpkL,CACT,EA3IEytL,gBA6EF,SAAyBr60B,EAAKoroB,GACT,MAAnBA,IAA4BA,EAAkB0uM,GAC9C950B,EAAMA,GAAO,EACb,IAAI6+qB,EAAUhngC,EAAK819B,iBAAiB3toB,GAEpC,IAAK6+qB,EAAS,CACZ,IAAIpa,EAAW5s/B,EAAKuggC,kBAAkBp4qB,GACtC,OAAOykqB,GAAY,EAAI5s/B,EAAKsggC,WAAW3sgC,IAAIi5/B,EAAUr5B,QAAmBh17B,CAC1E,CAEA,IAAI2vI,EAAMluK,EAAKrM,IAAIqzgC,EAAQ9rgC,KAAMq49B,GAC7Bu3C,EAAc9D,GAAWA,EAAQ8D,YACrC,OAAOA,EAAcA,EAAYtxJ,WAAWtrsB,GAAOA,CACrD,EAzFEu0/B,cAkJF,SAAuBL,EAAW7uM,GAKb,MAAnBA,IAA4BA,EAAkB0uM,GAC9C,IAAIltL,EAAYstL,EAAkB9uM,EAAiBurM,IAAUviL,eACzDi3E,EAAahD,EAAcj9F,EAAiBurM,IAC5CtlL,EAAY,GAAiCg6E,EAAY,KAAM,MAAM,GAAM,GAC/Eh6E,EAAU549B,KAAO4yiC,EAAWz7F,WAAW,QAAU/8B,GAAUqlO,EAAanoL,kBAAkB3kB,EAAiBurM,IAAWuB,EAAanoL,kBAAkB3kB,EAAiBvqyB,IAASus5B,GAAgBv1kC,EAAMuz9B,IAAoB,KACzN,IAAIlQ,EAAa,GAAkCmwG,EAAY,MAAM,GAKrE,OAJA8uG,EAAkBF,EAAWrtL,GAC7BA,EAAYklL,GAAiCllL,EAAWyE,EAAWn2B,GACnE++M,GAAaG,EAAoBxtL,EAAWqtL,GAC5CrtL,EAAUokL,QAAS,EACZpkL,CACT,EAjKExj5B,OA0LF,SAAgB297B,EAAY37D,GAG1B,GAFmB,MAAnBA,IAA4BA,EAAkB0uM,GAE1CvpqC,GAAO6/pC,GAAmBrpI,GAAa,CACzC,IAAIwzI,EAAU1iqC,EAAK+ggC,cAAcxtC,EAAiB,SAClD,OAAOmvM,EAAUA,EAAQnK,GAAkBrpI,IAAe,IAC5D,CAIA,GAAIx2hC,GAAO8/pC,GAAwBtpI,GACjC,OAAOlvhC,EAAK+ggC,cAAcxtC,EAAiB27D,EAE/C,EAtMEyzI,UA6MF,SAAmB/xoB,GACjB,GAAsB,gBAAlB8id,EAAS32+B,KAEX,OxN1kBC,SAAyB6zhB,GAC9B,IAAI/3f,EAAS,GACT8rhC,EAAW/zhB,EAAI31V,KACfyq3B,EAAU,QAEd,GAAsB,aAAlBf,EAAS5njC,KAAb,CAMA,IAFA,IAAI8x5B,EAAY81J,EAASM,eAEhB7zjC,EAAI,EAAGA,EAAIw/hB,EAAI72e,MAAY3oD,IAClCynC,EAAOxmC,KAAK,EAAS,CACnBw85B,UAAWA,EACX62J,QAASA,EACTC,QAASzB,GAAe9yjC,GACvBw/hB,IAGL,IAAIgyoB,EAAkBh9G,GAAuB/shC,GACzC7kB,EAAS,GAEb,IAAS5iB,EAAI,EAAGA,EAAIw/hB,EAAI72e,MAAO3oD,IAAK,CAClC,IAAIwgD,EAAOgxnC,EAAgBl9G,GAASxB,GAAe9yjC,GACnDwgD,EAAK+gE,aAAe/gE,EAAKe,OAASf,EAAKriB,MAAQ,EAC/Cvb,EAAO3hB,KAAKu/C,EACd,CAEA,OAAO59B,CArBP,CAsBF,CwN6iBa6upC,CAAgB,EAAS,CAC9B5n+B,KAFay4yB,EAASgmC,eAGrB9of,GAEP,EAnNEkyoB,qBAyNF,WACE,OAAOhvM,EAAQy/B,yBACjB,EA1NEj+wB,KAiOF,SAAcs7S,GACZ,OAAO,GAAyBA,EAAKkjc,EACvC,GAlOGvB,EAAc9y7B,KAAO,CAAC,GACrB0niB,EAAa,CAIfxpiB,QAAS,CAAC,EACV4vuB,SAAU8yZ,EAAatkpC,GACvB+v+B,WAAYu0K,EAAanlqC,KACzBwy+B,YAAa2yL,EAAa3yL,YAC1BgG,SAAUnhB,EAAcmhB,SACxBqvL,iBAAkB/iqC,EAAK+5C,QACvB1hC,OAAQ2qpC,GAAc3C,EAAarriC,YAQjCiuiC,EAAsB,CAAC,EACvBC,EAAkB,CAAC,EACnBC,EAAwB,CAAC,EACzBC,EAAoB,CAAC,EAEhBhyqC,EAAI,EAAGA,EAAI4tqC,GAAOnuqC,OAAQO,IAAK,CACtC,IAAIo7jB,EAAYwymB,GAAO5tqC,GACvB+xqC,EAAsB32mB,GAAa6zmB,EAAaj4+B,SAAS62+B,GAAgBzymB,IACzE42mB,EAAkB52mB,GAAa6zmB,EAAaj4+B,SAAS82+B,GAAW1ymB,GAClE,CAEA,SAAS60c,EAAa9tC,GACpB,OAAOA,IAAoB0uM,EAAsBC,IAAkBA,EAAgBliqC,EAAKqhgC,aAAa9tC,IAAoBvz9B,EAAKqhgC,aAAa9tC,EAC7I,CAEA,SAAS8uM,EAAkB9uM,EAAiBp39B,GAC1C,OAAQ6D,EAAK46gC,cAA+CrnD,IAAoB0uM,EAAsBgB,EAAoB9mqC,KAAW8mqC,EAAoB9mqC,GAASklgC,EAAa9tC,GAAiBnryB,SAAS62+B,GAAgB9iqC,KAAWklgC,EAAa9tC,GAAiBnryB,SAAS62+B,GAAgB9iqC,IAA9PgnqC,EAAsBhnqC,EACrD,CAEA,SAASq0jC,EAAcj9F,EAAiBp39B,GACtC,OAAQ6D,EAAK46gC,cAA2CrnD,IAAoB0uM,EAAsBiB,EAAgB/mqC,KAAW+mqC,EAAgB/mqC,GAASklgC,EAAa9tC,GAAiBnryB,SAAS82+B,GAAW/iqC,KAAWklgC,EAAa9tC,GAAiBnryB,SAAS82+B,GAAW/iqC,IAAxOinqC,EAAkBjnqC,EACjD,CAEA,OAAO,SAAUo39B,EAAiBju8B,GAKhC,OAJA28oC,EAAsB1uM,EACtB2uM,EAAgB,KAChBe,EAAsB,CAAC,EACvBC,EAAkB,CAAC,EACZ5C,GAAcA,EAAW,EAAS,CACvC/sM,gBAAiBA,EACjB19zB,UAAW71J,EAAK88/B,YAAYvpC,GAE5BoyE,WAAYrghC,EAAUA,EAAQvoB,KAAO,MACpCoqkB,GAAag7lB,EAClB,EA0GA,SAASI,EAAoBxtL,EAAWhs0B,GACtC,IAAK,IAAI1zJ,KAAO0zJ,EACVrwK,GAAOqwK,EAAO1zJ,KAChB0/9B,EAAU1/9B,GAAO0zJ,EAAM1zJ,GAG7B,CAEA,SAASitpC,EAAkBv5/B,EAAOgs0B,GAI5Bhs0B,IACFA,EAAMk7yB,WAAa8wB,EAAU9wB,SAAWl7yB,EAAMk7yB,UAC9Cl7yB,EAAMw5yB,eAAiBwyB,EAAUxyB,aAAex5yB,EAAMw5yB,cAE1D,CAoDF,CAEA,SAASygN,GAAchjqC,GACrB,IAAI26iC,EAAY,CAAC,EAUjB,OATA,EAAK36iC,EAAKkpJ,YAAY,SAAU2j2B,GAC9B,IAAIma,EAAUhngC,EAAK819B,iBAAiB+2B,GAEpC,IAAKma,EAAQwwC,aAAc,CACzB,IAAI39B,EAAW7S,EAAQ6S,UACR8gC,EAAU9gC,GAAY8gC,EAAU9gC,IAAa,IACnD7S,EAAQ4uC,eAAiB51iC,EAAKuggC,kBAAkB1T,EAC3D,CACF,IACO8tD,CACT,CAEA,SAAS6lH,GAAmB/goC,EAAK4joC,EAAUxtgC,EAAWglgC,EAAUrnL,EAAa5nrB,EAAO5rT,GAQlF,GAAK66pC,EAAL,CAKA,IAAIxwhC,EAAKi5hC,GAAmB7joC,EAAK4joC,EAAUxtgC,EAAWglgC,EAAUrnL,EAAa5nrB,GAG7E,OAFAvhL,GAAMrqI,EAAKu5iC,iBAAiB1j5B,EAAWxrB,GACvCA,GAAMsq2B,GAAoBtq2B,EAAIwwhC,EAASv5zB,MAAOu5zB,EAAS9nL,UAAW8nL,EAASjkF,kBACpEvs8B,CALP,CAFEuhL,EAAMvoS,OAAOggpC,EAQjB,CAEA,SAASC,GAAmB7joC,EAAK4joC,EAAUxtgC,EAAWglgC,EAAUrnL,EAAa5nrB,GAK3E,IAAI232B,GAAmB,EACnBj8I,EAAQ+7I,EAERA,GAAYG,GAAmBH,EAAUxI,EAAUrnL,KAQrD+vL,EAAkBvyqC,EAAQ46T,EAAMs/oB,cAAem4N,GAC/CA,EAAW,MAGb,IA7lBmBI,EAAU1vmB,EA6lBzBkyb,GAAUo9K,EACVh5hC,EAAKg5hC,EAEJh5hC,EAUHA,EAAG470B,eATH570B,EAAKs2hC,GAAS9F,GAEVvzI,IAnmBam8I,EAomBHn8I,GApmBavzd,EAomBN1pb,GAnmBdu30B,cAAc6hN,GAEnBtD,GAAcpsmB,IAAaosmB,GAAcsD,KAC3C1vmB,EAASj/J,SAAS2uwB,EAAS5+pC,OAC3BkvjB,EAAS59jB,EAAIstqC,EAASttqC,EACtB49jB,EAASxmY,GAAKk2+B,EAASl2+B,GACvBwmY,EAASk2Y,OAASw5N,EAASx5N,OAC3Bl2Y,EAAS+3Z,UAAY23M,EAAS33M,UAC9B/3Z,EAASp7hB,OAAS8qoC,EAAS9qoC,OAEvB,GAAOo7hB,IAAa,GAAO0vmB,IAC7B1vmB,EAAS38K,SAASqsxB,EAAS3w8B,WAkmBR,IAAnB+n8B,EAAS6I,MACXr5hC,EAAGyj/B,iBAAkB,EACZzj/B,EAAGyj/B,kBACZzj/B,EAAGyj/B,iBAAkB,GAGvBuxC,GAAkBxrgC,OAAO60zB,IAAM22M,GAAkBxrgC,OAAO8vgC,OAAStE,GAAkBjuM,SAAS1I,IAAM22M,GAAkBjuM,SAASuyM,OAAStE,GAAkB5pZ,KAAKizM,IAAM22M,GAAkB5pZ,KAAKkuZ,OAAStE,GAAkBr45B,OAAO0htB,IAAM22M,GAAkBr45B,OAAO285B,OAAS,KACpQtE,GAAkBuE,UAAW,EAoF/B,SAAoCv5hC,EAAIwrB,EAAWglgC,EAAUrnL,EAAayS,EAAQk7K,GAEhF,IAAI92hC,EAAGkpkB,QAAP,CAKAswd,GAAchJ,EAAU,KAAMsG,GAC9B0C,GAAchJ,EAAUiE,GAAUqC,GAOlC,IAAI2C,EAAiB3C,EAAettgC,OAAO8vgC,OACvCI,EAAmB5C,EAAe/vM,SAASuyM,OAC3CK,EAAe7C,EAAe1rZ,KAAKkuZ,OACnCM,EAAiB9C,EAAen65B,OAAO285B,OAE3C,GAAsB,MAAlBG,GAA8C,MAApBC,GAA8C,MAAlBE,GAA0C,MAAhBD,EAAsB,CACxG,IAAIxmlC,EAAc6sD,EAAGltD,iBAErB,IAAuB,IAAnB2mlC,EACFtmlC,GAAe6sD,EAAGo+0B,wBACb,CACLq7M,EAAiB3C,EAAettgC,OAAO8vgC,OAASG,GAAkB,CAChE/mqC,KAAM,QAGHygF,EAMHA,EAAYyo4B,eALZzo4B,EAAcmjlC,GAASmD,GACvBz5hC,EAAG860B,eAAe3n4B,IAOpB0jlC,GAAe,KAAM1jlC,EAAaq4E,EAAWiugC,EAAgB,KAAMtwL,EAAayS,GAGhF,IAFA,IAAIi+K,EAAoBJ,GAAkBA,EAAej/pC,MAEhDzT,EAAI,EAAGA,EAAI4tqC,GAAOnuqC,OAAQO,IAAK,CACtC,IAAIo7jB,EAAYwymB,GAAO5tqC,GAEvB,GAAIo7jB,IAAcxjY,GAEhB04+B,GAAgBl1mB,EAAWhve,EAAa2mlC,EAAoBC,GAA2BN,EAD9D3C,EAAe30mB,GAAWm3mB,OACwEn3mB,GAAY,KAE3I,CAEA03mB,EAAoB1mlC,EAAY84qB,QAAU94qB,EAAY0l4B,YACxD,CACF,CAjDA,CAkDF,CAzIEmhN,CAA2Bh6hC,EAAIwrB,EAAWglgC,EAAUrnL,EAAayS,EAAQo5K,IAmD3E,SAAkCh1hC,EAAIwrB,EAAWglgC,EAAUrnL,EAAayS,GAItE,IAAIq+K,EAAczJ,EAAS5+Y,SAE3B,IAAoB,IAAhBqoZ,EACEj6hC,GAAMA,EAAG68zB,eACX78zB,EAAGk+0B,sBAEA,GAAI+7M,EAAa,CACtB,IAAIroZ,EAAW5xoB,EAAG68zB,cAEdjrL,GAAYunZ,GAAmBvnZ,EAAUqoZ,EAAa9wL,KACxDv3N,EAAW,MAGRA,IACHA,EAAW0kZ,GAAS2D,GAMpBj6hC,EAAG+60B,YAAYnpM,IAGjBilZ,GAAe,KAAMjlZ,EAAUpmnB,EAAWyugC,EAAa,KAAM9wL,EAAayS,EAC5E,CAEF,CAhFEs+K,CAAyBl6hC,EAAIwrB,EAAWglgC,EAAUrnL,EAAayS,GAC/Di7K,GAAezhoC,EAAK4qG,EAAIwrB,EAAWglgC,EAAUwE,GAAmB7rL,EAAayS,GAI7Evt/B,GAAOmiqC,EAAU,UAAYpC,GAAiBpuhC,GAAIriG,KAAO6ynC,EAAS7ynC,MAElE,IAAK,IAAI52C,EAAI,EAAGA,EAAI4tqC,GAAOnuqC,OAAQO,IAAK,CACtC,IAAIo7jB,EAAYwymB,GAAO5tqC,GAEvB,GAAIo7jB,IAAcxjY,GAGhB04+B,GAAgBl1mB,EAAWnib,EAAIm6hC,EADXJ,GAA2BvJ,EAD3BkH,GAAoBlH,EAAUrumB,GACsBA,GACX6ymB,GAEjE,CAcA,OA/YF,SAAiBh1hC,EAAIwwhC,EAAUrnL,GAE7B,IAAInp2B,EAAGkpkB,QAAP,CAIA,IAAIqud,EAAgBv3hC,EAChBuuhC,EAAWplL,EAAYolL,SACvBD,EAAgBnlL,EAAYmlL,cAEhCiJ,EAAczrqC,EAAIyiqC,EAClBgJ,EAAc33N,OAAS0uN,EAEvB,IAAIqJ,EAAQnH,EAAStt+B,GACZ,MAATy0+B,IAAkBJ,EAAcr0+B,GAAKy0+B,GAAS,GAE9C,IAAK,IAAI5wqC,EAAI,EAAGA,EAAI4tqC,GAAOnuqC,OAAQO,IACjC0wqC,GAAoBF,EAAe/G,EAAUmE,GAAO5tqC,GAbtD,CAeF,CAgXE,CAAQi5I,EAAIwwhC,EAAUrnL,GAEA,UAAlBqnL,EAAS99pC,MAkMf,SAAuB0iC,EAAK4qG,EAAIwrB,EAAWglgC,EAAUrnL,GACnD,IAAI9kgB,EAAcmsrB,EAASrqoC,SACvBg7iC,EAAS98lB,EAAcA,EAAY79e,OAAS,EAC5C4zqC,EAAgB5J,EAAS6J,eAEzBC,EAA2B,WAAlBF,GAA8B5J,EAAS+J,mBAChDtuO,GAA6B,IAAlBmuO,EAEf,GAAKj5F,GAAWm5F,GAAWruO,EAA3B,CAIA,GAAIquO,EASF,OA8CuBhnoC,EAtDL,CAChB8B,IAAKA,EACLw3nC,YAAa5shC,EAAG75G,YAAc,GAC9Bk+c,YAAaA,GAAe,GAC5B74U,UAAWA,EACX290B,YAAaA,EACb5nrB,MAAOvhL,QAiDX,IAAI,GAAW1sG,EAAQs5nC,YAAat5nC,EAAQ+wc,YAAarpJ,GAAQA,GAAQ1nT,GAAShoB,IAAIkvpC,IAAkB9lmC,OAAO8lmC,IAAkBxhpC,OAAOyhpC,IAAevyxB,UADzJ,IAA2B50W,EA3CzB245B,GAAYjszB,EAAGg0G,YAKf,IAFA,IAAI7wO,EAAQ,EAELA,EAAQg+jC,EAAQh+jC,IAAS,CAC9B,IAAI4ghB,EAAW1/C,EAAYlhe,GACvBi+8B,EAAWph1B,EAAGgh1B,QAAQ798B,GAEtB4ghB,GACqB,MAAnBA,EAASz1f,SAGXy1f,EAASz1f,QAAS,GAGpB2qoC,GAAmB7joC,EAAKgs7B,EAAU51zB,EAAWu4X,EAAUold,EAAanp2B,IAUpEoh1B,EAAS9y7B,QAAS,CAEtB,CAEA,IAAK,IAAIvnC,EAAIi5I,EAAGuqnB,aAAe,EAAGxjwB,GAAKoc,EAAOpc,IAAK,CACjD,IAAIspF,EAAQ2vD,EAAGgh1B,QAAQj69B,GACvB2zqC,GAAqB16hC,EAAI3vD,EAAO845B,EAClC,CA/CA,CAgDF,CA3PIixL,CAAchloC,EAAK4qG,EAAIwrB,EAAWglgC,EAAUrnL,GAG1C+vL,GAAmB,EACrB332B,EAAM8/pB,UAAUrh1B,EAAIk5hC,GAEpB332B,EAAMj2S,IAAI00H,GAGLA,CACT,CAGA,SAASm5hC,GAAmBn5hC,EAAIwwhC,EAAUrnL,GACxC,IAqRsB1gxB,EArRlBky8B,EAAUvM,GAAiBpuhC,GAC3B46hC,EAAepK,EAAS99pC,KACxBmoqC,EAAgBrK,EAAS/n8B,MACzBqy8B,EAAgBtK,EAASh2pC,MAC7B,OAEE2u+B,EAAYgnC,gCACO,MAAhByqJ,GAAwBA,IAAiBD,EAAQ/D,mBAAsC,SAAjBgE,IA8QrDny8B,EA9Q+Foy8B,KA+QpGxsqC,GAAOo6N,EAAO,aAAep6N,GAAOo6N,EAAO,OA/Q2Egu8B,GAAYoE,KAAmBF,EAAQjE,gBAAmC,UAAjBkE,GAA4BvsqC,GAAOysqC,EAAe,UAAYA,EAAcpqhC,QAAUiqhC,EAAQhE,eAOhS,CA0FA,SAAS6C,GAAchJ,EAAU1+pC,EAAOglqC,GACtC,IAAIiE,EAAYjpqC,EAAmB4lqC,GAAoBlH,EAAU1+pC,GAAzC0+pC,EACpBM,EAAYh/pC,EAAyBioqC,GAA2BvJ,EAAUuK,EAAUtG,IAAhEjE,EAASh2pC,MAC7Bm0pC,EAAS6B,EAAS99pC,KAClBq9pC,EAAQgL,EAAWA,EAAS/hN,WAAa,KACzCygN,EAAiBjJ,EAASr9kC,YAC1B6nlC,EAAYvB,EAAyB3nqC,EAAyB4lqC,GAAoB+B,EAAgB3nqC,GAArD2nqC,EAAhB,KAEjC,GAAI3I,IAEJgG,EAAeyC,UAAY7K,GAAqBoC,EAAUnC,IAAUoB,IAASiL,IAAY,CACvFlE,EAAeyC,UAAW,EAC1B,IAAI0B,EAAgBlM,GAA8B+B,EAAUnC,GAAS78pC,IAIhEi+pC,GAASkL,EAAcjiN,aAC1B+2M,EAAQkL,EAAcjiN,aAGnBgiN,GAAYC,EAAc9nlC,cAC7B6nlC,EAAWC,EAAc9nlC,YAE7B,CAEA,IAAKrhF,GAASkpqC,EAAU,CACtB,IAAIE,EAAmBF,GAEtBE,EAAiBxoqC,OAASwoqC,EAAiBxoqC,KAAO,OAMrD,CAEA,IAAIirC,EAAQ7rC,EAAgCglqC,EAAehlqC,GAAvCglqC,EAAettgC,OACnC7rH,EAAK0g7B,IAAM0xM,EACXpynC,EAAK27nC,OAAS0B,CAChB,CAEA,SAAStD,GAAoBlH,EAAU1+pC,GACrC,OAAQA,EAAmB0+pC,EAAWA,EAAS1+pC,GAAS,KAAxC0+pC,CAClB,CAEA,SAASuJ,GAA2BoB,EAAmBC,EAAatpqC,GAClE,IAAI0I,EAAQ4gqC,GAAeA,EAAY5gqC,MAMvC,OAJa,MAATA,GAAiB1I,IAAU2iqC,IAAY0G,IACzC3gqC,EAAQ2gqC,EAAkB/C,eAGrB59pC,CACT,CAkFA,SAASkgqC,GAAqBn52B,EAAOlxO,EAAO845B,GAI1C945B,GAASuilC,GAAqBvilC,EAAO+9kC,GAAiB7s2B,GAAOv9P,OAAQml7B,EACvE,CAMA,SAASnupB,GAAOzzS,EAAM05T,GACpB,IAAIpwW,EAAO02C,GAAQA,EAAK12C,KACxB,OAAe,MAARA,EAAeA,EAAOkkqC,GAAoB9zzB,CACnD,CAEA,SAASu5zB,GAAiBxr3B,EAAU4kN,GAClC,IAAItge,EAAUntC,KAAKmtC,QACf+noC,EAA0B,MAAZrs3B,EAAmB17Q,EAAQ+wc,YAAYr1L,GAAY,KACjE3+N,EAAoB,MAAZujb,EAAmBtge,EAAQs5nC,YAAYh5pB,GAAY,KAC/DqlqB,GAAmB3loC,EAAQ8B,IAAKi7C,EAAO/8C,EAAQk4H,UAAW6vgC,EAAa/noC,EAAQ618B,YAAa718B,EAAQiuR,MACtG,CAEA,SAASk52B,GAAc7mqB,GACrB,IAAItge,EAAUntC,KAAKmtC,QACf+8C,EAAQ/8C,EAAQs5nC,YAAYh5pB,GAChCvjb,GAASuilC,GAAqBvilC,EAAO+9kC,GAAiB/9kC,GAAOrsB,OAAQ1wB,EAAQ618B,YAC/E,CAMA,SAASstL,GAAYhu8B,GAEnB,OAAOA,IAAUA,EAAM6voB,UAAY7voB,EAAM3/N,EAC3C,CEn/BA,IAAI,GAAQug+B,KACR,GAAQ,EACR,GAAO,GAKPiyM,GAEJ,WACE,SAASA,IACPn1qC,KAAKo4mC,WAAY,EAMjBp4mC,KAAK84/B,mBAAqB,EAC5B,CAkWA,OA5VAq8K,EAAgBz1qC,UAAU4uH,OAAS,SAAU0+7B,EAAWsjD,EAAkBrhkC,EAAK82tB,GAC7E,IAAI5kwB,EAAQmvmC,EAAiBntmC,IAAI,SAC7BsiB,EAAS6qlC,EAAiBntmC,IAAI,UASlC,GANAnD,KAAKo1qC,WAAapoH,EAClBhtjC,KAAKq1qC,kBAAoB/kE,EACzBtwmC,KAAK8kgC,KAAO719B,EAIP82tB,GAAe/lwB,KAAKs1qC,aAAen0qC,GAASnB,KAAKu1qC,cAAgB9vpC,EAAtE,CAIAzlB,KAAKs1qC,WAAan0qC,EAClBnB,KAAKu1qC,YAAc9vpC,EACnB,IAAI21S,EAAQp7T,KAAKw1qC,OACbx1/B,EAAShgL,KAAK8gK,QAElB,IAAKr7I,GAAqB,SAAXA,EAIb,OAFA21S,GAASA,EAAM+uF,YACfnqO,GAAUA,EAAOmqO,QAInB/uF,GAASA,EAAM6nB,OACfjjK,GAAUA,EAAOijK,OAEjB,IAAIon1B,EAAW,CAAC,EAChBrqqC,KAAKy1qC,aAAapL,EAAUlpqC,EAAO6rjC,EAAWsjD,EAAkBrhkC,GAEhE,IAAIymoC,EAAarL,EAASqL,WAEtBA,IAAe11qC,KAAK21qC,iBACtB31qC,KAAKglB,MAAMiqB,GAGbjvC,KAAK21qC,gBAAkBD,EACvB,IAAIE,EAAgB51qC,KAAK61qC,eAAiB71qC,KAAK81qC,mBAAmB9oH,EAAWsjD,GAE7E,GAAKl1yB,EAKE,CACL,IAAI262B,EAAgB,GAAa,GAAazlE,EAAkBslE,GAChE51qC,KAAKg2qC,gBAAgB562B,EAAOiv2B,EAAU0L,GACtC/1qC,KAAKi2qC,cAAc762B,EAAOiv2B,EAAU0L,EAAezlE,EACrD,MAREl1yB,EAAQp7T,KAAKw1qC,OAAS,IAAI,GAC1Bx1qC,KAAKk2qC,gBAAgB962B,EAAOiv2B,EAAUr9G,EAAWsjD,GACjDtwmC,KAAKm2qC,cAAc/62B,EAAOiv2B,EAAUr9G,EAAWsjD,GAC/CrhkC,EAAIk9/B,QAAQhnhC,IAAIi2S,GAOlBg72B,GAAqBh72B,EAAOk1yB,GAAkB,GAE9CtwmC,KAAKq2qC,cAAcl1qC,EA1CnB,CA2CF,EAMAg0qC,EAAgBz1qC,UAAUmzB,OAAS,SAAUoc,GAC3CjvC,KAAKglB,MAAMiqB,EACb,EAMAkmoC,EAAgBz1qC,UAAU2l8B,QAAU,SAAUp25B,GAC5CjvC,KAAKglB,MAAMiqB,EACb,EAMAkmoC,EAAgBz1qC,UAAUo2qC,mBAAqB,SAAU9oH,EAAWsjD,GAClE,IAAIvg3B,EAAYug3B,EAAiBntmC,IAAI,aACjCsnM,EAAOui3B,EAAUvi3B,KACjBkyqB,EAA+B,aAAdlyqB,EAAKl+L,KACtB+pqC,EAAUhmE,EAAiBntmC,IAAI,QAEnC,IAAKmzqC,IAAY35T,EACf,OAAO,EAGT,GAAkB,SAAd5snB,GAAqC,MAAbA,EAAmB,CAC7C,IAAI+owB,EAAqB94/B,KAAK84/B,mBAE9B,GAAIn8I,GAAkBlyqB,EAAKgq3B,eAAiB37D,EAC1C,OAAO,EAMT,GAAIw9K,EAAS,CACX,IAAIC,EAAkB,GAAmCvpH,GAAWupH,gBAChE/hH,EAAa/p3B,EAAK+k3B,YAEtB,OAAO3sjC,KAAKmjH,IAAIwu8B,EAAW,GAAKA,EAAW,IAAM+hH,EAAkBz9K,CACrE,CAEA,OAAO,CACT,CAEA,OAAqB,IAAd/owB,CACT,EAOAol7B,EAAgBz1qC,UAAU+1qC,aAAe,SAAUpL,EAAUlpqC,EAAO6rjC,EAAWsjD,EAAkBrhkC,GACjG,EAMAkmoC,EAAgBz1qC,UAAUw2qC,gBAAkB,SAAU962B,EAAOiv2B,EAAUr9G,EAAWsjD,GAChF,IAAIkmE,EAAgBnM,EAASnvrB,QAE7B,GAAIs7rB,EAAe,CACjB,IAAIC,EAAY,GAAMr72B,GAAOq72B,UAAY,IAAI,EAAQD,EAAcjqqC,MAAM,GAAM89pC,EAASnvrB,UACxF9/K,EAAMj2S,IAAIsxpC,EACZ,CACF,EAMAtB,EAAgBz1qC,UAAUy2qC,cAAgB,SAAU/62B,EAAOiv2B,EAAUr9G,EAAWsjD,GAC9E,GAAI+5D,EAAShpqC,MAAO,CAClB,IAAI84oC,EAAU,GAAM/+0B,GAAO++0B,QAAU,IAAI,GAAa,GAAMkwB,EAAShpqC,QACrE+5T,EAAMj2S,IAAIg1nC,GACVu8B,GAAoBv8B,EAAS7pC,EAC/B,CACF,EAMA6kE,EAAgBz1qC,UAAUs2qC,gBAAkB,SAAU562B,EAAOiv2B,EAAU/jL,GACrE,IAAImwL,EAAY,GAAMr72B,GAAOq72B,UAEzBA,GAAapM,EAASnvrB,UACxBu7rB,EAAUnywB,SAAS+lwB,EAASnvrB,QAAQ7me,OACpCiy+B,EAAYmwL,EAAW,CACrBn08B,MAAO+n8B,EAASnvrB,QAAQ54Q,QAG9B,EAMA6y8B,EAAgBz1qC,UAAUu2qC,cAAgB,SAAU762B,EAAOiv2B,EAAU/jL,EAAagqH,GAChF,IAAI6pC,EAAU,GAAM/+0B,GAAO++0B,QAEvBA,IACFA,EAAQ71uB,SAAS+lwB,EAAShpqC,MAAMgT,OAChCiy+B,EAAY6zJ,EAAS,CAKnBl2oC,EAAGomqC,EAAShpqC,MAAM4C,EAClBjB,EAAGqnqC,EAAShpqC,MAAM2B,IAEpB0zqC,GAAoBv8B,EAAS7pC,GAEjC,EAMA6kE,EAAgBz1qC,UAAU22qC,cAAgB,SAAUl1qC,GAClD,IAAInB,KAAKo4mC,WAAcp4mC,KAAK22qC,sBAA5B,CAIA,IAcIlhL,EAdA66G,EAAmBtwmC,KAAKq1qC,kBAExB98pC,EAAKvY,KAAK8kgC,KAAKqnC,QAEfns3B,EAAShgL,KAAK8gK,QACd81gC,EAActmE,EAAiB146B,SAAS,UACxCnyK,EAAS6qlC,EAAiBntmC,IAAI,UAElC,IAAKyzqC,EAAYzzqC,IAAI,UAAYsiB,GAAqB,SAAXA,EAGzC,OAFAu6J,GAAUznK,EAAGsa,OAAOmtJ,QACpBhgL,KAAK8gK,QAAU,MAMZ9gK,KAAK8gK,UACR201B,GAAS,EACTz10B,EAAShgL,KAAK8gK,QAAU,GAAmB81gC,EAAYzzqC,IAAI,QAAS,CAClEk+I,OAAQ,OACRklQ,WAAW,EACXswxB,YAAa,SAAU13qC,GAErB,GAAeA,EAAEs/B,MACnB,EACAq4oC,YAAa,GAAK92qC,KAAK+2qC,kBAAmB/2qC,KAAM,EAAG,GACnD43G,MAAO,GAAK53G,KAAK+2qC,kBAAmB/2qC,MACpC0lpC,UAAW,GAAK1lpC,KAAKg3qC,iBAAkBh3qC,QAEzCuY,EAAG4M,IAAI66J,IAGTo2/B,GAAqBp2/B,EAAQsw7B,GAAkB,GAE/Ctw7B,EAAOskP,SAASsywB,EAAY7qL,aAAa,KAAM,CAAC,QAAS,cAAe,cAAe,UAAW,cAAe,aAAc,gBAAiB,mBAEhJ,IAAI+5J,EAAa8wB,EAAYzzqC,IAAI,QAE5B,GAAe2ipC,KAClBA,EAAa,CAACA,EAAYA,IAG5B9l+B,EAAOpnD,OAASkthC,EAAW,GAAK,EAChC9l+B,EAAOnnD,OAASithC,EAAW,GAAK,EAChC,GAA4B9lpC,KAAM,yBAA0B42qC,EAAYzzqC,IAAI,aAAe,EAAG,WAE9FnD,KAAKi3qC,mBAAmB91qC,EAAOs0/B,EAhD/B,CAiDF,EAEA0/K,EAAgBz1qC,UAAUu3qC,mBAAqB,SAAU91qC,EAAOs0/B,GAC9D,GAAYz1/B,KAAKq1qC,mBAAoB5/K,GAAUz1/B,KAAK61qC,eAAgB71qC,KAAK8gK,QAASo2gC,GAAoBl3qC,KAAKm3qC,mBAAmBh2qC,EAAOnB,KAAKo1qC,WAAYp1qC,KAAKq1qC,oBAC7J,EAEAF,EAAgBz1qC,UAAUq3qC,kBAAoB,SAAUviiC,EAAIH,GAC1D,IAAI2rC,EAAShgL,KAAK8gK,QAElB,GAAKkf,EAAL,CAIAhgL,KAAKo4mC,WAAY,EAEjB,IAAIg/D,EAAQp3qC,KAAK22qC,sBAAsBO,GAAoBl3/B,GAAS,CAACxrC,EAAIH,GAAKr0I,KAAKo1qC,WAAYp1qC,KAAKq1qC,mBACpGr1qC,KAAKq3qC,aAAeD,EACpBp3/B,EAAO24yB,gBACP34yB,EAAOiuW,KAAKippB,GAAoBE,IAChC,GAAMp3/B,GAAQs3/B,SAAW,KAEzBt3qC,KAAKu3qC,wBAVL,CAWF,EAMApC,EAAgBz1qC,UAAU63qC,uBAAyB,WAGjD,GAFav3qC,KAAK8gK,QAElB,CAIA,IAAI02gC,EAAcx3qC,KAAKq3qC,aACnBrqH,EAAYhtjC,KAAKo1qC,WAErBp1qC,KAAK8kgC,KAAK0/B,eAAe,CACvBj4hC,KAAM,oBACNtI,EAAGuzqC,EAAYC,YAAY,GAC3Bz0qC,EAAGw0qC,EAAYC,YAAY,GAC3BC,cAAeF,EAAYE,cAC3BvnE,SAAU,CAAC,CACTljD,QAASD,EAAUvi3B,KAAKktJ,IACxBo1tB,UAAWC,EAAU7hyB,kBAZzB,CAeF,EAEAgq5B,EAAgBz1qC,UAAUs3qC,iBAAmB,WAI3C,GAHAh3qC,KAAKo4mC,WAAY,EACJp4mC,KAAK8gK,QAElB,CAIA,IAAI3/J,EAAQnB,KAAKq1qC,kBAAkBlyqC,IAAI,SAKvCnD,KAAKi3qC,mBAAmB91qC,GAIxBnB,KAAK8kgC,KAAK0/B,eAAe,CACvBj4hC,KAAM,WAZR,CAcF,EAMA4oqC,EAAgBz1qC,UAAUslB,MAAQ,SAAUiqB,GAC1CjvC,KAAKs1qC,WAAa,KAClBt1qC,KAAKu1qC,YAAc,KACnB,IAAIh9pC,EAAK02B,EAAIk9/B,QACT/wuB,EAAQp7T,KAAKw1qC,OACbx1/B,EAAShgL,KAAK8gK,QAEdvoJ,GAAM6iT,IACRp7T,KAAK21qC,gBAAkB,KACvBv62B,GAAS7iT,EAAGsa,OAAOuoS,GACnBp7I,GAAUznK,EAAGsa,OAAOmtJ,GACpBhgL,KAAKw1qC,OAAS,KACdx1qC,KAAK8gK,QAAU,KACf9gK,KAAKq3qC,aAAe,MAGtB,GAAmBr3qC,KAAM,yBAC3B,EAMAm1qC,EAAgBz1qC,UAAUgzkC,QAAU,WACpC,EAEAyiG,EAAgBz1qC,UAAUi4qC,WAAa,SAAUrnhC,EAAI624B,EAAIywI,GAEvD,MAAO,CACL3zqC,EAAGqsJ,EAFLsnhC,EAAYA,GAAa,GAGvB50qC,EAAGstJ,EAAG,EAAIsnhC,GACV74oC,MAAOoogC,EAAGywI,GACV54oC,OAAQmogC,EAAG,EAAIywI,GAEnB,EAEOzC,CACT,CA5WA,GA8WA,SAAS,GAAY39E,EAAgBo+E,EAAe/7hC,EAAI5sG,GAEjD4qoC,GAAW,GAAMh+hC,GAAIy9hC,SAAUrqoC,KAClC,GAAM4sG,GAAIy9hC,SAAWrqoC,EACrB2ooC,EAAgB,GAAoB/7hC,EAAI5sG,EAAOuqjC,IAAmB398B,EAAG8+0B,gBAAiB9+0B,EAAGo0Y,KAAKhhf,IAElG,CAEA,SAAS4qoC,GAAWC,EAAW/ujC,GAC7B,GAAI,GAAgB+ujC,IAAc,GAAgB/ujC,GAAW,CAC3D,IAAIgvjC,GAAW,EAIf,OAHA,EAAYhvjC,GAAU,SAAU3nE,EAAMv8B,GACpCkzpC,EAAWA,GAAYF,GAAWC,EAAUjzpC,GAAMu8B,EACpD,MACS22nC,CACX,CACE,OAAOD,IAAc/ujC,CAEzB,CAEA,SAAS2tjC,GAAoBv8B,EAAS7pC,GACpC6pC,EAAQ7pC,EAAiBntmC,IAAI,CAAC,QAAS,SAAW,OAAS,SAC7D,CAEA,SAAS+zqC,GAAoBE,GAC3B,MAAO,CACLnzqC,EAAGmzqC,EAAMnzqC,GAAK,EACdjB,EAAGo0qC,EAAMp0qC,GAAK,EACdujH,SAAU6wjC,EAAM7wjC,UAAY,EAEhC,CAEA,SAAS6vjC,GAAqBh72B,EAAOk1yB,EAAkBl8nB,GACrD,IAAIzue,EAAI2qmC,EAAiBntmC,IAAI,KACzBs28B,EAAS62J,EAAiBntmC,IAAI,UAClCi4T,GAASA,EAAMv1H,UAAS,SAAUhsD,GAChB,UAAZA,EAAGttI,OACA,MAAL5G,IAAck0I,EAAGl0I,EAAIA,GACX,MAAV8z8B,IAAmB5/zB,EAAG4/zB,OAASA,GAC/B5/zB,EAAGu6V,OAASA,EAEhB,GACF,CAEA,YCjaO,SAAS4jsB,GAAa1nE,GAC3B,IAEIj8lC,EAFA4jqC,EAAkB3nE,EAAiBntmC,IAAI,QACvC83hC,EAAaq1E,EAAiB146B,SAASqg/B,EAAkB,SAW7D,MARwB,SAApBA,GACF5jqC,EAAQ4mhC,EAAWrvC,gBACbxu3B,KAAO,KACgB,WAApB66iC,KACT5jqC,EAAQ4mhC,EAAWzzD,gBACbpqN,OAAS,MAGV/owB,CACT,CAKO,SAAS6jqC,GAAmB7N,EAAUr9G,EAAWsjD,EAAkBrhkC,EAAKkpoC,GAC7E,IACI/npC,EAAOgopC,GADC9nE,EAAiBntmC,IAAI,SACD6pjC,EAAUvi3B,KAAMui3B,EAAU1pF,QAASgtI,EAAiBntmC,IAAI,qBAAsB,CAC5G8yQ,UAAWq61B,EAAiBntmC,IAAI,CAAC,QAAS,cAC1CiijB,UAAWkrjB,EAAiBntmC,IAAI,CAAC,QAAS,gBAExC6/jC,EAAastC,EAAiB146B,SAAS,SACvCq7mB,EAAW,GAA6B+vR,EAAW7/jC,IAAI,YAAc,GACrE2hP,EAAOk+0B,EAAWx9S,UAClB46S,EAAW,GAA4BhwiC,EAAM00N,GAC7CnmN,EAAWw5oC,EAASx5oC,SACpBI,EAAQqhiC,EAASrhiC,MAAQk0wB,EAAS,GAAKA,EAAS,GAChDj0wB,EAASohiC,EAASphiC,OAASi0wB,EAAS,GAAKA,EAAS,GAElD1uB,EAAQ4zZ,EAAS5zZ,MACX,UAAVA,IAAsB5lvB,EAAS,IAAMI,GAC3B,WAAVwlvB,IAAuB5lvB,EAAS,IAAMI,EAAQ,GAC9C,IAAIo0sB,EAAgBglc,EAAShlc,cACX,WAAlBA,IAA+Bx0sB,EAAS,IAAMK,GAC5B,WAAlBm0sB,IAA+Bx0sB,EAAS,IAAMK,EAAS,GAyBzD,SAA4BL,EAAUI,EAAOC,EAAQiQ,GACnD,IAAI287B,EAAY387B,EAAIk8L,WAChB0gwB,EAAa587B,EAAI+rI,YACrBr8I,EAAS,GAAK97B,KAAKgL,IAAI8wB,EAAS,GAAKI,EAAO6s8B,GAAa7s8B,EACzDJ,EAAS,GAAK97B,KAAKgL,IAAI8wB,EAAS,GAAKK,EAAQ6s8B,GAAc7s8B,EAC3DL,EAAS,GAAK97B,KAAK8K,IAAIgxB,EAAS,GAAI,GACpCA,EAAS,GAAK97B,KAAK8K,IAAIgxB,EAAS,GAAI,EACtC,CA9BE05oC,CAAmB15oC,EAAUI,EAAOC,EAAQiQ,GAC5C,IAAIiwjC,EAAUl8B,EAAW7/jC,IAAI,mBAExB+7lC,GAAuB,SAAZA,IACdA,EAAUlyC,EAAU7pjC,IAAI,CAAC,WAAY,YAAa,WAGpDknqC,EAAShpqC,MAAQ,CAEf4C,EAAG06B,EAAS,GACZ37B,EAAG27B,EAAS,GACZtqB,MAAOg0+B,GAAgB26E,EAAY,CACjC5yiC,KAAMA,EACN00N,KAAMA,EACN1nH,KAAM4l8B,EAAWvw1B,eACjBv6G,QAAS+6qB,EACTv5pB,gBAAiBwl9B,IAGnBni6B,GAAI,GAER,CAWO,SAASq7+B,GAAcj3qC,EAAOspM,EAAM64xB,EAASg1M,EAAmBl4oB,GACrEj/hB,EAAQspM,EAAK3oG,MAAMv1E,MAAMprB,GACzB,IAAIivB,EAAOq6K,EAAK3oG,MAAM8sc,SAAS,CAC7BztiB,MAAOA,GACN,CAGD80Q,UAAWmqR,EAAInqR,YAEbmvS,EAAYhlB,EAAIglB,UAEpB,GAAIA,EAAW,CACb,IAAI8+U,EAAW,CACb/i4B,MAAO,GAA2BspM,EAAM,CACtCtpM,MAAOA,IAETo3qC,cAAe9t+B,EAAKktJ,IACpBo1tB,UAAWti3B,EAAKztL,MAChBw7pC,WAAY,IAEd,EAAYF,GAAmB,SAAUG,GACvC,IAAI37Z,EAASwmN,EAAQsf,iBAAiB61L,EAAQv7L,aAC1C730B,EAAYozgC,EAAQ11M,gBACpB24D,EAAa5+Q,GAAUA,EAAOqzP,cAAc9q2B,GAChDq23B,GAAcx3J,EAASs0S,WAAW32qC,KAAK65hC,EACzC,IAEI,GAAgBt2e,GAClBh1hB,EAAOg1hB,EAAU34iB,QAAQ,UAAW2jB,GAC3B,GAAkBg1hB,KAC3Bh1hB,EAAOg1hB,EAAU8+U,GAErB,CAEA,OAAO9z2B,CACT,CACO,SAASsopC,GAAuBju+B,EAAMtpM,EAAOiunC,GAClD,IAAIxs/B,EhX/JK,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,GgXkKzB,OAFA,GAAcA,EAAWA,EAAWws/B,EAAW7ogC,UAC/C,GAAiBqc,EAAWA,EAAWws/B,EAAWzwlC,UAC3C,GAAuB,CAAC8rK,EAAKos3B,YAAY11jC,IAASiunC,EAAWvlI,aAAe,IAAMulI,EAAWpnB,gBAAkB,IAAMonB,EAAW1hB,aAAe,IAAK9q+B,EAC7J,CACO,SAAS+1iC,GAAkCx3qC,EAAOkpqC,EAAUj7C,EAAYpiE,EAAWsjD,EAAkBrhkC,GAE1G,IAAI00nC,EAAa,GAAYn3D,gBAAgB4iB,EAAW7ogC,SAAU,EAAG6ogC,EAAWpnB,gBAChFonB,EAAW1hB,YAAc4C,EAAiBntmC,IAAI,CAAC,QAAS,WACxD+0qC,GAAmB7N,EAAUr9G,EAAWsjD,EAAkBrhkC,EAAK,CAC7DtQ,SAAU+5oC,GAAuB1rH,EAAUvi3B,KAAMtpM,EAAOiunC,GACxD7qW,MAAOo/Y,EAAW3+6B,UAClBmuf,cAAewwb,EAAW1xM,mBAE9B,CACO,SAAS2mN,GAAcv47B,EAAI0jB,EAAI6z6B,GAEpC,MAAO,CACLhw3B,GAAIvnE,EAFNu37B,EAAYA,GAAa,GAGvBlm/B,GAAI2uD,EAAG,EAAIu37B,GACX96+B,GAAIinE,EAAG6z6B,GACPngjC,GAAIssI,EAAG,EAAI6z6B,GAEf,CACO,SAASiB,GAAcvohC,EAAI624B,EAAIywI,GAEpC,MAAO,CACL3zqC,EAAGqsJ,EAFLsnhC,EAAYA,GAAa,GAGvB50qC,EAAGstJ,EAAG,EAAIsnhC,GACV74oC,MAAOoogC,EAAGywI,GACV54oC,OAAQmogC,EAAG,EAAIywI,GAEnB,CACO,SAASkB,GAAgBp46B,EAAIumG,EAAIqH,EAAIvuW,EAAG8oxB,EAAYC,GACzD,MAAO,CACLpohB,GAAIA,EACJumG,GAAIA,EACJqH,GAAIA,EACJvuW,EACA8oxB,WAAYA,EACZC,SAAUA,EACVlkb,WAAW,EAEf,CC3JA,IAAIm00B,GAEJ,SAAUrwzB,GAGR,SAASqwzB,IACP,OAAkB,OAAXrwzB,GAAmBA,EAAOnoX,MAAMP,KAAMI,YAAcJ,IAC7D,CA4EA,OAhFA4sa,EAAUmswB,EAAsBrwzB,GAUhCqwzB,EAAqBr5qC,UAAU+1qC,aAAe,SAAUpL,EAAUlpqC,EAAO6rjC,EAAWsjD,EAAkBrhkC,GACpG,IAAIw7J,EAAOui3B,EAAUvi3B,KACjB87C,EAAO97C,EAAK87C,KACZ0x7B,EAAkB3nE,EAAiBntmC,IAAI,QACvCulpC,EAAc79C,GAAatk3B,EAAM97C,GAAM2r3B,aAAa3r3B,GAAM085B,kBAC1D6xE,EAAavu+B,EAAKms3B,cAAcns3B,EAAKos3B,YAAY11jC,GAAO,IAE5D,GAAI82qC,GAAuC,SAApBA,EAA4B,CACjD,IAAIgB,EAAU,GAAwB3oE,GAClCkmE,EAAgB0C,GAAoBjB,GAAiBxt+B,EAAMuu+B,EAAYtwB,GAC3E8tB,EAAcniqC,MAAQ4kqC,EACtB5O,EAASqL,WAAac,EAAcjqqC,KACpC89pC,EAASnvrB,QAAUs7rB,CACrB,CAGA,GACAr1qC,EAAOkpqC,EAFU,GAA2B9j7B,EAAKxxH,MAAOi47B,GAE3BA,EAAWsjD,EAAkBrhkC,EAC5D,EAMA8poC,EAAqBr5qC,UAAUy3qC,mBAAqB,SAAUh2qC,EAAO6rjC,EAAWsjD,GAC9E,IAAI8e,EAAa,GAA2BpiE,EAAUvi3B,KAAK87C,KAAKxxH,MAAOi47B,EAAW,CAChFm7C,aAAa,IAGfinB,EAAW1hB,YAAc4C,EAAiBntmC,IAAI,CAAC,SAAU,WACzD,IAAIk/G,EAAM,GAAkC2q8B,EAAUvi3B,KAAMtpM,EAAOiunC,GACnE,MAAO,CACLnrnC,EAAGo+G,EAAI,GACPr/G,EAAGq/G,EAAI,GACPkE,SAAU6ogC,EAAW7ogC,UAAY6ogC,EAAWpnB,eAAiB,EAAInlmC,KAAKsmC,GAAK,GAE/E,EAMA4voC,EAAqBr5qC,UAAUi3qC,sBAAwB,SAAU/ziC,EAAW7c,EAAOin8B,EAAWsjD,GAC5F,IAAI7l6B,EAAOui3B,EAAUvi3B,KACjB87C,EAAO97C,EAAK87C,KACZiu0B,EAAa/p3B,EAAK085B,iBAAgB,GAClCuhD,EAAc79C,GAAatk3B,EAAM97C,GAAM2r3B,aAAa3r3B,GAAM085B,kBAC1D/qG,EAAwB,MAAb3xzB,EAAKktJ,IAAc,EAAI,EAClCwh1B,EAAe,CAACv2iC,EAAU3+H,EAAG2+H,EAAU5/H,GAC3Cm2qC,EAAa/8K,IAAar24B,EAAMq24B,GAChC+8K,EAAa/8K,GAAYv5/B,KAAKgL,IAAI2mjC,EAAW,GAAI2kH,EAAa/8K,IAC9D+8K,EAAa/8K,GAAYv5/B,KAAK8K,IAAI6mjC,EAAW,GAAI2kH,EAAa/8K,IAC9D,IAAIg9K,GAAoB1wB,EAAY,GAAKA,EAAY,IAAM,EACvD+uB,EAAc,CAAC2B,EAAkBA,GAQrC,OAPA3B,EAAYr7K,GAAY+8K,EAAa/8K,GAO9B,CACLn4/B,EAAGk1qC,EAAa,GAChBn2qC,EAAGm2qC,EAAa,GAChB5yjC,SAAUqc,EAAUrc,SACpBkxjC,YAAaA,EACbC,cAVmB,CAAC,CACpBvkc,cAAe,UACd,CACDoxC,MAAO,WAOuB63O,GAElC,EAEO28K,CACT,CAlFA,CAkFE,IAEF,SAASluE,GAAatk3B,EAAM97C,GAC1B,IAAI21V,EAAM,CAAC,EAEX,OADAA,EAAI31V,EAAKktJ,IAAM,aAAeltJ,EAAKztL,MAC5BupO,EAAKsk3B,aAAazqkB,EAC3B,CAEA,IAAI84oB,GAAsB,CACxB55nC,KAAM,SAAUmrJ,EAAMuu+B,EAAYtwB,GAEhC,MAAO,CACLn8oC,KAAM,OACNgp+B,kBAAkB,EAClBjzwB,MAJgB,GAAyB,CAAC028B,EAAYtwB,EAAY,IAAK,CAACswB,EAAYtwB,EAAY,IAAK2wB,GAAgB5u+B,IAMzH,EACA38E,OAAQ,SAAU28E,EAAMuu+B,EAAYtwB,GAClC,IAAIrqP,EAAYx75B,KAAK8K,IAAI,EAAG88L,EAAKgq3B,gBAC7BjiiB,EAAOk2nB,EAAY,GAAKA,EAAY,GACxC,MAAO,CACLn8oC,KAAM,OACN+1N,MAAO,GAAyB,CAAC028B,EAAa36Q,EAAY,EAAGqqP,EAAY,IAAK,CAACrqP,EAAW7rY,GAAO6mpB,GAAgB5u+B,IAErH,GAGF,SAAS4u+B,GAAgB5u+B,GACvB,MAAoB,MAAbA,EAAKktJ,IAAc,EAAI,CAChC,CAEA,YC7CA,GAtEA,SAAU+wB,GAGR,SAAS4wzB,IACP,IAAI5snC,EAAmB,OAAXg8T,GAAmBA,EAAOnoX,MAAMP,KAAMI,YAAcJ,KAGhE,OADA0sD,EAAMngD,KAAO+sqC,EAAiB/sqC,KACvBmgD,CACT,CA2DA,OAlEAkgX,EAAU0swB,EAAkB5wzB,GAS5B4wzB,EAAiB/sqC,KAAO,cACxB+sqC,EAAiB14oB,cAAgB,CAE/B39M,KAAM,OAENt9U,EAAG,GACH4G,KAAM,OAGNu7V,MAAM,EACNyx0B,gBAAgB,EAChBC,iBAAiB,EACjBr4qC,MAAO,KACPskB,OAAQ,KACRk6X,KAAM,GAGN5vJ,UAAW,KACX4owB,wBAAyB,IACzBxmR,UAAW,CACT5knB,MAAO,UACPxuF,MAAO,EACPxyB,KAAM,UAERktqC,YAAa,CACXlsjC,MAAO,yBAETlsH,MAAO,CACL4hV,MAAM,EACNmiO,UAAW,KACXnvS,UAAW,OACXwpG,OAAQ,EACRlyP,MAAO,OACP2K,QAAS,CAAC,EAAG,EAAG,EAAG,GACnBwhB,gBAAiB,OACjB4+N,YAAa,KACbk/nB,YAAa,EACb7+nB,aAAc,GAEhB34L,OAAQ,CACNijK,MAAM,EAENxyG,KAAM,2MACN7rN,KAAM,GAEN66V,OAAQ,GAGRlyP,MAAO,OACPy3pB,WAAY,EACZn0pB,YAAa,OACbi0pB,cAAe,EACfC,cAAe,EAEf3gvB,SAAU,KAGPk1oC,CACT,CApEA,CAoEE5shC,ICtEF,IAAI,GAAQw20B,KACR,GAAO,EASJ,SAASp43B,GAASjmF,EAAKoqB,EAAK+gB,GACjC,IAAI,EAAIq5B,KAAR,CAIA,IAAI9wE,EAAK02B,EAAIk9/B,QACb,GAAM5zhC,GAAIs3yB,UAAY,GAAMt3yB,GAAIs3yB,QAAU,CAAC,GAM7C,SAA6Bt3yB,EAAI02B,GAW/B,SAASyqoC,EAAW9roC,EAAW8zB,GAC7BnpD,EAAG3H,GAAGg9B,GAAW,SAAUzuC,GACzB,IAAIw6qC,EAkCV,SAA4B1qoC,GAC1B,IAAI2qoC,EAAW,CACbC,QAAS,GACTC,QAAS,IAOPt1I,EAAiB,SAAU1vgC,GAC7B,IAAIsl9B,EAAcw/L,EAAS9kpC,EAAQvoB,MAE/B6t+B,EACFA,EAAYv4+B,KAAKizB,IAEjBA,EAAQ0vgC,eAAiBA,EACzBv1/B,EAAIu1/B,eAAe1vgC,GAEvB,EAEA,MAAO,CACL0vgC,eAAgBA,EAChBo1I,SAAUA,EAEd,CA3DgBG,CAAmB9qoC,GAC7B,GAAK,GAAM12B,GAAIs3yB,SAAS,SAAUguO,GAChCA,GAAUn89B,EAAGm89B,EAAQ1+hC,EAAGw6qC,EAAIn1I,eAC9B,IAMN,SAAgCo1I,EAAU3qoC,GACxC,IAEI+qoC,EAFAC,EAAUL,EAASC,QAAQx5qC,OAC3B65qC,EAAUN,EAASE,QAAQz5qC,OAG3B45qC,EACFD,EAAkBJ,EAASC,QAAQI,EAAU,GACpCC,IACTF,EAAkBJ,EAASE,QAAQI,EAAU,IAG3CF,IACFA,EAAgBx1I,eAAiB,KACjCv1/B,EAAIu1/B,eAAew1I,GAEvB,CApBMG,CAAuBR,EAAIC,SAAU3qoC,EACvC,GACF,CAlBI,GAAM12B,GAAI6hqC,cAId,GAAM7hqC,GAAI6hqC,aAAc,EACxBV,EAAW,QAAS,GAAaW,GAAS,UAC1CX,EAAW,YAAa,GAAaW,GAAS,cAE9CX,EAAW,YAAa10X,IAW1B,CAzBEs1X,CAAoB/hqC,EAAI02B,IACX,GAAM12B,GAAIs3yB,QAAQhryB,KAAS,GAAMtM,GAAIs3yB,QAAQhryB,GAAO,CAAC,IAC3DmrC,QAAUA,CANjB,CAOF,CAyCA,SAASg1vB,GAAQ64O,EAAQ1+hC,EAAGqliC,GAC1B3G,EAAO7t+B,QAAQ,QAAS,KAAMw0+B,EAChC,CAEA,SAAS61I,GAAQE,EAAa18I,EAAQ1+hC,EAAGqliC,GACvC3G,EAAO7t+B,QAAQuqnC,EAAap7qC,EAAGqliC,EACjC,CA6BO,SAASnz7B,GAAWxsF,EAAKoqB,GAC9B,IAAI,EAAIo6C,KAAR,CAIA,IAAI9wE,EAAK02B,EAAIk9/B,SACC,GAAM5zhC,GAAIs3yB,SAAW,CAAC,GAAGhryB,KAGrC,GAAMtM,GAAIs3yB,QAAQhryB,GAAO,KAN3B,CAQF,CC1GA,IAAI21pC,GAEJ,SAAU9xzB,GAGR,SAAS8xzB,IACP,IAAI9tnC,EAAmB,OAAXg8T,GAAmBA,EAAOnoX,MAAMP,KAAMI,YAAcJ,KAGhE,OADA0sD,EAAMngD,KAAOiuqC,EAAgBjuqC,KACtBmgD,CACT,CA6BA,OApCAkgX,EAAU4twB,EAAiB9xzB,GAS3B8xzB,EAAgB96qC,UAAU4uH,OAAS,SAAUmsjC,EAAwBn3M,EAASr07B,GAC5E,IAAIyroC,EAAqBp3M,EAAQnpoB,aAAa,WAC1C0jzB,EAAY48B,EAAuBt3qC,IAAI,cAAgBu3qC,GAAsBA,EAAmBv3qC,IAAI,cAAgB,kBAGxH,GAAwB,cAAe8rC,GAAK,SAAUsroC,EAAap7qC,EAAGqliC,GAElD,SAAdq5G,IAAyC,UAAhB08B,GAA2B18B,EAAUr9oC,QAAQ+5qC,IAAgB,IACxF/1I,EAAe,CACbj4hC,KAAM,oBACNguqC,YAAaA,EACbt2qC,EAAG9E,GAAKA,EAAEg5H,QACVn1H,EAAG7D,GAAKA,EAAEi5H,SAGhB,GACF,EAEAoijC,EAAgB96qC,UAAUmzB,OAAS,SAAUyw8B,EAASr07B,GACpD,GAA0B,cAAeA,EAC3C,EAEAuroC,EAAgB96qC,UAAU2l8B,QAAU,SAAUi+B,EAASr07B,GACrD,GAA0B,cAAeA,EAC3C,EAEAuroC,EAAgBjuqC,KAAO,cAChBiuqC,CACT,CAtCA,CAsCE,IAEF,YCtCe,SAASG,GAAoBv2M,EAAQd,GAClD,IAEI0f,EAFA7t2B,EAAQ,GACR+n2B,EAAc9Y,EAAO8Y,YAGzB,GAAmB,MAAfA,KAAyB8F,EAAc1f,EAAQsf,iBAAiB1F,IAClE,MAAO,CACL/n2B,MAAO,IAIX,IAAI3lI,EAAOwz+B,EAAYx+2B,UACnB6gC,EAAY,GAAyB71J,EAAM409B,GAE/C,GAAiB,MAAb/+zB,GAAqBA,EAAY,GAAK,GAAeA,GACvD,MAAO,CACLlwB,MAAO,IAIX,IAAI0E,EAAKrqI,EAAKkz+B,iBAAiBr90B,GAC3B690B,EAAWF,EAAYjx3B,iBAE3B,GAAIix3B,EAAYmxH,mBACdh/9B,EAAQ6t2B,EAAYmxH,mBAAmB9u8B,IAAc,QAChD,GAAI690B,GAAYA,EAASy0E,YAC9B,GAAIvzF,EAAOw2M,UAAW,CACpB,IAAIzmH,EAAWjxE,EAASgmC,cAEpB2/D,EADY3lG,EAASkzE,aAAajC,GACTx8tB,IACzBixvB,EAAcz0B,EAASx8tB,IACvBoxvB,EAAkC,MAAjBF,GAAyC,WAAjBA,EAA4B,EAAI,EACzEC,EAAUt5kC,EAAK42iC,aAAawiC,GAC5BO,EAAc,GAClBA,EAAYJ,GAAkBv5kC,EAAKrM,IAAI2llC,EAASzj7B,GAChD8j7B,EAAY,EAAIJ,GAAkBv5kC,EAAKrM,IAAIqM,EAAKytiC,mBAAmB,wBAAyB534B,GAC5FlwB,EAAQ+t2B,EAASy0E,YAAYwxB,IAAgB,EAC/C,MACEh08B,EAAQ+t2B,EAASy0E,YAAYnojC,EAAKktiB,UAAU,EAAWwmc,EAASxq1B,YAAY,SAAUi/L,GACpF,OAAOnoV,EAAK42iC,aAAazutB,EAC3B,IAAItyL,KAAe,QAEhB,GAAIxrB,EAAI,CAEb,IAAInmD,EAAOmmD,EAAGsqG,kBAAkB5zN,QAChCmjE,EAAKo42B,eAAejyzB,EAAGjX,WACvBuS,EAAQ,CAACzhD,EAAKzvF,EAAIyvF,EAAK30D,MAAQ,EAAG20D,EAAK1wF,EAAI0wF,EAAK10D,OAAS,EAC3D,CAEA,MAAO,CACLm2G,MAAOA,EACP0E,GAAIA,EAER,CCzDA,IAAI,GAAQqp1B,KAQG,SAAS23M,GAAY/lpC,EAASwu8B,EAASr07B,GACpD,IAAIsroC,EAAczlpC,EAAQylpC,YACtBpliC,EAAQ,CAACrgH,EAAQ7wB,EAAG6wB,EAAQ9xB,GAC5Boh+B,EAAStv8B,EACT0vgC,EAAiB1vgC,EAAQ0vgC,gBAAkBnhiC,GAAK4rC,EAAIu1/B,eAAgBv1/B,GACpEihkC,EAAmB5sI,EAAQnpoB,aAAa,eAAe+1wB,iBAG3D,GAAKA,EAAL,CAII4qE,GAAa3liC,KAGfA,EAAQwliC,GAAoB,CAC1Bz9L,YAAa9Y,EAAO8Y,YAGpB730B,UAAW++zB,EAAO/+zB,WACjBi+zB,GAASnu1B,OAGd,IAAI4liC,EAAiBD,GAAa3liC,GAK9B6liC,EAAgB52M,EAAO+rI,SACvBA,EAAWD,EAAiBC,SAC5B8qE,EAA6B,UAAhBV,GAA2BO,GAAa3liC,GACrD+liC,EAAgB,CAAC,EACjBC,EAAe,CAAC,EAChBC,EAAiB,CACnBjlmC,KAAM,GACN9mD,IAAK,CAAC,GAEJgspC,EAAW,CACbrjC,YAAahuM,GAAMguM,GAAamjC,GAChC7ipB,YAAa0xa,GAAM1xa,GAAa8ipB,IAGlC,EAAKlrE,EAAiBorE,aAAa,SAAUp4L,EAAUq4L,GAErD,IAAIC,EAAwBT,GAAkB73L,EAAS2xD,aAAa1/5B,GACpE,EAAK+69B,EAAiBA,iBAAiBqrE,IAAc,SAAU7qE,EAAU7rlC,GACvE,IAAI4lL,EAAOim6B,EAASjm6B,KAChBgx+B,EA4RV,SAA2BT,EAAetqE,GACxC,IAAK,IAAI9vmC,EAAI,EAAGA,GAAKo6qC,GAAiB,IAAI36qC,OAAQO,IAAK,CACrD,IAAI66qC,EAAgBT,EAAcp6qC,GAElC,GAAI8vmC,EAASjm6B,KAAKktJ,MAAQ8j1B,EAAcxuH,SAAWyjD,EAASjm6B,KAAK11E,MAAMo2J,iBAAmBsw5B,EAAc1uH,UACtG,OAAO0uH,CAEX,CACF,CApS0BC,CAAkBV,EAAetqE,GAErD,IAAKuqE,GAAcO,KAA2BR,GAAiBS,GAAgB,CAC7E,IAAI/9/B,EAAM+9/B,GAAiBA,EAAct6qC,MAE9B,MAAPu8K,GAAgBq9/B,IAClBr9/B,EAAM+sB,EAAKm63B,YAAYzv7B,IAGlB,MAAPuoC,GAAei+/B,GAAcjrE,EAAUhz7B,EAAK29/B,GAAU,EAAOH,EAC/D,CACF,GACF,IAEA,IAAIU,EAAe,CAAC,EAsBpB,OArBA,EAAKzrE,GAAU,SAAU0rE,EAAaC,GACpC,IAAIC,EAAYF,EAAYE,UAExBA,IAAcZ,EAAaW,IAC7B,EAAKC,EAAU5rE,UAAU,SAAU6rE,EAAaC,GAC9C,IAAIC,EAAaf,EAAac,GAE9B,GAAID,IAAgBH,GAAeK,EAAY,CAC7C,IAAIx+/B,EAAMw+/B,EAAW/6qC,MACrB46qC,EAAUI,SAAWz+/B,EAAMm+/B,EAAYpx+B,KAAK3oG,MAAMv1E,MAAMwvpC,EAAUI,OAAOz+/B,EAAK0+/B,GAAgBJ,GAAcI,GAAgBP,MAC5HD,EAAaC,EAAYh3pC,KAAO64J,CAClC,CACF,GAEJ,IACA,EAAKk+/B,GAAc,SAAUl+/B,EAAKo+/B,GAChCH,GAAcxrE,EAAS2rE,GAASp+/B,EAAK29/B,GAAU,EAAMH,EACvD,IAyJF,SAA6BC,EAAchrE,EAAU+qE,GACnD,IAAImB,EAAiBnB,EAAc/qE,SAAW,GAE9C,EAAKA,GAAU,SAAUO,EAAU7rlC,GACjC,IAAIg5C,EAAS6yiC,EAASJ,iBAAiBzyiC,OACnCy+mC,EAAUnB,EAAat2pC,GAEvBy3pC,IACD5rE,EAASC,YAAc9yiC,EAAOp4C,OAAS,QACxCo4C,EAAO18D,MAAQm7qC,EAAQn7qC,MAEvB08D,EAAOy6mC,mBAAqBgE,EAAQC,cAAgB,IAAIx6qC,UAMrD2umC,EAASC,YAAc9yiC,EAAOp4C,OAAS,QAI1B,SAAlBo4C,EAAOp4C,QAAqB42pC,EAAex6qC,KAAK,CAC9CorjC,QAASyjD,EAASjm6B,KAAKktJ,IACvBo1tB,UAAW2jD,EAASjm6B,KAAK11E,MAAMo2J,eAC/BhqR,MAAO08D,EAAO18D,OAElB,GACF,CAnLEq7qC,CAAoBrB,EAAchrE,EAAU+qE,GAqL9C,SAAiCE,EAAgBjmiC,EAAOrgH,EAAS0vgC,GAE/D,IAAIs2I,GAAa3liC,IAAWimiC,EAAejlmC,KAAK91E,OAAhD,CAWA,IAAI2ujC,IAAeosH,EAAejlmC,KAAK,GAAGsmmC,WAAW,IAAM,CAAC,GAAGnE,mBAAqB,IAAI,IAAM,CAAC,EAC/F9zI,EAAe,CACbj4hC,KAAM,UACN4riC,eAAe,EACfl0iC,EAAGkxI,EAAM,GACTnyI,EAAGmyI,EAAM,GACTuiiC,cAAe5ipC,EAAQ4ipC,cACvB/4oC,SAAU7J,EAAQ6J,SAClBok8B,gBAAiBisF,EAAWjsF,gBAC5B19zB,UAAW2p5B,EAAW3p5B,UACtB630B,YAAa8xE,EAAW9xE,YACxBk+L,eAAgBA,EAAejlmC,MAjBjC,MAJEqu9B,EAAe,CACbj4hC,KAAM,WAsBZ,CA9MEmwqC,CAAwBtB,EAAgBjmiC,EAAOrgH,EAAS0vgC,GAgN1D,SAAkC2rE,EAAU3rE,EAAgBv1/B,GAI1D,IAAI12B,EAAK02B,EAAIk9/B,QACTwwI,EAAc,4BACdC,EAAiB,GAAMrkqC,GAAIokqC,IAAgB,CAAC,EAC5CE,EAAgB,GAAMtkqC,GAAIokqC,GAAe,CAAC,EAG9C,EAAKxsE,GAAU,SAAUO,EAAU7rlC,GACjC,IAAIg5C,EAAS6yiC,EAASJ,iBAAiBzyiC,OACrB,SAAlBA,EAAOp4C,QAAqBirlC,EAAS8oE,iBAAmB,EAAK37mC,EAAOy6mC,mBAAmB,SAAUz/H,GAC/F,IAAIh0hC,EAAMg0hC,EAAU37D,YAAc,MAAQ27D,EAAUxz4B,UACpDw3gC,EAAch4pC,GAAOg0hC,CACvB,GACF,IAEA,IAAIikI,EAAc,GACdC,EAAa,GACjB,EAAKH,GAAgB,SAAU/jI,EAAWh0hC,IACvCg4pC,EAAch4pC,IAAQk4pC,EAAWl7qC,KAAKg3iC,EACzC,IACA,EAAKgkI,GAAe,SAAUhkI,EAAWh0hC,IACtC+3pC,EAAe/3pC,IAAQi4pC,EAAYj7qC,KAAKg3iC,EAC3C,IACAkkI,EAAW18qC,QAAU4uC,EAAIu1/B,eAAe,CACtCj4hC,KAAM,WACN4riC,eAAe,EAEfd,SAAS,EACTzl+B,MAAOmrmC,IAETD,EAAYz8qC,QAAU4uC,EAAIu1/B,eAAe,CACvCj4hC,KAAM,YACN4riC,eAAe,EAEfd,SAAS,EACTzl+B,MAAOkrmC,GAEX,CAvPEE,CAAyB7sE,EAAU3rE,EAAgBv1/B,GAC5CisoC,CAzEP,CA0EF,CAEA,SAASS,GAAcjrE,EAAUzk9B,EAAUovhC,EAAU4B,EAAQC,GAC3D,IAAIzy+B,EAAOim6B,EAASjm6B,KAEpB,IAAIA,EAAK3oG,MAAM27c,WAAchzW,EAAKg63B,YAAYx46B,GAI9C,GAAKyk9B,EAASysE,cAAd,CAMA,IAAI3F,EAuBN,SAA+Br2qC,EAAOuvmC,GACpC,IAAIjm6B,EAAOim6B,EAASjm6B,KAChBktJ,EAAMltJ,EAAKktJ,IACXyl1B,EAAcj8qC,EACdo7qC,EAAe,GACfz2/B,EAAU3gJ,OAAO+lJ,UACjB8w1B,GAAW,EA+Cf,OA9CA,EAAK00F,EAAS/kF,cAAc,SAAU7uQ,EAAQhia,GAC5C,IACIui0B,EACA56L,EAFAkoC,EAAU7tQ,EAAOt4oB,UAAUsi5B,iBAAiBnvrB,GAIhD,GAAImlb,EAAO8nZ,mBAAoB,CAC7B,IAAIphpC,EAASs5vB,EAAO8nZ,mBAAmBj6I,EAASxphC,EAAOspM,GACvDg4yB,EAAcj/9B,EAAOi/9B,YACrB46L,EAAqB75pC,EAAOqhpC,YAC9B,KAAO,CAML,KALApiL,EAAc3lO,EAAOt4oB,UAAUq34B,iBAAiB8O,EAAQ,GAAIxphC,EAG9C,aAAdspM,EAAKl+L,KAAsB,GAAM,OAEhBlM,OACf,OAGFg9qC,EAAqBvga,EAAOt4oB,UAAUrhI,IAAIwnhC,EAAQ,GAAIloC,EAAY,GACpE,CAEA,GAA0B,MAAtB46L,GAA+B31oC,SAAS21oC,GAA5C,CAIA,IAAI90oB,EAAOpniB,EAAQk8qC,EACftj1B,EAAOl3V,KAAKmjH,IAAIuib,GAEhBxuM,GAAQj0K,KACNi0K,EAAOj0K,GAAWyiX,GAAQ,GAAKyze,EAAU,KAC3Cl21B,EAAUi0K,EACViirB,EAAUzze,EACV60oB,EAAcC,EACdd,EAAal8qC,OAAS,GAGxB,EAAKoi/B,GAAa,SAAUp90B,GAC1Bk3gC,EAAa16qC,KAAK,CAChBq7+B,YAAapgO,EAAOogO,YACpBna,gBAAiB19zB,EACjBA,UAAWy3mB,EAAOt4oB,UAAU8n4B,YAAYjn2B,IAE5C,IAnBF,CAqBF,IACO,CACLk3gC,aAAcA,EACda,YAAaA,EAEjB,CAhFoBE,CAAsBrxhC,EAAUyk9B,GAC9C6rE,EAAe/E,EAAY+E,aAC3Ba,EAAc5F,EAAY4F,YAG1Bb,EAAa,IAAkC,MAA5BW,EAAahgM,aAClC7zlB,EAAO6zxB,EAAcX,EAAa,KAK/BU,GAAUvsE,EAAS5owB,MAClBr9J,EAAKg63B,YAAY24G,IAA+B,MAAfA,IACnCnxhC,EAAWmxhC,GAIf/B,EAASrjC,YAAYtnC,EAAUzk9B,EAAUswhC,GAGzClB,EAAS/ipB,YAAYo4kB,EAAU8mE,EAAa4F,EAvB5C,MAFE/B,EAASrjC,YAAYtnC,EAAUzk9B,EA0BnC,CA6DA,SAAS+r/B,GAAYmjC,EAAczqE,EAAUvvmC,EAAOo7qC,GAClDpB,EAAazqE,EAAS7rlC,KAAO,CAC3B1jB,MAAOA,EACPo7qC,aAAcA,EAElB,CAEA,SAASjkpB,GAAY8ipB,EAAgB1qE,EAAU8mE,EAAar2qC,GAC1D,IAAIo7qC,EAAe/E,EAAY+E,aAC3B9x+B,EAAOim6B,EAASjm6B,KAChBui3B,EAAYvi3B,EAAK11E,MACjBu7+B,EAAmBI,EAASJ,iBAGhC,GAAKI,EAAS6oE,gBAAmBgD,EAAal8qC,OAA9C,CAIA,IAAIoppC,EAAgB/4C,EAASxtH,SAASnu3B,MAClCwmjC,EAAc,GAAoB9xB,GAClC8zB,EAAenC,EAAe/rpC,IAAIkspC,GAEjCgC,IACHA,EAAenC,EAAe/rpC,IAAIkspC,GAAe,CAC/CiC,WAAY/zB,EAAcl+nC,GAC1BkypC,cAAeh0B,EAAct+3B,eAC7B2i3B,aAAc2b,EAAcl9oC,KAC5BmxqC,iBAAkBj0B,EAAc3lL,SAChC24M,WAAY,IAEdrB,EAAejlmC,KAAKt0E,KAAK07qC,IAG3BA,EAAad,WAAW56qC,KAAK,CAC3BorjC,QAASxi3B,EAAKktJ,IACdo1tB,UAAWC,EAAU7hyB,eACrBo8jB,SAAUylO,EAAUzgjC,KACpB0lyB,OAAQ+6Q,EAAUzhiC,GAClBpqB,MAAOA,EAKPw8qC,cAAe,CACb1n6B,UAAWq61B,EAAiBntmC,IAAI,CAAC,QAAS,cAC1CiijB,UAAWkrjB,EAAiBntmC,IAAI,CAAC,QAAS,eAE5Cm1qC,kBAAmBiE,EAAax6qC,SA/BlC,CAiCF,CA+GA,SAASq6qC,GAAgB1rE,GACvB,IAAI1jD,EAAY0jD,EAASjm6B,KAAK11E,MAC1B3zE,EAAO,CAAC,EACRu2S,EAAMv2S,EAAK6rgC,QAAUyjD,EAASjm6B,KAAKktJ,IAIvC,OAHAv2S,EAAK2rgC,UAAY3rgC,EAAKu2S,EAAM,aAAeq1tB,EAAU7hyB,eACrD/pO,EAAKso9B,SAAWto9B,EAAKu2S,EAAM,YAAcq1tB,EAAUtijC,KACnD02C,EAAK6wvB,OAAS7wvB,EAAKu2S,EAAM,UAAYq1tB,EAAUzhiC,GACxC61B,CACT,CAEA,SAAS05nC,GAAa3liC,GACpB,OAAQA,GAAqB,MAAZA,EAAM,IAAc7oG,MAAM6oG,EAAM,KAAmB,MAAZA,EAAM,IAAc7oG,MAAM6oG,EAAM,GAC1F,CCtWO,SAAS,GAAQ467B,GAItB,GAASmhC,yBAAyB,uBAAwB,IAC1DnhC,EAAUpyB,uBAAuB,IACjCoyB,EAAUnyB,sBAAsB,IAChCmyB,EAAU/0B,sBAAqB,SAAUn9+B,GAEvC,GAAIA,EAAQ,GACRA,EAAO+r8B,aAA6C,IAA9B/r8B,EAAO+r8B,YAAYvpgC,UAAkBw9D,EAAO+r8B,YAAc,CAAC,GACnF,IAAIjqnB,EAAO9hV,EAAO+r8B,YAAYjqnB,KAI1BA,IAAShuY,GAAQguY,KACnB9hV,EAAO+r8B,YAAYjqnB,KAAO,CAACA,GAE/B,CACF,IAGAowrB,EAAU70B,kBAAkB60B,EAAU/gC,SAASC,UAAUE,WAAW,SAAU7rE,EAASr07B,GAGrFq07B,EAAQnpoB,aAAa,eAAe+1wB,iB7J5BjC,SAAiB5sI,EAASr07B,GAC/B,IAAIzrB,EAAS,CAeX2slC,SAAU,CAAC,EACXytE,gBAAgB,EAMhB1tE,iBAAkB,CAAC,EACnBorE,YAAa,CAAC,GAKhB,OAGF,SAAyB93pC,EAAQ8/8B,EAASr07B,GACxC,IAAIyroC,EAAqBp3M,EAAQnpoB,aAAa,WAC1Csg1B,EAAyBn3M,EAAQnpoB,aAAa,eAE9C0j1B,EAAcpD,EAAuBt3qC,IAAI,QAAQ,IAAS,GAC1D26qC,EAAa,GAEjB,EAAK7uoC,EAAIu19B,wBAAwB,SAAUthB,GAEzC,GAAKA,EAASkmH,mBAAd,CAIA,IAAImyE,EAAcnrE,GAAQltH,EAASnu3B,OAC/BgpjC,EAAqBv6pC,EAAO0slC,iBAAiBqrE,GAAe,CAAC,EACjE/3pC,EAAO83pC,YAAYC,GAAer4L,EAGlC,IACI86L,EADgB96L,EAASnu3B,MACQ6iE,SAAS,UAAW8i/B,GAIzD,GAHA,EAAKx3L,EAAS5mI,UAAW0tF,GAAMi0O,GAAqB,EAAO,OAGvD/6L,EAASuoH,gBAAkBivE,GAE5BsD,EAAiB76qC,IAAI,QAAS,CAG/B,IAAI+6qC,EAAkD,SAApCF,EAAiB76qC,IAAI,WACnCs3L,EAA0D,UAAlDuj/B,EAAiB76qC,IAAI,CAAC,cAAe,SAC7Cg7qC,EAAcj7L,EAASuoH,eAAeuyE,EAAiB76qC,IAAI,CAAC,cAAe,WAE3E+6qC,GAAezj/B,IACjB,EAAK0j/B,EAAYzyE,SAAU1hK,GAAMi0O,GAAqBxj/B,GAAQ,QAAgByj/B,IAG5Ezj/B,GACF,EAAK0j/B,EAAYxyE,UAAW3hK,GAAMi0O,EAAqB,SAAS,GAEpE,CA5BA,CAgCA,SAASA,EAAoBG,EAAa7E,EAAgB9u+B,GACxD,IAAI6l6B,EAAmB7l6B,EAAK11E,MAAM6iE,SAAS,cAAe6i/B,GACtD4D,EAAkB/tE,EAAiBntmC,IAAI,QAE3C,GAAKk7qC,IAAuC,SAApBA,GAA+BD,GAAgB/tE,GAAgBC,IAAvF,CAIsB,MAAlBipE,IACFA,EAAiBjpE,EAAiBntmC,IAAI,mBAGxCmtmC,EAAmB8tE,EAmCzB,SAA8B3z+B,EAAMuz+B,EAAkBvD,EAAwBn3M,EAAS86M,EAAa7E,GAClG,IAAI+E,EAA0BN,EAAiBpm/B,SAAS,eAEpD2m/B,EAAiB,CAAC,EACtB,EAFa,CAAC,OAAQ,OAAQ,YAAa,cAAe,QAAS,YAAa,0BAA2B,wBAAyB,MAEvH,SAAU7tkC,GACrB6tkC,EAAe7tkC,GAASngF,EAAM+tpC,EAAwBn7qC,IAAIutG,GAC5D,IAIA6tkC,EAAez20B,KAAqB,aAAdr9J,EAAKl+L,QAAyBgtqC,EAGR,UAAxC+E,EAAwBn7qC,IAAI,UAC9Bo7qC,EAAehyqC,KAAO,QAGxB,IAAIiyqC,EAAcD,EAAel9qC,QAAUk9qC,EAAel9qC,MAAQ,CAAC,GAInE,GAFoB,MAApBm9qC,EAAYv71B,OAAiBu71B,EAAYv71B,MAAO,GAE5B,UAAhBm71B,EAAyB,CAE3B,IAAIK,EAA8BH,EAAwBn7qC,IAAI,CAAC,QAAS,SAIxE,GAHAq7qC,EAAYv71B,KAAsC,MAA/Bw71B,GAAsCA,GAGpDlF,EAAgB,CACnB,IAAIj4I,EAAai9I,EAAepsc,UAAYmsc,EAAwBn7qC,IAAI,cACxEm+hC,GAAc,EAASk9I,EAAal9I,EAAWt4C,UACjD,CACF,CAEA,OAAOv+yB,EAAK11E,MAAM6iE,SAAS,cAAe,IAAI,GAAM2m/B,EAAgB9D,EAAwBn3M,GAC9F,CArEuCo7M,CAAqBj0+B,EAAMuz+B,EAAkBvD,EAAwBn3M,EAAS86M,EAAa7E,GAAkBjpE,EAC9I,IAAIxowB,EAAOwowB,EAAiBntmC,IAAI,QAC5Bq2qC,EAAkBlpE,EAAiBntmC,IAAI,mBACvC+xjC,EAAUk7C,GAAQ3l6B,EAAK11E,OACvBoojC,EAAgB5D,GAAkBzx0B,GAAsB,aAAdr9J,EAAKl+L,KAE/CmkmC,EAAWltlC,EAAO2slC,SAASj7C,GAAW,CACxCrwiC,IAAKqwiC,EACLzq3B,KAAMA,EACNy4yB,SAAUA,EACVotH,iBAAkBA,EAClBipE,eAAgBA,EAChBC,gBAAiBA,EACjB2D,cAAeA,EACfr10B,KAAMA,EACN6owB,UAAWN,GAAgBC,GAC3B3kF,aAAc,GACdowJ,UAAW,MAEbgC,EAAmB7oH,GAAWw7C,EAC9BltlC,EAAOo6pC,eAAiBp6pC,EAAOo6pC,gBAAkBT,EACjD,IAAIwB,EAyFV,SAA2Bd,EAAapz+B,GAItC,IAHA,IAAIui3B,EAAYvi3B,EAAK11E,MACjB4iO,EAAMltJ,EAAKktJ,IAEN/2V,EAAI,EAAGA,EAAIi9qC,EAAYx9qC,OAAQO,IAAK,CAC3C,IAAIg+qC,EAAaf,EAAYj9qC,IAAM,CAAC,EAEpC,GAAIkvmC,GAAgB8uE,EAAWjn1B,EAAM,UAAWq1tB,EAAUzhiC,KAAOuklC,GAAgB8uE,EAAWjn1B,EAAM,aAAcq1tB,EAAU7hyB,iBAAmB2k1B,GAAgB8uE,EAAWjn1B,EAAM,YAAaq1tB,EAAUtijC,MACnM,OAAO9J,CAEX,CACF,CApGuBi+qC,CAAkBhB,EAAapz+B,GAEhD,GAAkB,MAAdk0+B,EAAoB,CACtB,IAAI5C,EAAY+B,EAAWa,KAAgBb,EAAWa,GAAc,CAClExuE,SAAU,CAAC,IAEb4rE,EAAU5rE,SAASj7C,GAAWw7C,EAC9BqrE,EAAUI,OAAS0B,EAAYc,GAAYxC,OAC3CzrE,EAASqrE,UAAYA,CACvB,CApCA,CAqCF,CACF,GACF,CA9FE+C,CAAgBt7pC,EAAQ8/8B,EAASr07B,GAEjCzrB,EAAOo6pC,gBAkIT,SAA2Bp6pC,EAAQ8/8B,GAEjCA,EAAQyf,YAAW,SAAUC,GAE3B,IAAIE,EAAWF,EAAYjx3B,iBACvBgtjC,EAAuB/7L,EAAY7/+B,IAAI,CAAC,UAAW,YAAY,GAC/D67qC,EAAoBh8L,EAAY7/+B,IAAI,CAAC,UAAW,SAAS,GAExD+/+B,GAAqC,SAAzB67L,IAA4D,IAAzBA,GAA2D,SAAzBA,IAAyD,IAAtBC,IAAkF,IAAnDh8L,EAAY7/+B,IAAI,CAAC,cAAe,SAAS,IAIjM,EAAKqgB,EAAO0slC,iBAAiBE,GAAQltH,EAASnu3B,SAAS,SAAU27+B,GAC/D,IAAIjm6B,EAAOim6B,EAASjm6B,KAEhBy4yB,EAASliI,QAAQv2qB,EAAKktJ,OAASltJ,IACjCim6B,EAAS/kF,aAAa9phC,KAAKmh/B,GACC,MAA5B0tH,EAAS6lE,kBAA4B7lE,EAAS6lE,gBAAkB,GAChE7lE,EAAS6lE,iBAAmBvzL,EAAYx+2B,UAAUj7E,QAEtD,GACF,GACF,CAxJ2B01nC,CAAkBz7pC,EAAQ8/8B,GAC5C9/8B,CACT,C6JF2D07pC,CAAQ57M,EAASr07B,EAC1E,IAEA8giC,EAAUr0B,eAAe,CACvBnviC,KAAM,oBACNkyB,MAAO,oBACP8vC,OAAQ,sBACPssmC,GACL,CCjCA,IAAIsE,GAEJ,SAAUz2zB,GAGR,SAASy2zB,IACP,OAAkB,OAAXz2zB,GAAmBA,EAAOnoX,MAAMP,KAAMI,YAAcJ,IAC7D,CAgCA,OApCA4sa,EAAUuywB,EAAkBz2zB,GAU5By2zB,EAAiBz/qC,UAAU+1qC,aAAe,SAAUpL,EAAUlpqC,EAAO6rjC,EAAWsjD,EAAkBrhkC,GAChG,IAAIw7J,EAAOui3B,EAAUvi3B,KAEJ,UAAbA,EAAKktJ,MACP33V,KAAK84/B,mBAAqBj2/B,KAAKsmC,GAAK,IAGtC,IAAIu0yB,EAAQjzoB,EAAKizoB,MAEbgrU,EADYhrU,EAAM04O,aAAa3r3B,GACP+k3B,YACxB4vH,EAAa30+B,EAAKos3B,YAAY11jC,GAC9B82qC,EAAkB3nE,EAAiBntmC,IAAI,QAE3C,GAAI80qC,GAAuC,SAApBA,EAA4B,CACjD,IAAIgB,EAAU,GAAwB3oE,GAClCkmE,EAAgB,GAAoByB,GAAiBxt+B,EAAMizoB,EAAO0hW,EAAY12B,GAClF8tB,EAAcniqC,MAAQ4kqC,EACtB5O,EAASqL,WAAac,EAAcjqqC,KACpC89pC,EAASnvrB,QAAUs7rB,CACrB,CAEA,IACI2B,EASR,SAA0Bh3qC,EAAO6rjC,EAAWsjD,EAAkB5yR,EAAOgwR,GACnE,IAAIjj6B,EAAOui3B,EAAUvi3B,KACjBxrC,EAAQwrC,EAAKos3B,YAAY11jC,GACzBk+qC,EAAY3hW,EAAMwxV,eAAe1/G,YAAY,GACjD6vH,EAAYA,EAAY,IAAMx8qC,KAAKsmC,GACnC,IACIxK,EACA4lvB,EACApxC,EAHAijY,EAAe14R,EAAMsxV,gBAAgBx/G,YAKzC,GAAiB,WAAb/k3B,EAAKktJ,IAAkB,CACzB,IAAI/0N,ExXxGG,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,GwXyGvB,GAAcA,EAAWA,EAAWy8iC,GACpC,GAAiBz8iC,EAAWA,EAAW,CAAC86sB,EAAMh9kB,GAAIg9kB,EAAMz2e,KACxDtoU,EAAW,GAAuB,CAACsgI,GAAQyu8B,GAAc9q+B,GACzD,IAAIklqB,EAAgBklR,EAAUp13B,SAAS,aAAaz0L,IAAI,WAAa,EAEjEq/lC,EAAc,GAAYgK,gBAAgB6yE,EAAWv3Y,EAAgBjlyB,KAAKsmC,GAAK,KAAM,GACzFo7uB,EAAQi+U,EAAYx92B,UACpBmuf,EAAgBqvX,EAAYvwI,iBAC9B,KAAO,CAEL,IAAIly9B,EAAIq2mC,EAAa,GACrBz3kC,EAAW++yB,EAAM02R,aAAa,CAACr0mC,EAAI2tmC,EAAazu8B,IAChD,IAAIyhG,EAAKg9kB,EAAMh9kB,GACXumG,EAAKy2e,EAAMz2e,GACfs9a,EAAQ1hxB,KAAKmjH,IAAIrnF,EAAS,GAAK+hO,GAAM3gQ,EAAI,GAAM,SAAW4+B,EAAS,GAAK+hO,EAAK,OAAS,QACtFyye,EAAgBtwuB,KAAKmjH,IAAIrnF,EAAS,GAAKsoU,GAAMlnW,EAAI,GAAM,SAAW4+B,EAAS,GAAKsoU,EAAK,MAAQ,QAC/F,CAEA,MAAO,CACLtoU,SAAUA,EACV4lvB,MAAOA,EACPpxC,cAAeA,EAEnB,CA5CmBmsc,CAAiBn+qC,EAAO6rjC,EAAWsjD,EAAkB5yR,EADlD4yR,EAAiBntmC,IAAI,CAAC,QAAS,YAEjD,GAA8BknqC,EAAUr9G,EAAWsjD,EAAkBrhkC,EAAKkpoC,EAC5E,EAEOgH,CACT,CAtCA,CAsCE,IAyCE,GAAsB,CACxB7/nC,KAAM,SAAUmrJ,EAAMizoB,EAAO0hW,EAAY12B,GACvC,MAAoB,UAAbj+8B,EAAKktJ,IAAkB,CAC5BprV,KAAM,OACN+1N,MAAO,GAAyBo7mB,EAAM02R,aAAa,CAACs0C,EAAY,GAAI02B,IAAc1hW,EAAM02R,aAAa,CAACs0C,EAAY,GAAI02B,MACpH,CACF7yqC,KAAM,SACN+1N,MAAO,CACLo+B,GAAIg9kB,EAAMh9kB,GACVumG,GAAIy2e,EAAMz2e,GACVlnW,EAAGq/qC,GAGT,EACAtxjC,OAAQ,SAAU28E,EAAMizoB,EAAO0hW,EAAY12B,GACzC,IAAIrqP,EAAYx75B,KAAK8K,IAAI,EAAG88L,EAAKgq3B,gBAC7Bp1F,EAASx89B,KAAKsmC,GAAK,IACvB,MAAoB,UAAbshK,EAAKktJ,IAAkB,CAC5BprV,KAAM,SACN+1N,MAAO,GAA2Bo7mB,EAAMh9kB,GAAIg9kB,EAAMz2e,GAAIyhzB,EAAY,GAAIA,EAAY,KAChF02B,EAAa/gR,EAAY,GAAKghE,GAAuBhhE,EAAY,EAAzB+gR,GAA8B//M,IACtE,CACF9y9B,KAAM,SACN+1N,MAAO,GAA2Bo7mB,EAAMh9kB,GAAIg9kB,EAAMz2e,GAAIm40B,EAAa/gR,EAAY,EAAG+gR,EAAa/gR,EAAY,EAAG,EAAa,EAAVx75B,KAAKsmC,IAE1H,GAEF,YC9EA,GAhCA,SAAUu/U,GAGR,SAAS62zB,IACP,IAAI7ynC,EAAmB,OAAXg8T,GAAmBA,EAAOnoX,MAAMP,KAAMI,YAAcJ,KAGhE,OADA0sD,EAAMngD,KAAOgzqC,EAAWhzqC,KACjBmgD,CACT,CAqBA,OA5BAkgX,EAAU2ywB,EAAY72zB,GAStB62zB,EAAW7/qC,UAAUitjC,cAAgB,SAAUplO,GAC7C,IAAIi4V,EAOJ,OANcx/qC,KAAKsj+B,QACXwe,cAAcv6J,GAAU,SAAUylO,GACpCA,EAAU8T,qBAAuB9gkC,OACnCw/qC,EAAiBxyH,EAErB,GAAGhtjC,MACIw/qC,CACT,EAEAD,EAAWhzqC,KAAO,QAClBgzqC,EAAWtjhC,aAAe,CAAC,aAAc,aACzCsjhC,EAAW3+oB,cAAgB,CAEzBj7hB,EAAG,EACHs5B,OAAQ,CAAC,MAAO,OAChBq4G,OAAQ,OAEHioiC,CACT,CA9BA,CA8BE7yhC,IC7BF,IAAI+yhC,GAEJ,SAAU/2zB,GAGR,SAAS+2zB,IACP,OAAkB,OAAX/2zB,GAAmBA,EAAOnoX,MAAMP,KAAMI,YAAcJ,IAC7D,CAOA,OAXA4sa,EAAU6ywB,EAAgB/2zB,GAM1B+2zB,EAAe//qC,UAAUohkC,iBAAmB,WAC1C,OAAO9gkC,KAAK41/B,uBAAuB,QAASrxB,IAAkB1z0B,OAAO,EACvE,EAEA4uhC,EAAelzqC,KAAO,YACfkzqC,CACT,CAbA,CAaE/yhC,IAEF,EAAa+yhC,GAAgB5+G,IAG7B,IAAI6+G,GAEJ,SAAUh3zB,GAGR,SAASg3zB,IACP,IAAIhznC,EAAmB,OAAXg8T,GAAmBA,EAAOnoX,MAAMP,KAAMI,YAAcJ,KAGhE,OADA0sD,EAAMngD,KAAOmzqC,EAAenzqC,KACrBmgD,CACT,CAGA,OAVAkgX,EAAU8ywB,EAAgBh3zB,GAS1Bg3zB,EAAenzqC,KAAO,YACfmzqC,CACT,CAZA,CAYED,IAIEE,GAEJ,SAAUj3zB,GAGR,SAASi3zB,IACP,IAAIjznC,EAAmB,OAAXg8T,GAAmBA,EAAOnoX,MAAMP,KAAMI,YAAcJ,KAGhE,OADA0sD,EAAMngD,KAAOozqC,EAAgBpzqC,KACtBmgD,CACT,CAGA,OAVAkgX,EAAU+ywB,EAAiBj3zB,GAS3Bi3zB,EAAgBpzqC,KAAO,aAChBozqC,CACT,CAZA,CAYEF,ICvDEG,GAEJ,SAAUl3zB,GAGR,SAASk3zB,EAAW99kC,EAAOs0gC,GACzB,OAAO1tvB,EAAO9oX,KAAKI,KAAM,SAAU8hG,EAAOs0gC,IAAiBp2mC,IAC7D,CAMA,OAVA4sa,EAAUgzwB,EAAYl3zB,GAMtBk3zB,EAAWlgrC,UAAUklkC,YAAc,SAAUzv7B,EAAOujN,GAClD,OAAO14V,KAAK090B,MAAMknP,YAAYzv7B,EAAOujN,GAAoB,WAAb14V,KAAK23V,IAAmB,EAAI,EAC1E,EAEOio1B,CACT,CAZA,CAYE,IAEFA,GAAWlgrC,UAAUyvqC,aAAe,GAAKzvqC,UAAUm3jC,YACnD+oH,GAAWlgrC,UAAUmgrC,aAAe,GAAKngrC,UAAUilkC,YACnD,YCjBA,IAAI,GAAQzhG,KAER48M,GAEJ,SAAUp3zB,GAGR,SAASo3zB,EAAUh+kC,EAAOs2iC,GACxB,OAAO1vxB,EAAO9oX,KAAKI,KAAM,QAAS8hG,EAAOs2iC,GAAe,CAAC,EAAG,OAASp4oC,IACvE,CA2DA,OA/DA4sa,EAAUkzwB,EAAWp3zB,GAMrBo3zB,EAAUpgrC,UAAUklkC,YAAc,SAAUzv7B,EAAOujN,GACjD,OAAO14V,KAAK090B,MAAMknP,YAAYzv7B,EAAOujN,GAAoB,WAAb14V,KAAK23V,IAAmB,EAAI,EAC1E,EAUAmo1B,EAAUpgrC,UAAU8jkC,0BAA4B,WAC9C,IAAI/43B,EAAOzqM,KACPgjkC,EAAav43B,EAAKu13B,gBAClB+D,EAAet53B,EAAK3oG,MACpBki+B,EAAgBD,EAAavU,YAI7Bzud,EAAYgje,EAAax6gC,QAE7B,GAAIy6gC,EAAc,GAAKA,EAAc,GAAK,EACxC,OAAO,EAGT,IAAIvJ,EAAYuJ,EAAc,GAC1BsC,EAAW773B,EAAKos3B,YAAY4D,EAAY,GAAKhw3B,EAAKos3B,YAAY4D,GAC9D+L,EAAQ3jkC,KAAKmjH,IAAIsg9B,GAGjB5y+B,EAAO,GAAyC,MAAb+m+B,EAAoB,GAAKA,EAAY,GAAIuI,EAAWx9S,UAAW,SAAU,OAE5GohT,EADO/jkC,KAAK8K,IAAI+lF,EAAK10D,OAAQ,GACjBwniC,EAEhBl6hC,MAAMs6hC,KAAQA,EAAK7mgC,KACnB,IAAImia,EAAWr/d,KAAK8K,IAAI,EAAG9K,KAAKyK,MAAMs5jC,IAClC1ziC,EAAQ,GAAMu3K,EAAK11E,OACnB8x8B,EAAmB3ziC,EAAM2ziC,iBACzBC,EAAgB5ziC,EAAM4ziC,cAe1B,OAXwB,MAApBD,GAA6C,MAAjBC,GAAyBjkkC,KAAKmjH,IAAI6g9B,EAAmB3kmB,IAAa,GAAKr/d,KAAKmjH,IAAI8g9B,EAAgB/le,IAAc,GAE3I8le,EAAmB3kmB,EACpBA,EAAW2kmB,GAIT3ziC,EAAM4ziC,cAAgB/le,EACtB7tkB,EAAM2ziC,iBAAmB3kmB,GAGtBA,CACT,EAEO49sB,CACT,CAjEA,CAiEE,IAEFA,GAAUpgrC,UAAU0vqC,YAAc,GAAK1vqC,UAAUm3jC,YACjDipH,GAAUpgrC,UAAUqgrC,YAAc,GAAKrgrC,UAAUilkC,YACjD,YC3EO,IAAIq7G,GAAkB,CAAC,SAAU,SAEpCC,GAEJ,WACE,SAASA,EAAMv1qC,GACb1K,KAAK04J,WAAasnhC,GAClBhgrC,KAAKuM,KAAO,QAKZvM,KAAK0gQ,GAAK,EAKV1gQ,KAAKinW,GAAK,EACVjnW,KAAKkgrC,YAAc,IAAI,GACvBlgrC,KAAKmgrC,WAAa,IAAI,GACtBngrC,KAAKopmC,oBAAqB,EAC1BppmC,KAAK0K,KAAOA,GAAQ,GACpB1K,KAAKkgrC,YAAYxiW,MAAQ190B,KAAKmgrC,WAAWziW,MAAQ190B,IACnD,CA8KA,OAxKAigrC,EAAMvgrC,UAAUm1iC,aAAe,SAAU1/5B,GACvC,IAAI8pB,EAAQj/J,KAAK8wlC,aAAa378B,GAC9B,OAAOn1I,KAAKkgrC,YAAYtsO,QAAQ30yB,EAAM,KAAOj/J,KAAKmgrC,WAAWvsO,QAAQ30yB,EAAM,GAC7E,EAMAghhC,EAAMvgrC,UAAU+kkC,YAAc,SAAUj1jC,GACtC,OAAOxP,KAAKkgrC,YAAYz7G,YAAYj1jC,EAAK,KAAOxP,KAAKmgrC,WAAW17G,YAAYj1jC,EAAK,GACnF,EAEAywqC,EAAMvgrC,UAAUsh3B,QAAU,SAAUrphB,GAElC,OAAO33V,KADG,IAAM23V,EAAM,OAExB,EAEAso1B,EAAMvgrC,UAAU482B,QAAU,WACxB,MAAO,CAACt82B,KAAKkgrC,YAAalgrC,KAAKmgrC,WACjC,EAMAF,EAAMvgrC,UAAUqulC,eAAiB,SAAUpvB,GACzC,IAAIp5Q,EAAO,GACP0pX,EAAYjvqC,KAAKmgrC,WACjBpR,EAAa/uqC,KAAKkgrC,YAGtB,OAFAjR,EAAUntkC,MAAMv1F,OAASoyjC,GAAap5Q,EAAK1jzB,KAAKotqC,GAChDF,EAAWjtkC,MAAMv1F,OAASoyjC,GAAap5Q,EAAK1jzB,KAAKktqC,GAC1CxpX,CACT,EAEA06X,EAAMvgrC,UAAUwvqC,aAAe,WAC7B,OAAOlvqC,KAAKmgrC,UACd,EAEAF,EAAMvgrC,UAAUsvqC,cAAgB,WAC9B,OAAOhvqC,KAAKkgrC,WACd,EAEAD,EAAMvgrC,UAAU02jC,aAAe,SAAU3r3B,GACvC,IAAIwk+B,EAAYjvqC,KAAKmgrC,WACrB,OAAO11+B,IAASwk+B,EAAYjvqC,KAAKkgrC,YAAcjR,CACjD,EAOAgR,EAAMvgrC,UAAUwphC,YAAc,WAC5B,OAAOlphC,KAAK+tlC,eAAe,WAAW,IAAM/tlC,KAAK+tlC,eAAe,QAAQ,IAAM/tlC,KAAKkvqC,cACrF,EAEA+Q,EAAMvgrC,UAAU+rmC,eAAiB,SAAU9zwB,GACzC,IAAIw8tB,EAAkB,MAAPx8tB,GAAuB,SAARA,EAAiB33V,KAAKgh3B,QAAQrphB,GAAO33V,KAAKkphC,cACxE,MAAO,CACLwiF,SAAU,CAACv3C,GACXw3C,UAAW,CAAC3rmC,KAAKo2jC,aAAajC,IAElC,EAOA8rH,EAAMvgrC,UAAUi4jC,YAAc,SAAUnojC,EAAMkpV,GAC5C,OAAO14V,KAAKo0mC,aAAa,CAACp0mC,KAAKkgrC,YAAY/Q,aAAa3/pC,EAAK,GAAIkpV,GAAQ14V,KAAKmgrC,WAAW/Q,YAAY5/pC,EAAK,GAAIkpV,IAChH,EAMAun1B,EAAMvgrC,UAAUklkC,YAAc,SAAUzv7B,EAAOujN,GAC7C,IAAIz5L,EAAQj/J,KAAK8wlC,aAAa378B,GAC9B,MAAO,CAACn1I,KAAKkgrC,YAAYL,aAAa5ghC,EAAM,GAAIy5L,GAAQ14V,KAAKmgrC,WAAWJ,YAAY9ghC,EAAM,GAAIy5L,GAChG,EAMAun1B,EAAMvgrC,UAAUoxlC,aAAe,SAAU378B,GACvC,IAAIX,EAAKW,EAAM,GAAKn1I,KAAK0gQ,GACrBrsH,EAAKc,EAAM,GAAKn1I,KAAKinW,GACrBgo0B,EAAYjvqC,KAAKkvqC,eACjB3kgC,EAAS0kgC,EAAUz/G,YACnBxhP,EAAWnr0B,KAAKgL,IAAI08J,EAAO,GAAIA,EAAO,IACtC61gC,EAAWv9qC,KAAK8K,IAAI48J,EAAO,GAAIA,EAAO,IAG1C0kgC,EAAU5wa,QAAU2vE,EAAWoyW,EAAW,IAAMA,EAAWpyW,EAAW,IACtE,IAAI12rB,EAASz0I,KAAK4yF,KAAK++C,EAAKA,EAAKH,EAAKA,GACtCG,GAAM8C,EACNjD,GAAMiD,EAKN,IAJA,IAAI+n1B,EAASx89B,KAAK0xH,OAAO8f,EAAIG,GAAM3xI,KAAKsmC,GAAK,IAEzCqwF,EAAM6l2B,EAASrxJ,EAAW,GAAK,EAE5BqxJ,EAASrxJ,GAAYqxJ,EAAS+gN,GACnC/gN,GAAgB,IAAN7l2B,EAGZ,MAAO,CAAC8d,EAAQ+n1B,EAClB,EAMA4gN,EAAMvgrC,UAAU00mC,aAAe,SAAUn18B,GACvC,IAAI3nB,EAAS2nB,EAAM,GACfog0B,EAASpg0B,EAAM,GAAK,IAAMp8J,KAAKsmC,GAInC,MAAO,CAHCtmC,KAAKuxH,IAAIir2B,GAAU/n1B,EAASt3I,KAAK0gQ,IAEhC79P,KAAK4wH,IAAI4r2B,GAAU/n1B,EAASt3I,KAAKinW,GAE5C,EAOAg50B,EAAMvgrC,UAAUorlC,QAAU,WACxB,IAAImkF,EAAYjvqC,KAAKkvqC,eAEjB94D,EADap2mC,KAAKgvqC,gBACQx/G,YAAYztjC,QAC1Cq0mC,EAAa,GAAKA,EAAa,IAAMA,EAAa97iC,UAClD,IAAI89kC,EAAc62B,EAAUz/G,YACxBwtC,EAASn6lC,KAAKsmC,GAAK,IACvB,MAAO,CACLu3N,GAAI1gQ,KAAK0gQ,GACTumG,GAAIjnW,KAAKinW,GACTqH,GAAI8nwB,EAAa,GACjBr2mC,EAAGq2mC,EAAa,GAChBvtV,YAAauvX,EAAY,GAAKp7C,EAC9Bl0U,UAAWsvX,EAAY,GAAKp7C,EAC5Bp4vB,UAAWqq0B,EAAU5wa,QACrBu1M,QAAS,SAAU3v8B,EAAGjB,GAGpB,IAAIwxI,EAAKvwI,EAAIjE,KAAK0gQ,GACdrsH,EAAKrxI,EAAIhD,KAAKinW,GAEdxyN,EAAKD,EAAKA,EAAKH,EAAKA,EAAK,KACzBt0I,EAAIC,KAAKD,EACTuuW,EAAKtuW,KAAKsuW,GACd,OAAO75N,GAAM10I,EAAIA,GAAK00I,GAAM65N,EAAKA,CACnC,EAEJ,EAEA2x0B,EAAMvgrC,UAAUg1iC,eAAiB,SAAUpxE,EAASc,EAAQjj+B,GAE1D,OADe,GAAYij+B,KACPpk+B,KAAOA,KAAK23jC,YAAYx2jC,GAAS,IACvD,EAEA8+qC,EAAMvgrC,UAAUi1iC,iBAAmB,SAAUrxE,EAASc,EAAQxs2B,GAE5D,OADe,GAAYws2B,KACPpk+B,KAAOA,KAAK4kkC,YAAYht8B,GAAS,IACvD,EAEOqojC,CACT,CAlMA,GAoMA,SAAS,GAAY77M,GACnB,IAAI4e,EAAc5e,EAAO4e,YACrBypE,EAAaroF,EAAOqoF,WACxB,OAAOA,GAAcA,EAAW167B,kBAAoBix3B,GAAeA,EAAYjx3B,gBACjF,CAEA,YC7KA,SAASsujC,GAAiB/8M,EAASr07B,GACjC,IAAIyuyB,EAAQ190B,KACRivqC,EAAYvxV,EAAMwxV,eAClBH,EAAarxV,EAAMsxV,gBAkBvB,GAhBAC,EAAUntkC,MAAM2t9B,UAAU1v/B,KAAU,KACpCgvmC,EAAWjtkC,MAAM2t9B,UAAU1v/B,KAAU,KACrCuj6B,EAAQyf,YAAW,SAAUC,GAC3B,GAAIA,EAAYjx3B,mBAAqB2rtB,EAAO,CAC1C,IAAItmB,EAAS4rL,EAAYx+2B,UACzB,EAAYm87B,GAAwBvpQ,EAAQ,WAAW,SAAUz/d,GAC/Do30B,EAAWjtkC,MAAMyt9B,oBAAoBn4P,EAAQz/d,EAC/C,IACA,EAAYgpuB,GAAwBvpQ,EAAQ,UAAU,SAAUz/d,GAC9Ds30B,EAAUntkC,MAAMyt9B,oBAAoBn4P,EAAQz/d,EAC9C,GACF,CACF,IACA8nuB,GAAgBwvG,EAAUntkC,MAAOmtkC,EAAUl6iC,OAC3C0q8B,GAAgBsvG,EAAWjtkC,MAAOitkC,EAAWh6iC,OAEtB,aAAnBk6iC,EAAU1iqC,OAAwB0iqC,EAAUzqG,OAAQ,CACtD,IAAIj65B,EAAS0kgC,EAAUz/G,YACnBjnhB,EAAO,IAAM0moB,EAAUntkC,MAAMv4C,QACjC0lnC,EAAU5wa,QAAU9zlB,EAAO,IAAMg+X,EAAOh+X,EAAO,IAAMg+X,EACrD0moB,EAAUx/G,UAAUll5B,EAAO,GAAIA,EAAO,GACxC,CACF,CAUA,SAAS+1gC,GAAQ71+B,EAAMui3B,GAMrB,GALAvi3B,EAAKl+L,KAAOygjC,EAAU7pjC,IAAI,QAC1BsnM,EAAK3oG,MAAQ+99B,GAAmB7S,GAChCvi3B,EAAK+53B,OAASxX,EAAU7pjC,IAAI,gBAAgC,aAAdsnM,EAAKl+L,KACnDk+L,EAAK4zjB,QAAU2uT,EAAU7pjC,IAAI,WAZ/B,SAA0B6pjC,GACxB,MAA8B,cAAvBA,EAAUlpF,QACnB,CAYMy8M,CAAiBvzH,GAAY,CAC/Bvi3B,EAAK4zjB,QAAU5zjB,EAAK4zjB,UAAY2uT,EAAU7pjC,IAAI,aAC9C,IAAI0lxB,EAAamkS,EAAU7pjC,IAAI,cAC/BsnM,EAAKgl3B,UAAU5mS,EAAYA,GAAcp+kB,EAAK4zjB,SAAW,IAAM,KACjE,CAGA2uT,EAAUvi3B,KAAOA,EACjBA,EAAK11E,MAAQi47B,CACf,CAsCA,SApCmB,CACjBt05B,WAAYsnhC,GACZ9/qC,OAAQ,SAAUoj+B,EAASr07B,GACzB,IAAIuxoC,EAAY,GA8BhB,OA7BAl9M,EAAQwe,cAAc,SAAS,SAAU2qE,EAAY3xsB,GACnD,IAAI4ie,EAAQ,IAAI,GAAM5ie,EAAM,IAE5B4ie,EAAMnvwB,OAAS8xmC,GACf,IAAItR,EAAarxV,EAAMsxV,gBACnBC,EAAYvxV,EAAMwxV,eAClBxiH,EAAkBD,EAAWE,cAAc,cAC3CC,EAAiBH,EAAWE,cAAc,aAC9C2zH,GAAQvR,EAAYriH,GACpB4zH,GAAQrR,EAAWriH,GA5FzB,SAAqBlvO,EAAO+uO,EAAYx9gC,GACtC,IAAIhQ,EAASwthC,EAAWtpjC,IAAI,UACxB47B,EAAQkQ,EAAIk8L,WACZnsM,EAASiQ,EAAI+rI,YACjB0iqB,EAAMh9kB,GAAK,GAAazhO,EAAO,GAAIF,GACnC2+yB,EAAMz2e,GAAK,GAAahoU,EAAO,GAAID,GACnC,IAAI+voC,EAAarxV,EAAMsxV,gBACnBpqpC,EAAO/hB,KAAKgL,IAAIkxB,EAAOC,GAAU,EACjCs4G,EAASm16B,EAAWtpjC,IAAI,UAEd,MAAVm0I,EACFA,EAAS,CAAC,EAAG,QACH,GAAeA,KAEzBA,EAAS,CAAC,EAAGA,IAGf,IAAImpiC,EAAe,CAAC,GAAanpiC,EAAO,GAAI1yH,GAAO,GAAa0yH,EAAO,GAAI1yH,IAC3EmqpC,EAAW1wa,QAAU0wa,EAAWt/G,UAAUgxH,EAAa,GAAIA,EAAa,IAAM1R,EAAWt/G,UAAUgxH,EAAa,GAAIA,EAAa,GACnI,CA0EMC,CAAYhjW,EAAO+uO,EAAYx9gC,GAC/BuxoC,EAAU3+qC,KAAK670B,GACf+uO,EAAW167B,iBAAmB2rtB,EAC9BA,EAAM3otB,MAAQ037B,CAChB,IAEAnpF,EAAQyf,YAAW,SAAUC,GAC3B,GAA4C,UAAxCA,EAAY7/+B,IAAI,oBAAiC,CACnD,IAAIspjC,EAAazpE,EAAY4S,uBAAuB,QAASrxB,IAAkB1z0B,OAAO,GAQtFmy1B,EAAYjx3B,iBAAmB067B,EAAW167B,gBAC5C,CACF,IACOyujC,CACT,GCnHF,IAAI,GAAc,CAAC,WAAY,YAAa,WAAY,YAAa,YAAa,iBAAkB,aAEpG,SAASG,GAAiBjjW,EAAOkjW,EAASjy8B,GACxCiy8B,EAAQ,GAAKA,EAAQ,KAAOA,EAAUA,EAAQ7+qC,QAAQu4D,WACtD,IAAI9zB,EAAQk3yB,EAAM02R,aAAa,CAACwsE,EAAQ,GAAIjy8B,IACxCloM,EAAMi3yB,EAAM02R,aAAa,CAACwsE,EAAQ,GAAIjy8B,IAC1C,MAAO,CACLi5E,GAAIphR,EAAM,GACVkrJ,GAAIlrJ,EAAM,GACVs2J,GAAIr2J,EAAI,GACRgxF,GAAIhxF,EAAI,GAEZ,CAEA,SAASo6oC,GAAanjW,GAEpB,OADiBA,EAAMsxV,gBACL3wa,QAAU,EAAI,CAClC,CAGA,SAASyib,GAAgB3qmC,GACvB,IAAI4qmC,EAAY5qmC,EAAK,GACjB6qmC,EAAW7qmC,EAAKA,EAAK91E,OAAS,GAE9B0grC,GAAaC,GAAYn+qC,KAAKmjH,IAAInjH,KAAKmjH,IAAI+6jC,EAAU9hhC,MAAQ+hhC,EAAS/hhC,OAAS,KAAO,MACxF9oF,EAAKv0E,KAET,CAEA,IAAIq/qC,GAEJ,SAAUv4zB,GAGR,SAASu4zB,IACP,IAAIv0nC,EAAmB,OAAXg8T,GAAmBA,EAAOnoX,MAAMP,KAAMI,YAAcJ,KAIhE,OAFA0sD,EAAMngD,KAAO00qC,EAAc10qC,KAC3BmgD,EAAM+jjC,iBAAmB,mBAClB/jjC,CACT,CA+BA,OAvCAkgX,EAAUq0wB,EAAev4zB,GAUzBu4zB,EAAcvhrC,UAAU4uH,OAAS,SAAUs+7B,EAAgBtpF,GAGzD,GAFAtj+B,KAAKo7T,MAAMvtE,YAEN++zB,EAAezpjC,IAAI,QAAxB,CAIA,IAAI8rqC,EAAYriH,EAAeni3B,KAC3BizoB,EAAQuxV,EAAUvxV,MAClB04R,EAAe14R,EAAMsxV,gBAAgBx/G,YACrC0xH,EAAcjS,EAAUpqG,iBACxBs8G,EAAkBlS,EAAUlpG,sBAC5Bn4+B,EAAS,EAAWqhlC,EAAUjpG,iBAAiB,SAAUlsR,GAC3DA,EAAY,EAAaA,GACzB,IAAIh4sB,EAAQmtkC,EAAUntkC,MAClB249B,EAA2B,YAAf349B,EAAMv1F,KAAqBu1F,EAAMiv9B,oBAAoBj3Q,EAAU2gR,WAAa3gR,EAAU2gR,UAEtG,OADA3gR,EAAU76oB,MAAQgwgC,EAAUp4G,YAAY4D,GACjC3gR,CACT,IACAgnY,GAAgBlzlC,GAChBkzlC,GAAgBI,GAChB,EAAY,IAAa,SAAUx2qC,IAC7BkijC,EAAezpjC,IAAI,CAACuH,EAAM,UAAcukqC,EAAUntkC,MAAM27c,WAAsB,aAAT/yiB,GACvE02qC,GAA0B12qC,GAAM1K,KAAKo7T,MAAOwxvB,EAAgBlvO,EAAOwjW,EAAaC,EAAiB/qE,EAAcxohC,EAEnH,GAAG5tF,KApBH,CAqBF,EAEAihrC,EAAc10qC,KAAO,YACd00qC,CACT,CAzCA,CAyCE,IAEEG,GAA4B,CAC9BhjR,SAAU,SAAUhjmB,EAAOwxvB,EAAgBlvO,EAAOwjW,EAAaC,EAAiB/qE,GAC9E,IAII9z4B,EAJA+q3B,EAAiBzgC,EAAeh13B,SAAS,CAAC,WAAY,cAEtDyp/B,EAAMR,GAAanjW,GACnB4jW,EAAOD,EAAM,EAAI,GAInB/+8B,EADyB,IAAvB8z4B,EAAakrE,GACP,IAAI,GAAe,CACzBh/8B,MAAO,CACLo+B,GAAIg9kB,EAAMh9kB,GACVumG,GAAIy2e,EAAMz2e,GACVlnW,EAAGq2mC,EAAairE,IAElBhtqC,MAAOg5kC,EAAezhG,eACtB7uzB,GAAI,EACJq3S,QAAQ,IAGF,IAAI,GAAa,CACvB9xQ,MAAO,CACLo+B,GAAIg9kB,EAAMh9kB,GACVumG,GAAIy2e,EAAMz2e,GACVlnW,EAAGq2mC,EAAairE,GAChB/y0B,GAAI8nwB,EAAakrE,IAEnBjtqC,MAAOg5kC,EAAezhG,eACtB7uzB,GAAI,EACJq3S,QAAQ,KAIN//d,MAAM+oH,KAAO,KACnBg+L,EAAMj2S,IAAIm9M,EACZ,EACAmi4B,SAAU,SAAUrpyB,EAAOwxvB,EAAgBlvO,EAAOwjW,EAAaC,EAAiB/qE,GAC9E,IAAItxC,EAAYlY,EAAeh13B,SAAS,YACpCy/8B,GAAWvyE,EAAU3hkC,IAAI,WAAa,EAAI,GAAK2hkC,EAAU3hkC,IAAI,UAC7Dm0I,EAAS8+9B,EAAayqE,GAAanjW,IACnCnyyB,EAAQ,EAAW21oC,GAAa,SAAUK,GAC5C,OAAO,IAAI,GAAa,CACtBj/8B,MAAOq+8B,GAAiBjjW,EAAO,CAACpmsB,EAAQA,EAAS+//B,GAAUkqC,EAActihC,QAE7E,IACAm8J,EAAMj2S,IAAI,GAAkBomB,EAAO,CACjCl3B,MAAO,EAAgBywjC,EAAUlt4B,SAAS,aAAag0zB,eAAgB,CACrExuO,OAAQwvS,EAAezpjC,IAAI,CAAC,WAAY,YAAa,cAG3D,EACA4vjC,UAAW,SAAU33vB,EAAOwxvB,EAAgBlvO,EAAO8jW,EAAYL,EAAiB/qE,GAC9E,GAAK+qE,EAAgB9grC,OAArB,CAUA,IANA,IAAIykkC,EAAYlY,EAAeh13B,SAAS,YACpC426B,EAAiB5hD,EAAeh13B,SAAS,aACzCy/8B,GAAWvyE,EAAU3hkC,IAAI,WAAa,EAAI,GAAKqrmC,EAAerrmC,IAAI,UAClEm0I,EAAS8+9B,EAAayqE,GAAanjW,IACnCnyyB,EAAQ,GAEH3qC,EAAI,EAAGA,EAAIugrC,EAAgB9grC,OAAQO,IAC1C,IAAK,IAAI8C,EAAI,EAAGA,EAAIy9qC,EAAgBvgrC,GAAGP,OAAQqD,IAC7C6nC,EAAM1pC,KAAK,IAAI,GAAa,CAC1BygO,MAAOq+8B,GAAiBjjW,EAAO,CAACpmsB,EAAQA,EAAS+//B,GAAU8pC,EAAgBvgrC,GAAG8C,GAAGu7J,UAKvFm8J,EAAMj2S,IAAI,GAAkBomB,EAAO,CACjCl3B,MAAO,EAAgBm6lC,EAAe526B,SAAS,aAAag0zB,eAAgB,EAAgBk5E,EAAUl5E,eAAgB,CACpHxuO,OAAQwvS,EAAezpjC,IAAI,CAAC,WAAY,YAAa,eAlBzD,CAqBF,EACAo/1B,UAAW,SAAUnniB,EAAOwxvB,EAAgBlvO,EAAOwjW,EAAaC,EAAiB/qE,EAAcxohC,GAC7F,IAAI+/gC,EAAkB/gD,EAAewQ,eAAc,GAC/CqkH,EAAmB70H,EAAeh13B,SAAS,aAC3C816B,EAAc+zE,EAAiBt+qC,IAAI,UACnCmhmC,EAAe13C,EAAezpjC,IAAI,gBAEtC,EAAYyqF,GAAQ,SAAUkstB,EAAWh/b,GACvC,IAAIkotB,EAAay+G,EACbhnH,EAAY3gR,EAAU2gR,UACtB16jC,EAAIq2mC,EAAayqE,GAAanjW,IAC9B560B,EAAI460B,EAAM02R,aAAa,CAACr0mC,EAAI2tmC,EAAa5zT,EAAU76oB,QACnDyhG,EAAKg9kB,EAAMh9kB,GACXumG,EAAKy2e,EAAMz2e,GACX8oc,EAAiBltyB,KAAKmjH,IAAIljH,EAAE,GAAK49P,GAAM3gQ,EAAI,GAAM,SAAW+C,EAAE,GAAK49P,EAAK,OAAS,QACjFgh7B,EAAyB7+qC,KAAKmjH,IAAIljH,EAAE,GAAKmkW,GAAMlnW,EAAI,GAAM,SAAW+C,EAAE,GAAKmkW,EAAK,MAAQ,SAE5F,GAAI0mwB,GAAmBA,EAAgBlzC,GAAY,CACjD,IAAIozC,EAAkBF,EAAgBlzC,GAElC,GAAgBozC,IAAoBA,EAAgB7kH,YACtDg6E,EAAa,IAAI,GAAM6qC,EAAgB7kH,UAAWy4L,EAAkBA,EAAiBn+M,SAEzF,CAEA,IAAIpoB,EAAS,IAAI,GAAa,CAC5B9me,OAAQ,GAAYw4nB,cAAchgD,GAClCv4iC,MAAOg0+B,GAAgB26E,EAAY,CACjC/+jC,EAAGnB,EAAE,GACLE,EAAGF,EAAE,GACLs6H,KAAM4l8B,EAAWvw1B,gBAAkBm60B,EAAezpjC,IAAI,CAAC,WAAY,YAAa,UAChFitB,KAAM0pxB,EAAUuqR,eAChB9/S,MAAOwrB,EACP58D,cAAeuuc,MAKnB,GAFAtm3B,EAAMj2S,IAAI+17B,GAENopJ,EAAc,CAChB,IAAIvjqB,EAAY,GAAY4rqB,sBAAsB//C,GAClD7rnB,EAAUkI,WAAa,YACvBlI,EAAU5/b,MAAQ24yB,EAAUwqR,SAC5BtnF,GAAU9hC,GAAQn6gB,UAAYA,CAChC,CACF,GAAG/gc,KACL,EACAmhiC,UAAW,SAAU/luB,EAAOwxvB,EAAgBlvO,EAAOwjW,EAAaC,EAAiB/qE,GAC/E,IACI/oB,EADiBzgC,EAAeh13B,SAAS,aACTA,SAAS,aACzCy+C,EAAag32B,EAAelqlC,IAAI,SAChCwrzB,EAAY,EAChBt4kB,EAAaA,aAAsB52O,MAAQ42O,EAAa,CAACA,GAGzD,IAFA,IAAIq/3B,EAAa,GAER90mC,EAAI,EAAGA,EAAIsgrC,EAAY7grC,OAAQO,IAAK,CAC3C,IAAI0l0B,EAAa3X,IAAct4kB,EAAWh2O,OAC1Cq1mC,EAAWpvS,GAAcovS,EAAWpvS,IAAe,GACnDovS,EAAWpvS,GAAYzk0B,KAAK,IAAI,GAAa,CAC3CygO,MAAOq+8B,GAAiBjjW,EAAO04R,EAAc8qE,EAAYtgrC,GAAGq+J,SAEhE,CAIA,IAASr+J,EAAI,EAAGA,EAAI80mC,EAAWr1mC,OAAQO,IACrCw6T,EAAMj2S,IAAI,GAAkBuwlC,EAAW90mC,GAAI,CACzCyT,MAAO,EAAgB,CACrB+owB,OAAQ/miB,EAAWz1O,EAAIy1O,EAAWh2O,SACjCgtlC,EAAezhG,gBAClBx3gB,QAAQ,EACRzue,EAAGinjC,EAAezpjC,IAAI,OAG5B,EACAk+hC,eAAgB,SAAUjmuB,EAAOwxvB,EAAgBlvO,EAAOwjW,EAAaC,EAAiB/qE,GACpF,GAAK+qE,EAAgB9grC,OAArB,CAQA,IAJA,IACIgtlC,EADsBzgC,EAAeh13B,SAAS,kBACTA,SAAS,aAC9CrsJ,EAAQ,GAEH3qC,EAAI,EAAGA,EAAIugrC,EAAgB9grC,OAAQO,IAC1C,IAAK,IAAI8C,EAAI,EAAGA,EAAIy9qC,EAAgBvgrC,GAAGP,OAAQqD,IAC7C6nC,EAAM1pC,KAAK,IAAI,GAAa,CAC1BygO,MAAOq+8B,GAAiBjjW,EAAO04R,EAAc+qE,EAAgBvgrC,GAAG8C,GAAGu7J,UAKzEm8J,EAAMj2S,IAAI,GAAkBomB,EAAO,CACjCl3B,MAAOg5kC,EAAezhG,eACtBx3gB,QAAQ,EACRzue,EAAGinjC,EAAezpjC,IAAI,OAjBxB,CAmBF,EACAi+hC,UAAW,SAAUhmuB,EAAOwxvB,EAAgBlvO,EAAOwjW,EAAaC,EAAiB/qE,GAC/E,GAAK8qE,EAAY7grC,OAAjB,CAIA,IACIitlC,EADiB1gC,EAAeh13B,SAAS,aACTA,SAAS,aACzC056B,EAAahkB,EAAenqlC,IAAI,SAChCwrzB,EAAY,EAChB2iT,EAAaA,aAAsB7xmC,MAAQ6xmC,EAAa,CAACA,GAQzD,IAPA,IAAIqE,EAAa,GACb3Y,EAASn6lC,KAAKsmC,GAAK,IACnB+pV,GAAaguzB,EAAY,GAAGjihC,MAAQ+97B,EACpC1uvB,EAAKzrW,KAAKgL,IAAIuomC,EAAa,GAAIA,EAAa,IAC5C3mwB,EAAK5sW,KAAK8K,IAAIyomC,EAAa,GAAIA,EAAa,IAC5CxxwB,EAAYgotB,EAAezpjC,IAAI,aAE1BvC,EAAI,EAAGi+H,EAAMqijC,EAAY7grC,OAAQO,GAAKi+H,EAAKj+H,IAAK,CACvD,IAAIq+J,EAAQr+J,IAAMi+H,EAAMqijC,EAAY,GAAGjihC,MAAQiihC,EAAYtgrC,GAAGq+J,MAC1DqnqB,EAAa3X,IAAc2iT,EAAWjxmC,OAC1Cs1mC,EAAWrvS,GAAcqvS,EAAWrvS,IAAe,GACnDqvS,EAAWrvS,GAAYzk0B,KAAK,IAAI,GAAe,CAC7CygO,MAAO,CACLo+B,GAAIg9kB,EAAMh9kB,GACVumG,GAAIy2e,EAAMz2e,GACVqH,GAAIA,EACJvuW,EAAG0vW,EACHo5a,WAAY31Z,EACZ41Z,UAAW7pnB,EAAQ+97B,EACnBp4vB,UAAWA,GAEbwvI,QAAQ,KAEVlhH,GAAaj0N,EAAQ+97B,CACvB,CAIA,IAASp8lC,EAAI,EAAGA,EAAI+0mC,EAAWt1mC,OAAQO,IACrCw6T,EAAMj2S,IAAI,GAAkBwwlC,EAAW/0mC,GAAI,CACzCyT,MAAO,EAAgB,CACrB+oH,KAAMk0+B,EAAW1wmC,EAAI0wmC,EAAWjxmC,SAC/BitlC,EAAe9lH,gBAClBpzf,QAAQ,IAxCZ,CA2CF,GAEF,YCzSA,IAAI,GAAmB,CAAC,WAAY,gBAAiB,YACjD,GAAmB,CAAC,YAAa,YAAa,kBAE9CutsB,GAEJ,SAAUj5zB,GAGR,SAASi5zB,IACP,IAAIj1nC,EAAmB,OAAXg8T,GAAmBA,EAAOnoX,MAAMP,KAAMI,YAAcJ,KAIhE,OAFA0sD,EAAMngD,KAAOo1qC,EAAep1qC,KAC5BmgD,EAAM+jjC,iBAAmB,mBAClB/jjC,CACT,CAgCA,OAxCAkgX,EAAU+0wB,EAAgBj5zB,GAU1Bi5zB,EAAejirC,UAAU4uH,OAAS,SAAUo+7B,EAAiBppF,GAG3D,GAFAtj+B,KAAKo7T,MAAMvtE,YAEN6+zB,EAAgBvpjC,IAAI,QAAzB,CAIA,IAAI6umC,EAAehymC,KAAKiymC,WACpB2vE,EAAe5hrC,KAAKiymC,WAAa,IAAI,GACzCjymC,KAAKo7T,MAAMj2S,IAAIy8pC,GACf,IAAI7S,EAAariH,EAAgBji3B,KAC7BizoB,EAAQqxV,EAAWrxV,MACnBuxV,EAAYvxV,EAAMwxV,eAClBlqG,EAAc+pG,EAAWlqG,iBACzB4pC,EAAmBsgE,EAAWhpG,sBAC9Bs5G,EAAYpQ,EAAUz/G,YAAY,GAClC4mD,EAAe24D,EAAWv/G,YAC1Btu7B,EA4HR,SAAoBw8sB,EAAOgvO,EAAiB2yH,GAC1C,MAAO,CACL1gpC,SAAU,CAAC++yB,EAAMh9kB,GAAIg9kB,EAAMz2e,IAC3B1gP,SAAU84jC,EAAY,IAAMx8qC,KAAKsmC,GACjC6+jC,gBAAiB,EACjBC,eAAgB,EAChBC,cAAe,EACfv+G,YAAa+iE,EAAgB903B,SAAS,aAAaz0L,IAAI,UAEvD45L,GAAI,EAER,CAvIiB8k/B,CAAWnkW,EAAOgvO,EAAiB2yH,GAC5CntE,EAAc,IAAI,GAAYxlD,EAAiBxr7B,GACnD,EAAY,GAAkBgx+B,EAAY/slC,IAAK+slC,GAC/C0vE,EAAaz8pC,IAAI+slC,EAAY3F,YAC7B,GAAwByF,EAAc4vE,EAAcl1H,GACpD,EAAY,IAAkB,SAAUhijC,GAClCgijC,EAAgBvpjC,IAAI,CAACuH,EAAM,WAAaqkqC,EAAWjtkC,MAAM27c,WAC3D,GAAoB/yiB,GAAM1K,KAAKo7T,MAAOsxvB,EAAiBhvO,EAAO2hW,EAAWjpE,EAAcpxC,EAAaypC,EAExG,GAAGzumC,KArBH,CAsBF,EAEA2hrC,EAAep1qC,KAAO,aACfo1qC,CACT,CA1CA,CA0CE,IAEE,GAAsB,CACxBxgJ,UAAW,SAAU/luB,EAAOsxvB,EAAiBhvO,EAAO2hW,EAAWjpE,EAAcpxC,GAC3E,IACIqoB,EADiB3gC,EAAgB903B,SAAS,aACVA,SAAS,aACzCy+C,EAAag32B,EAAelqlC,IAAI,SAChCwrzB,EAAY,EAChBt4kB,EAAaA,aAAsB52O,MAAQ42O,EAAa,CAACA,GAGzD,IAFA,IAAIq/3B,EAAa,GAER90mC,EAAI,EAAGA,EAAIokkC,EAAY3kkC,OAAQO,IAAK,CAC3C,IAAI0l0B,EAAa3X,IAAct4kB,EAAWh2O,OAC1Cq1mC,EAAWpvS,GAAcovS,EAAWpvS,IAAe,GACnDovS,EAAWpvS,GAAYzk0B,KAAK,IAAI,GAAe,CAC7CygO,MAAO,CACLo+B,GAAIg9kB,EAAMh9kB,GACVumG,GAAIy2e,EAAMz2e,GAEVlnW,EAAG8C,KAAK8K,IAAIq3jC,EAAYpkkC,GAAGq+J,MAAO,MAGxC,CAIA,IAASr+J,EAAI,EAAGA,EAAI80mC,EAAWr1mC,OAAQO,IACrCw6T,EAAMj2S,IAAI,GAAkBuwlC,EAAW90mC,GAAI,CACzCyT,MAAO,EAAgB,CACrB+owB,OAAQ/miB,EAAWz1O,EAAIy1O,EAAWh2O,QAClC+8H,KAAM,MACLiw9B,EAAezhG,gBAClBx3gB,QAAQ,IAGd,EACAitjB,eAAgB,SAAUjmuB,EAAOsxvB,EAAiBhvO,EAAO2hW,EAAWjpE,EAAcpxC,EAAaypC,GAC7F,GAAKA,EAAiBpumC,OAAtB,CAQA,IAJA,IACIgtlC,EADsB3gC,EAAgB903B,SAAS,kBACVA,SAAS,aAC9CrsJ,EAAQ,GAEH3qC,EAAI,EAAGA,EAAI6tmC,EAAiBpumC,OAAQO,IAC3C,IAAK,IAAI8C,EAAI,EAAGA,EAAI+qmC,EAAiB7tmC,GAAGP,OAAQqD,IAC9C6nC,EAAM1pC,KAAK,IAAI,GAAe,CAC5BygO,MAAO,CACLo+B,GAAIg9kB,EAAMh9kB,GACVumG,GAAIy2e,EAAMz2e,GACVlnW,EAAG0umC,EAAiB7tmC,GAAG8C,GAAGu7J,UAMlCm8J,EAAMj2S,IAAI,GAAkBomB,EAAO,CACjCl3B,MAAO,EAAgB,CACrB+oH,KAAM,MACLiw9B,EAAezhG,gBAClBx3gB,QAAQ,IAtBV,CAwBF,EACAgtjB,UAAW,SAAUhmuB,EAAOsxvB,EAAiBhvO,EAAO2hW,EAAWjpE,EAAcpxC,GAC3E,GAAKA,EAAY3kkC,OAAjB,CAIA,IACIitlC,EADiB5gC,EAAgB903B,SAAS,aACVA,SAAS,aACzC056B,EAAahkB,EAAenqlC,IAAI,SAChCwrzB,EAAY,EAChB2iT,EAAaA,aAAsB7xmC,MAAQ6xmC,EAAa,CAACA,GAIzD,IAHA,IAAIqE,EAAa,GACbmsE,EAAa98G,EAAY,GAAG/l6B,MAEvBr+J,EAAI,EAAGA,EAAIokkC,EAAY3kkC,OAAQO,IAAK,CAC3C,IAAI0l0B,EAAa3X,IAAc2iT,EAAWjxmC,OAC1Cs1mC,EAAWrvS,GAAcqvS,EAAWrvS,IAAe,GACnDqvS,EAAWrvS,GAAYzk0B,KAAK,IAAI,GAAe,CAC7CygO,MAAO,CACLo+B,GAAIg9kB,EAAMh9kB,GACVumG,GAAIy2e,EAAMz2e,GACVqH,GAAIwz0B,EACJ/hrC,EAAGilkC,EAAYpkkC,GAAGq+J,MAClB4pnB,WAAY,EACZC,SAAoB,EAAVjmxB,KAAKsmC,IAEjBirc,QAAQ,KAEV0tsB,EAAa98G,EAAYpkkC,GAAGq+J,KAC9B,CAIA,IAASr+J,EAAI,EAAGA,EAAI+0mC,EAAWt1mC,OAAQO,IACrCw6T,EAAMj2S,IAAI,GAAkBwwlC,EAAW/0mC,GAAI,CACzCyT,MAAO,EAAgB,CACrB+oH,KAAMk0+B,EAAW1wmC,EAAI0wmC,EAAWjxmC,SAC/BitlC,EAAe9lH,gBAClBpzf,QAAQ,IAlCZ,CAqCF,GAmBF,YC3KA,SAAS,GAAiB4ugB,GACxB,OAAOA,EAAY7/+B,IAAI,UAAY,cAAgB6/+B,EAAY9F,WACjE,CAEA,SAAS,GAAWx/J,EAAOjzoB,GACzB,OAAOA,EAAKktJ,IAAM+lf,EAAM3otB,MAAMo2J,cAChC,CAoOA,SAlOA,SAAwBsxjB,EAAY6mJ,EAASr07B,GAC3C,IAAI8yoC,EAAkB,CAAC,EACnB/rH,EA0HN,SAAsBhC,GAEpB,IAAIqB,EAAa,CAAC,EAClB,EAAYrB,GAAW,SAAUhxE,EAAalooB,GAC5C,IAAItrW,EAAOwz+B,EAAYx+2B,UACnBk5sB,EAAQslK,EAAYjx3B,iBACpBoi8B,EAAWz2O,EAAMwrM,cACjBgsC,EAAU,GAAWx3O,EAAOy2O,GAC5BK,EAAaL,EAAS3E,YACtBnxJ,EAA8B,aAAlB81J,EAAS5njC,KAAsB4njC,EAASM,eAAiB5xjC,KAAKmjH,IAAIwu8B,EAAW,GAAKA,EAAW,IAAMhljC,EAAK+5C,QACpHgsgC,EAAgBF,EAAWH,IAAY,CACzC72J,UAAWA,EACXk9E,cAAel9E,EACfm3J,eAAgB,EAChBC,YAAa,MACbv4sB,IAAK,MACLw4sB,OAAQ,CAAC,GAEPA,EAASH,EAAcG,OAC3BL,EAAWH,GAAWK,EACtB,IAAIJ,EAAU,GAAiBnyE,GAE1B0yE,EAAOP,IACVI,EAAcC,iBAGhBE,EAAOP,GAAWO,EAAOP,IAAY,CACnCp2hC,MAAO,EACPmxI,SAAU,GAEZ,IAAI41pB,EAAW,GAAak9K,EAAY7/+B,IAAI,YAAak75B,GACrDw2J,EAAc,GAAa7xE,EAAY7/+B,IAAI,eAAgBk75B,GAC3D22J,EAAShyE,EAAY7/+B,IAAI,UACzB8xjC,EAAiBjyE,EAAY7/+B,IAAI,kBAEjC2i0B,IAAa4vP,EAAOP,GAASp2hC,QAC/B+myB,EAAWjj0B,KAAKgL,IAAI0njC,EAAch6E,cAAez1K,GACjD4vP,EAAOP,GAASp2hC,MAAQ+myB,EACxByvP,EAAch6E,eAAiBz1K,GAGjC+uP,IAAgBa,EAAOP,GAASjl5B,SAAW2k5B,GACjC,MAAVG,IAAmBO,EAAcr4sB,IAAM83sB,GACrB,MAAlBC,IAA2BM,EAAcE,YAAcR,EACzD,IACA,IAAIzxiC,EAAS,CAAC,EAsDd,OArDA,EAAY6xiC,GAAY,SAAUE,EAAe1J,GAC/CroiC,EAAOqoiC,GAAgB,CAAC,EACxB,IAAI6J,EAASH,EAAcG,OACvBr3J,EAAYk3J,EAAcl3J,UAC1Bo3J,EAAc,GAAaF,EAAcE,YAAap3J,GACtDu3J,EAAgB,GAAaL,EAAcr4sB,IAAK,GAChDq+nB,EAAgBg6E,EAAch6E,cAC9Bi6E,EAAiBD,EAAcC,eAC/BK,GAAat6E,EAAgBk6E,IAAgBD,GAAkBA,EAAiB,GAAKI,GACzFC,EAAYhzjC,KAAK8K,IAAIkojC,EAAW,GAEhC,EAAYH,GAAQ,SAAU51gC,EAAQnN,GACpC,IAAIu9H,EAAWpwH,EAAOowH,SAElBA,GAAYA,EAAW2l5B,IACzB3l5B,EAAWrtK,KAAKgL,IAAIqiK,EAAUqr0B,GAE1Bz77B,EAAO/gB,QACTmxI,EAAWrtK,KAAKgL,IAAIqiK,EAAUpwH,EAAO/gB,QAGvCw88B,GAAiBrr0B,EACjBpwH,EAAO/gB,MAAQmxI,EACfsl5B,IAEJ,IAEAK,GAAat6E,EAAgBk6E,IAAgBD,GAAkBA,EAAiB,GAAKI,GACrFC,EAAYhzjC,KAAK8K,IAAIkojC,EAAW,GAChC,IACI77Y,EADA+7Y,EAAW,EAEf,EAAYL,GAAQ,SAAU51gC,EAAQg7T,GAC/Bh7T,EAAO/gB,QACV+gB,EAAO/gB,MAAQ82hC,GAGjB77Y,EAAal6nB,EACbi2gC,GAAYj2gC,EAAO/gB,OAAS,EAAI62hC,EAClC,IAEI57Y,IACF+7Y,GAAY/7Y,EAAWj7oB,MAAQ62hC,GAGjC,IAAIzzgC,GAAU4zgC,EAAW,EACzB,EAAYL,GAAQ,SAAU51gC,EAAQq1gC,GACpC3xiC,EAAOqoiC,GAAcsJ,GAAW3xiC,EAAOqoiC,GAAcsJ,IAAY,CAC/DhzgC,OAAQA,EACRpjB,MAAO+gB,EAAO/gB,OAEhBojB,GAAUrC,EAAO/gB,OAAS,EAAI62hC,EAChC,GACF,IACOpyiC,CACT,CA9N0Bw+pC,CAAa,GAAc1+M,EAAQi/B,gBAAgB9lL,IAAa,SAAUumK,GAChG,OAAQ1f,EAAQu/B,iBAAiB7f,IAAgBA,EAAYjx3B,kBAA0D,UAAtCix3B,EAAYjx3B,iBAAiBxlH,IAChH,KACA+29B,EAAQq/B,iBAAiBlmL,GAAY,SAAUumK,GAE7C,GAA0C,UAAtCA,EAAYjx3B,iBAAiBxlH,KAAjC,CAIA,IAAIiD,EAAOwz+B,EAAYx+2B,UACnBk5sB,EAAQslK,EAAYjx3B,iBACpBoi8B,EAAWz2O,EAAMwrM,cACjBgsC,EAAU,GAAWx3O,EAAOy2O,GAC5BgB,EAAU,GAAiBnyE,GAC3BizE,EAAmBD,EAAkBd,GAASC,GAC9Ce,EAAeD,EAAiB9zgC,OAChCgmd,EAAc8tjB,EAAiBl3hC,MAC/BsjgC,EAAY3kN,EAAM04O,aAAajC,GAC/BzzzB,EAAKsivB,EAAYjx3B,iBAAiB2uI,GAClCumG,EAAK+7oB,EAAYjx3B,iBAAiBk1O,GAClC+vtB,EAAeh0E,EAAY7/+B,IAAI,iBAAmB,EAClDoylC,EAAcvyG,EAAY7/+B,IAAI,gBAAkB,EACpD4+qC,EAAgB5sH,GAAW4sH,EAAgB5sH,IAAY,GASvD,IARA,IAAIqB,EAAWhnjC,EAAK42iC,aAAa/jB,EAAU1qsB,KACvCmxvB,EAAUt5kC,EAAK42iC,aAAa+N,EAASx8tB,KACrCuuf,EAAU6nO,GAAmBv+iC,EAAMgnjC,GAGnCyrH,EAA+B,WAAjB9tH,EAASx8tB,MAAqBqrpB,EAAY7/+B,IAAI,YAAY,GACxEwzjC,EAAiBt0B,EAAUw0B,YAAY,GAElC/7sB,EAAM,EAAGj8O,EAAMrvH,EAAK+5C,QAASuxT,EAAMj8O,EAAKi8O,IAAO,CACtD,IAAI35W,EAAQqO,EAAKrM,IAAIqzjC,EAAU17sB,GAC3B28sB,EAAYjojC,EAAKrM,IAAI2llC,EAAShuuB,GAC9BxgL,EAAOn5L,GAAS,EAAI,IAAM,IAC1Bu2jC,EAAYf,EAIZzwO,IACG67V,EAAgB5sH,GAASsC,KAC5BsqH,EAAgB5sH,GAASsC,GAAa,CACpC30jC,EAAG6zjC,EACHt3jC,EAAGs3jC,IAMPe,EAAYqqH,EAAgB5sH,GAASsC,GAAWn93B,IAGlD,IAAIg0K,OAAK,EACLvuW,OAAI,EACJ8oxB,OAAa,EACbC,OAAW,EAEf,GAAsB,WAAlBu5Q,EAAU1qsB,IAAkB,CAC9B,IAAIuq1B,EAAa7/I,EAAUw0B,YAAY11jC,GAASw1jC,EAC5Cho1B,EAAQwl1B,EAAS0C,YAAYY,GAE7B50jC,KAAKmjH,IAAIk8jC,GAAclrH,IACzBkrH,GAAcA,EAAa,GAAK,EAAI,GAAKlrH,GAG3C1otB,EAAKoptB,EACL33jC,EAAI23jC,EAAYwqH,EAEhBp5Z,GADAD,EAAal6iB,EAAQun1B,GACG/tjB,EACxB+9U,IAAY67V,EAAgB5sH,GAASsC,GAAWn93B,GAAQv6L,EAC1D,KACK,CACD,IAAIoirC,EAAY9/I,EAAUw0B,YAAY11jC,EAAO8grC,GAAetrH,EACxDr/6B,EAAS686B,EAAS0C,YAAYY,GAE9B50jC,KAAKmjH,IAAIm8jC,GAAa5sF,IACxB4sF,GAAaA,EAAY,GAAK,EAAI,GAAK5sF,GAIzCx1lC,GADAuuW,EAAKh3N,EAAS4+6B,GACL/tjB,EACT0gR,EAAa6uS,EACb5uS,EAAW4uS,EAAYyqH,EAWvBj8V,IAAY67V,EAAgB5sH,GAASsC,GAAWn93B,GAAQwulB,EAC1D,CAEFt5wB,EAAKq5iC,cAAc/tsB,EAAK,CACtBp6G,GAAIA,EACJumG,GAAIA,EACJqH,GAAIA,EACJvuW,EAAGA,EAGH8oxB,YAAaA,EAAahmxB,KAAKsmC,GAAK,IACpC2/uB,UAAWA,EAAWjmxB,KAAKsmC,GAAK,IAQhCy7T,UAAWikb,GAAcC,GAE7B,CA3GA,CA4GF,GACF,ECpHA,IAAIs5Z,GAAuB,CACzBv5Z,WAAY,GACZjkb,WAAW,EACXqstB,YAAa,GACb1uN,UAAW,CACT98uB,OAAQ,IAGR48jC,GAAwB,CAC1BpxH,YAAa,GAGXqxH,GAEJ,SAAU55zB,GAGR,SAAS45zB,IACP,IAAI51nC,EAAmB,OAAXg8T,GAAmBA,EAAOnoX,MAAMP,KAAMI,YAAcJ,KAGhE,OADA0sD,EAAMngD,KAAO+1qC,EAAU/1qC,KAChBmgD,CACT,CAGA,OAVAkgX,EAAU01wB,EAAW55zB,GASrB45zB,EAAU/1qC,KAAO,QACV+1qC,CACT,CAZA,CAYE,ICvCK,SAAS,GAAOt1H,EAAW5shB,GAChCA,EAAMA,GAAO,CAAC,EACd,IAAIgvd,EAAS49D,EAAUj77B,iBACnB04E,EAAOui3B,EAAUvi3B,KACjBvpE,EAAS,CAAC,EACV0m+B,EAAen95B,EAAK9rK,SACpB609B,EAAS/ozB,EAAK+ozB,OACd9/5B,EAAO075B,EAAOkoE,UACduwC,EAAY,CAACn0gC,EAAKzvF,EAAGyvF,EAAKzvF,EAAIyvF,EAAK30D,MAAO20D,EAAK1wF,EAAG0wF,EAAK1wF,EAAI0wF,EAAK10D,QAChE+7jC,EAAc,CAChBpyb,WAAY,CACV7poB,IAAK+okC,EAAU,GACf/ngC,OAAQ+ngC,EAAU,IAEpBr+jB,SAAU,CACR3qgB,KAAMgpkC,EAAU,GAChBhogC,MAAOgogC,EAAU,KAGrB3m+B,EAAOviG,SAAW,CAAY,aAAX609B,EAAwBunG,EAAYvxjB,SAASo+jB,GAAgBC,EAAU,GAAe,eAAXr0G,EAA0BunG,EAAYpyb,WAAWi/b,GAAgBC,EAAU,IAKzK3m+B,EAAO3a,SAAW1jH,KAAKsmC,GAAK,EAJpB,CACNw/nB,WAAY,EACZn/H,SAAU,GAEsBgqd,GAOlCty3B,EAAO8m+B,eAAiB9m+B,EAAO+m+B,cAAgB/m+B,EAAOgn+B,cANnC,CACjBppkC,KAAM,EACNghE,OAAQ,EACRD,MAAO,EACPhhE,MAAO,GAE0E+okC,GAE/E56C,EAAU7pjC,IAAI,CAAC,WAAY,aAC7B+9H,EAAO+m+B,eAAiB/m+B,EAAO+m+B,eAG7B,GAAgB7nkB,EAAI+nkB,YAAan7C,EAAU7pjC,IAAI,CAAC,YAAa,cAC/D+9H,EAAO8m+B,gBAAkB9m+B,EAAO8m+B,gBAGlC,IAAIlgU,EAAgB1nQ,EAAI36a,OAIxB,OAHiB,MAAjBqirB,IAA0BA,EAAgBklR,EAAU7pjC,IAAI,CAAC,YAAa,YACtE+9H,EAAO4mqB,cAAiC,QAAjB8/T,GAA0B9/T,EAAgBA,EACjE5mqB,EAAO67D,GAAK,EACL77D,CACT,CCxCA,IAAI,GAAmB,CAAC,WAAY,gBAAiB,YACjD,GAAmB,CAAC,YAAa,aAEjCqhjC,GAEJ,SAAU75zB,GAGR,SAAS65zB,IACP,IAAI71nC,EAAmB,OAAXg8T,GAAmBA,EAAOnoX,MAAMP,KAAMI,YAAcJ,KAIhE,OAFA0sD,EAAMngD,KAAOg2qC,EAAeh2qC,KAC5BmgD,EAAM+jjC,iBAAmB,oBAClB/jjC,CACT,CA2BA,OAnCAkgX,EAAU21wB,EAAgB75zB,GAU1B65zB,EAAe7irC,UAAU4uH,OAAS,SAAU0+7B,EAAW1pF,EAASr07B,EAAKna,GACnE,IAAIsmS,EAAQp7T,KAAKo7T,MACjBA,EAAMvtE,YACN,IAAImk3B,EAAehymC,KAAKiymC,WACxBjymC,KAAKiymC,WAAa,IAAI,GACtB,IAAI/w+B,EAAS,GAAwB8r7B,GACjCklD,EAAc,IAAI,GAAYllD,EAAW9r7B,GAC7C,EAAY,GAAkBgx+B,EAAY/slC,IAAK+slC,GAC/C92yB,EAAMj2S,IAAInlB,KAAKiymC,YACf72yB,EAAMj2S,IAAI+slC,EAAY3F,YACtB,EAAY,IAAkB,SAAU7hmC,GAClCsijC,EAAU7pjC,IAAI,CAACuH,EAAM,UACvB,GAAoBA,GAAM1K,KAAMA,KAAKo7T,MAAOp7T,KAAKiymC,WAAYjlD,EAEjE,GAAGhtjC,MACH,GAAwBgymC,EAAchymC,KAAKiymC,WAAYjlD,GAEvDtksB,EAAOhpX,UAAU4uH,OAAO1uH,KAAKI,KAAMgtjC,EAAW1pF,EAASr07B,EAAKna,EAC9D,EAEAytpC,EAAe7irC,UAAUmzB,OAAS,WAChC++kC,GAA0B5xmC,KAC5B,EAEAuirC,EAAeh2qC,KAAO,aACfg2qC,CACT,CArCA,CAqCE,IAEE,GAAsB,CACxBphJ,UAAW,SAAUiwE,EAAUh2yB,EAAOkue,EAAW0jR,GAC/C,IAAIvi3B,EAAOui3B,EAAUvi3B,KAErB,IAAIA,EAAK3oG,MAAM27c,UAAf,CAIA,IAAI60jB,EAAiBtlD,EAAUp13B,SAAS,aACpCy15B,EAAiBilB,EAAe166B,SAAS,aACzCy+C,EAAag32B,EAAelqlC,IAAI,SACpCkzO,EAAaA,aAAsB52O,MAAQ42O,EAAa,CAACA,GAYzD,IAXA,IAAIg8F,EAAYg7wB,EAAelqlC,IAAI,SAC/B6mmC,EAAWh9C,EAAUj77B,iBAAiBul8B,UACtC5thB,EAAej/V,EAAKi/V,eACpBgskB,EAAa,GACb/mT,EAAY,EACZq2Q,EAAcv63B,EAAKo63B,eAAe,CACpCC,UAAWwtC,IAETjy3B,EAAK,GACL0jB,EAAK,GAEAnjQ,EAAI,EAAGA,EAAIokkC,EAAY3kkC,SAAUO,EAAG,CAC3C,IAAIy0lC,EAAY5q5B,EAAKms3B,cAAcoO,EAAYpkkC,GAAGq+J,OAE9CyqY,GACFrpT,EAAG,GAAKg12B,EACRh12B,EAAG,GAAK2p3B,EAAShnmC,EACjB+gQ,EAAG,GAAKsx1B,EACRtx1B,EAAG,GAAKim2B,EAAShnmC,EAAIgnmC,EAAShrkC,SAE9BqhN,EAAG,GAAK2p3B,EAAS/lmC,EACjBo8O,EAAG,GAAKg12B,EACRtx1B,EAAG,GAAKim2B,EAAS/lmC,EAAI+lmC,EAASjrkC,MAC9BglO,EAAG,GAAKsx1B,GAGV,IAAI/1iC,EAAO,IAAI,GAAa,CAC1BgjL,MAAO,CACLslF,GAAIvnE,EAAG,GACP3uD,GAAI2uD,EAAG,GACPvjD,GAAIinE,EAAG,GACPtsI,GAAIssI,EAAG,IAETqwO,QAAQ,IAEV,GAA6B90b,EAAKgjL,MAAO+vG,GACzC,IAAIi0f,EAAa3X,IAAct4kB,EAAWh2O,OAC1Cq1mC,EAAWpvS,GAAcovS,EAAWpvS,IAAe,GACnDovS,EAAWpvS,GAAYzk0B,KAAKy9C,EAC9B,CAEA,IAAI6yrB,EAAYk7W,EAAezhG,aAAa,CAAC,UAE7C,IAAShr/B,EAAI,EAAGA,EAAI80mC,EAAWr1mC,SAAUO,EACvCw6T,EAAMj2S,IAAI,GAAkBuwlC,EAAW90mC,GAAI,CACzCyT,MAAO,EAAgB,CACrB+owB,OAAQ/miB,EAAWz1O,EAAIy1O,EAAWh2O,SACjC8xuB,GACH/9P,QAAQ,IAtDZ,CAyDF,EACAgtjB,UAAW,SAAUgwE,EAAUh2yB,EAAOkue,EAAW0jR,GAC/CmkD,GAA4BC,EAAU9nU,EAAW0jR,EAAWA,EAC9D,GAEF,YClHA,IAAIw1H,GAEJ,SAAU95zB,GAGR,SAAS85zB,IACP,IAAI91nC,EAAmB,OAAXg8T,GAAmBA,EAAOnoX,MAAMP,KAAMI,YAAcJ,KAGhE,OADA0sD,EAAMngD,KAAOi2qC,EAAgBj2qC,KACtBmgD,CACT,CAgDA,OAvDAkgX,EAAU41wB,EAAiB95zB,GAS3B85zB,EAAgB9irC,UAAUohkC,iBAAmB,WAC3C,OAAO9gkC,IACT,EAEAwirC,EAAgBj2qC,KAAO,aACvBi2qC,EAAgBhuL,WAAa,MAC7BguL,EAAgB5hpB,cAAgB,CAC9B/hgB,KAAM,KACNC,IAAK,KACL+gE,MAAO,KACPC,OAAQ,KACRvzF,KAAM,QACNoyB,SAAU,SACV609B,OAAQ,aACRp1F,SAAU,CACRn7kB,MAAM,EACNkvZ,UAAW,CACTpzsB,MAAO,EACPxyB,KAAM,UAMV8xI,QAAS,CACP4kM,MAAM,GAERwhxB,SAAU,CACRxhxB,MAAM,EACN5iV,OAAQ,EACR8xuB,UAAW,CACTpzsB,MAAO,IAGXwj0B,UAAW,CACTt/gB,MAAM,EACNi/I,SAAU,QAEZi/jB,UAAW,CACTl+sB,MAAM,EACNkvZ,UAAW,CACT5luB,KAAM,SACNq/H,QAAS,MAIR42iC,CACT,CAzDA,CAyDE91hC,IAEFm9yB,EAAM24O,GAAiB3hH,GAAqBnhkC,WAC5C,YChEA,IAAI+irC,GAEJ,SAAU/5zB,GAGR,SAAS+5zB,EAAW9q1B,EAAK71P,EAAOulgC,EAAa9/Q,EAAU5ozB,GACrD,IAAI+tB,EAAQg8T,EAAO9oX,KAAKI,KAAM23V,EAAK71P,EAAOulgC,IAAgBrnmC,KAI1D,OAFA0sD,EAAMngD,KAAOg70B,GAAY,QACzB76xB,EAAM/tB,SAAWA,GAAY,SACtB+tB,CACT,CAeA,OAvBAkgX,EAAU61wB,EAAY/5zB,GActB+5zB,EAAW/irC,UAAUgqiB,aAAe,WAClC,IAAI/qgB,EAAW3+B,KAAK2+B,SACpB,MAAoB,QAAbA,GAAmC,WAAbA,CAC/B,EAEA8jpC,EAAW/irC,UAAUklkC,YAAc,SAAUzv7B,EAAOujN,GAClD,OAAO14V,KAAK+xH,iBAAiB6y8B,YAAYzv7B,GAAO,EAClD,EAEOstiC,CACT,CAzBA,CAyBE,IAEF,YCxBO,IAAIC,GAAmB,CAAC,UAK3BC,GAEJ,WACE,SAASA,EAAO31H,EAAW1pF,EAASr07B,GAClCjvC,KAAKuM,KAAO,SACZvM,KAAKszK,UAAY,SAKjBtzK,KAAK04J,WAAagqhC,GAClB1irC,KAAKopmC,oBAAqB,EAC1BppmC,KAAK+0H,MAAQi47B,EAEbhtjC,KAAKyy9B,MAAMu6F,EAAW1pF,EAASr07B,EACjC,CAqKA,OA/JA0zoC,EAAOjjrC,UAAU+y9B,MAAQ,SAAUu6F,EAAW1pF,EAASr07B,GACrD,IAAI0oT,EAAM33V,KAAKszK,UACXm3B,EAAO,IAAI,GAAWktJ,EAAK,GAA8Bq1tB,GAAY,CAAC,EAAG,GAAIA,EAAU7pjC,IAAI,QAAS6pjC,EAAU7pjC,IAAI,aAClHkpjC,EAA2B,aAAd5h3B,EAAKl+L,KACtBk+L,EAAK+53B,OAASnY,GAAcW,EAAU7pjC,IAAI,eAC1CsnM,EAAK4zjB,QAAU2uT,EAAU7pjC,IAAI,WAC7BsnM,EAAK+ozB,OAASw5D,EAAU7pjC,IAAI,UAC5B6pjC,EAAUvi3B,KAAOA,EACjBA,EAAK11E,MAAQi47B,EACbvi3B,EAAK14E,iBAAmB/xH,KACxBA,KAAK4irC,MAAQn4+B,CACf,EAMAk4+B,EAAOjjrC,UAAU6uE,OAAS,SAAU+05B,EAASr07B,GAC3Cq07B,EAAQyf,YAAW,SAAUC,GAC3B,GAAIA,EAAYjx3B,mBAAqB/xH,KAAM,CACzC,IAAIo3zB,EAAS4rL,EAAYx+2B,UACzB,EAAK4yrB,EAAO0vN,iBAAiB9mhC,KAAKszK,YAAY,SAAUqkL,GACtD33V,KAAK4irC,MAAM9glC,MAAMyt9B,oBAAoBn4P,EAAQz/d,EAC/C,GAAG33V,MACH,GAA2BA,KAAK4irC,MAAM9glC,MAAO9hG,KAAK4irC,MAAM7tjC,MAC1D,CACF,GAAG/0H,KACL,EAMA2irC,EAAOjjrC,UAAUmvH,OAAS,SAAUm+7B,EAAW/9gC,GAC7CjvC,KAAK6s+B,MAAQknB,GAAc,CACzBl19B,KAAMmuhC,EAAU7pjC,IAAI,QACpB27B,IAAKkuhC,EAAU7pjC,IAAI,OACnB08F,MAAOmt9B,EAAU7pjC,IAAI,SACrB28F,OAAQkt9B,EAAU7pjC,IAAI,UACtB47B,MAAOiuhC,EAAU7pjC,IAAI,SACrB67B,OAAQguhC,EAAU7pjC,IAAI,WACrB,CACD47B,MAAOkQ,EAAIk8L,WACXnsM,OAAQiQ,EAAI+rI,cAGdh7K,KAAK6irC,aACP,EAEAF,EAAOjjrC,UAAU43jC,QAAU,WACzB,OAAOt3jC,KAAK6s+B,KACd,EAEA81M,EAAOjjrC,UAAUmjrC,YAAc,WAC7B,IAAInvlC,EAAO1zF,KAAK6s+B,MACZpiyB,EAAOzqM,KAAK4irC,MACZl5oB,EAAej/V,EAAKi/V,eACpBn/X,EAASm/X,EAAe,CAAC,EAAGh2c,EAAK30D,OAAS,CAAC,EAAG20D,EAAK10D,QACnD87U,EAAMrwK,EAAK4zjB,QAAU,EAAI,EAC7B5zjB,EAAKgl3B,UAAUll5B,EAAOuwM,GAAMvwM,EAAO,EAAIuwM,IAEvC96W,KAAK8irC,qBAAqBr4+B,EAAMi/V,EAAeh2c,EAAKzvF,EAAIyvF,EAAK1wF,EAC/D,EAEA2/qC,EAAOjjrC,UAAUojrC,qBAAuB,SAAUr4+B,EAAM0/5B,GACtD,IAAI31C,EAAa/p3B,EAAK+k3B,YAClBuzH,EAAYvuH,EAAW,GAAKA,EAAW,GACvC9qhB,EAAej/V,EAAKi/V,eACxBj/V,EAAKms3B,cAAgBlthB,EAAe,SAAUzqY,GAC5C,OAAOA,EAAQkr8B,CACjB,EAAI,SAAUlr8B,GACZ,OAAO8jhC,EAAY9jhC,EAAQkr8B,CAC7B,EACA1/5B,EAAK+75B,aAAe98jB,EAAe,SAAUzqY,GAC3C,OAAOA,EAAQkr8B,CACjB,EAAI,SAAUlr8B,GACZ,OAAO8jhC,EAAY9jhC,EAAQkr8B,CAC7B,CACF,EAMAw4E,EAAOjjrC,UAAUsh3B,QAAU,WACzB,OAAOhh3B,KAAK4irC,KACd,EAMAD,EAAOjjrC,UAAUwphC,YAAc,WAC7B,OAAOlphC,KAAK4irC,KACd,EAEAD,EAAOjjrC,UAAU482B,QAAU,WACzB,MAAO,CAACt82B,KAAK4irC,MACf,EAEAD,EAAOjjrC,UAAU+rmC,eAAiB,WAChC,MAAO,CACLC,SAAU,CAAC1rmC,KAAKgh3B,WAEhB2qP,UAAW,GAEf,EAMAg3E,EAAOjjrC,UAAUm1iC,aAAe,SAAU1/5B,GACxC,IAAIzhD,EAAO1zF,KAAKs3jC,UACZ7s3B,EAAOzqM,KAAKgh3B,UAGhB,MAAe,eAFFv2qB,EAAK+ozB,OAGT/ozB,EAAKmpwB,QAAQnpwB,EAAK+75B,aAAarx9B,EAAM,MAAQA,EAAM,IAAMzhD,EAAK1wF,GAAKmyI,EAAM,IAAMzhD,EAAK1wF,EAAI0wF,EAAK10D,OAE7FyrK,EAAKmpwB,QAAQnpwB,EAAK+75B,aAAarx9B,EAAM,MAAQA,EAAM,IAAMzhD,EAAK1wF,GAAKmyI,EAAM,IAAMzhD,EAAK1wF,EAAI0wF,EAAK10D,MAExG,EAEA2jpC,EAAOjjrC,UAAUklkC,YAAc,SAAUzv7B,GACvC,IAAIs1D,EAAOzqM,KAAKgh3B,UAChB,MAAO,CAACv2qB,EAAKk63B,YAAYl63B,EAAK+75B,aAAarx9B,EAAsB,eAAhBs1D,EAAK+ozB,OAA0B,EAAI,KACtF,EAOAmvL,EAAOjjrC,UAAUi4jC,YAAc,SAAUj64B,GACvC,IAAI+sB,EAAOzqM,KAAKgh3B,UACZttxB,EAAO1zF,KAAKs3jC,UACZnrjC,EAAK,GACL2uW,EAAsB,eAAhBrwK,EAAK+ozB,OAA0B,EAAI,EAQ7C,OANI910B,aAAej+K,QACjBi+K,EAAMA,EAAI,IAGZvxK,EAAG2uW,GAAOrwK,EAAKms3B,cAAcns3B,EAAKos3B,aAAan54B,IAC/CvxK,EAAG,EAAI2uW,GAAe,IAARA,EAAYpnR,EAAK1wF,EAAI0wF,EAAK10D,OAAS,EAAI00D,EAAKzvF,EAAIyvF,EAAK30D,MAAQ,EACpE5yB,CACT,EAEAw2qC,EAAOjjrC,UAAUg1iC,eAAiB,SAAUpxE,EAASc,EAAQjj+B,GAE3D,OADe,GAAYij+B,KACPpk+B,KAAOA,KAAK23jC,YAAYx2jC,GAAS,IACvD,EAEAwhrC,EAAOjjrC,UAAUi1iC,iBAAmB,SAAUrxE,EAASc,EAAQxs2B,GAE7D,OADe,GAAYws2B,KACPpk+B,KAAOA,KAAK4kkC,YAAYht8B,GAAS,IACvD,EAEO+qjC,CACT,CAnLA,GAqLA,SAAS,GAAYv+M,GACnB,IAAI4e,EAAc5e,EAAO4e,YACrBggM,EAAc5+M,EAAOooF,gBACzB,OAAOw2H,GAAeA,EAAYjxjC,kBAAoBix3B,GAAeA,EAAYjx3B,gBACnF,CAEA,YC1KA,GAJoB,CAClB7xH,OAnBF,SAAgBoj+B,EAASr07B,GACvB,IAAIg0oC,EAAU,GAcd,OAbA3/M,EAAQwe,cAAc,cAAc,SAAUkrE,EAAWlysB,GACvD,IAAIs0oB,EAAS,IAAI,GAAO49D,EAAW1pF,EAASr07B,GAC5Cmg9B,EAAO1k/B,KAAO,UAAYowW,EAC1Bs0oB,EAAOvg4B,OAAOm+7B,EAAW/9gC,GACzB+9gC,EAAUj77B,iBAAmBq93B,EAC7B6zL,EAAQphrC,KAAKut/B,EACf,IACA9rB,EAAQyf,YAAW,SAAUC,GAC3B,GAA4C,eAAxCA,EAAY7/+B,IAAI,oBAAsC,CACxD,IAAIqpjC,EAAkBxpE,EAAY4S,uBAAuB,aAAcrxB,IAAkB1z0B,OAAO,GAChGmy1B,EAAYjx3B,iBAAmBy67B,GAAmBA,EAAgBz67B,gBACpE,CACF,IACOkxjC,CACT,EAIEvqhC,WAAYgqhC,IC1Bd,IAAIQ,GAAK,CAAC,IAAK,KACXC,GAAK,CAAC,QAAS,UAEfC,GAEJ,SAAU16zB,GAGR,SAAS06zB,IACP,OAAkB,OAAX16zB,GAAmBA,EAAOnoX,MAAMP,KAAMI,YAAcJ,IAC7D,CAwEA,OA5EA4sa,EAAUw2wB,EAAmB16zB,GAU7B06zB,EAAkB1jrC,UAAU+1qC,aAAe,SAAUpL,EAAUlpqC,EAAO6rjC,EAAWsjD,EAAkBrhkC,GACjG,IAAIw7J,EAAOui3B,EAAUvi3B,KACjBy4yB,EAAWz4yB,EAAK14E,iBAChB22hC,EAAcvhD,GAAgBjkH,EAAU,EAAImgM,GAAiB54+B,IAC7Duu+B,EAAa91L,EAASy0E,YAAYx2jC,GAAO,GACzC82qC,EAAkB3nE,EAAiBntmC,IAAI,QAE3C,GAAI80qC,GAAuC,SAApBA,EAA4B,CACjD,IAAIgB,EAAU,GAAwB3oE,GAClCkmE,EAAgB,GAAoByB,GAAiBxt+B,EAAMuu+B,EAAYtwB,GAC3E8tB,EAAcniqC,MAAQ4kqC,EACtB5O,EAASqL,WAAac,EAAcjqqC,KACpC89pC,EAASnvrB,QAAUs7rB,CACrB,CAGA,GACAr1qC,EAAOkpqC,EAFU,GAAwBr9G,GAEZA,EAAWsjD,EAAkBrhkC,EAC5D,EAMAm0oC,EAAkB1jrC,UAAUy3qC,mBAAqB,SAAUh2qC,EAAO6rjC,EAAWsjD,GAC3E,IAAI8e,EAAa,GAAwBpiE,EAAW,CAClDm7C,aAAa,IAGfinB,EAAW1hB,YAAc4C,EAAiBntmC,IAAI,CAAC,SAAU,WACzD,IAAIw7B,EAAW,GAAkCquhC,EAAUvi3B,KAAMtpM,EAAOiunC,GACxE,MAAO,CACLnrnC,EAAG06B,EAAS,GACZ37B,EAAG27B,EAAS,GACZ4nF,SAAU6ogC,EAAW7ogC,UAAY6ogC,EAAWpnB,eAAiB,EAAInlmC,KAAKsmC,GAAK,GAE/E,EAMAi6oC,EAAkB1jrC,UAAUi3qC,sBAAwB,SAAU/ziC,EAAW7c,EAAOin8B,EAAWsjD,GACzF,IAAI7l6B,EAAOui3B,EAAUvi3B,KACjBy4yB,EAAWz4yB,EAAK14E,iBAChBqq4B,EAAWinL,GAAiB54+B,GAC5B+p3B,EAAa2yC,GAAgBjkH,EAAUkZ,GACvC+8K,EAAe,CAACv2iC,EAAU3+H,EAAG2+H,EAAU5/H,GAC3Cm2qC,EAAa/8K,IAAar24B,EAAMq24B,GAChC+8K,EAAa/8K,GAAYv5/B,KAAKgL,IAAI2mjC,EAAW,GAAI2kH,EAAa/8K,IAC9D+8K,EAAa/8K,GAAYv5/B,KAAK8K,IAAI6mjC,EAAW,GAAI2kH,EAAa/8K,IAC9D,IAAIssJ,EAAcvhD,GAAgBjkH,EAAU,EAAIkZ,GAC5Cg9K,GAAoB1wB,EAAY,GAAKA,EAAY,IAAM,EACvD+uB,EAAc,CAAC2B,EAAkBA,GAErC,OADA3B,EAAYr7K,GAAY+8K,EAAa/8K,GAC9B,CACLn4/B,EAAGk1qC,EAAa,GAChBn2qC,EAAGm2qC,EAAa,GAChB5yjC,SAAUqc,EAAUrc,SACpBkxjC,YAAaA,EACbC,cAAe,CACbvkc,cAAe,UAGrB,EAEOiwc,CACT,CA9EA,CA8EE,IAEE,GAAsB,CACxB9joC,KAAM,SAAUmrJ,EAAMuu+B,EAAYtwB,GAEhC,MAAO,CACLn8oC,KAAM,OACNgp+B,kBAAkB,EAClBjzwB,MAJgB,GAAyB,CAAC028B,EAAYtwB,EAAY,IAAK,CAACswB,EAAYtwB,EAAY,IAAK26B,GAAiB54+B,IAM1H,EACA38E,OAAQ,SAAU28E,EAAMuu+B,EAAYtwB,GAClC,IAAIrqP,EAAY5ztB,EAAKgq3B,eACjBjiiB,EAAOk2nB,EAAY,GAAKA,EAAY,GACxC,MAAO,CACLn8oC,KAAM,OACN+1N,MAAO,GAAyB,CAAC028B,EAAa36Q,EAAY,EAAGqqP,EAAY,IAAK,CAACrqP,EAAW7rY,GAAO6wpB,GAAiB54+B,IAEtH,GAGF,SAAS44+B,GAAiB54+B,GACxB,OAAOA,EAAKi/V,eAAiB,EAAI,CACnC,CAEA,SAASy9jB,GAAgBjkH,EAAUkZ,GACjC,IAAI1o6B,EAAOwv5B,EAASo0E,UACpB,MAAO,CAAC5j+B,EAAKwvlC,GAAG9mL,IAAY1o6B,EAAKwvlC,GAAG9mL,IAAa1o6B,EAAKyvlC,GAAG/mL,IAC3D,CAEA,YC1GA,IAAIknL,GAEJ,SAAU56zB,GAGR,SAAS46zB,IACP,IAAI52nC,EAAmB,OAAXg8T,GAAmBA,EAAOnoX,MAAMP,KAAMI,YAAcJ,KAGhE,OADA0sD,EAAMngD,KAAO+2qC,EAAW/2qC,KACjBmgD,CACT,CAGA,OAVAkgX,EAAU02wB,EAAY56zB,GAStB46zB,EAAW/2qC,KAAO,SACX+2qC,CACT,CAZA,CAYE,IC+EF,SAASC,GAA8BzzqC,EAAQmhK,GAE7C,IACIuygC,EADA3n8B,EAAW/rO,EAAO+rO,SASK,KAHzB2n8B,EAHG,GAAe3n8B,GAGJA,EAFA/rO,EAAO+rO,SAAW,CAACA,EAAUA,IAK7Bx7O,SACdmjrC,EAAY,GAAKA,EAAY,IAG/B,IAAI7uL,EAAa,EAAW,CAAC,EAAG,IAAI,SAAUG,GAQ5C,O7UyMG,SAAwBj37B,EAAQi37B,GACrC,OAAqC,MAA9Bj37B,EAAOy17B,GAASwB,GAAO,KAA6C,MAA9Bj37B,EAAOy17B,GAASwB,GAAO,KAA6C,MAA9Bj37B,EAAOy17B,GAASwB,GAAO,GAC5G,C6U/MQ2uL,CAAexygC,EAAK6j1B,KACtB0uL,EAAY1uL,GAAS,QAGM,MAAtB0uL,EAAY1uL,IAAyC,SAAvB0uL,EAAY1uL,EACnD,IACAL,GAAiB3k/B,EAAQmhK,EAAK,CAC5B1kK,KAAM,MACNoo/B,WAAYA,GAEhB,CAEA,SAhIA,SAAUjsoB,GAGR,SAASg7zB,IACP,IAAIh3nC,EAAmB,OAAXg8T,GAAmBA,EAAOnoX,MAAMP,KAAMI,YAAcJ,KAGhE,OADA0sD,EAAMngD,KAAOm3qC,EAAcn3qC,KACpBmgD,CACT,CAsFA,OA7FAkgX,EAAU82wB,EAAeh7zB,GAazBg7zB,EAAchkrC,UAAUgxD,KAAO,SAAUmN,EAAQghe,EAAaykc,GAC5D,IAAIgyB,EAAsBJ,GAAgBr37B,GAE1C6qT,EAAOhpX,UAAUgxD,KAAKnwD,MAAMP,KAAMI,WAElCmjrC,GAA8B1lnC,EAAQy37B,EACxC,EAMAouL,EAAchkrC,UAAUus/B,YAAc,SAAUpu7B,GAC9C6qT,EAAOhpX,UAAUus/B,YAAY1r/B,MAAMP,KAAMI,WAEzCmjrC,GAA8BvjrC,KAAK69D,OAAQA,EAC7C,EAEA6lnC,EAAchkrC,UAAUikrC,YAAc,WAEpC,OAAO3jrC,KAAK69D,OAAOg+K,QACrB,EAEA6n8B,EAAcn3qC,KAAO,WACrBm3qC,EAAc9ipB,cAAgB,CAE5Bj7hB,EAAG,EACHk5B,KAAM,GACNC,IAAK,GACL+8M,SAAU,GAEV23wB,OAAQ,aAER2tC,UAAW,CACTl+sB,MAAM,EACNkvZ,UAAW,CACT5knB,MAAO,OACPxuF,MAAO,EACPxyB,KAAM,UAIVg4+B,UAAW,CACTh33B,MAAO,OACPiq3B,YAAa,EACbl/nB,YAAa,QAGf0prB,SAAU,CACR/+sB,MAAM,EACN2g2B,SAAU,EAEVjlpC,SAAU,QACV8gV,OAAQ,MACRlyP,MAAO,QAGT006B,WAAY,CACVh/sB,MAAM,EAENtkT,SAAU,QACV8gV,OAAQ,EAER8ka,MAAO,SACPn/N,UAAW,KACX73b,MAAO,QAGT206B,UAAW,CACTj/sB,MAAM,EAENtkT,SAAU,KACV8gV,OAAQ,GACR2lM,UAAW,KACX73b,MAAO,OACPo3H,WAAY,aACZC,WAAY,SACZH,SAAU,KAGPi/7B,CACT,CA/FA,CA+FEh3hC,IC7FF,IAAIm3hC,GAEJ,SAAUn7zB,GAGR,SAASm7zB,IACP,IAAIn3nC,EAAmB,OAAXg8T,GAAmBA,EAAOnoX,MAAMP,KAAMI,YAAcJ,KAGhE,OADA0sD,EAAMngD,KAAOs3qC,EAAat3qC,KACnBmgD,CACT,CAkZA,OAzZAkgX,EAAUi3wB,EAAcn7zB,GASxBm7zB,EAAankrC,UAAU4uH,OAAS,SAAUw1jC,EAAexgN,EAASr07B,GAChE,IAAImsR,EAAQp7T,KAAKo7T,MACjBA,EAAMvtE,YACN,IAAIq1vB,EAAW4gM,EAAc/xjC,iBAEzBgyjC,EAAY7gM,EAASosL,eACrB97K,EAAStQ,EAASmuI,YAElB2yD,EAAc1gN,EAAQgqB,iBAE1Btt/B,KAAKikrC,eAAeH,EAAeC,EAAW3o3B,GAG9Cp7T,KAAKkkrC,aAAaJ,EAAeC,EAAWvwL,EAAQp4rB,GAEpDp7T,KAAKmkrC,gBAAgBL,EAAeC,EAAWvwL,EAAQp4rB,GAEvDp7T,KAAKokrC,iBAAiBN,EAAeE,EAAaxwL,EAAQp4rB,GAE1Dp7T,KAAKqkrC,gBAAgBP,EAAeE,EAAaD,EAAWvwL,EAAQp4rB,EACtE,EAGAyo3B,EAAankrC,UAAUukrC,eAAiB,SAAUH,EAAeC,EAAW3o3B,GAM1E,IALA,IAAI8nrB,EAAW4gM,EAAc/xjC,iBACzBuyjC,EAAqBR,EAAcls/B,SAAS,aAAam0zB,eACzDrixB,EAAKw5wB,EAAS31Y,eACdg3kB,EAAKrhM,EAASssL,gBAET5uqC,EAAImjrC,EAAUv9oC,MAAMqf,KAAMjlD,GAAKmjrC,EAAUt9oC,IAAIof,KAAMjlD,EAAIsi/B,EAASshM,YAAY5jrC,EAAG,GAAGilD,KAAM,CAC/F,IAAIsvF,EAAQ+t2B,EAASs6K,WAAW,CAAC58pC,IAAI,GAAO6jrC,GAExC/wlC,EAAO,IAAI,GAAa,CAC1B4uI,MAAO,CACLr+N,EAAGkxI,EAAM,GACTnyI,EAAGmyI,EAAM,GACTp2G,MAAO2qM,EACP1qM,OAAQulpC,GAEVljiC,OAAQ,UACRhtI,MAAOiwqC,IAETlp3B,EAAMj2S,IAAIuuE,EACZ,CACF,EAGAmwlC,EAAankrC,UAAUwkrC,aAAe,SAAUJ,EAAeC,EAAWvwL,EAAQp4rB,GAChF,IAAIh5T,EAAOpC,KACPkj/B,EAAW4gM,EAAc/xjC,iBACzBs79B,EAAiBy2F,EAAcls/B,SAAS,CAAC,YAAa,cAAcg0zB,eACpE3oqB,EAAO6g2B,EAAc3grC,IAAI,CAAC,YAAa,SACvCkvU,EAAYg7wB,EAAeh7wB,UAC/BryU,KAAK0krC,UAAY,GACjB1krC,KAAK2krC,UAAY,GACjB3krC,KAAK4krC,iBAAmB,GACxB5krC,KAAK6krC,gBAAkB,GAGvB,IAFA,IAAIjB,EAAWG,EAAUv9oC,MAEhB5lC,EAAI,EAAGgjrC,EAAS/9nC,MAAQk+nC,EAAUt9oC,IAAIof,KAAMjlD,IAAK,CACxDkkrC,EAAUlB,EAASmB,cAET,IAANnkrC,IACFgjrC,EAAW1gM,EAAS8hM,YAAYjB,EAAUv9oC,MAAMxjC,EAAI,IAAM+grC,EAAUv9oC,MAAMpjC,IAG5E,IAAIiyC,EAAOuuoC,EAASvuoC,KACpBA,EAAK6ktB,SAAS7ktB,EAAK6ye,WAAa,GAChC07pB,EAAW1gM,EAAS8hM,YAAY3voC,EAClC,CAIA,SAASyvoC,EAAUzvoC,GACjBjzC,EAAKwirC,iBAAiB/irC,KAAKqh/B,EAAS8hM,YAAY3voC,IAEhDjzC,EAAKyirC,gBAAgBhjrC,KAAKqh/B,EAASs6K,WAAW,CAACnonC,IAAO,GAAOovoC,IAE7D,IAAIn5oC,EAASlpC,EAAK6irC,wBAAwBnB,EAAezuoC,EAAMm+8B,GAE/Dpx/B,EAAKsirC,UAAU7irC,KAAKypC,EAAO,IAE3BlpC,EAAKuirC,UAAU9irC,KAAKypC,EAAOA,EAAOjrC,OAAS,IAE3C4iV,GAAQ7gV,EAAK8irC,eAAe55oC,EAAQ+hjC,EAAgBjyxB,EACtD,CAdA0p3B,EAAU5hM,EAASshM,YAAYT,EAAUt9oC,IAAIof,KAAM,GAAGk/nC,cAiBtD9h2B,GAAQjjV,KAAKklrC,eAAe9irC,EAAK+irC,gBAAgB/irC,EAAKsirC,UAAWry2B,EAAWmhrB,GAAS65F,EAAgBjyxB,GAErG6nB,GAAQjjV,KAAKklrC,eAAe9irC,EAAK+irC,gBAAgB/irC,EAAKuirC,UAAWty2B,EAAWmhrB,GAAS65F,EAAgBjyxB,EACvG,EAGAyo3B,EAAankrC,UAAUylrC,gBAAkB,SAAU75oC,EAAQ+mS,EAAWmhrB,GACpE,IAAIxkQ,EAAK,CAAC1jtB,EAAO,GAAGvpC,QAASupC,EAAOA,EAAOjrC,OAAS,GAAG0B,SACnD+4W,EAAiB,eAAX04oB,EAA0B,EAAI,EAIxC,OAFAxkQ,EAAG,GAAGl0Y,GAAOk0Y,EAAG,GAAGl0Y,GAAOzoC,EAAY,EACtC28a,EAAG,GAAGl0Y,GAAOk0Y,EAAG,GAAGl0Y,GAAOzoC,EAAY,EAC/B28a,CACT,EAGA60b,EAAankrC,UAAUwlrC,eAAiB,SAAU55oC,EAAQ6msB,EAAW/2a,GACnE,IAAIgq3B,EAAU,IAAI,GAAiB,CACjCro/B,GAAI,GACJulC,MAAO,CACLh3L,OAAQA,GAEVj3B,MAAO89tB,IAET/2a,EAAMj2S,IAAIigqC,EACZ,EAGAvB,EAAankrC,UAAUulrC,wBAA0B,SAAUnB,EAAezuoC,EAAMm+8B,GAK9E,IAJA,IAAItQ,EAAW4gM,EAAc/xjC,iBACzBszjC,EAAaniM,EAAS8hM,YAAY3voC,GAClC/J,EAAS,GAEJ1qC,EAAI,EAAGA,EAAI,EAAGA,IAAK,CAC1B,IAAI0krC,EAAOpiM,EAASshM,YAAYa,EAAWx/nC,KAAMjlD,GAC7Cu0I,EAAQ+t2B,EAASs6K,WAAW,CAAC8nB,EAAKz/nC,OAAO,GAC7Cva,EAAO,EAAIg6oC,EAAK37pB,KAAOx0Y,EAAMsviC,GAC7Bn5oC,EAAO,EAAIg6oC,EAAK37pB,IAAM,GAAKx0Y,EAAiB,eAAXq+2B,EAA0B,KAAO,KACpE,CAEA,OAAOlo9B,CACT,EAEAu4oC,EAAankrC,UAAU6lrC,gBAAkB,SAAUngoB,EAAW/8gB,GAC5D,OAAI2yB,GAASoqf,IAAcA,G/UxCCotc,E+UyCHptc,E/UxC3B,E+UwCsC/8gB,G/UxCnB,SAAUlnC,EAAO0jB,GAClC2t+B,EAAMA,EAAI/l/B,QAAQ,IAAMoY,EAAM,IAAkC1jB,EAClE,IACOqx/B,G+UwCDxtvB,GAAWogT,GACNA,EAAU/8gB,GAGZA,EAAOouO,Q/UhDX,IAAyB+7uB,C+UiD9B,EAEAqxL,EAAankrC,UAAU8lrC,yBAA2B,SAAUtqO,EAAQ/l0B,EAAOq+2B,EAAQ709B,EAAU8gV,GAC3F,IAAIx7W,EAAIkxI,EAAM,GACVnyI,EAAImyI,EAAM,GACVswiC,EAAS,CAAC,SAAU,UAEP,WAAb9mpC,GACF37B,GAAKy8W,EACLgm0B,EAAS,CAAC,SAAU,QACE,SAAb9mpC,EACT16B,GAAKw7W,EACiB,UAAb9gV,GACT16B,GAAKw7W,EACLgm0B,EAAS,CAAC,SAAU,QAGpBzirC,GAAKy8W,EAGP,IAAIh6P,EAAS,EAMb,MAJiB,SAAb9mF,GAAoC,UAAbA,IACzB8mF,EAAS5iH,KAAKsmC,GAAK,GAGd,CACLo9E,SAAUd,EACVxhH,EAAGA,EACHjB,EAAGA,EACHqR,MAAO,CACLkwwB,MAAOkha,EAAO,GACdtyc,cAAesyc,EAAO,IAG5B,EAGA5B,EAAankrC,UAAUykrC,gBAAkB,SAAUL,EAAeC,EAAWvwL,EAAQp4rB,GACnF,IAAI8muB,EAAY4hJ,EAAcls/B,SAAS,aAEvC,GAAKsq2B,EAAU/+hC,IAAI,QAAnB,CAIA,IAAIs8W,EAASyirB,EAAU/+hC,IAAI,UACvBk/G,EAAM6/6B,EAAU/+hC,IAAI,YAEnBk/G,IACHA,EAAiB,eAAXmx4B,EAA0B,MAAQ,QAG1C,IAAIlo9B,EAAS,CAACtrC,KAAK0krC,UAAU1krC,KAAK0krC,UAAUrkrC,OAAS,GAAIL,KAAK2krC,UAAU,IACpE7+pC,GAAMwlB,EAAO,GAAG,GAAKA,EAAO,GAAG,IAAM,EACrCrnB,GAAMqnB,EAAO,GAAG,GAAKA,EAAO,GAAG,IAAM,EACrCwvU,EAAiB,eAAX04oB,EAA0B,EAAI,EACpCkyL,EAAY,CACd5mpC,IAAK,CAAChZ,EAAIwlB,EAAOwvU,GAAK,IACtBh7Q,OAAQ,CAACh6E,EAAIwlB,EAAO,EAAIwvU,GAAK,IAC7Bj8U,KAAM,CAACyM,EAAO,EAAIwvU,GAAK,GAAI72V,GAC3B47E,MAAO,CAACv0D,EAAOwvU,GAAK,GAAI72V,IAEtBvZ,EAAOq5qC,EAAUv9oC,MAAMxjC,GAEtB+grC,EAAUt9oC,IAAIzjC,GAAK+grC,EAAUv9oC,MAAMxjC,IACtC0H,EAAOA,EAAO,IAAMq5qC,EAAUt9oC,IAAIzjC,GAGpC,IAAIoijB,EAAY88e,EAAU/+hC,IAAI,aAC1BklC,EAAS,CACX7B,MAAOu9oC,EAAUv9oC,MAAMxjC,EACvByjC,IAAKs9oC,EAAUt9oC,IAAIzjC,EACnByzQ,QAAS/rQ,GAGPguF,EAAU14F,KAAKulrC,gBAAgBngoB,EAAW/8gB,GAE1Cs9oC,EAAW,IAAI,GAAa,CAC9B5o/B,GAAI,GACJ1oL,MAAOg0+B,GAAgB65C,EAAW,CAChC9xgC,KAAMsoE,MAGVitlC,EAAS13pB,KAAKjuhB,KAAKwlrC,yBAAyBG,EAAUD,EAAUrjkC,GAAMmx4B,EAAQnx4B,EAAKo9P,IACnFrkD,EAAMj2S,IAAIwgqC,EAzCV,CA0CF,EAEA9B,EAAankrC,UAAUkmrC,0BAA4B,SAAUzwiC,EAAO0wiC,EAAUryL,EAAQ709B,EAAU8gV,GAC9F,IAAI8ka,EAAQ,OACR+2D,EAAS,MACTr30B,EAAIkxI,EAAM,GACVnyI,EAAImyI,EAAM,GAwBd,MAtBe,eAAXq+2B,GACFxw/B,GAAQy8W,EAEJom0B,IACFtha,EAAQ,UAGO,UAAb5lvB,IACF28yB,EAAS,YAGXr30B,GAAQw7W,EAEJom0B,IACFvqW,EAAS,UAGM,UAAb38yB,IACF4lvB,EAAQ,UAIL,CACLtgxB,EAAGA,EACHjB,EAAGA,EACHuhxB,MAAOA,EACPpxC,cAAemoG,EAEnB,EAGAuoW,EAAankrC,UAAU0krC,iBAAmB,SAAUN,EAAeE,EAAaxwL,EAAQp4rB,GACtF,IAAI6muB,EAAa6hJ,EAAcls/B,SAAS,cAExC,GAAKqq2B,EAAW9+hC,IAAI,QAApB,CAIA,IAAIszQ,EAAUwrxB,EAAW9+hC,IAAI,WACzBs8W,EAASwirB,EAAW9+hC,IAAI,UACxBk/G,EAAM4/6B,EAAW9+hC,IAAI,YACrBohxB,EAAQ09Q,EAAW9+hC,IAAI,SACvB2irC,EAAa,CAAC9lrC,KAAK0krC,UAAW1krC,KAAK2krC,WAElClu6B,IAAWz7M,GAASy7M,KACnBA,IAEFut6B,EAAc12L,GAAe72uB,IAAYut6B,GAK3Cvt6B,EAAUut6B,EAAY7grC,IAAI,CAAC,OAAQ,eAAiB,IAGtD,IAAI23W,EAAc,UAARz4P,EAAkB,EAAI,EAC5BooF,EAAkB,eAAX+ozB,EAA0B,EAAI,EACzC/zoB,EAAiB,UAARp9P,GAAmBo9P,EAASA,EAGrC,IAFA,IAAIom0B,EAAqB,WAAVtha,EAEN3jxB,EAAI,EAAGA,EAAIklrC,EAAWhr0B,GAAKz6W,OAAS,EAAGO,IAAK,CACnD,IAAIgjW,EAAMki1B,EAAWhr0B,GAAKl6W,GAAGmB,QACzB6hrC,EAAW5jrC,KAAK4krC,iBAAiBhkrC,GAErC,GAAIilrC,EAAU,CACZ,IAAIE,EAAiB/lrC,KAAK6krC,gBAAgBjkrC,GAC1CgjW,EAAIn5J,IAASs7+B,EAAet7+B,GAAQq7+B,EAAW,GAAGllrC,EAAI,GAAG6pM,IAAS,CACpE,CAEA,IAAI26W,EAAY68e,EAAW9+hC,IAAI,aAC3Bm6vB,EAAS7mf,GAASmt6B,EAASxgrC,EAAI,GAC/BilC,EAAS,CACX29oC,KAAMpC,EAAS5grC,EACf47vB,IAAKglb,EAAS5grC,EAAI,IAAIjB,MAAM,GAC5BgnhB,GAAI66pB,EAASxgrC,EACbyC,GAAI+9qC,EAASxgrC,EACbqzQ,QAAS6mf,GAGP5kqB,EAAU14F,KAAKulrC,gBAAgBngoB,EAAW/8gB,GAE1C49oC,EAAY,IAAI,GAAa,CAC/Blp/B,GAAI,GACJ1oL,MAAOg1Y,EAAOg/lB,GAAgB45C,EAAY,CACxC7xgC,KAAMsoE,IACJ14F,KAAK4lrC,0BAA0Bhi1B,EAAKii1B,EAAUryL,EAAQnx4B,EAAKo9P,MAEjErkD,EAAMj2S,IAAI8gqC,EACZ,CApDA,CAqDF,EAEApC,EAAankrC,UAAUwmrC,yBAA2B,SAAU/wiC,EAAOq+2B,EAAQ709B,EAAU8gV,EAAQ5jI,GAC3F,IAAI0oiB,EAAQ,SACR+2D,EAAS,SACTr30B,EAAIkxI,EAAM,GACVnyI,EAAImyI,EAAM,GACVgxiC,EAAuB,UAAbxnpC,EAUd,MARe,eAAX609B,GACFvv/B,EAAIA,EAAIw7W,GAAU0m0B,EAAU,GAAK,GAAKtq8B,EAAS,GAAK,EACpD0oiB,EAAQ4ha,EAAU,QAAU,SAE5BnjrC,EAAIA,EAAIy8W,GAAU0m0B,EAAU,GAAK,GAAKtq8B,EAAS,GAAK,EACpDy/lB,EAAS6qW,EAAU,SAAW,OAGzB,CACLlirC,EAAGA,EACHjB,EAAGA,EACHuhxB,MAAOA,EACPpxC,cAAemoG,EAEnB,EAGAuoW,EAAankrC,UAAU2krC,gBAAkB,SAAUP,EAAeE,EAAaD,EAAWvwL,EAAQp4rB,GAChG,IAAI4muB,EAAW8hJ,EAAcls/B,SAAS,YAEtC,GAAKoq2B,EAAS7+hC,IAAI,QAAlB,CAIA,IAAI+/+B,EAAW4gM,EAAc/xjC,iBACzB1P,EAAM2/6B,EAAS7+hC,IAAI,YACnBszQ,EAAUurxB,EAAS7+hC,IAAI,WACvBs8W,EAASuirB,EAAS7+hC,IAAI,UACtBijrC,EAAiBljM,EAASmjM,oBAEzB5v6B,IAAWz7M,GAASy7M,KACnBA,IAEFut6B,EAAc12L,GAAe72uB,IAAYut6B,GAK3Cvt6B,EADqBut6B,EAAY7grC,IAAI,CAAC,OAAQ,oBAClBksB,EAAI20pC,EAAY7grC,IAAI,CAAC,OAAQ,mBAAmB,SAAUu6K,GACpF,OAAOA,EAAI,EACb,KAGF,IAAIl3I,EAAQ088B,EAASshM,YAAYT,EAAUt9oC,IAAIof,KAAM,EAAIk+nC,EAAUuC,OAAOzgoC,KACtEg2L,EAAW,CAACqnwB,EAAS31Y,eAAgB21Y,EAASssL,iBAClD/vzB,EAAS,GAAaA,EAAQ58W,KAAKgL,IAAIguO,EAAS,GAAIA,EAAS,KAEjD,UAARx5H,IACF77E,EAAQ088B,EAASshM,YAAYT,EAAUv9oC,MAAMqf,OAAQ,EAAIk+nC,EAAUwC,QAAQ1goC,KAC3E45T,GAAUA,GAGZ,IAAK,IAAI7+W,EAAI,EAAGA,EAAI,EAAGA,IAAK,CAC1B,IAEI+ohB,EAFA27pB,EAAOpiM,EAASshM,YAAYh+oC,EAAO5lC,GACnCu0I,EAAQ+t2B,EAASs6K,WAAW,CAAC8nB,EAAKz/nC,OAAO,GAAO5mB,OAEpD0qf,EAAM9mhB,KAAKmjH,KAAKplH,EAAIwlrC,GAAkB,GACtC,IAAII,EAAW,IAAI,GAAa,CAC9Bzp/B,GAAI,GACJ1oL,MAAOg1Y,EAAOg/lB,GAAgB25C,EAAU,CACtC5xgC,KAAMqmP,EAAQkzQ,KACZ3phB,KAAKkmrC,yBAAyB/wiC,EAAOq+2B,EAAQnx4B,EAAKo9P,EAAQ5jI,MAEhEu/E,EAAMj2S,IAAIqhqC,EACZ,CA1CA,CA2CF,EAEA3C,EAAat3qC,KAAO,WACbs3qC,CACT,CA3ZA,CA2ZE,IAEF,YCpaA,IAAI4C,GAAoB,MAEpBC,GAEJ,WACE,SAASA,EAAS5C,EAAexgN,EAASr07B,GACxCjvC,KAAKuM,KAAO,WACZvM,KAAK04J,WAAaguhC,EAAShuhC,WAE3B14J,KAAK87iC,kBAAoB4qI,EAAS5qI,kBAClC97iC,KAAKimuB,OAAS69c,CAChB,CAmXA,OAjXA4C,EAAS5qI,kBAAoB,WAC3B,MAAO,CAAC,CACNpxiC,KAAM,OACN6B,KAAM,QACL,QACL,EAEAm6qC,EAAShnrC,UAAU4vqC,aAAe,WAChC,OAAOtvqC,KAAK2mrC,UACd,EAEAD,EAAShnrC,UAAUk4L,SAAW,WAC5B,OAAO53L,KAAKimuB,MACd,EAEAygd,EAAShnrC,UAAU43jC,QAAU,WAC3B,OAAOt3jC,KAAK6s+B,KACd,EAEA65M,EAAShnrC,UAAU6tmB,aAAe,WAChC,OAAOvtmB,KAAK4mrC,GACd,EAEAF,EAAShnrC,UAAU8vqC,cAAgB,WACjC,OAAOxvqC,KAAK6mrC,GACd,EAEAH,EAAShnrC,UAAU2xnC,UAAY,WAC7B,OAAOrxnC,KAAK8mrC,OACd,EAYAJ,EAAShnrC,UAAU2mrC,kBAAoB,WACrC,OAAOrmrC,KAAK+mrC,eACd,EAOAL,EAAShnrC,UAAUslrC,YAAc,SAAU3voC,GAEzC,IAAIryC,GADJqyC,EAAO,GAAqBA,IACf4ye,cACT7khB,EAAIiyC,EAAK6ye,WAAa,EACtB8+pB,EAAO5jrC,EAAI,GAAK,IAAMA,EAAI,GAAKA,EAC/BT,EAAI0yC,EAAK7Q,UACTyipC,EAAOtkrC,EAAI,GAAK,IAAMA,EAAI,GAAKA,EAC/BgnhB,EAAMt0e,EAAK9Q,SAEf,MAAO,CACLvhC,EAAGA,EAAI,GACPI,EAAG4jrC,EACHrkrC,EAAGskrC,EACHt9pB,IALFA,EAAM9mhB,KAAKmjH,KAAK2ja,EAAM,EAAI3phB,KAAKqmrC,qBAAuB,GAMpDxgoC,KAAMxQ,EAAK5N,UACXs9oC,aAAc/hrC,EAAI,IAAMgkrC,EAAO,IAAMC,EACrC5xoC,KAAMA,EAEV,EAEAqxoC,EAAShnrC,UAAU8krC,YAAc,SAAUnvoC,EAAMh2C,GAG/C,OAAU,KAFVA,EAAIA,GAAK,KAMTg2C,EAAO,IAAI7pB,KAAKxrB,KAAKglrC,YAAY3voC,GAAMwQ,OAClCphB,QAAQ4Q,EAAK7Q,UAAYnlC,GAJrBW,KAAKglrC,YAAY3voC,EAM5B,EAEAqxoC,EAAShnrC,UAAU6uE,OAAS,SAAU+05B,EAASr07B,GAC7CjvC,KAAK+mrC,iBAAmB/mrC,KAAKimuB,OAAOruiB,SAAS,YAAYz0L,IAAI,YAC7DnD,KAAK8mrC,QAAU9mrC,KAAKimuB,OAAO9iuB,IAAI,UAC/BnD,KAAKknrC,WAAalnrC,KAAKimuB,OAAOruiB,SAAS,aAAam0zB,eAAe15qB,WAAa,EAChFryU,KAAK2mrC,WAAa3mrC,KAAKmnrC,cAAcnnrC,KAAKonrC,oBAC1C,IAAIrtP,EAAQ/57B,KAAK2mrC,WAAW5sP,OAAS,EACjCstP,EAAU,CAAC,QAAS,UAEpBxr8B,EAAW77O,KAAKimuB,OAAO09c,cAAc5hrC,QAErCulrC,EAAetnrC,KAAKimuB,OAAO6vR,qBAE3ByxL,EAA+B,eAAjBvnrC,KAAK8mrC,QAA2B,CAAC/sP,EAAO,GAAK,CAAC,EAAGA,GACnE,EAAY,CAAC,EAAG,IAAI,SAAUj/kB,GACxB0s0B,EAAkB3r8B,EAAUi/H,KAC9Bws0B,EAAaD,EAAQvs0B,IAAQj/H,EAASi/H,GAAOys0B,EAAYzs0B,GAE7D,IACA,IAAI2s0B,EAAW,CACb1opC,MAAOkQ,EAAIk8L,WACXnsM,OAAQiQ,EAAI+rI,aAEV0sgC,EAAe1nrC,KAAK6s+B,MAAQ,GAAqBy6M,EAAcG,GAOnE,SAASD,EAAkB3r8B,EAAUi/H,GACnC,OAAwB,MAAjBj/H,EAASi/H,IAAkC,SAAlBj/H,EAASi/H,EAC3C,CARA,EAAY,CAAC,EAAG,IAAI,SAAUA,GACvB0s0B,EAAkB3r8B,EAAUi/H,KAC/Bj/H,EAASi/H,GAAO4s0B,EAAaL,EAAQvs0B,IAAQys0B,EAAYzs0B,GAE7D,IAOA96W,KAAK4mrC,IAAM/q8B,EAAS,GACpB77O,KAAK6mrC,IAAMhr8B,EAAS,EACtB,EAQA6q8B,EAAShnrC,UAAUi4jC,YAAc,SAAUnojC,EAAMkpV,GAC/C,GAAelpV,KAAUA,EAAOA,EAAK,IAC5B,MAATkpV,IAAkBA,GAAQ,GAC1B,IAAIiv1B,EAAU3nrC,KAAKglrC,YAAYx1qC,GAC3BuyH,EAAQ/hI,KAAK2mrC,WACbtxoC,EAAOsyoC,EAAQ5C,aAEnB,GAAIrs1B,KAAWiv1B,EAAQ9hoC,MAAQk8E,EAAMv7F,MAAMqf,MAAQ8hoC,EAAQ9hoC,KAAOk8E,EAAMt7F,IAAIof,KAAO4goC,IACjF,MAAO,CAAC7qb,IAAKA,KAGf,IAAIqmC,EAAO0lZ,EAAQh+pB,IAEfi+pB,EAAU5nrC,KAAKmnrC,cAAc,CAACpljC,EAAMv7F,MAAMqf,KAAMxQ,IAAOuyoC,QAE3D,MAAqB,aAAjB5nrC,KAAK8mrC,QACA,CAAC9mrC,KAAK6s+B,MAAM5o+B,EAAIg+xB,EAAOjiyB,KAAK4mrC,IAAM5mrC,KAAK4mrC,IAAM,EAAG5mrC,KAAK6s+B,MAAM7p+B,EAAI4krC,EAAU5nrC,KAAK6mrC,IAAM7mrC,KAAK6mrC,IAAM,GAGjG,CAAC7mrC,KAAK6s+B,MAAM5o+B,EAAI2jrC,EAAU5nrC,KAAK4mrC,IAAM5mrC,KAAK4mrC,IAAM,EAAG5mrC,KAAK6s+B,MAAM7p+B,EAAIi/xB,EAAOjiyB,KAAK6mrC,IAAM7mrC,KAAK6mrC,IAAM,EACxG,EAMAH,EAAShnrC,UAAUklkC,YAAc,SAAUzv7B,GACzC,IAAI9/F,EAAOr1C,KAAK6nrC,YAAY1yiC,GAC5B,OAAO9/F,GAAQA,EAAKwQ,IACtB,EAMA6goC,EAAShnrC,UAAU89pC,WAAa,SAAUhupC,EAAMkpV,GAC9C,IAAIvjN,EAAQn1I,KAAK23jC,YAAYnojC,EAAMkpV,GACnC,MAAO,CACL+k0B,aAAc,CACZx5pC,EAAGkxI,EAAM,IAAMn1I,KAAK4mrC,IAAM5mrC,KAAKknrC,YAAc,EAC7ClkrC,EAAGmyI,EAAM,IAAMn1I,KAAK6mrC,IAAM7mrC,KAAKknrC,YAAc,EAC7CnopC,MAAO/+B,KAAK4mrC,IAAM5mrC,KAAKknrC,WACvBlopC,OAAQh/B,KAAK6mrC,IAAM7mrC,KAAKknrC,YAE1BjopC,OAAQk2G,EACRsviC,GAAI,CAACtviC,EAAM,GAAKn1I,KAAK4mrC,IAAM,EAAGzxiC,EAAM,GAAKn1I,KAAK6mrC,IAAM,GACpD5xqC,GAAI,CAACkgI,EAAM,GAAKn1I,KAAK4mrC,IAAM,EAAGzxiC,EAAM,GAAKn1I,KAAK6mrC,IAAM,GACpD5wqC,GAAI,CAACk/H,EAAM,GAAKn1I,KAAK4mrC,IAAM,EAAGzxiC,EAAM,GAAKn1I,KAAK6mrC,IAAM,GACpDiB,GAAI,CAAC3yiC,EAAM,GAAKn1I,KAAK4mrC,IAAM,EAAGzxiC,EAAM,GAAKn1I,KAAK6mrC,IAAM,GAExD,EASAH,EAAShnrC,UAAUmorC,YAAc,SAAU1yiC,GACzC,IAAI4yiC,EAAOllrC,KAAKyK,OAAO6nI,EAAM,GAAKn1I,KAAK6s+B,MAAM5o+B,GAAKjE,KAAK4mrC,KAAO,EAC1DoB,EAAOnlrC,KAAKyK,OAAO6nI,EAAM,GAAKn1I,KAAK6s+B,MAAM7p+B,GAAKhD,KAAK6mrC,KAAO,EAC1D9kjC,EAAQ/hI,KAAK2mrC,WAAW5kjC,MAE5B,MAAqB,aAAjB/hI,KAAK8mrC,QACA9mrC,KAAKiorC,sBAAsBD,EAAMD,EAAO,EAAGhmjC,GAG7C/hI,KAAKiorC,sBAAsBF,EAAMC,EAAO,EAAGjmjC,EACpD,EAEA2kjC,EAAShnrC,UAAUg1iC,eAAiB,SAAUpxE,EAASc,EAAQjj+B,GAC7D,IAAI+h/B,EAAW,GAAY9e,GAC3B,OAAO8e,IAAalj/B,KAAOkj/B,EAASy0E,YAAYx2jC,GAAS,IAC3D,EAEAulrC,EAAShnrC,UAAUi1iC,iBAAmB,SAAUrxE,EAASc,EAAQxs2B,GAC/D,IAAIsr3B,EAAW,GAAY9e,GAC3B,OAAO8e,IAAalj/B,KAAOkj/B,EAAS0hF,YAAYht8B,GAAS,IAC3D,EAEA8ujC,EAAShnrC,UAAUm1iC,aAAe,SAAU1/5B,GAE1C,OADA9tH,QAAQC,KAAK,qBACN,CACT,EAOAo/pC,EAAShnrC,UAAU0nrC,iBAAmB,WACpC,IAEIc,EAFAnmjC,EAAQ/hI,KAAKimuB,OAAO9iuB,IAAI,SAQ5B,GAJI,GAAe4+H,IAA2B,IAAjBA,EAAM1hI,SACjC0hI,EAAQA,EAAM,IAGX,GAAeA,GAqBlBmmjC,EAAkBnmjC,MArBQ,CAC1B,IAAIomjC,EAAWpmjC,EAAMx9H,WAOrB,GALI,UAAU8G,KAAK88qC,KACjBD,EAAkB,CAACC,EAAW,SAAUA,EAAW,WAIjD,uBAAuB98qC,KAAK88qC,GAAW,CACzC,IAAI3hpC,EAAQxmC,KAAKglrC,YAAYmD,GACzBvE,EAAWp9oC,EAAM6O,KACrBuuoC,EAAS1pb,SAAS0pb,EAAS17pB,WAAa,GACxC,IAAIzhf,EAAMzmC,KAAKwkrC,YAAYZ,GAAW,GACtCsE,EAAkB,CAAC1hpC,EAAMu+oC,aAAct+oC,EAAIs+oC,aAC7C,CAGI,oCAAoC15qC,KAAK88qC,KAC3CD,EAAkB,CAACC,EAAUA,GAEjC,CAIA,IAAKD,EAMH,OAAOnmjC,EAGT,IAAI6hO,EAAM5jW,KAAKmnrC,cAAce,GAM7B,OAJItk1B,EAAIp9T,MAAMqf,KAAO+9S,EAAIn9T,IAAIof,MAC3BqioC,EAAgB5tnC,UAGX4tnC,CACT,EAWAxB,EAAShnrC,UAAUynrC,cAAgB,SAAUpljC,GAC3C,IACIqmjC,EADAjxW,EAAc,CAACn30B,KAAKglrC,YAAYjjjC,EAAM,IAAK/hI,KAAKglrC,YAAYjjjC,EAAM,KAGlEo1sB,EAAY,GAAGtxxB,KAAOsxxB,EAAY,GAAGtxxB,OACvCuioC,GAAW,EACXjxW,EAAY78wB,WAGd,IAAIo1mC,EAAS7sqC,KAAKyK,MAAM6p0B,EAAY,GAAGtxxB,KAAO4goC,IAAqB5jrC,KAAKyK,MAAM6p0B,EAAY,GAAGtxxB,KAAO4goC,IAAqB,EAWrHpxoC,EAAO,IAAI7pB,KAAK2rzB,EAAY,GAAGtxxB,MAC/BwioC,EAAehzoC,EAAK7Q,UACpB8jpC,EAAanxW,EAAY,GAAG9hyB,KAAK7Q,UACrC6Q,EAAK5Q,QAAQ4jpC,EAAe3Y,EAAS,GAErC,IAAI6Y,EAAUlzoC,EAAK7Q,UAEnB,GAAI+jpC,IAAYD,EAGd,IAFA,IAAIhu/B,EAAOjlJ,EAAK5N,UAAY0vyB,EAAY,GAAGtxxB,KAAO,EAAI,GAAK,GAEnD0ioC,EAAUlzoC,EAAK7Q,aAAe8jpC,IAAejzoC,EAAK5N,UAAY0vyB,EAAY,GAAGtxxB,MAAQy0I,EAAO,GAClGo1+B,GAAUp1+B,EACVjlJ,EAAK5Q,QAAQ8jpC,EAAUju/B,GAI3B,IAAIy/vB,EAAQl37B,KAAKyK,OAAOoiqC,EAASv4V,EAAY,GAAGxtT,IAAM,GAAK,GACvDi+pB,EAAUQ,EAAoB,EAARruP,EAAYA,EAAQ,EAE9C,OADAquP,GAAYjxW,EAAY78wB,UACjB,CACLynE,MAAO,CAACo1sB,EAAY,GAAG4tW,aAAc5tW,EAAY,GAAG4tW,cACpDv+oC,MAAO2wyB,EAAY,GACnB1wyB,IAAK0wyB,EAAY,GACjBu4V,OAAQA,EACR31O,MAAOA,EAEP6tP,QAASA,EACTrB,MAAOpvW,EAAY,GAAGxtT,IACtB28pB,MAAOnvW,EAAY,GAAGxtT,IAE1B,EAYA+8pB,EAAShnrC,UAAUuorC,sBAAwB,SAAUL,EAASj+pB,EAAK5nZ,GACjE,IAAIstiC,EAAYrvqC,KAAKmnrC,cAAcpljC,GAEnC,GAAI6ljC,EAAUvY,EAAUt1O,OAAqB,IAAZ6tP,GAAiBj+pB,EAAM0lpB,EAAUkX,OAASqB,IAAYvY,EAAUt1O,OAASpwa,EAAM0lpB,EAAUiX,MACxH,OAAO,KAGT,IAAIkC,EAAyB,GAAfZ,EAAU,GAASvY,EAAUkX,MAAQ58pB,EAC/Ct0e,EAAO,IAAI7pB,KAAK6jpC,EAAU7ooC,MAAMqf,MAEpC,OADAxQ,EAAK5Q,SAAS4qoC,EAAU7ooC,MAAM7jC,EAAI6lrC,GAC3BxorC,KAAKglrC,YAAY3voC,EAC1B,EAEAqxoC,EAASxmrC,OAAS,SAAUoj+B,EAASr07B,GACnC,IAAIw5oC,EAAe,GAYnB,OAXAnlN,EAAQwe,cAAc,YAAY,SAAUgiM,GAC1C,IAAI/5K,EAAW,IAAI28K,EAAS5C,EAAexgN,EAASr07B,GACpDw5oC,EAAa5mrC,KAAKkogC,GAClB+5K,EAAc/xjC,iBAAmBg44B,CACnC,IACAzmC,EAAQyf,YAAW,SAAU2lM,GACoB,aAA3CA,EAAevlrC,IAAI,sBAErBulrC,EAAe32jC,iBAAmB02jC,EAAaC,EAAevlrC,IAAI,kBAAoB,GAE1F,IACOslrC,CACT,EAEA/B,EAAShuhC,WAAa,CAAC,OAAQ,SACxBguhC,CACT,CA3XA,GA6XA,SAAS,GAAYtiN,GACnB,IAAI0/M,EAAgB1/M,EAAO0/M,cACvB9gM,EAAc5e,EAAO4e,YAEzB,OADe8gM,EAAgBA,EAAc/xjC,iBAAmBix3B,EAAcA,EAAYjx3B,iBAAmB,IAE/G,CAEA,YChXA,SAAS42jC,GAASz79B,EAAKjgL,GACrB,IAAI27oC,EAIJ,OAHA,EAAY37oC,GAAO,SAAUu/G,GACd,MAAb0gE,EAAI1gE,IAA+B,SAAd0gE,EAAI1gE,KAAqBo8hC,GAAQ,EACxD,IACOA,CACT,CA2CA,IAAIC,GAA2B,CAAC,aAAc,YAAa,WACvDC,GAAgCD,GAAyB7mrC,OAAO,CAAC,iBAAkB,kBAAmB,mBAE1G,SAAS+mrC,GAAmBj5qC,EAAQjI,EAAQsh8B,GAW1C,GAVIA,KACGr57B,EAAOq57B,IAAeth8B,EAAOsh8B,KAEhCr57B,EAAOq57B,GAAc,CAAC,GAGxBr57B,EAASA,EAAOq57B,GAChBth8B,EAASA,EAAOsh8B,IAGbr57B,GAAWjI,EAMhB,IAFA,IAAIolC,EAAQk85B,EAAa0/O,GAA2BC,GAE3ClorC,EAAI,EAAGA,EAAIqsC,EAAM5sC,OAAQO,IAAK,CACrC,IAAI4rJ,EAAOv/G,EAAMrsC,GAEG,MAAhBkP,EAAO08I,IAAiC,MAAhB3kJ,EAAO2kJ,KACjC18I,EAAO08I,GAAQ3kJ,EAAO2kJ,GAE1B,CACF,CAmBA,IAAIw8hC,GAEJ,SAAUtg0B,GAGR,SAASsg0B,IACP,IAAIt8nC,EAAmB,OAAXg8T,GAAmBA,EAAOnoX,MAAMP,KAAMI,YAAcJ,KAIhE,OAFA0sD,EAAMngD,KAAOy8qC,EAAsBz8qC,KACnCmgD,EAAMqp/B,cAAe,EACdrp/B,CACT,CAoGA,OA5GAkgX,EAAUo8wB,EAAuBtg0B,GAUjCsg0B,EAAsBtprC,UAAUus/B,YAAc,SAAUpu7B,EAAQyl6B,GAE9D,IAAI9uqB,EAAWx0T,KAAK69D,OAAO22P,SAC3Bx0T,KAAK69D,OAAO22P,SAAW,KAEvBk0D,EAAOhpX,UAAUus/B,YAAYrs/B,KAAKI,KAAM69D,EAAQyl6B,GAEhDtj+B,KAAK69D,OAAO22P,SAAWA,CACzB,EAEAw03B,EAAsBtprC,UAAU61/B,cAAgB,SAAU3zB,EAAW6zB,GACnE,IAAIsqI,EAAa//nC,KAAK69D,OAClBsv4B,GAAWsoD,EAASsqI,EAAan+J,GAAWptqB,SAC5Cy03B,EAAYlpD,EAAWvr0B,SAAWihsB,EAAS,GAAKsqI,EAAWvr0B,SAC3D003B,EAAgB,GAEpBlprC,KAAKmprC,SAASh8O,EAAS+7O,EAAe,MAEtC,IAAI1oL,EAAgB,GAA0ByoL,EAAWC,EAAe,eAEpEE,EAAoBpprC,KAAKqprC,mBAAqB,GAClD,EAAY7oL,GAAe,SAAUr+B,EAAYnl9B,GAC/C,IAAIssqC,EAAcnnN,EAAWP,UAMxB0nN,IAILF,EAAkBvnrC,KAAKynrC,GAhKtB,SAAiCnnN,EAAYmnN,GAClD,IAAIC,EAAgBpnN,EAAWT,SAK/B,GAHA4nN,EAAY/9pC,GAAK428B,EAAWN,QAAQt28B,IACnC+9pC,EAAY/8qC,MAAQg9qC,IAAkBD,EAAY/8qC,KAAOg9qC,EAAch9qC,MAE5C,MAAxB+8qC,EAAYvvhC,SAAkB,CAChC,IAAIyvhC,EAAoBF,EAAYG,aAEhCD,EACFF,EAAYvvhC,SAAWyvhC,EAAkBj+pC,GAChCg+pC,IACTD,EAAYvvhC,SAAWwvhC,EAAcxvhC,SAEzC,CAGAuvhC,EAAYG,aAAe,IAC7B,CA+IMC,CAAwBvnN,EAAYmnN,GArI1C,SAAiCL,EAAWjsqC,EAAOssqC,GAEjD,IAAIK,EAAe,EAAc,CAAC,EAAGL,GACjCC,EAAgBN,EAAUjsqC,GAC1B4sqC,EAAUN,EAAYM,SAAW,QAErB,UAAZA,EACEL,GAQF,EAAaA,EAAeI,GAAc,GAE1Cl1L,GAAiB80L,EAAeI,EAAc,CAC5Ch1L,YAAY,IAGdQ,GAAiBm0L,EAAaC,GAG9BR,GAAmBO,EAAaC,GAChCR,GAAmBO,EAAaC,EAAe,SAC/CR,GAAmBO,EAAaC,EAAe,SAC/CR,GAAmBO,EAAaC,EAAe,SAE/CD,EAAY79Z,SAAW89Z,EAAc99Z,UAErCw9Z,EAAUjsqC,GAAS2sqC,EAEA,YAAZC,EACTX,EAAUjsqC,GAAS2sqC,EACE,WAAZC,GAETL,IAAkBN,EAAUjsqC,GAAS,KAEzC,CA+FM6sqC,CAAwBZ,EAAWjsqC,EAAOssqC,GAhEhD,SAA8BQ,EAAWR,GACvC,GAAKQ,IAILA,EAAU11L,GAAKk1L,EAAYl1L,GAAK,CAChCu0L,GAASW,EAAa,CAAC,OAAQ,UAC/BX,GAASW,EAAa,CAAC,MAAO,YAEP,UAAnBQ,EAAUv9qC,MAAkB,CAC9B,IAAIw9qC,EAAmBD,EACnBE,EAAcV,EACQ,MAA1BS,EAAiBhrpC,QAAkBgrpC,EAAiBhrpC,MAAQirpC,EAAYjrpC,MAAQ,GACrD,MAA3BgrpC,EAAiB/qpC,SAAmB+qpC,EAAiB/qpC,OAASgrpC,EAAYhrpC,OAAS,EACrF,CACF,CAkDMirpC,CAAqBhB,EAAUjsqC,GAAQssqC,GACzC,GAAGtprC,MAEH+/nC,EAAWvr0B,SAAW,GAAcy03B,GAAW,SAAU7noC,GAIvD,OADAA,UAAeA,EAAKwooC,QACL,MAARxooC,CACT,GACF,EAiBA4noC,EAAsBtprC,UAAUyprC,SAAW,SAAUe,EAAY1mqC,EAAQimqC,GACvE,EAAYS,GAAY,SAAUrsnC,GAChC,GAAKA,EAAL,CAII4rnC,IACF5rnC,EAAO4rnC,aAAeA,GAGxBjmqC,EAAO3hB,KAAKg8D,GACZ,IAAI79B,EAAW69B,EAAO79B,SAGlBA,GAAYA,EAAS3/B,QACvBL,KAAKmprC,SAASnppC,EAAUxc,EAAQq6C,UAI3BA,EAAO79B,QAfd,CAgBF,GAAGhgC,KACL,EAIAgprC,EAAsBtprC,UAAUyqrC,qBAAuB,WACrD,IAAIn6Q,EAAMhw6B,KAAKqprC,mBAGf,OADArprC,KAAKqprC,mBAAqB,KACnBr5Q,CACT,EAEAg5Q,EAAsBz8qC,KAAO,UAC7By8qC,EAAsBpopB,cAAgB,CACpCpsO,SAAU,IAGLw03B,CACT,CA9GA,CA8GEt8hC,IC9NE09hC,GAA0B,CAE5B/zpC,KAAM,KACNuulC,aAAc,KAEdxpzB,MAAO,GACP7wK,MAAO,GACPn6H,KAAM,IAEG,GAAQ,KAIfi6pC,GAEJ,SAAU3h0B,GAGR,SAAS2h0B,IACP,IAAI39nC,EAAmB,OAAXg8T,GAAmBA,EAAOnoX,MAAMP,KAAMI,YAAcJ,KAGhE,OADA0sD,EAAMngD,KAAO89qC,EAAqB99qC,KAC3BmgD,CACT,CA4QA,OAnRAkgX,EAAUy9wB,EAAsB3h0B,GAShC2h0B,EAAqB3qrC,UAAUgxD,KAAO,WACpC1wD,KAAKsqrC,OAAS,IAChB,EAEAD,EAAqB3qrC,UAAU4uH,OAAS,SAAUi8jC,EAAcjnN,EAASr07B,GAUnEs7oC,IAAiBvqrC,KAAKwqrC,mBACxBxqrC,KAAKo3lC,SAGPp3lC,KAAKwqrC,kBAAoBD,EAEzBvqrC,KAAKyqrC,gBAAgBF,GAErBvqrC,KAAK0qrC,UAAUH,EAAct7oC,EAC/B,EAMAo7oC,EAAqB3qrC,UAAU+qrC,gBAAkB,SAAUF,GACzD,IAAInB,EAAoBmB,EAAaJ,uBAErC,GAAKf,EAAL,CAIA,IAAIzyJ,EAAQ32hC,KAAKsqrC,OACbrsa,EAAYj+wB,KAAKo7T,MACjBuv3B,EAAUJ,EAAapnrC,IAAI,KAC3BynrC,EAAeL,EAAapnrC,IAAI,UAEpC,EAAYimrC,GAAmB,SAAU/e,GACvC,IAAI9+oC,EAAK,GAA8B8+oC,EAAS9+oC,GAAI,MAChDs/pC,EAAmB,MAANt/pC,EAAaorgC,EAAMxzhC,IAAIooB,GAAM,KAC1CwuI,EAAW,GAA8BswgC,EAAStwgC,SAAU,MAC5D+whC,EAA6B,MAAZ/whC,EAAmB483B,EAAMxzhC,IAAI42J,GAAYkknB,EAC1DuqZ,EAAS6B,EAAS99pC,KAClBooqC,EAAgBtK,EAASh2pC,MAEd,SAAXm0pC,GAAqBmM,GAGnBtK,EAASj2K,IAAMi2K,EAASj2K,GAAG,KAC7BugL,EAAc1iN,kBAAoB0iN,EAAc5v7B,aAAe4v7B,EAAcxhc,cAAgBwhc,EAAcpwZ,MAAQ,MAIvH,IAAIwma,EAAoB1gB,EAASr9kC,YAC7B6l4B,EAAaw3M,EAASx3M,WAE1B,GAAI8hN,GAAiBpM,GAAqBoM,EAAenM,IAAU31M,IAAck4N,GAAoB,CACnG,IAAIjW,EAAgBlM,GAA8B+L,EAAenM,GAAQ,IAEpE31M,GAAciiN,EAAcjiN,aAC/BA,EAAaw3M,EAASx3M,WAAaiiN,EAAcjiN,aAG9Ck4N,GAAqBjW,EAAc9nlC,cACtC+9lC,EAAoBjW,EAAc9nlC,YAEtC,CAGA,IAAIg+lC,EAgRV,SAA4B3gB,GAK1B,OAJAA,EAAW,EAAc,CAAC,EAAGA,GAC7B,EAAY,CAAC,KAAM,WAAY,UAAW,KAAM,WAAY,cAAe,YAAYroqC,OAAO,KAA6B,SAAU0I,UAC5H2/pC,EAAS3/pC,EAClB,IACO2/pC,CACT,CAtR4B4gB,CAAmB5gB,GAMrCuf,EAAUvf,EAASuf,SAAW,QAC9BsB,EAAsB,UAAZtB,EACVuB,EAAwB,YAAZvB,EAEhB,GAAIsB,EAAS,CACX,IACIE,EAAOP,GADPp1L,GAAUo1L,GAIZO,EAAO,GAAS7/pC,EAAIu/pC,EAAgBzgB,EAAS99pC,KAAMoqhC,IAEnDy0J,IAAS,GAAMA,GAAM/kjC,OAAQ,GAE7BwniC,GAAwCud,IAGtCA,IACF3gB,GAAsB2gB,EAAMJ,EAAiBT,EAAc,CACzD90L,OAAQA,IAEV41L,GAAkBD,EAAM/gB,EAAUsgB,EAASC,GAE/C,MAAO,GAAIO,EAAW,CACpBG,GAAST,EAAYxgB,EAAU1zI,EAAO4zJ,GACtC,IAAIgB,EAAO,GAAShgqC,EAAIu/pC,EAAgBzgB,EAAS99pC,KAAMoqhC,GAEnD40J,IACF9gB,GAAsB8gB,EAAMP,EAAiBT,EAAc,CACzD90L,QAAQ,IAEV41L,GAAkBE,EAAMlhB,EAAUsgB,EAASC,GAE/C,KAAuB,WAAZhB,IACTtd,GAAcue,EAAYxgB,GAC1BihB,GAAST,EAAYxgB,EAAU1zI,EAAO4zJ,IAGxC,IAAI1wiC,EAAK884B,EAAMxzhC,IAAIooB,GAEnB,GAAIsuH,GAAMkxiC,EACR,GAAIG,EAAS,CACX,IAAIM,EAAsB3xiC,EAAGltD,iBAC7B6+lC,EAAsBA,EAAoBv9pB,KAAK88pB,GAAqBlxiC,EAAG860B,eAAe,IAAI,GAAiBo2N,GAC7G,MAAWI,GACTtxiC,EAAG860B,eAAe,IAAI,GAAiBo2N,IAI3C,GAAIlxiC,EAAI,CACN,IAAI4xiC,EAAiBphB,EAAS5+Y,SAE9B,GAAIgga,EAAgB,CAClB,IAAIC,EAAeD,EAAel/qC,KAC9Bk/wB,OAAW,EACXgqO,GAAS,EAEb,GAAIy1L,EAAS,CACX,IAAIt7F,EAAc/18B,EAAG68zB,cAErBjrL,GADAgqO,GAAUm6F,GAAe,GAAMA,GAAarjlC,OAASm/qC,GACjCC,GAAMD,GAAgB97F,CAC5C,MAAWu7F,IACT11L,GAAS,EACThqO,EAAWkga,GAAMD,IAGnB7xiC,EAAG+60B,YAAYnpM,GACfg/Y,GAAsBh/Y,EAAUgga,EAAgBlB,EAAc,CAC5D90L,OAAQA,IAEVq4K,GAAuBriZ,EAAUgga,EAAexa,kBAAmBsZ,EACrE,CAEA,IAAI/V,EAAU,GAAM36hC,GACpBA,EAAG660B,cAAc7B,GACjB2hN,EAAQ32mC,OAASwsmC,EAwMzB,SAAsBxwhC,EAAI0wiC,EAAclgB,GACtC,IAAItpuB,EAAYi8iB,GAAUnj2B,GAAIknT,UAEzBlnT,EAAGu6V,QAAWv6V,EAAG1xG,QAAW44Z,IAC/BA,EAAYi8iB,GAAUnj2B,GAAIknT,UAAY,CACpC7kP,cAAe,UACfivE,eAAgBo/5B,EAAap/5B,eAC7BzgR,KAAMmvI,EAAGnvI,OAMTq2b,IACFA,EAAUvpZ,KAAO6ynC,EAAS7ynC,KAE9B,CAvNQo0oC,CAAa/xiC,EAAI0wiC,EAAclgB,GAC/B,GAA6B,CAC3BxwhC,GAAIA,EACJgp1B,eAAgB0nN,EAChBlvL,SAAUxh3B,EAAGnvI,KACb4thC,kBAAmB+xI,EAAShshC,UAE9ByvhC,GAAuBj0hC,EAAIwwhC,EAAS4G,kBAAmBsZ,EACzD,CACF,GAjIA,CAkIF,EAMAF,EAAqB3qrC,UAAUgrrC,UAAY,SAAUH,EAAct7oC,GAQjE,IAPA,IAAI48oC,EAAYtB,EAAa1snC,OAAO22P,SAChCypd,EAAYj+wB,KAAKo7T,MACjBu7tB,EAAQ32hC,KAAKsqrC,OACbwB,EAAW78oC,EAAIk8L,WACf4g9B,EAAY98oC,EAAI+rI,YAChB1qB,EAAK,CAAC,IAAK,KAEN1vJ,EAAI,EAAGA,EAAIirrC,EAAUxrrC,OAAQO,IAKpC,IAFIi5I,EAAW,OADXtuH,EAAK,IADL8+oC,EAAWwhB,EAAUjrrC,IACuB2qB,GAAI,OAC9BorgC,EAAMxzhC,IAAIooB,GAAM,OAE1BsuH,EAAGkpkB,QAAf,CAIA,IACIipe,GADAhlpB,EAAWntZ,EAAGxoD,UACc4srB,EAE5Bu2Z,EAAU,GAAM36hC,GAChBoyiC,EAAgB,GAAMjlpB,GAC1BwtoB,EAAQz1oC,MAAQ,GAAay1oC,EAAQ32mC,OAAO9+B,MAAOitpC,EAAeF,EAAWG,EAAcltpC,QAAU,EACrGy1oC,EAAQx1oC,OAAS,GAAaw1oC,EAAQ32mC,OAAO7+B,OAAQgtpC,EAAeD,EAAYE,EAAcjtpC,SAAW,CARzG,CAYF,IAASp+B,EAAIirrC,EAAUxrrC,OAAS,EAAGO,GAAK,EAAGA,IAAK,CAC9C,IAAIypqC,EACA9+oC,EACAsuH,EAEJ,GAFIA,EAAW,OADXtuH,EAAK,IADL8+oC,EAAWwhB,EAAUjrrC,IACuB2qB,GAAI,OAC9BorgC,EAAMxzhC,IAAIooB,GAAM,KAEtC,CAIA,IAAIy7gB,EAAWntZ,EAAGxoD,OAad66lC,GAZAD,EAAgB,GAAMjlpB,GAYV,CAAC,GACbmlpB,EAAW,GAA2BtyiC,EAAIwwhC,EAZ1BrjoB,IAAai3O,EAAY,CAC3Cl/uB,MAAO+spC,EACP9spC,OAAQ+spC,GACN,CACFhtpC,MAAOktpC,EAAcltpC,MACrBC,OAAQitpC,EAAcjtpC,QAO+C,KAAM,CAC3Eo19B,GAAIi2K,EAASj2K,GACbC,aAAcg2K,EAAS+hB,UACtBF,GAEH,IAAK,GAAMryiC,GAAIxT,OAAS8ljC,EAAU,CAIhC,IAHA,IAAIrkkC,EAAauijC,EAASvijC,WACtBukkC,EAAa,CAAC,EAET3orC,EAAI,EAAGA,EAAI4sJ,EAAGjwJ,OAAQqD,IAAK,CAClC,IAAImhB,EAAMyrI,EAAG5sJ,GACTg6K,EAAMwugC,EAAUrnqC,GAEhBijG,IAAesjjC,GAAgBtjjC,IAAe,EAAeA,EAAYjjG,IAAQ,GACnFwnqC,EAAWxnqC,GAAO64J,EAElB7jC,EAAGh1H,GAAO64J,CAEd,CAEA4o0B,GAAYzs2B,EAAIwyiC,EAAY9B,EAAc,EAC5C,MACE1wiC,EAAGo0Y,KAAKi+pB,EAtCV,CAwCF,CACF,EAMA7B,EAAqB3qrC,UAAU03lC,OAAS,WACtC,IAAI1qiC,EAAQ1sD,KAER22hC,EAAQ32hC,KAAKsqrC,OACjB3zJ,EAAM30Q,MAAK,SAAUnooB,GACnByxiC,GAASzxiC,EAAI,GAAMA,GAAIh8E,OAAQ849B,EAAOjq+B,EAAM89nC,kBAC9C,IACAxqrC,KAAKsqrC,OAAS,IAChB,EAEAD,EAAqB3qrC,UAAU2l8B,QAAU,WACvCrl8B,KAAKo3lC,QACP,EAEAizF,EAAqB99qC,KAAO,UACrB89qC,CACT,CArRA,CAqRE,IAIF,SAASsB,GAAMvb,GAab,IAAIv2hC,EAAK,IARC,GAAcuwiC,GAAyBha,GAE/Cga,GAAwBha,GAAe,GAA0BA,IAMlD,CAAC,GAElB,OADA,GAAMv2hC,GAAIttI,KAAO6jqC,EACVv2hC,CACT,CAEA,SAAS,GAAStuH,EAAIu/pC,EAAgB1a,EAAaz5I,GACjD,IAAI984B,EAAK8xiC,GAAMvb,GAKf,OAJA0a,EAAe3lqC,IAAI00H,GACnB884B,EAAM1qhC,IAAIsf,EAAIsuH,GACd,GAAMA,GAAItuH,GAAKA,EACf,GAAMsuH,GAAIxT,OAAQ,EACXwT,CACT,CAEA,SAASyxiC,GAAST,EAAYxgB,EAAU1zI,EAAO4zJ,GACzBM,GAAcA,EAAWx5lC,SAGvB,UAApBw5lC,EAAWt+qC,MAAoBs+qC,EAAWhl/B,UAAS,SAAUhsD,GAC3DyxiC,GAASzxiC,EAAIwwhC,EAAU1zI,EAAO4zJ,EAChC,IACA9d,GAAqBoe,EAAYxgB,EAAUkgB,GAC3C5zJ,EAAMl0J,UAAU,GAAMooT,GAAYt/pC,IAEtC,CAEA,SAAS8/pC,GAAkBxxiC,EAAIwwhC,EAAUiiB,EAAUC,GAC5C1yiC,EAAGkpkB,SACN,EAAY,CAAC,CAAC,SAAU,GAAYrjtB,UAAU2hJ,QAE9C,CAAC,SAAUkriC,GAAiB,GAAI,CAAC,IAAKD,GAAY,GAClD,CAAC,KAAM,KAAK,SAAUlroC,GACpB,IAAIorG,EAAOprG,EAAK,GAEZ,GAAcipnC,EAAU79gC,GAC1B3S,EAAG2S,GAAQ,GAAiB69gC,EAAS79gC,GAAOprG,EAAK,IAC5B,MAAZy4F,EAAG2S,KACZ3S,EAAG2S,GAAQprG,EAAK,GAEpB,IAGF,EAAY,GAAYipnC,IAAW,SAAUxlpC,GAG3C,GAA0B,IAAtBA,EAAIrkB,QAAQ,MAAa,CAC3B,IAAIk9K,EAAM2s/B,EAASxlpC,GACnBg1H,EAAGh1H,GAAO,GAAkB64J,GAAOA,EAAM,IAC3C,CACF,IAEI,GAAc2s/B,EAAU,eAC1BxwhC,EAAG0sQ,UAAY8jxB,EAAS9jxB,WAIT,MAAjB8jxB,EAAS3/pC,OAAiBmvI,EAAGnvI,KAAO2/pC,EAAS3/pC,MAC9B,MAAf2/pC,EAAS9+oC,KAAesuH,EAAGtuH,GAAK8+oC,EAAS9+oC,GAC3C,CC3XO,IAAIihqC,GAA4B,CAAC,IAAK,IAAK,SAAU,QAAS,UAGjEC,GAAgB,CAAC,cAAe,QAAS,cAKtC,SAASC,GAAgBz/H,GAK9B,OAAOA,EAAU,MACnB,CAiGO,SAAS0/H,GAA8BC,GAC5C,IAAItpN,EAAUspN,EAActpN,QACxBupN,EAAmB,CACrBC,SAAU,GACVC,QAAS7hP,MA6BX,OA3BA0hP,EAAcI,gBAAe,SAAU//H,EAASF,GAC9C,IAAIC,EAAY1pF,EAAQnpoB,aAAauy1B,GAAgBz/H,GAAUF,GAE/D,GAAKC,EAAL,CAIA,IAAIy8F,EAAgBz8F,EAAU8T,mBAE9B,GAAK2oF,EAAL,CAIA,IAAIwjC,EAAcxjC,EAAcr2zB,IAC5Bi7tB,EAAew+H,EAAiBE,QAAQ5prC,IAAI8prC,GAE3C5+H,IACHA,EAAe,CACbt57B,MAAO00hC,EACP5I,WAAY,IAEdgsC,EAAiBC,SAASjrrC,KAAKwsjC,GAC/Bw+H,EAAiBE,QAAQ9grC,IAAIghrC,EAAa5+H,IAG5CA,EAAawyF,WAAWh/oC,KAAKmrjC,EAd7B,CANA,CAqBF,IACO6/H,CACT,CC5IA,IAAIK,GAEJ,WACE,SAASA,IACPltrC,KAAKmtrC,UAAY,GACjBntrC,KAAK08qB,SAAW,EAClB,CAUA,OARAwwgB,EAAiBxtrC,UAAUylB,IAAM,SAAUioqC,GAEpCptrC,KAAK08qB,SAAS0wgB,KACjBptrC,KAAKmtrC,UAAUtrrC,KAAKurrC,GACpBptrC,KAAK08qB,SAAS0wgB,IAAe,EAEjC,EAEOF,CACT,CAfA,GAiBIG,GAEJ,SAAU3k0B,GAGR,SAAS2k0B,IACP,IAAI3goC,EAAmB,OAAXg8T,GAAmBA,EAAOnoX,MAAMP,KAAMI,YAAcJ,KAuBhE,OArBA0sD,EAAMngD,KAAO8grC,EAAc9grC,KAC3BmgD,EAAM4goC,eAAgB,EACtB5goC,EAAM6goC,WAAY,EAkBlB7goC,EAAM8goC,eAAiB,CAAC,UAAW,WAC5B9goC,CACT,CAuYA,OAlaAkgX,EAAUygxB,EAAe3k0B,GA6BzB2k0B,EAAc3trC,UAAUgxD,KAAO,SAAUmN,EAAQghe,EAAaykc,GAC5D,IAAImqN,EAAiBC,GAAkB7vnC,GAuBvC79D,KAAK2trC,cAAgBF,EACrBztrC,KAAKq1/B,qBAAqBx37B,EAAQyl6B,GAElCtj+B,KAAK0mjC,QAAQ+mI,EACf,EAEAJ,EAAc3trC,UAAUus/B,YAAc,SAAUrqB,GAC9C,IAAI6rN,EAAiBC,GAAkB9rN,GAEvC9guB,EAAM9gQ,KAAK69D,OAAQ+j6B,GAAW,GAC9B9guB,EAAM9gQ,KAAK2trC,cAAeF,GAAgB,GAE1CztrC,KAAK0mjC,QAAQ+mI,EACf,EAEAJ,EAAc3trC,UAAUgnjC,QAAU,SAAU+mI,GAC1C,IAAI1tD,EAAa//nC,KAAK69D,OAEtB79D,KAAK4trC,oBAAoBH,GAEzBztrC,KAAK6trC,gBAAgBJ,GAErB,IAAIE,EAAgB3trC,KAAK2trC,cACzB,EAAK,CAAC,CAAC,QAAS,cAAe,CAAC,MAAO,cAAc,SAAU38jB,EAAOh0mB,GAIjC,UAA/Bhd,KAAKwtrC,eAAexwqC,KACtB+inC,EAAW/ugB,EAAM,IAAM28jB,EAAc38jB,EAAM,IAAM,KAGrD,GAAGhxnB,MAEHA,KAAK8trC,cACP,EAEAT,EAAc3trC,UAAUourC,aAAe,WACrC,IAAIC,EAAe/trC,KAAKmD,IAAI,UAAU,GAClC6qrC,EAAqBhurC,KAAKiurC,mBAAqB/iP,KAE5Blr8B,KAAKkurC,yBAAyBF,GAGnDhurC,KAAK8mrC,QAAUiH,GAAgB/trC,KAAKmurC,+BAEpCnurC,KAAK8mrC,QAAUiH,GAAgB,aAE/B/trC,KAAKourC,4BAA4BJ,EAAoBhurC,KAAK8mrC,UAG5D9mrC,KAAKutrC,WAAY,EACjBS,EAAmBhsa,MAAK,SAAU0uV,GAC5BA,EAASy8E,UAAU9srC,SACrBL,KAAKutrC,WAAY,EAErB,GAAGvtrC,KACL,EAEAqtrC,EAAc3trC,UAAUwurC,yBAA2B,SAAUF,GAC3D,IAAIK,GAAmB,EAiBvB,OAhBA,EAAK7B,IAA2B,SAAUv/H,GACxC,IAAIqhI,EAAWturC,KAAK41/B,uBAAuB82L,GAAgBz/H,GAAUzoF,IAIrE,GAAK8pN,EAASzpN,UAAd,CAIAwpN,GAAmB,EACnB,IAAI39E,EAAW,IAAIw8E,GACnB,EAAKoB,EAASz9hC,QAAQ,SAAUm85B,GAC9B0jD,EAASvrlC,IAAI6niC,EAAU7hyB,eACzB,IACA6i6B,EAAmB/hrC,IAAIghjC,EAASyjD,EAPhC,CAQF,GAAG1wmC,MACIqurC,CACT,EAEAhB,EAAc3trC,UAAU0urC,4BAA8B,SAAUJ,EAAoBx6L,GAClF,IAAIlwB,EAAUtj+B,KAAKsj+B,QACfirN,GAAW,EAEf,GAAIA,EAAU,CACZ,IAAIthI,EAAqB,aAAXz5D,EAAwB,IAAM,IAI5Cg7L,EAHiBlrN,EAAQw+B,eAAe,CACtCh+B,SAAUmpF,EAAU,SAEMA,EAC9B,CAaA,SAASuhI,EAAgB3tC,EAAY5zF,GAEnC,IAAID,EAAY6zF,EAAW,GAE3B,GAAK7zF,EAAL,CAIA,IAAI0jD,EAAW,IAAIw8E,GAKnB,GAJAx8E,EAASvrlC,IAAI6niC,EAAU7hyB,gBACvB6i6B,EAAmB/hrC,IAAIghjC,EAASyjD,GAChC69E,GAAW,EAEK,MAAZthI,GAA+B,MAAZA,EAAiB,CACtC,IAAIwhI,EAAczhI,EAAUp3D,uBAAuB,OAAQrxB,IAAkB1z0B,OAAO,GACpF49hC,GAAe,EAAK5tC,GAAY,SAAU6tC,GACpC1hI,EAAU7hyB,iBAAmBuj6B,EAAQvj6B,gBAAkBsj6B,IAAgBC,EAAQ94L,uBAAuB,OAAQrxB,IAAkB1z0B,OAAO,IACzI6/8B,EAASvrlC,IAAIupqC,EAAQvj6B,eAEzB,GACF,CAdA,CAeF,CA/BIoj6B,GAOFC,EANiBlrN,EAAQw+B,eAAe,CACtCh+B,SAAU,aACVj38B,OAAQ,SAAUmgiC,GAChB,OAAOA,EAAU7pjC,IAAI,UAAU,KAAUqw/B,CAC3C,IAE0B,UA0B1B+6L,GAEF,EAAK/B,IAA2B,SAAUv/H,GACxC,GAAKshI,EAAL,CAIA,IAAI1tC,EAAav9K,EAAQw+B,eAAe,CACtCh+B,SAAU4oN,GAAgBz/H,GAC1BpgiC,OAAQ,SAAUmgiC,GAChB,MAAuC,aAAhCA,EAAU7pjC,IAAI,QAAQ,EAC/B,IAGF,GAAI09oC,EAAW,GAAI,CACjB,IAAInwC,EAAW,IAAIw8E,GACnBx8E,EAASvrlC,IAAI07nC,EAAW,GAAG113B,gBAC3B6i6B,EAAmB/hrC,IAAIghjC,EAASyjD,GAChC69E,GAAW,CACb,CAdA,CAeF,GAAGvurC,KAEP,EAEAqtrC,EAAc3trC,UAAUyurC,4BAA8B,WACpD,IAAIx21B,EAKJ,OAHA33V,KAAKgtrC,gBAAe,SAAU//H,IAC3Bt1tB,IAAQA,EAAMs1tB,EACjB,GAAGjtjC,MACY,MAAR23V,EAAc,WAAa,YACpC,EAEA011B,EAAc3trC,UAAUkurC,oBAAsB,SAAUH,GAMtD,GAJIA,EAAe9trC,eAAe,cAChCK,KAAKstrC,eAAgB,GAGnBttrC,KAAKstrC,cAAe,CACtB,IAAIqB,EAAe3urC,KAAKsj+B,QAAQzl6B,OAChC79D,KAAK69D,OAAOz5B,SAAWuqpC,EAAa5+7B,WAAa4+7B,EAAah2L,wBAA0B,EAAI,IAAM,EACpG,CACF,EAEA00L,EAAc3trC,UAAUmurC,gBAAkB,SAAUJ,GAClD,IAAImB,EAAgB5urC,KAAKwtrC,eACrBqB,EAAoB7urC,KAAKmD,IAAI,aACjC,EAAK,CAAC,CAAC,QAAS,cAAe,CAAC,MAAO,cAAc,SAAU6tnB,EAAOh0mB,GACpE,IAAI8xqC,EAA+C,MAA5BrB,EAAez8jB,EAAM,IACxC+9jB,EAA6C,MAA5BtB,EAAez8jB,EAAM,IAEtC89jB,IAAqBC,EACvBH,EAAc5xqC,GAAS,WACb8xqC,GAAoBC,EAC9BH,EAAc5xqC,GAAS,QACd6xqC,EACTD,EAAc5xqC,GAAS6xqC,EAAkB7xqC,GAChC8xqC,IAETF,EAAc5xqC,GAAS,UAG3B,GACF,EAEAqwqC,EAAc3trC,UAAUsvrC,SAAW,WACjC,OAAOhvrC,KAAKutrC,SACd,EAEAF,EAAc3trC,UAAUuvrC,wBAA0B,WAChD,IAAIC,EAMJ,OALAlvrC,KAAKgtrC,gBAAe,SAAU//H,EAASF,GACf,MAAlBmiI,IACFA,EAAiBlvrC,KAAKsj+B,QAAQnpoB,aAAauy1B,GAAgBz/H,GAAUF,GAEzE,GAAG/sjC,MACIkvrC,CACT,EAMA7B,EAAc3trC,UAAUstrC,eAAiB,SAAU9jqC,EAAUikB,GAC3DntC,KAAKiurC,mBAAmBjsa,MAAK,SAAU0uV,EAAUzjD,GAC/C,EAAKyjD,EAASy8E,WAAW,SAAUpgI,GACjC7jiC,EAAStpB,KAAKutC,EAAS8/gC,EAASF,EAClC,GACF,GACF,EAMAsgI,EAAc3trC,UAAUyvrC,aAAe,SAAUliI,EAASF,GACxD,IAAIC,EAAYhtjC,KAAKovrC,aAAaniI,EAASF,GAE3C,GAAIC,EACF,OAAOA,EAAUqiI,aAErB,EAMAhC,EAAc3trC,UAAU0vrC,aAAe,SAAUniI,EAASF,GAKxD,IAAI2jD,EAAW1wmC,KAAKiurC,mBAAmB9qrC,IAAI8pjC,GAE3C,GAAIyjD,GAAYA,EAASh0b,SAASqwY,GAChC,OAAO/sjC,KAAKsj+B,QAAQnpoB,aAAauy1B,GAAgBz/H,GAAUF,EAE/D,EAMAsgI,EAAc3trC,UAAU4vrC,YAAc,SAAUlvpB,GAC9C,IAAI2/lB,EAAa//nC,KAAK69D,OAClB8vnC,EAAgB3trC,KAAK2trC,cACzB,EAAK,CAAC,CAAC,QAAS,cAAe,CAAC,MAAO,cAAc,SAAU38jB,GAUxC,MAAjB5wF,EAAI4wF,EAAM,KAAgC,MAAjB5wF,EAAI4wF,EAAM,MACrC+ugB,EAAW/ugB,EAAM,IAAM28jB,EAAc38jB,EAAM,IAAM5wF,EAAI4wF,EAAM,IAC3D+ugB,EAAW/ugB,EAAM,IAAM28jB,EAAc38jB,EAAM,IAAM5wF,EAAI4wF,EAAM,IAE/D,GAAGhxnB,MAEHA,KAAK6trC,gBAAgBztpB,EACvB,EAEAitpB,EAAc3trC,UAAU6vrC,mBAAqB,SAAUnvpB,GACrD,IAAIvie,EAAS79D,KAAK69D,OAClB,EAAK,CAAC,QAAS,aAAc,MAAO,aAAa,SAAUnzD,GACzDmzD,EAAOnzD,GAAQ01hB,EAAI11hB,EACrB,GACF,EAEA2irC,EAAc3trC,UAAU8vrC,gBAAkB,WACxC,IAAIC,EAAYzvrC,KAAK0vrC,8BAErB,GAAID,EACF,OAAOA,EAAUE,sBAErB,EAQAtC,EAAc3trC,UAAUkwrC,cAAgB,SAAU3iI,EAASF,GACzD,GAAe,MAAXE,GAAgC,MAAbF,EAOrB,OAAO/sjC,KAAKmvrC,aAAaliI,EAASF,GAAW8iI,qBAN7C,IAAIJ,EAAYzvrC,KAAK0vrC,8BAErB,OAAID,EACKA,EAAUI,0BADnB,CAMJ,EAOAxC,EAAc3trC,UAAUgwrC,4BAA8B,SAAU1iI,GAC9D,GAAIA,EACF,OAAOA,EAAUqiI,cAQnB,IAJA,IAAIS,EAEAC,EAAc/vrC,KAAKiurC,mBAAmB36qC,OAEjC1S,EAAI,EAAGA,EAAImvrC,EAAY1vrC,OAAQO,IAKtC,IAJA,IAAIqsjC,EAAU8iI,EAAYnvrC,GAEtB8vmC,EAAW1wmC,KAAKiurC,mBAAmB9qrC,IAAI8pjC,GAElC7ojC,EAAI,EAAGA,EAAIssmC,EAASy8E,UAAU9srC,OAAQ+D,IAAK,CAClD,IAAIu1D,EAAQ35D,KAAKmvrC,aAAaliI,EAASyjD,EAASy8E,UAAU/orC,IAE1D,GAAIu1D,EAAMq2nC,SAAShwrC,MACjB,OAAO25D,EAGJm2nC,IACHA,EAAan2nC,EAEjB,CAMF,OAAOm2nC,CACT,EAEAzC,EAAc3trC,UAAUuwrC,iBAAmB,WACzC,OAAOjwrC,KAAKwtrC,eAAezrrC,OAC7B,EAEAsrrC,EAAc3trC,UAAU2xnC,UAAY,WAMlC,OAAOrxnC,KAAK8mrC,OACd,EAEAuG,EAAc9grC,KAAO,WACrB8grC,EAAcpxhC,aAAe,CAAC,QAAS,QAAS,aAAc,YAAa,aAAc,SAAU,WACnGoxhC,EAAczspB,cAAgB,CAE5Bj7hB,EAAG,EACHuqrC,WAAY,SACZ1ppC,MAAO,EACPC,IAAK,KAEA4mpC,CACT,CApaA,CAoaE3giC,IAQF,SAASghiC,GAAkB7vnC,GACzB,IAAIoia,EAAM,CAAC,EAIX,OAHA,EAAK,CAAC,QAAS,MAAO,aAAc,WAAY,aAAa,SAAUv1d,GACrEmzD,EAAOl+D,eAAe+K,KAAUu1d,EAAIv1d,GAAQmzD,EAAOnzD,GACrD,IACOu1d,CACT,CAEA,YC5bA,GAdA,SAAUv3G,GAGR,SAASyn0B,IACP,IAAIzjoC,EAAmB,OAAXg8T,GAAmBA,EAAOnoX,MAAMP,KAAMI,YAAcJ,KAGhE,OADA0sD,EAAMngD,KAAO4jrC,EAAoB5jrC,KAC1BmgD,CACT,CAGA,OAVAkgX,EAAUujxB,EAAqBzn0B,GAS/Byn0B,EAAoB5jrC,KAAO,kBACpB4jrC,CACT,CAZA,CAYE,ICQF,GApBA,SAAUzn0B,GAGR,SAAS0n0B,IACP,IAAI1joC,EAAmB,OAAXg8T,GAAmBA,EAAOnoX,MAAMP,KAAMI,YAAcJ,KAGhE,OADA0sD,EAAMngD,KAAO6jrC,EAAa7jrC,KACnBmgD,CACT,CASA,OAhBAkgX,EAAUwjxB,EAAc1n0B,GASxB0n0B,EAAa1wrC,UAAU4uH,OAAS,SAAUs+jC,EAAetpN,EAASr07B,EAAKna,GACrE90B,KAAK4srC,cAAgBA,EACrB5srC,KAAKsj+B,QAAUA,EACftj+B,KAAKivC,IAAMA,CACb,EAEAmhpC,EAAa7jrC,KAAO,WACb6jrC,CACT,CAlBA,CAkBE,ICJF,GAdA,SAAU1n0B,GAGR,SAAS2n0B,IACP,IAAI3joC,EAAmB,OAAXg8T,GAAmBA,EAAOnoX,MAAMP,KAAMI,YAAcJ,KAGhE,OADA0sD,EAAMngD,KAAO8jrC,EAAmB9jrC,KACzBmgD,CACT,CAGA,OAVAkgX,EAAUyjxB,EAAoB3n0B,GAS9B2n0B,EAAmB9jrC,KAAO,kBACnB8jrC,CACT,CAZA,CAYE,ICVF,IAAI,GAAO,EACP,GAAM,GASNC,GAEJ,WACE,SAASA,EAAUj0L,EAAS0wD,EAAW6/H,EAAetpN,GACpDtj+B,KAAKuwrC,SAAWl0L,EAChBr8/B,KAAKwwrC,WAAazjI,EAClB/sjC,KAAKsj+B,QAAUA,EACftj+B,KAAKywrC,eAAiB7D,CAKxB,CAoSA,OA9RA0D,EAAU5wrC,UAAUswrC,SAAW,SAAUpD,GACvC,OAAO5srC,KAAKywrC,iBAAmB7D,CACjC,EAMA0D,EAAU5wrC,UAAUmwrC,mBAAqB,WACvC,OAAO7vrC,KAAK0wrC,aAAa3urC,OAC3B,EAMAuurC,EAAU5wrC,UAAUiwrC,qBAAuB,WACzC,OAAO3vrC,KAAK2wrC,eAAe5urC,OAC7B,EAEAuurC,EAAU5wrC,UAAUkxrC,sBAAwB,WAC1C,IAAIjlK,EAAe,GAWnB,OAVA3rhC,KAAKsj+B,QAAQyf,YAAW,SAAUC,GAChC,GLrDC,SAA0BA,GAC/B,IAAI6tM,EAAY7tM,EAAY7/+B,IAAI,oBAChC,OAAO3C,EAAQisrC,GAAeoE,IAAc,CAC9C,CKkDUC,CAAiB9tM,GAAc,CACjC,IAAI+tM,EAAerE,GAAgB1srC,KAAKuwrC,UACpCvjI,EAAYhqE,EAAY4S,uBAAuBm7L,EAAcxsN,IAAkB1z0B,OAAO,GAEtFm85B,GAAahtjC,KAAKwwrC,aAAexjI,EAAU7hyB,gBAC7CwgwB,EAAa9phC,KAAKmh/B,EAEtB,CACF,GAAGhj/B,MACI2rhC,CACT,EAEA2kK,EAAU5wrC,UAAU0vrC,aAAe,WACjC,OAAOpvrC,KAAKsj+B,QAAQnpoB,aAAan6V,KAAKuwrC,SAAW,OAAQvwrC,KAAKwwrC,WAChE,EAEAF,EAAU5wrC,UAAUsxrC,cAAgB,WAClC,OAAO,EAAahxrC,KAAKixrC,YAC3B,EAMAX,EAAU5wrC,UAAUwxrC,oBAAsB,SAAU9wpB,GAClD,IASI+wpB,EATA/yN,EAAap+9B,KAAKoxrC,YAElBtvlC,EADY9hG,KAAKovrC,eACC3k/B,KAAK3oG,MAEvB8slC,EAAgB5urC,KAAKywrC,eAAeR,mBAEpCoB,EAAgB,CAAC,EAAG,KACpBC,EAAgB,GAChBC,EAAc,GAElB,GAAK,CAAC,QAAS,QAAQ,SAAU/kiC,EAAMsuN,GACrC,IAAI020B,EAAepxpB,EAAI5zY,GACnBiliC,EAAarxpB,EAAI5zY,EAAO,SAcD,YAAvBoiiC,EAAc9z0B,IACA,MAAhB020B,IAAyBA,EAAeH,EAAcv20B,IAEtD220B,EAAa3vlC,EAAMv1E,MAAM,GAAqBilqC,EAAcH,EAAejzN,MAE3E+yN,GAAmB,EAKnBK,EAAe,GAJfC,EAA2B,MAAdA,EAAqBrzN,EAAWtjnB,GAAOh5Q,EAAMv1E,MAAMklqC,GAIhBrzN,EAAYizN,IAM9DE,EAAYz20B,GAAqB,MAAd220B,GAAsBnlpC,MAAMmlpC,GAAcrzN,EAAWtjnB,GAAO220B,EAC/EH,EAAcx20B,GAAuB,MAAhB020B,GAAwBllpC,MAAMklpC,GAAgBH,EAAcv20B,GAAO020B,CAC1F,IACA,GAAID,GACJ,GAAID,GAMJ,IAAInnc,EAAQnqvB,KAAKixrC,YAGjB,SAASS,EAAYC,EAAYC,EAAUC,EAAYC,EAAUnpiC,GAC/D,IAAI92F,EAAS82F,EAAU,OAAS,YAChC+1/B,GAAW,EAAGizC,EAAYE,EAAY,MAAO1nc,EAAM,MAAQt4rB,GAASs4rB,EAAM,MAAQt4rB,IAElF,IAAK,IAAIjxD,EAAI,EAAGA,EAAI,EAAGA,IACrBgxrC,EAAShxrC,GAAK,GAAqB+wrC,EAAW/wrC,GAAIixrC,EAAYC,GAAU,GACxEnpiC,IAAYipiC,EAAShxrC,GAAKkhG,EAAMv1E,MAAMqlqC,EAAShxrC,IAEnD,CAEA,OAZAuwrC,EAAmBO,EAAYH,EAAaD,EAAelzN,EAAYizN,GAAe,GAASK,EAAYJ,EAAeC,EAAaF,EAAejzN,GAAY,GAY3J,CACLmzN,YAAaA,EACbD,cAAeA,EAEnB,EAQAhB,EAAU5wrC,UAAUuhE,MAAQ,SAAU2rnC,GACpC,GAAIA,IAAkB5srC,KAAKywrC,eAA3B,CAIA,IAAIvzB,EAAel9pC,KAAK4wrC,wBAExB5wrC,KAAKoxrC,YA6JT,SAA6B3B,EAAWxiI,EAASthC,GAC/C,IAAIvtD,EAAa,CAACr+5B,KAAU,KAC5B,GAAK4r9B,GAAc,SAAU3oC,I5PDxB,SAAiC5kB,EAAY5u9B,EAAMy9iC,GACpDz9iC,GACF,EAAYmxjC,GAAwBnxjC,EAAMy9iC,IAAU,SAAUt1tB,GAC5D,IAAIo61B,EAAevirC,EAAKo4iC,qBAAqBjwtB,GAC7Co61B,EAAa,GAAK3zN,EAAW,KAAOA,EAAW,GAAK2zN,EAAa,IACjEA,EAAa,GAAK3zN,EAAW,KAAOA,EAAW,GAAK2zN,EAAa,GACnE,GAEJ,C4PNIC,CAAwB5zN,EAAY4kB,EAAYx+2B,UAAWyo7B,EAC7D,IAUA,IAAID,EAAYyiI,EAAUL,eACtBxwH,EAAkBJ,GAAyBxR,EAAUvi3B,KAAK3oG,MAAOkr9B,EAAW5uF,GAAYjhkB,YAC5F,MAAO,CAACyhqB,EAAgB/wjC,IAAK+wjC,EAAgBjxjC,IAC/C,CA9KuBskrC,CAAoBjyrC,KAAMA,KAAKuwrC,SAAUrzB,GAE5Dl9pC,KAAKkyrC,oBAEL,IAAIC,EAAanyrC,KAAKkxrC,oBAAoBtE,EAAce,eACxD3trC,KAAK0wrC,aAAeyB,EAAWZ,YAC/BvxrC,KAAK2wrC,eAAiBwB,EAAWb,cAEjCtxrC,KAAKoyrC,eAZL,CAaF,EAEA9B,EAAU5wrC,UAAU2kqC,WAAa,SAAUuoB,EAAe39oC,GACxD,GAAI29oC,IAAkB5srC,KAAKywrC,eAA3B,CAIA,IAAIxjI,EAAUjtjC,KAAKuwrC,SACf5kK,EAAe3rhC,KAAK4wrC,wBACpBV,EAAatD,EAAczprC,IAAI,cAC/BourC,EAAcvxrC,KAAK0wrC,aAEJ,SAAfR,GAuBJ,GAAKvkK,GAAc,SAAU3oC,GAC3B,IAAIw1L,EAAax1L,EAAYx+2B,UACzBim5B,EAAW+tJ,EAAW1xJ,iBAAiBmmC,GAE3C,GAAKxiC,EAASpqhC,OAAd,CAIA,GAAmB,eAAf6vrC,EAA6B,CAC/B,IAAImC,EAAU7Z,EAAW1oK,WACrBwiL,EAAmB,EAAW7nK,GAAU,SAAU9yrB,GACpD,OAAO6g1B,EAAWzoK,kBAAkBp4qB,EACtC,GAAG6g1B,GACHA,EAAWvwH,YAAW,SAAU5i5B,GAK9B,IAJA,IAAIkthC,EACAC,EACA9ioB,EAEK9ujB,EAAI,EAAGA,EAAI6phC,EAASpqhC,OAAQO,IAAK,CACxC,IAAIO,EAAQkxrC,EAAQlvrC,IAAImvrC,EAAiB1xrC,GAAIykK,GACzCothC,GAAgBnmpC,MAAMnrC,GACtBuxrC,EAAcvxrC,EAAQowrC,EAAY,GAClCoB,EAAexxrC,EAAQowrC,EAAY,GAEvC,GAAIkB,IAAiBC,IAAgBC,EACnC,OAAO,EAGTF,IAAiB/ioB,GAAW,GAC5BgjoB,IAAgBH,GAAU,GAC1BI,IAAiBH,GAAW,EAC9B,CAGA,OAAO9ioB,GAAY6ioB,GAAWC,CAChC,GACF,MACE,GAAK/nK,GAAU,SAAU9yrB,GACvB,GAAmB,UAAfu41B,EACFltM,EAAYlk3B,QAAQ05iC,EAAaA,EAAWnppC,IAAIsoU,GAAK,SAAUx2V,GAC7D,OAgBV,SAAoBA,GAClB,OAAOA,GAASowrC,EAAY,IAAMpwrC,GAASowrC,EAAY,EACzD,CAlBkBqB,CAAWzxrC,GAAeA,EAANy6vB,GAC9B,SACK,CACL,IAAI75nB,EAAQ,CAAC,EACbA,EAAM41N,GAAO451B,EAEb/Y,EAAWplgB,YAAYrxiB,EACzB,CACF,IAGF,GAAK0o5B,GAAU,SAAU9yrB,GACvB6g1B,EAAW3wH,qBAAqB0pI,EAAa551B,EAC/C,GA/CA,CAgDF,GApFA,CAyFF,EAEA241B,EAAU5wrC,UAAUwyrC,kBAAoB,WACtC,IAAIW,EAAa7yrC,KAAKixrC,YAAc,CAAC,EACjCrE,EAAgB5srC,KAAKywrC,eACrBryN,EAAap+9B,KAAKoxrC,YACtB,GAAK,CAAC,MAAO,QAAQ,SAAUpn6B,GAC7B,IAAI8o6B,EAAclG,EAAczprC,IAAI6mR,EAAS,QACzC+o6B,EAAYnG,EAAczprC,IAAI6mR,EAAS,aAC9B,MAAb+o6B,IAAsBA,EAAY/yrC,KAAKovrC,eAAe3k/B,KAAK3oG,MAAMv1E,MAAMwmqC,IAEtD,MAAbA,EACFD,EAAc,GAAqB10N,EAAW,GAAK20N,EAAW30N,EAAY,CAAC,EAAG,MAAM,GAC5D,MAAf00N,IACTC,EAAY,GAAqBD,EAAa,CAAC,EAAG,KAAM10N,GAAY,GAAQA,EAAW,IAGzFy0N,EAAW7o6B,EAAS,QAAU8o6B,EAC9BD,EAAW7o6B,EAAS,aAAe+o6B,CACrC,GAAG/yrC,KACL,EAEAswrC,EAAU5wrC,UAAU0yrC,cAAgB,WAClC,IAAIplI,EAAYhtjC,KAAKovrC,eACjBkC,EAAgBtxrC,KAAK2wrC,eACrBY,EAAcvxrC,KAAK0wrC,aAEvB,GAAKY,EAAL,CAKA,IAAIr76B,EAAY,GAA6Bs76B,EAAa,CAAC,EAAG,MAC9Dt76B,EAAYpzQ,KAAKgL,IAAIooQ,EAAW,IAKhC,IAAIwozB,EAAgBzR,EAAUvi3B,KAAK3oG,MAAM289B,cAEhB,IAArB6yH,EAAc,IAChB7yH,EAAcJ,oBAAoB,OAAQkzH,EAAY,GAAGnuoC,QAAQ6yN,IAG1C,MAArBq76B,EAAc,IAChB7yH,EAAcJ,oBAAoB,OAAQkzH,EAAY,GAAGnuoC,QAAQ6yN,IAGnEwozB,EAAcn5hC,QAnBd,CAoBF,EAEOgrpC,CACT,CA/SA,GAoUA,YC/PA,GArFwB,CAItBpxJ,gBAAiB,SAAU57D,GACzB,SAAS0vN,EAActxnC,GACrB4h6B,EAAQwe,cAAc,YAAY,SAAU8qM,GAC1CA,EAAcI,gBAAe,SAAU//H,EAASF,GAC9C,IAAIC,EAAY1pF,EAAQnpoB,aAAauy1B,GAAgBz/H,GAAUF,GAC/Drr/B,EAAGur/B,EAASF,EAAWC,EAAW4/H,EACpC,GACF,GACF,CAIAoG,GAAc,SAAU/lI,EAASF,EAAWC,EAAW4/H,GAErD5/H,EAAUqiI,cAAgB,IAC5B,IACA,IAAI4D,EAAY,GAChBD,GAAc,SAAU/lI,EAASF,EAAWC,EAAW4/H,GAGhD5/H,EAAUqiI,gBAEbriI,EAAUqiI,cAAgB,IAAI,GAAUpiI,EAASF,EAAW6/H,EAAetpN,GAC3E2vN,EAAUpxrC,KAAKmrjC,EAAUqiI,eAE7B,IACA,IAAI6D,EAAiBhoP,KAMrB,OALA,EAAK+nP,GAAW,SAAUxD,GACxB,EAAKA,EAAUmB,yBAAyB,SAAU5tM,GAChDkwM,EAAejnrC,IAAI+2+B,EAAY5vpB,IAAK4vpB,EACtC,GACF,IACOkwM,CACT,EAIAj3J,aAAc,SAAU34D,EAASr07B,GAC/Bq07B,EAAQwe,cAAc,YAAY,SAAU8qM,GAI1CA,EAAcI,gBAAe,SAAU//H,EAASF,GAC9C6/H,EAAcuC,aAAaliI,EAASF,GAAW9r/B,MAAM2rnC,EACvD,IAeAA,EAAcI,gBAAe,SAAU//H,EAASF,GAC9C6/H,EAAcuC,aAAaliI,EAASF,GAAWs3G,WAAWuoB,EAAe39oC,EAC3E,GACF,IACAq07B,EAAQwe,cAAc,YAAY,SAAU8qM,GAG1C,IAAI6C,EAAY7C,EAAc8C,8BAE9B,GAAID,EAAW,CACb,IAAI0D,EAAe1D,EAAUE,uBACzByD,EAAa3D,EAAUI,qBAC3BjD,EAAc2C,mBAAmB,CAC/B/opC,MAAO2spC,EAAa,GACpB1spC,IAAK0spC,EAAa,GAClB3k1B,WAAY4k1B,EAAW,GACvB3k1B,SAAU2k1B,EAAW,IAEzB,CACF,GACF,GCpFF,IAAIC,IAAY,EACD,SAASC,GAAcvjH,GAChCsjH,KAIJA,IAAY,EACZtjH,EAAU70B,kBAAkB60B,EAAU/gC,SAASC,UAAUrxW,OAAQ,ICPpD,SAA+BmyY,GAC5CA,EAAUr0B,eAAe,YAAY,SAAU5mhC,EAASwu8B,GAEtD,ER8BG,SAA+BA,EAASxu8B,GAE7C,IAeIy+pC,EAfAC,EAActoP,KACduoP,EAAiB,GAEjBC,EAAmBxoP,KAEvBo4B,EAAQwe,cAAc,CACpBhe,SAAU,WACV704B,MAAOn6D,IACN,SAAU83pC,GACN8G,EAAiBvwrC,IAAIyprC,EAAcx51B,MACtCug2B,EAAc/G,EAElB,IAKA,GACE2G,GAAe,EACfjwN,EAAQwe,cAAc,WAAY8xM,SAC3BL,GAET,SAASK,EAAchH,IAChB8G,EAAiBvwrC,IAAIyprC,EAAcx51B,MAY1C,SAAkBw51B,GAChB,IAAIiH,GAAS,EAQb,OAPAjH,EAAcI,gBAAe,SAAU//H,EAASF,GAC9C,IAAI+mI,EAAaN,EAAYrwrC,IAAI8pjC,GAE7B6mI,GAAcA,EAAW/mI,KAC3B8mI,GAAS,EAEb,IACOA,CACT,CAtBkDE,CAASnH,KACvD+G,EAAc/G,GACd2G,GAAe,EAEnB,CAEA,SAASI,EAAc7lM,GACrB4lM,EAAiBznrC,IAAI6h/B,EAAS16pB,KAAK,GACnCqg2B,EAAe5xrC,KAAKis/B,GACDA,EAgBLk/L,gBAAe,SAAU//H,EAASF,IAC7CymI,EAAYrwrC,IAAI8pjC,IAAYumI,EAAYvnrC,IAAIghjC,EAAS,KAAKF,IAAa,CAC1E,GAjBF,CAoBA,OAAO0mI,CACT,CQvFyBO,CAAsB1wN,EAASxu8B,IAC/B,SAAU83pC,GAC7BA,EAAc0C,YAAY,CACxB9opC,MAAO1R,EAAQ0R,MACfC,IAAK3R,EAAQ2R,IACb+nU,WAAY15U,EAAQ05U,WACpBC,SAAU35U,EAAQ25U,UAEtB,GACF,GACF,CDJEwl1B,CAAsBlkH,GACtBA,EAAU35E,yBAAyB,YAAY,WAE7C,MAAO,QACT,IACF,CEZO,SAAS,GAAQ25E,GACtBA,EAAUpyB,uBAAuBu2I,IACjCnkH,EAAUnyB,sBAAsBu2I,IAChCb,GAAcvjH,EAChB,CCzBA,IAAIqkH,GAGF,WAA2B,EAMzB1opC,GAAW,CAAC,EACT,SAAS2opC,GAAgB3prC,EAAM8sc,GACpC9ra,GAAShhC,GAAQ8sc,CACnB,CACO,SAASn5I,GAAW3zT,GACzB,OAAOghC,GAAShhC,EAClB,CC8EA,SApEA,SAAUg+W,GAGR,SAAS4r0B,IACP,IAAI5noC,EAAmB,OAAXg8T,GAAmBA,EAAOnoX,MAAMP,KAAMI,YAAcJ,KAGhE,OADA0sD,EAAMngD,KAAO+nrC,EAAa/nrC,KACnBmgD,CACT,CAyDA,OAhEAkgX,EAAU0nxB,EAAc5r0B,GASxB4r0B,EAAa50rC,UAAU61/B,cAAgB,WACrC7soB,EAAOhpX,UAAU61/B,cAAch1/B,MAAMP,KAAMI,WAE3C,IAAIkj+B,EAAUtj+B,KAAKsj+B,QACnB,EAAYtj+B,KAAK69D,OAAOsU,SAAS,SAAUu47B,EAAYry9B,GACrD,IAAImq4B,EAAU,GAA0Bnq4B,GAEpCmq4B,IACEA,EAAQ1hZ,mBACV0hZ,EAAQ5hZ,cAAgB4hZ,EAAQ1hZ,iBAAiBwic,IAGnD,EAAaonC,EAAYloF,EAAQ5hZ,eAErC,GACF,EAEA0zpB,EAAa/nrC,KAAO,UACpB+nrC,EAAa9/L,WAAa,CACxBjo/B,KAAM,MACNoo/B,YAAY,GAEd2/L,EAAa1zpB,cAAgB,CAC3B39M,MAAM,EACNt9U,EAAG,EAEH6t/B,OAAQ,aACR309B,KAAM,QACNC,IAAK,MAGL46G,gBAAiB,cACjB4+N,YAAa,OACbK,aAAc,EACd6+nB,YAAa,EACbt/2B,QAAS,EACTmjhC,SAAU,GACVk5C,QAAS,EACTC,WAAW,EACXhzJ,UAAW,CACTlprB,YAAa,OACb/qP,MAAO,QAETqz2B,SAAU,CACR4gE,UAAW,CACTlprB,YAAa,YAKjBj6N,QAAS,CACP4kM,MAAM,EACNtkT,SAAU,WAGP21pC,CACT,CAlEA,CAkEE5niC,IClDK,SAAS+niC,GAAe/gmC,EAAMmv4B,GACnC,IAAI3q2B,EAAU,GAA6B2q2B,EAAe1/9B,IAAI,YAC1DkR,EAAQwu9B,EAAekpB,aAAa,CAAC,QAAS,YAkBlD,OAjBA13+B,EAAM+oH,KAAOyl2B,EAAe1/9B,IAAI,mBACzB,IAAI,GAAa,CACtBm/N,MAAO,CACLr+N,EAAGyvF,EAAKzvF,EAAIi0H,EAAQ,GACpBl1H,EAAG0wF,EAAK1wF,EAAIk1H,EAAQ,GACpBn5F,MAAO20D,EAAK30D,MAAQm5F,EAAQ,GAAKA,EAAQ,GACzCl5F,OAAQ00D,EAAK10D,OAASk5F,EAAQ,GAAKA,EAAQ,GAC3Cn4H,EAAG8i+B,EAAe1/9B,IAAI,iBAExBkR,MAAOA,EACP+/d,QAAQ,EACRr3S,IAAK,GAOT,CC/BA,IAAI23/B,GAEJ,SAAUhs0B,GAGR,SAASgs0B,IACP,OAAkB,OAAXhs0B,GAAmBA,EAAOnoX,MAAMP,KAAMI,YAAcJ,IAC7D,CA8PA,OAlQA4sa,EAAU8nxB,EAAahs0B,GAMvBgs0B,EAAYh1rC,UAAU4uH,OAAS,SAAUqmkC,EAAcrxN,EAASr07B,EAAKna,GACnE,IAAIsmS,EAAQp7T,KAAKo7T,MAGjB,GAFAA,EAAMvtE,YAED8m8B,EAAaxxrC,IAAI,QAAtB,CAIA,IAAIk4oC,GAAYs5C,EAAaxxrC,IAAI,YAC7BwmiB,EAA4C,aAA/BgrpB,EAAaxxrC,IAAI,UAC9ByxrC,EAAcD,EAAaxxrC,IAAI,YAAc,CAAC,EAC9CuoC,EAAW1rC,KAAK60rC,YAAc70rC,KAAK60rC,UAAY,CAAC,GAChDC,EAAe,GACnB,EAAYF,GAAa,SAAUx0pB,EAAK11hB,GACtCoqrC,EAAajzrC,KAAK6I,EACpB,IACA,IAAI,GAAW1K,KAAK+0rC,eAAiB,GAAID,GAAc3vqC,IAAI6vqC,GAAgBzmnC,OAAOymnC,GAAgBniqC,OAAO,GAAamiqC,EAAgB,OAAOjzyB,UAE7I/hZ,KAAK+0rC,cAAgBD,ED5BlB,SAAgB153B,EAAOynqB,EAAgB5z7B,GAC5C,IAAI66jC,EAAkBjnI,EAAeizB,qBACjC593B,EAAU2q2B,EAAe1/9B,IAAI,WAC7B85J,EAAe,CACjBl+H,MAAOkQ,EAAIk8L,WACXnsM,OAAQiQ,EAAI+rI,aAEVtnF,EAAOqg6B,GAAc+1G,EAAiB7s8B,EAAc/kC,GACxD,GAAU2q2B,EAAe1/9B,IAAI,UAAWi4T,EAAOynqB,EAAe1/9B,IAAI,WAAYuwF,EAAK30D,MAAO20D,EAAK10D,QAC/Fm19B,GAAgB/4rB,EAAO0uyB,EAAiB7s8B,EAAc/kC,EACxD,CC4LI,CAA2BkjM,EAAOu53B,EAAc1lpC,GAGhDmsR,EAAMj2S,IAAI,GAAmCi2S,EAAMj3E,kBAAmBww8B,IAEtEhrpB,GAAcvuO,EAAM+/pB,WAAU,SAAU1qvB,GACtC,IAAI8lmB,EAAY9lmB,EAAKwk9B,QAGjBpoH,EAAgBp81B,EAAK+kvB,YAAY,YACjC0/N,EAAqBroH,EAAch6G,aAAeg6G,EAAch6G,WAAa,CAAC,GAC9E7l4B,EAAcyjJ,EAAK9jJ,iBACnBwomC,EAAoBnomC,GAAeA,EAAYwo4B,YAAY,YAE/D,GAAI2/N,IAAsB,GAAkBA,IAAsB5+W,EAAW,CAC3E,IAAI6+W,EAAoBD,EAAkB9grC,QAAU8grC,EAAkB9grC,MAAQ,CAAC,GAC3Eq/E,EAAO,GAA4B6ivB,EAAW,GAAOkmK,SAAS24M,IAC9Dj9jC,EAAUs4G,EAAKxsO,EAAIm3T,EAAMn3T,EAEzBoxrC,GAAe,EADL5k9B,EAAKztO,EAAIo4T,EAAMp4T,EAAIq4oC,EAGnB3njC,EAAK10D,OAASiQ,EAAI+rI,cAC9Bk6gC,EAAmBv2pC,SAAW,MAC9B02pC,GAAe,GAGjB,IAAIjr9B,EAAYir9B,GAAgB,EAAI3hmC,EAAK10D,OAASq8mC,EAAW,GAEzDljhC,EAAUzkC,EAAK30D,MAAQ,EAAIkQ,EAAIk8L,YACjC+p9B,EAAmBv2pC,SAAW,CAAC,OAAQyrM,GACvCgr9B,EAAkB7wa,MAAQ,SACjBpspB,EAAUzkC,EAAK30D,MAAQ,EAAI,IACpCm2pC,EAAmBv2pC,SAAW,CAAC,EAAGyrM,GAClCgr9B,EAAkB7wa,MAAQ,OAE9B,CACF,GA1NA,CAcA,SAASywa,EAAens4B,EAAU4kN,GAChC,IAIIt7b,EAJA95B,EAAcy8oC,EAAajs4B,GAC3B0/sB,EAAUusL,EAAarnrB,GACvBi9f,EAAakqL,EAAYv8oC,GACzBi9oC,EAAe,IAAI,GAAM5qL,EAAYiqL,EAAcA,EAAarxN,SAOpE,GAJIxu8B,GAA+B,MAApBA,EAAQygqC,UAAoBzgqC,EAAQujB,cAAgBA,IACjEqy9B,EAAWr71B,MAAQv6I,EAAQygqC,UAGzBl9oC,IAAgBkw9B,EAAS,CAE3B,GA8NR,SAA2Blw9B,GACzB,OAAqC,IAA9BA,EAAY73C,QAAQ,KAC7B,CAhOYg1rC,CAAkBn9oC,GACpB85B,EAAU,CACRsnjC,QAAS67D,EAAaz3nC,OAAO47jC,QAC7BphlC,YAAaA,OAEV,CACL,IAAImq4B,EAAUnknB,GAAWhmR,GAEzB,IAAKmq4B,EACH,OAGFrw2B,EAAU,IAAIqw2B,CAChB,CAEA924B,EAAS2M,GAAe85B,CAC1B,MAGE,KAFAA,EAAUzmC,EAAS689B,IAGjB,OAIJp27B,EAAQihR,IAAMo5pB,GAAO,mBACrBr66B,EAAQ4iD,MAAQugkC,EAChBnjnC,EAAQmx5B,QAAUA,EAClBnx5B,EAAQljC,IAAMA,EACd,IAAIwmpC,EAAmBtjnC,aAAmBiinC,GAErC/7oC,IAAekw9B,GAKf+sL,EAAanyrC,IAAI,SAAWsyrC,GAAoBtjnC,EAAQujnC,SAC3DD,GAAoBtjnC,EAAQt/C,QAAUs/C,EAAQt/C,OAAOyw8B,EAASr07B,IAwBlE,SAAyBqmpC,EAAcnjnC,EAAS95B,GAC9C,IAeIs9oC,EACAC,EAhBAC,EAAiBP,EAAa19/B,SAAS,aACvCk+/B,EAAyBR,EAAa19/B,SAAS,CAAC,WAAY,cAY5D6gD,EAAQtmK,aAAmBiinC,IAAkBjinC,EAAQ4jnC,SAAW5jnC,EAAQ4jnC,WAAaT,EAAanyrC,IAAI,QACtG6yrC,EAASV,EAAanyrC,IAAI,UAAY,CAAC,EAIvC,GAAgBs1O,IAClBk98B,EAAW,CAAC,GACHt9oC,GAAeogM,EAExBk98B,EAAWl98B,EAGT,GAAgBu98B,IAClBJ,EAAY,CAAC,GACHv9oC,GAAe29oC,EAEzBJ,EAAYI,EAGd,IAAIC,EAAYX,EAAaW,UAAY,CAAC,EAC1C,EAAYN,GAAU,SAAUv+J,EAASnlgB,GACvC,IAAI57f,EAAO,GAAmB+ggC,EAAS,CAAC,EAAG,CACzCnzhC,GAAIo3oC,EAAW,EACfr4oC,GAAIq4oC,EAAW,EACft8mC,MAAOs8mC,EACPr8mC,OAAQq8mC,IAGVhlnC,EAAKiuY,SAASuxxB,EAAe9pM,gBACL119B,EAAKm/7B,YAAY,YACvBnh9B,MAAQyhrC,EAAuB/pM,eAEjD,IAAI/+5B,EAAc,IAAI,GAAO,CAC3B34E,MAAO,CACL+b,KAAMwlqC,EAAU3jqB,GAChBsyP,MAAOuxa,EAAuB3yrC,IAAI,aAClCw1W,aAAcm90B,EAAuB3yrC,IAAI,oBACzC+0H,QAAS49jC,EAAuB3yrC,IAAI,eACpCi6H,KAAM,MAERj1F,QAAQ,IAEV9R,EAAKs+7B,eAAe3n4B,GACpB,GAAyB,CACvB6sD,GAAIxjH,EACJws8B,eAAgB8xN,EAChBt5L,SAAUppe,EACVumgB,qBAAsB,CACpBnp3B,MAAOumhC,EAAU3jqB,MAGrB57f,EAAK4+pC,QAAUW,EAAU3jqB,GACzB57f,EAAKzlB,GAAG,aAAa,WAEnB,IAAIslrC,EAAaJ,EAAuB/pM,eACpCoqM,EAAsBxspB,EAA0C,MAA7BgrpB,EAAaxxrC,IAAI,UAAiD,UAA7BwxrC,EAAaxxrC,IAAI,QAAsB,QAAU,OAAuC,MAA9BwxrC,EAAaxxrC,IAAI,WAAiD,WAA5BwxrC,EAAaxxrC,IAAI,OAAsB,SAAW,MAC9N6pF,EAAYs3U,SAAS,CACnBlnS,KAAM04jC,EAAuB3yrC,IAAI,aAAe+yrC,EAAW94jC,MAAQ84jC,EAAW94a,QAAU,OACxF1joB,gBAAiBo8iC,EAAuB3yrC,IAAI,yBAE9CkzB,EAAKq+7B,cAAc,CACjB/17B,SAAUm3pC,EAAuB3yrC,IAAI,iBAAmBgzrC,IAE1DnpmC,EAAY7kD,QAAUwspC,EAAaxxrC,IAAI,aAGvC8rC,EAAIky8B,cAAcnh/B,KACpB,IAAG4Q,GAAG,YAAY,WACmC,aAA/C0krC,EAAanyrC,IAAI,CAAC,aAAc8uhB,KAClChjf,EAAIoy8B,cAAcrh/B,MAGpBgtF,EAAYm9T,MACd,KACgD,aAA/CmryB,EAAanyrC,IAAI,CAAC,aAAc8uhB,IAA4Bkvd,GAAgBE,IAAehr9B,GAC5F+kS,EAAMj2S,IAAIkR,GACVA,EAAKzlB,GAAG,QAAS,GAAYuhE,EAAQsnjC,QAAStnjC,EAASmx5B,EAASr07B,EAAKgjf,IACrEgkqB,EAAUhkqB,GAAY57f,CACxB,GACF,CAjHE+/pC,CAAgBd,EAAcnjnC,EAAS95B,GAEvCi9oC,EAAae,cAAgB,SAAUpkqB,EAAUxsgB,GAC/C,IAAIo4C,EAAS79D,KAAK69D,OACdo4nC,EAAYj2rC,KAAKi2rC,UACrBp4nC,EAAOy4nC,WAAaz4nC,EAAOy4nC,YAAc,CAAC,EAC1Cz4nC,EAAOy4nC,WAAWrkqB,GAAYxsgB,EAE1BwwqC,EAAUhkqB,KACA,aAAXxsgB,EAAwB079B,GAAgBE,IAAe40M,EAAUhkqB,GAEtE,EAEI9/c,aAAmBiinC,IACjBjinC,EAAQm8C,QACVn8C,EAAQm8C,OAAOgnkC,EAAchyN,EAASr07B,EAAKna,IAxB7C2gqC,GAAoBtjnC,EAAQkz3B,SAAWlz3B,EAAQkz3B,QAAQi+B,EAASr07B,EA2BpE,CAsIF,EAEAylpC,EAAYh1rC,UAAU8rhC,WAAa,SAAUmpK,EAAcrxN,EAASr07B,EAAKna,GACvE,EAAY90B,KAAK60rC,WAAW,SAAU1inC,GACpCA,aAAmBiinC,IAAkBjinC,EAAQq58B,YAAcr58B,EAAQq58B,WAAWr58B,EAAQ4iD,MAAOuu2B,EAASr07B,EAAKna,EAC7G,GACF,EAOA4/pC,EAAYh1rC,UAAUmzB,OAAS,SAAUyw8B,EAASr07B,GAChD,EAAYjvC,KAAK60rC,WAAW,SAAU1inC,GACpCA,aAAmBiinC,IAAkBjinC,EAAQt/C,QAAUs/C,EAAQt/C,OAAOyw8B,EAASr07B,EACjF,IACAjvC,KAAKo7T,MAAMvtE,WACb,EAEA6m8B,EAAYh1rC,UAAU2l8B,QAAU,SAAUi+B,EAASr07B,GACjD,EAAYjvC,KAAK60rC,WAAW,SAAU1inC,GACpCA,aAAmBiinC,IAAkBjinC,EAAQkz3B,SAAWlz3B,EAAQkz3B,QAAQi+B,EAASr07B,EACnF,GACF,EAEAylpC,EAAYnorC,KAAO,UACZmorC,CACT,CApQA,CAoQE,IAMF,YCxKA,GAvGA,SAAUhs0B,GAGR,SAAS6t0B,IACP,OAAkB,OAAX7t0B,GAAmBA,EAAOnoX,MAAMP,KAAMI,YAAcJ,IAC7D,CA+FA,OAnGA4sa,EAAU2pxB,EAAa7t0B,GAMvB6t0B,EAAY72rC,UAAU+5nC,QAAU,SAAUn2J,EAASr07B,GACjD,IAAI8lF,EAAQ/0H,KAAK+0H,MACbs6C,EAAQt6C,EAAM5xH,IAAI,SAAWmg+B,EAAQng+B,IAAI,iBAAmB,UAC5D2wiC,EAA0C,QAAlC7kgC,EAAIk9/B,QAAQ/3F,QAAQpv6B,UAC5Bz4B,EAAOuniC,EAAQ,MAAQ/+6B,EAAM5xH,IAAI,QAAQ,IAAS,MAClD+sB,EAAM+e,EAAI4kgC,oBAAoB,CAChCtniC,KAAMA,EACNmtI,gBAAiB3kB,EAAM5xH,IAAI,mBAAmB,IAASmg+B,EAAQng+B,IAAI,oBAAsB,OACzFsxiC,yBAA0B1/6B,EAAM5xH,IAAI,4BACpCuwiC,kBAAmB3+6B,EAAM5xH,IAAI,qBAC7ByrH,WAAYmG,EAAM5xH,IAAI,gBAEpBi9R,EAAU,EAAIA,QAElB,GAAIp7B,GAAWw3Y,cAAgBp8W,EAAQmmqB,UAAYnmqB,EAAQr5R,KAAOq5R,EAAQynE,MAAO,CAC/E,IAAI2u1B,EAAKrxrC,SAASmE,cAAc,KAChCktrC,EAAGn0mC,SAAWgtF,EAAQ,IAAM9iK,EAC5BiqrC,EAAG1mrC,OAAS,SACZ0mrC,EAAGv7pC,KAAO/K,EACV,IAAIk3D,EAAM,IAAIo1jB,WAAW,QAAS,CAEhCj1lB,KAAMpiD,SAASswZ,YACf1rY,SAAS,EACTC,YAAY,IAEdwsqC,EAAGtsqC,cAAck9D,EACnB,MAGI,GAAIllF,OAAOm3B,UAAUo9pC,kBAAoB3iJ,EAAO,CAC9C,IAAIt0/B,EAAQtvB,EAAItrB,MAAM,KAElB8xrC,EAAgBl3oC,EAAM,GAAGh/C,QAAQ,WAAa,EAC9Cm2rC,EAAO7iJ,EACTlkhC,mBAAmB4vB,EAAM,IAAMA,EAAM,GAKvCk3oC,IAAkBC,EAAOz0rC,OAAO2tB,KAAK8mqC,IACrC,IAAInv7B,EAAWn4F,EAAQ,IAAM9iK,EAE7B,GAAIrK,OAAOm3B,UAAUo9pC,iBAAkB,CAIrC,IAHA,IAAIp3rC,EAAIs3rC,EAAKt2rC,OACTu2rC,EAAQ,IAAIj3qC,WAAWtgB,GAEpBA,KACLu3rC,EAAMv3rC,GAAKs3rC,EAAK59qC,WAAW1Z,GAG7B,IAAIixB,EAAO,IAAIvI,KAAK,CAAC6uqC,IAErB10rC,OAAOm3B,UAAUo9pC,iBAAiBnmqC,EAAMk3O,EAC1C,KAAO,CACL,IAAI1wN,EAAQ3xC,SAASmE,cAAc,UACnCnE,SAAS4rB,KAAKxc,YAAYuiC,GAC1B,IAAI2+M,EAAK3+M,EAAMriC,cACXiyC,EAAM+uM,EAAGtwP,SACbuhD,EAAIhyC,KAAK,gBAAiB,WAC1BgyC,EAAI3yC,MAAM4irC,GACVjwoC,EAAI1yC,QACJyhP,EAAGq7G,QACHpqT,EAAI85pB,YAAY,UAAU,EAAMh5c,GAChCriQ,SAAS4rB,KAAK8L,YAAYia,EAC5B,CACF,KAAO,CACL,IAAIo28B,EAAOn43B,EAAM5xH,IAAI,QACjB62I,EAAO,qCAAiD9pH,EAAM,qCAAuCg99B,GAAQA,EAAK,IAAM,IAAjH,cACPl+gB,EAAM9se,OAAOwS,OACjBs6d,EAAI7pe,SAAS4O,MAAMimI,GACnBg1V,EAAI7pe,SAASkqK,MAAQA,CACvB,CAEN,EAEAknhC,EAAYz1pB,iBAAmB,SAAUwic,GAevC,MAdoB,CAClBrgpB,MAAM,EACNxyG,KAAM,mFACNphE,MAAOi0zB,EAAQgqB,iBAAiBnq/B,IAAI,CAAC,UAAW,cAAe,UAC/DoJ,KAAM,MAGNkoiC,yBAA0B,OAC1B/piC,KAAM,GACNgpiC,kBAAmB,CAAC,WAGpBxmD,KAAM5pB,EAAQgqB,iBAAiBnq/B,IAAI,CAAC,UAAW,cAAe,SAGlE,EAEOozrC,CACT,CArGA,CAqGEnC,IC1GF,IAAIyC,GAAsB,yBAItBC,GAAa,CAAC,CAAC,OAAQ,OAAQ,CAAC,UAEhCC,GAEJ,SAAUru0B,GAGR,SAASqu0B,IACP,OAAkB,OAAXru0B,GAAmBA,EAAOnoX,MAAMP,KAAMI,YAAcJ,IAC7D,CAuHA,OA3HA4sa,EAAUmqxB,EAAWru0B,GAMrBqu0B,EAAUr3rC,UAAUq2rC,SAAW,WAC7B,IAAIhhkC,EAAQ/0H,KAAK+0H,MACbiikC,EAAiBjikC,EAAM5xH,IAAI,QAC3Bs1O,EAAQ,CAAC,EAMb,OALA,EAAY1jH,EAAM5xH,IAAI,SAAS,SAAUoJ,GACnCyqrC,EAAezqrC,KACjBksO,EAAMlsO,GAAQyqrC,EAAezqrC,GAEjC,IACOksO,CACT,EAEAs+8B,EAAUj2pB,iBAAmB,SAAUwic,GAiBrC,MAhBoB,CAClBrgpB,MAAM,EACN12U,KAAM,GAENkkO,KAAM,CACJnxL,KAAM,+DACNi4Z,IAAK,kFAEL5ka,MAAO,oYAIT08H,MAAOi0zB,EAAQgqB,iBAAiBnq/B,IAAI,CAAC,UAAW,YAAa,UAC7D06D,OAAQ,CAAC,EACTq/6B,YAAa,CAAC,EAGlB,EAEA65M,EAAUr3rC,UAAU+5nC,QAAU,SAAUn2J,EAASr07B,EAAK1iC,GACpD,IAAIwoH,EAAQ/0H,KAAK+0H,MACbmo3B,EAAcno3B,EAAM5xH,IAAI,CAAC,cAAeoJ,IAE5C,GAAK0qrC,GAAmB1qrC,GAAxB,CAIA,IAmDIgprC,EAnDA3zN,EAAY,CACd9kN,OAAQ,IAoCV,EAAYg6a,IAAY,SAAUI,GAC5B,EAAeA,EAAO3qrC,IAAS,GACjC,EAAY2qrC,GAAO,SAAU91oC,GAC3B2zE,EAAMshkC,cAAcj1oC,EAAM,SAC5B,GAEJ,IACA2zE,EAAMshkC,cAAc9prC,EAAM,YAC1B+29B,EAAQwe,cAAc,CACpBhe,SAAU,SACV704B,MAAsB,MAAfiu5B,EAAsB,KAAO,CAClCA,YAAaA,KA5CY,SAAU8F,GACrC,IAAIvmK,EAAaumK,EAAYjc,QACzBhqN,EAAWimO,EAAYz39B,GACvB4rqC,EAAeF,GAAmB1qrC,GAAMkw0B,EAAY1/D,EAAUimO,EAAaju3B,GAE3EoikC,IAEF,EAAgBA,EAAcn0M,EAAYnl7B,QAC1C+j6B,EAAU9kN,OAAOj7wB,KAAKs1rC,IAIxB,IAAIj0M,EAAWF,EAAYjx3B,iBAE3B,GAAImx3B,GAA8B,gBAAlBA,EAAS32+B,OAAoC,SAATA,GAA4B,QAATA,GAAiB,CACtF,IAAIsv2B,EAAeqnI,EAAS6qG,eAAe,WAAW,GAEtD,GAAIlyO,EAAc,CAChB,IACIt0B,EADUs0B,EAAalkhB,IACF,OAErBo1tB,EADY/pE,EAAY4S,uBAAuBruK,EAAUg9I,IAAkB1z0B,OAAO,GAC5Ds6H,eAC1By2sB,EAAUr6I,GAAYq6I,EAAUr6I,IAAa,GAE7C,IAAK,IAAI3m1B,EAAI,EAAGA,GAAKmsjC,EAAWnsjC,IAC9Bgh+B,EAAUr6I,GAAUwlO,GAAanrF,EAAUr6I,GAAUwlO,IAAc,CAAC,EAGtEnrF,EAAUr6I,GAAUwlO,GAAWsQ,YAAuB,QAAT9wjC,CAC/C,CACF,CACF,IAiBA,IAAI6qrC,EAAc7qrC,EAEL,UAATA,IAIFgprC,EAAW,EAAa,CACtB5ipC,MAAOoiF,EAAMl3D,OAAOwxG,MAAM4+0B,MAC1BA,MAAOl53B,EAAMl3D,OAAOwxG,MAAM18H,OACzBoiF,EAAMl3D,OAAOwxG,OAEwB,aAApCt6C,EAAM5xH,IAAI,CAAC,aAAcoJ,MAC3B6qrC,EAAc,UAIlBnopC,EAAIu1/B,eAAe,CACjBj4hC,KAAM,kBACN6qrC,YAAaA,EACbx1N,UAAWA,EACX2zN,SAAUA,EACVl9oC,YAAa,aA3Ef,CA6EF,EAEO0+oC,CACT,CA7HA,CA6HE3C,IAEE6C,GAAqB,CACvB,KAAQ,SAAUx6W,EAAY1/D,EAAUimO,EAAaju3B,GACnD,GAAmB,QAAf0ntB,EACF,OAAO,EAAa,CAClBlxzB,GAAIwxvB,EACJxwwB,KAAM,OAENiD,KAAMwz+B,EAAY7/+B,IAAI,QACtBwvC,MAAOqw8B,EAAY7/+B,IAAI,SACvB8lgC,UAAWjmB,EAAY7/+B,IAAI,aAC3B+lgC,SAAUlmB,EAAY7/+B,IAAI,aACzB4xH,EAAM5xH,IAAI,CAAC,SAAU,UAAY,CAAC,GAAG,EAE5C,EACA,IAAO,SAAUs50B,EAAY1/D,EAAUimO,EAAaju3B,GAClD,GAAmB,SAAf0ntB,EACF,OAAO,EAAa,CAClBlxzB,GAAIwxvB,EACJxwwB,KAAM,MAENiD,KAAMwz+B,EAAY7/+B,IAAI,QACtBwvC,MAAOqw8B,EAAY7/+B,IAAI,SACvB8lgC,UAAWjmB,EAAY7/+B,IAAI,aAC3B+lgC,SAAUlmB,EAAY7/+B,IAAI,aACzB4xH,EAAM5xH,IAAI,CAAC,SAAU,SAAW,CAAC,GAAG,EAE3C,EACA,MAAS,SAAUs50B,EAAY1/D,EAAUimO,EAAaju3B,GACpD,IAAIsikC,EAAUr0M,EAAY7/+B,IAAI,WAAa0zrC,GAE3C,GAAmB,SAAfp6W,GAAwC,QAAfA,EAE3B,OADA1ntB,EAAMshkC,cAAc,QAASgB,EAAU,SAAW,YAC3C,EAAa,CAClB9rqC,GAAIwxvB,EACJpquB,MAAO0kpC,EAAU,GAAKR,IACrB9hkC,EAAM5xH,IAAI,CAAC,SAAU,WAAa,CAAC,GAAG,EAE7C,GAGF,GAAuB,CACrBoJ,KAAM,kBACNkyB,MAAO,mBACP8vC,OAAQ,qBACP,SAAUz5C,EAASwu8B,GACpBA,EAAQ2oB,YAAYn39B,EAAQ8s8B,UAC9B,IACA,YCjLA,IAAI01N,GAAgB,IAAI73rC,MAAM,IAAIoN,KAAK,KACnC0qrC,GAAe,KA0HnB,SAAS,GAAK5gnC,GACZ,OAAOA,EAAIlqE,QAAQ,SAAU,IAAIA,QAAQ,SAAU,GACrD,CAeA,IAAI+qrC,GAAiB,IAAIzvpC,OAAO,QAA2B,KA0G3D,IAAIxpB,GAEJ,SAAUmqW,GAGR,SAASnqW,IACP,OAAkB,OAAXmqW,GAAmBA,EAAOnoX,MAAMP,KAAMI,YAAcJ,IAC7D,CAiJA,OArJA4sa,EAAUruZ,EAAUmqW,GAMpBnqW,EAAS7e,UAAU+5nC,QAAU,SAAUn2J,EAASr07B,GAE9CppB,YAAW,WACTopB,EAAIu1/B,eAAe,CACjBj4hC,KAAM,WAEV,IACA,IAAI60I,EAAYnyG,EAAI8jgC,SAChBh+6B,EAAQ/0H,KAAK+0H,MAEb/0H,KAAK+xiC,MACP3w5B,EAAUvkH,YAAY78B,KAAK+xiC,MAG7B,IAAI5h5B,EAAOhrJ,SAASmE,cAAc,OAElC6mJ,EAAK97I,MAAM2qY,QAAU,8DACrB7uP,EAAK97I,MAAMqlI,gBAAkB3kB,EAAM5xH,IAAI,oBAAsB,OAE7D,IAAI0xB,EAAS1vB,SAASmE,cAAc,MAChC4j/B,EAAOn43B,EAAM5xH,IAAI,SAAW,GAChC0xB,EAAOolH,UAAYiz2B,EAAK,IAAMn43B,EAAM5xH,IAAI,SACxC0xB,EAAOxgB,MAAM2qY,QAAU,mBACvBnqX,EAAOxgB,MAAMk5G,MAAQwH,EAAM5xH,IAAI,aAC/B,IAAIs0rC,EAAWtyrC,SAASmE,cAAc,OAClCourC,EAAWvyrC,SAASmE,cAAc,YACtCmurC,EAASpjrC,MAAM2qY,QAAU,gBACzB,IAAI24yB,EAAkB5ikC,EAAM5xH,IAAI,mBAC5By0rC,EAAkB7ikC,EAAM5xH,IAAI,mBAC5BqgB,EA3KR,SAA6B8/8B,GAC3B,IArB2BxmN,EAvCWplD,EAClCmge,EA2DAr0qC,EA1GN,SAAqB8/8B,GACnB,IAAIw0N,EAA4B,CAAC,EAC7BC,EAAc,GACdlo3B,EAAO,GA+BX,OA9BAyzpB,EAAQo/B,eAAc,SAAU1f,GAC9B,IAAIE,EAAWF,EAAYjx3B,iBAE3B,IAAImx3B,GAA+B,gBAAlBA,EAAS32+B,MAA4C,UAAlB22+B,EAAS32+B,KAwB3DwrrC,EAAYl2rC,KAAKmh/B,OAxB6D,CAE9E,IAAImxE,EAAWjxE,EAASgmC,cAExB,GAAsB,aAAlBirC,EAAS5njC,KAAqB,CAChC,IAAIsY,EAAMsviC,EAASx8tB,IAAM,IAAMw8tB,EAASn3iC,MAEnC86qC,EAA0BjzqC,KAC7BizqC,EAA0BjzqC,GAAO,CAC/Bg31B,aAAcs4M,EACd9xB,UAAWn/C,EAASkzE,aAAajC,GACjCr3S,OAAQ,IAEVjtc,EAAKhuU,KAAK,CACRorjC,QAASkH,EAASx8tB,IAClBo1tB,UAAWoH,EAASn3iC,SAIxB86qC,EAA0BjzqC,GAAKi4vB,OAAOj7wB,KAAKmh/B,EAC7C,MACE+0M,EAAYl2rC,KAAKmh/B,EAErB,CAGF,IACO,CACL80M,0BAA2BA,EAC3Bj8oC,MAAOk8oC,EACPlo3B,KAAMA,EAEV,CAmEemo3B,CAAY10N,GACzB,MAAO,CACLni+B,MAAO,GAAc,EA9Deu2tB,EA8DiBl0sB,EAAOs0qC,0BA7D1DD,EAAS,GACb,EAAYnge,GAAQ,SAAUt8Z,EAAOv2S,GACnC,IAAIg31B,EAAezgjB,EAAMygjB,aAErBgtO,EADYztxB,EAAMinuB,UACO1qsB,IACzBnnU,EAAU,CAAC,KAAKxuB,OAAO,EAAWo5T,EAAM0hd,QAAQ,SAAUA,GAC5D,OAAOA,EAAOpywB,IAChB,KAEImtO,EAAU,CAACgkoB,EAAa9mvB,MAAMqo8B,iBAClC,EAAYhiwB,EAAM0hd,QAAQ,SAAUA,GAClC,IAAIuyP,EAAUvyP,EAAOm5P,aACrBp+xB,EAAQh2O,KAAKi7wB,EAAOm5P,aAAakyC,SAAS94C,EAAQ+2C,aAAayiC,IAAe,SAAUnr6B,GACtF,OAAOA,CACT,IACF,IAIA,IAFA,IAAInyI,EAAQ,CAAC/a,EAAQ3jB,KAAK0qrC,KAEjB32rC,EAAI,EAAGA,EAAIi3O,EAAQ,GAAGx3O,OAAQO,IAAK,CAG1C,IAFA,IAAI84N,EAAQ,GAEHt1N,EAAI,EAAGA,EAAIyzO,EAAQx3O,OAAQ+D,IAClCs1N,EAAM73N,KAAKg2O,EAAQzzO,GAAGxD,IAGxB2qC,EAAM1pC,KAAK63N,EAAM7sN,KAAK0qrC,IACxB,CAEAM,EAAOh2rC,KAAK0pC,EAAM1+B,KAAK,MACzB,IACOgrrC,EAAOhrrC,KAAK,OAASyqrC,GAAgB,UAOjBx6a,EAuBmFt5vB,EAAOq4B,MAtB9G,EAAWihuB,GAAQ,SAAUA,GAClC,IAAIttwB,EAAOstwB,EAAOm5P,aACd1q+B,EAAQ,CAACuxuB,EAAOpywB,MAChBsskC,EAAO,GAYX,OAXAxnkC,EAAKwywB,KAAKxywB,EAAKkpJ,YAAY,WAKzB,IAJA,IAAI00yB,EAASht8B,UAAUC,OACnBglK,EAAYjlK,UAAUgt8B,EAAS,GAC/B1i8B,EAAO8E,EAAKw4U,QAAQ3iL,GAEfzkK,EAAI,EAAGA,EAAIws8B,EAAS,EAAGxs8B,IAC9Bo2kC,EAAKp2kC,GAAKR,UAAUQ,GAGtB2qC,EAAM1pC,MAAM6I,EAAOA,EAAO6srC,GAAe,IAAMvgH,EAAKnqkC,KAAK0qrC,IAC3D,IACOhspC,EAAM1+B,KAAK,KACpB,IAAGA,KAAK,OAASyqrC,GAAgB,WAM6F,SAAU3gnC,GACpI,QAASA,EAAIlqE,QAAQ,YAAa,GACpC,IAAGI,KAAK,OAASyqrC,GAAgB,QACjCzn3B,KAAMrsT,EAAOqsT,KAEjB,CAmKiBoo3B,CAAoB30N,GAEjC,GAAI,GAAkBq0N,GAAkB,CACtC,IAAIO,EAAYP,EAAgB1opC,EAAIq7zB,aAEhC,GAAgB4tV,GAClBT,EAASx9iC,UAAYi+iC,EACZ,GAAaA,IACtBT,EAASljrC,YAAY2jrC,EAEzB,KAAO,CAELR,EAASzspB,SAAWl2a,EAAM5xH,IAAI,YAC9B,IAAIkR,EAAQqjrC,EAASrjrC,MAErBA,EAAM2qY,QAAU,8IAChB3qY,EAAMk5G,MAAQwH,EAAM5xH,IAAI,aACxBkR,EAAMikW,YAAcvjP,EAAM5xH,IAAI,uBAC9BkR,EAAMqlI,gBAAkB3kB,EAAM5xH,IAAI,iBAClCu0rC,EAASv2rC,MAAQqiB,EAAOriB,MACxBs2rC,EAASljrC,YAAYmjrC,EACvB,CAEA,IAAIS,EAAgB30qC,EAAOqsT,KACvBuo3B,EAAkBjzrC,SAASmE,cAAc,OAC7C8urC,EAAgB/jrC,MAAM2qY,QAAU,8CAEhC,IAAI0yY,EAAc,4GACd2ma,EAAclzrC,SAASmE,cAAc,OACrCgvrC,EAAgBnzrC,SAASmE,cAAc,OAC3CooxB,GAAe,qBAAuB38pB,EAAM5xH,IAAI,eAChDuuxB,GAAe,UAAY38pB,EAAM5xH,IAAI,mBACrC,IAAIf,EAAOpC,KAEX,SAASgU,IACPotI,EAAUvkH,YAAYszH,GACtB/tJ,EAAK2viC,KAAO,IACd,CAEAplhC,GAAiB0rqC,EAAa,QAASrkrC,GACvC2Y,GAAiB2rqC,EAAe,SAAS,WACvC,GAAuB,MAAnBV,GAA8C,MAAnBD,GAA8C,MAAnBC,GAA8C,MAAnBD,EAMnF3jrC,QANF,CAUA,IAAI4t9B,EAEJ,IAEIA,EADE,GAAkBg2N,GACRA,EAAgBH,EAAUxopC,EAAIq7zB,aAvHpD,SAAuB3zxB,EAAKwhnC,GAC1B,IAAIzkiB,EAAS/8kB,EAAI/xE,MAAM,IAAImjC,OAAO,MAAQuvpC,GAAgB,MAAO,MAC7D11N,EAAY,CACd9kN,OAAQ,IAoBV,OAlBA,EAAYppH,GAAQ,SAAUL,EAAOv4S,GACnC,GA/FJ,SAAqBu4S,GAInB,GAFgBA,EAAMtxpB,MAAM,EAAGsxpB,EAAM7ypB,QAAQ,OAE/BA,QAAQ+2rC,KAAiB,EACrC,OAAO,CAEX,CAwFQgB,CAAYlliB,GAAQ,CACtB,IAAI7voB,EAjFV,SAA0Bg1qC,GAWxB,IAVA,IAAIC,EAAWD,EAAI5zrC,MAAM,QAErBok3B,EAAa,GACblsG,EAAS,EAFC,GAAK27a,EAASt6oC,SAASv5C,MAAM4yrC,KAEV,SAAU3iqC,GACzC,MAAO,CACLnqB,KAAMmqB,EACNrlB,KAAM,GAEV,IAES5O,EAAI,EAAGA,EAAI63rC,EAASp4rC,OAAQO,IAAK,CACxC,IAAI84N,EAAQ,GAAK++9B,EAAS73rC,IAAIgE,MAAM4yrC,IACpCxuU,EAAWnn3B,KAAK63N,EAAMv7K,SAEtB,IAAK,IAAI/5C,EAAI,EAAGA,EAAIs1N,EAAMr5N,OAAQ+D,IAChC04wB,EAAO14wB,KAAO04wB,EAAO14wB,GAAGoL,KAAK5O,GAAK84N,EAAMt1N,GAE5C,CAEA,MAAO,CACL04wB,OAAQA,EACRksG,WAAYA,EAEhB,CAyDmB0vU,CAAiBrliB,GAC1BsliB,EAAYR,EAAcr90B,GAC1Bo6sB,EAAUyjI,EAAU1rI,QAAU,OAE9B0rI,IACF/2N,EAAUszF,GAAWtzF,EAAUszF,IAAY,GAC3CtzF,EAAUszF,GAASyjI,EAAU5rI,WAAa,CACxCv9iC,KAAMgU,EAAOwl2B,YAEf44G,EAAU9kN,OAAS8kN,EAAU9kN,OAAO96wB,OAAOwhB,EAAOs5vB,QAEtD,MACMt5vB,EAnEV,SAA2BmzD,GAKzB,IAJA,IAAIprC,EAAQorC,EAAI/xE,MAAM,QAClB02/B,EAAa,GAAK/v9B,EAAM4S,SACxB3uC,EAAO,GAEF5O,EAAI,EAAGA,EAAI2qC,EAAMlrC,OAAQO,IAAK,CAGrC,IAAI0+C,EAAO,GAAK/T,EAAM3qC,IAEtB,GAAK0+C,EAAL,CAIA,IAAIo6K,EAAQp6K,EAAK16C,MAAM4yrC,IACnBl6b,EAAS,GACTn8vB,OAAQ,EACRy3rC,GAAU,EAEVtspC,MAAMotL,EAAM,KAEdk/9B,GAAU,EACVt7b,EAAS5jiB,EAAM,GACfA,EAAQA,EAAM33N,MAAM,GACpByN,EAAK5O,GAAK,CACR8J,KAAM4yvB,EACNn8vB,MAAO,IAETA,EAAQqO,EAAK5O,GAAGO,OAEhBA,EAAQqO,EAAK5O,GAAK,GAGpB,IAAK,IAAIwD,EAAI,EAAGA,EAAIs1N,EAAMr5N,OAAQ+D,IAChCjD,EAAMU,MAAM63N,EAAMt1N,IAGC,IAAjBjD,EAAMd,SACRu4rC,EAAUpprC,EAAK5O,GAAGO,MAAQA,EAAM,GAAKqO,EAAK5O,GAAKO,EAAM,GA1BvD,CA4BF,CAEA,MAAO,CACLuJ,KAAM4w/B,EACN9r/B,KAAMA,EAEV,CAqBmBqprC,CAAkBxliB,GAC/BuuU,EAAU9kN,OAAOj7wB,KAAK2hB,EAE1B,IACOo+8B,CACT,CAiGsBk3N,CAAcpB,EAASv2rC,MAAOg3rC,EAE9C,CAAE,MAAOh5rC,GAEP,MADA6U,IACM,IAAIwT,MAAM,0BAA4BroB,EAC9C,CAEIyi+B,GACF3y7B,EAAIu1/B,eAAe,CACjBj4hC,KAAM,iBACNq19B,UAAWA,IAIf5t9B,GAtBA,CAuBF,IACAqkrC,EAAYp+iC,UAAYiz2B,EAAK,GAC7BorM,EAAcr+iC,UAAYiz2B,EAAK,GAC/BorM,EAAcjkrC,MAAM2qY,QAAUq5yB,EAAYhkrC,MAAM2qY,QAAU0yY,GACzD38pB,EAAM5xH,IAAI,aAAei1rC,EAAgB7jrC,YAAY+jrC,GACtDF,EAAgB7jrC,YAAY8jrC,GAC5BloiC,EAAK57I,YAAYsgB,GACjBs7H,EAAK57I,YAAYkjrC,GACjBtniC,EAAK57I,YAAY6jrC,GACjBX,EAASpjrC,MAAM2qB,OAASoiH,EAAUf,aAAe,GAAK,KACtDe,EAAU7sI,YAAY47I,GACtBnwJ,KAAK+xiC,KAAO5h5B,CACd,EAEA5xI,EAAS7e,UAAUmzB,OAAS,SAAUyw8B,EAASr07B,GAC7CjvC,KAAK+xiC,MAAQ9igC,EAAI8jgC,SAASl2gC,YAAY78B,KAAK+xiC,KAC7C,EAEAxzhC,EAAS7e,UAAU2l8B,QAAU,SAAUi+B,EAASr07B,GAC9CjvC,KAAK6yB,OAAOyw8B,EAASr07B,EACvB,EAEA1wB,EAASuihB,iBAAmB,SAAUwic,GAiBpC,MAhBoB,CAClBrgpB,MAAM,EACNgoN,UAAU,EACV0spB,gBAAiB,KACjBC,gBAAiB,KAEjBnn9B,KAAM,8GACNphE,MAAOi0zB,EAAQgqB,iBAAiBnq/B,IAAI,CAAC,UAAW,WAAY,UAC5D+p/B,KAAM5pB,EAAQgqB,iBAAiBnq/B,IAAI,CAAC,UAAW,WAAY,SAC3Du2I,gBAAiB,OACjBkwQ,UAAW,OACXmvyB,cAAe,OACfC,oBAAqB,OACrBC,YAAa,UACbC,gBAAiB,OAGrB,EAEO36qC,CACT,CAvJA,CAuJE61qC,IAMF,SAAS+E,GAAmB3j2B,EAAS6xxB,GACnC,OAAO,EAAW7xxB,GAAS,SAAUy+N,EAAQn5M,GAC3C,IAAIliU,EAAWyukC,GAAgBA,EAAavswB,GAE5C,GAAI,GAAgBliU,KAAc,GAAeA,GAAW,CACrC,GAAgBq7gB,KAAY,GAAeA,KAG9DA,EAAS,CACP9yjB,MAAO8yjB,IAKX,IAAImloB,EAAoC,MAAjBxgpC,EAASluC,MAA+B,MAAfupjB,EAAOvpjB,KAIvD,OAFAupjB,EAAS,EAAgBA,EAAQr7gB,GACjCwgpC,UAA2BnloB,EAAOvpjB,KAC3BupjB,CACT,CACE,OAAOA,CAEX,GACF,CAGA,GAAuB,CACrB1njB,KAAM,iBACNkyB,MAAO,kBACP8vC,OAAQ,qBACP,SAAUz5C,EAASwu8B,GACpB,IAAI+1N,EAAmB,GACvB,EAAYvkqC,EAAQ8s8B,UAAU9kN,QAAQ,SAAUksP,GAC9C,IAAIhmB,EAAc1f,EAAQ++B,gBAAgB2G,EAAUt+/B,MAAM,GAE1D,GAAKs4+B,EAOE,CACL,IAAIqkI,EAAerkI,EAAY7/+B,IAAI,QACnCk2rC,EAAiBx3rC,KAAK,CACpB6I,KAAMs+/B,EAAUt+/B,KAChB8E,KAAM2prC,GAAmBnwL,EAAUx5/B,KAAM63mC,IAE7C,MAVEgyE,EAAiBx3rC,KAAK,EAAc,CAElC0K,KAAM,WACLy8/B,GAQP,IACA1lC,EAAQ2oB,YAAY,EAAgB,CAClCnvO,OAAQu8a,GACPvkqC,EAAQ8s8B,WACb,IACA,YCndA,IAAI,GAAO,EACP,GAAQsB,KAsEZ,SAASo2N,GAAkBh2N,GACzB,IAAIv0xB,EAAQ,GAAMu0xB,GAMlB,OAJKv0xB,EAAMwq/B,YACTxq/B,EAAMwq/B,UAAY,CAAC,CAAC,IAGfxq/B,EAAMwq/B,SACf,CC5EA,IAAIC,GAEJ,SAAU9w0B,GAGR,SAAS8w0B,IACP,OAAkB,OAAX9w0B,GAAmBA,EAAOnoX,MAAMP,KAAMI,YAAcJ,IAC7D,CAoBA,OAxBA4sa,EAAU4sxB,EAAe9w0B,GAMzB8w0B,EAAc95rC,UAAU+5nC,QAAU,SAAUn2J,EAASr07B,IDgDhD,SAAeq07B,GACpB,GAAMA,GAASi2N,UAAY,IAC7B,CCjDI,CAAcj2N,GACdr07B,EAAIu1/B,eAAe,CACjBj4hC,KAAM,UACNwR,KAAM/d,KAAKozV,KAEf,EAEAom2B,EAAc14pB,iBAAmB,SAAUwic,GAOzC,MANoB,CAClBrgpB,MAAM,EAENxyG,KAAM,kLACNphE,MAAOi0zB,EAAQgqB,iBAAiBnq/B,IAAI,CAAC,UAAW,UAAW,UAG/D,EAEOq2rC,CACT,CA1BA,CA0BEpF,IAGF,GAAuB,CACrB7nrC,KAAM,UACNkyB,MAAO,UACP8vC,OAAQ,qBACP,SAAUz5C,EAASwu8B,GACpBA,EAAQ07B,YAAY,WACtB,IACA,YCrCA,IAAIy6L,GAA4B,CAAC,OAAQ,QAAS,QAAS,MAAO,QAAS,QAAS,aAAc,YAAa,QAE3GC,GAEJ,WAME,SAASA,EAAmBt1N,EAAQd,EAASljc,GAC3C,IAAI1ze,EAAQ1sD,KAEZA,KAAK25rC,gBAAkB,GACvB,IAAIC,EAAY,GAAYt2N,EAASc,GACrC,EAAKy1N,IAAoB,SAAUt9nC,EAAShwD,KACrC6zhB,IAAQA,EAAIy6F,SAAWr6nB,EAAQ4/hB,EAAIy6F,QAAStunB,IAAS,IACxDgwD,EAAQq9nC,EAAWltoC,EAAMitoC,gBAE7B,GACF,CAsHA,OApHAD,EAAmBh6rC,UAAUo6rC,gBAAkB,SAAU/11B,EAAOu/nB,GAkB9D,OAjBAtj+B,KAAK+5rC,kBAAkBh21B,EAAOu/nB,GAAS,SAAUjivB,EAAM248B,EAAY92M,GAGjE,IAFC7hwB,EAAK448B,cAAgB548B,EAAK448B,YAAc,KAAKp4rC,KAAKm4rC,IAE9C348B,EAAK248B,WAAY,CACpB348B,EAAK248B,WAAaA,EAMlB,IAAIx2qC,EAAS02qC,GAAa748B,EAAK0h6B,WAAW,EAAG7/J,EAAU82M,GACvD348B,EAAK848B,cAAgB,CACnBh4oC,OAAQi4oC,GAAc/48B,EAAK0h6B,WAAWv/nC,EAAO9G,OAAQ2kO,EAAKt/G,MAAO,CAAC,EAAG,IACrEs4jC,SAAU72qC,EAAO62qC,SAErB,CACF,IACOt21B,CACT,EAEA211B,EAAmBh6rC,UAAUq6rC,kBAAoB,SAAUh21B,EAAOu/nB,EAAS5h6B,GACzE,EAAKqiS,GAAO,SAAU1iH,GACpB,IAAIi0tB,EAAat18B,KAAKs6rC,eAAej58B,EAAMiivB,GAEvChuB,IAA6B,IAAfA,GAChB,EAAKA,EAAWilP,YAAY,SAAUr3M,GACpC,IAAI1/9B,EAAS02qC,GAAa748B,EAAK0h6B,WAAW,EAAG7/J,EAAU7hwB,EAAKt/G,OAAO,GACnErgE,EAAG2/K,EAAM79N,EAAO9G,OAAQwm+B,EAAU5f,EACpC,GAEJ,GAAGtj+B,KACL,EAQA05rC,EAAmBh6rC,UAAU86rC,eAAiB,SAAUz21B,EAAOu/nB,GAC7D,EAAKv/nB,GAAO,SAAU1iH,GACpB,IAqPao58B,EAAcC,EAC3BC,EACAC,EACAC,EAxPIvlP,EAAat18B,KAAKs6rC,eAAej58B,EAAMiivB,GAS3C,GAFAjivB,EAAKt/G,MAAQs/G,EAAKt/G,OAAS,GAEvBuz0B,IAA6B,IAAfA,EAAqB,CACrCj0tB,EAAKmi6B,QAAUluM,EAAWkuM,QAO1B,IAAIhgoC,EAAS02qC,GAAa748B,EAAK0h6B,WAAW,EAAGztM,EAAW4tC,SAAU7hwB,EAAK248B,YACnEc,EAAcz58B,EAAK848B,cACvB948B,EAAKt/G,MAAQ+4jC,EAAcV,GAAc/48B,EAAK0h6B,WAAWv/nC,EAAO9G,OAAQo+qC,EAAY34oC,QAkOzEs4oC,EAlO2Fj3qC,EAAO62qC,SAkOpFK,EAlO8FI,EAAYT,SAmOrIM,EAAW,GAAQF,GACnBG,EAAa,GAAQF,GACrBG,EAAS,CAACF,EAAS,GAAKC,EAAW,GAAID,EAAS,GAAKC,EAAW,IACpEtupC,MAAMuupC,EAAO,MAAQA,EAAO,GAAK,GACjCvupC,MAAMuupC,EAAO,MAAQA,EAAO,GAAK,GAC1BA,IAxO+Ir3qC,EAAO9G,MACzJ,CACF,GAAG1c,KACL,EAEA05rC,EAAmBh6rC,UAAUq7rC,cAAgB,SAAU9rpC,EAAK+rpC,GAC1D,OAAO3rqC,EAAIrvB,KAAK25rC,iBAAiB,SAAUrkP,GACzC,IAAI5h3B,EAAO4h3B,EAAW2lP,eACtB,MAAO,CACLz3C,QAASluM,EAAWkuM,QACpBwE,iBAAkBgzC,EAAsBA,EAAoB1lP,GAAc,KAC1E7pL,SAAU,GAAkC/3rB,GAC5CsxjC,iBAAkB,GAAqCtxjC,EAAMzkD,EAAKqm6B,EAAWm0M,eAC7Ed,0BAA2B,GAAuCj1jC,GAEtE,GACF,EAEAgmmC,EAAmBh6rC,UAAUw7rC,cAAgB,SAAU758B,EAAM2hwB,EAAa1f,GAGxE,IAAIhuB,EAAat18B,KAAKs6rC,eAAej58B,EAAMiivB,GAC3C,OAAsB,IAAfhuB,GAAuBA,GAAc908B,EAAQ808B,EAAWilP,WAAYv3M,EAAYjx3B,mBAAqB,CAC9G,EAQA2nkC,EAAmBh6rC,UAAU46rC,eAAiB,SAAUj58B,EAAMiivB,GAI5D,IAHA,IAAI63N,EAAiBn7rC,KAAK25rC,gBACtBC,EAAY,GAAYt2N,EAASjivB,GAE5BzgP,EAAI,EAAGA,EAAIu6rC,EAAe96rC,OAAQO,IAAK,CAC9C,IAAI008B,EAAa6lP,EAAev6rC,GAC5Bw6rC,EAAc/58B,EAAKmi6B,QAEvB,GAAI43C,GACF,GAAI9lP,EAAWkuM,UAAY43C,EACzB,OAAO9lP,OAGT,IAAK,IAAIlx8B,EAAI,EAAGA,EAAIi3rC,GAAmBh7rC,OAAQ+D,IAC7C,GAAIi3rC,GAAmBj3rC,GAAGw1rC,EAAWtkP,GACnC,OAAOA,CAIf,CAEA,OAAO,CACT,EAEOokP,CACT,CAvIA,GAyIA,SAAS4B,GAAatx6B,GAEpB,OADAA,EAAO,GAAKA,EAAO,IAAMA,EAAO1vN,UACzB0vN,CACT,CAEA,SAAS,GAAYs5sB,EAASc,GAC5B,OAAO,GAAqBd,EAASc,EAAQ,CAC3CE,iBAAkBm1N,IAEtB,CAEA,IAAII,GAAqB,CACvBtz8B,KAAM,SAAUqz8B,EAAWuB,GACzB,IAAII,EAAc3B,EAAU2B,YACxBC,EAAc5B,EAAU4B,YACxBC,EAAa7B,EAAU6B,WAEvBC,EAAexwP,KACfywP,EAAW,CAAC,EACZC,EAAW,CAAC,GAEXL,GAAgBC,GAAgBC,KAIrC,EAAKF,GAAa,SAAUvuI,GAC1B,IAAIw6C,EAAYx6C,EAAUvi3B,KAAK87C,KAAKxxH,MACpC2mkC,EAAazvrC,IAAIu7lC,EAAUj8kC,GAAIi8kC,GAC/Bm0F,EAASn0F,EAAUj8kC,KAAM,CAC3B,IACA,EAAKiwqC,GAAa,SAAUxuI,GAC1B,IAAIw6C,EAAYx6C,EAAUvi3B,KAAK87C,KAAKxxH,MACpC2mkC,EAAazvrC,IAAIu7lC,EAAUj8kC,GAAIi8kC,GAC/Bo0F,EAASp0F,EAAUj8kC,KAAM,CAC3B,IACA,EAAKkwqC,GAAY,SAAUj0F,GACzBk0F,EAAazvrC,IAAIu7lC,EAAUj8kC,GAAIi8kC,GAC/Bm0F,EAASn0F,EAAUj8kC,KAAM,EACzBqwqC,EAASp0F,EAAUj8kC,KAAM,CAC3B,IACAmwqC,EAAa15a,MAAK,SAAUwlV,GAC1B,IAAIjh3B,EAAOih3B,EAAUz1+B,iBACjBqg/B,EAAa,GACjB,EAAK7r3B,EAAK0k3B,iBAAiB,SAAUrv6B,EAAW5+K,IAC1Cxc,EAAQ+6rC,EAAa3//B,EAAUolrB,QAAQ,KAAKjsvB,QAAU,GAAKv0H,EAAQg7rC,EAAa5//B,EAAUolrB,QAAQ,KAAKjsvB,QAAU,IACnHq9+B,EAAWvwmC,KAAK+5L,EAEpB,IACAu//B,EAAet5rC,KAAK,CAClB2hpC,QAAS,SAAWh8C,EAAUj8kC,GAC9Bi8kC,UAAWA,EACXiiD,cAAejiD,EAEftkH,SAAUkvH,EAAW,GACrBmoF,WAAYnoF,EACZ6oF,aAAcY,GAAkBt18B,KAChCu18B,cAAeH,EAASn0F,EAAUj8kC,IAClCwwqC,cAAeH,EAASp0F,EAAUj8kC,KAEtC,IACF,EACA6++B,IAAK,SAAUwvL,EAAWuB,GACxB,EAAKvB,EAAUoC,WAAW,SAAUt2E,GAClC,IAAIxiI,EAAWwiI,EAAS3z/B,iBACxBopkC,EAAet5rC,KAAK,CAClB2hpC,QAAS,QAAU99B,EAASn6lC,GAC5Bm6lC,SAAUA,EACV+jC,cAAe/jC,EACfxiI,SAAUA,EACVq3M,WAAY,CAACr3M,GACb+3M,aAAcY,GAAkBzxL,KAEpC,GACF,GAEEixL,GAAqB,CACzB,SAAUzB,EAAWtkP,GACnB,IAAI62G,EAAaytI,EAAUztI,WACvBC,EAAawtI,EAAUxtI,WACvBo7C,EAAYoyF,EAAUpyF,UAG1B,OAFCA,GAAar7C,IAAeq7C,EAAYr7C,EAAW1h3B,KAAK87C,KAAKxxH,QAC7Dyy+B,GAAap7C,IAAeo7C,EAAYp7C,EAAW3h3B,KAAK87C,KAAKxxH,OACvDyy+B,GAAaA,IAAclyJ,EAAWkyJ,SAC/C,EACA,SAAUoyF,EAAWtkP,GACnB,IAAIowK,EAAWk0E,EAAUl0E,SACzB,OAAOA,GAAYA,IAAapwK,EAAWowK,QAC7C,GACIm2E,GAAoB,CACtBt18B,KAAM,WAEJ,OAAOvmP,KAAKkj/B,SAASntb,OAAOuhgB,UAAU/miC,OACxC,EACA65+B,IAAK,WACH,IAAIlnB,EAAWlj/B,KAAKkj/B,SAChBxv5B,EAAOwv5B,EAAS/+vB,kBAAkB5zN,QAGtC,OADAmjE,EAAKo42B,eAAe,GAAqBo3C,IAClCxv5B,CACT,GAEEwmmC,GAAe,CACjBvsM,MAAO3jD,GAAMiyP,GAAa,GAC1BruM,MAAO5jD,GAAMiyP,GAAa,GAC1BvomC,KAAM,SAAUz6E,EAAIiq+B,EAAUg5M,EAAmBxj2B,GAC/C,IAAIyj2B,EAAWljrC,EAAKiq+B,EAAS0hF,YAAY,CAACs3H,EAAkB,GAAG,GAAIA,EAAkB,GAAG,IAAKxj2B,GAASwqpB,EAASy0E,YAAY,CAACukI,EAAkB,GAAG,GAAIA,EAAkB,GAAG,IAAKxj2B,GAC3K0j2B,EAAWnjrC,EAAKiq+B,EAAS0hF,YAAY,CAACs3H,EAAkB,GAAG,GAAIA,EAAkB,GAAG,IAAKxj2B,GAASwqpB,EAASy0E,YAAY,CAACukI,EAAkB,GAAG,GAAIA,EAAkB,GAAG,IAAKxj2B,GAC3Kh8U,EAAS,CAAC4+qC,GAAa,CAACa,EAAS,GAAIC,EAAS,KAAMd,GAAa,CAACa,EAAS,GAAIC,EAAS,MAC5F,MAAO,CACL1/qC,OAAQA,EACR29qC,SAAU39qC,EAEd,EACAuoB,QAAS,SAAUhsB,EAAIiq+B,EAAUg5M,EAAmBxj2B,GAClD,IAAI2h2B,EAAW,CAAC,CAACt6nC,KAAU,KAAY,CAACA,KAAU,MASlD,MAAO,CACLrjD,OATW2S,EAAI6sqC,GAAmB,SAAU96oC,GAC5C,IAAIt+C,EAAImW,EAAKiq+B,EAAS0hF,YAAYxjhC,EAAMs3S,GAASwqpB,EAASy0E,YAAYv2gC,EAAMs3S,GAK5E,OAJA2h2B,EAAS,GAAG,GAAKx3rC,KAAKgL,IAAIwsrC,EAAS,GAAG,GAAIv3rC,EAAE,IAC5Cu3rC,EAAS,GAAG,GAAKx3rC,KAAKgL,IAAIwsrC,EAAS,GAAG,GAAIv3rC,EAAE,IAC5Cu3rC,EAAS,GAAG,GAAKx3rC,KAAK8K,IAAI0srC,EAAS,GAAG,GAAIv3rC,EAAE,IAC5Cu3rC,EAAS,GAAG,GAAKx3rC,KAAK8K,IAAI0srC,EAAS,GAAG,GAAIv3rC,EAAE,IACrCA,CACT,IAGEu3rC,SAAUA,EAEd,GAGF,SAAS4B,GAAYI,EAAepjrC,EAAIiq+B,EAAUg5M,GAKhD,IAAIzx/B,EAAOy4yB,EAASliI,QAAQ,CAAC,IAAK,KAAKq7U,IACnC3/qC,EAAS4+qC,GAAajsqC,EAAI,CAAC,EAAG,IAAI,SAAUzuB,GAC9C,OAAOqY,EAAKwxL,EAAKk63B,YAAYl63B,EAAK+75B,aAAa01F,EAAkBt7rC,KAAK,GAAQ6pM,EAAKms3B,cAAcns3B,EAAKos3B,YAAYqlI,EAAkBt7rC,IACtI,KACIy5rC,EAAW,GAGf,OAFAA,EAASgC,GAAiB3/qC,EAC1B29qC,EAAS,EAAIgC,GAAiB,CAACzgc,IAAKA,KAC7B,CACLl/uB,OAAQA,EACR29qC,SAAUA,EAEd,CAEA,IAAID,GAAgB,CAClBzsM,MAAO3jD,GAAMsyP,GAAmB,GAChC1uM,MAAO5jD,GAAMsyP,GAAmB,GAChC5omC,KAAM,SAAUh3E,EAAQ6/qC,EAAO1B,GAC7B,MAAO,CAAC,CAACn+qC,EAAO,GAAG,GAAKm+qC,EAAO,GAAK0B,EAAM,GAAG,GAAI7/qC,EAAO,GAAG,GAAKm+qC,EAAO,GAAK0B,EAAM,GAAG,IAAK,CAAC7/qC,EAAO,GAAG,GAAKm+qC,EAAO,GAAK0B,EAAM,GAAG,GAAI7/qC,EAAO,GAAG,GAAKm+qC,EAAO,GAAK0B,EAAM,GAAG,IACzK,EACAt3pC,QAAS,SAAUvoB,EAAQ6/qC,EAAO1B,GAChC,OAAOxrqC,EAAI3S,GAAQ,SAAU0kC,EAAM05T,GACjC,MAAO,CAAC15T,EAAK,GAAKy5oC,EAAO,GAAK0B,EAAMzh1B,GAAK,GAAI15T,EAAK,GAAKy5oC,EAAO,GAAK0B,EAAMzh1B,GAAK,GAChF,GACF,GAGF,SAASwh1B,GAAkBD,EAAe3/qC,EAAQ6/qC,EAAO1B,GACvD,MAAO,CAACn+qC,EAAO,GAAKm+qC,EAAOwB,GAAiBE,EAAM,GAAI7/qC,EAAO,GAAKm+qC,EAAOwB,GAAiBE,EAAM,GAClG,CAcA,SAAS,GAAQlC,GACf,OAAOA,EAAW,CAACA,EAAS,GAAG,GAAKA,EAAS,GAAG,GAAIA,EAAS,GAAG,GAAKA,EAAS,GAAG,IAAM,CAACz+b,IAAKA,IAC/F,CAEA,YC9TA,IjWP8CkoO,GAAUygC,GiWOpD,GAAO,EACPi4L,G3Y0YKh8N,G2Y1YuC,oBAG5Ci8N,GAEJ,SAAU/z0B,GAGR,SAAS+z0B,IACP,OAAkB,OAAX/z0B,GAAmBA,EAAOnoX,MAAMP,KAAMI,YAAcJ,IAC7D,CA+HA,OAnIA4sa,EAAU6vxB,EAAiB/z0B,GAM3B+z0B,EAAgB/8rC,UAAU4uH,OAAS,SAAUgnkC,EAAchyN,EAASr07B,EAAKna,GAClE90B,KAAKsppC,mBACRtppC,KAAKsppC,iBAAmB,IAAI,GAAgBr6mC,EAAIk9/B,SAEhDnsiC,KAAKsppC,iBAAiB14oC,GAAG,QAAS,GAAY5Q,KAAKuppC,SAAUvppC,OAAOqv9B,SAoK1E,SAA6BimO,EAAchyN,EAAS/76B,EAAMzyB,EAASma,GACjE,IAAIytpC,EAAan1oC,EAAKo1oC,cAElB7nqC,GAA4B,qBAAjBA,EAAQvoB,OACrBmwrC,EAA6B,mBAAhB5nqC,EAAQjQ,KAA2BiQ,EAAQ8nqC,sBAG1Dr1oC,EAAKo1oC,cAAgBD,EACrBpH,EAAae,cAAc,OAAQqG,EAAa,WAAa,UAC7D,IAGI7sV,EAHqB,IAAI,GAAmBgtV,GAAevH,GAAehyN,EAAS,CACrFzoW,QAAS,CAAC,UAEoBkgkB,cAAc9rpC,GAAK,SAAUqm6B,GAC3D,OAAOA,EAAWwmP,gBAAkBxmP,EAAWymP,cAAgB,SAAWzmP,EAAWwmP,eAAiBxmP,EAAWymP,cAAgB,QAAU,MAC7I,IAEAx0oC,EAAK+hmC,iBAAiBlG,UAAUvzS,GAAQ8yS,eAAY+5C,IAAc7sV,EAAOxv2B,SAAS,CAChF0ipC,UAAW,OACXthH,WAAY6zJ,EAAa19/B,SAAS,cAAcm0zB,gBAEpD,CArLI+wM,CAAoBxH,EAAchyN,EAAStj+B,KAAM80B,EAASma,GA6J9D,SAA6BqmpC,EAAchyN,GACzCgyN,EAAae,cAAc,OH3HtB,SAAe/yN,GACpB,OAAOg2N,GAAkBh2N,GAASjj+B,MACpC,CGyHqC,CAAcij+B,GAAW,EAAI,WAAa,SAC/E,CA9JIy5N,CAAoBzH,EAAchyN,EACpC,EAEAm5N,EAAgB/8rC,UAAU+5nC,QAAU,SAAUn2J,EAASr07B,EAAK1iC,GAC1D,GAASA,GAAM3M,KAAKI,KACtB,EAEAy8rC,EAAgB/8rC,UAAUmzB,OAAS,SAAUyw8B,EAASr07B,GACpDjvC,KAAKsppC,kBAAoBtppC,KAAKsppC,iBAAiB/E,SACjD,EAEAk4C,EAAgB/8rC,UAAU2l8B,QAAU,SAAUi+B,EAASr07B,GACrDjvC,KAAKsppC,kBAAoBtppC,KAAKsppC,iBAAiBjkN,SACjD,EAEAo3P,EAAgB/8rC,UAAU6ppC,SAAW,SAAUS,GAC7C,IAAIjmzB,EAAQimzB,EAAWjmzB,MAEvB,GAAKimzB,EAAWzgb,OAAUxlY,EAAM1jW,OAAhC,CAIA,IAAIy7vB,EAAW,CAAC,EACZwnO,EAAUtj+B,KAAKsj+B,QAEnBtj+B,KAAKsppC,iBAAiB5F,aAAa,IAGV,IAAI,GAAmBm5C,GAAe78rC,KAAK+0H,OAAQuu2B,EAAS,CACnFzoW,QAAS,CAAC,UAEOk/jB,kBAAkBh21B,EAAOu/nB,GAAS,SAAUjivB,EAAM248B,EAAY92M,GAC/E,GAAsB,gBAAlBA,EAAS32+B,KAAb,CAIA,IAAIw2oC,EAAY1h6B,EAAK0h6B,UAEH,SAAdA,GACFi6C,EAAS,IAAK95M,EAAU82M,EAAW,IACnCgD,EAAS,IAAK95M,EAAU82M,EAAW,KAEnCgD,EAAS,CACPrvM,MAAO,IACPC,MAAO,KACPm1J,GAAY7/J,EAAU82M,EAX1B,CAaF,IHrEG,SAAc12N,EAAS25N,GAC5B,IAAIC,EAAkB5D,GAAkBh2N,GAGxC,GAAK25N,GAAa,SAAUpkJ,EAAWskJ,GAGrC,IAFA,IAAIv8rC,EAAIs8rC,EAAgB78rC,OAAS,EAE1BO,GAAK,IACKs8rC,EAAgBt8rC,GAElBu8rC,GAHAv8rC,KAQf,GAAIA,EAAI,EAAG,CAET,IAAIgsrC,EAAgBtpN,EAAQyB,gBAAgB,CAC1CjB,SAAU,WACViD,QAAS,SACTx78B,GAAI4xqC,IACH,GAEH,GAAIvQ,EAAe,CACjB,IAAIuG,EAAevG,EAAc4C,kBACjC0N,EAAgB,GAAGC,GAAc,CAC/BA,WAAYA,EACZ32pC,MAAO2spC,EAAa,GACpB1spC,IAAK0spC,EAAa,GAEtB,CACF,CACF,IACA+J,EAAgBr7rC,KAAKo7rC,EACvB,CGoCI,CAAa35N,EAASxnO,GAEtB97vB,KAAKo9rC,oBAAoBthc,EA9BzB,CAgCA,SAASkhc,EAAS3gM,EAASnZ,EAAUl5tB,GACnC,IAAIv/E,EAAOy4yB,EAASliI,QAAQq7I,GACxB2wD,EAAYvi3B,EAAK11E,MACjB63jC,EAeN,SAAsBvwL,EAAS2wD,EAAW1pF,GACxC,IAAIx4sB,EAQJ,OAPAw4sB,EAAQwe,cAAc,CACpBhe,SAAU,WACViD,QAAS,WACR,SAAUs2N,GACDA,EAAQjO,aAAa/yL,EAAS2wD,EAAU7hyB,kBAC1CL,EAAQuy6B,EAClB,IACOvy6B,CACT,CAzBsBwy6B,CAAajhM,EAAS2wD,EAAW1pF,GAEjDuvN,EAAajG,EAAc8C,4BAA4B1iI,GAAWgkI,gBAEvC,MAA3B6B,EAAW0K,cAAmD,MAA3B1K,EAAW2K,eAChDxz6B,EAAS003B,GAAW,EAAG103B,EAAOjoR,QAAS0oM,EAAK3oG,MAAM0t9B,YAAa,EAAGqjI,EAAW0K,aAAc1K,EAAW2K,eAGxG5Q,IAAkB9wb,EAAS8wb,EAAcrhqC,IAAM,CAC7C4xqC,WAAYvQ,EAAcrhqC,GAC1BijV,WAAYxkF,EAAO,GACnBykF,SAAUzkF,EAAO,IAErB,CAaF,EAIAyy6B,EAAgB/8rC,UAAU09rC,oBAAsB,SAAUthc,GACxD,IAAIlqrB,EAAQ,GAEZ,GAAKkqrB,GAAU,SAAU+8S,EAAWskJ,GAClCvrnC,EAAM/vE,KAAK,EAAag3iC,GAC1B,IACAjn+B,EAAMvxE,QAAUL,KAAKivC,IAAIu1/B,eAAe,CACtCj4hC,KAAM,WACNwR,KAAM/d,KAAKozV,IACXxhR,MAAOA,GAEX,EAEA6qnC,EAAgB37pB,iBAAmB,SAAUwic,GAgB3C,MAfoB,CAClBrgpB,MAAM,EACNit2B,WAAY,SAEZz/8B,KAAM,CACJ9wM,KAAM,wDACNou9B,KAAM,6DAGR1+0B,MAAOi0zB,EAAQgqB,iBAAiBnq/B,IAAI,CAAC,UAAW,WAAY,UAC5Ds+hC,WAAY,CACVjqD,YAAa,EACbjq3B,MAAO,yBAIb,EAEOkvkC,CACT,CArIA,CAqIErI,IAEE,GAAW,CACbz0pC,KAAM,WACJ,IAAI89pC,GAAcz9rC,KAAK28rC,cACvB38rC,KAAKivC,IAAIu1/B,eAAe,CACtBj4hC,KAAM,mBACNsY,IAAK,iBACL+3qC,qBAAsBa,GAE1B,EACA1vM,KAAM,WACJ/t/B,KAAKo9rC,oBHrHF,SAAa95N,GAClB,IAAI45N,EAAkB5D,GAAkBh2N,GACpCv86B,EAAOm2oC,EAAgBA,EAAgB78rC,OAAS,GACpD68rC,EAAgB78rC,OAAS,GAAK68rC,EAAgBt7rC,MAE9C,IAAIk6vB,EAAW,CAAC,EAWhB,OAVA,GAAK/0sB,GAAM,SAAU8x/B,EAAWskJ,GAC9B,IAAK,IAAIv8rC,EAAIs8rC,EAAgB78rC,OAAS,EAAGO,GAAK,EAAGA,IAG/C,GAFAi4iC,EAAYqkJ,EAAgBt8rC,GAAGu8rC,GAEhB,CACbrhc,EAASqhc,GAActkJ,EACvB,KACF,CAEJ,IACO/8S,CACT,CGoG6B,CAAY97vB,KAAKsj+B,SAC5C,GAGF,SAASu5N,GAAea,GACtB,IAAI5nzB,EAAU,CACZg1tB,WAAY4yF,EAAev6rC,IAAI,cAAc,GAC7C4nmC,WAAY2yF,EAAev6rC,IAAI,cAAc,GAC7Cw6rC,QAASD,EAAev6rC,IAAI,WAAW,GACvCy6rC,QAASF,EAAev6rC,IAAI,WAAW,IAczC,OAR0B,MAAtB2yY,EAAQg1tB,YAAyC,MAAnBh1tB,EAAQ6nzB,UACxC7nzB,EAAQg1tB,WAAa,OAGG,MAAtBh1tB,EAAQi1tB,YAAyC,MAAnBj1tB,EAAQ8nzB,UACxC9nzB,EAAQi1tB,WAAa,OAGhBj1tB,CACT,CjWtL8CgulB,GiWkNhB,WjWlN0BygC,GiWkNd,SAAUjhC,GAClD,IAAIqxN,EAAerxN,EAAQnpoB,aAAa,UAAW,GAC/C0j2B,EAAsB,CAAC,UAAW,YAEtC,GAAKlJ,GAAyD,MAAzCA,EAAaxxrC,IAAI06rC,GAAtC,CAIA,IAAIH,EAAiB/I,EAAa/8/B,SAASimgC,GACvCC,EAAY,GAEZC,EAAe16N,GAAYC,EADlBu5N,GAAea,IAuB5B,OArBA,GAAKK,EAAaxC,aAAa,SAAUvuI,GACvC,OAAOgxI,EAAqBhxI,EAAW,QAAS,aAClD,IACA,GAAK+wI,EAAavC,aAAa,SAAUxuI,GACvC,OAAOgxI,EAAqBhxI,EAAW,QAAS,aAClD,IAgBO8wI,CA3BP,CAaA,SAASE,EAAqBhxI,EAAW+jI,EAAckN,GACrD,IAAIlxI,EAAYC,EAAU7hyB,eACtB+y6B,EAAS,CACX3xrC,KAAM,SACN4xrC,cAAc,EAEdjO,WAAYwN,EAAev6rC,IAAI,cAAc,IAAS,SAEtDooB,GAAIixqC,GAAoBzL,EAAehkI,GAEzCmxI,EAAOD,GAAqBlxI,EAC5B+wI,EAAUj8rC,KAAKq8rC,EACjB,CAGF,EjWnPEr7jC,GAAiD,MAA1Cq63B,GAAyB/5/B,IAAI2g+B,KAAqBygC,IACzDrH,GAAyBjx/B,IAAI639B,GAAUygC,IiWmPzC,YCjKA,GAlFA,SAAU77oB,GAGR,SAAS010B,IACP,IAAI1xoC,EAAmB,OAAXg8T,GAAmBA,EAAOnoX,MAAMP,KAAMI,YAAcJ,KAGhE,OADA0sD,EAAMngD,KAAO6xrC,EAAa7xrC,KACnBmgD,CACT,CAuEA,OA9EAkgX,EAAUwxxB,EAAc110B,GASxB010B,EAAa7xrC,KAAO,UACpB6xrC,EAAaniiC,aAAe,CAAC,eAC7BmiiC,EAAax9pB,cAAgB,CAE3Bj7hB,EAAG,GACHs9U,MAAM,EAENo72B,aAAa,EAGb3/pC,QAAS,OAETm/mC,UAAW,kBACXygD,mBAAmB,EACnBt6uB,YAAa,SACb+uiB,WAAY,OAIZwrM,QAAS,KACTC,UAAW,EACXC,UAAW,IAEXz+kC,mBAAoB,GACpB0+kC,WAAW,EACXhljC,gBAAiB,OAEjBsroB,WAAY,GACZn0pB,YAAa,oBACbi0pB,cAAe,EACfC,cAAe,EAEfpsa,aAAc,EAEd6+nB,YAAa,EAIbt/2B,QAAS,KAET463B,aAAc,GAEd8W,YAAa,CAGXr9/B,KAAM,OAKNk+L,KAAM,OACNslD,UAAW,OACX4owB,wBAAyB,IACzBE,sBAAuB,iBACvByoC,WAAY,CACV/z6B,MAAO,OACPxuF,MAAO,EACPxyB,KAAM,SAENy8+B,UAAW,CAAC,IAKhBA,UAAW,CACTz73B,MAAO,OACPk3H,SAAU,KAGP258B,CACT,CAhFA,CAgFE1xiC,ICjFK,SAASiyiC,GAAqBC,GACnC,IAAIC,EAAgBD,EAAaz7rC,IAAI,WACrC,OAAwB,MAAjB07rC,IAA0BA,EACI,aAAnCD,EAAaz7rC,IAAI,aACrB,CAEA,SAAS27rC,GAAUC,GACjB,GAAK,EAAIl4P,aAMT,IAFA,IAAIxy7B,EAAQlP,SAASk+F,gBAAgBhvF,MAE5BzT,EAAI,EAAGi+H,EAAMkgkC,EAAW1+rC,OAAQO,EAAIi+H,EAAKj+H,IAChD,GAAIm+rC,EAAWn+rC,KAAMyT,EACnB,OAAO0qrC,EAAWn+rC,EAGxB,CAEO,IAAIo+rC,GAAmBF,GAAU,CAAC,YAAa,kBAAmB,aAAc,eAAgB,gBAEhG,SAASG,GAAkBC,EAAaC,GAC7C,IAAKD,EACH,OAAOC,EAGTA,EAAYztM,GAAYytM,GAAW,GACnC,IAAIrk1B,EAAMok1B,EAAY1+rC,QAAQ2+rC,GAE9B,OADAD,GAAuB,IAATpk1B,EAAaqk1B,EAAY,IAAMD,EAAYn9rC,MAAM,EAAG+4W,GAAO,IAAMqk1B,GAC5D5vrC,aACrB,CC1BA,IAAI6vrC,GAAwBH,GDgBGH,GAAU,CAAC,mBAAoB,aAAc,cAAe,gBAAiB,iBChB3C,cAC7DO,GAAuBJ,GAAkBD,GAAkB,aAE3DM,GAAW,0FAA4F,EAAIv4P,qBAAuB,yBAA2B,IAoDjK,SAASw4P,GAAkBt7rC,EAAGjB,EAAGuB,GAG/B,IAAI6hP,EAAKniP,EAAEm/C,QAAQ,GAAK,KACpBquI,EAAKzuL,EAAEogD,QAAQ,GAAK,KAExB,IAAK,EAAI0j5B,mBACP,OAAOvi8B,EAAW,OAASktL,EAAK,SAAW20D,EAAK,IAAM,CAAC,CAAC,MAAO30D,GAAK,CAAC,OAAQ20D,IAI/E,IAAIzE,EAAO,EAAIoltB,qBACX3t0B,EAAY,aAAeuoH,EAAO,KAAO,IAAM,IAAMyE,EAAK,IAAM30D,GAAMkwD,EAAO,KAAO,IAAM,IAC9F,OAAOp9O,EAAW,gBAAkB86rC,GAAuB,IAAMjmkC,EAAY,IAAM,CAAC,CAAC,MAAO,GAAI,CAAC,OAAQ,GAAI,CAAC4lkC,GAAkB5lkC,GAClI,CAiEA,SAASomkC,GAAet/jC,EAAK3nH,EAAIknrC,EAAcvvP,EAAKC,GAClD,IAAIuvP,EAAYnnrC,GAAMA,EAAG677B,QAEzB,GAAIqrP,EAAc,CAChB,IAAIE,EAAiBD,GAAaA,EAAUrjO,kBAExCsjO,G1a5LD,SAA6Bz/jC,EAAK0/jC,EAAQC,EAAUjxP,EAAKC,GACrDF,GAA2BD,GAAUkxP,EAAQhxP,EAAKC,GAAK,IACvDF,GAA2Bzu0B,EAAK2/jC,EAAUnxP,GAAS,GAAIA,GAAS,GAC3E,C0a2LMoxP,CAAoB5/jC,EAAKy/jC,EAAgBx6rC,SAAS4rB,KAAMm/6B,EAAKC,EAEjE,KAAO,CACLjw0B,EAAI,GAAKgw0B,EACThw0B,EAAI,GAAKiw0B,EAIT,IAAI4vP,EAAqBL,GAAaA,EAAUzrH,wBAE5C8rH,IACF7/jC,EAAI,IAAM6/jC,EAAmB7+lC,WAC7Bg/B,EAAI,IAAM6/jC,EAAmBx+lC,UAEjC,CAEA2+B,EAAI,GAAKA,EAAI,GAAK3nH,EAAG4yN,WACrBjrG,EAAI,GAAKA,EAAI,GAAK3nH,EAAGyiK,WACvB,CAEA,IAAIglhC,GAEJ,WACE,SAASA,EAAmB5+iC,EAAWnyG,EAAKmxf,GAQ1C,GAPApgiB,KAAKigsC,OAAQ,EACbjgsC,KAAKkgsC,YAAc,CAAC,EAAG,EAAG,EAAG,GAC7BlgsC,KAAKmgsC,YAAa,EAClBngsC,KAAKogsC,oBAAqB,EAC1BpgsC,KAAKqgsC,YAAa,EAClBrgsC,KAAKsgsC,WAAY,EAEb,EAAI75P,IACN,OAAO,KAGT,IAAI5szB,EAAK10I,SAASmE,cAAc,OAEhCuwI,EAAGwz0B,eAAgB,EACnBrt9B,KAAK65I,GAAKA,EACV,IAAIthI,EAAKvY,KAAKgyiC,IAAM/igC,EAAIk9/B,QACpBszJ,EAAez/rC,KAAKugsC,cAAgBngqB,GAAOA,EAAIq/pB,aACnDD,GAAex/rC,KAAKkgsC,YAAa3nrC,EAAIknrC,EAAcxwpC,EAAIk8L,WAAa,EAAGl8L,EAAI+rI,YAAc,GAErFykhC,EACFt6rC,SAAS4rB,KAAKxc,YAAYslI,GAE1BuH,EAAU7sI,YAAYslI,GAGxB75I,KAAKy7vB,WAAar6mB,EAIlB,IAAIh/I,EAAOpC,KAEX65I,EAAG2mjC,aAAe,WAEZp+rC,EAAK+9rC,aACPzzqC,aAAatqB,EAAKq+rC,cAClBr+rC,EAAK69rC,OAAQ,GAGf79rC,EAAKs+rC,YAAa,CACpB,EAEA7mjC,EAAGg9hC,YAAc,SAAU13qC,GAGzB,GAFAA,EAAIA,GAAK+C,OAAOu8B,OAEXr8B,EAAK+9rC,WAAY,CAOpB,IAAInwoC,EAAUz3C,EAAGy3C,QAEjBug5B,GADqBh47B,EAAG677B,QAAQioB,kBACDl99B,GAAG,GAClC6wD,EAAQw8W,SAAS,YAAarta,EAChC,CACF,EAEA06I,EAAG8mjC,aAAe,WAEhBv+rC,EAAKs+rC,YAAa,EAEdt+rC,EAAK+9rC,YACH/9rC,EAAK69rC,OACP79rC,EAAKw+rC,UAAUx+rC,EAAKy+rC,WAG1B,CACF,CAkKA,OA5JAb,EAAmBtgsC,UAAU6uE,OAAS,SAAUqwnC,GAG9C,IDxN6B/kjC,EAAIxlI,EAC/BoygC,ECuNErl4B,EAAYphJ,KAAKy7vB,WACjB98tB,GDzN6BtqB,ECyNU,YDxNzCoygC,GAD2B5s4B,ECyNGuH,GDxNrB40Q,cAAgB7wZ,SAASswZ,aAAetwZ,SAASswZ,YAAYE,iBAAiB97Q,IAC9ExlI,EAAQoygC,EAAIpygC,GAASoygC,EAAM,MCwNlCl7E,EAAWnqzB,EAAU/sI,MAEC,aAAtBk37B,EAAS5s6B,UAAwC,aAAbA,IACtC4s6B,EAAS5s6B,SAAW,YAItB,IAAI2/pC,EAAoBM,EAAaz7rC,IAAI,qBACzCm7rC,GAAqBt+rC,KAAK8gsC,iBAE1B9gsC,KAAKogsC,mBAAqB9B,EAE1Bt+rC,KAAK65I,GAAGjqD,UAAYgvmC,EAAaz7rC,IAAI,cAAgB,EAGvD,EAEA68rC,EAAmBtgsC,UAAUujV,KAAO,SAAU272B,EAAcmC,GAC1Dr0qC,aAAa1sB,KAAKygsC,cAClB/zqC,aAAa1sB,KAAKghsC,kBAClB,IAAInnjC,EAAK75I,KAAK65I,GACVxlI,EAAQwlI,EAAGxlI,MACX4srC,EAAajhsC,KAAKkgsC,YAEjBrmjC,EAAGI,UAGN5lI,EAAM2qY,QAAUsgzB,GA/KtB,SAAyBV,EAAcsC,EAAkBC,GACvD,IAAInizB,EAAU,GACVh/R,EAAqB4+kC,EAAaz7rC,IAAI,sBACtCu2I,EAAkBkljC,EAAaz7rC,IAAI,mBACnC6hxB,EAAa45a,EAAaz7rC,IAAI,cAC9B0tH,EAAc+tkC,EAAaz7rC,IAAI,eAC/B2hxB,EAAgB85a,EAAaz7rC,IAAI,iBACjC4hxB,EAAgB65a,EAAaz7rC,IAAI,iBACjCyl/B,EAAiBg2M,EAAahngC,SAAS,aACvC1/D,EAAUiu5B,GAA2By4K,EAAc,QACnDz80B,EAAY2ia,EAAgB,MAAQC,EAAgB,MAAQC,EAAa,MAAQn0pB,EAuBrF,OAtBAmuR,EAAQn9Y,KAAK,cAAgBsgX,GAE7B++0B,GAAoBlhlC,GAAsBg/R,EAAQn9Y,KApEpD,SAA4BwjD,EAAU87oC,GACpC,IAAIC,EAAkB,8BAClBC,EAAmB,IAAMh8oC,EAAW,EAAI,KAAO+7oC,EAC/CE,EAAiB,UAAYD,EAAmB,cAAgBA,EAOpE,OALKF,IACHE,EAAmB,IAAMh8oC,EAAW,KAAO+7oC,EAC3CE,GAAkB,EAAIx6P,mBAAqB,IAAMu4P,GAAuBgC,EAAmB,QAAUA,EAAmB,OAASA,GAG5HjC,GAAwB,IAAMkC,CACvC,CAyDyDC,CAAmBvhlC,EAAoBmhlC,IAE1FznjC,GACFslQ,EAAQn9Y,KAAK,oBAAsB63I,GAIrC,EAAK,CAAC,QAAS,QAAS,WAAW,SAAUhvI,GAC3C,IAAI82rC,EAAa,UAAY92rC,EACzBivf,EAAY+3f,GAAY8vM,GACxB9jhC,EAAMkhhC,EAAaz7rC,IAAIw2f,GACpB,MAAPj8U,GAAeshO,EAAQn9Y,KAAK2/rC,EAAa,IAAM9jhC,GAAgB,UAAThzK,EAAmB,GAAK,MAChF,IAEAs0Y,EAAQn9Y,KA/CV,SAAsB+m/B,GACpB,IAAI5pmB,EAAU,GACVv6J,EAAWmkwB,EAAezl/B,IAAI,YAC9BoqH,EAAQq73B,EAAen2wB,eAC3BllH,GAASyxR,EAAQn9Y,KAAK,SAAW0rH,GACjCyxR,EAAQn9Y,KAAK,QAAU+m/B,EAAepjO,WACtC/giB,GACGu6J,EAAQn9Y,KAAK,eAAiBgB,KAAKogD,MAAiB,EAAXwhM,EAAe,GAAK,MAChE,IAAI5zH,EAAc+33B,EAAezl/B,IAAI,mBACjC6hxB,EAAa4jO,EAAezl/B,IAAI,mBAAqB,EACrD2hxB,EAAgB8jO,EAAezl/B,IAAI,sBAAwB,EAC3D4hxB,EAAgB6jO,EAAezl/B,IAAI,sBAAwB,EAM/D,OALA0tH,GAAem0pB,GAAchmY,EAAQn9Y,KAAK,eAAiBijxB,EAAgB,MAAQC,EAAgB,MAAQC,EAAa,MAAQn0pB,GAChI,EAAK,CAAC,aAAc,UAAU,SAAUnmH,GACtC,IAAIgzK,EAAMkr0B,EAAezl/B,IAAIuH,GAC7BgzK,GAAOshO,EAAQn9Y,KAAK,QAAU6I,EAAO,IAAMgzK,EAC7C,IACOshO,EAAQnyY,KAAK,IACtB,CA6Be40rC,CAAa74M,IAEX,MAAX1w3B,GACF8mR,EAAQn9Y,KAAK,WAAa,GAAkBq2H,GAASrrH,KAAK,OAAS,MAG9DmyY,EAAQnyY,KAAK,KAAO,GAC7B,CA6IiC60rC,CAAgB9C,GAAe5+rC,KAAKqgsC,WAAYrgsC,KAAKsgsC,WAC9Ef,GAAkB0B,EAAW,GAAIA,EAAW,IAAI,GAAS,gBAAkB/tM,GAAqB6tM,GAAkB,KAAQnC,EAAaz7rC,IAAI,iBAAmB,IAK7J,oBAAsBnD,KAAKmgsC,WAAa,OAAS,QARpD9rrC,EAAMC,QAAU,OAWlBtU,KAAKigsC,OAAQ,EACbjgsC,KAAKqgsC,YAAa,EAClBrgsC,KAAKsgsC,WAAY,CACnB,EAEAN,EAAmBtgsC,UAAUyzZ,WAAa,SAAUz6T,EAASw0S,EAAS0xzB,EAActm1B,EAAaqp1B,GAC/F,IAAI9njC,EAAK75I,KAAK65I,GAEd,GAAe,MAAXnhD,EAAJ,CAKA,IAAImt8B,EAAQ,GAMZ,GAJI7q+B,GAAS2moC,IAAkD,SAAhC/C,EAAaz7rC,IAAI,aAA0Bw7rC,GAAqBC,KAC7F/4J,EA/RN,SAAuB+4J,EAActm1B,EAAaqp1B,GAChD,IAAK3moC,GAAS2moC,IAAoC,WAAlBA,EAC9B,MAAO,GAGT,IAAIjojC,EAAkBkljC,EAAaz7rC,IAAI,mBACnCq0+B,EAAconN,EAAaz7rC,IAAI,eACnCm1W,EAAc46oB,GAAqB56oB,GACnC,IAbiBj2P,EAiBbu/kC,EAJAC,EAZU,UADGx/kC,EAaQs/kC,GAZF,QAAkB,UAARt/kC,EAAkB,OAAiB,QAARA,EAAgB,SAAW,MAanF0q/B,EAAYlqmC,KAAK8K,IAA8B,IAA1B9K,KAAKogD,MAAMu07B,GAAoB,GACpDsqN,EAAgB,GAChBC,EAAiB1C,GAAuB,IAGxC7+rC,EAAQ,CAAC,OAAQ,SAAUqhsC,IAAa,GAC1CC,GAAiB,UACjBC,GAAkB,4BAA8BH,EAAyB,SAAbC,GAAuB,KAAO,IAAM,SAEhGC,GAAiB,WACjBC,GAAkB,4BAA8BH,EAAyB,QAAbC,EAAqB,IAAM,IAAM,QAG/F,IAAIG,EAAeJ,EAAY/+rC,KAAKsmC,GAAK,IACrC84pC,EAAUl1F,EAAYv1H,EACtB0qN,EAAYD,EAAUp/rC,KAAKmjH,IAAInjH,KAAKuxH,IAAI4tkC,IAAiBC,EAAUp/rC,KAAKmjH,IAAInjH,KAAK4wH,IAAIuukC,IAGrFG,EAAc7p1B,EAAc,UAAYk/nB,EAAc,MAE1D,MAAO,eADQ,CAAC,2BAA6Bu1H,EAAY,aAAeA,EAAY,kBAFpF+0F,GAAiB,IAAMD,EAAW,KADhBh/rC,KAAKogD,MAA4G,MAApGi/oC,EAAYr/rC,KAAKu/rC,MAAQ5qN,GAAe,EAAI30+B,KAAKu/rC,MAAQ5qN,GAAe0qN,EAAYD,GAAW,IAAY,IACnF,MAE+D,IAAMF,EAAiB,IAAK,iBAAmBI,EAAa,gBAAkBA,EAAa,oBAAsBzojC,EAAkB,KACvN7sI,KAAK,IAAM,UAC/C,CAiQcw1rC,CAAczD,EAActm1B,EAAaqp1B,IAG/C3moC,GAAS09B,GACXmhD,EAAGI,UAAYvhD,EAAUmt8B,OACpB,GAAInt8B,EAAS,CAElBmhD,EAAGI,UAAY,GAEVtoI,GAAQ+mF,KACXA,EAAU,CAACA,IAGb,IAAK,IAAI93F,EAAI,EAAGA,EAAI83F,EAAQr4F,OAAQO,IAC9Bqo8B,GAAMvw2B,EAAQ93F,KAAO83F,EAAQ93F,GAAG8gC,aAAem4G,GACjDA,EAAGtlI,YAAYmkF,EAAQ93F,IAK3B,GAAIiliC,GAAShs5B,EAAG7vD,WAAW3pF,OAAQ,CAGjC,IAAIiisC,EAAUn9rC,SAASmE,cAAc,OACrCg5rC,EAAQrojC,UAAY4r5B,EACpBhs5B,EAAGtlI,YAAY+trC,EACjB,CACF,CAhCA,MAFEzojC,EAAGI,UAAY,EAmCnB,EAEA+ljC,EAAmBtgsC,UAAU6isC,aAAe,SAAU7D,GACpD1+rC,KAAKmgsC,WAAazB,CACpB,EAEAsB,EAAmBtgsC,UAAU46O,QAAU,WACrC,IAAIzgG,EAAK75I,KAAK65I,GACd,MAAO,CAACA,EAAGj5G,YAAai5G,EAAGl5G,aAC7B,EAEAq/pC,EAAmBtgsC,UAAUqnwB,OAAS,SAAUmpM,EAAKC,GACnD,IAAI8wP,EAAajhsC,KAAKkgsC,YAGtB,GAFAV,GAAeyB,EAAYjhsC,KAAKgyiC,IAAKhyiC,KAAKugsC,cAAerwP,EAAKC,GAEzC,MAAjB8wP,EAAW,IAA+B,MAAjBA,EAAW,GAAY,CAClD,IAAI/uB,EAAUlyqC,KAAK65I,GAAGxlI,MAEtB,EADiBkrrC,GAAkB0B,EAAW,GAAIA,EAAW,KAC5C,SAAUr+jC,GACzBsviC,EAAQtviC,EAAU,IAAMA,EAAU,EACpC,GACF,CACF,EAOAo9jC,EAAmBtgsC,UAAUohsC,eAAiB,WAE5C,IAAI0B,EAASxisC,KAAKkgsC,YAAY,GAE1BuC,EAASzisC,KAAKkgsC,YAAY,GAC9BlgsC,KAAK+mwB,OAAOy7b,EAASxisC,KAAKgyiC,IAAI7m0B,WAAYs39B,EAASzisC,KAAKgyiC,IAAIh33B,YAC9D,EAEAglhC,EAAmBtgsC,UAAUyqZ,KAAO,WAClC,IAAIz9V,EAAQ1sD,KAERqU,EAAQrU,KAAK65I,GAAGxlI,MACpBA,EAAM24L,WAAa,SACnB34L,EAAMu3H,QAAU,IAChB,EAAIm7zB,uBAAyB1y7B,EAAMqurC,WAAa,IAChD1isC,KAAKigsC,OAAQ,EACbjgsC,KAAKghsC,iBAAmBn7qC,YAAW,WACjC,OAAO6mC,EAAM4zoC,WAAY,CAC3B,GAAG,IACL,EAEAN,EAAmBtgsC,UAAUkhsC,UAAY,SAAU/6oC,IAC7C7lD,KAAKigsC,OAAWjgsC,KAAK0gsC,YAAc1gsC,KAAKmgsC,YAAgBngsC,KAAKogsC,qBAC3Dv6oC,GACF7lD,KAAK6gsC,WAAah7oC,EAElB7lD,KAAKigsC,OAAQ,EACbjgsC,KAAKygsC,aAAe56qC,WAAWxiB,GAAKrD,KAAKmqZ,KAAMnqZ,MAAO6lD,IAEtD7lD,KAAKmqZ,OAGX,EAEA61yB,EAAmBtgsC,UAAU89nC,OAAS,WACpC,OAAOx9nC,KAAKigsC,KACd,EAEAD,EAAmBtgsC,UAAU2l8B,QAAU,WACrCrl8B,KAAK65I,GAAGn4G,WAAW7E,YAAY78B,KAAK65I,GACtC,EAEOmmjC,CACT,CAzOA,GA2OA,YC1OA,SAAS2C,GAAajlhC,GACpB,OAAO76K,KAAK8K,IAAI,EAAG+vK,EACrB,CAEA,SAASklhC,GAAoBvurC,GAC3B,IAAI2wwB,EAAa29a,GAAaturC,EAAM2wwB,YAAc,GAC9CF,EAAgB69a,GAAaturC,EAAMywwB,eAAiB,GACpDC,EAAgB49a,GAAaturC,EAAM0wwB,eAAiB,GACxD,MAAO,CACLlmvB,KAAM8jqC,GAAa39a,EAAaF,GAChCjlrB,MAAO8imC,GAAa39a,EAAaF,GACjChmvB,IAAK6jqC,GAAa39a,EAAaD,GAC/BjlrB,OAAQ6imC,GAAa39a,EAAaD,GAEtC,CAEA,SAAS,GAAe7kpB,EAAK3nH,EAAI237B,EAAKC,GACpCjw0B,EAAI,GAAKgw0B,EACThw0B,EAAI,GAAKiw0B,EACTjw0B,EAAI,GAAKA,EAAI,GAAK3nH,EAAG4yN,WACrBjrG,EAAI,GAAKA,EAAI,GAAK3nH,EAAGyiK,WACvB,CAEA,SA9LA,WACE,SAAS6nhC,EAAmB5zpC,GAC1BjvC,KAAKigsC,OAAQ,EACbjgsC,KAAKkgsC,YAAc,CAAC,EAAG,EAAG,EAAG,GAC7BlgsC,KAAKogsC,oBAAqB,EAC1BpgsC,KAAKmgsC,YAAa,EAClBngsC,KAAKgyiC,IAAM/igC,EAAIk9/B,QACf,GAAensiC,KAAKkgsC,YAAalgsC,KAAKgyiC,IAAK/igC,EAAIk8L,WAAa,EAAGl8L,EAAI+rI,YAAc,EACnF,CA4JA,OAtJA6nhC,EAAmBnjsC,UAAU6uE,OAAS,SAAUqwnC,GAC9C,IAAIN,EAAoBM,EAAaz7rC,IAAI,qBACzCm7rC,GAAqBt+rC,KAAK8gsC,iBAE1B9gsC,KAAKogsC,mBAAqB9B,CAC5B,EAEAuE,EAAmBnjsC,UAAUujV,KAAO,WAC9BjjV,KAAKygsC,cACP/zqC,aAAa1sB,KAAKygsC,cAGpBzgsC,KAAK65I,GAAGopM,OACRjjV,KAAKigsC,OAAQ,CACf,EAMA4C,EAAmBnjsC,UAAUyzZ,WAAa,SAAUz6T,EAASus7B,EAAoB25K,EAActm1B,EAAaqp1B,GAC1G,IAAIj1oC,EAAQ1sD,KAER,GAAgB04F,IAClBy76B,GAA0H,IAGxHn0gC,KAAK65I,IACP75I,KAAKgyiC,IAAIn/gC,OAAO7yB,KAAK65I,IAGvB,IAAI+u2B,EAAiBg2M,EAAahngC,SAAS,aAC3C53L,KAAK65I,GAAK,IAAI,GAAO,CACnBxlI,MAAO,CACL219B,KAAMi7C,EAAmBoB,eACzBj2/B,KAAMsoE,EACNsxJ,WAAY,GACZwtvB,YAAa,EACbl/nB,YAAaA,EACb8+nB,gBAAiBwR,EAAezl/B,IAAI,mBACpCi6H,KAAMwhkC,EAAaz7rC,IAAI,CAAC,YAAa,UACrC+0H,QAASiu5B,GAA2By4K,EAAc,YAClDzrd,cAAe,MACfoxC,MAAO,QAET5+wB,EAAGi5rC,EAAaz7rC,IAAI,OAEtB,EAAY,CAAC,kBAAmB,eAAgB,cAAe,aAAc,gBAAiB,kBAAkB,SAAUooJ,GACxH7+F,EAAMmtF,GAAGxlI,MAAMk3I,GAAYqziC,EAAaz7rC,IAAIooJ,EAC9C,IACA,EAAY,CAAC,iBAAkB,oBAAqB,sBAAsB,SAAUA,GAClF7+F,EAAMmtF,GAAGxlI,MAAMk3I,GAAYq91B,EAAezl/B,IAAIooJ,IAAa,CAC7D,IAEAvrJ,KAAKgyiC,IAAI7shC,IAAInlB,KAAK65I,IAElB,IAAIz3I,EAAOpC,KACXA,KAAK65I,GAAGjpI,GAAG,aAAa,WAElBxO,EAAK+9rC,aACPzzqC,aAAatqB,EAAKq+rC,cAClBr+rC,EAAK69rC,OAAQ,GAGf79rC,EAAKs+rC,YAAa,CACpB,IACA1gsC,KAAK65I,GAAGjpI,GAAG,YAAY,WACjBxO,EAAK+9rC,YACH/9rC,EAAK69rC,OACP79rC,EAAKw+rC,UAAUx+rC,EAAKy+rC,YAIxBz+rC,EAAKs+rC,YAAa,CACpB,GACF,EAEAmC,EAAmBnjsC,UAAU6isC,aAAe,SAAU7D,GACpD1+rC,KAAKmgsC,WAAazB,CACpB,EAEAmE,EAAmBnjsC,UAAU46O,QAAU,WACrC,IAAIzgG,EAAK75I,KAAK65I,GACVuyiC,EAAWpsrC,KAAK65I,GAAGsqG,kBAGnB2+8B,EAAkBF,GAAoB/ojC,EAAGxlI,OAC7C,MAAO,CAAC+3qC,EAASrtpC,MAAQ+jqC,EAAgBjkqC,KAAOikqC,EAAgBjjmC,MAAOuslC,EAASptpC,OAAS8jqC,EAAgBhkqC,IAAMgkqC,EAAgBhjmC,OACjI,EAEA+imC,EAAmBnjsC,UAAUqnwB,OAAS,SAAU9iwB,EAAGjB,GACjD,IAAI62I,EAAK75I,KAAK65I,GAEd,GAAIA,EAAI,CACN,IAAIonjC,EAAajhsC,KAAKkgsC,YACtB,GAAee,EAAYjhsC,KAAKgyiC,IAAK/tiC,EAAGjB,GACxCiB,EAAIg9rC,EAAW,GACfj+rC,EAAIi+rC,EAAW,GACf,IAAI5srC,EAAQwlI,EAAGxlI,MACXmj+B,EAAcmrN,GAAaturC,EAAMmj+B,aAAe,GAChDsrN,EAAkBF,GAAoBvurC,GAE1CwlI,EAAG51I,EAAIA,EAAIuz+B,EAAcsrN,EAAgBjkqC,KACzCg7G,EAAG72I,EAAIA,EAAIw0+B,EAAcsrN,EAAgBhkqC,IACzC+6G,EAAG640B,YACL,CACF,EAOAmwO,EAAmBnjsC,UAAUohsC,eAAiB,WAE5C,IAAI0B,EAASxisC,KAAKkgsC,YAAY,GAE1BuC,EAASzisC,KAAKkgsC,YAAY,GAC9BlgsC,KAAK+mwB,OAAOy7b,EAASxisC,KAAKgyiC,IAAI7m0B,WAAYs39B,EAASzisC,KAAKgyiC,IAAIh33B,YAC9D,EAEA6nhC,EAAmBnjsC,UAAUyqZ,KAAO,WAC9BnqZ,KAAK65I,IACP75I,KAAK65I,GAAGswQ,OAGVnqZ,KAAKigsC,OAAQ,CACf,EAEA4C,EAAmBnjsC,UAAUkhsC,UAAY,SAAU/6oC,IAC7C7lD,KAAKigsC,OAAWjgsC,KAAK0gsC,YAAc1gsC,KAAKmgsC,YAAgBngsC,KAAKogsC,qBAC3Dv6oC,GACF7lD,KAAK6gsC,WAAah7oC,EAElB7lD,KAAKigsC,OAAQ,EACbjgsC,KAAKygsC,aAAe56qC,WAAW,GAAY7lB,KAAKmqZ,KAAMnqZ,MAAO6lD,IAE7D7lD,KAAKmqZ,OAGX,EAEA04yB,EAAmBnjsC,UAAU89nC,OAAS,WACpC,OAAOx9nC,KAAKigsC,KACd,EAEA4C,EAAmBnjsC,UAAU2l8B,QAAU,WACrCrl8B,KAAKgyiC,IAAIn/gC,OAAO7yB,KAAK65I,GACvB,EAEOgpjC,CACT,CArKA,GCiBA,IAAIE,GAAY,IAAI,GAAK,CACvBzg+B,MAAO,CACLr+N,GAAI,EACJjB,GAAI,EACJ+7B,MAAO,EACPC,OAAQ,KAIRgkqC,GAEJ,SAAUt60B,GAGR,SAASs60B,IACP,IAAIt2oC,EAAmB,OAAXg8T,GAAmBA,EAAOnoX,MAAMP,KAAMI,YAAcJ,KAGhE,OADA0sD,EAAMngD,KAAOy2rC,EAAYz2rC,KAClBmgD,CACT,CA4qBA,OAnrBAkgX,EAAUo2xB,EAAat60B,GASvBs60B,EAAYtjsC,UAAUgxD,KAAO,SAAU4y6B,EAASr07B,GAC9C,IAAI,EAAIo6C,MAASp6C,EAAI8jgC,SAArB,CAIA,IhZ2lBiCkwJ,EgZ3lB7BrE,EAAet7N,EAAQnpoB,aAAa,WACpC44pB,EAAa/y/B,KAAKkjsC,YhZ2lBC,UADUD,EgZ1lBwBrE,EAAaz7rC,IAAI,ehZ6lBnE,EAAI0j8B,aAAe,OAAS,WAE5Bo8P,GAAoB,OgZ9lB3BjjsC,KAAKmjsC,gBAAiC,aAAfpwM,EAA4B,IAAI,GAAmB9j9B,GAAO,IAAI,GAAmBA,EAAI8jgC,SAAU9jgC,EAAK,CACzHwwpC,aAAcb,EAAaz7rC,IAAI,gBAAgB,IALjD,CAOF,EAEA6/rC,EAAYtjsC,UAAU4uH,OAAS,SAAUswkC,EAAct7N,EAASr07B,GAC9D,IAAI,EAAIo6C,MAASp6C,EAAI8jgC,SAArB,CAKA/yiC,KAAKo7T,MAAMvtE,YACX7tP,KAAKojsC,cAAgBxE,EACrB5+rC,KAAK2lqC,SAAWriM,EAChBtj+B,KAAK8kgC,KAAO719B,EACZ,IAAIo0pC,EAAiBrjsC,KAAKmjsC,gBAC1BE,EAAe90nC,OAAOqwnC,GACtByE,EAAed,aAAa3D,EAAaz7rC,IAAI,cAE7CnD,KAAKsjsC,sBAELtjsC,KAAKujsC,YAQoB,aAArBvjsC,KAAKkjsC,aAA8BtE,EAAaz7rC,IAAI,sBACtD0r1B,GAAe7u1B,KAAM,kBAAmB,GAAI,WAE5CglB,GAAMhlB,KAAM,kBAxBd,CA0BF,EAEAgjsC,EAAYtjsC,UAAU4jsC,oBAAsB,WAC1C,IACIzlD,EADe79oC,KAAKojsC,cACKjgsC,IAAI,aACjC,GAAwB,cAAenD,KAAK8kgC,KAAMzhgC,IAAK,SAAUk3qC,EAAap7qC,EAAGqliC,GAE7D,SAAdq5G,IACEA,EAAUr9oC,QAAQ+5qC,IAAgB,EACpCv6qC,KAAKwjsC,SAASrksC,EAAGqliC,GACQ,UAAhB+1I,GACTv6qC,KAAKyjsC,MAAMj/J,GAGjB,GAAGxkiC,MACL,EAEAgjsC,EAAYtjsC,UAAU6jsC,UAAY,WAChC,IAAI3E,EAAe5+rC,KAAKojsC,cACpB9/N,EAAUtj+B,KAAK2lqC,SACf12nC,EAAMjvC,KAAK8kgC,KACX+4I,EAAY+gD,EAAaz7rC,IAAI,aAEjC,GAAmB,MAAfnD,KAAK0jsC,QAAiC,MAAf1jsC,KAAK2jsC,QAGf,SAAd9lD,GAAsC,UAAdA,EAAuB,CAChD,IAAI5oE,EAASj1kC,KACb0sB,aAAa1sB,KAAK4jsC,uBAClB5jsC,KAAK4jsC,sBAAwB/9qC,YAAW,YAIrCopB,EAAIohgC,cAAgB4kC,EAAO4uH,gBAAgBjF,EAAct7N,EAASr07B,EAAK,CACtEhrC,EAAGgxkC,EAAOyuH,OACV1gsC,EAAGiykC,EAAO0uH,OACVvoB,eAAgBnmG,EAAO6uH,qBAE3B,GACF,CACF,EAmBAd,EAAYtjsC,UAAUmksC,gBAAkB,SAAUjF,EAAct7N,EAASr07B,EAAKna,GAC5E,GAAIA,EAAQ/W,OAAS/d,KAAKozV,MAAO,EAAI/pQ,MAASp6C,EAAI8jgC,SAAlD,CAIA,IAAIvO,EAAiB,GAAmB1vgC,EAASma,GAEjDjvC,KAAK+jsC,QAAU,GAEf,IAAI3oB,EAAiBtmpC,EAAQsmpC,eACzB4oB,EA4sBR,SAAgClvqC,EAASwu8B,EAASr07B,GAChD,IAAIy07B,EAAiBF,GAAe1u8B,GAAS4u8B,eACzC2f,EAAoB3f,EAAepw9B,OAAO,GAE9C,GAAK+v+B,GAA2C,WAAtBA,EAA1B,CAIA,IAYIxp2B,EAPA9kB,EALciv2B,GAAyBV,EAAS+f,EAAmB3f,EAAevg+B,IAAIkg/B,GAAoB,CAC5Gpf,YAAY,EACZC,WAAW,EACXC,YAAY,IAEUtz0B,OAAO,GAE/B,GAAK97B,EAeL,OAXW9lF,EAAIiz8B,wBAAwBnt3B,GAElCqmM,MAAMv1H,UAAS,SAAUo+/B,GAC5B,IAAIxrK,EAAgBz7C,GAAUinN,GAAOxrK,cAErC,GAAIA,GAAiBA,EAAc/thC,OAASoqB,EAAQpqB,KAElD,OADAmvI,EAAKoqjC,GACE,CAEX,IAEIpqjC,EACK,CACLwp2B,kBAAmBA,EACnBl4tB,eAAgBp2J,EAAMo2J,eACtBtxI,GAAIA,QAJR,CAxBA,CA+BF,CAjvBkBqqjC,CAAuBpvqC,EAASwu8B,EAASr07B,GAEvD,GAAI+0pC,EAAS,CACX,IAAItwmC,EAAOswmC,EAAQnqjC,GAAGsqG,kBAAkB5zN,QACxCmjE,EAAKo42B,eAAek4P,EAAQnqjC,GAAGjX,WAE/B5iI,KAAKwjsC,SAAS,CACZrrkC,QAASzkC,EAAKzvF,EAAIyvF,EAAK30D,MAAQ,EAC/Bq5F,QAAS1kC,EAAK1wF,EAAI0wF,EAAK10D,OAAS,EAChClvB,OAAQk0rC,EAAQnqjC,GAChBl7G,SAAU7J,EAAQ6J,SAGlBwlqC,gBAAiB,UAChB3/J,EACL,MAAO,GAAI1vgC,EAAQupH,SAAwB,MAAbvpH,EAAQ7wB,GAA0B,MAAb6wB,EAAQ9xB,EAAW,CACpE,IAAI62I,EAAKkpjC,GACTlpjC,EAAG51I,EAAI6wB,EAAQ7wB,EACf41I,EAAG72I,EAAI8xB,EAAQ9xB,EACf62I,EAAGtrE,SACHyu6B,GAAUnj2B,GAAI4+4B,cAAgB,CAC5B/thC,KAAM,KACNmzD,OAAQ/oC,EAAQupH,SAGlBr+I,KAAKwjsC,SAAS,CACZrrkC,QAASrjG,EAAQ7wB,EACjBm0H,QAAStjG,EAAQ9xB,EACjB8M,OAAQ+pI,GACP2q5B,EACL,MAAO,GAAI42I,EACTp7qC,KAAKwjsC,SAAS,CACZrrkC,QAASrjG,EAAQ7wB,EACjBm0H,QAAStjG,EAAQ9xB,EACjB27B,SAAU7J,EAAQ6J,SAClBy8oC,eAAgBA,EAChB1D,cAAe5ipC,EAAQ4ipC,eACtBlzI,QACE,GAA2B,MAAvB1vgC,EAAQoo9B,YAAqB,CACtC,GAAIl9+B,KAAKoksC,qBAAqBxF,EAAct7N,EAASr07B,EAAKna,GACxD,OAGF,IAAIuvqC,EAAY1pB,GAAoB7lpC,EAASwu8B,GACzC5iuB,EAAK2j8B,EAAUlvjC,MAAM,GACrB8xN,EAAKo91B,EAAUlvjC,MAAM,GAEf,MAANurH,GAAoB,MAANumG,GAChBjnW,KAAKwjsC,SAAS,CACZrrkC,QAASuoI,EACTtoI,QAAS6uO,EACTn3V,OAAQu0rC,EAAUxqjC,GAClBl7G,SAAU7J,EAAQ6J,SAGlBwlqC,gBAAiB,UAChB3/J,EAEP,MAAwB,MAAb1vgC,EAAQ7wB,GAA0B,MAAb6wB,EAAQ9xB,IAGtCisC,EAAIu1/B,eAAe,CACjBj4hC,KAAM,oBACNtI,EAAG6wB,EAAQ7wB,EACXjB,EAAG8xB,EAAQ9xB,IAGbhD,KAAKwjsC,SAAS,CACZrrkC,QAASrjG,EAAQ7wB,EACjBm0H,QAAStjG,EAAQ9xB,EACjB27B,SAAU7J,EAAQ6J,SAClB7uB,OAAQm/B,EAAIk9/B,QAAQ3/F,UAAU136B,EAAQ7wB,EAAG6wB,EAAQ9xB,GAAG8M,QACnD00hC,GA/EL,CAiFF,EAEAw+J,EAAYtjsC,UAAU4ksC,gBAAkB,SAAU1F,EAAct7N,EAASr07B,EAAKna,GAC5E,IAAIuuqC,EAAiBrjsC,KAAKmjsC,gBAEtBnjsC,KAAKojsC,eACPC,EAAezC,UAAU5gsC,KAAKojsC,cAAcjgsC,IAAI,cAGlDnD,KAAK0jsC,OAAS1jsC,KAAK2jsC,OAAS3jsC,KAAK8jsC,oBAAsB,KAEnDhvqC,EAAQ/W,OAAS/d,KAAKozV,KACxBpzV,KAAKyjsC,MAAM,GAAmB3uqC,EAASma,GAE3C,EAKA+zpC,EAAYtjsC,UAAU0ksC,qBAAuB,SAAUxF,EAAct7N,EAASr07B,EAAKna,GACjF,IAAIoo9B,EAAcpo9B,EAAQoo9B,YACtB730B,EAAYvwI,EAAQuwI,UAEpB6q8B,EAAmB5sI,EAAQnpoB,aAAa,eAAe+1wB,iBAE3D,GAAmB,MAAfhzH,GAAoC,MAAb730B,GAAyC,MAApB6q8B,EAAhD,CAIA,IAAIltH,EAAc1f,EAAQsf,iBAAiB1F,GAE3C,GAAK8F,GAOuC,SAFjBuhN,GAAkB,CADlCvhN,EAAYx+2B,UAC4Bqs4B,aAAaxr2B,GAAY290B,GAAcA,EAAYjx3B,kBAAoB,CAAC,GAAGgD,OAAQ/0H,KAAKojsC,eAElHjgsC,IAAI,WAU7B,OANA8rC,EAAIu1/B,eAAe,CACjBj4hC,KAAM,oBACN2w+B,YAAaA,EACb730B,UAAWA,EACX1mI,SAAU7J,EAAQ6J,YAEb,CArBP,CAsBF,EAEAqkqC,EAAYtjsC,UAAU8jsC,SAAW,SAAUrksC,EAAGqliC,GAC5C,IAAI3q5B,EAAK16I,EAAE2Q,OAGX,GAFmB9P,KAAKojsC,cAExB,CAKApjsC,KAAK0jsC,OAASvksC,EAAEg5H,QAChBn4H,KAAK2jsC,OAASxksC,EAAEi5H,QAChB,IAAIgjjC,EAAiBj8qC,EAAEi8qC,eAEvB,GAAIA,GAAkBA,EAAe/6qC,OACnCL,KAAKwksC,iBAAiBppB,EAAgBj8qC,QACjC,GAAI06I,EAAI,CAEb,IAAI4qjC,EACAC,EAFJ1ksC,KAAK8jsC,oBAAsB,KAG3Bh/J,GAAoBjr5B,GAAI,SAAU/pI,GAEhC,OAAmC,MAA/Bkt+B,GAAUlt+B,GAAQu1J,WACpBo/hC,EAAqB30rC,GACd,GAI8B,MAAnCkt+B,GAAUlt+B,GAAQ2ohC,eACpBisK,EAAmB50rC,GACZ,QAFT,CAIF,IAAG,GAEC20rC,EACFzksC,KAAK2ksC,uBAAuBxlsC,EAAGslsC,EAAoBjgK,GAC1CkgK,EACT1ksC,KAAK4ksC,0BAA0BzlsC,EAAGulsC,EAAkBlgK,GAEpDxkiC,KAAKyjsC,MAAMj/J,EAEf,MACExkiC,KAAK8jsC,oBAAsB,KAE3B9jsC,KAAKyjsC,MAAMj/J,EArCb,CAuCF,EAEAw+J,EAAYtjsC,UAAUmlsC,YAAc,SAAUjG,EAAcl9nC,GAK1D,IAAIvgB,EAAQy9oC,EAAaz7rC,IAAI,aAC7Bu+D,EAAKr+D,GAAKq+D,EAAI1hE,MACd0sB,aAAa1sB,KAAK8ksC,aAClB3jpC,EAAQ,EAAInhD,KAAK8ksC,YAAcj/qC,WAAW67C,EAAIvgB,GAASugB,GACzD,EAEAshoC,EAAYtjsC,UAAU8ksC,iBAAmB,SAAUppB,EAAgBj8qC,GACjE,IAAImk+B,EAAUtj+B,KAAK2lqC,SACf+U,EAAqB16qC,KAAKojsC,cAC1BjujC,EAAQ,CAACh2I,EAAEg5H,QAASh5H,EAAEi5H,SACtB2skC,EAAqBR,GAAkB,CAACplsC,EAAEu4qC,eAAgBgD,GAC1D3nL,EAAa/y/B,KAAKkjsC,YAClB8B,EAAe,GACfC,EAAgBliL,GAAoB,UAAW,CACjDrvX,OAAQ,GACR8vX,UAAU,IAGR0hL,EAAsB,GACtBjgL,EAAqB,IAAImB,GAC7B,EAAKg1J,GAAgB,SAAU+pB,GAC7B,EAAKA,EAAa1oB,YAAY,SAAU2oB,GACtC,IAAIp4I,EAAY1pF,EAAQnpoB,aAAair2B,EAASn4I,QAAU,OAAQm4I,EAASr4I,WACrEs4I,EAAYD,EAASjksC,MAEzB,GAAK6rjC,GAA0B,MAAbq4I,EAAlB,CAIA,IAAIC,EAAiB,GAAoCD,EAAWr4I,EAAUvi3B,KAAM64xB,EAAS8hO,EAAS9sB,kBAAmB8sB,EAASznB,eAC9H4nB,EAAoBxiL,GAAoB,UAAW,CACrDlu/B,OAAQywqC,EACR9hL,UAAWnx/B,GAAKizqC,GAChBphL,YAAY,EACZxwX,OAAQ,KAEVuxiB,EAAcvxiB,OAAO7xpB,KAAK0jsC,GAC1B,EAAKH,EAAS9sB,mBAAmB,SAAUG,GACzC,IAAI37Z,EAASwmN,EAAQsf,iBAAiB61L,EAAQv7L,aAC1C730B,EAAYozgC,EAAQ11M,gBACpByiO,EAAW1ob,EAAOqzP,cAAc9q2B,GAEpC,KAAImgiC,EAASngiC,UAAY,GAAzB,CAIAmgiC,EAASv4I,QAAUm4I,EAASn4I,QAC5Bu4I,EAASz4I,UAAYq4I,EAASr4I,UAC9By4I,EAASj+W,SAAW69W,EAAS79W,SAC7Bi+W,EAASvzZ,OAASmzZ,EAASnzZ,OAC3BuzZ,EAASH,UAAY,GAA2Br4I,EAAUvi3B,KAAM,CAC9DtpM,MAAOkksC,IAETG,EAASF,eAAiBA,EAG1BE,EAASrn/B,OAAS8m0B,EAAmBC,kBAAkB,OAAQhyB,GAAqBsyM,EAASj4kC,OAAQwl4B,GACrG,IAAI0yM,EAAsBv0L,GAA6Bp0P,EAAO7lZ,cAAc5xN,GAAW,EAAM,OACzFgs2B,EAAOo0L,EAAoBp0L,KAE/B,GAAIA,EAAM,CACR,IAAIvshB,EAAiBy/sB,GAAkB,CAACznb,GAAS49Z,GAAoBv3qC,IAAI,kBACzEoisC,EAAkB7xiB,OAAO7xpB,KAAKijf,EAAiBz7F,EAAO,CACpDy7F,eAAgBA,GACfushB,GAAQA,EACb,CAEIo0L,EAAoBr1qC,MACtB80qC,EAAoBrjsC,KAAK4jsC,EAAoBr1qC,MAG/C40qC,EAAanjsC,KAAK2jsC,EA3BlB,CA4BF,GA7CA,CA8CF,GACF,IAGAP,EAAcvxiB,OAAOp5lB,UACrB4qoC,EAAoB5qoC,UACpB,IAAIoroC,EAAevmsC,EAAEw/B,SACjBsl/B,EAAY8gL,EAAmB5hsC,IAAI,SACnCwisC,EAAkB7/K,GAAmBm/K,EAAehgL,EAAoBlyB,EAAYkxB,EAAW3gD,EAAQng+B,IAAI,UAAW4hsC,EAAmB5hsC,IAAI,cACjJwisC,GAAmBT,EAAoBr6qC,QAAQ86qC,GAC/C,IAAIC,EAA4B,aAAf7yM,EAA4B,OAAS,QAClD8yM,EAAgBX,EAAoBr4rC,KAAK+4rC,GAE7C5lsC,KAAK6ksC,YAAYE,GAAoB,WAC/B/ksC,KAAK8lsC,+BAA+B1qB,EAAgB4pB,GACtDhlsC,KAAK+lsC,gBAAgBhB,EAAoBW,EAAcvwjC,EAAM,GAAIA,EAAM,GAAIn1I,KAAKmjsC,gBAAiB6B,GAEjGhlsC,KAAKgmsC,oBAAoBjB,EAAoBc,EAAeb,EAAcnisC,KAAKwF,SAAW,GAAI8sI,EAAM,GAAIA,EAAM,GAAIuwjC,EAAc,KAAMzgL,EAE1I,GAGF,EAEA+9K,EAAYtjsC,UAAUilsC,uBAAyB,SAAUxlsC,EAAGq4iC,EAAYhT,GACtE,IAAIlhE,EAAUtj+B,KAAK2lqC,SACfxoL,EAASH,GAAUw6D,GAInBt6D,EAAcC,EAAOD,YACrB8F,EAAc1f,EAAQsf,iBAAiB1F,GAEvCp/K,EAAYq/K,EAAOr/K,WAAaklL,EAChC390B,EAAY830B,EAAO930B,UACnB2pG,EAAWmuuB,EAAOnuuB,SAClBx/P,EAAOsuzB,EAAUt5rB,QAAQwqI,GACzB+jvB,EAAa/y/B,KAAKkjsC,YAClBiB,EAAkBhlsC,EAAEglsC,gBACpBvF,EAAe2F,GAAkB,CAAC/0rC,EAAKqhgC,aAAaxr2B,GAAYy4pB,EAAWklL,IAAgBA,EAAYjx3B,kBAAoB,CAAC,GAAGgD,OAAQ/0H,KAAKojsC,cAAee,EAAkB,CAC/KxlqC,SAAUwlqC,GACR,MACA8B,EAAiBrH,EAAaz7rC,IAAI,WAEtC,GAAsB,MAAlB8isC,GAA6C,SAAnBA,EAA9B,CAIA,IAAI59pC,EAASy1xB,EAAUqyM,cAAc9q2B,EAAW2pG,GAC5Ci2wB,EAAqB,IAAImB,GAG7B/9+B,EAAO81K,OAAS8m0B,EAAmBC,kBAAkB,OAAQhyB,GAAqB7q9B,EAAOklF,OAAQwl4B,GACjG,IAAI0yM,EAAsBv0L,GAA6BpzM,EAAU7mc,cAAc5xN,GAAW,EAAO2pG,IAC7Fi1wB,EAAY26K,EAAaz7rC,IAAI,SAC7B2hf,EAAiB85sB,EAAaz7rC,IAAI,kBAClCkugC,EAAOo0L,EAAoBp0L,KAC3BF,EAAaE,EAAOyU,GAAmBhhiB,EAAiBz7F,EAAO,CACjEy7F,eAAgBA,GACfushB,GAAQA,EAAM4T,EAAoBlyB,EAAYkxB,EAAW3gD,EAAQng+B,IAAI,UAAWy7rC,EAAaz7rC,IAAI,cAAgBsisC,EAAoBr1qC,KACpI81qC,EAAc,QAAUpoY,EAAUpzzB,KAAO,IAAM26J,EAEnDrlK,KAAK6ksC,YAAYjG,GAAc,WAC7B5+rC,KAAKgmsC,oBAAoBpH,EAAcztL,EAAY9o+B,EAAQ69pC,EAAa/msC,EAAEg5H,QAASh5H,EAAEi5H,QAASj5H,EAAEw/B,SAAUx/B,EAAE2Q,OAAQm1gC,EACtH,IAIAuf,EAAe,CACbj4hC,KAAM,UACNw29B,gBAAiB19zB,EACjBA,UAAW71J,EAAK88/B,YAAYjn2B,GAC5B630B,YAAaA,EACbn/9B,KAAM/d,KAAKozV,KA3Bb,CA6BF,EAEA4v2B,EAAYtjsC,UAAUklsC,0BAA4B,SAAUzlsC,EAAG06I,EAAI2q5B,GACjE,IAAIrnD,EAASH,GAAUnj2B,GAEnBgz9B,EADgB1vH,EAAOs7C,cACI569B,QAAU,CAAC,EAEtC7C,GAAS6xiC,KAEXA,EAAa,CACXn0gC,QAFYm0gC,EAIZznjB,UAJYynjB,IAQhB,IAAIs5F,EAAsB,CAACt5F,GAEvBnrG,EAAO1hgC,KAAK2lqC,SAASxr0B,aAAagjpB,EAAOkG,kBAAmBlG,EAAOhytB,gBAEnEu2uB,GACFykM,EAAoBtksC,KAAK6//B,GAM3BykM,EAAoBtksC,KAAK,CACvBujjB,UAAWynjB,EAAWn0gC,UAExB,IAAIyrmC,EAAkBhlsC,EAAEglsC,gBACpBiC,EAAkB7B,GAAkB4B,EAAqBnmsC,KAAKojsC,cAAee,EAAkB,CACjGxlqC,SAAUwlqC,GACR,MACAkC,EAAcD,EAAgBjjsC,IAAI,WAClC+isC,EAAcrjsC,KAAKwF,SAAW,GAE9B48gC,EAAqB,IAAImB,GAI7BpmhC,KAAK6ksC,YAAYuB,GAAiB,WAGhC,IAAIx0X,EAAkBrhzB,EAAM61qC,EAAgBjjsC,IAAI,oBAAsB,CAAC,GAEvEnD,KAAKgmsC,oBAAoBI,EAAiBC,EAAaz0X,EAAiBs0X,EAAa/msC,EAAEg5H,QAASh5H,EAAEi5H,QAASj5H,EAAEw/B,SAAUk7G,EAAIor4B,EAC7H,IAGAuf,EAAe,CACbj4hC,KAAM,UACNwR,KAAM/d,KAAKozV,KAEf,EAEA4v2B,EAAYtjsC,UAAUsmsC,oBAAsB,SAE5CpH,EAAcyH,EAAah+pC,EAAQ69pC,EAAajisC,EAAGjB,EAAG0isC,EAAc7rjC,EAAIor4B,GAItE,GAFAjlhC,KAAK+jsC,QAAU,GAEVnF,EAAaz7rC,IAAI,gBAAmBy7rC,EAAaz7rC,IAAI,QAA1D,CAIA,IAAIkgsC,EAAiBrjsC,KAAKmjsC,gBAC1BE,EAAed,aAAa3D,EAAaz7rC,IAAI,cAC7C,IAAIiijB,EAAYw5oB,EAAaz7rC,IAAI,aACjCuisC,EAAeA,GAAgB9G,EAAaz7rC,IAAI,YAChD,IAAI62I,EAAOqsjC,EAIPtF,EAFY/gsC,KAAKsmsC,iBAAiB,CAACrisC,EAAGjB,GAAIqlC,EAAQu2pC,EAAaz7rC,IAAI,WAAYy7rC,EAAaz7rC,IAAI,gBAErEoqH,MAE/B,GAAI63b,EACF,GAAIpqf,GAASoqf,GAAY,CACvB,IAAI0sc,EAAS8sM,EAAat7N,QAAQng+B,IAAI,UAClCojsC,EAAU50rC,GAAQ02B,GAAUA,EAAO,GAAKA,EAE5C2xG,EAAOora,EADUmhpB,GAAWA,EAAQh/W,UAAYg/W,EAAQh/W,SAAS/m1B,QAAQ,SAAW,IAIlFw5I,EAAO,GAAWusjC,EAAQlB,UAAWrrjC,EAAM832B,IAG7C932B,EAAOu42B,GAAUv42B,EAAM3xG,GAAQ,EACjC,MAAO,GAAI28N,GAAWogT,GAAY,CAChC,IAAIl8hB,EAAW7lB,IAAK,SAAUmjsC,EAAUxsjC,GAClCwsjC,IAAaxmsC,KAAK+jsC,UACpBV,EAAelwyB,WAAWn5Q,EAAMir4B,EAAoB25K,EAAcmC,EAAgB2E,GAElF1lsC,KAAK+lsC,gBAAgBnH,EAAc8G,EAAczhsC,EAAGjB,EAAGqgsC,EAAgBh7pC,EAAQwxG,GAEnF,GAAG75I,MACHA,KAAK+jsC,QAAUmC,EACflsjC,EAAOora,EAAU/8gB,EAAQ69pC,EAAah9qC,EACxC,MACE8wH,EAAOora,EAIXi+oB,EAAelwyB,WAAWn5Q,EAAMir4B,EAAoB25K,EAAcmC,EAAgB2E,GAClFrC,EAAepg3B,KAAK272B,EAAcmC,GAElC/gsC,KAAK+lsC,gBAAgBnH,EAAc8G,EAAczhsC,EAAGjB,EAAGqgsC,EAAgBh7pC,EAAQwxG,EA1C/E,CA2CF,EAEAmpjC,EAAYtjsC,UAAU4msC,iBAAmB,SAAUnxjC,EAAOsxjC,EAAmB/nqC,EAAS45U,GACpF,MAAgB,SAAZ55U,GAAsB/sB,GAAQ80rC,GACzB,CACLl5kC,MAAO+qP,IAAqC,SAArBt4W,KAAKkjsC,YAAyB,OAAS,SAI7DvxrC,GAAQ80rC,QAAb,EACS,CACLl5kC,MAAO+qP,GAAemu1B,EAAkBl5kC,OAASk5kC,EAAkBnu1B,YAGzE,EAEA0q1B,EAAYtjsC,UAAUqmsC,gBAAkB,SAAUnH,EAAc8G,EAAczhsC,EAC9EjB,EACA01F,EAASrwD,EAAQwxG,GACf,IAAI+x1B,EAAY5r+B,KAAK8kgC,KAAK35xB,WAEtB0gwB,EAAa7r+B,KAAK8kgC,KAAK9p1B,YAE3B0qhC,EAAeA,GAAgB9G,EAAaz7rC,IAAI,YAChD,IAAIujsC,EAAchumC,EAAQ4hJ,UACtBiqiB,EAAQq6a,EAAaz7rC,IAAI,SACzBm40B,EAASsjX,EAAaz7rC,IAAI,iBAC1BuwF,EAAOmmD,GAAMA,EAAGsqG,kBAAkB5zN,QAWtC,GAVAspH,GAAMnmD,EAAKo42B,eAAejyzB,EAAGjX,WAEzBoiI,GAAW0g8B,KAEbA,EAAeA,EAAa,CAACzhsC,EAAGjB,GAAIqlC,EAAQqwD,EAAQmhD,GAAInmD,EAAM,CAC5DkjhC,SAAU,CAAChrI,EAAWC,GACtB66N,YAAaA,EAAY3ksC,WAIzB4P,GAAQ+zrC,GACVzhsC,EAAI,GAAayhsC,EAAa,GAAI95N,GAClC5o+B,EAAI,GAAa0isC,EAAa,GAAI75N,QAC7B,GAAI,GAAS65N,GAAe,CACjC,IAAIiB,EAAoBjB,EACxBiB,EAAkB5nqC,MAAQ2nqC,EAAY,GACtCC,EAAkB3nqC,OAAS0nqC,EAAY,GACvC,IAAIxzO,EAAa6gC,GAAc4yM,EAAmB,CAChD5nqC,MAAO6s8B,EACP5s8B,OAAQ6s8B,IAEV5n+B,EAAIiv9B,EAAWjv9B,EACfjB,EAAIkw9B,EAAWlw9B,EACfuhxB,EAAQ,KAGR+2D,EAAS,IACX,MACK,GAAItgxB,GAAS0qoC,IAAiB7rjC,EAAI,CACnC,IAAIx3B,EA6KZ,SAA6B1jF,EAAU+0D,EAAMgzmC,EAAalvN,GACxD,IAAIovN,EAAWF,EAAY,GACvBG,EAAYH,EAAY,GACxBvkpC,EAASt/C,KAAKuK,KAAKvK,KAAKu/rC,MAAQ5qN,GAAe,EAC/Cvz+B,EAAI,EACJjB,EAAI,EACJ8jsC,EAAYpzmC,EAAK30D,MACjBgoqC,EAAarzmC,EAAK10D,OAEtB,OAAQL,GACN,IAAK,SACH16B,EAAIyvF,EAAKzvF,EAAI6isC,EAAY,EAAIF,EAAW,EACxC5jsC,EAAI0wF,EAAK1wF,EAAI+jsC,EAAa,EAAIF,EAAY,EAC1C,MAEF,IAAK,MACH5isC,EAAIyvF,EAAKzvF,EAAI6isC,EAAY,EAAIF,EAAW,EACxC5jsC,EAAI0wF,EAAK1wF,EAAI6jsC,EAAY1kpC,EACzB,MAEF,IAAK,SACHl+C,EAAIyvF,EAAKzvF,EAAI6isC,EAAY,EAAIF,EAAW,EACxC5jsC,EAAI0wF,EAAK1wF,EAAI+jsC,EAAa5kpC,EAC1B,MAEF,IAAK,OACHl+C,EAAIyvF,EAAKzvF,EAAI2isC,EAAWzkpC,EACxBn/C,EAAI0wF,EAAK1wF,EAAI+jsC,EAAa,EAAIF,EAAY,EAC1C,MAEF,IAAK,QACH5isC,EAAIyvF,EAAKzvF,EAAI6isC,EAAY3kpC,EACzBn/C,EAAI0wF,EAAK1wF,EAAI+jsC,EAAa,EAAIF,EAAY,EAG9C,MAAO,CAAC5isC,EAAGjB,EACb,CAjNkBgksC,CAAoBtB,EAAchymC,EAAMgzmC,EAAa9H,EAAaz7rC,IAAI,gBAChFc,EAAIo+G,EAAI,GACRr/G,EAAIq/G,EAAI,EACV,MACMA,EAkIZ,SAA8Bp+G,EAAGjB,EAAG01F,EAASkz4B,EAAWC,EAAYo7N,EAAMC,GACxE,IAAItirC,EAAO8zE,EAAQ4hJ,UACfv7M,EAAQna,EAAK,GACboa,EAASpa,EAAK,GAsBlB,OApBY,MAARqirC,IAKEhjsC,EAAI86B,EAAQkoqC,EAAO,EAAIr7N,EACzB3n+B,GAAK86B,EAAQkoqC,EAEbhjsC,GAAKgjsC,GAIG,MAARC,IACElksC,EAAIg8B,EAASkoqC,EAAOr7N,EACtB7o+B,GAAKg8B,EAASkoqC,EAEdlksC,GAAKkksC,GAIF,CAACjjsC,EAAGjB,EACb,CA5JkBmksC,CAAqBljsC,EAAGjB,EAAG01F,EAASkz4B,EAAWC,EAAYtnN,EAAQ,KAAO,GAAI+2D,EAAS,KAAO,IACxGr30B,EAAIo+G,EAAI,GACRr/G,EAAIq/G,EAAI,GAGZkiqB,IAAUtgxB,GAAKmjsC,GAAc7ib,GAASmib,EAAY,GAAK,EAAc,UAAVnib,EAAoBmib,EAAY,GAAK,GAChGprX,IAAWt40B,GAAKoksC,GAAc9rX,GAAUorX,EAAY,GAAK,EAAe,WAAXprX,EAAsBorX,EAAY,GAAK,GAEhG/H,GAAqBC,KACnBv8kC,EAqJV,SAAgCp+G,EAAGjB,EAAG01F,EAASkz4B,EAAWC,GACxD,IAAIjn9B,EAAO8zE,EAAQ4hJ,UACfv7M,EAAQna,EAAK,GACboa,EAASpa,EAAK,GAKlB,OAJA3gB,EAAIpB,KAAKgL,IAAI5J,EAAI86B,EAAO6s8B,GAAa7s8B,EACrC/7B,EAAIH,KAAKgL,IAAI7K,EAAIg8B,EAAQ6s8B,GAAc7s8B,EAGhC,CAFP/6B,EAAIpB,KAAK8K,IAAI1J,EAAG,GAChBjB,EAAIH,KAAK8K,IAAI3K,EAAG,GAElB,CA9JgBqksC,CAAuBpjsC,EAAGjB,EAAG01F,EAASkz4B,EAAWC,GAC3D5n+B,EAAIo+G,EAAI,GACRr/G,EAAIq/G,EAAI,IAGV3pB,EAAQquqB,OAAO9iwB,EAAGjB,EACpB,EAIAggsC,EAAYtjsC,UAAUomsC,+BAAiC,SAAU1qB,EAAgB4pB,GAC/E,IAAIsC,EAAetnsC,KAAK8jsC,oBACpByD,EAAmBvnsC,KAAKwnsC,cACxBC,IAAsBH,GAAgBA,EAAajnsC,SAAW+6qC,EAAe/6qC,OA6BjF,OA5BAonsC,GAAqB,EAAKH,GAAc,SAAUI,EAAkBC,GAClE,IAAIC,EAAiBF,EAAiBjrB,YAAc,GAEhDorB,GADmBzsB,EAAeusB,IAAkB,CAAC,GACnBlrB,YAAc,IACpDgrB,EAAoBA,GAAqBG,EAAevnsC,SAAWwnsC,EAAexnsC,SAC7D,EAAKunsC,GAAgB,SAAU5mB,EAAU8mB,GAC5D,IAAIl2iB,EAAWi2iB,EAAeC,IAAc,CAAC,EACzCC,EAAc/mB,EAAS1I,mBAAqB,GAC5Cn8J,EAAavqX,EAAS0mhB,mBAAqB,IAC/CmvB,EAAoBA,GAAqBzmB,EAAS7/qC,QAAUywpB,EAASzwpB,OAAS6/qC,EAASz5V,WAAa31L,EAAS21L,UAAYy5V,EAAS/uY,SAAWrgJ,EAASqgJ,QAAU81Z,EAAY1nsC,SAAW87gC,EAAW97gC,SAC7K,EAAK0nsC,GAAa,SAAUC,EAAa5jsC,GAC5D,IAAI6jsC,EAAa9rL,EAAW/3gC,GAC5BqjsC,EAAoBA,GAAqBO,EAAY9qN,cAAgB+qN,EAAW/qN,aAAe8qN,EAAY3iiC,YAAc4iiC,EAAW5iiC,SACtI,IAEAkiiC,GAAoB,EAAKvmB,EAAS1I,mBAAmB,SAAUG,GAC7D,IAAIxgY,EAAYwgY,EAAQv7L,YACpBsoN,EAAWR,EAAa/sZ,GACxBiwZ,EAAeX,EAAiBtvZ,GAEhCutZ,GAAY0C,GAAgBA,EAAa14rC,OAASg2rC,EAASh2rC,OAC7Di4rC,GAAoB,EAExB,GACF,GACF,IACAznsC,KAAK8jsC,oBAAsB1oB,EAC3Bp7qC,KAAKwnsC,cAAgBxC,IACZyC,CACX,EAEAzE,EAAYtjsC,UAAU+jsC,MAAQ,SAAUj/J,GAKtCxkiC,KAAK8jsC,oBAAsB,KAC3Bt/J,EAAe,CACbj4hC,KAAM,UACNwR,KAAM/d,KAAKozV,KAEf,EAEA4v2B,EAAYtjsC,UAAU2l8B,QAAU,SAAUi+B,EAASr07B,IAC7C,EAAIo6C,MAASp6C,EAAI8jgC,WAIrB/thC,GAAMhlB,KAAM,mBAEZA,KAAKmjsC,gBAAgB99P,UAErB,GAA0B,cAAep25B,GAC3C,EAEA+zpC,EAAYz2rC,KAAO,UACZy2rC,CACT,CArrBA,CAqrBE,IAMF,SAASuB,GAAkB4D,EAAcztB,EAAoB0tB,GAE3D,IACIC,EADA/kO,EAAUo3M,EAAmBp3M,QAG7B8kO,GACFC,EAAc,IAAI,GAAMD,EAAsB9kO,EAASA,GACvD+kO,EAAc,IAAI,GAAM3tB,EAAmB78mC,OAAQwqoC,EAAa/kO,IAEhE+kO,EAAc3tB,EAGhB,IAAK,IAAI95qC,EAAIunsC,EAAa9nsC,OAAS,EAAGO,GAAK,EAAGA,IAAK,CACjD,IAAIismC,EAAas7F,EAAavnsC,GAE1BismC,IACEA,aAAsB,KACxBA,EAAaA,EAAW1pmC,IAAI,WAAW,IAQrC63D,GAAS6xiC,KACXA,EAAa,CACXznjB,UAAWynjB,IAIXA,IACFw7F,EAAc,IAAI,GAAMx7F,EAAYw7F,EAAa/kO,IAGvD,CAEA,OAAO+kO,CACT,CAEA,SAAS,GAAmBvzqC,EAASma,GACnC,OAAOna,EAAQ0vgC,gBAAkBnhiC,GAAK4rC,EAAIu1/B,eAAgBv1/B,EAC5D,CA+EA,SAASm4pC,GAAc7ib,GACrB,MAAiB,WAAVA,GAAgC,WAAVA,CAC/B,CAqDA,YC54BA,IAAI+jb,GAAuB,CAAC,OAAQ,UAAW,OAAQ,SACxC,SAASC,GAAkB1qoC,EAAQwoE,GAChD,IAAImikC,EAAkB/nO,GAAiB5i6B,EAASA,EAAO6v7B,MAAQ,IAE/D,GAAK86M,EAAgBnosC,OAArB,CAIA,IAAIoosC,EAA8B,GAClC,EAAYD,GAAiB,SAAUE,GACrC,IAAIC,EAAMD,EAAS/osC,eAAe,WAAa+osC,EAASj7M,QAAU,GAE9Dk7M,aAAelpsC,QACjBgpsC,EAA8BA,EAA4BzmsC,OAAO2msC,GAErE,IACA,IAAIl7M,EAAU5v7B,GAAUA,EAAO4v7B,QAE3B,GAAeA,KACjBA,EAAUA,EAAQ,IAGfA,IACHA,EAAU,CACRt76B,QAAS,CAAC,GAEZtU,EAAO4v7B,QAAU,CAACA,IAGpB,IAAIm7M,EAAiBn7M,EAAQt76B,UAAYs76B,EAAQt76B,QAAU,CAAC,GACxD02nC,EAAeD,EAAel7M,QAAUk7M,EAAel7M,MAAQ,CAAC,GAChEo7M,EAAaD,EAAat8rC,OAASs8rC,EAAat8rC,KAAO,IAC3Du8rC,EAAWjnsC,KAAKtB,MAAMuosC,EAAYL,GAQpC,SAAyBhq+B,GACvB,IAAIpvM,EAAM,CAAC,EACX,EAAYovM,GAAK,SAAU/gD,GACzBruJ,EAAIquJ,GAAO,CACb,IACA+gD,EAAIp+N,OAAS,EACb,EAAYgvB,GAAK,SAAU8oB,EAAMulI,GAC/B+gD,EAAI58N,KAAK67K,EACX,GACF,CAhBEqrhC,CAAgBD,GAEZzikC,IAAUyikC,EAAWzosC,QACvByosC,EAAWjnsC,KAAKtB,MAAMuosC,EAAYR,GA9BpC,CAgCF,CCjCA,IAAI,GAAO,EAEX,SAASU,GAAQ97+B,GACf,GAAIA,EACF,IAAK,IAAIowiB,KAAUpwiB,EACjB,GAAIA,EAAIvtN,eAAe29vB,GACrB,OAAO,CAIf,CAEO,SAAS2rc,GAAqBproC,EAAQqroC,EAAWC,GACtD,IAAIC,EAAiB,CAAC,EAuBtB,OAtBA,GAAKF,GAAW,SAAUv9rC,GACxB,IAwBI09rC,EAxBAC,EAAWF,EAAez9rC,KAwB1B09rC,EAAU,WAAa,GAInB3psC,UAAU6psC,SAAWF,EAAQ3psC,UAC3B,IAAI2psC,GA5Bd,GAAKxroC,EAAOlyD,IAAQ,SAAU69rC,EAAY9qK,GACxC,GAAK,GAAc0iG,YAAY1iG,GAA/B,CAIA,IAAI+qK,EAAgB,CAClBl9rC,KAAMmyhC,EACN397B,OAAQyomC,GAEVL,GAA0BA,EAAuBM,EAAe99rC,GAChE29rC,EAAS5qK,GAAc,IAAI,GAAc+qK,GAGtB,YAAf/qK,KACF+qK,EAAgB,EAAaA,IACfl9rC,KAAO,aACrB+8rC,EAASC,SAASG,kBAAoB,IAAI,GAAcD,GAb1D,CAeF,GACF,IACOL,CAWT,CACO,SAASO,GAAoB5pE,EAAYn+J,EAAWtu9B,GAKzD,IAAIvH,EACJ,EAAYuH,GAAM,SAAUuR,GACtB+88B,EAAUji+B,eAAeklB,IAAQmkrC,GAAQpnO,EAAU/88B,MACrD9Y,GAAM,EAEV,IACAA,GAAO,EAAYuH,GAAM,SAAUuR,GAC7B+88B,EAAUji+B,eAAeklB,IAAQmkrC,GAAQpnO,EAAU/88B,IACrDk7mC,EAAWl7mC,GAAO,EAAa+88B,EAAU/88B,WAElCk7mC,EAAWl7mC,EAEtB,GACF,CCzDA,IAAI0rE,GAAW,CACbo95B,MAAOi8M,GAAiB,GACxBh8M,MAAOg8M,GAAiB,GACxBl2mC,KAAM,CACJyhD,MAAO,SAAU+r9B,EAAYje,EAAW5h2B,GACtC,OAAO6/2B,GAAc7/2B,EAAK00yB,aAAaniF,QAAQstJ,EAAW,GAAIA,EAAW,GAC3E,EACAxtgC,KAAM,SAAUwtgC,EAAYje,EAAW5h2B,GACrC,OAAO6/2B,GAAc7/2B,EAAK00yB,aAAapu2B,UAAUu56B,EACnD,GAEFj8jC,QAAS,CACPkwG,MAAO,SAAU+r9B,EAAYje,EAAW5h2B,GACtC,OAAO6/2B,GAAc7/2B,EAAK00yB,aAAaniF,QAAQstJ,EAAW,GAAIA,EAAW,KAAO,GAAuB7/2B,EAAKt/G,MAAOm/9B,EAAW,GAAIA,EAAW,GAC/I,EACAxtgC,KAAM,SAAUwtgC,EAAYje,EAAW5h2B,GACrC,IAAI/1M,EAAS+1M,EAAKt/G,MAElB,IAAKm/9B,GAAc51jC,EAAOjrC,QAAU,EAClC,OAAO,EAGT,IAAI4D,EAAIi9lC,EAAWj9lC,EACfjB,EAAIk+lC,EAAWl+lC,EACf+7B,EAAQmikC,EAAWnikC,MACnBC,EAASkikC,EAAWlikC,OACpBl8B,EAAIwoC,EAAO,GAEf,SAAI,GAAuBA,EAAQrnC,EAAGjB,IAAM,GAAuBsoC,EAAQrnC,EAAI86B,EAAO/7B,IAAM,GAAuBsoC,EAAQrnC,EAAGjB,EAAIg8B,IAAW,GAAuBsM,EAAQrnC,EAAI86B,EAAO/7B,EAAIg8B,IAAW,GAAa9+B,OAAOghmC,GAAYttJ,QAAQ9w8B,EAAE,GAAIA,EAAE,KAAOu0hC,GAAqBpzhC,EAAGjB,EAAGiB,EAAI86B,EAAO/7B,EAAGsoC,IAAW+r/B,GAAqBpzhC,EAAGjB,EAAGiB,EAAGjB,EAAIg8B,EAAQsM,IAAW+r/B,GAAqBpzhC,EAAI86B,EAAO/7B,EAAGiB,EAAI86B,EAAO/7B,EAAIg8B,EAAQsM,IAAW+r/B,GAAqBpzhC,EAAGjB,EAAIg8B,EAAQ/6B,EAAI86B,EAAO/7B,EAAIg8B,EAAQsM,UAAte,CAGF,IAIJ,SAASs+pC,GAAiBnhD,GACxB,IAAIn4/B,EAAK,CAAC,IAAK,KACX624B,EAAK,CAAC,QAAS,UACnB,MAAO,CACLhy5B,MAAO,SAAU+r9B,EAAYje,EAAW5h2B,GACtC,GAAI6/2B,EAAY,CACd,IAAIn/9B,EAAQs/G,EAAKt/G,MAEjB,OAAO8nkC,GADC3oG,EAAWunD,GACG1mhC,EACxB,CACF,EACAruC,KAAM,SAAUwtgC,EAAYje,EAAW5h2B,GACrC,GAAI6/2B,EAAY,CACd,IAAIn/9B,EAAQs/G,EAAKt/G,MACb+nkC,EAAc,CAAC5oG,EAAW5w8B,EAAGm4/B,IAAWvnD,EAAW5w8B,EAAGm4/B,IAAYvnD,EAAW/5D,EAAGshH,KAEpF,OADAqhD,EAAY,GAAKA,EAAY,IAAMA,EAAYxvoC,UACxCuvoC,GAAYC,EAAY,GAAI/nkC,IAAU8nkC,GAAYC,EAAY,GAAI/nkC,IAAU8nkC,GAAY9nkC,EAAM,GAAI+nkC,IAAgBD,GAAY9nkC,EAAM,GAAI+nkC,EACjJ,CACF,EAEJ,CAEA,SAASD,GAAY/msC,EAAGi/H,GACtB,OAAOA,EAAM,IAAMj/H,GAAKA,GAAKi/H,EAAM,EACrC,CCrEA,IAAIgokC,GAAa,CAAC,UAAW,cACzBC,GAAkB,kBAClBC,GAAgB,yBAEb,SAASC,GAAa5mO,GAC3BA,EAAQwe,cAAc,CACpBhe,SAAU,UACT,SAAUqmO,IACcA,EAAWC,mBAAqB,IAAI,GAAmBD,EAAWtsoC,OAAQyl6B,IAChFk3N,eAAe2P,EAAWpm2B,MAAOu/nB,EACtD,GACF,CAKe,SAAS+mO,GAAY/mO,EAASr07B,EAAKna,GAChD,IACIulgC,EACAiwK,EAFAC,EAAgB,GAGpBjnO,EAAQwe,cAAc,CACpBhe,SAAU,UACT,SAAUqmO,GACXr1qC,GAA4B,qBAAjBA,EAAQvoB,MAA+B49rC,EAAWK,eAA+B,UAAhB11qC,EAAQjQ,IAAkBiQ,EAAQ8tnC,YAAc,CAC1HG,WAAW,GAEf,IACAmnD,GAAa5mO,GACbA,EAAQwe,cAAc,CACpBhe,SAAU,UACT,SAAUqmO,EAAYM,GACvB,IAAIC,EAAoB,CACtBC,QAASR,EAAW5+qC,GACpBk/qC,WAAYA,EACZG,UAAWT,EAAWz/rC,KACtBq5V,MAAO,EAAaom2B,EAAWpm2B,OAC/B13K,SAAU,IAIZk+gC,EAAc1osC,KAAK6osC,GACnB,IAAI9nD,EAAcunD,EAAWtsoC,OACzBgtoC,EAAYjoD,EAAYioD,UACxBC,EAAkB,GAClBC,EAA2B,GAC3BC,EAAoB,GACpBC,GAAiB,EAEhBR,IAEHpwK,EAAeuoH,EAAYvoH,aAC3BiwK,EAAgB1nD,EAAY0nD,eAI9B,IAAIvm2B,EAAQ,EAAWom2B,EAAWpm2B,OAAO,SAAU1iH,GACjD,IAAI9kL,EAAU2uoC,GAAqB7p9B,EAAK0h6B,WACpCooD,EAAiB,EAAgB,CACnCp1K,aAAcx59B,EAAUA,EAAQ8kL,QAAQ,GACvCA,GAEH,OADA8p9B,EAAeloH,UD/Dd,SAA0C5h2B,GAC/C,IAAI0h6B,EAAY1h6B,EAAK0h6B,UAEjB9/D,EAAY,CACd9t8B,MAAO,SAAU+r9B,GACf,OAAO3wgC,GAASwyjC,GAAW5tgC,MAAM+r9B,EAAYje,EAAW5h2B,EAC1D,EACA3tJ,KAAM,SAAUwtgC,GACd,OAAO3wgC,GAASwyjC,GAAWrvjC,KAAKwtgC,EAAYje,EAAW5h2B,EACzD,GAEF,OAAO4h2B,CACT,CCmDiCmoH,CAAiCD,GACrDA,CACT,IACI/B,EAAiB,GAAoCe,EAAWtsoC,OAAQksoC,IAAY,SAAUN,GAChGA,EAAc3pE,cAAgB,OAChC,IAKA,SAASurE,EAAWnuN,GAClB,MAAqB,QAAd2tN,KAAyBC,EAAgB5tN,EAClD,CAIA,SAASouN,EAAQC,GACf,QAASA,EAAclrsC,MACzB,CAZA,GAAewqsC,IAAc,EAAYA,GAAW,SAAU3tN,GAC5D4tN,EAAgB5tN,GAAe,CACjC,IA0BA5Z,EAAQyf,YAAW,SAAUC,EAAa9F,GACxC,IAAIquN,EAAgBP,EAAkB9tN,GAAe,GAC7B,aAAxB8F,EAAYjc,QAGd,SAAuBic,EAAa9F,GAClC,IAAIgG,EAAWF,EAAYjx3B,iBAC3Bk5kC,EAAiBA,GAAkB/nN,EAAS69J,iBAC5CsqD,EAAWnuN,IAAgBgG,EAASo5J,gBAAgBt5J,EAAYx+2B,WAAW,SAAU63gC,EAAah3+B,GAChF,WAAhBg3+B,IAA6B0uD,EAAyB1liC,GAAa,EACrE,GACF,CATuCmmiC,CAAcxoN,EAAa9F,GAWlE,SAAqB8F,EAAa9F,EAAaquN,GAC7C,GAAKvoN,EAAY2yG,gBAiGvB,SAA+Bw0G,EAAYjtN,GACzC,IAAIomB,EAAgB6mM,EAAWtsoC,OAAOq/6B,YACtC,OAAwB,MAAjBomB,GAA2C,QAAlBA,IAA4B,GAAeA,GAAiB,EAAeA,EAAepmB,GAAe,EAAIA,IAAgBomB,EAC/J,CApGwCmoM,CAAsBtB,EAAYjtN,KAIpE,EAAYn5oB,GAAO,SAAU1iH,GACvB8o9B,EAAWC,mBAAmBlP,cAAc758B,EAAM2hwB,EAAa1f,IACjEioO,EAAc1psC,KAAKw/O,GAGrB4p9B,EAAiBA,GAAkBK,EAAQC,EAC7C,IAEIF,EAAWnuN,IAAgBouN,EAAQC,IAAgB,CACrD,IAAIn0Y,EAAS4rL,EAAYx+2B,UACzB4yrB,EAAOp1C,MAAK,SAAU38mB,GAChBqmiC,GAAa1oN,EAAauoN,EAAen0Y,EAAQ/xpB,KACnD0liC,EAAyB1liC,GAAa,EAE1C,GACF,CACF,CAhCiFsmiC,CAAY3oN,EAAa9F,EAAaquN,EACvH,IAkCAjoO,EAAQyf,YAAW,SAAUC,EAAa9F,GACxC,IAAI0uN,EAAsB,CACxB7ub,SAAUimO,EAAYz39B,GACtB2x9B,YAAaA,EACboe,WAAYtY,EAAYt4+B,KACxB26J,UAAW,IAIbqliC,EAAkBr+gC,SAASxqL,KAAK+psC,GAChC,IAAIL,EAAgBP,EAAkB9tN,GAClC1t+B,EAAOwz+B,EAAYx+2B,UACnBqnkC,EAAgBR,EAAWnuN,GAAe,SAAU730B,GACtD,OAAO0liC,EAAyB1liC,IAAcumiC,EAAoBvmiC,UAAUxjK,KAAK2N,EAAK88/B,YAAYjn2B,IAAa,WAAa,YAC9H,EAAI,SAAUA,GACZ,OAAOqmiC,GAAa1oN,EAAauoN,EAAe/7rC,EAAM61J,IAAcumiC,EAAoBvmiC,UAAUxjK,KAAK2N,EAAK88/B,YAAYjn2B,IAAa,WAAa,YACpJ,GAECgmiC,EAAWnuN,GAAe+tN,EAAiBK,EAAQC,KFvEnD,SAAqBrC,EAAWE,EAAgB55rC,EAAMq8rC,EAAez9qC,EAAOklJ,GACjF,IAKIjO,EALAymiC,EAAiB,CAAC,EAOtB,SAAShwK,EAAUj3gC,GACjB,OAAOo/gC,GAAsBz0hC,EAAM61J,EAAWxgJ,EAChD,CAEA,SAASw2gC,EAAUx2gC,EAAK1jB,GACtBgjiC,GAAsB30hC,EAAM61J,EAAWxgJ,EAAK1jB,EAC9C,CAQA,SAAS4qsC,EAASC,EAAchvrC,GAC9BqoJ,EAAgC2miC,EAEhC,IAAIC,EAAcz8rC,EAAKqggC,eAAexq2B,GAGtC,IAAI4miC,IAAyC,IAA1BA,EAAY1gM,UAQ/B,IAJA,IAAI2gM,EAAaL,EAAcjssC,KEuC0C,UFvC9BossC,GACvC1C,EAAWF,EAAe8C,GAC1BvqE,EAAcmqE,EAAeI,GAExBtrsC,EAAI,EAAGi+H,EAAM8igC,EAAYthoC,OAAQO,EAAIi+H,EAAKj+H,IAAK,CACtD,IAAI2L,EAAOo1nC,EAAY/goC,GACvB0osC,EAAS/8rC,IAAS+8rC,EAAS/8rC,GAAM4znC,YAAY6rE,EAAclwK,EAAWT,EACxE,CACF,CAtCA,EAAY6tK,GAAW,SAAUv9rC,GAC/B,IAAIg2nC,EAAc,GAAcD,mBAAmB0nE,EAAez9rC,IAClEmgsC,EAAengsC,GAASg2nC,CAC1B,IAYEnynC,EAAKwywB,KAAK+pb,EAwBd,CE8B6E,CAA2BhC,GAAYX,EAAgB55rC,EAAMq8rC,EACtI,GACF,IAKF,SAAwB58pC,EAAKor/B,EAAciwK,EAAeC,EAAez1qC,GASvE,GAAKA,EAAL,CAIA,IAAIvc,EAAK02B,EAAIk9/B,QAEb,IAAI5zhC,EAAG0xrC,IAIF1xrC,EAAGyxrC,MACNzxrC,EAAGyxrC,IAAmBmC,IAGf,GAA4B5zrC,EAAIyxrC,GAAiBM,EAAejwK,EACzEnphC,CAAG+9B,EAAKs7pC,EAbR,CAcF,CA7BE/lK,CAAev1/B,EAAKor/B,EAAciwK,EAAeC,EAAez1qC,EAClE,CA8BA,SAASq3qC,GAAWl9pC,EAAKs7pC,GACvB,IAAKt7pC,EAAIohgC,aAAc,CACrB,IAAI93hC,EAAK02B,EAAIk9/B,QACb5zhC,EAAG0xrC,KAAiB,EACpBh7pC,EAAIu1/B,eAAe,CACjBj4hC,KAAM,cACNqlE,MAAO24nC,IAEThyrC,EAAG0xrC,KAAiB,CACtB,CACF,CAEA,SAASyB,GAAa1oN,EAAauoN,EAAe/7rC,EAAM61J,GACtD,IAAK,IAAIzkK,EAAI,EAAGi+H,EAAM0skC,EAAclrsC,OAAQO,EAAIi+H,EAAKj+H,IAAK,CACxD,IAAIygP,EAAOkq9B,EAAc3qsC,GAEzB,GAAIoi/B,EAAY2yG,cAActw7B,EAAW71J,EAAM6xO,EAAK4h2B,UAAW5h2B,GAC7D,OAAO,CAEX,CACF,CAOA,IAAI6p9B,GAAuB,CACzBx3mC,KAAM,SAAU2tJ,GACd,OAAO+q9B,GAA0B/q9B,EAAKt/G,MACxC,EACA98F,QAAS,SAAUo8M,GAIjB,IAHA,IAAI2oC,EACAjoJ,EAAQs/G,EAAKt/G,MAERnhI,EAAI,EAAGi+H,EAAMkD,EAAM1hI,OAAQO,EAAIi+H,EAAKj+H,IAAK,CAChDopR,EAASA,GAAU,CAAC,CAACjqN,KAAU,KAAY,CAACA,KAAU,MACtD,IAAIi+iB,EAAKj8e,EAAMnhI,GACfo9mB,EAAG,GAAKh0V,EAAO,GAAG,KAAOA,EAAO,GAAG,GAAKg0V,EAAG,IAC3CA,EAAG,GAAKh0V,EAAO,GAAG,KAAOA,EAAO,GAAG,GAAKg0V,EAAG,IAC3CA,EAAG,GAAKh0V,EAAO,GAAG,KAAOA,EAAO,GAAG,GAAKg0V,EAAG,IAC3CA,EAAG,GAAKh0V,EAAO,GAAG,KAAOA,EAAO,GAAG,GAAKg0V,EAAG,GAC7C,CAEA,OAAOh0V,GAAUoi7B,GAA0Bpi7B,EAC7C,GAGF,SAASoi7B,GAA0Bpi7B,GACjC,OAAO,IAAI,GAAaA,EAAO,GAAG,GAAIA,EAAO,GAAG,GAAIA,EAAO,GAAG,GAAKA,EAAO,GAAG,GAAIA,EAAO,GAAG,GAAKA,EAAO,GAAG,GAC5G,CC3JA,SA5EA,SAAU0+F,GAGR,SAAS2j1B,IACP,IAAI3/oC,EAAmB,OAAXg8T,GAAmBA,EAAOnoX,MAAMP,KAAMI,YAAcJ,KAGhE,OADA0sD,EAAMngD,KAAO8/rC,EAAU9/rC,KAChBmgD,CACT,CAiEA,OAxEAkgX,EAAUy/xB,EAAW3j1B,GASrB2j1B,EAAU3ssC,UAAUgxD,KAAO,SAAU4y6B,EAASr07B,GAC5CjvC,KAAKsj+B,QAAUA,EACftj+B,KAAKivC,IAAMA,EACXjvC,KAAK+0H,OACJ/0H,KAAKsppC,iBAAmB,IAAI,GAAgBr6mC,EAAIk9/B,UAAUv7hC,GAAG,QAAS,GAAY5Q,KAAKuppC,SAAUvppC,OAAOqv9B,OAC3G,EAEAg9O,EAAU3ssC,UAAU4uH,OAAS,SAAU67kC,EAAY7mO,EAASr07B,EAAKna,GAC/D90B,KAAK+0H,MAAQo1kC,EAEbnqsC,KAAK6xI,kBAAkBs4jC,EAAY7mO,EAASr07B,EAAKna,EACnD,EAEAu3qC,EAAU3ssC,UAAU+68B,gBAAkB,SAAU0vP,EAAY7mO,EAASr07B,EAAKna,GAIxEo1qC,GAAa5mO,GAEbtj+B,KAAK6xI,kBAAkBs4jC,EAAY7mO,EAASr07B,EAAKna,EACnD,EAEAu3qC,EAAU3ssC,UAAUgshC,aAAe,SAAUy+K,EAAY7mO,EAASr07B,EAAKna,GACrE90B,KAAKy68B,gBAAgB0vP,EAAY7mO,EAASr07B,EAAKna,EACjD,EAEAu3qC,EAAU3ssC,UAAU8rhC,WAAa,SAAU2+K,EAAY7mO,EAASr07B,EAAKna,GACnE90B,KAAK6xI,kBAAkBs4jC,EAAY7mO,EAASr07B,EAAKna,EACnD,EAEAu3qC,EAAU3ssC,UAAUmyI,kBAAoB,SAAUs4jC,EAAY7mO,EAASr07B,EAAKna,KAExEA,GAAWA,EAAQw3qC,QAAUnC,EAAW5+qC,KAAOvrB,KAAKsppC,iBAAiBlG,UAAU+mD,EAAWC,mBAAmBrP,cAAc9rpC,IAAM0zmC,YAAYwnD,EAAWvnD,aAAac,aAAaymD,EAAWpm2B,MAAMhiW,QACvM,EAIAsqsC,EAAU3ssC,UAAU2l8B,QAAU,WAC5Brl8B,KAAKsppC,iBAAiBjkN,SACxB,EAEAgnQ,EAAU3ssC,UAAU6ppC,SAAW,SAAUS,GACvC,IAAI5yG,EAAUp3iC,KAAK+0H,MAAMxpG,GACrBw4U,EAAQ/jW,KAAK+0H,MAAMq1kC,mBAAmBtQ,gBAAgB9vC,EAAWjmzB,MAAO/jW,KAAKsj+B,WAK/E0mL,EAAWzgb,OAASygb,EAAW3H,gBAAkBripC,KAAKivC,IAAIu1/B,eAAe,CACzEj4hC,KAAM,QACNo+rC,QAASvzJ,EACTrzsB,MAAO,EAAaA,GACpBuo2B,MAAOl1J,IAET4yG,EAAWzgb,OAASvpuB,KAAKivC,IAAIu1/B,eAAe,CAC1Cj4hC,KAAM,WACNo+rC,QAASvzJ,EACTrzsB,MAAO,EAAaA,GACpBuo2B,MAAOl1J,GAEX,EAEAi1J,EAAU9/rC,KAAO,QACV8/rC,CACT,CA1EA,CA0EE,ICiBF,SAASE,GAAoB1uoC,EAAQ+klC,GACnC,OAAO,EAAa,CAClBG,UAAWlllC,EAAOkllC,UAClBX,UAAWvklC,EAAOuklC,UAClBD,cAAetklC,EAAOsklC,cACtB1gH,WAAY,IAAI,GAAM5j+B,EAAO4j+B,YAAY11C,eACzCs2J,cAAexklC,EAAOwklC,cACtB18oC,EAAGk4D,EAAOl4D,GACTi9oC,GAAa,EAClB,CAEA,SArGA,SAAUl6xB,GAGR,SAAS8j1B,IACP,IAAI9/oC,EAAmB,OAAXg8T,GAAmBA,EAAOnoX,MAAMP,KAAMI,YAAcJ,KAchE,OAZA0sD,EAAMngD,KAAOigsC,EAAWjgsC,KAKxBmgD,EAAMq3S,MAAQ,GAMdr3S,EAAMk2lC,YAAc,CAAC,EACdl2lC,CACT,CAoEA,OAtFAkgX,EAAU4/xB,EAAY9j1B,GAoBtB8j1B,EAAW9ssC,UAAU61/B,cAAgB,SAAU3zB,EAAW6zB,GACxD,IAAIsqI,EAAa//nC,KAAK69D,QACrB437B,GAAU,GAAmCsqI,EAAYn+J,EAAW,CAAC,UAAW,eACjF,IAAI6qO,EAAU1sE,EAAW0sE,QAAU1sE,EAAW0sE,SAAW,CAAC,EAE1D1sE,EAAW2sE,WAAa3sE,EAAW2sE,YAAc,CAC/Cn/kC,MA/B2B,QAkCxBk/kC,EAAQ9ssC,eAAe,WAG1B8ssC,EAAQ/lH,MAAQ,EAEpB,EAMA8lH,EAAW9ssC,UAAUitsC,SAAW,SAAU5o2B,GAWnCA,IAIL/jW,KAAK+jW,MAAQ,EAAWA,GAAO,SAAU1iH,GACvC,OAAOkr9B,GAAoBvssC,KAAK69D,OAAQwjL,EAC1C,GAAGrhP,MACL,EAMAwssC,EAAW9ssC,UAAU8qsC,eAAiB,SAAU5nD,GAC9C5ipC,KAAK4ipC,YAAc2pD,GAAoBvssC,KAAK69D,OAAQ+klC,GACpD5ipC,KAAK+ipC,UAAY/ipC,KAAK4ipC,YAAYG,SACpC,EAEAypD,EAAWjgsC,KAAO,QAClBigsC,EAAWvwiC,aAAe,CAAC,MAAO,OAAQ,QAAS,QAAS,WAAY,UACxEuwiC,EAAW5rqB,cAAgB,CACzBs8c,YAAa,MACb6lK,UAAW,OACXX,UAAW,SACXD,eAAe,EACf1gH,WAAY,CACVjqD,YAAa,EACbjq3B,MAAO,wBACP+qP,YAAa,WAEf+hrB,aAAc,UACdiwK,cAAe,EACfjoD,eAAe,EACf18oC,EAAG,KAEE6msC,CACT,CAxFA,CAwFE9/iC,IC9FF,IAAI,GAAa,CAAC,OAAQ,UAAW,QAAS,QAAS,OAAQ,SAsG/D,SAlGA,SAAUg8N,GAGR,SAASkk1B,IACP,OAAkB,OAAXlk1B,GAAmBA,EAAOnoX,MAAMP,KAAMI,YAAcJ,IAC7D,CA0FA,OA9FA4sa,EAAUggyB,EAAclk1B,GAMxBkk1B,EAAaltsC,UAAU4uH,OAAS,SAAUgnkC,EAAchyN,EAASr07B,GAC/D,IAAI8zmC,EACAX,EACAyqD,EACJvpO,EAAQwe,cAAc,CACpBhe,SAAU,UACT,SAAUqmO,GACXpnD,EAAYonD,EAAWpnD,UACvBX,EAAY+nD,EAAWvnD,YAAYR,WAAa,SAChDyqD,EAAYA,KAAe1C,EAAWpm2B,MAAM1jW,MAC9C,IACAL,KAAK6ipC,WAAaE,EAClB/ipC,KAAK8ssC,WAAa1qD,EAClB,EAAYkzC,EAAanyrC,IAAI,QAAQ,IAAO,SAAUoJ,GACpD+orC,EAAae,cAAc9prC,GAAgB,SAATA,EAAgC,aAAd61oC,EAAoC,UAAT71oC,EAAmBsgsC,EAAYtgsC,IAASw2oC,GAAa,WAAa,SACnJ,GACF,EAEA6pD,EAAaltsC,UAAU8rhC,WAAa,SAAU8pK,EAAchyN,EAASr07B,GACnEjvC,KAAKsuH,OAAOgnkC,EAAchyN,EAASr07B,EACrC,EAEA29pC,EAAaltsC,UAAUq2rC,SAAW,WAChC,IAAIhhkC,EAAQ/0H,KAAK+0H,MACbiikC,EAAiBjikC,EAAM5xH,IAAI,QAAQ,GACnCs1O,EAAQ,CAAC,EAMb,OALA,EAAY1jH,EAAM5xH,IAAI,QAAQ,IAAO,SAAUoJ,GACzCyqrC,EAAezqrC,KACjBksO,EAAMlsO,GAAQyqrC,EAAezqrC,GAEjC,IACOksO,CACT,EAIAm09B,EAAaltsC,UAAU+5nC,QAAU,SAAUn2J,EAASr07B,EAAK1iC,GACvD,IAAIw2oC,EAAY/ipC,KAAK6ipC,WACjBT,EAAYpipC,KAAK8ssC,WAER,UAATvgsC,GAEF0iC,EAAIu1/B,eAAe,CACjBj4hC,KAAM,iBACN84zB,UAAW,KAEbp2xB,EAAIu1/B,eAAe,CACjBj4hC,KAAM,QACNwgsC,QAAS,QAEThp2B,MAAO,MAGT90T,EAAIu1/B,eAAe,CACjBj4hC,KAAM,mBACNsY,IAAK,QACL+9nC,YAAa,CACXG,UAAoB,SAATx2oC,EAAkBw2oC,EAAYA,IAAcx2oC,GAAeA,EACtE61oC,UAAoB,SAAT71oC,EAAgC,aAAd61oC,EAA2B,SAAW,WAAaA,IAIxF,EAIAwqD,EAAa9rqB,iBAAmB,SAAUwic,GAmBxC,MAlBoB,CAClBrgpB,MAAM,EACN12U,KAAM,GAAWxK,QACjB0uO,KAAM,CAEJ/8I,KAAM,iQACNzuD,QAAS,ubACT0o9B,MAAO,iNACPC,MAAO,gMACPC,KAAM,4KACN7o+B,MAAO,0MAMTqqJ,MAAOi0zB,EAAQgqB,iBAAiBnq/B,IAAI,CAAC,UAAW,QAAS,UAG7D,EAEOypsC,CACT,CAhGA,CAgGExY,IC7FF,IAAI4Y,GAEJ,SAAUtk1B,GAGR,SAASsk1B,IACP,IAAItgpC,EAAmB,OAAXg8T,GAAmBA,EAAOnoX,MAAMP,KAAMI,YAAcJ,KAOhE,OALA0sD,EAAMngD,KAAOygsC,EAAWzgsC,KACxBmgD,EAAM8n8B,WAAa,CACjBjo/B,KAAM,MACNoo/B,YAAY,GAEPjo8B,CACT,CA4BA,OAvCAkgX,EAAUogyB,EAAYtk1B,GAatBsk1B,EAAWzgsC,KAAO,QAClBygsC,EAAWpsqB,cAAgB,CAEzBj7hB,EAAG,EACHs9U,MAAM,EACN7yT,KAAM,GACNtgB,OAAQ,QACRm9rC,QAAS,GACTC,UAAW,QACXruqC,KAAM,EACNC,IAAK,EACL46G,gBAAiB,gBACjB4+N,YAAa,OACbk/nB,YAAa,EACbt/2B,QAAS,EACTq8jC,QAAS,GACTvrM,UAAW,CACTvkwB,SAAU,GACVG,WAAY,OACZr3H,MAAO,WAETg06B,aAAc,CACZ98yB,SAAU,GACVl3H,MAAO,YAGJy/kC,CACT,CAzCA,CAyCEtgjC,IAGEygjC,GAEJ,SAAUzk1B,GAGR,SAASyk1B,IACP,IAAIzgpC,EAAmB,OAAXg8T,GAAmBA,EAAOnoX,MAAMP,KAAMI,YAAcJ,KAGhE,OADA0sD,EAAMngD,KAAO4gsC,EAAU5gsC,KAChBmgD,CACT,CAqIA,OA5IAkgX,EAAUugyB,EAAWzk1B,GASrByk1B,EAAUztsC,UAAU4uH,OAAS,SAAU8+kC,EAAY9pO,EAASr07B,GAG1D,GAFAjvC,KAAKo7T,MAAMvtE,YAENu/8B,EAAWjqsC,IAAI,QAApB,CAIA,IAAIi4T,EAAQp7T,KAAKo7T,MACbwtrB,EAAiBwkN,EAAWx1gC,SAAS,aACrCy1gC,EAAoBD,EAAWx1gC,SAAS,gBACxCotD,EAAYoo9B,EAAWjqsC,IAAI,aAC3B8u9B,EAAoB,GAAiBm7O,EAAWjqsC,IAAI,gBAAiBiqsC,EAAWjqsC,IAAI,sBACpF+38B,EAAS,IAAI,GAAa,CAC5B7m8B,MAAOg0+B,GAAgBO,EAAgB,CACrCx49B,KAAMg9qC,EAAWjqsC,IAAI,QACrBi6H,KAAMwr3B,EAAen2wB,gBACpB,CACDg4wB,YAAY,IAEd1tzB,GAAI,KAEFqj4B,EAAWllH,EAAO/2tB,kBAClBmp9B,EAAUF,EAAWjqsC,IAAI,WACzBoqsC,EAAY,IAAI,GAAa,CAC/Bl5rC,MAAOg0+B,GAAgBglN,EAAmB,CACxCj9qC,KAAMk9qC,EACNlwkC,KAAMiwkC,EAAkB569B,eACxBzvO,EAAGo9jC,EAASphiC,OAASouqC,EAAWjqsC,IAAI,WACpCgwuB,cAAe,OACd,CACDs3Q,YAAY,IAEd1tzB,GAAI,KAEF4iN,EAAOytzB,EAAWjqsC,IAAI,QACtBqqsC,EAAUJ,EAAWjqsC,IAAI,WACzBmhmC,EAAe8oG,EAAWjqsC,IAAI,gBAAgB,GAClD+38B,EAAO9me,QAAUz0F,IAAS2ktB,EAC1BipG,EAAUn5tB,QAAUo5tB,IAAYlpG,EAE5B3ktB,GACFu7jB,EAAOtq8B,GAAG,SAAS,WACjBui/B,GAAWxzmB,EAAM,IAAMytzB,EAAWjqsC,IAAI,UACxC,IAGEqqsC,GACFD,EAAU38rC,GAAG,SAAS,WACpBui/B,GAAWq6M,EAAS,IAAMJ,EAAWjqsC,IAAI,aAC3C,IAGF65+B,GAAU9hC,GAAQn6gB,UAAYi8iB,GAAUuwN,GAAWxswB,UAAYujqB,EAAe,CAC5Epo5B,cAAe,QACfivE,eAAgBii7B,EAAWji7B,gBACzB,KACJiwC,EAAMj2S,IAAI+17B,GACVoyP,GAAWly4B,EAAMj2S,IAAIoorC,GAErB,IAAIE,EAAYry4B,EAAMj3E,kBAClBsm1B,EAAe2iI,EAAWt3M,qBAC9B20E,EAAa1riC,MAAQ0uqC,EAAU1uqC,MAC/B0riC,EAAazriC,OAASyuqC,EAAUzuqC,OAChC,IAAIk07B,EAAa6gC,GAAc02E,EAAc,CAC3C1riC,MAAOkQ,EAAIk8L,WACXnsM,OAAQiQ,EAAI+rI,aACXoyhC,EAAWjqsC,IAAI,YAEb6hP,IAIe,YAFlBA,EAAYoo9B,EAAWjqsC,IAAI,SAAWiqsC,EAAWjqsC,IAAI,YAGnD6hP,EAAY,UAII,UAAdA,EACFkuuB,EAAWjv9B,GAAKiv9B,EAAWn07B,MACJ,WAAdimN,IACTkuuB,EAAWjv9B,GAAKiv9B,EAAWn07B,MAAQ,IAIlCkz7B,IAGuB,YAF1BA,EAAoBm7O,EAAWjqsC,IAAI,QAAUiqsC,EAAWjqsC,IAAI,aAG1D8u9B,EAAoB,UAGI,WAAtBA,EACFiB,EAAWlw9B,GAAKkw9B,EAAWl07B,OACI,WAAtBiz7B,IACTiB,EAAWlw9B,GAAKkw9B,EAAWl07B,OAAS,GAGtCiz7B,EAAoBA,GAAqB,OAG3C72pB,EAAMn3T,EAAIiv9B,EAAWjv9B,EACrBm3T,EAAMp4T,EAAIkw9B,EAAWlw9B,EACrBo4T,EAAMs3pB,aACN,IAAIg7O,EAAa,CACfnpb,MAAOv/hB,EACPmuf,cAAe8+O,GAEjB/W,EAAO52iB,SAASopyB,GAChBH,EAAUjpyB,SAASopyB,GAGnBD,EAAYry4B,EAAMj3E,kBAClB,IAAIjsH,EAAUg71B,EAAWzzmB,OACrBprW,EAAQ+4rC,EAAWrhN,aAAa,CAAC,QAAS,YAC9C13+B,EAAM+oH,KAAOgwkC,EAAWjqsC,IAAI,mBAC5B,IAAIuwF,EAAO,IAAI,GAAa,CAC1B4uI,MAAO,CACLr+N,EAAGwpsC,EAAUxpsC,EAAIi0H,EAAQ,GACzBl1H,EAAGyqsC,EAAUzqsC,EAAIk1H,EAAQ,GACzBn5F,MAAO0uqC,EAAU1uqC,MAAQm5F,EAAQ,GAAKA,EAAQ,GAC9Cl5F,OAAQyuqC,EAAUzuqC,OAASk5F,EAAQ,GAAKA,EAAQ,GAChDn4H,EAAGqtsC,EAAWjqsC,IAAI,iBAEpBkR,MAAOA,EACPkh+B,kBAAkB,EAClBnhgB,QAAQ,IAEVh5K,EAAMj2S,IAAIuuE,EA1HV,CA2HF,EAEAy5mC,EAAU5gsC,KAAO,QACV4gsC,CACT,CA9IA,CA8IE,IClMEQ,GAEJ,SAAUjl1B,GAGR,SAASil1B,IACP,IAAIjhpC,EAAmB,OAAXg8T,GAAmBA,EAAOnoX,MAAMP,KAAMI,YAAcJ,KAIhE,OAFA0sD,EAAMngD,KAAOohsC,EAAcphsC,KAC3BmgD,EAAM8n8B,WAAa,MACZ9n8B,CACT,CA+JA,OAvKAkgX,EAAU+gyB,EAAejl1B,GAczBil1B,EAAcjusC,UAAUgxD,KAAO,SAAUmN,EAAQghe,EAAaykc,GAC5Dtj+B,KAAKq1/B,qBAAqBx37B,EAAQyl6B,GAElCtj+B,KAAK4tsC,WACP,EAMAD,EAAcjusC,UAAUus/B,YAAc,SAAUpu7B,GAC9C6qT,EAAOhpX,UAAUus/B,YAAY1r/B,MAAMP,KAAMI,WAEzCJ,KAAK4tsC,WACP,EAEAD,EAAcjusC,UAAUmusC,gBAAkB,SAAUxp4B,GAC9B,MAAhBA,IACFA,EAAerkU,KAAK69D,OAAOwmQ,cAG7B,IAAI96Q,EAAQvpD,KAAKykJ,MAAMl7F,QAEnBvpD,KAAK69D,OAAOg/K,KACdwnF,GAAgBA,EAAe96Q,EAAQA,GAASA,GAEhD86Q,GAAgB96Q,IAAU86Q,EAAe96Q,EAAQ,GACjD86Q,EAAe,IAAMA,EAAe,IAGtCrkU,KAAK69D,OAAOwmQ,aAAeA,CAC7B,EAMAsp4B,EAAcjusC,UAAU4mgC,gBAAkB,WACxC,OAAOtmgC,KAAK69D,OAAOwmQ,YACrB,EAMAsp4B,EAAcjusC,UAAUousC,WAAa,WACnC,OAAO9tsC,KAAKsmgC,mBAAqBtmgC,KAAKykJ,MAAMl7F,QAAU,CACxD,EAMAokpC,EAAcjusC,UAAUqusC,aAAe,SAAUpisC,GAC/C3L,KAAK69D,OAAOmwoC,WAAarisC,CAC3B,EAMAgisC,EAAcjusC,UAAUuusC,aAAe,WACrC,QAASjusC,KAAK69D,OAAOmwoC,QACvB,EAMAL,EAAcjusC,UAAUkusC,UAAY,WAClC,IAIIM,EAJAnuE,EAAa//nC,KAAK69D,OAClBswoC,EAAUpuE,EAAWvwnC,MAAQ,GAC7B+30B,EAAWw4S,EAAWx4S,SACtBv2N,EAAQhxnB,KAAKousC,OAAS,GAGT,aAAb7mX,GACF2mX,EAAmB,GACnB,EAAKC,GAAS,SAAU/spC,EAAMpkC,GAC5B,IACIizoC,EADA9upC,EAAQuh+B,GAAoB3B,GAAiB3/6B,GAAO,IAGpD,GAASA,IACX6umC,EAAU1/nC,EAAM6wB,IACRjgD,MAAQ6b,EAEhBizoC,EAAUjzoC,EAGZkxrC,EAAiBrssC,KAAKoupC,GACtBj/hB,EAAMnvnB,KAAKV,EACb,KAEA+ssC,EAAmBC,EAGrB,IAAI7xM,EAAU,CACZl6xB,SAAU,UACVv8K,KAAM,OACN1kD,MAAO,UACPom1B,IAAa,UACJvn1B,KAAKykJ,MAAQ,IAAI,GAAW,CAAC,CACtC/5I,KAAM,QACN6B,KAAM+v/B,IACJt8/B,OACCm5b,SAAS+0wB,EAAkBl9kB,EAClC,EAEA28kB,EAAcjusC,UAAU8kI,QAAU,WAChC,OAAOxkI,KAAKykJ,KACd,EAOAkpjC,EAAcjusC,UAAU09jC,cAAgB,WACtC,GAA6B,aAAzBp9jC,KAAKmD,IAAI,YACX,OAAOnD,KAAKousC,OAAOrssC,OAEvB,EAEA4rsC,EAAcphsC,KAAO,WAKrBohsC,EAAc/sqB,cAAgB,CAE5Bj7hB,EAAG,EACHs9U,MAAM,EACNskgB,SAAU,OACV4iU,UAAU,EACVtrnC,KAAM,MACNC,IAAK,KACL+gE,MAAO,MACPC,OAAQ,EACR/gE,MAAO,KACPC,OAAQ,GACRk5F,QAAS,EACT+rS,gBAAiB,OACjB+pyB,UAAU,EACVK,QAAQ,EACRxx9B,MAAM,EACNyx9B,aAAc,IACdjq4B,aAAc,EACdkgrB,UAAW,CAAC,EACZlj/B,MAAO,CACLksH,MAAO,QAET/9G,KAAM,IAEDm+rC,CACT,CAzKA,CAyKEjhjC,IAEF,YC7KA,IAAI6hjC,GAEJ,SAAU7l1B,GAGR,SAAS6l1B,IACP,IAAI7hpC,EAAmB,OAAXg8T,GAAmBA,EAAOnoX,MAAMP,KAAMI,YAAcJ,KAGhE,OADA0sD,EAAMngD,KAAOgisC,EAAoBhisC,KAC1BmgD,CACT,CAuGA,OA9GAkgX,EAAU2hyB,EAAqB7l1B,GAS/B6l1B,EAAoBhisC,KAAO,kBAK3BgisC,EAAoB3tqB,cAAgB6rd,GAAqB,GAAc7rd,cAAe,CACpFlnZ,gBAAiB,gBACjB4+N,YAAa,OACbk/nB,YAAa,EACbgc,OAAQ,aACRn1P,SAAS,EACThgnB,QAAS,CACP3/G,QAAS,QAGXw7d,OAAQ,SACRq+f,WAAY,GACZpmR,UAAW,CACTlvZ,MAAM,EACNlkT,MAAO,EACPwuF,MAAO,WAETlsH,MAAO,CACLs9B,SAAU,OAIVskT,MAAM,EACNi/I,SAAU,OACVz8W,OAAQ,EAGR8H,MAAO,WAETg33B,UAAW,CACTh33B,MAAO,UACPiq3B,YAAa,GAEfg3N,gBAAiB,CACft0sB,OAAQ,SACRq+f,WAAY,GACZhr4B,MAAO,UACP+qP,YAAa,OACbk/nB,YAAa,EACbxyN,WAAY,EACZF,cAAe,EACfC,cAAe,EACfl0pB,YAAa,qBAEbk/H,WAAW,EACX2owB,kBAAmB,IACnBE,gBAAiB,gBAEnBmpC,aAAc,CACZ9+sB,MAAM,EACNwr3B,aAAa,EACbC,aAAa,EACbC,aAAa,EACbtzD,SAAU,GACVk5C,QAAS,GACT51pC,SAAU,OACViwqC,SAAU,4UACVC,SAAU,idAEVC,SAAU,mLAEVC,SAAU,kLACVC,YAAa,GACbC,YAAa,GACb1hlC,MAAO,UACP+qP,YAAa,UACbk/nB,YAAa,GAEf5W,SAAU,CACRv/9B,MAAO,CACL4hV,MAAM,EAEN11N,MAAO,WAETg33B,UAAW,CACTh33B,MAAO,WAETw06B,aAAc,CACZx06B,MAAO,UACP+qP,YAAa,UACbk/nB,YAAa,IAGjBy7B,SAAU,CACR9gS,UAAW,CACT5knB,MAAO,WAETg33B,UAAW,CACTh33B,MAAO,WAETlsH,MAAO,CACLksH,MAAO,YAGX/9G,KAAM,KAED++rC,CACT,CAhHA,CAgHE,IAEF1kQ,EAAM0kQ,GAAqBr+L,GAAgBxwgC,WAC3C,YCxGA,GAdA,SAAUgpX,GAGR,SAASwm1B,IACP,IAAIxipC,EAAmB,OAAXg8T,GAAmBA,EAAOnoX,MAAMP,KAAMI,YAAcJ,KAGhE,OADA0sD,EAAMngD,KAAO2isC,EAAa3isC,KACnBmgD,CACT,CAGA,OAVAkgX,EAAUsiyB,EAAcxm1B,GASxBwm1B,EAAa3isC,KAAO,WACb2isC,CACT,CAZA,CAYE,ICXF,IAAIC,GAEJ,SAAUzm1B,GAGR,SAASym1B,EAAax32B,EAAK71P,EAAOulgC,EAAa9/Q,GAC7C,IAAI76xB,EAAQg8T,EAAO9oX,KAAKI,KAAM23V,EAAK71P,EAAOulgC,IAAgBrnmC,KAG1D,OADA0sD,EAAMngD,KAAOg70B,GAAY,QAClB76xB,CACT,CAmBA,OA1BAkgX,EAAUuiyB,EAAczm1B,GAaxBym1B,EAAazvsC,UAAUsgkC,cAAgB,WAErC,OAAOhgkC,KAAK+0H,MAAM6iE,SAAS,QAC7B,EAMAu3gC,EAAazvsC,UAAUgqiB,aAAe,WACpC,MAAoC,eAA7B1piB,KAAK+0H,MAAM5xH,IAAI,SACxB,EAEOgssC,CACT,CA5BA,CA4BE,IAEF,YCnBA,IAAI,GAAKtssC,KAAKsmC,GACVimqC,GAAsBlsO,KAEtBmsO,GAEJ,SAAU3m1B,GAGR,SAAS2m1B,IACP,IAAI3ipC,EAAmB,OAAXg8T,GAAmBA,EAAOnoX,MAAMP,KAAMI,YAAcJ,KAGhE,OADA0sD,EAAMngD,KAAO8isC,EAAmB9isC,KACzBmgD,CACT,CAkiBA,OAziBAkgX,EAAUyiyB,EAAoB3m1B,GAS9B2m1B,EAAmB3vsC,UAAUgxD,KAAO,SAAU4y6B,EAASr07B,GACrDjvC,KAAKivC,IAAMA,CACb,EAMAogqC,EAAmB3vsC,UAAU4uH,OAAS,SAAU+34B,EAAe/iC,EAASr07B,GAMtE,GALAjvC,KAAK+0H,MAAQsx4B,EACbrmgC,KAAKivC,IAAMA,EACXjvC,KAAKsj+B,QAAUA,EACftj+B,KAAKo7T,MAAMvtE,YAEPw4wB,EAAcljgC,IAAI,QAAQ,GAAO,CACnC,IAAImssC,EAAetvsC,KAAKqkjC,QAAQh+C,EAAep39B,GAE3CsgqC,EAAcvvsC,KAAKwvsC,aAAa,cAEhC5wb,EAAa5+wB,KAAKwvsC,aAAa,eAE/BC,EAASzvsC,KAAK4irC,MAAQ5irC,KAAK0vsC,YAAYJ,EAAcjpM,GAEzDA,EAAcpvoB,cAAgB,SAAU5xN,GAItC,OAAO092B,GAAoB,YAAa,CACtC4B,QAAQ,EACRxjhC,MALSsusC,EAAO3tmC,MAAM8sc,SAAS,CAC/BztiB,MAAOkkK,KAMX,EAEA,EAAK,CAAC,WAAY,WAAY,UAAW,mBAAmB,SAAU36J,GACpE1K,KAAK,UAAY0K,GAAM4ksC,EAAcC,EAAaE,EAAQppM,EAC5D,GAAGrmgC,MAEHA,KAAK2vsC,iBAAiBL,EAAc1wb,EAAY6wb,EAAQppM,GAExDrmgC,KAAKw3Z,UAAU83yB,EAAcjpM,EAC/B,CAEArmgC,KAAK4vsC,cAEL5vsC,KAAK6vsC,oBACP,EAMAR,EAAmB3vsC,UAAUmzB,OAAS,WACpC7yB,KAAK8vsC,cAEL9vsC,KAAKo7T,MAAMvtE,WACb,EAMAwh9B,EAAmB3vsC,UAAU2l8B,QAAU,WACrCrl8B,KAAK8vsC,aACP,EAEAT,EAAmB3vsC,UAAU2kjC,QAAU,SAAUh+C,EAAep39B,GAC9D,IAGI8gqC,EA2CAC,EACAC,EACAC,EAhDAC,EAAc9pM,EAAcljgC,IAAI,CAAC,QAAS,aAC1Cqw/B,EAAS6S,EAAcljgC,IAAI,UAC3B8o+B,EAwfR,SAAqBl32B,EAAO9lF,GAC1B,OAAO,GAAqB8lF,EAAM+g4B,qBAAsB,CACtD/29B,MAAOkQ,EAAIk8L,WACXnsM,OAAQiQ,EAAI+rI,aACXjmD,EAAM5xH,IAAI,WACf,CA7fmB,CAAYkjgC,EAAep39B,GAqBtCmhqC,EAAgB,CAClBzniB,WAAY,SACZn/H,UAnBAumqB,EADiB,MAAfI,GAAuC,SAAhBA,EACG,eAAX38M,EAA0BvnB,EAASjp+B,EAAIip+B,EAASjt8B,OAAS,EAAIiQ,EAAI+rI,YAAc,EAAI,IAAM,IAAMixzB,EAASho+B,EAAIgo+B,EAASlt8B,MAAQ,EAAIkQ,EAAIk8L,WAAa,EAAI,IAAM,IACpKnwK,GAASm1oC,GACD,CACfxniB,WAAY,CACV7poB,IAAK,IACLghE,OAAQ,KAEV0pc,SAAU,CACR3qgB,KAAM,IACNghE,MAAO,MAET2z5B,GAAQ28M,GAGOA,IAKW,GAAwB,MAAnBJ,EAAyB,OAAS,SAEjEM,EAAmB,CACrB1niB,WAAYoniB,GAAkB,GAAwB,MAAnBA,EAAyB,MAAQ,SACpEvmqB,SAAU,UAER8mqB,EAAc,CAChB3niB,WAAY,EACZn/H,SAAU,GAAK,GAGb+mqB,EAAwB,aAAX/8M,EAAwBvnB,EAASjt8B,OAASit8B,EAASlt8B,MAChEyxqC,EAAenqM,EAAczu0B,SAAS,gBACtC64gC,EAAcD,EAAartsC,IAAI,QAAQ,GACvCutsC,EAAcD,EAAcD,EAAartsC,IAAI,YAAc,EAC3DwtsC,EAAaF,EAAcD,EAAartsC,IAAI,WAAa,EACzDytsC,EAAcF,EAAcC,EAE5B7oa,EAAgBu+N,EAAcljgC,IAAI,CAAC,QAAS,YAAc,EAC9D2kyB,EAAgBA,EAAgB,GAAK,IAKrC,IAAI7jY,EAAkBusyB,EAAartsC,IAAI,YAAY,GAC/CsrsC,EAAcgC,GAAeD,EAAartsC,IAAI,eAAe,GAC7DursC,EAAc+B,GAAeD,EAAartsC,IAAI,eAAe,GAC7DwrsC,EAAc8B,GAAeD,EAAartsC,IAAI,eAAe,GAC7Dg4+B,EAAQ,EACRE,EAASk1N,EAEW,SAApBtsyB,GAAkD,WAApBA,GAChCwqyB,IAAgBuB,EAAe,CAAC,EAAG,GAAI70N,GAASy1N,GAChDlC,IAAgBuB,EAAkB,CAAC90N,EAAO,GAAIA,GAASy1N,GACvDjC,IAAgBuB,EAAkB,CAAC70N,EAASq1N,EAAa,GAAIr1N,GAAUu1N,KAGvEnC,IAAgBuB,EAAe,CAAC30N,EAASq1N,EAAa,GAAIr1N,GAAUu1N,GACpElC,IAAgBuB,EAAkB,CAAC,EAAG,GAAI90N,GAASy1N,GACnDjC,IAAgBuB,EAAkB,CAAC70N,EAASq1N,EAAa,GAAIr1N,GAAUu1N,IAGzE,IAAIp8I,EAAa,CAACr5E,EAAOE,GAMzB,OAJIgrB,EAAcljgC,IAAI,YACpBqxjC,EAAWl6/B,UAGN,CACL2x6B,SAAUA,EACVskO,WAAYA,EACZ/8M,OAAQA,EACRjt4B,SAAU+plC,EAAY98M,GACtB1rN,cAAeA,EACfqoa,YAAaJ,EACbc,WAAYxqM,EAAcljgC,IAAI,CAAC,QAAS,WAAaitsC,EAAc58M,GACnEs9M,cAAezqM,EAAcljgC,IAAI,CAAC,QAAS,mBAAqBkjgC,EAAcljgC,IAAI,CAAC,QAAS,cAAgBktsC,EAAiB78M,GAE7Hw8M,aAAcA,EACdC,gBAAiBA,EACjBC,gBAAiBA,EACjB17I,WAAYA,EACZk8I,YAAaA,EACbC,WAAYA,EAEhB,EAEAtB,EAAmB3vsC,UAAU83Z,UAAY,SAAU43tB,EAAY/oH,GAM7D,IAAI0qM,EAAY/wsC,KAAKmvnC,WACjBvwW,EAAa5+wB,KAAKgxsC,YAClB/kO,EAAWmjJ,EAAWnjJ,SAE1B,GAA0B,aAAtBmjJ,EAAW57H,OAAuB,CAEpC,IAAIpw/B,EtbtPC,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,GsbuPjB6tsC,EAAgBhlO,EAASho+B,EACzBitsC,EAAgBjlO,EAASjp+B,EAAIip+B,EAASjt8B,OAC1C,GAAiB57B,EAAGA,EAAG,EAAE6tsC,GAAgBC,IACzC,GAAc9tsC,EAAGA,GAAI,GAAK,GAC1B,GAAiBA,EAAGA,EAAG,CAAC6tsC,EAAeC,KACvCjlO,EAAWA,EAAS178B,SACXu76B,eAAe1o8B,EAC1B,CAEA,IAAI+tsC,EAAYC,EAASnlO,GACrBolO,EAAYD,EAASL,EAAU5s9B,mBAC/Bmt9B,EAAaF,EAASxyb,EAAWz6hB,mBACjCot9B,EAAe,CAACR,EAAU9ssC,EAAG8ssC,EAAU/tsC,GACvCwusC,EAAiB,CAAC5yb,EAAW36wB,EAAG26wB,EAAW57wB,GAC/CwusC,EAAe,GAAKD,EAAa,GAAKJ,EAAU,GAAG,GACnD,IAQMM,EARFtB,EAAc/gF,EAAW+gF,YAmB7B,SAAS9/O,EAAUqhP,GACjBA,EAAY/khC,QAAUwkhC,EAAU,GAAG,GAAKO,EAAYztsC,EACpDytsC,EAAY9khC,QAAUukhC,EAAU,GAAG,GAAKO,EAAY1usC,CACtD,CAEA,SAASousC,EAAS19mC,GAEhB,MAAO,CAAC,CAACA,EAAKzvF,EAAGyvF,EAAKzvF,EAAIyvF,EAAK30D,OAAQ,CAAC20D,EAAK1wF,EAAG0wF,EAAK1wF,EAAI0wF,EAAK10D,QAChE,CAEA,SAAS2yqC,EAAQ3hE,EAASjynC,EAAM9E,EAAI2//B,EAAQg5L,GAC1C5hE,EAAQp3H,IAAW3//B,EAAG2//B,GAAQg5L,GAAY7zrC,EAAK66/B,GAAQg5L,EACzD,CA7BmB,MAAfzB,GAAuBn1oC,GAASm1oC,IAGlCwB,EAAQJ,EAAcF,EAAWF,EAAW,EADxCM,EAA+B,MAAhBtB,EAAsB,EAAI,GAE7CwB,EAAQH,EAAgBF,EAAYH,EAAW,EAAG,EAAIM,KAGtDE,EAAQJ,EAAcF,EAAWF,EAAW,EADxCM,EAAetB,GAAe,EAAI,EAAI,GAE1CqB,EAAe,GAAKD,EAAa,GAAKpB,GAGxCY,EAAUnk9B,YAAY2k9B,GACtB3yb,EAAWhyhB,YAAY4k9B,GACvBT,EAAUxqlC,SAAWq4pB,EAAWr4pB,SAAW6ogC,EAAW7ogC,SACtD8p2B,EAAU0gP,GACV1gP,EAAUzxM,EAeZ,EAEAywb,EAAmB3vsC,UAAUgwsC,YAAc,SAAUtgF,EAAY/oH,GAC/D,IAAI72/B,EAAO62/B,EAAc7h4B,UACrB+itB,EAAW8+K,EAAcljgC,IAAI,YAC7B2+F,EAoUR,SAA4BizB,EAAOwytB,GAGjC,GAFAA,EAAWA,GAAYxytB,EAAM5xH,IAAI,QAG/B,OAAQok1B,GAEN,IAAK,WACH,OAAO,IAAIu4O,GAAa,CACtBxlD,YAAavl5B,EAAMqo8B,gBACnB7y5B,OAAQ,CAACxqG,KAAU,OAGvB,IAAK,OACH,OAAO,IAAIw0M,GAAU,CACnBs4L,OAAQ93U,EAAMuu2B,QAAQgqB,iBACtBwE,OAAQ/83B,EAAMuu2B,QAAQng+B,IAAI,YAG9B,QAEE,OAAO,IAAIuxQ,GAGnB,CA3VgB,CAAmB2xvB,EAAe9+K,GAE9CzlvB,EAAM0ytB,SAAW,WACf,OAAOhlzB,EAAK24iC,SAAS,CAAC,UAAU,SAAUhnjC,GACxC,MAAO,CACLA,MAAOA,EAEX,GACF,EAEA,IAAIi99B,EAAa5u9B,EAAKivgC,cAAc,SACpC386B,EAAM2t9B,UAAUrxF,EAAW,GAAIA,EAAW,IAC1Ct83B,EAAMkw9B,gBACN,IAAIvn3B,EAAO,IAAI,GAAa,QAAS3oG,EAAOsthC,EAAW56D,WAAYjtO,GAEnE,OADA98oB,EAAK11E,MAAQsx4B,EACN57zB,CACT,EAEA4kgC,EAAmB3vsC,UAAU8vsC,aAAe,SAAU3qrC,GACpD,IAAIo8f,EAAWjhhB,KAAK6kB,GAAO,IAAI,GAE/B,OADA7kB,KAAKo7T,MAAMj2S,IAAI87f,GACRA,CACT,EAEAourB,EAAmB3vsC,UAAUmysC,gBAAkB,SAAUziF,EAAYh0zB,EAAO3wH,EAAM47zB,GAChF,IAAImuD,EAAa/p3B,EAAK+k3B,YAEtB,GAAKnpD,EAAcljgC,IAAI,CAAC,YAAa,SAArC,CAIA,IAAIm8C,EAAO,IAAI,GAAa,CAC1BgjL,MAAO,CACLslF,GAAI4swB,EAAW,GACf9i4B,GAAI,EACJoL,GAAI033B,EAAW,GACf/87B,GAAI,GAENpjH,MAAOg1Y,EAAO,CACZo6X,QAAS,SACR4iP,EAAczu0B,SAAS,aAAag0zB,gBACvCx3gB,QAAQ,EACRr3S,GAAI,IAENq+H,EAAMj2S,IAAIm6B,GACV,IAAIwypC,EAAe9xsC,KAAK+xsC,cAAgB,IAAI,GAAa,CACvDzv+B,MAAO,CACLslF,GAAI4swB,EAAW,GACf133B,GAAI98L,KAAKgysC,gBAAkBhysC,KAAKgysC,gBAAgB/tsC,EAAIuwjC,EAAW,GAC/D9i4B,GAAI,EACJj6D,GAAI,GAENpjH,MAAO,EAAS,CACdovwB,QAAS,QACTpxc,UAAW/yR,EAAKjrC,MAAMg+T,WACrBg0rB,EAAczu0B,SAAS,CAAC,WAAY,cAAcg0zB,gBACrDx3gB,QAAQ,EACRr3S,GAAI,IAENq+H,EAAMj2S,IAAI2srC,EA9BV,CA+BF,EAEAzC,EAAmB3vsC,UAAUuysC,gBAAkB,SAAU7iF,EAAYh0zB,EAAO3wH,EAAM47zB,GAChF,IAAI358B,EAAQ1sD,KAERwP,EAAO62/B,EAAc7h4B,UAErBl+F,EAAQmkK,EAAK3oG,MAAM0ytB,WACvBx0zB,KAAKkysC,aAAe,GAEpB,EAAK5rqC,GAAO,SAAUgrR,GACpB,IAAI+jyB,EAAY5q5B,EAAKos3B,YAAYvlwB,EAAKnwT,OAClCuj/B,EAAYl1+B,EAAKqhgC,aAAav/sB,EAAKnwT,OACnCykqC,EAAiBlhL,EAAU9szB,SAAS,aACpCu6gC,EAAkBztN,EAAU9szB,SAAS,CAAC,WAAY,cAClDw6gC,EAAqB1tN,EAAU9szB,SAAS,CAAC,WAAY,cACrDy6gC,EAAY,CACdpusC,EAAGoxlC,EACHrylC,EAAG,EACHy2nC,QAASp2nC,GAAKqpD,EAAM4lpC,gBAAiB5lpC,EAAO4kQ,EAAKnwT,QAE/C04I,EAAK04jC,GAAW7tN,EAAWkhL,EAAgBxq2B,EAAOi34B,GACtDx4jC,EAAG270B,YAAY,YAAYnh9B,MAAQ89rC,EAAgBpmN,eACnDly2B,EAAG270B,YAAY,YAAYnh9B,MAAQ+9rC,EAAmBrmN,eACtD/H,GAAoBnq2B,GACpB,IAAIsj2B,EAASH,GAAUnj2B,GAEnB6q2B,EAAUvh/B,IAAI,YAChBg6+B,EAAO930B,UAAYisJ,EAAKnwT,MACxBg8+B,EAAOr/K,UAAYuoM,GAEnBlpB,EAAO930B,UAAY830B,EAAOr/K,UAAY,KAGxCpxwB,EAAMwlpC,aAAarwsC,KAAKg4I,EAC1B,GACF,EAEAw1jC,EAAmB3vsC,UAAUiwsC,iBAAmB,SAAUvgF,EAAYh0zB,EAAO3wH,EAAM47zB,GACjF,IAAI358B,EAAQ1sD,KAIZ,GAFiByqM,EAAKu13B,gBAEN78jC,IAAI,QAApB,CAIA,IAAIqM,EAAO62/B,EAAc7h4B,UACrB52C,EAAS68G,EAAKu73B,gBAClBhmkC,KAAKwysC,YAAc,GACnB,EAAK5knC,GAAQ,SAAUkstB,GAErB,IAAIz0oB,EAAYy0oB,EAAU2gR,UACtB/1E,EAAYl1+B,EAAKqhgC,aAAaxr2B,GAC9B0l1B,EAAmBrG,EAAU9szB,SAAS,SACtC66gC,EAAkB/tN,EAAU9szB,SAAS,CAAC,WAAY,UAClD86gC,EAAqBhuN,EAAU9szB,SAAS,CAAC,WAAY,UACrDy95B,EAAY5q5B,EAAKos3B,YAAY/8Q,EAAU2gR,WACvCv/G,EAAS,IAAI,GAAa,CAC5Bj38B,EAAGoxlC,EACHrylC,EAAG,EACHujH,SAAU6ogC,EAAWtnV,cAAgBsnV,EAAW7ogC,SAChDkzgC,QAASp2nC,GAAKqpD,EAAM4lpC,gBAAiB5lpC,EAAO24G,GAC5C+uU,QAAQ,EACR//d,MAAOg0+B,GAAgB0C,EAAkB,CACvC369B,KAAM0pxB,EAAUuqR,eAChB9/S,MAAO6qW,EAAWyhF,WAClB19d,cAAei8Y,EAAW0hF,kBAG9B51P,EAAOsa,YAAY,YAAYnh9B,MAAQg0+B,GAAgBoqN,GACvDv3P,EAAOsa,YAAY,YAAYnh9B,MAAQg0+B,GAAgBqqN,GACvDt34B,EAAMj2S,IAAI+17B,GACV8oC,GAAoB9oC,GACpBk0P,GAAoBl0P,GAAQ71yB,UAAYA,EAExC34G,EAAM8lpC,YAAY3wsC,KAAKq58B,EACzB,GAhCA,CAiCF,EAEAm0P,EAAmB3vsC,UAAUizsC,eAAiB,SAAUvjF,EAAYh0zB,EAAO3wH,EAAM47zB,GAC/E,IAAIqqM,EAActhF,EAAWshF,YACzBnqlC,EAAW6ogC,EAAW7ogC,SACtBg+3B,EAAY8hB,EAAczu0B,SAAS,gBAAgBm0zB,eACnDmqM,EAAa7vL,EAAczu0B,SAAS,CAAC,WAAY,iBAAiBm0zB,eAClE6mN,EAAYvsM,EAAc4nM,eAC1B5vc,EAAUgoQ,EAAcljgC,IAAI,WAAW,GAK3C,SAAS0vsC,EAAQl0qC,EAAUszf,EAAUwnmB,EAASq5E,GAC5C,GAAKn0qC,EAAL,CAIA,IAAIo0qC,EAAWlhP,GAAavnB,GAAU+7D,EAAcljgC,IAAI,CAAC,eAAgB8uhB,EAAW,YAAay+qB,GAAcA,GAE3GsC,EAsMV,SAAyB3sM,EAAe4sM,EAASv/mC,EAAMr3C,GACrD,IAAIhoC,EAAQgoC,EAAKhoC,MACbo8N,EAAO,GAAmB41xB,EAAcljgC,IAAI,CAAC,eAAgB8vsC,IAAW52pC,GAAQ,CAAC,EAAG,IAAI,GAAaq3C,EAAK,GAAIA,EAAK,GAAIA,EAAK,GAAIA,EAAK,KAMzI,OAJIr/E,GACFo8N,EAAK6zL,SAASjwZ,GAGTo8N,CACT,CA/MgByi+B,CAAgB7sM,EAAep0e,EAAW,OADzC,CAAC,GAAI8grB,EAAW,EAAGA,EAAUA,GAC0B,CAChE9usC,EAAG06B,EAAS,GACZ37B,EAAG27B,EAAS,GACZguJ,QAAS+jhC,EAAc,EACvB9jhC,QAAS,EACTrmE,SAAUuslC,GAAcvslC,EAAW,EACnCiw1B,WAAW,EACXni8B,MAAOkw+B,EACPk1I,QAASA,IAEXu5E,EAAIx9O,YAAY,YAAYnh9B,MAAQ6hrC,EACpC963B,EAAMj2S,IAAI6trC,GACVhvN,GAAoBgvN,EAhBpB,CAiBF,CAxBAH,EAAQzjF,EAAW8gF,gBAAiB,OAAQ7ssC,GAAKrD,KAAKsysC,gBAAiBtysC,KAAMq+vB,EAAU,IAAM,MAC7Fw0c,EAAQzjF,EAAW6gF,gBAAiB,OAAQ5ssC,GAAKrD,KAAKsysC,gBAAiBtysC,KAAMq+vB,EAAU,IAAM,MAC7Fw0c,EAAQzjF,EAAW4gF,aAAc4C,EAAY,OAAS,OAAQvvsC,GAAKrD,KAAKmzsC,iBAAkBnzsC,MAAO4ysC,IAAY,EAuB/G,EAEAvD,EAAmB3vsC,UAAU0zsC,sBAAwB,SAAUhkF,EAAYh0zB,EAAO3wH,EAAM47zB,GACtF,IAAI72/B,EAAO62/B,EAAc7h4B,UACrB6/L,EAAegisB,EAAcC,kBAC7BgyI,EAAe9ooC,EAAKqhgC,aAAaxssB,GAAczsI,SAAS,mBACxD7vL,EAAK/H,KACLkpB,EAAW,CACbmqrC,SAAU,SAAUn4tB,GAClBA,EAAQ30F,WAAY,EACpB20F,EAAQtjY,MAAQv0G,GAAK0E,EAAGursC,mBAAoBvrsC,GAC5Cmze,EAAQwqqB,UAAYripC,GAAK0E,EAAGwrsC,sBAAuBxrsC,GACnDyrsC,GAAct4tB,EAASnze,EAAGgqsC,cAAe1t4B,EAAc55H,EAAM47zB,GAAe,EAC9E,EACAh64B,SAAU,SAAU6uX,GAClBs4tB,GAAct4tB,EAASnze,EAAGgqsC,cAAe1t4B,EAAc55H,EAAM47zB,EAC/D,GAGFrmgC,KAAKgysC,gBAAkBO,GAAWj6D,EAAcA,EAAct4oC,KAAKmvnC,WAAY,CAAC,EAAGnvnC,KAAKgysC,gBAAiB9orC,EAC3G,EAEAmmrC,EAAmB3vsC,UAAUyzsC,iBAAmB,SAAU5sf,GACxDvmtB,KAAK8vsC,cAEL9vsC,KAAKivC,IAAIu1/B,eAAe,CACtBj4hC,KAAM,qBACNqmsC,UAAWrsf,EACXxosB,KAAM/d,KAAKozV,KAEf,EAEAi82B,EAAmB3vsC,UAAU4zsC,mBAAqB,SAAU9+jC,EAAIH,EAAIl1I,GAClEa,KAAK8vsC,cAEL9vsC,KAAKyzsC,uBAAuB,CAACt0sC,EAAEg5H,QAASh5H,EAAEi5H,SAC5C,EAEAi3kC,EAAmB3vsC,UAAU6zsC,sBAAwB,SAAUp0sC,GAC7Da,KAAKyzsC,uBAAuB,CAACt0sC,EAAEg5H,QAASh5H,EAAEi5H,UAAU,EACtD,EAEAi3kC,EAAmB3vsC,UAAU+zsC,uBAAyB,SAAUC,EAAUh1qC,GACxE,IAAIi1qC,EAAU3zsC,KAAK4zsC,aAAaF,GAAU,GAGtCl/I,EAAa,GADNx0jC,KAAK4irC,MACqBpzH,YAAYztjC,SACjD4xsC,EAAUn/I,EAAW,KAAOm/I,EAAUn/I,EAAW,IACjDm/I,EAAUn/I,EAAW,KAAOm/I,EAAUn/I,EAAW,IACjDx0jC,KAAKgysC,gBAAgB/tsC,EAAI0vsC,EAEzB3zsC,KAAKgysC,gBAAgBt/O,aAErB,IAAIo/O,EAAe9xsC,KAAK+xsC,cAEpBD,IACFA,EAAaxv+B,MAAMxlC,GAAK62gC,EACxB7B,EAAahsc,SAGf,IAAI+tc,EAAkB7zsC,KAAK8zsC,iBAAiBH,GAExCttM,EAAgBrmgC,KAAK+0H,OAErBr2F,GAAWm1qC,IAAoBxtM,EAAcC,mBAAqBD,EAAcljgC,IAAI,cACtFnD,KAAKsysC,gBAAgBuB,EAEzB,EAEAxE,EAAmB3vsC,UAAUkwsC,YAAc,WACzC,IAAIljpC,EAAQ1sD,KAEZA,KAAK8vsC,cAED9vsC,KAAK+0H,MAAMk5kC,iBACbjusC,KAAK+zsC,OAASlurC,YAAW,WAEvB,IAAIwg/B,EAAgB358B,EAAMqoE,MAE1BroE,EAAM4lpC,gBAAgBjsM,EAAcC,mBAAqBD,EAAcljgC,IAAI,UAAU,IAAS,EAAI,GACpG,GAAGnD,KAAK+0H,MAAM5xH,IAAI,iBAEtB,EAEAkssC,EAAmB3vsC,UAAUk0sC,aAAe,SAAU/l+B,GAGpD,OAAO,GAAuBA,EAFlB7tO,KAAKmvnC,WAAWh/J,qBAEiB,EAC/C,EAEAk/O,EAAmB3vsC,UAAUo0sC,iBAAmB,SAAUE,GACxD,IAEIH,EAFArksC,EAAOxP,KAAK+0H,MAAMyP,UAClBu1N,EAAOh6R,IAEP0qI,EAAOzqM,KAAK4irC,MAUhB,OATApzqC,EAAKwywB,KAAK,CAAC,UAAU,SAAU7gxB,EAAOkkK,GACpC,IAAIpG,EAAQwrC,EAAKos3B,YAAY11jC,GACzBwB,EAAIE,KAAKmjH,IAAIi5C,EAAQ+0iC,GAErBrxsC,EAAIo3V,IACNA,EAAOp3V,EACPkxsC,EAAkBxuiC,EAEtB,IACOwuiC,CACT,EAEAxE,EAAmB3vsC,UAAUowsC,YAAc,WACrC9vsC,KAAK+zsC,SACPrnrC,aAAa1sB,KAAK+zsC,QAClB/zsC,KAAK+zsC,OAAS,KAElB,EAEA1E,EAAmB3vsC,UAAU4ysC,gBAAkB,SAAU1j9B,GACvD,IAAIy1E,EAAerkU,KAAK+0H,MAAMux4B,kBAEZ,MAAd13wB,EACFA,EAAYy1E,EAAe,EACJ,MAAdz1E,IACTA,EAAYy1E,EAAe,GAG7BrkU,KAAKivC,IAAIu1/B,eAAe,CACtBj4hC,KAAM,iBACN83T,aAAcz1E,EACd7wO,KAAM/d,KAAKozV,KAEf,EAEAi82B,EAAmB3vsC,UAAUmwsC,mBAAqB,WAChD,IAAIxr4B,EAAerkU,KAAK+0H,MAAMux4B,kBAC1B2tM,EAAcj0sC,KAAKkysC,aACnBgC,EAAal0sC,KAAKwysC,YAEtB,GAAIyB,EACF,IAAK,IAAIrzsC,EAAI,EAAGA,EAAIqzsC,EAAY5zsC,OAAQO,IACtCqzsC,GAAeA,EAAYrzsC,IAAMqzsC,EAAYrzsC,GAAGs29B,YAAY,WAAYt29B,EAAIyjU,GAIhF,GAAI6v4B,EACF,IAAStzsC,EAAI,EAAGA,EAAIszsC,EAAW7zsC,OAAQO,IACrCszsC,GAAcA,EAAWtzsC,IAAMszsC,EAAWtzsC,GAAGs29B,YAAY,WAAYk4O,GAAoB8E,EAAWtzsC,IAAIykK,WAAag/J,EAG3H,EAEAgr4B,EAAmB9isC,KAAO,kBACnB8isC,CACT,CA3iBA,CA2iBE,IAkDF,SAASkD,GAAWtuJ,EAAW2hH,EAAgBxq2B,EAAOglO,EAAKlmC,EAAQhxe,GACjE,IAAIqkG,EAAQq4iC,EAAeziqC,IAAI,SAE1B+2f,GAOHA,EAAOusiB,SAASl56B,GAChB6tM,EAAMj2S,IAAI+0e,GAEVhxe,GAAYA,EAASmjG,SAAS6tY,MAR9BA,EAAS,GADQ+pjB,EAAU9gjC,IAAI,WACI,GAAI,EAAG,EAAG,EAAGoqH,IACzC+2S,SAAS,iBAAiB,GACjClpG,EAAMj2S,IAAI+0e,GACVhxe,GAAYA,EAASmqrC,SAASn5sB,IAShC,IAAIqqf,EAAYqhL,EAAe75K,aAAa,CAAC,UAC7C7xf,EAAO51F,SAASiglB,GAEhBnkd,EAAMt/R,EAAM,CACV01sB,WAAW,EACXz5wB,GAAI,KACHqjW,GAAK,GACR,IAAIm4d,EAAamuC,GAAoBud,EAAU9gjC,IAAI,eACnDi9hB,EAAIxna,OAAS2/3B,EAAW,GAAK,EAC7Bn4d,EAAIvna,OAAS0/3B,EAAW,GAAK,EAC7B,IAAIquC,EAAeD,GAAsBsd,EAAU9gjC,IAAI,gBAAiBo1/B,GAEpEquC,IACFxmgB,EAAIn8hB,GAAKm8hB,EAAIn8hB,GAAK,GAAK2iiC,EAAa,GACpCxmgB,EAAIp9hB,GAAKo9hB,EAAIp9hB,GAAK,GAAK4jiC,EAAa,IAGtC,IAAIw9C,EAAengC,EAAU9gjC,IAAI,gBAUjC,OATAi9hB,EAAI75a,UAAY699B,GAAgB,GAAKvhlC,KAAKsmC,GAAK,KAAO,EACtD+wd,EAAO+zB,KAAKmS,GAOZlmC,EAAOugd,kBACAvgd,CACT,CAEA,SAASs5sB,GAAct4tB,EAAS42tB,EAAczsiC,EAAWolC,EAAM47zB,EAAe3wC,GAC5E,IAAIx6e,EAAQo6E,SAAZ,CAIA,IAAIgjlB,EAAejyI,EAAczu0B,SAAS,mBACtC+7gC,EAAUlpgC,EAAKos3B,YAAYxwD,EAAc7h4B,UAAUrhI,IAAI,QAASkiK,IAEpE,GAAIqwzB,IAAgB4iL,EAAan1oC,IAAI,aAAa,GAChD+3e,EAAQ+yC,KAAK,CACXhqhB,EAAG0vsC,EACH3wsC,EAAG,IAEL8usC,GAAgBA,EAAa7jrB,KAAK,CAChC3rT,MAAO,CACLxlC,GAAI62gC,SAGH,CACL,IAAI79O,EAAe,CACjBzw6B,SAAUizlC,EAAan1oC,IAAI,qBAAqB,GAChD0nH,OAAQythC,EAAan1oC,IAAI,mBAAmB,IAE9C+3e,EAAQy9e,cAAc,MAAM,GAC5Bz9e,EAAQ29e,UAAU,CAChB509B,EAAG0vsC,EACH3wsC,EAAG,GACF8y9B,GACHg8O,GAAgBA,EAAaj5O,UAAU,CACrCv2vB,MAAO,CACLxlC,GAAI62gC,IAEL79O,EACL,CA9BA,CA+BF,CAEA,YCtsBe,SAASq+O,GAAqBt2oC,GAC3C,IAAI2s8B,EAAc3s8B,GAAUA,EAAOmtD,SAE9B,GAAew/4B,KAClBA,EAAcA,EAAc,CAACA,GAAe,IAG9C,EAAYA,GAAa,SAAUpqe,GAC5BA,GAQT,SAAuBA,GACrB,IAAI7zhB,EAAO6zhB,EAAI7zhB,KACX6nsC,EAAW,CACb,OAAU,QACV,KAAQ,QAUV,GAPIA,EAAS7nsC,KACX6zhB,EAAImnT,SAAW6sX,EAAS7nsC,UACjB6zhB,EAAI7zhB,MAGb8nsC,GAAaj0qB,GAETr0hB,GAAIq0hB,EAAK,mBAAoB,CAC/B,IAAI2hgB,EAAe3hgB,EAAI2hgB,eAAiB3hgB,EAAI2hgB,aAAe,CAAC,GAEvDh2hC,GAAIg2hC,EAAc,cACrBA,EAAapjgC,SAAWyhgB,EAAIn8H,iBAGA,SAA1B89nB,EAAapjgC,UAAwB5yB,GAAIg2hC,EAAc,UACzDA,EAAa9+sB,MAAO,SACb8+sB,EAAapjgC,iBAGfyhgB,EAAIn8H,eACb,CAEA,EAAYm8H,EAAI5whB,MAAQ,IAAI,SAAU0gpB,GAChC,GAAgBA,KAAc,GAAeA,MAC1CnkpB,GAAImkpB,EAAU,UAAYnkpB,GAAImkpB,EAAU,UAE3CA,EAAS/upB,MAAQ+upB,EAASxlpB,MAG5B2psC,GAAankjB,GAEjB,GACF,CA3CIokjB,CAAcl0qB,EAChB,GACF,CA2CA,SAASi0qB,GAAaj0qB,GACpB,IAAImkd,EAAYnkd,EAAImkd,YAAcnkd,EAAImkd,UAAY,CAAC,GAC/CgwN,EAAoBhwN,EAAU3jB,WAAa2jB,EAAU3jB,SAAW,CAAC,GAEjEv/9B,EAAQ++hB,EAAI/+hB,OAAS++hB,EAAI/+hB,OAAS,CAAC,EACnCmzsC,EAAcnzsC,EAAMgiK,SAAWhiK,EAAMgiK,OAAS,CAAC,GAC/CoxiC,EAAmB,CACrBpxiC,OAAQ,EACRu9zB,SAAU,GAEZ,EAAYv/9B,GAAO,SAAUF,EAAOuJ,GAC7B+psC,EAAiB/psC,IAAUqB,GAAIyosC,EAAa9psC,KAC/C8psC,EAAY9psC,GAAQvJ,EAExB,IAEIozsC,EAAkBlzsC,QAAU0K,GAAI1K,EAAO,cACzCA,EAAMu/9B,SAAW2zO,EAAkBlzsC,aAC5BkzsC,EAAkBlzsC,MAE7B,CAEA,SAAS0K,GAAImhN,EAAK+gU,GAChB,OAAO/gU,EAAIvtN,eAAesuhB,EAC5B,CClFe,SAASymrB,GAAoBhkX,EAAYo0L,GACtD,IAAKp0L,EACH,OAAO,EAKT,IAFA,IAAIikX,EAAehjsC,GAAQ++0B,GAAcA,EAAa,CAACA,GAE9C51e,EAAM,EAAGA,EAAM651B,EAAat0sC,OAAQy6W,IAC3C,GAAI651B,EAAa751B,IAAQ651B,EAAa751B,GAAKgqqB,GACzC,OAAO,EAIX,OAAO,CACT,CCPA,SAAS8vL,GAAUx0qB,GACjBsgc,GAAgBtgc,EAAK,QAAS,CAAC,QACjC,CAGA,IAAI,GAAQ8ic,KAER2xO,GAEJ,SAAUns1B,GAGR,SAASms1B,IACP,IAAInopC,EAAmB,OAAXg8T,GAAmBA,EAAOnoX,MAAMP,KAAMI,YAAcJ,KAQhE,OANA0sD,EAAMngD,KAAOsosC,EAAYtosC,KAKzBmgD,EAAMoopC,eAAgB,EACfpopC,CACT,CAmHA,OA/HAkgX,EAAUioyB,EAAans1B,GAkBvBms1B,EAAYn1sC,UAAUgxD,KAAO,SAAUmN,EAAQghe,EAAaykc,GAO1Dtj+B,KAAKq1/B,qBAAqBx37B,EAAQyl6B,GAElCtj+B,KAAKo//B,aAAavh8B,EAAQyl6B,GAAS,GAAO,EAC5C,EAEAuxO,EAAYn1sC,UAAUom/B,mBAAqB,WACzC,GAAI,EAAIz85B,KACN,OAAO,EAGT,IAAI0rnC,EAAa/0sC,KAAKg1sC,aACtB,OAAOh1sC,KAAKun+B,WAAW,cAAgBwtO,GAAcA,EAAWjvN,oBAClE,EAMA+uN,EAAYn1sC,UAAUus/B,YAAc,SAAUiyM,EAAQ56N,GACpDtj+B,KAAKo//B,aAAa8+L,EAAQ56N,GAAS,GAAO,EAC5C,EAEAuxO,EAAYn1sC,UAAU0//B,aAAe,SAAU8+L,EAAQ56N,EAASwxO,EAAer/M,GAC7E,IAAIv5yB,EAAgBl8M,KAAK8j+B,SAEpBgxO,GACHxxO,EAAQyf,YAAW,SAAUC,GAE3B,IAAIiyN,EAAYjyN,EAAY7/+B,IAAInD,KAAK8j+B,UAAU,GAC3CoxO,EAAc,GAAMlyN,GAAa9myB,GAEhC+4/B,GAAcA,EAAUzlsC,MAKxB0lsC,EA4BHA,EAAY91M,aAAa61M,EAAW3xO,GAAS,IA3BzCmyB,GAEFm/M,GAAUK,GAGZ,EAAYA,EAAUzlsC,MAAM,SAAU4xC,GAEhCA,aAAgB3hD,OAClBm1sC,GAAUxzpC,EAAK,IACfwzpC,GAAUxzpC,EAAK,KAEfwzpC,GAAUxzpC,EAEd,IAKA,EAJA8zpC,EAAcl1sC,KAAKm1sC,4BAA4BF,EAAWj1sC,KAAMsj+B,GAIrC,CACzBQ,SAAU9j+B,KAAK8j+B,SAEfoZ,YAAa8F,EAAY9F,YACzBxy+B,KAAMs4+B,EAAYt4+B,KAClBoqsC,eAAe,IAEjBI,EAAYF,aAAehyN,GAK7B,GAAMA,GAAa9myB,GAAiBg5/B,GAnClC,GAAMlyN,GAAa9myB,GAAiB,IAoCxC,GAAGl8M,KAEP,EAEA60sC,EAAYn1sC,UAAUu3X,cAAgB,SAAU5xN,EAAW4r2B,EAAgBjiwB,GACzE,IAAIx/P,EAAOxP,KAAKwkI,UACZrjI,EAAQnB,KAAKowgC,YAAY/q2B,GACzBg21B,EAAW7r/B,EAAKw4U,QAAQ3iL,GAC5B,OAAO092B,GAAoB,UAAW,CACpClu/B,OAAQ70B,KAAK0K,KACbgppB,OAAQ,CAACqvX,GAAoB,YAAa,CACxCr4gC,KAAM2w/B,EACNl6/B,MAAOA,EACPwjhC,QAAStpB,EACTupB,QAAkB,MAATzjhC,MAGf,EAEA0zsC,EAAYn1sC,UAAU8kI,QAAU,WAC9B,OAAOxkI,KAAKykJ,KACd,EAEAowjC,EAAYn1sC,UAAUo/H,QAAU,SAAUtvH,GACxCxP,KAAKykJ,MAAQj1I,CACf,EAEAqlsC,EAAYO,yBAA2B,SAAUpyN,EACjD9myB,GACE,OAAO,GAAM8myB,GAAa9myB,EAC5B,EAEA24/B,EAAYtosC,KAAO,SACnBsosC,EAAY54iC,aAAe,CAAC,SAAU,OAAQ,QAAS,OAChD44iC,CACT,CAjIA,CAiIEnojC,IAEF,EAAamojC,GAAa3kM,GAAgBxwgC,WAC1C,YCvGA,GAzCA,SAAUgpX,GAGR,SAAS2s1B,IACP,IAAI3opC,EAAmB,OAAXg8T,GAAmBA,EAAOnoX,MAAMP,KAAMI,YAAcJ,KAGhE,OADA0sD,EAAMngD,KAAO8osC,EAAe9osC,KACrBmgD,CACT,CA8BA,OArCAkgX,EAAUyoyB,EAAgB3s1B,GAS1B2s1B,EAAe31sC,UAAUy1sC,4BAA8B,SAAUF,EAAWK,EAAmBhyO,GAC7F,OAAO,IAAI+xO,EAAeJ,EAAWK,EAAmBhyO,EAC1D,EAEA+xO,EAAe9osC,KAAO,YACtB8osC,EAAez0qB,cAAgB,CAE7Bj7hB,EAAG,EACHu0f,OAAQ,MACRq+f,WAAY,GAGZl62B,QAAS,CACP3/G,QAAS,QAEXr9B,MAAO,CACL4hV,MAAM,EACNtkT,SAAU,UAEZ4l9B,UAAW,CACT/M,YAAa,GAEf5W,SAAU,CACRv/9B,MAAO,CACL4hV,MAAM,KAILoy3B,CACT,CAvCA,CAuCE,ICvCF,SAASE,GAAQn0pC,GACf,QAAS9U,MAAM+9H,WAAWjpH,EAAKn9C,KAAOqoC,MAAM+9H,WAAWjpH,EAAKp+C,IAC9D,CAMA,SAASwysC,GAA+B1wL,EAAYt1gC,EAAMimsC,EAAcC,EAAeC,EAAiBC,GACtG,IAAIC,EAAW,GAIXC,EAHU/nJ,GAAmBv+iC,EAAMkmsC,GAGXlmsC,EAAKytiC,mBAAmB,wBAA0By4J,EAC1Ev0sC,EAAQ40sC,GAAavmsC,EAAMsmsC,EAAahxL,GACxCz/2B,EAAY71J,EAAKqsgC,iBAAiBi6L,EAAa30sC,GAAO,GAC1D00sC,EAASF,GAAmBnmsC,EAAKrM,IAAIsysC,EAAcpwiC,GACnDwwiC,EAASD,GAAoBpmsC,EAAKrM,IAAI2ysC,EAAazwiC,GACnD,IAAI2wiC,EAAgBxmsC,EAAKrM,IAAIuysC,EAAerwiC,GAExC4wG,EAAY,GAAwBzmQ,EAAKrM,IAAIuysC,EAAerwiC,IAOhE,OANA4wG,EAAYpzQ,KAAKgL,IAAIooQ,EAAW,MAEf,IACf4/7B,EAASD,IAAqBC,EAASD,GAAkBxypC,QAAQ6yN,IAG5D,CAAC4/7B,EAAUG,EACpB,CAGA,IAAIC,GAAuB,CACzBposC,IAAKm87B,GAAMwrQ,GAAgC,OAC3C7nsC,IAAKq87B,GAAMwrQ,GAAgC,OAC3Cl9zB,QAAS0xjB,GAAMwrQ,GAAgC,WAC/C1jD,OAAQ9nN,GAAMwrQ,GAAgC,WAQzC,SAASlrjC,GAAc041B,EAAa5h8B,GACzC,GAAKA,EAAL,CAIA,IAAI5xC,EAAOwz+B,EAAYx+2B,UACnB0+2B,EAAWF,EAAYjx3B,iBACvB+54B,EAAO5oB,GAAYA,EAASxq1B,WAKhC,IAnDF,SAAkBt3G,GAChB,OAAQ9U,MAAM+9H,WAAWjpH,EAAKn9C,MAAQqoC,MAAM+9H,WAAWjpH,EAAKp+C,GAC9D,CAiDOkzsC,CAAS90pC,KAAUzvC,GAAQyvC,EAAK69G,QAAUttJ,GAAQm6/B,GAAO,CAC5D,IAAI4kG,EAAW,GAAYtvjC,EAAM5xC,EAAM0z+B,EAAUF,GAKjD,IAFA5h8B,EAAO7wB,EAAM6wB,IAEJ70C,MAAQ0psC,GAAqB70pC,EAAK70C,OAASmkmC,EAASv8C,UAAYu8C,EAASruE,UAAW,CAC3F,IAAIszK,EAAkBn1sC,EAAQsrgC,EAAM4kG,EAASv8C,SAASx8tB,KAClDi+2B,EAAmBp1sC,EAAQsrgC,EAAM4kG,EAASruE,UAAU1qsB,KACpDw+2B,EAAYF,GAAqB70pC,EAAK70C,MAAMiD,EAAMkhmC,EAAS0lG,YAAa1lG,EAAS2lG,aAAcV,EAAiBC,GACpHx0pC,EAAK69G,MAAQk3iC,EAAU,GAGvB/0pC,EAAKjgD,MAAQg1sC,EAAU,EACzB,MAEE/0pC,EAAK69G,MAAQ,CAAe,MAAd79G,EAAKmjI,MAAgBnjI,EAAKmjI,MAAQnjI,EAAK2tnC,WAA0B,MAAd3tnC,EAAKqjI,MAAgBrjI,EAAKqjI,MAAQrjI,EAAK6tnC,UAE5G,CAGA,GAAkB,MAAd7tnC,EAAK69G,OAAkBttJ,GAAQm6/B,GAMjC,IAFA,IAAI7s2B,EAAQ79G,EAAK69G,MAERr+J,EAAI,EAAGA,EAAI,EAAGA,IACjBq1sC,GAAqBh3iC,EAAMr+J,MAC7Bq+J,EAAMr+J,GAAKm1sC,GAAavmsC,EAAMA,EAAK42iC,aAAat6C,EAAKlrgC,IAAKq+J,EAAMr+J,UAPpEwgD,EAAK69G,MAAQ,GAYf,OAAO79G,CA3CP,CA4CF,CACO,SAAS,GAAYA,EAAM5xC,EAAM0z+B,EAAUF,GAChD,IAAI/ihB,EAAM,CAAC,EAcX,OAZuB,MAAnB7+a,EAAKo5Z,YAAuC,MAAjBp5Z,EAAKo1gC,UAClCv2lB,EAAIo2uB,aAAkC,MAAnBj1pC,EAAKo5Z,WAAqBhrc,EAAKq2iC,aAAazkgC,EAAKo5Z,YAAcp5Z,EAAKo1gC,SACvFv2lB,EAAIoikB,UAAYn/C,EAASliI,QAa7B,SAA2BgiI,EAAa2nC,GACtC,IAAIxD,EAAUnkC,EAAYx+2B,UAAU8g2B,iBAAiBqlD,GACrD,OAAOxD,GAAWA,EAAQkC,QAC5B,CAhBqCitL,CAAkBtzN,EAAa/ihB,EAAIo2uB,eACpEp2uB,EAAIk0lB,SAAWjxE,EAASkzE,aAAan2lB,EAAIoikB,WACzCpikB,EAAIm2uB,YAAc5msC,EAAK42iC,aAAanmlB,EAAIk0lB,SAASx8tB,OAEjDsoI,EAAIk0lB,SAAWnxE,EAAYkmC,cAC3BjpjB,EAAIoikB,UAAYn/C,EAASkzE,aAAan2lB,EAAIk0lB,UAC1Cl0lB,EAAIm2uB,YAAc5msC,EAAK42iC,aAAanmlB,EAAIk0lB,SAASx8tB,KACjDsoI,EAAIo2uB,aAAe7msC,EAAK42iC,aAAanmlB,EAAIoikB,UAAU1qsB,MAG9CsoI,CACT,CAYO,SAAS,GAChBijhB,EAAU9h8B,GAER,QAAO8h8B,GAAYA,EAASuhF,aAAerjhC,EAAK69G,QAAUs2iC,GAAQn0pC,KAAQ8h8B,EAASuhF,YAAYrjhC,EAAK69G,MACtG,CAMO,SAASs3iC,GAA2BC,EAAY1qM,GACrD,OAAO0qM,EAAa,SAAUp1pC,EAAMi78B,EAASh31B,EAAW+21B,GAGtD,OAAOgY,GAFMhY,EAAW,EACtBh78B,EAAK69G,OAAS79G,EAAK69G,MAAMm91B,GAAYh78B,EAAKjgD,MACd2qgC,EAAK1P,GACrC,EAAI,SAAUh78B,EAAMi78B,EAASh31B,EAAW+21B,GACtC,OAAOgY,GAAehz9B,EAAKjgD,MAAO2qgC,EAAK1P,GACzC,CACF,CACO,SAAS25M,GAAavmsC,EAAM6msC,EAAc9psC,GAC/C,GAAa,YAATA,EAAoB,CACtB,IAAIkqsC,EAAQ,EACRC,EAAU,EAOd,OANAlnsC,EAAKwywB,KAAKq0b,GAAc,SAAU34hC,EAAKo9L,GAChCxuU,MAAMoxI,KACT+4hC,GAAS/4hC,EACTg5hC,IAEJ,IACOD,EAAQC,CACjB,CAAO,MAAa,WAATnqsC,EACFiD,EAAKisgC,UAAU46L,GAGf7msC,EAAKivgC,cAAc43L,GAAuB,QAAT9psC,EAAiB,EAAI,EAEjE,CC1JA,IAAI,GAAQ229B,KA2DZ,SAvDA,SAAUx6mB,GAGR,SAASiu1B,IACP,IAAIjqpC,EAAmB,OAAXg8T,GAAmBA,EAAOnoX,MAAMP,KAAMI,YAAcJ,KAGhE,OADA0sD,EAAMngD,KAAOoqsC,EAAWpqsC,KACjBmgD,CACT,CA4CA,OAnDAkgX,EAAU+pyB,EAAYju1B,GAStBiu1B,EAAWj3sC,UAAUgxD,KAAO,WAC1B1wD,KAAK42sC,eAAiB1rQ,IACxB,EAEAyrQ,EAAWj3sC,UAAU4uH,OAAS,SAAU4mlC,EAAa5xO,EAASr07B,GAC5D,IAAIyd,EAAQ1sD,KAER42sC,EAAiB52sC,KAAK42sC,eAC1BA,EAAe50b,MAAK,SAAU5guB,GAC5B,GAAMA,GAAMys8B,MAAO,CACrB,IACAvqB,EAAQyf,YAAW,SAAUC,GAC3B,IAAIkyN,EAAc,GAAYE,yBAAyBpyN,EAAat27B,EAAMngD,MAC1E2osC,GAAexopC,EAAMwk/B,aAAaluD,EAAakyN,EAAa5xO,EAASr07B,EACvE,IACA2nqC,EAAe50b,MAAK,SAAU5guB,IAC3B,GAAMA,GAAMys8B,MAAQnh8B,EAAM0uQ,MAAMvoS,OAAOuuB,EAAKg6Q,MAC/C,GACF,EAEAu74B,EAAWj3sC,UAAUm3sC,SAAW,SAAUC,GACxC,GAAMA,GAAWjpN,MAAO,CAC1B,EAEA8oN,EAAWj3sC,UAAU0i/B,iBAAmB,SAAU20N,EAAiBnrL,GACjE,IAAIl/9B,EAAQ1sD,KAEZ,EAAK+2sC,GAAiB,SAAU/zN,GAC9B,IAAIkyN,EAAc,GAAYE,yBAAyBpyN,EAAat27B,EAAMngD,MAEtE2osC,GACSA,EAAY1wkC,UAClBq/2B,mBAAkB,SAAUhq2B,GAC3BA,IACF+x4B,EAAStqC,GAAUzn2B,GAAM0n2B,GAAU1n2B,GAEvC,GAEJ,GACF,EAEA88jC,EAAWpqsC,KAAO,SACXoqsC,CACT,CArDA,CAqDE,ICpDF,SAASK,GAAmB1tM,EAAQtmB,EAAa/z8B,GAC/C,IAAIi08B,EAAWF,EAAYjx3B,iBAC3Bu34B,EAAOtnP,MAAK,SAAUlna,GACpB,IACI3lO,EADAuv2B,EAAY4kB,EAAOuH,aAAa/1pB,GAEhCm81B,EAAM,GAAwBvyN,EAAUvh/B,IAAI,KAAM8rC,EAAIk8L,YACtD+r+B,EAAM,GAAwBxyN,EAAUvh/B,IAAI,KAAM8rC,EAAI+rI,aAE1D,GAAK1uI,MAAM2qqC,IAAS3qqC,MAAM4qqC,IAGrB,GAAIl0N,EAAY4xG,kBAEjBz/8B,EAAQ6t2B,EAAY4xG,kBAAkBtrF,EAAO5sd,UAAU4sd,EAAO5w2B,WAAYoiN,SACrE,GAAIoooB,EAAU,CACnB,IAAIj/+B,EAAIqlgC,EAAOnmgC,IAAI+/+B,EAASxq1B,WAAW,GAAIoiN,GACvC93W,EAAIsmgC,EAAOnmgC,IAAI+/+B,EAASxq1B,WAAW,GAAIoiN,GAC3C3lO,EAAQ+t2B,EAASy0E,YAAY,CAAC1zjC,EAAGjB,GACnC,OATAmyI,EAAQ,CAAC8hkC,EAAKC,GAYX5qqC,MAAM2qqC,KACT9hkC,EAAM,GAAK8hkC,GAGR3qqC,MAAM4qqC,KACT/hkC,EAAM,GAAK+hkC,GAGb5tM,EAAOu/C,cAAc/tsB,EAAK3lO,EAC5B,GACF,CAmIA,SA/HA,SAAUuzO,GAGR,SAASyu1B,IACP,IAAIzqpC,EAAmB,OAAXg8T,GAAmBA,EAAOnoX,MAAMP,KAAMI,YAAcJ,KAGhE,OADA0sD,EAAMngD,KAAO4qsC,EAAc5qsC,KACpBmgD,CACT,CAoFA,OA3FAkgX,EAAUuqyB,EAAezu1B,GASzByu1B,EAAcz3sC,UAAU+68B,gBAAkB,SAAU28P,EAAgB9zO,EAASr07B,GAC3Eq07B,EAAQyf,YAAW,SAAUC,GAC3B,IAAIq0N,EAAU,GAAYjC,yBAAyBpyN,EAAa,aAE5Dq0N,IACFL,GAAmBK,EAAQ7ykC,UAAWw+2B,EAAa/z8B,GACnDjvC,KAAK42sC,eAAezzsC,IAAI6/+B,EAAYz39B,IAAIkggC,eAE5C,GAAGzrhC,KACL,EAEAm3sC,EAAcz3sC,UAAUwxiC,aAAe,SAAUluD,EAAaq0N,EAAS/zO,EAASr07B,GAC9E,IAAIi08B,EAAWF,EAAYjx3B,iBACvBgrpB,EAAWimO,EAAYz39B,GACvBitpC,EAAax1L,EAAYx+2B,UACzB8ykC,EAAgBt3sC,KAAK42sC,eACrB1pH,EAAaoqH,EAAcn0sC,IAAI45wB,IAAau6b,EAAcrrsC,IAAI8wwB,EAAU,IAAI,IAC5EusP,EAoER,SAAoBpmB,EAAUF,EAAaq0N,GACzC,IAAIE,EAGFA,EADEr0N,EACe7z9B,EAAI6z9B,GAAYA,EAASxq1B,YAAY,SAAU2w3B,GAG9D,OAAOhgoB,EAAOA,EAAO,CAAC,EAFX25lB,EAAYx+2B,UAAU8g2B,iBAAiB0d,EAAYx+2B,UAAU4h7B,aAAa/8B,KAAc,CAAC,GAEpE,CAC9B3+gC,KAAM2+gC,EAEN/O,YAAa,MAEjB,IAEiB,CAAC,CAChB5vgC,KAAM,QACN6B,KAAM,UAIV,IAAI+8/B,EAAS,IAAI,GAAWiuM,EAAgBF,GACxCG,EAAUnorC,EAAIgorC,EAAQl0sC,IAAI,QAAS6m8B,GAAM,GAA4Bg5C,IAErEE,IACFs0N,EAAU3qrC,GAAO2qrC,EAASxtQ,GAAM,GAAyBk5C,KAG3D,IAAIs2B,EAAiB,KAA0Ct2B,EAAUq0N,GAEzE,OADAjuM,EAAOnwkB,SAASq+wB,EAAS,KAAMh+L,GACxBlQ,CACT,CAlGiBmuM,CAAWv0N,EAAUF,EAAaq0N,GAE/CA,EAAQv4kC,QAAQwq4B,GAChB0tM,GAAmBK,EAAQ7ykC,UAAWw+2B,EAAa/z8B,GACnDq69B,EAAOtnP,MAAK,SAAUlna,GACpB,IAAI4poB,EAAY4kB,EAAOuH,aAAa/1pB,GAChCo/I,EAASwqf,EAAUnd,WAAW,UAC9BgxB,EAAa7T,EAAUnd,WAAW,cAClC68G,EAAe1/F,EAAUnd,WAAW,gBACpCq/D,EAAeliD,EAAUnd,WAAW,gBACpCu8D,EAAmBp/C,EAAUnd,WAAW,oBAE5C,GAAIviuB,GAAWk1P,IAAWl1P,GAAWuzvB,IAAevzvB,GAAWo/0B,IAAiBp/0B,GAAW4hyB,GAAe,CACxG,IAAIrrB,EAAS87L,EAAQjnM,YAAYt1pB,GAC7B4grB,EAAa27K,EAAQlnM,cAAcr1pB,GAEnC91G,GAAWk1P,KACbA,EAASA,EAAOqhhB,EAAQmgB,IAGtB12xB,GAAWuzvB,KAEbA,EAAaA,EAAWgjB,EAAQmgB,IAG9B12xB,GAAWo/0B,KACbA,EAAeA,EAAa7oE,EAAQmgB,IAGlC12xB,GAAW4hyB,KACbA,EAAeA,EAAarrB,EAAQmgB,GAExC,CAEA,IAAIrnhC,EAAQqw+B,EAAU9szB,SAAS,aAAam0zB,eACxCx+3B,EAAQ226B,GAAkBs0I,EAAY,SAErCnkqC,EAAM+oH,OACT/oH,EAAM+oH,KAAO7P,GAGf+74B,EAAOqyB,cAAc7grB,EAAK,CACxBo/I,OAAQA,EACRq+f,WAAYA,EACZ6rF,aAAcA,EACdx9C,aAAcA,EACd9C,iBAAkBA,EAClBzvhC,MAAOA,GAEX,IAEA64kC,EAAWv6hB,WAAW22c,GACtBtpgC,KAAKo7T,MAAMj2S,IAAI+nkC,EAAW9xxB,OAG1BkusB,EAAOzlB,mBAAkB,SAAUhq2B,GACjCA,EAAGgsD,UAAS,SAAU37G,GACpB8y5B,GAAU9y5B,GAAO4zuB,UAAYu5Y,CAC/B,GACF,IACAr3sC,KAAK62sC,SAAS3pH,GACdA,EAAW9xxB,MAAMg5K,OAASijuB,EAAQl0sC,IAAI,WAAa6/+B,EAAY7/+B,IAAI,SACrE,EAEAg0sC,EAAc5qsC,KAAO,YACd4qsC,CACT,CA7FA,CA6FE,ICvFF,GA/CA,SAAUzu1B,GAGR,SAASgv1B,IACP,IAAIhrpC,EAAmB,OAAXg8T,GAAmBA,EAAOnoX,MAAMP,KAAMI,YAAcJ,KAGhE,OADA0sD,EAAMngD,KAAOmrsC,EAAcnrsC,KACpBmgD,CACT,CAoCA,OA3CAkgX,EAAU8qyB,EAAehv1B,GASzBgv1B,EAAch4sC,UAAUy1sC,4BAA8B,SAAUF,EAAWK,EAAmBhyO,GAC5F,OAAO,IAAIo0O,EAAczC,EAAWK,EAAmBhyO,EACzD,EAEAo0O,EAAcnrsC,KAAO,WACrBmrsC,EAAc92qB,cAAgB,CAE5Bj7hB,EAAG,EACHu0f,OAAQ,CAAC,SAAU,SACnBq+f,WAAY,CAAC,EAAG,IAEhBquC,aAAc,EACd3wxB,UAAW,EACX53H,QAAS,CACP3/G,QAAS,QAEXr9B,MAAO,CACL4hV,MAAM,EACNtkT,SAAU,MACVsqH,SAAU,GAEZkplB,UAAW,CACT5luB,KAAM,UAERq09B,SAAU,CACRv/9B,MAAO,CACL4hV,MAAM,GAERkvZ,UAAW,CACTpzsB,MAAO,IAGX659B,gBAAiB,UAEZ8+M,CACT,CA7CA,CA6CE,ICrCF,IAAI,GAAQx0O,KAERy0O,GAAoB,SAAU30N,EAAaE,EAAU00N,EAASx2pC,GAChE,IACIy2pC,EADArosC,EAAOwz+B,EAAYx+2B,UAGvB,GAAK7yH,GAAQyvC,GAuDXy2pC,EAAYz2pC,MAvDM,CAElB,IAAI02pC,EAAS12pC,EAAK70C,KAElB,GAAe,QAAXursC,GAA+B,QAAXA,GAA+B,YAAXA,GAAmC,WAAXA,GAInD,MAAd12pC,EAAKmjI,OAA+B,MAAdnjI,EAAKqjI,MAAe,CAC3C,IAAI492B,OAAY,EACZlhiC,OAAQ,EAEZ,GAAkB,MAAdigD,EAAKqjI,OAA+B,MAAdrjI,EAAKmjI,MAC7B892B,EAAYn/C,EAASliI,QAAsB,MAAd5/zB,EAAKqjI,MAAgB,IAAM,KACxDtjL,EAAQowkB,GAASnwhB,EAAKqjI,MAAOrjI,EAAKmjI,WAC7B,CACL,IAAIms7B,EAAW,GAAyBtvjC,EAAM5xC,EAAM0z+B,EAAUF,GAC9Dq/C,EAAYquE,EAASruE,UAErBlhiC,EAAQ,GAA0BqO,EADfy+iC,GAAoBz+iC,EAAMkhmC,EAAS2lG,cACAyB,EACxD,CAEA,IAAIt9vB,EAA+B,MAAlB6nlB,EAAU1qsB,IAAc,EAAI,EACzCo0vB,EAAY,EAAIvxoB,EAEhBu9vB,EAASxnrC,EAAM6wB,GACf42pC,EAAO,CACT/4iC,MAAO,IAET84iC,EAAOxrsC,KAAO,KACdwrsC,EAAO94iC,MAAQ,GACf84iC,EAAO94iC,MAAM8s7B,IAAa,IAC1BisH,EAAK/4iC,MAAM8s7B,GAAahshC,IACxB,IAAIk2M,EAAY2h8B,EAAQz0sC,IAAI,aAExB8yQ,GAAa,GAAK3yN,GAASniD,KAC7BA,GAASA,EAAMiiD,QAAQvgD,KAAKgL,IAAIooQ,EAAW,MAG7C8h8B,EAAO94iC,MAAMu7S,GAAcw9vB,EAAK/4iC,MAAMu7S,GAAcr5c,EACpD02sC,EAAY,CAACE,EAAQC,EAAM,CACzBzrsC,KAAMursC,EACNt9vB,WAAYp5Z,EAAKo5Z,WAEjBr5c,MAAOA,GAEX,MAME02sC,EAAY,EAEhB,CAIA,IAAII,EAAiB,CAAC,GAA2Bj1N,EAAa60N,EAAU,IAAK,GAA2B70N,EAAa60N,EAAU,IAAKxuzB,EAAO,CAAC,EAAGwuzB,EAAU,KAMzJ,OAJAI,EAAe,GAAG1rsC,KAAO0rsC,EAAe,GAAG1rsC,MAAQ,KAEnDu0P,EAAMm38B,EAAe,GAAIA,EAAe,IACxCn38B,EAAMm38B,EAAe,GAAIA,EAAe,IACjCA,CACT,EAEA,SAASC,GAAWx6hC,GAClB,OAAQpxI,MAAMoxI,KAASh2I,SAASg2I,EAClC,CAGA,SAASy6hC,GAAqB/7M,EAAUg8M,EAAWzE,EAASzwN,GAC1D,IAAIm1N,EAAgB,EAAIj8M,EACpBC,EAAUnZ,EAASxq1B,WAAW0j2B,GAClC,OAAO87M,GAAWE,EAAUC,KAAmBH,GAAWvE,EAAQ0E,KAAmBD,EAAUh8M,KAAcu3M,EAAQv3M,IAAalZ,EAASliI,QAAQq7I,GAASooE,YAAY2zI,EAAUh8M,GACpL,CAEA,SAASk8M,GAAep1N,EAAU9h8B,GAChC,GAAsB,gBAAlB8h8B,EAAS32+B,KAAwB,CACnC,IAAI6rsC,EAAYh3pC,EAAK,GAAG69G,MACpB00iC,EAAUvypC,EAAK,GAAG69G,MAOtB,GAAIm5iC,GAAazE,IAAYwE,GAAqB,EAAGC,EAAWzE,EAASzwN,IAAai1N,GAAqB,EAAGC,EAAWzE,EAASzwN,IAChI,OAAO,CAEX,CAEA,OAAO,GAAwBA,EAAU9h8B,EAAK,KAAO,GAAwB8h8B,EAAU9h8B,EAAK,GAC9F,CAEA,SAASm3pC,GAA4B/osC,EAAMsrW,EAAKmroB,EAAQjD,EAAa/z8B,GACnE,IAEIkmG,EAFA+t2B,EAAWF,EAAYjx3B,iBACvB2y3B,EAAYl1+B,EAAKqhgC,aAAa/1pB,GAE9Bm81B,EAAM,GAAwBvyN,EAAUvh/B,IAAI,KAAM8rC,EAAIk8L,YACtD+r+B,EAAM,GAAwBxyN,EAAUvh/B,IAAI,KAAM8rC,EAAI+rI,aAE1D,GAAK1uI,MAAM2qqC,IAAS3qqC,MAAM4qqC,GAEnB,CAEL,GAAIl0N,EAAY4xG,kBAEdz/8B,EAAQ6t2B,EAAY4xG,kBAAkBpllC,EAAKktiB,UAAUltiB,EAAKkpJ,WAAYoiN,QACjE,CACL,IAAIgxpB,EAAO5oB,EAASxq1B,WAChBz0J,EAAIuL,EAAKrM,IAAI2ogC,EAAK,GAAIhxpB,GACtB93W,EAAIwM,EAAKrM,IAAI2ogC,EAAK,GAAIhxpB,GAC1B3lO,EAAQ+t2B,EAASy0E,YAAY,CAAC1zjC,EAAGjB,GACnC,CAWA,GAAIoolC,GAAuBloG,EAAU,eAAgB,CAEnD,IAAI3+zB,EAAQ2+zB,EAASliI,QAAQ,KACzBv8rB,EAAQy+zB,EAASliI,QAAQ,KACzB8qJ,EAAO5oB,EAASxq1B,WAEhBw/iC,GAAW1osC,EAAKrM,IAAI2ogC,EAAK,GAAIhxpB,IAC/B3lO,EAAM,GAAKovC,EAAMqy4B,cAAcry4B,EAAMir4B,YAAYvpE,EAAS,EAAI,IACrDiyN,GAAW1osC,EAAKrM,IAAI2ogC,EAAK,GAAIhxpB,MACtC3lO,EAAM,GAAKsvC,EAAMmy4B,cAAcny4B,EAAM+q4B,YAAYvpE,EAAS,EAAI,IAElE,CAGK358B,MAAM2qqC,KACT9hkC,EAAM,GAAK8hkC,GAGR3qqC,MAAM4qqC,KACT/hkC,EAAM,GAAK+hkC,EAEf,MA3CE/hkC,EAAQ,CAAC8hkC,EAAKC,GA6ChB1nsC,EAAKq5iC,cAAc/tsB,EAAK3lO,EAC1B,CAkMA,SA9LA,SAAUuzO,GAGR,SAAS8v1B,IACP,IAAI9rpC,EAAmB,OAAXg8T,GAAmBA,EAAOnoX,MAAMP,KAAMI,YAAcJ,KAGhE,OADA0sD,EAAMngD,KAAOissC,EAAajssC,KACnBmgD,CACT,CAmIA,OA1IAkgX,EAAU4ryB,EAAc9v1B,GASxB8v1B,EAAa94sC,UAAU+68B,gBAAkB,SAAUg+P,EAAen1O,EAASr07B,GACzEq07B,EAAQyf,YAAW,SAAUC,GAC3B,IAAI40N,EAAU,GAAYxC,yBAAyBpyN,EAAa,YAEhE,GAAI40N,EAAS,CACX,IAAIc,EAAWd,EAAQpzkC,UACnBm0kC,EAAa,GAAMf,GAAS75rC,KAC5B66rC,EAAW,GAAMhB,GAAS3+rC,GAE9B0/rC,EAAW32b,MAAK,SAAUlna,GACxBy91B,GAA4BI,EAAY791B,GAAK,EAAMkooB,EAAa/z8B,GAChEspqC,GAA4BK,EAAU991B,GAAK,EAAOkooB,EAAa/z8B,EACjE,IAEAypqC,EAAS12b,MAAK,SAAUlna,GACtB491B,EAAS7vJ,cAAc/tsB,EAAK,CAAC691B,EAAW/vJ,cAAc9tsB,GAAM891B,EAAShwJ,cAAc9tsB,IACrF,IACA96W,KAAK42sC,eAAezzsC,IAAI6/+B,EAAYz39B,IAAIkggC,cAC1C,CACF,GAAGzrhC,KACL,EAEAw4sC,EAAa94sC,UAAUwxiC,aAAe,SAAUluD,EAAa40N,EAASt0O,EAASr07B,GAC7E,IAAIi08B,EAAWF,EAAYjx3B,iBACvBgrpB,EAAWimO,EAAYz39B,GACvBitpC,EAAax1L,EAAYx+2B,UACzBq0kC,EAAc74sC,KAAK42sC,eACnBhmE,EAAWioE,EAAY11sC,IAAI45wB,IAAa87b,EAAY5ssC,IAAI8wwB,EAAU,IAAI,IAC1E/8wB,KAAKo7T,MAAMj2S,IAAIyrnC,EAASx10B,OACxB,IAAImusB,EAuGR,SAAoBrmB,EAAUF,EAAa40N,GACzC,IAAIL,EAGFA,EADEr0N,EACe7z9B,EAAI6z9B,GAAYA,EAASxq1B,YAAY,SAAU2w3B,GAG9D,OAAOhgoB,EAAOA,EAAO,CAAC,EAFX25lB,EAAYx+2B,UAAU8g2B,iBAAiB0d,EAAYx+2B,UAAU4h7B,aAAa/8B,KAAc,CAAC,GAEpE,CAC9B3+gC,KAAM2+gC,EAEN/O,YAAa,MAEjB,IAEiB,CAAC,CAChB5vgC,KAAM,QACN6B,KAAM,UAIV,IAAIussC,EAAW,IAAI,GAAWvB,EAAgBK,GAC1CpukC,EAAS,IAAI,GAAW+tkC,EAAgBK,GAExCplW,EAAW,IAAI,GAAW,GAAIolW,GAC9BmB,EAAU1prC,EAAIuorC,EAAQz0sC,IAAI,QAAS6m8B,GAAM2tQ,GAAmB30N,EAAaE,EAAU00N,IAEnF10N,IACF61N,EAAUlsrC,GAAOksrC,EAAS/uQ,GAAMsuQ,GAAgBp1N,KAGlD,IAAIs2B,EAAiB,KAA0Ct2B,EAAUq0N,GAWzE,OAVAuB,EAAS3/wB,SAAS9pa,EAAI0prC,GAAS,SAAU33pC,GACvC,OAAOA,EAAK,EACd,IAAI,KAAMo49B,GACVhw4B,EAAO2vT,SAAS9pa,EAAI0prC,GAAS,SAAU33pC,GACrC,OAAOA,EAAK,EACd,IAAI,KAAMo49B,GACVhnK,EAASr5a,SAAS9pa,EAAI0prC,GAAS,SAAU33pC,GACvC,OAAOA,EAAK,EACd,KACAoxzB,EAAS43K,eAAgB,EAClB,CACLrsgC,KAAM+6rC,EACN7/rC,GAAIuwH,EACJlqF,KAAMkzzB,EAEV,CArJiB,CAAW0wI,EAAUF,EAAa40N,GAC3CkB,EAAWvvM,EAAOxr/B,KAClByrH,EAAS+/3B,EAAOtw/B,GAChBu51B,EAAW+2J,EAAOjq9B,KACtB,GAAMs4pC,GAAS75rC,KAAO+6rC,EACtB,GAAMlB,GAAS3+rC,GAAKuwH,EAEpBoukC,EAAQ94kC,QAAQ0zuB,GAKhB,IAAIyzL,EAAa2xK,EAAQz0sC,IAAI,UACzBo1/B,EAAaq/M,EAAQz0sC,IAAI,cACzBihlC,EAAewzH,EAAQz0sC,IAAI,gBAC3ByjiC,EAAegxK,EAAQz0sC,IAAI,gBA2D/B,SAAS61sC,EAA0BxpsC,EAAMsrW,EAAKmroB,GAC5C,IAAIvB,EAAYl1+B,EAAKqhgC,aAAa/1pB,GAClCy91B,GAA4B/osC,EAAMsrW,EAAKmroB,EAAQjD,EAAa/z8B,GAC5D,IAAI56B,EAAQqw+B,EAAU9szB,SAAS,aAAam0zB,eAE1B,MAAd13+B,EAAM+oH,OACR/oH,EAAM+oH,KAAO8m6B,GAAkBs0I,EAAY,UAG7ChpqC,EAAKmshC,cAAc7grB,EAAK,CACtBgprB,iBAAkBp/C,EAAUvh/B,IAAI,oBAEhCyjiC,aAAct8F,GAAUo6C,EAAUvh/B,IAAI,gBAAgB,GAAOyjiC,EAAa3gD,EAAS,EAAI,IACvFm+F,aAAc95I,GAAUo6C,EAAUvh/B,IAAI,gBAAgB,GAAOihlC,EAAan+F,EAAS,EAAI,IAEvFsS,WAAYjuD,GAAUo6C,EAAUvh/B,IAAI,cAAeo1/B,EAAWtS,EAAS,EAAI,IAC3E/rf,OAAQowc,GAAUo6C,EAAUvh/B,IAAI,UAAU,GAAO8iiC,EAAWhgD,EAAS,EAAI,IACzE5x+B,MAAOA,GAEX,CA5EK1C,GAAQs0hC,KACXA,EAAa,CAACA,EAAYA,IAGvBt0hC,GAAQ4m/B,KACXA,EAAa,CAACA,EAAYA,IAGvB5m/B,GAAQyykC,KACXA,EAAe,CAACA,EAAcA,IAG3BzykC,GAAQi1hC,KACXA,EAAe,CAACA,EAAcA,IAIhCr9B,EAAOxr/B,KAAKikwB,MAAK,SAAUlna,GACzBk+1B,EAA0BF,EAAUh+1B,GAAK,GACzCk+1B,EAA0BxvkC,EAAQsxO,GAAK,EACzC,IAEA03f,EAASxwF,MAAK,SAAUlna,GACtB,IAAIq3X,EAAYqgI,EAASq+J,aAAa/1pB,GAAKljL,SAAS,aAAag0zB,eAIjEp5I,EAASq2M,cAAc/tsB,EAAK,CAACg+1B,EAASlwJ,cAAc9tsB,GAAMtxO,EAAOo/6B,cAAc9tsB,KAEvD,MAApBq3X,EAAUirC,SACZjrC,EAAUirC,OAAS07b,EAASvoM,cAAcz1pB,EAAK,SAAS19O,MAG1Do1uB,EAASmpL,cAAc7grB,EAAK,CAC1Bm+1B,qBAAsBH,EAASvoM,cAAcz1pB,EAAK,oBAClDo+1B,iBAAkBJ,EAASvoM,cAAcz1pB,EAAK,gBAC9Cq+1B,iBAAkBL,EAASvoM,cAAcz1pB,EAAK,gBAC9Cs+1B,eAAgBN,EAASvoM,cAAcz1pB,EAAK,cAC5C62xB,WAAYmnE,EAASvoM,cAAcz1pB,EAAK,UACxCu+1B,mBAAoB7vkC,EAAO+m4B,cAAcz1pB,EAAK,oBAC9Cw+1B,eAAgB9vkC,EAAO+m4B,cAAcz1pB,EAAK,gBAC1Cy+1B,eAAgB/vkC,EAAO+m4B,cAAcz1pB,EAAK,gBAC1C0+1B,aAAchwkC,EAAO+m4B,cAAcz1pB,EAAK,cACxC82xB,SAAUpogC,EAAO+m4B,cAAcz1pB,EAAK,UACpCzmW,MAAO89tB,GAEX,IACAy+Z,EAASj+kB,WAAW6/S,GAGpB+2J,EAAOjq9B,KAAKuk8B,mBAAkB,SAAUhq2B,GACtCmj2B,GAAUnj2B,GAAIikrB,UAAY85Y,EAC1B/9jC,EAAGgsD,UAAS,SAAU37G,GACpB8y5B,GAAU9y5B,GAAO4zuB,UAAY85Y,CAC/B,GACF,IAuBA53sC,KAAK62sC,SAASjmE,GACdA,EAASx10B,MAAMg5K,OAASwjuB,EAAQz0sC,IAAI,WAAa6/+B,EAAY7/+B,IAAI,SACnE,EAEAq1sC,EAAajssC,KAAO,WACbissC,CACT,CA5IA,CA4IE,ICxQF,GA5CA,SAAU9v1B,GAGR,SAAS+w1B,IACP,IAAI/spC,EAAmB,OAAXg8T,GAAmBA,EAAOnoX,MAAMP,KAAMI,YAAcJ,KAGhE,OADA0sD,EAAMngD,KAAOktsC,EAAcltsC,KACpBmgD,CACT,CAiCA,OAxCAkgX,EAAU6syB,EAAe/w1B,GASzB+w1B,EAAc/5sC,UAAUy1sC,4BAA8B,SAAUF,EAAWK,EAAmBhyO,GAC5F,OAAO,IAAIm2O,EAAcxE,EAAWK,EAAmBhyO,EACzD,EAEAm2O,EAAcltsC,KAAO,WACrBktsC,EAAc74qB,cAAgB,CAG5Bj7hB,EAAG,EACH04I,QAAS,CACP3/G,QAAS,QAGXqxN,WAAW,EACX1uP,MAAO,CACL4hV,MAAM,EACNtkT,SAAU,OAEZ4l9B,UAAW,CAIT/M,YAAa,GAEf5W,SAAU,CACRv/9B,MAAO,CACL4hV,MAAM,EACNtkT,SAAU,SAIT86qC,CACT,CA1CA,CA0CE,IC9BF,IAAI,GAAQv2O,KAERw2O,GAAoB,SAAU12N,EAAaE,EAAUy2N,EAASv4pC,GAEhE,IAAIkqgC,EAAQlqgC,EAAK,GACbmqgC,EAAQnqgC,EAAK,GAEjB,GAAKkqgC,GAAUC,EAAf,CAIA,IAAI3/iC,EAAK,GAA2Bo3+B,EAAasoE,GAC7Cz4G,EAAK,GAA2BmwC,EAAauoE,GAE7CquJ,EAAUhusC,EAAGqzJ,MACb46iC,EAAUhnQ,EAAG5zyB,MACjB26iC,EAAQ,GAAKrooB,GAASqooB,EAAQ,IAAI,KAClCA,EAAQ,GAAKrooB,GAASqooB,EAAQ,IAAI,KAClCC,EAAQ,GAAKtooB,GAASsooB,EAAQ,GAAI95oC,KAClC85oC,EAAQ,GAAKtooB,GAASsooB,EAAQ,GAAI95oC,KAElC,IAAIv8C,EAAS8l7B,EAAS,CAAC,CAAC,EAAG197B,EAAIin8B,IAM/B,OALArv7B,EAAOy7I,MAAQ,CAACrzJ,EAAGqzJ,MAAO4zyB,EAAG5zyB,OAC7Bz7I,EAAO4iO,GAAKx6O,EAAG3H,EACfuf,EAAOiuK,GAAK7lL,EAAG5I,EACfwgB,EAAOokS,GAAKirpB,EAAG5u8B,EACfuf,EAAOkuK,GAAKmhxB,EAAG7v8B,EACRwgB,CAlBP,CAmBF,EAEA,SAAS,GAAWk6J,GAClB,OAAQpxI,MAAMoxI,KAASh2I,SAASg2I,EAClC,CAGA,SAASo8hC,GAAqB19M,EAAUg8M,EAAWzE,EAASzwN,GAC1D,IAAIm1N,EAAgB,EAAIj8M,EACxB,OAAO,GAAWg8M,EAAUC,KAAmB,GAAW1E,EAAQ0E,GACpE,CAEA,SAAS0B,GAAe72N,EAAU9h8B,GAChC,IAAIg3pC,EAAYh3pC,EAAK69G,MAAM,GACvB00iC,EAAUvypC,EAAK69G,MAAM,GACrBqs5B,EAAQ,CACVrs5B,MAAOm5iC,EACPn0sC,EAAGm9C,EAAKglM,GACRpjP,EAAGo+C,EAAKqwI,IAEN853B,EAAQ,CACVts5B,MAAO00iC,EACP1vsC,EAAGm9C,EAAKwmQ,GACR5kT,EAAGo+C,EAAKswI,IAGV,OAAI055B,GAAuBloG,EAAU,kBAO/Bk1N,IAAazE,IAAYmG,GAAqB,EAAG1B,EAAWzE,KAAsBmG,GAAqB,EAAG1B,EAAWzE,KNmDtH,SACPzwN,EAAUqoE,EAAOyuJ,GAEf,QAAO92N,GAAYA,EAASujH,aAAel7C,EAAMts5B,OAAS+6iC,EAAM/6iC,QAAUs2iC,GAAQhqJ,KAAWgqJ,GAAQyE,KAAS92N,EAASujH,YAAYl7C,EAAMts5B,MAAO+6iC,EAAM/6iC,MACxJ,CM9CW,CAAwBik1B,EAAUooE,EAAOC,GAG3C,GAAwBroE,EAAUooE,IAAU,GAAwBpoE,EAAUqoE,EACvF,CAGA,SAAS0uJ,GAAwBzqsC,EAAMsrW,EAAKgxpB,EAAM9oB,EAAa/z8B,GAC7D,IAEIkmG,EAFA+t2B,EAAWF,EAAYjx3B,iBACvB2y3B,EAAYl1+B,EAAKqhgC,aAAa/1pB,GAE9Bm81B,EAAM,GAAwBvyN,EAAUvh/B,IAAI2ogC,EAAK,IAAK789B,EAAIk8L,YAC1D+r+B,EAAM,GAAwBxyN,EAAUvh/B,IAAI2ogC,EAAK,IAAK789B,EAAI+rI,aAE9D,GAAK1uI,MAAM2qqC,IAAS3qqC,MAAM4qqC,GAEnB,CAEL,GAAIl0N,EAAY4xG,kBAAmB,CAGjC,IAAIslH,EAAc1qsC,EAAKktiB,UAAU,CAAC,KAAM,MAAO5hM,GAC3Cq/1B,EAAc3qsC,EAAKktiB,UAAU,CAAC,KAAM,MAAO5hM,GAC3Cs/1B,EAAmBl3N,EAAS4xG,UAAUolH,GACtCG,EAAmBn3N,EAAS4xG,UAAUqlH,GACtCG,EAAa,GAED,OAAZxuM,EAAK,GACPwuM,EAAW,GAAKF,EAAiB,GAAKC,EAAiB,GAAKF,EAAY,GAAKD,EAAY,GAEzFI,EAAW,GAAKF,EAAiB,GAAKC,EAAiB,GAAKH,EAAY,GAAKC,EAAY,GAG3E,OAAZruM,EAAK,GACPwuM,EAAW,GAAKF,EAAiB,GAAKC,EAAiB,GAAKF,EAAY,GAAKD,EAAY,GAEzFI,EAAW,GAAKF,EAAiB,GAAKC,EAAiB,GAAKH,EAAY,GAAKC,EAAY,GAI3FhlkC,EAAQ6t2B,EAAY4xG,kBAAkB0lH,EAAYxuM,GAAM,EAC1D,KAAO,CACL,IAEI3//B,EAAK,CAFLlI,EAAIuL,EAAKrM,IAAI2ogC,EAAK,GAAIhxpB,GACtB93W,EAAIwM,EAAKrM,IAAI2ogC,EAAK,GAAIhxpB,IAE1BoooB,EAAS4xG,WAAa5xG,EAAS4xG,UAAU3olC,EAAIA,GAC7CgpI,EAAQ+t2B,EAASy0E,YAAYxrjC,GAAI,EACnC,CAEA,GAAIi/kC,GAAuBloG,EAAU,eAAgB,CAEnD,IAAI3+zB,EAAQ2+zB,EAASliI,QAAQ,KACzBv8rB,EAAQy+zB,EAASliI,QAAQ,KACzB/82B,EAAIuL,EAAKrM,IAAI2ogC,EAAK,GAAIhxpB,GACtB93W,EAAIwM,EAAKrM,IAAI2ogC,EAAK,GAAIhxpB,GAEtB,GAAW72W,GACbkxI,EAAM,GAAKovC,EAAMqy4B,cAAcry4B,EAAMir4B,YAAwB,OAAZ1jD,EAAK,GAAc,EAAI,IAC/D,GAAW9ogC,KACpBmyI,EAAM,GAAKsvC,EAAMmy4B,cAAcny4B,EAAM+q4B,YAAwB,OAAZ1jD,EAAK,GAAc,EAAI,IAE5E,CAGKx/9B,MAAM2qqC,KACT9hkC,EAAM,GAAK8hkC,GAGR3qqC,MAAM4qqC,KACT/hkC,EAAM,GAAK+hkC,EAEf,MAxDE/hkC,EAAQ,CAAC8hkC,EAAKC,GA0DhB,OAAO/hkC,CACT,CAEO,IAAIolkC,GAAkB,CAAC,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,OAE3EC,GAEJ,SAAU9x1B,GAGR,SAAS8x1B,IACP,IAAI9tpC,EAAmB,OAAXg8T,GAAmBA,EAAOnoX,MAAMP,KAAMI,YAAcJ,KAGhE,OADA0sD,EAAMngD,KAAOiusC,EAAajusC,KACnBmgD,CACT,CAqIA,OA5IAkgX,EAAU4tyB,EAAc9x1B,GASxB8x1B,EAAa96sC,UAAU+68B,gBAAkB,SAAUggQ,EAAen3O,EAASr07B,GACzEq07B,EAAQyf,YAAW,SAAUC,GAC3B,IAAI22N,EAAU,GAAYvE,yBAAyBpyN,EAAa,YAEhE,GAAI22N,EAAS,CACX,IAAIe,EAAaf,EAAQn1kC,UACzBk2kC,EAAW14b,MAAK,SAAUlna,GACxB,IAAIxvU,EAASjc,EAAIkrrC,IAAiB,SAAU5i3B,GAC1C,OAAOsi3B,GAAwBS,EAAY5/1B,EAAKnjB,EAAKqrpB,EAAa/z8B,EACpE,IAEAyrqC,EAAW7xJ,cAAc/tsB,EAAKxvU,GACrBovqC,EAAWh4N,iBAAiB5noB,GAClC8rC,SAAS,SAAUt7W,EACxB,GACF,CACF,GAAGtrC,KACL,EAEAw6sC,EAAa96sC,UAAUwxiC,aAAe,SAAUluD,EAAa22N,EAASr2O,EAASr07B,GAC7E,IAAIi08B,EAAWF,EAAYjx3B,iBACvBgrpB,EAAWimO,EAAYz39B,GACvBitpC,EAAax1L,EAAYx+2B,UACzBm2kC,EAAe36sC,KAAK42sC,eACpBgE,EAAeD,EAAax3sC,IAAI45wB,IAAa49b,EAAa1usC,IAAI8wwB,EAAU,CAC1E3hd,MAAO,IAAI,KAEbp7T,KAAKo7T,MAAMj2S,IAAIy1rC,EAAax/4B,OAC5Bp7T,KAAK62sC,SAAS+D,GACd,IAAIloW,EAyGR,SAAoBwwI,EAAUF,EAAa22N,GACzC,IAAIjnW,EACA+3K,EAGJ,GAAIvnC,EAAU,CACZ,IAAI23N,EAAmBxrrC,EAAI6z9B,GAAYA,EAASxq1B,YAAY,SAAU2w3B,GACpE,IAAI75gC,EAAOwz+B,EAAYx+2B,UAGvB,OAAO6kR,EAAOA,EAAO,CAAC,EAFX75Y,EAAK819B,iBAAiB919B,EAAK42iC,aAAa/8B,KAAc,CAAC,GAElC,CAC9B3+gC,KAAM2+gC,EAEN/O,YAAa,MAEjB,IACAmQ,EAAWp7/B,EAbF,CAAC,KAAM,KAAM,KAAM,OAaP,SAAUsoU,EAAKmjB,GAClC,MAAO,CACLpwW,KAAMitV,EACNprV,KAAMsusC,EAAiB//1B,EAAM,GAAGvuW,KAEpC,IACAmm2B,EAAW,IAAI,GAAW+3K,EAAUkvL,EACtC,MAKEjnW,EAAW,IAAI,GAJf+3K,EAAW,CAAC,CACV//gC,KAAM,QACN6B,KAAM,UAE4BotsC,GAGtC,IAAIZ,EAAU1prC,EAAIsqrC,EAAQx2sC,IAAI,QAAS6m8B,GAAM0vQ,GAAmB12N,EAAaE,EAAUy2N,IAEnFz2N,IACF61N,EAAUlsrC,GAAOksrC,EAAS/uQ,GAAM+vQ,GAAgB72N,KAGlD,IAAIs2B,EAAiBt2B,EAAW,SAAU9h8B,EAAMi78B,EAASh31B,EAAW+21B,GAGlE,OAAOgY,GADMhz9B,EAAK69G,MAAMp8J,KAAKyK,MAAM8u/B,EAAW,IAAIA,EAAW,GAC/BquB,EAASruB,GACzC,EAAI,SAAUh78B,EAAMi78B,EAASh31B,EAAW+21B,GACtC,OAAOgY,GAAehz9B,EAAKjgD,MAAOsphC,EAASruB,GAC7C,EAGA,OAFA1pJ,EAASv5a,SAAS4/wB,EAAS,KAAMv/L,GACjC9mK,EAAS03K,eAAgB,EAClB13K,CACT,CAxJmB,CAAWwwI,EAAUF,EAAa22N,GAEjDA,EAAQ76kC,QAAQ4zuB,GAEhBA,EAAS1wF,MAAK,SAAUlna,GAEtB,IAAIxvU,EAASjc,EAAIkrrC,IAAiB,SAAU5i3B,GAC1C,OAAOsi3B,GAAwBvnW,EAAU53f,EAAKnjB,EAAKqrpB,EAAa/z8B,EAClE,IACI62jC,EAAa5iH,EAASliI,QAAQ,KAAKl/wB,MACnCikgC,EAAa7iH,EAASliI,QAAQ,KAAKl/wB,MACnCklgC,EAAclB,EAAWt2C,YACzBy3C,EAAclB,EAAWv2C,YACzBsrJ,EAAe,CAACh1G,EAAWv5kC,MAAMmm1B,EAASvv2B,IAAI,KAAM23W,IAAOgrvB,EAAWv5kC,MAAMmm1B,EAASvv2B,IAAI,KAAM23W,KAC/Fig2B,EAAe,CAACh1G,EAAWx5kC,MAAMmm1B,EAASvv2B,IAAI,KAAM23W,IAAOirvB,EAAWx5kC,MAAMmm1B,EAASvv2B,IAAI,KAAM23W,KACnG,GAAegg2B,GACf,GAAeC,GACf,IAGI/wK,KAHeg9D,EAAY,GAAK8zG,EAAa,IAAM9zG,EAAY,GAAK8zG,EAAa,IAAM7zG,EAAY,GAAK8zG,EAAa,IAAM9zG,EAAY,GAAK8zG,EAAa,IAI7JroW,EAASm2M,cAAc/tsB,EAAK,CAC1BxvU,OAAQA,EACR0+/B,WAAYA,IAEd,IAAI31hC,EAAQq+1B,EAASm+J,aAAa/1pB,GAAKljL,SAAS,aAAam0zB,eACzDx+3B,EAAQ226B,GAAkBs0I,EAAY,SAErCnkqC,EAAM+oH,OACT/oH,EAAM+oH,KAAO7P,EAETvyD,GAAS3mD,EAAM+oH,QACjB/oH,EAAM+oH,KAAO,GAAsB/oH,EAAM+oH,KAAM,MAI9C/oH,EAAM+owB,SACT/owB,EAAM+owB,OAAS7vpB,GAIjBmlvB,EAASipL,cAAc7grB,EAAK,QAASzmW,EACvC,IACAq+1B,EAASnqU,KAAK,GAAMqyqB,GAAcprsC,MAAM2V,KAAI,SAAU21V,GACpD,IAAI55O,EAASwxuB,EAASk2M,cAAc9tsB,GAEpC,IAAK55O,EAAO8o6B,WAAY,CACtB,IAAI/kgC,EAAU,IAAI,GAAgB,CAChCq9L,MAAO,CACLh3L,OAAQ41F,EAAO51F,UAGnBon0B,EAASq2M,iBAAiBjusB,EAAK71U,GAC/B21qC,EAAax/4B,MAAMj2S,IAAI8f,EACzB,CACF,IAAGspC,QAAO,SAAU4x+B,EAAQ4nC,GAC1B,IAAI9ijC,EAAU,GAAM21qC,GAAcprsC,KAAKkz+B,iBAAiBqlG,GACpD7m9B,EAASwxuB,EAASk2M,cAAczI,GAE/Bj/6B,EAAO8o6B,WAiBD/kgC,GACT21qC,EAAax/4B,MAAMvoS,OAAOoS,IAjBtBA,EACF,GAAoBA,EAAS,CAC3Bq9L,MAAO,CACLh3L,OAAQ41F,EAAO51F,SAEhBquqC,EAASx5J,GAEZl7gC,EAAU,IAAI,GAAgB,CAC5Bq9L,MAAO,CACLh3L,OAAQ41F,EAAO51F,UAKrBon0B,EAASq2M,iBAAiB5I,EAAQl7gC,GAClC21qC,EAAax/4B,MAAMj2S,IAAI8f,GAI3B,IAAGpS,QAAO,SAAUioV,GAClB,IAAI71U,EAAU,GAAM21qC,GAAcprsC,KAAKkz+B,iBAAiB5noB,GACxD8/1B,EAAax/4B,MAAMvoS,OAAOoS,EAC5B,IAAG88W,UACH2wd,EAASmxI,mBAAkB,SAAU5+8B,EAAS61U,GAC5C,IAAI4poB,EAAYhyI,EAASm+J,aAAa/1pB,GAClCzmW,EAAQq+1B,EAAS69J,cAAcz1pB,EAAK,SACxC71U,EAAQmlX,SAASsod,EAAS69J,cAAcz1pB,EAAK,UAC7C+soB,GAAc5i9B,EAASyj9B,GAAqBhE,GAAY,CACtD4C,aAAcqyN,EACdpyN,eAAgBzsoB,EAChBinf,YAAa2Q,EAAS1qhB,QAAQ8yB,IAAQ,GACtCivoB,aAAc/u7B,GAAS3mD,EAAM+oH,MAAQ,GAAsB/oH,EAAM+oH,KAAM,GAAK,SAE9Eqn3B,GAAyBx/8B,EAASy/8B,GAClCP,GAAoBl/8B,EAAS,KAAM,KAAMy/8B,EAAUvh/B,IAAI,CAAC,WAAY,cACpE65+B,GAAU/38B,GAAS64xB,UAAY67Y,CACjC,IACA,GAAMiB,GAAcprsC,KAAOkj2B,EAC3BkoW,EAAax/4B,MAAMg5K,OAASuluB,EAAQx2sC,IAAI,WAAa6/+B,EAAY7/+B,IAAI,SACvE,EAEAq3sC,EAAajusC,KAAO,WACbiusC,CACT,CA9IA,CA8IE,IAmDF,YClWA,IAcIQ,GAEJ,SAAUty1B,GAGR,SAASsy1B,IACP,IAAItupC,EAAmB,OAAXg8T,GAAmBA,EAAOnoX,MAAMP,KAAMI,YAAcJ,KAchE,OAZA0sD,EAAMngD,KAAOyusC,EAAYzusC,KACzBmgD,EAAM8n8B,WAAa,CACjBjo/B,KAAM,MAQNoo/B,YAAY,GAEPjo8B,CACT,CA6QA,OA/RAkgX,EAAUouyB,EAAaty1B,GAoBvBsy1B,EAAYt7sC,UAAUgxD,KAAO,SAAUmN,EAAQghe,EAAaykc,GAC1Dtj+B,KAAKq1/B,qBAAqBx37B,EAAQyl6B,GAClCzl6B,EAAOwuH,SAAWxuH,EAAOwuH,UAAY,CAAC,EAEtCrsL,KAAKi7sC,gBAAgBp9oC,EACvB,EAEAm9oC,EAAYt7sC,UAAUus/B,YAAc,SAAUpu7B,EAAQyl6B,GACpD56mB,EAAOhpX,UAAUus/B,YAAYrs/B,KAAKI,KAAM69D,EAAQyl6B,GAEhDtj+B,KAAKi7sC,gBAAgBp9oC,EACvB,EAEAm9oC,EAAYt7sC,UAAUu7sC,gBAAkB,SAAUp9oC,GAChD,IAAI0yB,EAAW1yB,EAAO0yB,SAClB+y4B,EAAUtj+B,KAAKsj+B,SAEF,IAAb/y4B,IACFA,EAAW1yB,EAAO0yB,SAAW,CAAC,MAAO,YAGnC,GAAeA,IACjB,EAAYA,GAAU,SAAUnvC,EAAMpkC,GACpC,GAAgBokC,KAAUA,EAAO,CAC/B70C,KAAM60C,IAERmvC,EAASvzE,GAAS,EAAaokC,EA/DP,SAAUki7B,EAAS/29B,GACjD,MAAa,QAATA,EACK,CACLA,KAAM,MACN8iK,MAAOi0zB,EAAQgqB,iBAAiBnq/B,IAAI,CAAC,SAAU,WAAY,SAE3C,YAAToJ,EACF,CACLA,KAAM,UACN8iK,MAAOi0zB,EAAQgqB,iBAAiBnq/B,IAAI,CAAC,SAAU,WAAY,kBAHxD,CAMT,CAmD6C+3sC,CAA0B53O,EAASli7B,EAAK70C,MAC/E,GAEJ,EAEAyusC,EAAYt7sC,UAAU61/B,cAAgB,WACpCv1/B,KAAKm7sC,YAAYn7sC,KAAKsj+B,SAEtB,IAAIlsM,EAAap3xB,KAAKykJ,MAEtB,GAAI2yoB,EAAW,IAAmC,WAA7Bp3xB,KAAKmD,IAAI,gBAA8B,CAG1D,IAFA,IAAIi4sC,GAAc,EAETx6sC,EAAI,EAAGA,EAAIw2xB,EAAW/2xB,OAAQO,IAAK,CAC1C,IAAI08vB,EAAS85B,EAAWx2xB,GAAGuC,IAAI,QAE/B,GAAInD,KAAKouC,WAAWkvtB,GAAS,CAE3Bt9vB,KAAKw2Q,OAAO8mf,GACZ89c,GAAc,EACd,KACF,CACF,EAGCA,GAAep7sC,KAAKw2Q,OAAO4ghB,EAAW,GAAGj0xB,IAAI,QAChD,CACF,EAEA63sC,EAAYt7sC,UAAUy7sC,YAAc,SAAU73O,GAC5C,IAAI+3O,EAAgB,GAChBC,EAAiB,GACrBh4O,EAAQo/B,eAAc,SAAU1f,GAC9B,IAEIu4N,EAFAjgN,EAAatY,EAAYt4+B,KAI7B,GAHA4wsC,EAAez5sC,KAAKy5/B,GAGhBtY,EAAY2+G,qBAAsB,CACpC,IACI3we,EADWgyX,EAAY2+G,qBACNH,cAEhBl+H,EAAQu/B,iBAAiB7f,KAC5Bs4N,EAAiBA,EAAet5sC,OAAOgvnB,IAGrCA,EAAM3wnB,OACRg7sC,EAAgBA,EAAcr5sC,OAAOgvnB,GAErCuqlB,GAAc,CAElB,MACEA,GAAc,EAGZA,GAAe34O,GAAgBogB,IACjCq4N,EAAcx5sC,KAAKmh/B,EAAYt4+B,KAEnC,IAMA1K,KAAKw7sC,gBAAkBF,EAGvB,IAAIjsM,EAAUrvgC,KAAKmD,IAAI,SAAWk4sC,EAC9BI,EAAgB,KAChBrkb,EAAa,EAAWi4O,GAAS,SAAUn/W,GAQ7C,OANI,GAAgBA,IAAa,GAAgBA,MAC/CA,EAAW,CACTxlpB,KAAMwlpB,IAINurjB,EAAct4sC,IAAI+spB,EAASxlpB,MAEtB,MAGT+wsC,EAAcxvsC,IAAIikpB,EAASxlpB,MAAM,GAC1B,IAAI,GAAMwlpB,EAAUlwpB,KAAMA,KAAKsj+B,SACxC,GAAGtj+B,MAMHA,KAAKykJ,MAAQ,GAAc2yoB,GAAY,SAAUh2uB,GAC/C,QAASA,CACX,GACF,EAEA45pC,EAAYt7sC,UAAU8kI,QAAU,WAC9B,OAAOxkI,KAAKykJ,KACd,EAEAu2jC,EAAYt7sC,UAAU82Q,OAAS,SAAU9rQ,GACvC,IAAI2hL,EAAWrsL,KAAK69D,OAAOwuH,SAGN,WAFFrsL,KAAKmD,IAAI,iBAI1B,EADWnD,KAAKykJ,OACE,SAAUyrgB,GAC1B7je,EAAS6je,EAAS/spB,IAAI,UAAW,CACnC,IAGFkpL,EAAS3hL,IAAQ,CACnB,EAEAswsC,EAAYt7sC,UAAU+snC,SAAW,SAAU/hnC,GACR,WAA7B1K,KAAKmD,IAAI,kBACXnD,KAAK69D,OAAOwuH,SAAS3hL,IAAQ,EAEjC,EAEAswsC,EAAYt7sC,UAAU4r5B,eAAiB,SAAU5g5B,GAC/C,IAAI2hL,EAAWrsL,KAAK69D,OAAOwuH,SAEtBA,EAAS1sL,eAAe+K,KAC3B2hL,EAAS3hL,IAAQ,GAGnB1K,KAAKqsL,EAAS3hL,GAAQ,WAAa,UAAUA,EAC/C,EAEAswsC,EAAYt7sC,UAAUg8sC,UAAY,WAChC,IAAIlssC,EAAOxP,KAAKykJ,MACZ4nC,EAAWrsL,KAAK69D,OAAOwuH,SAC3B,EAAY78K,GAAM,SAAU0gpB,GAC1B7je,EAAS6je,EAAS/spB,IAAI,QAAQ,KAAS,CACzC,GACF,EAEA63sC,EAAYt7sC,UAAUi8sC,cAAgB,WACpC,IAAInssC,EAAOxP,KAAKykJ,MACZ4nC,EAAWrsL,KAAK69D,OAAOwuH,SAC3B,EAAY78K,GAAM,SAAU0gpB,GAC1B,IAAIxlpB,EAAOwlpB,EAAS/spB,IAAI,QAAQ,GAE3BkpL,EAAS1sL,eAAe+K,KAC3B2hL,EAAS3hL,IAAQ,GAGnB2hL,EAAS3hL,IAAS2hL,EAAS3hL,EAC7B,GACF,EAEAswsC,EAAYt7sC,UAAU0uC,WAAa,SAAU1jC,GAC3C,IAAI2hL,EAAWrsL,KAAK69D,OAAOwuH,SAC3B,QAASA,EAAS1sL,eAAe+K,KAAU2hL,EAAS3hL,KAAU,EAAe1K,KAAKw7sC,gBAAiB9wsC,IAAS,CAC9G,EAEAswsC,EAAYt7sC,UAAU2xnC,UAAY,WAChC,MAA8B,aAAvBrxnC,KAAKmD,IAAI,UAA2B,CACzC6Z,MAAO,EACPtS,KAAM,YACJ,CACFsS,MAAO,EACPtS,KAAM,aAEV,EAEAswsC,EAAYzusC,KAAO,eACnByusC,EAAY/+iC,aAAe,CAAC,UAC5B++iC,EAAYp6qB,cAAgB,CAE1Bj7hB,EAAG,EACHs9U,MAAM,EACNuwqB,OAAQ,aACR309B,KAAM,SAENC,IAAK,EAELylvB,MAAO,OACP7qoB,gBAAiB,gBACjB4+N,YAAa,OACbK,aAAc,EACd6+nB,YAAa,EACbt/2B,QAAS,EACTq8jC,QAAS,GACTrwG,UAAW,GACXluT,WAAY,GACZouT,aAAc,UACdtgD,kBAAkB,EAClB83K,cAAe,OACfC,oBAAqB,OACrBC,oBAAqB,OACrBv3N,UAAW,CACTh33B,MAAO,UACPqe,QAAS,UACT0sO,YAAa,UACbk/nB,YAAa,OACbukO,UAAW,UACX15G,WAAY,UACZ9lH,iBAAkB,UAClBy/N,iBAAkB,WAEpB7pe,UAAW,CACTpzsB,MAAO,OACPwuF,MAAO,UACPqulC,cAAe,OACfK,cAAe,EACfrwkC,QAAS,UACTr/H,KAAM,UACN26S,IAAK,UACLr6S,KAAM,UACNqvsC,WAAY,UACZj/9B,WAAY,WAEd+rwB,UAAW,CACTz73B,MAAO,QAETl/E,cAAc,EACdkiD,UAAU,EACV4rnC,cAAe,CACbl53B,MAAM,EACN01B,aAAc,GACdzgP,QAAS,CAAC,EAAG,EAAG,EAAG,GACnBusH,SAAU,GACVE,WAAY,aACZp3H,MAAO,OACPiq3B,YAAa,EACbl/nB,YAAa,QAEfsonB,SAAU,CACRu7O,cAAe,CACbl53B,MAAM,EACN11N,MAAO,OACPmsB,gBAAiB,SAGrB0ikC,iBAAkB,OAClBC,gBAAiB,EACjBC,kBAAmB,GACnBj+jC,QAAS,CACP4kM,MAAM,IAGH+33B,CACT,CAjSA,CAiSEtujC,IAEF,YC9SA,IAAI,GAAQ,GACR,GAAO,EACP,GAAQ,GAER6vjC,GAEJ,SAAU7z1B,GAGR,SAAS6z1B,IACP,IAAI7vpC,EAAmB,OAAXg8T,GAAmBA,EAAOnoX,MAAMP,KAAMI,YAAcJ,KAIhE,OAFA0sD,EAAMngD,KAAOgwsC,EAAWhwsC,KACxBmgD,EAAM8vpC,iBAAkB,EACjB9vpC,CACT,CAmWA,OA3WAkgX,EAAU2vyB,EAAY7z1B,GAUtB6z1B,EAAW78sC,UAAUgxD,KAAO,WAC1B1wD,KAAKo7T,MAAMj2S,IAAInlB,KAAKy8sC,cAAgB,IAAI,IACxCz8sC,KAAKo7T,MAAMj2S,IAAInlB,KAAK08sC,eAAiB,IAAI,IACzC18sC,KAAK28sC,gBAAiB,CACxB,EAMAJ,EAAW78sC,UAAUk9sC,gBAAkB,WACrC,OAAO58sC,KAAKy8sC,aACd,EAMAF,EAAW78sC,UAAUm9sC,iBAAmB,WACtC,OAAO78sC,KAAK08sC,cACd,EAMAH,EAAW78sC,UAAU4uH,OAAS,SAAUwulC,EAAax5O,EAASr07B,GAC5D,IAAI8tqC,EAAgB/8sC,KAAK28sC,eAIzB,GAHA38sC,KAAK28sC,gBAAiB,EACtB38sC,KAAKg9sC,aAEAF,EAAY35sC,IAAI,QAAQ,GAA7B,CAIA,IAAI85sC,EAAYH,EAAY35sC,IAAI,SAC5Bqw/B,EAASspN,EAAY35sC,IAAI,UAExB85sC,GAA2B,SAAdA,IAChBA,EAAwC,UAA5BH,EAAY35sC,IAAI,SAAkC,aAAXqw/B,EAAwB,QAAU,QAIvF,IAAIjj6B,EAAWusnC,EAAY35sC,IAAI,YAAY,GACvCi5sC,EAAmBU,EAAY35sC,IAAI,oBAAoB,IAEvDotF,GAAc6rnC,GAAyC,SAArBA,IACpCA,EAA8B,eAAX5oN,EAA0B,MAAQ,SAGvDxz/B,KAAKk9sC,YAAYD,EAAWH,EAAax5O,EAASr07B,EAAKshD,EAAUij6B,EAAQ4oN,GAEzE,IAAIpoN,EAAe8oN,EAAYhnN,qBAC3B741B,EAAe,CACjBl+H,MAAOkQ,EAAIk8L,WACXnsM,OAAQiQ,EAAI+rI,aAEV9iD,EAAU4klC,EAAY35sC,IAAI,WAC1BkjK,EAAU,GAAyB2t1B,EAAc/21B,EAAc/kC,GAC/DillC,EAAWn9sC,KAAKo9sC,YAAYN,EAAaG,EAAW52iC,EAAS02iC,EAAexsnC,EAAU6rnC,GAEtFlpP,EAAa,GAAyB,EAAgB,CACxDn07B,MAAOo+qC,EAASp+qC,MAChBC,OAAQm+qC,EAASn+qC,QAChBg19B,GAAe/21B,EAAc/kC,GAChCl4H,KAAKo7T,MAAMn3T,EAAIiv9B,EAAWjv9B,EAAIk5sC,EAASl5sC,EACvCjE,KAAKo7T,MAAMp4T,EAAIkw9B,EAAWlw9B,EAAIm6sC,EAASn6sC,EACvChD,KAAKo7T,MAAMs3pB,aAEX1y9B,KAAKo7T,MAAMj2S,IAAInlB,KAAKq9sC,cAAgB5oB,GAAe0oB,EAAUL,GApC7D,CAqCF,EAEAP,EAAW78sC,UAAUs9sC,WAAa,WAChCh9sC,KAAK48sC,kBAAkB/u9B,YACvB7tP,KAAKq9sC,eAAiBr9sC,KAAKo7T,MAAMvoS,OAAO7yB,KAAKq9sC,eAC7Cr9sC,KAAK68sC,mBAAmBhv9B,WAC1B,EAEA0u9B,EAAW78sC,UAAUw9sC,YAAc,SAAUD,EAAWH,EAAax5O,EAASr07B,EAAKshD,EAAUij6B,EAAQ4oN,GACnG,IAAI79b,EAAev+wB,KAAK48sC,kBACpBU,EAAiB,KACjBC,EAAaT,EAAY35sC,IAAI,gBAC7Bg0iC,EAAkB,GACtB7zE,EAAQo/B,eAAc,SAAU1f,IAC7BA,EAAY7/+B,IAAI,oBAAsBg0iC,EAAgBt1iC,KAAKmh/B,EAAYz39B,GAC1E,IACA,GAAKuxrC,EAAYt4kC,WAAW,SAAUg5kC,EAAiBn4iC,GACrD,IAAI36J,EAAO8ysC,EAAgBr6sC,IAAI,QAE/B,IAAKnD,KAAKw8sC,kBAA6B,KAAT9xsC,GAAwB,OAATA,GAAgB,CAC3D,IAAIvI,EAAI,IAAI,GAIZ,OAFAA,EAAE0x/B,SAAU,OACZt1O,EAAap5vB,IAAIhjB,EAEnB,CAGA,IAAI6g/B,EAAc1f,EAAQ++B,gBAAgB33/B,GAAM,GAEhD,IAAI4ysC,EAAen6sC,IAAIuH,GAMvB,GAAIs4+B,EAAa,CACf,IAAIxz+B,EAAOwz+B,EAAYx+2B,UACnBi5kC,EAAkBjusC,EAAKsshC,UAAU,oBAAsB,CAAC,EACxD2H,EAAaj0hC,EAAKsshC,UAAU,cAM5BznhC,EAAQ7E,EAAKsshC,UAAU,SAEX97hC,KAAK09sC,YAAY16N,EAAat4+B,EAAM26J,EAAWm4iC,EAAiBV,EAAaG,EAAWQ,EAAiBppsC,EAAOovhC,EAAY85K,EAAYtuqC,GAE9Ir+B,GAAG,QAAS,GAAM+ssC,GAAsBjzsC,EAAM,KAAMukC,EAAKkogC,IAAkBvmiC,GAAG,YAAa,GAAMgtsC,GAAyB56N,EAAYt4+B,KAAM,KAAMukC,EAAKkogC,IAAkBvmiC,GAAG,WAAY,GAAMitsC,GAAwB76N,EAAYt4+B,KAAM,KAAMukC,EAAKkogC,IAC7PmmK,EAAerxsC,IAAIvB,GAAM,EAC3B,MAEE449B,EAAQo/B,eAAc,SAAU1f,GAE9B,IAAIs6N,EAAen6sC,IAAIuH,IAInBs4+B,EAAY2+G,qBAAsB,CACpC,IAAIzrjC,EAAW8s8B,EAAY2+G,qBAE3B,IAAKzrjC,EAASurjC,YAAY/2lC,GACxB,OAGF,IAAIowW,EAAM5kU,EAAS+s7B,YAAYv49B,GAC3B2J,EAAQ6hC,EAASq69B,cAAcz1pB,EAAK,SACpC2orB,EAAavt/B,EAASq69B,cAAcz1pB,EAAK,cACzC4nmB,EAAWn27B,GAAMlY,EAAM+oH,MAGvBsl1B,GAA4B,IAAhBA,EAAS,KACvBA,EAAS,GAAK,GAEdru8B,EAAQ,EAAc,EAAc,CAAC,EAAGA,GAAQ,CAC9C+oH,KAAM3jH,GAAUip8B,EAAU,WAId1i9B,KAAK09sC,YAAY16N,EAAat4+B,EAAM26J,EAAWm4iC,EAAiBV,EAAaG,EAAW,CAAC,EAAG5osC,EAAOovhC,EAAY85K,EAAYtuqC,GAGjIr+B,GAAG,QAAS,GAAM+ssC,GAAsB,KAAMjzsC,EAAMukC,EAAKkogC,IAElEvmiC,GAAG,YAAa,GAAMgtsC,GAAyB,KAAMlzsC,EAAMukC,EAAKkogC,IAAkBvmiC,GAAG,WAAY,GAAMitsC,GAAwB,KAAMnzsC,EAAMukC,EAAKkogC,IACjJmmK,EAAerxsC,IAAIvB,GAAM,EAC3B,CACF,GAAG1K,KAQP,GAAGA,MAECuwF,GACFvwF,KAAK89sC,gBAAgBvtnC,EAAUusnC,EAAa7tqC,EAAKuk9B,EAAQ4oN,EAE7D,EAEAG,EAAW78sC,UAAUo+sC,gBAAkB,SAAUvtnC,EAAUusnC,EAAa7tqC,EAAKuk9B,EAAQ4oN,GACnF,IAAI2B,EAAgB/9sC,KAAK68sC,mBACzB,GAAKtsnC,GAAU,SAA8BytnC,GAC3C,IAAIzxsC,EAAOyxsC,EAAazxsC,KACpBuzzB,EAAY,IAAI,GAAa,CAC/BzrzB,MAAO,CACLpQ,EAAG,EACHjB,EAAG,EACHuhxB,MAAO,SACPpxC,cAAe,UAEjBsmZ,QAAS,WACPxqlC,EAAIu1/B,eAAe,CACjBj4hC,KAAe,QAATA,EAAiB,kBAAoB,uBAE/C,IAEFwxsC,EAAc54rC,IAAI26yB,GAGlB+nL,GAAc/nL,EAAW,CACvBz8pB,OAHey5iC,EAAYllhC,SAAS,iBAIpCgpyB,SAHuBk8O,EAAYllhC,SAAS,CAAC,WAAY,mBAIxD,CACDmqqB,YAAai8W,EAAa3uiC,QAE5B200B,GAAoBlkL,EACtB,GACF,EAEAy8Y,EAAW78sC,UAAUg+sC,YAAc,SAAU16N,EAAat4+B,EAAM26J,EAAWm4iC,EAAiBV,EAAaG,EAAWQ,EAAiBQ,EAAiBx6K,EAAY85K,EAAYtuqC,GAC5K,IAsO0Bmxf,EACxB89qB,EACAzt+B,EAxOE0t+B,EAAWn7N,EAAYkjC,eACvBg+D,EAAY44H,EAAY35sC,IAAI,aAC5B6yxB,EAAa8mb,EAAY35sC,IAAI,cAC7BirC,EAAa0uqC,EAAY1uqC,WAAW1jC,GACpC25kC,EAAam5H,EAAgBr6sC,IAAI,gBACjC2giC,EAAmB05K,EAAgBr6sC,IAAI,oBACvCi7sC,EAAiBZ,EAAgBr6sC,IAAI,QAErCkR,EAgJR,SAAwB4zmC,EAAUu1F,EAAiBC,EAAiBQ,EAAiBE,EAAU/vqC,EAAYa,GAKzG,SAASovqC,EAAkBhqsC,EAAO86jC,GAER,SAApB96jC,EAAMg+T,YACRh+T,EAAMg+T,UAAY88vB,EAAY98vB,UAAY,EAAI,EAAI,GAGpD,GAAKh+T,GAAO,SAAUiqsC,EAAS/yjC,GACT,YAApBl3I,EAAMk3I,KAA4Bl3I,EAAMk3I,GAAY4j7B,EAAY5j7B,GAClE,GACF,CAGA,IAAIq6gC,EAAiB43C,EAAgB5lhC,SAAS,aAC1C2szB,EAAYqhL,EAAe75K,eAC3BwyN,EAAqD,IAArCt2F,EAAShq8B,YAAY,QAAS,GAAW,OAAS,SAClEugiC,EAAa54C,EAAer+L,WAAW,SAC3Cgd,EAAU/Q,MAASgrO,GAA6B,YAAfA,EAAmDvyK,GAA+BuyK,EAAYvvqC,GAAnEgvqC,EAAgBzqO,MAErD,YAAnB+Q,EAAUnn3B,OAKZmn3B,EAAUnn3B,KAAO6glC,EAAgBE,IAGV,YAArB55N,EAAUnnO,SAKZmnO,EAAUnnO,OAAS6gc,EAAgBM,IAGX,YAAtBh6N,EAAU342B,UAIZ242B,EAAU342B,SAAwB,SAAbuykC,EAAsBF,EAAkBR,GAAiB7xkC,SAGhFyykC,EAAkB95N,EAAW05N,GAE7B,IAAIQ,EAAkBjB,EAAgB5lhC,SAAS,aAC3Cu6iB,EAAYsse,EAAgB7yN,eAOhC,GANAyyN,EAAkBlse,EAAWsre,GAEV,SAAnBl5N,EAAUnn3B,OAAoBmn3B,EAAUnn3B,KAAO6glC,EAAgB7glC,MAC1C,SAArBmn3B,EAAUnnO,SAAsBmnO,EAAUnnO,OAAS6gc,EAAgB7glC,MAC9C,SAArB+0mB,EAAUirC,SAAsBjrC,EAAUirC,OAAS6gc,EAAgB7glC,OAE9DhvF,EAAY,CACf,IAAIop8B,EAAcgmO,EAAgBr6sC,IAAI,uBAOlCu7sC,EAAkBn6N,EAAUg6N,GAChCh6N,EAAUlyqB,UAA4B,SAAhBmlqB,EAAyBymO,EAAgB5r4B,UAAY,GAAKqs4B,EAAkB,EAAI,EAAIn6N,EAAUlyqB,UACpHkyqB,EAAUnn3B,KAAOoglC,EAAgBr6sC,IAAI,iBACrCoh/B,EAAUnnO,OAASogc,EAAgBr6sC,IAAI,uBACvCgvuB,EAAUirC,OAASqhc,EAAgBt7sC,IAAI,iBACvCgvuB,EAAU9/Z,UAAYos4B,EAAgBt7sC,IAAI,gBAC5C,CAEA,MAAO,CACLoh/B,UAAWA,EACXpyQ,UAAWA,EAEf,CA5NgBwse,CADZl7K,EAAa26K,GAAkB36K,GAAc,YACN+5K,EAAiBC,EAAiBQ,EAAiBE,EAAU/vqC,EAAYa,GAC5G2kkC,EAAY,IAAI,GAChBhrH,EAAiB40N,EAAgB5lhC,SAAS,aAE9C,IAAI,GAAkBorzB,EAAYihG,gBAAoBm6H,GAAqC,YAAnBA,EAWjE,CAEL,IAAI34lC,EAA4B,YAAnB24lC,GAAgCp7N,EAAYx+2B,UAAUs35B,UAAU,UAA2B,YAAfuoD,EAA2BrhG,EAAYx+2B,UAAUs35B,UAAU,gBAAkBuoD,EAAa,EAEnLuvB,EAAUzulC,KA2Mci7gB,EA3MW,CACjC8jjB,UAAWA,EACXluT,WAAYA,EACZvljB,KAAMgzzB,EACN4gD,WAAY5+9B,EACZ8+3B,UAAWlw+B,EAAMkw+B,UACjBpyQ,UAAW99tB,EAAM89tB,UACjB2xT,iBAAkBA,IAsMpBrzzB,EAAO,GADPyt+B,EAAY99qB,EAAI3vT,MAAQ,YACO,EAAG,EAAG2vT,EAAI8jjB,UAAW9jjB,EAAI41P,WAAY51P,EAAImkd,UAAUnn3B,KAAMgja,EAAI0jgB,mBAC3Fx/nB,SAAS87H,EAAImkd,WAClB9zwB,EAAKlqH,UAAY65a,EAAIikjB,YAAc,GAAKxhlC,KAAKsmC,GAAK,IAClDsnM,EAAK4/uB,UAAU,CAACjwb,EAAI8jjB,UAAY,EAAG9jjB,EAAI41P,WAAa,IAEhDkob,EAAU19sC,QAAQ,UAAY,IAChCiwO,EAAKp8N,MAAM+owB,OAAS3siB,EAAKp8N,MAAM+oH,KAC/BqzG,EAAKp8N,MAAM+oH,KAAO,OAClBqzG,EAAKp8N,MAAMg+T,UAAY,GAGlB5hG,GA/ML,MAtBEmj4B,EAAUzulC,IAAI699B,EAAYihG,cAAc,CACtCC,UAAWA,EACXluT,WAAYA,EACZvljB,KAAMgzzB,EACN4gD,WAAYA,EACZ9/F,UAAWlw+B,EAAMkw+B,UACjBpyQ,UAAW99tB,EAAM89tB,UACjB2xT,iBAAkBA,KAiBtB,IAAI1qD,EAAsB,SAAd6jO,EAAuB/4H,EAAY,GAAK,EAChDl/1B,EAAYi49B,EACZ73pB,EAAY03pB,EAAY35sC,IAAI,aAC5Bu1F,EAAUhuF,EAEV,GAAgB06iB,IAAcA,EAChC1sd,EAAU0sd,EAAU34iB,QAAQ,SAAkB,MAAR/B,EAAeA,EAAO,IACnD,GAAkB06iB,KAC3B1sd,EAAU0sd,EAAU16iB,IAGtB,IAAIk/Y,EAAYx7W,EAAaw68B,EAAen2wB,eAAiB+q+B,EAAgBr6sC,IAAI,iBACjFywmC,EAAUzulC,IAAI,IAAI,GAAa,CAC7B9Q,MAAOg0+B,GAAgBO,EAAgB,CACrCx49B,KAAMsoE,EACNz0F,EACAjB,EAAGgzxB,EAAa,EAChB54pB,KAAMwsR,EACN26X,MAAOv/hB,EACPmuf,cAAe,UACd,CACD42Q,aAAcngmB,OAIlB,IAAIg1zB,EAAU,IAAI,GAAa,CAC7Bt8+B,MAAOsx4B,EAAUzv3B,kBACjBm3uB,WAAW,IAETsjO,EAAe4e,EAAgB5lhC,SAAS,WAoB5C,OAlBIgngC,EAAaz7rC,IAAI,SACnB,GAAyB,CACvB02I,GAAI+kkC,EACJ/7O,eAAgBi6O,EAChBzhN,SAAU3w/B,EACV4thC,kBAAmBsmK,EAAa/goC,SAIpC+1iC,EAAUzulC,IAAIy5rC,GACdhrG,EAAUz4I,WAAU,SAAUjx4B,GAC5BA,EAAMkqZ,QAAS,CACjB,IACAwquB,EAAQxquB,QAAUmpuB,EAClBv9sC,KAAK48sC,kBAAkBz3rC,IAAIyulC,GAC3B5vH,GAAoB4vH,GAEpBA,EAAUirG,kBAAoBx5iC,EACvBuu8B,CACT,EAEA2oG,EAAW78sC,UAAU09sC,YAAc,SAAUN,EAAaG,EAAW52iC,EAAS02iC,EAAexsnC,EAAU6rnC,GACrG,IAAI79b,EAAev+wB,KAAK48sC,kBACpBmB,EAAgB/9sC,KAAK68sC,mBAEzB,GAAeC,EAAY35sC,IAAI,UAAWo7wB,EAAcu+b,EAAY35sC,IAAI,WAAYkjK,EAAQtnI,MAAOsnI,EAAQrnI,QAC3G,IAAI+1a,EAAcwpU,EAAap6hB,kBAC3B269B,EAAa,EAAE/pwB,EAAY9wc,GAAI8wc,EAAY/xc,GAI/C,GAHA+6sC,EAAcrrP,aACdn0M,EAAam0M,aAETni4B,EAAU,CAEZ,GACA,aAAcwtnC,EAAejB,EAAY35sC,IAAI,mBAAmB,IAChE,IAAI47sC,EAAehB,EAAc559B,kBAC7B669B,EAAc,EAAED,EAAa96sC,GAAI86sC,EAAa/7sC,GAC9Cs5sC,EAAoBQ,EAAY35sC,IAAI,qBAAqB,GACzD87sC,EAAYnC,EAAYzrF,YAAYr0mC,MACpCmqhC,EAAmB,IAAd83K,EAAkB,QAAU,SACjCC,EAAmB,IAAdD,EAAkB,SAAW,QAClCtgd,EAAmB,IAAdsgd,EAAkB,IAAM,IAER,QAArB7C,EACF4C,EAAYC,IAAclqwB,EAAYoylB,GAAMm1K,EAE5CwC,EAAWG,IAAcF,EAAa53K,GAAMm1K,EAI9C0C,EAAY,EAAIC,IAAclqwB,EAAYmqwB,GAAM,EAAIH,EAAaG,GAAM,EACvEnB,EAAc95sC,EAAI+6sC,EAAY,GAC9BjB,EAAc/6sC,EAAIg8sC,EAAY,GAC9Bzgc,EAAat6wB,EAAI66sC,EAAW,GAC5Bvgc,EAAav7wB,EAAI87sC,EAAW,GAC5B,IAAI3B,EAAW,CACbl5sC,EAAG,EACHjB,EAAG,GAKL,OAHAm6sC,EAASh2K,GAAMpylB,EAAYoylB,GAAMm1K,EAAoByC,EAAa53K,GAClEg2K,EAAS+B,GAAMr8sC,KAAK8K,IAAIonc,EAAYmqwB,GAAKH,EAAaG,IACtD/B,EAASx+c,GAAM97vB,KAAKgL,IAAI,EAAGkxsC,EAAapgd,GAAMqgd,EAAY,EAAIC,IACvD9B,CACT,CAGE,OAFA5+b,EAAat6wB,EAAI66sC,EAAW,GAC5Bvgc,EAAav7wB,EAAI87sC,EAAW,GACrB9+sC,KAAKo7T,MAAMj3E,iBAEtB,EAMAo49B,EAAW78sC,UAAUmzB,OAAS,WAC5B7yB,KAAK48sC,kBAAkB/u9B,YACvB7tP,KAAK28sC,gBAAiB,CACxB,EAEAJ,EAAWhwsC,KAAO,eACXgwsC,CACT,CA7WA,CA6WE,IAgGF,SAASoB,GAAqBriN,EAAYq5I,EAAU1lmC,EAAKkogC,GAEvD0mK,GAAuBviN,EAAYq5I,EAAU1lmC,EAAKkogC,GAClDlogC,EAAIu1/B,eAAe,CACjBj4hC,KAAM,qBACN7B,KAAoB,MAAd4w/B,EAAqBA,EAAaq5I,IAI1CipE,GAAwBtiN,EAAYq5I,EAAU1lmC,EAAKkogC,EACrD,CAEA,SAASgoK,GAAgBlwqC,GAMvB,IALA,IACI49hC,EADA12/B,EAAOlnC,EAAIk9/B,QAAQl4gC,QAAQ4h7B,iBAE3Bj18B,EAAI,EACJi+H,EAAM1oD,EAAK91E,OAERO,EAAIi+H,KAASgu8B,EAAgB12/B,EAAKv1E,GAAGyugB,OAAOuxd,WACjDhg+B,IAGF,OAAOiskC,GAAiBA,EAAc32G,UACxC,CAEA,SAAS0nP,GAAwBtiN,EAAYq5I,EAAU1lmC,EAAKkogC,GAErDgoK,GAAgBlwqC,IACnBA,EAAIu1/B,eAAe,CACjBj4hC,KAAM,YACN+u/B,WAAYA,EACZ5w/B,KAAMiqoC,EACNx9F,gBAAiBA,GAGvB,CAEA,SAAS0mK,GAAuBviN,EAAYq5I,EAAU1lmC,EAAKkogC,GAEpDgoK,GAAgBlwqC,IACnBA,EAAIu1/B,eAAe,CACjBj4hC,KAAM,WACN+u/B,WAAYA,EACZ5w/B,KAAMiqoC,EACNx9F,gBAAiBA,GAGvB,CAEA,YC/gBe,SAASioK,GAAa97O,GACnC,IAAIy6H,EAAez6H,EAAQw+B,eAAe,CACxCh+B,SAAU,WAGRi6H,GAAgBA,EAAa19lC,QAC/Bij+B,EAAQ0/B,cAAa,SAAUlmP,GAG7B,IAAK,IAAIl8wB,EAAI,EAAGA,EAAIm9lC,EAAa19lC,OAAQO,IACvC,IAAKm9lC,EAAan9lC,GAAGwtC,WAAW0uuB,EAAOpywB,MACrC,OAAO,EAIX,OAAO,CACT,GAEJ,CCfA,SAAS20sC,GAA0B5qoC,EAAY3/C,EAASwu8B,GACtD,IAEIl17B,EAFAs7+B,EAAc,CAAC,EACf41L,EAAgC,mBAAf7qoC,EAoCrB,OAjCA6u5B,EAAQwe,cAAc,UAAU,SAAUg7N,GACpCwC,GAAgC,MAAdlxqC,EAKpB0uqC,EAAY1uqC,EAAa,SAAW,YAAYtZ,EAAQpqB,MAChC,cAAf+pE,GAA6C,kBAAfA,EACvCqooC,EAAYrooC,MAEZqooC,EAAYrooC,GAAY3/C,EAAQpqB,MAChC0jC,EAAa0uqC,EAAY1uqC,WAAWtZ,EAAQpqB,OAI9C,EADiBoysC,EAAYt4kC,WACZ,SAAUzP,GACzB,IAAIrqH,EAAOqqH,EAAM5xH,IAAI,QAErB,GAAa,OAATuH,GAA0B,KAATA,EAArB,CAIA,IAAI60sC,EAAiBzC,EAAY1uqC,WAAW1jC,GAExCg/gC,EAAY/phC,eAAe+K,GAE7Bg/gC,EAAYh/gC,GAAQg/gC,EAAYh/gC,IAAS60sC,EAEzC71L,EAAYh/gC,GAAQ60sC,CARtB,CAUF,GACF,IAEsB,cAAf9qoC,GAA6C,kBAAfA,EAAiC,CACpE43G,SAAUq91B,GACR,CACFh/gC,KAAMoqB,EAAQpqB,KACd2hL,SAAUq91B,EAEd,CC3CO,SAAS,GAAQqmD,GACtBA,EAAUpyB,uBAAuB,IACjCoyB,EAAUnyB,sBAAsB,IAChCmyB,EAAU70B,kBAAkB60B,EAAU/gC,SAASC,UAAUC,cAAekwK,IACxErvI,EAAU35E,yBAAyB,UAAU,WAC3C,MAAO,OACT,IDuCK,SAA6B25E,GAQlCA,EAAUr0B,eAAe,qBAAsB,sBAAuB1xG,GAAMq1Q,GAA2B,mBACvGtvI,EAAUr0B,eAAe,kBAAmB,kBAAmB1xG,GAAMq1Q,GAA2B,cAChGtvI,EAAUr0B,eAAe,sBAAuB,sBAAuB1xG,GAAMq1Q,GAA2B,kBAQxGtvI,EAAUr0B,eAAe,eAAgB,iBAAkB1xG,GAAMq1Q,GAA2B,WAQ5FtvI,EAAUr0B,eAAe,iBAAkB,mBAAoB1xG,GAAMq1Q,GAA2B,YAClG,CCjEEG,CAAoBzvI,EACtB,CCuDA,SAAS,GAA8B+sI,EAAahtsC,EAAQmhK,GAC1D,IACI0j1B,EAAa,CAAC,EAAG,GACrBA,EAFamoN,EAAYzrF,YAEPr0mC,OAAS,EAC3By3+B,GAAiB3k/B,EAAQmhK,EAAK,CAC5B1kK,KAAM,MACNoo/B,aAAcA,GAElB,CAEA,SAtEA,SAAUjsoB,GAGR,SAAS+21B,IACP,IAAI/ypC,EAAmB,OAAXg8T,GAAmBA,EAAOnoX,MAAMP,KAAMI,YAAcJ,KAGhE,OADA0sD,EAAMngD,KAAOkzsC,EAAsBlzsC,KAC5BmgD,CACT,CA+CA,OAtDAkgX,EAAU6yyB,EAAuB/21B,GAajC+21B,EAAsB//sC,UAAUggtC,mBAAqB,SAAUC,GAC7D3/sC,KAAK69D,OAAO8hpC,gBAAkBA,CAChC,EAEAF,EAAsB//sC,UAAUgxD,KAAO,SAAUmN,EAAQghe,EAAaykc,GACpE,IAAIgyB,EAAsBJ,GAAgBr37B,GAE1C6qT,EAAOhpX,UAAUgxD,KAAK9wD,KAAKI,KAAM69D,EAAQghe,EAAaykc,GAEtD,GAA8Btj+B,KAAM69D,EAAQy37B,EAC9C,EAMAmqN,EAAsB//sC,UAAUus/B,YAAc,SAAUpu7B,EAAQyl6B,GAC9D56mB,EAAOhpX,UAAUus/B,YAAYrs/B,KAAKI,KAAM69D,EAAQyl6B,GAEhD,GAA8Btj+B,KAAMA,KAAK69D,OAAQA,EACnD,EAEA4hpC,EAAsBlzsC,KAAO,gBAC7BkzsC,EAAsB7+qB,cAAgB6rd,GAAqB,GAAY7rd,cAAe,CACpF++qB,gBAAiB,EACjBC,kBAAmB,EACnBC,cAAe,KACfC,mBAAoB,MACpBC,cAAe,oBACfC,UAAW,CACTr3iB,WAAY,CAAC,qBAAsB,wBACnCn/H,SAAU,CAAC,oBAAqB,qBAElCy2qB,cAAe,UACfC,sBAAuB,OACvBC,aAAc,GACdC,cAAe,CACb7ylC,MAAO,QAETor4B,wBAAyB,MAEpB8mN,CACT,CAxDA,CAwDE,ICtDF,IAAI,GAAQ,GACR,GAAK,CAAC,QAAS,UACf,GAAK,CAAC,IAAK,KAEXY,GAEJ,SAAU331B,GAGR,SAAS231B,IACP,IAAI3zpC,EAAmB,OAAXg8T,GAAmBA,EAAOnoX,MAAMP,KAAMI,YAAcJ,KAKhE,OAHA0sD,EAAMngD,KAAO8zsC,EAAqB9zsC,KAClCmgD,EAAM8vpC,iBAAkB,EACxB9vpC,EAAM4zpC,cAAgB,EACf5zpC,CACT,CA6XA,OAtYAkgX,EAAUyzyB,EAAsB331B,GAWhC231B,EAAqB3gtC,UAAUgxD,KAAO,WACpCg4T,EAAOhpX,UAAUgxD,KAAK9wD,KAAKI,MAE3BA,KAAKo7T,MAAMj2S,IAAInlB,KAAKm7nC,gBAAkB,IAAI,IAE1Cn7nC,KAAKm7nC,gBAAgBh2mC,IAAInlB,KAAK48sC,mBAE9B58sC,KAAKo7T,MAAMj2S,IAAInlB,KAAKugtC,iBAAmB,IAAI,GAC7C,EAMAF,EAAqB3gtC,UAAUs9sC,WAAa,WAC1Ct01B,EAAOhpX,UAAUs9sC,WAAWp9sC,KAAKI,MAEjCA,KAAKugtC,iBAAiB1y9B,YAEtB7tP,KAAKm7nC,gBAAgBpjK,iBAErB/39B,KAAKm7nC,gBAAgBqlF,WAAa,IACpC,EAMAH,EAAqB3gtC,UAAUw9sC,YAAc,SAAUD,EAAWH,EAAax5O,EAASr07B,EAAKshD,EAAUij6B,EAAQ4oN,GAC7G,IAAIh6sC,EAAOpC,KAEX0oX,EAAOhpX,UAAUw9sC,YAAYt9sC,KAAKI,KAAMi9sC,EAAWH,EAAax5O,EAASr07B,EAAKshD,EAAUij6B,EAAQ4oN,GAEhG,IAAIqE,EAAkBzgtC,KAAKugtC,iBAGvBJ,EAAerD,EAAY35sC,IAAI,gBAAgB,GAC/Cu9sC,EAAkB,GAAeP,GAAgBA,EAAe,CAACA,EAAcA,GACnFQ,EAAiB,WAAY,GAC7B,IAAIC,EAAqB9D,EAAYllhC,SAAS,iBAe9C,SAAS+ohC,EAAiBj2sC,EAAMm2sC,GAC9B,IAAIC,EAAoBp2sC,EAAO,YAC3B+lO,EAAO,GAAmBqs+B,EAAY35sC,IAAI,aAAa,GAAM25sC,EAAYzrF,YAAY3mnC,MAAMm2sC,GAAU,CAGvGpnF,QAAS,GAAYr3nC,EAAK2+sC,QAAS3+sC,EAAM0+sC,EAAmBhE,EAAa7tqC,IACxE,CACDhrC,GAAIy8sC,EAAgB,GAAK,EACzB19sC,GAAI09sC,EAAgB,GAAK,EACzB3hrC,MAAO2hrC,EAAgB,GACvB1hrC,OAAQ0hrC,EAAgB,KAE1Bjw+B,EAAK/lO,KAAOA,EACZ+1sC,EAAgBt7rC,IAAIsrN,EACtB,CA5BAgw+B,EAAgBt7rC,IAAI,IAAI,GAAa,CACnCza,KAAM,WACN2J,MAAO,CAEL+b,KAAM,QACNgtG,KAAMwjlC,EAAmBnu+B,eACzBqS,KAAM879B,EAAmBp7b,UACzBryC,cAAe,SACfoxC,MAAO,UAETnwS,QAAQ,KAEVusuB,EAAiB,WAAY,EAiB/B,EAMAN,EAAqB3gtC,UAAU09sC,YAAc,SAAUN,EAAaG,EAAW52iC,EAAS02iC,EAAexsnC,EAAU6rnC,GAC/G,IAAI2B,EAAgB/9sC,KAAK68sC,mBACrBoC,EAAYnC,EAAYzrF,YAAYr0mC,MACpCmqhC,EAAK,GAAG83K,GACR3ujC,EAAK,GAAG2ujC,GACRC,EAAK,GAAG,EAAID,GACZtgd,EAAK,GAAG,EAAIsgd,GAChB1unC,GAAY,GACZ,aAAcwtnC,EAAejB,EAAY35sC,IAAI,mBAAmB,IAChE,IAAIm5sC,EAAoBQ,EAAY35sC,IAAI,qBAAqB,GACzD47sC,EAAehB,EAAc559B,kBAC7B669B,EAAc,EAAED,EAAa96sC,GAAI86sC,EAAa/7sC,GAC9Cg+sC,EAAiB,EAAa36iC,GAClC91E,IAAaywnC,EAAe75K,GAAM9g4B,EAAQ8g4B,GAAM43K,EAAa53K,GAAMm1K,GAEnE,IAAIa,EAAWn9sC,KAAKihtC,4BAA4BnE,EAAaC,EAAeiE,EAAgB/B,EAAW93K,EAAI+3K,EAAIvgd,EAAIrumB,GAEnH,GAAI//D,EAAU,CACZ,GAAyB,QAArB6rnC,EACF4C,EAAYC,IAAc9B,EAASh2K,GAAMm1K,MACpC,CACL,IAAIn6pC,EAAS48pC,EAAa53K,GAAMm1K,EAChC0C,EAAYC,IAAc98pC,EAC1Bg7pC,EAAS7sjC,IAAOnuG,CAClB,CAEAg7pC,EAASh2K,IAAO43K,EAAa53K,GAAMm1K,EACnC0C,EAAY,EAAIC,IAAc9B,EAASx+c,GAAMw+c,EAAS+B,GAAM,EAAIH,EAAaG,GAAM,EACnF/B,EAAS+B,GAAMr8sC,KAAK8K,IAAIwvsC,EAAS+B,GAAKH,EAAaG,IACnD/B,EAASx+c,GAAM97vB,KAAKgL,IAAIsvsC,EAASx+c,GAAKogd,EAAapgd,GAAMqgd,EAAY,EAAIC,IACzElB,EAAc95sC,EAAI+6sC,EAAY,GAC9BjB,EAAc/6sC,EAAIg8sC,EAAY,GAC9BjB,EAAcrrP,YAChB,CAEA,OAAOyqP,CACT,EAEAkD,EAAqB3gtC,UAAUuhtC,4BAA8B,SAAUnE,EAAaC,EAAe12iC,EAAS44iC,EAAW93K,EAAI+3K,EAAIvgd,EAAIrumB,GACjI,IAAIiunB,EAAev+wB,KAAK48sC,kBACpB9jF,EAAiB94nC,KAAKm7nC,gBACtBslF,EAAkBzgtC,KAAKugtC,iBAE3B,GAAezD,EAAY35sC,IAAI,UAAWo7wB,EAAcu+b,EAAY35sC,IAAI,WAAa87sC,EAAmB54iC,EAAQtnI,MAAf,KAAsBkgrC,EAAY,KAAO54iC,EAAQrnI,QAClJ,GACA,aAAcyhrC,EAAiB3D,EAAY35sC,IAAI,qBAAqB,IACpE,IAAI4xc,EAAcwpU,EAAap6hB,kBAC3B+89B,EAAiBT,EAAgBt89B,kBACjCg99B,EAAiBnhtC,KAAKohtC,gBAAkBrswB,EAAYoylB,GAAM9g4B,EAAQ8g4B,GAElE23K,EAAa,EAAE/pwB,EAAY9wc,GAAI8wc,EAAY/xc,GAI1C+5sC,IACH+B,EAAWG,GAAa1gc,EAAajunB,IAIvC,IAAI+wjC,EAAe,CAAC,EAAG,GACnBC,EAAgB,EAAEJ,EAAej9sC,GAAIi9sC,EAAel+sC,GACpD68sC,EAAgB,GAAiB/C,EAAY35sC,IAAI,iBAAiB,GAAO25sC,EAAY35sC,IAAI,WAAW,IAEpGg+sC,IAGyB,QAFFrE,EAAY35sC,IAAI,sBAAsB,GAG7Dm+sC,EAAcrC,IAAc54iC,EAAQ8g4B,GAAM+5K,EAAe/5K,GAGvDk6K,EAAapC,IAAciC,EAAe/5K,GAAM04K,GAKtDyB,EAAc,EAAIrC,IAAclqwB,EAAYmqwB,GAAM,EAAIgC,EAAehC,GAAM,EAC3E3gc,EAAa3xhB,YAAYky9B,GACzBhmF,EAAels4B,YAAYy09B,GAC3BZ,EAAgB7z9B,YAAY009B,GAI5B,IAAInE,EAAW,CACbl5sC,EAAG,EACHjB,EAAG,GASL,GANAm6sC,EAASh2K,GAAMg6K,EAAiB96iC,EAAQ8g4B,GAAMpylB,EAAYoylB,GAC1Dg2K,EAAS+B,GAAMr8sC,KAAK8K,IAAIonc,EAAYmqwB,GAAKgC,EAAehC,IAExD/B,EAASx+c,GAAM97vB,KAAKgL,IAAI,EAAGqzsC,EAAevid,GAAM2id,EAAc,EAAIrC,IAClEnmF,EAAe0nF,WAAan6iC,EAAQ8g4B,GAEhCg6K,EAAgB,CAClB,IAAI95H,EAAY,CACdpjlC,EAAG,EACHjB,EAAG,GAELqklC,EAAUlgD,GAAMtkiC,KAAK8K,IAAI04J,EAAQ8g4B,GAAM+5K,EAAe/5K,GAAM04K,EAAe,GAC3Ex4H,EAAU63H,GAAM/B,EAAS+B,GACzBpmF,EAAelkK,YAAY,IAAI,GAAa,CAC1CtyvB,MAAO+k3B,KAITyxC,EAAe0nF,WAAan5H,EAAUlgD,EACxC,MAEEs5K,EAAgBtlP,WAAU,SAAUjx4B,GAClCA,EAAM+jc,KAAK,CACTqtc,WAAW,EACXlnf,QAAQ,GAEZ,IAIF,IAAImtuB,EAAWvhtC,KAAKwhtC,aAAa1E,GAWjC,OATsB,MAAtByE,EAASrrb,WAAqB,GAAoB3X,EAAc,CAC9Dt6wB,EAAGs9sC,EAASE,gBAAgB,GAC5Bz+sC,EAAGu+sC,EAASE,gBAAgB,IAG9BN,EAAiBrE,EAAc,MAE/B98sC,KAAK0htC,oBAAoB5E,EAAayE,GAE/BpE,CACT,EAEAkD,EAAqB3gtC,UAAUqhtC,QAAU,SAAU9nsC,EAAI6jsC,EAAa7tqC,GAClE,IAAI0wqC,EAAkB3/sC,KAAKwhtC,aAAa1E,GAAa7jsC,GAElC,MAAnB0msC,GAA2B1wqC,EAAIu1/B,eAAe,CAC5Cj4hC,KAAM,eACNozsC,gBAAiBA,EACjBgC,SAAU7E,EAAYvxrC,IAE1B,EAEA80rC,EAAqB3gtC,UAAUgitC,oBAAsB,SAAU5E,EAAayE,GAC1E,IAAId,EAAkBzgtC,KAAKugtC,iBAC3B,EAAY,CAAC,WAAY,aAAa,SAAU71sC,GAC9C,IACIk3sC,EAA2B,MAAjBL,EADJ72sC,EAAO,aAEb+lO,EAAOgw+B,EAAgB3lP,YAAYpw9B,GAEnC+lO,IACFA,EAAK6zL,SAAS,OAAQs9yB,EAAU9E,EAAY35sC,IAAI,iBAAiB,GAAQ25sC,EAAY35sC,IAAI,yBAAyB,IAClHstO,EAAKpvF,OAASugkC,EAAU,UAAY,UAExC,IACA,IAAIC,EAAWpB,EAAgB3lP,YAAY,YACvCilP,EAAgBjD,EAAY35sC,IAAI,iBAChC+yxB,EAAYqrb,EAASrrb,UACrBn2vB,EAAuB,MAAbm2vB,EAAoBA,EAAY,EAAI,EAC9Ch0uB,EAAQq/pC,EAASO,UACrBD,GAAY9B,GAAiB8B,EAASv9yB,SAAS,OAAQ,GAAgBy7yB,GAAiBA,EAActzsC,QAAQ,YAAwB,MAAXszB,EAAkB,GAAKA,EAAU,IAAItzB,QAAQ,UAAoB,MAATy1C,EAAgB,GAAKA,EAAQ,IAAM69pC,EAAc,CAClOhgrC,QAASA,EACTmiB,MAAOA,IAEX,EAWAm+pC,EAAqB3gtC,UAAU8htC,aAAe,SAAU1E,GACtD,IAAI6C,EAAkB7C,EAAY35sC,IAAI,mBAAmB,GACrDo7wB,EAAev+wB,KAAK48sC,kBACpBmF,EAAoB/htC,KAAKm7nC,gBAAgBqlF,WACzCvB,EAAYnC,EAAYzrF,YAAYr0mC,MACpCmqhC,EAAK,GAAG83K,GACR3ujC,EAAK,GAAG2ujC,GAER+C,EAAkBhitC,KAAKiitC,qBAAqBtC,GAE5C3/qC,EAAWu+uB,EAAav+uB,WACxBkirC,EAAalirC,EAASgirC,GACtBG,EAAYnirC,EAAS3/B,OACrB+htC,EAAUD,EAAgB,EAAJ,EACtB3+rC,EAAS,CACXi+rC,gBAAiB,CAACljc,EAAat6wB,EAAGs6wB,EAAav7wB,GAC/C8+sC,UAAWM,EACXlsb,UAAWksb,EAAS,EACpBC,kBAAmB,KACnBC,kBAAmB,MAGrB,IAAKJ,EACH,OAAO1+rC,EAGT,IAAI++rC,EAAiBC,EAAYN,GACjC1+rC,EAAOi+rC,gBAAgBxC,IAAcsD,EAAezhtC,EAYpD,IAAK,IAAIF,EAAIohtC,EAAkB,EAAGS,EAAmBF,EAAgBG,EAAiBH,EAAgBI,EAAe,KAAM/htC,GAAKuhtC,IAAavhtC,KAC3I+htC,EAAeH,EAAYxirC,EAASp/B,MAGnB8htC,EAAevjtC,EAAIsjtC,EAAiB3htC,EAAIihtC,GAEzDY,IAAiBh7hC,EAAUg7hC,EAAcF,EAAiB3htC,MAEtD2htC,EADEC,EAAe9htC,EAAI6htC,EAAiB7htC,EACnB8htC,EAGAC,KAIa,MAA5Bn/rC,EAAO8+rC,oBACT9+rC,EAAO8+rC,kBAAoBG,EAAiB7htC,KAG5C4iB,EAAOs+rC,WAIbY,EAAiBC,EAGnB,IAAS/htC,EAAIohtC,EAAkB,EAAGS,EAAmBF,EAAgBG,EAAiBH,EAAgBI,EAAe,KAAM/htC,IAAM,IAAKA,GACpI+htC,EAAeH,EAAYxirC,EAASp/B,MAIjB+mL,EAAU+6hC,EAAgBC,EAAa7htC,MAC1D2htC,EAAiB7htC,EAAI8htC,EAAe9htC,KAClC8htC,EAAiBD,EAEe,MAA5Bj/rC,EAAO6+rC,oBACT7+rC,EAAO6+rC,kBAAoBI,EAAiB7htC,KAG5C4iB,EAAOs+rC,YACPt+rC,EAAO0ywB,WAGXusb,EAAmBE,EAGrB,OAAOn/rC,EAEP,SAASg/rC,EAAY3okC,GACnB,GAAIA,EAAI,CACN,IAAI+okC,EAAW/okC,EAAGsqG,kBACd39M,EAAQo8qC,EAAStyjC,GAAMzW,EAAGyW,GAC9B,MAAO,CACLxvJ,EAAG0lC,EACHrnC,EAAGqnC,EAAQo8qC,EAASz7K,GACpBvmiC,EAAGi5I,EAAGglkC,kBAEV,CACF,CAEA,SAASl3hC,EAAUk7hC,EAAUC,GAC3B,OAAOD,EAAS1jtC,GAAK2jtC,GAAYD,EAAS/htC,GAAKgitC,EAAWf,CAC5D,CACF,EAEA1B,EAAqB3gtC,UAAUuitC,qBAAuB,SAAUpO,GAC9D,OAAK7zsC,KAAKohtC,iBAKSphtC,KAAK48sC,kBAEXzhP,WAAU,SAAUjx4B,EAAO4wR,GACtC,IAAIio2B,EAAgB74nC,EAAM20nC,kBAMN,MAAhBhpsB,GAAyC,MAAjBktsB,IAC1BltsB,EAAe/6J,GAGbio2B,IAAkBlP,IACpB72rC,EAAQ89V,EAEZ,IACgB,MAAT99V,EAAgBA,EAAQ64f,GArBtB,EAGT,IAAI74f,EAEA64f,CAiBN,EAEAwqsB,EAAqB9zsC,KAAO,gBACrB8zsC,CACT,CAxYA,CAwYE,IAEF,YCpZO,SAAS,GAAQtwI,GACtBpxJ,GAAI,IACJoxJ,EAAUpyB,uBAAuB,IACjCoyB,EAAUnyB,sBAAsB,ICRnB,SAAuCmyB,GAOpDA,EAAUr0B,eAAe,eAAgB,gBAAgB,SAAU5mhC,EAASwu8B,GAC1E,IAAIq8O,EAAkB7qrC,EAAQ6qrC,gBACX,MAAnBA,GAA2Br8O,EAAQwe,cAAc,CAC/Che,SAAU,SACViD,QAAS,SACT934B,MAAOn6D,IACN,SAAUgorC,GACXA,EAAY4C,mBAAmBC,EACjC,GACF,GACF,CDREqD,CAA8BjzI,EAChC,CEkBA,SAtBA,SAAUrntB,GAGR,SAASu61B,IACP,IAAIv2pC,EAAmB,OAAXg8T,GAAmBA,EAAOnoX,MAAMP,KAAMI,YAAcJ,KAGhE,OADA0sD,EAAMngD,KAAO02sC,EAAgB12sC,KACtBmgD,CACT,CAWA,OAlBAkgX,EAAUq2yB,EAAiBv61B,GAS3Bu61B,EAAgB12sC,KAAO,kBACvB02sC,EAAgBrirB,cAAgB6rd,GAAqB,GAAc7rd,cAAe,CAChFtwL,UAAU,EACV4y2B,UAAU,EACVlrG,kBAAkB,EAClBC,iBAAiB,EACjBC,kBAAkB,EAClBC,yBAAyB,IAEpB8qG,CACT,CApBA,CAoBE,IChBF,IAAI,GAAQ//O,KAkCZ,SAASigP,GAAsBC,EAAmBC,GAChD,GAAIA,EAAgB,CAClBD,EAAkB3gV,UAAU4gV,EAAetulC,MAAMq+N,KACjD,IAAI7iN,EAAa8ykC,EAAe9ykC,WAChCA,GAAcA,EAAW80zB,SAC3B,CACF,CA0CA,SAAS,GAAep25B,EAAK2iC,GACtB3iC,EAAIohgC,cACPphgC,EAAIu1/B,eAAe,CACjBj4hC,KAAM,WACNwjP,UAAW,CACTllI,OAAQ,WACRxlE,SAAU,KAEZusB,MAAOA,GAGb,CAEA,SAAS8rrB,GAAc+rZ,EAAetqpC,EAAG8E,EAAGjB,GAC1C,OAAOympC,EAAc13hC,iBAAiB8i7B,aAAa,CAAC5wiC,EAAGjB,GACzD,CCrGA,IAAIsgtC,GAEJ,SAAU561B,GAGR,SAAS461B,IACP,IAAI52pC,EAAmB,OAAXg8T,GAAmBA,EAAOnoX,MAAMP,KAAMI,YAAcJ,KAGhE,OADA0sD,EAAMngD,KAAO,kBACNmgD,CACT,CAmCA,OA1CAkgX,EAAU02yB,EAAgB561B,GAS1B461B,EAAe5jtC,UAAU4uH,OAAS,SAAUs+jC,EAAetpN,EAASr07B,GAClEy5U,EAAOhpX,UAAU4uH,OAAO/tH,MAAMP,KAAMI,WAEhCwsrC,EAAcoC,WAChBhvrC,KAAKo3lC,UAQPp3lC,KAAK+hI,MAAQ6qjC,EAAc4C,kBDnBxB,SAAqCvgpC,EAAK29oC,EAAel/V,GAC9D,GAAMz+yB,GAAKm0qC,kBAAkBphc,MAAK,SAAUqhc,GAC1C,IAAIE,EAASF,EAAeG,gBAAgBrgtC,IAAIyprC,EAAcx51B,KAE1Dmw3B,IACFA,EAAO71X,SAAWA,EAEtB,GACF,CCaI,CAAkCz+yB,EAAK29oC,EAAe,CACpD3nkC,IAAK5hH,GAAKogtC,GAAiBx+lC,IAAKjlH,MAChC2/B,KAAMt8B,GAAKogtC,GAAiB9jrC,KAAM3/B,MAClC0jtC,WAAYrgtC,GAAKogtC,GAAiBC,WAAY1jtC,QAElD,EAEAsjtC,EAAe5jtC,UAAU2l8B,QAAU,WACjCrl8B,KAAKo3lC,SAEL1uuB,EAAOhpX,UAAU2l8B,QAAQ9k8B,MAAMP,KAAMI,UACvC,EAEAkjtC,EAAe5jtC,UAAU03lC,OAAS,YDzB7B,SAAuCnojC,EAAK29oC,GAIjD,IAHA,IAAIw2B,EAAoB,GAAMn0qC,GAAKm0qC,kBAC/BO,EAAiBP,EAAkB9vsC,OAE9B1S,EAAI,EAAGA,EAAI+itC,EAAetjtC,OAAQO,IAAK,CAC9C,IAAI26qC,EAAcooC,EAAe/itC,GAC7ByitC,EAAiBD,EAAkBjgtC,IAAIo4qC,GACvCioC,EAAkBH,EAAeG,gBAErC,GAAIA,EAAiB,CACnB,IAAII,EAAQh3B,EAAcx51B,IACbow3B,EAAgBrgtC,IAAIygtC,KAG/BJ,EAAgB/gV,UAAUmhV,GAErBJ,EAAgBlwsC,OAAOjT,QAC1B8itC,GAAsBC,EAAmBC,GAG/C,CACF,CACF,CCII,CAAoCrjtC,KAAKivC,IAAKjvC,KAAK4srC,eACnD5srC,KAAK+hI,MAAQ,IACf,EAEAuhlC,EAAe/2sC,KAAO,kBACf+2sC,CACT,CA5CA,CA4CE,IAEEG,GAAmB,CACrB9jrC,KAAM,SAAU0uhC,EAAcqvH,EAAkBntiC,EAAYpxI,GAC1D,IAAIwt3B,EAAY3s3B,KAAK+hI,MACjBA,EAAQ4qvB,EAAU5q3B,QAElBirjC,EAAYqB,EAAawyF,WAAW,GAExC,GAAK7zF,EAAL,CAIA,IAAI62J,EAAgBC,GAAiBpmC,GAAkB,KAAM,CAACv+qC,EAAEwtL,QAASxtL,EAAEytL,SAAUog4B,EAAWz86B,EAAY896B,GACxG01J,GAAgBF,EAAc55rC,OAAS,EAAI45rC,EAAcG,WAAaH,EAAcI,YAAcJ,EAAcjslC,MAAQislC,EAAcjslC,MAAQislC,EAAcG,YAAcH,EAAcI,aAAelilC,EAAM,GAAKA,EAAM,IAAMA,EAAM,GACpOjgC,EAAQj/F,KAAK8K,IAAI,EAAIxO,EAAE2iG,MAAO,GAClCigC,EAAM,IAAMA,EAAM,GAAKgilC,GAAgBjinC,EAAQiinC,EAC/ChilC,EAAM,IAAMA,EAAM,GAAKgilC,GAAgBjinC,EAAQiinC,EAE/C,IAAIlxB,EAAa7yrC,KAAK4srC,cAAc8C,8BAA8BsB,gBAIlE,OAHAtyC,GAAW,EAAG38gC,EAAO,CAAC,EAAG,KAAM,EAAG8wjC,EAAWh0C,QAASg0C,EAAW/zC,SACjE9+oC,KAAK+hI,MAAQA,EAET4qvB,EAAU,KAAO5qvB,EAAM,IAAM4qvB,EAAU,KAAO5qvB,EAAM,GAC/CA,OADT,CAZA,CAeF,EACA9c,IAAKi/lC,IAAU,SAAUnilC,EAAOir7B,EAAWqB,EAAcqvH,EAAkBntiC,EAAYpxI,GACrF,IAAI0ktC,EAAgBC,GAAiBpmC,GAAkB,CAACv+qC,EAAEu5mC,KAAMv5mC,EAAEw5mC,MAAO,CAACx5mC,EAAEqz3B,KAAMrz3B,EAAEsz3B,MAAOu6L,EAAWz86B,EAAY896B,GAClH,OAAOw1J,EAAc55rC,QAAU83G,EAAM,GAAKA,EAAM,IAAM8hlC,EAAcjslC,MAAQislC,EAAcI,WAC5F,IACAP,WAAYQ,IAAU,SAAUnilC,EAAOir7B,EAAWqB,EAAcqvH,EAAkBntiC,EAAYpxI,GAE5F,OADoB2ktC,GAAiBpmC,GAAkB,CAAC,EAAG,GAAI,CAACv+qC,EAAE65mC,YAAa75mC,EAAE65mC,aAAchsD,EAAWz86B,EAAY896B,GACjGpkiC,QAAU83G,EAAM,GAAKA,EAAM,IAAM5iI,EAAE65mC,WAC1D,KAGF,SAASkrG,GAAUC,GACjB,OAAO,SAAU91J,EAAcqvH,EAAkBntiC,EAAYpxI,GAC3D,IAAIwt3B,EAAY3s3B,KAAK+hI,MACjBA,EAAQ4qvB,EAAU5q3B,QAElBirjC,EAAYqB,EAAawyF,WAAW,GAExC,GAAK7zF,EAQL,OAHA0xF,GADmBylE,EAAgBpilC,EAAOir7B,EAAWqB,EAAcqvH,EAAkBntiC,EAAYpxI,GACxE4iI,EAAO,CAAC,EAAG,KAAM,OAC1C/hI,KAAK+hI,MAAQA,EAET4qvB,EAAU,KAAO5qvB,EAAM,IAAM4qvB,EAAU,KAAO5qvB,EAAM,GAC/CA,OADT,CAGF,CACF,CAEA,IAAI+hlC,GAAmB,CACrBv99B,KAAM,SAAU699B,EAAUC,EAAUr3J,EAAWz86B,EAAY896B,GACzD,IAAI5j3B,EAAOui3B,EAAUvi3B,KACjBw1R,EAAM,CAAC,EACPvsY,EAAO269B,EAAat57B,MAAMhD,iBAAiBul8B,UAgB/C,OAfA8sJ,EAAWA,GAAY,CAAC,EAAG,GAEV,MAAb35gC,EAAKktJ,KACPsoI,EAAIroW,MAAQyslC,EAAS,GAAKD,EAAS,GACnCnkvB,EAAIgkvB,YAAcvwnC,EAAK30D,MACvBkhc,EAAI+jvB,WAAatwnC,EAAKzvF,EACtBg8d,EAAIh2c,OAASwgL,EAAK4zjB,QAAU,GAAK,IAGjCp+R,EAAIroW,MAAQyslC,EAAS,GAAKD,EAAS,GACnCnkvB,EAAIgkvB,YAAcvwnC,EAAK10D,OACvBihc,EAAI+jvB,WAAatwnC,EAAK1wF,EACtBi9d,EAAIh2c,OAASwgL,EAAK4zjB,SAAW,EAAI,GAG5Bp+R,CACT,EACAy9W,MAAO,SAAU0mY,EAAUC,EAAUr3J,EAAWz86B,EAAY896B,GAC1D,IAAI5j3B,EAAOui3B,EAAUvi3B,KACjBw1R,EAAM,CAAC,EACPy9W,EAAQ2wO,EAAat57B,MAAMhD,iBAC3Bqk/B,EAAe14R,EAAMsxV,gBAAgBx/G,YACrC4oF,EAAc16T,EAAMwxV,eAAe1/G,YAqBvC,OApBA40J,EAAWA,EAAW1mY,EAAMozQ,aAAaszH,GAAY,CAAC,EAAG,GACzDC,EAAW3mY,EAAMozQ,aAAauzH,GAEH,eAAvBr3J,EAAUlpF,UACZ7jgB,EAAIroW,MAAQyslC,EAAS,GAAKD,EAAS,GAGnCnkvB,EAAIgkvB,YAAc7tG,EAAa,GAAKA,EAAa,GACjDn2oB,EAAI+jvB,WAAa5tG,EAAa,GAC9Bn2oB,EAAIh2c,OAASwgL,EAAK4zjB,QAAU,GAAK,IAGjCp+R,EAAIroW,MAAQyslC,EAAS,GAAKD,EAAS,GAGnCnkvB,EAAIgkvB,YAAc7rE,EAAY,GAAKA,EAAY,GAC/Cn4qB,EAAI+jvB,WAAa5rE,EAAY,GAC7Bn4qB,EAAIh2c,OAASwgL,EAAK4zjB,SAAW,EAAI,GAG5Bp+R,CACT,EACAsslB,WAAY,SAAU63J,EAAUC,EAAUr3J,EAAWz86B,EAAY896B,GAC/D,IAAI5j3B,EAAOui3B,EAAUvi3B,KACjB/2G,EAAO269B,EAAat57B,MAAMhD,iBAAiBul8B,UAC3Cr3lB,EAAM,CAAC,EAgBX,OAfAmkvB,EAAWA,GAAY,CAAC,EAAG,GAEP,eAAhB35gC,EAAK+ozB,QACPvzhB,EAAIroW,MAAQyslC,EAAS,GAAKD,EAAS,GACnCnkvB,EAAIgkvB,YAAcvwnC,EAAK30D,MACvBkhc,EAAI+jvB,WAAatwnC,EAAKzvF,EACtBg8d,EAAIh2c,OAASwgL,EAAK4zjB,QAAU,GAAK,IAGjCp+R,EAAIroW,MAAQyslC,EAAS,GAAKD,EAAS,GACnCnkvB,EAAIgkvB,YAAcvwnC,EAAK10D,OACvBihc,EAAI+jvB,WAAatwnC,EAAK1wF,EACtBi9d,EAAIh2c,OAASwgL,EAAK4zjB,SAAW,EAAI,GAG5Bp+R,CACT,GAEF,YClLO,SAAS,GAAQ8vmB,GACtBujH,GAAcvjH,GACdA,EAAUpyB,uBAAuB,IACjCoyB,EAAUnyB,sBAAsB,IFgJ3B,SAAsCmyB,GAC3CA,EAAU70B,kBAAkB60B,EAAU/gC,SAASC,UAAUrxW,QAAQ,SAAU0lS,EAASr07B,GAClF,IAAIq1qC,EAAW,GAAMr1qC,GACjBm0qC,EAAoBkB,EAASlB,oBAAsBkB,EAASlB,kBAAoBl4Q,MACpFk4Q,EAAkBphc,MAAK,SAAUqhc,GAG/BA,EAAeG,gBAAkB,IACnC,IACAlgP,EAAQwe,cAAc,CACpBhe,SAAU,WACViD,QAAS,WACR,SAAU6lN,GAEX,EAD0BD,GAA8BC,GAC/BE,UAAU,SAAUy3B,GAC3C,IAAIt3B,EAAcs3B,EAAexvlC,MAAMq+N,IACnCiw3B,EAAiBD,EAAkBjgtC,IAAI8prC,IAAgBm2B,EAAkBn3sC,IAAIghrC,EAnHzF,SAA8Bh+oC,EAAKw6mC,GAEjC,IAAI45D,EAAiB,CACnBtulC,MAAO00hC,EACP/rZ,cAAessM,GAAMtsM,GAAe+rZ,GACpCjlH,eAAgBx6F,GAAM,GAAgB/65B,GACtCu0qC,gBAAiB,KACjBjzkC,WAAY,MAIVA,EAAa8ykC,EAAe9ykC,WAAa,IAAI,GAAethG,EAAIk9/B,SAsBpE,OArBA,EAAK,CAAC,MAAO,OAAQ,eAAe,SAAU98/B,GAC5CkhG,EAAW3/H,GAAGy+B,GAAW,SAAU5Q,GACjC,IAAImzC,EAAQ,GACZyxoC,EAAeG,gBAAgBxhc,MAAK,SAAUuhc,GAG5C,GAAK9krC,EAAMg6kC,oBAAoB8qG,EAAOxulC,MAAMl3D,QAA5C,CAIA,IAAIptC,GAAU8yrC,EAAO71X,UAAY,CAAC,GAAGr+yB,GACjC0yF,EAAQtxG,GAAUA,EAAO8yrC,EAAOiB,oBAAqBnB,EAAetulC,MAAM+u2B,SAAUu/O,EAAe9ykC,WAAY9xG,IAClH8krC,EAAOxulC,MAAM5xH,IAAI,YAAY,IAAS4+H,GAASnwD,EAAM/vE,KAAK,CACzDs7rC,WAAYomB,EAAOxulC,MAAMxpG,GACzBib,MAAOu7F,EAAM,GACbt7F,IAAKs7F,EAAM,IAPb,CASF,IACAnwD,EAAMvxE,QAAUgjtC,EAAe7+K,eAAe5y9B,EAChD,GACF,IACOyxoC,CACT,CAiFsGoB,CAAqBx1qC,EAAKs1qC,EAAexvlC,SACjHsulC,EAAeG,kBAAoBH,EAAeG,gBAAkBt4Q,OAE1Ej/7B,IAAI2grC,EAAcx51B,IAAK,CACrCox3B,oBAAqBD,EACrBxvlC,MAAO63jC,EACPl/V,SAAU,MAEd,GACF,IAGA01X,EAAkBphc,MAAK,SAAUqhc,GAC/B,IACIqB,EADAn0kC,EAAa8ykC,EAAe9ykC,WAE5BizkC,EAAkBH,EAAeG,gBAErC,GAAIA,EAAiB,CACnB,IAAImB,EAAanB,EAAgBlwsC,OAAO,GAEtB,MAAdqxsC,IACFD,EAAclB,EAAgBrgtC,IAAIwhtC,GAEtC,CAEA,GAAKD,EAAL,CAKA,IAAIE,EApFV,SAA+BpB,GAC7B,IAAI1rG,EAGAvllC,EAAS,QACTsyrC,EAAe,CACjB,UAAa,EACb,UAAa,EACb,WAAc,EACd,gBAAmB,GAEjB1sG,GAA0B,EAa9B,OAZAqrG,EAAgBxhc,MAAK,SAAU8ic,GAC7B,IAAIl4B,EAAgBk4B,EAAa/vlC,MAC7BgwlC,GAAUn4B,EAAczprC,IAAI,YAAY,MAAgByprC,EAAczprC,IAAI,YAAY,IAAQ,QAE9F0htC,EAAatyrC,EAASwyrC,GAAWF,EAAatyrC,EAASullC,KACzDA,EAAcitG,GAKhB5sG,EAA0BA,GAA2By0E,EAAczprC,IAAI,2BAA2B,EACpG,IACO,CACL20mC,YAAaA,EACb13kB,IAAK,CAIH43kB,kBAAkB,EAClBC,iBAAiB,EACjBC,kBAAkB,EAClBC,0BAA2BA,GAGjC,CAgD6B6sG,CAAsBxB,GAC7CjzkC,EAAWvtH,OAAO4hsC,EAAiB9sG,YAAa8sG,EAAiBxkrB,KACjE7vZ,EAAWgo+B,kBAAkB8qG,EAAe3ld,eAC5C,GAA4B2ld,EAAgB,iBAAkBqB,EAAY3vlC,MAAM5xH,IAAI,YAAY,GAAO,UALvG,MAFEggtC,GAAsBC,EAAmBC,EAQ7C,GACF,GACF,CEnME4B,CAA6Bl1I,EAC/B,CCgFA,SAnFA,SAAUrntB,GAGR,SAASw81B,IACP,IAAIx4pC,EAAmB,OAAXg8T,GAAmBA,EAAOnoX,MAAMP,KAAMI,YAAcJ,KAGhE,OADA0sD,EAAMngD,KAAO24sC,EAAgB34sC,KACtBmgD,CACT,CAwEA,OA/EAkgX,EAAUs4yB,EAAiBx81B,GAS3Bw81B,EAAgB34sC,KAAO,kBACvB24sC,EAAgB1wN,WAAa,MAC7B0wN,EAAgBtkrB,cAAgB6rd,GAAqB,GAAc7rd,cAAe,CAChF39M,MAAM,EAENpjP,MAAO,KACP/gE,IAAK,KACLC,MAAO,KACPC,OAAQ,KACRH,KAAM,KACNihE,OAAQ,KACRw4Q,YAAa,UACbK,aAAc,EACdj/N,gBAAiB,mBAEjBmo5B,eAAgB,CACd1vT,UAAW,CACT5knB,MAAO,UACPxuF,MAAO,IAETyl9B,UAAW,CACTj33B,MAAO,UACPqe,QAAS,KAGbk25B,uBAAwB,CACtB3vT,UAAW,CACT5knB,MAAO,UACPxuF,MAAO,IAETyl9B,UAAW,CACTj33B,MAAO,UACPqe,QAAS,KAIbg25B,YAAa,wBACbujL,WAAY,kHAEZr/D,WAAY,OACZpkH,YAAa,CACXn06B,MAAO,OACP+qP,YAAa,WAEf8s2B,eAAgB,EAChBC,eAAgB,maAChB1jL,gBAAiB,CACfp06B,MAAO,UACPqe,QAAS,IAEX05kC,YAAY,EACZC,eAAgB,OAChBp7D,UAAU,EACV+4D,UAAU,EACVl6N,UAAW,CACTz73B,MAAO,WAETi4lC,aAAa,EACb/jL,WAAY,CACVl06B,MAAO,0BAETqz2B,SAAU,CACR8gE,YAAa,CACXpprB,YAAa,WAEfqprB,gBAAiB,CACfp06B,MAAO,cAIN23lC,CACT,CAjFA,CAiFE,ICzEF,IAAI,GAAO,GAMPO,GAAa,aACbC,GAAW,WAEXC,GAA+B,CAAC,OAAQ,MAAO,cAAe,WAC9DC,GAA4B,CAC9B/6lC,OAAQ,WACRxlE,SAAU,IACVlE,MAAO,GAGL0kqC,GAEJ,SAAUn91B,GAGR,SAASm91B,IACP,IAAIn5pC,EAAmB,OAAXg8T,GAAmBA,EAAOnoX,MAAMP,KAAMI,YAAcJ,KAIhE,OAFA0sD,EAAMngD,KAAOs5sC,EAAet5sC,KAC5BmgD,EAAM6n+B,cAAgB,CAAC,EAChB7n+B,CACT,CA4zBA,OAp0BAkgX,EAAUi5yB,EAAgBn91B,GAU1Bm91B,EAAenmtC,UAAUgxD,KAAO,SAAU4y6B,EAASr07B,GACjDjvC,KAAKivC,IAAMA,EAEXjvC,KAAKuppC,SAAWlmpC,GAAKrD,KAAKuppC,SAAUvppC,MACpCA,KAAK8ltC,YAAczitC,GAAKrD,KAAK8ltC,YAAa9ltC,KAC5C,EAEA6ltC,EAAenmtC,UAAU4uH,OAAS,SAAUs+jC,EAAetpN,EAASr07B,EAAKna,GAMvE,GALA4zV,EAAOhpX,UAAU4uH,OAAO/tH,MAAMP,KAAMI,WAEpC,GAAwBJ,KAAM,sBAAuB4srC,EAAczprC,IAAI,YAAa,WACpFnD,KAAK8mrC,QAAU8F,EAAcv7D,aAEK,IAA9Bu7D,EAAczprC,IAAI,QAAtB,CAKA,GAAIyprC,EAAcoC,WAIhB,OAHAhvrC,KAAKo3lC,cAELp3lC,KAAKo7T,MAAMvtE,YAOR/4N,GAA4B,aAAjBA,EAAQvoB,MAAuBuoB,EAAQ/W,OAAS/d,KAAKozV,KACnEpzV,KAAK+ltC,aAGP/ltC,KAAKgmtC,aAhBL,MAFEhmtC,KAAKo7T,MAAMvtE,WAmBf,EAEAg49B,EAAenmtC,UAAU2l8B,QAAU,WACjCrl8B,KAAKo3lC,SAEL1uuB,EAAOhpX,UAAU2l8B,QAAQ9k8B,MAAMP,KAAMI,UACvC,EAEAyltC,EAAenmtC,UAAU03lC,OAAS,WAChC,GAAep3lC,KAAM,uBACrB,IAAIuY,EAAKvY,KAAKivC,IAAIk9/B,QAClB5zhC,EAAGy1B,IAAI,YAAahuC,KAAKuppC,UACzBhxoC,EAAGy1B,IAAI,UAAWhuC,KAAK8ltC,YACzB,EAEAD,EAAenmtC,UAAUqmtC,WAAa,WACpC,IAAIhtF,EAAY/4nC,KAAKo7T,MACrB29zB,EAAUlr4B,YACV7tP,KAAKimtC,WAAY,EACjBjmtC,KAAKu0hC,cAAc8/H,UAAY,KAE/Br0pC,KAAKkmtC,iBAELlmtC,KAAKmmtC,iBAEL,IAAIjthB,EAAWl5rB,KAAKu0hC,cAAc6xL,YAAc,IAAI,GAEpDpmtC,KAAKw5+B,oBAELx5+B,KAAKq2qC,gBAELr2qC,KAAKqmtC,oBAELttF,EAAU5zmC,IAAI+zqB,GAEdl5rB,KAAKsmtC,gBACP,EAEAT,EAAenmtC,UAAUwmtC,eAAiB,WACxC,IAAIt5B,EAAgB5srC,KAAK4srC,cACrB39oC,EAAMjvC,KAAKivC,IAEXm2qC,EADiBx4B,EAAczprC,IAAI,eAlGZ,EAmGsC,EAG7DojtC,EAAYvmtC,KAAKwmtC,iBAEjBtlD,EAAS,CACXnioC,MAAOkQ,EAAIk8L,WACXnsM,OAAQiQ,EAAI+rI,aAGVg50B,EAAeh0/B,KAAK8mrC,UAAY2+B,GAAa,CAG/C5lnC,MAAOqhkC,EAAOnioC,MAAQwnrC,EAAUtitC,EAAIsitC,EAAUxnrC,MAC9CD,IAAKoioC,EAAOlioC,OAlHQ,GAFM,EAoH6ComrC,EACvErmrC,MAAOwnrC,EAAUxnrC,MACjBC,OApHoB,IAqHlB,CACF6gE,MAxH0B,EAyH1B/gE,IAAKynrC,EAAUvjtC,EACf+7B,MAxHoB,GAyHpBC,OAAQunrC,EAAUvnrC,QAIhBsopC,EAAe,GAAuBsF,EAAc/unC,QAExD,EAAK,CAAC,QAAS,MAAO,QAAS,WAAW,SAAUnzD,GACvB,OAAvB48qC,EAAa58qC,KACf48qC,EAAa58qC,GAAQsp/B,EAAatp/B,GAEtC,IACA,IAAIwo9B,EAAa,GAAqBo0N,EAAcpmB,GACpDlhqC,KAAKymtC,UAAY,CACfxitC,EAAGiv9B,EAAWjv9B,EACdjB,EAAGkw9B,EAAWlw9B,GAEhBhD,KAAK0mtC,MAAQ,CAACxzP,EAAWn07B,MAAOm07B,EAAWl07B,QAC3Ch/B,KAAK8mrC,UAAY4+B,IAAY1ltC,KAAK0mtC,MAAMpspC,SAC1C,EAEAurpC,EAAenmtC,UAAU4mtC,eAAiB,WACxC,IAAIvtF,EAAY/4nC,KAAKo7T,MACjBrkS,EAAW/2B,KAAKymtC,UAChBjzN,EAASxz/B,KAAK8mrC,QAEd6/B,EAAkB3mtC,KAAK4srC,cAAcqC,0BACrC5wb,EAAUsod,GAAmBA,EAAgBxjtC,IAAI,WACjDijtC,EAAcpmtC,KAAKu0hC,cAAc6xL,YACjCQ,GAAoB5mtC,KAAK6mtC,iBAAmB,CAAC,GAAGD,iBAEpDR,EAAYn4rB,KAAKule,IAAWiyN,IAAepnd,EAGvCm1P,IAAWiyN,IAAcpnd,EAAU,CACrCxloB,OAAQ+tlC,EAAmB,GAAK,EAChChulC,QAAS,GACP463B,IAAWkyN,IAAarnd,EAK1B,CACAxloB,OAAQ+tlC,GAAoB,EAAI,EAChChulC,QAAS,EACTrS,SAAU1jH,KAAKsmC,GAAK,GARgB,CACpC0vF,OAAQ+tlC,GAAoB,EAAI,EAChChulC,OAAQ,EACRrS,SAAU1jH,KAAKsmC,GAAK,GAT+B,CACnD0vF,OAAQ+tlC,EAAmB,GAAK,EAChChulC,OAAQ,IAeV,IAAIllC,EAAOqliC,EAAU504B,gBAAgB,CAACii+B,IACtCrtF,EAAU90nC,EAAI8yB,EAAS9yB,EAAIyvF,EAAKzvF,EAChC80nC,EAAU/1nC,EAAI+zB,EAAS/zB,EAAI0wF,EAAK1wF,EAChC+1nC,EAAUrmK,YACZ,EAEAmzP,EAAenmtC,UAAUontC,eAAiB,WACxC,MAAO,CAAC,EAAG9mtC,KAAK0mtC,MAAM,GACxB,EAEAb,EAAenmtC,UAAU85+B,kBAAoB,WAC3C,IAAIozM,EAAgB5srC,KAAK4srC,cACrBhoqC,EAAO5kB,KAAK0mtC,MACZxthB,EAAWl5rB,KAAKu0hC,cAAc6xL,YAC9BZ,EAAc54B,EAAczprC,IAAI,eACpC+1rB,EAAS/zqB,IAAI,IAAI,GAAK,CACpBivd,QAAQ,EACR9xQ,MAAO,CACLr+N,EAAG,EACHjB,EAAG,EACH+7B,MAAOna,EAAK,GACZoa,OAAQpa,EAAK,IAEfvQ,MAAO,CACL+oH,KAAMwvjC,EAAczprC,IAAI,oBAE1B45L,IAAK,MAGP,IAAIgqhC,EAAa,IAAI,GAAK,CACxBzk/B,MAAO,CACLr+N,EAAG,EACHjB,EAAG,EACH+7B,MAAOna,EAAK,GACZoa,OAAQpa,EAAK,IAEfvQ,MAAO,CACL+oH,KAAM,eAER2/D,GAAI,EACJ087B,QAASp2nC,GAAKrD,KAAKgntC,cAAehntC,QAEhCuY,EAAKvY,KAAKivC,IAAIk9/B,QAEdq5K,GACFuB,EAAWn2sC,GAAG,YAAa5Q,KAAKintC,cAAejntC,MAC/C+mtC,EAAW1lkC,OAAS,YACpB9oI,EAAG3H,GAAG,YAAa5Q,KAAKuppC,UACxBhxoC,EAAG3H,GAAG,UAAW5Q,KAAK8ltC,eAEtBvtsC,EAAGy1B,IAAI,YAAahuC,KAAKuppC,UACzBhxoC,EAAGy1B,IAAI,UAAWhuC,KAAK8ltC,cAGzB5shB,EAAS/zqB,IAAI4hsC,EACf,EAEAlB,EAAenmtC,UAAU2mtC,kBAAoB,WAC3C,IAAI7uqC,EAAOx3C,KAAK6mtC,gBAAkB7mtC,KAAKkntC,yBAIvC,GAFAlntC,KAAKu0hC,cAAc4yL,eAAiB,GAE/B3vqC,EAAL,CAIA,IAAI5yB,EAAO5kB,KAAK0mtC,MACZrzb,EAAUrzxB,KAAKontC,aAAe,GAC9BpkO,EAAcxr8B,EAAKsluB,OACnBttwB,EAAOwz+B,EAAYizB,aACnBoxM,EAAiBrkO,EAAYoxK,cAAgBpxK,EAAYoxK,eACzDj+K,EAAWkxO,GAAkB73sC,EAAK819B,iBAAiB+hP,GAAkBrkO,EAAYoxK,eACnF58mC,EAAK2+7B,SAEP,GAAgB,MAAZA,EAAJ,CAIA,IAAImxO,EAAatntC,KAAKuntC,kBAClBC,EAAcxntC,KAAKyntC,mBAEvB,GAAIj4sC,IAASxP,KAAK0ntC,aAAevxO,IAAan2+B,KAAK2ntC,YAAc/isC,EAAK,KAAOyuwB,EAAQ,IAAMzuwB,EAAK,KAAOyuwB,EAAQ,GAAI,CACjH,IAAIu0b,EAAoBp4sC,EAAKivgC,cAActoC,GAEvC0xO,EAA8D,IAA/CD,EAAkB,GAAKA,EAAkB,IAC5DA,EAAoB,CAACA,EAAkB,GAAKC,EAAaD,EAAkB,GAAKC,GAChF,IAQIC,EARAC,EAAsB,CAAC,EAAGnjsC,EAAK,IAC/BojsC,EAAmB,CAAC,EAAGpjsC,EAAK,IAC5BqjsC,EAAe,CAAC,CAACrjsC,EAAK,GAAI,GAAI,CAAC,EAAG,IAClCsjsC,EAAe,GACfC,EAASH,EAAiB,IAAMx4sC,EAAK+5C,QAAU,GAC/C6+pC,EAAc,EAEdC,EAAWxltC,KAAKogD,MAAMzzC,EAAK+5C,QAAU3kC,EAAK,IAE9CpV,EAAKwywB,KAAK,CAACm0N,IAAW,SAAUh1+B,EAAO6b,GACrC,GAAIqrsC,EAAW,GAAKrrsC,EAAQqrsC,EAC1BD,GAAeD,MADjB,CASA,IAAI9/oC,EAAmB,MAATlnE,GAAiBmrC,MAAMnrC,IAAoB,KAAVA,EAE3CmntC,EAAajgpC,EAAU,EAAIq15B,GAAUv89B,EAAOymtC,EAAmBG,GAAqB,GAEpF1/oC,IAAYy/oC,GAAiB9qsC,GAC/BirsC,EAAapmtC,KAAK,CAAComtC,EAAaA,EAAa5ntC,OAAS,GAAG,GAAI,IAC7D6ntC,EAAarmtC,KAAK,CAACqmtC,EAAaA,EAAa7ntC,OAAS,GAAG,GAAI,MACnDgoE,GAAWy/oC,IACrBG,EAAapmtC,KAAK,CAACumtC,EAAa,IAChCF,EAAarmtC,KAAK,CAACumtC,EAAa,KAGlCH,EAAapmtC,KAAK,CAACumtC,EAAaE,IAChCJ,EAAarmtC,KAAK,CAACumtC,EAAaE,IAChCF,GAAeD,EACfL,EAAgBz/oC,CArBhB,CAsBF,IACAi/oC,EAAatntC,KAAKuntC,kBAAoBU,EACtCT,EAAcxntC,KAAKyntC,mBAAqBS,CAC1C,CAEAlotC,KAAK0ntC,YAAcl4sC,EACnBxP,KAAK2ntC,WAAaxxO,EAClBn2+B,KAAKontC,YAAc,CAACxisC,EAAK,GAAIA,EAAK,IA8BlC,IA7BA,IAAIgoqC,EAAgB5srC,KAAK4srC,cA6BhBhsrC,EAAI,EAAGA,EAAI,EAAGA,IAAK,CAC1B,IAAIw6T,EAAQmt5B,EAA4B,IAAN3ntC,GAElCZ,KAAKu0hC,cAAc6xL,YAAYjhsC,IAAIi2S,GAEnCp7T,KAAKu0hC,cAAc4yL,eAAetltC,KAAKu5T,EACzC,CAxFA,CAZA,CAmEA,SAASmt5B,EAAsBC,GAC7B,IAAIzzlC,EAAQ63jC,EAAch1/B,SAAS4whC,EAAiB,yBAA2B,kBAC3Ept5B,EAAQ,IAAI,GACZn2R,EAAU,IAAI,GAAgB,CAChCq9L,MAAO,CACLh3L,OAAQg8qC,GAEVt3O,uBAAwB,EACxB379B,MAAO0gH,EAAM6iE,SAAS,aAAa4vyB,eACnCpzf,QAAQ,EACRr3S,IAAK,KAEHikO,EAAW,IAAI,GAAiB,CAClC1+L,MAAO,CACLh3L,OAAQk8qC,GAEVx3O,uBAAwB,EACxB379B,MAAO0gH,EAAM6iE,SAAS,aAAag0zB,eACnCx3gB,QAAQ,EACRr3S,IAAK,KAIP,OAFAq+H,EAAMj2S,IAAI8f,GACVm2R,EAAMj2S,IAAI67Y,GACH5lG,CACT,CAUF,EAEAyq5B,EAAenmtC,UAAUwntC,uBAAyB,WAChD,IAAIt6B,EAAgB5srC,KAAK4srC,cACrB24B,EAAiB34B,EAAczprC,IAAI,kBAEvC,IAAuB,IAAnBoitC,EAAJ,CAKA,IAAI/hsC,EACA8/8B,EAAUtj+B,KAAKsj+B,QA+BnB,OA9BAspN,EAAcI,gBAAe,SAAU//H,EAASF,GAE9C,EADmB6/H,EAAcuC,aAAaliI,EAASF,GAAW6jI,yBAC/C,SAAU5tM,GAC3B,KAAIx/9B,IAImB,IAAnB+hsC,GAA2B/ktC,EAAQmltC,GAA8B3iO,EAAY7/+B,IAAI,SAAW,GAAhG,CAIA,IAEIyjtC,EAFA6B,EAAWnlP,EAAQnpoB,aAAauy1B,GAAgBz/H,GAAUF,GAAWti3B,KACrE0ryB,EAmfA,CACRly+B,EAAG,IACHjB,EAAG,IACHs0I,OAAQ,QACRq3F,MAAO,UAvfwBs+0B,GAEvB/pE,EAAWF,EAAYjx3B,iBAEX,MAAZok3B,GAAoB+M,EAASkzE,eAC/BwwJ,EAAmB1jO,EAASkzE,aAAaqyJ,GAAUpqd,SAGrD83O,EAAW6M,EAAYx+2B,UAAU4h7B,aAAajwE,GAC9C3y9B,EAAS,CACPilsC,SAAUA,EACV3rc,OAAQkmO,EACR0lO,QAASz7J,EACT92E,SAAUA,EACVywO,iBAAkBA,EAjBpB,CAmBF,GAAG5mtC,KACL,GAAGA,MACIwjB,CAnCP,CAoCF,EAEAqisC,EAAenmtC,UAAU22qC,cAAgB,WACvC,IAAIt9C,EAAY/4nC,KAAKo7T,MACjB05tB,EAAe90hC,KAAKu0hC,cACpBh8pB,EAAUu8pB,EAAav8pB,QAAU,CAAC,KAAM,MACxCow1B,EAAe7zL,EAAa6zL,aAAe,CAAC,KAAM,MAClDvC,EAAcpmtC,KAAKu0hC,cAAc6xL,YACjCxhsC,EAAO5kB,KAAK0mtC,MACZ95B,EAAgB5srC,KAAK4srC,cACrB39oC,EAAMjvC,KAAKivC,IACX0pU,EAAei00B,EAAczprC,IAAI,iBAAmB,EACpDqitC,EAAc54B,EAAczprC,IAAI,eAChCyltC,EAAS9zL,EAAa8zL,OAAS,IAAI,GAAK,CAC1Cx0uB,OAAQoxuB,EACRnxsC,MAAO,CACL+oH,KAAMwvjC,EAAczprC,IAAI,gBAE1B0v9B,WAAY,CACVl07B,SAAU,YAGdynrC,EAAYjhsC,IAAIyjsC,GAEhBxC,EAAYjhsC,IAAI,IAAI,GAAK,CACvBivd,QAAQ,EACRmhgB,kBAAkB,EAClBjzwB,MAAO,CACLr+N,EAAG,EACHjB,EAAG,EACH+7B,MAAOna,EAAK,GACZoa,OAAQpa,EAAK,GACb7kB,EAAG44W,GAELtkW,MAAO,CAEL+owB,OAAQwva,EAAczprC,IAAI,wBAA0ByprC,EAAczprC,IAAI,eACtEkvU,UA/ZyB,EAgazBj1M,KAAM,oBAIV,EAAK,CAAC,EAAG,IAAI,SAAUwhhC,GACrB,IAAIxnH,EAAUw1J,EAAczprC,IAAI,eAE3B4iiC,GAAmB3O,IAAYA,EAAQ52hC,QAAQ,WAAa,GAAK42hC,EAAQ52hC,QAAQ,YAAc,IAElG42hC,EAAU,UAAYA,GAOxB,IAAI/ggC,EAAO,GAAa+ggC,GAAU,EAAG,EAAG,EAAG,EAAG,MAAM,GACpD/ggC,EAAK43f,KAAK,CACR5sY,OAAQ/F,GAAUt7I,KAAK8mrC,SACvBvgyB,WAAW,EACX3uS,MAAOv0G,GAAKrD,KAAK6otC,YAAa7otC,KAAM4+oC,GACpC8G,UAAWripC,GAAKrD,KAAK8otC,WAAY9otC,MACjC+otC,YAAa1ltC,GAAKrD,KAAKgptC,cAAehptC,MAAM,GAC5CiptC,WAAY5ltC,GAAKrD,KAAKgptC,cAAehptC,MAAM,GAC3C+8L,GAAI,IAEN,IAAImshC,EAAQ7yrC,EAAK8tN,kBACb2h6B,EAAa8mC,EAAczprC,IAAI,cACnCnD,KAAKmptC,cAAgB,GAAarjE,EAAY9lpC,KAAK0mtC,MAAM,IACzD1mtC,KAAKoptC,aAAeF,EAAMnqrC,MAAQmqrC,EAAMlqrC,OAASh/B,KAAKmptC,cACtD9yrC,EAAKiuY,SAASsoxB,EAAch1/B,SAAS,eAAem0zB,gBACpD119B,EAAKhiB,MAAM8+9B,eAAgB,EAC3B988B,EAAKmg7B,WAAY,EACjBng7B,EAAKm/7B,YAAY,YAAYnh9B,MAAQu4qC,EAAch1/B,SAAS,CAAC,WAAY,gBAAgBm0zB,eACzF/H,GAAoB3t9B,GACpB,IAAIgzrC,EAAcz8B,EAAczprC,IAAI,eAGjB,MAAfkmtC,IACFhzrC,EAAKhiB,MAAM+oH,KAAOislC,GAGpBjD,EAAYjhsC,IAAIozW,EAAQqmxB,GAAevonC,GACvC,IAAIuy9B,EAAiBgkM,EAAch1/B,SAAS,aAC5Cmh8B,EAAU5zmC,IAAIwjsC,EAAa/pE,GAAe,IAAI,GAAa,CACzDxqqB,QAAQ,EACRknf,WAAW,EACXjn9B,MAAOg0+B,GAAgBO,EAAgB,CACrC3k/B,EAAG,EACHjB,EAAG,EACHotB,KAAM,GACN+itB,cAAe,SACfoxC,MAAO,SACPnnpB,KAAMwr3B,EAAen2wB,eACrBqS,KAAM8jwB,EAAepjO,YAEvBzolB,GAAI,KAER,GAAG/8L,MAEH,IAAIsptC,EAAiBV,EAErB,GAAIpD,EAAa,CACf,IAAI+D,EAAmB,GAAa38B,EAAczprC,IAAI,kBAAmByhB,EAAK,IAC1E4ksC,EAAe10L,EAAa20L,WAAa,IAAI,GAAa,CAC5Dp1sC,MAAOu4qC,EAAch1/B,SAAS,mBAAmBm0zB,eACjD33gB,QAAQ,EACR9xQ,MAAO,CACLviO,EAAG,CAAC,EAAG,EAAG,EAAG,GACbiD,EAAG4hB,EAAK,GAAK,GACboa,OAAQuqrC,KAGRxW,EAA8B,GAAnBwW,EACXlE,EAAiBvwL,EAAauwL,eAAiB,GAAaz4B,EAAczprC,IAAI,mBAAoB4vsC,EAAW,GAAIA,EAAW,EAAGA,EAAUA,EAAU,QAAQ,GAC/JsS,EAAejxuB,QAAS,EACxBixuB,EAAeritC,EAAI4hB,EAAK,GAAK2ksC,EAAmB,EAAI,GACpDC,EAAah0P,YAAY,YAAYnh9B,MAAQu4qC,EAAch1/B,SAAS,CAAC,WAAY,oBAAoBm0zB,eACrG,IAAI29N,EAAqB7mtC,KAAKgL,IAAI+W,EAAK,GAAK,EAAG/hB,KAAK8K,IAAI47sC,EAAkB,MAC1ED,EAAiBx0L,EAAa60L,SAAW,IAAI,GAAa,CACxDruP,WAAW,EACXh5vB,MAAO,CACLt/N,EAAG4hB,EAAK,GAAK8ksC,EACb1qrC,OAAQuqrC,EAAmBG,MAGhB94sC,GAAG,aAAa,WAC7Bq+B,EAAIky8B,cAAcqoO,EACpB,IAAG54sC,GAAG,YAAY,WAChBq+B,EAAIoy8B,cAAcmoO,EACpB,IACApD,EAAYjhsC,IAAIqksC,GAChBpD,EAAYjhsC,IAAIkgsC,GAChBe,EAAYjhsC,IAAImksC,EAClB,CAEAA,EAAer7rB,KAAK,CAClB1nI,WAAW,EACXllQ,OAAQ/F,GAAUt7I,KAAK8mrC,SACvBlvkC,MAAOv0G,GAAKrD,KAAK6otC,YAAa7otC,KAAM,OACpC4ptC,YAAavmtC,GAAKrD,KAAKgptC,cAAehptC,MAAM,GAC5C0lpC,UAAWripC,GAAKrD,KAAK8otC,WAAY9otC,MACjC+otC,YAAa1ltC,GAAKrD,KAAKgptC,cAAehptC,MAAM,GAC5CiptC,WAAY5ltC,GAAKrD,KAAKgptC,cAAehptC,MAAM,IAE/C,EAEA6ltC,EAAenmtC,UAAUymtC,eAAiB,WACxC,IAAIpklC,EAAQ/hI,KAAKk30B,OAASl30B,KAAK4srC,cAAc4C,kBAEzCq6B,EAAa7ptC,KAAK8mtC,iBAEtB9mtC,KAAK8ptC,YAAc,CAACpsP,GAAU371B,EAAM,GAAI,CAAC,EAAG,KAAM8nlC,GAAY,GAAOnsP,GAAU371B,EAAM,GAAI,CAAC,EAAG,KAAM8nlC,GAAY,GACjH,EAEAhE,EAAenmtC,UAAUqqtC,gBAAkB,SAAUnrE,EAAa74hC,GAChE,IAAI6mkC,EAAgB5srC,KAAK4srC,cACrBjuC,EAAa3+oC,KAAK8ptC,YAElBE,EAAahqtC,KAAK8mtC,iBAElBj0B,EAAajG,EAAc8C,8BAA8BsB,gBACzDK,EAAgB,CAAC,EAAG,KACxB3yC,GAAW34hC,EAAO44hC,EAAYqrE,EAAYp9B,EAAczprC,IAAI,YAAc,MAAQy7oC,EAAmC,MAAtBi0C,EAAWh0C,QAAkBnhL,GAAUm1N,EAAWh0C,QAASwyC,EAAe24B,GAAY,GAAQ,KAA4B,MAAtBn3B,EAAW/zC,QAAkBphL,GAAUm1N,EAAW/zC,QAASuyC,EAAe24B,GAAY,GAAQ,MACjS,IAAIr9V,EAAY3s3B,KAAKk30B,OACjBn1sB,EAAQ/hI,KAAKk30B,OAASz5G,GAAI,CAACigQ,GAAUihL,EAAW,GAAIqrE,EAAY34B,GAAe,GAAO3zN,GAAUihL,EAAW,GAAIqrE,EAAY34B,GAAe,KAC9I,OAAQ1kU,GAAaA,EAAU,KAAO5qvB,EAAM,IAAM4qvB,EAAU,KAAO5qvB,EAAM,EAC3E,EAEA8jlC,EAAenmtC,UAAUsmtC,YAAc,SAAUiE,GAC/C,IAAIC,EAAclqtC,KAAKu0hC,cACnBoqH,EAAa3+oC,KAAK8ptC,YAClBK,EAAiB1sf,GAAIkhb,EAAW58oC,SAChC6iB,EAAO5kB,KAAK0mtC,MAChB,EAAK,CAAC,EAAG,IAAI,SAAU9nE,GAErB,IAAI5+9B,EAASkqiC,EAAY3x1B,QAAQqmxB,GAC7BwrE,EAAepqtC,KAAKmptC,cACxBnpiC,EAAOiuW,KAAK,CACVr1Z,OAAQwxlC,EAAe,EACvBvxlC,OAAQuxlC,EAAe,EAGvBnmtC,EAAG06oC,EAAWC,IAAgBA,GAAe,EAAI,GACjD57oC,EAAG4hB,EAAK,GAAK,EAAIwlsC,EAAe,GAEpC,GAAGpqtC,MAEHkqtC,EAAYtB,OAAOhi0B,SAAS,CAC1B3iZ,EAAGkmtC,EAAe,GAClBnntC,EAAG,EACH+7B,MAAOorrC,EAAe,GAAKA,EAAe,GAC1CnrrC,OAAQpa,EAAK,KAEf,IAAIilsC,EAAa,CACf5ltC,EAAGkmtC,EAAe,GAClBprrC,MAAOorrC,EAAe,GAAKA,EAAe,IAGxCD,EAAYT,aACdS,EAAYT,WAAW7i0B,SAASij0B,GAChCK,EAAYP,SAAS/i0B,SAASij0B,GAE9BK,EAAYP,SAASxl+B,kBACrB+l+B,EAAY7E,gBAAkB6E,EAAY7E,eAAep3rB,KAAK,IAAK47rB,EAAW5ltC,EAAI4ltC,EAAW9qrC,MAAQ,IAOvG,IAHA,IAAIoorC,EAAiB+C,EAAY/C,eAC7BkD,EAAe,CAAC,EAAGF,EAAe,GAAIA,EAAe,GAAIvlsC,EAAK,IAEzDhkB,EAAI,EAAGA,EAAIumtC,EAAe9mtC,OAAQO,IAAK,CAC9C,IAAI0ptC,EAAWnD,EAAevmtC,GAC1B6qxB,EAAW6+b,EAAS5zQ,cAEnBjrL,IACHA,EAAW,IAAI,GACf6+b,EAAS11P,YAAYnpM,IAGvBA,EAAS7kY,SAAS,CAChB3iZ,EAAGomtC,EAAazptC,GAChBoC,EAAG,EACH+7B,MAAOsrrC,EAAazptC,EAAI,GAAKyptC,EAAazptC,GAC1Co+B,OAAQpa,EAAK,IAEjB,CAEA5kB,KAAKuqtC,gBAAgBN,EACvB,EAEApE,EAAenmtC,UAAU6qtC,gBAAkB,SAAUN,GACnD,IAAIr9B,EAAgB5srC,KAAK4srC,cACrBs9B,EAAclqtC,KAAKu0hC,cACnBo0L,EAAeuB,EAAYvB,aAC3Bn1N,EAASxz/B,KAAK8mrC,QACd9/L,EAAa,CAAC,GAAI,IAGtB,GAAI4lM,EAAczprC,IAAI,cAAe,CACnC,IAAIssrC,EAAY7C,EAAc8C,8BAE9B,GAAID,EAAW,CACb,IAAIhl/B,EAAOgl/B,EAAUL,eAAe3k/B,KAChC1oE,EAAQ/hI,KAAKk30B,OACbszY,EAAeP,EACjBx6B,EAAUyB,oBAAoB,CAC9B1qpC,MAAOu7F,EAAM,GACbt7F,IAAKs7F,EAAM,KACVwvjC,YAAc9B,EAAUI,qBAC3B7oM,EAAa,CAAChn/B,KAAKyqtC,aAAaD,EAAa,GAAI//gC,GAAOzqM,KAAKyqtC,aAAaD,EAAa,GAAI//gC,GAC7F,CACF,CAEA,IAAIighC,EAAoBjtf,GAAIz9tB,KAAK8ptC,YAAY/ntC,SAI7C,SAAS2kZ,EAASk4vB,GAIhB,IAAI+rE,EAAe,GAAqBT,EAAY3x1B,QAAQqmxB,GAAavtjC,OAAQrxF,KAAKo7T,OAClFztM,EAAY,GAA2C,IAAhBixhC,EAAoB,QAAU,OAAQ+rE,GAC7ExoqC,EAASniD,KAAKoptC,aAAe,EA3nBvB,EA4nBNwB,EAAY,GAAuB,CAACF,EAAkB9rE,IAAgC,IAAhBA,GAAqBz8lC,EAASA,GAASniD,KAAK0mtC,MAAM,GAAK,GAAIiE,GACrIhC,EAAa/pE,GAAat6uB,SAAS,CACjCrga,EAAG2mtC,EAAU,GACb5ntC,EAAG4ntC,EAAU,GACbz3e,cAAeqgR,IAAWiyN,GAAa,SAAW93lC,EAClD42pB,MAAOivO,IAAWiyN,GAAa93lC,EAAY,SAC3Cv9F,KAAM429B,EAAW43J,IAErB,CAlBAl4vB,EAAS9mZ,KAAKI,KAAM,GACpB0mZ,EAAS9mZ,KAAKI,KAAM,EAkBtB,EAEA6ltC,EAAenmtC,UAAU+qtC,aAAe,SAAUtptC,EAAOspM,GACvD,IAAImi/B,EAAgB5srC,KAAK4srC,cACrB7gZ,EAAiB6gZ,EAAczprC,IAAI,kBACnC0ntC,EAAiBj+B,EAAczprC,IAAI,kBAEjB,MAAlB0ntC,GAA6C,SAAnBA,IAC5BA,EAAiBpghC,EAAK0zxB,qBAGxB,IAAI2sP,EAAoB,MAAT3ptC,GAAiBmrC,MAAMnrC,GAAS,GAC/B,aAAdspM,EAAKl+L,MAAqC,SAAdk+L,EAAKl+L,KAAkBk+L,EAAK3oG,MAAM8sc,SAAS,CACvEztiB,MAAO0B,KAAKogD,MAAM9hD,KAElBA,EAAMiiD,QAAQvgD,KAAKgL,IAAIg9sC,EAAgB,KACzC,OAAO7l9B,GAAW+miB,GAAkBA,EAAe5qyB,EAAO2ptC,GAAY9vpC,GAAS+wuB,GAAkBA,EAAet/xB,QAAQ,UAAWq+sC,GAAYA,CACjJ,EAMAjF,EAAenmtC,UAAUsptC,cAAgB,SAAU+B,GAEjDA,EAAa/qtC,KAAKo4mC,WAAa2yG,EAC/B,IAAIj2L,EAAe90hC,KAAKu0hC,cACpBo0L,EAAe7zL,EAAa6zL,aAChCA,EAAa,GAAG16rB,KAAK,aAAc88rB,GACnCpC,EAAa,GAAG16rB,KAAK,aAAc88rB,GAEnCj2L,EAAa20L,YAAczptC,KAAKivC,IAAI87qC,EAAa,gBAAkB,iBAAiBj2L,EAAa20L,WAAY,EAC/G,EAEA5D,EAAenmtC,UAAUmptC,YAAc,SAAUjqE,EAAapqgC,EAAIH,EAAI51G,GACpEz+B,KAAKo4mC,WAAY,EAEjB,GAAe35kC,EAAMA,OAErB,IAEIovM,EAAS,GAAuB,CAACr5F,EAAIH,GAFtBr0I,KAAKu0hC,cAAc6xL,YAAYj2P,qBAEU,GAExD9r2B,EAAUrkH,KAAK+ptC,gBAAgBnrE,EAAa/w6B,EAAO,IAEnDs86B,EAAWnqpC,KAAK4srC,cAAczprC,IAAI,YAEtCnD,KAAKgmtC,aAAa77D,GAIlB9liC,GAAW8liC,GAAYnqpC,KAAKo9rC,qBAAoB,EAClD,EAEAyoB,EAAenmtC,UAAUoptC,WAAa,WACpC9otC,KAAKo4mC,WAAY,EAEjBp4mC,KAAKgptC,eAAc,IAIJhptC,KAAK4srC,cAAczprC,IAAI,aACzBnD,KAAKo9rC,qBAAoB,EACxC,EAEAyoB,EAAenmtC,UAAUsntC,cAAgB,SAAU7ntC,GACjD,IAAIylB,EAAO5kB,KAAK0mtC,MAEZsE,EAAahrtC,KAAKu0hC,cAAc6xL,YAAYn1P,sBAAsB9x9B,EAAEg5H,QAASh5H,EAAEi5H,SAEnF,KAAI4ylC,EAAW,GAAK,GAAKA,EAAW,GAAKpmsC,EAAK,IAAMomsC,EAAW,GAAK,GAAKA,EAAW,GAAKpmsC,EAAK,IAA9F,CAIA,IAAI+5nC,EAAa3+oC,KAAK8ptC,YAClB7qrC,GAAU0/mC,EAAW,GAAKA,EAAW,IAAM,EAE3Ct6hC,EAAUrkH,KAAK+ptC,gBAAgB,MAAOiB,EAAW,GAAK/rrC,GAE1Dj/B,KAAKgmtC,cAEL3hmC,GAAWrkH,KAAKo9rC,qBAAoB,EATpC,CAUF,EAEAyoB,EAAenmtC,UAAUuntC,cAAgB,SAAU9ntC,GACjD,IAAI8E,EAAI9E,EAAEg5H,QACNn1H,EAAI7D,EAAEi5H,QACVp4H,KAAKirtC,YAAc,IAAI,GAAchntC,EAAGjB,GACxChD,KAAKimtC,WAAY,EACjBjmtC,KAAKkrtC,iBAAmB,IAAI1/rC,IAC9B,EAEAq6rC,EAAenmtC,UAAUomtC,YAAc,SAAU3mtC,GAC/C,GAAKa,KAAKimtC,UAAV,CAIA,IAAI5xD,EAAYr0pC,KAAKu0hC,cAAc8/H,UAGnC,GAFAr0pC,KAAKimtC,WAAY,EAEZ5xD,EAAL,CAIAA,EAAUpmoB,KAAK,UAAU,GACzB,IAAIk9rB,EAAa92D,EAAU/x7B,MAG3B,MAFoB,IAAI92M,KAELxrB,KAAKkrtC,gBAAkB,KAAOrotC,KAAKmjH,IAAImlmC,EAAWpsrC,OAAS,GAA9E,CAKA,IAAIirrC,EAAahqtC,KAAK8mtC,iBAElBz1B,EAAgB,CAAC,EAAG,KACxBrxrC,KAAKk30B,OAASz5G,GAAI,CAACigQ,GAAUytP,EAAWlntC,EAAG+ltC,EAAY34B,GAAe,GAAO3zN,GAAUytP,EAAWlntC,EAAIkntC,EAAWpsrC,MAAOirrC,EAAY34B,GAAe,KACnJrxrC,KAAK8ptC,YAAc,CAACqB,EAAWlntC,EAAGkntC,EAAWlntC,EAAIkntC,EAAWpsrC,OAE5D/+B,KAAKgmtC,cAELhmtC,KAAKo9rC,qBAAoB,EAVzB,CATA,CAPA,CA2BF,EAEAyoB,EAAenmtC,UAAU6ppC,SAAW,SAAUpqpC,GACxCa,KAAKimtC,YAEP,GAAe9mtC,EAAEs/B,OAEjBz+B,KAAKortC,iBAAiBjstC,EAAEg5H,QAASh5H,EAAEi5H,SAEvC,EAEAytlC,EAAenmtC,UAAU0rtC,iBAAmB,SAAUzplB,EAAQ0lQ,GAC5D,IAAIytJ,EAAe90hC,KAAKu0hC,cACpBq4J,EAAgB5srC,KAAK4srC,cACrBv4B,EAAYv/H,EAAau/H,UAExBA,IACHA,EAAYv/H,EAAau/H,UAAY,IAAI,GAAK,CAC5CjgrB,QAAQ,EACR//d,MAAOu4qC,EAAch1/B,SAAS,cAAcm0zB,iBAE9C+oC,EAAasxL,YAAYjhsC,IAAIkvoC,IAG/BA,EAAUpmoB,KAAK,UAAU,GACzB,IAAIo9rB,EAAarrtC,KAAKirtC,YAClB7E,EAAcpmtC,KAAKu0hC,cAAc6xL,YACjCkF,EAAWlF,EAAYn1P,sBAAsBtvV,EAAQ0lQ,GACrDq1N,EAAa0pH,EAAYn1P,sBAAsBo6P,EAAWpntC,EAAGontC,EAAWrotC,GACxE4hB,EAAO5kB,KAAK0mtC,MAChB4E,EAAS,GAAKzotC,KAAK8K,IAAI9K,KAAKgL,IAAI+W,EAAK,GAAI0msC,EAAS,IAAK,GACvDj3D,EAAUztwB,SAAS,CACjB3iZ,EAAGy4lC,EAAW,GACd15lC,EAAG,EACH+7B,MAAOusrC,EAAS,GAAK5uH,EAAW,GAChC19jC,OAAQpa,EAAK,IAEjB,EAMAihsC,EAAenmtC,UAAU09rC,oBAAsB,SAAUjzC,GACvD,IAAIpohC,EAAQ/hI,KAAKk30B,OACjBl30B,KAAKivC,IAAIu1/B,eAAe,CACtBj4hC,KAAM,WACNwR,KAAM/d,KAAKozV,IACX+p2B,WAAYn9rC,KAAK4srC,cAAcrhqC,GAC/BwkO,UAAWo65B,EAAWy7D,GAA4B,KAClDp/qC,MAAOu7F,EAAM,GACbt7F,IAAKs7F,EAAM,IAEf,EAEA8jlC,EAAenmtC,UAAU8mtC,eAAiB,WAExC,IAAI9ynC,EACA63nC,EAAmB5+B,GAA8B3srC,KAAK4srC,eAAeE,SAEzE,IAAKp5lC,GAAQ63nC,EAAiBlrtC,OAAQ,CACpC,IAAI6i/B,EAAWqoO,EAAiB,GAAGx2lC,MAAMhD,iBACzCr+B,EAAOwv5B,EAASo0E,SAAWp0E,EAASo0E,SACtC,CAEA,IAAK5j+B,EAAM,CACT,IAAI30D,EAAQ/+B,KAAKivC,IAAIk8L,WACjBnsM,EAASh/B,KAAKivC,IAAI+rI,YACtBtnF,EAAO,CACLzvF,EAAW,GAAR86B,EACH/7B,EAAY,GAATg8B,EACHD,MAAe,GAARA,EACPC,OAAiB,GAATA,EAEZ,CAEA,OAAO00D,CACT,EAEAmynC,EAAet5sC,KAAO,kBACfs5sC,CACT,CAt0BA,CAs0BE,IAcF,SAASvqkC,GAAUk42B,GACjB,MAAkB,aAAXA,EAAwB,YAAc,WAC/C,CAEA,YCr3BO,SAAS,GAAQu8E,GACtBA,EAAUpyB,uBAAuB,IACjCoyB,EAAUnyB,sBAAsB,IAChC01I,GAAcvjH,EAChB,CCFA,IAAIy7I,GAAgB,CAIlBrotC,IAAK,SAAUu7hC,EAAY75gC,EAAKwniC,GAC9B,IAAIlrjC,EAAQ,GAAc,GAAcu9hC,IAAe,CAAC,GAAG75gC,IAC3D,OAAOwniC,GAAa,GAAelrjC,GAASA,EAAMA,EAAMd,OAAS,GAAac,CAChF,GAEE,GAAgB,CAClBosH,MAAO,CACLk8B,OAAQ,CAAC,UAAW,WACpBmz/B,SAAU,CAAC,kBAEb9Z,SAAU,CACRr5+B,OAAQ,CAAC,EAAG,KACZmz/B,SAAU,CAAC,EAAG,IAEhBvkB,gBAAiB,CACf5u+B,OAAQ,CAAC,GAAK,GACdmz/B,SAAU,CAAC,EAAG,IAEhB5Z,eAAgB,CACdv5+B,OAAQ,CAAC,GAAK,IACdmz/B,SAAU,CAAC,EAAG,IAEhBxkB,WAAY,CACV3u+B,OAAQ,CAAC,GAAK,GACdmz/B,SAAU,CAAC,EAAG,IAEhBhxgC,QAAS,CACP6d,OAAQ,CAAC,GAAK,GACdmz/B,SAAU,CAAC,EAAG,IAEhB1ipB,OAAQ,CACNzwW,OAAQ,CAAC,SAAU,YAAa,WAChCmz/B,SAAU,CAAC,SAEbrkJ,WAAY,CACV9u2B,OAAQ,CAAC,GAAI,IACbmz/B,SAAU,CAAC,EAAG,KAGlB,YCxCA,IAAI,GAAY,GAActb,UAC1BD,GAAa,GAAcA,WAC3B,GAAU,GACV,GAAO,EACP,GAAM,GACN,GAAY,GAEZoqF,GAEJ,SAAU/i2B,GAGR,SAAS+i2B,IACP,IAAI/+pC,EAAmB,OAAXg8T,GAAmBA,EAAOnoX,MAAMP,KAAMI,YAAcJ,KAgBhE,OAdA0sD,EAAMngD,KAAOk/sC,EAAel/sC,KAC5BmgD,EAAMw8oC,UAAY,CAAC,UAAW,cAC9Bx8oC,EAAMg/pC,qBAAuB,CAAC,UAAW,aAAc,SAAU,aAAc,SAC/Eh/pC,EAAM8n8B,WAAa,CACjBjo/B,KAAM,MACNoo/B,YAAY,GAMdjo8B,EAAMi/pC,UAAY,EAAC,IAAW5rpC,KAC9BrT,EAAMmxmC,cAAgB,CAAC,EACvBnxmC,EAAMk/pC,kBAAoB,CAAC,EACpBl/pC,CACT,CAsYA,OA1ZAkgX,EAAU6+yB,EAAgB/i2B,GAsB1B+i2B,EAAe/rtC,UAAUgxD,KAAO,SAAUmN,EAAQghe,EAAaykc,GAC7Dtj+B,KAAKq1/B,qBAAqBx37B,EAAQyl6B,EACpC,EAMAmoP,EAAe/rtC,UAAU61/B,cAAgB,SAAU3zB,EAAW6zB,GAC5D,IAAIsqI,EAAa//nC,KAAK69D,QACrB437B,GAAU,GAAmCsqI,EAAYn+J,EAAW5h+B,KAAK0rtC,sBAC1E1rtC,KAAK4o/B,eAAiB5o/B,KAAK43L,SAAS,aACpC53L,KAAK6rtC,gBACL7rtC,KAAK8rtC,sBACP,EAMAL,EAAe/rtC,UAAUqstC,YAAc,SAAU5iB,GAC/C,IAAID,EAAYlpsC,KAAKkpsC,UACrBC,EAAyB,GAAYA,EAAwBnpsC,MAC7DA,KAAK4rtC,kBAAoB,GAAoC5rtC,KAAK69D,OAAO0yE,WAAY24jC,EAAWC,GAChGnpsC,KAAK69pC,cAAgB,GAAoC79pC,KAAK69D,OAAO/tD,OAAQo5rC,EAAWC,EAC1F,EAMAsiB,EAAe/rtC,UAAUsstC,cAAgB,WACvC,OAAO,IACT,EAOAP,EAAe/rtC,UAAUustC,uBAAyB,WAChD,IAAIC,EAAoBlstC,KAAK69D,OAAOq/6B,YAChComB,EAAgB,GAUpB,OARyB,MAArB4oN,GAAmD,QAAtBA,EAC/BlstC,KAAKsj+B,QAAQyf,YAAW,SAAUC,EAAahm+B,GAC7Csm/B,EAAczhgC,KAAKmb,EACrB,IAEAsm/B,EAAgB,GAA2B4oN,GAGtC5oN,CACT,EAMAmoN,EAAe/rtC,UAAUu9pC,iBAAmB,SAAU/zoC,EAAUikB,GAC9D,EAAYntC,KAAKistC,0BAA0B,SAAU/uO,GACnD,IAAI8F,EAAchj/B,KAAKsj+B,QAAQsf,iBAAiB1F,GAE5C8F,GACF959B,EAAStpB,KAAKutC,EAAS618B,EAE3B,GAAGhj/B,KACL,EAMAyrtC,EAAe/rtC,UAAUystC,eAAiB,SAAUnpO,GAClD,IAAIl2gB,GAAK,EAIT,OAHA9se,KAAKi9pC,kBAAiB,SAAUloiC,GAC9BA,IAAUiu3B,IAAgBl2gB,GAAK,EACjC,IACOA,CACT,EAgBA2+uB,EAAe/rtC,UAAU0stC,gBAAkB,SAAUjrtC,EAAOkrjC,EAAYggK,GACtE,IAIIC,EAJAzupC,EAAS79D,KAAK69D,OACdo4M,EAAYp4M,EAAOo4M,UACnB018B,EAAY3rtC,KAAK2rtC,UACjBvmqB,EAAYvnf,EAAOunf,UAEvBinqB,EAAcA,GAAe,CAAC,IAAK,KAE/B,GAAelrtC,KACjBA,EAAQA,EAAMY,QACduqtC,GAAW,GAGb,IAAIpzjB,EAAYmzZ,EAAalrjC,EAC3BmrtC,EAAW,CAAClpqC,EAAQjiD,EAAM,IAAKiiD,EAAQjiD,EAAM,KAAOiiD,EAAQjiD,GAE9D,OAAI,GAAgBikjB,GACXA,EAAU34iB,QAAQ,UAAW6/sC,EAAWpzjB,EAAU,GAAKA,GAAWzspB,QAAQ,WAAY6/sC,EAAWpzjB,EAAU,GAAKA,GAC9G,GAAkB9zG,GACpBknqB,EAAWlnqB,EAAUjkjB,EAAM,GAAIA,EAAM,IAAMikjB,EAAUjkjB,GAG1DmrtC,EACEnrtC,EAAM,KAAOwqtC,EAAU,GAClBU,EAAY,GAAK,IAAMnzjB,EAAU,GAC/B/3pB,EAAM,KAAOwqtC,EAAU,GACzBU,EAAY,GAAK,IAAMnzjB,EAAU,GAEjCA,EAAU,GAAK,MAAQA,EAAU,GAInCA,EAGT,SAAS91mB,EAAQs6H,GACf,OAAOA,IAAQiuiC,EAAU,GAAK,MAAQjuiC,IAAQiuiC,EAAU,GAAK,QAAUjuiC,GAAKt6H,QAAQvgD,KAAKgL,IAAIooQ,EAAW,IAC1G,CACF,EAMAw18B,EAAe/rtC,UAAU6stC,YAAc,WACrC,IAAIxsF,EAAa//nC,KAAK69D,OAIlB0sG,EAAS,GAAI,CAACw19B,EAAWlynC,IAAKkynC,EAAWpynC,MAC7C3N,KAAKoxrC,YAAc7mhC,CACrB,EAuBAkhjC,EAAe/rtC,UAAU8stC,sBAAwB,SAAUh9sC,GACzD,IAAIi9sC,EAASzstC,KAAK69D,OAAOy1G,UAEzB,GAAc,MAAVm5iC,EACF,OAAOj9sC,EAAKuggC,kBAAkB08M,GAKhC,IAFA,IAAItxM,EAAW3rgC,EAAKkpJ,WAEX93J,EAAIu6gC,EAAS96gC,OAAS,EAAGO,GAAK,EAAGA,IAAK,CAC7C,IAAIy7/B,EAAU8e,EAASv6gC,GACnB41gC,EAAUhngC,EAAK819B,iBAAiB+2B,GAEpC,IAAKma,EAAQssC,mBACX,OAAOtsC,EAAQosC,aAEnB,CACF,EAEA6oK,EAAe/rtC,UAAU8vjC,UAAY,WACnC,OAAOxvjC,KAAKoxrC,YAAYrvrC,OAC1B,EAEA0ptC,EAAe/rtC,UAAUostC,qBAAuB,WAC9C,IAAIxoP,EAAUtj+B,KAAKsj+B,QACfy8J,EAAa//nC,KAAK69D,OAClBxX,EAAO,CACTu7e,QAASm+lB,EAAWn+lB,QACpBo6nB,WAAYj8B,EAAWi8B,YAErBlspC,EAASiwnC,EAAWjwnC,SAAWiwnC,EAAWjwnC,OAAS,CAAC,GACpDygI,EAAawv/B,EAAWxv/B,aAAewv/B,EAAWxv/B,WAAa,CAAC,GACpE,EAAazgI,EAAQu2C,GAErB,EAAakqF,EAAYlqF,GAEzB,IAAIgmgC,EAAarsjC,KAAKqsjC,aAOtB,SAASqgK,EAAermqC,GAKlB,GAAQ05kC,EAAWxygC,SAEnBlnE,EAAKu7e,UACPv7e,EAAKu7e,QAAU,CACbr0a,MAAOwygC,EAAWxygC,MAAMxrH,QAAQu4D,YAUpCjU,EAAKu7e,QAAUv7e,EAAKu7e,SAAW,CAC7Br0a,MAAO+12B,EAAQng+B,IAAI,iBAEvB,CA5BAuptC,EAAe9stC,KAAKI,KAAM8P,GAC1B48sC,EAAe9stC,KAAKI,KAAMuwI,GA6B1B,SAA0BlqF,EAAMsmqC,EAAYC,GAC1C,IAAIC,EAAWxmqC,EAAKsmqC,GAChBG,EAAYzmqC,EAAKumqC,GAEjBC,IAAaC,IACfA,EAAYzmqC,EAAKumqC,GAAe,CAAC,EACjC,GAAKC,GAAU,SAAUrjB,EAAY9qK,GACnC,GAAK,GAAc0iG,YAAY1iG,GAA/B,CAIA,IAAIquL,EAAO,GAAc5ptC,IAAIu7hC,EAAY,WAAY2tB,GAEzC,MAAR0gK,IACFD,EAAUpuL,GAAcquL,EAIL,UAAfruL,GAA2BouL,EAAUnttC,eAAe,YAAemttC,EAAUnttC,eAAe,gBAC9FmttC,EAAUlhlC,QAAU,CAAC,EAAG,IAV5B,CAaF,IAEJ,EApDiBhsI,KAAKI,KAAM8P,EAAQ,UAAW,cAsD/C,SAA4BygI,GAC1B,IAAIy8kC,GAAgBz8kC,EAAWqxZ,SAAW,CAAC,GAAG1nC,SAAW3pX,EAAWyrhC,YAAc,CAAC,GAAG9hqB,OAClF+ytB,GAAoB18kC,EAAWqxZ,SAAW,CAAC,GAAG22d,aAAeho3B,EAAWyrhC,YAAc,CAAC,GAAGzjK,WAC1FqjN,EAAgB57sC,KAAKmD,IAAI,iBAEzBonhC,EADavqhC,KAAKgstC,iBACY,YAClC,GAAKhstC,KAAKkpsC,WAAW,SAAUv9rC,GAC7B,IAAI0voC,EAAWr7oC,KAAKq7oC,SAChBxX,EAAUtz/B,EAAW5kI,GAGpBk4nC,IACHA,EAAUtz/B,EAAW5kI,GAAS,CAC5B4hH,MAAO8+7B,EAAauvJ,EAAgB,CAACA,KAKnB,MAAlB/3E,EAAQ3poB,SACV2poB,EAAQ3poB,OAAS8ytB,GAAgB,EAAaA,KAAkB3gK,EAAa9hC,EAAgB,CAACA,KAGtE,MAAtBs5G,EAAQtrI,aACVsrI,EAAQtrI,WAAa00N,GAAoB,EAAaA,KAAsB5gK,EAAagvF,EAAS,GAAK,CAACA,EAAS,GAAIA,EAAS,MAIhIxX,EAAQ3poB,OAAS,GAAU2poB,EAAQ3poB,QAAQ,SAAUA,GACnD,MAAkB,SAAXA,EAAoBqwhB,EAAgBrwhB,CAC7C,IAEA,IAAIq+f,EAAasrI,EAAQtrI,WAEzB,GAAkB,MAAdA,EAAoB,CACtB,IAAI20N,GAAQ,IAEZ7rF,GAAW9oI,GAAY,SAAUp3/B,GAC/BA,EAAQ+rtC,IAAUA,EAAQ/rtC,EAC5B,IACA0ioC,EAAQtrI,WAAa,GAAUA,GAAY,SAAUp3/B,GACnD,OAAO,GAAUA,EAAO,CAAC,EAAG+rtC,GAAQ,CAAC,EAAG7xE,EAAS,KAAK,EACxD,GACF,CACF,GAAGr7oC,KACL,EAhGmBJ,KAAKI,KAAMuwI,EAiGhC,EAEAk7kC,EAAe/rtC,UAAUmstC,cAAgB,WACvC7rtC,KAAKq7oC,SAAW,CAAChx+B,WAAWrqK,KAAKmD,IAAI,cAAeknK,WAAWrqK,KAAKmD,IAAI,eAC1E,EAEAsotC,EAAe/rtC,UAAU2sjC,WAAa,WACpC,QAASrsjC,KAAK69D,OAAOmrzB,UACvB,EAOAyiW,EAAe/rtC,UAAU60iB,YAAc,SAAUloX,GAAW,EAE5Do/hC,EAAe/rtC,UAAU4sL,YAAc,WACrC,OAAO,IACT,EAOAm/hC,EAAe/rtC,UAAUmssC,cAAgB,SAAU1qsC,GACjD,OAAO,IACT,EAkBAsqtC,EAAe/rtC,UAAUyttC,cAAgB,SAAUC,GACjD,OAAO,IACT,EAEA3B,EAAel/sC,KAAO,YACtBk/sC,EAAexvjC,aAAe,CAAC,UAC/BwvjC,EAAe7qrB,cAAgB,CAC7B39M,MAAM,EAENt9U,EAAG,EACHu3+B,YAAa,MACbrv+B,IAAK,EACLF,IAAK,IACLkxB,KAAM,EACNghE,MAAO,KACP/gE,IAAK,KACLghE,OAAQ,EACRok/B,UAAW,KACXluT,WAAY,KACZ33B,SAAS,EACTm1P,OAAQ,WACR952B,gBAAiB,gBACjB4+N,YAAa,OACb+02B,aAAc,UACdzR,cAAe,OACfpkO,YAAa,EACbt/2B,QAAS,EAETo1lC,QAAS,GACTr38B,UAAW,EACX+yuB,UAAW,CACTz73B,MAAO,SAIJk+lC,CACT,CA5ZA,CA4ZE/+jC,IAEF,YCzaA,IAAI6gkC,GAAoB,CAAC,GAAI,KAEzBC,GAEJ,SAAU9k2B,GAGR,SAAS8k2B,IACP,IAAI9gqC,EAAmB,OAAXg8T,GAAmBA,EAAOnoX,MAAMP,KAAMI,YAAcJ,KAGhE,OADA0sD,EAAMngD,KAAOihtC,EAAgBjhtC,KACtBmgD,CACT,CAkNA,OAzNAkgX,EAAU4gzB,EAAiB9k2B,GAa3B8k2B,EAAgB9ttC,UAAU61/B,cAAgB,SAAU3zB,EAAW6zB,GAC7D/soB,EAAOhpX,UAAU61/B,cAAch1/B,MAAMP,KAAMI,WAE3CJ,KAAKustC,cACLvstC,KAAK+rtC,aAAY,SAAUtiB,GACzBA,EAAc3pE,cAAgB,SAC9B2pE,EAAcrrO,WAAap+9B,KAAKwvjC,WAClC,IAEAxvjC,KAAKyttC,aACP,EAOAD,EAAgB9ttC,UAAUmstC,cAAgB,WACxCnj2B,EAAOhpX,UAAUmstC,cAActrtC,MAAMP,KAAMI,WAE3C,IAAIi7oC,EAAWr7oC,KAAKq7oC,UACJ,MAAfA,EAAS,IAAc/umC,MAAM+umC,EAAS,OAASA,EAAS,GAAKkyE,GAAkB,KAChE,MAAflyE,EAAS,IAAc/umC,MAAM+umC,EAAS,OAASA,EAAS,GAAKkyE,GAAkB,GAClF,EAMAC,EAAgB9ttC,UAAU+ttC,YAAc,WACtC,IAAIrvP,EAAap+9B,KAAKwvjC,YAClBzt7B,EAAQ/hI,KAAK69D,OAAOkkE,OAEnBA,GAASA,EAAM2rlC,MAGlBtvP,EAAWsvP,KAAO,EAClB1ttC,KAAK69D,OAAOkkE,MAAQq81B,GACX,GAAer81B,KACpBA,EAAM,GAAKA,EAAM,IACnBA,EAAMznE,UAGRynE,EAAM,GAAKl/H,KAAK8K,IAAIo0H,EAAM,GAAIq81B,EAAW,IACzCr81B,EAAM,GAAKl/H,KAAKgL,IAAIk0H,EAAM,GAAIq81B,EAAW,IAE7C,EAOAovP,EAAgB9ttC,UAAUostC,qBAAuB,WAC/Cpj2B,EAAOhpX,UAAUostC,qBAAqBvrtC,MAAMP,KAAMI,WAElD,EAAYJ,KAAKkpsC,WAAW,SAAUv9rC,GACpC,IAAI4s/B,EAAav4/B,KAAK69D,OAAO0yE,WAAW5kI,GAAO4s/B,WAE3CA,GAAcA,EAAW,KAAOA,EAAW,KAC7CA,EAAW,GAAKA,EAAW,GAAK,EAEpC,GAAGv4/B,KACL,EAMAwttC,EAAgB9ttC,UAAU60iB,YAAc,SAAUloX,GAChDrsL,KAAK69D,OAAOkkE,MAAQsqD,EAAStqL,QAE7B/B,KAAKyttC,aACP,EAMAD,EAAgB9ttC,UAAU4sL,YAAc,WACtC,IAAI8xyB,EAAap+9B,KAAKwvjC,YAClBg7J,EAAe,IAAgBxqtC,KAAKmD,IAAI,UAAY,IAAIpB,SAM5D,OAJAyotC,EAAa,GAAKpsP,EAAW,KAAOosP,EAAa,GAAKpsP,EAAW,IACjEosP,EAAa,GAAKpsP,EAAW,KAAOosP,EAAa,GAAKpsP,EAAW,IACjEosP,EAAa,GAAKpsP,EAAW,KAAOosP,EAAa,GAAKpsP,EAAW,IACjEosP,EAAa,GAAKpsP,EAAW,KAAOosP,EAAa,GAAKpsP,EAAW,IAC1DosP,CACT,EAMAgD,EAAgB9ttC,UAAUmssC,cAAgB,SAAU1qsC,GAClD,IAAI4gI,EAAQ/hI,KAAK69D,OAAOkkE,MACpBq81B,EAAap+9B,KAAKwvjC,YAGtB,OAAQzt7B,EAAM,IAAMq81B,EAAW,IAAMr81B,EAAM,IAAM5gI,KAAW4gI,EAAM,IAAMq81B,EAAW,IAAMj99B,GAAS4gI,EAAM,IAAM,UAAY,YAC5H,EAEAyrlC,EAAgB9ttC,UAAUiutC,sBAAwB,SAAU5rlC,GAC1D,IAAIv+G,EAAS,GAYb,OAXAxjB,KAAKi9pC,kBAAiB,SAAUj6K,GAC9B,IAAIP,EAAc,GACdjz+B,EAAOwz+B,EAAYx+2B,UACvBh1H,EAAKwywB,KAAKhixB,KAAKwstC,sBAAsBh9sC,IAAO,SAAUrO,EAAOkkK,GAC3DtjC,EAAM,IAAM5gI,GAASA,GAAS4gI,EAAM,IAAM0g3B,EAAY5g/B,KAAKwjK,EAC7D,GAAGrlK,MACHwjB,EAAO3hB,KAAK,CACVk7wB,SAAUimO,EAAYz39B,GACtB85I,UAAWo90B,GAEf,GAAGzi/B,MACIwjB,CACT,EAMAgqsC,EAAgB9ttC,UAAUyttC,cAAgB,SAAUC,GAClD,IAAIQ,EAAQC,GAAmB7ttC,EAAM,EAAcA,KAAKwvjC,aACpDs+J,EAAQD,GAAmB7ttC,EAAM,EAAWA,KAAK69D,OAAOkkE,MAAMhgI,SAC9DugxB,EAAQ,GAEZ,SAASyrc,EAAQ5stC,EAAO+qsC,GACtB5pb,EAAMzgxB,KAAK,CACTV,MAAOA,EACPosH,MAAO6/lC,EAAejstC,EAAO+qsC,IAEjC,CAQA,IALA,IAAI8hB,EAAO,EACPC,EAAO,EACPC,EAAOJ,EAAMzttC,OACb8ttC,EAAOP,EAAMvttC,OAEV4ttC,EAAOE,KAAUL,EAAMzttC,QAAUuttC,EAAMK,IAASH,EAAM,IAAKG,IAE5DL,EAAMK,GAAQH,EAAME,IACtBD,EAAQH,EAAMK,GAAO,cAIzB,IAAK,IAAIvpsC,EAAQ,EAAGspsC,EAAOE,EAAMF,IAAQtpsC,EAAQ,EAG/CA,GAAS49vB,EAAMjixB,QAAU0ttC,EAAQD,EAAME,GAAO,cAC9CD,EAAQD,EAAME,GAAO,WAGvB,IAAStpsC,EAAQ,EAAGupsC,EAAOE,EAAMF,MAC1BH,EAAMzttC,QAAUyttC,EAAMA,EAAMzttC,OAAS,GAAKuttC,EAAMK,MAE/CvpsC,IACF49vB,EAAMjixB,QAAU0ttC,EAAQzrc,EAAMA,EAAMjixB,OAAS,GAAGc,MAAO,cACvDujB,EAAQ,GAGVqpsC,EAAQH,EAAMK,GAAO,eAIzB,IAAIG,EAAW9rc,EAAMjixB,OACrB,MAAO,CACLiixB,MAAOA,EACPqsU,YAAa,CAACy/H,EAAW9rc,EAAM,GAAG/0pB,MAAQ,cAAe6gmC,EAAW9rc,EAAM8rc,EAAW,GAAG7gmC,MAAQ,eAEpG,EAEAigmC,EAAgBjhtC,KAAO,uBACvBihtC,EAAgB5srB,cAAgB6rd,GAAqB,GAAe7rd,cAAe,CACjF2jP,MAAO,OACP8pc,YAAY,EACZC,WAAW,EACXnkE,UAAU,EACVg7D,WAAY,6HACZr/D,WAAY,OACZpkH,YAAa,CACXpprB,YAAa,OACbk/nB,YAAa,GAEf+2O,cAAe,SACfC,cAAe,MACfC,eAAgB,CACdn22B,YAAa,OACbk/nB,YAAa,EACbxyN,WAAY,EACZF,cAAe,EACfC,cAAe,EACfl0pB,YAAa,qBAWV28lC,CACT,CA3NA,CA2NE,IAEF,SAASK,GAAmBlwD,EAAgBuuC,EAAY9tO,GACtD,GAAIA,EAAW,KAAOA,EAAW,GAC/B,OAAOA,EAAWr89B,QAYpB,IALA,IACI2sW,GAAQ0vnB,EAAW,GAAKA,EAAW,IAD3B,IAERj99B,EAAQi99B,EAAW,GACnBswP,EAAa,GAER9ttC,EAAI,EAAGA,GALJ,KAKkBO,EAAQi99B,EAAW,GAAIx99B,IACnD8ttC,EAAW7stC,KAAKV,GAChBA,GAASutW,EAIX,OADAgg3B,EAAW7stC,KAAKu89B,EAAW,IACpBswP,CACT,CAEA,YCzHA,GA3HA,SAAUhm2B,GAGR,SAASim2B,IACP,IAAIjiqC,EAAmB,OAAXg8T,GAAmBA,EAAOnoX,MAAMP,KAAMI,YAAcJ,KAShE,OAPA0sD,EAAMngD,KAAOoitC,EAAcpitC,KAC3BmgD,EAAMkiqC,mBAAqB,CACzB/vrC,KAAM,EACNghE,MAAO,EACP/gE,IAAK,EACLghE,OAAQ,GAEHpzC,CACT,CA0GA,OAvHAkgX,EAAU+hzB,EAAejm2B,GAezBim2B,EAAcjvtC,UAAUgxD,KAAO,SAAU4y6B,EAASr07B,GAChDjvC,KAAKsj+B,QAAUA,EACftj+B,KAAKivC,IAAMA,CACb,EAMA0/qC,EAAcjvtC,UAAU4uH,OAAS,SAAUqviC,EAAgBr6L,EAASr07B,EAAKna,GAEvE90B,KAAK29pC,eAAiBA,GAEa,IAA/BA,EAAex6pC,IAAI,QAKvBnD,KAAK6utC,SAASlxD,EAAgBr6L,EAASr07B,EAAKna,GAJ1C90B,KAAKo7T,MAAMvtE,WAKf,EAMA8g+B,EAAcjvtC,UAAUu9nC,iBAAmB,SAAU7h0B,GACnD,IAAIui2B,EAAiB39pC,KAAK29pC,eACtBzliC,EAAU,GAA6ByliC,EAAex6pC,IAAI,YAAc,GACxEuwF,EAAO0nO,EAAMj3E,kBACjBi3E,EAAMj2S,IAAI,IAAI,GAAK,CACjB43K,IAAK,EACLq3S,QAAQ,EACR9xQ,MAAO,CACLr+N,EAAGyvF,EAAKzvF,EAAIi0H,EAAQ,GACpBl1H,EAAG0wF,EAAK1wF,EAAIk1H,EAAQ,GACpBn5F,MAAO20D,EAAK30D,MAAQm5F,EAAQ,GAAKA,EAAQ,GACzCl5F,OAAQ00D,EAAK10D,OAASk5F,EAAQ,GAAKA,EAAQ,IAE7C7jH,MAAO,CACL+oH,KAAMugiC,EAAex6pC,IAAI,mBACzBi6wB,OAAQugZ,EAAex6pC,IAAI,eAC3BkvU,UAAWsr1B,EAAex6pC,IAAI,kBAGpC,EAYAwrtC,EAAcjvtC,UAAUovtC,oBAAsB,SAAU5pP,EAAa6pP,EAAe1yqC,GAElF,IAAI2yqC,GADJ3yqC,EAAOA,GAAQ,CAAC,GACM2yqC,WAClBrxD,EAAiB39pC,KAAK29pC,eACtBsxD,EAAY,CAAC,EAEjB,GAAsB,UAAlBF,EAA2B,CAC7B,IAAIjt1B,EAAe67xB,EAAex6pC,IAAI,gBACtC8rtC,EAAU1hmC,MAAQu0Q,CACpB,CAEA,SAASp1X,EAAOmY,GACd,OAAOoqsC,EAAUpqsC,EACnB,CAEA,SAASlY,EAAOkY,EAAK1jB,GACnB8ttC,EAAUpqsC,GAAO1jB,CACnB,CAEA,IAAImosC,EAAW3rC,EAAeiuD,kBAAkBoD,GAAcrxD,EAAekuC,cAAc3mO,IAc3F,OAZA,EADkB,GAAcw8J,mBAAmB4nE,IAC1B,SAAU/8rC,GACjC,IAAI2itC,EAAgB5lB,EAAS/8rC,GAEzB8vC,EAAK8yqC,uBAAkC,YAAT5itC,IAChCA,EAAO,aACP2itC,EAAgB5lB,EAASI,mBAGvB,GAAc9nE,UAAUr1nC,EAAMwitC,IAChCG,GAAiBA,EAAc/uF,YAAYj7J,EAAax49B,EAAQC,EAEpE,IACOsitC,EAAUF,EACnB,EAEAJ,EAAcjvtC,UAAU0vtC,cAAgB,SAAUh05B,GAChD,IAAIrmM,EAAQ/0H,KAAK29pC,eACb1unC,EAAMjvC,KAAKivC,IACf,GAAuBmsR,EAAOrmM,EAAM+g4B,qBAAsB,CACxD/29B,MAAOkQ,EAAIk8L,WACXnsM,OAAQiQ,EAAI+rI,aAEhB,EAEA2ziC,EAAcjvtC,UAAUmvtC,SAAW,SAAUlxD,EAAgBr6L,EAASr07B,EAAKna,GAAU,EAErF65rC,EAAcpitC,KAAO,YACdoitC,CACT,CAzHA,CAyHE,ICjIF,IAAIU,GAAY,CAAC,CAAC,OAAQ,QAAS,SAAU,CAAC,MAAO,SAAU,WAQxD,SAASC,GAAa3xD,EAAgB1unC,EAAKosmC,GAChD,IAAIk0E,EAAc5xD,EAAe9/lC,OAC7Bo/oC,EAAYsS,EAAYhrc,MAE5B,GAAiB,MAAb04b,GAAmC,SAAdA,EACvB,OAAOA,EAaT,IATA,IAAI/7C,EAAS,CACXnioC,MAAOkQ,EAAIk8L,WACXnsM,OAAQiQ,EAAI+rI,aAEVw0iC,EAAmC,eAAvBD,EAAY/7N,OAA0B,EAAI,EACtDi8N,EAAQJ,GAAUG,GAClBE,EAAY,CAAC,EAAG,KAAM,IACtBC,EAAc,CAAC,EAEV/utC,EAAI,EAAGA,EAAI,EAAGA,IACrB+utC,EAAYN,GAAU,EAAIG,GAAW5utC,IAAM8utC,EAAU9utC,GACrD+utC,EAAYF,EAAM7utC,IAAY,IAANA,EAAUy6oC,EAAS,GAAKk0E,EAAYE,EAAM7utC,IAGpE,IAAIgvtC,EAAS,CAAC,CAAC,IAAK,QAAS,GAAI,CAAC,IAAK,SAAU,IAAIJ,GACjD97nC,EAAOqg6B,GAAc47N,EAAazuD,EAAQquD,EAAYr3lC,SAC1D,OAAOu3lC,GAAO/7nC,EAAK+rR,OAAOmw2B,EAAO,KAAO,GAAKl8nC,EAAKk8nC,EAAO,IAAwB,GAAlBl8nC,EAAKk8nC,EAAO,IAAgC,GAApB1uD,EAAO0uD,EAAO,IAAY,EAAI,EACvH,CAOO,SAASC,GAAkBj+oC,EAAO+rlC,GASvC,OARA,EAAY/rlC,GAAS,IAAI,SAAUin+B,GACN,MAAvBA,EAAUxz4B,YACZwz4B,EAAU91E,gBAAkB81E,EAAUxz4B,UACtCwz4B,EAAUxz4B,UAAY,MAGxBwz4B,EAAUxf,aAAe,aAAeskI,EAAiBA,EAAexy4B,eAAiB,GAC3F,IACOv5M,CACT,CCpCA,IAAI,GAAY,GACZ,GAAO,EACP,GAAU/uE,KAAKgL,IACf,GAAUhL,KAAK8K,IAWfmitC,GAEJ,SAAUpn2B,GAGR,SAASon2B,IACP,IAAIpjqC,EAAmB,OAAXg8T,GAAmBA,EAAOnoX,MAAMP,KAAMI,YAAcJ,KAOhE,OALA0sD,EAAMngD,KAAOujtC,EAAevjtC,KAC5BmgD,EAAMqjqC,QAAU,CAAC,EACjBrjqC,EAAMsjqC,cAAgB,GACtBtjqC,EAAMo9pC,YAAc,GACpBp9pC,EAAMujqC,sBAAwB,GACvBvjqC,CACT,CAwqBA,OAnrBAkgX,EAAUkjzB,EAAgBpn2B,GAa1Bon2B,EAAepwtC,UAAUmvtC,SAAW,SAAUlxD,EAAgBr6L,EAASr07B,EAAKna,GAC1E90B,KAAK8kgC,KAAO719B,EAEPna,GAA4B,oBAAjBA,EAAQvoB,MAA8BuoB,EAAQ/W,OAAS/d,KAAKozV,KAC1EpzV,KAAK+ltC,YAET,EAEA+J,EAAepwtC,UAAUqmtC,WAAa,WACpC/ltC,KAAKo7T,MAAMvtE,YACX,IAAI8v6B,EAAiB39pC,KAAK29pC,eACtB5kC,EAAY/4nC,KAAKo7T,MACrBp7T,KAAK8mrC,QAAUnpB,EAAex6pC,IAAI,UAClCnD,KAAKkwtC,WAAavyD,EAAex6pC,IAAI,cAErCnD,KAAKmmtC,iBAELnmtC,KAAKmwtC,WAAWp3F,GAEhB,IAAIq3F,EAAgBzyD,EAAex6pC,IAAI,QAEvCnD,KAAKqwtC,gBAAgBt3F,EAAWq3F,EAAe,GAE/CpwtC,KAAKqwtC,gBAAgBt3F,EAAWq3F,EAAe,GAG/CpwtC,KAAKgmtC,aAAY,GAIjBhmtC,KAAKi9nC,iBAAiBlE,GAEtB/4nC,KAAKgmtC,cAELhmtC,KAAKswtC,2BAELtwtC,KAAKuwtC,6BAELvwtC,KAAKovtC,cAAcr2F,EACrB,EAEA+2F,EAAepwtC,UAAU2wtC,gBAAkB,SAAUj15B,EAAOg15B,EAAeI,GACzE,GAAKJ,EAAL,CAKA,IAAIhgsC,EAAOggsC,EAAc,EAAII,GAC7BpgsC,EAAe,MAARA,EAAeA,EAAO,GAAK,GAClC,IAAIutoC,EAAiB39pC,KAAK29pC,eACtB2vD,EAAU3vD,EAAex6pC,IAAI,WAC7Bk4oC,EAAWsiB,EAAetiB,SAC1Bnid,EAAWl5rB,KAAK+vtC,QAAQhf,UAExBpyqC,EAAW3+B,KAAK2ghC,gBAAgB,CAAC06H,EAAS,GAAK,EAAiB,IAAdm1E,GAAmBlD,EAAUjyE,EAAS,GAAKiyE,GAAUp0hB,GAEvGqrF,EAAQvkxB,KAAK2ghC,gBAA8B,IAAd6vM,EAAkB,SAAW,MAAOt3hB,GAEjEs6T,EAASxz/B,KAAK8mrC,QACdl+L,EAAiB5o/B,KAAK29pC,eAAe/0K,eACzC5o/B,KAAKo7T,MAAMj2S,IAAI,IAAI,GAAa,CAC9B9Q,MAAOg0+B,GAAgBO,EAAgB,CACrC3k/B,EAAG06B,EAAS,GACZ37B,EAAG27B,EAAS,GACZw0sB,cAA0B,eAAXqgR,EAA0B,SAAWjvO,EACpDA,MAAkB,eAAXivO,EAA0BjvO,EAAQ,SACzCn0vB,KAAMA,MAtBV,CAyBF,EAEA0/rC,EAAepwtC,UAAUywtC,WAAa,SAAUze,GAC9C,IAAI/zC,EAAiB39pC,KAAK29pC,eACtBlr5B,EAASzyQ,KAAK+vtC,QACd10E,EAAWsiB,EAAetiB,SAC1B7nJ,EAASxz/B,KAAK8mrC,QACdn2E,EAAY3wmC,KAAKkwtC,WACjBjT,EAAY,GAAoBt/C,EAAgB39pC,KAAKivC,IAAKosmC,GAE1D01D,EAAYt+7B,EAAOs+7B,UAAY/wsC,KAAKywtC,gBAAgBxT,GAEpDyT,EAAmB,IAAI,GAC3B3f,EAAU5rrC,IAAIursC,GAEdA,EAAiBvrsC,IAAIstP,EAAOup5B,WAAa20D,MACzCD,EAAiBvrsC,IAAIstP,EAAOmvR,QAAU+urB,GAAc,KAAMhgH,EAAY,GAAU3wmC,KAAK8mrC,SAAW,KAAM,GAAY9mrC,KAAK4wtC,YAAa5wtC,KAAM,OAAO,GAAQ,GAAYA,KAAK4wtC,YAAa5wtC,KAAM,OAAO,KAEpM0wtC,EAAiB97P,YAAY,IAAI,GAAa,CAC5CtyvB,MAAO,CACLr+N,EAAG,EACHjB,EAAG,EACH+7B,MAAOs8mC,EAAS,GAChBr8mC,OAAQq8mC,EAAS,GACjBt7oC,EAAG,MAGP,IAAIqgkC,EAAWu9F,EAAe/0K,eAAe6C,YAAY,KACrD5hmB,EAAW,GAAQu2qB,EAASrhiC,MAAOqhiC,EAASphiC,QAE5C2xkC,IACFl+1B,EAAOo+8B,aAAe,GACtBp+8B,EAAOk28B,aAAe,GACtBl28B,EAAOq+8B,kBAAoB,GAE3B9wtC,KAAKmuT,cAAcwv2B,EAAgBozC,EAAW,EAAG11D,EAAUxxvB,EAAU2pmB,GAErExz/B,KAAKmuT,cAAcwv2B,EAAgBozC,EAAW,EAAG11D,EAAUxxvB,EAAU2pmB,IAGvExz/B,KAAK+wtC,iBAAiBpzD,EAAgBozC,EAAW11D,EAAUxxvB,EAAU2pmB,GAErEk+M,EAAYvsrC,IAAI4rrC,EAClB,EAEA+e,EAAepwtC,UAAUyuT,cAAgB,SAAUwv2B,EAAgBozC,EAAWnyD,EAAavD,EAAUxxvB,EAAU2pmB,GAC7G,IAAIw9N,EAAU,GAAYhxtC,KAAK4wtC,YAAa5wtC,KAAM4+oC,GAAa,GAC3DxjgC,EAAY,GAAYp7I,KAAK4wtC,YAAa5wtC,KAAM4+oC,GAAa,GAC7DkH,EAAaj0L,GAAa8rM,EAAex6pC,IAAI,cAAek4oC,EAAS,IACrE41E,EAAc,GAAatzD,EAAex6pC,IAAI,eAAgB2ipC,EAAa,GAAIA,EAAa,EAAGA,EAAYA,EAAY,MAAM,GAC7HzkgC,EAAS,GAAUrhJ,KAAK8mrC,SAC5BmqC,EAAYhjsB,KAAK,CACf5sY,OAAQA,EACRklQ,WAAW,EACX3uS,MAAOo5mC,EACPtrE,UAAWtqgC,EACXy7hC,YAAa,SAAU13qC,GACrB,GAAeA,EAAEs/B,MACnB,IAEFwyrC,EAAYhttC,EAAIo3oC,EAAS,GAAK,EAC9B41E,EAAY7m0B,SAASuzwB,EAAe/l+B,SAAS,eAAem0zB,gBAC5DklO,EAAY3szB,SAAS,CACnB6ukB,eAAe,EACfC,aAAa,IAEf69O,EAAY58sC,MAAMg+T,WAAa,EAC/B4+4B,EAAYz7P,YAAY,YAAYnh9B,MAAQsppC,EAAe/l+B,SAAS,CAAC,WAAY,gBAAgBm0zB,eACjG9H,GAAwBgtO,GAAa,GACrClgB,EAAU5rrC,IAAI8rsC,GAKd,IAAIroO,EAAiB5o/B,KAAK29pC,eAAe/0K,eACrCsoO,EAAc,IAAI,GAAa,CACjC7vkC,OAAQA,EACRklQ,WAAW,EACX3uS,MAAOo5mC,EACPn6C,YAAa,SAAU13qC,GAErB,GAAeA,EAAEs/B,MACnB,EACAinnC,UAAWtqgC,EACX/mI,MAAOg0+B,GAAgBO,EAAgB,CACrC3k/B,EAAG,EACHjB,EAAG,EACHotB,KAAM,OAGV8gsC,EAAY17P,YAAY,QAAQnh9B,MAAQ,CACtCu3H,QAAS,IAEXsllC,EAAYn7P,gBAAkB,CAC5B1w6B,SAAU,KAEZrlD,KAAKo7T,MAAMj2S,IAAI+rsC,GACf,IAAIC,EAAmB,CAACrrE,EAAY,GAChCrz4B,EAASzyQ,KAAK+vtC,QAClBt98B,EAAOo+8B,aAAajyE,GAAeqyE,EACnCx+8B,EAAOq+8B,kBAAkBlyE,GAAeuyE,EACxC1+8B,EAAOk28B,aAAa/pE,GAAesyE,CACrC,EAEApB,EAAepwtC,UAAUqxtC,iBAAmB,SAAUpzD,EAAgBozC,EAAW11D,EAAUxxvB,EAAU2pmB,GACnG,IAAI1x5B,EAAQ+v3B,GAAa8rM,EAAex6pC,IAAI,iBAAkBk4oC,EAAS,IACnEloC,EAAY,GAAawqD,EAAex6pC,IAAI,kBAAmB2+F,EAAQ,GAAIA,EAAQ,EAAGA,EAAOA,EAAO,MAAM,GAC9GqxgC,EAAUlllB,KAAK,CACb5sY,OAAQ,OACRi60B,WAAW,EACXlnf,QAAQ,EACRnwe,EAAGo3oC,EAAS,GAAK,IAEnB,IAAIozE,EAAiB9wD,EAAe/l+B,SAAS,kBAAkBm0zB,eAE/D,GAAIonH,aAAqB,GAAS,CAChC,IAAI3sB,EAAY2sB,EAAU9+lC,MAC1B8+lC,EAAU/otB,SAAS,EAAc,CAE/B7/P,MAAOi87B,EAAUj87B,MACjBtmJ,EAAGuilC,EAAUvilC,EACbjB,EAAGwjlC,EAAUxjlC,EACb+7B,MAAOynjC,EAAUznjC,MACjBC,OAAQwnjC,EAAUxnjC,QACjByvrC,GACL,MACEt7G,EAAU/otB,SAASqk0B,GAGrB1d,EAAU5rrC,IAAIgulC,GACd,IAAIvqH,EAAiB5o/B,KAAK29pC,eAAe/0K,eACrCwoO,EAAiB,IAAI,GAAa,CACpCh9uB,QAAQ,EACRknf,WAAW,EACXjn9B,MAAOg0+B,GAAgBO,EAAgB,CACrC3k/B,EAAG,EACHjB,EAAG,EACHotB,KAAM,OAGVpwB,KAAKo7T,MAAMj2S,IAAIissC,GACf,IAAIC,EAAsB,EAAa,eAAX79N,EAA0B3pmB,EAAW,EA1OhD,GA0OsEwxvB,EAAS,GAAK,EAAG,GACpG5o4B,EAASzyQ,KAAK+vtC,QAClBt98B,EAAO0g2B,UAAYA,EACnB1g2B,EAAO2+8B,eAAiBA,EACxB3+8B,EAAO4+8B,oBAAsBA,EAC7BrxtC,KAAKsxtC,qBAAsB,CAC7B,EAEAxB,EAAepwtC,UAAUkxtC,YAAc,SAAUhyE,EAAar1a,EAC9D/0lB,EAAIH,GACF,GAAKr0I,KAAKkwtC,WAAV,CAMA,GAFAlwtC,KAAKo4mC,WAAa7uY,GAEbA,EAAO,CAEV,IAAI17f,EAAS7tO,KAAK2ghC,gBAAgB,CAACns4B,EAAIH,GAAKr0I,KAAK+vtC,QAAQhf,WAAW,GAEpE/wsC,KAAK+ptC,gBAAgBnrE,EAAa/w6B,EAAO,IAEzC7tO,KAAKuxtC,iBAILvxtC,KAAKgmtC,aACP,CAGIz8e,KAAWvpuB,KAAK29pC,eAAex6pC,IAAI,aAErCnD,KAAKivC,IAAIu1/B,eAAe,CACtBj4hC,KAAM,kBACNwR,KAAM/d,KAAKozV,IACXo+3B,YAAaxxtC,KAAK29pC,eAAepyoC,GACjC8gK,SAAUrsL,KAAKgwtC,cAAcjutC,UAI7BwnuB,GACDvpuB,KAAKyxtC,WAAazxtC,KAAK0xtC,0BACfC,GAAqB3xtC,KAAK29pC,iBACnC39pC,KAAK4xtC,qBAAqB5xtC,KAAK8ptC,YAAYlrE,IAAc,EA/B3D,CAiCF,EAEAkxE,EAAepwtC,UAAUymtC,eAAiB,WACxC,IAAIxoD,EAAiB39pC,KAAK29pC,eACtB6sD,EAAexqtC,KAAKgwtC,cAAgBryD,EAAerx+B,cACnD8xyB,EAAau/L,EAAenuG,YAC5B4rF,EAAa,CAAC,EAAGuiB,EAAetiB,SAAS,IAC7Cr7oC,KAAK8ptC,YAAc,CAAC,GAAUU,EAAa,GAAIpsP,EAAYg9K,GAAY,GAAO,GAAUovE,EAAa,GAAIpsP,EAAYg9K,GAAY,GACnI,EASA00E,EAAepwtC,UAAUqqtC,gBAAkB,SAAUnrE,EAAa74hC,GAChEA,EAAQA,GAAS,EACjB,IAAI43iC,EAAiB39pC,KAAK29pC,eACtBhf,EAAa3+oC,KAAK8ptC,YAClB1uE,EAAa,CAAC,EAAGuiB,EAAetiB,SAAS,IAC7CqD,GAAW34hC,EAAO44hC,EAAYvD,EAAYwD,EAC1C,GACA,IAAIxgL,EAAau/L,EAAenuG,YAEhCxvjC,KAAKgwtC,cAAgB,CAAC,GAAUrxE,EAAW,GAAIvD,EAAYh9K,GAAY,GAAO,GAAUugL,EAAW,GAAIvD,EAAYh9K,GAAY,GACjI,EAEA0xP,EAAepwtC,UAAUsmtC,YAAc,SAAU6L,GAC/C,IAAIl0D,EAAiB39pC,KAAK29pC,eACtBv/L,EAAau/L,EAAenuG,YAC5B/8yB,EAASzyQ,KAAK+vtC,QACd+B,EAAuB,CAAC,EAAGn0D,EAAetiB,SAAS,IACnD02E,EAAoBF,EAAYC,EAAuB9xtC,KAAK8ptC,YAE5DkI,EAAgBhytC,KAAKiytC,iBAAiBjytC,KAAKgwtC,cAAe5xP,EAAY2zP,EAAmB,WAEzFG,EAAmBlytC,KAAKiytC,iBAAiB7zP,EAAYA,EAAY0zP,EAAsB,cAE3Fr/8B,EAAOmvR,QAAQt9H,SAAS,CACtBlnS,KAAM40lC,EAAcG,WAEnBvr0B,SAAS,SAAUor0B,EAAcI,WACpC3/8B,EAAOup5B,WAAW13vB,SAAS,CACzBlnS,KAAM80lC,EAAiBC,WAEtBvr0B,SAAS,SAAUsr0B,EAAiBE,WAEvCpytC,KAAKqytC,cAAcN,EAAmBC,EACxC,EAEAlC,EAAepwtC,UAAUuytC,iBAAmB,SAAUzH,EAAcpsP,EAAYugL,EAAYqwE,GAC1F,IAAI3yqC,EAAO,CACT2yqC,WAAYA,EACZG,uBAAuB,GAGrBjlR,EAAalq8B,KAAKsytC,mBAAmB9H,EAAcnuqC,GAEnDk2qC,EAAc,CAACvytC,KAAK8utC,oBAAoBtE,EAAa,GAAI,aAAcnuqC,GAAOr8C,KAAK8utC,oBAAoBtE,EAAa,GAAI,aAAcnuqC,IAEtI+1qC,EAAYpytC,KAAKwytC,iBAAiB7zE,EAAY4zE,GAElD,MAAO,CACLJ,SAAU,IAAI,GAAe,EAAG,EAAG,EAAG,EAAGjoR,GACzCkoR,UAAWA,EACXK,aAAc,CAACvoR,EAAW,GAAG380B,MAAO280B,EAAWA,EAAW7p8B,OAAS,GAAGktH,OAE1E,EAEAuimC,EAAepwtC,UAAU4ytC,mBAAqB,SAAU9H,EAAcnuqC,GAIpE,IAEI6t5B,EAAa,GACbx7lB,GAAQ872B,EAAa,GAAKA,EAAa,IAHxB,IAInBtgR,EAAWro8B,KAAK,CACd0rH,MAAOvtH,KAAK8utC,oBAAoBtE,EAAa,GAAI,QAASnuqC,GAC1D8F,OAAQ,IAGV,IAAK,IAAIvhD,EAAI,EAAGA,EATG,IASeA,IAAK,CACrC,IAAI8+N,EAAY8q/B,EAAa,GAAK972B,EAAO9tW,EAEzC,GAAI8+N,EAAY8q/B,EAAa,GAC3B,MAGFtgR,EAAWro8B,KAAK,CACd0rH,MAAOvtH,KAAK8utC,oBAAoBpv/B,EAAW,QAASrjL,GACpD8F,OAAQvhD,EAlBO,KAoBnB,CAMA,OAJAsp8B,EAAWro8B,KAAK,CACd0rH,MAAOvtH,KAAK8utC,oBAAoBtE,EAAa,GAAI,QAASnuqC,GAC1D8F,OAAQ,IAEH+n5B,CACT,EAEA4lR,EAAepwtC,UAAU8ytC,iBAAmB,SAAU7zE,EAAY4zE,GAChE,IAAIl3E,EAAWr7oC,KAAK29pC,eAAetiB,SACnC,MAAO,CAAC,CAACA,EAAS,GAAKk3E,EAAY,GAAI5zE,EAAW,IAAK,CAACtD,EAAS,GAAIsD,EAAW,IAAK,CAACtD,EAAS,GAAIsD,EAAW,IAAK,CAACtD,EAAS,GAAKk3E,EAAY,GAAI5zE,EAAW,IAC/J,EAEAmxE,EAAepwtC,UAAU+wtC,gBAAkB,SAAUxT,GACnD,IAAIzpN,EAASxz/B,KAAK8mrC,QACdzob,EAAUr+vB,KAAK29pC,eAAex6pC,IAAI,WACtC,OAAO,IAAI,GAAyB,eAAXqw/B,GAA4Bn1P,EAGtC,eAAXm1P,GAA2Bn1P,EAAU,CACvCzloB,OAAsB,WAAdqklC,GAA0B,EAAI,EACtC12lC,UAAW1jH,KAAKsmC,GAAK,GACR,aAAXqq9B,GAA0Bn1P,EAG1B,CACFzloB,OAAsB,SAAdqklC,EAAuB,GAAK,GAJE,CACtCrklC,OAAsB,SAAdqklC,EAAuB,GAAK,EACpCpklC,QAAS,GARoD,CAC7DD,OAAsB,WAAdqklC,EAAyB,GAAK,EACtC12lC,SAAU1jH,KAAKsmC,GAAK,GAUxB,EAEA2mrC,EAAepwtC,UAAU2ytC,cAAgB,SAAU1zE,EAAYqzE,GAC7D,GAAKhytC,KAAKkwtC,WAAV,CAIA,IAAIz98B,EAASzyQ,KAAK+vtC,QACdpyD,EAAiB39pC,KAAK29pC,eACtBkzD,EAAep+8B,EAAOo+8B,aACtBlI,EAAel28B,EAAOk28B,aACtBttE,EAAWsiB,EAAetiB,SAC1Bj9K,EAAau/L,EAAenuG,YAChC,GAAK,CAAC,EAAG,IAAI,SAAUovF,GACrB,IAAIqyE,EAAcJ,EAAajyE,GAC/BqyE,EAAY3szB,SAAS,OAAQ0tzB,EAAcS,aAAa7zE,IACxDqyE,EAAYjutC,EAAI27oC,EAAWC,GAC3B,IAAIlh+B,EAAM,GAAUih+B,EAAWC,GAAc,CAAC,EAAGvD,EAAS,IAAKj9K,GAAY,GACvEm6B,EAAav4/B,KAAK8utC,oBAAoBpxiC,EAAK,cAC/CuziC,EAAYr4lC,OAASq4lC,EAAYp4lC,OAAS0/3B,EAAa8iJ,EAAS,GAChE41E,EAAYhttC,EAAIo3oC,EAAS,GAAK9iJ,EAAa,EAE3C,IAAIqyN,EAAY,GAAuBn48B,EAAOq+8B,kBAAkBlyE,GAAc,GAAqBqyE,EAAajxtC,KAAKo7T,QACrHut5B,EAAa/pE,GAAat6uB,SAAS,CACjCrga,EAAG2mtC,EAAU,GACb5ntC,EAAG4ntC,EAAU,GACbx6rC,KAAMutoC,EAAeyuD,gBAAgBpstC,KAAKgwtC,cAAcpxE,IACxDzra,cAAe,SACfoxC,MAAwB,aAAjBvkxB,KAAK8mrC,QAAyB9mrC,KAAK2ghC,gBAAgB,OAAQluwB,EAAOs+7B,WAAa,UAE1F,GAAG/wsC,KAzBH,CA0BF,EAEA8vtC,EAAepwtC,UAAUgztC,eAAiB,SAAUC,EAAaz5jB,EAAW05jB,EAAaC,GACvF,IAAIl1D,EAAiB39pC,KAAK29pC,eACtBv/L,EAAau/L,EAAenuG,YAC5B6rF,EAAWsiB,EAAetiB,SAC1BD,EAAa,CAAC,EAAGC,EAAS,IAC1B5o4B,EAASzyQ,KAAK+vtC,QACd58G,EAAY1g2B,EAAO0g2B,UAEvB,GAAKA,EAAL,CAIAA,EAAUlllB,KAAK,aAAa,GAC5B,IAGI1ga,EAAQvtH,KAAK8utC,oBAAoB6D,EAAa,QAHvC,CACTxD,uBAAuB,IAGrB52N,EAAav4/B,KAAK8utC,oBAAoB6D,EAAa,cACnD3vtC,EAAI,GAAU2vtC,EAAav0P,EAAYg9K,GAAY,GACnDn3oC,EAAIo3oC,EAAS,GAAK9iJ,EAAa,EAC/Bu6N,EAAkB,CACpB7utC,EAAGkvmC,EAAUlvmC,EACbjB,EAAGmwmC,EAAUnwmC,GAGfmwmC,EAAUnwmC,EAAIA,EACdmwmC,EAAUlvmC,EAAIA,EACd,IAAI2mtC,EAAY,GAAuBn48B,EAAO4+8B,oBAAqB,GAAqBl+G,EAAWnzmC,KAAKo7T,QACpGg25B,EAAiB3+8B,EAAO2+8B,eAC5BA,EAAenjsB,KAAK,aAAa,GAEjC,IAAIs2P,EAAQvkxB,KAAK2ghC,gBAAgB,OAAQluwB,EAAOs+7B,WAG5CrnqB,EAA0B,eADjB1piB,KAAK8mrC,QAElBsqC,EAAe9szB,SAAS,CACtBl0Y,MAAOwisC,GAA4B,IAAMj1D,EAAeyuD,gBAAgBlzjB,GACxEi6E,cAAezpM,EAAe66O,EAAQ,SACtCA,MAAO76O,EAAe,SAAW66O,IAEnC,IAAIwuc,EAAoB,CACtB9utC,EAAGA,EACHjB,EAAGA,EACHqR,MAAO,CACL+oH,KAAM7P,IAGNylmC,EAAgB,CAClB3+sC,MAAO,CACLpQ,EAAG2mtC,EAAU,GACb5ntC,EAAG4ntC,EAAU,KAIjB,GAAIjtD,EAAer6L,QAAQwiB,uBAAyB9l/B,KAAKsxtC,oBAAqB,CAC5E,IAAIx7P,EAAe,CACjBzw6B,SAAU,IACVwlE,OAAQ,aACRov2B,UAAU,GAEZk5I,EAAUlvmC,EAAI6utC,EAAgB7utC,EAC9BkvmC,EAAUnwmC,EAAI8vtC,EAAgB9vtC,EAC9BmwmC,EAAUt6I,UAAUk6P,EAAmBj9P,GACvCs7P,EAAev4P,UAAUm6P,EAAel9P,EAC1C,MACEq9I,EAAUlllB,KAAK8ksB,GACf3B,EAAenjsB,KAAK+ksB,GAGtBhztC,KAAKsxtC,qBAAsB,EAC3B,IAAI3I,EAAe3otC,KAAK+vtC,QAAQpH,aAEhC,GAAIA,EACF,IAAK,IAAI/ntC,EAAI,EAAGA,EAAI+ntC,EAAatotC,OAAQO,IAGvCZ,KAAK8kgC,KAAKxjB,UAAUqnO,EAAa/ntC,GAlErC,CAqEF,EAEAkvtC,EAAepwtC,UAAU4wtC,yBAA2B,WAClD,IAAIlutC,EAAOpC,KAEXA,KAAK+vtC,QAAQhf,UAAUngsC,GAAG,aAAa,SAAUzR,GAG/C,GAFAiD,EAAKqvtC,WAAY,GAEZrvtC,EAAKg2mC,UAAW,CACnB,IAAIijC,EAAWj5oC,EAAKu7pC,eAAetiB,SAE/Bh5hC,EAAMjgH,EAAKu+gC,gBAAgB,CAACxhhC,EAAEg5H,QAASh5H,EAAEi5H,SAAUh2H,EAAK2ttC,QAAQhf,WAAW,GAAM,GAIrF1ulC,EAAI,GAAK,GAAQ,GAAQ,EAAGA,EAAI,IAAKg5hC,EAAS,IAE9Cj5oC,EAAKwvtC,qBAAqBvvmC,EAAI,GAAI,GAAKA,EAAI,IAAMA,EAAI,IAAMg5hC,EAAS,GACtE,CACF,IAAGzqoC,GAAG,YAAY,WAGhBxO,EAAKqvtC,WAAY,GAChBrvtC,EAAKg2mC,WAAah2mC,EAAKsvtC,yBAC1B,GACF,EAEA5B,EAAepwtC,UAAU6wtC,2BAA6B,WACpD,IAAIh4sC,EAAKvY,KAAKivC,IAAIk9/B,QAEdnsiC,KAAK29pC,eAAe9/lC,OAAOywpC,WAC7B/1sC,EAAG3H,GAAG,YAAa5Q,KAAKiztC,8BAA+BjztC,MACvDuY,EAAG3H,GAAG,WAAY5Q,KAAKuxtC,eAAgBvxtC,OAEvCA,KAAKkztC,2BAET,EAEApD,EAAepwtC,UAAUkytC,qBAAuB,SAAUuB,EAAWC,GACnE,IAAIz1D,EAAiB39pC,KAAK29pC,eACtBtiB,EAAWsiB,EAAetiB,SAE9B,GAAKsiB,EAAe9/lC,OAAOywpC,UAA3B,CAIA,IAAIlzE,EAAa,CAAC,EAAGC,EAAS,IAC1Bj9K,EAAau/L,EAAenuG,YAEhC2jK,EAAY,GAAQ,GAAQ/3E,EAAW,GAAI+3E,GAAY/3E,EAAW,IAClE,IAAIy3E,EA4JR,SAA8Bl1D,EAAgBv/L,EAAYg9K,GACxD,IAAIy3E,EAAoBQ,EACpBC,EAAoB31D,EAAex6pC,IAAI,qBAM3C,OAJImwtC,IACFT,EAAoB,GAAUS,EAAmBl1P,EAAYg9K,GAAY,GAAQ,GAG5Ey3E,CACT,CArK4BU,CAAqB51D,EAAgBv/L,EAAYg9K,GACrEo4E,EAAa,CAACL,EAAYN,EAAmBM,EAAYN,GACzDF,EAAc,GAAUQ,EAAW/3E,EAAYh9K,GAAY,GAC3Dg1N,EAAa,CAAC,GAAUogC,EAAW,GAAIp4E,EAAYh9K,GAAY,GAAO,GAAUo1P,EAAW,GAAIp4E,EAAYh9K,GAAY,IAG3Ho1P,EAAW,GAAKp4E,EAAW,KAAOg4C,EAAW,IAAK,KAClDogC,EAAW,GAAKp4E,EAAW,KAAOg4C,EAAW,GAAKrznC,KAG9CqzpC,IACEhgC,EAAW,MAAO,IACpBpzrC,KAAK0ytC,eAAeC,EAAav/B,EAAW,GAAI,KAAMy/B,GAC7Cz/B,EAAW,KAAOrznC,IAC3B//D,KAAK0ytC,eAAeC,EAAav/B,EAAW,GAAI,KAAMy/B,GAEtD7ytC,KAAK0ytC,eAAeC,EAAaA,EAAa,KAAME,IAUxD,IAAIY,EAAWzztC,KAAKiwtC,sBAChByD,EAAW,IAEXN,GAAczB,GAAqBh0D,MACrC+1D,EAAW1ztC,KAAKiwtC,sBAAwBtyD,EAAegwD,sBAAsBv6B,IAG/E,IAAIugC,E9b1LD,SAAyBC,EAAQC,GACtC,IAAIC,EAAO,CAAC,EACRC,EAAO,CAAC,EAGZ,OAFAC,EAAQJ,GAAU,GAAIE,GACtBE,EAAQH,GAAU,GAAIE,EAAMD,GACrB,CAACG,EAAWH,GAAOG,EAAWF,IAErC,SAASC,EAAQE,EAAa7ksC,EAAK8ksC,GACjC,IAAK,IAAIvztC,EAAI,EAAGi+H,EAAMq1lC,EAAY7ztC,OAAQO,EAAIi+H,EAAKj+H,IAAK,CACtD,IAAIm8wB,EAAW2lN,GAAoBwxP,EAAYtztC,GAAGm8wB,SAAU,MAE5D,GAAgB,MAAZA,EACF,OAMF,IAHA,IAAI0lO,EAAchiB,GAAiByzP,EAAYtztC,GAAGykK,WAC9C+ujC,EAAmBD,GAAYA,EAASp3c,GAEnC34wB,EAAI,EAAG48oC,EAAOv+J,EAAYpi/B,OAAQ+D,EAAI48oC,EAAM58oC,IAAK,CACxD,IAAIihK,EAAYo90B,EAAYr++B,GAExBgwtC,GAAoBA,EAAiB/ujC,GACvC+ujC,EAAiB/ujC,GAAa,MAE7Bh2I,EAAI0tvB,KAAc1tvB,EAAI0tvB,GAAY,CAAC,IAAI13mB,GAAa,CAEzD,CACF,CACF,CAEA,SAAS4ujC,EAAW5ksC,EAAKglsC,GACvB,IAAI7wsC,EAAS,GAEb,IAAK,IAAI5iB,KAAKyuB,EACZ,GAAIA,EAAI1vB,eAAeiB,IAAgB,MAAVyuB,EAAIzuB,GAC/B,GAAIyztC,EACF7wsC,EAAO3hB,MAAMjB,OACR,CACL,IAAI6h/B,EAAcwxO,EAAW5ksC,EAAIzuB,IAAI,GACrC6h/B,EAAYpi/B,QAAUmjB,EAAO3hB,KAAK,CAChCk7wB,SAAUn8wB,EACVykK,UAAWo90B,GAEf,CAIJ,OAAOj/9B,CACT,CACF,C8byIwB,CAA0BiwsC,EAAUC,GAExD1ztC,KAAKs0tC,kBAAkB,WAAY,GAAyBX,EAAc,GAAIh2D,IAE9E39pC,KAAKs0tC,kBAAkB,YAAa,GAAyBX,EAAc,GAAIh2D,GA3C/E,CA4CF,EAEAmyD,EAAepwtC,UAAUuztC,8BAAgC,SAAU9ztC,GACjE,IAAIg++B,EAUJ,GATA2nD,GAAoB3liC,EAAE2Q,QAAQ,SAAUA,GACtC,IAAIyktC,EAAav3O,GAAUlt+B,GAE3B,GAA4B,MAAxByktC,EAAWlvjC,UAEb,OADA830B,EAASo3O,GACF,CAEX,IAAG,GAEEp3O,EAAL,CAIA,IAAIr/K,EAAY99zB,KAAKsj+B,QAAQsf,iBAAiBzF,EAAOD,aACjDygL,EAAiB39pC,KAAK29pC,eAE1B,GAAKA,EAAewuD,eAAeruZ,GAAnC,CAIA,IAAItuzB,EAAOsuzB,EAAUt5rB,QAAQ242B,EAAOnuuB,UAChC7tQ,EAAQqO,EAAKsggC,WAAW3sgC,IAAIw6pC,EAAe6uD,sBAAsBh9sC,GAAO2t+B,EAAO930B,WAE9E/4H,MAAMnrC,IACTnB,KAAK0ytC,eAAevxtC,EAAOA,EAN7B,CAPA,CAeF,EAEA2utC,EAAepwtC,UAAU6xtC,eAAiB,WACxC,IAAI9+8B,EAASzyQ,KAAK+vtC,QAClBt98B,EAAO0g2B,WAAa1g2B,EAAO0g2B,UAAUlllB,KAAK,aAAa,GACvDx7Q,EAAO2+8B,gBAAkB3+8B,EAAO2+8B,eAAenjsB,KAAK,aAAa,GACjE,IAAI06rB,EAAe3otC,KAAK+vtC,QAAQpH,aAEhC,GAAIA,EACF,IAAK,IAAI/ntC,EAAI,EAAGA,EAAI+ntC,EAAatotC,OAAQO,IAGvCZ,KAAK8kgC,KAAKvjB,UAAUonO,EAAa/ntC,GAGvC,EAEAkvtC,EAAepwtC,UAAUgytC,wBAA0B,WACjD1xtC,KAAKuxtC,iBAEL,IAAI5iiC,EAAU3uL,KAAKiwtC,sBAEnBjwtC,KAAKs0tC,kBAAkB,WAAY,GAAyB3liC,EAAS3uL,KAAK29pC,iBAE1Ehv+B,EAAQtuL,OAAS,CACnB,EAEAyvtC,EAAepwtC,UAAUwztC,0BAA4B,WACnDlztC,KAAKuxtC,iBAEL,IAAIh5sC,EAAKvY,KAAKivC,IAAIk9/B,QAClB5zhC,EAAGy1B,IAAI,YAAahuC,KAAKiztC,+BACzB16sC,EAAGy1B,IAAI,WAAYhuC,KAAKuxtC,eAC1B,EAEAzB,EAAepwtC,UAAUihhC,gBAAkB,SAAU9yyB,EAAQ9hJ,EAASsyqB,EAAStxvB,GAC7E,IAAI61H,EAAY,GAAqB72C,EAASh/E,EAAS,KAAO/M,KAAKo7T,OACnE,OAAO,GAAevtF,GAAU,GAAuBA,EAAQjrG,EAAWy7nB,GAAW,GAA2BxwhB,EAAQjrG,EAAWy7nB,EACrI,EAGAyxd,EAAepwtC,UAAU40tC,kBAAoB,SAAU/ntC,EAAMqlE,GAC3DA,GAASA,EAAMvxE,QAAUL,KAAKivC,IAAIu1/B,eAAe,CAC/Cj4hC,KAAMA,EACNqlE,MAAOA,GAEX,EAMAk+oC,EAAepwtC,UAAU2l8B,QAAU,WACjCrl8B,KAAKkztC,4BAELlztC,KAAK0xtC,yBACP,EAMA5B,EAAepwtC,UAAUmzB,OAAS,WAChC7yB,KAAKkztC,4BAELlztC,KAAK0xtC,yBACP,EAEA5B,EAAevjtC,KAAO,uBACfujtC,CACT,CArrBA,CAqrBE,IAEF,SAASa,GAAcrlrC,EAAQ+1G,EAAQ2vkC,EAAS51kC,GAC9C,OAAO,IAAI,GAAgB,CACzBknF,MAAO,CACLh3L,OAAQA,GAEVi7W,YAAayq0B,EACb3vkC,OAAQA,EACRzpC,MAAOo5mC,EACPn6C,YAAa,SAAU13qC,GAErB,GAAeA,EAAEs/B,MACnB,EACAinnC,UAAWtqgC,GAEf,CAaA,SAASu2kC,GAAqBh0D,GAC5B,IAAI62D,EAAoB72D,EAAex6pC,IAAI,qBAC3C,SAA+B,MAArBqxtC,EAA4B72D,EAAex6pC,IAAI,YAAcqxtC,EACzE,CAEA,SAAS,GAAUhhO,GACjB,MAAkB,aAAXA,EAAwB,YAAc,WAC/C,CAEA,YC5vBO,IAAIihO,GAAsB,CAC/BlotC,KAAM,kBACNkyB,MAAO,oBAEP8vC,OAAQ,UAECmmpC,GAAwB,SAAU5/rC,EAASwu8B,GACpDA,EAAQwe,cAAc,CACpBhe,SAAU,YACV704B,MAAOn6D,IACN,SAAUigG,GACXA,EAAMw/a,YAAYz/gB,EAAQu3J,SAC5B,GACF,ECTWsoiC,GAA4B,CAAC,CACtC55L,mBAAmB,EACnB959B,MAAO,SAAU+h7B,EAAa1f,GAC5B,IAAIg9D,EAAe,GAUnB,OATAh9D,EAAQwe,cAAc,aAAa,SAAU67K,GAC3C,I9C6HiCurC,EAAWE,EAAgByC,EAAel02B,EAC3Em02B,E8C9HI//K,EAAkB/oC,EAAY+oC,iBAE7B4xI,EAAewuD,eAAenpO,IAAgB+oC,GAAmBA,EAAgB7zM,OAItFooN,EAAaz+hC,M9CuHoBqnsC,E8CvHuBvrC,EAAeurC,U9CuH3BE,E8CvHsCzrC,EAAeE,c9CuHrCguC,E8CvHoD,GAAYluC,EAAekuC,cAAeluC,G9CuH/Ehm0B,E8CvHgGgm0B,EAAe6uD,sBAAsBxpO,EAAYx+2B,W9CwH5NsnkC,EAAiB,CAAC,EACtB,EAAY5C,GAAW,SAAUv9rC,GAC/B,IAAIg2nC,EAAc,GAAcD,mBAAmB0nE,EAAez9rC,IAClEmgsC,EAAengsC,GAASg2nC,CAC1B,IACO,CACL1uH,SAAU,SAAkB5q+B,EAAQ74B,GAClC,IAAI4s/B,EAcA/21B,EARJ,SAASy23B,EAAUj3gC,GACjB,OAAOo/gC,GAAsBz0hC,EAAM61J,EAAWxgJ,EAChD,CAEA,SAASw2gC,EAAUx2gC,EAAK1jB,GACtBgjiC,GAAsB30hC,EAAM61J,EAAWxgJ,EAAK1jB,EAC9C,CAVW,MAAPw2V,IACFykqB,EAAW5s/B,EAAKuggC,kBAAkBp4qB,IAcpC,IAFA,IAAI5oJ,EAAQv/L,EAAKsggC,WAEqB,OAA9Bzq2B,EAAYh9H,EAAOtnC,SAAiB,CAC1C,IAAIkrsC,EAAcz8rC,EAAKqggC,eAAexq2B,GAGtC,IAAI4miC,IAAyC,IAA1BA,EAAY1gM,UAS/B,IALA,IAAIpqgC,EAAe,MAAPw2V,EAAc5oJ,EAAM5rM,IAAIi5/B,EAAU/21B,GAAaA,EACvD6miC,EAAaL,EAAc1qsC,GAC3BmosC,EAAWF,EAAe8C,GAC1BvqE,EAAcmqE,EAAeI,GAExBtrsC,EAAI,EAAGi+H,EAAM8igC,EAAYthoC,OAAQO,EAAIi+H,EAAKj+H,IAAK,CACtD,IAAI2L,EAAOo1nC,EAAY/goC,GACvB0osC,EAAS/8rC,IAAS+8rC,EAAS/8rC,GAAM4znC,YAAYh/nC,EAAO26hC,EAAWT,EACjE,CACF,CACF,I8CjKA,IACOiF,CACT,GAEF,CACEvF,mBAAmB,EACnB959B,MAAO,SAAU+h7B,EAAa1f,GAC5B,IAAI9z9B,EAAOwz+B,EAAYx+2B,UACnBgq9B,EAAiB,GACrBlrH,EAAQwe,cAAc,aAAa,SAAU67K,GAC3C,GAAIA,EAAewuD,eAAenpO,GAAc,CAC9C,IAAIyrG,EAAakvE,EAAewvD,cAAc,GAAYC,GAAgB,KAAMpqO,EAAa26K,KAAoB,CAC/Gr7Y,MAAO,GACPqsU,YAAa,IAEX/1E,EAAS+kJ,EAAe6uD,sBAAsBh9sC,GAE9CopgC,GAAU,IAEZ61E,EAAWn76B,UAAYsl2B,EACvB41E,EAAe3slC,KAAK4slC,GAExB,CACF,IAEAzrG,EAAYx+2B,UAAU625B,UAAU,aAAcmzD,EAChD,IAKF,SAAS4+H,GAAepqO,EAAa26K,EAAgBx8pC,EAAO+qsC,GAQ1D,IAPA,IAAI5C,EAAW3rC,EAAeE,cAAcquC,GACxCvqE,EAAc,GAAcD,mBAAmB4nE,GAC/CsrB,EAAe,CACjBrnmC,MAAO226B,GAAkBlhD,EAAYx+2B,UAAW,UAIzC5jI,EAAI,EAAGi+H,EAAM8igC,EAAYthoC,OAAQO,EAAIi+H,EAAKj+H,IAAK,CACtD,IAAI2L,EAAOo1nC,EAAY/goC,GACnB2yO,EAAU+19B,EAAkB,YAAT/8rC,EAAqB,oBAAsBA,GAClEgnO,GAAWA,EAAQ4s5B,YAAYh/nC,EAAO26hC,EAAWT,EACnD,CAEA,OAAOu5L,EAAarnmC,MAEpB,SAASuu6B,EAAUj3gC,GACjB,OAAO+vsC,EAAa/vsC,EACtB,CAEA,SAASw2gC,EAAUx2gC,EAAK1jB,GACtByztC,EAAa/vsC,GAAO1jB,CACtB,CACF,CCpEA,IAAI,GAAO,EACI,SAAS0ztC,GAAsBh3pC,GAC5C,IAAI0t8B,EAAY1t8B,GAAUA,EAAO0t8B,UAE5B,GAAeA,KAClBA,EAAYA,EAAY,CAACA,GAAa,IAGxC,GAAKA,GAAW,SAAUnre,GACxB,GAAKA,EAAL,CAKI,GAAIA,EAAK,eAAiB,GAAIA,EAAK,YACrCA,EAAI00rB,OAAS10rB,EAAI20rB,iBACV30rB,EAAI20rB,WAGb,IAAID,EAAS10rB,EAAI00rB,OAEbA,GAAU,GAAeA,IAC3B,GAAKA,GAAQ,SAAUr0F,GACjB,GAAgBA,KACd,GAAIA,EAAO,WAAa,GAAIA,EAAO,SACrCA,EAAM5ynC,IAAM4ynC,EAAMj6lC,OAGhB,GAAIi6lC,EAAO,SAAW,GAAIA,EAAO,SACnCA,EAAM9ynC,IAAM8ynC,EAAMh6lC,KAGxB,GArBF,CAuBF,GACF,CAEA,SAAS,GAAIymL,EAAKxiN,GAChB,OAAOwiN,GAAOA,EAAIvtN,gBAAkButN,EAAIvtN,eAAe+K,EACzD,CCrCA,IAAI,IAAY,EACD,SAAS,GAAcqlkC,GAChC,KAIJ,IAAY,EACZA,EAAU35E,yBAAyB,aAAa,SAAUv47B,GAExD,OAAQA,EAAOmrzB,aAAiBnrzB,EAAOi3pC,OAASj3pC,EAAOi3pC,OAAOz0tC,OAAS,EAAIw9D,EAAOoz/B,YAAc,KAAMpz/B,EAAOwwpC,WAA6B,YAAf,YAC7H,IACAt+I,EAAUr0B,eAAe+4K,GAAqBC,IAC9C,EAAKC,IAA2B,SAAU3kqC,GACxC+/gC,EAAU9zB,eAAe8zB,EAAU/gC,SAASI,OAAOM,UAAW1/+B,EAChE,IACA+/gC,EAAU/0B,qBAAqB,IACjC,CCjBO,SAAS,GAAQ+0B,GACtBA,EAAUpyB,uBAAuB,IACjCoyB,EAAUnyB,sBAAsB,IAChC,GAAcmyB,EAChB,CCCA,IAAIilJ,GAEJ,SAAUts2B,GAGR,SAASss2B,IACP,IAAItoqC,EAAmB,OAAXg8T,GAAmBA,EAAOnoX,MAAMP,KAAMI,YAAcJ,KAShE,OAPA0sD,EAAMngD,KAAOyotC,EAAezotC,KAM5BmgD,EAAMuoqC,WAAa,GACZvoqC,CACT,CAqSA,OAlTAkgX,EAAUoozB,EAAgBts2B,GAe1Bss2B,EAAet1tC,UAAU61/B,cAAgB,SAAU3zB,EAAW6zB,GAC5D/soB,EAAOhpX,UAAU61/B,cAAch1/B,MAAMP,KAAMI,WAE3CJ,KAAKustC,cAEL,IAAI7ktC,EAAO1H,KAAK2oY,MAAQ3oY,KAAKk1tC,iBAE7Bl1tC,KAAKi1tC,WAAa,GAElBE,GAAan1tC,KAAK2oY,OAAO/oY,KAAKI,KAAMA,KAAKi1tC,YAEzCj1tC,KAAKo1tC,eAAexzP,EAAW6zB,GAE/B,IAAIzsI,EAAahp3B,KAAK69D,OAAOmrzB,WAC7Bhp3B,KAAK+rtC,aAAY,SAAUtiB,EAAe99rC,GAC3B,eAATjE,GACF+hsC,EAAc3pE,cAAgB,WAC9B2pE,EAAczgV,WAAa,EAAaA,KAExCygV,EAAcrrO,WAAap+9B,KAAKwvjC,YAChCi6I,EAAc3pE,cAAgB,YAC9B2pE,EAAclpE,UAAY,EAAWvgoC,KAAKi1tC,YAAY,SAAUx0F,GAS9D,OARAA,EAAQ,EAAaA,GAEP,YAAV90nC,IAGF80nC,EAAM1/hC,OAAS,MAGV0/hC,CACT,IAEJ,GACF,EAOAu0F,EAAet1tC,UAAUostC,qBAAuB,WAQ9C,IAAIjupC,EAAS79D,KAAK69D,OACdw3pC,EAAsB,CAAC,EACvB1zF,EAAc,GAAcR,kBAC5B90E,EAAarsjC,KAAKqsjC,aAkBtB,SAAStgjC,EAAImhN,EAAKvhN,EAAO+yhC,GACvB,OAAOxx0B,GAAOA,EAAIvhN,IAAUuhN,EAAIvhN,GAAOhM,eAAe++hC,EACxD,CAnBA,EAAY7g+B,EAAOi3pC,QAAQ,SAAUr0F,GACnC,EAAYkB,GAAa,SAAUjjG,GAC7B+hG,EAAM9goC,eAAe++hC,KACvB22L,EAAoB32L,GAAc,EAEtC,GACF,IACA,EAAY22L,GAAqB,SAAUpytC,EAAGy7hC,GAC5C,IAAIjhkB,GAAS,EACb,EAAYz9d,KAAKkpsC,WAAW,SAAUv9rC,GACpC8xd,EAASA,GAAU1xd,EAAI8xD,EAAQlyD,EAAO+yhC,IAAe3yhC,EAAI8xD,EAAO/tD,OAAQnE,EAAO+yhC,EACjF,GAAG1+hC,OACFy9d,GAAU,EAAYz9d,KAAKkpsC,WAAW,SAAUv9rC,IAC9CkyD,EAAOlyD,KAAWkyD,EAAOlyD,GAAS,CAAC,IAAI+yhC,GAAc,GAAcv7hC,IAAIu7hC,EAAsB,YAAV/yhC,EAAsB,SAAW,WAAY0gjC,EACnI,GACF,GAAGrsjC,MAMH0oX,EAAOhpX,UAAUostC,qBAAqBvrtC,MAAMP,KAAMI,UACpD,EAEA40tC,EAAet1tC,UAAU01tC,eAAiB,SAAUxzP,EAAW6zB,GAC7D,IAAIsqI,EAAa//nC,KAAK69D,OAClB0ikC,EAAYvgoC,KAAKi1tC,WAEjB5oiC,GAAYop0B,EAASsqI,EAAan+J,GAAWv1yB,UAAY,CAAC,EAW9D,GAVA0z8B,EAAW1z8B,SAAWA,EAEtB,EAAYk08B,GAAW,SAAUE,EAAOzjnC,GACtC,IAAI6H,EAAM7kB,KAAKs1tC,kBAAkB70F,GAE5Bp08B,EAAS1sL,eAAeklB,KAC3BwnK,EAASxnK,IAAO,EAEpB,GAAG7kB,MAE6B,WAA5B+/nC,EAAW1xlC,aAA2B,CAExC,IAAIknrC,GAAW,EACf,EAAYh1F,GAAW,SAAUE,EAAOzjnC,GACtC,IAAI6H,EAAM7kB,KAAKs1tC,kBAAkB70F,GAE7Bp08B,EAASxnK,KACX0wsC,EAAWlpiC,EAASxnK,IAAO,EAAQ0wsC,GAAW,EAElD,GAAGv1tC,KACL,CAEF,EAMAg1tC,EAAet1tC,UAAUsstC,cAAgB,WACvC,OAAOhstC,KAAKmD,IAAI,aAClB,EAMA6xtC,EAAet1tC,UAAU41tC,kBAAoB,SAAU70F,GACrD,MAAsB,eAAfzgoC,KAAK2oY,MAAyB83vB,EAAMt/nC,MAAQ,GAAKs/nC,EAAMzjnC,MAAQ,EACxE,EAMAg4sC,EAAet1tC,UAAU0+pC,aAAe,WACtC,OAAOp+pC,KAAKi1tC,UACd,EAMAD,EAAet1tC,UAAUw1tC,eAAiB,WACxC,IAAIr3pC,EAAS79D,KAAK69D,OAClB,OAAOA,EAAOi3pC,QAAUj3pC,EAAOi3pC,OAAOz0tC,OAAS,EAAI,SAAWL,KAAK69D,OAAOmrzB,WAAa,aAAe,aACxG,EAMAgsW,EAAet1tC,UAAU60iB,YAAc,SAAUloX,GAC/CrsL,KAAK69D,OAAOwuH,SAAW,EAAaA,EACtC,EAMA2oiC,EAAet1tC,UAAUmssC,cAAgB,SAAU1qsC,GACjD,IAAI6b,EAAQ,GAAc+knC,eAAe5goC,EAAOnB,KAAKi1tC,YACrD,OAAgB,MAATj4sC,GAAgBhd,KAAK69D,OAAOwuH,SAASrsL,KAAKs1tC,kBAAkBt1tC,KAAKi1tC,WAAWj4sC,KAAW,UAA2B,YAC3H,EAOAg4sC,EAAet1tC,UAAUiutC,sBAAwB,SAAUrqF,GACzD,IAAI9/mC,EAAS,GACT+8mC,EAAYvgoC,KAAKi1tC,WAcrB,OAbAj1tC,KAAKi9pC,kBAAiB,SAAUj6K,GAC9B,IAAIP,EAAc,GACdjz+B,EAAOwz+B,EAAYx+2B,UACvBh1H,EAAKwywB,KAAKhixB,KAAKwstC,sBAAsBh9sC,IAAO,SAAUrO,EAAOkkK,GAEhD,GAAc089B,eAAe5goC,EAAOo/nC,KACtC+C,GAAc7gJ,EAAY5g/B,KAAKwjK,EAC1C,GAAGrlK,MACHwjB,EAAO3hB,KAAK,CACVk7wB,SAAUimO,EAAYz39B,GACtB85I,UAAWo90B,GAEf,GAAGzi/B,MACIwjB,CACT,EAQAwxsC,EAAet1tC,UAAU81tC,kBAAoB,SAAU/0F,GACrD,IAAIg1F,EAEJ,GAAIz1tC,KAAKqsjC,aACPopK,EAAiBh1F,EAAMt/nC,WAEvB,GAAmB,MAAfs/nC,EAAMt/nC,MACRs0tC,EAAiBh1F,EAAMt/nC,UAClB,CACL,IAAIu0tC,EAAgBj1F,EAAMv+pB,UAAY,GACtCuzvB,EAAiBC,EAAc,MAAO,KAAaA,EAAc,KAAO31pC,IAAW,GAAK21pC,EAAc,GAAKA,EAAc,IAAM,CACjI,CAGF,OAAOD,CACT,EAEAT,EAAet1tC,UAAUyttC,cAAgB,SAAUC,GAEjD,IAAIpttC,KAAKqsjC,aAAT,CAIA,IAAI/pS,EAAQ,GACRqsU,EAAc,CAAC,GAAI,IACnBgvE,EAAiB39pC,KA6BjBugoC,EAAYvgoC,KAAKi1tC,WAAWlztC,QAEhC,GAAKw+nC,EAAUlgoC,OAIR,CACL,IAAIwnW,EAAO04xB,EAAU,GAAGr+pB,SAAS,GACjCr6H,KAAS,KAAa04xB,EAAU11mC,QAAQ,CACtCq3c,SAAU,EAAC,IAAWr6H,MAExBA,EAAO04xB,EAAUA,EAAUlgoC,OAAS,GAAG6he,SAAS,MACvCnia,KAAYwgkC,EAAU1+nC,KAAK,CAClCqge,SAAU,CAACr6H,EAAM9nS,MAErB,MAZEwgkC,EAAU1+nC,KAAK,CACbqge,SAAU,EAAC,IAAWnia,OAa1B,IAAImsrB,GAAO,IAWX,OAVA,EAAYq0Y,GAAW,SAAUE,GAC/B,IAAIv+pB,EAAWu+pB,EAAMv+pB,SAEjBA,IAEFA,EAAS,GAAKgqR,GAAQ6he,EAAQ,CAAC7he,EAAMhqR,EAAS,IAAK,cACnD6rvB,EAAQ7rvB,EAASnge,SACjBmqvB,EAAOhqR,EAAS,GAEpB,GAAGlie,MACI,CACLsixB,MAAOA,EACPqsU,YAAaA,EA/Df,CAMA,SAASo/H,EAAQ7rvB,EAAUgquB,GACzB,IAAIupB,EAAiB93D,EAAe63D,kBAAkB,CACpDtzvB,SAAUA,IAGPgquB,IACHA,EAAavuC,EAAekuC,cAAc4pB,IAG5C,IAAIlomC,EAAQ6/lC,EAAeqI,EAAgBvpB,GAEvChquB,EAAS,MAAO,IAClBysnB,EAAY,GAAKph+B,EACR20W,EAAS,KAAOnia,IACzB4uhC,EAAY,GAAKph+B,EAEjB+0pB,EAAMzgxB,KAAK,CACTV,MAAO+ge,EAAS,GAChB30W,MAAOA,GACN,CACDpsH,MAAO+ge,EAAS,GAChB30W,MAAOA,GAGb,CAmCF,EAEAynmC,EAAezotC,KAAO,sBACtByotC,EAAep0rB,cAAgB6rd,GAAqB,GAAe7rd,cAAe,CAChFv0W,SAAU,KACVspiC,SAAS,EACTC,SAAS,EACTrxc,MAAO,OACP2/T,UAAW,GACXluT,WAAY,GACZ6/b,WAAY,YACZf,OAAQ,KACR9rW,WAAY,KACZioM,YAAa,EACb5ihC,aAAc,WACdkmpC,QAAS,GACT+5B,WAAW,IAGN0G,CACT,CApTA,CAoTE,IASEG,GAAe,CACjBlkK,YAAa,SAAU6kK,GACrB,IAAI/1F,EAAa//nC,KAAK69D,OAClBo4M,EAAYpzQ,KAAKgL,IAAIkynC,EAAW9p3B,UAAW,IAC3CmotB,EAAap+9B,KAAKwvjC,YAClByB,EAAc8uE,EAAW9uE,YAC7BA,EAAcpujC,KAAK8K,IAAIgoB,SAASs7hC,EAAa,IAAK,GAClD8uE,EAAW9uE,YAAcA,EAGzB,IAFA,IAAI8kK,GAAa33P,EAAW,GAAKA,EAAW,IAAM6yF,GAE1C8kK,EAAU3yqC,QAAQ6yN,KAAe8/8B,GAAa9/8B,EAAY,GAChEA,IAGF8p3B,EAAW9p3B,UAAYA,EACvB8/8B,GAAaA,EAAU3yqC,QAAQ6yN,GAE3B8p3B,EAAW41F,SACbG,EAAaj0tC,KAAK,CAChBqge,SAAU,EAAC,IAAWk8f,EAAW,IACjCpq9B,MAAO,CAAC,EAAG,KAIf,IAAK,IAAIgJ,EAAQ,EAAGkvuB,EAAOkyO,EAAW,GAAIph9B,EAAQi0iC,EAAa/kU,GAAQ6pe,EAAW/4sC,IAAS,CACzF,IAAIrP,EAAMqP,IAAUi0iC,EAAc,EAAI7yF,EAAW,GAAKlyO,EAAO6pe,EAC7DD,EAAaj0tC,KAAK,CAChBqge,SAAU,CAACgqR,EAAMv+uB,GACjBqG,MAAO,CAAC,EAAG,IAEf,CAEI+rnC,EAAW61F,SACbE,EAAaj0tC,KAAK,CAChBqge,SAAU,CAACk8f,EAAW,GAAIr+5B,KAC1B/rD,MAAO,CAAC,EAAG,KAIf8r9B,GAAgBg2P,GAChB,EAAYA,GAAc,SAAUr1F,EAAOzjnC,GACzCyjnC,EAAMzjnC,MAAQA,EACdyjnC,EAAMrwmC,KAAOpwB,KAAKostC,gBAAgB3rF,EAAMv+pB,SAC1C,GAAGlie,KACL,EACAgp3B,WAAY,SAAU8sW,GACpB,IAAI/1F,EAAa//nC,KAAK69D,OACtB,EAAYkikC,EAAW/2Q,YAAY,SAAU63Q,GAG3Ci1F,EAAaj0tC,KAAK,CAChBuuB,KAAMpwB,KAAKostC,gBAAgBvrF,GAAM,GACjC1/nC,MAAO0/nC,GAEX,GAAG7goC,MAEHg2tC,GAAiBj2F,EAAY+1F,EAC/B,EACAhB,OAAQ,SAAUgB,GAChB,IAAI/1F,EAAa//nC,KAAK69D,OACtB,EAAYkikC,EAAW+0F,QAAQ,SAAUmB,EAAej5sC,GACjD,GAAgBi5sC,KACnBA,EAAgB,CACd90tC,MAAO80tC,IAIX,IAAI70qC,EAAO,CACThxB,KAAM,GACNpT,MAAOA,GAOT,GAJ2B,MAAvBi5sC,EAAc50tC,QAChB+/C,EAAKhxB,KAAO6lsC,EAAc50tC,OAGxB40tC,EAAct2tC,eAAe,SAAU,CACzC,IAAIwB,EAAQigD,EAAKjgD,MAAQ80tC,EAAc90tC,MACvCigD,EAAK8gb,SAAW,CAAC/ge,EAAOA,GACxBigD,EAAKptC,MAAQ,CAAC,EAAG,EACnB,KAAO,CASL,IANA,IAAIkud,EAAW9gb,EAAK8gb,SAAW,GAC3B+9f,EAAU7+6B,EAAKptC,MAAQ,CAAC,EAAG,GAC3BkitC,EAAY,CAAC,EAAG,EAAG,GACnBC,EAAe,EAAC,IAAWp2pC,KAC3Bq2pC,EAAY,GAEPn92B,EAAK,EAAGA,EAAK,EAAGA,IAAM,CAG7B,IAFA,IAAI+3Q,EAAQ,CAAC,CAAC,MAAO,KAAM,OAAQ,CAAC,MAAO,KAAM,QAAQ/3Q,GAEhDr4W,EAAI,EAAGA,EAAI,GAAqB,MAAhBshe,EAASjpH,GAAar4W,IAC7Cshe,EAASjpH,GAAMg92B,EAAcjlmB,EAAMpwnB,IACnCq/9B,EAAQhnnB,GAAMi92B,EAAUt1tC,GACxBw1tC,EAAUn92B,GAAY,IAANr4W,EAGF,MAAhBshe,EAASjpH,KAAgBipH,EAASjpH,GAAMk92B,EAAal92B,GACvD,CAEAm92B,EAAU,IAAMl0vB,EAAS,KAAOnia,MAAakg6B,EAAQ,GAAK,GAC1Dm2P,EAAU,IAAMl0vB,EAAS,MAAO,MAAc+9f,EAAQ,GAAK,GAQvD/9f,EAAS,KAAOA,EAAS,IAAM+9f,EAAQ,IAAMA,EAAQ,KAGvD7+6B,EAAKjgD,MAAQ+ge,EAAS,GAE1B,CAEA9gb,EAAK2/C,OAAS,GAAcygiC,gBAAgBy0F,GAC5CH,EAAaj0tC,KAAKu/C,EACpB,GAAGphD,MAEHg2tC,GAAiBj2F,EAAY+1F,GAE7Bh2P,GAAgBg2P,GAChB,EAAYA,GAAc,SAAUr1F,GAClC,IAAIzsnC,EAAQysnC,EAAMzsnC,MACdq4sC,EAAc,CAAC,CAAC,IAAK,KAAKr4sC,EAAM,IAAK,CAAC,IAAK,KAAKA,EAAM,KAC1DysnC,EAAMrwmC,KAAOqwmC,EAAMrwmC,MAAQpwB,KAAKostC,gBAA+B,MAAf3rF,EAAMt/nC,MAAgBs/nC,EAAMt/nC,MAAQs/nC,EAAMv+pB,UAAU,EAAOmqvB,EAC7G,GAAGrstC,KACL,GAGF,SAASg2tC,GAAiBj2F,EAAYQ,GACpC,IAAIliY,EAAU0hY,EAAW1hY,SAEC,aAAtB0hY,EAAWvsI,QAAyBn1P,EAAUA,IAChDkiY,EAAUjmkC,SAEd,CAEA,YC1QA,GA9LA,SAAUouT,GAGR,SAAS2t2B,IACP,IAAI3pqC,EAAmB,OAAXg8T,GAAmBA,EAAOnoX,MAAMP,KAAMI,YAAcJ,KAGhE,OADA0sD,EAAMngD,KAAO8ptC,EAAuB9ptC,KAC7BmgD,CACT,CAmLA,OA1LAkgX,EAAUypzB,EAAwB3t2B,GASlC2t2B,EAAuB32tC,UAAUmvtC,SAAW,WAC1C,IAAI91F,EAAY/4nC,KAAKo7T,MACrB29zB,EAAUlr4B,YACV,IAAI8v6B,EAAiB39pC,KAAK29pC,eACtB2vD,EAAU3vD,EAAex6pC,IAAI,WAC7Byl/B,EAAiB+0K,EAAe/0K,eAChCrQ,EAAWqQ,EAAepjO,UAC1BiuM,EAAWm1B,EAAen2wB,eAE1Bwq+B,EAAYj9sC,KAAKs2tC,gBAEjBj7E,EAAWsiB,EAAetiB,SAE1Bk7E,EAAWv2tC,KAAKw2tC,eAEhBC,EAAWF,EAASE,SACpBjwG,EAAY,GAAgBm3C,EAAex6pC,IAAI,aAAa,IAAQsztC,GACxEA,GAAYz2tC,KAAKqwtC,gBAAgBt3F,EAAW09F,EAAS,GAAIp7E,EAAU70B,EAAWy2F,GAC9E,EAAYsZ,EAASG,eAAe,SAAUt1qC,GAC5C,IAAIq/kC,EAAQr/kC,EAAKq/kC,MACb7sB,EAAY,IAAI,GACpBA,EAAU6lB,QAAU,GAAYz5nC,KAAK22tC,aAAc32tC,KAAMygoC,GAEzDzgoC,KAAK42tC,iBAAiBhjH,EAAWxyjC,EAAKy1qC,uBAGtC,IAAIpB,EAAiB93D,EAAe63D,kBAAkB/0F,GAItD,GAFAzgoC,KAAK82tC,kBAAkBljH,EAAW6hH,EAAgB,CAAC,EAAG,EAAGp6E,EAAS,GAAIA,EAAS,KAE3E70B,EAAW,CACb,IAAIuwG,EAAc/2tC,KAAK29pC,eAAekuC,cAAc4pB,GACpD7hH,EAAUzulC,IAAI,IAAI,GAAa,CAC7B9Q,MAAO,CACLpQ,EAAiB,UAAdg5sC,GAAyBqQ,EAAUjyE,EAAS,GAAKiyE,EACpDtqtC,EAAGq4oC,EAAS,GAAK,EACjBjrnC,KAAMqwmC,EAAMrwmC,KACZ+itB,cAAe,SACfoxC,MAAO04b,EACPn49B,KAAMyzvB,EACNn72B,KAAMq21B,EACN7n1B,QAAyB,eAAhBmrlC,EAA+B,GAAM,KAGpD,CAEAh+F,EAAU5zmC,IAAIyulC,EAChB,GAAG5zmC,MACHy2tC,GAAYz2tC,KAAKqwtC,gBAAgBt3F,EAAW09F,EAAS,GAAIp7E,EAAU70B,EAAWy2F,GAC9E,GAAWt/C,EAAex6pC,IAAI,UAAW41nC,EAAW4kC,EAAex6pC,IAAI,YACvEnD,KAAKi9nC,iBAAiBlE,GACtB/4nC,KAAKovtC,cAAcr2F,EACrB,EAEAs9F,EAAuB32tC,UAAUk3tC,iBAAmB,SAAUhjH,EAAW0vB,GACvE,IAAI52kC,EAAQ1sD,KAEZ4zmC,EAAUhjmC,GAAG,aAAa,WACxB,OAAOomtC,EAAY,YACrB,IAAGpmtC,GAAG,YAAY,WAChB,OAAOomtC,EAAY,WACrB,IAEA,IAAIA,EAAc,SAAUvmsC,GAC1B,IAAIktoC,EAAiBjxmC,EAAMixmC,eAE3BA,EAAe9/lC,OAAOywpC,WAAa5hqC,EAAMzd,IAAIu1/B,eAAe,CAC1Dj4hC,KAAMkkB,EACNmhD,MAAO,GAAyB+rlC,EAAegwD,sBAAsBrqF,GAAaq6B,IAEtF,CACF,EAEA04D,EAAuB32tC,UAAU42tC,cAAgB,WAC/C,IAAI34D,EAAiB39pC,KAAK29pC,eACtB4xD,EAAc5xD,EAAe9/lC,OAEjC,GAA2B,aAAvB0xpC,EAAY/7N,OACd,OAAO,GAAoBmqK,EAAgB39pC,KAAKivC,IAAK0unC,EAAetiB,UAGpE,IAAI92X,EAAQgrc,EAAYhrc,MAMxB,OAJKA,GAAmB,SAAVA,IACZA,EAAQ,QAGHA,CAEX,EAEA8xc,EAAuB32tC,UAAU2wtC,gBAAkB,SAAUj15B,EAAOhrS,EAAMirnC,EAAU70B,EAAWy2F,GAC7F,GAAK7srC,EAAL,CAIA,IAAIwjlC,EAAY,IAAI,GAChBhrH,EAAiB5o/B,KAAK29pC,eAAe/0K,eACzCgrH,EAAUzulC,IAAI,IAAI,GAAa,CAC7B9Q,MAAOg0+B,GAAgBO,EAAgB,CACrC3k/B,EAAGuinC,EAA0B,UAAdy2F,EAAwB5hE,EAAS,GAAK,EAAIA,EAAS,GAAK,EACvEr4oC,EAAGq4oC,EAAS,GAAK,EACjBloa,cAAe,SACfoxC,MAAOiiW,EAAYy2F,EAAY,SAC/B7srC,KAAMA,OAGVgrS,EAAMj2S,IAAIyulC,EAbV,CAcF,EAOAyiH,EAAuB32tC,UAAU82tC,aAAe,WAC9C,IAAI74D,EAAiB39pC,KAAK29pC,eACtB+4D,EAAgB,EAAW/4D,EAAeS,gBAAgB,SAAU39B,EAAOzjnC,GAC7E,MAAO,CACLyjnC,MAAOA,EACPo2F,sBAAuB75sC,EAE3B,IACIy5sC,EAAW94D,EAAex6pC,IAAI,QAE9Bqw/B,EAASmqK,EAAex6pC,IAAI,UAC5Bk7vB,EAAUs/Z,EAAex6pC,IAAI,WASjC,OAPe,eAAXqw/B,EAA0Bn1P,GAAWA,GACvCq4d,EAAcp8pC,UAEPm8pC,IACLA,EAAWA,EAAS10tC,QAAQu4D,WAGzB,CACLo8pC,cAAeA,EACfD,SAAUA,EAEd,EAEAJ,EAAuB32tC,UAAUo3tC,kBAAoB,SAAU175B,EAAOq65B,EAAgBwB,GACpF775B,EAAMj2S,IAAI,GACVnlB,KAAK8utC,oBAAoB2G,EAAgB,UAAWwB,EAAW,GAAIA,EAAW,GAAIA,EAAW,GAAIA,EAAW,GAC5Gj3tC,KAAK8utC,oBAAoB2G,EAAgB,UAC3C,EAEAY,EAAuB32tC,UAAUi3tC,aAAe,SAAUl2F,GACxD,IAAIk9B,EAAiB39pC,KAAK29pC,eACtB9/lC,EAAS8/lC,EAAe9/lC,OACxBxvB,EAAewvB,EAAOxvB,aAE1B,GAAKA,EAAL,CAIA,IAAIg+I,EAAW,EAAaxuH,EAAOwuH,UAC/Bo03B,EAASk9G,EAAe23D,kBAAkB70F,GAEzB,WAAjBpylC,IAA8C,IAAjBA,GAC/Bg+I,EAASo03B,IAAU,EACnB,EAAYp03B,GAAU,SAAU/rL,EAAGukB,GACjCwnK,EAASxnK,GAAOA,IAAQ47hC,CAC1B,KAEAp03B,EAASo03B,IAAWp03B,EAASo03B,GAG/BzgjC,KAAKivC,IAAIu1/B,eAAe,CACtBj4hC,KAAM,kBACNwR,KAAM/d,KAAKozV,IACXo+3B,YAAaxxtC,KAAK29pC,eAAepyoC,GACjC8gK,SAAUA,GAlBZ,CAoBF,EAEAgqiC,EAAuB9ptC,KAAO,sBACvB8ptC,CACT,CA5LA,CA4LE,ICpMK,SAAS,GAAQtmJ,GACtBA,EAAUpyB,uBAAuB,IACjCoyB,EAAUnyB,sBAAsBs5K,IAChC,GAAcnnJ,EAChB,CCJA,IAAIonJ,GAAiB,CACnB91tC,MAAO,CACL80C,SAAS,GAEXq97B,MAAO,CACLvwpB,MAAM,IAGN,GAAQigpB,KACRizJ,GAAoB,CAAC,EACV,SAASihG,GAAW9zP,EAASr07B,GAC1C,IAAIoorC,EAAY/zP,EAAQ1ryB,SAAS,QAEjC,GAAKy/hC,EAAUl0tC,IAAI,WAAnB,CAIA,IAAIy9hB,EAAgB,EAAau2rB,IACjC,EAAav2rB,EAAcv/hB,MAAOii+B,EAAQgqB,iBAAiBnq/B,IAAI,SAAS,GACxE,EAAak0tC,EAAUx5pC,OAAQ+ie,GAAe,GAI9C,WAIE,GAHiBy2rB,EAAUz/hC,SAAS,SACVz0L,IAAI,QAEhB,CAGZ,IAAIm0tC,EAA4B,KAChCh0P,EAAQyf,YAAW,SAAUC,GAC3B,IAAIA,EAAYimC,kBAAhB,CAIA,IAAIsuM,EAAaD,EAA0Bn0tC,IAAI6/+B,EAAYz2+B,MAEtDgrtC,IACHA,EAAa,CAAC,EACdD,EAA0BrrtC,IAAI+2+B,EAAYz2+B,KAAMgrtC,IAGlD,GAAMv0O,GAAa509B,MAAQmpsC,CAT3B,CAUF,IACAj0P,EAAQo/B,eAAc,SAAU1f,GAC9B,IAAI1f,EAAQu/B,iBAAiB7f,GAI7B,GAAI,GAAkBA,EAAY40I,iBAEhC50I,EAAY40I,sBAFd,CAMA,IAAIponC,EAAOwz+B,EAAYx+2B,UAEvB,GAAKw+2B,EAAYimC,kBAgBV,CACL,IAAIuuM,EAAez5N,GAAoB/a,EAAY1f,QAAS0f,EAAYt4+B,KAAMyrnC,GAAmB7yJ,EAAQk/B,kBACrGi1N,EAAiBjotC,EAAKsshC,UAAU,SACpCtshC,EAAK6rhC,UAAU,QAASq8L,EAAWD,EAAgBD,GACrD,KApBoC,CAClC,IAAIG,EAAY30O,EAAYizB,aACxB2hN,EAAW,CAAC,EACZC,EAAe,GAAM70O,GAAa509B,MACtC5e,EAAKwywB,MAAK,SAAUlna,GAClB,IAAIygqB,EAAS/rgC,EAAK88/B,YAAYxxpB,GAC9B882B,EAASr8M,GAAUzgqB,CACrB,IACA,IAAIg92B,EAAcH,EAAUpuqC,QAC5BouqC,EAAU31c,MAAK,SAAUu5P,GACvB,IAAIzgqB,EAAM882B,EAASr8M,GACf7wgC,EAAOittC,EAAU3v4B,QAAQuzrB,IAAWA,EAAS,GAC7Ci8M,EAAez5N,GAAoB/a,EAAY1f,QAAS549B,EAAMmttC,EAAcC,GAC5EL,EAAiBjotC,EAAK+ggC,cAAcz1pB,EAAK,SAC7CtrW,EAAKmshC,cAAc7grB,EAAK,QAAS482B,EAAWD,EAAgBD,GAC9D,GACF,CApBA,CA0BA,SAASE,EAAWD,EAAgBD,GAGlC,IAAIO,EAAcN,EAAiB,EAAc,EAAc,CAAC,EAAGD,GAAeC,GAAkBD,EAEpG,OADAO,EAAYjyd,OAAQ,EACbiyd,CACT,CACF,GACF,CACF,CArEAC,GAuEA,WACE,IAAIC,EAAc30P,EAAQgqB,iBAAiBnq/B,IAAI,QAC3C6/jC,EAAaq0J,EAAUz/hC,SAAS,SAGpC,GAFAor4B,EAAWnlgC,OAAS,EAAgBmlgC,EAAWnlgC,OAAQo6pC,GAElDj1J,EAAW7/jC,IAAI,WAApB,CAIA,IAAImo8B,EAAMr85B,EAAIk9/B,QAAQ7gG,IAEtB,GAAI03H,EAAW7/jC,IAAI,eACjBmo8B,EAAI3u6B,aAAa,aAAcqmiC,EAAW7/jC,IAAI,oBADhD,CAKA,IAIIy2hB,EAJAs+rB,EAAY50P,EAAQk/B,iBACpB21N,EAAan1J,EAAW7/jC,IAAI,CAAC,OAAQ,cAAgB,GACrDi1tC,EAAep1J,EAAW7/jC,IAAI,CAAC,SAAU,cAAgB,GACzDk1tC,EAAmBx1tC,KAAKgL,IAAIqqtC,EAAWE,GAG3C,KAAIF,EAAY,GAAhB,CAIE,IAAI7ojC,EA+ER,WACE,IAAIA,EAAQi0zB,EAAQng+B,IAAI,SAMxB,OAJIksK,GAASA,EAAMhvK,SACjBgvK,EAAQA,EAAM,IAGTA,GAASA,EAAMj/I,IACxB,CAvFgB06X,GAIV8uI,EAFEvqX,EAEU5iK,EADIu2jC,EAAW7/jC,IAAI,CAAC,UAAW,cACZ,CAC7BksK,MAAOA,IAGG2z5B,EAAW7/jC,IAAI,CAAC,UAAW,iBAGzC,IAAIm1tC,EAAiB,GAErB1+rB,GAAanthB,EADAyrtC,EAAY,EAAIl1J,EAAW7/jC,IAAI,CAAC,SAAU,WAAY,WAAa6/jC,EAAW7/jC,IAAI,CAAC,SAAU,SAAU,WACvF,CAC3B6tpC,YAAaknE,IAEf50P,EAAQyf,YAAW,SAAUC,EAAalooB,GACxC,GAAIA,EAAMu92B,EAAkB,CAC1B,IAAIE,OAAc,EAEdlpO,EADarM,EAAY7/+B,IAAI,QACL,WAAa,cAEzCo1tC,EAAc9rtC,EADd8rtC,EAAcL,EAAY,EAAIl1J,EAAW7/jC,IAAI,CAAC,SAAU,WAAYks/B,IAAa2zE,EAAW7/jC,IAAI,CAAC,SAAU,SAAUks/B,IAClF,CACjCtyO,SAAUimO,EAAY9F,YACtBoe,WAAYtY,EAAY7/+B,IAAI,QAC5Bs50B,YAgEiBlw0B,EAhEay2+B,EAAYjc,QAiE3CzD,EAAQgqB,iBAAiBnq/B,IAAI,CAAC,SAAU,cAAcoJ,IAAS,UA/DhE,IAAIiD,EAAOwz+B,EAAYx+2B,UAEnBh1H,EAAK+5C,QAAU4uqC,EAGjBI,GAAe9rtC,EADIu2jC,EAAW7/jC,IAAI,CAAC,OAAQ,gBACN,CACnCq1tC,WAAYL,IAGdI,GAAev1J,EAAW7/jC,IAAI,CAAC,OAAQ,YAOzC,IAJA,IAAIs1tC,EAAoBz1J,EAAW7/jC,IAAI,CAAC,OAAQ,YAAa,WACzDu1tC,EAAiB11J,EAAW7/jC,IAAI,CAAC,OAAQ,YAAa,QACtDw1tC,EAAa,GAER/3tC,EAAI,EAAGA,EAAI4O,EAAK+5C,QAAS3oD,IAChC,GAAIA,EAAIu3tC,EAAY,CAClB,IAAI76d,EAAS9tvB,EAAKw4U,QAAQpnV,GACtBO,EAAQqO,EAAKktiB,UAAU97iB,GACvBg4tC,EAAY51J,EAAW7/jC,IAAI,CAAC,OAAQm6vB,EAAS,WAAa,gBAC9Dq7d,EAAW92tC,KAAK4K,EAAQmstC,EAAW,CACjClutC,KAAM4yvB,EACNn8vB,MAAOA,EAAM0L,KAAK4rtC,KAEtB,CAGFF,GAAeI,EAAW9rtC,KAAK4rtC,GAAqBC,EACpDJ,EAAez2tC,KAAK02tC,EACtB,CAgCN,IAA2BhstC,CA/BvB,IACA,IAAIsstC,EAAiB71J,EAAWpr4B,SAAS,CAAC,SAAU,WAAY,cAC5DkhiC,EAAkBD,EAAe11tC,IAAI,UACrC41tC,EAAeF,EAAe11tC,IAAI,OACtCy2hB,GAAa0+rB,EAAezrtC,KAAKistC,GAAmBC,EACpDztR,EAAI3u6B,aAAa,aAAci9f,EACjC,CA5EA,CAPA,CAoFF,CAjKAlzI,EANA,CAyKA,SAASj6Y,EAAQkqE,EAAKqipC,GACpB,IAAK,GAAgBripC,GACnB,OAAOA,EAGT,IAAInzD,EAASmzD,EAIb,OAHA,EAAYqipC,GAAW,SAAU73tC,EAAO0jB,GACtCrB,EAASA,EAAO/W,QAAQ,IAAIs7B,OAAO,UAAYljB,EAAM,UAAW,KAAM1jB,EACxE,IACOqiB,CACT,CAeF,CCnNe,SAASy1sC,GAAiBp7pC,GACvC,GAAKA,GAAWA,EAAOmx7B,KAAvB,CAIA,IAAIA,EAAOnx7B,EAAOmx7B,KAED,MAAbA,EAAK/rqB,OACP+rqB,EAAK748B,QAAU648B,EAAK/rqB,MAGtB+rqB,EAAK3t/B,MAAQ2t/B,EAAK3t/B,OAAS,CAAC,EAE5B,EAAY,CAAC,cAAe,UAAW,SAAU,SAAS,SAAUqJ,GAChD,MAAdsk/B,EAAKtk/B,KACPsk/B,EAAK3t/B,MAAMqJ,GAAQsk/B,EAAKtk/B,GAE5B,GAdA,CAeF,CCfA,IAAIwutC,GAAqC,CACvC/3tC,MAAO,KAEP,IAAK,KACL,KAAM,MACN,IAAK,KACL,KAAM,MACN,IAAK,KACL,KAAM,KACN,KAAM,MAYJg4tC,GAEJ,WACE,SAASA,EAAgBC,GAIN,OAFDp5tC,KAAKq5tC,SAAWr+pC,GAASo+pC,GAAQ,IAAIrxrC,OAAOqxrC,GAAQhvR,GAASgvR,GAAQA,EAAO,OAS1FjlN,GANa,GAQjB,CAOA,OALAglN,EAAgBz5tC,UAAU40gB,SAAW,SAAUgltB,GAC7C,IAAI/stC,SAAc+stC,EAClB,OAAOt+pC,GAASzuD,GAAQvM,KAAKq5tC,SAAShutC,KAAKiutC,KAAQh2qC,GAAS/2C,IAAQvM,KAAKq5tC,SAAShutC,KAAKiutC,EAAO,GAChG,EAEOH,CACT,CAtBA,GAwBII,GAEJ,WACE,SAASA,IAA0B,CAMnC,OAJAA,EAAuB75tC,UAAU40gB,SAAW,WAC1C,OAAOt0gB,KAAKmB,KACd,EAEOo4tC,CACT,CARA,GAUIC,GAEJ,WACE,SAASA,IAAwB,CAcjC,OAZAA,EAAqB95tC,UAAU40gB,SAAW,WAGxC,IAFA,IAAIt0e,EAAWhgC,KAAKggC,SAEXp/B,EAAI,EAAGA,EAAIo/B,EAAS3/B,OAAQO,IACnC,IAAKo/B,EAASp/B,GAAG0zgB,WACf,OAAO,EAIX,OAAO,CACT,EAEOkltB,CACT,CAhBA,GAkBIC,GAEJ,WACE,SAASA,IAAuB,CAchC,OAZAA,EAAoB/5tC,UAAU40gB,SAAW,WAGvC,IAFA,IAAIt0e,EAAWhgC,KAAKggC,SAEXp/B,EAAI,EAAGA,EAAIo/B,EAAS3/B,OAAQO,IACnC,GAAIo/B,EAASp/B,GAAG0zgB,WACd,OAAO,EAIX,OAAO,CACT,EAEOmltB,CACT,CAhBA,GAkBIC,GAEJ,WACE,SAASA,IAAwB,CAMjC,OAJAA,EAAqBh6tC,UAAU40gB,SAAW,WACxC,OAAQt0gB,KAAKkqF,MAAMoqb,UACrB,EAEOoltB,CACT,CARA,GAUIC,GAEJ,WACE,SAASA,IAA+B,CAkBxC,OAhBAA,EAA4Bj6tC,UAAU40gB,SAAW,WAO/C,IANA,IAAIsltB,IAAc55tC,KAAK+kf,YAGnB80uB,GAAY39lC,EADDl8H,KAAKk8H,UACKl8H,KAAK85tC,kBAC1BC,EAAeH,EAAY55tC,KAAK+kf,YAAY80uB,GAAa,KAEpDj5tC,EAAI,EAAGA,EAAIZ,KAAKg6tC,YAAY35tC,OAAQO,IAC3C,IAAKZ,KAAKg6tC,YAAYp5tC,GAAG0zgB,SAASsltB,EAAYG,EAAeF,GAC3D,OAAO,EAIX,OAAO,CACT,EAEOF,CACT,CApBA,GAsBA,SAASM,GAAYC,EAAYtud,GAC/B,IAAmB,IAAfsud,IAAsC,IAAfA,EAAsB,CAC/C,IAAI7hzB,EAAO,IAAIkhzB,GAEf,OADAlhzB,EAAKl3a,MAAQ+4tC,EACN7hzB,CACT,CAYA,OARK8hzB,GAAiBD,IAKpB/lN,GAPW,IAUT+lN,EAAWvngC,IACNyngC,GAAiB,MAAOF,EAAYtud,GAClCsud,EAAW/ktC,GACbiltC,GAAiB,KAAMF,EAAYtud,GACjCsud,EAAWppgC,IAmCxB,SAAwBopgC,EAAYtud,GAClC,IAAI+gP,EAAYutO,EAAWppgC,IAOtBqpgC,GAAiBxtO,IACpBwnB,GAPW,IAUb,IAAI97lB,EAAO,IAAIqhzB,GAOf,OANArhzB,EAAKnuV,MAAQ+voC,GAAYttO,EAAW/gP,GAE/BvzV,EAAKnuV,OACRiq7B,GAdW,IAiBN97lB,CACT,CAtDWgizB,CAAeH,EAAYtud,GAwDtC,SAA+Bsud,EAAYtud,GAQzC,IAPA,IACIkud,EAAmBlud,EAAQ0ud,gBAAgBJ,GAC3CF,EAAc,GACdO,EAAWjntC,GAAK4mtC,GAChBM,EAAaN,EAAW9tjC,OACxB24U,EAAcy1uB,EAAalmN,GAAkBkmN,GAAc,KAEtD55tC,EAAI,EAAGA,EAAI25tC,EAASl6tC,OAAQO,IAAK,CACxC,IAAI65tC,EAASF,EAAS35tC,GAEtB,GAAe,WAAX65tC,IAAuB7ud,EAAQ8ud,mBAAmBv3tC,IAAIs3tC,GAA1D,CAIA,IAAIpnzB,EAAKnra,GAAOgxtC,GAAoCuB,GAAUvB,GAAmCuB,GAAUA,EACvGE,EAAeT,EAAWO,GAC1BG,EAAkB71uB,EAAcA,EAAY41uB,GAAgBA,EAC5DE,EAAY9kN,GAAuB1imB,EAAIunzB,IAA2B,QAAPvnzB,GAAgB,IAAI8lzB,GAAgByB,GAE9FC,GAKH1mN,GAxBS,IA2BX6lN,EAAYn4tC,KAAKg5tC,EAfjB,CAgBF,CAEKb,EAAY35tC,QAMf8zgC,GApCW,IAuCb,IAAI97lB,EAAO,IAAIshzB,GAKf,OAJAthzB,EAAKyhzB,iBAAmBA,EACxBzhzB,EAAK0sE,YAAcA,EACnB1sE,EAAKn8S,SAAW0voB,EAAQ1voB,SACxBm8S,EAAK2hzB,YAAcA,EACZ3hzB,CACT,CAnGSyizB,CAAsBZ,EAAYtud,EAC3C,CAEA,SAASwud,GAAiB/mzB,EAAI6mzB,EAAYtud,GACxC,IAAImvd,EAAeb,EAAW7mzB,GAOzB1ha,GAAQoptC,IACX5mN,GAPW,IAUR4mN,EAAa16tC,QAChB8zgC,GAXW,IAcb,IAAI97lB,EAAc,QAAPhF,EAAe,IAAImmzB,GAAyB,IAAIC,GAS3D,OARAphzB,EAAKr4Y,SAAW3Q,EAAI0rsC,GAAc,SAAUpuO,GAC1C,OAAOstO,GAAYttO,EAAW/gP,EAChC,IAEKvzV,EAAKr4Y,SAAS3/B,QACjB8zgC,GApBW,IAuBN97lB,CACT,CAwEA,SAAS8hzB,GAAiBz8iC,GACxB,OAAO,GAASA,KAASqsxB,EAAYrsxB,EACvC,CAEA,IAAIs9iC,GAEJ,WACE,SAASA,EAA4Bd,EAAYtud,GAC/C5rwB,KAAKi7tC,MAAQhB,GAAYC,EAAYtud,EACvC,CAMA,OAJAovd,EAA4Bt7tC,UAAU40gB,SAAW,WAC/C,OAAOt0gB,KAAKi7tC,MAAM3mtB,UACpB,EAEO0mtB,CACT,CAVA,GC5QWE,GAAkB,CAC3B3utC,KAAM,iBAENq2H,UAAW,SAAUv6F,GA2CnB,IAtCA,IACIyl+B,EDgRmCosN,EAAYtud,ECjR/C6qQ,EAAWpu+B,EAAOou+B,SAElB902B,GD+QmCu4jC,EC/QI7xrC,EAAOyzR,OD+QC8vc,EC/QO,CACxD8ud,mBAAoBxvR,GAAc,CAChC53xB,WAAW,IAEbgnjC,gBAAiB,SAAUJ,GACzB,IACIlpN,EAAWkpN,EAAW5mjC,UAErBprK,GAAOgytC,EAAY,cAKtB/lN,GARW,IAWb,IAAIqC,EAAUC,EAASnxC,iBAAiB0rC,GAUxC,OARKwF,GAKHrC,GAlBW,IAqBN,CACLyE,OAAQpC,EAAQx5/B,MAEpB,EACAk/G,SAAU,SAAU1sD,GAClB,OAAOin8B,EAASJ,sBAAsBvI,EAASt+7B,EAAMop8B,OACvD,GDgPG,IAAIoiN,GAA4Bd,EAAYtud,IC9O7CqrD,EAAa,GAERr2zB,EAAI,EAAGi+H,EAAM434B,EAASlt9B,QAAS3oD,EAAIi+H,EAAKj+H,IAC/CktgC,EAAU2I,EAAS5G,eAAejvgC,GAE9B+gK,EAAU2yW,YACZ2iT,EAAWp1zB,KAAKisgC,GAIpB,MAAO,CACLt+/B,KAAMynzB,EAEV,GCjDSkka,GAAgB,CACzB5utC,KAAM,eACNq2H,UAAW,SAAUv6F,GACnB,IAAIou+B,EAAWpu+B,EAAOou+B,SAClB36sB,EAASzzR,EAAOyzR,OAChBqmtB,EAAS,GAKTi5M,EAAgB36P,GAAiB3kqB,GAEhCs/5B,EAAc/6tC,QAKjB8zgC,GAAWgO,GAGb,IAAIk5M,EAAe,GACnB,EAAKD,GAAe,SAAUE,GAC5B,IAAItqN,EAAWsqN,EAAUhojC,UACrBrgC,EAAQqolC,EAAUrolC,MAClBunlC,EAAac,EAAUlvjC,OACvB0o2B,EAAewmN,EAAUxmN,aAEb,MAAZ9D,GAKFmD,GAAWgO,GAGC,QAAVlv4B,GAA6B,SAAVA,GAKrBkh4B,GAAWgO,GAGTrN,GAAiC,QAAjBA,GAA2C,QAAjBA,GAO5CX,GANe,IASH,QAAVlh4B,GAA6B,SAAVA,GAOrBkh4B,GANe,IASjB,IAAIqC,EAAUC,EAASnxC,iBAAiB0rC,GAEnCwF,GAKHrC,GAAWgO,GAGb,IAAI/12B,EAASoujC,EAAalmN,GAAkBkmN,GAAc,KAEtDA,IAAepujC,GAKjB+n2B,GAAWgO,GAGbk5M,EAAax5tC,KAAK,CAChB+2gC,OAAQpC,EAAQx5/B,MAChBovJ,OAAQA,EACR2sU,WAAY,IAAI87hB,GAAoB5h4B,EAAO6h4B,IAE/C,IAEA,IAAIj1rB,EAAe42rB,EAAS52rB,aAExBA,IAAiBs5qB,IAA4Bt5qB,IAAiB,IAKhEs0rB,GAAWgO,GAMb,IAFA,IAAIlrN,EAAa,GAERr2zB,EAAI,EAAGi+H,EAAM434B,EAASlt9B,QAAS3oD,EAAIi+H,EAAKj+H,IAC/Cq2zB,EAAWp1zB,KAAK40gC,EAAS5G,eAAejvgC,IAuB1C,OApBAq2zB,EAAW1qxB,MAAK,SAAU++gC,EAAOC,GAC/B,IAAK,IAAI3qjC,EAAI,EAAGA,EAAIy6tC,EAAah7tC,OAAQO,IAAK,CAC5C,IAAI26tC,EAAWF,EAAaz6tC,GACxB6k9B,EAAOgxD,EAASJ,sBAAsBi1C,EAAOiwK,EAAS3iN,QACtDt6iB,EAAOm4iB,EAASJ,sBAAsBk1C,EAAOgwK,EAAS3iN,QAEtD2iN,EAASnvjC,SACXq5yB,EAAO81Q,EAASnvjC,OAAOq5yB,GACvBnnf,EAAOi9vB,EAASnvjC,OAAOkyT,IAGzB,IAAI96c,EAAS+3sC,EAASxivB,WAAWu7B,SAASmxc,EAAMnnf,GAEhD,GAAe,IAAX96c,EACF,OAAOA,CAEX,CAEA,OAAO,CACT,IACO,CACLhU,KAAMynzB,EAEV,GC9HEuka,GAEJ,SAAU9y2B,GAGR,SAAS8y2B,IACP,IAAI9uqC,EAAmB,OAAXg8T,GAAmBA,EAAOnoX,MAAMP,KAAMI,YAAcJ,KAGhE,OADA0sD,EAAMngD,KAAO,UACNmgD,CACT,CA2BA,OAlCAkgX,EAAU4uzB,EAAc9y2B,GASxB8y2B,EAAa97tC,UAAUgxD,KAAO,SAAUmN,EAAQghe,EAAaykc,GAC3D56mB,EAAOhpX,UAAUgxD,KAAK9wD,KAAKI,KAAM69D,EAAQghe,EAAaykc,GAEtDtj+B,KAAKy7tC,eAAiB,IAAIp8M,GAAcr/gC,MACxCkihC,GAA4BlihC,KAC9B,EAEAw7tC,EAAa97tC,UAAUus/B,YAAc,SAAUrqB,EAAW0B,GACxD56mB,EAAOhpX,UAAUus/B,YAAYrs/B,KAAKI,KAAM4h+B,EAAW0B,GAEnD4+C,GAA4BlihC,KAC9B,EAEAw7tC,EAAa97tC,UAAU61/B,cAAgB,WACrCv1/B,KAAKy7tC,eAAe31d,OACtB,EAEA01d,EAAa97tC,UAAUsihC,iBAAmB,WACxC,OAAOhihC,KAAKy7tC,cACd,EAEAD,EAAajvtC,KAAO,UACpBivtC,EAAa56rB,cAAgB,CAC3B25d,eAAgBhB,IAEXiiO,CACT,CApCA,CAoCE9ukC,IAIEgvkC,GAEJ,SAAUhz2B,GAGR,SAASgz2B,IACP,IAAIhvqC,EAAmB,OAAXg8T,GAAmBA,EAAOnoX,MAAMP,KAAMI,YAAcJ,KAGhE,OADA0sD,EAAMngD,KAAO,UACNmgD,CACT,CAGA,OAVAkgX,EAAU8uzB,EAAahz2B,GASvBgz2B,EAAYnvtC,KAAO,UACZmvtC,CACT,CAZA,CAYE,IChHE,GAAM,GAAU9sP,IACpB,SAAS+sP,GAAY36tC,EAAGsC,GACpB,OAAOT,KAAKmjH,IAAIhlH,EAAIsC,GAAK,IAC7B,CACO,SAASs4tC,GAAmBvlsC,GAC/B,IAGIwlsC,EAgCAj06B,EACAl2H,EACAoL,EACArlE,EAtCAjoH,EAAO6mB,EAAK7mB,KACZqvH,EAAMxoG,EAAKwoG,MACXi9lC,EAAoB,GAEpBj9sC,EAAK,EACLf,EAAK,EACLsoO,EAAK,EACL30D,EAAK,EACT,SAASsqiC,EAAiB93tC,EAAGjB,GACrB64tC,GAAkBA,EAAex7tC,OAAS,GAC1Cy7tC,EAAkBj6tC,KAAKg6tC,GAE3BA,EAAiB,CAAC53tC,EAAGjB,EACzB,CACA,SAASg5tC,EAAQ51+B,EAAI30D,EAAIm2H,EAAIl2H,GACnBiqiC,GAAYv1+B,EAAIwhE,IAAO+z6B,GAAYlqiC,EAAIC,IACzCmqiC,EAAeh6tC,KAAKukP,EAAI30D,EAAIm2H,EAAIl2H,EAAIk2H,EAAIl2H,EAEhD,CACA,SAASuqiC,EAAOpzc,EAAYC,EAAUpohB,EAAIumG,EAAI/pL,EAAIC,GAC9C,IAAIp3D,EAAQljH,KAAKmjH,IAAI8iqB,EAAWD,GAC5BhqpB,EAA4B,EAAtBh8H,KAAKinC,IAAIi8E,EAAQ,GAAS,EAChCyT,EAAMsvpB,EAAWD,GAAc,EAAI,EACnCruT,EAAK33d,KAAKuxH,IAAIy0pB,GACdqzc,EAAKr5tC,KAAK4wH,IAAIo1pB,GACdpuT,EAAK53d,KAAKuxH,IAAI00pB,GACdqzc,EAAKt5tC,KAAK4wH,IAAIq1pB,GACdlhe,EAAK4yK,EAAKt9S,EAAKwjF,EACfhvE,EAAKwqiC,EAAK/+iC,EAAK8pL,EACfgyH,EAAKwB,EAAKv9S,EAAKwjF,EACfw4N,EAAKijwB,EAAKh/iC,EAAK8pL,EACfT,EAAKtpL,EAAKr+C,EAAMrF,EAChBitO,EAAKtpL,EAAKt+C,EAAMrF,EACpBqimC,EAAeh6tC,KAAK+lT,EAAK4+C,EAAK013B,EAAIxqiC,EAAK+0K,EAAK+zH,EAAIvB,EAAKzyH,EAAK213B,EAAIjjwB,EAAKzyH,EAAKg0H,EAAIxB,EAAIC,EACpF,CAKA,IAAK,IAAIt4d,EAAI,EAAGA,EAAIi+H,GAAM,CACtB,IAAIqy2B,EAAM1h+B,EAAK5O,KACXww+B,EAAgB,IAANxw+B,EAUd,OATIww+B,IAGAhrvB,EAFAvnO,EAAKrP,EAAK5O,GAGV6wL,EAFA3zK,EAAKtO,EAAK5O,EAAI,GAGVsw+B,IAAQ,GAAI7s+B,GAAK6s+B,IAAQ,GAAI/s+B,GAAK+s+B,IAAQ,GAAIlr+B,IAC9C61tC,EAAiB,CAACz1+B,EAAI30D,KAGtBy/yB,GACJ,KAAK,GAAIrr+B,EACLgZ,EAAKunO,EAAK52O,EAAK5O,KACfkd,EAAK2zK,EAAKjiL,EAAK5O,KACfm7tC,EAAiB31+B,EAAI30D,GACrB,MACJ,KAAK,GAAIptL,EAGL23tC,EAAQn9sC,EAAIf,EAFZ8pS,EAAKp4S,EAAK5O,KACV8wL,EAAKliL,EAAK5O,MAEVie,EAAK+oS,EACL9pS,EAAK4zK,EACL,MACJ,KAAK,GAAIvtL,EACL03tC,EAAeh6tC,KAAK2N,EAAK5O,KAAM4O,EAAK5O,KAAM4O,EAAK5O,KAAM4O,EAAK5O,KAAMie,EAAKrP,EAAK5O,KAAMkd,EAAKtO,EAAK5O,MAC1F,MACJ,KAAK,GAAIoF,EACL4hT,EAAKp4S,EAAK5O,KACV8wL,EAAKliL,EAAK5O,KACVk8L,EAAKttL,EAAK5O,KACV62H,EAAKjoH,EAAK5O,KACVi7tC,EAAeh6tC,KAAKgd,EAAK,EAAI,GAAK+oS,EAAK/oS,GAAKf,EAAK,EAAI,GAAK4zK,EAAK5zK,GAAKg/K,EAAK,EAAI,GAAK8qH,EAAK9qH,GAAKrlE,EAAK,EAAI,GAAKi6D,EAAKj6D,GAAKqlE,EAAIrlE,GACxH54G,EAAKi+K,EACLh/K,EAAK25G,EACL,MACJ,KAAK,GAAI5yH,EACL,IAAI67P,EAAKlxP,EAAK5O,KACVqmW,EAAKz3V,EAAK5O,KACVs8K,EAAK1tK,EAAK5O,KACVu8K,EAAK3tK,EAAK5O,KACVioxB,EAAar5wB,EAAK5O,KAClBkoxB,EAAWt5wB,EAAK5O,KAAOioxB,EAC3BjoxB,GAAK,EACL,IAAI6t+B,GAAiBj/9B,EAAK5O,KAC1BgnT,EAAK/kT,KAAKuxH,IAAIy0pB,GAAc3rmB,EAAKwjF,EACjChvE,EAAK7uL,KAAK4wH,IAAIo1pB,GAAc1rmB,EAAK8pL,EAC7BmqoB,EAGA2qP,EAFA31+B,EAAKwhE,EACLn2H,EAAKC,GAILsqiC,EAAQn9sC,EAAIf,EAAI8pS,EAAIl2H,GAExB7yK,EAAKhc,KAAKuxH,IAAI00pB,GAAY5rmB,EAAKwjF,EAC/B5iP,EAAKjb,KAAK4wH,IAAIq1pB,GAAY3rmB,EAAK8pL,EAE/B,IADA,IAAIyH,GAAQ+/nB,GAAiB,EAAI,GAAK5r+B,KAAKsmC,GAAK,EACvCwlM,EAAQk6iB,EAAY4lN,EAAgB9/vB,EAAQm6iB,EAAWn6iB,EAAQm6iB,EAAUn6iB,GAAS+/H,EAGvFut3B,EAAOtt/B,EAFS8/vB,EAAgB5r+B,KAAK8K,IAAIghO,EAAQ+/H,EAAMo6a,GACjDjmxB,KAAKgL,IAAI8gO,EAAQ+/H,EAAMo6a,GACJpohB,EAAIumG,EAAI/pL,EAAIC,GAEzC,MACJ,KAAK,GAAI74K,EACL8hP,EAAKvnO,EAAKrP,EAAK5O,KACf6wL,EAAK3zK,EAAKtO,EAAK5O,KACfgnT,EAAKxhE,EAAK52O,EAAK5O,KACf8wL,EAAKD,EAAKjiL,EAAK5O,KACfm7tC,EAAiBn06B,EAAIn2H,GACrBuqiC,EAAQp06B,EAAIn2H,EAAIm2H,EAAIl2H,GACpBsqiC,EAAQp06B,EAAIl2H,EAAI00D,EAAI10D,GACpBsqiC,EAAQ51+B,EAAI10D,EAAI00D,EAAI30D,GACpBuqiC,EAAQ51+B,EAAI30D,EAAIm2H,EAAIn2H,GACpB,MACJ,KAAK,GAAIhtL,EACLo3tC,GAAkBG,EAAQn9sC,EAAIf,EAAIsoO,EAAI30D,GACtC5yK,EAAKunO,EACLtoO,EAAK2zK,EAGjB,CAIA,OAHIoqiC,GAAkBA,EAAex7tC,OAAS,GAC1Cy7tC,EAAkBj6tC,KAAKg6tC,GAEpBC,CACX,CACA,SAASM,GAAeh2+B,EAAI30D,EAAIm2H,EAAIl2H,EAAIoL,EAAIrlE,EAAIgxL,EAAIC,EAAIxoL,EAAKp+B,GACzD,GAAI65nC,GAAYv1+B,EAAIwhE,IAAO+z6B,GAAYlqiC,EAAIC,IAAOiqiC,GAAY7+hC,EAAI2rH,IAAOkz6B,GAAYlkmC,EAAIixL,GACrFxoL,EAAIr+H,KAAK4mT,EAAIC,OADjB,CAIA,IAAI2z6B,EAAiB,EAAIv6nC,EACrBw6nC,EAAqBD,EAAiBA,EACtC7nlC,EAAKi0K,EAAKriE,EACV/xG,EAAKq0K,EAAKj3H,EACV9uL,EAAIE,KAAK4yF,KAAK++C,EAAKA,EAAKH,EAAKA,GACjCG,GAAM7xI,EACN0xI,GAAM1xI,EACN,IAAI0shC,EAAMznuB,EAAKxhE,EACXkpyB,EAAM591B,EAAKD,EACXy8vB,EAAMpxvB,EAAK2rH,EACXn0K,EAAM7c,EAAKixL,EACX6z6B,EAAYltM,EAAMA,EAAMC,EAAMA,EAC9BktM,EAAYtuS,EAAMA,EAAM55yB,EAAMA,EAClC,GAAIiolC,EAAYD,GAAsBE,EAAYF,EAC9Cp8lC,EAAIr+H,KAAK4mT,EAAIC,OADjB,CAIA,IAAI+z6B,EAAWjolC,EAAK664B,EAAMh74B,EAAKi74B,EAC3BotM,GAAYlolC,EAAK05yB,EAAM75yB,EAAKC,EAGhC,GAFYiolC,EAAYE,EAAWA,EAEvBH,GAAsBG,GAAY,GADlCD,EAAYE,EAAWA,EAEpBJ,GAAsBI,GAAY,EAC7Cx8lC,EAAIr+H,KAAK4mT,EAAIC,OAFjB,CAKA,IAAIi06B,EAAU,GACVC,EAAU,GACdn+Q,GAAer4tB,EAAIwhE,EAAI9qH,EAAI2rH,EAAI,GAAKk06B,GACpCl+Q,GAAehtxB,EAAIC,EAAIj6D,EAAIixL,EAAI,GAAKk06B,GACpCR,GAAeO,EAAQ,GAAIC,EAAQ,GAAID,EAAQ,GAAIC,EAAQ,GAAID,EAAQ,GAAIC,EAAQ,GAAID,EAAQ,GAAIC,EAAQ,GAAI18lC,EAAKp+B,GACpHs6nC,GAAeO,EAAQ,GAAIC,EAAQ,GAAID,EAAQ,GAAIC,EAAQ,GAAID,EAAQ,GAAIC,EAAQ,GAAID,EAAQ,GAAIC,EAAQ,GAAI18lC,EAAKp+B,EANpH,CATA,CAjBA,CAiCJ,CClKA,SAAS+6nC,GAAiBzuN,EAAS0uN,EAAQvzqC,GACvC,IAAIk+L,EAAU2mxB,EAAQ0uN,GAClBC,EAAa3uN,EAAQ,EAAI0uN,GACzB7/hC,EAAQp6L,KAAKmjH,IAAIyhI,EAAUs1+B,GAC3Bh5sB,EAAWlhhB,KAAKuK,KAAKvK,KAAK4yF,KAAKwnG,EAAQ1zI,IACvCm4M,EAAc7+P,KAAKyK,MAAMi8C,EAAQw6d,GACjB,IAAhBriR,IACAA,EAAc,EACdqiR,EAAWx6d,GAGf,IADA,IAAIqijC,EAAQ,GACHhrmC,EAAI,EAAGA,EAAImjhB,EAAUnjhB,IAC1BgrmC,EAAM/pmC,KAAK6/P,GAEf,IACIsq0B,EAAWzihC,EADIw6d,EAAWriR,EAE9B,GAAIsq0B,EAAW,EACX,IAASprkC,EAAI,EAAGA,EAAIorkC,EAAUprkC,IAC1BgrmC,EAAMhrmC,EAAImjhB,IAAa,EAG/B,OAAO6nlB,CACX,CACA,SAASoxH,GAAa9gI,EAAa3yiC,EAAO0zqC,GAWtC,IAVA,IAAI3u3B,EAAK4tvB,EAAY5tvB,GACjBvuW,EAAIm8lC,EAAYn8lC,EAChB8oxB,EAAaqzU,EAAYrzU,WACzBC,EAAWozU,EAAYpzU,SACvBn6iB,EAAQ9rO,KAAKmjH,IAAI8iqB,EAAWD,GAC5Bq0c,EAASvu/B,EAAQ5uO,EACjBuj9B,EAASvj9B,EAAIuuW,EACb6u3B,EAAaD,EAASr6tC,KAAKmjH,IAAIs91B,GAC/BsoJ,EAAQixH,GAAiB,CAACK,EAAQ55Q,GAAS65Q,EAAa,EAAI,EAAG5zqC,GAC/Dk+L,GAAW01+B,EAAaxu/B,EAAQ20uB,GAAUsoJ,EAAMvrmC,OAC3C2iI,EAAM,EAAGA,EAAM4o+B,EAAMvrmC,OAAQ2iI,IAElC,IADA,IAAI+5lC,GAAcI,EAAa75Q,EAAS30uB,GAASi93B,EAAM5o+B,GAC9CljF,EAAS,EAAGA,EAAS8rjC,EAAM5o+B,GAAMljF,IAAU,CAChD,IAAIs9qC,EAAW,CAAC,EACZD,GACAC,EAASv0c,WAAaA,EAAaphiB,EAAUzkH,EAC7Co6lC,EAASt0c,SAAWD,EAAaphiB,GAAWzkH,EAAM,GAClDo6lC,EAAS9u3B,GAAKA,EAAKyu3B,EAAaj9qC,EAChCs9qC,EAASr9tC,EAAIuuW,EAAKyu3B,GAAcj9qC,EAAS,KAGzCs9qC,EAASv0c,WAAaA,EAAak0c,EAAaj9qC,EAChDs9qC,EAASt0c,SAAWD,EAAak0c,GAAcj9qC,EAAS,GACxDs9qC,EAAS9u3B,GAAKA,EAAK7mH,EAAUzkH,EAC7Bo6lC,EAASr9tC,EAAIuuW,EAAK7mH,GAAWzkH,EAAM,IAEvCo6lC,EAASx43B,UAAYs3vB,EAAYt3vB,UACjCw43B,EAAS189B,GAAKw71B,EAAYx71B,GAC1B089B,EAASn23B,GAAKi1vB,EAAYj1vB,GAC1Bg23B,EAAUp7tC,KAAKu7tC,EACnB,CAER,CAyBA,SAAS,GAAex16B,EAAIl2H,EAAIoL,EAAIrlE,GAChC,OAAOmwL,EAAKnwL,EAAKqlE,EAAKpL,CAC1B,CACA,SAAS,GAAkB4l2B,EAAKC,EAAKC,EAAKC,EAAKE,EAAKC,EAAKC,EAAKC,GAC1D,IAAInxrB,EAAK6wrB,EAAMF,EACX1wrB,EAAK6wrB,EAAMF,EACX9lG,EAAKomG,EAAMF,EACXI,EAAKD,EAAMF,EACXI,EAAiB,GAAevmG,EAAIsmG,EAAIpxrB,EAAIC,GAChD,GAAI/jW,KAAKmjH,IAAIgy6B,GAAkB,KAC3B,OAAO,KAEX,IAEIl1hC,EAAI,GAFIw0hC,EAAMK,EACNJ,EAAMK,EACmBnmG,EAAIsmG,GAAMC,EAC/C,OAAIl1hC,EAAI,GAAKA,EAAI,EACN,KAEJ,IAAI,GAAMA,EAAI6jW,EAAK2wrB,EAAKx0hC,EAAI8jW,EAAK2wrB,EAC5C,CACA,SAAS8lM,GAAalxtC,EAAImxtC,EAAOC,GAC7B,IAAI/jmC,EAAM,IAAI,GACd,GAAMtkG,IAAIskG,EAAK+jmC,EAAOD,GACtB9jmC,EAAIlqH,YACJ,IAAI+4jC,EAAO,IAAI,GAGf,OAFA,GAAMnziC,IAAImziC,EAAMl8jC,EAAImxtC,GACVj1J,EAAK7l5B,IAAIhpD,EAEvB,CACA,SAASgkmC,GAAUzswB,EAAM5kd,GACrB,IAAIwY,EAAOosc,EAAKA,EAAK1wd,OAAS,GAC1BskB,GAAQA,EAAK,KAAOxY,EAAG,IAAMwY,EAAK,KAAOxY,EAAG,IAGhD4kd,EAAKlvd,KAAKsK,EACd,CAiDA,SAASsxtC,GAAoBC,GACzB,IAAIpyrC,EAASoyrC,EAAapyrC,OACtBz9B,EAAM,GACNF,EAAM,GACVmg+B,GAAWxi8B,EAAQz9B,EAAKF,GACxB,IAAIoohC,EAAe,IAAI,GAAalohC,EAAI,GAAIA,EAAI,GAAIF,EAAI,GAAKE,EAAI,GAAIF,EAAI,GAAKE,EAAI,IAC9EkxB,EAAQg3/B,EAAah3/B,MACrBC,EAAS+2/B,EAAa/2/B,OACtB/6B,EAAI8xhC,EAAa9xhC,EACjBjB,EAAI+yhC,EAAa/yhC,EACjBklkC,EAAM,IAAI,GACVC,EAAM,IAAI,GAWd,OAVIppiC,EAAQC,GACRkpiC,EAAIjkkC,EAAIkkkC,EAAIlkkC,EAAIA,EAAI86B,EAAQ,EAC5BmpiC,EAAIllkC,EAAIA,EACRmlkC,EAAInlkC,EAAIA,EAAIg8B,IAGZkpiC,EAAIllkC,EAAImlkC,EAAInlkC,EAAIA,EAAIg8B,EAAS,EAC7BkpiC,EAAIjkkC,EAAIA,EACRkkkC,EAAIlkkC,EAAIA,EAAI86B,GApEpB,SAA4BuM,EAAQgyrC,EAAOC,GAGvC,IAFA,IAAI1+lC,EAAMvzF,EAAOjrC,OACb02V,EAAgB,GACXn2V,EAAI,EAAGA,EAAIi+H,EAAKj+H,IAAK,CAC1B,IAAIi3H,EAAKvsF,EAAO1qC,GACZy/O,EAAK/0M,GAAQ1qC,EAAI,GAAKi+H,GACtB8+lC,EAAiB,GAAkB9lmC,EAAG,GAAIA,EAAG,GAAIwoH,EAAG,GAAIA,EAAG,GAAIi9+B,EAAMr5tC,EAAGq5tC,EAAMt6tC,EAAGu6tC,EAAMt5tC,EAAGs5tC,EAAMv6tC,GAChG26tC,GACA5m4B,EAAcl1V,KAAK,CACf+7tC,OAAQP,GAAaM,EAAgBL,EAAOC,GAC5CpxtC,GAAIwxtC,EACJ7i3B,IAAKl6W,GAGjB,CACA,GAAIm2V,EAAc12V,OAAS,EACvB,MAAO,CAAC,CAAEirC,OAAQA,GAAU,CAAEA,OAAQA,IAE1CyrT,EAAcxqT,MAAK,SAAUvrC,EAAGsC,GAC5B,OAAOtC,EAAE48tC,OAASt6tC,EAAEs6tC,MACxB,IACA,IAAIC,EAAW9m4B,EAAc,GACzB+m4B,EAAW/m4B,EAAcA,EAAc12V,OAAS,GACpD,GAAIy9tC,EAAShj3B,IAAM+i3B,EAAS/i3B,IAAK,CAC7B,IAAIlX,EAAMi63B,EACVA,EAAWC,EACXA,EAAWl63B,CACf,CACA,IAAIm63B,EAAc,CAACF,EAAS1xtC,GAAGlI,EAAG45tC,EAAS1xtC,GAAGnJ,GAC1Cg7tC,EAAc,CAACF,EAAS3xtC,GAAGlI,EAAG65tC,EAAS3xtC,GAAGnJ,GAC1Ci7tC,EAAW,CAACF,GACZG,EAAW,CAACF,GAChB,IAASp9tC,EAAIi9tC,EAAS/i3B,IAAM,EAAGl6W,GAAKk9tC,EAAShj3B,IAAKl6W,IAC9C48tC,GAAUS,EAAU3yrC,EAAO1qC,GAAGmB,SAIlC,IAFAy7tC,GAAUS,EAAUD,GACpBR,GAAUS,EAAUF,GACXn9tC,EAAIk9tC,EAAShj3B,IAAM,EAAGl6W,GAAKi9tC,EAAS/i3B,IAAMj8O,EAAKj+H,IACpD48tC,GAAUU,EAAU5yrC,EAAO1qC,EAAIi+H,GAAK98H,SAIxC,OAFAy7tC,GAAUU,EAAUH,GACpBP,GAAUU,EAAUF,GACb,CAAC,CACA1yrC,OAAQ2yrC,GACT,CACC3yrC,OAAQ4yrC,GAEpB,CAuBWC,CAAmB7yrC,EAAQ48hC,EAAKC,EAC3C,CACA,SAASi2J,GAAsB7t3B,EAASjuI,EAAO/4K,EAAO22E,GAClD,GAAc,IAAV32E,EACA22E,EAAIr+H,KAAKygO,OAER,CACD,IAAIgD,EAAMziO,KAAKyK,MAAMi8C,EAAQ,GACzBr0B,EAAMq7U,EAAQjuI,GAClB87/B,GAAsB7t3B,EAASr7U,EAAI,GAAIowM,EAAKplG,GAC5Ck+lC,GAAsB7t3B,EAASr7U,EAAI,GAAIq0B,EAAQ+7K,EAAKplG,EACxD,CACA,OAAOA,CACX,CAQA,SAASm+lC,GAAcx2tC,EAAQiI,GAC3BA,EAAOw0Z,SAASz8Z,EAAOwM,OACvBvE,EAAOnK,EAAIkC,EAAOlC,EAClBmK,EAAOitL,GAAKl1L,EAAOk1L,GACnBjtL,EAAO2p8B,OAAS5x8B,EAAO4x8B,MAC3B,CCtNA,SAAS6kR,GAAaC,EAAUC,GAC5B,IAAI74Q,EAAO44Q,EAASl+tC,OAChBkl9B,EAAOi5Q,EAASn+tC,OACpB,GAAIsl9B,IAASJ,EACT,MAAO,CAACg5Q,EAAUC,GAWtB,IATA,IAAI7B,EAAU,GACVC,EAAU,GACV6B,EAAc94Q,EAAOJ,EAAOg5Q,EAAWC,EACvC34Q,EAAahj9B,KAAKgL,IAAI838B,EAAMJ,GAC5Bh9a,EAAO1liB,KAAKmjH,IAAIu/1B,EAAOI,GAAQ,EAC/B+4Q,GAAsB74Q,EAAa,GAAK,EACxC84Q,EAAuB97tC,KAAKuK,KAAKm7hB,EAAOm2rB,GAAsB,EAC9DE,EAAa,CAACH,EAAY,GAAIA,EAAY,IAC1CzyJ,EAAWzjiB,EACN3niB,EAAI,EAAGA,EAAIil9B,GAAa,CAC7B,IAAIz/tB,EAAKq4+B,EAAY79tC,EAAI,GACrB6wL,EAAKgtiC,EAAY79tC,EAAI,GACrBgnT,EAAK626B,EAAY79tC,KACjB8wL,EAAK+siC,EAAY79tC,KACjBk8L,EAAK2hiC,EAAY79tC,KACjB62H,EAAKgnmC,EAAY79tC,KACjB6nT,EAAKg26B,EAAY79tC,KACjB8nT,EAAK+16B,EAAY79tC,KACrB,GAAIorkC,GAAY,EACZ4yJ,EAAW/8tC,KAAK+lT,EAAIl2H,EAAIoL,EAAIrlE,EAAIgxL,EAAIC,OADxC,CAKA,IADA,IAAIm26B,EAAoBh8tC,KAAKgL,IAAIm+jC,EAAU2yJ,EAAuB,GAAK,EAC9Dj7tC,EAAI,EAAGA,GAAKm7tC,EAAmBn7tC,IAAK,CACzC,IAAIZ,EAAIY,EAAIm7tC,EACZpgR,GAAer4tB,EAAIwhE,EAAI9qH,EAAI2rH,EAAI3lT,EAAG65tC,GAClCl+Q,GAAehtxB,EAAIC,EAAIj6D,EAAIixL,EAAI5lT,EAAG85tC,GAClCx2+B,EAAKu2+B,EAAQ,GACblriC,EAAKmriC,EAAQ,GACbgC,EAAW/8tC,KAAK86tC,EAAQ,GAAIC,EAAQ,GAAID,EAAQ,GAAIC,EAAQ,GAAIx2+B,EAAI30D,GACpEm2H,EAAK+06B,EAAQ,GACbjriC,EAAKkriC,EAAQ,GACb9/hC,EAAK6/hC,EAAQ,GACbllmC,EAAKmlmC,EAAQ,EACjB,CACA5wJ,GAAY6yJ,EAAoB,CAdhC,CAeJ,CACA,OAAOJ,IAAgBF,EAAW,CAACK,EAAYJ,GAAY,CAACD,EAAUK,EAC1E,CACA,SAASE,GAAcC,EAAoBC,GAKvC,IAJA,IAAIngmC,EAAMkgmC,EAAmB1+tC,OACzBwy2B,EAAQksX,EAAmBlgmC,EAAM,GACjCogmC,EAAQF,EAAmBlgmC,EAAM,GACjC+/lC,EAAa,GACRh+tC,EAAI,EAAGA,EAAIo+tC,EAAa3+tC,QAC7Bu+tC,EAAWh+tC,KAAOiy2B,EAClB+rX,EAAWh+tC,KAAOq+tC,EAEtB,OAAOL,CACX,CA8BO,SAAS,GAAS1krC,GAKrB,IAJA,IAAIwq5B,EAAa,EACbhksB,EAAK,EACLumG,EAAK,EACLpoO,EAAM3kF,EAAM75C,OACPO,EAAI,EAAGwD,EAAIy6H,EAAM,EAAGj+H,EAAIi+H,EAAKz6H,EAAIxD,EAAGA,GAAK,EAAG,CACjD,IAAIwlP,EAAKlsM,EAAM91C,GACXqtL,EAAKv3I,EAAM91C,EAAI,GACfwjT,EAAK1tQ,EAAMt5C,GACX8wL,EAAKx3I,EAAMt5C,EAAI,GACfI,EAAIolP,EAAK10D,EAAKk2H,EAAKn2H,EACvBizwB,GAAc1j8B,EACd0/P,IAAOta,EAAKwhE,GAAM5mT,EAClBimW,IAAOx1K,EAAKC,GAAM1wL,CACtB,CACA,OAAmB,IAAf0j8B,EACO,CAACxq5B,EAAM,IAAM,EAAGA,EAAM,IAAM,GAEhC,CAACwmN,EAAKgksB,EAAa,EAAGz9lB,EAAKy9lB,EAAa,EAAGA,EACtD,CACA,SAASw6R,GAAmBC,EAAgBC,EAAcC,EAAQC,GAM9D,IALA,IAAIC,GAAeJ,EAAe9+tC,OAAS,GAAK,EAC5Cm/tC,EAAYz/pC,IACZ0/pC,EAAa,EACb5gmC,EAAMsgmC,EAAe9+tC,OACrBkl9B,EAAO1m1B,EAAM,EACR18E,EAAS,EAAGA,EAASo9qC,EAAap9qC,IAAU,CAGjD,IAFA,IAAIu9qC,EAAwB,EAATv9qC,EACf8qD,EAAQ,EACHvpG,EAAI,EAAGA,EAAIm7H,EAAKn7H,GAAK,EAAG,CAC7B,IAAIo3W,EAAY,IAANp3W,EAAUg8tC,GAAiBA,EAAeh8tC,EAAI,GAAK6h9B,EAAO,EAChEn/tB,EAAK+4+B,EAAerk3B,GAAOuk3B,EAAO,GAClC5tiC,EAAK0tiC,EAAerk3B,EAAM,GAAKuk3B,EAAO,GAGtC7qlC,EAFK4qlC,EAAa17tC,GAAK47tC,EAAK,GAElBl5+B,EACV/xG,EAFK+qlC,EAAa17tC,EAAI,GAAK47tC,EAAK,GAEtB7tiC,EACdxkF,GAASunC,EAAKA,EAAKH,EAAKA,CAC5B,CACIpnC,EAAQuynC,IACRA,EAAYvynC,EACZwynC,EAAat9qC,EAErB,CACA,OAAOs9qC,CACX,CACA,SAASnlqC,GAAQpgB,GAGb,IAFA,IAAIykgC,EAAS,GACT9/6B,EAAM3kF,EAAM75C,OACPO,EAAI,EAAGA,EAAIi+H,EAAKj+H,GAAK,EAC1B+9iC,EAAO/9iC,GAAKs5C,EAAM2kF,EAAMj+H,EAAI,GAC5B+9iC,EAAO/9iC,EAAI,GAAKs5C,EAAM2kF,EAAMj+H,EAAI,GAEpC,OAAO+9iC,CACX,CA0EO,SAASghL,GAAkBtpsC,GAC9B,OAAOA,EAAKupsC,mBAChB,CAIA,IAAIC,GAAsB,eAC1B,SAASC,GAAoB5ygC,EAAKz4I,EAAYsrpC,GAC1C,IAAIC,EAAkBH,GAAsBprpC,EACxCnpB,EAAiB4hK,EAAI8ygC,IAAoB9ygC,EAAIz4I,GAC5Cy4I,EAAI8ygC,KACL9ygC,EAAI8ygC,GAAmB9ygC,EAAIz4I,IAE/B,IAAIhoE,EAAUsztC,EAAUtztC,QACpBgtC,EAAQsmrC,EAAUtmrC,MAClB8gN,EAASwl+B,EAAUxl+B,OACvBrtC,EAAIz4I,GAAc,WACd,IACI4wE,EADAhuG,EAAOj3C,UAUX,OARAm6P,GAAUA,EAAOh6P,MAAMP,KAAMq3C,GAEzBguG,EADA54I,EACMA,EAAQlM,MAAMP,KAAMq3C,GAGpBiU,EAAe/qD,MAAMP,KAAMq3C,GAErCoC,GAASA,EAAMl5C,MAAMP,KAAMq3C,GACpBguG,CACX,CACJ,CACA,SAAS46kC,GAAc/ygC,EAAKz4I,GACxB,IAAIurpC,EAAkBH,GAAsBprpC,EACxCy4I,EAAI8ygC,KACJ9ygC,EAAIz4I,GAAcy4I,EAAI8ygC,GACtB9ygC,EAAI8ygC,GAAmB,KAE/B,CACA,SAASE,GAAwBC,EAAcC,GAC3C,IAAK,IAAIx/tC,EAAI,EAAGA,EAAIu/tC,EAAa9/tC,OAAQO,IAErC,IADA,IAAIy/tC,EAAaF,EAAav/tC,GACrB8C,EAAI,EAAGA,EAAI28tC,EAAWhguC,QAAS,CACpC,IAAI4D,EAAIo8tC,EAAW38tC,GACfV,EAAIq9tC,EAAW38tC,EAAI,GACvB28tC,EAAW38tC,KAAO08tC,EAAG,GAAKn8tC,EAAIm8tC,EAAG,GAAKp9tC,EAAIo9tC,EAAG,GAC7CC,EAAW38tC,KAAO08tC,EAAG,GAAKn8tC,EAAIm8tC,EAAG,GAAKp9tC,EAAIo9tC,EAAG,EACjD,CAER,CACA,SAASE,GAAiBC,EAAUC,GAChC,IAAIC,EAAgBF,EAASnsP,sBACzBssP,EAAcF,EAAOpsP,sBACrBz98B,EAhND,SAA2BipQ,EAAQC,GAMtC,IALA,IAAIlpQ,EACAgqsC,EACAC,EACAC,EAAY,GACZC,EAAY,GACPlguC,EAAI,EAAGA,EAAIiC,KAAK8K,IAAIiyR,EAAOv/R,OAAQw/R,EAAOx/R,QAASO,IAAK,CAC7D,IAAI29tC,EAAW3+7B,EAAOh/R,GAClB49tC,EAAW3+7B,EAAOj/R,GAClBmguC,OAAc,EACdC,OAAc,EACbzC,EAIKC,GAMNmC,EADuCI,GAAvCpqsC,EAAK2nsC,GAAaC,EAAUC,IAA4B,GAExDoC,EAF4DI,EAAcrqsC,EAAG,KAJ7EqqsC,EAAclC,GAAc8B,GAAgBrC,EAAUA,GACtDwC,EAAcxC,IALdwC,EAAcjC,GAAc6B,GAAgBnC,EAAUA,GACtDwC,EAAcxC,GAWlBqC,EAAUh/tC,KAAKk/tC,GACfD,EAAUj/tC,KAAKm/tC,EACnB,CACA,MAAO,CAACH,EAAWC,EACvB,CAoLaG,CAAkBrF,GAAmB6E,GAAgB7E,GAAmB8E,IAAeQ,EAAmBvqsC,EAAG,GAAIwqsC,EAAiBxqsC,EAAG,GAC1IyqsC,EAAoBb,EAAS3vQ,uBAC7BywQ,EAAkBb,EAAO5vQ,uBAI7BwwQ,GAAqBlB,GAAwBgB,EAAkBE,GAC/DC,GAAmBnB,GAAwBiB,EAAgBE,GAC3DvB,GAAoBU,EAAQ,kBAAmB,CAAE/ztC,QALjD,WACIzM,KAAK4iI,UAAY,IACrB,IAIA49lC,EAAO59lC,UAAY,KACnB,IAAI0+lC,EAtIR,SAAkCC,EAASv5N,EAAOw5N,EAAsBC,GAGpE,IAFA,IACIC,EADAl+sC,EAAS,GAEJ5iB,EAAI,EAAGA,EAAI2guC,EAAQlhuC,OAAQO,IAAK,CACrC,IAAI+guC,EAAoBJ,EAAQ3guC,GAC5BghuC,EAAkB55N,EAAMpngC,GACxBy+tC,EAAS,GAASsC,GAClBrC,EAAO,GAASsC,GACI,MAApBF,IACAA,EAAmBrC,EAAO,GAAK,GAAMC,EAAK,GAAK,GAEnD,IAAIuC,EAAuB,GACvBC,EAAqB,GACrBC,EAAY,EACZvC,EAAYz/pC,IACZ8p9B,EAAS,GACThr5B,EAAM8imC,EAAkBthuC,OACxBqhuC,IACAC,EAAoBrnqC,GAAQqnqC,IAIhC,IAFA,IAAIx/qC,EAAgF,EAAvE+8qC,GAAmByC,EAAmBC,EAAiBvC,EAAQC,GACxE/5Q,EAAO1m1B,EAAM,EACRn7H,EAAI,EAAGA,EAAI6h9B,EAAM7h9B,GAAK,EAAG,CAC9B,IAAIo3W,GAAO34T,EAASz+C,GAAK6h9B,EAAO,EAChCs8Q,EAAqBn+tC,EAAI,GAAKi+tC,EAAkB7m3B,GAAOuk3B,EAAO,GAC9DwC,EAAqBn+tC,EAAI,GAAKi+tC,EAAkB7m3B,EAAM,GAAKuk3B,EAAO,EACtE,CACAwC,EAAqB,GAAKF,EAAkBx/qC,GAAUk9qC,EAAO,GAC7DwC,EAAqB,GAAKF,EAAkBx/qC,EAAS,GAAKk9qC,EAAO,GAG7D,IADA,IAAI3w3B,EAAO+y3B,EAwG2D,GAvG7D9y/B,GAAS8y/B,EAAmB,EAAG9y/B,GAAS8y/B,EAAmB,EAAG9y/B,GAAS+/H,EAAM,CAClF,IAAIx9U,EAAKruB,KAAK4wH,IAAIk7G,GACd5+M,EAAKltB,KAAKuxH,IAAIu6G,GACd1hI,EAAQ,EACZ,IAASvpG,EAAI,EAAGA,EAAIi+tC,EAAkBthuC,OAAQqD,GAAK,EAAG,CAClD,IAAI0iP,EAAKy7+B,EAAqBn+tC,GAC1B+tL,EAAKowiC,EAAqBn+tC,EAAI,GAC9BkkT,EAAKg66B,EAAgBl+tC,GAAK47tC,EAAK,GAC/B5tiC,EAAKkwiC,EAAgBl+tC,EAAI,GAAK47tC,EAAK,GACnC0C,EAAQp66B,EAAK73R,EAAK2hK,EAAKxgK,EACvB+wsC,EAAQr66B,EAAK12R,EAAKwgK,EAAK3hK,EAC3B85/B,EAAOnmhC,GAAKs+tC,EACZn4M,EAAOnmhC,EAAI,GAAKu+tC,EAChB,IAAIztlC,EAAKwtlC,EAAQ57+B,EACb/xG,EAAK4tlC,EAAQxwiC,EACjBxkF,GAASunC,EAAKA,EAAKH,EAAKA,CAC5B,CACA,GAAIpnC,EAAQuynC,EAAW,CACnBA,EAAYvynC,EACZ80nC,EAAYpz/B,EACZ,IAAK,IAAIvrO,EAAI,EAAGA,EAAIymhC,EAAOxphC,OAAQ+C,IAC/B0+tC,EAAmB1+tC,GAAKymhC,EAAOzmhC,EAEvC,CACJ,CAQJogB,EAAO3hB,KAAK,CACRkc,KAAM8jtC,EACN5otC,GAAI6otC,EACJzC,OAAQA,EACRC,KAAMA,EACN/4mC,UAAWw7mC,GAEnB,CACA,OAAOv+sC,CACX,CA8DuB0+sC,CAAyBhB,EAAkBC,EAAgB,EAAIt+tC,KAAKsmC,IACnF0g/B,EAAS,GACbi2M,GAAoBU,EAAQ,YAAa,CAAE/ztC,QAAS,SAAU4pB,GAItD,IAHA,IAAIj3B,EAAIohuC,EAAO2B,SACXzvR,EAAO,EAAItz8B,EACXgjuC,EAAQ,GACHxhuC,EAAI,EAAGA,EAAI0guC,EAAajhuC,OAAQO,IAAK,CAC1C,IAAIwgD,EAAOkgrC,EAAa1guC,GACpBmd,EAAOqjC,EAAKrjC,KACZ9E,EAAKmoC,EAAKnoC,GACV01N,EAAQvtL,EAAKmlE,SAAWnnH,EACxBiguC,EAASj+qC,EAAKi+qC,OACdC,EAAOl+qC,EAAKk+qC,KACZpusC,EAAKruB,KAAK4wH,IAAIk7G,GACd5+M,EAAKltB,KAAKuxH,IAAIu6G,GAClB8pH,GAAK2p4B,EAAO/C,EAAQC,EAAMlguC,GAC1B,IAAK,IAAIgE,EAAI,EAAGA,EAAI2a,EAAK1d,OAAQ+C,GAAK,EAAG,CACrC,IAAIi/tC,EAAOtktC,EAAK3a,GACZk/tC,EAAOvktC,EAAK3a,EAAI,GAGhBa,EAAIo+tC,EAAO3vR,GAFX9qpB,EAAK3uS,EAAG7V,IAEehE,EACvB4D,EAAIs/tC,EAAO5vR,GAFXhhxB,EAAKz4K,EAAG7V,EAAI,IAEWhE,EAC3ByqhC,EAAOzmhC,GAAMa,EAAI8rB,EAAK/sB,EAAIkuB,EAAMkxsC,EAAM,GACtCv4M,EAAOzmhC,EAAI,GAAMa,EAAIitB,EAAKluB,EAAI+sB,EAAMqysC,EAAM,EAC9C,CACA,IAAIh8+B,EAAKyjyB,EAAO,GACZp41B,EAAKo41B,EAAO,GAEhB,IADAxz/B,EAAK0wuB,OAAO3ghB,EAAI30D,GACPruL,EAAI,EAAGA,EAAI2a,EAAK1d,QAAS,CAC9B,IAAIunT,EAAKiiuB,EAAOzmhC,KACZsuL,EAAKm41B,EAAOzmhC,KACZ05L,EAAK+s1B,EAAOzmhC,KACZq0H,EAAKoy5B,EAAOzmhC,KACZqlT,EAAKohuB,EAAOzmhC,KACZslT,EAAKmhuB,EAAOzmhC,KACZgjP,IAAOwhE,GAAMn2H,IAAOC,GAAMoL,IAAO2rH,GAAMhxL,IAAOixL,EAC9CryR,EAAK2wuB,OAAOv+c,EAAIC,GAGhBryR,EAAK2zvB,cAAcpie,EAAIl2H,EAAIoL,EAAIrlE,EAAIgxL,EAAIC,GAE3CtiE,EAAKqiE,EACLh3H,EAAKi3H,CACT,CACJ,CACJ,GACR,CACO,SAAS656B,GAAUhC,EAAUC,EAAQzyD,GACxC,IAAKwyD,IAAaC,EACd,OAAOA,EAEX,IAAIgC,EAAUz0D,EAAc7sqC,KACxBuhuC,EAAY10D,EAAc5iN,OAsB9B,OArBAm1Q,GAAiBC,EAAUC,GAC3BA,EAAO2B,SAAW,EAQlB3B,EAAO3nQ,UAAU,CACbspQ,SAAU,GACX,EAAS,CACRh3Q,OAAQ,SAAUro9B,GACd09tC,EAAOzrP,aACP0tP,GAAaA,EAAU3/tC,EAC3B,EACA5B,KAAM,WAbN++tC,GAAcO,EAAQ,aACtBP,GAAcO,EAAQ,mBACtBA,EAAO2B,UAAY,EACnB3B,EAAOnsP,kBACPmsP,EAAOzrP,aAWHytP,GAAWA,GACf,GACDz0D,IACIyyD,CACX,CACA,SAASkC,GAAQz+tC,EAAGjB,EAAGu3K,EAAMC,EAAMC,EAAMC,GAErCz2K,EAAKw2K,IAASF,EAAQ,EAAI13K,KAAKogD,MAAM,OAASh/C,EAAIs2K,IAASE,EAAOF,IAClEv3K,EAAK03K,IAASF,EAAQ,EAAI33K,KAAKogD,MAAM,OAASjgD,EAAIw3K,IAASE,EAAOF,IAGlE,IAFA,IACIopL,EADAjhW,EAAI,EAEC7B,EAAI,MAAiBA,EAAI,EAAGA,GAAK,EAAG,CACzC,IAAIo8K,EAAK,EACLC,EAAK,GACJl5K,EAAInD,GAAK,IACVo8K,EAAK,IAEJl6K,EAAIlC,GAAK,IACVq8K,EAAK,GAETx6K,GAAK7B,EAAIA,GAAM,EAAIo8K,EAAMC,GACd,IAAPA,IACW,IAAPD,IACAj5K,EAAInD,EAAI,EAAImD,EACZjB,EAAIlC,EAAI,EAAIkC,GAEhB4gW,EAAM3/V,EACNA,EAAIjB,EACJA,EAAI4gW,EAEZ,CACA,OAAOjhW,CACX,CACA,SAASgguC,GAAU1sM,GACf,IAAIxsN,EAAO1pwB,IACP881B,EAAO981B,IACP2pwB,GAAO,IACPozF,GAAO,IACPi1H,EAAM1igC,EAAI4mgC,GAAU,SAAU5//B,GAC9B,IAAIq9D,EAAOr9D,EAAK8tN,kBACZ/gP,EAAIizB,EAAKu67B,uBACT3s9B,EAAIyvF,EAAKzvF,EAAIyvF,EAAK30D,MAAQ,GAAK37B,EAAIA,EAAE,GAAK,GAC1CJ,EAAI0wF,EAAK1wF,EAAI0wF,EAAK10D,OAAS,GAAK57B,EAAIA,EAAE,GAAK,GAK/C,OAJAqm0B,EAAO5m0B,KAAKgL,IAAI5J,EAAGwl0B,GACnBozF,EAAOh65B,KAAKgL,IAAI7K,EAAG655B,GACnBnzF,EAAO7m0B,KAAK8K,IAAI1J,EAAGyl0B,GACnBozF,EAAOj65B,KAAK8K,IAAI3K,EAAG855B,GACZ,CAAC745B,EAAGjB,EACf,IAQA,OAPYqsB,EAAI0igC,GAAK,SAAUv8xB,EAAIslH,GAC/B,MAAO,CACHtlH,GAAIA,EACJ7vP,EAAG+8tC,GAAQlt+B,EAAG,GAAIA,EAAG,GAAIi0kB,EAAMozF,EAAMnzF,EAAMozF,GAC3Czm4B,KAAM4//B,EAASn7qB,GAEvB,IACavuU,MAAK,SAAUvrC,EAAGsC,GAAK,OAAOtC,EAAE2E,EAAIrC,EAAEqC,CAAG,IAAG0pB,KAAI,SAAU+xB,GAAQ,OAAOA,EAAK/qB,IAAM,GACrG,CAEA,SAASussC,GAAkBpzpC,GACvB,ODxLG,SAAen5C,EAAMkzB,GACxB,IAEIs5qC,EAFA5F,EAAY,GACZ36/B,EAAQjsM,EAAKisM,MAEjB,OAAQjsM,EAAK9pB,MACT,IAAK,QAzKb,SAAoB6v+B,EAAW7y7B,EAAO0zqC,GAUlC,IATA,IAAIl+rC,EAAQq98B,EAAUr98B,MAClBC,EAASo98B,EAAUp98B,OACnB8jsC,EAAkB/jsC,EAAQC,EAC1B4skC,EAAQixH,GAAiB,CAAC99rC,EAAOC,GAAS8jsC,EAAkB,EAAI,EAAGv5qC,GACnEw5qC,EAAaD,EAAkB,QAAU,SACzCE,EAAgBF,EAAkB,SAAW,QAC7ChG,EAASgG,EAAkB,IAAM,IACjCG,EAAYH,EAAkB,IAAM,IACpCr7+B,EAAU20vB,EAAU2mP,GAAcn3H,EAAMvrmC,OACnC2iI,EAAM,EAAGA,EAAM4o+B,EAAMvrmC,OAAQ2iI,IAElC,IADA,IAAI+5lC,EAAa3gP,EAAU4mP,GAAiBp3H,EAAM5o+B,GACzCljF,EAAS,EAAGA,EAAS8rjC,EAAM5o+B,GAAMljF,IAAU,CAChD,IAAIs9qC,EAAW,CAAC,EAChBA,EAASN,GAAU95lC,EAAMykH,EACzB21+B,EAAS6F,GAAanjrC,EAASi9qC,EAC/BK,EAAS2F,GAAct7+B,EACvB21+B,EAAS4F,GAAiBjG,EAC1BK,EAASn5tC,GAAKm4+B,EAAUn4+B,EACxBm5tC,EAASp6tC,GAAKo5+B,EAAUp5+B,EACxBi6tC,EAAUp7tC,KAAKu7tC,EACnB,CAER,CAmJY8F,CAAW5ggC,EAAO/4K,EAAO0zqC,GACzB4F,EAAe,GACf,MACJ,IAAK,SACD7F,GAAa16/B,EAAO/4K,EAAO0zqC,GAC3B4F,EAAe,GACf,MACJ,IAAK,SACD7F,GAAa,CACT1u3B,GAAI,EAAGvuW,EAAGuiO,EAAMviO,EAAG8oxB,WAAY,EAAGC,SAAoB,EAAVjmxB,KAAKsmC,GACjDu3N,GAAIp+B,EAAMo+B,GAAIumG,GAAI3kI,EAAM2kI,IACzB19S,EAAO0zqC,GACV4F,EAAe,GACf,MACJ,QACI,IAAIz/tC,EAAIizB,EAAKu67B,uBACT9u3B,EAAQ1+F,EAAIP,KAAK4yF,KAAK5yF,KAAK8K,IAAIvK,EAAE,GAAKA,EAAE,GAAKA,EAAE,GAAKA,EAAE,GAAIA,EAAE,GAAKA,EAAE,GAAKA,EAAE,GAAKA,EAAE,KAAO,EACxFooC,EAAWnc,EDjFpB,SAAwBgH,EAAMyrE,GACjC,IAAIg6nC,EAAoBF,GAAmBvlsC,GACvCmV,EAAW,GACfs2D,EAAQA,GAAS,EACjB,IAAK,IAAIlhG,EAAI,EAAGA,EAAIk7tC,EAAkBz7tC,OAAQO,IAAK,CAC/C,IAAIuiuC,EAAUrH,EAAkBl7tC,GAC5BqkC,EAAU,GACVmhN,EAAK+8+B,EAAQ,GACb1xiC,EAAK0xiC,EAAQ,GACjBl+rC,EAAQpjC,KAAKukP,EAAI30D,GACjB,IAAK,IAAI/tL,EAAI,EAAGA,EAAIy/tC,EAAQ9iuC,QAAS,CACjC,IAAIunT,EAAKu76B,EAAQz/tC,KACbguL,EAAKyxiC,EAAQz/tC,KACbo5L,EAAKqmiC,EAAQz/tC,KACb+zH,EAAK0rmC,EAAQz/tC,KACb+kT,EAAK066B,EAAQz/tC,KACbglT,EAAKy66B,EAAQz/tC,KACjB04tC,GAAeh2+B,EAAI30D,EAAIm2H,EAAIl2H,EAAIoL,EAAIrlE,EAAIgxL,EAAIC,EAAIzjR,EAAS68D,GACxDskJ,EAAKqiE,EACLh3H,EAAKi3H,CACT,CACAl9Q,EAAS3pC,KAAKojC,EAClB,CACA,OAAOuG,CACX,CCyD+B43rC,CAAe/ssC,EAAK+98B,sBAAuBty4B,IAAQ,SAAUivX,GAAQ,OA9BpG,SAAwBzlb,GAEpB,IADA,IAAI40F,EAAM,GACDt/H,EAAI,EAAGA,EAAI0qC,EAAOjrC,QACvB6/H,EAAIr+H,KAAK,CAACypC,EAAO1qC,KAAM0qC,EAAO1qC,OAElC,OAAOs/H,CACX,CAwB2GmjmC,CAAetywB,EAAO,IACjHuywB,EAAe93rC,EAASnrC,OAC5B,GAAqB,IAAjBijuC,EACAlF,GAAsBX,GAAqB,CACvCnyrC,OAAQE,EAAS,IAClB+d,EAAO0zqC,QAET,GAAIqG,IAAiB/5qC,EACtB,IAAK,IAAI3oD,EAAI,EAAGA,EAAI0iuC,EAAc1iuC,IAC9Bq8tC,EAAUp7tC,KAAK,CACXypC,OAAQE,EAAS5qC,SAIxB,CACD,IAAI2iuC,EAAc,EACd7pgC,EAAQrqM,EAAImc,GAAU,SAAUulb,GAChC,IAAIljd,EAAM,GACNF,EAAM,GACVmg+B,GAAW/8gB,EAAMljd,EAAKF,GACtB,IAAI0zO,GAAQ1zO,EAAI,GAAKE,EAAI,KAAOF,EAAI,GAAKE,EAAI,IAE7C,OADA01tC,GAAeli/B,EACR,CAAE0vO,KAAMA,EAAM1vO,KAAMA,EAC/B,IACA3nB,EAAMntL,MAAK,SAAUvrC,EAAGsC,GAAK,OAAOA,EAAE+9O,KAAOrgP,EAAEqgP,IAAM,IACrD,IAAIxiN,EAAO0qB,EACX,IAAS3oD,EAAI,EAAGA,EAAI0iuC,EAAc1iuC,IAAK,CACnC,IAAIwgD,EAAOs4K,EAAM94N,GACjB,GAAIi+B,GAAQ,EACR,MAEJ,IAAI2ksC,EAAY5iuC,IAAM0iuC,EAAe,EAC/BzksC,EACAh8B,KAAKuK,KAAKg0C,EAAKigM,KAAOki/B,EAAch6qC,GACtCi6qC,EAAY,IAGhBpF,GAAsBX,GAAqB,CACvCnyrC,OAAQ8V,EAAK2va,MACdyywB,EAAWvG,GACdp+rC,GAAQ2ksC,EACZ,CAEJ,CACAX,EAAe,GAGvB,IAAKA,EACD,OA3FD,SAAexssC,EAAMkzB,GAExB,IADA,IAAIg1L,EAAQ,GACH39O,EAAI,EAAGA,EAAI2oD,EAAO3oD,IACvB29O,EAAM18O,KAAKqshC,GAAU73/B,IAEzB,OAAOkoN,CACX,CAqFe,CAAMloN,EAAMkzB,GAEvB,IAAI22E,EAAM,GACV,IAASt/H,EAAI,EAAGA,EAAIq8tC,EAAU58tC,OAAQO,IAAK,CACvC,IAAIy7O,EAAU,IAAIwm/B,EAClBxm/B,EAAQuqK,SAASq20B,EAAUr8tC,IAC3By9tC,GAAchosC,EAAMgmN,GACpBn8G,EAAIr+H,KAAKw6O,EACb,CACA,OAAOn8G,CACX,CCuGWt7H,CAAM4qE,EAAMn5C,KAAMm5C,EAAMjmB,MACnC,CC9WA,SAASk6qC,GAAWjv6B,GAClB,OAAO7iT,GAAQ6iT,EAAS,GAC1B,CAEA,SAASkv6B,GAAoBjmS,EAAKkmS,GAIhC,IAHA,IAAIC,EAAU,GACVl1nC,EAAa+u1B,EAAIp97B,OAEZO,EAAI,EAAGA,EAAI8tG,EAAY9tG,IAC9BgjuC,EAAQ/huC,KAAK,CACX477B,IAAKA,EAAI787B,GACT+iuC,KAAM,KAIV,IAAS/iuC,EAAI,EAAGA,EAAI+iuC,EAAKtjuC,OAAQO,IAAK,CACpC,IAAIi+H,EAAM8kmC,EAAK/iuC,GAAGP,OACdqD,OAAI,EAER,IAAKA,EAAI,EAAGA,EAAIm7H,EAAKn7H,IACnBkguC,EAAQlguC,EAAIgrG,GAAYi1nC,KAAK9huC,KAAK8huC,EAAK/iuC,GAAG8C,GAE9C,CAEA,IAAIsqC,EAAM,EAEV,IAASptC,EAAI8tG,EAAa,EAAG9tG,GAAK,EAAGA,IACnC,IAAKgjuC,EAAQhjuC,GAAG+iuC,KAAKtjuC,OAAQ,CAC3B,IAAIwjuC,EAAWD,EAAQ51rC,GAAK21rC,KAE5B,GAAIE,EAASxjuC,QAAU,EAAG,CAGxB,IAAI2tC,EAGF,OAAO41rC,EAFP51rC,EAAM,CAIV,CAEI6wF,EAAMglmC,EAASxjuC,OAAnB,IACIilO,EAAMziO,KAAKuK,KAAKyxH,EAAM,GAC1B+kmC,EAAQhjuC,GAAG+iuC,KAAOE,EAAS9huC,MAAMujO,EAAKzmG,GACtC+kmC,EAAQ51rC,GAAK21rC,KAAOE,EAAS9huC,MAAM,EAAGujO,GACtCt3L,GACF,CAGF,OAAO41rC,CACT,CAEA,IAAIE,GAAe,CACjBvzsC,MAAO,SAAU8X,GAKf,IAJA,IAAI43b,EAAM,GAEN8jwB,EAAgB,EAAIlhuC,KAAK6yF,IAAI,EAAIrtD,EAAOhS,KAAKhiB,MAAMu3H,QAAS,EAAIvjG,EAAOkhB,OAElE3oD,EAAI,EAAGA,EAAIynC,EAAOkhB,MAAO3oD,IAAK,CACrC,IAAIo6d,EAASkzjB,GAAU7l/B,EAAOhS,MAC9B2kc,EAAO12D,SAAS,UAAWy/zB,GAC3B9jwB,EAAIp+d,KAAKm5d,EACX,CAEA,OAAOiF,CACT,EAEAr7d,MAAO,MAEF,SAASo/tC,GAAoBjmtC,EAAM9E,EAAI4rkC,EAAa7hG,EAAa390B,EAAW4+jC,GACjF,GAAKlmtC,EAAK1d,QAAW4Y,EAAG5Y,OAAxB,CAIA,IAAI6juC,EAAqB7+O,GAAmB,SAAUrC,EAAa390B,GAEnE,GAAM6+jC,GAAsBA,EAAmB7+qC,SAAW,EAA1D,CAIA,IAMIs+qC,EACAlmS,EAPA0mS,EAAiBnhP,EAAYprzB,SAAS,uBAAuBz0L,IAAI,SACjE2y9B,EAAex29B,OAAOa,OAAO,CAG/B+59B,YAAY,GACXgqQ,GAICT,GAAW1ltC,KAEb4ltC,EAAO5ltC,EACP0/6B,EAAMxk7B,GAGJwqtC,GAAWxqtC,KAEb0qtC,EAAO1qtC,EACPwk7B,EAAM1/6B,GAqDR,IALA,IAAIqmtC,EAAaT,EAAOA,IAAS5ltC,EAC/BA,EAAK1d,OAAS4Y,EAAG5Y,OACfgkuC,EAAeV,EAAOD,GAAoBjmS,EAAKkmS,GAAQD,GAAoBU,EAAanrtC,EAAK8E,EAAM,CAACqmtC,EAAarmtC,EAAO9E,IACxHqrtC,EAAe,EAEV1juC,EAAI,EAAGA,EAAIyjuC,EAAahkuC,OAAQO,IACvC0juC,GAAgBD,EAAazjuC,GAAG+iuC,KAAKtjuC,OAGvC,IAAIkkuC,EAAe,EAEnB,IAAS3juC,EAAI,EAAGA,EAAIyjuC,EAAahkuC,OAAQO,IACvC4juC,EAAcH,EAAazjuC,GAAIwjuC,EAAYG,EAAcD,GACzDC,GAAgBF,EAAazjuC,GAAG+iuC,KAAKtjuC,MAjFvC,CANA,CA6BA,SAASmkuC,EAAc5ypC,EAAOwypC,EAAYG,EAAcD,EAAcG,GACpE,IAAIC,EAAY9ypC,EAAM+xpC,KAClBgB,EAAW/ypC,EAAM6r3B,IAErB,GAAyB,IAArBinS,EAAUrkuC,QAAiBokuC,EAgC7B,IAbA,IAAIG,EAAuB,EAAS,CAClCC,WAAYf,GAAaj/I,GACzBigJ,gBAAiBX,GAAkB,SAAUrp3B,EAAKvxT,EAAOg3qC,EAAUC,GACjE,OAAO2D,EAAerp3B,EAAMyp3B,EAAcD,EAC5C,GACCxuQ,GAECn/7B,EAAKytsC,EDoPR,SAAsBW,EAAUvE,EAAQzyD,GAC3C,IAAIi3D,EAAe,IACnB,SAASC,EAAYF,GACjB,IAAK,IAAInkuC,EAAI,EAAGA,EAAImkuC,EAAS1kuC,OAAQO,IAAK,CACtC,IAAImd,EAAOgntC,EAASnkuC,GAChB++tC,GAAkB5htC,GAClBkntC,EAAYlntC,EAAK287B,eAEZ387B,aAAgB,IACrBintC,EAAanjuC,KAAKkc,EAE1B,CACJ,CACAkntC,CAAYF,GACZ,IAAIG,EAAgBF,EAAa3kuC,OACjC,IAAK6kuC,EACD,MAtBG,CACHC,gBAAiB,GACjBC,cAAe,GACf77qC,MAAO,GAqBX,IACI87qC,GADat3D,EAAc82D,YAAcjC,IACd,CAC3BvssC,KAAMmqsC,EAAQj3qC,MAAO27qC,IAEzB,GAAIG,EAAchluC,SAAW6kuC,EAEzB,OADA79sC,QAAQvlB,MAAM,6CA7BX,CACHqjuC,gBAAiB,GACjBC,cAAe,GACf77qC,MAAO,GA6BXy7qC,EAAerC,GAAUqC,GACzBK,EAAgB1C,GAAU0C,GAK1B,IAJA,IAAI7C,EAAUz0D,EAAc7sqC,KACxBuhuC,EAAY10D,EAAc5iN,OAC1B25Q,EAAkB/2D,EAAc+2D,gBAChC9gZ,EAAoB,IAAI,GACnBpj1B,EAAI,EAAGA,EAAIskuC,EAAetkuC,IAAK,CACpC,IAAImd,EAAOintC,EAAapkuC,GACpBqY,EAAKostC,EAAczkuC,GACvBqY,EAAGo4E,OAASmvoC,EACZvntC,EAAGm48B,cAAcptI,GACZ8gZ,GACDxE,GAAiBvitC,EAAM9E,EAE/B,CAKA,SAASqstC,EAAqB/stC,GAC1B,IAAK,IAAI3X,EAAI,EAAGA,EAAIykuC,EAAchluC,OAAQO,IACtCykuC,EAAczkuC,GAAG+29B,YAAYp/8B,EAErC,CAaA,SAASgttC,IACL/E,EAAOZ,qBAAsB,EAC7BY,EAAO2B,UAAY,EACnB3B,EAAO9lR,YAAc,KACrBulR,GAAcO,EAAQ,eACtBP,GAAcO,EAAQ,mBAC1B,CA3BAA,EAAOZ,qBAAsB,EAC7BY,EAAO9lR,YAAc,WACjB,OAAO2qR,CACX,EAMAvF,GAAoBU,EAAQ,cAAe,CACvC/mrC,MAAO,SAAUlhC,GACb+stC,EAAqB/stC,EACzB,IAEJuntC,GAAoBU,EAAQ,mBAAoB,CAC5C/mrC,MAAO,SAAUlhC,GACb,IAAK,IAAI3X,EAAI,EAAGA,EAAIykuC,EAAchluC,OAAQO,IACtCykuC,EAAczkuC,GAAGi39B,iBAAiBt/8B,EAE1C,IASJ,IAAIittC,EAAQH,EAAchluC,OAC1B,GAAIykuC,EACA,KAAIW,EAAcD,EACdE,EAAW,WAES,KADpBD,IAEIF,IACA/C,GAAWA,IAEnB,EACA,IAAS5huC,EAAI,EAAGA,EAAI4kuC,EAAO5kuC,IAAK,CAC5B,IAAI+kuC,EAAyBb,EAAkB,EAAS,CACpD3jrC,OAAQ4snC,EAAc5snC,OAAS,GAAK2jrC,EAAgBlkuC,EAAG4kuC,EAAOR,EAAapkuC,GAAIykuC,EAAczkuC,IAC7FM,KAAMwkuC,GACP33D,GAAiBA,EACpBw0D,GAAUyC,EAAapkuC,GAAIykuC,EAAczkuC,GAAI+kuC,EACjD,CAduB,MAiBvBnF,EAAO2B,SAAW,EAClB3B,EAAO3nQ,UAAU,CACbspQ,SAAU,GACX,EAAS,CACRh3Q,OAAQ,SAAUro9B,GACd,IAAK,IAAIlC,EAAI,EAAGA,EAAI4kuC,EAAO5kuC,IAAK,CAC5B,IAAIspF,EAAQm7oC,EAAczkuC,GAC1BspF,EAAMi4oC,SAAW3B,EAAO2B,SACxBj4oC,EAAM6q5B,YACV,CACA0tP,GAAaA,EAAU3/tC,EAC3B,EACA5B,KAAM,WACFqkuC,IACA,IAAK,IAAI3kuC,EAAI,EAAGA,EAAImkuC,EAAS1kuC,OAAQO,IACjCq/tC,GAAc8E,EAASnkuC,GAAI,mBAE/B4huC,GAAWA,GACf,GACDz0D,IAKP,OAHIyyD,EAAOzrR,MACPuwR,EAAqB9E,EAAOzrR,MAEzB,CACHowR,gBAAiBH,EACjBI,cAAeC,EACf97qC,MAAOi8qC,EAEf,CCzW4BI,CAAalB,EAAWC,EAAUC,GD0WvD,SAAuBrE,EAAUsF,EAAY93D,GAChD,IAAIy3D,EAAQK,EAAWxluC,OACnB2kuC,EAAe,GACfH,EAAa92D,EAAc82D,YAAcjC,GAY7C,GAAIjD,GAAkBY,GAAW,EAXjC,SAAS0E,EAAYF,GACjB,IAAK,IAAInkuC,EAAI,EAAGA,EAAImkuC,EAAS1kuC,OAAQO,IAAK,CACtC,IAAImd,EAAOgntC,EAASnkuC,GAChB++tC,GAAkB5htC,GAClBkntC,EAAYlntC,EAAK287B,eAEZ387B,aAAgB,IACrBintC,EAAanjuC,KAAKkc,EAE1B,CACJ,CAEIkntC,CAAY1E,EAAS7lR,eACrB,IAAIorR,EAAUd,EAAa3kuC,OAC3B,GAAIyluC,EAAUN,EAEV,IADA,IAAI9huC,EAAI,EACC9C,EAAIkluC,EAASlluC,EAAI4kuC,EAAO5kuC,IAC7BokuC,EAAanjuC,KAAKqshC,GAAU82M,EAAathuC,IAAMoiuC,KAGvDd,EAAa3kuC,OAASmluC,CAC1B,KACK,CACDR,EAAeH,EAAW,CAAExusC,KAAMkqsC,EAAUh3qC,MAAOi8qC,IACnD,IAAIpE,EAAoBb,EAAS3vQ,uBACjC,IAAShw9B,EAAI,EAAGA,EAAIokuC,EAAa3kuC,OAAQO,IACrCokuC,EAAapkuC,GAAGkw9B,kBAAkBswQ,GAEtC,GAAI4D,EAAa3kuC,SAAWmluC,EAExB,OADAn+sC,QAAQvlB,MAAM,6CA7Jf,CACHqjuC,gBAAiB,GACjBC,cAAe,GACf77qC,MAAO,EA6JX,CACAy7qC,EAAerC,GAAUqC,GACzBa,EAAalD,GAAUkD,GACvB,IAAIf,EAAkB/2D,EAAc+2D,gBACpC,IAASlkuC,EAAI,EAAGA,EAAI4kuC,EAAO5kuC,IAAK,CAC5B,IAAI+kuC,EAAyBb,EAAkB,EAAS,CACpD3jrC,OAAQ4snC,EAAc5snC,OAAS,GAAK2jrC,EAAgBlkuC,EAAG4kuC,EAAOR,EAAapkuC,GAAIiluC,EAAWjluC,KAC3FmtqC,GAAiBA,EACpBw0D,GAAUyC,EAAapkuC,GAAIiluC,EAAWjluC,GAAI+kuC,EAC9C,CACA,MAAO,CACHR,gBAAiBH,EACjBI,cAAeS,EACft8qC,MAAOs8qC,EAAWxluC,OAE1B,CC7ZsF0luC,CAAcpB,EAAUD,EAAWE,GAC/GO,EAAkBxusC,EAAGwusC,gBACrBC,EAAgBzusC,EAAGyusC,cAEnB77qC,EAAQ47qC,EAAgB9kuC,OAEnBqD,EAAI,EAAGA,EAAI6lD,EAAO7lD,IACrBsiuC,EAAyB7B,EAAiB,EAAS,CACrDhjrC,MAAOgjrC,EAAezguC,EAAG6lD,IACxBus6B,GAAgBA,EACnBmuQ,EAAkBkB,EAAgBzhuC,GAAI0huC,EAAc1huC,GAAI0guC,EAAaM,EAAUhhuC,GAAKkuE,EAAM6r3B,IAAK2mS,EAAaxypC,EAAM6r3B,IAAMinS,EAAUhhuC,GAAIsiuC,OApC7F,CAE3C,IAUMA,EAVFC,EAAY7B,EAAaM,EAAU,GAAKC,EACxCuB,EAAU9B,EAAaO,EAAWD,EAAU,GAE5C/E,GAAkBsG,GAEpBzB,EAAc,CACZb,KAAM,CAACsC,GACPxoS,IAAKyoS,IACJ,EAAM3B,EAAcD,GAAc,IAKrC/B,GAAU0D,EAAWC,EAHjBF,EAAyB7B,EAAiB,EAAS,CACrDhjrC,MAAOgjrC,EAAeI,EAAcD,IACnCxuQ,GAAgBA,GAEnBmuQ,EAAkBgC,EAAWC,EAASD,EAAWC,EAASF,GAE9D,CAqBF,CAiBF,CACO,SAASG,GAAY3x6B,GAC1B,IAAKA,EACH,MAAO,GAGT,GAAI7iT,GAAQ6iT,GAAW,CAGrB,IAFA,IAAI4x6B,EAAa,GAERxluC,EAAI,EAAGA,EAAI4zT,EAASn0T,OAAQO,IACnCwluC,EAAWvkuC,KAAKskuC,GAAY3x6B,EAAS5zT,KAGvC,OAAOwluC,CACT,CAEA,IAAInwM,EAAW,GAMf,OALAzhuB,EAAS3uH,UAAS,SAAUhsD,GACtBA,aAAc,KAASA,EAAGyj/B,kBAAoBzj/B,EAAGyh1B,YAAczh1B,EAAG1xG,QACpE8t/B,EAASp0hC,KAAKg4I,EAElB,IACOo84B,CACT,CClLA,IAAIowM,GAAuB,IAEvBC,GAAoCpjQ,KAcxC,SAASqjQ,GAAqBpwpC,GAC5B,IAAIujJ,EAAQ,GAyBZ,OAxBA,EAAKvjJ,GAAM,SAAUm/+B,GACnB,IAAI9ljC,EAAO8ljC,EAAW9ljC,KAEtB,KAAIA,EAAK+5C,QAAU88qC,IAWnB,IAHA,IAAI13iC,EAAUn/K,EAAK0sgC,aACfsqN,EA1BR,SAA6Bh3tC,GAG3B,IAFA,IAAIkpJ,EAAalpJ,EAAKkpJ,WAEb93J,EAAI,EAAGA,EAAI83J,EAAWr4J,OAAQO,IAAK,CAC1C,IAAI41gC,EAAUhngC,EAAK819B,iBAAiB5s0B,EAAW93J,IAE/C,GAAI41gC,GAA6C,IAAlCA,EAAQ+Q,UAAUk/M,YAC/B,OAAO/tkC,EAAW93J,EAEtB,CACF,CAgBmB8luC,CAAoBl3tC,GAE1B61J,EAAY,EAAGA,EAAYspB,EAAQtuL,OAAQglK,IAClDq0D,EAAM73N,KAAK,CACT8kuC,YAAarxK,EAAWqxK,YACxBn3tC,KAAMA,EACNmoV,IAAK29tB,EAAW39tB,KAAO6u4B,EACvB30gC,OAAQyj2B,EAAWzj2B,OACnBxsD,UAAWA,GAGjB,IACOq0D,CACT,CAEA,SAASktgC,GAAcj7C,EAAOhiY,EAAW9ggB,GACvC8i4B,EAAM9l/B,UAAS,SAAUhsD,GACnBA,aAAc,IAEhB0s2B,GAAU1s2B,EAAI,CACZxlI,MAAO,CACLu3H,QAAS,IAEV+9qB,EAAW,CACZtkpB,UAAWwjJ,EACXo9rB,QAAQ,GAGd,GACF,CAEA,SAAS,GAASps2B,GAChB,GAAIA,EAAGxoD,OAAQ,CAGb,IAAIw7G,EAAoBhzD,EAAG+20B,uBAC3B/20B,EAAGi30B,kBAAkBjkxB,GACrBhzD,EAAGxoD,OAAOx+D,OAAOgnH,EACnB,CACF,CAEA,SAAS8+0B,GAAc9+0B,GACrBA,EAAG8+0B,gBAEC9+0B,EAAGkpkB,SACLlpkB,EAAGgsD,UAAS,SAAU37G,GACpBA,EAAMyu4B,eACR,GAEJ,CAoCA,SAASkuQ,GAAkB32tB,EAASi9b,EAASl+5B,GAC3C,IAAI63rC,EAAeP,GAAqBr2tB,GACpC62tB,EAAeR,GAAqBp5R,GAExC,SAAS65R,EAAwBjptC,EAAM9E,EAAIgutC,EAASC,EAAOpxQ,IACrDmxQ,GAAWlptC,IACb9E,EAAG6/8B,YAAY,CACbzk9B,MAAO4ytC,GAAWA,IAAYlptC,EAE9BsrY,EAAOA,EAAO,CAAC,EAAG490B,EAAQ5ytC,OAAQ0J,EAAK1J,OAAS0J,EAAK1J,OACpDyh9B,EAEP,CAEA,SAASqxQ,EAAWztgC,GAClB,IAAK,IAAI94N,EAAI,EAAGA,EAAI84N,EAAMr5N,OAAQO,IAChC,GAAI84N,EAAM94N,GAAG+2V,IACX,OAAOj+H,EAAM94N,GAAG+2V,GAGtB,CAEA,IAAIyv4B,EAAYD,EAAWL,GACvBO,EAAYF,EAAWJ,GACvBO,GAAoB,EAExB,SAASC,EAAgBC,EAAOC,GAC9B,OAAO,SAAU90I,GACf,IAAInjlC,EAAOmjlC,EAASnjlC,KAChB61J,EAAYst7B,EAAStt7B,UAEzB,GAAIoikC,EACF,OAAOj4tC,EAAKike,MAAMpuU,GAMpB,IAAIshkC,EAAch0I,EAASg0I,YAGvBe,EAASF,EAAQJ,GAAaC,EAAYA,GAAaD,EACvD5wN,EAAUkxN,GAAUl4tC,EAAK819B,iBAAiBoiQ,GAC1CC,EAAiBnxN,GAAWA,EAAQ8D,YAExC,GAAI9D,EAAS,CAEX,IAAI3x/B,EAAMrV,EAAKrM,IAAIqzgC,EAAQ9rgC,KAAM26J,GAEjC,OAAIsikC,GACKA,EAAe3+W,WAAWnk2B,IAG5BA,EAAM,EACf,CAGA,IAAI+itC,EAAUp4tC,EAAKqggC,eAAexq2B,GAElC,OAAIuikC,GAAWA,EAAQhxvB,QACdgxvB,EAAQhxvB,QAAU,GAGpB+vvB,GAAen3tC,EAAKike,MAAMpuU,EACnC,CACF,CAKA,IAAIwikC,EAzFN,SAAqBf,EAAcC,GACjC,IAAIlomC,EAAMiomC,EAAazmuC,OAEvB,GAAIw+H,IAAQkomC,EAAa1muC,OACvB,OAAO,EAGT,IAAK,IAAIO,EAAI,EAAGA,EAAIi+H,EAAKj+H,IAAK,CAC5B,IAAIknuC,EAAUhB,EAAalmuC,GACvBqvpC,EAAU82E,EAAanmuC,GAE3B,GAAIknuC,EAAQt4tC,KAAKike,MAAMq0vB,EAAQzikC,aAAe4q/B,EAAQzgpC,KAAKike,MAAMw8qB,EAAQ5q/B,WACvE,OAAO,CAEX,CAEA,OAAO,CACT,CAwEc0ikC,CAAYjB,EAAcC,GAClCiB,EAAwB,CAAC,EAE7B,IAAKH,EAIH,IAAK,IAAIjnuC,EAAI,EAAGA,EAAImmuC,EAAa1muC,OAAQO,IAAK,CAC5C,IAAIqvpC,EAAU82E,EAAanmuC,GACvBi5I,EAAKo2gC,EAAQzgpC,KAAKkz+B,iBAAiButK,EAAQ5q/B,WAE3CxrB,IACFmulC,EAAsBnulC,EAAGtuH,KAAM,EAEnC,CAGF,SAAS08sC,EAAep/6B,EAAU4kN,GAChC,IAAIq6tB,EAAUhB,EAAar5tB,GACvBwipB,EAAU82E,EAAal+6B,GACvB8ggB,EAAYsmW,EAAQzgpC,KAAKy0iC,UAEzBntB,EAAQgxM,EAAQt4tC,KAAKkz+B,iBAAiBolP,EAAQzikC,WAC9CsmhC,EAAQ17B,EAAQzgpC,KAAKkz+B,iBAAiButK,EAAQ5q/B,WAE9Cyx3B,IAAU60J,EAMd70J,GAASkxM,EAAsBlxM,EAAMvrgC,KAIjCogqC,IAIFhzN,GAAcgzN,GAEV70J,GACFn+D,GAAcm+D,GAEd,GAASA,GACTwwM,GAAoB,EACpBtD,GAAoBmC,GAAYrvM,GAAQqvM,GAAYx6C,GAAQ17B,EAAQp+7B,OAAQ83lB,EAAW9ggB,EAAUm+6B,IAEjGJ,GAAcj7C,EAAOhiY,EAAW9ggB,IAtBlC8i4B,GAlIN,SAA8B9xiC,EAAIwrB,EAAW290B,GAC3C,IAAImD,EAAkBd,GAAmB,SAAUrC,EAAa390B,GAChE8g1B,GAAmBts2B,EAAGgsD,UAAS,SAAU37G,GACvC,GAAIA,aAAiB,GAAa,CAChC,IAAI285B,Exb8HH,SAAqBht2B,GAC1B,OAAOur2B,GAAgBvr2B,GAAIgt2B,QAC7B,CwbhIqBqhP,CAAYh+oC,GAEvB285B,GACF385B,EAAM4u4B,YAAY,CAChBzk9B,MAAOwy+B,GACNV,EAEP,CACF,GACF,CAqHegiP,CAAqBx8C,EAAO17B,EAAQ5q/B,UAAWskpB,EA0B5D,CAEA,IAAI,GAAWm9a,EAAcC,EAAcQ,GAAgB,EAAMM,GAAQN,GAAgB,EAAOM,GAAQ,KAAM,YAAYt5pC,OAAO05pC,GAAgB7oL,iBAAgB,SAAUv2vB,EAAUu/6B,GACnL,IAAIn4E,EAAU82E,EAAal+6B,GACvB2sC,EAAUy6zB,EAAQzgpC,KAClBm6yB,EAAYn0d,EAAQyutB,UACpB0nI,EAAQn21B,EAAQktpB,iBAAiButK,EAAQ5q/B,WACzCgjkC,EAAax7sC,GAAOwC,EAAI+4sC,GAAY,SAAUtt3B,GAChD,OAAOgs3B,EAAahs3B,GAAKtrW,KAAKkz+B,iBAAiBokP,EAAahs3B,GAAKz1M,UACnE,KAAI,SAAUyx3B,GACZ,OAAOA,GAASA,IAAU60J,IAAUq8C,EAAsBlxM,EAAMvrgC,GAClE,IAEIogqC,IACFhzN,GAAcgzN,GAEV08C,EAAWhouC,QAEb,EAAKgouC,GAAY,SAAUvxM,GACzBn+D,GAAcm+D,GACd,GAASA,EACX,IACAwwM,GAAoB,EACpBtD,GAAoBmC,GAAYkC,GAAalC,GAAYx6C,GAAQ17B,EAAQp+7B,OAAQ83lB,EAAW9ggB,EAAUm+6B,IAEtGJ,GAAcj7C,EAAOhiY,EAAWsmW,EAAQ5q/B,WAI9C,IAAGi64B,iBAAgB,SAAUnjC,EAAY1ugB,GACvC,IAAIq6tB,EAAUhB,EAAar5tB,GACvBqphB,EAAQgxM,EAAQt4tC,KAAKkz+B,iBAAiBolP,EAAQzikC,WAElD,IAAIyx3B,IAASkxM,EAAsBlxM,EAAMvrgC,IAAzC,CAIA,IAAI+8sC,EAAaz7sC,GAAOwC,EAAI8s/B,GAAY,SAAUrhqB,GAChD,OAAOis3B,EAAajs3B,GAAKtrW,KAAKkz+B,iBAAiBqkP,EAAajs3B,GAAKz1M,UACnE,KAAI,SAAUxrB,GACZ,OAAOA,GAAMA,IAAOi94B,CACtB,IACIyxM,EAAWxB,EAAa5qN,EAAW,IAAI3sgC,KAAKy0iC,UAE5CqkL,EAAWjouC,SACb,EAAKiouC,GAAY,SAAU38C,GACzB,OAAOhzN,GAAcgzN,EACvB,IAEI70J,GACFn+D,GAAcm+D,GAEd,GAASA,GACTwwM,GAAoB,EACpBtD,GAAoBmC,GAAYrvM,GAAQqvM,GAAYmC,GAAaR,EAAQj2gC,OACzE02gC,EAAUpsN,EAAW,GAAI6qN,IAEzB,EAAKsB,GAAY,SAAU38C,GACzB,OAAOi7C,GAAcj7C,EAAO48C,EAAUpsN,EAAW,GACnD,IAxBJ,CA4BF,IAAGqjC,kBAAiB,SAAUrjC,EAAYisN,GAGxC,IAAI,GAAWA,EAAYjsN,GAAY,SAAUZ,GAC/C,OAAOurN,EAAavrN,GAAQ/rgC,KAAKike,MAAMqzvB,EAAavrN,GAAQl22B,UAC9D,IAAG,SAAUk22B,GACX,OAAOwrN,EAAaxrN,GAAQ/rgC,KAAKike,MAAMszvB,EAAaxrN,GAAQl22B,UAC9D,IAAG92F,QAAO,SAAUs6O,EAAU4kN,GAE5Bw6tB,EAAe9rN,EAAWtztB,GAAWu/6B,EAAW36tB,GAClD,IAAG1rH,SACL,IAAGA,UAECul1B,GACF,EAAKn6R,GAAS,SAAUx26B,GACtB,IACIqs9B,EADOrs9B,EAAGnnB,KACSy0iC,UACnB18/B,EAAOy77B,GAAe/z8B,EAAIgz8B,qBAAqBe,GAC/CltB,EAAeuvB,GAAmB,SAAUrC,EAAa,GAEzDz77B,GAAQy77B,EAAY8C,sBAAwBhwB,GAAgBA,EAAazw6B,SAAW,GACtFkC,EAAK6zQ,MAAMv1H,UAAS,SAAUhsD,GACxBA,aAAc,KAASA,EAAG040B,UAAUly9B,QAGtCw5I,EAAGi/0B,YAAY,CACbzk9B,MAAO,CACLu3H,QAAS,IAEVkq1B,EAEP,GAEJ,GAEJ,CAEA,SAAS0yQ,GAAuB1rd,GAG9B,OAFgBA,EAAOlllB,SAAS,uBAAuBz0L,IAAI,cAIlD25wB,EAAOvxvB,EAIlB,CAEA,SAASk9sC,GAA8BC,GACrC,OAAI/2tC,GAAQ+2tC,GAEHA,EAAUn8rC,OAAO1/B,KAAK,KAGxB67tC,CACT,CAEA,SAASC,GAAuBn5tC,GAC9B,GAAIA,EAAKy0iC,UACP,OAAOz0iC,EAAKy0iC,UAAUrs3B,SAAS,uBAAuBz0L,IAAI,cAE9D,CA6HA,SAASyluC,GAAY9rd,EAAQsnN,GAC3B,IAAK,IAAIxj+B,EAAI,EAAGA,EAAIk8wB,EAAOz8wB,OAAQO,IAGjC,GAFkC,MAAtBwj+B,EAAO8Y,aAAuB9Y,EAAO8Y,cAAgBpgO,EAAOl8wB,GAAGs8+B,aAAkC,MAAnB9Y,EAAOrnN,UAAoBqnN,EAAOrnN,WAAaD,EAAOl8wB,GAAG2qB,GAGjJ,OAAO3qB,CAGb,CCveA+96B,GAAI,CCjBG,SAAiBoxJ,GACtBA,EAAUxyG,gBAAgB,SAAU,GACtC,IDkBA5+C,GAAI,CEpBG,SAAiBoxJ,GACtBA,EAAUxyG,gBAAgB,MAAO,GACnC,IF4BA5+C,GAAI,CG1BG,SAAiBoxJ,GACtBA,EAAU/xB,kBAAkB,IAC5B+xB,EAAUjyB,oBAAoBpzO,IAC9BqlQ,EAAUh0B,eAAe,GAAa,QAAQ,IAC9Cg0B,EAAU9zB,eAAe,CACvBx/N,WAAY,OACZx7wB,MAAO,SAAU+h7B,GACf,IAAIxz+B,EAAOwz+B,EAAYx+2B,UAEnB2tmB,EAAY6wQ,EAAYprzB,SAAS,aAAag0zB,eAE9Cz5Q,IAAcA,EAAUirC,SAG1BjrC,EAAUirC,OAAS5twB,EAAKsshC,UAAU,SAAS1+5B,MAG7C5tH,EAAK6rhC,UAAU,kBAAmBlpT,EACpC,IAGF49V,EAAU70B,kBAAkB60B,EAAU/gC,SAASC,UAAUE,UAAWulD,GAAW,QACjF,ECtBO,SAAiB3kB,GACtBA,EAAU/xB,kBAAkB,IAC5B+xB,EAAUjyB,oBAAoBv6O,IAC9BwsQ,EAAUh0B,eAAeg0B,EAAU/gC,SAASI,OAAOC,OAAQ,GAAanu6B,GAAQ,QAEhF6u8B,EAAUh0B,eAAeg0B,EAAU/gC,SAASI,OAAOE,mBAAoB6mB,GAAwB,QAE/F4Z,EAAU70B,kBAAkB60B,EAAU/gC,SAASC,UAAUE,UAAWulD,GAAW,QAW/E3kB,EAAUr0B,eAAe,CACvBnviC,KAAM,kBACNkyB,MAAO,kBACP8vC,OAAQ,WACP,SAAUz5C,EAASwu8B,GACpB,IAAIpnxB,EAAgBpnL,EAAQonL,eAAiB,SAC7ConxB,EAAQwe,cAAc,CACpBhe,SAAU5nxB,EACVjtH,MAAOn6D,IACN,SAAU+t8B,GACP/t8B,EAAQmlkC,UACVp3H,EAAep4xB,KAAK685B,oBAAoBxykC,EAAQmlkC,SAEpD,GACF,GACF,EC/BO,SAAiBlqB,GACtBA,EAAU/xB,kBAAkB,IAC5B+xB,EAAUjyB,oBAAoBpvO,IAC9B01N,GAA6B,MAAO2rC,EAAUr0B,gBAC9Cq0B,EAAUh0B,eAAe/xG,GAAMmzJ,GAAW,QAC1CptB,EAAU70B,kBAAkB4iD,GAAW,QACvC/tB,EAAU70B,kBCXH,CACLz+N,WDU6C,MCT7Cx7wB,MAAO,SAAU+h7B,EAAa1f,GAC5B,IAAI9z9B,EAAOwz+B,EAAYx+2B,UACvBh1H,EAAKy4iC,YAAW,SAAUntsB,GAExB,IAAI07sB,EAAWhnjC,EAAK42iC,aAAa,SAC7ByiL,EAAWr5tC,EAAKrM,IAAIqzjC,EAAU17sB,GAElC,QAAIx3T,GAASulrC,KAAcv8rC,MAAMu8rC,IAAaA,EAAW,EAK3D,GACF,GDHJ,EETO,SAAiB94J,GAEtBpxJ,GAAI,IACJoxJ,EAAUjyB,oBAAoB/xO,IAC9BgkQ,EAAU/xB,kBAAkB,IAC5B+xB,EAAUh0B,eAAe,GAAa,WACxC,ECJO,SAAiBg0B,GACtBpxJ,GAAI,IACJoxJ,EAAU/xB,kBAAkB,IAC5B+xB,EAAUjyB,oBAAoBgrL,IAC9B/4J,EAAUh0B,eAAe42D,IACzB5iC,EAAU70B,kBAAkB4iD,GAAW,UACvC/tB,EAAU/0B,qBAAqB,GACjC,ECPO,SAAiB+0B,GACtBpxJ,GAAI,IACJoxJ,EAAU/xB,kBAAkB,IAC5B+xB,EAAUjyB,oBAAoB,IAC9BiyB,EAAUh0B,eAAe6sE,IACzB74C,EAAU70B,kBAAkB60B,EAAU/gC,SAASC,UAAUE,UAAWm5E,IACpElkF,GAA6B,MAAO2rC,EAAUr0B,eAChD,ECTO,SAAiBq0B,GACtBA,EAAU/xB,kBAAkB,IAC5B+xB,EAAUjyB,oBAAoBirL,IAC9Bh5J,EAAUh0B,eAAevvP,IACzBujR,EAAU9zB,eAAe+5E,ICRpB,SAA2BjmD,GAChCA,EAAUr0B,eAAe,CACvBnviC,KAAM,wBACNkyB,MAAO,wBACP8vC,OAAQ,WACP,SAAUz5C,EAASwu8B,GACpBA,EAAQwe,cAAc,CACpBhe,SAAU,SACViD,QAAS,OACT934B,MAAOn6D,IACN,SAAUku9B,GACX,IAAI390B,EAAYvwI,EAAQuwI,UAEpBh8E,EADO255B,EAAYx+2B,UAAUu1R,KACjBi2tB,mBAAmB3q9B,GACnCh8E,EAAKgkiC,UAAYhkiC,EAAKgkiC,QACxB,GACF,IACAt9C,EAAUr0B,eAAe,CACvBnviC,KAAM,WACNkyB,MAAO,WAKP8vC,OAAQ,SACP,SAAUz5C,EAASwu8B,EAASr07B,GAC7Bq07B,EAAQwe,cAAc,CACpBhe,SAAU,SACViD,QAAS,OACT934B,MAAOn6D,IACN,SAAUku9B,GACX,IACI391B,EAAMsn+B,GADK3pI,EAAYjx3B,iBACaj9F,OAASiZ,EAAWkB,GAC5D+z8B,EAAYhi9B,WAAagi9B,EAAYhi9B,UAAUqkH,EAAIpmH,QACnD+j9B,EAAY7h9B,SAAW6h9B,EAAY7h9B,QAAQkkH,EAAI1lH,KACjD,GACF,GACF,CD5BEqpsC,CAAkBj5J,EACpB,EENO,SAAiBA,GACtBA,EAAUjyB,oBAAoB7lO,IAC9B83P,EAAU/xB,kBAAkB,IAC5B+xB,EAAU9zB,eAAegtL,IACzBl5J,EAAUh0B,eAAemtL,I9ONpB,SAA8Bn5J,GACnC,IAAK,IAAInvkC,EAAI,EAAGA,EAAIq1nC,GAAY51nC,OAAQO,IACtCmvkC,EAAUr0B,eAAe,CACvBnviC,KAAM0pnC,GAAYr1nC,GAClB2tE,OAAQ,cACPzrB,IAGLithC,EAAUr0B,eAAe,CACvBnviC,KAAM,oBACNgiE,OAAQ,eACP,SAAUz5C,EAASwu8B,GACpBA,EAAQwe,cAAc,CACpBhe,SAAU,SACViD,QAAS,UACT934B,MAAOn6D,IAGT,SAA0BigG,EAAO/3G,GAC/B,IACIs47B,EAAa,GAA0Bxg7B,EAD/B,CAAC,oBAAqB,qBACyBigG,GAE3D,GAAIug1B,EAAY,CACd,IAAI6zR,EAAiBp0mC,EAAM2igC,cAEvByxG,IACFr0sC,EAAQ64F,UAAY,GAAqBw7mC,EAAgB7zR,EAAWjs3B,MAAQ,SAAW,aAGzF0rC,EAAMqigC,cAAc9hL,EAAWjs3B,KACjC,CACF,GACF,GACF,C8O1BE+/oC,CAAqBr5J,EACvB,EjNMO,SAAiBA,GACtBA,EAAU/xB,kBAAkB,IAC5B+xB,EAAUjyB,oBAAoBurL,IAC9Bt5J,EAAU70B,kBAAkBusF,IAC5B13D,EAAU9zB,eAAe8rF,IACzBh4D,EAAU9zB,eAAe,IACzB8zB,EAAUh0B,eAAe,IACzBg0B,EAAUh0B,eAAeg0B,EAAU/gC,SAASI,OAAOK,kBAAmB,IACtEsgC,EAAUh0B,eAAe,IACzBg0B,EAAUp0B,yBAAyB,YAAa,CAC9Cjj5B,WAAY,GAAKA,WACjBx4J,OAAQ,KAGV6vkC,EAAUr0B,eAAe,CACvBnviC,KAAM,qBACNkyB,MAAO,qBACP8vC,OAAQ,6BACPzrB,IACHithC,EAAUr0B,eAAe,CACvBnviC,KAAM,uBACNkyB,MAAO,uBACP8vC,OAAQ,+BACPzrB,IAEHithC,EAAUr0B,eAAerD,IAAY,SAAUvjhC,EAASwu8B,EAASr07B,GAC/Dq07B,EAAQwe,cAAc,CACpBhe,SAAU,SACV704B,MAAOn6D,IACN,SAAUku9B,GACX,IACI391B,EAAMsn+B,GADK3pI,EAAYjx3B,iBACaj9F,OAASiZ,EAAWkB,GAC5D+z8B,EAAYhi9B,WAAagi9B,EAAYhi9B,UAAUqkH,EAAIpmH,QACnD+j9B,EAAY7h9B,SAAW6h9B,EAAY7h9B,QAAQkkH,EAAI1lH,KACjD,GACF,GACF,EkNnDO,SAAiBowiC,GACtBA,EAAU/xB,kBAAkB,IAC5B+xB,EAAUjyB,oBAAoBwrL,GAChC,ECDO,SAAiBv5J,GACtBA,EAAU/xB,kBAAkB,IAC5B+xB,EAAUjyB,oBAAoByrL,IAC9Bx5J,EAAUh0B,eAAem/F,IACzBnrE,EAAU70B,kBAAkB4iD,GAAW,UACzC,ECJO,SAAiB/tB,GACtBpxJ,GAAI,IACJoxJ,EAAU/xB,kBAAkB,IAC5B+xB,EAAUjyB,oBAAoB0rL,IAC9Bz5J,EAAU9zB,eAAe8zB,EAAU/gC,SAASI,OAAOO,MAAO,GAC5D,ECNO,SAAiBogC,GACtBA,EAAU/xB,kBAAkB,IAC5B+xB,EAAUjyB,oBAAoB2rL,IAC9B15J,EAAUh0B,eAAe2wG,IACzB38E,EAAU9zB,eAAegzG,IACzBl/E,EAAUr0B,eAAe,CACvBnviC,KAAM,WACNkyB,MAAO,WAEP8vC,OAAQ,WACP,SAAUz5C,EAASwu8B,GACpBA,EAAQwe,cAAc,CACpBhe,SAAU,SACViD,QAAS,SACT934B,MAAOn6D,IACN,SAAUku9B,GACXA,EAAYkpK,gBAAgBp3nC,EAAQuwI,UAAW,CAACvwI,EAAQ62nC,OAAQ72nC,EAAQ82nC,QAC1E,GACF,GACF,ECnBO,SAAiB77E,GACtBA,EAAUjyB,oBAAoB4rL,IAC9B35J,EAAU/xB,kBAAkB,IAC5B+xB,EAAUh0B,eAAe80G,IACzB9gF,EAAUnzB,kBAAkB21G,GAC9B,ECJO,SAAiBxiF,GACtBA,EAAU/xB,kBAAkB,IAC5B+xB,EAAUjyB,oBAAoB6rL,IAC9B55J,EAAU/0B,qBAAqB,IAC/B+0B,EAAU9zB,eAAe,IACzB8zB,EAAUh0B,eAAe,GAC3B,ECRO,SAAiBg0B,GACtBA,EAAU/xB,kBAAkB,IAC5B+xB,EAAUjyB,oBAAoB8rL,IAC9B75J,EAAUh0B,eAAe,GAAa,iBACxC,ECHO,SAAiBg0B,GACtBA,EAAU/xB,kBAAkB,IAC5B+xB,EAAUjyB,oBAAoB+rL,IAC9B95J,EAAUh0B,eAAe,IACzBg0B,EAAU9zB,eAAe,GAC3B,ECPO,SAAiB8zB,GACtBA,EAAU/xB,kBAAkB,IAC5B+xB,EAAUjyB,oBAAoBgsL,GAChC,ECDO,SAAiB/5J,GACtBA,EAAU/xB,kBAAkB,IAC5B+xB,EAAUjyB,oBAAoBisL,IAC9Bh6J,EAAUh0B,eAAeg0B,EAAU/gC,SAASI,OAAOC,OAAQrlG,GAAM9o0B,GAAQ,iBAEzE6u8B,EAAUh0B,eAAeg0B,EAAU/gC,SAASI,OAAOE,mBAAoB6mB,GAAwB,gBACjG,ECxBO,SAAiB4Z,GACtBA,EAAU/xB,kBAAkB,IAC5B+xB,EAAUjyB,oBAAoBksL,IAC9Bj6J,EAAUh0B,eAAempH,IACzBn1F,EAAU70B,kBAAkB4iD,GAAW,cACzC,ECgBO,SAAiB/tB,GACtBA,EAAU/xB,kBAAkB,IAC5B+xB,EAAUjyB,oBAAoBmsL,IAC9Bl6J,EAAUh0B,eAAe/xG,GAAMg9N,GAAgB,aAC/Cj3F,EAAU70B,kBAAkBlxG,GAAM8zJ,GAAY,aAC9C/tB,EAAU9zB,eAAe2rH,InKNpB,SAA+B73F,GACpCA,EAAUr0B,eAAe,CACvBnviC,KAAM65pC,GACN73lC,OAAQ,eACP,SAAUz5C,EAASwu8B,GACpBA,EAAQwe,cAAc,CACpBhe,SAAU,SACViD,QAAS,WACT934B,MAAOn6D,IAGT,SAA0BigG,EAAO/3G,GAC/B,IAAIs47B,EAAa6+K,GAAmBr/lC,EAAS,CAACsxoC,IAAsBrxiC,GAEpE,GAAIug1B,EAAY,CACd,IAAI6zR,EAAiBp0mC,EAAM2igC,cAEvByxG,IACFr0sC,EAAQ64F,UAAY6mgC,GAAc20G,EAAgB7zR,EAAWjs3B,MAAQ,SAAW,aAGlF0rC,EAAMqigC,cAAc9hL,EAAWjs3B,KACjC,CACF,GACF,IACA0m/B,EAAUr0B,eAAe,CACvBnviC,KAAM85pC,GACN93lC,OAAQ,SACP,SAAUz5C,EAASwu8B,EAASr07B,GAE7Bna,EAAUu0X,EAAO,CAAC,EAAGv0X,GACrBwu8B,EAAQwe,cAAc,CACpBhe,SAAU,SACViD,QAAS,WACT934B,MAAOn6D,IAGT,SAAyBigG,GACvB,IAAIug1B,EAAa6+K,GAAmBr/lC,EAAS,CAACuxoC,IAAmBtxiC,GAE7Dug1B,IACFxg7B,EAAQuwI,UAAYiwyB,EAAWjs3B,KAAKg8E,UAExC,IAOAp2H,EAAIu1/B,eAAen7oB,EAAOv0X,EAAS,CACjCvoB,KAAM,cAEV,IACAwjkC,EAAUr0B,eAAe,CACvBnviC,KAxDqB,sBAyDrBgiE,OAAQ,eACP,SAAUz5C,EAASwu8B,EAASr07B,GAC7Bna,EAAUu0X,EAAO,CAAC,EAAGv0X,GAMrBma,EAAIu1/B,eAAen7oB,EAAOv0X,EAAS,CACjCvoB,KAAM,aAEV,GACF,CmK7DE29tC,CAAsBn6J,EACxB,ECZO,SAAiBA,GACtBA,EAAU/xB,kBAAkB,IAC5B+xB,EAAUjyB,oBAAoBqsL,GAChC,IzByCAxrT,I0B3CO,SAAiBoxJ,GACtBpxJ,GAAI,IACJA,GAAI,GACN,I1BkDAA,IzGdO,SAAiBoxJ,GACtBpxJ,GAAI,IACJ,GAASuyL,yBAAyB,mBAAoB,IACtDnhC,EAAUp0B,yBAAyB,QAAS,IAC5Co0B,EAAUpyB,uBAAuB,IACjCoyB,EAAUnyB,sBAAsB0kI,IAEhCx9E,GAAiB/0B,EAAW,QAAS2vG,GAAgB0C,IACrDt9E,GAAiB/0B,EAAW,SAAU4vG,GAAiB0C,IACvDtyG,EAAUnyB,sBAAsB,IAChCmyB,EAAUnyB,sBAAsB,IAChCmyB,EAAUh0B,eAAe/xG,GAAM,GAAgB,OACjD,IyGUArrB,GAAI,IAOJA,IjG5CO,SAAiBoxJ,GACtBpxJ,GAAI,IACJ,GAASuyL,yBAAyB,oBAAqB,IACvDnhC,EAAUnyB,sBAAsB0lI,IAEhCvzG,EAAUnyB,sBAAsB,IAChCmyB,EAAUpyB,uBAAuB,IACjCmnD,GAAiB/0B,EAAW,SAAU,GAAiB,GAAgBnviB,eACvEmviB,EAAUp0B,yBAAyB,SAAU,GAC/C,IiG4CAh9H,GAAI,IAQJA,I2BrFO,SAAiBoxJ,GACtBA,EAAUpyB,uBAAuB,IACjCoyB,EAAUnyB,sBAAsB,IAChCmyB,EAAUp0B,yBAAyB,WAAY,GACjD,I3ByFAh9H,I4B7FO,SAAiBoxJ,GACtBA,EAAUpyB,uBAAuBqrI,IACjCj5G,EAAUnyB,sBAAsBysI,IAChCt6G,EAAU/0B,sBAAqB,SAAUn9+B,GACvC,IAAIusqC,EAAgBvsqC,EAAOwsqC,QAOvB14tC,GAAQy4tC,GACLA,EAAc,IAAOA,EAAc,GAAG516B,SAOzC32P,EAAOwsqC,QAAU,CAACxsqC,EAAOwsqC,QAAQ,IANjCxsqC,EAAOwsqC,QAAU,CAAC,CAChB716B,SAAU416B,IAOLA,IAAkBA,EAAc516B,WACzC32P,EAAOwsqC,QAAU,CAAC,CAChB716B,SAAU,CAAC416B,KAGjB,GACF,I5BuEAzrT,I6B1FO,SAAiBoxJ,GACtBA,EAAUpyB,uBAAuB,IACjCoyB,EAAUnyB,sBAAsB,IAChCy2I,GAAgB,cAAe,IAC/BA,GAAgB,YAAa,IAC7BA,GAAgB,WAAY,IAC5BA,GAAgB,WAAYi2C,IAC5Bj2C,GAAgB,UAAWk2C,IAC3B5rT,GAAI,GACN,I7BsFAA,I8BrGO,SAAiBoxJ,GACtBpxJ,GAAI,IACJoxJ,EAAUpyB,uBAAuB,IACjCoyB,EAAUnyB,sBAAsB,IAUhCmyB,EAAUr0B,eAAe,CACvBnviC,KAAM,UACNkyB,MAAO,UACP8vC,OAAQ,2BACPzrB,IACHithC,EAAUr0B,eAAe,CACvBnviC,KAAM,UACNkyB,MAAO,UACP8vC,OAAQ,2BACPzrB,GACL,I9BuFA673B,GAAI,IASJA,I+BpHO,SAAiBoxJ,GACtBA,EAAUnyB,sBAAsB,IAChCmyB,EAAUpyB,uBAAuB,IACjCoyB,EAAU/0B,qBAAqButJ,IAC/Bx4H,EAAU9zB,eAAe8zB,EAAU/gC,SAASI,OAAOO,MAAO06J,IAC1Dt6H,EAAUr0B,eAAe,CACvBnviC,KAAM,QACNkyB,MAAO,QACP8vC,OAAQ,iBACP,SAAUz5C,EAASwu8B,GACpBA,EAAQwe,cAAc,CACpBhe,SAAU,QACV704B,MAAOn6D,IACN,SAAUq1qC,GACXA,EAAWwC,SAAS73qC,EAAQivU,MAC9B,GACF,IAuBAgsuB,EAAUr0B,eAAe,CACvBnviC,KAAM,cACNkyB,MAAO,gBACP8vC,OAAQ,QACPzrB,IACHithC,EAAUr0B,eAAe,CACvBnviC,KAAM,WACNkyB,MAAO,WACP8vC,OAAQ,QACPzrB,IACHuxoC,GAAgB,QAASm2C,GAC3B,I/BuEA7rT,I1DyEO,SAAiBoxJ,GACtBA,EAAUpyB,uBAAuBqvJ,IACjCj9H,EAAUnyB,sBAAsBuvJ,GAClC,I0DvEAxuR,IgCpJO,SAAiBoxJ,GACtBA,EAAUpyB,uBAAuB,IACjCoyB,EAAUnyB,sBAAsB,IAChCmyB,EAAU35E,yBAAyB,YAAY,WAE7C,MAAO,QACT,ICSK,SAA+B25E,GACpCA,EAAUr0B,eAAe,CACvBnviC,KAAM,iBACNkyB,MAAO,kBACP8vC,OAAQ,qBACP,SAAUz5C,EAASwu8B,EAASr07B,GAC7B,IAAIo39B,EAAgB/iC,EAAQnpoB,aAAa,YAoBzC,OAlBIksqB,GAAyC,MAAxBvx+B,EAAQuvS,eAC3BgisB,EAAcwnM,gBAAgB/4qC,EAAQuvS,eAEjCgisB,EAAcljgC,IAAI,QAAQ,IAASkjgC,EAAcynM,cAAgBznM,EAAc4nM,iBAClF5nM,EAAc0nM,cAAa,GAE3B9+pC,EAAIu1/B,eAAe,CACjBj4hC,KAAM,qBACNqmsC,WAAW,EACX70rC,KAAM+W,EAAQ/W,SAMpBul9B,EAAQ07B,YAAY,WAAY,CAC9BgF,aAAcqC,EAAcljgC,IAAI,gBAAgB,KAE3C,EAAS,CACdkhU,aAAcgisB,EAAcxo8B,OAAOwmQ,cAClCvvS,EACL,IACAi7iC,EAAUr0B,eAAe,CACvBnviC,KAAM,qBACNkyB,MAAO,sBACP8vC,OAAQ,WACP,SAAUz5C,EAASwu8B,GACpB,IAAI+iC,EAAgB/iC,EAAQnpoB,aAAa,YAErCksqB,GAAsC,MAArBvx+B,EAAQ89qC,WAC3BvsM,EAAc0nM,aAAaj5qC,EAAQ89qC,UAEvC,GACF,CDjDE63B,CAAsB16J,GACtBA,EAAU/0B,qBAAqB,GACjC,IhCgJAr8H,IkC1JO,SAAiBoxJ,GACtBA,EAAUpyB,uBAAuB,IACjCoyB,EAAUnyB,sBAAsB,IAChCmyB,EAAU/0B,sBAAqB,SAAU56gB,GACnCs0qB,GAAoBt0qB,EAAI08O,OAAQ,eAElC18O,EAAI6oe,UAAY7oe,EAAI6oe,WAAa,CAAC,EAEtC,GACF,IlCsJAtqF,ImC/JO,SAAiBoxJ,GACtBA,EAAUpyB,uBAAuB,IACjCoyB,EAAUnyB,sBAAsB,IAChCmyB,EAAU/0B,sBAAqB,SAAU56gB,GACnCs0qB,GAAoBt0qB,EAAI08O,OAAQ,cAElC18O,EAAI8oe,SAAW9oe,EAAI8oe,UAAY,CAAC,EAEpC,GACF,InC2JAvqF,IoClJO,SAAiBoxJ,GACtBA,EAAUpyB,uBAAuB,IACjCoyB,EAAUnyB,sBAAsB,IAChCmyB,EAAU/0B,sBAAqB,SAAU56gB,GACnCs0qB,GAAoBt0qB,EAAI08O,OAAQ,cAElC18O,EAAI+oe,SAAW/oe,EAAI+oe,UAAY,CAAC,EAEpC,GACF,IpC8IAxqF,IqCvJO,SAAiBoxJ,GACtBpxJ,GAAI,IACJA,GAAI,GACN,IrCsJAA,IsCzJO,SAAiBoxJ,GACtBpxJ,GAAI,IACJA,GAAI,GAEN,ItC2JAA,GAAI,IAKJA,GAAI,IAEJA,IuCtKO,SAAiBoxJ,GACtBpxJ,GAAI,IACJA,GAAI,GAEN,IvCuKAA,GAAI,IAKJA,GAAI,IAKJA,IwCtLO,SAAiBoxJ,GACtBA,EAAU/0B,qBAAqBi+K,IAC/BlpJ,EAAU9zB,eAAe8zB,EAAU/gC,SAASI,OAAOS,KAAMunL,GAC3D,IxC0LAz4S,IyC7LO,SAAiBoxJ,GACtBA,EAAUnzB,kBAAkBs+K,IAC5BnrJ,EAAUnzB,kBAAkBu+K,GAC9B,IzC2LAx8S,INvHO,SAAiBoxJ,GACtBA,EAAUpyB,uBAAuB69K,IACjCzrJ,EAAUnyB,sBAAsB89K,GAClC,IM2HA/8S,IDuVO,SAAoCoxJ,GACzCA,EAAUx0B,wBAAwB,uBAAuB,SAAUmvL,EAASz7rC,EAAK5G,GAC/E,EAAKo47B,GAAiBp47B,EAAO6qgC,mBAAmB,SAAUy3L,GACxD,EAAKlqQ,GAAiBkqQ,EAAS1xtC,KAAK,SAAUmr9B,GAG5C,IAFA,IAAItnN,EAASz0uB,EAAO830B,cAEXv/2B,EAAI,EAAGA,EAAIk8wB,EAAOz8wB,OAAQO,KACP,MAAtBwj+B,EAAO8Y,aAAuB9Y,EAAO8Y,cAAgBpgO,EAAOl8wB,GAAGs8+B,aAAkC,MAAnB9Y,EAAOrnN,UAAoBqnN,EAAOrnN,WAAaD,EAAOl8wB,GAAG2qB,MACzIuxvB,EAAOl8wB,GAAGgnhC,KAAoC,EAGpD,GACF,GACF,IACAmoD,EAAUx0B,wBAAwB,qBAAqB,SAAUj4E,EAASr07B,EAAK5G,GAE7E,IAAIuisC,EAActE,GAAkCr3rC,GAEpD,GAAI27rC,EAAYC,WAAaxisC,EAAO830B,eAAiB930B,EAAO429B,cAAe,CAEzE,IAAIg0C,EAAgB5qgC,EAAO6qgC,iBAE3B,GAAID,EACF,EAAKxyE,GAAiBwyE,IAAgB,SAAU7ygB,IA1DxD,SAAiC6ygB,EAAe23L,EAAavisC,EAAQ4G,GACnE,IAAIlxB,EAAO,GACP9E,EAAK,GACT,EAAKwn9B,GAAiBwyE,EAAcl1hC,OAAO,SAAUqm9B,GACnD,IAAItpnB,EAAM8t3B,GAAYgC,EAAYC,UAAWzmQ,GAEzCtpnB,GAAO,GACT/8V,EAAKlc,KAAK,CACR8kuC,YAAaiE,EAAYE,gBAAgBhw3B,GACzCtrW,KAAMo7tC,EAAYh4qB,QAAQ93M,GAE1BjpJ,OAAQ82gC,GAAuBiC,EAAYh4qB,QAAQ93M,IACnDnjB,IAAKysoB,EAAO9wzB,WAGlB,IACA,EAAKmtzB,GAAiBwyE,EAAch6hC,KAAK,SAAUmr9B,GACjD,IAAItpnB,EAAM8t3B,GAAYvgsC,EAAO830B,cAAeikH,GAE5C,GAAItpnB,GAAO,EAAG,CACZ,IAAItrW,EAAO64B,EAAO830B,cAAcrlgB,GAAKt2O,UACrCvrH,EAAGpX,KAAK,CACN8kuC,YAAaiE,EAAYE,gBAAgBhw3B,GACzCtrW,KAAMA,EACNqiN,OAAQ82gC,GAAuBn5tC,GAC/BmoV,IAAKysoB,EAAO9wzB,WAEhB,CACF,IAEIv1J,EAAK1d,OAAS,GAAK4Y,EAAG5Y,OAAS,GACjCwmuC,GAAkB9otC,EAAM9E,EAAIg2B,EAEhC,CA0BU87rC,CAAwB3qsB,EAAKwqsB,EAAavisC,EAAQ4G,EACpD,QACK,CAEL,IAAI+7rC,EApMZ,SAAqCJ,EAAavisC,GAChD,IAAI4isC,EAAgB//R,KAChBggS,EAAahgS,KAGbigS,EAAqBjgS,KAmHzB,OAlHA,EAAK0/R,EAAYC,WAAW,SAAU/td,EAAQhia,GAC5C,IAAIsw3B,EAAiBR,EAAYE,gBAAgBhw3B,GAC7C83M,EAAUg4qB,EAAYh4qB,QAAQ93M,GAC9Buw3B,EAAgB7C,GAAuB1rd,GACvCwud,EAAmB7C,GAA8B4C,GACrDH,EAAWj/tC,IAAIq/tC,EAAkB,CAC/B3E,YAAayE,EACb57tC,KAAMojjB,IAGJjhjB,GAAQ05tC,IAEV,EAAKA,GAAe,SAAUxmtC,GAC5BsmtC,EAAmBl/tC,IAAI4Y,EAAK,CAC1BA,IAAKymtC,EACL3E,YAAayE,EACb57tC,KAAMojjB,GAEV,GAEJ,IAQA,EAAKvqhB,EAAO830B,eAAe,SAAUrjG,GACnC,GAAIA,EAAOktQ,gCAAkCltQ,EAAOgpO,qBAAsB,CACxE,IAAIylP,EAAiBzud,EAAO35wB,IAAI,eAC5BqyV,EAAUsnb,EAAOt4oB,UACjB6mmC,EAAgB7C,GAAuB1rd,GACvCwud,EAAmB7C,GAA8B4C,GAEjDz4qB,EAAUs4qB,EAAW/nuC,IAAImouC,GAE7B,GAAI14qB,EAMFq4qB,EAAch/tC,IAAIq/tC,EAAkB,CAClCT,UAAW,CAAC,CACVlE,YAAa/zqB,EAAQ+zqB,YACrB90gC,OAAQ82gC,GAAuB/1qB,EAAQpjjB,MACvCA,KAAMojjB,EAAQpjjB,OAEhBm6yB,UAAW,CAAC,CACVg9a,YAAa4E,EACb15gC,OAAQ82gC,GAAuBnz4B,GAC/BhmV,KAAMgmV,WAKV,GAAI7jV,GAAQ05tC,GAAgB,CAK1B,IAAIG,EAAc,GAClB,EAAKH,GAAe,SAAUxmtC,GAC5B,IAAI+tiB,EAAUs4qB,EAAW/nuC,IAAI0hB,GAEzB+tiB,EAAQpjjB,MACVg8tC,EAAY3puC,KAAK,CACf8kuC,YAAa/zqB,EAAQ+zqB,YACrB90gC,OAAQ82gC,GAAuB/1qB,EAAQpjjB,MACvCA,KAAMojjB,EAAQpjjB,MAGpB,IAEIg8tC,EAAYnruC,QACd4quC,EAAch/tC,IAAIq/tC,EAAkB,CAClCT,UAAWW,EACX7hb,UAAW,CAAC,CACVg9a,YAAa4E,EACb/7tC,KAAMgmV,EACN3jI,OAAQ82gC,GAAuBnz4B,MAIvC,KAAO,CAEL,IAAIi24B,EAAYN,EAAmBhouC,IAAIkouC,GAEvC,GAAII,EAAW,CACb,IAAI75pC,EAAQq5pC,EAAc9nuC,IAAIsouC,EAAU5mtC,KAEnC+sD,IACHA,EAAQ,CACNi5pC,UAAW,CAAC,CACVlE,YAAa8E,EAAU9E,YACvBn3tC,KAAMi8tC,EAAUj8tC,KAChBqiN,OAAQ82gC,GAAuB8C,EAAUj8tC,QAE3Cm6yB,UAAW,IAEbshb,EAAch/tC,IAAIw/tC,EAAU5mtC,IAAK+sD,IAGnCA,EAAM+3uB,UAAU9nzB,KAAK,CACnB8kuC,YAAa4E,EACb/7tC,KAAMgmV,EACN3jI,OAAQ82gC,GAAuBnz4B,IAEnC,CACF,CAEJ,CACF,IACOy14B,CACT,CA2E8BS,CAA4Bd,EAAavisC,GAC/D,EAAK2isC,EAAgB13tC,QAAQ,SAAUuR,GACrC,IAAI+sD,EAAQo5pC,EAAgB7nuC,IAAI0hB,GAChCgitC,GAAkBj1pC,EAAMi5pC,UAAWj5pC,EAAM+3uB,UAAW16wB,EACtD,GACF,CAGA,EAAK5G,EAAO830B,eAAe,SAAUrjG,GAE/BA,EAAO8qQ,MACT9qQ,EAAO8qQ,KAAoC,EAE/C,GACF,CAQA,IALA,IAAIhhO,EAAY08K,EAAQhgJ,YACpBqoZ,EAAcf,EAAYC,UAAY,GACtCe,EAAoBhB,EAAYE,gBAAkB,GAClDe,EAAYjB,EAAYh4qB,QAAU,GAE7BhyjB,EAAI,EAAGA,EAAIgmzB,EAAUvmzB,OAAQO,IAAK,CACzC,IAAI4O,EAAOo3yB,EAAUhmzB,GAAG4jI,UAGpBh1H,EAAK+5C,QAAU88qC,KACjBsF,EAAY9puC,KAAK+kzB,EAAUhmzB,IAC3BgruC,EAAkB/puC,KAAK+kzB,EAAUhmzB,GAAGuC,IAAI,gBACxC0ouC,EAAUhquC,KAAK2N,GAEnB,CACF,GACF,IC7YAmv6B,GAAI,4B0CvPJ,IAAI5y6B,EAAMzM,OAAOI,UAAUC,eACvB4yB,EAAS,IASb,SAASszd,IAAU,CA4BnB,SAASimvB,EAAG56tC,EAAIi8B,EAAS/jB,GACvBppB,KAAKkR,GAAKA,EACVlR,KAAKmtC,QAAUA,EACfntC,KAAKopB,KAAOA,IAAQ,CACtB,CAaA,SAASqX,EAAYsrsC,EAASttsC,EAAOvtB,EAAIi8B,EAAS/jB,GAChD,GAAkB,mBAAPlY,EACT,MAAM,IAAIrR,UAAU,mCAGtB,IAAIyvC,EAAW,IAAIw8rC,EAAG56tC,EAAIi8B,GAAW4+rC,EAAS3itC,GAC1Cg+D,EAAM70D,EAASA,EAASkM,EAAQA,EAMpC,OAJKstsC,EAAQ9qnC,QAAQ75B,GACX2kpC,EAAQ9qnC,QAAQ75B,GAAKl2E,GAC1B66tC,EAAQ9qnC,QAAQ75B,GAAO,CAAC2kpC,EAAQ9qnC,QAAQ75B,GAAM93C,GADhBy8rC,EAAQ9qnC,QAAQ75B,GAAKvlF,KAAKytC,IADlCy8rC,EAAQ9qnC,QAAQ75B,GAAO93C,EAAUy8rC,EAAQC,gBAI7DD,CACT,CASA,SAASE,EAAWF,EAAS3kpC,GACI,KAAzB2kpC,EAAQC,aAAoBD,EAAQ9qnC,QAAU,IAAI4kY,SAC5CkmvB,EAAQ9qnC,QAAQ75B,EAC9B,CASA,SAAS8kpC,IACPlsuC,KAAKihH,QAAU,IAAI4kY,EACnB7lf,KAAKgsuC,aAAe,CACtB,CAzEI1suC,OAAOY,SACT2lf,EAAOnmf,UAAYJ,OAAOY,OAAO,OAM5B,IAAI2lf,GAASrmf,YAAW+yB,GAAS,IA2ExC25sC,EAAaxsuC,UAAU8vC,WAAa,WAClC,IACIqnD,EACAnsF,EAFAsmnB,EAAQ,GAIZ,GAA0B,IAAtBhxnB,KAAKgsuC,aAAoB,OAAOh7mB,EAEpC,IAAKtmnB,KAASmsF,EAAS72F,KAAKihH,QACtBl1G,EAAInM,KAAKi3F,EAAQnsF,IAAOsmnB,EAAMnvnB,KAAK0wB,EAAS7nB,EAAK3I,MAAM,GAAK2I,GAGlE,OAAIpL,OAAOmB,sBACFuwnB,EAAMhvnB,OAAO1C,OAAOmB,sBAAsBo2F,IAG5Cm6hB,CACT,EASAk7mB,EAAaxsuC,UAAUupB,UAAY,SAAmBwV,GACpD,IAAI2oD,EAAM70D,EAASA,EAASkM,EAAQA,EAChCsuF,EAAW/sH,KAAKihH,QAAQ75B,GAE5B,IAAK2lC,EAAU,MAAO,GACtB,GAAIA,EAAS77G,GAAI,MAAO,CAAC67G,EAAS77G,IAElC,IAAK,IAAItQ,EAAI,EAAG4B,EAAIuqH,EAAS1sH,OAAQkG,EAAK,IAAI9G,MAAM+C,GAAI5B,EAAI4B,EAAG5B,IAC7D2F,EAAG3F,GAAKmsH,EAASnsH,GAAGsQ,GAGtB,OAAO3K,CACT,EASA2luC,EAAaxsuC,UAAUysuC,cAAgB,SAAuB1tsC,GAC5D,IAAI2oD,EAAM70D,EAASA,EAASkM,EAAQA,EAChCxV,EAAYjpB,KAAKihH,QAAQ75B,GAE7B,OAAKn+D,EACDA,EAAU/X,GAAW,EAClB+X,EAAU5oB,OAFM,CAGzB,EASA6ruC,EAAaxsuC,UAAU+6a,KAAO,SAAch8Y,EAAO4gU,EAAIC,EAAIC,EAAI6s4B,EAAIC,GACjE,IAAIjlpC,EAAM70D,EAASA,EAASkM,EAAQA,EAEpC,IAAKz+B,KAAKihH,QAAQ75B,GAAM,OAAO,EAE/B,IAEI/vC,EACAz2C,EAHAqoB,EAAYjpB,KAAKihH,QAAQ75B,GACzBy3C,EAAMz+H,UAAUC,OAIpB,GAAI4oB,EAAU/X,GAAI,CAGhB,OAFI+X,EAAUG,MAAMppB,KAAK6yG,eAAep0E,EAAOxV,EAAU/X,QAAI68B,GAAW,GAEhE8wF,GACN,KAAK,EAAG,OAAO51G,EAAU/X,GAAGtR,KAAKqpB,EAAUkkB,UAAU,EACrD,KAAK,EAAG,OAAOlkB,EAAU/X,GAAGtR,KAAKqpB,EAAUkkB,QAASkyT,IAAK,EACzD,KAAK,EAAG,OAAOp2U,EAAU/X,GAAGtR,KAAKqpB,EAAUkkB,QAASkyT,EAAIC,IAAK,EAC7D,KAAK,EAAG,OAAOr2U,EAAU/X,GAAGtR,KAAKqpB,EAAUkkB,QAASkyT,EAAIC,EAAIC,IAAK,EACjE,KAAK,EAAG,OAAOt2U,EAAU/X,GAAGtR,KAAKqpB,EAAUkkB,QAASkyT,EAAIC,EAAIC,EAAI6s4B,IAAK,EACrE,KAAK,EAAG,OAAOnjtC,EAAU/X,GAAGtR,KAAKqpB,EAAUkkB,QAASkyT,EAAIC,EAAIC,EAAI6s4B,EAAIC,IAAK,EAG3E,IAAKzruC,EAAI,EAAGy2C,EAAO,IAAI53C,MAAMo/H,EAAK,GAAIj+H,EAAIi+H,EAAKj+H,IAC7Cy2C,EAAKz2C,EAAI,GAAKR,UAAUQ,GAG1BqoB,EAAU/X,GAAG3Q,MAAM0oB,EAAUkkB,QAASkK,EACxC,KAAO,CACL,IACIjzC,EADA/D,EAAS4oB,EAAU5oB,OAGvB,IAAKO,EAAI,EAAGA,EAAIP,EAAQO,IAGtB,OAFIqoB,EAAUroB,GAAGwoB,MAAMppB,KAAK6yG,eAAep0E,EAAOxV,EAAUroB,GAAGsQ,QAAI68B,GAAW,GAEtE8wF,GACN,KAAK,EAAG51G,EAAUroB,GAAGsQ,GAAGtR,KAAKqpB,EAAUroB,GAAGusC,SAAU,MACpD,KAAK,EAAGlkB,EAAUroB,GAAGsQ,GAAGtR,KAAKqpB,EAAUroB,GAAGusC,QAASkyT,GAAK,MACxD,KAAK,EAAGp2U,EAAUroB,GAAGsQ,GAAGtR,KAAKqpB,EAAUroB,GAAGusC,QAASkyT,EAAIC,GAAK,MAC5D,KAAK,EAAGr2U,EAAUroB,GAAGsQ,GAAGtR,KAAKqpB,EAAUroB,GAAGusC,QAASkyT,EAAIC,EAAIC,GAAK,MAChE,QACE,IAAKloT,EAAM,IAAKjzC,EAAI,EAAGizC,EAAO,IAAI53C,MAAMo/H,EAAK,GAAIz6H,EAAIy6H,EAAKz6H,IACxDizC,EAAKjzC,EAAI,GAAKhE,UAAUgE,GAG1B6kB,EAAUroB,GAAGsQ,GAAG3Q,MAAM0oB,EAAUroB,GAAGusC,QAASkK,GAGpD,CAEA,OAAO,CACT,EAWA60rC,EAAaxsuC,UAAUkR,GAAK,SAAY6tB,EAAOvtB,EAAIi8B,GACjD,OAAO1M,EAAYzgC,KAAMy+B,EAAOvtB,EAAIi8B,GAAS,EAC/C,EAWA++rC,EAAaxsuC,UAAU0pB,KAAO,SAAcqV,EAAOvtB,EAAIi8B,GACrD,OAAO1M,EAAYzgC,KAAMy+B,EAAOvtB,EAAIi8B,GAAS,EAC/C,EAYA++rC,EAAaxsuC,UAAUmzG,eAAiB,SAAwBp0E,EAAOvtB,EAAIi8B,EAAS/jB,GAClF,IAAIg+D,EAAM70D,EAASA,EAASkM,EAAQA,EAEpC,IAAKz+B,KAAKihH,QAAQ75B,GAAM,OAAOpnF,KAC/B,IAAKkR,EAEH,OADA+6tC,EAAWjsuC,KAAMonF,GACVpnF,KAGT,IAAIipB,EAAYjpB,KAAKihH,QAAQ75B,GAE7B,GAAIn+D,EAAU/X,GAEV+X,EAAU/X,KAAOA,GACfkY,IAAQH,EAAUG,MAClB+jB,GAAWlkB,EAAUkkB,UAAYA,GAEnC8+rC,EAAWjsuC,KAAMonF,OAEd,CACL,IAAK,IAAIxmF,EAAI,EAAGi2F,EAAS,GAAIx2F,EAAS4oB,EAAU5oB,OAAQO,EAAIP,EAAQO,KAEhEqoB,EAAUroB,GAAGsQ,KAAOA,GACnBkY,IAASH,EAAUroB,GAAGwoB,MACtB+jB,GAAWlkB,EAAUroB,GAAGusC,UAAYA,IAErC0pD,EAAOh1F,KAAKonB,EAAUroB,IAOtBi2F,EAAOx2F,OAAQL,KAAKihH,QAAQ75B,GAAyB,IAAlByP,EAAOx2F,OAAew2F,EAAO,GAAKA,EACpEo1oC,EAAWjsuC,KAAMonF,EACxB,CAEA,OAAOpnF,IACT,EASAksuC,EAAaxsuC,UAAU23kB,mBAAqB,SAA4B54iB,GACtE,IAAI2oD,EAUJ,OARI3oD,GACF2oD,EAAM70D,EAASA,EAASkM,EAAQA,EAC5Bz+B,KAAKihH,QAAQ75B,IAAM6kpC,EAAWjsuC,KAAMonF,KAExCpnF,KAAKihH,QAAU,IAAI4kY,EACnB7lf,KAAKgsuC,aAAe,GAGfhsuC,IACT,EAKAksuC,EAAaxsuC,UAAUsuC,IAAMk+rC,EAAaxsuC,UAAUmzG,eACpDq5nC,EAAaxsuC,UAAU+gC,YAAcyrsC,EAAaxsuC,UAAUkR,GAK5Ds7tC,EAAaI,SAAW/5sC,EAKxB25sC,EAAaA,aAAeA,EAM1BpvsC,EAAOr6B,QAAUypuC,mBC9UnB,OAOC,WACA,aAEA,IAAIK,IACe,oBAAXrquC,SACPA,OAAOiD,WACPjD,OAAOiD,SAASmE,eAGbkjuC,EAAuB,CAE1BD,UAAWA,EAEXE,cAAiC,oBAAXj1sC,OAEtBk1sC,qBACCH,MAAgBrquC,OAAOyqB,mBAAoBzqB,OAAOyquC,aAEnDC,eAAgBL,KAAerquC,OAAOut9B,aAOrC,KAFD,aACC,OAAO+8Q,CACP,+BAOH,CAhCA,2BCDA1vsC,EAAOr6B,QAAU,SAASqnJ,EAAM9oJ,EAAGsC,GACjC,GAAItC,IAAMsC,EAAG,OAAO,EAEpB,GAAItC,GAAKsC,GAAiB,iBAALtC,GAA6B,iBAALsC,EAAe,CAC1D,GAAItC,EAAEf,cAAgBqD,EAAErD,YAAa,OAAO,EAE5C,IAAII,EAAQO,EAAG0S,EACf,GAAI7T,MAAMkS,QAAQ3Q,GAAI,CAEpB,IADAX,EAASW,EAAEX,SACGiD,EAAEjD,OAAQ,OAAO,EAC/B,IAAKO,EAAIP,EAAgB,GAARO,KACf,IAAKkpJ,EAAM9oJ,EAAEJ,GAAI0C,EAAE1C,IAAK,OAAO,EACjC,OAAO,CACT,CAIA,GAAII,EAAEf,cAAgB8nC,OAAQ,OAAO/mC,EAAE6G,SAAWvE,EAAEuE,QAAU7G,EAAEo5C,QAAU92C,EAAE82C,MAC5E,GAAIp5C,EAAEkI,UAAY5J,OAAOI,UAAUwJ,QAAS,OAAOlI,EAAEkI,YAAc5F,EAAE4F,UACrE,GAAIlI,EAAEuD,WAAajF,OAAOI,UAAU6E,SAAU,OAAOvD,EAAEuD,aAAejB,EAAEiB,WAIxE,IADAlE,GADAiT,EAAOhU,OAAOgU,KAAKtS,IACLX,UACCf,OAAOgU,KAAKhQ,GAAGjD,OAAQ,OAAO,EAE7C,IAAKO,EAAIP,EAAgB,GAARO,KACf,IAAKtB,OAAOI,UAAUC,eAAeC,KAAK0D,EAAGgQ,EAAK1S,IAAK,OAAO,EAEhE,IAAKA,EAAIP,EAAgB,GAARO,KAAY,CAC3B,IAAIikB,EAAMvR,EAAK1S,GAEf,IAAKkpJ,EAAM9oJ,EAAE6jB,GAAMvhB,EAAEuhB,IAAO,OAAO,CACrC,CAEA,OAAO,CACT,CAGA,OAAO7jB,GAAIA,GAAKsC,GAAIA,CACtB,gCC3CA,MAAM295B,EAAY,EAAQ,OACpB4rU,EAAY,EAAQ,OACpBC,EAAa,EAAQ,MAE3BhwsC,EAAOr6B,QAAU,CACfoquC,UAAWA,EACXE,aAAc9rU,EACd6rU,WAAYA,+BCPd,MAAME,EAAgB,gLAEhBC,EAAa,IAAMD,EAAgB,KADxBA,EACE,iDACbE,EAAY,IAAInlsC,OAAO,IAAMklsC,EAAa,KAuBhDxquC,EAAQ0quC,QAAU,SAASlquC,GACzB,YAAoB,IAANA,CAChB,EAEAR,EAAQghD,cAAgB,SAASypK,GAC/B,OAAmC,IAA5B5tN,OAAOgU,KAAK45M,GAAK7sN,MAC1B,EAOAoC,EAAQq+P,MAAQ,SAAShxP,EAAQ9O,EAAGosuC,GAClC,GAAIpsuC,EAAG,CACL,MAAMsS,EAAOhU,OAAOgU,KAAKtS,GACnB69H,EAAMvrH,EAAKjT,OACjB,IAAK,IAAIO,EAAI,EAAGA,EAAIi+H,EAAKj+H,IAErBkP,EAAOwD,EAAK1S,IADI,WAAdwsuC,EACgB,CAAEpsuC,EAAEsS,EAAK1S,KAETI,EAAEsS,EAAK1S,GAG/B,CACF,EAKA6B,EAAQy5H,SAAW,SAASj5H,GAC1B,OAAIR,EAAQ0quC,QAAQlquC,GACXA,EAEA,EAEX,EAKAR,EAAQ4quC,OA9CO,SAAStwtC,GAEtB,QAAQ,MADMmwtC,EAAU96tC,KAAK2K,GAE/B,EA4CAta,EAAQ6quC,cA/Dc,SAASvwtC,EAAQowK,GACrC,MAAMl5H,EAAU,GAChB,IAAIxtD,EAAQ0mL,EAAM/6K,KAAK2K,GACvB,KAAOtW,GAAO,CACZ,MAAM8muC,EAAa,GACnBA,EAAW5tmC,WAAawtD,EAAM56H,UAAY9rD,EAAM,GAAGpG,OACnD,MAAMw+H,EAAMp4H,EAAMpG,OAClB,IAAK,IAAI2c,EAAQ,EAAGA,EAAQ6hH,EAAK7hH,IAC/BuwtC,EAAW1ruC,KAAK4E,EAAMuW,IAExBi3C,EAAQpyD,KAAK0ruC,GACb9muC,EAAQ0mL,EAAM/6K,KAAK2K,EACrB,CACA,OAAOk3C,CACT,EAkDAxxD,EAAQwquC,WAAaA,gCCrErB,MAAMO,EAAO,EAAQ,OAEf779B,EAAiB,CACrBhlG,wBAAwB,EACxB8gkC,aAAc,IA0LhB,SAASC,EAAato/B,GACpB,MAAgB,MAATA,GAAyB,OAATA,GAA0B,OAATA,GAA2B,OAATA,CAC5D,CAMA,SAASuo/B,EAAOC,EAAShtuC,GACvB,MAAM4lC,EAAQ5lC,EACd,KAAOA,EAAIgtuC,EAAQvtuC,OAAQO,IACzB,GAAkB,KAAdgtuC,EAAQhtuC,IAA2B,KAAdgtuC,EAAQhtuC,QAAjC,CAEE,MAAMituC,EAAUD,EAAQnysC,OAAO+K,EAAO5lC,EAAI4lC,GAC1C,GAAI5lC,EAAI,GAAiB,QAAZituC,EACX,OAAOC,EAAe,aAAc,6DAA8DC,EAAyBH,EAAShtuC,IAC/H,GAAkB,KAAdgtuC,EAAQhtuC,IAA+B,KAAlBgtuC,EAAQhtuC,EAAI,GAAW,CAErDA,IACA,KACF,CAGF,CAEF,OAAOA,CACT,CAEA,SAASotuC,EAAoBJ,EAAShtuC,GACpC,GAAIgtuC,EAAQvtuC,OAASO,EAAI,GAAwB,MAAnBgtuC,EAAQhtuC,EAAI,IAAiC,MAAnBgtuC,EAAQhtuC,EAAI,IAElE,IAAKA,GAAK,EAAGA,EAAIgtuC,EAAQvtuC,OAAQO,IAC/B,GAAmB,MAAfgtuC,EAAQhtuC,IAAiC,MAAnBgtuC,EAAQhtuC,EAAI,IAAiC,MAAnBgtuC,EAAQhtuC,EAAI,GAAY,CAC1EA,GAAK,EACL,KACF,OAEG,GACLgtuC,EAAQvtuC,OAASO,EAAI,GACF,MAAnBgtuC,EAAQhtuC,EAAI,IACO,MAAnBgtuC,EAAQhtuC,EAAI,IACO,MAAnBgtuC,EAAQhtuC,EAAI,IACO,MAAnBgtuC,EAAQhtuC,EAAI,IACO,MAAnBgtuC,EAAQhtuC,EAAI,IACO,MAAnBgtuC,EAAQhtuC,EAAI,IACO,MAAnBgtuC,EAAQhtuC,EAAI,GACZ,CACA,IAAIqtuC,EAAqB,EACzB,IAAKrtuC,GAAK,EAAGA,EAAIgtuC,EAAQvtuC,OAAQO,IAC/B,GAAmB,MAAfgtuC,EAAQhtuC,GACVqtuC,SACK,GAAmB,MAAfL,EAAQhtuC,KACjBqtuC,IAC2B,IAAvBA,GACF,KAIR,MAAO,GACLL,EAAQvtuC,OAASO,EAAI,GACF,MAAnBgtuC,EAAQhtuC,EAAI,IACO,MAAnBgtuC,EAAQhtuC,EAAI,IACO,MAAnBgtuC,EAAQhtuC,EAAI,IACO,MAAnBgtuC,EAAQhtuC,EAAI,IACO,MAAnBgtuC,EAAQhtuC,EAAI,IACO,MAAnBgtuC,EAAQhtuC,EAAI,IACO,MAAnBgtuC,EAAQhtuC,EAAI,GAEZ,IAAKA,GAAK,EAAGA,EAAIgtuC,EAAQvtuC,OAAQO,IAC/B,GAAmB,MAAfgtuC,EAAQhtuC,IAAiC,MAAnBgtuC,EAAQhtuC,EAAI,IAAiC,MAAnBgtuC,EAAQhtuC,EAAI,GAAY,CAC1EA,GAAK,EACL,KACF,CAIJ,OAAOA,CACT,CAnQA6B,EAAQyzF,SAAW,SAAU03oC,EAASzktC,GACpCA,EAAU7pB,OAAOa,OAAO,CAAC,EAAGwxQ,EAAgBxoP,GAK5C,MAAMkxC,EAAO,GACb,IAAI6zqC,GAAW,EAGXC,GAAc,EAEC,WAAfP,EAAQ,KAEVA,EAAUA,EAAQnysC,OAAO,IAG3B,IAAK,IAAI76B,EAAI,EAAGA,EAAIgtuC,EAAQvtuC,OAAQO,IAElC,GAAmB,MAAfgtuC,EAAQhtuC,IAA+B,MAAjBgtuC,EAAQhtuC,EAAE,IAGlC,GAFAA,GAAG,EACHA,EAAI+suC,EAAOC,EAAQhtuC,GACfA,EAAE02C,IAAK,OAAO12C,MACd,IAAmB,MAAfgtuC,EAAQhtuC,GA0IX,CACL,GAAK8suC,EAAaE,EAAQhtuC,IACxB,SAEF,OAAOktuC,EAAe,cAAe,SAASF,EAAQhtuC,GAAG,qBAAsBmtuC,EAAyBH,EAAShtuC,GACnH,CA/I8B,CAG5B,IAAIwtuC,EAAcxtuC,EAGlB,GAFAA,IAEmB,MAAfgtuC,EAAQhtuC,GAAY,CACtBA,EAAIotuC,EAAoBJ,EAAShtuC,GACjC,QACF,CAAO,CACL,IAAIytuC,GAAa,EACE,MAAfT,EAAQhtuC,KAEVytuC,GAAa,EACbztuC,KAGF,IAAIq6D,EAAU,GACd,KAAOr6D,EAAIgtuC,EAAQvtuC,QACF,MAAfutuC,EAAQhtuC,IACO,MAAfgtuC,EAAQhtuC,IACO,OAAfgtuC,EAAQhtuC,IACO,OAAfgtuC,EAAQhtuC,IACO,OAAfgtuC,EAAQhtuC,GAAaA,IAErBq6D,GAAW2yqC,EAAQhtuC,GAWrB,GATAq6D,EAAUA,EAAQ5oC,OAGkB,MAAhC4oC,EAAQA,EAAQ56D,OAAS,KAE3B46D,EAAUA,EAAQ3jC,UAAU,EAAG2jC,EAAQ56D,OAAS,GAEhDO,KAmVeituC,EAjVI5yqC,GAkVpBuyqC,EAAKH,OAAOQ,GAlVkB,CAC7B,IAAI7+5B,EAMJ,OAJEA,EAD4B,IAA1B/zQ,EAAQ5oC,OAAOhyB,OACX,2BAEA,QAAQ46D,EAAQ,wBAEjB6yqC,EAAe,aAAc9+5B,EAAK++5B,EAAyBH,EAAShtuC,GAC7E,CAEA,MAAM4iB,EAAS8qtC,EAAiBV,EAAShtuC,GACzC,IAAe,IAAX4iB,EACF,OAAOsqtC,EAAe,cAAe,mBAAmB7yqC,EAAQ,qBAAsB8yqC,EAAyBH,EAAShtuC,IAE1H,IAAI2tuC,EAAU/qtC,EAAOriB,MAGrB,GAFAP,EAAI4iB,EAAOxG,MAEyB,MAAhCuxtC,EAAQA,EAAQluuC,OAAS,GAAY,CAEvC,MAAMmuuC,EAAe5tuC,EAAI2tuC,EAAQluuC,OACjCkuuC,EAAUA,EAAQj3sC,UAAU,EAAGi3sC,EAAQluuC,OAAS,GAChD,MAAMyyE,EAAU27pC,EAAwBF,EAASpltC,GACjD,IAAgB,IAAZ2pD,EAOF,OAAOg7pC,EAAeh7pC,EAAQx7B,IAAIpc,KAAM43C,EAAQx7B,IAAI03R,IAAK++5B,EAAyBH,EAASY,EAAe17pC,EAAQx7B,IAAIgI,OANtH4urC,GAAW,CAQf,MAAO,GAAIG,EAAY,CACrB,IAAK7qtC,EAAOkrtC,UACV,OAAOZ,EAAe,aAAc,gBAAgB7yqC,EAAQ,iCAAkC8yqC,EAAyBH,EAAShtuC,IAC3H,GAAI2tuC,EAAQl8sC,OAAOhyB,OAAS,EACjC,OAAOytuC,EAAe,aAAc,gBAAgB7yqC,EAAQ,+CAAgD8yqC,EAAyBH,EAASQ,IACzI,GAAoB,IAAhB/zqC,EAAKh6D,OACd,OAAOytuC,EAAe,aAAc,gBAAgB7yqC,EAAQ,yBAA0B8yqC,EAAyBH,EAASQ,IACnH,CACL,MAAMO,EAAMt0qC,EAAKz4D,MACjB,GAAIq5D,IAAY0zqC,EAAI1zqC,QAAS,CAC3B,IAAI2zqC,EAAUb,EAAyBH,EAASe,EAAIP,aACpD,OAAON,EAAe,aACpB,yBAAyBa,EAAI1zqC,QAAQ,qBAAqB2zqC,EAAQtvrC,KAAK,SAASsvrC,EAAQr6lC,IAAI,6BAA6Bt5E,EAAQ,KACjI8yqC,EAAyBH,EAASQ,GACtC,CAGmB,GAAf/zqC,EAAKh6D,SACP8tuC,GAAc,EAElB,CACF,KAAO,CACL,MAAMr7pC,EAAU27pC,EAAwBF,EAASpltC,GACjD,IAAgB,IAAZ2pD,EAIF,OAAOg7pC,EAAeh7pC,EAAQx7B,IAAIpc,KAAM43C,EAAQx7B,IAAI03R,IAAK++5B,EAAyBH,EAAShtuC,EAAI2tuC,EAAQluuC,OAASyyE,EAAQx7B,IAAIgI,OAI9H,IAAoB,IAAhB6urC,EACF,OAAOL,EAAe,aAAc,sCAAuCC,EAAyBH,EAAShtuC,KAC1D,IAA3CuoB,EAAQsktC,aAAajtuC,QAAQy6D,IAGrCZ,EAAKx4D,KAAK,CAACo5D,UAASmzqC,gBAEtBF,GAAW,CACb,CAIA,IAAKttuC,IAAKA,EAAIgtuC,EAAQvtuC,OAAQO,IAC5B,GAAmB,MAAfgtuC,EAAQhtuC,GAAY,CACtB,GAAuB,MAAnBgtuC,EAAQhtuC,EAAI,GAAY,CAE1BA,IACAA,EAAIotuC,EAAoBJ,EAAShtuC,GACjC,QACF,CAAO,GAAqB,MAAjBgtuC,EAAQhtuC,EAAE,GAInB,MAFA,GADAA,EAAI+suC,EAAOC,IAAWhtuC,GAClBA,EAAE02C,IAAK,OAAO12C,CAItB,MAAO,GAAmB,MAAfgtuC,EAAQhtuC,GAAY,CAC7B,MAAMiuuC,EAAWC,EAAkBlB,EAAShtuC,GAC5C,IAAiB,GAAbiuuC,EACF,OAAOf,EAAe,cAAe,4BAA6BC,EAAyBH,EAAShtuC,IACtGA,EAAIiuuC,CACN,MACE,IAAoB,IAAhBV,IAAyBT,EAAaE,EAAQhtuC,IAChD,OAAOktuC,EAAe,aAAc,wBAAyBC,EAAyBH,EAAShtuC,IAIlF,MAAfgtuC,EAAQhtuC,IACVA,GAEJ,CACF,CAKA,CAsOJ,IAAyBituC,EAnOvB,OAAKK,EAEoB,GAAf7zqC,EAAKh6D,OACJytuC,EAAe,aAAc,iBAAiBzzqC,EAAK,GAAGY,QAAQ,KAAM8yqC,EAAyBH,EAASvzqC,EAAK,GAAG+zqC,gBAC/G/zqC,EAAKh6D,OAAS,IACbytuC,EAAe,aAAc,YAChCxztC,KAAKb,UAAU4gD,EAAKhrC,KAAIjwB,GAAKA,EAAE67D,UAAU,KAAM,GAAGxuD,QAAQ,SAAU,IACpE,WAAY,CAAC6yC,KAAM,EAAGi1F,IAAK,IAN1Bu5lC,EAAe,aAAc,sBAAuB,EAU/D,EAiFA,MAAMiB,EAAc,IACdC,EAAc,IAOpB,SAASV,EAAiBV,EAAShtuC,GACjC,IAAI2tuC,EAAU,GACVU,EAAY,GACZP,GAAY,EAChB,KAAO9tuC,EAAIgtuC,EAAQvtuC,OAAQO,IAAK,CAC9B,GAAIgtuC,EAAQhtuC,KAAOmuuC,GAAenB,EAAQhtuC,KAAOouuC,EAC7B,KAAdC,EACFA,EAAYrB,EAAQhtuC,GACXquuC,IAAcrB,EAAQhtuC,KAG/BquuC,EAAY,SAET,GAAmB,MAAfrB,EAAQhtuC,IACC,KAAdquuC,EAAkB,CACpBP,GAAY,EACZ,KACF,CAEFH,GAAWX,EAAQhtuC,EACrB,CACA,MAAkB,KAAdquuC,GAIG,CACL9tuC,MAAOotuC,EACPvxtC,MAAOpc,EACP8tuC,UAAWA,EAEf,CAKA,MAAMQ,EAAoB,IAAInnsC,OAAO,0DAA2D,KAIhG,SAAS0msC,EAAwBF,EAASpltC,GAKxC,MAAM8qC,EAAUu5qC,EAAKF,cAAciB,EAASW,GACtCC,EAAY,CAAC,EAEnB,IAAK,IAAIvuuC,EAAI,EAAGA,EAAIqzD,EAAQ5zD,OAAQO,IAAK,CACvC,GAA6B,IAAzBqzD,EAAQrzD,GAAG,GAAGP,OAEhB,OAAOytuC,EAAe,cAAe,cAAc75qC,EAAQrzD,GAAG,GAAG,8BAA+BwuuC,EAAqBn7qC,EAAQrzD,KACxH,QAAsBmtC,IAAlBkmB,EAAQrzD,GAAG,SAAsCmtC,IAAlBkmB,EAAQrzD,GAAG,GACnD,OAAOktuC,EAAe,cAAe,cAAc75qC,EAAQrzD,GAAG,GAAG,sBAAuBwuuC,EAAqBn7qC,EAAQrzD,KAChH,QAAsBmtC,IAAlBkmB,EAAQrzD,GAAG,KAAqBuoB,EAAQwjJ,uBAEjD,OAAOmhkC,EAAe,cAAe,sBAAsB75qC,EAAQrzD,GAAG,GAAG,oBAAqBwuuC,EAAqBn7qC,EAAQrzD,KAK7H,MAAMmxP,EAAW99L,EAAQrzD,GAAG,GAC5B,IAAKyuuC,EAAiBt9+B,GACpB,OAAO+7+B,EAAe,cAAe,cAAc/7+B,EAAS,wBAAyBq9+B,EAAqBn7qC,EAAQrzD,KAEpH,GAAKuuuC,EAAUxvuC,eAAeoyP,GAI5B,OAAO+7+B,EAAe,cAAe,cAAc/7+B,EAAS,iBAAkBq9+B,EAAqBn7qC,EAAQrzD,KAF3GuuuC,EAAUp9+B,GAAY,CAI1B,CAEA,OAAO,CACT,CAiBA,SAAS+8+B,EAAkBlB,EAAShtuC,GAGlC,GAAmB,MAAfgtuC,IADJhtuC,GAEE,OAAQ,EACV,GAAmB,MAAfgtuC,EAAQhtuC,GAEV,OAtBJ,SAAiCgtuC,EAAShtuC,GACxC,IAAIiG,EAAK,KAKT,IAJmB,MAAf+muC,EAAQhtuC,KACVA,IACAiG,EAAK,cAEAjG,EAAIgtuC,EAAQvtuC,OAAQO,IAAK,CAC9B,GAAmB,MAAfgtuC,EAAQhtuC,GACV,OAAOA,EACT,IAAKgtuC,EAAQhtuC,GAAG6F,MAAMI,GACpB,KACJ,CACA,OAAQ,CACV,CASWyouC,CAAwB1B,IAD/BhtuC,GAGF,IAAI2oD,EAAQ,EACZ,KAAO3oD,EAAIgtuC,EAAQvtuC,OAAQO,IAAK2oD,IAC9B,KAAIqkrC,EAAQhtuC,GAAG6F,MAAM,OAAS8iD,EAAQ,IAAtC,CAEA,GAAmB,MAAfqkrC,EAAQhtuC,GACV,MACF,OAAQ,CAHE,CAKZ,OAAOA,CACT,CAEA,SAASktuC,EAAe5ysC,EAAMnJ,EAAS0rC,GACrC,MAAO,CACLnmB,IAAK,CACHpc,KAAMA,EACN8zS,IAAKj9S,EACLutB,KAAMme,EAAWne,MAAQme,EACzB82E,IAAK92E,EAAW82E,KAGtB,CAEA,SAAS86lC,EAAiBt9+B,GACxB,OAAOy7+B,EAAKH,OAAOt7+B,EACrB,CASA,SAASg8+B,EAAyBH,EAAS5wtC,GACzC,MAAMuuB,EAAQqisC,EAAQt2sC,UAAU,EAAGta,GAAOpY,MAAM,SAChD,MAAO,CACL06C,KAAM/T,EAAMlrC,OAGZk0I,IAAKhpG,EAAMA,EAAMlrC,OAAS,GAAGA,OAAS,EAE1C,CAGA,SAAS+uuC,EAAqB3ouC,GAC5B,OAAOA,EAAMk5H,WAAal5H,EAAM,GAAGpG,MACrC,+BCtaA,MAAMkvuC,EAAqB,EAAQ,OAE7B599B,EAAiB,CACrBxkG,oBAAqB,KACrBqikC,qBAAqB,EACrBljkC,aAAc,QACdY,kBAAkB,EAClBuikC,eAAe,EACfvqqC,QAAQ,EACRwqqC,SAAU,KACVC,mBAAmB,EACnBC,sBAAsB,EACtBC,2BAA2B,EAC3BC,kBAAmB,SAASjrtC,EAAK7jB,GAC/B,OAAOA,CACT,EACA+uuC,wBAAyB,SAASh++B,EAAU/wP,GAC1C,OAAOA,CACT,EACAgvuC,eAAe,EACfC,iBAAiB,EACjBxC,aAAc,GACdyC,SAAU,CACR,CAAE/ijC,MAAO,IAAIplJ,OAAO,IAAK,KAAM21I,IAAK,SACpC,CAAEyP,MAAO,IAAIplJ,OAAO,IAAK,KAAM21I,IAAK,QACpC,CAAEyP,MAAO,IAAIplJ,OAAO,IAAK,KAAM21I,IAAK,QACpC,CAAEyP,MAAO,IAAIplJ,OAAO,IAAM,KAAM21I,IAAK,UACrC,CAAEyP,MAAO,IAAIplJ,OAAO,IAAM,KAAM21I,IAAK,WAEvCyyjC,iBAAiB,EACjBC,UAAW,GAGXC,cAAc,GAGhB,SAASC,EAAQnntC,GACfnpB,KAAKmpB,QAAU7pB,OAAOa,OAAO,CAAC,EAAGwxQ,EAAgBxoP,GAC7CnpB,KAAKmpB,QAAQ+jJ,kBAAoBltK,KAAKmpB,QAAQqmtC,oBAChDxvuC,KAAK+sK,YAAc,WACjB,OAAO,CACT,GAEA/sK,KAAKuwuC,cAAgBvwuC,KAAKmpB,QAAQgkJ,oBAAoB9sK,OACtDL,KAAK+sK,YAAcA,GAGrB/sK,KAAKwwuC,qBAAuBA,EAExBxwuC,KAAKmpB,QAAQ+7C,QACfllE,KAAKywuC,UAAYA,EACjBzwuC,KAAK0wuC,WAAa,MAClB1wuC,KAAKiq+B,QAAU,OAEfjq+B,KAAKywuC,UAAY,WACf,MAAO,EACT,EACAzwuC,KAAK0wuC,WAAa,IAClB1wuC,KAAKiq+B,QAAU,GAEnB,CAqGA,SAASumQ,EAAsBpzrC,EAAQv4B,EAAK6qC,GAC1C,MAAMlsC,EAASxjB,KAAK2wuC,IAAIvzrC,EAAQsS,EAAQ,GACxC,YAA0C3hB,IAAtCqP,EAAOp9C,KAAKmpB,QAAQmjJ,eAA8D,IAA/BhtK,OAAOgU,KAAK8pC,GAAQ/8C,OAClEL,KAAK4wuC,iBAAiBxzrC,EAAOp9C,KAAKmpB,QAAQmjJ,cAAeznJ,EAAKrB,EAAO+qtC,QAAS7+qC,GAE9E1vD,KAAK6wuC,gBAAgBrttC,EAAOk6J,IAAK74J,EAAKrB,EAAO+qtC,QAAS7+qC,EAEjE,CAuFA,SAAS+grC,EAAU/grC,GACjB,OAAO1vD,KAAKmpB,QAAQumtC,SAASnmkC,OAAO75G,EACtC,CAEA,SAASq9G,EAAYriK,GACnB,SAAIA,EAAKyG,WAAWnR,KAAKmpB,QAAQgkJ,sBAAwBziK,IAAS1K,KAAKmpB,QAAQmjJ,eACtE5hK,EAAK+wB,OAAOz7B,KAAKuwuC,cAI5B,CA3MAD,EAAQ5wuC,UAAU4qD,MAAQ,SAASwmrC,GACjC,OAAG9wuC,KAAKmpB,QAAQ6mtC,cACPT,EAAmBuB,EAAM9wuC,KAAKmpB,UAElC1pB,MAAMkS,QAAQm/tC,IAAS9wuC,KAAKmpB,QAAQ4ntC,eAAiB/wuC,KAAKmpB,QAAQ4ntC,cAAc1wuC,OAAS,IAC1FywuC,EAAO,CACL,CAAC9wuC,KAAKmpB,QAAQ4ntC,eAAiBD,IAG5B9wuC,KAAK2wuC,IAAIG,EAAM,GAAGpzjC,IAE7B,EAEA4yjC,EAAQ5wuC,UAAUixuC,IAAM,SAASG,EAAMphrC,GACrC,IAAI6+qC,EAAU,GACV7wjC,EAAM,GACV,IAAK,IAAI74J,KAAOistC,EACd,GAAIxxuC,OAAOI,UAAUC,eAAeC,KAAKkxuC,EAAMjstC,GAC/C,QAAyB,IAAdistC,EAAKjstC,GAEV7kB,KAAK+sK,YAAYloJ,KACnB64J,GAAO,SAEJ,GAAkB,OAAdozjC,EAAKjstC,GAEV7kB,KAAK+sK,YAAYloJ,GACnB64J,GAAO,GACa,MAAX74J,EAAI,GACb64J,GAAO19K,KAAKywuC,UAAU/grC,GAAS,IAAM7qC,EAAM,IAAM7kB,KAAK0wuC,WAEtDhzjC,GAAO19K,KAAKywuC,UAAU/grC,GAAS,IAAM7qC,EAAM,IAAM7kB,KAAK0wuC,gBAGnD,GAAII,EAAKjstC,aAAgB2G,KAC9BkyJ,GAAO19K,KAAK4wuC,iBAAiBE,EAAKjstC,GAAMA,EAAK,GAAI6qC,QAC5C,GAAyB,iBAAdohrC,EAAKjstC,GAAmB,CAExC,MAAMopgB,EAAOjuhB,KAAK+sK,YAAYloJ,GAC9B,GAAIopgB,EACFsgtB,GAAWvuuC,KAAKgxuC,iBAAiB/itB,EAAM,GAAK6itB,EAAKjstC,SAGjD,GAAIA,IAAQ7kB,KAAKmpB,QAAQmjJ,aAAc,CACrC,IAAI2kkC,EAASjxuC,KAAKmpB,QAAQ2mtC,kBAAkBjrtC,EAAK,GAAKistC,EAAKjstC,IAC3D64J,GAAO19K,KAAKkxuC,qBAAqBD,EACnC,MACEvzjC,GAAO19K,KAAK4wuC,iBAAiBE,EAAKjstC,GAAMA,EAAK,GAAI6qC,EAGvD,MAAO,GAAIjwD,MAAMkS,QAAQm/tC,EAAKjstC,IAAO,CAEnC,MAAMsstC,EAASL,EAAKjstC,GAAKxkB,OACzB,IAAI+wuC,EAAa,GACjB,IAAK,IAAIhtuC,EAAI,EAAGA,EAAI+suC,EAAQ/suC,IAAK,CAC/B,MAAMg9C,EAAO0vrC,EAAKjstC,GAAKzgB,QACH,IAATg9C,IAES,OAATA,EACK,MAAXv8B,EAAI,GAAY64J,GAAO19K,KAAKywuC,UAAU/grC,GAAS,IAAM7qC,EAAM,IAAM7kB,KAAK0wuC,WACpEhzjC,GAAO19K,KAAKywuC,UAAU/grC,GAAS,IAAM7qC,EAAM,IAAM7kB,KAAK0wuC,WAElC,iBAATtvrC,EACbphD,KAAKmpB,QAAQkntC,aACde,GAAcpxuC,KAAK2wuC,IAAIvvrC,EAAMsO,EAAQ,GAAGguH,IAExC0zjC,GAAcpxuC,KAAKwwuC,qBAAqBpvrC,EAAMv8B,EAAK6qC,GAGrD0hrC,GAAcpxuC,KAAK4wuC,iBAAiBxvrC,EAAMv8B,EAAK,GAAI6qC,GAEvD,CACG1vD,KAAKmpB,QAAQkntC,eACde,EAAapxuC,KAAK6wuC,gBAAgBO,EAAYvstC,EAAK,GAAI6qC,IAEzDguH,GAAO0zjC,CACT,MAEE,GAAIpxuC,KAAKmpB,QAAQqmtC,qBAAuB3qtC,IAAQ7kB,KAAKmpB,QAAQqmtC,oBAAqB,CAChF,MAAM6B,EAAK/xuC,OAAOgU,KAAKw9tC,EAAKjstC,IACtBxgB,EAAIgtuC,EAAGhxuC,OACb,IAAK,IAAI+D,EAAI,EAAGA,EAAIC,EAAGD,IACrBmquC,GAAWvuuC,KAAKgxuC,iBAAiBK,EAAGjtuC,GAAI,GAAK0suC,EAAKjstC,GAAKwstC,EAAGjtuC,IAE9D,MACEs5K,GAAO19K,KAAKwwuC,qBAAqBM,EAAKjstC,GAAMA,EAAK6qC,GAIvD,MAAO,CAAC6+qC,QAASA,EAAS7wjC,IAAKA,EACjC,EAEA4yjC,EAAQ5wuC,UAAUsxuC,iBAAmB,SAASj/+B,EAAUr0E,GAGtD,OAFAA,EAAM19K,KAAKmpB,QAAQ4mtC,wBAAwBh++B,EAAU,GAAKr0E,GAC1DA,EAAM19K,KAAKkxuC,qBAAqBxzjC,GAC5B19K,KAAKmpB,QAAQ0mtC,2BAAqC,SAARnyjC,EACrC,IAAMq0E,EACD,IAAMA,EAAW,KAAOr0E,EAAM,GAC9C,EAWA4yjC,EAAQ5wuC,UAAUmxuC,gBAAkB,SAASnzjC,EAAK74J,EAAK0ptC,EAAS7+qC,GAC9D,GAAW,KAARguH,EACD,MAAc,MAAX74J,EAAI,GAAoB7kB,KAAKywuC,UAAU/grC,GAAS,IAAM7qC,EAAM0ptC,EAAS,IAAMvuuC,KAAK0wuC,WAE1E1wuC,KAAKywuC,UAAU/grC,GAAS,IAAM7qC,EAAM0ptC,EAAUvuuC,KAAKsxuC,SAASzstC,GAAO7kB,KAAK0wuC,WAE9E,CAEH,IAAIa,EAAY,KAAO1stC,EAAM7kB,KAAK0wuC,WAC9Bc,EAAgB,GAQpB,MANc,MAAX3stC,EAAI,KACL2stC,EAAgB,IAChBD,EAAY,KAIThD,GAAuB,KAAZA,IAAyC,IAAtB7wjC,EAAIl9K,QAAQ,MAEH,IAAjCR,KAAKmpB,QAAQ8mtC,iBAA6BprtC,IAAQ7kB,KAAKmpB,QAAQ8mtC,iBAA4C,IAAzBuB,EAAcnxuC,OAClGL,KAAKywuC,UAAU/grC,GAAS,UAAOguH,UAAW19K,KAAKiq+B,QAGpDjq+B,KAAKywuC,UAAU/grC,GAAS,IAAM7qC,EAAM0ptC,EAAUiD,EAAgBxxuC,KAAK0wuC,WACnEhzjC,EACA19K,KAAKywuC,UAAU/grC,GAAS6hrC,EAPjBvxuC,KAAKywuC,UAAU/grC,GAAS,IAAO7qC,EAAM0ptC,EAAUiD,EAAgB,IAAM9zjC,EAAM6zjC,CASxF,CACF,EAEAjB,EAAQ5wuC,UAAU4xuC,SAAW,SAASzstC,GACpC,IAAIystC,EAAW,GAQf,OAP+C,IAA5CtxuC,KAAKmpB,QAAQsktC,aAAajtuC,QAAQqkB,GAC/B7kB,KAAKmpB,QAAQymtC,uBAAsB0B,EAAW,KAElDA,EADOtxuC,KAAKmpB,QAAQwmtC,kBACT,IAEA,MAAM9qtC,IAEZystC,CACT,EAcAhB,EAAQ5wuC,UAAUkxuC,iBAAmB,SAASlzjC,EAAK74J,EAAK0ptC,EAAS7+qC,GAC/D,IAAmC,IAA/B1vD,KAAKmpB,QAAQsmtC,eAA2B5qtC,IAAQ7kB,KAAKmpB,QAAQsmtC,cAC/D,OAAOzvuC,KAAKywuC,UAAU/grC,GAAS,YAAYguH,OAAY19K,KAAKiq+B,QACxD,IAAqC,IAAjCjq+B,KAAKmpB,QAAQ8mtC,iBAA6BprtC,IAAQ7kB,KAAKmpB,QAAQ8mtC,gBACvE,OAAOjwuC,KAAKywuC,UAAU/grC,GAAS,UAAOguH,UAAY19K,KAAKiq+B,QACnD,GAAc,MAAXpl9B,EAAI,GACX,OAAQ7kB,KAAKywuC,UAAU/grC,GAAS,IAAM7qC,EAAM0ptC,EAAS,IAAMvuuC,KAAK0wuC,WAC7D,CACH,IAAIx3kB,EAAYl5pB,KAAKmpB,QAAQ2mtC,kBAAkBjrtC,EAAK64J,GAGpD,OAFAw7e,EAAYl5pB,KAAKkxuC,qBAAqBh4kB,GAEpB,KAAdA,EACKl5pB,KAAKywuC,UAAU/grC,GAAS,IAAM7qC,EAAM0ptC,EAAUvuuC,KAAKsxuC,SAASzstC,GAAO7kB,KAAK0wuC,WAExE1wuC,KAAKywuC,UAAU/grC,GAAS,IAAM7qC,EAAM0ptC,EAAU,IAClDr1kB,EACD,KAAOr0oB,EAAM7kB,KAAK0wuC,UAExB,CACF,EAEAJ,EAAQ5wuC,UAAUwxuC,qBAAuB,SAASh4kB,GAChD,GAAGA,GAAaA,EAAU74pB,OAAS,GAAKL,KAAKmpB,QAAQgntC,gBACnD,IAAK,IAAIvvuC,EAAE,EAAGA,EAAEZ,KAAKmpB,QAAQ+mtC,SAAS7vuC,OAAQO,IAAK,CACjD,MAAM41/B,EAASx2/B,KAAKmpB,QAAQ+mtC,SAAStvuC,GACrCs4pB,EAAYA,EAAUzspB,QAAQ+p/B,EAAOrp0B,MAAOqp0B,EAAO940B,IACrD,CAEF,OAAOw7e,CACT,EAcAp8nB,EAAOr6B,QAAU6tuC,aC7PjB,SAASmB,EAAShzgC,EAAKt1M,EAASuotC,EAAOC,GACnC,IAAIC,EAAS,GACTC,GAAuB,EAE3B,IAAK,IAAIjxuC,EAAI,EAAGA,EAAI69N,EAAIp+N,OAAQO,IAAK,CACjC,MAAMkxuC,EAASrzgC,EAAI79N,GACbq6D,EAAUswF,EAASumlC,GACzB,QAAe/jsC,IAAZktB,EAAuB,SAE1B,IAAI82qC,EAAW,GAIf,GAHwBA,EAAH,IAAjBL,EAAMrxuC,OAAyB46D,EACnB,GAAGy2qC,KAASz2qC,IAExBA,IAAY9xC,EAAQmjJ,aAAc,CAClC,IAAI0lkC,EAAUF,EAAO72qC,GAChBg3qC,EAAWF,EAAU5otC,KACtB6otC,EAAU7otC,EAAQ2mtC,kBAAkB70qC,EAAS+2qC,GAC7CA,EAAUd,EAAqBc,EAAS7otC,IAExC0otC,IACAD,GAAUD,GAEdC,GAAUI,EACVH,GAAuB,EACvB,QACJ,CAAO,GAAI52qC,IAAY9xC,EAAQsmtC,cAAe,CACtCoC,IACAD,GAAUD,GAEdC,GAAU,YAAYE,EAAO72qC,GAAS,GAAG9xC,EAAQmjJ,mBACjDulkC,GAAuB,EACvB,QACJ,CAAO,GAAI52qC,IAAY9xC,EAAQ8mtC,gBAAiB,CAC5C2B,GAAUD,EAAc,UAAOG,EAAO72qC,GAAS,GAAG9xC,EAAQmjJ,sBAC1DulkC,GAAuB,EACvB,QACJ,CAAO,GAAmB,MAAf52qC,EAAQ,GAAY,CAC3B,MAAMi3qC,EAASC,EAAYL,EAAO,MAAO3otC,GACnCiptC,EAAsB,SAAZn3qC,EAAqB,GAAK02qC,EAC1C,IAAIU,EAAiBP,EAAO72qC,GAAS,GAAG9xC,EAAQmjJ,cAChD+lkC,EAA2C,IAA1BA,EAAehyuC,OAAe,IAAMgyuC,EAAiB,GACtET,GAAUQ,EAAU,IAAIn3qC,IAAUo3qC,IAAiBH,MACnDL,GAAuB,EACvB,QACJ,CACA,IAAIS,EAAgBX,EACE,KAAlBW,IACAA,GAAiBnptC,EAAQumtC,UAE7B,MACM6C,EAAWZ,EAAc,IAAI12qC,IADpBk3qC,EAAYL,EAAO,MAAO3otC,KAEnCqptC,EAAWf,EAASK,EAAO72qC,GAAU9xC,EAAS4otC,EAAUO,IACf,IAA3CnptC,EAAQsktC,aAAajtuC,QAAQy6D,GACzB9xC,EAAQymtC,qBAAsBgC,GAAUW,EAAW,IAClDX,GAAUW,EAAW,KACjBC,GAAgC,IAApBA,EAASnyuC,SAAiB8oB,EAAQwmtC,kBAEhD6C,GAAYA,EAASzqrC,SAAS,KACrC6prC,GAAUW,EAAW,IAAIC,IAAWb,MAAgB12qC,MAEpD22qC,GAAUW,EAAW,IACjBC,GAA4B,KAAhBb,IAAuBa,EAASpkuC,SAAS,OAASokuC,EAASpkuC,SAAS,OAChFwjuC,GAAUD,EAAcxotC,EAAQumtC,SAAW8C,EAAWb,EAEtDC,GAAUY,EAEdZ,GAAU,KAAK32qC,MAVf22qC,GAAUW,EAAW,KAYzBV,GAAuB,CAC3B,CAEA,OAAOD,CACX,CAEA,SAASrmlC,EAAS2hE,GACd,MAAM55M,EAAOhU,OAAOgU,KAAK45M,GACzB,IAAK,IAAItsN,EAAI,EAAGA,EAAI0S,EAAKjT,OAAQO,IAAK,CAClC,MAAMikB,EAAMvR,EAAK1S,GACjB,GAAIssN,EAAIvtN,eAAeklB,IACX,OAARA,EAAc,OAAOA,CAC7B,CACJ,CAEA,SAASsttC,EAAYM,EAAStptC,GAC1B,IAAIoltC,EAAU,GACd,GAAIkE,IAAYtptC,EAAQ+jJ,iBACpB,IAAK,IAAI+gX,KAAQwktB,EAAS,CACtB,IAAIA,EAAQ9yuC,eAAesuhB,GAAO,SAClC,IAAIyktB,EAAUvptC,EAAQ4mtC,wBAAwB9htB,EAAMwktB,EAAQxktB,IAC5DyktB,EAAUxB,EAAqBwB,EAASvptC,IACxB,IAAZuptC,GAAoBvptC,EAAQ0mtC,0BAC5BtB,GAAW,IAAItgtB,EAAKxyf,OAAOtS,EAAQgkJ,oBAAoB9sK,UAEvDkuuC,GAAW,IAAItgtB,EAAKxyf,OAAOtS,EAAQgkJ,oBAAoB9sK,YAAYqyuC,IAE3E,CAEJ,OAAOnE,CACX,CAEA,SAAS0D,EAAWP,EAAOvotC,GAEvB,IAAI8xC,GADJy2qC,EAAQA,EAAMj2sC,OAAO,EAAGi2sC,EAAMrxuC,OAAS8oB,EAAQmjJ,aAAajsK,OAAS,IACjDo7B,OAAOi2sC,EAAMzzjC,YAAY,KAAO,GACpD,IAAK,IAAIjhK,KAASmM,EAAQintC,UACtB,GAAIjntC,EAAQintC,UAAUpztC,KAAW00tC,GAASvotC,EAAQintC,UAAUpztC,KAAW,KAAOi+C,EAAS,OAAO,EAElG,OAAO,CACX,CAEA,SAASi2qC,EAAqBh4kB,EAAW/voB,GACrC,GAAI+voB,GAAaA,EAAU74pB,OAAS,GAAK8oB,EAAQgntC,gBAC7C,IAAK,IAAIvvuC,EAAI,EAAGA,EAAIuoB,EAAQ+mtC,SAAS7vuC,OAAQO,IAAK,CAC9C,MAAM41/B,EAASrt+B,EAAQ+mtC,SAAStvuC,GAChCs4pB,EAAYA,EAAUzspB,QAAQ+p/B,EAAOrp0B,MAAOqp0B,EAAO940B,IACvD,CAEJ,OAAOw7e,CACX,CACAp8nB,EAAOr6B,QA9HP,SAAekwuC,EAAQxptC,GACnB,IAAIwotC,EAAc,GAIlB,OAHIxotC,EAAQ+7C,QAAU/7C,EAAQumtC,SAASrvuC,OAAS,IAC5CsxuC,EAXI,MAaDF,EAASkB,EAAQxptC,EAAS,GAAIwotC,EACzC,kBCdA,MAAMnE,EAAO,EAAQ,OA+DrB,SAASoF,EAAchF,EAAQhtuC,GAW3B,IAAIiyuC,EAAa,GACjB,KAAOjyuC,EAAIgtuC,EAAQvtuC,QAA0B,MAAfutuC,EAAQhtuC,IAA6B,MAAfgtuC,EAAQhtuC,GAAcA,IAGtEiyuC,GAAcjF,EAAQhtuC,GAG1B,GADAiyuC,EAAaA,EAAWxgtC,QACQ,IAA7BwgtC,EAAWryuC,QAAQ,KAAa,MAAM,IAAIgnB,MAAM,sCAGnD,MAAMyntC,EAAYrB,EAAQhtuC,KAC1B,IAAI88K,EAAM,GACV,KAAO98K,EAAIgtuC,EAAQvtuC,QAAUutuC,EAAQhtuC,KAAOquuC,EAAYruuC,IACpD88K,GAAOkwjC,EAAQhtuC,GAEnB,MAAO,CAACiyuC,EAAYn1jC,EAAK98K,EAC7B,CAEA,SAASkyuC,EAAUlF,EAAShtuC,GACxB,MAAoB,MAAjBgtuC,EAAQhtuC,EAAE,IACI,MAAjBgtuC,EAAQhtuC,EAAE,IACO,MAAjBgtuC,EAAQhtuC,EAAE,EAEd,CACA,SAASmyuC,EAASnF,EAAShtuC,GACvB,MAAoB,MAAjBgtuC,EAAQhtuC,EAAE,IACI,MAAjBgtuC,EAAQhtuC,EAAE,IACO,MAAjBgtuC,EAAQhtuC,EAAE,IACO,MAAjBgtuC,EAAQhtuC,EAAE,IACO,MAAjBgtuC,EAAQhtuC,EAAE,IACO,MAAjBgtuC,EAAQhtuC,EAAE,IACO,MAAjBgtuC,EAAQhtuC,EAAE,EAEd,CACA,SAASoyuC,EAAUpF,EAAShtuC,GACxB,MAAoB,MAAjBgtuC,EAAQhtuC,EAAE,IACI,MAAjBgtuC,EAAQhtuC,EAAE,IACO,MAAjBgtuC,EAAQhtuC,EAAE,IACO,MAAjBgtuC,EAAQhtuC,EAAE,IACO,MAAjBgtuC,EAAQhtuC,EAAE,IACO,MAAjBgtuC,EAAQhtuC,EAAE,IACO,MAAjBgtuC,EAAQhtuC,EAAE,IACO,MAAjBgtuC,EAAQhtuC,EAAE,EAEd,CAEA,SAASqyuC,EAAUrF,EAAShtuC,GACxB,MAAoB,MAAjBgtuC,EAAQhtuC,EAAE,IACI,MAAjBgtuC,EAAQhtuC,EAAE,IACO,MAAjBgtuC,EAAQhtuC,EAAE,IACO,MAAjBgtuC,EAAQhtuC,EAAE,IACO,MAAjBgtuC,EAAQhtuC,EAAE,IACO,MAAjBgtuC,EAAQhtuC,EAAE,IACO,MAAjBgtuC,EAAQhtuC,EAAE,IACO,MAAjBgtuC,EAAQhtuC,EAAE,EAEd,CACA,SAASsyuC,EAAWtF,EAAShtuC,GACzB,MAAoB,MAAjBgtuC,EAAQhtuC,EAAE,IACI,MAAjBgtuC,EAAQhtuC,EAAE,IACO,MAAjBgtuC,EAAQhtuC,EAAE,IACO,MAAjBgtuC,EAAQhtuC,EAAE,IACO,MAAjBgtuC,EAAQhtuC,EAAE,IACO,MAAjBgtuC,EAAQhtuC,EAAE,IACO,MAAjBgtuC,EAAQhtuC,EAAE,IACO,MAAjBgtuC,EAAQhtuC,EAAE,IACO,MAAjBgtuC,EAAQhtuC,EAAE,EAEd,CAEA,SAASuyuC,EAAmBzouC,GACxB,GAAI8iuC,EAAKH,OAAO3iuC,GACnB,OAAOA,EAEA,MAAM,IAAI8c,MAAM,uBAAuB9c,IAC/C,CAEAoyB,EAAOr6B,QApJP,SAAqBmruC,EAAShtuC,GAE1B,MAAMsvuC,EAAW,CAAC,EAClB,GAAuB,MAAnBtC,EAAQhtuC,EAAI,IACQ,MAAnBgtuC,EAAQhtuC,EAAI,IACO,MAAnBgtuC,EAAQhtuC,EAAI,IACO,MAAnBgtuC,EAAQhtuC,EAAI,IACO,MAAnBgtuC,EAAQhtuC,EAAI,IACO,MAAnBgtuC,EAAQhtuC,EAAI,GA+Cb,MAAM,IAAI4mB,MAAM,kCA9CpB,CACI5mB,GAAM,EACN,IAAIqtuC,EAAqB,EACrBmF,GAAU,EAAOx6oC,GAAU,EAC3B7kE,EAAM,GACV,KAAKnzB,EAAEgtuC,EAAQvtuC,OAAOO,IAClB,GAAmB,MAAfgtuC,EAAQhtuC,IAAeg4F,EAkBpB,GAAmB,MAAfg1oC,EAAQhtuC,IASf,GARGg4F,EACwB,MAAnBg1oC,EAAQhtuC,EAAI,IAAiC,MAAnBgtuC,EAAQhtuC,EAAI,KACtCg4F,GAAU,EACVq1oC,KAGJA,IAEuB,IAAvBA,EACF,UAEmB,MAAfL,EAAQhtuC,GACdwyuC,GAAU,EAEVr/sC,GAAO65sC,EAAQhtuC,OAjCiB,CAChC,GAAIwyuC,GAAWL,EAASnF,EAAShtuC,GAC7BA,GAAK,GACJiyuC,WAAYn1jC,IAAI98K,GAAKgyuC,EAAchF,EAAQhtuC,EAAE,IACrB,IAAtB88K,IAAIl9K,QAAQ,OACX0vuC,EAAUiD,EAAmBN,aAAgB,CACzCQ,KAAOtrsC,OAAQ,IAAI8qsC,cAAc,KACjCn1jC,WAGP,GAAI01jC,GAAWJ,EAAUpF,EAAShtuC,GAAKA,GAAK,OAC5C,GAAIwyuC,GAAWH,EAAUrF,EAAShtuC,GAAKA,GAAK,OAC5C,GAAIwyuC,GAAWF,EAAWtF,EAAShtuC,GAAIA,GAAK,MAC5C,KAAIkyuC,EACmC,MAAM,IAAItrtC,MAAM,mBADhBoxE,GAAU,CACwB,CAE9Eq1oC,IACAl6sC,EAAM,EACV,CAkBJ,GAA0B,IAAvBk6sC,EACC,MAAM,IAAIzmtC,MAAM,mBAExB,CAGA,MAAO,CAAC0otC,WAAUtvuC,IACtB,iBC5DA,MAAM+wQ,EAAiB,CACnBq+9B,eAAe,EACf7ikC,oBAAqB,KACrBqikC,qBAAqB,EACrBljkC,aAAc,QACdY,kBAAkB,EAClBb,gBAAgB,EAChBM,wBAAwB,EAExB2mkC,eAAe,EACfC,qBAAqB,EACrBC,YAAY,EACZ/D,eAAe,EACfgE,mBAAoB,CAClB19iC,KAAK,EACL29iC,cAAc,EACdC,WAAW,GAEb7D,kBAAmB,SAAS70qC,EAASyiH,GACnC,OAAOA,CACT,EACAqyjC,wBAAyB,SAASh++B,EAAUr0E,GAC1C,OAAOA,CACT,EACA0yjC,UAAW,GACXwD,sBAAsB,EACtBjiuC,QAAS,KAAM,EACfs+tC,iBAAiB,EACjBxC,aAAc,GACd0C,iBAAiB,EACjB0D,cAAc,EACdjnkC,mBAAmB,EACnBknkC,cAAc,EACdC,kBAAkB,EAClBC,wBAAwB,EACxBC,UAAW,SAASh5qC,EAASy2qC,EAAOvkM,GAClC,OAAOly+B,CACT,GAQJx4D,EAAQyxuC,aAJa,SAAS/qtC,GAC1B,OAAO7pB,OAAOa,OAAO,CAAC,EAAGwxQ,EAAgBxoP,EAC7C,EAGA1mB,EAAQkvQ,eAAiBA,gCC5CzB,MAAM679B,EAAO,EAAQ,OACflyH,EAAU,EAAQ,OAClB64H,EAAc,EAAQ,MACtBjlhC,EAAW,EAAQ,OAqDzB,SAASklhC,EAAoBC,GAC3B,MAAMC,EAAUh1uC,OAAOgU,KAAK+guC,GAC5B,IAAK,IAAIzzuC,EAAI,EAAGA,EAAI0zuC,EAAQj0uC,OAAQO,IAAK,CACvC,MAAM2zuC,EAAMD,EAAQ1zuC,GACpBZ,KAAKw0uC,aAAaD,GAAO,CACtBpnjC,MAAO,IAAIplJ,OAAO,IAAIwssC,EAAI,IAAI,KAC9B72jC,IAAM22jC,EAAiBE,GAE5B,CACF,CAWA,SAASE,EAAc/2jC,EAAKziH,EAASy2qC,EAAOgD,EAAUC,EAAe7nkC,EAAY8nkC,GAC/E,QAAY7msC,IAAR2vI,IACE19K,KAAKmpB,QAAQqqtC,aAAekB,IAC9Bh3jC,EAAMA,EAAIrrJ,QAETqrJ,EAAIr9K,OAAS,GAAE,CACZu0uC,IAAgBl3jC,EAAM19K,KAAKkxuC,qBAAqBxzjC,IAEpD,MAAMuzjC,EAASjxuC,KAAKmpB,QAAQ2mtC,kBAAkB70qC,EAASyiH,EAAKg0jC,EAAOiD,EAAe7nkC,GAClF,OAAGmkkC,QAEMvzjC,SACOuzjC,UAAkBvzjC,GAAOuzjC,IAAWvzjC,EAE3CuzjC,EACAjxuC,KAAKmpB,QAAQqqtC,YAGD91jC,EAAIrrJ,SACLqrJ,EAHXyxY,EAAWzxY,EAAK19K,KAAKmpB,QAAQmqtC,cAAetzuC,KAAKmpB,QAAQsqtC,oBAMvD/1jC,CAGb,CAEJ,CAEA,SAASm3jC,EAAiBhH,GACxB,GAAI7tuC,KAAKmpB,QAAQkjJ,eAAgB,CAC/B,MAAMhyG,EAAOwzqC,EAAQjpuC,MAAM,KACrB2tB,EAA+B,MAAtBs7sC,EAAQh1tC,OAAO,GAAa,IAAM,GACjD,GAAgB,UAAZwhD,EAAK,GACP,MAAO,GAEW,IAAhBA,EAAKh6D,SACPwtuC,EAAUt7sC,EAAS8nC,EAAK,GAE5B,CACA,OAAOwzqC,CACT,CAIA,MAAMiH,EAAY,IAAI/ssC,OAAO,+CAAgD,MAE7E,SAASgtsC,EAAmBxG,EAASmD,EAAOz2qC,GAC1C,IAAKj7D,KAAKmpB,QAAQ+jJ,kBAAuC,iBAAZqhkC,EAAsB,CAIjE,MAAMt6qC,EAAUu5qC,EAAKF,cAAciB,EAASuG,GACtCj2mC,EAAM5qE,EAAQ5zD,OACd8siC,EAAQ,CAAC,EACf,IAAK,IAAIvsiC,EAAI,EAAGA,EAAIi+H,EAAKj+H,IAAK,CAC5B,MAAMmxP,EAAW/xP,KAAK60uC,iBAAiB5grC,EAAQrzD,GAAG,IAClD,IAAIo0uC,EAAS/grC,EAAQrzD,GAAG,GACpBq0uC,EAAQj1uC,KAAKmpB,QAAQgkJ,oBAAsB4kF,EAC/C,GAAIA,EAAS1xP,OAKX,GAJIL,KAAKmpB,QAAQ6qtC,yBACfiB,EAAQj1uC,KAAKmpB,QAAQ6qtC,uBAAuBiB,IAEjC,cAAVA,IAAuBA,EAAS,mBACpBlnsC,IAAXinsC,EAAsB,CACpBh1uC,KAAKmpB,QAAQqqtC,aACfwB,EAASA,EAAO3itC,QAElB2itC,EAASh1uC,KAAKkxuC,qBAAqB8D,GACnC,MAAM/grB,EAASj0jB,KAAKmpB,QAAQ4mtC,wBAAwBh++B,EAAUij/B,EAAQtD,GAGpEvkM,EAAM8nM,GAFLhhrB,QAEc+grB,SACD/grB,UAAkB+grB,GAAU/grB,IAAW+grB,EAEtC/grB,EAGA9E,EACb6lrB,EACAh1uC,KAAKmpB,QAAQoqtC,oBACbvzuC,KAAKmpB,QAAQsqtC,mBAGnB,MAAWzzuC,KAAKmpB,QAAQwjJ,yBACtBwg4B,EAAM8nM,IAAS,EAGrB,CACA,IAAK31uC,OAAOgU,KAAK65hC,GAAO9siC,OACtB,OAEF,GAAIL,KAAKmpB,QAAQqmtC,oBAAqB,CACpC,MAAM0F,EAAiB,CAAC,EAExB,OADAA,EAAel1uC,KAAKmpB,QAAQqmtC,qBAAuBriM,EAC5C+nM,CACT,CACA,OAAO/nM,CACT,CACF,CAEA,MAAMgoM,EAAW,SAASvH,GACxBA,EAAUA,EAAQnhuC,QAAQ,SAAU,MACpC,MAAM2ouC,EAAS,IAAI95H,EAAQ,QAC3B,IAAI/4gB,EAAc6yoB,EACdC,EAAW,GACX3D,EAAQ,GACZ,IAAI,IAAI9wuC,EAAE,EAAGA,EAAGgtuC,EAAQvtuC,OAAQO,IAE9B,GAAU,MADCgtuC,EAAQhtuC,GAIjB,GAAqB,MAAjBgtuC,EAAQhtuC,EAAE,GAAY,CACxB,MAAM00uC,EAAaC,EAAiB3H,EAAS,IAAKhtuC,EAAG,8BACrD,IAAIq6D,EAAU2yqC,EAAQt2sC,UAAU12B,EAAE,EAAE00uC,GAAYjjtC,OAEhD,GAAGryB,KAAKmpB,QAAQkjJ,eAAe,CAC7B,MAAMmpkC,EAAav6qC,EAAQz6D,QAAQ,MAChB,IAAhBg1uC,IACDv6qC,EAAUA,EAAQx/B,OAAO+5sC,EAAW,GAExC,CAEGx1uC,KAAKmpB,QAAQ4qtC,mBACd94qC,EAAUj7D,KAAKmpB,QAAQ4qtC,iBAAiB94qC,IAGvCsniB,IACD8yoB,EAAWr1uC,KAAKy1uC,oBAAoBJ,EAAU9yoB,EAAamvoB,IAI7D,MAAMgE,EAAchE,EAAMp6sC,UAAUo6sC,EAAMzzjC,YAAY,KAAK,GAC3D,GAAGhjH,IAA2D,IAAhDj7D,KAAKmpB,QAAQsktC,aAAajtuC,QAAQy6D,GAC9C,MAAM,IAAIzzC,MAAM,kDAAkDyzC,MAEpE,IAAIohW,EAAY,EACbq50B,IAAmE,IAApD11uC,KAAKmpB,QAAQsktC,aAAajtuC,QAAQk1uC,IAClDr50B,EAAYq10B,EAAMzzjC,YAAY,IAAKyzjC,EAAMzzjC,YAAY,KAAK,GAC1Dj+K,KAAK21uC,cAAc/zuC,OAEnBy6Z,EAAYq10B,EAAMzzjC,YAAY,KAEhCyzjC,EAAQA,EAAMp6sC,UAAU,EAAG+kY,GAE3BkmM,EAAcvimB,KAAK21uC,cAAc/zuC,MACjCyzuC,EAAW,GACXz0uC,EAAI00uC,CACN,MAAO,GAAqB,MAAjB1H,EAAQhtuC,EAAE,GAAY,CAE/B,IAAIg1uC,EAAUC,EAAWjI,EAAQhtuC,GAAG,EAAO,MAC3C,IAAIg1uC,EAAS,MAAM,IAAIputC,MAAM,yBAG7B,GADA6ttC,EAAWr1uC,KAAKy1uC,oBAAoBJ,EAAU9yoB,EAAamvoB,GACtD1xuC,KAAKmpB,QAAQyjJ,mBAAyC,SAApBgpkC,EAAQ36qC,SAAuBj7D,KAAKmpB,QAAQ2qtC,kBAE9E,CAEH,MAAMr4sB,EAAY,IAAI6/kB,EAAQs6H,EAAQ36qC,SACtCwge,EAAUt2gB,IAAInlB,KAAKmpB,QAAQmjJ,aAAc,IAEtCspkC,EAAQ36qC,UAAY26qC,EAAQE,QAAUF,EAAQG,iBAC/Ct6sB,EAAU,MAAQz7hB,KAAK+0uC,mBAAmBa,EAAQE,OAAQpE,EAAOkE,EAAQ36qC,UAE3Ej7D,KAAK42f,SAAS2rG,EAAa9mE,EAAWi2sB,EAExC,CAGA9wuC,EAAIg1uC,EAAQN,WAAa,CAC3B,MAAO,GAAgC,QAA7B1H,EAAQnysC,OAAO76B,EAAI,EAAG,GAAc,CAC5C,MAAMg/H,EAAW21mC,EAAiB3H,EAAS,SAAOhtuC,EAAE,EAAG,0BACvD,GAAGZ,KAAKmpB,QAAQ8mtC,gBAAgB,CAC9B,MAAMr3oC,EAAUg1oC,EAAQt2sC,UAAU12B,EAAI,EAAGg/H,EAAW,GAEpDy1mC,EAAWr1uC,KAAKy1uC,oBAAoBJ,EAAU9yoB,EAAamvoB,GAE3DnvoB,EAAYp9kB,IAAInlB,KAAKmpB,QAAQ8mtC,gBAAiB,CAAE,CAAE,CAACjwuC,KAAKmpB,QAAQmjJ,cAAgB1zE,IAClF,CACAh4F,EAAIg/H,CACN,MAAO,GAAiC,OAA7BgumC,EAAQnysC,OAAO76B,EAAI,EAAG,GAAa,CAC5C,MAAM4iB,EAAS2wtC,EAAYvG,EAAShtuC,GACpCZ,KAAKg2uC,gBAAkBxytC,EAAO0stC,SAC9BtvuC,EAAI4iB,EAAO5iB,CACb,MAAM,GAAgC,OAA7BgtuC,EAAQnysC,OAAO76B,EAAI,EAAG,GAAa,CAC1C,MAAM00uC,EAAaC,EAAiB3H,EAAS,MAAOhtuC,EAAG,wBAA0B,EAC3Ek1uC,EAASlI,EAAQt2sC,UAAU12B,EAAI,EAAE00uC,GAEvCD,EAAWr1uC,KAAKy1uC,oBAAoBJ,EAAU9yoB,EAAamvoB,GAE3D,IAAIh0jC,EAAM19K,KAAKy0uC,cAAcqB,EAAQvzoB,EAAYsroB,QAAS6D,GAAO,GAAM,GAAO,GAAM,GAC1E3jsC,MAAP2vI,IAAkBA,EAAM,IAGxB19K,KAAKmpB,QAAQsmtC,cACdltoB,EAAYp9kB,IAAInlB,KAAKmpB,QAAQsmtC,cAAe,CAAE,CAAE,CAACzvuC,KAAKmpB,QAAQmjJ,cAAgBwpkC,KAE9EvzoB,EAAYp9kB,IAAInlB,KAAKmpB,QAAQmjJ,aAAcoR,GAG7C98K,EAAI00uC,EAAa,CACnB,KAAM,CACJ,IAAI9xtC,EAASqytC,EAAWjI,EAAQhtuC,EAAGZ,KAAKmpB,QAAQkjJ,gBAC5CpxG,EAASz3C,EAAOy3C,QACpB,MAAMg7qC,EAAazytC,EAAOyytC,WAC1B,IAAIH,EAAStytC,EAAOsytC,OAChBC,EAAiBvytC,EAAOuytC,eACxBT,EAAa9xtC,EAAO8xtC,WAEpBt1uC,KAAKmpB,QAAQ4qtC,mBACf94qC,EAAUj7D,KAAKmpB,QAAQ4qtC,iBAAiB94qC,IAItCsniB,GAAe8yoB,GACU,SAAxB9yoB,EAAYsroB,UAEbwH,EAAWr1uC,KAAKy1uC,oBAAoBJ,EAAU9yoB,EAAamvoB,GAAO,IAKtE,MAAMwE,EAAU3zoB,EAQhB,GAPG2zoB,IAAmE,IAAxDl2uC,KAAKmpB,QAAQsktC,aAAajtuC,QAAQ01uC,EAAQrI,WACtDtroB,EAAcvimB,KAAK21uC,cAAc/zuC,MACjC8vuC,EAAQA,EAAMp6sC,UAAU,EAAGo6sC,EAAMzzjC,YAAY,OAE5ChjH,IAAYm6qC,EAAOvH,UACpB6D,GAASA,EAAQ,IAAMz2qC,EAAUA,GAE/Bj7D,KAAKm2uC,aAAan2uC,KAAKmpB,QAAQintC,UAAWsB,EAAOz2qC,GAAU,CAC7D,IAAIm7qC,EAAa,GAEjB,GAAGN,EAAOz1uC,OAAS,GAAKy1uC,EAAO73jC,YAAY,OAAS63jC,EAAOz1uC,OAAS,EAC/B,MAAhC46D,EAAQA,EAAQ56D,OAAS,IAC1B46D,EAAUA,EAAQx/B,OAAO,EAAGw/B,EAAQ56D,OAAS,GAC7CqxuC,EAAQA,EAAMj2sC,OAAO,EAAGi2sC,EAAMrxuC,OAAS,GACvCy1uC,EAAS76qC,GAET66qC,EAASA,EAAOr6sC,OAAO,EAAGq6sC,EAAOz1uC,OAAS,GAE5CO,EAAI4iB,EAAO8xtC,gBAGR,IAAmD,IAAhDt1uC,KAAKmpB,QAAQsktC,aAAajtuC,QAAQy6D,GAExCr6D,EAAI4iB,EAAO8xtC,eAGT,CAEF,MAAM9xtC,EAASxjB,KAAKq2uC,iBAAiBzI,EAASqI,EAAYX,EAAa,GACvE,IAAI9xtC,EAAQ,MAAM,IAAIgE,MAAM,qBAAqByutC,KACjDr1uC,EAAI4iB,EAAO5iB,EACXw1uC,EAAa5ytC,EAAO4ytC,UACtB,CAEA,MAAM36sB,EAAY,IAAI6/kB,EAAQrgjC,GAC3BA,IAAY66qC,GAAUC,IACvBt6sB,EAAU,MAAQz7hB,KAAK+0uC,mBAAmBe,EAAQpE,EAAOz2qC,IAExDm7qC,IACDA,EAAap2uC,KAAKy0uC,cAAc2B,EAAYn7qC,EAASy2qC,GAAO,EAAMqE,GAAgB,GAAM,IAG1FrE,EAAQA,EAAMj2sC,OAAO,EAAGi2sC,EAAMzzjC,YAAY,MAC1Cw9W,EAAUt2gB,IAAInlB,KAAKmpB,QAAQmjJ,aAAc8pkC,GAEzCp2uC,KAAK42f,SAAS2rG,EAAa9mE,EAAWi2sB,EACxC,KAAK,CAEH,GAAGoE,EAAOz1uC,OAAS,GAAKy1uC,EAAO73jC,YAAY,OAAS63jC,EAAOz1uC,OAAS,EAAE,CACjC,MAAhC46D,EAAQA,EAAQ56D,OAAS,IAC1B46D,EAAUA,EAAQx/B,OAAO,EAAGw/B,EAAQ56D,OAAS,GAC7CqxuC,EAAQA,EAAMj2sC,OAAO,EAAGi2sC,EAAMrxuC,OAAS,GACvCy1uC,EAAS76qC,GAET66qC,EAASA,EAAOr6sC,OAAO,EAAGq6sC,EAAOz1uC,OAAS,GAGzCL,KAAKmpB,QAAQ4qtC,mBACd94qC,EAAUj7D,KAAKmpB,QAAQ4qtC,iBAAiB94qC,IAG1C,MAAMwge,EAAY,IAAI6/kB,EAAQrgjC,GAC3BA,IAAY66qC,GAAUC,IACvBt6sB,EAAU,MAAQz7hB,KAAK+0uC,mBAAmBe,EAAQpE,EAAOz2qC,IAE3Dj7D,KAAK42f,SAAS2rG,EAAa9mE,EAAWi2sB,GACtCA,EAAQA,EAAMj2sC,OAAO,EAAGi2sC,EAAMzzjC,YAAY,KAC5C,KAEI,CACF,MAAMw9W,EAAY,IAAI6/kB,EAASrgjC,GAC/Bj7D,KAAK21uC,cAAc9zuC,KAAK0gmB,GAErBtniB,IAAY66qC,GAAUC,IACvBt6sB,EAAU,MAAQz7hB,KAAK+0uC,mBAAmBe,EAAQpE,EAAOz2qC,IAE3Dj7D,KAAK42f,SAAS2rG,EAAa9mE,EAAWi2sB,GACtCnvoB,EAAc9mE,CAChB,CACA45sB,EAAW,GACXz0uC,EAAI00uC,CACN,CACF,MAEAD,GAAYzH,EAAQhtuC,GAGxB,OAAOw0uC,EAAOlrpC,KAChB,EAEA,SAAS0sa,EAAS2rG,EAAa9mE,EAAWi2sB,GACxC,MAAMlutC,EAASxjB,KAAKmpB,QAAQ8qtC,UAAUx4sB,EAAUoysB,QAAS6D,EAAOj2sB,EAAU,QAC5D,IAAXj4gB,IACwB,iBAAXA,GACdi4gB,EAAUoysB,QAAUrqtC,EACpB++kB,EAAY3rG,SAAS6kC,IAErB8mE,EAAY3rG,SAAS6kC,GAEzB,CAEA,MAAMy1sB,EAAuB,SAASxzjC,GAEpC,GAAG19K,KAAKmpB,QAAQgntC,gBAAgB,CAC9B,IAAI,IAAI0C,KAAc7yuC,KAAKg2uC,gBAAgB,CACzC,MAAMx/O,EAASx2/B,KAAKg2uC,gBAAgBnD,GACpCn1jC,EAAMA,EAAIjxK,QAAS+p/B,EAAO68O,KAAM78O,EAAO940B,IACzC,CACA,IAAI,IAAIm1jC,KAAc7yuC,KAAKw0uC,aAAa,CACtC,MAAMh+O,EAASx2/B,KAAKw0uC,aAAa3B,GACjCn1jC,EAAMA,EAAIjxK,QAAS+p/B,EAAOrp0B,MAAOqp0B,EAAO940B,IAC1C,CACA,GAAG19K,KAAKmpB,QAAQ0qtC,aACd,IAAI,IAAIhB,KAAc7yuC,KAAK6zuC,aAAa,CACtC,MAAMr9O,EAASx2/B,KAAK6zuC,aAAahB,GACjCn1jC,EAAMA,EAAIjxK,QAAS+p/B,EAAOrp0B,MAAOqp0B,EAAO940B,IAC1C,CAEFA,EAAMA,EAAIjxK,QAASzM,KAAKs2uC,UAAUnpjC,MAAOntL,KAAKs2uC,UAAU54jC,IAC1D,CACA,OAAOA,CACT,EACA,SAAS+3jC,EAAoBJ,EAAU9yoB,EAAamvoB,EAAO5kkC,GAezD,OAdIuokC,SACgBtnsC,IAAf++H,IAA0BA,EAAuD,IAA1CxtK,OAAOgU,KAAKivlB,EAAYr4gB,OAAO7pF,aASxD0tC,KAPjBsnsC,EAAWr1uC,KAAKy0uC,cAAcY,EAC5B9yoB,EAAYsroB,QACZ6D,GACA,IACAnvoB,EAAY,OAAkD,IAA1CjjmB,OAAOgU,KAAKivlB,EAAY,OAAOlimB,OACnDysK,KAEyC,KAAbuokC,GAC5B9yoB,EAAYp9kB,IAAInlB,KAAKmpB,QAAQmjJ,aAAc+okC,GAC7CA,EAAW,IAENA,CACT,CASA,SAASc,EAAa/F,EAAWsB,EAAO6E,GACtC,MAAMC,EAAc,KAAOD,EAC3B,IAAK,MAAME,KAAgBrG,EAAW,CACpC,MAAMsG,EAActG,EAAUqG,GAC9B,GAAID,IAAgBE,GAAehF,IAAUgF,EAAe,OAAO,CACrE,CACA,OAAO,CACT,CAsCA,SAASnB,EAAiB3H,EAASj3pC,EAAK/1E,EAAGuhhC,GACzC,MAAMw0N,EAAe/I,EAAQptuC,QAAQm2E,EAAK/1E,GAC1C,IAAqB,IAAlB+1uC,EACD,MAAM,IAAInvtC,MAAM26/B,GAEhB,OAAOw0N,EAAehgqC,EAAIt2E,OAAS,CAEvC,CAEA,SAASw1uC,EAAWjI,EAAQhtuC,EAAGyrK,EAAgBuqkC,EAAc,KAC3D,MAAMpztC,EAxCR,SAAgCoqtC,EAAShtuC,EAAGg2uC,EAAc,KACxD,IAAIC,EACAf,EAAS,GACb,IAAK,IAAI94tC,EAAQpc,EAAGoc,EAAQ4wtC,EAAQvtuC,OAAQ2c,IAAS,CACnD,IAAIuvQ,EAAKqh9B,EAAQ5wtC,GACjB,GAAI65tC,EACItq9B,IAAOsq9B,IAAcA,EAAe,SACrC,GAAW,MAAPtq9B,GAAqB,MAAPA,EACrBsq9B,EAAetq9B,OACZ,GAAIA,IAAOqq9B,EAAY,GAAI,CAChC,IAAGA,EAAY,GAQb,MAAO,CACLpnuC,KAAMsmuC,EACN94tC,MAAOA,GATT,GAAG4wtC,EAAQ5wtC,EAAQ,KAAO45tC,EAAY,GACpC,MAAO,CACLpnuC,KAAMsmuC,EACN94tC,MAAOA,EASf,KAAkB,OAAPuvQ,IACTA,EAAK,KAEPup9B,GAAUvp9B,CACZ,CACF,CAYiBuq9B,CAAuBlJ,EAAShtuC,EAAE,EAAGg2uC,GACpD,IAAIpztC,EAAQ,OACZ,IAAIsytC,EAAStytC,EAAOhU,KACpB,MAAM8luC,EAAa9xtC,EAAOxG,MACpB+5tC,EAAiBjB,EAAOvqrC,OAAO,MACrC,IAAI0P,EAAU66qC,EACVC,GAAiB,GACE,IAApBgB,IACD97qC,EAAU66qC,EAAOx+sC,UAAU,EAAGy/sC,GAC9BjB,EAASA,EAAOx+sC,UAAUy/sC,EAAiB,GAAGC,aAGhD,MAAMf,EAAah7qC,EACnB,GAAGoxG,EAAe,CAChB,MAAMmpkC,EAAav6qC,EAAQz6D,QAAQ,MAChB,IAAhBg1uC,IACDv6qC,EAAUA,EAAQx/B,OAAO+5sC,EAAW,GACpCO,EAAiB96qC,IAAYz3C,EAAOhU,KAAKisB,OAAO+5sC,EAAa,GAEjE,CAEA,MAAO,CACLv6qC,QAASA,EACT66qC,OAAQA,EACRR,WAAYA,EACZS,eAAgBA,EAChBE,WAAYA,EAEhB,CAOA,SAASI,EAAiBzI,EAAS3yqC,EAASr6D,GAC1C,MAAM++H,EAAa/+H,EAEnB,IAAIq2uC,EAAe,EAEnB,KAAOr2uC,EAAIgtuC,EAAQvtuC,OAAQO,IACzB,GAAmB,MAAfgtuC,EAAQhtuC,GACV,GAAqB,MAAjBgtuC,EAAQhtuC,EAAE,GAAY,CACtB,MAAM00uC,EAAaC,EAAiB3H,EAAS,IAAKhtuC,EAAG,GAAGq6D,mBAExD,GADmB2yqC,EAAQt2sC,UAAU12B,EAAE,EAAE00uC,GAAYjjtC,SACjC4oC,IAClBg8qC,IACqB,IAAjBA,GACF,MAAO,CACLb,WAAYxI,EAAQt2sC,UAAUqoG,EAAY/+H,GAC1CA,EAAI00uC,GAIV10uC,EAAE00uC,CACJ,MAAO,GAAoB,MAAjB1H,EAAQhtuC,EAAE,GAElBA,EADmB20uC,EAAiB3H,EAAS,KAAMhtuC,EAAE,EAAG,gCAEnD,GAAgC,QAA7BgtuC,EAAQnysC,OAAO76B,EAAI,EAAG,GAE9BA,EADmB20uC,EAAiB3H,EAAS,SAAOhtuC,EAAE,EAAG,gCAEpD,GAAgC,OAA7BgtuC,EAAQnysC,OAAO76B,EAAI,EAAG,GAE9BA,EADmB20uC,EAAiB3H,EAAS,MAAOhtuC,EAAG,2BAA6B,MAE/E,CACL,MAAMg1uC,EAAUC,EAAWjI,EAAShtuC,EAAG,KAEnCg1uC,KACkBA,GAAWA,EAAQ36qC,WACnBA,GAAuD,MAA5C26qC,EAAQE,OAAOF,EAAQE,OAAOz1uC,OAAO,IAClE42uC,IAEFr2uC,EAAEg1uC,EAAQN,WAEd,CAGR,CAEA,SAASnmrB,EAAWzxY,EAAKw5jC,EAAa/ttC,GACpC,GAAI+ttC,GAA8B,iBAARx5jC,EAAkB,CAE1C,MAAMuzjC,EAASvzjC,EAAIrrJ,OACnB,MAAc,SAAX4+sC,GACgB,UAAXA,GACI/hhC,EAASxxC,EAAKv0J,EAC5B,CACE,OAAIqktC,EAAKL,QAAQzvjC,GACRA,EAEA,EAGb,CAGA5gJ,EAAOr6B,QAzkBP,MACE,WAAAxC,CAAYkpB,GACVnpB,KAAKmpB,QAAUA,EACfnpB,KAAKuimB,YAAc,KACnBvimB,KAAK21uC,cAAgB,GACrB31uC,KAAKg2uC,gBAAkB,CAAC,EACxBh2uC,KAAKw0uC,aAAe,CAClB,KAAS,CAAErnjC,MAAO,qBAAsBzP,IAAM,KAC9C,GAAO,CAAEyP,MAAO,mBAAoBzP,IAAM,KAC1C,GAAO,CAAEyP,MAAO,mBAAoBzP,IAAM,KAC1C,KAAS,CAAEyP,MAAO,qBAAsBzP,IAAM,MAEhD19K,KAAKs2uC,UAAY,CAAEnpjC,MAAO,oBAAqBzP,IAAM,KACrD19K,KAAK6zuC,aAAe,CAClB,MAAS,CAAE1mjC,MAAO,iBAAkBzP,IAAK,KAMzC,KAAS,CAAEyP,MAAO,iBAAkBzP,IAAK,KACzC,MAAU,CAAEyP,MAAO,kBAAmBzP,IAAK,KAC3C,IAAQ,CAAEyP,MAAO,gBAAiBzP,IAAK,KACvC,KAAS,CAAEyP,MAAO,kBAAmBzP,IAAK,KAC1C,UAAc,CAAEyP,MAAO,iBAAkBzP,IAAK,KAC9C,IAAQ,CAAEyP,MAAO,gBAAiBzP,IAAK,KACvC,IAAQ,CAAEyP,MAAO,iBAAkBzP,IAAK,KACxC,QAAW,CAAEyP,MAAO,mBAAoBzP,IAAM,CAAC95K,EAAG+yE,IAAQ72E,OAAO4nB,aAAayd,OAAOxP,SAASghD,EAAK,MACnG,QAAW,CAAEw2G,MAAO,0BAA2BzP,IAAM,CAAC95K,EAAG+yE,IAAQ72E,OAAO4nB,aAAayd,OAAOxP,SAASghD,EAAK,OAE5G32E,KAAKo0uC,oBAAsBA,EAC3Bp0uC,KAAKm1uC,SAAWA,EAChBn1uC,KAAKy0uC,cAAgBA,EACrBz0uC,KAAK60uC,iBAAmBA,EACxB70uC,KAAK+0uC,mBAAqBA,EAC1B/0uC,KAAKm2uC,aAAeA,EACpBn2uC,KAAKkxuC,qBAAuBA,EAC5BlxuC,KAAKq2uC,iBAAmBA,EACxBr2uC,KAAKy1uC,oBAAsBA,EAC3Bz1uC,KAAK42f,SAAWA,CAClB,oBCvDF,MAAM,aAAEs9uB,GAAgB,EAAQ,OAC1BiD,EAAmB,EAAQ,QAC3B,SAAEC,GAAY,EAAQ,OACtBn2U,EAAY,EAAQ,OAsD1Bnk4B,EAAOr6B,QApDP,MAEI,WAAAxC,CAAYkpB,GACRnpB,KAAKq0uC,iBAAmB,CAAC,EACzBr0uC,KAAKmpB,QAAU+qtC,EAAa/qtC,EAEhC,CAMA,KAAAoD,CAAMqhtC,EAAQyJ,GACV,GAAsB,iBAAZzJ,OACJ,KAAIA,EAAQrpuC,SAGd,MAAM,IAAIijB,MAAM,mDAFhBomtC,EAAUA,EAAQrpuC,UAGtB,CACA,GAAI8yuC,EAAiB,EACO,IAArBA,IAA2BA,EAAmB,CAAC,GAElD,MAAM7ztC,EAASy94B,EAAU/q0B,SAAS03oC,EAASyJ,GAC3C,IAAe,IAAX7ztC,EACF,MAAMgE,MAAO,GAAGhE,EAAO8zB,IAAI03R,OAAOxrT,EAAO8zB,IAAIgI,QAAQ97B,EAAO8zB,IAAIi9F,MAEpE,CACF,MAAM+imC,EAAmB,IAAIH,EAAiBn3uC,KAAKmpB,SACnDmutC,EAAiBlD,oBAAoBp0uC,KAAKq0uC,kBAC1C,MAAMkD,EAAgBD,EAAiBnC,SAASvH,GAChD,OAAG5tuC,KAAKmpB,QAAQ6mtC,oBAAmCjisC,IAAlBwpsC,EAAoCA,EACzDH,EAASG,EAAev3uC,KAAKmpB,QAC7C,CAOA,SAAAqutC,CAAU3ytC,EAAK1jB,GACX,IAA2B,IAAxBA,EAAMX,QAAQ,KACb,MAAM,IAAIgnB,MAAM,+BACd,IAAyB,IAAtB3C,EAAIrkB,QAAQ,OAAqC,IAAtBqkB,EAAIrkB,QAAQ,KAC5C,MAAM,IAAIgnB,MAAM,wEACd,GAAa,MAAVrmB,EACL,MAAM,IAAIqmB,MAAM,6CAEhBxnB,KAAKq0uC,iBAAiBxvtC,GAAO1jB,CAErC,+BCnCJ,SAASm7kC,EAAS792B,EAAKt1M,EAASuotC,GAC9B,IAAIthtC,EACJ,MAAMqntC,EAAgB,CAAC,EACvB,IAAK,IAAI72uC,EAAI,EAAGA,EAAI69N,EAAIp+N,OAAQO,IAAK,CACnC,MAAMkxuC,EAASrzgC,EAAI79N,GACb44C,EAAW+xG,EAASumlC,GAC1B,IAAI4F,EAAW,GAIf,GAHwBA,OAAX3psC,IAAV2jsC,EAAgCl4rC,EACnBk4rC,EAAQ,IAAMl4rC,EAE3BA,IAAarwB,EAAQmjJ,kBACVv+H,IAAT3d,EAAoBA,EAAO0htC,EAAOt4rC,GAChCppB,GAAQ,GAAK0htC,EAAOt4rC,OACrB,SAAgBzL,IAAbyL,EACP,SACI,GAAGs4rC,EAAOt4rC,GAAU,CAExB,IAAIkkI,EAAM4+5B,EAASw1J,EAAOt4rC,GAAWrwB,EAASuutC,GAC9C,MAAMv+Z,EAASw+Z,EAAUj6jC,EAAKv0J,GAE3B2otC,EAAO,MACR8F,EAAkBl6jC,EAAKo0jC,EAAO,MAAO4F,EAAUvutC,GACZ,IAA5B7pB,OAAOgU,KAAKoqK,GAAKr9K,aAA8C0tC,IAA9B2vI,EAAIv0J,EAAQmjJ,eAAgCnjJ,EAAQyqtC,qBAEzD,IAA5Bt0uC,OAAOgU,KAAKoqK,GAAKr9K,SACrB8oB,EAAQyqtC,qBAAsBl2jC,EAAIv0J,EAAQmjJ,cAAgB,GACxDoR,EAAM,IAHXA,EAAMA,EAAIv0J,EAAQmjJ,mBAMWv+H,IAA5B0psC,EAAcj+rC,IAA2Bi+rC,EAAc93uC,eAAe65C,IACnE/5C,MAAMkS,QAAQ8luC,EAAcj+rC,MAC5Bi+rC,EAAcj+rC,GAAY,CAAEi+rC,EAAcj+rC,KAE9Ci+rC,EAAcj+rC,GAAU33C,KAAK67K,IAIzBv0J,EAAQxX,QAAQ6nC,EAAUk+rC,EAAUv+Z,GACtCs+Z,EAAcj+rC,GAAY,CAACkkI,GAE3B+5jC,EAAcj+rC,GAAYkkI,CAGhC,EAEF,CAKA,MAHmB,iBAATttJ,EACLA,EAAK/vB,OAAS,IAAGo3uC,EAActutC,EAAQmjJ,cAAgBl8I,QAC1C2d,IAAT3d,IAAoBqntC,EAActutC,EAAQmjJ,cAAgBl8I,GAC5DqntC,CACT,CAEA,SAASlslC,EAAS2hE,GAChB,MAAM55M,EAAOhU,OAAOgU,KAAK45M,GACzB,IAAK,IAAItsN,EAAI,EAAGA,EAAI0S,EAAKjT,OAAQO,IAAK,CACpC,MAAMikB,EAAMvR,EAAK1S,GACjB,GAAW,OAARikB,EAAc,OAAOA,CAC1B,CACF,CAEA,SAAS+ytC,EAAiB1qhC,EAAKulhC,EAAS5lkC,EAAO1jJ,GAC7C,GAAIsptC,EAAS,CACX,MAAMn/tC,EAAOhU,OAAOgU,KAAKm/tC,GACnB5zmC,EAAMvrH,EAAKjT,OACjB,IAAK,IAAIO,EAAI,EAAGA,EAAIi+H,EAAKj+H,IAAK,CAC5B,MAAMi3uC,EAAWvkuC,EAAK1S,GAClBuoB,EAAQxX,QAAQkmuC,EAAUhrkC,EAAQ,IAAMgrkC,GAAU,GAAM,GAC1D3qhC,EAAI2qhC,GAAY,CAAEpF,EAAQoF,IAE1B3qhC,EAAI2qhC,GAAYpF,EAAQoF,EAE5B,CACF,CACF,CAEA,SAASF,EAAUzqhC,EAAK/jM,GACtB,MAAM,aAAEmjJ,GAAiBnjJ,EACnB2utC,EAAYx4uC,OAAOgU,KAAK45M,GAAK7sN,OAEnC,OAAkB,IAAdy3uC,KAKY,IAAdA,IACC5qhC,EAAI5gD,IAA8C,kBAAtB4gD,EAAI5gD,IAAqD,IAAtB4gD,EAAI5gD,GAMxE,CACA7pK,EAAQ20uC,SAxGR,SAAkB/tpC,EAAMlgE,GACtB,OAAOmzjC,EAAUjz/B,EAAMlgE,EACzB,0BCcA2T,EAAOr6B,QAtBP,MACE,WAAAxC,CAAY4tuC,GACV7tuC,KAAK6tuC,QAAUA,EACf7tuC,KAAKkqF,MAAQ,GACblqF,KAAK,MAAQ,CAAC,CAChB,CACA,GAAAmlB,CAAIN,EAAI64J,GAEK,cAAR74J,IAAqBA,EAAM,cAC9B7kB,KAAKkqF,MAAMroF,KAAM,CAAC,CAACgjB,GAAM64J,GAC3B,CACA,QAAAk5U,CAASvta,GACa,cAAjBA,EAAKwkpC,UAAyBxkpC,EAAKwkpC,QAAU,cAC7CxkpC,EAAK,OAAS/pF,OAAOgU,KAAK+1E,EAAK,OAAOhpF,OAAS,EAChDL,KAAKkqF,MAAMroF,KAAM,CAAE,CAACwnF,EAAKwkpC,SAAUxkpC,EAAKa,MAAO,KAAQb,EAAK,QAE5DrpF,KAAKkqF,MAAMroF,KAAM,CAAE,CAACwnF,EAAKwkpC,SAAUxkpC,EAAKa,OAE5C,2BCnBFptD,EAAOr6B,QAAU,SAAUyqN,EAAKrpK,GAK/B,IAJA,IAAIo8a,EAAM,CAAC,EACP3sd,EAAOhU,OAAOgU,KAAK45M,GACnB89uB,EAAQvr8B,MAAMkS,QAAQkyC,GAEjBjjD,EAAI,EAAGA,EAAI0S,EAAKjT,OAAQO,IAAK,CACrC,IAAIikB,EAAMvR,EAAK1S,GACX88K,EAAMwvC,EAAIroM,IAEVmm7B,GAAoC,IAA5Bnn5B,EAAUrjD,QAAQqkB,GAAcg/B,EAAUh/B,EAAK64J,EAAKwvC,MAC/D+yQ,EAAIp7c,GAAO64J,EAEb,CAEA,OAAOuiT,CACR,gCCPA,SAAStud,EAAQxQ,GACf,OAAQ1B,MAAMkS,QAEVlS,MAAMkS,QAAQxQ,GADI,mBAAlB42uC,EAAO52uC,EAEb,kBAiBA,SAAS65D,EAAS75D,GAChB,MAAwB,iBAAVA,CAChB,CAEA,SAASmiD,EAASniD,GAChB,MAAwB,iBAAVA,CAChB,CAWA,SAAS8jQ,EAAS9jQ,GAChB,MAAwB,iBAAVA,CAChB,CAOA,SAAS+5E,EAAU/5E,GACjB,OAAOA,OACT,CAEA,SAASs8iB,EAAQt8iB,GACf,OAAQA,EAAMkxB,OAAOhyB,MACvB,CAIA,SAAS03uC,EAAO52uC,GACd,OAAgB,MAATA,OACO4sC,IAAV5sC,EACE,qBACA,gBACF7B,OAAOI,UAAU6E,SAAS3E,KAAKuB,EACrC,CAEA,MAUM62uC,EAAwBttuC,GAAS,WAAWA,oBAE5CutuC,EAA4BpztC,GAChC,6BAA6BA,gCAEzB3c,EAAS5I,OAAOI,UAAUC,eAEhC,MAAMu4uC,EACJ,WAAAj4uC,CAAYqT,GACVtT,KAAKm4uC,MAAQ,GACbn4uC,KAAKo4uC,QAAU,CAAC,EAEhB,IAAIC,EAAc,EAElB/kuC,EAAK4R,SAASL,IACZ,IAAIqoM,EAAMk1rB,EAAUv93B,GAEpBwztC,GAAenrhC,EAAImjS,OAEnBrwf,KAAKm4uC,MAAMt2uC,KAAKqrN,GAChBltN,KAAKo4uC,QAAQlrhC,EAAI3hM,IAAM2hM,EAEvBmrhC,GAAenrhC,EAAImjS,MAAM,IAI3Brwf,KAAKm4uC,MAAMjztC,SAASL,IAClBA,EAAIwre,QAAUgovB,CAAW,GAE7B,CACA,GAAAl1uC,CAAIm1uC,GACF,OAAOt4uC,KAAKo4uC,QAAQE,EACtB,CACA,IAAAhluC,GACE,OAAOtT,KAAKm4uC,KACd,CACA,MAAA76rC,GACE,OAAOhjC,KAAKb,UAAUzZ,KAAKm4uC,MAC7B,EAGF,SAAS/1V,EAAUv93B,GACjB,IAAIwR,EAAO,KACP9K,EAAK,KACL/W,EAAM,KACN67e,EAAS,EACTkovB,EAAQ,KAEZ,GAAIv9qC,EAASn2C,IAAQlT,EAAQkT,GAC3BrQ,EAAMqQ,EACNwR,EAAOmitC,EAAc3ztC,GACrB0G,EAAKkttC,EAAY5ztC,OACZ,CACL,IAAK3c,EAAOtI,KAAKilB,EAAK,QACpB,MAAM,IAAI2C,MAAMwwtC,EAAqB,SAGvC,MAAMttuC,EAAOma,EAAIna,KAGjB,GAFA8J,EAAM9J,EAEFxC,EAAOtI,KAAKilB,EAAK,YACnBwre,EAASxre,EAAIwre,OAETA,GAAU,GACZ,MAAM,IAAI7oe,MAAMywtC,EAAyBvtuC,IAI7C2rB,EAAOmitC,EAAc9tuC,GACrB6gB,EAAKkttC,EAAY/tuC,GACjB6tuC,EAAQ1ztC,EAAI0ztC,KACd,CAEA,MAAO,CAAElitC,OAAM9K,KAAI8ke,SAAQ77e,MAAK+juC,QAClC,CAEA,SAASC,EAAc3ztC,GACrB,OAAOlT,EAAQkT,GAAOA,EAAMA,EAAIjgB,MAAM,IACxC,CAEA,SAAS6zuC,EAAY5ztC,GACnB,OAAOlT,EAAQkT,GAAOA,EAAIhY,KAAK,KAAOgY,CACxC,CA2GA,IAAI6ztC,EAAS,CA5CXC,iBAAiB,EAEjBC,cAAc,EAEdtluC,KAAM,GAENuluC,YAAY,EAEZC,OAAQ,CAAC93uC,EAAGsC,IACVtC,EAAEisG,QAAU3pG,EAAE2pG,MAASjsG,EAAE85W,IAAMx3W,EAAEw3W,KAAO,EAAI,EAAK95W,EAAEisG,MAAQ3pG,EAAE2pG,OAAS,EAAI,EApB5E8roC,gBAAgB,EAGhBC,gBAAgB,EAEhBC,mBAAoB,EAoBpBlitC,SAAU,EAGVisB,UAAW,GAMXimG,SAAU,IAKViwlC,mBAAmB,EAGnBX,MA5FF,SAAarrhC,EAAK72L,GAChB,IAAI8/C,EAAO,GACPsoJ,GAAM,EAEV,MAAM06gC,EAAU,CAACjshC,EAAK72L,EAAMrZ,KAC1B,GAAKk+D,EAAUgyI,GAGf,GAAK72L,EAAKrZ,GAGH,CAGL,MAAM7b,EAAQ+rN,EAFJ72L,EAAKrZ,IAIf,IAAKk+D,EAAU/5E,GACb,OAKF,GACE6b,IAAUqZ,EAAKh2B,OAAS,IACvB26D,EAAS75D,IAAUmiD,EAASniD,IAzJrC,SAAmBA,GACjB,OACY,IAAVA,IACU,IAAVA,GAUJ,SAAsBA,GACpB,OAAO8jQ,EAAS9jQ,IAAoB,OAAVA,CAC5B,CAXKi4uC,CAAaj4uC,IAA2B,oBAAjB42uC,EAAO52uC,EAEnC,CAmJ+C0kQ,CAAU1kQ,IAEjDg1E,EAAKt0E,KAxKb,SAAkBV,GAChB,OAAgB,MAATA,EAAgB,GAVzB,SAAsBA,GAEpB,GAAoB,iBAATA,EACT,OAAOA,EAET,IAAIqiB,EAASriB,EAAQ,GACrB,MAAiB,KAAVqiB,GAAiB,EAAIriB,IAPb,IAOkC,KAAOqiB,CAC1D,CAG8B61tC,CAAal4uC,EAC3C,CAsKkBoD,CAASpD,SACd,GAAIwQ,EAAQxQ,GAAQ,CACzBs9N,GAAM,EAEN,IAAK,IAAI79N,EAAI,EAAGi+H,EAAM19H,EAAMd,OAAQO,EAAIi+H,EAAKj+H,GAAK,EAChDu4uC,EAAQh4uC,EAAMP,GAAIy1B,EAAMrZ,EAAQ,EAEpC,MAAWqZ,EAAKh2B,QAEd84uC,EAAQh4uC,EAAOk1B,EAAMrZ,EAAQ,EAEjC,MA3BEm5D,EAAKt0E,KAAKqrN,EA2BZ,EAMF,OAFAishC,EAAQjshC,EAAKlyJ,EAAS3kC,GAAQA,EAAKzxB,MAAM,KAAOyxB,EAAM,GAE/CooM,EAAMtoJ,EAAOA,EAAK,EAC3B,EAoDEmjqC,gBAAgB,EAIhBC,iBAAiB,EAEjBC,gBAAiB,GAUnB,MAAMvmtB,EAAQ,SAgCd,MAAMwmtB,EACJ,WAAAx5uC,EAAY,MACVs4uC,EAAQG,EAAOH,MAAK,gBACpBiB,EAAkBd,EAAOc,iBACvB,CAAC,GACHx5uC,KAAKwoL,KAjCT,SAAc6nU,EAAS,EAAGqpvB,EAAW,GACnC,MAAMxmtC,EAAQ,IAAIvI,IACZvnB,EAAIP,KAAK6yF,IAAI,GAAIgkpC,GAEvB,MAAO,CACL,GAAAv2uC,CAAIhC,GACF,MAAMw4uC,EAAYx4uC,EAAMsF,MAAMwshB,GAAO5yhB,OAErC,GAAI6yB,EAAMnnB,IAAI4tuC,GACZ,OAAOzmtC,EAAM/vB,IAAIw2uC,GAInB,MAAMnxjC,EAAO,EAAI3lL,KAAK6yF,IAAIikpC,EAAW,GAAMtpvB,GAGrChxf,EAAIgrK,WAAWxnK,KAAKogD,MAAMulI,EAAOplL,GAAKA,GAI5C,OAFA8vB,EAAMjnB,IAAI0tuC,EAAWt6uC,GAEdA,CACT,EACA,KAAA2lB,GACEkO,EAAMlO,OACR,EAEJ,CAOgBwjK,CAAKgxjC,EAAiB,GAClCx5uC,KAAKu4uC,MAAQA,EACbv4uC,KAAK45uC,WAAY,EAEjB55uC,KAAK65uC,iBACP,CACA,UAAAC,CAAWC,EAAO,IAChB/5uC,KAAK+5uC,KAAOA,CACd,CACA,eAAAF,CAAgBhqb,EAAU,IACxB7vzB,KAAK6vzB,QAAUA,CACjB,CACA,OAAAmqb,CAAQ1muC,EAAO,IACbtT,KAAKsT,KAAOA,EACZtT,KAAKi6uC,SAAW,CAAC,EACjB3muC,EAAK4R,SAAQ,CAACL,EAAKi2V,KACjB96W,KAAKi6uC,SAASp1tC,EAAI0G,IAAMuvV,CAAG,GAE/B,CACA,MAAA56W,IACMF,KAAK45uC,WAAc55uC,KAAK+5uC,KAAK15uC,SAIjCL,KAAK45uC,WAAY,EAGb5+qC,EAASh7D,KAAK+5uC,KAAK,IACrB/5uC,KAAK+5uC,KAAK70tC,SAAQ,CAACwhC,EAAKwzrC,KACtBl6uC,KAAKm6uC,WAAWzzrC,EAAKwzrC,EAAS,IAIhCl6uC,KAAK+5uC,KAAK70tC,SAAQ,CAACwhC,EAAKwzrC,KACtBl6uC,KAAKo6uC,WAAW1zrC,EAAKwzrC,EAAS,IAIlCl6uC,KAAKwoL,KAAKxjK,QACZ,CAEA,GAAAG,CAAIuhC,GACF,MAAMo0T,EAAM96W,KAAK4kB,OAEbo2C,EAAStU,GACX1mD,KAAKm6uC,WAAWzzrC,EAAKo0T,GAErB96W,KAAKo6uC,WAAW1zrC,EAAKo0T,EAEzB,CAEA,QAAAu/3B,CAASv/3B,GACP96W,KAAK6vzB,QAAQ5syB,OAAO63V,EAAK,GAGzB,IAAK,IAAIl6W,EAAIk6W,EAAKj8O,EAAM7+H,KAAK4kB,OAAQhkB,EAAIi+H,EAAKj+H,GAAK,EACjDZ,KAAK6vzB,QAAQjvzB,GAAGA,GAAK,CAEzB,CACA,sBAAA05uC,CAAuBl5rC,EAAMk3rC,GAC3B,OAAOl3rC,EAAKphD,KAAKi6uC,SAAS3B,GAC5B,CACA,IAAA1ztC,GACE,OAAO5kB,KAAK6vzB,QAAQxvzB,MACtB,CACA,UAAA85uC,CAAWzzrC,EAAKwzrC,GACd,IAAKh/pC,EAAUx0B,IAAQ+2f,EAAQ/2f,GAC7B,OAGF,IAAIm3+B,EAAS,CACX56hC,EAAGyjD,EACH9lD,EAAGs5uC,EACH76uC,EAAGW,KAAKwoL,KAAKrlL,IAAIujD,IAGnB1mD,KAAK6vzB,QAAQhuzB,KAAKg8hC,EACpB,CACA,UAAAu8M,CAAW1zrC,EAAKwzrC,GACd,IAAIr8M,EAAS,CAAEj9hC,EAAGs5uC,EAAU9zuC,EAAG,CAAC,GAGhCpG,KAAKsT,KAAK4R,SAAQ,CAACL,EAAK83V,KACtB,IAAIx7W,EAAQ0jB,EAAI0ztC,MAAQ1ztC,EAAI0ztC,MAAM7xrC,GAAO1mD,KAAKu4uC,MAAM7xrC,EAAK7hC,EAAIwR,MAE7D,GAAK6kD,EAAU/5E,GAIf,GAAIwQ,EAAQxQ,GAAQ,CAClB,IAAIo5uC,EAAa,GACjB,MAAM5nsC,EAAQ,CAAC,CAAE6nsC,gBAAiB,EAAGr5uC,UAErC,KAAOwxC,EAAMtyC,QAAQ,CACnB,MAAM,eAAEm6uC,EAAc,MAAEr5uC,GAAUwxC,EAAM/wC,MAExC,GAAKs5E,EAAU/5E,GAIf,GAAI65D,EAAS75D,KAAWs8iB,EAAQt8iB,GAAQ,CACtC,IAAIs5uC,EAAY,CACdx3uC,EAAG9B,EACHP,EAAG45uC,EACHn7uC,EAAGW,KAAKwoL,KAAKrlL,IAAIhC,IAGnBo5uC,EAAW14uC,KAAK44uC,EAClB,MAAW9ouC,EAAQxQ,IACjBA,EAAM+jB,SAAQ,CAACk8B,EAAM19C,KACnBivC,EAAM9wC,KAAK,CACT24uC,eAAgB92uC,EAChBvC,MAAOigD,GACP,GAGR,CACAy8+B,EAAOz3hC,EAAEu2W,GAAY493B,CACvB,MAAO,GAAIv/qC,EAAS75D,KAAWs8iB,EAAQt8iB,GAAQ,CAC7C,IAAIs5uC,EAAY,CACdx3uC,EAAG9B,EACH9B,EAAGW,KAAKwoL,KAAKrlL,IAAIhC,IAGnB08hC,EAAOz3hC,EAAEu2W,GAAY893B,CACvB,KAGFz6uC,KAAK6vzB,QAAQhuzB,KAAKg8hC,EACpB,CACA,MAAAvg/B,GACE,MAAO,CACLhqC,KAAMtT,KAAKsT,KACXu8yB,QAAS7vzB,KAAK6vzB,QAElB,EAGF,SAAS6qb,EACPpnuC,EACAymuC,GACA,MAAExB,EAAQG,EAAOH,MAAK,gBAAEiB,EAAkBd,EAAOc,iBAAoB,CAAC,GAEtE,MAAMmB,EAAU,IAAIlB,EAAU,CAAElB,QAAOiB,oBAIvC,OAHAmB,EAAQX,QAAQ1muC,EAAK+b,IAAI+y3B,IACzBu4V,EAAQb,WAAWC,GACnBY,EAAQz6uC,SACDy6uC,CACT,CAaA,SAASC,EACPn/+B,GACA,OACEwvF,EAAS,EAAC,gBACVt+O,EAAkB,EAAC,iBACnBkuoC,EAAmB,EAAC,SACpB5xlC,EAAWyvlC,EAAOzvlC,SAAQ,eAC1BqwlC,EAAiBZ,EAAOY,gBACtB,CAAC,GAEL,MAAMwB,EAAW7v5B,EAASxvF,EAAQp7P,OAElC,GAAIi5uC,EACF,OAAOwB,EAGT,MAAMC,EAAYl4uC,KAAKmjH,IAAI60nC,EAAmBluoC,GAE9C,OAAKs8C,EAKE6xlC,EAAWC,EAAY9xlC,EAHrB8xlC,EAAY,EAAMD,CAI7B,CAiCA,MAAME,EAAW,GAyLjB,SAASC,EAAsBx/+B,GAC7B,IAAIh8E,EAAO,CAAC,EAEZ,IAAK,IAAI7+K,EAAI,EAAGi+H,EAAM48H,EAAQp7P,OAAQO,EAAIi+H,EAAKj+H,GAAK,EAAG,CACrD,MAAMwkP,EAAOqW,EAAQ5iP,OAAOjY,GAC5B6+K,EAAK2lE,IAAS3lE,EAAK2lE,IAAS,GAAM,GAAMvmH,EAAMj+H,EAAI,CACpD,CAEA,OAAO6+K,CACT,CAEA,MAAMy7jC,EACJ,WAAAj7uC,CACEw7P,GACA,SACE1kO,EAAW2htC,EAAO3htC,SAAQ,UAC1BisB,EAAY01rC,EAAO11rC,UAAS,SAC5BimG,EAAWyvlC,EAAOzvlC,SAAQ,eAC1B8vlC,EAAiBL,EAAOK,eAAc,eACtCC,EAAiBN,EAAOM,eAAc,mBACtCC,EAAqBP,EAAOO,mBAAkB,gBAC9CN,EAAkBD,EAAOC,gBAAe,eACxCW,EAAiBZ,EAAOY,gBACtB,CAAC,GAiBL,GAfAt5uC,KAAKmpB,QAAU,CACb4N,WACAisB,YACAimG,WACA8vlC,iBACAC,iBACAC,qBACAN,kBACAW,kBAGFt5uC,KAAKy7P,QAAUk9+B,EAAkBl9+B,EAAUA,EAAQlsP,cAEnDvP,KAAK2lE,OAAS,IAET3lE,KAAKy7P,QAAQp7P,OAChB,OAGF,MAAM86uC,EAAW,CAAC1/+B,EAAS97H,KACzB3/H,KAAK2lE,OAAO9jE,KAAK,CACf45P,UACA2/+B,SAAUH,EAAsBx/+B,GAChC97H,cACA,EAGEd,EAAM7+H,KAAKy7P,QAAQp7P,OAEzB,GAAIw+H,EAAMm8mC,EAAU,CAClB,IAAIp6uC,EAAI,EACR,MAAM+/8B,EAAY9h1B,EAAMm8mC,EAClBv0sC,EAAMo4F,EAAM8h1B,EAElB,KAAO//8B,EAAI6lC,GACT00sC,EAASn7uC,KAAKy7P,QAAQhgO,OAAO76B,EAAGo6uC,GAAWp6uC,GAC3CA,GAAKo6uC,EAGP,GAAIr6R,EAAW,CACb,MAAMhh1B,EAAad,EAAMm8mC,EACzBG,EAASn7uC,KAAKy7P,QAAQhgO,OAAOkkG,GAAaA,EAC5C,CACF,MACEw7mC,EAASn7uC,KAAKy7P,QAAS,EAE3B,CAEA,QAAA4/+B,CAASjrtC,GACP,MAAM,gBAAEuotC,EAAe,eAAEI,GAAmB/4uC,KAAKmpB,QAOjD,GALKwvtC,IACHvotC,EAAOA,EAAK7gB,eAIVvP,KAAKy7P,UAAYrrO,EAAM,CACzB,IAAI5M,EAAS,CACX83tC,SAAS,EACTruoC,MAAO,GAOT,OAJI8roC,IACFv1tC,EAAOmrK,QAAU,CAAC,CAAC,EAAGv+J,EAAK/vB,OAAS,KAG/BmjB,CACT,CAGA,MAAM,SACJuT,EAAQ,SACRkyH,EAAQ,UACRjmG,EAAS,eACTg2rC,EAAc,mBACdC,EAAkB,eAClBK,GACEt5uC,KAAKmpB,QAET,IAAI2k2B,EAAa,GACbytX,EAAa,EACbC,GAAa,EAEjBx7uC,KAAK2lE,OAAOzgD,SAAQ,EAAGu2O,UAAS2/+B,WAAUz7mC,iBACxC,MAAM,QAAE27mC,EAAO,MAAEruoC,EAAK,QAAE0hF,GApS9B,SACEv+J,EACAqrO,EACAgg/B,GACA,SACE1ktC,EAAW2htC,EAAO3htC,SAAQ,SAC1BkyH,EAAWyvlC,EAAOzvlC,SAAQ,UAC1BjmG,EAAY01rC,EAAO11rC,UAAS,eAC5Bg2rC,EAAiBN,EAAOM,eAAc,mBACtCC,EAAqBP,EAAOO,mBAAkB,eAC9CF,EAAiBL,EAAOK,eAAc,eACtCO,EAAiBZ,EAAOY,gBACtB,CAAC,GAEL,GAAI79+B,EAAQp7P,OAAS26uC,EACnB,MAAM,IAAIxztC,MAtdZ,qCAydA,MAAMk0tC,EAAajg/B,EAAQp7P,OAErBs7uC,EAAUvrtC,EAAK/vB,OAEfw6uC,EAAmBh4uC,KAAK8K,IAAI,EAAG9K,KAAKgL,IAAIkpB,EAAU4ktC,IAExD,IAAIC,EAAmB54rC,EAEnB64rC,EAAehB,EAInB,MAAMiB,EAAiB7C,EAAqB,GAAKF,EAE3CgD,EAAYD,EAAiBr8uC,MAAMk8uC,GAAW,GAEpD,IAAI3+tC,EAGJ,MAAQA,EAAQoT,EAAK5vB,QAAQi7P,EAASog/B,KAAkB,GAAG,CACzD,IAAI5uoC,EAAQ2toC,EAAen/+B,EAAS,CAClC9uJ,gBAAiB3vF,EACjB69tC,mBACA5xlC,WACAqwlC,mBAMF,GAHAsC,EAAmB/4uC,KAAKgL,IAAIo/F,EAAO2uoC,GACnCC,EAAe7+tC,EAAQ0+tC,EAEnBI,EAAgB,CAClB,IAAIl7uC,EAAI,EACR,KAAOA,EAAI86uC,GACTK,EAAU/+tC,EAAQpc,GAAK,EACvBA,GAAK,CAET,CACF,CAGAi7uC,GAAgB,EAEhB,IAAIG,EAAa,GACbC,EAAa,EACbC,EAASR,EAAaC,EAE1B,MAAMl8jC,EAAO,GAAMi8jC,EAAa,EAEhC,IAAK,IAAI96uC,EAAI,EAAGA,EAAI86uC,EAAY96uC,GAAK,EAAG,CAItC,IAAIu7uC,EAAS,EACTC,EAASF,EAEb,KAAOC,EAASC,GACAxB,EAAen/+B,EAAS,CACpCwvF,OAAQrqV,EACR+rG,gBAAiBkuoC,EAAmBuB,EACpCvB,mBACA5xlC,WACAqwlC,oBAGWsC,EACXO,EAASC,EAETF,EAASE,EAGXA,EAASv5uC,KAAKyK,OAAO4uuC,EAASC,GAAU,EAAIA,GAI9CD,EAASE,EAET,IAAI51sC,EAAQ3jC,KAAK8K,IAAI,EAAGktuC,EAAmBuB,EAAS,GAChD9zqC,EAAS0wqC,EACT2C,EACA94uC,KAAKgL,IAAIgtuC,EAAmBuB,EAAQT,GAAWD,EAG/CW,EAAS58uC,MAAM6oE,EAAS,GAE5B+zqC,EAAO/zqC,EAAS,IAAM,GAAK1nE,GAAK,EAEhC,IAAK,IAAIwD,EAAIkkE,EAAQlkE,GAAKoiC,EAAOpiC,GAAK,EAAG,CACvC,IAAIuoG,EAAkBvoG,EAAI,EACtBk4uC,EAAYb,EAAgBrrtC,EAAKvX,OAAO8zF,IAgB5C,GAdImvoC,IAEFC,EAAUpvoC,MAAsB2voC,GAIlCD,EAAOj4uC,IAAOi4uC,EAAOj4uC,EAAI,IAAM,EAAK,GAAKk4uC,EAGrC17uC,IACFy7uC,EAAOj4uC,KACH43uC,EAAW53uC,EAAI,GAAK43uC,EAAW53uC,KAAO,EAAK,EAAI43uC,EAAW53uC,EAAI,IAGhEi4uC,EAAOj4uC,GAAKq7K,IACdw8jC,EAAarB,EAAen/+B,EAAS,CACnCwvF,OAAQrqV,EACR+rG,kBACAkuoC,mBACA5xlC,WACAqwlC,mBAKE2C,GAAcL,GAAkB,CAMlC,GAJAA,EAAmBK,EACnBJ,EAAelvoC,EAGXkvoC,GAAgBhB,EAClB,MAIFr0sC,EAAQ3jC,KAAK8K,IAAI,EAAG,EAAIktuC,EAAmBgB,EAC7C,CAEJ,CAWA,GARcjB,EAAen/+B,EAAS,CACpCwvF,OAAQrqV,EAAI,EACZ+rG,gBAAiBkuoC,EACjBA,mBACA5xlC,WACAqwlC,mBAGUsC,EACV,MAGFI,EAAaK,CACf,CAEA,MAAM74tC,EAAS,CACb83tC,QAASO,GAAgB,EAEzB5uoC,MAAOpqG,KAAK8K,IAAI,KAAOsuuC,IAGzB,GAAIH,EAAgB,CAClB,MAAMntjC,EA7MV,SACE4tjC,EAAY,GACZtD,EAAqBP,EAAOO,oBAE5B,IAAItqjC,EAAU,GACVnoJ,GAAS,EACTC,GAAO,EACP7lC,EAAI,EAER,IAAK,IAAIi+H,EAAM09mC,EAAUl8uC,OAAQO,EAAIi+H,EAAKj+H,GAAK,EAAG,CAChD,IAAI6F,EAAQ81uC,EAAU37uC,GAClB6F,IAAoB,IAAX+/B,EACXA,EAAQ5lC,EACE6F,IAAoB,IAAX+/B,IACnBC,EAAM7lC,EAAI,EACN6lC,EAAMD,EAAQ,GAAKyysC,GACrBtqjC,EAAQ9sL,KAAK,CAAC2kC,EAAOC,IAEvBD,GAAS,EAEb,CAOA,OAJI+1sC,EAAU37uC,EAAI,IAAMA,EAAI4lC,GAASyysC,GACnCtqjC,EAAQ9sL,KAAK,CAAC2kC,EAAO5lC,EAAI,IAGpB+tL,CACT,CAiLoB6tjC,CAAqBT,EAAW9C,GAC3CtqjC,EAAQtuL,OAEF04uC,IACTv1tC,EAAOmrK,QAAUA,GAFjBnrK,EAAO83tC,SAAU,CAIrB,CAEA,OAAO93tC,CACT,CA+G0C+nC,CAAOn7B,EAAMqrO,EAAS2/+B,EAAU,CAClErktC,SAAUA,EAAW4oG,EACrBspB,WACAjmG,YACAg2rC,iBACAC,qBACAF,iBACAO,mBAGEgC,IACFE,GAAa,GAGfD,GAActuoC,EAEVquoC,GAAW3sjC,IACbm/rB,EAAa,IAAIA,KAAen/rB,GAClC,IAGF,IAAInrK,EAAS,CACX83tC,QAASE,EACTvuoC,MAAOuuoC,EAAaD,EAAav7uC,KAAK2lE,OAAOtlE,OAAS,GAOxD,OAJIm7uC,GAAczC,IAChBv1tC,EAAOmrK,QAAUm/rB,GAGZtq2B,CACT,EAGF,MAAMi5tC,EACJ,WAAAx8uC,CAAYw7P,GACVz7P,KAAKy7P,QAAUA,CACjB,CACA,mBAAOih/B,CAAajh/B,GAClB,OAAOkh/B,EAASlh/B,EAASz7P,KAAK48uC,WAChC,CACA,oBAAOC,CAAcph/B,GACnB,OAAOkh/B,EAASlh/B,EAASz7P,KAAK88uC,YAChC,CACA,MAAAvxrC,GAAkB,EAGpB,SAASoxrC,EAASlh/B,EAAS1nO,GACzB,MAAMkgC,EAAUwnM,EAAQh1P,MAAMstB,GAC9B,OAAOkgC,EAAUA,EAAQ,GAAK,IAChC,CA8JA,MAAM8orC,UAAmBN,EACvB,WAAAx8uC,CACEw7P,GACA,SACE1kO,EAAW2htC,EAAO3htC,SAAQ,UAC1BisB,EAAY01rC,EAAO11rC,UAAS,SAC5BimG,EAAWyvlC,EAAOzvlC,SAAQ,eAC1B8vlC,EAAiBL,EAAOK,eAAc,eACtCC,EAAiBN,EAAOM,eAAc,mBACtCC,EAAqBP,EAAOO,mBAAkB,gBAC9CN,EAAkBD,EAAOC,gBAAe,eACxCW,EAAiBZ,EAAOY,gBACtB,CAAC,GAEL9rsC,MAAMiuN,GACNz7P,KAAKg9uC,aAAe,IAAI9B,EAAYz/+B,EAAS,CAC3C1kO,WACAisB,YACAimG,WACA8vlC,iBACAC,iBACAC,qBACAN,kBACAW,kBAEJ,CACA,eAAW/suC,GACT,MAAO,OACT,CACA,qBAAWqwuC,GACT,MAAO,UACT,CACA,sBAAWE,GACT,MAAO,QACT,CACA,MAAAvxrC,CAAOn7B,GACL,OAAOpwB,KAAKg9uC,aAAa3B,SAASjrtC,EACpC,EAKF,MAAM6stC,UAAqBR,EACzB,WAAAx8uC,CAAYw7P,GACVjuN,MAAMiuN,EACR,CACA,eAAWlvP,GACT,MAAO,SACT,CACA,qBAAWqwuC,GACT,MAAO,WACT,CACA,sBAAWE,GACT,MAAO,SACT,CACA,MAAAvxrC,CAAOn7B,GACL,IACIpT,EADA+Z,EAAW,EAGf,MAAM43J,EAAU,GACV+sjC,EAAa17uC,KAAKy7P,QAAQp7P,OAGhC,MAAQ2c,EAAQoT,EAAK5vB,QAAQR,KAAKy7P,QAAS1kO,KAAc,GACvDA,EAAW/Z,EAAQ0+tC,EACnB/sjC,EAAQ9sL,KAAK,CAACmb,EAAO+Z,EAAW,IAGlC,MAAMuktC,IAAY3sjC,EAAQtuL,OAE1B,MAAO,CACLi7uC,UACAruoC,MAAOquoC,EAAU,EAAI,EACrB3sjC,UAEJ,EAIF,MAAMuujC,EAAY,CAzOlB,cAAyBT,EACvB,WAAAx8uC,CAAYw7P,GACVjuN,MAAMiuN,EACR,CACA,eAAWlvP,GACT,MAAO,OACT,CACA,qBAAWqwuC,GACT,MAAO,WACT,CACA,sBAAWE,GACT,MAAO,SACT,CACA,MAAAvxrC,CAAOn7B,GACL,MAAMkrtC,EAAUlrtC,IAASpwB,KAAKy7P,QAE9B,MAAO,CACL6/+B,UACAruoC,MAAOquoC,EAAU,EAAI,EACrB3sjC,QAAS,CAAC,EAAG3uL,KAAKy7P,QAAQp7P,OAAS,GAEvC,GAsNA48uC,EAtLF,cAA+BR,EAC7B,WAAAx8uC,CAAYw7P,GACVjuN,MAAMiuN,EACR,CACA,eAAWlvP,GACT,MAAO,cACT,CACA,qBAAWqwuC,GACT,MAAO,YACT,CACA,sBAAWE,GACT,MAAO,UACT,CACA,MAAAvxrC,CAAOn7B,GACL,MAAMkrtC,EAAUlrtC,EAAKjf,WAAWnR,KAAKy7P,SAErC,MAAO,CACL6/+B,UACAruoC,MAAOquoC,EAAU,EAAI,EACrB3sjC,QAAS,CAAC,EAAG3uL,KAAKy7P,QAAQp7P,OAAS,GAEvC,GAKF,cAAsCo8uC,EACpC,WAAAx8uC,CAAYw7P,GACVjuN,MAAMiuN,EACR,CACA,eAAWlvP,GACT,MAAO,sBACT,CACA,qBAAWqwuC,GACT,MAAO,aACT,CACA,sBAAWE,GACT,MAAO,WACT,CACA,MAAAvxrC,CAAOn7B,GACL,MAAMkrtC,GAAWlrtC,EAAKjf,WAAWnR,KAAKy7P,SAEtC,MAAO,CACL6/+B,UACAruoC,MAAOquoC,EAAU,EAAI,EACrB3sjC,QAAS,CAAC,EAAGv+J,EAAK/vB,OAAS,GAE/B,GA+BF,cAAsCo8uC,EACpC,WAAAx8uC,CAAYw7P,GACVjuN,MAAMiuN,EACR,CACA,eAAWlvP,GACT,MAAO,sBACT,CACA,qBAAWqwuC,GACT,MAAO,aACT,CACA,sBAAWE,GACT,MAAO,WACT,CACA,MAAAvxrC,CAAOn7B,GACL,MAAMkrtC,GAAWlrtC,EAAK23B,SAAS/nD,KAAKy7P,SACpC,MAAO,CACL6/+B,UACAruoC,MAAOquoC,EAAU,EAAI,EACrB3sjC,QAAS,CAAC,EAAGv+J,EAAK/vB,OAAS,GAE/B,GA9CF,cAA+Bo8uC,EAC7B,WAAAx8uC,CAAYw7P,GACVjuN,MAAMiuN,EACR,CACA,eAAWlvP,GACT,MAAO,cACT,CACA,qBAAWqwuC,GACT,MAAO,YACT,CACA,sBAAWE,GACT,MAAO,UACT,CACA,MAAAvxrC,CAAOn7B,GACL,MAAMkrtC,EAAUlrtC,EAAK23B,SAAS/nD,KAAKy7P,SAEnC,MAAO,CACL6/+B,UACAruoC,MAAOquoC,EAAU,EAAI,EACrB3sjC,QAAS,CAACv+J,EAAK/vB,OAASL,KAAKy7P,QAAQp7P,OAAQ+vB,EAAK/vB,OAAS,GAE/D,GApGF,cAAgCo8uC,EAC9B,WAAAx8uC,CAAYw7P,GACVjuN,MAAMiuN,EACR,CACA,eAAWlvP,GACT,MAAO,eACT,CACA,qBAAWqwuC,GACT,MAAO,WACT,CACA,sBAAWE,GACT,MAAO,SACT,CACA,MAAAvxrC,CAAOn7B,GACL,MACMkrtC,GAAqB,IADblrtC,EAAK5vB,QAAQR,KAAKy7P,SAGhC,MAAO,CACL6/+B,UACAruoC,MAAOquoC,EAAU,EAAI,EACrB3sjC,QAAS,CAAC,EAAGv+J,EAAK/vB,OAAS,GAE/B,GAiMA08uC,GAGII,EAAeD,EAAU78uC,OAGzB+8uC,EAAW,qCAmDXC,EAAgB,IAAI13tC,IAAI,CAACo3tC,EAAWxwuC,KAAM0wuC,EAAa1wuC,OAyI7D,MAAM+wuC,EAAsB,GAM5B,SAASC,EAAe9h/B,EAAStyO,GAC/B,IAAK,IAAIvoB,EAAI,EAAGi+H,EAAMy+mC,EAAoBj9uC,OAAQO,EAAIi+H,EAAKj+H,GAAK,EAAG,CACjE,IAAI48uC,EAAgBF,EAAoB18uC,GACxC,GAAI48uC,EAAc77kC,UAAU85F,EAAStyO,GACnC,OAAO,IAAIq0tC,EAAc/h/B,EAAStyO,EAEtC,CAEA,OAAO,IAAI+xtC,EAAYz/+B,EAAStyO,EAClC,CAEA,MAAMs0tC,EACC,OAIDC,EACE,QAIFC,EAAgB1upC,MACjBA,EAAMwupC,KAAwBxupC,EAAwB,KAOrD2upC,EAAqB3upC,IAAU,CACnC,CAACwupC,GAAsBn+uC,OAAOgU,KAAK27E,GAAO5/D,KAAKxK,IAAQ,CACrD,CAACA,GAAMoqE,EAAMpqE,SAMjB,SAAS0H,EAAM0iE,EAAO9lE,GAAS,KAAEuksC,GAAO,GAAS,CAAC,GAChD,MAAM3stC,EAAQkuF,IACZ,IAAI37E,EAAOhU,OAAOgU,KAAK27E,GAEvB,MAAM4upC,EAjBK,CAAC5upC,KAAYA,EAAMyupC,GAiBV1mN,CAAO/n8B,GAE3B,IAAK4upC,GAAevquC,EAAKjT,OAAS,IAAMs9uC,EAAa1upC,GACnD,OAAOluF,EAAK68uC,EAAkB3upC,IAGhC,GArBW,CAACA,IACbt9E,EAAQs9E,IAAUg2K,EAASh2K,KAAW0upC,EAAa1upC,GAoB9CkqvB,CAAOlqvB,GAAQ,CACjB,MAAMpqE,EAAMg5tC,EAAc5upC,EAAMyupC,GAAgBpquC,EAAK,GAE/CmoP,EAAUoi/B,EAAc5upC,EAAqB,KAAIA,EAAMpqE,GAE7D,IAAKm2C,EAASygM,GACZ,MAAM,IAAIj0O,MAnxC2B,CAAC3C,GAC5C,yBAAyBA,IAkxCHi5tC,CAAqCj5tC,IAGvD,MAAMqoM,EAAM,CACVorhC,MAAOG,EAAY5ztC,GACnB42O,WAOF,OAJIiy9B,IACFxggC,EAAI6whC,SAAWR,EAAe9h/B,EAAStyO,IAGlC+jM,CACT,CAEA,IAAI7jI,EAAO,CACTrpD,SAAU,GACV89Z,SAAUxqb,EAAK,IAajB,OAVAA,EAAK4R,SAASL,IACZ,MAAM1jB,EAAQ8tF,EAAMpqE,GAEhBlT,EAAQxQ,IACVA,EAAM+jB,SAASk8B,IACbioC,EAAKrpD,SAASn+B,KAAKd,EAAKqgD,GAAM,GAElC,IAGKioC,GAOT,OAJKs0pC,EAAa1upC,KAChBA,EAAQ2upC,EAAkB3upC,IAGrBluF,EAAKkuF,EACd,CAuBA,SAAS+upC,EAAiBx6tC,EAAQhU,GAChC,MAAMykD,EAAUzwC,EAAOywC,QACvBzkD,EAAKykD,QAAU,GAEVinB,EAAUjnB,IAIfA,EAAQ/uC,SAASze,IACf,IAAKy0E,EAAUz0E,EAAMkoL,WAAaloL,EAAMkoL,QAAQtuL,OAC9C,OAGF,MAAM,QAAEsuL,EAAO,MAAExtL,GAAUsF,EAE3B,IAAIymN,EAAM,CACRv+B,UACAxtL,SAGEsF,EAAMoe,MACRqoM,EAAIroM,IAAMpe,EAAMoe,IAAIrQ,KAGlB/N,EAAMq0W,KAAO,IACf5tJ,EAAI+whC,SAAWx3uC,EAAMq0W,KAGvBtrW,EAAKykD,QAAQpyD,KAAKqrN,EAAI,GAE1B,CAEA,SAASgxhC,EAAe16tC,EAAQhU,GAC9BA,EAAKy9F,MAAQzpF,EAAOypF,KACtB,CAiCA,MAAMkxoC,EACJ,WAAAl+uC,CAAY85uC,EAAM5wtC,EAAU,CAAC,EAAGnM,GAC9Bhd,KAAKmpB,QAAU,IAAKuvtC,KAAWvvtC,GAG7BnpB,KAAKmpB,QAAQ+vtC,kBAMfl5uC,KAAKo+uC,UAAY,IAAIlG,EAASl4uC,KAAKmpB,QAAQ7V,MAE3CtT,KAAKq+uC,cAActE,EAAM/8tC,EAC3B,CAEA,aAAAqhuC,CAActE,EAAM/8tC,GAGlB,GAFAhd,KAAKs+uC,MAAQvE,EAET/8tC,KAAWA,aAAiBy8tC,GAC9B,MAAM,IAAIjytC,MAz6Ca,0BA46CzBxnB,KAAKu+uC,SACHvhuC,GACA09tC,EAAY16uC,KAAKmpB,QAAQ7V,KAAMtT,KAAKs+uC,MAAO,CACzC/F,MAAOv4uC,KAAKmpB,QAAQovtC,MACpBiB,gBAAiBx5uC,KAAKmpB,QAAQqwtC,iBAEpC,CAEA,GAAAr0tC,CAAIuhC,GACGw0B,EAAUx0B,KAIf1mD,KAAKs+uC,MAAMz8uC,KAAK6kD,GAChB1mD,KAAKu+uC,SAASp5tC,IAAIuhC,GACpB,CAEA,MAAA7zB,CAAOgxB,EAAY,MAAoB,IACrC,MAAM2tD,EAAU,GAEhB,IAAK,IAAI5wG,EAAI,EAAGi+H,EAAM7+H,KAAKs+uC,MAAMj+uC,OAAQO,EAAIi+H,EAAKj+H,GAAK,EAAG,CACxD,MAAM8lD,EAAM1mD,KAAKs+uC,MAAM19uC,GACnBijD,EAAU6C,EAAK9lD,KACjBZ,KAAKq6uC,SAASz5uC,GACdA,GAAK,EACLi+H,GAAO,EAEPrtB,EAAQ3vG,KAAK6kD,GAEjB,CAEA,OAAO8qD,CACT,CAEA,QAAA6ooC,CAASv/3B,GACP96W,KAAKs+uC,MAAMr7tC,OAAO63V,EAAK,GACvB96W,KAAKu+uC,SAASlE,SAASv/3B,EACzB,CAEA,QAAAjlI,GACE,OAAO71O,KAAKu+uC,QACd,CAEA,MAAAhzrC,CAAO0jC,GAAO,MAAErsB,GAAQ,GAAO,CAAC,GAC9B,MAAM,eACJm2qC,EAAc,aACdH,EAAY,WACZC,EAAU,OACVC,EAAM,gBACNS,GACEv5uC,KAAKmpB,QAET,IAAIqoF,EAAUx2C,EAASi0B,GACnBj0B,EAASh7D,KAAKs+uC,MAAM,IAClBt+uC,KAAKw+uC,kBAAkBvvpC,GACvBjvF,KAAKy+uC,kBAAkBxvpC,GACzBjvF,KAAK0+uC,eAAezvpC,GAYxB,OAlLJ,SACEuiB,GACA,gBAAE+noC,EAAkBb,EAAOa,kBAE3B/noC,EAAQtsF,SAAS1B,IACf,IAAI+3tC,EAAa,EAEjB/3tC,EAAOywC,QAAQ/uC,SAAQ,EAAGL,MAAK2jK,OAAMv7E,YACnC,MAAMojZ,EAASxre,EAAMA,EAAIwre,OAAS,KAElCkrvB,GAAc14uC,KAAK6yF,IACP,IAAVuX,GAAeojZ,EAASlrd,OAAOyjH,QAAU37C,GACxCojZ,GAAU,IAAMkpvB,EAAkB,EAAI/wjC,GACxC,IAGHhlK,EAAOypF,MAAQsuoC,CAAU,GAE7B,CAsJI3k0B,CAAaplU,EAAS,CAAE+noC,oBAEpBV,GACFrnoC,EAAQjlE,KAAKussC,GAGXx1rC,EAASsf,IAAUA,GAAS,IAC9B4uC,EAAUA,EAAQzvG,MAAM,EAAG6gE,IAvHjC,SACE4uC,EACAuooC,GACA,eACEhB,EAAiBL,EAAOK,eAAc,aACtCH,EAAeF,EAAOE,cACpB,CAAC,GAEL,MAAM+F,EAAe,GAKrB,OAHI5F,GAAgB4F,EAAa98uC,KAAKm8uC,GAClCpF,GAAc+F,EAAa98uC,KAAKq8uC,GAE7B1soC,EAAQniF,KAAK7L,IAClB,MAAM,IAAEs3V,GAAQt3V,EAEVhU,EAAO,CACX4xC,KAAM24rC,EAAKj/3B,GACXmj4B,SAAUnj4B,GASZ,OANI6j4B,EAAat+uC,QACfs+uC,EAAaz5tC,SAAS+hN,IACpBA,EAAYzjN,EAAQhU,EAAK,IAItBA,IAEX,CA6FW01D,CAAOssC,EAASxxG,KAAKs+uC,MAAO,CACjCvF,iBACAH,gBAEJ,CAEA,iBAAA4F,CAAkBvvpC,GAChB,MAAM8upC,EAAWR,EAAetupC,EAAOjvF,KAAKmpB,UACtC,QAAE0myB,GAAY7vzB,KAAKu+uC,SACnB/soC,EAAU,GAmBhB,OAhBAq+sB,EAAQ3qyB,SAAQ,EAAGjiB,EAAGmtB,EAAMxvB,EAAGk6W,EAAKz7W,EAAGmpL,MACrC,IAAKttG,EAAU9qD,GACb,OAGF,MAAM,QAAEkrtC,EAAO,MAAEruoC,EAAK,QAAE0hF,GAAYovjC,EAAS1C,SAASjrtC,GAElDkrtC,GACF9poC,EAAQ3vG,KAAK,CACXu/C,KAAMhxB,EACN0qV,MACA7mT,QAAS,CAAC,CAAEg5C,QAAO9rG,MAAOivB,EAAMo4J,OAAMmG,aAE1C,IAGKn9E,CACT,CAEA,cAAAktoC,CAAezvpC,GAEb,MAAM+xY,EAAaz0c,EAAM0iE,EAAOjvF,KAAKmpB,SAE/Bmrf,EAAW,CAACjrb,EAAMjoC,EAAM05T,KAC5B,IAAKzxR,EAAKrpD,SAAU,CAClB,MAAM,MAAEs4sC,EAAK,SAAEyF,GAAa10pC,EAEtBp1B,EAAUj0D,KAAK4+uC,aAAa,CAChC/5tC,IAAK7kB,KAAKo+uC,UAAUj7uC,IAAIm1uC,GACxBn3uC,MAAOnB,KAAKu+uC,SAASjE,uBAAuBl5rC,EAAMk3rC,GAClDyF,aAGF,OAAI9prC,GAAWA,EAAQ5zD,OACd,CACL,CACEy6W,MACA15T,OACA6S,YAKC,EACT,CAEA,MAAMoxF,EAAM,GACZ,IAAK,IAAIzkJ,EAAI,EAAGi+H,EAAMx1C,EAAKrpD,SAAS3/B,OAAQO,EAAIi+H,EAAKj+H,GAAK,EAAG,CAC3D,MAAMspF,EAAQb,EAAKrpD,SAASp/B,GACtB4iB,EAAS8wf,EAASpqb,EAAO9oC,EAAM05T,GACrC,GAAIt3V,EAAOnjB,OACTglJ,EAAIxjJ,QAAQ2hB,QACP,GAAI6lE,EAAKy0W,WAAa2/yB,EAC3B,MAAO,EAEX,CACA,OAAOp4lC,GAGHwqqB,EAAU7vzB,KAAKu+uC,SAAS1ub,QACxBgvb,EAAY,CAAC,EACbrtoC,EAAU,GAmBhB,OAjBAq+sB,EAAQ3qyB,SAAQ,EAAG9e,EAAGg7C,EAAMxgD,EAAGk6W,MAC7B,GAAI5/R,EAAU95B,GAAO,CACnB,IAAI09rC,EAAaxquB,EAAStzC,EAAY5/a,EAAM05T,GAExCgk4B,EAAWz+uC,SAERw+uC,EAAU/j4B,KACb+j4B,EAAU/j4B,GAAO,CAAEA,MAAK15T,OAAM6S,QAAS,IACvCu9C,EAAQ3vG,KAAKg9uC,EAAU/j4B,KAEzBgk4B,EAAW55tC,SAAQ,EAAG+uC,cACpB4qrC,EAAU/j4B,GAAK7mT,QAAQpyD,QAAQoyD,EAAQ,IAG7C,KAGKu9C,CACT,CAEA,iBAAAitoC,CAAkBxvpC,GAChB,MAAM8upC,EAAWR,EAAetupC,EAAOjvF,KAAKmpB,UACtC,KAAE7V,EAAI,QAAEu8yB,GAAY7vzB,KAAKu+uC,SACzB/soC,EAAU,GA8BhB,OA3BAq+sB,EAAQ3qyB,SAAQ,EAAG9e,EAAGg7C,EAAMxgD,EAAGk6W,MAC7B,IAAK5/R,EAAU95B,GACb,OAGF,IAAI6S,EAAU,GAGd3gD,EAAK4R,SAAQ,CAACL,EAAK83V,KACjB1oT,EAAQpyD,QACH7B,KAAK4+uC,aAAa,CACnB/5tC,MACA1jB,MAAOigD,EAAKu7T,GACZoh4B,aAEH,IAGC9prC,EAAQ5zD,QACVmxG,EAAQ3vG,KAAK,CACXi5W,MACA15T,OACA6S,WAEJ,IAGKu9C,CACT,CACA,YAAAotoC,EAAa,IAAE/5tC,EAAG,MAAE1jB,EAAK,SAAE48uC,IACzB,IAAK7iqC,EAAU/5E,GACb,MAAO,GAGT,IAAI8yD,EAAU,GAEd,GAAItiD,EAAQxQ,GACVA,EAAM+jB,SAAQ,EAAGjiB,EAAGmtB,EAAMxvB,EAAGk6W,EAAKz7W,EAAGmpL,MACnC,IAAKttG,EAAU9qD,GACb,OAGF,MAAM,QAAEkrtC,EAAO,MAAEruoC,EAAK,QAAE0hF,GAAYovjC,EAAS1C,SAASjrtC,GAElDkrtC,GACFrnrC,EAAQpyD,KAAK,CACXorG,QACApoF,MACA1jB,MAAOivB,EACP0qV,MACAtyL,OACAmG,WAEJ,QAEG,CACL,MAAQ1rL,EAAGmtB,EAAM/wB,EAAGmpL,GAASrnL,GAEvB,QAAEm6uC,EAAO,MAAEruoC,EAAK,QAAE0hF,GAAYovjC,EAAS1C,SAASjrtC,GAElDkrtC,GACFrnrC,EAAQpyD,KAAK,CAAEorG,QAAOpoF,MAAK1jB,MAAOivB,EAAMo4J,OAAMmG,WAElD,CAEA,OAAO16H,CACT,EAGFkqrC,EAAK73uC,QAAU,QACf63uC,EAAKzD,YAAcA,EACnByD,EAAKY,WArxCL,SACEvvuC,GACA,MAAE+ouC,EAAQG,EAAOH,MAAK,gBAAEiB,EAAkBd,EAAOc,iBAAoB,CAAC,GAEtE,MAAM,KAAElmuC,EAAI,QAAEu8yB,GAAYrgzB,EACpBmruC,EAAU,IAAIlB,EAAU,CAAElB,QAAOiB,oBAGvC,OAFAmB,EAAQX,QAAQ1muC,GAChBqnuC,EAAQd,gBAAgBhqb,GACjB8qb,CACT,EA6wCAwD,EAAKri7B,OAAS486B,EAGZyF,EAAKa,WAAazytC,EApcpB,YAAqB8qB,GACnBimsC,EAAoBz7uC,QAAQw1C,EAC9B,CAscEyzD,CArjBF,MACE,WAAA7qG,CACEw7P,GACA,gBACEk9+B,EAAkBD,EAAOC,gBAAe,eACxCI,EAAiBL,EAAOK,eAAc,mBACtCE,EAAqBP,EAAOO,mBAAkB,eAC9CK,EAAiBZ,EAAOY,eAAc,eACtCN,EAAiBN,EAAOM,eAAc,SACtCjitC,EAAW2htC,EAAO3htC,SAAQ,UAC1BisB,EAAY01rC,EAAO11rC,UAAS,SAC5BimG,EAAWyvlC,EAAOzvlC,UAChB,CAAC,GAELjpJ,KAAKivF,MAAQ,KACbjvF,KAAKmpB,QAAU,CACbwvtC,kBACAI,iBACAE,qBACAD,iBACAM,iBACAvitC,WACAisB,YACAimG,YAGFjpJ,KAAKy7P,QAAUk9+B,EAAkBl9+B,EAAUA,EAAQlsP,cACnDvP,KAAKivF,MAtGT,SAAoBwsK,EAAStyO,EAAU,CAAC,GACtC,OAAOsyO,EAAQ72P,MANA,KAMgByqB,KAAK+xB,IAClC,IAAI6tC,EAAQ7tC,EACT/uB,OACAztB,MAAMw4uC,GACNvwtC,QAAQu0B,GAASA,KAAUA,EAAK/uB,SAE/Bm/E,EAAU,GACd,IAAK,IAAI5wG,EAAI,EAAGi+H,EAAM5vC,EAAM5uF,OAAQO,EAAIi+H,EAAKj+H,GAAK,EAAG,CACnD,MAAMq+uC,EAAYhwpC,EAAMruF,GAGxB,IAAIkqR,GAAQ,EACRgwF,GAAO,EACX,MAAQhwF,KAAWgwF,EAAMqi4B,GAAc,CACrC,MAAMY,EAAWb,EAAUpi4B,GAC3B,IAAIz9L,EAAQ0gkC,EAASrB,aAAauC,GAC9B5hkC,IACF7rE,EAAQ3vG,KAAK,IAAIk8uC,EAAS1gkC,EAAOl0J,IACjC2hQ,GAAQ,EAEZ,CAEA,IAAIA,EAMJ,IADAgwF,GAAO,IACEA,EAAMqi4B,GAAc,CAC3B,MAAMY,EAAWb,EAAUpi4B,GAC3B,IAAIz9L,EAAQ0gkC,EAASlB,cAAcoC,GACnC,GAAI5hkC,EAAO,CACT7rE,EAAQ3vG,KAAK,IAAIk8uC,EAAS1gkC,EAAOl0J,IACjC,KACF,CACF,CACF,CAEA,OAAOqoF,IAEX,CA6DiBwtoC,CAAWh/uC,KAAKy7P,QAASz7P,KAAKmpB,QAC7C,CAEA,gBAAOw4I,CAAU/9J,EAAGulB,GAClB,OAAOA,EAAQ+vtC,iBACjB,CAEA,QAAAmC,CAASjrtC,GACP,MAAM6+D,EAAQjvF,KAAKivF,MAEnB,IAAKA,EACH,MAAO,CACLqspC,SAAS,EACTruoC,MAAO,GAIX,MAAM,eAAE8roC,EAAc,gBAAEJ,GAAoB34uC,KAAKmpB,QAEjDiH,EAAOuotC,EAAkBvotC,EAAOA,EAAK7gB,cAErC,IAAI2vuC,EAAa,EACbpxX,EAAa,GACbytX,EAAa,EAGjB,IAAK,IAAI36uC,EAAI,EAAGu+uC,EAAOlwpC,EAAM5uF,OAAQO,EAAIu+uC,EAAMv+uC,GAAK,EAAG,CACrD,MAAMs8uC,EAAYjupC,EAAMruF,GAGxBkt3B,EAAWzt3B,OAAS,EACpB6+uC,EAAa,EAGb,IAAK,IAAI96uC,EAAI,EAAGwphC,EAAOsvN,EAAU78uC,OAAQ+D,EAAIwphC,EAAMxphC,GAAK,EAAG,CACzD,MAAM25uC,EAAWb,EAAU94uC,IACrB,QAAEk3uC,EAAO,QAAE3sjC,EAAO,MAAE1hF,GAAU8woC,EAASxyrC,OAAOn7B,GAEpD,IAAIkrtC,EAWG,CACLC,EAAa,EACb2D,EAAa,EACbpxX,EAAWzt3B,OAAS,EACpB,KACF,CAbE,GAFA6+uC,GAAc,EACd3D,GAActuoC,EACV8roC,EAAgB,CAClB,MAAMxsuC,EAAOwxuC,EAAS99uC,YAAYsM,KAC9B8wuC,EAActxuC,IAAIQ,GACpBuh3B,EAAa,IAAIA,KAAen/rB,GAEhCm/rB,EAAWjs3B,KAAK8sL,EAEpB,CAOJ,CAGA,GAAIuwjC,EAAY,CACd,IAAI17tC,EAAS,CACX83tC,SAAS,EACTruoC,MAAOsuoC,EAAa2D,GAOtB,OAJInG,IACFv1tC,EAAOmrK,QAAUm/rB,GAGZtq2B,CACT,CACF,CAGA,MAAO,CACL83tC,SAAS,EACTruoC,MAAO,EAEX,oBCnyCF,IAAImyoC,EAAQ,EAAQ,OAChBxxxB,EAAU,EAAQ,OAClB/9I,EAAO,EAAQ,OACf+sJ,EAAW,iBACXpO,EAAc3+I,EAAK2+I,YAGnB94F,GAFY7lD,EAAK6rD,UACPkyF,EAAQ3ob,QACE2ob,EAAQl4F,mBAahC,SAAS2p3B,EAAa/+qC,GAClB,IAAIy5V,EAAO,IAAIql1B,EAAM9+qC,GAsLrB,OA5KAy5V,EAAKh/J,OAAS,SAAU5oL,GACpB,GAAqB,YAAjBA,EAAQ5lE,KAAoB,MAAM,IAAIib,MAAM,mBAEhD,OADA2qD,EAAQ9mC,KAAO8mC,EAAQ9mC,KAAO8mC,EAAQ9mC,KAAOuxb,EAASzqZ,GAC/CitqC,EAAM1/uC,UAAUq7P,OAAOn7P,KAAKI,KAAMmyE,EAC7C,EAcA4nV,EAAKl1Q,KAAO,SAAUn5G,GAClB,IAAIm5G,EAAO,GAgBX,OAdIplJ,MAAMkS,QAAQ+5B,GACdA,EAASxmB,SAAQ,SAAUitD,GACvB,GAAqB,YAAjBA,EAAQ5lE,KAAoB,MAAM,IAAIib,MAAM,oBAChD2qD,EAAQ9mC,KAAO8mC,EAAQ9mC,KAAO8mC,EAAQ9mC,KAAOuxb,EAASzqZ,GACtD0yE,EAAKhjJ,KAAKswE,EACd,IAGAq8Y,EAAY9ib,GAAU,SAAUymC,GAC5B,GAAqB,YAAjBA,EAAQ5lE,KAAoB,MAAM,IAAIib,MAAM,oBAChD2qD,EAAQ9mC,KAAO8mC,EAAQ9mC,KAAO8mC,EAAQ9mC,KAAOuxb,EAASzqZ,GACtD0yE,EAAKhjJ,KAAKswE,EACd,IAEGitqC,EAAM1/uC,UAAUmlJ,KAAKjlJ,KAAKI,KAAM6kJ,EAC3C,EAaAk1Q,EAAKlnY,OAAS,SAAUs/C,EAASogE,GAC7B,GAAqB,YAAjBpgE,EAAQ5lE,KAAoB,MAAM,IAAIib,MAAM,mBAEhD,OADA2qD,EAAQ9mC,KAAO8mC,EAAQ9mC,KAAO8mC,EAAQ9mC,KAAOuxb,EAASzqZ,GAC/CitqC,EAAM1/uC,UAAUmzB,OAAOjzB,KAAKI,KAAMmyE,EAASogE,EACtD,EASAwnR,EAAK/0Y,MAAQ,WACT,OAAOo6tC,EAAM1/uC,UAAUslB,MAAMplB,KAAKI,KACtC,EAYA+5Z,EAAKxuW,OAAS,SAAU9f,GACpB,IAAIC,EAAW0zsC,EAAM1/uC,UAAU6rD,OAAO3rD,KAAKI,KAAMA,KAAKs/uC,OAAO7zsC,IAC7D,OAAOiqV,EAAkBhqV,EAC7B,EAYAquX,EAAKwl1B,SAAW,SAAU9zsC,GACtB,OAAO2zsC,EAAM1/uC,UAAU6/uC,SAAS3/uC,KAAKI,KAAMA,KAAKs/uC,OAAO7zsC,GAC3D,EASAsuX,EAAK30Z,IAAM,WACP,IAAIsmC,EAAW0zsC,EAAM1/uC,UAAU0F,IAAIxF,KAAKI,MACxC,OAAO01X,EAAkBhqV,EAC7B,EASAquX,EAAKz8W,OAAS,WACV,OAAO8hsC,EAAM1/uC,UAAU49C,OAAO19C,KAAKI,KACvC,EA6BA+5Z,EAAKyl1B,SAAW,SAAUnvtC,GACtB,OAAO+utC,EAAM1/uC,UAAU8/uC,SAAS5/uC,KAAKI,KAAMqwB,EAC/C,EASA0pY,EAAKul1B,OAAS,SAAU7zsC,GACpB,IAAIJ,EACJ,GAAII,EAAQJ,KAAMA,EAAOI,EAAQJ,UAC5B,GAAI5rC,MAAMkS,QAAQ85B,IAA+B,IAAnBA,EAAQprC,OAAcgrC,EAAOI,OAC3D,GAAIhsC,MAAMkS,QAAQ85B,IAA+B,IAAnBA,EAAQprC,OAAcgrC,EAAO,CAACI,EAAQ,GAAIA,EAAQ,GAAIA,EAAQ,GAAIA,EAAQ,SACxG,GAAqB,YAAjBA,EAAQl/B,KAAoB8+B,EAAOuxb,EAASnxb,OAChD,IAAqB,sBAAjBA,EAAQl/B,KACZ,MAAM,IAAIib,MAAM,mBAD0B6jB,EAAOuxb,EAASnxb,EACzB,CAEtC,MAAO,CACH8uI,KAAMlvI,EAAK,GACXmvI,KAAMnvI,EAAK,GACXovI,KAAMpvI,EAAK,GACXqvI,KAAMrvI,EAAK,GAEnB,EACO0uX,CACX,CAEAj9X,EAAOr6B,QAAU48uC,EACjBvitC,EAAOr6B,QAAP,QAAyB48uC,8BC3GzB,SAASltqC,EAAQ0jR,EAAMrtT,EAAYrf,QACf,IAAZA,IAAsBA,EAAU,CAAC,GACrC,IAAIshc,EAAO,CAAEl+c,KAAM,WASnB,OARmB,IAAf4c,EAAQoC,IAAYpC,EAAQoC,MAC5Bk/b,EAAKl/b,GAAKpC,EAAQoC,IAElBpC,EAAQkiB,OACRo/a,EAAKp/a,KAAOliB,EAAQkiB,MAExBo/a,EAAKjib,WAAaA,GAAc,CAAC,EACjCiib,EAAK1lb,SAAW8wT,EACT40H,CACX,CAoDA,SAASt1U,EAAMrwG,EAAa0D,EAAYrf,GAEpC,QADgB,IAAZA,IAAsBA,EAAU,CAAC,IAChC2b,EACD,MAAM,IAAItd,MAAM,2BAEpB,IAAK/nB,MAAMkS,QAAQmzB,GACf,MAAM,IAAItd,MAAM,gCAEpB,GAAIsd,EAAYzkC,OAAS,EACrB,MAAM,IAAImnB,MAAM,+CAEpB,IAAK87B,EAASxe,EAAY,MAAQwe,EAASxe,EAAY,IACnD,MAAM,IAAItd,MAAM,oCAMpB,OAAO2qD,EAJI,CACP5lE,KAAM,QACNu4B,YAAaA,GAEI0D,EAAYrf,EACrC,CA4CA,SAAS8b,EAAQH,EAAa0D,EAAYrf,QACtB,IAAZA,IAAsBA,EAAU,CAAC,GACrC,IAAK,IAAI1K,EAAK,EAAGisc,EAAgB5lb,EAAarmB,EAAKisc,EAAcrqd,OAAQoe,IAAM,CAC3E,IAAIu4U,EAAO0zH,EAAcjsc,GACzB,GAAIu4U,EAAK32V,OAAS,EACd,MAAM,IAAImnB,MAAM,+DAEpB,IAAK,IAAIpjB,EAAI,EAAGA,EAAI4yV,EAAKA,EAAK32V,OAAS,GAAGA,OAAQ+D,IAE9C,GAAI4yV,EAAKA,EAAK32V,OAAS,GAAG+D,KAAO4yV,EAAK,GAAG5yV,GACrC,MAAM,IAAIojB,MAAM,8CAG5B,CAKA,OAAO2qD,EAJI,CACP5lE,KAAM,UACNu4B,YAAaA,GAEI0D,EAAYrf,EACrC,CA4CA,SAAS63M,EAAWl8L,EAAa0D,EAAYrf,GAEzC,QADgB,IAAZA,IAAsBA,EAAU,CAAC,GACjC2b,EAAYzkC,OAAS,EACrB,MAAM,IAAImnB,MAAM,yDAMpB,OAAO2qD,EAJI,CACP5lE,KAAM,aACNu4B,YAAaA,GAEI0D,EAAYrf,EACrC,CAkDA,SAASusW,EAAkBhqV,EAAUviB,QACjB,IAAZA,IAAsBA,EAAU,CAAC,GACrC,IAAI7F,EAAK,CAAE/W,KAAM,qBAQjB,OAPI4c,EAAQoC,KACRjI,EAAGiI,GAAKpC,EAAQoC,IAEhBpC,EAAQkiB,OACR/nB,EAAG+nB,KAAOliB,EAAQkiB,MAEtB/nB,EAAGooB,SAAWA,EACPpoB,CACX,CAmBA,SAASy9M,EAAgBj8L,EAAa0D,EAAYrf,GAM9C,YALgB,IAAZA,IAAsBA,EAAU,CAAC,GAK9BgpD,EAJI,CACP5lE,KAAM,kBACNu4B,YAAaA,GAEI0D,EAAYrf,EACrC,CAmBA,SAAS03M,EAAW/7L,EAAa0D,EAAYrf,GAMzC,YALgB,IAAZA,IAAsBA,EAAU,CAAC,GAK9BgpD,EAJI,CACP5lE,KAAM,aACNu4B,YAAaA,GAEI0D,EAAYrf,EACrC,CAoBA,SAAS+b,EAAaJ,EAAa0D,EAAYrf,GAM3C,YALgB,IAAZA,IAAsBA,EAAU,CAAC,GAK9BgpD,EAJI,CACP5lE,KAAM,eACNu4B,YAAaA,GAEI0D,EAAYrf,EACrC,CA6DA,SAASwhc,EAAgB5wV,EAASs5C,QAChB,IAAVA,IAAoBA,EAAQ,cAChC,IAAIwhB,EAASpyL,EAAQmod,QAAQv3S,GAC7B,IAAKwhB,EACD,MAAM,IAAIrtK,MAAM6rJ,EAAQ,qBAE5B,OAAOt5C,EAAU86D,CACrB,CAYA,SAASg2R,EAAgB5hU,EAAUoqB,QACjB,IAAVA,IAAoBA,EAAQ,cAChC,IAAIwhB,EAASpyL,EAAQmod,QAAQv3S,GAC7B,IAAKwhB,EACD,MAAM,IAAIrtK,MAAM6rJ,EAAQ,qBAE5B,OAAOpqB,EAAW4rC,CACtB,CAuCA,SAASi2R,EAAiB/wV,GAEtB,OADcA,GAAW,EAAIl3H,KAAKsmC,IAChB,IAAOtmC,KAAKsmC,EAClC,CAoEA,SAASma,EAASJ,GACd,OAAQ5W,MAAM4W,IAAgB,OAARA,IAAiBzjD,MAAMkS,QAAQuxC,EACzD,CA9nBA5jD,OAAO4D,eAAeT,EAAS,aAAc,CAAEtB,OAAO,IAUtDsB,EAAQsod,YAAc,UAOtBtod,EAAQmod,QAAU,CACdI,YAAmC,IAAtBvod,EAAQsod,YACrBE,YAAmC,IAAtBxod,EAAQsod,YACrB3pH,QAAS3+V,EAAQsod,YAAc,OAC/BG,KAA4B,QAAtBzod,EAAQsod,YACdI,OAA8B,MAAtB1od,EAAQsod,YAChBK,WAAY3od,EAAQsod,YAAc,IAClCM,WAAY5od,EAAQsod,YAAc,IAClC78U,OAAQzrI,EAAQsod,YAChBO,OAAQ7od,EAAQsod,YAChBQ,MAAO9od,EAAQsod,YAAc,SAC7BS,YAAmC,IAAtB/od,EAAQsod,YACrBU,YAAmC,IAAtBhpd,EAAQsod,YACrBW,cAAejpd,EAAQsod,YAAc,KACrChxV,QAAS,EACT4xV,MAA6B,OAAtBlpd,EAAQsod,aAQnBtod,EAAQmpd,aAAe,CACnBZ,YAAa,IACbC,YAAa,IACb7pH,QAAS,EAAI,OACb8pH,KAAM,QACNC,OAAQ,MACRC,WAAY,KACZC,WAAY,KACZn9U,OAAQ,EACRo9U,OAAQ,EACRC,MAAO,EAAI,SACXC,YAAa,IACbC,YAAa,IACbC,cAAe,EAAI,KACnB3xV,QAAS,EAAIt3H,EAAQsod,YACrBY,MAAO,WAQXlpd,EAAQopd,YAAc,CAClBC,MAAO,UACPd,YAAa,IACbC,YAAa,IACbC,KAAM,aACNa,SAAU,KACVZ,OAAQ,eACRC,WAAY,KACZC,WAAY,KACZn9U,OAAQ,EACRo9U,OAAQ,EACRC,MAAO,OACPC,YAAa,IACbC,YAAa,IACbE,MAAO,aAmCXlpd,EAAQ0vE,QAAUA,EAmClB1vE,EAAQsiC,SAnBR,SAAkBx4B,EAAMu4B,EAAaknb,GAEjC,YADiB,IAAbA,IAAuBA,EAAW,CAAC,GAC/Bz/c,GACJ,IAAK,QACD,OAAO4oI,EAAMrwG,GAAaC,SAC9B,IAAK,aACD,OAAOi8L,EAAWl8L,GAAaC,SACnC,IAAK,UACD,OAAOE,EAAQH,GAAaC,SAChC,IAAK,aACD,OAAO87L,EAAW/7L,GAAaC,SACnC,IAAK,kBACD,OAAOg8L,EAAgBj8L,GAAaC,SACxC,IAAK,eACD,OAAOG,EAAaJ,GAAaC,SACrC,QACI,MAAM,IAAIvd,MAAMjb,EAAO,eAEnC,EAqCA9J,EAAQ0yI,MAAQA,EA2BhB1yI,EAAQ6oC,OANR,SAAgBxG,EAAa0D,EAAYrf,GAErC,YADgB,IAAZA,IAAsBA,EAAU,CAAC,GAC9BusW,EAAkB5wV,EAAYzV,KAAI,SAAUsoG,GAC/C,OAAOwd,EAAMxd,EAAQnvF,EACzB,IAAIrf,EACR,EAqCA1mB,EAAQwiC,QAAUA,EAyBlBxiC,EAAQ+oC,SANR,SAAkB1G,EAAa0D,EAAYrf,GAEvC,YADgB,IAAZA,IAAsBA,EAAU,CAAC,GAC9BusW,EAAkB5wV,EAAYzV,KAAI,SAAUsoG,GAC/C,OAAO1yF,EAAQ0yF,EAAQnvF,EAC3B,IAAIrf,EACR,EA8BA1mB,EAAQu+N,WAAaA,EA0BrBv+N,EAAQwpd,YANR,SAAqBnnb,EAAa0D,EAAYrf,GAE1C,YADgB,IAAZA,IAAsBA,EAAU,CAAC,GAC9BusW,EAAkB5wV,EAAYzV,KAAI,SAAUsoG,GAC/C,OAAOqpG,EAAWrpG,EAAQnvF,EAC9B,IAAIrf,EACR,EAoCA1mB,EAAQizX,kBAAoBA,EA0B5BjzX,EAAQs+N,gBAAkBA,EA0B1Bt+N,EAAQo+N,WAAaA,EA2BrBp+N,EAAQyiC,aAAeA,EA2BvBziC,EAAQypd,mBARR,SAA4Bj4O,EAAYzrM,EAAYrf,GAMhD,YALgB,IAAZA,IAAsBA,EAAU,CAAC,GAK9BgpD,EAJI,CACP5lE,KAAM,qBACN0nO,WAAYA,GAEKzrM,EAAYrf,EACrC,EAuBA1mB,EAAQwgD,MARR,SAAeC,EAAK+yN,GAEhB,QADkB,IAAdA,IAAwBA,EAAY,GACpCA,KAAeA,GAAa,GAC5B,MAAM,IAAIzuP,MAAM,uCAEpB,IAAI0hH,EAAarmI,KAAK6yF,IAAI,GAAIugL,GAAa,GAC3C,OAAOpzQ,KAAKogD,MAAMC,EAAMgmF,GAAcA,CAC1C,EAoBAzmI,EAAQkod,gBAAkBA,EAmB1Blod,EAAQood,gBAAkBA,EAc1Bpod,EAAQ0pd,gBAHR,SAAyBljU,EAAUoqB,GAC/B,OAAOy3S,EAAiBD,EAAgB5hU,EAAUoqB,GACtD,EAiBA5wK,EAAQ2pd,iBAPR,SAA0B5sb,GACtB,IAAImvM,EAAQnvM,EAAU,IAItB,OAHImvM,EAAQ,IACRA,GAAS,KAENA,CACX,EAaAlsO,EAAQqod,iBAAmBA,EAY3Brod,EAAQ4pd,iBAJR,SAA0BjrH,GAEtB,OADcA,EAAU,IACNv+V,KAAKsmC,GAAM,GACjC,EAmBA1mC,EAAQ6pd,cARR,SAAuBjsd,EAAQksd,EAAcC,GAGzC,QAFqB,IAAjBD,IAA2BA,EAAe,mBAC5B,IAAdC,IAAwBA,EAAY,gBAClCnsd,GAAU,GACZ,MAAM,IAAImnB,MAAM,oCAEpB,OAAOmjc,EAAgBE,EAAgBxqd,EAAQksd,GAAeC,EAClE,EA0BA/pd,EAAQgqd,YAhBR,SAAqBprO,EAAMkrO,EAAcC,GAGrC,QAFqB,IAAjBD,IAA2BA,EAAe,eAC5B,IAAdC,IAAwBA,EAAY,gBAClCnrO,GAAQ,GACV,MAAM,IAAI75N,MAAM,kCAEpB,IAAIklc,EAAcjqd,EAAQopd,YAAYU,GACtC,IAAKG,EACD,MAAM,IAAIllc,MAAM,0BAEpB,IAAImlc,EAAclqd,EAAQopd,YAAYW,GACtC,IAAKG,EACD,MAAM,IAAInlc,MAAM,uBAEpB,OAAQ65N,EAAOqrO,EAAeC,CAClC,EAgBAlqd,EAAQ6gD,SAAWA,EAenB7gD,EAAQwiQ,SAHR,SAAkBx0M,GACd,QAASA,GAASA,EAAMxwD,cAAgBX,MAC5C,EAuCAmD,EAAQmqd,aAhBR,SAAsBvhb,GAClB,IAAKA,EACD,MAAM,IAAI7jB,MAAM,oBAEpB,IAAK/nB,MAAMkS,QAAQ05B,GACf,MAAM,IAAI7jB,MAAM,yBAEpB,GAAoB,IAAhB6jB,EAAKhrC,QAAgC,IAAhBgrC,EAAKhrC,OAC1B,MAAM,IAAImnB,MAAM,2CAEpB6jB,EAAKnmB,SAAQ,SAAUg+B,GACnB,IAAKI,EAASJ,GACV,MAAM,IAAI17B,MAAM,iCAExB,GACJ,EA+BA/kB,EAAQoqd,WARR,SAAoBthc,GAChB,IAAKA,EACD,MAAM,IAAI/D,MAAM,kBAEpB,IAAiD,IAA7C,CAAC,SAAU,UAAUhnB,eAAe+qB,GACpC,MAAM,IAAI/D,MAAM,kCAExB,gCChtBAloB,OAAO4D,eAAeT,EAAS,aAA/B,CAA+CtB,OAAO,IAEtD,IAAIysd,EAAU,EAAQ,OAmCtB,SAASlyF,EAAUjwV,EAASviB,EAAU2kc,GAEpC,GAAgB,OAAZpib,EA4BJ,IA3BA,IAAIrnC,EACFV,EACAlB,EACAuiC,EACA+ob,EACAn2V,EACAo2V,EAGAC,EAFAC,EAAa,EACblwF,EAAa,EAEbxxX,EAAOk/B,EAAQl/B,KACf2hd,EAA+B,sBAAT3hd,EACtB4hd,EAAqB,YAAT5hd,EACZwjC,EAAOm+a,EAAsBzib,EAAQC,SAASrrC,OAAS,EAchDyhO,EAAe,EAAGA,EAAe/xL,EAAM+xL,IAAgB,CAS9DgsP,GAHAE,KALAD,EAA0BG,EACtBzib,EAAQC,SAASo2L,GAAc/8L,SAC/Bopb,EACA1ib,EAAQ1G,SACR0G,IAEiC,uBAAjCsib,EAAwBxhd,MAGxBwhd,EAAwB95O,WAAW5zO,OACnC,EAEJ,IAAK,IAAI+td,EAAY,EAAGA,EAAYN,EAAOM,IAAa,CACtD,IAAIC,EAAoB,EACpBvoT,EAAgB,EAMpB,GAAiB,QALjB/gI,EAAWipb,EACPD,EAAwB95O,WAAWm6O,GACnCL,GAGJ,CACAp2V,EAAS5yF,EAASD,YAClB,IAAIwpb,EAAWvpb,EAASx4B,KAQxB,OANA0hd,GACEJ,GACc,YAAbS,GAAuC,iBAAbA,EAEvB,EADA,EAGEA,GACN,KAAK,KACH,MACF,IAAK,QACH,IAOQ,IANNplc,EACEyuG,EACAomQ,EACAj8J,EACAusP,EACAvoT,GAGF,OAAO,EACTi4N,IACAswF,IACA,MACF,IAAK,aACL,IAAK,aACH,IAAKjqd,EAAI,EAAGA,EAAIuzH,EAAOt3H,OAAQ+D,IAAK,CAClC,IAOQ,IANN8kB,EACEyuG,EAAOvzH,GACP25X,EACAj8J,EACAusP,EACAvoT,GAGF,OAAO,EACTi4N,IACiB,eAAbuwF,GAA2BD,GACjC,CACiB,eAAbC,GAA2BD,IAC/B,MACF,IAAK,UACL,IAAK,kBACH,IAAKjqd,EAAI,EAAGA,EAAIuzH,EAAOt3H,OAAQ+D,IAAK,CAClC,IAAKV,EAAI,EAAGA,EAAIi0H,EAAOvzH,GAAG/D,OAAS4td,EAAYvqd,IAAK,CAClD,IAOQ,IANNwlB,EACEyuG,EAAOvzH,GAAGV,GACVq6X,EACAj8J,EACAusP,EACAvoT,GAGF,OAAO,EACTi4N,GACF,CACiB,oBAAbuwF,GAAgCD,IACnB,YAAbC,GAAwBxoT,GAC9B,CACiB,YAAbwoT,GAAwBD,IAC5B,MACF,IAAK,eACH,IAAKjqd,EAAI,EAAGA,EAAIuzH,EAAOt3H,OAAQ+D,IAAK,CAElC,IADA0hK,EAAgB,EACXpiK,EAAI,EAAGA,EAAIi0H,EAAOvzH,GAAG/D,OAAQqD,IAAK,CACrC,IAAKlB,EAAI,EAAGA,EAAIm1H,EAAOvzH,GAAGV,GAAGrD,OAAS4td,EAAYzrd,IAAK,CACrD,IAOQ,IANN0mB,EACEyuG,EAAOvzH,GAAGV,GAAGlB,GACbu7X,EACAj8J,EACAusP,EACAvoT,GAGF,OAAO,EACTi4N,GACF,CACAj4N,GACF,CACAuoT,GACF,CACA,MACF,IAAK,qBACH,IAAKjqd,EAAI,EAAGA,EAAI2gC,EAASkvM,WAAW5zO,OAAQ+D,IAC1C,IAEE,IADAs3X,EAAU32V,EAASkvM,WAAW7vO,GAAI8kB,EAAU2kc,GAG5C,OAAO,EACX,MACF,QACE,MAAM,IAAIrmc,MAAM,yBAjGW,CAmGjC,CACF,CACF,CA0GA,SAAS+mc,EAAS9ib,EAASviB,GACzB,IAAItoB,EACJ,OAAQ6qC,EAAQl/B,MACd,IAAK,oBACH,IAAK3L,EAAI,EAAGA,EAAI6qC,EAAQC,SAASrrC,SACqB,IAAhD6oB,EAASuiB,EAAQC,SAAS9qC,GAAG4nC,WAAY5nC,GADNA,KAGzC,MACF,IAAK,UACHsoB,EAASuiB,EAAQjD,WAAY,GAGnC,CAoFA,SAASgmb,EAAY/ib,EAASviB,GAC5B,GAAqB,YAAjBuiB,EAAQl/B,KACV2c,EAASuiB,EAAS,QACb,GAAqB,sBAAjBA,EAAQl/B,KACjB,IAAK,IAAI3L,EAAI,EAAGA,EAAI6qC,EAAQC,SAASrrC,SACM,IAArC6oB,EAASuiB,EAAQC,SAAS9qC,GAAIA,GADSA,KAIjD,CA6GA,SAAS6td,EAAShjb,EAASviB,GACzB,IAAItoB,EACFwD,EACAjC,EACA4iC,EACA+ob,EACAC,EACAC,EACAU,EACAC,EACAjyQ,EACAolB,EAAe,EACfosP,EAAuC,sBAAjBzib,EAAQl/B,KAC9B4hd,EAA6B,YAAjB1ib,EAAQl/B,KACpBwjC,EAAOm+a,EAAsBzib,EAAQC,SAASrrC,OAAS,EAczD,IAAKO,EAAI,EAAGA,EAAImvC,EAAMnvC,IAAK,CA4BzB,IA3BAmtd,EAA0BG,EACtBzib,EAAQC,SAAS9qC,GAAGmkC,SACpBopb,EACA1ib,EAAQ1G,SACR0G,EACJijb,EAAoBR,EAChBzib,EAAQC,SAAS9qC,GAAG4nC,WACpB2lb,EACA1ib,EAAQjD,WACR,CAAC,EACLmmb,EAAcT,EACVzib,EAAQC,SAAS9qC,GAAGyqC,KACpB8ib,EACA1ib,EAAQJ,UACR0C,EACJ2uK,EAAYwxQ,EACRzib,EAAQC,SAAS9qC,GAAG2qB,GACpB4ic,EACA1ib,EAAQlgB,QACRwiB,EAIJ+/a,GAHAE,IAAuBD,GACc,uBAAjCA,EAAwBxhd,MAGxBwhd,EAAwB95O,WAAW5zO,OACnC,EAEC8B,EAAI,EAAGA,EAAI2rd,EAAO3rd,IAMrB,GAAiB,QALjB4iC,EAAWipb,EACPD,EAAwB95O,WAAW9xO,GACnC4rd,GAgBJ,OAAQhpb,EAASx4B,MACf,IAAK,QACL,IAAK,aACL,IAAK,aACL,IAAK,UACL,IAAK,kBACL,IAAK,eACH,IAOQ,IANN2c,EACE6b,EACA+8L,EACA4sP,EACAC,EACAjyQ,GAGF,OAAO,EACT,MAEF,IAAK,qBACH,IAAKt4M,EAAI,EAAGA,EAAI2gC,EAASkvM,WAAW5zO,OAAQ+D,IAC1C,IAOQ,IANN8kB,EACE6b,EAASkvM,WAAW7vO,GACpB09N,EACA4sP,EACAC,EACAjyQ,GAGF,OAAO,EAEX,MAEF,QACE,MAAM,IAAIl1L,MAAM,8BA/ClB,IAOQ,IANN0B,EACE,KACA44M,EACA4sP,EACAC,EACAjyQ,GAGF,OAAO,EA0CbolB,GACF,CACF,CAyGA,SAASqhK,EAAY13V,EAASviB,GAC5Bulc,EAAShjb,GAAS,SAAU1G,EAAU+8L,EAAct5L,EAAY6C,EAAM9f,GAEpE,IAiBI+ic,EAjBA/hd,EAAoB,OAAbw4B,EAAoB,KAAOA,EAASx4B,KAC/C,OAAQA,GACN,KAAK,KACL,IAAK,QACL,IAAK,aACL,IAAK,UACH,OAKQ,IAJN2c,EACE0kc,EAAQz7Y,QAAQptC,EAAUyD,EAAY,CAAE6C,KAAMA,EAAM9f,GAAIA,IACxDu2M,EACA,SAIJ,EAMJ,OAAQv1N,GACN,IAAK,aACH+hd,EAAW,QACX,MACF,IAAK,kBACHA,EAAW,aACX,MACF,IAAK,eACHA,EAAW,UAIf,IACE,IAAID,EAAoB,EACxBA,EAAoBtpb,EAASD,YAAYzkC,OACzCgud,IACA,CACA,IACIx4H,EAAO,CACTtpV,KAAM+hd,EACNxpb,YAHeC,EAASD,YAAYupb,IAKtC,IAEE,IADAnlc,EAAS0kc,EAAQz7Y,QAAQ0jR,EAAMrtT,GAAas5L,EAAcusP,GAG1D,OAAO,CACX,CACF,GACF,CA0GA,SAASO,EAAYnjb,EAASviB,GAC5Bi6W,EAAY13V,GAAS,SAAU0mC,EAAS2vJ,EAAcusP,GACpD,IAAIQ,EAAe,EAGnB,GAAK18Y,EAAQptC,SAAb,CAEA,IAAIx4B,EAAO4lE,EAAQptC,SAASx4B,KAC5B,GAAa,UAATA,GAA6B,eAATA,EAAxB,CAGA,IAAIuid,EACAC,EAAuB,EACvBC,EAAqB,EACrBC,EAAgB,EACpB,OAyCQ,IAxCNvzF,EACEvpT,GACA,SACE+8Y,EACAnxF,EACAoxF,EACAC,EACAtpT,GAGA,QACqB/3H,IAAnB+gb,GACAhtP,EAAeitP,GACfK,EAAsBJ,GACtBlpT,EAAgBmpT,EAOhB,OALAH,EAAiBI,EACjBH,EAAuBjtP,EACvBktP,EAAqBI,EACrBH,EAAgBnpT,OAChB+oT,EAAe,GAGjB,IAAIQ,EAAiBzB,EAAQ5sP,WAC3B,CAAC8tP,EAAgBI,GACjB/8Y,EAAQ3pC,YAEV,IAOQ,IANNtf,EACEmmc,EACAvtP,EACAusP,EACAvoT,EACA+oT,GAGF,OAAO,EACTA,IACAC,EAAiBI,CACnB,UAxCJ,CAPqD,CAHxB,CAsD/B,GACF,CAkHA,SAASI,EAAS7jb,EAASviB,GAEzB,IAAKuiB,EAAS,MAAM,IAAIjkB,MAAM,uBAE9B27W,EAAY13V,GAAS,SAAU0mC,EAAS2vJ,EAAcusP,GACpD,GAAyB,OAArBl8Y,EAAQptC,SAAZ,CACA,IAAIx4B,EAAO4lE,EAAQptC,SAASx4B,KACxBorH,EAASxlD,EAAQptC,SAASD,YAC9B,OAAQv4B,GACN,IAAK,aACH,IAAiE,IAA7D2c,EAASipD,EAAS2vJ,EAAcusP,EAAmB,EAAG,GACxD,OAAO,EACT,MACF,IAAK,UACH,IACE,IAAIvoT,EAAgB,EACpBA,EAAgBnuC,EAAOt3H,OACvBylK,IAEA,IAMQ,IALN58I,EACE0kc,EAAQ5sP,WAAWrpG,EAAOmuC,GAAgB3zF,EAAQ3pC,YAClDs5L,EACAusP,EACAvoT,GAGF,OAAO,EAtBsB,CA0BvC,GACF,CAqTArjK,EAAQ8sd,SAt6BR,SAAkB9jb,GAChB,IAAIksF,EAAS,GAIb,OAHA+jQ,EAAUjwV,GAAS,SAAUwzH,GAC3BtnC,EAAO91H,KAAKo9J,EACd,IACOtnC,CACT,EAi6BAl1H,EAAQi5X,UAAYA,EACpBj5X,EAAQ+sd,YA3oCR,SAAqB/jb,EAASviB,EAAUumc,EAAc5B,GACpD,IAAI6B,EAAgBD,EAwBpB,OAvBA/zF,EACEjwV,GACA,SACEyjb,EACAnxF,EACAj8J,EACAusP,EACAvoT,GAGE4pT,EADiB,IAAf3xF,QAAqChwV,IAAjB0hb,EACNP,EAEAhmc,EACdwmc,EACAR,EACAnxF,EACAj8J,EACAusP,EACAvoT,EAEN,GACA+nT,GAEK6B,CACT,EAknCAjtd,EAAQ+rd,YAAcA,EACtB/rd,EAAQktd,cAn8BR,SAAuBlkb,EAASviB,EAAUumc,GACxC,IAAIC,EAAgBD,EAMpB,OALAjB,EAAY/ib,GAAS,SAAUmkb,EAAgB9tP,GAE3C4tP,EADmB,IAAjB5tP,QAAuC/zL,IAAjB0hb,EACRG,EACG1mc,EAASwmc,EAAeE,EAAgB9tP,EAC/D,IACO4tP,CACT,EA47BAjtd,EAAQotd,UAnFR,SAAmBpkb,EAAStiB,GAG1B,GADAA,EAAUA,GAAW,CAAC,GACjBykc,EAAQ3oN,SAAS97O,GAAU,MAAM,IAAI3B,MAAM,sBAChD,IAOIud,EAPA+8L,EAAe34M,EAAQ24M,cAAgB,EACvCusP,EAAoBllc,EAAQklc,mBAAqB,EACjDvoT,EAAgB38I,EAAQ28I,eAAiB,EACzCi4N,EAAa50W,EAAQ40W,YAAc,EAGnCv1V,EAAarf,EAAQqf,WAGzB,OAAQiD,EAAQl/B,MACd,IAAK,oBACCu1N,EAAe,IACjBA,EAAer2L,EAAQC,SAASrrC,OAASyhO,GAC3Ct5L,EAAaA,GAAciD,EAAQC,SAASo2L,GAAct5L,WAC1DzD,EAAW0G,EAAQC,SAASo2L,GAAc/8L,SAC1C,MACF,IAAK,UACHyD,EAAaA,GAAciD,EAAQjD,WACnCzD,EAAW0G,EAAQ1G,SACnB,MACF,IAAK,QACL,IAAK,aACH,OAAO,KACT,IAAK,aACL,IAAK,UACL,IAAK,kBACL,IAAK,eACHA,EAAW0G,EACX,MACF,QACE,MAAM,IAAIjkB,MAAM,sBAIpB,GAAiB,OAAbud,EAAmB,OAAO,KAC9B,IAAI4yF,EAAS5yF,EAASD,YACtB,OAAQC,EAASx4B,MACf,IAAK,QACH,OAAOqhd,EAAQz4U,MAAMxd,EAAQnvF,EAAYrf,GAC3C,IAAK,aAGH,OAFIklc,EAAoB,IACtBA,EAAoB12V,EAAOt3H,OAASgud,GAC/BT,EAAQz4U,MAAMxd,EAAO02V,GAAoB7lb,EAAYrf,GAC9D,IAAK,aAEH,OADI40W,EAAa,IAAGA,EAAapmQ,EAAOt3H,OAAS09X,GAC1C6vF,EAAQz4U,MAAMxd,EAAOomQ,GAAav1V,EAAYrf,GACvD,IAAK,UAIH,OAHI28I,EAAgB,IAAGA,EAAgBnuC,EAAOt3H,OAASylK,GACnDi4N,EAAa,IACfA,EAAapmQ,EAAOmuC,GAAezlK,OAAS09X,GACvC6vF,EAAQz4U,MAAMxd,EAAOmuC,GAAei4N,GAAav1V,EAAYrf,GACtE,IAAK,kBAKH,OAJIklc,EAAoB,IACtBA,EAAoB12V,EAAOt3H,OAASgud,GAClCtwF,EAAa,IACfA,EAAapmQ,EAAO02V,GAAmBhud,OAAS09X,GAC3C6vF,EAAQz4U,MAAMxd,EAAO02V,GAAmBtwF,GAAav1V,EAAYrf,GAC1E,IAAK,eAQH,OAPIklc,EAAoB,IACtBA,EAAoB12V,EAAOt3H,OAASgud,GAClCvoT,EAAgB,IAClBA,EAAgBnuC,EAAO02V,GAAmBhud,OAASylK,GACjDi4N,EAAa,IACfA,EACEpmQ,EAAO02V,GAAmBvoT,GAAezlK,OAAS09X,GAC/C6vF,EAAQz4U,MACbxd,EAAO02V,GAAmBvoT,GAAei4N,GACzCv1V,EACArf,GAGN,MAAM,IAAI3B,MAAM,qBAClB,EAQA/kB,EAAQqtd,YArNR,SAAqBrkb,EAAStiB,GAG5B,GADAA,EAAUA,GAAW,CAAC,GACjBykc,EAAQ3oN,SAAS97O,GAAU,MAAM,IAAI3B,MAAM,sBAChD,IAOIud,EAPA+8L,EAAe34M,EAAQ24M,cAAgB,EACvCusP,EAAoBllc,EAAQklc,mBAAqB,EACjDvoT,EAAgB38I,EAAQ28I,eAAiB,EACzC+oT,EAAe1lc,EAAQ0lc,cAAgB,EAGvCrmb,EAAarf,EAAQqf,WAGzB,OAAQiD,EAAQl/B,MACd,IAAK,oBACCu1N,EAAe,IACjBA,EAAer2L,EAAQC,SAASrrC,OAASyhO,GAC3Ct5L,EAAaA,GAAciD,EAAQC,SAASo2L,GAAct5L,WAC1DzD,EAAW0G,EAAQC,SAASo2L,GAAc/8L,SAC1C,MACF,IAAK,UACHyD,EAAaA,GAAciD,EAAQjD,WACnCzD,EAAW0G,EAAQ1G,SACnB,MACF,IAAK,QACL,IAAK,aACH,OAAO,KACT,IAAK,aACL,IAAK,UACL,IAAK,kBACL,IAAK,eACHA,EAAW0G,EACX,MACF,QACE,MAAM,IAAIjkB,MAAM,sBAIpB,GAAiB,OAAbud,EAAmB,OAAO,KAC9B,IAAI4yF,EAAS5yF,EAASD,YACtB,OAAQC,EAASx4B,MACf,IAAK,QACL,IAAK,aACH,OAAO,KACT,IAAK,aAEH,OADIsid,EAAe,IAAGA,EAAel3V,EAAOt3H,OAASwud,EAAe,GAC7DjB,EAAQ5sP,WACb,CAACrpG,EAAOk3V,GAAel3V,EAAOk3V,EAAe,IAC7Crmb,EACArf,GAEJ,IAAK,UAIH,OAHI28I,EAAgB,IAAGA,EAAgBnuC,EAAOt3H,OAASylK,GACnD+oT,EAAe,IACjBA,EAAel3V,EAAOmuC,GAAezlK,OAASwud,EAAe,GACxDjB,EAAQ5sP,WACb,CACErpG,EAAOmuC,GAAe+oT,GACtBl3V,EAAOmuC,GAAe+oT,EAAe,IAEvCrmb,EACArf,GAEJ,IAAK,kBAKH,OAJIklc,EAAoB,IACtBA,EAAoB12V,EAAOt3H,OAASgud,GAClCQ,EAAe,IACjBA,EAAel3V,EAAO02V,GAAmBhud,OAASwud,EAAe,GAC5DjB,EAAQ5sP,WACb,CACErpG,EAAO02V,GAAmBQ,GAC1Bl3V,EAAO02V,GAAmBQ,EAAe,IAE3Crmb,EACArf,GAEJ,IAAK,eAQH,OAPIklc,EAAoB,IACtBA,EAAoB12V,EAAOt3H,OAASgud,GAClCvoT,EAAgB,IAClBA,EAAgBnuC,EAAO02V,GAAmBhud,OAASylK,GACjD+oT,EAAe,IACjBA,EACEl3V,EAAO02V,GAAmBvoT,GAAezlK,OAASwud,EAAe,GAC9DjB,EAAQ5sP,WACb,CACErpG,EAAO02V,GAAmBvoT,GAAe+oT,GACzCl3V,EAAO02V,GAAmBvoT,GAAe+oT,EAAe,IAE1Drmb,EACArf,GAGN,MAAM,IAAI3B,MAAM,qBAClB,EAwHA/kB,EAAQ0gY,YAAcA,EACtB1gY,EAAQstd,cAvkBR,SAAuBtkb,EAASviB,EAAUumc,GACxC,IAAIC,EAAgBD,EAmBpB,OAlBAtsF,EACE13V,GACA,SAAUmkb,EAAgB9tP,EAAcusP,GAMpCqB,EAJiB,IAAjB5tP,GACsB,IAAtBusP,QACiBtgb,IAAjB0hb,EAEgBG,EAEA1mc,EACdwmc,EACAE,EACA9tP,EACAusP,EAEN,IAEKqB,CACT,EAmjBAjtd,EAAQgsd,SAAWA,EACnBhsd,EAAQkrd,WAluBR,SAAoBlib,EAASviB,EAAUumc,GACrC,IAAIC,EAAgBD,EAuBpB,OAtBAhB,EACEhjb,GACA,SACEukb,EACAluP,EACA4sP,EACAC,EACAjyQ,GAGEgzQ,EADmB,IAAjB5tP,QAAuC/zL,IAAjB0hb,EACRO,EAEA9mc,EACdwmc,EACAM,EACAluP,EACA4sP,EACAC,EACAjyQ,EAEN,IAEKgzQ,CACT,EA0sBAjtd,EAAQ6sd,SAAWA,EACnB7sd,EAAQwtd,WAjRR,SAAoBxkb,EAASviB,EAAUumc,GACrC,IAAIC,EAAgBD,EAgBpB,OAfAH,EACE7jb,GACA,SAAUukV,EAAaluJ,EAAcusP,EAAmBvoT,GAEpD4pT,EADmB,IAAjB5tP,QAAuC/zL,IAAjB0hb,EACRz/F,EAEA9mW,EACdwmc,EACA1/F,EACAluJ,EACAusP,EACAvoT,EAEN,IAEK4pT,CACT,EAgQAjtd,EAAQ8rd,SAAWA,EACnB9rd,EAAQytd,WAviCR,SAAoBzkb,EAASviB,EAAUumc,GACrC,IAAIC,EAAgBD,EAOpB,OANAlB,EAAS9ib,GAAS,SAAU0kb,EAAmBruP,GAE3C4tP,EADmB,IAAjB5tP,QAAuC/zL,IAAjB0hb,EACRU,EAEAjnc,EAASwmc,EAAeS,EAAmBruP,EAC/D,IACO4tP,CACT,EA+hCAjtd,EAAQmsd,YAAcA,EACtBnsd,EAAQ2td,cAhaR,SAAuB3kb,EAASviB,EAAUumc,GACxC,IAAIC,EAAgBD,EAChBY,GAAU,EAwBd,OAvBAzB,EACEnjb,GACA,SACE4jb,EACAvtP,EACAusP,EACAvoT,EACA+oT,GAGEa,GADc,IAAZW,QAAsCtib,IAAjB0hb,EACPJ,EAEAnmc,EACdwmc,EACAL,EACAvtP,EACAusP,EACAvoT,EACA+oT,GAEJwB,GAAU,CACZ,IAEKX,CACT,2DClgCO,IAAI9mU,EAAU,KACV62lC,EAAqC,oBAAjBz/tC,aAA+BA,aAAevgB,MACzDoD,KAAKwF,OAUZxF,KAAKsmC,GAuBbtmC,KAAK68uC,QAAO78uC,KAAK68uC,MAAQ,WAI5B,IAHA,IAAI18uC,EAAI,EACJpC,EAAIR,UAAUC,OAEXO,KACLoC,GAAK5C,UAAUQ,GAAKR,UAAUQ,GAGhC,OAAOiC,KAAK4yF,KAAKzyF,EACnB,0ICrCO,SAAS9C,IACd,IAAIggI,EAAM,IAAI,KAAoB,GAclC,OAZI,MAAuBlgH,eACzBkgH,EAAI,GAAK,EACTA,EAAI,GAAK,EACTA,EAAI,GAAK,EACTA,EAAI,GAAK,EACTA,EAAI,GAAK,EACTA,EAAI,GAAK,GAGXA,EAAI,GAAK,EACTA,EAAI,GAAK,EACTA,EAAI,GAAK,EACFA,CACT,CAgJO,SAASyqD,EAAUzqD,EAAKl/H,GAE7B,GAAIk/H,IAAQl/H,EAAG,CACb,IAAI2+uC,EAAM3+uC,EAAE,GACR4+uC,EAAM5+uC,EAAE,GACR6+uC,EAAM7+uC,EAAE,GACZk/H,EAAI,GAAKl/H,EAAE,GACXk/H,EAAI,GAAKl/H,EAAE,GACXk/H,EAAI,GAAKy/mC,EACTz/mC,EAAI,GAAKl/H,EAAE,GACXk/H,EAAI,GAAK0/mC,EACT1/mC,EAAI,GAAK2/mC,CACX,MACE3/mC,EAAI,GAAKl/H,EAAE,GACXk/H,EAAI,GAAKl/H,EAAE,GACXk/H,EAAI,GAAKl/H,EAAE,GACXk/H,EAAI,GAAKl/H,EAAE,GACXk/H,EAAI,GAAKl/H,EAAE,GACXk/H,EAAI,GAAKl/H,EAAE,GACXk/H,EAAI,GAAKl/H,EAAE,GACXk/H,EAAI,GAAKl/H,EAAE,GACXk/H,EAAI,GAAKl/H,EAAE,GAGb,OAAOk/H,CACT,CASO,SAAS0+B,EAAO1+B,EAAKl/H,GAC1B,IAAImwN,EAAMnwN,EAAE,GACR2+uC,EAAM3+uC,EAAE,GACR4+uC,EAAM5+uC,EAAE,GACR8+uC,EAAM9+uC,EAAE,GACR++uC,EAAM/+uC,EAAE,GACR6+uC,EAAM7+uC,EAAE,GACRg/uC,EAAMh/uC,EAAE,GACRi/uC,EAAMj/uC,EAAE,GACRk/uC,EAAMl/uC,EAAE,GACRm/uC,EAAMD,EAAMH,EAAMF,EAAMI,EACxBG,GAAOF,EAAMJ,EAAMD,EAAMG,EACzBK,EAAMJ,EAAMH,EAAMC,EAAMC,EAExB5xS,EAAMj9uB,EAAMgvhC,EAAMR,EAAMS,EAAMR,EAAMS,EAExC,OAAKjyS,GAILA,EAAM,EAAMA,EACZlu0B,EAAI,GAAKignC,EAAM/xS,EACflu0B,EAAI,KAAOggnC,EAAMP,EAAMC,EAAMK,GAAO7xS,EACpClu0B,EAAI,IAAM2/mC,EAAMF,EAAMC,EAAMG,GAAO3xS,EACnClu0B,EAAI,GAAKkgnC,EAAMhyS,EACflu0B,EAAI,IAAMggnC,EAAM/uhC,EAAMyuhC,EAAMI,GAAO5xS,EACnClu0B,EAAI,KAAO2/mC,EAAM1uhC,EAAMyuhC,EAAME,GAAO1xS,EACpClu0B,EAAI,GAAKmgnC,EAAMjyS,EACflu0B,EAAI,KAAO+/mC,EAAM9uhC,EAAMwuhC,EAAMK,GAAO5xS,EACpClu0B,EAAI,IAAM6/mC,EAAM5uhC,EAAMwuhC,EAAMG,GAAO1xS,EAC5Blu0B,GAbE,IAcX,CAqCO,SAASk7N,EAAYp6V,GAC1B,IAAImwN,EAAMnwN,EAAE,GACR2+uC,EAAM3+uC,EAAE,GACR4+uC,EAAM5+uC,EAAE,GACR8+uC,EAAM9+uC,EAAE,GACR++uC,EAAM/+uC,EAAE,GACR6+uC,EAAM7+uC,EAAE,GACRg/uC,EAAMh/uC,EAAE,GACRi/uC,EAAMj/uC,EAAE,GACRk/uC,EAAMl/uC,EAAE,GACZ,OAAOmwN,GAAO+uhC,EAAMH,EAAMF,EAAMI,GAAON,IAAQO,EAAMJ,EAAMD,EAAMG,GAAOJ,GAAOK,EAAMH,EAAMC,EAAMC,EACnG,CAUO,SAASx4hC,EAAStnF,EAAKl/H,EAAGsC,GAC/B,IAAI6tN,EAAMnwN,EAAE,GACR2+uC,EAAM3+uC,EAAE,GACR4+uC,EAAM5+uC,EAAE,GACR8+uC,EAAM9+uC,EAAE,GACR++uC,EAAM/+uC,EAAE,GACR6+uC,EAAM7+uC,EAAE,GACRg/uC,EAAMh/uC,EAAE,GACRi/uC,EAAMj/uC,EAAE,GACRk/uC,EAAMl/uC,EAAE,GACR4wN,EAAMtuN,EAAE,GACR68uC,EAAM78uC,EAAE,GACRg9uC,EAAMh9uC,EAAE,GACRi9uC,EAAMj9uC,EAAE,GACR88uC,EAAM98uC,EAAE,GACRk9uC,EAAMl9uC,EAAE,GACRm9uC,EAAMn9uC,EAAE,GACR+8uC,EAAM/8uC,EAAE,GACRo9uC,EAAMp9uC,EAAE,GAUZ,OATA48H,EAAI,GAAK0xF,EAAMT,EAAMgvhC,EAAML,EAAMQ,EAAMN,EACvC9/mC,EAAI,GAAK0xF,EAAM+thC,EAAMQ,EAAMJ,EAAMO,EAAML,EACvC//mC,EAAI,GAAK0xF,EAAMguhC,EAAMO,EAAMN,EAAMS,EAAMJ,EACvChgnC,EAAI,GAAKqgnC,EAAMpvhC,EAAMivhC,EAAMN,EAAMU,EAAMR,EACvC9/mC,EAAI,GAAKqgnC,EAAMZ,EAAMS,EAAML,EAAMS,EAAMP,EACvC//mC,EAAI,GAAKqgnC,EAAMX,EAAMQ,EAAMP,EAAMW,EAAMN,EACvChgnC,EAAI,GAAKugnC,EAAMtvhC,EAAMkvhC,EAAMP,EAAMY,EAAMV,EACvC9/mC,EAAI,GAAKugnC,EAAMd,EAAMU,EAAMN,EAAMW,EAAMT,EACvC//mC,EAAI,GAAKugnC,EAAMb,EAAMS,EAAMR,EAAMa,EAAMR,EAChChgnC,CACT,CAUO,SAAS9G,EAAU8G,EAAKl/H,EAAGiC,GAChC,IAAIkuN,EAAMnwN,EAAE,GACR2+uC,EAAM3+uC,EAAE,GACR4+uC,EAAM5+uC,EAAE,GACR8+uC,EAAM9+uC,EAAE,GACR++uC,EAAM/+uC,EAAE,GACR6+uC,EAAM7+uC,EAAE,GACRg/uC,EAAMh/uC,EAAE,GACRi/uC,EAAMj/uC,EAAE,GACRk/uC,EAAMl/uC,EAAE,GACRiD,EAAIhB,EAAE,GACND,EAAIC,EAAE,GAUV,OATAi9H,EAAI,GAAKixF,EACTjxF,EAAI,GAAKy/mC,EACTz/mC,EAAI,GAAK0/mC,EACT1/mC,EAAI,GAAK4/mC,EACT5/mC,EAAI,GAAK6/mC,EACT7/mC,EAAI,GAAK2/mC,EACT3/mC,EAAI,GAAKj8H,EAAIktN,EAAMnuN,EAAI88uC,EAAME,EAC7B9/mC,EAAI,GAAKj8H,EAAI07uC,EAAM38uC,EAAI+8uC,EAAME,EAC7B//mC,EAAI,GAAKj8H,EAAI27uC,EAAM58uC,EAAI68uC,EAAMK,EACtBhgnC,CACT,CAUO,SAASza,EAAOya,EAAKl/H,EAAG28V,GAC7B,IAAIxsI,EAAMnwN,EAAE,GACR2+uC,EAAM3+uC,EAAE,GACR4+uC,EAAM5+uC,EAAE,GACR8+uC,EAAM9+uC,EAAE,GACR++uC,EAAM/+uC,EAAE,GACR6+uC,EAAM7+uC,EAAE,GACRg/uC,EAAMh/uC,EAAE,GACRi/uC,EAAMj/uC,EAAE,GACRk/uC,EAAMl/uC,EAAE,GACRF,EAAI+B,KAAK4wH,IAAIkqO,GACb98V,EAAIgC,KAAKuxH,IAAIupO,GAUjB,OATAz9N,EAAI,GAAKr/H,EAAIswN,EAAMrwN,EAAIg/uC,EACvB5/mC,EAAI,GAAKr/H,EAAI8+uC,EAAM7+uC,EAAIi/uC,EACvB7/mC,EAAI,GAAKr/H,EAAI++uC,EAAM9+uC,EAAI++uC,EACvB3/mC,EAAI,GAAKr/H,EAAIi/uC,EAAMh/uC,EAAIqwN,EACvBjxF,EAAI,GAAKr/H,EAAIk/uC,EAAMj/uC,EAAI6+uC,EACvBz/mC,EAAI,GAAKr/H,EAAIg/uC,EAAM/+uC,EAAI8+uC,EACvB1/mC,EAAI,GAAK8/mC,EACT9/mC,EAAI,GAAK+/mC,EACT//mC,EAAI,GAAKggnC,EACFhgnC,CACT,CAUO,SAASp+B,EAAMo+B,EAAKl/H,EAAGiC,GAC5B,IAAIgB,EAAIhB,EAAE,GACND,EAAIC,EAAE,GAUV,OATAi9H,EAAI,GAAKj8H,EAAIjD,EAAE,GACfk/H,EAAI,GAAKj8H,EAAIjD,EAAE,GACfk/H,EAAI,GAAKj8H,EAAIjD,EAAE,GACfk/H,EAAI,GAAKl9H,EAAIhC,EAAE,GACfk/H,EAAI,GAAKl9H,EAAIhC,EAAE,GACfk/H,EAAI,GAAKl9H,EAAIhC,EAAE,GACfk/H,EAAI,GAAKl/H,EAAE,GACXk/H,EAAI,GAAKl/H,EAAE,GACXk/H,EAAI,GAAKl/H,EAAE,GACJk/H,CACT,CAwGO,SAASygnC,EAASzgnC,EAAKh6H,GAC5B,IAAIjC,EAAIiC,EAAE,GACNlD,EAAIkD,EAAE,GACNP,EAAIO,EAAE,GACN3C,EAAI2C,EAAE,GACN42L,EAAK74L,EAAIA,EACTwzH,EAAKz0H,EAAIA,EACT+5L,EAAKp3L,EAAIA,EACT+4vB,EAAKz6vB,EAAI64L,EACT6hkB,EAAK37vB,EAAI85L,EACT8hkB,EAAK57vB,EAAIy0H,EACTmpnC,EAAKj7uC,EAAIm3L,EACT+jjC,EAAKl7uC,EAAI8xH,EACTqpnC,EAAKn7uC,EAAIo3L,EACT6+N,EAAKr4Z,EAAIu5L,EACT++N,EAAKt4Z,EAAIk0H,EACTspnC,EAAKx9uC,EAAIw5L,EAUb,OATA78D,EAAI,GAAK,EAAI0+nB,EAAKkif,EAClB5gnC,EAAI,GAAKy+nB,EAAKoif,EACd7gnC,EAAI,GAAK0gnC,EAAK/k1B,EACd37R,EAAI,GAAKy+nB,EAAKoif,EACd7gnC,EAAI,GAAK,EAAIw+nB,EAAKoif,EAClB5gnC,EAAI,GAAK2gnC,EAAKjl1B,EACd17R,EAAI,GAAK0gnC,EAAK/k1B,EACd37R,EAAI,GAAK2gnC,EAAKjl1B,EACd17R,EAAI,GAAK,EAAIw+nB,EAAKE,EACX1+nB,CACT,iNC9UO,SAASyqD,EAAUzqD,EAAKl/H,GAE7B,GAAIk/H,IAAQl/H,EAAG,CACb,IAAI2+uC,EAAM3+uC,EAAE,GACR4+uC,EAAM5+uC,EAAE,GACRggvC,EAAMhgvC,EAAE,GACR6+uC,EAAM7+uC,EAAE,GACRigvC,EAAMjgvC,EAAE,GACRkgvC,EAAMlgvC,EAAE,IACZk/H,EAAI,GAAKl/H,EAAE,GACXk/H,EAAI,GAAKl/H,EAAE,GACXk/H,EAAI,GAAKl/H,EAAE,IACXk/H,EAAI,GAAKy/mC,EACTz/mC,EAAI,GAAKl/H,EAAE,GACXk/H,EAAI,GAAKl/H,EAAE,IACXk/H,EAAI,GAAK0/mC,EACT1/mC,EAAI,GAAK2/mC,EACT3/mC,EAAI,IAAMl/H,EAAE,IACZk/H,EAAI,IAAM8gnC,EACV9gnC,EAAI,IAAM+gnC,EACV/gnC,EAAI,IAAMghnC,CACZ,MACEhhnC,EAAI,GAAKl/H,EAAE,GACXk/H,EAAI,GAAKl/H,EAAE,GACXk/H,EAAI,GAAKl/H,EAAE,GACXk/H,EAAI,GAAKl/H,EAAE,IACXk/H,EAAI,GAAKl/H,EAAE,GACXk/H,EAAI,GAAKl/H,EAAE,GACXk/H,EAAI,GAAKl/H,EAAE,GACXk/H,EAAI,GAAKl/H,EAAE,IACXk/H,EAAI,GAAKl/H,EAAE,GACXk/H,EAAI,GAAKl/H,EAAE,GACXk/H,EAAI,IAAMl/H,EAAE,IACZk/H,EAAI,IAAMl/H,EAAE,IACZk/H,EAAI,IAAMl/H,EAAE,GACZk/H,EAAI,IAAMl/H,EAAE,GACZk/H,EAAI,IAAMl/H,EAAE,IACZk/H,EAAI,IAAMl/H,EAAE,IAGd,OAAOk/H,CACT,CASO,SAAS0+B,EAAO1+B,EAAKl/H,GAC1B,IAAImwN,EAAMnwN,EAAE,GACR2+uC,EAAM3+uC,EAAE,GACR4+uC,EAAM5+uC,EAAE,GACRggvC,EAAMhgvC,EAAE,GACR8+uC,EAAM9+uC,EAAE,GACR++uC,EAAM/+uC,EAAE,GACR6+uC,EAAM7+uC,EAAE,GACRigvC,EAAMjgvC,EAAE,GACRg/uC,EAAMh/uC,EAAE,GACRi/uC,EAAMj/uC,EAAE,GACRk/uC,EAAMl/uC,EAAE,IACRkgvC,EAAMlgvC,EAAE,IACRmgvC,EAAMngvC,EAAE,IACRogvC,EAAMpgvC,EAAE,IACRiwN,EAAMjwN,EAAE,IACRqgvC,EAAMrgvC,EAAE,IACR4wN,EAAMT,EAAM4uhC,EAAMJ,EAAMG,EACxBK,EAAMhvhC,EAAM0uhC,EAAMD,EAAME,EACxBQ,EAAMnvhC,EAAM8vhC,EAAMD,EAAMlB,EACxBwB,EAAM3B,EAAME,EAAMD,EAAMG,EACxBwB,EAAM5B,EAAMsB,EAAMD,EAAMjB,EACxByB,EAAM5B,EAAMqB,EAAMD,EAAMnB,EACxB4B,EAAMzB,EAAMoB,EAAMnB,EAAMkB,EACxBO,EAAM1B,EAAM/uhC,EAAMivhC,EAAMiB,EACxBQ,EAAM3B,EAAMqB,EAAMH,EAAMC,EACxBS,EAAM3B,EAAMhvhC,EAAMivhC,EAAMkB,EACxBb,EAAMN,EAAMoB,EAAMH,EAAME,EACxBhB,EAAMF,EAAMmB,EAAMH,EAAMjwhC,EAExBm9uB,EAAMx8uB,EAAMwuhC,EAAMD,EAAMI,EAAMD,EAAMsB,EAAMN,EAAMK,EAAMJ,EAAMG,EAAMF,EAAMC,EAE5E,OAAKrzS,GAILA,EAAM,EAAMA,EACZlu0B,EAAI,IAAM6/mC,EAAMK,EAAMP,EAAMU,EAAMU,EAAMW,GAAOxzS,EAC/Clu0B,EAAI,IAAM0/mC,EAAMW,EAAMZ,EAAMS,EAAMY,EAAMY,GAAOxzS,EAC/Clu0B,EAAI,IAAMkhnC,EAAMI,EAAMvwhC,EAAMswhC,EAAMF,EAAMC,GAAOlzS,EAC/Clu0B,EAAI,IAAMggnC,EAAMqB,EAAMtB,EAAMuB,EAAMN,EAAMI,GAAOlzS,EAC/Clu0B,EAAI,IAAM2/mC,EAAM8B,EAAM7B,EAAMM,EAAMa,EAAMS,GAAOtzS,EAC/Clu0B,EAAI,IAAMixF,EAAMivhC,EAAMR,EAAM+B,EAAMX,EAAMU,GAAOtzS,EAC/Clu0B,EAAI,IAAM+wF,EAAMqvhC,EAAMa,EAAMK,EAAMH,EAAMlB,GAAO/xS,EAC/Clu0B,EAAI,IAAM8/mC,EAAMwB,EAAMtB,EAAMI,EAAMY,EAAMf,GAAO/xS,EAC/Clu0B,EAAI,IAAM4/mC,EAAMS,EAAMR,EAAM4B,EAAMV,EAAMQ,GAAOrzS,EAC/Clu0B,EAAI,IAAMy/mC,EAAMgC,EAAMxwhC,EAAMovhC,EAAMS,EAAMS,GAAOrzS,EAC/Clu0B,EAAI,KAAOihnC,EAAMI,EAAMH,EAAMd,EAAMe,EAAMzvhC,GAAOw8uB,EAChDlu0B,EAAI,KAAO+/mC,EAAMK,EAAMN,EAAMuB,EAAML,EAAMtvhC,GAAOw8uB,EAChDlu0B,EAAI,KAAO6/mC,EAAM2B,EAAM5B,EAAM8B,EAAM/B,EAAM4B,GAAOrzS,EAChDlu0B,EAAI,KAAOixF,EAAMywhC,EAAMjC,EAAM+B,EAAM9B,EAAM6B,GAAOrzS,EAChDlu0B,EAAI,KAAOkhnC,EAAMjB,EAAMgB,EAAMG,EAAMrwhC,EAAMW,GAAOw8uB,EAChDlu0B,EAAI,KAAO8/mC,EAAMsB,EAAMrB,EAAME,EAAMD,EAAMtuhC,GAAOw8uB,EACzClu0B,GApBE,IAqBX,CAmDO,SAASk7N,EAAYp6V,GAC1B,IAAImwN,EAAMnwN,EAAE,GACR2+uC,EAAM3+uC,EAAE,GACR4+uC,EAAM5+uC,EAAE,GACRggvC,EAAMhgvC,EAAE,GACR8+uC,EAAM9+uC,EAAE,GACR++uC,EAAM/+uC,EAAE,GACR6+uC,EAAM7+uC,EAAE,GACRigvC,EAAMjgvC,EAAE,GACRg/uC,EAAMh/uC,EAAE,GACRi/uC,EAAMj/uC,EAAE,GACRk/uC,EAAMl/uC,EAAE,IACRkgvC,EAAMlgvC,EAAE,IACRmgvC,EAAMngvC,EAAE,IACRogvC,EAAMpgvC,EAAE,IACRiwN,EAAMjwN,EAAE,IACRqgvC,EAAMrgvC,EAAE,IAcZ,OAbUmwN,EAAM4uhC,EAAMJ,EAAMG,IAWlBI,EAAMmB,EAAMH,EAAMjwhC,IAVlBE,EAAM0uhC,EAAMD,EAAME,IASlBG,EAAMoB,EAAMH,EAAME,IARlBjwhC,EAAM8vhC,EAAMD,EAAMlB,IAOlBG,EAAMhvhC,EAAMivhC,EAAMkB,IANlBzB,EAAME,EAAMD,EAAMG,IAKlBC,EAAMqB,EAAMH,EAAMC,IAJlBxB,EAAMsB,EAAMD,EAAMjB,IAGlBC,EAAM/uhC,EAAMivhC,EAAMiB,IAFlBvB,EAAMqB,EAAMD,EAAMnB,IAClBG,EAAMoB,EAAMnB,EAAMkB,EAQ9B,CAUO,SAAS35hC,EAAStnF,EAAKl/H,EAAGsC,GAC/B,IAAI6tN,EAAMnwN,EAAE,GACR2+uC,EAAM3+uC,EAAE,GACR4+uC,EAAM5+uC,EAAE,GACRggvC,EAAMhgvC,EAAE,GACR8+uC,EAAM9+uC,EAAE,GACR++uC,EAAM/+uC,EAAE,GACR6+uC,EAAM7+uC,EAAE,GACRigvC,EAAMjgvC,EAAE,GACRg/uC,EAAMh/uC,EAAE,GACRi/uC,EAAMj/uC,EAAE,GACRk/uC,EAAMl/uC,EAAE,IACRkgvC,EAAMlgvC,EAAE,IACRmgvC,EAAMngvC,EAAE,IACRogvC,EAAMpgvC,EAAE,IACRiwN,EAAMjwN,EAAE,IACRqgvC,EAAMrgvC,EAAE,IAERwuW,EAAKlsW,EAAE,GACPogW,EAAKpgW,EAAE,GACPqgW,EAAKrgW,EAAE,GACPi1E,EAAKj1E,EAAE,GA6BX,OA5BA48H,EAAI,GAAKsvO,EAAKr+I,EAAMuyI,EAAKo84B,EAAMn84B,EAAKq84B,EAAMznqC,EAAK4oqC,EAC/CjhnC,EAAI,GAAKsvO,EAAKmw4B,EAAMj84B,EAAKq84B,EAAMp84B,EAAKs84B,EAAM1nqC,EAAK6oqC,EAC/ClhnC,EAAI,GAAKsvO,EAAKow4B,EAAMl84B,EAAKm84B,EAAMl84B,EAAKu84B,EAAM3nqC,EAAK04I,EAC/C/wF,EAAI,GAAKsvO,EAAKwx4B,EAAMt94B,EAAKu94B,EAAMt94B,EAAKu94B,EAAM3oqC,EAAK8oqC,EAC/C7x4B,EAAKlsW,EAAE,GACPogW,EAAKpgW,EAAE,GACPqgW,EAAKrgW,EAAE,GACPi1E,EAAKj1E,EAAE,GACP48H,EAAI,GAAKsvO,EAAKr+I,EAAMuyI,EAAKo84B,EAAMn84B,EAAKq84B,EAAMznqC,EAAK4oqC,EAC/CjhnC,EAAI,GAAKsvO,EAAKmw4B,EAAMj84B,EAAKq84B,EAAMp84B,EAAKs84B,EAAM1nqC,EAAK6oqC,EAC/ClhnC,EAAI,GAAKsvO,EAAKow4B,EAAMl84B,EAAKm84B,EAAMl84B,EAAKu84B,EAAM3nqC,EAAK04I,EAC/C/wF,EAAI,GAAKsvO,EAAKwx4B,EAAMt94B,EAAKu94B,EAAMt94B,EAAKu94B,EAAM3oqC,EAAK8oqC,EAC/C7x4B,EAAKlsW,EAAE,GACPogW,EAAKpgW,EAAE,GACPqgW,EAAKrgW,EAAE,IACPi1E,EAAKj1E,EAAE,IACP48H,EAAI,GAAKsvO,EAAKr+I,EAAMuyI,EAAKo84B,EAAMn84B,EAAKq84B,EAAMznqC,EAAK4oqC,EAC/CjhnC,EAAI,GAAKsvO,EAAKmw4B,EAAMj84B,EAAKq84B,EAAMp84B,EAAKs84B,EAAM1nqC,EAAK6oqC,EAC/ClhnC,EAAI,IAAMsvO,EAAKow4B,EAAMl84B,EAAKm84B,EAAMl84B,EAAKu84B,EAAM3nqC,EAAK04I,EAChD/wF,EAAI,IAAMsvO,EAAKwx4B,EAAMt94B,EAAKu94B,EAAMt94B,EAAKu94B,EAAM3oqC,EAAK8oqC,EAChD7x4B,EAAKlsW,EAAE,IACPogW,EAAKpgW,EAAE,IACPqgW,EAAKrgW,EAAE,IACPi1E,EAAKj1E,EAAE,IACP48H,EAAI,IAAMsvO,EAAKr+I,EAAMuyI,EAAKo84B,EAAMn84B,EAAKq84B,EAAMznqC,EAAK4oqC,EAChDjhnC,EAAI,IAAMsvO,EAAKmw4B,EAAMj84B,EAAKq84B,EAAMp84B,EAAKs84B,EAAM1nqC,EAAK6oqC,EAChDlhnC,EAAI,IAAMsvO,EAAKow4B,EAAMl84B,EAAKm84B,EAAMl84B,EAAKu84B,EAAM3nqC,EAAK04I,EAChD/wF,EAAI,IAAMsvO,EAAKwx4B,EAAMt94B,EAAKu94B,EAAMt94B,EAAKu94B,EAAM3oqC,EAAK8oqC,EACzCnhnC,CACT,CAUO,SAAS9G,EAAU8G,EAAKl/H,EAAGiC,GAChC,IAGIkuN,EAAKwuhC,EAAKC,EAAKoB,EACflB,EAAKC,EAAKF,EAAKoB,EACfjB,EAAKC,EAAKC,EAAKgB,EALfj9uC,EAAIhB,EAAE,GACND,EAAIC,EAAE,GACN0C,EAAI1C,EAAE,GAyCV,OApCIjC,IAAMk/H,GACRA,EAAI,IAAMl/H,EAAE,GAAKiD,EAAIjD,EAAE,GAAKgC,EAAIhC,EAAE,GAAK2E,EAAI3E,EAAE,IAC7Ck/H,EAAI,IAAMl/H,EAAE,GAAKiD,EAAIjD,EAAE,GAAKgC,EAAIhC,EAAE,GAAK2E,EAAI3E,EAAE,IAC7Ck/H,EAAI,IAAMl/H,EAAE,GAAKiD,EAAIjD,EAAE,GAAKgC,EAAIhC,EAAE,IAAM2E,EAAI3E,EAAE,IAC9Ck/H,EAAI,IAAMl/H,EAAE,GAAKiD,EAAIjD,EAAE,GAAKgC,EAAIhC,EAAE,IAAM2E,EAAI3E,EAAE,MAE9CmwN,EAAMnwN,EAAE,GACR2+uC,EAAM3+uC,EAAE,GACR4+uC,EAAM5+uC,EAAE,GACRggvC,EAAMhgvC,EAAE,GACR8+uC,EAAM9+uC,EAAE,GACR++uC,EAAM/+uC,EAAE,GACR6+uC,EAAM7+uC,EAAE,GACRigvC,EAAMjgvC,EAAE,GACRg/uC,EAAMh/uC,EAAE,GACRi/uC,EAAMj/uC,EAAE,GACRk/uC,EAAMl/uC,EAAE,IACRkgvC,EAAMlgvC,EAAE,IACRk/H,EAAI,GAAKixF,EACTjxF,EAAI,GAAKy/mC,EACTz/mC,EAAI,GAAK0/mC,EACT1/mC,EAAI,GAAK8gnC,EACT9gnC,EAAI,GAAK4/mC,EACT5/mC,EAAI,GAAK6/mC,EACT7/mC,EAAI,GAAK2/mC,EACT3/mC,EAAI,GAAK+gnC,EACT/gnC,EAAI,GAAK8/mC,EACT9/mC,EAAI,GAAK+/mC,EACT//mC,EAAI,IAAMggnC,EACVhgnC,EAAI,IAAMghnC,EACVhhnC,EAAI,IAAMixF,EAAMltN,EAAI67uC,EAAM98uC,EAAIg9uC,EAAMr6uC,EAAI3E,EAAE,IAC1Ck/H,EAAI,IAAMy/mC,EAAM17uC,EAAI87uC,EAAM/8uC,EAAIi9uC,EAAMt6uC,EAAI3E,EAAE,IAC1Ck/H,EAAI,IAAM0/mC,EAAM37uC,EAAI47uC,EAAM78uC,EAAIk9uC,EAAMv6uC,EAAI3E,EAAE,IAC1Ck/H,EAAI,IAAM8gnC,EAAM/8uC,EAAIg9uC,EAAMj+uC,EAAIk+uC,EAAMv7uC,EAAI3E,EAAE,KAGrCk/H,CACT,CAUO,SAASp+B,EAAMo+B,EAAKl/H,EAAGiC,GAC5B,IAAIgB,EAAIhB,EAAE,GACND,EAAIC,EAAE,GACN0C,EAAI1C,EAAE,GAiBV,OAhBAi9H,EAAI,GAAKl/H,EAAE,GAAKiD,EAChBi8H,EAAI,GAAKl/H,EAAE,GAAKiD,EAChBi8H,EAAI,GAAKl/H,EAAE,GAAKiD,EAChBi8H,EAAI,GAAKl/H,EAAE,GAAKiD,EAChBi8H,EAAI,GAAKl/H,EAAE,GAAKgC,EAChBk9H,EAAI,GAAKl/H,EAAE,GAAKgC,EAChBk9H,EAAI,GAAKl/H,EAAE,GAAKgC,EAChBk9H,EAAI,GAAKl/H,EAAE,GAAKgC,EAChBk9H,EAAI,GAAKl/H,EAAE,GAAK2E,EAChBu6H,EAAI,GAAKl/H,EAAE,GAAK2E,EAChBu6H,EAAI,IAAMl/H,EAAE,IAAM2E,EAClBu6H,EAAI,IAAMl/H,EAAE,IAAM2E,EAClBu6H,EAAI,IAAMl/H,EAAE,IACZk/H,EAAI,IAAMl/H,EAAE,IACZk/H,EAAI,IAAMl/H,EAAE,IACZk/H,EAAI,IAAMl/H,EAAE,IACLk/H,CACT,CAWO,SAASza,EAAOya,EAAKl/H,EAAG28V,EAAKlzJ,GAClC,IAII3pM,EAAGD,EAAGzB,EACN+xN,EAAKwuhC,EAAKC,EAAKoB,EACflB,EAAKC,EAAKF,EAAKoB,EACfjB,EAAKC,EAAKC,EAAKgB,EACftvhC,EAAKuuhC,EAAKG,EACVC,EAAKH,EAAKI,EACVC,EAAKJ,EAAKK,EAVVz8uC,EAAIwmM,EAAK,GACTznM,EAAIynM,EAAK,GACT9kM,EAAI8kM,EAAK,GACT5rE,EAAMh8H,KAAK68uC,MAAMz7uC,EAAGjB,EAAG2C,GAS3B,OAAIk5H,EAAM,KACD,MAIT56H,GADA46H,EAAM,EAAIA,EAEV77H,GAAK67H,EACLl5H,GAAKk5H,EACL/9H,EAAI+B,KAAK4wH,IAAIkqO,GAEbv+V,EAAI,GADJyB,EAAIgC,KAAKuxH,IAAIupO,IAEbxsI,EAAMnwN,EAAE,GACR2+uC,EAAM3+uC,EAAE,GACR4+uC,EAAM5+uC,EAAE,GACRggvC,EAAMhgvC,EAAE,GACR8+uC,EAAM9+uC,EAAE,GACR++uC,EAAM/+uC,EAAE,GACR6+uC,EAAM7+uC,EAAE,GACRigvC,EAAMjgvC,EAAE,GACRg/uC,EAAMh/uC,EAAE,GACRi/uC,EAAMj/uC,EAAE,GACRk/uC,EAAMl/uC,EAAE,IACRkgvC,EAAMlgvC,EAAE,IAER4wN,EAAM3tN,EAAIA,EAAI7E,EAAIyB,EAClBs/uC,EAAMn9uC,EAAIiB,EAAI7E,EAAIuG,EAAI7E,EACtBw/uC,EAAM36uC,EAAI1B,EAAI7E,EAAI4D,EAAIlC,EACtBy/uC,EAAMt8uC,EAAIjB,EAAI5D,EAAIuG,EAAI7E,EACtBs/uC,EAAMp9uC,EAAIA,EAAI5D,EAAIyB,EAClB2/uC,EAAM76uC,EAAI3C,EAAI5D,EAAI6E,EAAInD,EACtB2/uC,EAAMx8uC,EAAI0B,EAAIvG,EAAI4D,EAAIlC,EACtBu/uC,EAAMr9uC,EAAI2C,EAAIvG,EAAI6E,EAAInD,EACtB4/uC,EAAM/6uC,EAAIA,EAAIvG,EAAIyB,EAElBq/H,EAAI,GAAKixF,EAAMS,EAAMkuhC,EAAMK,EAAMH,EAAMM,EACvCpgnC,EAAI,GAAKy/mC,EAAM/thC,EAAMmuhC,EAAMI,EAAMF,EAAMK,EACvCpgnC,EAAI,GAAK0/mC,EAAMhuhC,EAAMiuhC,EAAMM,EAAMD,EAAMI,EACvCpgnC,EAAI,GAAK8gnC,EAAMpvhC,EAAMqvhC,EAAMd,EAAMe,EAAMZ,EACvCpgnC,EAAI,GAAKixF,EAAMovhC,EAAMT,EAAMM,EAAMJ,EAAMQ,EACvCtgnC,EAAI,GAAKy/mC,EAAMY,EAAMR,EAAMK,EAAMH,EAAMO,EACvCtgnC,EAAI,GAAK0/mC,EAAMW,EAAMV,EAAMO,EAAMF,EAAMM,EACvCtgnC,EAAI,GAAK8gnC,EAAMT,EAAMU,EAAMb,EAAMc,EAAMV,EACvCtgnC,EAAI,GAAKixF,EAAMsvhC,EAAMX,EAAMO,EAAML,EAAMU,EACvCxgnC,EAAI,GAAKy/mC,EAAMc,EAAMV,EAAMM,EAAMJ,EAAMS,EACvCxgnC,EAAI,IAAM0/mC,EAAMa,EAAMZ,EAAMQ,EAAMH,EAAMQ,EACxCxgnC,EAAI,IAAM8gnC,EAAMP,EAAMQ,EAAMZ,EAAMa,EAAMR,EAEpC1/uC,IAAMk/H,IAERA,EAAI,IAAMl/H,EAAE,IACZk/H,EAAI,IAAMl/H,EAAE,IACZk/H,EAAI,IAAMl/H,EAAE,IACZk/H,EAAI,IAAMl/H,EAAE,KAGPk/H,EACT,CAUO,SAASpJ,EAAQoJ,EAAKl/H,EAAG28V,GAC9B,IAAI78V,EAAI+B,KAAK4wH,IAAIkqO,GACb98V,EAAIgC,KAAKuxH,IAAIupO,GACbmi5B,EAAM9+uC,EAAE,GACR++uC,EAAM/+uC,EAAE,GACR6+uC,EAAM7+uC,EAAE,GACRigvC,EAAMjgvC,EAAE,GACRg/uC,EAAMh/uC,EAAE,GACRi/uC,EAAMj/uC,EAAE,GACRk/uC,EAAMl/uC,EAAE,IACRkgvC,EAAMlgvC,EAAE,IAuBZ,OArBIA,IAAMk/H,IAERA,EAAI,GAAKl/H,EAAE,GACXk/H,EAAI,GAAKl/H,EAAE,GACXk/H,EAAI,GAAKl/H,EAAE,GACXk/H,EAAI,GAAKl/H,EAAE,GACXk/H,EAAI,IAAMl/H,EAAE,IACZk/H,EAAI,IAAMl/H,EAAE,IACZk/H,EAAI,IAAMl/H,EAAE,IACZk/H,EAAI,IAAMl/H,EAAE,KAIdk/H,EAAI,GAAK4/mC,EAAMj/uC,EAAIm/uC,EAAMl/uC,EACzBo/H,EAAI,GAAK6/mC,EAAMl/uC,EAAIo/uC,EAAMn/uC,EACzBo/H,EAAI,GAAK2/mC,EAAMh/uC,EAAIq/uC,EAAMp/uC,EACzBo/H,EAAI,GAAK+gnC,EAAMpgvC,EAAIqgvC,EAAMpgvC,EACzBo/H,EAAI,GAAK8/mC,EAAMn/uC,EAAIi/uC,EAAMh/uC,EACzBo/H,EAAI,GAAK+/mC,EAAMp/uC,EAAIk/uC,EAAMj/uC,EACzBo/H,EAAI,IAAMggnC,EAAMr/uC,EAAIg/uC,EAAM/+uC,EAC1Bo/H,EAAI,IAAMghnC,EAAMrgvC,EAAIogvC,EAAMngvC,EACnBo/H,CACT,CAUO,SAASlJ,EAAQkJ,EAAKl/H,EAAG28V,GAC9B,IAAI78V,EAAI+B,KAAK4wH,IAAIkqO,GACb98V,EAAIgC,KAAKuxH,IAAIupO,GACbxsI,EAAMnwN,EAAE,GACR2+uC,EAAM3+uC,EAAE,GACR4+uC,EAAM5+uC,EAAE,GACRggvC,EAAMhgvC,EAAE,GACRg/uC,EAAMh/uC,EAAE,GACRi/uC,EAAMj/uC,EAAE,GACRk/uC,EAAMl/uC,EAAE,IACRkgvC,EAAMlgvC,EAAE,IAuBZ,OArBIA,IAAMk/H,IAERA,EAAI,GAAKl/H,EAAE,GACXk/H,EAAI,GAAKl/H,EAAE,GACXk/H,EAAI,GAAKl/H,EAAE,GACXk/H,EAAI,GAAKl/H,EAAE,GACXk/H,EAAI,IAAMl/H,EAAE,IACZk/H,EAAI,IAAMl/H,EAAE,IACZk/H,EAAI,IAAMl/H,EAAE,IACZk/H,EAAI,IAAMl/H,EAAE,KAIdk/H,EAAI,GAAKixF,EAAMtwN,EAAIm/uC,EAAMl/uC,EACzBo/H,EAAI,GAAKy/mC,EAAM9+uC,EAAIo/uC,EAAMn/uC,EACzBo/H,EAAI,GAAK0/mC,EAAM/+uC,EAAIq/uC,EAAMp/uC,EACzBo/H,EAAI,GAAK8gnC,EAAMngvC,EAAIqgvC,EAAMpgvC,EACzBo/H,EAAI,GAAKixF,EAAMrwN,EAAIk/uC,EAAMn/uC,EACzBq/H,EAAI,GAAKy/mC,EAAM7+uC,EAAIm/uC,EAAMp/uC,EACzBq/H,EAAI,IAAM0/mC,EAAM9+uC,EAAIo/uC,EAAMr/uC,EAC1Bq/H,EAAI,IAAM8gnC,EAAMlgvC,EAAIogvC,EAAMrgvC,EACnBq/H,CACT,CAUO,SAASnJ,EAAQmJ,EAAKl/H,EAAG28V,GAC9B,IAAI78V,EAAI+B,KAAK4wH,IAAIkqO,GACb98V,EAAIgC,KAAKuxH,IAAIupO,GACbxsI,EAAMnwN,EAAE,GACR2+uC,EAAM3+uC,EAAE,GACR4+uC,EAAM5+uC,EAAE,GACRggvC,EAAMhgvC,EAAE,GACR8+uC,EAAM9+uC,EAAE,GACR++uC,EAAM/+uC,EAAE,GACR6+uC,EAAM7+uC,EAAE,GACRigvC,EAAMjgvC,EAAE,GAuBZ,OArBIA,IAAMk/H,IAERA,EAAI,GAAKl/H,EAAE,GACXk/H,EAAI,GAAKl/H,EAAE,GACXk/H,EAAI,IAAMl/H,EAAE,IACZk/H,EAAI,IAAMl/H,EAAE,IACZk/H,EAAI,IAAMl/H,EAAE,IACZk/H,EAAI,IAAMl/H,EAAE,IACZk/H,EAAI,IAAMl/H,EAAE,IACZk/H,EAAI,IAAMl/H,EAAE,KAIdk/H,EAAI,GAAKixF,EAAMtwN,EAAIi/uC,EAAMh/uC,EACzBo/H,EAAI,GAAKy/mC,EAAM9+uC,EAAIk/uC,EAAMj/uC,EACzBo/H,EAAI,GAAK0/mC,EAAM/+uC,EAAIg/uC,EAAM/+uC,EACzBo/H,EAAI,GAAK8gnC,EAAMngvC,EAAIogvC,EAAMngvC,EACzBo/H,EAAI,GAAK4/mC,EAAMj/uC,EAAIswN,EAAMrwN,EACzBo/H,EAAI,GAAK6/mC,EAAMl/uC,EAAI8+uC,EAAM7+uC,EACzBo/H,EAAI,GAAK2/mC,EAAMh/uC,EAAI++uC,EAAM9+uC,EACzBo/H,EAAI,GAAK+gnC,EAAMpgvC,EAAImgvC,EAAMlgvC,EAClBo/H,CACT,CAuUO,SAAS2hnC,EAAW3hnC,EAAKk25B,GAC9B,IAAIt7rB,EAAMs7rB,EAAI,GACVn7rB,EAAMm7rB,EAAI,GACVn6rB,EAAMm6rB,EAAI,GACVr7rB,EAAMq7rB,EAAI,GACVl7rB,EAAMk7rB,EAAI,GACVl6rB,EAAMk6rB,EAAI,GACVt6rB,EAAMs6rB,EAAI,GACVr6rB,EAAMq6rB,EAAI,GACVj6rB,EAAMi6rB,EAAI,IAId,OAHAl25B,EAAI,GAAKr9H,KAAK68uC,MAAM5k5B,EAAKG,EAAKgB,GAC9B/7N,EAAI,GAAKr9H,KAAK68uC,MAAM3k5B,EAAKG,EAAKgB,GAC9Bh8N,EAAI,GAAKr9H,KAAK68uC,MAAM5j5B,EAAKC,EAAKI,GACvBj8N,CACT,CAmMO,SAASygnC,EAASzgnC,EAAKh6H,GAC5B,IAAIjC,EAAIiC,EAAE,GACNlD,EAAIkD,EAAE,GACNP,EAAIO,EAAE,GACN3C,EAAI2C,EAAE,GACN42L,EAAK74L,EAAIA,EACTwzH,EAAKz0H,EAAIA,EACT+5L,EAAKp3L,EAAIA,EACT+4vB,EAAKz6vB,EAAI64L,EACT6hkB,EAAK37vB,EAAI85L,EACT8hkB,EAAK57vB,EAAIy0H,EACTmpnC,EAAKj7uC,EAAIm3L,EACT+jjC,EAAKl7uC,EAAI8xH,EACTqpnC,EAAKn7uC,EAAIo3L,EACT6+N,EAAKr4Z,EAAIu5L,EACT++N,EAAKt4Z,EAAIk0H,EACTspnC,EAAKx9uC,EAAIw5L,EAiBb,OAhBA78D,EAAI,GAAK,EAAI0+nB,EAAKkif,EAClB5gnC,EAAI,GAAKy+nB,EAAKoif,EACd7gnC,EAAI,GAAK0gnC,EAAK/k1B,EACd37R,EAAI,GAAK,EACTA,EAAI,GAAKy+nB,EAAKoif,EACd7gnC,EAAI,GAAK,EAAIw+nB,EAAKoif,EAClB5gnC,EAAI,GAAK2gnC,EAAKjl1B,EACd17R,EAAI,GAAK,EACTA,EAAI,GAAK0gnC,EAAK/k1B,EACd37R,EAAI,GAAK2gnC,EAAKjl1B,EACd17R,EAAI,IAAM,EAAIw+nB,EAAKE,EACnB1+nB,EAAI,IAAM,EACVA,EAAI,IAAM,EACVA,EAAI,IAAM,EACVA,EAAI,IAAM,EACVA,EAAI,IAAM,EACHA,CACT,CAcO,SAASm8N,EAAQn8N,EAAKrhG,EAAMghE,EAAOC,EAAQhhE,EAAKk5F,EAAMC,GAC3D,IAAI6pnC,EAAK,GAAKjipC,EAAQhhE,GAClBkjtC,EAAK,GAAKjjtC,EAAMghE,GAChBkipC,EAAK,GAAKhqnC,EAAOC,GAiBrB,OAhBAiI,EAAI,GAAY,EAAPlI,EAAW8pnC,EACpB5hnC,EAAI,GAAK,EACTA,EAAI,GAAK,EACTA,EAAI,GAAK,EACTA,EAAI,GAAK,EACTA,EAAI,GAAY,EAAPlI,EAAW+pnC,EACpB7hnC,EAAI,GAAK,EACTA,EAAI,GAAK,EACTA,EAAI,IAAMrgC,EAAQhhE,GAAQijtC,EAC1B5hnC,EAAI,IAAMphG,EAAMghE,GAAUiipC,EAC1B7hnC,EAAI,KAAOjI,EAAMD,GAAQgqnC,EACzB9hnC,EAAI,KAAO,EACXA,EAAI,IAAM,EACVA,EAAI,IAAM,EACVA,EAAI,IAAMjI,EAAMD,EAAO,EAAIgqnC,EAC3B9hnC,EAAI,IAAM,EACHA,CACT,CAiDO,IAAI+oC,EAlCJ,SAAuB/oC,EAAK9I,EAAM4xC,EAAQhxC,EAAMC,GACrD,IACI+pnC,EADAt/uC,EAAI,EAAMG,KAAKinC,IAAIstF,EAAO,GA0B9B,OAxBA8I,EAAI,GAAKx9H,EAAIsmK,EACb9oC,EAAI,GAAK,EACTA,EAAI,GAAK,EACTA,EAAI,GAAK,EACTA,EAAI,GAAK,EACTA,EAAI,GAAKx9H,EACTw9H,EAAI,GAAK,EACTA,EAAI,GAAK,EACTA,EAAI,GAAK,EACTA,EAAI,GAAK,EACTA,EAAI,KAAO,EACXA,EAAI,IAAM,EACVA,EAAI,IAAM,EACVA,EAAI,IAAM,EAEC,MAAPjI,GAAeA,IAAQl4D,KACzBiirC,EAAK,GAAKhqnC,EAAOC,GACjBiI,EAAI,KAAOjI,EAAMD,GAAQgqnC,EACzB9hnC,EAAI,IAAM,EAAIjI,EAAMD,EAAOgqnC,IAE3B9hnC,EAAI,KAAO,EACXA,EAAI,KAAO,EAAIlI,GAGVkI,CACT,EAiIW7H,EA3BJ,SAAiB6H,EAAKrhG,EAAMghE,EAAOC,EAAQhhE,EAAKk5F,EAAMC,GAC3D,IAAIxiH,EAAK,GAAKopB,EAAOghE,GACjB1yF,EAAK,GAAK2yF,EAAShhE,GACnBkjtC,EAAK,GAAKhqnC,EAAOC,GAiBrB,OAhBAiI,EAAI,IAAM,EAAIzqH,EACdyqH,EAAI,GAAK,EACTA,EAAI,GAAK,EACTA,EAAI,GAAK,EACTA,EAAI,GAAK,EACTA,EAAI,IAAM,EAAI/yH,EACd+yH,EAAI,GAAK,EACTA,EAAI,GAAK,EACTA,EAAI,GAAK,EACTA,EAAI,GAAK,EACTA,EAAI,IAAM,EAAI8hnC,EACd9hnC,EAAI,IAAM,EACVA,EAAI,KAAOrhG,EAAOghE,GAASpqF,EAC3ByqH,EAAI,KAAOphG,EAAMghE,GAAU3yF,EAC3B+yH,EAAI,KAAOjI,EAAMD,GAAQgqnC,EACzB9hnC,EAAI,IAAM,EACHA,CACT,EAuDO,SAAS5O,EAAO4O,EAAK3O,EAAKtyF,EAAQ43F,GACvC,IAAIuvH,EAAIwhE,EAAI9qH,EAAIrL,EAAIC,EAAIj6D,EAAIw0O,EAAIpkD,EAAI9qH,EAAIl+D,EACpCojnC,EAAO1wnC,EAAI,GACX2wnC,EAAO3wnC,EAAI,GACX4wnC,EAAO5wnC,EAAI,GACX6wnC,EAAMvrnC,EAAG,GACTwrnC,EAAMxrnC,EAAG,GACTyrnC,EAAMzrnC,EAAG,GACT0rnC,EAAUtjtC,EAAO,GACjBujtC,EAAUvjtC,EAAO,GACjBwjtC,EAAUxjtC,EAAO,GAErB,OAAIp8B,KAAKmjH,IAAIi8nC,EAAOM,GAAW,MAAoB1/uC,KAAKmjH,IAAIk8nC,EAAOM,GAAW,MAAoB3/uC,KAAKmjH,IAAIm8nC,EAAOM,GAAW,KAl4CxH,SAAkBvinC,GAiBvB,OAhBAA,EAAI,GAAK,EACTA,EAAI,GAAK,EACTA,EAAI,GAAK,EACTA,EAAI,GAAK,EACTA,EAAI,GAAK,EACTA,EAAI,GAAK,EACTA,EAAI,GAAK,EACTA,EAAI,GAAK,EACTA,EAAI,GAAK,EACTA,EAAI,GAAK,EACTA,EAAI,IAAM,EACVA,EAAI,IAAM,EACVA,EAAI,IAAM,EACVA,EAAI,IAAM,EACVA,EAAI,IAAM,EACVA,EAAI,IAAM,EACHA,CACT,CAi3CWsqD,CAAStqD,IAGlB+rO,EAAKg24B,EAAOM,EACZ167B,EAAKq67B,EAAOM,EACZzljC,EAAKoljC,EAAOM,EAKZr8/B,EAAKi8/B,GADLtljC,GAHAl+D,EAAM,EAAIh8H,KAAK68uC,MAAMzz4B,EAAIpkD,EAAI9qH,IAIbuljC,GAFhBz67B,GAAMhpL,GAGN+oL,EAAK067B,GAJLr24B,GAAMptO,GAIUujnC,EAAMrljC,EACtBD,EAAKsljC,EAAMv67B,EAAKw67B,EAAMp24B,GACtBptO,EAAMh8H,KAAK68uC,MAAMt5/B,EAAIwhE,EAAI9qH,KAQvBspD,GADAvnH,EAAM,EAAIA,EAEV+oL,GAAM/oL,EACNi+D,GAAMj+D,IAPNunH,EAAK,EACLwhE,EAAK,EACL9qH,EAAK,GAQPrL,EAAKo2H,EAAK/qH,EAAKC,EAAK6qH,EACpBl2H,EAAKqL,EAAKqpD,EAAK6lH,EAAKnvK,EACpBrlE,EAAKw0O,EAAKrkD,EAAKC,EAAKzhE,GACpBvnH,EAAMh8H,KAAK68uC,MAAMjujC,EAAIC,EAAIj6D,KAQvBg6D,GADA5yD,EAAM,EAAIA,EAEV6yD,GAAM7yD,EACNpH,GAAMoH,IAPN4yD,EAAK,EACLC,EAAK,EACLj6D,EAAK,GAQPyI,EAAI,GAAKkmH,EACTlmH,EAAI,GAAKuxD,EACTvxD,EAAI,GAAK+rO,EACT/rO,EAAI,GAAK,EACTA,EAAI,GAAK0nL,EACT1nL,EAAI,GAAKwxD,EACTxxD,EAAI,GAAK2nL,EACT3nL,EAAI,GAAK,EACTA,EAAI,GAAK48D,EACT58D,EAAI,GAAKzI,EACTyI,EAAI,IAAM68D,EACV78D,EAAI,IAAM,EACVA,EAAI,MAAQkmH,EAAK67/B,EAAOr67B,EAAKs67B,EAAOpljC,EAAKqljC,GACzCjinC,EAAI,MAAQuxD,EAAKwwjC,EAAOvwjC,EAAKwwjC,EAAOzqnC,EAAK0qnC,GACzCjinC,EAAI,MAAQ+rO,EAAKg24B,EAAOp67B,EAAKq67B,EAAOnljC,EAAKoljC,GACzCjinC,EAAI,IAAM,EACHA,EACT,CAoNO,SAASqS,EAAOvxI,EAAGsC,GACxB,IAAI87V,EAAKp+V,EAAE,GACPq+V,EAAKr+V,EAAE,GACPs+V,EAAKt+V,EAAE,GACPu+V,EAAKv+V,EAAE,GACPoruC,EAAKpruC,EAAE,GACPqruC,EAAKrruC,EAAE,GACP0hvC,EAAK1hvC,EAAE,GACP2hvC,EAAK3hvC,EAAE,GACP4hvC,EAAK5hvC,EAAE,GACP6hvC,EAAK7hvC,EAAE,GACP8+uC,EAAM9+uC,EAAE,IACR++uC,EAAM/+uC,EAAE,IACR6+uC,EAAM7+uC,EAAE,IACRigvC,EAAMjgvC,EAAE,IACR8hvC,EAAM9hvC,EAAE,IACR+hvC,EAAM/hvC,EAAE,IACRwuW,EAAKlsW,EAAE,GACPogW,EAAKpgW,EAAE,GACPqgW,EAAKrgW,EAAE,GACPi1E,EAAKj1E,EAAE,GACP0/uC,EAAK1/uC,EAAE,GACPwgN,EAAKxgN,EAAE,GACP2/uC,EAAK3/uC,EAAE,GACP4/uC,EAAK5/uC,EAAE,GACP6/uC,EAAK7/uC,EAAE,GACP8/uC,EAAK9/uC,EAAE,GACPi9uC,EAAMj9uC,EAAE,IACR88uC,EAAM98uC,EAAE,IACRk9uC,EAAMl9uC,EAAE,IACR+/uC,EAAM//uC,EAAE,IACRggvC,EAAMhgvC,EAAE,IACRigvC,EAAMjgvC,EAAE,IACZ,OAAOT,KAAKmjH,IAAIo5O,EAAKoQ,IAAO,KAAmB3sW,KAAK8K,IAAI,EAAK9K,KAAKmjH,IAAIo5O,GAAKv8V,KAAKmjH,IAAIwpP,KAAQ3sW,KAAKmjH,IAAIq5O,EAAKqE,IAAO,KAAmB7gW,KAAK8K,IAAI,EAAK9K,KAAKmjH,IAAIq5O,GAAKx8V,KAAKmjH,IAAI09O,KAAQ7gW,KAAKmjH,IAAIs5O,EAAKqE,IAAO,KAAmB9gW,KAAK8K,IAAI,EAAK9K,KAAKmjH,IAAIs5O,GAAKz8V,KAAKmjH,IAAI29O,KAAQ9gW,KAAKmjH,IAAIu5O,EAAKhnR,IAAO,KAAmB11E,KAAK8K,IAAI,EAAK9K,KAAKmjH,IAAIu5O,GAAK18V,KAAKmjH,IAAIztC,KAAQ11E,KAAKmjH,IAAIomnC,EAAK4W,IAAO,KAAmBngvC,KAAK8K,IAAI,EAAK9K,KAAKmjH,IAAIomnC,GAAKvpuC,KAAKmjH,IAAIg9nC,KAAQngvC,KAAKmjH,IAAIqmnC,EAAKvohC,IAAO,KAAmBjhN,KAAK8K,IAAI,EAAK9K,KAAKmjH,IAAIqmnC,GAAKxpuC,KAAKmjH,IAAI89F,KAAQjhN,KAAKmjH,IAAI08nC,EAAKO,IAAO,KAAmBpgvC,KAAK8K,IAAI,EAAK9K,KAAKmjH,IAAI08nC,GAAK7/uC,KAAKmjH,IAAIi9nC,KAAQpgvC,KAAKmjH,IAAI28nC,EAAKO,IAAO,KAAmBrgvC,KAAK8K,IAAI,EAAK9K,KAAKmjH,IAAI28nC,GAAK9/uC,KAAKmjH,IAAIk9nC,KAAQrgvC,KAAKmjH,IAAI48nC,EAAKO,IAAO,KAAmBtgvC,KAAK8K,IAAI,EAAK9K,KAAKmjH,IAAI48nC,GAAK//uC,KAAKmjH,IAAIm9nC,KAAQtgvC,KAAKmjH,IAAI68nC,EAAKO,IAAO,KAAmBvgvC,KAAK8K,IAAI,EAAK9K,KAAKmjH,IAAI68nC,GAAKhgvC,KAAKmjH,IAAIo9nC,KAAQvgvC,KAAKmjH,IAAI85nC,EAAMS,IAAQ,KAAmB19uC,KAAK8K,IAAI,EAAK9K,KAAKmjH,IAAI85nC,GAAMj9uC,KAAKmjH,IAAIu6nC,KAAS19uC,KAAKmjH,IAAI+5nC,EAAMK,IAAQ,KAAmBv9uC,KAAK8K,IAAI,EAAK9K,KAAKmjH,IAAI+5nC,GAAMl9uC,KAAKmjH,IAAIo6nC,KAASv9uC,KAAKmjH,IAAI65nC,EAAMW,IAAQ,KAAmB39uC,KAAK8K,IAAI,EAAK9K,KAAKmjH,IAAI65nC,GAAMh9uC,KAAKmjH,IAAIw6nC,KAAS39uC,KAAKmjH,IAAIi7nC,EAAMoC,IAAQ,KAAmBxgvC,KAAK8K,IAAI,EAAK9K,KAAKmjH,IAAIi7nC,GAAMp+uC,KAAKmjH,IAAIq9nC,KAASxgvC,KAAKmjH,IAAI88nC,EAAMQ,IAAQ,KAAmBzgvC,KAAK8K,IAAI,EAAK9K,KAAKmjH,IAAI88nC,GAAMjgvC,KAAKmjH,IAAIs9nC,KAASzgvC,KAAKmjH,IAAI+8nC,EAAMQ,IAAQ,KAAmB1gvC,KAAK8K,IAAI,EAAK9K,KAAKmjH,IAAI+8nC,GAAMlgvC,KAAKmjH,IAAIu9nC,GACx2C,kJCpxDO,SAASp+tC,EAAI+6G,EAAKl/H,EAAGsC,GAG1B,OAFA48H,EAAI,GAAKl/H,EAAE,GAAKsC,EAAE,GAClB48H,EAAI,GAAKl/H,EAAE,GAAKsC,EAAE,GACX48H,CACT,CAuHO,SAASp+B,EAAMo+B,EAAKl/H,EAAGsC,GAG5B,OAFA48H,EAAI,GAAKl/H,EAAE,GAAKsC,EAChB48H,EAAI,GAAKl/H,EAAE,GAAKsC,EACT48H,CACT,CAiDO,SAAS7/H,EAAOW,GACrB,IAAIiD,EAAIjD,EAAE,GACNgC,EAAIhC,EAAE,GACV,OAAO6B,KAAK68uC,MAAMz7uC,EAAGjB,EACvB,CAqBO,SAASwuH,EAAO0O,EAAKl/H,GAG1B,OAFAk/H,EAAI,IAAMl/H,EAAE,GACZk/H,EAAI,IAAMl/H,EAAE,GACLk/H,CACT,CAyEO,SAASu4N,EAAKv4N,EAAKl/H,EAAGsC,EAAGlE,GAC9B,IAAIw+V,EAAK58V,EAAE,GACP68V,EAAK78V,EAAE,GAGX,OAFAk/H,EAAI,GAAK09N,EAAKx+V,GAAKkE,EAAE,GAAKs6V,GAC1B19N,EAAI,GAAK29N,EAAKz+V,GAAKkE,EAAE,GAAKu6V,GACnB39N,CACT,CAyBO,SAASsjnC,EAActjnC,EAAKl/H,EAAGoC,GACpC,IAAIa,EAAIjD,EAAE,GACNgC,EAAIhC,EAAE,GAGV,OAFAk/H,EAAI,GAAK98H,EAAE,GAAKa,EAAIb,EAAE,GAAKJ,EAC3Bk9H,EAAI,GAAK98H,EAAE,GAAKa,EAAIb,EAAE,GAAKJ,EACpBk9H,CACT,CAUO,SAASujnC,EAAevjnC,EAAKl/H,EAAGoC,GACrC,IAAIa,EAAIjD,EAAE,GACNgC,EAAIhC,EAAE,GAGV,OAFAk/H,EAAI,GAAK98H,EAAE,GAAKa,EAAIb,EAAE,GAAKJ,EAAII,EAAE,GACjC88H,EAAI,GAAK98H,EAAE,GAAKa,EAAIb,EAAE,GAAKJ,EAAII,EAAE,GAC1B88H,CACT,CAWO,SAASwjnC,EAAcxjnC,EAAKl/H,EAAGoC,GACpC,IAAIa,EAAIjD,EAAE,GACNgC,EAAIhC,EAAE,GAGV,OAFAk/H,EAAI,GAAK98H,EAAE,GAAKa,EAAIb,EAAE,GAAKJ,EAAII,EAAE,GACjC88H,EAAI,GAAK98H,EAAE,GAAKa,EAAIb,EAAE,GAAKJ,EAAII,EAAE,GAC1B88H,CACT,CAYO,SAASyjnC,EAAczjnC,EAAKl/H,EAAGoC,GACpC,IAAIa,EAAIjD,EAAE,GACNgC,EAAIhC,EAAE,GAGV,OAFAk/H,EAAI,GAAK98H,EAAE,GAAKa,EAAIb,EAAE,GAAKJ,EAAII,EAAE,IACjC88H,EAAI,GAAK98H,EAAE,GAAKa,EAAIb,EAAE,GAAKJ,EAAII,EAAE,IAC1B88H,CACT,CA6FO,IAnhBDA,EAyhBKhrG,EAncJ,SAAkBgrG,EAAKl/H,EAAGsC,GAG/B,OAFA48H,EAAI,GAAKl/H,EAAE,GAAKsC,EAAE,GAClB48H,EAAI,GAAKl/H,EAAE,GAAKsC,EAAE,GACX48H,CACT,EA1FMA,EAAM,IAAI,KAAoB,GAE9B,MAAuBlgH,eACzBkgH,EAAI,GAAK,EACTA,EAAI,GAAK,6OCLN,SAAShgI,IACd,IAAIggI,EAAM,IAAI,KAAoB,GAQlC,OANI,MAAuBlgH,eACzBkgH,EAAI,GAAK,EACTA,EAAI,GAAK,EACTA,EAAI,GAAK,GAGJA,CACT,CAsBO,SAAS7/H,EAAOW,GACrB,IAAIiD,EAAIjD,EAAE,GACNgC,EAAIhC,EAAE,GACN2E,EAAI3E,EAAE,GACV,OAAO6B,KAAK68uC,MAAMz7uC,EAAGjB,EAAG2C,EAC1B,CAUO,SAASi+uC,EAAW3/uC,EAAGjB,EAAG2C,GAC/B,IAAIu6H,EAAM,IAAI,KAAoB,GAIlC,OAHAA,EAAI,GAAKj8H,EACTi8H,EAAI,GAAKl9H,EACTk9H,EAAI,GAAKv6H,EACFu6H,CACT,CAwCO,SAAS/6G,EAAI+6G,EAAKl/H,EAAGsC,GAI1B,OAHA48H,EAAI,GAAKl/H,EAAE,GAAKsC,EAAE,GAClB48H,EAAI,GAAKl/H,EAAE,GAAKsC,EAAE,GAClB48H,EAAI,GAAKl/H,EAAE,GAAKsC,EAAE,GACX48H,CACT,CAsMO,SAAS1O,EAAO0O,EAAKl/H,GAI1B,OAHAk/H,EAAI,IAAMl/H,EAAE,GACZk/H,EAAI,IAAMl/H,EAAE,GACZk/H,EAAI,IAAMl/H,EAAE,GACLk/H,CACT,CAuBO,SAAS5wH,EAAU4wH,EAAKl/H,GAC7B,IAAIiD,EAAIjD,EAAE,GACNgC,EAAIhC,EAAE,GACN2E,EAAI3E,EAAE,GACN69H,EAAM56H,EAAIA,EAAIjB,EAAIA,EAAI2C,EAAIA,EAU9B,OARIk5H,EAAM,IAERA,EAAM,EAAIh8H,KAAK4yF,KAAKopC,IAGtBqB,EAAI,GAAKl/H,EAAE,GAAK69H,EAChBqB,EAAI,GAAKl/H,EAAE,GAAK69H,EAChBqB,EAAI,GAAKl/H,EAAE,GAAK69H,EACTqB,CACT,CASO,SAASsiD,EAAIxhL,EAAGsC,GACrB,OAAOtC,EAAE,GAAKsC,EAAE,GAAKtC,EAAE,GAAKsC,EAAE,GAAKtC,EAAE,GAAKsC,EAAE,EAC9C,CAUO,SAASm3L,EAAMv6D,EAAKl/H,EAAGsC,GAC5B,IAAIs6V,EAAK58V,EAAE,GACP68V,EAAK78V,EAAE,GACP88V,EAAK98V,EAAE,GACPg9V,EAAK16V,EAAE,GACP26V,EAAK36V,EAAE,GACP46V,EAAK56V,EAAE,GAIX,OAHA48H,EAAI,GAAK29N,EAAKK,EAAKJ,EAAKG,EACxB/9N,EAAI,GAAK49N,EAAKE,EAAKJ,EAAKM,EACxBh+N,EAAI,GAAK09N,EAAKK,EAAKJ,EAAKG,EACjB99N,CACT,CAWO,SAASu4N,EAAKv4N,EAAKl/H,EAAGsC,EAAGlE,GAC9B,IAAIw+V,EAAK58V,EAAE,GACP68V,EAAK78V,EAAE,GACP88V,EAAK98V,EAAE,GAIX,OAHAk/H,EAAI,GAAK09N,EAAKx+V,GAAKkE,EAAE,GAAKs6V,GAC1B19N,EAAI,GAAK29N,EAAKz+V,GAAKkE,EAAE,GAAKu6V,GAC1B39N,EAAI,GAAK49N,EAAK1+V,GAAKkE,EAAE,GAAKw6V,GACnB59N,CACT,CA6EO,SAASyjnC,EAAczjnC,EAAKl/H,EAAGoC,GACpC,IAAIa,EAAIjD,EAAE,GACNgC,EAAIhC,EAAE,GACN2E,EAAI3E,EAAE,GACNuC,EAAIH,EAAE,GAAKa,EAAIb,EAAE,GAAKJ,EAAII,EAAE,IAAMuC,EAAIvC,EAAE,IAK5C,OAJAG,EAAIA,GAAK,EACT28H,EAAI,IAAM98H,EAAE,GAAKa,EAAIb,EAAE,GAAKJ,EAAII,EAAE,GAAKuC,EAAIvC,EAAE,KAAOG,EACpD28H,EAAI,IAAM98H,EAAE,GAAKa,EAAIb,EAAE,GAAKJ,EAAII,EAAE,GAAKuC,EAAIvC,EAAE,KAAOG,EACpD28H,EAAI,IAAM98H,EAAE,GAAKa,EAAIb,EAAE,GAAKJ,EAAII,EAAE,IAAMuC,EAAIvC,EAAE,KAAOG,EAC9C28H,CACT,CAUO,SAASwjnC,EAAcxjnC,EAAKl/H,EAAGoC,GACpC,IAAIa,EAAIjD,EAAE,GACNgC,EAAIhC,EAAE,GACN2E,EAAI3E,EAAE,GAIV,OAHAk/H,EAAI,GAAKj8H,EAAIb,EAAE,GAAKJ,EAAII,EAAE,GAAKuC,EAAIvC,EAAE,GACrC88H,EAAI,GAAKj8H,EAAIb,EAAE,GAAKJ,EAAII,EAAE,GAAKuC,EAAIvC,EAAE,GACrC88H,EAAI,GAAKj8H,EAAIb,EAAE,GAAKJ,EAAII,EAAE,GAAKuC,EAAIvC,EAAE,GAC9B88H,CACT,CAWO,SAAS2jnC,EAAc3jnC,EAAKl/H,EAAGkF,GAEpC,IAAIwgW,EAAKxgW,EAAE,GACP6yZ,EAAK7yZ,EAAE,GACP49uC,EAAK59uC,EAAE,GACP69uC,EAAK79uC,EAAE,GACPjC,EAAIjD,EAAE,GACNgC,EAAIhC,EAAE,GACN2E,EAAI3E,EAAE,GAGNgjvC,EAAMjr1B,EAAKpzZ,EAAIm+uC,EAAK9gvC,EACpBihvC,EAAMH,EAAK7/uC,EAAIyiW,EAAK/gW,EACpBu+uC,EAAMx94B,EAAK1jW,EAAI+1Z,EAAK90Z,EAEpBkgvC,EAAOpr1B,EAAKmr1B,EAAMJ,EAAKG,EACvBG,EAAON,EAAKE,EAAMt94B,EAAKw94B,EACvBG,EAAO394B,EAAKu94B,EAAMlr1B,EAAKir1B,EAEvB1qd,EAAU,EAALyqd,EAYT,OAXAC,GAAO1qd,EACP2qd,GAAO3qd,EACP4qd,GAAO5qd,EAEP6qd,GAAQ,EACRC,GAAQ,EACRC,GAAQ,EAERnknC,EAAI,GAAKj8H,EAAI+/uC,EAAMG,EACnBjknC,EAAI,GAAKl9H,EAAIihvC,EAAMG,EACnBlknC,EAAI,GAAKv6H,EAAIu+uC,EAAMG,EACZnknC,CACT,CAUO,SAASpJ,EAAQoJ,EAAKl/H,EAAGsC,EAAGq6V,GACjC,IAAI76V,EAAI,GACJ/C,EAAI,GAaR,OAXA+C,EAAE,GAAK9B,EAAE,GAAKsC,EAAE,GAChBR,EAAE,GAAK9B,EAAE,GAAKsC,EAAE,GAChBR,EAAE,GAAK9B,EAAE,GAAKsC,EAAE,GAEhBvD,EAAE,GAAK+C,EAAE,GACT/C,EAAE,GAAK+C,EAAE,GAAKD,KAAKuxH,IAAIupO,GAAO76V,EAAE,GAAKD,KAAK4wH,IAAIkqO,GAC9C59V,EAAE,GAAK+C,EAAE,GAAKD,KAAK4wH,IAAIkqO,GAAO76V,EAAE,GAAKD,KAAKuxH,IAAIupO,GAE9Cz9N,EAAI,GAAKngI,EAAE,GAAKuD,EAAE,GAClB48H,EAAI,GAAKngI,EAAE,GAAKuD,EAAE,GAClB48H,EAAI,GAAKngI,EAAE,GAAKuD,EAAE,GACX48H,CACT,CAUO,SAASlJ,EAAQkJ,EAAKl/H,EAAGsC,EAAGq6V,GACjC,IAAI76V,EAAI,GACJ/C,EAAI,GAaR,OAXA+C,EAAE,GAAK9B,EAAE,GAAKsC,EAAE,GAChBR,EAAE,GAAK9B,EAAE,GAAKsC,EAAE,GAChBR,EAAE,GAAK9B,EAAE,GAAKsC,EAAE,GAEhBvD,EAAE,GAAK+C,EAAE,GAAKD,KAAK4wH,IAAIkqO,GAAO76V,EAAE,GAAKD,KAAKuxH,IAAIupO,GAC9C59V,EAAE,GAAK+C,EAAE,GACT/C,EAAE,GAAK+C,EAAE,GAAKD,KAAKuxH,IAAIupO,GAAO76V,EAAE,GAAKD,KAAK4wH,IAAIkqO,GAE9Cz9N,EAAI,GAAKngI,EAAE,GAAKuD,EAAE,GAClB48H,EAAI,GAAKngI,EAAE,GAAKuD,EAAE,GAClB48H,EAAI,GAAKngI,EAAE,GAAKuD,EAAE,GACX48H,CACT,CAUO,SAASnJ,EAAQmJ,EAAKl/H,EAAGsC,EAAGq6V,GACjC,IAAI76V,EAAI,GACJ/C,EAAI,GAaR,OAXA+C,EAAE,GAAK9B,EAAE,GAAKsC,EAAE,GAChBR,EAAE,GAAK9B,EAAE,GAAKsC,EAAE,GAChBR,EAAE,GAAK9B,EAAE,GAAKsC,EAAE,GAEhBvD,EAAE,GAAK+C,EAAE,GAAKD,KAAKuxH,IAAIupO,GAAO76V,EAAE,GAAKD,KAAK4wH,IAAIkqO,GAC9C59V,EAAE,GAAK+C,EAAE,GAAKD,KAAK4wH,IAAIkqO,GAAO76V,EAAE,GAAKD,KAAKuxH,IAAIupO,GAC9C59V,EAAE,GAAK+C,EAAE,GAETo9H,EAAI,GAAKngI,EAAE,GAAKuD,EAAE,GAClB48H,EAAI,GAAKngI,EAAE,GAAKuD,EAAE,GAClB48H,EAAI,GAAKngI,EAAE,GAAKuD,EAAE,GACX48H,CACT,CAQO,SAASyuG,EAAM3tO,EAAGsC,GACvB,IAAIs6V,EAAK58V,EAAE,GACP68V,EAAK78V,EAAE,GACP88V,EAAK98V,EAAE,GACPg9V,EAAK16V,EAAE,GACP26V,EAAK36V,EAAE,GACP46V,EAAK56V,EAAE,GAGP4iL,EAFOrjL,KAAK4yF,KAAKmoQ,EAAKA,EAAKC,EAAKA,EAAKC,EAAKA,GACnCj7V,KAAK4yF,KAAKuoQ,EAAKA,EAAKC,EAAKA,EAAKC,EAAKA,GAE1Com5B,EAASp+jC,GAAO1D,EAAIxhL,EAAGsC,GAAK4iL,EAChC,OAAOrjL,KAAK2lT,KAAK3lT,KAAKgL,IAAIhL,KAAK8K,IAAI22uC,GAAS,GAAI,GAClD,CAyDO,IAAIpvtC,EAzkBJ,SAAkBgrG,EAAKl/H,EAAGsC,GAI/B,OAHA48H,EAAI,GAAKl/H,EAAE,GAAKsC,EAAE,GAClB48H,EAAI,GAAKl/H,EAAE,GAAKsC,EAAE,GAClB48H,EAAI,GAAKl/H,EAAE,GAAKsC,EAAE,GACX48H,CACT,EA0kBWwuF,EAhkBJ,SAAkBxuF,EAAKl/H,EAAGsC,GAI/B,OAHA48H,EAAI,GAAKl/H,EAAE,GAAKsC,EAAE,GAClB48H,EAAI,GAAKl/H,EAAE,GAAKsC,EAAE,GAClB48H,EAAI,GAAKl/H,EAAE,GAAKsC,EAAE,GACX48H,CACT,EAmlBWrB,EAAMx+H,EAMNkkvC,EA/bJ,SAAuBvjvC,GAC5B,IAAIiD,EAAIjD,EAAE,GACNgC,EAAIhC,EAAE,GACN2E,EAAI3E,EAAE,GACV,OAAOiD,EAAIA,EAAIjB,EAAIA,EAAI2C,EAAIA,CAC7B,EAycYzF,qLCvuBNggI,aAkBC,SAAS3vG,EAAMvvB,GACpB,IAAIk/H,EAAM,IAAI,KAAoB,GAKlC,OAJAA,EAAI,GAAKl/H,EAAE,GACXk/H,EAAI,GAAKl/H,EAAE,GACXk/H,EAAI,GAAKl/H,EAAE,GACXk/H,EAAI,GAAKl/H,EAAE,GACJk/H,CACT,CAWO,SAAS0jnC,EAAW3/uC,EAAGjB,EAAG2C,EAAGpC,GAClC,IAAI28H,EAAM,IAAI,KAAoB,GAKlC,OAJAA,EAAI,GAAKj8H,EACTi8H,EAAI,GAAKl9H,EACTk9H,EAAI,GAAKv6H,EACTu6H,EAAI,GAAK38H,EACF28H,CACT,CASO,SAASJ,EAAKI,EAAKl/H,GAKxB,OAJAk/H,EAAI,GAAKl/H,EAAE,GACXk/H,EAAI,GAAKl/H,EAAE,GACXk/H,EAAI,GAAKl/H,EAAE,GACXk/H,EAAI,GAAKl/H,EAAE,GACJk/H,CACT,CAYO,SAASj0H,EAAIi0H,EAAKj8H,EAAGjB,EAAG2C,EAAGpC,GAKhC,OAJA28H,EAAI,GAAKj8H,EACTi8H,EAAI,GAAKl9H,EACTk9H,EAAI,GAAKv6H,EACTu6H,EAAI,GAAK38H,EACF28H,CACT,CAUO,SAAS/6G,EAAI+6G,EAAKl/H,EAAGsC,GAK1B,OAJA48H,EAAI,GAAKl/H,EAAE,GAAKsC,EAAE,GAClB48H,EAAI,GAAKl/H,EAAE,GAAKsC,EAAE,GAClB48H,EAAI,GAAKl/H,EAAE,GAAKsC,EAAE,GAClB48H,EAAI,GAAKl/H,EAAE,GAAKsC,EAAE,GACX48H,CACT,CAuIO,SAASp+B,EAAMo+B,EAAKl/H,EAAGsC,GAK5B,OAJA48H,EAAI,GAAKl/H,EAAE,GAAKsC,EAChB48H,EAAI,GAAKl/H,EAAE,GAAKsC,EAChB48H,EAAI,GAAKl/H,EAAE,GAAKsC,EAChB48H,EAAI,GAAKl/H,EAAE,GAAKsC,EACT48H,CACT,CAuDO,SAAS7/H,EAAOW,GACrB,IAAIiD,EAAIjD,EAAE,GACNgC,EAAIhC,EAAE,GACN2E,EAAI3E,EAAE,GACNuC,EAAIvC,EAAE,GACV,OAAO6B,KAAK68uC,MAAMz7uC,EAAGjB,EAAG2C,EAAGpC,EAC7B,CAQO,SAASi7V,EAAcx9V,GAC5B,IAAIiD,EAAIjD,EAAE,GACNgC,EAAIhC,EAAE,GACN2E,EAAI3E,EAAE,GACNuC,EAAIvC,EAAE,GACV,OAAOiD,EAAIA,EAAIjB,EAAIA,EAAI2C,EAAIA,EAAIpC,EAAIA,CACrC,CAuCO,SAAS+L,EAAU4wH,EAAKl/H,GAC7B,IAAIiD,EAAIjD,EAAE,GACNgC,EAAIhC,EAAE,GACN2E,EAAI3E,EAAE,GACNuC,EAAIvC,EAAE,GACN69H,EAAM56H,EAAIA,EAAIjB,EAAIA,EAAI2C,EAAIA,EAAIpC,EAAIA,EAUtC,OARIs7H,EAAM,IACRA,EAAM,EAAIh8H,KAAK4yF,KAAKopC,IAGtBqB,EAAI,GAAKj8H,EAAI46H,EACbqB,EAAI,GAAKl9H,EAAI67H,EACbqB,EAAI,GAAKv6H,EAAIk5H,EACbqB,EAAI,GAAK38H,EAAIs7H,EACNqB,CACT,CASO,SAASsiD,EAAIxhL,EAAGsC,GACrB,OAAOtC,EAAE,GAAKsC,EAAE,GAAKtC,EAAE,GAAKsC,EAAE,GAAKtC,EAAE,GAAKsC,EAAE,GAAKtC,EAAE,GAAKsC,EAAE,EAC5D,CAsCO,SAASm1V,EAAKv4N,EAAKl/H,EAAGsC,EAAGlE,GAC9B,IAAIw+V,EAAK58V,EAAE,GACP68V,EAAK78V,EAAE,GACP88V,EAAK98V,EAAE,GACP+8V,EAAK/8V,EAAE,GAKX,OAJAk/H,EAAI,GAAK09N,EAAKx+V,GAAKkE,EAAE,GAAKs6V,GAC1B19N,EAAI,GAAK29N,EAAKz+V,GAAKkE,EAAE,GAAKu6V,GAC1B39N,EAAI,GAAK49N,EAAK1+V,GAAKkE,EAAE,GAAKw6V,GAC1B59N,EAAI,GAAK69N,EAAK3+V,GAAKkE,EAAE,GAAKy6V,GACnB79N,CACT,CA6CO,SAASyjnC,EAAczjnC,EAAKl/H,EAAGoC,GACpC,IAAIa,EAAIjD,EAAE,GACNgC,EAAIhC,EAAE,GACN2E,EAAI3E,EAAE,GACNuC,EAAIvC,EAAE,GAKV,OAJAk/H,EAAI,GAAK98H,EAAE,GAAKa,EAAIb,EAAE,GAAKJ,EAAII,EAAE,GAAKuC,EAAIvC,EAAE,IAAMG,EAClD28H,EAAI,GAAK98H,EAAE,GAAKa,EAAIb,EAAE,GAAKJ,EAAII,EAAE,GAAKuC,EAAIvC,EAAE,IAAMG,EAClD28H,EAAI,GAAK98H,EAAE,GAAKa,EAAIb,EAAE,GAAKJ,EAAII,EAAE,IAAMuC,EAAIvC,EAAE,IAAMG,EACnD28H,EAAI,GAAK98H,EAAE,GAAKa,EAAIb,EAAE,GAAKJ,EAAII,EAAE,IAAMuC,EAAIvC,EAAE,IAAMG,EAC5C28H,CACT,CAUO,SAAS2jnC,EAAc3jnC,EAAKl/H,EAAGkF,GACpC,IAAIjC,EAAIjD,EAAE,GACNgC,EAAIhC,EAAE,GACN2E,EAAI3E,EAAE,GACN0lW,EAAKxgW,EAAE,GACP6yZ,EAAK7yZ,EAAE,GACP49uC,EAAK59uC,EAAE,GACP69uC,EAAK79uC,EAAE,GAEPs+uC,EAAKT,EAAK9/uC,EAAI80Z,EAAKpzZ,EAAIm+uC,EAAK9gvC,EAC5ByhvC,EAAKV,EAAK/gvC,EAAI8gvC,EAAK7/uC,EAAIyiW,EAAK/gW,EAC5B++uC,EAAKX,EAAKp+uC,EAAI+gW,EAAK1jW,EAAI+1Z,EAAK90Z,EAC5B0gvC,GAAMj+4B,EAAKziW,EAAI80Z,EAAK/1Z,EAAI8gvC,EAAKn+uC,EAMjC,OAJAu6H,EAAI,GAAKsknC,EAAKT,EAAKY,GAAMj+4B,EAAK+94B,GAAMX,EAAKY,GAAM3r1B,EAC/C74R,EAAI,GAAKuknC,EAAKV,EAAKY,GAAM5r1B,EAAK2r1B,GAAMh+4B,EAAK894B,GAAMV,EAC/C5jnC,EAAI,GAAKwknC,EAAKX,EAAKY,GAAMb,EAAKU,GAAMzr1B,EAAK0r1B,GAAM/94B,EAC/CxmO,EAAI,GAAKl/H,EAAE,GACJk/H,CACT,CAiCO,SAASs4N,EAAYx3V,EAAGsC,GAC7B,OAAOtC,EAAE,KAAOsC,EAAE,IAAMtC,EAAE,KAAOsC,EAAE,IAAMtC,EAAE,KAAOsC,EAAE,IAAMtC,EAAE,KAAOsC,EAAE,EACvE,CASO,SAASivI,EAAOvxI,EAAGsC,GACxB,IAAI87V,EAAKp+V,EAAE,GACPq+V,EAAKr+V,EAAE,GACPs+V,EAAKt+V,EAAE,GACPu+V,EAAKv+V,EAAE,GACPwuW,EAAKlsW,EAAE,GACPogW,EAAKpgW,EAAE,GACPqgW,EAAKrgW,EAAE,GACPi1E,EAAKj1E,EAAE,GACX,OAAOT,KAAKmjH,IAAIo5O,EAAKoQ,IAAO,KAAmB3sW,KAAK8K,IAAI,EAAK9K,KAAKmjH,IAAIo5O,GAAKv8V,KAAKmjH,IAAIwpP,KAAQ3sW,KAAKmjH,IAAIq5O,EAAKqE,IAAO,KAAmB7gW,KAAK8K,IAAI,EAAK9K,KAAKmjH,IAAIq5O,GAAKx8V,KAAKmjH,IAAI09O,KAAQ7gW,KAAKmjH,IAAIs5O,EAAKqE,IAAO,KAAmB9gW,KAAK8K,IAAI,EAAK9K,KAAKmjH,IAAIs5O,GAAKz8V,KAAKmjH,IAAI29O,KAAQ9gW,KAAKmjH,IAAIu5O,EAAKhnR,IAAO,KAAmB11E,KAAK8K,IAAI,EAAK9K,KAAKmjH,IAAIu5O,GAAK18V,KAAKmjH,IAAIztC,GACrV,CAhjBM2nD,EAAM,IAAI,KAAoB,GAE9B,MAAuBlgH,eACzBkgH,EAAI,GAAK,EACTA,EAAI,GAAK,EACTA,EAAI,GAAK,EACTA,EAAI,GAAK,giCCnBb,IAAI0knC,EAAQ,SAAUA,GAEpB,IAEI//tC,EAFAkoM,OAA0B,KAD9B63hC,EAAQA,GAAS,CAAC,GAC0BA,EAAQ,CAAC,EACjDC,EAAkB,CAAC,EAGvB,IAAKhguC,KAAOkoM,EACNA,EAAOptN,eAAeklB,KACxBgguC,EAAgBhguC,GAAOkoM,EAAOloM,IAIlC,IAWIiguC,EAXAC,EAAa,GACbC,EAAkB,GAahB7/uC,SAAS8/uC,gBACXD,EAAkB7/uC,SAAS8/uC,cAAczwuC,KAIzCwwuC,EADuC,IAArCA,EAAgBxkvC,QAAQ,SACRwkvC,EAAgBvptC,OAAO,EAAGuptC,EAAgB/mkC,YAAY,KAAO,GAE7D,GAGpB6mkC,EAAY,SAAmB50tC,EAAKQ,EAAQhB,GAC1C,IAAIm0C,EAAM,IAAIx7C,eACdw7C,EAAInvD,KAAK,MAAOwb,GAAK,GACrB2zC,EAAI5S,aAAe,cAEnB4S,EAAInzC,OAAS,WACX,GAAkB,KAAdmzC,EAAIp+C,QAA+B,GAAdo+C,EAAIp+C,QAAeo+C,EAAIp1C,SAC9CiC,EAAOmzC,EAAIp1C,cADb,CAKA,IAAIjf,EAAO01uC,EAAkBh1tC,GAEzB1gB,EACFkhB,EAAOlhB,EAAK0Y,QAIdwH,GATA,CAUF,EAEAm0C,EAAIn0C,QAAUA,EACdm0C,EAAIv7C,KAAK,KACX,EAGF,IAAI43G,EAAM6sF,EAAc,OAAK1lM,QAAQgD,IAAIhnB,KAAKgkB,SAC1CiwB,EAAMy1K,EAAiB,UAAK1lM,QAAQC,KAAKjkB,KAAKgkB,SAElD,IAAKxC,KAAOgguC,EACNA,EAAgBllvC,eAAeklB,KACjCkoM,EAAOloM,GAAOgguC,EAAgBhguC,IAIlCgguC,EAAkB,KACd93hC,EAAkB,YAAKg4hC,EAAah4hC,EAAkB,WAE1D,IAAIo4hC,EAAW,EAMXC,EAAc,WAChB,OAAOD,CACT,EA2EIE,GAAQ,EAQZ,SAASC,EAASC,GAChB,IAAIxlsC,EAAOgtK,EAAO,IAAMw4hC,GAExB,OADOxlsC,GANL9uB,GAAM,sBAMK,gCAAkCs0tC,EAAQ,+BAChDxlsC,CACT,CAkEA,IA4GI73B,EAAQs9tC,EAAOC,EAAQC,EAAiBC,EAAiBjq+B,EAASkq+B,EA5GlEC,EAAqC,oBAAhB98tC,YAA8B,IAAIA,YAAY,aAAUglB,EAgDjF,SAAS+3sC,EAAa7s+B,EAAK8s+B,GACzB,OAAO9s+B,EA/CT,SAA2B+s+B,EAASlr4B,EAAKir4B,GAIvC,IAHA,IAAI9lK,EAASnluB,EAAMir4B,EACfE,EAASnr4B,EAENkr4B,EAAQC,MAAaA,GAAUhmK,MAAagmK,EAEnD,GAAIA,EAASnr4B,EAAM,IAAMkr4B,EAAQv+tC,UAAYo+tC,EAC3C,OAAOA,EAAYh9tC,OAAOm9tC,EAAQv+tC,SAASqzV,EAAKmr4B,IAIhD,IAFA,IAAItvqC,EAAM,GAEHmkS,EAAMmr4B,GAAQ,CACnB,IAAIC,EAAKF,EAAQlr4B,KAEjB,GAAW,IAALor4B,EAAN,CAKA,IAAIj7jC,EAAsB,GAAjB+6jC,EAAQlr4B,KAEjB,GAAkB,MAAR,IAALor4B,GAAL,CAKA,IAAI/6jC,EAAsB,GAAjB66jC,EAAQlr4B,KAQjB,IALEor4B,EADgB,MAAR,IAALA,IACQ,GAALA,IAAY,GAAKj7jC,GAAM,EAAIE,GAEtB,EAAL+6jC,IAAW,GAAKj7jC,GAAM,GAAKE,GAAM,EAAqB,GAAjB66jC,EAAQlr4B,MAG5C,MACPnkS,GAAO72E,OAAO4nB,aAAaw+tC,OACtB,CACL,IAAI359B,EAAK259B,EAAK,MACdvvqC,GAAO72E,OAAO4nB,aAAa,MAAQ6kQ,GAAM,GAAI,MAAa,KAALA,EACvD,CAfA,MAFE51M,GAAO72E,OAAO4nB,cAAmB,GAALw+tC,IAAY,EAAIj7jC,EAL9C,MAFEt0G,GAAO72E,OAAO4nB,aAAaw+tC,EAyB/B,CAGF,OAAOvvqC,CACT,CAGewvqC,CAAkBV,EAAQxs+B,EAAK8s+B,GAAkB,EAChE,CAkDA,SAASK,EAAQnivC,EAAGsr/B,GAKlB,OAJItr/B,EAAIsr/B,EAAW,IACjBtr/B,GAAKsr/B,EAAWtr/B,EAAIsr/B,GAGftr/B,CACT,CAIA,SAASoivC,EAA2BC,GAClCp+tC,EAASo+tC,EACTv5hC,EAAc,MAAIy4hC,EAAQ,IAAI5muC,UAAU0nuC,GACxCv5hC,EAAe,OAAI24hC,EAAS,IAAI9luC,WAAW0muC,GAC3Cv5hC,EAAe,OAAI44hC,EAAS,IAAI7luC,WAAWwmuC,GAC3Cv5hC,EAAe,OAAI04hC,EAAS,IAAI9luC,WAAW2muC,GAC3Cv5hC,EAAgB,QAAc,IAAIltM,YAAYymuC,GAC9Cv5hC,EAAgB,QAAc,IAAIhtM,YAAYumuC,GAC9Cv5hC,EAAgB,QAAI2uD,EAAU,IAAI17P,aAAasmuC,GAC/Cv5hC,EAAgB,QAAI64hC,EAAU,IAAI3luC,aAAaqmuC,EACjD,CA1B0C,oBAAhBv9tC,aAA8B,IAAIA,YAAY,YA4BxE,IAEIw9tC,EAAuBx5hC,EAAqB,cAAK,SAYrD,SAASy5hC,EAAqBr/qC,GAC5B,KAAOA,EAAU9mE,OAAS,GAAG,CAC3B,IAAI6oB,EAAWi+C,EAAUhpB,QAEzB,GAAuB,mBAAZj1B,EAAX,CAKA,IAAI62B,EAAO72B,EAAS62B,KAEA,iBAATA,OACYhS,IAAjB7kB,EAASguB,IACX61K,EAAkB,UAAEhtK,GAEpBgtK,EAAmB,WAAEhtK,EAAM72B,EAASguB,KAGtC6I,OAAsBhS,IAAjB7kB,EAASguB,IAAoB,KAAOhuB,EAASguB,IAXpD,MAFEhuB,GAeJ,CACF,CAzBAq9tC,GALEr+tC,EADE6kM,EAAe,OACRA,EAAe,OAEf,IAAIzuM,YAAYiouC,IAGGn+tC,WAC9Bi+tC,EAA2Bn+tC,GAC3By9tC,EAAOc,MAZY,QAqCnB,IAAIC,EAAe,GACfC,EAAa,GACbC,EAAa,GACbC,EAAgB,GA0ChBC,EAAWjkvC,KAAKmjH,IAChB+goC,EAAYlkvC,KAAKuK,KACjB45uC,EAAankvC,KAAKyK,MAClB25uC,EAAWpkvC,KAAKgL,IAChBq5uC,EAAkB,EAClBC,EAAuB,KACvBC,EAAwB,KA+B5Br6hC,EAAwB,gBAAI,CAAC,EAC7BA,EAAwB,gBAAI,CAAC,EAC7B,IAOIs6hC,EACAC,EARAC,EAAoB,KACpBC,EAAgB,wCAEpB,SAASC,EAAUjg/B,GACjB,OAAO1nQ,OAAOJ,UAAUyR,WAAaq2P,EAASr2P,WAAWq2uC,GAAqD,IAApChg/B,EAAShnQ,QAAQgnvC,EAC7F,CAWA,SAASE,EAAYt3tC,GAEnB,OAAOA,EAAK3jB,QADA,kBACe,SAAUxI,GAEnC,OAAOA,GADUA,EACAA,EADAA,EACQ,KAAOA,EAAI,GACtC,GACF,CAEA,SAAS0jvC,IACP,IAAIrwsC,EAAM,IAAI9vB,MAEd,IAAK8vB,EAAI3E,MAAO,CACd,IACE,MAAM,IAAInrB,MAAM,EAClB,CAAE,MAAOroB,GACPm4C,EAAMn4C,CACR,CAEA,IAAKm4C,EAAI3E,MACP,MAAO,4BAEX,CAEA,OAAO2E,EAAI3E,MAAMpuC,UACnB,CAYA,SAASqjvC,IACP,OAAOpC,EAAMnlvC,MACf,CAeA,SAASwnvC,EAA0BjjuC,GACjC,IACE,IAAIkjuC,EAAY,IAAIxpuC,YAAYsG,GAChC,GAAIkjuC,EAAU1/tC,YAAcxD,EAAQ,OAMpC,OALA,IAAIhG,UAAUkpuC,GAAW77uC,IAAIu5uC,GAE7BuC,EAA2BD,GAE3BzB,EAA2ByB,GACpB,CACT,CAAE,MAAO3ovC,GAAI,CACf,CAvEAoovC,EAAoB,o48BAuGpB,IAAIS,EAA+B,mBAATn4tC,KAAsBA,KAAO,SAAU4gC,GAC/D,IAEIw3rC,EAAMC,EAAMC,EACNC,EAAMC,EAAMC,EAHlBvwb,EAAS,oEACT3uvB,EAAS,GAGTxoE,EAAI,EACR6vD,EAAQA,EAAMhkD,QAAQ,sBAAuB,IAE7C,GAKEw7uC,EAJOlwb,EAAOv3zB,QAAQiwD,EAAM53C,OAAOjY,OAIpB,GAHfwnvC,EAAOrwb,EAAOv3zB,QAAQiwD,EAAM53C,OAAOjY,QAGR,EAC3BsnvC,GAAe,GAAPE,IAAc,GAHtBC,EAAOtwb,EAAOv3zB,QAAQiwD,EAAM53C,OAAOjY,QAGD,EAClCunvC,GAAe,EAAPE,IAAa,GAHrBC,EAAOvwb,EAAOv3zB,QAAQiwD,EAAM53C,OAAOjY,OAInCwoE,GAAkBtpE,OAAO4nB,aAAauguC,GAEzB,KAATI,IACFj/qC,GAAkBtpE,OAAO4nB,aAAawguC,IAG3B,KAATI,IACFl/qC,GAAkBtpE,OAAO4nB,aAAayguC,UAEjCvnvC,EAAI6vD,EAAMpwD,QAEnB,OAAO+oE,CACT,EAiBA,SAAS87qC,EAAkB19+B,GACzB,GAAKig/B,EAAUjg/B,GAIf,OApBF,SAA4B1mQ,GAC1B,IAIE,IAHA,IAAIynvC,EAAUP,EAAalnvC,GACvBglE,EAAQ,IAAInmD,WAAW4ouC,EAAQlovC,QAE1BO,EAAI,EAAGA,EAAI2nvC,EAAQlovC,SAAUO,EACpCklE,EAAMllE,GAAK2nvC,EAAQxvuC,WAAWnY,GAGhC,OAAOklE,CACT,CAAE,MAAOliE,GACP,MAAM,IAAI4jB,MAAM,4CAClB,CACF,CAOSghuC,CAAmBhh/B,EAASzlQ,MAAMylvC,EAAcnnvC,QACzD,CAEA,IApnBoBg2B,EA2zXhBoytC,EA5qWAC,EAEJ,SAAU37uC,EAAQwuD,EAAKrzC,GAGrB,IAAIlnB,EAAI,IAAI+L,EAAO6R,UAAUsJ,GACzB5kB,EAAI,IAAIyJ,EAAO+S,WAAWoI,GAG1B/oB,GAFI,IAAI4N,EAAO4S,WAAWuI,GACtB,IAAInb,EAAOiT,aAAakI,GACxB,IAAInb,EAAOkT,aAAaiI,IAC5B/lB,EAAY,EAARo5D,EAAIz4D,EACRA,EAAIiK,EAAOlK,KAAKyK,MAChBpH,EAAI6G,EAAOlK,KAAKmjH,IAChBjmH,EAAIgN,EAAOlK,KAAK4yF,KAChB30F,EAAIiM,EAAOlK,KAAK6yF,IAChBt2F,EAAI2N,EAAOlK,KAAKuxH,IAChB/xH,EAAI0K,EAAOlK,KAAK4wH,IAChBxwH,EAAI8J,EAAOlK,KAAKinC,IAChBvmC,EAAIwJ,EAAOlK,KAAK2lT,KAChBvkT,EAAI8I,EAAOlK,KAAK2xH,KAChBxxH,EAAI+J,EAAOlK,KAAKskK,KAChBxhK,EAAIoH,EAAOlK,KAAK0xH,MAChB1vH,EAAIkI,EAAOlK,KAAKuK,KAChBrH,EAAIgH,EAAOlK,KAAK8lvC,KAChBxkvC,EAAI4I,EAAOlK,KAAKgL,IAChBtI,EAAIwH,EAAOlK,KAAKuqN,MAChBpoN,EAAIu2D,EAAIj4D,EACRqB,EAAI42D,EAAI16D,EACR2E,EAAI+1D,EAAI54D,EACRkB,EAAI03D,EAAIp8D,EACRuG,EAAI61D,EAAI74D,EACRuC,EAAIs2D,EAAIp5D,EACRkC,EAAIk3D,EAAI34D,EACRiD,EAAI01D,EAAI36D,EACR4C,EAAI,MA0CR,SAAS4C,EAAEpF,EAAGsC,EAAGzC,EAAG8B,GAKlB,IAAIxD,EACAuD,EACsB,EAApBsxB,EANNhzB,GAAQ,EACRsC,GAAQ,EACRzC,GAAQ,EACR8B,GAAQ,EAGa,KAErBimvC,GAAO,EAAJjmvC,EAAO,GADVD,EAAoC,GAAL,EAA1BqD,EAAM,EAAJlF,EAAQ,EAAGA,EAAI,EAAI,IAAc,IACtB,EAAI,IACtB1B,EAAe,EAAXwuB,GAAGjrB,EAAG,MAEVqtB,EAAG/uB,EAAGsC,EAAGzC,EAAG8B,EAAGxD,EAAGuD,EAAG,GACrBsqB,GAAG7tB,IAEL,CA0BA,SAAS60B,EAAGhzB,EAAGH,EAAG8B,EAAGxD,EAAGuD,GACtB1B,GAAQ,EACRH,GAAQ,EACR8B,GAAQ,EAERD,GAAQ,EACR,IAQIpC,EARA6B,EAAI,EACJS,EAAI,EACJhC,EAAI,EACJwD,EAAI,EACJV,EAAI,EACJlB,EAAI,EACJY,EAAI,EACJ/D,EAAI,EAWR,GATAiB,EAAIkD,EACJA,EAAIA,EAAI,GAAK,EACbnE,EAAIiB,EAEJgD,GADAnB,EAdAhD,GAAQ,IAeD,GAAK6B,EACZsC,EAAEnB,EAAI,GAAK,GAAKtB,GAChBsB,EAAe,IAAN,EAAJO,MACIY,EAAEZ,GAAK,GAAK,GAEN,EAAXmmvC,GAAG7nvC,EAAGH,GAGR,OADA2C,EAAIlD,EACGjB,EAGTiE,EAAEjE,GAAK,GAAK,EAEZ2B,EAAG,GAAK,IAAS,EAAJ2B,IAAU,EACrB,GAAIR,EAOF,IANAuB,EAAI,EACJlB,EAAI,EACJY,EAAI,EACJR,EAAI,EACJT,EAAInB,IAEM,CACR,KAAM4B,EAAIc,GAAI,CAIZ,GAAe,IAAN,GAHTvB,EAAqB,EAAjBiwB,EAAGjwB,EAAGtB,EAAG,EAAGxB,KAGc,IAAN,GAFxBwB,EAAU,EAAN8D,MAE6B,CAC/BxC,EAAI,EACJ,MAAMnB,CACR,CAEA,GAAe,EAAX6nvC,GAAG1mvC,EAAGtB,GAAQ,CAChBsB,EAAI,EACJ,MAAMnB,CACR,CACF,CAKA,GAAe,IAAN,GAHTmB,EAA6C,EAAzCiwB,EAAGjwB,EAAGtB,EAA2B,EAAxByC,EAAE,IAAMI,GAAK,IAAM,GAAQrE,KAGV,IAAN,GAFxBwB,EAAU,EAAN8D,MAE6B,CAC/BxC,EAAI,EACJ,MAAMnB,CACR,CAWA,GARAsC,GADAtC,EAAI7B,GAAKiE,GAAK,GAAK,IACZ,GAAKjB,EACZmB,EAAEtC,EAAI,GAAK,GAAKH,EAChByC,EAAEZ,GAAKU,GAAK,IAAM,GAAKZ,EAEvBxB,GAAS,GADT4B,EAAIA,EAAI,EAAI,MACQ,EAAJJ,GAEhB4B,EAAe,IAAN,GADTxD,EAAI8C,EAAI,EAAI,IAGG,EAAXmlvC,GAAG1mvC,EAAGtB,GAAQ,CAChBsB,EAAI,EACJ,MAAMnB,CACR,CAIA,IAAS,GAFTwB,EAAIA,GAAK4B,EAAIpD,EAAI,GAAK,KAEH,EAAJ2B,GAAQ,CACrBR,EAAI,EACJ,KACF,CACEuB,EAAI1C,EAAIoD,EAAI,EAAIxD,EAAI8C,EACpBN,EAAIA,EAAI,EAAI,EACZR,EAAI5B,EAAI,EAAI4B,CAEhB,MAQA,IANAc,EAAI,EACJlB,EAAI,EACJY,EAAI,EACJR,EAAI,EACJT,EAAInB,IAEM,CACR,KAAM4B,EAAIc,GAAI,CAIZ,GAAe,IAAN,GAHTvB,EAAqB,EAAjBiwB,EAAGjwB,EAAGtB,EAAG,EAAGxB,KAGc,IAAN,GAFxBwB,EAAU,EAAN8D,MAE6B,CAC/BxC,EAAI,EACJ,MAAMnB,CACR,CAEA,GAAe,EAAX6nvC,GAAG1mvC,EAAGtB,GAAQ,CAChBsB,EAAI,EACJ,MAAMnB,CACR,CACF,CAKA,GAAe,IAAN,GAHTmB,EAA6C,EAAzCiwB,EAAGjwB,EAAGtB,EAA2B,EAAxByC,EAAE,IAAMI,GAAK,IAAM,GAAQrE,KAGV,IAAN,GAFxBwB,EAAU,EAAN8D,MAE6B,CAC/BxC,EAAI,EACJ,MAAMnB,CACR,CAUA,GAPAsC,GADAtC,EAAI7B,GAAKiE,GAAK,GAAK,IACZ,GAAKjB,EACZmB,EAAEtC,EAAI,GAAK,GAAKH,EAEhBG,GAAS,GADT4B,EAAIA,EAAI,EAAI,MACQ,EAAJJ,GAEhB4B,EAAe,IAAN,GADTxD,EAAI8C,EAAI,EAAI,IAGG,EAAXmlvC,GAAG1mvC,EAAGtB,GAAQ,CAChBsB,EAAI,EACJ,MAAMnB,CACR,CAIA,IAAS,GAFTwB,EAAIA,GAAK4B,EAAIpD,EAAI,GAAK,KAEH,EAAJ2B,GAAQ,CACrBR,EAAI,EACJ,KACF,CACEuB,EAAI1C,EAAIoD,EAAI,EAAIxD,EAAI8C,EACpBN,EAAIA,EAAI,EAAI,EACZR,EAAI5B,EAAI,EAAI4B,CAEhB,MAEKT,EAAI,QAAc,GAI3B,OADAqB,EAAIlD,EACO,EAFP6B,CAGN,CAEA,SAAS4tB,EAAG/uB,EAAGH,EAAG8B,EAAGxD,EAAGuD,EAAGP,EAAGS,GAG5BD,GAAQ,EACRxD,GAAQ,EACRuD,GAAQ,EACRP,GAAQ,EACRS,GAAQ,EACR,IAGIJ,EACAY,EAJAxC,EAAI,EACJwD,EAAI,EACJV,EAAI,EAGJrE,EAAI,EACJiB,EAAI,EAKR,GAJA8C,EAAII,EACJA,EAAIA,EAAI,GAAK,EACbhB,EAAIY,EAEW,IAAN,GAlBTpC,GAAQ,IAkBsB,IAAN,GAjBxBH,GAAQ,IAkBN2C,EAAIJ,MADN,CAYA,GAPAxC,EAA6D,EAAzDkovC,GAAO,EAAJ9nvC,EAAW,EAAJH,EAAW,EAAJsB,IAAa,EAAJA,GAAS,IAAM,IAAM,GAAK,GACxDwC,MAMiB,IAAN,GAHXrE,EAAgB,EAAZgD,GADJjE,EADA+E,EAAIjF,GAAKyB,GAAK,GAAK,IAER,KAGqB,IAAN,GAF1BvB,EAAoB,EAAhBiE,EAAEjE,EAAI,GAAK,MACfqE,GAAS,EAAJpD,KAAe,EAAJU,IAAc,EAAJ3B,KAAe,EAAJwB,KACK,GAMxC6C,GAAS,GAFTrE,EAAgB,EAAZiE,GADJhD,EADA8D,EAAIjF,IADJyB,GAAKA,EAAI,EAAI,IAAU,EAAJuB,GAAS,IACd,GAAK,IAER,OAES,EAAJnB,IAAc,GAD9BV,EAAoB,EAAhBgD,EAAEhD,EAAI,GAAK,OAC0B,EAAJO,WACjB,IAAN,EAAJxB,GAAyB,IAAN,EAAJiB,GAAcoD,IACzC9C,EAAI8B,GAAK9B,GAAK,GAAK,EAEf8C,IAAiB,EAAZJ,EAAE1C,GAAK,MAAgB,EAAJgC,KAM5BU,GADAhD,EAAI8D,IACG,GAAKpD,EACZsC,EAAEhD,EAAI,GAAK,GAAKO,EAChByC,EAAE1C,GAAK,GAAKgC,GAEH,EAAJA,KAAe,EAAJD,KAKhBrC,EAAIsC,EAAI,EAAI,EACZU,EAAEd,GAAK,GAAK,EAEZutB,EADA1wB,EAAqB,EAAjB+yB,EAAGpxB,EAAGH,EAAG,EAAG2B,GACJ,EAANmC,IAAShC,EAAGxD,EAAGuD,EAAGP,EAAG7B,GAC3BgD,EAAEd,GAAK,GAAK,EAEZutB,EADA1wB,EAAqB,EAAjB+yB,EAAGpxB,EAAGH,EAAG,EAAG2B,GACJ,EAANmC,IAAShC,EAAGxD,EAAGuD,EAAGP,EAAG7B,GAC3BgD,EAAEd,GAAK,GAAK,EAEZutB,EADA1wB,EAAqB,EAAjB+yB,EAAGpxB,EAAGH,EAAG,EAAG2B,GACJ,EAANmC,IAAShC,EAAGxD,EAAGuD,EAAGP,EAAG7B,GAC3BgD,EAAEd,GAAK,GAAK,EAEZutB,EADA1wB,EAAqB,EAAjB+yB,EAAGpxB,EAAGH,EAAG,EAAG2B,GACJ,EAANmC,IAAShC,EAAGxD,EAAGuD,EAAGP,EAAG7B,GAC3BgD,EAAEd,GAAK,GAAK,EAEZutB,EADA1wB,EAAqB,EAAjB+yB,EAAGpxB,EAAGH,EAAG,EAAG2B,GACJ,EAANmC,IAAShC,EAAGxD,EAAGuD,EAAGP,EAAG7B,GAC3BgD,EAAEd,GAAK,GAAK,EAEZutB,EADA1wB,EAAqB,EAAjB+yB,EAAGpxB,EAAGH,EAAG,EAAG2B,GACJ,EAANmC,IAAShC,EAAGxD,EAAGuD,EAAGP,EAAG7B,KAhCzBkD,EAAIJ,CApBN,CAuDF,CAEA,SAASgvB,EAAGpxB,EAAGH,EAAG8B,EAAGxD,GACnB6B,GAAQ,EACRH,GAAQ,EACR8B,GAAQ,EAER,IAGI/B,EACAwD,EAJA1B,EAAI,EACJP,EAAI,EACJS,EAAI,EAIJJ,EAAI,EACJY,EAAI,EACJ/D,EAAI,EACJiB,EAAI,EAER,IAAiB,EAAZgD,GAZLnE,GAAQ,IAYI,IAAU,EAAG,CACvBuD,EAAI,EAEJ,GACEC,EAAY,EAARk1B,GAAGl1B,GACPD,EAAIA,EAAI,EAAI,SACA,EAAJA,IAAsB,EAAZY,EAAEnE,GAAK,IAC7B,CAEAyB,EAA2B,EAAvBmovC,GAAO,EAAJ/nvC,EAAW,EAAJH,EAAO,IACrB8D,IACAP,EAAQ,IAAJxD,EACJuB,EAAe,EAAX6mvC,GAAGhovC,EAAGH,GACV6B,EAA2B,EAAvBqmvC,GAAO,EAAJ/nvC,EAAW,EAAJH,EAAO,IACrB8D,IACAjC,GAAQ,GAER1B,EAAG,GAAK,GAAK0B,EAAoB,OAAU,CAezC,GAbArD,EAA8B,EAA1B0pvC,GAAO,EAAJ/nvC,EAAW,EAAJH,EAAW,GADzBuC,EAAmB,GAAd,GAAKV,EAAI,GAAS,IAEvBiC,IACAtF,GAAQ,EACRiB,EAAmB,IAAN,EAAR2ovC,GAAGvmvC,IACRA,EAAIA,GAAK,EAAI,EACbF,EAAsB,EAAlB2mhB,GAAG,EAAG,EAAO,EAAJ/lhB,GACbvC,KAAgB,EAAN8D,KAIV3D,GAHAoC,EAAyE,EAArE+lhB,GAAsD,EAAnD7lhB,GAAGhD,EAAI,IAAM,KAAW,GAAJjB,EAAS,IAAMsD,GAAK,IAAM,GAAQ,EAAO,EAAJS,IAGxDpC,GAAKwB,EACb3B,GAHU,EAAN8D,MACJhC,EAAwD,EAApDW,GAAGhD,EAAI,IAAM,MAAY,GAAJjB,EAAS,IAAMsD,GAAK,IAAM,IAI3C,CACNA,EAAI,EACJ,MAAM3B,CACR,CAEA,IAAK0B,EAAG,CACNE,EAAI,EACJ,KACF,CACF,MAxBkBA,EAAI,QAwBT,GAEE,IAAN,EAAJA,KAGH5B,GADA3B,EAAuB,EAAnB8phB,GAAO,GADX7ohB,EAA4C,EAAxCgD,EAAE,KAAW,GAAJc,EAAS,IAAMzB,GAAK,IAAM,IACzB,EAAG,IAEjB9B,EAAU,EAAN8D,KAAe,QAAL9D,EACd8B,EAA6C,EAAzCW,EAAE,MAAY,GAAJc,EAAS,IAAMzB,GAAK,IAAM,GAEnB,MAAZ,IAAJrC,EAAU,KACbA,EAAqD,EAAjD6ohB,GAAqC,EAAlC7lhB,EAAE,KAAW,GAAJc,EAAS,GAAK,IAAM,GAAQ,EAAG,IAC/CvD,EAAU,EAAN8D,KAAe,QAAL9D,EACd8B,EAAuC,EAAnCW,EAAE,MAAY,GAAJc,EAAS,GAAK,IAAM,GAClCpD,EAAmB,EAAfkovC,GAAG5ovC,EAAIU,EAAGH,GACdA,EAAU,EAAN8D,IACJrB,EAAEnE,GAAK,GAAuB,GAAL,EAAZmE,EAAEnE,GAAK,MAIxByD,EAA2B,EAAvBmmvC,GAAO,EAAJ/nvC,EAAW,EAAJH,EAAO,IACrB8D,IACA/B,GAAQ,IAERU,EAAG,GAAK,GAAc,EAARwuB,EAAGlvB,GAUV,CACL/B,EAAG,GAAK,GAAsB,IAAN,EAAXmovC,GAAGhovC,EAAGH,IAAc,CAC/B,IAAS,EAAJuD,KAAe,EAAJxB,GAAQ,CAAE,GAA6C,EAAzC+sB,EAAG/sB,EAAiC,EAA9BU,EAAE,MAAY,GAAJc,EAAS,IAAM,IAAa,CACxEpD,EAAe,EAAXmovC,GAAGnovC,EAAGH,GACVsB,EAAI,EACJtB,EAAU,EAAN8D,IACJ,KACF,CACE3D,EAAe,EAAXkovC,GAAGlovC,EAAGH,GACVsB,EAAI,EACJtB,EAAU,EAAN8D,IACJ,KACA,CAEF,OAAY,EAAJxC,GACN,KAAK,EAEDnB,EAAe,EAAXmovC,GAAGnovC,EAAGH,GACVA,EAAU,EAAN8D,IACJrB,EAAEnE,GAAK,GAAuB,GAAL,EAAZmE,EAAEnE,GAAK,IACpBgD,EAAI,EACJ,MAAMtB,EAGV,KAAK,EAEDG,EAAe,EAAXkovC,GAAGlovC,EAAGH,GACVA,EAAU,EAAN8D,IACJrB,EAAEnE,GAAK,GAAuB,GAAL,EAAZmE,EAAEnE,GAAK,IACpBgD,EAAI,EACJ,MAAMtB,EAGV,QAKI,OAFAP,EAAI,EACJ0E,EAAM,GAFN3F,EAAI,IAGO,EAAJiB,EAGf,MAAS6B,EAAI,QAAc,GAE3B,IAAS,EAAJQ,GAAS,EAAG,CACfD,EAAI,EAEJ,GACE1B,EAAe,EAAXoovC,GAAGpovC,EAAGH,GACVA,EAAU,EAAN8D,IACJjC,EAAIA,EAAI,EAAI,SACA,EAAJA,KAAe,EAAJC,GACvB,CAEA,IAAS,EAAJyB,KAAe,EAAJxB,GAAQ,CACtB,KAAc,EAARqwB,EAAGrwB,IAAS,CAChB,GAAe,IAAN,EAAJT,GAAgC,IAAN,EAAX6mvC,GAAGhovC,EAAGH,IAAgB,MAC1CyC,EAAEnE,GAAK,GAAuB,GAAL,EAAZmE,EAAEnE,GAAK,IACpB,KACF,CAEA,OAAY,IAAJyB,GACN,KAAK,EACL,KAAK,IACH,MAAM0C,EAMY,IAAN,EAAX0lvC,GAAGhovC,EAAGH,MAAgByC,EAAEnE,GAAK,GAAuB,GAAL,EAAZmE,EAAEnE,GAAK,IACjD,CACF,MAhFE,IAAS,EAAJwD,GAAS,EAAG,CACfD,EAAI,EAEJ,GACE1B,EAAe,EAAXkovC,GAAGlovC,EAAGH,GACVA,EAAU,EAAN8D,IACJjC,EAAIA,EAAI,EAAI,SACA,EAAJA,KAAe,EAAJC,GACvB,QAwES,GAMX,OAJAW,EAAEnE,GAAK,KAAmB,EAAZmE,EAAEnE,GAAK,IAAUwD,EAAI,GAAK,EAAI,EAE5CrC,EAAIU,EACJgE,EAAM,GAFN3F,EAAIwB,IAGO,EAAJP,CACT,CA2kBA,SAAS4tB,EAAGltB,EAAGH,EAAG8B,EAAGD,EAAGP,EAAGS,GAEzB/B,GAAQ,EACR8B,GAAQ,EACRD,GAAQ,EACRP,GAAQ,EACRS,GAAQ,EACR,IAWIxD,EACAiD,EACAY,EACAM,EACAU,EACAjB,EACA2C,EACAd,EAEAV,EApBAvD,EAAI,EACJwD,EAAI,EACJV,EAAI,EACJlB,EAAI,EACJY,EAAI,EACJ/D,EAAI,EACJiB,EAAI,EACJwC,EAAI,EACJoD,EAAI,EACJnG,EAAI,EACJe,EAAI,EASJiF,EAAI,EAEJR,EAAI,EACJb,EAAI,EAQR,GAPAP,EAAIX,EACJA,EAAIA,EAAI,GAAK,EACbR,EAAImB,EAAI,GAAK,EACbwB,EAAIxB,EAAI,GAAK,EACbU,EAAIV,GAGK,GAFTvD,EAAgB,EAAZ0C,GAlCJtC,GAAQ,IAkCG,MAEI,EAGb,OADAwC,EAAIW,EACG4B,EAGT3G,EAAI4B,EAAI,EAAI,EACZqB,EAAIW,EAAI,EAAI,EACZC,EAAI0C,EAAI,EAAI,EACZpC,EAAIsB,EAAI,EAAI,EACZZ,IAAU,EAAJpD,GAAS,IAAM,IAAM,GAC3BC,EAAI,EAEJE,EAAG,OAAU,CAEXkF,GADA9B,EAAgB,EAAZd,EAAElE,GAAK,KACF0B,GAAK,GAAK,EACnBwC,EAAEN,GAAK,GAAKM,EAAE4C,GAAK,GACnB5C,EAAEN,EAAI,GAAK,GAAKM,EAAE4C,EAAI,GAAK,GAC3B5C,EAAEN,EAAI,GAAK,GAAKM,EAAE4C,EAAI,GAAK,GAC3B5C,EAAEN,EAAI,IAAM,GAAKM,EAAE4C,EAAI,IAAM,IAEpB,EAAJpF,KAAWF,GAAK,EAAI,IACvB0C,EAAEqC,GAAK,GAAKrC,EAAEc,GAAK,GACnBd,EAAEqC,EAAI,GAAK,GAAKrC,EAAEc,EAAI,GAAK,GAC3Bd,EAAEqC,EAAI,GAAK,GAAKrC,EAAEc,EAAI,GAAK,GAC3Bd,EAAEqC,EAAI,IAAM,GAAKrC,EAAEc,EAAI,IAAM,KAE7B8B,EAAI9B,GAAKtD,EAAI,GAAK,GAAK,EACvBwC,EAAEqC,GAAK,GAAKrC,EAAE4C,GAAK,GACnB5C,EAAEqC,EAAI,GAAK,GAAKrC,EAAE4C,EAAI,GAAK,GAC3B5C,EAAEqC,EAAI,GAAK,GAAKrC,EAAE4C,EAAI,GAAK,GAC3B5C,EAAEqC,EAAI,IAAM,GAAKrC,EAAE4C,EAAI,IAAM,IAG/BA,EAAkB,EAAdmjvC,EAAGrmvC,EAAG2C,EAAGhD,GAEbW,EAAG,GAAK,IAAS,EAAJ4C,GAAS,EAAG,CACvBnG,IAAU,EAAJmG,GACNpD,EAAI,EAEJjC,EAAG,OAAU,CACX6D,IAAMwB,EAAIpD,EAAI,GACdyC,IAAU,EAAJzC,GACN3D,EAAE0F,GAAK,IAAM1F,EAAE6D,GAAK,GAAK0B,EAAI3E,IAAKZ,EAAEwG,GAAK,GAAKJ,EAAIxF,EAClDZ,EAAEoE,GAAK,IAAMpE,EAAEkD,GAAK,GAAKqC,EAAI3E,IAAKZ,EAAE8D,GAAK,GAAKsC,EAAIxF,EAGlDqE,EAAqC,EAAjC0kvC,GAAO,GAFXzpvC,EAAe,EAAXiqvC,GAAGzkvC,EAAGlC,IAEQ,GADlBrC,EAAU,EAANqE,KACqB,EAAJ9D,EAAW,EAAJoD,GAC5BU,IAGAnC,EAAgB,EAAZc,GADJI,EADA9C,EAAIgC,GAAKwB,GAAK,GAAK,IAER,GACXV,EAAoB,EAAhBJ,EAAEI,EAAI,GAAK,GAEff,EAAG,GAAK,GAAe,IAAN,EAAJH,GAAyB,IAAN,EAAJkB,GAAeqC,EAAI,QAG7C,IAFA3C,EAAI,IAEM,CACR,IAAS,EAAJA,IAAc,EAAJvC,GAAQ,CACrBD,EAAI,EACJ,MAAM+B,CACR,CAEA,IAAS,EAAJH,KAAe,EAAJnD,IAAc,EAAJqE,KAAe,EAAJpD,GAAQ,CAC3CM,EAAI,EACJ,MAAM+B,CACR,CAQA,GAAe,IAAN,GAHTH,EAAgB,EAAZc,GADJI,EADA9C,EAAIgC,IADJwB,GAAKA,EAAI,EAAI,IAAU,EAAJvD,GAAS,IACd,GAAK,IAER,KAGmB,IAAN,GAFxB6C,EAAoB,EAAhBJ,EAAEI,EAAI,GAAK,KAEkB,CAC/BqC,EAAI,GACJ,KACF,CAAS3C,EAAIA,EAAI,EAAI,CACvB,QACS,GAgBX,OAde,KAAN,EAAJ2C,KACHA,EAAI,EACW,IAAN,EAAJ1G,GAAyB,IAAN,EAAJiB,GAAeM,EAAI,GACrC0C,EAAE1C,GAAK,GAAKvB,EACZiE,EAAE1C,EAAI,GAAK,GAAKN,EAChBM,EAAgB,EAAZ0C,EAAEZ,GAAK,GAEXY,GADAF,EAAIjB,GAAKvB,GAAK,GAAK,IACZ,GAAKvB,EACZiE,EAAEF,EAAI,GAAK,GAAK9C,EAChBgD,EAAEZ,GAAK,GAAK9B,EAAI,EAChBA,EAAI,IAII,EAAJA,GACN,KAAK,EACL,KAAK,EACH,MAEF,QACE,MAAMC,EAKV,IAAS,EAAJqF,KAAe,GAFpBpD,EAAIA,EAAI,EAAI,IAEY,CACtBiD,EAAI,EACJ,MAAMzC,CACR,CACF,CAEA,GAAQ,EAAJ1C,EAAO,CACTA,GAAK,EACLmF,EAAI,GACJ,MAAM/E,CACR,CACF,MAAS+E,EAAI,QAAc,GAM3B,GAJe,IAAN,EAAJA,KAAeA,EAAI,IAIf,GAHTjF,EAAIA,EAAI,EAAI,MAGQ,GAFpBF,EAAgB,EAAZ0C,EAAEtC,GAAK,KAEa,CACtBJ,EAAI,EACJmF,EAAI,GACJ,KACF,CACF,CAEA,OAAe,KAAN,EAAJA,IACHvC,EAAIW,EACO,EAAJvD,GAGF,CACT,CAsGA,SAASkxB,EAAG9wB,GAEV,OAA0C,EAAnCsC,EAAE,MAAY,IADrBtC,GAAQ,GACkB,GAAK,IAAM,EACvC,CAEA,SAASiyB,EAAGjyB,GAEV,OAAkB,IAAN,GADZA,GAAQ,IACyB,MAAN,EAAJA,GAAgB,CACzC,CAEA,SAASuuB,EAAGvuB,GAEV,OAA+I,EAAxIsC,EAAE,OAA2B,KAAL,EAAZA,GADnBtC,GAAQ,IACkB,IAAgB,IAA4B,IAAL,EAAhBsC,EAAEtC,EAAI,GAAK,IAAe,IAA4B,IAAL,EAAhBsC,EAAEtC,EAAI,GAAK,IAAe,IAAMsC,EAAEtC,EAAI,IAAM,IAAM,IAAM,EAC5I,CAEA,SAAS8uB,EAAG9uB,GAEV,OAAmJ,EAA5IsC,EAAE,OAA2B,KAAL,EAAZA,GADnBtC,GAAQ,IACkB,IAAgB,IAA4B,IAAL,EAAhBsC,EAAEtC,EAAI,GAAK,IAAe,IAA4B,IAAL,EAAhBsC,EAAEtC,EAAI,GAAK,IAAe,IAAMsC,EAAEtC,EAAI,IAAM,IAAM,GAAK,GAAK,EAChJ,CAyMA,SAAS2uB,EAAG3uB,EAAGH,GAIb,OAFAA,GAAQ,GAEgC,EAAnCyC,EAAE,MAAY,IAHnBtC,GAAQ,GAGgB,GAAK,IAAM,MAAgB,EAAJH,GAElC,GADXA,EAAI,GAKK,GADXA,GAAwC,EAAnCyC,EAAE,MAAY,GAAJtC,EAAS,GAAK,IAAM,MAAgB,EAAJH,GAEjD,CAEA,SAASqwB,EAAGlwB,EAAGH,GAGb,OAA+C,EAAxCyC,EAAE,KAAW,IAFpBtC,GAAQ,GAEiB,KADzBH,GAAQ,IAC4B,IAAM,EAC5C,CAEA,SAASuuB,EAAGpuB,EAAGH,GAIb,OAFAA,GAAQ,GAE0B,EAA7ByC,EAAE,KAAW,IAHlBtC,GAAQ,GAGe,IAAM,MAAgB,EAAJH,GAE5B,GADXA,EAAI,IAIgC,EAAjCyC,EAAE,KAAW,GAAJtC,EAAS,GAAK,GAAK,MAAgB,EAAJH,GAEhC,GADXA,EAAI,IAIgC,EAAjCyC,EAAE,KAAW,GAAJtC,EAAS,GAAK,GAAK,MAAgB,EAAJH,GAEhC,GADXA,EAAI,IAIiC,EAAlCyC,EAAE,KAAW,GAAJtC,EAAS,GAAK,IAAM,MAAgB,EAAJH,GAEjC,GADXA,EAAI,IAIiC,EAAlCyC,EAAE,KAAW,GAAJtC,EAAS,GAAK,IAAM,MAAgB,EAAJH,GAEjC,GADXA,EAAI,IAIiC,EAAlCyC,EAAE,KAAW,GAAJtC,EAAS,GAAK,IAAM,MAAgB,EAAJH,GAEjC,GADXA,EAAI,GAEuE,IAAzB,EAAlCyC,EAAE,KAAW,GAAJtC,EAAS,GAAK,IAAM,MAAgB,EAAJH,GAAS,EAAI,EAG1E,CAyBA,SAAS2zB,EAAGxzB,GAEV,OAAQ7B,EAAM,IADd6B,GAAQ,IACY,IAAM7B,EAAE6B,EAAI,IAAM,GAAK,CAC7C,CAEA,SAAS81B,EAAG91B,EAAGsC,GACbtC,GAAQ,EAER,IACI2B,EACAD,EAFA7B,EAAI,EAKR,OAFAA,GAAK1B,GAJLmE,GAAQ,IAII,MAEAnE,EAAE6B,EAAI,GAAK,IAKjBH,IAAM1B,EAAE6B,GAAK,IAKnB2B,GAAKxD,EAAE6B,EAAI,IAAM,GACjBH,GAAK1B,EAAE6B,EAAI,IAAM,GAEjBsC,GADAZ,GAAKvD,EAAEmE,EAAI,GAAK,KACPzC,EACTG,EAAI0B,GAAKC,EAAI,EAETA,EAAI9B,EACFyC,IAAKtC,EAAI,GACHsC,IAAKtC,EAAI,GAGV,GADXsC,EAAe,IAAN,EAAJtC,KAlBQ,GADXsC,EAAI,EAqBR,CAEA,SAASsvB,EAAG5xB,EAAGH,GACbG,GAAQ,EACRH,GAAQ,EACR,IAAI8B,EACAD,EACAP,EAEAvB,EAEA8C,EACAlB,EAJAI,EAAI,EAEJwB,EAAI,EAGRxD,EAAI4C,EACJA,EAAIA,EAAI,IAAM,EACdb,EAAI/B,EAAI,IAAM,EACd8B,EAAI9B,EAAI,GAAK,EAGbwD,GADAxB,EADAT,EAAIvB,GAEI,GAAK,EAEb,GACE0C,EAAEV,GAAK,GAAK,EACZA,EAAIA,EAAI,EAAI,SACA,EAAJA,IAAc,EAAJwB,IAmBpB,OAjBAopD,GAAG3sD,EAAGsB,GAKNonvC,GAFAnlvC,EAAgB,EAAZd,GADJV,EAAIT,IACO,GACXS,EAAoB,EAAhBU,EAAEV,EAAI,GAAK,GACND,GACT6mvC,GAAGplvC,EAAGxB,EAAGF,GACTgB,GAAK+lvC,GAAG9mvC,EAAGD,EAAI,EAAI,GACnBvD,EAAEwD,GAAK,IAAMxD,EAAE6B,GAAK,GAEpB7B,GADAyD,EAAID,EAAI,EAAI,IACL,IAAMxD,EAAE6B,EAAI,IAAM,GACzB7B,EAAEuD,GAAK,IAAMvD,EAAE6B,EAAI,GAAK,GAExB7B,GADAiF,EAAI1B,EAAI,EAAI,IACL,IAAMvD,EAAE6B,EAAI,IAAM,GACzBwB,GAAKinvC,GAAG9mvC,EAAGD,GACX0B,KAAOS,GAAIrC,EAAIA,GAAKknvC,MAAMxjvC,KAAM/G,EAAEyD,GAAK,IAAMzD,EAAEiF,GAAK,MAAQjF,EAAEwD,GAAK,IAAMxD,EAAEuD,GAAK,KAAO,IAAQgB,GAAS,cAAJA,GAAqB,KACzHF,EAAI5C,EAC4B,GAAb,IAAN,EAAJwD,GAAc,EAAIA,EAC7B,CAEA,SAASilvC,EAAGrovC,EAAGH,EAAG8B,GAChB3B,GAAQ,EACRH,GAAQ,EACR8B,GAAQ,EACR,IAAIxD,EACAuD,EACAP,EAEAvB,EAEA8C,EAHAd,EAAI,EAEJwB,EAAI,EAERxD,EAAI4C,EACJA,EAAIA,EAAI,IAAM,EACdrE,EAAIyB,EAAI,IAAM,EACd8B,EAAI9B,EAAI,GAAK,EAGbwD,GADAxB,EADAT,EAAIvB,GAEI,GAAK,EAEb,GACE0C,EAAEV,GAAK,GAAK,EACZA,EAAIA,EAAI,EAAI,SACA,EAAJA,IAAc,EAAJwB,IAYpB,OAVAopD,GAAG7qD,EAAGR,GAKNonvC,GAFA3mvC,EAAgB,EAAZU,GADJc,EAAIjC,IACO,GACXiC,EAAoB,EAAhBd,EAAEc,EAAI,GAAK,GACNjF,GACTqqvC,GAAG5mvC,EAAGwB,EAAG1B,GACTgB,GAAK+lvC,GAAGtqvC,EAAGuD,EAAI,EAAI,GACnB0B,KAAOS,KAAK4kvC,GAAGzovC,EAAGH,IAAU,EAAJ6C,IACxBF,EAAI5C,EAC4B,GAAb,IAAN,EAAJwD,GAAc,EAAIA,EAC7B,CAEA,SAASszB,EAAG12B,EAAGH,EAAG8B,EAAGxD,GAEnB0B,GAAQ,EACR8B,GAAQ,EACRxD,GAAQ,EACRmE,GAJAtC,GAAQ,IAID,GAAKH,EACZyC,EAAEtC,EAAI,GAAK,GAAK2B,EAChBW,EAAEtC,EAAI,GAAK,GAAK7B,CAElB,CAEA,SAASwqvC,EAAG3ovC,EAAGH,GACbG,GAAQ,EAER,IAGI4B,EAGAc,EACAlB,EAEAnD,EATAsD,EAAI,EACJD,EAAI,EACJP,EAAI,EAEJvB,EAAI,EACJwD,EAAI,EAGJhB,EAAI,EAEJ9C,EAAI,EAERgD,GADAjE,EAAQ,GAZRwB,GAAQ,GAYI,IACL,GAAK,EACZ6C,GAAKvE,EAAE6B,GAAK,GACZJ,GAAKsF,GAAGxC,GACRlB,GAAKrD,EAAE6B,EAAI,GAAK,GAEhBJ,GAAY,IADZwD,GAAK8B,GAAG1D,GAAK,mBAIb5B,KAAc,GAFd+B,IAAM/B,IAGNwD,KAAc,GAFdpD,IAAMoD,IAIN,EAAG,CAAE,GAAIxD,EAAI,GAAI,CACf,GAAIA,EAAI,kBAAmB,CAGzB,GAFA0C,EAAEzC,GAAK,GAAK8B,EAERyB,EAAgB,IAAXxD,EAAI,GAAW,CACtB0C,EAAEzC,EAAI,GAAK,GAAKG,EAChB,KACF,CACEA,EAAIA,EAAI,EAAI,EACZsC,EAAEzC,EAAI,GAAK,GAAKG,EAChB,KAEJ,CAKE,GAHAA,GAAgB,IAAToD,GADP9D,EAAI,EAAMM,KACWI,EAAI,EACzBsC,EAAEzC,EAAI,GAAK,GAAKG,EAEZV,GAAK8D,EAAIA,EAAQ,EAAJxD,EAAS,CACxB+B,EAAIA,EAAI,EAAI,EACZW,EAAEzC,GAAK,GAAK8B,EACZ,KACF,CACEW,EAAEzC,GAAK,GAAK8B,EACZ,KAGN,CACE,KAAM/B,EAAI,mBAAoB,CAI5B,GAHA+B,EAAIA,EAAI,EAAI,EACZW,EAAEzC,GAAK,GAAK8B,EAERyB,EAAQ,GAAJxD,EAAQ,CACd0C,EAAEzC,EAAI,GAAK,GAAKG,EAChB,KACF,CACEA,EAAIA,EAAI,EAAI,EACZsC,EAAEzC,EAAI,GAAK,GAAKG,EAChB,KAEJ,CAEA,GAAIoD,EAAI,EAAMxD,GAGZ,GAFA0C,EAAEzC,EAAI,GAAK,GAAKG,EAER,EAAJJ,EAAW,EAAMwD,EAAG,CACtBd,EAAEzC,GAAK,GAAK8B,EACZ,KACF,OAEA3B,EAAIA,EAAI,EAAI,EACZsC,EAAEzC,EAAI,GAAK,GAAKG,EAGlB2B,EAAIA,EAAI,EAAI,EACZW,EAAEzC,GAAK,GAAK8B,CACZ,OAAS,GAEX,GAAK,GAAIe,EAAI,EAAK,CAAE,GAAU,EAAJ1C,EAMnB,CAGL2B,OAAa,EAAJA,IAAqD,MAD9DS,EAAqF,EAAjFiiB,GAAO,EAAJ1iB,IAAa,EAAJA,GAAS,IAAM,IAAM,GAAK,EAAO,GADjDS,GAAKpC,EAAI,EAAI,GAAK,EAAI,KACoC,EAAJoC,GAAS,IAAM,IAAM,GAAK,MACpD,GAAK,aAAuB,EAANuB,MAAkB,IACpErB,EAAEzC,GAAK,GAAK8B,EACZ,KACF,CATEA,OAAa,EAAJA,GAAoD,MAD7DS,EAAqF,EAAjFiiB,GAAO,EAAJ1iB,IAAa,EAAJA,GAAS,IAAM,IAAM,GAAK,EAAO,GADjDS,GAAS,EAAJpC,GAAS,EAAI,KACwC,EAAJoC,GAAS,IAAM,IAAM,GAAK,MACrD,GAAK,aAAuB,EAANuB,OACjDrB,EAAEzC,GAAK,GAAK8B,EACZ,KAOA,QAAW,GAEbS,EAAIvC,EAAI,EAAI,EAER2B,EAAI,IACNG,EAAIA,IAAe,EAAT3B,GAAK,GAAa,EAAI,GAAK,EACrCsC,EAAEzC,GAAK,GAAK8B,EACZ3B,EAAI,EAAIA,EAAI,EACZsC,EAAEF,GAAK,GAAKpC,GAGd0B,EAAI1B,EAAI2B,EAAI,GAEH,EAAJA,GAAS,GACZR,EAAI,EAAIQ,EAAI,EACZW,EAAEF,GAAK,GAAKV,EACZY,EAAEjE,GAAK,GAAK8C,EACZmB,EAAEzC,GAAK,GAAK,EACZG,EAAI0B,EACJC,EAAI,GACGR,EAAI,GAEJ,EAAJnB,GAAS,IACZ2B,EAAIA,EAAI3B,EAAI,EACZsC,EAAEzC,GAAK,GAAK8B,EACZR,EAAIA,EAAInB,EAAI,EACZsC,EAAEjE,GAAK,GAAK8C,EACZmB,EAAEF,GAAK,GAAK,EACZpC,EAAI,GAGN4B,EAAID,EAAIR,EAAI,EACZO,EAAI1B,EAAImB,EAAI,GAEH,EAAJA,GAAS,IACZmB,EAAEzC,GAAK,GAAK+B,EACZU,EAAEF,GAAK,GAAKV,EACZY,EAAEjE,GAAK,GAAK,EACZ2B,EAAI0B,EACJC,EAAIC,EACJT,EAAI,IAKG,GADTO,GAAS,EAAJP,IAAc,GADnBO,GAAS,EAAJ1B,IAAc,EAAJ2B,GAAS3B,EAAI2B,IACJR,EAAIO,KACb,IACfY,EAAEzC,GAAK,GAAK8B,EAAID,EAChBY,EAAEF,GAAK,GAAKpC,EAAI0B,EAChBY,EAAEjE,GAAK,GAAK8C,EAAIO,EAElB,CAEA,SAASy0B,EAAGn2B,GAEV,IAKI4B,EALA/B,EAAI,EACJ8B,EAAI,EACJxD,EAAI,EACJuD,EAAI,EACJP,EAAI,EAERtB,EAAgB,EAAZyC,GAPJtC,GAAQ,IAOG,GAEX2B,EAAgB,EAAZW,GADJV,EAAI5B,EAAI,EAAI,IACD,IAEF,EAAJH,GAAS,IACZ8B,EAAIA,EAAI9B,EAAI,EACZyC,EAAEV,GAAK,GAAKD,EAEZW,GADAnB,EAAInB,EAAI,EAAI,IACL,IAAkB,EAAZsC,EAAEnB,GAAK,IAAUtB,EAC9ByC,EAAEtC,GAAK,GAAK,EACZH,EAAI,IAGG,EAAJ8B,GAAS,GACZ9B,EAAIA,EAAI8B,EAAI,EACZW,EAAEtC,GAAK,GAAKH,EAEZ6B,GAAiB,EAAZY,GADLnB,EAAInB,EAAI,EAAI,IACA,IAAU2B,EAAI,EAC1BW,EAAEnB,GAAK,GAAKO,EACZY,EAAEV,GAAK,GAAK,EACZD,EAAI,IAGJR,EADAO,EAAI1B,EAAI,EAAI,EAEZ0B,EAAgB,EAAZY,EAAEZ,GAAK,KAGJ,EAAJA,GAAS,IACZ7B,EAAIA,EAAI6B,EAAI,EACZY,EAAEtC,GAAK,GAAKH,EACZ8B,EAAIA,EAAID,EAAI,EACZY,EAAEV,GAAK,GAAKD,EACZW,EAAEnB,GAAK,GAAK,EACZO,EAAI,IAKG,GADTvD,GAAS,EAAJuD,IAAc,GADnBvD,GAAS,EAAJwD,IAAc,EAAJ9B,GAAS8B,EAAI9B,IACJ6B,EAAIvD,KACb,IACfmE,EAAEtC,GAAK,GAAKH,EAAI1B,EAChBmE,EAAEV,GAAK,GAAKD,EAAIxD,EAChBmE,EAAEnB,GAAK,GAAKO,EAAIvD,EAElB,CAEA,SAASyqvC,EAAG5ovC,EAAGH,GAGb,IAAI8B,EACAD,EAFJ7B,GAAQ,EAGR6B,EAAoB,EAAhBY,EAAM,GAJVtC,GAAQ,IAIO,GACf2B,KAAuB,EAAhBW,EAAEtC,EAAI,GAAK,IAAU0B,EAAI,GAChCvD,EAAE0B,GAAK,MAAoB,EAAZyC,EAAEtC,GAAK,IAAU0B,EAAI,GAAS,GAAJC,EACzCxD,EAAE0B,EAAI,GAAK,GAAS,kBAAJ8B,CAElB,CAEA,SAAS00B,EAAGr2B,EAAGH,EAAG8B,GAChB3B,GAAQ,EACRH,GAAQ,EAERyC,GADAX,GAAQ,IACD,IAAkB,EAAZW,EAAEzC,GAAK,KAAuB,EAAZyC,EAAEtC,GAAK,IACtCsC,EAAEX,EAAI,GAAK,IAAsB,EAAhBW,EAAEzC,EAAI,GAAK,KAA2B,EAAhByC,EAAEtC,EAAI,GAAK,IAClDsC,EAAEX,EAAI,GAAK,IAAsB,EAAhBW,EAAEzC,EAAI,GAAK,KAA2B,EAAhByC,EAAEtC,EAAI,GAAK,GAEpD,CAEA,SAASi3B,EAAGj3B,EAAGH,EAAG8B,GAChB3B,GAAQ,EACRH,GAAQ,EAERyC,GADAX,GAAQ,IACD,IAAkB,EAAZW,EAAEtC,GAAK,KAAuB,EAAZsC,EAAEzC,GAAK,IACtCyC,EAAEX,EAAI,GAAK,IAAsB,EAAhBW,EAAEtC,EAAI,GAAK,KAA2B,EAAhBsC,EAAEzC,EAAI,GAAK,IAClDyC,EAAEX,EAAI,GAAK,IAAsB,EAAhBW,EAAEtC,EAAI,GAAK,KAA2B,EAAhBsC,EAAEzC,EAAI,GAAK,GAEpD,CAEA,SAAS42B,EAAGz2B,EAAGH,GAEbA,GAAQ,EACR,IACI1B,EADAwD,EAAI,EAERA,EAA0B,EAAtBoD,EAAc,EAAZzC,GAJNtC,GAAQ,IAIK,GAAQH,GACrByC,EAAEtC,GAAK,GAAK2B,EAEZxD,EAA0B,EAAtB4G,EAAc,EAAZzC,GADNX,EAAI3B,EAAI,EAAI,IACC,GAAQH,GACrByC,EAAEX,GAAK,GAAKxD,EAEZ0B,EAA0B,EAAtBkF,EAAc,EAAZzC,GADNtC,EAAIA,EAAI,EAAI,IACC,GAAQH,GACrByC,EAAEtC,GAAK,GAAKH,CAEd,CAEA,SAASgpvC,GAAG7ovC,GAEV,IAIImB,EACAS,EALA/B,EAAI,EACJ8B,EAAI,EACJxD,EAAI,EACJuD,EAAI,EAGJ9B,EAAI,EAERA,GAAS,GADTgC,EAAgB,EAAZU,GARJtC,GAAQ,IAQG,KACG,EAWdA,GANAA,GADA2B,GAAS,GADTD,IADAP,GAAS,GADThD,GAAqB,EAAhBmE,EAAEtC,EAAI,GAAK,KAAWJ,EAAIgC,EAAI,GAAK,IAC1B,GACL,EAAIzD,EAAI,EAAI,KAAuB,EAAhBmE,EAAEtC,EAAI,GAAK,KAAWJ,EAAIgC,EAAI,IAAM,IAClD,GACN,EAAIF,KAKZvD,GAAS,GADTwD,GAAS,EAAJ3B,IAAc,GADnB2B,GAAS,GAFT9B,GAAKsB,EAAI,EAAIhD,IAAMwD,EAAID,EAAI,GAAK,KAEb,GADnBA,GAAK9B,EAAI,EAAIgC,IAAMT,EAAIhD,EAAI,IAAMwD,EAAID,EAAI,GAAK,IACtB7B,EAAI6B,IACJ1B,EAAI2B,IACd,GACDA,EAAI,GAAK,EACtB9B,EAAIA,GAAK1B,EAAIwD,EAAI,GAAK,EAEtB3B,EAAG,GAAK,OAAQ0B,GAAKvD,EAAIwD,EAAI,GAAK,GAChC,KAAK,EACH,OAAY,EAAJ9B,GACN,KAAK,EAGD,OAAW,GADI,IAAN,EAAJG,GAAc,EAAe,IAAN,EAAJA,GAAc,EAAI,GAI9C,KAAK,EAGD,OAAW,GADI,IAAN,EAAJA,GAAc,EAAe,IAAN,EAAJA,GAAc,EAAI,GAI9C,QACE,MAAMA,EAGZ,KAAK,EACH,OAAY,EAAJH,GACN,KAAK,EAGD,OAAW,GADI,IAAN,EAAJG,GAAc,EAAe,IAAN,EAAJA,GAAc,EAAI,GAI9C,KAAK,EAED,GAAKA,EAAoB,MAAMA,EAC/B,OAAOA,EAGX,QACE,MAAMA,UAKH,GAGX,OAAOJ,CACT,CAEA,SAASg2B,GAAG51B,GAEV,IAKI4B,EACAhC,EANAC,EAAI,EACJ8B,EAAI,EACJxD,EAAI,EACJuD,EAAI,EACJP,EAAI,EAIRQ,EAAgB,EAAZW,GADJV,EAAQ,GARR5B,GAAQ,GAQI,IACD,GAIX7B,EAAuC,EAAnC2uB,MAAU,GAHdjtB,GAAiB,EAAZyC,EAAEtC,GAAK,IAAU2B,EAAI,GAGR,IADlBA,GAAiB,EAAZW,GADL1C,EAAII,EAAI,EAAI,IACA,IAAU2B,EAAI,GACC,GAAK,GAChCW,EAAEtC,GAAK,GAAK7B,EACZ0B,EAAoC,EAAhCitB,MAAMnrB,GAAK,GAAK9B,EAAI,GAAK,GAC7ByC,EAAE1C,GAAK,GAAKC,EACZyC,EAAEV,GAAK,GAAK,EACZD,EAAI9B,EAAI1B,EAAI,GAEH,EAAJA,GAAS,GACZgD,EAAI,EAAIhD,EAAI,EACZmE,EAAE1C,GAAK,GAAK+B,EACZW,EAAEV,GAAK,GAAKT,EACZmB,EAAEtC,GAAK,GAAK,EACZH,EAAI8B,EACJxD,EAAI,EACJwD,EAAIR,GACGQ,EAAI,GAEJ,EAAJ9B,GAAS,IACZ1B,EAAIA,EAAI0B,EAAI,EACZyC,EAAEtC,GAAK,GAAK7B,EACZwD,EAAIA,EAAI9B,EAAI,EACZyC,EAAEV,GAAK,GAAKD,EACZW,EAAE1C,GAAK,GAAK,EACZC,EAAI,GAGNsB,EAAIhD,EAAIwD,EAAI,EACZD,EAAI7B,EAAI8B,EAAI,GAEH,EAAJA,GAAS,GACZW,EAAEtC,GAAK,GAAKmB,EACZmB,EAAE1C,GAAK,GAAK8B,EACZY,EAAEV,GAAK,GAAK,EACZ/B,EAAI6B,EACJA,EAAIP,EACJQ,EAAI,GACGD,EAAIvD,GAIJ,GADTA,GAAS,EAAJwD,IAAc,GADnBxD,GAAS,EAAJ0B,IAAc,EAAJ6B,GAAS7B,EAAI6B,IACJC,EAAIxD,KACb,IACfmE,EAAEtC,GAAK,GAAK0B,EAAIvD,EAChBmE,EAAE1C,GAAK,GAAKC,EAAI1B,EAChBmE,EAAEV,GAAK,GAAKD,EAAIxD,EAElB,CAEA,SAAS2qvC,GAAG9ovC,GAEV,IAKI4B,EACAhC,EANAC,EAAI,EACJ8B,EAAI,EACJxD,EAAI,EACJuD,EAAI,EACJP,EAAI,EAIRQ,EAAgB,EAAZW,GADJV,EAAQ,GARR5B,GAAQ,GAQI,IACD,GAIX7B,EAAoC,EAAhC2uB,OAHJjtB,GAAiB,EAAZyC,EAAEtC,GAAK,IAAU2B,EAAI,IAGX,IADfA,GAAiB,EAAZW,GADL1C,EAAII,EAAI,EAAI,IACA,IAAU2B,EAAI,GACF,GAAK,GAC7BW,EAAEtC,GAAK,GAAK7B,EACZ0B,EAAuC,EAAnCitB,MAAU,EAAJnrB,EAAQ,GAAK9B,EAAI,GAAK,GAChCyC,EAAE1C,GAAK,GAAKC,EACZyC,EAAEV,GAAK,GAAK,EACZD,EAAI9B,EAAI1B,EAAI,GAEH,EAAJA,GAAS,GACZgD,EAAI,EAAIhD,EAAI,EACZmE,EAAE1C,GAAK,GAAK+B,EACZW,EAAEV,GAAK,GAAKT,EACZmB,EAAEtC,GAAK,GAAK,EACZH,EAAI8B,EACJxD,EAAI,EACJwD,EAAIR,GACGQ,EAAI,GAEJ,EAAJ9B,GAAS,IACZ1B,EAAIA,EAAI0B,EAAI,EACZyC,EAAEtC,GAAK,GAAK7B,EACZwD,EAAIA,EAAI9B,EAAI,EACZyC,EAAEV,GAAK,GAAKD,EACZW,EAAE1C,GAAK,GAAK,EACZC,EAAI,GAGNsB,EAAIhD,EAAIwD,EAAI,EACZD,EAAI7B,EAAI8B,EAAI,GAEH,EAAJA,GAAS,GACZW,EAAEtC,GAAK,GAAKmB,EACZmB,EAAE1C,GAAK,GAAK8B,EACZY,EAAEV,GAAK,GAAK,EACZ/B,EAAI6B,EACJA,EAAIP,EACJQ,EAAI,GACGD,EAAIvD,GAIJ,GADTA,GAAS,EAAJwD,IAAc,GADnBxD,GAAS,EAAJ0B,IAAc,EAAJ6B,GAAS7B,EAAI6B,IACJC,EAAIxD,KACb,IACfmE,EAAEtC,GAAK,GAAK0B,EAAIvD,EAChBmE,EAAE1C,GAAK,GAAKC,EAAI1B,EAChBmE,EAAEV,GAAK,GAAKD,EAAIxD,EAElB,CAEA,SAAS4qvC,GAAG/ovC,GAEV,IAIImB,EACAS,EACAhC,EANAC,EAAI,EACJ8B,EAAI,EACJxD,EAAI,EACJuD,EAAI,EAIR7B,EAAgB,EAAZyC,GARJtC,GAAQ,IAQG,GAEX2B,EAAgB,EAAZW,GADJV,EAAI5B,EAAI,EAAI,IACD,GAEX7B,EAAgB,EAAZmE,GADJ1C,EAAII,EAAI,EAAI,IACD,GACX0B,EAAIC,GAAS,EAAJ9B,EAAQ,GAAK,EACtByC,EAAEtC,GAAK,GAAK0B,EACZC,EAAIxD,GAAS,EAAJwD,EAAQ,GAAK,EACtBW,EAAEV,GAAK,GAAKD,EACZ9B,GAAS,EAAJ1B,EAAQ,GAAK0B,EAAI,EACtByC,EAAE1C,GAAK,GAAKC,EACZ1B,EAAIwD,EAAID,EAAI,GAEH,EAAJA,GAAS,GACZ7B,EAAIA,EAAI6B,EAAI,EACZY,EAAEV,GAAK,GAAKzD,EACZmE,EAAE1C,GAAK,GAAKC,EACZyC,EAAEtC,GAAK,GAAK,EACZ2B,EAAIxD,EACJA,EAAI,GACGA,EAAIuD,GAEJ,EAAJC,GAAS,IACZxD,EAAIA,EAAIwD,EAAI,EACZW,EAAEtC,GAAK,GAAK7B,EACZ0B,EAAIA,EAAI8B,EAAI,EACZW,EAAE1C,GAAK,GAAKC,EACZyC,EAAEV,GAAK,GAAK,EACZD,EAAI,GAGNR,EAAIhD,EAAI0B,EAAI,EACZ6B,EAAIC,EAAI9B,EAAI,GAEH,EAAJA,GAAS,GACZyC,EAAEtC,GAAK,GAAKmB,EACZmB,EAAEV,GAAK,GAAKF,EACZY,EAAE1C,GAAK,GAAK,EACZzB,EAAIgD,EACJtB,EAAI,GACG6B,EAAIC,GAIJ,GADTA,GAAS,EAAJ9B,IAAc,GADnB8B,GAAS,EAAJD,IAAc,EAAJvD,GAASuD,EAAIvD,IACJ0B,EAAI8B,KACb,IACfW,EAAEtC,GAAK,GAAK7B,EAAIwD,EAChBW,EAAEV,GAAK,GAAKF,EAAIC,EAChBW,EAAE1C,GAAK,GAAKC,EAAI8B,EAElB,CAEA,SAASqnvC,GAAGhpvC,GAEV,IAIImB,EACAS,EACAhC,EANAC,EAAI,EACJ8B,EAAI,EACJxD,EAAI,EACJuD,EAAI,EAIRA,EAAgB,EAAZY,GARJtC,GAAQ,IAQG,GAKX7B,GAAS,GAHT0B,EAAgB,EAAZyC,GADJV,EAAI5B,EAAI,EAAI,IACD,IAGE,GAAK0B,EAAI,EACtBA,GAFAC,EAAgB,EAAZW,GADJ1C,EAAII,EAAI,EAAI,IACD,KAEE,EAAJ0B,EAAQ,GAAK,EACtBY,EAAEtC,GAAK,GAAK0B,EACZY,EAAEV,GAAK,GAAKzD,EACZ0B,GAAS,EAAJ8B,EAAQ,GAAK9B,EAAI,EACtByC,EAAE1C,GAAK,GAAKC,EACZ8B,EAAIxD,EAAIuD,EAAI,GAEH,EAAJA,GAAS,GACZ7B,EAAIA,EAAI6B,EAAI,EACZY,EAAEV,GAAK,GAAKD,EACZW,EAAE1C,GAAK,GAAKC,EACZyC,EAAEtC,GAAK,GAAK,EACZ0B,EAAI,GACGC,EAAIxD,GAEJ,EAAJwD,GAAS,IACZD,EAAIA,EAAIC,EAAI,EACZW,EAAEtC,GAAK,GAAK0B,EACZ7B,EAAIA,EAAI8B,EAAI,EACZW,EAAE1C,GAAK,GAAKC,EACZyC,EAAEV,GAAK,GAAK,EACZD,EAAI,GAGNR,EAAIO,EAAI7B,EAAI,EACZ1B,EAAIwD,EAAI9B,EAAI,GAEH,EAAJA,GAAS,GACZyC,EAAEtC,GAAK,GAAKmB,EACZmB,EAAEV,GAAK,GAAKzD,EACZmE,EAAE1C,GAAK,GAAK,EACZ8B,EAAIP,EACJtB,EAAI,GACG1B,EAAIwD,GAIJ,GADTA,GAAS,EAAJ9B,IAAc,GADnB8B,GAAS,EAAJxD,IAAc,EAAJuD,GAASvD,EAAIuD,IACJ7B,EAAI8B,KACb,IACfW,EAAEtC,GAAK,GAAK0B,EAAIC,EAChBW,EAAEV,GAAK,GAAKzD,EAAIwD,EAChBW,EAAE1C,GAAK,GAAKC,EAAI8B,EAElB,CAEA,SAASsnvC,GAAGjpvC,EAAGH,GACbG,GAAQ,EAER,IAGImB,EACAS,EACAhC,EALA+B,EAAI,EACJxD,EAAI,EACJuD,EAAI,IAHR7B,GAAQ,GAOE,EAAI,KAAO,GAAK,IAC1B6B,GAAoC,EAA/BY,EAAE,OAAa,GAAJzC,EAAS,IAAM,KAAuB,EAAZyC,EAAEtC,GAAK,IAAU,EAC3DsC,EAAEtC,GAAK,GAAK0B,EACZ9B,EAAII,EAAI,EAAI,EACZ7B,GAAwC,EAAnCmE,EAAE,OAAa,GAAJzC,EAAS,GAAK,GAAK,KAAuB,EAAZyC,EAAE1C,GAAK,IAAU,EAC/D0C,EAAE1C,GAAK,GAAKzB,EACZyD,EAAI5B,EAAI,EAAI,EACZH,GAAwC,EAAnCyC,EAAE,OAAa,GAAJzC,EAAS,GAAK,GAAK,KAAuB,EAAZyC,EAAEV,GAAK,IAAU,EAC/DU,EAAEV,GAAK,GAAK/B,EACZ8B,EAAIxD,EAAIuD,EAAI,GAEH,EAAJA,GAAS,GACZ7B,EAAIA,EAAI6B,EAAI,EACZY,EAAE1C,GAAK,GAAK+B,EACZW,EAAEV,GAAK,GAAK/B,EACZyC,EAAEtC,GAAK,GAAK,EACZ7B,EAAI,IAEJwD,EAAIxD,EACJA,EAAIuD,IAGG,EAAJC,GAAS,IACZxD,EAAIA,EAAIwD,EAAI,EACZW,EAAEtC,GAAK,GAAK7B,EACZ0B,EAAIA,EAAI8B,EAAI,EACZW,EAAEV,GAAK,GAAK/B,EACZyC,EAAE1C,GAAK,GAAK,EACZ+B,EAAI,GAGNR,EAAIhD,EAAI0B,EAAI,EACZ6B,EAAIC,EAAI9B,EAAI,GAEH,EAAJA,GAAS,GACZyC,EAAEtC,GAAK,GAAKmB,EACZmB,EAAE1C,GAAK,GAAK8B,EACZY,EAAEV,GAAK,GAAK,EACZzD,EAAIgD,EACJtB,EAAI,GACG6B,EAAIC,GAIJ,GADTA,GAAS,EAAJ9B,IAAc,GADnB8B,GAAS,EAAJD,IAAc,EAAJvD,GAASuD,EAAIvD,IACJ0B,EAAI8B,KACb,IACfW,EAAEtC,GAAK,GAAK7B,EAAIwD,EAChBW,EAAE1C,GAAK,GAAK8B,EAAIC,EAChBW,EAAEV,GAAK,GAAK/B,EAAI8B,GAElB,CAEA,SAASu1B,GAAGl3B,GAEV,IAIImB,EACAS,EACAhC,EANAC,EAAI,EACJ8B,EAAI,EACJxD,EAAI,EACJuD,EAAI,EAIRA,EAAgB,EAAZY,GARJtC,GAAQ,IAQG,GAKX7B,GAHA0B,EAAgB,EAAZyC,GADJV,EAAI5B,EAAI,EAAI,IACD,IAGH0B,EAAI,EACZA,GAFAC,EAAgB,EAAZW,GADJ1C,EAAII,EAAI,EAAI,IACD,IAEH0B,EAAI,EACZY,EAAEtC,GAAK,GAAK0B,EACZY,EAAEV,GAAK,GAAKzD,EACZ0B,EAAI8B,EAAI9B,EAAI,EACZyC,EAAE1C,GAAK,GAAKC,EACZ8B,EAAIxD,EAAIuD,EAAI,GAEH,EAAJA,GAAS,GACZ7B,EAAIA,EAAI6B,EAAI,EACZY,EAAEV,GAAK,GAAKD,EACZW,EAAE1C,GAAK,GAAKC,EACZyC,EAAEtC,GAAK,GAAK,EACZ7B,EAAI,IAEJwD,EAAIxD,EACJA,EAAIuD,IAGG,EAAJC,GAAS,IACZxD,EAAIA,EAAIwD,EAAI,EACZW,EAAEtC,GAAK,GAAK7B,EACZ0B,EAAIA,EAAI8B,EAAI,EACZW,EAAE1C,GAAK,GAAKC,EACZyC,EAAEV,GAAK,GAAK,EACZD,EAAI,GAGNR,EAAIhD,EAAI0B,EAAI,EACZ6B,EAAIC,EAAI9B,EAAI,GAEH,EAAJA,GAAS,GACZyC,EAAEtC,GAAK,GAAKmB,EACZmB,EAAEV,GAAK,GAAKF,EACZY,EAAE1C,GAAK,GAAK,EACZzB,EAAIgD,EACJtB,EAAI,GACG6B,EAAIC,GAIJ,GADTA,GAAS,EAAJ9B,IAAc,GADnB8B,GAAS,EAAJD,IAAc,EAAJvD,GAASuD,EAAIvD,IACJ0B,EAAI8B,KACb,IACfW,EAAEtC,GAAK,GAAK7B,EAAIwD,EAChBW,EAAEV,GAAK,GAAKF,EAAIC,EAChBW,EAAE1C,GAAK,GAAKC,EAAI8B,EAElB,CAEA,SAASk0B,GAAG71B,GAEV,IAIImB,EACAS,EACAhC,EANAC,EAAI,EACJ8B,EAAI,EACJxD,EAAI,EACJuD,EAAI,EAIR7B,EAAgB,EAAZyC,GARJtC,GAAQ,IAQG,GAEX7B,EAAgB,EAAZmE,GADJV,EAAI5B,EAAI,EAAI,IACD,GAEX2B,EAAgB,EAAZW,GADJ1C,EAAII,EAAI,EAAI,IACD,GACX0B,EAAIvD,EAAI0B,EAAI,EACZyC,EAAEtC,GAAK,GAAK0B,EACZvD,EAAIwD,EAAIxD,EAAI,EACZmE,EAAEV,GAAK,GAAKzD,EACZ0B,EAAI8B,EAAI9B,EAAI,EACZyC,EAAE1C,GAAK,GAAKC,EACZ8B,EAAIxD,EAAIuD,EAAI,GAEH,EAAJA,GAAS,GACZ7B,EAAIA,EAAI6B,EAAI,EACZY,EAAEV,GAAK,GAAKD,EACZW,EAAE1C,GAAK,GAAKC,EACZyC,EAAEtC,GAAK,GAAK,EACZ7B,EAAI,IAEJwD,EAAIxD,EACJA,EAAIuD,IAGG,EAAJC,GAAS,IACZxD,EAAIA,EAAIwD,EAAI,EACZW,EAAEtC,GAAK,GAAK7B,EACZ0B,EAAIA,EAAI8B,EAAI,EACZW,EAAE1C,GAAK,GAAKC,EACZyC,EAAEV,GAAK,GAAK,EACZD,EAAI,GAGNR,EAAIhD,EAAI0B,EAAI,EACZ6B,EAAIC,EAAI9B,EAAI,GAEH,EAAJA,GAAS,GACZyC,EAAEtC,GAAK,GAAKmB,EACZmB,EAAEV,GAAK,GAAKF,EACZY,EAAE1C,GAAK,GAAK,EACZzB,EAAIgD,EACJtB,EAAI,GACG6B,EAAIC,GAIJ,GADTA,GAAS,EAAJ9B,IAAc,GADnB8B,GAAS,EAAJD,IAAc,EAAJvD,GAASuD,EAAIvD,IACJ0B,EAAI8B,KACb,IACfW,EAAEtC,GAAK,GAAK7B,EAAIwD,EAChBW,EAAEV,GAAK,GAAKF,EAAIC,EAChBW,EAAE1C,GAAK,GAAKC,EAAI8B,EAElB,CAEA,SAASk1B,GAAG72B,GAGV,OAAY,GAFZA,GAAQ,IAGN,KAAK,EAEDA,EAAI,EACJ,MAGJ,KAAK,EAEDA,EAAI,EACJ,MAGJ,KAAK,EAEDA,EAAI,EACJ,MAGJ,KAAK,EAEDA,EAAI,EACJ,MAGJ,KAAK,EAEDA,EAAI,EACJ,MAGJ,KAAK,EAEDA,EAAI,EAQV,OAAW,EAAJA,CACT,CAEA,SAASkpvC,GAAGlpvC,GAGV,OAAY,GAFZA,GAAQ,IAGN,KAAK,EAEDA,EAAI,EACJ,MAGJ,KAAK,EAEDA,EAAI,EACJ,MAGJ,KAAK,EAEDA,EAAI,EACJ,MAGJ,KAAK,EAEDA,EAAI,EACJ,MAGJ,KAAK,EAEDA,EAAI,EACJ,MAGJ,KAAK,EAEDA,EAAI,EAQV,OAAW,EAAJA,CACT,CAEA,SAASmpvC,GAAGnpvC,GAEV,IAIImB,EACAS,EACAhC,EANAC,EAAI,EACJ8B,EAAI,EACJxD,EAAI,EACJuD,EAAI,EAIR7B,EAAgB,EAAZyC,GARJtC,GAAQ,IAQG,GAEX2B,EAAgB,EAAZW,GADJV,EAAI5B,EAAI,EAAI,IACD,GAEX7B,EAAgB,EAAZmE,GADJ1C,EAAII,EAAI,EAAI,IACD,GACX0B,EAAIC,GAAK9B,GAAK,GAAK,EACnByC,EAAEtC,GAAK,GAAK0B,EACZC,EAAIxD,GAAKwD,GAAK,GAAK,EACnBW,EAAEV,GAAK,GAAKD,EACZ9B,GAAK1B,GAAK,GAAK0B,EAAI,EACnByC,EAAE1C,GAAK,GAAKC,EACZ1B,EAAIwD,EAAID,EAAI,GAEH,EAAJA,GAAS,GACZ7B,EAAIA,EAAI6B,EAAI,EACZY,EAAEV,GAAK,GAAKzD,EACZmE,EAAE1C,GAAK,GAAKC,EACZyC,EAAEtC,GAAK,GAAK,EACZ2B,EAAIxD,EACJA,EAAI,GACGA,EAAIuD,GAEJ,EAAJC,GAAS,IACZxD,EAAIA,EAAIwD,EAAI,EACZW,EAAEtC,GAAK,GAAK7B,EACZ0B,EAAIA,EAAI8B,EAAI,EACZW,EAAE1C,GAAK,GAAKC,EACZyC,EAAEV,GAAK,GAAK,EACZD,EAAI,GAGNR,EAAIhD,EAAI0B,EAAI,EACZ6B,EAAIC,EAAI9B,EAAI,GAEH,EAAJA,GAAS,GACZyC,EAAEtC,GAAK,GAAKmB,EACZmB,EAAEV,GAAK,GAAKF,EACZY,EAAE1C,GAAK,GAAK,EACZzB,EAAIgD,EACJtB,EAAI,GACG6B,EAAIC,GAIJ,GADTA,GAAS,EAAJ9B,IAAc,GADnB8B,GAAS,EAAJD,IAAc,EAAJvD,GAASuD,EAAIvD,IACJ0B,EAAI8B,KACb,IACfW,EAAEtC,GAAK,GAAK7B,EAAIwD,EAChBW,EAAEV,GAAK,GAAKF,EAAIC,EAChBW,EAAE1C,GAAK,GAAKC,EAAI8B,EAElB,CAEA,SAAS8xB,GAAGzzB,GAEV,IAIImB,EACAS,EACAhC,EANAC,EAAI,EACJ8B,EAAI,EACJxD,EAAI,EACJuD,EAAI,EAIRA,EAAgB,EAAZY,GARJtC,GAAQ,IAQG,GAKX7B,IAHA0B,EAAgB,EAAZyC,GADJV,EAAI5B,EAAI,EAAI,IACD,KAGD,GAAK0B,EAAI,EACnBA,GAFAC,EAAgB,EAAZW,GADJ1C,EAAII,EAAI,EAAI,IACD,KAEF0B,GAAK,GAAK,EACnBY,EAAEtC,GAAK,GAAK0B,EACZY,EAAEV,GAAK,GAAKzD,EACZ0B,GAAK8B,GAAK,GAAK9B,EAAI,EACnByC,EAAE1C,GAAK,GAAKC,EACZ8B,EAAIxD,EAAIuD,EAAI,GAEH,EAAJA,GAAS,GACZ7B,EAAIA,EAAI6B,EAAI,EACZY,EAAEV,GAAK,GAAKD,EACZW,EAAE1C,GAAK,GAAKC,EACZyC,EAAEtC,GAAK,GAAK,EACZ0B,EAAI,GACGC,EAAIxD,GAEJ,EAAJwD,GAAS,IACZD,EAAIA,EAAIC,EAAI,EACZW,EAAEtC,GAAK,GAAK0B,EACZ7B,EAAIA,EAAI8B,EAAI,EACZW,EAAE1C,GAAK,GAAKC,EACZyC,EAAEV,GAAK,GAAK,EACZD,EAAI,GAGNR,EAAIO,EAAI7B,EAAI,EACZ1B,EAAIwD,EAAI9B,EAAI,GAEH,EAAJA,GAAS,GACZyC,EAAEtC,GAAK,GAAKmB,EACZmB,EAAEV,GAAK,GAAKzD,EACZmE,EAAE1C,GAAK,GAAK,EACZ8B,EAAIP,EACJtB,EAAI,GACG1B,EAAIwD,GAIJ,GADTA,GAAS,EAAJ9B,IAAc,GADnB8B,GAAS,EAAJxD,IAAc,EAAJuD,GAASvD,EAAIuD,IACJ7B,EAAI8B,KACb,IACfW,EAAEtC,GAAK,GAAK0B,EAAIC,EAChBW,EAAEV,GAAK,GAAKzD,EAAIwD,EAChBW,EAAE1C,GAAK,GAAKC,EAAI8B,EAElB,CAEA,SAASu0B,GAAGl2B,EAAGH,GAEbA,GAAQ,EACR,IAGIsB,EACAS,EACAhC,EALA+B,EAAI,EACJxD,EAAI,EACJuD,EAAI,EAuBR,OAlBA9B,GAAS,GADTgC,GAAiB,EAAZU,GARLtC,GAAQ,IAQI,KAAuB,EAAZsC,EAAEzC,GAAK,IAAU,IAC1B,EAEdsB,GAAS,GADThD,GAAqB,EAAhBmE,EAAEtC,EAAI,GAAK,KAA2B,EAAhBsC,EAAEzC,EAAI,GAAK,KAAWD,EAAIgC,EAAI,GAAK,IAChD,EASd/B,GANAA,GADAG,GAAS,GADT0B,GAAK9B,EAAI,EAAIgC,EAAI,EAAI,IAAsB,EAAhBU,EAAEtC,EAAI,GAAK,KAA2B,EAAhBsC,EAAEzC,EAAI,GAAK,KAAWsB,EAAI,EAAIhD,EAAI,EAAI,GAAK,IAC9E,GACN,EAAIuD,KAKZvD,GAAS,GADT6B,GAAS,EAAJH,IAAc,GADnBG,GAAS,GAFT2B,GAAKR,EAAI,EAAIhD,IAAM6B,EAAI0B,EAAI,GAAK,KAEb,GADnBA,GAAK9B,EAAI,EAAIgC,IAAMT,EAAIhD,EAAI,IAAM6B,EAAI0B,EAAI,GAAK,IACtBC,EAAID,IACJ7B,EAAIG,IACd,GACDA,EAAI,GAAK,EACtB2B,EAAIA,GAAKxD,EAAI6B,EAAI,GAAK,EAMe,IAAxB,GAJbA,GAAS,GADTA,EAAI0B,GAAKvD,EAAI6B,EAAI,GAAK,KACP,EAAIA,EAAI,EAAIA,EAAI,KAIR,GADvBH,GAAS,GAFT8B,GAAS,EAAJA,IAAU,EAAIA,EAAI,EAAIA,EAAI,KAEZ,GADnB9B,GAAS,EAAJA,IAAU,EAAIA,EAAI,EAAIA,EAAI,IACP8B,EAAI9B,IACAG,EAAIH,EAClC,CAEA,SAASupvC,GAAGppvC,EAAGH,GAGb,IAAI8B,EADJ9B,GAAQ,EAER8B,EAAoB,EAAhBW,EAAM,GAHVtC,GAAQ,IAGO,GACfsC,EAAEzC,GAAK,IAAkB,EAAZyC,EAAEtC,GAAK,IAAU2B,EAC9BW,EAAEzC,EAAI,GAAK,IAAsB,EAAhByC,EAAEtC,EAAI,GAAK,IAAU2B,CAExC,CAEA,SAAS0nvC,GAAGrpvC,EAAGH,GAEbA,GAAQ,EACR,IAGIsB,EACAS,EACAhC,EALA+B,EAAI,EACJxD,EAAI,EACJuD,EAAI,EAIRvD,EAAgB,EAAZmE,GARJtC,GAAQ,IAQG,GACXsC,EAAEzC,GAAK,GAAK1B,EACZ6B,EAAoB,EAAhBsC,EAAEtC,EAAI,GAAK,GAEfsC,GADAV,EAAI/B,EAAI,EAAI,IACL,GAAKG,EAEZsC,GADA1C,EAAIC,EAAI,EAAI,IACL,GAAK,EACZ8B,EAAI3B,EAAI7B,EAAI,GAEH,EAAJA,GAAS,GACZ6B,EAAI,EAAI7B,EAAI,EACZmE,EAAEV,GAAK,GAAKD,EACZW,EAAE1C,GAAK,GAAKI,EACZsC,EAAEzC,GAAK,GAAK,EACZ1B,EAAI,IAEJwD,EAAI3B,EACJA,EAAI,IAGG,EAAJ2B,GAAS,IACZxD,EAAIA,EAAIwD,EAAI,EACZW,EAAEzC,GAAK,GAAK1B,EACZ6B,EAAIA,EAAI2B,EAAI,EACZW,EAAE1C,GAAK,GAAKI,EACZsC,EAAEV,GAAK,GAAK,EACZD,EAAI,GAGNR,EAAIhD,EAAI6B,EAAI,EACZ0B,EAAIC,EAAI3B,EAAI,GAEH,EAAJA,GAAS,GACZsC,EAAEzC,GAAK,GAAKsB,EACZmB,EAAEV,GAAK,GAAKF,EACZY,EAAE1C,GAAK,GAAK,EACZ+B,EAAID,EACJA,EAAIP,EACJnB,EAAI,GACG0B,EAAIvD,GAIJ,GADTA,GAAS,EAAJ6B,IAAc,GADnB7B,GAAS,EAAJwD,IAAc,EAAJD,GAASC,EAAID,IACJ1B,EAAI7B,KACb,IACfmE,EAAEzC,GAAK,GAAK6B,EAAIvD,EAChBmE,EAAEV,GAAK,GAAKD,EAAIxD,EAChBmE,EAAE1C,GAAK,GAAKI,EAAI7B,EAElB,CAEA,SAASmrvC,GAAGtpvC,GAEV,IAAIH,EACA8B,EACAxD,EACAuD,EAGJC,GADAD,EAAgB,EAAZY,GADJzC,EAAQ,GALRG,GAAQ,GAKI,IACD,KACU,EAAZsC,EAAEtC,GAAK,IAAU,EAC1BsC,EAAEtC,GAAK,GAAK2B,EAEZ3B,GAAiB,EAAZsC,GADLnE,EAAI6B,EAAI,EAAI,IACA,IAAU0B,EAAI,EAC1BY,EAAEnE,GAAK,GAAK6B,EACZsC,EAAEzC,GAAK,GAAK,GAAKG,EAAI2B,EAEvB,CAEA,SAASm1B,GAAG92B,GAEV,IAKI4B,EACAhC,EANAC,EAAI,EACJ8B,EAAI,EACJxD,EAAI,EACJuD,EAAI,EACJP,EAAI,EAIRtB,EAAI,GADJ8B,EAAgB,EAAZW,GARJtC,GAAQ,IAQG,IACC,EACZsC,EAAEtC,GAAK,GAAKH,EAEZyC,GADAV,EAAI5B,EAAI,EAAI,IACL,GAAK,EAGZ0B,GADAvD,EAAgB,EAAZmE,GADJ1C,EAAII,EAAI,EAAI,IACD,IACH2B,EAAI,GAEH,EAAJA,GAAS,GACZW,EAAE1C,GAAK,GAAK8B,EACZY,EAAEV,GAAK,GAAKD,EACZW,EAAEtC,GAAK,GAAK,EACZH,EAAI,EACJ1B,EAAIuD,GACGC,EAAI,GAEJ,EAAJxD,GAAS,GACZgD,EAAItB,EAAI1B,EAAI,EACZmE,EAAEtC,GAAK,GAAKmB,EACZQ,EAAIA,EAAIxD,EAAI,EACZmE,EAAEV,GAAK,GAAKD,EACZW,EAAE1C,GAAK,GAAK,EACZ8B,EAAIP,EAAIQ,EAAI,EACZ9B,EAAI,EAAI8B,EAAI,GAEH,EAAJA,GAAS,GACZW,EAAEtC,GAAK,GAAK0B,EACZY,EAAE1C,GAAK,GAAKC,EACZyC,EAAEV,GAAK,GAAK,EACZzD,EAAI0B,EACJ8B,EAAI,IAEJxD,EAAI,EACJuD,EAAIP,IAECO,EAAI7B,GAIJ,GADTA,GAAS,EAAJ8B,IAAc,GADnB9B,GAAS,EAAJ1B,IAAc,EAAJuD,GAASvD,EAAIuD,IACJC,EAAI9B,KACb,IACfyC,EAAEtC,GAAK,GAAK0B,EAAI7B,EAChByC,EAAE1C,GAAK,GAAKzB,EAAI0B,EAChByC,EAAEV,GAAK,GAAKD,EAAI9B,EAElB,CAiBA,SAAS61B,GAAG11B,EAAGH,EAAG8B,EAAGD,GAEnB7B,GAAQ,EACR8B,GAAQ,EACRD,GAAQ,EACR,IAIIgB,EAJAvB,EAAI,EACJS,EAAI,EACJhC,EAAI,EACJwD,EAAI,EA+IR,GA7IAV,EAAIF,EACJA,EAAIA,EAAI,GAAK,EAs7Kf,SAAYxC,EAAGsC,GAEbA,GAAQ,EACR,IACIX,EACAD,EAFA7B,EAAI,EAGRA,GAAK1B,GALL6B,GAAQ,IAKI,GACZ2B,GAAKvD,GAAGyB,GACRA,GAAKwB,GAAGxB,GACR1B,EAAEmE,EAAI,IAAM,GAAKzC,EACjBA,GAAK1B,EAAE6B,EAAI,GAAK,GAChB0B,EAAIC,GAAKvD,GAAGyB,GACZ1B,EAAEmE,GAAK,GAAKZ,EACZ7B,EAAI8B,GAAKN,GAAGxB,GACZ1B,EAAEmE,EAAI,GAAK,GAAKzC,CAElB,CAp8KE+sB,CAZA5sB,GAAQ,EAWR4B,EAAIc,GAEJJ,EAAEX,GAAK,GAAK,EACZR,GAAKqjB,GAAG,MAAO5iB,IACfhC,GAAK4kB,GAAG,MAAO5iB,IAEPT,IACNmB,EAAEX,GAAK,GAAK,EACZR,EAAIvB,IAGNA,GAAK4kB,GAAG,MAAO5iB,IAEPT,IACNmB,EAAEX,GAAK,GAAK,EACZR,EAAIvB,IAGNA,GAAK4kB,GAAG,MAAO5iB,IAEPT,IACNmB,EAAEX,GAAK,GAAK,EACZR,EAAIvB,IAGNA,GAAK4kB,GAAG,MAAO5iB,IAEPT,IACNmB,EAAEX,GAAK,GAAK,EACZR,EAAIvB,IAGNA,GAAK4kB,GAAG,MAAO5iB,IAEPT,IACNmB,EAAEX,GAAK,GAAK,EACZR,EAAIvB,IAGNA,GAAK4kB,GAAG,MAAO5iB,IAEPT,IACNmB,EAAEX,GAAK,GAAK,EACZR,EAAIvB,IAGNA,GAAK4kB,GAAG,MAAO5iB,IAEPT,IACNmB,EAAEX,GAAK,GAAK,EACZR,EAAIvB,IAGNA,GAAK4kB,GAAG,MAAO5iB,IAEPT,IACNmB,EAAEX,GAAK,GAAK,EACZR,EAAIvB,IAGNA,GAAK4kB,GAAG,MAAO5iB,IAEPT,IACNmB,EAAEX,GAAK,GAAK,EACZR,EAAIvB,IAGNA,GAAK4kB,GAAG,MAAO5iB,IAEPT,IACNmB,EAAEX,GAAK,GAAK,GACZR,EAAIvB,IAGNA,GAAK4kB,GAAG,MAAO5iB,IAEPT,IACNmB,EAAEX,GAAK,GAAK,GACZR,EAAIvB,IAGNA,GAAK4kB,GAAG,MAAO5iB,IAEPT,IACNmB,EAAEX,GAAK,GAAK,GACZR,EAAIvB,IAGNA,GAAK4kB,GAAG,MAAO5iB,IAEPT,IACNmB,EAAEX,GAAK,GAAK,GACZR,EAAIvB,IAGNA,GAAK4kB,GAAG,MAAO5iB,IAEPT,IACNmB,EAAEX,GAAK,GAAK,GACZR,EAAIvB,IAGNA,GAAK4kB,GAAG,MAAO5iB,IAEPT,IACNmB,EAAEX,GAAK,GAAK,GACZR,EAAIvB,IAGNA,GAAK4kB,GAAG,MAAO5iB,IAEPT,IACNmB,EAAEX,GAAK,GAAK,GACZR,EAAIvB,IAGNA,GAAK4kB,GAAG,MAAO5iB,IAEPT,IACNmB,EAAEX,GAAK,GAAK,GACZR,EAAIvB,IAGNA,GAAK4kB,GAAG,MAAO5iB,IAEPT,IACNmB,EAAEX,GAAK,GAAK,GACZR,EAAIvB,IAGNA,GAAK4kB,GAAG,MAAO5iB,IAEPT,IACNmB,EAAEX,GAAK,GAAK,GACZR,EAAIvB,IAGNA,GAAK2C,IAAI,EAAU,GAAJpB,KAEP,MAMN,OALAmB,EAAEZ,GAAK,GAAK,EACZY,EAAEZ,EAAI,GAAK,GAAK,EAChBY,EAAEZ,EAAI,GAAK,GAAK,EAChBY,EAAEZ,EAAI,IAAM,GAAK,OACjBc,EAAIE,GAUN,GANAf,EAAgB,EAAZW,EAAEX,GAAK,GAEXR,GAAKoovC,IADLpovC,GAAKhD,EAAE,OAAa,GAAJwD,EAAS,IAAM,KAClB4nvC,IA4tBf,SAAYvpvC,EAAGsC,GACbtC,GAAQ,EAER,IAAIH,EACA8B,EACAD,EACAP,EACAS,EAMJ,OALAT,GAAKhD,GANLmE,GAAQ,IAMI,GACZX,GAAKvD,GAAG+C,GACRO,GAAKvD,EAAEmE,EAAI,GAAK,IAAMnE,EAAE6B,EAAI,GAAK,GACjC4B,EAAID,GAAKN,GAAGK,GACZ7B,GAAK1B,EAAE6B,GAAK,MACF2E,GAAG/C,KAAMP,GAAGF,IAAM/C,GAAGyB,IAAMzB,GAAGsD,IAAMC,GAAKN,GAAGxB,KACxD,CA1uBmBiy8B,CAAG,OAASnw8B,GAAK,GAAK,EAAG3B,KACPoD,EAArB,EAAR6kvC,GAAGpovC,IAA+B0pvC,GAAGpovC,GAAK,mBAAxBA,EACxBA,GAAKc,GAAGrC,GAAK,kBAEJ,EAAJC,GAAS,EAAG,CACf+B,EAAI,EAEJ,GACET,GAAQ,mBACRS,EAAIA,EAAI,EAAI,SACA,EAAJA,KAAe,EAAJ/B,GACvB,CAEAD,GAAKxB,GAAGgF,GAAKjC,EACbhD,EAAEuD,GAAK,GAAK9B,EACZwD,GAAK/B,GAAG+B,GAAKjC,EACbhD,EAAEuD,EAAI,GAAK,GAAK0B,EAChBZ,EAAIE,CAEN,CAEA,SAASizB,GAAG31B,EAAGH,EAAG8B,EAAGD,EAAGP,GAEtBtB,GAAQ,EACR8B,GAAQ,EACRD,GAAQ,EACRP,GAAQ,EACR,IAAIS,EAAI,EACJhC,EAAI,EAGR,GAFAgC,GAosKF,SAAY5B,GAEV,IAAIsC,EACAzC,EAGJ,OAFAA,GAAK1B,GAHL6B,GAAQ,IAGI,GACZsC,GAAKnE,EAAE6B,EAAI,GAAK,MACNjB,IAAIc,EAAIA,EAAIyC,EAAIA,GAC5B,CA3sKO2pB,CAPLjsB,GAAQ,GASJ4B,EAAI,MAMN,OALA/B,EAAI,OAASA,GAAK,GAAK,EACvByC,EAAEnB,GAAK,GAAKmB,EAAEzC,GAAK,GACnByC,EAAEnB,EAAI,GAAK,GAAKmB,EAAEzC,EAAI,GAAK,GAC3ByC,EAAEnB,EAAI,GAAK,GAAKmB,EAAEzC,EAAI,GAAK,QAC3ByC,EAAEnB,EAAI,IAAM,GAAKmB,EAAEzC,EAAI,IAAM,IAM/B,GAFAD,GAAK+E,KAAKxG,EAAE6B,EAAI,GAAK,MAAO7B,EAAE6B,GAAK,KAE1B,EAAJ2B,GAAS,EAAG,CACf3B,EAAI,EAEJ,GACE4B,GAAQ,mBACR5B,EAAIA,EAAI,EAAI,SACA,EAAJA,KAAe,EAAJ2B,GACvB,CAEKD,GAIHE,GAAQ,EACRD,EAAmB,IAAN,EAARsmvC,GAAGtmvC,IACRC,GAAKI,EAAuC,kBAAlCL,EAAIC,EAAIA,EAAI,uBALtBA,GAAKI,EAAQ,iBAAJJ,GACG,EAARqmvC,GAAGtmvC,KAAU/B,GAAK2pvC,GAAG3pvC,EAAI,qBAurBjC,SAAYI,EAAGH,EAAG8B,EAAGD,GACnB1B,GAAQ,EACRH,GAAKA,EAEL6B,GAAQ,EACR,IAAIP,EAAI,EACJS,EAAI,EACJhC,EAAI,EACJwD,EAAI,EAER,IAPAzB,GAAKA,GAOG,MAKN,OAJAW,EAAEZ,GAAK,GAAKY,EAAEtC,GAAK,GACnBsC,EAAEZ,EAAI,GAAK,GAAKY,EAAEtC,EAAI,GAAK,GAC3BsC,EAAEZ,EAAI,GAAK,GAAKY,EAAEtC,EAAI,GAAK,QAC3BsC,EAAEZ,EAAI,IAAM,GAAKY,EAAEtC,EAAI,IAAM,IAI/B4B,EAAI/B,EAAI,EAAMA,EAAI,kBAAoBA,EACtC+B,EAAM/B,GAAK,kBAAyB+B,GAAK,kBAATA,EAEhC,EAAG,CAAE,KAAIA,EAAI,OAIN,CAIL,GAHAT,GAAK+D,IAAItD,GAAK,oBAAsB,MACpC/B,GAAK1B,EAAE6B,GAAK,GAERmB,EAAG,CACLtB,GAAQ8B,EACRxD,EAAEuD,GAAK,GAAK7B,EACZsB,EAAIO,EACJ,KACF,CASA,GAPA9B,GAAKxB,GAAGuD,GACRA,GAAKN,GAAGM,GACR9B,EAAID,GAAKyB,GAAGxB,KAAMzB,GAAGwD,IAAMD,GAAKvD,GAAGyB,IAEnCA,GAAKoD,KADLpD,EAAIA,EAAI,EAAM,EAAMA,IACN,GAAO,EAAMA,IAC3B1B,EAAEuD,GAAK,GAAK7B,GAEPqF,IAAIrF,GAAK,qBAAuB,MAGnC,OAFA1B,EAAEuD,GAAK,GAAK,wBACZvD,EAAEuD,EAAI,GAAK,GAAK,GAIlB,IAAKwD,IAAIrF,EAAI,qBAAuB,MAGlC,OAFA1B,EAAEuD,GAAK,IAAM,wBACbvD,EAAEuD,EAAI,GAAK,GAAK,GAWlB,GAPA0B,GAAKhF,GAAGyB,GACR+B,EAAID,GAAKN,GAAGO,GAAKwB,EACjBzB,GAAKxD,EAAE6B,GAAK,GACZH,GAAKD,GAAKyB,GAAGxB,IAAMwB,GAAGM,KAAOvD,GAAGuD,GAAKyB,EACrCxD,EAAIgC,EAAI,EAAM,EAAMA,EACpB/B,EAAIA,EAAI,EAAM,EAAMA,GACpBA,GAAK1B,EAAE6B,EAAI,GAAK,KAAM2E,IAAI/E,GAAK,GAAO,EAAMA,KAAMC,GAAK,GAAO,EAAMA,KAC5D,kBAAqB,GAAKA,IAAS,wBAA4BA,EAAI,mBAC3E,GAAIA,GAAK,kBAAqB,GAAKA,GAAQ,wBAA4BA,GAAK,mBAE5E,YADA1B,EAAEuD,EAAI,GAAK,GAAK7B,EAElB,CA5CEA,GAAK1B,EAAE6B,GAAK,GAAK2B,EACjBxD,EAAEuD,GAAK,GAAK7B,EACZsB,EAAIO,CA0CJ,OAAS,GAEX,IAAKwD,IAAIrF,GAAK,qBAAuB,MAGnC,OAFA1B,EAAEgD,GAAK,GAAK,wBACZhD,EAAEuD,EAAI,GAAK,GAAK,GAIlB,IAAKwD,IAAIrF,EAAI,qBAAuB,MAGlC,OAFA1B,EAAEgD,GAAK,IAAM,wBACbhD,EAAEuD,EAAI,GAAK,GAAK,GAKlB,IADA7B,GAAK1B,EAAE6B,EAAI,GAAK,IACR,kBAAqB,GAAKH,IAAS,wBAA4BA,EAAI,mBAC3E,GAAIA,GAAK,kBAAqB,GAAKA,GAAQ,wBAA4BA,GAAK,mBAC5E1B,EAAEuD,EAAI,GAAK,GAAK7B,CAElB,CArwBE6/W,CAAG,OAAS7/W,GAAK,GAAK,GAAI0pvC,IAAIprvC,EAAE,OAAa,GAAJ0B,EAAS,IAAM,GAAKD,GAAIgC,EAAGT,EAEtE,CAEA,SAASq0rC,GAAGx1rC,EAAGH,EAAG8B,GAIhB,IAAIxD,EACAuD,EAHJ7B,GAAQ,EACR8B,GAAQ,EAGRxD,EAAIqE,EACJA,EAAIA,EAAI,GAAK,EAEbomvC,EAAO,GARP5ovC,GAAQ,GAQG,EADX0B,EAAIvD,GAGJw3B,GAAGj0B,EAAe,EAAZY,EAAEtC,GAAK,GAAQH,EAAG,EAAG8B,GAE3Ba,EAAIrE,CAEN,CAEA,SAASgqO,GAAGnoO,EAAGH,EAAG8B,EAAGD,EAAGP,GACtBnB,GAAQ,EACRH,GAAQ,EACR8B,GAAQ,EACRD,GAAQ,EACRP,GAAQ,EACR,IAGIuB,EACAlB,EACAY,EACA/D,EACAiB,EACAwC,EACAoD,EACAnG,EACAe,EACA1B,EAEA6D,EACAM,EACAU,EACAjB,EACA2C,EACAd,EACAkB,EACA5B,EACAoB,EACAb,EACAM,EACAL,EAzBA/B,EAAI,EACJhC,EAAI,EACJwD,EAAI,EAWJ/B,EAAI,EAaJwB,EAAI,EACJ6B,EAAI,EAyBR,GAxBAf,EAAInB,EACJA,EAAIA,EAAI,IAAM,EAEdnB,EAAIsC,EAAI,IAAM,EACdY,EAAIZ,EACJD,EAAIC,EAAI,IAAM,EACdK,EAAIL,EAAI,IAAM,EACd1B,EAAI0B,EAAI,IAAM,EACdpB,EAAIoB,EAAI,IAAM,EACdV,EAAIU,EAAI,IAAM,EACd3B,EAAI2B,EAAI,IAAM,EACdgB,EAAIhB,EAAI,IAAM,EACdE,EAAIF,EAAI,IAAM,EACdoB,EAAIpB,EAAI,GAAK,EACbR,EAAIQ,EAAI,GAAK,EACbrB,GAbAV,EAAI+B,EAAI,IAAM,IAaP,GAAK9D,EACZyC,EAAEjB,GAAK,GAAKiB,EAAEtC,GAAK,GACnBsC,EAAEjB,EAAI,GAAK,GAAKiB,EAAEtC,EAAI,GAAK,GAC3BsC,EAAEjB,EAAI,GAAK,GAAKiB,EAAEtC,EAAI,GAAK,GAC3BsC,EAAEjB,EAAI,IAAM,GAAKiB,EAAEtC,EAAI,IAAM,GAC7BwpvC,GAAGnovC,EAAGO,EAAG2C,GACTjC,EAAEnB,GAAK,GAAK,GAGH,GAFTE,EAAIK,EAAIC,GAAgB,IAAN,EAAJD,GAAc,GAAK,MAEb,EAAJC,GACda,EAAImB,MADN,CAMAnC,EAAIkC,EAAI,EAAI,EACZtB,EAAIH,EAAI,EAAI,EACZ5D,EAAIsD,EAAI,EAAI,EACZrC,EAAI,QAJJoD,EAAgB,EAAZJ,EAAEV,GAAK,KAIO,GAAK,EACvBE,EAAI,OAASY,GAAK,GAAK,EACvBwC,EAAIP,EAAI,EAAI,EACZ5F,EAAI8E,EAAI,EAAI,EACZ/D,EAAIiF,EAAI,EAAI,EACZ3G,EAAI4F,EAAI,EAAI,EACZZ,EAAIzB,EAEJ3B,EAAG,OAAU,CACXJ,EAAI2E,KAAW,EAAJnB,GAAS,EAAI,IAAM,GAAK,EACnCd,EAAE0B,GAAK,GAAK1B,EAAE1C,GAAK,GACnB0C,EAAE0B,EAAI,GAAK,GAAK1B,EAAE1C,EAAI,GAAK,GAC3B0C,EAAE0B,EAAI,GAAK,GAAK1B,EAAE1C,EAAI,GAAK,GAC3B0C,EAAE0B,EAAI,IAAM,GAAK1B,EAAE1C,EAAI,IAAM,GAE7B,UAAqC,IAAN,EAAjB8gE,GAAG18D,EAAGtB,EAAG,EAAG,KAE1B,IAAS,EAAJU,IAAc,EAAJzB,GAAwB,IAAN,EAARsmvC,GAAGpovC,IAAc,CAWxC,GAVAyC,EAAEL,GAAK,GAAKK,EAAE0B,GAAK,GACnB1B,EAAEL,EAAI,GAAK,GAAKK,EAAE0B,EAAI,GAAK,GAC3B1B,EAAEL,EAAI,GAAK,GAAKK,EAAE0B,EAAI,GAAK,GAC3B1B,EAAEL,EAAI,IAAM,GAAKK,EAAE0B,EAAI,IAAM,GAC7B4kvC,EAAGpnvC,EAAGe,GACNb,EAAgB,EAAZY,EAAEL,GAAK,GACXL,EAAsD,EAAlDU,EAAE,OAAa,GAAJZ,EAAS,IAAMY,EAAEoB,GAAK,IAAM,IAAM,GACjDpB,EAAEL,GAAK,GAAKK,EAAE,OAAa,GAAJZ,EAAS,IAAU,GAAJE,EAAS,IAAM,IAG5C,GAFThC,EAAuD,EAAnD0C,EAAE,OAAa,GAAJZ,EAAS,IAAU,GAAJE,EAAS,GAAK,IAAM,KAEpC,EAAG,CACf5B,EAAI,EAEJ,GACEk3B,GAAG90B,GACHpC,EAAIA,EAAI,EAAI,SACA,EAAJA,IAAc,EAAJJ,GACtB,CAmBA,OAjBAA,EAAI,OAAa,GAAJ8B,EAAS,IAAU,GAAJE,EAAS,GAAK,EAAI,EAC9CU,EAAEW,GAAK,GAAKX,EAAE1C,GAAK,GACnB0C,EAAEW,EAAI,GAAK,GAAKX,EAAE1C,EAAI,GAAK,GAC3B0C,EAAEW,EAAI,GAAK,GAAKX,EAAE1C,EAAI,GAAK,GAC3B62B,EAAGxzB,EAAqB,GAAL,EAAZX,EAAEhD,GAAK,IAAc,GAC5B+2B,EAAGj0B,EAAGa,EAAGb,GACT+zB,EAAG/zB,GACHwmvC,EAAGxmvC,EAAGJ,GACNa,IAAkB,EAAZP,EAAER,GAAK,IACb3D,EAAEwG,GAAK,GAAS,EAAJ9B,EACZ1E,EAAE+G,GAAK,GAAK,EACZR,GAAS,IAAL7B,EACJ1E,EAAE0F,GAAK,GAAKa,EACZvG,EAAEY,GAAK,GAAS,kBAAJ8D,EACZ1E,EAAE4G,GAAK,GAAKL,EACZvG,EAAE2B,GAAK,IAAU,kBAAL+C,EAE4D,EAAhEP,EAAE,OAA2B,IAAL,EAAZA,EAAEL,GAAK,IAAe,IAAMK,EAAE0B,GAAK,IAAM,IAAM,IACjE,KAAK,EAEDhE,EAAI6D,EACJnC,EAAIiD,EACJ,MAGJ,KAAK,EAED3E,EAAI+E,EACJrD,EAAImC,EACJ,MAGJ,KAAK,EAED7D,EAAI2E,EACJjD,EAAIqD,EACJ,MAGJ,QAEI/E,EAAI,GACJ,MAAMA,EAIZumB,GAAGhkB,EAAGP,EAAGN,EAAG1B,EAAGmD,GAEfwyB,GAAGxyB,EAAe,EAAZb,EAAEL,GAAK,GAAQS,EAAG,EAAGvB,EAAI,GAAKmB,EAAEnB,GAAK,IAAM,GAAK,GAEtDmB,EAAEnB,GAAK,GAAuB,GAAL,EAAZmB,EAAEnB,GAAK,GACtB,CAeA,IAbS,EAAJiC,IAAc,EAAJ/E,KACbuqvC,EAAGxqvC,EAAG6D,GAEN0zB,GAAG1zB,EAAe,EAAZK,EAAE0B,GAAK,GAAQtB,EAAG,EAAGvB,EAAI,GAAKmB,EAAEnB,GAAK,IAAM,GAAK,GAEtDmB,EAAEnB,GAAK,GAAuB,GAAL,EAAZmB,EAAEnB,GAAK,KAEtBmB,EAAEoB,GAAK,GAAKpB,EAAE0B,GAAK,GACnB1B,EAAEoB,EAAI,GAAK,GAAKpB,EAAE0B,EAAI,GAAK,GAC3B1B,EAAEoB,EAAI,GAAK,GAAKpB,EAAE0B,EAAI,GAAK,GAC3B1B,EAAEoB,EAAI,IAAM,GAAKpB,EAAE0B,EAAI,IAAM,IAGpB,GAFTZ,EAAIA,EAAI,EAAI,MAEQ,EAAJ/B,GAAQ,CACtBrB,EAAI,EACJ,KACF,CACF,CAEe,IAAN,EAAJA,GAGiB,KAAN,EAAJA,IAAgBwE,EAAE,MAAO,MAAO,IAAK,OAF/ChC,EAAImB,CApHN,CAuHF,CAEA,SAAS6lvC,GAAGxpvC,EAAGH,EAAG8B,GAChB3B,GAAQ,EACRH,GAAQ,EACR8B,GAAQ,EACR,IAKIyB,EALAjF,EAAI,EACJuD,EAAI,EACJP,EAAI,EACJS,EAAI,EACJhC,EAAI,EAERwD,EAAIZ,EACJA,EAAIA,EAAI,IAAM,EAEdd,EAAI0B,EAEJxB,EAAI,MACJhC,EAAQ,IAFRuB,EAFAhD,EAAIiF,EAAI,GAAK,GAIA,EAEb,GACEd,EAAEnB,GAAK,GAAKmB,EAAEV,GAAK,GACnBT,EAAIA,EAAI,EAAI,EACZS,EAAIA,EAAI,EAAI,SACA,EAAJT,IAAc,EAAJvB,IAGpBgC,EAAI,MACJhC,GAFAuB,EAAIO,GAEI,GAAK,EAEb,GACEY,EAAEnB,GAAK,GAAKmB,EAAEV,GAAK,GACnBT,EAAIA,EAAI,EAAI,EACZS,EAAIA,EAAI,EAAI,SACA,EAAJT,IAAc,EAAJvB,IAGpBzB,GADAyB,EAA+B,IAAN,EAApBqovC,GAAe,EAAZ3lvC,EAAEzC,GAAK,MACP1B,EAAIuD,EAEZynvC,GADAznvC,EAAI1B,EAAI,EAAI,GAEZyzB,GAAG/xB,GAEqB,EAApBumvC,GAAe,EAAZ3lvC,EAAEzC,GAAK,MACZmpvC,GAAGtnvC,GACHY,EAAEzC,GAAK,GAAuB,GAAL,EAAZyC,EAAEzC,GAAK,KAGtByC,EAAEX,GAAK,GAAKW,EAAEtC,GAAK,GAEnBq2B,EAAG30B,EAAGvD,EADN0B,EAAI8B,EAAI,EAAI,GAEZw0B,EAAGt2B,GACHyC,EAAEX,EAAI,IAAM,GAAKW,EAAEtC,GAAK,GAExBq2B,EAAG30B,EAAGvD,EAAI,GAAK,EADf0B,EAAI8B,EAAI,GAAK,GAEbw0B,EAAGt2B,GACHyC,EAAEX,EAAI,IAAM,GAAKW,EAAEtC,GAAK,GAExBq2B,EAAG30B,EAAGvD,EAAI,GAAK,EADf0B,EAAI8B,EAAI,GAAK,GAEbw0B,EAAGt2B,GACHyC,EAAEX,EAAI,IAAM,GAAKW,EAAEtC,GAAK,GAExBq2B,EAAG30B,EAAGvD,EAAI,GAAK,EADf0B,EAAI8B,EAAI,GAAK,GAEbw0B,EAAGt2B,GACHyC,EAAEX,EAAI,IAAM,GAAKW,EAAEtC,GAAK,GAExBq2B,EAAG30B,EAAGvD,EAAI,GAAK,EADfwD,EAAIA,EAAI,GAAK,GAEbw0B,EAAGx0B,GACHa,EAAIY,CAEN,CAEA,SAASs9D,GAAG1gE,EAAGH,EAAG8B,EAAGxD,GAGnBwD,GAAQ,EACRxD,GAAQ,EACR,IAEIyD,EACAhC,EAEA8C,EACAlB,EAEAnD,EAEAyD,EAVAJ,EAAI,EACJP,EAAI,EAGJiC,EAAI,EAGJhB,EAAI,EAEJ9C,EAAI,EAcR,GAZAwC,EAAIU,EACJA,EAAIA,EAAI,GAAK,EACbnE,EAAIyD,EAAI,GAAK,EACblC,EAAIkC,EACJxC,EAAQ,GAnBRU,GAAQ,GAmBI,EACZoC,EAA+B,EAA3BE,EAAE,QAnBNzC,GAAQ,IAmBY,IAAM,GAE1BuC,GADAZ,EAAe,IAAN,EAAJrD,IACO,EAAJiE,EAAQ,EAAIA,EACpBV,EAAgB,EAAZY,EAAEhD,GAAK,GAEXsC,EAAgB,EAAZU,GADJI,EAAI1C,EAAI,EAAI,IACD,GAEPwB,EAAG,CAKL,IAAS,GAFTE,EAAIE,EAAIF,GADRvD,EAAgB,EAAZmE,GADJnB,EAAInB,EAAI,GAAK,IACF,IACK,MAEI,EAAJoC,GAGd,OADAI,EAAIV,EACGxC,EACA8D,EAAIjC,CACf,MAGEO,EAAIE,EAAIF,GADRvD,EAAgB,EAAZmE,GADJc,EAAIpD,EAAI,GAAK,IACF,IACK,EAGlB,IAAS,EAAJ0B,KAAe,EAAJU,GAGd,OADAI,EAAIV,EACGxC,EAGT,GAAK,IAAS,EAAJnB,GAAS,EAAG,CAGpB,GAFAA,EAAgB,EAAZmE,EAAEtC,GAAK,IAEF,EAAJ4B,GAAS,EAAG,CACfT,EAAI,OAAa,GAAJhD,EAAS,GAAK,GAAK,EAChCA,EAAI6B,EACJ,KACF,CAEA7B,EAAI,OAAa,GAAJA,EAAS,GAAK,GAAK,EAE3BwD,GAIH+0B,EAAGr4B,EAAG+D,EAAG,EAAG,GACZ60B,EAAG33B,EAAGjB,EAAGuB,GACTi2B,GAAGj2B,GACHy2B,EAAGz2B,EAAGvB,EAAGiB,GACT6B,EAAIhD,EACJA,EAAI6B,IARJmB,EAAIhD,EACJA,EAAI6B,EASR,MACEmB,EAAI,OAA2B,IAAL,EAAZmB,EAAEtC,GAAK,IAAe,GAAK,GAAK,EAC9C7B,EAAI6B,QACK,GAKX,GAHAsC,EAAEnE,GAAK,GAAKmE,EAAEnB,GAAK,IAGF,EAAZmB,GAFLZ,EAAIP,EAAI,GAAK,IAED,IAAU,EAAG,CACvBhD,EAAI,EAEJ,GACE+4B,GAAG53B,GACHnB,EAAIA,EAAI,EAAI,SACA,EAAJA,IAAsB,EAAZmE,EAAEZ,GAAK,IAC7B,CAaA,OAXA1B,EAAImB,EAAI,EAAI,EACZmB,EAAEjE,GAAK,GAAKiE,EAAEtC,GAAK,GACnBsC,EAAEjE,EAAI,GAAK,GAAKiE,EAAEtC,EAAI,GAAK,GAC3BsC,EAAEjE,EAAI,GAAK,GAAKiE,EAAEtC,EAAI,GAAK,GAC3BH,EAA+B,EAA3ByC,EAAE,OAASzC,GAAK,IAAM,GAC1B42B,EAAGp4B,EAAGmD,EAAQ,EAAJ3B,EAAQ,EAAIA,GACtBw2B,EAAG/2B,EAAGjB,EAAGiB,GACT62B,EAAG72B,GACMnB,EAALqD,KAAuB,EAAZc,EAAEI,GAAK,KAAuB,EAAZJ,EAAEhD,GAAK,KAAuB,EAAZgD,EAAEc,GAAK,IAAU,KAAW,EAAJhB,GAAS,EAAmB,EAEvGI,EAAIV,EACO,EAFP3D,CAGN,CAEA,SAASsrvC,GAAGzpvC,EAAGsC,GACbtC,GAAQ,EACRsC,GAAQ,EACR,IAAIzC,EAAI,EAER,GAAKA,EAAqB,EAAjB6gE,GAAG1gE,EAAGsC,EAAG,EAAG,SAA4B,IAAN,EAAJzC,IAEvC,OAAW,EAAJA,CACT,CAEA,SAAS6pvC,GAAG1pvC,EAAGH,EAAG8B,EAAGD,EAAGP,GACtBnB,GAAQ,EACRH,GAAQ,EACR8B,GAAQ,EACRD,GAAQ,EACRP,GAAQ,EACR,IAGIuB,EACAlB,EACAY,EACA/D,EACAiB,EACAwC,EACAoD,EACAnG,EACAe,EACA1B,EACAiD,EACAY,EACAM,EACAU,EACAjB,EACA2C,EACAd,EACAkB,EApBAnD,EAAI,EACJhC,EAAI,EACJwD,EAAI,EAmBJD,EAAI,EACJoB,EAAI,EAsBR,GArBAQ,EAAIvC,EACJA,EAAIA,EAAI,IAAM,EAEdS,EAAI8B,EAAI,IAAM,EACd/C,EAAI+C,EACJJ,EAAII,EAAI,IAAM,EACdlB,EAAIkB,EAAI,IAAM,EACdjF,EAAIiF,EAAI,IAAM,EACd3G,EAAI2G,EAAI,IAAM,EACd1D,EAAI0D,EAAI,IAAM,EACd9C,EAAI8C,EAAI,IAAM,EACdxC,EAAIwC,EAAI,GAAK,EACbzC,GAVAV,EAAImD,EAAI,IAAM,IAUP,GAAKlF,EACZyC,EAAEW,GAAK,GAAKX,EAAEtC,GAAK,GACnBsC,EAAEW,EAAI,GAAK,GAAKX,EAAEtC,EAAI,GAAK,GAC3BsC,EAAEW,EAAI,GAAK,GAAKX,EAAEtC,EAAI,GAAK,GAC3BsC,EAAEW,EAAI,IAAM,GAAKX,EAAEtC,EAAI,IAAM,GAC7B4lV,GAAG3iV,EAAGrB,EAAGI,GACTM,EAAEnB,GAAK,GAAK,GAGH,GAFTpC,EAAI2C,EAAIC,GAAgB,IAAN,EAAJD,GAAc,GAAK,MAEb,EAAJC,GACda,EAAIuC,MADN,CAMAvD,EAAIG,EAAI,EAAI,EACZS,EAAI,QAFJM,EAAgB,EAAZJ,EAAEV,GAAK,KAEO,GAAK,EACvBvD,EAAID,EAAI,EAAI,EACZkB,EAAI+B,EAAI,EAAI,EACZS,EAAIG,EAAI,EAAI,EACZiD,EAAIP,EAAI,EAAI,EACZ/E,EAAI,EACJwD,EAAIzB,EACJD,GAAK,EAEL1B,EAAG,OAAU,CAUX,GARAA,EAAIgC,IADJJ,GAAS,EAAJwB,GAAS,EAAI,IACJ,GAAK,EACnBd,EAAEqC,GAAK,GAAKrC,EAAEtC,GAAK,GACnBsC,EAAEqC,EAAI,GAAK,GAAKrC,EAAEtC,EAAI,GAAK,GAC3BsC,EAAEqC,EAAI,GAAK,GAAKrC,EAAEtC,EAAI,GAAK,GAC3BsC,EAAEqC,EAAI,IAAM,GAAKrC,EAAEtC,EAAI,IAAM,GAC7BA,EAAIJ,EACJA,EAAqB,EAAjB8gE,GAAG/7D,EAAGjC,EAAG,EAAG,IAEP,EAAJU,IAAc,EAAJzB,GAAwB,IAAN,EAARsmvC,GAAGpovC,KAA0B,IAAN,EAAJG,KAA2B,EAAZsC,EAAEqC,GAAK,MAAgB,EAAJjD,GAAgB,CAa5F,OAZAknvC,EAAG5mvC,KAAOJ,EAAI,EAAI,GAAK,EAAI,IAAM,GAAK,EAAI,EAAGiC,GAC7C+kvC,EAAG5mvC,GAAKJ,GAAK,GAAK,EAAI,EAAG9B,GACzBqD,IAAkB,EAAZb,EAAEF,GAAK,IACbjE,EAAEC,GAAK,GAAS,EAAJ+E,EACZhF,EAAEE,GAAK,GAAK,EACZkG,GAAS,IAALpB,EACJhF,EAAEkD,GAAK,GAAKkD,EACZpG,EAAEmB,GAAK,GAAS,kBAAJ6D,EACZhF,EAAE8D,GAAK,GAAKsC,EACZpG,EAAE2D,GAAK,IAAU,kBAALqB,EACZvB,EAAgB,EAAZU,EAAEW,GAAK,GAE8E,EAAjFX,EAAE,OAAa,GAAJV,EAAS,MAAY,EAAJF,KAAe,EAAJE,GAAqB,EAAZU,EAAEqC,GAAK,GAASjD,IAAM,IAAM,IAClF,KAAK,EAED1B,EAAIqB,EACJK,EAAItD,EACJ,MAGJ,KAAK,EAED4B,EAAIiC,EACJP,EAAIL,EACJ,MAGJ,KAAK,EAEDrB,EAAI5B,EACJsD,EAAIO,EACJ,MAGJ,QAEIjC,EAAI,EACJ,MAAMA,EAIZumB,GAAG1iB,EAAG/D,EAAG4B,EAAG1B,EAAGuC,GAEE,EAAXkqB,GAAG5oB,EAAGtB,IAAuB,EAAXkqB,GAAG3sB,EAAGyC,KAC5BozB,GAAGpzB,EAAe,EAAZD,EAAEW,GAAK,GAAQP,EAAG,EAAGvB,EAAI,GAAKmB,EAAEnB,GAAK,IAAM,GAAK,GAEtDmB,EAAEnB,GAAK,GAAuB,GAAL,EAAZmB,EAAEnB,GAAK,IAExB,CAYA,IAVS,EAAJiC,IAAc,EAAJ5B,KACbonvC,EAAG1jvC,EAAGrB,GAEN8xB,GAAG9xB,EAAe,EAAZvB,EAAEqC,GAAK,GAAQjC,EAAG,EAAGvB,EAAI,GAAKmB,EAAEnB,GAAK,IAAM,GAAK,GAEtDmB,EAAEnB,GAAK,GAAuB,GAAL,EAAZmB,EAAEnB,GAAK,MAKb,GAFTiC,EAAIA,EAAI,EAAI,MAEQ,EAAJrE,GAAQ,CACtBiB,EAAI,EACJ,KACF,CAAS0B,EAAgB,EAAZY,EAAEqC,GAAK,EACtB,CAEe,IAAN,EAAJ3E,GAGiB,IAAN,EAAJA,IAAewE,EAAE,MAAO,MAAO,IAAK,OAF9ChC,EAAIuC,CA3FN,CA8FF,CAEA,SAAS6gV,GAAG5lV,EAAGH,EAAG8B,GAChB3B,GAAQ,EACRH,GAAQ,EACR8B,GAAQ,EACR,IAKIyB,EALAjF,EAAI,EACJuD,EAAI,EACJP,EAAI,EACJS,EAAI,EACJhC,EAAI,EAERwD,EAAIZ,EACJA,EAAIA,EAAI,IAAM,EAEdd,EAAI0B,EAEJxB,EAAI,MACJhC,EAAQ,IAFRuB,EAFAhD,EAAIiF,EAAI,GAAK,GAIA,EAEb,GACEd,EAAEnB,GAAK,GAAKmB,EAAEV,GAAK,GACnBT,EAAIA,EAAI,EAAI,EACZS,EAAIA,EAAI,EAAI,SACA,EAAJT,IAAc,EAAJvB,IAGpBgC,EAAI,MACJhC,GAFAuB,EAAIO,GAEI,GAAK,EAEb,GACEY,EAAEnB,GAAK,GAAKmB,EAAEV,GAAK,GACnBT,EAAIA,EAAI,EAAI,EACZS,EAAIA,EAAI,EAAI,SACA,EAAJT,IAAc,EAAJvB,IAGpBzB,GADAyB,EAA+B,IAAN,EAApBqovC,GAAe,EAAZ3lvC,EAAEzC,GAAK,MACP1B,EAAIuD,EAEZynvC,GADAznvC,EAAI1B,EAAI,EAAI,GAEZyzB,GAAG/xB,GAEqB,EAApBumvC,GAAe,EAAZ3lvC,EAAEzC,GAAK,MACZmpvC,GAAGtnvC,GACHY,EAAEzC,GAAK,GAAuB,GAAL,EAAZyC,EAAEzC,GAAK,KAGtByC,EAAEX,GAAK,GAAKW,EAAEtC,GAAK,GAEnBq2B,EAAG30B,EAAGvD,EADN0B,EAAI8B,EAAI,EAAI,GAEZw0B,EAAGt2B,GACHyC,EAAEX,EAAI,IAAM,GAAKW,EAAEtC,GAAK,GAExBq2B,EAAG30B,EAAGvD,EAAI,GAAK,EADf0B,EAAI8B,EAAI,GAAK,GAEbw0B,EAAGt2B,GACHyC,EAAEX,EAAI,IAAM,GAAKW,EAAEtC,GAAK,GAExBq2B,EAAG30B,EAAGvD,EAAI,GAAK,EADf0B,EAAI8B,EAAI,GAAK,GAEbw0B,EAAGt2B,GACHyC,EAAEX,EAAI,IAAM,GAAKW,EAAEtC,GAAK,GAExBq2B,EAAG30B,EAAGvD,EAAI,GAAK,EADf0B,EAAI8B,EAAI,GAAK,GAEbw0B,EAAGt2B,GACHyC,EAAEX,EAAI,IAAM,GAAKW,EAAEtC,GAAK,GAExBq2B,EAAG30B,EAAGvD,EAAI,GAAK,EADf0B,EAAI8B,EAAI,GAAK,GAEbw0B,EAAGt2B,GACHyC,EAAEX,EAAI,IAAM,GAAKW,EAAEtC,GAAK,GAExBq2B,EAAG30B,EAAGvD,EAAI,GAAK,EADfwD,EAAIA,EAAI,GAAK,GAEbw0B,EAAGx0B,GACHa,EAAIY,CAEN,CAEA,SAASmmvC,GAAGvpvC,GAEV,IAAIsC,EAEJ,OADAA,GAFAtC,GAAKA,GAEG,EAAMA,EAAI,kBAAoBA,IAC3BA,GAAK,kBAAyBsC,GAAK,kBAATA,EACvC,CAEA,SAASqnvC,GAAG3pvC,EAAGsC,GAIb,OAFAA,GAAQ,GAED4C,KAAK/G,GAHZ6B,GAAQ,IAGW,IAAM7B,EAAEmE,GAAK,KAAO,sBAM5B,GADXA,GAAK4C,KAAK/G,EAAE6B,EAAI,GAAK,IAAM7B,EAAEmE,EAAI,GAAK,KAAO,uBAHhC,GADXA,EAAI,EAMR,CAiBA,SAASmmvC,GAAGzovC,EAAGsC,GACbtC,GAAQ,EAER,IACI2B,EACAD,EACAP,EAHAtB,EAAI,EASR,OALA6B,GAAKvD,GALLmE,GAAQ,IAKI,GACZX,GAAKxD,EAAE6B,GAAK,GAGZH,GAFAsB,GAAKE,EAAc,IAATK,EAAIC,KAENR,GADRtB,GAAKwB,EAAwC,KAAlClD,EAAEmE,EAAI,GAAK,IAAMnE,EAAE6B,EAAI,GAAK,QACrB5B,GAAGsD,IAAMtD,GAAGuD,GAAK9B,GACO,GAAhC8E,KAAK5F,GAAGc,MAAOd,IAAI,EAAMc,KAAa,iBAClD,CAqJA,SAAS+pvC,GAAG5pvC,EAAGsC,EAAGzC,GAChBG,GAAQ,EAERH,GAAQ,EACR,IAIID,EAEA8C,EACAlB,EACAY,EARAT,EAAI,EACJD,EAAI,EACJP,EAAI,EACJS,EAAI,EAEJwB,EAAI,EAIJ/E,EAAI,EAuBR,OAtBAA,GAAKF,GAZLmE,GAAQ,IAYI,GACZd,GAAKrD,EAAE6B,GAAK,GACZoD,GAAK/B,EAAc,IAAThD,EAAImD,IACdL,GAAKhD,EAAEmE,EAAI,GAAK,GAChBI,GAAKvE,EAAE6B,EAAI,GAAK,GAChB4B,GAAKP,EAAc,IAATF,EAAIuB,IACd9C,GAAKxB,GAAGoD,GACRY,GAAKhE,GAAGC,GAERuD,EAAqC,GAAhC+C,KAAK5F,IADV6C,EAAIwB,EAAIA,EAAIxB,GAAKQ,EAAIxC,EAAIgC,QACL7C,IAAI,EAAM6C,KAC9BwB,GAAKjF,EAAE0B,GAAK,GACZxB,GAAKgD,EAAc,IAAT+B,EAAI/E,IACdsD,GAAKxD,EAAE0B,EAAI,GAAK,GAChBsB,GAAKE,EAAc,IAATM,EAAIR,IACdO,GAAKtD,GAAGgF,GAERjC,EAAqC,GAAhCwD,KAAK5F,IADVoC,EAAI9C,EAAIA,EAAI8C,GAAKiB,EAAIV,EAAIP,QACLpC,IAAI,EAAMoC,KAC9BiC,GAAK/B,EAAc,IAATG,EAAI4B,IACdzB,GAAKN,EAAc,IAATqB,EAAIf,IAEdA,EAAqC,GAAhCgD,KAAK5F,IADV4C,EAAIyB,EAAIA,EAAIzB,GAAK/B,EAAI8B,EAAIC,QACL5C,IAAI,EAAM4C,KAE0E,GAA9FK,KAAKjD,KAAKkD,EAAQ,IAD5BP,EAAkB,IAAbE,EAAIT,EAAIQ,MACuBM,EAAc,IAATP,EAAIE,KAAaK,EAAc,IAATP,EAAIP,KAAac,EAAc,IAATP,EAAIC,KAC3F,CAgQA,SAASkovC,GAAG7pvC,EAAGsC,GAKb,OAFAA,EAA2B,EAAvBylvC,GAAO,GAFX/nvC,GAAQ,GAEU,GADlBsC,GAAQ,GACa,IACrBqB,IACW,IAAJrB,EAAU,CACnB,CAEA,SAASwnvC,GAAG9pvC,EAAGsC,GAGb,IAAIzC,EAAI,EACJ8B,EAAI,EACJxD,EAAI,EACJuD,EAAI,EACJP,EAAI,EACJS,EAAI,EAER,MAAM,EAAgC,aAAjB,UARrBU,GAAQ,GAQwB,IAE9B,OAAOA,EAOT,GAJAnB,EAA2B,EAAvB4mvC,GAAO,GAdX/nvC,GAAQ,GAcU,EAAJsC,EAAO,IACrBqB,KACAxC,GAAQ,OAEE,EAAI,IAEZ,OAAOmB,EAGTzC,EAA2B,EAAvBkovC,GAAO,EAAJ/nvC,EAAW,EAAJsC,EAAO,IACrBqB,IACA9D,GAAQ,GAER,GAAK,GAAQ,EAAJA,EAAO,CAId,IAHA1B,EAAI,EACJwD,EAAI,IAEM,CAIR,GAHAD,EAA6C,EAAzCqmvC,GAAO,EAAJ/nvC,EAAW,EAAJsC,EAAsB,GAAd,GAAKnE,EAAI,GAAS,GACxCwF,IAEe,IAAN,GADTjC,GAAQ,KACgB,EAAJC,GAAQ,CAAE,GAAe,IAAN,EAAJD,GAA6B,IAAN,EAARovB,EAAG3vB,IAAc,CACjES,EAAI,EACJD,EAAI,GACJ,KACF,CAASA,EAAI,CAAK,CAElB,GAAe,IAAN,EAAJD,GAAa,CAChBE,EAAI,EACJD,EAAI,GACJ,KACF,CAEA,KAAIxD,IAAM,EAAI0B,IAAM,GAA0B,CAC5C8B,EAAI,EACJ,KACF,CAHyBxD,EAAIA,EAAI,EAAI,CAIvC,CAEA,GAAe,IAAN,EAAJwD,GAAa,CAChB,GAAe,KAAN,EAAJ9B,GAA+B,MACpC,OAAO+B,CACT,CAAO,GAAe,KAAN,EAAJD,GAAgB,OAAW,EAAJC,CACrC,QAAW,GAEX,OAAU,CAIR,GAHAA,EAA6C,EAAzCmmvC,GAAO,EAAJ/nvC,EAAW,EAAJsC,EAAsB,GAAd,GAAKzC,EAAI,GAAS,GACxC8D,MAEqB,IAAV,EAAJ/B,EAAQ,IAAU,GAAS,CAChCA,EAAI,EACJD,EAAI,GACJ,KACF,CAEA,KAAI9B,IAAM,EAAI,IAA2B,CACvC+B,EAAI,EACJD,EAAI,GACJ,KACF,CAJoB9B,EAAIA,EAAI,EAAI,CAKlC,CAEA,OAAe,KAAN,EAAJ8B,GAA2B,EAAJC,EACrB,CACT,CAEA,SAASmovC,GAAG/pvC,EAAGsC,EAAGzC,GAGhBA,GAAQ,EACR,IAAI8B,EAAI,EACJxD,EAAI,EAKR,GAJAwD,EAA2B,EAAvBomvC,GAAO,GALX/nvC,GAAQ,GAKU,GAJlBsC,GAAQ,GAIa,IACrBqB,KAGS,GAFThC,GAAQ,OAEY,EAAJ9B,IACd,IAAS,EAAJ8B,KAAe,EAAJ9B,GAAU,GAAIA,IAAM,GAAK,IAIvC,GAFAG,GADA7B,EAAuB,EAAnBgqhB,GAAO,EAAJtohB,EAAO,EAAG,IAEjByC,EAAU,EAANqB,KAAe,SAALrB,GACL,EAAJX,IAAc,EAAJ9B,GAAU,GACvB1B,EAAqC,EAAjCgqhB,GAAG,EAAG,EAAkB,GAAd,GAAKtohB,EAAI,GAAS,GAChCA,EAAIA,EAAI,EAAI,EACZG,GAAI7B,EACJmE,EAAU,EAANqB,IAAUrB,SACF,EAAJzC,IAAc,EAAJ8B,SAEpBW,EAAI,EACJtC,EAAI,OAGNsC,EAAI,EACJtC,EAAI,EAIN,OADAgE,EAAM,EAAJ1B,GACS,EAAJtC,CACT,CAmBA,SAASgqvC,GAAGhqvC,EAAGH,EAAG8B,EAAGxD,GAGnBwD,GAAQ,EACRxD,GAAQ,EACR,IAKIuE,EALAhB,EAAI,EACJP,EAAI,EACJS,EAAI,EACJhC,EAAI,EACJwD,EAAI,EAEJ5B,EAAI,EAIR,GAHAI,EAA2B,EAAvBmmvC,GAAO,GAXX/nvC,GAAQ,GAWU,GAVlBH,GAAQ,GAUa,IACrB8D,KAEW,EAAJhC,GAAS,IAAU,GAD1BC,GAAQ,OAC6B,EAAJD,GAAjC,CAEA,IAAS,EAAJC,KAAe,EAAJD,GAId,OAFAW,GADAX,EAAIxD,IACG,GAAK6B,OACZsC,EAAEX,EAAI,GAAK,GAAK9B,GAQlB,GAHA6C,GAAS,GADTU,EAAuB,EAAnB6d,GAAG,EAAGtf,EAAIC,EAAI,KACJ,EAAI,EAClBhC,EAA2B,EAAvBmovC,GAAO,EAAJ/nvC,EAAW,EAAJH,EAAO,IACrB8D,IACoB,EAAdmtB,EAAO,IAAJlxB,GAA8B,CACrCI,EAAG,GAAK,GAAK4B,EAGX,IAFAT,EAAI,IAEM,CAIR,GAHAO,EAA6C,EAAzCqmvC,GAAO,EAAJ/nvC,EAAW,EAAJH,EAAsB,GAAd,GAAKsB,EAAI,GAAS,GACxCwC,IAEQ,GADRjC,GAAQ,GACK,MAAM1B,EACnB,KAAImB,IAAM,EAAIS,IAAM,GAA0B,CAC5CF,EAAI,EACJ,KACF,CAHyBP,EAAIA,EAAI,EAAI,CAIvC,MAZgBO,EAAI,QAaX,GAEXP,EAAe,IAAN,EAAJO,EACP,MAjB0BP,EAAI,EA2B9B,GATAK,EAA2B,EAAvB2mhB,GAAGvmhB,EAAI,EAAI,EAAG,EAAG,IACrBF,EAAU,EAANiC,KAAe,SAAL9D,EAKdmqvC,GAFAnqvC,GAAK2B,EAAIxB,KADTH,EAAsB,EAAlBsohB,GAAG,EAAG,EAAO,GADjBvohB,EAAmB,GAAd,GAAKgC,EAAI,GAAS,KAGvBA,EAAIF,IAAY,EAANiC,KACDhC,EAAGxD,GACZuD,EAAIvD,GAAKuE,GAAK,GAAK,GAEdvB,EAiBH,OAfA6ovC,IADAxovC,EAAsB,EAAlB2mhB,GAAG,EAAG,EAAO,EAAJvohB,IACNC,EAAS,EAAN8D,IAAU/B,EAAGD,EAAGD,GAC1BF,EAAIE,GAAKgB,GAAK,GAAK,EAEnBsnvC,IADA5mvC,EAAsB,EAAlB+khB,GAAG,EAAG,EAAO,EAAJvohB,IACNC,EAAS,EAAN8D,IAAU/B,EAAGD,EAAGH,GAC1BA,EAAIA,GAAKkB,GAAK,GAAK,EAEnBsnvC,IADA5mvC,EAAsB,EAAlB+khB,GAAG,EAAG,EAAO,EAAJvohB,IACNC,EAAS,EAAN8D,IAAU/B,EAAGD,EAAGH,GAC1BA,EAAIA,GAAKkB,GAAK,GAAK,EAEnBsnvC,IADA5mvC,EAAsB,EAAlB+khB,GAAG,EAAG,EAAO,EAAJvohB,IACNC,EAAS,EAAN8D,IAAU/B,EAAGD,EAAGH,GAC1BA,EAAIA,GAAKkB,GAAK,GAAK,EAEnBsnvC,IADA5mvC,EAAsB,EAAlB+khB,GAAG,EAAG,EAAO,EAAJvohB,IACNC,EAAS,EAAN8D,IAAU/B,EAAGD,EAAGH,QAE1BwovC,IADA5mvC,EAAsB,EAAlB+khB,GAAG,EAAG,EAAO,EAAJvohB,IACNC,EAAS,EAAN8D,IAAU/B,EAAGD,EAAGH,GAAKkB,GAAK,GAAK,GAI3CvB,EAAIO,GAAKgB,GAAK,GAAK,GAEV,EAAJU,GAAS,IAGZwkvC,GAAO,EAAJlmvC,EAAO,EAAO,GADjBF,GAAKL,IAAM,GADXiC,EAAI1B,EAAI,EAAI,KACS,EAAIP,EAAIiC,IAAM,GAAK,EAAI1B,GAAK,IAC3B,EAAI,GAC1BA,EAAI0B,GAAK5B,IAAM,GAAK,GAAK,GAI3BwovC,IADAxovC,EAAsB,EAAlB2mhB,GAAG,EAAG,EAAO,EAAJvohB,IACNC,EAAS,EAAN8D,IAAU/B,EAAGD,EAAGD,GAC1BF,EAAIE,GAAKgB,GAAK,GAAK,EAEnBsnvC,IADA5mvC,EAAsB,EAAlB+khB,GAAG,EAAG,EAAO,EAAJvohB,IACNC,EAAS,EAAN8D,IAAU/B,EAAGD,EAAGH,GAC1BA,EAAIA,GAAKkB,GAAK,GAAK,EAEnBsnvC,IADA5mvC,EAAsB,EAAlB+khB,GAAG,EAAG,EAAO,EAAJvohB,IACNC,EAAS,EAAN8D,IAAU/B,EAAGD,EAAGH,GAC1BA,EAAIA,GAAKkB,GAAK,GAAK,EAEnBsnvC,IADA5mvC,EAAsB,EAAlB+khB,GAAG,EAAG,EAAO,EAAJvohB,IACNC,EAAS,EAAN8D,IAAU/B,EAAGD,EAAGH,GAE1BwovC,IADA5mvC,EAAsB,EAAlB+khB,GAAG,EAAG,EAAO,EAAJvohB,IACNC,EAAS,EAAN8D,IAAU/B,EAAGD,EAAGH,GAAKkB,GAAK,GAAK,EAjFW,CAmFtD,CAEA,SAASmlvC,GAAG7nvC,EAAGsC,GAGb,IAAIzC,EAAI,EACJ8B,EAAI,EACJxD,EAAI,EAIR,GAHAA,EAA2B,EAAvB4pvC,GAAO,GALX/nvC,GAAQ,GAKU,GAJlBsC,GAAQ,GAIa,IACrBqB,MAEoB,EAAdmtB,EAAO,IAAJ3yB,IAEP,OAAOA,EAGTA,EAA2B,EAAvB4pvC,GAAO,EAAJ/nvC,EAAW,EAAJsC,EAAO,IACrBqB,IACAxF,GAAQ,GAER6B,EAAG,GAAK,GAAK7B,EAGX,IAFAwD,EAAI,IAEM,CAIR,GAHA9B,EAA6C,EAAzCkovC,GAAO,EAAJ/nvC,EAAW,EAAJsC,EAAsB,GAAd,GAAKX,EAAI,GAAS,GACxCgC,IAEQ,GADR9D,GAAQ,GACK,MAAMG,EACnB,KAAI2B,IAAM,EAAIxD,IAAM,GAA0B,CAC5C0B,EAAI,EACJ,KACF,CAHyB8B,EAAIA,EAAI,EAAI,CAIvC,MAZgB9B,EAAI,QAaX,GAGX,OAAW,EADI,IAAN,EAAJA,GAAc,CAErB,CA+wBA,SAASmovC,GAAGhovC,EAAGsC,GAGb,IAAIzC,EAAI,EACJ8B,EAAI,EACJxD,EAAI,EAKR,GAJAA,EAA2B,EAAvB4pvC,GAAO,GALX/nvC,GAAQ,GAKU,GAJlBsC,GAAQ,GAIa,IACrBqB,MACAxF,GAAQ,IAIN,OAAOA,EAKT,IAFAwD,EAAI,IAEM,CAKR,GAJA9B,EAA6C,EAAzCkovC,GAAO,EAAJ/nvC,EAAW,EAAJsC,EAAsB,GAAd,GAAKX,EAAI,GAAS,GACxCgC,IAGQ,GAFR9D,GAAQ,GAEG,CACT8B,EAAI,EACJ,KACF,CAEA,KAAIA,IAAM,EAAIxD,IAAM,GAA0B,CAC5C0B,EAAI,EACJ8B,EAAI,EACJ,KACF,CAJyBA,EAAIA,EAAI,EAAI,CAKvC,CAEA,OAAe,IAAN,EAAJA,GAA0B,EAAJ9B,EACpB,CACT,CAEA,SAASuovC,GAAGpovC,EAAGsC,GAGb,IAAIzC,EAAI,EACJ8B,EAAI,EACJxD,EAAI,EACJuD,EAAI,EACJP,EAAI,EACJS,EAAI,EACJhC,EAAI,EAKR,GAJAA,EAA2B,EAAvBmovC,GAAO,GATX/nvC,GAAQ,GASU,GARlBsC,GAAQ,GAQa,IACrBqB,MACA/D,GAAQ,IAMN,OAFAA,EAAII,EACJgE,EAAM,GAFNpC,EAAIU,IAGO,EAAJ1C,EAMT,IAHAgC,EAAI,EACJ/B,EAAI,IAEM,CAER8B,EAAsB,EAAlBwmhB,GAAG,EAAG,EAAO,GADjBzmhB,EAAmB,GAAd,GAAKE,EAAI,GAAS,IAEvBzD,EAAU,EAANwF,IACJxC,EAA8B,EAA1B4mvC,GAAO,EAAJ/nvC,EAAW,EAAJsC,EAAW,EAAJZ,GACrBiC,IAGA3D,GAFA0B,EAAkC,EAA9BymhB,GAAe,EAAZtxf,GAAO,EAAJ11B,GAAY,EAAO,EAAJO,IAEjB1B,GAAK2B,EACbW,GAFAnB,EAAU,EAANwC,KAEIrB,GAAKnE,EAEb6B,EAAG,GAAK,IAAKH,EAAK,GAAqB,IAAd6B,EAAIC,EAAI,GAAyB,IAAdR,EAAIhD,EAAI,GAgD3C0B,EAAI,OA5CX,GAHA8B,EAA2B,EAAvBomvC,GAAO,EAAJ/nvC,EAAW,EAAJsC,EAAO,IACrBqB,IACAhC,GAAQ,GACe,CACrB9B,EAAI,EAEJyC,EAAG,OAAU,CAIX,OAHAnB,EAA6C,EAAzC4mvC,GAAO,EAAJ/nvC,EAAW,EAAJsC,EAAsB,GAAd,GAAKzC,EAAI,GAAS,GACxC8D,IAEY,EAAJxC,GACN,KAAK,EACH,MAAMmB,EAER,KAAK,EACH,MAEF,QAEIzC,EAAI,EACJ,MAAMG,EAIZ,KAAIH,IAAM,EAAI8B,IAAM,GAA0B,CAC5C9B,EAAI,EACJ,MAAMG,CACR,CAHyBH,EAAIA,EAAI,EAAI,CAIvC,CAIA,IAFAA,EAAI,IAEM,CASR,GAPA1B,EAA8B,EAA1B4pvC,GAAO,EAAJ/nvC,EAAW,EAAJsC,EAAW,GADzBnB,EAAmB,GAAd,GAAKtB,EAAI,GAAS,IAEvB8D,IACAjC,EAAsB,EAAlBymhB,GAAG,EAAG,EAAO,EAAJhnhB,GACbmB,KAAgB,EAANqB,KAEV3D,EAAIA,GAAK0B,GADTP,EAAkC,EAA9BgnhB,GAAe,EAAZtxf,GAAO,EAAJ14B,GAAY,EAAO,EAAJgD,IAEzBmB,EAAe,EAAXA,EAAKqB,MACL9D,IAAM,EAAI8B,IAAM,GAA0B,CAC5C9B,EAAI,EACJ,KACF,CAHyBA,EAAIA,EAAI,EAAI,CAIvC,CACF,MA3CUA,EAAI,QA4Ca,GAE7B,KAAI+B,IAAM,EAAIhC,IAAM,GAA4B,MAAvBgC,EAAIA,EAAI,EAAI,CACvC,CAGA,OADAoC,EAAM,EAAJ1B,GACS,EAAJtC,CACT,CAEA,SAASkovC,GAAGlovC,EAAGsC,GAGb,IAAIzC,EAAI,EACJ8B,EAAI,EACJxD,EAAI,EACJuD,EAAI,EACJP,EAAI,EAKR,GAJAQ,EAA2B,EAAvBomvC,GAAO,GAPX/nvC,GAAQ,GAOU,GANlBsC,GAAQ,GAMa,IACrBqB,MACAhC,GAAQ,IAMN,OAFAA,EAAI3B,EACJgE,EAAM,GAFNnE,EAAIyC,IAGO,EAAJX,EAKT,IAFA9B,EAAI,EAIFsB,EAA8B,EAA1B4mvC,GAAO,EAAJ/nvC,EAAW,EAAJsC,EAAW,GADzBZ,EAAmB,GAAd,GAAK7B,EAAI,GAAS,IAEvB8D,IACAxF,EAAsB,EAAlBgqhB,GAAG,EAAG,EAAO,EAAJzmhB,GACbY,KAAgB,EAANqB,KAEV3D,GADA0B,EAAkC,EAA9BymhB,GAAe,EAAZtxf,GAAO,EAAJ11B,GAAY,EAAO,EAAJO,IACjB1B,GAAK7B,EACbmE,EAAU,EAANqB,IAAUrB,EACVzC,IAAM,EAAI8B,IAAM,GAAK9B,EAAIA,EAAI,EAAI,EAIvC,OADAmE,EAAM,EAAJ1B,GACS,EAAJtC,CACT,CAEA,SAASiqvC,GAAGjqvC,EAAGsC,GAGb,IAAIzC,EAAI,EACJ8B,EAAI,EACJxD,EAAI,EACJuD,EAAI,EACJP,EAAI,EACJS,EAAI,EACJhC,EAAI,EAKR,GAJAA,EAA2B,EAAvBmovC,GAAO,GATX/nvC,GAAQ,GASU,GARlBsC,GAAQ,GAQa,IACrBqB,MACA/D,GAAQ,IAMN,OAFAA,EAAII,EACJgE,EAAM,GAFNpC,EAAIU,IAGO,EAAJ1C,EAMT,IAHAgC,EAAI,EACJ/B,EAAI,IAEM,CAER8B,EAAsB,EAAlBwmhB,GAAG,EAAG,EAAO,GADjBzmhB,EAAmB,GAAd,GAAKE,EAAI,GAAS,IAEvBzD,EAAU,EAANwF,IACJxC,EAA8B,EAA1B4mvC,GAAO,EAAJ/nvC,EAAW,EAAJsC,EAAW,EAAJZ,GACrBiC,IAGA3D,GAFA0B,EAAkC,EAA9BymhB,GAAe,EAAZ+guB,GAAO,EAAJ/nvC,GAAY,EAAO,EAAJO,IAEjB1B,GAAK2B,EACbW,GAFAnB,EAAU,EAANwC,KAEIrB,GAAKnE,EAEb6B,EAAG,GAAK,IAAKH,EAAK,GAAqB,IAAd6B,EAAIC,EAAI,GAAyB,IAAdR,EAAIhD,EAAI,GAgD3C0B,EAAI,OA5CX,GAHA8B,EAA2B,EAAvBomvC,GAAO,EAAJ/nvC,EAAW,EAAJsC,EAAO,IACrBqB,IACAhC,GAAQ,GACe,CACrB9B,EAAI,EAEJyC,EAAG,OAAU,CAIX,OAHAnB,EAA6C,EAAzC4mvC,GAAO,EAAJ/nvC,EAAW,EAAJsC,EAAsB,GAAd,GAAKzC,EAAI,GAAS,GACxC8D,IAEY,EAAJxC,GACN,KAAK,EACH,MAAMmB,EAER,KAAK,EACH,MAEF,QAEIzC,EAAI,EACJ,MAAMG,EAIZ,KAAIH,IAAM,EAAI8B,IAAM,GAA0B,CAC5C9B,EAAI,EACJ,MAAMG,CACR,CAHyBH,EAAIA,EAAI,EAAI,CAIvC,CAIA,IAFAA,EAAI,IAEM,CASR,GAPA6B,EAAsB,EAAlBymhB,GAAG,EAAG,EAAO,GADjBhqhB,EAAmB,GAAd,GAAK0B,EAAI,GAAS,IAEvBsB,EAAImB,IAAY,EAANqB,KACVrB,EAA8B,EAA1BylvC,GAAO,EAAJ/nvC,EAAW,EAAJsC,EAAW,EAAJnE,GACrBwF,IAEA3D,EAAIA,GAAK0B,GADTY,EAAkC,EAA9B6lhB,GAAe,EAAZ+guB,GAAO,EAAJ5mvC,GAAY,EAAO,EAAJnE,IAEzBmE,EAAe,EAAXnB,EAAKwC,MACL9D,IAAM,EAAI8B,IAAM,GAA0B,CAC5C9B,EAAI,EACJ,KACF,CAHyBA,EAAIA,EAAI,EAAI,CAIvC,CACF,MA3CUA,EAAI,QA4Ca,GAE7B,KAAI+B,IAAM,EAAIhC,IAAM,GAA4B,MAAvBgC,EAAIA,EAAI,EAAI,CACvC,CAGA,OADAoC,EAAM,EAAJ1B,GACS,EAAJtC,CACT,CAEA,SAASmovC,GAAGnovC,EAAGsC,GAGb,IAAIzC,EAAI,EACJ8B,EAAI,EACJxD,EAAI,EACJuD,EAAI,EACJP,EAAI,EAKR,GAJAQ,EAA2B,EAAvBomvC,GAAO,GAPX/nvC,GAAQ,GAOU,GANlBsC,GAAQ,GAMa,IACrBqB,MACAhC,GAAQ,IAMN,OAFAA,EAAI3B,EACJgE,EAAM,GAFNnE,EAAIyC,IAGO,EAAJX,EAKT,IAFA9B,EAAI,EAIF6B,EAAsB,EAAlBymhB,GAAG,EAAG,EAAO,GADjBhnhB,EAAmB,GAAd,GAAKtB,EAAI,GAAS,IAEvB1B,EAAImE,IAAY,EAANqB,KACVrB,EAA8B,EAA1BylvC,GAAO,EAAJ/nvC,EAAW,EAAJsC,EAAW,EAAJnB,GACrBwC,IAEA3D,GADAsC,EAAkC,EAA9B6lhB,GAAe,EAAZ+guB,GAAO,EAAJ5mvC,GAAY,EAAO,EAAJnB,IACjBnB,GAAK0B,EACbY,EAAU,EAANqB,IAAUxF,EACV0B,IAAM,EAAI8B,IAAM,GAAK9B,EAAIA,EAAI,EAAI,EAIvC,OADAmE,EAAM,EAAJ1B,GACS,EAAJtC,CACT,CAiNA,SAASiovC,GAAGjovC,GAEV,OAAqB,GAAT,GADZA,GAAQ,IACS,CACnB,CAEA,SAASsovC,GAAGtovC,EAAGH,GAGb,IAAI8B,EACAxD,EAgBJ,OAnBA6B,GAAQ,EAIR7B,EAAIqE,EACJA,EAAIA,EAAI,GAAK,EACbb,EAAIxD,GALJ0B,GAAQ,KAOG,GAAK,IAA2C,aAAnB,WAAhByC,EAAEtC,EAAI,GAAK,GAAkB,IAAmE,aAAnB,WAApBsC,EAAEtC,EAAI,EAAI,GAAK,GAAkB,IA71FpH,SAAYA,EAAGsC,EAAGzC,GAIhB,IAAI8B,EACAxD,EACJwD,EAAIa,EACJA,EAAIA,EAAI,GAAK,EAEbkzB,GARA11B,GAAQ,EACRsC,GAAQ,EACRzC,GAAQ,EAKR1B,EAAIwD,GAEJgnvC,EAAGxqvC,EAAG0B,EAAI,EAAI,GACd2C,EAAIb,CAEN,CAi1FIuovC,CAAGlqvC,EAAGH,EAAG8B,GACT9B,EAAe,EA/NnB,SAAYG,EAAGH,GACbG,GAAQ,EAER,IAMIoD,EANAzB,EAAI,EACJxD,EAAI,EACJuD,EAAI,EACJP,EAAI,EACJS,EAAI,EACJhC,EAAI,EAEJ8C,EAAI,EACJlB,EAAI,EAUR,GATA4B,EAAIZ,EACJA,EAAIA,EAAI,GAAK,EACb5C,EAAIwD,EAAI,GAAK,EACbjF,EAAIiF,EAAI,GAAK,EACb1B,EAAI0B,EAAI,GAAK,EACbjC,EAAIiC,EACJ+khB,GAAO,GAhBPtohB,GAAQ,GAgBE,EAAG,IACb8B,EAAU,UAANgC,KAEC9D,EACH,OAAqB,EAAhByC,EAAEtC,EAAI,GAAK,IAAU,IAQL,EAAhBsC,EAAEtC,EAAI,GAAK,IAAU,IAQJ,EAAjBsC,EAAEtC,EAAI,IAAM,IAAU,GAdzBJ,EAAI,EACJoE,EAAM,GAFNpC,EAAI,IAGJY,EAAIY,EACO,EAAJxD,IAmBTuohB,GAAW,EAAR55f,EAAGvuB,GAAQ,EAAG,IACjB4B,EAAU,EAAN+B,IAAUhC,EACd/B,GAAK,EACLoE,EAAM,EAAJpC,GACFY,EAAIY,EACO,EAAJxD,GAQT,GANA0C,EAAE1C,GAAK,GAAK0C,EAAEtC,GAAK,GACnBsC,EAAE1C,EAAI,GAAK,GAAK0C,EAAEtC,EAAI,GAAK,GAC3BsC,EAAE1C,EAAI,GAAK,GAAK0C,EAAEtC,EAAI,GAAK,GAC3BsC,EAAE1C,EAAI,IAAM,GAAK0C,EAAEtC,EAAI,IAAM,GAC7B4B,EAAIhC,EAAI,EAAI,GAEH,EAAJC,GAAS,EAGZ,IAFAG,GAAK,EAGHsC,EAAEnE,GAAK,GAAKmE,EAAEV,GAAK,GACnBU,EAAEnE,EAAI,GAAK,GAAKmE,EAAEV,EAAI,GAAK,GAC3BU,EAAEnE,EAAI,GAAK,GAAKmE,EAAEV,EAAI,GAAK,GAEjB,EAAJ/B,GAOJ+1B,GAAGh0B,GACHU,EAAEZ,GAAK,GAAKY,EAAEV,GAAK,GACnBU,EAAEZ,EAAI,GAAK,GAAKY,EAAEV,EAAI,GAAK,GAC3BU,EAAEZ,EAAI,GAAK,GAAKY,EAAEV,EAAI,GAAK,GAC3BmnvC,GAAGrnvC,KAVHonvC,GAAGlnvC,GACHU,EAAEZ,GAAK,GAAKY,EAAEV,GAAK,GACnBU,EAAEZ,EAAI,GAAK,GAAKY,EAAEV,EAAI,GAAK,GAC3BU,EAAEZ,EAAI,GAAK,GAAKY,EAAEV,EAAI,GAAK,GAC3BonvC,GAAGtnvC,IASLu1B,EAAG94B,EAAGuD,EAAGP,GACTg1B,EAAGh1B,GAEHuB,EAAsB,EAAlBylhB,GAAG,EAAG,EAAO,GADjB3mhB,EAAmB,GAAd,GAAK3B,EAAI,GAAS,IAEvB8B,KAAgB,EAANgC,KAEV3D,GADAwB,EAA8B,EAA1B2mhB,GAAW,EAAR0guB,GAAG1nvC,GAAQ,EAAO,EAAJK,IACbxB,GAAK0C,EACbf,EAAU,EAANgC,IAAUhC,GACL,EAAJ9B,GAAS,GAAKA,EAAIA,GAAK,EAAI,OAE3BG,GAAK,EAEdA,EAAG,GAAK,IAAkB,EAAZsC,EAAEV,GAAK,KAAW,IAAqB,EAAhBU,EAAE1C,EAAI,GAAK,KAAW,IAA2B,EAAjB0C,EAAE1C,EAAI,IAAM,KAAW,EAAO,CAOjG,GALAC,EAAuB,EAAnBsohB,GAAO,GADXhqhB,EAAY,EAARowB,EAAG3uB,IACO,EAAG,IACjBC,GAAQG,EACRA,EAAU,EAAN2D,KAAe,QAALhC,EACdR,EAAY,EAAR2tB,EAAGlvB,KAEO,EAARkxB,EAAG3yB,IAAS,CAChB,IAAS,EAAJgD,IAAU,EAAK,MAGpB,IAFAO,EAAI,IAEM,CAKR,GAJAvD,EAA2B,EAAvB4pvC,GAAO,EAAJlovC,EAAW,EAAJG,EAAO,IACrB2D,IACAxF,GAAQ,GAKN,IAFAwD,EAAI,EAIF/B,EAA8B,EAA1BmovC,GAAO,EAAJlovC,EAAW,EAAJG,EAAW,GADzBwB,EAAmB,GAAd,GAAKG,EAAI,GAAS,IAEvBgC,IACAjB,EAAsB,EAAlBylhB,GAAG,EAAG,EAAO,EAAJ3mhB,GACbxB,KAAgB,EAAN2D,KAEV9D,EAAIA,GAAK6C,GADTlB,EAAkC,EAA9B2mhB,GAAe,EAAZtxf,GAAO,EAAJj3B,GAAY,EAAO,EAAJ4B,IAEzBxB,EAAe,EAAXA,EAAK2D,IACLhC,IAAM,EAAIxD,IAAM,GAAKwD,EAAIA,EAAI,EAAI,EAKzC,IAAS,GADTD,EAAIA,EAAI,EAAI,MACQ,EAAJP,GAAU,MAAMnB,CAClC,CACF,CAEA0B,EAA2B,EAAvBqmvC,GAAO,EAAJlovC,EAAW,EAAJG,EAAO,IACrB2D,IACAjC,GAAQ,GAERY,EAAG,GAAK,GAAIZ,EAAG,CACbC,EAAI,EAEJ9B,EAAG,OAAU,CAIX,OAHA2B,EAA6C,EAAzCumvC,GAAO,EAAJlovC,EAAW,EAAJG,EAAsB,GAAd,GAAK2B,EAAI,GAAS,GACxCgC,IAEY,EAAJnC,GACN,KAAK,EACH,MAAM3B,EAER,KAAK,EACH,MAEF,QACE,MAAMyC,EAGV,KAAIX,IAAM,EAAID,IAAM,GAA4B,MAAMY,EAA7BX,EAAIA,EAAI,EAAI,CACvC,CAEA,GAA2B,EAAvBgtB,EAAGxwB,EAAe,EAAZmE,EAAE1C,GAAK,IAGf,IAFA+B,EAAI,EAIFe,EAAsB,EAAlBylhB,GAAG,EAAG,EAAO,GADjBvohB,EAAmB,GAAd,GAAK+B,EAAI,GAAS,IAEvBH,EAAIxB,IAAY,EAAN2D,KACV3D,EAA8B,EAA1B+nvC,GAAO,EAAJlovC,EAAW,EAAJG,EAAW,EAAJJ,GACrB+D,IAEA9D,EAAIA,GAAK6C,GADT1C,EAAkC,EAA9BmohB,GAAe,EAAZ+guB,GAAO,EAAJlpvC,GAAY,EAAO,EAAJJ,IAEzBI,EAAe,EAAXwB,EAAKmC,IACLhC,IAAM,EAAID,IAAM,GAAKC,EAAIA,EAAI,EAAI,OAKvC,IAFAA,EAAI,EAIF/B,EAA8B,EAA1BmovC,GAAO,EAAJlovC,EAAW,EAAJG,EAAW,GADzBwB,EAAmB,GAAd,GAAKG,EAAI,GAAS,IAEvBgC,IACAjB,EAAsB,EAAlBylhB,GAAG,EAAG,EAAO,EAAJ3mhB,GACbxB,KAAgB,EAAN2D,KAEV9D,EAAIA,GAAK6C,GADTlB,EAAkC,EAA9B2mhB,GAAe,EAAZtxf,GAAO,EAAJj3B,GAAY,EAAO,EAAJ4B,IAEzBxB,EAAe,EAAXA,EAAK2D,IACLhC,IAAM,EAAID,IAAM,GAAKC,EAAIA,EAAI,EAAI,CAG3C,QAAW,GAEX,IAAS,EAAJR,GAAS,EAAG,CACfQ,EAAI,EAEJ,GACE9B,EAAe,EAAXuovC,GAAGvovC,EAAGG,GACVA,EAAU,EAAN2D,IACJhC,EAAIA,EAAI,EAAI,SACA,EAAJA,KAAe,EAAJR,GACvB,CACF,MACEtB,EAAI,EACJG,EAAI,QACK,GAMX,OAHAwB,EAAI3B,EACJmE,EAAM,GAFNtB,EAAI1C,IAGJwC,EAAIY,EACO,EAAJ5B,CACT,CAkBQ2ovC,CAAGxovC,EAAG9B,GACVG,EAAU,EAAN2D,MAEJ3D,EAAI,EACJH,EAAI,GAGNmE,EAAM,EAAJhE,GACFwC,EAAIrE,EACO,EAAJ0B,CACT,CAEA,SAASuqvC,GAAGpqvC,EAAGH,EAAG8B,GAIhB,IACID,EADAvD,EAAI,EAEJgD,EAAI,EACJS,EAAI,EASR,GARAF,EAAQ,GALRC,GAAQ,GAKI,EACZR,EAA2B,EAAvB4mvC,GAAO,GARX/nvC,GAAQ,GAQU,GAPlBH,GAAQ,GAOa,IACrB8D,IACAxC,GAAQ,GACRS,EAA2B,EAAvBmmvC,GAAO,EAAJ/nvC,EAAW,EAAJH,EAAO,IACrB8D,IACAxF,EAAe,IAAN,EAAJgD,GAEe,EAAd2vB,EAAO,IAAJlvB,GAOF,IAAIzD,EAET,OAAOyD,EACAzD,EAAI,CAAG,KAVQ,CACtB,GAAIA,EAEF,OAAOyD,EAGkDzD,EAApC,IAAN,EAAZmE,EAAEZ,GAAK,KAAsC,IAAN,EAAhBY,EAAEX,EAAI,GAAK,IAAgD,IAAN,EAAjBW,EAAEX,EAAI,IAAM,IAAe,EAAe,CAC5G,CAOA,IAFAA,EAAI,EAGQ,EAAJA,EAAyBonvC,GAAGrnvC,GAAlBsnvC,GAAGtnvC,GACnBE,EAA6C,EAAzCmmvC,GAAO,EAAJ/nvC,EAAW,EAAJH,EAAsB,GAAd,GAAK8B,EAAI,GAAS,GACxCgC,IACAslvC,GAAGvnvC,EAAO,EAAJE,GACFD,IAAM,EAAIR,IAAM,GAAKQ,EAAIA,EAAI,EAAI,EAGvC,OAAW,EAAJxD,CACT,CAEA,SAASksvC,GAAGrqvC,EAAGH,EAAG8B,GAGhBA,GAAQ,EACR,IAKIyB,EAEA5B,EAPArD,EAAI,EACJuD,EAAI,EACJP,EAAI,EACJS,EAAI,EACJhC,EAAI,EAEJ8C,EAAI,EAERlB,EAAIgB,EACJA,EAAIA,EAAI,GAAK,EACbY,EAAI5B,EACJkB,EAA2B,EAAvBqlvC,GAAO,GAdX/nvC,GAAQ,GAcU,GAblBH,GAAQ,GAaa,IACrB8D,IACAjB,GAAQ,IAER1C,EAAG,GAAK,GAAmB,IAAN,EAAR8wB,EAAGpuB,MAAgBvB,EAA2B,EAAvB4mvC,GAAO,EAAJ/nvC,EAAW,EAAJH,EAAO,IAAS8D,IAAgC,IAAN,GAAjBxC,GAAQ,MAAuB,CACpGhD,EAAI,EAEJmE,EAAG,OAAU,CAIX,OAHA1C,EAA6C,EAAzCmovC,GAAO,EAAJ/nvC,EAAW,EAAJH,EAAsB,GAAd,GAAK1B,EAAI,GAAS,GACxCwF,IAEY,EAAJ/D,GACN,KAAK,EACH,MAAM0C,EAER,KAAK,EACH,MAEF,QAEInE,EAAI0B,EACJ,MAAMG,EAIZ,KAAI7B,IAAM,EAAIgD,IAAM,GAA0B,CAC5ChD,EAAI0B,EACJ,MAAMG,CACR,CAHyB7B,EAAIA,EAAI,EAAI,CAIvC,CAKA,IAHAuD,EAAI,EACJvD,EAAI0B,EAIF+B,EAAsB,EAAlBumhB,GAAG,EAAG,EAAO,GADjBtohB,EAAmB,GAAd,GAAK6B,EAAI,GAAS,IAEvB9B,EAAIzB,IAAY,EAANwF,KACVxF,EAA8B,EAA1B4pvC,GAAO,EAAJ/nvC,EAAW,EAAJ7B,EAAW,EAAJ0B,GACrB8D,IAEA3D,EAAIA,GAAK4B,GADTzD,EAAkC,EAA9BgqhB,GAAe,EAAZ+guB,GAAO,EAAJ/qvC,GAAY,EAAO,EAAJ0B,IAEzB1B,EAAe,EAAXyB,EAAK+D,IACLjC,IAAM,EAAIP,IAAM,GAAKO,EAAIA,EAAI,EAAI,CAEzC,MAASvD,EAAI0B,QAAc,GAQ3B,GANAD,EAAI,MAAY,GAAJ8C,EAAS,GAAK,EAC1BJ,EAAEX,GAAK,GAAKW,EAAE1C,GAAK,GACnB0C,EAAEX,EAAI,GAAK,GAAKW,EAAE1C,EAAI,GAAK,GAC3B0C,EAAEX,EAAI,GAAK,GAAKW,EAAE1C,EAAI,GAAK,GAC3B0C,EAAEX,EAAI,IAAM,GAAKW,EAAE1C,EAAI,IAAM,GAET,EAAdwqvC,GAAGpqvC,EAAG7B,EAAGwD,GAAf,CAgBA,GAXAC,EAAID,EAAI,EAAI,EACZW,EAAEc,GAAK,GAAKd,EAAEV,GAAK,GACnBU,EAAEc,EAAI,GAAK,GAAKd,EAAEV,EAAI,GAAK,GAC3BU,EAAEc,EAAI,GAAK,GAAKd,EAAEV,EAAI,GAAK,GAC3BT,EAA2B,EAAvB4mvC,GAAO,EAAJ/nvC,EAAW,EAAJ7B,EAAO,IACrBwF,IACA/D,EAAQ,GAAJuB,EACM,EAAJA,GACJ6nvC,GAAGpnvC,GACHT,EAAIvB,EAAI,EAAI,GAFEuB,EAAIvB,EAIN,EAARkxB,EAAGpuB,GAAwB,CAC/B7C,EAAG,GAAK,GAAKD,EAGX,IAFAC,EAAI,IAEM,CAKR,GAJA6B,EAA6C,EAAzCqmvC,GAAO,EAAJ/nvC,EAAW,EAAJ7B,EAAsB,GAAd,GAAK0B,EAAI,GAAS,GACxC8D,IAGQ,GAFRjC,GAAQ,GAEG,CACTvD,EAAIuD,EACJ,MAAM7B,CACR,CAEA,KAAIA,IAAM,EAAID,IAAM,GAA0B,CAC5CzB,EAAI,EACJ,KACF,CAHyB0B,EAAIA,EAAI,EAAI,CAIvC,MAjBgB1B,EAAI,QAkBX,GAEXA,EAAe,IAAN,EAAJA,GAAc,CACrB,MAtBoBA,EAAI,EAwBxB,GAAuB,EAAjBuiE,GAAG/+D,EAAGR,EAAGhD,EAAG,GAMX,CACL,GAAY,EAAR2yB,EAAGpuB,GAAU,UAAqC,IAAN,EAAjBg+D,GAAG/+D,EAAGR,EAAG,EAAG,MAClC,EAAJA,KAAe,EAAJvB,IAAUkpvC,GAAGlnvC,EAC/B,MARW,EAAJT,KAAe,EAAJvB,KACd0C,EAAEV,GAAK,GAAKU,EAAEc,GAAK,GACnBd,EAAEV,EAAI,GAAK,GAAKU,EAAEc,EAAI,GAAK,GAC3Bd,EAAEV,EAAI,GAAK,GAAKU,EAAEc,EAAI,GAAK,IAO/BZ,EAAIhB,CAhDJ,MAFEgB,EAAIhB,CAoDR,CAEA,SAAS+mvC,GAAGvovC,EAAGsC,EAAGzC,GAIhB,IAAI8B,EACAxD,EAFJ0B,GAAQ,EAGR8B,EAAIa,EACJA,EAAIA,EAAI,GAAK,EAEb6nvC,GARArqvC,GAAQ,EACRsC,GAAQ,EAMRnE,EAAIwD,GAEJW,EAA2B,EAAvBylvC,GAAO,EAAJ/nvC,EAAW,EAAJsC,EAAO,IACrBqB,IACA6xrC,GAAGr3rC,EAAO,GAAJmE,EAAQzC,GACd2C,EAAIb,CAEN,CAEA,SAAS6mvC,GAAGxovC,EAAGsC,EAAGzC,GAGhBA,GAAQ,EACR,IAEI6B,EACAP,EAHAQ,EAAI,EACJxD,EAAI,EAIRgD,EAAIqB,EACJA,EAAIA,EAAI,GAAK,EAEb6nvC,GAXArqvC,GAAQ,EACRsC,GAAQ,EASRZ,EAAIP,GAEJQ,EAA2B,EAAvBomvC,GAAO,EAAJ/nvC,EAAW,EAAJsC,EAAO,IACrBqB,IACAhC,EAAyB,IAAN,EAAdmvB,EAAO,IAAJnvB,IACRxD,EAA2B,EAAvB4pvC,GAAO,EAAJ/nvC,EAAW,EAAJsC,EAAO,IACrBqB,IACAxF,GAAQ,GAER6B,EAAG,GAAK,IAAK2B,EAAG,CACd,GAAQ,EAAJxD,EAGF,IAFAwD,EAAI,IAEM,CAER,KAAqB,KADgB,EAAjCwmhB,GAAG,EAAG,EAAkB,GAAd,GAAKxmhB,EAAI,GAAS,IACrB3B,EAAI,GAAiC,KAAf,EAAN2D,KAAWrB,EAAI,IAAY,MAAMtC,EAC5D,KAAI2B,IAAM,EAAIxD,IAAM,GAA4B,MAAvBwD,EAAIA,EAAI,EAAI,CACvC,CAKF,OAFAwmO,GAAGzmO,EAAGvD,EAAG,EAAG,EAAG0B,QACf2C,EAAIrB,EAEN,QAAW,GAEXuovC,GAAGhovC,EAAGvD,EAAG,EAAG,EAAG0B,GACf2C,EAAIrB,CAEN,CAiLA,SAASqrD,GAAGxsD,EAAGH,GAEbA,GAAQ,EACR,IAKID,EALA+B,EAAI,EACJxD,EAAI,EACJuD,EAAI,EACJP,EAAI,EACJS,EAAI,EAEJwB,EAAI,EAIR,GAHA+khB,GAAO,GATPnohB,GAAQ,GASE,EAAG,IACbJ,EAAU,UAAN+D,KAEK,EAAJ3D,GAAS,EAAd,CACE7B,EAAI,EACJwD,EAAI,EAEJ,GACc,EAARmvB,EAAG3yB,KACLgqhB,GAAO,EAAJhqhB,EAAO,EAAG,IACbyD,EAAe,EAAXhC,EAAK+D,IAETrB,GADAtC,EAAIH,GAAK8B,GAAK,GAAK,IACZ,IAAM,EACbW,EAAEtC,EAAI,GAAK,GAAK4B,EAChBD,EAAIA,EAAI,EAAI,GAGdxD,EAAIA,EAAI,EAAI,QACM,MAAN,EAAJA,GAGZ,KAlBA,CAoBAyD,EAAI,EACJD,EAAI,EAEJ,EAAG,CACD,GAAY,EAARmvB,EAAGlvB,GAAQ,CAMb,IALAumhB,GAAO,EAAJvmhB,EAAO,EAAG,IACbzD,EAAI,EACJuD,GAAK,EACLP,EAAe,EAAXvB,EAAK+D,IAIPjC,KADA0B,EAAqC,EAAjC+khB,GAAG,EAAG,EAAkB,GAAd,GAAKhqhB,EAAI,GAAS,IAEhCgD,KAAgB,EAANwC,MACD,EAAJxF,KAAe,EAAJ6B,IAAyB7B,EAAIA,EAAI,EAAI,EAIvDmE,GADAc,EAAIvD,GAAK8B,GAAK,GAAK,IACZ,GAAKD,EACZY,EAAEc,EAAI,GAAK,GAAKjC,EAChBQ,EAAIA,EAAI,EAAI,CACd,CAEAC,EAAIA,EAAI,EAAI,CACd,OAAoB,MAAN,EAAJA,GA1BV,CA6BF,CAEA,SAAS0ovC,GAAGtqvC,EAAGH,EAAG8B,EAAGxD,GAKnB,IAGIyB,EAHA8B,EAAI,EACJP,EAAI,EACJS,EAAI,EAEJwB,EAAI,EACJV,EAAI,EAKR,GAJA9C,EAAI4C,EACJA,EAAIA,EAAI,GAAK,EACbZ,EAAIhC,GAEK,GAdTI,GAAQ,MAcY,GAZpB2B,GAAQ,KAYsB,GAb9B9B,GAAQ,MAaiC,GAXzC1B,GAAQ,KAWuC,EAAiC,YAAnB,WAAJ0B,EAAiB,IAAmB,EAAiC,YAAnB,WAAJ1B,EAAiB,GAGtH,OADAqE,EAAI5C,EACGgC,EAST,GANAF,EAA2B,EAAvBqmvC,GAAO,EAAJ/nvC,EAAW,EAAJH,EAAO,IACrB8D,IACAjC,GAAQ,GACRP,EAA2B,EAAvB4mvC,GAAO,EAAJpmvC,EAAW,EAAJxD,EAAO,IACrBwF,KAES,EAAJjC,KAAe,GAAJP,EAAS,GAGvB,OADAqB,EAAI5C,EACGgC,EAKT,GAFAT,EAAIO,GAAK,EAAI,EAETA,IAAM,EAAI,IAAKgB,EAAkB,EAAdqnvC,GAAG/pvC,EAAGH,EAAGsB,GAAQiC,EAAU,EAANO,KAAmC,EAAJjB,KAAe,GAArCvB,EAAkB,EAAd4ovC,GAAGpovC,EAAGxD,EAAGgD,MAAkC,EAAJiC,KAAiB,EAANO,MAAe,CASxH,GAPAjC,EAA8B,EAA1BqmvC,GAAO,EAAJ/nvC,EAAW,EAAJH,EAAW,GADzBsB,EAAe,GAAN,GAAJO,GAAc,IAEnBiC,IACAjC,GAAQ,EACRP,EAA8B,EAA1B4mvC,GAAO,EAAJpmvC,EAAW,EAAJxD,EAAW,EAAJgD,GACrBwC,IAGe,IAAN,EAAJjC,GAAyB,IAAN,GAFxBP,GAAQ,IAKN,OADAqB,EAAI5C,EACG8C,EAGT,IAAgC,EAA3BJ,EAAE,OAASZ,GAAK,IAAM,MAAgB,EAAJP,GAGrC,OADAqB,EAAI5C,EACG8C,EAGT,IAAgC,EAA3BJ,EAAE,OAASZ,GAAK,IAAM,MAAgB,EAAJP,GAGrC,OADAqB,EAAI5C,EACG8C,CAEX,CAGAvB,GADAO,EAAIE,GACI,GAAK,EAEb,GACEU,EAAEZ,GAAK,GAAK,EACZA,EAAIA,EAAI,EAAI,SACA,EAAJA,IAAc,EAAJP,IAYpB,OAVAiE,EAAEpF,EAAGH,EAAG,EAAG+B,GAMFF,GAHc,EAAZY,GAFXI,EAAId,IAEc,MAAgB,EAAJD,KAA0B,EAAhBW,EAAEI,EAAI,GAAK,MAAgB,EAAJvE,KAA6C,EAAZmE,GAAlBI,EAAId,EAAI,EAAI,IAAa,MAAgB,EAAJD,KAA0B,EAAhBW,EAAEI,EAAI,GAAK,MAAgB,EAAJvE,KAAoD,EAAZmE,GAAnBI,EAAId,EAAI,GAAK,IAAa,MAAgB,EAAJD,KAA0B,EAAhBW,EAAEI,EAAI,GAAK,MAAgB,EAAJvE,KAAoD,EAAZmE,GAAnBI,EAAId,EAAI,GAAK,IAAa,MAAgB,EAAJD,KAA0B,EAAhBW,EAAEI,EAAI,GAAK,MAAgB,EAAJvE,KAAoD,EAAZmE,GAAnBI,EAAId,EAAI,GAAK,IAAa,MAAgB,EAAJD,KAA0B,EAAhBW,EAAEI,EAAI,GAAK,MAAgB,EAAJvE,KAAoD,EAAZmE,GAAnBI,EAAId,EAAI,GAAK,IAAa,MAAgB,EAAJD,KAA0B,EAAhBW,EAAEI,EAAI,GAAK,MAAgB,EAAJvE,GAGvf,EAD6D,IAAtD,EAAZmE,GADNZ,EAAIE,EAAI,GAAK,IACA,MAAgB,EAAJD,IAA0B,EAAhBW,EAAEZ,EAAI,GAAK,MAAgB,EAAJvD,GAAS,GAIrEqE,EAAI5C,EACO,EAFP8B,CAGN,CAmMA,SAAS2hB,GAAGrjB,EAAGH,EAAG8B,GAGhBA,GAAQ,EACR,IACID,EACAP,EACAS,EACAhC,EAJAzB,EAAI,EAeR,GAVAyD,EAAIY,EACJA,EAAIA,EAAI,GAAK,EACbrB,EAAIS,EACJzD,EAA2B,EAAvB4pvC,GAAO,GAXX/nvC,GAAQ,GAWU,GAVlBH,GAAQ,GAUa,IACrB8D,IAIA9D,EAAsB,EA2hExB,SAAYG,EAAGH,EAAG8B,GAGhBA,GAAQ,EACR,IACID,EADAvD,EAAI,EAIR,OAFAA,EAAe,EAAX0pvC,GALJ7nvC,GAAQ,EACRH,GAAQ,IAMH8B,GAAK,EAAI,KAAO,EAAI,GAOV,IAAN,EAAJA,IAFLD,EAAe,IAAN,EAAJvD,KAHIwD,GAUTxD,EAAe,EAzKjB,SAAY6B,EAAGH,GAGb,IAEI6B,EACAP,EAIAuB,EAPAf,EAAI,EACJxD,EAAI,EAGJyD,EAAI,EACJhC,EAAI,EACJwD,EAAI,EAYR,GAVAV,EAAIF,EACJA,EAAIA,EAAI,GAAK,EAEbrB,EAAIuB,EACJ2nvC,GAdArqvC,GAAQ,EACRH,GAAQ,EAWR6B,EAAIgB,EAAI,GAAK,GAGbd,EAAe,EAAXiovC,GAAG7pvC,EAAGH,GACVuD,EAAe,EAAX4kvC,GAAGhovC,EAAGH,GAl/NZ,SAAYG,EAAGH,GAGbG,EAAI,MAAY,IAFhBA,GAAQ,GAEa,GAAK,EAC1BsC,GAFAzC,GAAQ,IAED,GAAKyC,EAAEtC,GAAK,GACnBsC,EAAEzC,EAAI,GAAK,GAAKyC,EAAEtC,EAAI,GAAK,GAC3BsC,EAAEzC,EAAI,GAAK,GAAKyC,EAAEtC,EAAI,GAAK,GAC3BsC,EAAEzC,EAAI,IAAM,GAAKyC,EAAEtC,EAAI,IAAM,EAE/B,CA0+NEsxB,CAAG1vB,EAAGT,GACNtB,EAA2B,EAz+N7B,SAAYG,EAAGH,GACbG,GAAQ,EAER,IAAI2B,EAAI,EACJxD,EAAI,EAER,IAJA0B,GAAQ,KAIE,EAAI,GAEZ,OAAOA,EAGT,GAAK,IAAqC,EAAhCyC,EAAE,OAAa,IAAJzC,EAAU,IAAM,MAAgB,EAAJG,GAC/C,IAAyC,EAApCsC,EAAE,OAAa,IAAJzC,EAAU,GAAK,GAAK,MAAgB,EAAJG,GAC9C,IAA0C,EAArCsC,EAAE,OAAa,IAAJzC,EAAU,GAAK,IAAM,MAAgB,EAAJG,GAC/C,IAA0C,EAArCsC,EAAE,OAAa,IAAJzC,EAAU,GAAK,IAAM,MAAgB,EAAJG,GAC/C,IAA0C,EAArCsC,EAAE,OAAa,IAAJzC,EAAU,GAAK,IAAM,MAAgB,EAAJG,GAC/C,IAA0C,EAArCsC,EAAE,OAAa,IAAJzC,EAAU,GAAK,IAAM,MAAgB,EAAJG,GAC/C,IAA0C,EAArCsC,EAAE,OAAa,IAAJzC,EAAU,GAAK,IAAM,MAAgB,EAAJG,GAC/C,IAA0C,EAArCsC,EAAE,OAAa,IAAJzC,EAAU,GAAK,IAAM,MAAgB,EAAJG,GAC/C,IAA0C,EAArCsC,EAAE,OAAa,IAAJzC,EAAU,GAAK,IAAM,MAAgB,EAAJG,GAC/C,IAA0C,EAArCsC,EAAE,OAAa,IAAJzC,EAAU,GAAK,IAAM,MAAgB,EAAJG,GAC/C,IAA0C,EAArCsC,EAAE,OAAa,IAAJzC,EAAU,GAAK,IAAM,MAAgB,EAAJG,GAC/C,IAA0C,EAArCsC,EAAE,OAAa,IAAJzC,EAAU,GAAK,IAAM,MAAgB,EAAJG,GAC/C,IAA0C,EAArCsC,EAAE,OAAa,IAAJzC,EAAU,GAAK,IAAM,MAAgB,EAAJG,GAC/C,IAA2C,EAAtCsC,EAAE,OAAa,IAAJzC,EAAU,GAAK,KAAO,MAAgB,EAAJG,GAChD,IAA2C,EAAtCsC,EAAE,OAAa,IAAJzC,EAAU,GAAK,KAAO,MAAgB,EAAJG,GAChD,IAA2C,EAAtCsC,EAAE,OAAa,IAAJzC,EAAU,GAAK,KAAO,MAAgB,EAAJG,GAChD,IAA2C,EAAtCsC,EAAE,OAAa,IAAJzC,EAAU,GAAK,KAAO,MAAgB,EAAJG,GAAQ,CACxD,IAA2C,EAAtCsC,EAAE,OAAa,IAAJzC,EAAU,GAAK,KAAO,MAAgB,EAAJG,GAI3C,CACL,IAA2C,EAAtCsC,EAAE,OAAa,IAAJzC,EAAU,GAAK,KAAO,MAAgB,EAAJG,GAAQ,CACxDA,EAAI,EACJ2B,EAAI,EACJxD,EAAI,EACJ,KACF,CAEA,IAA2C,EAAtCmE,EAAE,OAAa,IAAJzC,EAAU,GAAK,KAAO,MAAgB,EAAJG,GAAQ,CACxDA,EAAI,EACJ2B,EAAI,EACJxD,EAAI,EACJ,KACF,CAEA,IAA2C,EAAtCmE,EAAE,OAAa,IAAJzC,EAAU,GAAK,KAAO,MAAgB,EAAJG,GAAQ,CACxDA,EAAI,EACJ2B,EAAI,EACJxD,EAAI,EACJ,KACF,CAEA,IAA2C,EAAtCmE,EAAE,OAAa,IAAJzC,EAAU,GAAK,KAAO,MAAgB,EAAJG,GAAQ,CACxDA,EAAI,EACJ2B,EAAI,EACJxD,EAAI,EACJ,KACF,CAEA,IAA2C,EAAtCmE,EAAE,OAAa,IAAJzC,EAAU,GAAK,KAAO,MAAgB,EAAJG,GAAQ,CACxDA,EAAI,EACJ2B,EAAI,EACJxD,EAAI,EACJ,KACF,CAEA,IAA2C,EAAtCmE,EAAE,OAAa,IAAJzC,EAAU,GAAK,KAAO,MAAgB,EAAJG,GAAQ,CACxDA,EAAI,EACJ2B,EAAI,EACJxD,EAAI,EACJ,KACF,CAEA,IAA2C,EAAtCmE,EAAE,OAAa,IAAJzC,EAAU,GAAK,KAAO,MAAgB,EAAJG,GAAQ,CACxDA,EAAI,EACJ2B,EAAI,EACJxD,EAAI,EACJ,KACF,CAEA,IAA2C,EAAtCmE,EAAE,OAAa,IAAJzC,EAAU,GAAK,KAAO,MAAgB,EAAJG,GAAQ,CACxDA,EAAI,EACJ2B,EAAI,EACJxD,EAAI,EACJ,KACF,CAEA,IAA2C,EAAtCmE,EAAE,OAAa,IAAJzC,EAAU,GAAK,KAAO,MAAgB,EAAJG,GAAQ,CACxDA,EAAI,EACJ2B,EAAI,EACJxD,EAAI,EACJ,KACF,CAEA,OAAO6B,CACT,CApEEA,EAAI,EACJ2B,EAAI,EACJxD,EAAI,CAmER,MACE6B,EAAI,EACJ2B,EAAI,EACJxD,EAAI,OAGN6B,EAAI,EACJ2B,EAAI,EACJxD,EAAI,OAGN6B,EAAI,EACJ2B,EAAI,EACJxD,EAAI,OAGN6B,EAAI,EACJ2B,EAAI,EACJxD,EAAI,OAGN6B,EAAI,EACJ2B,EAAI,EACJxD,EAAI,OAGN6B,EAAI,EACJ2B,EAAI,EACJxD,EAAI,OAGN6B,EAAI,EACJ2B,EAAI,EACJxD,EAAI,OAGN6B,EAAI,EACJ2B,EAAI,EACJxD,EAAI,OAGN6B,EAAI,EACJ2B,EAAI,EACJxD,EAAI,OAGN6B,EAAI,EACJ2B,EAAI,EACJxD,EAAI,OAGN6B,EAAI,EACJ2B,EAAI,EACJxD,EAAI,OAGN6B,EAAI,EACJ2B,EAAI,EACJxD,EAAI,OAGN6B,EAAI,EACJ2B,EAAI,EACJxD,EAAI,OAGN6B,EAAI,EACJ2B,EAAI,EACJxD,EAAI,OAGN6B,EAAI,EACJ2B,EAAI,EACJxD,EAAI,OAGN6B,EAAI,EACJ2B,EAAI,EACJxD,EAAI,OAGN6B,EAAI,EACJ2B,EAAI,EACJxD,EAAI,QACK,GAGX,OADiF,EAA7EmE,EAAE,OAAa,IAAJzC,EAAU,IAAU,GAAJ8B,EAAS,IAAU,GAAJ3B,EAAS,IAAM7B,GAAK,GAAK,GAAK,EAE9E,CA+yNMosvC,CAAG3ovC,EAAe,EAAZU,EAAEZ,GAAK,MAEH,EAARovB,EAAGlvB,IAGP,OADAY,EAAIE,EACO,EAFP7C,EAKD,OAAY,EAAJ+B,GACX,KAAK,EAED5B,EAAI,EACJ2B,EAAI,GACJ,MAGJ,KAAK,GAED3B,EAAI,EACJ2B,EAAI,GACJ,MAGJ,KAAK,GAED3B,EAAI,EACJ2B,EAAI,GACJ,MAGJ,KAAK,GAED3B,EAAI,EACJ2B,EAAI,GACJ,MAGJ,KAAK,GAED3B,EAAI,EACJ2B,EAAI,GACJ,MAGJ,KAAK,GAED3B,EAAI,EACJ2B,EAAI,GACJ,MAGJ,KAAK,GAED3B,EAAI,EACJ2B,EAAI,GACJ,MAGJ,KAAK,GAED3B,EAAI,EACJ2B,EAAI,GACJ,MAGJ,KAAK,GAED3B,EAAI,EACJ2B,EAAI,GACJ,MAGJ,KAAK,GAED3B,EAAI,EACJ2B,EAAI,GACJ,MAGJ,KAAK,IAED3B,EAAI,GACJ2B,EAAI,GACJ,MAGJ,KAAK,IAED3B,EAAI,GACJ2B,EAAI,GACJ,MAGJ,QAEI/B,EAAI,EACJzB,EAAI,EAiBV,OAbe,KAAN,EAAJwD,KACH/B,EAAuC,EAAnC0C,EAAE,OAAa,GAAJtC,EAAS,GAAK,GAAK,GAClC7B,EAAwC,EAApCmE,EAAE,OAAa,GAAJtC,EAAS,GAAK,IAAM,KAK5B,GAFTA,EAAgB,EAAZsC,EAAEZ,GAAK,OAEiB,EAAZY,EAAEnB,GAAK,MACrBS,EAAY,EAARqwB,EAAGrwB,KAEM,GADb5B,EAAgB,EAAZsC,EAAEZ,GAAK,OACa,EAAJvD,KAAU0B,GAAKA,EAAI,EAAI,GAAK,EAAI,GAGvC,IAAN,EAAJuD,IAAmB,EAAJpD,KAAe,EAAJ7B,IAE7BqE,EAAIE,EADkB,GAAjB7C,EAAI,EAAI,GAAK,GAKH,IAAN,EAAJuD,IAAmB,EAAJpD,KAAe,EAAJJ,IAOjC4C,EAAIE,EACO,GAFXU,GAAKvD,EAAI,EAAI,GAAK,EAAI,KAJpB2C,EAAIE,EACO,EAFP7C,EAQR,CAsBMssB,CAAGnsB,EAAGH,GAEN6B,EAES,GADXC,GAAK,EAAIxD,GAAgC,EAA3BmE,EAAE,OAASX,GAAK,IAAM,IAAU,GAAK,EAAI,GAI5C,GADXA,GAAK,EAAIxD,GAAgC,EAA3BmE,EAAE,OAASX,GAAK,IAAM,IAAU,GAAK,EAAI,GAK3D,CA1jEMikB,CAFJlkB,GADA9B,GAAI,EAAiC,YAAnB,WAAJC,EAAiB,IACvBG,EAAI,EACZA,EAAIJ,GAAS,WAALC,EAAkB,UAAY,EACrB,EAAJ1B,IAEG,IAAP,EAAJ0B,GAGH,OAFAyC,EAAEX,GAAK,GAAK,OACZa,EAAIZ,GAINyovC,GAAG3ovC,EAAG1B,EAAGmB,GACThD,EAA2B,EAAvB4pvC,GAAO,EAAJrmvC,EAAW,EAAJ1B,EAAO,IACrB2D,IACAxF,GAAQ,GACS,EAAX0pvC,GAAGnmvC,EAAG1B,GAAsCmoO,GAAGhnO,EAAGhD,EAAG0B,EAAG,EAAG8B,GAA1C+nvC,GAAGvovC,EAAGhD,EAAG0B,EAAG,EAAG8B,GACtCa,EAAIZ,CAEN,CAEA,SAAS8gB,GAAG1iB,GACVA,GAAQ,EACR,IAAIH,EACA8B,EACAxD,EAAI,EAMR,OALA0B,EAAgB,EAAZ8sB,GAAG,EAAG,MACAnoB,EAAE,MAAO,MAAO,GAAI,OAItB,GAFRrG,EAAgB,EAAZmE,GADJX,EAAI3B,EAAI,EAAI,IACD,KAITsC,GADAnE,EAAIA,EAAI,EAAI,IACL,GAAK0B,EACZyC,EAAEX,GAAK,GAAK9B,EACD,EAAJA,IAGO,EAAZyC,EAAEtC,GAAK,IAAUwE,EAAE,MAAO,MAAO,GAAI,OAEzClC,GADAnE,EAAI6B,IACG,GAAKH,EACZyC,EAAEX,GAAK,GAAK9B,EACD,EAAJA,EACT,CAEA,SAAS0hB,GAAGvhB,EAAGH,GAGb,IAAI8B,EACAxD,EAWJ,OAdA6B,GAAQ,EACRH,GAAQ,GAGR1B,EAAa,EAAT0nB,GAAG,MACGrhB,EAAE,MAAO,MAAO,GAAI,OAC9BlC,EAAEnE,GAAK,GAAKmE,EAAEzC,GAAK,GACnByC,EAAEnE,EAAI,GAAK,GAAKmE,EAAEzC,EAAI,GAAK,GAC3ByC,EAAEnE,EAAI,GAAK,GAAKmE,EAAEzC,EAAI,GAAK,GAC3ByC,EAAEnE,EAAI,IAAM,GAAKmE,EAAEzC,EAAI,IAAM,GAC7ByC,EAAEnE,EAAI,IAAM,GAAK,EAIT,GAFRwD,EAAgB,EAAZW,GADJzC,EAAIG,EAAI,EAAI,IACD,KAGTsC,EAAEX,EAAI,IAAM,GAAKxD,EACjBmE,EAAEzC,GAAK,GAAK1B,EACD,EAAJA,IAGO,EAAZmE,EAAEtC,GAAK,IAAUwE,EAAE,MAAO,MAAO,GAAI,OACzClC,EAAEtC,GAAK,GAAK7B,EACZmE,EAAEzC,GAAK,GAAK1B,EACD,EAAJA,EACT,CAiCA,SAASqlB,GAAGxjB,GAEV,IA4BI2D,EACAd,EA7BAhD,EAAI,EACJ8B,EAAI,EACJD,EAAI,EACJP,EAAI,EACJS,EAAI,EACJhC,EAAI,EACJwD,EAAI,EACJV,EAAI,EACJlB,EAAI,EACJY,EAAI,EACJ/D,EAAI,EACJiB,EAAI,EACJwC,EAAI,EACJ/C,EAAI,EACJe,EAAI,EACJ1B,EAAI,EACJiD,EAAI,EACJY,EAAI,EACJM,EAAI,EACJU,EAAI,EACJjB,EAAI,EACJ2C,EAAI,EACJd,EAAI,EACJkB,EAAI,EACJ5B,EAAI,EACJoB,EAAI,EACJb,EAAI,EACJM,EAAI,EAGJU,EAAI,EACJT,EAAI,EAGR,GAAgB,EAAZ3B,GAFJnB,EAAQ,GAjCRnB,GAAQ,GAiCI,IAED,GAET,OAAOiE,EAKT,KAFAvC,EAAgB,EAAZY,EAAEtC,GAAK,IAIT,OAAOiE,EAGTpE,EAAI6B,EACJC,EAAI,EAEJ,GACEA,EAAIA,EAAI,EAAI,EACZ9B,EAAoB,EAAhByC,EAAEzC,EAAI,GAAK,SACG,IAAN,EAAJA,IAEV,GAAI8B,IAAM,EAAI,EAEZ,OAAOsC,GAGTpB,EAAiB,EAAbgjB,GAAGlkB,GAAK,KACF6C,EAAE,MAAO,MAAO,IAAK,QAC/Bb,EAAiB,EAAbkiB,GAAGlkB,GAAK,KACF6C,EAAE,MAAO,MAAO,IAAK,OAC/BlC,EAAEtC,GAAK,GAAK,EAEZsC,GADAqC,EAAI3E,EAAI,EAAI,IACL,GAAK,EACZsC,EAAEnB,GAAK,GAAK,EACZQ,EAAI,EACJqC,EAAI,EACJhC,EAAI,EACJ3D,EAAI,EAEJ2B,EAAG,OAAU,CAGX,GAFAoC,EAAgB,EAAZE,EAAEZ,GAAK,GAEJ,CACLE,EAAI,EACJhC,EAAIwC,EAEJ,EAAG,CAQD,GAPAM,GAAKvE,EAAEyB,EAAI,GAAK,GAChBC,EAAID,EACJA,EAAqB,EAAjB0C,EAAE1C,EAAI,IAAM,GAGhBwD,GAAKjF,GADLgD,GADAK,EAAe,IAAN,EAAJ5B,IACGwC,EAAIxC,GACD,GAAK,IAEXsF,IAAIxC,EAAIU,IAAM,kBAAmB,CACpCa,EAAI,GACJ,KACF,CAEArC,IAASwB,EAAIV,KAAOvE,EAAE0B,GAAK,KAAM1B,EAAEgD,GAAK,GAC1C,QAAUK,GAEV,GAAe,KAAN,EAAJyC,GAAc,CACjBA,EAAI,EACJrC,EAAI,EACJ/B,EAAIuC,EAEJ,GACEa,GAAK9E,EAAE0B,EAAI,GAAK,GAEhB0E,EAAgB,EAAZjC,GADJoB,EAAI7D,EAAI,GAAK,IACF,GAEX0C,GAAKpE,GADLoG,EAAe,IAAN,EAAJA,GAAcnC,EAAImC,GACZ,GAAK,GAChB3C,KAAUzD,EAAE0B,GAAK,KAAM1B,EAAEoG,GAAK,MAAQhC,EAAI,EAAMA,EAAI,kBAAoBA,IAAMU,EAAI,EAAMA,EAAI,kBAAoBA,IAChHpD,EAAqC,EAAjCyC,GAAc,IAAN,EAAJzC,GAAc6B,EAAIgC,IAAM,SACd,IAAN,EAAJ7D,GACZ,CAEI+B,EAAI,GACNU,EAAEO,GAAKmB,GAAK,IAAM,GAAKtC,EACvBsC,EAAIA,EAAI,EAAI,EACZ7C,EAAIa,EACJnC,EAAIxB,GACG4F,EAAI,EACf,MAASA,EAAI,GAEb,GAAe,KAAN,EAAJA,GAAc,CACjBA,EAAI,EAEJ,EAAG,CAAE,IAAKtC,EAAG,CACX,GAAKtD,EAWE,CACL8C,EAAIwD,EACJ/E,EAAIvB,EAAI,EAAI,EACZwB,EAAI6B,EACJC,EAAI3B,EACJ,KACF,CAhBE,GAAkB,EAAZsC,EAAEtC,GAAK,GAMN,CACLiE,EAAI,GACJ,MAAMjE,CACR,CAREmB,EAAIwD,EACJ/E,EAAII,EACJH,EAAI6B,EACJC,EAAI3B,EACJ,KAYN,CAGE,GAAgB,EAAZsC,GAFJzC,EAAI8B,EAAI,EAAI,IAED,GAAQ,CACjBsC,EAAI,GACJ,MAAMjE,CACR,CAIA,KAFA2B,EAAgB,EAAZgrB,GAAG,EAAG,KAEF,CACN1oB,EAAI,GACJ,MAAMjE,CACR,CAEAsC,EAAEzC,GAAK,GAAK8B,EACZR,EAAIQ,EAAI,EAAI,EACZ/B,EAAI+B,EACJ9B,EAAIxB,CACJ,OAAS,GAOX,GALAiE,EAAE1C,GAAK,GAAK8B,EACZY,EAAEnB,GAAK,GAAKO,EACZ9B,EAAI+D,GAAK3B,GAAK,GAAK,EACnBR,EAAgB,EAAZc,EAAEZ,GAAK,GAEJ,CAiBL,IAfAvD,GADAiE,EAAIuB,GAAK3B,GAAK,GAAK,EAAI,IAChB,GAAK,sBAEZ7D,GADAE,EAAIsF,GAAK3B,GAAK,GAAK,GAAK,IACjB,GAAK,sBACZ7D,EAAEyB,GAAK,IAAM,sBAEbzB,GADAmB,EAAIqE,GAAK3B,GAAK,GAAK,GAAK,IACjB,IAAM,sBACbX,EAAI,sBACJY,GAAK,sBACLd,EAAI,EACJW,EAAIN,EACJkB,EAAI,sBACJ5C,EAAI,sBACJ1B,GAAK,sBACLgF,GAAK,sBAGHxB,GAAKzD,EAAE2D,GAAK,GACZmB,GAAK9E,EAAE2D,EAAI,GAAK,GAChBA,EAAqB,EAAjBQ,EAAER,EAAI,IAAM,GAEhBS,GAAKpE,IADLY,EAAe,IAAN,EAAJ+C,IACON,EAAIM,GAAK,GAAK,GAEtBF,EAAIc,IACNvE,EAAEiE,GAAK,GAAKR,EACZc,EAAId,GAGFqB,EAAInD,IACN3B,EAAEE,GAAK,GAAK4E,EACZnD,EAAImD,GAGFrB,EAAIxD,EAAKD,EAAEyB,GAAK,GAAKgC,EAAWA,EAAIxD,EAEpC6E,EAAIG,IACNjF,EAAEmB,GAAK,GAAK2D,EACZG,EAAIH,GAGN5B,EAAI4B,EAAI,EAAMA,EAAI5B,EAAI4B,EAAI5B,EAC1BY,EAAIgB,EAAI,EAAMA,EAAIhB,EAAIgB,EAAIhB,EAC1Bd,IAAS+D,IAAIjC,EAAIV,IAAM,mBACnBxD,GAAoBX,EAAIwD,EAG1BT,IACFhD,EAAEmB,GAAK,GAAK2C,EACZ9D,EAAEE,GAAK,GAAKgD,EAEhB,MACEiB,EAAE1C,GAAK,GAAK,EACZ0C,EAAE1C,EAAI,GAAK,GAAK,EAChB0C,EAAE1C,EAAI,GAAK,GAAK,EAChB0C,EAAE1C,EAAI,IAAM,GAAK,EACjB0C,EAAE1C,EAAI,IAAM,GAAK,EACjB0C,EAAE1C,EAAI,IAAM,GAAK,EACjB0C,EAAE1C,EAAI,IAAM,GAAK,EACjB0C,EAAE1C,EAAI,IAAM,GAAK,EAGnBuB,EAAIa,EAAI,EAAI,CACd,CAMA,GAHAN,EAAgB,EAAZY,GADJoB,EAAIhC,EAAI,EAAI,IACD,GACXY,EAAEoB,GAAK,GAAK,GAEPhC,EAAG,CACNuC,EAAI,GACJ,KACF,CACEjC,EAAIb,EACJ9C,EAAIwB,CAER,CAEA,GAAe,KAAN,EAAJoE,GAAgBO,EAAE,MAAO,MAAO,GAAI,YAAc,GAAe,KAAN,EAAJP,GAAgBO,EAAE,MAAO,MAAO,GAAI,YAAc,GAAe,KAAN,EAAJP,GAAgBO,EAAE,MAAO,MAAO,GAAI,YAAc,GAAe,KAAN,EAAJP,GAAc,CACtL3B,EAAG,GAAK,IAAS,EAAJ0B,GAAS,EAAG,CAOvB,IANAN,EAAe,IAAN,EAAJvC,GACLgC,EAAIhC,GAAK,EACToD,EAAe,IAAN,EAAJvE,GACL+E,EAAI,EACJlF,EAAI,IAEM,CAGR,GAFAgE,EAA2B,EAAvBvB,EAAEO,GAAKkC,GAAK,IAAM,GAEjBrB,EAqFIO,EAAI,OArFL,CAGN,KAFAjC,EAAY,EAAR6jB,GAAG1iB,IAEC,CACNc,EAAI,GACJ,KACF,CAIA,KAFAU,EAAY,EAARkhB,GAAG1iB,IAEC,CACNc,EAAI,GACJ,KACF,CAEApE,EAAG,GAAK,GAAK0E,EAmDJ5C,EAAI,MAnDG,CAKd,IAJAR,EAAI,EACJQ,EAAI,EACJ/B,EAAII,EAGF0B,EAAIiC,GAAKxC,GAAK,GAAK,EAEuB,EAAtCkhB,GAAe,EAAZ/f,EAAE1C,GAAK,GAAQ8B,EAAe,EAAZY,EAAEuB,GAAK,KAC9BvB,EAAEN,GAAKL,GAAK,IAAM,GAAK/B,EACvB0C,EAAEqC,GAAKhD,GAAK,IAAM,GAAKD,EACvB3C,EAAI4C,EAAI,EAAI,GACL5C,EAAI4C,EAEb/B,EAAoB,EAAhB0C,EAAE1C,EAAI,GAAK,IAEbuB,EAAIA,EAAI,EAAI,EACZQ,EAAI5C,EAIR,IAAS,EAAJA,GAAS,EAEZ,GADA2C,EAAgB,EAAZY,EAAEN,GAAK,GACI,IAAN,EAAJjD,GAAe4C,EAAID,OAMtB,IALApC,EAAI,EACJwC,GAAK,EACLH,EAAID,EACJrD,EAAIqD,IAEM,CAKR,IAJAF,EAAgB,EAAZc,EAAEjE,GAAK,GACXqD,EAAI,EACJ9B,EAAI,EAIwBwC,GAAjB,GADTjB,EAAmC,EAA/BmB,EAAEA,EAAEN,GAAKpC,GAAK,IAAM,IAAM,OACV,EAAJ4B,GAAcE,EAAeA,GAA4D,GAAL,EAAjD2gB,GAAGlhB,EAA0B,EAAvBmB,EAAEqC,GAAK/E,GAAK,IAAM,GAAoB,EAAZ0C,EAAEd,GAAK,MAAoB,GAErG,GADT5B,EAAIA,EAAI,EAAI,MACQ,EAAJb,IAAyB2C,EAAIU,EAM/C,GAFAT,GADAR,GAAS,EAAJiB,IAAc,EAAJN,IACPzD,EAAIsD,GAEH,GADTD,EAAIpC,EAAI,EAAI,MACQ,EAAJP,GAAU,MAAMc,EAChCP,EAAIoC,EACJI,EAAIX,EAAIiB,EAAIN,EACZzD,EAA2B,EAAvBiE,EAAEN,GAAKN,GAAK,IAAM,EACxB,MAEKC,EAAI,CACf,QAA2B,GAK3B,GAHAqqB,GAAGhqB,GACHgqB,GAAGrnB,GAEChD,EAAG,CAIL,GAFAD,EAAgB,EAAZY,GADJnB,EAAIQ,EAAI,EAAI,IACD,GAOFA,EAAID,EAAI,EAAI,OAJnB,GAAgB,EAAZY,EAAEX,GAAK,GAAQ,CACjBsC,EAAI,GACJ,KACF,CAGF3B,EAAEX,GAAK,GAAKkC,EACZvB,EAAEnB,GAAK,GAAK0C,CACd,MAASI,EAAI,EACf,CAEA,GAAe,KAAN,EAAJA,GAAc,CAGjB,GAFAA,EAAI,EAEI,GADRpE,EAAgB,EAAZyC,EAAEuB,GAAK,IACE,GACXc,EAAI9E,EACJA,EAAqB,EAAjByC,EAAEzC,EAAI,IAAM,GAChBmsB,GAAGrnB,SACe,IAAN,EAAJ9E,IACVmsB,GAAGnoB,GACHhE,EAAI,CACN,CAIA,IAAS,GAFTkF,EAAIA,EAAI,EAAI,MAEQ,EAAJf,GAAQ,CACtBU,EAAI7E,EACJ,MAAMyC,CACR,CACF,CAEe,KAAN,EAAJ2B,GAAgBO,EAAE,MAAO,MAAO,IAAK,OAA6B,KAAN,EAAJP,GAAgBO,EAAE,MAAO,MAAO,IAAK,OAA6B,KAAN,EAAJP,IAAgBO,EAAE,MAAO,MAAO,GAAI,MAC3J,MAASE,EAAI,QAAc,GAK3B,OAHAsnB,GAAGnpB,GACHmpB,GAAGroB,GAEQ,EADPe,CAEN,CACA,OAAO,CACT,CAEA,SAAS2d,GAAGriB,EAAGH,EAAG8B,GAChB3B,GAAQ,EAGR,IAMIwB,EANAE,EAAI,EACJP,EAAI,EACJS,EAAI,EACJhC,EAAI,EACJwD,EAAI,EACJV,EAAI,EAEJN,EAAI,EAER,KAAiB,EAAX0zB,EAXNj2B,GAAQ,EACR8B,GAAQ,IAYN,OAAO3B,EAST,GANAH,EAAY,EAAR2zB,EAAG3zB,GACP2B,GAAKrD,EAAEwD,GAAK,GAEZD,EAAI7B,GADJ6B,GAAKvD,EAAEwD,EAAI,GAAK,IACJ,EAAMD,EAAI,kBAAoBA,IAC1C1B,EAAgB,EAAZsC,EAAEtC,GAAK,IAIT,OAAOA,EAGT,GAAIH,EAAG,CACLA,EAAI,EACJ8B,EAAI3B,EAEJA,EAAG,OAAU,CACX,KACEJ,GAAKzB,EAAEwD,GAAK,GACZe,GAAKvE,EAAEwD,EAAI,GAAK,GAEhBS,EAAgB,EAAZE,GADJX,EAAIA,EAAI,GAAK,IACF,GAEXC,GAAKzD,GADLiE,EAAe,IAAN,EAAJA,GAAcpC,EAAIoC,IACX,GACZjB,GAAKhD,EAAEiE,EAAI,GAAK,GAEZxC,EAAIgC,GACNwB,EAAIxD,EACJA,EAAI8C,IAEJU,EAAIxB,EACJA,EAAIhC,EACJA,EAAIuB,EACJA,EAAIuB,GAGAlB,EAAII,EAAIJ,EAAI4B,GAGlB,KAFAzB,EAAgB,EAAZW,EAAEX,GAAK,IAEH,CACNA,EAAI,GACJ,MAAM3B,CACR,CAUF,GALA0B,GADA9B,EAAIA,EAAI,EAAMA,EAAI,kBAAoBA,IAC7B8B,GAFTgB,EAAIvB,EAAI,EAAMA,EAAI,kBAAoBA,IAEpBO,EAAIA,GAAK,qBAAwBA,IACnDgB,IAASlB,EAAII,IAAMwB,EAAIxB,IAAMhC,EAAI8C,IACxB,EAAMA,EAAI,kBAAoBA,GAAKhB,IAAK7B,GAAQ,KACzD8B,EAAgB,EAAZW,EAAEX,GAAK,IAEH,CACNA,EAAI,GACJ,KACF,CACF,CAEA,GAAe,KAAN,EAAJA,GAAgB,OAAW,EAAJ9B,CAC9B,KAAO,CACLA,EAAI,EACJ8B,EAAI3B,EAEJsC,EAAG,OAAU,CACX,KACE1C,GAAKzB,EAAEwD,GAAK,GACZe,GAAKvE,EAAEwD,EAAI,GAAK,GAEhBS,EAAgB,EAAZE,GADJX,EAAIA,EAAI,GAAK,IACF,GAEXC,GAAKzD,GADLiE,EAAe,IAAN,EAAJA,GAAcpC,EAAIoC,IACX,GACZjB,GAAKhD,EAAEiE,EAAI,GAAK,GAEZxC,EAAIgC,GACNwB,EAAIxD,EACJA,EAAI8C,IAEJU,EAAIxB,EACJA,EAAIhC,EACJA,EAAIuB,EACJA,EAAIuB,GAGAlB,EAAII,EAAIJ,EAAI4B,GAGlB,KAFAzB,EAAgB,EAAZW,EAAEX,GAAK,IAEH,CACNA,EAAI,GACJ,MAAMW,CACR,CAOF,GAHInB,GAAKK,EAAII,IAAMwB,EAAIxB,IAAMhC,EAAIuB,IADjCO,EAAI9B,GAAK8B,EAAIP,GAAKO,EAAIA,GAAK,qBAAwBA,KACR7B,GAAQ,KACnD8B,EAAgB,EAAZW,EAAEX,GAAK,IAEH,CACNA,EAAI,GACJ,KACF,CACF,CAEA,GAAe,KAAN,EAAJA,GAAgB,OAAW,EAAJ9B,CAC9B,CAEA,OAAO,CACT,CAEA,SAASsjB,GAAGtjB,EAAG8B,EAAGxD,EAAGuD,EAAGP,GAGtBhD,GAAQ,EACRuD,GAAQ,EACRP,GAAQ,EACR,IAMI9C,EACAiB,EAIAQ,EAEAuB,EAbAO,EAAI,EACJhC,EAAI,EACJwD,EAAI,EACJV,EAAI,EACJlB,EAAI,EACJY,EAAI,EAGJN,EAAI,EACJoD,EAAI,EACJnG,EAAI,EAEJX,EAAI,EAYR,GAVAiD,EAAImB,EACJA,EAAIA,EAAI,GAAK,EACbpE,EAAIiD,EAAI,GAAK,EACbvB,EAAIuB,EACJO,EAA2B,EAAvBmmvC,GAAO,GAvBXlovC,GAAQ,GAuBU,GAtBlB8B,GAAQ,GAsBa,IACrBgC,IACA/B,GAAQ,GACRE,EAA2B,EAAvBimvC,GAAO,EAAJ5pvC,EAAW,EAAJuD,EAAO,IACrBiC,KAES,EAAJ/B,KAAe,GAAJE,EAAS,GAGvB,OADAU,EAAInB,EACGjD,EAWT,GARAoD,EAA2B,EAAvBumvC,GAAO,EAAJlovC,EAAW,EAAJ8B,EAAO,IACrBgC,IACAnC,GAAQ,IACRY,EAA2B,EAAvB2lvC,GAAO,EAAJ5pvC,EAAW,EAAJuD,EAAO,IACrBiC,IAEA7B,GAAS,EAAJN,KAAe,GADpBY,GAAQ,MAGD,CAGL,GAAe,IAAN,GAFTgB,EAAe,EAAXgrB,EAAG5sB,EAAGY,KAKR,OADAI,EAAInB,EACGjD,EAIM,IAAN,GADTsE,EAAe,EAAX0rB,EAAGhsB,EAAGZ,KACUgD,EAAE,MAAO,MAAO,IAAK,QACvCU,EAAI9B,EACJxD,EAAI8C,EAER,MACEwC,EAAI,EACJtF,EAAI,EAGNvB,EAAY,EAARyyB,EAAGtvB,GACPlC,EAAY,EAARwxB,EAAG1uB,GACPE,EAAElE,GAAK,GAAK,EACZkE,EAAElE,EAAI,GAAK,GAAK,EAChBkE,EAAElE,EAAI,GAAK,GAAK,EAChBkE,EAAElE,EAAI,IAAM,GAAK,EAEjB,GAAK,GAAK8G,EAwBH,CAGL,GADA9B,GAAS,GADThB,EAA6C,EAAzCE,EAAE,MAAY,GAAJd,EAAS,IAAM0D,GAAK,IAAM,KAC1B,EACT5F,EAqBE,GAAI8D,EAAG,CACZ5B,EAAI,EACJkB,EAAIvE,EACJiF,EAAI1B,EAEJ,GACEgB,EAAe,EAAXunvC,GAAGvnvC,EAAGU,GACVA,EAAU,EAANO,IAEW,IAAN,GADT/D,EAAY,EAARspvC,GAAGtpvC,OACaA,EAAY,EAARspvC,GAAG,IAC3B1nvC,EAAIA,EAAI,EAAI,SACA,EAAJA,KAAe,EAAJY,IAErBA,EAAIxC,EACJ4B,EAAIkB,EACJA,EAAIU,CACN,MACEhB,EAAIxC,EACJ4B,EAAIrD,EACJuE,EAAIhB,OAvCJ,GAAI0B,EAAG,CACL5B,EAAI,EACJkB,EAAIvE,EACJiF,EAAI1B,EAEJ,GACEgB,EAAe,EAAXylvC,GAAGzlvC,EAAGU,GACVA,EAAU,EAANO,IACJ/D,EAAY,EAARspvC,GAAGtpvC,GACP4B,EAAIA,EAAI,EAAI,SACA,EAAJA,KAAe,EAAJY,IAErBA,EAAIxC,EACJ4B,EAAIkB,EACJA,EAAIU,CACN,MACEhB,EAAIxC,EACJ4B,EAAIrD,EACJuE,EAAIhB,EA4BR,GALA0ovC,GAAG5ovC,EAAGkB,EAAGtE,GACJ0D,GAAK0C,EAAE,MAAO,MAAO,IAAK,QAC/BpB,EAAe,IAAN,EAAJ/E,KACLuB,EAAe,IAAN,EAAJN,KACQkF,EAAE,MAAO,MAAO,IAAK,OAC7BpB,EAaE,CAGL,GAFAxD,EAAe,EAAXoovC,GAAGnovC,EAAG8B,GAE4B,EAAlC3B,EAAE,OAAa,EAAJJ,EAAQ,GAAKsF,GAAK,GAAQ,CACvCtD,EAAI,EACJ,KACF,CAGAJ,EADAkB,EAA8C,EAA1CJ,EAAE,OAAa,GAAJ1C,EAAS,IAAMsF,GAAK,IAAM,GAEzCnG,EAAI,EACN,MAvBE,GAAIa,EAAG,CAGL,GAFAA,EAAe,EAAXoovC,GAAGxmvC,EAAGkB,GAE4B,EAAlC1C,EAAE,OAAa,EAAJJ,EAAQ,GAAKwC,GAAK,GAAQ,CACvCR,EAAI,EACJ,KACF,CAEAJ,EAAI,EACJkB,EAA8C,EAA1CJ,EAAE,OAAa,GAAJF,EAAS,IAAMxC,GAAK,IAAM,GACzCb,EAAI,EACN,MAASa,EAAI,EAcf,GAAe,KAAN,EAAJb,GAIH,IAHS,EAAJ2D,KAAW,GAAK8B,EAAE,MAAO,MAAO,IAAK,QACjC,EAAJhD,KAAW,GAAKgD,EAAE,MAAO,MAAO,IAAK,QAEjC,EAAJ9B,GAAS,EAAG,CACfU,EAAIhF,EAAI,EAAI,EACZwB,EAAI,EAEJ,GACEi2B,GAAGzyB,GACHxD,EAAIA,EAAI,EAAI,SACA,EAAJA,KAAe,EAAJ8C,IAErB9C,EAAI4B,CACN,MAAS5B,EAAI4B,EAMf,GAJAc,EAAExC,GAAK,GAAK,EACZwC,EAAExC,EAAI,GAAK,GAAK,EAChBwC,EAAExC,EAAI,GAAK,GAAK,EAChBmpvC,GAAGnpvC,EAAGoF,GACE,EAAJtD,EAAS,KACG,EAARqmvC,GAAGrmvC,GAA0BmnvC,GAAGjpvC,GAAlBkpvC,GAAGlpvC,IACd,EAAJ8B,GAAS,GAAKA,EAAIA,GAAK,EAAI,EAGlC,IAAS,EAAJhC,GAAS,EAAG,CACfgC,EAAI,EAEJ,GACEi0B,GAAG/1B,GACH8B,EAAIA,EAAI,EAAI,SACA,EAAJA,KAAe,EAAJhC,GACvB,CAGAy2B,EADAt3B,EAAIX,EAAI,EAAI,EACN0B,EAAGf,GACTo3B,EAAGp3B,GACHA,EAAI,EACN,MAvIE,GAFAqrvC,GAAGjsvC,EAAGuD,EAAGtD,GAEM,IAAN,EAAJC,GAAyB,IAAN,EAAJiB,GAKlB,IAJS,EAAJ8C,KAAe,EAAJZ,IAAUgD,EAAE,MAAO,MAAO,IAAK,OAC/C5E,EAAe,EAAXoovC,GAAGnovC,EAAG8B,GACVC,EAAe,EAAXomvC,GAAG7pvC,EAAGuD,GAE8B,EAAlC1B,EAAE,OAAa,EAAJJ,EAAQ,GAAKgC,GAAK,GAc1BA,EAAI,OAXX,IAAS,GAFThC,EAA8C,EAA1C0C,EAAE,OAAa,GAAJ1C,EAAS,IAAMgC,GAAK,IAAM,KAE3B,EAAG,CACfwB,EAAIhF,EAAI,EAAI,EACZwD,EAAI,EAEJ,GACEi0B,GAAGzyB,GACHxB,EAAIA,EAAI,EAAI,SACA,EAAJA,KAAe,EAAJhC,IAErBb,EAAI,EACN,MAASA,EAAI,QAERA,EAAI,SAmHJ,GAYX,OAVe,KAAN,EAAJA,KACH6C,EAAIxD,EAAI,EAAI,EACZkE,EAAEnB,GAAK,GAAKmB,EAAEV,GAAK,GACnBU,EAAEnB,EAAI,GAAK,GAAKmB,EAAEV,EAAI,GAAK,GAC3BU,EAAEnB,EAAI,GAAK,GAAKmB,EAAEV,EAAI,GAAK,GAC3BA,EAAI,GAINY,EAAInB,EACO,EAFPO,CAGN,CAEA,SAASsf,GAAGlhB,EAAGH,EAAG8B,EAAGxD,GAGnBwD,GAAQ,EACRxD,GAAQ,EACR,IAMIqD,EAIAM,EAVAJ,EAAI,EACJP,EAAI,EACJS,EAAI,EACJhC,EAAI,EACJwD,EAAI,EACJV,EAAI,EAEJN,EAAI,EACJ/D,EAAI,EACJiB,EAAI,EAEJ4F,EAAI,EACJnG,EAAI,EACJe,EAAI,EACJ1B,EAAI,EAoBR,GAnBA0D,EAAIU,EACJA,EAAIA,EAAI,GAAK,EACbZ,EAAIE,EAAI,GAAK,EACblC,EAAIkC,EAAI,GAAK,EACbsB,EAAItB,EAAI,GAAK,EACbY,EAAIZ,EACJX,EAA2B,EAAvB4mvC,GAAO,GAzBX/nvC,GAAQ,GAyBU,GAxBlBH,GAAQ,GAwBa,IACrB8D,IACAxC,GAAQ,GACR9C,EAA2B,EAAvB0pvC,GAAO,EAAJ/nvC,EAAW,EAAJH,EAAO,IACrB8D,IAEAnC,EAAY,EAARsvB,EADJzyB,GAAQ,KAER8phB,GAAO,EAAJhnhB,EAAO,EAAG,IACbpC,EAAU,UAAN4E,IAEJrB,GADA4C,EAAI/G,IACG,IAAM,EACbmE,EAAE4C,EAAI,GAAK,GAAKnG,GAEXoC,EACH,OAAiB,EAAZmB,EAAEX,GAAK,IAAU,IAMD,EAAhBW,EAAEX,EAAI,GAAK,IAAU,IAML,EAAhBW,EAAEX,EAAI,GAAK,IAAU,GAQX,MAAN,GAFTD,EAAuB,EAAnBwuB,EAAG7xB,EAAW,EAARwqvC,GAAGlnvC,OAhBXa,EAAIV,EACO,GAFX/C,EAAI,KAyBNO,EAAuB,EAAnB6ohB,GAAO,EAAJzmhB,EAAO,EAAG,IACjBwD,EAAU,EAANvB,IAEJuB,GAAqB,QAAjB5C,GADJjE,EAAIF,GACM,GAAK,GAAgB+G,EAE/B5C,GADAvD,EAAIZ,IACG,GAAKmE,EAAEjE,GAAK,GAAKiB,EACxBgD,EAAEvD,EAAI,GAAK,GAAKmG,EAEhB1C,EAAIV,EACO,GAFX/C,EAAI,IAQN,IAJAuD,EAAEV,GAAK,GAAKU,EAAEX,GAAK,GACnBW,EAAEV,EAAI,GAAK,GAAKU,EAAEX,EAAI,GAAK,GAC3BW,EAAEV,EAAI,GAAK,GAAKU,EAAEX,EAAI,GAAK,GAGzBW,EAAE1C,GAAK,GAAK0C,EAAEV,GAAK,GACnBU,EAAE1C,EAAI,GAAK,GAAK0C,EAAEV,EAAI,GAAK,GAC3BU,EAAE1C,EAAI,GAAK,GAAK0C,EAAEV,EAAI,GAAK,GAEb,EAARqmvC,GAAG9mvC,IAOPy0B,GAAGh0B,GACHU,EAAEc,GAAK,GAAKd,EAAEV,GAAK,GACnBU,EAAEc,EAAI,GAAK,GAAKd,EAAEV,EAAI,GAAK,GAC3BU,EAAEc,EAAI,GAAK,GAAKd,EAAEV,EAAI,GAAK,GAC3BmnvC,GAAG3lvC,KAVH0lvC,GAAGlnvC,GACHU,EAAEc,GAAK,GAAKd,EAAEV,GAAK,GACnBU,EAAEc,EAAI,GAAK,GAAKd,EAAEV,EAAI,GAAK,GAC3BU,EAAEc,EAAI,GAAK,GAAKd,EAAEV,EAAI,GAAK,GAC3BonvC,GAAG5lvC,IASL6zB,EAAGr3B,EAAGwD,EAAGV,GACTyzB,EAAGzzB,GAEH5C,EAAgB,EAAZwC,GADJ4C,EAAI/G,IACO,GACX+G,EAAoB,EAAhB5C,EAAE4C,EAAI,GAAK,GAEfvD,EAAsB,EAAlBwmhB,GAAG,EAAG,EAAO,GADjB/phB,EAAmB,GAAd,GAAK+C,EAAI,GAAS,IAEvB+D,KAAgB,EAANvB,KACVvF,EAA8B,EAA1B+phB,GAAW,EAAR0guB,GAAGnmvC,GAAQ,EAAO,EAAJtE,GACrB8G,EAAU,EAANvB,IAAUuB,EAEd5C,GADAvD,EAAIZ,IACG,GAAKC,EAAI0B,GAAK6B,EACrBW,EAAEvD,EAAI,GAAK,GAAKmG,GACP,EAAJ/D,GAAS,GAAKA,EAAIA,GAAK,EAAI,EAGlCnB,EAAG,GAAK,IAAkB,EAAZsC,EAAEV,GAAK,KAAW,IAAqB,EAAhBU,EAAEV,EAAI,GAAK,KAAW,IAA0B,EAAhBU,EAAEV,EAAI,GAAK,KAAW,EAAO,CAG1Ec,EAAP,MAAN,GADT9C,EAAe,EAAXswB,EAAG7xB,EADP8C,EAAY,EAAR0nvC,GAAGjnvC,MAEmB,EAAuB,EAARkvB,EAAGlxB,GAE5C0C,EAAG,GAAK,GAAKnB,EAiCN,CACL,GAAIK,EAAG,CAIL,GAHAI,EAAI,OAA0B,IAAL,EAAXomvC,GAAGhovC,EAAGH,IAAe,IAAMsB,GAAK,GAAK,GAG1C,GAFTS,EAAgB,EAAZU,EAAEV,GAAK,KAEG,EAAG,CACfD,EAAI,EAEJ,GACER,EAAY,EAAR01B,GAAG11B,GACPQ,EAAIA,EAAI,EAAI,SACA,EAAJA,KAAe,EAAJC,GACvB,CAEA,GAAe,IAAN,EAAJT,GAAa,CAChBO,EAAI,EACJ,MAAM1B,CACR,CAGe,MAAN,GADT2B,EAAe,EAAXuuB,EAAG7xB,EAAG8C,MACYqD,EAAE,MAAO,MAAO,IAAK,OAE7B,EAARssB,EAAGnvB,GAIA6C,EAAE,MAAO,MAAO,IAAK,QAH5BlF,EAAIsC,EACJQ,EAAIjB,EACJO,EAAIC,EAER,MACErC,EAAI,EACJ8C,EAAIjB,EACJO,EAAI9B,EAMN,IAFS,GADTwD,EAA6C,EAAzCd,EAAE,MAAY,GAAJjE,EAAS,IAAM+D,GAAK,IAAM,OACxB,GAAKoC,EAAE,MAAO,MAAO,IAAK,QAErC9B,EAAG,CAGN,IAFS,EAAJpD,KAAW,GAAKkF,EAAE,MAAO,MAAO,IAAK,OAElC,EAAJlF,EAAO,CAET6B,EAAI,EACJQ,EAAgB,EAAZW,GAFJV,EAAIzD,IAEO,GACXyD,EAAoB,EAAhBU,EAAEV,EAAI,GAAK,GAEf,GACED,EAAe,EAAXumvC,GAAGvmvC,EAAGC,GACVA,EAAU,EAAN+B,IAEJrB,GADAlE,EAAID,IACG,GAAKwD,EACZW,EAAElE,EAAI,GAAK,GAAKwD,EAChBT,EAAIA,EAAI,EAAI,SACA,EAAJA,IAAc,EAAJ7B,GACtB,CAEA,IAAS,EAAJ8D,IAAU,EAAG,CAChBjC,EAAI,GACJ,KACF,CAOA,IAJAA,EAAI,EACJQ,EAAgB,EAAZW,GAFJV,EAAIzD,IAEO,GACXyD,EAAoB,EAAhBU,EAAEV,EAAI,GAAK,KAUb,GAPAD,EAAe,EAAXumvC,GAAGvmvC,EAAGC,GACVA,EAAU,EAAN+B,IAEJrB,GADAlE,EAAID,IACG,GAAKwD,EACZW,EAAElE,EAAI,GAAK,GAAKwD,GAGP,GAFTT,EAAIA,EAAI,EAAI,MAEQ,EAAJiC,GAAQ,CACtBjC,EAAI,GACJ,MAAMmB,CACR,CAEJ,CAQA,GALe,IAAN,GADT1C,EAAe,EAAXwuB,EAAG1sB,EAAGrD,MACUmG,EAAE,MAAO,MAAO,IAAK,OAEzC7C,EAAgB,EAAZW,GADJnB,EAAIhD,IACO,GACXgD,EAAoB,EAAhBmB,EAAEnB,EAAI,GAAK,IAEN,EAAJiC,GAAS,EAAG,CACfxB,EAAI,EAEJ,GACED,EAAe,EAAXumvC,GAAGvmvC,EAAGR,GACVA,EAAU,EAANwC,IAEJrB,GADAlE,EAAID,IACG,GAAKwD,EACZW,EAAElE,EAAI,GAAK,GAAK+C,EAChBS,EAAIA,EAAI,EAAI,SACA,EAAJA,KAAe,EAAJwB,GACvB,CAMA,GAJAzB,EAAe,EAAXqmvC,GAAGrmvC,EAAGR,GACV/C,EAAY,EAAR6zB,EAAGvwB,IAEE,GADTC,EAA4D,EAAxDW,GAAGlE,EAAI,MAAQ,QAAc,GAAJwB,EAAS,IAAM+B,GAAK,IAAM,OACvC,GAAK6C,EAAE,MAAO,MAAO,IAAK,OACrC7C,EAAmB,CAEtBR,EAAI,EACJS,EAAgB,EAAZU,GAFJ1C,EAAIzB,IAEO,GACXyB,EAAoB,EAAhB0C,EAAE1C,EAAI,GAAK,GAEf,GACEgC,EAAe,EAAXwmvC,GAAGxmvC,EAAGhC,GACVA,EAAU,EAAN+D,IAEJrB,GADAlE,EAAID,IACG,GAAKyD,EACZU,EAAElE,EAAI,GAAK,GAAKwB,EAChBuB,EAAIA,EAAI,EAAI,SACA,EAAJA,IAAc,EAAJQ,IAEpBR,EAAI,EACN,MAhBUA,EAAI,EAiBhB,MAxJE,GAAe,IAAN,EAAJK,GAAyB,IAAN,EAAJkB,GAOlB,GAJAvB,EAAI,OAAa,IAFjB/C,EAAe,EAAX4pvC,GAAGhovC,EAAGH,IAEY,KAA8C,EAAvCmovC,GAAe,EAAZ1lvC,GADhCnB,EAAIhD,IACmC,GAAwB,EAAhBmE,EAAEnB,EAAI,GAAK,MAAgB,GAAK,GAEtE,GADTA,EAAgB,EAAZmB,EAAEnB,GAAK,OACK,GAAKqD,EAAE,MAAO,MAAO,IAAK,OAErCrD,EAGE,CAELO,EAAI,EACJC,EAAgB,EAAZW,GAFJV,EAAIzD,IAEO,GACXyD,EAAoB,EAAhBU,EAAEV,EAAI,GAAK,GAEf,GACED,EAAe,EAAXumvC,GAAGvmvC,EAAGC,GACVA,EAAU,EAAN+B,IAEJrB,GADAlE,EAAID,IACG,GAAKwD,EACZW,EAAElE,EAAI,GAAK,GAAKwD,EAChBF,EAAIA,EAAI,EAAI,SACA,EAAJA,IAAc,EAAJP,IAEpBO,EAAI9B,EACJuB,EAAI,EACN,MAnBEO,EAAI9B,EACJuB,EAAI,QAoBNO,EAAI9B,EACJuB,EAAI,SA0HG,GAIX,GAFe,KAAN,EAAJA,IAAoBuB,IAAKvB,EAAI,IAEnB,KAAN,EAAJA,IAG+C,IAAN,EAAvC6mvC,GAAe,EAAZ1lvC,GAFRlE,EAAID,IAEW,GAAwB,EAAhBmE,EAAElE,EAAI,GAAK,KAAmB,CACnDsD,EAAI,EACJ,KACF,CAIF3C,EAAgB,EAAZuD,GADJlE,EAAID,IACO,GACXC,GAAqB,QAAjBkE,EAAElE,EAAI,GAAK,GACf0B,EAAuB,EAAnBqohB,GAAO,EAAJzmhB,EAAO,EAAG,IACjBtD,EAAe,EAAXA,EAAKuF,IAETrB,GADAZ,EAAIvD,IACG,GAAKY,EAAIe,EAChBwC,EAAEZ,EAAI,GAAK,GAAKtD,EAChBsD,EAAI,CACN,MAASA,EAAI,QAAc,GAI3B,OADAc,EAAIV,EACO,EAFPJ,CAGN,CA8MA,SAASuf,GAAGjhB,EAAGsC,GAGb,IAAIzC,EAAI,EAER,KAHAyC,GAAQ,GAKN,OAAOzC,EAGTA,EATAG,GAAQ,EAURA,EAAI,EAEJ,GACEA,EAAqC,EAAjC+E,EAAiB,IAAV,EAAJzC,EAAQ,GAAU,EAAIzC,EAAGG,GAChCsC,IAAS,EACTzC,EAAc,EAAVkF,EAAElF,EAAGA,SACS,IAAN,EAAJyC,IAEV,OAAW,EAAJtC,CACT,CAEA,SAAS6hB,GAAG7hB,EAAGH,EAAG8B,GAChB3B,GAAQ,EAGR,IAOIoC,EAEA9C,EATAoC,EAAI,EACJP,EAAI,EACJS,EAAI,EACJhC,EAAI,EACJwD,EAAI,EACJV,EAAI,EACJlB,EAAI,EAEJnD,EAAI,EAGR,KAAiB,EAAXy3B,EAbNj2B,GAAQ,EACR8B,GAAQ,IAcN,OAAOtD,EAST,GANAwB,EAAY,EAAR2zB,EAAG3zB,GACPP,GAAKnB,EAAEwD,GAAK,GAEZD,EAAI7B,GADJ6B,GAAKvD,EAAEwD,EAAI,GAAK,IACJ,EAAMD,EAAI,kBAAoBA,GAGjC,GAFTrD,EAAgB,EAAZiE,EAAEtC,GAAK,MAEI,EAEb,OAAO3B,EAKT,GAFA+D,EAAoB,EAAhBE,EAAEtC,EAAI,GAAK,GAEXH,EAAG,CACLA,EAAI,EACJ8B,GAAK,EACL3B,EAAI,EAEJA,EAAG,OAAU,CAGX,IAFAwB,EAAIxB,EAGFJ,GAAKzB,EAAEiE,GAAKZ,GAAK,IAAM,GACvBkB,GAAKvE,EAAEiE,GAAKZ,GAAK,GAAK,GAAK,GAE3BI,GAAKzD,EAAEiE,IADPpC,GAAK2B,EAAI,EAAI,IAAU,EAAJtD,GAAS,IACX,IAAM,GACvB8C,GAAKhD,EAAEiE,GAAKpC,GAAK,GAAK,GAAK,GAEvBJ,EAAIgC,GACNwB,EAAIxD,EACJA,EAAI8C,IAEJU,EAAIxB,EACJA,EAAIhC,EACJA,EAAIuB,EACJA,EAAIuB,GAGApD,EAAIsC,EAAItC,EAAI8D,GAjBV,CAoBR,MAAS,GAFTzB,EAAIH,EAAI,EAAI,KAEO,EAAJnD,IAIR,CACLsD,EAAI,GACJ,MAAM3B,CACR,CANEA,EAAIwB,EACJA,EAAIG,EACJA,EAAI3B,CAKR,CASA,GALA0B,GADA9B,EAAIA,EAAI,EAAMA,EAAI,kBAAoBA,IAC7B8B,GAFTgB,EAAIvB,EAAI,EAAMA,EAAI,kBAAoBA,IAEpBO,EAAIA,GAAK,qBAAwBA,IACnDgB,IAASpD,EAAIsC,IAAMwB,EAAIxB,IAAMhC,EAAI8C,IACxB,EAAMA,EAAI,kBAAoBA,GAAKhB,IAAK7B,GAAQ,IAGhD,GAFTG,EAAIwB,EAAI,EAAI,MAEQ,EAAJnD,GAAQ,CACtBsD,EAAI,GACJ,KACF,CAASA,EAAIH,CACf,CAEA,GAAe,KAAN,EAAJG,GAAgB,OAAW,EAAJ9B,CAC9B,KAAO,CACLA,EAAI,EACJ8B,GAAK,EACL3B,EAAI,EAEJsC,EAAG,OAAU,CAGX,IAFAd,EAAIxB,EAGFJ,GAAKzB,EAAEiE,GAAKZ,GAAK,IAAM,GACvBkB,GAAKvE,EAAEiE,GAAKZ,GAAK,GAAK,GAAK,GAE3BI,GAAKzD,EAAEiE,IADPpC,GAAK2B,EAAI,EAAI,IAAU,EAAJtD,GAAS,IACX,IAAM,GACvB8C,GAAKhD,EAAEiE,GAAKpC,GAAK,GAAK,GAAK,GAEvBJ,EAAIgC,GACNwB,EAAIxD,EACJA,EAAI8C,IAEJU,EAAIxB,EACJA,EAAIhC,EACJA,EAAIuB,EACJA,EAAIuB,GAGApD,EAAIsC,EAAItC,EAAI8D,GAjBV,CAoBR,MAAS,GAFTzB,EAAIH,EAAI,EAAI,KAEO,EAAJnD,IAIR,CACLsD,EAAI,GACJ,MAAMW,CACR,CANEtC,EAAIwB,EACJA,EAAIG,EACJA,EAAI3B,CAKR,CAMA,GAHImB,GAAK7B,EAAIsC,IAAMwB,EAAIxB,IAAMhC,EAAIuB,IADjCO,EAAI9B,GAAK8B,EAAIP,GAAKO,EAAIA,GAAK,qBAAwBA,KACR7B,GAAQ,IAG1C,GAFTG,EAAIwB,EAAI,EAAI,MAEQ,EAAJnD,GAAQ,CACtBsD,EAAI,GACJ,KACF,CAASA,EAAIH,CACf,CAEA,GAAe,KAAN,EAAJG,GAAgB,OAAW,EAAJ9B,CAC9B,CAEA,OAAO,CACT,CAEA,SAASqjB,GAAGljB,EAAGH,GAEbA,GAAQ,EACR,IAUIP,EAEAP,EACAe,EACA1B,EACAiD,EAfAM,EAAI,EACJD,EAAI,EACJP,EAAI,EACJS,EAAI,EACJhC,EAAI,EACJwD,EAAI,EACJV,EAAI,EACJlB,EAAI,EACJY,EAAI,EACJ/D,EAAI,EAEJyD,EAAI,EAKJG,EAAI,EAGR,KAFAlD,EAAgB,EAAZuD,GAnBJtC,GAAQ,IAmBG,IAWT,OARAsC,EAAEzC,GAAK,GAAK,EACZyC,EAAEzC,EAAI,GAAK,GAAK,EAChByC,EAAEzC,EAAI,GAAK,GAAK,EAChByC,EAAEzC,EAAI,IAAM,GAAK,EACjByC,EAAEzC,EAAI,IAAM,GAAK,EACjByC,EAAEzC,EAAI,IAAM,GAAK,EACjByC,EAAEzC,EAAI,IAAM,GAAK,OACjByC,EAAEzC,EAAI,IAAM,GAAK,GAWnB,GANA1B,GADA2B,EAAID,EAAI,EAAI,IACL,GAAK,sBAEZ1B,GADAC,EAAIyB,EAAI,GAAK,IACN,GAAK,sBACZ1B,EAAE0B,GAAK,IAAM,sBAEb1B,GADAkD,EAAIxB,EAAI,GAAK,IACN,IAAM,yBACJ,EAAJd,IAAU,GAAf,CAYA,IAXAO,EAAoB,EAAhBgD,EAAEtC,EAAI,GAAK,GACfwB,EAAI,sBACJY,GAAK,sBACL/D,EAAI,EACJ2B,GAAK,EACL4B,EAAI,sBACJhC,EAAI,sBACJ8C,GAAK,sBACLhB,GAAK,sBACLI,EAAI,EAGFH,GAAKxD,EAAEmB,GAAKwC,GAAK,IAAM,GACvBsB,GAAKjF,EAAEmB,GAAKwC,GAAK,GAAK,GAAK,GAE3BX,GAAKhD,EAAEmB,KAAW,GADlBU,EAAIA,EAAI,EAAI,MACiB,EAAJjB,GAAS,EAAIiB,IAAM,GAAK,GAAK,GAElD2B,EAAIC,IACNzD,EAAE2B,GAAK,GAAK6B,EACZC,EAAID,GAGFyB,EAAIxD,IACNzB,EAAEC,GAAK,GAAKgF,EACZxD,EAAIwD,GAGFzB,EAAIe,EAAKvE,EAAE0B,GAAK,GAAK8B,EAAWA,EAAIe,EAEpCU,EAAI1B,IACNvD,EAAEkD,GAAK,GAAK+B,EACZ1B,EAAI0B,GAGN5B,EAAI4B,EAAI,EAAMA,EAAI5B,EAAI4B,EAAI5B,EAC1BY,EAAIgB,EAAI,EAAMA,EAAIhB,EAAIgB,EAAIhB,EAC1B/D,IAAS6G,IAAI9B,EAAIjC,IAAM,mBAEd,GADTnB,EAAI8B,EAAI,EAAI,MACQ,EAAJ/C,IACdkD,EAAIH,EACJY,EAAIf,EACJG,EAAI9B,EACJA,EAAIiC,EAIH5D,IACLF,EAAEkD,GAAK,GAAKe,EACZjE,EAAEC,GAAK,GAAKoD,EAjDgB,CAmD9B,CAEA,SAAS8hB,GAAGtjB,EAAGH,GAEbA,GAAQ,EACR,IAmBImC,EAnBAL,EAAI,EACJD,EAAI,EACJP,EAAI,EACJS,EAAI,EACJhC,EAAI,EACJwD,EAAI,EACJV,EAAI,EACJlB,EAAI,EACJY,EAAI,EACJ/D,EAAI,EACJiB,EAAI,EACJwC,EAAI,EACJ/C,EAAI,EACJe,EAAI,EACJ1B,EAAI,EACJiD,EAAI,EACJY,EAAI,EACJM,EAAI,EACJU,EAAI,EAEJ0B,EAAI,EACJd,EAAI,EAGR,GAFA9E,EAAgB,EAAZuD,GAxBJtC,GAAQ,IAwBG,IAWT,GAPA7B,GADA2B,EAAID,EAAI,EAAI,IACL,GAAK,sBAEZ1B,GADAC,EAAIyB,EAAI,GAAK,IACN,GAAK,sBACZ1B,EAAE0B,GAAK,IAAM,sBAEb1B,GADAkD,EAAIxB,EAAI,GAAK,IACN,IAAM,uBAEJ,EAAJd,GAAS,EAAG,CAYf,IAXAoC,EAAoB,EAAhBmB,EAAEtC,EAAI,GAAK,GACfV,EAAI,sBACJwC,GAAK,sBACLJ,EAAI,EACJC,GAAK,EACLe,EAAI,sBACJlB,EAAI,sBACJnD,GAAK,sBACLuB,GAAK,sBACLqC,EAAI,EAGFL,GAAKzD,EAAEgD,GAAKc,GAAK,IAAM,GACvBG,GAAKjE,EAAEgD,GAAKc,GAAK,GAAK,GAAK,GAE3BmB,GAAKjF,EAAEgD,KAAW,GADlBwD,EAAIhD,EAAI,EAAI,MACiB,EAAJ5C,GAAS,EAAI4F,IAAM,GAAK,GAAK,GAElD/C,EAAIc,IACNvE,EAAE2B,GAAK,GAAK8B,EACZc,EAAId,GAGFQ,EAAIZ,IACNrD,EAAEC,GAAK,GAAKgE,EACZZ,EAAIY,GAGFR,EAAIvD,EAAKF,EAAE0B,GAAK,GAAK+B,EAAWA,EAAIvD,EAEpC+D,EAAIxC,IACNzB,EAAEkD,GAAK,GAAKe,EACZxC,EAAIwC,GAGN9C,EAAI8C,EAAI,EAAMA,EAAI9C,EAAI8C,EAAI9C,EAC1BwC,EAAIM,EAAI,EAAMA,EAAIN,EAAIM,EAAIN,EAC1BJ,IAASwD,IAAI9C,EAAIgB,IAAM,mBAEd,GADTzB,EAAIM,EAAI,EAAI,MACQ,EAAJlD,IACd4F,EAAI1C,EACJ5D,EAAIuD,EACJK,EAAIN,EACJA,EAAIgD,EAIJjD,IACFvD,EAAEkD,GAAK,GAAKS,EACZ3D,EAAEC,GAAK,GAAKkB,EAEhB,OAEAgD,EAAEzC,GAAK,GAAK,EACZyC,EAAEzC,EAAI,GAAK,GAAK,EAChByC,EAAEzC,EAAI,GAAK,GAAK,EAChByC,EAAEzC,EAAI,IAAM,GAAK,EACjByC,EAAEzC,EAAI,IAAM,GAAK,EACjByC,EAAEzC,EAAI,IAAM,GAAK,EACjByC,EAAEzC,EAAI,IAAM,GAAK,EACjByC,EAAEzC,EAAI,IAAM,GAAK,EAKnB,MAAS,GADT8B,EAAgB,EAAZW,GADJqC,EAAI3E,EAAI,EAAI,IACD,MACI,GAAf,CACAgC,EAAIhC,EAAI,GAAK,EACbiD,EAAI,EAEJ,GAOE,GANA9B,EAAgB,EAAZmB,EAAEN,GAAK,GACXN,EAAIuB,EAEJ7E,EAAIyB,IADJoD,EAAIA,EAAI,EAAI,IACE,GAAK,EACnB5B,EAA2B,EAAvBiB,EAAEnB,GAAKO,GAAK,IAAM,IAWpB,GAPAvD,GADA8D,EAAIpC,GAAKoD,GAAK,GAAK,EAAI,IAChB,GAAK,sBAEZ9E,GADA6B,EAAIH,GAAKoD,GAAK,GAAK,GAAK,IACjB,GAAK,sBACZ9E,EAAEC,GAAK,IAAM,sBAEbD,GADAoE,EAAI1C,GAAKoD,GAAK,GAAK,GAAK,IACjB,IAAM,uBAEJ,EAAJ5B,GAAS,EAAG,CAYf,IAXAtC,EAA+B,EAA3BuD,EAAEnB,GAAKO,GAAK,GAAK,GAAK,GAC1BpC,EAAI,sBACJwC,GAAK,sBACLX,EAAI,EACJO,GAAK,EACL5B,EAAI,EACJ4C,EAAI,sBACJlB,EAAI,sBACJY,GAAK,sBACLxC,GAAK,sBAGHgC,GAAKzD,EAAEY,GAAKe,GAAK,IAAM,GACvBzB,GAAKF,EAAEY,GAAKe,GAAK,GAAK,GAAK,GAE3BsD,GAAKjF,EAAEY,KAAW,GADlB2C,EAAIA,EAAI,EAAI,MACiB,EAAJL,GAAS,EAAIK,IAAM,GAAK,GAAK,GAElDE,EAAIc,IACNvE,EAAE8D,GAAK,GAAKL,EACZc,EAAId,GAGFvD,EAAImD,IACNrD,EAAE6B,GAAK,GAAK3B,EACZmD,EAAInD,GAGFuD,EAAIQ,EAAKjE,EAAEC,GAAK,GAAKwD,EAAWA,EAAIQ,EAEpC/D,EAAIuB,IACNzB,EAAEoE,GAAK,GAAKlE,EACZuB,EAAIvB,GAGNiB,EAAIjB,EAAI,EAAMA,EAAIiB,EAAIjB,EAAIiB,EAC1BwC,EAAIzD,EAAI,EAAMA,EAAIyD,EAAIzD,EAAIyD,EAC1BX,IAAS+D,IAAI7G,EAAI+E,IAAM,mBAEd,GADT1B,EAAI5B,EAAI,EAAI,MACQ,EAAJuB,IACdwC,EAAI/D,EACJA,EAAI4B,EACJU,EAAIR,EACJF,EAAImC,EAIJ1C,IACFhD,EAAEoE,GAAK,GAAKT,EACZ3D,EAAE6B,GAAK,GAAKV,EAEhB,OAEAgD,EAAElE,GAAK,GAAK,EACZkE,EAAElE,EAAI,GAAK,GAAK,EAChBkE,EAAElE,EAAI,GAAK,GAAK,EAChBkE,EAAElE,EAAI,IAAM,GAAK,EACjBkE,EAAElE,EAAI,IAAM,GAAK,EACjBkE,EAAElE,EAAI,IAAM,GAAK,EACjBkE,EAAElE,EAAI,IAAM,GAAK,EACjBkE,EAAElE,EAAI,IAAM,GAAK,EACjBuD,EAAgB,EAAZW,EAAEqC,GAAK,UAED,EAAJ1B,IAAc,EAAJtB,GAnFQ,CAsF9B,CAEA,SAASmjB,GAAG9kB,EAAGH,EAAG8B,GAIhB,IAAIxD,EAAI,EACJuD,EAAI,EACJP,EAAI,EAER,KAAoB,EAAd0gB,GAPN7hB,GAAQ,EACRH,GAAQ,EACR8B,GAAQ,IAON,OAAOD,EAKT,IAAiB,EAAZY,GAFLZ,EAAI1B,EAAI,EAAI,IAEA,KAAW,EAErB,OAAO0B,EAMT,IAHAvD,EAAI6B,EAAI,GAAK,EACbA,EAAI,IAEM,CAIR,GAHAmB,EAAInB,EACJA,EAAIA,EAAI,EAAI,EAEkD,EAA1D6hB,IAAgB,EAAZvf,EAAEnE,GAAK,KAAWgD,GAAK,GAAK,EAAGtB,GAAKG,GAAK,GAAK,EAAG2B,GAAQ,CAC/D3B,EAAI,EACJ7B,EAAI,EACJ,KACF,CAEA,IAAS,EAAJ6B,KAAuB,EAAZsC,EAAEZ,GAAK,IAAS,CAC9B1B,EAAI,EACJ7B,EAAI,EACJ,KACF,CACF,CAEA,OAAe,IAAN,EAAJA,GAA0B,EAAJ6B,EACpB,CACT,CAuCA,SAASumB,GAAGvmB,EAAGsC,EAAGzC,EAAG8B,EAAGD,GAEtBY,GAAQ,EACRzC,GAAQ,EACR8B,GAAQ,EACRD,GAAQ,EACR,IACIE,EACAhC,EACAwD,EACAV,EACAlB,EACAY,EACA/D,EAPA8C,EAAI,EAQRuB,GAAKvE,GAbL6B,GAAQ,IAaI,GACZoD,GAAKjF,EAAEmE,GAAK,GAAKI,EACjB9C,GAAKzB,EAAE6B,EAAI,GAAK,GAChB4B,GAAKzD,EAAEmE,EAAI,GAAK,GAAK1C,EACrBwC,GAAKjE,EAAE0B,GAAK,GAIZsB,IAHAA,GAAKhD,EAAEwD,GAAK,GAAKS,IAGPxC,GAFVvB,GAAKF,EAAE0B,EAAI,GAAK,MAEI6C,EAAIN,IADxBZ,GAAKrD,EAAEwD,EAAI,GAAK,GAAKtD,KACc+E,EAAI5B,EAAII,EAAIT,GAC/ChD,EAAEuD,GAAK,GAAKgB,EAAIU,EAAIjC,EACpBhD,EAAEuD,EAAI,GAAK,GAAK9B,EAAIgC,EAAIT,CAE1B,CAEA,SAASsrB,GAAGzsB,EAAGsC,GAIb,OAFAA,GAAQ,GAEDnE,GAHP6B,GAAQ,IAGM,KAAO7B,EAAEmE,GAAK,GAEf,GADXA,EAAI,GAKK,GADXA,GAAKnE,EAAE6B,EAAI,GAAK,KAAO7B,EAAEmE,EAAI,GAAK,GAEpC,CAEA,SAASkiB,GAAGxkB,EAAGsC,GAGb,IAAIzC,EACA8B,EACAD,EAIJ,OAPAY,GAAQ,KAIRZ,GAAKvD,GALL6B,GAAQ,IAKI,IAAM7B,EAAEmE,GAAK,IAGZZ,GAFbC,GAAKxD,EAAE6B,EAAI,GAAK,IAAM7B,EAAEmE,EAAI,GAAK,IAEZX,GADrB9B,GAAK1B,EAAE6B,EAAI,IAAM,IAAM7B,EAAEmE,EAAI,IAAM,IACNzC,EAC/B,CA0MA,SAASotB,GAAGjtB,EAAGH,EAAG8B,GAChB3B,GAAQ,EAER2B,GAAQ,EACR,IAAIxD,EAAI,GAEC,GAJT0B,GAAQ,IAIM,GACZ1B,EAAe,EAAXwuB,GAAG9sB,EAAG,GACVyC,EAAEtC,GAAK,GAAK7B,EACPA,GAAKqG,EAAE,MAAO,MAAO,GAAI,QACvBlC,EAAEtC,GAAK,GAAK,EAErBsC,EAAEtC,EAAI,GAAK,GAAKH,EAChByC,EAAEtC,EAAI,GAAK,GAAK,EAChBsC,EAAEtC,EAAI,IAAM,GAAK2B,CAEnB,CAEA,SAASyqB,GAAGpsB,GAEV,IAGImB,EACAS,EACAhC,EALAC,EAAI,EACJ8B,EAAI,EACJD,EAAI,EAIJ0B,EAAI,EACRjC,EAAQ,GARRnB,GAAQ,GAQI,EACZ4B,EAAI5B,EAAI,GAAK,EACbJ,EAAII,EAAI,EAAI,EAEZA,EAAG,OAAU,CAIX,IAHA2B,EAAgB,EAAZW,EAAEnB,GAAK,GACXtB,EAAI,IAEM,CACR,IAAS,EAAJA,KAAe,EAAJ8B,GAAU,MAAM3B,EAGhC,GAFA0B,EAAgB,EAAZY,EAAEtC,GAAK,GACXoD,EAA2B,EAAvBd,EAAEZ,GAAK7B,GAAK,IAAM,GACW,MAAvBA,EAAIA,EAAI,EAAI,CACxB,CAEAA,EAAI6B,OAASwD,KAAKpF,EAAE,OAAU,IAAkB,EAAZwC,EAAEV,GAAK,IAAU,MAAQzD,EAAEiF,GAAK,KAAMjF,EAAEiF,EAAI,GAAK,OAAc,EAAJzB,MAAY,GAAK,GAAK,EACrHA,EAAgB,EAAZW,EAAEzC,GAAK,GAEXyC,EAAG,GAAK,GAAQ,EAAJX,EAAO,CAEjB,GADAD,EAAI0B,EAAI,GAAK,GACJ,EAAJzB,KAAe,EAAJyB,GAAUd,EAAEzC,GAAK,GAAKyC,EAAEZ,GAAK,OAAU,CAGrD,KADA7B,EAAgB,EAAZyC,GADJX,EAAIA,EAAI,GAAK,IACF,IACD,MAEV,MACW,EAAJ9B,KAAe,EAAJuD,IAGhB,KADAvD,EAAgB,EAAZyC,GADJX,EAAI9B,EAAI,GAAK,IACF,IACD,MAAMyC,EAGlBA,EAAEX,GAAK,GAAKW,EAAEZ,GAAK,EACrB,CACAsqB,GAAG5oB,GACHd,EAAE1C,GAAK,IAAkB,EAAZ0C,EAAE1C,GAAK,IAAW,CACjC,QAAW,EACb,CAEAosB,GAAe,EAAZ1pB,EAAEtC,GAAK,GAEZ,CAEA,SAAS4kB,GAAG5kB,GAEV,IAEI7B,EAFA0B,EAAI,EACJ8B,EAAI,EAKR,IAHAxD,EAAoB,EAAhBmE,EAAM,GAJVtC,GAAQ,IAIO,GACf2B,EAAI,IAEM,CACR,IAAS,EAAJA,KAAe,EAAJxD,GAAQ,CACtB0B,EAAI,EACJ8B,EAAI,EACJ,KACF,CAGA,GADA9B,EAAyC,EAArCyC,GAAe,EAAZA,EAAEtC,GAAK,KAAW2B,GAAK,IAAM,GACL,CAC7BA,EAAI,EACJ,KACF,CAHUA,EAAIA,EAAI,EAAI,CAIxB,CAEA,OAAe,IAAN,EAAJA,GAA0B,EAAJ9B,EACpB,CACT,CAEA,SAASsqB,GAAGnqB,EAAGH,GAEbA,GAAQ,EACR,IAAI8B,EAAI,EACJD,EAAI,EACJP,EAAI,EACJS,EAAI,EAKR,GAJAD,MAAQuD,KAAKpF,EAAE,OAAU,IAAuB,EAAjBwC,EAAM,IANrCtC,GAAQ,IAMmC,IAAU,MAAQ7B,EAAE0B,GAAK,KAAM1B,EAAE0B,EAAI,GAAK,OAA0B,EAAhByC,EAAEtC,EAAI,GAAK,OAAa,EACvH2B,GAAiB,EAAZW,EAAEtC,GAAK,KAAW2B,GAAK,GAAK,IACjCD,EAAgB,EAAZY,EAAEX,GAAK,IAIT,OAAOC,EAGTA,EAAI/B,EAAI,GAAK,EAEb,GAAK,IAAS,EAAJ6B,KAAe,EAAJ7B,GAAQ,CAG3B,KAFA8B,EAAqB,EAAjBW,EAAEZ,EAAI,IAAM,IAId,OAAOE,EAKT,IAFAT,EAAIQ,IAEM,CACR,IAAS,EAAJR,KAAe,EAAJtB,GAAQ,CACtBsB,EAAI,EACJ,KACF,CAIA,KAFAQ,EAAqB,EAAjBW,EAAEnB,EAAI,IAAM,IAER,CACNQ,EAAI,EACJR,EAAI,GACJ,KACF,CACEO,EAAIP,EACJA,EAAIQ,CAER,CAEA,GAAe,IAAN,EAAJR,GAAa,CAChBmB,EAAEZ,EAAI,IAAM,GAAKY,EAAEV,GAAK,GACxB,KACF,CAAO,GAAe,KAAN,EAAJT,GAAgB,OAAW,EAAJQ,CACrC,MAASW,EAAEX,GAAK,GAAKW,EAAEV,GAAK,SAAe,GAM3C,OAJAoqB,GAAGnsB,GAEHyC,GADAV,EAAI5B,EAAI,EAAI,IACL,IAAkB,EAAZsC,EAAEV,GAAK,IAAW,EAExBA,CACT,CAEA,SAAS8rB,GAAG1tB,EAAGH,EAAG8B,GAChB3B,GAAQ,EACRH,GAAQ,EACR8B,GAAQ,EACR,IAEIC,EAFAF,EAAI,EACJP,EAAI,EAEJvB,EAAI,GACRgC,EAAa,EAATikB,GAAG,MACGrhB,EAAE,MAAO,MAAO,GAAI,OAC9BlC,EAAEV,GAAK,GAAKU,EAAEzC,GAAK,GACnByC,EAAEV,EAAI,GAAK,GAAKU,EAAEzC,EAAI,GAAK,GAC3ByC,EAAEV,EAAI,GAAK,GAAKU,EAAEzC,EAAI,GAAK,GAC3ByC,EAAEV,EAAI,IAAM,GAAKU,EAAEzC,EAAI,IAAM,GAE7ByC,GADAnB,EAAIS,EAAI,GAAK,IACN,GAAKU,EAAEX,GAAK,GACnBW,EAAEnB,EAAI,GAAK,GAAKmB,EAAEX,EAAI,GAAK,GAC3BW,EAAEnB,EAAI,GAAK,GAAKmB,EAAEX,EAAI,GAAK,GAC3BW,EAAEnB,EAAI,IAAM,GAAKmB,EAAEX,EAAI,IAAM,GAC7BW,EAAEV,EAAI,IAAM,GAAK,EACjBT,MAAQ+D,KAAKpF,EAAE,OAAU,IAAuB,EAAjBwC,EAAEtC,EAAI,IAAM,IAAU,MAAQ7B,EAAE0B,GAAK,KAAM1B,EAAE0B,EAAI,GAAK,OAA0B,EAAhByC,EAAEtC,EAAI,GAAK,OAAa,EACvHmB,GAAiB,EAAZmB,EAAEtC,GAAK,KAAWmB,GAAK,GAAK,EACjCO,EAAgB,EAAZY,EAAEnB,GAAK,GAEX,EAAG,CAAE,GAAKO,EAA0B,CAClC,OACiB,EAAXiovC,GAAGjovC,EAAG7B,IAA6B,EAApB8pvC,GAAGjovC,EAAI,GAAK,EAAGC,KAIlC,GAHAR,EAAqB,EAAjBmB,EAAEZ,EAAI,IAAM,KAGO,EAAjBY,GAFNZ,EAAe,IAAN,EAAJP,GAAcO,EAAIP,GAEX,IAAM,IAAS,CACzBvB,EAAI,GACJ,KACF,CAGF,GAAe,KAAN,EAAJA,GAAc,CACjB0C,EAAEZ,EAAI,IAAM,GAAKE,EACjB,KACF,CAIA,OAFAoqB,GAAGpqB,GAEQ,EADPF,CAEN,CApBeY,EAAEnB,GAAK,GAAKS,CAoBzB,OAAS,GAKX,OAFAU,GADA1C,EAAII,EAAI,EAAI,IACL,GAAuB,GAAL,EAAZsC,EAAE1C,GAAK,IAET,EADPgC,CAEN,CAEA,SAAS8jB,GAAG1lB,EAAGH,EAAG8B,GAEhB9B,GAAQ,EACR8B,GAAQ,EACR,IAAID,EAAI,EACJP,EAAI,EAIR,GAHAA,MAAQ+D,KAAKpF,EAAE,OAAU,IAAuB,EAAjBwC,EAAM,IALrCtC,GAAQ,IAKmC,IAAU,MAAQ7B,EAAE0B,GAAK,KAAM1B,EAAE0B,EAAI,GAAK,OAA0B,EAAhByC,EAAEtC,EAAI,GAAK,OAAa,IACvHmB,EAAyC,EAArCmB,GAAe,EAAZA,EAAEtC,GAAK,KAAWmB,GAAK,IAAM,IAIlC,OAAOQ,EAGT,IAAKA,EAAG,CAGN,IAFA3B,EAAImB,IAEM,CACR,GAAe,EAAXwovC,GAAG3pvC,EAAGH,GAAQ,CAChB6B,EAAI,GACJ,KACF,CAIA,KAFA1B,EAAqB,EAAjBsC,EAAEtC,EAAI,IAAM,IAER,CACNA,EAAI,EACJ0B,EAAI,GACJ,KACF,CACF,CAEA,GAAe,KAAN,EAAJA,GAAgB,OAAW,EAAJ1B,CAC9B,CAIA,IAFAA,EAAImB,IAEM,CACR,GAAe,EAAXwovC,GAAG3pvC,EAAGH,IAA6B,EAApB8pvC,GAAG3pvC,EAAI,GAAK,EAAG2B,GAAY,CAC5CD,EAAI,GACJ,KACF,CAIA,KAFA1B,EAAqB,EAAjBsC,EAAEtC,EAAI,IAAM,IAER,CACNA,EAAI,EACJ0B,EAAI,GACJ,KACF,CACF,CAEA,OAAe,KAAN,EAAJA,GAA2B,EAAJ1B,EACrB,CACT,CAEA,SAASujB,GAAGvjB,EAAGH,GAEbA,GAAQ,EACR,IAAI8B,EAAI,EAIR,GAHAA,MAAQuD,KAAKpF,EAAE,OAAU,IAAuB,EAAjBwC,EAAM,IAHrCtC,GAAQ,IAGmC,IAAU,MAAQ7B,EAAE0B,GAAK,KAAM1B,EAAE0B,EAAI,GAAK,OAA0B,EAAhByC,EAAEtC,EAAI,GAAK,OAAa,IACvHA,EAAyC,EAArCsC,GAAe,EAAZA,EAAEtC,GAAK,KAAW2B,GAAK,IAAM,IAIlC,OAAOA,EAGT,OAAU,CACR,GAAe,EAAXgovC,GAAG3pvC,EAAGH,GAAQ,CAChBA,EAAI,EACJ,KACF,CAIA,KAFAG,EAAqB,EAAjBsC,EAAEtC,EAAI,IAAM,IAER,CACNA,EAAI,EACJH,EAAI,EACJ,KACF,CACF,CAEA,OAAe,IAAN,EAAJA,GAA0B,EAAJG,EACpB,CACT,CAWA,SAAS8sB,GAAG9sB,GAEV,OAAkB,KAPpB,SAAYA,GAEV,SAAUuqB,KADVvqB,GAAKA,GAEP,CAIYqsB,CADVrsB,GAAKA,EAEP,CAEA,SAAS6lB,GAAG7lB,GACVA,GAAQ,EACR,IAoBIuC,EApBA1C,EAAI,EACJ8B,EAAI,EACJxD,EAAI,EACJuD,EAAI,EACJP,EAAI,EACJS,EAAI,EACJhC,EAAI,EACJwD,EAAI,EACJV,EAAI,EACJlB,EAAI,EACJY,EAAI,EACJ/D,EAAI,EACJiB,EAAI,EACJwC,EAAI,EACJoD,EAAI,EACJnG,EAAI,EACJe,EAAI,EACJ1B,EAAI,EACJiD,EAAI,EACJY,EAAI,EAERM,EAAIC,EACJA,EAAIA,EAAI,GAAK,EACbnE,EAAIkE,EAEJ,GAAK,GAAIvC,IAAM,EAAI,IAAK,CAMtB,GAJAA,GADA0C,EAAI1C,IAAM,EAAI,GAAK,GAAKA,EAAI,IAAM,KACxB,EAIF,GAFR2B,GADAS,EAAc,EAAVE,EAAE,SACItC,GAEE,EAiBV,OAbA7B,EAAgB,EAAZmE,GADJX,EAAQ,GADR3B,EAAI,QADJH,GAAS,EAAJ8B,EAAQ,GAAK3B,EAAI,IACJ,GAAK,GAAK,GAChB,IACD,IAGF,GADTmB,EAAgB,EAAZmB,GADJZ,EAAIvD,EAAI,EAAI,IACD,OACS,EAAJ6B,GAAUsC,EAAE,MAAQF,IAAM,GAAKvC,IAC7CyC,EAAEnB,EAAI,IAAM,GAAKnB,EACjBsC,EAAEX,GAAK,GAAKR,GAEdc,EAAIpC,GAAK,EACTyC,EAAEnE,EAAI,GAAK,GAAS,EAAJ8D,EAEhBK,GADAL,EAAI9D,EAAI8D,EAAI,EAAI,IACT,GAAiB,EAAZK,EAAEL,GAAK,GAEnBO,EAAID,EACO,EAFPb,EAON,GAAIgB,IAAM,GAFVlB,EAAc,EAAVc,EAAE,SAEc,EAAG,CACrB,GAAQ,EAAJX,EA6DF,OA1DA9B,IADAA,EAAI8B,GAAK3B,IADTH,EAAI,GAAKG,GACS,EAAIH,IACb,EAAIA,GAAM,EAAI,EAavBsB,EAAgB,EAAZmB,GADJtC,EAAQ,GADRH,EAAI,QADJ1B,IAPAwD,GADA9B,KADAD,EAAIC,IAAM,GAAK,MAEL,EAAI,GAOLD,GALTuB,GADAtB,KAAU8B,KACA,EAAI,IAEd3B,GADAH,KAAUsB,KACA,EAAI,IAEdhD,GADA0B,KAAUG,KACA,EAAI,KACaH,IAAM1B,GAAK,IACpB,GAAK,GAAK,GAChB,IACD,IAIF,GAFTwD,EAAgB,EAAZW,GADJ1C,EAAIuB,EAAI,EAAI,IACD,OAES,EAAJtB,IACdG,EAAIoC,IAAM,GAAKjE,GACfmE,EAAE,MAAQtC,IAEVsC,EAAEX,EAAI,IAAM,GAAK9B,EACjByC,EAAEtC,GAAK,GAAK2B,EACZ3B,EAAIoC,GAINR,GADAK,EAAI9D,GAAK,GACDuE,EAAI,EACZJ,EAAEnB,EAAI,GAAK,GAAS,EAAJuB,EAEhBJ,EAAM,GADNZ,EAAIP,EAAIuB,EAAI,IACD,GAAS,EAAJd,EAChBU,EAAEnB,EAAIc,GAAK,GAAKL,EAER,EAAJJ,IACFrD,EAAc,EAAVmE,EAAE,MAENX,EAAI,QADJ9B,EAAI2B,IAAM,IACQ,GAAK,GAAK,EAGtBxB,GAFNH,EAAI,GAAKA,GAQPA,EAAgB,EAAZyC,GADJtC,EAAI2B,EAAI,EAAI,IACD,IALXW,EAAE,MAAQtC,EAAIH,EACdA,EAAI8B,EACJ3B,EAAI2B,EAAI,EAAI,GAMdW,EAAEtC,GAAK,GAAK7B,EACZmE,EAAEzC,EAAI,IAAM,GAAK1B,EACjBmE,EAAEnE,EAAI,GAAK,GAAK0B,EAChByC,EAAEnE,EAAI,IAAM,GAAKwD,GAGnBW,EAAE,MAAQV,EACVU,EAAE,MAAQZ,EAEVc,EAAID,EACO,EAFP3C,EAON,GAFAuB,EAAc,EAAVmB,EAAE,MAEC,CAgBL,IAfAX,GAAKR,EAAI,EAAIA,GAAM,EAAI,EAWvBQ,EADAyB,EAA6D,EAAzDd,EAAE,SAPNnE,GADAwD,KADAD,EAAIC,IAAM,GAAK,MAEL,EAAI,GAOMD,GALpBE,GADAD,KAAUxD,KACA,EAAI,IAEdyB,GADA+B,KAAUC,KACA,EAAI,IAEdwB,GADAzB,KAAU/B,KACA,EAAI,KACwB+B,IAAMyB,IAAM,IAAM,GAExDxD,EAAIwD,EACJA,IAAsB,EAAjBd,EAAEc,EAAI,GAAK,IAAWV,EAAI,GAG7B1C,EAAqB,EAAjBsC,EAAEX,EAAI,IAAM,MAGd3B,EAAqB,EAAjBsC,EAAEX,EAAI,IAAM,KAMlBA,EAAI3B,EACJJ,GAFA8B,GADAE,IAAsB,EAAjBU,EAAEtC,EAAI,GAAK,IAAW0C,EAAI,KACrB,EAAIU,IAAM,GAEZpD,EAAIJ,EACZwD,EAAI1B,EAAIE,EAAIwB,EAKd,IAFAxB,EAAIhC,EAAI8C,EAAI,KAEF,EAAI9C,IAAM,EAAG,CACrB8B,EAAqB,EAAjBY,EAAE1C,EAAI,IAAM,GAChBC,EAAqB,EAAjByC,EAAE1C,EAAI,IAAM,GAEhB,GAAK,IAAS,EAAJC,KAAe,EAAJD,GAAQ,CAI3B,KAFAC,EAAgB,EAAZyC,GADJtC,EAAIJ,EAAI,GAAK,IACF,OAITC,EAAgB,EAAZyC,GADJtC,EAAIJ,EAAI,GAAK,IACF,IAEH,CACN+B,EAAI,EACJ,KACF,CAGF,OAIE,GAFAA,EAAgB,EAAZW,GADJnE,EAAI0B,EAAI,GAAK,IACF,GAUTA,EAAI8B,EACJ3B,EAAI7B,MATE,CAGN,KADAwD,EAAgB,EAAZW,GADJnE,EAAI0B,EAAI,GAAK,IACF,IACD,MACRA,EAAI8B,EACJ3B,EAAI7B,CAER,CAMFmE,EAAEtC,GAAK,GAAK,EACZ2B,EAAI9B,CACN,MACE8B,EAAoB,EAAhBW,EAAE1C,EAAI,GAAK,GACf0C,EAAEX,EAAI,IAAM,GAAK9B,EACjByC,EAAEzC,EAAI,GAAK,GAAK8B,EAChBA,EAAI9B,QACK,GAEX,GAAK,GAAQ,EAAJ6B,EAAO,CAId,GAHA7B,EAAqB,EAAjByC,EAAE1C,EAAI,IAAM,IAGP,EAAJA,KAAuB,EAAZ0C,GAFhBtC,EAAI,OAASH,GAAK,GAAK,IAEA,KAGrB,GAFAyC,EAAEtC,GAAK,GAAK2B,GAEPA,EAAG,CACNW,EAAE,MAAQnB,IAAM,GAAKtB,GACrB,KACF,OAIA,GADAyC,IAAgB,EAAZA,GADJL,EAAIP,EAAI,GAAK,IACF,MAAgB,EAAJ9B,GAASqC,EAAIP,EAAI,GAAK,IAAM,GAAKC,GACnDA,EAAK,MAGZW,EAAEX,EAAI,IAAM,GAAKD,EAGT,GAFR7B,EAAqB,EAAjByC,EAAE1C,EAAI,IAAM,MAGd0C,EAAEX,EAAI,IAAM,GAAK9B,EACjByC,EAAEzC,EAAI,IAAM,GAAK8B,GAKX,GAFR9B,EAAqB,EAAjByC,EAAE1C,EAAI,IAAM,MAGd0C,EAAEX,EAAI,IAAM,GAAK9B,EACjByC,EAAEzC,EAAI,IAAM,GAAK8B,EAErB,QAAW,GAuCX,OArCIyB,IAAM,EAAI,IACZnB,EAAImB,EAAIV,EAAI,EACZJ,EAAE1C,EAAI,GAAK,GAAS,EAAJqC,EAEhBK,GADAL,EAAIrC,EAAIqC,EAAI,EAAI,IACT,GAAiB,EAAZK,EAAEL,GAAK,KAEnBK,EAAE1C,EAAI,GAAK,GAAS,EAAJ8C,EAChBJ,EAAEV,EAAI,GAAK,GAAS,EAAJwB,EAChBd,EAAEV,EAAIwB,GAAK,GAAKA,EAER,EAAJ5B,IACFrD,EAAc,EAAVmE,EAAE,MAENX,EAAI,QADJ9B,EAAI2B,IAAM,IACQ,GAAK,GAAK,GAC5B3B,EAAI,GAAKA,GAECuC,EAMRvC,EAAgB,EAAZyC,GADJtC,EAAI2B,EAAI,EAAI,IACD,IALXW,EAAE,MAAQzC,EAAIuC,EACdvC,EAAI8B,EACJ3B,EAAI2B,EAAI,EAAI,GAMdW,EAAEtC,GAAK,GAAK7B,EACZmE,EAAEzC,EAAI,IAAM,GAAK1B,EACjBmE,EAAEnE,EAAI,GAAK,GAAK0B,EAChByC,EAAEnE,EAAI,IAAM,GAAKwD,GAGnBW,EAAE,MAAQc,EACVd,EAAE,MAAQV,GAIZY,EAAID,EADQ,EAAR3C,EAAI,CAGV,CAASwC,EAAIM,CACf,MAASN,EAAIM,CACf,MAASN,EAAIM,CACf,MAAO,GAAI1C,IAAM,GAAK,WAKpB,GAHA0C,GAAS,GADT1C,EAAIA,EAAI,GAAK,GAEb7B,EAAc,EAAVmE,EAAE,MAEC,CACLZ,EAAI,EAAIgB,EAAI,EAGgBU,GAF5BpD,KAAU,GAEJ0C,IAAM,EAAI,SAAgB,GAOxBA,KAAW,GADfU,EAAI,KAHJxD,GAAS,QADTsF,EAAIlF,IADJoC,GAAKpC,EAAI,QAAU,KAAO,GAAK,IAEb,KAAO,GAAK,GAGhBoC,GADdgB,GAAS,QADT8B,IAAStF,GACS,KAAO,GAAK,KACNsF,GAAK9B,IAAM,IAAM,GACtB,GAAK,EAAIA,GAAK,EAExB,EACbzB,EAA+B,EAA3BW,EAAE,OAASc,GAAK,IAAM,GAE1BpD,EAAG,GAAK,GAAK2B,EASX,IAJA3B,EAAI,EACJJ,EAAI8C,IAAiB,KAAN,EAAJU,GAAe,EAAI,IAAMA,IAAM,GAAK,GAC/CjC,EAAI,IAEM,CAER,IADAS,IAAsB,EAAjBU,EAAEX,EAAI,GAAK,IAAWe,EAAI,KACrB,EAAIhB,IAAM,EAAG,CAAE,IAAKE,EAAG,CAC/B5B,EAAI2B,EACJD,EAAI,EACJwD,EAAI,GACJ,MAAMlF,CACR,CACEA,EAAI2B,EACJD,EAAIE,CACJ,CAKF,GAFAT,EAAe,IAAN,GAFT+D,EAAqB,EAAjB5C,EAAEX,EAAI,IAAM,MAEQ,EAAJuD,KAAe,GADnCvD,EAAuC,EAAnCW,EAAEX,EAAI,IAAM/B,IAAM,IAAM,IAAM,KACMuB,EAAI+D,GAEvCvD,EAAG,CACNA,EAAIR,EACJ+D,EAAI,GACJ,KACF,CAAStF,IAAS,CACpB,MA5BA+B,EAAI,EACJ3B,EAAI,EACJkF,EAAI,SA2BK,GAEX,GAAe,KAAN,EAAJA,GAAc,CACjB,GAAe,IAAN,EAAJvD,GAAyB,IAAN,EAAJ3B,GAAa,CAI/B,KAFAA,IADAA,EAAI,GAAKoD,GACA,EAAIpD,GAAK7B,GAEV,CACNiE,EAAIM,EACJ,KACF,CAEAN,GAAKpC,EAAI,EAAIA,GAAM,EAAI,EAUvBA,EAAI,EACJ2B,EAA6D,EAAzDW,EAAE,SARNnB,GADAiB,KADAR,EAAIQ,IAAM,GAAK,MAEL,EAAI,GAQMR,GANpBhC,GADAwC,KAAUjB,KACA,EAAI,IAEdiC,GADAhB,KAAUxC,KACA,EAAI,IAEd+B,GADAS,KAAUgB,KACA,EAAI,KAEwBhB,IAAMT,IAAM,IAAM,EAC1D,CAEKA,EAGIuD,EAAI,IAFXtF,EAAII,EACJ4B,EAAIF,EAER,CAEA,GAAe,KAAN,EAAJwD,GAGH,IAFA/D,EAAIQ,IAEM,CAQR,GALAD,GADAC,GADAS,IAAsB,EAAjBE,EAAEnB,EAAI,GAAK,IAAWuB,EAAI,KACrB,EAAIhB,IAAM,GACZU,EAAIV,EACZ1B,EAAI2B,EAAIR,EAAInB,GACZ2B,EAAqB,EAAjBW,EAAEnB,EAAI,IAAM,MACNQ,EAAqB,EAAjBW,EAAEnB,EAAI,IAAM,KAErBQ,EAAG,CACN/B,EAAII,EACJ4B,EAAIF,EACJ,KACF,CAASP,EAAIQ,CACf,CAGF,GAAgB,IAAN,EAAJ/B,IAAcgC,IAAM,IAAgB,EAAVU,EAAE,OAAaI,EAAI,KAAO,IAAUlB,EAAI5B,EAAI8C,EAAI,KAAS,EAAI9C,IAAM,EAAQ,CACzGuB,EAAqB,EAAjBmB,EAAE1C,EAAI,IAAM,GAChBC,EAAqB,EAAjByC,EAAE1C,EAAI,IAAM,GAEhB,GAAK,IAAS,EAAJC,KAAe,EAAJD,GAAQ,CAI3B,KAFAC,EAAgB,EAAZyC,GADJtC,EAAIJ,EAAI,GAAK,IACF,OAITC,EAAgB,EAAZyC,GADJtC,EAAIJ,EAAI,GAAK,IACF,IAEH,CACNC,EAAI,EACJ,KACF,CAGF,OAIE,GAFA8B,EAAgB,EAAZW,GADJZ,EAAI7B,EAAI,GAAK,IACF,GAUTA,EAAI8B,EACJ3B,EAAI0B,MATE,CAGN,KADAC,EAAgB,EAAZW,GADJZ,EAAI7B,EAAI,GAAK,IACF,IACD,MACRA,EAAI8B,EACJ3B,EAAI0B,CAER,CAMFY,EAAEtC,GAAK,GAAK,CACd,MACEiC,EAAoB,EAAhBK,EAAE1C,EAAI,GAAK,GACf0C,EAAEL,EAAI,IAAM,GAAKpC,EACjByC,EAAEzC,EAAI,GAAK,GAAKoC,QACP,GAEX,GAAK,GAAId,EAAG,CAIV,GAHAnB,EAAqB,EAAjBsC,EAAE1C,EAAI,IAAM,IAGP,EAAJA,KAAuB,EAAZ0C,GAFhBX,EAAI,OAAS3B,GAAK,GAAK,IAEA,KAGrB,GAFAsC,EAAEX,GAAK,GAAK9B,GAEPA,EAAG,CACN1B,KAAU,GAAK6B,GACfsC,EAAE,MAAQnE,EACV,KACF,OAIA,GADAmE,IAAgB,EAAZA,GADJL,EAAId,EAAI,GAAK,IACF,MAAgB,EAAJvB,GAASqC,EAAId,EAAI,GAAK,IAAM,GAAKtB,GACnDA,EAAK,MAGZyC,EAAEzC,EAAI,IAAM,GAAKsB,EAGT,GAFRnB,EAAqB,EAAjBsC,EAAE1C,EAAI,IAAM,MAGd0C,EAAEzC,EAAI,IAAM,GAAKG,EACjBsC,EAAEtC,EAAI,IAAM,GAAKH,IAGnBG,EAAqB,EAAjBsC,EAAE1C,EAAI,IAAM,MAGd0C,EAAEzC,EAAI,IAAM,GAAKG,EACjBsC,EAAEtC,EAAI,IAAM,GAAKH,EAErB,QAAW,GAEXyC,EAAG,GAAK,GAAIV,IAAM,EAAI,GACpBK,EAAIL,EAAIc,EAAI,EACZJ,EAAE1C,EAAI,GAAK,GAAS,EAAJqC,EAEhBK,GADAL,EAAIrC,EAAIqC,EAAI,EAAI,IACT,GAAiB,EAAZK,EAAEL,GAAK,OACd,CAML,GALAK,EAAE1C,EAAI,GAAK,GAAS,EAAJ8C,EAChBJ,EAAEd,EAAI,GAAK,GAAS,EAAJI,EAChBU,EAAEd,EAAII,GAAK,GAAKA,EAChB/B,EAAI+B,IAAM,EAENA,IAAM,EAAI,IAAK,CACjBD,EAAI,OAAS9B,GAAK,GAAK,GAAK,GAC5BG,EAAc,EAAVsC,EAAE,QACNzC,EAAI,GAAKA,GAQPA,EAAgB,EAAZyC,GADJtC,EAAI2B,EAAI,EAAI,IACD,IALXW,EAAE,MAAQtC,EAAIH,EACdA,EAAI8B,EACJ3B,EAAI2B,EAAI,EAAI,GAMdW,EAAEtC,GAAK,GAAKwB,EACZc,EAAEzC,EAAI,IAAM,GAAK2B,EACjBc,EAAEd,EAAI,GAAK,GAAK3B,EAChByC,EAAEd,EAAI,IAAM,GAAKG,EACjB,KACF,CAqBA,GAPA9B,EAAI,QAVwB8B,GAF5B9B,EAAI+B,IAAM,GAEJA,IAAM,EAAI,SAAgB,GAOxBA,KAAW,GADfD,EAAI,KAHJvD,GAAS,QADT6D,EAAIpC,IADJwB,GAAKxB,EAAI,QAAU,KAAO,GAAK,IAEb,KAAO,GAAK,GAGhBwB,GADdM,GAAS,QADTM,IAAS7D,GACS,KAAO,GAAK,KACN6D,GAAKN,IAAM,IAAM,GACtB,GAAK,EAAIA,GAAK,EAExB,IACK,GAAK,EACvBW,EAAEd,EAAI,IAAM,GAAKG,EAEjBW,EAAM,GADNtC,EAAIwB,EAAI,GAAK,IACF,GAAK,EAChBc,EAAEtC,GAAK,GAAK,IAGN7B,GAFN6B,EAAI,GAAK2B,IAEK,CACZW,EAAE,MAAQnE,EAAI6B,EACdsC,EAAEzC,GAAK,GAAK2B,EACZc,EAAEd,EAAI,IAAM,GAAK3B,EACjByC,EAAEd,EAAI,IAAM,GAAKA,EACjBc,EAAEd,EAAI,GAAK,GAAKA,EAChB,KACF,CAEA3B,EAAgB,EAAZyC,EAAEzC,GAAK,GAEXA,EAAG,GAAK,KAAsB,EAAjByC,EAAEzC,EAAI,GAAK,GAAU,KAAW,EAAJ+B,GAAQ,CAG/C,IAFAzD,EAAIyD,IAAiB,KAAN,EAAJD,GAAe,EAAI,IAAMA,IAAM,GAAK,GAI7C3B,EAAgB,EAAZsC,GADJX,EAAI9B,EAAI,IAAM1B,IAAM,IAAM,GAAK,IACpB,IAFH,CAKR,KAAsB,EAAjBmE,EAAEtC,EAAI,GAAK,GAAU,KAAW,EAAJ4B,GAAQ,CACvC/B,EAAIG,EACJ,MAAMH,CACR,CACE1B,IAAS,EACT0B,EAAIG,CAER,CAEAsC,EAAEX,GAAK,GAAKH,EACZc,EAAEd,EAAI,IAAM,GAAK3B,EACjByC,EAAEd,EAAI,IAAM,GAAKA,EACjBc,EAAEd,EAAI,GAAK,GAAKA,EAChB,MAAMc,CACR,QAAW,GAGXL,EAAgB,EAAZK,GADJjB,EAAIxB,EAAI,EAAI,IACD,GACXyC,EAAEL,EAAI,IAAM,GAAKT,EACjBc,EAAEjB,GAAK,GAAKG,EACZc,EAAEd,EAAI,GAAK,GAAKS,EAChBK,EAAEd,EAAI,IAAM,GAAK3B,EACjByC,EAAEd,EAAI,IAAM,GAAK,CACnB,QAAW,GAIX,OADAgB,EAAID,EADQ,EAAR3C,EAAI,CAGV,CAASwC,EAAIM,CACf,MAASN,EAAIM,OACNN,GAAK,QAAc,GAI5B,IAFAT,EAAc,EAAVW,EAAE,SAEI,GAAKF,IAAM,EAqBnB,OApBAvC,EAAI8B,EAAIS,EAAI,EACZpC,EAAc,EAAVsC,EAAE,MAEFzC,IAAM,EAAI,IACZoC,EAAIjC,EAAIoC,EAAI,EACZE,EAAE,MAAQL,EACVK,EAAE,MAAQzC,EACVyC,EAAEL,EAAI,GAAK,GAAS,EAAJpC,EAChByC,EAAEtC,EAAI2B,GAAK,GAAK9B,EAChByC,EAAEtC,EAAI,GAAK,GAAS,EAAJoC,IAEhBE,EAAE,MAAQ,EACVA,EAAE,MAAQ,EACVA,EAAEtC,EAAI,GAAK,GAAS,EAAJ2B,EAEhBW,GADAL,EAAIjC,EAAI2B,EAAI,EAAI,IACT,GAAiB,EAAZW,EAAEL,GAAK,IAIrBO,EAAID,EADQ,EAARvC,EAAI,EAOV,IAFA4B,EAAc,EAAVU,EAAE,SAEI,EAAIF,IAAM,EAUlB,OATAhE,EAAIwD,EAAIQ,EAAI,EACZE,EAAE,MAAQlE,EAEViD,GADAY,EAAc,EAAVK,EAAE,OACEF,EAAI,EACZE,EAAE,MAAQjB,EACViB,EAAEjB,EAAI,GAAK,GAAS,EAAJjD,EAChBkE,EAAEL,EAAI,GAAK,GAAS,EAAJG,EAEhBI,EAAID,EADQ,EAARN,EAAI,EAsBV,GAjBgB,EAAVK,EAAE,MASCtC,EAAc,EAAVsC,EAAE,OARbA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,OAAS,EACXA,EAAE,OAAS,EACXA,EAAE,MAAQ,EACVA,EAAE,MAAQ,EACVA,EAAE,OAAa,GAALjE,EAAU,WACpB2B,EAAI,MAGNJ,EAAIwC,EAAI,GAAK,GAIbM,GAFAvB,EAAInB,GADJoD,EAAIhB,EAAI,GAAK,GACD,IACZV,EAAI,EAAI1B,EAAI,MAGF,GAAKoC,IAAM,EAGnB,OADAI,EAAID,EACGN,EAKT,GAAQ,GAFRjC,EAAc,EAAVsC,EAAE,SAEwBjE,GAAjBmD,EAAc,EAAVc,EAAE,OAAmBI,EAAI,KAAS,GAAKlB,IAAM,EAAInD,IAAM,EAAI2B,IAAM,EAGhF,OADAwC,EAAID,EACGN,EAGTN,EAAG,GAAK,GAAgB,EAAVW,EAAE,MAiGdzC,EAAI,EACJqF,EAAI,QAlGsB,CAC1BvD,EAAc,EAAVW,EAAE,MAENnE,EAAG,GAAK,GAAIwD,EAAG,CAGb,IAFAxD,EAAI,SAGFE,EAAgB,EAAZiE,EAAEnE,GAAK,MACD,GAAKwD,IAAM,IAAKtD,GAAqB,EAAhBiE,EAAEnE,EAAI,GAAK,IAAU,KAAO,EAAIwD,IAAM,IAF7D,CAKR,KAFA3B,EAAoB,EAAhBsC,EAAEnE,EAAI,GAAK,IAEP,CACN+G,EAAI,IACJ,MAAM/G,CACR,CAASA,EAAI6B,CACf,CAIA,IAFAH,EAAIsB,EAAIS,EAAIF,KAEF,EAAI,WAGZ,IAAS,GAFT1B,EAAgB,EAAZwqvC,GAAO,EAAJ3qvC,QAEsB,EAAZyC,EAAEnE,GAAK,KAA2B,EAAhBmE,EAAEnE,EAAI,GAAK,IAAU,IACtD,IAAe,IAAN,EAAJ6B,GAAoB,CACvB4B,EAAI/B,EACJsB,EAAInB,EACJkF,EAAI,IACJ,MAAMvD,CACR,OAEAxD,EAAI6B,EACJkF,EAAI,SAECrF,EAAI,CACf,MAASqF,EAAI,UAAgB,GAE7B,GAAK,GAAe,MAAN,EAAJA,GAGR,IAAe,IAAN,GAFTvD,EAAY,EAAR6ovC,GAAG,OAEoB3qvC,EAAI8B,EAAmHG,GAA/EjC,GAAoB,KAApCiC,GAAjBxC,EAAc,EAAVgD,EAAE,OAAoB,EAAI,GAAazC,EAAI,GAAU,GAAKiC,EAAIjC,EAAI,EAAIP,GAAKO,EAAI,GAAK6C,EAAI,IAAGpD,EAAc,EAAVgD,EAAE,OAAuB,EAAGzC,IAAM,EAAIuC,IAAM,EAAIvC,IAAM,EAAI,YAAiB,CAG9M,GAAQ,GAFRxB,EAAc,EAAViE,EAAE,QAEMR,IAAM,GAAKxC,IAAM,EAAIwC,IAAM,EAAIzD,IAAM,EAAO,CACtDwB,EAAI,EACJ,KACF,CAIA,IAAS,GAFTG,EAAgB,EAAZwqvC,GAAO,EAAJ3qvC,OAEa,EAAJ8B,GAAQ,CACtBC,EAAI/B,EACJsB,EAAIQ,EACJuD,EAAI,IACJ,MAAMvD,CACR,CACExD,EAAI6B,EACJkF,EAAI,GAER,MAASrF,EAAI,QACJ,GAEX,GAAK,GAAe,MAAN,EAAJqF,GAAe,CAEvB,GADAvD,EAAI,EAAI9B,EAAI,IACND,IAAM,EAAIC,IAAM,EAAKA,IAAM,EAAI,YAAwB,IAAN,EAAJ1B,IAAsB,CAAE,IAAe,IAAN,EAAJA,GAAoB,CAClG0B,EAAI,EACJ,KACF,CACE+B,EAAI/B,EACJsB,EAAIhD,EACJ+G,EAAI,IACJ,MAAMvD,CACN,CAIF,IAFA3B,EAAIoD,EAAIvD,GADRG,EAAc,EAAVsC,EAAE,OACU,EAAItC,KAEV,GAAK,WAAY,CACzB4B,EAAI/B,EACJsB,EAAIhD,EACJ+G,EAAI,IACJ,MAAMvD,CACR,CAEA,IAAuB,IAAN,EAAZ6ovC,GAAO,EAAJxqvC,IAAyB,CAC/BwqvC,GAAO,EAAJ7ovC,GACH9B,EAAI,EACJ,KACF,CACE+B,EAAI5B,EAAIH,EAAI,EACZsB,EAAIhD,EACJ+G,EAAI,IACJ,MAAMvD,CAEV,QAAW,GAEXW,EAAE,MAAkB,EAAVA,EAAE,MACZ4C,EAAI,GACN,QAGW,GAQX,GANgB,MAAN,EAAJA,IAAgBxC,IAAM,EAAI,eAAmH,IAAN,GAA1FtE,EAAgB,EAAZosvC,GAAO,EAAJ9nvC,KAAwG,GAA9D5C,GAAff,GAAf+C,EAAY,EAAR0ovC,GAAG,IAAgBpsvC,EAAI,KAAa,GAAKgE,EAAI,GAAK,KAAO,GAAmChE,IAAM,EAAI0D,IAAM,GAAgB,IAAN,EAAJ1D,IAAgC,IAAN,EAAJ0D,GAAsB,KACtOF,EAAI9B,EAAIf,EAAIc,EACZsB,EAAI/C,EACJ8G,EAAI,KAGS,MAAN,EAAJA,GAAe,CAClBrF,GAAe,EAAVyC,EAAE,OAAaV,EAAI,EACxBU,EAAE,MAAQzC,EACNA,IAAM,GAAe,EAAVyC,EAAE,SAAe,IAAKA,EAAE,MAAQzC,GAC/CuD,EAAc,EAAVd,EAAE,MAENZ,EAAG,GAAK,GAAI0B,EAAG,CAGb,IAFAvD,EAAI,QAEM,CAIR,IAAS,EAAJsB,MAHLnB,EAAgB,EAAZsC,EAAEzC,GAAK,KACX8B,EAAoB,EAAhBW,EAAEzC,EAAI,GAAK,IAES,GAAI,CAC1BqF,EAAI,IACJ,KACF,CAGA,KADA/G,EAAoB,EAAhBmE,EAAEzC,EAAI,GAAK,IACL,MAAeA,EAAI1B,CAC/B,CAEA,GAAgB,MAAN,EAAJ+G,KAAiB7D,EAAIxB,EAAI,EAAI,EAA+B,IAAV,EAAjByC,EAAEzC,EAAI,IAAM,GAAS,KAAgBsB,IAAM,EAAIiC,IAAM,EAAIpD,IAAM,GAAKoD,IAAM,EAAO,CACtHd,EAAEjB,GAAK,GAAKM,EAAIC,EAIhBP,EAAI+B,GADJhF,EAAmB,IAAV,GADTA,EAAIgF,EAAI,EAAI,GACC,GAAU,EAAI,EAAIhF,EAAI,GACvB,EACZA,GAJA6D,GAAe,EAAVK,EAAE,OAAaV,EAAI,GAIhBxD,EAAI,EACZkE,EAAE,MAAQjB,EACViB,EAAE,MAAQlE,EACVkE,EAAEjB,EAAI,GAAK,GAAS,EAAJjD,EAChBkE,EAAEc,EAAInB,EAAI,GAAK,GAAK,GACpBK,EAAE,MAAQA,EAAE,MACZ,KACF,CAMA,IAJInB,IAAM,GAAe,EAAVmB,EAAE,SAAe,IAAKA,EAAE,MAAQnB,GAC/CQ,EAAIR,EAAIS,EAAI,EACZ/B,EAAI,QAEM,CACR,IAAiB,EAAZyC,EAAEzC,GAAK,MAAgB,EAAJ8B,GAAQ,CAC9BuD,EAAI,IACJ,KACF,CAGA,KADAlF,EAAoB,EAAhBsC,EAAEzC,EAAI,GAAK,IACL,MAAeA,EAAIG,CAC/B,CAEA,GAAe,MAAN,EAAJkF,IAA4C,IAAV,EAAjB5C,EAAEzC,EAAI,IAAM,GAAS,GAAa,CACtDyC,EAAEzC,GAAK,GAAKsB,EAEZmB,GADAd,EAAI3B,EAAI,EAAI,IACL,IAAkB,EAAZyC,EAAEd,GAAK,IAAUI,EAK9Bc,GAHAlB,EAAIL,GAAoB,IAAV,GADdK,EAAIL,EAAI,EAAI,GACM,GAAU,EAAI,EAAIK,EAAI,GAAK,GAGrCY,EAAI,EACZxC,GAFAC,EAAI8B,GAAoB,IAAV,GADd9B,EAAI8B,EAAI,EAAI,GACM,GAAU,EAAI,EAAI9B,EAAI,GAAK,GAErC2B,EAAIY,EAAI,EAChBE,EAAEd,EAAI,GAAK,GAAS,EAAJY,EAEhBjB,EAAG,GAAK,IAAS,EAAJiC,KAAe,EAAJvD,GACtBoC,GAAe,EAAVK,EAAE,OAAa1C,EAAI,EACxB0C,EAAE,MAAQL,EACVK,EAAE,MAAQI,EACVJ,EAAEI,EAAI,GAAK,GAAS,EAAJT,MACX,CACL,IAAe,EAAVK,EAAE,SAAmB,EAAJzC,GAAQ,CAC5BoC,GAAe,EAAVK,EAAE,OAAa1C,EAAI,EACxB0C,EAAE,MAAQL,EACVK,EAAE,MAAQI,EACVJ,EAAEI,EAAI,GAAK,GAAS,EAAJT,EAChBK,EAAEI,EAAIT,GAAK,GAAKA,EAChB,KACF,CAIA,GAAmB,IAAV,GAFTjC,EAAoB,EAAhBsC,EAAEzC,EAAI,GAAK,IAEF,GAAS,CACpB+B,GAAS,EAAL5B,EACJ7B,EAAI6B,IAAM,EAEV4B,EAAG,EAAG,CAAE,GAAI5B,IAAM,EAAI,IAAK,CAIzB,GAHAA,EAAoB,EAAhBsC,EAAEzC,EAAI,GAAK,IAGN,GAFT8B,EAAqB,EAAjBW,EAAEzC,EAAI,IAAM,OAEI,EAAJG,GAAQ,CACtBsC,EAAE,MAAQA,EAAE,QAAU,GAAKnE,GAC3B,KACF,CACEmE,EAAEtC,EAAI,IAAM,GAAK2B,EACjBW,EAAEX,EAAI,GAAK,GAAK3B,EAChB,KAEJ,CACEmB,EAAqB,EAAjBmB,EAAEzC,EAAI,IAAM,GAChBG,EAAqB,EAAjBsC,EAAEzC,EAAI,IAAM,GAEhB,GAAK,IAAS,EAAJG,KAAe,EAAJH,GAAQ,CAK3B,GAFAG,EAAgB,EAAZsC,GADJnE,EAAQ,GADRwD,EAAI9B,EAAI,GAAK,GACD,IACD,GASF8B,EAAIxD,OAJX,KAFA6B,EAAgB,EAAZsC,EAAEX,GAAK,IAEH,CACN3B,EAAI,EACJ,KACF,CAGF,OAIE,GAFA7B,EAAgB,EAAZmE,GADJZ,EAAI1B,EAAI,GAAK,IACF,GAUTA,EAAI7B,EACJwD,EAAID,MATE,CAGN,KADAvD,EAAgB,EAAZmE,GADJZ,EAAI1B,EAAI,GAAK,IACF,IACD,MACRA,EAAI7B,EACJwD,EAAID,CAER,CAMFY,EAAEX,GAAK,GAAK,CACd,MACEM,EAAoB,EAAhBK,EAAEzC,EAAI,GAAK,GACfyC,EAAEL,EAAI,IAAM,GAAKjC,EACjBsC,EAAEtC,EAAI,GAAK,GAAKiC,QACP,GAEX,IAAKd,EAAK,MAEVhD,EAAI,QADJwD,EAAqB,EAAjBW,EAAEzC,EAAI,IAAM,KACE,GAAK,EAEvB,EAAG,CAAE,IAAiB,EAAZyC,EAAEnE,GAAK,MAAgB,EAAJ0B,GAItB,CAEL,GADAyC,EAAEnE,GAAK,GAAK6B,EACJ,EAAJA,EAAS,MACbsC,EAAE,MAAQA,EAAE,QAAU,GAAKX,GAC3B,MAAMC,CACR,CANE,GADAU,IAAgB,EAAZA,GADJL,EAAId,EAAI,GAAK,IACF,MAAgB,EAAJtB,GAASoC,EAAId,EAAI,GAAK,IAAM,GAAKnB,GACnDA,EAAK,MAAM4B,CAMhB,OAAS,GAYX,GAVAU,EAAEtC,EAAI,IAAM,GAAKmB,EAIT,GAFRhD,EAAgB,EAAZmE,GADJX,EAAI9B,EAAI,GAAK,IACF,MAGTyC,EAAEtC,EAAI,IAAM,GAAK7B,EACjBmE,EAAEnE,EAAI,IAAM,GAAK6B,KAGnB2B,EAAoB,EAAhBW,EAAEX,EAAI,GAAK,IACL,MACVW,EAAEtC,EAAI,IAAM,GAAK2B,EACjBW,EAAEX,EAAI,IAAM,GAAK3B,CACjB,OAAS,GAEXH,EAAIA,EAAI+B,EAAI,EACZF,EAAIE,EAAIhC,EAAI,CACd,MAAS8B,EAAI9B,EAQb,GALA0C,GADAzC,EAAIA,EAAI,EAAI,IACL,IAAkB,EAAbyC,EAAEzC,GAAK,GACnByC,EAAEI,EAAI,GAAK,GAAS,EAAJhB,EAChBY,EAAEI,EAAIhB,GAAK,GAAKA,EAChB7B,EAAI6B,IAAM,EAENA,IAAM,EAAI,IAAK,CACjBC,EAAI,OAAS9B,GAAK,GAAK,GAAK,GAC5BG,EAAc,EAAVsC,EAAE,QACNzC,EAAI,GAAKA,GAQPA,EAAgB,EAAZyC,GADJtC,EAAI2B,EAAI,EAAI,IACD,IALXW,EAAE,MAAQtC,EAAIH,EACdA,EAAI8B,EACJ3B,EAAI2B,EAAI,EAAI,GAMdW,EAAEtC,GAAK,GAAK0C,EACZJ,EAAEzC,EAAI,IAAM,GAAK6C,EACjBJ,EAAEI,EAAI,GAAK,GAAK7C,EAChByC,EAAEI,EAAI,IAAM,GAAKf,EACjB,KACF,CAEA9B,EAAI6B,IAAM,EAEV,GAAK,GAAK7B,EAAkB,CAC1B,GAAI6B,IAAM,EAAI,SAAU,CACtBvD,EAAI,GACJ,KACF,CAQAA,EAAIuD,KAAW,GADfvD,EAAI,KAHJC,GAAS,QADT6D,EAAIpC,IADJwB,GAAKxB,EAAI,QAAU,KAAO,GAAK,IAEb,KAAO,GAAK,GAGhBwB,GADdlD,GAAS,QADT8D,IAAS7D,GACS,KAAO,GAAK,KACN6D,GAAK9D,IAAM,IAAM,GACtB,GAAK,EAAIA,GAAK,CACnC,MAbeA,EAAI,QAaR,GAUX,GARA0B,EAAI,OAAS1B,GAAK,GAAK,EACvBmE,EAAEI,EAAI,IAAM,GAAKvE,EAEjBmE,EAAM,GADNtC,EAAI0C,EAAI,GAAK,IACF,GAAK,EAChBJ,EAAEtC,GAAK,GAAK,KACZA,EAAc,EAAVsC,EAAE,QACNX,EAAI,GAAKxD,IAEK,CACZmE,EAAE,MAAQtC,EAAI2B,EACdW,EAAEzC,GAAK,GAAK6C,EACZJ,EAAEI,EAAI,IAAM,GAAK7C,EACjByC,EAAEI,EAAI,IAAM,GAAKA,EACjBJ,EAAEI,EAAI,GAAK,GAAKA,EAChB,KACF,CAEA7C,EAAgB,EAAZyC,EAAEzC,GAAK,GAEXD,EAAG,GAAK,KAAsB,EAAjB0C,EAAEzC,EAAI,GAAK,GAAU,KAAW,EAAJ6B,GAAQ,CAG/C,IAFAvD,EAAIuD,IAAiB,KAAN,EAAJvD,GAAe,EAAI,IAAMA,IAAM,GAAK,GAI7C6B,EAAgB,EAAZsC,GADJX,EAAI9B,EAAI,IAAM1B,IAAM,IAAM,GAAK,IACpB,IAFH,CAKR,KAAsB,EAAjBmE,EAAEtC,EAAI,GAAK,GAAU,KAAW,EAAJ0B,GAAQ,CACvC7B,EAAIG,EACJ,MAAMJ,CACR,CACEzB,IAAS,EACT0B,EAAIG,CAER,CAEAsC,EAAEX,GAAK,GAAKe,EACZJ,EAAEI,EAAI,IAAM,GAAK7C,EACjByC,EAAEI,EAAI,IAAM,GAAKA,EACjBJ,EAAEI,EAAI,GAAK,GAAKA,EAChB,MAAMvB,CACR,QAAW,GAGXc,EAAgB,EAAZK,GADJjB,EAAIxB,EAAI,EAAI,IACD,GACXyC,EAAEL,EAAI,IAAM,GAAKS,EACjBJ,EAAEjB,GAAK,GAAKqB,EACZJ,EAAEI,EAAI,GAAK,GAAKT,EAChBK,EAAEI,EAAI,IAAM,GAAK7C,EACjByC,EAAEI,EAAI,IAAM,GAAK,CACnB,QAAW,GAIX,OADAF,EAAID,EADQ,EAARf,EAAI,CAGV,CAIA,IAFA3B,EAAI,SAGFG,EAAgB,EAAZsC,EAAEzC,GAAK,MACD,GAAKuD,IAAM,IAAKnB,EAAIjC,GAAqB,EAAhBsC,EAAEzC,EAAI,GAAK,IAAU,KAAS,EAAIuD,IAAM,IAC3EvD,EAAoB,EAAhByC,EAAEzC,EAAI,GAAK,GAQjBA,GADAG,GAFAA,GAFA0B,EAAIO,GAAK,GAAK,IAEU,IAAV,GADdjC,EAAI0B,EAAI,EAAI,GACM,GAAU,EAAI,EAAI1B,EAAI,GAAK,KAEnC,GADV0B,EAAI0B,EAAI,GAAK,KACO,EAAIA,EAAIpD,GACpB,EAAI,EAIZqB,EAAIF,GADJ/C,EAAmB,IAAV,GADTA,EAAI+C,EAAI,EAAI,GACC,GAAU,EAAI,EAAI/C,EAAI,GACvB,EACZA,GAJAuD,EAAIC,GAAK,GAAK,GAINxD,EAAI,EACZkE,EAAE,MAAQjB,EACViB,EAAE,MAAQlE,EACVkE,EAAEjB,EAAI,GAAK,GAAS,EAAJjD,EAChBkE,EAAEnB,EAAIQ,EAAI,GAAK,GAAK,GACpBW,EAAE,MAAQA,EAAE,MAEZA,GADAX,EAAI3B,EAAI,EAAI,IACL,GAAK,GACZsC,EAAEzC,GAAK,GAAKyC,EAAE,MACdA,EAAEzC,EAAI,GAAK,GAAKyC,EAAE,MAClBA,EAAEzC,EAAI,GAAK,GAAKyC,EAAE,MAClBA,EAAEzC,EAAI,IAAM,GAAKyC,EAAE,MACnBA,EAAE,MAAQnB,EACVmB,EAAE,MAAQV,EACVU,EAAE,MAAQ,EACVA,EAAE,MAAQzC,EACVA,EAAIG,EAAI,GAAK,EAEb,GACEqB,EAAIxB,EAEJyC,GADAzC,EAAIA,EAAI,EAAI,IACL,GAAK,SACJwB,EAAI,EAAI,KAAO,EAAIY,IAAM,GAEnC,IAAS,EAAJjC,KAAe,EAAJoD,GAAQ,CAOtB,GANAjC,EAAInB,EAAIoD,EAAI,EACZd,EAAEX,GAAK,IAAkB,EAAbW,EAAEX,GAAK,GACnBW,EAAEc,EAAI,GAAK,GAAS,EAAJjC,EAChBmB,EAAEtC,GAAK,GAAKmB,EACZtB,EAAIsB,IAAM,EAENA,IAAM,EAAI,IAAK,CACjBQ,EAAI,OAAS9B,GAAK,GAAK,GAAK,GAC5BG,EAAc,EAAVsC,EAAE,QACNzC,EAAI,GAAKA,GAQPA,EAAgB,EAAZyC,GADJtC,EAAI2B,EAAI,EAAI,IACD,IALXW,EAAE,MAAQtC,EAAIH,EACdA,EAAI8B,EACJ3B,EAAI2B,EAAI,EAAI,GAMdW,EAAEtC,GAAK,GAAKoD,EACZd,EAAEzC,EAAI,IAAM,GAAKuD,EACjBd,EAAEc,EAAI,GAAK,GAAKvD,EAChByC,EAAEc,EAAI,IAAM,GAAKzB,EACjB,KACF,CAqBA,GAPAA,EAAI,QAVwBxD,GAF5B0B,EAAIsB,IAAM,GAEJA,IAAM,EAAI,SAAgB,GAOxBA,KAAW,GADfhD,EAAI,KAHJC,GAAS,QADT6D,EAAIpC,IADJwB,GAAKxB,EAAI,QAAU,KAAO,GAAK,IAEb,KAAO,GAAK,GAGhBwB,GADdlD,GAAS,QADT8D,IAAS7D,GACS,KAAO,GAAK,KACN6D,GAAK9D,IAAM,IAAM,GACtB,GAAK,EAAIA,GAAK,EAExB,IACK,GAAK,EACvBmE,EAAEc,EAAI,IAAM,GAAKjF,EACjBmE,EAAEc,EAAI,IAAM,GAAK,EACjBd,EAAEZ,GAAK,GAAK,KACZ7B,EAAc,EAAVyC,EAAE,QACNtC,EAAI,GAAK7B,IAEK,CACZmE,EAAE,MAAQzC,EAAIG,EACdsC,EAAEX,GAAK,GAAKyB,EACZd,EAAEc,EAAI,IAAM,GAAKzB,EACjBW,EAAEc,EAAI,IAAM,GAAKA,EACjBd,EAAEc,EAAI,GAAK,GAAKA,EAChB,KACF,CAEAvD,EAAgB,EAAZyC,EAAEX,GAAK,GAEXyB,EAAG,GAAK,KAAsB,EAAjBd,EAAEzC,EAAI,GAAK,GAAU,KAAW,EAAJsB,GAAQ,CAG/C,IAFAhD,EAAIgD,IAAiB,KAAN,EAAJhD,GAAe,EAAI,IAAMA,IAAM,GAAK,GAI7C6B,EAAgB,EAAZsC,GADJX,EAAI9B,EAAI,IAAM1B,IAAM,IAAM,GAAK,IACpB,IAFH,CAKR,KAAsB,EAAjBmE,EAAEtC,EAAI,GAAK,GAAU,KAAW,EAAJmB,GAAQ,CACvCtB,EAAIG,EACJ,MAAMoD,CACR,CACEjF,IAAS,EACT0B,EAAIG,CAER,CAEAsC,EAAEX,GAAK,GAAKyB,EACZd,EAAEc,EAAI,IAAM,GAAKvD,EACjByC,EAAEc,EAAI,IAAM,GAAKA,EACjBd,EAAEc,EAAI,GAAK,GAAKA,EAChB,MAAM1B,CACR,QAAW,GAGXO,EAAgB,EAAZK,GADJjB,EAAIxB,EAAI,EAAI,IACD,GACXyC,EAAEL,EAAI,IAAM,GAAKmB,EACjBd,EAAEjB,GAAK,GAAK+B,EACZd,EAAEc,EAAI,GAAK,GAAKnB,EAChBK,EAAEc,EAAI,IAAM,GAAKvD,EACjByC,EAAEc,EAAI,IAAM,GAAK,CACnB,CACF,MAEiB,IAAN,GADTnB,EAAc,EAAVK,EAAE,QACanB,IAAM,EAAIc,IAAM,IAAKK,EAAE,MAAQnB,GAClDmB,EAAE,MAAQnB,EACVmB,EAAE,MAAQV,EACVU,EAAE,MAAQ,EACVA,EAAE,MAAQA,EAAE,MACZA,EAAE,OAAS,EACXA,EAAE,MAAQ,MACVA,EAAE,MAAQ,MACVA,EAAE,MAAQ,MACVA,EAAE,MAAQ,MACVA,EAAE,MAAQ,MACVA,EAAE,MAAQ,MACVA,EAAE,MAAQ,MACVA,EAAE,MAAQ,MACVA,EAAE,MAAQ,MACVA,EAAE,MAAQ,MACVA,EAAE,MAAQ,MACVA,EAAE,MAAQ,MACVA,EAAE,MAAQ,MACVA,EAAE,MAAQ,MACVA,EAAE,MAAQ,MACVA,EAAE,MAAQ,MACVA,EAAE,MAAQ,MACVA,EAAE,MAAQ,MACVA,EAAE,MAAQ,MACVA,EAAE,MAAQ,MACVA,EAAE,MAAQ,MACVA,EAAE,MAAQ,MACVA,EAAE,MAAQ,MACVA,EAAE,MAAQ,MACVA,EAAE,MAAQ,MACVA,EAAE,MAAQ,MACVA,EAAE,MAAQ,MACVA,EAAE,MAAQ,MACVA,EAAE,MAAQ,MACVA,EAAE,MAAQ,MACVA,EAAE,MAAQ,MACVA,EAAE,MAAQ,MACVA,EAAE,MAAQ,MACVA,EAAE,MAAQ,MACVA,EAAE,MAAQ,MACVA,EAAE,MAAQ,MACVA,EAAE,MAAQ,MACVA,EAAE,MAAQ,MACVA,EAAE,MAAQ,MACVA,EAAE,MAAQ,MACVA,EAAE,MAAQ,MACVA,EAAE,MAAQ,MACVA,EAAE,MAAQ,MACVA,EAAE,MAAQ,MACVA,EAAE,MAAQ,MACVA,EAAE,MAAQ,MACVA,EAAE,MAAQ,MACVA,EAAE,MAAQ,MACVA,EAAE,MAAQ,MACVA,EAAE,MAAQ,MACVA,EAAE,MAAQ,MACVA,EAAE,MAAQ,MACVA,EAAE,MAAQ,MACVA,EAAE,MAAQ,MACVA,EAAE,MAAQ,MACVA,EAAE,MAAQ,MACVA,EAAE,MAAQ,MACVA,EAAE,MAAQ,MACVA,EAAE,MAAQ,MACVA,EAAE,MAAQ,MACVA,EAAE,MAAQ,MACVA,EAAE,MAAQ,MACVA,EAAE,MAAQ,MACVA,EAAE,MAAQ,MAIVjB,EAAIF,GADJ/C,EAAmB,IAAV,GADTA,EAAI+C,EAAI,EAAI,GACC,GAAU,EAAI,EAAI/C,EAAI,GACvB,EACZA,GAJA6D,EAAIL,GAAK,GAAK,GAINxD,EAAI,EACZkE,EAAE,MAAQjB,EACViB,EAAE,MAAQlE,EACVkE,EAAEjB,EAAI,GAAK,GAAS,EAAJjD,EAChBkE,EAAEnB,EAAIc,EAAI,GAAK,GAAK,GACpBK,EAAE,MAAQA,EAAE,YACH,GAIX,IAFAzC,EAAc,EAAVyC,EAAE,SAEI,EAAIF,IAAM,EAUlB,OATAhE,EAAIyB,EAAIuC,EAAI,EACZE,EAAE,MAAQlE,EAEViD,GADAY,EAAc,EAAVK,EAAE,OACEF,EAAI,EACZE,EAAE,MAAQjB,EACViB,EAAEjB,EAAI,GAAK,GAAS,EAAJjD,EAChBkE,EAAEL,EAAI,GAAK,GAAS,EAAJG,EAEhBI,EAAID,EADQ,EAARN,EAAI,CAIZ,CAMA,OAHAK,GADAL,EAAI8iB,QACG,GAAK,GAEZviB,EAAID,EACGN,CACT,CAEA,SAAS+pB,GAAGhsB,GAEV,IAAIH,EAAI,EACJ8B,EAAI,EACJxD,EAAI,EACJuD,EAAI,EACJP,EAAI,EACJS,EAAI,EACJhC,EAAI,EACJwD,EAAI,EACR,GATApD,GAAQ,EASR,CACA2B,EAAI3B,GAAK,EAAI,EACb0B,EAAc,EAAVY,EAAE,MAGNc,EAAIzB,GADJ9B,GAAS,GADTG,EAAqB,EAAjBsC,EAAEtC,GAAK,GAAK,KAEJ,EAEZ,GAAK,GAAU,EAAJA,EAsITJ,EAAI+B,EACJC,EAAID,MAvIa,CAEjB,GADAxD,EAAgB,EAAZmE,EAAEX,GAAK,KACD,EAAJ3B,GAAU,OAGhB,GADAmB,EAAIhD,EAAI0B,EAAI,GADZ+B,EAAID,GAAK,EAAIxD,GAAK,KAER,EAAIuD,IAAM,EAAK,OAEzB,IAAe,EAAVY,EAAE,SAAmB,EAAJV,GAAQ,CAI5B,GAAmB,IAAV,GAFT/B,EAAgB,EAAZyC,GADJtC,EAAIoD,EAAI,EAAI,IACD,IAEE,GAAS,CACpBxD,EAAIgC,EACJ/B,EAAIsB,EACJ,KACF,CAMA,OAJAmB,EAAE,MAAQnB,EACVmB,EAAEtC,GAAK,IAAU,EAALH,EACZyC,EAAEV,EAAI,GAAK,GAAS,EAAJT,OAChBmB,EAAEV,EAAIT,GAAK,GAAKA,EAElB,CAIA,GAFAQ,EAAIxD,IAAM,EAENA,IAAM,EAAI,IAAK,CAIjB,GAHA6B,EAAoB,EAAhBsC,EAAEV,EAAI,GAAK,IAGN,GAFT/B,EAAqB,EAAjByC,EAAEV,EAAI,IAAM,OAEI,EAAJ5B,GAAQ,CACtBsC,EAAE,MAAQA,EAAE,QAAU,GAAKX,GAC3B/B,EAAIgC,EACJ/B,EAAIsB,EACJ,KACF,CACEmB,EAAEtC,EAAI,IAAM,GAAKH,EACjByC,EAAEzC,EAAI,GAAK,GAAKG,EAChBJ,EAAIgC,EACJ/B,EAAIsB,EACJ,KAEJ,CAEAO,EAAqB,EAAjBY,EAAEV,EAAI,IAAM,GAChB5B,EAAqB,EAAjBsC,EAAEV,EAAI,IAAM,GAEhB,GAAK,IAAS,EAAJ5B,KAAe,EAAJ4B,GAAQ,CAK3B,GAFA5B,EAAgB,EAAZsC,GADJX,EAAQ,GADR9B,EAAI+B,EAAI,GAAK,GACD,IACD,GASF/B,EAAI8B,OAJX,KAFA3B,EAAgB,EAAZsC,EAAEzC,GAAK,IAEH,CACNG,EAAI,EACJ,KACF,CAGF,OAIE,GAFA2B,EAAgB,EAAZW,GADJnE,EAAI6B,EAAI,GAAK,IACF,GAUTA,EAAI2B,EACJ9B,EAAI1B,MATE,CAGN,KADAwD,EAAgB,EAAZW,GADJnE,EAAI6B,EAAI,GAAK,IACF,IACD,MACRA,EAAI2B,EACJ9B,EAAI1B,CAER,CAMFmE,EAAEzC,GAAK,GAAK,CACd,MACED,EAAoB,EAAhB0C,EAAEV,EAAI,GAAK,GACfU,EAAE1C,EAAI,IAAM,GAAKI,EACjBsC,EAAEtC,EAAI,GAAK,GAAKJ,QACP,GAEX,GAAI8B,EAAG,CAIL,GAHA7B,EAAqB,EAAjByC,EAAEV,EAAI,IAAM,IAGC,EAAZU,GAFLX,EAAI,OAAS9B,GAAK,GAAK,IAEX,MAAgB,EAAJ+B,IAGtB,GAFAU,EAAEX,GAAK,GAAK3B,GAEPA,EAAG,CACNsC,EAAE,MAAQA,EAAE,QAAU,GAAKzC,GAC3BD,EAAIgC,EACJ/B,EAAIsB,EACJ,KACF,OAKA,GAFAmB,IAAgB,EAAZA,GADJ1C,EAAI8B,EAAI,GAAK,IACF,MAAgB,EAAJE,GAAShC,EAAI8B,EAAI,GAAK,IAAM,GAAK1B,GAEnDA,EAAG,CACNJ,EAAIgC,EACJ/B,EAAIsB,EACJ,KACF,CAGFmB,EAAEtC,EAAI,IAAM,GAAK0B,EAIT,GAFRC,EAAgB,EAAZW,GADJzC,EAAI+B,EAAI,GAAK,IACF,MAGTU,EAAEtC,EAAI,IAAM,GAAK2B,EACjBW,EAAEX,EAAI,IAAM,GAAK3B,IAGnBH,EAAoB,EAAhByC,EAAEzC,EAAI,GAAK,KAGbyC,EAAEtC,EAAI,IAAM,GAAKH,EACjByC,EAAEzC,EAAI,IAAM,GAAKG,EACjBJ,EAAIgC,EACJ/B,EAAIsB,IAEJvB,EAAIgC,EACJ/B,EAAIsB,EAER,MACEvB,EAAIgC,EACJ/B,EAAIsB,CAER,QAGW,GAEX,KAAIS,IAAM,GAAKwB,IAAM,IAGX,GADVjF,EAAgB,EAAZmE,GADJtC,EAAIoD,EAAI,EAAI,IACD,IACX,CAEA,GAAU,EAAJjF,EA2HJmE,EAAEtC,GAAK,IAAU,EAAL7B,EACZmE,EAAE1C,EAAI,GAAK,GAAS,EAAJC,EAChByC,EAAEV,EAAI/B,GAAK,GAAKA,EAChB6B,EAAI7B,MA9HQ,CACZ,IAAe,EAAVyC,EAAE,SAAmB,EAAJc,GAAQ,CAK5B,GAJAA,GAAe,EAAVd,EAAE,OAAazC,EAAI,EACxByC,EAAE,MAAQc,EACVd,EAAE,MAAQ1C,EACV0C,EAAE1C,EAAI,GAAK,GAAS,EAAJwD,GACP,EAAJxD,KAAqB,EAAV0C,EAAE,OAAc,OAGhC,OAFAA,EAAE,MAAQ,OACVA,EAAE,MAAQ,EAEZ,CAEA,IAAe,EAAVA,EAAE,SAAmB,EAAJc,GAMpB,OALAA,GAAe,EAAVd,EAAE,OAAazC,EAAI,EACxByC,EAAE,MAAQc,EACVd,EAAE,MAAQV,EACVU,EAAE1C,EAAI,GAAK,GAAS,EAAJwD,OAChBd,EAAEV,EAAIwB,GAAK,GAAKA,GAIlB1B,IAAU,EAALvD,GAAU0B,EAAI,EACnB8B,EAAIxD,IAAM,EAEV,EAAG,CAAE,GAAIA,IAAM,EAAI,IAAK,CAItB,GAHA0B,EAAoB,EAAhByC,EAAEc,EAAI,GAAK,IAGN,GAFTpD,EAAqB,EAAjBsC,EAAEc,EAAI,IAAM,OAEI,EAAJvD,GAAQ,CACtByC,EAAE,MAAQA,EAAE,QAAU,GAAKX,GAC3B,KACF,CACEW,EAAEzC,EAAI,IAAM,GAAKG,EACjBsC,EAAEtC,EAAI,GAAK,GAAKH,EAChB,KAEJ,CACEsB,EAAqB,EAAjBmB,EAAEc,EAAI,IAAM,GAChBpD,EAAqB,EAAjBsC,EAAEc,EAAI,IAAM,GAEhB,GAAK,IAAS,EAAJpD,KAAe,EAAJoD,GAAQ,CAK3B,GAFApD,EAAgB,EAAZsC,GADJX,EAAQ,GADR9B,EAAIuD,EAAI,GAAK,GACD,IACD,GASFvD,EAAI8B,OAJX,KAFA3B,EAAgB,EAAZsC,EAAEzC,GAAK,IAEH,CACN8B,EAAI,EACJ,KACF,CAGF,OAIE,GAFAA,EAAgB,EAAZW,GADJnE,EAAI6B,EAAI,GAAK,IACF,GAUTA,EAAI2B,EACJ9B,EAAI1B,MATE,CAGN,KADAwD,EAAgB,EAAZW,GADJnE,EAAI6B,EAAI,GAAK,IACF,IACD,MACRA,EAAI2B,EACJ9B,EAAI1B,CAER,CAMFmE,EAAEzC,GAAK,GAAK,EACZ8B,EAAI3B,CACN,MACE2B,EAAoB,EAAhBW,EAAEc,EAAI,GAAK,GACfd,EAAEX,EAAI,IAAM,GAAK3B,EACjBsC,EAAEtC,EAAI,GAAK,GAAK2B,EAChBA,EAAI3B,QACK,GAEX,GAAQ,EAAJmB,EAAO,CAIT,GAHAnB,EAAqB,EAAjBsC,EAAEc,EAAI,IAAM,IAGC,EAAZd,GAFLzC,EAAI,OAASG,GAAK,GAAK,IAEX,MAAgB,EAAJoD,IAGtB,GAFAd,EAAEzC,GAAK,GAAK8B,GAEPA,EAAG,CACNW,EAAE,MAAQA,EAAE,QAAU,GAAKtC,GAC3B,KACF,OAIA,GADAsC,IAAgB,EAAZA,GADJnE,EAAIgD,EAAI,GAAK,IACF,MAAgB,EAAJiC,GAASjF,EAAIgD,EAAI,GAAK,IAAM,GAAKQ,GACnDA,EAAK,MAGZW,EAAEX,EAAI,IAAM,GAAKR,EAIT,GAFRtB,EAAgB,EAAZyC,GADJtC,EAAIoD,EAAI,GAAK,IACF,MAGTd,EAAEX,EAAI,IAAM,GAAK9B,EACjByC,EAAEzC,EAAI,IAAM,GAAK8B,GAKX,GAFR3B,EAAoB,EAAhBsC,EAAEtC,EAAI,GAAK,MAGbsC,EAAEX,EAAI,IAAM,GAAK3B,EACjBsC,EAAEtC,EAAI,IAAM,GAAK2B,EAErB,CACA,OAAS,GAKX,GAHAW,EAAE1C,EAAI,GAAK,GAAS,EAAJ8B,EAChBY,EAAEV,EAAIF,GAAK,GAAKA,GAEP,EAAJ9B,KAAqB,EAAV0C,EAAE,OAEhB,YADAA,EAAE,MAAQZ,EAGd,CASA,GAFA1B,EAAI0B,IAAM,EAENA,IAAM,EAAI,IAkBZ,OAjBAC,EAAI,OAAS3B,GAAK,GAAK,GAAK,GAC5BH,EAAc,EAAVyC,EAAE,QACNtC,EAAI,GAAKA,GAQPA,EAAgB,EAAZsC,GADJzC,EAAI8B,EAAI,EAAI,IACD,IALXW,EAAE,MAAQzC,EAAIG,EACdA,EAAI2B,EACJ9B,EAAI8B,EAAI,EAAI,GAMdW,EAAEzC,GAAK,GAAKD,EACZ0C,EAAEtC,EAAI,IAAM,GAAKJ,EACjB0C,EAAE1C,EAAI,GAAK,GAAKI,OAChBsC,EAAE1C,EAAI,IAAM,GAAK+B,GAgBnB3B,EAAI,QAVwB7B,GAF5B6B,EAAI0B,IAAM,GAEJA,IAAM,EAAI,SAAgB,GAOxBA,KAAW,GADfvD,EAAI,KAHJgD,GAAS,QADTiC,EAAIpD,IADJ4B,GAAK5B,EAAI,QAAU,KAAO,GAAK,IAEb,KAAO,GAAK,GAGhB4B,GADdzD,GAAS,QADTiF,IAASjC,GACS,KAAO,GAAK,KACNiC,GAAKjF,IAAM,IAAM,GACtB,GAAK,EAAIA,GAAK,EAExB,IACK,GAAK,EACvBmE,EAAE1C,EAAI,IAAM,GAAKzB,EACjBmE,EAAE1C,EAAI,IAAM,GAAK,EACjB0C,EAAE1C,EAAI,IAAM,GAAK,EACjBC,EAAc,EAAVyC,EAAE,MACNX,EAAI,GAAKxD,EAET6B,EAAG,GAAK,GAAMH,EAAI8B,EAMX,CACL3B,EAAgB,EAAZsC,EAAEtC,GAAK,GAEXsC,EAAG,GAAK,KAAsB,EAAjBA,EAAEtC,EAAI,GAAK,GAAU,KAAW,EAAJ0B,GAAQ,CAG/C,IAFAvD,EAAIuD,IAAiB,KAAN,EAAJvD,GAAe,EAAI,IAAMA,IAAM,GAAK,GAI7C0B,EAAgB,EAAZyC,GADJX,EAAI3B,EAAI,IAAM7B,IAAM,IAAM,GAAK,IACpB,IAFH,CAKR,KAAsB,EAAjBmE,EAAEzC,EAAI,GAAK,GAAU,KAAW,EAAJ6B,GAAQ,CACvC1B,EAAIH,EACJ,MAAMyC,CACR,CACEnE,IAAS,EACT6B,EAAIH,CAER,CAEAyC,EAAEX,GAAK,GAAK/B,EACZ0C,EAAE1C,EAAI,IAAM,GAAKI,EACjBsC,EAAE1C,EAAI,IAAM,GAAKA,EACjB0C,EAAE1C,EAAI,GAAK,GAAKA,EAChB,MAAMI,CACR,QAAW,GAGXoD,EAAgB,EAAZd,GADJV,EAAI5B,EAAI,EAAI,IACD,GACXsC,EAAEc,EAAI,IAAM,GAAKxD,EACjB0C,EAAEV,GAAK,GAAKhC,EACZ0C,EAAE1C,EAAI,GAAK,GAAKwD,EAChBd,EAAE1C,EAAI,IAAM,GAAKI,EACjBsC,EAAE1C,EAAI,IAAM,GAAK,CACnB,MAvCE0C,EAAE,MAAQzC,EAAI8B,EACdW,EAAEtC,GAAK,GAAKJ,EACZ0C,EAAE1C,EAAI,IAAM,GAAKI,EACjBsC,EAAE1C,EAAI,IAAM,GAAKA,EACjB0C,EAAE1C,EAAI,GAAK,GAAKA,QAmCP,GAIX,GAFAwD,GAAe,EAAVd,EAAE,OAAc,EAAI,EACzBA,EAAE,MAAQc,IACF,EAAJA,GAAJ,CAGA,IAFApD,EAAI,MAGFA,EAAgB,EAAZsC,EAAEtC,GAAK,IACcA,EAAIA,EAAI,EAAI,EAGvCsC,EAAE,OAAS,CARU,CAzNG,CApJN,CAuXpB,CAEA,SAASqqB,GAAG3sB,EAAGH,GAEbA,GAAQ,EACR,IAAI8B,EAAI,EAQR,OAVA3B,GAAQ,IAKN2B,EAAc,EAAVoD,EAAElF,EAAGG,IACJH,EAAIG,KAAO,EAAI,QAAS2B,GAA6B,GAAvBA,IAAM,IAAM3B,IAAM,MAAoB,EAAJH,GAAS8B,GAAK,IAC5EA,EAAI,GAEb3B,EAAY,EAAR6lB,GAAGlkB,KAEgB,EAAjBW,EAAEtC,GAAK,GAAK,IAClB4nvC,GAAO,EAAJ5nvC,EAAO,EAAO,EAAJ2B,GACF,EAAJ3B,GAHc,EAAJA,CAInB,CAWA,SAASqkB,GAAGrkB,EAAGsC,EAAGzC,EAAG8B,GAMnB,OAAqC,GAA7BqC,EAAM,GADdrC,GAHAW,GAAQ,IAERX,GAAQ,KADR9B,GAAQ,KAEW,GAJnBG,GAAQ,KAIqB,EAAI,KAAO,IACtBA,EAAIH,IAAM,EAAI,EAClC,CAEA,SAASmuB,GAAGhuB,GAEV,OAAgD,IADhDA,GAAQ,GACI,IAAqB,EAAfuE,EAAEvE,EAAIA,EAAI,IAAU,EAAI,GAC5C,CA4NA,SAAS8nvC,GAAG9nvC,EAAGH,EAAG8B,EAAGxD,GAKnB,IAAIuD,EACAP,EAMJ,OALAA,EAAIqB,EACJA,EAAIA,EAAI,GAAK,EAlOf,SAAYxC,EAAGH,EAAG8B,EAAGxD,EAAGuD,GAKtBA,GAAQ,EACR,IAAIP,EAAI,EACJS,EAAI,EACJhC,EAAI,EACJwD,EAAI,EACJV,EAAI,EACJlB,EAAI,EACJY,EAAI,EACJ/D,EAAI,EACJiB,EAAI,EACJwC,EAAI,EAQR,GAPAN,EAfAxB,GAAQ,EAkBR4B,EAhBAD,GAAQ,EAkBR/B,EADAvB,EAhBAF,GAAQ,IAcRuE,EADAU,EAfAvD,GAAQ,GAwBN,OAFAsB,EAAe,IAAN,EAAJO,GAEA9B,EAUEuB,GAMLmB,EAAEZ,GAAK,GAAS,EAAJ1B,EACZsC,EAAEZ,EAAI,GAAK,GAAS,EAAJ7B,EAEhB6B,EAAI,EACmB,GAAfsC,EAAM,GAFd3F,EAAI,IAEcqD,KARhBA,EAAI,EACmB,GAAfsC,EAAM,GAFd3F,EAAI,IAEcqD,KAZhBP,IACFmB,EAAEZ,GAAK,IAAMF,IAAM,IAAMI,IAAM,GAC/BU,EAAEZ,EAAI,GAAK,GAAK,GAIlBA,GAAKF,IAAM,IAAMI,IAAM,KAAO,EACP,GAAfoC,EAAM,GAFd3F,EAAI,IAEcqD,IAgBtBP,EAAe,IAAN,EAAJvB,GAEL,EAAG,CAAE,GAAIgC,EAAG,CACV,IAAKT,EAAG,CAGN,IAFAA,GAAgB,EAAXoD,EAAM,EAAJ3E,KAA0B,EAAX2E,EAAM,EAAJ7B,IAAc,KAE5B,GAAK,GAAI,CAIjBd,EAHAQ,EAAIjB,EAAI,EAAI,EAIZnB,EAAIwB,KAAOY,IAAM,IAFjBvC,EAAIsB,EAAI,IAAM,IAEYuB,IAH1B9C,EAAI,GAAKuB,EAAI,GAIbtB,GAAI6C,KAAON,IAAM,GACjBjB,EAAI,EACJvB,EAAI4B,GAAK5B,EACT,KACF,CAEA,OAAK8B,GAMLY,EAAEZ,GAAK,GAAS,EAAJ1B,EACZsC,EAAEZ,EAAI,GAAK,GAAK0B,EAAQ,EAAJvD,EAEpB6B,EAAI,EACmB,GAAfsC,EAAM,GAFd3F,EAAI,IAEcqD,KARhBA,EAAI,EACmB,GAAfsC,EAAM,GAFd3F,EAAI,IAEcqD,GAQtB,CAIA,IAFAP,EAAIS,EAAI,EAAI,GAEJA,EAAI,EAAG,CAObA,EANAhC,EAAqB,IAAL,EAAX2E,EAAM,EAAJ3C,KAA+B,EAAX2C,EAAM,EAAJ7B,IAAc,EAO3C1C,GALAoC,EAAI,GAAKxC,EAAI,GAKL,GAAK,GAAK8C,MAHlBpD,EAAIM,EAAI,GAAK,KAGkB,IAAM8C,GAAKN,EAAIZ,KAAO5B,IAAM,KAF3DC,EAAIP,GAAK,IAGTO,GAAQ6C,KAAO9C,IAAM,GACrBuB,EAAIK,IARJM,EAAI,GAAKlC,EAAI,IAEbwD,EAAIhB,GAAK,IAOTxC,GAAK8C,GAAKZ,EAAIN,KAAOlC,IAAM,IAAM8D,EAAI5B,GAAKY,EAAIxC,EAAI,IAAM,GACxD,KACF,CAOA,OALQ,EAAJ8B,IACFY,EAAEZ,GAAK,GAAKP,EAAIK,EAChBc,EAAEZ,EAAI,GAAK,GAAK,GAGH,IAAN,EAAJE,IAEHE,EAAQ,EAAJ9B,EACmB,GAAfgE,EAAM,GAFd1E,EAAI8D,EAAQ,EAAJvD,IAEUiC,KAGlBxC,EAAIoD,MADJZ,EAAgB,EAAZksB,GAAO,EAAJpsB,MACU,GAAK,EACtBE,EAAIY,GAAK,GAAKZ,EAAIN,KAAOM,IAAM,GAAK,EACb,GAAfkC,EAAM,EAAJ1E,GAAQwC,GAEtB,CACE,GAAIX,EAQF,OAPQ,EAAJO,IACFY,EAAEZ,GAAK,IAAMgB,IAAM,IAAMd,IAAM,GAC/BU,EAAEZ,EAAI,GAAK,GAAK,GAIlBI,GAAKY,IAAM,IAAMd,IAAM,KAAO,EACP,GAAfoC,EAAM,GAFd1E,EAAI,IAEcwC,GAGpB,IAAKN,EAQH,OAPQ,EAAJE,IACFY,EAAEZ,GAAK,GAAK,EACZY,EAAEZ,EAAI,GAAK,IAAMgB,IAAM,IAAM9C,IAAM,IAIrCkC,GAAKY,IAAM,IAAM9C,IAAM,KAAO,EACP,GAAfoE,EAAM,GAFd1E,EAAI,IAEcwC,GAKpB,MAFAX,EAAIvB,EAAI,EAAI,GAEFA,GAQR,OAPQ,EAAJ8B,IACFY,EAAEZ,GAAK,GAAS,EAAJ1B,EACZsC,EAAEZ,EAAI,GAAK,GAAKP,EAAIuB,EAAQ,EAAJ7C,GAG1BP,EAAI,EACJwC,EAAIY,MAAoB,EAAZsrB,GAAO,EAAJpuB,MAAgB,GACR,GAAfoE,EAAM,EAAJ1E,GAAQwC,GAKpB,IAFAX,GAAgB,EAAXoD,EAAM,EAAJ3E,KAA0B,EAAX2E,EAAM,EAAJ7B,IAAc,KAE5B,GAAK,GAAI,CAGjBd,EAFA/B,EAAIsB,EAAI,EAAI,EAGZnB,EAAI0C,IAFJ9C,EAAI,GAAKuB,EAAI,GAEAK,KAAO3B,IAAM,GAC1BA,EAAI6C,KAAO7C,IAAM,GACjBsB,EAAI,EACJvB,EAAI4B,GAAK5B,EACT,KACF,CAEA,OAAK8B,GAMLY,EAAEZ,GAAK,GAAS,EAAJ1B,EACZsC,EAAEZ,EAAI,GAAK,GAAK0B,EAAQ,EAAJvD,EAEpBiC,EAAI,EACmB,GAAfkC,EAAM,GAFd1E,EAAI,IAEcwC,KARhBA,EAAI,EACmB,GAAfkC,EAAM,GAFd1E,EAAI,IAEcwC,GAQpB,OAAS,GAEX,GAAKF,EAIE,CAGLc,EAA+B,EA7MnC,SAAY1C,EAAGsC,EAAGzC,EAAG8B,GAMnB,OAA+D,GAAvDqC,GAJR1B,GAAQ,IAERX,GAAQ,KACR9B,GAJAG,GAAQ,IAERH,GAAQ,KAEM,KACW,EAAIG,IAAM,EAAI,KAAO,EAAI,GAAQ,EAAJH,EACxD,CAsMQkmB,CAAO,GAFX3jB,EAAQ,EAAJT,GAEc,GADlBH,EAAInD,EAAQ,EAAJF,IACc,GAAI,GAC1BwD,EAAU,EAANgC,IACJP,EAAIxD,EACJA,EAAI,EAEJ,GACEzB,EAAIiF,EACJA,EAAIjC,IAAM,GAAKiC,GAAK,EACpBjC,EAAIvB,EAAIuB,GAAK,EAGbkjB,GAAO,EAAJ3hB,EAAW,EAAJf,EAAW,GAFrBxD,EAAI6B,GAAK,EAAI7B,IAAM,GAAK,GAEI,GAD5BE,EAAI2B,IAAM,GAAKH,GAAK,EAAI,IAIxBD,EAAQ,GADRN,GADAwC,EAAU,EAAN6B,MACK,KAAW,EAAJ7B,GAAS,GAAK,EAAI,IAAM,GAExC9B,EAAwG,EAApGqkB,GAAO,EAAJlmB,EAAW,EAAJE,EAAOiB,EAAI8C,EAAI,KAAU,EAAJN,GAAS,GAAK,EAAI,IAAM,KAAW,EAAJA,GAAS,GAAK,EAAI,IAAM,GAAKN,EAAI,GACnG3B,EAAU,EAAN8D,IACJ/B,EAAIA,EAAI,EAAI,QACM,IAAN,EAAJA,IAEVc,EAAIU,EACJA,EAAI,CACN,MA5BEV,EAAI9C,EACJwD,EAAI,EACJxD,EAAI,EA4BNgC,EAAI,EAEI,EAAJF,IACFY,EAAEZ,GAAK,GAAK1B,EACZsC,EAAEZ,EAAI,GAAK,GAAK7B,GAIlBiC,GAA2B,GAAtBX,GAAK,EAAI,GAAiBvB,EACvBoE,EAAM,GAFd1E,GAAS,EAAJ6B,KAAW,IAAMuB,EAAId,IAAM,EAA0B,GAArBA,GAAK,EAAIT,IAAM,IAAUiC,GAGhE,CAYEku8B,CATAtx8B,GAAQ,EACRH,GAAQ,EACR8B,GAAQ,EACRxD,GAAQ,EAKRuD,EAAQ,EAAJP,GAEJqB,EAAIrB,EAC2C,GAAvC6C,EAAkB,EAAhB1B,EAAEZ,EAAI,GAAK,IAAqB,EAAZY,EAAEZ,GAAK,GACvC,CAEA,SAASqmvC,GAAG/nvC,EAAGsC,EAAGzC,GAKhB,OAJAG,GAAQ,EACRsC,GAAQ,GAGC,GAFTzC,GAAQ,IAEM,IACZmE,EAAE1B,IAAMzC,EAAI,GACLG,IAAMH,GAAKyC,GAAK,GAAKzC,GAAK,IAAM,GAAKA,IAG9CmE,EAAE,GACK1B,IAAMzC,EAAI,GAAK,EACxB,CAEA,SAASsohB,GAAGnohB,EAAGsC,EAAGzC,GAKhB,OAJAG,GAAQ,GAIC,GAFTH,GAAQ,IAEM,IACZmE,GAJF1B,GAAQ,IAICzC,GAAKG,GAAK,GAAKH,GAAK,GAAK,GAAKA,KAAO,GAAKA,EAAI,GAC9CG,GAAKH,IAGdmE,EAAEhE,GAAKH,EAAI,GAAK,GACT,EACT,CAEA,SAAS6ovC,GAAG1ovC,EAAGsC,GAGb,OADAA,GAAKA,GADLtC,GAAKA,IAEIA,GAAasC,EAClBA,GAAKA,GAAatC,GACdmD,GAAGnD,GAAIsC,EACjB,CAEA,SAASmovC,GAAGzqvC,GAEV,OADAA,GAAKA,IACO,GAAO8B,EAAE9B,EAAI,KAAO6D,EAAE7D,EAAI,GACxC,CAEA,SAAS0qvC,GAAG7qvC,EAAG8B,EAAGxD,GAChB0B,GAAQ,EACR8B,GAAQ,EAER,IACIR,EACAS,EAFAF,EAAI,EAIR,IAAS,GALTvD,GAAQ,KAKO,KAEb,OADA8F,EAAM,EAAJpE,EAAW,EAAJ8B,EAAW,EAAJxD,GACL,EAAJ0B,EAMT,GAHA+B,EAAQ,EAAJ/B,EACJsB,EAAItB,EAAI1B,EAAI,GAEH,EAAJ0B,KAAe,EAAJ8B,GAAQ,CACtB,KAAW,EAAJ9B,GAAO,CACZ,IAAK1B,EAAK,OAAW,EAAJyD,EACjB5B,EAAEH,GAAK,GAAiB,EAAZG,EAAE2B,GAAK,GACnB9B,EAAIA,EAAI,EAAI,EACZ8B,EAAIA,EAAI,EAAI,EACZxD,EAAIA,EAAI,EAAI,CACd,CAKA,IAFAuD,GADAvD,GAAS,EAALgD,EAAS,GACL,GAAK,GAED,EAAJtB,KAAe,EAAJ6B,IACjBY,EAAEzC,GAAK,GAAKyC,EAAEX,GAAK,GACnBW,EAAEzC,EAAI,GAAK,GAAKyC,EAAEX,EAAI,GAAK,GAC3BW,EAAEzC,EAAI,GAAK,GAAKyC,EAAEX,EAAI,GAAK,GAC3BW,EAAEzC,EAAI,IAAM,GAAKyC,EAAEX,EAAI,IAAM,GAC7BW,EAAEzC,EAAI,IAAM,GAAKyC,EAAEX,EAAI,IAAM,GAC7BW,EAAEzC,EAAI,IAAM,GAAKyC,EAAEX,EAAI,IAAM,GAC7BW,EAAEzC,EAAI,IAAM,GAAKyC,EAAEX,EAAI,IAAM,GAC7BW,EAAEzC,EAAI,IAAM,GAAKyC,EAAEX,EAAI,IAAM,GAC7BW,EAAEzC,EAAI,IAAM,GAAKyC,EAAEX,EAAI,IAAM,GAC7BW,EAAEzC,EAAI,IAAM,GAAKyC,EAAEX,EAAI,IAAM,GAC7BW,EAAEzC,EAAI,IAAM,GAAKyC,EAAEX,EAAI,IAAM,GAC7BW,EAAEzC,EAAI,IAAM,GAAKyC,EAAEX,EAAI,IAAM,GAC7BW,EAAEzC,EAAI,IAAM,GAAKyC,EAAEX,EAAI,IAAM,GAC7BW,EAAEzC,EAAI,IAAM,GAAKyC,EAAEX,EAAI,IAAM,GAC7BW,EAAEzC,EAAI,IAAM,GAAKyC,EAAEX,EAAI,IAAM,GAC7BW,EAAEzC,EAAI,IAAM,GAAKyC,EAAEX,EAAI,IAAM,GAC7B9B,EAAIA,EAAI,GAAK,EACb8B,EAAIA,EAAI,GAAK,EAGf,MAAY,EAAJ9B,IAAc,EAAJ1B,IAChBmE,EAAEzC,GAAK,GAAKyC,EAAEX,GAAK,GACnB9B,EAAIA,EAAI,EAAI,EACZ8B,EAAIA,EAAI,EAAI,CAEhB,MAGE,IAFAxD,EAAIgD,EAAI,EAAI,GAEA,EAAJtB,IAAc,EAAJ1B,IAChB6B,EAAEH,GAAK,GAAiB,EAAZG,EAAE2B,GAAK,GACnB3B,EAAEH,EAAI,GAAK,GAAqB,EAAhBG,EAAE2B,EAAI,GAAK,GAC3B3B,EAAEH,EAAI,GAAK,GAAqB,EAAhBG,EAAE2B,EAAI,GAAK,GAC3B3B,EAAEH,EAAI,GAAK,GAAqB,EAAhBG,EAAE2B,EAAI,GAAK,GAC3B9B,EAAIA,EAAI,EAAI,EACZ8B,EAAIA,EAAI,EAAI,EAIhB,MAAY,EAAJ9B,IAAc,EAAJsB,IAChBnB,EAAEH,GAAK,GAAiB,EAAZG,EAAE2B,GAAK,GACnB9B,EAAIA,EAAI,EAAI,EACZ8B,EAAIA,EAAI,EAAI,EAGd,OAAW,EAAJC,CACT,CAEA,SAASgmvC,GAAG/nvC,EAAG8B,EAAGxD,GAEhBwD,GAAQ,EAER,IAEIC,EAFAF,EAAI,EACJP,EAAI,EAEJvB,EAAI,EAIR,GAHAgC,GAPA/B,GAAQ,IAER1B,GAAQ,GAKI,EACZwD,GAAQ,KAEC,EAAJxD,IAAU,GAAI,CACjB,KAAW,EAAJ0B,GACLG,EAAEH,GAAK,GAAK8B,EACZ9B,EAAIA,EAAI,EAAI,EAOd,IAHAD,EAAI+B,EAAIA,GAAK,EAAIA,GAAK,GAAKA,GAAK,GAChCR,GAFAO,GAAS,EAALE,EAAS,GAEL,GAAK,GAED,EAAJ/B,KAAe,EAAJsB,IACjBmB,EAAEzC,GAAK,GAAKD,EACZ0C,EAAEzC,EAAI,GAAK,GAAKD,EAChB0C,EAAEzC,EAAI,GAAK,GAAKD,EAChB0C,EAAEzC,EAAI,IAAM,GAAKD,EACjB0C,EAAEzC,EAAI,IAAM,GAAKD,EACjB0C,EAAEzC,EAAI,IAAM,GAAKD,EACjB0C,EAAEzC,EAAI,IAAM,GAAKD,EACjB0C,EAAEzC,EAAI,IAAM,GAAKD,EACjB0C,EAAEzC,EAAI,IAAM,GAAKD,EACjB0C,EAAEzC,EAAI,IAAM,GAAKD,EACjB0C,EAAEzC,EAAI,IAAM,GAAKD,EACjB0C,EAAEzC,EAAI,IAAM,GAAKD,EACjB0C,EAAEzC,EAAI,IAAM,GAAKD,EACjB0C,EAAEzC,EAAI,IAAM,GAAKD,EACjB0C,EAAEzC,EAAI,IAAM,GAAKD,EACjB0C,EAAEzC,EAAI,IAAM,GAAKD,EACjBC,EAAIA,EAAI,GAAK,EAGf,MAAY,EAAJA,IAAc,EAAJ6B,IAChBY,EAAEzC,GAAK,GAAKD,EACZC,EAAIA,EAAI,EAAI,CAEhB,CAEA,MAAY,EAAJA,IAAc,EAAJ+B,IAChB5B,EAAEH,GAAK,GAAK8B,EACZ9B,EAAIA,EAAI,EAAI,EAGd,OAAO+B,EAAIzD,EAAI,CACjB,CAEA,SAASosB,GAAGvqB,GAEV,OADAA,GAAKA,IACO,GAAO8B,EAAE9B,EAAI,KAAO6D,EAAE7D,EAAI,GACxC,CAEA,SAASwqvC,GAAGxqvC,GAEV,IAAIH,EACA8B,EACAxD,EAKJ,OARA6B,GAAQ,EAIR7B,EAAU,EAANuG,KAIK,EAAJ1E,GAAS,GAAS,GAFvBH,GADA8B,EAAgB,EAAZW,EAAEnB,GAAK,IACHnB,EAAI,KAEqB,EAAJ2B,IAAc,EAAJ9B,GAAS,GAC9CgF,EAAM,EAAJhF,GACFgD,EAAE,KACM,IAGD,EAAJhD,IAAc,EAAJ1B,MAA2B,EAAXkF,EAAM,EAAJxD,KAC/BgD,EAAE,KACM,IAEVP,EAAEnB,GAAK,GAAKtB,EACD,EAAJ8B,EACT,CAGA,MAAO,CACLgpvC,WAAY7C,GACZ8C,gBAAiB7C,GACjB8C,eAAgB1iuB,GAChB2iuB,QAASn+tC,GACTo+tC,aAz6NF,SAAY/qvC,EAAGH,GAGb,IACI1B,EACAuD,EACAP,EAHAQ,EAAI,EAaR,GARAR,EAAIqB,EACJA,EAAIA,EAAI,IAAM,EAEdd,EAAIP,EACJonvC,GAXAvovC,GAAQ,EACRH,GAAQ,EAQR1B,EAAIgD,EAAI,IAAM,GAGdqnvC,GAAGxovC,EAAGH,EAAG6B,IAGA,GAFT7B,EAAgB,EAAZyC,EAAEZ,GAAK,KAEG,GAGZ,GAFAC,GAAKiovC,GAAGlovC,EAAI,EAAI,EAAGA,EAAI,IAAiB,IAAN,EAAJ7B,GAAc,IAAM,GAAK,EAAG1B,GAAK,EAEhD,IAAN,EAAJ0B,GAAa,CAChBG,EAAI,EAEJ,GAGE2B,IAASiovC,GAAGlovC,EAAI,GAFZ1B,GAEsB,GAAK,EAAG0B,EAAI,KAAW,GADjD1B,EAAIA,EAAI,EAAI,KAC+C,EAAJH,GAAS,IAAM,GAAK,EAAG1B,UAClE,EAAJ6B,IAAc,EAAJH,GACtB,OACO8B,EAAI,EAGb,OADAa,EAAIrB,EACS,kBAAJQ,EAAwB,iBACnC,EA04NEqpvC,YAx4NF,SAAYhrvC,EAAGH,GAGb,IACI1B,EACAuD,EACAP,EAHAQ,EAAI,EAaR,GARAR,EAAIqB,EACJA,EAAIA,EAAI,IAAM,EAEdd,EAAIP,EACJonvC,GAXAvovC,GAAQ,EACRH,GAAQ,EAQR1B,EAAIgD,EAAI,IAAM,GAGdqnvC,GAAGxovC,EAAGH,EAAG6B,IAGA,GAFT7B,EAAgB,EAAZyC,EAAEZ,GAAK,KAEG,GAGZ,GAFAC,GAAKiovC,GAAGlovC,EAAI,EAAI,EAAGA,EAAI,IAAiB,IAAN,EAAJ7B,GAAc,IAAM,GAAK,EAAG1B,GAAK,EAEhD,IAAN,EAAJ0B,GAAa,CAChBG,EAAI,EAEJ,GAGE2B,IAASiovC,GAAGlovC,EAAI,GAFZ1B,GAEsB,GAAK,EAAG0B,EAAI,KAAW,GADjD1B,EAAIA,EAAI,EAAI,KAC+C,EAAJH,GAAS,IAAM,GAAK,EAAG1B,UAClE,EAAJ6B,IAAc,EAAJH,GACtB,OACO8B,EAAI,EAGb,OADAa,EAAIrB,EACS,kBAAJQ,EAAwB,kBAAoB,IAAQ,GAC/D,EAy2NEspvC,eAp9NF,SAAYjrvC,EAAGH,GAGb,IACI1B,EACAuD,EACAP,EAHAQ,EAAI,EAaR,GARAR,EAAIqB,EACJA,EAAIA,EAAI,IAAM,EAEdd,EAAIP,EACJonvC,GAXAvovC,GAAQ,EACRH,GAAQ,EAQR1B,EAAIgD,EAAI,IAAM,GAGdqnvC,GAAGxovC,EAAGH,EAAG6B,IAGA,GAFT7B,EAAgB,EAAZyC,EAAEZ,GAAK,MAEI,EAGb,OADAc,EAAIrB,IADJQ,EAAI,GAON,GAFAA,GAAKiovC,GAAGlovC,EAAI,EAAI,EAAGA,EAAI,IAAiB,IAAN,EAAJ7B,GAAc,IAAM,GAAK,EAAG1B,GAAK,EAEhD,IAAN,EAAJ0B,GAEH,OADA2C,EAAIrB,GACIQ,EAGV3B,EAAI,EAEJ,GAGE2B,IAASiovC,GAAGlovC,EAAI,GAFZ1B,GAEsB,GAAK,EAAG0B,EAAI,KAAW,GADjD1B,EAAIA,EAAI,EAAI,KAC+C,EAAJH,GAAS,IAAM,GAAK,EAAG1B,UAClE,EAAJ6B,IAAc,EAAJH,IAGpB,OADA2C,EAAIrB,GACIQ,CACV,EA86NEupvC,SAn6MF,SAAYlrvC,EAAGH,EAAG8B,GAEhB9B,GAAQ,EAER,IAiBIoC,EAjBA9D,EAAI,EACJuD,EAAI,EACJP,EAAI,EACJS,EAAI,EACJhC,EAAI,EACJwD,EAAI,EACJV,EAAI,EACJlB,EAAI,EACJY,EAAI,EACJ/D,EAAI,EACJiB,EAAI,EACJwC,EAAI,EACJoD,EAAI,EACJnG,EAAI,EACJe,EAAI,EACJ1B,EAAI,EACJiD,EAAI,EAEJkB,EAAI,EACJU,EAAI,EACJjB,EAAI,EACJ2C,EAAI,EAER,KAxBAhD,GAAQ,GA0BN,OAAOK,EAOT,GAHA7D,EAAgB,EAAZmE,GADJZ,EA/BA1B,GAAQ,IAgCG,IAGP,EAA+B,IAAjB,UAFlB0B,EAAoB,EAAhBY,EAAEZ,EAAI,GAAK,IAEc,GAAS,CACpC,IAAS,EAAJC,IAAU,EAEb,OAAOK,EAOT,GAHAM,GADAN,EAAInC,IACG,GAAK1B,EACZmE,EAAEN,EAAI,GAAK,GAAKN,EAED,IAAN,EAAJC,GAEH,OAAOK,EAGT7D,EAAI,EAEJ,GAEE8E,EAAoB,EAAhBX,EAAM,GADVC,EAAIvC,GAAK7B,GAAK,GAAK,IACJ,GAEfmE,GADAN,EAAInC,GAAK1B,GAAK,GAAK,IACZ,GAAKmE,EAAEC,GAAK,GACnBD,EAAEN,EAAI,GAAK,GAAKiB,EAChB9E,EAAIA,EAAI,EAAI,SACA,EAAJA,KAAe,EAAJwD,IAGrB,OAAOxD,CACT,CAKA,KAFA8E,EAAY,EAAR4iB,GADJtjB,EAAIZ,GAAK,IAKP,OAAOK,EAMT,GAHA0ovC,GAAO,EAAJznvC,EAAW,EAAJjD,EAAW,EAAJuC,KACjBN,EAAe,EAAX0qB,GAAGhrB,EAAG,IAKR,OAFAqqB,GAAG/oB,IAEIjB,EAGT7D,EAAIwD,EAEJ3B,EAAG,OAAU,CAIX5B,EAA2B,EAAvB2pvC,GAAO,GAFXvmvC,EAAgB,EAAZc,GADJV,EAAIqB,IACO,IAEO,GADlBrB,EAAoB,EAAhBU,EAAEV,EAAI,GAAK,IACM,IACrB+B,IAEAtC,GADAjD,GAAQ,IACC,EAAI,EACb0B,GAAS,EAAJ3B,GAAS,EAEdmE,EAAG,GAAK,GAAIxC,EAAG,CAKb,GAJAf,IAAU,EAAJZ,GAAS,IAAM,IAAM,GAC3B2D,EAAuB,EAAnBqmhB,GAAO,EAAJ9mhB,EAAO,EAAG,IACjB6D,EAAU,EAANvB,IAEAtC,IAAM,EAAI,GAKZ,IAJAK,EAAI,EACJ1B,EAAIwB,EACJG,EAAIC,IAEM,CACR,KAAiB,IAAN,EAAJ5B,GAAyB,IAAN,EAAJ2B,IAAc,CAclC,GAbAR,EAA2B,EAAvB4mvC,GAAO,EAAJ/nvC,EAAW,EAAJ2B,EAAO,IACrBgC,IAEA/D,GAAS,GADTuB,GAAQ,MACW,EAAJE,GACfF,GAAS,EAAJA,KAAe,EAAJE,GAGhBM,EAAqC,EAAjCmmvC,GAAO,GAFXplvC,EAAI9C,EAAI,EAAIuB,EAAInB,EAAI,GAEF,GADlBA,EAAIJ,EAAI,EAAIuB,EAAIQ,EAAI,GACK,EAAJxD,EAAW,EAAJY,GAC5B4E,IAKe,IAAN,GAFTP,EAAgB,EAAZd,GADJ1C,EADAuB,EAAIc,GAAKN,GAAK,GAAK,IAER,KAEmB,IAAN,GADxB/B,EAAoB,EAAhB0C,EAAE1C,EAAI,GAAK,KACoB+B,EAAIe,OAMrC,IALAZ,EAAI,EACJxC,EAAIqC,EACJtD,EAAIuB,EACJ+B,EAAIe,IAEM,CACR,IAAS,EAAJZ,IAAc,EAAJ3D,GAAQ,CACrB6D,EAAI,GACJ,MAAMhC,CACR,CAEA,IAAS,EAAJoD,KAAe,EAAJzB,KAAe,UAALtD,EAAiB,KAAW,EAAJ2B,GAAQ,CACxD0C,EAA2B,EAAvBqlvC,GAAO,EAAJ3kvC,EAAW,EAAJ/E,EAAO,IACrBsF,IAEAvB,EAAQ,GADRM,GAAQ,GACI,EACZwC,EAA2B,EAAvB6ivC,GAAO,EAAJ3kvC,EAAW,EAAJ/E,EAAO,IACrBsF,IAEA9D,EAAG,GAAK,GAAoB,EAAdixB,EAAO,IAAJ5rB,GAA8B,CAK7C,GAJA9B,EAA2B,EAAvB2kvC,GAAO,EAAJ3kvC,EAAW,EAAJ/E,EAAO,IACrBsF,MACAP,GAAQ,IAEA,CACNxD,EAAI,EACJ,KACF,CAIA,IAFAA,EAAI,IAEM,CAGR,KAAqB,KAFrBsF,EAAqC,EAAjCijhB,GAAG,EAAG,EAAkB,GAAd,GAAKvohB,EAAI,GAAS,IAErB+B,EAAI,GAAiC,KAAf,EAANgC,KAAW3D,EAAI,IAAU,CAClDJ,EAAI,EACJ,MAAMC,CACR,CAEA,KAAID,IAAM,EAAIwD,IAAM,GAA0B,CAC5CxD,EAAI,EACJ,KACF,CAHyBA,EAAIA,EAAI,EAAI,CAIvC,CACF,MAzBkCA,EAAI,QAyB3B,GAEX,IAAK8C,EAAI,EAAI,KAAO,EAAI9C,IAAM,EAAG,CAC/BoC,EAAI,GACJ,MAAMhC,CACR,CAEAkF,EAAuB,EAAnBijhB,GAAO,EAAJ/lhB,EAAO,EAAG,IACjBpC,EAAU,EAAN2D,KAAe,UAAL3D,EAEdsC,GADA1C,EAAIuB,IACG,GAAK,EACZmB,EAAE1C,EAAI,GAAK,GAAK,EAChBA,EAAIN,EACJqC,GAAIuD,CACN,MAAStF,GAAKN,EAAI,EAAI,IAAU,EAAJnB,GAAS,EAMrC,GAAe,IAAN,GAFTiF,EAAgB,EAAZd,GADJjE,EADA8C,EAAIc,GAAKrC,GAAK,GAAK,IAER,KAEmB,IAAN,GADxBvB,EAAoB,EAAhBiE,EAAEjE,EAAI,GAAK,KACoB,MACjCyD,EAAIA,EAAI,EAAI,EACZxC,EAAIM,CAER,CAGF0C,GADA4C,EAAI/D,IACG,GAAKQ,EACZW,EAAE4C,EAAI,GAAK,GAAKlF,CAClB,CAGA,IAAS,GADT0B,EAAIA,EAAI,EAAI,MACQ,EAAJvD,GAAU,MAAMmE,EAEhCtC,EAAgB,EAAZsC,GADJX,EAAIsB,GAAKvB,GAAK,GAAK,IACR,GACXC,EAAoB,EAAhBW,EAAEX,EAAI,GAAK,EACjB,CAOF,IAJAD,EAAI,EACJ1B,EAAIwB,EACJG,EAAIC,IAEM,CACR,KAAiB,IAAN,EAAJ5B,GAAyB,IAAN,EAAJ2B,IAAc,CAKlC,GAJA/B,EAA2B,EAAvBmovC,GAAO,EAAJ/nvC,EAAW,EAAJ2B,EAAO,IACrBgC,KAGS,GAFT/D,GAAQ,OAEY,EAAJyB,IACd,IAAS,EAAJzB,KAAe,EAAJyB,KACdrB,GAAQ8B,EACRH,GAAS,SAALA,EAAgBuD,EAEhBtF,IAAM,GAAKxB,IAAM,GAAG,CACtB+C,EAAIE,EAEJ,GACE/B,EAAqC,EAAjC6ohB,GAAG,EAAG,EAAkB,GAAd,GAAKhnhB,EAAI,GAAS,GAChCA,EAAIA,EAAI,EAAI,EACZnB,GAAIV,EACJqC,EAAU,EAANgC,IAAUhC,QACPR,IAAM,EAAIvB,IAAM,EAC3B,OAGFI,EAAI,EACJ2B,EAAI,EAUN,GAPA/B,EAAqC,EAAjCkovC,GAAO,EAAJ9nvC,EAAW,EAAJ2B,EAAW,EAAJxD,EAAW,EAAJY,GAC5B4E,MAMiB,IAAN,GAHXjB,EAAgB,EAAZJ,GADJc,EADAjC,EAAIc,GAAKrC,GAAK,GAAK,IAER,KAGqB,IAAN,GAF1BwD,EAAoB,EAAhBd,EAAEc,EAAI,GAAK,MAKb,IAFA9D,EAAI,IAEM,CACR,IAAS,EAAJA,IAAc,EAAJnB,GAAQ,CACrB6D,EAAI,GACJ,MAAMhC,CACR,CAEA,IAAS,EAAJ0C,KAAe,EAAJ1C,KAAe,UAALoD,EAAiB,KAAW,EAAJzB,GAAQ,CACxDS,EAA2B,EAAvB2lvC,GAAO,EAAJrlvC,EAAW,EAAJU,EAAO,IACrBO,IAEAtF,EAAQ,GADR+D,GAAQ,GACI,EACZuC,EAA2B,EAAvBojvC,GAAO,EAAJrlvC,EAAW,EAAJU,EAAO,IACrBO,IAEAhC,EAAG,GAAK,GAAoB,EAAdmvB,EAAO,IAAJnsB,GAA8B,CAK7C,GAJAjC,EAA2B,EAAvBqlvC,GAAO,EAAJrlvC,EAAW,EAAJU,EAAO,IACrBO,MACAjB,GAAQ,IAEA,CACNU,EAAI,EACJ,KACF,CAIA,IAFAA,EAAI,IAEM,CAGR,KAAqB,KAFrBuB,EAAqC,EAAjCwjhB,GAAG,EAAG,EAAkB,GAAd,GAAK/khB,EAAI,GAAS,IAErBpD,EAAI,GAAiC,KAAf,EAAN2D,KAAWhC,EAAI,IAAU,CAClDyB,EAAI,EACJ,MAAMzB,CACR,CAEA,KAAIyB,IAAM,EAAIV,IAAM,GAA0B,CAC5CU,EAAI,EACJ,KACF,CAHyBA,EAAIA,EAAI,EAAI,CAIvC,CACF,MAzBkCA,EAAI,QAyB3B,GAEX,IAAKhB,EAAI,EAAI,KAAO,EAAIgB,IAAM,EAAG,CAC/BpB,EAAI,GACJ,MAAMhC,CACR,CAEA2E,EAAuB,EAAnBwjhB,GAAO,EAAJ9phB,EAAO,EAAG,IACjBsD,EAAU,EAANgC,KAAe,UAALhC,EAEdW,GADAjE,EAAI8C,IACG,GAAK,EACZmB,EAAEjE,EAAI,GAAK,GAAK,EAChB2B,GAAI2E,CACN,MAAS/E,GAAKA,EAAI,EAAI,IAAU,EAAJzB,GAAS,EAMrC,GAAe,IAAN,GAFTuE,EAAgB,EAAZJ,GADJc,EADAjC,EAAIc,GAAKrC,GAAK,GAAK,IAER,KAEmB,IAAN,GADxBwD,EAAoB,EAAhBd,EAAEc,EAAI,GAAK,KACoB,MAAe9D,EAAIA,EAAI,EAAI,CAChE,CAIFgD,GADAqC,EAAIxD,IACG,GAAKnB,EACZsC,EAAEqC,EAAI,GAAK,GAAKhD,CAClB,CAGA,IAAS,GADTD,EAAIA,EAAI,EAAI,MACQ,EAAJvD,GAAU,MAAMmE,EAEhCtC,EAAgB,EAAZsC,GADJX,EAAIsB,GAAKvB,GAAK,GAAK,IACR,GACXC,EAAoB,EAAhBW,EAAEX,EAAI,GAAK,EACjB,CACF,QAAW,GAEX,IAAKxD,EAAI,EAAI,KAAO,EAAI,GAAI,CAC1B6D,EAAI,GACJ,KACF,CAIA,KAFAkD,EAA6B,EAAzBynB,IAAQ,EAAJxuB,GAAS,EAAI,EAAG,IAEhB,CACN6D,EAAI,GACJ,KACF,CAEA7D,EAAG,GAAK,GAAI2B,EAAG,CACbR,EAAI,EACJjB,EAAI,EAEJ,EAAG,CAMD,KAAiB,IAAN,GAHXqD,EAAgB,EAAZY,GADJtC,EADAJ,EAAIqC,GAAK3C,GAAK,GAAK,IAER,KAGqB,IAAN,GAF1BU,EAAoB,EAAhBsC,EAAEtC,EAAI,GAAK,MAEqB,CAClCoD,EAA2B,EAAvB2kvC,GAAO,EAAJrmvC,EAAW,EAAJ1B,EAAO,IACrB2D,IAEAhC,EAAQ,GADRyB,GAAQ,GACI,EACZV,GAAS,UAAL1C,EACJ2E,EAA2B,EAAvBojvC,GAAO,EAAJrmvC,EAAW,EAAJ1B,EAAO,IACrB2D,IAEAjC,EAAG,GAAK,GAAkB,EAAdovB,EAAO,IAAJnsB,GAAc,CAK3B,GAJAvC,EAA2B,EAAvB2lvC,GAAO,EAAJrmvC,EAAW,EAAJ1B,EAAO,IACrB2D,IAGQ,GAFRvB,GAAQ,IAKN,IAFAjB,EAAI,IAEM,CAER,KAAqB,IAAdO,GADPiD,EAAqC,EAAjCwjhB,GAAG,EAAG,EAAkB,GAAd,GAAKhnhB,EAAI,GAAS,IACjB,GAAiC,IAAtBuB,GAAW,EAANiB,KAAW,IAAY,MAAMjC,EAC5D,KAAIP,IAAM,EAAIiB,IAAM,GAA4B,MAAvBjB,EAAIA,EAAI,EAAI,CACvC,CAIFO,GADA1B,EAAuB,EAAnBmohB,GAAO,EAAJxmhB,EAAO,EAAG,IAEjB3B,EAAU,EAAN2D,IAAUjB,EAEdJ,GADAX,EAAI/B,IACG,GAAK8B,EACZY,EAAEX,EAAI,GAAK,GAAK3B,EAChB2B,EAAIyB,EAAI,EAAI,CACd,QAAW,GAEI,IAAN,EAAJzB,KAEHW,GADAqC,EAAIO,GAAK7G,GAAK,GAAK,IACZ,GAAKqD,EACZY,EAAEqC,EAAI,GAAK,IAAU,UAAL3E,EAChB3B,EAAIA,EAAI,EAAI,EAEhB,CAEAiB,EAAIA,EAAI,EAAI,CACd,QAAc,EAAJA,KAAe,EAAJnB,IAErB,GAAI2B,EAAG,CAKL,GAJAgC,IAAU,EAAJ3D,GAAS,IAAM,IAAM,GAC3BiE,EAAuB,EAAnB+lhB,GAAO,EAAJ9mhB,EAAO,EAAG,IACjB/B,EAAU,EAANqE,IAEAtC,IAAM,EAAI,GAIZ,IAHArB,EAAI,EACJ0B,EAAI,IAEM,CACR,GAAK,KAAiB,IAAN,EAAJF,GAAyB,IAAN,EAAJI,IAAc,CAYvC,IAXAwB,EAA2B,EAAvB2kvC,GAAO,EAAJvmvC,EAAW,EAAJI,EAAO,IACrB+B,IAEAxC,GAAS,GADTiC,GAAQ,MACW,EAAJ/B,GACf+B,GAAS,EAAJA,KAAe,EAAJ/B,GAGhBF,EAAqC,EAAjC2mvC,GAAO,GAFXlovC,EAAIuB,EAAI,EAAIiC,EAAI5B,EAAI,GAEF,GADlB4B,EAAIjC,EAAI,EAAIiC,EAAIxB,EAAI,GACK,EAAJzD,EAAW,EAAJ2D,GAC5B6B,IACAhC,EAAI,IAEM,CACR,IAAS,EAAJA,IAAc,EAAJxD,GAAQ,CACrB6D,EAAI,GACJ,MAAMhC,CACR,CAKA,KAAU,WAFV0C,EAAoB,EAAhBJ,EAAM,GADVqC,EAAI1C,GAAKd,GAAK,GAAK,IACJ,IAEO,KAAW,EAAJiC,KAAsB,EAAZd,EAAEqC,GAAK,MAAgB,EAAJ/E,GAAY,CACpEoC,EAAI,GACJ,KACF,CAIA,IAAiB,EAAZM,GADLqC,EAAI1C,IADJd,GAAKA,EAAI,EAAI,IAAU,EAAJhD,GAAS,IACd,GAAK,IACP,MAAgB,EAAJyB,KAA0B,EAAhB0C,EAAEqC,EAAI,GAAK,MAAgB,EAAJvB,GAAc,MAAezB,EAAIA,EAAI,EAAI,CACpG,CAEA,GAAe,KAAN,EAAJK,KAAgBA,EAAI,GAAG,EAAgC,YAAlB,UAAJU,EAAgB,IAAwB,MAE9EJ,GADAqC,EAAI9E,GAAK6B,GAAK,GAAK,IACZ,GAAKF,EACZc,EAAEqC,EAAI,GAAK,GAAK/C,EAChBF,EAAIA,EAAI,EAAI,CACd,QAAW,GAIX,IAAS,GAFT1B,EAAIA,EAAI,EAAI,MAEQ,EAAJ7B,GAAQ,CACtBA,EAAIE,EACJ,MAAMF,CACR,CAGAqD,EAAgB,EAAZc,GADJV,EAAIqB,GAAKjD,GAAK,GAAK,IACR,GACX4B,EAAoB,EAAhBU,EAAEV,EAAI,GAAK,EACjB,CAMF,IAHA5B,EAAI,EACJ0B,EAAI,IAEM,CACR,GAAK,KAAiB,IAAN,EAAJF,GAAyB,IAAN,EAAJI,IAAc,CAIvC,GAHAwB,EAA2B,EAAvB2kvC,GAAO,EAAJvmvC,EAAW,EAAJI,EAAO,IACrB+B,KAES,GADTP,GAAQ,OACY,EAAJ/B,GACd,IAAS,EAAJ+B,KAAe,EAAJ/B,GAGd,GAFAM,EAAIH,EAAIY,EACRjB,GAAS,SAALS,EAAgBtC,EAChB8D,IAAM,EAAIhF,IAAM,EAAKgF,EAAIjC,MAAS,CACpCvB,EAAIyB,EAEJ,GACEsD,EAAqC,EAAjCwjhB,GAAG,EAAG,EAAkB,GAAd,GAAKvohB,EAAI,GAAS,GAChCA,EAAIA,EAAI,EAAI,EACZ+B,GAAIgD,EACJxD,EAAU,EAANwC,IAAUxC,QACPvB,IAAM,EAAIwD,IAAM,GAEzBA,EAAIjC,CACN,MAEAQ,EAAIH,EACJ4B,EAAIxB,OAGND,EAAI,EACJyB,EAAI,EAMN,IAJAxD,EAAqC,EAAjCkovC,GAAO,EAAJnmvC,EAAW,EAAJyB,EAAW,EAAJjF,EAAW,EAAJ2D,GAC5B6B,IACAxC,EAAI,IAEM,CACR,IAAS,EAAJA,IAAc,EAAJhD,GAAQ,CACrB6D,EAAI,GACJ,MAAMhC,CACR,CAKA,KAAU,WAFV0C,EAAoB,EAAhBJ,EAAM,GADVqC,EAAI1C,GAAKrC,GAAK,GAAK,IACJ,IAEO,KAAW,EAAJwD,KAAsB,EAAZd,EAAEqC,GAAK,MAAgB,EAAJhD,GAAY,CACpEK,EAAI,GACJ,KACF,CAIA,IAAiB,EAAZM,GADLqC,EAAI1C,IADJrC,GAAKA,EAAI,EAAI,IAAU,EAAJzB,GAAS,IACd,GAAK,IACP,MAAgB,EAAJwD,KAA0B,EAAhBW,EAAEqC,EAAI,GAAK,MAAgB,EAAJvB,GAAc,MAAejC,EAAIA,EAAI,EAAI,CACpG,CAEA,GAAe,KAAN,EAAJa,KAAgBA,EAAI,GAAG,EAAgC,YAAlB,UAAJU,EAAgB,IAAwB,MAE9EJ,GADAqC,EAAI9E,GAAK6B,GAAK,GAAK,IACZ,GAAKF,EACZc,EAAEqC,EAAI,GAAK,GAAK/C,EAChBF,EAAIA,EAAI,EAAI,CACd,QAAW,GAIX,IAAS,GAFT1B,EAAIA,EAAI,EAAI,MAEQ,EAAJ7B,GAAQ,CACtBA,EAAIE,EACJ,MAAMF,CACR,CAGAqD,EAAgB,EAAZc,GADJV,EAAIqB,GAAKjD,GAAK,GAAK,IACR,GACX4B,EAAoB,EAAhBU,EAAEV,EAAI,GAAK,EACjB,CACF,MACEF,EAAI,EACJvD,EAAIE,CAER,MACEqD,EAAI,EACJvD,EAAI,QACK,GAKX,GAHAypvC,GAAO,EAAJ3lvC,EAAO,EAAO,EAAJM,GACbmovC,GAAO,EAAJznvC,EAAW,EAAJiC,EAAO/G,GAAK,EAAI,GAC1B6tB,GAAG9mB,IACE/G,EAAK,MAAe0B,EAAIA,GAAK6B,GAAK,GAAK,CAC9C,CAEA,OAAe,KAAN,EAAJM,IACHgqB,GAAG/oB,GACH+oB,GAAG/pB,GAEQ,GADX0C,GAAK,IAEe,KAAN,EAAJ3C,IACVgqB,GAAG/oB,GACH+oB,GAAG/pB,GAEQ,GADX0C,GAAK,IAEe,KAAN,EAAJ3C,IACVgqB,GAAG/oB,GACH+oB,GAAG/pB,GAEQ,GADX0C,GAAK,IAEe,KAAN,EAAJ3C,IACVgqB,GAAG9mB,GACH8mB,GAAG/oB,GACH+oB,GAAG/pB,GAEQ,GADX0C,GAAK,KAEe,KAAN,EAAJ3C,IAAgB0ovC,GAAO,EAAJ7qvC,EAAW,EAAJoD,EAAO9E,GAAK,EAAI,GAEtD6tB,GAAG/oB,GACH+oB,GAAG/pB,GAEQ,GADX0C,EAAI,GAEN,EAk3LEwmvC,sBA92IF,SAAYnrvC,GAEV,IAAIH,EAAI,EACJ8B,EAAI,EACJxD,EAAI,EACJuD,EAAI,EACR,GALA1B,GAAQ,EAQR,IAFA7B,EAAI,IAEM,CAER,GAAQ,GADR0B,EAAgB,EAAZyC,EAAEtC,GAAK,IACE,EAAG,CAEd,GAAQ,GADR2B,EAAgB,EAAZW,EAAEzC,GAAK,IACE,GACX6B,EAAIC,EACJA,EAAqB,EAAjBW,EAAEX,EAAI,IAAM,GAChBqqB,GAAGtqB,SACe,IAAN,EAAJC,IACVD,EAAI7B,EACJA,EAAoB,EAAhByC,EAAEzC,EAAI,GAAK,GACfmsB,GAAGtqB,EACL,OAAoB,IAAN,EAAJ7B,IAIV,GAHAA,EAAIG,EACJA,EAAoB,EAAhBsC,EAAEtC,EAAI,GAAK,GACV7B,GAAK6tB,GAAGnsB,IACRG,EAAK,MAAe7B,EAAI,CAC/B,CAGF,EAk1IEitvC,cAjhOF,SAAYprvC,GAEV,SAAU7B,EAAE,QADZ6B,GAAQ,IACkB,IAAM,EAClC,EA+gOEqrvC,aA7gOF,SAAYrrvC,GAEV,SAAU7B,EAAE,QADZ6B,GAAQ,IACkB,IAAM,EAClC,EA2gOE+mvC,2BAl2VF,SAAWD,GAOT,OANA9mvC,EAAI,IAAI4d,UAAUkpuC,GACd,IAAInouC,WAAWmouC,GACnBxkvC,EAAI,IAAIwc,WAAWgouC,GACf,IAAI9nuC,aAAa8nuC,GACrB3ovC,EAAI,IAAI8gB,aAAa6nuC,GACrB5/tC,EAAS4/tC,GACF,CACT,EA21VEwE,mBAh0NF,SAAYtrvC,EAAGH,GAGb,IAGI+B,EACAhC,EAJA+B,EAAI,EACJD,EAAI,EACJP,EAAI,EAGJiC,EAAI,EACJV,EAAI,EACJlB,EAAI,EAOR,GANA5B,EAAI4C,EACJA,EAAIA,EAAI,IAAM,EAEd6gB,GAbArjB,GAAQ,EACRH,GAAQ,EAWR+B,EAAIhC,IAIK,GAFTI,EAAgB,EAAZsC,EAAEV,GAAK,MAEI,EAGb,OADAY,EAAI5C,IADJuB,EAAI,GAKNtB,EAAIG,GAAK,EAAI,EACbA,EAAI,EACJ2B,EAAI,EACJD,GAAKvD,EAAEyD,EAAI,GAAK,GAChBT,GAAKhD,EAAEyD,EAAI,IAAM,GAEjB,GAEEc,EAAIhB,EACJA,GAAKvD,EAAEyD,EAAI,IAFX5B,EAAIA,EAAI,EAAI,IAES,IAAM,GAC3BwB,GAAKH,EAAc,IAATK,EAAIgB,IACdU,EAAIjC,EACJA,GAAKhD,EAAEyD,EAAI,GAAK5B,GAAK,GAAK,GAAK,GAE/BoD,EAAI5B,EAAIA,GADR4B,GAAK/B,EAAc,IAATF,EAAIiC,OACIhF,GAAGsE,IAAMtE,GAAGsD,GAAK0B,GACnCzB,GAAyC,GAAhCgD,KAAK5F,GAAGqE,MAAOrE,IAAI,EAAMqE,YACtB,EAAJpD,KAAe,EAAJH,IAIrB,OADA2C,EAAI5C,IADJ4B,EAAQ,kBAAJG,EAGN,EAqxNE4pvC,kBAnxNF,SAAYvrvC,EAAGH,GAGb,IAGI+B,EACAhC,EAJA+B,EAAI,EACJD,EAAI,EACJP,EAAI,EAGJiC,EAAI,EACJV,EAAI,EACJlB,EAAI,EAOR,GANA5B,EAAI4C,EACJA,EAAIA,EAAI,IAAM,EAEd6gB,GAbArjB,GAAQ,EACRH,GAAQ,EAWR+B,EAAIhC,IAIK,GAFTI,EAAgB,EAAZsC,EAAEV,GAAK,MAEI,EAGb,OADAY,EAAI5C,IADJuB,EAAI,GAKNtB,EAAIG,GAAK,EAAI,EACbA,EAAI,EACJ2B,EAAI,EACJD,GAAKvD,EAAEyD,EAAI,GAAK,GAChBT,GAAKhD,EAAEyD,EAAI,IAAM,GAEjB,GAEEc,EAAIhB,EACJA,GAAKvD,EAAEyD,EAAI,IAFX5B,EAAIA,EAAI,EAAI,IAES,IAAM,GAC3BwB,GAAKH,EAAc,IAATK,EAAIgB,IACdU,EAAIjC,EACJA,GAAKhD,EAAEyD,EAAI,GAAK5B,GAAK,GAAK,GAAK,GAE/BoD,EAAI5B,EAAIA,GADR4B,GAAK/B,EAAc,IAATF,EAAIiC,OACIhF,GAAGsE,IAAMtE,GAAGsD,GAAK0B,GACnCzB,GAAyC,GAAhCgD,KAAK5F,GAAGqE,MAAOrE,IAAI,EAAMqE,YACtB,EAAJpD,KAAe,EAAJH,IAIrB,OADA2C,EAAI5C,IADJ4B,EAAQ,kBAAJG,EAAwB,IAG9B,EAwuNE6pvC,qBA/2NF,SAAYxrvC,EAAGH,GAGb,IAGI+B,EACAhC,EAJA+B,EAAI,EACJD,EAAI,EACJP,EAAI,EAGJiC,EAAI,EACJV,EAAI,EACJlB,EAAI,EAOR,GANA5B,EAAI4C,EACJA,EAAIA,EAAI,IAAM,EAEd6gB,GAbArjB,GAAQ,EACRH,GAAQ,EAWR+B,EAAIhC,IAIK,GAFTI,EAAgB,EAAZsC,EAAEV,GAAK,MAEI,EAGb,OADAY,EAAI5C,IADJuB,EAAI,GAKNtB,EAAIG,GAAK,EAAI,EACbA,EAAI,EACJ2B,EAAI,EACJD,GAAKvD,EAAEyD,EAAI,GAAK,GAChBT,GAAKhD,EAAEyD,EAAI,IAAM,GAEjB,GAEEc,EAAIhB,EACJA,GAAKvD,EAAEyD,EAAI,IAFX5B,EAAIA,EAAI,EAAI,IAES,IAAM,GAC3BwB,GAAKH,EAAc,IAATK,EAAIgB,IACdU,EAAIjC,EACJA,GAAKhD,EAAEyD,EAAI,GAAK5B,GAAK,GAAK,GAAK,GAE/BoD,EAAI5B,EAAIA,GADR4B,GAAK/B,EAAc,IAATF,EAAIiC,OACIhF,GAAGsD,IAAMtD,GAAGsE,GAAKU,GACnCzB,GAAyC,GAAhCgD,KAAK5F,GAAGqE,MAAOrE,IAAI,EAAMqE,YACtB,EAAJpD,IAAc,EAAJH,IAGpB,OADA2C,EAAI5C,GACI+B,CACV,EAq0NE8pvC,yBAn1GF,SAAYzrvC,EAAGsC,EAAGzC,EAAG8B,EAAGxD,GAMtB,IAAIuD,EACAP,EAYJ,OAdAhD,GAAQ,EAGRgD,EAAIqB,EACJA,EAAIA,EAAI,GAAK,GAEbxC,EAAwB,EAApBmjB,GAVJnjB,GAAQ,EACRsC,GAAQ,EACRzC,GAAQ,EACR8B,GAAQ,EAMRD,EAAIP,MAIFiovC,GAAG1nvC,EAAGvD,GACN6B,EAAI,GAGNwC,EAAIrB,EACO,EAAJnB,CACT,EAg0GE0rvC,yBA9zGF,SAAY1rvC,EAAGsC,EAAGzC,EAAG8B,GAKnB,IAAIxD,EACAuD,EAOJ,OAZA1B,GAAQ,EACRsC,GAAQ,EAERX,GAAQ,EAGRxD,EAAIqE,EACJA,EAAIA,EAAI,GAAK,EAEb6mvC,GAPAxpvC,GAAQ,EAMR6B,EAAIvD,GAEJwD,EAAqB,EAAjBuf,GAAGlhB,EAAGsC,EAAGZ,EAAGC,GAChBa,EAAIrE,EACO,EAAJwD,CACT,EAizGEg5Q,MAAO3uP,GACP2/tC,SAAUrD,GACVsD,6CA/kJF,SAAY5rvC,EAAGH,GACbG,GAAQ,EAER,IACI7B,EACAuD,EAFAC,EAAI,EAOR,OAJAxD,EAAIqE,EACJA,EAAIA,EAAI,GAAK,EACbb,EAAIxD,GAEE,EAAiC,YAAnB,YARpB0B,GAAQ,GAQyB,IAQjC6B,EAA2B,EAAvBqmvC,GAAO,EAAJ/nvC,EAAW,EAAJH,EAAO,IACrB8D,IACArB,EAAEX,GAAK,GAAK,EACZA,EAAmD,EAA/CyvB,EAAGpxB,GAAQ,WAALH,EAAkB,UAAe,EAAJ6B,EAAOC,GAC9C9B,EAAU,EAAN8D,IACJK,EAAM,EAAJnE,GACF2C,EAAIrE,EACO,EAAJwD,IAbLA,EAAI,EACJqC,EAAM,GAFNnE,EAAI,IAGJ2C,EAAIrE,EACO,EAAJwD,EAWX,EAsjJEkqvC,oCAhhJF,SAAY7rvC,EAAGH,EAAG8B,GAChB3B,GAAQ,EAGR,IAAI7B,EACAuD,EACAP,EACAS,EACAhC,EAAI,EACRuB,EAAIqB,EACJA,EAAIA,EAAI,GAAK,EACbrE,EAAIgD,EACJS,GAAI,EAAiC,YAAnB,YAVlB/B,GAAQ,GAUuB,GAC/B6B,GAAS,WAAL7B,EAAkB,UAEtByC,GADA1C,EAXA+B,GAAQ,IAYD,GAAKC,EAAI5B,EAAI,EACpBsC,EAAE1C,EAAI,GAAK,GAAKgC,EAAIF,EAAI,EAEpBE,GACF/B,EAA2B,EAAvBkovC,GAAO,EAAJ/nvC,EAAW,EAAJH,EAAO,IACrB8D,IACArB,EAAEnE,GAAK,GAAK,EACZ6B,EAAyB,EAArBoxB,EAAGpxB,EAAG0B,EAAO,EAAJ7B,EAAO1B,GACpB0B,EAAU,EAAN8D,MAEJ3D,EAAI,EACJH,EAAI,GAINyC,GADA1C,EAAI+B,EAAI,EAAI,IACL,GAAK3B,EACZsC,EAAE1C,EAAI,GAAK,GAAKC,EAChB2C,EAAIrB,CAEN,EA++IE2qvC,yBAjpJF,SAAY9rvC,EAAGH,EAAG8B,EAAGxD,GAKnB,IAEIyD,EAGAc,EALAhB,EAAI,EACJP,EAAI,EAEJvB,EAAI,EACJwD,EAAI,EAEJ5B,EAAI,EAKR,GAJAkB,EAAIF,EACJA,EAAIA,EAAI,GAAK,EACbZ,EAAIc,IAEmB,EAAjB4nvC,GAfNtqvC,GAAQ,EACRH,GAAQ,EACR8B,GAAQ,EACRxD,GAAQ,IAiBN,OAHAiF,EAAI,EACJY,EAAM,GAFNpE,EAAI,IAGJ4C,EAAIE,EACO,EAAJU,EAOT,IAJAxD,GAAS,WAALC,EAEJ6B,GADAA,EAAsB,IAAN,EAAXmmvC,GAAG7nvC,EAAGH,KACH,EAAI,EAGVyC,EAAEV,GAAK,GAAK,EAEZT,EAAIO,EAAI,EAAI,KACH,GAFTF,EAAqB,EAAjB4vB,EAAGpxB,EAAGH,EAAG6B,EAAGE,OAEI,EAAJD,IAAgB,EAANgC,OAAiB,EAAJxF,KAJ/B,CAKR,KAAIgD,IAAM,EAAI,GAAkB,CAC9BO,EAAI,EACJ1B,EAAI,EACJoD,EAAI,EACJ,KACF,CALmB1B,EAAIP,CAMzB,CAEA,OAAe,IAAN,EAAJiC,IACHY,EAAM,EAAJtC,GACFc,EAAIE,EACO,EAAJ1C,IAGTwB,EAAuB,EAAnB2mhB,GAAO,EAAJzmhB,EAAO,EAAG,IACjB0B,EAAe,EAAXxD,EAAK+D,IAAW,UACpBnC,GAAIxB,EACJgE,EAAM,EAAJZ,GACFZ,EAAIE,EACO,EAAJlB,EACT,EA6lJEuqvC,iCAAkC1ouC,GAClC2ouC,qCA/+IF,SAAYhsvC,EAAGH,EAAG8B,GAGhBA,GAAQ,EACR,IACID,EADAvD,EAAI,EAERuD,EAAsB,IAAN,EAAXmmvC,GALL7nvC,GAAQ,EACRH,GAAQ,IAKRA,IAAS,WAETyC,GADAnE,EAAIwD,IACG,GAAKD,EAAI1B,EAAI,EACpBsC,EAAEnE,EAAI,GAAK,GAAKuD,EAAQ,UAAJ7B,EAAgB,EAEpCyC,GADAnE,EAAIwD,EAAI,EAAI,IACL,GAAK3B,EACZsC,EAAEnE,EAAI,GAAK,GAAS,UAAJ0B,EAEhByC,GADAnE,EAAIwD,EAAI,GAAK,IACN,GAAK3B,EACZsC,EAAEnE,EAAI,GAAK,GAAS,UAAJ0B,EAEhByC,GADAnE,EAAIwD,EAAI,GAAK,IACN,GAAK3B,EACZsC,EAAEnE,EAAI,GAAK,GAAS,UAAJ0B,EAEhByC,GADAnE,EAAIwD,EAAI,GAAK,IACN,GAAK3B,EACZsC,EAAEnE,EAAI,GAAK,GAAS,UAAJ0B,EAEhByC,GADAX,EAAIA,EAAI,GAAK,IACN,GAAK3B,EACZsC,EAAEX,EAAI,GAAK,GAAS,UAAJ9B,CAElB,EAq9IEosvC,wCA7lJF,SAAYjsvC,EAAGsC,GAGb,IAAIzC,EAGJ,OALAG,GAAQ,EAIRgE,EAA0C,IAD1CnE,GAAI,EAAiC,YAAnB,YAFlByC,GAAQ,GAEuB,KACnB,WAALA,EAAkB,UAAY,IAChB,GAAbzC,EAAIG,EAAI,EAClB,EAulJEksvC,oBAAqB1/rC,GACrB2/rC,gBA5xSF,SAAYnsvC,GACVA,GAAQ,EACR,IAAIH,EAAI,EACJ8B,EAAI,EACJxD,EAAI,EACR0B,EAAI,EAEJ,GACEsohB,GAAO,EAAJtohB,EAAO,EAAG,IACb1B,EAAU,UAANwF,IAEJrB,GADAX,EAAI3B,GAAKH,GAAK,GAAK,IACZ,IAAM,EACbyC,EAAEX,EAAI,GAAK,GAAKxD,EAChB0B,EAAIA,EAAI,EAAI,QACM,MAAN,EAAJA,GAGZ,EA4wSEusvC,YAzzGF,SAAYpsvC,EAAGsC,EAAGzC,EAAG8B,GAKnB,IAAIxD,EACAuD,EACAP,EAOJ,OAXAtB,GAAQ,EACR8B,GAAQ,EAIRR,EAAIqB,EACJA,EAAIA,EAAI,GAAK,EAEbd,EAAIP,EACmEnB,EAAxC,IAAN,EAApBmjB,GAXLnjB,GAAQ,EACRsC,GAAQ,EAUMtC,EAAGsC,EAFjBnE,EAAIgD,EAAI,GAAK,KAEiD,IAAN,EAApBgiB,GAAGnjB,EAAGsC,EAAGzC,EAAG8B,EAAGD,IAAmC,EAAXw0B,GAAG/3B,EAAGuD,IAAqB,EACtGc,EAAIrB,EACO,EAAJnB,CACT,EA2yGEqsvC,eAAgBxC,GAChByC,YA76JF,SAASC,EAAGvsvC,EAAGH,EAAG8B,GAGhBA,GAAQ,EACR,IAQIS,EARAjE,EAAI,EACJuD,EAAI,EACJP,EAAI,EACJS,EAAI,EACJhC,EAAI,EACJwD,EAAI,EACJV,EAAI,EACJlB,EAAI,EAERY,EAAII,EACJA,EAAIA,EAAI,IAAM,EACdE,EAAIN,EAAI,IAAM,EACdjB,EAAIiB,EAAI,GAAK,EACbZ,EAAIY,EACJV,EAA2B,EAAvBqmvC,GAAO,GAjBX/nvC,GAAQ,GAiBU,GAhBlBH,GAAQ,GAgBa,IACrB8D,IACA/D,EAAQ,GAAJ8B,EACJY,EAAEI,GAAK,GAAK9C,EACZgC,EAA2B,EAAvBmmvC,GAAO,EAAJ/nvC,EAAW,EAAJH,EAAO,IACrB8D,IACA/B,GAAQ,IAER5B,EAAG,GAAK,GAAY,EAAR8wB,EAAGlvB,GAAQ,CACrB,GAAQ,EAAJhC,EAGF,IAFAzB,EAAI,IAEM,CAGR,KAAqB,KAFrBiF,EAAqC,EAAjC+khB,GAAG,EAAG,EAAkB,GAAd,GAAKhqhB,EAAI,GAAS,IAErB6B,EAAI,GAAiC,KAAf,EAAN2D,KAAW9D,EAAI,IAAU,CAClD6B,EAAI,EACJ,MAAM1B,CACR,CAEA,KAAI7B,IAAM,EAAIyB,IAAM,GAA4B,MAAvBzB,EAAIA,EAAI,EAAI,CACvC,CAGF,KAAU,EAAJuD,GAMJ,OALA0B,EAA2B,EAAvB+khB,GAAGvohB,EAAI,EAAI,EAAG,EAAG,IACrB4B,EAAU,EAANmC,KAAe,SAAL9D,EAEd0svC,GAAInpvC,EAAIpD,KADR0C,EAAqC,EAAjCylhB,GAAG,EAAG,EAAkB,GAAd,GAAKvohB,EAAI,GAAS,IACf4B,IAAY,EAANmC,KAAUhC,QACjCa,EAAIJ,GAEGV,EAAI,CACf,MAASA,EAAI,QAAc,GAE3B2ovC,GAAGrqvC,EAAGH,EAAGsB,GAELO,GACF8nvC,GAAGrovC,EAAGuB,EAAGlB,GACT4B,EAAI,IAEJwiV,GAAGzkV,EAAGuB,EAAGlB,GACT4B,EAAI,GAGNd,EAAG,GAAK,GAAY,EAARwuB,EAAGlvB,GACb,GAAKhC,EAGH,IAFAzB,EAAI,IAEM,CAGR,KAAqB,KAFrByD,EAAqC,EAAjCumhB,GAAG,EAAG,EAAkB,GAAd,GAAKhqhB,EAAI,GAAS,IAErB6B,EAAI,GAAiC,KAAf,EAAN2D,KAAW9D,EAAI,IAAU,CAClD1B,EAAI,EACJ,MAAMmE,CACR,CAEA,KAAInE,IAAM,EAAIyB,IAAM,GAA0B,CAC5CzB,EAAI,GACJ,KACF,CAHyBA,EAAIA,EAAI,EAAI,CAIvC,MAfQA,EAAI,QAiBPA,EAAI,QAAc,GAI3B,GAFAypvC,GAAO,EAAJjmvC,GAAQ,EAAO,EAAJxD,GAEVuD,EAAG,CACLA,EAAI,EAEJ,EAAG,CAMD,IAJA+nvC,GADAtovC,EAAIK,GAAKE,GAAK,GAAK,EACD,EAAZY,EAAEI,GAAK,IACbvB,EAAgB,EAAZmB,EAAEnB,GAAK,GACXhD,EAAI,KAKc,IAAP,GADTyB,EAAgB,EAAZ0C,GADJV,EAAID,GAAKxD,GAAK,GAAK,IACR,MACc,EAAJyB,KAAe,EAAJuB,KAAyBhD,EAAIA,EAAI,EAAI,EAGvEmE,EAAEV,GAAK,GAAKT,EACZO,EAAIA,EAAI,EAAI,CACd,QAAc,EAAJA,KAAe,EAAJ0B,GACvB,KAAO,CACL1B,EAAI,EAEJ,EAAG,CAMD,IAJAg/D,GADAv/D,EAAIK,GAAKE,GAAK,GAAK,EACD,EAAZY,EAAEI,GAAK,GAAQ,EAAG,GACxBvB,EAAgB,EAAZmB,EAAEnB,GAAK,GACXhD,EAAI,KAKc,IAAP,GADTyB,EAAgB,EAAZ0C,GADJV,EAAID,GAAKxD,GAAK,GAAK,IACR,MACc,EAAJyB,KAAe,EAAJuB,KAAyBhD,EAAIA,EAAI,EAAI,EAGvEmE,EAAEV,GAAK,GAAKT,EACZO,EAAIA,EAAI,EAAI,CACd,QAAc,EAAJA,KAAe,EAAJ0B,GACvB,CAEAZ,EAAIJ,CAEN,EAkzJEoqvC,iBAtvNF,SAAYxsvC,EAAGsC,GAKb,OAFAA,EAA2B,EAAvBylvC,GAAO,GAFX/nvC,GAAQ,GAEU,GADlBsC,GAAQ,GACa,IACrBqB,IACW,GAAJrB,EAAS,CAClB,EAivNEmqvC,uBAAwBnC,GACxBoC,cAAe7E,GACf8E,iBAvtLF,SAAY3svC,EAAGsC,GAKb,OAFAA,EAA2B,EAAvBylvC,GAAO,GAFX/nvC,GAAQ,GAEU,GADlBsC,GAAQ,GACa,IACrBqB,IACW,EAAJrB,EAAQ,CACjB,EAktLEsqvC,WAAY9C,GACZ+C,QA/xGF,SAAY7svC,EAAGH,EAAG8B,EAAGxD,EAAGuD,GAGtBC,GAAQ,EACRxD,GAAQ,EACRuD,GAAQ,EACR,IAgBIuB,EAhBA9B,EAAI,EACJS,EAAI,EACJhC,EAAI,EACJwD,EAAI,EACJV,EAAI,EACJlB,EAAI,EACJY,EAAI,EACJ/D,EAAI,EACJiB,EAAI,EACJwC,EAAI,EACJ/C,EAAI,EACJe,EAAI,EACJ1B,EAAI,EACJiD,EAAI,EACJY,EAAI,EACJM,EAAI,EAEJP,EAAI,EAOR,GANAiB,EAAIT,EACJA,EAAIA,EAAI,GAAK,EAEbZ,EAAIqB,EAAI,GAAK,EACbV,EAAIU,EAE2B,IAAN,EAApBkgB,GA7BLnjB,GAAQ,EACRH,GAAQ,EA4BMG,EAAGH,EAJjBsB,EAAI8B,EAAI,GAAK,KAIiD,IAAN,EAApBkgB,GAAGnjB,EAAGH,EAAG8B,EAAGxD,EAAGyD,IAAkB,CAGnE,IAAS,GAFTK,EAAe,EAAXi0B,GAAG/0B,EAAGS,KAEI,EAGZ,OADAY,EAAIS,EACO,EAFPhB,EAkDN,IA9CAK,EAAEnB,GAAK,GAAK,EACZmB,EAAEnB,EAAI,GAAK,GAAK,EAChBmB,EAAEnB,EAAI,GAAK,GAAK,EAChBmB,EAAEV,GAAK,GAAK,EACZU,EAAEV,EAAI,GAAK,GAAK,EAChBU,EAAEV,EAAI,GAAK,GAAK,EAChBuhB,GAAGnjB,EAAGH,EAAGG,EAAGH,EAAGsB,GACfgiB,GAAGnjB,EAAGH,EAAG8B,EAAGxD,EAAGyD,GACf0nvC,GAAGnovC,GACHmovC,GAAG1nvC,GAEEK,GAcH3C,IAAU,EAAJ2C,GAKNZ,EAAIF,EACJQ,EAPAH,EAAgB,EAAZc,EAAEnB,GAAK,GAQXhD,EALAiE,EAAgB,EAAZE,GADJxC,EAAIqB,EAAI,EAAI,IACD,GAMXA,EAJA9C,EAAgB,EAAZiE,GADJlE,EAAI+C,EAAI,EAAI,IACD,GAKXW,KAAmB,EAAZQ,EAAEV,GAAK,IAAUJ,EAAI,GAAKlC,EACjCP,KAAuB,EAAhBuD,EAAEV,EAAI,GAAK,IAAUQ,EAAI,GAAK9C,EACrCA,KAAuB,EAAhBgD,EAAEV,EAAI,GAAK,IAAUvD,EAAI,GAAKiB,IAtBrCQ,EAFA3B,EAAIgD,EAAI,EAAI,EAGZ/C,EAFAC,EAAI8C,EAAI,EAAI,EAGZE,EAAIF,EACJQ,EAAgB,EAAZW,EAAEnB,GAAK,GACXhD,EAAgB,EAAZmE,EAAEnE,GAAK,GACXgD,EAAgB,EAAZmB,EAAEjE,GAAK,GACXyD,EAAI,EACJ/C,EAAI,EACJO,EAAI,GAiBNgD,EAAEC,GAAK,GAAKZ,EAEZW,GADAjE,EAAIkE,EAAI,EAAI,IACL,GAAKpE,EAEZmE,GADAF,EAAIG,EAAI,EAAI,IACL,GAAKpB,EACZK,EAAI,IAEM,CAERQ,EAAIF,GADJsB,IAAU,EAAJ5B,OACY,EAAJG,GACd/B,EAAIb,EAAIqE,KAAkB,EAAZd,EAAExC,GAAK,IACrBsD,EAAI9D,EAAI8D,KAAkB,EAAZd,EAAElE,GAAK,IACrBD,KAAOssvC,IAAIzovC,GACXJ,KAAO6ovC,IAAI7qvC,GACX+B,KAAO8ovC,IAAIrnvC,GACXpB,GAAKkD,MAAU,EAAJ/G,GAAS6D,IACpBpC,GAAKsF,MAAU,EAAJtD,GAAShC,IACpBwD,GAAK8B,MAAU,EAAJvD,GAASyB,IAEpB,EAAG,CAAE,KAAMpB,EAAIpC,EAAIoC,EAAIoB,GAAI,CAGzB,GAFAV,EAAI,EAAIvE,EAAI,EAERyB,EAAIwD,EAAG,CACTjC,EAAIuB,EAAIf,EAAI,EACZ,KACF,CACER,EAAIS,EACJD,EAAIe,EAAId,EAAI,EACZ,KAEJ,CACEzD,EAAI,GAAKyD,EAAID,GAAK,EAClBR,EAAIS,CACJ,OAAS,GAOX,GALAU,EAAEC,GAAK,GAAKpE,EACZmE,EAAEjE,GAAK,GAAK8C,EACZmB,EAAEF,GAAK,GAAKT,EACZm1B,GAAGv0B,GACH2e,GAAGlhB,EAAGH,EAAG0C,EAAGb,GAAKF,GAAK,GAAK,IAClB,EAAJA,KAAe,EAAJS,GAAU,MAC1BT,EAAIA,EAAI,EAAI,EACZG,EAAgB,EAAZW,EAAEjB,GAAK,EACb,CAIA,OADAmB,EAAIS,EACGV,CACT,CAIA,OADAC,EAAIS,GACGV,CACT,EA8pGEuqvC,YAjzGF,SAAY9svC,EAAGsC,EAAGzC,EAAG8B,GAKnB,IAAIxD,EACAuD,EACAP,EAOJ,OAXAtB,GAAQ,EACR8B,GAAQ,EAIRR,EAAIqB,EACJA,EAAIA,EAAI,GAAK,EAEbd,EAAIP,EACmEnB,EAAxC,IAAN,EAApBmjB,GAXLnjB,GAAQ,EACRsC,GAAQ,EAUMtC,EAAGsC,EAFjBnE,EAAIgD,EAAI,GAAK,KAEiD,IAAN,EAApBgiB,GAAGnjB,EAAGsC,EAAGzC,EAAG8B,EAAGD,IAAmC,EAAXw0B,GAAG/3B,EAAGuD,IAAqB,EACtGc,EAAIrB,GACInB,IAAM,GAAK,GAAKA,EAAI,CAC9B,EAmyGE+svC,kBA9mTF,SAAY/svC,EAAGH,EAAG8B,GAGhBA,GAAQ,EACR,IAAIxD,EACAuD,EACAP,EACAS,EAAI,EAWR,GAVAT,EAAIqB,EACJA,EAAIA,EAAI,GAAK,EACbrE,EAAIgD,EA9DN,SAAYnB,EAAGH,EAAG8B,GAChB3B,GAAQ,EAER2B,GAAQ,EACR,IAKIyB,EACAV,EANAvE,EAAI,EACJuD,EAAI,EACJP,EAAI,EACJS,EAAI,EACJhC,EAAI,EAOR,GAJA8C,EAAIF,EACJA,EAAIA,EAAI,IAAM,EACdY,EAAIV,GAEK,GAbT7C,GAAQ,IAaM,EAGZ,OAFAotB,GAAGtrB,EAAG,EAAG,QACTa,EAAIE,GAKNd,EAA+C,EAA3CmmvC,GAAe,EAAZzlvC,GADPV,EAAI5B,IACU,GAAwB,EAAhBsC,EAAEV,EAAI,GAAK,GAAQ,IACzC+B,IACAspB,GAAGtrB,GAAQ,EAAJ9B,GAAS,EAAIA,EAAI,EAAO,GAAJ+B,GAC3BA,EAAI,EAEJ,EAAG,CAKD,GAHA4mvC,GAAe,EAAZlmvC,GADHnE,EAAI6B,GAAK4B,GAAK,GAAK,IACT,GAAwB,EAAhBU,EAAEnE,EAAI,GAAK,GAAQiF,IAG5B,GAFTjF,EAAgB,EAAZmE,EAAEc,GAAK,KAEG,EAAG,CACfxD,EAAI,EAEJ,GACEuB,EAAIiC,EAAI,GAAKxD,GAAK,GAAK,GAGvB8B,EAAkB,EAAdgkB,GAAG/jB,EADPxD,EAAIiF,EAAI,KAAW,GADnBxD,EAAIA,EAAI,EAAI,KACiB,EAAJzB,GAAS,IAAM,GAAK,EAChCgD,IACsBgpB,GAAGxoB,EAAGD,GAA/BgsB,GAAG/rB,EAAGR,EAAGhD,GACnBA,EAAgB,EAAZmE,EAAEc,GAAK,UACC,EAAJxD,IAAc,EAAJzB,GACtB,CAEAyD,EAAIA,EAAI,EAAI,CACd,QAAc,EAAJA,KAAe,EAAJ/B,IAErB2C,EAAIE,CAEN,CAcE6zB,CAXAv2B,GAAQ,EACRH,GAAQ,EASR6B,EAAIP,EAAI,GAAK,GAEbmB,EAAEX,GAAK,GAAK,EACZW,EAAEX,EAAI,GAAK,GAAK,EAChBW,EAAEX,EAAI,GAAK,GAAK,IAChB3B,EAAY,EAAR4kB,GAAGljB,IAML,OAHA8hB,GAAG7hB,GACHyqB,GAAG1qB,QACHc,EAAIrB,GAIN,EAAG,CACDtB,EAAY,EAAR6iB,GAAG/gB,GAEP,GACE4f,GAAG1hB,EAAGG,GACN4B,EAAI5B,EAAI,GAAK,EACbsC,EAAEnE,GAAK,GAAKmE,EAAEV,GAAK,GACnBU,EAAEnE,EAAI,GAAK,GAAKmE,EAAEV,EAAI,GAAK,GAC3BU,EAAEnE,EAAI,GAAK,GAAKmE,EAAEV,EAAI,GAAK,GAC3BU,EAAEnE,EAAI,IAAM,GAAKmE,EAAEV,EAAI,IAAM,GAC7BuoB,GAAGzoB,EAAG1B,GACNA,EAAe,EAAXujB,GAAG7hB,EAAGvD,SACQ,IAAN,EAAJ6B,IAEVA,EAAY,EAAR4kB,GAAGljB,EACT,OAAoB,IAAN,EAAJ1B,IAEVwjB,GAAG7hB,GACHyqB,GAAG1qB,GACHc,EAAIrB,CAEN,EAikTE6rvC,iBAj+MF,SAAYhtvC,EAAGsC,EAAGzC,GAGhBA,GAAQ,EACR,IAAI8B,EAAI,EACJxD,EAAI,EAKR,GAJAwD,EAA2B,EAAvBomvC,GAAO,GALX/nvC,GAAQ,GAKU,GAJlBsC,GAAQ,GAIa,IACrBqB,KAGS,EAAJ9D,GAAS,IAAU,GAFxB8B,GAAQ,OAE2B,EAAJ9B,IAC7B,IAAS,EAAJ8B,KAAe,EAAJ9B,KAEdG,GADA7B,EAAuB,EAAnBgqhB,GAAO,EAAJtohB,EAAO,EAAG,IAEjByC,EAAU,EAANqB,KAAe,SAALrB,GACL,EAAJX,IAAc,EAAJ9B,IAAU,GACvB1B,EAAqC,EAAjCgqhB,GAAG,EAAG,EAAkB,GAAd,GAAKxmhB,EAAI,GAAS,GAChCA,EAAIA,EAAI,EAAI,EACZ3B,IAAS7B,EACTmE,KAAgB,EAANqB,YACE,EAAJhC,IAAc,EAAJ9B,SAGtByC,EAAI,EACJtC,EAAI,EAIN,OADAgE,EAAM,EAAJ1B,GACS,EAAJtC,CACT,EAq8MEitvC,cAAejD,GACfkD,SAAU3E,GACV4E,iBAAkB3E,GAClB4E,YAAarD,GACbsD,6BA3kJF,SAAYrtvC,EAAGsC,GAGb,IAAIzC,EAAI,EAER,MAAM,EAAiC,YAAnB,YAHpByC,GAAQ,GAGyB,IAE/B,OAAOzC,EAMT,OAHAA,EAA2B,EAAvBkovC,GAAO,GATX/nvC,GAAQ,GASU,EAAJsC,EAAO,IACrBqB,IAEY,EAAJ9D,GACN,KAAK,EACL,KAAK,EAGD,OAAOA,EASb,OAAI,EAAgC,WAAlB,UAAJyC,EAAgB,GAAmC,IAAN,EAAXulvC,GAAG7nvC,EAFnDH,GAAS,WAALyC,EAAkB,YAIT,GADXzC,EAAI,GAKK,GADXA,EAAe,EAAXiqvC,GAAG9pvC,EAAGH,GAEZ,EA0iJEytvC,YA9jOF,SAAYttvC,GAEV,SAAU7B,EAAE,QADZ6B,GAAQ,IACkB,IAAM,EAClC,EA4jOEutvC,WA1jOF,SAAYvtvC,GAEV,SAAU7B,EAAE,QADZ6B,GAAQ,IACkB,IAAM,EAClC,EAwjOEwtvC,SAn6UF,SAAYxtvC,EAAGH,EAAG8B,EAAGxD,GACnB6B,GAAQ,EACRH,GAAQ,EAER1B,GAAQ,EACR,IAOIiE,EAPAV,EAAI,EACJP,EAAI,EACJS,EAAI,EACJhC,EAAI,EACJwD,EAAI,EACJV,EAAI,EACJlB,EAAI,EAMR,GAJAY,EAAII,EACJA,EAAIA,EAAI,GAAK,EACbhB,EAAIY,IAZJT,GAAQ,GAoBN,OAJAW,GADAd,EAAIrD,IACG,GAAK6B,EACZsC,EAAEd,EAAI,GAAK,GAAK3B,EAEhB2C,EAAIJ,EACGZ,EAGTc,EAAEd,GAAK,GAAK,EAEZxB,EAAG,GAAK,GAAiB,EAAX6nvC,GAAG7nvC,EAAGH,GAwMXG,EAAI,MAxMgB,CAG3B,GAFAmB,GAAS,EAAJQ,GAAS,EAEP,CACLD,EAAI,EACJgB,EAAI1C,EAEJ,EAAG,CAID,GAAe,IAAN,GAHT0C,EAAqB,EAAjB0uB,EAAG1uB,EAAG7C,EAAG,EAAG2B,KAGc,IAAN,GAFxB3B,EAAU,EAAN8D,MAE6B,CAC/B3D,EAAI,EACJ,MAAMA,CACR,CAIA,GAFA0B,EAAIA,EAAI,EAAI,EAEG,EAAXmmvC,GAAGnlvC,EAAG7C,GAAQ,CAChBG,EAAI,EACJ,MAAMA,CACR,CACF,QAAc,EAAJ0B,IAAc,EAAJC,IAOpB,GAJAW,GADAc,EAAIjF,IACG,GAAKuE,EACZJ,EAAEc,EAAI,GAAK,GAAKvD,EAChBuD,EAAIzB,GAAK,EAAI,EAETR,EAAG,CACLA,EAAI,EACJS,EAAI,EACJF,EAAIgB,EACJ1C,EAAIH,EAEJ,EAAG,CAID,GAAe,IAAN,GAHT6B,EAAqB,EAAjB0vB,EAAG1vB,EAAG1B,EAAG,EAAGwB,KAGc,IAAN,GAFxBxB,EAAU,EAAN2D,MAE6B,CAC/B3D,EAAI,EACJ,MAAMA,CACR,CAOA,GAJAsC,GADA1C,EAAIzB,GAAKyD,GAAK,GAAK,IACZ,GAAKF,EACZY,EAAE1C,EAAI,GAAK,GAAKI,EAChB4B,EAAIA,EAAI,EAAI,EAEG,EAAXimvC,GAAGnmvC,EAAG1B,GAAQ,CAChBA,EAAI,EACJ,MAAMA,CACR,CAEAmB,EAAIA,EAAI,EAAI,CACd,QAAc,EAAJA,IAAc,EAAJQ,IAEpB/B,EAAI,EACJuB,EAAIS,EAEJ,EAAG,CAID,GAAe,IAAN,GAHTF,EAAqB,EAAjB0vB,EAAG1vB,EAAG1B,EAAG,EAAGwB,KAGc,IAAN,GAFxBxB,EAAU,EAAN2D,MAE6B,CAC/B3D,EAAI,EACJ,MAAMA,CACR,CAOA,GAJAsC,GADAV,EAAIzD,GAAKgD,GAAK,GAAK,IACZ,GAAKO,EACZY,EAAEV,EAAI,GAAK,GAAK5B,EAChBmB,EAAIA,EAAI,EAAI,EAEG,EAAX0mvC,GAAGnmvC,EAAG1B,GAAQ,CAChBA,EAAI,EACJ,MAAMA,CACR,CAEAJ,EAAIA,EAAI,EAAI,CACd,QAAc,EAAJA,IAAc,EAAJ+B,IAEpBC,EAAI,EAEJ,EAAG,CAID,GAAe,IAAN,GAHTF,EAAqB,EAAjB0vB,EAAG1vB,EAAG1B,EAAG,EAAGwB,KAGc,IAAN,GAFxBxB,EAAU,EAAN2D,MAE6B,CAC/B3D,EAAI,EACJ,MAAMA,CACR,CAOA,GAJAsC,GADA1C,EAAIzB,GAAKgD,GAAK,GAAK,IACZ,GAAKO,EACZY,EAAE1C,EAAI,GAAK,GAAKI,EAChBmB,EAAIA,EAAI,EAAI,EAEG,EAAX0mvC,GAAGnmvC,EAAG1B,GAAQ,CAChBA,EAAI,EACJ,MAAMA,CACR,CAEA4B,EAAIA,EAAI,EAAI,CACd,QAAc,EAAJA,IAAc,EAAJD,IAEpBC,EAAI,EAEJ,EAAG,CAID,GAAe,IAAN,GAHTF,EAAqB,EAAjB0vB,EAAG1vB,EAAG1B,EAAG,EAAGwB,KAGc,IAAN,GAFxBxB,EAAU,EAAN2D,MAE6B,CAC/B3D,EAAI,EACJ,MAAMA,CACR,CAOA,GAJAsC,GADA1C,EAAIzB,GAAKgD,GAAK,GAAK,IACZ,GAAKO,EACZY,EAAE1C,EAAI,GAAK,GAAKI,EAChBmB,EAAIA,EAAI,EAAI,EAEG,EAAX0mvC,GAAGnmvC,EAAG1B,GAAQ,CAChBA,EAAI,EACJ,MAAMA,CACR,CAEA4B,EAAIA,EAAI,EAAI,CACd,QAAc,EAAJA,IAAc,EAAJD,IAEpBC,EAAI,EAEJ,EAAG,CAID,GAAe,IAAN,GAHTF,EAAqB,EAAjB0vB,EAAG1vB,EAAG1B,EAAG,EAAGwB,KAGc,IAAN,GAFxBxB,EAAU,EAAN2D,MAE6B,CAC/B3D,EAAI,EACJ,MAAMA,CACR,CAOA,GAJAsC,GADA1C,EAAIzB,GAAKgD,GAAK,GAAK,IACZ,GAAKO,EACZY,EAAE1C,EAAI,GAAK,GAAKI,EAChBmB,EAAIA,EAAI,EAAI,EAEG,EAAX0mvC,GAAGnmvC,EAAG1B,GAAQ,CAChBA,EAAI,EACJ,MAAMA,CACR,CAEA4B,EAAIA,EAAI,EAAI,CACd,QAAc,EAAJA,IAAc,EAAJD,IAIpB,IAFAC,EAAI,IAEM,CAIR,GAAe,IAAN,GAHTF,EAAqB,EAAjB0vB,EAAG1vB,EAAG1B,EAAG,EAAGwB,KAGc,IAAN,GAFxBxB,EAAU,EAAN2D,MAE6B,CAC/B3D,EAAI,EACJ,MAAMA,CACR,CAEA,IAAS,EAAJ4B,KAAe,EAAJwB,GAAQ,CAItB,GAFAd,GADA1C,EAAIzB,GAAKgD,GAAK,GAAK,IACZ,GAAKO,EACZY,EAAE1C,EAAI,GAAK,GAAKI,EACC,EAAX6nvC,GAAGnmvC,EAAG1B,GAAgC,CAC1CA,EAAI,EACJ,MAAMA,CACR,CAHuBmB,EAAIA,EAAI,EAAI,CAIrC,CAIA,IAAS,GAFTS,EAAIA,EAAI,EAAI,MAEQ,EAAJD,GAAQ,CACtBC,EAAIc,EACJvB,EAAItB,EACJ,KACF,CACF,CACF,MACE+B,EAAIc,EACJhB,EAAIgB,EACJvB,EAAItB,EACJG,EAAIH,CAER,MAEEyC,GADAV,EAAIzD,IACG,GAAK6B,EACZsC,EAAEV,EAAI,GAAK,GAAK/B,EAChB+B,EAAI5B,EACJ0B,EAAI1B,EACJmB,EAAItB,EACJG,EAAIH,EAGNG,EAAgD,IAAtC,EAAJ4B,KAAe,EAAJF,IAAc,EAAJP,KAAe,EAAJnB,GACxC,QAA2B,GAI3B,OADAwC,EAAIJ,EACO,EAFPpC,CAGN,EA2rUEytvC,aAAcppuC,GACdqpuC,OAAQtovC,EACRuovC,gBA/0VF,SAAY3tvC,EAAGsC,EAAGzC,EAAG8B,EAAGxD,GAMtB,IAAIuD,EACJ,GAA0B,EAApBsxB,EANNhzB,GAAQ,EACRsC,GAAQ,EACRzC,GAAQ,EACR8B,GAAQ,EACRxD,GAAQ,GAER,CAIA,GAFAypvC,GAAO,EAAJjmvC,EAAO,GADVD,EAAoC,GAAL,EAA1BqD,EAAM,EAAJlF,EAAQ,EAAGA,EAAI,EAAI,IAAc,IACtB,EAAI,GAEd,EAAJ1B,EAGF,OAFAypvC,GAAO,EAAJzpvC,EAAO,EAAGuD,GAAK,EAAI,QACtBqtB,EAAG/uB,EAAGsC,EAAGzC,EAAG8B,EAAGxD,EAAGuD,EAAG,IAIvBvD,EAAe,EAAXwuB,GAAGjrB,EAAG,MAEVqtB,EAAG/uB,EAAGsC,EAAGzC,EAAG8B,EAAGxD,EAAGuD,EAAG,GACrBsqB,GAAG7tB,GAbqC,CAe1C,EA0zVEyvvC,iBAAkBlF,GAClBmF,gBAAiBpD,GACjBjw+B,QAAS30P,GACTiouC,cAl/JF,SAAY9tvC,EAAGsC,GAGb,IAAIzC,EAAI,EACJ8B,EAAI,EAKR,GAHAA,EAA2B,EAAvBomvC,GAAO,GALX/nvC,GAAQ,GAKU,GAJlBsC,GAAQ,GAIa,IACrBqB,MAEoB,EAAdmtB,EAAO,IAAJnvB,IAEP,OAAOA,EAOT,GAJAA,EAA2B,EAAvBomvC,GAAO,EAAJ/nvC,EAAW,EAAJsC,EAAO,IACrBqB,MACAhC,GAAQ,IAIN,OAAOA,EAKT,IAFA9B,EAAI,IAEM,CAGR,KAAqB,KAFgB,EAAjCsohB,GAAG,EAAG,EAAkB,GAAd,GAAKtohB,EAAI,GAAS,IAErBG,EAAI,GAAiC,KAAf,EAAN2D,KAAWrB,EAAI,IAAU,CAClDzC,EAAI,EACJG,EAAI,EACJ,KACF,CAEA,KAAIH,IAAM,EAAI8B,IAAM,GAA0B,CAC5C9B,EAAI,EACJG,EAAI,EACJ,KACF,CAJyBH,EAAIA,EAAI,EAAI,CAKvC,CAEA,OAAe,IAAN,EAAJG,GAA0B,EAAJH,EACpB,CACT,EAw8JEkuvC,qBA3oNF,SAAY/tvC,EAAGsC,EAAGzC,GAQhB,OALAA,GAAQ,EACRG,EAA2B,EAAvB+nvC,GAAO,GAHX/nvC,GAAQ,GAGU,GAFlBsC,GAAQ,GAEa,IACrBqB,KAGW,EAAJ9D,GAAS,IAAU,GAF1BG,GAAQ,OAE6B,EAAJH,GAMtB,GADXA,EAAuB,EAAnBohB,GAAG,EAAGphB,EAAIG,EAAI,IAHL,GADXH,EAAI,EAMR,EA6nNEmuvC,cA32VF,SAAWhuvC,GAET,OAAuC,GAAL,EAA1B+E,EAAM,GADd/E,GAAQ,GACU,EAAGA,EAAI,EAAI,IAAc,CAC7C,EAy2VEiuvC,iBAlsUF,SAAYjuvC,EAAGH,GAEbA,GAAQ,EACR,IAGIsB,EAHAQ,EAAI,EACJxD,EAAI,EACJuD,EAAI,EAEJE,EAAI,EACJhC,EAAI,EAeR,GAdAuB,EAAIqB,EACJA,EAAIA,EAAI,GAAK,EACbd,EAAIP,EAAI,EAAI,EACZhD,EAAIgD,EAEJS,EAAoB,EAAhBU,EAAM,GADV1C,EAZAI,GAAQ,IAaO,GAEfsC,GADAX,EAAIxD,IACG,GAAKmE,EAAE1C,GAAK,GACnB0C,EAAEX,EAAI,GAAK,GAAKC,EAChBshB,GAAG/kB,EAAGuD,GACNA,EAAe,EAAXkwB,EAAGlwB,EAAG7B,GACVA,EAAgB,EAAZyC,EAAEnE,GAAK,IAGF,GAFTA,EAAoB,EAAhBmE,EAAEtC,EAAI,GAAK,MAEA,EAMb,OADAwC,EAAIrB,EADS,GADbvB,GADAgC,GAAS,EAAJF,IAAc,GADnB9B,EAAIC,KAEID,EAAI8B,GACJ,GAKVC,EAAqB,EAAjBW,EAAEtC,EAAI,IAAM,GAChBA,EAAI,EAEJ,GACEH,GAA4B,EAAvByC,EAAEX,GAAK3B,GAAK,IAAM,IAAUH,EAAI,EACrCG,EAAIA,EAAI,EAAI,SACA,EAAJA,IAAc,EAAJ7B,IAMpB,OADAqE,EAAIrB,EADS,GADbvB,GADAA,GAAS,EAAJ8B,IAAc,EAAJ7B,IACPA,EAAI6B,GACJ,EAGV,EAspUEwsvC,kBA7zLF,SAAYluvC,EAAGH,EAAG8B,GAChB3B,GAAQ,EAGR,IAAI7B,EAAI,EACJuD,EAAI,EACJP,EAAI,EACJS,EAAI,EAER,IAAS,GAPT/B,GAAQ,KAOO,EAEb,OAAO8B,EAGT,IAAS,GAXTA,GAAQ,KAWO,GAAI,CAGjB,IAFAxD,EAAI,IAEM,CAGR,KAAyB,IAAN,EAAZmE,GAFPV,EAAI5B,GAAK7B,GAAK,GAAK,IAEL,IAAsC,IAAN,EAAhBmE,EAAEV,EAAI,GAAK,KAAe,CACtDzD,GAAK,EACLuD,EAAI,GACJ,KACF,CAIA,IAAS,GAFTvD,EAAIA,EAAI,EAAI,MAEQ,EAAJ0B,GAAQ,CACtB1B,EAAI,EACJuD,EAAI,GACJ,KACF,CACF,CAEA,GAAe,KAAN,EAAJA,GAAgB,OAAW,EAAJvD,CAC9B,CAEAA,EAAI,EACJyD,EAAI,EAEJ5B,EAAG,OAAU,CAEXmB,EAAgB,EAAZmB,GADJZ,EAAI1B,GAAK4B,GAAK,GAAK,IACR,GACXF,EAAoB,EAAhBY,EAAEZ,EAAI,GAAK,GAEf,GAAK,KAAiB,IAAN,EAAJP,GAAyB,IAAN,EAAJO,IAAc,CAKvC,GAJAA,EAA2B,EAAvBqmvC,GAAO,EAAJ5mvC,EAAW,EAAJO,EAAO,IACrBiC,KAGS,GAFTjC,GAAQ,MAEW,EAAJC,GAAQ,CACrBxD,GAAK,EACLuD,EAAI,GACJ,MAAM1B,CACR,CAEA,IAAS,EAAJ0B,KAAe,EAAJC,GAAQ,CACtBxD,EAAIA,EAAI,EAAI,EACZ,KACF,CACEA,GAAwB,EAAnB8iB,GAAG,EAAGtf,EAAID,EAAI,IAAUvD,EAAI,EACjC,KAEJ,QAAW,GAIX,IAAS,GAFTyD,EAAIA,EAAI,EAAI,MAEQ,EAAJ/B,GAAQ,CACtB6B,EAAI,GACJ,KACF,CACF,CAEA,OAAe,KAAN,EAAJA,GAA2B,EAAJvD,EACrB,CACT,EAkvLEgwvC,QAASzD,GACT0D,QAASxG,GACTyG,aA1jOF,SAAYruvC,GAEV,IAAIH,EAIJ,OAFAG,EAAgB,EAAZsC,GADJzC,EAAI,QAFJG,GAAQ,IAEU,GAAK,IACZ,GACXgE,EAAkB,EAAhB1B,EAAEzC,EAAI,GAAK,IACF,EAAJG,CACT,EAojOEsuvC,oBA/0JF,WACE,OAAO,EACT,EA80JEC,aAAc9F,GACd+F,YAvsOF,SAAYxuvC,EAAGsC,GACbtC,GAAQ,EAER,IACI2B,EACAD,EACAP,EAHAtB,EAAI,EASR,OALA6B,GAAKvD,GALLmE,GAAQ,IAKI,GACZX,GAAKxD,EAAE6B,GAAK,GAGZH,GAFAsB,GAAKE,EAAc,IAATK,EAAIC,KAENR,GADRtB,GAAKwB,EAAwC,KAAlClD,EAAEmE,EAAI,GAAK,IAAMnE,EAAE6B,EAAI,GAAK,QACrB5B,GAAGsD,IAAMtD,GAAGuD,GAAK9B,GACO,GAAhC8E,KAAK5F,GAAGc,MAAOd,IAAI,EAAMc,KAAa,kBAAoB,GACtE,EA2rOE4uvC,eAtuOF,SAAYzuvC,EAAGsC,GACbtC,GAAQ,EAER,IACI2B,EACAD,EACAP,EAHAtB,EAAI,EASR,OALA6B,GAAKvD,GALLmE,GAAQ,IAKI,GACZX,GAAKxD,EAAE6B,GAAK,GAGZH,GAFAsB,GAAKE,EAAc,IAATK,EAAIC,KAENR,GADRtB,GAAKwB,EAAwC,KAAlClD,EAAEmE,EAAI,GAAK,IAAMnE,EAAE6B,EAAI,GAAK,QACrB5B,GAAGsD,IAAMtD,GAAGuD,GAAK9B,GACO,GAAhC8E,KAAK5F,GAAGc,MAAOd,IAAI,EAAMc,IACrC,EA0tOE6uvC,UA5pUF,SAAY1uvC,EAAGH,EAAG8B,GAIhB,IAII/B,EAJAzB,EAAI,EACJuD,EAAI,EACJP,EAAI,EACJS,EAAI,EAEJwB,EAAI,EAMR,GALAxD,EAAI4C,EACJA,EAAIA,EAAI,GAAK,EACbrE,EAAIyB,EAAI,EAAI,EACZ8B,EAAI9B,EAEgB,EAsCtB,SAAYI,EAAGH,EAAG8B,GAEhB9B,GAAQ,EACR8B,GAAQ,EACR,IAwBIwB,EACAoB,EACAb,EACAM,EAEAU,EA7BAvG,EAAI,EACJuD,EAAI,EACJP,EAAI,EACJS,EAAI,EACJhC,EAAI,EACJwD,EAAI,EACJV,EAAI,EACJlB,EAAI,EACJY,EAAI,EACJ/D,EAAI,EACJiB,EAAI,EACJwC,EAAI,EACJoD,EAAI,EACJnG,EAAI,EACJe,EAAI,EACJ1B,EAAI,EACJiD,EAAI,EACJY,EAAI,EACJM,EAAI,EACJU,EAAI,EACJjB,EAAI,EACJ2C,EAAI,EACJd,EAAI,EACJkB,EAAI,EAKJlC,EAAI,EAsBR,GApBA6B,EAAIlC,EACJA,EAAIA,EAAI,IAAM,EACd+B,EAAIG,EAAI,GAAK,EACbtB,EAAIsB,EAAI,GAAK,EACbhB,EAAIgB,EACJV,EAAIU,EAAI,GAAK,GAEb7B,EAAoC,EAAhCgjB,GAAsB,IAAlBvjB,GADRI,GAvCA1C,GAAQ,GAuCA,EAAI,IACG,IAAM,GAAU,KACrBwE,EAAE,MAAO,MAAO,IAAK,OAC/B8e,GAAGtjB,EAAG6C,GAEN1E,EAAoB,EAAhBmE,GADJnB,EAAInB,GACM,GAAK,GAEfsC,GADA1C,EAAIwD,IACG,GAAKd,EAAEnB,GAAK,GACnBmB,EAAE1C,EAAI,GAAK,GAAKzB,EAChB+kB,GAAG9f,EAAGmB,GACN3E,EAAe,EAAXgyB,EAAGrtB,EAAG1E,GACV1B,EAAgB,EAAZmE,EAAEc,GAAK,IAGF,GAFTjC,EAAgB,EAAZmB,EAAEI,GAAK,KAEG,EAAG,CACfd,EAAqB,EAAjBU,EAAEtC,EAAI,IAAM,GAChB0B,EAAI,EAEJ,GACEvD,GAA4B,EAAvBmE,EAAEV,GAAKF,GAAK,IAAM,IAAUvD,EAAI,EACrCuD,EAAIA,EAAI,EAAI,SACA,EAAJA,KAAe,EAAJP,GACvB,CAcA,GAVAO,EAAe,EAAXirB,GADJxpB,GADAvD,GAAS,EAAJA,IAAc,EAAJzB,GAASA,EAAIyB,GACpB,GAAK,EACH,GACV4B,EAAe,EAAXmrB,GAAGxpB,EAAG,GACVb,EAAEiC,GAAK,GAAK,EAEZQ,EAAoB,EAAhBzC,GADJuB,EAAI7D,GACM,GAAK,GAEfsC,GADAnE,EAAIiF,IACG,GAAKd,EAAEuB,GAAK,GACnBvB,EAAEnE,EAAI,GAAK,GAAK4G,EAGR,GAFR5G,EAA2B,EAAvB+uB,EAAG9pB,EAAGD,EAAGtD,EAAG0E,EAAG7C,EAAGF,IAQpB,OALAwqB,GAAGtqB,GACHsqB,GAAGxqB,GACHwqB,GAAGnpB,GAEHL,EAAIkC,EACO,EAFPvG,EAKN6B,EAAG,GAAK,IAAiB,EAAZsC,EAAEI,GAAK,IAAU,EAAG,CAI/B,IAHAvB,EAAInB,EAAI,GAAK,EACb7B,EAAI,EAGFyD,EAAwD,EAApDsrB,GAAgB,EAAZ5qB,EAAEnB,GAAK,KAAWhD,GAAK,GAAK,EAAGgF,EAAGtD,EAAG0E,EAAG7C,EAAGF,GACnDrD,EAAIA,EAAI,EAAI,IACJ,EAAJyD,IACJ,IAAS,EAAJzD,KAAuB,EAAZmE,EAAEI,GAAK,IAAW,MAAM1C,EAQ1C,OALAgsB,GAAGtqB,GACHsqB,GAAGxqB,GACHwqB,GAAGnpB,GAEHL,EAAIkC,EACO,EAFP9C,CAGN,QAAW,IAEF,EAAJhC,IAAU,IAAMgovC,GAAO,EAAJpmvC,EAAO,IAAS,EAAJ2B,GAAS,EAAIA,EAAI,IAAM,EAAI,GAE/Db,EAAG,EAAG,CAAE,IAAiB,EAAZA,EAAEiC,GAAK,IAAU,EAAG,CAC/BQ,IAAU,EAAJ5B,GAAS,IAAM,IAAM,GAC3BlB,EAAIP,EACJa,EAAIf,EACJyB,EAAIvB,EACJM,EAAIN,EACJiD,EAAInD,EACJqC,EAAInC,EACJvD,EAAIuD,EACJ3C,EAAI2C,EACJ5B,EAAI0B,EACJpD,EAAIoD,EACJH,EAAIG,EACJE,EAAIF,EAEJ3B,EAAG,OAAU,CAMX,IALAqF,EAAgB,EAAZ5C,EAAEiC,GAAK,GACXjF,EAAI,EACJwC,EAAI,EACJX,EAAI,IAEM,CAERvB,GADAgC,EAAI8B,GACI,GAAK,EAEb,GACEpB,EAAEV,GAAK,GAAK,EACZA,EAAIA,EAAI,EAAI,SACA,EAAJA,IAAc,EAAJhC,IAMpB,GAAwB,EAApBozB,EAHJ5vB,EAAgB,EAAZd,GADJzC,EAAIoC,GAAK3C,GAAK,GAAK,IACR,GACXO,EAAoB,EAAhByC,EAAEzC,EAAI,GAAK,GAEF,EAAG6D,EAAG,GAAQ,CAEzB9D,GADAgC,EAAI8B,GACI,GAAK,EAEb,GACEpB,EAAEV,GAAK,GAAK,EACZA,EAAIA,EAAI,EAAI,SACA,EAAJA,IAAc,EAAJhC,IAIZ,GAFRgC,EAAe,EAAX+qB,GAAG,EAAG,MAGRoC,EAAG3rB,EAAGvD,EAAG,EAAG6D,EAAG9B,EAAG,EAAG,GACrBoqB,GAAGpqB,GAEP,CAEAvD,EAAI,EAEJ,EAAG,CAEDmD,EAAgB,EAAZc,GADJF,EAAIsB,GAAKrF,GAAK,GAAK,IACR,GACX+D,EAAoB,EAAhBE,EAAEF,EAAI,GAAK,GAEfT,EAAG,GAAK,KAAiB,IAAN,EAAJH,GAAyB,IAAN,EAAJY,IAAc,CAQ1C,GAPAgB,EAAqC,EAAjC0kvC,GAAO,EAAJtmvC,EAAW,EAAJY,EAAW,EAAJe,EAAW,EAAJ4B,GAC5BpB,MAMiB,IAAN,GAHX9D,EAAgB,EAAZyC,GADJ1C,EADAgC,EAAID,GAAKyB,GAAK,GAAK,IAER,KAGqB,IAAN,GAF1BxD,EAAoB,EAAhB0C,EAAE1C,EAAI,GAAK,MAKb,IAFA8C,EAAI,IAEM,CACR,IAAS,EAAJA,IAAc,EAAJS,GAAU,MAAMtD,EAC/B,IAAS,EAAJA,KAAe,EAAJ2B,IAAc,EAAJ5B,KAAe,EAAJwC,GAAU,MAAMT,EAMrD,GAAe,IAAN,GAFT9B,EAAgB,EAAZyC,GADJ1C,EADAgC,EAAID,IADJyB,GAAKA,EAAI,EAAI,IAAU,EAAJD,GAAS,IACd,GAAK,IAER,KAEmB,IAAN,GADxBvD,EAAoB,EAAhB0C,EAAE1C,EAAI,GAAK,KACoB,MAAe8C,EAAIA,EAAI,EAAI,CAChE,CAGe,IAAN,EAAJlB,GAAyB,IAAN,EAAJY,KACpBmmvC,GAAG/mvC,EAAGY,EAAG4B,GAES,EAAd8gB,GAAG9kB,EAAG6C,EAAGmB,KAEX1B,GADAI,EAAId,IACG,GAAKJ,EACZc,EAAEI,EAAI,GAAK,GAAKN,EAEhBE,GADAI,EAAIH,GAAKpB,GAAK,GAAK,IACZ,GAAKK,EACZc,EAAEI,EAAI,GAAK,GAAKN,EAChBjB,EAAIA,EAAI,EAAI,GAGlB,QAAW,GAEX9C,EAAIA,EAAI,EAAI,CACd,OAASA,IAAM,EAAI,GAGnB,IAAS,GADTyD,EAAIA,EAAI,EAAI,MACQ,EAAJoD,GAAU,MAAe5F,EAAIA,EAAI,EAAI,CACvD,CAKA,IAHS,EAAJ4F,GAAS,GAAK0ivC,GAAO,EAAJ3kvC,EAAO,EAAGiC,GAAK,EAAI,GACzC5C,EAAEiC,GAAK,GAAKpD,KAEH,EAAJA,GAAS,GAmBL,MAAMmB,EAlBbd,EAAIE,EACJU,EAAIf,EACJhD,EAAIwF,EACJvE,EAAIlB,EACJ0D,EAAIhC,EACJoF,EAAI3C,EACJb,EAAI3C,EACJsC,EAAIlD,EACJC,EAAI4D,EACJlC,EAAImD,EACJlE,EAAIyC,EACJrD,EAAIiE,EACJyB,EAAIc,EACJA,EAAItG,EACJ2D,EAAI1C,EACJ2D,EAAInB,EACJS,EAAIN,EACJA,EAAIiD,CAER,CAOA,OALA8mB,GAAGhqB,GACHgqB,GAAGrnB,GACHqnB,GAAGnpB,GAEHL,EAAIkC,GACG7B,CACT,CAAS1E,EAAIqD,CAAK,OAAS,GAO3B,OALAwqB,GAAGnpB,GACHmpB,GAAGtqB,GACHsqB,GAAG7tB,GAEHqE,EAAIkC,EACO,GAFX7B,EAAI,EAGN,CA9RQsuB,CAdNnxB,GAAQ,EACRH,GAAQ,EACR8B,GAAQ,GAYR,CAeA,GATAR,EAAoB,EAAhBmB,GADJc,EAAIpD,GACM,GAAK,GAEfsC,GADAV,EAAIF,IACG,GAAKY,EAAEc,GAAK,GACnBd,EAAEV,EAAI,GAAK,GAAKT,EAChB+hB,GAAGxhB,EAAGvD,GACNyD,EAAe,EAAXgwB,EAAGzzB,EAAG0B,GACVA,EAAgB,EAAZyC,EAAEZ,GAAK,IAGF,GAFTP,EAAoB,EAAhBmB,EAAEtC,EAAI,GAAK,KAED,EAAG,CACf0B,EAAqB,EAAjBY,EAAEtC,EAAI,IAAM,GAChB7B,EAAI,EAEJ,GACE0B,GAA4B,EAAvByC,EAAEZ,GAAKvD,GAAK,IAAM,IAAU0B,EAAI,EACrC1B,EAAIA,EAAI,EAAI,SACA,EAAJA,KAAe,EAAJgD,GACvB,EAIS,GAFTtB,GAAS,EAAJ+B,IAAc,EAAJ/B,GAASA,EAAI+B,MAEZ,IAMhBgmvC,GAAO,EAAJjmvC,EAAO,EAAkC,KAAxB,GADpByB,EAAIvD,EAAI,GAAK,IACY,EAAIuD,EAAI,IAAM,GAAS,GAL9CZ,EAAI5C,CAzBN,MAFE4C,EAAI5C,CAmCR,EA0mUE+uvC,gBAx0SF,WACE,OAAO,GACT,EAu0SEC,OAAQrkuC,GACRskuC,MAAOrE,GACPsE,eA7rFF,WACE,OAAO,CACT,EA4rFEC,mBA9sFF,WACE,OAAO,GACT,EA6sFEC,gBAntFF,WACE,OAAO,EACT,EAktFEC,kBAxsFF,WACE,OAAO,EACT,EAusFEC,gBA7sFF,WACE,OAAO,CACT,EA4sFEC,eA1tFF,WACE,OAAO,CACT,EAytFEC,wBAvsFF,WACE,OAAO,EACT,EAssFEC,WAp7LF,SAAYrvvC,EAAGH,EAAG8B,EAAGxD,EAAGuD,GACtB1B,GAAQ,EAER2B,GAAQ,EACRxD,GAAQ,EAER,IAAIgD,EAAI,EACJS,EAAI,EACJhC,EAAI,EACJwD,EAAI,EACJV,EAAI,EACJlB,EAAI,EAER,IAAS,GAXT3B,GAAQ,KAWO,EAEb,OAAO6B,EAGT,IAAS,GAbTA,GAAQ,KAaO,GAAI,CAGjB,IAFAP,EAAI,IAEM,CAGR,KAAyB,IAAN,EAAZmB,GAFPd,EAAIxB,GAAKmB,GAAK,GAAK,IAEL,IAAsC,IAAN,EAAhBmB,EAAEd,EAAI,GAAK,KAAe,CACtDL,EAAI,GACJ,KACF,CAIA,IAAS,GAFTA,EAAIA,EAAI,EAAI,MAEQ,EAAJtB,GAAQ,CACtB+B,EAAI,EACJT,EAAI,GACJ,KACF,CACF,CAEA,GAAe,KAAN,EAAJA,GAAgB,OAAiC,IAApB,EAAJhD,GAAS,GAAK,GAAK,GAAc,GAAe,KAAN,EAAJgD,GAAgB,OAAW,EAAJS,CAC7F,CAEAT,EAAI,EACJK,EAAI,EAEJxB,EAAG,OAAU,CAGX4B,EAAgB,EAAZU,GADJ1C,EADA8C,EAAI1C,GAAKwB,GAAK,GAAK,IAER,GACX5B,EAAoB,EAAhB0C,EAAE1C,EAAI,GAAK,GAEf,GAAK,KAAiB,IAAN,EAAJgC,GAAyB,IAAN,EAAJhC,IAAc,CACvC,IAAS,EAAJuB,KAAe,EAAJhD,GAAQ,CACtByD,GAAK,EACLT,EAAI,GACJ,MAAMnB,CACR,CAMA,GAJAoD,EAA2B,EAAvB2kvC,GAAO,EAAJnmvC,EAAW,EAAJhC,EAAO,IACrB+D,KAGS,GAFTP,GAAQ,MAEW,EAAJ1B,GAAQ,CACrBE,GAAK,EACLT,EAAI,GACJ,MAAMnB,CACR,CAEA,IAAS,EAAJoD,KAAe,EAAJ1B,GAAQ,CAEtBY,GADAI,EAAIf,GAAKR,GAAK,GAAK,IACZ,GAAKS,EACZU,EAAEI,EAAI,GAAK,GAAK9C,EAChBuB,EAAIA,EAAI,EAAI,EACZ,KACF,CAIA,IAAS,GAFTS,GAAwB,EAAnBqf,GAAG,EAAGvf,EAAI0B,EAAI,IAAUjC,EAAI,KAEd,EAAJhD,GAAQ,CACrByD,GAAK,EACLT,EAAI,GACJ,MAAMnB,CACR,CAEAgqvC,GAAe,EAAZ1nvC,EAAEI,GAAK,GAAwB,EAAhBJ,EAAEI,EAAI,GAAK,GAAQhB,EAAGC,GAAKR,GAAK,GAAK,GACvDA,EAAIS,CACN,QAAW,GAIX,IAAS,GAFTJ,EAAIA,EAAI,EAAI,MAEQ,EAAJ3B,GAAQ,CACtB+B,EAAI,EACJT,EAAI,GACJ,KACF,CACF,CAEA,OAAe,KAAN,EAAJA,GAA2B,EAAJS,EACrB,CACT,EAm1LE0tvC,oBAv4VF,SAAWtvvC,EAAGsC,GAGZE,EAFAxC,GAAQ,CAGV,EAo4VEuvvC,WA15VF,SAAWvvvC,GAET,IAAIsC,EAIJ,OAHAA,EAAIE,EAEJA,EAAQ,IADRA,EAAIA,GAHJxC,GAAQ,GAGI,IACE,GACH,EAAJsC,CACT,EAo5VEktvC,aA94VF,SAAWxvvC,GAETwC,EADAxC,GAAQ,CAEV,EA44VEyvvC,UAn5VF,WACE,OAAW,EAAJjtvC,CACT,EAm5VF,CA38VA,CA7BmB,CACjB,KACA,UACA,WACA,WACA,aACA,cAEkB,CAClB,EAAKytB,GACL,EAjkBgB,SAAU9vB,GAC1BgkvC,EAAWhkvC,CACb,EAgkBE,EACA,EAjIF,SAAwBwgK,EAAW6lG,EAAUloN,EAAMS,GACjD9uB,GAAM,qBAAuB60tC,EAAanklC,GAAa,SAAW,CAAC6lG,EAAWs++B,EAAat++B,GAAY,mBAAoBloN,EAAMS,EAAO+lsC,EAAa/lsC,GAAQ,oBAC/J,EAgIE,EAtHF,SAAqB5+C,GAEnB,OADI4rN,EAA0B,oBAAK44hC,EAAO54hC,EAA0B,qBAAO,GAAK5rN,GACzEA,CACT,EAoHE,EAAKymvC,EACL,EA5HF,SAAgC5+lC,EAAMx0I,EAAK0uC,GACzCuisC,EAAOx5uC,IAAIw5uC,EAAOh+tC,SAASjT,EAAKA,EAAM0uC,GAAM8lG,EAC9C,EA2HE,EAnGF,SAAiC0nmC,GAC/B,IAAIr9d,EAAUu0d,IAEV+I,EAAgB,SAChBC,EAAQ,WAEZ,GAAIF,EAAgBE,EAClB,OAAO,EAMT,IAHA,IACIxqlC,EAAUvjK,KAAK8K,IAAI0lxB,EADA,UAGhBjtnB,EAAUsqlC,GAEbtqlC,EADEA,GAAW,UACHgglC,EAAQ,EAAIhglC,EAASuqlC,GAErB9tvC,KAAKgL,IAAIu4uC,GAAS,EAAIhglC,EAAU,YAAc,EAAGuqlC,GAAgBC,GAM/E,QAFkB/I,EAA0BzhlC,EAO9C,EAwEE,EArHF,SAAiCsqlC,GAC/Bz/tC,GAAM,MACR,EAoHE,EA3KF,SAAkB8uB,GAChB,OAAOA,CACT,EA0KE,EAAK2nsC,EACL,EAAKG,EACL,EAAKF,EACL,EAjJF,WACE,IAAIkJ,EAAKlJ,IAET,OADI56hC,EAAwB,kBAAK8jiC,GAAM,KAAO9jiC,EAAwB,mBAC/D26hC,EAAYmJ,EACrB,EA8IE,EAlLkB,MAmLlB,EArTmB,OAswWQ3ouC,GAwBzB6/tC,GAtBah7hC,EAAmB,WAAI27hC,EAAgB,WAElC37hC,EAAwB,gBAAI27hC,EAAqB,gBAElD37hC,EAAuB,eAAI27hC,EAAoB,eAEtD37hC,EAAgB,QAAI27hC,EAAa,QAE5B37hC,EAAqB,aAAI27hC,EAAkB,aAE5C37hC,EAAoB,YAAI27hC,EAAiB,YAEtC37hC,EAAuB,eAAI27hC,EAAoB,eAErD37hC,EAAiB,SAAI27hC,EAAc,SAEtB37hC,EAA8B,sBAAI27hC,EAA2B,sBAErE37hC,EAAsB,cAAI27hC,EAAmB,cAE9C37hC,EAAqB,aAAI27hC,EAAkB,aAE7B37hC,EAAmC,2BAAI27hC,EAAgC,4BAqIpG6H,GAnIqBxjiC,EAA2B,mBAAI27hC,EAAwB,mBAExD37hC,EAA0B,kBAAI27hC,EAAuB,kBAElD37hC,EAA6B,qBAAI27hC,EAA0B,qBAEvD37hC,EAAiC,yBAAI27hC,EAA8B,yBAEnE37hC,EAAiC,yBAAI27hC,EAA8B,yBAEtF37hC,EAAc,MAAI27hC,EAAW,MAE1B37hC,EAAiB,SAAI27hC,EAAc,SAEC37hC,EAAqD,6CAAI27hC,EAAkD,6CAEpH37hC,EAA4C,oCAAI27hC,EAAyC,oCAEpG37hC,EAAiC,yBAAI27hC,EAA8B,yBAE3D37hC,EAAyC,iCAAI27hC,EAAsC,iCAE/E37hC,EAA6C,qCAAI27hC,EAA0C,qCAExF37hC,EAAgD,wCAAI27hC,EAA6C,wCAErH37hC,EAA4B,oBAAI27hC,EAAyB,oBAE7D37hC,EAAwB,gBAAI27hC,EAAqB,gBAErD37hC,EAAoB,YAAI27hC,EAAiB,YAEtC37hC,EAAuB,eAAI27hC,EAAoB,eAElD37hC,EAAoB,YAAI27hC,EAAiB,YAEpC37hC,EAAyB,iBAAI27hC,EAAsB,iBAE7C37hC,EAA+B,uBAAI27hC,EAA4B,uBAExE37hC,EAAsB,cAAI27hC,EAAmB,cAE1C37hC,EAAyB,iBAAI27hC,EAAsB,iBAEzD37hC,EAAmB,WAAI27hC,EAAgB,WAE1C37hC,EAAgB,QAAI27hC,EAAa,QAE7B37hC,EAAoB,YAAI27hC,EAAiB,YAEnC37hC,EAA0B,kBAAI27hC,EAAuB,kBAEtD37hC,EAAyB,iBAAI27hC,EAAsB,iBAEtD37hC,EAAsB,cAAI27hC,EAAmB,cAElD37hC,EAAiB,SAAI27hC,EAAc,SAE3B37hC,EAAyB,iBAAI27hC,EAAsB,iBAExD37hC,EAAoB,YAAI27hC,EAAiB,YAExB37hC,EAAqC,6BAAI27hC,EAAkC,6BAE5F37hC,EAAoB,YAAI27hC,EAAiB,YAE1C37hC,EAAmB,WAAI27hC,EAAgB,WAEzC37hC,EAAiB,SAAI27hC,EAAc,SAE/B37hC,EAAqB,aAAI27hC,EAAkB,aAEjD37hC,EAAe,OAAI27hC,EAAY,OAEtB37hC,EAAwB,gBAAI27hC,EAAqB,gBAEhD37hC,EAAyB,iBAAI27hC,EAAsB,iBAEpD37hC,EAAwB,gBAAI27hC,EAAqB,gBAEzD37hC,EAAgB,QAAI27hC,EAAa,QAE3B37hC,EAAsB,cAAI27hC,EAAmB,cAEtC37hC,EAA6B,qBAAI27hC,EAA0B,qBAElE37hC,EAAsB,cAAI27hC,EAAmB,cAE1C37hC,EAAyB,iBAAI27hC,EAAsB,iBAElD37hC,EAA0B,kBAAI27hC,EAAuB,kBAE/D37hC,EAAgB,QAAI27hC,EAAa,QAEjC37hC,EAAgB,QAAI27hC,EAAa,QAE5B37hC,EAAqB,aAAI27hC,EAAkB,aAEpC37hC,EAA4B,oBAAI27hC,EAAyB,oBAEhE37hC,EAAqB,aAAI27hC,EAAkB,aAE5C37hC,EAAoB,YAAI27hC,EAAiB,YAEtC37hC,EAAuB,eAAI27hC,EAAoB,eAEpD37hC,EAAkB,UAAI27hC,EAAe,UAE/B37hC,EAAwB,gBAAI27hC,EAAqB,gBAE1D37hC,EAAe,OAAI27hC,EAAY,OAEhC37hC,EAAc,MAAI27hC,EAAW,MAEpB37hC,EAAuB,eAAI27hC,EAAoB,eAE3C37hC,EAA2B,mBAAI27hC,EAAwB,mBAE1D37hC,EAAwB,gBAAI27hC,EAAqB,gBAE/C37hC,EAA0B,kBAAI27hC,EAAuB,kBAEvD37hC,EAAwB,gBAAI27hC,EAAqB,gBAElD37hC,EAAuB,eAAI27hC,EAAoB,eAEtC37hC,EAAgC,wBAAI27hC,EAA6B,wBAE9E37hC,EAAmB,WAAI27hC,EAAgB,WAE9B37hC,EAA4B,oBAAI27hC,EAAyB,oBAClE37hC,EAAmB,WAAI27hC,EAAgB,YACpD8H,EAAezjiC,EAAqB,aAAI27hC,EAAkB,aAC1D+H,GAAY1jiC,EAAkB,UAAI27hC,EAAe,UAOrD,GANA37hC,EAAY,IAAI27hC,EAChB37hC,EAAc,MAjjXd,SAAew4hC,EAAOuL,EAAYC,EAAU10sC,GAE1C,IAAI20sC,GADJD,EAAWA,GAAY,IACItotC,OAAM,SAAUl8B,GACzC,MAAgB,WAATA,CACT,IAGA,MAFgC,WAAfukvC,GAECE,IAAgB30sC,EACzBipsC,EAASC,GAGX,WACL,OA7DJ,SAAeA,EAAOuL,EAAYC,EAAU15sC,EAAMgF,GAChD,IAAI40sC,EAAM,CACR,OAAU,SAAUt6qC,GAClB,IAAIspZ,EAAM,EAEV,GAAItpZ,SAA6C,IAARA,EAAW,CAClD,IAAIkoD,EAA0B,GAAnBloD,EAAIt2E,QAAU,IAoJjC,SAAsBs2E,EAAKu6qC,EAAQC,IAtCnC,SAA2Bx6qC,EAAKy6qC,EAAYC,EAAQF,GAClD,KAAMA,EAAkB,GAAM,OAAO,EAIrC,IAHA,IACIlxK,EAASoxK,EAASF,EAAkB,EAE/BvwvC,EAAI,EAAGA,EAAI+1E,EAAIt2E,SAAUO,EAAG,CACnC,IAAIyB,EAAIs0E,EAAI59D,WAAWnY,GAOvB,GALIyB,GAAK,OAASA,GAAK,QAErBA,EAAI,QAAc,KAAJA,IAAa,IAAW,KAD7Bs0E,EAAI59D,aAAanY,IAIxByB,GAAK,IAAK,CACZ,GAAIgvvC,GAAUpxK,EAAU,MACxBmxK,EAAWC,KAAYhvvC,CACzB,MAAO,GAAIA,GAAK,KAAM,CACpB,GAAIgvvC,EAAS,GAAKpxK,EAAU,MAC5BmxK,EAAWC,KAAY,IAAMhvvC,GAAK,EAClC+uvC,EAAWC,KAAY,IAAU,GAAJhvvC,CAC/B,MAAO,GAAIA,GAAK,MAAO,CACrB,GAAIgvvC,EAAS,GAAKpxK,EAAU,MAC5BmxK,EAAWC,KAAY,IAAMhvvC,GAAK,GAClC+uvC,EAAWC,KAAY,IAAMhvvC,GAAK,EAAI,GACtC+uvC,EAAWC,KAAY,IAAU,GAAJhvvC,CAC/B,KAAO,CACL,GAAIgvvC,EAAS,GAAKpxK,EAAU,MAC5BmxK,EAAWC,KAAY,IAAMhvvC,GAAK,GAClC+uvC,EAAWC,KAAY,IAAMhvvC,GAAK,GAAK,GACvC+uvC,EAAWC,KAAY,IAAMhvvC,GAAK,EAAI,GACtC+uvC,EAAWC,KAAY,IAAU,GAAJhvvC,CAC/B,CACF,CAEA+uvC,EAAWC,GAAU,CAEvB,CAGSC,CAAkB36qC,EAAK8uqC,EAAQyL,EAAQC,EAChD,CApJQI,CAAa56qC,EADbspZ,EAAMswxB,EAAW1xnC,GACMA,EACzB,CAEA,OAAOohW,CACT,EACA,MAAS,SAAUxhQ,GACjB,IAAIwhQ,EAAMswxB,EAAW9xhC,EAAIp+N,QAEzB,OAgJN,SAA4B65C,EAAOhyB,GACjCs9tC,EAAMv5uC,IAAIiuC,EAAOhyB,EACnB,CAnJMspuC,CAAmB/yhC,EAAKwhQ,GACjBA,CACT,GASElgb,EAAOulsC,EAASC,GAChBkM,EAAQ,GACR9+sC,EAAQ,EAEZ,GAAI0E,EACF,IAAK,IAAIz2C,EAAI,EAAGA,EAAIy2C,EAAKh3C,OAAQO,IAAK,CACpC,IAAI8wvC,EAAYT,EAAIF,EAASnwvC,IAEzB8wvC,GACY,IAAV/+sC,IAAeA,EAAQ89sC,MAC3BgB,EAAM7wvC,GAAK8wvC,EAAUr6sC,EAAKz2C,KAE1B6wvC,EAAM7wvC,GAAKy2C,EAAKz2C,EAEpB,CAGF,IAAIq/d,EAAMlgb,EAAKx/C,MAAM,KAAMkxvC,GAG3B,OAFAxxxB,EAxBA,SAA4BA,GAC1B,MAAmB,WAAf6wxB,EAAkChL,EAAa7lxB,GAChC,YAAf6wxB,EAAmC79uC,QAAQgtd,GACxCA,CACT,CAoBM0xxB,CAAmB1xxB,GACX,IAAVttb,GAAe69sC,EAAa79sC,GACzBstb,CACT,CAcW2xxB,CAAMrM,EAAOuL,EAAYC,EAAU3wvC,UAC5C,CACF,EAoiXA2sN,EAAiB,SAxrXjB,SAAkBksD,EAAK93Q,EAAOoL,EAAMslvC,GAIlC,OAFqC,OADrCtlvC,EAAOA,GAAQ,MACNsM,OAAOtM,EAAKlM,OAAS,KAAckM,EAAO,OAE3CA,GACN,IAAK,KAIL,IAAK,KACHi5uC,EAAMvs+B,GAAO,GAAK93Q,EAClB,MAEF,IAAK,MACHukvC,EAAOzs+B,GAAO,GAAK93Q,EACnB,MAEF,IAAK,MACHwkvC,EAAO1s+B,GAAO,GAAK93Q,EACnB,MAEF,IAAK,MACHmmvC,EAAU,CAACnmvC,IAAU,GAAIkmvC,EAAalmvC,GAAQ2lvC,EAASO,IAAe,EAAKA,EAAa,GAAqE,EAA/DJ,GAAUD,EAAWK,EAAa,YAAc,eAAsB,KAAON,GAAWM,MAAiBA,IAAe,IAAM,cAAiB,EAAI,IAAK1B,EAAO1s+B,GAAO,GAAKqu+B,EAAQ,GAAI3B,EAAO1s+B,EAAM,GAAK,GAAKqu+B,EAAQ,GACpT,MAEF,IAAK,QACH5r+B,EAAQzC,GAAO,GAAK93Q,EACpB,MAEF,IAAK,SACHykvC,EAAQ3s+B,GAAO,GAAK93Q,EACpB,MAEF,QACE8vB,GAAM,8BAAgC1kB,GAE5C,EAqpXAwgN,EAAiB,SAnpXjB,SAAkBksD,EAAK1sQ,EAAMslvC,GAI3B,OAFqC,OADrCtlvC,EAAOA,GAAQ,MACNsM,OAAOtM,EAAKlM,OAAS,KAAckM,EAAO,OAE3CA,GACN,IAAK,KAGL,IAAK,KACH,OAAOi5uC,EAAMvs+B,GAAO,GAEtB,IAAK,MACH,OAAOys+B,EAAOzs+B,GAAO,GAEvB,IAAK,MAGL,IAAK,MACH,OAAO0s+B,EAAO1s+B,GAAO,GAEvB,IAAK,QACH,OAAOyC,EAAQzC,GAAO,GAExB,IAAK,SACH,OAAO2s+B,EAAQ3s+B,GAAO,GAExB,QACEhoP,GAAM,8BAAgC1kB,GAG1C,OAAO,IACT,EAqnXAwgN,EAAoB,YAAIq4hC,EAEpBmC,EAAmB,CAChBE,EAAUF,KApwXGlxtC,EAqwXekxtC,EAA/BA,EApwXEx6hC,EAAmB,WACdA,EAAmB,WAAE12L,EAAM2utC,GAG7BA,EAAkB3utC,GA4azB6wtC,IAEIn6hC,EAA+B,wBACjCA,EAA+B,uBAAEm6hC,GAu1WjC,IAAI4K,GAAyB,SAAUtivC,GACjCA,EAAK4Y,aAAc5Y,EAAO,IAAImQ,WAAWnQ,IAC7Ci2uC,EAAOx5uC,IAAIuD,EAxsXC,GAysXRu9M,EAAiC,iCAAYA,EAAiC,yBAAEt+L,SAt1W1F,SAA6BlD,GAO3B,GANA27tC,IAEIn6hC,EAA+B,wBACjCA,EAA+B,uBAAEm6hC,GAGZ,GAAnBA,IAC2B,OAAzBC,IACF34tC,cAAc24tC,GACdA,EAAuB,MAGrBC,GAAuB,CACzB,IAAIl+tC,EAAWk+tC,EACfA,EAAwB,KACxBl+tC,GACF,CAEJ,CAo0WM6ouC,EACF,EAEIC,GAAgB,WAClBlN,EAAUyC,EAAmBuK,IAAwB,WACnD,KAAM,qCAAuCvK,CAC/C,GACF,EAEI0K,GAAyB/M,EAAkBqC,GAE/C,GAAI0K,GACFH,GAAuBG,GAAuB/puC,aACzC,GAAI6kM,EAAiC,yBAAG,CAC7C,IAAImliC,GAAa,WACf,IAAIntrC,EAAUgoJ,EAAiC,yBAC3Ct+L,EAAWs2C,EAAQt2C,SAEvB,GAAuB,MAAnBs2C,EAAQt/C,QAAqC,IAAnBs/C,EAAQt/C,OAAc,CAClD,IAAIjW,EAAO01uC,EAAkBn4hC,EAAoC,6BAEjE,IAAIv9M,EAKF,OAFA6X,QAAQC,KAAK,kFAAoFy9C,EAAQt/C,OAAS,cAAgB8huC,QAClIyK,KAHAvjuC,EAAWjf,EAAK0Y,MAMpB,CAEA4puC,GAAuBrjuC,EACzB,EAEIs+L,EAAiC,yBAAEt+L,SACrC5I,WAAWqsuC,GAAY,GAEvBnliC,EAAiC,yBAAEpgM,iBAAiB,OAAQuluC,GAEhE,MACEF,IAGN,CASA,SAAS/3pC,GAAI5iD,GAUX,SAAS86sC,IACH1J,IACJA,GAAY,EACRpD,IAl8WNmB,EAAqBG,GAIrBH,EAAqBI,GAi8Wf75hC,EAA6B,sBAAKA,EAA6B,uBA97WvE,WACE,GAAIA,EAAgB,QAGlB,IAFgC,mBAArBA,EAAgB,UAAmBA,EAAgB,QAAI,CAACA,EAAgB,UAE5EA,EAAgB,QAAE1sN,QAYPqhE,EAXHqrJ,EAAgB,QAAE5uK,QAYnC0osC,EAAch8tC,QAAQ62C,GADxB,IAAsBA,EAPpB8krC,EAAqBK,EACvB,CAq7WIuL,IACF,CAjBA/6sC,EAAOA,GAAQ0tsC,EAEXmC,EAAkB,IAr8WxB,WACE,GAAIn6hC,EAAe,OAGjB,IAF+B,mBAApBA,EAAe,SAAmBA,EAAe,OAAI,CAACA,EAAe,SAEzEA,EAAe,OAAE1sN,QA4BPqhE,EA3BHqrJ,EAAe,OAAE5uK,QA4BjCuosC,EAAa77tC,QAAQ62C,GADvB,IAAqBA,EAvBnB8krC,EAAqBE,EACvB,CA+7WE2L,GACInL,EAAkB,IAYlBn6hC,EAAkB,WACpBA,EAAkB,UAAE,cACpBlnM,YAAW,WACTA,YAAW,WACTknM,EAAkB,UAAE,GACtB,GAAG,GACHoliC,GACF,GAAG,IAEHA,KAEJ,CAIA,SAASlhuC,GAAMqhuC,GASb,MARIvliC,EAAgB,SAClBA,EAAgB,QAAEuliC,GAIpBpynC,EADAoynC,GAAQ,IAERh7sC,EAAIg7sC,GACJjN,GAAQ,EACF,SAAWiN,EAAO,8CAC1B,CAIA,GAtDAlL,EAAwB,SAASmL,IAC1B9J,GAAaxupC,KACbwupC,IAAarB,EAAwBmL,EAC5C,EAmCAxliC,EAAY,IAAI9yH,GAchB8yH,EAAc,MAAI97L,GAEd87L,EAAgB,QAGlB,IAFgC,mBAArBA,EAAgB,UAAmBA,EAAgB,QAAI,CAACA,EAAgB,UAE5EA,EAAgB,QAAE1sN,OAAS,GAChC0sN,EAAgB,QAAEnrN,KAAlBmrN,GAIJ,OADA9yH,KACO2qpC,CACT,CA34XY,CA24XO,iBAAVA,EAAqBA,EAAQ,CAAC,GAmBnC3se,EAAS,SA4BT1yuB,EAAK,CAAC,EAnBK,CACf,CAAC,gBAAiB0yuB,GAAS,CAAC,iBAAkBA,GAAS,CAAC,oBAAqBA,GAAS,CAAC,mBAAoBA,GAAS,CAAC,iBAAkBA,GAAS,CAAC,yBAA0BA,GAAS,CAAC,gBAAiBA,GACtM,CAAC,YAVaA,EAUS,CATRA,EACAA,IAQ+B,CAAC,UAThCA,EASqD,CAACA,EAAQA,EAP5DA,IAOkF,CAAC,UAAW,KAAM,CATtGA,EACAA,EAEDA,IAMuI,CAAC,kBAAmB,KAAM,CAThKA,EACAA,EAEDA,IAMiM,CAAC,eAAgBA,EAAQ,CAACA,IAAU,CAAC,QAAS,KAAM,CATpPA,EACAA,EAQyQA,EAN1QA,IAM6R,CAAC,iBAAkB,KAAM,CATrTA,EACAA,EAQ0UA,EAN3UA,MAMuW,CAAC,UAAW,KAAM,CATxXA,EACAA,EAQ6YA,EAN9YA,IAMia,CAAC,kBAAmBA,EAAQ,CAN7bA,EADGA,IAOkd,CAAC,WAAY,KAAM,CANxeA,EADGA,EACHA,IAMygB,CAAC,mBAAoB,KAAM,CANpiBA,EAM8iBA,EAN9iBA,IAMikB,CAAC,uBAAwB,KAAM,CANhmBA,IAM4mB,CAAC,UAAWA,EAAQ,CANhoBA,IAMmpBA,IAAU,CAAC,YAAaA,EAAQ,CANnrBA,EAM6rBA,EAN7rBA,EAM8sBA,EAP3sBA,IAOiuB,CAAC,mBAAoBA,EAAQ,CANjwBA,EAM2wBA,EAPxwBA,IAO8xB,CAAC,eAVlyBA,EAU2zB,CAT1zBA,EACAA,IAQi1B,CAAC,kBAVn1BA,EAU+2B,CAT92BA,EACAA,IAQq4B,CAAC,gBAAiBA,EAAQ,CAT/5BA,EACAA,IAQs7B,CAAC,kBAAmBA,EAAQ,CATl9BA,EACAA,IAQy+B,CAAC,eAAgBA,EAAQ,CATlgCA,EACAA,IAQyhC,CAAC,aAAc,KAAM,CAT9iCA,EACAA,EAEDA,IAM+kC,CAAC,aAT/kCA,EASumC,CATvmCA,EACAA,EACEA,IAOwoC,CAAC,eAAgB,KAAM,CATjqCA,EACAA,EACEA,EACHA,IAM8sC,CAAC,kBAT9sCA,EAS2uC,CAT3uCA,EACAA,EACEA,IAO4wC,CAAC,sBAAuBA,EAAQ,CAT9yCA,EACAA,EACEA,IAO+0C,CAAC,wBAVn1CA,EAUq3C,CATp3CA,EACAA,EADAA,EACAA,IAQ+5C,CAAC,0BATh6CA,EASq8C,CATr8CA,EACAA,EADAA,EACAA,IAQg/C,CAAC,yCATj/CA,EASqiD,CATriDA,EACAA,IAQ4jD,CAAC,8CAT7jDA,EASsnD,CATtnDA,EACAA,IAQ6oD,CAAC,8BAV/oDA,EAUurD,CATtrDA,EACAA,IAQ6sD,CAAC,qCAAsC,KAAM,CAT1vDA,EACAA,EAEDA,IAM2xD,CAAC,sCAAuC,KAAM,CATx0DA,EACAA,EAEDA,IAMy2D,CAAC,kCAAmC,KAAM,CATl5DA,EACAA,EAEDA,IAMm7D,CAAC,aAAcA,EAAQ,CATz8DA,EACAA,EADAA,EACAA,IAQo/D,CAAC,SAAUA,EAAQ,CATvgEA,EACAA,EADAA,EACAA,EAEDA,IAM4jE,CAAC,aAAcA,EAAQ,CATllEA,EACAA,EADAA,EACAA,IAQ6nE,CAAC,0BAA2BA,EAAQ,CATjqEA,EACAA,EADAA,EACAA,EAEDA,IAMstE,CAAC,0BAA2BA,EAAQ,CATzvEA,EACAA,EAEDA,MAMmyE,CAAC,YAAaA,EAAQ,CAPtzEA,IAOq0E,CAAC,aAAcA,EAAQ,CAP51EA,IAO22E,CAAC,cAAeA,EAAQ,CAPn4EA,IAOk5E,CAAC,eAAgBA,EAAQ,CAP36EA,IAO07E,CAAC,aAAcA,EAAQ,CANp9EA,MAMy+E,CAAC,cAAeA,EAAQ,CANjgFA,MAMshF,CAAC,gBAAiBA,EAAQ,CANhjFA,MAMqkF,CAAC,aAAcA,EAAQ,CAT3lFA,EACAA,IAQknF,CAAC,cAAeA,EAAQ,CAT1oFA,EACAA,IAQiqF,CAAC,gBAAiBA,EAAQ,CAT3rFA,EACAA,IAQktF,CAAC,mBAAoBA,EAAQ,CAT/uFA,EACAA,IAQswF,CAAC,oBAAqBA,EAAQ,CATpyFA,EACAA,IAQ2zF,CAAC,sBAAuBA,EAAQ,CAT31FA,EACAA,IAQk3F,CAAC,cAAeA,EAAQ,CAPx4FA,IAOu5F,CAAC,iBAAkB,KAAM,CANn7FA,IAM+7F,CAAC,iBAAkBA,GAAS,CAAC,qBAAsB,KAAM,CAACA,EANz/FA,IAM4gG,CAAC,qBAAsBA,IAmBxiG/yvB,SAAQ,SAAc6/I,GAC7Bx/H,EAAGw/H,EAAI,IAAM6/kC,EAAM4N,MAAMjyvC,MAAMqkvC,EAAO7/kC,EACxC,IAEA,IAAI0tlC,EAAU,GAGVC,EAAS,EACTC,EAAS,EACTC,EAAS,EACTC,EAAatttC,EAAGuttC,gBAChBC,EAAcxttC,EAAGyttC,iBACjBC,EAAiB1ttC,EAAG2ttC,oBACpBC,EAAgB5ttC,EAAG6ttC,mBACnBC,EAAc9ttC,EAAG+ttC,iBACjBC,EAAuBhutC,EAAGiutC,yBAC1BC,EAAalutC,EAAGmutC,gBAwChBC,EAAQ,CACVvwvC,EAAG,IACH+zQ,GAAI,KACJy8+B,GAAI,KACJC,IAAK,MACLC,KAAM,OACNC,MAAO,SAWT,SAASC,EAAY3umC,GACnB,GAAmB,iBAARA,GAAoBA,EAAM,GAAKA,EAAM,IAAMxiJ,KAAKyK,MAAM+3I,KAASA,EACxE,MAAM,IAAI79H,MAAO,uBAAyB69H,EAE9C,CAEA,IAAI4umC,EAA2B,eAQ/B,SAASC,EAAmBC,GAC1B,GAAI10vC,MAAMkS,QAAQwivC,IAA+B,IAAnBA,EAAQ9zvC,QAAgB8kC,OAAOglH,UAAUgqmC,EAAQ,KAAOhvtC,OAAOglH,UAAUgqmC,EAAQ,IAC7G,OAAOA,EAGT,GAAuB,iBAAZA,GAAwBF,EAAyB5ovC,KAAK8ovC,GAC/D,MAAO,CAAC,EAAG,GAGb,IAAIC,EAAQz+tC,SAASw+tC,EAAQ78tC,UAAU,EAAG68tC,EAAQ9zvC,OAAS,GAAIoyvC,GAE/D,MAAO,CADK98tC,SAASw+tC,EAAQ78tC,UAAU68tC,EAAQ9zvC,OAAS,GAAIoyvC,GAC7C2B,EACjB,CAQA,SAASC,EAAanxsC,GACpB,GAAIA,GAAO,EACT,OAAOA,EAAI3+C,SAASkuvC,GAKtB,IAAI6B,EAAUC,EAAQ,GADtBrxsC,GAAY,YACiB3+C,SAASkuvC,IAGtC,OAFc98tC,SAAS2+tC,EAAQ,GAAI7B,GAAW,GAAGluvC,SAASkuvC,GACvC6B,EAAQh9tC,UAAU,EAEvC,CAUA,SAASk9tC,EAAmBC,EAAOL,GACjC,OAAOC,EAAaD,GAASG,EAAQ,EAAGF,EAAaI,GACvD,CASA,SAASF,EAAQG,EAASC,GAIxB,IAHA,IAAIC,EAAYF,EAAUC,EAAOt0vC,OAC7Bw0vC,EAAS,GAEJj0vC,EAAI,EAAGA,EAAIg0vC,EAAWh0vC,IAC7Bi0vC,GAAU,IAIZ,OADAA,EAAkBF,CAEpB,CAWA,SAASG,EAAuBC,EAAcC,EAAUC,GAStD,IARA,IAAI7zgC,EAAW2zgC,EAAa10vC,OAExB60vC,EAAgBtQ,EAAMkH,QAAQ1qgC,EAAU2xgC,GAGxCoC,EAAWF,EAAY,EAAI,EAC3BG,EAAWH,EAAY,EAAI,EAEtBr0vC,EAAI,EAAGA,EAAe,EAAXwgP,EAAcxgP,GAAK,EACrCgkvC,EAAMgB,QAAQ35uC,IAAI,CAAC8ovC,EAAan0vC,EAAI,GAAGu0vC,GAAWJ,EAAan0vC,EAAI,GAAGw0vC,IAAW/luC,IAAIgmuC,IAAaH,EAAgBtC,EAAShyvC,GAI7H,OADAgkvC,EAAM0Q,QAAQrpvC,IAAI,CAACm1O,EAAU8zgC,GAAgBF,EAAWtC,GACjDsC,CACT,CAgFA,SAASO,EAASC,GAGhB,MAAO,CAACA,EADI5Q,EAAMQ,cAEpB,CAWA,SAASqQ,EAAYD,GACnB,IAAI5ztC,EAAM2ztC,EAASC,GACff,EAAQ7ytC,EAAI,GACZwytC,EAAQxytC,EAAI,GAGhB,OAAOwytC,EAAQI,EAAmBC,EAAOL,GAAS,IACpD,CAWA,SAASsB,EAAuBC,EAAUxzsC,QACxB,IAAXA,IAAoBA,EAAS,GAElC,IAAIsysC,EAAQ7P,EAAM1onC,SAASy5nC,EAAWjD,EAASvwsC,EAAS,EAAG,OACvDiysC,EAAQxP,EAAM1onC,SAASy5nC,EAAWjD,GAAmB,EAATvwsC,EAAa,GAAI,OAGjE,OAAOiysC,EAAQI,EAAmBC,EAAOL,GAAS,IACpD,CAYA,SAASwB,EAAazB,EAASwB,EAAUxzsC,GAMvCyisC,EAAM0Q,QAAQrpvC,IAAIiovC,EAAmBC,GAAUwB,EAAWjD,EAAS,EAAIvwsC,EACzE,CAaA,SAAS0zsC,EAAoBF,EAAUrimC,GAGrC,IAFA,IAAIpzB,EAAM,GAEDt/H,EAAI,EAAGA,EAAI0yJ,EAAU1yJ,IAAK,CACjC,IAAIuzvC,EAAUuB,EAAuBC,EAAU/0vC,GAE/B,OAAZuzvC,GACFj0nC,EAAIr+H,KAAKsyvC,EAEb,CAEA,OAAOj0nC,CACT,CASA,SAAS41nC,EAAqBH,EAAU1+jC,GAKtC,IAFA,IAAI1tI,EAAQ0tI,EAAS52L,OAEZO,EAAI,EAAGA,EAAI2oD,EAAO3oD,IACzBg1vC,EAAa3+jC,EAASr2L,GAAI+0vC,EAAU/0vC,EAExC,CAUA,SAASm1vC,EAAc72tC,EAAKE,GAC1B,IAAIihlC,EAAWukI,EAAMkH,QAAQ,EAAGiH,GAGhC,OADAnO,EAAMgB,QAAQ35uC,IAAI,CAACizB,EAAKE,GAAK/P,IAAIgmuC,IAAah1I,EAAWuyI,GAClDvyI,CACT,CAEA,SAAS21I,EAAgBL,GACvB,OAAOM,GAAWrR,EAAM1onC,SAASy5nC,EAAU,UAC7C,CASA,SAASO,EAAaP,GACpB,MAAO,CAACK,EAAgBL,GAAWK,EAAgBL,EAAW/C,GAChE,CASA,SAASuD,EAAoBR,GAC3B,MAAO,CAACK,EAAgBL,EAAW/C,GAASoD,EAAgBL,GAC9D,CAWA,SAASS,EAAgBC,EAAaC,EAAeC,GASnD,IARA,IAAIn1gC,EAAWwjgC,EAAM1onC,SAASm6nC,EAAa,OAGvCG,EAAWH,EAAczD,EACzB1ynC,EAAM,GAENu2nC,EAAYH,EAAgBH,EAAsBD,EAE7Ct1vC,EAAI,EAAGA,EAAe,EAAXwgP,EAAcxgP,GAAK,EACrCs/H,EAAIr+H,KAAK40vC,EAAUD,EAAW5D,EAAShyvC,IAQzC,OALI21vC,GAEFr2nC,EAAIr+H,KAAKq+H,EAAI,IAGRA,CACT,CA+GA,SAASw2nC,EAAUvC,GACjB,IAAIvytC,EAAMsytC,EAAmBC,GACzBM,EAAQ7ytC,EAAI,GACZwytC,EAAQxytC,EAAI,GAChB,OAAO3uB,QAAQsyB,EAAGmxtC,UAAUjC,EAAOL,GACrC,CAQA,SAASx+jC,EAAau+jC,GACpB,IAAIvytC,EAAMsytC,EAAmBC,GACzBM,EAAQ7ytC,EAAI,GACZwytC,EAAQxytC,EAAI,GAChB,OAAO3uB,QAAQsyB,EAAGqwJ,aAAa6+jC,EAAOL,GACxC,CAUA,SAASuC,EAAgBxC,GACvB,IAAIvytC,EAAMsytC,EAAmBC,GACzBM,EAAQ7ytC,EAAI,GACZwytC,EAAQxytC,EAAI,GAChB,OAAO3uB,QAAQsyB,EAAGoxtC,gBAAgBlC,EAAOL,GAC3C,CAQA,SAASwC,EAAczC,GACrB,IAAIvytC,EAAMsytC,EAAmBC,GACzBM,EAAQ7ytC,EAAI,GACZwytC,EAAQxytC,EAAI,GAChB,OAAO2D,EAAGqxtC,cAAcnC,EAAOL,EACjC,CAQA,SAASyC,EAAW1C,GAClB,IAAIvytC,EAAMsytC,EAAmBC,GACzBM,EAAQ7ytC,EAAI,GACZwytC,EAAQxytC,EAAI,GACZ2nB,EAAQhkB,EAAGuxtC,aAAarC,EAAOL,GAE/BvtkC,EAAQ+9jC,EAAMpp+B,QAAQk3+B,EAASnpsC,GAEnChkB,EAAGsxtC,WAAWpC,EAAOL,EAAOvtkC,GAC5B,IAAI3mD,EAtFN,SAAqCy1nC,EAAUpssC,GAG7C,IAFA,IAAI22E,EAAM,GAEDt/H,EAAI,EAAGA,EAAI2oD,EAAO3oD,IAAK,CAC9B,IAAIk9Q,EAAM8m+B,EAAM1onC,SAASy5nC,EAAWjD,EAAS9xvC,EAAG,OAE5Ck9Q,GAAO,GACT59I,EAAIr+H,KAAKi8Q,EAEb,CAEA,OAAO59I,CACT,CA0EY62nC,CAA4BlwkC,EAAOt9H,GAI7C,OAFAq7rC,EAAMjp+B,MAAM90F,GAEL3mD,CACT,CAQA,SAASn1F,EAAgBoptC,GACvB,IAAIvytC,EAAMsytC,EAAmBC,GACzBM,EAAQ7ytC,EAAI,GACZwytC,EAAQxytC,EAAI,GAEhB,OAAK2D,EAAGmxtC,UAAUjC,EAAOL,GAKlB7utC,EAAGwF,gBAAgB0ptC,EAAOL,IAHvB,CAIZ,CAUA,SAASp+jC,EAAQ92J,EAAKE,EAAKimH,GACzB,IAAIimQ,EAASs51B,EAAMpp+B,QAAQu3+B,GAG3BnO,EAAMgB,QAAQ35uC,IAAI,CAACizB,EAAKE,GAAK/P,IAAIgmuC,IAAa/p2B,EAASsn2B,GAEvD,IAAIuB,EAAUsB,EAAYlwtC,EAAGywJ,QAAQs1N,EAAQjmQ,IAI7C,OAFAu/lC,EAAMjp+B,MAAM2vI,GAEL6o2B,CACT,CAQA,SAAS1/jC,EAAQ0/jC,GACf,IAAI7o2B,EAASs51B,EAAMpp+B,QAAQu3+B,GAEvBnxtC,EAAMsytC,EAAmBC,GACzBM,EAAQ7ytC,EAAI,GACZwytC,EAAQxytC,EAAI,GAChB2D,EAAGkvJ,QAAQggkC,EAAOL,EAAO9o2B,GACzB,IAAIprR,EAAMg2nC,EAAa5q2B,GAIvB,OAFAs51B,EAAMjp+B,MAAM2vI,GAELprR,CACT,CAWA,SAAS00D,EAAgBu/jC,EAAS6C,GAChC,IAAIX,EAAczR,EAAMpp+B,QAAQy3+B,GAE5BrxtC,EAAMsytC,EAAmBC,GACzBM,EAAQ7ytC,EAAI,GACZwytC,EAAQxytC,EAAI,GAChB2D,EAAGqvJ,gBAAgB6/jC,EAAOL,EAAOiC,GACjC,IAAIn2nC,EAAMk2nC,EAAgBC,EAAaW,EAAiBA,GAIxD,OAFApS,EAAMjp+B,MAAM06+B,GAELn2nC,CACT,CAWA,SAAS+2nC,EAAW9C,EAAS9umC,GAC3B,IAAIzjH,EAAMsytC,EAAmBC,GACzBM,EAAQ7ytC,EAAI,GACZwytC,EAAQxytC,EAAI,GAChB,OAAO6ztC,EAAYlwtC,EAAG0xtC,WAAWxC,EAAOL,EAAO/umC,GACjD,CASA,SAAS6xmC,EAAa/C,EAAS9umC,GAG7B,IAAKqxmC,EAAUvC,GACb,MAAO,GAGT,IAAIvytC,EAAMsytC,EAAmBC,GACzBM,EAAQ7ytC,EAAI,GACZwytC,EAAQxytC,EAAI,GACZ0xH,EAAW/tH,EAAG4xtC,oBAAoB1C,EAAOL,EAAO/umC,GAEhD4xC,EAAW2tjC,EAAMkH,QAAQx4lC,EAAUu/lC,GAEvCtttC,EAAG2xtC,aAAazC,EAAOL,EAAO/umC,EAAK4xC,GACnC,IAAI/2D,EAAM21nC,EAAoB5+jC,EAAU3jC,GAIxC,OAFAsxlC,EAAMjp+B,MAAM1kF,GAEL/2D,CACT,CASA,SAASk3nC,EAAgBjD,EAAS9umC,GAChC,IAAIzjH,EAAMsytC,EAAmBC,GACzBM,EAAQ7ytC,EAAI,GACZwytC,EAAQxytC,EAAI,GAChB,OAAO6ztC,EAAYlwtC,EAAG6xtC,gBAAgB3C,EAAOL,EAAO/umC,GACtD,CASA,SAASgymC,EAAMlD,EAASmD,GACtB,IAAI11tC,EAAMsytC,EAAmBC,GACzBM,EAAQ7ytC,EAAI,GACZwytC,EAAQxytC,EAAI,GACZ0xH,EAAW/tH,EAAGgytC,aAAaD,GAE3BrgkC,EAAW2tjC,EAAMkH,QAAQx4lC,EAAUu/lC,GAEvCtttC,EAAG8xtC,MAAM5C,EAAOL,EAAOkD,EAAUrgkC,GACjC,IAAI/2D,EAAM21nC,EAAoB5+jC,EAAU3jC,GAIxC,OAFAsxlC,EAAMjp+B,MAAM1kF,GAEL/2D,CACT,CAUA,SAASs3nC,EAAerD,EAASmD,GAC/B,IAAI11tC,EAAMsytC,EAAmBC,GACzBM,EAAQ7ytC,EAAI,GACZwytC,EAAQxytC,EAAI,GACZ0xH,EAAW/tH,EAAGgytC,aAAaD,GAE3BG,EAAS7S,EAAMkH,QAAQx4lC,EAAUu/lC,GAEjC6E,EAAY9S,EAAMkH,QAAQx4lC,EAAUo/lC,GAExCnttC,EAAGiytC,eAAe/C,EAAOL,EAAOkD,EAAUG,EAAQC,GAIlD,IAFA,IAAIx3nC,EAAM,GAEDt/H,EAAI,EAAGA,EAAI02vC,EAAW,EAAG12vC,IAChCs/H,EAAIr+H,KAAK,IAIX,IAAK,IAAI81vC,EAAM,EAAGA,EAAiB,EAAXrkmC,EAAcqkmC,GAAO,EAAG,CAC9C,IAAIC,EAAWhT,EAAM1onC,SAASu7nC,EAAS/E,EAASiF,EAAK,OACjDE,EAAWjT,EAAM1onC,SAASu7nC,EAAS/E,GAAUiF,EAAM,GAAI,OACvD36uC,EAAQ4nuC,EAAM1onC,SAASw7nC,EAAYhF,GAAUiF,EAAM,GAAI,OAE1C,IAAbC,GAA+B,IAAbC,GACpB33nC,EAAIljH,GAAOnb,KAAK2yvC,EAAmBoD,EAAUC,GAEjD,CAMA,OAJAjT,EAAMjp+B,MAAM87+B,GAEZ7S,EAAMjp+B,MAAM+7+B,GAELx3nC,CACT,CAWA,SAAS43nC,EAAQ3D,EAASmD,GACxB,IAAIhkmC,EAAwB,IAAbgkmC,EAAiB,EAAI,EAAIA,EAEpCrgkC,EAAW2tjC,EAAMkH,QAAQx4lC,EAAUu/lC,GAIvC,GAAe,IAFFtttC,EAAGuytC,QAAQv3vC,MAAMglC,EAAI2utC,EAAmBC,GAASnyvC,OAAQ,CAACs1vC,GAAW,CAACrgkC,KAKjF,MAFA2tjC,EAAMjp+B,MAAM1kF,GAEN,IAAIzvK,MAAM,mDAGlB,IAAI04G,EAAM21nC,EAAoB5+jC,EAAU3jC,GAIxC,OAFAsxlC,EAAMjp+B,MAAM1kF,GAEL/2D,CACT,CAgBA,SAASj1F,EAASnG,EAAaugH,EAAK4vmC,GAIlC,GAHAjB,EAAY3umC,GACZ4vmC,EAAYhivC,QAAQgivC,GAEO,IAAvBnwtC,EAAYzkC,QAA0C,IAA1BykC,EAAY,GAAGzkC,OAC7C,MAAO,GAIwB,iBAAtBykC,EAAY,GAAG,KACxBA,EAAc,CAACA,IAGjB,IAAIiztC,EAjrBN,SAAiCjztC,EAAamwtC,GAE5C,IAUIhs5B,EAVA+u5B,EAAWlztC,EAAYzkC,OAAS,EAEhC03vC,EAAanT,EAAMkH,QAAQqH,GAI3B8E,EADiB,EACiB5E,EAClC6E,EAAcD,EAAiBvF,EAKnC,GAHAoC,EAAuBhwtC,EAAY,GAAIiztC,EAJlB,EAI+C9C,GAGhE+C,EAAW,EAAG,CAChB/u5B,EAAQ274B,EAAMkH,QAAQkM,EAAU3E,GAEhC,IAAK,IAAIzyvC,EAAI,EAAGA,EAAIo3vC,EAAUp3vC,IAC5Bk0vC,EAAuBhwtC,EAAYlkC,EAAI,GAAIqoW,EAAQoq5B,EAAczyvC,EAAGq0vC,EAExE,CAIA,OAFArQ,EAAM1ltB,SAAS64tB,EAAaE,EAAgBD,EAAU,OACtDpT,EAAM1ltB,SAAS64tB,EAAaG,EAAajv5B,EAAO,OACzC8u5B,CACT,CAwpBmBI,CAAwBrztC,EAAamwtC,GAClDmD,EAAW7ytC,EAAG8ytC,gBAAgBN,EAAY1ymC,GAE1C4xC,EAAW2tjC,EAAMkH,QAAQsM,EAAUvF,GAEvCtttC,EAAG0F,SAAS8stC,EAAY1ymC,EAAK4xC,GAC7B,IAAI/2D,EAAM21nC,EAAoB5+jC,EAAUmhkC,GAKxC,OAHAxT,EAAMjp+B,MAAM1kF,GAvpBd,SAA2B8gkC,GAEzB,IACIE,EADiB,EACiB5E,EAClC6E,EAAcD,EAAiBvF,EAE/B4F,EAAsB5F,EAE1B9N,EAAMjp+B,MAAMip+B,EAAM1onC,SAAS67nC,EANN,EAMoCO,EAAqB,QAG9E,IAAIN,EAAWpT,EAAM1onC,SAAS67nC,EAAaE,EAAgB,OAE3D,GAAID,EAAW,EAAG,CAGhB,IAFA,IAAI/u5B,EAAQ274B,EAAM1onC,SAAS67nC,EAAaG,EAAa,OAE5Ct3vC,EAAI,EAAGA,EAAIo3vC,EAAUp3vC,IAC5BgkvC,EAAMjp+B,MAAMip+B,EAAM1onC,SAAS+sO,EAAQoq5B,EAAczyvC,EAAI03vC,EAAqB,QAG5E1T,EAAMjp+B,MAAMstF,EACd,CAEA274B,EAAMjp+B,MAAMo8+B,EACd,CAioBEQ,CAAkBR,GACX73nC,CACT,CAmBA,SAASg3D,EAAoBshkC,EAAWxB,GAEtC,IAAKwB,IAAcA,EAAUn4vC,OAC3B,MAAO,GAIT,IAAIy2T,EAAa0h8B,EAAUn4vC,OAEvB4L,EAAM24uC,EAAMkH,QAAQh17B,EAAY+77B,GAEpCiD,EAAqB7pvC,EAAKusvC,GAE1B,IAAIvztC,EAAU2/sC,EAAMkH,QAAQyH,GAIxBkF,EAAkBxztC,EACtBM,EAAGmztC,iBAAiBzsvC,EAAK6qT,EAAY7xR,GACrC,IAAIC,EAteN,SAA0BD,EAAS+xtC,GAQjC,IAPA,IAEI2B,EACA97gC,EACAllH,EACAsnC,EALA71F,EAAS,GACTqtrC,EAAYO,EAAkBb,EAAsBD,EAMjDjxtC,GAAS,CAKd,IAJAmkC,EAAOvnE,KAAK82vC,EAAQ,IAEpB97gC,EAAO+ngC,EAAM1onC,SAASj3F,EAAS,OAExB43M,GAAM,CAKX,IAJA87gC,EAAM92vC,KAAK81H,EAAS,IAEpBsnC,EAAQ2llC,EAAM1onC,SAAS2gH,EAAM,OAEtB59E,GACLtnC,EAAO91H,KAAK40vC,EAAUx3lC,IAEtBA,EAAQ2llC,EAAM1onC,SAAS+iC,EAAiB,EAAT2zlC,EAAY,OAGzCoE,GAEFr/nC,EAAO91H,KAAK81H,EAAO,IAIrBklH,EAAO+ngC,EAAM1onC,SAAS2gH,EAAgB,EAAT81gC,EAAY,MAC3C,CAGA1ttC,EAAU2/sC,EAAM1onC,SAASj3F,EAAmB,EAAT0ttC,EAAY,MACjD,CAEA,OAAOvprC,CACT,CAgcqBwvrC,CAAiB3ztC,EAAS+xtC,GAQ7C,OANAzxtC,EAAGsztC,qBAAqBJ,GAExB7T,EAAMjp+B,MAAM88+B,GAEZ7T,EAAMjp+B,MAAM1vQ,GAELi5B,CACT,CAUA,SAAS4ztC,EAAQC,GACf,IAAKA,IAAUA,EAAM14vC,OACnB,MAAO,GAIT,IAAIkpD,EAAQwvsC,EAAM14vC,OAEd4L,EAAM24uC,EAAMkH,QAAQvisC,EAAOspsC,GAE/BiD,EAAqB7pvC,EAAK8svC,GAE1B,IAAIC,EAAepU,EAAMkH,QAAQvisC,EAAOspsC,GAIxC,GAAe,IAFFtttC,EAAGuztC,QAAQ7svC,EAAK+svC,EAAczvsC,GAOzC,MAJAq7rC,EAAMjp+B,MAAM1vQ,GAEZ24uC,EAAMjp+B,MAAMq9+B,GAEN,IAAIxxuC,MAAM,iEAGlB,IAAI04G,EAAM21nC,EAAoBmD,EAAczvsC,GAM5C,OAJAq7rC,EAAMjp+B,MAAM1vQ,GAEZ24uC,EAAMjp+B,MAAMq9+B,GAEL94nC,CACT,CAUA,SAAS+4nC,GAAUD,EAAc3zmC,GAG/B,GAFA2umC,EAAY3umC,IAEP2zmC,IAAiBA,EAAa34vC,OACjC,MAAO,GAIT,IAAIkpD,EAAQyvsC,EAAa34vC,OAErB4L,EAAM24uC,EAAMkH,QAAQvisC,EAAOspsC,GAE/BiD,EAAqB7pvC,EAAK+svC,GAE1B,IAAIE,EAAoB3ztC,EAAG4ztC,iBAAiBltvC,EAAKs9C,EAAO87F,GAEpD+zmC,EAAiBxU,EAAMkH,QAAQoN,EAAmBrG,GAItD,GAAe,IAFFtttC,EAAG0ztC,UAAUhtvC,EAAKs9C,EAAO6vsC,EAAgBF,EAAmB7zmC,GAOvE,MAJAu/lC,EAAMjp+B,MAAM1vQ,GAEZ24uC,EAAMjp+B,MAAMy9+B,GAEN,IAAI5xuC,MAAM,yCAGlB,IAAI04G,EAAM21nC,EAAoBuD,EAAgBF,GAM9C,OAJAtU,EAAMjp+B,MAAM1vQ,GAEZ24uC,EAAMjp+B,MAAMy9+B,GAELl5nC,CACT,CAWA,SAASm5nC,GAAsBr+tC,EAAQ8e,GACrC,IAAIlY,EAAMsytC,EAAmBl5tC,GACzBs+tC,EAAS13tC,EAAI,GACb23tC,EAAS33tC,EAAI,GACb43tC,EAAQtF,EAAmBp6sC,GAC3B2/sC,EAASD,EAAM,GACfE,EAASF,EAAM,GACnB,OAAOvmvC,QAAQsyB,EAAG8ztC,sBAAsBC,EAAQC,EAAQE,EAAQC,GAClE,CASA,SAASC,GAAwB3+tC,EAAQ8e,GACvC,IAAIlY,EAAMsytC,EAAmBl5tC,GACzBs+tC,EAAS13tC,EAAI,GACb23tC,EAAS33tC,EAAI,GACb43tC,EAAQtF,EAAmBp6sC,GAC3B2/sC,EAASD,EAAM,GACfE,EAASF,EAAM,GACnB,OAAO/D,EAAYlwtC,EAAGo0tC,wBAAwBL,EAAQC,EAAQE,EAAQC,GACxE,CAQA,SAASE,GAAuC/vH,GAC9C,IAAIjomC,EAAMsytC,EAAmBrqH,GACzB4qH,EAAQ7ytC,EAAI,GACZwytC,EAAQxytC,EAAI,GAChB,OAAO6ztC,EAAYlwtC,EAAGq0tC,uCAAuCnF,EAAOL,GACtE,CAQA,SAASyF,GAA4ChwH,GACnD,IAAIjomC,EAAMsytC,EAAmBrqH,GACzB4qH,EAAQ7ytC,EAAI,GACZwytC,EAAQxytC,EAAI,GAChB,OAAO6ztC,EAAYlwtC,EAAGs0tC,4CAA4CpF,EAAOL,GAC3E,CAQA,SAAS0F,GAA4BjwH,GACnC,IAAIjomC,EAAMsytC,EAAmBrqH,GACzB4qH,EAAQ7ytC,EAAI,GACZwytC,EAAQxytC,EAAI,GAChB,OAAO3uB,QAAQsyB,EAAGu0tC,4BAA4BrF,EAAOL,GACvD,CAQA,SAAS2F,GAAmClwH,GAC1C,IAAIjomC,EAAMsytC,EAAmBrqH,GACzB4qH,EAAQ7ytC,EAAI,GACZwytC,EAAQxytC,EAAI,GAGZq1J,EAAW2tjC,EAAMkH,QAFT,EAEwB+G,GAEpCtttC,EAAGw0tC,mCAAmCtF,EAAOL,EAAOn9jC,GACpD,IAAI/2D,EAAM21nC,EAAoB5+jC,EALlB,GASZ,OAFA2tjC,EAAMjp+B,MAAM1kF,GAEL/2D,CACT,CASA,SAAS85nC,GAAoC7F,GAC3C,IAAIvytC,EAAMsytC,EAAmBC,GACzBM,EAAQ7ytC,EAAI,GACZwytC,EAAQxytC,EAAI,GAGZyn+B,EAAQu7O,EAAMkH,QAFN,EAEqB+G,GAEjCtttC,EAAGy0tC,oCAAoCvF,EAAOL,EAAO/qP,GACrD,IAAInp4B,EAAM21nC,EAAoBxsP,EALlB,GASZ,OAFAu7O,EAAMjp+B,MAAM0tvB,GAELnp4B,CACT,CAUA,SAAS+5nC,GAAgCpwH,EAAWmtH,GAClD,IAAIX,EAAczR,EAAMpp+B,QAAQy3+B,GAE5BrxtC,EAAMsytC,EAAmBrqH,GACzB4qH,EAAQ7ytC,EAAI,GACZwytC,EAAQxytC,EAAI,GAChB2D,EAAG00tC,gCAAgCxF,EAAOL,EAAOiC,GACjD,IAAIn2nC,EAAMk2nC,EAAgBC,EAAaW,GAIvC,OAFApS,EAAMjp+B,MAAM06+B,GAELn2nC,CACT,CAYA,SAAS+1D,GAAWj7J,EAAQ8e,GAC1B,IAAIlY,EAAMsytC,EAAmBl5tC,GACzBs+tC,EAAS13tC,EAAI,GACb23tC,EAAS33tC,EAAI,GACb43tC,EAAQtF,EAAmBp6sC,GAC3B2/sC,EAASD,EAAM,GACfE,EAASF,EAAM,GACnB,OAAOj0tC,EAAG0wJ,WAAWqjkC,EAAQC,EAAQE,EAAQC,EAC/C,CAwBA,SAASQ,GAAOl/tC,EAAQ8e,GACtB,IAAIlY,EAAMsytC,EAAmBl5tC,GACzBs+tC,EAAS13tC,EAAI,GACb23tC,EAAS33tC,EAAI,GACb43tC,EAAQtF,EAAmBp6sC,GAC3B2/sC,EAASD,EAAM,GACfE,EAASF,EAAM,GACfjwsC,EAAQhkB,EAAG40tC,WAAWb,EAAQC,EAAQE,EAAQC,GAElD,GAAInwsC,EAAQ,EAGV,MAAM,IAAI/hC,MAAM,6BAGlB,IAAIyvK,EAAW2tjC,EAAMkH,QAAQvisC,EAAOspsC,GAEpCtttC,EAAG20tC,OAAOZ,EAAQC,EAAQE,EAAQC,EAAQzikC,GAC1C,IAAI/2D,EAAM21nC,EAAoB5+jC,EAAU1tI,GAIxC,OAFAq7rC,EAAMjp+B,MAAM1kF,GAEL/2D,CACT,CAmBA,SAASk6nC,GAAwBp/tC,EAAQ8e,GACvC,IA3vBmB67sC,EA2vBf/4kC,EAAKgokC,EAAMpp+B,QAAQi4+B,GAEnB4G,EAAS90tC,EAAG60tC,wBAAwB75vC,MAAMglC,EAAI2utC,EAAmBl5tC,GAAQh5B,OAAQkyvC,EAAmBp6sC,GAAc,CAAC8iI,KACnHjlD,GA9vBeg+nC,EA8vBM/4kC,EA7vBlB,CACLh8K,EAAGgkvC,EAAM1onC,SAASy5nC,EAAU,OAC5BvxvC,EAAGwgvC,EAAM1onC,SAASy5nC,EAAWjD,EAAQ,SAiwBvC,OAJA9N,EAAMjp+B,MAAM/+F,GAIJy9kC,GACN,KAAK,EACH,OAAO1ioC,EAET,KAAK,EACH,MAAM,IAAInwG,MAAM,kCAElB,KAAK,EACL,QACE,MAAM,IAAIA,MAAM,4GAElB,KAAK,EACL,KAAK,EACL,KAAK,EACH,MAAM,IAAIA,MAAM,4CAEtB,CAmBA,SAAS8yuC,GAAwBt/tC,EAAQ28F,GAEvC,IAAKA,GAA8B,iBAAbA,EAAO/2H,GAAsC,iBAAb+2H,EAAOvzH,EAC3D,MAAM,IAAIojB,MAAM,oDAIlB,IAhyBoBmuuC,EAAU/ztC,EAC1BhhC,EACAwD,EA8xBAw4K,EAAKgokC,EAAMpp+B,QAAQi4+B,GAEnBvznC,EAAM0knC,EAAMpp+B,QAAQq3+B,GAlyBJ8C,EAoyBP/4kC,EAnyBTh8K,GAD0BghC,EAoyBb+1F,GAnyBL/2H,EACRwD,EAAIw9B,EAAIx9B,EAEZwgvC,EAAM1ltB,SAASy2tB,EAAU/0vC,EAAG,OAC5BgkvC,EAAM1ltB,SAASy2tB,EAAWjD,EAAQtuvC,EAAG,OAgyBrC,IAAIi2vC,EAAS90tC,EAAG+0tC,wBAAwB/5vC,MAAMglC,EAAI2utC,EAAmBl5tC,GAAQh5B,OAAQ,CAAC46K,GAAK,CAAC18C,KACxFi0nC,EAAUuB,EAAuBx1nC,GAMrC,GAJA0knC,EAAMjp+B,MAAM/+F,GAEZgokC,EAAMjp+B,MAAMz7I,GAEG,IAAXm6nC,EACF,MAAM,IAAI7yuC,MAAM,mJAGlB,OAAO2suC,CACT,CAcA,SAASoG,GAAUC,EAASC,EAASl+4B,GACnC,IAEI/4V,EAFAkkJ,EAASqulC,EAAcyE,EAAQ,GAAIA,EAAQ,IAC3C1s4B,EAASio4B,EAAc0E,EAAQ,GAAIA,EAAQ,IAG/C,OAAQl+4B,GACN,KAAKo34B,EAAMvwvC,EACTogB,EAAS+hB,EAAGm1tC,WAAWhzlC,EAAQomN,GAC/B,MAEF,KAAK6l4B,EAAMC,GACTpwuC,EAAS+hB,EAAGo1tC,YAAYjzlC,EAAQomN,GAChC,MAEF,KAAK6l4B,EAAMG,KACTtwuC,EAAS+hB,EAAGq1tC,cAAclzlC,EAAQomN,GAClC,MAEF,QACEtqW,EAAS,KAOb,GAJAohuC,EAAMjp+B,MAAMj0G,GAEZk9kC,EAAMjp+B,MAAMmyG,GAEG,OAAXtqW,EACF,MAAM,IAAIgE,MAAO,iBAAmB+0V,GAGtC,OAAO/4V,CACT,CAUA,SAASq3uC,GAAS1G,EAAS534B,GACzB,IAAI36U,EAAMsytC,EAAmBC,GACzBM,EAAQ7ytC,EAAI,GACZwytC,EAAQxytC,EAAI,GAEhB,OAAQ26U,GACN,KAAKo34B,EAAMx8+B,GACT,OAAO5xO,EAAGu1tC,WAAWrG,EAAOL,GAE9B,KAAKT,EAAME,IACT,OAAOtutC,EAAGw1tC,YAAYtG,EAAOL,GAE/B,KAAKT,EAAMI,MACT,OAAOxutC,EAAGy1tC,cAAcvG,EAAOL,GAEjC,QACE,MAAM,IAAI5suC,MAAO,iBAAmB+0V,GAE1C,CAUA,SAAS0+4B,GAAgBpz5B,EAAM0U,GAC7B,IAAI36U,EAAMsytC,EAAmBrs5B,GACzB4s5B,EAAQ7ytC,EAAI,GACZwytC,EAAQxytC,EAAI,GAEhB,OAAQ26U,GACN,KAAKo34B,EAAMvwvC,EACT,OAAOmiC,EAAG21tC,iBAAiBzG,EAAOL,GAEpC,KAAKT,EAAMC,GACT,OAAOrutC,EAAG41tC,kBAAkB1G,EAAOL,GAErC,KAAKT,EAAMG,KACT,OAAOvutC,EAAG61tC,oBAAoB3G,EAAOL,GAEvC,QACE,MAAM,IAAI5suC,MAAO,iBAAmB+0V,GAE1C,CAUA,SAAS8+4B,GAAQh2mC,EAAKk3N,GAGpB,OAFAy34B,EAAY3umC,GAEJk3N,GACN,KAAKo34B,EAAMx8+B,GACT,OAAO5xO,EAAG+1tC,UAAUj2mC,GAEtB,KAAKsumC,EAAME,IACT,OAAOtutC,EAAGg2tC,WAAWl2mC,GAEvB,QACE,MAAM,IAAI79H,MAAO,iBAAmB+0V,GAE1C,CAUA,SAAS1mL,GAAWxwC,EAAKk3N,GAGvB,OAFAy34B,EAAY3umC,GAEJk3N,GACN,KAAKo34B,EAAMvwvC,EACT,OAAOmiC,EAAGi2tC,YAAYn2mC,GAExB,KAAKsumC,EAAMC,GACT,OAAOrutC,EAAGk2tC,aAAap2mC,GAEzB,QACE,MAAM,IAAI79H,MAAO,iBAAmB+0V,GAE1C,CAYA,SAASm/4B,GAAYr2mC,GACnB2umC,EAAY3umC,GAEZ,IAAIzjH,EAAM2ztC,EAAShwtC,EAAGm2tC,YAAYr2mC,IAC9BovmC,EAAQ7ytC,EAAI,GACZwytC,EAAQxytC,EAAI,GAEhB,OAAKwytC,EAKEA,EAAQvxvC,KAAK6yF,IAAI,EAAG,IAAM++pC,EAJxBA,CAKX,CASA,SAASkH,KACP,IAAIpysC,EAAQhkB,EAAGq2tC,iBAEX3kkC,EAAW2tjC,EAAMpp+B,QAAQq3+B,EAAatpsC,GAE1ChkB,EAAGo2tC,eAAe1kkC,GAClB,IAAI/2D,EAAM21nC,EAAoB5+jC,EAAU1tI,GAIxC,OAFAq7rC,EAAMjp+B,MAAM1kF,GAEL/2D,CACT,CAQA,SAAS27nC,GAAmBx2mC,GAC1B2umC,EAAY3umC,GACZ,IAAI97F,EAAQhkB,EAAGu2tC,qBAEX7kkC,EAAW2tjC,EAAMpp+B,QAAQq3+B,EAAatpsC,GAE1ChkB,EAAGs2tC,mBAAmBx2mC,EAAK4xC,GAC3B,IAAI/2D,EAAM21nC,EAAoB5+jC,EAAU1tI,GAIxC,OAFAq7rC,EAAMjp+B,MAAM1kF,GAEL/2D,CACT,CAQA,SAASm1nC,GAAWp9xB,GAClB,OAAOA,EAAMp1d,KAAKsmC,GAAK,GACzB,CAQA,SAAS8stC,GAAWt45B,GAClB,OAAa,IAANA,EAAY96V,KAAKsmC,EAC1B,mBCx8aA,OAKA,SAAUjnC,EAAQiD,EAAU42vC,EAAYhutC,GACtC,aAEF,IA+FI5tC,EA/FA67vC,EAAkB,CAAC,GAAI,SAAU,MAAO,KAAM,KAAM,KACpDC,EAAe92vC,EAASmE,cAAc,OAEtC4yvC,EAAgB,WAEhBj5sC,EAAQpgD,KAAKogD,MACb+iE,EAAMnjH,KAAKmjH,IACXv6F,EAAMD,KAAKC,IASf,SAAS0wuC,EAAkBjrvC,EAAIkgB,EAAS+b,GACpC,OAAOtnB,WAAWu2uC,EAAOlrvC,EAAIi8B,GAAU/b,EAC3C,CAWA,SAASiruC,EAAenltC,EAAKhmC,EAAIi8B,GAC7B,QAAI1tC,MAAMkS,QAAQulC,KACd8quB,EAAK9quB,EAAK/J,EAAQj8B,GAAKi8B,IAChB,EAGf,CAQA,SAAS60uB,EAAK90jB,EAAKvrN,EAAUwrC,GACzB,IAAIvsC,EAEJ,GAAKssN,EAIL,GAAIA,EAAIhoM,QACJgoM,EAAIhoM,QAAQvjB,EAAUwrC,QACnB,GAAI+/K,EAAI7sN,SAAW0tC,EAEtB,IADAntC,EAAI,EACGA,EAAIssN,EAAI7sN,QACXsB,EAAS/B,KAAKutC,EAAS+/K,EAAItsN,GAAIA,EAAGssN,GAClCtsN,SAGJ,IAAKA,KAAKssN,EACNA,EAAIvtN,eAAeiB,IAAMe,EAAS/B,KAAKutC,EAAS+/K,EAAItsN,GAAIA,EAAGssN,EAGvE,CASA,SAASoviC,EAAU7ruC,EAAQ/lB,EAAMqnB,GAC7B,IAAIwquC,EAAqB,sBAAwB7xvC,EAAO,KAAOqnB,EAAU,SACzE,OAAO,WACH,IAAI5yB,EAAI,IAAIqoB,MAAM,mBACdmrB,EAAQxzC,GAAKA,EAAEwzC,MAAQxzC,EAAEwzC,MAAMlmC,QAAQ,kBAAmB,IACzDA,QAAQ,cAAe,IACvBA,QAAQ,6BAA8B,kBAAoB,sBAE3D4d,EAAMnoB,EAAOmlB,UAAYnlB,EAAOmlB,QAAQC,MAAQplB,EAAOmlB,QAAQgD,KAInE,OAHIA,GACAA,EAAIzqB,KAAKsC,EAAOmlB,QAASk1uC,EAAoB5ptC,GAE1CliB,EAAOlwB,MAAMP,KAAMI,UAC9B,CACJ,CAWID,EADyB,mBAAlBb,OAAOa,OACL,SAAgB2P,GACrB,GAAIA,IAAWi+B,GAAwB,OAAXj+B,EACxB,MAAM,IAAIjQ,UAAU,8CAIxB,IADA,IAAIupE,EAAS9pE,OAAOwQ,GACXkN,EAAQ,EAAGA,EAAQ5c,UAAUC,OAAQ2c,IAAS,CACnD,IAAInV,EAASzH,UAAU4c,GACvB,GAAInV,IAAWkmC,GAAwB,OAAXlmC,EACxB,IAAK,IAAI20vC,KAAW30vC,EACZA,EAAOlI,eAAe68vC,KACtBpzrC,EAAOozrC,GAAW30vC,EAAO20vC,GAIzC,CACA,OAAOpzrC,CACX,EAES9pE,OAAOa,OAWpB,IAAIkpZ,EAASiz2B,GAAU,SAAgBtzmC,EAAMx0I,EAAKssP,GAG9C,IAFA,IAAIxtP,EAAOhU,OAAOgU,KAAKkB,GACnB5T,EAAI,EACDA,EAAI0S,EAAKjT,UACPygQ,GAAUA,GAAS93G,EAAK11I,EAAK1S,MAAQmtC,KACtCi7G,EAAK11I,EAAK1S,IAAM4T,EAAIlB,EAAK1S,KAE7BA,IAEJ,OAAOooJ,CACX,GAAG,SAAU,iBAST83G,EAAQw7/B,GAAU,SAAetzmC,EAAMx0I,GACvC,OAAO60Y,EAAOrgQ,EAAMx0I,GAAK,EAC7B,GAAG,QAAS,iBAQZ,SAASqjW,EAAQ3tR,EAAO7jC,EAAM7d,GAC1B,IACIi0tC,EADAC,EAAQr2sC,EAAK3mD,WAGjB+8vC,EAASvyqC,EAAMxqF,UAAYJ,OAAOY,OAAOw8vC,IAClCz8vC,YAAciqF,EACrBuyqC,EAAO/z4B,OAASg04B,EAEZl0tC,GACAroC,EAAOs8vC,EAAQj0tC,EAEvB,CAQA,SAAS4ztC,EAAOlrvC,EAAIi8B,GAChB,OAAO,WACH,OAAOj8B,EAAG3Q,MAAM4sC,EAAS/sC,UAC7B,CACJ,CASA,SAASu8vC,EAASj/kC,EAAKrmI,GACnB,cAAWqmI,GAAOw+kC,EACPx+kC,EAAIn9K,MAAM82C,GAAOA,EAAK,IAAkBtJ,EAAWsJ,GAEvDqmI,CACX,CAQA,SAASk/kC,EAAYt+xB,EAAMC,GACvB,OAAQD,IAASvwb,EAAawwb,EAAOD,CACzC,CAQA,SAAS/ub,EAAkBz/B,EAAQ8gE,EAAO5gB,GACtCgytB,EAAK66e,EAASjsrC,IAAQ,SAASrkE,GAC3BuD,EAAO6c,iBAAiBpgB,EAAMyjD,GAAS,EAC3C,GACJ,CAQA,SAASm3B,EAAqBr3E,EAAQ8gE,EAAO5gB,GACzCgytB,EAAK66e,EAASjsrC,IAAQ,SAASrkE,GAC3BuD,EAAOuZ,oBAAoB9c,EAAMyjD,GAAS,EAC9C,GACJ,CASA,SAASwuJ,EAAUn1H,EAAMgI,GACrB,KAAOhI,GAAM,CACT,GAAIA,GAAQgI,EACR,OAAO,EAEXhI,EAAOA,EAAK3nD,UAChB,CACA,OAAO,CACX,CAQA,SAASo7tC,EAAMnmrC,EAAKjwC,GAChB,OAAOiwC,EAAIn2E,QAAQkmC,IAAS,CAChC,CAOA,SAASm2tC,EAASlmrC,GACd,OAAOA,EAAItkD,OAAOztB,MAAM,OAC5B,CASA,SAASm4vC,EAAQvovC,EAAKkyB,EAAMs2tC,GACxB,GAAIxovC,EAAIhU,UAAYw8vC,EAChB,OAAOxovC,EAAIhU,QAAQkmC,GAGnB,IADA,IAAI9lC,EAAI,EACDA,EAAI4T,EAAInU,QAAQ,CACnB,GAAK28vC,GAAaxovC,EAAI5T,GAAGo8vC,IAAct2tC,IAAWs2tC,GAAaxovC,EAAI5T,KAAO8lC,EACtE,OAAO9lC,EAEXA,GACJ,CACA,OAAQ,CAEhB,CAOA,SAASitH,EAAQq/F,GACb,OAAOztN,MAAMC,UAAUqC,MAAMnC,KAAKstN,EAAK,EAC3C,CASA,SAAS+viC,EAAYzovC,EAAKqQ,EAAK0nB,GAK3B,IAJA,IAAIilE,EAAU,GACV90F,EAAS,GACT9b,EAAI,EAEDA,EAAI4T,EAAInU,QAAQ,CACnB,IAAIq9K,EAAM74J,EAAMrQ,EAAI5T,GAAGikB,GAAOrQ,EAAI5T,GAC9Bm8vC,EAAQrgvC,EAAQghK,GAAO,GACvBlsE,EAAQ3vG,KAAK2S,EAAI5T,IAErB8b,EAAO9b,GAAK88K,EACZ98K,GACJ,CAYA,OAVI2rC,IAIIilE,EAHC3sF,EAGS2sF,EAAQjlE,MAAK,SAAyBvrC,EAAGsC,GAC/C,OAAOtC,EAAE6jB,GAAOvhB,EAAEuhB,EACtB,IAJU2sF,EAAQjlE,QAQnBilE,CACX,CAQA,SAAS86nC,EAASp/gC,EAAK1zK,GAKnB,IAJA,IAAIjnB,EAAQi6H,EACR0wmC,EAAY1jtC,EAAS,GAAGoX,cAAgBpX,EAASz3C,MAAM,GAEvDnB,EAAI,EACDA,EAAIo7vC,EAAgB37vC,QAAQ,CAI/B,IAFAmsJ,GADAj6H,EAASypuC,EAAgBp7vC,IACP2xB,EAAS2quC,EAAY1jtC,KAE3B0zK,EACR,OAAO1gE,EAEX5rJ,GACJ,CACA,OAAOmtC,CACX,CAMA,IAAIovtC,EAAY,EAUhB,SAASC,EAAoBrxqC,GACzB,IAAIrlC,EAAMqlC,EAAQoC,eAAiBpC,EACnC,OAAQrlC,EAAI+uW,aAAe/uW,EAAIzyC,cAAgB/R,CACnD,CAEA,IAEIm7vC,EAAiB,iBAAkBn7vC,EACnCo7vC,EAAyBhxB,EAASpquC,EAAQ,kBAAoB6rC,EAC9DwvtC,EAAqBF,GAJN,wCAIoChyvC,KAAKguB,UAAUC,WAElEkkuC,EAAmB,QAEnBC,EAAmB,QAGnBC,EAAmB,GAEnBC,EAAc,EAEdC,EAAY,EACZC,EAAe,EAEfC,EAAiB,EACjBC,EAAiB,EACjBC,EAAkB,EAClBC,EAAe,EACfC,EAAiB,GAEjBC,EAAuBJ,EAAiBC,EACxCI,EAAqBH,EAAeC,EACpCG,EAAgBF,EAAuBC,EAEvCE,EAAW,CAAC,IAAK,KACjBC,GAAkB,CAAC,UAAW,WASlC,SAASC,GAAMC,EAASv1uC,GACpB,IAAI9mB,EAAOpC,KACXA,KAAKy+vC,QAAUA,EACfz+vC,KAAKkpB,SAAWA,EAChBlpB,KAAK+rF,QAAU0yqC,EAAQ1yqC,QACvB/rF,KAAK8P,OAAS2uvC,EAAQt1uC,QAAQu1uC,YAI9B1+vC,KAAK2+vC,WAAa,SAAS7/X,GACnB69X,EAAS8B,EAAQt1uC,QAAQnG,OAAQ,CAACy7uC,KAClCr8vC,EAAK4tD,QAAQ8u0B,EAErB,EAEA9+3B,KAAK0wD,MAET,CA0DA,SAASkusC,GAAaH,EAAS7wtC,EAAW6iB,GACtC,IAAIousC,EAAcpusC,EAAMqusC,SAASz+vC,OAC7B0+vC,EAAqBtusC,EAAMuusC,gBAAgB3+vC,OAC3C+w+B,EAAWxj8B,EAAY+vtC,GAAgBkB,EAAcE,GAAuB,EAC5EE,EAAWrxtC,GAAagwtC,EAAYC,IAAkBgB,EAAcE,GAAuB,EAE/FtusC,EAAM2g7B,UAAYA,EAClB3g7B,EAAMwusC,UAAYA,EAEd7tR,IACAqtR,EAAQprsC,QAAU,CAAC,GAKvB5C,EAAM7iB,UAAYA,EAiBtB,SAA0B6wtC,EAAShusC,GAC/B,IAAI4C,EAAUorsC,EAAQprsC,QAClByrsC,EAAWrusC,EAAMqusC,SACjBI,EAAiBJ,EAASz+vC,OAGzBgzD,EAAQgsC,aACThsC,EAAQgsC,WAAa8/pC,GAAqB1usC,IAI1CyusC,EAAiB,IAAM7rsC,EAAQ+rsC,cAC/B/rsC,EAAQ+rsC,cAAgBD,GAAqB1usC,GACnB,IAAnByusC,IACP7rsC,EAAQ+rsC,eAAgB,GAG5B,IAAI//pC,EAAahsC,EAAQgsC,WACrB+/pC,EAAgB/rsC,EAAQ+rsC,cACxBj9oC,EAAei9oC,EAAgBA,EAAcnguC,OAASogE,EAAWpgE,OAEjEA,EAASwxB,EAAMxxB,OAASmB,GAAU0+tC,GACtCrusC,EAAMjM,UAAY/4B,IAClBglC,EAAMk2D,UAAYl2D,EAAMjM,UAAY66C,EAAW76C,UAE/CiM,EAAMk+K,MAAQ4L,GAASp4H,EAAcljF,GACrCwxB,EAAMw4F,SAAW0wwB,GAAYx3yB,EAAcljF,GA0B/C,SAAwBo0B,EAAS5C,GAC7B,IAAIxxB,EAASwxB,EAAMxxB,OACfkjB,EAASkR,EAAQgssC,aAAe,CAAC,EACjCC,EAAYjssC,EAAQissC,WAAa,CAAC,EAClCC,EAAYlssC,EAAQkssC,WAAa,CAAC,EAElC9usC,EAAM7iB,YAAc+vtC,GAAe4B,EAAU3xtC,YAAcgwtC,IAC3D0B,EAAYjssC,EAAQissC,UAAY,CAC5Br7vC,EAAGs7vC,EAAUn5oC,QAAU,EACvBpjH,EAAGu8vC,EAAU51oC,QAAU,GAG3BxnE,EAASkR,EAAQgssC,YAAc,CAC3Bp7vC,EAAGg7B,EAAOh7B,EACVjB,EAAGi8B,EAAOj8B,IAIlBytD,EAAM21D,OAASk5oC,EAAUr7vC,GAAKg7B,EAAOh7B,EAAIk+C,EAAOl+C,GAChDwsD,EAAMk5D,OAAS21oC,EAAUt8vC,GAAKi8B,EAAOj8B,EAAIm/C,EAAOn/C,EACpD,CA5CIw8vC,CAAenssC,EAAS5C,GACxBA,EAAMgvsC,gBAAkB5loC,GAAappE,EAAM21D,OAAQ31D,EAAMk5D,QAEzD,IAuNcnjF,EAAOC,EAvNjBi5tC,EAAkBC,GAAYlvsC,EAAMk2D,UAAWl2D,EAAM21D,OAAQ31D,EAAMk5D,QACvEl5D,EAAMmvsC,iBAAmBF,EAAgBz7vC,EACzCwsD,EAAMovsC,iBAAmBH,EAAgB18vC,EACzCytD,EAAMivsC,gBAAmB15oC,EAAI05oC,EAAgBz7vC,GAAK+hH,EAAI05oC,EAAgB18vC,GAAM08vC,EAAgBz7vC,EAAIy7vC,EAAgB18vC,EAEhHytD,EAAMqxC,MAAQs9pC,GAkNA54tC,EAlNyB44tC,EAAcN,SAmN9CnlW,IADclz3B,EAlN0Cq4tC,GAmNxC,GAAIr4tC,EAAI,GAAI83tC,IAAmB5kW,GAAYnz3B,EAAM,GAAIA,EAAM,GAAI+3tC,KAnNX,EAC3E9tsC,EAAM81D,SAAW64oC,EAsMrB,SAAqB54tC,EAAOC,GACxB,OAAO8zM,GAAS9zM,EAAI,GAAIA,EAAI,GAAI83tC,IAAmBhkhC,GAAS/zM,EAAM,GAAIA,EAAM,GAAI+3tC,GACpF,CAxMqCzh6B,CAAYsi6B,EAAcN,SAAUA,GAAY,EAEjFrusC,EAAMqvsC,YAAezssC,EAAQkssC,UAAsC9usC,EAAMqusC,SAASz+vC,OAC9EgzD,EAAQkssC,UAAUO,YAAervsC,EAAMqusC,SAASz+vC,OAASgzD,EAAQkssC,UAAUO,YADtCrvsC,EAAMqusC,SAASz+vC,OAwC5D,SAAkCgzD,EAAS5C,GACvC,IAEI00D,EAAUE,EAAWC,EAAWqI,EAFhChpG,EAAO0uC,EAAQ0ssC,cAAgBtvsC,EAC/Bk2D,EAAYl2D,EAAMjM,UAAY7/B,EAAK6/B,UAGvC,GAAIiM,EAAM7iB,WAAaiwtC,IAAiBl3oC,EAAY+2oC,GAAoB/4uC,EAAKwgG,WAAap3E,GAAY,CAClG,IAAIq4E,EAAS31D,EAAM21D,OAASzhG,EAAKyhG,OAC7BuD,EAASl5D,EAAMk5D,OAAShlG,EAAKglG,OAE7B1mH,EAAI08vC,GAAYh5oC,EAAWP,EAAQuD,GACvCtE,EAAYpiH,EAAEgB,EACdqhH,EAAYriH,EAAED,EACdmiH,EAAYa,EAAI/iH,EAAEgB,GAAK+hH,EAAI/iH,EAAED,GAAMC,EAAEgB,EAAIhB,EAAED,EAC3C2qH,EAAYkM,GAAazT,EAAQuD,GAEjCt2D,EAAQ0ssC,aAAetvsC,CAC3B,MAEI00D,EAAWxgG,EAAKwgG,SAChBE,EAAY1gG,EAAK0gG,UACjBC,EAAY3gG,EAAK2gG,UACjBqI,EAAYhpG,EAAKgpG,UAGrBl9D,EAAM00D,SAAWA,EACjB10D,EAAM40D,UAAYA,EAClB50D,EAAM60D,UAAYA,EAClB70D,EAAMk9D,UAAYA,CACtB,CAjEIqyoC,CAAyB3ssC,EAAS5C,GAGlC,IAAI3gD,EAAS2uvC,EAAQ1yqC,QACjByyH,EAAU/tJ,EAAMiyD,SAAS5yG,OAAQA,KACjCA,EAAS2gD,EAAMiyD,SAAS5yG,QAE5B2gD,EAAM3gD,OAASA,CACnB,CAhEImwvC,CAAiBxB,EAAShusC,GAG1BgusC,EAAQhk1B,KAAK,eAAgBhqX,GAE7BgusC,EAAQ1tT,UAAUtg5B,GAClBgusC,EAAQprsC,QAAQkssC,UAAY9usC,CAChC,CAyHA,SAAS0usC,GAAqB1usC,GAK1B,IAFA,IAAIqusC,EAAW,GACXl+vC,EAAI,EACDA,EAAI6vD,EAAMqusC,SAASz+vC,QACtBy+vC,EAASl+vC,GAAK,CACVkzF,QAAS7wC,EAAMwN,EAAMqusC,SAASl+vC,GAAGkzF,SACjCC,QAAS9wC,EAAMwN,EAAMqusC,SAASl+vC,GAAGmzF,UAErCnzF,IAGJ,MAAO,CACH4jD,UAAW/4B,IACXqzuC,SAAUA,EACV7/tC,OAAQmB,GAAU0+tC,GAClB14oC,OAAQ31D,EAAM21D,OACduD,OAAQl5D,EAAMk5D,OAEtB,CAOA,SAASvpF,GAAU0+tC,GACf,IAAII,EAAiBJ,EAASz+vC,OAG9B,GAAuB,IAAnB6+vC,EACA,MAAO,CACHj7vC,EAAGg/C,EAAM67sC,EAAS,GAAGhrqC,SACrB9wF,EAAGigD,EAAM67sC,EAAS,GAAG/qqC,UAK7B,IADA,IAAI9vF,EAAI,EAAGjB,EAAI,EAAGpC,EAAI,EACfA,EAAIs+vC,GACPj7vC,GAAK66vC,EAASl+vC,GAAGkzF,QACjB9wF,GAAK87vC,EAASl+vC,GAAGmzF,QACjBnzF,IAGJ,MAAO,CACHqD,EAAGg/C,EAAMh/C,EAAIi7vC,GACbl8vC,EAAGigD,EAAMjgD,EAAIk8vC,GAErB,CASA,SAASS,GAAYh5oC,EAAW1iH,EAAGjB,GAC/B,MAAO,CACHiB,EAAGA,EAAI0iH,GAAa,EACpB3jH,EAAGA,EAAI2jH,GAAa,EAE5B,CAQA,SAASkT,GAAa51H,EAAGjB,GACrB,OAAIiB,IAAMjB,EACC86vC,EAGP93oC,EAAI/hH,IAAM+hH,EAAIhjH,GACPiB,EAAI,EAAI85vC,EAAiBC,EAE7Bh7vC,EAAI,EAAIi7vC,EAAeC,CAClC,CASA,SAASvkW,GAAYt5qB,EAAI0jB,EAAI92N,GACpBA,IACDA,EAAQqxtC,GAEZ,IAAIr6vC,EAAI8/P,EAAG92N,EAAM,IAAMozM,EAAGpzM,EAAM,IAC5BjqC,EAAI+gQ,EAAG92N,EAAM,IAAMozM,EAAGpzM,EAAM,IAEhC,OAAOpqC,KAAK4yF,KAAMxxF,EAAIA,EAAMjB,EAAIA,EACpC,CASA,SAASu3O,GAAS8F,EAAI0jB,EAAI92N,GACjBA,IACDA,EAAQqxtC,GAEZ,IAAIr6vC,EAAI8/P,EAAG92N,EAAM,IAAMozM,EAAGpzM,EAAM,IAC5BjqC,EAAI+gQ,EAAG92N,EAAM,IAAMozM,EAAGpzM,EAAM,IAChC,OAA0B,IAAnBpqC,KAAK0xH,MAAMvxH,EAAGiB,GAAWpB,KAAKsmC,EACzC,CA3TAq1tC,GAAM9+vC,UAAY,CAKdswD,QAAS,WAAa,EAKtBU,KAAM,WACF1wD,KAAKkgwC,MAAQ3wtC,EAAkBvvC,KAAK+rF,QAAS/rF,KAAKkgwC,KAAMlgwC,KAAK2+vC,YAC7D3+vC,KAAKmgwC,UAAY5wtC,EAAkBvvC,KAAK8P,OAAQ9P,KAAKmgwC,SAAUngwC,KAAK2+vC,YACpE3+vC,KAAKogwC,OAAS7wtC,EAAkB6ttC,EAAoBp9vC,KAAK+rF,SAAU/rF,KAAKogwC,MAAOpgwC,KAAK2+vC,WACxF,EAKAvgnC,QAAS,WACLp+I,KAAKkgwC,MAAQ/4qC,EAAqBnnF,KAAK+rF,QAAS/rF,KAAKkgwC,KAAMlgwC,KAAK2+vC,YAChE3+vC,KAAKmgwC,UAAYh5qC,EAAqBnnF,KAAK8P,OAAQ9P,KAAKmgwC,SAAUngwC,KAAK2+vC,YACvE3+vC,KAAKogwC,OAASj5qC,EAAqBi2qC,EAAoBp9vC,KAAK+rF,SAAU/rF,KAAKogwC,MAAOpgwC,KAAK2+vC,WAC3F,GA2TJ,IAAI0B,GAAkB,CAClB7yS,UAAWmwS,EACXt3hC,UA/Xa,EAgYbunvB,QAASgwS,GAGT0C,GAAuB,YACvBC,GAAsB,oBAO1B,SAASC,KACLxgwC,KAAKkgwC,KAAOI,GACZtgwC,KAAKogwC,MAAQG,GAEbvgwC,KAAKygwC,SAAU,EAEfjC,GAAMj+vC,MAAMP,KAAMI,UACtB,CAEAy3W,EAAQ2o5B,GAAYhC,GAAO,CAKvBxusC,QAAS,SAAmB8u0B,GACxB,IAAIlx1B,EAAYyytC,GAAgBvhY,EAAGvy3B,MAG/BqhC,EAAY+vtC,GAA6B,IAAd7+X,EAAGpnhB,SAC9B13W,KAAKygwC,SAAU,GA9ZV,EAiaL7ytC,GAAuC,IAAbkx1B,EAAG4B,QAC7B9y1B,EAAYgwtC,GAIX59vC,KAAKygwC,UAIN7ytC,EAAYgwtC,IACZ59vC,KAAKygwC,SAAU,GAGnBzgwC,KAAKkpB,SAASlpB,KAAKy+vC,QAAS7wtC,EAAW,CACnCkxtC,SAAU,CAAChgY,GACXkgY,gBAAiB,CAAClgY,GAClBkuF,YAAaywS,EACb/6oC,SAAUo8wB,IAElB,IAGJ,IAAI4hY,GAAoB,CACpB9+mC,YAAa+7mC,EACb77mC,YAzba,EA0bb2q0B,UAAWmxS,EACX+C,cAAe9C,EACfnxS,WAAYmxS,GAIZ+C,GAAyB,CACzB,EAAGpD,EACH,EAzciB,MA0cjB,EAAGC,EACH,EAzcoB,UA4cpBoD,GAAyB,cACzBC,GAAwB,sCAa5B,SAASC,KACL/gwC,KAAKkgwC,KAAOW,GACZ7gwC,KAAKogwC,MAAQU,GAEbtC,GAAMj+vC,MAAMP,KAAMI,WAElBJ,KAAK+uM,MAAS/uM,KAAKy+vC,QAAQprsC,QAAQomF,cAAgB,EACvD,CAjBIv3I,EAAO8+vC,iBAAmB9+vC,EAAO++vC,eACjCJ,GAAyB,gBACzBC,GAAwB,6CAiB5Bjp5B,EAAQkp5B,GAAmBvC,GAAO,CAK9BxusC,QAAS,SAAmB8u0B,GACxB,IAAI/vrB,EAAQ/uM,KAAK+uM,MACbmyjC,GAAgB,EAEhBC,EAAsBriY,EAAGvy3B,KAAKgD,cAAc9C,QAAQ,KAAM,IAC1DmhC,EAAY8ytC,GAAkBS,GAC9Bn0S,EAAc4zS,GAAuB9hY,EAAGkuF,cAAgBluF,EAAGkuF,YAE3Do0S,EAAWp0S,GAAewwS,EAG1BnuX,EAAa0tX,EAAQhujC,EAAO+vrB,EAAGuiY,UAAW,aAG1CzztC,EAAY+vtC,IAA8B,IAAd7+X,EAAGpnhB,QAAgB0p5B,GAC3C/xX,EAAa,IACbtgsB,EAAMltM,KAAKi93B,GACXuQ,EAAatgsB,EAAM1uM,OAAS,GAEzButC,GAAagwtC,EAAYC,KAChCqD,GAAgB,GAIhB7xX,EAAa,IAKjBtgsB,EAAMsgsB,GAAcvQ,EAEpB9+3B,KAAKkpB,SAASlpB,KAAKy+vC,QAAS7wtC,EAAW,CACnCkxtC,SAAU/vjC,EACViwjC,gBAAiB,CAAClgY,GAClBkuF,YAAaA,EACbtq2B,SAAUo8wB,IAGVoiY,GAEAnyjC,EAAM9rL,OAAOos3B,EAAY,GAEjC,IAGJ,IAAIiyX,GAAyB,CACzBrzS,WAAY0vS,EACZxvS,UAlhBa,EAmhBbC,SAAUwvS,EACV2D,YAAa1D,GAWjB,SAAS2D,KACLxhwC,KAAKmgwC,SATwB,aAU7BngwC,KAAKogwC,MATwB,4CAU7BpgwC,KAAKqwd,SAAU,EAEfmuyB,GAAMj+vC,MAAMP,KAAMI,UACtB,CAqCA,SAASqhwC,GAAuB3iY,EAAIvy3B,GAChC,IAAInH,EAAMyoH,EAAQixwB,EAAGz2U,SACjBhkc,EAAUwJ,EAAQixwB,EAAGjmT,gBAMzB,OAJItskB,GAAQqxvC,EAAYC,KACpBz4vC,EAAM63vC,EAAY73vC,EAAIpD,OAAOqiH,GAAU,cAAc,IAGlD,CAACj/G,EAAKi/G,EACjB,CA5CAwzP,EAAQ2p5B,GAAkBhD,GAAO,CAC7BxusC,QAAS,SAAmB8u0B,GACxB,IAAIvy3B,EAAO+0vC,GAAuBxiY,EAAGvy3B,MAOrC,GAJIA,IAASoxvC,IACT39vC,KAAKqwd,SAAU,GAGdrwd,KAAKqwd,QAAV,CAIA,IAAIg4F,EAAUo5sB,GAAuB7hwC,KAAKI,KAAM8+3B,EAAIvy3B,GAGhDA,GAAQqxvC,EAAYC,IAAiBx1sB,EAAQ,GAAGhojB,OAASgojB,EAAQ,GAAGhojB,QAAW,IAC/EL,KAAKqwd,SAAU,GAGnBrwd,KAAKkpB,SAASlpB,KAAKy+vC,QAASlyvC,EAAM,CAC9BuyvC,SAAUz2sB,EAAQ,GAClB22sB,gBAAiB32sB,EAAQ,GACzB2ka,YAAawwS,EACb96oC,SAAUo8wB,GAbd,CAeJ,IAoBJ,IAAI4iY,GAAkB,CAClBzzS,WAAY0vS,EACZxvS,UAvlBa,EAwlBbC,SAAUwvS,EACV2D,YAAa1D,GAGb8D,GAAsB,4CAO1B,SAASC,KACL5hwC,KAAKmgwC,SAAWwB,GAChB3hwC,KAAK6hwC,UAAY,CAAC,EAElBrD,GAAMj+vC,MAAMP,KAAMI,UACtB,CAyBA,SAAS0hwC,GAAWhjY,EAAIvy3B,GACpB,IAAIw1vC,EAAal0oC,EAAQixwB,EAAGz2U,SACxBw5sB,EAAY7hwC,KAAK6hwC,UAGrB,GAAIt1vC,GAtoBS,EAsoBDoxvC,IAAmD,IAAtBoE,EAAW1hwC,OAEhD,OADAwhwC,EAAUE,EAAW,GAAGpqrC,aAAc,EAC/B,CAACoqrC,EAAYA,GAGxB,IAAInhwC,EACA4v8B,EACA33X,EAAiBhrd,EAAQixwB,EAAGjmT,gBAC5BmprB,EAAuB,GACvBlyvC,EAAS9P,KAAK8P,OAQlB,GALA0g8B,EAAgBuxT,EAAWl1uC,QAAO,SAASmyK,GACvC,OAAOwf,EAAUxf,EAAMlvL,OAAQA,EACnC,IAGIvD,IAASoxvC,EAET,IADA/8vC,EAAI,EACGA,EAAI4v8B,EAAcnw8B,QACrBwhwC,EAAUrxT,EAAc5v8B,GAAG+2E,aAAc,EACzC/2E,IAMR,IADAA,EAAI,EACGA,EAAIi4kB,EAAex4kB,QAClBwhwC,EAAUhprB,EAAej4kB,GAAG+2E,aAC5BqqrC,EAAqBngwC,KAAKg3kB,EAAej4kB,IAIzC2L,GAAQqxvC,EAAYC,WACbgE,EAAUhprB,EAAej4kB,GAAG+2E,YAEvC/2E,IAGJ,OAAKohwC,EAAqB3hwC,OAInB,CAEH48vC,EAAYzsT,EAAcxu8B,OAAOggwC,GAAuB,cAAc,GACtEA,QAPJ,CASJ,CA5EAnq5B,EAAQ+p5B,GAAYpD,GAAO,CACvBxusC,QAAS,SAAoB8u0B,GACzB,IAAIvy3B,EAAOm1vC,GAAgB5iY,EAAGvy3B,MAC1B87iB,EAAUy5sB,GAAWliwC,KAAKI,KAAM8+3B,EAAIvy3B,GACnC87iB,GAILrojB,KAAKkpB,SAASlpB,KAAKy+vC,QAASlyvC,EAAM,CAC9BuyvC,SAAUz2sB,EAAQ,GAClB22sB,gBAAiB32sB,EAAQ,GACzB2ka,YAAawwS,EACb96oC,SAAUo8wB,GAElB,IA0EJ,IAAImjY,GAAgB,KAGpB,SAASC,KACL1D,GAAMj+vC,MAAMP,KAAMI,WAElB,IAAI4vD,EAAUossC,EAAOp8vC,KAAKgwD,QAAShwD,MACnCA,KAAKg/L,MAAQ,IAAI4ikC,GAAW5hwC,KAAKy+vC,QAASzusC,GAC1ChwD,KAAK2s9B,MAAQ,IAAI6zS,GAAWxgwC,KAAKy+vC,QAASzusC,GAE1ChwD,KAAKmiwC,aAAe,KACpBniwC,KAAKoiwC,YAAc,EACvB,CAoCA,SAASC,GAAcz0tC,EAAWmzZ,GAC1BnzZ,EAAY+vtC,GACZ39vC,KAAKmiwC,aAAeph0B,EAAUi+zB,gBAAgB,GAAGrnrC,WACjD2qrC,GAAa1iwC,KAAKI,KAAM+gc,IACjBnzZ,GAAagwtC,EAAYC,IAChCyE,GAAa1iwC,KAAKI,KAAM+gc,EAEhC,CAEA,SAASuh0B,GAAavh0B,GAClB,IAAI/hQ,EAAQ+hQ,EAAUi+zB,gBAAgB,GAEtC,GAAIhgkC,EAAMrnH,aAAe33E,KAAKmiwC,aAAc,CACxC,IAAI1id,EAAY,CAACx7yB,EAAG+6L,EAAMlrG,QAAS9wF,EAAGg8L,EAAMjrG,SAC5C/zF,KAAKoiwC,YAAYvgwC,KAAK49yB,GACtB,IAAI8id,EAAMviwC,KAAKoiwC,YAOfv8uC,YANsB,WAClB,IAAIjlB,EAAI2hwC,EAAI/hwC,QAAQi/yB,GAChB7+yB,GAAK,GACL2hwC,EAAIt/uC,OAAOriB,EAAG,EAEtB,GAC4BqhwC,GAChC,CACJ,CAEA,SAASO,GAAiBzh0B,GAEtB,IADA,IAAI98b,EAAI88b,EAAUr+U,SAAS5uB,QAAS9wF,EAAI+9b,EAAUr+U,SAAS3uB,QAClDnzF,EAAI,EAAGA,EAAIZ,KAAKoiwC,YAAY/hwC,OAAQO,IAAK,CAC9C,IAAIxB,EAAIY,KAAKoiwC,YAAYxhwC,GACrB4zI,EAAK3xI,KAAKmjH,IAAI/hH,EAAI7E,EAAE6E,GAAIowI,EAAKxxI,KAAKmjH,IAAIhjH,EAAI5D,EAAE4D,GAChD,GAAIwxI,GA9ES,IA8EeH,GA9Ef,GA+ET,OAAO,CAEf,CACA,OAAO,CACX,CAtEAwjO,EAAQqq5B,GAAiB1D,GAAO,CAO5BxusC,QAAS,SAAoByusC,EAASgE,EAAYC,GAC9C,IAAItB,EAAWsB,EAAU11S,aAAewwS,EACpCmF,EAAWD,EAAU11S,aAAeywS,EAExC,KAAIkF,GAAWD,EAAUE,oBAAsBF,EAAUE,mBAAmBC,kBAA5E,CAKA,GAAIzB,EACAiB,GAAcziwC,KAAKI,KAAMyiwC,EAAYC,QAClC,GAAIC,GAAWH,GAAiB5iwC,KAAKI,KAAM0iwC,GAC9C,OAGJ1iwC,KAAKkpB,SAASu1uC,EAASgE,EAAYC,EATnC,CAUJ,EAKAtknC,QAAS,WACLp+I,KAAKg/L,MAAM5gD,UACXp+I,KAAK2s9B,MAAMvu0B,SACf,IAyCJ,IAAI0knC,GAAwBx2B,EAAS2vB,EAAa5nvC,MAAO,eACrD0uvC,GAAsBD,KAA0B/0tC,EAGhDi1tC,GAAuB,UACvBC,GAAoB,OACpBC,GAA4B,eAC5BC,GAAoB,OACpBC,GAAqB,QACrBC,GAAqB,QACrBC,GA4IJ,WACI,IAAKP,GACD,OAAO,EAEX,IAAIQ,EAAW,CAAC,EACZC,EAActhwC,EAAOstF,KAAOttF,EAAOstF,IAAI6qZ,SAO3C,MANA,CAAC,OAAQ,eAAgB,QAAS,QAAS,cAAe,QAAQn1d,SAAQ,SAASw4J,GAI/E6llC,EAAS7llC,IAAO8llC,GAActhwC,EAAOstF,IAAI6qZ,SAAS,eAAgB38T,EACtE,IACO6llC,CACX,CAzJuBE,GASvB,SAASC,GAAYjF,EAASt9vC,GAC1BnB,KAAKy+vC,QAAUA,EACfz+vC,KAAKiM,IAAI9K,EACb,CAEAuiwC,GAAYhkwC,UAAY,CAKpBuM,IAAK,SAAS9K,GAENA,GAAS6hwC,KACT7hwC,EAAQnB,KAAK8jK,WAGbi/lC,IAAuB/iwC,KAAKy+vC,QAAQ1yqC,QAAQ13E,OAASivvC,GAAiBniwC,KACtEnB,KAAKy+vC,QAAQ1yqC,QAAQ13E,MAAMyuvC,IAAyB3hwC,GAExDnB,KAAKuxa,QAAUpwa,EAAMoO,cAAc8iB,MACvC,EAKAk8C,OAAQ,WACJvuE,KAAKiM,IAAIjM,KAAKy+vC,QAAQt1uC,QAAQoxH,YAClC,EAMAupB,QAAS,WACL,IAAIytQ,EAAU,GAMd,OALAywW,EAAKhixB,KAAKy+vC,QAAQttT,aAAa,SAASwyT,GAChChH,EAASgH,EAAWx6uC,QAAQnG,OAAQ,CAAC2gvC,MACrCpy1B,EAAUA,EAAQvva,OAAO2hwC,EAAWC,kBAE5C,IA8DR,SAA2Bry1B,GAEvB,GAAIur1B,EAAMvr1B,EAAS4x1B,IACf,OAAOA,GAGX,IAAIU,EAAU/G,EAAMvr1B,EAAS6x1B,IACzBU,EAAUhH,EAAMvr1B,EAAS8x1B,IAM7B,OAAIQ,GAAWC,EACJX,GAIPU,GAAWC,EACJD,EAAUT,GAAqBC,GAItCvG,EAAMvr1B,EAAS2x1B,IACRA,GAGJD,EACX,CAzFec,CAAkBxy1B,EAAQ1ka,KAAK,KAC1C,EAMAm3vC,gBAAiB,SAASvzsC,GACtB,IAAIiyD,EAAWjyD,EAAMiyD,SACjBiL,EAAYl9D,EAAMgvsC,gBAGtB,GAAIz/vC,KAAKy+vC,QAAQprsC,QAAQ4wsC,UACrBvhpC,EAASkD,qBADb,CAKA,IAAI2rT,EAAUvxa,KAAKuxa,QACf2y1B,EAAUpH,EAAMvr1B,EAAS4x1B,MAAuBG,GAAiBH,IACjEW,EAAUhH,EAAMvr1B,EAAS8x1B,MAAwBC,GAAiBD,IAClEQ,EAAU/G,EAAMvr1B,EAAS6x1B,MAAwBE,GAAiBF,IAEtE,GAAIc,EAAS,CAGT,IAAIC,EAAyC,IAA1B1zsC,EAAMqusC,SAASz+vC,OAC9B+jwC,EAAgB3zsC,EAAMw4F,SAAW,EACjCo7mC,EAAiB5zsC,EAAMk2D,UAAY,IAEvC,GAAIw9oC,GAAgBC,GAAiBC,EACjC,MAER,CAEA,IAAIR,IAAWC,EAKf,OAAII,GACCJ,GAAWn2oC,EAAYwwoC,GACvB0F,GAAWl2oC,EAAYywoC,EACjBp+vC,KAAKskwC,WAAW5hpC,QAH3B,CAxBA,CA6BJ,EAMA4hpC,WAAY,SAAS5hpC,GACjB1iH,KAAKy+vC,QAAQprsC,QAAQ4wsC,WAAY,EACjCvhpC,EAASkD,gBACb,GAgFJ,IAAI2+oC,GAAiB,EAMjB5xmB,GAAe,GAQnB,SAAS6xmB,GAAWr7uC,GAChBnpB,KAAKmpB,QAAUhpB,EAAO,CAAC,EAAGH,KAAKgxU,SAAU7nT,GAAW,CAAC,GAErDnpB,KAAKurB,GApgCE4xuC,IAsgCPn9vC,KAAKy+vC,QAAU,KAGfz+vC,KAAKmpB,QAAQnG,OAAS45uC,EAAY58vC,KAAKmpB,QAAQnG,QAAQ,GAEvDhjB,KAAK2L,MAAQ44vC,GAEbvkwC,KAAKykwC,aAAe,CAAC,EACrBzkwC,KAAK0kwC,YAAc,EACvB,CAoOA,SAASC,GAASh5vC,GACd,OA5PkB,GA4PdA,EACO,SA/PG,EAgQHA,EACA,MAlQK,EAmQLA,EACA,OArQG,EAsQHA,EACA,QAEJ,EACX,CAOA,SAASi5vC,GAAaj3oC,GAClB,OAAIA,GAAauwoC,EACN,OACAvwoC,GAAaswoC,EACb,KACAtwoC,GAAaowoC,EACb,OACApwoC,GAAaqwoC,EACb,QAEJ,EACX,CAQA,SAAS6G,GAA6BC,EAAiBnB,GACnD,IAAIlF,EAAUkF,EAAWlF,QACzB,OAAIA,EACOA,EAAQt7vC,IAAI2hwC,GAEhBA,CACX,CAOA,SAASC,KACLP,GAAWjkwC,MAAMP,KAAMI,UAC3B,CA4DA,SAAS4kwC,KACLD,GAAexkwC,MAAMP,KAAMI,WAE3BJ,KAAKilwC,GAAK,KACVjlwC,KAAKklwC,GAAK,IACd,CA2EA,SAASC,KACLJ,GAAexkwC,MAAMP,KAAMI,UAC/B,CAqCA,SAASglwC,KACLZ,GAAWjkwC,MAAMP,KAAMI,WAEvBJ,KAAK+zsC,OAAS,KACd/zsC,KAAKqlwC,OAAS,IAClB,CAkEA,SAASC,KACLP,GAAexkwC,MAAMP,KAAMI,UAC/B,CA6BA,SAASmlwC,KACLR,GAAexkwC,MAAMP,KAAMI,UAC/B,CA0DA,SAASolwC,KACLhB,GAAWjkwC,MAAMP,KAAMI,WAIvBJ,KAAKylwC,OAAQ,EACbzlwC,KAAK0lwC,SAAU,EAEf1lwC,KAAK+zsC,OAAS,KACd/zsC,KAAKqlwC,OAAS,KACdrlwC,KAAKupD,MAAQ,CACjB,CAoGA,SAASo8sC,GAAO55qC,EAAS5iE,GAGrB,OAFAA,EAAUA,GAAW,CAAC,GACdgo7B,YAAcyrT,EAAYzzuC,EAAQgo7B,YAAaw0T,GAAO307B,SAAS407B,QAChE,IAAIC,GAAQ95qC,EAAS5iE,EAChC,CAgIA,SAAS08uC,GAAQ95qC,EAAS5iE,GACtBnpB,KAAKmpB,QAAUhpB,EAAO,CAAC,EAAGwlwC,GAAO307B,SAAU7nT,GAAW,CAAC,GAEvDnpB,KAAKmpB,QAAQu1uC,YAAc1+vC,KAAKmpB,QAAQu1uC,aAAe3yqC,EAEvD/rF,KAAK+sH,SAAW,CAAC,EACjB/sH,KAAKqzD,QAAU,CAAC,EAChBrzD,KAAKmx8B,YAAc,GACnBnx8B,KAAK8lwC,YAAc,CAAC,EAEpB9lwC,KAAK+rF,QAAUA,EACf/rF,KAAKywD,MArwDE,IAqwD0BzwD,KAlxDRmpB,QAAQ48uC,aAItBzI,EACAyD,GACAxD,EACAqE,GACCvE,EAGD6E,GAFA1B,KAywDsBxgwC,KArwDN4+vC,IAswD3B5+vC,KAAKu6I,YAAc,IAAImpnC,GAAY1jwC,KAAMA,KAAKmpB,QAAQoxH,aAEtDyrnC,GAAehmwC,MAAM,GAErBgixB,EAAKhixB,KAAKmpB,QAAQgo7B,aAAa,SAAS/v5B,GACpC,IAAIuitC,EAAa3jwC,KAAKmlB,IAAI,IAAKi8B,EAAK,GAAIA,EAAK,KAC7CA,EAAK,IAAMuitC,EAAWsC,cAAc7ktC,EAAK,IACzCA,EAAK,IAAMuitC,EAAWuC,eAAe9ktC,EAAK,GAC9C,GAAGphD,KACP,CA2PA,SAASgmwC,GAAevH,EAASt5uC,GAC7B,IAIIqnI,EAJAzgE,EAAU0yqC,EAAQ1yqC,QACjBA,EAAQ13E,QAIb2twB,EAAKy8e,EAAQt1uC,QAAQg9uC,UAAU,SAAShlwC,EAAOuJ,GAC3C8hJ,EAAO8/kC,EAASvgpC,EAAQ13E,MAAO3J,GAC3Bya,GACAs5uC,EAAQqH,YAAYt5mC,GAAQzgE,EAAQ13E,MAAMm4I,GAC1CzgE,EAAQ13E,MAAMm4I,GAAQrrJ,GAEtB4qF,EAAQ13E,MAAMm4I,GAAQiymC,EAAQqH,YAAYt5mC,IAAS,EAE3D,IACKrnI,IACDs5uC,EAAQqH,YAAc,CAAC,GAE/B,CAhoCAtB,GAAW9kwC,UAAY,CAKnBsxU,SAAU,CAAC,EAOX/kU,IAAK,SAASkd,GAKV,OAJAhpB,EAAOH,KAAKmpB,QAASA,GAGrBnpB,KAAKy+vC,SAAWz+vC,KAAKy+vC,QAAQlknC,YAAYhsE,SAClCvuE,IACX,EAOAimwC,cAAe,SAASnB,GACpB,GAAIzI,EAAeyI,EAAiB,gBAAiB9kwC,MACjD,OAAOA,KAGX,IAAIykwC,EAAezkwC,KAAKykwC,aAMxB,OAJKA,GADLK,EAAkBD,GAA6BC,EAAiB9kwC,OAC9BurB,MAC9Bk5uC,EAAaK,EAAgBv5uC,IAAMu5uC,EACnCA,EAAgBmB,cAAcjmwC,OAE3BA,IACX,EAOAomwC,kBAAmB,SAAStB,GACxB,OAAIzI,EAAeyI,EAAiB,oBAAqB9kwC,QAIzD8kwC,EAAkBD,GAA6BC,EAAiB9kwC,aACzDA,KAAKykwC,aAAaK,EAAgBv5uC,KAJ9BvrB,IAMf,EAOAkmwC,eAAgB,SAASpB,GACrB,GAAIzI,EAAeyI,EAAiB,iBAAkB9kwC,MAClD,OAAOA,KAGX,IAAI0kwC,EAAc1kwC,KAAK0kwC,YAMvB,OAJ+C,IAA3C3H,EAAQ2H,EADZI,EAAkBD,GAA6BC,EAAiB9kwC,SAE5D0kwC,EAAY7iwC,KAAKijwC,GACjBA,EAAgBoB,eAAelmwC,OAE5BA,IACX,EAOAqmwC,mBAAoB,SAASvB,GACzB,GAAIzI,EAAeyI,EAAiB,qBAAsB9kwC,MACtD,OAAOA,KAGX8kwC,EAAkBD,GAA6BC,EAAiB9kwC,MAChE,IAAIgd,EAAQ+/uC,EAAQ/8vC,KAAK0kwC,YAAaI,GAItC,OAHI9nvC,GAAS,GACThd,KAAK0kwC,YAAYzhvC,OAAOjG,EAAO,GAE5Bhd,IACX,EAMAsmwC,mBAAoB,WAChB,OAAOtmwC,KAAK0kwC,YAAYrkwC,OAAS,CACrC,EAOAkmwC,iBAAkB,SAASzB,GACvB,QAAS9kwC,KAAKykwC,aAAaK,EAAgBv5uC,GAC/C,EAOAkvZ,KAAM,SAAShqX,GACX,IAAIruD,EAAOpC,KACP2L,EAAQ3L,KAAK2L,MAEjB,SAAS8ua,EAAKh8Y,GACVr8B,EAAKq8vC,QAAQhk1B,KAAKh8Y,EAAOgyB,EAC7B,CAGI9kD,EArJM,GAsJN8ua,EAAKr4a,EAAK+mB,QAAQsV,MAAQkmuC,GAASh5vC,IAGvC8ua,EAAKr4a,EAAK+mB,QAAQsV,OAEdgyB,EAAM+1sC,iBACN/r1B,EAAKhqX,EAAM+1sC,iBAIX76vC,GAhKM,GAiKN8ua,EAAKr4a,EAAK+mB,QAAQsV,MAAQkmuC,GAASh5vC,GAE3C,EAQA86vC,QAAS,SAASh2sC,GACd,GAAIzwD,KAAK0mwC,UACL,OAAO1mwC,KAAKy6a,KAAKhqX,GAGrBzwD,KAAK2L,MAAQgnpB,EACjB,EAMA+zmB,QAAS,WAEL,IADA,IAAI9lwC,EAAI,EACDA,EAAIZ,KAAK0kwC,YAAYrkwC,QAAQ,CAChC,KAAML,KAAK0kwC,YAAY9jwC,GAAG+K,OAASgnpB,GAAe4xmB,KAC9C,OAAO,EAEX3jwC,GACJ,CACA,OAAO,CACX,EAMAmw8B,UAAW,SAAS2xT,GAGhB,IAAIiE,EAAiBxmwC,EAAO,CAAC,EAAGuiwC,GAGhC,IAAK/F,EAAS38vC,KAAKmpB,QAAQnG,OAAQ,CAAChjB,KAAM2mwC,IAGtC,OAFA3mwC,KAAKihE,aACLjhE,KAAK2L,MAAQgnpB,IAKA,GAAb3ypB,KAAK2L,QACL3L,KAAK2L,MAAQ44vC,IAGjBvkwC,KAAK2L,MAAQ3L,KAAKiG,QAAQ0gwC,GAIT,GAAb3mwC,KAAK2L,OACL3L,KAAKymwC,QAAQE,EAErB,EASA1gwC,QAAS,SAASy8vC,GAAa,EAO/BkB,eAAgB,WAAa,EAO7B3isC,MAAO,WAAa,GA8DxB42S,EAAQkt5B,GAAgBP,GAAY,CAKhCxz7B,SAAU,CAKN8t7B,SAAU,GASd8H,SAAU,SAASn2sC,GACf,IAAIo2sC,EAAiB7mwC,KAAKmpB,QAAQ21uC,SAClC,OAA0B,IAAnB+H,GAAwBp2sC,EAAMqusC,SAASz+vC,SAAWwmwC,CAC7D,EAQA5gwC,QAAS,SAASwqD,GACd,IAAI9kD,EAAQ3L,KAAK2L,MACbiiC,EAAY6iB,EAAM7iB,UAElBk5tC,EAAuB,EAARn7vC,EACfmnE,EAAU9yE,KAAK4mwC,SAASn2sC,GAG5B,OAAIq2sC,IAAiBl5tC,EAAYiwtC,IAAiB/qrC,GAvVpC,GAwVHnnE,EACAm7vC,GAAgBh0rC,EACnBllC,EAAYgwtC,EA5VV,EA6VKjyvC,EA/VL,EAgWOA,EA/VL,EAkWDA,EAnWD,EAqWHgnpB,EACX,IAgBJ96S,EAAQmt5B,GAAeD,GAAgB,CAKnC/z7B,SAAU,CACNvyS,MAAO,MACPukB,UAAW,GACX87sC,SAAU,EACVnxoC,UAAW0woC,GAGfuF,eAAgB,WACZ,IAAIj2oC,EAAY3tH,KAAKmpB,QAAQwkG,UACzB4jT,EAAU,GAOd,OANI5jT,EAAYwwoC,GACZ5s1B,EAAQ1va,KAAKwhwC,IAEb11oC,EAAYywoC,GACZ7s1B,EAAQ1va,KAAKuhwC,IAEV7x1B,CACX,EAEAw11B,cAAe,SAASt2sC,GACpB,IAAItnC,EAAUnpB,KAAKmpB,QACf69uC,GAAW,EACX/9mC,EAAWx4F,EAAMw4F,SACjBt7B,EAAYl9D,EAAMk9D,UAClB1pH,EAAIwsD,EAAM21D,OACVpjH,EAAIytD,EAAMk5D,OAed,OAZMgE,EAAYxkG,EAAQwkG,YAClBxkG,EAAQwkG,UAAYwwoC,GACpBxwoC,EAAmB,IAAN1pH,EAAW65vC,EAAkB75vC,EAAI,EAAK85vC,EAAiBC,EACpEgJ,EAAW/iwC,GAAKjE,KAAKilwC,GACrBh8mC,EAAWpmJ,KAAKmjH,IAAIv1D,EAAM21D,UAE1BuH,EAAmB,IAAN3qH,EAAW86vC,EAAkB96vC,EAAI,EAAKi7vC,EAAeC,EAClE8I,EAAWhkwC,GAAKhD,KAAKklwC,GACrBj8mC,EAAWpmJ,KAAKmjH,IAAIv1D,EAAMk5D,UAGlCl5D,EAAMk9D,UAAYA,EACXq5oC,GAAY/9mC,EAAW9/H,EAAQ65B,WAAa2qE,EAAYxkG,EAAQwkG,SAC3E,EAEAi5oC,SAAU,SAASn2sC,GACf,OAAOs0sC,GAAerlwC,UAAUknwC,SAAShnwC,KAAKI,KAAMywD,KAva1C,EAwaLzwD,KAAK2L,SAxaA,EAwa0B3L,KAAK2L,QAAwB3L,KAAK+mwC,cAAct2sC,GACxF,EAEAgqX,KAAM,SAAShqX,GAEXzwD,KAAKilwC,GAAKx0sC,EAAM21D,OAChBpmH,KAAKklwC,GAAKz0sC,EAAMk5D,OAEhB,IAAIgE,EAAYi3oC,GAAan0sC,EAAMk9D,WAE/BA,IACAl9D,EAAM+1sC,gBAAkBxmwC,KAAKmpB,QAAQsV,MAAQkvF,GAEjD3tH,KAAK0oX,OAAO+xD,KAAK76a,KAAKI,KAAMywD,EAChC,IAaJonT,EAAQst5B,GAAiBJ,GAAgB,CAKrC/z7B,SAAU,CACNvyS,MAAO,QACPukB,UAAW,EACX87sC,SAAU,GAGd8E,eAAgB,WACZ,MAAO,CAACT,GACZ,EAEAyD,SAAU,SAASn2sC,GACf,OAAOzwD,KAAK0oX,OAAOk+4B,SAAShnwC,KAAKI,KAAMywD,KAClC5tD,KAAKmjH,IAAIv1D,EAAMqxC,MAAQ,GAAK9hG,KAAKmpB,QAAQ65B,WApdpC,EAodiDhjD,KAAK2L,MACpE,EAEA8ua,KAAM,SAAShqX,GACX,GAAoB,IAAhBA,EAAMqxC,MAAa,CACnB,IAAImlqC,EAAQx2sC,EAAMqxC,MAAQ,EAAI,KAAO,MACrCrxC,EAAM+1sC,gBAAkBxmwC,KAAKmpB,QAAQsV,MAAQwouC,CACjD,CACAjnwC,KAAK0oX,OAAO+xD,KAAK76a,KAAKI,KAAMywD,EAChC,IAgBJonT,EAAQut5B,GAAiBZ,GAAY,CAKjCxz7B,SAAU,CACNvyS,MAAO,QACPqguC,SAAU,EACVj5sC,KAAM,IACN7C,UAAW,GAGf4gtC,eAAgB,WACZ,MAAO,CAACX,GACZ,EAEAh9vC,QAAS,SAASwqD,GACd,IAAItnC,EAAUnpB,KAAKmpB,QACf+9uC,EAAgBz2sC,EAAMqusC,SAASz+vC,SAAW8oB,EAAQ21uC,SAClDqI,EAAgB12sC,EAAMw4F,SAAW9/H,EAAQ65B,UACzCoktC,EAAY32sC,EAAMk2D,UAAYx9F,EAAQ08B,KAM1C,GAJA7lD,KAAKqlwC,OAAS50sC,GAIT02sC,IAAkBD,GAAkBz2sC,EAAM7iB,WAAagwtC,EAAYC,KAAkBuJ,EACtFpnwC,KAAKihE,aACF,GAAIxQ,EAAM7iB,UAAY+vtC,EACzB39vC,KAAKihE,QACLjhE,KAAK+zsC,OAASooD,GAAkB,WAC5Bn8vC,KAAK2L,MA1gBH,EA2gBF3L,KAAKymwC,SACT,GAAGt9uC,EAAQ08B,KAAM7lD,WACd,GAAIywD,EAAM7iB,UAAYgwtC,EACzB,OA9gBM,EAghBV,OAAOjrmB,EACX,EAEA1xlB,MAAO,WACHv0C,aAAa1sB,KAAK+zsC,OACtB,EAEAt5xB,KAAM,SAAShqX,GAvhBD,IAwhBNzwD,KAAK2L,QAIL8kD,GAAUA,EAAM7iB,UAAYgwtC,EAC5B59vC,KAAKy+vC,QAAQhk1B,KAAKz6a,KAAKmpB,QAAQsV,MAAQ,KAAMgyB,IAE7CzwD,KAAKqlwC,OAAO7gtC,UAAY/4B,IACxBzrB,KAAKy+vC,QAAQhk1B,KAAKz6a,KAAKmpB,QAAQsV,MAAOz+B,KAAKqlwC,SAEnD,IAaJxt5B,EAAQyt5B,GAAkBP,GAAgB,CAKtC/z7B,SAAU,CACNvyS,MAAO,SACPukB,UAAW,EACX87sC,SAAU,GAGd8E,eAAgB,WACZ,MAAO,CAACT,GACZ,EAEAyD,SAAU,SAASn2sC,GACf,OAAOzwD,KAAK0oX,OAAOk+4B,SAAShnwC,KAAKI,KAAMywD,KAClC5tD,KAAKmjH,IAAIv1D,EAAM81D,UAAYvmH,KAAKmpB,QAAQ65B,WAlkBnC,EAkkBgDhjD,KAAK2L,MACnE,IAaJksW,EAAQ0t5B,GAAiBR,GAAgB,CAKrC/z7B,SAAU,CACNvyS,MAAO,QACPukB,UAAW,GACXmiE,SAAU,GACVwI,UAAWwwoC,EAAuBC,EAClCU,SAAU,GAGd8E,eAAgB,WACZ,OAAOoB,GAActlwC,UAAUkkwC,eAAehkwC,KAAKI,KACvD,EAEA4mwC,SAAU,SAASn2sC,GACf,IACI00D,EADAwI,EAAY3tH,KAAKmpB,QAAQwkG,UAW7B,OARIA,GAAawwoC,EAAuBC,GACpCj5oC,EAAW10D,EAAMivsC,gBACV/xoC,EAAYwwoC,EACnBh5oC,EAAW10D,EAAMmvsC,iBACVjyoC,EAAYywoC,IACnBj5oC,EAAW10D,EAAMovsC,kBAGd7/vC,KAAK0oX,OAAOk+4B,SAAShnwC,KAAKI,KAAMywD,IACnCk9D,EAAYl9D,EAAMgvsC,iBAClBhvsC,EAAMw4F,SAAWjpJ,KAAKmpB,QAAQ65B,WAC9ByN,EAAMqvsC,aAAe9/vC,KAAKmpB,QAAQ21uC,UAClC94oC,EAAIb,GAAYnlH,KAAKmpB,QAAQg8F,UAAY10D,EAAM7iB,UAAYgwtC,CACnE,EAEAnj1B,KAAM,SAAShqX,GACX,IAAIk9D,EAAYi3oC,GAAan0sC,EAAMgvsC,iBAC/B9xoC,GACA3tH,KAAKy+vC,QAAQhk1B,KAAKz6a,KAAKmpB,QAAQsV,MAAQkvF,EAAWl9D,GAGtDzwD,KAAKy+vC,QAAQhk1B,KAAKz6a,KAAKmpB,QAAQsV,MAAOgyB,EAC1C,IA0BJonT,EAAQ2t5B,GAAehB,GAAY,CAK/Bxz7B,SAAU,CACNvyS,MAAO,MACPqguC,SAAU,EACVuI,KAAM,EACNnlyB,SAAU,IACVr8a,KAAM,IACN7C,UAAW,EACXsktC,aAAc,IAGlB1D,eAAgB,WACZ,MAAO,CAACV,GACZ,EAEAj9vC,QAAS,SAASwqD,GACd,IAAItnC,EAAUnpB,KAAKmpB,QAEf+9uC,EAAgBz2sC,EAAMqusC,SAASz+vC,SAAW8oB,EAAQ21uC,SAClDqI,EAAgB12sC,EAAMw4F,SAAW9/H,EAAQ65B,UACzCuktC,EAAiB92sC,EAAMk2D,UAAYx9F,EAAQ08B,KAI/C,GAFA7lD,KAAKihE,QAEAxQ,EAAM7iB,UAAY+vtC,GAAgC,IAAf39vC,KAAKupD,MACzC,OAAOvpD,KAAKwnwC,cAKhB,GAAIL,GAAiBI,GAAkBL,EAAe,CAClD,GAAIz2sC,EAAM7iB,WAAagwtC,EACnB,OAAO59vC,KAAKwnwC,cAGhB,IAAIC,GAAgBznwC,KAAKylwC,OAASh1sC,EAAMjM,UAAYxkD,KAAKylwC,MAAQt8uC,EAAQ+4c,SACrEwlyB,GAAiB1nwC,KAAK0lwC,SAAW/rW,GAAY355B,KAAK0lwC,QAASj1sC,EAAMxxB,QAAU9V,EAAQm+uC,aAgBvF,GAdAtnwC,KAAKylwC,MAAQh1sC,EAAMjM,UACnBxkD,KAAK0lwC,QAAUj1sC,EAAMxxB,OAEhByouC,GAAkBD,EAGnBznwC,KAAKupD,OAAS,EAFdvpD,KAAKupD,MAAQ,EAKjBvpD,KAAKqlwC,OAAS50sC,EAKG,GADFzwD,KAAKupD,MAAQpgC,EAAQk+uC,KAIhC,OAAKrnwC,KAAKsmwC,sBAGNtmwC,KAAK+zsC,OAASooD,GAAkB,WAC5Bn8vC,KAAK2L,MAltBX,EAmtBM3L,KAAKymwC,SACT,GAAGt9uC,EAAQ+4c,SAAUlie,MAttBvB,GAEA,CAwtBV,CACA,OAAO2ypB,EACX,EAEA60mB,YAAa,WAIT,OAHAxnwC,KAAK+zsC,OAASooD,GAAkB,WAC5Bn8vC,KAAK2L,MAAQgnpB,EACjB,GAAG3ypB,KAAKmpB,QAAQ+4c,SAAUlie,MACnB2ypB,EACX,EAEA1xlB,MAAO,WACHv0C,aAAa1sB,KAAK+zsC,OACtB,EAEAt5xB,KAAM,WAvuBQ,GAwuBNz6a,KAAK2L,QACL3L,KAAKqlwC,OAAO59hC,SAAWznO,KAAKupD,MAC5BvpD,KAAKy+vC,QAAQhk1B,KAAKz6a,KAAKmpB,QAAQsV,MAAOz+B,KAAKqlwC,QAEnD,IAkBJM,GAAOxinC,QAAU,QAMjBwinC,GAAO307B,SAAW,CAOdt6O,WAAW,EAQX6jD,YAAayonC,GAMbhgvC,QAAQ,EASR07uC,YAAa,KAObqH,WAAY,KAOZH,OAAQ,CAEJ,CAACN,GAAkB,CAACtivC,QAAQ,IAC5B,CAACmivC,GAAiB,CAACnivC,QAAQ,GAAQ,CAAC,WACpC,CAACuivC,GAAiB,CAAC53oC,UAAWwwoC,IAC9B,CAAC6G,GAAe,CAACr3oC,UAAWwwoC,GAAuB,CAAC,UACpD,CAACqH,IACD,CAACA,GAAe,CAAC/muC,MAAO,YAAa4ouC,KAAM,GAAI,CAAC,QAChD,CAACjC,KAQLe,SAAU,CAMN/rlB,WAAY,OAOZutlB,YAAa,OASbC,aAAc,OAOdC,eAAgB,OAOhBC,SAAU,OAQVC,kBAAmB,kBAoC3BlC,GAAQnmwC,UAAY,CAMhBuM,IAAK,SAASkd,GAaV,OAZAhpB,EAAOH,KAAKmpB,QAASA,GAGjBA,EAAQoxH,aACRv6I,KAAKu6I,YAAYhsE,SAEjBplD,EAAQu1uC,cAER1+vC,KAAKywD,MAAM2tF,UACXp+I,KAAKywD,MAAM3gD,OAASqZ,EAAQu1uC,YAC5B1+vC,KAAKywD,MAAMC,QAER1wD,IACX,EAQA+vC,KAAM,SAASuwC,GACXtgF,KAAKqzD,QAAQ9vC,QAAU+8D,EA5Db,EADP,CA8DP,EAQAyw3B,UAAW,SAAS2xT,GAChB,IAAIrvsC,EAAUrzD,KAAKqzD,QACnB,IAAIA,EAAQ9vC,QAAZ,CAOA,IAAIogvC,EAFJ3jwC,KAAKu6I,YAAYypnC,gBAAgBtB,GAGjC,IAAIvxT,EAAcnx8B,KAAKmx8B,YAKnB62T,EAAgB30sC,EAAQ20sC,gBAIvBA,GAAkBA,GAz8Bb,EAy8B8BA,EAAcr8vC,SAClDq8vC,EAAgB30sC,EAAQ20sC,cAAgB,MAI5C,IADA,IAAIpnwC,EAAI,EACDA,EAAIuw8B,EAAY9w8B,QACnBsjwC,EAAaxyT,EAAYvw8B,GA9FnB,IAsGFyyD,EAAQ9vC,SACHykvC,GAAiBrE,GAAcqE,IAChCrE,EAAW4C,iBAAiByB,GAGhCrE,EAAW1isC,QAFX0isC,EAAW5yT,UAAU2xT,IAOpBsF,GAAoC,GAAnBrE,EAAWh4vC,QAC7Bq8vC,EAAgB30sC,EAAQ20sC,cAAgBrE,GAE5C/iwC,GA1CJ,CA4CJ,EAOAuC,IAAK,SAASwgwC,GACV,GAAIA,aAAsBa,GACtB,OAAOb,EAIX,IADA,IAAIxyT,EAAcnx8B,KAAKmx8B,YACdvw8B,EAAI,EAAGA,EAAIuw8B,EAAY9w8B,OAAQO,IACpC,GAAIuw8B,EAAYvw8B,GAAGuoB,QAAQsV,OAASkluC,EAChC,OAAOxyT,EAAYvw8B,GAG3B,OAAO,IACX,EAQAukB,IAAK,SAASw+uC,GACV,GAAItH,EAAesH,EAAY,MAAO3jwC,MAClC,OAAOA,KAIX,IAAI0h+B,EAAW1h+B,KAAKmD,IAAIwgwC,EAAWx6uC,QAAQsV,OAS3C,OARIij8B,GACA1h+B,KAAK6yB,OAAO6u8B,GAGhB1h+B,KAAKmx8B,YAAYtv8B,KAAK8hwC,GACtBA,EAAWlF,QAAUz+vC,KAErBA,KAAKu6I,YAAYhsE,SACVo1rC,CACX,EAOA9wuC,OAAQ,SAAS8wuC,GACb,GAAItH,EAAesH,EAAY,SAAU3jwC,MACrC,OAAOA,KAMX,GAHA2jwC,EAAa3jwC,KAAKmD,IAAIwgwC,GAGN,CACZ,IAAIxyT,EAAcnx8B,KAAKmx8B,YACnBn07B,EAAQ+/uC,EAAQ5rT,EAAawyT,IAElB,IAAX3mvC,IACAm07B,EAAYlu7B,OAAOjG,EAAO,GAC1Bhd,KAAKu6I,YAAYhsE,SAEzB,CAEA,OAAOvuE,IACX,EAQA4Q,GAAI,SAASimF,EAAQ7mC,GACjB,GAAI6mC,IAAW9oD,GAGXiiB,IAAYjiB,EAAhB,CAIA,IAAIg/E,EAAW/sH,KAAK+sH,SAKpB,OAJAi1pB,EAAK66e,EAAShmqC,IAAS,SAASp4D,GAC5BsuF,EAAStuF,GAASsuF,EAAStuF,IAAU,GACrCsuF,EAAStuF,GAAO58B,KAAKmuD,EACzB,IACOhwD,IAPP,CAQJ,EAQAguC,IAAK,SAAS6oD,EAAQ7mC,GAClB,GAAI6mC,IAAW9oD,EAAf,CAIA,IAAIg/E,EAAW/sH,KAAK+sH,SAQpB,OAPAi1pB,EAAK66e,EAAShmqC,IAAS,SAASp4D,GACvBuxB,EAGD+8D,EAAStuF,IAAUsuF,EAAStuF,GAAOxb,OAAO85uC,EAAQhwoC,EAAStuF,GAAQuxB,GAAU,UAFtE+8D,EAAStuF,EAIxB,IACOz+B,IAVP,CAWJ,EAOAy6a,KAAM,SAASh8Y,EAAOjvB,GAEdxP,KAAKmpB,QAAQutE,WAkEzB,SAAyBj4D,EAAOjvB,GAC5B,IAAIim8B,EAAetw8B,EAASykB,YAAY,SACxC6r7B,EAAa5r7B,UAAU4U,GAAO,GAAM,GACpCg36B,EAAawyT,QAAUz4vC,EACvBA,EAAKM,OAAOoa,cAAcur7B,EAC9B,CAtEYyyT,CAAgBzpuC,EAAOjvB,GAI3B,IAAIu9G,EAAW/sH,KAAK+sH,SAAStuF,IAAUz+B,KAAK+sH,SAAStuF,GAAO18B,QAC5D,GAAKgrH,GAAaA,EAAS1sH,OAA3B,CAIAmP,EAAKjD,KAAOkyB,EACZjvB,EAAKo2G,eAAiB,WAClBp2G,EAAKkzG,SAASkD,gBAClB,EAGA,IADA,IAAIhlH,EAAI,EACDA,EAAImsH,EAAS1sH,QAChB0sH,EAASnsH,GAAG4O,GACZ5O,GAVJ,CAYJ,EAMAw9I,QAAS,WACLp+I,KAAK+rF,SAAWi6qC,GAAehmwC,MAAM,GAErCA,KAAK+sH,SAAW,CAAC,EACjB/sH,KAAKqzD,QAAU,CAAC,EAChBrzD,KAAKywD,MAAM2tF,UACXp+I,KAAK+rF,QAAU,IACnB,GAwCJ5rF,EAAOwlwC,GAAQ,CACXhI,YAAaA,EACbwK,WAtoEa,EAuoEbvK,UAAWA,EACXC,aAAcA,EAEd0G,eAAgBA,GAChB6D,YAlrCc,EAmrCdC,cAlrCgB,EAmrChBC,YAlrCc,EAmrCdC,iBAnrCc,EAorCdC,gBAlrCkB,GAmrClB71mB,aAAcA,GAEdmrmB,eAAgBA,EAChBC,eAAgBA,EAChBC,gBAAiBA,EACjBC,aAAcA,EACdC,eAAgBA,EAChBC,qBAAsBA,EACtBC,mBAAoBA,EACpBC,cAAeA,EAEfwH,QAASA,GACTrH,MAAOA,GACPkF,YAAaA,GAEb9B,WAAYA,GACZpB,WAAYA,GACZO,kBAAmBA,GACnBmB,gBAAiBA,GACjBV,iBAAkBA,GAElBgD,WAAYA,GACZO,eAAgBA,GAChB0D,IAAKjD,GACLkD,IAAK1D,GACL2D,MAAOpD,GACPqD,MAAOzD,GACPzzhB,OAAQ4zhB,GACRuD,MAAOzD,GAEPx0vC,GAAI2+B,EACJvB,IAAKm5C,EACL66rB,KAAMA,EACNlhhB,MAAOA,EACPuoJ,OAAQA,EACRlpZ,OAAQA,EACR03W,QAASA,EACTuk5B,OAAQA,EACR9vB,SAAUA,UAKsB,IAAXpquC,EAAyBA,EAA0B,oBAATE,KAAuBA,KAAO,CAAC,GACvFujwC,OAASA,IAGhB,aACI,OAAOA,EACV,mCAOJ,CA7kFD,CA6kFGzjwC,OAAQiD,uCChlFX,IAAI2jwC,EAAU,EAAQ,OAMlBC,EAAgB,CAClBC,mBAAmB,EACnBC,aAAa,EACbC,cAAc,EACdhvnC,cAAc,EACdkuB,aAAa,EACbkrE,iBAAiB,EACjB61hC,0BAA0B,EAC1BC,0BAA0B,EAC1Bl55B,QAAQ,EACRzjO,WAAW,EACXlgI,MAAM,GAEJ88vC,EAAgB,CAClB3+vC,MAAM,EACNrK,QAAQ,EACRX,WAAW,EACX4pwC,QAAQ,EACR74vC,QAAQ,EACRrQ,WAAW,EACXwM,OAAO,GASL28vC,EAAe,CACjB,UAAY,EACZr/oC,SAAS,EACTgwB,cAAc,EACdkuB,aAAa,EACb37B,WAAW,EACXlgI,MAAM,GAEJi9vC,EAAe,CAAC,EAIpB,SAASC,EAAWp/mC,GAElB,OAAIy+mC,EAAQY,OAAOr/mC,GACVk/mC,EAIFC,EAAan/mC,EAAoB,WAAM0+mC,CAChD,CAXAS,EAAaV,EAAQa,YAhBK,CACxB,UAAY,EACZr7oC,QAAQ,EACR4rB,cAAc,EACdkuB,aAAa,EACb37B,WAAW,GAYb+8nC,EAAaV,EAAQc,MAAQL,EAY7B,IAAIrmwC,EAAiB5D,OAAO4D,eACxByL,EAAsBrP,OAAOqP,oBAC7BlO,EAAwBnB,OAAOmB,sBAC/BgD,EAA2BnE,OAAOmE,yBAClCwX,EAAiB3b,OAAO2b,eACxB4uvC,EAAkBvqwC,OAAOI,UAsC7Bo9B,EAAOr6B,QArCP,SAASqnwC,EAAqBC,EAAiBC,EAAiBC,GAC9D,GAA+B,iBAApBD,EAA8B,CAEvC,GAAIH,EAAiB,CACnB,IAAIK,EAAqBjvvC,EAAe+uvC,GAEpCE,GAAsBA,IAAuBL,GAC/CC,EAAqBC,EAAiBG,EAAoBD,EAE9D,CAEA,IAAI32vC,EAAO3E,EAAoBq7vC,GAE3BvpwC,IACF6S,EAAOA,EAAKtR,OAAOvB,EAAsBupwC,KAM3C,IAHA,IAAIG,EAAgBV,EAAWM,GAC3BK,EAAgBX,EAAWO,GAEtBppwC,EAAI,EAAGA,EAAI0S,EAAKjT,SAAUO,EAAG,CACpC,IAAIikB,EAAMvR,EAAK1S,GAEf,KAAKyowC,EAAcxkvC,IAAUolvC,GAAaA,EAAUplvC,IAAWulvC,GAAiBA,EAAcvlvC,IAAWslvC,GAAiBA,EAActlvC,IAAO,CAC7I,IAAIwmC,EAAa5nD,EAAyBumwC,EAAiBnlvC,GAE3D,IAEE3hB,EAAe6mwC,EAAiBllvC,EAAKwmC,EACvC,CAAE,MAAOlsD,GAAI,CACf,CACF,CACF,CAEA,OAAO4qwC,CACT,eCnGAtnwC,EAAQ4jE,KAAO,SAAUn+C,EAAQi6B,EAAQkotC,EAAMC,EAAMC,GACnD,IAAIprwC,EAAGiE,EACHonwC,EAAiB,EAATD,EAAcD,EAAO,EAC7BG,GAAQ,GAAKD,GAAQ,EACrBE,EAAQD,GAAQ,EAChBE,GAAS,EACT/pwC,EAAIypwC,EAAQE,EAAS,EAAK,EAC1B5nwC,EAAI0nwC,GAAQ,EAAI,EAChBvpwC,EAAIonB,EAAOi6B,EAASvhD,GAOxB,IALAA,GAAK+B,EAELxD,EAAI2B,GAAM,IAAO6pwC,GAAU,EAC3B7pwC,KAAQ6pwC,EACRA,GAASH,EACFG,EAAQ,EAAGxrwC,EAAS,IAAJA,EAAW+oB,EAAOi6B,EAASvhD,GAAIA,GAAK+B,EAAGgowC,GAAS,GAKvE,IAHAvnwC,EAAIjE,GAAM,IAAOwrwC,GAAU,EAC3BxrwC,KAAQwrwC,EACRA,GAASL,EACFK,EAAQ,EAAGvnwC,EAAS,IAAJA,EAAW8kB,EAAOi6B,EAASvhD,GAAIA,GAAK+B,EAAGgowC,GAAS,GAEvE,GAAU,IAANxrwC,EACFA,EAAI,EAAIurwC,MACH,IAAIvrwC,IAAMsrwC,EACf,OAAOrnwC,EAAIw4vB,IAAsB77rB,KAAdj/D,GAAK,EAAI,GAE5BsC,GAAQP,KAAK6yF,IAAI,EAAG40qC,GACpBnrwC,GAAQurwC,CACV,CACA,OAAQ5pwC,GAAK,EAAI,GAAKsC,EAAIP,KAAK6yF,IAAI,EAAGv2F,EAAImrwC,EAC5C,EAEA7nwC,EAAQsR,MAAQ,SAAUmU,EAAQ/mB,EAAOghD,EAAQkotC,EAAMC,EAAMC,GAC3D,IAAIprwC,EAAGiE,EAAGvC,EACN2pwC,EAAiB,EAATD,EAAcD,EAAO,EAC7BG,GAAQ,GAAKD,GAAQ,EACrBE,EAAQD,GAAQ,EAChBv/vC,EAAe,KAATo/vC,EAAcznwC,KAAK6yF,IAAI,GAAI,IAAM7yF,KAAK6yF,IAAI,GAAI,IAAM,EAC1D90F,EAAIypwC,EAAO,EAAKE,EAAS,EACzB5nwC,EAAI0nwC,EAAO,GAAK,EAChBvpwC,EAAIK,EAAQ,GAAgB,IAAVA,GAAe,EAAIA,EAAQ,EAAK,EAAI,EAmC1D,IAjCAA,EAAQ0B,KAAKmjH,IAAI7kH,GAEbmrC,MAAMnrC,IAAUA,IAAU4+D,KAC5B38D,EAAIkpC,MAAMnrC,GAAS,EAAI,EACvBhC,EAAIsrwC,IAEJtrwC,EAAI0D,KAAKyK,MAAMzK,KAAKwnB,IAAIlpB,GAAS0B,KAAKsvN,KAClChxN,GAASN,EAAIgC,KAAK6yF,IAAI,GAAIv2F,IAAM,IAClCA,IACA0B,GAAK,IAGLM,GADEhC,EAAIurwC,GAAS,EACNx/vC,EAAKrK,EAELqK,EAAKrI,KAAK6yF,IAAI,EAAG,EAAIg1qC,IAEpB7pwC,GAAK,IACf1B,IACA0B,GAAK,GAGH1B,EAAIurwC,GAASD,GACfrnwC,EAAI,EACJjE,EAAIsrwC,GACKtrwC,EAAIurwC,GAAS,GACtBtnwC,GAAMjC,EAAQN,EAAK,GAAKgC,KAAK6yF,IAAI,EAAG40qC,GACpCnrwC,GAAQurwC,IAERtnwC,EAAIjC,EAAQ0B,KAAK6yF,IAAI,EAAGg1qC,EAAQ,GAAK7nwC,KAAK6yF,IAAI,EAAG40qC,GACjDnrwC,EAAI,IAIDmrwC,GAAQ,EAAGpivC,EAAOi6B,EAASvhD,GAAS,IAAJwC,EAAUxC,GAAK+B,EAAGS,GAAK,IAAKknwC,GAAQ,GAI3E,IAFAnrwC,EAAKA,GAAKmrwC,EAAQlnwC,EAClBonwC,GAAQF,EACDE,EAAO,EAAGtivC,EAAOi6B,EAASvhD,GAAS,IAAJzB,EAAUyB,GAAK+B,EAAGxD,GAAK,IAAKqrwC,GAAQ,GAE1EtivC,EAAOi6B,EAASvhD,EAAI+B,IAAU,IAAJ7B,CAC5B,8BC9EA,SAAS6pX,EAAmBlsJ,GAAO,GAAIh/N,MAAMkS,QAAQ8sN,GAAM,CAAE,IAAK,IAAI79N,EAAI,EAAGmoW,EAAOtpW,MAAMg/N,EAAIp+N,QAASO,EAAI69N,EAAIp+N,OAAQO,IAAOmoW,EAAKnoW,GAAK69N,EAAI79N,GAAM,OAAOmoW,CAAM,CAAS,OAAOtpW,MAAMse,KAAK0gN,EAAQ,CAJlMn/N,OAAO4D,eAAeT,EAAS,aAAc,CAC3CtB,OAAO,IAuCTsB,EAAA,QAlCkB,SAAqB+M,EAAM9E,EAAMuxP,GACjD,IAAIviC,EAAQlqN,EACRg4P,EAAW98P,GAAQ,aACnB/H,EAAIs5P,GAAa,IAEjBpnO,EAASp1B,MAAMse,KAAK,IAAI4H,IAAI+zM,EAAMhmM,QAAO,SAAU3zB,EAAGZ,GACxD,MAAO,GAAG6C,OAAO2oX,EAAmB5qX,GAAI4qX,EAAmBrrX,OAAOgU,KAAKnU,IACzE,GAAG,MACCyrwC,EAAMlxiC,EAAMrqM,KAAI,SAAU2zG,GAC5B,OAAOnuG,EAAOxF,KAAI,SAAUw7uC,GAC1B,OAAOvwvC,KAAKb,UAA6B,IAAnBupH,EAAI6noC,GAAmB,EAAI7noC,EAAI6noC,IAAc,GACrE,IAAGh+vC,KAAKlK,EACV,IACAiowC,EAAI//uC,QAAQgK,EAAOhoB,KAAKlK,IACxBiowC,EAAMA,EAAI/9vC,KAAK,QAEf,IAAIyjB,EAAO,IAAIvI,KAAK,CAAC6ivC,GAAM,CACzBr+vC,KAAM,6BAGR,GAAI8sB,UAAUyxuC,WACZzxuC,UAAUyxuC,WAAWx6uC,EAAMk3O,OAD7B,CAIA,IAAIm4I,EAAOx6Y,SAASmE,cAAc,KAC9B4mB,EAAMlI,IAAIC,gBAAgBqI,GAC9BqvX,EAAK1kX,KAAO/K,EACZyvX,EAAKt9T,SAAWmlL,EAChBm4I,EAAKtrY,MAAMC,QAAU,OACrBnP,SAAS4rB,KAAKxc,YAAYorY,GAC1BA,EAAKztT,QACL/sF,SAAS4rB,KAAK8L,YAAY8iX,EAR1B,CASF,mBC9BA,IAAIor3B,EAAkB,sBAGlBC,EAAM,IAGNC,EAAY,kBAGZC,EAAS,aAGTC,EAAa,qBAGbC,EAAa,aAGbC,EAAY,cAGZC,EAAe31uC,SAGf41uC,EAA8B,iBAAV,EAAAppwC,GAAsB,EAAAA,GAAU,EAAAA,EAAO7C,SAAWA,QAAU,EAAA6C,EAGhFqpwC,EAA0B,iBAARppwC,MAAoBA,MAAQA,KAAK9C,SAAWA,QAAU8C,KAGxE+tJ,EAAOo7mC,GAAcC,GAAYzowC,SAAS,cAATA,GAUjC0owC,EAPcnswC,OAAOI,UAOQ6E,SAG7BmnwC,EAAY7owC,KAAK8K,IACjBg+vC,EAAY9owC,KAAKgL,IAkBjB4d,EAAM,WACR,OAAO0kI,EAAK3kI,KAAKC,KACnB,EAyQA,SAASw5O,EAAS9jQ,GAChB,IAAIoL,SAAcpL,EAClB,QAASA,IAAkB,UAARoL,GAA4B,YAARA,EACzC,CA2EA,SAAS2iN,EAAS/tN,GAChB,GAAoB,iBAATA,EACT,OAAOA,EAET,GAhCF,SAAkBA,GAChB,MAAuB,iBAATA,GAtBhB,SAAsBA,GACpB,QAASA,GAAyB,iBAATA,CAC3B,CAqBKi4uC,CAAaj4uC,IAAUsqwC,EAAe7rwC,KAAKuB,IAAU8pwC,CAC1D,CA6BMW,CAASzqwC,GACX,OAAO6pwC,EAET,GAAI/lgC,EAAS9jQ,GAAQ,CACnB,IAAI06C,EAAgC,mBAAjB16C,EAAM+H,QAAwB/H,EAAM+H,UAAY/H,EACnEA,EAAQ8jQ,EAASppN,GAAUA,EAAQ,GAAMA,CAC3C,CACA,GAAoB,iBAAT16C,EACT,OAAiB,IAAVA,EAAcA,GAASA,EAEhCA,EAAQA,EAAMsL,QAAQy+vC,EAAQ,IAC9B,IAAIr3/B,EAAWu3/B,EAAW//vC,KAAKlK,GAC/B,OAAQ0yQ,GAAYw3/B,EAAUhgwC,KAAKlK,GAC/BmqwC,EAAanqwC,EAAMY,MAAM,GAAI8xQ,EAAW,EAAI,GAC3Cs3/B,EAAW9/vC,KAAKlK,GAAS6pwC,GAAO7pwC,CACvC,CAEA27B,EAAOr6B,QA9IP,SAAkBs9C,EAAMqC,EAAMj5B,GAC5B,IAAIm5B,GAAU,EACVE,GAAW,EAEf,GAAmB,mBAARzC,EACT,MAAM,IAAIlgD,UAAUkrwC,GAMtB,OAJI9lgC,EAAS97O,KACXm5B,EAAU,YAAan5B,IAAYA,EAAQm5B,QAAUA,EACrDE,EAAW,aAAcr5B,IAAYA,EAAQq5B,SAAWA,GA/K5D,SAAkBzC,EAAMqC,EAAMj5B,GAC5B,IAAI0ivC,EACAC,EACAC,EACAvovC,EACA2tS,EACA668B,EACAC,EAAiB,EACjB3ptC,GAAU,EACV4ptC,GAAS,EACT1ptC,GAAW,EAEf,GAAmB,mBAARzC,EACT,MAAM,IAAIlgD,UAAUkrwC,GAUtB,SAASoB,EAAWtmtC,GAClB,IAAIxO,EAAOw0tC,EACP5p3B,EAAU6p3B,EAKd,OAHAD,EAAWC,OAAW/9tC,EACtBk+tC,EAAiBpmtC,EACjBriC,EAASu8B,EAAKx/C,MAAM0hZ,EAAS5qW,EAE/B,CAmBA,SAAS+0tC,EAAavmtC,GACpB,IAAIwmtC,EAAoBxmtC,EAAOmmtC,EAM/B,YAAyBj+tC,IAAjBi+tC,GAA+BK,GAAqBjqtC,GACzDiqtC,EAAoB,GAAOH,GANJrmtC,EAAOomtC,GAM8BF,CACjE,CAEA,SAASO,IACP,IAAIzmtC,EAAOp6B,IACX,GAAI2gvC,EAAavmtC,GACf,OAAO0mtC,EAAa1mtC,GAGtBsrQ,EAAUtrS,WAAWymvC,EAzBvB,SAAuBzmtC,GACrB,IAEIriC,EAAS4+B,GAFWyD,EAAOmmtC,GAI/B,OAAOE,EAASP,EAAUnovC,EAAQuovC,GAHRlmtC,EAAOomtC,IAGkCzovC,CACrE,CAmBqCgpvC,CAAc3mtC,GACnD,CAEA,SAAS0mtC,EAAa1mtC,GAKpB,OAJAsrQ,OAAUpjR,EAINyU,GAAYqptC,EACPM,EAAWtmtC,IAEpBgmtC,EAAWC,OAAW/9tC,EACfvqB,EACT,CAcA,SAASipvC,IACP,IAAI5mtC,EAAOp6B,IACPihvC,EAAaN,EAAavmtC,GAM9B,GAJAgmtC,EAAWzrwC,UACX0rwC,EAAW9rwC,KACXgswC,EAAenmtC,EAEX6mtC,EAAY,CACd,QAAgB3+tC,IAAZojR,EACF,OAvEN,SAAqBtrQ,GAMnB,OAJAomtC,EAAiBpmtC,EAEjBsrQ,EAAUtrS,WAAWymvC,EAAclqtC,GAE5BE,EAAU6ptC,EAAWtmtC,GAAQriC,CACtC,CAgEampvC,CAAYX,GAErB,GAAIE,EAGF,OADA/68B,EAAUtrS,WAAWymvC,EAAclqtC,GAC5B+ptC,EAAWH,EAEtB,CAIA,YAHgBj+tC,IAAZojR,IACFA,EAAUtrS,WAAWymvC,EAAclqtC,IAE9B5+B,CACT,CAGA,OAxGA4+B,EAAO8sK,EAAS9sK,IAAS,EACrB6iN,EAAS97O,KACXm5B,IAAYn5B,EAAQm5B,QAEpByptC,GADAG,EAAS,YAAa/ivC,GACHuivC,EAAUx8iC,EAAS/lM,EAAQ4ivC,UAAY,EAAG3ptC,GAAQ2ptC,EACrEvptC,EAAW,aAAcr5B,IAAYA,EAAQq5B,SAAWA,GAiG1DiqtC,EAAU5ptC,OAnCV,gBACkB9U,IAAZojR,GACFzkS,aAAaykS,GAEf868B,EAAiB,EACjBJ,EAAWG,EAAeF,EAAW368B,OAAUpjR,CACjD,EA8BA0+tC,EAAUlksC,MA5BV,WACE,YAAmBx6B,IAAZojR,EAAwB3tS,EAAS+ovC,EAAa9gvC,IACvD,EA2BOghvC,CACT,CAyDStsuC,CAAS4f,EAAMqC,EAAM,CAC1B,QAAWE,EACX,QAAWF,EACX,SAAYI,GAEhB,mBCxTA,IAIIjkC,EAJY,EAAQ,MAITquvC,CAHJ,EAAQ,MAGY,YAE/B9vuC,EAAOr6B,QAAU8b,mBCNjB,IAAIsuvC,EAAY,EAAQ,OACpBC,EAAa,EAAQ,OACrBC,EAAU,EAAQ,OAClBC,EAAU,EAAQ,OAClBC,EAAU,EAAQ,OAStB,SAASC,EAAKzwvC,GACZ,IAAIO,GAAS,EACT3c,EAAoB,MAAXoc,EAAkB,EAAIA,EAAQpc,OAG3C,IADAL,KAAKglB,UACIhI,EAAQ3c,GAAQ,CACvB,IAAI2zD,EAAQv3C,EAAQO,GACpBhd,KAAKiM,IAAI+nD,EAAM,GAAIA,EAAM,GAC3B,CACF,CAGAk5sC,EAAKxtwC,UAAUslB,MAAQ6nvC,EACvBK,EAAKxtwC,UAAkB,OAAIotwC,EAC3BI,EAAKxtwC,UAAUyD,IAAM4pwC,EACrBG,EAAKxtwC,UAAUqM,IAAMihwC,EACrBE,EAAKxtwC,UAAUuM,IAAMghwC,EAErBnwuC,EAAOr6B,QAAUyqwC,mBC/BjB,IAAIC,EAAiB,EAAQ,OACzBC,EAAkB,EAAQ,OAC1B/pM,EAAe,EAAQ,OACvBgqM,EAAe,EAAQ,OACvB1pM,EAAe,EAAQ,OAS3B,SAAS2pM,EAAU7wvC,GACjB,IAAIO,GAAS,EACT3c,EAAoB,MAAXoc,EAAkB,EAAIA,EAAQpc,OAG3C,IADAL,KAAKglB,UACIhI,EAAQ3c,GAAQ,CACvB,IAAI2zD,EAAQv3C,EAAQO,GACpBhd,KAAKiM,IAAI+nD,EAAM,GAAIA,EAAM,GAC3B,CACF,CAGAs5sC,EAAU5twC,UAAUslB,MAAQmovC,EAC5BG,EAAU5twC,UAAkB,OAAI0twC,EAChCE,EAAU5twC,UAAUyD,IAAMkgkC,EAC1BiqM,EAAU5twC,UAAUqM,IAAMshwC,EAC1BC,EAAU5twC,UAAUuM,IAAM03jC,EAE1B7miC,EAAOr6B,QAAU6qwC,mBC/BjB,IAII3ivC,EAJY,EAAQ,MAIdiivC,CAHC,EAAQ,MAGO,OAE1B9vuC,EAAOr6B,QAAUkoB,mBCNjB,IAAI4ivC,EAAgB,EAAQ,OACxBC,EAAiB,EAAQ,OACzBC,EAAc,EAAQ,OACtBC,EAAc,EAAQ,MACtBC,EAAc,EAAQ,OAS1B,SAASC,EAASnxvC,GAChB,IAAIO,GAAS,EACT3c,EAAoB,MAAXoc,EAAkB,EAAIA,EAAQpc,OAG3C,IADAL,KAAKglB,UACIhI,EAAQ3c,GAAQ,CACvB,IAAI2zD,EAAQv3C,EAAQO,GACpBhd,KAAKiM,IAAI+nD,EAAM,GAAIA,EAAM,GAC3B,CACF,CAGA45sC,EAASluwC,UAAUslB,MAAQuovC,EAC3BK,EAASluwC,UAAkB,OAAI8twC,EAC/BI,EAASluwC,UAAUyD,IAAMsqwC,EACzBG,EAASluwC,UAAUqM,IAAM2hwC,EACzBE,EAASluwC,UAAUuM,IAAM0hwC,EAEzB7wuC,EAAOr6B,QAAUmrwC,mBC/BjB,IAIIjtwC,EAJY,EAAQ,MAIViswC,CAHH,EAAQ,MAGW,WAE9B9vuC,EAAOr6B,QAAU9B,mBCNjB,IAIIglB,EAJY,EAAQ,MAIdinvC,CAHC,EAAQ,MAGO,OAE1B9vuC,EAAOr6B,QAAUkjB,mBCNjB,IAAIiovC,EAAW,EAAQ,OACnBC,EAAc,EAAQ,OACtBC,EAAc,EAAQ,OAU1B,SAASC,EAASrxvC,GAChB,IAAIM,GAAS,EACT3c,EAAmB,MAAVqc,EAAiB,EAAIA,EAAOrc,OAGzC,IADAL,KAAKguwC,SAAW,IAAIJ,IACX5wvC,EAAQ3c,GACfL,KAAKmlB,IAAIzI,EAAOM,GAEpB,CAGA+wvC,EAASruwC,UAAUylB,IAAM4ovC,EAASruwC,UAAUmC,KAAOgswC,EACnDE,EAASruwC,UAAUqM,IAAM+hwC,EAEzBhxuC,EAAOr6B,QAAUsrwC,mBC1BjB,IAAIT,EAAY,EAAQ,OACpBW,EAAa,EAAQ,OACrBC,EAAc,EAAQ,OACtBC,EAAW,EAAQ,OACnBC,EAAW,EAAQ,OACnBC,EAAW,EAAQ,OASvB,SAASC,EAAM7xvC,GACb,IAAIjN,EAAOxP,KAAKguwC,SAAW,IAAIV,EAAU7wvC,GACzCzc,KAAK4kB,KAAOpV,EAAKoV,IACnB,CAGA0pvC,EAAM5uwC,UAAUslB,MAAQipvC,EACxBK,EAAM5uwC,UAAkB,OAAIwuwC,EAC5BI,EAAM5uwC,UAAUyD,IAAMgrwC,EACtBG,EAAM5uwC,UAAUqM,IAAMqiwC,EACtBE,EAAM5uwC,UAAUuM,IAAMoiwC,EAEtBvxuC,EAAOr6B,QAAU6rwC,mBC1BjB,IAGI5swC,EAHO,EAAQ,MAGDA,OAElBo7B,EAAOr6B,QAAUf,mBCLjB,IAGIie,EAHO,EAAQ,MAGGA,WAEtBmd,EAAOr6B,QAAUkd,mBCLjB,IAIIxU,EAJY,EAAQ,MAIVyhwC,CAHH,EAAQ,MAGW,WAE9B9vuC,EAAOr6B,QAAU0I,aCcjB2xB,EAAOr6B,QAVP,SAAes9C,EAAMkiW,EAAS5qW,GAC5B,OAAQA,EAAKh3C,QACX,KAAK,EAAG,OAAO0/C,EAAKngD,KAAKqiZ,GACzB,KAAK,EAAG,OAAOliW,EAAKngD,KAAKqiZ,EAAS5qW,EAAK,IACvC,KAAK,EAAG,OAAO0I,EAAKngD,KAAKqiZ,EAAS5qW,EAAK,GAAIA,EAAK,IAChD,KAAK,EAAG,OAAO0I,EAAKngD,KAAKqiZ,EAAS5qW,EAAK,GAAIA,EAAK,GAAIA,EAAK,IAE3D,OAAO0I,EAAKx/C,MAAM0hZ,EAAS5qW,EAC7B,aCGAva,EAAOr6B,QAZP,SAAmBy3C,EAAOq0tC,GAIxB,IAHA,IAAIvxvC,GAAS,EACT3c,EAAkB,MAAT65C,EAAgB,EAAIA,EAAM75C,SAE9B2c,EAAQ3c,IAC8B,IAAzCkuwC,EAASr0tC,EAAMl9B,GAAQA,EAAOk9B,KAIpC,OAAOA,CACT,aCKApd,EAAOr6B,QAfP,SAAqBy3C,EAAO2J,GAM1B,IALA,IAAI7mC,GAAS,EACT3c,EAAkB,MAAT65C,EAAgB,EAAIA,EAAM75C,OACnCmuwC,EAAW,EACXhrvC,EAAS,KAEJxG,EAAQ3c,GAAQ,CACvB,IAAIc,EAAQ+4C,EAAMl9B,GACd6mC,EAAU1iD,EAAO6b,EAAOk9B,KAC1B12B,EAAOgrvC,KAAcrtwC,EAEzB,CACA,OAAOqiB,CACT,mBCtBA,IAAIirvC,EAAc,EAAQ,OAgB1B3xuC,EAAOr6B,QALP,SAAuBy3C,EAAO/4C,GAE5B,QADsB,MAAT+4C,IAAoBA,EAAM75C,SACpBouwC,EAAYv0tC,EAAO/4C,EAAO,IAAM,CACrD,aCOA27B,EAAOr6B,QAZP,SAA2By3C,EAAO/4C,EAAO43e,GAIvC,IAHA,IAAI/7d,GAAS,EACT3c,EAAkB,MAAT65C,EAAgB,EAAIA,EAAM75C,SAE9B2c,EAAQ3c,GACf,GAAI04e,EAAW53e,EAAO+4C,EAAMl9B,IAC1B,OAAO,EAGX,OAAO,CACT,mBCnBA,IAAI0xvC,EAAY,EAAQ,OACpBC,EAAc,EAAQ,OACtBh9vC,EAAU,EAAQ,OAClB4zP,EAAW,EAAQ,MACnBqpgC,EAAU,EAAQ,OAClB3tvC,EAAe,EAAQ,OAMvBthB,EAHcL,OAAOI,UAGQC,eAqCjCm9B,EAAOr6B,QA3BP,SAAuBtB,EAAO0twC,GAC5B,IAAI7jU,EAAQr57B,EAAQxQ,GAChB2twC,GAAS9jU,GAAS2jU,EAAYxtwC,GAC9B4twC,GAAU/jU,IAAU8jU,GAASvpgC,EAASpkQ,GACtC86F,GAAU+u2B,IAAU8jU,IAAUC,GAAU9tvC,EAAa9f,GACrD6twC,EAAchkU,GAAS8jU,GAASC,GAAU9yqC,EAC1Cz4E,EAASwrvC,EAAcN,EAAUvtwC,EAAMd,OAAQP,QAAU,GACzDO,EAASmjB,EAAOnjB,OAEpB,IAAK,IAAIwkB,KAAO1jB,GACT0twC,IAAalvwC,EAAeC,KAAKuB,EAAO0jB,IACvCmqvC,IAEQ,UAAPnqvC,GAECkqvC,IAAkB,UAAPlqvC,GAA0B,UAAPA,IAE9Bo3E,IAAkB,UAAPp3E,GAA0B,cAAPA,GAA8B,cAAPA,IAEtD+pvC,EAAQ/pvC,EAAKxkB,KAElBmjB,EAAO3hB,KAAKgjB,GAGhB,OAAOrB,CACT,aC1BAsZ,EAAOr6B,QAXP,SAAkBy3C,EAAOq0tC,GAKvB,IAJA,IAAIvxvC,GAAS,EACT3c,EAAkB,MAAT65C,EAAgB,EAAIA,EAAM75C,OACnCmjB,EAAS/jB,MAAMY,KAEV2c,EAAQ3c,GACfmjB,EAAOxG,GAASuxvC,EAASr0tC,EAAMl9B,GAAQA,EAAOk9B,GAEhD,OAAO12B,CACT,aCCAsZ,EAAOr6B,QAXP,SAAmBy3C,EAAOx9B,GAKxB,IAJA,IAAIM,GAAS,EACT3c,EAASqc,EAAOrc,OAChB8hD,EAASjI,EAAM75C,SAEV2c,EAAQ3c,GACf65C,EAAMiI,EAASnlC,GAASN,EAAOM,GAEjC,OAAOk9B,CACT,aCKApd,EAAOr6B,QAZP,SAAmBy3C,EAAO2J,GAIxB,IAHA,IAAI7mC,GAAS,EACT3c,EAAkB,MAAT65C,EAAgB,EAAIA,EAAM75C,SAE9B2c,EAAQ3c,GACf,GAAIwjD,EAAU3J,EAAMl9B,GAAQA,EAAOk9B,GACjC,OAAO,EAGX,OAAO,CACT,aCTApd,EAAOr6B,QAJP,SAAsBsa,GACpB,OAAOA,EAAOnY,MAAM,GACtB,mBCTA,IAAIqqwC,EAAkB,EAAQ,OAC1B7/iC,EAAK,EAAQ,OAkBjBtyL,EAAOr6B,QAPP,SAA0B26C,EAAQv4B,EAAK1jB,SACtB4sC,IAAV5sC,IAAwBiuN,EAAGhyK,EAAOv4B,GAAM1jB,SAC9B4sC,IAAV5sC,KAAyB0jB,KAAOu4B,KACnC6xtC,EAAgB7xtC,EAAQv4B,EAAK1jB,EAEjC,mBCjBA,IAAI8twC,EAAkB,EAAQ,OAC1B7/iC,EAAK,EAAQ,OAMbzvN,EAHcL,OAAOI,UAGQC,eAoBjCm9B,EAAOr6B,QARP,SAAqB26C,EAAQv4B,EAAK1jB,GAChC,IAAI+twC,EAAW9xtC,EAAOv4B,GAChBllB,EAAeC,KAAKw9C,EAAQv4B,IAAQuqM,EAAG8/iC,EAAU/twC,UACxC4sC,IAAV5sC,GAAyB0jB,KAAOu4B,IACnC6xtC,EAAgB7xtC,EAAQv4B,EAAK1jB,EAEjC,mBCzBA,IAAIiuN,EAAK,EAAQ,OAoBjBtyL,EAAOr6B,QAVP,SAAsBy3C,EAAOr1B,GAE3B,IADA,IAAIxkB,EAAS65C,EAAM75C,OACZA,KACL,GAAI+uN,EAAGl1K,EAAM75C,GAAQ,GAAIwkB,GACvB,OAAOxkB,EAGX,OAAQ,CACV,mBClBA,IAAI8uwC,EAAa,EAAQ,OACrB77vC,EAAO,EAAQ,OAenBwpB,EAAOr6B,QAJP,SAAoB26C,EAAQv1C,GAC1B,OAAOu1C,GAAU+xtC,EAAWtnwC,EAAQyL,EAAKzL,GAASu1C,EACpD,mBCdA,IAAI+xtC,EAAa,EAAQ,OACrBC,EAAS,EAAQ,OAerBtyuC,EAAOr6B,QAJP,SAAsB26C,EAAQv1C,GAC5B,OAAOu1C,GAAU+xtC,EAAWtnwC,EAAQunwC,EAAOvnwC,GAASu1C,EACtD,mBCdA,IAAIl6C,EAAiB,EAAQ,OAwB7B45B,EAAOr6B,QAbP,SAAyB26C,EAAQv4B,EAAK1jB,GACzB,aAAP0jB,GAAsB3hB,EACxBA,EAAek6C,EAAQv4B,EAAK,CAC1B,cAAgB,EAChB,YAAc,EACd,MAAS1jB,EACT,UAAY,IAGdi8C,EAAOv4B,GAAO1jB,CAElB,kBCtBA,IAAImtwC,EAAQ,EAAQ,OAChBe,EAAY,EAAQ,OACpB31V,EAAc,EAAQ,OACtB41V,EAAa,EAAQ,OACrBC,EAAe,EAAQ,OACvBC,EAAc,EAAQ,OACtBC,EAAY,EAAQ,OACpBC,EAAc,EAAQ,OACtBC,EAAgB,EAAQ,OACxBC,EAAa,EAAQ,OACrBC,EAAe,EAAQ,OACvB93B,EAAS,EAAQ,MACjB+3B,EAAiB,EAAQ,OACzBC,EAAiB,EAAQ,OACzBC,EAAkB,EAAQ,OAC1Br+vC,EAAU,EAAQ,OAClB4zP,EAAW,EAAQ,MACnB8P,EAAQ,EAAQ,OAChBpQ,EAAW,EAAQ,OACnB2j7B,EAAQ,EAAQ,OAChBt1qC,EAAO,EAAQ,OACf87vC,EAAS,EAAQ,OAQjBa,EAAU,qBAKVC,EAAU,oBAIVC,EAAY,kBAoBZC,EAAgB,CAAC,EACrBA,EAAcH,GAAWG,EA7BV,kBA8BfA,EAfqB,wBAeWA,EAdd,qBAelBA,EA9Bc,oBA8BWA,EA7BX,iBA8BdA,EAfiB,yBAeWA,EAdX,yBAejBA,EAdc,sBAcWA,EAbV,uBAcfA,EAbe,uBAaWA,EA5Bb,gBA6BbA,EA5BgB,mBA4BWA,EAAcD,GACzCC,EA3BgB,mBA2BWA,EA1Bd,gBA2BbA,EA1BgB,mBA0BWA,EAzBX,mBA0BhBA,EAhBe,uBAgBWA,EAfJ,8BAgBtBA,EAfgB,wBAeWA,EAdX,yBAcsC,EACtDA,EArCe,kBAqCWA,EAAcF,GACxCE,EA5BiB,qBA4BW,EA8F5BtzuC,EAAOr6B,QA5EP,SAAS4twC,EAAUlvwC,EAAOmvwC,EAASC,EAAY1rvC,EAAKu4B,EAAQzK,GAC1D,IAAInvB,EACAgtvC,EAnEgB,EAmEPF,EACTG,EAnEgB,EAmEPH,EACT7mtC,EAnEmB,EAmEV6mtC,EAKb,GAHIC,IACF/svC,EAAS45B,EAASmztC,EAAWpvwC,EAAO0jB,EAAKu4B,EAAQzK,GAAS49tC,EAAWpvwC,SAExD4sC,IAAXvqB,EACF,OAAOA,EAET,IAAKyhP,EAAS9jQ,GACZ,OAAOA,EAET,IAAI6p8B,EAAQr57B,EAAQxQ,GACpB,GAAI6p8B,GAEF,GADAxn7B,EAASssvC,EAAe3uwC,IACnBqvwC,EACH,OAAOf,EAAUtuwC,EAAOqiB,OAErB,CACL,IAAIpM,EAAM2guC,EAAO52uC,GACbuvwC,EAASt5vC,GAAO84vC,GA7EX,8BA6EsB94vC,EAE/B,GAAImuP,EAASpkQ,GACX,OAAOquwC,EAAYruwC,EAAOqvwC,GAE5B,GAAIp5vC,GAAO+4vC,GAAa/4vC,GAAO64vC,GAAYS,IAAWtztC,GAEpD,GADA55B,EAAUitvC,GAAUC,EAAU,CAAC,EAAIV,EAAgB7uwC,IAC9CqvwC,EACH,OAAOC,EACHd,EAAcxuwC,EAAOouwC,EAAa/rvC,EAAQriB,IAC1CuuwC,EAAYvuwC,EAAOmuwC,EAAW9rvC,EAAQriB,QAEvC,CACL,IAAKivwC,EAAch5vC,GACjB,OAAOgmC,EAASj8C,EAAQ,CAAC,EAE3BqiB,EAASusvC,EAAe5uwC,EAAOiW,EAAKo5vC,EACtC,CACF,CAEA79tC,IAAUA,EAAQ,IAAI27tC,GACtB,IAAIpob,EAAUvzyB,EAAMxvC,IAAIhC,GACxB,GAAI+k1B,EACF,OAAOA,EAETvzyB,EAAM1mC,IAAI9K,EAAOqiB,GAEbolqC,EAAMznrC,GACRA,EAAM+jB,SAAQ,SAASyrvC,GACrBntvC,EAAO2B,IAAIkrvC,EAAUM,EAAUL,EAASC,EAAYI,EAAUxvwC,EAAOwxC,GACvE,IACS0iO,EAAMl0Q,IACfA,EAAM+jB,SAAQ,SAASyrvC,EAAU9rvC,GAC/BrB,EAAOvX,IAAI4Y,EAAKwrvC,EAAUM,EAAUL,EAASC,EAAY1rvC,EAAK1jB,EAAOwxC,GACvE,IAGF,IAII1F,EAAQ+95B,OAAQj95B,GAJL0b,EACVgntC,EAASZ,EAAeD,EACxBa,EAASrB,EAAS97vC,GAEkBnS,GASzC,OARAkuwC,EAAUpiuC,GAAS9rC,GAAO,SAASwvwC,EAAU9rvC,GACvCooB,IAEF0juC,EAAWxvwC,EADX0jB,EAAM8rvC,IAIRj3V,EAAYl25B,EAAQqB,EAAKwrvC,EAAUM,EAAUL,EAASC,EAAY1rvC,EAAK1jB,EAAOwxC,GAChF,IACOnvB,CACT,mBCnKA,IAAIyhP,EAAW,EAAQ,OAGnB2rgC,EAAetxwC,OAAOY,OAUtB2wwC,EAAc,WAChB,SAASzztC,IAAU,CACnB,OAAO,SAAS5rC,GACd,IAAKyzP,EAASzzP,GACZ,MAAO,CAAC,EAEV,GAAIo/vC,EACF,OAAOA,EAAap/vC,GAEtB4rC,EAAO19C,UAAY8R,EACnB,IAAIgS,EAAS,IAAI45B,EAEjB,OADAA,EAAO19C,eAAYquC,EACZvqB,CACT,CACF,CAdiB,GAgBjBsZ,EAAOr6B,QAAUouwC,mBC7BjB,IAAI9C,EAAW,EAAQ,OACnB+C,EAAgB,EAAQ,OACxBC,EAAoB,EAAQ,OAC5BC,EAAW,EAAQ,OACnBC,EAAY,EAAQ,OACpBC,EAAW,EAAQ,OA6DvBp0uC,EAAOr6B,QA7CP,SAAwBy3C,EAAOx9B,EAAQ6xvC,EAAUx1xB,GAC/C,IAAI/7d,GAAS,EACT5O,EAAW0iwC,EACXK,GAAW,EACX9wwC,EAAS65C,EAAM75C,OACfmjB,EAAS,GACT4tvC,EAAe10vC,EAAOrc,OAE1B,IAAKA,EACH,OAAOmjB,EAEL+qvC,IACF7xvC,EAASs0vC,EAASt0vC,EAAQu0vC,EAAU1C,KAElCx1xB,GACF3qe,EAAW2iwC,EACXI,GAAW,GAEJz0vC,EAAOrc,QA/BK,MAgCnB+N,EAAW8iwC,EACXC,GAAW,EACXz0vC,EAAS,IAAIqxvC,EAASrxvC,IAExBk/f,EACA,OAAS5+f,EAAQ3c,GAAQ,CACvB,IAAIc,EAAQ+4C,EAAMl9B,GACdq0vC,EAAuB,MAAZ9C,EAAmBptwC,EAAQotwC,EAASptwC,GAGnD,GADAA,EAAS43e,GAAwB,IAAV53e,EAAeA,EAAQ,EAC1CgwwC,GAAYE,GAAaA,EAAU,CAErC,IADA,IAAIC,EAAcF,EACXE,KACL,GAAI50vC,EAAO40vC,KAAiBD,EAC1B,SAASz1vB,EAGbp4f,EAAO3hB,KAAKV,EACd,MACUiN,EAASsO,EAAQ20vC,EAAUt4xB,IACnCv1d,EAAO3hB,KAAKV,EAEhB,CACA,OAAOqiB,CACT,mBChEA,IAAI+tvC,EAAa,EAAQ,OAWrBC,EAViB,EAAQ,MAUdC,CAAeF,GAE9Bz0uC,EAAOr6B,QAAU+uwC,YCUjB10uC,EAAOr6B,QAZP,SAAuBy3C,EAAO2J,EAAWymd,EAAWonwB,GAIlD,IAHA,IAAIrxwC,EAAS65C,EAAM75C,OACf2c,EAAQstf,GAAaonwB,EAAY,GAAK,GAElCA,EAAY10vC,MAAYA,EAAQ3c,GACtC,GAAIwjD,EAAU3J,EAAMl9B,GAAQA,EAAOk9B,GACjC,OAAOl9B,EAGX,OAAQ,CACV,mBCrBA,IAAI20vC,EAAY,EAAQ,OACpBC,EAAgB,EAAQ,OAoC5B90uC,EAAOr6B,QAvBP,SAASovwC,EAAY33tC,EAAOq9F,EAAO1zF,EAAWiutC,EAAUtuvC,GACtD,IAAIxG,GAAS,EACT3c,EAAS65C,EAAM75C,OAKnB,IAHAwjD,IAAcA,EAAY+ttC,GAC1BpuvC,IAAWA,EAAS,MAEXxG,EAAQ3c,GAAQ,CACvB,IAAIc,EAAQ+4C,EAAMl9B,GACdu6H,EAAQ,GAAK1zF,EAAU1iD,GACrBo2I,EAAQ,EAEVs6nC,EAAY1wwC,EAAOo2I,EAAQ,EAAG1zF,EAAWiutC,EAAUtuvC,GAEnDmuvC,EAAUnuvC,EAAQriB,GAEV2wwC,IACVtuvC,EAAOA,EAAOnjB,QAAUc,EAE5B,CACA,OAAOqiB,CACT,mBCnCA,IAaIuuvC,EAbgB,EAAQ,MAadC,GAEdl1uC,EAAOr6B,QAAUsvwC,mBCfjB,IAAIA,EAAU,EAAQ,OAClBz+vC,EAAO,EAAQ,OAcnBwpB,EAAOr6B,QAJP,SAAoB26C,EAAQmxtC,GAC1B,OAAOnxtC,GAAU20tC,EAAQ30tC,EAAQmxtC,EAAUj7vC,EAC7C,mBCbA,IAAI2+vC,EAAW,EAAQ,OACnBx/uC,EAAQ,EAAQ,OAsBpBqK,EAAOr6B,QAZP,SAAiB26C,EAAQ/mB,GAMvB,IAHA,IAAIrZ,EAAQ,EACR3c,GAHJg2B,EAAO47uC,EAAS57uC,EAAM+mB,IAGJ/8C,OAED,MAAV+8C,GAAkBpgC,EAAQ3c,GAC/B+8C,EAASA,EAAO3qB,EAAM4D,EAAKrZ,OAE7B,OAAQA,GAASA,GAAS3c,EAAU+8C,OAASrP,CAC/C,mBCrBA,IAAI4juC,EAAY,EAAQ,OACpBhgwC,EAAU,EAAQ,OAkBtBmrB,EAAOr6B,QALP,SAAwB26C,EAAQ80tC,EAAUC,GACxC,IAAI3uvC,EAAS0uvC,EAAS90tC,GACtB,OAAOzrC,EAAQyrC,GAAU55B,EAASmuvC,EAAUnuvC,EAAQ2uvC,EAAY/0tC,GAClE,mBCjBA,IAAI17C,EAAS,EAAQ,OACjB0wwC,EAAY,EAAQ,KACpB3G,EAAiB,EAAQ,OAOzB4G,EAAiB3wwC,EAASA,EAAOyoB,iBAAc4jB,EAkBnDjR,EAAOr6B,QATP,SAAoBtB,GAClB,OAAa,MAATA,OACe4sC,IAAV5sC,EAdQ,qBADL,gBAiBJkxwC,GAAkBA,KAAkB/ywC,OAAO6B,GAC/CixwC,EAAUjxwC,GACVsqwC,EAAetqwC,EACrB,aCbA27B,EAAOr6B,QAJP,SAAmB26C,EAAQv4B,GACzB,OAAiB,MAAVu4B,GAAkBv4B,KAAOvlB,OAAO89C,EACzC,mBCVA,IAAIk1tC,EAAgB,EAAQ,MACxBC,EAAY,EAAQ,OACpBC,EAAgB,EAAQ,OAiB5B11uC,EAAOr6B,QANP,SAAqBy3C,EAAO/4C,EAAOmpgB,GACjC,OAAOnpgB,GAAUA,EACbqxwC,EAAct4tC,EAAO/4C,EAAOmpgB,GAC5BgowB,EAAcp4tC,EAAOq4tC,EAAWjowB,EACtC,mBCjBA,IAAIyjwB,EAAW,EAAQ,OACnB+C,EAAgB,EAAQ,OACxBC,EAAoB,EAAQ,OAC5BC,EAAW,EAAQ,OACnBC,EAAY,EAAQ,OACpBC,EAAW,EAAQ,OAGnBvF,EAAY9owC,KAAKgL,IAiErBivB,EAAOr6B,QArDP,SAA0B4l7B,EAAQkmV,EAAUx1xB,GAS1C,IARA,IAAI3qe,EAAW2qe,EAAag4xB,EAAoBD,EAC5CzwwC,EAASgo7B,EAAO,GAAGho7B,OACnBoywC,EAAYpqV,EAAOho7B,OACnBqywC,EAAWD,EACXE,EAASlzwC,MAAMgzwC,GACf3+tB,EAAY/ze,IACZv8C,EAAS,GAENkvvC,KAAY,CACjB,IAAIx4tC,EAAQmu4B,EAAOqqV,GACfA,GAAYnE,IACdr0tC,EAAQ82tC,EAAS92tC,EAAO+2tC,EAAU1C,KAEpCz6tB,EAAY63tB,EAAUzxtC,EAAM75C,OAAQyziB,GACpC6+tB,EAAOD,IAAa35xB,IAAew1xB,GAAaluwC,GAAU,KAAO65C,EAAM75C,QAAU,KAC7E,IAAI0twC,EAAS2E,GAAYx4tC,QACzBnM,CACN,CACAmM,EAAQmu4B,EAAO,GAEf,IAAIrr6B,GAAS,EACT2/S,EAAOg28B,EAAO,GAElB/2vB,EACA,OAAS5+f,EAAQ3c,GAAUmjB,EAAOnjB,OAASyziB,GAAW,CACpD,IAAI3yiB,EAAQ+4C,EAAMl9B,GACdq0vC,EAAW9C,EAAWA,EAASptwC,GAASA,EAG5C,GADAA,EAAS43e,GAAwB,IAAV53e,EAAeA,EAAQ,IACxCw7T,EACEu08B,EAASv08B,EAAM008B,GACfjjwC,EAASoV,EAAQ6tvC,EAAUt4xB,IAC5B,CAEL,IADA25xB,EAAWD,IACFC,GAAU,CACjB,IAAIx/uC,EAAQy/uC,EAAOD,GACnB,KAAMx/uC,EACEg+uC,EAASh+uC,EAAOm+uC,GAChBjjwC,EAASi66B,EAAOqqV,GAAWrB,EAAUt4xB,IAE3C,SAAS6iC,CAEb,CACIj/M,GACFA,EAAK96T,KAAKwvwC,GAEZ7tvC,EAAO3hB,KAAKV,EACd,CACF,CACA,OAAOqiB,CACT,mBCvEA,IAAIovvC,EAAa,EAAQ,OACrBx5B,EAAe,EAAQ,OAgB3Bt8sC,EAAOr6B,QAJP,SAAyBtB,GACvB,OAAOi4uC,EAAaj4uC,IAVR,sBAUkByxwC,EAAWzxwC,EAC3C,mBCfA,IAAI0xwC,EAAkB,EAAQ,OAC1Bz5B,EAAe,EAAQ,OA0B3Bt8sC,EAAOr6B,QAVP,SAASqwwC,EAAY3xwC,EAAO06C,EAAOy0tC,EAASC,EAAY59tC,GACtD,OAAIxxC,IAAU06C,IAGD,MAAT16C,GAA0B,MAAT06C,IAAmBu9rC,EAAaj4uC,KAAWi4uC,EAAav9rC,GACpE16C,GAAUA,GAAS06C,GAAUA,EAE/Bg3tC,EAAgB1xwC,EAAO06C,EAAOy0tC,EAASC,EAAYuC,EAAanguC,GACzE,mBCzBA,IAAI27tC,EAAQ,EAAQ,OAChByE,EAAc,EAAQ,OACtBC,EAAa,EAAQ,OACrBC,EAAe,EAAQ,OACvBl7B,EAAS,EAAQ,MACjBpmuC,EAAU,EAAQ,OAClB4zP,EAAW,EAAQ,MACnBtkP,EAAe,EAAQ,OAMvBgvvC,EAAU,qBACViD,EAAW,iBACX/C,EAAY,kBAMZxwwC,EAHcL,OAAOI,UAGQC,eA6DjCm9B,EAAOr6B,QA7CP,SAAyB26C,EAAQvB,EAAOy0tC,EAASC,EAAY4C,EAAWxguC,GACtE,IAAIyguC,EAAWzhwC,EAAQyrC,GACnBi2tC,EAAW1hwC,EAAQkqC,GACnBy3tC,EAASF,EAAWF,EAAWn7B,EAAO36rC,GACtCm2tC,EAASF,EAAWH,EAAWn7B,EAAOl8rC,GAKtC23tC,GAHJF,EAASA,GAAUrD,EAAUE,EAAYmD,IAGhBnD,EACrBsD,GAHJF,EAASA,GAAUtD,EAAUE,EAAYoD,IAGhBpD,EACrBuD,EAAYJ,GAAUC,EAE1B,GAAIG,GAAanugC,EAASnoN,GAAS,CACjC,IAAKmoN,EAAS1pN,GACZ,OAAO,EAETu3tC,GAAW,EACXI,GAAW,CACb,CACA,GAAIE,IAAcF,EAEhB,OADA7guC,IAAUA,EAAQ,IAAI27tC,GACd8E,GAAYnyvC,EAAam8B,GAC7B21tC,EAAY31tC,EAAQvB,EAAOy0tC,EAASC,EAAY4C,EAAWxguC,GAC3DqguC,EAAW51tC,EAAQvB,EAAOy3tC,EAAQhD,EAASC,EAAY4C,EAAWxguC,GAExE,KArDyB,EAqDnB29tC,GAAiC,CACrC,IAAIqD,EAAeH,GAAY7zwC,EAAeC,KAAKw9C,EAAQ,eACvDw2tC,EAAeH,GAAY9zwC,EAAeC,KAAKi8C,EAAO,eAE1D,GAAI83tC,GAAgBC,EAAc,CAChC,IAAIC,EAAeF,EAAev2tC,EAAOj8C,QAAUi8C,EAC/C02tC,EAAeF,EAAe/3tC,EAAM16C,QAAU06C,EAGlD,OADAlJ,IAAUA,EAAQ,IAAI27tC,GACf6E,EAAUU,EAAcC,EAAcxD,EAASC,EAAY59tC,EACpE,CACF,CACA,QAAK+guC,IAGL/guC,IAAUA,EAAQ,IAAI27tC,GACf2E,EAAa71tC,EAAQvB,EAAOy0tC,EAASC,EAAY4C,EAAWxguC,GACrE,mBChFA,IAAIolsC,EAAS,EAAQ,MACjBqB,EAAe,EAAQ,OAgB3Bt8sC,EAAOr6B,QAJP,SAAmBtB,GACjB,OAAOi4uC,EAAaj4uC,IAVT,gBAUmB42uC,EAAO52uC,EACvC,mBCfA,IAAImtwC,EAAQ,EAAQ,OAChBwE,EAAc,EAAQ,OA4D1Bh2uC,EAAOr6B,QA5CP,SAAqB26C,EAAQv1C,EAAQkswC,EAAWxD,GAC9C,IAAIvzvC,EAAQ+2vC,EAAU1zwC,OAClBA,EAAS2c,EACTg3vC,GAAgBzD,EAEpB,GAAc,MAAVnztC,EACF,OAAQ/8C,EAGV,IADA+8C,EAAS99C,OAAO89C,GACTpgC,KAAS,CACd,IAAIxN,EAAOukwC,EAAU/2vC,GACrB,GAAKg3vC,GAAgBxkwC,EAAK,GAClBA,EAAK,KAAO4tC,EAAO5tC,EAAK,MACtBA,EAAK,KAAM4tC,GAEnB,OAAO,CAEX,CACA,OAASpgC,EAAQ3c,GAAQ,CAEvB,IAAIwkB,GADJrV,EAAOukwC,EAAU/2vC,IACF,GACXkyvC,EAAW9xtC,EAAOv4B,GAClBovvC,EAAWzkwC,EAAK,GAEpB,GAAIwkwC,GAAgBxkwC,EAAK,IACvB,QAAiBu+B,IAAbmhuC,KAA4BrqvC,KAAOu4B,GACrC,OAAO,MAEJ,CACL,IAAIzK,EAAQ,IAAI27tC,EAChB,GAAIiC,EACF,IAAI/svC,EAAS+svC,EAAWrB,EAAU+E,EAAUpvvC,EAAKu4B,EAAQv1C,EAAQ8qC,GAEnE,UAAiB5E,IAAXvqB,EACEsvvC,EAAYmB,EAAU/E,EAAUgF,EAA+C3D,EAAY59tC,GAC3FnvB,GAEN,OAAO,CAEX,CACF,CACA,OAAO,CACT,aChDAsZ,EAAOr6B,QAJP,SAAmBtB,GACjB,OAAOA,GAAUA,CACnB,mBCTA,IAAI6jQ,EAAa,EAAQ,MACrBmvgC,EAAW,EAAQ,OACnBlvgC,EAAW,EAAQ,OACnBmvgC,EAAW,EAAQ,OASnBC,EAAe,8BAGfC,EAAYvxwC,SAASrD,UACrB60wC,EAAcj1wC,OAAOI,UAGrB80wC,EAAeF,EAAU/vwC,SAGzB5E,EAAiB40wC,EAAY50wC,eAG7B80wC,EAAa1suC,OAAO,IACtBysuC,EAAa50wC,KAAKD,GAAgB8M,QAjBjB,sBAiBuC,QACvDA,QAAQ,yDAA0D,SAAW,KAmBhFqwB,EAAOr6B,QARP,SAAsBtB,GACpB,SAAK8jQ,EAAS9jQ,IAAUgzwC,EAAShzwC,MAGnB6jQ,EAAW7jQ,GAASszwC,EAAaJ,GAChChpwC,KAAK+owC,EAASjzwC,GAC/B,mBC5CA,IAAI42uC,EAAS,EAAQ,MACjBqB,EAAe,EAAQ,OAgB3Bt8sC,EAAOr6B,QAJP,SAAmBtB,GACjB,OAAOi4uC,EAAaj4uC,IAVT,gBAUmB42uC,EAAO52uC,EACvC,kBCfA,IAAIyxwC,EAAa,EAAQ,OACrB8B,EAAW,EAAQ,OACnBt7B,EAAe,EAAQ,OA8BvBu7B,EAAiB,CAAC,EACtBA,EAZiB,yBAYYA,EAXZ,yBAYjBA,EAXc,sBAWYA,EAVX,uBAWfA,EAVe,uBAUYA,EATZ,uBAUfA,EATsB,8BASYA,EARlB,wBAShBA,EARgB,yBAQY,EAC5BA,EAjCc,sBAiCYA,EAhCX,kBAiCfA,EApBqB,wBAoBYA,EAhCnB,oBAiCdA,EApBkB,qBAoBYA,EAhChB,iBAiCdA,EAhCe,kBAgCYA,EA/Bb,qBAgCdA,EA/Ba,gBA+BYA,EA9BT,mBA+BhBA,EA9BgB,mBA8BYA,EA7BZ,mBA8BhBA,EA7Ba,gBA6BYA,EA5BT,mBA6BhBA,EA5BiB,qBA4BY,EAc7B73uC,EAAOr6B,QALP,SAA0BtB,GACxB,OAAOi4uC,EAAaj4uC,IAClBuzwC,EAASvzwC,EAAMd,WAAas0wC,EAAe/B,EAAWzxwC,GAC1D,mBCzDA,IAAIyzwC,EAAc,EAAQ,OACtBC,EAAsB,EAAQ,OAC9BrqlC,EAAW,EAAQ,OACnB74K,EAAU,EAAQ,OAClB6nC,EAAW,EAAQ,OA0BvB1c,EAAOr6B,QAjBP,SAAsBtB,GAGpB,MAAoB,mBAATA,EACFA,EAEI,MAATA,EACKqpL,EAEW,iBAATrpL,EACFwQ,EAAQxQ,GACX0zwC,EAAoB1zwC,EAAM,GAAIA,EAAM,IACpCyzwC,EAAYzzwC,GAEXq4C,EAASr4C,EAClB,mBC5BA,IAAI2zwC,EAAc,EAAQ,OACtBC,EAAa,EAAQ,MAMrBp1wC,EAHcL,OAAOI,UAGQC,eAsBjCm9B,EAAOr6B,QAbP,SAAkB26C,GAChB,IAAK03tC,EAAY13tC,GACf,OAAO23tC,EAAW33tC,GAEpB,IAAI55B,EAAS,GACb,IAAK,IAAIqB,KAAOvlB,OAAO89C,GACjBz9C,EAAeC,KAAKw9C,EAAQv4B,IAAe,eAAPA,GACtCrB,EAAO3hB,KAAKgjB,GAGhB,OAAOrB,CACT,mBC3BA,IAAIyhP,EAAW,EAAQ,OACnB6vgC,EAAc,EAAQ,OACtBE,EAAe,EAAQ,OAMvBr1wC,EAHcL,OAAOI,UAGQC,eAwBjCm9B,EAAOr6B,QAfP,SAAoB26C,GAClB,IAAK6nN,EAAS7nN,GACZ,OAAO43tC,EAAa53tC,GAEtB,IAAI63tC,EAAUH,EAAY13tC,GACtB55B,EAAS,GAEb,IAAK,IAAIqB,KAAOu4B,GACD,eAAPv4B,IAAyBowvC,GAAYt1wC,EAAeC,KAAKw9C,EAAQv4B,KACrErB,EAAO3hB,KAAKgjB,GAGhB,OAAOrB,CACT,kBC9BA,IAAIguvC,EAAW,EAAQ,OACnBznU,EAAc,EAAQ,OAoB1Bjt6B,EAAOr6B,QAVP,SAAiB07P,EAAYowgC,GAC3B,IAAIvxvC,GAAS,EACTwG,EAASum7B,EAAY5rsB,GAAc1+P,MAAM0+P,EAAW99P,QAAU,GAKlE,OAHAmxwC,EAASrzgC,GAAY,SAASh9P,EAAO0jB,EAAKs5O,GACxC36O,IAASxG,GAASuxvC,EAASptwC,EAAO0jB,EAAKs5O,EACzC,IACO36O,CACT,mBCnBA,IAAI0xvC,EAAc,EAAQ,OACtBC,EAAe,EAAQ,OACvBC,EAA0B,EAAQ,OAmBtCt4uC,EAAOr6B,QAVP,SAAqBoF,GACnB,IAAIkswC,EAAYoB,EAAattwC,GAC7B,OAAwB,GAApBkswC,EAAU1zwC,QAAe0zwC,EAAU,GAAG,GACjCqB,EAAwBrB,EAAU,GAAG,GAAIA,EAAU,GAAG,IAExD,SAAS32tC,GACd,OAAOA,IAAWv1C,GAAUqtwC,EAAY93tC,EAAQv1C,EAAQkswC,EAC1D,CACF,mBCnBA,IAAIjB,EAAc,EAAQ,OACtB3vwC,EAAM,EAAQ,OACdkywC,EAAQ,EAAQ,OAChBC,EAAQ,EAAQ,OAChBC,EAAqB,EAAQ,OAC7BH,EAA0B,EAAQ,OAClC3ivC,EAAQ,EAAQ,OA0BpBqK,EAAOr6B,QAZP,SAA6B4zB,EAAM49uC,GACjC,OAAIqB,EAAMj/uC,IAASk/uC,EAAmBtB,GAC7BmB,EAAwB3ivC,EAAM4D,GAAO49uC,GAEvC,SAAS72tC,GACd,IAAI8xtC,EAAW/rwC,EAAIi6C,EAAQ/mB,GAC3B,YAAqB0X,IAAbmhuC,GAA0BA,IAAa+E,EAC3CoB,EAAMj4tC,EAAQ/mB,GACdy8uC,EAAYmB,EAAU/E,EAAUgF,EACtC,CACF,mBC9BA,IAAI5F,EAAQ,EAAQ,OAChBkH,EAAmB,EAAQ,OAC3BzD,EAAU,EAAQ,OAClB0D,EAAgB,EAAQ,OACxBxwgC,EAAW,EAAQ,OACnBmqgC,EAAS,EAAQ,OACjBsG,EAAU,EAAQ,OAmCtB54uC,EAAOr6B,QAtBP,SAASkzwC,EAAUv4tC,EAAQv1C,EAAQ+twC,EAAUrF,EAAY59tC,GACnDyK,IAAWv1C,GAGfkqwC,EAAQlqwC,GAAQ,SAASoswC,EAAUpvvC,GAEjC,GADA8tB,IAAUA,EAAQ,IAAI27tC,GAClBrpgC,EAASgvgC,GACXwB,EAAcr4tC,EAAQv1C,EAAQgd,EAAK+wvC,EAAUD,EAAWpF,EAAY59tC,OAEjE,CACH,IAAIs5G,EAAWsknC,EACXA,EAAWmF,EAAQt4tC,EAAQv4B,GAAMovvC,EAAWpvvC,EAAM,GAAKu4B,EAAQv1C,EAAQ8qC,QACvE5E,OAEaA,IAAbk+G,IACFA,EAAWgonC,GAEbuB,EAAiBp4tC,EAAQv4B,EAAKonI,EAChC,CACF,GAAGmjnC,EACL,mBCvCA,IAAIoG,EAAmB,EAAQ,OAC3BhG,EAAc,EAAQ,OACtBqG,EAAkB,EAAQ,OAC1BpG,EAAY,EAAQ,OACpBO,EAAkB,EAAQ,OAC1BrB,EAAc,EAAQ,OACtBh9vC,EAAU,EAAQ,OAClBmkwC,EAAoB,EAAQ,OAC5BvwgC,EAAW,EAAQ,MACnBP,EAAa,EAAQ,MACrBC,EAAW,EAAQ,OACnBnjG,EAAgB,EAAQ,OACxB7gJ,EAAe,EAAQ,OACvBy0vC,EAAU,EAAQ,OAClBK,EAAgB,EAAQ,OA+E5Bj5uC,EAAOr6B,QA9DP,SAAuB26C,EAAQv1C,EAAQgd,EAAK+wvC,EAAUI,EAAWzF,EAAY59tC,GAC3E,IAAIu8tC,EAAWwG,EAAQt4tC,EAAQv4B,GAC3BovvC,EAAWyB,EAAQ7twC,EAAQgd,GAC3Bqh0B,EAAUvzyB,EAAMxvC,IAAI8wwC,GAExB,GAAI/tb,EACFsvb,EAAiBp4tC,EAAQv4B,EAAKqh0B,OADhC,CAIA,IAAIj6rB,EAAWsknC,EACXA,EAAWrB,EAAU+E,EAAWpvvC,EAAM,GAAKu4B,EAAQv1C,EAAQ8qC,QAC3D5E,EAEAojuC,OAAwBpjuC,IAAbk+G,EAEf,GAAIklnC,EAAU,CACZ,IAAInmU,EAAQr57B,EAAQsiwC,GAChBlF,GAAU/jU,GAASzlsB,EAAS0ugC,GAC5BgC,GAAWjrU,IAAU+jU,GAAU9tvC,EAAagzvC,GAEhDhonC,EAAWgonC,EACPjpU,GAAS+jU,GAAUkH,EACjBtkwC,EAAQu9vC,GACVjjnC,EAAWijnC,EAEJ4G,EAAkB5G,GACzBjjnC,EAAWwjnC,EAAUP,GAEdH,GACPoC,GAAW,EACXllnC,EAAWujnC,EAAYyE,GAAU,IAE1BgC,GACP9E,GAAW,EACXllnC,EAAW4pnC,EAAgB5B,GAAU,IAGrChonC,EAAW,GAGN6V,EAAcmymC,IAAatF,EAAYsF,IAC9ChonC,EAAWijnC,EACPP,EAAYO,GACdjjnC,EAAW8pnC,EAAc7G,GAEjBjqgC,EAASiqgC,KAAalqgC,EAAWkqgC,KACzCjjnC,EAAW+jnC,EAAgBiE,KAI7B9C,GAAW,CAEf,CACIA,IAEFx+tC,EAAM1mC,IAAIgowC,EAAUhonC,GACpB+pnC,EAAU/pnC,EAAUgonC,EAAU2B,EAAUrF,EAAY59tC,GACpDA,EAAc,OAAEshuC,IAElBuB,EAAiBp4tC,EAAQv4B,EAAKonI,EAnD9B,CAoDF,mBC3FA,IAAI+knC,EAAW,EAAQ,OACnBkF,EAAU,EAAQ,OAClBC,EAAe,EAAQ,OACvBC,EAAU,EAAQ,MAClBC,EAAa,EAAQ,OACrBpF,EAAY,EAAQ,OACpBqF,EAAkB,EAAQ,OAC1B9rlC,EAAW,EAAQ,OACnB74K,EAAU,EAAQ,OAwCtBmrB,EAAOr6B,QA7BP,SAAqB07P,EAAYo4gC,EAAWC,GAExCD,EADEA,EAAUl2wC,OACA2wwC,EAASuF,GAAW,SAAShI,GACvC,OAAI58vC,EAAQ48vC,GACH,SAASptwC,GACd,OAAO+0wC,EAAQ/0wC,EAA2B,IAApBotwC,EAASluwC,OAAekuwC,EAAS,GAAKA,EAC9D,EAEKA,CACT,IAEY,CAAC/jlC,GAGf,IAAIxtK,GAAS,EACbu5vC,EAAYvF,EAASuF,EAAWtF,EAAUkF,IAE1C,IAAI3yvC,EAAS4yvC,EAAQj4gC,GAAY,SAASh9P,EAAO0jB,EAAKs5O,GAIpD,MAAO,CAAE,SAHM6ygC,EAASuF,GAAW,SAAShI,GAC1C,OAAOA,EAASptwC,EAClB,IAC+B,QAAW6b,EAAO,MAAS7b,EAC5D,IAEA,OAAOk1wC,EAAW7yvC,GAAQ,SAAS45B,EAAQvB,GACzC,OAAOy6tC,EAAgBl5tC,EAAQvB,EAAO26tC,EACxC,GACF,mBC9CA,IAAIC,EAAa,EAAQ,OACrBpB,EAAQ,EAAQ,OAiBpBv4uC,EAAOr6B,QANP,SAAkB26C,EAAQmhM,GACxB,OAAOk4hC,EAAWr5tC,EAAQmhM,GAAO,SAASp9O,EAAOk1B,GAC/C,OAAOg/uC,EAAMj4tC,EAAQ/mB,EACvB,GACF,mBChBA,IAAI6/uC,EAAU,EAAQ,OAClBQ,EAAU,EAAQ,OAClBzE,EAAW,EAAQ,OA2BvBn1uC,EAAOr6B,QAhBP,SAAoB26C,EAAQmhM,EAAO16L,GAKjC,IAJA,IAAI7mC,GAAS,EACT3c,EAASk+O,EAAMl+O,OACfmjB,EAAS,CAAC,IAELxG,EAAQ3c,GAAQ,CACvB,IAAIg2B,EAAOkoN,EAAMvhO,GACb7b,EAAQ+0wC,EAAQ94tC,EAAQ/mB,GAExBwtB,EAAU1iD,EAAOk1B,IACnBqgvC,EAAQlzvC,EAAQyuvC,EAAS57uC,EAAM+mB,GAASj8C,EAE5C,CACA,OAAOqiB,CACT,aCdAsZ,EAAOr6B,QANP,SAAsBoiB,GACpB,OAAO,SAASu4B,GACd,OAAiB,MAAVA,OAAiBrP,EAAYqP,EAAOv4B,EAC7C,CACF,mBCXA,IAAIqxvC,EAAU,EAAQ,OAetBp5uC,EAAOr6B,QANP,SAA0B4zB,GACxB,OAAO,SAAS+mB,GACd,OAAO84tC,EAAQ94tC,EAAQ/mB,EACzB,CACF,mBCbA,IAAIm0J,EAAW,EAAQ,OACnBmslC,EAAW,EAAQ,OACnBC,EAAc,EAAQ,OAc1B95uC,EAAOr6B,QAJP,SAAkBs9C,EAAMvZ,GACtB,OAAOowuC,EAAYD,EAAS52tC,EAAMvZ,EAAOgkJ,GAAWzqI,EAAO,GAC7D,mBCdA,IAAI253B,EAAc,EAAQ,OACtBu4V,EAAW,EAAQ,OACnBrD,EAAU,EAAQ,OAClB3pgC,EAAW,EAAQ,OACnBxyO,EAAQ,EAAQ,OA8CpBqK,EAAOr6B,QAlCP,SAAiB26C,EAAQ/mB,EAAMl1B,EAAOovwC,GACpC,IAAKtrgC,EAAS7nN,GACZ,OAAOA,EAST,IALA,IAAIpgC,GAAS,EACT3c,GAHJg2B,EAAO47uC,EAAS57uC,EAAM+mB,IAGJ/8C,OACdkyD,EAAYlyD,EAAS,EACrB0iI,EAAS3lF,EAEI,MAAV2lF,KAAoB/lH,EAAQ3c,GAAQ,CACzC,IAAIwkB,EAAM4N,EAAM4D,EAAKrZ,IACjBivI,EAAW9qJ,EAEf,GAAY,cAAR0jB,GAA+B,gBAARA,GAAiC,cAARA,EAClD,OAAOu4B,EAGT,GAAIpgC,GAASu1C,EAAW,CACtB,IAAI28sC,EAAWnsoC,EAAOl+G,QAELkpB,KADjBk+G,EAAWsknC,EAAaA,EAAWrB,EAAUrqvC,EAAKk+G,QAAUh1F,KAE1Dk+G,EAAWg5G,EAASiqgC,GAChBA,EACCN,EAAQv4uC,EAAKrZ,EAAQ,IAAM,GAAK,CAAC,EAE1C,CACA085B,EAAY32yB,EAAQl+G,EAAKonI,GACzBlpB,EAASA,EAAOl+G,EAClB,CACA,OAAOu4B,CACT,mBChDA,IAAI6gF,EAAW,EAAQ,OACnB/6H,EAAiB,EAAQ,OACzBsnL,EAAW,EAAQ,OAUnBqslC,EAAmB3zwC,EAA4B,SAAS68C,EAAMhjC,GAChE,OAAO7Z,EAAe68C,EAAM,WAAY,CACtC,cAAgB,EAChB,YAAc,EACd,MAASk+E,EAASlhH,GAClB,UAAY,GAEhB,EAPwCytK,EASxC1tJ,EAAOr6B,QAAUo0wC,aCSjB/5uC,EAAOr6B,QArBP,SAAmBy3C,EAAO1T,EAAOC,GAC/B,IAAIzpB,GAAS,EACT3c,EAAS65C,EAAM75C,OAEfmmC,EAAQ,IACVA,GAASA,EAAQnmC,EAAS,EAAKA,EAASmmC,IAE1CC,EAAMA,EAAMpmC,EAASA,EAASomC,GACpB,IACRA,GAAOpmC,GAETA,EAASmmC,EAAQC,EAAM,EAAMA,EAAMD,IAAW,EAC9CA,KAAW,EAGX,IADA,IAAIhjB,EAAS/jB,MAAMY,KACV2c,EAAQ3c,GACfmjB,EAAOxG,GAASk9B,EAAMl9B,EAAQwpB,GAEhC,OAAOhjB,CACT,aCRAsZ,EAAOr6B,QAVP,SAAoBy3C,EAAO48tC,GACzB,IAAIz2wC,EAAS65C,EAAM75C,OAGnB,IADA65C,EAAM3N,KAAKuquC,GACJz2wC,KACL65C,EAAM75C,GAAU65C,EAAM75C,GAAQc,MAEhC,OAAO+4C,CACT,aCCApd,EAAOr6B,QAVP,SAAmBpD,EAAGkvwC,GAIpB,IAHA,IAAIvxvC,GAAS,EACTwG,EAAS/jB,MAAMJ,KAEV2d,EAAQ3d,GACfmkB,EAAOxG,GAASuxvC,EAASvxvC,GAE3B,OAAOwG,CACT,mBCjBA,IAAI9hB,EAAS,EAAQ,OACjBsvwC,EAAW,EAAQ,OACnBr/vC,EAAU,EAAQ,OAClBi6vC,EAAW,EAAQ,OAMnBmL,EAAcr1wC,EAASA,EAAOhC,eAAYquC,EAC1CipuC,EAAiBD,EAAcA,EAAYxywC,cAAWwpC,EA0B1DjR,EAAOr6B,QAhBP,SAAS42uC,EAAal4uC,GAEpB,GAAoB,iBAATA,EACT,OAAOA,EAET,GAAIwQ,EAAQxQ,GAEV,OAAO6vwC,EAAS7vwC,EAAOk4uC,GAAgB,GAEzC,GAAIuyB,EAASzqwC,GACX,OAAO61wC,EAAiBA,EAAep3wC,KAAKuB,GAAS,GAEvD,IAAIqiB,EAAUriB,EAAQ,GACtB,MAAkB,KAAVqiB,GAAkB,EAAIriB,IA3BjB,IA2BwC,KAAOqiB,CAC9D,mBClCA,IAAIyzvC,EAAkB,EAAQ,OAG1BC,EAAc,OAelBp6uC,EAAOr6B,QANP,SAAkBsa,GAChB,OAAOA,EACHA,EAAOhb,MAAM,EAAGk1wC,EAAgBl6vC,GAAU,GAAGtQ,QAAQyqwC,EAAa,IAClEn6vC,CACN,aCHA+f,EAAOr6B,QANP,SAAmBs9C,GACjB,OAAO,SAAS5+C,GACd,OAAO4+C,EAAK5+C,EACd,CACF,mBCXA,IAAI4swC,EAAW,EAAQ,OACnB+C,EAAgB,EAAQ,OACxBC,EAAoB,EAAQ,OAC5BG,EAAW,EAAQ,OACnBiG,EAAY,EAAQ,OACpBC,EAAa,EAAQ,OAkEzBt6uC,EAAOr6B,QApDP,SAAkBy3C,EAAOq0tC,EAAUx1xB,GACjC,IAAI/7d,GAAS,EACT5O,EAAW0iwC,EACXzwwC,EAAS65C,EAAM75C,OACf8wwC,GAAW,EACX3tvC,EAAS,GACTm5S,EAAOn5S,EAEX,GAAIu1d,EACFo4xB,GAAW,EACX/iwC,EAAW2iwC,OAER,GAAI1wwC,GAvBY,IAuBgB,CACnC,IAAI4L,EAAMsiwC,EAAW,KAAO4I,EAAUj9tC,GACtC,GAAIjuC,EACF,OAAOmrwC,EAAWnrwC,GAEpBklwC,GAAW,EACX/iwC,EAAW8iwC,EACXv08B,EAAO,IAAIox8B,CACb,MAEEpx8B,EAAO4x8B,EAAW,GAAK/qvC,EAEzBo4f,EACA,OAAS5+f,EAAQ3c,GAAQ,CACvB,IAAIc,EAAQ+4C,EAAMl9B,GACdq0vC,EAAW9C,EAAWA,EAASptwC,GAASA,EAG5C,GADAA,EAAS43e,GAAwB,IAAV53e,EAAeA,EAAQ,EAC1CgwwC,GAAYE,GAAaA,EAAU,CAErC,IADA,IAAIgG,EAAY168B,EAAKt8T,OACdg3wC,KACL,GAAI168B,EAAK068B,KAAehG,EACtB,SAASz1vB,EAGT2yvB,GACF5x8B,EAAK96T,KAAKwvwC,GAEZ7tvC,EAAO3hB,KAAKV,EACd,MACUiN,EAASuuT,EAAM008B,EAAUt4xB,KAC7Bp8K,IAASn5S,GACXm5S,EAAK96T,KAAKwvwC,GAEZ7tvC,EAAO3hB,KAAKV,GAEhB,CACA,OAAOqiB,CACT,aCzDAsZ,EAAOr6B,QAJP,SAAkBywB,EAAOrO,GACvB,OAAOqO,EAAMnnB,IAAI8Y,EACnB,kBCVA,IAAIixvC,EAAoB,EAAQ,OAahCh5uC,EAAOr6B,QAJP,SAA6BtB,GAC3B,OAAO20wC,EAAkB30wC,GAASA,EAAQ,EAC5C,mBCXA,IAAIwQ,EAAU,EAAQ,OAClB2jwC,EAAQ,EAAQ,OAChBgC,EAAe,EAAQ,OACvB/ywC,EAAW,EAAQ,OAiBvBu4B,EAAOr6B,QAPP,SAAkBtB,EAAOi8C,GACvB,OAAIzrC,EAAQxQ,GACHA,EAEFm0wC,EAAMn0wC,EAAOi8C,GAAU,CAACj8C,GAASm2wC,EAAa/ywC,EAASpD,GAChE,mBClBA,IAAIo2wC,EAAY,EAAQ,OAiBxBz6uC,EAAOr6B,QANP,SAAmBy3C,EAAO1T,EAAOC,GAC/B,IAAIpmC,EAAS65C,EAAM75C,OAEnB,OADAomC,OAAcsH,IAARtH,EAAoBpmC,EAASomC,GAC1BD,GAASC,GAAOpmC,EAAU65C,EAAQq9tC,EAAUr9tC,EAAO1T,EAAOC,EACrE,mBCfA,IAAI9mB,EAAa,EAAQ,OAezBmd,EAAOr6B,QANP,SAA0BupK,GACxB,IAAIxoJ,EAAS,IAAIwoJ,EAAY/rK,YAAY+rK,EAAY5jJ,YAErD,OADA,IAAIzI,EAAW6D,GAAQvX,IAAI,IAAI0T,EAAWqsJ,IACnCxoJ,CACT,8BCbA,IAAI2sI,EAAO,EAAQ,MAGfqnnC,EAA4C/0wC,IAAYA,EAAQ6mF,UAAY7mF,EAG5Eg1wC,EAAaD,GAA4C16uC,IAAWA,EAAOwsD,UAAYxsD,EAMvFnV,EAHgB8vvC,GAAcA,EAAWh1wC,UAAY+0wC,EAG5BrnnC,EAAKxoI,YAASomB,EACvC2puC,EAAc/vvC,EAASA,EAAO+vvC,iBAAc3puC,EAqBhDjR,EAAOr6B,QAXP,SAAqBylB,EAAQsovC,GAC3B,GAAIA,EACF,OAAOtovC,EAAOnmB,QAEhB,IAAI1B,EAAS6nB,EAAO7nB,OAChBmjB,EAASk0vC,EAAcA,EAAYr3wC,GAAU,IAAI6nB,EAAOjoB,YAAYI,GAGxE,OADA6nB,EAAO43G,KAAKt8G,GACLA,CACT,mBChCA,IAAIm0vC,EAAmB,EAAQ,OAe/B76uC,EAAOr6B,QALP,SAAuBsmN,EAAUynjC,GAC/B,IAAItovC,EAASsovC,EAASmH,EAAiB5ujC,EAAS7gM,QAAU6gM,EAAS7gM,OACnE,OAAO,IAAI6gM,EAAS9oN,YAAYioB,EAAQ6gM,EAAS5gM,WAAY4gM,EAAS3gM,WACxE,aCZA,IAAIwvvC,EAAU,OAed96uC,EAAOr6B,QANP,SAAqB4mhB,GACnB,IAAI7lgB,EAAS,IAAI6lgB,EAAOpphB,YAAYophB,EAAOxhhB,OAAQ+vwC,EAAQxlwC,KAAKi3gB,IAEhE,OADA7lgB,EAAO+uC,UAAY82d,EAAO92d,UACnB/uC,CACT,mBCdA,IAAI9hB,EAAS,EAAQ,OAGjBq1wC,EAAcr1wC,EAASA,EAAOhC,eAAYquC,EAC1C8puC,EAAgBd,EAAcA,EAAY7twC,aAAU6kC,EAaxDjR,EAAOr6B,QAJP,SAAqBy3f,GACnB,OAAO29wB,EAAgBv4wC,OAAOu4wC,EAAcj4wC,KAAKs6f,IAAW,CAAC,CAC/D,mBCfA,IAAIy9wB,EAAmB,EAAQ,OAe/B76uC,EAAOr6B,QALP,SAAyBkgK,EAAY6tmC,GACnC,IAAItovC,EAASsovC,EAASmH,EAAiBh1mC,EAAWz6I,QAAUy6I,EAAWz6I,OACvE,OAAO,IAAIy6I,EAAW1iK,YAAYioB,EAAQy6I,EAAWx6I,WAAYw6I,EAAWtiK,OAC9E,mBCbA,IAAIurwC,EAAW,EAAQ,OAwCvB9uuC,EAAOr6B,QA9BP,SAA0BtB,EAAO06C,GAC/B,GAAI16C,IAAU06C,EAAO,CACnB,IAAIi8tC,OAAyB/puC,IAAV5sC,EACf42wC,EAAsB,OAAV52wC,EACZ62wC,EAAiB72wC,GAAUA,EAC3B82wC,EAAcrM,EAASzqwC,GAEvB+2wC,OAAyBnquC,IAAV8N,EACfs8tC,EAAsB,OAAVt8tC,EACZu8tC,EAAiBv8tC,GAAUA,EAC3Bw8tC,EAAczM,EAAS/vtC,GAE3B,IAAMs8tC,IAAcE,IAAgBJ,GAAe92wC,EAAQ06C,GACtDo8tC,GAAeC,GAAgBE,IAAmBD,IAAcE,GAChEN,GAAaG,GAAgBE,IAC5BN,GAAgBM,IACjBJ,EACH,OAAO,EAET,IAAMD,IAAcE,IAAgBI,GAAel3wC,EAAQ06C,GACtDw8tC,GAAeP,GAAgBE,IAAmBD,IAAcE,GAChEE,GAAaL,GAAgBE,IAC5BE,GAAgBF,IACjBI,EACH,OAAQ,CAEZ,CACA,OAAO,CACT,mBCtCA,IAAIE,EAAmB,EAAQ,OA2C/Bx7uC,EAAOr6B,QA3BP,SAAyB26C,EAAQvB,EAAO26tC,GAOtC,IANA,IAAIx5vC,GAAS,EACTu7vC,EAAcn7tC,EAAOo7tC,SACrBC,EAAc58tC,EAAM28tC,SACpBn4wC,EAASk4wC,EAAYl4wC,OACrBq4wC,EAAelC,EAAOn2wC,SAEjB2c,EAAQ3c,GAAQ,CACvB,IAAImjB,EAAS80vC,EAAiBC,EAAYv7vC,GAAQy7vC,EAAYz7vC,IAC9D,GAAIwG,EACF,OAAIxG,GAAS07vC,EACJl1vC,EAGFA,GAAmB,QADdgzvC,EAAOx5vC,IACiB,EAAI,EAE5C,CAQA,OAAOogC,EAAOpgC,MAAQ6+B,EAAM7+B,KAC9B,aCtBA8f,EAAOr6B,QAXP,SAAmBoF,EAAQqyC,GACzB,IAAIl9B,GAAS,EACT3c,EAASwH,EAAOxH,OAGpB,IADA65C,IAAUA,EAAQz6C,MAAMY,MACf2c,EAAQ3c,GACf65C,EAAMl9B,GAASnV,EAAOmV,GAExB,OAAOk9B,CACT,mBCjBA,IAAIw/3B,EAAc,EAAQ,OACtBu1V,EAAkB,EAAQ,OAsC9BnyuC,EAAOr6B,QA1BP,SAAoBoF,EAAQolC,EAAOmQ,EAAQmztC,GACzC,IAAIlqoC,GAASjpF,EACbA,IAAWA,EAAS,CAAC,GAKrB,IAHA,IAAIpgC,GAAS,EACT3c,EAAS4sC,EAAM5sC,SAEV2c,EAAQ3c,GAAQ,CACvB,IAAIwkB,EAAMooB,EAAMjwB,GAEZivI,EAAWsknC,EACXA,EAAWnztC,EAAOv4B,GAAMhd,EAAOgd,GAAMA,EAAKu4B,EAAQv1C,QAClDkmC,OAEaA,IAAbk+G,IACFA,EAAWpkJ,EAAOgd,IAEhBwhH,EACF4ooC,EAAgB7xtC,EAAQv4B,EAAKonI,GAE7BytxB,EAAYt83B,EAAQv4B,EAAKonI,EAE7B,CACA,OAAO7uG,CACT,mBCrCA,IAAI+xtC,EAAa,EAAQ,OACrBwJ,EAAa,EAAQ,MAczB77uC,EAAOr6B,QAJP,SAAqBoF,EAAQu1C,GAC3B,OAAO+xtC,EAAWtnwC,EAAQ8wwC,EAAW9wwC,GAASu1C,EAChD,mBCbA,IAAI+xtC,EAAa,EAAQ,OACrByJ,EAAe,EAAQ,OAc3B97uC,EAAOr6B,QAJP,SAAuBoF,EAAQu1C,GAC7B,OAAO+xtC,EAAWtnwC,EAAQ+wwC,EAAa/wwC,GAASu1C,EAClD,mBCbA,IAGIy7tC,EAHO,EAAQ,MAGG,sBAEtB/7uC,EAAOr6B,QAAUo2wC,mBCLjB,IAAIC,EAAW,EAAQ,OACnBC,EAAiB,EAAQ,OAmC7Bj8uC,EAAOr6B,QA1BP,SAAwBu2wC,GACtB,OAAOF,GAAS,SAAS17tC,EAAQxC,GAC/B,IAAI59B,GAAS,EACT3c,EAASu6C,EAAQv6C,OACjBkwwC,EAAalwwC,EAAS,EAAIu6C,EAAQv6C,EAAS,QAAK0tC,EAChDounB,EAAQ97pB,EAAS,EAAIu6C,EAAQ,QAAK7M,EAWtC,IATAwiuC,EAAcyI,EAAS34wC,OAAS,GAA0B,mBAAdkwwC,GACvClwwC,IAAUkwwC,QACXxiuC,EAEAounB,GAAS48mB,EAAen+tC,EAAQ,GAAIA,EAAQ,GAAIuhnB,KAClDo0mB,EAAalwwC,EAAS,OAAI0tC,EAAYwiuC,EACtClwwC,EAAS,GAEX+8C,EAAS99C,OAAO89C,KACPpgC,EAAQ3c,GAAQ,CACvB,IAAIwH,EAAS+yC,EAAQ59B,GACjBnV,GACFmxwC,EAAS57tC,EAAQv1C,EAAQmV,EAAOuzvC,EAEpC,CACA,OAAOnztC,CACT,GACF,mBClCA,IAAI2s5B,EAAc,EAAQ,OA+B1Bjt6B,EAAOr6B,QArBP,SAAwBw2wC,EAAUvH,GAChC,OAAO,SAASvzgC,EAAYowgC,GAC1B,GAAkB,MAAdpwgC,EACF,OAAOA,EAET,IAAK4rsB,EAAY5rsB,GACf,OAAO86gC,EAAS96gC,EAAYowgC,GAM9B,IAJA,IAAIluwC,EAAS89P,EAAW99P,OACpB2c,EAAQ00vC,EAAYrxwC,GAAU,EAC9B+iI,EAAW9jI,OAAO6+P,IAEduzgC,EAAY10vC,MAAYA,EAAQ3c,KACa,IAA/CkuwC,EAASnroC,EAASpmH,GAAQA,EAAOomH,KAIvC,OAAO+6H,CACT,CACF,aCLArhO,EAAOr6B,QAjBP,SAAuBivwC,GACrB,OAAO,SAASt0tC,EAAQmxtC,EAAU2D,GAMhC,IALA,IAAIl1vC,GAAS,EACTomH,EAAW9jI,OAAO89C,GAClBnQ,EAAQiluC,EAAS90tC,GACjB/8C,EAAS4sC,EAAM5sC,OAEZA,KAAU,CACf,IAAIwkB,EAAMooB,EAAMykuC,EAAYrxwC,IAAW2c,GACvC,IAA+C,IAA3CuxvC,EAASnroC,EAASv+G,GAAMA,EAAKu+G,GAC/B,KAEJ,CACA,OAAOhmF,CACT,CACF,mBCtBA,IAAI87tC,EAAY,EAAQ,OACpBC,EAAa,EAAQ,OACrB59jB,EAAgB,EAAQ,OACxBh3sB,EAAW,EAAQ,OA6BvBu4B,EAAOr6B,QApBP,SAAyBgyE,GACvB,OAAO,SAAS13D,GACdA,EAASxY,EAASwY,GAElB,IAAIq8vC,EAAaD,EAAWp8vC,GACxBw+rB,EAAcx+rB,QACdgxB,EAEA0rd,EAAM2/wB,EACNA,EAAW,GACXr8vC,EAAOlE,OAAO,GAEd2pC,EAAW42tC,EACXF,EAAUE,EAAY,GAAGvswC,KAAK,IAC9BkQ,EAAOhb,MAAM,GAEjB,OAAO03f,EAAIhlb,KAAgBjyB,CAC7B,CACF,mBC9BA,IAAI2tG,EAAO,EAAQ,MACf4myB,EAAY,EAAQ,OACpB7nuB,EAAW,EAAQ,OACnB3qN,EAAW,EAAQ,OAGnB80wC,EAAiBlpnC,EAAKzoH,SACtBikuC,EAAY9owC,KAAKgL,IA2BrBivB,EAAOr6B,QAlBP,SAAqBgyE,GACnB,IAAI10B,EAAOl9C,KAAK4xE,GAChB,OAAO,SAASs1E,EAAQksH,GAGtB,GAFAlsH,EAASmlE,EAASnlE,IAClBksH,EAAyB,MAAbA,EAAoB,EAAI01/B,EAAU50U,EAAU9grB,GAAY,OACnDojgC,EAAetvnC,GAAS,CAGvC,IAAIywW,GAAQj2f,EAASwlJ,GAAU,KAAKnlJ,MAAM,KACtCzD,EAAQ4+C,EAAKy6c,EAAK,GAAK,MAAQA,EAAK,GAAKvkP,IAG7C,SADAukP,GAAQj2f,EAASpD,GAAS,KAAKyD,MAAM,MACvB,GAAK,MAAQ41f,EAAK,GAAKvkP,GACvC,CACA,OAAOl2N,EAAKgqG,EACd,CACF,mBChCA,IAAIpkI,EAAM,EAAQ,OACdm9B,EAAO,EAAQ,OACfs0tC,EAAa,EAAQ,OAYrBD,EAAcxxvC,GAAQ,EAAIyxvC,EAAW,IAAIzxvC,EAAI,CAAC,EAAE,KAAK,IAT1C,IASoE,SAASjJ,GAC1F,OAAO,IAAIiJ,EAAIjJ,EACjB,EAF4EomC,EAI5EhmB,EAAOr6B,QAAU00wC,mBClBjB,IAAIvK,EAAY,EAAQ,OAEpB1pwC,EAAkB,WACpB,IACE,IAAI68C,EAAO6stC,EAAUttwC,OAAQ,kBAE7B,OADAygD,EAAK,CAAC,EAAG,GAAI,CAAC,GACPA,CACT,CAAE,MAAO5gD,GAAI,CACf,CANqB,GAQrB29B,EAAOr6B,QAAUS,mBCVjB,IAAI6qwC,EAAW,EAAQ,OACnBuL,EAAY,EAAQ,OACpBpI,EAAW,EAAQ,OAiFvBp0uC,EAAOr6B,QA9DP,SAAqBy3C,EAAO2B,EAAOy0tC,EAASC,EAAY4C,EAAWxguC,GACjE,IAAI4muC,EAjBqB,EAiBTjJ,EACZkJ,EAAYt/tC,EAAM75C,OAClBoywC,EAAY52tC,EAAMx7C,OAEtB,GAAIm5wC,GAAa/G,KAAe8G,GAAa9G,EAAY+G,GACvD,OAAO,EAGT,IAAIC,EAAa9muC,EAAMxvC,IAAI+2C,GACvBw/tC,EAAa/muC,EAAMxvC,IAAI04C,GAC3B,GAAI49tC,GAAcC,EAChB,OAAOD,GAAc59tC,GAAS69tC,GAAcx/tC,EAE9C,IAAIl9B,GAAS,EACTwG,GAAS,EACTm5S,EA/BuB,EA+Bf2z8B,EAAoC,IAAIvC,OAAWhguC,EAM/D,IAJA4E,EAAM1mC,IAAIiuC,EAAO2B,GACjBlJ,EAAM1mC,IAAI4vC,EAAO3B,KAGRl9B,EAAQw8vC,GAAW,CAC1B,IAAIG,EAAWz/tC,EAAMl9B,GACjB48vC,EAAW/9tC,EAAM7+B,GAErB,GAAIuzvC,EACF,IAAIsJ,EAAWN,EACXhJ,EAAWqJ,EAAUD,EAAU38vC,EAAO6+B,EAAO3B,EAAOvH,GACpD49tC,EAAWoJ,EAAUC,EAAU58vC,EAAOk9B,EAAO2B,EAAOlJ,GAE1D,QAAiB5E,IAAb8ruC,EAAwB,CAC1B,GAAIA,EACF,SAEFr2vC,GAAS,EACT,KACF,CAEA,GAAIm5S,GACF,IAAK288B,EAAUz9tC,GAAO,SAAS+9tC,EAAUlH,GACnC,IAAKxB,EAASv08B,EAAM+18B,KACfiH,IAAaC,GAAYzG,EAAUwG,EAAUC,EAAUtJ,EAASC,EAAY59tC,IAC/E,OAAOgqR,EAAK96T,KAAK6wwC,EAErB,IAAI,CACNlvvC,GAAS,EACT,KACF,OACK,GACDm2vC,IAAaC,IACXzG,EAAUwG,EAAUC,EAAUtJ,EAASC,EAAY59tC,GACpD,CACLnvB,GAAS,EACT,KACF,CACF,CAGA,OAFAmvB,EAAc,OAAEuH,GAChBvH,EAAc,OAAEkJ,GACTr4B,CACT,mBCjFA,IAAI9hB,EAAS,EAAQ,OACjBie,EAAa,EAAQ,OACrByvM,EAAK,EAAQ,OACb2jjC,EAAc,EAAQ,OACtB9+C,EAAa,EAAQ,OACrBmjD,EAAa,EAAQ,OAqBrBL,EAAcr1wC,EAASA,EAAOhC,eAAYquC,EAC1C8puC,EAAgBd,EAAcA,EAAY7twC,aAAU6kC,EAoFxDjR,EAAOr6B,QAjEP,SAAoB26C,EAAQvB,EAAOzkC,EAAKk5vC,EAASC,EAAY4C,EAAWxguC,GACtE,OAAQv7B,GACN,IAzBc,oBA0BZ,GAAKgmC,EAAOh1B,YAAcyzB,EAAMzzB,YAC3Bg1B,EAAOj1B,YAAc0zB,EAAM1zB,WAC9B,OAAO,EAETi1B,EAASA,EAAOl1B,OAChB2zB,EAAQA,EAAM3zB,OAEhB,IAlCiB,uBAmCf,QAAKk1B,EAAOh1B,YAAcyzB,EAAMzzB,aAC3B+qvC,EAAU,IAAIxzvC,EAAWy9B,GAAS,IAAIz9B,EAAWk8B,KAKxD,IAnDU,mBAoDV,IAnDU,gBAoDV,IAjDY,kBAoDV,OAAOuzK,GAAIhyK,GAASvB,GAEtB,IAxDW,iBAyDT,OAAOuB,EAAO1yC,MAAQmxC,EAAMnxC,MAAQ0yC,EAAOrrB,SAAW8pB,EAAM9pB,QAE9D,IAxDY,kBAyDZ,IAvDY,kBA2DV,OAAOqrB,GAAWvB,EAAQ,GAE5B,IAjES,eAkEP,IAAIogvB,EAAUg4b,EAEhB,IAjES,eAkEP,IAAIslD,EA5EiB,EA4ELjJ,EAGhB,GAFAr0e,IAAYA,EAAUm7e,GAElBh6tC,EAAOx4B,MAAQi3B,EAAMj3B,OAAS20vC,EAChC,OAAO,EAGT,IAAIrzb,EAAUvzyB,EAAMxvC,IAAIi6C,GACxB,GAAI8oyB,EACF,OAAOA,GAAWrqyB,EAEpBy0tC,GAtFuB,EAyFvB39tC,EAAM1mC,IAAImxC,EAAQvB,GAClB,IAAIr4B,EAASuvvC,EAAY92e,EAAQ7+uB,GAAS6+uB,EAAQpgvB,GAAQy0tC,EAASC,EAAY4C,EAAWxguC,GAE1F,OADAA,EAAc,OAAEyK,GACT55B,EAET,IAnFY,kBAoFV,GAAIq0vC,EACF,OAAOA,EAAcj4wC,KAAKw9C,IAAWy6tC,EAAcj4wC,KAAKi8C,GAG9D,OAAO,CACT,mBC7GA,IAAI+ztC,EAAa,EAAQ,OASrBjwwC,EAHcL,OAAOI,UAGQC,eAgFjCm9B,EAAOr6B,QAjEP,SAAsB26C,EAAQvB,EAAOy0tC,EAASC,EAAY4C,EAAWxguC,GACnE,IAAI4muC,EAtBqB,EAsBTjJ,EACZwJ,EAAWlK,EAAWxytC,GACtB28tC,EAAYD,EAASz5wC,OAIzB,GAAI05wC,GAHWnK,EAAW/ztC,GACDx7C,SAEMk5wC,EAC7B,OAAO,EAGT,IADA,IAAIv8vC,EAAQ+8vC,EACL/8vC,KAAS,CACd,IAAI6H,EAAMi1vC,EAAS98vC,GACnB,KAAMu8vC,EAAY10vC,KAAOg3B,EAAQl8C,EAAeC,KAAKi8C,EAAOh3B,IAC1D,OAAO,CAEX,CAEA,IAAIm1vC,EAAarnuC,EAAMxvC,IAAIi6C,GACvBs8tC,EAAa/muC,EAAMxvC,IAAI04C,GAC3B,GAAIm+tC,GAAcN,EAChB,OAAOM,GAAcn+tC,GAAS69tC,GAAct8tC,EAE9C,IAAI55B,GAAS,EACbmvB,EAAM1mC,IAAImxC,EAAQvB,GAClBlJ,EAAM1mC,IAAI4vC,EAAOuB,GAGjB,IADA,IAAI68tC,EAAWV,IACNv8vC,EAAQ+8vC,GAAW,CAE1B,IAAI7K,EAAW9xtC,EADfv4B,EAAMi1vC,EAAS98vC,IAEX48vC,EAAW/9tC,EAAMh3B,GAErB,GAAI0rvC,EACF,IAAIsJ,EAAWN,EACXhJ,EAAWqJ,EAAU1K,EAAUrqvC,EAAKg3B,EAAOuB,EAAQzK,GACnD49tC,EAAWrB,EAAU0K,EAAU/0vC,EAAKu4B,EAAQvB,EAAOlJ,GAGzD,UAAmB5E,IAAb8ruC,EACG3K,IAAa0K,GAAYzG,EAAUjE,EAAU0K,EAAUtJ,EAASC,EAAY59tC,GAC7EknuC,GACD,CACLr2vC,GAAS,EACT,KACF,CACAy2vC,IAAaA,EAAkB,eAAPp1vC,EAC1B,CACA,GAAIrB,IAAWy2vC,EAAU,CACvB,IAAIC,EAAU98tC,EAAOn9C,YACjBk6wC,EAAUt+tC,EAAM57C,YAGhBi6wC,GAAWC,KACV,gBAAiB/8tC,MAAU,gBAAiBvB,IACzB,mBAAXq+tC,GAAyBA,aAAmBA,GACjC,mBAAXC,GAAyBA,aAAmBA,IACvD32vC,GAAS,EAEb,CAGA,OAFAmvB,EAAc,OAAEyK,GAChBzK,EAAc,OAAEkJ,GACTr4B,CACT,mBCvFA,IAAIguH,EAAU,EAAQ,OAClBmloC,EAAW,EAAQ,OACnBC,EAAc,EAAQ,OAa1B95uC,EAAOr6B,QAJP,SAAkBs9C,GAChB,OAAO62tC,EAAYD,EAAS52tC,OAAMhS,EAAWyjG,GAAUzxF,EAAO,GAChE,mBCZA,IAAIwrtC,EAA8B,iBAAV,EAAAppwC,GAAsB,EAAAA,GAAU,EAAAA,EAAO7C,SAAWA,QAAU,EAAA6C,EAEpF26B,EAAOr6B,QAAU8owC,mBCHjB,IAAI6O,EAAiB,EAAQ,OACzBzB,EAAa,EAAQ,MACrBrlwC,EAAO,EAAQ,OAanBwpB,EAAOr6B,QAJP,SAAoB26C,GAClB,OAAOg9tC,EAAeh9tC,EAAQ9pC,EAAMqlwC,EACtC,mBCbA,IAAIyB,EAAiB,EAAQ,OACzBxB,EAAe,EAAQ,OACvBxJ,EAAS,EAAQ,OAcrBtyuC,EAAOr6B,QAJP,SAAsB26C,GACpB,OAAOg9tC,EAAeh9tC,EAAQgytC,EAAQwJ,EACxC,mBCdA,IAAIyB,EAAY,EAAQ,OAiBxBv9uC,EAAOr6B,QAPP,SAAoB4sB,EAAKxK,GACvB,IAAIrV,EAAO6f,EAAI2+uC,SACf,OAAOqM,EAAUx1vC,GACbrV,EAAmB,iBAAPqV,EAAkB,SAAW,QACzCrV,EAAK6f,GACX,mBCfA,IAAIkmvC,EAAqB,EAAQ,OAC7BjiwC,EAAO,EAAQ,OAsBnBwpB,EAAOr6B,QAbP,SAAsB26C,GAIpB,IAHA,IAAI55B,EAASlQ,EAAK8pC,GACd/8C,EAASmjB,EAAOnjB,OAEbA,KAAU,CACf,IAAIwkB,EAAMrB,EAAOnjB,GACbc,EAAQi8C,EAAOv4B,GAEnBrB,EAAOnjB,GAAU,CAACwkB,EAAK1jB,EAAOo0wC,EAAmBp0wC,GACnD,CACA,OAAOqiB,CACT,mBCrBA,IAAI82vC,EAAe,EAAQ,OACvBp+oC,EAAW,EAAQ,OAevBp/F,EAAOr6B,QALP,SAAmB26C,EAAQv4B,GACzB,IAAI1jB,EAAQ+6H,EAAS9+E,EAAQv4B,GAC7B,OAAOy1vC,EAAan5wC,GAASA,OAAQ4sC,CACvC,mBCdA,IAGIwsuC,EAHU,EAAQ,MAGHC,CAAQl7wC,OAAO2b,eAAgB3b,QAElDw9B,EAAOr6B,QAAU83wC,iBCLjB,IAAI74wC,EAAS,EAAQ,OAGjB6ywC,EAAcj1wC,OAAOI,UAGrBC,EAAiB40wC,EAAY50wC,eAO7B86wC,EAAuBlG,EAAYhwwC,SAGnC8twC,EAAiB3wwC,EAASA,EAAOyoB,iBAAc4jB,EA6BnDjR,EAAOr6B,QApBP,SAAmBtB,GACjB,IAAIu5wC,EAAQ/6wC,EAAeC,KAAKuB,EAAOkxwC,GACnCj7vC,EAAMjW,EAAMkxwC,GAEhB,IACElxwC,EAAMkxwC,QAAkBtkuC,EACxB,IAAI4suC,GAAW,CACjB,CAAE,MAAOx7wC,GAAI,CAEb,IAAIqkB,EAASi3vC,EAAqB76wC,KAAKuB,GAQvC,OAPIw5wC,IACED,EACFv5wC,EAAMkxwC,GAAkBj7vC,SAEjBjW,EAAMkxwC,IAGV7uvC,CACT,kBC3CA,IAAIo3vC,EAAc,EAAQ,OACtBC,EAAY,EAAQ,OAMpBn6wC,EAHcpB,OAAOI,UAGcgB,qBAGnCo6wC,EAAmBx7wC,OAAOmB,sBAS1Bk4wC,EAAcmC,EAA+B,SAAS19tC,GACxD,OAAc,MAAVA,EACK,IAETA,EAAS99C,OAAO89C,GACTw9tC,EAAYE,EAAiB19tC,IAAS,SAAS88c,GACpD,OAAOx5f,EAAqBd,KAAKw9C,EAAQ88c,EAC3C,IACF,EARqC2gxB,EAUrC/9uC,EAAOr6B,QAAUk2wC,mBC7BjB,IAAIhH,EAAY,EAAQ,OACpB4I,EAAe,EAAQ,OACvB5B,EAAa,EAAQ,MACrBkC,EAAY,EAAQ,OAYpBjC,EATmBt5wC,OAAOmB,sBASqB,SAAS28C,GAE1D,IADA,IAAI55B,EAAS,GACN45B,GACLu0tC,EAAUnuvC,EAAQm1vC,EAAWv7tC,IAC7BA,EAASm9tC,EAAan9tC,GAExB,OAAO55B,CACT,EAPuCq3vC,EASvC/9uC,EAAOr6B,QAAUm2wC,kBCxBjB,IAAIr6vC,EAAW,EAAQ,OACnBoM,EAAM,EAAQ,OACdhqB,EAAU,EAAQ,OAClBglB,EAAM,EAAQ,OACdxa,EAAU,EAAQ,OAClBynwC,EAAa,EAAQ,OACrBwB,EAAW,EAAQ,OAGnB2G,EAAS,eAETC,EAAa,mBACbC,EAAS,eACTC,EAAa,mBAEbC,EAAc,oBAGdC,EAAqBhH,EAAS71vC,GAC9B88vC,EAAgBjH,EAASzpvC,GACzB2wvC,EAAoBlH,EAASzzwC,GAC7B46wC,EAAgBnH,EAASzuvC,GACzB61vC,EAAoBpH,EAASjpwC,GAS7B4suC,EAAS66B,GAGRr0vC,GAAYw5tC,EAAO,IAAIx5tC,EAAS,IAAID,YAAY,MAAQ68vC,GACxDxwvC,GAAOottC,EAAO,IAAIpttC,IAAQowvC,GAC1Bp6wC,GAAWo3uC,EAAOp3uC,EAAQ2kB,YAAc01vC,GACxCr1vC,GAAOoytC,EAAO,IAAIpytC,IAAQs1vC,GAC1B9vwC,GAAW4suC,EAAO,IAAI5suC,IAAY+vwC,KACrCnjC,EAAS,SAAS52uC,GAChB,IAAIqiB,EAASovvC,EAAWzxwC,GACpB6n8B,EA/BQ,mBA+BDxl7B,EAAsBriB,EAAMlB,iBAAc8tC,EACjD0tuC,EAAazyU,EAAOorU,EAASprU,GAAQ,GAEzC,GAAIyyU,EACF,OAAQA,GACN,KAAKL,EAAoB,OAAOD,EAChC,KAAKE,EAAe,OAAON,EAC3B,KAAKO,EAAmB,OAAON,EAC/B,KAAKO,EAAe,OAAON,EAC3B,KAAKO,EAAmB,OAAON,EAGnC,OAAO13vC,CACT,GAGFsZ,EAAOr6B,QAAUs1uC,aC7CjBj7sC,EAAOr6B,QAJP,SAAkB26C,EAAQv4B,GACxB,OAAiB,MAAVu4B,OAAiBrP,EAAYqP,EAAOv4B,EAC7C,mBCVA,IAAIotvC,EAAW,EAAQ,OACnBtD,EAAc,EAAQ,OACtBh9vC,EAAU,EAAQ,OAClBi9vC,EAAU,EAAQ,OAClB8F,EAAW,EAAQ,OACnBjivC,EAAQ,EAAQ,OAiCpBqK,EAAOr6B,QAtBP,SAAiB26C,EAAQ/mB,EAAMqlvC,GAO7B,IAJA,IAAI1+vC,GAAS,EACT3c,GAHJg2B,EAAO47uC,EAAS57uC,EAAM+mB,IAGJ/8C,OACdmjB,GAAS,IAEJxG,EAAQ3c,GAAQ,CACvB,IAAIwkB,EAAM4N,EAAM4D,EAAKrZ,IACrB,KAAMwG,EAAmB,MAAV45B,GAAkBs+tC,EAAQt+tC,EAAQv4B,IAC/C,MAEFu4B,EAASA,EAAOv4B,EAClB,CACA,OAAIrB,KAAYxG,GAAS3c,EAChBmjB,KAETnjB,EAAmB,MAAV+8C,EAAiB,EAAIA,EAAO/8C,SAClBq0wC,EAASr0wC,IAAWuuwC,EAAQ/pvC,EAAKxkB,KACjDsR,EAAQyrC,IAAWuxtC,EAAYvxtC,GACpC,aCnCA,IAWIu+tC,EAAe5zuC,OAAO,uFAa1BjL,EAAOr6B,QAJP,SAAoBsa,GAClB,OAAO4+vC,EAAatwwC,KAAK0R,EAC3B,mBCvBA,IAAI6+vC,EAAe,EAAQ,OAc3B9+uC,EAAOr6B,QALP,WACEzC,KAAKguwC,SAAW4N,EAAeA,EAAa,MAAQ,CAAC,EACrD57wC,KAAK4kB,KAAO,CACd,aCIAkY,EAAOr6B,QANP,SAAoBoiB,GAClB,IAAIrB,EAASxjB,KAAK+L,IAAI8Y,WAAe7kB,KAAKguwC,SAASnpvC,GAEnD,OADA7kB,KAAK4kB,MAAQpB,EAAS,EAAI,EACnBA,CACT,mBCdA,IAAIo4vC,EAAe,EAAQ,OASvBj8wC,EAHcL,OAAOI,UAGQC,eAoBjCm9B,EAAOr6B,QATP,SAAiBoiB,GACf,IAAIrV,EAAOxP,KAAKguwC,SAChB,GAAI4N,EAAc,CAChB,IAAIp4vC,EAAShU,EAAKqV,GAClB,MArBiB,8BAqBVrB,OAA4BuqB,EAAYvqB,CACjD,CACA,OAAO7jB,EAAeC,KAAK4P,EAAMqV,GAAOrV,EAAKqV,QAAOkpB,CACtD,mBC3BA,IAAI6tuC,EAAe,EAAQ,OAMvBj8wC,EAHcL,OAAOI,UAGQC,eAgBjCm9B,EAAOr6B,QALP,SAAiBoiB,GACf,IAAIrV,EAAOxP,KAAKguwC,SAChB,OAAO4N,OAA8B7tuC,IAAdv+B,EAAKqV,GAAsBllB,EAAeC,KAAK4P,EAAMqV,EAC9E,mBCpBA,IAAI+2vC,EAAe,EAAQ,OAsB3B9+uC,EAAOr6B,QAPP,SAAiBoiB,EAAK1jB,GACpB,IAAIqO,EAAOxP,KAAKguwC,SAGhB,OAFAhuwC,KAAK4kB,MAAQ5kB,KAAK+L,IAAI8Y,GAAO,EAAI,EACjCrV,EAAKqV,GAAQ+2vC,QAA0B7tuC,IAAV5sC,EAfV,4BAekDA,EAC9DnB,IACT,aCnBA,IAGIL,EAHcL,OAAOI,UAGQC,eAqBjCm9B,EAAOr6B,QAZP,SAAwBy3C,GACtB,IAAI75C,EAAS65C,EAAM75C,OACfmjB,EAAS,IAAI02B,EAAMj6C,YAAYI,GAOnC,OAJIA,GAA6B,iBAAZ65C,EAAM,IAAkBv6C,EAAeC,KAAKs6C,EAAO,WACtE12B,EAAOxG,MAAQk9B,EAAMl9B,MACrBwG,EAAOitC,MAAQvW,EAAMuW,OAEhBjtC,CACT,mBCvBA,IAAIm0vC,EAAmB,EAAQ,OAC3BkE,EAAgB,EAAQ,OACxBC,EAAc,EAAQ,OACtBC,EAAc,EAAQ,OACtBlG,EAAkB,EAAQ,OAwE9B/4uC,EAAOr6B,QApCP,SAAwB26C,EAAQhmC,EAAKo5vC,GACnC,IAAIxnU,EAAO5r5B,EAAOn9C,YAClB,OAAQmX,GACN,IA3BiB,uBA4Bf,OAAOugwC,EAAiBv6tC,GAE1B,IAvCU,mBAwCV,IAvCU,gBAwCR,OAAO,IAAI4r5B,GAAM5r5B,GAEnB,IAjCc,oBAkCZ,OAAOy+tC,EAAcz+tC,EAAQoztC,GAE/B,IAnCa,wBAmCI,IAlCJ,wBAmCb,IAlCU,qBAkCI,IAjCH,sBAiCkB,IAhClB,sBAiCX,IAhCW,sBAgCI,IA/BG,6BA+BmB,IA9BzB,uBA8ByC,IA7BzC,uBA8BV,OAAOqF,EAAgBz4tC,EAAQoztC,GAEjC,IAjDS,eA2DT,IAxDS,eAyDP,OAAO,IAAIxnU,EARb,IAnDY,kBAoDZ,IAjDY,kBAkDV,OAAO,IAAIA,EAAK5r5B,GAElB,IAtDY,kBAuDV,OAAO0+tC,EAAY1+tC,GAKrB,IAzDY,kBA0DV,OAAO2+tC,EAAY3+tC,GAEzB,mBC1EA,IAAIyztC,EAAa,EAAQ,OACrB0J,EAAe,EAAQ,OACvBzF,EAAc,EAAQ,OAe1Bh4uC,EAAOr6B,QANP,SAAyB26C,GACvB,MAAqC,mBAAtBA,EAAOn9C,aAA8B60wC,EAAY13tC,GAE5D,CAAC,EADDyztC,EAAW0J,EAAan9tC,GAE9B,mBCfA,IAAI17C,EAAS,EAAQ,OACjBitwC,EAAc,EAAQ,OACtBh9vC,EAAU,EAAQ,OAGlBqqwC,EAAmBt6wC,EAASA,EAAOu6wC,wBAAqBluuC,EAc5DjR,EAAOr6B,QALP,SAAuBtB,GACrB,OAAOwQ,EAAQxQ,IAAUwtwC,EAAYxtwC,OAChC66wC,GAAoB76wC,GAASA,EAAM66wC,GAC1C,aChBA,IAGIE,EAAW,mBAoBfp/uC,EAAOr6B,QAVP,SAAiBtB,EAAOd,GACtB,IAAIkM,SAAcpL,EAGlB,SAFAd,EAAmB,MAAVA,EAfY,iBAewBA,KAGlC,UAARkM,GACU,UAARA,GAAoB2vwC,EAAS7wwC,KAAKlK,KAChCA,GAAS,GAAKA,EAAQ,GAAK,GAAKA,EAAQd,CACjD,mBCtBA,IAAI+uN,EAAK,EAAQ,OACb26uB,EAAc,EAAQ,OACtB6kU,EAAU,EAAQ,OAClB3pgC,EAAW,EAAQ,OA0BvBnoO,EAAOr6B,QAdP,SAAwBtB,EAAO6b,EAAOogC,GACpC,IAAK6nN,EAAS7nN,GACZ,OAAO,EAET,IAAI7wC,SAAcyQ,EAClB,SAAY,UAARzQ,EACKw97B,EAAY3s5B,IAAWwxtC,EAAQ5xvC,EAAOogC,EAAO/8C,QACrC,UAARkM,GAAoByQ,KAASogC,IAE7BgyK,EAAGhyK,EAAOpgC,GAAQ7b,EAG7B,mBC3BA,IAAIwQ,EAAU,EAAQ,OAClBi6vC,EAAW,EAAQ,OAGnBuQ,EAAe,mDACfC,EAAgB,QAuBpBt/uC,EAAOr6B,QAbP,SAAetB,EAAOi8C,GACpB,GAAIzrC,EAAQxQ,GACV,OAAO,EAET,IAAIoL,SAAcpL,EAClB,QAAY,UAARoL,GAA4B,UAARA,GAA4B,WAARA,GAC/B,MAATpL,IAAiByqwC,EAASzqwC,KAGvBi7wC,EAAc/wwC,KAAKlK,KAAWg7wC,EAAa9wwC,KAAKlK,IAC1C,MAAVi8C,GAAkBj8C,KAAS7B,OAAO89C,EACvC,aCZAtgB,EAAOr6B,QAPP,SAAmBtB,GACjB,IAAIoL,SAAcpL,EAClB,MAAgB,UAARoL,GAA4B,UAARA,GAA4B,UAARA,GAA4B,WAARA,EACrD,cAAVpL,EACU,OAAVA,CACP,mBCZA,IAIMiyV,EAJFyl7B,EAAa,EAAQ,OAGrBwD,GACEjp7B,EAAM,SAAShhV,KAAKymwC,GAAcA,EAAWvlwC,MAAQulwC,EAAWvlwC,KAAKgpwC,UAAY,KACvE,iBAAmBlp7B,EAAO,GAc1Ct2T,EAAOr6B,QAJP,SAAkBs9C,GAChB,QAASs8tC,GAAeA,KAAct8tC,CACxC,aChBA,IAAIw0tC,EAAcj1wC,OAAOI,UAgBzBo9B,EAAOr6B,QAPP,SAAqBtB,GACnB,IAAI6n8B,EAAO7n8B,GAASA,EAAMlB,YAG1B,OAAOkB,KAFqB,mBAAR6n8B,GAAsBA,EAAKtp8B,WAAc60wC,EAG/D,mBCfA,IAAItvgC,EAAW,EAAQ,OAcvBnoO,EAAOr6B,QAJP,SAA4BtB,GAC1B,OAAOA,GAAUA,IAAU8jQ,EAAS9jQ,EACtC,aCAA27B,EAAOr6B,QALP,WACEzC,KAAKguwC,SAAW,GAChBhuwC,KAAK4kB,KAAO,CACd,mBCVA,IAAI23vC,EAAe,EAAQ,OAMvBt5vC,EAHaxjB,MAAMC,UAGCujB,OA4BxB6Z,EAAOr6B,QAjBP,SAAyBoiB,GACvB,IAAIrV,EAAOxP,KAAKguwC,SACZhxvC,EAAQu/vC,EAAa/swC,EAAMqV,GAE/B,QAAI7H,EAAQ,IAIRA,GADYxN,EAAKnP,OAAS,EAE5BmP,EAAK5N,MAELqhB,EAAOrjB,KAAK4P,EAAMwN,EAAO,KAEzBhd,KAAK4kB,KACA,GACT,mBChCA,IAAI23vC,EAAe,EAAQ,OAkB3Bz/uC,EAAOr6B,QAPP,SAAsBoiB,GACpB,IAAIrV,EAAOxP,KAAKguwC,SACZhxvC,EAAQu/vC,EAAa/swC,EAAMqV,GAE/B,OAAO7H,EAAQ,OAAI+wB,EAAYv+B,EAAKwN,GAAO,EAC7C,mBChBA,IAAIu/vC,EAAe,EAAQ,OAe3Bz/uC,EAAOr6B,QAJP,SAAsBoiB,GACpB,OAAO03vC,EAAav8wC,KAAKguwC,SAAUnpvC,IAAQ,CAC7C,mBCbA,IAAI03vC,EAAe,EAAQ,OAyB3Bz/uC,EAAOr6B,QAbP,SAAsBoiB,EAAK1jB,GACzB,IAAIqO,EAAOxP,KAAKguwC,SACZhxvC,EAAQu/vC,EAAa/swC,EAAMqV,GAQ/B,OANI7H,EAAQ,KACRhd,KAAK4kB,KACPpV,EAAK3N,KAAK,CAACgjB,EAAK1jB,KAEhBqO,EAAKwN,GAAO,GAAK7b,EAEZnB,IACT,mBCvBA,IAAIktwC,EAAO,EAAQ,OACfI,EAAY,EAAQ,OACpB3ivC,EAAM,EAAQ,OAkBlBmS,EAAOr6B,QATP,WACEzC,KAAK4kB,KAAO,EACZ5kB,KAAKguwC,SAAW,CACd,KAAQ,IAAId,EACZ,IAAO,IAAKvivC,GAAO2ivC,GACnB,OAAU,IAAIJ,EAElB,mBClBA,IAAIsP,EAAa,EAAQ,OAiBzB1/uC,EAAOr6B,QANP,SAAwBoiB,GACtB,IAAIrB,EAASg5vC,EAAWx8wC,KAAM6kB,GAAa,OAAEA,GAE7C,OADA7kB,KAAK4kB,MAAQpB,EAAS,EAAI,EACnBA,CACT,mBCfA,IAAIg5vC,EAAa,EAAQ,OAezB1/uC,EAAOr6B,QAJP,SAAqBoiB,GACnB,OAAO23vC,EAAWx8wC,KAAM6kB,GAAK1hB,IAAI0hB,EACnC,kBCbA,IAAI23vC,EAAa,EAAQ,OAezB1/uC,EAAOr6B,QAJP,SAAqBoiB,GACnB,OAAO23vC,EAAWx8wC,KAAM6kB,GAAK9Y,IAAI8Y,EACnC,mBCbA,IAAI23vC,EAAa,EAAQ,OAqBzB1/uC,EAAOr6B,QATP,SAAqBoiB,EAAK1jB,GACxB,IAAIqO,EAAOgtwC,EAAWx8wC,KAAM6kB,GACxBD,EAAOpV,EAAKoV,KAIhB,OAFApV,EAAKvD,IAAI4Y,EAAK1jB,GACdnB,KAAK4kB,MAAQpV,EAAKoV,MAAQA,EAAO,EAAI,EAC9B5kB,IACT,aCFA88B,EAAOr6B,QAVP,SAAoB4sB,GAClB,IAAIrS,GAAS,EACTwG,EAAS/jB,MAAM4vB,EAAIzK,MAKvB,OAHAyK,EAAInK,SAAQ,SAAS/jB,EAAO0jB,GAC1BrB,IAASxG,GAAS,CAAC6H,EAAK1jB,EAC1B,IACOqiB,CACT,aCIAsZ,EAAOr6B,QAVP,SAAiCoiB,EAAKovvC,GACpC,OAAO,SAAS72tC,GACd,OAAc,MAAVA,GAGGA,EAAOv4B,KAASovvC,SACPlmuC,IAAbkmuC,GAA2BpvvC,KAAOvlB,OAAO89C,GAC9C,CACF,mBCjBA,IAAIspF,EAAU,EAAQ,OAyBtB5pG,EAAOr6B,QAZP,SAAuBs9C,GACrB,IAAIv8B,EAASkjH,EAAQ3mF,GAAM,SAASl7B,GAIlC,OAfmB,MAYfqO,EAAMtO,MACRsO,EAAMlO,QAEDH,CACT,IAEIqO,EAAQ1P,EAAO0P,MACnB,OAAO1P,CACT,mBCvBA,IAGIo4vC,EAHY,EAAQ,MAGLhP,CAAUttwC,OAAQ,UAErCw9B,EAAOr6B,QAAUm5wC,kBCLjB,IAGI7G,EAHU,EAAQ,MAGLyF,CAAQl7wC,OAAOgU,KAAMhU,QAEtCw9B,EAAOr6B,QAAUsywC,aCcjBj4uC,EAAOr6B,QAVP,SAAsB26C,GACpB,IAAI55B,EAAS,GACb,GAAc,MAAV45B,EACF,IAAK,IAAIv4B,KAAOvlB,OAAO89C,GACrB55B,EAAO3hB,KAAKgjB,GAGhB,OAAOrB,CACT,8BCjBA,IAAI+nvC,EAAa,EAAQ,OAGrBiM,EAA4C/0wC,IAAYA,EAAQ6mF,UAAY7mF,EAG5Eg1wC,EAAaD,GAA4C16uC,IAAWA,EAAOwsD,UAAYxsD,EAMvF2/uC,EAHgBhF,GAAcA,EAAWh1wC,UAAY+0wC,GAGtBjM,EAAWtlwC,QAG1Cy2wC,EAAY,WACd,IAIE,OAFYjF,GAAcA,EAAWkF,SAAWlF,EAAWkF,QAAQ,QAAQ/rsC,OAOpE6rsC,GAAeA,EAAYh48B,SAAWg48B,EAAYh48B,QAAQ,OACnE,CAAE,MAAOtlU,GAAI,CACf,CAZe,GAcf29B,EAAOr6B,QAAUi6wC,aC5BjB,IAOIjC,EAPcn7wC,OAAOI,UAOc6E,SAavCu4B,EAAOr6B,QAJP,SAAwBtB,GACtB,OAAOs5wC,EAAqB76wC,KAAKuB,EACnC,aCLA27B,EAAOr6B,QANP,SAAiBs9C,EAAM6iF,GACrB,OAAO,SAAS1rF,GACd,OAAO6I,EAAK6iF,EAAU1rF,GACxB,CACF,mBCZA,IAAI32C,EAAQ,EAAQ,OAGhBmrwC,EAAY7owC,KAAK8K,IAgCrBmvB,EAAOr6B,QArBP,SAAkBs9C,EAAMvZ,EAAOo8F,GAE7B,OADAp8F,EAAQkluC,OAAoB39tC,IAAVvH,EAAuBuZ,EAAK1/C,OAAS,EAAKmmC,EAAO,GAC5D,WAML,IALA,IAAI6Q,EAAOj3C,UACP4c,GAAS,EACT3c,EAASqrwC,EAAUr0tC,EAAKh3C,OAASmmC,EAAO,GACxC0T,EAAQz6C,MAAMY,KAET2c,EAAQ3c,GACf65C,EAAMl9B,GAASq6B,EAAK7Q,EAAQxpB,GAE9BA,GAAS,EAET,IADA,IAAI4/vC,EAAYn9wC,MAAM+mC,EAAQ,KACrBxpB,EAAQwpB,GACfo2uC,EAAU5/vC,GAASq6B,EAAKr6B,GAG1B,OADA4/vC,EAAUp2uC,GAASo8F,EAAU1oF,GACtB35C,EAAMw/C,EAAM//C,KAAM48wC,EAC3B,CACF,kBCjCA,IAAIrR,EAAa,EAAQ,OAGrBC,EAA0B,iBAARppwC,MAAoBA,MAAQA,KAAK9C,SAAWA,QAAU8C,KAGxE+tJ,EAAOo7mC,GAAcC,GAAYzowC,SAAS,cAATA,GAErC+5B,EAAOr6B,QAAU0tJ,aCYjBrzH,EAAOr6B,QAZP,SAAiB26C,EAAQv4B,GACvB,IAAY,gBAARA,GAAgD,mBAAhBu4B,EAAOv4B,KAIhC,aAAPA,EAIJ,OAAOu4B,EAAOv4B,EAChB,aCAAiY,EAAOr6B,QALP,SAAqBtB,GAEnB,OADAnB,KAAKguwC,SAAS/hwC,IAAI9K,EAbC,6BAcZnB,IACT,aCHA88B,EAAOr6B,QAJP,SAAqBtB,GACnB,OAAOnB,KAAKguwC,SAASjiwC,IAAI5K,EAC3B,aCMA27B,EAAOr6B,QAVP,SAAoBwJ,GAClB,IAAI+Q,GAAS,EACTwG,EAAS/jB,MAAMwM,EAAI2Y,MAKvB,OAHA3Y,EAAIiZ,SAAQ,SAAS/jB,GACnBqiB,IAASxG,GAAS7b,CACpB,IACOqiB,CACT,mBCfA,IAAIqzvC,EAAkB,EAAQ,OAW1BD,EAVW,EAAQ,MAULiG,CAAShG,GAE3B/5uC,EAAOr6B,QAAUm0wC,aCZjB,IAIIkG,EAAYtxvC,KAAKC,IA+BrBqR,EAAOr6B,QApBP,SAAkBs9C,GAChB,IAAIwJ,EAAQ,EACRwztC,EAAa,EAEjB,OAAO,WACL,IAAIC,EAAQF,IACRpphC,EApBO,IAoBiBsphC,EAAQD,GAGpC,GADAA,EAAaC,EACTtphC,EAAY,GACd,KAAMnqM,GAzBI,IA0BR,OAAOnpD,UAAU,QAGnBmpD,EAAQ,EAEV,OAAOxJ,EAAKx/C,WAAMwtC,EAAW3tC,UAC/B,CACF,mBClCA,IAAIktwC,EAAY,EAAQ,OAcxBxwuC,EAAOr6B,QALP,WACEzC,KAAKguwC,SAAW,IAAIV,EACpBttwC,KAAK4kB,KAAO,CACd,aCKAkY,EAAOr6B,QARP,SAAqBoiB,GACnB,IAAIrV,EAAOxP,KAAKguwC,SACZxqvC,EAAShU,EAAa,OAAEqV,GAG5B,OADA7kB,KAAK4kB,KAAOpV,EAAKoV,KACVpB,CACT,aCFAsZ,EAAOr6B,QAJP,SAAkBoiB,GAChB,OAAO7kB,KAAKguwC,SAAS7qwC,IAAI0hB,EAC3B,aCEAiY,EAAOr6B,QAJP,SAAkBoiB,GAChB,OAAO7kB,KAAKguwC,SAASjiwC,IAAI8Y,EAC3B,mBCXA,IAAIyovC,EAAY,EAAQ,OACpB3ivC,EAAM,EAAQ,OACdijvC,EAAW,EAAQ,OA+BvB9wuC,EAAOr6B,QAhBP,SAAkBoiB,EAAK1jB,GACrB,IAAIqO,EAAOxP,KAAKguwC,SAChB,GAAIx+vC,aAAgB89vC,EAAW,CAC7B,IAAI2P,EAAQztwC,EAAKw+vC,SACjB,IAAKrjvC,GAAQsyvC,EAAM58wC,OAAS68wC,IAG1B,OAFAD,EAAMp7wC,KAAK,CAACgjB,EAAK1jB,IACjBnB,KAAK4kB,OAASpV,EAAKoV,KACZ5kB,KAETwP,EAAOxP,KAAKguwC,SAAW,IAAIJ,EAASqP,EACtC,CAGA,OAFAztwC,EAAKvD,IAAI4Y,EAAK1jB,GACdnB,KAAK4kB,KAAOpV,EAAKoV,KACV5kB,IACT,aCTA88B,EAAOr6B,QAZP,SAAuBy3C,EAAO/4C,EAAOmpgB,GAInC,IAHA,IAAIttf,EAAQstf,EAAY,EACpBjqgB,EAAS65C,EAAM75C,SAEV2c,EAAQ3c,GACf,GAAI65C,EAAMl9B,KAAW7b,EACnB,OAAO6b,EAGX,OAAQ,CACV,mBCpBA,IAAImgwC,EAAe,EAAQ,OACvBhE,EAAa,EAAQ,OACrBiE,EAAiB,EAAQ,OAe7BtgvC,EAAOr6B,QANP,SAAuBsa,GACrB,OAAOo8vC,EAAWp8vC,GACdqgwC,EAAergwC,GACfogwC,EAAapgwC,EACnB,mBCfA,IAAIsgwC,EAAgB,EAAQ,OAGxBC,EAAa,mGAGbC,EAAe,WASfjG,EAAe+F,GAAc,SAAStgwC,GACxC,IAAIyG,EAAS,GAOb,OAN6B,KAAzBzG,EAAOhE,WAAW,IACpByK,EAAO3hB,KAAK,IAEdkb,EAAOtQ,QAAQ6wwC,GAAY,SAAS72wC,EAAOsjJ,EAAQyznC,EAAOC,GACxDj6vC,EAAO3hB,KAAK27wC,EAAQC,EAAUhxwC,QAAQ8wwC,EAAc,MAASxznC,GAAUtjJ,EACzE,IACO+c,CACT,IAEAsZ,EAAOr6B,QAAU60wC,mBC1BjB,IAAI1L,EAAW,EAAQ,OAoBvB9uuC,EAAOr6B,QARP,SAAetB,GACb,GAAoB,iBAATA,GAAqByqwC,EAASzqwC,GACvC,OAAOA,EAET,IAAIqiB,EAAUriB,EAAQ,GACtB,MAAkB,KAAVqiB,GAAkB,EAAIriB,IAdjB,IAcwC,KAAOqiB,CAC9D,aCjBA,IAGIgxvC,EAHYzxwC,SAASrD,UAGI6E,SAqB7Bu4B,EAAOr6B,QAZP,SAAkBs9C,GAChB,GAAY,MAARA,EAAc,CAChB,IACE,OAAOy0tC,EAAa50wC,KAAKmgD,EAC3B,CAAE,MAAO5gD,GAAI,CACb,IACE,OAAQ4gD,EAAO,EACjB,CAAE,MAAO5gD,GAAI,CACf,CACA,MAAO,EACT,aCtBA,IAAIu+wC,EAAe,KAiBnB5gvC,EAAOr6B,QAPP,SAAyBsa,GAGvB,IAFA,IAAIC,EAAQD,EAAO1c,OAEZ2c,KAAW0gwC,EAAarywC,KAAK0R,EAAOlE,OAAOmE,MAClD,OAAOA,CACT,aCfA,IAAI2gwC,EAAgB,kBAQhBC,EAAW,IAAMD,EAAgB,IACjCE,EAAU,kDACVC,EAAS,2BAETC,EAAc,KAAOJ,EAAgB,IACrCK,EAAa,kCACbC,EAAa,qCAIbC,EAPa,MAAQL,EAAU,IAAMC,EAO1BK,KACXC,EAAW,oBAEXC,EAAQD,EAAWF,EADP,gBAAwB,CAACH,EAAaC,EAAYC,GAAYpxwC,KAAK,KAAO,IAAMuxwC,EAAWF,EAAW,KAElHI,EAAW,MAAQ,CAACP,EAAcF,EAAU,IAAKA,EAASG,EAAYC,EAAYL,GAAU/wwC,KAAK,KAAO,IAGxG0xwC,EAAYx2uC,OAAO+1uC,EAAS,MAAQA,EAAS,KAAOQ,EAAWD,EAAO,KAa1EvhvC,EAAOr6B,QAJP,SAAwBsa,GACtB,OAAOA,EAAOtW,MAAM83wC,IAAc,EACpC,mBCrCA,IAAIh6wC,EAAW,EAAQ,OACnBi6wC,EAAa,EAAQ,OAqBzB1hvC,EAAOr6B,QAJP,SAAoBsa,GAClB,OAAOyhwC,EAAWj6wC,EAASwY,GAAQxN,cACrC,mBCpBA,IAAIgowC,EAAY,EAAQ,OACpBwB,EAAiB,EAAQ,OACzBhiV,EAAY,EAAQ,OAGpB0nV,EAAa57wC,KAAKuK,KAClBs+vC,EAAY7owC,KAAK8K,IA2CrBmvB,EAAOr6B,QApBP,SAAey3C,EAAOt1B,EAAMu3oB,GAExBv3oB,GADGu3oB,EAAQ48mB,EAAe7+tC,EAAOt1B,EAAMu3oB,QAAkBpunB,IAATnpB,GACzC,EAEA8mvC,EAAU30U,EAAUny6B,GAAO,GAEpC,IAAIvkB,EAAkB,MAAT65C,EAAgB,EAAIA,EAAM75C,OACvC,IAAKA,GAAUukB,EAAO,EACpB,MAAO,GAMT,IAJA,IAAI5H,EAAQ,EACRwxvC,EAAW,EACXhrvC,EAAS/jB,MAAMg/wC,EAAWp+wC,EAASukB,IAEhC5H,EAAQ3c,GACbmjB,EAAOgrvC,KAAc+I,EAAUr9tC,EAAOl9B,EAAQA,GAAS4H,GAEzD,OAAOpB,CACT,mBC/CA,IAAI6svC,EAAY,EAAQ,MA4BxBvzuC,EAAOr6B,QAJP,SAAmBtB,GACjB,OAAOkvwC,EAAUlvwC,EAAOu9wC,EAC1B,aCDA5hvC,EAAOr6B,QANP,SAAkBtB,GAChB,OAAO,WACL,OAAOA,CACT,CACF,mBCvBA,IAAI8jQ,EAAW,EAAQ,OACnBx5O,EAAM,EAAQ,OACdyjM,EAAW,EAAQ,OAMnBw8iC,EAAY7owC,KAAK8K,IACjBg+vC,EAAY9owC,KAAKgL,IAqLrBivB,EAAOr6B,QA7HP,SAAkBs9C,EAAMqC,EAAMj5B,GAC5B,IAAI0ivC,EACAC,EACAC,EACAvovC,EACA2tS,EACA668B,EACAC,EAAiB,EACjB3ptC,GAAU,EACV4ptC,GAAS,EACT1ptC,GAAW,EAEf,GAAmB,mBAARzC,EACT,MAAM,IAAIlgD,UAzEQ,uBAmFpB,SAASsswC,EAAWtmtC,GAClB,IAAIxO,EAAOw0tC,EACP5p3B,EAAU6p3B,EAKd,OAHAD,EAAWC,OAAW/9tC,EACtBk+tC,EAAiBpmtC,EACjBriC,EAASu8B,EAAKx/C,MAAM0hZ,EAAS5qW,EAE/B,CAqBA,SAAS+0tC,EAAavmtC,GACpB,IAAIwmtC,EAAoBxmtC,EAAOmmtC,EAM/B,YAAyBj+tC,IAAjBi+tC,GAA+BK,GAAqBjqtC,GACzDiqtC,EAAoB,GAAOH,GANJrmtC,EAAOomtC,GAM8BF,CACjE,CAEA,SAASO,IACP,IAAIzmtC,EAAOp6B,IACX,GAAI2gvC,EAAavmtC,GACf,OAAO0mtC,EAAa1mtC,GAGtBsrQ,EAAUtrS,WAAWymvC,EA3BvB,SAAuBzmtC,GACrB,IAEI84tC,EAAcv8tC,GAFMyD,EAAOmmtC,GAI/B,OAAOE,EACHP,EAAUgT,EAAa5S,GAJDlmtC,EAAOomtC,IAK7B0S,CACN,CAmBqCnS,CAAc3mtC,GACnD,CAEA,SAAS0mtC,EAAa1mtC,GAKpB,OAJAsrQ,OAAUpjR,EAINyU,GAAYqptC,EACPM,EAAWtmtC,IAEpBgmtC,EAAWC,OAAW/9tC,EACfvqB,EACT,CAcA,SAASipvC,IACP,IAAI5mtC,EAAOp6B,IACPihvC,EAAaN,EAAavmtC,GAM9B,GAJAgmtC,EAAWzrwC,UACX0rwC,EAAW9rwC,KACXgswC,EAAenmtC,EAEX6mtC,EAAY,CACd,QAAgB3+tC,IAAZojR,EACF,OAzEN,SAAqBtrQ,GAMnB,OAJAomtC,EAAiBpmtC,EAEjBsrQ,EAAUtrS,WAAWymvC,EAAclqtC,GAE5BE,EAAU6ptC,EAAWtmtC,GAAQriC,CACtC,CAkEampvC,CAAYX,GAErB,GAAIE,EAIF,OAFAx/uC,aAAaykS,GACbA,EAAUtrS,WAAWymvC,EAAclqtC,GAC5B+ptC,EAAWH,EAEtB,CAIA,YAHgBj+tC,IAAZojR,IACFA,EAAUtrS,WAAWymvC,EAAclqtC,IAE9B5+B,CACT,CAGA,OA3GA4+B,EAAO8sK,EAAS9sK,IAAS,EACrB6iN,EAAS97O,KACXm5B,IAAYn5B,EAAQm5B,QAEpByptC,GADAG,EAAS,YAAa/ivC,GACHuivC,EAAUx8iC,EAAS/lM,EAAQ4ivC,UAAY,EAAG3ptC,GAAQ2ptC,EACrEvptC,EAAW,aAAcr5B,IAAYA,EAAQq5B,SAAWA,GAoG1DiqtC,EAAU5ptC,OApCV,gBACkB9U,IAAZojR,GACFzkS,aAAaykS,GAEf868B,EAAiB,EACjBJ,EAAWG,EAAeF,EAAW368B,OAAUpjR,CACjD,EA+BA0+tC,EAAUlksC,MA7BV,WACE,YAAmBx6B,IAAZojR,EAAwB3tS,EAAS+ovC,EAAa9gvC,IACvD,EA4BOghvC,CACT,mBC5LA,IAAImS,EAAiB,EAAQ,OACzB/M,EAAc,EAAQ,OACtBsE,EAAe,EAAQ,OACvB2C,EAAW,EAAQ,OACnBhD,EAAoB,EAAQ,OAC5BnxvC,EAAO,EAAQ,OA4Bfk6vC,EAAe/F,GAAS,SAAS5+tC,EAAOx9B,GAC1C,IAAI6xvC,EAAW5pvC,EAAKjI,GAIpB,OAHIo5vC,EAAkBvH,KACpBA,OAAWxguC,GAEN+nuC,EAAkB57tC,GACrB0kuC,EAAe1kuC,EAAO23tC,EAAYn1vC,EAAQ,EAAGo5vC,GAAmB,GAAOK,EAAa5H,EAAU,IAC9F,EACN,IAEAzxuC,EAAOr6B,QAAUo8wC,aCPjB/hvC,EAAOr6B,QAJP,SAAYtB,EAAO06C,GACjB,OAAO16C,IAAU06C,GAAU16C,GAAUA,GAAS06C,GAAUA,CAC1D,mBClCA,IAAIg2tC,EAAc,EAAQ,OAqB1B/0uC,EAAOr6B,QALP,SAAiBy3C,GAEf,OADsB,MAATA,GAAoBA,EAAM75C,OACvBwxwC,EAAY33tC,EAAO,GAAK,EAC1C,mBCnBA,IAAIg8tC,EAAU,EAAQ,OAgCtBp5uC,EAAOr6B,QALP,SAAa26C,EAAQ/mB,EAAM8mG,GACzB,IAAI35G,EAAmB,MAAV45B,OAAiBrP,EAAYmouC,EAAQ94tC,EAAQ/mB,GAC1D,YAAkB0X,IAAXvqB,EAAuB25G,EAAe35G,CAC/C,mBC9BA,IAAIs7vC,EAAY,EAAQ,OACpB3yR,EAAU,EAAQ,OAgCtBrv9B,EAAOr6B,QAJP,SAAe26C,EAAQ/mB,GACrB,OAAiB,MAAV+mB,GAAkB+u8B,EAAQ/u8B,EAAQ/mB,EAAMyovC,EACjD,aCXAhivC,EAAOr6B,QAJP,SAAkBtB,GAChB,OAAOA,CACT,kBClBA,IAAI6vwC,EAAW,EAAQ,OACnB+N,EAAmB,EAAQ,OAC3BjG,EAAW,EAAQ,OACnBkG,EAAsB,EAAQ,MAmB9B9hlC,EAAe47kC,GAAS,SAASzwV,GACnC,IAAI42V,EAASjO,EAAS3oV,EAAQ22V,GAC9B,OAAQC,EAAO5+wC,QAAU4+wC,EAAO,KAAO52V,EAAO,GAC1C02V,EAAiBE,GACjB,EACN,IAEAnivC,EAAOr6B,QAAUy6L,mBC7BjB,IAAIgilC,EAAkB,EAAQ,OAC1B9lC,EAAe,EAAQ,OAGvBm7B,EAAcj1wC,OAAOI,UAGrBC,EAAiB40wC,EAAY50wC,eAG7Be,EAAuB6zwC,EAAY7zwC,qBAoBnCiuwC,EAAcuQ,EAAgB,WAAa,OAAO9+wC,SAAW,CAA/B,IAAsC8+wC,EAAkB,SAAS/9wC,GACjG,OAAOi4uC,EAAaj4uC,IAAUxB,EAAeC,KAAKuB,EAAO,YACtDT,EAAqBd,KAAKuB,EAAO,SACtC,EAEA27B,EAAOr6B,QAAUkswC,aCZjB,IAAIh9vC,EAAUlS,MAAMkS,QAEpBmrB,EAAOr6B,QAAUkP,mBCzBjB,IAAIqzP,EAAa,EAAQ,MACrB0vgC,EAAW,EAAQ,OA+BvB53uC,EAAOr6B,QAJP,SAAqBtB,GACnB,OAAgB,MAATA,GAAiBuzwC,EAASvzwC,EAAMd,UAAY2kQ,EAAW7jQ,EAChE,mBC9BA,IAAI4o8B,EAAc,EAAQ,OACtBqvS,EAAe,EAAQ,OA+B3Bt8sC,EAAOr6B,QAJP,SAA2BtB,GACzB,OAAOi4uC,EAAaj4uC,IAAU4o8B,EAAY5o8B,EAC5C,6BC9BA,IAAIgvJ,EAAO,EAAQ,MACfgvnC,EAAY,EAAQ,OAGpB3H,EAA4C/0wC,IAAYA,EAAQ6mF,UAAY7mF,EAG5Eg1wC,EAAaD,GAA4C16uC,IAAWA,EAAOwsD,UAAYxsD,EAMvFnV,EAHgB8vvC,GAAcA,EAAWh1wC,UAAY+0wC,EAG5BrnnC,EAAKxoI,YAASomB,EAsBvCw3N,GAnBiB59O,EAASA,EAAO49O,cAAWx3N,IAmBfoxuC,EAEjCrivC,EAAOr6B,QAAU8iQ,mBCrCjB,IAAI65gC,EAAW,EAAQ,OACnBrnC,EAAS,EAAQ,MACjB42B,EAAc,EAAQ,OACtBh9vC,EAAU,EAAQ,OAClBo47B,EAAc,EAAQ,OACtBxksB,EAAW,EAAQ,MACnBuvgC,EAAc,EAAQ,OACtB7zvC,EAAe,EAAQ,OAUvBthB,EAHcL,OAAOI,UAGQC,eA2DjCm9B,EAAOr6B,QAxBP,SAAiBtB,GACf,GAAa,MAATA,EACF,OAAO,EAET,GAAI4o8B,EAAY5o8B,KACXwQ,EAAQxQ,IAA0B,iBAATA,GAA4C,mBAAhBA,EAAM8hB,QAC1DsiP,EAASpkQ,IAAU8f,EAAa9f,IAAUwtwC,EAAYxtwC,IAC1D,OAAQA,EAAMd,OAEhB,IAAI+W,EAAM2guC,EAAO52uC,GACjB,GApDW,gBAoDPiW,GAnDO,gBAmDUA,EACnB,OAAQjW,EAAMyjB,KAEhB,GAAIkwvC,EAAY3zwC,GACd,OAAQi+wC,EAASj+wC,GAAOd,OAE1B,IAAK,IAAIwkB,KAAO1jB,EACd,GAAIxB,EAAeC,KAAKuB,EAAO0jB,GAC7B,OAAO,EAGX,OAAO,CACT,kBC1EA,IAAIiuvC,EAAc,EAAQ,OAkC1Bh2uC,EAAOr6B,QAJP,SAAiBtB,EAAO06C,GACtB,OAAOi3tC,EAAY3xwC,EAAO06C,EAC5B,kBChCA,IAAI+2tC,EAAa,EAAQ,OACrB3tgC,EAAW,EAAQ,OAmCvBnoO,EAAOr6B,QAVP,SAAoBtB,GAClB,IAAK8jQ,EAAS9jQ,GACZ,OAAO,EAIT,IAAIiW,EAAMw7vC,EAAWzxwC,GACrB,MA5BY,qBA4BLiW,GA3BI,8BA2BcA,GA7BZ,0BA6B6BA,GA1B7B,kBA0BgDA,CAC/D,aCAA0lB,EAAOr6B,QALP,SAAkBtB,GAChB,MAAuB,iBAATA,GACZA,GAAS,GAAKA,EAAQ,GAAK,GAAKA,GA9Bb,gBA+BvB,mBChCA,IAAIk+wC,EAAY,EAAQ,OACpBpO,EAAY,EAAQ,OACpByL,EAAW,EAAQ,OAGnB4C,EAAY5C,GAAYA,EAASrngC,MAmBjCA,EAAQiqgC,EAAYrO,EAAUqO,GAAaD,EAE/CvivC,EAAOr6B,QAAU4yQ,aCIjBv4O,EAAOr6B,QALP,SAAkBtB,GAChB,IAAIoL,SAAcpL,EAClB,OAAgB,MAATA,IAA0B,UAARoL,GAA4B,YAARA,EAC/C,aCAAuwB,EAAOr6B,QAJP,SAAsBtB,GACpB,OAAgB,MAATA,GAAiC,iBAATA,CACjC,mBC1BA,IAAIyxwC,EAAa,EAAQ,OACrB2H,EAAe,EAAQ,OACvBnhC,EAAe,EAAQ,OAMvBk7B,EAAYvxwC,SAASrD,UACrB60wC,EAAcj1wC,OAAOI,UAGrB80wC,EAAeF,EAAU/vwC,SAGzB5E,EAAiB40wC,EAAY50wC,eAG7B4/wC,EAAmB/K,EAAa50wC,KAAKN,QA2CzCw9B,EAAOr6B,QAbP,SAAuBtB,GACrB,IAAKi4uC,EAAaj4uC,IA5CJ,mBA4CcyxwC,EAAWzxwC,GACrC,OAAO,EAET,IAAIqQ,EAAQ+owC,EAAap5wC,GACzB,GAAc,OAAVqQ,EACF,OAAO,EAET,IAAIw37B,EAAOrp8B,EAAeC,KAAK4R,EAAO,gBAAkBA,EAAMvR,YAC9D,MAAsB,mBAAR+o8B,GAAsBA,aAAgBA,GAClDwrU,EAAa50wC,KAAKop8B,IAASu2U,CAC/B,mBC3DA,IAAIC,EAAY,EAAQ,OACpBvO,EAAY,EAAQ,OACpByL,EAAW,EAAQ,OAGnB+C,EAAY/C,GAAYA,EAAS9zF,MAmBjCA,EAAQ62F,EAAYxO,EAAUwO,GAAaD,EAE/C1ivC,EAAOr6B,QAAUmmrC,mBC1BjB,IAAIgqF,EAAa,EAAQ,OACrBx5B,EAAe,EAAQ,OA2B3Bt8sC,EAAOr6B,QALP,SAAkBtB,GAChB,MAAuB,iBAATA,GACXi4uC,EAAaj4uC,IArBF,mBAqBYyxwC,EAAWzxwC,EACvC,mBC1BA,IAAIu+wC,EAAmB,EAAQ,MAC3BzO,EAAY,EAAQ,OACpByL,EAAW,EAAQ,OAGnBiD,EAAmBjD,GAAYA,EAASz7vC,aAmBxCA,EAAe0+vC,EAAmB1O,EAAU0O,GAAoBD,EAEpE5ivC,EAAOr6B,QAAUwe,mBC1BjB,IAAI2+vC,EAAgB,EAAQ,OACxBR,EAAW,EAAQ,OACnBr1U,EAAc,EAAQ,OAkC1Bjt6B,EAAOr6B,QAJP,SAAc26C,GACZ,OAAO2s5B,EAAY3s5B,GAAUwiuC,EAAcxiuC,GAAUgiuC,EAAShiuC,EAChE,mBClCA,IAAIwiuC,EAAgB,EAAQ,OACxBC,EAAa,EAAQ,OACrB91U,EAAc,EAAQ,OA6B1Bjt6B,EAAOr6B,QAJP,SAAgB26C,GACd,OAAO2s5B,EAAY3s5B,GAAUwiuC,EAAcxiuC,GAAQ,GAAQyiuC,EAAWziuC,EACxE,aCVAtgB,EAAOr6B,QALP,SAAcy3C,GACZ,IAAI75C,EAAkB,MAAT65C,EAAgB,EAAIA,EAAM75C,OACvC,OAAOA,EAAS65C,EAAM75C,EAAS,QAAK0tC,CACtC,wBCjBA,iBAQE,WAGA,IAAIA,EAUAg9tC,EAAkB,sBAKlB+U,EAAiB,4BAMjBC,EAAc,yBAiBdC,EAAoB,GAEpBC,EAAgB,IAkBhBC,EAAW,IACX76uC,EAAmB,iBAEnB2luC,EAAM,IAGNmV,EAAmB,WAKnBC,EAAY,CACd,CAAC,MAAOH,GACR,CAAC,OAtCkB,GAuCnB,CAAC,UAtCsB,GAuCvB,CAAC,QArCmB,GAsCpB,CAAC,aArCyB,IAsC1B,CAAC,OAjCkB,KAkCnB,CAAC,UAAWD,GACZ,CAAC,eAtC2B,IAuC5B,CAAC,QArCmB,MAyClB/P,EAAU,qBACViD,EAAW,iBAEXmN,EAAU,mBACVC,EAAU,gBAEVC,EAAW,iBACXrQ,EAAU,oBACVsQ,EAAS,6BACTzF,EAAS,eACT0F,EAAY,kBAEZtQ,EAAY,kBACZ6K,EAAa,mBAEb0F,EAAY,kBACZzF,EAAS,eACT0F,EAAY,kBACZ1V,EAAY,kBAEZiQ,EAAa,mBAGb0F,EAAiB,uBACjBzF,EAAc,oBACd0F,EAAa,wBACbC,EAAa,wBACbC,EAAU,qBACVC,EAAW,sBACXC,EAAW,sBACXC,EAAW,sBACXC,EAAkB,6BAClBC,EAAY,uBACZC,EAAY,uBAGZC,EAAuB,iBACvBC,EAAsB,qBACtBC,EAAwB,gCAGxBC,EAAgB,4BAChBvoxB,EAAkB,WAClBwoxB,EAAmB35uC,OAAO05uC,EAAc55wC,QACxC85wC,EAAqB55uC,OAAOmxd,EAAgBrxf,QAG5C+5wC,EAAW,mBACXC,EAAa,kBACbC,EAAgB,mBAGhB3F,EAAe,mDACfC,EAAgB,QAChBkB,GAAa,mGAMbyE,GAAe,sBACfC,GAAkBj6uC,OAAOg6uC,GAAal6wC,QAGtCqvwC,GAAc,OAGdwG,GAAe,KAGfuE,GAAgB,4CAChBC,GAAgB,oCAChBC,GAAiB,QAGjBC,GAAc,4CAYdC,GAA6B,mBAG7B9E,GAAe,WAMf+E,GAAe,kCAGf1K,GAAU,OAGVzM,GAAa,qBAGbC,GAAa,aAGbiJ,GAAe,8BAGfhJ,GAAY,cAGZ6Q,GAAW,mBAGXqG,GAAU,8CAGVC,GAAY,OAGZC,GAAoB,yBAGpB9E,GAAgB,kBAIhB+E,GAAeC,gDACfC,GAAiB,kBACjBC,GAAe,4BAKfC,GAAe,4BACfC,GAAa,iBACbC,GAAeC,8OAIfrF,GAAW,IAAMD,GAAgB,IACjCuF,GAAU,IAAMF,GAAe,IAC/BnF,GAAU,IAAM6E,GAAe,IAC/BS,GAAW,OACXC,GAAY,IAAMR,GAAiB,IACnCS,GAAU,IAAMR,GAAe,IAC/BS,GAAS,KAAO3F,GAAgBqF,GAAeG,GAAWP,GAAiBC,GAAeC,GAAe,IACzGhF,GAAS,2BAETC,GAAc,KAAOJ,GAAgB,IACrCK,GAAa,kCACbC,GAAa,qCACbsF,GAAU,IAAMT,GAAe,IAC/BU,GAAQ,UAGRC,GAAc,MAAQJ,GAAU,IAAMC,GAAS,IAC/CI,GAAc,MAAQH,GAAU,IAAMD,GAAS,IAC/CK,GAAkB,gCAClBC,GAAkB,gCAClB1F,GAZa,MAAQL,GAAU,IAAMC,GAY1BK,KACXC,GAAW,IAAM2E,GAAa,KAI9B1E,GAAQD,GAAWF,GAHP,MAAQsF,GAAQ,MAAQ,CAACzF,GAAaC,GAAYC,IAAYpxwC,KAAK,KAAO,IAAMuxwC,GAAWF,GAAW,KAIlH2F,GAAU,MAAQ,CAACT,GAAWpF,GAAYC,IAAYpxwC,KAAK,KAAO,IAAMwxwC,GACxEC,GAAW,MAAQ,CAACP,GAAcF,GAAU,IAAKA,GAASG,GAAYC,GAAYL,IAAU/wwC,KAAK,KAAO,IAGxGi3wC,GAAS/7uC,OA/BA,OA+Be,KAMxBg8uC,GAAch8uC,OAAO81uC,GAAS,KAG9BU,GAAYx2uC,OAAO+1uC,GAAS,MAAQA,GAAS,KAAOQ,GAAWD,GAAO,KAGtE2F,GAAgBj8uC,OAAO,CACzBw7uC,GAAU,IAAMF,GAAU,IAAMM,GAAkB,MAAQ,CAACT,GAASK,GAAS,KAAK12wC,KAAK,KAAO,IAC9F62wC,GAAc,IAAME,GAAkB,MAAQ,CAACV,GAASK,GAAUE,GAAa,KAAK52wC,KAAK,KAAO,IAChG02wC,GAAU,IAAME,GAAc,IAAME,GACpCJ,GAAU,IAAMK,GAtBD,mDADA,mDA0BfT,GACAU,IACAh3wC,KAAK,KAAM,KAGT8uwC,GAAe5zuC,OAAO,IAAMy7uC,GAAQ7F,GAAiB+E,GAAeK,GAAa,KAGjFkB,GAAmB,qEAGnBC,GAAe,CACjB,QAAS,SAAU,WAAY,OAAQ,QAAS,eAAgB,eAChE,WAAY,YAAa,aAAc,aAAc,MAAO,OAAQ,SACpE,UAAW,SAAU,MAAO,SAAU,SAAU,YAAa,aAC7D,oBAAqB,cAAe,cAAe,UACnD,IAAK,eAAgB,WAAY,WAAY,cAI3CC,IAAmB,EAGnBxP,GAAiB,CAAC,EACtBA,GAAekM,GAAclM,GAAemM,GAC5CnM,GAAeoM,GAAWpM,GAAeqM,GACzCrM,GAAesM,GAAYtM,GAAeuM,GAC1CvM,GAAewM,GAAmBxM,GAAeyM,GACjDzM,GAAe0M,IAAa,EAC5B1M,GAAe1E,GAAW0E,GAAezB,GACzCyB,GAAeiM,GAAkBjM,GAAe0L,GAChD1L,GAAewG,GAAexG,GAAe2L,GAC7C3L,GAAe4L,GAAY5L,GAAezE,GAC1CyE,GAAeoG,GAAUpG,GAAe8L,GACxC9L,GAAexE,GAAawE,GAAe+L,GAC3C/L,GAAesG,GAAUtG,GAAegM,GACxChM,GAAeuG,IAAc,EAG7B,IAAI9K,GAAgB,CAAC,EACrBA,GAAcH,GAAWG,GAAc8C,GACvC9C,GAAcwQ,GAAkBxQ,GAAc+K,GAC9C/K,GAAciQ,GAAWjQ,GAAckQ,GACvClQ,GAAcyQ,GAAczQ,GAAc0Q,GAC1C1Q,GAAc2Q,GAAW3Q,GAAc4Q,GACvC5Q,GAAc6Q,GAAY7Q,GAAc2K,GACxC3K,GAAcqQ,GAAarQ,GAAcD,GACzCC,GAAcsQ,GAAatQ,GAAc6K,GACzC7K,GAAcuQ,GAAavQ,GAAcnF,GACzCmF,GAAc8Q,GAAY9Q,GAAc+Q,GACxC/Q,GAAcgR,GAAahR,GAAciR,IAAa,EACtDjR,GAAcmQ,GAAYnQ,GAAcF,GACxCE,GAAc8K,IAAc,EAG5B,IA4EIkJ,GAAgB,CAClB,KAAM,KACN,IAAK,IACL,KAAM,IACN,KAAM,IACN,SAAU,QACV,SAAU,SAIRC,GAAiBh6mC,WACjBihmC,GAAe31uC,SAGf41uC,GAA8B,iBAAV,EAAAppwC,GAAsB,EAAAA,GAAU,EAAAA,EAAO7C,SAAWA,QAAU,EAAA6C,EAGhFqpwC,GAA0B,iBAARppwC,MAAoBA,MAAQA,KAAK9C,SAAWA,QAAU8C,KAGxE+tJ,GAAOo7mC,IAAcC,IAAYzowC,SAAS,cAATA,GAGjCy0wC,GAA4C/0wC,IAAYA,EAAQ6mF,UAAY7mF,EAG5Eg1wC,GAAaD,IAA4C16uC,IAAWA,EAAOwsD,UAAYxsD,EAGvFwnvC,GAAgB7M,IAAcA,GAAWh1wC,UAAY+0wC,GAGrDiF,GAAc6H,IAAiB/Y,GAAWtlwC,QAG1Cy2wC,GAAY,WACd,IAIE,OAFYjF,IAAcA,GAAWkF,SAAWlF,GAAWkF,QAAQ,QAAQ/rsC,OAOpE6rsC,IAAeA,GAAYh48B,SAAWg48B,GAAYh48B,QAAQ,OACnE,CAAE,MAAOtlU,GAAI,CACf,CAZe,GAeXolxC,GAAoB7H,IAAYA,GAASpwgC,cACzCk4gC,GAAa9H,IAAYA,GAASrogC,OAClCirgC,GAAY5C,IAAYA,GAASrngC,MACjCovgC,GAAe/H,IAAYA,GAAStyU,SACpCq1U,GAAY/C,IAAYA,GAAS9zF,MACjC+2F,GAAmBjD,IAAYA,GAASz7vC,aAc5C,SAAS1gB,GAAMw/C,EAAMkiW,EAAS5qW,GAC5B,OAAQA,EAAKh3C,QACX,KAAK,EAAG,OAAO0/C,EAAKngD,KAAKqiZ,GACzB,KAAK,EAAG,OAAOliW,EAAKngD,KAAKqiZ,EAAS5qW,EAAK,IACvC,KAAK,EAAG,OAAO0I,EAAKngD,KAAKqiZ,EAAS5qW,EAAK,GAAIA,EAAK,IAChD,KAAK,EAAG,OAAO0I,EAAKngD,KAAKqiZ,EAAS5qW,EAAK,GAAIA,EAAK,GAAIA,EAAK,IAE3D,OAAO0I,EAAKx/C,MAAM0hZ,EAAS5qW,EAC7B,CAYA,SAASqtuC,GAAgBxquC,EAAOvtC,EAAQ4hwC,EAAU94c,GAIhD,IAHA,IAAIz4yB,GAAS,EACT3c,EAAkB,MAAT65C,EAAgB,EAAIA,EAAM75C,SAE9B2c,EAAQ3c,GAAQ,CACvB,IAAIc,EAAQ+4C,EAAMl9B,GAClBrQ,EAAO8ozB,EAAat0zB,EAAOotwC,EAASptwC,GAAQ+4C,EAC9C,CACA,OAAOu7wB,CACT,CAWA,SAAS45c,GAAUn1tC,EAAOq0tC,GAIxB,IAHA,IAAIvxvC,GAAS,EACT3c,EAAkB,MAAT65C,EAAgB,EAAIA,EAAM75C,SAE9B2c,EAAQ3c,IAC8B,IAAzCkuwC,EAASr0tC,EAAMl9B,GAAQA,EAAOk9B,KAIpC,OAAOA,CACT,CAWA,SAASyquC,GAAezquC,EAAOq0tC,GAG7B,IAFA,IAAIluwC,EAAkB,MAAT65C,EAAgB,EAAIA,EAAM75C,OAEhCA,MAC0C,IAA3CkuwC,EAASr0tC,EAAM75C,GAASA,EAAQ65C,KAItC,OAAOA,CACT,CAYA,SAAS0quC,GAAW1quC,EAAO2J,GAIzB,IAHA,IAAI7mC,GAAS,EACT3c,EAAkB,MAAT65C,EAAgB,EAAIA,EAAM75C,SAE9B2c,EAAQ3c,GACf,IAAKwjD,EAAU3J,EAAMl9B,GAAQA,EAAOk9B,GAClC,OAAO,EAGX,OAAO,CACT,CAWA,SAAS0guC,GAAY1guC,EAAO2J,GAM1B,IALA,IAAI7mC,GAAS,EACT3c,EAAkB,MAAT65C,EAAgB,EAAIA,EAAM75C,OACnCmuwC,EAAW,EACXhrvC,EAAS,KAEJxG,EAAQ3c,GAAQ,CACvB,IAAIc,EAAQ+4C,EAAMl9B,GACd6mC,EAAU1iD,EAAO6b,EAAOk9B,KAC1B12B,EAAOgrvC,KAAcrtwC,EAEzB,CACA,OAAOqiB,CACT,CAWA,SAASstvC,GAAc52tC,EAAO/4C,GAE5B,QADsB,MAAT+4C,IAAoBA,EAAM75C,SACpBouwC,GAAYv0tC,EAAO/4C,EAAO,IAAM,CACrD,CAWA,SAAS4vwC,GAAkB72tC,EAAO/4C,EAAO43e,GAIvC,IAHA,IAAI/7d,GAAS,EACT3c,EAAkB,MAAT65C,EAAgB,EAAIA,EAAM75C,SAE9B2c,EAAQ3c,GACf,GAAI04e,EAAW53e,EAAO+4C,EAAMl9B,IAC1B,OAAO,EAGX,OAAO,CACT,CAWA,SAASg0vC,GAAS92tC,EAAOq0tC,GAKvB,IAJA,IAAIvxvC,GAAS,EACT3c,EAAkB,MAAT65C,EAAgB,EAAIA,EAAM75C,OACnCmjB,EAAS/jB,MAAMY,KAEV2c,EAAQ3c,GACfmjB,EAAOxG,GAASuxvC,EAASr0tC,EAAMl9B,GAAQA,EAAOk9B,GAEhD,OAAO12B,CACT,CAUA,SAASmuvC,GAAUz3tC,EAAOx9B,GAKxB,IAJA,IAAIM,GAAS,EACT3c,EAASqc,EAAOrc,OAChB8hD,EAASjI,EAAM75C,SAEV2c,EAAQ3c,GACf65C,EAAMiI,EAASnlC,GAASN,EAAOM,GAEjC,OAAOk9B,CACT,CAcA,SAAS2quC,GAAY3quC,EAAOq0tC,EAAU94c,EAAaqvd,GACjD,IAAI9nwC,GAAS,EACT3c,EAAkB,MAAT65C,EAAgB,EAAIA,EAAM75C,OAKvC,IAHIykxC,GAAazkxC,IACfo1zB,EAAcv7wB,IAAQl9B,MAEfA,EAAQ3c,GACfo1zB,EAAc84c,EAAS94c,EAAav7wB,EAAMl9B,GAAQA,EAAOk9B,GAE3D,OAAOu7wB,CACT,CAcA,SAASsvd,GAAiB7quC,EAAOq0tC,EAAU94c,EAAaqvd,GACtD,IAAIzkxC,EAAkB,MAAT65C,EAAgB,EAAIA,EAAM75C,OAIvC,IAHIykxC,GAAazkxC,IACfo1zB,EAAcv7wB,IAAQ75C,IAEjBA,KACLo1zB,EAAc84c,EAAS94c,EAAav7wB,EAAM75C,GAASA,EAAQ65C,GAE7D,OAAOu7wB,CACT,CAYA,SAAS6jd,GAAUp/tC,EAAO2J,GAIxB,IAHA,IAAI7mC,GAAS,EACT3c,EAAkB,MAAT65C,EAAgB,EAAIA,EAAM75C,SAE9B2c,EAAQ3c,GACf,GAAIwjD,EAAU3J,EAAMl9B,GAAQA,EAAOk9B,GACjC,OAAO,EAGX,OAAO,CACT,CASA,IAAI8quC,GAAYC,GAAa,UAmC7B,SAASC,GAAY/mhC,EAAYt6M,EAAWo1tC,GAC1C,IAAIz1vC,EAOJ,OANAy1vC,EAAS96gC,GAAY,SAASh9P,EAAO0jB,EAAKs5O,GACxC,GAAIt6M,EAAU1iD,EAAO0jB,EAAKs5O,GAExB,OADA36O,EAASqB,GACF,CAEX,IACOrB,CACT,CAaA,SAAS8uvC,GAAcp4tC,EAAO2J,EAAWymd,EAAWonwB,GAIlD,IAHA,IAAIrxwC,EAAS65C,EAAM75C,OACf2c,EAAQstf,GAAaonwB,EAAY,GAAK,GAElCA,EAAY10vC,MAAYA,EAAQ3c,GACtC,GAAIwjD,EAAU3J,EAAMl9B,GAAQA,EAAOk9B,GACjC,OAAOl9B,EAGX,OAAQ,CACV,CAWA,SAASyxvC,GAAYv0tC,EAAO/4C,EAAOmpgB,GACjC,OAAOnpgB,GAAUA,EAidnB,SAAuB+4C,EAAO/4C,EAAOmpgB,GAInC,IAHA,IAAIttf,EAAQstf,EAAY,EACpBjqgB,EAAS65C,EAAM75C,SAEV2c,EAAQ3c,GACf,GAAI65C,EAAMl9B,KAAW7b,EACnB,OAAO6b,EAGX,OAAQ,CACV,CA1dMw1vC,CAAct4tC,EAAO/4C,EAAOmpgB,GAC5BgowB,GAAcp4tC,EAAOq4tC,GAAWjowB,EACtC,CAYA,SAAS66wB,GAAgBjruC,EAAO/4C,EAAOmpgB,EAAWvxB,GAIhD,IAHA,IAAI/7d,EAAQstf,EAAY,EACpBjqgB,EAAS65C,EAAM75C,SAEV2c,EAAQ3c,GACf,GAAI04e,EAAW7+b,EAAMl9B,GAAQ7b,GAC3B,OAAO6b,EAGX,OAAQ,CACV,CASA,SAASu1vC,GAAUpxwC,GACjB,OAAOA,GAAUA,CACnB,CAWA,SAASikxC,GAASlruC,EAAOq0tC,GACvB,IAAIluwC,EAAkB,MAAT65C,EAAgB,EAAIA,EAAM75C,OACvC,OAAOA,EAAUglxC,GAAQnruC,EAAOq0tC,GAAYluwC,EAAU2qwC,CACxD,CASA,SAASia,GAAapgwC,GACpB,OAAO,SAASu4B,GACd,OAAiB,MAAVA,EAAiBrP,EAAYqP,EAAOv4B,EAC7C,CACF,CASA,SAASygwC,GAAelouC,GACtB,OAAO,SAASv4B,GACd,OAAiB,MAAVu4B,EAAiBrP,EAAYqP,EAAOv4B,EAC7C,CACF,CAeA,SAAS0gwC,GAAWpnhC,EAAYowgC,EAAU94c,EAAaqvd,EAAW7L,GAMhE,OALAA,EAAS96gC,GAAY,SAASh9P,EAAO6b,EAAOmhP,GAC1Cs3jB,EAAcqvd,GACTA,GAAY,EAAO3jxC,GACpBotwC,EAAS94c,EAAat0zB,EAAO6b,EAAOmhP,EAC1C,IACOs3jB,CACT,CA+BA,SAAS4vd,GAAQnruC,EAAOq0tC,GAKtB,IAJA,IAAI/qvC,EACAxG,GAAS,EACT3c,EAAS65C,EAAM75C,SAEV2c,EAAQ3c,GAAQ,CACvB,IAAI0/B,EAAUwuuC,EAASr0tC,EAAMl9B,IACzB+iB,IAAYgO,IACdvqB,EAASA,IAAWuqB,EAAYhO,EAAWvc,EAASuc,EAExD,CACA,OAAOvc,CACT,CAWA,SAASkrvC,GAAUrvwC,EAAGkvwC,GAIpB,IAHA,IAAIvxvC,GAAS,EACTwG,EAAS/jB,MAAMJ,KAEV2d,EAAQ3d,GACfmkB,EAAOxG,GAASuxvC,EAASvxvC,GAE3B,OAAOwG,CACT,CAwBA,SAASgiwC,GAASzowC,GAChB,OAAOA,EACHA,EAAOhb,MAAM,EAAGk1wC,GAAgBl6vC,GAAU,GAAGtQ,QAAQyqwC,GAAa,IAClEn6vC,CACN,CASA,SAASk0vC,GAAUlxtC,GACjB,OAAO,SAAS5+C,GACd,OAAO4+C,EAAK5+C,EACd,CACF,CAYA,SAASskxC,GAAWrouC,EAAQnQ,GAC1B,OAAO+juC,GAAS/juC,GAAO,SAASpoB,GAC9B,OAAOu4B,EAAOv4B,EAChB,GACF,CAUA,SAASqsvC,GAASh+uC,EAAOrO,GACvB,OAAOqO,EAAMnnB,IAAI8Y,EACnB,CAWA,SAAS6gwC,GAAgBtM,EAAYuM,GAInC,IAHA,IAAI3owC,GAAS,EACT3c,EAAS+4wC,EAAW/4wC,SAEf2c,EAAQ3c,GAAUouwC,GAAYkX,EAAYvM,EAAWp8vC,GAAQ,IAAM,IAC5E,OAAOA,CACT,CAWA,SAAS4owC,GAAcxM,EAAYuM,GAGjC,IAFA,IAAI3owC,EAAQo8vC,EAAW/4wC,OAEhB2c,KAAWyxvC,GAAYkX,EAAYvM,EAAWp8vC,GAAQ,IAAM,IACnE,OAAOA,CACT,CA8BA,IAAI6owC,GAAeP,GAjxBG,CAEpB,EAAQ,IAAM,EAAQ,IAAK,EAAQ,IAAK,EAAQ,IAAK,EAAQ,IAAK,EAAQ,IAC1E,EAAQ,IAAM,EAAQ,IAAK,EAAQ,IAAK,EAAQ,IAAK,EAAQ,IAAK,EAAQ,IAC1E,EAAQ,IAAM,EAAQ,IACtB,EAAQ,IAAM,EAAQ,IACtB,EAAQ,IAAM,EAAQ,IAAK,EAAQ,IAAK,EAAQ,IAChD,EAAQ,IAAM,EAAQ,IAAK,EAAQ,IAAK,EAAQ,IAChD,EAAQ,IAAM,EAAQ,IAAK,EAAQ,IAAK,EAAQ,IAChD,EAAQ,IAAM,EAAQ,IAAK,EAAQ,IAAK,EAAQ,IAChD,EAAQ,IAAM,EAAQ,IACtB,EAAQ,IAAM,EAAQ,IAAK,EAAQ,IAAK,EAAQ,IAAK,EAAQ,IAAK,EAAQ,IAC1E,EAAQ,IAAM,EAAQ,IAAK,EAAQ,IAAK,EAAQ,IAAK,EAAQ,IAAK,EAAQ,IAC1E,EAAQ,IAAM,EAAQ,IAAK,EAAQ,IAAK,EAAQ,IAChD,EAAQ,IAAM,EAAQ,IAAK,EAAQ,IAAK,EAAQ,IAChD,EAAQ,IAAM,EAAQ,IAAK,EAAQ,IACnC,EAAQ,KAAM,EAAQ,KACtB,EAAQ,KAAM,EAAQ,KACtB,EAAQ,KAER,EAAU,IAAM,EAAU,IAAK,EAAU,IACzC,EAAU,IAAM,EAAU,IAAK,EAAU,IACzC,EAAU,IAAM,EAAU,IAAK,EAAU,IAAK,EAAU,IACxD,EAAU,IAAM,EAAU,IAAK,EAAU,IAAK,EAAU,IACxD,EAAU,IAAM,EAAU,IAAK,EAAU,IAAK,EAAU,IACxD,EAAU,IAAM,EAAU,IAAK,EAAU,IAAK,EAAU,IAAK,EAAU,IACvE,EAAU,IAAM,EAAU,IAAK,EAAU,IAAK,EAAU,IAAK,EAAU,IACvE,EAAU,IAAM,EAAU,IAAK,EAAU,IAAK,EAAU,IACxD,EAAU,IAAM,EAAU,IAAK,EAAU,IAAK,EAAU,IACxD,EAAU,IAAM,EAAU,IAAK,EAAU,IAAK,EAAU,IACxD,EAAU,IAAM,EAAU,IAAK,EAAU,IAAK,EAAU,IAAK,EAAU,IACvE,EAAU,IAAM,EAAU,IAAK,EAAU,IAAK,EAAU,IAAK,EAAU,IACvE,EAAU,IAAM,EAAU,IAC1B,EAAU,IAAM,EAAU,IAAK,EAAU,IACzC,EAAU,IAAM,EAAU,IAAK,EAAU,IAAK,EAAU,IAAK,EAAU,IACvE,EAAU,IAAM,EAAU,IAAK,EAAU,IAAK,EAAU,IAAK,EAAU,IACvE,EAAU,IAAM,EAAU,IAAK,EAAU,IAAK,EAAU,IACxD,EAAU,IAAM,EAAU,IAAK,EAAU,IAAK,EAAU,IACxD,EAAU,IAAM,EAAU,IAAK,EAAU,IACzC,EAAU,IAAM,EAAU,IAAK,EAAU,IACzC,EAAU,IAAM,EAAU,IAAK,EAAU,IACzC,EAAU,IAAM,EAAU,IAAK,EAAU,IACzC,EAAU,IAAM,EAAU,IAAK,EAAU,IAAK,EAAU,IACxD,EAAU,IAAM,EAAU,IAAK,EAAU,IAAK,EAAU,IACxD,EAAU,IAAM,EAAU,IAAK,EAAU,IACzC,EAAU,IAAM,EAAU,IAAK,EAAU,IACzC,EAAU,IAAM,EAAU,IAAK,EAAU,IAAK,EAAU,IAAK,EAAU,IAAK,EAAU,IACtF,EAAU,IAAM,EAAU,IAAK,EAAU,IAAK,EAAU,IAAK,EAAU,IAAK,EAAU,IACtF,EAAU,IAAM,EAAU,IAC1B,EAAU,IAAM,EAAU,IAAK,EAAU,IACzC,EAAU,IAAM,EAAU,IAAK,EAAU,IACzC,EAAU,IAAM,EAAU,IAAK,EAAU,IACzC,EAAU,KAAM,EAAU,KAC1B,EAAU,KAAM,EAAU,KAC1B,EAAU,KAAM,EAAU,MAouBxBQ,GAAiBR,GAhuBH,CAChB,IAAK,QACL,IAAK,OACL,IAAK,OACL,IAAK,SACL,IAAK,UAouBP,SAASS,GAAiBtsxB,GACxB,MAAO,KAAO2qxB,GAAc3qxB,EAC9B,CAqBA,SAAS0/wB,GAAWp8vC,GAClB,OAAO4+vC,GAAatwwC,KAAK0R,EAC3B,CAqCA,SAASk3sC,GAAW5ksC,GAClB,IAAIrS,GAAS,EACTwG,EAAS/jB,MAAM4vB,EAAIzK,MAKvB,OAHAyK,EAAInK,SAAQ,SAAS/jB,EAAO0jB,GAC1BrB,IAASxG,GAAS,CAAC6H,EAAK1jB,EAC1B,IACOqiB,CACT,CAUA,SAASg3vC,GAAQz6tC,EAAM6iF,GACrB,OAAO,SAAS1rF,GACd,OAAO6I,EAAK6iF,EAAU1rF,GACxB,CACF,CAWA,SAAS8uuC,GAAe9ruC,EAAOsX,GAM7B,IALA,IAAIx0C,GAAS,EACT3c,EAAS65C,EAAM75C,OACfmuwC,EAAW,EACXhrvC,EAAS,KAEJxG,EAAQ3c,GAAQ,CACvB,IAAIc,EAAQ+4C,EAAMl9B,GACd7b,IAAUqwD,GAAerwD,IAAU4+wC,IACrC7luC,EAAMl9B,GAAS+iwC,EACfv8vC,EAAOgrvC,KAAcxxvC,EAEzB,CACA,OAAOwG,CACT,CASA,SAAS4zvC,GAAWnrwC,GAClB,IAAI+Q,GAAS,EACTwG,EAAS/jB,MAAMwM,EAAI2Y,MAKvB,OAHA3Y,EAAIiZ,SAAQ,SAAS/jB,GACnBqiB,IAASxG,GAAS7b,CACpB,IACOqiB,CACT,CASA,SAASyiwC,GAAWh6wC,GAClB,IAAI+Q,GAAS,EACTwG,EAAS/jB,MAAMwM,EAAI2Y,MAKvB,OAHA3Y,EAAIiZ,SAAQ,SAAS/jB,GACnBqiB,IAASxG,GAAS,CAAC7b,EAAOA,EAC5B,IACOqiB,CACT,CAmDA,SAAS0iwC,GAAWnpwC,GAClB,OAAOo8vC,GAAWp8vC,GAiDpB,SAAqBA,GAEnB,IADA,IAAIyG,EAAS+6vC,GAAUhstC,UAAY,EAC5BgstC,GAAUlzwC,KAAK0R,MAClByG,EAEJ,OAAOA,CACT,CAtDM2iwC,CAAYppwC,GACZiowC,GAAUjowC,EAChB,CASA,SAASw+rB,GAAcx+rB,GACrB,OAAOo8vC,GAAWp8vC,GAmDpB,SAAwBA,GACtB,OAAOA,EAAOtW,MAAM83wC,KAAc,EACpC,CApDMnB,CAAergwC,GA7kBrB,SAAsBA,GACpB,OAAOA,EAAOnY,MAAM,GACtB,CA4kBMu4wC,CAAapgwC,EACnB,CAUA,SAASk6vC,GAAgBl6vC,GAGvB,IAFA,IAAIC,EAAQD,EAAO1c,OAEZ2c,KAAW0gwC,GAAarywC,KAAK0R,EAAOlE,OAAOmE,MAClD,OAAOA,CACT,CASA,IAAIopwC,GAAmBd,GA38BH,CAClB,QAAS,IACT,OAAQ,IACR,OAAQ,IACR,SAAU,IACV,QAAS,MAm7gBP1hxC,GAv6ee,SAAUyixC,EAAal5uC,GAIxC,IA6BMimT,EA7BF3zV,GAHJ0tC,EAAqB,MAAXA,EAAkBgjH,GAAOvsJ,GAAEotU,SAAS7gL,GAAK7wJ,SAAU6tC,EAASvpC,GAAEg1X,KAAKzoO,GAAM+znC,MAG/DzkxC,MAChB+rB,GAAO2hB,EAAQ3hB,KACfhE,GAAQ2lB,EAAQ3lB,MAChBzkB,GAAWoqC,EAAQpqC,SACnBF,GAAOsqC,EAAQtqC,KACfvD,GAAS6tC,EAAQ7tC,OACjByoC,GAASoF,EAAQpF,OACjBjoC,GAASqtC,EAAQrtC,OACjBD,GAAYstC,EAAQttC,UAGpBuo8B,GAAa3o8B,EAAMC,UACnB40wC,GAAYvxwC,GAASrD,UACrB60wC,GAAcj1wC,GAAOI,UAGrBm5wC,GAAa1ruC,EAAQ,sBAGrBqnuC,GAAeF,GAAU/vwC,SAGzB5E,GAAiB40wC,GAAY50wC,eAG7B2mxC,GAAY,EAGZjK,IACEjp7B,EAAM,SAAShhV,KAAKymwC,IAAcA,GAAWvlwC,MAAQulwC,GAAWvlwC,KAAKgpwC,UAAY,KACvE,iBAAmBlp7B,EAAO,GAQtCqn7B,GAAuBlG,GAAYhwwC,SAGnCg7wC,GAAmB/K,GAAa50wC,KAAKN,IAGrCinxC,GAAUp2nC,GAAKvsJ,EAGf6wwC,GAAa1suC,GAAO,IACtBysuC,GAAa50wC,KAAKD,IAAgB8M,QAAQs1wC,GAAc,QACvDt1wC,QAAQ,yDAA0D,SAAW,KAI5Ekb,GAAS28vC,GAAgBn3uC,EAAQxlB,OAASomB,EAC1CrsC,GAASyrC,EAAQzrC,OACjBie,GAAawtB,EAAQxtB,WACrB+3vC,GAAc/vvC,GAASA,GAAO+vvC,YAAc3puC,EAC5CwsuC,GAAeC,GAAQl7wC,GAAO2b,eAAgB3b,IAC9CsxwC,GAAetxwC,GAAOY,OACtBQ,GAAuB6zwC,GAAY7zwC,qBACnCuiB,GAASml7B,GAAWnl7B,OACpB+4vC,GAAmBt6wC,GAASA,GAAOu6wC,mBAAqBluuC,EACxDy4uC,GAAc9kxC,GAASA,GAAOC,SAAWosC,EACzCskuC,GAAiB3wwC,GAASA,GAAOyoB,YAAc4jB,EAE/C7qC,GAAkB,WACpB,IACE,IAAI68C,EAAO6stC,GAAUttwC,GAAQ,kBAE7B,OADAygD,EAAK,CAAC,EAAG,GAAI,CAAC,GACPA,CACT,CAAE,MAAO5gD,GAAI,CACf,CANqB,GASjBsnxC,GAAkBt5uC,EAAQzgB,eAAiByjI,GAAKzjI,cAAgBygB,EAAQzgB,aACxEg6vC,GAASl7vC,IAAQA,GAAKC,MAAQ0kI,GAAK3kI,KAAKC,KAAOD,GAAKC,IACpDk7vC,GAAgBx5uC,EAAQtnB,aAAesqI,GAAKtqI,YAAcsnB,EAAQtnB,WAGlE44vC,GAAa57wC,GAAKuK,KAClBw5wC,GAAc/jxC,GAAKyK,MACnBwtwC,GAAmBx7wC,GAAOmB,sBAC1BomxC,GAAiBl/vC,GAASA,GAAO49O,SAAWx3N,EAC5CsruC,GAAiBlsuC,EAAQzF,SACzBo/uC,GAAa1+U,GAAWv77B,KACxBkowC,GAAayF,GAAQl7wC,GAAOgU,KAAMhU,IAClCoswC,GAAY7owC,GAAK8K,IACjBg+vC,GAAY9owC,GAAKgL,IACjBivwC,GAAYtxvC,GAAKC,IACjBs7vC,GAAiB55uC,EAAQxX,SACzBqxvC,GAAenkxC,GAAKwF,OACpB4+wC,GAAgB7+U,GAAW9t4B,QAG3B/7C,GAAWquvC,GAAUz/tC,EAAS,YAC9BxiB,GAAMiivC,GAAUz/tC,EAAS,OACzBxsC,GAAUiswC,GAAUz/tC,EAAS,WAC7BxnB,GAAMinvC,GAAUz/tC,EAAS,OACzBhiC,GAAUyhwC,GAAUz/tC,EAAS,WAC7ByuuC,GAAehP,GAAUttwC,GAAQ,UAGjC4nxC,GAAU/7wC,IAAW,IAAIA,GAGzBg8wC,GAAY,CAAC,EAGb/L,GAAqBhH,GAAS71vC,IAC9B88vC,GAAgBjH,GAASzpvC,IACzB2wvC,GAAoBlH,GAASzzwC,IAC7B46wC,GAAgBnH,GAASzuvC,IACzB61vC,GAAoBpH,GAASjpwC,IAG7B4rwC,GAAcr1wC,GAASA,GAAOhC,UAAYquC,EAC1C8puC,GAAgBd,GAAcA,GAAY7twC,QAAU6kC,EACpDipuC,GAAiBD,GAAcA,GAAYxywC,SAAWwpC,EAyH1D,SAASq5uC,GAAOjmxC,GACd,GAAIi4uC,GAAaj4uC,KAAWwQ,GAAQxQ,MAAYA,aAAiBkmxC,IAAc,CAC7E,GAAIlmxC,aAAiBmmxC,GACnB,OAAOnmxC,EAET,GAAIxB,GAAeC,KAAKuB,EAAO,eAC7B,OAAOomxC,GAAapmxC,EAExB,CACA,OAAO,IAAImmxC,GAAcnmxC,EAC3B,CAUA,IAAI0vwC,GAAc,WAChB,SAASzztC,IAAU,CACnB,OAAO,SAAS5rC,GACd,IAAKyzP,GAASzzP,GACZ,MAAO,CAAC,EAEV,GAAIo/vC,GACF,OAAOA,GAAap/vC,GAEtB4rC,EAAO19C,UAAY8R,EACnB,IAAIgS,EAAS,IAAI45B,EAEjB,OADAA,EAAO19C,UAAYquC,EACZvqB,CACT,CACF,CAdiB,GAqBjB,SAASgkwC,KAET,CASA,SAASF,GAAcnmxC,EAAOsmxC,GAC5BznxC,KAAK0nxC,YAAcvmxC,EACnBnB,KAAK2nxC,YAAc,GACnB3nxC,KAAK4nxC,YAAcH,EACnBznxC,KAAK6nxC,UAAY,EACjB7nxC,KAAK8nxC,WAAa/5uC,CACpB,CAmFA,SAASs5uC,GAAYlmxC,GACnBnB,KAAK0nxC,YAAcvmxC,EACnBnB,KAAK2nxC,YAAc,GACnB3nxC,KAAK+nxC,QAAU,EACf/nxC,KAAKgoxC,cAAe,EACpBhoxC,KAAKioxC,cAAgB,GACrBjoxC,KAAKkoxC,cAAgB/H,EACrBngxC,KAAKmoxC,UAAY,EACnB,CA+GA,SAASjb,GAAKzwvC,GACZ,IAAIO,GAAS,EACT3c,EAAoB,MAAXoc,EAAkB,EAAIA,EAAQpc,OAG3C,IADAL,KAAKglB,UACIhI,EAAQ3c,GAAQ,CACvB,IAAI2zD,EAAQv3C,EAAQO,GACpBhd,KAAKiM,IAAI+nD,EAAM,GAAIA,EAAM,GAC3B,CACF,CA+FA,SAASs5sC,GAAU7wvC,GACjB,IAAIO,GAAS,EACT3c,EAAoB,MAAXoc,EAAkB,EAAIA,EAAQpc,OAG3C,IADAL,KAAKglB,UACIhI,EAAQ3c,GAAQ,CACvB,IAAI2zD,EAAQv3C,EAAQO,GACpBhd,KAAKiM,IAAI+nD,EAAM,GAAIA,EAAM,GAC3B,CACF,CA4GA,SAAS45sC,GAASnxvC,GAChB,IAAIO,GAAS,EACT3c,EAAoB,MAAXoc,EAAkB,EAAIA,EAAQpc,OAG3C,IADAL,KAAKglB,UACIhI,EAAQ3c,GAAQ,CACvB,IAAI2zD,EAAQv3C,EAAQO,GACpBhd,KAAKiM,IAAI+nD,EAAM,GAAIA,EAAM,GAC3B,CACF,CA+FA,SAAS+5sC,GAASrxvC,GAChB,IAAIM,GAAS,EACT3c,EAAmB,MAAVqc,EAAiB,EAAIA,EAAOrc,OAGzC,IADAL,KAAKguwC,SAAW,IAAIJ,KACX5wvC,EAAQ3c,GACfL,KAAKmlB,IAAIzI,EAAOM,GAEpB,CA2CA,SAASsxvC,GAAM7xvC,GACb,IAAIjN,EAAOxP,KAAKguwC,SAAW,IAAIV,GAAU7wvC,GACzCzc,KAAK4kB,KAAOpV,EAAKoV,IACnB,CAoGA,SAASg7vC,GAAcz+wC,EAAO0twC,GAC5B,IAAI7jU,EAAQr57B,GAAQxQ,GAChB2twC,GAAS9jU,GAAS2jU,GAAYxtwC,GAC9B4twC,GAAU/jU,IAAU8jU,GAASvpgC,GAASpkQ,GACtC86F,GAAU+u2B,IAAU8jU,IAAUC,GAAU9tvC,GAAa9f,GACrD6twC,EAAchkU,GAAS8jU,GAASC,GAAU9yqC,EAC1Cz4E,EAASwrvC,EAAcN,GAAUvtwC,EAAMd,OAAQP,IAAU,GACzDO,EAASmjB,EAAOnjB,OAEpB,IAAK,IAAIwkB,KAAO1jB,GACT0twC,IAAalvwC,GAAeC,KAAKuB,EAAO0jB,IACvCmqvC,IAEQ,UAAPnqvC,GAECkqvC,IAAkB,UAAPlqvC,GAA0B,UAAPA,IAE9Bo3E,IAAkB,UAAPp3E,GAA0B,cAAPA,GAA8B,cAAPA,IAEtD+pvC,GAAQ/pvC,EAAKxkB,KAElBmjB,EAAO3hB,KAAKgjB,GAGhB,OAAOrB,CACT,CASA,SAAS4kwC,GAAYluuC,GACnB,IAAI75C,EAAS65C,EAAM75C,OACnB,OAAOA,EAAS65C,EAAMmuuC,GAAW,EAAGhoxC,EAAS,IAAM0tC,CACrD,CAUA,SAASu6uC,GAAgBpuuC,EAAO76C,GAC9B,OAAOkpxC,GAAY9Y,GAAUv1tC,GAAQsuuC,GAAUnpxC,EAAG,EAAG66C,EAAM75C,QAC7D,CASA,SAASooxC,GAAavuuC,GACpB,OAAOquuC,GAAY9Y,GAAUv1tC,GAC/B,CAWA,SAASs7tC,GAAiBp4tC,EAAQv4B,EAAK1jB,IAChCA,IAAU4sC,IAAcqhL,GAAGhyK,EAAOv4B,GAAM1jB,IACxCA,IAAU4sC,KAAelpB,KAAOu4B,KACnC6xtC,GAAgB7xtC,EAAQv4B,EAAK1jB,EAEjC,CAYA,SAASu46B,GAAYt83B,EAAQv4B,EAAK1jB,GAChC,IAAI+twC,EAAW9xtC,EAAOv4B,GAChBllB,GAAeC,KAAKw9C,EAAQv4B,IAAQuqM,GAAG8/iC,EAAU/twC,KAClDA,IAAU4sC,GAAelpB,KAAOu4B,IACnC6xtC,GAAgB7xtC,EAAQv4B,EAAK1jB,EAEjC,CAUA,SAASo7wC,GAAariuC,EAAOr1B,GAE3B,IADA,IAAIxkB,EAAS65C,EAAM75C,OACZA,KACL,GAAI+uN,GAAGl1K,EAAM75C,GAAQ,GAAIwkB,GACvB,OAAOxkB,EAGX,OAAQ,CACV,CAaA,SAASqoxC,GAAevqhC,EAAYxxP,EAAQ4hwC,EAAU94c,GAIpD,OAHA+7c,GAASrzgC,GAAY,SAASh9P,EAAO0jB,EAAKs5O,GACxCxxP,EAAO8ozB,EAAat0zB,EAAOotwC,EAASptwC,GAAQg9P,EAC9C,IACOs3jB,CACT,CAWA,SAAS65c,GAAWlytC,EAAQv1C,GAC1B,OAAOu1C,GAAU+xtC,GAAWtnwC,EAAQyL,GAAKzL,GAASu1C,EACpD,CAwBA,SAAS6xtC,GAAgB7xtC,EAAQv4B,EAAK1jB,GACzB,aAAP0jB,GAAsB3hB,GACxBA,GAAek6C,EAAQv4B,EAAK,CAC1B,cAAgB,EAChB,YAAc,EACd,MAAS1jB,EACT,UAAY,IAGdi8C,EAAOv4B,GAAO1jB,CAElB,CAUA,SAASwnxC,GAAOvruC,EAAQmhM,GAMtB,IALA,IAAIvhO,GAAS,EACT3c,EAASk+O,EAAMl+O,OACfmjB,EAAS/jB,EAAMY,GACf41hB,EAAiB,MAAV74e,IAEFpgC,EAAQ3c,GACfmjB,EAAOxG,GAASi5gB,EAAOlof,EAAY5qC,GAAIi6C,EAAQmhM,EAAMvhO,IAEvD,OAAOwG,CACT,CAWA,SAASglwC,GAAUz+nC,EAAQ0qmC,EAAOL,GAShC,OARIrqmC,GAAWA,IACTqqmC,IAAUrmtC,IACZg8G,EAASA,GAAUqqmC,EAAQrqmC,EAASqqmC,GAElCK,IAAU1mtC,IACZg8G,EAASA,GAAU0qmC,EAAQ1qmC,EAAS0qmC,IAGjC1qmC,CACT,CAkBA,SAASsmnC,GAAUlvwC,EAAOmvwC,EAASC,EAAY1rvC,EAAKu4B,EAAQzK,GAC1D,IAAInvB,EACAgtvC,EAzkFc,EAykFLF,EACTG,EAzkFc,EAykFLH,EACT7mtC,EAzkFiB,EAykFR6mtC,EAKb,GAHIC,IACF/svC,EAAS45B,EAASmztC,EAAWpvwC,EAAO0jB,EAAKu4B,EAAQzK,GAAS49tC,EAAWpvwC,IAEnEqiB,IAAWuqB,EACb,OAAOvqB,EAET,IAAKyhP,GAAS9jQ,GACZ,OAAOA,EAET,IAAI6p8B,EAAQr57B,GAAQxQ,GACpB,GAAI6p8B,GAEF,GADAxn7B,EAu+GJ,SAAwB02B,GACtB,IAAI75C,EAAS65C,EAAM75C,OACfmjB,EAAS,IAAI02B,EAAMj6C,YAAYI,GAOnC,OAJIA,GAA6B,iBAAZ65C,EAAM,IAAkBv6C,GAAeC,KAAKs6C,EAAO,WACtE12B,EAAOxG,MAAQk9B,EAAMl9B,MACrBwG,EAAOitC,MAAQvW,EAAMuW,OAEhBjtC,CACT,CAj/GassvC,CAAe3uwC,IACnBqvwC,EACH,OAAOf,GAAUtuwC,EAAOqiB,OAErB,CACL,IAAIpM,EAAM2guC,GAAO52uC,GACbuvwC,EAASt5vC,GAAO84vC,GAAW94vC,GAAOopwC,EAEtC,GAAIj7gC,GAASpkQ,GACX,OAAOquwC,GAAYruwC,EAAOqvwC,GAE5B,GAAIp5vC,GAAO+4vC,GAAa/4vC,GAAO64vC,GAAYS,IAAWtztC,GAEpD,GADA55B,EAAUitvC,GAAUC,EAAU,CAAC,EAAIV,GAAgB7uwC,IAC9CqvwC,EACH,OAAOC,EAypEf,SAAuB5owC,EAAQu1C,GAC7B,OAAO+xtC,GAAWtnwC,EAAQ+wwC,GAAa/wwC,GAASu1C,EAClD,CA1pEYuytC,CAAcxuwC,EAnH1B,SAAsBi8C,EAAQv1C,GAC5B,OAAOu1C,GAAU+xtC,GAAWtnwC,EAAQunwC,GAAOvnwC,GAASu1C,EACtD,CAiHiCmytC,CAAa/rvC,EAAQriB,IA4oEtD,SAAqB0G,EAAQu1C,GAC3B,OAAO+xtC,GAAWtnwC,EAAQ8wwC,GAAW9wwC,GAASu1C,EAChD,CA7oEYsytC,CAAYvuwC,EAAOmuwC,GAAW9rvC,EAAQriB,QAEvC,CACL,IAAKivwC,GAAch5vC,GACjB,OAAOgmC,EAASj8C,EAAQ,CAAC,EAE3BqiB,EAs/GN,SAAwB45B,EAAQhmC,EAAKo5vC,GACnC,IAzlDmBt2wB,EAylDf8uc,EAAO5r5B,EAAOn9C,YAClB,OAAQmX,GACN,KAAKwpwC,EACH,OAAOjJ,GAAiBv6tC,GAE1B,KAAKijuC,EACL,KAAKC,EACH,OAAO,IAAIt3U,GAAM5r5B,GAEnB,KAAK+9tC,EACH,OA5nDN,SAAuBpyjC,EAAUynjC,GAC/B,IAAItovC,EAASsovC,EAASmH,GAAiB5ujC,EAAS7gM,QAAU6gM,EAAS7gM,OACnE,OAAO,IAAI6gM,EAAS9oN,YAAYioB,EAAQ6gM,EAAS5gM,WAAY4gM,EAAS3gM,WACxE,CAynDayzvC,CAAcz+tC,EAAQoztC,GAE/B,KAAKqQ,EAAY,KAAKC,EACtB,KAAKC,EAAS,KAAKC,EAAU,KAAKC,EAClC,KAAKC,EAAU,KAAKC,EAAiB,KAAKC,EAAW,KAAKC,EACxD,OAAOxL,GAAgBz4tC,EAAQoztC,GAEjC,KAAKuK,EACH,OAAO,IAAI/xU,EAEb,KAAKy3U,EACL,KAAKE,EACH,OAAO,IAAI33U,EAAK5r5B,GAElB,KAAKsjuC,EACH,OA/nDN,SAAqBr3vB,GACnB,IAAI7lgB,EAAS,IAAI6lgB,EAAOpphB,YAAYophB,EAAOxhhB,OAAQ+vwC,GAAQxlwC,KAAKi3gB,IAEhE,OADA7lgB,EAAO+uC,UAAY82d,EAAO92d,UACnB/uC,CACT,CA2nDas4vC,CAAY1+tC,GAErB,KAAK69tC,EACH,OAAO,IAAIjyU,EAEb,KAAKiiU,EACH,OAxnDe/wwB,EAwnDI98c,EAvnDhBy6tC,GAAgBv4wC,GAAOu4wC,GAAcj4wC,KAAKs6f,IAAW,CAAC,EAynD/D,CAxhHe61wB,CAAe5uwC,EAAOiW,EAAKo5vC,EACtC,CACF,CAEA79tC,IAAUA,EAAQ,IAAI27tC,IACtB,IAAIpob,EAAUvzyB,EAAMxvC,IAAIhC,GACxB,GAAI+k1B,EACF,OAAOA,EAETvzyB,EAAM1mC,IAAI9K,EAAOqiB,GAEbolqC,GAAMznrC,GACRA,EAAM+jB,SAAQ,SAASyrvC,GACrBntvC,EAAO2B,IAAIkrvC,GAAUM,EAAUL,EAASC,EAAYI,EAAUxvwC,EAAOwxC,GACvE,IACS0iO,GAAMl0Q,IACfA,EAAM+jB,SAAQ,SAASyrvC,EAAU9rvC,GAC/BrB,EAAOvX,IAAI4Y,EAAKwrvC,GAAUM,EAAUL,EAASC,EAAY1rvC,EAAK1jB,EAAOwxC,GACvE,IAGF,IAII1F,EAAQ+95B,EAAQj95B,GAJL0b,EACVgntC,EAASZ,GAAeD,GACxBa,EAASrB,GAAS97vC,IAEkBnS,GASzC,OARAkuwC,GAAUpiuC,GAAS9rC,GAAO,SAASwvwC,EAAU9rvC,GACvCooB,IAEF0juC,EAAWxvwC,EADX0jB,EAAM8rvC,IAIRj3V,GAAYl25B,EAAQqB,EAAKwrvC,GAAUM,EAAUL,EAASC,EAAY1rvC,EAAK1jB,EAAOwxC,GAChF,IACOnvB,CACT,CAwBA,SAASolwC,GAAexruC,EAAQv1C,EAAQolC,GACtC,IAAI5sC,EAAS4sC,EAAM5sC,OACnB,GAAc,MAAV+8C,EACF,OAAQ/8C,EAGV,IADA+8C,EAAS99C,GAAO89C,GACT/8C,KAAU,CACf,IAAIwkB,EAAMooB,EAAM5sC,GACZwjD,EAAYh8C,EAAOgd,GACnB1jB,EAAQi8C,EAAOv4B,GAEnB,GAAK1jB,IAAU4sC,KAAelpB,KAAOu4B,KAAayG,EAAU1iD,GAC1D,OAAO,CAEX,CACA,OAAO,CACT,CAYA,SAAS0nxC,GAAU9ouC,EAAMqC,EAAM/K,GAC7B,GAAmB,mBAAR0I,EACT,MAAM,IAAIlgD,GAAUkrwC,GAEtB,OAAOllvC,IAAW,WAAak6B,EAAKx/C,MAAMwtC,EAAWsJ,EAAO,GAAG+K,EACjE,CAaA,SAASw8tC,GAAe1kuC,EAAOx9B,EAAQ6xvC,EAAUx1xB,GAC/C,IAAI/7d,GAAS,EACT5O,EAAW0iwC,GACXK,GAAW,EACX9wwC,EAAS65C,EAAM75C,OACfmjB,EAAS,GACT4tvC,EAAe10vC,EAAOrc,OAE1B,IAAKA,EACH,OAAOmjB,EAEL+qvC,IACF7xvC,EAASs0vC,GAASt0vC,EAAQu0vC,GAAU1C,KAElCx1xB,GACF3qe,EAAW2iwC,GACXI,GAAW,GAEJz0vC,EAAOrc,QA3vFG,MA4vFjB+N,EAAW8iwC,GACXC,GAAW,EACXz0vC,EAAS,IAAIqxvC,GAASrxvC,IAExBk/f,EACA,OAAS5+f,EAAQ3c,GAAQ,CACvB,IAAIc,EAAQ+4C,EAAMl9B,GACdq0vC,EAAuB,MAAZ9C,EAAmBptwC,EAAQotwC,EAASptwC,GAGnD,GADAA,EAAS43e,GAAwB,IAAV53e,EAAeA,EAAQ,EAC1CgwwC,GAAYE,GAAaA,EAAU,CAErC,IADA,IAAIC,EAAcF,EACXE,KACL,GAAI50vC,EAAO40vC,KAAiBD,EAC1B,SAASz1vB,EAGbp4f,EAAO3hB,KAAKV,EACd,MACUiN,EAASsO,EAAQ20vC,EAAUt4xB,IACnCv1d,EAAO3hB,KAAKV,EAEhB,CACA,OAAOqiB,CACT,CAlkCA4jwC,GAAO0B,iBAAmB,CAQxB,OAAUlH,EAQV,SAAYC,EAQZ,YAAeC,EAQf,SAAY,GAQZ,QAAW,CAQT,EAAKsF,KAKTA,GAAO1nxC,UAAY8nxC,GAAW9nxC,UAC9B0nxC,GAAO1nxC,UAAUO,YAAcmnxC,GAE/BE,GAAc5nxC,UAAYmxwC,GAAW2W,GAAW9nxC,WAChD4nxC,GAAc5nxC,UAAUO,YAAcqnxC,GAsHtCD,GAAY3nxC,UAAYmxwC,GAAW2W,GAAW9nxC,WAC9C2nxC,GAAY3nxC,UAAUO,YAAconxC,GAoGpCna,GAAKxtwC,UAAUslB,MAvEf,WACEhlB,KAAKguwC,SAAW4N,GAAeA,GAAa,MAAQ,CAAC,EACrD57wC,KAAK4kB,KAAO,CACd,EAqEAsovC,GAAKxtwC,UAAkB,OAzDvB,SAAoBmlB,GAClB,IAAIrB,EAASxjB,KAAK+L,IAAI8Y,WAAe7kB,KAAKguwC,SAASnpvC,GAEnD,OADA7kB,KAAK4kB,MAAQpB,EAAS,EAAI,EACnBA,CACT,EAsDA0pvC,GAAKxtwC,UAAUyD,IA3Cf,SAAiB0hB,GACf,IAAIrV,EAAOxP,KAAKguwC,SAChB,GAAI4N,GAAc,CAChB,IAAIp4vC,EAAShU,EAAKqV,GAClB,OAAOrB,IAAWs8vC,EAAiB/xuC,EAAYvqB,CACjD,CACA,OAAO7jB,GAAeC,KAAK4P,EAAMqV,GAAOrV,EAAKqV,GAAOkpB,CACtD,EAqCAm/tC,GAAKxtwC,UAAUqM,IA1Bf,SAAiB8Y,GACf,IAAIrV,EAAOxP,KAAKguwC,SAChB,OAAO4N,GAAgBpswC,EAAKqV,KAASkpB,EAAapuC,GAAeC,KAAK4P,EAAMqV,EAC9E,EAwBAqovC,GAAKxtwC,UAAUuM,IAZf,SAAiB4Y,EAAK1jB,GACpB,IAAIqO,EAAOxP,KAAKguwC,SAGhB,OAFAhuwC,KAAK4kB,MAAQ5kB,KAAK+L,IAAI8Y,GAAO,EAAI,EACjCrV,EAAKqV,GAAQ+2vC,IAAgBz6wC,IAAU4sC,EAAa+xuC,EAAiB3+wC,EAC9DnB,IACT,EAwHAstwC,GAAU5twC,UAAUslB,MApFpB,WACEhlB,KAAKguwC,SAAW,GAChBhuwC,KAAK4kB,KAAO,CACd,EAkFA0ovC,GAAU5twC,UAAkB,OAvE5B,SAAyBmlB,GACvB,IAAIrV,EAAOxP,KAAKguwC,SACZhxvC,EAAQu/vC,GAAa/swC,EAAMqV,GAE/B,QAAI7H,EAAQ,IAIRA,GADYxN,EAAKnP,OAAS,EAE5BmP,EAAK5N,MAELqhB,GAAOrjB,KAAK4P,EAAMwN,EAAO,KAEzBhd,KAAK4kB,KACA,GACT,EAyDA0ovC,GAAU5twC,UAAUyD,IA9CpB,SAAsB0hB,GACpB,IAAIrV,EAAOxP,KAAKguwC,SACZhxvC,EAAQu/vC,GAAa/swC,EAAMqV,GAE/B,OAAO7H,EAAQ,EAAI+wB,EAAYv+B,EAAKwN,GAAO,EAC7C,EA0CAswvC,GAAU5twC,UAAUqM,IA/BpB,SAAsB8Y,GACpB,OAAO03vC,GAAav8wC,KAAKguwC,SAAUnpvC,IAAQ,CAC7C,EA8BAyovC,GAAU5twC,UAAUuM,IAlBpB,SAAsB4Y,EAAK1jB,GACzB,IAAIqO,EAAOxP,KAAKguwC,SACZhxvC,EAAQu/vC,GAAa/swC,EAAMqV,GAQ/B,OANI7H,EAAQ,KACRhd,KAAK4kB,KACPpV,EAAK3N,KAAK,CAACgjB,EAAK1jB,KAEhBqO,EAAKwN,GAAO,GAAK7b,EAEZnB,IACT,EA0GA4twC,GAASluwC,UAAUslB,MAtEnB,WACEhlB,KAAK4kB,KAAO,EACZ5kB,KAAKguwC,SAAW,CACd,KAAQ,IAAId,GACZ,IAAO,IAAKvivC,IAAO2ivC,IACnB,OAAU,IAAIJ,GAElB,EAgEAU,GAASluwC,UAAkB,OArD3B,SAAwBmlB,GACtB,IAAIrB,EAASg5vC,GAAWx8wC,KAAM6kB,GAAa,OAAEA,GAE7C,OADA7kB,KAAK4kB,MAAQpB,EAAS,EAAI,EACnBA,CACT,EAkDAoqvC,GAASluwC,UAAUyD,IAvCnB,SAAqB0hB,GACnB,OAAO23vC,GAAWx8wC,KAAM6kB,GAAK1hB,IAAI0hB,EACnC,EAsCA+ovC,GAASluwC,UAAUqM,IA3BnB,SAAqB8Y,GACnB,OAAO23vC,GAAWx8wC,KAAM6kB,GAAK9Y,IAAI8Y,EACnC,EA0BA+ovC,GAASluwC,UAAUuM,IAdnB,SAAqB4Y,EAAK1jB,GACxB,IAAIqO,EAAOgtwC,GAAWx8wC,KAAM6kB,GACxBD,EAAOpV,EAAKoV,KAIhB,OAFApV,EAAKvD,IAAI4Y,EAAK1jB,GACdnB,KAAK4kB,MAAQpV,EAAKoV,MAAQA,EAAO,EAAI,EAC9B5kB,IACT,EA0DA+twC,GAASruwC,UAAUylB,IAAM4ovC,GAASruwC,UAAUmC,KAnB5C,SAAqBV,GAEnB,OADAnB,KAAKguwC,SAAS/hwC,IAAI9K,EAAO2+wC,GAClB9/wC,IACT,EAiBA+twC,GAASruwC,UAAUqM,IANnB,SAAqB5K,GACnB,OAAOnB,KAAKguwC,SAASjiwC,IAAI5K,EAC3B,EAsGAmtwC,GAAM5uwC,UAAUslB,MA3EhB,WACEhlB,KAAKguwC,SAAW,IAAIV,GACpBttwC,KAAK4kB,KAAO,CACd,EAyEA0pvC,GAAM5uwC,UAAkB,OA9DxB,SAAqBmlB,GACnB,IAAIrV,EAAOxP,KAAKguwC,SACZxqvC,EAAShU,EAAa,OAAEqV,GAG5B,OADA7kB,KAAK4kB,KAAOpV,EAAKoV,KACVpB,CACT,EAyDA8qvC,GAAM5uwC,UAAUyD,IA9ChB,SAAkB0hB,GAChB,OAAO7kB,KAAKguwC,SAAS7qwC,IAAI0hB,EAC3B,EA6CAypvC,GAAM5uwC,UAAUqM,IAlChB,SAAkB8Y,GAChB,OAAO7kB,KAAKguwC,SAASjiwC,IAAI8Y,EAC3B,EAiCAypvC,GAAM5uwC,UAAUuM,IArBhB,SAAkB4Y,EAAK1jB,GACrB,IAAIqO,EAAOxP,KAAKguwC,SAChB,GAAIx+vC,aAAgB89vC,GAAW,CAC7B,IAAI2P,EAAQztwC,EAAKw+vC,SACjB,IAAKrjvC,IAAQsyvC,EAAM58wC,OAAS68wC,IAG1B,OAFAD,EAAMp7wC,KAAK,CAACgjB,EAAK1jB,IACjBnB,KAAK4kB,OAASpV,EAAKoV,KACZ5kB,KAETwP,EAAOxP,KAAKguwC,SAAW,IAAIJ,GAASqP,EACtC,CAGA,OAFAztwC,EAAKvD,IAAI4Y,EAAK1jB,GACdnB,KAAK4kB,KAAOpV,EAAKoV,KACV5kB,IACT,EAqcA,IAAIwxwC,GAAWC,GAAeF,IAU1BwX,GAAgBtX,GAAeuX,IAAiB,GAWpD,SAASC,GAAU9qhC,EAAYt6M,GAC7B,IAAIrgC,GAAS,EAKb,OAJAguvC,GAASrzgC,GAAY,SAASh9P,EAAO6b,EAAOmhP,GAE1C,OADA36O,IAAWqgC,EAAU1iD,EAAO6b,EAAOmhP,EAErC,IACO36O,CACT,CAYA,SAAS0lwC,GAAahvuC,EAAOq0tC,EAAUx1xB,GAIrC,IAHA,IAAI/7d,GAAS,EACT3c,EAAS65C,EAAM75C,SAEV2c,EAAQ3c,GAAQ,CACvB,IAAIc,EAAQ+4C,EAAMl9B,GACd+iB,EAAUwuuC,EAASptwC,GAEvB,GAAe,MAAX4+B,IAAoBsxuC,IAAatjuC,EAC5BhO,GAAYA,IAAY6ruC,GAAS7ruC,GAClCg5c,EAAWh5c,EAASsxuC,IAE1B,IAAIA,EAAWtxuC,EACXvc,EAASriB,CAEjB,CACA,OAAOqiB,CACT,CAsCA,SAAS2lwC,GAAWhrhC,EAAYt6M,GAC9B,IAAIrgC,EAAS,GAMb,OALAguvC,GAASrzgC,GAAY,SAASh9P,EAAO6b,EAAOmhP,GACtCt6M,EAAU1iD,EAAO6b,EAAOmhP,IAC1B36O,EAAO3hB,KAAKV,EAEhB,IACOqiB,CACT,CAaA,SAASquvC,GAAY33tC,EAAOq9F,EAAO1zF,EAAWiutC,EAAUtuvC,GACtD,IAAIxG,GAAS,EACT3c,EAAS65C,EAAM75C,OAKnB,IAHAwjD,IAAcA,EAAY+ttC,IAC1BpuvC,IAAWA,EAAS,MAEXxG,EAAQ3c,GAAQ,CACvB,IAAIc,EAAQ+4C,EAAMl9B,GACdu6H,EAAQ,GAAK1zF,EAAU1iD,GACrBo2I,EAAQ,EAEVs6nC,GAAY1wwC,EAAOo2I,EAAQ,EAAG1zF,EAAWiutC,EAAUtuvC,GAEnDmuvC,GAAUnuvC,EAAQriB,GAEV2wwC,IACVtuvC,EAAOA,EAAOnjB,QAAUc,EAE5B,CACA,OAAOqiB,CACT,CAaA,IAAIuuvC,GAAUC,KAYVoX,GAAepX,IAAc,GAUjC,SAAST,GAAWn0tC,EAAQmxtC,GAC1B,OAAOnxtC,GAAU20tC,GAAQ30tC,EAAQmxtC,EAAUj7vC,GAC7C,CAUA,SAAS01wC,GAAgB5ruC,EAAQmxtC,GAC/B,OAAOnxtC,GAAUgsuC,GAAahsuC,EAAQmxtC,EAAUj7vC,GAClD,CAWA,SAAS+1wC,GAAcjsuC,EAAQnQ,GAC7B,OAAO2tuC,GAAY3tuC,GAAO,SAASpoB,GACjC,OAAOmgP,GAAW5nN,EAAOv4B,GAC3B,GACF,CAUA,SAASqxvC,GAAQ94tC,EAAQ/mB,GAMvB,IAHA,IAAIrZ,EAAQ,EACR3c,GAHJg2B,EAAO47uC,GAAS57uC,EAAM+mB,IAGJ/8C,OAED,MAAV+8C,GAAkBpgC,EAAQ3c,GAC/B+8C,EAASA,EAAO3qB,GAAM4D,EAAKrZ,OAE7B,OAAQA,GAASA,GAAS3c,EAAU+8C,EAASrP,CAC/C,CAaA,SAASqsuC,GAAeh9tC,EAAQ80tC,EAAUC,GACxC,IAAI3uvC,EAAS0uvC,EAAS90tC,GACtB,OAAOzrC,GAAQyrC,GAAU55B,EAASmuvC,GAAUnuvC,EAAQ2uvC,EAAY/0tC,GAClE,CASA,SAASw1tC,GAAWzxwC,GAClB,OAAa,MAATA,EACKA,IAAU4sC,EAv7FJ,qBARL,gBAi8FFskuC,IAAkBA,MAAkB/ywC,GAAO6B,GAq5FrD,SAAmBA,GACjB,IAAIu5wC,EAAQ/6wC,GAAeC,KAAKuB,EAAOkxwC,IACnCj7vC,EAAMjW,EAAMkxwC,IAEhB,IACElxwC,EAAMkxwC,IAAkBtkuC,EACxB,IAAI4suC,GAAW,CACjB,CAAE,MAAOx7wC,GAAI,CAEb,IAAIqkB,EAASi3vC,GAAqB76wC,KAAKuB,GAQvC,OAPIw5wC,IACED,EACFv5wC,EAAMkxwC,IAAkBj7vC,SAEjBjW,EAAMkxwC,KAGV7uvC,CACT,CAt6FM4uvC,CAAUjxwC,GAy7GhB,SAAwBA,GACtB,OAAOs5wC,GAAqB76wC,KAAKuB,EACnC,CA17GMsqwC,CAAetqwC,EACrB,CAWA,SAASmoxC,GAAOnoxC,EAAO06C,GACrB,OAAO16C,EAAQ06C,CACjB,CAUA,SAAS0tuC,GAAQnsuC,EAAQv4B,GACvB,OAAiB,MAAVu4B,GAAkBz9C,GAAeC,KAAKw9C,EAAQv4B,EACvD,CAUA,SAASi6vC,GAAU1huC,EAAQv4B,GACzB,OAAiB,MAAVu4B,GAAkBv4B,KAAOvlB,GAAO89C,EACzC,CAyBA,SAAS2huC,GAAiB12V,EAAQkmV,EAAUx1xB,GAS1C,IARA,IAAI3qe,EAAW2qe,EAAag4xB,GAAoBD,GAC5CzwwC,EAASgo7B,EAAO,GAAGho7B,OACnBoywC,EAAYpqV,EAAOho7B,OACnBqywC,EAAWD,EACXE,EAASlzwC,EAAMgzwC,GACf3+tB,EAAY/ze,IACZv8C,EAAS,GAENkvvC,KAAY,CACjB,IAAIx4tC,EAAQmu4B,EAAOqqV,GACfA,GAAYnE,IACdr0tC,EAAQ82tC,GAAS92tC,EAAO+2tC,GAAU1C,KAEpCz6tB,EAAY63tB,GAAUzxtC,EAAM75C,OAAQyziB,GACpC6+tB,EAAOD,IAAa35xB,IAAew1xB,GAAaluwC,GAAU,KAAO65C,EAAM75C,QAAU,KAC7E,IAAI0twC,GAAS2E,GAAYx4tC,GACzBnM,CACN,CACAmM,EAAQmu4B,EAAO,GAEf,IAAIrr6B,GAAS,EACT2/S,EAAOg28B,EAAO,GAElB/2vB,EACA,OAAS5+f,EAAQ3c,GAAUmjB,EAAOnjB,OAASyziB,GAAW,CACpD,IAAI3yiB,EAAQ+4C,EAAMl9B,GACdq0vC,EAAW9C,EAAWA,EAASptwC,GAASA,EAG5C,GADAA,EAAS43e,GAAwB,IAAV53e,EAAeA,EAAQ,IACxCw7T,EACEu08B,GAASv08B,EAAM008B,GACfjjwC,EAASoV,EAAQ6tvC,EAAUt4xB,IAC5B,CAEL,IADA25xB,EAAWD,IACFC,GAAU,CACjB,IAAIx/uC,EAAQy/uC,EAAOD,GACnB,KAAMx/uC,EACEg+uC,GAASh+uC,EAAOm+uC,GAChBjjwC,EAASi66B,EAAOqqV,GAAWrB,EAAUt4xB,IAE3C,SAAS6iC,CAEb,CACIj/M,GACFA,EAAK96T,KAAKwvwC,GAEZ7tvC,EAAO3hB,KAAKV,EACd,CACF,CACA,OAAOqiB,CACT,CA8BA,SAASgmwC,GAAWpsuC,EAAQ/mB,EAAMghB,GAGhC,IAAI0I,EAAiB,OADrB3C,EAASi0C,GAAOj0C,EADhB/mB,EAAO47uC,GAAS57uC,EAAM+mB,KAEMA,EAASA,EAAO3qB,GAAM9N,GAAK0R,KACvD,OAAe,MAAR0pB,EAAehS,EAAYxtC,GAAMw/C,EAAM3C,EAAQ/F,EACxD,CASA,SAAS6nuC,GAAgB/9wC,GACvB,OAAOi4uC,GAAaj4uC,IAAUyxwC,GAAWzxwC,IAAU8uwC,CACrD,CAsCA,SAAS6C,GAAY3xwC,EAAO06C,EAAOy0tC,EAASC,EAAY59tC,GACtD,OAAIxxC,IAAU06C,IAGD,MAAT16C,GAA0B,MAAT06C,IAAmBu9rC,GAAaj4uC,KAAWi4uC,GAAav9rC,GACpE16C,GAAUA,GAAS06C,GAAUA,EAmBxC,SAAyBuB,EAAQvB,EAAOy0tC,EAASC,EAAY4C,EAAWxguC,GACtE,IAAIyguC,EAAWzhwC,GAAQyrC,GACnBi2tC,EAAW1hwC,GAAQkqC,GACnBy3tC,EAASF,EAAWF,EAAWn7B,GAAO36rC,GACtCm2tC,EAASF,EAAWH,EAAWn7B,GAAOl8rC,GAKtC23tC,GAHJF,EAASA,GAAUrD,EAAUE,EAAYmD,IAGhBnD,EACrBsD,GAHJF,EAASA,GAAUtD,EAAUE,EAAYoD,IAGhBpD,EACrBuD,EAAYJ,GAAUC,EAE1B,GAAIG,GAAanugC,GAASnoN,GAAS,CACjC,IAAKmoN,GAAS1pN,GACZ,OAAO,EAETu3tC,GAAW,EACXI,GAAW,CACb,CACA,GAAIE,IAAcF,EAEhB,OADA7guC,IAAUA,EAAQ,IAAI27tC,IACd8E,GAAYnyvC,GAAam8B,GAC7B21tC,GAAY31tC,EAAQvB,EAAOy0tC,EAASC,EAAY4C,EAAWxguC,GAw3EnE,SAAoByK,EAAQvB,EAAOzkC,EAAKk5vC,EAASC,EAAY4C,EAAWxguC,GACtE,OAAQv7B,GACN,KAAK+jwC,EACH,GAAK/9tC,EAAOh1B,YAAcyzB,EAAMzzB,YAC3Bg1B,EAAOj1B,YAAc0zB,EAAM1zB,WAC9B,OAAO,EAETi1B,EAASA,EAAOl1B,OAChB2zB,EAAQA,EAAM3zB,OAEhB,KAAK04vC,EACH,QAAKxjuC,EAAOh1B,YAAcyzB,EAAMzzB,aAC3B+qvC,EAAU,IAAIxzvC,GAAWy9B,GAAS,IAAIz9B,GAAWk8B,KAKxD,KAAKwkuC,EACL,KAAKC,EACL,KAAKG,EAGH,OAAOrxjC,IAAIhyK,GAASvB,GAEtB,KAAK0kuC,EACH,OAAOnjuC,EAAO1yC,MAAQmxC,EAAMnxC,MAAQ0yC,EAAOrrB,SAAW8pB,EAAM9pB,QAE9D,KAAK2uvC,EACL,KAAKC,EAIH,OAAOvjuC,GAAWvB,EAAQ,GAE5B,KAAKk/tC,EACH,IAAI9+e,EAAUg4b,GAEhB,KAAKgnD,EACH,IAAI1B,EAtpLe,EAspLHjJ,EAGhB,GAFAr0e,IAAYA,EAAUm7e,IAElBh6tC,EAAOx4B,MAAQi3B,EAAMj3B,OAAS20vC,EAChC,OAAO,EAGT,IAAIrzb,EAAUvzyB,EAAMxvC,IAAIi6C,GACxB,GAAI8oyB,EACF,OAAOA,GAAWrqyB,EAEpBy0tC,GAhqLqB,EAmqLrB39tC,EAAM1mC,IAAImxC,EAAQvB,GAClB,IAAIr4B,EAASuvvC,GAAY92e,EAAQ7+uB,GAAS6+uB,EAAQpgvB,GAAQy0tC,EAASC,EAAY4C,EAAWxguC,GAE1F,OADAA,EAAc,OAAEyK,GACT55B,EAET,KAAKynvC,EACH,GAAI4M,GACF,OAAOA,GAAcj4wC,KAAKw9C,IAAWy6tC,GAAcj4wC,KAAKi8C,GAG9D,OAAO,CACT,CAt7EQm3tC,CAAW51tC,EAAQvB,EAAOy3tC,EAAQhD,EAASC,EAAY4C,EAAWxguC,GAExE,KA3vGuB,EA2vGjB29tC,GAAiC,CACrC,IAAIqD,EAAeH,GAAY7zwC,GAAeC,KAAKw9C,EAAQ,eACvDw2tC,EAAeH,GAAY9zwC,GAAeC,KAAKi8C,EAAO,eAE1D,GAAI83tC,GAAgBC,EAAc,CAChC,IAAIC,EAAeF,EAAev2tC,EAAOj8C,QAAUi8C,EAC/C02tC,EAAeF,EAAe/3tC,EAAM16C,QAAU06C,EAGlD,OADAlJ,IAAUA,EAAQ,IAAI27tC,IACf6E,EAAUU,EAAcC,EAAcxD,EAASC,EAAY59tC,EACpE,CACF,CACA,QAAK+guC,IAGL/guC,IAAUA,EAAQ,IAAI27tC,IAo7ExB,SAAsBlxtC,EAAQvB,EAAOy0tC,EAASC,EAAY4C,EAAWxguC,GACnE,IAAI4muC,EA/rLmB,EA+rLPjJ,EACZwJ,EAAWlK,GAAWxytC,GACtB28tC,EAAYD,EAASz5wC,OAIzB,GAAI05wC,GAHWnK,GAAW/ztC,GACDx7C,SAEMk5wC,EAC7B,OAAO,EAGT,IADA,IAAIv8vC,EAAQ+8vC,EACL/8vC,KAAS,CACd,IAAI6H,EAAMi1vC,EAAS98vC,GACnB,KAAMu8vC,EAAY10vC,KAAOg3B,EAAQl8C,GAAeC,KAAKi8C,EAAOh3B,IAC1D,OAAO,CAEX,CAEA,IAAIm1vC,EAAarnuC,EAAMxvC,IAAIi6C,GACvBs8tC,EAAa/muC,EAAMxvC,IAAI04C,GAC3B,GAAIm+tC,GAAcN,EAChB,OAAOM,GAAcn+tC,GAAS69tC,GAAct8tC,EAE9C,IAAI55B,GAAS,EACbmvB,EAAM1mC,IAAImxC,EAAQvB,GAClBlJ,EAAM1mC,IAAI4vC,EAAOuB,GAGjB,IADA,IAAI68tC,EAAWV,IACNv8vC,EAAQ+8vC,GAAW,CAE1B,IAAI7K,EAAW9xtC,EADfv4B,EAAMi1vC,EAAS98vC,IAEX48vC,EAAW/9tC,EAAMh3B,GAErB,GAAI0rvC,EACF,IAAIsJ,EAAWN,EACXhJ,EAAWqJ,EAAU1K,EAAUrqvC,EAAKg3B,EAAOuB,EAAQzK,GACnD49tC,EAAWrB,EAAU0K,EAAU/0vC,EAAKu4B,EAAQvB,EAAOlJ,GAGzD,KAAMknuC,IAAa9ruC,EACVmhuC,IAAa0K,GAAYzG,EAAUjE,EAAU0K,EAAUtJ,EAASC,EAAY59tC,GAC7EknuC,GACD,CACLr2vC,GAAS,EACT,KACF,CACAy2vC,IAAaA,EAAkB,eAAPp1vC,EAC1B,CACA,GAAIrB,IAAWy2vC,EAAU,CACvB,IAAIC,EAAU98tC,EAAOn9C,YACjBk6wC,EAAUt+tC,EAAM57C,YAGhBi6wC,GAAWC,KACV,gBAAiB/8tC,MAAU,gBAAiBvB,IACzB,mBAAXq+tC,GAAyBA,aAAmBA,GACjC,mBAAXC,GAAyBA,aAAmBA,IACvD32vC,GAAS,EAEb,CAGA,OAFAmvB,EAAc,OAAEyK,GAChBzK,EAAc,OAAEkJ,GACTr4B,CACT,CAl/ESyvvC,CAAa71tC,EAAQvB,EAAOy0tC,EAASC,EAAY4C,EAAWxguC,GACrE,CA5DSkguC,CAAgB1xwC,EAAO06C,EAAOy0tC,EAASC,EAAYuC,GAAanguC,GACzE,CAkFA,SAASuiuC,GAAY93tC,EAAQv1C,EAAQkswC,EAAWxD,GAC9C,IAAIvzvC,EAAQ+2vC,EAAU1zwC,OAClBA,EAAS2c,EACTg3vC,GAAgBzD,EAEpB,GAAc,MAAVnztC,EACF,OAAQ/8C,EAGV,IADA+8C,EAAS99C,GAAO89C,GACTpgC,KAAS,CACd,IAAIxN,EAAOukwC,EAAU/2vC,GACrB,GAAKg3vC,GAAgBxkwC,EAAK,GAClBA,EAAK,KAAO4tC,EAAO5tC,EAAK,MACtBA,EAAK,KAAM4tC,GAEnB,OAAO,CAEX,CACA,OAASpgC,EAAQ3c,GAAQ,CAEvB,IAAIwkB,GADJrV,EAAOukwC,EAAU/2vC,IACF,GACXkyvC,EAAW9xtC,EAAOv4B,GAClBovvC,EAAWzkwC,EAAK,GAEpB,GAAIwkwC,GAAgBxkwC,EAAK,IACvB,GAAI0/vC,IAAanhuC,KAAelpB,KAAOu4B,GACrC,OAAO,MAEJ,CACL,IAAIzK,EAAQ,IAAI27tC,GAChB,GAAIiC,EACF,IAAI/svC,EAAS+svC,EAAWrB,EAAU+E,EAAUpvvC,EAAKu4B,EAAQv1C,EAAQ8qC,GAEnE,KAAMnvB,IAAWuqB,EACT+kuC,GAAYmB,EAAU/E,EAAUgF,EAA+C3D,EAAY59tC,GAC3FnvB,GAEN,OAAO,CAEX,CACF,CACA,OAAO,CACT,CAUA,SAAS82vC,GAAan5wC,GACpB,SAAK8jQ,GAAS9jQ,KAo7FE4+C,EAp7FiB5+C,EAq7FxBk7wC,IAAeA,MAAct8tC,MAl7FxBilN,GAAW7jQ,GAASszwC,GAAaJ,IAChChpwC,KAAK+owC,GAASjzwC,IAg7F/B,IAAkB4+C,CA/6FlB,CA2CA,SAASo2tC,GAAah1wC,GAGpB,MAAoB,mBAATA,EACFA,EAEI,MAATA,EACKqpL,GAEW,iBAATrpL,EACFwQ,GAAQxQ,GACX0zwC,GAAoB1zwC,EAAM,GAAIA,EAAM,IACpCyzwC,GAAYzzwC,GAEXq4C,GAASr4C,EAClB,CASA,SAASi+wC,GAAShiuC,GAChB,IAAK03tC,GAAY13tC,GACf,OAAO23tC,GAAW33tC,GAEpB,IAAI55B,EAAS,GACb,IAAK,IAAIqB,KAAOvlB,GAAO89C,GACjBz9C,GAAeC,KAAKw9C,EAAQv4B,IAAe,eAAPA,GACtCrB,EAAO3hB,KAAKgjB,GAGhB,OAAOrB,CACT,CAiCA,SAASimwC,GAAOtoxC,EAAO06C,GACrB,OAAO16C,EAAQ06C,CACjB,CAUA,SAASu6tC,GAAQj4gC,EAAYowgC,GAC3B,IAAIvxvC,GAAS,EACTwG,EAASum7B,GAAY5rsB,GAAc1+P,EAAM0+P,EAAW99P,QAAU,GAKlE,OAHAmxwC,GAASrzgC,GAAY,SAASh9P,EAAO0jB,EAAKs5O,GACxC36O,IAASxG,GAASuxvC,EAASptwC,EAAO0jB,EAAKs5O,EACzC,IACO36O,CACT,CASA,SAASoxvC,GAAY/swC,GACnB,IAAIkswC,EAAYoB,GAAattwC,GAC7B,OAAwB,GAApBkswC,EAAU1zwC,QAAe0zwC,EAAU,GAAG,GACjCqB,GAAwBrB,EAAU,GAAG,GAAIA,EAAU,GAAG,IAExD,SAAS32tC,GACd,OAAOA,IAAWv1C,GAAUqtwC,GAAY93tC,EAAQv1C,EAAQkswC,EAC1D,CACF,CAUA,SAASc,GAAoBx+uC,EAAM49uC,GACjC,OAAIqB,GAAMj/uC,IAASk/uC,GAAmBtB,GAC7BmB,GAAwB3ivC,GAAM4D,GAAO49uC,GAEvC,SAAS72tC,GACd,IAAI8xtC,EAAW/rwC,GAAIi6C,EAAQ/mB,GAC3B,OAAQ64uC,IAAanhuC,GAAamhuC,IAAa+E,EAC3CoB,GAAMj4tC,EAAQ/mB,GACdy8uC,GAAYmB,EAAU/E,EAAUgF,EACtC,CACF,CAaA,SAASyB,GAAUv4tC,EAAQv1C,EAAQ+twC,EAAUrF,EAAY59tC,GACnDyK,IAAWv1C,GAGfkqwC,GAAQlqwC,GAAQ,SAASoswC,EAAUpvvC,GAEjC,GADA8tB,IAAUA,EAAQ,IAAI27tC,IAClBrpgC,GAASgvgC,IA+BjB,SAAuB72tC,EAAQv1C,EAAQgd,EAAK+wvC,EAAUI,EAAWzF,EAAY59tC,GAC3E,IAAIu8tC,EAAWwG,GAAQt4tC,EAAQv4B,GAC3BovvC,EAAWyB,GAAQ7twC,EAAQgd,GAC3Bqh0B,EAAUvzyB,EAAMxvC,IAAI8wwC,GAExB,GAAI/tb,EACFsvb,GAAiBp4tC,EAAQv4B,EAAKqh0B,OADhC,CAIA,IAAIj6rB,EAAWsknC,EACXA,EAAWrB,EAAU+E,EAAWpvvC,EAAM,GAAKu4B,EAAQv1C,EAAQ8qC,GAC3D5E,EAEAojuC,EAAWllnC,IAAal+G,EAE5B,GAAIojuC,EAAU,CACZ,IAAInmU,EAAQr57B,GAAQsiwC,GAChBlF,GAAU/jU,GAASzlsB,GAAS0ugC,GAC5BgC,GAAWjrU,IAAU+jU,GAAU9tvC,GAAagzvC,GAEhDhonC,EAAWgonC,EACPjpU,GAAS+jU,GAAUkH,EACjBtkwC,GAAQu9vC,GACVjjnC,EAAWijnC,EAEJ4G,GAAkB5G,GACzBjjnC,EAAWwjnC,GAAUP,GAEdH,GACPoC,GAAW,EACXllnC,EAAWujnC,GAAYyE,GAAU,IAE1BgC,GACP9E,GAAW,EACXllnC,EAAW4pnC,GAAgB5B,GAAU,IAGrChonC,EAAW,GAGN6V,GAAcmymC,IAAatF,GAAYsF,IAC9ChonC,EAAWijnC,EACPP,GAAYO,GACdjjnC,EAAW8pnC,GAAc7G,GAEjBjqgC,GAASiqgC,KAAalqgC,GAAWkqgC,KACzCjjnC,EAAW+jnC,GAAgBiE,KAI7B9C,GAAW,CAEf,CACIA,IAEFx+tC,EAAM1mC,IAAIgowC,EAAUhonC,GACpB+pnC,EAAU/pnC,EAAUgonC,EAAU2B,EAAUrF,EAAY59tC,GACpDA,EAAc,OAAEshuC,IAElBuB,GAAiBp4tC,EAAQv4B,EAAKonI,EAnD9B,CAoDF,CA1FMwpnC,CAAcr4tC,EAAQv1C,EAAQgd,EAAK+wvC,EAAUD,GAAWpF,EAAY59tC,OAEjE,CACH,IAAIs5G,EAAWsknC,EACXA,EAAWmF,GAAQt4tC,EAAQv4B,GAAMovvC,EAAWpvvC,EAAM,GAAKu4B,EAAQv1C,EAAQ8qC,GACvE5E,EAEAk+G,IAAal+G,IACfk+G,EAAWgonC,GAEbuB,GAAiBp4tC,EAAQv4B,EAAKonI,EAChC,CACF,GAAGmjnC,GACL,CAuFA,SAASsa,GAAQxvuC,EAAO76C,GACtB,IAAIgB,EAAS65C,EAAM75C,OACnB,GAAKA,EAIL,OAAOuuwC,GADPvvwC,GAAKA,EAAI,EAAIgB,EAAS,EACJA,GAAU65C,EAAM76C,GAAK0uC,CACzC,CAWA,SAAS47uC,GAAYxrhC,EAAYo4gC,EAAWC,GAExCD,EADEA,EAAUl2wC,OACA2wwC,GAASuF,GAAW,SAAShI,GACvC,OAAI58vC,GAAQ48vC,GACH,SAASptwC,GACd,OAAO+0wC,GAAQ/0wC,EAA2B,IAApBotwC,EAASluwC,OAAekuwC,EAAS,GAAKA,EAC9D,EAEKA,CACT,IAEY,CAAC/jlC,IAGf,IAAIxtK,GAAS,EACbu5vC,EAAYvF,GAASuF,EAAWtF,GAAU2Y,OAE1C,IAAIpmwC,EAAS4yvC,GAAQj4gC,GAAY,SAASh9P,EAAO0jB,EAAKs5O,GACpD,IAAIq6gC,EAAWxH,GAASuF,GAAW,SAAShI,GAC1C,OAAOA,EAASptwC,EAClB,IACA,MAAO,CAAE,SAAYq3wC,EAAU,QAAWx7vC,EAAO,MAAS7b,EAC5D,IAEA,OAhyFJ,SAAoB+4C,EAAO48tC,GACzB,IAAIz2wC,EAAS65C,EAAM75C,OAGnB,IADA65C,EAAM3N,MA6xFsB,SAAS6Q,EAAQvB,GACzC,OAo6BJ,SAAyBuB,EAAQvB,EAAO26tC,GAOtC,IANA,IAAIx5vC,GAAS,EACTu7vC,EAAcn7tC,EAAOo7tC,SACrBC,EAAc58tC,EAAM28tC,SACpBn4wC,EAASk4wC,EAAYl4wC,OACrBq4wC,EAAelC,EAAOn2wC,SAEjB2c,EAAQ3c,GAAQ,CACvB,IAAImjB,EAAS80vC,GAAiBC,EAAYv7vC,GAAQy7vC,EAAYz7vC,IAC9D,GAAIwG,EACF,OAAIxG,GAAS07vC,EACJl1vC,EAGFA,GAAmB,QADdgzvC,EAAOx5vC,IACiB,EAAI,EAE5C,CAQA,OAAOogC,EAAOpgC,MAAQ6+B,EAAM7+B,KAC9B,CA77BWs5vC,CAAgBl5tC,EAAQvB,EAAO26tC,EACxC,IA9xFKn2wC,KACL65C,EAAM75C,GAAU65C,EAAM75C,GAAQc,MAEhC,OAAO+4C,CACT,CAwxFWm8tC,CAAW7yvC,EAGpB,CA0BA,SAASizvC,GAAWr5tC,EAAQmhM,EAAO16L,GAKjC,IAJA,IAAI7mC,GAAS,EACT3c,EAASk+O,EAAMl+O,OACfmjB,EAAS,CAAC,IAELxG,EAAQ3c,GAAQ,CACvB,IAAIg2B,EAAOkoN,EAAMvhO,GACb7b,EAAQ+0wC,GAAQ94tC,EAAQ/mB,GAExBwtB,EAAU1iD,EAAOk1B,IACnBqgvC,GAAQlzvC,EAAQyuvC,GAAS57uC,EAAM+mB,GAASj8C,EAE5C,CACA,OAAOqiB,CACT,CA0BA,SAASqmwC,GAAY3vuC,EAAOx9B,EAAQ6xvC,EAAUx1xB,GAC5C,IAAIv4e,EAAUu4e,EAAaosyB,GAAkB1W,GACzCzxvC,GAAS,EACT3c,EAASqc,EAAOrc,OAChBs8T,EAAOziR,EAQX,IANIA,IAAUx9B,IACZA,EAAS+yvC,GAAU/yvC,IAEjB6xvC,IACF5x8B,EAAOq08B,GAAS92tC,EAAO+2tC,GAAU1C,OAE1BvxvC,EAAQ3c,GAKf,IAJA,IAAIiqgB,EAAY,EACZnpgB,EAAQub,EAAOM,GACfq0vC,EAAW9C,EAAWA,EAASptwC,GAASA,GAEpCmpgB,EAAY9pgB,EAAQm8T,EAAM008B,EAAU/mwB,EAAWvxB,KAAgB,GACjEp8K,IAASziR,GACXj3B,GAAOrjB,KAAK+8T,EAAM2tM,EAAW,GAE/Brnf,GAAOrjB,KAAKs6C,EAAOowd,EAAW,GAGlC,OAAOpwd,CACT,CAWA,SAAS4vuC,GAAW5vuC,EAAO09S,GAIzB,IAHA,IAAIv3V,EAAS65C,EAAQ09S,EAAQv3V,OAAS,EAClCkyD,EAAYlyD,EAAS,EAElBA,KAAU,CACf,IAAI2c,EAAQ46U,EAAQv3V,GACpB,GAAIA,GAAUkyD,GAAav1C,IAAU8H,EAAU,CAC7C,IAAIA,EAAW9H,EACX4xvC,GAAQ5xvC,GACViG,GAAOrjB,KAAKs6C,EAAOl9B,EAAO,GAE1B+swC,GAAU7vuC,EAAOl9B,EAErB,CACF,CACA,OAAOk9B,CACT,CAWA,SAASmuuC,GAAW5zB,EAAOL,GACzB,OAAOK,EAAQmyB,GAAYI,MAAkB5yB,EAAQK,EAAQ,GAC/D,CAiCA,SAASu1B,GAAWjtwC,EAAQ1d,GAC1B,IAAImkB,EAAS,GACb,IAAKzG,GAAU1d,EAAI,GAAKA,EAAIgmC,EAC1B,OAAO7hB,EAIT,GACMnkB,EAAI,IACNmkB,GAAUzG,IAEZ1d,EAAIunxC,GAAYvnxC,EAAI,MAElB0d,GAAUA,SAEL1d,GAET,OAAOmkB,CACT,CAUA,SAASs1vC,GAAS/4tC,EAAMvZ,GACtB,OAAOowuC,GAAYD,GAAS52tC,EAAMvZ,EAAOgkJ,IAAWzqI,EAAO,GAC7D,CASA,SAASkquC,GAAW9rhC,GAClB,OAAOiqhC,GAAY1rwC,GAAOyhP,GAC5B,CAUA,SAAS+rhC,GAAe/rhC,EAAY9+P,GAClC,IAAI66C,EAAQx9B,GAAOyhP,GACnB,OAAOoqhC,GAAYruuC,EAAOsuuC,GAAUnpxC,EAAG,EAAG66C,EAAM75C,QAClD,CAYA,SAASq2wC,GAAQt5tC,EAAQ/mB,EAAMl1B,EAAOovwC,GACpC,IAAKtrgC,GAAS7nN,GACZ,OAAOA,EAST,IALA,IAAIpgC,GAAS,EACT3c,GAHJg2B,EAAO47uC,GAAS57uC,EAAM+mB,IAGJ/8C,OACdkyD,EAAYlyD,EAAS,EACrB0iI,EAAS3lF,EAEI,MAAV2lF,KAAoB/lH,EAAQ3c,GAAQ,CACzC,IAAIwkB,EAAM4N,GAAM4D,EAAKrZ,IACjBivI,EAAW9qJ,EAEf,GAAY,cAAR0jB,GAA+B,gBAARA,GAAiC,cAARA,EAClD,OAAOu4B,EAGT,GAAIpgC,GAASu1C,EAAW,CACtB,IAAI28sC,EAAWnsoC,EAAOl+G,IACtBonI,EAAWsknC,EAAaA,EAAWrB,EAAUrqvC,EAAKk+G,GAAUh1F,KAC3CA,IACfk+G,EAAWg5G,GAASiqgC,GAChBA,EACCN,GAAQv4uC,EAAKrZ,EAAQ,IAAM,GAAK,CAAC,EAE1C,CACA085B,GAAY32yB,EAAQl+G,EAAKonI,GACzBlpB,EAASA,EAAOl+G,EAClB,CACA,OAAOu4B,CACT,CAUA,IAAI+suC,GAAejD,GAAqB,SAASnnuC,EAAMvwC,GAErD,OADA03wC,GAAQj7wC,IAAI8zC,EAAMvwC,GACXuwC,CACT,EAH6ByqI,GAazBqslC,GAAmB3zwC,GAA4B,SAAS68C,EAAMhjC,GAChE,OAAO7Z,GAAe68C,EAAM,WAAY,CACtC,cAAgB,EAChB,YAAc,EACd,MAASk+E,GAASlhH,GAClB,UAAY,GAEhB,EAPwCytK,GAgBxC,SAAS4/lC,GAAYjshC,GACnB,OAAOoqhC,GAAY7rwC,GAAOyhP,GAC5B,CAWA,SAASo5gC,GAAUr9tC,EAAO1T,EAAOC,GAC/B,IAAIzpB,GAAS,EACT3c,EAAS65C,EAAM75C,OAEfmmC,EAAQ,IACVA,GAASA,EAAQnmC,EAAS,EAAKA,EAASmmC,IAE1CC,EAAMA,EAAMpmC,EAASA,EAASomC,GACpB,IACRA,GAAOpmC,GAETA,EAASmmC,EAAQC,EAAM,EAAMA,EAAMD,IAAW,EAC9CA,KAAW,EAGX,IADA,IAAIhjB,EAAS/jB,EAAMY,KACV2c,EAAQ3c,GACfmjB,EAAOxG,GAASk9B,EAAMl9B,EAAQwpB,GAEhC,OAAOhjB,CACT,CAWA,SAAS6mwC,GAASlshC,EAAYt6M,GAC5B,IAAIrgC,EAMJ,OAJAguvC,GAASrzgC,GAAY,SAASh9P,EAAO6b,EAAOmhP,GAE1C,QADA36O,EAASqgC,EAAU1iD,EAAO6b,EAAOmhP,GAEnC,MACS36O,CACX,CAcA,SAAS8mwC,GAAgBpwuC,EAAO/4C,EAAOopxC,GACrC,IAAI7zsC,EAAM,EACND,EAAgB,MAATv8B,EAAgBw8B,EAAMx8B,EAAM75C,OAEvC,GAAoB,iBAATc,GAAqBA,GAAUA,GAASs1E,GAv/H3B0psC,WAu/H0D,CAChF,KAAOzpsC,EAAMD,GAAM,CACjB,IAAI6uJ,EAAO5uJ,EAAMD,IAAU,EACvB46rC,EAAWn3tC,EAAMorL,GAEJ,OAAb+riC,IAAsBzF,GAASyF,KAC9BkZ,EAAclZ,GAAYlwwC,EAAUkwwC,EAAWlwwC,GAClDu1E,EAAM4uJ,EAAM,EAEZ7uJ,EAAO6uJ,CAEX,CACA,OAAO7uJ,CACT,CACA,OAAO+zsC,GAAkBtwuC,EAAO/4C,EAAOqpL,GAAU+/lC,EACnD,CAeA,SAASC,GAAkBtwuC,EAAO/4C,EAAOotwC,EAAUgc,GACjD,IAAI7zsC,EAAM,EACND,EAAgB,MAATv8B,EAAgB,EAAIA,EAAM75C,OACrC,GAAa,IAATo2E,EACF,OAAO,EAST,IALA,IAAIg0sC,GADJtpxC,EAAQotwC,EAASptwC,KACQA,EACrB42wC,EAAsB,OAAV52wC,EACZ82wC,EAAcrM,GAASzqwC,GACvBupxC,EAAiBvpxC,IAAU4sC,EAExB2oC,EAAMD,GAAM,CACjB,IAAI6uJ,EAAMshjC,IAAalwsC,EAAMD,GAAQ,GACjC46rC,EAAW9C,EAASr0tC,EAAMorL,IAC1B4yiC,EAAe7G,IAAatjuC,EAC5BoquC,EAAyB,OAAb9G,EACZ+G,EAAiB/G,GAAaA,EAC9BgH,EAAczM,GAASyF,GAE3B,GAAIoZ,EACF,IAAIE,EAASJ,GAAcnS,OAE3BuS,EADSD,EACAtS,IAAmBmS,GAAcrS,GACjCH,EACAK,GAAkBF,IAAiBqS,IAAepS,GAClDF,EACAG,GAAkBF,IAAiBC,IAAcoS,IAAelS,IAChEF,IAAaE,IAGbkS,EAAclZ,GAAYlwwC,EAAUkwwC,EAAWlwwC,GAEtDwpxC,EACFj0sC,EAAM4uJ,EAAM,EAEZ7uJ,EAAO6uJ,CAEX,CACA,OAAOqmiC,GAAUl1rC,EA9jIC0psC,WA+jIpB,CAWA,SAASyK,GAAe1wuC,EAAOq0tC,GAM7B,IALA,IAAIvxvC,GAAS,EACT3c,EAAS65C,EAAM75C,OACfmuwC,EAAW,EACXhrvC,EAAS,KAEJxG,EAAQ3c,GAAQ,CACvB,IAAIc,EAAQ+4C,EAAMl9B,GACdq0vC,EAAW9C,EAAWA,EAASptwC,GAASA,EAE5C,IAAK6b,IAAUoyM,GAAGiijC,EAAU108B,GAAO,CACjC,IAAIA,EAAO008B,EACX7tvC,EAAOgrvC,KAAwB,IAAVrtwC,EAAc,EAAIA,CACzC,CACF,CACA,OAAOqiB,CACT,CAUA,SAASqnwC,GAAa1pxC,GACpB,MAAoB,iBAATA,EACFA,EAELyqwC,GAASzqwC,GACJ6pwC,GAED7pwC,CACV,CAUA,SAASk4uC,GAAal4uC,GAEpB,GAAoB,iBAATA,EACT,OAAOA,EAET,GAAIwQ,GAAQxQ,GAEV,OAAO6vwC,GAAS7vwC,EAAOk4uC,IAAgB,GAEzC,GAAIuyB,GAASzqwC,GACX,OAAO61wC,GAAiBA,GAAep3wC,KAAKuB,GAAS,GAEvD,IAAIqiB,EAAUriB,EAAQ,GACtB,MAAkB,KAAVqiB,GAAkB,EAAIriB,IAAU,IAAa,KAAOqiB,CAC9D,CAWA,SAASsnwC,GAAS5wuC,EAAOq0tC,EAAUx1xB,GACjC,IAAI/7d,GAAS,EACT5O,EAAW0iwC,GACXzwwC,EAAS65C,EAAM75C,OACf8wwC,GAAW,EACX3tvC,EAAS,GACTm5S,EAAOn5S,EAEX,GAAIu1d,EACFo4xB,GAAW,EACX/iwC,EAAW2iwC,QAER,GAAI1wwC,GAttIU,IAstIkB,CACnC,IAAI4L,EAAMsiwC,EAAW,KAAO4I,GAAUj9tC,GACtC,GAAIjuC,EACF,OAAOmrwC,GAAWnrwC,GAEpBklwC,GAAW,EACX/iwC,EAAW8iwC,GACXv08B,EAAO,IAAIox8B,EACb,MAEEpx8B,EAAO4x8B,EAAW,GAAK/qvC,EAEzBo4f,EACA,OAAS5+f,EAAQ3c,GAAQ,CACvB,IAAIc,EAAQ+4C,EAAMl9B,GACdq0vC,EAAW9C,EAAWA,EAASptwC,GAASA,EAG5C,GADAA,EAAS43e,GAAwB,IAAV53e,EAAeA,EAAQ,EAC1CgwwC,GAAYE,GAAaA,EAAU,CAErC,IADA,IAAIgG,EAAY168B,EAAKt8T,OACdg3wC,KACL,GAAI168B,EAAK068B,KAAehG,EACtB,SAASz1vB,EAGT2yvB,GACF5x8B,EAAK96T,KAAKwvwC,GAEZ7tvC,EAAO3hB,KAAKV,EACd,MACUiN,EAASuuT,EAAM008B,EAAUt4xB,KAC7Bp8K,IAASn5S,GACXm5S,EAAK96T,KAAKwvwC,GAEZ7tvC,EAAO3hB,KAAKV,GAEhB,CACA,OAAOqiB,CACT,CAUA,SAASumwC,GAAU3suC,EAAQ/mB,GAMzB,IAAIrZ,GAAS,EACT3c,GANJg2B,EAAO47uC,GAAS57uC,EAAM+mB,IAMJ/8C,OAElB,IAAKA,EACH,OAAO,EAGT,OAAS2c,EAAQ3c,GAAQ,CACvB,IAAIwkB,EAAM4N,GAAM4D,EAAKrZ,IAGrB,GAAY,cAAR6H,IAAwBllB,GAAeC,KAAKw9C,EAAQ,aACtD,OAAO,EAKT,IAAa,gBAARv4B,GAAiC,cAARA,IAAwB7H,EAAQ3c,EAAS,EACrE,OAAO,CAEX,CAEA,IAAI6sN,EAAM77H,GAAOj0C,EAAQ/mB,GACzB,OAAc,MAAP62L,UAAsBA,EAAIz6L,GAAM9N,GAAK0R,IAC9C,CAYA,SAAS00vC,GAAW3tuC,EAAQ/mB,EAAMgp9B,EAASkxR,GACzC,OAAOmG,GAAQt5tC,EAAQ/mB,EAAMgp9B,EAAQ62R,GAAQ94tC,EAAQ/mB,IAAQk6uC,EAC/D,CAaA,SAASya,GAAU9wuC,EAAO2J,EAAWonuC,EAAQvZ,GAI3C,IAHA,IAAIrxwC,EAAS65C,EAAM75C,OACf2c,EAAQ00vC,EAAYrxwC,GAAU,GAE1BqxwC,EAAY10vC,MAAYA,EAAQ3c,IACtCwjD,EAAU3J,EAAMl9B,GAAQA,EAAOk9B,KAEjC,OAAO+wuC,EACH1T,GAAUr9tC,EAAQw3tC,EAAY,EAAI10vC,EAAS00vC,EAAY10vC,EAAQ,EAAI3c,GACnEk3wC,GAAUr9tC,EAAQw3tC,EAAY10vC,EAAQ,EAAI,EAAK00vC,EAAYrxwC,EAAS2c,EAC1E,CAYA,SAASkuwC,GAAiB/pxC,EAAOowa,GAC/B,IAAI/tZ,EAASriB,EAIb,OAHIqiB,aAAkB6jwC,KACpB7jwC,EAASA,EAAOriB,SAEX0jxC,GAAYtz2B,GAAS,SAAS/tZ,EAAQ8nD,GAC3C,OAAOA,EAAOvrB,KAAKx/C,MAAM+qE,EAAO22U,QAAS0v3B,GAAU,CAACnuvC,GAAS8nD,EAAOj0B,MACtE,GAAG7zB,EACL,CAYA,SAAS2nwC,GAAQ9iW,EAAQkmV,EAAUx1xB,GACjC,IAAI14e,EAASgo7B,EAAOho7B,OACpB,GAAIA,EAAS,EACX,OAAOA,EAASyqxC,GAASziW,EAAO,IAAM,GAKxC,IAHA,IAAIrr6B,GAAS,EACTwG,EAAS/jB,EAAMY,KAEV2c,EAAQ3c,GAIf,IAHA,IAAI65C,EAAQmu4B,EAAOrr6B,GACf01vC,GAAY,IAEPA,EAAWrywC,GACdqywC,GAAY11vC,IACdwG,EAAOxG,GAAS4hwC,GAAep7vC,EAAOxG,IAAUk9B,EAAOmu4B,EAAOqqV,GAAWnE,EAAUx1xB,IAIzF,OAAO+xyB,GAASjZ,GAAYruvC,EAAQ,GAAI+qvC,EAAUx1xB,EACpD,CAWA,SAASqyyB,GAAcn+uC,EAAOvwB,EAAQ2uwC,GAMpC,IALA,IAAIruwC,GAAS,EACT3c,EAAS4sC,EAAM5sC,OACfirxC,EAAa5uwC,EAAOrc,OACpBmjB,EAAS,CAAC,IAELxG,EAAQ3c,GAAQ,CACvB,IAAIc,EAAQ6b,EAAQsuwC,EAAa5uwC,EAAOM,GAAS+wB,EACjDs9uC,EAAW7nwC,EAAQypB,EAAMjwB,GAAQ7b,EACnC,CACA,OAAOqiB,CACT,CASA,SAASw7vC,GAAoB79wC,GAC3B,OAAO20wC,GAAkB30wC,GAASA,EAAQ,EAC5C,CASA,SAASoqxC,GAAapqxC,GACpB,MAAuB,mBAATA,EAAsBA,EAAQqpL,EAC9C,CAUA,SAASynlC,GAAS9wwC,EAAOi8C,GACvB,OAAIzrC,GAAQxQ,GACHA,EAEFm0wC,GAAMn0wC,EAAOi8C,GAAU,CAACj8C,GAASm2wC,GAAa/ywC,GAASpD,GAChE,CAWA,IAAIqqxC,GAAW1S,GAWf,SAASI,GAAUh/tC,EAAO1T,EAAOC,GAC/B,IAAIpmC,EAAS65C,EAAM75C,OAEnB,OADAomC,EAAMA,IAAQsH,EAAY1tC,EAASomC,GAC1BD,GAASC,GAAOpmC,EAAU65C,EAAQq9tC,GAAUr9tC,EAAO1T,EAAOC,EACrE,CAQA,IAAI/Z,GAAe+5vC,IAAmB,SAASl7vC,GAC7C,OAAO4kI,GAAKzjI,aAAanB,EAC3B,EAUA,SAASikvC,GAAYtnvC,EAAQsovC,GAC3B,GAAIA,EACF,OAAOtovC,EAAOnmB,QAEhB,IAAI1B,EAAS6nB,EAAO7nB,OAChBmjB,EAASk0vC,GAAcA,GAAYr3wC,GAAU,IAAI6nB,EAAOjoB,YAAYI,GAGxE,OADA6nB,EAAO43G,KAAKt8G,GACLA,CACT,CASA,SAASm0vC,GAAiB3rmC,GACxB,IAAIxoJ,EAAS,IAAIwoJ,EAAY/rK,YAAY+rK,EAAY5jJ,YAErD,OADA,IAAIzI,GAAW6D,GAAQvX,IAAI,IAAI0T,GAAWqsJ,IACnCxoJ,CACT,CA+CA,SAASqyvC,GAAgBlzmC,EAAY6tmC,GACnC,IAAItovC,EAASsovC,EAASmH,GAAiBh1mC,EAAWz6I,QAAUy6I,EAAWz6I,OACvE,OAAO,IAAIy6I,EAAW1iK,YAAYioB,EAAQy6I,EAAWx6I,WAAYw6I,EAAWtiK,OAC9E,CAUA,SAASi4wC,GAAiBn3wC,EAAO06C,GAC/B,GAAI16C,IAAU06C,EAAO,CACnB,IAAIi8tC,EAAe32wC,IAAU4sC,EACzBgquC,EAAsB,OAAV52wC,EACZ62wC,EAAiB72wC,GAAUA,EAC3B82wC,EAAcrM,GAASzqwC,GAEvB+2wC,EAAer8tC,IAAU9N,EACzBoquC,EAAsB,OAAVt8tC,EACZu8tC,EAAiBv8tC,GAAUA,EAC3Bw8tC,EAAczM,GAAS/vtC,GAE3B,IAAMs8tC,IAAcE,IAAgBJ,GAAe92wC,EAAQ06C,GACtDo8tC,GAAeC,GAAgBE,IAAmBD,IAAcE,GAChEN,GAAaG,GAAgBE,IAC5BN,GAAgBM,IACjBJ,EACH,OAAO,EAET,IAAMD,IAAcE,IAAgBI,GAAel3wC,EAAQ06C,GACtDw8tC,GAAeP,GAAgBE,IAAmBD,IAAcE,GAChEE,GAAaL,GAAgBE,IAC5BE,GAAgBF,IACjBI,EACH,OAAQ,CAEZ,CACA,OAAO,CACT,CAsDA,SAASqT,GAAYp0uC,EAAMq0uC,EAAUC,EAASC,GAU5C,IATA,IAAIC,GAAa,EACbhshC,EAAaxoN,EAAKh3C,OAClByrxC,EAAgBH,EAAQtrxC,OACxBwi9B,GAAa,EACbkpU,EAAaL,EAASrrxC,OACtB2rxC,EAActgB,GAAU7rgC,EAAaishC,EAAe,GACpDtowC,EAAS/jB,EAAMssxC,EAAaC,GAC5BC,GAAeL,IAEV/oU,EAAYkpU,GACnBvowC,EAAOq/7B,GAAa6oU,EAAS7oU,GAE/B,OAASgpU,EAAYC,IACfG,GAAeJ,EAAYhshC,KAC7Br8O,EAAOmowC,EAAQE,IAAcx0uC,EAAKw0uC,IAGtC,KAAOG,KACLxowC,EAAOq/7B,KAAexr6B,EAAKw0uC,KAE7B,OAAOrowC,CACT,CAaA,SAAS0owC,GAAiB70uC,EAAMq0uC,EAAUC,EAASC,GAWjD,IAVA,IAAIC,GAAa,EACbhshC,EAAaxoN,EAAKh3C,OAClB8rxC,GAAgB,EAChBL,EAAgBH,EAAQtrxC,OACxByi9B,GAAc,EACdspU,EAAcV,EAASrrxC,OACvB2rxC,EAActgB,GAAU7rgC,EAAaishC,EAAe,GACpDtowC,EAAS/jB,EAAMusxC,EAAcI,GAC7BH,GAAeL,IAEVC,EAAYG,GACnBxowC,EAAOqowC,GAAax0uC,EAAKw0uC,GAG3B,IADA,IAAI1puC,EAAS0puC,IACJ/oU,EAAaspU,GACpB5owC,EAAO2+B,EAAS2g6B,GAAc4oU,EAAS5oU,GAEzC,OAASqpU,EAAeL,IAClBG,GAAeJ,EAAYhshC,KAC7Br8O,EAAO2+B,EAASwpuC,EAAQQ,IAAiB90uC,EAAKw0uC,MAGlD,OAAOrowC,CACT,CAUA,SAASisvC,GAAU5nwC,EAAQqyC,GACzB,IAAIl9B,GAAS,EACT3c,EAASwH,EAAOxH,OAGpB,IADA65C,IAAUA,EAAQz6C,EAAMY,MACf2c,EAAQ3c,GACf65C,EAAMl9B,GAASnV,EAAOmV,GAExB,OAAOk9B,CACT,CAYA,SAASi1tC,GAAWtnwC,EAAQolC,EAAOmQ,EAAQmztC,GACzC,IAAIlqoC,GAASjpF,EACbA,IAAWA,EAAS,CAAC,GAKrB,IAHA,IAAIpgC,GAAS,EACT3c,EAAS4sC,EAAM5sC,SAEV2c,EAAQ3c,GAAQ,CACvB,IAAIwkB,EAAMooB,EAAMjwB,GAEZivI,EAAWsknC,EACXA,EAAWnztC,EAAOv4B,GAAMhd,EAAOgd,GAAMA,EAAKu4B,EAAQv1C,GAClDkmC,EAEAk+G,IAAal+G,IACfk+G,EAAWpkJ,EAAOgd,IAEhBwhH,EACF4ooC,GAAgB7xtC,EAAQv4B,EAAKonI,GAE7BytxB,GAAYt83B,EAAQv4B,EAAKonI,EAE7B,CACA,OAAO7uG,CACT,CAkCA,SAASivuC,GAAiB1/wC,EAAQ2/wC,GAChC,OAAO,SAASnuhC,EAAYowgC,GAC1B,IAAIxutC,EAAOpuC,GAAQwsP,GAAcumhC,GAAkBgE,GAC/Cjzd,EAAc62d,EAAcA,IAAgB,CAAC,EAEjD,OAAOvsuC,EAAKo+M,EAAYxxP,EAAQi9wC,GAAYrb,EAAU,GAAI94c,EAC5D,CACF,CASA,SAAS82d,GAAevT,GACtB,OAAOF,IAAS,SAAS17tC,EAAQxC,GAC/B,IAAI59B,GAAS,EACT3c,EAASu6C,EAAQv6C,OACjBkwwC,EAAalwwC,EAAS,EAAIu6C,EAAQv6C,EAAS,GAAK0tC,EAChDounB,EAAQ97pB,EAAS,EAAIu6C,EAAQ,GAAK7M,EAWtC,IATAwiuC,EAAcyI,EAAS34wC,OAAS,GAA0B,mBAAdkwwC,GACvClwwC,IAAUkwwC,GACXxiuC,EAEAounB,GAAS48mB,GAAen+tC,EAAQ,GAAIA,EAAQ,GAAIuhnB,KAClDo0mB,EAAalwwC,EAAS,EAAI0tC,EAAYwiuC,EACtClwwC,EAAS,GAEX+8C,EAAS99C,GAAO89C,KACPpgC,EAAQ3c,GAAQ,CACvB,IAAIwH,EAAS+yC,EAAQ59B,GACjBnV,GACFmxwC,EAAS57tC,EAAQv1C,EAAQmV,EAAOuzvC,EAEpC,CACA,OAAOnztC,CACT,GACF,CAUA,SAASq0tC,GAAewH,EAAUvH,GAChC,OAAO,SAASvzgC,EAAYowgC,GAC1B,GAAkB,MAAdpwgC,EACF,OAAOA,EAET,IAAK4rsB,GAAY5rsB,GACf,OAAO86gC,EAAS96gC,EAAYowgC,GAM9B,IAJA,IAAIluwC,EAAS89P,EAAW99P,OACpB2c,EAAQ00vC,EAAYrxwC,GAAU,EAC9B+iI,EAAW9jI,GAAO6+P,IAEduzgC,EAAY10vC,MAAYA,EAAQ3c,KACa,IAA/CkuwC,EAASnroC,EAASpmH,GAAQA,EAAOomH,KAIvC,OAAO+6H,CACT,CACF,CASA,SAAS6zgC,GAAcN,GACrB,OAAO,SAASt0tC,EAAQmxtC,EAAU2D,GAMhC,IALA,IAAIl1vC,GAAS,EACTomH,EAAW9jI,GAAO89C,GAClBnQ,EAAQiluC,EAAS90tC,GACjB/8C,EAAS4sC,EAAM5sC,OAEZA,KAAU,CACf,IAAIwkB,EAAMooB,EAAMykuC,EAAYrxwC,IAAW2c,GACvC,IAA+C,IAA3CuxvC,EAASnroC,EAASv+G,GAAMA,EAAKu+G,GAC/B,KAEJ,CACA,OAAOhmF,CACT,CACF,CA8BA,SAASovuC,GAAgB/3sC,GACvB,OAAO,SAAS13D,GAGd,IAAIq8vC,EAAaD,GAFjBp8vC,EAASxY,GAASwY,IAGdw+rB,GAAcx+rB,GACdgxB,EAEA0rd,EAAM2/wB,EACNA,EAAW,GACXr8vC,EAAOlE,OAAO,GAEd2pC,EAAW42tC,EACXF,GAAUE,EAAY,GAAGvswC,KAAK,IAC9BkQ,EAAOhb,MAAM,GAEjB,OAAO03f,EAAIhlb,KAAgBjyB,CAC7B,CACF,CASA,SAASiquC,GAAiBvjwC,GACxB,OAAO,SAASnM,GACd,OAAO8nwC,GAAY/g9B,GAAM4o9B,GAAO3vwC,GAAQtQ,QAAQq3wC,GAAQ,KAAM56vC,EAAU,GAC1E,CACF,CAUA,SAASyjwC,GAAW3jV,GAClB,OAAO,WAIL,IAAI3x5B,EAAOj3C,UACX,OAAQi3C,EAAKh3C,QACX,KAAK,EAAG,OAAO,IAAI2o8B,EACnB,KAAK,EAAG,OAAO,IAAIA,EAAK3x5B,EAAK,IAC7B,KAAK,EAAG,OAAO,IAAI2x5B,EAAK3x5B,EAAK,GAAIA,EAAK,IACtC,KAAK,EAAG,OAAO,IAAI2x5B,EAAK3x5B,EAAK,GAAIA,EAAK,GAAIA,EAAK,IAC/C,KAAK,EAAG,OAAO,IAAI2x5B,EAAK3x5B,EAAK,GAAIA,EAAK,GAAIA,EAAK,GAAIA,EAAK,IACxD,KAAK,EAAG,OAAO,IAAI2x5B,EAAK3x5B,EAAK,GAAIA,EAAK,GAAIA,EAAK,GAAIA,EAAK,GAAIA,EAAK,IACjE,KAAK,EAAG,OAAO,IAAI2x5B,EAAK3x5B,EAAK,GAAIA,EAAK,GAAIA,EAAK,GAAIA,EAAK,GAAIA,EAAK,GAAIA,EAAK,IAC1E,KAAK,EAAG,OAAO,IAAI2x5B,EAAK3x5B,EAAK,GAAIA,EAAK,GAAIA,EAAK,GAAIA,EAAK,GAAIA,EAAK,GAAIA,EAAK,GAAIA,EAAK,IAErF,IAAIu1uC,EAAc/b,GAAW7nU,EAAKtp8B,WAC9B8jB,EAASwl7B,EAAKzo8B,MAAMqsxC,EAAav1uC,GAIrC,OAAO4tN,GAASzhP,GAAUA,EAASopwC,CACrC,CACF,CA8CA,SAASC,GAAWC,GAClB,OAAO,SAAS3uhC,EAAYt6M,EAAWymd,GACrC,IAAIlnY,EAAW9jI,GAAO6+P,GACtB,IAAK4rsB,GAAY5rsB,GAAa,CAC5B,IAAIowgC,EAAWqb,GAAY/luC,EAAW,GACtCs6M,EAAa7qP,GAAK6qP,GAClBt6M,EAAY,SAASh/B,GAAO,OAAO0pvC,EAASnroC,EAASv+G,GAAMA,EAAKu+G,EAAW,CAC7E,CACA,IAAIpmH,EAAQ8vwC,EAAc3uhC,EAAYt6M,EAAWymd,GACjD,OAAOttf,GAAS,EAAIomH,EAASmroC,EAAWpwgC,EAAWnhP,GAASA,GAAS+wB,CACvE,CACF,CASA,SAASg/uC,GAAWrb,GAClB,OAAOsb,IAAS,SAASxrzB,GACvB,IAAInhe,EAASmhe,EAAMnhe,OACf2c,EAAQ3c,EACR4sxC,EAAS3F,GAAc5nxC,UAAUwtxC,KAKrC,IAHIxb,GACFlwyB,EAAMlna,UAEDt9C,KAAS,CACd,IAAI+iC,EAAOyhb,EAAMxkd,GACjB,GAAmB,mBAAR+iC,EACT,MAAM,IAAIlgD,GAAUkrwC,GAEtB,GAAIkiB,IAAWh80B,GAAgC,WAArBk80B,GAAYptuC,GACpC,IAAIkxZ,EAAU,IAAIq20B,GAAc,IAAI,EAExC,CAEA,IADAtqwC,EAAQi0b,EAAUj0b,EAAQ3c,IACjB2c,EAAQ3c,GAAQ,CAGvB,IAAIyh4B,EAAWqrZ,GAFfptuC,EAAOyhb,EAAMxkd,IAGTxN,EAAmB,WAAZsy3B,EAAwBt9vB,GAAQzkF,GAAQhS,EAMjDkja,EAJEzhc,GAAQ49wC,GAAW59wC,EAAK,KACX,KAAXA,EAAK,KACJA,EAAK,GAAGnP,QAAqB,GAAXmP,EAAK,GAElByhc,EAAQk80B,GAAY39wC,EAAK,KAAKjP,MAAM0wc,EAASzhc,EAAK,IAElC,GAAfuwC,EAAK1/C,QAAe+sxC,GAAWrtuC,GACtCkxZ,EAAQ6wb,KACR7wb,EAAQi80B,KAAKntuC,EAErB,CACA,OAAO,WACL,IAAI1I,EAAOj3C,UACPe,EAAQk2C,EAAK,GAEjB,GAAI45Z,GAA0B,GAAf55Z,EAAKh3C,QAAesR,GAAQxQ,GACzC,OAAO8vc,EAAQo80B,MAAMlsxC,GAAOA,QAK9B,IAHA,IAAI6b,EAAQ,EACRwG,EAASnjB,EAASmhe,EAAMxkd,GAAOzc,MAAMP,KAAMq3C,GAAQl2C,IAE9C6b,EAAQ3c,GACfmjB,EAASg+c,EAAMxkd,GAAOpd,KAAKI,KAAMwjB,GAEnC,OAAOA,CACT,CACF,GACF,CAqBA,SAAS8pwC,GAAavtuC,EAAMuwtC,EAASru3B,EAASyp4B,EAAUC,EAAS4B,EAAeC,EAAcC,EAAQC,EAAK9gxC,GACzG,IAAI+gxC,EAAQrd,EAAU2P,EAClB2N,EA1kKa,EA0kKJtd,EACTud,EA1kKiB,EA0kKLvd,EACZsb,EAAsB,GAAVtb,EACZwd,EApkKa,IAokKJxd,EACTtnU,EAAO6kV,EAAY9/uC,EAAY4+uC,GAAW5suC,GA6C9C,OA3CA,SAASkxZ,IAKP,IAJA,IAAI5wc,EAASD,UAAUC,OACnBg3C,EAAO53C,EAAMY,GACb2c,EAAQ3c,EAEL2c,KACLq6B,EAAKr6B,GAAS5c,UAAU4c,GAE1B,GAAI4uwC,EACF,IAAIp6tC,EAAcu8tC,GAAU980B,GACxB+80B,EArjIZ,SAAsB9zuC,EAAOsX,GAI3B,IAHA,IAAInxD,EAAS65C,EAAM75C,OACfmjB,EAAS,EAENnjB,KACD65C,EAAM75C,KAAYmxD,KAClBhuC,EAGN,OAAOA,CACT,CA2iI2ByqwC,CAAa52uC,EAAMma,GASxC,GAPIk6tC,IACFr0uC,EAAOo0uC,GAAYp0uC,EAAMq0uC,EAAUC,EAASC,IAE1C2B,IACFl2uC,EAAO60uC,GAAiB70uC,EAAMk2uC,EAAeC,EAAc5B,IAE7DvrxC,GAAU2txC,EACNpC,GAAavrxC,EAASuM,EAAO,CAC/B,IAAIshxC,EAAalI,GAAe3uuC,EAAMma,GACtC,OAAO28tC,GACLpuuC,EAAMuwtC,EAASgd,GAAcr80B,EAAQz/Y,YAAaywV,EAClD5qW,EAAM62uC,EAAYT,EAAQC,EAAK9gxC,EAAQvM,EAE3C,CACA,IAAIusxC,EAAcgB,EAAS3r4B,EAAUjiZ,KACjCkR,EAAK28wC,EAAYjB,EAAY7suC,GAAQA,EAczC,OAZA1/C,EAASg3C,EAAKh3C,OACVotxC,EACFp2uC,EAg4CN,SAAiB6C,EAAO09S,GAKtB,IAJA,IAAI4h7B,EAAYt/tC,EAAM75C,OAClBA,EAASsrwC,GAAU/z6B,EAAQv3V,OAAQm5wC,GACnC4U,EAAW3e,GAAUv1tC,GAElB75C,KAAU,CACf,IAAI2c,EAAQ46U,EAAQv3V,GACpB65C,EAAM75C,GAAUuuwC,GAAQ5xvC,EAAOw8vC,GAAa4U,EAASpxwC,GAAS+wB,CAChE,CACA,OAAOmM,CACT,CA14Cam0uC,CAAQh3uC,EAAMo2uC,GACZK,GAAUztxC,EAAS,GAC5Bg3C,EAAKijB,UAEHqztC,GAASD,EAAMrtxC,IACjBg3C,EAAKh3C,OAASqtxC,GAEZ1txC,MAAQA,OAASmwJ,IAAQnwJ,gBAAgBixc,IAC3C//b,EAAK837B,GAAQ2jV,GAAWz7wC,IAEnBA,EAAG3Q,MAAMqsxC,EAAav1uC,EAC/B,CAEF,CAUA,SAASi3uC,GAAe3hxC,EAAQ4hxC,GAC9B,OAAO,SAASnxuC,EAAQmxtC,GACtB,OA1gEJ,SAAsBnxtC,EAAQzwC,EAAQ4hwC,EAAU94c,GAI9C,OAHA87c,GAAWn0tC,GAAQ,SAASj8C,EAAO0jB,EAAKu4B,GACtCzwC,EAAO8ozB,EAAa84c,EAASptwC,GAAQ0jB,EAAKu4B,EAC5C,IACOq4wB,CACT,CAqgEW+4d,CAAapxuC,EAAQzwC,EAAQ4hxC,EAAWhgB,GAAW,CAAC,EAC7D,CACF,CAUA,SAASkgB,GAAoB3w1B,EAAU3gU,GACrC,OAAO,SAASh8H,EAAO06C,GACrB,IAAIr4B,EACJ,GAAIriB,IAAU4sC,GAAa8N,IAAU9N,EACnC,OAAOovF,EAKT,GAHIh8H,IAAU4sC,IACZvqB,EAASriB,GAEP06C,IAAU9N,EAAW,CACvB,GAAIvqB,IAAWuqB,EACb,OAAO8N,EAEW,iBAAT16C,GAAqC,iBAAT06C,GACrC16C,EAAQk4uC,GAAal4uC,GACrB06C,EAAQw9rC,GAAax9rC,KAErB16C,EAAQ0pxC,GAAa1pxC,GACrB06C,EAAQgvuC,GAAahvuC,IAEvBr4B,EAASs6a,EAAS38b,EAAO06C,EAC3B,CACA,OAAOr4B,CACT,CACF,CASA,SAASkrwC,GAAWC,GAClB,OAAO3B,IAAS,SAASzW,GAEvB,OADAA,EAAYvF,GAASuF,EAAWtF,GAAU2Y,OACnC9Q,IAAS,SAASzhuC,GACvB,IAAI4qW,EAAUjiZ,KACd,OAAO2uxC,EAAUpY,GAAW,SAAShI,GACnC,OAAOhuwC,GAAMguwC,EAAUts3B,EAAS5qW,EAClC,GACF,GACF,GACF,CAWA,SAASu3uC,GAAcvuxC,EAAQwuxC,GAG7B,IAAIC,GAFJD,EAAQA,IAAU9gvC,EAAY,IAAMsrsC,GAAaw1C,IAEzBxuxC,OACxB,GAAIyuxC,EAAc,EAChB,OAAOA,EAAc9E,GAAW6E,EAAOxuxC,GAAUwuxC,EAEnD,IAAIrrwC,EAASwmwC,GAAW6E,EAAOpQ,GAAWp+wC,EAAS6lxC,GAAW2I,KAC9D,OAAO1V,GAAW0V,GACd3V,GAAU39jB,GAAc/3rB,GAAS,EAAGnjB,GAAQwM,KAAK,IACjD2W,EAAOzhB,MAAM,EAAG1B,EACtB,CA4CA,SAAS0uxC,GAAYrd,GACnB,OAAO,SAASlruC,EAAOC,EAAKioU,GAa1B,OAZIA,GAAuB,iBAARA,GAAoBqq6B,GAAevyuC,EAAOC,EAAKioU,KAChEjoU,EAAMioU,EAAO3gU,GAGfvH,EAAQwovC,GAASxovC,GACbC,IAAQsH,GACVtH,EAAMD,EACNA,EAAQ,GAERC,EAAMuovC,GAASvovC,GAt9CrB,SAAmBD,EAAOC,EAAKioU,EAAMgj6B,GAKnC,IAJA,IAAI10vC,GAAS,EACT3c,EAASqrwC,GAAU+S,IAAYh4uC,EAAMD,IAAUkoU,GAAQ,IAAK,GAC5DlrV,EAAS/jB,EAAMY,GAEZA,KACLmjB,EAAOkuvC,EAAYrxwC,IAAW2c,GAASwpB,EACvCA,GAASkoU,EAEX,OAAOlrV,CACT,CA+8CWyrwC,CAAUzovC,EAAOC,EADxBioU,EAAOA,IAAS3gU,EAAavH,EAAQC,EAAM,GAAK,EAAKuovC,GAAStg7B,GAC3Bgj6B,EACrC,CACF,CASA,SAASwd,GAA0Bpx1B,GACjC,OAAO,SAAS38b,EAAO06C,GAKrB,MAJsB,iBAAT16C,GAAqC,iBAAT06C,IACvC16C,EAAQ+tN,GAAS/tN,GACjB06C,EAAQqzK,GAASrzK,IAEZiiZ,EAAS38b,EAAO06C,EACzB,CACF,CAmBA,SAASsyuC,GAAcpuuC,EAAMuwtC,EAAS6e,EAAU39tC,EAAaywV,EAASyp4B,EAAUC,EAAS8B,EAAQC,EAAK9gxC,GACpG,IAAIwixC,EAnzKc,EAmzKJ9e,EAMdA,GAAY8e,EAAUpP,EAtzKI,GAJF,GA2zKxB1P,KAAa8e,EAvzKa,GAuzKuBpP,MAG/C1P,IAAW,GAEb,IAAI966B,EAAU,CACZz1S,EAAMuwtC,EAASru3B,EAVCmt4B,EAAU1D,EAAW39uC,EAFtBqhvC,EAAUzD,EAAU59uC,EAGdqhvC,EAAUrhvC,EAAY29uC,EAFvB0D,EAAUrhvC,EAAY49uC,EAYzB8B,EAAQC,EAAK9gxC,GAG5B4W,EAAS2rwC,EAAS5uxC,MAAMwtC,EAAWynT,GAKvC,OAJI437B,GAAWrtuC,IACb++E,GAAQt7G,EAAQgyU,GAElBhyU,EAAOguC,YAAcA,EACd69tC,GAAgB7rwC,EAAQu8B,EAAMuwtC,EACvC,CASA,SAASgf,GAAY76sC,GACnB,IAAI10B,EAAOl9C,GAAK4xE,GAChB,OAAO,SAASs1E,EAAQksH,GAGtB,GAFAlsH,EAASmlE,GAASnlE,IAClBksH,EAAyB,MAAbA,EAAoB,EAAI01/B,GAAU50U,GAAU9grB,GAAY,OACnDojgC,GAAetvnC,GAAS,CAGvC,IAAIywW,GAAQj2f,GAASwlJ,GAAU,KAAKnlJ,MAAM,KAI1C,SADA41f,GAAQj2f,GAFIw7C,EAAKy6c,EAAK,GAAK,MAAQA,EAAK,GAAKvkP,KAEnB,KAAKrxQ,MAAM,MACvB,GAAK,MAAQ41f,EAAK,GAAKvkP,GACvC,CACA,OAAOl2N,EAAKgqG,EACd,CACF,CASA,IAAIotnC,GAAcxxvC,IAAQ,EAAIyxvC,GAAW,IAAIzxvC,GAAI,CAAC,EAAE,KAAK,IAAOu6vC,EAAmB,SAASxjwC,GAC1F,OAAO,IAAIiJ,GAAIjJ,EACjB,EAF4EomC,GAW5E,SAASysuC,GAAcrd,GACrB,OAAO,SAAS90tC,GACd,IAAIhmC,EAAM2guC,GAAO36rC,GACjB,OAAIhmC,GAAO2jwC,EACF9mD,GAAW72qC,GAEhBhmC,GAAO6jwC,EACFgL,GAAW7ouC,GAj8I1B,SAAqBA,EAAQnQ,GAC3B,OAAO+juC,GAAS/juC,GAAO,SAASpoB,GAC9B,MAAO,CAACA,EAAKu4B,EAAOv4B,GACtB,GACF,CA+7Ia2qwC,CAAYpyuC,EAAQ80tC,EAAS90tC,GACtC,CACF,CA2BA,SAASqyuC,GAAW1vuC,EAAMuwtC,EAASru3B,EAASyp4B,EAAUC,EAAS8B,EAAQC,EAAK9gxC,GAC1E,IAAIihxC,EAh6KiB,EAg6KLvd,EAChB,IAAKud,GAA4B,mBAAR9tuC,EACvB,MAAM,IAAIlgD,GAAUkrwC,GAEtB,IAAI1qwC,EAASqrxC,EAAWA,EAASrrxC,OAAS,EAS1C,GARKA,IACHiwwC,IAAW,GACXob,EAAWC,EAAU59uC,GAEvB2/uC,EAAMA,IAAQ3/uC,EAAY2/uC,EAAMhiB,GAAU30U,GAAU22V,GAAM,GAC1D9gxC,EAAQA,IAAUmhC,EAAYnhC,EAAQmq7B,GAAUnq7B,GAChDvM,GAAUsrxC,EAAUA,EAAQtrxC,OAAS,EAt6KX,GAw6KtBiwwC,EAAmC,CACrC,IAAIid,EAAgB7B,EAChB8B,EAAe7B,EAEnBD,EAAWC,EAAU59uC,CACvB,CACA,IAAIv+B,EAAOq+wC,EAAY9/uC,EAAYy2F,GAAQzkF,GAEvCy1S,EAAU,CACZz1S,EAAMuwtC,EAASru3B,EAASyp4B,EAAUC,EAAS4B,EAAeC,EAC1DC,EAAQC,EAAK9gxC,GAkBf,GAfI4C,GA26BN,SAAmBA,EAAM3H,GACvB,IAAIyowC,EAAU9gwC,EAAK,GACfkgxC,EAAa7nxC,EAAO,GACpB8nxC,EAAarf,EAAUof,EACvBve,EAAWwe,EAAa,IAExBC,EACAF,GAAczP,GA12MA,GA02MmB3P,GACjCof,GAAczP,GAt2MA,KAs2MmB3P,GAAgC9gwC,EAAK,GAAGnP,QAAUwH,EAAO,IAC5E,KAAd6nxC,GAAqD7nxC,EAAO,GAAGxH,QAAUwH,EAAO,IA52MlE,GA42M0EyowC,EAG5F,IAAMa,IAAYye,EAChB,OAAOpgxC,EAn3MQ,EAs3MbkgxC,IACFlgxC,EAAK,GAAK3H,EAAO,GAEjB8nxC,GAz3Me,EAy3MDrf,EAA2B,EAv3MnB,GA03MxB,IAAInvwC,EAAQ0G,EAAO,GACnB,GAAI1G,EAAO,CACT,IAAIuqxC,EAAWl8wC,EAAK,GACpBA,EAAK,GAAKk8wC,EAAWD,GAAYC,EAAUvqxC,EAAO0G,EAAO,IAAM1G,EAC/DqO,EAAK,GAAKk8wC,EAAW1F,GAAex2wC,EAAK,GAAIuwwC,GAAel4wC,EAAO,EACrE,EAEA1G,EAAQ0G,EAAO,MAEb6jxC,EAAWl8wC,EAAK,GAChBA,EAAK,GAAKk8wC,EAAWQ,GAAiBR,EAAUvqxC,EAAO0G,EAAO,IAAM1G,EACpEqO,EAAK,GAAKk8wC,EAAW1F,GAAex2wC,EAAK,GAAIuwwC,GAAel4wC,EAAO,KAGrE1G,EAAQ0G,EAAO,MAEb2H,EAAK,GAAKrO,GAGRuuxC,EAAazP,IACfzwwC,EAAK,GAAgB,MAAXA,EAAK,GAAa3H,EAAO,GAAK8jwC,GAAUn8vC,EAAK,GAAI3H,EAAO,KAGrD,MAAX2H,EAAK,KACPA,EAAK,GAAK3H,EAAO,IAGnB2H,EAAK,GAAK3H,EAAO,GACjB2H,EAAK,GAAKmgxC,CAGZ,CA/9BIE,CAAUr67B,EAAShmV,GAErBuwC,EAAOy1S,EAAQ,GACf866B,EAAU966B,EAAQ,GAClBysD,EAAUzsD,EAAQ,GAClBk27B,EAAWl27B,EAAQ,GACnBm27B,EAAUn27B,EAAQ,KAClB5oV,EAAQ4oV,EAAQ,GAAKA,EAAQ,KAAOznT,EAC/B8/uC,EAAY,EAAI9tuC,EAAK1/C,OACtBqrwC,GAAUl26B,EAAQ,GAAKn1V,EAAQ,KAEX,GAAViwwC,IACZA,IAAW,IAERA,GA18KY,GA08KDA,EAGd9svC,EA18KgB,GAy8KP8svC,GAx8Ka,IAw8KiBA,EApgB3C,SAAqBvwtC,EAAMuwtC,EAAS1jwC,GAClC,IAAIo87B,EAAO2jV,GAAW5suC,GAwBtB,OAtBA,SAASkxZ,IAMP,IALA,IAAI5wc,EAASD,UAAUC,OACnBg3C,EAAO53C,EAAMY,GACb2c,EAAQ3c,EACRmxD,EAAcu8tC,GAAU980B,GAErBj0b,KACLq6B,EAAKr6B,GAAS5c,UAAU4c,GAE1B,IAAI2uwC,EAAWtrxC,EAAS,GAAKg3C,EAAK,KAAOma,GAAena,EAAKh3C,EAAS,KAAOmxD,EACzE,GACAw0tC,GAAe3uuC,EAAMma,GAGzB,OADAnxD,GAAUsrxC,EAAQtrxC,QACLuM,EACJuhxC,GACLpuuC,EAAMuwtC,EAASgd,GAAcr80B,EAAQz/Y,YAAazjB,EAClDsJ,EAAMs0uC,EAAS59uC,EAAWA,EAAWnhC,EAAQvM,GAG1CE,GADGP,MAAQA,OAASmwJ,IAAQnwJ,gBAAgBixc,EAAW+3f,EAAOjp5B,EACpD//C,KAAMq3C,EACzB,CAEF,CA2eay4uC,CAAY/vuC,EAAMuwtC,EAAS1jwC,GAC1B0jwC,GAAW0P,GAAgC,IAAX1P,GAAqDqb,EAAQtrxC,OAG9FitxC,GAAa/sxC,MAAMwtC,EAAWynT,GA9O3C,SAAuBz1S,EAAMuwtC,EAASru3B,EAASyp4B,GAC7C,IAAIkC,EApuKa,EAouKJtd,EACTtnU,EAAO2jV,GAAW5suC,GAkBtB,OAhBA,SAASkxZ,IAQP,IAPA,IAAI460B,GAAa,EACbhshC,EAAaz/P,UAAUC,OACvBwi9B,GAAa,EACbkpU,EAAaL,EAASrrxC,OACtBg3C,EAAO53C,EAAMssxC,EAAalshC,GAC1B3uP,EAAMlR,MAAQA,OAASmwJ,IAAQnwJ,gBAAgBixc,EAAW+3f,EAAOjp5B,IAE5D8i6B,EAAYkpU,GACnB10uC,EAAKwr6B,GAAa6oU,EAAS7oU,GAE7B,KAAOhjtB,KACLxoN,EAAKwr6B,KAAezi9B,YAAYyrxC,GAElC,OAAOtrxC,GAAM2Q,EAAI08wC,EAAS3r4B,EAAUjiZ,KAAMq3C,EAC5C,CAEF,CAuNa04uC,CAAchwuC,EAAMuwtC,EAASru3B,EAASyp4B,QAJ/C,IAAIlowC,EAhmBR,SAAoBu8B,EAAMuwtC,EAASru3B,GACjC,IAAI2r4B,EA52Ja,EA42JJtd,EACTtnU,EAAO2jV,GAAW5suC,GAMtB,OAJA,SAASkxZ,IAEP,OADUjxc,MAAQA,OAASmwJ,IAAQnwJ,gBAAgBixc,EAAW+3f,EAAOjp5B,GAC3Dx/C,MAAMqtxC,EAAS3r4B,EAAUjiZ,KAAMI,UAC3C,CAEF,CAulBiB4vxC,CAAWjwuC,EAAMuwtC,EAASru3B,GASzC,OAAOot4B,IADM7/wC,EAAO26wC,GAAcrrpC,IACJt7G,EAAQgyU,GAAUz1S,EAAMuwtC,EACxD,CAcA,SAAS2f,GAAuB/gB,EAAU+E,EAAUpvvC,EAAKu4B,GACvD,OAAI8xtC,IAAanhuC,GACZqhL,GAAG8/iC,EAAUqF,GAAY1vvC,MAAUllB,GAAeC,KAAKw9C,EAAQv4B,GAC3DovvC,EAEF/E,CACT,CAgBA,SAASghB,GAAoBhhB,EAAU+E,EAAUpvvC,EAAKu4B,EAAQv1C,EAAQ8qC,GAOpE,OANIsyN,GAASiqgC,IAAajqgC,GAASgvgC,KAEjCthuC,EAAM1mC,IAAIgowC,EAAU/E,GACpByG,GAAUzG,EAAU+E,EAAUlmuC,EAAWmivC,GAAqBv9uC,GAC9DA,EAAc,OAAEshuC,IAEX/E,CACT,CAWA,SAASihB,GAAgBhvxC,GACvB,OAAO2gK,GAAc3gK,GAAS4sC,EAAY5sC,CAC5C,CAeA,SAAS4xwC,GAAY74tC,EAAO2B,EAAOy0tC,EAASC,EAAY4C,EAAWxguC,GACjE,IAAI4muC,EAliLmB,EAkiLPjJ,EACZkJ,EAAYt/tC,EAAM75C,OAClBoywC,EAAY52tC,EAAMx7C,OAEtB,GAAIm5wC,GAAa/G,KAAe8G,GAAa9G,EAAY+G,GACvD,OAAO,EAGT,IAAIC,EAAa9muC,EAAMxvC,IAAI+2C,GACvBw/tC,EAAa/muC,EAAMxvC,IAAI04C,GAC3B,GAAI49tC,GAAcC,EAChB,OAAOD,GAAc59tC,GAAS69tC,GAAcx/tC,EAE9C,IAAIl9B,GAAS,EACTwG,GAAS,EACTm5S,EAhjLqB,EAgjLb2z8B,EAAoC,IAAIvC,GAAWhguC,EAM/D,IAJA4E,EAAM1mC,IAAIiuC,EAAO2B,GACjBlJ,EAAM1mC,IAAI4vC,EAAO3B,KAGRl9B,EAAQw8vC,GAAW,CAC1B,IAAIG,EAAWz/tC,EAAMl9B,GACjB48vC,EAAW/9tC,EAAM7+B,GAErB,GAAIuzvC,EACF,IAAIsJ,EAAWN,EACXhJ,EAAWqJ,EAAUD,EAAU38vC,EAAO6+B,EAAO3B,EAAOvH,GACpD49tC,EAAWoJ,EAAUC,EAAU58vC,EAAOk9B,EAAO2B,EAAOlJ,GAE1D,GAAIknuC,IAAa9ruC,EAAW,CAC1B,GAAI8ruC,EACF,SAEFr2vC,GAAS,EACT,KACF,CAEA,GAAIm5S,GACF,IAAK288B,GAAUz9tC,GAAO,SAAS+9tC,EAAUlH,GACnC,IAAKxB,GAASv08B,EAAM+18B,KACfiH,IAAaC,GAAYzG,EAAUwG,EAAUC,EAAUtJ,EAASC,EAAY59tC,IAC/E,OAAOgqR,EAAK96T,KAAK6wwC,EAErB,IAAI,CACNlvvC,GAAS,EACT,KACF,OACK,GACDm2vC,IAAaC,IACXzG,EAAUwG,EAAUC,EAAUtJ,EAASC,EAAY59tC,GACpD,CACLnvB,GAAS,EACT,KACF,CACF,CAGA,OAFAmvB,EAAc,OAAEuH,GAChBvH,EAAc,OAAEkJ,GACTr4B,CACT,CAyKA,SAASwpwC,GAASjtuC,GAChB,OAAO62tC,GAAYD,GAAS52tC,EAAMhS,EAAWyjG,IAAUzxF,EAAO,GAChE,CASA,SAAS6vtC,GAAWxytC,GAClB,OAAOg9tC,GAAeh9tC,EAAQ9pC,GAAMqlwC,GACtC,CAUA,SAAS9I,GAAazytC,GACpB,OAAOg9tC,GAAeh9tC,EAAQgytC,GAAQwJ,GACxC,CASA,IAAIp0oC,GAAW0ipC,GAAiB,SAASnnuC,GACvC,OAAOmnuC,GAAQ/jxC,IAAI48C,EACrB,EAFyB+C,GAWzB,SAASqquC,GAAYptuC,GAKnB,IAJA,IAAIv8B,EAAUu8B,EAAKr1C,KAAO,GACtBwvC,EAAQituC,GAAU3jwC,GAClBnjB,EAASV,GAAeC,KAAKunxC,GAAW3jwC,GAAU02B,EAAM75C,OAAS,EAE9DA,KAAU,CACf,IAAImP,EAAO0qC,EAAM75C,GACb+vxC,EAAY5gxC,EAAKuwC,KACrB,GAAiB,MAAbqwuC,GAAqBA,GAAarwuC,EACpC,OAAOvwC,EAAK9E,IAEhB,CACA,OAAO8Y,CACT,CASA,SAASuqwC,GAAUhuuC,GAEjB,OADapgD,GAAeC,KAAKwnxC,GAAQ,eAAiBA,GAASrnuC,GACrDyR,WAChB,CAaA,SAASo4tC,KACP,IAAIpmwC,EAAS4jwC,GAAO7Y,UAAYA,GAEhC,OADA/qvC,EAASA,IAAW+qvC,GAAW4H,GAAe3yvC,EACvCpjB,UAAUC,OAASmjB,EAAOpjB,UAAU,GAAIA,UAAU,IAAMojB,CACjE,CAUA,SAASg5vC,GAAWntvC,EAAKxK,GACvB,IAgYiB1jB,EACboL,EAjYAiD,EAAO6f,EAAI2+uC,SACf,OAiYgB,WADZzhwC,SADapL,EA/XA0jB,KAiYmB,UAARtY,GAA4B,UAARA,GAA4B,WAARA,EACrD,cAAVpL,EACU,OAAVA,GAlYDqO,EAAmB,iBAAPqV,EAAkB,SAAW,QACzCrV,EAAK6f,GACX,CASA,SAAS8lvC,GAAa/3tC,GAIpB,IAHA,IAAI55B,EAASlQ,GAAK8pC,GACd/8C,EAASmjB,EAAOnjB,OAEbA,KAAU,CACf,IAAIwkB,EAAMrB,EAAOnjB,GACbc,EAAQi8C,EAAOv4B,GAEnBrB,EAAOnjB,GAAU,CAACwkB,EAAK1jB,EAAOo0wC,GAAmBp0wC,GACnD,CACA,OAAOqiB,CACT,CAUA,SAASopvC,GAAUxvtC,EAAQv4B,GACzB,IAAI1jB,EAhzJR,SAAkBi8C,EAAQv4B,GACxB,OAAiB,MAAVu4B,EAAiBrP,EAAYqP,EAAOv4B,EAC7C,CA8yJgBq3G,CAAS9+E,EAAQv4B,GAC7B,OAAOy1vC,GAAan5wC,GAASA,EAAQ4sC,CACvC,CAoCA,IAAI4quC,GAAcmC,GAA+B,SAAS19tC,GACxD,OAAc,MAAVA,EACK,IAETA,EAAS99C,GAAO89C,GACTw9tC,GAAYE,GAAiB19tC,IAAS,SAAS88c,GACpD,OAAOx5f,GAAqBd,KAAKw9C,EAAQ88c,EAC3C,IACF,EARqC2gxB,GAiBjCjC,GAAgBkC,GAA+B,SAAS19tC,GAE1D,IADA,IAAI55B,EAAS,GACN45B,GACLu0tC,GAAUnuvC,EAAQm1vC,GAAWv7tC,IAC7BA,EAASm9tC,GAAan9tC,GAExB,OAAO55B,CACT,EAPuCq3vC,GAgBnC9iC,GAAS66B,GA2Eb,SAASzmR,GAAQ/u8B,EAAQ/mB,EAAMqlvC,GAO7B,IAJA,IAAI1+vC,GAAS,EACT3c,GAHJg2B,EAAO47uC,GAAS57uC,EAAM+mB,IAGJ/8C,OACdmjB,GAAS,IAEJxG,EAAQ3c,GAAQ,CACvB,IAAIwkB,EAAM4N,GAAM4D,EAAKrZ,IACrB,KAAMwG,EAAmB,MAAV45B,GAAkBs+tC,EAAQt+tC,EAAQv4B,IAC/C,MAEFu4B,EAASA,EAAOv4B,EAClB,CACA,OAAIrB,KAAYxG,GAAS3c,EAChBmjB,KAETnjB,EAAmB,MAAV+8C,EAAiB,EAAIA,EAAO/8C,SAClBq0wC,GAASr0wC,IAAWuuwC,GAAQ/pvC,EAAKxkB,KACjDsR,GAAQyrC,IAAWuxtC,GAAYvxtC,GACpC,CA4BA,SAAS4ytC,GAAgB5ytC,GACvB,MAAqC,mBAAtBA,EAAOn9C,aAA8B60wC,GAAY13tC,GAE5D,CAAC,EADDyztC,GAAW0J,GAAan9tC,GAE9B,CA4EA,SAASw0tC,GAAczwwC,GACrB,OAAOwQ,GAAQxQ,IAAUwtwC,GAAYxtwC,OAChC66wC,IAAoB76wC,GAASA,EAAM66wC,IAC1C,CAUA,SAASpN,GAAQztwC,EAAOd,GACtB,IAAIkM,SAAcpL,EAGlB,SAFAd,EAAmB,MAAVA,EAAiBglC,EAAmBhlC,KAGlC,UAARkM,GACU,UAARA,GAAoB2vwC,GAAS7wwC,KAAKlK,KAChCA,GAAS,GAAKA,EAAQ,GAAK,GAAKA,EAAQd,CACjD,CAYA,SAAS04wC,GAAe53wC,EAAO6b,EAAOogC,GACpC,IAAK6nN,GAAS7nN,GACZ,OAAO,EAET,IAAI7wC,SAAcyQ,EAClB,SAAY,UAARzQ,EACKw97B,GAAY3s5B,IAAWwxtC,GAAQ5xvC,EAAOogC,EAAO/8C,QACrC,UAARkM,GAAoByQ,KAASogC,IAE7BgyK,GAAGhyK,EAAOpgC,GAAQ7b,EAG7B,CAUA,SAASm0wC,GAAMn0wC,EAAOi8C,GACpB,GAAIzrC,GAAQxQ,GACV,OAAO,EAET,IAAIoL,SAAcpL,EAClB,QAAY,UAARoL,GAA4B,UAARA,GAA4B,WAARA,GAC/B,MAATpL,IAAiByqwC,GAASzqwC,KAGvBi7wC,EAAc/wwC,KAAKlK,KAAWg7wC,EAAa9wwC,KAAKlK,IAC1C,MAAVi8C,GAAkBj8C,KAAS7B,GAAO89C,EACvC,CAwBA,SAASgwuC,GAAWrtuC,GAClB,IAAI+h1B,EAAWqrZ,GAAYptuC,GACvBlE,EAAQuruC,GAAOtlZ,GAEnB,GAAoB,mBAATjm1B,KAAyBim1B,KAAYulZ,GAAY3nxC,WAC1D,OAAO,EAET,GAAIqgD,IAASlE,EACX,OAAO,EAET,IAAIrsC,EAAOg1H,GAAQ3oF,GACnB,QAASrsC,GAAQuwC,IAASvwC,EAAK,EACjC,EA9SK+O,IAAYw5tC,GAAO,IAAIx5tC,GAAS,IAAID,YAAY,MAAQ68vC,GACxDxwvC,IAAOottC,GAAO,IAAIpttC,KAAQowvC,GAC1Bp6wC,IAAWo3uC,GAAOp3uC,GAAQ2kB,YAAc01vC,GACxCr1vC,IAAOoytC,GAAO,IAAIpytC,KAAQs1vC,GAC1B9vwC,IAAW4suC,GAAO,IAAI5suC,KAAY+vwC,KACrCnjC,GAAS,SAAS52uC,GAChB,IAAIqiB,EAASovvC,GAAWzxwC,GACpB6n8B,EAAOxl7B,GAAU2svC,EAAYhvwC,EAAMlB,YAAc8tC,EACjD0tuC,EAAazyU,EAAOorU,GAASprU,GAAQ,GAEzC,GAAIyyU,EACF,OAAQA,GACN,KAAKL,GAAoB,OAAOD,EAChC,KAAKE,GAAe,OAAON,EAC3B,KAAKO,GAAmB,OAAON,EAC/B,KAAKO,GAAe,OAAON,EAC3B,KAAKO,GAAmB,OAAON,EAGnC,OAAO13vC,CACT,GA8SF,IAAI6swC,GAAaxX,GAAa7zgC,GAAam6gC,GAS3C,SAASrK,GAAY3zwC,GACnB,IAAI6n8B,EAAO7n8B,GAASA,EAAMlB,YAG1B,OAAOkB,KAFqB,mBAAR6n8B,GAAsBA,EAAKtp8B,WAAc60wC,GAG/D,CAUA,SAASgB,GAAmBp0wC,GAC1B,OAAOA,GAAUA,IAAU8jQ,GAAS9jQ,EACtC,CAWA,SAASi0wC,GAAwBvwvC,EAAKovvC,GACpC,OAAO,SAAS72tC,GACd,OAAc,MAAVA,GAGGA,EAAOv4B,KAASovvC,IACpBA,IAAalmuC,GAAclpB,KAAOvlB,GAAO89C,GAC9C,CACF,CAoIA,SAASu5tC,GAAS52tC,EAAMvZ,EAAOo8F,GAE7B,OADAp8F,EAAQkluC,GAAUlluC,IAAUuH,EAAagS,EAAK1/C,OAAS,EAAKmmC,EAAO,GAC5D,WAML,IALA,IAAI6Q,EAAOj3C,UACP4c,GAAS,EACT3c,EAASqrwC,GAAUr0tC,EAAKh3C,OAASmmC,EAAO,GACxC0T,EAAQz6C,EAAMY,KAET2c,EAAQ3c,GACf65C,EAAMl9B,GAASq6B,EAAK7Q,EAAQxpB,GAE9BA,GAAS,EAET,IADA,IAAI4/vC,EAAYn9wC,EAAM+mC,EAAQ,KACrBxpB,EAAQwpB,GACfo2uC,EAAU5/vC,GAASq6B,EAAKr6B,GAG1B,OADA4/vC,EAAUp2uC,GAASo8F,EAAU1oF,GACtB35C,GAAMw/C,EAAM//C,KAAM48wC,EAC3B,CACF,CAUA,SAASvrrC,GAAOj0C,EAAQ/mB,GACtB,OAAOA,EAAKh2B,OAAS,EAAI+8C,EAAS84tC,GAAQ94tC,EAAQm6tC,GAAUlhvC,EAAM,GAAI,GACxE,CAgCA,SAASq/uC,GAAQt4tC,EAAQv4B,GACvB,IAAY,gBAARA,GAAgD,mBAAhBu4B,EAAOv4B,KAIhC,aAAPA,EAIJ,OAAOu4B,EAAOv4B,EAChB,CAgBA,IAAIi6G,GAAU+9oC,GAASsN,IAUnBtkwC,GAAa8gwC,IAAiB,SAAS5muC,EAAMqC,GAC/C,OAAO+tG,GAAKtqI,WAAWk6B,EAAMqC,EAC/B,EAUIw0tC,GAAciG,GAAShG,IAY3B,SAASwY,GAAgBp+0B,EAASn9X,EAAWw8rC,GAC3C,IAAIzowC,EAAUisE,EAAY,GAC1B,OAAO8isC,GAAY3l0B,EA1brB,SAA2Bppc,EAAQu6E,GACjC,IAAI/hF,EAAS+hF,EAAQ/hF,OACrB,IAAKA,EACH,OAAOwH,EAET,IAAI0qD,EAAYlyD,EAAS,EAGzB,OAFA+hF,EAAQ7vB,IAAclyD,EAAS,EAAI,KAAO,IAAM+hF,EAAQ7vB,GACxD6vB,EAAUA,EAAQv1E,KAAKxM,EAAS,EAAI,KAAO,KACpCwH,EAAO4E,QAAQw1wC,GAAe,uBAAyB7/rC,EAAU,SAC1E,CAib8BkusC,CAAkBzoxC,EAqHhD,SAA2Bu6E,EAASkurC,GAOlC,OANAjB,GAAU+Q,GAAW,SAAS5lxB,GAC5B,IAAIr5f,EAAQ,KAAOq5f,EAAK,GACnB81wB,EAAU91wB,EAAK,KAAQs2wB,GAAc1urC,EAASjhF,IACjDihF,EAAQvgF,KAAKV,EAEjB,IACOihF,EAAQ71C,MACjB,CA7HwDgkvC,CAtjBxD,SAAwB1oxC,GACtB,IAAIpB,EAAQoB,EAAOpB,MAAMy7wC,IACzB,OAAOz7wC,EAAQA,EAAM,GAAG7B,MAAMu9wC,IAAkB,EAClD,CAmjB0EqO,CAAe3oxC,GAASyowC,IAClG,CAWA,SAASuM,GAAS98tC,GAChB,IAAIwJ,EAAQ,EACRwztC,EAAa,EAEjB,OAAO,WACL,IAAIC,EAAQF,KACRpphC,EAlkNK,IAkkNmBsphC,EAAQD,GAGpC,GADAA,EAAaC,EACTtphC,EAAY,GACd,KAAMnqM,GAvkNE,IAwkNN,OAAOnpD,UAAU,QAGnBmpD,EAAQ,EAEV,OAAOxJ,EAAKx/C,MAAMwtC,EAAW3tC,UAC/B,CACF,CAUA,SAASmoxC,GAAYruuC,EAAOt1B,GAC1B,IAAI5H,GAAS,EACT3c,EAAS65C,EAAM75C,OACfkyD,EAAYlyD,EAAS,EAGzB,IADAukB,EAAOA,IAASmpB,EAAY1tC,EAASukB,IAC5B5H,EAAQ4H,GAAM,CACrB,IAAI6rwC,EAAOpI,GAAWrrwC,EAAOu1C,GACzBpxD,EAAQ+4C,EAAMu2uC,GAElBv2uC,EAAMu2uC,GAAQv2uC,EAAMl9B,GACpBk9B,EAAMl9B,GAAS7b,CACjB,CAEA,OADA+4C,EAAM75C,OAASukB,EACRs1B,CACT,CASA,IAtTM12B,GAOA0P,GA+SFokvC,IAtTE9zvC,GAASkjH,IAsTkB,SAAS3pH,GACxC,IAAIyG,EAAS,GAOb,OAN6B,KAAzBzG,EAAOhE,WAAW,IACpByK,EAAO3hB,KAAK,IAEdkb,EAAOtQ,QAAQ6wwC,IAAY,SAAS72wC,EAAOsjJ,EAAQyznC,EAAOC,GACxDj6vC,EAAO3hB,KAAK27wC,EAAQC,EAAUhxwC,QAAQ8wwC,GAAc,MAASxznC,GAAUtjJ,EACzE,IACO+c,CACT,IA/T6B,SAASqB,GAIlC,OA91MiB,MA21MbqO,GAAMtO,MACRsO,GAAMlO,QAEDH,CACT,IAEIqO,GAAQ1P,GAAO0P,MACZ1P,IAgUT,SAASiP,GAAMtxB,GACb,GAAoB,iBAATA,GAAqByqwC,GAASzqwC,GACvC,OAAOA,EAET,IAAIqiB,EAAUriB,EAAQ,GACtB,MAAkB,KAAVqiB,GAAkB,EAAIriB,IAAU,IAAa,KAAOqiB,CAC9D,CASA,SAAS4wvC,GAASr0tC,GAChB,GAAY,MAARA,EAAc,CAChB,IACE,OAAOy0tC,GAAa50wC,KAAKmgD,EAC3B,CAAE,MAAO5gD,GAAI,CACb,IACE,OAAQ4gD,EAAO,EACjB,CAAE,MAAO5gD,GAAI,CACf,CACA,MAAO,EACT,CA2BA,SAASooxC,GAAat20B,GACpB,GAAIA,aAAmBo20B,GACrB,OAAOp20B,EAAQ1gb,QAEjB,IAAI/M,EAAS,IAAI8jwC,GAAcr20B,EAAQy20B,YAAaz20B,EAAQ220B,WAI5D,OAHApkwC,EAAOmkwC,YAAclY,GAAUx+zB,EAAQ020B,aACvCnkwC,EAAOqkwC,UAAa520B,EAAQ420B,UAC5BrkwC,EAAOskwC,WAAa720B,EAAQ620B,WACrBtkwC,CACT,CAqIA,IAAI2zc,GAAa2hzB,IAAS,SAAS5+tC,EAAOx9B,GACxC,OAAOo5vC,GAAkB57tC,GACrB0kuC,GAAe1kuC,EAAO23tC,GAAYn1vC,EAAQ,EAAGo5vC,IAAmB,IAChE,EACN,IA4BI+I,GAAe/F,IAAS,SAAS5+tC,EAAOx9B,GAC1C,IAAI6xvC,EAAW5pvC,GAAKjI,GAIpB,OAHIo5vC,GAAkBvH,KACpBA,EAAWxguC,GAEN+nuC,GAAkB57tC,GACrB0kuC,GAAe1kuC,EAAO23tC,GAAYn1vC,EAAQ,EAAGo5vC,IAAmB,GAAO8T,GAAYrb,EAAU,IAC7F,EACN,IAyBImiB,GAAiB5X,IAAS,SAAS5+tC,EAAOx9B,GAC5C,IAAIq8d,EAAap0d,GAAKjI,GAItB,OAHIo5vC,GAAkB/8xB,KACpBA,EAAahrc,GAER+nuC,GAAkB57tC,GACrB0kuC,GAAe1kuC,EAAO23tC,GAAYn1vC,EAAQ,EAAGo5vC,IAAmB,GAAO/nuC,EAAWgrc,GAClF,EACN,IAqOA,SAASzyY,GAAUpsD,EAAO2J,EAAWymd,GACnC,IAAIjqgB,EAAkB,MAAT65C,EAAgB,EAAIA,EAAM75C,OACvC,IAAKA,EACH,OAAQ,EAEV,IAAI2c,EAAqB,MAAbstf,EAAoB,EAAIysb,GAAUzsb,GAI9C,OAHIttf,EAAQ,IACVA,EAAQ0uvC,GAAUrrwC,EAAS2c,EAAO,IAE7Bs1vC,GAAcp4tC,EAAO0vuC,GAAY/luC,EAAW,GAAI7mC,EACzD,CAqCA,SAAS2zwC,GAAcz2uC,EAAO2J,EAAWymd,GACvC,IAAIjqgB,EAAkB,MAAT65C,EAAgB,EAAIA,EAAM75C,OACvC,IAAKA,EACH,OAAQ,EAEV,IAAI2c,EAAQ3c,EAAS,EAOrB,OANIiqgB,IAAcv8d,IAChB/wB,EAAQ+56B,GAAUzsb,GAClBttf,EAAQstf,EAAY,EAChBohwB,GAAUrrwC,EAAS2c,EAAO,GAC1B2uvC,GAAU3uvC,EAAO3c,EAAS,IAEzBiywC,GAAcp4tC,EAAO0vuC,GAAY/luC,EAAW,GAAI7mC,GAAO,EAChE,CAgBA,SAASw0H,GAAQt3F,GAEf,OADsB,MAATA,GAAoBA,EAAM75C,OACvBwxwC,GAAY33tC,EAAO,GAAK,EAC1C,CA+FA,SAAS6M,GAAK7M,GACZ,OAAQA,GAASA,EAAM75C,OAAU65C,EAAM,GAAKnM,CAC9C,CAyEA,IAAImvJ,GAAe47kC,IAAS,SAASzwV,GACnC,IAAI42V,EAASjO,GAAS3oV,EAAQ22V,IAC9B,OAAQC,EAAO5+wC,QAAU4+wC,EAAO,KAAO52V,EAAO,GAC1C02V,GAAiBE,GACjB,EACN,IAyBI2R,GAAiB9X,IAAS,SAASzwV,GACrC,IAAIkmV,EAAW5pvC,GAAK0j6B,GAChB42V,EAASjO,GAAS3oV,EAAQ22V,IAO9B,OALIzQ,IAAa5pvC,GAAKs6vC,GACpB1Q,EAAWxguC,EAEXkxuC,EAAOr9wC,MAEDq9wC,EAAO5+wC,QAAU4+wC,EAAO,KAAO52V,EAAO,GAC1C02V,GAAiBE,EAAQ2K,GAAYrb,EAAU,IAC/C,EACN,IAuBIsiB,GAAmB/X,IAAS,SAASzwV,GACvC,IAAItvc,EAAap0d,GAAK0j6B,GAClB42V,EAASjO,GAAS3oV,EAAQ22V,IAM9B,OAJAjmyB,EAAkC,mBAAdA,EAA2BA,EAAahrc,IAE1DkxuC,EAAOr9wC,MAEDq9wC,EAAO5+wC,QAAU4+wC,EAAO,KAAO52V,EAAO,GAC1C02V,GAAiBE,EAAQlxuC,EAAWgrc,GACpC,EACN,IAmCA,SAASp0d,GAAKu1B,GACZ,IAAI75C,EAAkB,MAAT65C,EAAgB,EAAIA,EAAM75C,OACvC,OAAOA,EAAS65C,EAAM75C,EAAS,GAAK0tC,CACtC,CAsFA,IAAI+ivC,GAAOhY,GAASiY,IAsBpB,SAASA,GAAQ72uC,EAAOx9B,GACtB,OAAQw9B,GAASA,EAAM75C,QAAUqc,GAAUA,EAAOrc,OAC9CwpxC,GAAY3vuC,EAAOx9B,GACnBw9B,CACN,CAoFA,IAAI82uC,GAAShE,IAAS,SAAS9yuC,EAAO09S,GACpC,IAAIv3V,EAAkB,MAAT65C,EAAgB,EAAIA,EAAM75C,OACnCmjB,EAASmlwC,GAAOzuuC,EAAO09S,GAM3B,OAJAky7B,GAAW5vuC,EAAO82tC,GAASp56B,GAAS,SAAS56U,GAC3C,OAAO4xvC,GAAQ5xvC,EAAO3c,IAAW2c,EAAQA,CAC3C,IAAGuvB,KAAK+ruC,KAED90vC,CACT,IA0EA,SAAS82C,GAAQpgB,GACf,OAAgB,MAATA,EAAgBA,EAAQ+suC,GAAcrnxC,KAAKs6C,EACpD,CAiaA,IAAI8oI,GAAQ81lC,IAAS,SAASzwV,GAC5B,OAAOyiW,GAASjZ,GAAYxpV,EAAQ,EAAGytV,IAAmB,GAC5D,IAyBImb,GAAUnY,IAAS,SAASzwV,GAC9B,IAAIkmV,EAAW5pvC,GAAK0j6B,GAIpB,OAHIytV,GAAkBvH,KACpBA,EAAWxguC,GAEN+8uC,GAASjZ,GAAYxpV,EAAQ,EAAGytV,IAAmB,GAAO8T,GAAYrb,EAAU,GACzF,IAuBI2iB,GAAYpY,IAAS,SAASzwV,GAChC,IAAItvc,EAAap0d,GAAK0j6B,GAEtB,OADAtvc,EAAkC,mBAAdA,EAA2BA,EAAahrc,EACrD+8uC,GAASjZ,GAAYxpV,EAAQ,EAAGytV,IAAmB,GAAO/nuC,EAAWgrc,EAC9E,IA+FA,SAASo4yB,GAAMj3uC,GACb,IAAMA,IAASA,EAAM75C,OACnB,MAAO,GAET,IAAIA,EAAS,EAOb,OANA65C,EAAQ0guC,GAAY1guC,GAAO,SAASkhR,GAClC,GAAI068B,GAAkB168B,GAEpB,OADA/6T,EAASqrwC,GAAUtw8B,EAAM/6T,OAAQA,IAC1B,CAEX,IACOquwC,GAAUruwC,GAAQ,SAAS2c,GAChC,OAAOg0vC,GAAS92tC,EAAO+quC,GAAajowC,GACtC,GACF,CAuBA,SAASo0wC,GAAUl3uC,EAAOq0tC,GACxB,IAAMr0tC,IAASA,EAAM75C,OACnB,MAAO,GAET,IAAImjB,EAAS2twC,GAAMj3uC,GACnB,OAAgB,MAAZq0tC,EACK/qvC,EAEFwtvC,GAASxtvC,GAAQ,SAAS43S,GAC/B,OAAO76T,GAAMguwC,EAAUxguC,EAAWqtR,EACpC,GACF,CAsBA,IAAIi29B,GAAUvY,IAAS,SAAS5+tC,EAAOx9B,GACrC,OAAOo5vC,GAAkB57tC,GACrB0kuC,GAAe1kuC,EAAOx9B,GACtB,EACN,IAoBIk2M,GAAMkmjC,IAAS,SAASzwV,GAC1B,OAAO8iW,GAAQvQ,GAAYvyV,EAAQytV,IACrC,IAyBIwb,GAAQxY,IAAS,SAASzwV,GAC5B,IAAIkmV,EAAW5pvC,GAAK0j6B,GAIpB,OAHIytV,GAAkBvH,KACpBA,EAAWxguC,GAENo9uC,GAAQvQ,GAAYvyV,EAAQytV,IAAoB8T,GAAYrb,EAAU,GAC/E,IAuBIgjB,GAAUzY,IAAS,SAASzwV,GAC9B,IAAItvc,EAAap0d,GAAK0j6B,GAEtB,OADAtvc,EAAkC,mBAAdA,EAA2BA,EAAahrc,EACrDo9uC,GAAQvQ,GAAYvyV,EAAQytV,IAAoB/nuC,EAAWgrc,EACpE,IAkBIy4yB,GAAM1Y,GAASqY,IA6DfM,GAAU3Y,IAAS,SAASzwV,GAC9B,IAAIho7B,EAASgo7B,EAAOho7B,OAChBkuwC,EAAWluwC,EAAS,EAAIgo7B,EAAOho7B,EAAS,GAAK0tC,EAGjD,OADAwguC,EAA8B,mBAAZA,GAA0BlmV,EAAOzm7B,MAAO2swC,GAAYxguC,EAC/DqjvC,GAAU/oW,EAAQkmV,EAC3B,IAiCA,SAAS/vV,GAAMr96B,GACb,IAAIqiB,EAAS4jwC,GAAOjmxC,GAEpB,OADAqiB,EAAOokwC,WAAY,EACZpkwC,CACT,CAqDA,SAAS0pwC,GAAK/rxC,EAAOs96B,GACnB,OAAOA,EAAYt96B,EACrB,CAkBA,IAAIuwxC,GAAY1E,IAAS,SAASzuiC,GAChC,IAAIl+O,EAASk+O,EAAMl+O,OACfmmC,EAAQnmC,EAASk+O,EAAM,GAAK,EAC5Bp9O,EAAQnB,KAAK0nxC,YACbjpW,EAAc,SAASrh4B,GAAU,OAAOuruC,GAAOvruC,EAAQmhM,EAAQ,EAEnE,QAAIl+O,EAAS,GAAKL,KAAK2nxC,YAAYtnxC,SAC7Bc,aAAiBkmxC,IAAiBzY,GAAQpouC,KAGhDrlC,EAAQA,EAAMY,MAAMykC,GAAQA,GAASnmC,EAAS,EAAI,KAC5CsnxC,YAAY9lxC,KAAK,CACrB,KAAQqrxC,GACR,KAAQ,CAACzuW,GACT,QAAW1w4B,IAEN,IAAIu5uC,GAAcnmxC,EAAOnB,KAAK4nxC,WAAWsF,MAAK,SAAShzuC,GAI5D,OAHI75C,IAAW65C,EAAM75C,QACnB65C,EAAMr4C,KAAKksC,GAENmM,CACT,KAbSl6C,KAAKktxC,KAAKzuW,EAcrB,IAiPIkzW,GAAUtF,IAAiB,SAAS7owC,EAAQriB,EAAO0jB,GACjDllB,GAAeC,KAAK4jB,EAAQqB,KAC5BrB,EAAOqB,GAEToqvC,GAAgBzrvC,EAAQqB,EAAK,EAEjC,IAqII6hB,GAAOmmvC,GAAWvmrC,IAqBlB1iD,GAAWipuC,GAAW8D,IA2G1B,SAASzrwC,GAAQi5O,EAAYowgC,GAE3B,OADW58vC,GAAQwsP,GAAckxgC,GAAYmC,IACjCrzgC,EAAYyrhC,GAAYrb,EAAU,GAChD,CAsBA,SAASqjB,GAAazzhC,EAAYowgC,GAEhC,OADW58vC,GAAQwsP,GAAcwmhC,GAAiBoE,IACtC5qhC,EAAYyrhC,GAAYrb,EAAU,GAChD,CAyBA,IAAIsjB,GAAUxF,IAAiB,SAAS7owC,EAAQriB,EAAO0jB,GACjDllB,GAAeC,KAAK4jB,EAAQqB,GAC9BrB,EAAOqB,GAAKhjB,KAAKV,GAEjB8twC,GAAgBzrvC,EAAQqB,EAAK,CAAC1jB,GAElC,IAoEI2wxC,GAAYhZ,IAAS,SAAS36gC,EAAY9nO,EAAMghB,GAClD,IAAIr6B,GAAS,EACT0zvC,EAAwB,mBAARr6uC,EAChB7S,EAASum7B,GAAY5rsB,GAAc1+P,EAAM0+P,EAAW99P,QAAU,GAKlE,OAHAmxwC,GAASrzgC,GAAY,SAASh9P,GAC5BqiB,IAASxG,GAAS0zvC,EAASnwwC,GAAM81B,EAAMl1B,EAAOk2C,GAAQmyuC,GAAWroxC,EAAOk1B,EAAMghB,EAChF,IACO7zB,CACT,IA8BIuuwC,GAAQ1F,IAAiB,SAAS7owC,EAAQriB,EAAO0jB,GACnDoqvC,GAAgBzrvC,EAAQqB,EAAK1jB,EAC/B,IA4CA,SAASkuB,GAAI8uO,EAAYowgC,GAEvB,OADW58vC,GAAQwsP,GAAc6ygC,GAAWoF,IAChCj4gC,EAAYyrhC,GAAYrb,EAAU,GAChD,CAiFA,IAAI70b,GAAY2yc,IAAiB,SAAS7owC,EAAQriB,EAAO0jB,GACvDrB,EAAOqB,EAAM,EAAI,GAAGhjB,KAAKV,EAC3B,IAAG,WAAa,MAAO,CAAC,GAAI,GAAK,IAmS7B6wxC,GAASlZ,IAAS,SAAS36gC,EAAYo4gC,GACzC,GAAkB,MAAdp4gC,EACF,MAAO,GAET,IAAI99P,EAASk2wC,EAAUl2wC,OAMvB,OALIA,EAAS,GAAK04wC,GAAe56gC,EAAYo4gC,EAAU,GAAIA,EAAU,IACnEA,EAAY,GACHl2wC,EAAS,GAAK04wC,GAAexC,EAAU,GAAIA,EAAU,GAAIA,EAAU,MAC5EA,EAAY,CAACA,EAAU,KAElBoT,GAAYxrhC,EAAY0zgC,GAAY0E,EAAW,GAAI,GAC5D,IAoBI9qvC,GAAMi7vC,IAAU,WAClB,OAAOv2nC,GAAK3kI,KAAKC,KACnB,EAyDA,SAASiiwC,GAAI3tuC,EAAM1gD,EAAG88pB,GAGpB,OAFA98pB,EAAI88pB,EAAQpunB,EAAY1uC,EACxBA,EAAK0gD,GAAa,MAAL1gD,EAAa0gD,EAAK1/C,OAAShB,EACjCowxC,GAAW1vuC,EAAMkguC,EAAelyuC,EAAWA,EAAWA,EAAWA,EAAW1uC,EACrF,CAmBA,SAASk7P,GAAOl7P,EAAG0gD,GACjB,IAAIv8B,EACJ,GAAmB,mBAARu8B,EACT,MAAM,IAAIlgD,GAAUkrwC,GAGtB,OADA1rwC,EAAI037B,GAAU137B,GACP,WAOL,QANMA,EAAI,IACRmkB,EAASu8B,EAAKx/C,MAAMP,KAAMI,YAExBf,GAAK,IACP0gD,EAAOhS,GAEFvqB,CACT,CACF,CAqCA,IAAIngB,GAAOy1wC,IAAS,SAAS/4tC,EAAMkiW,EAASyp4B,GAC1C,IAAIpb,EAr6Ta,EAs6TjB,GAAIob,EAASrrxC,OAAQ,CACnB,IAAIsrxC,EAAU3F,GAAe0F,EAAUqC,GAAU1qxC,KACjDitwC,GAAW0P,CACb,CACA,OAAOyP,GAAW1vuC,EAAMuwtC,EAASru3B,EAASyp4B,EAAUC,EACtD,IA+CIsG,GAAUnZ,IAAS,SAAS17tC,EAAQv4B,EAAK6mwC,GAC3C,IAAIpb,EAAU4hB,EACd,GAAIxG,EAASrrxC,OAAQ,CACnB,IAAIsrxC,EAAU3F,GAAe0F,EAAUqC,GAAUkE,KACjD3hB,GAAW0P,CACb,CACA,OAAOyP,GAAW5qwC,EAAKyrvC,EAASlztC,EAAQsuuC,EAAUC,EACpD,IAqJA,SAASxrvC,GAAS4f,EAAMqC,EAAMj5B,GAC5B,IAAI0ivC,EACAC,EACAC,EACAvovC,EACA2tS,EACA668B,EACAC,EAAiB,EACjB3ptC,GAAU,EACV4ptC,GAAS,EACT1ptC,GAAW,EAEf,GAAmB,mBAARzC,EACT,MAAM,IAAIlgD,GAAUkrwC,GAUtB,SAASoB,EAAWtmtC,GAClB,IAAIxO,EAAOw0tC,EACP5p3B,EAAU6p3B,EAKd,OAHAD,EAAWC,EAAW/9tC,EACtBk+tC,EAAiBpmtC,EACjBriC,EAASu8B,EAAKx/C,MAAM0hZ,EAAS5qW,EAE/B,CAqBA,SAAS+0tC,EAAavmtC,GACpB,IAAIwmtC,EAAoBxmtC,EAAOmmtC,EAM/B,OAAQA,IAAiBj+tC,GAAcs+tC,GAAqBjqtC,GACzDiqtC,EAAoB,GAAOH,GANJrmtC,EAAOomtC,GAM8BF,CACjE,CAEA,SAASO,IACP,IAAIzmtC,EAAOp6B,KACX,GAAI2gvC,EAAavmtC,GACf,OAAO0mtC,EAAa1mtC,GAGtBsrQ,EAAUtrS,GAAWymvC,EA3BvB,SAAuBzmtC,GACrB,IAEI84tC,EAAcv8tC,GAFMyD,EAAOmmtC,GAI/B,OAAOE,EACHP,GAAUgT,EAAa5S,GAJDlmtC,EAAOomtC,IAK7B0S,CACN,CAmBqCnS,CAAc3mtC,GACnD,CAEA,SAAS0mtC,EAAa1mtC,GAKpB,OAJAsrQ,EAAUpjR,EAINyU,GAAYqptC,EACPM,EAAWtmtC,IAEpBgmtC,EAAWC,EAAW/9tC,EACfvqB,EACT,CAcA,SAASipvC,IACP,IAAI5mtC,EAAOp6B,KACPihvC,EAAaN,EAAavmtC,GAM9B,GAJAgmtC,EAAWzrwC,UACX0rwC,EAAW9rwC,KACXgswC,EAAenmtC,EAEX6mtC,EAAY,CACd,GAAIv78B,IAAYpjR,EACd,OAzEN,SAAqB8X,GAMnB,OAJAomtC,EAAiBpmtC,EAEjBsrQ,EAAUtrS,GAAWymvC,EAAclqtC,GAE5BE,EAAU6ptC,EAAWtmtC,GAAQriC,CACtC,CAkEampvC,CAAYX,GAErB,GAAIE,EAIF,OAFAx/uC,GAAaykS,GACbA,EAAUtrS,GAAWymvC,EAAclqtC,GAC5B+ptC,EAAWH,EAEtB,CAIA,OAHI768B,IAAYpjR,IACdojR,EAAUtrS,GAAWymvC,EAAclqtC,IAE9B5+B,CACT,CAGA,OA3GA4+B,EAAO8sK,GAAS9sK,IAAS,EACrB6iN,GAAS97O,KACXm5B,IAAYn5B,EAAQm5B,QAEpByptC,GADAG,EAAS,YAAa/ivC,GACHuivC,GAAUx8iC,GAAS/lM,EAAQ4ivC,UAAY,EAAG3ptC,GAAQ2ptC,EACrEvptC,EAAW,aAAcr5B,IAAYA,EAAQq5B,SAAWA,GAoG1DiqtC,EAAU5ptC,OApCV,WACMsuQ,IAAYpjR,GACdrhB,GAAaykS,GAEf868B,EAAiB,EACjBJ,EAAWG,EAAeF,EAAW368B,EAAUpjR,CACjD,EA+BA0+tC,EAAUlksC,MA7BV,WACE,OAAO4oP,IAAYpjR,EAAYvqB,EAAS+ovC,EAAa9gvC,KACvD,EA4BOghvC,CACT,CAoBA,IAAI0lB,GAAQrZ,IAAS,SAAS/4tC,EAAM1I,GAClC,OAAOwxuC,GAAU9ouC,EAAM,EAAG1I,EAC5B,IAqBI8J,GAAQ23tC,IAAS,SAAS/4tC,EAAMqC,EAAM/K,GACxC,OAAOwxuC,GAAU9ouC,EAAMmvK,GAAS9sK,IAAS,EAAG/K,EAC9C,IAoEA,SAASqvF,GAAQ3mF,EAAMi6G,GACrB,GAAmB,mBAARj6G,GAAmC,MAAZi6G,GAAuC,mBAAZA,EAC3D,MAAM,IAAIn6J,GAAUkrwC,GAEtB,IAAIqnB,EAAW,WACb,IAAI/6uC,EAAOj3C,UACPykB,EAAMm1I,EAAWA,EAASz5J,MAAMP,KAAMq3C,GAAQA,EAAK,GACnDnkB,EAAQk/vC,EAASl/vC,MAErB,GAAIA,EAAMnnB,IAAI8Y,GACZ,OAAOqO,EAAM/vB,IAAI0hB,GAEnB,IAAIrB,EAASu8B,EAAKx/C,MAAMP,KAAMq3C,GAE9B,OADA+6uC,EAASl/vC,MAAQA,EAAMjnB,IAAI4Y,EAAKrB,IAAW0P,EACpC1P,CACT,EAEA,OADA4uwC,EAASl/vC,MAAQ,IAAKwzG,GAAQ2rpC,OAASzkB,IAChCwkB,CACT,CAyBA,SAAS5gqC,GAAO3tE,GACd,GAAwB,mBAAbA,EACT,MAAM,IAAIhkD,GAAUkrwC,GAEtB,OAAO,WACL,IAAI1ztC,EAAOj3C,UACX,OAAQi3C,EAAKh3C,QACX,KAAK,EAAG,OAAQwjD,EAAUjkD,KAAKI,MAC/B,KAAK,EAAG,OAAQ6jD,EAAUjkD,KAAKI,KAAMq3C,EAAK,IAC1C,KAAK,EAAG,OAAQwM,EAAUjkD,KAAKI,KAAMq3C,EAAK,GAAIA,EAAK,IACnD,KAAK,EAAG,OAAQwM,EAAUjkD,KAAKI,KAAMq3C,EAAK,GAAIA,EAAK,GAAIA,EAAK,IAE9D,OAAQwM,EAAUtjD,MAAMP,KAAMq3C,EAChC,CACF,CApCAqvF,GAAQ2rpC,MAAQzkB,GA2FhB,IAAI0kB,GAAW9G,IAAS,SAASzruC,EAAM2wN,GAKrC,IAAI6hhC,GAJJ7hhC,EAAmC,GAArBA,EAAWrwQ,QAAesR,GAAQ++P,EAAW,IACvDsggC,GAAStggC,EAAW,GAAIuggC,GAAU2Y,OAClC5Y,GAASa,GAAYnhgC,EAAY,GAAIuggC,GAAU2Y,QAEtBvpxC,OAC7B,OAAOy4wC,IAAS,SAASzhuC,GAIvB,IAHA,IAAIr6B,GAAS,EACT3c,EAASsrwC,GAAUt0tC,EAAKh3C,OAAQkyxC,KAE3Bv1wC,EAAQ3c,GACfg3C,EAAKr6B,GAAS0zP,EAAW1zP,GAAOpd,KAAKI,KAAMq3C,EAAKr6B,IAElD,OAAOzc,GAAMw/C,EAAM//C,KAAMq3C,EAC3B,GACF,IAmCIimB,GAAUw7sC,IAAS,SAAS/4tC,EAAM2ruC,GACpC,IAAIC,EAAU3F,GAAe0F,EAAUqC,GAAUzwtC,KACjD,OAAOmytC,GAAW1vuC,EAAMiguC,EAAmBjyuC,EAAW29uC,EAAUC,EAClE,IAkCI6G,GAAe1Z,IAAS,SAAS/4tC,EAAM2ruC,GACzC,IAAIC,EAAU3F,GAAe0F,EAAUqC,GAAUyE,KACjD,OAAO/C,GAAW1vuC,EAriVQ,GAqiVuBhS,EAAW29uC,EAAUC,EACxE,IAwBI8G,GAAQzF,IAAS,SAASjtuC,EAAM63S,GAClC,OAAO637B,GAAW1vuC,EA7jVA,IA6jVuBhS,EAAWA,EAAWA,EAAW6pT,EAC5E,IAgaA,SAASxoI,GAAGjuN,EAAO06C,GACjB,OAAO16C,IAAU06C,GAAU16C,GAAUA,GAAS06C,GAAUA,CAC1D,CAyBA,IAAIxuC,GAAK6hxC,GAA0B5F,IAyB/B34jC,GAAMu+jC,IAA0B,SAAS/txC,EAAO06C,GAClD,OAAO16C,GAAS06C,CAClB,IAoBI8ytC,GAAcuQ,GAAgB,WAAa,OAAO9+wC,SAAW,CAA/B,IAAsC8+wC,GAAkB,SAAS/9wC,GACjG,OAAOi4uC,GAAaj4uC,IAAUxB,GAAeC,KAAKuB,EAAO,YACtDT,GAAqBd,KAAKuB,EAAO,SACtC,EAyBIwQ,GAAUlS,EAAMkS,QAmBhB26P,GAAgBi4gC,GAAoBtT,GAAUsT,IAv7PlD,SAA2BpjxC,GACzB,OAAOi4uC,GAAaj4uC,IAAUyxwC,GAAWzxwC,IAAUy/wC,CACrD,EAg9PA,SAAS72U,GAAY5o8B,GACnB,OAAgB,MAATA,GAAiBuzwC,GAASvzwC,EAAMd,UAAY2kQ,GAAW7jQ,EAChE,CA2BA,SAAS20wC,GAAkB30wC,GACzB,OAAOi4uC,GAAaj4uC,IAAU4o8B,GAAY5o8B,EAC5C,CAyCA,IAAIokQ,GAAWshhC,IAAkB1H,GAmB7B9qgC,GAASmwgC,GAAavT,GAAUuT,IAliQpC,SAAoBrjxC,GAClB,OAAOi4uC,GAAaj4uC,IAAUyxwC,GAAWzxwC,IAAUm/wC,CACrD,EAwsQA,SAAS7tuC,GAAQtxC,GACf,IAAKi4uC,GAAaj4uC,GAChB,OAAO,EAET,IAAIiW,EAAMw7vC,GAAWzxwC,GACrB,OAAOiW,GAAOmpwC,GA50WF,yBA40WcnpwC,GACC,iBAAjBjW,EAAM4wB,SAA4C,iBAAd5wB,EAAMuJ,OAAqBo3J,GAAc3gK,EACzF,CAiDA,SAAS6jQ,GAAW7jQ,GAClB,IAAK8jQ,GAAS9jQ,GACZ,OAAO,EAIT,IAAIiW,EAAMw7vC,GAAWzxwC,GACrB,OAAOiW,GAAO84vC,GAAW94vC,GAAOopwC,GAz4WrB,0BAy4W+BppwC,GA73W/B,kBA63WkDA,CAC/D,CA4BA,SAAS+yI,GAAUhpJ,GACjB,MAAuB,iBAATA,GAAqBA,GAAS417B,GAAU517B,EACxD,CA4BA,SAASuzwC,GAASvzwC,GAChB,MAAuB,iBAATA,GACZA,GAAS,GAAKA,EAAQ,GAAK,GAAKA,GAASkkC,CAC7C,CA2BA,SAAS4/N,GAAS9jQ,GAChB,IAAIoL,SAAcpL,EAClB,OAAgB,MAATA,IAA0B,UAARoL,GAA4B,YAARA,EAC/C,CA0BA,SAAS6suC,GAAaj4uC,GACpB,OAAgB,MAATA,GAAiC,iBAATA,CACjC,CAmBA,IAAIk0Q,GAAQiqgC,GAAYrO,GAAUqO,IAtzQlC,SAAmBn+wC,GACjB,OAAOi4uC,GAAaj4uC,IAAU42uC,GAAO52uC,IAAU45wC,CACjD,EAsgRA,SAASz3tC,GAASniD,GAChB,MAAuB,iBAATA,GACXi4uC,GAAaj4uC,IAAUyxwC,GAAWzxwC,IAAUs/wC,CACjD,CA8BA,SAAS3+mC,GAAc3gK,GACrB,IAAKi4uC,GAAaj4uC,IAAUyxwC,GAAWzxwC,IAAUgvwC,EAC/C,OAAO,EAET,IAAI3+vC,EAAQ+owC,GAAap5wC,GACzB,GAAc,OAAVqQ,EACF,OAAO,EAET,IAAIw37B,EAAOrp8B,GAAeC,KAAK4R,EAAO,gBAAkBA,EAAMvR,YAC9D,MAAsB,mBAAR+o8B,GAAsBA,aAAgBA,GAClDwrU,GAAa50wC,KAAKop8B,IAASu2U,EAC/B,CAmBA,IAAIn1U,GAAWq6U,GAAexT,GAAUwT,IAt/QxC,SAAsBtjxC,GACpB,OAAOi4uC,GAAaj4uC,IAAUyxwC,GAAWzxwC,IAAUu/wC,CACrD,EAsiRI93F,GAAQ62F,GAAYxO,GAAUwO,IA7hRlC,SAAmBt+wC,GACjB,OAAOi4uC,GAAaj4uC,IAAU42uC,GAAO52uC,IAAU85wC,CACjD,EA8iRA,SAASjgtC,GAAS75D,GAChB,MAAuB,iBAATA,IACVwQ,GAAQxQ,IAAUi4uC,GAAaj4uC,IAAUyxwC,GAAWzxwC,IAAUw/wC,CACpE,CAmBA,SAAS/U,GAASzqwC,GAChB,MAAuB,iBAATA,GACXi4uC,GAAaj4uC,IAAUyxwC,GAAWzxwC,IAAU8pwC,CACjD,CAmBA,IAAIhqvC,GAAe0+vC,GAAmB1O,GAAU0O,IAjlRhD,SAA0Bx+wC,GACxB,OAAOi4uC,GAAaj4uC,IAClBuzwC,GAASvzwC,EAAMd,WAAas0wC,GAAe/B,GAAWzxwC,GAC1D,EAsqRIyK,GAAKsjxC,GAA0BzF,IAyB/Bj5jC,GAAM0+jC,IAA0B,SAAS/txC,EAAO06C,GAClD,OAAO16C,GAAS06C,CAClB,IAyBA,SAASgyE,GAAQ1sH,GACf,IAAKA,EACH,MAAO,GAET,GAAI4o8B,GAAY5o8B,GACd,OAAO65D,GAAS75D,GAASo6sB,GAAcp6sB,GAASsuwC,GAAUtuwC,GAE5D,GAAIqlxC,IAAerlxC,EAAMqlxC,IACvB,OAr+VN,SAAyB7kxC,GAIvB,IAHA,IAAI6N,EACAgU,EAAS,KAEJhU,EAAO7N,EAASZ,QAAQG,MAC/BsiB,EAAO3hB,KAAK2N,EAAKrO,OAEnB,OAAOqiB,CACT,CA69VakvwC,CAAgBvxxC,EAAMqlxC,OAE/B,IAAIpvwC,EAAM2guC,GAAO52uC,GAGjB,OAFWiW,GAAO2jwC,EAAS9mD,GAAc78sC,GAAO6jwC,EAAS7D,GAAa16vC,IAE1Dvb,EACd,CAyBA,SAAS6txC,GAAS7txC,GAChB,OAAKA,GAGLA,EAAQ+tN,GAAS/tN,MACH++wC,GAAY/+wC,KAAU,IAtmYtB,uBAumYAA,EAAQ,GAAK,EAAI,GAGxBA,GAAUA,EAAQA,EAAQ,EAPd,IAAVA,EAAcA,EAAQ,CAQjC,CA4BA,SAAS417B,GAAU517B,GACjB,IAAIqiB,EAASwrwC,GAAS7txC,GAClBw/8B,EAAYn97B,EAAS,EAEzB,OAAOA,GAAWA,EAAUm97B,EAAYn97B,EAASm97B,EAAYn97B,EAAU,CACzE,CA6BA,SAAS+lH,GAASpoI,GAChB,OAAOA,EAAQqnxC,GAAUzxV,GAAU517B,GAAQ,EAAGg/wC,GAAoB,CACpE,CAyBA,SAASjxjC,GAAS/tN,GAChB,GAAoB,iBAATA,EACT,OAAOA,EAET,GAAIyqwC,GAASzqwC,GACX,OAAO6pwC,EAET,GAAI/lgC,GAAS9jQ,GAAQ,CACnB,IAAI06C,EAAgC,mBAAjB16C,EAAM+H,QAAwB/H,EAAM+H,UAAY/H,EACnEA,EAAQ8jQ,GAASppN,GAAUA,EAAQ,GAAMA,CAC3C,CACA,GAAoB,iBAAT16C,EACT,OAAiB,IAAVA,EAAcA,GAASA,EAEhCA,EAAQqkxC,GAASrkxC,GACjB,IAAI0yQ,EAAWu3/B,GAAW//vC,KAAKlK,GAC/B,OAAQ0yQ,GAAYw3/B,GAAUhgwC,KAAKlK,GAC/BmqwC,GAAanqwC,EAAMY,MAAM,GAAI8xQ,EAAW,EAAI,GAC3Cs3/B,GAAW9/vC,KAAKlK,GAAS6pwC,GAAO7pwC,CACvC,CA0BA,SAAS40wC,GAAc50wC,GACrB,OAAOguwC,GAAWhuwC,EAAOiuwC,GAAOjuwC,GAClC,CAqDA,SAASoD,GAASpD,GAChB,OAAgB,MAATA,EAAgB,GAAKk4uC,GAAal4uC,EAC3C,CAoCA,IAAIhB,GAASosxC,IAAe,SAASnvuC,EAAQv1C,GAC3C,GAAIitwC,GAAYjtwC,IAAWki8B,GAAYli8B,GACrCsnwC,GAAWtnwC,EAAQyL,GAAKzL,GAASu1C,QAGnC,IAAK,IAAIv4B,KAAOhd,EACVlI,GAAeC,KAAKiI,EAAQgd,IAC9B605B,GAAYt83B,EAAQv4B,EAAKhd,EAAOgd,GAGtC,IAiCI8twC,GAAWpG,IAAe,SAASnvuC,EAAQv1C,GAC7CsnwC,GAAWtnwC,EAAQunwC,GAAOvnwC,GAASu1C,EACrC,IA+BIw1uC,GAAerG,IAAe,SAASnvuC,EAAQv1C,EAAQ+twC,EAAUrF,GACnEpB,GAAWtnwC,EAAQunwC,GAAOvnwC,GAASu1C,EAAQmztC,EAC7C,IA8BIsiB,GAAatG,IAAe,SAASnvuC,EAAQv1C,EAAQ+twC,EAAUrF,GACjEpB,GAAWtnwC,EAAQyL,GAAKzL,GAASu1C,EAAQmztC,EAC3C,IAmBI/kwC,GAAKwhxC,GAASrE,IA8Dd338B,GAAW8n8B,IAAS,SAAS17tC,EAAQxC,GACvCwC,EAAS99C,GAAO89C,GAEhB,IAAIpgC,GAAS,EACT3c,EAASu6C,EAAQv6C,OACjB87pB,EAAQ97pB,EAAS,EAAIu6C,EAAQ,GAAK7M,EAMtC,IAJIounB,GAAS48mB,GAAen+tC,EAAQ,GAAIA,EAAQ,GAAIuhnB,KAClD97pB,EAAS,KAGF2c,EAAQ3c,GAMf,IALA,IAAIwH,EAAS+yC,EAAQ59B,GACjBiwB,EAAQmiuC,GAAOvnwC,GACfirxC,GAAc,EACdC,EAAc9lvC,EAAM5sC,SAEfyyxC,EAAaC,GAAa,CACjC,IAAIluwC,EAAMooB,EAAM6lvC,GACZ3xxC,EAAQi8C,EAAOv4B,IAEf1jB,IAAU4sC,GACTqhL,GAAGjuN,EAAOozwC,GAAY1vvC,MAAUllB,GAAeC,KAAKw9C,EAAQv4B,MAC/Du4B,EAAOv4B,GAAOhd,EAAOgd,GAEzB,CAGF,OAAOu4B,CACT,IAqBI41uC,GAAela,IAAS,SAASzhuC,GAEnC,OADAA,EAAKx1C,KAAKksC,EAAWmivC,IACd3vxC,GAAM0yxC,GAAWllvC,EAAWsJ,EACrC,IA+RA,SAASl0C,GAAIi6C,EAAQ/mB,EAAM8mG,GACzB,IAAI35G,EAAmB,MAAV45B,EAAiBrP,EAAYmouC,GAAQ94tC,EAAQ/mB,GAC1D,OAAO7S,IAAWuqB,EAAYovF,EAAe35G,CAC/C,CA2DA,SAAS6xvC,GAAMj4tC,EAAQ/mB,GACrB,OAAiB,MAAV+mB,GAAkB+u8B,GAAQ/u8B,EAAQ/mB,EAAMyovC,GACjD,CAoBA,IAAIlgnC,GAAS0vnC,IAAe,SAAS9qwC,EAAQriB,EAAO0jB,GACrC,MAAT1jB,GACyB,mBAAlBA,EAAMoD,WACfpD,EAAQs5wC,GAAqB76wC,KAAKuB,IAGpCqiB,EAAOriB,GAAS0jB,CAClB,GAAGo5G,GAASusD,KA4BR0omC,GAAW5E,IAAe,SAAS9qwC,EAAQriB,EAAO0jB,GACvC,MAAT1jB,GACyB,mBAAlBA,EAAMoD,WACfpD,EAAQs5wC,GAAqB76wC,KAAKuB,IAGhCxB,GAAeC,KAAK4jB,EAAQriB,GAC9BqiB,EAAOriB,GAAOU,KAAKgjB,GAEnBrB,EAAOriB,GAAS,CAAC0jB,EAErB,GAAG+kwC,IAoBCuJ,GAASra,GAAS0Q,IA8BtB,SAASl2wC,GAAK8pC,GACZ,OAAO2s5B,GAAY3s5B,GAAUwiuC,GAAcxiuC,GAAUgiuC,GAAShiuC,EAChE,CAyBA,SAASgytC,GAAOhytC,GACd,OAAO2s5B,GAAY3s5B,GAAUwiuC,GAAcxiuC,GAAQ,GA5pTrD,SAAoBA,GAClB,IAAK6nN,GAAS7nN,GACZ,OAo/FJ,SAAsBA,GACpB,IAAI55B,EAAS,GACb,GAAc,MAAV45B,EACF,IAAK,IAAIv4B,KAAOvlB,GAAO89C,GACrB55B,EAAO3hB,KAAKgjB,GAGhB,OAAOrB,CACT,CA5/FWwxvC,CAAa53tC,GAEtB,IAAI63tC,EAAUH,GAAY13tC,GACtB55B,EAAS,GAEb,IAAK,IAAIqB,KAAOu4B,GACD,eAAPv4B,IAAyBowvC,GAAYt1wC,GAAeC,KAAKw9C,EAAQv4B,KACrErB,EAAO3hB,KAAKgjB,GAGhB,OAAOrB,CACT,CA+oT6Dq8vC,CAAWziuC,EACxE,CAsGA,IAAI0jN,GAAQyrhC,IAAe,SAASnvuC,EAAQv1C,EAAQ+twC,GAClDD,GAAUv4tC,EAAQv1C,EAAQ+twC,EAC5B,IAiCIqd,GAAY1G,IAAe,SAASnvuC,EAAQv1C,EAAQ+twC,EAAUrF,GAChEoF,GAAUv4tC,EAAQv1C,EAAQ+twC,EAAUrF,EACtC,IAsBI6iB,GAAOpG,IAAS,SAAS5vuC,EAAQmhM,GACnC,IAAI/6N,EAAS,CAAC,EACd,GAAc,MAAV45B,EACF,OAAO55B,EAET,IAAIgtvC,GAAS,EACbjyhC,EAAQyyhC,GAASzyhC,GAAO,SAASloN,GAG/B,OAFAA,EAAO47uC,GAAS57uC,EAAM+mB,GACtBoztC,IAAWA,EAASn6uC,EAAKh2B,OAAS,GAC3Bg2B,CACT,IACA84uC,GAAW/xtC,EAAQyytC,GAAazytC,GAAS55B,GACrCgtvC,IACFhtvC,EAAS6svC,GAAU7svC,EAAQk7vC,EAAwDyR,KAGrF,IADA,IAAI9vxC,EAASk+O,EAAMl+O,OACZA,KACL0pxC,GAAUvmwC,EAAQ+6N,EAAMl+O,IAE1B,OAAOmjB,CACT,IA2CIo1W,GAAOo05B,IAAS,SAAS5vuC,EAAQmhM,GACnC,OAAiB,MAAVnhM,EAAiB,CAAC,EA7nT3B,SAAkBA,EAAQmhM,GACxB,OAAOk4hC,GAAWr5tC,EAAQmhM,GAAO,SAASp9O,EAAOk1B,GAC/C,OAAOg/uC,GAAMj4tC,EAAQ/mB,EACvB,GACF,CAynT+Bg9vC,CAASj2uC,EAAQmhM,EAChD,IAoBA,SAAS+0iC,GAAOl2uC,EAAQyG,GACtB,GAAc,MAAVzG,EACF,MAAO,CAAC,EAEV,IAAInQ,EAAQ+juC,GAASnB,GAAazytC,IAAS,SAASovG,GAClD,MAAO,CAACA,EACV,IAEA,OADA3oG,EAAY+luC,GAAY/luC,GACjB4ytC,GAAWr5tC,EAAQnQ,GAAO,SAAS9rC,EAAOk1B,GAC/C,OAAOwtB,EAAU1iD,EAAOk1B,EAAK,GAC/B,GACF,CA0IA,IAAIk9vC,GAAUhE,GAAcj8wC,IA0BxBkgxC,GAAYjE,GAAcngB,IA4K9B,SAAS1yvC,GAAO0gC,GACd,OAAiB,MAAVA,EAAiB,GAAKqouC,GAAWrouC,EAAQ9pC,GAAK8pC,GACvD,CA0NA,IAAIu8c,GAAY8yxB,IAAiB,SAASjpwC,EAAQo2e,EAAM58e,GAEtD,OADA48e,EAAOA,EAAKrqf,cACLiU,GAAUxG,EAAQimW,GAAW22I,GAAQA,EAC9C,IAiBA,SAAS32I,GAAWlmW,GAClB,OAAOyhwC,GAAWj6wC,GAASwY,GAAQxN,cACrC,CAoBA,SAASm9wC,GAAO3vwC,GAEd,OADAA,EAASxY,GAASwY,KACDA,EAAOtQ,QAAQ81wC,GAASsD,IAAcp5wC,QAAQs3wC,GAAa,GAC9E,CAqHA,IAAI0P,GAAYhH,IAAiB,SAASjpwC,EAAQo2e,EAAM58e,GACtD,OAAOwG,GAAUxG,EAAQ,IAAM,IAAM48e,EAAKrqf,aAC5C,IAsBImkxC,GAAYjH,IAAiB,SAASjpwC,EAAQo2e,EAAM58e,GACtD,OAAOwG,GAAUxG,EAAQ,IAAM,IAAM48e,EAAKrqf,aAC5C,IAmBIokxC,GAAanH,GAAgB,eA0N7BoH,GAAYnH,IAAiB,SAASjpwC,EAAQo2e,EAAM58e,GACtD,OAAOwG,GAAUxG,EAAQ,IAAM,IAAM48e,EAAKrqf,aAC5C,IA+DIskxC,GAAYpH,IAAiB,SAASjpwC,EAAQo2e,EAAM58e,GACtD,OAAOwG,GAAUxG,EAAQ,IAAM,IAAMwhwC,GAAW5kxB,EAClD,IA+iBIk6xB,GAAYrH,IAAiB,SAASjpwC,EAAQo2e,EAAM58e,GACtD,OAAOwG,GAAUxG,EAAQ,IAAM,IAAM48e,EAAKhpc,aAC5C,IAmBI4ttC,GAAagO,GAAgB,eAqBjC,SAAS1o9B,GAAM/mT,EAAQ0+O,EAAS0ga,GAI9B,OAHAp/oB,EAASxY,GAASwY,IAClB0+O,EAAU0ga,EAAQpunB,EAAY0tN,KAEd1tN,EAt1bpB,SAAwBhxB,GACtB,OAAOknwC,GAAiB54wC,KAAK0R,EAC/B,CAq1bag3wC,CAAeh3wC,GA3mb5B,SAAsBA,GACpB,OAAOA,EAAOtW,MAAMu9wC,KAAkB,EACxC,CAymbsCgQ,CAAaj3wC,GA1ucnD,SAAoBA,GAClB,OAAOA,EAAOtW,MAAM27wC,KAAgB,EACtC,CAwuc6D6R,CAAWl3wC,GAE7DA,EAAOtW,MAAMg1P,IAAY,EAClC,CA0BA,IAAIy4hC,GAAUpb,IAAS,SAAS/4tC,EAAM1I,GACpC,IACE,OAAO92C,GAAMw/C,EAAMhS,EAAWsJ,EAChC,CAAE,MAAOl4C,GACP,OAAOszC,GAAQtzC,GAAKA,EAAI,IAAIqoB,GAAMroB,EACpC,CACF,IA4BIg1xC,GAAUnH,IAAS,SAAS5vuC,EAAQstS,GAKtC,OAJA2k7B,GAAU3k7B,GAAa,SAAS7lU,GAC9BA,EAAM4N,GAAM5N,GACZoqvC,GAAgB7xtC,EAAQv4B,EAAKxhB,GAAK+5C,EAAOv4B,GAAMu4B,GACjD,IACOA,CACT,IAoGA,SAAS6gF,GAAS98H,GAChB,OAAO,WACL,OAAOA,CACT,CACF,CAgDA,IAAIizxC,GAAOrH,KAuBPsH,GAAYtH,IAAW,GAkB3B,SAASvimC,GAASrpL,GAChB,OAAOA,CACT,CA4CA,SAASotwC,GAASxutC,GAChB,OAAOo2tC,GAA4B,mBAARp2tC,EAAqBA,EAAOswtC,GAAUtwtC,EAlwe/C,GAmwepB,CAsGA,IAAItvB,GAASqovC,IAAS,SAASzivC,EAAMghB,GACnC,OAAO,SAAS+F,GACd,OAAOosuC,GAAWpsuC,EAAQ/mB,EAAMghB,EAClC,CACF,IAyBIi9uC,GAAWxb,IAAS,SAAS17tC,EAAQ/F,GACvC,OAAO,SAAShhB,GACd,OAAOmzvC,GAAWpsuC,EAAQ/mB,EAAMghB,EAClC,CACF,IAsCA,SAASwy5B,GAAMzs5B,EAAQv1C,EAAQshB,GAC7B,IAAI8jB,EAAQ35B,GAAKzL,GACb6iV,EAAc2+7B,GAAcxhxC,EAAQolC,GAEzB,MAAX9jB,GACE87O,GAASp9P,KAAY6iV,EAAYrqV,SAAW4sC,EAAM5sC,UACtD8oB,EAAUthB,EACVA,EAASu1C,EACTA,EAASp9C,KACT0qV,EAAc2+7B,GAAcxhxC,EAAQyL,GAAKzL,KAE3C,IAAI226B,IAAUv5qB,GAAS97O,IAAY,UAAWA,IAAcA,EAAQq15B,OAChEkyV,EAAS1rgC,GAAW5nN,GAqBxB,OAnBAiytC,GAAU3k7B,GAAa,SAASj2Q,GAC9B,IAAI10B,EAAOl4C,EAAO4sE,GAClBr3B,EAAOq3B,GAAc10B,EACjB2wtC,IACFtztC,EAAO19C,UAAU+0E,GAAc,WAC7B,IAAIgzsC,EAAWznxC,KAAK4nxC,UACpB,GAAIppW,GAASipW,EAAU,CACrB,IAAIjkwC,EAAS45B,EAAOp9C,KAAK0nxC,aAKzB,OAJclkwC,EAAOmkwC,YAAclY,GAAUzvwC,KAAK2nxC,cAE1C9lxC,KAAK,CAAE,KAAQk+C,EAAM,KAAQ3/C,UAAW,QAAWg9C,IAC3D55B,EAAOokwC,UAAYH,EACZjkwC,CACT,CACA,OAAOu8B,EAAKx/C,MAAM68C,EAAQu0tC,GAAU,CAAC3xwC,KAAKmB,SAAUf,WACtD,EAEJ,IAEOg9C,CACT,CAkCA,SAAS0F,KAET,CA+CA,IAAIyxuC,GAAO7F,GAAW1d,IA8BlBwjB,GAAY9F,GAAW9J,IAiCvB6P,GAAW/F,GAAWpV,IAwB1B,SAAS9/tC,GAASnjB,GAChB,OAAOi/uC,GAAMj/uC,GAAQ4uvC,GAAaxyvC,GAAM4D,IA75X1C,SAA0BA,GACxB,OAAO,SAAS+mB,GACd,OAAO84tC,GAAQ94tC,EAAQ/mB,EACzB,CACF,CAy5XmDq+vC,CAAiBr+vC,EACpE,CAsEA,IAAI0rG,GAAQgtpC,KAsCR4F,GAAa5F,IAAY,GAoB7B,SAASlU,KACP,MAAO,EACT,CAeA,SAASsE,KACP,OAAO,CACT,CA8JA,IA2oBMt3wC,GA3oBFsd,GAAMspwC,IAAoB,SAASmG,EAAQ7jkC,GAC7C,OAAO6jkC,EAAS7jkC,CAClB,GAAG,GAuBC3jN,GAAOkixC,GAAY,QAiBnBz9jC,GAAS48jC,IAAoB,SAASoG,EAAUvspC,GAClD,OAAOuspC,EAAWvspC,CACpB,GAAG,GAuBCh7H,GAAQgixC,GAAY,SAwKpB9nkC,GAAWinkC,IAAoB,SAASvlpC,EAAY4rpC,GACtD,OAAO5rpC,EAAa4rpC,CACtB,GAAG,GAuBC7xuC,GAAQqsuC,GAAY,SAiBpBltmC,GAAWqsmC,IAAoB,SAASsG,EAASpjkC,GACnD,OAAOojkC,EAAUpjkC,CACnB,GAAG,GAgmBH,OA1iBAy1jC,GAAO3tuC,MAv7MP,SAAep6C,EAAG0gD,GAChB,GAAmB,mBAARA,EACT,MAAM,IAAIlgD,GAAUkrwC,GAGtB,OADA1rwC,EAAI037B,GAAU137B,GACP,WACL,KAAMA,EAAI,EACR,OAAO0gD,EAAKx/C,MAAMP,KAAMI,UAE5B,CACF,EA86MAgnxC,GAAOsG,IAAMA,GACbtG,GAAOjnxC,OAASA,GAChBinxC,GAAOuL,SAAWA,GAClBvL,GAAOwL,aAAeA,GACtBxL,GAAOyL,WAAaA,GACpBzL,GAAO57wC,GAAKA,GACZ47wC,GAAO7shC,OAASA,GAChB6shC,GAAO/jxC,KAAOA,GACd+jxC,GAAO+M,QAAUA,GACjB/M,GAAO6K,QAAUA,GACjB7K,GAAO4N,UAr9KP,WACE,IAAK50xC,UAAUC,OACb,MAAO,GAET,IAAIc,EAAQf,UAAU,GACtB,OAAOuR,GAAQxQ,GAASA,EAAQ,CAACA,EACnC,EAg9KAimxC,GAAO5oW,MAAQA,GACf4oW,GAAOjhtC,MAvhTP,SAAejsB,EAAOt1B,EAAMu3oB,GAExBv3oB,GADGu3oB,EAAQ48mB,GAAe7+tC,EAAOt1B,EAAMu3oB,GAASv3oB,IAASmpB,GAClD,EAEA29tC,GAAU30U,GAAUny6B,GAAO,GAEpC,IAAIvkB,EAAkB,MAAT65C,EAAgB,EAAIA,EAAM75C,OACvC,IAAKA,GAAUukB,EAAO,EACpB,MAAO,GAMT,IAJA,IAAI5H,EAAQ,EACRwxvC,EAAW,EACXhrvC,EAAS/jB,EAAMg/wC,GAAWp+wC,EAASukB,IAEhC5H,EAAQ3c,GACbmjB,EAAOgrvC,KAAc+I,GAAUr9tC,EAAOl9B,EAAQA,GAAS4H,GAEzD,OAAOpB,CACT,EAsgTA4jwC,GAAOtuB,QAr/SP,SAAiB5+sC,GAMf,IALA,IAAIl9B,GAAS,EACT3c,EAAkB,MAAT65C,EAAgB,EAAIA,EAAM75C,OACnCmuwC,EAAW,EACXhrvC,EAAS,KAEJxG,EAAQ3c,GAAQ,CACvB,IAAIc,EAAQ+4C,EAAMl9B,GACd7b,IACFqiB,EAAOgrvC,KAAcrtwC,EAEzB,CACA,OAAOqiB,CACT,EAy+SA4jwC,GAAOplxC,OAj9SP,WACE,IAAI3B,EAASD,UAAUC,OACvB,IAAKA,EACH,MAAO,GAMT,IAJA,IAAIg3C,EAAO53C,EAAMY,EAAS,GACtB65C,EAAQ95C,UAAU,GAClB4c,EAAQ3c,EAEL2c,KACLq6B,EAAKr6B,EAAQ,GAAK5c,UAAU4c,GAE9B,OAAO20vC,GAAUhgwC,GAAQuoC,GAASu1tC,GAAUv1tC,GAAS,CAACA,GAAQ23tC,GAAYx6tC,EAAM,GAClF,EAq8SA+vuC,GAAO/u2B,KA3tCP,SAAc4k2B,GACZ,IAAI58wC,EAAkB,MAAT48wC,EAAgB,EAAIA,EAAM58wC,OACnCkuxC,EAAa3E,KASjB,OAPA3M,EAAS58wC,EAAc2wwC,GAASiM,GAAO,SAASzixB,GAC9C,GAAsB,mBAAXA,EAAK,GACd,MAAM,IAAI36f,GAAUkrwC,GAEtB,MAAO,CAACwjB,EAAW/zxB,EAAK,IAAKA,EAAK,GACpC,IALkB,GAOXs+wB,IAAS,SAASzhuC,GAEvB,IADA,IAAIr6B,GAAS,IACJA,EAAQ3c,GAAQ,CACvB,IAAIm6f,EAAOyixB,EAAMjgwC,GACjB,GAAIzc,GAAMi6f,EAAK,GAAIx6f,KAAMq3C,GACvB,OAAO92C,GAAMi6f,EAAK,GAAIx6f,KAAMq3C,EAEhC,CACF,GACF,EAwsCA+vuC,GAAO6N,SA9qCP,SAAkBptxC,GAChB,OAt8YF,SAAsBA,GACpB,IAAIolC,EAAQ35B,GAAKzL,GACjB,OAAO,SAASu1C,GACd,OAAOwruC,GAAexruC,EAAQv1C,EAAQolC,EACxC,CACF,CAi8YSiovC,CAAa7kB,GAAUxowC,EAhmeZ,GAimepB,EA6qCAu/wC,GAAOnppC,SAAWA,GAClBmppC,GAAOuK,QAAUA,GACjBvK,GAAOlnxC,OAzvHP,SAAgBR,EAAW8oC,GACzB,IAAIhlB,EAASqtvC,GAAWnxwC,GACxB,OAAqB,MAAd8oC,EAAqBhlB,EAAS8rvC,GAAW9rvC,EAAQglB,EAC1D,EAuvHA4+uC,GAAOp9U,MA5vMP,SAASA,EAAMjq5B,EAAMnzC,EAAOuvpB,GAE1B,IAAI34oB,EAASiswC,GAAW1vuC,EA3gUN,EA2gU6BhS,EAAWA,EAAWA,EAAWA,EAAWA,EAD3FnhC,EAAQuvpB,EAAQpunB,EAAYnhC,GAG5B,OADA4W,EAAOguC,YAAcw44B,EAAMx44B,YACpBhuC,CACT,EAwvMA4jwC,GAAO+N,WAhtMP,SAASA,EAAWp1uC,EAAMnzC,EAAOuvpB,GAE/B,IAAI34oB,EAASiswC,GAAW1vuC,EAvjUA,GAujU6BhS,EAAWA,EAAWA,EAAWA,EAAWA,EADjGnhC,EAAQuvpB,EAAQpunB,EAAYnhC,GAG5B,OADA4W,EAAOguC,YAAc2juC,EAAW3juC,YACzBhuC,CACT,EA4sMA4jwC,GAAOjnvC,SAAWA,GAClBinvC,GAAOp28B,SAAWA,GAClBo28B,GAAO4L,aAAeA,GACtB5L,GAAO+K,MAAQA,GACf/K,GAAOjmuC,MAAQA,GACfimuC,GAAOjwzB,WAAaA,GACpBiwzB,GAAOvI,aAAeA,GACtBuI,GAAOsJ,eAAiBA,GACxBtJ,GAAOgO,KAz1SP,SAAcl7uC,EAAO76C,EAAG88pB,GACtB,IAAI97pB,EAAkB,MAAT65C,EAAgB,EAAIA,EAAM75C,OACvC,OAAKA,EAIEk3wC,GAAUr9tC,GADjB76C,EAAK88pB,GAAS98pB,IAAM0uC,EAAa,EAAIgp5B,GAAU137B,IACnB,EAAI,EAAIA,EAAGgB,GAH9B,EAIX,EAm1SA+mxC,GAAOiO,UAxzSP,SAAmBn7uC,EAAO76C,EAAG88pB,GAC3B,IAAI97pB,EAAkB,MAAT65C,EAAgB,EAAIA,EAAM75C,OACvC,OAAKA,EAKEk3wC,GAAUr9tC,EAAO,GADxB76C,EAAIgB,GADJhB,EAAK88pB,GAAS98pB,IAAM0uC,EAAa,EAAIgp5B,GAAU137B,KAEhB,EAAI,EAAIA,GAJ9B,EAKX,EAizSA+nxC,GAAOkO,eA5wSP,SAAwBp7uC,EAAO2J,GAC7B,OAAQ3J,GAASA,EAAM75C,OACnB2qxC,GAAU9wuC,EAAO0vuC,GAAY/luC,EAAW,IAAI,GAAM,GAClD,EACN,EAywSAujuC,GAAOmO,UApuSP,SAAmBr7uC,EAAO2J,GACxB,OAAQ3J,GAASA,EAAM75C,OACnB2qxC,GAAU9wuC,EAAO0vuC,GAAY/luC,EAAW,IAAI,GAC5C,EACN,EAiuSAujuC,GAAOhqpC,KAlsSP,SAAcljF,EAAO/4C,EAAOqlC,EAAOC,GACjC,IAAIpmC,EAAkB,MAAT65C,EAAgB,EAAIA,EAAM75C,OACvC,OAAKA,GAGDmmC,GAAyB,iBAATA,GAAqBuyuC,GAAe7+tC,EAAO/4C,EAAOqlC,KACpEA,EAAQ,EACRC,EAAMpmC,GAnxIV,SAAkB65C,EAAO/4C,EAAOqlC,EAAOC,GACrC,IAAIpmC,EAAS65C,EAAM75C,OAWnB,KATAmmC,EAAQuw5B,GAAUvw5B,IACN,IACVA,GAASA,EAAQnmC,EAAS,EAAKA,EAASmmC,IAE1CC,EAAOA,IAAQsH,GAAatH,EAAMpmC,EAAUA,EAAS027B,GAAUtw5B,IACrD,IACRA,GAAOpmC,GAETomC,EAAMD,EAAQC,EAAM,EAAI8iG,GAAS9iG,GAC1BD,EAAQC,GACbyT,EAAM1T,KAAWrlC,EAEnB,OAAO+4C,CACT,CAqwISs7uC,CAASt7uC,EAAO/4C,EAAOqlC,EAAOC,IAN5B,EAOX,EAyrSA2gvC,GAAOv6vC,OA9wOP,SAAgBsxO,EAAYt6M,GAE1B,OADWlyC,GAAQwsP,GAAcy8gC,GAAcuO,IACnChrhC,EAAYyrhC,GAAY/luC,EAAW,GACjD,EA4wOAujuC,GAAO/4iC,QA1rOP,SAAiB8vB,EAAYowgC,GAC3B,OAAOsD,GAAYxivC,GAAI8uO,EAAYowgC,GAAW,EAChD,EAyrOA6Y,GAAOqO,YAnqOP,SAAqBt3hC,EAAYowgC,GAC/B,OAAOsD,GAAYxivC,GAAI8uO,EAAYowgC,GAAW2R,EAChD,EAkqOAkH,GAAOsO,aA3oOP,SAAsBv3hC,EAAYowgC,EAAUh3nC,GAE1C,OADAA,EAAQA,IAAUxpG,EAAY,EAAIgp5B,GAAUx/yB,GACrCs6nC,GAAYxivC,GAAI8uO,EAAYowgC,GAAWh3nC,EAChD,EAyoOA6voC,GAAO51oC,QAAUA,GACjB41oC,GAAOuO,YA1jSP,SAAqBz7uC,GAEnB,OADsB,MAATA,GAAoBA,EAAM75C,OACvBwxwC,GAAY33tC,EAAOgmuC,GAAY,EACjD,EAwjSAkH,GAAOwO,aAliSP,SAAsB17uC,EAAOq9F,GAE3B,OADsB,MAATr9F,GAAoBA,EAAM75C,OAKhCwxwC,GAAY33tC,EADnBq9F,EAAQA,IAAUxpG,EAAY,EAAIgp5B,GAAUx/yB,IAFnC,EAIX,EA4hSA6voC,GAAOyO,KA5+LP,SAAc91uC,GACZ,OAAO0vuC,GAAW1vuC,EA1yUD,IA2yUnB,EA2+LAqnuC,GAAOgN,KAAOA,GACdhN,GAAOiN,UAAYA,GACnBjN,GAAO0O,UA9gSP,SAAmB7Y,GAKjB,IAJA,IAAIjgwC,GAAS,EACT3c,EAAkB,MAAT48wC,EAAgB,EAAIA,EAAM58wC,OACnCmjB,EAAS,CAAC,IAELxG,EAAQ3c,GAAQ,CACvB,IAAIm6f,EAAOyixB,EAAMjgwC,GACjBiyvC,GAAgBzrvC,EAAQg3e,EAAK,GAAIA,EAAK,GACxC,CACA,OAAOh3e,CACT,EAqgSA4jwC,GAAO2O,UA99GP,SAAmB34uC,GACjB,OAAiB,MAAVA,EAAiB,GAAKisuC,GAAcjsuC,EAAQ9pC,GAAK8pC,GAC1D,EA69GAgquC,GAAO4O,YAp8GP,SAAqB54uC,GACnB,OAAiB,MAAVA,EAAiB,GAAKisuC,GAAcjsuC,EAAQgytC,GAAOhytC,GAC5D,EAm8GAgquC,GAAOyK,QAAUA,GACjBzK,GAAO6O,QA/7RP,SAAiB/7uC,GAEf,OADsB,MAATA,GAAoBA,EAAM75C,OACvBk3wC,GAAUr9tC,EAAO,GAAI,GAAK,EAC5C,EA67RAktuC,GAAOlqlC,aAAeA,GACtBkqlC,GAAOwJ,eAAiBA,GACxBxJ,GAAOyJ,iBAAmBA,GAC1BzJ,GAAOxonC,OAASA,GAChBwonC,GAAO8L,SAAWA,GAClB9L,GAAO0K,UAAYA,GACnB1K,GAAO7Y,SAAWA,GAClB6Y,GAAO2K,MAAQA,GACf3K,GAAO9zwC,KAAOA,GACd8zwC,GAAOhY,OAASA,GAChBgY,GAAO/3vC,IAAMA,GACb+3vC,GAAO8O,QA7sGP,SAAiB94uC,EAAQmxtC,GACvB,IAAI/qvC,EAAS,CAAC,EAMd,OALA+qvC,EAAWqb,GAAYrb,EAAU,GAEjCgD,GAAWn0tC,GAAQ,SAASj8C,EAAO0jB,EAAKu4B,GACtC6xtC,GAAgBzrvC,EAAQ+qvC,EAASptwC,EAAO0jB,EAAKu4B,GAASj8C,EACxD,IACOqiB,CACT,EAssGA4jwC,GAAO1juC,UAxqGP,SAAmBtG,EAAQmxtC,GACzB,IAAI/qvC,EAAS,CAAC,EAMd,OALA+qvC,EAAWqb,GAAYrb,EAAU,GAEjCgD,GAAWn0tC,GAAQ,SAASj8C,EAAO0jB,EAAKu4B,GACtC6xtC,GAAgBzrvC,EAAQqB,EAAK0pvC,EAASptwC,EAAO0jB,EAAKu4B,GACpD,IACO55B,CACT,EAiqGA4jwC,GAAOnztC,QAphCP,SAAiBpsD,GACf,OAAO+swC,GAAYvE,GAAUxowC,EAzyeX,GA0yepB,EAmhCAu/wC,GAAO+O,gBAh/BP,SAAyB9/vC,EAAM49uC,GAC7B,OAAOY,GAAoBx+uC,EAAMg6uC,GAAU4D,EA90ezB,GA+0epB,EA++BAmT,GAAO1gpC,QAAUA,GACjB0gpC,GAAOtmhC,MAAQA,GACfsmhC,GAAO6L,UAAYA,GACnB7L,GAAO32vC,OAASA,GAChB22vC,GAAOkN,SAAWA,GAClBlN,GAAOv9U,MAAQA,GACfu9U,GAAO51pC,OAASA,GAChB41pC,GAAOgP,OAzzBP,SAAgB/2xC,GAEd,OADAA,EAAI037B,GAAU137B,GACPy5wC,IAAS,SAASzhuC,GACvB,OAAOqyuC,GAAQryuC,EAAMh4C,EACvB,GACF,EAqzBA+nxC,GAAOgM,KAAOA,GACdhM,GAAOiP,OAtiGP,SAAgBj5uC,EAAQyG,GACtB,OAAOyvuC,GAAOl2uC,EAAQo0E,GAAOo4pC,GAAY/luC,IAC3C,EAqiGAujuC,GAAOh+vC,KAh5LP,SAAc22B,GACZ,OAAOw6M,GAAO,EAAGx6M,EACnB,EA+4LAqnuC,GAAOhhJ,QAx5NP,SAAiBjo4B,EAAYo4gC,EAAWC,EAAQr6mB,GAC9C,OAAkB,MAAdh+Z,EACK,IAEJxsP,GAAQ4kwC,KACXA,EAAyB,MAAbA,EAAoB,GAAK,CAACA,IAGnC5kwC,GADL6kwC,EAASr6mB,EAAQpunB,EAAYyouC,KAE3BA,EAAmB,MAAVA,EAAiB,GAAK,CAACA,IAE3BmT,GAAYxrhC,EAAYo4gC,EAAWC,GAC5C,EA64NA4Q,GAAOmN,KAAOA,GACdnN,GAAOkL,SAAWA,GAClBlL,GAAOoN,UAAYA,GACnBpN,GAAOqN,SAAWA,GAClBrN,GAAO9ptC,QAAUA,GACjB8ptC,GAAOoL,aAAeA,GACtBpL,GAAO1tc,UAAYA,GACnB0tc,GAAOxu5B,KAAOA,GACdwu5B,GAAOkM,OAASA,GAChBlM,GAAO5tuC,SAAWA,GAClB4tuC,GAAOkP,WA/rBP,SAAoBl5uC,GAClB,OAAO,SAAS/mB,GACd,OAAiB,MAAV+mB,EAAiBrP,EAAYmouC,GAAQ94tC,EAAQ/mB,EACtD,CACF,EA4rBA+wvC,GAAO0J,KAAOA,GACd1J,GAAO2J,QAAUA,GACjB3J,GAAOmP,UAvtRP,SAAmBr8uC,EAAOx9B,EAAQ6xvC,GAChC,OAAQr0tC,GAASA,EAAM75C,QAAUqc,GAAUA,EAAOrc,OAC9CwpxC,GAAY3vuC,EAAOx9B,EAAQktwC,GAAYrb,EAAU,IACjDr0tC,CACN,EAotRAktuC,GAAOoP,YA3rRP,SAAqBt8uC,EAAOx9B,EAAQq8d,GAClC,OAAQ7+b,GAASA,EAAM75C,QAAUqc,GAAUA,EAAOrc,OAC9CwpxC,GAAY3vuC,EAAOx9B,EAAQqxB,EAAWgrc,GACtC7+b,CACN,EAwrRAktuC,GAAO4J,OAASA,GAChB5J,GAAOrlpC,MAAQA,GACfqlpC,GAAOuN,WAAaA,GACpBvN,GAAOqL,MAAQA,GACfrL,GAAO7hwC,OA3wNP,SAAgB44O,EAAYt6M,GAE1B,OADWlyC,GAAQwsP,GAAcy8gC,GAAcuO,IACnChrhC,EAAY3sI,GAAOo4pC,GAAY/luC,EAAW,IACxD,EAywNAujuC,GAAOv0vC,OA5nRP,SAAgBqnB,EAAO2J,GACrB,IAAIrgC,EAAS,GACb,IAAM02B,IAASA,EAAM75C,OACnB,OAAOmjB,EAET,IAAIxG,GAAS,EACT46U,EAAU,GACVv3V,EAAS65C,EAAM75C,OAGnB,IADAwjD,EAAY+luC,GAAY/luC,EAAW,KAC1B7mC,EAAQ3c,GAAQ,CACvB,IAAIc,EAAQ+4C,EAAMl9B,GACd6mC,EAAU1iD,EAAO6b,EAAOk9B,KAC1B12B,EAAO3hB,KAAKV,GACZy2V,EAAQ/1V,KAAKmb,GAEjB,CAEA,OADA8swC,GAAW5vuC,EAAO09S,GACXp0U,CACT,EA0mRA4jwC,GAAO79iC,KArvLP,SAAcxpL,EAAMvZ,GAClB,GAAmB,mBAARuZ,EACT,MAAM,IAAIlgD,GAAUkrwC,GAGtB,OAAO+N,GAAS/4tC,EADhBvZ,EAAQA,IAAUuH,EAAYvH,EAAQuw5B,GAAUvw5B,GAElD,EAgvLA4gvC,GAAO9stC,QAAUA,GACjB8stC,GAAO9v4B,WAnuNP,SAAoBn5I,EAAY9+P,EAAG88pB,GAOjC,OALE98pB,GADG88pB,EAAQ48mB,GAAe56gC,EAAY9+P,EAAG88pB,GAAS98pB,IAAM0uC,GACpD,EAEAgp5B,GAAU137B,IAELsS,GAAQwsP,GAAcmqhC,GAAkB4B,IACvC/rhC,EAAY9+P,EAC1B,EA4tNA+nxC,GAAOn7wC,IA17FP,SAAamxC,EAAQ/mB,EAAMl1B,GACzB,OAAiB,MAAVi8C,EAAiBA,EAASs5tC,GAAQt5tC,EAAQ/mB,EAAMl1B,EACzD,EAy7FAimxC,GAAOqP,QA/5FP,SAAiBr5uC,EAAQ/mB,EAAMl1B,EAAOovwC,GAEpC,OADAA,EAAkC,mBAAdA,EAA2BA,EAAaxiuC,EAC3C,MAAVqP,EAAiBA,EAASs5tC,GAAQt5tC,EAAQ/mB,EAAMl1B,EAAOovwC,EAChE,EA65FA6W,GAAOsP,QA7sNP,SAAiBv4hC,GAEf,OADWxsP,GAAQwsP,GAAcsqhC,GAAe2B,IACpCjshC,EACd,EA2sNAiphC,GAAOrlxC,MAnkRP,SAAem4C,EAAO1T,EAAOC,GAC3B,IAAIpmC,EAAkB,MAAT65C,EAAgB,EAAIA,EAAM75C,OACvC,OAAKA,GAGDomC,GAAqB,iBAAPA,GAAmBsyuC,GAAe7+tC,EAAO1T,EAAOC,IAChED,EAAQ,EACRC,EAAMpmC,IAGNmmC,EAAiB,MAATA,EAAgB,EAAIuw5B,GAAUvw5B,GACtCC,EAAMA,IAAQsH,EAAY1tC,EAAS027B,GAAUtw5B,IAExC8wuC,GAAUr9tC,EAAO1T,EAAOC,IAVtB,EAWX,EAsjRA2gvC,GAAO4K,OAASA,GAChB5K,GAAOuP,WA34QP,SAAoBz8uC,GAClB,OAAQA,GAASA,EAAM75C,OACnBuqxC,GAAe1wuC,GACf,EACN,EAw4QAktuC,GAAOwP,aAt3QP,SAAsB18uC,EAAOq0tC,GAC3B,OAAQr0tC,GAASA,EAAM75C,OACnBuqxC,GAAe1wuC,EAAO0vuC,GAAYrb,EAAU,IAC5C,EACN,EAm3QA6Y,GAAOxixC,MAtiEP,SAAemY,EAAQgrgB,EAAWnld,GAKhC,OAJIA,GAAyB,iBAATA,GAAqBm2sC,GAAeh8vC,EAAQgrgB,EAAWnld,KACzEmld,EAAYnld,EAAQ70B,IAEtB60B,EAAQA,IAAU70B,EAAYoyuC,EAAmBv9sC,IAAU,IAI3D7lD,EAASxY,GAASwY,MAEQ,iBAAbgrgB,GACO,MAAbA,IAAsBqib,GAASrib,OAEpCA,EAAYsxtB,GAAatxtB,KACPoxvB,GAAWp8vC,GACpBm8vC,GAAU39jB,GAAcx+rB,GAAS,EAAG6lD,GAGxC7lD,EAAOnY,MAAMmjhB,EAAWnld,GAZtB,EAaX,EAohEAwktC,GAAOhpW,OAttLP,SAAgBr+3B,EAAMvZ,GACpB,GAAmB,mBAARuZ,EACT,MAAM,IAAIlgD,GAAUkrwC,GAGtB,OADAvkuC,EAAiB,MAATA,EAAgB,EAAIkluC,GAAU30U,GAAUvw5B,GAAQ,GACjDsyuC,IAAS,SAASzhuC,GACvB,IAAI6C,EAAQ7C,EAAK7Q,GACbo2uC,EAAY1D,GAAU7huC,EAAM,EAAG7Q,GAKnC,OAHI0T,GACFy3tC,GAAUiL,EAAW1iuC,GAEhB35C,GAAMw/C,EAAM//C,KAAM48wC,EAC3B,GACF,EAysLAwK,GAAO5olC,KAr2QP,SAActkJ,GACZ,IAAI75C,EAAkB,MAAT65C,EAAgB,EAAIA,EAAM75C,OACvC,OAAOA,EAASk3wC,GAAUr9tC,EAAO,EAAG75C,GAAU,EAChD,EAm2QA+mxC,GAAOzze,KAx0QP,SAAcz5vB,EAAO76C,EAAG88pB,GACtB,OAAMjinB,GAASA,EAAM75C,OAIdk3wC,GAAUr9tC,EAAO,GADxB76C,EAAK88pB,GAAS98pB,IAAM0uC,EAAa,EAAIgp5B,GAAU137B,IAChB,EAAI,EAAIA,GAH9B,EAIX,EAm0QA+nxC,GAAOyP,UAxyQP,SAAmB38uC,EAAO76C,EAAG88pB,GAC3B,IAAI97pB,EAAkB,MAAT65C,EAAgB,EAAIA,EAAM75C,OACvC,OAAKA,EAKEk3wC,GAAUr9tC,GADjB76C,EAAIgB,GADJhB,EAAK88pB,GAAS98pB,IAAM0uC,EAAa,EAAIgp5B,GAAU137B,KAEnB,EAAI,EAAIA,EAAGgB,GAJ9B,EAKX,EAiyQA+mxC,GAAO0P,eA5vQP,SAAwB58uC,EAAO2J,GAC7B,OAAQ3J,GAASA,EAAM75C,OACnB2qxC,GAAU9wuC,EAAO0vuC,GAAY/luC,EAAW,IAAI,GAAO,GACnD,EACN,EAyvQAujuC,GAAO2P,UAptQP,SAAmB78uC,EAAO2J,GACxB,OAAQ3J,GAASA,EAAM75C,OACnB2qxC,GAAU9wuC,EAAO0vuC,GAAY/luC,EAAW,IACxC,EACN,EAitQAujuC,GAAO4P,IAvvPP,SAAa71xC,EAAOs96B,GAElB,OADAA,EAAYt96B,GACLA,CACT,EAqvPAimxC,GAAOhjvC,SAjqLP,SAAkB2b,EAAMqC,EAAMj5B,GAC5B,IAAIm5B,GAAU,EACVE,GAAW,EAEf,GAAmB,mBAARzC,EACT,MAAM,IAAIlgD,GAAUkrwC,GAMtB,OAJI9lgC,GAAS97O,KACXm5B,EAAU,YAAan5B,IAAYA,EAAQm5B,QAAUA,EACrDE,EAAW,aAAcr5B,IAAYA,EAAQq5B,SAAWA,GAEnDriB,GAAS4f,EAAMqC,EAAM,CAC1B,QAAWE,EACX,QAAWF,EACX,SAAYI,GAEhB,EAkpLA4kuC,GAAO8F,KAAOA,GACd9F,GAAOv5pC,QAAUA,GACjBu5pC,GAAOmM,QAAUA,GACjBnM,GAAOoM,UAAYA,GACnBpM,GAAO5mD,OArfP,SAAgBr/tC,GACd,OAAIwQ,GAAQxQ,GACH6vwC,GAAS7vwC,EAAOsxB,IAElBm5uC,GAASzqwC,GAAS,CAACA,GAASsuwC,GAAU6H,GAAa/ywC,GAASpD,IACrE,EAifAimxC,GAAOrR,cAAgBA,GACvBqR,GAAOxkpC,UA71FP,SAAmBxlF,EAAQmxtC,EAAU94c,GACnC,IAAIu1I,EAAQr57B,GAAQyrC,GAChB65uC,EAAYjsV,GAASzlsB,GAASnoN,IAAWn8B,GAAam8B,GAG1D,GADAmxtC,EAAWqb,GAAYrb,EAAU,GACd,MAAf94c,EAAqB,CACvB,IAAIuzI,EAAO5r5B,GAAUA,EAAOn9C,YAE1Bw1zB,EADEwhe,EACYjsV,EAAQ,IAAIhC,EAAO,GAE1B/jsB,GAAS7nN,IACF4nN,GAAWgksB,GAAQ6nU,GAAW0J,GAAan9tC,IAG3C,CAAC,CAEnB,CAIA,OAHC65uC,EAAY5nB,GAAYkC,IAAYn0tC,GAAQ,SAASj8C,EAAO6b,EAAOogC,GAClE,OAAOmxtC,EAAS94c,EAAat0zB,EAAO6b,EAAOogC,EAC7C,IACOq4wB,CACT,EAy0FA2xd,GAAO8P,MAxoLP,SAAen3uC,GACb,OAAO2tuC,GAAI3tuC,EAAM,EACnB,EAuoLAqnuC,GAAOpkmC,MAAQA,GACfokmC,GAAO6J,QAAUA,GACjB7J,GAAO8J,UAAYA,GACnB9J,GAAO+P,KA5nQP,SAAcj9uC,GACZ,OAAQA,GAASA,EAAM75C,OAAUyqxC,GAAS5wuC,GAAS,EACrD,EA2nQAktuC,GAAOgQ,OAlmQP,SAAgBl9uC,EAAOq0tC,GACrB,OAAQr0tC,GAASA,EAAM75C,OAAUyqxC,GAAS5wuC,EAAO0vuC,GAAYrb,EAAU,IAAM,EAC/E,EAimQA6Y,GAAOiQ,SA3kQP,SAAkBn9uC,EAAO6+b,GAEvB,OADAA,EAAkC,mBAAdA,EAA2BA,EAAahrc,EACpDmM,GAASA,EAAM75C,OAAUyqxC,GAAS5wuC,EAAOnM,EAAWgrc,GAAc,EAC5E,EAykQAquyB,GAAOkQ,MAnzFP,SAAel6uC,EAAQ/mB,GACrB,OAAiB,MAAV+mB,GAAwB2suC,GAAU3suC,EAAQ/mB,EACnD,EAkzFA+wvC,GAAO+J,MAAQA,GACf/J,GAAOgK,UAAYA,GACnBhK,GAAO74sC,OAvxFP,SAAgBnxB,EAAQ/mB,EAAMgp9B,GAC5B,OAAiB,MAAVji8B,EAAiBA,EAAS2tuC,GAAW3tuC,EAAQ/mB,EAAMk1vC,GAAalsS,GACzE,EAsxFA+nS,GAAOmQ,WA5vFP,SAAoBn6uC,EAAQ/mB,EAAMgp9B,EAASkxR,GAEzC,OADAA,EAAkC,mBAAdA,EAA2BA,EAAaxiuC,EAC3C,MAAVqP,EAAiBA,EAAS2tuC,GAAW3tuC,EAAQ/mB,EAAMk1vC,GAAalsS,GAAUkxR,EACnF,EA0vFA6W,GAAO1qwC,OAASA,GAChB0qwC,GAAOoQ,SAnsFP,SAAkBp6uC,GAChB,OAAiB,MAAVA,EAAiB,GAAKqouC,GAAWrouC,EAAQgytC,GAAOhytC,GACzD,EAksFAgquC,GAAOiK,QAAUA,GACjBjK,GAAOtj9B,MAAQA,GACfsj9B,GAAOxvwC,KA9nLP,SAAczW,EAAO8vc,GACnB,OAAO3zY,GAAQiutC,GAAat60B,GAAU9vc,EACxC,EA6nLAimxC,GAAOx0jC,IAAMA,GACbw0jC,GAAOkK,MAAQA,GACflK,GAAOmK,QAAUA,GACjBnK,GAAOoK,IAAMA,GACbpK,GAAOqQ,UAp4PP,SAAmBxqvC,EAAOvwB,GACxB,OAAO0uwC,GAAcn+uC,GAAS,GAAIvwB,GAAU,GAAIg95B,GAClD,EAm4PA0tW,GAAOsQ,cAl3PP,SAAuBzqvC,EAAOvwB,GAC5B,OAAO0uwC,GAAcn+uC,GAAS,GAAIvwB,GAAU,GAAIg6vC,GAClD,EAi3PA0Q,GAAOqK,QAAUA,GAGjBrK,GAAO3qwC,QAAU82wC,GACjBnM,GAAOuQ,UAAYnE,GACnBpM,GAAO/93B,OAASsp4B,GAChBvL,GAAOwQ,WAAahF,GAGpB/oV,GAAMu9U,GAAQA,IAKdA,GAAOjiwC,IAAMA,GACbiiwC,GAAO8M,QAAUA,GACjB9M,GAAOztxB,UAAYA,GACnBytxB,GAAOnk6B,WAAaA,GACpBmk6B,GAAOh6wC,KAAOA,GACdg6wC,GAAO1u7B,MAvsFP,SAAe3uM,EAAQ0qmC,EAAOL,GAa5B,OAZIA,IAAUrmtC,IACZqmtC,EAAQK,EACRA,EAAQ1mtC,GAENqmtC,IAAUrmtC,IAEZqmtC,GADAA,EAAQlliC,GAASkliC,KACCA,EAAQA,EAAQ,GAEhCK,IAAU1mtC,IAEZ0mtC,GADAA,EAAQvliC,GAASuliC,KACCA,EAAQA,EAAQ,GAE7B+zB,GAAUt5jC,GAASnlE,GAAS0qmC,EAAOL,EAC5C,EA0rFAgzB,GAAO72vC,MAhlLP,SAAepvB,GACb,OAAOkvwC,GAAUlvwC,EAn1VI,EAo1VvB,EA+kLAimxC,GAAOyQ,UAvhLP,SAAmB12xC,GACjB,OAAOkvwC,GAAUlvwC,EAAOu9wC,EAC1B,EAshLA0I,GAAO0Q,cAx/KP,SAAuB32xC,EAAOovwC,GAE5B,OAAOF,GAAUlvwC,EAAOu9wC,EADxBnO,EAAkC,mBAAdA,EAA2BA,EAAaxiuC,EAE9D,EAs/KAq5uC,GAAO2Q,UAhjLP,SAAmB52xC,EAAOovwC,GAExB,OAAOF,GAAUlvwC,EAv3VI,EAs3VrBovwC,EAAkC,mBAAdA,EAA2BA,EAAaxiuC,EAE9D,EA8iLAq5uC,GAAO4Q,WA79KP,SAAoB56uC,EAAQv1C,GAC1B,OAAiB,MAAVA,GAAkB+gxC,GAAexruC,EAAQv1C,EAAQyL,GAAKzL,GAC/D,EA49KAu/wC,GAAOsF,OAASA,GAChBtF,GAAO6Q,UA1xCP,SAAmB92xC,EAAOg8H,GACxB,OAAiB,MAATh8H,GAAiBA,GAAUA,EAASg8H,EAAeh8H,CAC7D,EAyxCAimxC,GAAOv1jC,OAASA,GAChBu1jC,GAAOr/tC,SAn+EP,SAAkBhrC,EAAQjN,EAAQ6uB,GAChC5hB,EAASxY,GAASwY,GAClBjN,EAASupuC,GAAavpuC,GAEtB,IAAIzP,EAAS0c,EAAO1c,OAKhBomC,EAJJ9H,EAAWA,IAAaoP,EACpB1tC,EACAmoxC,GAAUzxV,GAAUp45B,GAAW,EAAGt+B,GAItC,OADAs+B,GAAY7uB,EAAOzP,SACA,GAAK0c,EAAOhb,MAAM48B,EAAU8H,IAAQ32B,CACzD,EAw9EAs3wC,GAAOh4jC,GAAKA,GACZg4jC,GAAO33rC,OA37EP,SAAgB1yE,GAEd,OADAA,EAASxY,GAASwY,KACA4kwC,EAAmBt2wC,KAAK0R,GACtCA,EAAOtQ,QAAQysf,EAAiB4sxB,IAChC/owC,CACN,EAu7EAqqwC,GAAO8Q,aAt6EP,SAAsBn7wC,GAEpB,OADAA,EAASxY,GAASwY,KACAilwC,GAAgB32wC,KAAK0R,GACnCA,EAAOtQ,QAAQs1wC,GAAc,QAC7BhlwC,CACN,EAk6EAqqwC,GAAO3+uC,MA/8OP,SAAe01N,EAAYt6M,EAAWs4mB,GACpC,IAAIp8mB,EAAOpuC,GAAQwsP,GAAcymhC,GAAaqE,GAI9C,OAHI9snB,GAAS48mB,GAAe56gC,EAAYt6M,EAAWs4mB,KACjDt4mB,EAAY9V,GAEPgS,EAAKo+M,EAAYyrhC,GAAY/luC,EAAW,GACjD,EA08OAujuC,GAAO1gvC,KAAOA,GACd0gvC,GAAO9grC,UAAYA,GACnB8grC,GAAOvmV,QAxyHP,SAAiBzj5B,EAAQyG,GACvB,OAAOqhuC,GAAY9nuC,EAAQwsuC,GAAY/luC,EAAW,GAAI0ttC,GACxD,EAuyHA6V,GAAOxjuC,SAAWA,GAClBwjuC,GAAOuJ,cAAgBA,GACvBvJ,GAAO+Q,YApwHP,SAAqB/6uC,EAAQyG,GAC3B,OAAOqhuC,GAAY9nuC,EAAQwsuC,GAAY/luC,EAAW,GAAImluC,GACxD,EAmwHA5B,GAAO95wC,MAAQA,GACf85wC,GAAOliwC,QAAUA,GACjBkiwC,GAAOwK,aAAeA,GACtBxK,GAAOgR,MAxuHP,SAAeh7uC,EAAQmxtC,GACrB,OAAiB,MAAVnxtC,EACHA,EACA20tC,GAAQ30tC,EAAQwsuC,GAAYrb,EAAU,GAAIa,GAChD,EAquHAgY,GAAOiR,WAzsHP,SAAoBj7uC,EAAQmxtC,GAC1B,OAAiB,MAAVnxtC,EACHA,EACAgsuC,GAAahsuC,EAAQwsuC,GAAYrb,EAAU,GAAIa,GACrD,EAssHAgY,GAAOkR,OAxqHP,SAAgBl7uC,EAAQmxtC,GACtB,OAAOnxtC,GAAUm0tC,GAAWn0tC,EAAQwsuC,GAAYrb,EAAU,GAC5D,EAuqHA6Y,GAAOmR,YA3oHP,SAAqBn7uC,EAAQmxtC,GAC3B,OAAOnxtC,GAAU4ruC,GAAgB5ruC,EAAQwsuC,GAAYrb,EAAU,GACjE,EA0oHA6Y,GAAOjkxC,IAAMA,GACbikxC,GAAO/5wC,GAAKA,GACZ+5wC,GAAOz2jC,IAAMA,GACby2jC,GAAOr7wC,IA5hHP,SAAaqxC,EAAQ/mB,GACnB,OAAiB,MAAV+mB,GAAkB+u8B,GAAQ/u8B,EAAQ/mB,EAAMkzvC,GACjD,EA2hHAnC,GAAO/R,MAAQA,GACf+R,GAAOrguC,KAAOA,GACdqguC,GAAO58lC,SAAWA,GAClB48lC,GAAOh5wC,SA/qOP,SAAkB+vP,EAAYh9P,EAAOmpgB,EAAW6xJ,GAC9Ch+Z,EAAa4rsB,GAAY5rsB,GAAcA,EAAazhP,GAAOyhP,GAC3DmsQ,EAAaA,IAAc6xJ,EAAS46R,GAAUzsb,GAAa,EAE3D,IAAIjqgB,EAAS89P,EAAW99P,OAIxB,OAHIiqgB,EAAY,IACdA,EAAYohwB,GAAUrrwC,EAASiqgB,EAAW,IAErCtvc,GAASmjM,GACXmsQ,GAAajqgB,GAAU89P,EAAW39P,QAAQW,EAAOmpgB,IAAc,IAC7DjqgB,GAAUouwC,GAAYtwgC,EAAYh9P,EAAOmpgB,IAAc,CAChE,EAqqOA88wB,GAAO5mxC,QAjnSP,SAAiB05C,EAAO/4C,EAAOmpgB,GAC7B,IAAIjqgB,EAAkB,MAAT65C,EAAgB,EAAIA,EAAM75C,OACvC,IAAKA,EACH,OAAQ,EAEV,IAAI2c,EAAqB,MAAbstf,EAAoB,EAAIysb,GAAUzsb,GAI9C,OAHIttf,EAAQ,IACVA,EAAQ0uvC,GAAUrrwC,EAAS2c,EAAO,IAE7ByxvC,GAAYv0tC,EAAO/4C,EAAO6b,EACnC,EAwmSAoqwC,GAAOxlvB,QArrFP,SAAiB73Y,EAAQvjH,EAAOC,GAS9B,OARAD,EAAQwovC,GAASxovC,GACbC,IAAQsH,GACVtH,EAAMD,EACNA,EAAQ,GAERC,EAAMuovC,GAASvovC,GA/tVnB,SAAqBsjH,EAAQvjH,EAAOC,GAClC,OAAOsjH,GAAU4hnC,GAAUnluC,EAAOC,IAAQsjH,EAAS2hnC,GAAUlluC,EAAOC,EACtE,CAguVS+xvC,CADPzuoC,EAASmlE,GAASnlE,GACSvjH,EAAOC,EACpC,EA4qFA2gvC,GAAO+L,OAASA,GAChB/L,GAAOzY,YAAcA,GACrByY,GAAOz1wC,QAAUA,GACjBy1wC,GAAO96gC,cAAgBA,GACvB86gC,GAAOr9U,YAAcA,GACrBq9U,GAAOtR,kBAAoBA,GAC3BsR,GAAOvhhC,UAzxKP,SAAmB1kQ,GACjB,OAAiB,IAAVA,IAA4B,IAAVA,GACtBi4uC,GAAaj4uC,IAAUyxwC,GAAWzxwC,IAAUk/wC,CACjD,EAuxKA+G,GAAO7hhC,SAAWA,GAClB6hhC,GAAO/ygC,OAASA,GAChB+ygC,GAAOp0C,UAhuKP,SAAmB7xuC,GACjB,OAAOi4uC,GAAaj4uC,IAA6B,IAAnBA,EAAMmoF,WAAmBw4E,GAAc3gK,EACvE,EA+tKAimxC,GAAO/+sC,QA5rKP,SAAiBlnE,GACf,GAAa,MAATA,EACF,OAAO,EAET,GAAI4o8B,GAAY5o8B,KACXwQ,GAAQxQ,IAA0B,iBAATA,GAA4C,mBAAhBA,EAAM8hB,QAC1DsiP,GAASpkQ,IAAU8f,GAAa9f,IAAUwtwC,GAAYxtwC,IAC1D,OAAQA,EAAMd,OAEhB,IAAI+W,EAAM2guC,GAAO52uC,GACjB,GAAIiW,GAAO2jwC,GAAU3jwC,GAAO6jwC,EAC1B,OAAQ95wC,EAAMyjB,KAEhB,GAAIkwvC,GAAY3zwC,GACd,OAAQi+wC,GAASj+wC,GAAOd,OAE1B,IAAK,IAAIwkB,KAAO1jB,EACd,GAAIxB,GAAeC,KAAKuB,EAAO0jB,GAC7B,OAAO,EAGX,OAAO,CACT,EAuqKAuiwC,GAAOvjnC,QAzoKP,SAAiB1iK,EAAO06C,GACtB,OAAOi3tC,GAAY3xwC,EAAO06C,EAC5B,EAwoKAuruC,GAAOqR,YAtmKP,SAAqBt3xC,EAAO06C,EAAO00tC,GAEjC,IAAI/svC,GADJ+svC,EAAkC,mBAAdA,EAA2BA,EAAaxiuC,GAClCwiuC,EAAWpvwC,EAAO06C,GAAS9N,EACrD,OAAOvqB,IAAWuqB,EAAY+kuC,GAAY3xwC,EAAO06C,EAAO9N,EAAWwiuC,KAAgB/svC,CACrF,EAmmKA4jwC,GAAO30uC,QAAUA,GACjB20uC,GAAO1/uC,SA7iKP,SAAkBvmC,GAChB,MAAuB,iBAATA,GAAqBk4wC,GAAel4wC,EACpD,EA4iKAimxC,GAAOpihC,WAAaA,GACpBoihC,GAAOj9nC,UAAYA,GACnBi9nC,GAAO1S,SAAWA,GAClB0S,GAAO/xgC,MAAQA,GACf+xgC,GAAO9rC,QA72JP,SAAiBl+rC,EAAQv1C,GACvB,OAAOu1C,IAAWv1C,GAAUqtwC,GAAY93tC,EAAQv1C,EAAQstwC,GAAattwC,GACvE,EA42JAu/wC,GAAOsR,YA10JP,SAAqBt7uC,EAAQv1C,EAAQ0owC,GAEnC,OADAA,EAAkC,mBAAdA,EAA2BA,EAAaxiuC,EACrDmnuC,GAAY93tC,EAAQv1C,EAAQstwC,GAAattwC,GAAS0owC,EAC3D,EAw0JA6W,GAAO96uC,MA1yJP,SAAenrC,GAIb,OAAOmiD,GAASniD,IAAUA,IAAUA,CACtC,EAsyJAimxC,GAAO1nuC,SA1wJP,SAAkBv+C,GAChB,GAAIkvxC,GAAWlvxC,GACb,MAAM,IAAIqmB,GAruXM,mEAuuXlB,OAAO8yvC,GAAan5wC,EACtB,EAswJAimxC,GAAOuR,MA3tJP,SAAex3xC,GACb,OAAgB,MAATA,CACT,EA0tJAimxC,GAAO7zgC,OApvJP,SAAgBpyQ,GACd,OAAiB,OAAVA,CACT,EAmvJAimxC,GAAO9juC,SAAWA,GAClB8juC,GAAOnihC,SAAWA,GAClBmihC,GAAOhuC,aAAeA,GACtBguC,GAAOtlnC,cAAgBA,GACvBslnC,GAAOh9U,SAAWA,GAClBg9U,GAAOwR,cAxmJP,SAAuBz3xC,GACrB,OAAOgpJ,GAAUhpJ,IAAUA,IAAS,kBAAqBA,GAASkkC,CACpE,EAumJA+hvC,GAAOx+F,MAAQA,GACfw+F,GAAOpstC,SAAWA,GAClBostC,GAAOxb,SAAWA,GAClBwb,GAAOnmwC,aAAeA,GACtBmmwC,GAAOjs0B,YAtgJP,SAAqBh6c,GACnB,OAAOA,IAAU4sC,CACnB,EAqgJAq5uC,GAAOyR,UAl/IP,SAAmB13xC,GACjB,OAAOi4uC,GAAaj4uC,IAAU42uC,GAAO52uC,IAAU+5wC,CACjD,EAi/IAkM,GAAO0R,UA99IP,SAAmB33xC,GACjB,OAAOi4uC,GAAaj4uC,IAj8XP,oBAi8XiByxwC,GAAWzxwC,EAC3C,EA69IAimxC,GAAOv6wC,KA5gSP,SAAcqtC,EAAO6te,GACnB,OAAgB,MAAT7te,EAAgB,GAAK4suC,GAAWlnxC,KAAKs6C,EAAO6te,EACrD,EA2gSAq/vB,GAAOqM,UAAYA,GACnBrM,GAAOziwC,KAAOA,GACdyiwC,GAAOnpmC,YAn+RP,SAAqB/jI,EAAO/4C,EAAOmpgB,GACjC,IAAIjqgB,EAAkB,MAAT65C,EAAgB,EAAIA,EAAM75C,OACvC,IAAKA,EACH,OAAQ,EAEV,IAAI2c,EAAQ3c,EAKZ,OAJIiqgB,IAAcv8d,IAEhB/wB,GADAA,EAAQ+56B,GAAUzsb,IACF,EAAIohwB,GAAUrrwC,EAAS2c,EAAO,GAAK2uvC,GAAU3uvC,EAAO3c,EAAS,IAExEc,GAAUA,EAnxMrB,SAA2B+4C,EAAO/4C,EAAOmpgB,GAEvC,IADA,IAAIttf,EAAQstf,EAAY,EACjBttf,KACL,GAAIk9B,EAAMl9B,KAAW7b,EACnB,OAAO6b,EAGX,OAAOA,CACT,CA4wMQ+7wC,CAAkB7+uC,EAAO/4C,EAAO6b,GAChCs1vC,GAAcp4tC,EAAOq4tC,GAAWv1vC,GAAO,EAC7C,EAu9RAoqwC,GAAOsM,UAAYA,GACnBtM,GAAOuM,WAAaA,GACpBvM,GAAOx7wC,GAAKA,GACZw7wC,GAAO52jC,IAAMA,GACb42jC,GAAOz5wC,IAhfP,SAAausC,GACX,OAAQA,GAASA,EAAM75C,OACnB6oxC,GAAahvuC,EAAOswI,GAAU8+lC,IAC9Bv7uC,CACN,EA6eAq5uC,GAAO4R,MApdP,SAAe9+uC,EAAOq0tC,GACpB,OAAQr0tC,GAASA,EAAM75C,OACnB6oxC,GAAahvuC,EAAO0vuC,GAAYrb,EAAU,GAAI+a,IAC9Cv7uC,CACN,EAidAq5uC,GAAOzp3B,KAjcP,SAAczjX,GACZ,OAAOkruC,GAASlruC,EAAOswI,GACzB,EAgcA48lC,GAAO6R,OAvaP,SAAgB/+uC,EAAOq0tC,GACrB,OAAO6W,GAASlruC,EAAO0vuC,GAAYrb,EAAU,GAC/C,EAsaA6Y,GAAOv5wC,IAlZP,SAAaqsC,GACX,OAAQA,GAASA,EAAM75C,OACnB6oxC,GAAahvuC,EAAOswI,GAAUi/lC,IAC9B17uC,CACN,EA+YAq5uC,GAAO8R,MAtXP,SAAeh/uC,EAAOq0tC,GACpB,OAAQr0tC,GAASA,EAAM75C,OACnB6oxC,GAAahvuC,EAAO0vuC,GAAYrb,EAAU,GAAIkb,IAC9C17uC,CACN,EAmXAq5uC,GAAOvM,UAAYA,GACnBuM,GAAOjI,UAAYA,GACnBiI,GAAO+R,WAztBP,WACE,MAAO,CAAC,CACV,EAwtBA/R,GAAOgS,WAzsBP,WACE,MAAO,EACT,EAwsBAhS,GAAOiS,SAzrBP,WACE,OAAO,CACT,EAwrBAjS,GAAO5/jC,SAAWA,GAClB4/jC,GAAOkS,IAh9RP,SAAap/uC,EAAO76C,GAClB,OAAQ66C,GAASA,EAAM75C,OAAUqpxC,GAAQxvuC,EAAO684B,GAAU137B,IAAM0uC,CAClE,EA+8RAq5uC,GAAOmS,WAliCP,WAIE,OAHIppoC,GAAKvsJ,IAAM5D,OACbmwJ,GAAKvsJ,EAAI2ixC,IAEJvmxC,IACT,EA8hCAonxC,GAAOtkuC,KAAOA,GACdskuC,GAAO37vC,IAAMA,GACb27vC,GAAOlnf,IA35EP,SAAanjxB,EAAQ1c,EAAQwuxC,GAC3B9xwC,EAASxY,GAASwY,GAGlB,IAAIy8wC,GAFJn5xC,EAAS027B,GAAU127B,IAEM6lxC,GAAWnpwC,GAAU,EAC9C,IAAK1c,GAAUm5xC,GAAan5xC,EAC1B,OAAO0c,EAET,IAAIuoN,GAAOjlO,EAASm5xC,GAAa,EACjC,OACE5K,GAAchI,GAAYthjC,GAAMupjC,GAChC9xwC,EACA6xwC,GAAcnQ,GAAWn5iC,GAAMupjC,EAEnC,EA84EAzH,GAAOvpmC,OAr3EP,SAAgB9gK,EAAQ1c,EAAQwuxC,GAC9B9xwC,EAASxY,GAASwY,GAGlB,IAAIy8wC,GAFJn5xC,EAAS027B,GAAU127B,IAEM6lxC,GAAWnpwC,GAAU,EAC9C,OAAQ1c,GAAUm5xC,EAAYn5xC,EACzB0c,EAAS6xwC,GAAcvuxC,EAASm5xC,EAAW3K,GAC5C9xwC,CACN,EA82EAqqwC,GAAOtwsC,SAr1EP,SAAkB/5D,EAAQ1c,EAAQwuxC,GAChC9xwC,EAASxY,GAASwY,GAGlB,IAAIy8wC,GAFJn5xC,EAAS027B,GAAU127B,IAEM6lxC,GAAWnpwC,GAAU,EAC9C,OAAQ1c,GAAUm5xC,EAAYn5xC,EACzBuuxC,GAAcvuxC,EAASm5xC,EAAW3K,GAAS9xwC,EAC5CA,CACN,EA80EAqqwC,GAAOzxvC,SApzEP,SAAkB5Y,EAAQy5D,EAAO2llB,GAM/B,OALIA,GAAkB,MAAT3llB,EACXA,EAAQ,EACCA,IACTA,GAASA,GAEJuwsC,GAAexixC,GAASwY,GAAQtQ,QAAQyqwC,GAAa,IAAK1gsC,GAAS,EAC5E,EA8yEA4wsC,GAAO/+wC,OApsFP,SAAgBosvC,EAAOL,EAAOl7nB,GA2B5B,GA1BIA,GAA+B,kBAAZA,GAAyB6/oB,GAAetkB,EAAOL,EAAOl7nB,KAC3Ek7nB,EAAQl7nB,EAAWnrlB,GAEjBmrlB,IAAanrlB,IACK,kBAATqmtC,GACTl7nB,EAAWk7nB,EACXA,EAAQrmtC,GAEe,kBAAT0mtC,IACdv7nB,EAAWu7nB,EACXA,EAAQ1mtC,IAGR0mtC,IAAU1mtC,GAAaqmtC,IAAUrmtC,GACnC0mtC,EAAQ,EACRL,EAAQ,IAGRK,EAAQu6B,GAASv6B,GACbL,IAAUrmtC,GACZqmtC,EAAQK,EACRA,EAAQ,GAERL,EAAQ46B,GAAS56B,IAGjBK,EAAQL,EAAO,CACjB,IAAI3rkC,EAAOgskC,EACXA,EAAQL,EACRA,EAAQ3rkC,CACV,CACA,GAAIywc,GAAYu7nB,EAAQ,GAAKL,EAAQ,EAAG,CACtC,IAAIq8B,EAAOzJ,KACX,OAAOrb,GAAUlX,EAASg8B,GAAQr8B,EAAQK,EAAQ4vB,GAAe,QAAUoM,EAAO,IAAIpwxC,OAAS,KAAO+zvC,EACxG,CACA,OAAOi0B,GAAW5zB,EAAOL,EAC3B,EAgqFAgzB,GAAO1zvC,OA//NP,SAAgByqO,EAAYowgC,EAAU94c,GACpC,IAAI11wB,EAAOpuC,GAAQwsP,GAAc0mhC,GAAcU,GAC3CT,EAAY1kxC,UAAUC,OAAS,EAEnC,OAAO0/C,EAAKo+M,EAAYyrhC,GAAYrb,EAAU,GAAI94c,EAAaqvd,EAAWtT,GAC5E,EA2/NA4V,GAAOqS,YAn+NP,SAAqBt7hC,EAAYowgC,EAAU94c,GACzC,IAAI11wB,EAAOpuC,GAAQwsP,GAAc4mhC,GAAmBQ,GAChDT,EAAY1kxC,UAAUC,OAAS,EAEnC,OAAO0/C,EAAKo+M,EAAYyrhC,GAAYrb,EAAU,GAAI94c,EAAaqvd,EAAWiE,GAC5E,EA+9NA3B,GAAO79mC,OAzxEP,SAAgBxsJ,EAAQ1d,EAAG88pB,GAMzB,OAJE98pB,GADG88pB,EAAQ48mB,GAAeh8vC,EAAQ1d,EAAG88pB,GAAS98pB,IAAM0uC,GAChD,EAEAgp5B,GAAU137B,GAET2qxC,GAAWzlxC,GAASwY,GAAS1d,EACtC,EAmxEA+nxC,GAAO36wC,QA9vEP,WACE,IAAI4qC,EAAOj3C,UACP2c,EAASxY,GAAS8yC,EAAK,IAE3B,OAAOA,EAAKh3C,OAAS,EAAI0c,EAASA,EAAOtQ,QAAQ4qC,EAAK,GAAIA,EAAK,GACjE,EA0vEA+vuC,GAAO5jwC,OAzpGP,SAAgB45B,EAAQ/mB,EAAM8mG,GAG5B,IAAIngH,GAAS,EACT3c,GAHJg2B,EAAO47uC,GAAS57uC,EAAM+mB,IAGJ/8C,OAOlB,IAJKA,IACHA,EAAS,EACT+8C,EAASrP,KAEF/wB,EAAQ3c,GAAQ,CACvB,IAAIc,EAAkB,MAAVi8C,EAAiBrP,EAAYqP,EAAO3qB,GAAM4D,EAAKrZ,KACvD7b,IAAU4sC,IACZ/wB,EAAQ3c,EACRc,EAAQg8H,GAEV//E,EAAS4nN,GAAW7jQ,GAASA,EAAMvB,KAAKw9C,GAAUj8C,CACpD,CACA,OAAOi8C,CACT,EAsoGAgquC,GAAOnkuC,MAAQA,GACfmkuC,GAAOf,aAAeA,EACtBe,GAAO3qR,OA76NP,SAAgBt+vB,GAEd,OADWxsP,GAAQwsP,GAAciqhC,GAAc6B,IACnC9rhC,EACd,EA26NAiphC,GAAOxiwC,KAl2NP,SAAcu5O,GACZ,GAAkB,MAAdA,EACF,OAAO,EAET,GAAI4rsB,GAAY5rsB,GACd,OAAOnjM,GAASmjM,GAAc+nhC,GAAW/nhC,GAAcA,EAAW99P,OAEpE,IAAI+W,EAAM2guC,GAAO55+B,GACjB,OAAI/mP,GAAO2jwC,GAAU3jwC,GAAO6jwC,EACnB98gC,EAAWv5O,KAEbw6vC,GAASjhhC,GAAY99P,MAC9B,EAu1NA+mxC,GAAOwM,UAAYA,GACnBxM,GAAOz/uC,KAlzNP,SAAcw2N,EAAYt6M,EAAWs4mB,GACnC,IAAIp8mB,EAAOpuC,GAAQwsP,GAAcm7gC,GAAY+Q,GAI7C,OAHIlunB,GAAS48mB,GAAe56gC,EAAYt6M,EAAWs4mB,KACjDt4mB,EAAY9V,GAEPgS,EAAKo+M,EAAYyrhC,GAAY/luC,EAAW,GACjD,EA6yNAujuC,GAAOsS,YAntRP,SAAqBx/uC,EAAO/4C,GAC1B,OAAOmpxC,GAAgBpwuC,EAAO/4C,EAChC,EAktRAimxC,GAAOuS,cAvrRP,SAAuBz/uC,EAAO/4C,EAAOotwC,GACnC,OAAOic,GAAkBtwuC,EAAO/4C,EAAOyoxC,GAAYrb,EAAU,GAC/D,EAsrRA6Y,GAAOwS,cApqRP,SAAuB1/uC,EAAO/4C,GAC5B,IAAId,EAAkB,MAAT65C,EAAgB,EAAIA,EAAM75C,OACvC,GAAIA,EAAQ,CACV,IAAI2c,EAAQstwC,GAAgBpwuC,EAAO/4C,GACnC,GAAI6b,EAAQ3c,GAAU+uN,GAAGl1K,EAAMl9B,GAAQ7b,GACrC,OAAO6b,CAEX,CACA,OAAQ,CACV,EA4pRAoqwC,GAAOyS,gBAxoRP,SAAyB3/uC,EAAO/4C,GAC9B,OAAOmpxC,GAAgBpwuC,EAAO/4C,GAAO,EACvC,EAuoRAimxC,GAAO0S,kBA5mRP,SAA2B5/uC,EAAO/4C,EAAOotwC,GACvC,OAAOic,GAAkBtwuC,EAAO/4C,EAAOyoxC,GAAYrb,EAAU,IAAI,EACnE,EA2mRA6Y,GAAO2S,kBAzlRP,SAA2B7/uC,EAAO/4C,GAEhC,GADsB,MAAT+4C,GAAoBA,EAAM75C,OAC3B,CACV,IAAI2c,EAAQstwC,GAAgBpwuC,EAAO/4C,GAAO,GAAQ,EAClD,GAAIiuN,GAAGl1K,EAAMl9B,GAAQ7b,GACnB,OAAO6b,CAEX,CACA,OAAQ,CACV,EAilRAoqwC,GAAOyM,UAAYA,GACnBzM,GAAOj2wC,WArpEP,SAAoB4L,EAAQjN,EAAQ6uB,GAOlC,OANA5hB,EAASxY,GAASwY,GAClB4hB,EAAuB,MAAZA,EACP,EACA6pvC,GAAUzxV,GAAUp45B,GAAW,EAAG5hB,EAAO1c,QAE7CyP,EAASupuC,GAAavpuC,GACfiN,EAAOhb,MAAM48B,EAAUA,EAAW7uB,EAAOzP,SAAWyP,CAC7D,EA8oEAs3wC,GAAOhlmC,SAAWA,GAClBglmC,GAAOt4qC,IAzUP,SAAa50D,GACX,OAAQA,GAASA,EAAM75C,OACnBglxC,GAAQnruC,EAAOswI,IACf,CACN,EAsUA48lC,GAAO4S,MA7SP,SAAe9/uC,EAAOq0tC,GACpB,OAAQr0tC,GAASA,EAAM75C,OACnBglxC,GAAQnruC,EAAO0vuC,GAAYrb,EAAU,IACrC,CACN,EA0SA6Y,GAAOl6lC,SAniEP,SAAkBnwK,EAAQoM,EAASgzoB,GAIjC,IAAI1xiB,EAAW28pC,GAAO0B,iBAElB3snB,GAAS48mB,GAAeh8vC,EAAQoM,EAASgzoB,KAC3ChzoB,EAAU4kB,GAEZhxB,EAASxY,GAASwY,GAClBoM,EAAU0pwC,GAAW,CAAC,EAAG1pwC,EAASshG,EAAUwlqC,IAE5C,IAAIgK,EAAUpH,GAAW,CAAC,EAAG1pwC,EAAQ8wwC,QAASxvqC,EAASwvqC,QAAShK,IAC5DiK,EAAc5mxC,GAAK2mxC,GACnBE,EAAgB1U,GAAWwU,EAASC,GAExC7qB,GAAU6qB,GAAa,SAASr1wC,GAC9B,GAAIw9vC,GAA2Bh3wC,KAAKwZ,GAClC,MAAM,IAAI2C,GA5hdqB,oDA8hdnC,IAEA,IAAI4ywC,EACAC,EACAr9wC,EAAQ,EACRyyO,EAActmO,EAAQsmO,aAAe+yhC,GACrC36wC,EAAS,WAGTyyxC,EAAevyvC,IAChB5e,EAAQsmE,QAAU+yrC,IAAW36wC,OAAS,IACvC4nP,EAAY5nP,OAAS,KACpB4nP,IAAgBqyhC,EAAgBQ,GAAeE,IAAW36wC,OAAS,KACnEshB,EAAQmrf,UAAYkuwB,IAAW36wC,OAAS,KACzC,KAME4xG,EAAY,kBACb95G,GAAeC,KAAKupB,EAAS,cACzBA,EAAQswF,UAAY,IAAIhtG,QAAQ,MAAO,KACvC,6BAA+B03wC,GAAmB,KACnD,KAENpnwC,EAAOtQ,QAAQ6txC,GAAc,SAAS7zxC,EAAO8zxC,EAAaC,EAAkBC,EAAiBC,EAAev4uC,GAsB1G,OArBAq4uC,IAAqBA,EAAmBC,GAGxC5yxC,GAAUkV,EAAOhb,MAAMib,EAAOmlC,GAAQ11C,QAAQg2wC,GAAmBsD,IAG7DwU,IACFH,GAAa,EACbvyxC,GAAU,YAAc0yxC,EAAc,UAEpCG,IACFL,GAAe,EACfxyxC,GAAU,OAAS6yxC,EAAgB,eAEjCF,IACF3yxC,GAAU,iBAAmB2yxC,EAAmB,+BAElDx9wC,EAAQmlC,EAAS17C,EAAMpG,OAIhBoG,CACT,IAEAoB,GAAU,OAIV,IAAI+0P,EAAWj9P,GAAeC,KAAKupB,EAAS,aAAeA,EAAQyzO,SACnE,GAAKA,GAKA,GAAIylhC,GAA2Bh3wC,KAAKuxP,GACvC,MAAM,IAAIp1O,GA7ldmB,2DAwld7B3f,EAAS,iBAAmBA,EAAS,QASvCA,GAAUwyxC,EAAexyxC,EAAO4E,QAAQ60wC,EAAsB,IAAMz5wC,GACjE4E,QAAQ80wC,EAAqB,MAC7B90wC,QAAQ+0wC,EAAuB,OAGlC35wC,EAAS,aAAe+0P,GAAY,OAAS,SAC1CA,EACG,GACA,wBAEJ,qBACCw9hC,EACI,mBACA,KAEJC,EACG,uFAEA,OAEJxyxC,EACA,gBAEF,IAAI2b,EAAS0wwC,IAAQ,WACnB,OAAOnxxC,GAASm3xC,EAAazgrC,EAAY,UAAY5xG,GAClDtH,MAAMwtC,EAAWosvC,EACtB,IAKA,GADA32wC,EAAO3b,OAASA,EACZ4qC,GAAQjvB,GACV,MAAMA,EAER,OAAOA,CACT,EA26DA4jwC,GAAOzkH,MApsBP,SAAetjqC,EAAGkvwC,GAEhB,IADAlvwC,EAAI037B,GAAU137B,IACN,GAAKA,EAAIgmC,EACf,MAAO,GAET,IAAIroB,EAAQmjwC,EACR9/wC,EAASsrwC,GAAUtswC,EAAG8gxC,GAE1B5R,EAAWqb,GAAYrb,GACvBlvwC,GAAK8gxC,EAGL,IADA,IAAI38vC,EAASkrvC,GAAUruwC,EAAQkuwC,KACtBvxvC,EAAQ3d,GACfkvwC,EAASvxvC,GAEX,OAAOwG,CACT,EAqrBA4jwC,GAAO4H,SAAWA,GAClB5H,GAAOrwV,UAAYA,GACnBqwV,GAAO79oC,SAAWA,GAClB69oC,GAAOuT,QAx5DP,SAAiBx5xC,GACf,OAAOoD,GAASpD,GAAOoO,aACzB,EAu5DA63wC,GAAOl4jC,SAAWA,GAClBk4jC,GAAOwT,cAvvIP,SAAuBz5xC,GACrB,OAAOA,EACHqnxC,GAAUzxV,GAAU517B,IAAQ,iBAAmBkkC,GACpC,IAAVlkC,EAAcA,EAAQ,CAC7B,EAovIAimxC,GAAO7ixC,SAAWA,GAClB6ixC,GAAOyT,QAn4DP,SAAiB15xC,GACf,OAAOoD,GAASpD,GAAOyvD,aACzB,EAk4DAw2tC,GAAO/0vC,KA12DP,SAActV,EAAQ8xwC,EAAO1ynB,GAE3B,IADAp/oB,EAASxY,GAASwY,MACHo/oB,GAAS0ynB,IAAU9gvC,GAChC,OAAOy3uC,GAASzowC,GAElB,IAAKA,KAAY8xwC,EAAQx1C,GAAaw1C,IACpC,OAAO9xwC,EAET,IAAIq8vC,EAAa79jB,GAAcx+rB,GAC3B4owC,EAAapqkB,GAAcszkB,GAI/B,OAAO3V,GAAUE,EAHLsM,GAAgBtM,EAAYuM,GAC9BC,GAAcxM,EAAYuM,GAAc,GAET94wC,KAAK,GAChD,EA61DAu6wC,GAAO0T,QAx0DP,SAAiB/9wC,EAAQ8xwC,EAAO1ynB,GAE9B,IADAp/oB,EAASxY,GAASwY,MACHo/oB,GAAS0ynB,IAAU9gvC,GAChC,OAAOhxB,EAAOhb,MAAM,EAAGk1wC,GAAgBl6vC,GAAU,GAEnD,IAAKA,KAAY8xwC,EAAQx1C,GAAaw1C,IACpC,OAAO9xwC,EAET,IAAIq8vC,EAAa79jB,GAAcx+rB,GAG/B,OAAOm8vC,GAAUE,EAAY,EAFnBwM,GAAcxM,EAAY79jB,GAAcszkB,IAAU,GAEvBhixC,KAAK,GAC5C,EA6zDAu6wC,GAAOpwC,UAxyDP,SAAmBj6tC,EAAQ8xwC,EAAO1ynB,GAEhC,IADAp/oB,EAASxY,GAASwY,MACHo/oB,GAAS0ynB,IAAU9gvC,GAChC,OAAOhxB,EAAOtQ,QAAQyqwC,GAAa,IAErC,IAAKn6vC,KAAY8xwC,EAAQx1C,GAAaw1C,IACpC,OAAO9xwC,EAET,IAAIq8vC,EAAa79jB,GAAcx+rB,GAG/B,OAAOm8vC,GAAUE,EAFLsM,GAAgBtM,EAAY79jB,GAAcszkB,KAElBhixC,KAAK,GAC3C,EA6xDAu6wC,GAAO55rC,SAtvDP,SAAkBzwE,EAAQoM,GACxB,IAAI9oB,EApydmB,GAqydnB06xC,EApydqB,MAsydzB,GAAI91hC,GAAS97O,GAAU,CACrB,IAAI4+f,EAAY,cAAe5+f,EAAUA,EAAQ4+f,UAAYA,EAC7D1nhB,EAAS,WAAY8oB,EAAU4t6B,GAAU5t6B,EAAQ9oB,QAAUA,EAC3D06xC,EAAW,aAAc5xwC,EAAUkwtC,GAAalwtC,EAAQ4xwC,UAAYA,CACtE,CAGA,IAAIvB,GAFJz8wC,EAASxY,GAASwY,IAEK1c,OACvB,GAAI84wC,GAAWp8vC,GAAS,CACtB,IAAIq8vC,EAAa79jB,GAAcx+rB,GAC/By8wC,EAAYpgB,EAAW/4wC,MACzB,CACA,GAAIA,GAAUm5xC,EACZ,OAAOz8wC,EAET,IAAI0pB,EAAMpmC,EAAS6lxC,GAAW6U,GAC9B,GAAIt0vC,EAAM,EACR,OAAOs0vC,EAET,IAAIv3wC,EAAS41vC,EACTF,GAAUE,EAAY,EAAG3yuC,GAAK55B,KAAK,IACnCkQ,EAAOhb,MAAM,EAAG0kC,GAEpB,GAAIshf,IAAch6e,EAChB,OAAOvqB,EAASu3wC,EAKlB,GAHI3hB,IACF3yuC,GAAQjjB,EAAOnjB,OAASomC,GAEtB2j6B,GAASrib,IACX,GAAIhrgB,EAAOhb,MAAM0kC,GAAK8kB,OAAOw8d,GAAY,CACvC,IAAIthhB,EACA6wB,EAAY9T,EAMhB,IAJKukgB,EAAUh7gB,SACbg7gB,EAAYhgf,GAAOggf,EAAUlghB,OAAQtD,GAASqzwC,GAAQxlwC,KAAK21gB,IAAc,MAE3EA,EAAUx1d,UAAY,EACd9rD,EAAQshhB,EAAU31gB,KAAKklB,IAC7B,IAAI0jwC,EAASv0xC,EAAMuW,MAErBwG,EAASA,EAAOzhB,MAAM,EAAGi5xC,IAAWjtvC,EAAYtH,EAAMu0vC,EACxD,OACK,GAAIj+wC,EAAOvc,QAAQ64uC,GAAatxtB,GAAYthf,IAAQA,EAAK,CAC9D,IAAIzpB,EAAQwG,EAAOy6J,YAAY8pW,GAC3B/qgB,GAAS,IACXwG,EAASA,EAAOzhB,MAAM,EAAGib,GAE7B,CACA,OAAOwG,EAASu3wC,CAClB,EAisDA3T,GAAO/p/B,SA5qDP,SAAkBtgR,GAEhB,OADAA,EAASxY,GAASwY,KACA2kwC,EAAiBr2wC,KAAK0R,GACpCA,EAAOtQ,QAAQg1wC,EAAe2E,IAC9BrpwC,CACN,EAwqDAqqwC,GAAO/8uC,SAvpBP,SAAkB9X,GAChB,IAAIhH,IAAO+6vC,GACX,OAAO/hxC,GAASguB,GAAUhH,CAC5B,EAqpBA67vC,GAAO0M,UAAYA,GACnB1M,GAAO5I,WAAaA,GAGpB4I,GAAOplgB,KAAO98vB,GACdkiwC,GAAO6T,UAAYrJ,GACnBxK,GAAO1iwC,MAAQqiC,GAEf8i5B,GAAMu9U,IACAv/wC,GAAS,CAAC,EACd0pwC,GAAW6V,IAAQ,SAASrnuC,EAAM00B,GAC3B90E,GAAeC,KAAKwnxC,GAAO1nxC,UAAW+0E,KACzC5sE,GAAO4sE,GAAc10B,EAEzB,IACOl4C,IACH,CAAE,OAAS,IAWjBu/wC,GAAOjkoC,QAjmhBK,SAomhBZksnC,GAAU,CAAC,OAAQ,UAAW,QAAS,aAAc,UAAW,iBAAiB,SAAS56rC,GACxF2ysC,GAAO3ysC,GAAYjjB,YAAc41tC,EACnC,IAGA/X,GAAU,CAAC,OAAQ,SAAS,SAAS56rC,EAAYz3D,GAC/CqqwC,GAAY3nxC,UAAU+0E,GAAc,SAASp1E,GAC3CA,EAAIA,IAAM0uC,EAAY,EAAI29tC,GAAU30U,GAAU137B,GAAI,GAElD,IAAImkB,EAAUxjB,KAAKgoxC,eAAiBhrwC,EAChC,IAAIqqwC,GAAYrnxC,MAChBA,KAAKuwB,QAUT,OARI/M,EAAOwkwC,aACTxkwC,EAAO0kwC,cAAgBvc,GAAUtswC,EAAGmkB,EAAO0kwC,eAE3C1kwC,EAAO2kwC,UAAUtmxC,KAAK,CACpB,KAAQ8pwC,GAAUtswC,EAAG8gxC,GACrB,KAAQ1rsC,GAAcjxD,EAAOukwC,QAAU,EAAI,QAAU,MAGlDvkwC,CACT,EAEA6jwC,GAAY3nxC,UAAU+0E,EAAa,SAAW,SAASp1E,GACrD,OAAOW,KAAKs6D,UAAUma,GAAYp1E,GAAGi7D,SACvC,CACF,IAGA+0sC,GAAU,CAAC,SAAU,MAAO,cAAc,SAAS56rC,EAAYz3D,GAC7D,IAAIzQ,EAAOyQ,EAAQ,EACfk+wC,EAllhBe,GAklhBJ3uxC,GAhlhBG,GAglhByBA,EAE3C86wC,GAAY3nxC,UAAU+0E,GAAc,SAAS85rC,GAC3C,IAAI/qvC,EAASxjB,KAAKuwB,QAMlB,OALA/M,EAAOykwC,cAAcpmxC,KAAK,CACxB,SAAY+nxC,GAAYrb,EAAU,GAClC,KAAQhiwC,IAEViX,EAAOwkwC,aAAexkwC,EAAOwkwC,cAAgBkT,EACtC13wC,CACT,CACF,IAGA6rvC,GAAU,CAAC,OAAQ,SAAS,SAAS56rC,EAAYz3D,GAC/C,IAAIm+wC,EAAW,QAAUn+wC,EAAQ,QAAU,IAE3CqqwC,GAAY3nxC,UAAU+0E,GAAc,WAClC,OAAOz0E,KAAKm7xC,GAAU,GAAGh6xC,QAAQ,EACnC,CACF,IAGAkuwC,GAAU,CAAC,UAAW,SAAS,SAAS56rC,EAAYz3D,GAClD,IAAIo+wC,EAAW,QAAUp+wC,EAAQ,GAAK,SAEtCqqwC,GAAY3nxC,UAAU+0E,GAAc,WAClC,OAAOz0E,KAAKgoxC,aAAe,IAAIX,GAAYrnxC,MAAQA,KAAKo7xC,GAAU,EACpE,CACF,IAEA/T,GAAY3nxC,UAAUo5vC,QAAU,WAC9B,OAAO94vC,KAAK6sB,OAAO29J,GACrB,EAEA68lC,GAAY3nxC,UAAUgnC,KAAO,SAASmd,GACpC,OAAO7jD,KAAK6sB,OAAOg3B,GAAWkD,MAChC,EAEAsguC,GAAY3nxC,UAAUkkD,SAAW,SAASC,GACxC,OAAO7jD,KAAKs6D,UAAU5zB,KAAKmd,EAC7B,EAEAwjuC,GAAY3nxC,UAAUoyxC,UAAYhZ,IAAS,SAASzivC,EAAMghB,GACxD,MAAmB,mBAARhhB,EACF,IAAIgxvC,GAAYrnxC,MAElBA,KAAKqvB,KAAI,SAASluB,GACvB,OAAOqoxC,GAAWroxC,EAAOk1B,EAAMghB,EACjC,GACF,IAEAgwuC,GAAY3nxC,UAAU6lB,OAAS,SAASs+B,GACtC,OAAO7jD,KAAK6sB,OAAO2kG,GAAOo4pC,GAAY/luC,IACxC,EAEAwjuC,GAAY3nxC,UAAUqC,MAAQ,SAASykC,EAAOC,GAC5CD,EAAQuw5B,GAAUvw5B,GAElB,IAAIhjB,EAASxjB,KACb,OAAIwjB,EAAOwkwC,eAAiBxhvC,EAAQ,GAAKC,EAAM,GACtC,IAAI4gvC,GAAY7jwC,IAErBgjB,EAAQ,EACVhjB,EAASA,EAAOqzwC,WAAWrwvC,GAClBA,IACThjB,EAASA,EAAO4xwC,KAAK5uvC,IAEnBC,IAAQsH,IAEVvqB,GADAijB,EAAMsw5B,GAAUtw5B,IACD,EAAIjjB,EAAO6xwC,WAAW5uvC,GAAOjjB,EAAOmwxB,KAAKltwB,EAAMD,IAEzDhjB,EACT,EAEA6jwC,GAAY3nxC,UAAUo3xC,eAAiB,SAASjzuC,GAC9C,OAAO7jD,KAAKs6D,UAAUy8tC,UAAUlzuC,GAAWyW,SAC7C,EAEA+stC,GAAY3nxC,UAAUmuH,QAAU,WAC9B,OAAO7tH,KAAK2zyB,KAAKwse,EACnB,EAGA5O,GAAW8V,GAAY3nxC,WAAW,SAASqgD,EAAM00B,GAC/C,IAAI4mtC,EAAgB,qCAAqChwxC,KAAKopE,GAC1D6mtC,EAAU,kBAAkBjwxC,KAAKopE,GACjC8mtC,EAAanU,GAAOkU,EAAW,QAAwB,QAAd7mtC,EAAuB,QAAU,IAAOA,GACjF+mtC,EAAeF,GAAW,QAAQjwxC,KAAKopE,GAEtC8mtC,IAGLnU,GAAO1nxC,UAAU+0E,GAAc,WAC7B,IAAItzE,EAAQnB,KAAK0nxC,YACbrwuC,EAAOikvC,EAAU,CAAC,GAAKl7xC,UACvBq7xC,EAASt6xC,aAAiBkmxC,GAC1B9Y,EAAWl3tC,EAAK,GAChBqkvC,EAAUD,GAAU9pxC,GAAQxQ,GAE5Bs96B,EAAc,SAASt96B,GACzB,IAAIqiB,EAAS+3wC,EAAWh7xC,MAAM6mxC,GAAQzV,GAAU,CAACxwwC,GAAQk2C,IACzD,OAAQikvC,GAAW7T,EAAYjkwC,EAAO,GAAKA,CAC7C,EAEIk4wC,GAAWL,GAAoC,mBAAZ9sB,GAA6C,GAAnBA,EAASluwC,SAExEo7xC,EAASC,GAAU,GAErB,IAAIjU,EAAWznxC,KAAK4nxC,UAChB+T,IAAa37xC,KAAK2nxC,YAAYtnxC,OAC9Bu7xC,EAAcJ,IAAiB/T,EAC/BoU,EAAWJ,IAAWE,EAE1B,IAAKH,GAAgBE,EAAS,CAC5Bv6xC,EAAQ06xC,EAAW16xC,EAAQ,IAAIkmxC,GAAYrnxC,MAC3C,IAAIwjB,EAASu8B,EAAKx/C,MAAMY,EAAOk2C,GAE/B,OADA7zB,EAAOmkwC,YAAY9lxC,KAAK,CAAE,KAAQqrxC,GAAM,KAAQ,CAACzuW,GAAc,QAAW1w4B,IACnE,IAAIu5uC,GAAc9jwC,EAAQikwC,EACnC,CACA,OAAImU,GAAeC,EACV97uC,EAAKx/C,MAAMP,KAAMq3C,IAE1B7zB,EAASxjB,KAAKktxC,KAAKzuW,GACZm9W,EAAeN,EAAU93wC,EAAOriB,QAAQ,GAAKqiB,EAAOriB,QAAWqiB,EACxE,EACF,IAGA6rvC,GAAU,CAAC,MAAO,OAAQ,QAAS,OAAQ,SAAU,YAAY,SAAS56rC,GACxE,IAAI10B,EAAOqo5B,GAAW3z3B,GAClBqntC,EAAY,0BAA0BzwxC,KAAKopE,GAAc,MAAQ,OACjE+mtC,EAAe,kBAAkBnwxC,KAAKopE,GAE1C2ysC,GAAO1nxC,UAAU+0E,GAAc,WAC7B,IAAIp9B,EAAOj3C,UACX,GAAIo7xC,IAAiBx7xC,KAAK4nxC,UAAW,CACnC,IAAIzmxC,EAAQnB,KAAKmB,QACjB,OAAO4+C,EAAKx/C,MAAMoR,GAAQxQ,GAASA,EAAQ,GAAIk2C,EACjD,CACA,OAAOr3C,KAAK87xC,IAAW,SAAS36xC,GAC9B,OAAO4+C,EAAKx/C,MAAMoR,GAAQxQ,GAASA,EAAQ,GAAIk2C,EACjD,GACF,CACF,IAGAk6tC,GAAW8V,GAAY3nxC,WAAW,SAASqgD,EAAM00B,GAC/C,IAAI8mtC,EAAanU,GAAO3ysC,GACxB,GAAI8mtC,EAAY,CACd,IAAI12wC,EAAM02wC,EAAW7wxC,KAAO,GACvB/K,GAAeC,KAAKunxC,GAAWtiwC,KAClCsiwC,GAAUtiwC,GAAO,IAEnBsiwC,GAAUtiwC,GAAKhjB,KAAK,CAAE,KAAQ4yE,EAAY,KAAQ8mtC,GACpD,CACF,IAEApU,GAAUmG,GAAav/uC,EAnwhBA,GAmwhB+BrjC,MAAQ,CAAC,CAC7D,KAAQ,UACR,KAAQqjC,IAIVs5uC,GAAY3nxC,UAAU6wB,MA7/dtB,WACE,IAAI/M,EAAS,IAAI6jwC,GAAYrnxC,KAAK0nxC,aAOlC,OANAlkwC,EAAOmkwC,YAAclY,GAAUzvwC,KAAK2nxC,aACpCnkwC,EAAOukwC,QAAU/nxC,KAAK+nxC,QACtBvkwC,EAAOwkwC,aAAehoxC,KAAKgoxC,aAC3BxkwC,EAAOykwC,cAAgBxY,GAAUzvwC,KAAKioxC,eACtCzkwC,EAAO0kwC,cAAgBloxC,KAAKkoxC,cAC5B1kwC,EAAO2kwC,UAAY1Y,GAAUzvwC,KAAKmoxC,WAC3B3kwC,CACT,EAq/dA6jwC,GAAY3nxC,UAAU46D,QA3+dtB,WACE,GAAIt6D,KAAKgoxC,aAAc,CACrB,IAAIxkwC,EAAS,IAAI6jwC,GAAYrnxC,MAC7BwjB,EAAOukwC,SAAW,EAClBvkwC,EAAOwkwC,cAAe,CACxB,MACExkwC,EAASxjB,KAAKuwB,SACPw3vC,UAAY,EAErB,OAAOvkwC,CACT,EAk+dA6jwC,GAAY3nxC,UAAUyB,MAx9dtB,WACE,IAAI+4C,EAAQl6C,KAAK0nxC,YAAYvmxC,QACzBq4H,EAAMx5H,KAAK+nxC,QACX/8U,EAAQr57B,GAAQuoC,GAChB6uf,EAAUvva,EAAM,EAChBggpC,EAAYxuU,EAAQ9w5B,EAAM75C,OAAS,EACnCknD,EAwrIN,SAAiB/gB,EAAOC,EAAKiqO,GAI3B,IAHA,IAAI1zP,GAAS,EACT3c,EAASqwQ,EAAWrwQ,SAEf2c,EAAQ3c,GAAQ,CACvB,IAAImP,EAAOkhQ,EAAW1zP,GAClB4H,EAAOpV,EAAKoV,KAEhB,OAAQpV,EAAKjD,MACX,IAAK,OAAai6B,GAAS5hB,EAAM,MACjC,IAAK,YAAa6hB,GAAO7hB,EAAM,MAC/B,IAAK,OAAa6hB,EAAMkluC,GAAUlluC,EAAKD,EAAQ5hB,GAAO,MACtD,IAAK,YAAa4hB,EAAQkluC,GAAUlluC,EAAOC,EAAM7hB,GAErD,CACA,MAAO,CAAE,MAAS4hB,EAAO,IAAOC,EAClC,CAxsIaoqG,CAAQ,EAAG2ooC,EAAWx5wC,KAAKmoxC,WAClC3hvC,EAAQ+gB,EAAK/gB,MACbC,EAAM8gB,EAAK9gB,IACXpmC,EAASomC,EAAMD,EACfxpB,EAAQ+rhB,EAAUtigB,EAAOD,EAAQ,EACjC+vuC,EAAYv2wC,KAAKioxC,cACjB8T,EAAaxlB,EAAUl2wC,OACvBmuwC,EAAW,EACXwtB,EAAYrwB,GAAUtrwC,EAAQL,KAAKkoxC,eAEvC,IAAKl9U,IAAWjia,GAAWywuB,GAAan5wC,GAAU27xC,GAAa37xC,EAC7D,OAAO6qxC,GAAiBhxuC,EAAOl6C,KAAK2nxC,aAEtC,IAAInkwC,EAAS,GAEbo4f,EACA,KAAOv7gB,KAAYmuwC,EAAWwtB,GAAW,CAMvC,IAHA,IAAIC,GAAa,EACb96xC,EAAQ+4C,EAHZl9B,GAASw8G,KAKAyiqC,EAAYF,GAAY,CAC/B,IAAIvsxC,EAAO+mwC,EAAU0lB,GACjB1tB,EAAW/+vC,EAAK++vC,SAChBhiwC,EAAOiD,EAAKjD,KACZ8kwC,EAAW9C,EAASptwC,GAExB,GAj0DY,GAi0DRoL,EACFpL,EAAQkwwC,OACH,IAAKA,EAAU,CACpB,GAr0Da,GAq0DT9kwC,EACF,SAASqvgB,EAET,MAAMA,CAEV,CACF,CACAp4f,EAAOgrvC,KAAcrtwC,CACvB,CACA,OAAOqiB,CACT,EA46dA4jwC,GAAO1nxC,UAAU8L,GAAKkmxC,GACtBtK,GAAO1nxC,UAAU8+6B,MA7jQjB,WACE,OAAOA,GAAMx+6B,KACf,EA4jQAonxC,GAAO1nxC,UAAU+wT,OAhiQjB,WACE,OAAO,IAAI629B,GAActnxC,KAAKmB,QAASnB,KAAK4nxC,UAC9C,EA+hQAR,GAAO1nxC,UAAUqB,KAvgQjB,WACMf,KAAK8nxC,aAAe/5uC,IACtB/tC,KAAK8nxC,WAAaj6pC,GAAQ7tH,KAAKmB,UAEjC,IAAID,EAAOlB,KAAK6nxC,WAAa7nxC,KAAK8nxC,WAAWznxC,OAG7C,MAAO,CAAE,KAAQa,EAAM,MAFXA,EAAO6sC,EAAY/tC,KAAK8nxC,WAAW9nxC,KAAK6nxC,aAGtD,EAggQAT,GAAO1nxC,UAAU2txC,MAh9PjB,SAAsBlsxC,GAIpB,IAHA,IAAIqiB,EACA6tE,EAASrxF,KAENqxF,aAAkBm2rC,IAAY,CACnC,IAAIj3vC,EAAQg3vC,GAAal2rC,GACzB9gE,EAAMs3vC,UAAY,EAClBt3vC,EAAMu3vC,WAAa/5uC,EACfvqB,EACFsB,EAAS4iwC,YAAcn3vC,EAEvB/M,EAAS+M,EAEX,IAAIzL,EAAWyL,EACf8gE,EAASA,EAAOq2rC,WAClB,CAEA,OADA5iwC,EAAS4iwC,YAAcvmxC,EAChBqiB,CACT,EA+7PA4jwC,GAAO1nxC,UAAU46D,QAz6PjB,WACE,IAAIn5D,EAAQnB,KAAK0nxC,YACjB,GAAIvmxC,aAAiBkmxC,GAAa,CAChC,IAAI9sO,EAAUp5iC,EAUd,OATInB,KAAK2nxC,YAAYtnxC,SACnBk6iC,EAAU,IAAI8sO,GAAYrnxC,QAE5Bu6iC,EAAUA,EAAQjg/B,WACVqttC,YAAY9lxC,KAAK,CACvB,KAAQqrxC,GACR,KAAQ,CAAC5ytC,IACT,QAAWvsB,IAEN,IAAIu5uC,GAAc/sO,EAASv6iC,KAAK4nxC,UACzC,CACA,OAAO5nxC,KAAKktxC,KAAK5ytC,GACnB,EA05PA8stC,GAAO1nxC,UAAU49C,OAAS8puC,GAAO1nxC,UAAUwJ,QAAUk+wC,GAAO1nxC,UAAUyB,MA14PtE,WACE,OAAO+pxC,GAAiBlrxC,KAAK0nxC,YAAa1nxC,KAAK2nxC,YACjD,EA24PAP,GAAO1nxC,UAAUglB,MAAQ0iwC,GAAO1nxC,UAAUqnD,KAEtCy/tC,KACFY,GAAO1nxC,UAAU8mxC,IAp/PnB,WACE,OAAOxmxC,IACT,GAo/POonxC,EACR,CAKOf,GAQNl2nC,GAAKvsJ,EAAIA,IAIT,aACE,OAAOA,EACR,mCAaL,EAAEhE,KAAKI,uBC12hBP,IAAI4twC,EAAW,EAAQ,OAiDvB,SAASlnoC,EAAQ3mF,EAAMi6G,GACrB,GAAmB,mBAARj6G,GAAmC,MAAZi6G,GAAuC,mBAAZA,EAC3D,MAAM,IAAIn6J,UAhDQ,uBAkDpB,IAAIuyxC,EAAW,WACb,IAAI/6uC,EAAOj3C,UACPykB,EAAMm1I,EAAWA,EAASz5J,MAAMP,KAAMq3C,GAAQA,EAAK,GACnDnkB,EAAQk/vC,EAASl/vC,MAErB,GAAIA,EAAMnnB,IAAI8Y,GACZ,OAAOqO,EAAM/vB,IAAI0hB,GAEnB,IAAIrB,EAASu8B,EAAKx/C,MAAMP,KAAMq3C,GAE9B,OADA+6uC,EAASl/vC,MAAQA,EAAMjnB,IAAI4Y,EAAKrB,IAAW0P,EACpC1P,CACT,EAEA,OADA4uwC,EAASl/vC,MAAQ,IAAKwzG,EAAQ2rpC,OAASzkB,GAChCwkB,CACT,CAGA1rpC,EAAQ2rpC,MAAQzkB,EAEhB9wuC,EAAOr6B,QAAUikI,mBCxEjB,IAAIivoC,EAAY,EAAQ,OAkCpB70gC,EAjCiB,EAAQ,MAiCjByrhC,EAAe,SAASnvuC,EAAQv1C,EAAQ+twC,GAClDD,EAAUv4tC,EAAQv1C,EAAQ+twC,EAC5B,IAEA94uC,EAAOr6B,QAAUq+P,aCtBjBhkO,EAAOr6B,QAJP,WAEA,mBCdA,IAAI0tJ,EAAO,EAAQ,MAsBnBrzH,EAAOr6B,QAJG,WACR,OAAO0tJ,EAAK3kI,KAAKC,KACnB,mBCpBA,IAAI4nwC,EAAW,EAAQ,OAoBnBz65B,EAnBW,EAAQ,MAmBZo05B,EAAS,SAAS5vuC,EAAQmhM,GACnC,OAAiB,MAAVnhM,EAAiB,CAAC,EAAIi2uC,EAASj2uC,EAAQmhM,EAChD,IAEAzhN,EAAOr6B,QAAUm2X,mBCxBjB,IAAIqs5B,EAAe,EAAQ,OACvByP,EAAmB,EAAQ,OAC3Bpf,EAAQ,EAAQ,OAChB7ivC,EAAQ,EAAQ,OA4BpBqK,EAAOr6B,QAJP,SAAkB4zB,GAChB,OAAOi/uC,EAAMj/uC,GAAQ4uvC,EAAaxyvC,EAAM4D,IAASq+vC,EAAiBr+vC,EACpE,mBC7BA,IAuBI4sB,EAvBc,EAAQ,MAuBdqsuC,CAAY,SAExBxyvC,EAAOr6B,QAAUwgD,mBCzBjB,IAAI4utC,EAAc,EAAQ,OACtB8X,EAAc,EAAQ,OACtB7Q,EAAW,EAAQ,OACnBC,EAAiB,EAAQ,OA+BzBiZ,EAASlZ,GAAS,SAAS36gC,EAAYo4gC,GACzC,GAAkB,MAAdp4gC,EACF,MAAO,GAET,IAAI99P,EAASk2wC,EAAUl2wC,OAMvB,OALIA,EAAS,GAAK04wC,EAAe56gC,EAAYo4gC,EAAU,GAAIA,EAAU,IACnEA,EAAY,GACHl2wC,EAAS,GAAK04wC,EAAexC,EAAU,GAAIA,EAAU,GAAIA,EAAU,MAC5EA,EAAY,CAACA,EAAU,KAElBoT,EAAYxrhC,EAAY0zgC,EAAY0E,EAAW,GAAI,GAC5D,IAEAz5uC,EAAOr6B,QAAUuvxC,aCzBjBl1vC,EAAOr6B,QAJP,WACE,MAAO,EACT,aCHAq6B,EAAOr6B,QAJP,WACE,OAAO,CACT,mBCfA,IAAIysN,EAAW,EAAQ,OAyCvBpyL,EAAOr6B,QAZP,SAAkBtB,GAChB,OAAKA,EA3BQ,YA8BbA,EAAQ+tN,EAAS/tN,KACSA,KAAU,IA9BpB,uBA+BFA,EAAQ,GAAK,EAAI,GAGxBA,GAAUA,EAAQA,EAAQ,EAPd,IAAVA,EAAcA,EAAQ,CAQjC,mBCvCA,IAAI6txC,EAAW,EAAQ,OAmCvBlyvC,EAAOr6B,QAPP,SAAmBtB,GACjB,IAAIqiB,EAASwrwC,EAAS7txC,GAClBw/8B,EAAYn97B,EAAS,EAEzB,OAAOA,GAAWA,EAAUm97B,EAAYn97B,EAASm97B,EAAYn97B,EAAU,CACzE,mBCjCA,IAAIgiwC,EAAW,EAAQ,OACnBvghC,EAAW,EAAQ,OACnB2mgC,EAAW,EAAQ,OAMnBT,EAAa,qBAGbC,EAAa,aAGbC,EAAY,cAGZC,EAAe31uC,SA8CnBmH,EAAOr6B,QArBP,SAAkBtB,GAChB,GAAoB,iBAATA,EACT,OAAOA,EAET,GAAIyqwC,EAASzqwC,GACX,OA1CM,IA4CR,GAAI8jQ,EAAS9jQ,GAAQ,CACnB,IAAI06C,EAAgC,mBAAjB16C,EAAM+H,QAAwB/H,EAAM+H,UAAY/H,EACnEA,EAAQ8jQ,EAASppN,GAAUA,EAAQ,GAAMA,CAC3C,CACA,GAAoB,iBAAT16C,EACT,OAAiB,IAAVA,EAAcA,GAASA,EAEhCA,EAAQqkxC,EAASrkxC,GACjB,IAAI0yQ,EAAWu3/B,EAAW//vC,KAAKlK,GAC/B,OAAQ0yQ,GAAYw3/B,EAAUhgwC,KAAKlK,GAC/BmqwC,EAAanqwC,EAAMY,MAAM,GAAI8xQ,EAAW,EAAI,GAC3Cs3/B,EAAW9/vC,KAAKlK,GAvDb,KAuD6BA,CACvC,mBC7DA,IAAIguwC,EAAa,EAAQ,OACrBC,EAAS,EAAQ,OA8BrBtyuC,EAAOr6B,QAJP,SAAuBtB,GACrB,OAAOguwC,EAAWhuwC,EAAOiuwC,EAAOjuwC,GAClC,mBC7BA,IAAIk4uC,EAAe,EAAQ,OA2B3Bv8sC,EAAOr6B,QAJP,SAAkBtB,GAChB,OAAgB,MAATA,EAAgB,GAAKk4uC,EAAal4uC,EAC3C,mBCzBA,IAAI2pxC,EAAW,EAAQ,OAwBvBhuvC,EAAOr6B,QAJP,SAAcy3C,GACZ,OAAQA,GAASA,EAAM75C,OAAUyqxC,EAAS5wuC,GAAS,EACrD,mBCtBA,IAAIi8tC,EAAe,EAAQ,OACvB2U,EAAW,EAAQ,OA6BvBhuvC,EAAOr6B,QAJP,SAAgBy3C,EAAOq0tC,GACrB,OAAQr0tC,GAASA,EAAM75C,OAAUyqxC,EAAS5wuC,EAAOi8tC,EAAa5H,EAAU,IAAM,EAChF,mBC5BA,IAAIhqwC,EAAW,EAAQ,OAGnB+hxC,EAAY,EAwBhBxpvC,EAAOr6B,QALP,SAAkB8vB,GAChB,IAAIhH,IAAO+6vC,EACX,OAAO/hxC,EAASguB,GAAUhH,CAC5B,mBCzBA,IAmBIizvC,EAnBkB,EAAQ,MAmBbgO,CAAgB,eAEjC1vvC,EAAOr6B,QAAU+7wC,uBCrBjB,aAyB0B,0BAAP,EAMV,WACL,aAYA,SAAS0d,EAAKxltC,EAAKD,EAAMu2I,GAMrBhtN,KAAK02E,IAAY,EAANA,EAMX12E,KAAKy2E,KAAc,EAAPA,EAMZz2E,KAAKgtN,WAAaA,CACtB,CAuCA,SAASC,EAAOC,GACZ,OAAsC,KAA9BA,GAAOA,EAAgB,WACnC,CAhBAgvkC,EAAKx8xC,UAAU2tN,WAEf/tN,OAAO4D,eAAeg5xC,EAAKx8xC,UAAW,aAAc,CAChDyB,OAAO,EACPwC,YAAY,EACZG,cAAc,IAmBlBo4xC,EAAKjvkC,OAASA,EAOd,IAAIK,EAAY,CAAC,EAObC,EAAa,CAAC,EAQlB,SAASC,EAAQrsN,EAAO6rN,GACpB,IAAIE,EAAKO,EAAWv6L,EACpB,OAAI85L,GAEI95L,EAAS,IADb/xB,KAAW,IACgBA,EAAQ,OAC/BssN,EAAYF,EAAWpsN,IAEZssN,GAEfP,EAAMQ,EAASvsN,GAAgB,EAARA,GAAa,GAAK,EAAI,GAAG,GAC5C+xB,IACAq6L,EAAWpsN,GAAS+rN,GACjBA,IAGHh6L,GAAU,MADd/xB,GAAS,IACqBA,EAAQ,OAClCssN,EAAYH,EAAUnsN,IAEXssN,GAEfP,EAAMQ,EAASvsN,EAAOA,EAAQ,GAAK,EAAI,GAAG,GACtC+xB,IACAo6L,EAAUnsN,GAAS+rN,GAChBA,EAEf,CAiBA,SAASS,EAAWxsN,EAAO6rN,GACvB,GAAI1gL,MAAMnrC,KAAWumC,SAASvmC,GAC1B,OAAO6rN,EAAWY,EAAQC,EAC9B,GAAIb,EAAU,CACV,GAAI7rN,EAAQ,EACR,OAAOysN,EACX,GAAIzsN,GAAS2sN,EACT,OAAOC,CACf,KAAO,CACH,GAAI5sN,IAAU6sN,EACV,OAAOC,EACX,GAAI9sN,EAAQ,GAAK6sN,EACb,OAAO9iC,CACf,CACA,OAAI/pL,EAAQ,EACDwsN,GAAYxsN,EAAO6rN,GAAUkB,MACjCR,EAAUvsN,EAAQgtN,EAAkB,EAAIhtN,EAAQgtN,EAAkB,EAAGnB,EAChF,CAkBA,SAASU,EAASU,EAASC,EAAUrB,GACjC,OAAO,IAAIkvkC,EAAK9tkC,EAASC,EAAUrB,EACvC,CA7CAkvkC,EAAK1ukC,QAAUA,EAkCf0ukC,EAAKvukC,WAAaA,EAsBlBuukC,EAAKxukC,SAAWA,EAShB,IAAIY,EAAUzrN,KAAK6yF,IASnB,SAAS64H,EAAW53I,EAAKq2I,EAAUx2I,GAC/B,GAAmB,IAAfG,EAAIt2E,OACJ,MAAMmnB,MAAM,gBAChB,GAAY,QAARmvD,GAAyB,aAARA,GAA8B,cAARA,GAA+B,cAARA,EAC9D,OAAOk3I,EASX,GARwB,iBAAbb,GAEPx2I,EAAQw2I,EACRA,GAAW,GAEXA,IAAcA,GAElBx2I,EAAQA,GAAS,IACL,GAAK,GAAKA,EAClB,MAAM7tD,WAAW,SAErB,IAAI7lB,EACJ,IAAKA,EAAI6zE,EAAIn2E,QAAQ,MAAQ,EACzB,MAAMgnB,MAAM,mBACX,GAAU,IAAN1kB,EACL,OAAOyrN,EAAW53I,EAAIr/C,UAAU,GAAI01L,EAAUx2I,GAAO03I,MAQzD,IAHA,IAAIM,EAAeb,EAAWW,EAAQ93I,EAAO,IAEzChzD,EAASqqM,EACJjtN,EAAI,EAAGA,EAAI+1E,EAAIt2E,OAAQO,GAAK,EAAG,CACpC,IAAIgkB,EAAO/hB,KAAKgL,IAAI,EAAG8oE,EAAIt2E,OAASO,GAChCO,EAAQw0B,SAASghD,EAAIr/C,UAAU12B,EAAGA,EAAIgkB,GAAO4xD,GACjD,GAAI5xD,EAAO,EAAG,CACV,IAAI6pM,EAAQd,EAAWW,EAAQ93I,EAAO5xD,IACtCpB,EAASA,EAAOkrM,IAAID,GAAOtpM,IAAIwoM,EAAWxsN,GAC9C,MAEIqiB,GADAA,EAASA,EAAOkrM,IAAIF,IACJrpM,IAAIwoM,EAAWxsN,GAEvC,CAEA,OADAqiB,EAAOwpM,SAAWA,EACXxpM,CACX,CAkBA,SAASklI,EAAUg1B,GACf,OAAIA,aAAmCw+mC,EAC5Bx+mC,EACQ,iBAARA,EACAiwC,EAAWjwC,GACH,iBAARA,EACA6wC,EAAW7wC,GAEfgwC,EAAShwC,EAAIhnG,IAAKgnG,EAAIjnG,KAAMinG,EAAIsvC,SAC3C,CAjBAkvkC,EAAK3tkC,WAAaA,EAyBlB2tkC,EAAKxzoC,UAAYA,EAUjB,IAcIylE,EAAiBQ,WAOjBb,EAAiBK,EAAiBA,EAOlCH,EAAiBF,EAAiB,EAOlCc,EAAapB,EA5BI,GAAK,IAkCtBK,EAAOL,EAAQ,GAMnB0ukC,EAAKrukC,KAAOA,EAMZ,IAAID,EAAQJ,EAAQ,GAAG,GAMvB0ukC,EAAKtukC,MAAQA,EAMb,IAAIiB,EAAMrB,EAAQ,GAMlB0ukC,EAAKrtkC,IAAMA,EAMX,IAAIC,EAAOtB,EAAQ,GAAG,GAMtB0ukC,EAAKptkC,KAAOA,EAMZ,IAAIC,EAAUvB,GAAS,GAMvB0ukC,EAAKntkC,QAAUA,EAMf,IAAI7jC,EAAYwiC,GAAS,EAAc,YAAc,GAMrDwukC,EAAKhxmC,UAAYA,EAMjB,IAAI6iC,EAAqBL,GAAS,GAAc,GAAc,GAM9DwukC,EAAKnukC,mBAAqBA,EAM1B,IAAIE,EAAYP,EAAS,GAAG,YAAc,GAM1CwukC,EAAKjukC,UAAYA,EAMjB,IAAIe,EAAgBktkC,EAAKx8xC,UAsuBzB,OAhuBAsvN,EAAcC,MAAQ,WAClB,OAAOjvN,KAAKgtN,SAAWhtN,KAAK02E,MAAQ,EAAI12E,KAAK02E,GACjD,EAMAs4I,EAAcE,SAAW,WACrB,OAAIlvN,KAAKgtN,UACIhtN,KAAKy2E,OAAS,GAAK03I,GAAmBnuN,KAAK02E,MAAQ,GACzD12E,KAAKy2E,KAAO03I,GAAkBnuN,KAAK02E,MAAQ,EACtD,EASAs4I,EAAczqN,SAAW,SAAkBiyE,GAEvC,IADAA,EAAQA,GAAS,IACL,GAAK,GAAKA,EAClB,MAAM7tD,WAAW,SACrB,GAAI3oB,KAAK+vM,SACL,MAAO,IACX,GAAI/vM,KAAKmvN,aAAc,CACnB,GAAInvN,KAAKovN,GAAGnB,GAAY,CAGpB,IAAIoB,EAAY1B,EAAWn3I,GACvB84I,EAAMtvN,KAAKsvN,IAAID,GACfE,EAAOD,EAAIZ,IAAIW,GAAWn6L,IAAIl1B,MAClC,OAAOsvN,EAAI/qN,SAASiyE,GAAS+4I,EAAKN,QAAQ1qN,SAASiyE,EACvD,CACI,MAAO,IAAMx2E,KAAKkuN,MAAM3pN,SAASiyE,EACzC,CAOA,IAHA,IAAIg4I,EAAeb,EAAWW,EAAQ93I,EAAO,GAAIx2E,KAAKgtN,UAClDwC,EAAMxvN,KACNwjB,EAAS,KACA,CACT,IAAIisM,EAASD,EAAIF,IAAId,GAEjBkB,GADSF,EAAIt6L,IAAIu6L,EAAOf,IAAIF,IAAeS,UAAY,GACvC1qN,SAASiyE,GAE7B,IADAg5I,EAAMC,GACE1f,SACJ,OAAO2f,EAASlsM,EAEhB,KAAOksM,EAAOrvN,OAAS,GACnBqvN,EAAS,IAAMA,EACnBlsM,EAAS,GAAKksM,EAASlsM,CAE/B,CACJ,EAMAwrM,EAAcW,YAAc,WACxB,OAAO3vN,KAAKy2E,IAChB,EAMAu4I,EAAcY,oBAAsB,WAChC,OAAO5vN,KAAKy2E,OAAS,CACzB,EAMAu4I,EAAca,WAAa,WACvB,OAAO7vN,KAAK02E,GAChB,EAMAs4I,EAAcc,mBAAqB,WAC/B,OAAO9vN,KAAK02E,MAAQ,CACxB,EAMAs4I,EAAce,cAAgB,WAC1B,GAAI/vN,KAAKmvN,aACL,OAAOnvN,KAAKovN,GAAGnB,GAAa,GAAKjuN,KAAKkuN,MAAM6B,gBAEhD,IADA,IAAIryC,EAAmB,GAAb19K,KAAKy2E,KAAYz2E,KAAKy2E,KAAOz2E,KAAK02E,IACnC+mG,EAAM,GAAIA,EAAM,GACK,IAArBC,EAAO,GAAKD,GADOA,KAG5B,OAAoB,GAAbz9K,KAAKy2E,KAAYgnG,EAAM,GAAKA,EAAM,CAC7C,EAMAuxC,EAAcjf,OAAS,WACnB,OAAqB,IAAd/vM,KAAKy2E,MAA2B,IAAbz2E,KAAK02E,GACnC,EAMAs4I,EAAcG,WAAa,WACvB,OAAQnvN,KAAKgtN,UAAYhtN,KAAKy2E,KAAO,CACzC,EAMAu4I,EAAciB,WAAa,WACvB,OAAOjwN,KAAKgtN,UAAYhtN,KAAKy2E,MAAQ,CACzC,EAMAu4I,EAAckB,MAAQ,WAClB,OAA0B,IAAP,EAAXlwN,KAAK02E,IACjB,EAMAs4I,EAAcmB,OAAS,WACnB,OAA0B,IAAP,EAAXnwN,KAAK02E,IACjB,EAOAs4I,EAAcz8E,OAAS,SAAgB12F,GAGnC,OAFKoxK,EAAOpxK,KACRA,EAAQ6sG,EAAU7sG,KAClB77C,KAAKgtN,WAAanxK,EAAMmxK,UAAahtN,KAAKy2E,OAAS,IAAQ,GAAM56B,EAAM46B,OAAS,IAAQ,IAErFz2E,KAAKy2E,OAAS56B,EAAM46B,MAAQz2E,KAAK02E,MAAQ76B,EAAM66B,GAC1D,EAQAs4I,EAAcI,GAAKJ,EAAcz8E,OAOjCy8E,EAAcoB,UAAY,SAAmBv0K,GACzC,OAAQ77C,KAAKovN,GAAmBvzK,EACpC,EAQAmzK,EAAcqB,IAAMrB,EAAcoB,UAOlCpB,EAAcxhB,SAAW,SAAkB3xJ,GACvC,OAAO77C,KAAKswN,KAAqBz0K,GAAS,CAC9C,EAQAmzK,EAAcpjN,GAAKojN,EAAcxhB,SAOjCwhB,EAAcuB,gBAAkB,SAAyB10K,GACrD,OAAO77C,KAAKswN,KAAqBz0K,IAAU,CAC/C,EAQAmzK,EAAcwB,IAAMxB,EAAcuB,gBAOlCvB,EAAcyB,YAAc,SAAqB50K,GAC7C,OAAO77C,KAAKswN,KAAqBz0K,GAAS,CAC9C,EAQAmzK,EAAc3hN,GAAK2hN,EAAcyB,YAOjCzB,EAAc0B,mBAAqB,SAA4B70K,GAC3D,OAAO77C,KAAKswN,KAAqBz0K,IAAU,CAC/C,EAQAmzK,EAAc2B,IAAM3B,EAAc0B,mBAQlC1B,EAAc9kG,QAAU,SAAiBruE,GAGrC,GAFKoxK,EAAOpxK,KACRA,EAAQ6sG,EAAU7sG,IAClB77C,KAAKovN,GAAGvzK,GACR,OAAO,EACX,IAAI+0K,EAAU5wN,KAAKmvN,aACf0B,EAAWh1K,EAAMszK,aACrB,OAAIyB,IAAYC,GACJ,GACPD,GAAWC,EACL,EAEN7wN,KAAKgtN,SAGFnxK,EAAM46B,OAAS,EAAMz2E,KAAKy2E,OAAS,GAAO56B,EAAM46B,OAASz2E,KAAKy2E,MAAS56B,EAAM66B,MAAQ,EAAM12E,KAAK02E,MAAQ,GAAO,EAAI,EAFhH12E,KAAKk1B,IAAI2mB,GAAOszK,cAAgB,EAAI,CAGnD,EASAH,EAAcsB,KAAOtB,EAAc9kG,QAMnC8kG,EAAcx9F,OAAS,WACnB,OAAKxxH,KAAKgtN,UAAYhtN,KAAKovN,GAAGnB,GACnBA,EACJjuN,KAAK8wN,MAAM3rM,IAAI0pM,EAC1B,EAOAG,EAAcd,IAAMc,EAAcx9F,OAOlCw9F,EAAc7pM,IAAM,SAAa4rM,GACxB9D,EAAO8D,KACRA,EAASroE,EAAUqoE,IAIvB,IAAIC,EAAMhxN,KAAKy2E,OAAS,GACpBw6I,EAAkB,MAAZjxN,KAAKy2E,KACXy6I,EAAMlxN,KAAK02E,MAAQ,GACnBy6I,EAAiB,MAAXnxN,KAAK02E,IAEX06I,EAAML,EAAOt6I,OAAS,GACtB46I,EAAoB,MAAdN,EAAOt6I,KACb66I,EAAMP,EAAOr6I,MAAQ,GAGrB66I,EAAM,EAAGC,EAAM,EAAGC,EAAM,EAAGC,EAAM,EAYrC,OAVAD,IADAC,GAAOP,GAHgB,MAAbJ,EAAOr6I,QAIF,GAGf86I,IADAC,GAAOP,EAAMI,KACE,GAGfC,IADAC,GAAOP,EAAMI,KACE,GAEfE,GAAOP,EAAMI,EAEN1D,GANP+D,GAAO,QAMiB,IATxBC,GAAO,QAQPH,GAAO,QACoC,IAH3CC,GAAO,OAG+CxxN,KAAKgtN,SAC/D,EAOAgC,EAAc5sC,SAAW,SAAkBuvC,GAGvC,OAFK1E,EAAO0E,KACRA,EAAajpE,EAAUipE,IACpB3xN,KAAKmlB,IAAIwsM,EAAWzD,MAC/B,EAQAc,EAAc95L,IAAM85L,EAAc5sC,SAOlC4sC,EAAcxH,SAAW,SAAkBt+E,GACvC,GAAIlpI,KAAK+vM,SACL,OAAO8d,EAGX,GAFKZ,EAAO/jF,KACRA,EAAawf,EAAUxf,IACvBA,EAAW6mE,SACX,OAAO8d,EACX,GAAI7tN,KAAKovN,GAAGnB,GACR,OAAO/kF,EAAWgnF,QAAUjC,EAAYJ,EAC5C,GAAI3kF,EAAWkmF,GAAGnB,GACd,OAAOjuN,KAAKkwN,QAAUjC,EAAYJ,EAEtC,GAAI7tN,KAAKmvN,aACL,OAAIjmF,EAAWimF,aACJnvN,KAAKkuN,MAAMQ,IAAIxlF,EAAWglF,OAE1BluN,KAAKkuN,MAAMQ,IAAIxlF,GAAYglF,MACnC,GAAIhlF,EAAWimF,aAClB,OAAOnvN,KAAK0uN,IAAIxlF,EAAWglF,OAAOA,MAGtC,GAAIluN,KAAK4L,GAAGgjN,IAAe1lF,EAAWt9H,GAAGgjN,GACrC,OAAOjB,EAAW3tN,KAAKkvN,WAAahmF,EAAWgmF,WAAYlvN,KAAKgtN,UAKpE,IAAIgE,EAAMhxN,KAAKy2E,OAAS,GACpBw6I,EAAkB,MAAZjxN,KAAKy2E,KACXy6I,EAAMlxN,KAAK02E,MAAQ,GACnBy6I,EAAiB,MAAXnxN,KAAK02E,IAEX06I,EAAMloF,EAAWzyD,OAAS,GAC1B46I,EAAwB,MAAlBnoF,EAAWzyD,KACjB66I,EAAMpoF,EAAWxyD,MAAQ,GACzBk7I,EAAuB,MAAjB1oF,EAAWxyD,IAEjB66I,EAAM,EAAGC,EAAM,EAAGC,EAAM,EAAGC,EAAM,EAqBrC,OAnBAD,IADAC,GAAOP,EAAMS,KACE,GAGfJ,IADAC,GAAOP,EAAMU,KACE,GACfH,GAAO,MAEPD,IADAC,GAAON,EAAMG,KACE,GAGfC,IADAC,GAAOP,EAAMW,KACE,GACfJ,GAAO,MAEPD,IADAC,GAAON,EAAMI,KACE,GACfE,GAAO,MAEPD,IADAC,GAAOL,EAAME,KACE,GAEfE,GAAOP,EAAMY,EAAMX,EAAMK,EAAMJ,EAAMG,EAAMF,EAAMC,EAE1C1D,GAZP+D,GAAO,QAYiB,IAlBxBC,GAAO,QAiBPH,GAAO,QACoC,IAH3CC,GAAO,OAG+CxxN,KAAKgtN,SAC/D,EAQAgC,EAAcN,IAAMM,EAAcxH,SAQlCwH,EAAc6C,OAAS,SAAgBvpF,GAGnC,GAFK2kF,EAAO3kF,KACRA,EAAUogB,EAAUpgB,IACpBA,EAAQynE,SACR,MAAMvoL,MAAM,oBAChB,GAAIxnB,KAAK+vM,SACL,OAAO/vM,KAAKgtN,SAAWY,EAAQC,EACnC,IAAIiE,EAAQtC,EAAKnqE,EACjB,GAAKrlJ,KAAKgtN,SA6BH,CAKH,GAFK1kF,EAAQ0kF,WACT1kF,EAAUA,EAAQypF,cAClBzpF,EAAQj7H,GAAGrN,MACX,OAAO4tN,EACX,GAAItlF,EAAQj7H,GAAGrN,KAAKgyN,KAAK,IACrB,OAAOlD,EACXzpE,EAAMuoE,CACV,KAvCoB,CAGhB,GAAI5tN,KAAKovN,GAAGnB,GACR,OAAI3lF,EAAQ8mF,GAAGP,IAAQvmF,EAAQ8mF,GAAGL,GACvBd,EACF3lF,EAAQ8mF,GAAGnB,GACTY,GAIPiD,EADe9xN,KAAKiyN,IAAI,GACN3C,IAAIhnF,GAAS4pF,IAAI,IACxB9C,GAAGvB,GACHvlF,EAAQ6mF,aAAeN,EAAME,GAEpCS,EAAMxvN,KAAKk1B,IAAIozG,EAAQomF,IAAIoD,IAC3BzsE,EAAMysE,EAAO3sM,IAAIqqM,EAAIF,IAAIhnF,KAI9B,GAAIA,EAAQ8mF,GAAGnB,GAClB,OAAOjuN,KAAKgtN,SAAWY,EAAQC,EACnC,GAAI7tN,KAAKmvN,aACL,OAAI7mF,EAAQ6mF,aACDnvN,KAAKkuN,MAAMoB,IAAIhnF,EAAQ4lF,OAC3BluN,KAAKkuN,MAAMoB,IAAIhnF,GAAS4lF,MAC5B,GAAI5lF,EAAQ6mF,aACf,OAAOnvN,KAAKsvN,IAAIhnF,EAAQ4lF,OAAOA,MACnC7oE,EAAMwoE,CACV,CAkBA,IADA2B,EAAMxvN,KACCwvN,EAAImB,IAAIroF,IAAU,CAGrBwpF,EAASjvN,KAAK8K,IAAI,EAAG9K,KAAKyK,MAAMkiN,EAAIN,WAAa5mF,EAAQ4mF,aAWzD,IAPA,IAAIhmL,EAAOrmC,KAAKuK,KAAKvK,KAAKwnB,IAAIynM,GAAUjvN,KAAKsvN,KACzCpsG,EAAS78E,GAAQ,GAAM,EAAIolL,EAAQ,EAAGplL,EAAO,IAI7CkpL,EAAYzE,EAAWmE,GACvBO,EAAYD,EAAU1D,IAAIpmF,GACvB+pF,EAAUlD,cAAgBkD,EAAUhlN,GAAGmiN,IAG1C6C,GADAD,EAAYzE,EADZmE,GAAU/rG,EACqB/lH,KAAKgtN,WACd0B,IAAIpmF,GAK1B8pF,EAAUriB,WACVqiB,EAAYvD,GAEhBxpE,EAAMA,EAAIlgI,IAAIitM,GACd5C,EAAMA,EAAIt6L,IAAIm9L,EAClB,CACA,OAAOhtE,CACX,EAQA2pE,EAAcM,IAAMN,EAAc6C,OAOlC7C,EAAcsD,OAAS,SAAgBhqF,GAGnC,OAFK2kF,EAAO3kF,KACRA,EAAUogB,EAAUpgB,IACjBtoI,KAAKk1B,IAAIl1B,KAAKsvN,IAAIhnF,GAASomF,IAAIpmF,GAC1C,EAQA0mF,EAAcp4I,IAAMo4I,EAAcsD,OAMlCtD,EAAc8B,IAAM,WAChB,OAAOpD,GAAU1tN,KAAK02E,KAAM12E,KAAKy2E,KAAMz2E,KAAKgtN,SAChD,EAOAgC,EAAc2D,IAAM,SAAa92K,GAG7B,OAFKoxK,EAAOpxK,KACRA,EAAQ6sG,EAAU7sG,IACf6xK,EAAS1tN,KAAK02E,IAAM76B,EAAM66B,IAAK12E,KAAKy2E,KAAO56B,EAAM46B,KAAMz2E,KAAKgtN,SACvE,EAOAgC,EAAc75M,GAAK,SAAY0mC,GAG3B,OAFKoxK,EAAOpxK,KACRA,EAAQ6sG,EAAU7sG,IACf6xK,EAAS1tN,KAAK02E,IAAM76B,EAAM66B,IAAK12E,KAAKy2E,KAAO56B,EAAM46B,KAAMz2E,KAAKgtN,SACvE,EAOAgC,EAAc4D,IAAM,SAAa/2K,GAG7B,OAFKoxK,EAAOpxK,KACRA,EAAQ6sG,EAAU7sG,IACf6xK,EAAS1tN,KAAK02E,IAAM76B,EAAM66B,IAAK12E,KAAKy2E,KAAO56B,EAAM46B,KAAMz2E,KAAKgtN,SACvE,EAOAgC,EAAc6D,UAAY,SAAmBC,GAGzC,OAFI7F,EAAO6F,KACPA,EAAUA,EAAQ7D,SACE,IAAnB6D,GAAW,IACL9yN,KACF8yN,EAAU,GACRpF,EAAS1tN,KAAK02E,KAAOo8I,EAAU9yN,KAAKy2E,MAAQq8I,EAAY9yN,KAAK02E,MAAS,GAAKo8I,EAAW9yN,KAAKgtN,UAE3FU,EAAS,EAAG1tN,KAAK02E,KAAQo8I,EAAU,GAAK9yN,KAAKgtN,SAC5D,EAQAgC,EAAckD,IAAMlD,EAAc6D,UAOlC7D,EAAc+D,WAAa,SAAoBD,GAG3C,OAFI7F,EAAO6F,KACPA,EAAUA,EAAQ7D,SACE,IAAnB6D,GAAW,IACL9yN,KACF8yN,EAAU,GACRpF,EAAU1tN,KAAK02E,MAAQo8I,EAAY9yN,KAAKy2E,MAAS,GAAKq8I,EAAW9yN,KAAKy2E,MAAQq8I,EAAS9yN,KAAKgtN,UAE5FU,EAAS1tN,KAAKy2E,MAASq8I,EAAU,GAAK9yN,KAAKy2E,MAAQ,EAAI,GAAK,EAAGz2E,KAAKgtN,SACnF,EAQAgC,EAAciD,IAAMjD,EAAc+D,WAOlC/D,EAAcgE,mBAAqB,SAA4BF,GAI3D,GAHI7F,EAAO6F,KACPA,EAAUA,EAAQ7D,SAEN,IADhB6D,GAAW,IAEP,OAAO9yN,KAEP,IAAIy2E,EAAOz2E,KAAKy2E,KAChB,OAAIq8I,EAAU,GAEHpF,EADG1tN,KAAK02E,MACUo8I,EAAYr8I,GAAS,GAAKq8I,EAAWr8I,IAASq8I,EAAS9yN,KAAKgtN,UAE9EU,EADY,KAAZoF,EACSr8I,EAEAA,IAAUq8I,EAAU,GAFd,EAAG9yN,KAAKgtN,SAI1C,EAQAgC,EAAcgD,KAAOhD,EAAcgE,mBAMnChE,EAAcoE,SAAW,WACrB,OAAKpzN,KAAKgtN,SAEHU,EAAS1tN,KAAK02E,IAAK12E,KAAKy2E,MAAM,GAD1Bz2E,IAEf,EAMAgvN,EAAc+C,WAAa,WACvB,OAAI/xN,KAAKgtN,SACEhtN,KACJ0tN,EAAS1tN,KAAK02E,IAAK12E,KAAKy2E,MAAM,EACzC,EAOAu4I,EAAcqE,QAAU,SAASjsN,GAC7B,OAAOA,EAAKpH,KAAKszN,YAActzN,KAAKuzN,WACxC,EAMAvE,EAAcsE,UAAY,WACtB,IAAI11M,EAAK5d,KAAKy2E,KACV98D,EAAK3Z,KAAK02E,IACd,MAAO,CACW,IAAb/8D,EACAA,IAAQ,EAAK,IACbA,IAAO,GAAM,IACbA,IAAO,GAAM,IACA,IAAbiE,EACAA,IAAQ,EAAK,IACbA,IAAO,GAAM,IACbA,IAAO,GAAM,IAEtB,EAMAoxM,EAAcuE,UAAY,WACtB,IAAI31M,EAAK5d,KAAKy2E,KACV98D,EAAK3Z,KAAK02E,IACd,MAAO,CACF94D,IAAO,GAAM,IACbA,IAAO,GAAM,IACbA,IAAQ,EAAK,IACA,IAAbA,EACAjE,IAAO,GAAM,IACbA,IAAO,GAAM,IACbA,IAAQ,EAAK,IACA,IAAbA,EAET,EAEOuixC,CACX,GA/pC0B,UAAX,IAAW,ovBCrB1B,MAAMC,EAAoB,4BACpBC,EAAa,OACnB,IAAIC,GAEJ,SAAWA,GACTA,EAAcA,EAAmB,IAAI,GAAK,MAC1CA,EAAcA,EAAmB,IAAI,GAAK,MAC1CA,EAAcA,EAAmB,IAAI,GAAK,MAC1CA,EAAcA,EAAmB,IAAI,GAAK,MAC1CA,EAAcA,EAAmB,IAAI,GAAK,MAC1CA,EAAcA,EAAmB,IAAI,GAAK,KAC3C,CAPD,CAOGA,IAAkBA,EAAgB,CAAC,IAEvB,MAAMC,UAAc,IACjC,cAAWC,GACT,OAAOF,EAAcE,GACvB,CAEA,cAAWC,GACT,OAAOH,EAAcG,GACvB,CAEA,cAAWC,GACT,OAAOJ,EAAcI,GACvB,CAEA,cAAWC,GACT,OAAOL,EAAcK,GACvB,CAEA,cAAWC,GACT,OAAON,EAAcM,GACvB,CAEA,cAAWC,GACT,OAAOP,EAAcO,GACvB,CAEA,uBAAWC,GACT,OAAOR,EAAcE,GACvB,CAEA,uBAAWO,GACT,OAAOT,EAAcE,GACvB,CAEA,yBAAWQ,GACT,OAAOV,CACT,CAEA,oBAAOW,CAAc/ppC,GACnB,OAAOoppC,EAAcpppC,EACvB,CAEA,YAAIglN,GACF,OAAO,CACT,CAEA,WAAAh4V,CAAYgE,EAAI,EAAGjB,EAAI,EAAG2C,EAAI,EAAGstI,EAAQqppC,EAAMQ,cAC7CtvvC,OAAO,GAAI,GAAI,GAAI,GAEfptC,UAAUC,OAAS,GAAKZ,MAAMkS,QAAQvR,UAAU,IAClDJ,KAAKogW,eAAehgW,WAEpBJ,KAAKiM,IAAIhI,EAAGjB,EAAG2C,EAAGstI,EAEtB,CAEA,cAAAkyC,CAAeR,GACb,MAAO1gL,EAAGjB,EAAG2C,EAAGpC,GAAKohL,EACfs4mC,EAAOj6xC,EAAIA,EACXsgyB,GAAM,GAAK25f,EAAOt3xC,EAAIA,GAAK,EAC3BwpL,EAAK,GAAMlrL,EAAIjB,EAAIO,EAAIoC,GAC7B,IAAIypL,GAAM,GAAKnrL,EAAI0B,EAAIpC,EAAIP,GAC3B,MAAM+jxB,EAAK,GAAM/jxB,EAAI2C,EAAIpC,EAAIU,GACvBi5xC,GAAM,GAAKj5xC,EAAIA,EAAIg5xC,GAAQ,EACjC7tmC,EAAKA,EAAK,EAAI,EAAIA,EAClBA,EAAKA,GAAM,GAAK,EAAIA,EACpB,MAAMkmE,EAAOzyP,KAAK0xH,MAAMwypB,EAAIm2gB,GACtBx9vC,EAAQ78B,KAAK2xH,KAAK46D,GAClBimE,EAAMxyP,KAAK0xH,MAAM46D,EAAIm0mB,GAC3B,OAAOtjyB,KAAKiM,IAAIqpP,EAAM51N,EAAO21N,EAAKiniC,EAAMO,aAC1C,CAEA,UAAA1k8B,CAAW/6S,GACT,MAAM,IAAI51B,MAAM,kBAClB,CAEA,IAAAs4G,CAAK5lF,GAKH,OAJAl6C,KAAK,GAAKk6C,EAAM,GAChBl6C,KAAK,GAAKk6C,EAAM,GAChBl6C,KAAK,GAAKk6C,EAAM,GAChBl6C,KAAK,GAAKmlC,OAAOuC,SAASwS,EAAM,KAAOl6C,KAAKizI,MACrCjzI,KAAKwhV,OACd,CAEA,GAAAv1U,CAAIhI,EAAI,EAAGjB,EAAI,EAAG2C,EAAI,EAAGstI,GAKvB,OAJAjzI,KAAK,GAAKiE,EACVjE,KAAK,GAAKgD,EACVhD,KAAK,GAAK2F,EACV3F,KAAK,GAAKmlC,OAAOuC,SAASurG,GAASA,EAAQjzI,KAAK,GACzCA,KAAKwhV,OACd,CAEA,QAAAtrP,GACE,OAobmB/0F,EApbEnB,KAAK,KAqbZ,GAAKmB,EAAQ,GArbMgkC,OAAOuC,SAAS1nC,KAAK,KAAOmlC,OAAOuC,SAAS1nC,KAAK,KAAOmlC,OAAOuC,SAAS1nC,KAAK,IAoblH,IAAuBmB,CAnbrB,CAEA,OAAA0sH,CAAQ3zE,EAAQ,GAAIiI,EAAS,GAI3B,OAHAjI,EAAMiI,GAAUniD,KAAK,GACrBk6C,EAAMiI,EAAS,GAAKniD,KAAK,GACzBk6C,EAAMiI,EAAS,GAAKniD,KAAK,GAClBk6C,CACT,CAEA,QAAAijvC,CAASjjvC,EAAQ,GAAIiI,EAAS,GAK5B,OAJAjI,EAAMiI,GAAUniD,KAAK,GACrBk6C,EAAMiI,EAAS,GAAKniD,KAAK,GACzBk6C,EAAMiI,EAAS,GAAKniD,KAAK,GACzBk6C,EAAMiI,EAAS,GAAKniD,KAAK,GAClBk6C,CACT,CAEA,SAAAu/E,CAAUj2G,EAAS,EAAE,GAAI,GAAI,IAI3B,OAHAA,EAAO,GAAKxjB,KAAK,GACjBwjB,EAAO,GAAKxjB,KAAK,GACjBwjB,EAAO,GAAKxjB,KAAK,GACVwjB,CACT,CAEA,KAAIvf,GACF,OAAOjE,KAAK,EACd,CAEA,KAAIiE,CAAE9C,GACJnB,KAAK,IAAK,QAAYmB,EACxB,CAEA,KAAI6B,GACF,OAAOhD,KAAK,EACd,CAEA,KAAIgD,CAAE7B,GACJnB,KAAK,IAAK,QAAYmB,EACxB,CAEA,KAAIwE,GACF,OAAO3F,KAAK,EACd,CAEA,KAAI2F,CAAExE,GACJnB,KAAK,IAAK,QAAYmB,EACxB,CAEA,SAAIkkR,GACF,OAAOrlR,KAAK,EACd,CAEA,SAAIqlR,CAAMlkR,GACRnB,KAAK,IAAK,QAAYmB,EACxB,CAEA,QAAI68L,GACF,OAAOh+L,KAAK,EACd,CAEA,QAAIg+L,CAAK78L,GACPnB,KAAK,IAAK,QAAYmB,EACxB,CAEA,SAAIu6L,GACF,OAAO17L,KAAK,EACd,CAEA,SAAI07L,CAAMv6L,GACRnB,KAAK,IAAK,QAAYmB,EACxB,CAEA,OAAIiyH,GACF,OAAOpzH,KAAK,EACd,CAEA,OAAIozH,CAAIjyH,GACNnB,KAAK,IAAK,QAAYmB,EACxB,CAEA,SAAI+oT,GACF,OAAOlqT,KAAK,EACd,CAEA,SAAIkqT,CAAM/oT,GACRnB,KAAK,IAAK,QAAYmB,EACxB,CAEA,OAAI6w+B,GACF,OAAOhy+B,KAAK,EACd,CAEA,OAAIgy+B,CAAI7w+B,GACNnB,KAAK,IAAK,QAAYmB,EACxB,CAEA,QAAIm0P,GACF,OAAOt1P,KAAK,EACd,CAEA,QAAIs1P,CAAKn0P,GACPnB,KAAK,IAAK,QAAYmB,EACxB,CAEA,SAAIu+B,GACF,OAAO1/B,KAAK,EACd,CAEA,SAAI0/B,CAAMv+B,GACRnB,KAAK,IAAK,QAAYmB,EACxB,CAEA,OAAIk0P,GACF,OAAOr1P,KAAK,EACd,CAEA,OAAIq1P,CAAIl0P,GACNnB,KAAK,IAAK,QAAYmB,EACxB,CAEA,SAAI8xI,GACF,OAAOjzI,KAAK,EACd,CAEA,SAAIizI,CAAM9xI,GACRnB,KAAK,GA0TT,SAAoBmB,GAClB,GAAIA,EAAQ,GAAKA,GAAS,EACxB,MAAM,IAAIqmB,MAAM20wC,GAGlB,OAAOh7xC,CACT,CAhUci8xC,CAAWj8xC,EACvB,CAEA,WAAAi/V,CAAYn9V,EAAGgwI,GACb,OAAOjzI,KAAKiM,IAAIhJ,EAAE,GAAIA,EAAE,GAAIA,EAAE,GAAIkiC,OAAOuC,SAASurG,GAASA,EAAQjzI,KAAK,GAC1E,CAEA,SAAAu6L,CAAUrgJ,EAAOiI,EAAS,GASxB,OARAniD,KAAK,GAAKk6C,EAAM,EAAIiI,GACpBniD,KAAK,GAAKk6C,EAAM,EAAIiI,GACpBniD,KAAK,GAAKk6C,EAAM,EAAIiI,QAEHpU,IAAbmM,EAAM,KACRl6C,KAAK,GAAKk6C,EAAM,IAGXl6C,KAAKwhV,OACd,CAEA,gBAAA678B,CAAiB/niC,EAAM51N,EAAO21N,GAC5B,OAAOr1P,KAAKiM,IAAIqpP,EAAM51N,EAAO21N,EAAKgniC,EAAcE,IAClD,CAEA,kBAAAe,CAAmBl6xC,EAAG6vI,EAAQqppC,EAAMQ,cAGlC,OAFA98xC,KAAKu9xC,oBAAoBn6xC,EAAG6vI,GAErBjzI,KAAKwhV,OACd,CAEA,iBAAAg88B,CAAkBp6xC,GAChB,OAAOpD,KAAKy9xC,mBAAmBr6xC,EACjC,CAEA,aAAAs6xC,GACE,MAAMx3xC,EAAI,IAAI,IAEd,OAAQlG,KAAK,IACX,KAAKq8xC,EAAcO,IACjB,OAAO12xC,EAAE4wH,QAAQ92H,KAAK,IAAIg3H,QAAQh3H,KAAK,IAAI+2H,QAAQ/2H,KAAK,IAE1D,KAAKq8xC,EAAcG,IACjB,OAAOt2xC,EAAE8wH,QAAQh3H,KAAK,IAAI82H,QAAQ92H,KAAK,IAAI+2H,QAAQ/2H,KAAK,IAE1D,KAAKq8xC,EAAcK,IACjB,OAAOx2xC,EAAE6wH,QAAQ/2H,KAAK,IAAI82H,QAAQ92H,KAAK,IAAIg3H,QAAQh3H,KAAK,IAE1D,KAAKq8xC,EAAcE,IACjB,OAAOr2xC,EAAE6wH,QAAQ/2H,KAAK,IAAIg3H,QAAQh3H,KAAK,IAAI82H,QAAQ92H,KAAK,IAE1D,KAAKq8xC,EAAcM,IACjB,OAAOz2xC,EAAE8wH,QAAQh3H,KAAK,IAAI+2H,QAAQ/2H,KAAK,IAAI82H,QAAQ92H,KAAK,IAE1D,KAAKq8xC,EAAcI,IACjB,OAAOv2xC,EAAE4wH,QAAQ92H,KAAK,IAAI+2H,QAAQ/2H,KAAK,IAAIg3H,QAAQh3H,KAAK,IAE1D,QACE,MAAM,IAAIwnB,MAAM20wC,GAEtB,CAEA,mBAAAoB,CAAoBn6xC,EAAG6vI,EAAQqppC,EAAMQ,cACnC,MAAMhi8B,EAAM13V,EAAE,GACR63V,EAAM73V,EAAE,GACR64V,EAAM74V,EAAE,GACR23V,EAAM33V,EAAE,GACR83V,EAAM93V,EAAE,GACR84V,EAAM94V,EAAE,GACR04V,EAAM14V,EAAE,GACR24V,EAAM34V,EAAE,GACR+4V,EAAM/4V,EAAE,IAGd,OAFA6vI,EAAQA,GAASjzI,KAAK,IAGpB,KAAKs8xC,EAAMM,IACT58xC,KAAK,GAAK6C,KAAK2xH,MAAK,QAAMynO,GAAM,EAAG,IAE/Bp5V,KAAKmjH,IAAIi2O,GAAOmg8B,GAClBp8xC,KAAK,GAAK6C,KAAK0xH,OAAO2nO,EAAKC,GAC3Bn8V,KAAK,GAAK6C,KAAK0xH,OAAO0mO,EAAKH,KAE3B96V,KAAK,GAAK6C,KAAK0xH,MAAMwnO,EAAKb,GAC1Bl7V,KAAK,GAAK,GAGZ,MAEF,KAAKs8xC,EAAME,IACTx8xC,KAAK,GAAK6C,KAAK2xH,OAAM,QAAM0nO,GAAM,EAAG,IAEhCr5V,KAAKmjH,IAAIk2O,GAAOkg8B,GAClBp8xC,KAAK,GAAK6C,KAAK0xH,MAAM0nO,EAAKE,GAC1Bn8V,KAAK,GAAK6C,KAAK0xH,MAAMwmO,EAAKG,KAE1Bl7V,KAAK,GAAK6C,KAAK0xH,OAAOunO,EAAKhB,GAC3B96V,KAAK,GAAK,GAGZ,MAEF,KAAKs8xC,EAAMI,IACT18xC,KAAK,GAAK6C,KAAK2xH,MAAK,QAAMunO,GAAM,EAAG,IAE/Bl5V,KAAKmjH,IAAI+1O,GAAOqg8B,GAClBp8xC,KAAK,GAAK6C,KAAK0xH,OAAOunO,EAAKK,GAC3Bn8V,KAAK,GAAK6C,KAAK0xH,OAAO0mO,EAAKC,KAE3Bl7V,KAAK,GAAK,EACVA,KAAK,GAAK6C,KAAK0xH,MAAMwmO,EAAKD,IAG5B,MAEF,KAAKwh8B,EAAMC,IACTv8xC,KAAK,GAAK6C,KAAK2xH,OAAM,QAAMsnO,GAAM,EAAG,IAEhCj5V,KAAKmjH,IAAI81O,GAAOsg8B,GAClBp8xC,KAAK,GAAK6C,KAAK0xH,MAAMwnO,EAAKI,GAC1Bn8V,KAAK,GAAK6C,KAAK0xH,MAAMwmO,EAAKD,KAE1B96V,KAAK,GAAK,EACVA,KAAK,GAAK6C,KAAK0xH,OAAO0mO,EAAKC,IAG7B,MAEF,KAAKoh8B,EAAMK,IACT38xC,KAAK,GAAK6C,KAAK2xH,MAAK,QAAMumO,GAAM,EAAG,IAE/Bl4V,KAAKmjH,IAAI+0O,GAAOqh8B,GAClBp8xC,KAAK,GAAK6C,KAAK0xH,OAAO2nO,EAAKhB,GAC3Bl7V,KAAK,GAAK6C,KAAK0xH,OAAOunO,EAAKhB,KAE3B96V,KAAK,GAAK,EACVA,KAAK,GAAK6C,KAAK0xH,MAAM0nO,EAAKE,IAG5B,MAEF,KAAKmg8B,EAAMG,IACTz8xC,KAAK,GAAK6C,KAAK2xH,OAAM,QAAMymO,GAAM,EAAG,IAEhCp4V,KAAKmjH,IAAIi1O,GAAOmh8B,GAClBp8xC,KAAK,GAAK6C,KAAK0xH,MAAMwnO,EAAKb,GAC1Bl7V,KAAK,GAAK6C,KAAK0xH,MAAM0nO,EAAKnB,KAE1B96V,KAAK,GAAK6C,KAAK0xH,OAAO2nO,EAAKC,GAC3Bn8V,KAAK,GAAK,GAGZ,MAEF,QACE,MAAM,IAAIwnB,MAAM20wC,GAIpB,OADAn8xC,KAAK,GAAKizI,EACHjzI,IACT,CAEA,kBAAAy9xC,CAAmBj6wC,GACjB,MAAM9c,EAAK8c,GAAU,EAAE,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC7Evf,EAAIjE,KAAKiE,EACTjB,EAAIhD,KAAKgD,EACT2C,EAAI3F,KAAK2F,EACT3E,EAAI6B,KAAKuxH,IAAInwH,GACbpD,EAAIgC,KAAKuxH,IAAIpxH,GACb7D,EAAI0D,KAAKuxH,IAAIzuH,GACbrC,EAAIT,KAAK4wH,IAAIxvH,GACbtB,EAAIE,KAAK4wH,IAAIzwH,GACbN,EAAIG,KAAK4wH,IAAI9tH,GAEnB,OAAQ3F,KAAK,IACX,KAAKs8xC,EAAMM,IACT,CACE,MAAM31xC,EAAKjG,EAAI7B,EACTw+xC,EAAK38xC,EAAI0B,EACTsF,EAAK1E,EAAInE,EACTy+xC,EAAKt6xC,EAAIZ,EACfgE,EAAG,GAAK7F,EAAI1B,EACZuH,EAAG,IAAM7F,EAAI6B,EACbgE,EAAG,GAAK/D,EACR+D,EAAG,GAAKi3xC,EAAK31xC,EAAKrF,EAClB+D,EAAG,GAAKO,EAAK22xC,EAAKj7xC,EAClB+D,EAAG,IAAMpD,EAAIzC,EACb6F,EAAG,GAAKk3xC,EAAK32xC,EAAKtE,EAClB+D,EAAG,GAAKsB,EAAK21xC,EAAKh7xC,EAClB+D,EAAG,IAAM1F,EAAIH,EACb,KACF,CAEF,KAAKy7xC,EAAME,IACT,CACE,MAAMx1xC,EAAKnG,EAAI1B,EACT0+xC,EAAKh9xC,EAAI6B,EACT4E,EAAK3E,EAAIxD,EACT2+xC,EAAKn7xC,EAAID,EACfgE,EAAG,GAAKM,EAAK82xC,EAAKx6xC,EAClBoD,EAAG,GAAKY,EAAKhE,EAAIu6xC,EACjBn3xC,EAAG,GAAK1F,EAAI2B,EACZ+D,EAAG,GAAK1F,EAAI0B,EACZgE,EAAG,GAAK1F,EAAI7B,EACZuH,EAAG,IAAMpD,EACToD,EAAG,GAAKm3xC,EAAKv6xC,EAAIgE,EACjBZ,EAAG,GAAKo3xC,EAAK92xC,EAAK1D,EAClBoD,EAAG,IAAM1F,EAAIH,EACb,KACF,CAEF,KAAKy7xC,EAAMI,IACT,CACE,MAAM11xC,EAAKnG,EAAI1B,EACT0+xC,EAAKh9xC,EAAI6B,EACT4E,EAAK3E,EAAIxD,EACT2+xC,EAAKn7xC,EAAID,EACfgE,EAAG,GAAKM,EAAK82xC,EAAKx6xC,EAClBoD,EAAG,IAAM1F,EAAI0B,EACbgE,EAAG,GAAKY,EAAKu2xC,EAAKv6xC,EAClBoD,EAAG,GAAKm3xC,EAAKv2xC,EAAKhE,EAClBoD,EAAG,GAAK1F,EAAI7B,EACZuH,EAAG,GAAKo3xC,EAAK92xC,EAAK1D,EAClBoD,EAAG,IAAM1F,EAAI2B,EACb+D,EAAG,GAAKpD,EACRoD,EAAG,IAAM1F,EAAIH,EACb,KACF,CAEF,KAAKy7xC,EAAMC,IACT,CACE,MAAMt1xC,EAAKjG,EAAI7B,EACTw+xC,EAAK38xC,EAAI0B,EACTsF,EAAK1E,EAAInE,EACTy+xC,EAAKt6xC,EAAIZ,EACfgE,EAAG,GAAK7F,EAAI1B,EACZuH,EAAG,GAAKsB,EAAKrF,EAAIg7xC,EACjBj3xC,EAAG,GAAKO,EAAKtE,EAAIi7xC,EACjBl3xC,EAAG,GAAK7F,EAAI6B,EACZgE,EAAG,GAAKk3xC,EAAKj7xC,EAAIsE,EACjBP,EAAG,GAAKi3xC,EAAKh7xC,EAAIqF,EACjBtB,EAAG,IAAM/D,EACT+D,EAAG,GAAKpD,EAAIzC,EACZ6F,EAAG,IAAM1F,EAAIH,EACb,KACF,CAEF,KAAKy7xC,EAAMK,IACT,CACE,MAAMj6wC,EAAK1hB,EAAIH,EACTyx8B,EAAKtx8B,EAAI2B,EACTyhB,EAAK9gB,EAAIzC,EACTiovC,EAAKxlvC,EAAIX,EACf+D,EAAG,GAAK7F,EAAI1B,EACZuH,EAAG,GAAKoivC,EAAKpmuC,EAAKhgB,EAClBgE,EAAG,GAAK0d,EAAK1hB,EAAI4v8B,EACjB5r8B,EAAG,GAAKhE,EACRgE,EAAG,GAAK1F,EAAI7B,EACZuH,EAAG,IAAMpD,EAAInE,EACbuH,EAAG,IAAM/D,EAAIxD,EACbuH,EAAG,GAAK4r8B,EAAK5v8B,EAAI0hB,EACjB1d,EAAG,IAAMgc,EAAKomuC,EAAKpmvC,EACnB,KACF,CAEF,KAAK45xC,EAAMG,IACT,CACE,MAAM/5wC,EAAK1hB,EAAIH,EACTyx8B,EAAKtx8B,EAAI2B,EACTyhB,EAAK9gB,EAAIzC,EACTiovC,EAAKxlvC,EAAIX,EACf+D,EAAG,GAAK7F,EAAI1B,EACZuH,EAAG,IAAMhE,EACTgE,EAAG,GAAK/D,EAAIxD,EACZuH,EAAG,GAAKgc,EAAKhgB,EAAIomvC,EACjBpivC,EAAG,GAAK1F,EAAI7B,EACZuH,EAAG,GAAK4r8B,EAAK5v8B,EAAI0hB,EACjB1d,EAAG,GAAK0d,EAAK1hB,EAAI4v8B,EACjB5r8B,EAAG,GAAKpD,EAAInE,EACZuH,EAAG,IAAMoivC,EAAKpmvC,EAAIggB,EAClB,KACF,CAEF,QACE,MAAM,IAAI8E,MAAM20wC,GAUpB,OAPAz1xC,EAAG,GAAK,EACRA,EAAG,GAAK,EACRA,EAAG,IAAM,EACTA,EAAG,IAAM,EACTA,EAAG,IAAM,EACTA,EAAG,IAAM,EACTA,EAAG,IAAM,EACFA,CACT,CAEA,YAAAq3xC,GACE,MAAM927B,EAAKpkW,KAAKuxH,IAAe,GAAXp0H,KAAKq1P,KACnBiiG,EAAKz0V,KAAK4wH,IAAe,GAAXzzH,KAAKq1P,KACnBhgP,EAAKxS,KAAKuxH,IAAgB,GAAZp0H,KAAKs1P,MACnB//O,EAAK1S,KAAK4wH,IAAgB,GAAZzzH,KAAKs1P,MACnBE,EAAK3yP,KAAKuxH,IAAiB,GAAbp0H,KAAK0/B,OACnB61N,EAAK1yP,KAAK4wH,IAAiB,GAAbzzH,KAAK0/B,OACnBn8B,EAAI0jW,EAAK5xV,EAAKmgP,EAAK8hG,EAAK/hV,EAAKggP,EAC7BtxP,EAAIgjW,EAAK1xV,EAAKigP,EAAK8hG,EAAKjiV,EAAKkgP,EAC7BvyP,EAAIikW,EAAK5xV,EAAKkgP,EAAK+hG,EAAK/hV,EAAKigP,EAC7B7vP,EAAI2xV,EAAKjiV,EAAKmgP,EAAKyxG,EAAK1xV,EAAKggP,EACnC,OAAO,IAAI,IAAWtxP,EAAGjB,EAAG2C,EAAGpC,EACjC,ECzhBa,MAAMy6xC,EACnB,WAAA/9xC,EAAY,EACVgE,EAAI,EAAC,EACLjB,EAAI,EAAC,EACL2C,EAAI,EAAC,KACL2vP,EAAO,EAAC,MACR51N,EAAQ,EAAC,IACT21N,EAAM,EAAC,SACP12N,EAAQ,YACRy2N,GACE,CAAC,IACH,OAAgBp1P,KAAM,gBAAY,IAElC,OAAgBA,KAAM,mBAAe,GAEjCP,MAAMkS,QAAQgtB,IAAiC,IAApBA,EAASt+B,OACtCL,KAAK2+B,SAAW,IAAI,IAAQA,GAE5B3+B,KAAK2+B,SAAW,IAAI,IAAQ16B,EAAGjB,EAAG2C,GAGhClG,MAAMkS,QAAQyjP,IAAuC,IAAvBA,EAAY/0P,OAC5CL,KAAKo1P,YAAc,IAAIkniC,EAAMlniC,EAAaA,EAAY,IAEtDp1P,KAAKo1P,YAAc,IAAIkniC,EAAMhniC,EAAM51N,EAAO21N,EAAKiniC,EAAMO,aAEzD,CAEA,KAAI54xC,GACF,OAAOjE,KAAK2+B,SAAS16B,CACvB,CAEA,KAAIA,CAAE9C,GACJnB,KAAK2+B,SAAS16B,EAAI9C,CACpB,CAEA,KAAI6B,GACF,OAAOhD,KAAK2+B,SAAS37B,CACvB,CAEA,KAAIA,CAAE7B,GACJnB,KAAK2+B,SAAS37B,EAAI7B,CACpB,CAEA,KAAIwE,GACF,OAAO3F,KAAK2+B,SAASh5B,CACvB,CAEA,KAAIA,CAAExE,GACJnB,KAAK2+B,SAASh5B,EAAIxE,CACpB,CAEA,QAAIm0P,GACF,OAAOt1P,KAAKo1P,YAAYE,IAC1B,CAEA,QAAIA,CAAKn0P,GACPnB,KAAKo1P,YAAYE,KAAOn0P,CAC1B,CAEA,SAAIu+B,GACF,OAAO1/B,KAAKo1P,YAAY11N,KAC1B,CAEA,SAAIA,CAAMv+B,GACRnB,KAAKo1P,YAAY11N,MAAQv+B,CAC3B,CAEA,OAAIk0P,GACF,OAAOr1P,KAAKo1P,YAAYC,GAC1B,CAEA,OAAIA,CAAIl0P,GACNnB,KAAKo1P,YAAYC,IAAMl0P,CACzB,CAEA,WAAAmpK,GACE,OAAOtqK,KAAK2+B,QACd,CAEA,cAAAm0N,GACE,OAAO9yP,KAAKo1P,WACd,CAEA,MAAA7iH,CAAO0rpC,GACL,QAAKA,GAIEj+xC,KAAK2+B,SAAS4zG,OAAO0rpC,EAAKt/vC,WAAa3+B,KAAKo1P,YAAY7iH,OAAO0rpC,EAAK7oiC,YAC7E,CAEA,WAAAojG,CAAYyl8B,GACV,QAAKA,GAIEj+xC,KAAK2+B,SAAS65T,YAAYyl8B,EAAKt/vC,WAAa3+B,KAAKo1P,YAAYojG,YAAYyl8B,EAAK7oiC,YACvF,CAEA,uBAAA8oiC,GACE,MAAM3oxC,EAAK1S,KAAK4wH,IAAIzzH,KAAKs1P,MACnBC,EAAK1yP,KAAK4wH,IAAIzzH,KAAK0/B,OACnBgqM,EAAK7mO,KAAK4wH,IAAIzzH,KAAKq1P,KACnBhgP,EAAKxS,KAAKuxH,IAAIp0H,KAAKs1P,MACnBE,EAAK3yP,KAAKuxH,IAAIp0H,KAAK0/B,OACnB+1N,EAAK5yP,KAAKuxH,IAAIp0H,KAAKq1P,KACzB,OAAO,IAAI,KAAU8lG,YAAY1lG,EAAKD,GAAK9rB,EAAKr0N,EAAKogP,EAAKF,EAAKhgP,EAAIm0N,EAAKn0N,EAAKkgP,EAAKF,EAAKlgP,EAAIrV,KAAKiE,EAAGylO,EAAK8rB,EAAIC,EAAKpgP,EAAKq0N,EAAK6rB,EAAKhgP,GAAKkgP,EAAKlgP,EAAKm0N,EAAK6rB,EAAKlgP,EAAIrV,KAAKgD,GAAIuyP,EAAIC,EAAKjgP,EAAIigP,EAAKngP,EAAIrV,KAAK2F,EAAG,EAAG,EAAG,EAAG,EAC/M,CAEA,+BAAAw4xC,CAAgCF,GAC9B,OAAO,IAAI,KAAU5+nC,cAAcr/J,KAAKk+xC,2BAA2B7+nC,cAAc4+nC,EAAKC,0BAA0Bt/nC,SAClH,CAEA,6BAAAw/nC,CAA8BH,GAC5B,OAAO,IAAI,KAAU5+nC,cAAc4+nC,EAAKC,2BAA2B7+nC,cAAcr/J,KAAKk+xC,0BAA0Bt/nC,SAClH,2ECxHF,IAAIy/nC,EAAYl5vC,OAAOmH,OACnB,SAAkBnrC,GACd,MAAwB,iBAAVA,GAAsBA,GAAUA,CAClD,EAUJ,SAASm9xC,EAAeC,EAAWC,GAC/B,GAAID,EAAUl+xC,SAAWm+xC,EAAWn+xC,OAChC,OAAO,EAEX,IAAK,IAAIO,EAAI,EAAGA,EAAI29xC,EAAUl+xC,OAAQO,IAClC,MAdS8jB,EAcI65wC,EAAU39xC,OAdP40F,EAcWgpsC,EAAW59xC,KAVtCy9xC,EAAU35wC,IAAU25wC,EAAU7osC,IAW1B,OAAO,EAfnB,IAAiB9wE,EAAO8wE,EAkBpB,OAAO,CACX,CAyBA,QAvBA,SAAoBipsC,EAAU56nC,GAE1B,IAAIiomC,OADY,IAAZjomC,IAAsBA,EAAUy6nC,GAEpC,IACI7myB,EADAo0wB,EAAW,GAEX6yB,GAAa,EAejB,OAdA,WAEI,IADA,IAAIC,EAAU,GACLlgxC,EAAK,EAAGA,EAAKre,UAAUC,OAAQoe,IACpCkgxC,EAAQlgxC,GAAMre,UAAUqe,GAE5B,OAAIigxC,GAAc5yB,IAAa9rwC,MAAQ6jK,EAAQ86nC,EAAS9yB,KAGxDp0wB,EAAagnyB,EAASl+xC,MAAMP,KAAM2+xC,GAClCD,GAAa,EACb5yB,EAAW9rwC,KACX6rwC,EAAW8yB,GALAlnyB,CAOf,CAEJ,gCCnCA,IAAIzxc,EAAe,EAAQ,OACvB44uC,EAAgBt/xC,OAAOY,OAAO,MAC9B2+xC,EAAiC,oBAAb15xC,SACpB+f,EAAUzlB,MAAMC,UAAUwlB,QAuB9B,SAAS49B,IAAQ,CAgDjB,SAASg8uC,EAAUjlpC,EAAI3pH,GACrB,IAAKA,EAAK,CACR,IAAK2pH,EAAG5+G,KACN,OAIF/K,EAAM2pH,EAAG5+G,KAAKr2B,MAAM,KAAK,EAC3B,CACA,GAAKm6xC,EAAmC7uwC,KAGpB,IAAhB2pH,EAAGxP,UAKFn6G,GAASA,EAAI1vB,QAAQ,SAAW,EAArC,CAKAq5I,EAAGmkE,SAAU,EACb,IAAI2t+B,EAAQ9xiC,EAAGypgB,YACfqoiB,EAAMthjC,UAAW,EACjBshjC,EAAMh/pC,iBAAiB,QAAQ,WACzBg/pC,EAAMthjC,WAGVshjC,EAAMthjC,UAAW,EACjBwP,EAAGn4G,WAAW7E,YAAYg9G,GAC5B,IACA8xiC,EAAMh/pC,iBAAiB,SAAS,WAC1Bg/pC,EAAMthjC,WAGVshjC,EAAMthjC,UAAW,EACjBwP,EAAGn4G,WAAW7E,YAAYg9G,GAC5B,IACA8xiC,EAAM1wpC,KAAO,GAAGj5B,OAAOkuB,EAAK,KAAKluB,OAAOwpB,KAAKC,OACzCouH,EAAGzvD,YACLyvD,EAAGn4G,WAAWC,aAAagqpC,EAAO9xiC,EAAGzvD,aAErCyvD,EAAGn4G,WAAWntB,YAAYo3qC,EAxB5B,CA0BF,CAqDA,SAAS96/B,IACP,IAAI2jI,EAAWrvT,SAAS+pF,iBAAiB,QACzChqE,EAAQtlB,KAAK40T,GAAU,SAAU36K,IACZ,IAAfA,EAAGmkE,SAGP8glC,EAAUjlpC,EACZ,GACF,CAMA,SAASklpC,EAAa7uwC,GAIpB,QAAK,4BAA4B7kB,KAAK6kB,EAIxC,CAOA4M,EAAOr6B,QAAU,SAAUy26B,EAAU/v5B,GACnC,GAAI01wC,EAEF,OADAx3wC,QAAQgD,IAAI,8CACLy4B,EAET,IApMgB5xC,EACZkgB,EAmMA4twC,EA9KN,SAA6B9lX,GAC3B,IAAI1k6B,EAAMoqxC,EAAc1lX,GACxB,IAAK1k6B,EAAK,CACR,GAAIrP,SAAS8/uC,cACXzwuC,EAAwCrP,SAAsB,cAAEqP,QAC3D,CACL,IAAIwkG,EAAU7zG,SAASs8B,qBAAqB,UACxCw9vC,EAAgBjmrC,EAAQA,EAAQ34G,OAAS,GACzC4+xC,IACFzqxC,EAAMyqxC,EAAczqxC,IAExB,CACAoqxC,EAAc1lX,GAAY1k6B,CAC5B,CAMA,OAAO,SAAU0qxC,GACf,IAAK1qxC,EACH,OAAO,KAET,IAAI2qxC,EAAc3qxC,EAAI5P,MAAM,kBACxB4iQ,EAAW23hC,GAAeA,EAAY,GAC1C,OAAK33hC,GAGA03hC,EAGEA,EAAQt6xC,MAAM,KAAKyqB,KAAI,SAAU+vwC,GACtC,IAAIz8mB,EAAM,IAAI56oB,OAAO,GAAG/lC,OAAOwlQ,EAAU,UAAW,KACpD,OAAOxhN,EAAaxxC,EAAI/H,QAAQk2qB,EAAK,GAAG3grB,OAAOo9xC,EAAQ3yxC,QAAQ,cAAe+6P,GAAW,SAC3F,IARS,CAAChzP,EAAI/H,QAAQ,MAAO,QAS/B,CACF,CA0IqB4yxC,CAAoBnmX,GAgBvC,OApNgBho6B,EAqMhB,WACE,IAAIsD,EAAMwqxC,EAAa71wC,EAAQq+O,UAC3B83hC,EA7DR,SAAqB9qxC,GACnB,IAAKA,EACH,OAAO,EAET,IAAIggT,EAAWrvT,SAAS+pF,iBAAiB,QACrCioH,GAAS,EAiBb,OAhBAjyL,EAAQtlB,KAAK40T,GAAU,SAAU36K,GAC/B,GAAKA,EAAG5+G,KAAR,CAGA,IAAI/K,EAhCR,SAAsB+K,EAAMzmB,GAC1B,IAAIyrd,EAcJ,OAXAhlc,EAAO+qB,EAAa/qB,GACpBzmB,EAAImzB,MAKJ,SAAUzX,GACJ+K,EAAKz6B,QAAQgU,IAAQ,IACvByrd,EAAM/vc,EAEV,IACO+vc,CACT,CAgBcs/zB,CAAa1lpC,EAAG5+G,KAAMzmB,GAC3BuqxC,EAAa7uwC,KAGC,IAAf2pH,EAAGmkE,SAGH9tL,IACF4uwC,EAAUjlpC,EAAI3pH,GACdinL,GAAS,EAVX,CAYF,IACOA,CACT,CAsCmBqolC,CAAYhrxC,GAC3B,GAAI2U,EAAQs2wC,OAGV,OAFAp4wC,QAAQgD,IAAI,yDACZwmK,IAGEyumC,EACFj4wC,QAAQgD,IAAI,sBAAuB7V,EAAI3H,KAAK,OAE5Cwa,QAAQgD,IAAI,wBACZwmK,IAEJ,EACwB,GAnNpBz/J,EAAU,EACP,WAEL,IAAIhvB,EAAOpC,KAEPq3C,EAAOj3C,UAIXssB,aAAa0E,GAGbA,EAAUvL,YANS,WACjB,OAAO3U,EAAG3Q,MAAM6B,EAAMi1C,EACxB,GA2MsB,GAtMxB,CAuMF,0BC/MAva,EAAOr6B,QAAU,SAAUi9xC,GAEzB,GADAA,EAAYA,EAAUrtwC,OAClB,UAAUhnB,KAAKq0xC,GACjB,OAAOA,EAET,IAAI1owC,GAAwC,IAA7B0owC,EAAUl/xC,QAAQ,MAAek/xC,EAAU96xC,MAAM,MAAM,GAAK,KAAO,GAC9EspP,EAAawxiC,EAAUjzxC,QAAQ,IAAIs7B,OAAO/Q,EAAU,KAAM,IAAIpyB,MAAM,KACpEi1D,EAAOq0L,EAAW,GAAG3+O,cAAc9C,QAAQ,MAAO,IAGtD,OAFAyhP,EAAW,GAAK,GAETl3N,EAAW6iC,EADMq0L,EA3BFx6N,QAAO,SAAU+hyB,EAAar0wB,GAClD,OAAQA,GACN,IAAK,KACHq0wB,EAAY7zzB,MACZ,MACF,IAAK,IACH,MACF,QACE6zzB,EAAY5zzB,KAAKu/C,GAErB,OAAOq0wB,CACT,GAA0B,IAAI5ozB,KAAK,IAkBrC,gCClCM,IAAI8yxC,EAAY,EAAQ,MAAR,CAA0E7iwC,EAAOvR,GAAI,CAAC,QAAS,IAC/GuR,EAAO8iwC,IAAIv6V,QAAQs6V,GACnB7iwC,EAAO8iwC,IAAI140B,YAAOn5a,EAAW4xvC,iCCF7B,IAAIA,EAAY,EAAQ,MAAR,CAA0E7iwC,EAAOvR,GAAI,CAAC,QAAS,IAC/GuR,EAAO8iwC,IAAIv6V,QAAQs6V,GACnB7iwC,EAAO8iwC,IAAI140B,YAAOn5a,EAAW4xvC,iCCF7B,IAAIA,EAAY,EAAQ,MAAR,CAA0E7iwC,EAAOvR,GAAI,CAAC,QAAS,IAC/GuR,EAAO8iwC,IAAIv6V,QAAQs6V,GACnB7iwC,EAAO8iwC,IAAI140B,YAAOn5a,EAAW4xvC,iCCF7B,IAAIA,EAAY,EAAQ,MAAR,CAA0E7iwC,EAAOvR,GAAI,CAAC,QAAS,IAC/GuR,EAAO8iwC,IAAIv6V,QAAQs6V,GACnB7iwC,EAAO8iwC,IAAI140B,YAAOn5a,EAAW4xvC,iCCF7B,IAAIA,EAAY,EAAQ,MAAR,CAA0E7iwC,EAAOvR,GAAI,CAAC,QAAS,IAC/GuR,EAAO8iwC,IAAIv6V,QAAQs6V,GACnB7iwC,EAAO8iwC,IAAI140B,YAAOn5a,EAAW4xvC,2BCJnC,IAMIE,EANAnnD,EAAS,CACTlxxB,OAAO,EACPs40B,YAAa,UAKjB,GAAuB,oBAAb,OAA0B,CAChC,IAAI3jX,EAAM,CACNt03B,SAAU,IAEdg4uC,EAAW,CACPxmwC,UAAW,CAAEC,UAAW,IACxBn0B,SAAU,CACN4xB,SAAUol5B,EACV3t2B,SAAU,IAEdih5B,OAAQ,CAAE1w7B,MAAO,EAAGC,OAAQ,GAC5BjI,SAAUol5B,EAElB,MACI0jX,EAAW39xC,OAQf,IAoyBQgC,EA3TAsH,EACA+gR,EAWAn8P,EA6HAjvB,EAvIA4+xC,EAWAj+xC,EAMAf,EAWAgpJ,EAuCAhtI,EAqCAgzV,EAnlBJiw7B,EAAavgyC,MAAMC,UACnBugyC,EAAYl9xC,SAASrD,UACrBwgyC,EAAW5gyC,OAAOI,UAClBqC,EAAQi+xC,EAAWj+xC,MACnBwC,EAAW27xC,EAAS37xC,SACpB5E,EAAiBugyC,EAASvgyC,eAC1BwgyC,EAAgBN,EAASx4wC,QACzBgS,EAAYwmwC,EAASxmwC,UACrB+mwC,EAAaP,EAAS16xC,SACtBk7xC,EAAcR,EAASrgxC,MACvBiw8B,EAASowU,EAASpwU,OAClBn27B,EAAYD,EAAUC,UACtBgnwC,EAAaL,EAAU58xC,KACvBgl8B,EAAgB23V,EAAW96wC,QAC3Bq7wC,EAAgBP,EAAWx/xC,QAC3Bgo8B,EAAYw3V,EAAW3wwC,IACvBmxwC,EAAgB/gyC,MAAMkS,QACtB8uxC,EAAU,CAAC,EACX78xC,EAAI,CACJyuB,KAAM,SAASskD,GAEX,OAAOA,EAAIlqE,QAAQ,qCAAsC,GAC7D,GAIA4a,EAAU,CAEVgD,IAAK,WACD,GAAIqutC,EAAOlxxB,QAAU5jd,EAAEu3c,YAAYgl1B,IAAkBA,EACjD,IACIA,EAAc91wC,IAAI9pB,MAAM4/xC,EAAe//xC,UAC3C,CAAE,MAAOk3C,GACL1zC,EAAEo+wB,KAAK5hxB,WAAW,SAAS82C,GACvBipvC,EAAc91wC,IAAI6sB,EACtB,GACJ,CAER,EAEA5vB,KAAM,WACF,GAAIoxtC,EAAOlxxB,QAAU5jd,EAAEu3c,YAAYgl1B,IAAkBA,EAAe,CAChE,IAAI9ovC,EAAO,CAAC,qBAAqBr1C,OAAO4B,EAAEiqH,QAAQztH,YAClD,IACI+/xC,EAAc74wC,KAAK/mB,MAAM4/xC,EAAe9ovC,EAC5C,CAAE,MAAOC,GACL1zC,EAAEo+wB,KAAK3quB,GAAM,SAASH,GAClBipvC,EAAc74wC,KAAK4vB,EACvB,GACJ,CACJ,CACJ,EAEAp1C,MAAO,WACH,GAAI42uC,EAAOlxxB,QAAU5jd,EAAEu3c,YAAYgl1B,IAAkBA,EAAe,CAChE,IAAI9ovC,EAAO,CAAC,mBAAmBr1C,OAAO4B,EAAEiqH,QAAQztH,YAChD,IACI+/xC,EAAcr+xC,MAAMvB,MAAM4/xC,EAAe9ovC,EAC7C,CAAE,MAAOC,GACL1zC,EAAEo+wB,KAAK3quB,GAAM,SAASH,GAClBipvC,EAAcr+xC,MAAMo1C,EACxB,GACJ,CACJ,CACJ,EAEA8X,SAAU,WACN,IAAKprD,EAAEu3c,YAAYgl1B,IAAkBA,EAAe,CAChD,IAAI9ovC,EAAO,CAAC,mBAAmBr1C,OAAO4B,EAAEiqH,QAAQztH,YAChD,IACI+/xC,EAAcr+xC,MAAMvB,MAAM4/xC,EAAe9ovC,EAC7C,CAAE,MAAOC,GACL1zC,EAAEo+wB,KAAK3quB,GAAM,SAASH,GAClBipvC,EAAcr+xC,MAAMo1C,EACxB,GACJ,CACJ,CACJ,GAGAwpvC,EAAuB,SAAS3gvC,EAAMxtB,GACtC,OAAO,WAEH,OADAnyB,UAAU,GAAK,IAAMmyB,EAAS,KAAOnyB,UAAU,GACxC2/C,EAAKx/C,MAAM8mB,EAASjnB,UAC/B,CACJ,EACIugyC,EAAsB,SAASpuwC,GAC/B,MAAO,CACHlI,IAAKq2wC,EAAqBr5wC,EAAQgD,IAAKkI,GACvCzwB,MAAO4+xC,EAAqBr5wC,EAAQvlB,MAAOywB,GAC3Cy8B,SAAU0xuC,EAAqBr5wC,EAAQ2nC,SAAUz8B,GAEzD,EAKA3uB,EAAEP,KAAO,SAAS08C,EAAM5S,GACpB,IAAIkK,EAAMqnL,EACV,GAAI4hkC,GAAcvgvC,EAAK18C,OAASi9xC,EAC5B,OAAOA,EAAW//xC,MAAMw/C,EAAMh+C,EAAMnC,KAAKQ,UAAW,IAExD,IAAKwD,EAAEohQ,WAAWjlN,GACd,MAAM,IAAIlgD,UAiBd,OAfAw3C,EAAOt1C,EAAMnC,KAAKQ,UAAW,GAC7Bs+N,EAAQ,WACJ,KAAM1+N,gBAAgB0+N,GAClB,OAAO3+K,EAAKx/C,MAAM4sC,EAASkK,EAAKr1C,OAAOD,EAAMnC,KAAKQ,aAEtD,IAAIo3c,EAAO,CAAC,EACZA,EAAK93c,UAAYqgD,EAAKrgD,UACtB,IAAI0C,EAAO,IAAIo1c,EACfA,EAAK93c,UAAY,KACjB,IAAI8jB,EAASu8B,EAAKx/C,MAAM6B,EAAMi1C,EAAKr1C,OAAOD,EAAMnC,KAAKQ,aACrD,OAAId,OAAOkkB,KAAYA,EACZA,EAEJphB,CACX,EACOs8N,CACX,EAOA96N,EAAEo+wB,KAAO,SAAS90jB,EAAKvrN,EAAUwrC,GAC7B,GAAI+/K,QAGJ,GAAIm7uB,GAAiBn7uB,EAAIhoM,UAAYmj7B,EACjCn7uB,EAAIhoM,QAAQvjB,EAAUwrC,QACnB,GAAI+/K,EAAI7sN,UAAY6sN,EAAI7sN,QAC3B,IAAK,IAAIO,EAAI,EAAG4B,EAAI0qN,EAAI7sN,OAAQO,EAAI4B,EAAG5B,IACnC,GAAIA,KAAKssN,GAAOvrN,EAAS/B,KAAKutC,EAAS+/K,EAAItsN,GAAIA,EAAGssN,KAASuzkC,EACvD,YAIR,IAAK,IAAI57wC,KAAOqoM,EACZ,GAAIvtN,EAAeC,KAAKstN,EAAKroM,IACrBljB,EAAS/B,KAAKutC,EAAS+/K,EAAIroM,GAAMA,EAAKqoM,KAASuzkC,EAC/C,MAKpB,EAEA78xC,EAAEylZ,OAAS,SAASn8L,GAQhB,OAPAtpN,EAAEo+wB,KAAKjgxB,EAAMnC,KAAKQ,UAAW,IAAI,SAASyH,GACtC,IAAK,IAAI2kJ,KAAQ3kJ,OACQ,IAAjBA,EAAO2kJ,KACP0gE,EAAI1gE,GAAQ3kJ,EAAO2kJ,GAG/B,IACO0gE,CACX,EAEAtpN,EAAE+N,QAAU6uxC,GAAiB,SAAStzkC,GAClC,MAA8B,mBAAvB3oN,EAAS3E,KAAKstN,EACzB,EAKAtpN,EAAEohQ,WAAa,SAAStiQ,GACpB,IACI,MAAO,mBAAmB2I,KAAK3I,EACnC,CAAE,MAAOuB,GACL,OAAO,CACX,CACJ,EAEAL,EAAE+qwC,YAAc,SAASzhjC,GACrB,SAAUA,IAAOvtN,EAAeC,KAAKstN,EAAK,UAC9C,EAEAtpN,EAAEiqH,QAAU,SAASuV,GACjB,OAAKA,EAGDA,EAASvV,QACFuV,EAASvV,UAEhBjqH,EAAE+N,QAAQyxH,IAGVx/H,EAAE+qwC,YAAYvroC,GAFPrhI,EAAMnC,KAAKwjI,GAKfx/H,EAAE8Y,OAAO0mH,GAXL,EAYf,EAEAx/H,EAAEyrB,IAAM,SAASovM,EAAKv1M,EAAUikB,GAC5B,GAAIq75B,GAAa/puB,EAAIpvM,MAAQm56B,EACzB,OAAO/puB,EAAIpvM,IAAInG,EAAUikB,GAEzB,IAAIqkE,EAAU,GAId,OAHA5tG,EAAEo+wB,KAAKvjjB,GAAK,SAASr9K,GACjBowD,EAAQ3vG,KAAKqnB,EAAStpB,KAAKutC,EAASiU,GACxC,IACOowD,CAEf,EAEA5tG,EAAE0P,KAAO,SAAS45M,GACd,IAAI17G,EAAU,GACd,OAAY,OAAR07G,GAGJtpN,EAAEo+wB,KAAK90jB,GAAK,SAAS/rN,EAAO0jB,GACxB2sF,EAAQA,EAAQnxG,QAAUwkB,CAC9B,IAJW2sF,CAMf,EAEA5tG,EAAE8Y,OAAS,SAASwwM,GAChB,IAAI17G,EAAU,GACd,OAAY,OAAR07G,GAGJtpN,EAAEo+wB,KAAK90jB,GAAK,SAAS/rN,GACjBqwG,EAAQA,EAAQnxG,QAAUc,CAC9B,IAJWqwG,CAMf,EAEA5tG,EAAEi3nB,QAAU,SAAS3ta,EAAKp9M,GACtB,IAAIg7Q,GAAQ,EACZ,OAAY,OAAR59D,EACO49D,EAEPy1gC,GAAiBrzkC,EAAI1sN,UAAY+/xC,GACF,GAAxBrzkC,EAAI1sN,QAAQsP,IAEvBlM,EAAEo+wB,KAAK90jB,GAAK,SAAS/rN,GACjB,GAAI2pR,IAAUA,EAAS3pR,IAAU2O,GAC7B,OAAO2wxC,CAEf,IACO31gC,EACX,EAEAlnR,EAAEwK,SAAW,SAASuoE,EAAKiqtC,GACvB,OAAgC,IAAzBjqtC,EAAIn2E,QAAQogyC,EACvB,EAGAh9xC,EAAEi0W,QAAU,SAASgp7B,EAAUC,GAI3B,OAHAD,EAASnhyC,UAAY,IAAIohyC,EACzBD,EAASnhyC,UAAUO,YAAc4gyC,EACjCA,EAASC,WAAaA,EAAWphyC,UAC1BmhyC,CACX,EAEAj9xC,EAAEqhQ,SAAW,SAAS/3C,GAClB,OAAQA,IAAQ5tN,OAAO4tN,KAAStpN,EAAE+N,QAAQu7M,EAC9C,EAEAtpN,EAAE6/C,cAAgB,SAASypK,GACvB,GAAItpN,EAAEqhQ,SAAS/3C,GAAM,CACjB,IAAK,IAAIroM,KAAOqoM,EACZ,GAAIvtN,EAAeC,KAAKstN,EAAKroM,GACzB,OAAO,EAGf,OAAO,CACX,CACA,OAAO,CACX,EAEAjhB,EAAEu3c,YAAc,SAASjuP,GACrB,YAAe,IAARA,CACX,EAEAtpN,EAAEo3D,SAAW,SAASkyJ,GAClB,MAA6B,mBAAtB3oN,EAAS3E,KAAKstN,EACzB,EAEAtpN,EAAEywQ,OAAS,SAASnnD,GAChB,MAA6B,iBAAtB3oN,EAAS3E,KAAKstN,EACzB,EAEAtpN,EAAE0/C,SAAW,SAAS4pK,GAClB,MAA6B,mBAAtB3oN,EAAS3E,KAAKstN,EACzB,EAEAtpN,EAAEovuC,UAAY,SAAS9lhC,GACnB,SAAUA,GAAwB,IAAjBA,EAAI5jI,SACzB,EAEA1lF,EAAEm9xC,YAAc,SAAS7zkC,GAQrB,OAPAtpN,EAAEo+wB,KAAK90jB,GAAK,SAASjqN,EAAGS,GAChBE,EAAEywQ,OAAOpxQ,GACTiqN,EAAIxpN,GAAKE,EAAE80sB,WAAWz1sB,GACfW,EAAEqhQ,SAAShiQ,KAClBiqN,EAAIxpN,GAAKE,EAAEm9xC,YAAY99xC,GAE/B,IACOiqN,CACX,EAEAtpN,EAAE+hD,UAAY,WAIV,OAHAn6B,KAAKC,IAAMD,KAAKC,KAAO,WACnB,OAAQ,IAAID,IAChB,EACOA,KAAKC,KAChB,EAEA7nB,EAAE80sB,WAAa,SAAS/1sB,GAEpB,SAASu9xB,EAAI7gyB,GACT,OAAOA,EAAI,GAAK,IAAMA,EAAIA,CAC9B,CACA,OAAOsD,EAAEgiC,iBAAmB,IACxBu7vB,EAAIv9xB,EAAEiiC,cAAgB,GAAK,IAC3Bs7vB,EAAIv9xB,EAAEkiC,cAAgB,IACtBq7vB,EAAIv9xB,EAAEupC,eAAiB,IACvBg0vB,EAAIv9xB,EAAEwpC,iBAAmB,IACzB+zvB,EAAIv9xB,EAAEypC,gBACd,EAEAxoC,EAAEo9xC,uBAAyB,SAASl+xC,GAChC,IAAIm9d,EAAM,CAAC,EAMX,OALAr8d,EAAEo+wB,KAAKl/wB,GAAG,SAASG,EAAGS,GACdE,EAAEo3D,SAAS/3D,IAAMA,EAAE5C,OAAS,IAC5B4/d,EAAIv8d,GAAKT,EAEjB,IACOg9d,CACX,EAOAr8d,EAAE4pF,SAAW,SAAS0/H,EAAK7sN,GACvB,IAAI4/d,EAkBJ,MAhBoB,iBAAV,EACNA,EAAM/yQ,EAAInrN,MAAM,EAAG1B,GACZuD,EAAE+N,QAAQu7M,IACjB+yQ,EAAM,GACNr8d,EAAEo+wB,KAAK90jB,GAAK,SAASxvC,GACjBuiT,EAAIp+d,KAAK+B,EAAE4pF,SAASkwF,EAAKr9K,GAC7B,KACOuD,EAAEqhQ,SAAS/3C,IAClB+yQ,EAAM,CAAC,EACPr8d,EAAEo+wB,KAAK90jB,GAAK,SAASxvC,EAAK74J,GACtBo7c,EAAIp7c,GAAOjhB,EAAE4pF,SAASkwF,EAAKr9K,EAC/B,KAEA4/d,EAAM/yQ,EAGH+yQ,CACX,EAEAr8d,EAAEq9xC,WACS,SAASC,GACZ,IACI1jB,EAAQ,SAASzgwC,GACjB,IAAIokxC,EAAY,0HACZtx9B,EAAO,CACP,KAAM,MACN,KAAM,MACN,KAAM,MACN,KAAM,MACN,KAAM,MACN,IAAK,MACL,KAAM,QAIV,OADAsx9B,EAAU5uuC,UAAY,EACf4uuC,EAAU91xC,KAAK0R,GAClB,IAAMA,EAAOtQ,QAAQ00xC,GAAW,SAASngyC,GACrC,IAAIH,EAAIgvU,EAAK7uU,GACb,MAAoB,iBAANH,EAAiBA,EAC3B,OAAS,OAASG,EAAE+X,WAAW,GAAGxU,SAAS,KAAKxC,OAAO,EAC/D,IAAK,IACL,IAAMgb,EAAS,GACvB,EAEI45D,EAAM,SAAS9xD,EAAKu8wC,GACpB,IAAIlk7B,EAAM,GAENt8W,EAAI,EACJ8C,EAAI,GACJT,EAAI,GACJ5C,EAAS,EACTghyC,EAAOnk7B,EACP5/S,EAAU,GACVn8D,EAAQigyC,EAAOv8wC,GASnB,OANI1jB,GAA0B,iBAAVA,GACQ,mBAAjBA,EAAMm8C,SACbn8C,EAAQA,EAAMm8C,OAAOz4B,WAIV1jB,GACX,IAAK,SACD,OAAOq8wC,EAAMr8wC,GAEjB,IAAK,SAED,OAAOumC,SAASvmC,GAASrB,OAAOqB,GAAS,OAE7C,IAAK,UACL,IAAK,OAKD,OAAOrB,OAAOqB,GAElB,IAAK,SAKD,IAAKA,EACD,MAAO,OAQX,GAJA+7W,GA1CK,OA2CL5/S,EAAU,GAGoB,mBAA1B/4D,EAAShE,MAAMY,GAA6B,CAK5C,IADAd,EAASc,EAAMd,OACVO,EAAI,EAAGA,EAAIP,EAAQO,GAAK,EACzB08D,EAAQ18D,GAAK+1E,EAAI/1E,EAAGO,IAAU,OAWlC,OANA8B,EAAuB,IAAnBq6D,EAAQj9D,OAAe,KACvB68W,EAAM,MAAQA,EACd5/S,EAAQzwD,KAAK,MAAQqwW,GAAO,KAC5Bmk7B,EAAO,IACH,IAAM/juC,EAAQzwD,KAAK,KAAO,IAClCqwW,EAAMmk7B,EACCp+xC,CACX,CAGA,IAAKS,KAAKvC,EACFxB,EAAeC,KAAKuB,EAAOuC,KAC3BT,EAAI0zE,EAAIjzE,EAAGvC,KAEPm8D,EAAQz7D,KAAK27wC,EAAM95wC,IAAMw5W,EAAM,KAAO,KAAOj6W,GAWzD,OAJAA,EAAuB,IAAnBq6D,EAAQj9D,OAAe,KACvB68W,EAAM,IAAM5/S,EAAQzwD,KAAK,KACzBw0xC,EAAO,IAAM,IAAM/juC,EAAQzwD,KAAK,KAAO,IAC3CqwW,EAAMmk7B,EACCp+xC,EAEnB,EAIA,OAAO0zE,EAAI,GAAI,CACX,GAlHQuqtC,GAoHhB,EAOJt9xC,EAAE09xC,YAGMvB,EAAU,CACN,IAAK,IACL,KAAM,KACN,IAAK,IACL,EAAK,KACL,EAAK,KACL,EAAK,KACL,EAAK,KACL,EAAK,MAGTj+xC,EAAQ,SAASsB,GACb,IAAIjE,EAAI,IAAIoiyC,YAAYn+xC,GAGxB,MAFAjE,EAAEqM,GAAKA,EACPrM,EAAEixB,KAAOA,EACHjxB,CACV,EACA4B,EAAO,SAASF,GASZ,OAPIA,GAAKA,IAAM0rR,GACXzqR,EAAM,aAAgBjB,EAAI,iBAAqB0rR,EAAK,KAIxDA,EAAKn8P,EAAKvX,OAAOrN,GACjBA,GAAM,EACC+gR,CACX,EACAxiI,EAAS,WAEL,IAAIA,EACAhtI,EAAS,GAMb,IAJW,MAAPwvQ,IACAxvQ,EAAS,IACThc,EAAK,MAEFwrR,GAAM,KAAOA,GAAM,KACtBxvQ,GAAUwvQ,EACVxrR,IAEJ,GAAW,MAAPwrR,EAEA,IADAxvQ,GAAU,IACHhc,KAAUwrR,GAAM,KAAOA,GAAM,KAChCxvQ,GAAUwvQ,EAGlB,GAAW,MAAPA,GAAqB,MAAPA,EAOd,IANAxvQ,GAAUwvQ,EACVxrR,IACW,MAAPwrR,GAAqB,MAAPA,IACdxvQ,GAAUwvQ,EACVxrR,KAEGwrR,GAAM,KAAOA,GAAM,KACtBxvQ,GAAUwvQ,EACVxrR,IAIR,GADAgpJ,GAAUhtI,EACL2qB,SAASqiH,GAGV,OAAOA,EAFPjoJ,EAAM,aAId,EAEAib,EAAS,WAEL,IAAIg5K,EACAn1L,EAEA4gyC,EADAzkxC,EAAS,GAGb,GAAW,MAAPwvQ,EACA,KAAOxrR,KAAQ,CACX,GAAW,MAAPwrR,EAEA,OADAxrR,IACOgc,EAEX,GAAW,OAAPwvQ,EAEA,GADAxrR,IACW,MAAPwrR,EAAY,CAEZ,IADAi1gC,EAAQ,EACH5gyC,EAAI,EAAGA,EAAI,IACZm1L,EAAMpgK,SAAS50B,IAAQ,IAClB2mC,SAASquJ,IAFCn1L,GAAK,EAKpB4gyC,EAAgB,GAARA,EAAazrmC,EAEzBh5K,GAAUjd,OAAO4nB,aAAa85wC,EAClC,KAAO,IAA2B,iBAAhBzB,EAAQxzgC,GAGtB,MAFAxvQ,GAAUgjxC,EAAQxzgC,EAGtB,MAEAxvQ,GAAUwvQ,CAElB,CAEJzqR,EAAM,aACV,EACAiuW,EAAQ,WAEJ,KAAOxjF,GAAMA,GAAM,KACfxrR,GAER,EAmFJI,EAAQ,WAIJ,OADA4uW,IACQxjF,GACJ,IAAK,IACD,OAtCC,WAEL,IAAI1nQ,EACAu4B,EAAS,CAAC,EAEd,GAAW,MAAPmvO,EAAY,CAGZ,GAFAxrR,EAAK,KACLgvW,IACW,MAAPxjF,EAEA,OADAxrR,EAAK,KACEq8C,EAEX,KAAOmvO,GAAI,CASP,GARA1nQ,EAAM9H,IACNgzV,IACAhvW,EAAK,KACDzB,OAAOK,eAAeC,KAAKw9C,EAAQv4B,IACnC/iB,EAAM,kBAAoB+iB,EAAM,KAEpCu4B,EAAOv4B,GAAO1jB,IACd4uW,IACW,MAAPxjF,EAEA,OADAxrR,EAAK,KACEq8C,EAEXr8C,EAAK,KACLgvW,GACJ,CACJ,CACAjuW,EAAM,aACV,CAQes7C,GACX,IAAK,IACD,OAhEA,WAEJ,IAAIlD,EAAQ,GAEZ,GAAW,MAAPqyO,EAAY,CAGZ,GAFAxrR,EAAK,KACLgvW,IACW,MAAPxjF,EAEA,OADAxrR,EAAK,KACEm5C,EAEX,KAAOqyO,GAAI,CAGP,GAFAryO,EAAMr4C,KAAKV,KACX4uW,IACW,MAAPxjF,EAEA,OADAxrR,EAAK,KACEm5C,EAEXn5C,EAAK,KACLgvW,GACJ,CACJ,CACAjuW,EAAM,YACV,CAyCeo4C,GACX,IAAK,IACD,OAAOn9B,IACX,IAAK,IACD,OAAOgtI,IACX,QACI,OAAOwiI,GAAM,KAAOA,GAAM,IAAMxiI,IAhGjC,WAEH,OAAQwiI,GACJ,IAAK,IAKD,OAJAxrR,EAAK,KACLA,EAAK,KACLA,EAAK,KACLA,EAAK,MACE,EACX,IAAK,IAMD,OALAA,EAAK,KACLA,EAAK,KACLA,EAAK,KACLA,EAAK,KACLA,EAAK,MACE,EACX,IAAK,IAKD,OAJAA,EAAK,KACLA,EAAK,KACLA,EAAK,KACLA,EAAK,KACE,KAEfe,EAAM,eAAiByqR,EAAK,IAChC,CAwEmDqtO,GAEvD,EAIO,SAAS/xf,GACZ,IAAI2b,EAWJ,OATA4M,EAAOvoB,EACP2D,EAAK,EACL+gR,EAAK,IACL/oQ,EAASriB,IACT4uW,IACIxjF,GACAzqR,EAAM,gBAGH0hB,CACX,GAGJ5f,EAAE69xC,aAAe,SAASjyxC,GACtB,IACgBwnW,EAAIC,EAAIC,EAAIC,EAAI5gS,EAD5BmrtC,EAAM,oEAC4B9gyC,EAAI,EACtC8hB,EAAK,EACLi/wC,EAAM,GACNC,EAAU,GAEd,IAAKpyxC,EACD,OAAOA,EAGXA,EAAO5L,EAAEi+xC,WAAWryxC,GAEpB,GAOIwnW,GAFAzgS,EAJK/mE,EAAKuJ,WAAWnY,MAIR,GAHR4O,EAAKuJ,WAAWnY,MAGG,EAFnB4O,EAAKuJ,WAAWnY,OAIR,GAAK,GAClBq2W,EAAK1gS,GAAQ,GAAK,GAClB2gS,EAAK3gS,GAAQ,EAAI,GACjB4gS,EAAY,GAAP5gS,EAGLqrtC,EAAQl/wC,KAAQg/wC,EAAI7oxC,OAAOm+V,GAAM0q7B,EAAI7oxC,OAAOo+V,GAAMyq7B,EAAI7oxC,OAAOq+V,GAAMwq7B,EAAI7oxC,OAAOs+V,SACzEv2W,EAAI4O,EAAKnP,QAIlB,OAFAshyC,EAAMC,EAAQ/0xC,KAAK,IAEX2C,EAAKnP,OAAS,GAClB,KAAK,EACDshyC,EAAMA,EAAI5/xC,MAAM,GAAI,GAAK,KACzB,MACJ,KAAK,EACD4/xC,EAAMA,EAAI5/xC,MAAM,GAAI,GAAK,IAIjC,OAAO4/xC,CACX,EAEA/9xC,EAAEi+xC,WAAa,SAAS9kxC,GAGpB,IACIypB,EACAC,EACAq7vC,EACAziyC,EAJA0iyC,EAAU,GASd,IAHAv7vC,EAAQC,EAAM,EACdq7vC,GATA/kxC,GAAUA,EAAS,IAAItQ,QAAQ,QAAS,MAAMA,QAAQ,MAAO,OAS5CpM,OAEZhB,EAAI,EAAGA,EAAIyiyC,EAASziyC,IAAK,CAC1B,IAAIm7d,EAAKz9c,EAAOhE,WAAW1Z,GACvBsiyC,EAAM,KAENnn0B,EAAK,IACL/zb,IAEAk7vC,EADQnn0B,EAAK,KAASA,EAAK,KACrB16d,OAAO4nB,aAAc8yc,GAAM,EAAK,IAAW,GAALA,EAAW,KAEjD16d,OAAO4nB,aAAc8yc,GAAM,GAAM,IAAOA,GAAM,EAAK,GAAM,IAAW,GAALA,EAAW,KAExE,OAARmn0B,IACIl7vC,EAAMD,IACNu7vC,GAAWhlxC,EAAOua,UAAUkP,EAAOC,IAEvCs7vC,GAAWJ,EACXn7vC,EAAQC,EAAMpnC,EAAI,EAE1B,CAMA,OAJIonC,EAAMD,IACNu7vC,GAAWhlxC,EAAOua,UAAUkP,EAAOzpB,EAAO1c,SAGvC0hyC,CACX,EAEAn+xC,EAAEo+xC,MAGM99xC,EAAI,WACJ,IACIoiC,EADAuf,EAAO,EAAI,IAAIr6B,KAEnB,GAAIq0wC,EAAS96uC,aAAe86uC,EAAS96uC,YAAYt5B,IAC7C6a,EAAQu5vC,EAAS96uC,YAAYt5B,WAQ7B,IALA6a,EAAQ,EAKDuf,GAAQ,EAAI,IAAIr6B,MACnB8a,IAGR,OAAOuf,EAAKthD,SAAS,IAAM1B,KAAKyK,MAAMg5B,GAAO/hC,SAAS,GAC1D,EAwCO,WACH,IAAI2C,GAAMuo9B,EAAOzw7B,OAASyw7B,EAAO1w7B,OAAOx6B,SAAS,IACjD,OAAQL,IAAM,IAtCPrB,KAAKwF,SAAS9D,SAAS,IAAIkI,QAAQ,IAAK,IAsCrB,IA/BrB,WACL,IACI7L,EAAG2rR,EADH16P,EAAKyH,EACEpR,EAAS,GAChB+3c,EAAM,EAEV,SAASrtQ,EAAIpvM,EAAQy+wC,GACjB,IAAI79xC,EAAGw/V,EAAM,EACb,IAAKx/V,EAAI,EAAGA,EAAI69xC,EAAW5hyC,OAAQ+D,IAC/Bw/V,GAAQ17U,EAAO9jB,IAAU,EAAJA,EAEzB,OAAOof,EAASogV,CACpB,CAEA,IAAKhjW,EAAI,EAAGA,EAAIixB,EAAGxxB,OAAQO,IACvB2rR,EAAK16P,EAAG9Y,WAAWnY,GACnBsnB,EAAO2C,QAAa,IAAL0hQ,GACXrkQ,EAAO7nB,QAAU,IACjB4/d,EAAMrtQ,EAAIqtQ,EAAK/3c,GACfA,EAAS,IAQjB,OAJIA,EAAO7nB,OAAS,IAChB4/d,EAAMrtQ,EAAIqtQ,EAAK/3c,IAGZ+3c,EAAI17d,SAAS,GACxB,CAIoC29xC,GAAO,IAAMh7xC,EAAK,IAAMhD,GAC5D,GAMJ,IAAIi+xC,EAAkB,CAClB,YACA,cACA,UACA,cACA,mBACA,WACA,YACA,iBACA,eACA,YAIA,gBACA,cACA,mBACA,qBACA,iBACA,qBACA,oBACA,YACA,iBACA,uBACA,mBAEJv+xC,EAAEw+xC,YAAc,SAASvwwC,GACrB,IAAIjxB,EAEJ,IADAixB,EAAKA,EAAGtiB,cACH3O,EAAI,EAAGA,EAAIuhyC,EAAgB9hyC,OAAQO,IACpC,IAAwC,IAApCixB,EAAGrxB,QAAQ2hyC,EAAgBvhyC,IAC3B,OAAO,EAGf,OAAO,CACX,EAMAgD,EAAEy+xC,eAAiB,SAASC,EAAUC,GAClC,IAAIC,EAASC,EAASb,EAAU,GAYhC,OAVIh+xC,EAAEu3c,YAAYon1B,KACdA,EAAgB,KAGpB3+xC,EAAEo+wB,KAAKsghB,GAAU,SAAS5knC,EAAK74J,GAC3B29wC,EAAUlzwC,mBAAmBouJ,EAAIn5K,YACjCk+xC,EAAUnzwC,mBAAmBzK,GAC7B+8wC,EAAQA,EAAQvhyC,QAAUoiyC,EAAU,IAAMD,CAC9C,IAEOZ,EAAQ/0xC,KAAK01xC,EACxB,EAEA3+xC,EAAE8+xC,cAAgB,SAASxywC,EAAKs/C,GAG5BA,EAAQA,EAAM/iE,QAAQ,MAAO,OAAOA,QAAQ,OAAQ,OACpD,IAEI+kG,EADQ,IAAIzpE,OADH,SAAWynC,EAAQ,aAEZp9D,KAAK8d,GACzB,GAAgB,OAAZshF,GAAqBA,GAAkC,iBAAhBA,EAAQ,IAAoBA,EAAQ,GAAGnxG,OAC9E,MAAO,GAEP,IAAImjB,EAASguF,EAAQ,GACrB,IACIhuF,EAASoM,mBAAmBpM,EAChC,CAAE,MAAM8zB,GACJjwB,EAAQvlB,MAAM,gDAAkD0hB,EACpE,CACA,OAAOA,EAAO/W,QAAQ,MAAO,IAErC,EAKA7I,EAAE4yB,OAAS,CACPrzB,IAAK,SAASuH,GAGV,IAFA,IAAIi4xC,EAASj4xC,EAAO,IAChBqlB,EAAKqwwC,EAAW5pwC,OAAO5xB,MAAM,KACxBhE,EAAI,EAAGA,EAAImvB,EAAG1vB,OAAQO,IAAK,CAEhC,IADA,IAAIC,EAAIkvB,EAAGnvB,GACW,KAAfC,EAAEgY,OAAO,IACZhY,EAAIA,EAAEy2B,UAAU,EAAGz2B,EAAER,QAEzB,GAA0B,IAAtBQ,EAAEL,QAAQmiyC,GACV,OAAO/ywC,mBAAmB/uB,EAAEy2B,UAAUqrwC,EAAOtiyC,OAAQQ,EAAER,QAE/D,CACA,OAAO,IACX,EAEAksB,MAAO,SAAS7hB,GACZ,IAAI8rB,EACJ,IACIA,EAAS5yB,EAAE09xC,WAAW19xC,EAAE4yB,OAAOrzB,IAAIuH,KAAU,CAAC,CAClD,CAAE,MAAO4sC,GAET,CACA,OAAO9gB,CACX,EAEAoswC,YAAa,SAASl4xC,EAAMvJ,EAAO2ohB,EAAS+4wB,EAAoBC,EAAWC,EAAeC,GACtF,IAAIC,EAAU,GACVhtwC,EAAU,GACVK,EAAS,GAEb,GAAI0swC,EACAC,EAAU,YAAcD,OACrB,GAAIH,EAAoB,CAC3B,IAAIzuxC,EAAS8uxC,EAAe9C,EAAWrpwC,SAAS8wB,UAChDo7uC,EAAU7uxC,EAAS,aAAeA,EAAS,EAC/C,CAEA,GAAI01gB,EAAS,CACT,IAAIz0e,EAAO,IAAI7pB,KACf6pB,EAAK6c,QAAQ7c,EAAK5N,UAAuB,IAAVqif,GAC/B7zf,EAAU,aAAeof,EAAKyr4B,aAClC,CAEIiiX,IACAD,GAAY,EACZxswC,EAAS,mBAETwswC,IACAxswC,GAAU,YAGd8pwC,EAAW5pwC,OAAS9rB,EAAO,IAAM4kB,mBAAmBnuB,GAAS80B,EAAU,WAAagtwC,EAAU3swC,CAClG,EAEArqB,IAAK,SAASvB,EAAMvJ,EAAOunhB,EAAMm6wB,EAAoBC,EAAWC,EAAeC,GAC3E,IAAIC,EAAU,GAAIhtwC,EAAU,GAAIK,EAAS,GAEzC,GAAI0swC,EACAC,EAAU,YAAcD,OACrB,GAAIH,EAAoB,CAC3B,IAAIzuxC,EAAS8uxC,EAAe9C,EAAWrpwC,SAAS8wB,UAChDo7uC,EAAU7uxC,EAAS,aAAeA,EAAS,EAC/C,CAEA,GAAIs0gB,EAAM,CACN,IAAIrze,EAAO,IAAI7pB,KACf6pB,EAAK6c,QAAQ7c,EAAK5N,UAAoB,GAAPihf,EAAY,GAAK,GAAK,KACrDzyf,EAAU,aAAeof,EAAKyr4B,aAClC,CAEIiiX,IACAD,GAAY,EACZxswC,EAAS,mBAETwswC,IACAxswC,GAAU,YAGd,IAAI6swC,EAAiBz4xC,EAAO,IAAM4kB,mBAAmBnuB,GAAS80B,EAAU,WAAagtwC,EAAU3swC,EAE/F,OADA8pwC,EAAW5pwC,OAAS2swC,EACbA,CACX,EAEAtwwC,OAAQ,SAASnoB,EAAMm4xC,EAAoBG,GACvCp/xC,EAAE4yB,OAAOvqB,IAAIvB,EAAM,IAAK,EAAGm4xC,GAAoB,GAAO,EAAOG,EACjE,GAGJ,IAAII,EAAyB,KACzBC,EAAwB,SAASpvwC,EAASqvwC,GAC1C,GAA+B,OAA3BF,IAAoCE,EACpC,OAAOF,EAGX,IAAIj2gC,GAAY,EAChB,IACIl5P,EAAUA,GAAW/xB,OAAO8pB,aAC5B,IAAInH,EAAM,WAAa0+wC,EAAW,GAElCtvwC,EAAQ/H,QAAQrH,EADN,eAENoP,EAAQhI,QAAQpH,KAChBsoQ,GAAY,GAEhBl5P,EAAQlH,WAAWlI,EACvB,CAAE,MAAOyyB,GACL61O,GAAY,CAChB,CAGA,OADAi2gC,EAAyBj2gC,EAClBA,CACX,EAGAvpR,EAAEooB,aAAe,CACbw3wC,aAAc,SAASC,GACnB,IAAIt2gC,EAAYk2gC,EAAsB,KAAMI,GAI5C,OAHKt2gC,GACD9lQ,EAAQvlB,MAAM,0DAEXqrR,CACX,EAEArrR,MAAO,SAASktU,GACZ3nT,EAAQvlB,MAAM,uBAAyBktU,EAC3C,EAEA7rU,IAAK,SAASuH,GACV,IACI,OAAOxI,OAAO8pB,aAAaC,QAAQvhB,EACvC,CAAE,MAAO4sC,GACL1zC,EAAEooB,aAAalqB,MAAMw1C,EACzB,CACA,OAAO,IACX,EAEA/qB,MAAO,SAAS7hB,GACZ,IACI,OAAO9G,EAAE09xC,WAAW19xC,EAAEooB,aAAa7oB,IAAIuH,KAAU,CAAC,CACtD,CAAE,MAAO4sC,GAET,CACA,OAAO,IACX,EAEArrC,IAAK,SAASvB,EAAMvJ,GAChB,IACIe,OAAO8pB,aAAaE,QAAQxhB,EAAMvJ,EACtC,CAAE,MAAOm2C,GACL1zC,EAAEooB,aAAalqB,MAAMw1C,EACzB,CACJ,EAEAzkB,OAAQ,SAASnoB,GACb,IACIxI,OAAO8pB,aAAae,WAAWriB,EACnC,CAAE,MAAO4sC,GACL1zC,EAAEooB,aAAalqB,MAAMw1C,EACzB,CACJ,GAGJ1zC,EAAE8/xC,eAAiB,WA6Df,SAASC,EAASllwC,GAKd,OAJIA,IACAA,EAAMmnF,eAAiB+9qC,EAAS/9qC,eAChCnnF,EAAM+jF,gBAAkBmhrC,EAASnhrC,iBAE9B/jF,CACX,CAQA,OAPAklwC,EAAS/9qC,eAAiB,WACtB5lH,KAAK00Z,aAAc,CACvB,EACAiv4B,EAASnhrC,gBAAkB,WACvBxiH,KAAK2qZ,cAAe,CACxB,EA1DqB,SAAS5+T,EAASx/E,EAAMyjD,EAAS4zuC,EAAWp1nB,GAC7D,GAAKzilB,EAKL,GAAIA,EAAQp/D,mBAAqBi3wC,EAC7B73sC,EAAQp/D,iBAAiBpgB,EAAMyjD,IAAWw+mB,OACvC,CACH,IAAIq1nB,EAAS,KAAOt3xC,EAChBu3xC,EAAc/3sC,EAAQ83sC,GAC1B93sC,EAAQ83sC,GAIhB,SAAqB93sC,EAASg4sC,EAAaC,GA4BvC,OA3Bc,SAASvlwC,GAQnB,GAPAA,EAAQA,GAASklwC,EAASzhyC,OAAOu8B,OAOjC,CAIA,IACIwlwC,EAAYC,EADZjk0B,GAAM,EAYV,OATIr8d,EAAEohQ,WAAWg/hC,KACbC,EAAaD,EAAavlwC,IAE9BylwC,EAAaH,EAAYnkyC,KAAKmsF,EAASttD,IAElC,IAAUwlwC,IAAgB,IAAUC,IACrCjk0B,GAAM,GAGHA,CAdP,CAeJ,CAGJ,CAjC0Bkk0B,CAAYp4sC,EAAS/7B,EAAS8zuC,EACpD,MAVIz8wC,EAAQvlB,MAAM,8CAWtB,CAgDH,CA5EkB,GA+EnB,IAAIsiyC,EAAoB,IAAIr8vC,OAAO,2DAEnCnkC,EAAEygyC,UAAY,WAyBV,SAASC,EAAenlyC,GAEpB,OAAOA,EAAEiG,IAAMjG,EAAEiG,IAAMjG,EAAEsiC,qBAAqB,IAClD,CAEA,IAAI8iwC,EAAiB,YAErB,SAASr9T,EAASllwB,EAAMzxI,GACpB,IAAIX,EAAY,IAAMW,EAAW,IACjC,OAAS,IAAMyxI,EAAKpyI,UAAY,KAAKnjF,QAAQ83xC,EAAgB,KAAK/jyC,QAAQovF,IAAc,CAC5F,CAEA,SAAS40sC,EAAsBj0sC,GAE3B,IAAK6vsC,EAAW3+vC,qBACZ,MAAO,GAGX,IACI47I,EAAO9mG,EAAMtb,EAAS6vN,EAAO25gC,EAAY7jyC,EAAGwD,EAAGV,EAAG8wT,EAAUkw+B,EAD5DpgW,EAAS/z2B,EAAS3rF,MAAM,KAExBqwG,EAAiB,CAACmrrC,GACtB,IAAKx/xC,EAAI,EAAGA,EAAI0j8B,EAAOjk8B,OAAQO,IAE3B,IADAy8K,EAAQinxB,EAAO1j8B,GAAG6L,QAAQ,OAAQ,IAAIA,QAAQ,OAAQ,KAC5CjM,QAAQ,MAAQ,EAA1B,CAGIy6D,GADAsb,EAAO8mG,EAAMz4K,MAAM,MACJ,GACf,IAAI2mB,EAAKgrD,EAAK,GACVwV,EAAUq0sC,EAAWhysC,eAAe7iE,GACxC,IAAKwgE,GAAY9wB,GAAW8wB,EAAQC,SAASz8E,eAAiB0rD,EAE1D,MAAO,GAGXg6C,EAAiB,CAAClpB,EAEtB,MACA,GAAIsxF,EAAM78K,QAAQ,MAAQ,EAA1B,CAGIy6D,GADAsb,EAAO8mG,EAAMz4K,MAAM,MACJ,GACf,IAAIgrF,EAAYrZ,EAAK,GAOrB,IANKtb,IACDA,EAAU,KAGd6vN,EAAQ,GACR25gC,EAAa,EACRrgyC,EAAI,EAAGA,EAAI6wG,EAAe50G,OAAQ+D,IAMnC,IAJIowT,EADW,KAAXv5P,EACWqpuC,EAAervrC,EAAe7wG,IAE9B6wG,EAAe7wG,GAAGq9B,qBAAqBw5B,GAEjDv3D,EAAI,EAAGA,EAAI8wT,EAASn0T,OAAQqD,IAC7BonR,EAAM25gC,KAAgBjw+B,EAAS9wT,GAKvC,IAFAuxG,EAAiB,GACjByvrC,EAAsB,EACjBtgyC,EAAI,EAAGA,EAAI0mR,EAAMzqR,OAAQ+D,IACtB0mR,EAAM1mR,GAAGwrF,WACThsF,EAAEo3D,SAAS8vN,EAAM1mR,GAAGwrF,YACpBs34B,EAASp8sB,EAAM1mR,GAAIwrF,KAEnBqlB,EAAeyvrC,KAAyB55gC,EAAM1mR,GAI1D,KAhCA,CAkCA,IAAIugyC,EAActnnC,EAAM52K,MAAM29xC,GAC9B,GAAIO,EAAJ,CACI1puC,EAAU0puC,EAAY,GACtB,IAqBIl+Y,EArBA10pB,EAAW4yiC,EAAY,GACvBC,EAAeD,EAAY,GAC3B3mL,EAAY2mL,EAAY,GAO5B,IANK1puC,IACDA,EAAU,KAGd6vN,EAAQ,GACR25gC,EAAa,EACRrgyC,EAAI,EAAGA,EAAI6wG,EAAe50G,OAAQ+D,IAMnC,IAJIowT,EADW,KAAXv5P,EACWqpuC,EAAervrC,EAAe7wG,IAE9B6wG,EAAe7wG,GAAGq9B,qBAAqBw5B,GAEjDv3D,EAAI,EAAGA,EAAI8wT,EAASn0T,OAAQqD,IAC7BonR,EAAM25gC,KAAgBjw+B,EAAS9wT,GAMvC,OAHAuxG,EAAiB,GACjByvrC,EAAsB,EAEdE,GACJ,IAAK,IACDn+Y,EAAgB,SAAStn5B,GACrB,OAAQA,EAAE0sF,aAAakmK,IAAais3B,CACxC,EACA,MACJ,IAAK,IACDv3N,EAAgB,SAAStn5B,GACrB,OAAQA,EAAE0sF,aAAakmK,GAAUtrP,MAAM,IAAIshC,OAAO,MAAQi2kC,EAAY,OAC1E,EACA,MACJ,IAAK,IACDv3N,EAAgB,SAAStn5B,GACrB,OAAQA,EAAE0sF,aAAakmK,GAAUtrP,MAAM,IAAIshC,OAAO,IAAMi2kC,EAAY,MACxE,EACA,MACJ,IAAK,IACDv3N,EAAgB,SAAStn5B,GACrB,OAAwD,IAAhDA,EAAE0sF,aAAakmK,GAAUvxP,QAAQw9mC,EAC7C,EACA,MACJ,IAAK,IACDv3N,EAAgB,SAAStn5B,GACrB,OAAQA,EAAE0sF,aAAakmK,GAAU9zE,YAAY+/7B,IAAc7+mC,EAAE0sF,aAAakmK,GAAU1xP,OAAS29mC,EAAU39mC,MAC3G,EACA,MACJ,IAAK,IACDom5B,EAAgB,SAAStn5B,GACrB,OAAQA,EAAE0sF,aAAakmK,GAAUvxP,QAAQw9mC,IAAc,CAC3D,EACA,MACJ,QAEIv3N,EAAgB,SAAStn5B,GACrB,OAAOA,EAAE0sF,aAAakmK,EAC1B,EAIR,IAFA98I,EAAiB,GACjByvrC,EAAsB,EACjBtgyC,EAAI,EAAGA,EAAI0mR,EAAMzqR,OAAQ+D,IACtBqi5B,EAAc37nB,EAAM1mR,MACpB6wG,EAAeyvrC,KAAyB55gC,EAAM1mR,GAK1D,KAtEA,CA2EA,IAHA62D,EAAUoiH,EACVytG,EAAQ,GACR25gC,EAAa,EACRrgyC,EAAI,EAAGA,EAAI6wG,EAAe50G,OAAQ+D,IAEnC,IADAowT,EAAWv/M,EAAe7wG,GAAGq9B,qBAAqBw5B,GAC7Cv3D,EAAI,EAAGA,EAAI8wT,EAASn0T,OAAQqD,IAC7BonR,EAAM25gC,KAAgBjw+B,EAAS9wT,GAGvCuxG,EAAiB61K,CAXjB,CAzEA,CAsFJ,OAAO71K,CACX,CAEA,OAAO,SAAShmB,GACZ,OAAIrrF,EAAEovuC,UAAU/jpC,GACL,CAACA,GACDrrF,EAAEqhQ,SAASh2K,KAAWrrF,EAAEu3c,YAAYlsX,EAAM5uF,QAC1C4uF,EAEAu1sC,EAAsB5kyC,KAAKI,KAAMivF,EAEhD,CACH,CAhMa,GAkMd,IAAI41sC,EAAoB,CAAC,aAAc,aAAc,eAAgB,cAAe,YAChFC,EAAY,CAAC,QAAS,SAAU,QAAS,cAAe,YAAa,UAAW,SAAU,SAAU,UAExGlhyC,EAAE4zC,KAAO,CACLutvC,eAAgB,SAASC,GACrB,IAAIC,EAAK,GACL58vC,EAAS,CAAC,EAUd,OATAzkC,EAAEo+wB,KAAK6ihB,GAAmB,SAASK,IAC/BD,EAAKrhyC,EAAE8+xC,cAActC,EAAWp4wC,IAAKk9wC,IAC9B7kyC,OACHgoC,EAAO68vC,GAASD,OACSl3vC,IAAlBi3vC,IACP38vC,EAAO68vC,GAASF,EAExB,IAEO38vC,CACX,EAEA88vC,YAAa,WACT,IAAI55wC,EAAK,GACL8c,EAAS,CAAC,EAQd,OAPAzkC,EAAEo+wB,KAAK8ihB,GAAW,SAASM,IACvB75wC,EAAK3nB,EAAE8+xC,cAActC,EAAWp4wC,IAAKo9wC,IAC9B/kyC,SACHgoC,EAAO+8vC,GAAS75wC,EAExB,IAEO8c,CACX,EAEAg9vC,gBAAiB,WACb,OAAOzhyC,EAAEylZ,OAAOzlZ,EAAE4zC,KAAKutvC,iBAAkBnhyC,EAAE4zC,KAAK2tvC,cACpD,EAEAG,aAAc,SAAS92tC,GACnB,OAAwD,IAApDA,EAASjjB,OAAO,gCACT,SAC6C,IAA7CijB,EAASjjB,OAAO,yBAChB,OAC8C,IAA9CijB,EAASjjB,OAAO,0BAChB,QACmD,IAAnDijB,EAASjjB,OAAO,+BAChB,aAEA,IAEf,EAEAg6uC,WAAY,SAAS/2tC,GACjB,IAAIjjB,EAAS3nD,EAAE4zC,KAAK8tvC,aAAa92tC,GAC7BgB,EAAmB,SAAVjkB,EAAqB,IAAM,IACpC00a,EAAM,CAAC,EAEX,GAAe,OAAX10a,EAAiB,CACjB00a,EAAoB,eAAI10a,EAExB,IAAIi6uC,EAAU5hyC,EAAE8+xC,cAAcl0tC,EAAUgB,GACpCg2tC,EAAQnlyC,SACR4/d,EAAgB,WAAIul0B,EAE5B,CAEA,OAAOvl0B,CACX,EAOA7/L,QAAS,SAASqlgC,EAAY/jvC,EAAQliC,GAElC,OADAkiC,EAASA,GAAU,GACfliC,GAAS5b,EAAEwK,SAASq3xC,EAAY,SAC5B7hyC,EAAEwK,SAASq3xC,EAAY,QAChB,aAEJ,QACA,8BAA8Bp6xC,KAAKo6xC,GACnC,aACA7hyC,EAAEwK,SAASq3xC,EAAY,aAAe7hyC,EAAEwK,SAASq3xC,EAAY,aAC7D,2BACA7hyC,EAAEwK,SAASq3xC,EAAY,mBAEvB,mBACA7hyC,EAAEwK,SAASq3xC,EAAY,SAAW7hyC,EAAEwK,SAASq3xC,EAAY,QACzD,iBACA7hyC,EAAEwK,SAASq3xC,EAAY,SACvB,kBACA7hyC,EAAEwK,SAASq3xC,EAAY,UACvB,SACA7hyC,EAAEwK,SAASq3xC,EAAY,SACvB,aACA7hyC,EAAEwK,SAASq3xC,EAAY,UAAY7hyC,EAAEwK,SAASq3xC,EAAY,aAC1D,aACA7hyC,EAAEwK,SAASq3xC,EAAY,SACvB,cACA7hyC,EAAEwK,SAASszC,EAAQ,SACtB99C,EAAEwK,SAASq3xC,EAAY,UAChB,gBAEJ,SACA7hyC,EAAEwK,SAASq3xC,EAAY,WACvB,iBACA7hyC,EAAEwK,SAASq3xC,EAAY,aACvB,YACA7hyC,EAAEwK,SAASq3xC,EAAY,WACvB,UACA7hyC,EAAEwK,SAASq3xC,EAAY,SAAW7hyC,EAAEwK,SAASq3xC,EAAY,YACzD,oBACA7hyC,EAAEwK,SAASq3xC,EAAY,SACvB,UAEA,EAEf,EAOAC,eAAgB,SAASpswC,EAAWooB,EAAQliC,GACxC,IAmBI2tK,EAlBgB,CAChB,2BAA4B,mBAC5B,iBAAkB,uBAClB,OAAU,wBACV,aAAc,uBACd,aAAe,mCACf,OAAU,yBACV,gBAAiB,yBACjB,MAAS,6BACT,QAAW,yBACX,cAAe,uBACf,UAAa,0BACb,WAAc,2BACd,iBAAkB,yBAClB,mBAAoB,gCACpB,oBAAqB,2BACrB,QAAW,oBAjBDvpL,EAAE4zC,KAAK4oP,QAAQ9mQ,EAAWooB,EAAQliC,IAoBhD,QAAcuuB,IAAVo/I,EACA,OAAO,KAEX,IAAIl5H,EAAU36B,EAAU7yB,MAAM0mL,GAC9B,OAAKl5H,EAGEo2G,WAAWp2G,EAAQA,EAAQ5zD,OAAS,IAFhC,IAGf,EAEAslyC,GAAI,WACA,IAAI3kyC,EAAIs4B,EACR,MAAI,WAAWjuB,KAAKrK,GACZ,QAAQqK,KAAKrK,IAAM,YAAYqK,KAAKrK,GAC7B,gBAEJ,UACA,qBAAqBqK,KAAKrK,GAC1B,MACA,UAAUqK,KAAKrK,GACf,UACA,8BAA8BqK,KAAKrK,GACnC,aACA,OAAOqK,KAAKrK,GACZ,WACA,QAAQqK,KAAKrK,GACb,QACA,OAAOqK,KAAKrK,GACZ,YAEA,EAEf,EAEA4kyC,OAAQ,SAASH,GACb,MAAI,iBAAiBp6xC,KAAKo6xC,IAAe,YAAYp6xC,KAAKo6xC,GAC/C,gBACA,OAAOp6xC,KAAKo6xC,GACZ,OACA,OAAOp6xC,KAAKo6xC,GACZ,aACA,SAASp6xC,KAAKo6xC,GACd,SACA,8BAA8Bp6xC,KAAKo6xC,GACnC,aACA,UAAUp6xC,KAAKo6xC,GACf,UAEA,EAEf,EAEAI,gBAAiB,SAASr3tC,GACtB,IAAI5pE,EAAQ4pE,EAAS5pE,MAAM,KAC3B,OAAIA,EAAMvE,QAAU,EACTuE,EAAM,GAEV,EACX,EAEA4jC,WAAY,WACR,OAAO5kC,EAAEylZ,OAAOzlZ,EAAEo9xC,uBAAuB,CACrC,IAAOp9xC,EAAE4zC,KAAKmuvC,KACd,SAAY/hyC,EAAE4zC,KAAK4oP,QAAQ9mQ,EAAWD,EAAUqoB,OAAQ2+uC,GACxD,UAAaD,EAAW5xtC,SACxB,kBAAqB5qE,EAAE4zC,KAAKquvC,gBAAgBzF,EAAW5xtC,UACvD,QAAW5qE,EAAE4zC,KAAKouvC,OAAOtswC,KACzB,CACA,aAAgBumwC,EAAS9owC,SAASkE,KAClC,iBAAoBr3B,EAAE4zC,KAAKkuvC,eAAepswC,EAAWD,EAAUqoB,OAAQ2+uC,GACvE,eAAkB5wU,EAAOzw7B,OACzB,cAAiByw7B,EAAO1w7B,MACxB,OAAU,MACV,aAAgB25sC,EAAOonD,YACvB,WAAcyD,IACd,KAAQ3/xC,EAAE+hD,YAAc,KAEhC,EAEAmgvC,kBAAmB,WACf,OAAOliyC,EAAEylZ,OAAOzlZ,EAAEo9xC,uBAAuB,CACrC,IAAOp9xC,EAAE4zC,KAAKmuvC,KACd,SAAY/hyC,EAAE4zC,KAAK4oP,QAAQ9mQ,EAAWD,EAAUqoB,OAAQ2+uC,KACxD,CACA,iBAAoBz8xC,EAAE4zC,KAAKkuvC,eAAepswC,EAAWD,EAAUqoB,OAAQ2+uC,IAE/E,EAEA0F,qBAAsB,WAClB,OAAOniyC,EAAEo9xC,uBAAuB,CAC5B,mBAAsBZ,EAAW/wnC,MACjC,eAAkBwwnC,EAAS9owC,SAAS8wB,SACpC,iBAAoBg4uC,EAAS9owC,SAASqvB,SACtC,qBAAwBy5uC,EAAS9owC,SAASC,SAC1C,mBAAsB6owC,EAAS9owC,SAASw0B,QAEhD,GAGJ,IAAIg4uC,EAAa,SAASyC,GACtB,IAAI9i1B,EAAOrgd,KAAKwF,SAAS9D,SAAS,IAAI+yB,UAAU,EAAG,IAAMz0B,KAAKwF,SAAS9D,SAAS,IAAI+yB,UAAU,EAAG,IACjG,OAAO0uwC,EAAS9i1B,EAAK5rb,UAAU,EAAG0uwC,GAAU9i1B,CAChD,EAGI+i1B,EAA4B,+BAE5BC,EAAqB,oCAcrBhD,EAAiB,SAASr7uC,GAC1B,IAAIs+uC,EAAeD,EACf1mvC,EAAQqI,EAASjjD,MAAM,KACvBwhyC,EAAM5mvC,EAAMA,EAAMn/C,OAAS,IAC3B+lyC,EAAI/lyC,OAAS,GAAa,QAAR+lyC,GAAyB,QAARA,KACnCD,EAAeF,GAEnB,IAAIhyuC,EAAUpM,EAASphD,MAAM0/xC,GAC7B,OAAOlyuC,EAAUA,EAAQ,GAAK,EAClC,EAEIoyuC,EAAgB,KAChBC,EAAY,KACI,oBAAThsxC,OACP+rxC,EAAgB/rxC,KAAKb,UACrB6sxC,EAAYhsxC,KAAKiS,OAErB85wC,EAAgBA,GAAiBziyC,EAAEq9xC,WACnCqF,EAAYA,GAAa1iyC,EAAE09xC,WAG3B19xC,EAAW,QAAmBA,EAAEiqH,QAChCjqH,EAAY,SAAkBA,EAAEqhQ,SAChCrhQ,EAAc,WAAgBA,EAAEq9xC,WAChCr9xC,EAAc,WAAgBA,EAAE09xC,WAChC19xC,EAAe,YAAeA,EAAEw+xC,YAChCx+xC,EAAiB,cAAaA,EAAE6/C,cAChC7/C,EAAQ,KAAsBA,EAAE4zC,KAChC5zC,EAAQ,KAAU,OAAYA,EAAE4zC,KAAKouvC,OACrChiyC,EAAQ,KAAW,QAAWA,EAAE4zC,KAAK4oP,QACrCx8R,EAAQ,KAAkB,eAAIA,EAAE4zC,KAAKkuvC,eACrC9hyC,EAAQ,KAAc,WAAQA,EAAE4zC,KAAKhP,WAMrC,IAAI+9vC,EAAa,WAAY,EAI7BA,EAAW7myC,UAAU8myC,kBAAoB,WAAY,EACrDD,EAAW7myC,UAAU+myC,cAAgB,WAAY,EACjDF,EAAW7myC,UAAUgnyC,oBAAsB,WAAY,EAEvDH,EAAW7myC,UAAUgxD,KAAO,SAASi2uC,GAEjC,OADA3myC,KAAK4myC,GAAKD,EACH3myC,IACX,EAQAumyC,EAAW7myC,UAAUk3c,MAAQ,SAAS3nX,EAAO43sC,EAAYr+vC,EAAYs+vC,GACjE,IAAInjxC,EAAO3jB,KACPw0T,EAAW5wT,EAAEygyC,UAAUp1sC,GAE3B,GAAwB,IAApBulO,EAASn0T,OAqBb,OAhBAuD,EAAEo+wB,KAAKxtd,GAAU,SAASzoO,GACtBnoF,EAAE8/xC,eAAe33sC,EAAS/rF,KAAK+myC,gBAAgB,SAAS5nyC,GACpD,IAAIgqB,EAAU,CAAC,EACX8jB,EAAQtpB,EAAK6ixC,kBAAkBh+vC,EAAYxoC,MAC3CoxB,EAAUzN,EAAKijxC,GAAGI,WAAW,uBAEjCrjxC,EAAK8ixC,cAActnyC,EAAGa,KAAMmpB,GAG5BjnB,OAAO2jB,WAAWlC,EAAKsjxC,eAAeH,EAAe75vC,EAAO9jB,GAAS,GAAOiI,GAG5EzN,EAAKijxC,GAAGhw1B,MAAMiw1B,EAAY55vC,EAAOtpB,EAAKsjxC,eAAeH,EAAe75vC,EAAO9jB,GAC/E,GACJ,GAAGnpB,OAEI,EApBHqnB,EAAQvlB,MAAM,kBAAoBmtF,EAAQ,wBAqBlD,EAOAs3sC,EAAW7myC,UAAUunyC,eAAiB,SAASH,EAAe75vC,EAAO9jB,EAAS+9wC,GAC1EA,EAAkBA,IAAmB,EACrC,IAAIvjxC,EAAO3jB,KAEX,OAAO,WAGCmpB,EAAQg+wC,iBACZh+wC,EAAQg+wC,gBAAiB,EAErBL,IAA2D,IAA1CA,EAAcI,EAAiBj6vC,IAMpDtpB,EAAK+ixC,oBAAoBz5vC,EAAO9jB,EAAS+9wC,GAC7C,CACJ,EAEAX,EAAW7myC,UAAU8myC,kBAAoB,SAASh+vC,EAAYujD,GAS1D,MAN2B,mBAAjB,EACEvjD,EAAWujD,GAEXnoF,EAAEylZ,OAAO,CAAC,EAAG7gX,EAI7B,EAOA,IAAI4+vC,EAAc,WACdpnyC,KAAK+myC,eAAiB,OAC1B,EACAnjyC,EAAEi0W,QAAQuv7B,EAAab,GAEvBa,EAAY1nyC,UAAU8myC,kBAAoB,SAASh+vC,EAAYujD,GAC3D,IAAI9+C,EAAQm6vC,EAAYtG,WAAW0F,kBAAkBjmyC,MAAMP,KAAMI,WAIjE,OAFI2rF,EAAQ9wD,OAAQgS,EAAW,IAAI8+C,EAAQ9wD,MAEpCgS,CACX,EAEAm6vC,EAAY1nyC,UAAU+myC,cAAgB,SAASr/sC,EAAK2E,EAAS5iE,GACzDA,EAAQk+wC,QACU,IAAdjgtC,EAAIs5yB,OACJt5yB,EAAIu7B,SACJv7B,EAAIy7B,SACe,WAAnB92B,EAAQj8E,OAEZqZ,EAAQ8R,KAAO8wD,EAAQ9wD,KAElB9R,EAAQk+wC,SACTjgtC,EAAIw+B,gBAEZ,EAEAwhrC,EAAY1nyC,UAAUgnyC,oBAAsB,SAASz5vC,EAAO9jB,GACpDA,EAAQk+wC,SAEZxhxC,YAAW,WACP3jB,OAAO60B,SAAW5N,EAAQ8R,IAC9B,GAAG,EACP,EAOA,IAAIqswC,EAAc,WACdtnyC,KAAK+myC,eAAiB,QAC1B,EACAnjyC,EAAEi0W,QAAQyv7B,EAAaf,GAEvBe,EAAY5nyC,UAAU+myC,cAAgB,SAASr/sC,EAAK2E,EAAS5iE,GACzDA,EAAQ4iE,QAAUA,EAClB3E,EAAIw+B,gBACR,EAEA0hrC,EAAY5nyC,UAAUgnyC,oBAAsB,SAASz5vC,EAAO9jB,GACxDtD,YAAW,WACPsD,EAAQ4iE,QAAQ2uZ,QACpB,GAAG,EACP,EAIA,IAAI6szB,EAAW5G,EAAoB,QAsB/B6G,EAAa,SAAS3ixC,EAAKsE,GAC3BA,EAAUA,GAAW,CAAC,EAEtBnpB,KAAKm0B,WAAatP,EAClB7kB,KAAKi0B,QAAU9K,EAAQ8K,SAAW/xB,OAAO8pB,aACzChsB,KAAKynyC,eAAiBt+wC,EAAQs+wC,gBAAkB,IAChDznyC,KAAK0nyC,UAAYv+wC,EAAQu+wC,WAAa,GAC1C,EAIAF,EAAW9nyC,UAAUioyC,SAAW,SAASC,EAAUC,EAASC,GACnDA,GAA0B,mBAAZD,IACfC,EAAMD,EACNA,EAAU,MAGd,IAAIjnyC,EAAIknyC,IAAQ,IAAIt8wC,MAAOic,UAAY,IAAM5kC,KAAKwF,SAC9Cs4D,GAAY,IAAIn1C,MAAOic,UAEvB5iB,EAAM7kB,KAAKm0B,WACXszwC,EAAiBznyC,KAAKynyC,eACtBC,EAAY1nyC,KAAK0nyC,UACjBzzwC,EAAUj0B,KAAKi0B,QAEf8zwC,EAAOljxC,EAAM,KACbmjxC,EAAOnjxC,EAAM,KACbojxC,EAAOpjxC,EAAM,KAEb2jC,EAAc,SAASlR,GACvBuwvC,GAAWA,EAAQvwvC,EACvB,EAEI6J,EAAQ,SAASugB,GACjB,IAAI,IAAIl2C,MAAOic,UAAYk5B,EAAY+muC,EAKnC,OAJAH,EAASzlyC,MAAM,gCAAkC+iB,EAAM,qBAAuBjkB,EAAI,KAClFqzB,EAAQlH,WAAWk7wC,GACnBh0wC,EAAQlH,WAAWi7wC,QACnBnrjC,IAGJh3N,YAAW,WACP,IACI67C,GACJ,CAAE,MAAMpqB,GACJkR,EAAYlR,EAChB,CACJ,GAAGmwvC,GAAkB5kyC,KAAKwF,SAAW,IACzC,EAEI6/xC,EAAU,SAASrkvC,EAAW6d,GAC1B7d,IACA6d,IAEAvgB,GAAM,WACF+mvC,EAAQrkvC,EAAW6d,EACvB,GAER,EAEIymuC,EAAU,WACV,IAAIC,EAAOn0wC,EAAQhI,QAAQ+7wC,GAC3B,GAAII,GAAQA,IAASxnyC,EACjB,OAAO,EAGP,GADAqzB,EAAQ/H,QAAQ87wC,EAAMpnyC,GAClBqzB,EAAQhI,QAAQ+7wC,KAAUpnyC,EAC1B,OAAO,EAEP,IAAKyiyC,EAAsBpvwC,GAAS,GAChC,MAAM,IAAIzM,MAAM,qDAEpB,OAAO,CAGnB,EAEIq1N,EAAO,WACP5oN,EAAQ/H,QAAQ67wC,EAAMnnyC,GAEtBsnyC,EAAQC,GAAS,WACTl0wC,EAAQhI,QAAQ87wC,KAAUnnyC,EAK9BugD,GAAM,WACEltB,EAAQhI,QAAQ+7wC,KAAUpnyC,EAI9BsnyC,GAAQ,WACJ,OAAQj0wC,EAAQhI,QAAQg8wC,EAC5B,GAAGI,GALCxrjC,GAMR,IAZIwrjC,GAaR,GACJ,EAEIA,EAAkB,WAClBp0wC,EAAQ/H,QAAQ+7wC,EAAM,KACtB,IACIL,GACJ,CAAE,QACE3zwC,EAAQlH,WAAWk7wC,GACfh0wC,EAAQhI,QAAQ+7wC,KAAUpnyC,GAC1BqzB,EAAQlH,WAAWi7wC,GAEnB/zwC,EAAQhI,QAAQ87wC,KAAUnnyC,GAC1BqzB,EAAQlH,WAAWg7wC,EAE3B,CACJ,EAEA,IACI,IAAI1E,EAAsBpvwC,GAAS,GAG/B,MAAM,IAAIzM,MAAM,qCAFhBq1N,GAIR,CAAE,MAAMvlM,GACJkR,EAAYlR,EAChB,CACJ,EAIA,IAAIgxvC,GAAW3H,EAAoB,SAkB/B4H,GAAe,SAASp0wC,EAAYhL,GACpCA,EAAUA,GAAW,CAAC,EACtBnpB,KAAKm0B,WAAaA,EAClBn0B,KAAKi0B,QAAU9K,EAAQ8K,SAAW/xB,OAAO8pB,aACzChsB,KAAKwoD,YAAcr/B,EAAQq/wC,eAAiB5kyC,EAAEP,KAAKilyC,GAASxmyC,MAAOwmyC,IACnEtoyC,KAAK+qB,KAAO,IAAIy8wC,EAAWrzwC,EAAY,CAACF,QAASj0B,KAAKi0B,UAEtDj0B,KAAK8nyC,IAAM3+wC,EAAQ2+wC,KAAO,KAE1B9nyC,KAAKyoyC,SAAW,EACpB,EAcAF,GAAa7oyC,UAAUspD,QAAU,SAAS5H,EAAMsnvC,EAAehnuC,GAC3D,IAAIinuC,EAAa,CACb,GAAMpF,IACN,YAAc,IAAI/3wC,MAAOic,UAA4B,EAAhBihwC,EACrC,QAAWtnvC,GAGfphD,KAAK+qB,KAAK48wC,SAAS/jyC,EAAEP,MAAK,WACtB,IAAIulyC,EACJ,IACI,IAAIC,EAAc7oyC,KAAK8oyC,kBACvBD,EAAYhnyC,KAAK8myC,IACjBC,EAAY5oyC,KAAK+oyC,cAAcF,KAG3B7oyC,KAAKyoyC,SAAS5myC,KAAK8myC,EAE3B,CAAE,MAAMrxvC,GACJt3C,KAAKwoD,YAAY,wBAAyBpH,GAC1CwnvC,GAAY,CAChB,CACIlnuC,GACAA,EAAGknuC,EAEX,GAAG5oyC,MAAO4D,EAAEP,MAAK,SAAqBi0C,GAClCt3C,KAAKwoD,YAAY,+BAAgClR,GAC7CoqB,GACAA,GAAG,EAEX,GAAG1hE,MAAOA,KAAK8nyC,IACnB,EAQAS,GAAa7oyC,UAAUspyC,UAAY,SAASx4hC,GACxC,IAAI5+L,EAAQ5xE,KAAKyoyC,SAAS1myC,MAAM,EAAGyuQ,GACnC,GAAI5+L,EAAMvxE,OAASmwQ,EAAW,CAI1B,IAAIq4hC,EAAc7oyC,KAAK8oyC,kBACvB,GAAID,EAAYxoyC,OAAQ,CAEpB,IAAI4oyC,EAAa,CAAC,EAClBrlyC,EAAEo+wB,KAAKpwsB,GAAO,SAASxwB,GAAQ6nvC,EAAW7nvC,EAAS,KAAK,CAAM,IAE9D,IAAK,IAAIxgD,EAAI,EAAGA,EAAIioyC,EAAYxoyC,OAAQO,IAAK,CACzC,IAAIwgD,EAAOynvC,EAAYjoyC,GACvB,IAAI,IAAI4qB,MAAOic,UAAY2Z,EAAiB,aAAM6nvC,EAAW7nvC,EAAS,MAClEA,EAAK8nvC,UAAW,EAChBt3tC,EAAM/vE,KAAKu/C,GACPwwB,EAAMvxE,QAAUmwQ,GAChB,KAGZ,CACJ,CACJ,CACA,OAAO5+L,CACX,EAOA,IAAIu3tC,GAAyB,SAASzvkC,EAAO0vkC,GACzC,IAAIC,EAAgB,GAMpB,OALAzlyC,EAAEo+wB,KAAKtojB,GAAO,SAASt4K,GACfA,EAAS,KAAMgovC,EAAMhovC,EAAS,KAC9BiovC,EAAcxnyC,KAAKu/C,EAE3B,IACOiovC,CACX,EAMAd,GAAa7oyC,UAAU4pyC,gBAAkB,SAAS5w4B,EAAKh3V,GACnD,IAAI0nuC,EAAQ,CAAC,EACbxlyC,EAAEo+wB,KAAKtpX,GAAK,SAASntY,GAAM69wC,EAAM79wC,IAAM,CAAM,IAE7CvrB,KAAKyoyC,SAAWU,GAAuBnpyC,KAAKyoyC,SAAUW,GAEtD,IAAIG,EAAoB3lyC,EAAEP,MAAK,WAC3B,IAAIulyC,EACJ,IACI,IAAIC,EAAc7oyC,KAAK8oyC,kBAMvB,GALAD,EAAcM,GAAuBN,EAAaO,GAClDR,EAAY5oyC,KAAK+oyC,cAAcF,GAIhB,CACXA,EAAc7oyC,KAAK8oyC,kBACnB,IAAK,IAAIloyC,EAAI,EAAGA,EAAIioyC,EAAYxoyC,OAAQO,IAAK,CACzC,IAAIwgD,EAAOynvC,EAAYjoyC,GACvB,GAAIwgD,EAAS,IAAOgovC,EAAMhovC,EAAS,IAE/B,OADAphD,KAAKwoD,YAAY,kCACV,CAEf,CACJ,CACJ,CAAE,MAAMlR,GACJt3C,KAAKwoD,YAAY,uBAAwBkwW,GACzCkw4B,GAAY,CAChB,CACA,OAAOA,CACX,GAAG5oyC,MAEHA,KAAK+qB,KAAK48wC,UAAS,WACf,IAAIiB,EAAYW,IACZ7nuC,GACAA,EAAGknuC,EAEX,GAAGhlyC,EAAEP,MAAK,SAAqBi0C,GAC3B,IAAIsxvC,GAAY,EAEhB,GADA5oyC,KAAKwoD,YAAY,+BAAgClR,IAC5C+rvC,EAAsBrjyC,KAAKi0B,SAAS,MAKrC20wC,EAAYW,KAIR,IACIvpyC,KAAKi0B,QAAQlH,WAAW/sB,KAAKm0B,WACjC,CAAE,MAAMmjB,GACJt3C,KAAKwoD,YAAY,uBAAwBlR,EAC7C,CAGJoqB,GACAA,EAAGknuC,EAEX,GAAG5oyC,MAAOA,KAAK8nyC,IACnB,EAGA,IAAI0B,GAAiB,SAASC,EAAeC,GACzC,IAAIC,EAAW,GAcf,OAbA/lyC,EAAEo+wB,KAAKynhB,GAAe,SAASrovC,GAC3B,IAAI71B,EAAK61B,EAAS,GAClB,GAAI71B,KAAMm+wC,EAAe,CACrB,IAAIE,EAAaF,EAAcn+wC,GACZ,OAAfq+wC,IACAxovC,EAAc,QAAIwovC,EAClBD,EAAS9nyC,KAAKu/C,GAEtB,MAEIuovC,EAAS9nyC,KAAKu/C,EAEtB,IACOuovC,CACX,EAMApB,GAAa7oyC,UAAU8pyC,eAAiB,SAASE,EAAehouC,GAC5D1hE,KAAKyoyC,SAAWe,GAAexpyC,KAAKyoyC,SAAUiB,GAC9C1pyC,KAAK+qB,KAAK48wC,SAAS/jyC,EAAEP,MAAK,WACtB,IAAIulyC,EACJ,IACI,IAAIC,EAAc7oyC,KAAK8oyC,kBACvBD,EAAcW,GAAeX,EAAaa,GAC1Cd,EAAY5oyC,KAAK+oyC,cAAcF,EACnC,CAAE,MAAMvxvC,GACJt3C,KAAKwoD,YAAY,uBAAwBkhvC,GACzCd,GAAY,CAChB,CACIlnuC,GACAA,EAAGknuC,EAEX,GAAG5oyC,MAAO4D,EAAEP,MAAK,SAAqBi0C,GAClCt3C,KAAKwoD,YAAY,+BAAgClR,GAC7CoqB,GACAA,GAAG,EAEX,GAAG1hE,MAAOA,KAAK8nyC,IACnB,EAMAS,GAAa7oyC,UAAUopyC,gBAAkB,WACrC,IAAIe,EACJ,KACIA,EAAe7pyC,KAAKi0B,QAAQhI,QAAQjsB,KAAKm0B,eAErC01wC,EAAevD,EAAUuD,GACpBjmyC,EAAE+N,QAAQk4xC,KACX7pyC,KAAKwoD,YAAY,yBAA0BqhvC,GAC3CA,EAAe,MAG3B,CAAE,MAAOvyvC,GACLt3C,KAAKwoD,YAAY,yBAA0BlR,GAC3CuyvC,EAAe,IACnB,CACA,OAAOA,GAAgB,EAC3B,EAKAtB,GAAa7oyC,UAAUqpyC,cAAgB,SAASvqvC,GAC5C,IAEI,OADAx+C,KAAKi0B,QAAQ/H,QAAQlsB,KAAKm0B,WAAYkywC,EAAc7nvC,KAC7C,CACX,CAAE,MAAOlH,GAEL,OADAt3C,KAAKwoD,YAAY,qBAAsBlR,IAChC,CACX,CACJ,EAKAixvC,GAAa7oyC,UAAUslB,MAAQ,WAC3BhlB,KAAKyoyC,SAAW,GAChBzoyC,KAAKi0B,QAAQlH,WAAW/sB,KAAKm0B,WACjC,EAKA,IAEIq6B,GAASmyuC,EAAoB,SAQ7BmJ,GAAiB,SAAS31wC,EAAYhL,GACtCnpB,KAAKwoyC,cAAgBr/wC,EAAQq/wC,cAC7BxoyC,KAAKw+C,MAAQ,IAAI+pvC,GAAap0wC,EAAY,CACtCq0wC,cAAe5kyC,EAAEP,KAAKrD,KAAKwoD,YAAaxoD,MACxCi0B,QAAS9K,EAAQ8K,UAGrBj0B,KAAK+pyC,UAAY5gxC,EAAQ4gxC,UACzB/pyC,KAAK096B,YAAcv05B,EAAQ6gxC,gBAC3BhqyC,KAAKiqyC,eAAiB9gxC,EAAQ8gxC,eAC9BjqyC,KAAKkqyC,gBAAkB/gxC,EAAQghxC,oBAG/BnqyC,KAAKwwQ,UAAYxwQ,KAAK+pyC,UAAsB,WAC5C/pyC,KAAK0oyC,cAAgB1oyC,KAAK+pyC,UAAmC,wBAE7D/pyC,KAAKujB,SAAWvjB,KAAK+pyC,UAA2B,gBAChD/pyC,KAAKoqyC,2BAA6B,EAGlCpqyC,KAAKqqyC,wBAA0B,CAAC,CACpC,EAKAP,GAAepqyC,UAAUspD,QAAU,SAAS5H,EAAMsgB,GAC9C1hE,KAAKw+C,MAAMwK,QAAQ5H,EAAMphD,KAAK0oyC,cAAehnuC,EACjD,EAMAoouC,GAAepqyC,UAAU8mC,MAAQ,WAC7BxmC,KAAKujB,SAAU,EACfvjB,KAAKoqyC,2BAA6B,EAClCpqyC,KAAKuoE,OACT,EAKAuhuC,GAAepqyC,UAAUqwC,KAAO,WAC5B/vC,KAAKujB,SAAU,EACXvjB,KAAKsqyC,YACL59wC,aAAa1sB,KAAKsqyC,WAClBtqyC,KAAKsqyC,UAAY,KAEzB,EAKAR,GAAepqyC,UAAUslB,MAAQ,WAC7BhlB,KAAKw+C,MAAMx5B,OACf,EAKA8kxC,GAAepqyC,UAAU6qyC,eAAiB,WACtCvqyC,KAAKwwQ,UAAYxwQ,KAAK+pyC,UAAsB,UAChD,EAKAD,GAAepqyC,UAAU8qyC,WAAa,WAClCxqyC,KAAKyqyC,cAAczqyC,KAAK+pyC,UAAmC,wBAC/D,EAKAD,GAAepqyC,UAAU+qyC,cAAgB,SAASC,GAC9C1qyC,KAAK0oyC,cAAgBgC,EAChB1qyC,KAAKujB,UACNvjB,KAAKsqyC,UAAYzkxC,WAAWjiB,EAAEP,KAAKrD,KAAKuoE,MAAOvoE,MAAOA,KAAK0oyC,eAEnE,EAYAoB,GAAepqyC,UAAU6oE,MAAQ,SAASp/C,GACtC,IAEI,GAAInpB,KAAK2qyC,kBAEL,YADAn8uC,GAAOnkC,IAAI,sCAIflB,EAAUA,GAAW,CAAC,EACtB,IAAIu+wC,EAAY1nyC,KAAK+pyC,UAAoC,yBACrDppuC,GAAY,IAAIn1C,MAAOic,UACvBmjwC,EAAmB5qyC,KAAKwwQ,UACxB5+L,EAAQ5xE,KAAKw+C,MAAMwqvC,UAAU4B,GAC7BC,EAAiB,GACjBC,EAAmB,CAAC,EAsCxB,GArCAlnyC,EAAEo+wB,KAAKpwsB,GAAO,SAASxwB,GACnB,IAAItsB,EAAUssB,EAAc,QAI5B,GAHIphD,KAAKiqyC,iBAAmB7ovC,EAAK8nvC,WAC7Bp0wC,EAAU90B,KAAKiqyC,eAAen1wC,IAE9BA,EAAS,CAILA,EAAe,OAAKA,EAAoB,aACxCA,EAAoB,WAAIlxB,EAAEylZ,OACtB,CAAC,EACDv0X,EAAoB,WACpB,CAAC,uBAA0B4jtC,EAAOonD,eAG1C,IAAIiL,GAAa,EACbhrhB,EAAS3+tB,EAAS,GAClB2+tB,GACK//wB,KAAKqqyC,wBAAwBtqhB,IAAW,GAAK,IAC9C//wB,KAAKwoD,YAAY,kDAAmD,CAChEpH,KAAMA,EACNovN,UAAW5+L,EAAMvxE,OACjB2qyC,UAAWhryC,KAAKqqyC,wBAAwBtqhB,KAE5CgrhB,GAAa,GAGjB/qyC,KAAKwoD,YAAY,+BAAgC,CAACpH,KAAMA,IAGxD2pvC,GACAF,EAAehpyC,KAAKizB,EAE5B,CACAg2wC,EAAiB1pvC,EAAS,IAAKtsB,CACnC,GAAG90B,MACC6qyC,EAAexqyC,OAAS,EAExB,YADAL,KAAKwqyC,aAITxqyC,KAAK2qyC,mBAAoB,EAEzB,IAAIM,EAAoBrnyC,EAAEP,MAAK,SAASgiJ,GACpCrlJ,KAAK2qyC,mBAAoB,EAEzB,IAKI,IAAIO,GAAuB,EAC3B,GAAI/hxC,EAAQgixC,UAERnryC,KAAKw+C,MAAMgrvC,eAAesB,QACvB,GACHlnyC,EAAEqhQ,SAAS5/G,IACG,YAAdA,EAAIvjJ,QACJ,IAAI0pB,MAAOic,UAAYk5B,GAAa+muC,EAEpC1nyC,KAAKwoD,YAAY,6BACjBxoD,KAAKuoE,aACF,GACH3kE,EAAEqhQ,SAAS5/G,IACXA,EAAI+lpC,UACH/lpC,EAAI+lpC,QAAgB,QAAK,KAAiC,MAA1B/lpC,EAAI+lpC,QAAgB,QAA2B,YAAd/lpC,EAAIvjJ,OACxE,CAEE,IAAIupyC,EAA+B,EAArBrryC,KAAK0oyC,cACfl4wC,EAAU60H,EAAI+lpC,QAAyB,gBAC3C,GAAI56wC,EAAS,CACT,IAAI86wC,EAAa96wC,EAAQ,eACrB86wC,IACAD,EAAsC,IAA3B11wC,SAAS21wC,EAAY,KAAeD,EAEvD,CACAA,EAAUxoyC,KAAKgL,IAlMP,IAkMkCw9xC,GAC1CrryC,KAAKwoD,YAAY,mBAAqB6ivC,EAAU,OAChDrryC,KAAKyqyC,cAAcY,EACvB,MAAO,GAAIznyC,EAAEqhQ,SAAS5/G,IAAQA,EAAI+lpC,SAAqC,MAA1B/lpC,EAAI+lpC,QAAgB,OAE7D,GAAIx5tC,EAAMvxE,OAAS,EAAG,CAClB,IAAIkryC,EAAkB1oyC,KAAK8K,IAAI,EAAG9K,KAAKyK,MAAMs9xC,EAAmB,IAChE5qyC,KAAKwwQ,UAAY3tQ,KAAKgL,IAAI7N,KAAKwwQ,UAAW+6hC,EAAiB35tC,EAAMvxE,OAAS,GAC1EL,KAAKwoD,YAAY,wCAA0CxoD,KAAKwwQ,WAChExwQ,KAAKwqyC,YACT,MACIxqyC,KAAKwoD,YAAY,2CAA4CopB,GAC7D5xE,KAAKuqyC,iBACLW,GAAuB,OAK3BA,GAAuB,EAGvBA,IACAlryC,KAAKw+C,MAAM8qvC,gBACP1lyC,EAAEyrB,IAAIuiD,GAAO,SAASxwB,GAAQ,OAAOA,EAAS,EAAG,IACjDx9C,EAAEP,MAAK,SAASulyC,GACRA,GACA5oyC,KAAKoqyC,2BAA6B,EAClCpqyC,KAAKuoE,UAELvoE,KAAKwoD,YAAY,uCACXxoD,KAAKoqyC,2BAA6B,GACpCpqyC,KAAKwoD,YAAY,uDACjBxoD,KAAKkqyC,mBAELlqyC,KAAKwqyC,aAGjB,GAAGxqyC,OAIP4D,EAAEo+wB,KAAKpwsB,EAAOhuE,EAAEP,MAAK,SAAS+9C,GAC1B,IAAI2+tB,EAAS3+tB,EAAS,GAClB2+tB,GACA//wB,KAAKqqyC,wBAAwBtqhB,GAAU//wB,KAAKqqyC,wBAAwBtqhB,IAAW,EAC/E//wB,KAAKqqyC,wBAAwBtqhB,KACzB//wB,KAAKqqyC,wBAAwBtqhB,GAAU,GACvC//wB,KAAKwoD,YAAY,qCAAsC,CACnDpH,KAAMA,EACNovN,UAAW5+L,EAAMvxE,OACjB2qyC,UAAWhryC,KAAKqqyC,wBAAwBtqhB,MAIhD//wB,KAAKwoD,YAAY,8CAA+C,CAACpH,KAAMA,GAE/E,GAAGphD,OAGX,CAAE,MAAMs3C,GACJt3C,KAAKwoD,YAAY,8BAA+BlR,GAChDt3C,KAAKwqyC,YACT,CACJ,GAAGxqyC,MACCwryC,EAAiB,CACjB/6wC,OAAQ,OACRg7wC,SAAS,EACTC,oBAAoB,EACpBC,WAAYjE,GAEZv+wC,EAAQgixC,YACRK,EAAeI,UAAY,cAE/Bp9uC,GAAOnkC,IAAI,oBAAqBwgxC,GAChC7qyC,KAAK096B,YAAYmtX,EAAgBW,EAAgBP,EAErD,CAAE,MAAM3zvC,GACJt3C,KAAKwoD,YAAY,+BAAgClR,GACjDt3C,KAAKwqyC,YACT,CACJ,EAKAV,GAAepqyC,UAAU8oD,YAAc,SAASwmR,EAAK13R,GAEjD,GADAkX,GAAO1sD,MAAMvB,MAAMiuD,GAAO1sD,MAAO1B,WAC7BJ,KAAKwoyC,cACL,IACUlxvC,aAAe9vB,QACjB8vB,EAAM,IAAI9vB,MAAMwnT,IAEpBhvU,KAAKwoyC,cAAcx59B,EAAK13R,EAC5B,CAAE,MAAMA,GACJkX,GAAO1sD,MAAMw1C,EACjB,CAER,EAYA,IAAIu0vC,GAAkC,mBAiBtC,SAASC,GAAMzunC,EAAOl0J,GAClB4ixC,IAAU,EAAM1unC,EAAOl0J,EAC3B,CAcA,SAAS6ixC,GAAO3unC,EAAOl0J,GACnB4ixC,IAAU,EAAO1unC,EAAOl0J,EAC5B,CAUA,SAAS8ixC,GAAW5unC,EAAOl0J,GACvB,MAA4C,MAArC+ixC,GAAiB7unC,EAAOl0J,EACnC,CAWA,SAASgjxC,GAAY9unC,EAAOl0J,GACxB,GAgHJ,SAA8BA,GAC1B,GAAIA,GAAWA,EAAQijxC,UACnB,OAAO,EAEX,IAAI1mxB,EAAOv8f,GAAWA,EAAQjnB,QAAW29xC,EACrCwM,EAAM3mxB,EAAe,WAAK,CAAC,EAC3B4mxB,GAAW,EAYf,OAVA1oyC,EAAEo+wB,KAAK,CACHqqhB,EAAgB,WAChBA,EAAkB,aAClB3mxB,EAAgB,aACjB,SAAS6mxB,GACJ3oyC,EAAEwK,SAAS,EAAC,EAAM,EAAG,IAAK,OAAQm+xC,KAClCD,GAAW,EAEnB,IAEOA,CACX,CAnIQE,CAAqBrjxC,GAErB,OADA9B,EAAQC,KAAK,yNACN,EAEX,IAAImlxC,EAAgD,MAArCP,GAAiB7unC,EAAOl0J,GAIvC,OAHIsjxC,GACAplxC,EAAQC,KAAK,qGAEVmlxC,CACX,CASA,SAASC,GAA0Bj8wC,GAC/B,OAAOk8wC,GAAgBl8wC,GAAQ,SAAS/lB,GACpC,OAAO1K,KAAKgnyC,WAAWt8xC,EAC3B,GACJ,CASA,SAASkiyC,GAA6Bn8wC,GAClC,OAAOk8wC,GAAgBl8wC,GAAQ,SAAS/lB,GACpC,OAAO1K,KAAK6syC,YAAYniyC,EAC5B,GACJ,CASA,SAASoiyC,GAA4Br8wC,GACjC,OAAOk8wC,GAAgBl8wC,GAAQ,SAAS/lB,GACpC,OAAO1K,KAAK6syC,YAAYniyC,EAC5B,GACJ,CAcA,SAASqiyC,GAAc1vnC,EAAOl0J,GAE1B6jxC,GADA7jxC,EAAUA,GAAW,CAAC,GACD0J,OACjBo6wC,GAAe5vnC,EAAOl0J,KAAYA,EAAQ+jxC,qBAAsB/jxC,EAAQ8N,aAEhF,CAUA,SAAS+1wC,GAAY7jxC,GAEjB,MAAmC,kBADnCA,EAAUA,GAAW,CAAC,GACPgkxC,gBAAqCvpyC,EAAEooB,aAAepoB,EAAE4yB,MAC3E,CASA,SAASy2wC,GAAe5vnC,EAAOl0J,GAE3B,QADAA,EAAUA,GAAW,CAAC,GACNikxC,mBAAqBvB,IAAmCxunC,CAC5E,CASA,SAAS6unC,GAAiB7unC,EAAOl0J,GAC7B,OAAO6jxC,GAAY7jxC,GAAShmB,IAAI8pyC,GAAe5vnC,EAAOl0J,GAC1D,CA6CA,SAAS4ixC,GAAUsB,EAAUhwnC,EAAOl0J,GAC3BvlB,EAAEo3D,SAASqiH,IAAWA,EAAMh9K,QAOjC2syC,GAFA7jxC,EAAUA,GAAW,CAAC,GAEDld,IACjBghyC,GAAe5vnC,EAAOl0J,GACtBkkxC,EAAW,EAAI,EACfzpyC,EAAE0/C,SAASn6B,EAAQmkxC,kBAAoBnkxC,EAAQmkxC,iBAAmB,OAChEnkxC,EAAQ+jxC,uBACR/jxC,EAAQokxC,eACRpkxC,EAAQqkxC,gBACVrkxC,EAAQ8N,cAGR9N,EAAQytb,OAASy21B,GACjBlkxC,EAAQytb,MAAMztb,EAAQskxC,gBAAkB,UAAWtkxC,EAAQukxC,gBAAiB,CACxE,kBAAoB,KAlBxBrmxC,EAAQvlB,MAAM,SAAWuryC,EAAW,QAAU,UAAY,gCAqBlE,CAUA,SAASV,GAAgBl8wC,EAAQk9wC,GAC7B,OAAO,WACH,IAAIlB,GAAW,EAEf,IACI,IAAIpvnC,EAAQswnC,EAAe/tyC,KAAKI,KAAM,SAClCosyC,EAAYuB,EAAe/tyC,KAAKI,KAAM,cACtCmtyC,EAAkBQ,EAAe/tyC,KAAKI,KAAM,qCAC5CotyC,EAAoBO,EAAe/tyC,KAAKI,KAAM,kCAC9C0lhB,EAAMioxB,EAAe/tyC,KAAKI,KAAM,UAEhCq9K,IACAovnC,EAAWN,GAAY9unC,EAAO,CAC1B+unC,UAAWA,EACXe,gBAAiBA,EACjBC,kBAAmBA,EACnBlryC,OAAQwjhB,IAGpB,CAAE,MAAMpue,GACJjwB,EAAQvlB,MAAM,2DAA6Dw1C,EAC/E,CAEA,IAAKm1vC,EACD,OAAOh8wC,EAAOlwB,MAAMP,KAAMI,WAG9B,IAAI8oB,EAAW9oB,UAAUA,UAAUC,OAAS,GACnB,mBAAf,GACN6oB,EAAS,EAIjB,CACJ,CAEc,IAAI0kxC,GAAkB,OAClBC,GAAkB,YAClBC,GAAkB,SAClBC,GAAkB,OAClBC,GAAkB,UAClBC,GAAkB,SAClBC,GAAkB,UAKhCC,GAAa,CACbC,WAAY,SAAS5hpC,EAAMvzI,GACvB,IAAIzJ,EAAO,CAAC,EACR6+xC,EAAO,CAAC,EAYZ,OAXIzqyC,EAAEqhQ,SAASz4G,GACX5oJ,EAAEo+wB,KAAKx1nB,GAAM,SAASvpJ,EAAGS,GAChB1D,KAAKsuyC,sBAAsB5qyC,KAC5B2qyC,EAAK3qyC,GAAKT,EAElB,GAAGjD,MAEHquyC,EAAK7hpC,GAAQvzI,EAGjBzJ,EAAKo+xC,IAAcS,EACZ7+xC,CACX,EAEA++xC,aAAc,SAAS/hpC,GACnB,IAAIh9I,EAAO,CAAC,EACRg/xC,EAAS,GAYb,OAXK5qyC,EAAE+N,QAAQ66I,KACXA,EAAO,CAACA,IAGZ5oJ,EAAEo+wB,KAAKx1nB,GAAM,SAAS9oJ,GACb1D,KAAKsuyC,sBAAsB5qyC,IAC5B8qyC,EAAO3syC,KAAK6B,EAEpB,GAAG1D,MAEHwP,EAAKs+xC,IAAgBU,EACdh/xC,CACX,EAEAi/xC,gBAAiB,SAASjipC,EAAMvzI,GAC5B,IAAIzJ,EAAO,CAAC,EACRk/xC,EAAY,CAAC,EAWjB,OAVI9qyC,EAAEqhQ,SAASz4G,GACX5oJ,EAAEo+wB,KAAKx1nB,GAAM,SAASvpJ,EAAGS,GAChB1D,KAAKsuyC,sBAAsB5qyC,KAC5BgryC,EAAUhryC,GAAKT,EAEvB,GAAGjD,MAEH0uyC,EAAUlipC,GAAQvzI,EAEtBzJ,EAAKq+xC,IAAmBa,EACjBl/xC,CACX,EAEAm/xC,aAAc,SAASC,EAAWlyxC,GAC9B,IAAIlN,EAAO,CAAC,EACRq/xC,EAAS,CAAC,EAWd,OAVIjryC,EAAEqhQ,SAAS2piC,GACXhryC,EAAEo+wB,KAAK4shB,GAAW,SAAS3ryC,EAAGS,GACrB1D,KAAKsuyC,sBAAsB5qyC,KAC5BmryC,EAAOnryC,GAAKE,EAAE+N,QAAQ1O,GAAKA,EAAI,CAACA,GAExC,GAAGjD,MAEH6uyC,EAAOD,GAAahryC,EAAE+N,QAAQ+K,GAAUA,EAAS,CAACA,GAEtDlN,EAAKy+xC,IAAgBY,EACdr/xC,CACX,EAEAs/xC,cAAe,SAASF,EAAWztyC,GAC/B,IAAIqO,EAAO,CAAC,EACRu/xC,EAAU,CAAC,EAWf,OAVInryC,EAAEqhQ,SAAS2piC,GACXhryC,EAAEo+wB,KAAK4shB,GAAW,SAAS3ryC,EAAGS,GACrB1D,KAAKsuyC,sBAAsB5qyC,KAC5BqryC,EAAQrryC,GAAKT,EAErB,GAAGjD,MAEH+uyC,EAAQH,GAAaztyC,EAEzBqO,EAAKw+xC,IAAiBe,EACfv/xC,CACX,EAEAw/xC,cAAe,SAASJ,EAAWztyC,GAC/B,IAAIqO,EAAO,CAAC,EACRy/xC,EAAU,CAAC,EAWf,OAVIrryC,EAAEqhQ,SAAS2piC,GACXhryC,EAAEo+wB,KAAK4shB,GAAW,SAAS3ryC,EAAGS,GACrB1D,KAAKsuyC,sBAAsB5qyC,KAC5BuryC,EAAQvryC,GAAKT,EAErB,GAAGjD,MAEHivyC,EAAQL,GAAaztyC,EAEzBqO,EAAK0+xC,IAAiBe,EACfz/xC,CACX,EAEA0/xC,cAAe,WAGX,MAFW,CACX1/xC,QAAsB,GAE1B,GAOA2/xC,GAAgB,WAAY,EAEhCvryC,EAAEylZ,OAAO8l5B,GAAczvyC,UAAWyuyC,IAElCgB,GAAczvyC,UAAU+y9B,MAAQ,SAASk0U,EAAmByI,EAAWC,GACnErvyC,KAAKsvyC,UAAY3I,EACjB3myC,KAAKuvyC,WAAaH,EAClBpvyC,KAAKwvyC,UAAYH,CACrB,EAoBAF,GAAczvyC,UAAUuM,IAAM6gyC,IAA4B,SAAStgpC,EAAMvzI,EAAIiQ,GACzE,IAAI1Z,EAAOxP,KAAKouyC,WAAW5hpC,EAAMvzI,GAIjC,OAHIrV,EAAEqhQ,SAASz4G,KACXtjI,EAAWjQ,GAERjZ,KAAKyvyC,cAAcjgyC,EAAM0Z,EACpC,IAsBAimxC,GAAczvyC,UAAUgwyC,SAAW5C,IAA4B,SAAStgpC,EAAMvzI,EAAIiQ,GAC9E,IAAI1Z,EAAOxP,KAAKyuyC,gBAAgBjipC,EAAMvzI,GAItC,OAHIrV,EAAEqhQ,SAASz4G,KACXtjI,EAAWjQ,GAERjZ,KAAKyvyC,cAAcjgyC,EAAM0Z,EACpC,IAYAimxC,GAAczvyC,UAAU43xC,MAAQwV,IAA4B,SAAStgpC,EAAMtjI,GACvE,IAAI1Z,EAAOxP,KAAKuuyC,aAAa/hpC,GAC7B,OAAOxsJ,KAAKyvyC,cAAcjgyC,EAAM0Z,EACpC,IAcAimxC,GAAczvyC,UAAUsjL,MAAQ8pnC,IAA4B,SAAS8B,EAAWlyxC,EAAQwM,GAChFtlB,EAAEqhQ,SAAS2piC,KACX1lxC,EAAWxM,GAEf,IAAIlN,EAAOxP,KAAK2uyC,aAAaC,EAAWlyxC,GACxC,OAAO1c,KAAKyvyC,cAAcjgyC,EAAM0Z,EACpC,IAWAimxC,GAAczvyC,UAAkB,OAAIotyC,IAA4B,SAAS5jxC,GAErE,IAAI1Z,EAAOxP,KAAKkvyC,gBAChB,OAAOlvyC,KAAKyvyC,cAAcjgyC,EAAM0Z,EACpC,IAaAimxC,GAAczvyC,UAAUmzB,OAASi6wC,IAA4B,SAAS8B,EAAWztyC,EAAO+nB,GACpF,IAAI1Z,EAAOxP,KAAKgvyC,cAAcJ,EAAWztyC,GACzC,OAAOnB,KAAKyvyC,cAAcjgyC,EAAM0Z,EACpC,IAEAimxC,GAAczvyC,UAAU+vyC,cAAgB,SAASjgyC,EAAM0Z,GACnD1Z,EAAiB,WAAIxP,KAAKuvyC,WAC1B//xC,EAAgB,UAAIxP,KAAKwvyC,UACzBhgyC,EAAa,OAAIxP,KAAK6syC,YAAY,SAElC,IAAI8C,EAAoB/ryC,EAAEm9xC,YAAYvxxC,GACtC,OAAOxP,KAAKsvyC,UAAUM,gBAAgB,CAClCrjyC,KAAM,SACNiD,KAAMmgyC,EACNhluC,SAAU3qE,KAAK6syC,YAAY,YAAc,WACzCgD,QAAS7vyC,KAAKsvyC,UAAUQ,iBAAiBp4kB,QAC1CxusB,EACP,EAEAimxC,GAAczvyC,UAAU4uyC,sBAAwB,SAAS9hpC,GACrD,MAAgB,eAATA,GAAkC,cAATA,CACpC,EAEA2ipC,GAAczvyC,UAAUmtyC,YAAc,SAASn6tC,GAC3C,OAAO1yE,KAAKsvyC,UAAUtI,WAAWt0tC,EACrC,EAEAy8tC,GAAczvyC,UAAU6E,SAAW,WAC/B,OAAOvE,KAAKsvyC,UAAU/qyC,WAAa,UAAYvE,KAAKuvyC,WAAa,IAAMvvyC,KAAKwvyC,SAChF,EAGAL,GAAczvyC,UAAkB,OAAMyvyC,GAAczvyC,UAAUmzB,OAC9Ds8wC,GAAczvyC,UAAe,IAASyvyC,GAAczvyC,UAAUuM,IAC9DkjyC,GAAczvyC,UAAoB,SAAIyvyC,GAAczvyC,UAAUgwyC,SAC9DP,GAAczvyC,UAAiB,MAAOyvyC,GAAczvyC,UAAUsjL,MAC9DmsnC,GAAczvyC,UAAiB,MAAOyvyC,GAAczvyC,UAAU43xC,MAC9D6X,GAAczvyC,UAAoB,SAAIyvyC,GAAczvyC,UAAU6E,SAM9D,IAAIwryC,GAAiB,WAAY,EAEjCnsyC,EAAEylZ,OAAO0m5B,GAAerwyC,UAAWyuyC,IAEnC4B,GAAerwyC,UAAU+y9B,MAAQ,SAASk0U,GACtC3myC,KAAKsvyC,UAAY3I,CACrB,EAqBAoJ,GAAerwyC,UAAUuM,IAAM2gyC,IAA6B,SAASpgpC,EAAMvzI,EAAIiQ,GAC3E,IAAI1Z,EAAOxP,KAAKouyC,WAAW5hpC,EAAMvzI,GAgBjC,OAfIrV,EAAEqhQ,SAASz4G,KACXtjI,EAAWjQ,GAGXjZ,KAAK6syC,YAAY,kBACjB7syC,KAAKsvyC,UAAuB,YAAEU,qBAAqB7qyC,SAASqpE,UAIhEh/D,EAAKo+xC,IAAchqyC,EAAEylZ,OACjB,CAAC,EACDzlZ,EAAE4zC,KAAKsuvC,oBACP9lyC,KAAKsvyC,UAAuB,YAAEW,oBAC9BzgyC,EAAKo+xC,KAEF5tyC,KAAKyvyC,cAAcjgyC,EAAM0Z,EACpC,IAuBA6mxC,GAAerwyC,UAAUgwyC,SAAW9C,IAA6B,SAASpgpC,EAAMvzI,EAAIiQ,GAChF,IAAI1Z,EAAOxP,KAAKyuyC,gBAAgBjipC,EAAMvzI,GAItC,OAHIrV,EAAEqhQ,SAASz4G,KACXtjI,EAAWjQ,GAERjZ,KAAKyvyC,cAAcjgyC,EAAM0Z,EACpC,IAeA6mxC,GAAerwyC,UAAU43xC,MAAQsV,IAA6B,SAASpgpC,EAAMtjI,GACzE,IAAI1Z,EAAOxP,KAAKuuyC,aAAa/hpC,GAC7B,OAAOxsJ,KAAKyvyC,cAAcjgyC,EAAM0Z,EACpC,IA2BA6mxC,GAAerwyC,UAAU4jmB,UAAYspsB,IAA6B,SAASpgpC,EAAMyxM,EAAI/0U,GACjF,IAAI1Z,EAAO,CAAC,EACR0gyC,EAAO,CAAC,EAuBZ,OAtBItsyC,EAAEqhQ,SAASz4G,IACX5oJ,EAAEo+wB,KAAKx1nB,GAAM,SAASvpJ,EAAGS,GACrB,IAAK1D,KAAKsuyC,sBAAsB5qyC,GAAI,CAChC,GAAI4oC,MAAM+9H,WAAWpnK,IAEjB,YADAokB,EAAQvlB,MAAM,kFAGdouyC,EAAKxsyC,GAAKT,CAElB,CACJ,GAAGjD,MACHkpB,EAAW+0U,IAIPr6V,EAAEu3c,YAAYl9G,KACdA,EAAK,GAETiy8B,EAAK1jpC,GAAQyxM,GAEjBzuV,EAAKu+xC,IAAcmC,EAEZlwyC,KAAKyvyC,cAAcjgyC,EAAM0Z,EACpC,IAqBA6mxC,GAAerwyC,UAAU0kF,OAASwotC,IAA6B,SAASgC,EAAWztyC,EAAO+nB,GAClFtlB,EAAEqhQ,SAAS2piC,KACX1lxC,EAAW/nB,GAEf,IAAIqO,EAAOxP,KAAK8uyC,cAAcF,EAAWztyC,GACzC,OAAOnB,KAAKyvyC,cAAcjgyC,EAAM0Z,EACpC,IAaA6mxC,GAAerwyC,UAAUmzB,OAAS+5wC,IAA6B,SAASgC,EAAWztyC,EAAO+nB,GAClFtlB,EAAEqhQ,SAAS2piC,KACX1lxC,EAAW/nB,GAEf,IAAIqO,EAAOxP,KAAKgvyC,cAAcJ,EAAWztyC,GACzC,OAAOnB,KAAKyvyC,cAAcjgyC,EAAM0Z,EACpC,IA4BA6mxC,GAAerwyC,UAAUsjL,MAAQ4pnC,IAA6B,SAASgC,EAAWlyxC,EAAQwM,GAClFtlB,EAAEqhQ,SAAS2piC,KACX1lxC,EAAWxM,GAEf,IAAIlN,EAAOxP,KAAK2uyC,aAAaC,EAAWlyxC,GACxC,OAAO1c,KAAKyvyC,cAAcjgyC,EAAM0Z,EACpC,IAsBA6mxC,GAAerwyC,UAAUywyC,aAAevD,IAA6B,SAAS/5qB,EAAQrqlB,EAAYtf,GAC9F,GAAKtlB,EAAE0/C,SAASuvkB,KACZA,EAASxod,WAAWwod,IAChBvmlB,MAAMumlB,IAMd,OAAO7ynB,KAAKokF,OAAO,gBAAiBxgF,EAAEylZ,OAAO,CACzC,QAAWwpO,GACZrqlB,GAAatf,GAPR7B,EAAQvlB,MAAM,0EAQ1B,IAaAiuyC,GAAerwyC,UAAU0wyC,cAAgB,SAASlnxC,GAC9C,OAAOlpB,KAAKiM,IAAI,gBAAiB,GAAIid,EACzC,EAYA6mxC,GAAerwyC,UAAU2wyC,YAAc,WACnC,GAAKrwyC,KAAKswyC,mBAAV,CAIA,IAAI9gyC,EAAO,CAAC,QAAWxP,KAAKsvyC,UAAUiB,mBACtC,OAAOvwyC,KAAKyvyC,cAAcjgyC,EAF1B,CAFI6X,EAAQvlB,MAAM,sEAKtB,EAEAiuyC,GAAerwyC,UAAU6E,SAAW,WAChC,OAAOvE,KAAKsvyC,UAAU/qyC,WAAa,SACvC,EAEAwryC,GAAerwyC,UAAU+vyC,cAAgB,SAASjgyC,EAAM0Z,GACpD1Z,EAAa,OAAIxP,KAAK6syC,YAAY,SAClCr9xC,EAAmB,aAAIxP,KAAKsvyC,UAAUiB,kBACtC,IAAIC,EAAYxwyC,KAAKsvyC,UAAUmB,aAAa,cACxCC,EAAU1wyC,KAAKsvyC,UAAUmB,aAAa,YACtCE,EAA4B3wyC,KAAKsvyC,UAAUmB,aAAa,8BACxDD,IACAhhyC,EAAiB,WAAIghyC,GAErBE,IACAlhyC,EAAe,SAAIkhyC,GAEnBC,IACAnhyC,EAAiC,2BAAImhyC,GAGzC,IAAIhB,EAAoB/ryC,EAAEm9xC,YAAYvxxC,GAEtC,OAAKxP,KAAKswyC,mBAYHtwyC,KAAKsvyC,UAAUM,gBAAgB,CAClCrjyC,KAAM,SACNiD,KAAMmgyC,EACNhluC,SAAU3qE,KAAK6syC,YAAY,YAAc,WACzCgD,QAAS7vyC,KAAKsvyC,UAAUQ,iBAAiBc,QAC1C1nxC,IAhBClpB,KAAK6wyC,SAASrhyC,GACT5L,EAAEu3c,YAAYjyb,KACXlpB,KAAK6syC,YAAY,WACjB3jxC,EAAS,CAACzD,QAAS,EAAG3jB,MAAO,OAE7BonB,GAAU,IAGXtlB,EAAE4pF,SAASmitC,EAAmB,KAS7C,EAEAI,GAAerwyC,UAAUmtyC,YAAc,SAASiE,GAC5C,OAAO9wyC,KAAKsvyC,UAAUtI,WAAW8J,EACrC,EAEAf,GAAerwyC,UAAU4wyC,iBAAmB,WACxC,OAAiD,IAA1CtwyC,KAAKsvyC,UAAUyB,OAAOC,eACjC,EAGAjB,GAAerwyC,UAAUmxyC,SAAW,SAASrhyC,GACrCo+xC,MAAcp+xC,EACdxP,KAAKsvyC,UAAuB,YAAE2B,qBAAqBrD,GAAYp+xC,GACxDq+xC,MAAmBr+xC,EAC1BxP,KAAKsvyC,UAAuB,YAAE2B,qBAAqBpD,GAAiBr+xC,GAC7Ds+xC,MAAgBt+xC,EACvBxP,KAAKsvyC,UAAuB,YAAE2B,qBAAqBnD,GAAct+xC,GAC1Du+xC,MAAcv+xC,EACrBxP,KAAKsvyC,UAAuB,YAAE2B,qBAAqBlD,GAAYv+xC,GACxDw+xC,MAAiBx+xC,EACxBxP,KAAKsvyC,UAAuB,YAAE2B,qBAAqBjD,GAAex+xC,GAC3D0+xC,MAAiB1+xC,EACxBxP,KAAKsvyC,UAAuB,YAAE2B,qBAAqB/C,GAAe1+xC,GAC3Dy+xC,MAAgBz+xC,EACvBxP,KAAKsvyC,UAAuB,YAAE2B,qBAAqBhD,GAAcz+xC,GAEjE6X,EAAQvlB,MAAM,8BAA+B0N,EAErD,EAEAugyC,GAAerwyC,UAAUwxyC,iBAAmB,SAAS5luC,EAAQ6luC,EAAejoxC,EAAUkoxC,GAClF,IAAI1kvC,EAAQ1sD,KACRqxyC,EAAcztyC,EAAEylZ,OAAO,CAAC,EAAGrpZ,KAAKsvyC,UAAuB,YAAEgC,WAAWhmuC,IACpEimuC,EAAgBF,EAEfztyC,EAAEu3c,YAAYk21B,KAAgBztyC,EAAEqhQ,SAASosiC,IAAiBztyC,EAAE6/C,cAAc4tvC,KAC3E3kvC,EAAM4ivC,UAAuB,YAAEkC,uBAAuBlmuC,EAAQ+luC,GAC1DD,IACAG,EAAgBH,EAAmBC,IAEvCF,EAAcvxyC,KAAK8sD,EAAO6kvC,GAAe,SAAS9ixC,EAAUjf,GAEvC,IAAbif,GACAi+B,EAAM4ivC,UAAuB,YAAE2B,qBAAqB3luC,EAAQ+luC,GAE3DztyC,EAAEu3c,YAAYjyb,IACfA,EAASuF,EAAUjf,EAE3B,IAER,EAIAugyC,GAAerwyC,UAAU689B,OAAS,SAC9Bk1U,EAAeC,EAAeC,EAAkBC,EAAoBC,EAAiBC,EAAiBC,GAEtG,IAAIrlvC,EAAQ1sD,KACRgyyC,EAAgBhyyC,KAAKsvyC,UAAuB,YAAEgC,WAAWtD,IACzDiE,EAAgBjyyC,KAAKsvyC,UAAuB,YAAEgC,WAAWpD,IAU7D,GARAluyC,KAAKkxyC,iBAAiBtD,GAAY5tyC,KAAKiM,IAAKwlyC,GAC5CzxyC,KAAKkxyC,iBAAiBrD,GAAiB7tyC,KAAK0vyC,SAAUkC,GACtD5xyC,KAAKkxyC,iBAAiBpD,GAAc9tyC,KAAKs3xC,MAAOwa,GAAiB,SAAStzvC,GAAS,OAAO56C,EAAE0P,KAAKkrC,EAAQ,IACzGx+C,KAAKkxyC,iBAAiBnD,GAAY/tyC,KAAKsjmB,UAAWousB,GAClD1xyC,KAAKkxyC,iBAAiBjD,GAAcjuyC,KAAKgjL,MAAO6unC,IAI3CjuyC,EAAEu3c,YAAY621B,IAAkBpuyC,EAAE+N,QAAQqgyC,IAAkBA,EAAc3xyC,OAAQ,CAUnF,IATA,IAAI6xyC,EACAC,EAAkB,SAAS1jxC,EAAUjf,GACpB,IAAbif,GACAi+B,EAAM4ivC,UAAuB,YAAE2B,qBAAqBjD,GAAekE,GAElEtuyC,EAAEu3c,YAAYw21B,IACfA,EAAiBljxC,EAAUjf,EAEnC,EACS5O,EAAIoxyC,EAAc3xyC,OAAS,EAAGO,GAAK,EAAGA,IAC3CsxyC,EAAeF,EAAcpwyC,MACxBgC,EAAE6/C,cAAcyuvC,IACjBxlvC,EAAM03B,OAAO8ttC,EAAcC,GAInCzlvC,EAAM4ivC,UAAuB,YAAEj7wC,MACnC,CAGA,IAAKzwB,EAAEu3c,YAAY821B,IAAkBruyC,EAAE+N,QAAQsgyC,IAAkBA,EAAc5xyC,OAAQ,CAUnF,IATA,IAAI+xyC,EACAC,EAAkB,SAAS5jxC,EAAUjf,GACpB,IAAbif,GACAi+B,EAAM4ivC,UAAuB,YAAE2B,qBAAqB/C,GAAekE,GAElExuyC,EAAEu3c,YAAY421B,IACfA,EAAiBtjxC,EAAUjf,EAEnC,EACSpL,EAAI6tyC,EAAc5xyC,OAAS,EAAG+D,GAAK,EAAGA,IAC3CguyC,EAAeH,EAAcrwyC,MACxBgC,EAAE6/C,cAAc2uvC,IACjB1lvC,EAAM75B,OAAOu/wC,EAAcC,GAGnC3lvC,EAAM4ivC,UAAuB,YAAEj7wC,MACnC,CACJ,EAEA07wC,GAAerwyC,UAAU4uyC,sBAAwB,SAAS9hpC,GACtD,MAAgB,iBAATA,GAAoC,WAATA,GAA8B,eAATA,GAAkC,aAATA,GAAgC,+BAATA,CAC3G,EAGAujpC,GAAerwyC,UAAe,IAAcqwyC,GAAerwyC,UAAUuM,IACrE8jyC,GAAerwyC,UAAoB,SAASqwyC,GAAerwyC,UAAUgwyC,SACrEK,GAAerwyC,UAAiB,MAAYqwyC,GAAerwyC,UAAU43xC,MACrEyY,GAAerwyC,UAAqB,UAAQqwyC,GAAerwyC,UAAU4jmB,UACrEyssB,GAAerwyC,UAAkB,OAAWqwyC,GAAerwyC,UAAU0kF,OACrE2rtC,GAAerwyC,UAAkB,OAAWqwyC,GAAerwyC,UAAUmzB,OACrEk9wC,GAAerwyC,UAAiB,MAAYqwyC,GAAerwyC,UAAUsjL,MACrE+snC,GAAerwyC,UAAwB,aAAKqwyC,GAAerwyC,UAAUywyC,aACrEJ,GAAerwyC,UAAyB,cAAIqwyC,GAAerwyC,UAAU0wyC,cACrEL,GAAerwyC,UAAuB,YAAMqwyC,GAAerwyC,UAAU2wyC,YACrEN,GAAerwyC,UAAoB,SAASqwyC,GAAerwyC,UAAU6E,SAKvD,IA4dV+tyC,GACAC,GA7dcC,GAAyB,QACzBC,GAAyB,SACzBC,GAAyB,SACzBC,GAAyB,QACzBC,GAAyB,SACzBC,GAAyB,QACzBC,GAAyB,QAEzBC,GAAyB,sBACzBC,GAAyB,UACzBC,GAAyB,WACzBC,GAAsB,CACpCV,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,IAOAE,GAAsB,SAASr3+B,GAC/B97T,KAAY,MAAI,CAAC,EACjBA,KAAKozyC,uBAAwB,EAEzBt3+B,EAAyB,iBACzB97T,KAAK0K,KAAO,MAAQoxT,EAAyB,iBAE7C97T,KAAK0K,KAAO,MAAQoxT,EAAc,MAAI,YAG1C,IAAIu3+B,EAAev3+B,EAAoB,YAClB,WAAjBu3+B,GAA8C,iBAAjBA,IAC7BhsxC,EAAQ2nC,SAAS,4BAA8BqkvC,EAAe,4BAC9DA,EAAev3+B,EAAoB,YAAI,UAGtB,iBAAjBu3+B,GAAmCzvyC,EAAEooB,aAAaw3wC,eAClDxjyC,KAAKi0B,QAAUrwB,EAAEooB,aAEjBhsB,KAAKi0B,QAAUrwB,EAAE4yB,OAGrBx2B,KAAK6kJ,OACL7kJ,KAAKszyC,cAAcx3+B,GACnB97T,KAAKuzyC,QAAQz3+B,GACb97T,KAAKq0B,MACT,EAEA8+wC,GAAoBzzyC,UAAU8oC,WAAa,WACvC,IAAI1lC,EAAI,CAAC,EAOT,OALAc,EAAEo+wB,KAAKhixB,KAAY,OAAG,SAASiD,EAAGS,GACzBE,EAAEi3nB,QAAQq4qB,GAAqBxvyC,KAChCZ,EAAEY,GAAKT,EAEf,IACOH,CACX,EAEAqwyC,GAAoBzzyC,UAAUmlJ,KAAO,WACjC,IAAI7kJ,KAAKswW,SAAT,CAEA,IAAIt8S,EAAQh0D,KAAKi0B,QAAQ1H,MAAMvsB,KAAK0K,MAEhCspD,IACAh0D,KAAY,MAAI4D,EAAEylZ,OAAO,CAAC,EAAGr1V,GALJ,CAOjC,EAEAm/uC,GAAoBzzyC,UAAU6zyC,QAAU,SAASz3+B,GAC7C,IACI03+B,EACAC,EAFAC,EAAuB53+B,EAAgB,QAIvC43+B,IACAF,EAAkB,sBAEmB,iBAA3B,IACNA,EAAkBE,GAGtBD,EAAazzyC,KAAKi0B,QAAQ1H,MAAMinxC,GAGhCxzyC,KAAKi0B,QAAQpB,OAAO2gxC,GACpBxzyC,KAAKi0B,QAAQpB,OAAO2gxC,GAAiB,GAEjCC,IACAzzyC,KAAY,MAAI4D,EAAEylZ,OACdrpZ,KAAY,MACZyzyC,EAAgB,IAChBA,EAAmB,UAK1B33+B,EAAoB,aAAwB,aAAnBA,EAAa,OAGvC03+B,EAAkB,MAAQ13+B,EAAc,MAAI,IAAMA,EAAa,MAC/D23+B,EAAazzyC,KAAKi0B,QAAQ1H,MAAMinxC,MAG5BxzyC,KAAKi0B,QAAQpB,OAAO2gxC,GACpBxzyC,KAAKi0B,QAAQpB,OAAO2gxC,GAAiB,GAIrCxzyC,KAAKk3c,cAAcu81B,KAIvBzzyC,KAAKi0B,UAAYrwB,EAAEooB,eACnBynxC,EAAa7vyC,EAAE4yB,OAAOjK,MAAMvsB,KAAK0K,MAEjC9G,EAAE4yB,OAAO3D,OAAO7yB,KAAK0K,MACrB9G,EAAE4yB,OAAO3D,OAAO7yB,KAAK0K,MAAM,GAEvB+oyC,GACAzzyC,KAAKk3c,cAAcu81B,GAG/B,EAEAN,GAAoBzzyC,UAAU20B,KAAO,WAC7Br0B,KAAKswW,UACTtwW,KAAKi0B,QAAQhoB,IACTjM,KAAK0K,KACL9G,EAAEq9xC,WAAWjhyC,KAAY,OACzBA,KAAK2zyC,YACL3zyC,KAAK4zyC,gBACL5zyC,KAAKs2B,OACLt2B,KAAK6zyC,WACL7zyC,KAAK8zyC,cAEb,EAEAX,GAAoBzzyC,UAAUmzB,OAAS,WAEnC7yB,KAAKi0B,QAAQpB,OAAO7yB,KAAK0K,MAAM,EAAO1K,KAAK8zyC,eAC3C9zyC,KAAKi0B,QAAQpB,OAAO7yB,KAAK0K,MAAM,EAAM1K,KAAK8zyC,cAC9C,EAIAX,GAAoBzzyC,UAAUslB,MAAQ,WAClChlB,KAAK6yB,SACL7yB,KAAY,MAAI,CAAC,CACrB,EAOAmzyC,GAAoBzzyC,UAAUw3c,cAAgB,SAASjqa,EAAO+3vC,EAAet8wB,GACzE,QAAI9khB,EAAEqhQ,SAASh4N,UACmB,IAApB,IAAmC+3vC,EAAgB,QAC7DhlyC,KAAK2zyC,iBAAgC,IAAX,EAA0B3zyC,KAAK+zyC,eAAiBrrxB,EAE1E9khB,EAAEo+wB,KAAK/0uB,GAAO,SAASywI,EAAKlxB,GACnBxsJ,KAAY,MAAEL,eAAe6sJ,IAASxsJ,KAAY,MAAEwsJ,KAAUw4oC,IAC/DhlyC,KAAY,MAAEwsJ,GAAQkxB,EAE9B,GAAG19K,MAEHA,KAAKq0B,QAEE,EAGf,EAMA8+wC,GAAoBzzyC,UAAUorG,SAAW,SAAS79D,EAAOy7e,GACrD,QAAI9khB,EAAEqhQ,SAASh4N,KACXjtC,KAAK2zyC,iBAAgC,IAAX,EAA0B3zyC,KAAK+zyC,eAAiBrrxB,EAE1E9khB,EAAEylZ,OAAOrpZ,KAAY,MAAGitC,GAExBjtC,KAAKq0B,QAEE,EAGf,EAEA8+wC,GAAoBzzyC,UAAU2xG,WAAa,SAASm7C,GAC5CA,KAAQxsJ,KAAY,eACbA,KAAY,MAAEwsJ,GACrBxsJ,KAAKq0B,OAEb,EAEA8+wC,GAAoBzzyC,UAAUs0yC,sBAAwB,SAASxluC,GAC3DxuE,KAAK8qG,SAASlnG,EAAE4zC,KAAK+tvC,WAAW/2tC,GACpC,EAGA2kuC,GAAoBzzyC,UAAUswyC,qBAAuB,SAASxhuC,GAE1DxuE,KAAKk3c,cAAc,CACf,kBAAqB1oY,GAAY,UACjC,0BAA6B5qE,EAAE4zC,KAAKquvC,gBAAgBr3tC,IAAa,WAClE,GACP,EAEA2kuC,GAAoBzzyC,UAAUuwyC,kBAAoB,WAC9C,OAAOrsyC,EAAEo9xC,uBAAuB,CAC5B,kBAAqBhhyC,KAAY,MAAqB,kBACtD,0BAA6BA,KAAY,MAA6B,2BAE9E,EAKAmzyC,GAAoBzzyC,UAAUu0yC,WAAa,SAAShnwC,GAOhD,OANArpC,EAAEo+wB,KAAKhixB,KAAY,OAAG,SAAS09K,EAAKlxB,GAC1BA,KAAQv/G,IACVA,EAAMu/G,GAAQkxB,EAEtB,IAEOzwI,CACX,EAEAkmwC,GAAoBzzyC,UAAU4zyC,cAAgB,SAASx3+B,GACnD97T,KAAK+zyC,eAAiB/zyC,KAAK2zyC,YAAc73+B,EAA0B,kBACnE97T,KAAKk0yC,aAAap4+B,EAA4B,qBAC9C97T,KAAKm0yC,kBAAkBr4+B,EAAsB,eAC7C97T,KAAKo0yC,eAAet4+B,EAA0B,mBAC9C97T,KAAKq0yC,oBAAoBv4+B,EAA+B,wBACxD97T,KAAKs0yC,WAAWx4+B,EAAsB,cAC1C,EAEAq3+B,GAAoBzzyC,UAAUw0yC,aAAe,SAAS5j8B,GAClDtwW,KAAKswW,SAAWA,EACZtwW,KAAKswW,SACLtwW,KAAK6yB,SAEL7yB,KAAKq0B,MAEb,EAEA8+wC,GAAoBzzyC,UAAUy0yC,kBAAoB,SAASL,GACnDA,IAAkB9zyC,KAAK8zyC,gBACvB9zyC,KAAK6yB,SACL7yB,KAAK8zyC,cAAgBA,EACrB9zyC,KAAKq0B,OAEb,EAEA8+wC,GAAoBzzyC,UAAU00yC,eAAiB,SAASP,GAChDA,IAAe7zyC,KAAK6zyC,aACpB7zyC,KAAK6zyC,WAAaA,EAClB7zyC,KAAK6yB,SACL7yB,KAAKq0B,OAEb,EAEA8+wC,GAAoBzzyC,UAAU20yC,oBAAsB,SAAST,GACrDA,IAAoB5zyC,KAAK4zyC,kBACzB5zyC,KAAK4zyC,gBAAkBA,EACvB5zyC,KAAK6yB,SACL7yB,KAAKq0B,OAEb,EAEA8+wC,GAAoBzzyC,UAAU60yC,oBAAsB,WAChD,OAAOv0yC,KAAK4zyC,eAChB,EAEAT,GAAoBzzyC,UAAU40yC,WAAa,SAASh+wC,GAC5CA,IAAWt2B,KAAKs2B,SAChBt2B,KAAKs2B,SAASA,EACdt2B,KAAK6yB,SACL7yB,KAAKq0B,OAEb,EAEA8+wC,GAAoBzzyC,UAAUuxyC,qBAAuB,SAASzyvC,EAAOhvC,GACjE,IAAIglyC,EAAQx0yC,KAAKy0yC,eAAej2vC,GAC5Bk2vC,EAASllyC,EAAKgvC,GACdm2vC,EAAQ30yC,KAAK40yC,qBAAqBhH,IAClCiH,EAAa70yC,KAAK40yC,qBAAqB/G,IACvCiH,EAAU90yC,KAAK40yC,qBAAqB9G,IACpCiH,EAAQ/0yC,KAAK40yC,qBAAqB7G,IAClCiH,EAAUh1yC,KAAK40yC,qBAAqB3G,IACpCgH,EAAWj1yC,KAAK40yC,qBAAqB1G,GAAe,IACpDgH,EAAWl1yC,KAAK40yC,qBAAqB5G,GAAe,IAEpDwG,IAAUhC,IAEV5uyC,EAAEylZ,OAAOsr5B,EAAOD,GAGhB10yC,KAAKwxyC,uBAAuBzD,GAAY2G,GAGxC10yC,KAAKwxyC,uBAAuBvD,GAAcyG,GAC1C10yC,KAAKwxyC,uBAAuB1D,GAAc4G,IACnCF,IAAU/B,IAEjB7uyC,EAAEo+wB,KAAK0yhB,GAAQ,SAASzxyC,EAAGS,GACjBA,KAAKmxyC,IACPA,EAAWnxyC,GAAKT,EAExB,IACAjD,KAAKwxyC,uBAAuB1D,GAAc4G,IACnCF,IAAU9B,GACjB9uyC,EAAEo+wB,KAAK0yhB,GAAQ,SAASlopC,GAGpB5oJ,EAAEo+wB,KAAK,CAAC2yhB,EAAOE,EAAYE,EAAOC,IAAU,SAASG,GAC7C3opC,KAAQ2opC,UACDA,EAAa3opC,EAE5B,IACA5oJ,EAAEo+wB,KAAKkzhB,GAAU,SAASE,GAClB5opC,KAAQ4opC,UACDA,EAAW5opC,EAE1B,IAEAsopC,EAAQtopC,IAAQ,CAEpB,IACOgopC,IAAU7B,IACjB/uyC,EAAEo+wB,KAAK0yhB,GAAQ,SAASzxyC,EAAGS,GAGnBA,KAAKixyC,EACLA,EAAMjxyC,IAAMT,GAINS,KAAKqxyC,IACPA,EAAMrxyC,GAAK,GAEfqxyC,EAAMrxyC,IAAMT,EAEpB,GAAGjD,MACHA,KAAKwxyC,uBAAuB1D,GAAc4G,IACnCF,IAAU1B,IACjBlvyC,EAAEo+wB,KAAK0yhB,GAAQ,SAASzxyC,EAAGS,GACnBE,EAAE+N,QAAQ1O,KACJS,KAAKsxyC,IACPA,EAAQtxyC,GAAK,IAGjBsxyC,EAAQtxyC,GAAKsxyC,EAAQtxyC,GAAG1B,OAAOiB,GAEvC,IACAjD,KAAKwxyC,uBAAuB1D,GAAc4G,IACnCF,IAAU3B,IACjBoC,EAASpzyC,KAAK6yyC,GACd10yC,KAAKwxyC,uBAAuBxD,GAAe0G,IACpCF,IAAU5B,KACjBsC,EAASrzyC,KAAK6yyC,GACd10yC,KAAKwxyC,uBAAuB1D,GAAc4G,IAG9CrtxC,EAAQgD,IAAI,uDACZhD,EAAQgD,IAAI7a,GAEZxP,KAAKq0B,MACT,EAEA8+wC,GAAoBzzyC,UAAU8xyC,uBAAyB,SAAShzvC,EAAOhvC,GACnE,IAAItJ,EAAIlG,KAAKsxyC,WAAW9yvC,GACnB56C,EAAEu3c,YAAYj1c,KACftC,EAAEo+wB,KAAKxywB,GAAM,SAASvM,EAAGS,GACjB86C,IAAUwvvC,IAAiBxvvC,IAAU0vvC,GAIrCtqyC,EAAEo+wB,KAAK97wB,GAAG,SAASmvyC,GACXA,EAAc3xyC,KAAOT,UACdoyyC,EAAc3xyC,EAE7B,WAEOwC,EAAExC,EAEjB,GAAG1D,MAEHA,KAAKq0B,OAEb,EAEA8+wC,GAAoBzzyC,UAAU+0yC,eAAiB,SAASj2vC,GACpD,OAAIA,IAAUovvC,GACH4E,GACAh0vC,IAAUqvvC,GACV4E,GACAj0vC,IAAUsvvC,GACV4E,GACAl0vC,IAAUuvvC,GACV4E,GACAn0vC,IAAUwvvC,GACV4E,GACAp0vC,IAAU0vvC,GACV2E,GACAr0vC,IAAUyvvC,GACV6E,QAEPzrxC,EAAQvlB,MAAM,iBAAkB08C,EAExC,EAEA20vC,GAAoBzzyC,UAAU4xyC,WAAa,SAAS9yvC,GAChD,OAAOx+C,KAAY,MAAEA,KAAKy0yC,eAAej2vC,GAC7C,EACA20vC,GAAoBzzyC,UAAUk1yC,qBAAuB,SAASp2vC,EAAO82vC,GACjE,IAAIzwxC,EAAM7kB,KAAKy0yC,eAAej2vC,GAG9B,OAFA82vC,EAAc1xyC,EAAEu3c,YAAYm61B,GAAe,CAAC,EAAIA,EAEzCt1yC,KAAY,MAAE6kB,KAAS7kB,KAAY,MAAE6kB,GAAOywxC,EACvD,EAEAnC,GAAoBzzyC,UAAU61yC,gBAAkB,SAAS1O,EAAYlhvC,GACjE,IAAI6vvC,EAASx1yC,KAAY,MAAEizyC,KAAqB,CAAC,EACjDuC,EAAO3O,GAAclhvC,EACrB3lD,KAAY,MAAEizyC,IAAoBuC,EAClCx1yC,KAAKq0B,MACT,EAEA8+wC,GAAoBzzyC,UAAU+1yC,mBAAqB,SAAS5O,GACxD,IACIlhvC,GADS3lD,KAAY,MAAEizyC,KAAqB,CAAC,GAC1BpM,GAKvB,OAJKjjyC,EAAEu3c,YAAYx1Z,YACR3lD,KAAY,MAAEizyC,IAAkBpM,GACvC7myC,KAAKq0B,QAEFsxB,CACX,EA+BA,IAGI+vvC,GAAgB,SAASzxyC,GAAI,OAAOA,CAAE,EACtC0xyC,GAAY,WAAY,EAEVC,GAAwB,WACxBC,GAAwB,SAExBC,GAAwB,WAQtCC,GAAWlW,EAASx3wC,gBAAkB,oBAAqB,IAAIA,eAK/D2txC,IAAoBD,KAA2C,IAA/Bz8wC,EAAU94B,QAAQ,UAAsD,IAAlC84B,EAAU94B,QAAQ,WAGxFoqD,GAAa,KACbvxB,EAAsB,aACtBuxB,GAAa,WAET,OAAOvxB,EAAsB,WAAE94B,MAAM84B,EAAWj5B,UACpD,GAMJ,IAAI61yC,GAAiB,CACjB,SAAqC,8BACrC,WAAqC,OACrC,cAAqC,MACrC,mBAAqCJ,GACrC,SAAqC,uBACrC,IAAqC,wBACrC,mBAAqC,EACrC,wBAAqC,EACrC,eAAqCF,GACrC,YAAqC,SACrC,iBAAqC,GACrC,cAAqC,GACrC,YAAqC,GACrC,OAAqCA,GACrC,iBAAqC,EACrC,gBAAqC,EACrC,4BAAqC,EACrC,cAAqC,EACrC,eAAqC,EACrC,MAAqC,EACrC,SAAqC,EACrC,KAAqC,EACrC,OAAqC,EACrC,oBAAqC,IACrC,kBAAqC,IACrC,SAAqC,EACrC,qBAAqC,EACrC,gBAAqC,EACrC,eAAqC,EACrC,IAAqC,EACrC,6BAAqC,EACrC,gCAAqC,EACrC,kCAAqC,eACrC,+BAAqC,KACrC,mBAAqC,GACrC,YAAqC,CAAC,EACtC,YAAqC,EACrC,gBAAqC,EACrC,WAAqC,GACrC,wBAAqC,IACrC,yBAAqC,IACrC,iBAAqC,EACrC,MAAqC,CAAC,GAGtCO,IAAa,EAMbC,GAAc,WAAY,EAW1BC,GAAe,SAAS/4nC,EAAOy+I,EAAQpxT,GACvC,IAAIwgB,EACApb,EAAUpF,IAASkryC,GAAyBrD,GAAkBA,GAAgB7nyC,GAElF,GAAIoF,GAvGW,IAuGDwiyC,GACVpnxC,EAAWpb,MACR,CACH,GAAIA,IAAWlM,EAAE+N,QAAQ7B,GAErB,YADAuX,EAAQvlB,MAAM,gCAAkC4I,GAGpDwgB,EAAW,IAAIirxC,EACnB,CASA,GAPAjrxC,EAASmrxC,eAAiB,CAAC,EAE3BnrxC,EAASun8B,MAAMp1yB,EAAOy+I,EAAQpxT,GAE9BwgB,EAAiB,OAAI,IAAI6kxC,GACzB7kxC,EAAiB,OAAEun8B,MAAMvn8B,IAEpBA,EAAS87wC,WAAW,8BAA+B,CAKpD,IAAIsP,EAAa1yyC,EAAE4zC,KAAKutvC,eAAe,MACnCwR,EAAqB,CAAC,EACtBC,GAAU,EACd5yyC,EAAEo+wB,KAAKs0hB,GAAY,SAASG,EAAWC,GACnCH,EAAmB,WAAaG,GAAWD,EACvCA,IACAD,GAAU,EAElB,IACIA,GACAtrxC,EAAiB,OAAEwkxC,SAAS6G,EAEpC,CAeA,OAXA79D,EAAOlxxB,MAAQkxxB,EAAOlxxB,OAASt8b,EAAS87wC,WAAW,UAI9CpjyC,EAAEu3c,YAAYrrc,IAAWlM,EAAE+N,QAAQ7B,KAGpCob,EAASyrxC,eAAe/2yC,KAAKsrB,EAAiB,OAAGpb,EAAe,QAChEob,EAASyrxC,eAAe7myC,IAGrBob,CACX,EAoBAirxC,GAAYz2yC,UAAUgxD,KAAO,SAAU2sH,EAAOy+I,EAAQpxT,GAClD,GAAI9G,EAAEu3c,YAAYzwc,GACd1K,KAAK42yC,aAAa,iEADtB,CAIA,GAAIlsyC,IAASkryC,GAAb,CAKA,IAAI1qxC,EAAWkrxC,GAAa/4nC,EAAOy+I,EAAQpxT,GAI3C,OAHA6nyC,GAAgB7nyC,GAAQwgB,EACxBA,EAAS2rxC,UAEF3rxC,CANP,CAFIlrB,KAAK42yC,aAAa,+FAFtB,CAWJ,EASAT,GAAYz2yC,UAAU+y9B,MAAQ,SAASp1yB,EAAOy+I,EAAQpxT,GAClDoxT,EAASA,GAAU,CAAC,EAEpB97T,KAAe,UAAI,EACnBA,KAAa,OAAI,CAAC,EAElB,IAAI82yC,EAAoB,CAAC,EA6BzB,GA1BM,uBAAwBh7+B,IACXA,EAAiB,UAAKm6+B,GAAyB,UACjDxvyC,MAAM,qBACfqwyC,EAAsC,mBAzMR,QA6MtC92yC,KAAK+2yC,WAAWnzyC,EAAEylZ,OAAO,CAAC,EAAG4s5B,GAAgBa,EAAmBh7+B,EAAQ,CACpE,KAAQpxT,EACR,MAAS2yK,EACT,aAAiB3yK,IAASkryC,GAAyBlryC,EAAOkryC,GAAwB,IAAMlryC,GAAQ,WAGpG1K,KAAW,KAAI21yC,GAEf31yC,KAAKg3yC,mBAAqB,GAC1Bh3yC,KAAKi3yC,gBAAkB,GACvBj3yC,KAAKk3yC,kBAAoB,GACzBl3yC,KAAK+wyC,OAAS,CACV,oBAAsB,EACtB,iBAAmB,GAIvB/wyC,KAAK8vyC,iBAAmB,CAAC,EACzB9vyC,KAAKm3yC,gBAAkBn3yC,KAAKgnyC,WAAW,kBACnChnyC,KAAKm3yC,gBACL,GAAKvzyC,EAAEooB,aAAaw3wC,cAAa,IAAUuS,IAKvC,GADA/1yC,KAAKo3yC,gBACDxsvC,IAAci1uC,EAASlzwC,iBAAkB,CAYzC,IAAI0qxC,EAAkBzzyC,EAAEP,MAAK,WACpBrD,KAAK8vyC,iBAAiBj5sC,OAAOtzE,SAC9BvjB,KAAK8vyC,iBAAiBj5sC,OAAOtuB,MAAM,CAAC4iuC,WAAW,GAEvD,GAAGnryC,MACH6/xC,EAASlzwC,iBAAiB,YAAY,SAASmy2B,GACvCA,EAAc,WACdu4a,GAER,IACAxX,EAASlzwC,iBAAiB,oBAAoB,WACJ,WAAlCyzwC,EAA4B,iBAC5BiX,GAER,GACJ,OA/BAr3yC,KAAKm3yC,iBAAkB,EACvB9vxC,EAAQgD,IAAI,6EAkCpBrqB,KAAkB,YAAIA,KAAa,OAAI,IAAImzyC,GAAoBnzyC,KAAa,QAC5EA,KAAKs3yC,uBAAyB,CAAC,EAC/Bt3yC,KAAKu3yC,aAEL,IAAIC,EAAO5zyC,EAAEo+xC,OACRhiyC,KAAKuwyC,mBAINvwyC,KAAKk3c,cAAc,CACf,YAAe4+1B,GAAmB0B,EAClC,WAAcA,GACf,IAGHx3yC,KAAKgnyC,WAAW,mBAChBhnyC,KAAKy3yC,gBAEb,EAIAtB,GAAYz2yC,UAAUm3yC,QAAU,WAC5B72yC,KAAKgnyC,WAAW,SAAhBhnyC,CAA0BA,MAC1BA,KAAK03yC,yBACT,EAGAvB,GAAYz2yC,UAAUg4yC,wBAA0B,WAC5C13yC,KAAkB,YAAEg0yC,sBAAsB5T,EAAW5xtC,UACjDxuE,KAAKgnyC,WAAW,iBAChBhnyC,KAAK8qG,SAASlnG,EAAE4zC,KAAKutvC,iBAAkB,CAAC3/oC,YAAY,IAEpDplJ,KAAKgnyC,WAAW,kBAChBhnyC,KAAkB,YAAEgwyC,qBAAqB5P,EAAW5xtC,SAE5D,EAEA2nuC,GAAYz2yC,UAAUi4yC,YAAc,WAChC/zyC,EAAEo+wB,KAAKhixB,KAAKg3yC,oBAAoB,SAAS51vC,GACrCphD,KAAK43yC,WAAWr3yC,MAAMP,KAAMohD,EAChC,GAAGphD,MAEEA,KAAK63yC,0BACNj0yC,EAAEo+wB,KAAKhixB,KAAKi3yC,iBAAiB,SAAS71vC,GAClCphD,KAAKyvyC,cAAclvyC,MAAMP,KAAMohD,EACnC,GAAGphD,aAGAA,KAAKg3yC,0BACLh3yC,KAAKi3yC,eAChB,EAEAd,GAAYz2yC,UAAUk4yC,WAAa,SAASE,EAAUzgwC,GAClD,GAAIr3C,KAAKgnyC,WAAW,OAEhB,OADAhnyC,KAAK42yC,aAAa,0DACX,EAGX,IAAKV,GAED,OADAl2yC,KAAKg3yC,mBAAmBn1yC,KAAK,CAACi2yC,EAAUzgwC,KACjC,EAGX,IAAIvrC,GAAK,IAAIgsyC,GAAWpnvC,KAAK1wD,MAC7B,OAAO8L,EAAG8qc,MAAMr2c,MAAMuL,EAAIurC,EAC9B,EAWA8+vC,GAAYz2yC,UAAUq4yC,kBAAoB,SAAS7uxC,EAAU1Z,GACzD,GAAI5L,EAAEu3c,YAAYjyb,GACd,OAAO,KAGX,GAAI6sxC,GAIA,OAHwB,SAAStnxC,GAC7BvF,EAASuF,EAAUjf,EACvB,EAMA,IAAIwoyC,EAAMh4yC,KAAW,KACjBi4yC,EAAgB,GAAKp1yC,KAAKyK,MAAsB,IAAhBzK,KAAKwF,UACrC6vyC,EAAkBl4yC,KAAKgnyC,WAAW,eAAiB,IAAMiR,EAAgB,IAK7E,OAJAD,EAAIC,GAAiB,SAASxpxC,UACnBupxC,EAAIC,GACX/uxC,EAASuF,EAAUjf,EACvB,EACO0oyC,CAEf,EAEA/B,GAAYz2yC,UAAU+vyC,cAAgB,SAASv/wC,EAAK1gB,EAAM2Z,EAASD,GAC/D,IAAI0/wC,GAAY,EAEhB,GAAIoN,GAEA,OADAh2yC,KAAKi3yC,gBAAgBp1yC,KAAKzB,WACnBwoyC,EAGX,IAAIj4iC,EAAkB,CAClBlgO,OAAQzwB,KAAKgnyC,WAAW,cACxB4E,UAAW5ryC,KAAKgnyC,WAAW,iBAC3ByE,QAASzryC,KAAKgnyC,WAAW,YAEzBmR,EAAY,KAEXjvxC,IAAatlB,EAAEohQ,WAAW77O,IAA+B,iBAAZA,IAC9CD,EAAWC,EACXA,EAAU,MAEdA,EAAUvlB,EAAEylZ,OAAO14J,EAAiBxnO,GAAW,CAAC,GAC3C4sxC,KACD5sxC,EAAQsH,OAAS,OAErB,IAAI2nxC,EAA8B,SAAnBjvxC,EAAQsH,OACnB4nxC,EAAiBztvC,IAAcwtvC,GAAgD,eAApCjvxC,EAAQyixC,UAAUr8xC,cAG7D+oyC,EAAenvxC,EAAQsixC,QACvBj8xC,EAAc,UAAK8oyC,GAAe,GAElCt4yC,KAAKgnyC,WAAW,UAAWx3xC,EAAW,KAAI,GAC1C8oyC,IAAgB9oyC,EAAc,QAAI,GAClCxP,KAAKgnyC,WAAW,SAAUx3xC,EAAU,IAAI,GACvCumyC,KACG7sxC,EACA1Z,EAAe,SAAI0Z,GACZovxC,GAAgBt4yC,KAAKgnyC,WAAW,WAKvCx3xC,EAAe,SAAI,mBAI3BA,EAAS,GAAIxP,KAAKgnyC,WAAW,MAAM,EAAE,EACrCx3xC,EAAQ,GAAI,IAAIgc,MAAOic,UAAUljC,WAE7B6zyC,IACAD,EAAY,QAAU7oxC,mBAAmB9f,EAAW,aAC7CA,EAAW,MAGtB0gB,GAAO,IAAMtsB,EAAEy+xC,eAAe7yxC,GAE9B,IAAI+oyC,EAAMv4yC,KACV,GAAI,QAASwP,EAAM,CACf,IAAI6mY,EAAM+p5B,EAAW92xC,cAAc,OACnC+sY,EAAI7hY,IAAM0b,EACVkwwC,EAAWrvwC,KAAKxc,YAAY8hY,EAChC,MAAO,GAAIgi6B,EAAgB,CACvB,IACIzP,EAAYh+uC,GAAW16B,EAAKioxC,EAChC,CAAE,MAAOh5yC,GACLo5yC,EAAI3B,aAAaz3yC,GACjBypyC,GAAY,CAChB,CACA,IACQ1/wC,GACAA,EAAS0/wC,EAAY,EAAI,EAEjC,CAAE,MAAOzpyC,GACLo5yC,EAAI3B,aAAaz3yC,EACrB,CACJ,MAAO,GAAI42yC,GACP,IACI,IAAIn91B,EAAM,IAAIvwb,eACduwb,EAAIlkc,KAAKyU,EAAQsH,OAAQP,GAAK,GAE9B,IAAIM,EAAUxwB,KAAKgnyC,WAAW,eAQ9B,GAPIoR,IACA5nxC,EAAQ,gBAAkB,qCAE9B5sB,EAAEo+wB,KAAKxxvB,GAAS,SAASgoxC,EAAa73zB,GAClC/nC,EAAI9nb,iBAAiB6vd,EAAY63zB,EACrC,IAEIrvxC,EAAQwixC,iBAAqC,IAAhB/y1B,EAAIxnb,QAAyB,CAC1Dwnb,EAAIxnb,QAAUjI,EAAQwixC,WACtB,IAAI5yrC,GAAa,IAAIvtF,MAAOic,SAChC,CAIAmxa,EAAIhob,iBAAkB,EACtBgob,EAAI6mM,mBAAqB,WAsBb,IAAI39oB,EArBZ,GAAuB,IAAnB82c,EAAI5na,WACJ,GAAmB,MAAf4na,EAAInzb,QACJ,GAAIyD,EACA,GAAIovxC,EAAc,CACd,IAAI7pxC,EACJ,IACIA,EAAW7qB,EAAE09xC,WAAW1o1B,EAAIrwb,aAChC,CAAE,MAAOppB,GAEL,GADAo5yC,EAAI3B,aAAaz3yC,IACbgqB,EAAQuixC,mBAGR,OAFAj9wC,EAAWmqb,EAAIrwb,YAIvB,CACAW,EAASuF,EACb,MACIvF,EAASic,OAAOyza,EAAIrwb,oBAUxBzmB,EAJA82c,EAAIxnb,UACHwnb,EAAInzb,SACL,IAAI+F,MAAOic,UAAYsxE,GAAc6/V,EAAIxnb,QAEjC,UAEA,oBAAsBwnb,EAAInzb,OAAS,IAAMmzb,EAAI3ob,WAEzDsoxC,EAAI3B,aAAa90yC,GACbonB,GAEIA,EADAovxC,EACS,CAAC7yxC,OAAQ,EAAG3jB,MAAOA,EAAOspyC,QAASxy1B,GAEnC,EAK7B,EACAA,EAAItwb,KAAK6vxC,EACb,CAAE,MAAOh5yC,GACLo5yC,EAAI3B,aAAaz3yC,GACjBypyC,GAAY,CAChB,KACG,CACH,IAAI3vrC,EAASmnrC,EAAW92xC,cAAc,UACtC2vG,EAAO1sG,KAAO,kBACd0sG,EAAOz3E,OAAQ,EACfy3E,EAAOk5qC,OAAQ,EACfl5qC,EAAOzkG,IAAM0b,EACb,IAAIpvB,EAAIs/xC,EAAW3+vC,qBAAqB,UAAU,GAClD3gC,EAAE4gC,WAAWC,aAAas3E,EAAQn4G,EACtC,CAEA,OAAO8nyC,CACX,EAcAuN,GAAYz2yC,UAAUi3yC,eAAiB,SAASz8vC,GAC5C,IAAIu+vC,EAASC,EAAc,GAAIC,EAAc,GAAIC,EAAiB,GAClEh1yC,EAAEo+wB,KAAK9nuB,GAAO,SAASkH,GACfA,IACAq3vC,EAAUr3vC,EAAK,GACXx9C,EAAE+N,QAAQ8myC,GACVG,EAAe/2yC,KAAKu/C,GACI,mBAAX,EACbA,EAAKxhD,KAAKI,MACH4D,EAAE+N,QAAQyvC,IAAqB,UAAZq3vC,EAC1BC,EAAY72yC,KAAKu/C,GACVx9C,EAAE+N,QAAQyvC,KAAuC,IAA9Bq3vC,EAAQj4yC,QAAQ,UAA6C,mBAAnBR,KAAKy4yC,GACzEG,EAAe/2yC,KAAKu/C,GAEpBu3vC,EAAY92yC,KAAKu/C,GAG7B,GAAGphD,MAEH,IAAI+hZ,EAAU,SAAS825B,EAAO1rwC,GAC1BvpC,EAAEo+wB,KAAK62hB,GAAO,SAASz3vC,GACnB,GAAIx9C,EAAE+N,QAAQyvC,EAAK,IAAK,CAEpB,IAAIkotC,EAASn8tC,EACbvpC,EAAEo+wB,KAAK5guB,GAAM,SAASxhD,GAClB0pwC,EAASA,EAAO1pwC,EAAK,IAAIW,MAAM+owC,EAAQ1pwC,EAAKmC,MAAM,GACtD,GACJ,MACI/B,KAAKohD,EAAK,IAAI7gD,MAAMP,KAAMohD,EAAKr/C,MAAM,GAE7C,GAAGorC,EACP,EAEA40W,EAAQ225B,EAAa14yC,MACrB+hZ,EAAQ425B,EAAa34yC,MACrB+hZ,EAAQ625B,EAAgB54yC,KAC5B,EAIAm2yC,GAAYz2yC,UAAUo5yC,yBAA2B,WAC7C,QAAS94yC,KAAK8vyC,iBAAiBj5sC,MACnC,EAEAs/sC,GAAYz2yC,UAAU03yC,cAAgB,WAClC,IAAI/5nC,EAAQr9K,KAAKgnyC,WAAW,SAC5B,IAAKhnyC,KAAK84yC,2BAA4B,CAClC,IAAIC,EAAcn1yC,EAAEP,MAAK,SAAS8piC,GAC9B,OAAO,IAAI28P,GACP,SAAWzsnC,EAAQ8v3B,EAAM6rQ,aACzB,CACIjP,UAAW/pyC,KAAa,OACxBgqyC,gBAAiBpmyC,EAAEP,MAAK,SAASmM,EAAM2Z,EAASu4C,GAC5C1hE,KAAKyvyC,cACDzvyC,KAAKgnyC,WAAW,YAAc75P,EAAMxi+B,SACpC3qE,KAAKi5yC,yBAAyBzpyC,GAC9B2Z,EACAnpB,KAAK+3yC,kBAAkBr2uC,EAAIlyD,GAEnC,GAAGxP,MACHiqyC,eAAgBrmyC,EAAEP,MAAK,SAAS+9C,GAC5B,OAAOphD,KAAKk5yC,UAAU,eAAiB/rQ,EAAM5giC,KAAM60C,EACvD,GAAGphD,MACHwoyC,cAAexoyC,KAAKgnyC,WAAW,kBAC/BmD,oBAAqBvmyC,EAAEP,KAAKrD,KAAKm5yC,mBAAoBn5yC,OAGjE,GAAGA,MACHA,KAAK8vyC,iBAAmB,CACpBj5sC,OAAQkitC,EAAY,CAACxsyC,KAAM,SAAUo+D,SAAU,UAAWquuC,aAAc,QACxEpI,OAAQmI,EAAY,CAACxsyC,KAAM,SAAUo+D,SAAU,WAAYquuC,aAAc,QACzEthlB,OAAQqhlB,EAAY,CAACxsyC,KAAM,SAAUo+D,SAAU,WAAYquuC,aAAc,QAEjF,CACIh5yC,KAAKgnyC,WAAW,oBAChBhnyC,KAAKo5yC,qBAEb,EAEAjD,GAAYz2yC,UAAU05yC,oBAAsB,WACpCp5yC,KAAK84yC,6BACL94yC,KAAKm3yC,iBAAkB,EACvBvzyC,EAAEo+wB,KAAKhixB,KAAK8vyC,kBAAkB,SAASD,GACnCA,EAAQrpwC,OACZ,IAER,EAEA2vwC,GAAYz2yC,UAAUy5yC,mBAAqB,WACvCn5yC,KAAKm3yC,iBAAkB,EACvBvzyC,EAAEo+wB,KAAKhixB,KAAK8vyC,kBAAkB,SAASD,GACnCA,EAAQ9/vC,OACR8/vC,EAAQ7qxC,OACZ,GACJ,EAcAmxxC,GAAYz2yC,UAAUmC,KAAO,SAASu/C,GAClCphD,KAAK22yC,eAAe,CAACv1vC,GACzB,EAaA+0vC,GAAYz2yC,UAAUoyU,QAAU,SAASj7O,QACd,IAAb,EACN72F,KAAK+wyC,OAAOsI,oBAAqB,EAEjCr5yC,KAAKk3yC,kBAAoBl3yC,KAAKk3yC,kBAAkBl1yC,OAAO60F,EAE/D,EAEAs/sC,GAAYz2yC,UAAUu5yC,yBAA2B,SAASzpyC,GACtD,IAAI8pyC,EAAe11yC,EAAEq9xC,WAAWzxxC,GAIhC,OAHIxP,KAAKgnyC,WAAW,wBAA0B6O,KAC1CyD,EAAe11yC,EAAE69xC,aAAa6X,IAE3B,CAAC,KAAQA,EACpB,EAGAnD,GAAYz2yC,UAAUkwyC,gBAAkB,SAASzmxC,EAASD,GACtD,IAAIqwxC,EAAiB31yC,EAAE4pF,SAASrkE,EAAQ3Z,KAAM,KAC1Cm7D,EAAWxhD,EAAQwhD,SACnBkluC,EAAU1mxC,EAAQ0mxC,QAClB2J,EAA0BrwxC,EAAQqwxC,wBAClCC,EAAuBtwxC,EAAQswxC,sBAAwB,CAAC,EAC5DvwxC,EAAWA,GAAYysxC,GAEvB,IAAI+D,GAAgC,EAChCC,EAA2B/1yC,EAAEP,MAAK,WAIlC,OAHKo2yC,EAAqBG,aACtBL,EAAiBv5yC,KAAKk5yC,UAAU,eAAiB/vxC,EAAQ5c,KAAMgtyC,IAE/DA,GACAlyxC,EAAQgD,IAAI,qBACZhD,EAAQgD,IAAIkvxC,GACLv5yC,KAAKyvyC,cACR9kuC,EACA3qE,KAAKi5yC,yBAAyBM,GAC9BE,EACAz5yC,KAAK+3yC,kBAAkB7uxC,EAAUqwxC,KAG9B,IAEf,GAAGv5yC,MAcH,OAZIA,KAAKm3yC,kBAAoBqC,EACzB3J,EAAQ7mvC,QAAQuwvC,GAAgB,SAAS3Q,GACjCA,EACA1/wC,EAAS,EAAGqwxC,GAEZI,GAER,IAEAD,EAAgCC,IAG7BD,GAAiCH,CAC5C,EAyBApD,GAAYz2yC,UAAUk3c,MAAQ811B,IAA0B,SAAS7F,EAAYr+vC,EAAYrf,EAASD,GACzFA,GAA+B,mBAAZC,IACpBD,EAAWC,EACXA,EAAU,MAGd,IAAIyixC,GADJzixC,EAAUA,GAAW,CAAC,GACa,UAC/ByixC,IACAzixC,EAAQyixC,UAAYA,GAExB,IAAI4N,EAA0BrwxC,EAA0B,iBAKxD,GAJwB,mBAAbD,IACPA,EAAWysxC,IAGX/xyC,EAAEu3c,YAAY0r1B,GACd7myC,KAAK42yC,aAAa,gDADtB,CAKA,IAAI52yC,KAAK65yC,mBAAmBhT,GAA5B,EAMAr+vC,EAAaA,GAAc,CAAC,GACV,MAAIxoC,KAAKgnyC,WAAW,SAGtC,IAAI8S,EAAkB95yC,KAAkB,YAAEy1yC,mBAAmB5O,GAC7D,IAAKjjyC,EAAEu3c,YAAY2+1B,GAAkB,CACjC,IAAIC,GAAiB,IAAIvuxC,MAAOic,UAAYqywC,EAC5CtxwC,EAAsB,UAAI6hI,YAAY0voC,EAAiB,KAAM32vC,QAAQ,GACzE,CAEApjD,KAAK03yC,0BAEL,IAAIsC,EAAuBh6yC,KAAKgnyC,WAAW,mBACrCpjyC,EAAE4zC,KAAK6tvC,kBACP,CAAC,EAOP78vC,EAAa5kC,EAAEylZ,OACX,CAAC,EACDzlZ,EAAE4zC,KAAKhP,aACPwxwC,EACAh6yC,KAAkB,YAAEwoC,aACpBxoC,KAAKs3yC,uBACL9uwC,GAGJ,IAAIyxwC,EAAqBj6yC,KAAKgnyC,WAAW,sBACrCpjyC,EAAE+N,QAAQsoyC,GACVr2yC,EAAEo+wB,KAAKi4hB,GAAoB,SAASC,UACzB1xwC,EAAW0xwC,EACtB,IAEAl6yC,KAAK42yC,aAAa,gDAAkDqD,GAGxE,IAAIzqyC,EAAO,CACP,MAASq3xC,EACT,WAAcr+vC,GAWlB,OATUxoC,KAAK4vyC,gBAAgB,CAC3BrjyC,KAAM,SACNiD,KAAMA,EACNm7D,SAAU3qE,KAAKgnyC,WAAW,YAAc,UACxC6I,QAAS7vyC,KAAK8vyC,iBAAiBj5sC,OAC/B2itC,wBAAyBA,EACzBC,qBAAsBtwxC,GACvBD,EArDH,CAFIA,EAAS,EAHb,CA6DJ,IAgBAitxC,GAAYz2yC,UAAUy6yC,UAAYzN,IAA0B,SAAS0C,EAAWgL,EAAWlxxC,GAClFtlB,EAAE+N,QAAQyoyC,KACXA,EAAY,CAACA,IAEjB,IAAI5tpC,EAAO,CAAC,EAGZ,OAFAA,EAAK4ipC,GAAagL,EAClBp6yC,KAAK8qG,SAAS0hD,GACPxsJ,KAAa,OAAEiM,IAAImjyC,EAAWgL,EAAWlxxC,EACpD,IAaAitxC,GAAYz2yC,UAAU26yC,UAAY3N,IAA0B,SAAS0C,EAAWC,EAAUnmxC,GACtF,IAAIoxxC,EAAat6yC,KAAKywyC,aAAarB,GACnC,QAAmBrhwC,IAAfuswC,EAA0B,CAC1B,IAAI9tpC,EAAO,CAAC,EACZA,EAAK4ipC,GAAa,CAACC,GACnBrvyC,KAAK8qG,SAAS0hD,EAClB,MAC0C,IAAlC8tpC,EAAW95yC,QAAQ6uyC,KACnBiL,EAAWz4yC,KAAKwtyC,GAChBrvyC,KAAK8qG,SAAS0hD,IAGtB,OAAOxsJ,KAAa,OAAEgjL,MAAMosnC,EAAWC,EAAUnmxC,EACrD,IAaAitxC,GAAYz2yC,UAAU66yC,aAAe7N,IAA0B,SAAS0C,EAAWC,EAAUnmxC,GACzF,IAAIsxxC,EAAYx6yC,KAAKywyC,aAAarB,GAElC,QAAkBrhwC,IAAdyswC,EAAyB,CACzB,IAAI1/7B,EAAM0/7B,EAAUh6yC,QAAQ6uyC,GACxBv07B,GAAO,IACP0/7B,EAAUv3xC,OAAO63V,EAAK,GACtB96W,KAAK8qG,SAAS,CAACsksC,UAAWoL,KAEL,IAArBA,EAAUn6yC,QACVL,KAAKqxG,WAAW+9rC,EAExB,CACA,OAAOpvyC,KAAa,OAAE6yB,OAAOu8wC,EAAWC,EAAUnmxC,EACtD,IAcAitxC,GAAYz2yC,UAAU+6yC,kBAAoB/N,IAA0B,SAAS7F,EAAYr+vC,EAAYkvrB,EAAQxusB,GACzG,IAAIwxxC,EAAiB92yC,EAAEylZ,OAAO,CAAC,EAAG7gX,GAAc,CAAC,GAMjD,OALA5kC,EAAEo+wB,KAAKtqD,GAAQ,SAASz0tB,EAAGS,GACnBT,UACAy3yC,EAAeh3yC,GAAKT,EAE5B,IACOjD,KAAK42c,MAAMiw1B,EAAY6T,EAAgBxxxC,EAClD,IAEAitxC,GAAYz2yC,UAAUi7yC,gBAAkB,SAAUvL,EAAWC,GACzD,OAAOD,EAAY,IAAM90xC,KAAKb,UAAU41xC,EAC5C,EAEA8G,GAAYz2yC,UAAUk7yC,yBAA2B,SAAUxL,EAAWC,UAC3DrvyC,KAAKq2yC,eAAer2yC,KAAK26yC,gBAAgBvL,EAAWC,GAC/D,EAaA8G,GAAYz2yC,UAAUm7yC,UAAY,SAAUzL,EAAWC,GACnD,IAAIyL,EAAU96yC,KAAK26yC,gBAAgBvL,EAAWC,GAC1Cj0+B,EAAQp7T,KAAKq2yC,eAAeyE,GAMhC,YALc/swC,IAAVqtR,GAAuBA,EAAMm0+B,aAAeH,GAAah0+B,EAAMo0+B,YAAcH,KAC7Ej0+B,EAAQ,IAAI+z+B,IACN18U,MAAMzy9B,KAAMovyC,EAAWC,GAC7BrvyC,KAAKq2yC,eAAeyE,GAAW1/+B,GAE5BA,CACX,EA8BA+6+B,GAAYz2yC,UAAU+3yC,eAAiB/K,IAA0B,SAASlkwC,EAAYrf,GACxD,iBAAfqf,IACPA,EAAa,CAAC,GAGlB,IAAIq+vC,GADJ19wC,EAAUA,GAAW,CAAC,GACe,YAAK,oBAEtC4xxC,EAA0Bn3yC,EAAEylZ,OAC5BzlZ,EAAE4zC,KAAKuuvC,uBACPniyC,EAAE4zC,KAAKutvC,iBACPnhyC,EAAE4zC,KAAK2tvC,eAGP6V,EAAmBp3yC,EAAEylZ,OACrB,CAAC,EACD0x5B,EACAvywC,GAGJ,OAAOxoC,KAAK42c,MAAMiw1B,EAAYmU,EAClC,IA8BA7E,GAAYz2yC,UAAUu7yC,YAAc,WAChC,OAAOj7yC,KAAK43yC,WAAWh4yC,KAAKI,KAAMonyC,EAAahnyC,UACnD,EA6BA+1yC,GAAYz2yC,UAAUw7yC,YAAc,WAChC,OAAOl7yC,KAAK43yC,WAAWh4yC,KAAKI,KAAMsnyC,EAAalnyC,UACnD,EAmBA+1yC,GAAYz2yC,UAAUy7yC,WAAa,SAAStU,GACpCjjyC,EAAEu3c,YAAY0r1B,GACd7myC,KAAK42yC,aAAa,iDAIlB52yC,KAAK65yC,mBAAmBhT,IAI5B7myC,KAAkB,YAAEu1yC,gBAAgB1O,GAAa,IAAIr7wC,MAAOic,UAChE,EAEA,IAAI2zwC,GAAoB,CACpB,YAAc,GAQdC,GAAuB,SAASC,GAChC,IAAInyxC,EAQJ,OANIA,EADAvlB,EAAEqhQ,SAASq2iC,GACDA,EACF13yC,EAAEu3c,YAAYmg2B,GAGZ,CAAC,EAFD,CAAC,KAAQA,GAIhB13yC,EAAEylZ,OAAO,CAAC,EAAG+x5B,GAAmBjyxC,EAC3C,EAyBAgtxC,GAAYz2yC,UAAUorG,SAAW,SAAS79D,EAAOquwC,GAC7C,IAAInyxC,EAAUkyxC,GAAqBC,GAC/BnyxC,EAAoB,WACpBnpB,KAAkB,YAAE8qG,SAAS79D,EAAO9jB,EAAc,MAElDvlB,EAAEylZ,OAAOrpZ,KAAKs3yC,uBAAwBrqwC,EAE9C,EA6BAkpwC,GAAYz2yC,UAAUw3c,cAAgB,SAASjqa,EAAO+3vC,EAAesW,GACjE,IAAInyxC,EAAUkyxC,GAAqBC,GAC/BnyxC,EAAoB,WACpBnpB,KAAkB,YAAEk3c,cAAcjqa,EAAO+3vC,EAAe77wC,EAAc,YAExC,IAApB,IACN67wC,EAAgB,QAEpBphyC,EAAEo+wB,KAAK/0uB,GAAO,SAASywI,EAAKlxB,GACnBxsJ,KAAKs3yC,uBAAuB33yC,eAAe6sJ,IAASxsJ,KAAKs3yC,uBAAuB9qpC,KAAUw4oC,IAC3FhlyC,KAAKs3yC,uBAAuB9qpC,GAAQkxB,EAE5C,GAAG19K,MAEX,EASAm2yC,GAAYz2yC,UAAU2xG,WAAa,SAAS73D,EAAUrwB,IAClDA,EAAUkyxC,GAAqBlyxC,IACP,WACpBnpB,KAAkB,YAAEqxG,WAAW73D,UAExBx5C,KAAKs3yC,uBAAuB99vC,EAE3C,EAEA28vC,GAAYz2yC,UAAU67yC,iBAAmB,SAAS/upC,EAAMrrJ,GACpD,IAAI8rC,EAAQ,CAAC,EACbA,EAAMu/G,GAAQrrJ,EACdnB,KAAK8qG,SAAS79D,EAClB,EA0BAkpwC,GAAYz2yC,UAAUu3c,SAAW,SAC7Buk2B,EAAiB/J,EAAeC,EAAeC,EAAkBC,EAAoBC,EAAiBC,EAAiBC,GAUvH,IAAI0J,EAAuBz7yC,KAAKuwyC,kBAChC,GAAIiL,GAAmBC,IAAyBD,EAAiB,CAG7D,GAA+B,iBAApBA,GAA8E,IAA9CA,EAAgBh7yC,QAAQs1yC,IAE/D,OADA91yC,KAAK42yC,aAAa,4CACV,EAEZ52yC,KAAK8qG,SAAS,CAAC,SAAY0wsC,GAC/B,CAEA,IAAKx7yC,KAAKywyC,aAAa,cAAe,CAGlC,IAAID,EAAYiL,EAChBz7yC,KAAKk3c,cAAc,CACf,4BAA8B,EAC9B,WAAcs51B,GACf,GACP,CAIIgL,IAAoBC,GAAwBD,IAAoBx7yC,KAAKywyC,aAAauC,MAClFhzyC,KAAKqxG,WAAW2hsC,IAChBhzyC,KAAK8qG,SAAS,CAAC,YAAe0wsC,KAElCx7yC,KAAK+wyC,OAAOC,iBAAkB,EAE9BhxyC,KAAa,OAAEu89B,OAAOk1U,EAAeC,EAAeC,EAAkBC,EAAoBC,EAAiBC,EAAiBC,GAIxHyJ,IAAoBC,GACpBz7yC,KAAK42c,MAAM,YAAa,CACpB,YAAe4k2B,EACf,kBAAqBC,GACtB,CAAC7B,YAAY,GAExB,EAMAzD,GAAYz2yC,UAAUuhE,MAAQ,WAC1BjhE,KAAkB,YAAEglB,QACpBhlB,KAAK+wyC,OAAOC,iBAAkB,EAC9B,IAAIwG,EAAO5zyC,EAAEo+xC,OACbhiyC,KAAKk3c,cAAc,CACf,YAAe4+1B,GAAmB0B,EAClC,WAAcA,GACf,GACP,EAkBArB,GAAYz2yC,UAAU6wyC,gBAAkB,WACpC,OAAOvwyC,KAAKywyC,aAAa,cAC7B,EAsCA0F,GAAYz2yC,UAAU+nQ,MAAQ,SAASA,EAAO7uN,GAI1C,GAAI6uN,IAAUznQ,KAAKywyC,aAAasC,IAE5B,OADA/yyC,KAAK42yC,aAAa,oEACV,EAGZ,IAAIlqvC,EAAQ1sD,KAIZ,OAHI4D,EAAEu3c,YAAYvia,KACdA,EAAW54C,KAAKuwyC,mBAEhB9oiC,IAAU7uN,GACV54C,KAAKu7yC,iBAAiBvI,GAAcvriC,GAC7BznQ,KAAK42c,MAAM,gBAAiB,CAC/B,MAASnvM,EACT,YAAe7uN,GAChB,CACCghwC,YAAY,IACb,WAECltvC,EAAMuqZ,SAASxvM,EACnB,MAEAznQ,KAAK42yC,aAAa,0DAClB52yC,KAAKi3c,SAASxvM,IACN,EAEhB,EAaA0uiC,GAAYz2yC,UAAUg8yC,SAAW,SAASA,GACtC17yC,KAAKu7yC,iBAAiB,cAAeG,EACzC,EA6HAvF,GAAYz2yC,UAAUq3yC,WAAa,SAASj7+B,GACpCl4T,EAAEqhQ,SAAS62D,KACXl4T,EAAEylZ,OAAOrpZ,KAAa,OAAG87T,GAEJA,EAAmB,YAEpCl4T,EAAEo+wB,KAAKhixB,KAAK8vyC,kBAAkB,SAASD,GACnCA,EAAQtF,gBACZ,IAGCvqyC,KAAKgnyC,WAAW,sBACjBhnyC,KAAa,OAAoB,iBAAIA,KAAa,OAAe,aAEhEA,KAAKgnyC,WAAW,yBACjBhnyC,KAAa,OAAuB,oBAAIA,KAAa,OAAkB,gBAGvEA,KAAkB,aAClBA,KAAkB,YAAEszyC,cAActzyC,KAAa,QAEnD04uC,EAAOlxxB,MAAQkxxB,EAAOlxxB,OAASxnd,KAAKgnyC,WAAW,SAEvD,EAKAmP,GAAYz2yC,UAAUsnyC,WAAa,SAAS2U,GACxC,OAAO37yC,KAAa,OAAE27yC,EAC1B,EAQAxF,GAAYz2yC,UAAUw5yC,UAAY,SAAS0C,GACvC,IAAI370B,GAAOjge,KAAa,OAAS,MAAE47yC,IAAclG,IAAen1yC,MAAMP,KAAM+B,EAAMnC,KAAKQ,UAAW,IAKlG,YAJmB,IAAR6/d,IACPjge,KAAK42yC,aAAagF,EAAY,gCAC9B370B,EAAM,MAEHA,CACX,EAoBAk20B,GAAYz2yC,UAAU+wyC,aAAe,SAASoL,GAC1C,OAAO77yC,KAAkB,YAAS,MAAE67yC,EACxC,EAEA1F,GAAYz2yC,UAAU6E,SAAW,WAC7B,IAAImG,EAAO1K,KAAKgnyC,WAAW,QAI3B,OAHIt8xC,IAASkryC,KACTlryC,EAAOkryC,GAAwB,IAAMlryC,GAElCA,CACX,EAEAyryC,GAAYz2yC,UAAUm6yC,mBAAqB,SAAShT,GAChD,OAAOjjyC,EAAEw+xC,YAAY9owC,IACjBt5B,KAAK+wyC,OAAOsI,oBACZz1yC,EAAEi3nB,QAAQ76nB,KAAKk3yC,kBAAmBrQ,EAC1C,EAGAsP,GAAYz2yC,UAAU63yC,WAAa,WAC0D,iBAAzDv3yC,KAAKgnyC,WAAW,sCAGfpjyC,EAAEooB,aAAaw3wC,kBACvCxjyC,KAAK87yC,yBAA2B97yC,KAAK87yC,sBAAsB,CAAC,iBAAoB,YACjF97yC,KAAK+7yC,gBAAgB,CAAC,oBAAsB,KAE3C/7yC,KAAK63yC,0BAA4B73yC,KAAK63yC,uBAAuB,CAAC,iBAAoB,YACnF73yC,KAAKg8yC,iBAAiB,CAAC,mBAAqB,IAEhDh8yC,KAAKi8yC,0BAA0B,CAC3B,iBAAoB,SACpB,oBAAsB,KAK1Bj8yC,KAAK63yC,yBACL73yC,KAAKk8yC,yBAAyB,CAAC,mBAAqB,IAK5Cl8yC,KAAK87yC,0BACb97yC,KAAKgnyC,WAAW,iCAAkCpjyC,EAAE4yB,OAAOrzB,IAAI,eAE/DS,EAAE4yB,OAAO3D,OAAO,aAChB7yB,KAAKg8yC,iBAAiB,CAClB,kBAAqBh8yC,KAAKgnyC,WAAW,oCAGjD,EAQAmP,GAAYz2yC,UAAUw8yC,yBAA2B,SAAS/yxC,GACtD,IAAImnV,EACJ,GAAInnV,GAAWA,EAA2B,kBACtCmnV,GAAW,MACR,KAAInnV,IAAWA,EAA4B,mBAG9C,OAFAmnV,GAAW,CAGf,CAEKtwW,KAAKgnyC,WAAW,wBAA0BhnyC,KAAkB,YAAEswW,WAAaA,GAC5EtwW,KAAkB,YAAEk0yC,aAAa5j8B,GAGjCA,GACA1sW,EAAEo+wB,KAAKhixB,KAAK8vyC,kBAAkB,SAASD,GACnCA,EAAQ7qxC,OACZ,GAER,EAGAmxxC,GAAYz2yC,UAAUy8yC,gBAAkB,SAASp8vC,EAAM52B,GAkBnD,OAjBAA,EAAUvlB,EAAEylZ,OAAO,CACf,MAASzlZ,EAAEP,KAAKrD,KAAK42c,MAAO52c,MAC5B,iBAAoBA,KAAKgnyC,WAAW,qCACpC,cAAiBhnyC,KAAKgnyC,WAAW,kCACjC,kBAAqBhnyC,KAAKgnyC,WAAW,qBACrC,kBAAqBhnyC,KAAKgnyC,WAAW,qBACrC,uBAA0BhnyC,KAAKgnyC,WAAW,0BAC1C,cAAiBhnyC,KAAKgnyC,WAAW,iBACjC,cAAiBhnyC,KAAKgnyC,WAAW,iBACjC,WAAchnyC,KAAKgnyC,WAAW,eAC/B79wC,GAGEvlB,EAAEooB,aAAaw3wC,iBAChBr6wC,EAA0B,iBAAI,UAG3B42B,EAAK//C,KAAKgnyC,WAAW,SAAU,CAClCpw1B,MAAOztb,EAAe,MACtBskxC,eAAgBtkxC,EAA0B,iBAC1CukxC,gBAAiBvkxC,EAA0B,iBAC3CgkxC,gBAAiBhkxC,EAA0B,iBAC3CikxC,kBAAmBjkxC,EAAuB,cAC1C8N,aAAc9N,EAAuB,cACrCmkxC,iBAAkBnkxC,EAA2B,kBAC7CqkxC,gBAAiBrkxC,EAA2B,kBAC5C+jxC,qBAAsB/jxC,EAAgC,uBACtDokxC,aAAcpkxC,EAAuB,cACrCijxC,UAAWjjxC,EAAoB,YAEvC,EAiCAgtxC,GAAYz2yC,UAAUq8yC,gBAAkB,SAAS5yxC,GAC7CA,EAAUvlB,EAAEylZ,OAAO,CACf,oBAAsB,GACvBlgY,GAEHnpB,KAAKm8yC,gBAAgBrQ,GAAO3ixC,GAC5BnpB,KAAKk8yC,yBAAyB/yxC,EAClC,EA2BAgtxC,GAAYz2yC,UAAUs8yC,iBAAmB,SAAS7yxC,IAC9CA,EAAUvlB,EAAEylZ,OAAO,CACf,mBAAqB,EACrB,aAAe,GAChBlgY,IAGsB,aAAKnpB,KAAa,QAAKA,KAAa,OAAEswyC,qBAC3DtwyC,KAAa,OAAEqwyC,cACfrwyC,KAAa,OAAEowyC,iBAGnBpwyC,KAAKm8yC,gBAAgBnQ,GAAQ7ixC,GAC7BnpB,KAAKk8yC,yBAAyB/yxC,EAClC,EAeAgtxC,GAAYz2yC,UAAUo8yC,sBAAwB,SAAS3yxC,GACnD,OAAOnpB,KAAKm8yC,gBAAgBlQ,GAAY9ixC,EAC5C,EAeAgtxC,GAAYz2yC,UAAUm4yC,uBAAyB,SAAS1uxC,GACpD,OAAOnpB,KAAKm8yC,gBAAgBhQ,GAAahjxC,EAC7C,EA2BAgtxC,GAAYz2yC,UAAUu8yC,0BAA4B,SAAS9yxC,GACvDA,EAAUvlB,EAAEylZ,OAAO,CACf,oBAAsB,GACvBlgY,GAEHnpB,KAAKm8yC,gBAAgBpP,GAAe5jxC,GACpCnpB,KAAKk8yC,yBAAyB/yxC,EAClC,EAEAgtxC,GAAYz2yC,UAAUk3yC,aAAe,SAAS5n+B,EAAK13R,GAC/CjwB,EAAQvlB,MAAMvB,MAAM8mB,EAAQvlB,MAAO1B,WACnC,IACSk3C,GAAS03R,aAAexnT,QACzBwnT,EAAM,IAAIxnT,MAAMwnT,IAEpBhvU,KAAKgnyC,WAAW,iBAAhBhnyC,CAAkCgvU,EAAK13R,EAC3C,CAAE,MAAMA,GACJjwB,EAAQvlB,MAAMw1C,EAClB,CACJ,EAKA6+vC,GAAYz2yC,UAAgB,KAAkCy2yC,GAAYz2yC,UAAUgxD,KACpFylvC,GAAYz2yC,UAAiB,MAAiCy2yC,GAAYz2yC,UAAUuhE,MACpFk1uC,GAAYz2yC,UAAmB,QAA+By2yC,GAAYz2yC,UAAUoyU,QACpFqk+B,GAAYz2yC,UAAsB,WAA4By2yC,GAAYz2yC,UAAUy7yC,WACpFhF,GAAYz2yC,UAAiB,MAAiCy2yC,GAAYz2yC,UAAUk3c,MACpFu/1B,GAAYz2yC,UAAuB,YAA2By2yC,GAAYz2yC,UAAUu7yC,YACpF9E,GAAYz2yC,UAAuB,YAA2By2yC,GAAYz2yC,UAAUw7yC,YACpF/E,GAAYz2yC,UAA0B,eAAwBy2yC,GAAYz2yC,UAAU+3yC,eACpFtB,GAAYz2yC,UAAoB,SAA8By2yC,GAAYz2yC,UAAUorG,SACpFqrsC,GAAYz2yC,UAAyB,cAAyBy2yC,GAAYz2yC,UAAUw3c,cACpFi/1B,GAAYz2yC,UAAsB,WAA4By2yC,GAAYz2yC,UAAU2xG,WACpF8ksC,GAAYz2yC,UAAoB,SAA8By2yC,GAAYz2yC,UAAUu3c,SACpFk/1B,GAAYz2yC,UAAiB,MAAiCy2yC,GAAYz2yC,UAAU+nQ,MACpF0uiC,GAAYz2yC,UAAoB,SAA8By2yC,GAAYz2yC,UAAUg8yC,SACpFvF,GAAYz2yC,UAAsB,WAA4By2yC,GAAYz2yC,UAAUq3yC,WACpFZ,GAAYz2yC,UAAsB,WAA4By2yC,GAAYz2yC,UAAUsnyC,WACpFmP,GAAYz2yC,UAAwB,aAA0By2yC,GAAYz2yC,UAAU+wyC,aACpF0F,GAAYz2yC,UAA2B,gBAAuBy2yC,GAAYz2yC,UAAU6wyC,gBACpF4F,GAAYz2yC,UAAoB,SAA8By2yC,GAAYz2yC,UAAU6E,SACpF4xyC,GAAYz2yC,UAA4B,iBAAsBy2yC,GAAYz2yC,UAAUs8yC,iBACpF7F,GAAYz2yC,UAA2B,gBAAuBy2yC,GAAYz2yC,UAAUq8yC,gBACpF5F,GAAYz2yC,UAAkC,uBAAgBy2yC,GAAYz2yC,UAAUm4yC,uBACpF1B,GAAYz2yC,UAAiC,sBAAiBy2yC,GAAYz2yC,UAAUo8yC,sBACpF3F,GAAYz2yC,UAAqC,0BAAay2yC,GAAYz2yC,UAAUu8yC,0BACpF9F,GAAYz2yC,UAAqB,UAA6By2yC,GAAYz2yC,UAAUm7yC,UACpF1E,GAAYz2yC,UAAqB,UAA6By2yC,GAAYz2yC,UAAUy6yC,UACpFhE,GAAYz2yC,UAAqB,UAA6By2yC,GAAYz2yC,UAAU26yC,UACpFlE,GAAYz2yC,UAAwB,aAA0By2yC,GAAYz2yC,UAAU66yC,aACpFpE,GAAYz2yC,UAA6B,kBAAqBy2yC,GAAYz2yC,UAAU+6yC,kBACpFtE,GAAYz2yC,UAA+B,oBAAmBy2yC,GAAYz2yC,UAAU05yC,oBACpFjD,GAAYz2yC,UAA8B,mBAAoBy2yC,GAAYz2yC,UAAUy5yC,mBAGpFhG,GAAoBzzyC,UAAsB,WAAeyzyC,GAAoBzzyC,UAAU8oC,WACvF2qwC,GAAoBzzyC,UAAiC,sBAAIyzyC,GAAoBzzyC,UAAUs0yC,sBACvFb,GAAoBzzyC,UAAgC,qBAAKyzyC,GAAoBzzyC,UAAUswyC,qBACvFmD,GAAoBzzyC,UAA+B,oBAAMyzyC,GAAoBzzyC,UAAU60yC,oBACvFpB,GAAoBzzyC,UAAiB,MAAoByzyC,GAAoBzzyC,UAAUslB,MAGvF,IAAIo7L,GAAY,CAAC,EAgHbg8lC,IAVA9J,GA/9De,GAg+DfC,GAAkB,IAAI4D,IAzFA,KAAI,SAAS94nC,EAAOy+I,EAAQpxT,GAC9C,GAAIA,EAMA,OAJK6nyC,GAAgB7nyC,KACjB6nyC,GAAgB7nyC,GAAQ01M,GAAU11M,GAAQ0ryC,GAAa/4nC,EAAOy+I,EAAQpxT,GACtE6nyC,GAAgB7nyC,GAAMmsyC,WAEnBtE,GAAgB7nyC,GAEvB,IAAIwgB,EAAWqnxC,GAEXnylC,GAAUw1lC,IAEV1qxC,EAAWk1L,GAAUw1lC,IACdv4nC,KAEPnyJ,EAAWkrxC,GAAa/4nC,EAAOy+I,EAAQ85+B,KAC9BiB,UACTz2lC,GAAUw1lC,IAAyB1qxC,GAGvCqnxC,GAAkBrnxC,EA35DX,IA45DHonxC,KACAzS,EAAS+V,IAAyBrD,IAlC9C3uyC,EAAEo+wB,KAAK5hkB,IAAW,SAASl1L,EAAUxgB,GAC7BA,IAASkryC,KAAyBrD,GAAgB7nyC,GAAQwgB,EAClE,IAGAqnxC,GAAmB,EAAI3uyC,CAiCvB,EAiEA2uyC,GAAsB,OA9DG,WAEzB,SAAS8J,IAEDA,EAAmBn7yC,OACvBm7yC,EAAmBn7yC,MAAO,EAE1Bg1yC,IAAa,EACbF,IAAmB,EAEnBpyyC,EAAEo+wB,KAAK5hkB,IAAW,SAAS8lN,GACvBA,EAAKyx4B,aACT,IACJ,CAaA,GAAIvX,EAAWzzwC,iBACmB,aAA1ByzwC,EAAWpvvC,WAKXqrwC,IAEAjc,EAAWzzwC,iBAAiB,mBAAoB0vxC,GAAoB,QAErE,GAAIjc,EAAWzzD,YAAa,CAE/ByzD,EAAWzzD,YAAY,qBAAsB0vE,GAG7C,IAAIC,GAAW,EACf,IACIA,EAAqC,OAA1Bzc,EAAS0c,YACxB,CAAE,MAAMp9yC,GAER,CAEIihyC,EAAW/8rC,gBAAgBm5sC,UAAYF,GAjC/C,SAASG,IACL,IACIrc,EAAW/8rC,gBAAgBm5sC,SAAS,OACxC,CAAE,MAAMr9yC,GAEJ,YADA0mB,WAAW42xC,EAAiB,EAEhC,CAEAJ,GACJ,CAyBQI,EAER,CAGA74yC,EAAE8/xC,eAAe7D,EAAU,OAAQwc,GAAoB,EAC3D,CAQIK,GAEOnK,IAKXz1wC,EAAOr6B,QAAU25yC,iECh/LjB,MAGM/7C,EAAkB,CACpB7yS,UAJgB,EAKhBnnvB,UAJe,EAKfunvB,QAJc,IAqBX,SAAkCmzS,GACrC,MAAM47C,EAAa57C,EAAkBrhwC,UAAUswD,QAE/C+wsC,EAAkBrhwC,UAAUswD,QAAU,SAAiB8u0B,GACnD,MAAM/vrB,EAAQ/uM,KAAK+uM,MAEf+vrB,EAAGpnhB,OAAS,GAAiB,gBAAZonhB,EAAGvy3B,OAfhC,SAAc2tC,EAAO0iwC,GACjB,IAAK,IAAIh8yC,EAAI,EAAGA,EAAIs5C,EAAM75C,OAAQO,IAC9B,GAAYs5C,EAAMt5C,GAcUygwC,YAAcviY,EAAGuiY,UAbzC,OAAO,EAGf,OAAO,CACX,CASiB15tC,CAAKonK,IACNA,EAAMltM,KAAKi93B,IAGnB69a,EAAW/8yC,KAAKI,KAAM8+3B,EAC1B,CACJ,CCxCA+9a,CAAyBC,EAAA,mBACPA,EAAA,WD0CHp9yC,UAAUswD,QAAU,SAAiB8u0B,GAC5C,IAAIlx1B,EAAYyytC,EAAgBvhY,EAAGvy3B,MAxCvB,EA0CRqhC,GAA2Bkx1B,EAAGpnhB,QAAU,IACxC13W,KAAKygwC,SAAU,GA1CR,EA4CP7ytC,GAAuC,IAAbkx1B,EAAG4B,QAC7B9y1B,EA5CM,GA+CL5tC,KAAKygwC,UA/CA,EAkDN7ytC,IACA5tC,KAAKygwC,SAAU,GAEnBzgwC,KAAKkpB,SAASlpB,KAAKy+vC,QAAS7wtC,EAAW,CACnCkxtC,SAAU,CAAChgY,GACXkgY,gBAAiB,CAAClgY,GAClBkuF,YAAa,QACbtq2B,SAAUo8wB,IAElB,EC/DG,MAAM+mY,EAAUi3C,EAAA,QACvB,ICLe,MAAMt+C,EACjB,WAAAv+vC,CAAY8rF,EAAS7iE,EAAUC,GAC3BnpB,KAAK+rF,QAAUA,EACf/rF,KAAKkpB,SAAWA,EAChBlpB,KAAKmpB,QAAU,CAAEnG,QAAQ,KAASmG,EACtC,ECFG,MAAM4zxC,EAAc,EACrB,CACE,CAAC,EAAOr0C,IAAK,CAAEjquC,MAAO,SAAUqguC,SAAU,EAAG97sC,UAAW,EAAGhgC,QAAQ,IACnE,CAAC,EAAO0utB,OAAQ,CAAE1utB,QAAQ,IAC1B,CAAC,EAAO4lvC,MAAO,CAAE5lvC,QAAQ,IACzB,CAAC,EAAO2lvC,MAAO,CAAE3lvC,QAAQ,IACzB,CAAC,EAAO0lvC,IAAK,CAAE1ltC,UAAW,EAAGhgC,QAAQ,IACrC,CAAC,EAAO6lvC,MAAO,CAAE7lvC,QAAQ,IACzB,CAAC,EAAOylvC,IAAK,CAAEhquC,MAAO,YAAa4ouC,KAAM,EAAGrkvC,QAAQ,IAEpD,CAAC,EAAOylvC,IAAK,CAAEhquC,MAAO,SAAUzb,QAAQ,IACxC,CAAC,EAAOylvC,IAAK,CAAEzlvC,QAAQ,KAEzB,KAEOg6xC,EAA4B,CACrCC,OAAQ,CAAC,SAAU,QAAS,OAC5Bx3rC,OAAQ,CAAC,SACT6r1B,MAAO,CAAC,OACRrs1B,IAAK,CAAC,QAAS,YAAa,SAAU,OACtCi4rC,UAAW,CAAC,UACZC,OAAQ,CAAC,QAGAC,EAA0B,CACnCF,UAAW,CAAC,QASHG,EAAsB,CAC/Bz7pC,YAAa,cACbE,YAAa,cACb2q0B,UAAW,YACXwB,WAAY,cACZE,UAAW,cACXC,SAAU,YACVZ,UAAW,cACXnnvB,UAAW,cACXunvB,QAAS,aAEA0vV,EAAoB,CAC7BC,WAAY,CAAC,UAAW,SACxBC,aAAc,CAAC,YAAa,YAAa,UAAW,YAAa,WAAY,cAC7EC,aAAc,CAEV,QAEA,eASKC,EAAuB,CAChC1mB,IAAK,MACLmmB,OAAQ,SACRD,UAAW,YACXS,MAAO,QACPrsW,MAAO,QACPssW,QAAS,QACTC,SAAU,QACVC,WAAY,QACZC,UAAW,QACXC,SAAU,QACVC,YAAa,QACbx4rC,OAAQ,SACRy4rC,YAAa,SACbC,WAAY,SACZC,UAAW,SACXC,aAAc,SACdpB,OAAQ,SACRqB,YAAa,SACbC,WAAY,SACZC,SAAU,SACVC,WAAY,SACZC,WAAY,SACZC,YAAa,SACbC,UAAW,SACXC,aAAc,SACd55rC,IAAK,MACLopB,SAAU,MACVC,QAAS,MACTwwqC,MAAO,MACPC,QAAS,MACTC,QAAS,MACTC,SAAU,MACV1wqC,OAAQ,MACR2wqC,UAAW,MACXC,MAAO,QACPC,UAAW,QACXC,WAAY,QACZC,QAAS,QACTC,UAAW,SAOFC,EAAwB,CACjCtttC,MAAO,MACPuttC,SAAU,SACVr5kC,SAAU,YACVonvB,UAAW,cACXnnvB,UAAW,cACXunvB,QAAS,YACT8xV,UAAW,cACXp5kC,SAAU,aACVq5kC,WAAY,gBCpHHrmxC,EAAiC,oBAAdD,WAA6BA,UAAUC,UAAYD,UAAUC,UAAU/pB,cAAgB,GACjHilY,EAA4B,oBAAXtyY,OAAyBA,OAAS,EAAAC,OACvB,IAAX,EAAAA,EAAyB,EAAAA,EAASD,OACnB,oBAAbiD,UAA2BA,SAOpD,IAAIy6yC,GAAmB,EAEvB,IACI,MAAMz2xC,EAAU,CAGZ,WAAIumB,GAEA,OADAkwwC,GAAmB,GACZ,CACX,GAEJpr6B,EAAQ7nX,iBAAiB,OAAQ,KAAMxD,GACvCqrX,EAAQnrX,oBAAoB,OAAQ,KACxC,CACA,MAAOiuB,GACHsowC,GAAmB,CACvB,CC1BA,MAAMt5W,GAA4C,IAAlCht6B,EAAU94B,QAAQ,YAC5B,aAAEi9yC,GAAiBH,EACnBuC,EAAa,QAEbC,EAA2B,eAIlB,MAAMC,UAAmBvhD,EACpC,WAAAv+vC,CAAY8rF,EAAS7iE,EAAUC,GAC3BqkB,MAAMu+C,EAAS7iE,EAAUC,GAEzBnpB,KAAK2gH,YAAeliF,IAChB,IAAKz+B,KAAKmpB,QAAQnG,OACd,OAEJ,IAAI7hB,EAAQs9B,EAAMkrF,OACd,EAAOq2rC,aAEH15W,GAAW7n6B,EAAMwhxC,YAAc,EAAOD,WAAWE,kBACjD/+yC,GAAS,EAAO8jG,kBAEhBxmE,EAAMwhxC,YAAc,EAAOD,WAAWG,iBACtCh/yC,GAlBS,KAqBH,IAAVA,GAAeA,EAAQ2+yC,GAA6B,IAGpD3+yC,EAAQ0B,KAAKyK,MAAMnM,EAAQ2+yC,IAE3BrhxC,EAAMqkF,UAAY3hH,IAClBA,GAzBS,KA2BbnB,KAAKkpB,SAAS,CACV3c,KAAMszyC,EACN5gxC,OAAQ,CACJh7B,EAAGw6B,EAAMq1D,QACT9wF,EAAGy7B,EAAMs1D,SAEbgyB,OAAQ5kH,EACRuhH,SAAUjkF,EACVuu7B,YAAa,QACbl98B,OAAQ2uB,EAAM3uB,QAChB,EAEN9P,KAAK62F,QAAU72F,KAAKmpB,QAAQ0tE,QAAU,IAAI70F,OAAOy7yC,GACjDz9yC,KAAK62F,OAAO3xE,SAAQuZ,GAASstD,EAAQp/D,iBAAiB8R,EAAOz+B,KAAK2gH,cAAai/rC,GAAmB,CAAElwwC,SAAS,KACjH,CACA,OAAA0uG,GACIp+I,KAAK62F,OAAO3xE,SAAQuZ,GAASz+B,KAAK+rF,QAAQ1iE,oBAAoBoV,EAAOz+B,KAAK2gH,cAC9E,CAKA,eAAAy/rC,CAAgBxywC,EAAWuI,GACnBvI,IAAciywC,IACd7/yC,KAAKmpB,QAAQnG,OAASmzB,EAE9B,EC7DJ,MAAM,aAAEqnwC,GAAiBF,EACnB+C,EAAkB,cAClBC,EAAkB,cAClBC,EAAiB,aACjBC,EAAmB,eACnBC,EAAmB,eASV,MAAMC,UAAkBliD,EACnC,WAAAv+vC,CAAY8rF,EAAS7iE,EAAUC,GAC3BqkB,MAAMu+C,EAAS7iE,EAAUC,GACzBnpB,KAAK2gH,YAAeliF,IAChBz+B,KAAK2gzC,gBAAgBlixC,GACrBz+B,KAAK4gzC,eAAenixC,GACpBz+B,KAAK6gzC,iBAAiBpixC,GACtBz+B,KAAK8gzC,iBAAiBrixC,GACtBz+B,KAAK+gzC,gBAAgBtixC,EAAM,EAE/Bz+B,KAAKygwC,SAAU,EACf,MAAM,OAAEz9uC,GAAWhjB,KAAKmpB,QACxBnpB,KAAKghzC,gBAAkBh+xC,EACvBhjB,KAAKihzC,iBAAmBj+xC,EACxBhjB,KAAKkhzC,iBAAmBl+xC,EACxBhjB,KAAKmhzC,eAAiBn+xC,EACtBhjB,KAAKohzC,gBAAkBp+xC,EACvBhjB,KAAK62F,QAAU72F,KAAKmpB,QAAQ0tE,QAAU,IAAI70F,OAAOw7yC,GACjDx9yC,KAAK62F,OAAO3xE,SAAQuZ,GAASstD,EAAQp/D,iBAAiB8R,EAAOz+B,KAAK2gH,cACtE,CACA,OAAAy9B,GACIp+I,KAAK62F,OAAO3xE,SAAQuZ,GAASz+B,KAAK+rF,QAAQ1iE,oBAAoBoV,EAAOz+B,KAAK2gH,cAC9E,CAKA,eAAAy/rC,CAAgBxywC,EAAWuI,GACnBvI,IAAcyywC,IACdrgzC,KAAKghzC,gBAAkB7qwC,GAEvBvI,IAAc0ywC,IACdtgzC,KAAKohzC,gBAAkBjrwC,GAEvBvI,IAAc2ywC,IACdvgzC,KAAKmhzC,eAAiBhrwC,GAEtBvI,IAAc4ywC,IACdxgzC,KAAKkhzC,iBAAmB/qwC,GAExBvI,IAAc6ywC,IACdzgzC,KAAKihzC,iBAAmB9qwC,EAEhC,CACA,eAAAwqwC,CAAgBlixC,GACRz+B,KAAKohzC,iBACc,cAAf3ixC,EAAMlyB,MACNvM,KAAKqhzC,MAAMf,EAAiB7hxC,EAGxC,CACA,cAAAmixC,CAAenixC,GACPz+B,KAAKmhzC,gBACc,aAAf1ixC,EAAMlyB,MACNvM,KAAKqhzC,MAAMd,EAAgB9hxC,EAGvC,CACA,gBAAAoixC,CAAiBpixC,GACTz+B,KAAKkhzC,kBACc,eAAfzixC,EAAMlyB,MACNvM,KAAKqhzC,MAAMb,EAAkB/hxC,EAGzC,CACA,gBAAAqixC,CAAiBrixC,GACTz+B,KAAKihzC,kBACc,eAAfxixC,EAAMlyB,MACNvM,KAAKqhzC,MAAMZ,EAAkBhixC,EAGzC,CACA,eAAAsixC,CAAgBtixC,GACZ,GAAIz+B,KAAKghzC,gBACL,OAAQvixC,EAAMlyB,MACV,IAAK,YACGkyB,EAAMi5U,QAAU,IAEhB13W,KAAKygwC,SAAU,GAEnB,MACJ,IAAK,YAEmB,IAAhBhiuC,EAAMii2B,QAEN1g4B,KAAKygwC,SAAU,GAEdzgwC,KAAKygwC,SAGNzgwC,KAAKqhzC,MAAMhB,EAAiB5hxC,GAEhC,MACJ,IAAK,UACDz+B,KAAKygwC,SAAU,EAK/B,CACA,KAAA4gD,CAAM90yC,EAAMkyB,GACRz+B,KAAKkpB,SAAS,CACV3c,OACA0yB,OAAQ,CACJh7B,EAAGw6B,EAAMq1D,QACT9wF,EAAGy7B,EAAMs1D,SAEb2uB,SAAUjkF,EACVuu7B,YAAa,QACbl98B,OAAQ2uB,EAAM3uB,QAEtB,EC7HJ,MAAM,WAAEytyC,GAAeD,EACjBgE,EAAkB,UAClBC,EAAgB,QACP,MAAMC,UAAiBhjD,EAClC,WAAAv+vC,CAAY8rF,EAAS7iE,EAAUC,GAC3BqkB,MAAMu+C,EAAS7iE,EAAUC,GACzBnpB,KAAK2gH,YAAeliF,IAEhB,MAAM2uD,EAAiB3uD,EAAM3uB,QAAU2uB,EAAMgjxC,WACd,UAA1Br0tC,EAAcnyB,SAA8C,SAAvBmyB,EAAc7gF,MAC1B,aAA1B6gF,EAAcnyB,UAGdj7D,KAAK0hzC,iBAAkC,YAAfjjxC,EAAMlyB,MAC9BvM,KAAKkpB,SAAS,CACV3c,KAAM+0yC,EACN5+rC,SAAUjkF,EACV5Z,IAAK4Z,EAAM5Z,IACX/U,OAAQ2uB,EAAM3uB,SAGlB9P,KAAK2hzC,eAAgC,UAAfljxC,EAAMlyB,MAC5BvM,KAAKkpB,SAAS,CACV3c,KAAMg1yC,EACN7+rC,SAAUjkF,EACV5Z,IAAK4Z,EAAM5Z,IACX/U,OAAQ2uB,EAAM3uB,SAEtB,EAEJ9P,KAAK0hzC,gBAAkB1hzC,KAAKmpB,QAAQnG,OACpChjB,KAAK2hzC,cAAgB3hzC,KAAKmpB,QAAQnG,OAClChjB,KAAK62F,QAAU72F,KAAKmpB,QAAQ0tE,QAAU,IAAI70F,OAAOu7yC,GACjDxxtC,EAAQs6b,SAAWrmhB,KAAKmpB,QAAQk9f,UAAY,EAC5Ct6b,EAAQ13E,MAAMkrO,QAAU,OACxBv/O,KAAK62F,OAAO3xE,SAAQuZ,GAASstD,EAAQp/D,iBAAiB8R,EAAOz+B,KAAK2gH,cACtE,CACA,OAAAy9B,GACIp+I,KAAK62F,OAAO3xE,SAAQuZ,GAASz+B,KAAK+rF,QAAQ1iE,oBAAoBoV,EAAOz+B,KAAK2gH,cAC9E,CAKA,eAAAy/rC,CAAgBxywC,EAAWuI,GACnBvI,IAAc0zwC,IACdthzC,KAAK0hzC,gBAAkBvrwC,GAEvBvI,IAAc2zwC,IACdvhzC,KAAK2hzC,cAAgBxrwC,EAE7B,ECpDJ,MAAM,EAAa,cACJ,MAAMyrwC,UAAyBpjD,EAC1C,WAAAv+vC,CAAY8rF,EAAS7iE,EAAUC,GAC3BqkB,MAAMu+C,EAAS7iE,EAAUC,GACzBnpB,KAAK2gH,YAAeliF,IACXz+B,KAAKmpB,QAAQnG,QAGlBhjB,KAAKkpB,SAAS,CACV3c,KAAM,EACN0yB,OAAQ,CACJh7B,EAAGw6B,EAAMq1D,QACT9wF,EAAGy7B,EAAMs1D,SAEb2uB,SAAUjkF,EACVuu7B,YAAa,QACbl98B,OAAQ2uB,EAAM3uB,QAChB,EAENi8E,EAAQp/D,iBAAiB,cAAe3sB,KAAK2gH,YACjD,CACA,OAAAy9B,GACIp+I,KAAK+rF,QAAQ1iE,oBAAoB,cAAerpB,KAAK2gH,YACzD,CAKA,eAAAy/rC,CAAgBxywC,EAAWuI,GACnBvI,IAAc,IACd5tC,KAAKmpB,QAAQnG,OAASmzB,EAE9B,EChCJ,MAGM,EAAe,CACjByrG,YAJe,EAKfE,YAJe,EAKf2q0B,UAJa,EAKbe,UAPe,EAQfnnvB,UAPe,EAQfunvB,QAPa,GAwBV,SAASi0V,EAAapjxC,GACzB,MAAMmP,EAAY,EAAanP,EAAMikF,SAASn2G,MAC9C,IAAKqhC,EAED,OAAO,KAEX,MAAM,QAAE49f,EAAO,OAAE9zL,EAAM,MAAEgphB,GAAUji2B,EAAMikF,SACzC,IAAI+4B,GAAa,EACbqmqC,GAAe,EACfp9rC,GAAc,EAoBlB,OArDa,IAoCb92E,GArCe,IAuCVA,IAA6BzI,OAAOuC,SAAS8jgB,IAC9C/vZ,EA7BuB,IA6BVilvB,EACbohb,EA7ByB,IA6BVphb,EACfh8wB,EA7BwB,IA6BVg8wB,GA1CH,IA4CN9y1B,GACL6tG,EAAaxoI,QA1BiB,EA0BTu4hB,GACrBs2wB,EAAe7uyC,QAzBiB,EAyBTu4hB,GACvB9mb,EAAczxG,QA3BiB,EA2BTu4hB,IAhDX,IAkDN59f,IACL6tG,EAnCwB,IAmCXi8N,EACboq8B,EAnC0B,IAmCXpq8B,EACfhzP,EAnCyB,IAmCXgzP,GAEX,CAAEj8N,aAAYqmqC,eAAcp9rC,cACvC,CAIO,SAASq9rC,EAAkBtjxC,EAAO0/wB,GACrC,MAAMl/wB,EAASR,EAAMQ,OAErB,IAAKA,EAED,OAAO,KAEX,MAAMy0D,EAAOyqtB,EAAYxqtB,wBAGnBilC,EAASllC,EAAK30D,MAAQo/wB,EAAYv9wB,aAAe,EACjDi4F,EAASnlC,EAAK10D,OAASm/wB,EAAYx9wB,cAAgB,EAMzD,MAAO,CAAE1B,SAAQkjF,aAJI,CACjBl+G,GAAIg7B,EAAOh7B,EAAIyvF,EAAK70D,KAAOs/wB,EAAY6jgB,YAAcpprC,EACrD51H,GAAIi8B,EAAOj8B,EAAI0wF,EAAK50D,IAAMq/wB,EAAY8jgB,WAAapprC,GAG3D,CC9EA,MAAM83H,EAAkB,CACpB8wjC,WAAY,OACZ5zwC,SAAU,GAEC,MAAMq0wC,EACjB,WAAAjizC,CAAYotC,GAIRrtC,KAAK2gH,YAAeliF,IAChB,GAAIz+B,KAAKqoE,UACL,OAEJ,MAAM85uC,EAAenizC,KAAKoizC,gBAAgB3jxC,GAC1C,IAAI3uB,EAAS2uB,EAAMikF,SAAS5yG,OAC5B,KAAOA,GAAUA,IAAWqyyC,EAAahkgB,aAAa,CAElD,GADAn+yB,KAAKqhzC,MAAMc,EAAcryyC,GACrBqyyC,EAAa7/rC,QACb,OAEJxyG,EAASA,EAAO4xB,UACpB,CACA1hC,KAAKqhzC,MAAMc,EAAc,OAAO,EAEpCnizC,KAAKqtC,aAAeA,EACpBrtC,KAAK+sH,SAAW,GAEhB/sH,KAAKqizC,kBAAoB,IAAI13xC,IAC7B3qB,KAAKsizC,SAAU,CACnB,CAEA,OAAAj6uC,GACI,OAAQroE,KAAKsizC,OACjB,CACA,GAAAn9xC,CAAI5Y,EAAMyjD,EAAS7mC,EAASC,GAAO,EAAOsmB,GAAU,GAChD,MAAM,SAAEq9E,EAAQ,kBAAEs1rC,GAAsBrizC,KACxC,IAAIq8C,EAAOs0M,EACY,iBAAZxnO,GAAyBA,GAAWA,EAAQwD,iBAGnD0vB,EAAO,IAAKs0M,EAAiB8wjC,WAAYt4xC,GAEpCA,IACLkzB,EAAO,IAAKs0M,KAAoBxnO,IAEpC,IAAI1M,EAAU4lyC,EAAkBl/yC,IAAIk5C,EAAKolwC,YACpChlyC,IACDA,EAAU,GACV4lyC,EAAkBp2yC,IAAIowC,EAAKolwC,WAAYhlyC,IAE3C,MAAMu3C,EAAQ,CACVznD,OACAyjD,UACAyxvC,WAAYplwC,EAAKolwC,WACjB5zwC,SAAUwO,EAAKxO,UAEfzkB,IACA4qC,EAAM5qC,MAAO,GAEbsmB,IACAskB,EAAMtkB,SAAU,GAEpBq9E,EAASlrH,KAAKmyD,GACdh0D,KAAKsizC,QAAUtizC,KAAKsizC,UAAYtuvC,EAAMtkB,QAGtC,IAAIuyF,EAAiBxlH,EAAQpc,OAAS,EACtC,KAAO4hI,GAAkB,KACjBxlH,EAAQwlH,GAAgBp0F,UAAYmmB,EAAMnmB,WAG9Co0F,IAEJxlH,EAAQwG,OAAOg/G,EAAiB,EAAG,EAAGjuE,EAC1C,CACA,MAAAnhC,CAAOtmB,EAAMyjD,GACT,MAAM,SAAE+8D,EAAQ,kBAAEs1rC,GAAsBrizC,KACxC,IAAK,IAAIY,EAAImsH,EAAS1sH,OAAS,EAAGO,GAAK,EAAGA,IAAK,CAC3C,MAAMozD,EAAQ+4D,EAASnsH,GACvB,GAAIozD,EAAMznD,OAASA,GAAQynD,EAAMhE,UAAYA,EAAS,CAClD+8D,EAAS9pG,OAAOriB,EAAG,GACnB,MAAM6b,EAAU4lyC,EAAkBl/yC,IAAI6wD,EAAMytvC,YAC5ChlyC,EAAQwG,OAAOxG,EAAQjc,QAAQwzD,GAAQ,GAChB,IAAnBv3C,EAAQpc,QACRgizC,EAAkBp9xC,OAAO+uC,EAAMytvC,WAEvC,CACJ,CACAzhzC,KAAKsizC,QAAUv1rC,EAASplF,MAAKqsB,IAAUA,EAAMtkB,SACjD,CAIA,KAAA2xwC,CAAM5ixC,EAAOgjxC,GACT,MAAMhlyC,EAAUzc,KAAKqizC,kBAAkBl/yC,IAAIs+yC,GAC3C,GAAIhlyC,EAAS,CACT,IAAI8lyC,GAA8B,EAElC,MAAM//rC,EAAkB,KACpB/jF,EAAM6jF,SAAU,CAAI,EAGlB6oR,EAA2B,KAC7B1sW,EAAM6jF,SAAU,EAChBigsC,GAA8B,CAAI,EAEhCC,EAAkB,GACxB,IAAK,IAAI5hzC,EAAI,EAAGA,EAAI6b,EAAQpc,OAAQO,IAAK,CACrC,MAAM,KAAE2L,EAAI,QAAEyjD,EAAO,KAAE5mC,GAAS3M,EAAQ7b,GAWxC,GAVAovD,EAAQ,IACDvxB,EAEHlyB,OACAi2G,kBACA2oR,6BAEA/hX,GACAo5xC,EAAgB3gzC,KAAK4a,EAAQ7b,IAE7B2hzC,EACA,KAER,CACA,IAAK,IAAI3hzC,EAAI,EAAGA,EAAI4hzC,EAAgBnizC,OAAQO,IAAK,CAC7C,MAAM,KAAE2L,EAAI,QAAEyjD,GAAYwyvC,EAAgB5hzC,GAC1CZ,KAAK6yB,OAAOtmB,EAAMyjD,EACtB,CACJ,CACJ,CAIA,eAAAoyvC,CAAgB3jxC,GACZ,MAAM0/wB,EAAcn+yB,KAAKqtC,aAAaisT,aACtC,MAAO,IACA76T,KACAojxC,EAAapjxC,MACbsjxC,EAAkBtjxC,EAAO0/wB,GAC5Bv4rB,eAAgB,KACZnnF,EAAMikF,SAASkD,gBAAgB,EAEnCulR,yBAA0B,KAC1B3oR,gBAAiB,KACjBF,SAAS,EACT67rB,cAER,EC5IJ,MAAM,EAAkB,CAEpBtntB,OAAQ,KAERs62B,YAAa,KACbxvzB,kBAAmB,CAAC,EAEpBkknC,QAAO,EAGPtrnC,YAAa,OACb8rY,SAAU,GAMC,MAAMo8xB,EACjB,WAAAxizC,CAAY8rF,EAAU,KAAM5iE,GAQxBnpB,KAAK0izC,cAAiBjkxC,IAClB,MAAM,SAAEikF,GAAajkF,EACfgpO,EAAQ41iC,EAAoB36rC,EAASn2G,MACvCk7P,GAEAznQ,KAAKy+vC,QAAQhk1B,KAAKhzK,EAAOhpO,EAC7B,EAMJz+B,KAAK2izC,cAAiBlkxC,IAElBz+B,KAAKy+vC,QAAQhk1B,KAAKh8Y,EAAMlyB,KAAMkyB,EAAM,EAExCz+B,KAAKmpB,QAAU,IAAK,KAAoBA,GACxCnpB,KAAK62F,OAAS,IAAIlsE,IAClB3qB,KAAKu5V,WAAWxtQ,GAEhB,MAAM,OAAE8K,GAAW72F,KAAKmpB,QACpB0tE,GACA72F,KAAK4Q,GAAGimF,EAEhB,CACA,UAAAyiQ,GACI,OAAOt5V,KAAK+rF,OAChB,CACA,UAAAwtQ,CAAWxtQ,GAMP,GALI/rF,KAAK+rF,SAEL/rF,KAAKo+I,UAETp+I,KAAK+rF,QAAUA,GACVA,EACD,OAEJ,MAAM,QAAE5iE,GAAYnpB,KACd4izC,EAAez5xC,EAAQ08uC,QAC7B7lwC,KAAKy+vC,QAAU,IAAImkD,EAAa72tC,EAAS,CACrCwuD,YAAapxH,EAAQoxH,YACrB42zB,YAAaho7B,EAAQgo7B,aAAe4rW,IACrCnsyC,GAAG,eAAgB5Q,KAAK0izC,eACtBv5xC,EAAQgo7B,aAGT7x8B,OAAOgU,KAAK0pyC,GAA2B93xC,SAAQxa,IAC3C,MAAMi5vC,EAAa3jwC,KAAKy+vC,QAAQt7vC,IAAIuH,GAChCi5vC,GACAq5C,EAA0BtyyC,GAAMwa,SAAQ29xC,IACpCl/C,EAAWsC,cAAc48C,EAAU,GAE3C,IAIR,IAAK,MAAMC,KAAkB35xC,EAAQw4H,kBAAmB,CACpD,MAAMginC,EAAa3jwC,KAAKy+vC,QAAQt7vC,IAAI2/yC,GACpC,GAAIn/C,EAAY,CACZ,MAAMo/C,EAAmB55xC,EAAQw4H,kBAAkBmhqC,UAE5CC,EAAiB//xC,OACxB2gvC,EAAW13vC,IAAI82yC,EACnB,CACJ,CAIA/izC,KAAKgjzC,WAAa,IAAIjD,EAAWh0tC,EAAS/rF,KAAK2izC,cAAe,CAC1D3/xC,QAAQ,IAEZhjB,KAAKijzC,UAAY,IAAIvC,EAAU30tC,EAAS/rF,KAAK2izC,cAAe,CACxD3/xC,QAAQ,IAEZhjB,KAAKkjzC,SAAW,IAAI1B,EAASz1tC,EAAS/rF,KAAK2izC,cAAe,CACtD3/xC,QAAQ,EACRqjgB,SAAUl9f,EAAQk9f,WAEtBrmhB,KAAKmjzC,iBAAmB,IAAIvB,EAAiB71tC,EAAS/rF,KAAK2izC,cAAe,CACtE3/xC,QAAQ,IAGZ,IAAK,MAAOogyC,EAAYC,KAAmBrjzC,KAAK62F,OACvCwstC,EAAeh7uC,YAEhBroE,KAAKsjzC,kBAAkBD,EAAeP,gBAAgB,GACtD9izC,KAAKy+vC,QAAQ7tvC,GAAGwyyC,EAAYC,EAAe1isC,aAGvD,CAEA,OAAAy9B,GACQp+I,KAAK+rF,UAGL/rF,KAAKgjzC,WAAW5kqC,UAChBp+I,KAAKijzC,UAAU7kqC,UACfp+I,KAAKkjzC,SAAS9kqC,UACdp+I,KAAKmjzC,iBAAiB/kqC,UACtBp+I,KAAKy+vC,QAAQrgnC,UACbp+I,KAAKgjzC,WAAa,KAClBhjzC,KAAKijzC,UAAY,KACjBjjzC,KAAKkjzC,SAAW,KAChBljzC,KAAKmjzC,iBAAmB,KACxBnjzC,KAAKy+vC,QAAU,KACfz+vC,KAAK+rF,QAAU,KAEvB,CAEA,EAAAn7E,CAAG6tB,EAAOuxB,EAAS3T,GACfr8C,KAAKujzC,iBAAiB9kxC,EAAOuxB,EAAS3T,GAAM,EAChD,CACA,IAAAjzB,CAAKqV,EAAOuxB,EAAS3T,GACjBr8C,KAAKujzC,iBAAiB9kxC,EAAOuxB,EAAS3T,GAAM,EAChD,CACA,KAAAmnwC,CAAM/kxC,EAAOuxB,EAAS3T,GAClBr8C,KAAKujzC,iBAAiB9kxC,EAAOuxB,EAAS3T,GAAM,GAAO,EACvD,CACA,GAAArO,CAAIvP,EAAOuxB,GACPhwD,KAAKyjzC,oBAAoBhlxC,EAAOuxB,EACpC,CAIA,iBAAAszvC,CAAkB54yC,EAAMyrC,GACpB,MAAM,QAAEsotC,GAAYz+vC,KACpB,IAAKy+vC,EACD,OAEJ,MAAMkF,EAAalF,EAAQt7vC,IAAIuH,GAE/B,GAAIi5vC,GAAcA,EAAWx6uC,QAAQnG,SAAWmzB,EAAS,CACrDwttC,EAAW13vC,IAAI,CAAE+W,OAAQmzB,IACzB,MAAMutwC,EAAsBtG,EAAwB1yyC,GAChDg5yC,IAAwB1jzC,KAAKmpB,QAAQgo7B,aAGrCuyW,EAAoBx+xC,SAAQ29xC,IACxB,MAAM/9C,EAAkBrG,EAAQt7vC,IAAI0/yC,GAChC1swC,GAEA2utC,EAAgBoB,eAAex7vC,GAQ/Bi5vC,EAAW0C,mBAAmBw8C,IAI9B/9C,EAAgBuB,mBAAmB37vC,EACvC,GAGZ,CACA1K,KAAKgjzC,WAAW5C,gBAAgB11yC,EAAMyrC,GACtCn2C,KAAKijzC,UAAU7C,gBAAgB11yC,EAAMyrC,GACrCn2C,KAAKkjzC,SAAS9C,gBAAgB11yC,EAAMyrC,GACpCn2C,KAAKmjzC,iBAAiB/C,gBAAgB11yC,EAAMyrC,EAChD,CAIA,gBAAAotwC,CAAiB9kxC,EAAOuxB,EAAS3T,EAAMjzB,EAAMsmB,GACzC,GAAqB,iBAAVjR,EAAoB,CAE3B4d,EAAO2T,EAEP,IAAK,MAAM3gB,KAAa5Q,EACpBz+B,KAAKujzC,iBAAiBl0wC,EAAW5Q,EAAM4Q,GAAYgN,EAAMjzB,EAAMsmB,GAEnE,MACJ,CACA,MAAM,QAAE+utC,EAAO,OAAE5nqC,GAAW72F,KAEtBojzC,EAAa5D,EAAsB/gxC,IAAUA,EACnD,IAAI4kxC,EAAiBxstC,EAAO1zF,IAAIigzC,GAC3BC,IACDA,EAAiB,IAAInB,EAAelizC,MACpC62F,EAAO5qF,IAAIm3yC,EAAYC,GAEvBA,EAAeP,eAAiBpF,EAAqB0F,IAAeA,EAEhE3kD,GACAA,EAAQ7tvC,GAAGwyyC,EAAYC,EAAe1isC,cAG9C0isC,EAAel+xC,IAAIsZ,EAAOuxB,EAAS3T,EAAMjzB,EAAMsmB,GAC1C2zwC,EAAeh7uC,WAChBroE,KAAKsjzC,kBAAkBD,EAAeP,gBAAgB,EAE9D,CAIA,mBAAAW,CAAoBhlxC,EAAOuxB,GACvB,GAAqB,iBAAVvxB,EAAoB,CAE3B,IAAK,MAAM4Q,KAAa5Q,EACpBz+B,KAAKyjzC,oBAAoBp0wC,EAAW5Q,EAAM4Q,IAE9C,MACJ,CACA,MAAM,OAAEwnD,GAAW72F,KAEbojzC,EAAa5D,EAAsB/gxC,IAAUA,EAC7C4kxC,EAAiBxstC,EAAO1zF,IAAIigzC,GAClC,GAAKC,IAGLA,EAAexwxC,OAAO4L,EAAOuxB,GACzBqzvC,EAAeh7uC,WAAW,CAC1B,MAAM,eAAEy6uC,GAAmBO,EAE3B,IAAIM,GAAmB,EACvB,IAAK,MAAMC,KAAM/stC,EAAOn6E,SACpB,GAAIknyC,EAAGd,iBAAmBA,IAAmBc,EAAGv7uC,UAAW,CACvDs7uC,GAAmB,EACnB,KACJ,CAECA,GACD3jzC,KAAKsjzC,kBAAkBR,GAAgB,EAE/C,CACJ,wBCrQJ,QAM8D,EAA6F,SAAShizC,IAAI,aAAa,IAAI4B,EAAE,oBAAoBN,KAAKA,KAAK,oBAAoBF,OAAOA,YAAO,IAASQ,EAAEA,EAAE,CAAC,EAAMrD,GAAGqD,EAAEyC,YAAYzC,EAAEivB,YAAYrxB,EAAEoC,EAAEmhzC,iBAAgB,EAAG7izC,EAAE,CAAC,EAAEqB,EAAE,EAAEiB,EAAE,CAACipB,MAAM,SAASptB,EAAEC,GAAG,IAAIW,GAAGX,EAAEA,GAAG,CAAC,GAAG0kzC,gBAAe,EAA0C,GAAvCp+yC,EAAE3F,KAAKX,EAAE2kzC,sBAAsBhkzC,EAAEA,EAAE,CAAC,GAAMX,EAAE0kzC,cAAc/jzC,EAAEX,EAAEwjI,YAAYl9H,EAAEtG,EAAEwjI,YAAYxjI,EAAEwjI,UAAUxjI,EAAEm6B,QAAQj2B,EAAE0gzC,kBAAkB,CAAC,IAAIpjzC,EAAE,WAAW,IAAI0C,EAAE0gzC,kBAAkB,OAAM,EAAG,IAA+YjkzC,EAAEa,EAA7YzB,GAAGY,EAAE2C,EAAEslB,KAAKtlB,EAAE66R,WAAW,KAAK38R,EAAEE,EAAEyD,WAAWjB,EAAE2gzC,WAAW3gzC,EAAE2gzC,SAASlkzC,EAAEkoB,gBAAgB,IAAIF,KAAK,CAAC,yOAAyO,IAAInnB,EAAE,QAAQ,CAAC2L,KAAK,uBAAuBnN,EAAE,IAAIsD,EAAE80B,OAAOr4B,GAAW,OAAOC,EAAEsyB,UAAU9tB,EAAExE,EAAEmsB,GAAGlpB,IAAIrB,EAAE5B,EAAEmsB,IAAInsB,CAAC,CAAte,GAA0e,OAAOwB,EAAEsjzC,SAAS9kzC,EAAEsvW,KAAK9tW,EAAEujzC,UAAU/kzC,EAAE+mE,MAAMvlE,EAAEwjzC,aAAahlzC,EAAEypF,SAASjoF,EAAEyjzC,UAAUjlzC,EAAE0C,MAAM1C,EAAEsvW,KAAKhpW,EAAEtG,EAAEsvW,MAAMtvW,EAAE+mE,MAAMzgE,EAAEtG,EAAE+mE,OAAO/mE,EAAEypF,SAASnjF,EAAEtG,EAAEypF,UAAUzpF,EAAE0C,MAAM4D,EAAEtG,EAAE0C,cAAc1C,EAAEm6B,YAAY34B,EAAE+wB,YAAY,CAAC8+B,MAAMtxD,EAAE28T,OAAO18T,EAAEklzC,SAAS1jzC,EAAE2qB,IAAI,CAAC,IAAIlsB,EAAE,KAAmQ,OAA9PiE,EAAEihzC,kBAAkB,iBAAiBplzC,GAAGA,EAAE,SAASA,GAAG,OAAG,QAAQA,EAAE4Z,WAAW,GAAU5Z,EAAE4C,MAAM,GAAU5C,CAAC,CAAjE,CAAmEA,GAAGE,EAAED,EAAEijF,SAAS,IAAI7/E,EAAEpD,GAAG,IAAI0D,EAAE1D,KAAI,IAAKD,EAAE2mQ,UAAUpgQ,EAAEvG,EAAEknE,OAAO3gE,EAAEvG,EAAEyR,IAAIvR,EAAE,IAAI8C,EAAE/C,IAAIsD,EAAE8hzC,MAAMrlzC,aAAaqlzC,MAAMrlzC,aAAaG,UAAUD,EAAE,IAAIwB,EAAEzB,IAAWC,EAAEyoB,OAAO3oB,EAAE,EAAEslzC,QAAQ,SAAStlzC,EAAEC,GAAG,IAAIC,GAAE,EAAGuE,GAAE,EAAGR,EAAE,IAAIJ,EAAE,OAAOlC,EAAE,IAAIE,EAAEF,EAAEA,EAAEf,GAAE,EAAGa,EAAE,KAAKN,GAAE,GAAI,WAAW,GAAG,iBAAiBlB,EAApB,CAAyd,GAA5b,iBAAiBA,EAAE68P,WAAW34P,EAAEohzC,eAAe73xC,QAAO,SAAS1tB,GAAG,OAAO,IAAIC,EAAE68P,UAAUz7P,QAAQrB,EAAE,IAAGkB,SAAS+C,EAAEhE,EAAE68P,YAAY,kBAAkB78P,EAAEulzC,QAAQ,mBAAmBvlzC,EAAEulzC,QAAQllzC,MAAMkS,QAAQvS,EAAEulzC,WAAWtlzC,EAAED,EAAEulzC,QAAQ,kBAAkBvlzC,EAAEwlzC,gBAAgB,iBAAiBxlzC,EAAEwlzC,iBAAiB7kzC,EAAEX,EAAEwlzC,gBAAgB,iBAAiBxlzC,EAAEy0/B,UAAU7w/B,EAAE5D,EAAEy0/B,SAAS,iBAAiBz0/B,EAAEylzC,YAAY/jzC,EAAE1B,EAAEylzC,WAAW,kBAAkBzlzC,EAAEy1B,SAASjxB,EAAExE,EAAEy1B,QAAWp1B,MAAMkS,QAAQvS,EAAEy4O,SAAS,CAAC,GAAG,IAAIz4O,EAAEy4O,QAAQx3O,OAAO,MAAM,IAAImnB,MAAM,2BAA2B5mB,EAAExB,EAAEy4O,OAAO,MAAC,IAASz4O,EAAE0lzC,aAAa9jzC,EAAE5B,EAAE0lzC,WAAWhkzC,IAAI,kBAAkB1B,EAAE2lzC,gBAAgB3lzC,EAAE2lzC,0BAA0Bh9wC,UAAUznC,EAAElB,EAAE2lzC,0BAA0Bh9wC,OAAO3oC,EAAE2lzC,eAAe,kBAAptB,CAAsuB,CAA7wB,GAAixB,IAAI1izC,EAAE,IAAI0lC,OAAO/hC,EAAElF,GAAG,KAA2C,GAAtC,iBAAiB3B,IAAIA,EAAEmb,KAAKiS,MAAMptB,IAAOM,MAAMkS,QAAQxS,GAAG,CAAC,IAAIA,EAAEkB,QAAQZ,MAAMkS,QAAQxS,EAAE,IAAI,OAAOyD,EAAE,KAAKzD,EAAEY,GAAG,GAAG,iBAAiBZ,EAAE,GAAG,OAAOyD,EAAEhC,GAAGtB,OAAOgU,KAAKnU,EAAE,IAAIA,EAAEY,EAAE,MAAM,GAAG,iBAAiBZ,EAAE,MAAM,iBAAiBA,EAAEqQ,OAAOrQ,EAAEqQ,KAAK8K,KAAKiS,MAAMptB,EAAEqQ,OAAO/P,MAAMkS,QAAQxS,EAAEqQ,QAAQrQ,EAAEirC,SAASjrC,EAAEirC,OAAOjrC,EAAE0wU,MAAM1wU,EAAE0wU,KAAKzlS,QAAQxpC,GAAGzB,EAAEirC,SAASjrC,EAAEirC,OAAO3qC,MAAMkS,QAAQxS,EAAEqQ,KAAK,IAAIrQ,EAAEirC,OAAO,iBAAiBjrC,EAAEqQ,KAAK,GAAGlQ,OAAOgU,KAAKnU,EAAEqQ,KAAK,IAAI,IAAI/P,MAAMkS,QAAQxS,EAAEqQ,KAAK,KAAK,iBAAiBrQ,EAAEqQ,KAAK,KAAKrQ,EAAEqQ,KAAK,CAACrQ,EAAEqQ,QAAQ5M,EAAEzD,EAAEirC,QAAQ,GAAGjrC,EAAEqQ,MAAM,GAAGzP,GAAG,MAAM,IAAIynB,MAAM,0CAA0C,SAAS5kB,EAAEzD,EAAEC,EAAEW,GAAG,IAAIa,EAAE,GAAG,iBAAiBzB,IAAIA,EAAEmb,KAAKiS,MAAMptB,IAAI,iBAAiBC,IAAIA,EAAEkb,KAAKiS,MAAMntB,IAAI,IAAIC,EAAEI,MAAMkS,QAAQxS,IAAI,EAAEA,EAAEkB,OAAOS,GAAGrB,MAAMkS,QAAQvS,EAAE,IAAI,GAAGC,GAAGuE,EAAE,CAAC,IAAI,IAAI5C,EAAE,EAAEA,EAAE7B,EAAEkB,OAAOW,IAAI,EAAEA,IAAIJ,GAAGwC,GAAGxC,GAAGqC,EAAE9D,EAAE6B,GAAGA,GAAG,EAAE5B,EAAEiB,SAASO,GAAGoC,EAAE,CAAC,IAAI,IAAI1C,EAAE,EAAEA,EAAElB,EAAEiB,OAAOC,IAAI,CAAC,IAAI+B,EAAEhD,EAAEF,EAAEkB,OAAOjB,EAAEkB,GAAGD,OAAOuC,GAAE,EAAGF,EAAErD,EAAE,IAAIC,OAAOgU,KAAKlU,EAAEkB,IAAID,OAAO,IAAIjB,EAAEkB,GAAGD,OAAO,GAAGN,IAAIV,IAAIuD,EAAE,WAAW7C,EAAE,KAAKX,EAAEkB,GAAGuM,KAAK,IAAIwlB,OAAO,IAAIjzB,EAAEkB,GAAGD,QAAQ,IAAIjB,EAAEkB,GAAG,GAAGD,QAAQ,WAAWN,GAAGV,EAAE,CAAC,IAAI,IAAIsD,EAAE,GAAGH,EAAE,EAAEA,EAAEH,EAAEG,IAAI,CAAC,IAAI3B,EAAEC,EAAE3B,EAAEqD,GAAGA,EAAEG,EAAEd,KAAKzC,EAAEkB,GAAGO,GAAG,CAAC+B,EAAE,KAAKD,EAAEkK,KAAK,IAAIwlB,MAAM,CAAC,IAAIzvB,EAAE,CAAC,IAAI,IAAIE,EAAE,EAAEA,EAAET,EAAES,IAAI,CAAC,EAAEA,IAAIJ,IAAI9B,GAAGwC,GAAG,IAAIjB,EAAE9C,GAAGyB,EAAE3B,EAAE2D,GAAGA,EAAElC,GAAGqC,EAAE7D,EAAEkB,GAAG6B,GAAGW,EAAE,CAACxC,EAAElB,EAAEiB,OAAO,KAAKN,GAAG,EAAEsC,IAAIK,KAAK9B,GAAGoC,EAAE,CAAC,CAAC,OAAOpC,CAAC,CAAC,SAASqC,EAAE9D,EAAEC,GAAG,GAAG,MAAMD,EAAE,MAAM,GAAG,GAAGA,EAAEc,cAAcurB,KAAK,OAAOlR,KAAKb,UAAUta,GAAG4C,MAAM,EAAE,IAAI,IAAIhC,GAAE,EAAGO,GAAG,iBAAiBnB,GAAGmB,EAAE+K,KAAKlM,KAAKA,EAAE,IAAIA,EAAEY,GAAE,GAAI,IAAIa,EAAEzB,EAAEoF,WAAWkI,QAAQpK,EAAErB,GAAG,OAAOjB,EAAEA,IAAG,IAAKV,GAAG,mBAAmBA,GAAGA,EAAEF,EAAEC,IAAIK,MAAMkS,QAAQtS,IAAIA,EAAED,IAAI,SAASD,EAAEC,GAAG,IAAI,IAAIW,EAAE,EAAEA,EAAEX,EAAEiB,OAAON,IAAI,IAAI,EAAEZ,EAAEqB,QAAQpB,EAAEW,IAAI,OAAM,EAAG,OAAM,CAAE,CAAhF,CAAkFa,EAAE0C,EAAEohzC,kBAAkB,EAAE9jzC,EAAEJ,QAAQ4C,IAAI,MAAMxC,EAAEiY,OAAO,IAAI,MAAMjY,EAAEiY,OAAOjY,EAAEP,OAAO,IAAIS,EAAEF,EAAEE,EAAEF,CAAC,CAAC,GAAG,GAAG0C,EAAE0hzC,WAAWllzC,OAAO4nB,aAAa,IAAIpkB,EAAE2hzC,SAASnlzC,OAAO4nB,aAAa,IAAIpkB,EAAE4hzC,gBAAgB,SAAS5hzC,EAAEohzC,eAAe,CAAC,KAAK,KAAK,IAAIphzC,EAAE4hzC,iBAAiB5hzC,EAAE0gzC,mBAAmB3kzC,KAAKqD,EAAE80B,OAAOl0B,EAAEihzC,kBAAkB,EAAEjhzC,EAAE6hzC,eAAe,SAAS7hzC,EAAE8hzC,gBAAgB,QAAQ9hzC,EAAE+hzC,iBAAiB,IAAI/hzC,EAAEgizC,OAAO5gzC,EAAEpB,EAAEiizC,aAAaxlzC,EAAEuD,EAAEkizC,gBAAgBhjzC,EAAEc,EAAEmizC,aAAa5kzC,EAAEyC,EAAEoizC,eAAe5izC,EAAEQ,EAAEqizC,uBAAuBxjzC,EAAEO,EAAEkjzC,OAAO,CAAC,IAAIjjzC,EAAED,EAAEkjzC,OAAOjjzC,EAAEuO,GAAGqb,MAAM,SAASjsB,GAAG,IAAIP,EAAEO,EAAEw7T,QAAQ,CAAC,EAAEz5T,EAAE,GAAG,OAAOrC,KAAKgixB,MAAK,SAAS7ixB,GAAG,GAAK,UAAUwD,EAAE3C,MAAMwsJ,KAAK,WAAW57F,eAAe,SAASjuD,EAAE3C,MAAMiuhB,KAAK,QAAQ1+gB,gBAAe7M,EAAEukQ,aAAcjnQ,KAAKm0sB,OAAO,IAAIn0sB,KAAKm0sB,MAAM9zsB,OAAO,OAAM,EAAG,IAAI,IAAIjB,EAAE,EAAEA,EAAEY,KAAKm0sB,MAAM9zsB,OAAOjB,IAAIiD,EAAER,KAAK,CAACg36B,KAAK746B,KAAKm0sB,MAAM/0sB,GAAGymzC,UAAU7lzC,KAAKk+6B,eAAev76B,EAAE0mZ,OAAO,CAAC,EAAEtpZ,IAAI,IAAGZ,IAAIa,KAAK,SAASb,IAAI,GAAG,IAAIkD,EAAEhC,OAAO,CAAC,IAAMjB,EAAEW,EAAEa,EAAEvB,EAAEgD,EAAE,GAAG,GAAGqD,EAAEpF,EAAEi6P,QAAQ,CAAC,IAAIz5P,EAAER,EAAEi6P,OAAOl7P,EAAEw56B,KAAKx56B,EAAEwmzC,WAAW,GAAG,iBAAiB/kzC,EAAE,CAAC,GAAG,UAAUA,EAAEwqE,OAAO,MAAS,aAAalsE,EAAEC,EAAEw56B,KAAK946B,EAAEV,EAAEwmzC,UAAUjlzC,EAAEE,EAAE4kB,YAAYhgB,EAAEpF,EAAEwB,QAAQxB,EAAEwB,MAAM,CAAC4I,KAAzE,cAAiFtL,EAAEW,EAAEa,IAAI,GAAG,SAASE,EAAEwqE,OAAO,YAAY1oE,IAAI,iBAAiB9B,EAAEg7T,SAASz8T,EAAE6+6B,eAAev76B,EAAE0mZ,OAAOhqZ,EAAE6+6B,eAAep96B,EAAEg7T,QAAQ,MAAM,GAAG,SAASh7T,EAAE,YAAY8B,GAAG,CAAC,IAAI5B,EAAE3B,EAAE6+6B,eAAer11B,SAASxpF,EAAE6+6B,eAAer11B,SAAS,SAAS1pF,GAAGuG,EAAE1E,IAAIA,EAAE7B,EAAEE,EAAEw56B,KAAKx56B,EAAEwmzC,WAAWjjzC,GAAG,EAAEU,EAAEipB,MAAMltB,EAAEw56B,KAAKx56B,EAAE6+6B,eAAe,MAAMx46B,EAAEpF,EAAEuoF,WAAWvoF,EAAEuoF,UAAU,CAAC,SAASjmF,IAAIP,EAAE4gB,OAAO,EAAE,GAAG9jB,GAAG,CAAC,CAAC,CAAC,SAASyD,EAAEzD,GAAGa,KAAK8gK,QAAQ,KAAK9gK,KAAK44Z,WAAU,EAAG54Z,KAAK8lzC,YAAW,EAAG9lzC,KAAK+lzC,SAAQ,EAAG/lzC,KAAKqlwC,OAAO,KAAKrlwC,KAAKgmzC,WAAW,EAAEhmzC,KAAKimzC,aAAa,GAAGjmzC,KAAKkmzC,UAAU,EAAElmzC,KAAKy2kC,OAAO,EAAEz2kC,KAAKmmzC,WAAW,KAAKnmzC,KAAKomzC,cAAa,EAAGpmzC,KAAKqmzC,iBAAiB,CAAC72yC,KAAK,GAAGy7U,OAAO,GAAGpb,KAAK,CAAC,GAAG,SAAS1wU,GAAG,IAAIC,EAAEmE,EAAEpE,GAAGC,EAAEqtQ,UAAU92O,SAASv2B,EAAEqtQ,WAAWttQ,EAAEuvW,MAAMvvW,EAAEgnE,QAAQ/mE,EAAEqtQ,UAAU,MAAMzsQ,KAAK8gK,QAAQ,IAAI/gK,EAAEX,IAAIY,KAAK8gK,QAAQwlpC,SAAStmzC,MAAMumzC,QAAQnnzC,CAAC,EAAEQ,KAAKI,KAAKb,GAAGa,KAAKwmzC,WAAW,SAASrnzC,EAAEC,GAAG,GAAGY,KAAKomzC,cAAc1gzC,EAAE1F,KAAKumzC,QAAQE,kBAAkB,CAAC,IAAI1mzC,EAAEC,KAAKumzC,QAAQE,iBAAiBtnzC,QAAG,IAASY,IAAIZ,EAAEY,EAAE,CAACC,KAAKomzC,cAAa,EAAGpmzC,KAAK+lzC,SAAQ,EAAG,IAAInlzC,EAAEZ,KAAKimzC,aAAa9mzC,EAAEa,KAAKimzC,aAAa,GAAG,IAAI5mzC,EAAEW,KAAK8gK,QAAQv0I,MAAM3rB,EAAEZ,KAAKgmzC,YAAYhmzC,KAAK44Z,WAAW,IAAI54Z,KAAK8gK,QAAQ4lpC,WAAW1mzC,KAAK8gK,QAAQr3I,UAAU,CAAC,IAAI3oB,EAAEzB,EAAEwwU,KAAKxuL,OAAOrhJ,KAAK44Z,YAAY54Z,KAAKimzC,aAAarlzC,EAAE02B,UAAUx2B,EAAEd,KAAKgmzC,YAAYhmzC,KAAKgmzC,WAAWllzC,GAAGzB,GAAGA,EAAEmQ,OAAOxP,KAAKkmzC,WAAW7mzC,EAAEmQ,KAAKnP,QAAQ,IAAIW,EAAEhB,KAAK44Z,WAAW54Z,KAAKumzC,QAAQ5x3B,SAAS30b,KAAKkmzC,WAAWlmzC,KAAKumzC,QAAQ5x3B,QAAQ,GAAGr0b,EAAEoC,EAAEivB,YAAY,CAAC6/E,QAAQnyG,EAAEilzC,SAAShhzC,EAAEqjzC,UAAU7kzB,SAAS9ggB,SAAS,GAAG0E,EAAE1F,KAAKumzC,QAAQpgvC,SAAS/mE,EAAE,CAAC,GAAGY,KAAKumzC,QAAQpgvC,MAAM9mE,EAAEW,KAAK8gK,SAAS9gK,KAAK8gK,QAAQ4lpC,UAAU1mzC,KAAK8gK,QAAQr3I,UAAU,YAAYzpB,KAAK+lzC,SAAQ,GAAI1mzC,OAAE,EAAOW,KAAKqmzC,sBAAiB,CAAM,CAAC,OAAOrmzC,KAAKumzC,QAAQ738B,MAAM1uW,KAAKumzC,QAAQpgvC,QAAQnmE,KAAKqmzC,iBAAiB72yC,KAAKxP,KAAKqmzC,iBAAiB72yC,KAAKxN,OAAO3C,EAAEmQ,MAAMxP,KAAKqmzC,iBAAiBp79B,OAAOjrV,KAAKqmzC,iBAAiBp79B,OAAOjpV,OAAO3C,EAAE4rV,QAAQjrV,KAAKqmzC,iBAAiBx2+B,KAAKxwU,EAAEwwU,MAAM7vU,KAAK8lzC,aAAa9kzC,IAAI0E,EAAE1F,KAAKumzC,QAAQ19tC,WAAWxpF,GAAGA,EAAEwwU,KAAKpmT,UAAUzpB,KAAKumzC,QAAQ19tC,SAAS7oF,KAAKqmzC,iBAAiBrmzC,KAAKqlwC,QAAQrlwC,KAAK8lzC,YAAW,GAAI9kzC,GAAG3B,GAAGA,EAAEwwU,KAAK62+B,QAAQ1mzC,KAAKmmzC,aAAa9mzC,CAAC,CAACW,KAAK+lzC,SAAQ,CAAE,EAAE/lzC,KAAK4mzC,WAAW,SAASznzC,GAAGuG,EAAE1F,KAAKumzC,QAAQzkzC,OAAO9B,KAAKumzC,QAAQzkzC,MAAM3C,GAAGmB,GAAGN,KAAKumzC,QAAQzkzC,OAAOY,EAAEivB,YAAY,CAAC2yxC,SAAShhzC,EAAEqjzC,UAAU7kzC,MAAM3C,EAAE2igB,UAAS,GAAI,CAAC,CAAC,SAASt/f,EAAErD,GAAG,IAAIyB,GAAGzB,EAAEA,GAAG,CAAC,GAAGstQ,YAAYttQ,EAAEstQ,UAAUnpQ,EAAE8hzC,iBAAiBxizC,EAAEhD,KAAKI,KAAKb,GAAGa,KAAKmmzC,WAAW9mzC,EAAE,WAAWW,KAAK6mzC,aAAa7mzC,KAAK8mzC,cAAc,EAAE,WAAW9mzC,KAAK6mzC,YAAY,EAAE7mzC,KAAK8nB,OAAO,SAAS3oB,GAAGa,KAAKqlwC,OAAOlmwC,EAAEa,KAAKmmzC,YAAY,EAAEnmzC,KAAK6mzC,WAAW,WAAW,GAAG7mzC,KAAK44Z,UAAU54Z,KAAK8mzC,mBAAmB,CAAC,GAAGlmzC,EAAE,IAAIynB,eAAeroB,KAAKumzC,QAAQ31xC,kBAAkBhwB,EAAEgwB,gBAAgB5wB,KAAKumzC,QAAQ31xC,iBAAiBvxB,IAAIuB,EAAE8vB,OAAOztB,EAAEjD,KAAK8mzC,aAAa9mzC,MAAMY,EAAE8uB,QAAQzsB,EAAEjD,KAAK+mzC,YAAY/mzC,OAAOY,EAAE8T,KAAK1U,KAAKumzC,QAAQS,oBAAoB,OAAO,MAAMhnzC,KAAKqlwC,QAAQhmwC,GAAGW,KAAKumzC,QAAQU,uBAAuB,CAAC,IAAI9nzC,EAAEa,KAAKumzC,QAAQU,uBAAuB,IAAI,IAAI7nzC,KAAKD,EAAEyB,EAAEkwB,iBAAiB1xB,EAAED,EAAEC,GAAG,CAAC,GAAGY,KAAKumzC,QAAQ95iC,UAAU,CAAC,IAAI1sQ,EAAEC,KAAKy2kC,OAAOz2kC,KAAKumzC,QAAQ95iC,UAAU,EAAE7rQ,EAAEkwB,iBAAiB,QAAQ,SAAS9wB,KAAKy2kC,OAAO,IAAI12kC,EAAE,CAAC,IAAIa,EAAE0nB,KAAKtoB,KAAKumzC,QAAQS,oBAAoB,CAAC,MAAM7nzC,GAAGa,KAAK+mzC,YAAY5nzC,EAAE4yB,QAAQ,CAAC1yB,GAAG,IAAIuB,EAAE6kB,QAAQzlB,KAAK+mzC,aAAa,CAAC,EAAE/mzC,KAAK8mzC,aAAa,WAAW,IAAIlmzC,EAAEowC,aAAapwC,EAAE6kB,OAAO,KAAK,KAAK7kB,EAAE6kB,OAAOzlB,KAAK+mzC,eAAe/mzC,KAAKy2kC,QAAQz2kC,KAAKumzC,QAAQ95iC,UAAUzsQ,KAAKumzC,QAAQ95iC,UAAU7rQ,EAAE2nB,aAAaloB,OAAOL,KAAK44Z,WAAW54Z,KAAKumzC,QAAQ95iC,WAAWzsQ,KAAKy2kC,QAAQ,SAASt3kC,GAAG,IAAIC,EAAED,EAAE+nzC,kBAAkB,iBAAiB,OAAG,OAAO9nzC,GAAS,EAASu2B,SAASv2B,EAAEk4B,UAAUl4B,EAAE6+K,YAAY,KAAK,GAAG,CAA9H,CAAgIr9K,GAAGZ,KAAKwmzC,WAAW5lzC,EAAE2nB,eAAe,EAAEvoB,KAAK+mzC,YAAY,SAAS5nzC,GAAG,IAAIC,EAAEwB,EAAEqvB,YAAY9wB,EAAEa,KAAK4mzC,WAAW,IAAIp/xC,MAAMpoB,GAAG,CAAC,CAAC,SAASyB,EAAE1B,GAAG,IAAIyB,EAAEvB,GAAGF,EAAEA,GAAG,CAAC,GAAGstQ,YAAYttQ,EAAEstQ,UAAUnpQ,EAAE6hzC,gBAAgBvizC,EAAEhD,KAAKI,KAAKb,GAAG,IAAI2B,EAAE,oBAAoBmmQ,WAAWjnQ,KAAK8nB,OAAO,SAAS3oB,GAAGa,KAAKqlwC,OAAOlmwC,EAAEE,EAAEF,EAAE4C,OAAO5C,EAAEgozC,aAAahozC,EAAEiozC,SAAStmzC,IAAIF,EAAE,IAAIqmQ,YAAYv2O,OAAOztB,EAAEjD,KAAK8mzC,aAAa9mzC,MAAMY,EAAE8uB,QAAQzsB,EAAEjD,KAAK+mzC,YAAY/mzC,OAAOY,EAAE,IAAIymzC,eAAernzC,KAAKmmzC,YAAY,EAAEnmzC,KAAKmmzC,WAAW,WAAWnmzC,KAAK44Z,WAAW54Z,KAAKumzC,QAAQ5x3B,WAAW30b,KAAKkmzC,UAAUlmzC,KAAKumzC,QAAQ5x3B,UAAU30b,KAAK6mzC,YAAY,EAAE7mzC,KAAK6mzC,WAAW,WAAW,IAAI1nzC,EAAEa,KAAKqlwC,OAAO,GAAGrlwC,KAAKumzC,QAAQ95iC,UAAU,CAAC,IAAIrtQ,EAAEyD,KAAKgL,IAAI7N,KAAKy2kC,OAAOz2kC,KAAKumzC,QAAQ95iC,UAAUzsQ,KAAKqlwC,OAAOzgvC,MAAMzlB,EAAEE,EAAEO,KAAKT,EAAEa,KAAKy2kC,OAAOr3kC,EAAE,CAAC,IAAIW,EAAEa,EAAE0mzC,WAAWnozC,EAAEa,KAAKumzC,QAAQ3+xC,UAAU9mB,GAAGd,KAAK8mzC,aAAa,CAACh3yC,OAAO,CAAC0T,OAAOzjB,IAAI,EAAEC,KAAK8mzC,aAAa,SAAS3nzC,GAAGa,KAAKy2kC,QAAQz2kC,KAAKumzC,QAAQ95iC,UAAUzsQ,KAAK44Z,WAAW54Z,KAAKumzC,QAAQ95iC,WAAWzsQ,KAAKy2kC,QAAQz2kC,KAAKqlwC,OAAOzgvC,KAAK5kB,KAAKwmzC,WAAWrnzC,EAAE2Q,OAAO0T,OAAO,EAAExjB,KAAK+mzC,YAAY,WAAW/mzC,KAAK4mzC,WAAWhmzC,EAAEkB,MAAM,CAAC,CAAC,SAASgB,EAAE3D,GAAG,IAAIY,EAAE6C,EAAEhD,KAAKI,KAAKb,EAAEA,GAAG,CAAC,GAAGa,KAAK8nB,OAAO,SAAS3oB,GAAG,OAAOY,EAAEZ,EAAEa,KAAKmmzC,YAAY,EAAEnmzC,KAAKmmzC,WAAW,WAAW,IAAInmzC,KAAK44Z,UAAU,CAAC,IAAIz5Z,EAAEC,EAAEY,KAAKumzC,QAAQ95iC,UAAU,OAAOrtQ,GAAGD,EAAEY,EAAEu3B,UAAU,EAAEl4B,GAAGW,EAAEA,EAAEu3B,UAAUl4B,KAAKD,EAAEY,EAAEA,EAAE,IAAIC,KAAK44Z,WAAW74Z,EAAEC,KAAKwmzC,WAAWrnzC,EAAE,CAAC,CAAC,CAAC,SAASgD,EAAEhD,GAAGyD,EAAEhD,KAAKI,KAAKb,EAAEA,GAAG,CAAC,GAAG,IAAIC,EAAE,GAAGW,GAAE,EAAGa,GAAE,EAAGZ,KAAKgsT,MAAM,WAAWppT,EAAElD,UAAUssT,MAAMzrT,MAAMP,KAAKI,WAAWJ,KAAKqlwC,OAAOr58B,OAAO,EAAEhsT,KAAK4g9B,OAAO,WAAWh+8B,EAAElD,UAAUkh9B,OAAOrg9B,MAAMP,KAAKI,WAAWJ,KAAKqlwC,OAAOzkT,QAAQ,EAAE5g9B,KAAK8nB,OAAO,SAAS3oB,GAAGa,KAAKqlwC,OAAOlmwC,EAAEa,KAAKqlwC,OAAOz0vC,GAAG,OAAO5Q,KAAKunzC,aAAavnzC,KAAKqlwC,OAAOz0vC,GAAG,MAAM5Q,KAAKwnzC,YAAYxnzC,KAAKqlwC,OAAOz0vC,GAAG,QAAQ5Q,KAAKynzC,aAAa,EAAEznzC,KAAK0nzC,iBAAiB,WAAW9mzC,GAAG,IAAIxB,EAAEiB,SAASL,KAAK44Z,WAAU,EAAG,EAAE54Z,KAAKmmzC,WAAW,WAAWnmzC,KAAK0nzC,mBAAmBtozC,EAAEiB,OAAOL,KAAKwmzC,WAAWpnzC,EAAE++C,SAASp+C,GAAE,CAAE,EAAEC,KAAKunzC,YAAYtkzC,GAAE,SAAS9D,GAAG,IAAIC,EAAEyC,KAAK,iBAAiB1C,EAAEA,EAAEA,EAAEoF,SAASvE,KAAKumzC,QAAQ3+xC,WAAW7nB,IAAIA,GAAE,EAAGC,KAAK0nzC,mBAAmB1nzC,KAAKwmzC,WAAWpnzC,EAAE++C,SAAS,CAAC,MAAMh/C,GAAGa,KAAKynzC,aAAatozC,EAAE,CAAC,GAAEa,MAAMA,KAAKynzC,aAAaxkzC,GAAE,SAAS9D,GAAGa,KAAK2nzC,iBAAiB3nzC,KAAK4mzC,WAAWznzC,EAAE,GAAEa,MAAMA,KAAKwnzC,WAAWvkzC,GAAE,WAAWjD,KAAK2nzC,iBAAiB/mzC,GAAE,EAAGZ,KAAKunzC,YAAY,GAAG,GAAEvnzC,MAAMA,KAAK2nzC,eAAe1kzC,GAAE,WAAWjD,KAAKqlwC,OAAOxypC,eAAe,OAAO7yG,KAAKunzC,aAAavnzC,KAAKqlwC,OAAOxypC,eAAe,MAAM7yG,KAAKwnzC,YAAYxnzC,KAAKqlwC,OAAOxypC,eAAe,QAAQ7yG,KAAKynzC,aAAa,GAAEznzC,KAAK,CAAC,SAASD,EAAEqD,GAAG,IAAIpC,EAAEV,EAAE+B,EAAEzB,EAAEiC,KAAK6yF,IAAI,EAAE,IAAIr2F,GAAGuB,EAAEE,EAAE,mDAAmD8B,EAAE,qNAAqNxD,EAAEY,KAAKD,EAAE,EAAE2C,EAAE,EAAEC,GAAE,EAAGxD,GAAE,EAAGqD,EAAE,GAAG3B,EAAE,CAAC2O,KAAK,GAAGy7U,OAAO,GAAGpb,KAAK,CAAC,GAAG,GAAGnqU,EAAEtC,EAAEsrW,MAAM,CAAC,IAAI5rW,EAAEM,EAAEsrW,KAAKtrW,EAAEsrW,KAAK,SAASvvW,GAAG,GAAG0B,EAAE1B,EAAEyE,IAAIzB,QAAQ,CAAC,GAAGA,IAAI,IAAItB,EAAE2O,KAAKnP,OAAO,OAAON,GAAGZ,EAAEqQ,KAAKnP,OAAO+C,EAAEuxb,SAAS50b,EAAEqD,EAAEuxb,QAAQr0b,EAAE2wB,SAASpwB,EAAE2O,KAAK3O,EAAE2O,KAAK,GAAG1M,EAAEjC,EAAEzB,GAAG,CAAC,CAAC,CAAC,SAAS4D,EAAE7D,GAAG,MAAM,WAAWiE,EAAEwhzC,eAAe,KAAKzlzC,EAAE0N,KAAK,IAAIwlB,OAAO,IAAIlzB,EAAEkB,QAAQ,IAAIlB,EAAE,GAAGkB,MAAM,CAAC,SAAS8B,IAAI,OAAOtB,GAAGwB,IAAIqB,EAAE,YAAY,wBAAwB,6DAA6DJ,EAAE+hzC,iBAAiB,KAAKhjzC,GAAE,GAAIe,EAAEwhzC,iBAAiB/jzC,EAAE2O,KAAK3O,EAAE2O,KAAKqd,QAAO,SAAS1tB,GAAG,OAAO6D,EAAE7D,EAAE,KAAIyE,KAAK,WAAW,GAAI/C,EAAoF,GAAGpB,MAAMkS,QAAQ9Q,EAAE2O,KAAK,IAAI,CAAC,IAAI,IAAIpQ,EAAE,EAAEwE,KAAKxE,EAAEyB,EAAE2O,KAAKnP,OAAOjB,IAAIyB,EAAE2O,KAAKpQ,GAAG8lB,QAAQ/lB,GAAG0B,EAAE2O,KAAKyT,OAAO,EAAE,EAAE,MAAMpiB,EAAE2O,KAAK0V,QAAQ/lB,GAAzM,SAASA,EAAEA,EAAEC,GAAGsG,EAAEtC,EAAEwkzC,mBAAmBzozC,EAAEiE,EAAEwkzC,gBAAgBzozC,EAAEC,IAAIoD,EAAEX,KAAK1C,EAAE,CAAiI,CAAnO,GAAuO,WAAW,IAAI0B,IAAIuC,EAAEyxB,SAASzxB,EAAE0gzC,gBAAgB1gzC,EAAEw/H,UAAU,OAAO/hI,EAAE,SAAS1B,EAAEA,EAAEC,GAAG,IAAIW,EAAEa,EAAEwC,EAAEyxB,OAAO,CAAC,EAAE,GAAG,IAAI90B,EAAE,EAAEA,EAAEZ,EAAEkB,OAAON,IAAI,CAAC,IAAIV,EAAEU,EAAEe,EAAE3B,EAAEY,GAAGqD,EAAEyxB,SAASx1B,EAAEU,GAAGyC,EAAEnC,OAAO,iBAAiBmC,EAAEzC,IAAIqD,EAAEw/H,YAAY9hI,EAAEsC,EAAEw/H,UAAU9hI,EAAEzB,IAAIyB,EAAEmC,EAAE5D,EAAEyB,GAAG,mBAAmBzB,GAAGuB,EAAEvB,GAAGuB,EAAEvB,IAAI,GAAGuB,EAAEvB,GAAGwC,KAAKf,IAAIF,EAAEvB,GAAGyB,CAAC,CAAC,OAAOsC,EAAEyxB,SAAS90B,EAAEyC,EAAEnC,OAAOqD,EAAE,gBAAgB,gBAAgB,6BAA6BlB,EAAEnC,OAAO,sBAAsBN,EAAE2C,EAAEtD,GAAGW,EAAEyC,EAAEnC,QAAQqD,EAAE,gBAAgB,eAAe,4BAA4BlB,EAAEnC,OAAO,sBAAsBN,EAAE2C,EAAEtD,IAAIwB,CAAC,CAAC,IAAIxB,EAAE,EAAyI,OAAtIyB,EAAE2O,KAAKnP,QAAQZ,MAAMkS,QAAQ9Q,EAAE2O,KAAK,KAAK3O,EAAE2O,KAAK3O,EAAE2O,KAAK6f,IAAIlwB,GAAGC,EAAEyB,EAAE2O,KAAKnP,QAAQQ,EAAE2O,KAAKrQ,EAAE0B,EAAE2O,KAAK,GAAGpM,EAAEyxB,QAAQh0B,EAAEgvU,OAAOhvU,EAAEgvU,KAAKzlS,OAAO5nC,GAAUE,GAAGtD,EAAEyB,CAAC,CAAvrB,EAA0rB,CAAC,SAAS+C,IAAI,OAAOR,EAAEyxB,QAAQ,IAAIryB,EAAEnC,MAAM,CAAC,SAAS4C,EAAE9D,EAAEC,GAAG,OAAOW,EAAEZ,EAAEiE,EAAE2gzC,4BAAuB,IAAS3gzC,EAAE0gzC,cAAc/jzC,KAAKqD,EAAE0gzC,cAAc/jzC,GAAGqD,EAAE2gzC,sBAAsBhkzC,KAAI,KAAMqD,EAAE0gzC,cAAc/jzC,IAAIqD,EAAE0gzC,eAAe,SAAS1kzC,GAAG,SAASA,GAAG,UAAUA,GAAG,UAAUA,IAAI,SAASD,GAAG,GAAG2B,EAAEuK,KAAKlM,GAAG,CAAC,IAAIC,EAAEirK,WAAWlrK,GAAG,GAAGE,EAAED,GAAGA,EAAEwB,EAAE,OAAM,CAAE,CAAC,OAAM,CAAE,CAA3E,CAA6ExB,GAAGirK,WAAWjrK,GAAGwD,EAAEyI,KAAKjM,GAAG,IAAIosB,KAAKpsB,GAAG,KAAKA,EAAE,KAAKA,GAAGA,EAAE,IAAIW,CAAC,CAAC,SAAS2D,EAAEvE,EAAEC,EAAEW,EAAEa,GAAG,IAAIvB,EAAE,CAACkN,KAAKpN,EAAE+7B,KAAK97B,EAAE2yB,QAAQhyB,QAAG,IAASa,IAAIvB,EAAE2jI,IAAIpiI,GAAGC,EAAEoqV,OAAOppV,KAAKxC,EAAE,CAACW,KAAKusB,MAAM,SAASptB,EAAEC,EAAEW,GAAG,IAAIa,EAAEwC,EAAEyhzC,WAAW,IAAI,GAAGzhzC,EAAEyw/B,UAAUzw/B,EAAEyw/B,QAAQ,SAAS10/B,EAAEC,GAAGD,EAAEA,EAAEm4B,UAAU,EAAE,SAAS,IAAIv3B,EAAE,IAAIgoC,OAAO/hC,EAAE5G,GAAG,UAAU4G,EAAE5G,GAAG,MAAMwB,GAAGzB,EAAEA,EAAEsN,QAAQ1M,EAAE,KAAK6E,MAAM,MAAMvF,EAAEF,EAAEyF,MAAM,MAAM9D,EAAE,EAAEzB,EAAEgB,QAAQhB,EAAE,GAAGgB,OAAOO,EAAE,GAAGP,OAAO,GAAG,IAAIO,EAAEP,QAAQS,EAAE,MAAM,KAAK,IAAI,IAAIE,EAAE,EAAEV,EAAE,EAAEA,EAAEM,EAAEP,OAAOC,IAAI,OAAOM,EAAEN,GAAG,IAAIU,IAAI,OAAOA,GAAGJ,EAAEP,OAAO,EAAE,OAAO,IAAI,CAA3R,CAA6RlB,EAAEyB,IAAIyB,GAAE,EAAGe,EAAE64P,UAAUv2P,EAAEtC,EAAE64P,aAAa74P,EAAE64P,UAAU74P,EAAE64P,UAAU98P,GAAG0B,EAAEgvU,KAAK5zE,UAAU74P,EAAE64P,eAAe,CAAC,IAAI58P,EAAE,SAASF,EAAEC,EAAEW,EAAEa,EAAEvB,GAAG,IAAIyB,EAAEE,EAAEV,EAAE+B,EAAEhD,EAAEA,GAAG,CAAC,IAAI,KAAK,IAAI,IAAIiE,EAAE0hzC,WAAW1hzC,EAAE2hzC,UAAU,IAAI,IAAIrizC,EAAE,EAAEA,EAAEvD,EAAEgB,OAAOuC,IAAI,CAAC,IAAIF,EAAErD,EAAEuD,GAAGD,EAAE,EAAEH,EAAE,EAAE3B,EAAE,EAAEP,OAAE,EAAO,IAAI,IAAIwC,EAAE,IAAI4B,EAAE,CAACmjzC,SAASjnzC,EAAEq7P,UAAUv5P,EAAEmx/B,QAAQz0/B,EAAEu1b,QAAQ,KAAKpoa,MAAMptB,GAAGgD,EAAE,EAAEA,EAAEW,EAAE0M,KAAKnP,OAAO8B,IAAI,GAAGpC,GAAGiD,EAAEF,EAAE0M,KAAKrN,IAAItB,QAAQ,CAAC,IAAI+C,EAAEd,EAAE0M,KAAKrN,GAAG9B,OAAOmC,GAAGoB,OAAE,IAAStD,EAAE,EAAEsD,IAAIjB,GAAGE,KAAKmjH,IAAIpiH,EAAEtD,GAAGA,EAAEsD,GAAGtD,EAAEsD,CAAC,CAAC,EAAEd,EAAE0M,KAAKnP,SAASmC,GAAGM,EAAE0M,KAAKnP,OAAOQ,SAAI,IAASG,GAAG2B,GAAG3B,UAAK,IAASqB,GAAGA,EAAEG,IAAI,KAAKA,IAAIxB,EAAE2B,EAAE7B,EAAE4B,EAAEL,EAAEG,EAAE,CAAC,MAAM,CAACslzC,cAAc1kzC,EAAE64P,UAAUn7P,GAAGinzC,cAAcjnzC,EAAE,CAAte,CAAwe3B,EAAEiE,EAAEyw/B,QAAQzw/B,EAAEwhzC,eAAexhzC,EAAEykzC,SAASzkzC,EAAE4kzC,mBAAmB3ozC,EAAEyozC,WAAW1kzC,EAAE64P,UAAU58P,EAAE0ozC,eAAe1lzC,GAAE,EAAGe,EAAE64P,UAAU34P,EAAE+hzC,kBAAkBxkzC,EAAEgvU,KAAK5zE,UAAU74P,EAAE64P,SAAS,CAAC,IAAIn7P,EAAEyC,EAAEH,GAAG,OAAOA,EAAEuxb,SAASvxb,EAAEyxB,QAAQ/zB,EAAE6zb,UAAU3zb,EAAE7B,EAAEmB,EAAE,IAAIoE,EAAE5D,GAAGD,EAAEP,EAAEisB,MAAMvrB,EAAE5B,EAAEW,GAAGoC,IAAIQ,EAAE,CAACktU,KAAK,CAAC62+B,QAAO,IAAK7lzC,GAAG,CAACgvU,KAAK,CAAC62+B,QAAO,GAAI,EAAE1mzC,KAAK0mzC,OAAO,WAAW,OAAO/jzC,CAAC,EAAE3C,KAAKgsT,MAAM,WAAWrpT,GAAE,EAAGrC,EAAE2wB,QAAQjwB,EAAE0E,EAAEtC,EAAE+iE,OAAO,GAAGnlE,EAAEs2B,UAAUh3B,EAAE2nzC,eAAe,EAAEjozC,KAAK4g9B,OAAO,WAAWxh9B,EAAEknzC,SAASP,SAASpjzC,GAAE,EAAGvD,EAAEknzC,SAASE,WAAWxlzC,GAAE,IAAK6kB,WAAWzmB,EAAEwh9B,OAAO,EAAE,EAAE5g9B,KAAKypB,QAAQ,WAAW,OAAOtqB,CAAC,EAAEa,KAAKixB,MAAM,WAAW9xB,GAAE,EAAGmB,EAAE2wB,QAAQpwB,EAAEgvU,KAAKpmT,SAAQ,EAAG/jB,EAAEtC,EAAEylF,WAAWzlF,EAAEylF,SAAShoF,GAAGG,EAAE,EAAE,CAAC,CAAC,SAASgF,EAAE7G,GAAG,OAAOA,EAAEsN,QAAQ,sBAAsB,OAAO,CAAC,SAAS/H,EAAEN,GAAG,IAAIuB,EAAEE,GAAGzB,EAAEA,GAAG,CAAC,GAAG63P,UAAUn3P,EAAEV,EAAEyv/B,QAAQxu/B,EAAEjB,EAAEyjzC,SAAS3hzC,EAAE9B,EAAEsqW,KAAKxpW,EAAEd,EAAEuwb,QAAQ5ub,EAAE3B,EAAE8jzC,SAASjjzC,EAAEU,OAAE,IAASvB,EAAEygzC,WAAW,OAAOzgzC,EAAEygzC,UAAU,IAAIzgzC,EAAEygzC,UAAU,QAAG,IAASzgzC,EAAE0gzC,aAAa7/yC,EAAEb,EAAE0gzC,aAAa,iBAAiBj/yC,IAAI,EAAEvC,EAAEohzC,eAAelkzC,QAAQqF,MAAMA,EAAE,KAAKR,IAAIQ,EAAE,MAAM,IAAI2hB,MAAM,wCAAuC,IAAKniB,EAAEA,EAAE,KAAK,iBAAiBA,IAAI,EAAE/B,EAAEohzC,eAAelkzC,QAAQ6E,MAAMA,GAAE,GAAI,OAAOP,GAAG,OAAOA,GAAG,SAASA,IAAIA,EAAE,MAAM,IAAIN,EAAE,EAAEgB,GAAE,EAAGxF,KAAKusB,MAAM,SAAS3rB,EAAExB,EAAEW,GAAG,GAAG,iBAAiBa,EAAE,MAAM,IAAI4mB,MAAM,0BAA0B,IAAInoB,EAAEuB,EAAEP,OAAOlB,EAAE0G,EAAExF,OAAOS,EAAEgE,EAAEzE,OAAOW,EAAEqE,EAAEhF,OAAOC,EAAEoF,EAAEQ,GAAG7D,EAAE,GAAGO,EAAE,GAAGF,EAAE,GAAGC,EAAE6B,EAAE,EAAE,IAAI5D,EAAE,OAAOyD,IAAI,GAAGD,EAAEywB,SAASz1B,EAAE,CAAC,IAAIoD,EAAE5B,EAAEgE,MAAME,GAAG,GAAGF,MAAMiB,GAAGhF,EAAE,GAAGiC,EAAE,CAAC,EAAEX,GAAE,EAAG,IAAI,IAAIyB,KAAKpB,EAAE,CAAC,IAAIY,EAAEZ,EAAEoB,GAAG8B,EAAEtB,EAAEwjzC,mBAAmBxkzC,EAAEgB,EAAEwjzC,gBAAgBxkzC,EAAEQ,IAAI,IAAIZ,EAAEI,EAAEH,EAAEH,EAAEM,IAAI,EAAE,IAAI,EAAEH,IAAId,GAAE,EAAGa,EAAEI,EAAE,IAAIH,GAAGH,EAAEM,GAAGH,EAAE,EAAEpC,EAAEuN,SAASpL,IAAIA,EAAEA,EAAE,IAAIC,EAAEpC,EAAEgB,KAAKmB,EAAE,CAAC,GAAGb,EAAE,CAAC,IAAIuB,EAAE9C,EAAEgE,MAAME,GAAGpB,EAAE,GAAG7C,EAAEgM,KAAKhH,GAAGjF,EAAE8C,EAAEmJ,KAAK/H,EAAE,CAAC,CAAC,GAAGiB,IAAG,IAAKA,IAAI,IAAInF,EAAEJ,QAAQmF,GAAG,CAAC,IAAI,IAAIrC,EAAE1C,EAAEgE,MAAME,GAAGJ,EAAE,EAAEA,EAAEpB,EAAEjD,OAAOqE,IAAI,CAAC,GAAGhC,EAAEY,EAAEoB,GAAGF,GAAG9B,EAAErC,OAAOqE,IAAIpB,EAAEjD,OAAO,EAAEmE,GAAGM,EAAEzE,YAAY,GAAGN,EAAE,OAAOsE,IAAI,IAAIgB,GAAG3C,EAAE40B,UAAU,EAAEt2B,KAAKqE,EAAE,CAAC,GAAG/E,GAAG,GAAG+B,EAAE,GAAGwB,EAAEnB,EAAEkC,MAAMiB,IAAIb,IAAIQ,EAAE,OAAOnB,SAASR,EAAEnB,EAAEkC,MAAMiB,IAAI,GAAGX,GAAGA,GAAGR,EAAE,OAAOrC,EAAEA,EAAEN,MAAM,EAAEmD,GAAGb,GAAE,EAAG,CAAC,CAAC,OAAOA,GAAG,CAAC,IAAI,IAAId,EAAE3C,EAAEJ,QAAQqF,EAAErB,GAAGF,EAAE1D,EAAEJ,QAAQsE,EAAEN,GAAGL,EAAE,IAAI4jC,OAAO/hC,EAAEf,GAAGe,EAAEL,GAAG,KAAKnC,EAAE5C,EAAEJ,QAAQmF,EAAEnB,KAAK,GAAG5D,EAAE4D,KAAKmB,EAAE,GAAGN,GAAG,IAAI3C,EAAErC,QAAQO,EAAE02B,UAAU9yB,EAAEA,EAAExD,KAAKqE,EAAE,CAAC,IAAI,IAAIf,EAAE,OAAOD,IAAIG,EAAEF,EAAExD,EAAEwD,EAAE1D,EAAEJ,QAAQsE,EAAEN,GAAGjB,EAAE3C,EAAEJ,QAAQqF,EAAErB,EAAE,MAAM,IAAI,IAAIjB,IAAIA,EAAEe,IAAI,IAAIA,GAAG5B,EAAEb,KAAKjB,EAAE02B,UAAU9yB,EAAEjB,IAAIiB,EAAEjB,EAAEpE,EAAEoE,EAAE3C,EAAEJ,QAAQqF,EAAErB,OAAO,CAAC,IAAI,IAAIF,EAAE,MAAM,GAAG5B,EAAEb,KAAKjB,EAAE02B,UAAU9yB,EAAEF,IAAIiB,EAAEjB,EAAExD,GAAGR,IAAI0E,IAAIQ,GAAG,OAAOnB,IAAI,GAAGa,GAAG7C,EAAEhC,QAAQ6E,EAAE,OAAOb,GAAE,EAAG,MAAM,IAAIb,EAAEgB,EAAEA,MAAM,CAAC,IAAI,KAAKhB,EAAE5C,EAAEJ,QAAQmF,EAAEnC,EAAE,IAAI,OAAOzD,GAAG6C,EAAEf,KAAK,CAAC0K,KAAK,SAAS2uB,KAAK,gBAAgBnJ,QAAQ,4BAA4BixG,IAAI3gI,EAAEhC,OAAO2c,MAAMxY,IAAIN,IAAI,GAAGV,IAAInE,EAAE,EAAE,OAAO6E,EAAEtD,EAAE02B,UAAU9yB,EAAEhB,GAAGiJ,QAAQtI,EAAEwB,IAAI,GAAGA,IAAIV,GAAGrE,EAAE4C,EAAE,KAAKyB,GAAG,GAAGU,IAAIV,GAAG,IAAIzB,GAAG5C,EAAE4C,EAAE,KAAKyB,EAAE,EAAE,IAAI1B,GAAGA,EAAEC,EAAE,IAAID,EAAE3C,EAAEJ,QAAQqF,EAAErC,EAAE,KAAK,IAAIc,GAAGA,EAAEd,EAAE,IAAIc,EAAE1D,EAAEJ,QAAQsE,EAAEtB,EAAE,IAAI,IAAIQ,EAAEa,GAAG,IAAIP,EAAEf,EAAEV,KAAKgL,IAAItK,EAAEe,IAAI,GAAG1D,EAAE66B,OAAOj4B,EAAE,EAAEQ,EAAE7E,KAAK0G,EAAE,CAACnD,EAAEb,KAAKjB,EAAE02B,UAAU9yB,EAAEhB,GAAGiJ,QAAQtI,EAAEwB,IAAI/E,EAAE4D,EAAEhB,EAAE,EAAEQ,EAAE7E,KAAKwG,IAAInC,EAAE5C,EAAEJ,QAAQmF,EAAEnB,IAAIjB,EAAE3C,EAAEJ,QAAQqF,EAAErB,GAAGF,EAAE1D,EAAEJ,QAAQsE,EAAEN,GAAG,KAAK,CAAC,IAAIP,EAAEY,EAAEP,GAAG,GAAG1D,EAAE02B,UAAU9zB,EAAE,EAAES,EAAET,EAAE,EAAES,EAAEnD,KAAKgE,EAAE,CAAC,GAAGpC,EAAEb,KAAKjB,EAAE02B,UAAU9yB,EAAEhB,GAAGiJ,QAAQtI,EAAEwB,IAAIJ,EAAE/B,EAAE,EAAES,EAAEnD,GAAGyC,EAAE3C,EAAEJ,QAAQqF,EAAErB,GAAGhB,EAAE5C,EAAEJ,QAAQmF,EAAEnB,GAAGlE,IAAI0E,IAAIQ,GAAG,OAAOnB,IAAI,GAAGa,GAAG7C,EAAEhC,QAAQ6E,EAAE,OAAOb,GAAE,GAAI,KAAK,CAACzB,EAAEf,KAAK,CAAC0K,KAAK,SAAS2uB,KAAK,gBAAgBnJ,QAAQ,8CAA8CixG,IAAI3gI,EAAEhC,OAAO2c,MAAMxY,IAAIhB,GAAG,OAAOA,GAAG,CAAC,OAAOU,IAAI,SAASL,EAAE1E,GAAGkD,EAAER,KAAK1C,GAAGwD,EAAE6B,CAAC,CAAC,SAASK,EAAE1F,GAAG,IAAIC,EAAE,EAAE,IAAI,IAAID,EAAE,CAAC,IAAIY,EAAEa,EAAE02B,UAAU9zB,EAAE,EAAErE,GAAGY,GAAG,KAAKA,EAAEsyB,SAASjzB,EAAEW,EAAEM,OAAO,CAAC,OAAOjB,CAAC,CAAC,SAAS8E,EAAE/E,GAAG,OAAOY,SAAI,IAASZ,IAAIA,EAAEyB,EAAE02B,UAAU9yB,IAAI9B,EAAEb,KAAK1C,GAAGqF,EAAEnF,EAAEwE,EAAEnB,GAAGpC,GAAG0E,KAAKX,GAAG,CAAC,SAASkB,EAAEpG,GAAGqF,EAAErF,EAAE0E,EAAEnB,GAAGA,EAAE,GAAG4B,EAAE1D,EAAEJ,QAAQsE,EAAEN,EAAE,CAAC,SAASH,EAAElF,GAAG,MAAM,CAACqQ,KAAKnN,EAAE4oV,OAAOroV,EAAEitU,KAAK,CAAC5zE,UAAUp2P,EAAEsizC,UAAUrjzC,EAAE2kB,QAAQjkB,EAAE4izC,YAAYjpzC,EAAEkiJ,OAAO1+I,GAAGvD,GAAG,IAAI,CAAC,SAAS4F,IAAIkB,EAAE7B,KAAKhC,EAAE,GAAGO,EAAE,EAAE,CAAC,EAAE5C,KAAKixB,MAAM,WAAWzrB,GAAE,CAAE,EAAExF,KAAKiozC,aAAa,WAAW,OAAOzjzC,CAAC,CAAC,CAAC,SAASZ,EAAEzE,GAAG,IAAIC,EAAED,EAAEqQ,KAAKzP,EAAEiB,EAAE5B,EAAEklzC,UAAU1jzC,GAAE,EAAG,GAAGxB,EAAE0C,MAAM/B,EAAEskzC,UAAUjlzC,EAAE0C,MAAM1C,EAAEy56B,WAAW,GAAGz56B,EAAEoyG,SAASpyG,EAAEoyG,QAAQhiG,KAAK,CAAC,IAAInQ,EAAE,CAAC4xB,MAAM,WAAWrwB,GAAE,EAAGwC,EAAEhE,EAAEklzC,SAAS,CAAC90yC,KAAK,GAAGy7U,OAAO,GAAGpb,KAAK,CAACpmT,SAAQ,IAAK,EAAEuiS,MAAMhpT,EAAE498B,OAAO598B,GAAG,GAAG0C,EAAE3F,EAAEmkzC,UAAU,CAAC,IAAI,IAAIpjzC,EAAE,EAAEA,EAAE1B,EAAEoyG,QAAQhiG,KAAKnP,SAASN,EAAEmkzC,SAAS,CAAC10yC,KAAKpQ,EAAEoyG,QAAQhiG,KAAK1O,GAAGmqV,OAAO7rV,EAAEoyG,QAAQy5O,OAAOpb,KAAKzwU,EAAEoyG,QAAQq+N,MAAMxwU,IAAIuB,GAAGE,YAAY1B,EAAEoyG,OAAO,MAAM9rG,EAAE3F,EAAEokzC,aAAapkzC,EAAEokzC,UAAU/kzC,EAAEoyG,QAAQnyG,EAAED,EAAEy56B,aAAaz56B,EAAEoyG,QAAQ,CAACpyG,EAAE0igB,WAAWlhgB,GAAGwC,EAAEhE,EAAEklzC,SAASllzC,EAAEoyG,QAAQ,CAAC,SAASpuG,EAAEjE,EAAEC,GAAG,IAAIW,EAAEiB,EAAE7B,GAAGuG,EAAE3F,EAAEqkzC,eAAerkzC,EAAEqkzC,aAAahlzC,GAAGW,EAAE6nQ,mBAAmB5mQ,EAAE7B,EAAE,CAAC,SAAS6D,IAAI,MAAM,IAAIwkB,MAAM,mBAAmB,CAAC,SAASjkB,EAAEpE,GAAG,GAAG,iBAAiBA,GAAG,OAAOA,EAAE,OAAOA,EAAE,IAAIC,EAAEK,MAAMkS,QAAQxS,GAAG,GAAG,CAAC,EAAE,IAAI,IAAIY,KAAKZ,EAAEC,EAAEW,GAAGwD,EAAEpE,EAAEY,IAAI,OAAOX,CAAC,CAAC,SAAS6D,EAAE9D,EAAEC,GAAG,OAAO,WAAWD,EAAEoB,MAAMnB,EAAEgB,UAAU,CAAC,CAAC,SAASsF,EAAEvG,GAAG,MAAM,mBAAmBA,CAAC,CAAC,OAAOmB,IAAIoC,EAAEgvB,UAAU,SAASvyB,GAAG,IAAIC,EAAED,EAAEqQ,KAAuD,QAAlD,IAASlM,EAAEqjzC,WAAWvnzC,IAAIkE,EAAEqjzC,UAAUvnzC,EAAEklzC,UAAa,iBAAiBllzC,EAAEqxD,MAAM/tD,EAAEivB,YAAY,CAAC2yxC,SAAShhzC,EAAEqjzC,UAAUn1sC,QAAQluG,EAAEipB,MAAMntB,EAAEqxD,MAAMrxD,EAAE08T,QAAQgmM,UAAS,SAAU,GAAGp/f,EAAE8hzC,MAAMplzC,EAAEqxD,iBAAiB+zvC,MAAMplzC,EAAEqxD,iBAAiBnxD,OAAO,CAAC,IAAIS,EAAEuD,EAAEipB,MAAMntB,EAAEqxD,MAAMrxD,EAAE08T,QAAQ/7T,GAAG2C,EAAEivB,YAAY,CAAC2yxC,SAAShhzC,EAAEqjzC,UAAUn1sC,QAAQzxG,EAAE+hgB,UAAS,GAAI,CAAC,IAAIt/f,EAAE9C,UAAUJ,OAAOY,OAAO0C,EAAElD,YAAYO,YAAYuC,GAAG3B,EAAEnB,UAAUJ,OAAOY,OAAO0C,EAAElD,YAAYO,YAAYY,GAAGiC,EAAEpD,UAAUJ,OAAOY,OAAO4C,EAAEpD,YAAYO,YAAY6C,GAAGX,EAAEzC,UAAUJ,OAAOY,OAAO0C,EAAElD,YAAYO,YAAYkC,EAAEmB,CAAC,OAAz3lB,iBAAJ,OAAI,2CCJhEw5B,EAAOr6B,QAAU4lzC,EAEjB,IAAIC,EAAU,EAAQ,KAEtB,SAASD,EAAI/hE,GACTtmvC,KAAKsmvC,IAAMhouC,YAAY0C,QAAU1C,YAAY0C,OAAOsluC,GAAOA,EAAM,IAAI3muC,WAAW2muC,GAAO,GACvFtmvC,KAAKqiH,IAAM,EACXriH,KAAKuM,KAAO,EACZvM,KAAKK,OAASL,KAAKsmvC,IAAIjmvC,MAC3B,CAEAgozC,EAAIE,OAAU,EACdF,EAAIG,QAAU,EACdH,EAAII,MAAU,EACdJ,EAAIK,QAAU,EAEd,IAAIC,EAAgB,WAChBC,EAAiB,EAAID,EAKrBE,EAAyC,oBAAhB9/xC,YAA8B,KAAO,IAAIA,YAAY,QAwYlF,SAAS+/xC,EAAcC,GACnB,OAAOA,EAAIx8yC,OAAS87yC,EAAII,MACpBM,EAAIC,aAAeD,EAAI1msC,IAAM0msC,EAAI1msC,IAAM,CAC/C,CAEA,SAAS4msC,EAAMvyuC,EAAKD,EAAMg/L,GACtB,OAAIA,EACc,WAAPh/L,GAAsBC,IAAQ,GAGlB,YAAdD,IAAS,IAAqBC,IAAQ,EACnD,CAiDA,SAASwyuC,EAAuBpgsC,EAAU+V,EAAKkqrC,GAC3C,IAAII,EACAtqrC,GAAO,MAAS,EAChBA,GAAO,QAAW,EAClBA,GAAO,UAAY,EAAIh8H,KAAKyK,MAAMzK,KAAKwnB,IAAIw0G,IAAmB,EAAXh8H,KAAKsvN,MAG5D42lC,EAAIK,QAAQD,GACZ,IAAK,IAAIvozC,EAAImozC,EAAI1msC,IAAM,EAAGzhH,GAAKkoH,EAAUloH,IAAKmozC,EAAIziE,IAAI1lvC,EAAIuozC,GAAYJ,EAAIziE,IAAI1lvC,EAClF,CAEA,SAASyozC,EAAkB5qlC,EAAKsqlC,GAAS,IAAK,IAAInozC,EAAI,EAAGA,EAAI69N,EAAIp+N,OAAQO,IAAKmozC,EAAIO,YAAY7qlC,EAAI79N,GAAO,CACzG,SAAS2ozC,EAAmB9qlC,EAAKsqlC,GAAQ,IAAK,IAAInozC,EAAI,EAAGA,EAAI69N,EAAIp+N,OAAQO,IAAKmozC,EAAIS,aAAa/qlC,EAAI79N,GAAM,CACzG,SAAS6ozC,EAAiBhrlC,EAAKsqlC,GAAU,IAAK,IAAInozC,EAAI,EAAGA,EAAI69N,EAAIp+N,OAAQO,IAAKmozC,EAAIW,WAAWjrlC,EAAI79N,GAAQ,CACzG,SAAS+ozC,EAAkBlrlC,EAAKsqlC,GAAS,IAAK,IAAInozC,EAAI,EAAGA,EAAI69N,EAAIp+N,OAAQO,IAAKmozC,EAAIa,YAAYnrlC,EAAI79N,GAAO,CACzG,SAASipzC,EAAmBprlC,EAAKsqlC,GAAQ,IAAK,IAAInozC,EAAI,EAAGA,EAAI69N,EAAIp+N,OAAQO,IAAKmozC,EAAIe,aAAarrlC,EAAI79N,GAAM,CACzG,SAASmpzC,EAAmBtrlC,EAAKsqlC,GAAQ,IAAK,IAAInozC,EAAI,EAAGA,EAAI69N,EAAIp+N,OAAQO,IAAKmozC,EAAIiB,aAAavrlC,EAAI79N,GAAM,CACzG,SAASqpzC,EAAoBxrlC,EAAKsqlC,GAAO,IAAK,IAAInozC,EAAI,EAAGA,EAAI69N,EAAIp+N,OAAQO,IAAKmozC,EAAImB,cAAczrlC,EAAI79N,GAAK,CACzG,SAASupzC,EAAmB1rlC,EAAKsqlC,GAAQ,IAAK,IAAInozC,EAAI,EAAGA,EAAI69N,EAAIp+N,OAAQO,IAAKmozC,EAAIqB,aAAa3rlC,EAAI79N,GAAM,CACzG,SAASypzC,EAAoB5rlC,EAAKsqlC,GAAO,IAAK,IAAInozC,EAAI,EAAGA,EAAI69N,EAAIp+N,OAAQO,IAAKmozC,EAAIuB,cAAc7rlC,EAAI79N,GAAK,CAIzG,SAAS2pzC,EAAWjkE,EAAKjkoC,GACrB,OAASikoC,EAAIjkoC,GACRikoC,EAAIjkoC,EAAM,IAAM,EAChBikoC,EAAIjkoC,EAAM,IAAM,IACD,SAAfikoC,EAAIjkoC,EAAM,EACnB,CAEA,SAASmosC,EAAWlkE,EAAK5okC,EAAKr7D,GAC1BikoC,EAAIjkoC,GAAOq7D,EACX4okC,EAAIjkoC,EAAM,GAAMq7D,IAAQ,EACxB4okC,EAAIjkoC,EAAM,GAAMq7D,IAAQ,GACxB4okC,EAAIjkoC,EAAM,GAAMq7D,IAAQ,EAC5B,CAEA,SAAS+soC,EAAUnkE,EAAKjkoC,GACpB,OAASikoC,EAAIjkoC,GACRikoC,EAAIjkoC,EAAM,IAAM,EAChBikoC,EAAIjkoC,EAAM,IAAM,KAChBikoC,EAAIjkoC,EAAM,IAAM,GACzB,CA5eAgmsC,EAAI3ozC,UAAY,CAEZ0+I,QAAS,WACLp+I,KAAKsmvC,IAAM,IACf,EAIAokE,WAAY,SAASC,EAAWnnyC,EAAQijB,GAGpC,IAFAA,EAAMA,GAAOzmC,KAAKK,OAEXL,KAAKqiH,IAAM57E,GAAK,CACnB,IAAIi3I,EAAM19K,KAAKgpzC,aACX5xyC,EAAMsmK,GAAO,EACb50D,EAAW9oH,KAAKqiH,IAEpBriH,KAAKuM,KAAa,EAANmxK,EACZitoC,EAAUvzyC,EAAKoM,EAAQxjB,MAEnBA,KAAKqiH,MAAQyG,GAAU9oH,KAAKi2hB,KAAKv4W,EACzC,CACA,OAAOl6J,CACX,EAEAonyC,YAAa,SAASD,EAAWnnyC,GAC7B,OAAOxjB,KAAK0qzC,WAAWC,EAAWnnyC,EAAQxjB,KAAKgpzC,aAAehpzC,KAAKqiH,IACvE,EAEAwosC,YAAa,WACT,IAAIntoC,EAAM6soC,EAAWvqzC,KAAKsmvC,IAAKtmvC,KAAKqiH,KAEpC,OADAriH,KAAKqiH,KAAO,EACLq7D,CACX,EAEAotoC,aAAc,WACV,IAAIptoC,EAAM+soC,EAAUzqzC,KAAKsmvC,IAAKtmvC,KAAKqiH,KAEnC,OADAriH,KAAKqiH,KAAO,EACLq7D,CACX,EAIAqtoC,YAAa,WACT,IAAIrtoC,EAAM6soC,EAAWvqzC,KAAKsmvC,IAAKtmvC,KAAKqiH,KAAOkosC,EAAWvqzC,KAAKsmvC,IAAKtmvC,KAAKqiH,IAAM,GAAKsmsC,EAEhF,OADA3ozC,KAAKqiH,KAAO,EACLq7D,CACX,EAEAstoC,aAAc,WACV,IAAIttoC,EAAM6soC,EAAWvqzC,KAAKsmvC,IAAKtmvC,KAAKqiH,KAAOoosC,EAAUzqzC,KAAKsmvC,IAAKtmvC,KAAKqiH,IAAM,GAAKsmsC,EAE/E,OADA3ozC,KAAKqiH,KAAO,EACLq7D,CACX,EAEAutoC,UAAW,WACP,IAAIvtoC,EAAM4qoC,EAAQjivC,KAAKrmE,KAAKsmvC,IAAKtmvC,KAAKqiH,KAAK,EAAM,GAAI,GAErD,OADAriH,KAAKqiH,KAAO,EACLq7D,CACX,EAEAwtoC,WAAY,WACR,IAAIxtoC,EAAM4qoC,EAAQjivC,KAAKrmE,KAAKsmvC,IAAKtmvC,KAAKqiH,KAAK,EAAM,GAAI,GAErD,OADAriH,KAAKqiH,KAAO,EACLq7D,CACX,EAEAsroC,WAAY,SAASvziC,GACjB,IACI/3F,EAAKp6K,EADLgjvC,EAAMtmvC,KAAKsmvC,IAG+B,OAAzB5okC,EAAY,KAAjCp6K,EAAIgjvC,EAAItmvC,KAAKqiH,QAAqC/+G,EAAI,IAAao6K,GAC9CA,IAAY,KAAjCp6K,EAAIgjvC,EAAItmvC,KAAKqiH,UAA6B,EAAQ/+G,EAAI,IAAao6K,GAC9CA,IAAY,KAAjCp6K,EAAIgjvC,EAAItmvC,KAAKqiH,UAA6B,GAAQ/+G,EAAI,IAAao6K,GAC9CA,IAAY,KAAjCp6K,EAAIgjvC,EAAItmvC,KAAKqiH,UAA6B,GAAQ/+G,EAAI,IAAao6K,EA+S3E,SAA6Bl7K,EAAG1B,EAAGgC,GAC/B,IACIF,EAAGU,EADHgjvC,EAAMxjvC,EAAEwjvC,IAG6B,GAAvB1jvC,GAAU,KAA5BU,EAAIgjvC,EAAIxjvC,EAAEu/G,UAA2B,EAAQ/+G,EAAI,IAAM,OAAO2lzC,EAAMzmzC,EAAGI,EAAG9B,GACjC,GAAvB8B,IAAU,KAA5BU,EAAIgjvC,EAAIxjvC,EAAEu/G,UAA2B,EAAQ/+G,EAAI,IAAM,OAAO2lzC,EAAMzmzC,EAAGI,EAAG9B,GACjC,GAAvB8B,IAAU,KAA5BU,EAAIgjvC,EAAIxjvC,EAAEu/G,UAA2B,GAAQ/+G,EAAI,IAAM,OAAO2lzC,EAAMzmzC,EAAGI,EAAG9B,GACjC,GAAvB8B,IAAU,KAA5BU,EAAIgjvC,EAAIxjvC,EAAEu/G,UAA2B,GAAQ/+G,EAAI,IAAM,OAAO2lzC,EAAMzmzC,EAAGI,EAAG9B,GACjC,GAAvB8B,IAAU,KAA5BU,EAAIgjvC,EAAIxjvC,EAAEu/G,UAA2B,GAAQ/+G,EAAI,IAAM,OAAO2lzC,EAAMzmzC,EAAGI,EAAG9B,GACjC,GAAvB8B,IAAU,GAA5BU,EAAIgjvC,EAAIxjvC,EAAEu/G,UAA2B,GAAQ/+G,EAAI,IAAM,OAAO2lzC,EAAMzmzC,EAAGI,EAAG9B,GAE1E,MAAM,IAAI0mB,MAAM,yCACpB,CAxTe2jyC,CAFcztoC,IAAY,IAAjCp6K,EAAIgjvC,EAAItmvC,KAAKqiH,QAA6B,GAEVozJ,EAAUz1Q,QAC9C,EAEAorzC,aAAc,WACV,OAAOprzC,KAAKgpzC,YAAW,EAC3B,EAEAqC,YAAa,WACT,IAAInowC,EAAMljD,KAAKgpzC,aACf,OAAO9lwC,EAAM,GAAM,GAAKA,EAAM,IAAM,EAAIA,EAAM,CAClD,EAEAoowC,YAAa,WACT,OAAOr4yC,QAAQjT,KAAKgpzC,aACxB,EAEAuC,WAAY,WACR,IAAI9kxC,EAAMzmC,KAAKgpzC,aAAehpzC,KAAKqiH,IAC/BA,EAAMriH,KAAKqiH,IAGf,OAFAriH,KAAKqiH,IAAM57E,EAEPA,EAAM47E,GApGY,IAoGsBwmsC,EA+cpD,SAA6BviE,EAAKjkoC,EAAK57E,GACnC,OAAOoixC,EAAgBhgyC,OAAOy9tC,EAAI7+tC,SAAS46F,EAAK57E,GACpD,CA/cmB+kxC,CAAoBxrzC,KAAKsmvC,IAAKjkoC,EAAK57E,GA2YtD,SAAkB6/sC,EAAKjkoC,EAAK57E,GAIxB,IAHA,IAAIkwC,EAAM,GACN/1E,EAAIyhH,EAEDzhH,EAAI6lC,GAAK,CACZ,IASIi9T,EAAIC,EAAIprR,EATRi3R,EAAK824B,EAAI1lvC,GACTC,EAAI,KACJ4qzC,EACAj88B,EAAK,IAAO,EACZA,EAAK,IAAO,EACZA,EAAK,IAAO,EAAI,EAEpB,GAAI5uW,EAAI6qzC,EAAmBhlxC,EAAK,MAIP,IAArBglxC,EACIj88B,EAAK,MACL3uW,EAAI2uW,GAEoB,IAArBi88B,EAEa,MAAV,KADV/n9B,EAAK4i5B,EAAI1lvC,EAAI,OAETC,GAAU,GAAL2uW,IAAc,EAAY,GAAL9L,IACjB,MACL7iW,EAAI,MAGgB,IAArB4qzC,GACP/n9B,EAAK4i5B,EAAI1lvC,EAAI,GACb+iW,EAAK2i5B,EAAI1lvC,EAAI,GACO,MAAV,IAAL8iW,IAAuC,MAAV,IAALC,MACzB9iW,GAAU,GAAL2uW,IAAa,IAAY,GAAL9L,IAAc,EAAY,GAALC,IACrC,MAAU9iW,GAAK,OAAUA,GAAK,SACnCA,EAAI,OAGgB,IAArB4qzC,IACP/n9B,EAAK4i5B,EAAI1lvC,EAAI,GACb+iW,EAAK2i5B,EAAI1lvC,EAAI,GACb23E,EAAK+tqC,EAAI1lvC,EAAI,GACO,MAAV,IAAL8iW,IAAuC,MAAV,IAALC,IAAuC,MAAV,IAALprR,MACjD13E,GAAU,GAAL2uW,IAAa,IAAa,GAAL9L,IAAc,IAAY,GAALC,IAAc,EAAY,GAALprR,IAC3D,OAAU13E,GAAK,WACpBA,EAAI,OAKN,OAANA,GACAA,EAAI,MACJ4qzC,EAAmB,GAEZ5qzC,EAAI,QACXA,GAAK,MACL81E,GAAO72E,OAAO4nB,aAAa7mB,IAAM,GAAK,KAAQ,OAC9CA,EAAI,MAAa,KAAJA,GAGjB81E,GAAO72E,OAAO4nB,aAAa7mB,GAC3BD,GAAK6qzC,CACT,CAEA,OAAO90uC,CACX,CAxce+0uC,CAAS1rzC,KAAKsmvC,IAAKjkoC,EAAK57E,EACnC,EAEAklxC,UAAW,WACP,IAAIllxC,EAAMzmC,KAAKgpzC,aAAehpzC,KAAKqiH,IAC/Bn6F,EAASloB,KAAKsmvC,IAAI7+tC,SAASznB,KAAKqiH,IAAK57E,GAEzC,OADAzmC,KAAKqiH,IAAM57E,EACJve,CACX,EAIA0jyC,iBAAkB,SAASntlC,EAAKg3C,GAC5B,GAAIz1Q,KAAKuM,OAAS87yC,EAAII,MAAO,OAAOhqlC,EAAI58N,KAAK7B,KAAKgpzC,WAAWvziC,IAC7D,IAAIhvO,EAAMqixC,EAAc9ozC,MAExB,IADAy+N,EAAMA,GAAO,GACNz+N,KAAKqiH,IAAM57E,GAAKg4L,EAAI58N,KAAK7B,KAAKgpzC,WAAWvziC,IAChD,OAAOh3C,CACX,EACAotlC,kBAAmB,SAASptlC,GACxB,GAAIz+N,KAAKuM,OAAS87yC,EAAII,MAAO,OAAOhqlC,EAAI58N,KAAK7B,KAAKqrzC,eAClD,IAAI5kxC,EAAMqixC,EAAc9ozC,MAExB,IADAy+N,EAAMA,GAAO,GACNz+N,KAAKqiH,IAAM57E,GAAKg4L,EAAI58N,KAAK7B,KAAKqrzC,eACrC,OAAO5slC,CACX,EACAqtlC,kBAAmB,SAASrtlC,GACxB,GAAIz+N,KAAKuM,OAAS87yC,EAAII,MAAO,OAAOhqlC,EAAI58N,KAAK7B,KAAKsrzC,eAClD,IAAI7kxC,EAAMqixC,EAAc9ozC,MAExB,IADAy+N,EAAMA,GAAO,GACNz+N,KAAKqiH,IAAM57E,GAAKg4L,EAAI58N,KAAK7B,KAAKsrzC,eACrC,OAAO7slC,CACX,EACAstlC,gBAAiB,SAASttlC,GACtB,GAAIz+N,KAAKuM,OAAS87yC,EAAII,MAAO,OAAOhqlC,EAAI58N,KAAK7B,KAAKirzC,aAClD,IAAIxkxC,EAAMqixC,EAAc9ozC,MAExB,IADAy+N,EAAMA,GAAO,GACNz+N,KAAKqiH,IAAM57E,GAAKg4L,EAAI58N,KAAK7B,KAAKirzC,aACrC,OAAOxslC,CACX,EACAutlC,iBAAkB,SAASvtlC,GACvB,GAAIz+N,KAAKuM,OAAS87yC,EAAII,MAAO,OAAOhqlC,EAAI58N,KAAK7B,KAAKkrzC,cAClD,IAAIzkxC,EAAMqixC,EAAc9ozC,MAExB,IADAy+N,EAAMA,GAAO,GACNz+N,KAAKqiH,IAAM57E,GAAKg4L,EAAI58N,KAAK7B,KAAKkrzC,cACrC,OAAOzslC,CACX,EACAwtlC,kBAAmB,SAASxtlC,GACxB,GAAIz+N,KAAKuM,OAAS87yC,EAAII,MAAO,OAAOhqlC,EAAI58N,KAAK7B,KAAK6qzC,eAClD,IAAIpkxC,EAAMqixC,EAAc9ozC,MAExB,IADAy+N,EAAMA,GAAO,GACNz+N,KAAKqiH,IAAM57E,GAAKg4L,EAAI58N,KAAK7B,KAAK6qzC,eACrC,OAAOpslC,CACX,EACAytlC,mBAAoB,SAASztlC,GACzB,GAAIz+N,KAAKuM,OAAS87yC,EAAII,MAAO,OAAOhqlC,EAAI58N,KAAK7B,KAAK8qzC,gBAClD,IAAIrkxC,EAAMqixC,EAAc9ozC,MAExB,IADAy+N,EAAMA,GAAO,GACNz+N,KAAKqiH,IAAM57E,GAAKg4L,EAAI58N,KAAK7B,KAAK8qzC,gBACrC,OAAOrslC,CACX,EACA0tlC,kBAAmB,SAAS1tlC,GACxB,GAAIz+N,KAAKuM,OAAS87yC,EAAII,MAAO,OAAOhqlC,EAAI58N,KAAK7B,KAAK+qzC,eAClD,IAAItkxC,EAAMqixC,EAAc9ozC,MAExB,IADAy+N,EAAMA,GAAO,GACNz+N,KAAKqiH,IAAM57E,GAAKg4L,EAAI58N,KAAK7B,KAAK+qzC,eACrC,OAAOtslC,CACX,EACA2tlC,mBAAoB,SAAS3tlC,GACzB,GAAIz+N,KAAKuM,OAAS87yC,EAAII,MAAO,OAAOhqlC,EAAI58N,KAAK7B,KAAKgrzC,gBAClD,IAAIvkxC,EAAMqixC,EAAc9ozC,MAExB,IADAy+N,EAAMA,GAAO,GACNz+N,KAAKqiH,IAAM57E,GAAKg4L,EAAI58N,KAAK7B,KAAKgrzC,gBACrC,OAAOvslC,CACX,EAEAw3T,KAAM,SAASv4W,GACX,IAAInxK,EAAa,EAANmxK,EACX,GAAInxK,IAAS87yC,EAAIE,OAAQ,KAAOvozC,KAAKsmvC,IAAItmvC,KAAKqiH,OAAS,WAClD,GAAI91G,IAAS87yC,EAAII,MAAOzozC,KAAKqiH,IAAMriH,KAAKgpzC,aAAehpzC,KAAKqiH,SAC5D,GAAI91G,IAAS87yC,EAAIK,QAAS1ozC,KAAKqiH,KAAO,MACtC,IAAI91G,IAAS87yC,EAAIG,QACjB,MAAM,IAAIhhyC,MAAM,uBAAyBjb,GADfvM,KAAKqiH,KAAO,CACQ,CACvD,EAIAgqsC,SAAU,SAASj1yC,EAAK7K,GACpBvM,KAAKspzC,YAAalyyC,GAAO,EAAK7K,EAClC,EAEA68yC,QAAS,SAASv7yC,GAGd,IAFA,IAAIxN,EAASL,KAAKK,QAAU,GAErBA,EAASL,KAAKqiH,IAAMx0G,GAAKxN,GAAU,EAE1C,GAAIA,IAAWL,KAAKK,OAAQ,CACxB,IAAIimvC,EAAM,IAAI3muC,WAAWtf,GACzBimvC,EAAIr6uC,IAAIjM,KAAKsmvC,KACbtmvC,KAAKsmvC,IAAMA,EACXtmvC,KAAKK,OAASA,CAClB,CACJ,EAEAioE,OAAQ,WAGJ,OAFAtoE,KAAKK,OAASL,KAAKqiH,IACnBriH,KAAKqiH,IAAM,EACJriH,KAAKsmvC,IAAI7+tC,SAAS,EAAGznB,KAAKK,OACrC,EAEA2pzC,aAAc,SAAStsoC,GACnB19K,KAAKopzC,QAAQ,GACboB,EAAWxqzC,KAAKsmvC,IAAK5okC,EAAK19K,KAAKqiH,KAC/BriH,KAAKqiH,KAAO,CAChB,EAEA6nsC,cAAe,SAASxsoC,GACpB19K,KAAKopzC,QAAQ,GACboB,EAAWxqzC,KAAKsmvC,IAAK5okC,EAAK19K,KAAKqiH,KAC/BriH,KAAKqiH,KAAO,CAChB,EAEA+nsC,aAAc,SAAS1soC,GACnB19K,KAAKopzC,QAAQ,GACboB,EAAWxqzC,KAAKsmvC,KAAY,EAAP5okC,EAAU19K,KAAKqiH,KACpCmosC,EAAWxqzC,KAAKsmvC,IAAKzjvC,KAAKyK,MAAMowK,EAAMkroC,GAAiB5ozC,KAAKqiH,IAAM,GAClEriH,KAAKqiH,KAAO,CAChB,EAEAiosC,cAAe,SAAS5soC,GACpB19K,KAAKopzC,QAAQ,GACboB,EAAWxqzC,KAAKsmvC,KAAY,EAAP5okC,EAAU19K,KAAKqiH,KACpCmosC,EAAWxqzC,KAAKsmvC,IAAKzjvC,KAAKyK,MAAMowK,EAAMkroC,GAAiB5ozC,KAAKqiH,IAAM,GAClEriH,KAAKqiH,KAAO,CAChB,EAEAinsC,YAAa,SAAS5roC,IAClBA,GAAOA,GAAO,GAEJ,WAAaA,EAAM,EAkKrC,SAAwBA,EAAKqroC,GACzB,IAAIryuC,EAAKD,EAiBT,GAfIinG,GAAO,GACPhnG,EAAQgnG,EAAM,WAAe,EAC7BjnG,EAAQinG,EAAM,WAAe,IAG7BjnG,KAAUinG,EAAM,YAEN,YAHVhnG,KAAUgnG,EAAM,aAIZhnG,EAAOA,EAAM,EAAK,GAElBA,EAAM,EACND,EAAQA,EAAO,EAAK,IAIxBinG,GAAO,qBAAuBA,GAAO,oBACrC,MAAM,IAAIl2J,MAAM,0CAGpBuhyC,EAAIK,QAAQ,IAMhB,SAA2B1yuC,EAAKD,EAAMsyuC,GAClCA,EAAIziE,IAAIyiE,EAAI1msC,OAAe,IAAN3rC,EAAa,IAAMA,KAAS,EACjDqyuC,EAAIziE,IAAIyiE,EAAI1msC,OAAe,IAAN3rC,EAAa,IAAMA,KAAS,EACjDqyuC,EAAIziE,IAAIyiE,EAAI1msC,OAAe,IAAN3rC,EAAa,IAAMA,KAAS,EACjDqyuC,EAAIziE,IAAIyiE,EAAI1msC,OAAe,IAAN3rC,EAAa,IAAMA,KAAS,EACjDqyuC,EAAIziE,IAAIyiE,EAAI1msC,KAAe,IAAN3rC,CACzB,CAVI41uC,CAAkB51uC,EAAKD,EAAMsyuC,GAYjC,SAA4BtyuC,EAAMsyuC,GAC9B,IAAIrzlC,GAAc,EAAPj/I,IAAgB,EAE3BsyuC,EAAIziE,IAAIyiE,EAAI1msC,QAAUqzG,IAAgBj/I,KAAU,GAAK,IAAO,GAASA,IACrEsyuC,EAAIziE,IAAIyiE,EAAI1msC,OAAiB,IAAP5rC,IAAgBA,KAAU,GAAK,IAAO,GAASA,IACrEsyuC,EAAIziE,IAAIyiE,EAAI1msC,OAAiB,IAAP5rC,IAAgBA,KAAU,GAAK,IAAO,GAASA,IACrEsyuC,EAAIziE,IAAIyiE,EAAI1msC,OAAiB,IAAP5rC,IAAgBA,KAAU,GAAK,IAAO,GAASA,IACrEsyuC,EAAIziE,IAAIyiE,EAAI1msC,OAAiB,IAAP5rC,IAAgBA,KAAU,GAAK,IAAO,GAASA,IACrEsyuC,EAAIziE,IAAIyiE,EAAI1msC,OAAiB,IAAP5rC,MAC1B,CApBI81uC,CAAmB91uC,EAAMsyuC,EAC7B,CA3LYyD,CAAe9uoC,EAAK19K,OAIxBA,KAAKopzC,QAAQ,GAEbppzC,KAAKsmvC,IAAItmvC,KAAKqiH,OAAyB,IAANq7D,GAAeA,EAAM,IAAO,IAAO,GAAQA,GAAO,MACnF19K,KAAKsmvC,IAAItmvC,KAAKqiH,OAAyB,KAAdq7D,KAAS,IAAcA,EAAM,IAAO,IAAO,GAAQA,GAAO,MACnF19K,KAAKsmvC,IAAItmvC,KAAKqiH,OAAyB,KAAdq7D,KAAS,IAAcA,EAAM,IAAO,IAAO,GAAQA,GAAO,MACnF19K,KAAKsmvC,IAAItmvC,KAAKqiH,OAAYq7D,IAAQ,EAAK,OAC3C,EAEA8roC,aAAc,SAAS9roC,GACnB19K,KAAKspzC,YAAY5roC,EAAM,EAAW,GAANA,EAAU,EAAU,EAANA,EAC9C,EAEAosoC,aAAc,SAASpsoC,GACnB19K,KAAKspzC,YAAYr2yC,QAAQyqK,GAC7B,EAEA+uoC,YAAa,SAAS91uC,GAClBA,EAAM72E,OAAO62E,GACb32E,KAAKopzC,QAAqB,EAAbzyuC,EAAIt2E,QAEjBL,KAAKqiH,MAEL,IAAIyG,EAAW9oH,KAAKqiH,IAEpBriH,KAAKqiH,IAsSb,SAAmBikoC,EAAK3vqC,EAAK0rC,GACzB,IAAK,IAAWxhH,EAAG6rzC,EAAV9rzC,EAAI,EAAYA,EAAI+1E,EAAIt2E,OAAQO,IAAK,CAG1C,IAFAC,EAAI81E,EAAI59D,WAAWnY,IAEX,OAAUC,EAAI,MAAQ,CAC1B,IAAI6rzC,EAWG,CACC7rzC,EAAI,OAAWD,EAAI,IAAM+1E,EAAIt2E,QAC7BimvC,EAAIjkoC,KAAS,IACbikoC,EAAIjkoC,KAAS,IACbikoC,EAAIjkoC,KAAS,KAEbqqsC,EAAO7rzC,EAEX,QACJ,CAnBI,GAAIA,EAAI,MAAQ,CACZylvC,EAAIjkoC,KAAS,IACbikoC,EAAIjkoC,KAAS,IACbikoC,EAAIjkoC,KAAS,IACbqqsC,EAAO7rzC,EACP,QACJ,CACIA,EAAI6rzC,EAAO,OAAU,GAAK7rzC,EAAI,MAAS,MACvC6rzC,EAAO,IAYnB,MAAWA,IACPpmE,EAAIjkoC,KAAS,IACbikoC,EAAIjkoC,KAAS,IACbikoC,EAAIjkoC,KAAS,IACbqqsC,EAAO,MAGP7rzC,EAAI,IACJylvC,EAAIjkoC,KAASxhH,GAETA,EAAI,KACJylvC,EAAIjkoC,KAASxhH,GAAK,EAAM,KAEpBA,EAAI,MACJylvC,EAAIjkoC,KAASxhH,GAAK,GAAM,KAExBylvC,EAAIjkoC,KAASxhH,GAAK,GAAO,IACzBylvC,EAAIjkoC,KAASxhH,GAAK,GAAM,GAAO,KAEnCylvC,EAAIjkoC,KAASxhH,GAAK,EAAM,GAAO,KAEnCylvC,EAAIjkoC,KAAa,GAAJxhH,EAAW,IAEhC,CACA,OAAOwhH,CACX,CAzVmBsqsC,CAAU3szC,KAAKsmvC,IAAK3vqC,EAAK32E,KAAKqiH,KACzC,IAAIwc,EAAM7+H,KAAKqiH,IAAMyG,EAEjB+V,GAAO,KAAMqqrC,EAAuBpgsC,EAAU+V,EAAK7+H,MAGvDA,KAAKqiH,IAAMyG,EAAW,EACtB9oH,KAAKspzC,YAAYzqrC,GACjB7+H,KAAKqiH,KAAOwc,CAChB,EAEA6qrC,WAAY,SAAShsoC,GACjB19K,KAAKopzC,QAAQ,GACbd,EAAQv0yC,MAAM/T,KAAKsmvC,IAAK5okC,EAAK19K,KAAKqiH,KAAK,EAAM,GAAI,GACjDriH,KAAKqiH,KAAO,CAChB,EAEAunsC,YAAa,SAASlsoC,GAClB19K,KAAKopzC,QAAQ,GACbd,EAAQv0yC,MAAM/T,KAAKsmvC,IAAK5okC,EAAK19K,KAAKqiH,KAAK,EAAM,GAAI,GACjDriH,KAAKqiH,KAAO,CAChB,EAEAuqsC,WAAY,SAAS1kyC,GACjB,IAAI22G,EAAM32G,EAAO7nB,OACjBL,KAAKspzC,YAAYzqrC,GACjB7+H,KAAKopzC,QAAQvqrC,GACb,IAAK,IAAIj+H,EAAI,EAAGA,EAAIi+H,EAAKj+H,IAAKZ,KAAKsmvC,IAAItmvC,KAAKqiH,OAASn6F,EAAOtnB,EAChE,EAEAiszC,gBAAiB,SAAS37yC,EAAIg8M,GAC1BltN,KAAKqiH,MAGL,IAAIyG,EAAW9oH,KAAKqiH,IACpBnxG,EAAGg8M,EAAKltN,MACR,IAAI6+H,EAAM7+H,KAAKqiH,IAAMyG,EAEjB+V,GAAO,KAAMqqrC,EAAuBpgsC,EAAU+V,EAAK7+H,MAGvDA,KAAKqiH,IAAMyG,EAAW,EACtB9oH,KAAKspzC,YAAYzqrC,GACjB7+H,KAAKqiH,KAAOwc,CAChB,EAEAiurC,aAAc,SAAS11yC,EAAKlG,EAAIg8M,GAC5BltN,KAAKqszC,SAASj1yC,EAAKixyC,EAAII,OACvBzozC,KAAK6szC,gBAAgB37yC,EAAIg8M,EAC7B,EAEAm8lC,kBAAqB,SAASjyyC,EAAKqnN,GAAWA,EAAIp+N,QAAQL,KAAK8szC,aAAa11yC,EAAKiyyC,EAAmB5qlC,EAAQ,EAC5G8qlC,mBAAqB,SAASnyyC,EAAKqnN,GAAWA,EAAIp+N,QAAQL,KAAK8szC,aAAa11yC,EAAKmyyC,EAAoB9qlC,EAAO,EAC5GorlC,mBAAqB,SAASzyyC,EAAKqnN,GAAWA,EAAIp+N,QAAQL,KAAK8szC,aAAa11yC,EAAKyyyC,EAAoBprlC,EAAO,EAC5GgrlC,iBAAqB,SAASryyC,EAAKqnN,GAAWA,EAAIp+N,QAAQL,KAAK8szC,aAAa11yC,EAAKqyyC,EAAkBhrlC,EAAS,EAC5GkrlC,kBAAqB,SAASvyyC,EAAKqnN,GAAWA,EAAIp+N,QAAQL,KAAK8szC,aAAa11yC,EAAKuyyC,EAAmBlrlC,EAAQ,EAC5GsrlC,mBAAqB,SAAS3yyC,EAAKqnN,GAAWA,EAAIp+N,QAAQL,KAAK8szC,aAAa11yC,EAAK2yyC,EAAoBtrlC,EAAO,EAC5GwrlC,oBAAqB,SAAS7yyC,EAAKqnN,GAAWA,EAAIp+N,QAAQL,KAAK8szC,aAAa11yC,EAAK6yyC,EAAqBxrlC,EAAM,EAC5G0rlC,mBAAqB,SAAS/yyC,EAAKqnN,GAAWA,EAAIp+N,QAAQL,KAAK8szC,aAAa11yC,EAAK+yyC,EAAoB1rlC,EAAO,EAC5G4rlC,oBAAqB,SAASjzyC,EAAKqnN,GAAWA,EAAIp+N,QAAQL,KAAK8szC,aAAa11yC,EAAKizyC,EAAqB5rlC,EAAM,EAE5GsulC,gBAAiB,SAAS31yC,EAAK8Q,GAC3BloB,KAAKqszC,SAASj1yC,EAAKixyC,EAAII,OACvBzozC,KAAK4szC,WAAW1kyC,EACpB,EACA8kyC,kBAAmB,SAAS51yC,EAAKsmK,GAC7B19K,KAAKqszC,SAASj1yC,EAAKixyC,EAAIK,SACvB1ozC,KAAKgqzC,aAAatsoC,EACtB,EACAuvoC,mBAAoB,SAAS71yC,EAAKsmK,GAC9B19K,KAAKqszC,SAASj1yC,EAAKixyC,EAAIK,SACvB1ozC,KAAKkqzC,cAAcxsoC,EACvB,EACAwvoC,kBAAmB,SAAS91yC,EAAKsmK,GAC7B19K,KAAKqszC,SAASj1yC,EAAKixyC,EAAIG,SACvBxozC,KAAKoqzC,aAAa1soC,EACtB,EACAyvoC,mBAAoB,SAAS/1yC,EAAKsmK,GAC9B19K,KAAKqszC,SAASj1yC,EAAKixyC,EAAIG,SACvBxozC,KAAKsqzC,cAAc5soC,EACvB,EACA0voC,iBAAkB,SAASh2yC,EAAKsmK,GAC5B19K,KAAKqszC,SAASj1yC,EAAKixyC,EAAIE,QACvBvozC,KAAKspzC,YAAY5roC,EACrB,EACA2voC,kBAAmB,SAASj2yC,EAAKsmK,GAC7B19K,KAAKqszC,SAASj1yC,EAAKixyC,EAAIE,QACvBvozC,KAAKwpzC,aAAa9roC,EACtB,EACA4voC,iBAAkB,SAASl2yC,EAAKu/D,GAC5B32E,KAAKqszC,SAASj1yC,EAAKixyC,EAAII,OACvBzozC,KAAKyszC,YAAY91uC,EACrB,EACA42uC,gBAAiB,SAASn2yC,EAAKsmK,GAC3B19K,KAAKqszC,SAASj1yC,EAAKixyC,EAAIK,SACvB1ozC,KAAK0pzC,WAAWhsoC,EACpB,EACA8voC,iBAAkB,SAASp2yC,EAAKsmK,GAC5B19K,KAAKqszC,SAASj1yC,EAAKixyC,EAAIG,SACvBxozC,KAAK4pzC,YAAYlsoC,EACrB,EACA+voC,kBAAmB,SAASr2yC,EAAKsmK,GAC7B19K,KAAKotzC,iBAAiBh2yC,EAAKnE,QAAQyqK,GACvC,sBC9Y+D5gJ,EAAOr6B,QAGjE,WAAe,aA0BpB,SAAS4oB,EAAY42X,EAASlxX,GAC5B,IASEruB,EACAM,EACA5D,EACA+C,EAZEyB,EAAI,CACJvC,MAAO,EACPC,KAAM,WACJ,GAAW,EAAPlC,EAAE,GAAQ,MAAMA,EAAE,GACtB,OAAOA,EAAE,EACX,EACAmC,KAAM,GACNC,IAAK,IAMT,OAAOW,EAAI,CACTpB,KAAMqya,EAAK,GACX,MAASA,EAAK,GACd,OAAUA,EAAK,IACI,mBAAX1xa,SAA0BS,EAAET,OAAOC,UAAY,WACvD,OAAO3B,IACT,GAAImC,EACJ,SAASixa,EAAK/za,GACZ,OAAO,SAAU4D,GACf,OAGJ,SAAcowa,GACZ,GAAI3wa,EAAG,MAAM,IAAI7C,UAAU,mCAC3B,KAAO+D,OACL,GAAIlB,EAAI,EAAGM,IAAM5D,EAAY,EAARi0a,EAAG,GAASrwa,EAAU,OAAIqwa,EAAG,GAAKrwa,EAAS,SAAO5D,EAAI4D,EAAU,SAAM5D,EAAEQ,KAAKoD,GAAI,GAAKA,EAAEjC,SAAW3B,EAAIA,EAAEQ,KAAKoD,EAAGqwa,EAAG,KAAKnya,KAAM,OAAO9B,EAE3J,OADI4D,EAAI,EAAG5D,IAAGi0a,EAAK,CAAS,EAARA,EAAG,GAAQj0a,EAAE+B,QACzBkya,EAAG,IACT,KAAK,EACL,KAAK,EACHj0a,EAAIi0a,EACJ,MACF,KAAK,EAEH,OADAzva,EAAEvC,QACK,CACLF,MAAOkya,EAAG,GACVnya,MAAM,GAEV,KAAK,EACH0C,EAAEvC,QACF2B,EAAIqwa,EAAG,GACPA,EAAK,CAAC,GACN,SACF,KAAK,EACHA,EAAKzva,EAAEpC,IAAII,MACXgC,EAAErC,KAAKK,MACP,SACF,QACE,MAAkBxC,GAAZA,EAAIwE,EAAErC,MAAYlB,OAAS,GAAKjB,EAAEA,EAAEiB,OAAS,KAAkB,IAAVgza,EAAG,IAAsB,IAAVA,EAAG,IAAW,CACtFzva,EAAI,EACJ,QACF,CACA,GAAc,IAAVyva,EAAG,MAAcj0a,GAAKi0a,EAAG,GAAKj0a,EAAE,IAAMi0a,EAAG,GAAKj0a,EAAE,IAAK,CACvDwE,EAAEvC,MAAQgya,EAAG,GACb,KACF,CACA,GAAc,IAAVA,EAAG,IAAYzva,EAAEvC,MAAQjC,EAAE,GAAI,CACjCwE,EAAEvC,MAAQjC,EAAE,GACZA,EAAIi0a,EACJ,KACF,CACA,GAAIj0a,GAAKwE,EAAEvC,MAAQjC,EAAE,GAAI,CACvBwE,EAAEvC,MAAQjC,EAAE,GACZwE,EAAEpC,IAAIK,KAAKwxa,GACX,KACF,CACIj0a,EAAE,IAAIwE,EAAEpC,IAAII,MAChBgC,EAAErC,KAAKK,MACP,SAEJyxa,EAAKtiZ,EAAKnxB,KAAKqiZ,EAASr+Y,EAC1B,CAAE,MAAOzE,GACPk0a,EAAK,CAAC,EAAGl0a,GACT6D,EAAI,CACN,CAAE,QACAN,EAAItD,EAAI,CACV,CACA,GAAY,EAARi0a,EAAG,GAAQ,MAAMA,EAAG,GACxB,MAAO,CACLlya,MAAOkya,EAAG,GAAKA,EAAG,QAAK,EACvBnya,MAAM,EAEV,CA/DWwtW,CAAK,CAACrvW,EAAG4D,GAClB,CACF,CA8DF,CACA,IAAIsmF,EACF,SAAc1kE,EAAKrV,GACjBxP,KAAKe,KAAO,KACZf,KAAK6kB,IAAMA,EACX7kB,KAAKwP,KAAOA,EACZxP,KAAK6+B,KAAO,KACZ7+B,KAAK6/F,MAAQ,IACf,EAOF,SAAS6ttC,EAAgB1szC,EAAGsC,GAC1B,OAAOtC,EAAIsC,EAAI,EAAItC,EAAIsC,GAAK,EAAI,CAClC,CAIA,SAASqqzC,EAAM/szC,EAAGxB,EAAG25e,GAInB,IAHA,IAAI7ze,EAAI,IAAIqkF,EAAK,KAAM,MACnB/mF,EAAI0C,EACJnF,EAAImF,IACK,CACX,IAAIki4B,EAAMruZ,EAAWn4e,EAAGxB,EAAEylB,KAE1B,GAAIui3B,EAAM,EAAG,CACX,GAAe,OAAXho4B,EAAEy/B,KAAe,MAErB,GAAIk6c,EAAWn4e,EAAGxB,EAAEy/B,KAAKha,KAAO,EAAG,CACjC,IAAI7hB,EAAI5D,EAAEy/B,KAIV,GAHAz/B,EAAEy/B,KAAO77B,EAAE68F,MACX78F,EAAE68F,MAAQzgG,EAEK,QADfA,EAAI4D,GACE67B,KAAe,KACvB,CACA9+B,EAAE8+B,KAAOz/B,EACTW,EAAIX,EACJA,EAAIA,EAAEy/B,IAER,KAAO,MAAIuo2B,EAAM,GAaV,MAZL,GAAgB,OAAZho4B,EAAEygG,MAAgB,MAEtB,GAAIk5Y,EAAWn4e,EAAGxB,EAAEygG,MAAMh7E,KAAO,IAC3B7hB,EAAI5D,EAAEygG,MACVzgG,EAAEygG,MAAQ78F,EAAE67B,KACZ77B,EAAE67B,KAAOz/B,EAEO,QADhBA,EAAI4D,GACE68F,OAAgB,MAExBr9F,EAAEq9F,MAAQzgG,EACVoD,EAAIpD,EACJA,EAAIA,EAAEygG,KACI,CACd,CAMA,OAJAr9F,EAAEq9F,MAAQzgG,EAAEy/B,KACZ9+B,EAAE8+B,KAAOz/B,EAAEygG,MACXzgG,EAAEy/B,KAAO35B,EAAE26F,MACXzgG,EAAEygG,MAAQ36F,EAAE25B,KACLz/B,CACT,CACA,SAAS27P,EAAOn6P,EAAG4O,EAAMpQ,EAAG25e,GAC1B,IAAI1vZ,EAAO,IAAIE,EAAK3oF,EAAG4O,GACvB,GAAU,OAANpQ,EAEF,OADAiqF,EAAKxqD,KAAOwqD,EAAKwW,MAAQ,KAClBxW,EAGT,IAAI+9yB,EAAMruZ,EAAWn4e,GADrBxB,EAAIuuzC,EAAM/szC,EAAGxB,EAAG25e,IACUl0d,KAU1B,OATIui3B,EAAM,GACR/9yB,EAAKxqD,KAAOz/B,EAAEy/B,KACdwqD,EAAKwW,MAAQzgG,EACbA,EAAEy/B,KAAO,MACAuo2B,GAAO,IAChB/9yB,EAAKwW,MAAQzgG,EAAEygG,MACfxW,EAAKxqD,KAAOz/B,EACZA,EAAEygG,MAAQ,MAELxW,CACT,CACA,SAASzkF,EAAMigB,EAAK5hB,EAAG81e,GACrB,IAAIl6c,EAAO,KACPghE,EAAQ,KACZ,GAAI58F,EAAG,CAEL,IAAImk4B,EAAMruZ,GADV91e,EAAI0qzC,EAAM9oyC,EAAK5hB,EAAG81e,IACKl0d,IAAKA,GAChB,IAARui3B,GACFvo2B,EAAO57B,EAAE47B,KACTghE,EAAQ58F,EAAE48F,OACDunyB,EAAM,GACfvnyB,EAAQ58F,EAAE48F,MACV58F,EAAE48F,MAAQ,KACVhhE,EAAO57B,IAEP47B,EAAO57B,EAAE47B,KACT57B,EAAE47B,KAAO,KACTghE,EAAQ58F,EAEZ,CACA,MAAO,CACL47B,KAAMA,EACNghE,MAAOA,EAEX,CAWA,SAAS+ttC,EAASz9pC,EAAM59H,EAAQs7xC,EAAQ3trC,EAAK4trC,GAC3C,GAAI39pC,EAAM,CACRjwB,EAAS3tG,GAAUs7xC,EAAS,OAAS,QAAUC,EAAU39pC,GAAQ,MACjE,IAAIw5jB,EAASp3rB,GAAUs7xC,EAAS,OAAS,QACrC19pC,EAAKtxH,MAAM+uxC,EAASz9pC,EAAKtxH,KAAM8qrB,GAAQ,EAAOzplB,EAAK4trC,GACnD39pC,EAAKtwD,OAAO+ttC,EAASz9pC,EAAKtwD,MAAO8pnB,GAAQ,EAAMzplB,EAAK4trC,EAC1D,CACF,CACA,IAAIn6L,EAAoB,WACtB,SAASA,EAAK56oB,QACO,IAAfA,IACFA,EAAa200B,GAEf1tzC,KAAKgowB,MAAQ,KACbhowB,KAAK0mtC,MAAQ,EACb1mtC,KAAK+tzC,YAAch10B,CACrB,CA+WA,OA3WA46oB,EAAKj0nC,UAAUq7P,OAAS,SAAUl2O,EAAKrV,GAErC,OADAxP,KAAK0mtC,QACE1mtC,KAAKgowB,MAAQjtgB,EAAOl2O,EAAKrV,EAAMxP,KAAKgowB,MAAOhowB,KAAK+tzC,YACzD,EAIAp6L,EAAKj0nC,UAAUylB,IAAM,SAAUN,EAAKrV,GAClC,IAAI65E,EAAO,IAAIE,EAAK1kE,EAAKrV,GACN,OAAfxP,KAAKgowB,QACP3+qB,EAAKxqD,KAAOwqD,EAAKwW,MAAQ,KACzB7/F,KAAK0mtC,QACL1mtC,KAAKgowB,MAAQ3+qB,GAEf,IAAI0vZ,EAAa/4e,KAAK+tzC,YAClB3uzC,EAAIuuzC,EAAM9oyC,EAAK7kB,KAAKgowB,MAAOjvR,GAC3BquZ,EAAMruZ,EAAWl0d,EAAKzlB,EAAEylB,KAc5B,OAbY,IAARui3B,EAAWpn4B,KAAKgowB,MAAQ5owB,GACtBgo4B,EAAM,GACR/9yB,EAAKxqD,KAAOz/B,EAAEy/B,KACdwqD,EAAKwW,MAAQzgG,EACbA,EAAEy/B,KAAO,MACAuo2B,EAAM,IACf/9yB,EAAKwW,MAAQzgG,EAAEygG,MACfxW,EAAKxqD,KAAOz/B,EACZA,EAAEygG,MAAQ,MAEZ7/F,KAAK0mtC,QACL1mtC,KAAKgowB,MAAQ3+qB,GAERrpF,KAAKgowB,KACd,EAKA2rX,EAAKj0nC,UAAUmzB,OAAS,SAAUhO,GAChC7kB,KAAKgowB,MAAQhowB,KAAK0/iC,QAAQ76hC,EAAK7kB,KAAKgowB,MAAOhowB,KAAK+tzC,YAClD,EAIAp6L,EAAKj0nC,UAAUggjC,QAAU,SAAU9+iC,EAAGxB,EAAG25e,GACvC,IAAI90e,EACJ,OAAU,OAAN7E,EAAmB,KAGX,IADF25e,EAAWn4e,GADrBxB,EAAIuuzC,EAAM/szC,EAAGxB,EAAG25e,IACUl0d,MAGT,OAAXzlB,EAAEy/B,KACJ56B,EAAI7E,EAAEygG,OAEN57F,EAAI0pzC,EAAM/szC,EAAGxB,EAAEy/B,KAAMk6c,IACnBl5Y,MAAQzgG,EAAEygG,MAEd7/F,KAAK0mtC,QACEzitC,GAEF7E,CACT,EAIAu0nC,EAAKj0nC,UAAUkC,IAAM,WACnB,IAAIynF,EAAOrpF,KAAKgowB,MAChB,GAAI3+qB,EAAM,CACR,KAAOA,EAAKxqD,MAAMwqD,EAAOA,EAAKxqD,KAG9B,OAFA7+B,KAAKgowB,MAAQ2ljB,EAAMtkuC,EAAKxkE,IAAK7kB,KAAKgowB,MAAOhowB,KAAK+tzC,aAC9C/tzC,KAAKgowB,MAAQhowB,KAAK0/iC,QAAQr29B,EAAKxkE,IAAK7kB,KAAKgowB,MAAOhowB,KAAK+tzC,aAC9C,CACLlpyC,IAAKwkE,EAAKxkE,IACVrV,KAAM65E,EAAK75E,KAEf,CACA,OAAO,IACT,EAIAmknC,EAAKj0nC,UAAUsuzC,WAAa,SAAUnpyC,GAGpC,IAFA,IAAIkb,EAAU//B,KAAKgowB,MACf99oB,EAAUlqH,KAAK+tzC,YACZhuxC,GAAS,CACd,IAAIqn2B,EAAMl9wB,EAAQrlG,EAAKkb,EAAQlb,KAC/B,GAAY,IAARui3B,EAAW,OAAOrn2B,EAA0BA,EAATqn2B,EAAM,EAAarn2B,EAAQlB,KAAoBkB,EAAQ8/D,KAChG,CACA,OAAO,IACT,EACA8zhC,EAAKj0nC,UAAUgnC,KAAO,SAAU7hB,GAC9B,OAAI7kB,KAAKgowB,QACPhowB,KAAKgowB,MAAQ2ljB,EAAM9oyC,EAAK7kB,KAAKgowB,MAAOhowB,KAAK+tzC,aACK,IAA1C/tzC,KAAK+tzC,YAAYlpyC,EAAK7kB,KAAKgowB,MAAMnjvB,MAAmB,KAEnD7kB,KAAKgowB,KACd,EACA2rX,EAAKj0nC,UAAUk9B,SAAW,SAAU/X,GAGlC,IAFA,IAAIkb,EAAU//B,KAAKgowB,MACf99oB,EAAUlqH,KAAK+tzC,YACZhuxC,GAAS,CACd,IAAIqn2B,EAAMl9wB,EAAQrlG,EAAKkb,EAAQlb,KAC/B,GAAY,IAARui3B,EAAW,OAAO,EAAuBrn2B,EAATqn2B,EAAM,EAAarn2B,EAAQlB,KAAoBkB,EAAQ8/D,KAC7F,CACA,OAAO,CACT,EACA8zhC,EAAKj0nC,UAAUwlB,QAAU,SAAU+/I,EAASqyE,GAI1C,IAHA,IAAIv3M,EAAU//B,KAAKgowB,MACfhiwB,EAAI,GACJ9E,GAAO,GACHA,GACU,OAAZ6+B,GACF/5B,EAAEnE,KAAKk+B,GACPA,EAAUA,EAAQlB,MAED,IAAb74B,EAAE3F,QACJ0/B,EAAU/5B,EAAEpE,MACZqjK,EAAQrlK,KAAK03O,EAAKv3M,GAClBA,EAAUA,EAAQ8/D,OACb3+F,GAAO,EAGlB,OAAOlB,IACT,EAIA2znC,EAAKj0nC,UAAUqiI,MAAQ,SAAUrrD,EAAKD,EAAMvlE,EAAIomO,GAK9C,IAJA,IAAItxO,EAAI,GACJkkH,EAAUlqH,KAAK+tzC,YACf1kuC,EAAOrpF,KAAKgowB,MAEI,IAAbhiwB,EAAE3F,QAAgBgpF,GACvB,GAAIA,EACFrjF,EAAEnE,KAAKwnF,GACPA,EAAOA,EAAKxqD,SACP,CAGL,GADMqrF,GADN7gC,EAAOrjF,EAAEpE,OACUijB,IAAK4xD,GACd,EACR,MACK,GAAIyzC,EAAQ7gC,EAAKxkE,IAAK6xD,IAAQ,GAC/BxlE,EAAGtR,KAAK03O,EAAKjuJ,GAAO,OAAOrpF,KAEjCqpF,EAAOA,EAAKwW,KACd,CAEF,OAAO7/F,IACT,EAIA2znC,EAAKj0nC,UAAU4T,KAAO,WACpB,IAAIA,EAAO,GAKX,OAJAtT,KAAKklB,SAAQ,SAAUyR,GACrB,IAAI9R,EAAM8R,EAAG9R,IACb,OAAOvR,EAAKzR,KAAKgjB,EACnB,IACOvR,CACT,EAIAqgnC,EAAKj0nC,UAAUgd,OAAS,WACtB,IAAIA,EAAS,GAKb,OAJA1c,KAAKklB,SAAQ,SAAUyR,GACrB,IAAInnB,EAAOmnB,EAAGnnB,KACd,OAAOkN,EAAO7a,KAAK2N,EACrB,IACOkN,CACT,EACAi3mC,EAAKj0nC,UAAUmO,IAAM,WACnB,OAAI7N,KAAKgowB,MAAchowB,KAAKiuzC,QAAQjuzC,KAAKgowB,OAAOnjvB,IACzC,IACT,EACA8umC,EAAKj0nC,UAAUiO,IAAM,WACnB,OAAI3N,KAAKgowB,MAAchowB,KAAKkuzC,QAAQluzC,KAAKgowB,OAAOnjvB,IACzC,IACT,EACA8umC,EAAKj0nC,UAAUuuzC,QAAU,SAAU7uzC,GAIjC,QAHU,IAANA,IACFA,EAAIY,KAAKgowB,OAEP5owB,EAAG,KAAOA,EAAEy/B,MAAMz/B,EAAIA,EAAEy/B,KAC5B,OAAOz/B,CACT,EACAu0nC,EAAKj0nC,UAAUwuzC,QAAU,SAAU9uzC,GAIjC,QAHU,IAANA,IACFA,EAAIY,KAAKgowB,OAEP5owB,EAAG,KAAOA,EAAEygG,OAAOzgG,EAAIA,EAAEygG,MAC7B,OAAOzgG,CACT,EAIAu0nC,EAAKj0nC,UAAU8L,GAAK,SAAUwR,GAK5B,IAJA,IAAI+iB,EAAU//B,KAAKgowB,MACf9mwB,GAAO,EACPN,EAAI,EACJoF,EAAI,IACA9E,GACN,GAAI6+B,EACF/5B,EAAEnE,KAAKk+B,GACPA,EAAUA,EAAQlB,UAElB,GAAI74B,EAAE3F,OAAS,EAAG,CAEhB,GADA0/B,EAAU/5B,EAAEpE,MACRhB,IAAMoc,EAAO,OAAO+iB,EACxBn/B,IACAm/B,EAAUA,EAAQ8/D,KACpB,MAAO3+F,GAAO,EAGlB,OAAO,IACT,EACAyynC,EAAKj0nC,UAAUqB,KAAO,SAAU4B,GAC9B,IAAIwtJ,EAAOnwJ,KAAKgowB,MACZ4uP,EAAY,KAChB,GAAIj0/B,EAAEk9F,MAAO,CAEX,IADA+25B,EAAYj0/B,EAAEk9F,MACP+25B,EAAU/39B,MAAM+39B,EAAYA,EAAU/39B,KAC7C,OAAO+39B,CACT,CAEA,IADA,IAAI79gB,EAAa/4e,KAAK+tzC,YACf59pC,GAAM,CACX,IAAIi3uB,EAAMruZ,EAAWp2e,EAAEkiB,IAAKsrI,EAAKtrI,KACjC,GAAY,IAARui3B,EAAW,MAAeA,EAAM,GAClCwvH,EAAYzm2B,EACZA,EAAOA,EAAKtxH,MACPsxH,EAAOA,EAAKtwD,KACrB,CACA,OAAO+25B,CACT,EACA+8H,EAAKj0nC,UAAUopJ,KAAO,SAAUnmJ,GAC9B,IAAIwtJ,EAAOnwJ,KAAKgowB,MACZ2uP,EAAc,KAClB,GAAe,OAAXh0/B,EAAEk8B,KAAe,CAEnB,IADA839B,EAAch0/B,EAAEk8B,KACT839B,EAAY925B,OAAO825B,EAAcA,EAAY925B,MACpD,OAAO825B,CACT,CAEA,IADA,IAAI59gB,EAAa/4e,KAAK+tzC,YACf59pC,GAAM,CACX,IAAIi3uB,EAAMruZ,EAAWp2e,EAAEkiB,IAAKsrI,EAAKtrI,KACjC,GAAY,IAARui3B,EAAW,MAAeA,EAAM,EAAGj3uB,EAAOA,EAAKtxH,MACjD839B,EAAcxm2B,EACdA,EAAOA,EAAKtwD,MAEhB,CACA,OAAO825B,CACT,EACAg9H,EAAKj0nC,UAAUslB,MAAQ,WAGrB,OAFAhlB,KAAKgowB,MAAQ,KACbhowB,KAAK0mtC,MAAQ,EACN1mtC,IACT,EACA2znC,EAAKj0nC,UAAUyuzC,OAAS,WACtB,OAmIJ,SAAgBh+pC,GAMd,IALA,IAAIpwH,EAAUowH,EACVnqJ,EAAI,GACJ9E,GAAO,EACP6lD,EAAO,IAAIwiC,EAAK,KAAM,MACtBzmF,EAAIikD,GACA7lD,GACF6+B,GACF/5B,EAAEnE,KAAKk+B,GACPA,EAAUA,EAAQlB,MAEd74B,EAAE3F,OAAS,EAEb0/B,GADAA,EAAUj9B,EAAIA,EAAE/B,KAAOiF,EAAEpE,OACPi+F,MACb3+F,GAAO,EAIlB,OADA4B,EAAE/B,KAAO,KACFgmD,EAAKhmD,IACd,CAtJWotzC,CAAOnuzC,KAAKgowB,MACrB,EAIA2rX,EAAKj0nC,UAAUmlJ,KAAO,SAAUvxI,EAAMoJ,EAAQ0xyC,QAC7B,IAAX1xyC,IACFA,EAAS,SAEK,IAAZ0xyC,IACFA,GAAU,GAEZ,IAAIxpyC,EAAOtR,EAAKjT,OACZ04e,EAAa/4e,KAAK+tzC,YAGtB,GADIK,GAAS7hxC,EAAKj5B,EAAMoJ,EAAQ,EAAGkI,EAAO,EAAGm0d,GAC1B,OAAf/4e,KAAKgowB,MAEPhowB,KAAKgowB,MAAQqmjB,EAAc/6yC,EAAMoJ,EAAQ,EAAGkI,GAC5C5kB,KAAK0mtC,MAAQ9hsC,MACR,CAEL,IAAI0pyC,EA8IV,SAAoBjjoC,EAAIC,EAAIphE,GAK1B,IAJA,IAAInjE,EAAO,IAAIwiC,EAAK,KAAM,MACtBzmF,EAAIikD,EACJs5L,EAAKh1D,EACL04E,EAAKz4E,EACK,OAAP+0D,GAAsB,OAAP0jB,GAChB75I,EAAQm2H,EAAGx7N,IAAKk/O,EAAGl/O,KAAO,GAC5B/hB,EAAE/B,KAAOs/O,EACTA,EAAKA,EAAGt/O,OAER+B,EAAE/B,KAAOgjQ,EACTA,EAAKA,EAAGhjQ,MAEV+B,EAAIA,EAAE/B,KAOR,OALW,OAAPs/O,EACFv9O,EAAE/B,KAAOs/O,EACO,OAAP0jB,IACTjhQ,EAAE/B,KAAOgjQ,GAEJh9M,EAAKhmD,IACd,CAnKuBwtzC,CAAWvuzC,KAAKmuzC,SAoGvC,SAAoB76yC,EAAMoJ,GAGxB,IAFA,IAAIqqC,EAAO,IAAIwiC,EAAK,KAAM,MACtBzmF,EAAIikD,EACCnmD,EAAI,EAAGA,EAAI0S,EAAKjT,OAAQO,IAC/BkC,EAAIA,EAAE/B,KAAO,IAAIwoF,EAAKj2E,EAAK1S,GAAI8b,EAAO9b,IAGxC,OADAkC,EAAE/B,KAAO,KACFgmD,EAAKhmD,IACd,CA5GiDggkC,CAAWztjC,EAAMoJ,GAASq8d,GACrEn0d,EAAO5kB,KAAK0mtC,MAAQ9hsC,EACpB5kB,KAAKgowB,MAAQwmjB,EAAgB,CAC3BznwC,KAAMunwC,GACL,EAAG1pyC,EACR,CACA,OAAO5kB,IACT,EACA2znC,EAAKj0nC,UAAU2oE,QAAU,WACvB,OAAsB,OAAfroE,KAAKgowB,KACd,EACA1owB,OAAO4D,eAAeywnC,EAAKj0nC,UAAW,OAAQ,CAC5CyD,IAAK,WACH,OAAOnD,KAAK0mtC,KACd,EACA/itC,YAAY,EACZG,cAAc,IAEhBxE,OAAO4D,eAAeywnC,EAAKj0nC,UAAW,OAAQ,CAC5CyD,IAAK,WACH,OAAOnD,KAAKgowB,KACd,EACArkwB,YAAY,EACZG,cAAc,IAEhB6vnC,EAAKj0nC,UAAU6E,SAAW,SAAUupzC,QAChB,IAAdA,IACFA,EAAY,SAAUzuzC,GACpB,OAAOS,OAAOT,EAAEwlB,IAClB,GAEF,IAAIq7G,EAAM,GAIV,OAHA0trC,EAAS5tzC,KAAKgowB,MAAO,IAAI,GAAM,SAAU/kwB,GACvC,OAAOi9H,EAAIr+H,KAAKoB,EAClB,GAAG6qzC,GACI5trC,EAAIrzH,KAAK,GAClB,EACA8mnC,EAAKj0nC,UAAU6uE,OAAS,SAAU1pD,EAAK47hC,EAAQjrtB,GAC7C,IAAIujJ,EAAa/4e,KAAK+tzC,YAClBp3xC,EAAK/xB,EAAMigB,EAAK7kB,KAAKgowB,MAAOjvR,GAC9Bl6c,EAAOlI,EAAGkI,KACVghE,EAAQlpE,EAAGkpE,MACTk5Y,EAAWl0d,EAAK47hC,GAAU,EAC5B5g9B,EAAQk7J,EAAO0lzB,EAAQjrtB,EAAS31P,EAAOk5Y,GAEvCl6c,EAAOk8N,EAAO0lzB,EAAQjrtB,EAAS32T,EAAMk6c,GAEvC/4e,KAAKgowB,MAnWT,SAAenpuB,EAAMghE,EAAOk5Y,GAC1B,OAAc,OAAVl5Y,EAAuBhhE,GACd,OAATA,KACJghE,EAAQ8ttC,EAAM9uxC,EAAKha,IAAKg7E,EAAOk5Y,IACzBl6c,KAAOA,GAFaghE,EAI5B,CA6ViBihK,CAAMjiO,EAAMghE,EAAOk5Y,EAClC,EACA46oB,EAAKj0nC,UAAUkF,MAAQ,SAAUigB,GAC/B,OAAOjgB,EAAMigB,EAAK7kB,KAAKgowB,MAAOhowB,KAAK+tzC,YACrC,EACAp6L,EAAKj0nC,UAAUgC,OAAOC,UAAY,WAChC,IAAIo+B,EAAS/5B,EAAG9E,EAChB,OAAOmqB,EAAYrrB,MAAM,SAAU22B,GACjC,OAAQA,EAAGt1B,OACT,KAAK,EACH0+B,EAAU//B,KAAKgowB,MACfhiwB,EAAI,GACJ9E,GAAO,EACPy1B,EAAGt1B,MAAQ,EACb,KAAK,EACH,OAAMH,EAAa,CAAC,EAAa,GACf,OAAZ6+B,EAA0B,CAAC,EAAa,IAC9C/5B,EAAEnE,KAAKk+B,GACPA,EAAUA,EAAQlB,KACX,CAAC,EAAa,IACvB,KAAK,EACH,OAAmB,IAAb74B,EAAE3F,OAAsB,CAAC,EAAa,GAErC,CAAC,EADR0/B,EAAU/5B,EAAEpE,OAEd,KAAK,EAGH,OAFA+0B,EAAGr1B,OACHy+B,EAAUA,EAAQ8/D,MACX,CAAC,EAAa,GACvB,KAAK,EACH3+F,GAAO,EACPy1B,EAAGt1B,MAAQ,EACb,KAAK,EACH,MAAO,CAAC,EAAa,GACvB,KAAK,EACH,MAAO,CAAC,GAEd,GACF,EACOsynC,CACT,CAxXwB,GAyXxB,SAAS06L,EAAc/6yC,EAAMoJ,EAAQ8pB,EAAOC,GAC1C,IAAI7hB,EAAO6hB,EAAMD,EACjB,GAAI5hB,EAAO,EAAG,CACZ,IAAI6kO,EAASjjN,EAAQ3jC,KAAKyK,MAAMsX,EAAO,GACnCC,EAAMvR,EAAKm2O,GACXj6O,EAAOkN,EAAO+sO,GACdpgK,EAAO,IAAIE,EAAK1kE,EAAKrV,GAGzB,OAFA65E,EAAKxqD,KAAOwvxC,EAAc/6yC,EAAMoJ,EAAQ8pB,EAAOijN,GAC/CpgK,EAAKwW,MAAQwutC,EAAc/6yC,EAAMoJ,EAAQ+sO,EAAS,EAAGhjN,GAC9C4iD,CACT,CACA,OAAO,IACT,CA8BA,SAASmluC,EAAgBr4uC,EAAM3vC,EAAOC,GACpC,IAAI7hB,EAAO6hB,EAAMD,EACjB,GAAI5hB,EAAO,EAAG,CACZ,IAAI6kO,EAASjjN,EAAQ3jC,KAAKyK,MAAMsX,EAAO,GACnCia,EAAO2vxC,EAAgBr4uC,EAAM3vC,EAAOijN,GACpCt5F,EAAOh6E,EAAKpvB,KAIhB,OAHAopG,EAAKtxH,KAAOA,EACZs3C,EAAKpvB,KAAOovB,EAAKpvB,KAAKhmD,KACtBovJ,EAAKtwD,MAAQ2utC,EAAgBr4uC,EAAMszK,EAAS,EAAGhjN,GACxC0pH,CACT,CACA,OAAO,IACT,CAuBA,SAAS5jH,EAAKj5B,EAAMoJ,EAAQmiB,EAAMghE,EAAOqqB,GACvC,KAAIrrF,GAAQghE,GAAZ,CAIA,IAHA,IAAIy8R,EAAQhpX,EAAKurB,EAAOghE,GAAS,GAC7Bj/F,EAAIi+B,EAAO,EACXz6B,EAAIy7F,EAAQ,IACH,CACX,GAAGj/F,UAAYspH,EAAQ52G,EAAK1S,GAAI07X,GAAS,GACzC,GAAGl4X,UAAY8lH,EAAQ52G,EAAKlP,GAAIk4X,GAAS,GACzC,GAAI17X,GAAKwD,EAAG,MACZ,IAAIw/V,EAAMtwV,EAAK1S,GACf0S,EAAK1S,GAAK0S,EAAKlP,GACfkP,EAAKlP,GAAKw/V,EACVA,EAAMlnV,EAAO9b,GACb8b,EAAO9b,GAAK8b,EAAOtY,GACnBsY,EAAOtY,GAAKw/V,CACd,CACAr3T,EAAKj5B,EAAMoJ,EAAQmiB,EAAMz6B,EAAG8lH,GAC5B39E,EAAKj5B,EAAMoJ,EAAQtY,EAAI,EAAGy7F,EAAOqqB,EAhBR,CAiB3B,CASA,MAAMuksC,EAAW,CAACpjxC,EAAM8pG,IACf9pG,EAAKqjxC,GAAGzqzC,GAAKkxI,EAAMlxI,GAAKkxI,EAAMlxI,GAAKonC,EAAK71B,GAAGvR,GAAKonC,EAAKqjxC,GAAG1rzC,GAAKmyI,EAAMnyI,GAAKmyI,EAAMnyI,GAAKqoC,EAAK71B,GAAGxS,EAM9F2rzC,EAAiB,CAACjr9B,EAAIC,KAE1B,GAAIA,EAAGnuV,GAAGvR,EAAIy/V,EAAGgr9B,GAAGzqzC,GAAKy/V,EAAGluV,GAAGvR,EAAI0/V,EAAG+q9B,GAAGzqzC,GAAK0/V,EAAGnuV,GAAGxS,EAAI0gW,EAAGgr9B,GAAG1rzC,GAAK0gW,EAAGluV,GAAGxS,EAAI2gW,EAAG+q9B,GAAG1rzC,EAAG,OAAO,KAG7F,MAAM4rzC,EAASlr9B,EAAGgr9B,GAAGzqzC,EAAI0/V,EAAG+q9B,GAAGzqzC,EAAI0/V,EAAG+q9B,GAAGzqzC,EAAIy/V,EAAGgr9B,GAAGzqzC,EAC7C4qzC,EAASnr9B,EAAGluV,GAAGvR,EAAI0/V,EAAGnuV,GAAGvR,EAAIy/V,EAAGluV,GAAGvR,EAAI0/V,EAAGnuV,GAAGvR,EAOnD,MAAO,CACLyqzC,GAAI,CACFzqzC,EAAG2qzC,EACH5rzC,EAPW0gW,EAAGgr9B,GAAG1rzC,EAAI2gW,EAAG+q9B,GAAG1rzC,EAAI2gW,EAAG+q9B,GAAG1rzC,EAAI0gW,EAAGgr9B,GAAG1rzC,GASjDwS,GAAI,CACFvR,EAAG4qzC,EACH7rzC,EAVW0gW,EAAGluV,GAAGxS,EAAI2gW,EAAGnuV,GAAGxS,EAAI0gW,EAAGluV,GAAGxS,EAAI2gW,EAAGnuV,GAAGxS,GAYlD,EASH,IAAI8rzC,EAAY3pxC,OAAOyjH,aAGL76G,IAAd+gxC,IAAyBA,EAAYjszC,KAAK6yF,IAAI,GAAI,KACtD,MAAMq5tC,EAAaD,EAAYA,EAGzB1nb,EAAM,CAACpm4B,EAAGsC,KAEd,IAAKwrzC,EAAY9tzC,GAAKA,EAAI8tzC,IACnBA,EAAYxrzC,GAAKA,EAAIwrzC,EACxB,OAAO,EAKX,MAAM3llC,EAAKnoO,EAAIsC,EACf,OAAI6lO,EAAKA,EAAK4llC,EAAa/tzC,EAAIsC,EACtB,EAIFtC,EAAIsC,GAAK,EAAI,CAAC,EA+BvB,MAAM0rzC,EACJ,WAAA/uzC,GACED,KAAK+5Z,KAAO,IAAI45tB,EAEhB3znC,KAAKijD,MAAM,EACb,CASA,KAAAA,CAAMg8G,GACJ,MAAM51E,EAAOrpF,KAAK+5Z,KAAK50Y,IAAI85I,GACrBgwpC,EAAWjvzC,KAAK+5Z,KAAKjxQ,KAAKz/D,GAChC,GAAiB,OAAb4luC,GAAqD,IAAhC7nb,EAAI/9yB,EAAKxkE,IAAKoqyC,EAASpqyC,KAE9C,OADA7kB,KAAK+5Z,KAAKlnY,OAAOosI,GACVgwpC,EAASpqyC,IAElB,MAAM45K,EAAWz+L,KAAK+5Z,KAAKh5Z,KAAKsoF,GAChC,OAAiB,OAAbo1G,GAAqD,IAAhC2osB,EAAI/9yB,EAAKxkE,IAAK45K,EAAS55K,MAC9C7kB,KAAK+5Z,KAAKlnY,OAAOosI,GACVw/B,EAAS55K,KAEXo6I,CACT,EAIF,MAAMiwpC,EAAU,IA9ChB,MACE,WAAAjvzC,GACED,KAAKihE,OACP,CACA,KAAAA,GACEjhE,KAAKmvzC,SAAW,IAAIH,EACpBhvzC,KAAKovzC,SAAW,IAAIJ,CACtB,CACA,KAAA/rwC,CAAMh/C,EAAGjB,GACP,MAAO,CACLiB,EAAGjE,KAAKmvzC,SAASlswC,MAAMh/C,GACvBjB,EAAGhD,KAAKovzC,SAASnswC,MAAMjgD,GAE3B,GAmCIynL,EAAU,sBACV4koC,EAAW,UACXC,GAAkB,EAAI,EAAI7koC,GAAWA,EAG3C,SAAS37E,EAAIygtC,EAAMpwzC,EAAGqwzC,EAAM9szC,EAAGE,GAC7B,IAAIoD,EAAGypzC,EAAM94mB,EAAI+4mB,EACbC,EAAOxwzC,EAAE,GACTywzC,EAAOltzC,EAAE,GACTmtzC,EAAS,EACTC,EAAS,EACTF,EAAOD,GAASC,GAAQD,GAC1B3pzC,EAAI2pzC,EACJA,EAAOxwzC,IAAI0wzC,KAEX7pzC,EAAI4pzC,EACJA,EAAOltzC,IAAIotzC,IAEb,IAAIC,EAAS,EACb,GAAIF,EAASN,GAAQO,EAASN,EAc5B,IAbII,EAAOD,GAASC,GAAQD,GAC1BF,EAAOE,EAAO3pzC,EACd2wsB,EAAK3wsB,GAAKypzC,EAAOE,GACjBA,EAAOxwzC,IAAI0wzC,KAEXJ,EAAOG,EAAO5pzC,EACd2wsB,EAAK3wsB,GAAKypzC,EAAOG,GACjBA,EAAOltzC,IAAIotzC,IAEb9pzC,EAAIypzC,EACO,IAAP94mB,IACF/zsB,EAAEmtzC,KAAYp5mB,GAETk5mB,EAASN,GAAQO,EAASN,GAC3BI,EAAOD,GAASC,GAAQD,GAC1BF,EAAOzpzC,EAAI2pzC,EACXD,EAAQD,EAAOzpzC,EACf2wsB,EAAK3wsB,GAAKypzC,EAAOC,IAAUC,EAAOD,GAClCC,EAAOxwzC,IAAI0wzC,KAEXJ,EAAOzpzC,EAAI4pzC,EACXF,EAAQD,EAAOzpzC,EACf2wsB,EAAK3wsB,GAAKypzC,EAAOC,IAAUE,EAAOF,GAClCE,EAAOltzC,IAAIotzC,IAEb9pzC,EAAIypzC,EACO,IAAP94mB,IACF/zsB,EAAEmtzC,KAAYp5mB,GAIpB,KAAOk5mB,EAASN,GACdE,EAAOzpzC,EAAI2pzC,EACXD,EAAQD,EAAOzpzC,EACf2wsB,EAAK3wsB,GAAKypzC,EAAOC,IAAUC,EAAOD,GAClCC,EAAOxwzC,IAAI0wzC,GACX7pzC,EAAIypzC,EACO,IAAP94mB,IACF/zsB,EAAEmtzC,KAAYp5mB,GAGlB,KAAOm5mB,EAASN,GACdC,EAAOzpzC,EAAI4pzC,EACXF,EAAQD,EAAOzpzC,EACf2wsB,EAAK3wsB,GAAKypzC,EAAOC,IAAUE,EAAOF,GAClCE,EAAOltzC,IAAIotzC,GACX9pzC,EAAIypzC,EACO,IAAP94mB,IACF/zsB,EAAEmtzC,KAAYp5mB,GAMlB,OAHU,IAAN3wsB,GAAsB,IAAX+pzC,IACbntzC,EAAEmtzC,KAAY/pzC,GAET+pzC,CACT,CAMA,SAAS109B,EAAIh8V,GACX,OAAO,IAAI4gB,aAAa5gB,EAC1B,CAEA,MACM2wzC,EAAe,sBACfC,EAAe,sBACflqzC,EAAIs1V,EAAI,GACR609B,EAAK709B,EAAI,GACT809B,EAAK909B,EAAI,IACT91V,EAAI81V,EAAI,IACRh5V,EAAIg5V,EAAI,GAoJd,SAAS+09B,EAASxy9B,EAAIC,EAAIG,EAAIC,EAAIv9F,EAAIumG,GACpC,MAAMop9B,GAAWxy9B,EAAKoJ,IAAOjJ,EAAKt9F,GAC5B4vjC,GAAY1y9B,EAAKl9F,IAAOu9F,EAAKgJ,GAC7BmnmB,EAAMiiX,EAAUC,EAChBC,EAAS1tzC,KAAKmjH,IAAIqqsC,EAAUC,GAClC,OAAIztzC,KAAKmjH,IAAIoo1B,IAhKM,sBAgKiBmiX,EAAeniX,GAxJrD,SAAuBxwmB,EAAIC,EAAIG,EAAIC,EAAIv9F,EAAIumG,EAAIsp9B,GAC7C,IAAIC,EAASC,EAASC,EAASC,EAC3BjB,EAAO7uzC,EAAG+vzC,EAAKC,EAAKC,EAAKC,EAAKtyyC,EAAIupF,EAAIgptC,EAAI90F,EAAI+0F,EAAI9hoC,EAAIm0mB,EAAIl4mB,EAC9D,MAAM8loC,EAAMtz9B,EAAKl9F,EACXywjC,EAAMnz9B,EAAKt9F,EACX0wjC,EAAMvz9B,EAAKoJ,EACXoq9B,EAAMpz9B,EAAKgJ,EACjBi13B,EAAKg1F,EAAMG,EACXxwzC,EAAIwuzC,EAAW6B,EACfN,EAAM/vzC,GAAKA,EAAIqwzC,GACfL,EAAMK,EAAMN,EACZ/vzC,EAAIwuzC,EAAWgC,EACfP,EAAMjwzC,GAAKA,EAAIwwzC,GACfN,EAAMM,EAAMP,EACZG,EAAKJ,EAAME,GAAO70F,EAAK00F,EAAME,EAAMD,EAAMC,EAAMF,EAAMG,GACrD5hoC,EAAKiioC,EAAMD,EACXtwzC,EAAIwuzC,EAAW+B,EACfR,EAAM/vzC,GAAKA,EAAIuwzC,GACfP,EAAMO,EAAMR,EACZ/vzC,EAAIwuzC,EAAW8B,EACfL,EAAMjwzC,GAAKA,EAAIswzC,GACfJ,EAAMI,EAAML,EACZxthB,EAAKuthB,EAAME,GAAO5hoC,EAAKyhoC,EAAME,EAAMD,EAAMC,EAAMF,EAAMG,GACrDtyyC,EAAKwyyC,EAAK3thB,EACVoshB,EAAQuB,EAAKxyyC,EACb1Y,EAAE,GAAKkrzC,GAAMxyyC,EAAKixyC,IAAUA,EAAQpshB,GACpCt7rB,EAAKk0nC,EAAKz9sC,EACVixyC,EAAQ1ntC,EAAKk0nC,EACb80F,EAAK90F,GAAMl0nC,EAAK0ntC,IAAUjxyC,EAAKixyC,GAC/BjxyC,EAAKuyyC,EAAK7hoC,EACVugoC,EAAQsB,EAAKvyyC,EACb1Y,EAAE,GAAKirzC,GAAMvyyC,EAAKixyC,IAAUA,EAAQvgoC,GACpC/D,EAAKpjF,EAAKvpF,EACVixyC,EAAQtkoC,EAAKpjF,EACbjiG,EAAE,GAAKiiG,GAAMojF,EAAKskoC,IAAUjxyC,EAAKixyC,GACjC3pzC,EAAE,GAAKqlL,EACP,IAAIgjxB,EArDN,SAAkBmhX,EAAMpwzC,GACtB,IAAI6G,EAAI7G,EAAE,GACV,IAAK,IAAIyB,EAAI,EAAGA,EAAI2uzC,EAAM3uzC,IAAKoF,GAAK7G,EAAEyB,GACtC,OAAOoF,CACT,CAiDYsrzC,CAAS,EAAGvrzC,GAClBwrzC,EAAWvB,EAAeO,EAC9B,GAAIniX,GAAOmjX,IAAanjX,GAAOmjX,EAC7B,OAAOnjX,EAUT,GARAshX,EAAQ9x9B,EAAKsz9B,EACbV,EAAU5y9B,GAAMsz9B,EAAMxB,IAAUA,EAAQhvjC,GACxCgvjC,EAAQ1x9B,EAAKmz9B,EACbT,EAAU1y9B,GAAMmz9B,EAAMzB,IAAUA,EAAQhvjC,GACxCgvjC,EAAQ7x9B,EAAKuz9B,EACbX,EAAU5y9B,GAAMuz9B,EAAM1B,IAAUA,EAAQzo9B,GACxCyo9B,EAAQzx9B,EAAKoz9B,EACbV,EAAU1y9B,GAAMoz9B,EAAM3B,IAAUA,EAAQzo9B,GACxB,IAAZup9B,GAA6B,IAAZC,GAA6B,IAAZC,GAA6B,IAAZC,EACrD,OAAOviX,EAIT,GAFAmjX,EAAWtB,EAAeM,EAASjB,EAAiBzszC,KAAKmjH,IAAIoo1B,GAC7DA,GAAO8iX,EAAMP,EAAUU,EAAMb,GAAWY,EAAMV,EAAUS,EAAMV,GAC1DriX,GAAOmjX,IAAanjX,GAAOmjX,EAAU,OAAOnjX,EAChD8tR,EAAKs0F,EAAUa,EACfxwzC,EAAIwuzC,EAAWmB,EACfI,EAAM/vzC,GAAKA,EAAI2vzC,GACfK,EAAML,EAAUI,EAChB/vzC,EAAIwuzC,EAAWgC,EACfP,EAAMjwzC,GAAKA,EAAIwwzC,GACfN,EAAMM,EAAMP,EACZG,EAAKJ,EAAME,GAAO70F,EAAK00F,EAAME,EAAMD,EAAMC,EAAMF,EAAMG,GACrD5hoC,EAAKshoC,EAAUU,EACftwzC,EAAIwuzC,EAAWoB,EACfG,EAAM/vzC,GAAKA,EAAI4vzC,GACfI,EAAMJ,EAAUG,EAChB/vzC,EAAIwuzC,EAAW8B,EACfL,EAAMjwzC,GAAKA,EAAIswzC,GACfJ,EAAMI,EAAML,EACZxthB,EAAKuthB,EAAME,GAAO5hoC,EAAKyhoC,EAAME,EAAMD,EAAMC,EAAMF,EAAMG,GACrDtyyC,EAAKwyyC,EAAK3thB,EACVoshB,EAAQuB,EAAKxyyC,EACbpc,EAAE,GAAK4uzC,GAAMxyyC,EAAKixyC,IAAUA,EAAQpshB,GACpCt7rB,EAAKk0nC,EAAKz9sC,EACVixyC,EAAQ1ntC,EAAKk0nC,EACb80F,EAAK90F,GAAMl0nC,EAAK0ntC,IAAUjxyC,EAAKixyC,GAC/BjxyC,EAAKuyyC,EAAK7hoC,EACVugoC,EAAQsB,EAAKvyyC,EACbpc,EAAE,GAAK2uzC,GAAMvyyC,EAAKixyC,IAAUA,EAAQvgoC,GACpC/D,EAAKpjF,EAAKvpF,EACVixyC,EAAQtkoC,EAAKpjF,EACb3lG,EAAE,GAAK2lG,GAAMojF,EAAKskoC,IAAUjxyC,EAAKixyC,GACjCrtzC,EAAE,GAAK+oL,EACP,MAAMomoC,EAAQ1itC,EAAI,EAAG/oG,EAAG,EAAG1D,EAAG6tzC,GAC9Bh0F,EAAKg1F,EAAMP,EACX9vzC,EAAIwuzC,EAAW6B,EACfN,EAAM/vzC,GAAKA,EAAIqwzC,GACfL,EAAMK,EAAMN,EACZ/vzC,EAAIwuzC,EAAWsB,EACfG,EAAMjwzC,GAAKA,EAAI8vzC,GACfI,EAAMJ,EAAUG,EAChBG,EAAKJ,EAAME,GAAO70F,EAAK00F,EAAME,EAAMD,EAAMC,EAAMF,EAAMG,GACrD5hoC,EAAKiioC,EAAMV,EACX7vzC,EAAIwuzC,EAAW+B,EACfR,EAAM/vzC,GAAKA,EAAIuwzC,GACfP,EAAMO,EAAMR,EACZ/vzC,EAAIwuzC,EAAWqB,EACfI,EAAMjwzC,GAAKA,EAAI6vzC,GACfK,EAAML,EAAUI,EAChBxthB,EAAKuthB,EAAME,GAAO5hoC,EAAKyhoC,EAAME,EAAMD,EAAMC,EAAMF,EAAMG,GACrDtyyC,EAAKwyyC,EAAK3thB,EACVoshB,EAAQuB,EAAKxyyC,EACbpc,EAAE,GAAK4uzC,GAAMxyyC,EAAKixyC,IAAUA,EAAQpshB,GACpCt7rB,EAAKk0nC,EAAKz9sC,EACVixyC,EAAQ1ntC,EAAKk0nC,EACb80F,EAAK90F,GAAMl0nC,EAAK0ntC,IAAUjxyC,EAAKixyC,GAC/BjxyC,EAAKuyyC,EAAK7hoC,EACVugoC,EAAQsB,EAAKvyyC,EACbpc,EAAE,GAAK2uzC,GAAMvyyC,EAAKixyC,IAAUA,EAAQvgoC,GACpC/D,EAAKpjF,EAAKvpF,EACVixyC,EAAQtkoC,EAAKpjF,EACb3lG,EAAE,GAAK2lG,GAAMojF,EAAKskoC,IAAUjxyC,EAAKixyC,GACjCrtzC,EAAE,GAAK+oL,EACP,MAAMqmoC,EAAQ3itC,EAAI0itC,EAAOtB,EAAI,EAAG7tzC,EAAG8tzC,GACnCj0F,EAAKs0F,EAAUG,EACf9vzC,EAAIwuzC,EAAWmB,EACfI,EAAM/vzC,GAAKA,EAAI2vzC,GACfK,EAAML,EAAUI,EAChB/vzC,EAAIwuzC,EAAWsB,EACfG,EAAMjwzC,GAAKA,EAAI8vzC,GACfI,EAAMJ,EAAUG,EAChBG,EAAKJ,EAAME,GAAO70F,EAAK00F,EAAME,EAAMD,EAAMC,EAAMF,EAAMG,GACrD5hoC,EAAKshoC,EAAUC,EACf7vzC,EAAIwuzC,EAAWoB,EACfG,EAAM/vzC,GAAKA,EAAI4vzC,GACfI,EAAMJ,EAAUG,EAChB/vzC,EAAIwuzC,EAAWqB,EACfI,EAAMjwzC,GAAKA,EAAI6vzC,GACfK,EAAML,EAAUI,EAChBxthB,EAAKuthB,EAAME,GAAO5hoC,EAAKyhoC,EAAME,EAAMD,EAAMC,EAAMF,EAAMG,GACrDtyyC,EAAKwyyC,EAAK3thB,EACVoshB,EAAQuB,EAAKxyyC,EACbpc,EAAE,GAAK4uzC,GAAMxyyC,EAAKixyC,IAAUA,EAAQpshB,GACpCt7rB,EAAKk0nC,EAAKz9sC,EACVixyC,EAAQ1ntC,EAAKk0nC,EACb80F,EAAK90F,GAAMl0nC,EAAK0ntC,IAAUjxyC,EAAKixyC,GAC/BjxyC,EAAKuyyC,EAAK7hoC,EACVugoC,EAAQsB,EAAKvyyC,EACbpc,EAAE,GAAK2uzC,GAAMvyyC,EAAKixyC,IAAUA,EAAQvgoC,GACpC/D,EAAKpjF,EAAKvpF,EACVixyC,EAAQtkoC,EAAKpjF,EACb3lG,EAAE,GAAK2lG,GAAMojF,EAAKskoC,IAAUjxyC,EAAKixyC,GACjCrtzC,EAAE,GAAK+oL,EACP,MAAMsmoC,EAAO5itC,EAAI2itC,EAAOtB,EAAI,EAAG9tzC,EAAGkD,GAClC,OAAOA,EAAEmszC,EAAO,EAClB,CAOUC,CAAc/z9B,EAAIC,EAAIG,EAAIC,EAAIv9F,EAAIumG,EAAIsp9B,EAChD,CAGA,MAAMqB,EAAe,CAAC5wzC,EAAGsC,IAAMtC,EAAEiD,EAAIX,EAAEN,EAAIhC,EAAEgC,EAAIM,EAAEW,EAG7CisY,EAAa,CAAClvY,EAAGsC,IAAMtC,EAAEiD,EAAIX,EAAEW,EAAIjD,EAAEgC,EAAIM,EAAEN,EAG3C6uzC,EAAsB,CAACC,EAAQC,EAAQC,KAC3C,MAAM3sqC,EAAM+qqC,EAAS0B,EAAO7tzC,EAAG6tzC,EAAO9uzC,EAAG+uzC,EAAO9tzC,EAAG8tzC,EAAO/uzC,EAAGgvzC,EAAO/tzC,EAAG+tzC,EAAOhvzC,GAC9E,OAAIqiJ,EAAM,GAAW,EACjBA,EAAM,EAAU,EACb,CAAC,EAEJhlJ,EAAS4C,GAAKJ,KAAK4yF,KAAKy6S,EAAWjtY,EAAGA,IAGtCgvzC,EAAc,CAACC,EAASC,EAAOC,KACnC,MAAM97R,EAAQ,CACZryhC,EAAGkuzC,EAAMluzC,EAAIiuzC,EAAQjuzC,EACrBjB,EAAGmvzC,EAAMnvzC,EAAIkvzC,EAAQlvzC,GAEjBwphC,EAAS,CACbvohC,EAAGmuzC,EAAOnuzC,EAAIiuzC,EAAQjuzC,EACtBjB,EAAGovzC,EAAOpvzC,EAAIkvzC,EAAQlvzC,GAExB,OAAO4uzC,EAAaplS,EAAQ8J,GAASj2hC,EAAOmshC,GAAUnshC,EAAOi2hC,EAAM,EAI/D+7R,EAAgB,CAACH,EAASC,EAAOC,KACrC,MAAM97R,EAAQ,CACZryhC,EAAGkuzC,EAAMluzC,EAAIiuzC,EAAQjuzC,EACrBjB,EAAGmvzC,EAAMnvzC,EAAIkvzC,EAAQlvzC,GAEjBwphC,EAAS,CACbvohC,EAAGmuzC,EAAOnuzC,EAAIiuzC,EAAQjuzC,EACtBjB,EAAGovzC,EAAOpvzC,EAAIkvzC,EAAQlvzC,GAExB,OAAOktY,EAAWs8oB,EAAQ8J,GAASj2hC,EAAOmshC,GAAUnshC,EAAOi2hC,EAAM,EAM7Dg8R,EAAyB,CAACnmzC,EAAIlJ,EAAGD,IACzB,IAARC,EAAED,EAAgB,KACf,CACLiB,EAAGkI,EAAGlI,EAAIhB,EAAEgB,EAAIhB,EAAED,GAAKA,EAAImJ,EAAGnJ,GAC9BA,EAAGA,GAODuvzC,EAAuB,CAACpmzC,EAAIlJ,EAAGgB,IACvB,IAARhB,EAAEgB,EAAgB,KACf,CACLA,EAAGA,EACHjB,EAAGmJ,EAAGnJ,EAAIC,EAAED,EAAIC,EAAEgB,GAAKA,EAAIkI,EAAGlI,IAyClC,MAAMuuzC,EAEJ,cAAOtosC,CAAQlpH,EAAGsC,GAEhB,MAAMmvzC,EAAQD,EAAWE,cAAc1xzC,EAAEm0I,MAAO7xI,EAAE6xI,OAClD,OAAc,IAAVs9qC,EAAoBA,GAGpBzxzC,EAAEm0I,QAAU7xI,EAAE6xI,OAAOn0I,EAAE2+Y,KAAKr8Y,GAG5BtC,EAAE6miB,SAAWvkiB,EAAEukiB,OAAe7miB,EAAE6miB,OAAS,GAAK,EAI3C8qxB,EAAQzosC,QAAQlpH,EAAEq2a,QAAS/za,EAAE+za,SACtC,CAGA,oBAAOq74B,CAAcE,EAAKC,GACxB,OAAID,EAAI3uzC,EAAI4uzC,EAAI5uzC,GAAW,EACvB2uzC,EAAI3uzC,EAAI4uzC,EAAI5uzC,EAAU,EACtB2uzC,EAAI5vzC,EAAI6vzC,EAAI7vzC,GAAW,EACvB4vzC,EAAI5vzC,EAAI6vzC,EAAI7vzC,EAAU,EACnB,CACT,CAGA,WAAA/C,CAAYk1I,EAAO0yZ,QACI95f,IAAjBonG,EAAMt+C,OAAsBs+C,EAAMt+C,OAAS,CAAC72F,MAAWm1I,EAAMt+C,OAAOh1F,KAAK7B,MAC7EA,KAAKm1I,MAAQA,EACbn1I,KAAK6niB,OAASA,CAEhB,CACA,IAAAloJ,CAAK9jW,GACH,GAAIA,EAAMs5F,QAAUn1I,KAAKm1I,MACvB,MAAM,IAAI3tH,MAAM,uCAElB,MAAMsryC,EAAcj3wC,EAAMs5F,MAAMt+C,OAChC,IAAK,IAAIj2F,EAAI,EAAGmyzC,EAAOD,EAAYzyzC,OAAQO,EAAImyzC,EAAMnyzC,IAAK,CACxD,MAAMwmF,EAAM0ruC,EAAYlyzC,GACxBZ,KAAKm1I,MAAMt+C,OAAOh1F,KAAKulF,GACvBA,EAAI+tD,MAAQn1I,KAAKm1I,KACnB,CACAn1I,KAAKgzzC,mBACP,CAIA,iBAAAA,GAOE,MAAMC,EAAYjzzC,KAAKm1I,MAAMt+C,OAAOx2F,OACpC,IAAK,IAAIO,EAAI,EAAGA,EAAIqyzC,EAAWryzC,IAAK,CAClC,MAAMsyzC,EAAOlzzC,KAAKm1I,MAAMt+C,OAAOj2F,GAC/B,QAAgCmtC,IAA5BmlxC,EAAK774B,QAAQ874B,WACjB,IAAK,IAAI/uzC,EAAIxD,EAAI,EAAGwD,EAAI6uzC,EAAW7uzC,IAAK,CACtC,MAAMgvzC,EAAOpzzC,KAAKm1I,MAAMt+C,OAAOzyF,QACP2pC,IAApBqlxC,EAAKD,YACLD,EAAKG,QAAQl+qC,MAAMt+C,SAAWu8tC,EAAKC,QAAQl+qC,MAAMt+C,QACrDq8tC,EAAK774B,QAAQ26W,QAAQohiB,EAAK/74B,QAC5B,CACF,CACF,CACA,wBAAAi84B,GAEE,MAAMz8tC,EAAS,GACf,IAAK,IAAIj2F,EAAI,EAAGmyzC,EAAO/yzC,KAAKm1I,MAAMt+C,OAAOx2F,OAAQO,EAAImyzC,EAAMnyzC,IAAK,CAC9D,MAAMwmF,EAAMpnF,KAAKm1I,MAAMt+C,OAAOj2F,GAC1BwmF,IAAQpnF,OAASonF,EAAIiwV,QAAQk84B,SAAWnsuC,EAAIiwV,QAAQm84B,cACtD38tC,EAAOh1F,KAAKulF,EAEhB,CACA,OAAOyP,CACT,CAYA,qBAAA48tC,CAAsBC,GACpB,MAAMxgyC,EAAQ,IAAIvI,IACZgpyC,EAAYC,IAChB,MAAMC,EAAYD,EAAYP,QAC9BngyC,EAAMjnB,IAAI2nzC,EAAa,CACrBE,KAAM7B,EAAYjyzC,KAAKm1I,MAAOu+qC,EAAUv+qC,MAAO0+qC,EAAU1+qC,OACzDmvmC,OAAQ+tE,EAAcryzC,KAAKm1I,MAAOu+qC,EAAUv+qC,MAAO0+qC,EAAU1+qC,QAC7D,EAEJ,MAAO,CAACn0I,EAAGsC,KACJ4vB,EAAMnnB,IAAI/K,IAAI2yzC,EAAU3yzC,GACxBkyB,EAAMnnB,IAAIzI,IAAIqwzC,EAAUrwzC,GAC7B,MACEwwzC,KAAMC,EACNzvE,OAAQ0vE,GACN9gyC,EAAM/vB,IAAInC,IAEZ8yzC,KAAMG,EACN3vE,OAAQ4vE,GACNhhyC,EAAM/vB,IAAIG,GAGd,OAAIywzC,GAAS,GAAKE,GAAS,EACrBD,EAAUE,EAAgB,EAC1BF,EAAUE,GAAiB,EACxB,EAILH,EAAQ,GAAKE,EAAQ,EACnBD,EAAUE,GAAiB,EAC3BF,EAAUE,EAAgB,EACvB,EAILD,EAAQF,GAAe,EACvBE,EAAQF,EAAc,EACnB,CAAC,CAEZ,EAKF,IAAII,EAAY,EAChB,MAAMxB,EAcJ,cAAOzosC,CAAQlpH,EAAGsC,GAChB,MAAM8wzC,EAAMpzzC,EAAEqzzC,OAAOl/qC,MAAMlxI,EACrBqwzC,EAAMhxzC,EAAE+wzC,OAAOl/qC,MAAMlxI,EACrBswzC,EAAMvzzC,EAAEwzzC,QAAQr/qC,MAAMlxI,EACtBwwzC,EAAMnxzC,EAAEkxzC,QAAQr/qC,MAAMlxI,EAG5B,GAAIwwzC,EAAML,EAAK,OAAO,EACtB,GAAIG,EAAMD,EAAK,OAAQ,EACvB,MAAMI,EAAM1zzC,EAAEqzzC,OAAOl/qC,MAAMnyI,EACrB2xzC,EAAMrxzC,EAAE+wzC,OAAOl/qC,MAAMnyI,EACrB0qxC,EAAM1sxC,EAAEwzzC,QAAQr/qC,MAAMnyI,EACtB4xzC,EAAMtxzC,EAAEkxzC,QAAQr/qC,MAAMnyI,EAG5B,GAAIoxzC,EAAME,EAAK,CAEb,GAAIK,EAAMD,GAAOC,EAAMjnC,EAAK,OAAO,EACnC,GAAIinC,EAAMD,GAAOC,EAAMjnC,EAAK,OAAQ,EAGpC,MAAMmnC,EAAY7zzC,EAAEyn7B,aAAanl7B,EAAE+wzC,OAAOl/qC,OAC1C,GAAI0/qC,EAAY,EAAG,OAAO,EAC1B,GAAIA,EAAY,EAAG,OAAQ,EAG3B,MAAMC,EAAaxxzC,EAAEml7B,aAAazn7B,EAAEwzzC,QAAQr/qC,OAC5C,OAAmB,IAAf2/qC,EAAyBA,GAIrB,CACV,CAGA,GAAIV,EAAME,EAAK,CACb,GAAII,EAAMC,GAAOD,EAAME,EAAK,OAAQ,EACpC,GAAIF,EAAMC,GAAOD,EAAME,EAAK,OAAO,EAGnC,MAAMG,EAAYzxzC,EAAEml7B,aAAazn7B,EAAEqzzC,OAAOl/qC,OAC1C,GAAkB,IAAd4/qC,EAAiB,OAAOA,EAG5B,MAAMC,EAAah0zC,EAAEyn7B,aAAanl7B,EAAEkxzC,QAAQr/qC,OAC5C,OAAI6/qC,EAAa,EAAU,EACvBA,EAAa,GAAW,EAIrB,CACT,CAMA,GAAIN,EAAMC,EAAK,OAAQ,EACvB,GAAID,EAAMC,EAAK,OAAO,EAMtB,GAAIJ,EAAME,EAAK,CACb,MAAMK,EAAaxxzC,EAAEml7B,aAAazn7B,EAAEwzzC,QAAQr/qC,OAC5C,GAAmB,IAAf2/qC,EAAkB,OAAOA,CAC/B,CAGA,GAAIP,EAAME,EAAK,CACb,MAAMO,EAAah0zC,EAAEyn7B,aAAanl7B,EAAEkxzC,QAAQr/qC,OAC5C,GAAI6/qC,EAAa,EAAG,OAAO,EAC3B,GAAIA,EAAa,EAAG,OAAQ,CAC9B,CACA,GAAIT,IAAQE,EAAK,CAGf,MAAM529B,EAAK6v7B,EAAMgnC,EACX929B,EAAK229B,EAAMH,EACXn29B,EAAK229B,EAAMD,EACX329B,EAAKy29B,EAAMH,EACjB,GAAIz29B,EAAKD,GAAMK,EAAKD,EAAI,OAAO,EAC/B,GAAIH,EAAKD,GAAMK,EAAKD,EAAI,OAAQ,CAClC,CAIA,OAAIu29B,EAAME,EAAY,EAClBF,EAAME,GAMN/mC,EAAMknC,GANa,EAOnBlnC,EAAMknC,EAAY,EAIlB5zzC,EAAEuqB,GAAKjoB,EAAEioB,IAAY,EACrBvqB,EAAEuqB,GAAKjoB,EAAEioB,GAAW,EAGjB,CACT,CAIA,WAAAtrB,CAAYo0zC,EAAQG,EAAShk2B,EAAOyk2B,GAClCj1zC,KAAKurB,KAAO4oyC,EACZn0zC,KAAKq0zC,OAASA,EACdA,EAAOh94B,QAAUr3a,KACjBq0zC,EAAOhB,QAAUmB,EACjBx0zC,KAAKw0zC,QAAUA,EACfA,EAAQn94B,QAAUr3a,KAClBw0zC,EAAQnB,QAAUgB,EAClBr0zC,KAAKwwd,MAAQA,EACbxwd,KAAKi1zC,SAAWA,CAGlB,CACA,eAAOC,CAAS/sP,EAAKC,EAAKpxuB,GACxB,IAAIm+9B,EAAQC,EAAShsY,EAGrB,MAAMisY,EAAS7C,EAAWE,cAAcvqP,EAAKC,GAC7C,GAAIitP,EAAS,EACXF,EAAShtP,EACTitP,EAAUhtP,EACVh/I,EAAU,MACL,MAAIisY,EAAS,GAIb,MAAM,IAAI7tyC,MAAM,0CAA0C2gjC,EAAIlkkC,MAAMkkkC,EAAInlkC,MAH7EmyzC,EAAS/sP,EACTgtP,EAAUjtP,EACV/+I,GAAW,CACuE,CACpF,MAAMirY,EAAS,IAAI7B,EAAW2C,GAAQ,GAChCX,EAAU,IAAIhC,EAAW4C,GAAS,GACxC,OAAO,IAAIzC,EAAQ0B,EAAQG,EAAS,CAACx99B,GAAO,CAACoylB,GAC/C,CAGA,cAAAksY,CAAeC,GACbv1zC,KAAKw0zC,QAAUe,EACfv1zC,KAAKw0zC,QAAQn94B,QAAUr3a,KACvBA,KAAKw0zC,QAAQnB,QAAUrzzC,KAAKq0zC,OAC5Br0zC,KAAKq0zC,OAAOhB,QAAUrzzC,KAAKw0zC,OAC7B,CACA,IAAAnpxC,GACE,MAAMqmJ,EAAK1xL,KAAKq0zC,OAAOl/qC,MAAMnyI,EACvBy0H,EAAKz3H,KAAKw0zC,QAAQr/qC,MAAMnyI,EAC9B,MAAO,CACL0rzC,GAAI,CACFzqzC,EAAGjE,KAAKq0zC,OAAOl/qC,MAAMlxI,EACrBjB,EAAG0uL,EAAKj6D,EAAKi6D,EAAKj6D,GAEpBjiH,GAAI,CACFvR,EAAGjE,KAAKw0zC,QAAQr/qC,MAAMlxI,EACtBjB,EAAG0uL,EAAKj6D,EAAKi6D,EAAKj6D,GAGxB,CAGA,MAAAwwC,GACE,MAAO,CACLhkK,EAAGjE,KAAKw0zC,QAAQr/qC,MAAMlxI,EAAIjE,KAAKq0zC,OAAOl/qC,MAAMlxI,EAC5CjB,EAAGhD,KAAKw0zC,QAAQr/qC,MAAMnyI,EAAIhD,KAAKq0zC,OAAOl/qC,MAAMnyI,EAEhD,CACA,YAAAwyzC,CAAarpzC,GACX,OAAOA,EAAGlI,IAAMjE,KAAKq0zC,OAAOl/qC,MAAMlxI,GAAKkI,EAAGnJ,IAAMhD,KAAKq0zC,OAAOl/qC,MAAMnyI,GAAKmJ,EAAGlI,IAAMjE,KAAKw0zC,QAAQr/qC,MAAMlxI,GAAKkI,EAAGnJ,IAAMhD,KAAKw0zC,QAAQr/qC,MAAMnyI,CACtI,CAeA,YAAAyl7B,CAAatzyB,GACX,GAAIn1I,KAAKw1zC,aAAargrC,GAAQ,OAAO,EACrC,MAAMsgrC,EAAMz1zC,KAAKq0zC,OAAOl/qC,MAClBugrC,EAAM11zC,KAAKw0zC,QAAQr/qC,MACnBlyI,EAAIjD,KAAKioK,SAGf,GAAIwtpC,EAAIxxzC,IAAMyxzC,EAAIzxzC,EAChB,OAAIkxI,EAAMlxI,IAAMwxzC,EAAIxxzC,EAAU,EACvBkxI,EAAMlxI,EAAIwxzC,EAAIxxzC,EAAI,GAAK,EAKhC,MAAM0xzC,GAASxgrC,EAAMnyI,EAAIyyzC,EAAIzyzC,GAAKC,EAAED,EAC9B4yzC,EAAaH,EAAIxxzC,EAAI0xzC,EAAQ1yzC,EAAEgB,EACrC,GAAIkxI,EAAMlxI,IAAM2xzC,EAAY,OAAO,EAInC,MAAMC,GAAS1grC,EAAMlxI,EAAIwxzC,EAAIxxzC,GAAKhB,EAAEgB,EAC9B6xzC,EAAaL,EAAIzyzC,EAAI6yzC,EAAQ5yzC,EAAED,EACrC,OAAImyI,EAAMnyI,IAAM8yzC,EAAmB,EAC5B3grC,EAAMnyI,EAAI8yzC,GAAc,EAAI,CACrC,CAiBA,eAAAC,CAAgBl6wC,GAEd,MAAMm6wC,EAAQh2zC,KAAKqrC,OACb4qxC,EAAQp6wC,EAAMxQ,OACd6qxC,EAAcvH,EAAeqH,EAAOC,GAC1C,GAAoB,OAAhBC,EAAsB,OAAO,KAMjC,MAAMC,EAAMn2zC,KAAKq0zC,OAAOl/qC,MAClBihrC,EAAMp2zC,KAAKw0zC,QAAQr/qC,MACnBkhrC,EAAMx6wC,EAAMw4wC,OAAOl/qC,MACnBmhrC,EAAMz6wC,EAAM24wC,QAAQr/qC,MAKpBohrC,EAAkB9H,EAASuH,EAAOK,IAAmC,IAA3Br2zC,KAAKyo7B,aAAa4tY,GAC5DG,EAAiB/H,EAASwH,EAAOE,IAAoC,IAA5Bt6wC,EAAM4s4B,aAAa0tY,GAC5DM,EAAkBhI,EAASuH,EAAOM,IAAmC,IAA3Bt2zC,KAAKyo7B,aAAa6tY,GAC5DI,EAAiBjI,EAASwH,EAAOG,IAAoC,IAA5Bv6wC,EAAM4s4B,aAAa2tY,GAGlE,GAAII,GAAkBD,EAGpB,OAAIG,IAAmBD,EAAwBL,GAC1CM,GAAkBD,EAAwBH,EAGxC,KAIT,GAAIE,EAEF,OAAIC,GACEN,EAAIlyzC,IAAMqyzC,EAAIryzC,GAAKkyzC,EAAInzzC,IAAMszzC,EAAItzzC,EAAU,KAG1CmzzC,EAIT,GAAII,EAEF,OAAIG,GACEN,EAAInyzC,IAAMoyzC,EAAIpyzC,GAAKmyzC,EAAIpzzC,IAAMqzzC,EAAIrzzC,EAAU,KAG1CqzzC,EAIT,GAAIK,GAAkBD,EAAiB,OAAO,KAG9C,GAAIC,EAAgB,OAAON,EAC3B,GAAIK,EAAiB,OAAOH,EAI5B,MAAMnqzC,EA7da,EAACg8jC,EAAKr94B,EAAIs94B,EAAKr94B,KAIpC,GAAa,IAATD,EAAG7mL,EAAS,OAAOsuzC,EAAqBnqP,EAAKr94B,EAAIo94B,EAAIlkkC,GACzD,GAAa,IAAT8mL,EAAG9mL,EAAS,OAAOsuzC,EAAqBpqP,EAAKr94B,EAAIs94B,EAAInkkC,GACzD,GAAa,IAAT6mL,EAAG9nL,EAAS,OAAOsvzC,EAAuBlqP,EAAKr94B,EAAIo94B,EAAInlkC,GAC3D,GAAa,IAAT+nL,EAAG/nL,EAAS,OAAOsvzC,EAAuBnqP,EAAKr94B,EAAIs94B,EAAIplkC,GAM3D,MAAM2zzC,EAAQ/E,EAAa9moC,EAAIC,GAC/B,GAAa,GAAT4roC,EAAY,OAAO,KACvB,MAAM7uzC,EAAK,CACT7D,EAAGmkkC,EAAInkkC,EAAIkkkC,EAAIlkkC,EACfjB,EAAGolkC,EAAIplkC,EAAImlkC,EAAInlkC,GAEX2xtB,EAAKi9lB,EAAa9pzC,EAAIgjL,GAAM6roC,EAC5BlirC,EAAKm9qC,EAAa9pzC,EAAIijL,GAAM4roC,EASlC,MAAO,CACL1yzC,GAPSkkkC,EAAIlkkC,EAAIwwI,EAAKq2C,EAAG7mL,GACpBmkkC,EAAInkkC,EAAI0wtB,EAAK5piB,EAAG9mL,IAGD,EAIpBjB,GANSmlkC,EAAInlkC,EAAIyxI,EAAKq2C,EAAG9nL,GACpBolkC,EAAIplkC,EAAI2xtB,EAAK5piB,EAAG/nL,IAED,EAIrB,EA6bY4zzC,CAAeT,EAAKn2zC,KAAKioK,SAAUoupC,EAAKx6wC,EAAMosH,UAIzD,OAAW,OAAP97J,EAAoB,KAGnBsizC,EAASyH,EAAa/pzC,GAGpB+izC,EAAQjswC,MAAM92C,EAAGlI,EAAGkI,EAAGnJ,GAHS,IAIzC,CAcA,KAAA4B,CAAMuwI,GACJ,MAAM0hrC,EAAY,GACZC,OAAiC/oxC,IAAjBonG,EAAMt+C,OACtBkguC,EAAY,IAAIvE,EAAWr9qC,GAAO,GAClCogrC,EAAa,IAAI/C,EAAWr9qC,GAAO,GACnC6hrC,EAAah3zC,KAAKw0zC,QACxBx0zC,KAAKs1zC,eAAeC,GACpBsB,EAAUh1zC,KAAK0zzC,GACfsB,EAAUh1zC,KAAKk1zC,GACf,MAAME,EAAS,IAAItE,EAAQoE,EAAWC,EAAYh3zC,KAAKwwd,MAAMzud,QAAS/B,KAAKi1zC,SAASlzzC,SAmBpF,OAdIywzC,EAAWE,cAAcuE,EAAO5C,OAAOl/qC,MAAO8hrC,EAAOzC,QAAQr/qC,OAAS,GACxE8hrC,EAAOC,aAEL1E,EAAWE,cAAc1yzC,KAAKq0zC,OAAOl/qC,MAAOn1I,KAAKw0zC,QAAQr/qC,OAAS,GACpEn1I,KAAKk3zC,aAMHJ,IACFC,EAAU/D,oBACVuC,EAAWvC,qBAEN6D,CACT,CAGA,UAAAK,GACE,MAAMC,EAASn3zC,KAAKw0zC,QACpBx0zC,KAAKw0zC,QAAUx0zC,KAAKq0zC,OACpBr0zC,KAAKq0zC,OAAS8C,EACdn3zC,KAAKq0zC,OAAOxsxB,QAAS,EACrB7niB,KAAKw0zC,QAAQ3sxB,QAAS,EACtB,IAAK,IAAIjniB,EAAI,EAAGmyzC,EAAO/yzC,KAAKi1zC,SAAS50zC,OAAQO,EAAImyzC,EAAMnyzC,IACrDZ,KAAKi1zC,SAASr0zC,KAAO,CAEzB,CAIA,OAAAoxxB,CAAQn2uB,GACN,IAAIsoG,EAAWnkJ,KACXo3zC,EAAWv7wC,EACf,KAAOsoG,EAASgvqC,YAAYhvqC,EAAWA,EAASgvqC,WAChD,KAAOiE,EAASjE,YAAYiE,EAAWA,EAASjE,WAChD,MAAM/rb,EAAMurb,EAAQzosC,QAAQi6B,EAAUizqC,GACtC,GAAY,IAARhwb,EAAJ,CAGA,GAAIA,EAAM,EAAG,CACX,MAAMxjiB,EAAMz/M,EACZA,EAAWizqC,EACXA,EAAWxz9B,CACb,CAGA,GAAIz/M,EAAS2E,OAASsuqC,EAAU,CAC9B,MAAMxz9B,EAAMz/M,EACZA,EAAWizqC,EACXA,EAAWxz9B,CACb,CACA,IAAK,IAAIhjW,EAAI,EAAGmyzC,EAAOqE,EAAS5m2B,MAAMnwd,OAAQO,EAAImyzC,EAAMnyzC,IAAK,CAC3D,MAAMo2V,EAAOog+B,EAAS5m2B,MAAM5vd,GACtBwo7B,EAAUguY,EAASnC,SAASr0zC,GAC5Boc,EAAQmnI,EAASqsU,MAAMhwd,QAAQw2V,IACtB,IAAXh6U,GACFmnI,EAASqsU,MAAM3ud,KAAKm1V,GACpB7yM,EAAS8wqC,SAASpzzC,KAAKun7B,IAClBjlyB,EAAS8wqC,SAASj4yC,IAAUos6B,CACrC,CACAguY,EAAS5m2B,MAAQ,KACjB4m2B,EAASnC,SAAW,KACpBmC,EAASjE,WAAahvqC,EAGtBizqC,EAAS/C,OAAOlB,WAAahvqC,EAASkwqC,OACtC+C,EAAS5C,QAAQrB,WAAahvqC,EAASqwqC,OA9BlB,CA+BvB,CAGA,YAAA6C,GACE,YAA2BtpxC,IAAvB/tC,KAAKs3zC,gBACJt3zC,KAAK8oJ,KAAyC9oJ,KAAK8oJ,KAAK0qqC,aAAcxzzC,KAAKs3zC,cAAgBt3zC,KAAK8oJ,KAAU9oJ,KAAKs3zC,cAAgBt3zC,KAAK8oJ,KAAKuuqC,eAA9Hr3zC,KAAKs3zC,cAAgB,MADQt3zC,KAAKs3zC,aAGpD,CACA,WAAAC,GACE,QAA0BxpxC,IAAtB/tC,KAAKw3zC,aAA4B,OAAOx3zC,KAAKw3zC,aACjD,GAAKx3zC,KAAK8oJ,KAIH,CACL,MAAM2uqC,EAAMz3zC,KAAK8oJ,KAAKqqqC,YAAcnzzC,KAAK8oJ,KACzC9oJ,KAAKw3zC,aAAeC,EAAIC,YAC1B,MAPgB13zC,KAAKw3zC,aAAe,CAClChn2B,MAAO,GACPyk2B,SAAU,GACV0C,WAAY,IAKd,OAAO33zC,KAAKw3zC,YACd,CACA,UAAAE,GACE,QAAyB3pxC,IAArB/tC,KAAK43zC,YAA2B,OAAO53zC,KAAK43zC,YAChD,MAAML,EAAcv3zC,KAAKu3zC,cACzBv3zC,KAAK43zC,YAAc,CACjBpn2B,MAAO+m2B,EAAY/m2B,MAAMzud,MAAM,GAC/BkzzC,SAAUsC,EAAYtC,SAASlzzC,MAAM,GACrC41zC,WAAY,IAEd,MAAME,EAAa73zC,KAAK43zC,YAAYpn2B,MAC9Bsn2B,EAAgB93zC,KAAK43zC,YAAY3C,SACjC8C,EAAW/3zC,KAAK43zC,YAAYD,WAGlC,IAAK,IAAI/2zC,EAAI,EAAGmyzC,EAAO/yzC,KAAKwwd,MAAMnwd,OAAQO,EAAImyzC,EAAMnyzC,IAAK,CACvD,MAAMo2V,EAAOh3V,KAAKwwd,MAAM5vd,GAClBwo7B,EAAUpp7B,KAAKi1zC,SAASr0zC,GACxBoc,EAAQ66yC,EAAWr3zC,QAAQw2V,IAClB,IAAXh6U,GACF66yC,EAAWh2zC,KAAKm1V,GAChB8g+B,EAAcj2zC,KAAKun7B,IACd0uY,EAAc96yC,IAAUos6B,CACjC,CAGA,MAAM4uY,EAAa,GACbC,EAAe,GACrB,IAAK,IAAIr3zC,EAAI,EAAGmyzC,EAAO8E,EAAWx3zC,OAAQO,EAAImyzC,EAAMnyzC,IAAK,CACvD,GAAyB,IAArBk3zC,EAAcl3zC,GAAU,SAC5B,MAAMo2V,EAAO6g+B,EAAWj3zC,GAClBmwd,EAAO/5H,EAAK+5H,KAClB,IAAoC,IAAhCkn2B,EAAaz3zC,QAAQuwd,GACzB,GAAI/5H,EAAKkh+B,WAAYF,EAAWn2zC,KAAKkvd,OAAW,EACV,IAAhCkn2B,EAAaz3zC,QAAQuwd,IAAckn2B,EAAap2zC,KAAKkvd,GACzD,MAAM/zc,EAAQg7yC,EAAWx3zC,QAAQw2V,EAAK+5H,OACvB,IAAX/zc,GAAcg7yC,EAAW/0yC,OAAOjG,EAAO,EAC7C,CACF,CAGA,IAAK,IAAIpc,EAAI,EAAGmyzC,EAAOiF,EAAW33zC,OAAQO,EAAImyzC,EAAMnyzC,IAAK,CACvD,MAAMgmyC,EAAKoxB,EAAWp3zC,GAAGk6d,WACK,IAA1Bi91B,EAASv3zC,QAAQomyC,IAAYmxB,EAASl2zC,KAAK+kyC,EACjD,CACA,OAAO5myC,KAAK43zC,WACd,CAGA,UAAApE,GAEE,GAAIxzzC,KAAKmzzC,WAAY,OAAO,EAC5B,QAAyBplxC,IAArB/tC,KAAKm4zC,YAA2B,OAAOn4zC,KAAKm4zC,YAChD,MAAMC,EAAYp4zC,KAAKu3zC,cAAcI,WAC/BI,EAAW/3zC,KAAK03zC,aAAaC,WACnC,OAAQtxxC,EAAU95B,MAChB,IAAK,QACH,CAIE,MAAM8rzC,EAAiC,IAArBD,EAAU/3zC,OACtBi4zC,EAA+B,IAApBP,EAAS13zC,OAC1BL,KAAKm4zC,YAAcE,IAAcC,EACjC,KACF,CACF,IAAK,eACH,CAKE,IAAIC,EACAC,EACAJ,EAAU/3zC,OAAS03zC,EAAS13zC,QAC9Bk4zC,EAAQH,EAAU/3zC,OAClBm4zC,EAAOT,EAAS13zC,SAEhBk4zC,EAAQR,EAAS13zC,OACjBm4zC,EAAOJ,EAAU/3zC,QAEnBL,KAAKm4zC,YAAcK,IAASnyxC,EAAUoyxC,eAAiBF,EAAQC,EAC/D,KACF,CACF,IAAK,MACH,CAIE,MAAMjwxB,EAAO1liB,KAAKmjH,IAAIoysC,EAAU/3zC,OAAS03zC,EAAS13zC,QAClDL,KAAKm4zC,YAAc5vxB,EAAO,GAAM,EAChC,KACF,CACF,IAAK,aACH,CAGE,MAAMmwxB,EAAgBC,GAAsB,IAAfA,EAAIt4zC,QAAgBs4zC,EAAI,GAAGvwY,UACxDpo7B,KAAKm4zC,YAAcO,EAAcN,KAAeM,EAAcX,GAC9D,KACF,CACF,QACE,MAAM,IAAIvwyC,MAAM,qCAAqC6e,EAAU95B,QAEnE,OAAOvM,KAAKm4zC,WACd,EAGF,MAAMS,EACJ,WAAA34zC,CAAY44zC,EAAU9n2B,EAAMmn2B,GAC1B,IAAKz4zC,MAAMkS,QAAQknzC,IAAiC,IAApBA,EAASx4zC,OACvC,MAAM,IAAImnB,MAAM,yDAKlB,GAHAxnB,KAAK+wd,KAAOA,EACZ/wd,KAAKk4zC,WAAaA,EAClBl4zC,KAAKkrV,SAAW,GACc,iBAAnB2t+B,EAAS,GAAG,IAA6C,iBAAnBA,EAAS,GAAG,GAC3D,MAAM,IAAIrxyC,MAAM,yDAElB,MAAM43W,EAAa8v7B,EAAQjswC,MAAM41wC,EAAS,GAAG,GAAIA,EAAS,GAAG,IAC7D74zC,KAAKqrC,KAAO,CACVqjxC,GAAI,CACFzqzC,EAAGm7X,EAAWn7X,EACdjB,EAAGo8X,EAAWp8X,GAEhBwS,GAAI,CACFvR,EAAGm7X,EAAWn7X,EACdjB,EAAGo8X,EAAWp8X,IAGlB,IAAI+vX,EAAYqM,EAChB,IAAK,IAAIx+X,EAAI,EAAGmyzC,EAAO8F,EAASx4zC,OAAQO,EAAImyzC,EAAMnyzC,IAAK,CACrD,GAA8B,iBAAnBi4zC,EAASj4zC,GAAG,IAA6C,iBAAnBi4zC,EAASj4zC,GAAG,GAC3D,MAAM,IAAI4mB,MAAM,yDAElB,IAAI2tH,EAAQ+5qC,EAAQjswC,MAAM41wC,EAASj4zC,GAAG,GAAIi4zC,EAASj4zC,GAAG,IAElDu0I,EAAMlxI,IAAM8uX,EAAU9uX,GAAKkxI,EAAMnyI,IAAM+vX,EAAU/vX,IACrDhD,KAAKkrV,SAASrpV,KAAK8wzC,EAAQuC,SAASni8B,EAAW59O,EAAOn1I,OAClDm1I,EAAMlxI,EAAIjE,KAAKqrC,KAAKqjxC,GAAGzqzC,IAAGjE,KAAKqrC,KAAKqjxC,GAAGzqzC,EAAIkxI,EAAMlxI,GACjDkxI,EAAMnyI,EAAIhD,KAAKqrC,KAAKqjxC,GAAG1rzC,IAAGhD,KAAKqrC,KAAKqjxC,GAAG1rzC,EAAImyI,EAAMnyI,GACjDmyI,EAAMlxI,EAAIjE,KAAKqrC,KAAK71B,GAAGvR,IAAGjE,KAAKqrC,KAAK71B,GAAGvR,EAAIkxI,EAAMlxI,GACjDkxI,EAAMnyI,EAAIhD,KAAKqrC,KAAK71B,GAAGxS,IAAGhD,KAAKqrC,KAAK71B,GAAGxS,EAAImyI,EAAMnyI,GACrD+vX,EAAY59O,EACd,CAEIiqP,EAAWn7X,IAAM8uX,EAAU9uX,GAAKm7X,EAAWp8X,IAAM+vX,EAAU/vX,GAC7DhD,KAAKkrV,SAASrpV,KAAK8wzC,EAAQuC,SAASni8B,EAAWqM,EAAYp/X,MAE/D,CACA,cAAA84zC,GACE,MAAMC,EAAc,GACpB,IAAK,IAAIn4zC,EAAI,EAAGmyzC,EAAO/yzC,KAAKkrV,SAAS7qV,OAAQO,EAAImyzC,EAAMnyzC,IAAK,CAC1D,MAAMy2a,EAAUr3a,KAAKkrV,SAAStqV,GAC9Bm4zC,EAAYl3zC,KAAKw1a,EAAQg94B,QACzB0E,EAAYl3zC,KAAKw1a,EAAQm94B,QAC3B,CACA,OAAOuE,CACT,EAEF,MAAMC,EACJ,WAAA/4zC,CAAYg5zC,EAAUn+1B,GACpB,IAAKr7d,MAAMkS,QAAQsnzC,GACjB,MAAM,IAAIzxyC,MAAM,yDAElBxnB,KAAKk5zC,aAAe,IAAIN,EAAOK,EAAS,GAAIj5zC,MAAM,GAElDA,KAAKqrC,KAAO,CACVqjxC,GAAI,CACFzqzC,EAAGjE,KAAKk5zC,aAAa7txC,KAAKqjxC,GAAGzqzC,EAC7BjB,EAAGhD,KAAKk5zC,aAAa7txC,KAAKqjxC,GAAG1rzC,GAE/BwS,GAAI,CACFvR,EAAGjE,KAAKk5zC,aAAa7txC,KAAK71B,GAAGvR,EAC7BjB,EAAGhD,KAAKk5zC,aAAa7txC,KAAK71B,GAAGxS,IAGjChD,KAAKm5zC,cAAgB,GACrB,IAAK,IAAIv4zC,EAAI,EAAGmyzC,EAAOkG,EAAS54zC,OAAQO,EAAImyzC,EAAMnyzC,IAAK,CACrD,MAAMo2V,EAAO,IAAI4h+B,EAAOK,EAASr4zC,GAAIZ,MAAM,GACvCg3V,EAAK3rT,KAAKqjxC,GAAGzqzC,EAAIjE,KAAKqrC,KAAKqjxC,GAAGzqzC,IAAGjE,KAAKqrC,KAAKqjxC,GAAGzqzC,EAAI+yV,EAAK3rT,KAAKqjxC,GAAGzqzC,GAC/D+yV,EAAK3rT,KAAKqjxC,GAAG1rzC,EAAIhD,KAAKqrC,KAAKqjxC,GAAG1rzC,IAAGhD,KAAKqrC,KAAKqjxC,GAAG1rzC,EAAIg0V,EAAK3rT,KAAKqjxC,GAAG1rzC,GAC/Dg0V,EAAK3rT,KAAK71B,GAAGvR,EAAIjE,KAAKqrC,KAAK71B,GAAGvR,IAAGjE,KAAKqrC,KAAK71B,GAAGvR,EAAI+yV,EAAK3rT,KAAK71B,GAAGvR,GAC/D+yV,EAAK3rT,KAAK71B,GAAGxS,EAAIhD,KAAKqrC,KAAK71B,GAAGxS,IAAGhD,KAAKqrC,KAAK71B,GAAGxS,EAAIg0V,EAAK3rT,KAAK71B,GAAGxS,GACnEhD,KAAKm5zC,cAAct3zC,KAAKm1V,EAC1B,CACAh3V,KAAK86d,UAAYA,CACnB,CACA,cAAAg+1B,GACE,MAAMC,EAAc/4zC,KAAKk5zC,aAAaJ,iBACtC,IAAK,IAAIl4zC,EAAI,EAAGmyzC,EAAO/yzC,KAAKm5zC,cAAc94zC,OAAQO,EAAImyzC,EAAMnyzC,IAAK,CAC/D,MAAMw4zC,EAAkBp5zC,KAAKm5zC,cAAcv4zC,GAAGk4zC,iBAC9C,IAAK,IAAI10zC,EAAI,EAAGi1zC,EAAOD,EAAgB/4zC,OAAQ+D,EAAIi1zC,EAAMj1zC,IACvD20zC,EAAYl3zC,KAAKu3zC,EAAgBh1zC,GAErC,CACA,OAAO20zC,CACT,EAEF,MAAMO,EACJ,WAAAr5zC,CAAY41V,EAAMuylB,GAChB,IAAK3o7B,MAAMkS,QAAQkkV,GACjB,MAAM,IAAIruU,MAAM,yDAElB,IAE+B,iBAAlBquU,EAAK,GAAG,GAAG,KAAiBA,EAAO,CAACA,GACjD,CAAE,MAAO32S,GAGT,CACAl/C,KAAK6zd,MAAQ,GACb7zd,KAAKqrC,KAAO,CACVqjxC,GAAI,CACFzqzC,EAAGkhC,OAAOy/C,kBACV5hF,EAAGmiC,OAAOy/C,mBAEZpvE,GAAI,CACFvR,EAAGkhC,OAAO6gJ,kBACVhjL,EAAGmiC,OAAO6gJ,oBAGd,IAAK,IAAIplL,EAAI,EAAGmyzC,EAAOl99B,EAAKx1V,OAAQO,EAAImyzC,EAAMnyzC,IAAK,CACjD,MAAMmwd,EAAO,IAAIio2B,EAAOnj+B,EAAKj1V,GAAIZ,MAC7B+wd,EAAK1lb,KAAKqjxC,GAAGzqzC,EAAIjE,KAAKqrC,KAAKqjxC,GAAGzqzC,IAAGjE,KAAKqrC,KAAKqjxC,GAAGzqzC,EAAI8sd,EAAK1lb,KAAKqjxC,GAAGzqzC,GAC/D8sd,EAAK1lb,KAAKqjxC,GAAG1rzC,EAAIhD,KAAKqrC,KAAKqjxC,GAAG1rzC,IAAGhD,KAAKqrC,KAAKqjxC,GAAG1rzC,EAAI+td,EAAK1lb,KAAKqjxC,GAAG1rzC,GAC/D+td,EAAK1lb,KAAK71B,GAAGvR,EAAIjE,KAAKqrC,KAAK71B,GAAGvR,IAAGjE,KAAKqrC,KAAK71B,GAAGvR,EAAI8sd,EAAK1lb,KAAK71B,GAAGvR,GAC/D8sd,EAAK1lb,KAAK71B,GAAGxS,EAAIhD,KAAKqrC,KAAK71B,GAAGxS,IAAGhD,KAAKqrC,KAAK71B,GAAGxS,EAAI+td,EAAK1lb,KAAK71B,GAAGxS,GACnEhD,KAAK6zd,MAAMhyd,KAAKkvd,EAClB,CACA/wd,KAAKoo7B,UAAYA,CACnB,CACA,cAAA0wY,GACE,MAAMC,EAAc,GACpB,IAAK,IAAIn4zC,EAAI,EAAGmyzC,EAAO/yzC,KAAK6zd,MAAMxzd,OAAQO,EAAImyzC,EAAMnyzC,IAAK,CACvD,MAAM24zC,EAAkBv5zC,KAAK6zd,MAAMjzd,GAAGk4zC,iBACtC,IAAK,IAAI10zC,EAAI,EAAGi1zC,EAAOE,EAAgBl5zC,OAAQ+D,EAAIi1zC,EAAMj1zC,IACvD20zC,EAAYl3zC,KAAK03zC,EAAgBn1zC,GAErC,CACA,OAAO20zC,CACT,EAGF,MAAMS,EAGJ,cAAOjz5B,CAAQkz5B,GACb,MAAMC,EAAW,GACjB,IAAK,IAAI94zC,EAAI,EAAGmyzC,EAAO0G,EAAYp5zC,OAAQO,EAAImyzC,EAAMnyzC,IAAK,CACxD,MAAMy2a,EAAUoi5B,EAAY74zC,GAC5B,IAAKy2a,EAAQm84B,cAAgBn84B,EAAQk84B,QAAS,SAC9C,IAAIoG,EAAY,KACZl7xC,EAAQ44Y,EAAQg94B,OAChBR,EAAYx84B,EAAQm94B,QACxB,MAAM39tC,EAAS,CAACp4D,GACVm7xC,EAAgBn7xC,EAAM02G,MACtB0krC,EAAkB,GAGxB,KACEF,EAAYl7xC,EACZA,EAAQo1xC,EACRh9tC,EAAOh1F,KAAK48B,GAGRA,EAAM02G,QAAUykrC,GACpB,OAAa,CACX,MAAME,EAAer7xC,EAAM60xC,2BAI3B,GAA4B,IAAxBwG,EAAaz5zC,OAAc,CAC7B,MAAM05zC,EAAUljuC,EAAO,GAAGs+C,MACpB6krC,EAASnjuC,EAAOA,EAAOx2F,OAAS,GAAG80I,MACzC,MAAM,IAAI3tH,MAAM,+CAA+CuyyC,EAAQ91zC,MAAW81zC,EAAQ/2zC,4CAAiDg3zC,EAAO/1zC,MAAM+1zC,EAAOh3zC,MACjK,CAGA,GAA4B,IAAxB82zC,EAAaz5zC,OAAc,CAC7BwzzC,EAAYiG,EAAa,GAAGzG,QAC5B,KACF,CAGA,IAAI4G,EAAU,KACd,IAAK,IAAI71zC,EAAI,EAAGi1zC,EAAOQ,EAAgBx5zC,OAAQ+D,EAAIi1zC,EAAMj1zC,IACvD,GAAIy1zC,EAAgBz1zC,GAAG+wI,QAAU12G,EAAM02G,MAAO,CAC5C8krC,EAAU71zC,EACV,KACF,CAGF,GAAgB,OAAZ61zC,EAAkB,CACpB,MAAMC,EAAiBL,EAAgB52yC,OAAOg3yC,GAAS,GACjDE,EAAatjuC,EAAO5zE,OAAOi3yC,EAAel9yC,OAChDm9yC,EAAWtvyC,QAAQsvyC,EAAW,GAAG9G,SACjCqG,EAAS73zC,KAAK,IAAI23zC,EAAQW,EAAW7/vC,YACrC,QACF,CAEAu/vC,EAAgBh4zC,KAAK,CACnBmb,MAAO65E,EAAOx2F,OACd80I,MAAO12G,EAAM02G,QAGf,MAAM4jW,EAAat6c,EAAMg1xC,sBAAsBkG,GAC/C9F,EAAYiG,EAAavtxC,KAAKwsc,GAAY,GAAGs60B,QAC7C,KACF,CAEFqG,EAAS73zC,KAAK,IAAI23zC,EAAQ3iuC,GAC5B,CACA,OAAO6iuC,CACT,CACA,WAAAz5zC,CAAY42F,GACV72F,KAAK62F,OAASA,EACd,IAAK,IAAIj2F,EAAI,EAAGmyzC,EAAOl8tC,EAAOx2F,OAAQO,EAAImyzC,EAAMnyzC,IAC9Ci2F,EAAOj2F,GAAGy2a,QAAQk84B,QAAUvzzC,KAE9BA,KAAK+wd,KAAO,IACd,CACA,OAAA71F,GAEE,IAAIk/7B,EAASp6zC,KAAK62F,OAAO,GAAGs+C,MAC5B,MAAM7pG,EAAS,CAAC8uxC,GAChB,IAAK,IAAIx5zC,EAAI,EAAGmyzC,EAAO/yzC,KAAK62F,OAAOx2F,OAAS,EAAGO,EAAImyzC,EAAMnyzC,IAAK,CAC5D,MAAMuL,EAAKnM,KAAK62F,OAAOj2F,GAAGu0I,MACpB+28B,EAASlslC,KAAK62F,OAAOj2F,EAAI,GAAGu0I,MACc,IAA5C08qC,EAAoB1lzC,EAAIiuzC,EAAQluO,KACpC5gjC,EAAOzpC,KAAKsK,GACZiuzC,EAASjuzC,EACX,CAGA,GAAsB,IAAlBm/B,EAAOjrC,OAAc,OAAO,KAGhC,MAAM8L,EAAKm/B,EAAO,GACZ4gjC,EAAS5gjC,EAAO,GAC0B,IAA5CumxC,EAAoB1lzC,EAAIiuzC,EAAQluO,IAAe5gjC,EAAO6S,QAC1D7S,EAAOzpC,KAAKypC,EAAO,IACnB,MAAMojU,EAAO1uW,KAAKq6zC,iBAAmB,GAAK,EACpCC,EAASt6zC,KAAKq6zC,iBAAmB,EAAI/uxC,EAAOjrC,OAAS,EACrDk6zC,EAAOv6zC,KAAKq6zC,iBAAmB/uxC,EAAOjrC,QAAU,EAChDm6zC,EAAgB,GACtB,IAAK,IAAI55zC,EAAI05zC,EAAQ15zC,GAAK25zC,EAAM35zC,GAAK8tW,EAAM8r9B,EAAc34zC,KAAK,CAACypC,EAAO1qC,GAAGqD,EAAGqnC,EAAO1qC,GAAGoC,IACtF,OAAOw3zC,CACT,CACA,cAAAH,GACE,QAA6BtsxC,IAAzB/tC,KAAKy6zC,gBAA+B,CACtC,MAAMC,EAAY16zC,KAAK26zC,gBACvB36zC,KAAKy6zC,iBAAkBC,IAAaA,EAAUL,gBAChD,CACA,OAAOr6zC,KAAKy6zC,eACd,CACA,aAAAE,GAIE,YAH4B5sxC,IAAxB/tC,KAAK46zC,iBACP56zC,KAAK46zC,eAAiB56zC,KAAK66zC,sBAEtB76zC,KAAK46zC,cACd,CAGA,kBAAAC,GAGE,IAAIC,EAAc96zC,KAAK62F,OAAO,GAC9B,IAAK,IAAIj2F,EAAI,EAAGmyzC,EAAO/yzC,KAAK62F,OAAOx2F,OAAQO,EAAImyzC,EAAMnyzC,IAAK,CACxD,MAAMwmF,EAAMpnF,KAAK62F,OAAOj2F,GACpB4xzC,EAAWtosC,QAAQ4wsC,EAAa1zuC,GAAO,IAAG0zuC,EAAc1zuC,EAC9D,CACA,IAAI2zuC,EAAUD,EAAYzj5B,QAAQgg5B,eAC9B2D,EAAcD,EAAUA,EAAQ1D,eAAiB,KACrD,OAAa,CAEX,IAAK0D,EAAS,OAAO,KAIrB,IAAKC,EAAa,OAAOD,EAAQxH,QAKjC,GAAIyH,EAAYzH,UAAYwH,EAAQxH,QAClC,OAAIyH,EAAYzH,QAAQoH,kBAAoBI,EAAQxH,QAC3CwH,EAAQxH,QACHwH,EAAQxH,QAAQoH,gBAKhCI,EAAUC,EAAY3D,eACtB2D,EAAcD,EAAUA,EAAQ1D,eAAiB,IACnD,CACF,EAEF,MAAM4D,EACJ,WAAAh7zC,CAAYi5zC,GACVl5zC,KAAKk5zC,aAAeA,EACpBA,EAAano2B,KAAO/wd,KACpBA,KAAKm5zC,cAAgB,EACvB,CACA,WAAA+B,CAAYlk+B,GACVh3V,KAAKm5zC,cAAct3zC,KAAKm1V,GACxBA,EAAK+5H,KAAO/wd,IACd,CACA,OAAAk7X,GACE,MAAMrlC,EAAO,CAAC71V,KAAKk5zC,aAAah+7B,WAEhC,GAAgB,OAAZrlC,EAAK,GAAa,OAAO,KAC7B,IAAK,IAAIj1V,EAAI,EAAGmyzC,EAAO/yzC,KAAKm5zC,cAAc94zC,OAAQO,EAAImyzC,EAAMnyzC,IAAK,CAC/D,MAAMu6zC,EAAWn7zC,KAAKm5zC,cAAcv4zC,GAAGs6X,UAEtB,OAAbig8B,GACJtl+B,EAAKh0V,KAAKs5zC,EACZ,CACA,OAAOtl+B,CACT,EAEF,MAAMul+B,EACJ,WAAAn7zC,CAAYuwd,GACVxwd,KAAKwwd,MAAQA,EACbxwd,KAAK6zd,MAAQ7zd,KAAKq7zC,cAAc7q2B,EAClC,CACA,OAAAt1F,GACE,MAAMrlC,EAAO,GACb,IAAK,IAAIj1V,EAAI,EAAGmyzC,EAAO/yzC,KAAK6zd,MAAMxzd,OAAQO,EAAImyzC,EAAMnyzC,IAAK,CACvD,MAAM06zC,EAAWt7zC,KAAK6zd,MAAMjzd,GAAGs6X,UAEd,OAAbog8B,GACJzl+B,EAAKh0V,KAAKy5zC,EACZ,CACA,OAAOzl+B,CACT,CACA,aAAAwl+B,CAAc7q2B,GACZ,MAAMqD,EAAQ,GACd,IAAK,IAAIjzd,EAAI,EAAGmyzC,EAAOvi2B,EAAMnwd,OAAQO,EAAImyzC,EAAMnyzC,IAAK,CAClD,MAAMo2V,EAAOw5H,EAAM5vd,GACnB,IAAIo2V,EAAK+5H,KACT,GAAI/5H,EAAKqj+B,iBAAkBxm2B,EAAMhyd,KAAK,IAAIo5zC,EAAQjk+B,QAAY,CAC5D,MAAM2j+B,EAAgB3j+B,EAAK2j+B,gBACtBA,EAAc5p2B,MAAM8C,EAAMhyd,KAAK,IAAIo5zC,EAAQN,IAChDA,EAAc5p2B,KAAKmq2B,YAAYlk+B,EACjC,CACF,CACA,OAAO68H,CACT,EAcF,MAAM0n2B,EACJ,WAAAt7zC,CAAYu+C,GACV,IAAIu6b,EAAa34e,UAAUC,OAAS,QAAsB0tC,IAAjB3tC,UAAU,GAAmBA,UAAU,GAAKuyzC,EAAQzosC,QAC7FlqH,KAAKw+C,MAAQA,EACbx+C,KAAK+5Z,KAAO,IAAI45tB,EAAK56oB,GACrB/4e,KAAKkrV,SAAW,EAClB,CACA,OAAAjlV,CAAQw4B,GACN,MAAM44Y,EAAU54Y,EAAM44Y,QAChBw/4B,EAAY,GAIlB,GAAIp4xC,EAAM00xC,WAER,OADI10xC,EAAMopgB,OAAQ7niB,KAAKw+C,MAAM3rB,OAAO4L,EAAM40xC,SAAcrzzC,KAAK+5Z,KAAKlnY,OAAOwkZ,GAClEw/4B,EAET,MAAMxtuC,EAAO5qD,EAAMopgB,OAAS7niB,KAAK+5Z,KAAK50Y,IAAIkyZ,GAAWr3a,KAAK+5Z,KAAKrzX,KAAK2wY,GACpE,IAAKhuV,EAAM,MAAM,IAAI7hE,MAAM,2BAA2B6vZ,EAAQ9rZ,OAAY8rZ,EAAQg94B,OAAOl/qC,MAAMlxI,MAAMoza,EAAQg94B,OAAOl/qC,MAAMnyI,UAAeq0a,EAAQm94B,QAAQr/qC,MAAMlxI,MAAMoza,EAAQm94B,QAAQr/qC,MAAMnyI,yBAC3L,IAEI+3zC,EACAS,EAHAvM,EAAW5luC,EACXo1G,EAAWp1G,EAKf,UAAmBt7C,IAAZgtxC,GACL9L,EAAWjvzC,KAAK+5Z,KAAKjxQ,KAAKmmqC,GACT,OAAbA,EAAmB8L,EAAU,UAA0ChtxC,IAA5BkhxC,EAASpqyC,IAAIsuyC,aAA0B4H,EAAU9L,EAASpqyC,KAI3G,UAAmBkpB,IAAZytxC,GACL/8nC,EAAWz+L,KAAK+5Z,KAAKh5Z,KAAK09L,GACT,OAAbA,EAAmB+8nC,EAAU,UAA0CztxC,IAA5B0wJ,EAAS55K,IAAIsuyC,aAA0BqI,EAAU/8nC,EAAS55K,KAE3G,GAAI4Z,EAAMopgB,OAAQ,CAEhB,IAAI4zxB,EAAiB,KACrB,GAAIV,EAAS,CACX,MAAMW,EAAYX,EAAQhF,gBAAgB1+4B,GAC1C,GAAkB,OAAdqk5B,IACGrk5B,EAAQm+4B,aAAakG,KAAYD,EAAiBC,IAClDX,EAAQvF,aAAakG,IAAY,CACpC,MAAMC,EAAqB37zC,KAAK47zC,aAAab,EAASW,GACtD,IAAK,IAAI96zC,EAAI,EAAGmyzC,EAAO4I,EAAmBt7zC,OAAQO,EAAImyzC,EAAMnyzC,IAC1Di2zC,EAAUh1zC,KAAK85zC,EAAmB/6zC,GAEtC,CAEJ,CAGA,IAAIi7zC,EAAiB,KACrB,GAAIL,EAAS,CACX,MAAMM,EAAYN,EAAQzF,gBAAgB1+4B,GAC1C,GAAkB,OAAdyk5B,IACGzk5B,EAAQm+4B,aAAasG,KAAYD,EAAiBC,IAClDN,EAAQhG,aAAasG,IAAY,CACpC,MAAMH,EAAqB37zC,KAAK47zC,aAAaJ,EAASM,GACtD,IAAK,IAAIl7zC,EAAI,EAAGmyzC,EAAO4I,EAAmBt7zC,OAAQO,EAAImyzC,EAAMnyzC,IAC1Di2zC,EAAUh1zC,KAAK85zC,EAAmB/6zC,GAEtC,CAEJ,CAKA,GAAuB,OAAnB66zC,GAA8C,OAAnBI,EAAyB,CACtD,IAAIE,EAAa,KACYA,EAAN,OAAnBN,EAAsCI,EAA2C,OAAnBA,GAC3CrJ,EAAWE,cAAc+I,EAAgBI,IACjC,EAFyEJ,EAEpDI,EAKpD77zC,KAAKw+C,MAAM3rB,OAAOwkZ,EAAQm94B,SAC1BqC,EAAUh1zC,KAAKw1a,EAAQm94B,SACvB,MAAMmH,EAAqBtk5B,EAAQzya,MAAMm3zC,GACzC,IAAK,IAAIn7zC,EAAI,EAAGmyzC,EAAO4I,EAAmBt7zC,OAAQO,EAAImyzC,EAAMnyzC,IAC1Di2zC,EAAUh1zC,KAAK85zC,EAAmB/6zC,GAEtC,CACIi2zC,EAAUx2zC,OAAS,GAIrBL,KAAK+5Z,KAAKlnY,OAAOwkZ,GACjBw/4B,EAAUh1zC,KAAK48B,KAGfz+B,KAAKkrV,SAASrpV,KAAKw1a,GACnBA,EAAQvuR,KAAOiyqC,EAEnB,KAAO,CAKL,GAAIA,GAAWS,EAAS,CACtB,MAAMQ,EAAQjB,EAAQhF,gBAAgByF,GACtC,GAAc,OAAVQ,EAAgB,CAClB,IAAKjB,EAAQvF,aAAawG,GAAQ,CAChC,MAAML,EAAqB37zC,KAAK47zC,aAAab,EAASiB,GACtD,IAAK,IAAIp7zC,EAAI,EAAGmyzC,EAAO4I,EAAmBt7zC,OAAQO,EAAImyzC,EAAMnyzC,IAC1Di2zC,EAAUh1zC,KAAK85zC,EAAmB/6zC,GAEtC,CACA,IAAK46zC,EAAQhG,aAAawG,GAAQ,CAChC,MAAML,EAAqB37zC,KAAK47zC,aAAaJ,EAASQ,GACtD,IAAK,IAAIp7zC,EAAI,EAAGmyzC,EAAO4I,EAAmBt7zC,OAAQO,EAAImyzC,EAAMnyzC,IAC1Di2zC,EAAUh1zC,KAAK85zC,EAAmB/6zC,GAEtC,CACF,CACF,CACAZ,KAAK+5Z,KAAKlnY,OAAOwkZ,EACnB,CACA,OAAOw/4B,CACT,CAIA,YAAA+E,CAAanE,EAAKtrzC,GAKhBnM,KAAK+5Z,KAAKlnY,OAAO4kyC,GACjB,MAAMjD,EAAUiD,EAAIjD,QACpBx0zC,KAAKw+C,MAAM3rB,OAAO2hyC,GAClB,MAAMqC,EAAYY,EAAI7yzC,MAAMuH,GAI5B,OAHA0qzC,EAAUh1zC,KAAK2yzC,QAEQzmxC,IAAnB0pxC,EAAItE,YAA0BnzzC,KAAK+5Z,KAAK50Y,IAAIsyyC,GACzCZ,CACT,EAIF,MAAMoF,EAAqD,oBAAZh2zC,SAA2BA,QAAQs1D,IAAI0gwC,iCAAmC,IACnHC,EAA6D,oBAAZj2zC,SAA2BA,QAAQs1D,IAAI2gwC,yCAA2C,IA4FzI,MAAM71xC,EAAY,IA3FlB,MACE,GAAA4zD,CAAI1tF,EAAMspV,EAAMsm+B,GACd91xC,EAAU95B,KAAOA,EACjB2izC,EAAQjuvC,QAGR,MAAMm7vC,EAAa,CAAC,IAAI9C,EAAYzj+B,GAAM,IAC1C,IAAK,IAAIj1V,EAAI,EAAGmyzC,EAAOoJ,EAAU97zC,OAAQO,EAAImyzC,EAAMnyzC,IACjDw7zC,EAAWv6zC,KAAK,IAAIy3zC,EAAY6C,EAAUv7zC,IAAI,IAQhD,GANAylC,EAAUoyxC,cAAgB2D,EAAW/7zC,OAMd,eAAnBgmC,EAAU95B,KAAuB,CAEnC,MAAM276B,EAAUk0Y,EAAW,GAC3B,IAAIx7zC,EAAI,EACR,KAAOA,EAAIw7zC,EAAW/7zC,QACqC,OAArDsuzC,EAAeyN,EAAWx7zC,GAAGyqC,KAAM684B,EAAQ784B,MAAgBzqC,IAASw7zC,EAAWn5yC,OAAOriB,EAAG,EAEjG,CAKA,GAAuB,iBAAnBylC,EAAU95B,KAGZ,IAAK,IAAI3L,EAAI,EAAGmyzC,EAAOqJ,EAAW/7zC,OAAQO,EAAImyzC,EAAMnyzC,IAAK,CACvD,MAAMy7zC,EAAMD,EAAWx7zC,GACvB,IAAK,IAAIwD,EAAIxD,EAAI,EAAGy4zC,EAAO+C,EAAW/7zC,OAAQ+D,EAAIi1zC,EAAMj1zC,IACtD,GAAqD,OAAjDuqzC,EAAe0N,EAAIhxxC,KAAM+wxC,EAAWh4zC,GAAGinC,MAAgB,MAAO,EAEtE,CAIF,MAAMmT,EAAQ,IAAIm1kC,EAAK6+L,EAAWtosC,SAClC,IAAK,IAAItpH,EAAI,EAAGmyzC,EAAOqJ,EAAW/7zC,OAAQO,EAAImyzC,EAAMnyzC,IAAK,CACvD,MAAMm4zC,EAAcqD,EAAWx7zC,GAAGk4zC,iBAClC,IAAK,IAAI10zC,EAAI,EAAGi1zC,EAAON,EAAY14zC,OAAQ+D,EAAIi1zC,EAAMj1zC,IAEnD,GADAo6C,EAAMu8M,OAAOg+jC,EAAY30zC,IACrBo6C,EAAM55B,KAAOq3yC,EAEf,MAAM,IAAIz0yC,MAAM,yFAGtB,CAGA,MAAM80yC,EAAY,IAAIf,EAAU/8wC,GAChC,IAAI+9wC,EAAgB/9wC,EAAM55B,KACtBykE,EAAO7qC,EAAM58C,MACjB,KAAOynF,GAAM,CACX,MAAMjC,EAAMiC,EAAKxkE,IACjB,GAAI25B,EAAM55B,OAAS23yC,EAAe,CAEhC,MAAM9E,EAAMrwuC,EAAIiwV,QAChB,MAAM,IAAI7vZ,MAAM,mBAAmB4/D,EAAIygd,OAAS,OAAS,uBAA4Bzgd,EAAI+tD,MAAMlxI,MAAMmjF,EAAI+tD,MAAMnyI,oBAAoBy0zC,EAAIlsyC,OAAYksyC,EAAIpD,OAAOl/qC,MAAMlxI,MAAMwzzC,EAAIpD,OAAOl/qC,MAAMnyI,UAAey0zC,EAAIjD,QAAQr/qC,MAAMlxI,MAAMwzzC,EAAIjD,QAAQr/qC,MAAMnyI,iBACtP,CACA,GAAIw7C,EAAM55B,KAAOq3yC,EAEf,MAAM,IAAIz0yC,MAAM,8EAElB,GAAI80yC,EAAUpx+B,SAAS7qV,OAAS67zC,EAE9B,MAAM,IAAI10yC,MAAM,wFAElB,MAAMqvyC,EAAYyF,EAAUr2zC,QAAQmhF,GACpC,IAAK,IAAIxmF,EAAI,EAAGmyzC,EAAO8D,EAAUx2zC,OAAQO,EAAImyzC,EAAMnyzC,IAAK,CACtD,MAAMwmF,EAAMyvuC,EAAUj2zC,QACCmtC,IAAnBq5C,EAAI+ruC,YAA0B30wC,EAAMu8M,OAAO3zK,EACjD,CACAm1uC,EAAgB/9wC,EAAM55B,KACtBykE,EAAO7qC,EAAM58C,KACf,CAGAstzC,EAAQjuvC,QAGR,MAAMy4vC,EAAWF,EAAQjz5B,QAAQ+15B,EAAUpx+B,UAE3C,OADe,IAAIkw+B,EAAa1B,GAClBx+7B,SAChB,GAqCF,MAPY,CACVl4M,MAzBY,SAAU6yK,GACtB,IAAK,IAAIjoG,EAAOxtP,UAAUC,OAAQ87zC,EAAY,IAAI18zC,MAAMmuP,EAAO,EAAIA,EAAO,EAAI,GAAIlF,EAAO,EAAGA,EAAOkF,EAAMlF,IACvGyzkC,EAAUzzkC,EAAO,GAAKtoP,UAAUsoP,GAElC,OAAOriN,EAAU4zD,IAAI,QAAS47P,EAAMsm+B,EACtC,EAqBEj/nC,aApBmB,SAAU24J,GAC7B,IAAK,IAAIl1F,EAAQvgQ,UAAUC,OAAQ87zC,EAAY,IAAI18zC,MAAMkhQ,EAAQ,EAAIA,EAAQ,EAAI,GAAIC,EAAQ,EAAGA,EAAQD,EAAOC,IAC7Gu7jC,EAAUv7jC,EAAQ,GAAKxgQ,UAAUwgQ,GAEnC,OAAOv6N,EAAU4zD,IAAI,eAAgB47P,EAAMsm+B,EAC7C,EAgBEvpmC,IAfU,SAAUijI,GACpB,IAAK,IAAI3lF,EAAQ9vQ,UAAUC,OAAQ87zC,EAAY,IAAI18zC,MAAMywQ,EAAQ,EAAIA,EAAQ,EAAI,GAAIC,EAAQ,EAAGA,EAAQD,EAAOC,IAC7GgsjC,EAAUhsjC,EAAQ,GAAK/vQ,UAAU+vQ,GAEnC,OAAO9pO,EAAU4zD,IAAI,MAAO47P,EAAMsm+B,EACpC,EAWEhl2B,WAViB,SAAUql2B,GAC3B,IAAK,IAAIpsjC,EAAQhwQ,UAAUC,OAAQo8zC,EAAgB,IAAIh9zC,MAAM2wQ,EAAQ,EAAIA,EAAQ,EAAI,GAAIC,EAAQ,EAAGA,EAAQD,EAAOC,IACjHosjC,EAAcpsjC,EAAQ,GAAKjwQ,UAAUiwQ,GAEvC,OAAOhqO,EAAU4zD,IAAI,aAAcuiuC,EAAaC,EAClD,EAUH,CA97EmFl25B,gCCQpF,IAAIm25B,EAAuB,EAAQ,MAEnC,SAASC,IAAiB,CAC1B,SAASC,IAA0B,CACnCA,EAAuBC,kBAAoBF,EAE3C7/xC,EAAOr6B,QAAU,WACf,SAASq6zC,EAAK7vxC,EAAOs+G,EAAU7H,EAAe3sH,EAAUgmyC,EAAcC,GACpE,GAAIA,IAAWN,EAAf,CAIA,IAAIplxC,EAAM,IAAI9vB,MACZ,mLAKF,MADA8vB,EAAI5sC,KAAO,sBACL4sC,CAPN,CAQF,CAEA,SAAS2lxC,IACP,OAAOH,CACT,CAHAA,EAAKI,WAAaJ,EAMlB,IAAIK,EAAiB,CACnBjjxC,MAAO4ixC,EACPM,OAAQN,EACRlq2B,KAAMkq2B,EACN/8wC,KAAM+8wC,EACN/yqC,OAAQ+yqC,EACR1/wC,OAAQ0/wC,EACR//yC,OAAQ+/yC,EACR5i0B,OAAQ4i0B,EAER77X,IAAK67X,EACLO,QAASJ,EACTlxuC,QAAS+wuC,EACT3qN,YAAa2qN,EACbQ,WAAYL,EACZ5zuC,KAAMyzuC,EACNS,SAAUN,EACVO,MAAOP,EACPQ,UAAWR,EACX36lC,MAAO26lC,EACPS,MAAOT,EAEPU,eAAgBf,EAChBC,kBAAmBF,GAKrB,OAFAQ,EAAeS,UAAYT,EAEpBA,CACT,kBC/CErgyC,EAAOr6B,QAAU,EAAQ,KAAR,0BCNnBq6B,EAAOr6B,QAFoB,6ECR3BnD,OAAO4D,eAAeT,EAAS,aAAc,CAAEtB,OAAO,IACtDsB,EAAQuoC,gBAAkBvoC,EAAQo7zC,aAAep7zC,EAAQqoC,cAAgBroC,EAAQq7zC,WAAar7zC,EAAQs7zC,WAAat7zC,EAAQu7zC,YAAcv7zC,EAAQw7zC,iBAAc,EAC/J,MAAMC,EAAe,EAAQ,OACvBn4zC,EAAI,CACN,oBACA,oBACA,oBACA,oBACA,oBACA,qBAEEvC,EAAI,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,KAS/B,SAASu6zC,EAAWr8oC,GAChB,GAAIA,EAAK/7K,EAAI,GAAK+7K,EAAK/7K,EAAI,GACvB,MAAM,IAAI6hB,MAAM,cAEpB,MAAM7hB,EAAI+xE,OAAOgqG,EAAK/7K,GACtB,IAAI1B,EAAIyzE,OAAOgqG,EAAKz9K,IAAO,IAAM0B,EAC7B3C,EAAI00E,OAAOgqG,EAAK1+K,IAAO,IAAM2C,EACjC,IAAK,IAAI/E,EAAI,EAAGA,EAAI,EAAGA,IAAK,CACxB,MAAME,EAAI0C,EAAE,EAAI5C,GACV0C,EAAIyC,EAAE,EAAInF,GAChBqD,GAAKA,EAAKA,GAAKnD,GAAMwC,EACrBN,GAAKA,EAAKA,GAAKlC,GAAMwC,CACzB,CAMA,OALgB,oBACX,IAAM,IACNqC,GAAK,KACJ1B,EAAKjB,GAAK,KAAQ,IACnB,kBAAyB,GAAJ2C,CAE9B,CAuBA,SAASmlC,EAAcqzxC,GACnB,OAAQA,GAAW,IAAO,KAC9B,CAjDA17zC,EAAQw7zC,YAHR,SAAqBlooC,GACjB,OAAOr+G,OAAO,KAAKq+G,IACvB,EAKAtzL,EAAQu7zC,YAHR,SAAqBhhzC,GACjB,OAAOA,EAAMzY,SAAS,GAC1B,EAsBA9B,EAAQs7zC,WAAaA,EAqBrBt7zC,EAAQq7zC,WApBR,SAAoBK,GAChB,MAEMx4zC,EAAKw4zC,GAAW,IAAO,MACvBj4zC,GAAe,iBAAVi4zC,IAA+B,IAC1C,GAAa,MAJCA,GAAW,IAAO,KAID,MAHdA,GAAW,IAAO,IAI/B,MAAM,IAAI32yC,MAAM,cAEpB,IAAIvjB,EAAIiC,EACJlD,EAAIkD,GAAK,GACb,IAAK,IAAItF,EAAI,EAAGA,EAAI,EAAGA,IAAK,CACxB,MAAME,EAAI0C,EAAE5C,GACN0C,EAAIyC,EAAEnF,GACZqD,GAAKA,EAAKA,GAAKnD,GAAMwC,EACrBN,GAAKA,EAAKA,GAAKlC,GAAMwC,CACzB,CAGA,OAFAW,IAAU,IAAM0B,EAChB3C,IAAU,IAAM2C,EACT,CAAEA,EAAGw/B,OAAOx/B,GAAI1B,EAAGkhC,OAAOlhC,GAAIjB,EAAGmiC,OAAOniC,GACnD,EAKAP,EAAQqoC,cAAgBA,EAMxBroC,EAAQo7zC,aALR,SAAsBM,GAClB,MAAMC,EAAUtzxC,EAAcqzxC,GAAW,GAEzC,OADgBA,IAAY,OAAS,KAASC,GAAW,IAAQ,kBAA+B,GAAVA,CAE1F,EASA37zC,EAAQuoC,gBAPR,SAAyBjG,EAAU6vF,GAC/B,MAAMj1F,EAAOwF,OAAOyvF,GACpB,OAAO,EAAIspsC,EAAaxzxC,OAAO3F,EAAU,CACrCsxT,SAAU12T,EACVo2T,SAAUp2T,IACXtQ,KAAI,EAAEprB,EAAGjB,EAAG2C,KAAOo4zC,EAAW,CAAE95zC,IAAGjB,IAAG2C,OAC7C,gCC9EA,MAAM04zC,EAAkB,EAAQ,OAC1BC,EAAkB,EAAQ,OAC1BC,EAAe,EAAQ,KACvBC,EAAe,EAAQ,OAIvBC,EAA2B/8zC,OAAO,4BAgNxC,SAASg9zC,EAA6Bv9zC,GACrC,GAAqB,iBAAVA,GAAuC,IAAjBA,EAAMd,OACtC,MAAM,IAAIR,UAAU,uDAEtB,CAEA,SAASgoB,EAAO1mB,EAAOgoB,GACtB,OAAIA,EAAQtB,OACJsB,EAAQmxQ,OAAS+jiC,EAAgBl9zC,GAASmuB,mBAAmBnuB,GAG9DA,CACR,CAEA,SAAS0nB,EAAO1nB,EAAOgoB,GACtB,OAAIA,EAAQN,OACJy1yC,EAAgBn9zC,GAGjBA,CACR,CAEA,SAASw9zC,EAAWluwC,GACnB,OAAIhxD,MAAMkS,QAAQ8+C,GACVA,EAAMlkB,OAGO,iBAAVkkB,EACHkuwC,EAAWr/zC,OAAOgU,KAAKm9C,IAC5BlkB,MAAK,CAACvrC,EAAGsC,IAAM6hC,OAAOnkC,GAAKmkC,OAAO7hC,KAClC+rB,KAAIxK,GAAO4rC,EAAM5rC,KAGb4rC,CACR,CAEA,SAASmuwC,EAAWnuwC,GACnB,MAAM4npB,EAAY5npB,EAAMjwD,QAAQ,KAKhC,OAJmB,IAAf63sB,IACH5npB,EAAQA,EAAM1uD,MAAM,EAAGs2sB,IAGjB5npB,CACR,CAYA,SAASsrE,EAAQtrE,GAEhB,MAAMouwC,GADNpuwC,EAAQmuwC,EAAWnuwC,IACMjwD,QAAQ,KACjC,OAAoB,IAAhBq+zC,EACI,GAGDpuwC,EAAM1uD,MAAM88zC,EAAa,EACjC,CAEA,SAAS1vwB,EAAWhujB,EAAOgoB,GAO1B,OANIA,EAAQ21yC,eAAiB35xC,OAAOmH,MAAMnH,OAAOhkC,KAA6B,iBAAVA,GAAuC,KAAjBA,EAAMkxB,OAC/FlxB,EAAQgkC,OAAOhkC,IACLgoB,EAAQ41yC,eAA2B,OAAV59zC,GAA2C,SAAxBA,EAAMoO,eAAoD,UAAxBpO,EAAMoO,gBAC9FpO,EAAgC,SAAxBA,EAAMoO,eAGRpO,CACR,CAEA,SAASorB,EAAM0iE,EAAO9lE,GAUrBu1yC,GATAv1yC,EAAU7pB,OAAOa,OAAO,CACvB0oB,QAAQ,EACR0jB,MAAM,EACNyyxC,YAAa,OACbC,qBAAsB,IACtBH,cAAc,EACdC,eAAe,GACb51yC,IAEkC81yC,sBAErC,MAAM75wB,EA7LP,SAA8Bj8hB,GAC7B,IAAI3F,EAEJ,OAAQ2F,EAAQ61yC,aACf,IAAK,QACJ,MAAO,CAACn6yC,EAAK1jB,EAAOs0zB,KACnBjyyB,EAAS,aAAapR,KAAKyS,GAE3BA,EAAMA,EAAIpY,QAAQ,WAAY,IAEzB+W,QAKoBuqB,IAArB0nxB,EAAY5wyB,KACf4wyB,EAAY5wyB,GAAO,CAAC,GAGrB4wyB,EAAY5wyB,GAAKrB,EAAO,IAAMriB,GAR7Bs0zB,EAAY5wyB,GAAO1jB,CAQe,EAGrC,IAAK,UACJ,MAAO,CAAC0jB,EAAK1jB,EAAOs0zB,KACnBjyyB,EAAS,UAAUpR,KAAKyS,GACxBA,EAAMA,EAAIpY,QAAQ,QAAS,IAEtB+W,OAKoBuqB,IAArB0nxB,EAAY5wyB,GAKhB4wyB,EAAY5wyB,GAAO,GAAG7iB,OAAOyzzB,EAAY5wyB,GAAM1jB,GAJ9Cs0zB,EAAY5wyB,GAAO,CAAC1jB,GALpBs0zB,EAAY5wyB,GAAO1jB,CASiC,EAGvD,IAAK,uBACJ,MAAO,CAAC0jB,EAAK1jB,EAAOs0zB,KACnBjyyB,EAAS,WAAWpR,KAAKyS,GACzBA,EAAMA,EAAIpY,QAAQ,SAAU,IAEvB+W,OAKoBuqB,IAArB0nxB,EAAY5wyB,GAKhB4wyB,EAAY5wyB,GAAO,GAAG7iB,OAAOyzzB,EAAY5wyB,GAAM1jB,GAJ9Cs0zB,EAAY5wyB,GAAO,CAAC1jB,GALpBs0zB,EAAY5wyB,GAAO1jB,CASiC,EAGvD,IAAK,QACL,IAAK,YACJ,MAAO,CAAC0jB,EAAK1jB,EAAOs0zB,KACnB,MAAM9jzB,EAA2B,iBAAVxQ,GAAsBA,EAAMiN,SAAS+a,EAAQ81yC,sBAC9DC,EAAmC,iBAAV/9zC,IAAuBwQ,GAAWkX,EAAO1nB,EAAOgoB,GAAS/a,SAAS+a,EAAQ81yC,sBACzG99zC,EAAQ+9zC,EAAiBr2yC,EAAO1nB,EAAOgoB,GAAWhoB,EAClD,MAAM8qJ,EAAWt6I,GAAWutzC,EAAiB/9zC,EAAMyD,MAAMukB,EAAQ81yC,sBAAsB5vyC,KAAI+xB,GAAQv4B,EAAOu4B,EAAMj4B,KAAsB,OAAVhoB,EAAiBA,EAAQ0nB,EAAO1nB,EAAOgoB,GACnKssyB,EAAY5wyB,GAAOonI,CAAQ,EAG7B,IAAK,oBACJ,MAAO,CAACpnI,EAAK1jB,EAAOs0zB,KACnB,MAAM9jzB,EAAU,UAAUtG,KAAKwZ,GAG/B,GAFAA,EAAMA,EAAIpY,QAAQ,QAAS,KAEtBkF,EAEJ,YADA8jzB,EAAY5wyB,GAAO1jB,EAAQ0nB,EAAO1nB,EAAOgoB,GAAWhoB,GAIrD,MAAMsyT,EAAuB,OAAVtyT,EAClB,GACAA,EAAMyD,MAAMukB,EAAQ81yC,sBAAsB5vyC,KAAI+xB,GAAQv4B,EAAOu4B,EAAMj4B,UAE3C4kB,IAArB0nxB,EAAY5wyB,GAKhB4wyB,EAAY5wyB,GAAO,GAAG7iB,OAAOyzzB,EAAY5wyB,GAAM4uS,GAJ9CgigB,EAAY5wyB,GAAO4uS,CAIsC,EAG5D,QACC,MAAO,CAAC5uS,EAAK1jB,EAAOs0zB,UACM1nxB,IAArB0nxB,EAAY5wyB,GAKhB4wyB,EAAY5wyB,GAAO,GAAG7iB,OAAOyzzB,EAAY5wyB,GAAM1jB,GAJ9Cs0zB,EAAY5wyB,GAAO1jB,CAIiC,EAGzD,CAyFmBg+zC,CAAqBh2yC,GAGjC82c,EAAM3ge,OAAOY,OAAO,MAE1B,GAAqB,iBAAV+uF,EACV,OAAOgxY,EAKR,KAFAhxY,EAAQA,EAAM58D,OAAO5lB,QAAQ,SAAU,KAGtC,OAAOwzd,EAGR,IAAK,MAAMzwZ,KAASyf,EAAMrqF,MAAM,KAAM,CACrC,GAAc,KAAV4qE,EACH,SAGD,IAAK3qD,EAAK1jB,GAASo9zC,EAAap1yC,EAAQN,OAAS2mD,EAAM/iE,QAAQ,MAAO,KAAO+iE,EAAO,KAIpFruE,OAAkB4sC,IAAV5sC,EAAsB,KAAO,CAAC,QAAS,YAAa,qBAAqBiN,SAAS+a,EAAQ61yC,aAAe79zC,EAAQ0nB,EAAO1nB,EAAOgoB,GACvIi8hB,EAAUv8hB,EAAOhE,EAAKsE,GAAUhoB,EAAO8+d,EACxC,CAEA,IAAK,MAAMp7c,KAAOvlB,OAAOgU,KAAK2sd,GAAM,CACnC,MAAM9+d,EAAQ8+d,EAAIp7c,GAClB,GAAqB,iBAAV1jB,GAAgC,OAAVA,EAChC,IAAK,MAAMuC,KAAKpE,OAAOgU,KAAKnS,GAC3BA,EAAMuC,GAAKyrjB,EAAWhujB,EAAMuC,GAAIylB,QAGjC82c,EAAIp7c,GAAOsqiB,EAAWhujB,EAAOgoB,EAE/B,CAEA,OAAqB,IAAjBA,EAAQojB,KACJ0zb,IAGiB,IAAjB92c,EAAQojB,KAAgBjtC,OAAOgU,KAAK2sd,GAAK1zb,OAASjtC,OAAOgU,KAAK2sd,GAAK1zb,KAAKpjB,EAAQojB,OAAO7Y,QAAO,CAAClQ,EAAQqB,KAC9G,MAAM1jB,EAAQ8+d,EAAIp7c,GAQlB,OAPI5R,QAAQ9R,IAA2B,iBAAVA,IAAuB1B,MAAMkS,QAAQxQ,GAEjEqiB,EAAOqB,GAAO85yC,EAAWx9zC,GAEzBqiB,EAAOqB,GAAO1jB,EAGRqiB,CAAM,GACXlkB,OAAOY,OAAO,MAClB,CAEAuC,EAAQs5H,QAAUA,EAClBt5H,EAAQ8pB,MAAQA,EAEhB9pB,EAAQgX,UAAY,CAAC2jC,EAAQj0B,KAC5B,IAAKi0B,EACJ,MAAO,GAURshxC,GAPAv1yC,EAAU7pB,OAAOa,OAAO,CACvB0nB,QAAQ,EACRyyQ,QAAQ,EACR0kiC,YAAa,OACbC,qBAAsB,KACpB91yC,IAEkC81yC,sBAErC,MAAMG,EAAev6yC,GACnBsE,EAAQk2yC,UAnXwBl+zC,MAmXMi8C,EAAOv4B,IAC7CsE,EAAQm2yC,iBAAmC,KAAhBlixC,EAAOv4B,GAG9BugiB,EAnXP,SAA+Bj8hB,GAC9B,OAAQA,EAAQ61yC,aACf,IAAK,QACJ,OAAOn6yC,GAAO,CAACrB,EAAQriB,KACtB,MAAM6b,EAAQwG,EAAOnjB,OAErB,YACW0tC,IAAV5sC,GACCgoB,EAAQk2yC,UAAsB,OAAVl+zC,GACpBgoB,EAAQm2yC,iBAA6B,KAAVn+zC,EAErBqiB,EAGM,OAAVriB,EACI,IAAIqiB,EAAQ,CAACqE,EAAOhD,EAAKsE,GAAU,IAAKnM,EAAO,KAAKnQ,KAAK,KAG1D,IACH2W,EACH,CAACqE,EAAOhD,EAAKsE,GAAU,IAAKtB,EAAO7K,EAAOmM,GAAU,KAAMtB,EAAO1mB,EAAOgoB,IAAUtc,KAAK,IACvF,EAGH,IAAK,UACJ,OAAOgY,GAAO,CAACrB,EAAQriB,SAEX4sC,IAAV5sC,GACCgoB,EAAQk2yC,UAAsB,OAAVl+zC,GACpBgoB,EAAQm2yC,iBAA6B,KAAVn+zC,EAErBqiB,EAGM,OAAVriB,EACI,IAAIqiB,EAAQ,CAACqE,EAAOhD,EAAKsE,GAAU,MAAMtc,KAAK,KAG/C,IAAI2W,EAAQ,CAACqE,EAAOhD,EAAKsE,GAAU,MAAOtB,EAAO1mB,EAAOgoB,IAAUtc,KAAK,KAGhF,IAAK,uBACJ,OAAOgY,GAAO,CAACrB,EAAQriB,SAEX4sC,IAAV5sC,GACCgoB,EAAQk2yC,UAAsB,OAAVl+zC,GACpBgoB,EAAQm2yC,iBAA6B,KAAVn+zC,EAErBqiB,EAGM,OAAVriB,EACI,IAAIqiB,EAAQ,CAACqE,EAAOhD,EAAKsE,GAAU,UAAUtc,KAAK,KAGnD,IAAI2W,EAAQ,CAACqE,EAAOhD,EAAKsE,GAAU,SAAUtB,EAAO1mB,EAAOgoB,IAAUtc,KAAK,KAGnF,IAAK,QACL,IAAK,YACL,IAAK,oBAAqB,CACzB,MAAM0yzC,EAAsC,sBAAxBp2yC,EAAQ61yC,YAC3B,MACA,IAED,OAAOn6yC,GAAO,CAACrB,EAAQriB,SAEX4sC,IAAV5sC,GACCgoB,EAAQk2yC,UAAsB,OAAVl+zC,GACpBgoB,EAAQm2yC,iBAA6B,KAAVn+zC,EAErBqiB,GAIRriB,EAAkB,OAAVA,EAAiB,GAAKA,EAER,IAAlBqiB,EAAOnjB,OACH,CAAC,CAACwnB,EAAOhD,EAAKsE,GAAUo2yC,EAAa13yC,EAAO1mB,EAAOgoB,IAAUtc,KAAK,KAGnE,CAAC,CAAC2W,EAAQqE,EAAO1mB,EAAOgoB,IAAUtc,KAAKsc,EAAQ81yC,uBAExD,CAEA,QACC,OAAOp6yC,GAAO,CAACrB,EAAQriB,SAEX4sC,IAAV5sC,GACCgoB,EAAQk2yC,UAAsB,OAAVl+zC,GACpBgoB,EAAQm2yC,iBAA6B,KAAVn+zC,EAErBqiB,EAGM,OAAVriB,EACI,IAAIqiB,EAAQqE,EAAOhD,EAAKsE,IAGzB,IAAI3F,EAAQ,CAACqE,EAAOhD,EAAKsE,GAAU,IAAKtB,EAAO1mB,EAAOgoB,IAAUtc,KAAK,KAGhF,CA6QmB2yzC,CAAsBr2yC,GAElCs2yC,EAAa,CAAC,EAEpB,IAAK,MAAM56yC,KAAOvlB,OAAOgU,KAAK8pC,GACxBgixC,EAAav6yC,KACjB46yC,EAAW56yC,GAAOu4B,EAAOv4B,IAI3B,MAAMvR,EAAOhU,OAAOgU,KAAKmszC,GAMzB,OAJqB,IAAjBt2yC,EAAQojB,MACXj5B,EAAKi5B,KAAKpjB,EAAQojB,MAGZj5B,EAAK+b,KAAIxK,IACf,MAAM1jB,EAAQi8C,EAAOv4B,GAErB,YAAckpB,IAAV5sC,EACI,GAGM,OAAVA,EACI0mB,EAAOhD,EAAKsE,GAGhB1pB,MAAMkS,QAAQxQ,GACI,IAAjBA,EAAMd,QAAwC,sBAAxB8oB,EAAQ61yC,YAC1Bn3yC,EAAOhD,EAAKsE,GAAW,KAGxBhoB,EACLuyB,OAAO0xhB,EAAUvgiB,GAAM,IACvBhY,KAAK,KAGDgb,EAAOhD,EAAKsE,GAAW,IAAMtB,EAAO1mB,EAAOgoB,EAAQ,IACxD0D,QAAO5oB,GAAKA,EAAE5D,OAAS,IAAGwM,KAAK,IAAI,EAGvCpK,EAAQi9zC,SAAW,CAACxvyC,EAAK/G,KACxBA,EAAU7pB,OAAOa,OAAO,CACvB0oB,QAAQ,GACNM,GAEH,MAAOw2yC,EAAMj4tC,GAAQ62tC,EAAaruyC,EAAK,KAEvC,OAAO5wB,OAAOa,OACb,CACC+vB,IAAKyvyC,EAAK/6zC,MAAM,KAAK,IAAM,GAC3BqqF,MAAO1iE,EAAMwvG,EAAQ7rG,GAAM/G,IAE5BA,GAAWA,EAAQy2yC,yBAA2Bl4tC,EAAO,CAACm4tC,mBAAoBh3yC,EAAO6+E,EAAMv+E,IAAY,CAAC,EACpG,EAGF1mB,EAAQq9zC,aAAe,CAAC1ixC,EAAQj0B,KAC/BA,EAAU7pB,OAAOa,OAAO,CACvB0nB,QAAQ,EACRyyQ,QAAQ,EACR,CAACmkiC,IAA2B,GAC1Bt1yC,GAEH,MAAM+G,EAAM0uyC,EAAWxhxC,EAAOltB,KAAKtrB,MAAM,KAAK,IAAM,GAC9Cm7zC,EAAet9zC,EAAQs5H,QAAQ3+E,EAAOltB,KACtC8vyC,EAAqBv9zC,EAAQ8pB,MAAMwzyC,EAAc,CAACxzxC,MAAM,IAExD0iD,EAAQ3vF,OAAOa,OAAO6/zC,EAAoB5ixC,EAAO6xC,OACvD,IAAI6pH,EAAcr2M,EAAQgX,UAAUw1E,EAAO9lE,GACvC2vL,IACHA,EAAc,IAAIA,KAGnB,IAAIpxG,EAlML,SAAiBx3E,GAChB,IAAIw3E,EAAO,GACX,MAAM2wmB,EAAYnorB,EAAI1vB,QAAQ,KAK9B,OAJmB,IAAf63sB,IACH3wmB,EAAOx3E,EAAInuB,MAAMs2sB,IAGX3wmB,CACR,CA0LYu4tC,CAAQ7ixC,EAAOltB,KAK1B,OAJIktB,EAAOyixC,qBACVn4tC,EAAO,IAAIv+E,EAAQs1yC,GAA4B52yC,EAAOu1B,EAAOyixC,mBAAoB12yC,GAAWi0B,EAAOyixC,sBAG7F,GAAG3vyC,IAAM4oL,IAAcpxG,GAAM,EAGrCjlG,EAAQm2X,KAAO,CAACnoU,EAAO5jC,EAAQ1D,KAC9BA,EAAU7pB,OAAOa,OAAO,CACvBy/zC,yBAAyB,EACzB,CAACnB,IAA2B,GAC1Bt1yC,GAEH,MAAM,IAAC+G,EAAG,MAAE++D,EAAK,mBAAE4wuC,GAAsBp9zC,EAAQi9zC,SAASjvwC,EAAOtnC,GACjE,OAAO1mB,EAAQq9zC,aAAa,CAC3B5vyC,MACA++D,MAAOuvuC,EAAavvuC,EAAOpiE,GAC3BgzyC,sBACE12yC,EAAQ,EAGZ1mB,EAAQ8jqB,QAAU,CAAC91mB,EAAO5jC,EAAQ1D,KACjC,MAAM+2yC,EAAkBzg0C,MAAMkS,QAAQkb,GAAUhI,IAAQgI,EAAOze,SAASyW,GAAO,CAACA,EAAK1jB,KAAW0rB,EAAOhI,EAAK1jB,GAE5G,OAAOsB,EAAQm2X,KAAKnoU,EAAOyvwC,EAAiB/2yC,EAAQ,qBChee2T,EAAOr6B,QAAwF,WAAW,aAAa,SAASrD,EAAEA,EAAEW,EAAEZ,EAAE6B,EAAE4B,IAAI,SAASxD,EAAEC,EAAEU,EAAEZ,EAAE6B,EAAE4B,GAAG,KAAK5B,EAAE7B,GAAG,CAAC,GAAG6B,EAAE7B,EAAE,IAAI,CAAC,IAAImB,EAAEU,EAAE7B,EAAE,EAAE2B,EAAEf,EAAEZ,EAAE,EAAEqD,EAAEK,KAAKwnB,IAAI/pB,GAAGoC,EAAE,GAAGG,KAAKkxB,IAAI,EAAEvxB,EAAE,GAAGH,EAAE,GAAGQ,KAAK4yF,KAAKjzF,EAAEE,GAAGpC,EAAEoC,GAAGpC,IAAIQ,EAAER,EAAE,EAAE,GAAG,EAAE,GAA+ElB,EAAEC,EAAEU,EAA9E8C,KAAK8K,IAAIxO,EAAE0D,KAAKyK,MAAMvN,EAAEe,EAAE4B,EAAEpC,EAAE+B,IAAMQ,KAAKgL,IAAI7M,EAAE6B,KAAKyK,MAAMvN,GAAGO,EAAEQ,GAAG4B,EAAEpC,EAAE+B,IAAcO,EAAE,CAAC,IAAIE,EAAEzD,EAAEU,GAAG4C,EAAExD,EAAE8E,EAAEjD,EAAE,IAAIJ,EAAEvB,EAAEF,EAAEY,GAAG6C,EAAEvD,EAAE2B,GAAG8B,GAAG,GAAGlC,EAAEvB,EAAEF,EAAE6B,GAAG2B,EAAEsB,GAAG,CAAC,IAAIrD,EAAEvB,EAAEsD,EAAEsB,GAAGtB,IAAIsB,IAAIrB,EAAEvD,EAAEsD,GAAGG,GAAG,GAAGH,IAAI,KAAKC,EAAEvD,EAAE4E,GAAGnB,GAAG,GAAGmB,GAAG,CAAC,IAAIrB,EAAEvD,EAAEF,GAAG2D,GAAGlC,EAAEvB,EAAEF,EAAE8E,GAAGrD,EAAEvB,IAAI4E,EAAEjD,GAAGiD,GAAGlE,IAAIZ,EAAE8E,EAAE,GAAGlE,GAAGkE,IAAIjD,EAAEiD,EAAE,EAAE,CAAC,CAA9Z,CAAga7E,EAAEW,EAAEZ,GAAG,EAAE6B,GAAG5B,EAAEiB,OAAO,EAAEuC,GAAGvD,EAAE,CAAC,SAASuB,EAAExB,EAAEwB,EAAEvB,GAAG,IAAIU,EAAEX,EAAEwB,GAAGxB,EAAEwB,GAAGxB,EAAEC,GAAGD,EAAEC,GAAGU,CAAC,CAAC,SAASV,EAAED,EAAEwB,GAAG,OAAOxB,EAAEwB,GAAG,EAAExB,EAAEwB,EAAE,EAAE,CAAC,CAAC,IAAIb,EAAE,SAASX,QAAG,IAASA,IAAIA,EAAE,GAAGY,KAAKmg0C,YAAYt9zC,KAAK8K,IAAI,EAAEvO,GAAGY,KAAKog0C,YAAYv9zC,KAAK8K,IAAI,EAAE9K,KAAKuK,KAAK,GAAGpN,KAAKmg0C,cAAcng0C,KAAKglB,OAAO,EAAE,SAAS7lB,EAAEC,EAAEwB,EAAEvB,GAAG,IAAIA,EAAE,OAAOuB,EAAEJ,QAAQpB,GAAG,IAAI,IAAIW,EAAE,EAAEA,EAAEa,EAAEP,OAAON,IAAI,GAAGV,EAAED,EAAEwB,EAAEb,IAAI,OAAOA,EAAE,OAAO,CAAC,CAAC,SAASiB,EAAE5B,EAAEwB,GAAGgC,EAAExD,EAAE,EAAEA,EAAE4gC,SAAS3/B,OAAOO,EAAExB,EAAE,CAAC,SAASwD,EAAExD,EAAEwB,EAAEvB,EAAEU,EAAEZ,GAAGA,IAAIA,EAAE2D,EAAE,OAAO3D,EAAEo7K,KAAK,IAAIp7K,EAAEq7K,KAAK,IAAIr7K,EAAEs7K,MAAK,IAAKt7K,EAAEu7K,MAAK,IAAK,IAAI,IAAI15K,EAAEJ,EAAEI,EAAE3B,EAAE2B,IAAI,CAAC,IAAI4B,EAAExD,EAAE4gC,SAASh/B,GAAGV,EAAEnB,EAAEC,EAAEm+Z,KAAKx9Z,EAAE6C,GAAGA,EAAE,CAAC,OAAOzD,CAAC,CAAC,SAASmB,EAAElB,EAAEwB,GAAG,OAAOxB,EAAEm7K,KAAK13K,KAAKgL,IAAIzO,EAAEm7K,KAAK35K,EAAE25K,MAAMn7K,EAAEo7K,KAAK33K,KAAKgL,IAAIzO,EAAEo7K,KAAK55K,EAAE45K,MAAMp7K,EAAEq7K,KAAK53K,KAAK8K,IAAIvO,EAAEq7K,KAAK75K,EAAE65K,MAAMr7K,EAAEs7K,KAAK73K,KAAK8K,IAAIvO,EAAEs7K,KAAK95K,EAAE85K,MAAMt7K,CAAC,CAAC,SAAS0B,EAAE1B,EAAEwB,GAAG,OAAOxB,EAAEm7K,KAAK35K,EAAE25K,IAAI,CAAC,SAAS/3K,EAAEpD,EAAEwB,GAAG,OAAOxB,EAAEo7K,KAAK55K,EAAE45K,IAAI,CAAC,SAAS93K,EAAEtD,GAAG,OAAOA,EAAEq7K,KAAKr7K,EAAEm7K,OAAOn7K,EAAEs7K,KAAKt7K,EAAEo7K,KAAK,CAAC,SAASn4K,EAAEjD,GAAG,OAAOA,EAAEq7K,KAAKr7K,EAAEm7K,MAAMn7K,EAAEs7K,KAAKt7K,EAAEo7K,KAAK,CAAC,SAASp3K,EAAEhE,EAAEwB,GAAG,OAAOxB,EAAEm7K,MAAM35K,EAAE25K,MAAMn7K,EAAEo7K,MAAM55K,EAAE45K,MAAM55K,EAAE65K,MAAMr7K,EAAEq7K,MAAM75K,EAAE85K,MAAMt7K,EAAEs7K,IAAI,CAAC,SAAS75K,EAAEzB,EAAEwB,GAAG,OAAOA,EAAE25K,MAAMn7K,EAAEq7K,MAAM75K,EAAE45K,MAAMp7K,EAAEs7K,MAAM95K,EAAE65K,MAAMr7K,EAAEm7K,MAAM35K,EAAE85K,MAAMt7K,EAAEo7K,IAAI,CAAC,SAAS13K,EAAE1D,GAAG,MAAM,CAAC4gC,SAAS5gC,EAAE4/B,OAAO,EAAEu+X,MAAK,EAAGhjP,KAAK,IAAIC,KAAK,IAAIC,MAAK,IAAKC,MAAK,IAAK,CAAC,SAAS/3K,EAAE/B,EAAEvB,EAAEU,EAAEZ,EAAE6B,GAAG,IAAI,IAAI4B,EAAE,CAACvD,EAAEU,GAAG6C,EAAEvC,QAAQ,MAAMN,EAAE6C,EAAEhB,QAAQvC,EAAEuD,EAAEhB,QAAQzC,GAAG,CAAC,IAAImB,EAAEjB,EAAEwD,KAAKuK,MAAMrN,EAAEV,GAAGF,EAAE,GAAGA,EAAEC,EAAEwB,EAAEN,EAAEjB,EAAEU,EAAEiB,GAAG4B,EAAEf,KAAKxC,EAAEiB,EAAEA,EAAEP,EAAE,CAAC,CAAC,OAAOA,EAAEL,UAAU0F,IAAI,WAAW,OAAOpF,KAAKqg0C,KAAKrg0C,KAAKwP,KAAK,GAAG,EAAEzP,EAAEL,UAAU6rD,OAAO,SAASnsD,GAAG,IAAIwB,EAAEZ,KAAKwP,KAAKnQ,EAAE,GAAG,IAAIwB,EAAEzB,EAAEwB,GAAG,OAAOvB,EAAE,IAAI,IAAIU,EAAEC,KAAKs/uC,OAAOngvC,EAAE,GAAGyB,GAAG,CAAC,IAAI,IAAII,EAAE,EAAEA,EAAEJ,EAAEo/B,SAAS3/B,OAAOW,IAAI,CAAC,IAAI4B,EAAEhC,EAAEo/B,SAASh/B,GAAGV,EAAEM,EAAE28Z,KAAKx9Z,EAAE6C,GAAGA,EAAE/B,EAAEzB,EAAEkB,KAAKM,EAAE28Z,KAAKl+Z,EAAEwC,KAAKe,GAAGQ,EAAEhE,EAAEkB,GAAGN,KAAKqg0C,KAAKz9zC,EAAEvD,GAAGF,EAAE0C,KAAKe,GAAG,CAAChC,EAAEzB,EAAEyC,KAAK,CAAC,OAAOvC,CAAC,EAAEU,EAAEL,UAAU6/uC,SAAS,SAASngvC,GAAG,IAAIwB,EAAEZ,KAAKwP,KAAK,IAAI3O,EAAEzB,EAAEwB,GAAG,OAAM,EAAG,IAAI,IAAIvB,EAAE,GAAGuB,GAAG,CAAC,IAAI,IAAIb,EAAE,EAAEA,EAAEa,EAAEo/B,SAAS3/B,OAAON,IAAI,CAAC,IAAIZ,EAAEyB,EAAEo/B,SAASjgC,GAAGiB,EAAEJ,EAAE28Z,KAAKv9Z,KAAKs/uC,OAAOngvC,GAAGA,EAAE,GAAG0B,EAAEzB,EAAE4B,GAAG,CAAC,GAAGJ,EAAE28Z,MAAMn6Z,EAAEhE,EAAE4B,GAAG,OAAM,EAAG3B,EAAEwC,KAAK1C,EAAE,CAAC,CAACyB,EAAEvB,EAAEuC,KAAK,CAAC,OAAM,CAAE,EAAE7B,EAAEL,UAAUmlJ,KAAK,SAASzlJ,GAAG,IAAIA,IAAIA,EAAEiB,OAAO,OAAOL,KAAK,GAAGZ,EAAEiB,OAAOL,KAAKog0C,YAAY,CAAC,IAAI,IAAIx/zC,EAAE,EAAEA,EAAExB,EAAEiB,OAAOO,IAAIZ,KAAK+6P,OAAO37P,EAAEwB,IAAI,OAAOZ,IAAI,CAAC,IAAIX,EAAEW,KAAKsg0C,OAAOlh0C,EAAE2C,QAAQ,EAAE3C,EAAEiB,OAAO,EAAE,GAAG,GAAGL,KAAKwP,KAAKwwB,SAAS3/B,OAAO,GAAGL,KAAKwP,KAAKwvB,SAAS3/B,EAAE2/B,OAAOh/B,KAAKug0C,WAAWvg0C,KAAKwP,KAAKnQ,OAAO,CAAC,GAAGW,KAAKwP,KAAKwvB,OAAO3/B,EAAE2/B,OAAO,CAAC,IAAIj/B,EAAEC,KAAKwP,KAAKxP,KAAKwP,KAAKnQ,EAAEA,EAAEU,CAAC,CAACC,KAAK0+L,QAAQr/L,EAAEW,KAAKwP,KAAKwvB,OAAO3/B,EAAE2/B,OAAO,GAAE,EAAG,MAAMh/B,KAAKwP,KAAKnQ,EAAE,OAAOW,IAAI,EAAED,EAAEL,UAAUq7P,OAAO,SAAS37P,GAAG,OAAOA,GAAGY,KAAK0+L,QAAQt/L,EAAEY,KAAKwP,KAAKwvB,OAAO,GAAGh/B,IAAI,EAAED,EAAEL,UAAUslB,MAAM,WAAW,OAAOhlB,KAAKwP,KAAK1M,EAAE,IAAI9C,IAAI,EAAED,EAAEL,UAAUmzB,OAAO,SAASzzB,EAAEwB,GAAG,IAAIxB,EAAE,OAAOY,KAAK,IAAI,IAAIX,EAAEU,EAAEiB,EAAE4B,EAAE5C,KAAKwP,KAAKlP,EAAEN,KAAKs/uC,OAAOlgvC,GAAG0B,EAAE,GAAG0B,EAAE,GAAGI,GAAG9B,EAAET,QAAQ,CAAC,GAAGuC,IAAIA,EAAE9B,EAAEc,MAAM7B,EAAEe,EAAEA,EAAET,OAAO,GAAGhB,EAAEmD,EAAEZ,MAAMZ,GAAE,GAAI4B,EAAE26Z,KAAK,CAAC,IAAI76Z,EAAEvD,EAAEC,EAAEwD,EAAEo9B,SAASp/B,GAAG,IAAI,IAAI8B,EAAE,OAAOE,EAAEo9B,SAAS/c,OAAOvgB,EAAE,GAAG5B,EAAEe,KAAKe,GAAG5C,KAAKwg0C,UAAU1/zC,GAAGd,IAAI,CAACgB,GAAG4B,EAAE26Z,OAAOn6Z,EAAER,EAAEtC,GAAGP,GAAGV,IAAIuD,EAAE7C,EAAEigC,SAAS3gC,GAAG2B,GAAE,GAAI4B,EAAE,MAAM9B,EAAEe,KAAKe,GAAGJ,EAAEX,KAAKxC,GAAGA,EAAE,EAAEU,EAAE6C,EAAEA,EAAEA,EAAEo9B,SAAS,GAAG,CAAC,OAAOhgC,IAAI,EAAED,EAAEL,UAAU4/uC,OAAO,SAASlgvC,GAAG,OAAOA,CAAC,EAAEW,EAAEL,UAAU+g0C,YAAY,SAASrh0C,EAAEwB,GAAG,OAAOxB,EAAEm7K,KAAK35K,EAAE25K,IAAI,EAAEx6K,EAAEL,UAAUgh0C,YAAY,SAASth0C,EAAEwB,GAAG,OAAOxB,EAAEo7K,KAAK55K,EAAE45K,IAAI,EAAEz6K,EAAEL,UAAU49C,OAAO,WAAW,OAAOt9C,KAAKwP,IAAI,EAAEzP,EAAEL,UAAU8/uC,SAAS,SAASpgvC,GAAG,OAAOY,KAAKwP,KAAKpQ,EAAEY,IAAI,EAAED,EAAEL,UAAU2g0C,KAAK,SAASjh0C,EAAEwB,GAAG,IAAI,IAAIvB,EAAE,GAAGD,GAAGA,EAAEm+Z,KAAK38Z,EAAEiB,KAAKtB,MAAMK,EAAExB,EAAE4gC,UAAU3gC,EAAEwC,KAAKtB,MAAMlB,EAAED,EAAE4gC,UAAU5gC,EAAEC,EAAEuC,MAAM,OAAOhB,CAAC,EAAEb,EAAEL,UAAU4g0C,OAAO,SAASlh0C,EAAEwB,EAAEvB,EAAEU,GAAG,IAAIZ,EAAEyD,EAAEvD,EAAEuB,EAAE,EAAEN,EAAEN,KAAKmg0C,YAAY,GAAGv9zC,GAAGtC,EAAE,OAAOU,EAAE7B,EAAE2D,EAAE1D,EAAE2C,MAAMnB,EAAEvB,EAAE,IAAIW,KAAKs/uC,QAAQngvC,EAAEY,IAAIA,EAAE8C,KAAKuK,KAAKvK,KAAKwnB,IAAIznB,GAAGC,KAAKwnB,IAAI/pB,IAAIA,EAAEuC,KAAKuK,KAAKxK,EAAEC,KAAK6yF,IAAIp1F,EAAEP,EAAE,MAAMZ,EAAE2D,EAAE,KAAKy6Z,MAAK,EAAGp+Z,EAAE6/B,OAAOj/B,EAAE,IAAIe,EAAE+B,KAAKuK,KAAKxK,EAAEtC,GAAGkC,EAAE1B,EAAE+B,KAAKuK,KAAKvK,KAAK4yF,KAAKn1F,IAAIqC,EAAEvD,EAAEwB,EAAEvB,EAAEmD,EAAExC,KAAKyg0C,aAAa,IAAI,IAAI/9zC,EAAE9B,EAAE8B,GAAGrD,EAAEqD,GAAGF,EAAE,CAAC,IAAIH,EAAEQ,KAAKgL,IAAInL,EAAEF,EAAE,EAAEnD,GAAGsD,EAAEvD,EAAEsD,EAAEL,EAAEvB,EAAEd,KAAK0g0C,aAAa,IAAI,IAAIt9zC,EAAEV,EAAEU,GAAGf,EAAEe,GAAGtC,EAAE,CAAC,IAAID,EAAEgC,KAAKgL,IAAIzK,EAAEtC,EAAE,EAAEuB,GAAGlD,EAAE6gC,SAASn+B,KAAK7B,KAAKsg0C,OAAOlh0C,EAAEgE,EAAEvC,EAAEd,EAAE,GAAG,CAAC,CAAC,OAAOiB,EAAE7B,EAAEa,KAAKs/uC,QAAQngvC,CAAC,EAAEY,EAAEL,UAAUih0C,eAAe,SAASvh0C,EAAEwB,EAAEvB,EAAEU,GAAG,KAAKA,EAAE8B,KAAKjB,IAAIA,EAAE28Z,MAAMx9Z,EAAEM,OAAO,IAAIhB,GAAG,CAAC,IAAI,IAAIF,EAAE,IAAI6B,EAAE,IAAI4B,OAAE,EAAOtC,EAAE,EAAEA,EAAEM,EAAEo/B,SAAS3/B,OAAOC,IAAI,CAAC,IAAIQ,EAAEF,EAAEo/B,SAAS1/B,GAAGkC,EAAEE,EAAE5B,GAAGuB,GAAGe,EAAEhE,EAAEyB,EAAEC,GAAG+B,KAAK8K,IAAI9M,EAAE45K,KAAKr3K,EAAEq3K,MAAM53K,KAAKgL,IAAIhN,EAAE05K,KAAKn3K,EAAEm3K,QAAQ13K,KAAK8K,IAAI9M,EAAE65K,KAAKt3K,EAAEs3K,MAAM73K,KAAKgL,IAAIhN,EAAE25K,KAAKp3K,EAAEo3K,OAAOh4K,GAAGH,EAAErB,GAAGA,EAAEqB,EAAElD,EAAEqD,EAAErD,EAAEqD,EAAErD,EAAEyD,EAAE9B,GAAGuB,IAAIrB,GAAGwB,EAAErD,IAAIA,EAAEqD,EAAEI,EAAE9B,EAAE,CAACF,EAAEgC,GAAGhC,EAAEo/B,SAAS,EAAE,CAAC,IAAI58B,EAAEvC,EAAE,OAAOD,CAAC,EAAEb,EAAEL,UAAUg/L,QAAQ,SAASt/L,EAAEwB,EAAEvB,GAAG,IAAIU,EAAEV,EAAED,EAAEY,KAAKs/uC,OAAOlgvC,GAAGD,EAAE,GAAG6B,EAAEhB,KAAK2g0C,eAAe5g0C,EAAEC,KAAKwP,KAAK5O,EAAEzB,GAAG,IAAI6B,EAAEg/B,SAASn+B,KAAKzC,GAAGkB,EAAEU,EAAEjB,GAAGa,GAAG,GAAGzB,EAAEyB,GAAGo/B,SAAS3/B,OAAOL,KAAKmg0C,aAAang0C,KAAK4g0C,OAAOzh0C,EAAEyB,GAAGA,IAAIZ,KAAK6g0C,oBAAoB9g0C,EAAEZ,EAAEyB,EAAE,EAAEb,EAAEL,UAAUkh0C,OAAO,SAASxh0C,EAAEwB,GAAG,IAAIvB,EAAED,EAAEwB,GAAGb,EAAEV,EAAE2gC,SAAS3/B,OAAOlB,EAAEa,KAAKog0C,YAAYpg0C,KAAK8g0C,iBAAiBzh0C,EAAEF,EAAEY,GAAG,IAAI6C,EAAE5C,KAAK+g0C,kBAAkB1h0C,EAAEF,EAAEY,GAAGO,EAAEwC,EAAEzD,EAAE2gC,SAAS/c,OAAOrgB,EAAEvD,EAAE2gC,SAAS3/B,OAAOuC,IAAItC,EAAE0+B,OAAO3/B,EAAE2/B,OAAO1+B,EAAEi9Z,KAAKl+Z,EAAEk+Z,KAAKv8Z,EAAE3B,EAAEW,KAAKs/uC,QAAQt+uC,EAAEV,EAAEN,KAAKs/uC,QAAQ1+uC,EAAExB,EAAEwB,EAAE,GAAGo/B,SAASn+B,KAAKvB,GAAGN,KAAKug0C,WAAWlh0C,EAAEiB,EAAE,EAAEP,EAAEL,UAAU6g0C,WAAW,SAASnh0C,EAAEwB,GAAGZ,KAAKwP,KAAK1M,EAAE,CAAC1D,EAAEwB,IAAIZ,KAAKwP,KAAKwvB,OAAO5/B,EAAE4/B,OAAO,EAAEh/B,KAAKwP,KAAK+tZ,MAAK,EAAGv8Z,EAAEhB,KAAKwP,KAAKxP,KAAKs/uC,OAAO,EAAEv/uC,EAAEL,UAAUqh0C,kBAAkB,SAAS3h0C,EAAEwB,EAAEvB,GAAG,IAAI,IAAIU,EAAEZ,EAAE6B,EAAEV,EAAEQ,EAAE0B,EAAEH,EAAEe,EAAE,IAAIvC,EAAE,IAAIiC,EAAElC,EAAEkC,GAAGzD,EAAEuB,EAAEkC,IAAI,CAAC,IAAIH,EAAEC,EAAExD,EAAE,EAAE0D,EAAE9C,KAAKs/uC,QAAQr7uC,EAAErB,EAAExD,EAAE0D,EAAEzD,EAAEW,KAAKs/uC,QAAQr8uC,GAAG9D,EAAEwD,EAAE3B,EAAEiD,OAAI,OAAS,OAAS,OAAS,EAAO3D,EAAEuC,KAAK8K,IAAIxO,EAAEo7K,KAAKv5K,EAAEu5K,MAAMz5K,EAAE+B,KAAK8K,IAAIxO,EAAEq7K,KAAKx5K,EAAEw5K,MAAMh4K,EAAEK,KAAKgL,IAAI1O,EAAEs7K,KAAKz5K,EAAEy5K,MAAMp4K,EAAEQ,KAAKgL,IAAI1O,EAAEu7K,KAAK15K,EAAE05K,MAAM73K,KAAK8K,IAAI,EAAEnL,EAAElC,GAAGuC,KAAK8K,IAAI,EAAEtL,EAAEvB,IAAI+E,EAAEnD,EAAEC,GAAGD,EAAEuB,GAAGhB,EAAEG,GAAGA,EAAEH,EAAElD,EAAE+C,EAAEjC,EAAEgF,EAAEhF,EAAEgF,EAAEhF,GAAGoC,IAAIG,GAAGyC,EAAEhF,IAAIA,EAAEgF,EAAE9F,EAAE+C,EAAE,CAAC,OAAO/C,GAAGV,EAAEuB,CAAC,EAAEb,EAAEL,UAAUoh0C,iBAAiB,SAAS1h0C,EAAEwB,EAAEvB,GAAG,IAAIU,EAAEX,EAAEm+Z,KAAKv9Z,KAAKyg0C,YAAY3/zC,EAAE3B,EAAEC,EAAEm+Z,KAAKv9Z,KAAK0g0C,YAAYl+zC,EAAExC,KAAKgh0C,eAAe5h0C,EAAEwB,EAAEvB,EAAEU,GAAGC,KAAKgh0C,eAAe5h0C,EAAEwB,EAAEvB,EAAEF,IAAIC,EAAE4gC,SAASuM,KAAKxsC,EAAE,EAAEA,EAAEL,UAAUsh0C,eAAe,SAAS5h0C,EAAEwB,EAAEvB,EAAEU,GAAGX,EAAE4gC,SAASuM,KAAKxsC,GAAG,IAAI,IAAIZ,EAAEa,KAAKs/uC,OAAOt+uC,EAAE4B,EAAExD,EAAE,EAAEwB,EAAEzB,GAAG2B,EAAE8B,EAAExD,EAAEC,EAAEuB,EAAEvB,EAAEF,GAAGqD,EAAEH,EAAErB,GAAGqB,EAAEvB,GAAG4B,EAAE9B,EAAE8B,EAAErD,EAAEuB,EAAE8B,IAAI,CAAC,IAAIU,EAAEhE,EAAE4gC,SAASt9B,GAAGpC,EAAEU,EAAE5B,EAAEm+Z,KAAKp+Z,EAAEiE,GAAGA,GAAGZ,GAAGH,EAAErB,EAAE,CAAC,IAAI,IAAIH,EAAExB,EAAEuB,EAAE,EAAEC,GAAGD,EAAEC,IAAI,CAAC,IAAIiC,EAAE1D,EAAE4gC,SAASn/B,GAAGP,EAAEQ,EAAE1B,EAAEm+Z,KAAKp+Z,EAAE2D,GAAGA,GAAGN,GAAGH,EAAEvB,EAAE,CAAC,OAAO0B,CAAC,EAAEzC,EAAEL,UAAUmh0C,oBAAoB,SAASzh0C,EAAEwB,EAAEvB,GAAG,IAAI,IAAIU,EAAEV,EAAEU,GAAG,EAAEA,IAAIO,EAAEM,EAAEb,GAAGX,EAAE,EAAEW,EAAEL,UAAU8g0C,UAAU,SAASph0C,GAAG,IAAI,IAAIwB,EAAExB,EAAEiB,OAAO,EAAEhB,OAAE,EAAOuB,GAAG,EAAEA,IAAI,IAAIxB,EAAEwB,GAAGo/B,SAAS3/B,OAAOO,EAAE,GAAGvB,EAAED,EAAEwB,EAAE,GAAGo/B,UAAU/c,OAAO5jB,EAAEmB,QAAQpB,EAAEwB,IAAI,GAAGZ,KAAKglB,QAAQhkB,EAAE5B,EAAEwB,GAAGZ,KAAKs/uC,OAAO,EAAEv/uC,CAAC,CAAzuMa,yHCoBpE,SAASqg0C,EAAahsY,IACnC,EAAA0B,EAAA,GAAa,EAAGv27B,WAChB,IAAIi1C,GAAO,EAAAwj5B,EAAA,GAAO5D,GAGlB,OAFA5/4B,EAAK5Q,QAAQ,GACb4Q,EAAK00e,SAAS,EAAG,EAAG,EAAG,GAChB10e,CACT,2BCNe,SAASgkhC,EAAW3hI,EAAeC,IAChD,EAAAhB,EAAA,GAAa,EAAGv27B,WAChB,IAAIw37B,GAAW,EAAAiB,EAAA,GAAOnB,GAClBG,GAAY,EAAAgB,EAAA,GAAOlB,GACvB,OAAOC,EAAS3va,gBAAkB4va,EAAU5va,aAC9C,gBCHe,SAASiyO,EAAS+6L,EAAWisY,IAC1C,EAAAvqY,EAAA,GAAa,EAAGv27B,WAChB,IAAIi1C,GAAO,EAAAwj5B,EAAA,GAAO5D,GACdvra,GAAQ,EAAAqta,EAAA,GAAUmqY,GAClBz3yB,EAAOp0e,EAAK4ye,cACZ0B,EAAMt0e,EAAK7Q,UACX28xC,EAAuB,IAAI31yC,KAAK,GACpC21yC,EAAqBlnkB,YAAYxwO,EAAMC,EAAO,IAC9Cy3yB,EAAqBp3yB,SAAS,EAAG,EAAG,EAAG,GACvC,IAAImxiB,ECZS,SAAwBjmI,IACrC,EAAA0B,EAAA,GAAa,EAAGv27B,WAChB,IAAIi1C,GAAO,EAAAwj5B,EAAA,GAAO5D,GACdxra,EAAOp0e,EAAK4ye,cACZ8wL,EAAa1jqB,EAAK6ye,WAClBk5yB,EAAiB,IAAI51yC,KAAK,GAG9B,OAFA41yC,EAAennkB,YAAYxwO,EAAMsvL,EAAa,EAAG,GACjDqonB,EAAer3yB,SAAS,EAAG,EAAG,EAAG,GAC1Bq3yB,EAAe58xC,SACxB,CDGoB68xC,CAAeF,GAIjC,OADA9rxC,EAAK6ktB,SAASxwO,EAAO7mhB,KAAKgL,IAAI87gB,EAAKuxiB,IAC5B7lhC,CACT,CEfe,SAASisxC,EAAQrsY,EAAWssY,IACzC,EAAA5qY,EAAA,GAAa,EAAGv27B,WAChB,IAAIi1C,GAAO,EAAAwj5B,EAAA,GAAO5D,GACdxra,GAAO,EAAAsta,EAAA,GAAUwqY,GAGrB,OAAIj1xC,MAAM+I,EAAK5N,WACN,IAAIjc,KAAKowuB,MAElBvmtB,EAAK4ktB,YAAYxwO,GACVp0e,EACT,CCZe,SAASiqvB,EAAY21J,IAClC,EAAA0B,EAAA,GAAa,EAAGv27B,WAChB,IAAIoh0C,GAAY,EAAA3oY,EAAA,GAAO5D,GACnB5/4B,EAAO,IAAI7pB,KAAK,GAGpB,OAFA6pB,EAAK4ktB,YAAYunkB,EAAUv5yB,cAAe,EAAG,GAC7C5ye,EAAK00e,SAAS,EAAG,EAAG,EAAG,GAChB10e,CACT,0BCFe,SAASikhC,EAAY5hI,EAAeC,IACjD,EAAAhB,EAAA,GAAa,EAAGv27B,WAChB,IAAIw37B,GAAW,EAAAiB,EAAA,GAAOnB,GAClBG,GAAY,EAAAgB,EAAA,GAAOlB,GACvB,OAAOC,EAAS3va,gBAAkB4va,EAAU5va,eAAiB2va,EAAS1va,aAAe2va,EAAU3va,UACjG,uICCe,SAASu5yB,EAAUxsY,EAAW9r6B,GAC3C,IAAIikL,EAAMymB,EAAO66B,EAAO4nsB,EAAuBb,EAAiBC,EAAuBC,EAAuBC,GAC9G,EAAAe,EAAA,GAAa,EAAGv27B,WAChB,IAAIuxQ,GAAiB,SACjBoirB,GAAe,EAAAgD,EAAA,GAA+0B,QAAp0B3pvB,EAA8hB,QAAthBymB,EAAkd,QAAzc66B,EAA6G,QAApG4nsB,EAAwBnt6B,aAAyC,EAASA,EAAQ4q6B,oBAAoD,IAA1BuC,EAAmCA,EAAwBnt6B,SAAyF,QAAtCss6B,EAAkBts6B,EAAQ0jb,cAAwC,IAApB4of,GAA4F,QAArDC,EAAwBD,EAAgBts6B,eAA+C,IAA1Bus6B,OAA5J,EAAwMA,EAAsB3B,oBAAoC,IAAVrlsB,EAAmBA,EAAQijB,EAAeoirB,oBAAoC,IAAVlguB,EAAmBA,EAA4D,QAAnD8huB,EAAwBhkrB,EAAek7L,cAA8C,IAA1B8of,GAAyG,QAA5DC,EAAyBD,EAAsBxs6B,eAAgD,IAA3Bys6B,OAA9E,EAA2HA,EAAuB7B,oBAAmC,IAAT3mvB,EAAkBA,EAAO,GAGn4B,KAAM2mvB,GAAgB,GAAKA,GAAgB,GACzC,MAAM,IAAIpr6B,WAAW,oDAEvB,IAAI0sB,GAAO,EAAAwj5B,EAAA,GAAO5D,GACdtra,EAAMt0e,EAAK9Q,SACXgkgB,EAAuC,GAA/B5e,EAAMoqa,GAAgB,EAAI,IAAUpqa,EAAMoqa,GAGtD,OAFA1+4B,EAAK5Q,QAAQ4Q,EAAK7Q,UAAY+jgB,GAC9Blzf,EAAK00e,SAAS,GAAI,GAAI,GAAI,KACnB10e,CACT,CCzBe,SAASqsxC,EAAazsY,GAEnC,OADA,EAAA0B,EAAA,GAAa,EAAGv27B,WACTqh0C,EAAUxsY,EAAW,CAC1BlB,aAAc,GAElB,gBCFe,SAASpm7B,EAAIg0zC,GAE1B,IAAIC,EAYAp+yC,EAVJ,IAHA,EAAAmz6B,EAAA,GAAa,EAAGv27B,WAGZuh0C,GAAsD,mBAA5BA,EAAgBz8yC,QAC5C08yC,EAAaD,MAGR,IAAiC,YAA7B,OAAQA,IAAqD,OAApBA,EAIlD,OAAO,IAAIn2yC,KAAKowuB,KAHhBgmkB,EAAani0C,MAAMC,UAAUqC,MAAMnC,KAAK+h0C,EAI1C,CAQA,OANAC,EAAW18yC,SAAQ,SAAU+v6B,GAC3B,IAAIyE,GAAc,EAAAb,EAAA,GAAO5D,SACVln5B,IAAXvqB,GAAwBA,EAASk26B,GAAept5B,MAAMnH,OAAOu05B,OAC/Dl26B,EAASk26B,EAEb,IACOl26B,GAAU,IAAIgI,KAAKowuB,IAC5B,CCtBe,SAAS/tvB,EAAI8zzC,GAE1B,IAAIC,EAWAp+yC,EATJ,IAHA,EAAAmz6B,EAAA,GAAa,EAAGv27B,WAGZuh0C,GAAsD,mBAA5BA,EAAgBz8yC,QAC5C08yC,EAAaD,MAER,IAAiC,YAA7B,OAAQA,IAAqD,OAApBA,EAIlD,OAAO,IAAIn2yC,KAAKowuB,KAHhBgmkB,EAAani0C,MAAMC,UAAUqC,MAAMnC,KAAK+h0C,EAI1C,CAQA,OANAC,EAAW18yC,SAAQ,SAAU+v6B,GAC3B,IAAIyE,GAAc,EAAAb,EAAA,GAAO5D,SACVln5B,IAAXvqB,GAAwBA,EAASk26B,GAAept5B,MAAMot5B,EAAYl15B,cACpEhhB,EAASk26B,EAEb,IACOl26B,GAAU,IAAIgI,KAAKowuB,IAC5B,eC1CIu5L,EAAuB,OAqBZ,SAAS0sY,EAAW5sY,IACjC,EAAA0B,EAAA,GAAa,EAAGv27B,WAChB,IAAIi1C,GAAO,EAAAwj5B,EAAA,GAAO5D,GACd1sZ,GAAO,EAAA+6Z,EAAA,GAAeju5B,GAAM5N,WAAY,EAAA875B,EAAA,GAAmBlu5B,GAAM5N,UAKrE,OAAO5kC,KAAKogD,MAAMslf,EAAO4sZ,GAAwB,CACnD,2BC/BI,EAAuB,OC4BZ,SAAS2sY,EAAgBzsxC,EAAMlsB,GAE5C,OADA,EAAAwt6B,EAAA,GAAa,EAAGv27B,WDQH,SAAmCs37B,EAAeC,EAAgBxu6B,IAC/E,EAAAwt6B,EAAA,GAAa,EAAGv27B,WAChB,IAAI2h0C,GAAkB,EAAA3lY,EAAA,GAAY1E,EAAevu6B,GAC7C64yC,GAAmB,EAAA5lY,EAAA,GAAYzE,EAAgBxu6B,GAC/Cgv6B,EAAgB4pY,EAAgBt6xC,WAAY,EAAAiv5B,EAAA,GAAgCqrY,GAC5E3pY,EAAiB4pY,EAAiBv6xC,WAAY,EAAAiv5B,EAAA,GAAgCsrY,GAKlF,OAAOn/zC,KAAKogD,OAAOk14B,EAAgBC,GAAkB,EACvD,CClBS6pY,CCbM,SAAwBhtY,IACrC,EAAA0B,EAAA,GAAa,EAAGv27B,WAChB,IAAIi1C,GAAO,EAAAwj5B,EAAA,GAAO5D,GACdvra,EAAQr0e,EAAK6ye,WAGjB,OAFA7ye,EAAK4ktB,YAAY5ktB,EAAK4ye,cAAeyB,EAAQ,EAAG,GAChDr0e,EAAK00e,SAAS,EAAG,EAAG,EAAG,GAChB10e,CACT,CDMmC+rxC,CAAe/rxC,GAAO4rxC,EAAa5rxC,GAAOlsB,GAAW,CACxF,gBEZI6M,EAAW,WAQX,OAPAA,EAAW12B,OAAOa,QAAU,SAAkBf,GAC1C,IAAK,IAAI0B,EAAGF,EAAI,EAAGvB,EAAIe,UAAUC,OAAQO,EAAIvB,EAAGuB,IAE5C,IAAK,IAAIkC,KADThC,EAAIV,UAAUQ,GACOtB,OAAOI,UAAUC,eAAeC,KAAKkB,EAAGgC,KAAI1D,EAAE0D,GAAKhC,EAAEgC,IAE9E,OAAO1D,CACX,EACO42B,EAASz1B,MAAMP,KAAMI,UAChC,EAcA,SAAS6qD,EAAchyC,EAAI8E,EAAMmtC,GAC7B,GAAIA,GAA6B,IAArB9qD,UAAUC,OAAc,IAAK,IAA4BiV,EAAxB1U,EAAI,EAAG4B,EAAIub,EAAK1d,OAAYO,EAAI4B,EAAG5B,KACxE0U,GAAQ1U,KAAKmd,IACRzI,IAAIA,EAAK7V,MAAMC,UAAUqC,MAAMnC,KAAKme,EAAM,EAAGnd,IAClD0U,EAAG1U,GAAKmd,EAAKnd,IAGrB,OAAOqY,EAAGjX,OAAOsT,GAAM7V,MAAMC,UAAUqC,MAAMnC,KAAKme,GACtD,CAQA,SAASmkzC,EAAoBj1xC,GACzB,MAAsB,aAAfA,EAAMvlC,IACjB,CAGA,SAASy6zC,EAAiBl1xC,GACtB,MAAsB,UAAfA,EAAMvlC,IACjB,CAGA,SAAS06zC,EAAkBn1xC,GACvB,MAAsB,WAAfA,EAAMvlC,IACjB,CAlB2B,mBAApBo5Y,iBAAiCA,gBAuBxC,IAAIuh7B,EAAoB,CACpBlyqC,KAAM,MACNmyqC,gBAAiB,sBACjBC,gBAAiB,sBACjBC,QAAS,cACTC,aAAc,mBACd/q9B,OAAQ,aACRC,QAAS,cACT+q9B,cAAe,oBACfC,YAAa,kBACbC,gBAAiB,sBACjBC,cAAe,oBACfC,kBAAmB,wBACnBC,SAAU,eACVC,eAAgB,qBAChBC,cAAe,oBACfC,cAAe,oBACfz6yB,OAAQ,aACRiB,MAAO,YACPnnY,MAAO,YACP4grC,MAAO,YACPC,MAAO,YACPr8wC,KAAM,WACNs8wC,SAAU,eACVC,UAAW,gBACXj3B,IAAK,UACLk3B,WAAY,iBACZC,oBAAqB,0BACrBC,gBAAiB,sBACjBC,SAAU,eACV1gsC,IAAK,UACL2gsC,WAAY,iBACZp79B,KAAM,WACNohL,IAAK,UACLi6yB,UAAW,gBACXC,YAAa,kBACbC,aAAc,mBACdC,aAAc,mBACdC,WAAY,iBACZC,gBAAiB,sBACjBC,cAAe,oBACfC,iBAAkB,wBA6ClBC,EAA0B9k0C,OAAOgmC,OAAO,CACxC9lC,UAAW,KACX6k0C,cAzCJ,SAAuB36yB,EAAOvggB,GAC1B,OAAO,OAAOuggB,EAAO,SAAUvggB,EACnC,EAwCIm7yC,UAnCJ,SAAmB36yB,EAAKxggB,GACpB,OAAO,OAAOwggB,EAAK,IAAKxggB,EAC5B,EAkCIo7yC,mBA7BJ,SAA4B76yB,EAAOvggB,GAC/B,OAAO,OAAOuggB,EAAO,OAAQvggB,EACjC,EA4BIq7yC,iBAvBJ,SAA0BC,GACtB,MAAO,GAAGzi0C,OAAOyi0C,EACrB,EAsBIC,kBAjBJ,SAA2BrrkB,EAASlwuB,GAChC,OAAO,OAAOkwuB,EAAS,SAAUlwuB,EACrC,EAgBIw7yC,kBAXJ,SAA2Bl7yB,EAAMtggB,GAC7B,OAAO,OAAOsggB,EAAM,OAAQtggB,EAChC,IA6DIykE,EAAsBtuF,OAAOgmC,OAAO,CACpC9lC,UAAW,KACXol0C,SAhDW,SAAUj7yB,EAAKk7yB,EAAiB17yC,GAC3C,OAAO,OAAOwggB,EAAK,iBAAkBxggB,EACzC,EA+CI27yC,mBA1CqB,WACrB,MAAO,SACX,EAyCIC,UApCY,WACZ,MAAO,kBACX,EAmCIC,cA9BgB,WAChB,MAAO,sBACX,EA6BIC,gBAjBkB,SAAU5l0C,GAC5B,MAAO,WAAW2C,OAAO3C,EAC7B,EAgBI6l0C,aAzBe,SAAUv7yB,EAAKxggB,GAC9B,OAAO,OAAOwggB,EAAK,OAAQxggB,EAC/B,EAwBIg8yC,kBAZoB,WACpB,MAAO,QACX,IAsEA,IAAIC,GAAmB,IAAA1mkC,oBAAc3wN,GAKrC,SAASs3xC,EAAkBp4xC,GACvB,IAAItW,EAzDAkuO,EACAgoM,EAKAkyf,EA4DA3tjB,EARArlR,EAAe9+E,EAAM8+E,aACrBu5sC,GA3DAzgkC,EAAaw9jC,EACbx13B,EAAS,IAKTkyf,EAAQ,IAAIvz6B,KACT,CACH+5yC,cATgB,UAUhB1gkC,WAAYA,EACZu/jC,WAAYA,EACZx2uC,OAAQA,EACRi/W,OAAQA,EACR243B,oBAXsB,CAAC,EAYvBzlG,UAXY,CAAC,EAYb0lG,eAXiB,EAYjB5vpC,OAXS,CAAC,EAYVkpxB,MAAOA,EACPr37B,KAAM,YA0CN8lD,EArCR,SAA0BvgB,GACtB,IAAIy4xC,EAAWz4xC,EAAMy4xC,SAAUC,EAAS14xC,EAAM04xC,OAAQC,EAAY34xC,EAAM24xC,UAAWC,EAAU54xC,EAAM44xC,QAC/FC,EAAW74xC,EAAM64xC,SAAUjtY,EAAS5r5B,EAAM4r5B,OAa9C,OAZI+sY,EACAE,EAAW7E,EAAa2E,GAEnBF,IACLI,EAAW,IAAIt6yC,KAAKk6yC,EAAU,EAAG,IAEjCG,EACAhtY,GAAS,EAAAG,EAAA,GAAW6sY,GAEfF,IACL9sY,EAAS,IAAIrt6B,KAAKm6yC,EAAQ,GAAI,KAE3B,CACHG,SAAUA,GAAW,EAAAziY,EAAA,GAAWyiY,QAAY/3xC,EAC5C8q5B,OAAQA,GAAS,EAAAwK,EAAA,GAAWxK,QAAU9q5B,EAE9C,CAkBag4xC,CAAiBh6sC,GAAe+5sC,EAAWt4wC,EAAGs4wC,SAAUjtY,EAASrr4B,EAAGqr4B,OACzE0sY,EAAsD,QAArC5uyC,EAAKo1F,EAAaw5sC,qBAAkC,IAAP5uyC,EAAgBA,EAAK2uyC,EAAqBC,cACtF,YAAlBA,GAAiCO,GAAajtY,IAE9C0sY,EAAgB,YAGhBnD,EAAkBr2sC,IAClBm2sC,EAAoBn2sC,IACpBo2sC,EAAiBp2sC,MACjBqlR,EAAWrlR,EAAaqlR,UAE5B,IAAIjwY,EAAQ60B,EAASA,EAASA,EAAS,CAAC,EAAGsvyC,GAAuBv5sC,GAAe,CAAEw5sC,cAAeA,EAAe1gkC,WAAY7uO,EAASA,EAAS,CAAC,EAAGsvyC,EAAqBzgkC,YAAa94I,EAAa84I,YAAa3W,WAAYl4N,EAAS,CAAC,EAAG+1F,EAAamiI,YAAak2kC,WAAYpuyC,EAASA,EAAS,CAAC,EAAGsvyC,EAAqBlB,YAAar4sC,EAAaq4sC,YAAa0B,SAAUA,EAAUl4uC,OAAQ53D,EAASA,EAAS,CAAC,EAAGsvyC,EAAqB13uC,QAASm+B,EAAan+B,QAASlmF,KAAMqkH,EAAarkH,MAAQ49zC,EAAqB59zC,KAAMq4tC,UAAW/psC,EAASA,EAAS,CAAC,EAAGsvyC,EAAqBvlG,WAAYh0mC,EAAag0mC,WAAYylG,oBAAqBxvyC,EAASA,EAAS,CAAC,EAAGsvyC,EAAqBE,qBAAsBz5sC,EAAay5sC,qBAAsBp07B,SAAUA,EAAUv7N,OAAQ7/I,EAASA,EAAS,CAAC,EAAGsvyC,EAAqBzvpC,QAAS9pD,EAAa8pD,QAASgjxB,OAAQA,IAC9zB,OAAQ,IAAAj5rB,KAAIwlkC,EAAiBhjyC,SAAU,CAAEjhC,MAAOA,EAAO6+B,SAAUiN,EAAMjN,UAC3E,CAOA,SAASgmyC,KACL,IAAI74xC,GAAU,IAAA2xN,YAAWsmkC,GACzB,IAAKj4xC,EACD,MAAM,IAAI3lB,MAAM,yDAEpB,OAAO2lB,CACX,CAGA,SAAS84xC,GAAah5xC,GAClB,IAAItW,EAAKqvyC,KAAgBn53B,EAASl2a,EAAGk2a,OAAQhoM,EAAaluO,EAAGkuO,WAAYhvF,EAASl/I,EAAGk/I,OAAQwupC,EAAgB1tyC,EAAGytyC,WAAWC,cAC3H,OAAQ,IAAAzkkC,KAAI,MAAO,CAAEhwK,UAAWi1K,EAAWg+jC,cAAexuzC,MAAOwhK,EAAOgtpC,cAAe,YAAa,SAAUrgzB,KAAM,eAAgBj3f,GAAI0hB,EAAM1hB,GAAIyU,SAAUqkyC,EAAcp3xC,EAAMi5xC,aAAc,CAAEr53B,OAAQA,KAC5M,CAKA,SAASs53B,GAAal5xC,GAClB,OAAQ,IAAA2yN,KAAI,MAAO5pO,EAAS,CAAE+I,MAAO,MAAOC,OAAQ,MAAOy7kC,QAAS,cAAe,cAAe,gBAAkBxtkC,EAAO,CAAEjN,UAAU,IAAA4/N,KAAI,OAAQ,CAAEj9P,EAAG,0hBAA2hBy6H,KAAM,eAAgBgpsC,SAAU,cACvtB,CAMA,SAASC,GAASp5xC,GACd,IAAItW,EAAI62B,EACJ03B,EAAWj4C,EAAMi4C,SAAU/jF,EAAQ8rC,EAAM9rC,MAAO6+B,EAAWiN,EAAMjN,SAAU23U,EAAU1qU,EAAM0qU,QAAS/nR,EAAY3iD,EAAM2iD,UAAWv7E,EAAQ44B,EAAM54B,MAC/IiyzC,EAAYN,KACZO,EAAoH,QAA3F/4wC,EAAqC,QAA/B72B,EAAK2vyC,EAAUp4kC,kBAA+B,IAAPv3N,OAAgB,EAASA,EAAGwvyC,oBAAiC,IAAP34wC,EAAgBA,EAAK24wC,GACrJ,OAAQ,IAAApm7B,MAAK,MAAO,CAAEnwT,UAAWA,EAAWv7E,MAAOA,EAAO2rB,SAAU,EAAC,IAAA4/N,KAAI,OAAQ,CAAEhwK,UAAW02uC,EAAUzhkC,WAAW29jC,QAASxiyC,SAAUiN,EAAM,iBAAkB,IAAA2yN,KAAI,SAAU,CAAEl1P,KAAMuiC,EAAMviC,KAAM,aAAcuiC,EAAM,cAAe2iD,UAAW02uC,EAAUzhkC,WAAWk+jC,SAAU1uzC,MAAOiyzC,EAAUzwpC,OAAOktpC,SAAU5h0C,MAAOA,EAAO+jF,SAAUA,EAAUllD,SAAUA,KAAa,IAAA+/W,MAAK,MAAO,CAAEnwT,UAAW02uC,EAAUzhkC,WAAWg+jC,cAAexuzC,MAAOiyzC,EAAUzwpC,OAAOgtpC,cAAe,cAAe,OAAQ7iyC,SAAU,CAAC23U,GAAS,IAAA/3G,KAAI2mkC,EAAuB,CAAE32uC,UAAW02uC,EAAUzhkC,WAAWq+jC,cAAe7uzC,MAAOiyzC,EAAUzwpC,OAAOqtpC,qBAC/lB,CAGA,SAASsD,GAAev5xC,GACpB,IAAItW,EACA62B,EAAKw4wC,KAAgBF,EAAWt4wC,EAAGs4wC,SAAUjtY,EAASrr4B,EAAGqr4B,OAAQhjxB,EAASroH,EAAGqoH,OAAQg3R,EAASr/Y,EAAGq/Y,OAAQ033B,EAAqB/2wC,EAAG42wC,WAAWG,mBAAoB1/jC,EAAar3M,EAAGq3M,WAAY3W,EAAa1gM,EAAG0gM,WAAY42kC,EAAqBt3wC,EAAGogC,OAAOk3uC,mBAE3P,IAAKgB,EACD,OAAO,IAAAlmkC,KAAI,EAAAD,SAAU,CAAC,GAC1B,IAAKk5rB,EACD,OAAO,IAAAj5rB,KAAI,EAAAD,SAAU,CAAC,GAC1B,IAAI8mkC,EAAiB,GACrB,GAAIptQ,EAAWysQ,EAAUjtY,GAGrB,IADA,IAAIxj5B,EAAO4rxC,EAAa6E,GACfp8yB,EAAQo8yB,EAAS59yB,WAAYwB,GAASmva,EAAO3wa,WAAYwB,IAC9D+8yB,EAAe5k0C,KAAKq4vB,EAAS7ktB,EAAMq0e,SAMvC,IADIr0e,EAAO4rxC,EAAa,IAAIz1yC,MACnBk+f,EAAQ,EAAGA,GAAS,GAAIA,IAC7B+8yB,EAAe5k0C,KAAKq4vB,EAAS7ktB,EAAMq0e,IAG3C,IAKIg9yB,EAA2G,QAAtF/vyC,EAAKu3N,aAA+C,EAASA,EAAWm4kC,gBAA6B,IAAP1vyC,EAAgBA,EAAK0vyC,GAC5I,OAAQ,IAAAzmkC,KAAI8mkC,EAAmB,CAAEh8zC,KAAM,SAAU,aAAco6zC,IAAsBl1uC,UAAWi1K,EAAWm+jC,eAAgB3uzC,MAAOwhK,EAAOmtpC,eAAgB99uC,SANtI,SAAU/lF,GACzB,IAAIwn0C,EAAgBxhyC,OAAOhmC,EAAE2Q,OAAO3O,OAChCyl0C,EAAW1skB,EAAS+mkB,EAAah0xC,EAAMi5xC,cAAeS,GAC1D15xC,EAAMi4C,SAAS0hvC,EACnB,EAEiLzl0C,MAAO8rC,EAAMi5xC,aAAah+yB,WAAYvwK,QAAS4s9B,EAAmBt3xC,EAAMi5xC,aAAc,CAAEr53B,OAAQA,IAAW7sa,SAAUymyC,EAAep3yC,KAAI,SAAUjsB,GAAK,OAAQ,IAAAw8P,KAAI,SAAU,CAAEz+P,MAAOiC,EAAE8khB,WAAYlof,SAAUukyC,EAAmBnh0C,EAAG,CAAEypc,OAAQA,KAAazpc,EAAE8khB,WAAc,KAChc,CAMA,SAAS2+yB,GAAc55xC,GACnB,IAAItW,EACAuvyC,EAAej5xC,EAAMi5xC,aACrB14wC,EAAKw4wC,KAAgBF,EAAWt4wC,EAAGs4wC,SAAUjtY,EAASrr4B,EAAGqr4B,OAAQhsf,EAASr/Y,EAAGq/Y,OAAQh3R,EAASroH,EAAGqoH,OAAQgvF,EAAar3M,EAAGq3M,WAAY3W,EAAa1gM,EAAG0gM,WAAYy2kC,EAAoBn3wC,EAAG42wC,WAAWO,kBAAmBQ,EAAoB33wC,EAAGogC,OAAOu3uC,kBACpP2B,EAAQ,GAEZ,IAAKhB,EACD,OAAO,IAAAlmkC,KAAI,EAAAD,SAAU,CAAC,GAC1B,IAAKk5rB,EACD,OAAO,IAAAj5rB,KAAI,EAAAD,SAAU,CAAC,GAG1B,IAFA,IAAI+lkC,EAAWI,EAAS79yB,cACpB09yB,EAAS9sY,EAAO5wa,cACXwB,EAAOi8yB,EAAUj8yB,GAAQk8yB,EAAQl8yB,IACtCq9yB,EAAMjl0C,KAAKy/zC,EAAQhiiB,EAAY,IAAI9zwB,MAASi+f,IAEhD,IAIIi9yB,EAA2G,QAAtF/vyC,EAAKu3N,aAA+C,EAASA,EAAWm4kC,gBAA6B,IAAP1vyC,EAAgBA,EAAK0vyC,GAC5I,OAAQ,IAAAzmkC,KAAI8mkC,EAAmB,CAAEh8zC,KAAM,QAAS,aAAcy6zC,IAAqBv1uC,UAAWi1K,EAAWo+jC,cAAe5uzC,MAAOwhK,EAAOotpC,cAAe/9uC,SALlI,SAAU/lF,GACzB,IAAIyn0C,EAAWtF,EAAQL,EAAaiF,GAAe/gyC,OAAOhmC,EAAE2Q,OAAO3O,QACnE8rC,EAAMi4C,SAAS0hvC,EACnB,EAE6Kzl0C,MAAO+k0C,EAAaj+yB,cAAetwK,QAASgt9B,EAAkBuB,EAAc,CAAEr53B,OAAQA,IAAW7sa,SAAU8myC,EAAMz3yC,KAAI,SAAUo6f,GAAQ,OAAQ,IAAA7pR,KAAI,SAAU,CAAEz+P,MAAOsohB,EAAKxB,cAAejof,SAAU2kyC,EAAkBl7yB,EAAM,CAAE58E,OAAQA,KAAa48E,EAAKxB,cAAiB,KAC1b,CAkIA,IAAI8+yB,IAAoB,IAAArokC,oBAAc3wN,GAEtC,SAASi5xC,GAAmB/5xC,GACxB,IAAIq5xC,EAAYN,KACZrvyC,EAnGR,WACI,IAAIwW,EAAU64xC,KACViB,EAnBR,SAAyB95xC,GACrB,IAAIu8e,EAAQv8e,EAAQu8e,MAAOw9yB,EAAe/5xC,EAAQ+5xC,aAAcnoY,EAAQ5x5B,EAAQ4x5B,MAC5EkoY,EAAev9yB,GAASw9yB,GAAgBnoY,GAAS,IAAIvz6B,KACrDqt6B,EAAS1r5B,EAAQ0r5B,OAAQitY,EAAW34xC,EAAQ24xC,SAAUnvyC,EAAKwW,EAAQs4xC,eAAgBA,OAAwB,IAAP9uyC,EAAgB,EAAIA,EAE5H,GAAIki6B,IAAU,EAAAR,EAAA,GAA2BQ,EAAQouY,GAAgB,EAAG,CAChE,IAAI9kxC,GAAU,GAAKsjxC,EAAiB,GACpCwB,GAAe,EAAA7vY,EAAA,GAAUyB,EAAQ124B,EACrC,CAKA,OAHI2jxC,IAAY,EAAAztY,EAAA,GAA2B4uY,EAAcnB,GAAY,IACjEmB,EAAenB,GAEZ7E,EAAagG,EACxB,CAKuBE,CAAgBh6xC,GAC/BxW,EA3BR,SAA4BwmG,EAAciqsC,GACtC,IAAIzwyC,GAAK,IAAAmhO,UAAS36H,GAAekqsC,EAAoB1wyC,EAAG,GAExD,MAAO,MADyBoX,IAApBq5xC,EAAgCC,EAAoBD,EADOzwyC,EAAG,GAG9E,CAuBa2wyC,CAAmBL,EAAc95xC,EAAQu8e,OAAQA,EAAQ/yf,EAAG,GAAIujuB,EAAWvjuB,EAAG,GASvF,MAAO,CAAC+yf,EARQ,SAAUr0e,GACtB,IAAI1e,EACJ,IAAIwW,EAAQo6xC,kBAAZ,CAEA,IAAI79yB,EAAQu3yB,EAAa5rxC,GACzB6ktB,EAASxwO,GACwB,QAAhC/yf,EAAKwW,EAAQq6xC,qBAAkC,IAAP7wyC,GAAyBA,EAAG/2B,KAAKutC,EAASu8e,EAHzE,CAId,EAEJ,CAsFa+9yB,GAAsBC,EAAe/wyC,EAAG,GAAIgxyC,EAAYhxyC,EAAG,GAChEixyC,EAjFR,SAA0Bl+yB,EAAO/yf,GAM7B,IALA,IAAIkxyC,EAAgBlxyC,EAAGkxyC,cAAepC,EAAiB9uyC,EAAG8uyC,eACtDj/xC,EAAQy6xC,EAAav3yB,GACrBjjf,EAAMw6xC,GAAa,EAAA7pY,EAAA,GAAU5w5B,EAAOi/xC,IACpCqC,GAAa,EAAAzvY,EAAA,GAA2B5x5B,EAAKD,GAC7Ciif,EAAS,GACJ7nhB,EAAI,EAAGA,EAAIkn0C,EAAYln0C,IAAK,CACjC,IAAImn0C,GAAY,EAAA3wY,EAAA,GAAU5w5B,EAAO5lC,GACjC6nhB,EAAO5mhB,KAAKkm0C,EAChB,CAGA,OAFIF,IACAp/yB,EAASA,EAAOnud,WACbmud,CACX,CAoEwBu/yB,CAAiBN,EAAcpB,GAC/CyB,EAzDR,SAAsBE,EAAe9+yC,GACjC,IAAIA,EAAQo+yC,kBAAZ,CAGA,IAAI1uY,EAAS1v6B,EAAQ0v6B,OAAQqvY,EAAkB/+yC,EAAQ++yC,gBAAiBvxyC,EAAKxN,EAAQs8yC,eAAgBA,OAAwB,IAAP9uyC,EAAgB,EAAIA,EACtIwrB,EAAS+lxC,EAAkBzC,EAAiB,EAC5C/7yB,EAAQu3yB,EAAagH,GACzB,IAAKpvY,EACD,OAAO,EAAAzB,EAAA,GAAU1ta,EAAOvne,GAG5B,MADiB,EAAAk24B,EAAA,GAA2BQ,EAAQovY,GACnCxC,GAIjB,OAAO,EAAAruY,EAAA,GAAU1ta,EAAOvne,EAZxB,CAaJ,CAyCoBgmxC,CAAaT,EAAcpB,GACvC8B,EA7BR,SAA0BH,EAAe9+yC,GACrC,IAAIA,EAAQo+yC,kBAAZ,CAGA,IAAIzB,EAAW38yC,EAAQ28yC,SAAUoC,EAAkB/+yC,EAAQ++yC,gBAAiBvxyC,EAAKxN,EAAQs8yC,eACrFtjxC,EAAS+lxC,OADoH,IAAPvxyC,EAAgB,EAAIA,EAC9F,EAC5C+yf,EAAQu3yB,EAAagH,GACzB,IAAKnC,EACD,OAAO,EAAA1uY,EAAA,GAAU1ta,GAAQvne,GAG7B,MADiB,EAAAk24B,EAAA,GAA2B3ua,EAAOo8yB,IACjC,GAIlB,OAAO,EAAA1uY,EAAA,GAAU1ta,GAAQvne,EAZzB,CAaJ,CAawBkmxC,CAAiBX,EAAcpB,GAC/CgC,EAAkB,SAAUjzxC,GAC5B,OAAOuyxC,EAAcjgyC,MAAK,SAAUu+xC,GAChC,OAAO5sQ,EAAYjkhC,EAAM6wxC,EAC7B,GACJ,EAYI/k0C,EAAQ,CACRum0C,aAAcA,EACdE,cAAeA,EACfD,UAAWA,EACXY,SAfW,SAAUlzxC,EAAMmzxC,GACvBF,EAAgBjzxC,KAGhBmzxC,IAAW,EAAAn/mB,EAAA,GAASh0qB,EAAMmzxC,GAC1Bb,GAAU,EAAAvwY,EAAA,GAAU/h5B,EAAM,GAAgC,EAA5BixxC,EAAUb,iBAGxCkC,EAAUtyxC,GAElB,EAMI+yxC,cAAeA,EACfL,UAAWA,EACXO,gBAAiBA,GAErB,OAAQ,IAAA1okC,KAAImnkC,GAAkB3kyC,SAAU,CAAEjhC,MAAOA,EAAO6+B,SAAUiN,EAAMjN,UAC5E,CAOA,SAASyoyC,KACL,IAAIt7xC,GAAU,IAAA2xN,YAAWiokC,IACzB,IAAK55xC,EACD,MAAM,IAAI3lB,MAAM,0DAEpB,OAAO2lB,CACX,CAKA,SAASu7xC,GAAiBz7xC,GACtB,IAAItW,EACA62B,EAAKw4wC,KAAgBnhkC,EAAar3M,EAAGq3M,WAAYhvF,EAASroH,EAAGqoH,OAAQq4E,EAAa1gM,EAAG0gM,WACrFy5kC,EAAYc,KAAgBd,UAC5BgB,EAAoB,SAAU/B,GAC9Be,GAAU,EAAAvwY,EAAA,GAAUwvY,EAAU35xC,EAAM02lB,cAAgB12lB,EAAM02lB,aAAe,GAC7E,EACIilsB,EAAmH,QAA1FjyyC,EAAKu3N,aAA+C,EAASA,EAAW+3kC,oBAAiC,IAAPtvyC,EAAgBA,EAAKsvyC,GAChJ4C,GAAgB,IAAAjpkC,KAAIgpkC,EAAuB,CAAEr9yC,GAAI0hB,EAAM1hB,GAAI26yC,aAAcj5xC,EAAMi5xC,eACnF,OAAQ,IAAAnm7B,MAAK,MAAO,CAAEnwT,UAAWi1K,EAAWi+jC,kBAAmBzuzC,MAAOwhK,EAAOitpC,kBAAmB9iyC,SAAU,EAAC,IAAA4/N,KAAI,MAAO,CAAEhwK,UAAWi1K,EAAW29jC,QAASxiyC,SAAU6oyC,KAAiB,IAAAjpkC,KAAI4mkC,GAAgB,CAAEthvC,SAAUyjvC,EAAmBzC,aAAcj5xC,EAAMi5xC,gBAAiB,IAAAtmkC,KAAIinkC,GAAe,CAAE3hvC,SAAUyjvC,EAAmBzC,aAAcj5xC,EAAMi5xC,iBACpV,CAKA,SAAS4C,GAAS77xC,GACd,OAAQ,IAAA2yN,KAAI,MAAO5pO,EAAS,CAAE+I,MAAO,OAAQC,OAAQ,OAAQy7kC,QAAS,eAAiBxtkC,EAAO,CAAEjN,UAAU,IAAA4/N,KAAI,OAAQ,CAAEj9P,EAAG,khBAAmhBy6H,KAAM,eAAgBgpsC,SAAU,cAClrB,CAKA,SAAS2C,GAAU97xC,GACf,OAAQ,IAAA2yN,KAAI,MAAO5pO,EAAS,CAAE+I,MAAO,OAAQC,OAAQ,OAAQy7kC,QAAS,eAAiBxtkC,EAAO,CAAEjN,UAAU,IAAA4/N,KAAI,OAAQ,CAAEj9P,EAAG,qhBAAshBy6H,KAAM,mBAC3pB,CAGA,IAAI4rsC,IAAS,IAAApxkC,aAAW,SAAU3qN,EAAOrL,GACrC,IAAIjL,EAAKqvyC,KAAgBnhkC,EAAaluO,EAAGkuO,WAAYhvF,EAASl/I,EAAGk/I,OAC7DozpC,EAAgB,CAACpkkC,EAAW49jC,aAAc59jC,EAAW6yG,QACrDzqU,EAAM2iD,WACNq5uC,EAAcpn0C,KAAKorC,EAAM2iD,WAE7B,IAAIA,EAAYq5uC,EAAcp8zC,KAAK,KAC/BwH,EAAQ2hB,EAASA,EAAS,CAAC,EAAG6/I,EAAO4spC,cAAe5spC,EAAO6hM,QAI/D,OAHIzqU,EAAM54B,OACN/U,OAAOa,OAAOkU,EAAO44B,EAAM54B,QAEvB,IAAAurP,KAAI,SAAU5pO,EAAS,CAAC,EAAGiX,EAAO,CAAErL,IAAKA,EAAKr1B,KAAM,SAAUqjF,UAAWA,EAAWv7E,MAAOA,IACvG,IAGA,SAAS60zC,GAAWj8xC,GAChB,IAAItW,EAAI62B,EACJnoC,EAAK2gzC,KAAgBxssC,EAAMn0G,EAAGm0G,IAAKqzU,EAASxnb,EAAGwnb,OAAQhoM,EAAax/O,EAAGw/O,WAAYhvF,EAASxwJ,EAAGwwJ,OAAQx6G,EAAKh2C,EAAGuoE,OAAQo3uC,EAAgB3pwC,EAAG2pwC,cAAeD,EAAY1pwC,EAAG0pwC,UAAW72kC,EAAa7oO,EAAG6oO,WACvM,IAAKjhN,EAAM86xC,YAAc96xC,EAAMm7xC,cAC3B,OAAO,IAAAxokC,KAAI,EAAAD,SAAU,CAAC,GAE1B,IAAIwpkC,EAAgBnE,EAAc/3xC,EAAMm7xC,cAAe,CAAEv73B,OAAQA,IAC7Du83B,EAAoB,CACpBvkkC,EAAW0+jC,WACX1+jC,EAAW2+jC,qBACb32zC,KAAK,KACHqhmC,EAAY62N,EAAU93xC,EAAM86xC,UAAW,CAAEl73B,OAAQA,IACjDw83B,EAAgB,CAChBxkkC,EAAW0+jC,WACX1+jC,EAAW4+jC,iBACb52zC,KAAK,KACHy8zC,EAA6G,QAAvF3yyC,EAAKu3N,aAA+C,EAASA,EAAW66kC,iBAA8B,IAAPpyyC,EAAgBA,EAAKoyyC,GAC1IQ,EAA2G,QAAtF/7wC,EAAK0gM,aAA+C,EAASA,EAAW46kC,gBAA6B,IAAPt7wC,EAAgBA,EAAKs7wC,GAC5I,OAAQ,IAAA/o7B,MAAK,MAAO,CAAEnwT,UAAWi1K,EAAWwniC,IAAKh4xC,MAAOwhK,EAAOw2nC,IAAKrswC,SAAU,EAAEiN,EAAMu8xC,eAAiB,IAAA5pkC,KAAIopkC,GAAQ,CAAEt+zC,KAAM,iBAAkB,aAAcy+zC,EAAev5uC,UAAWw5uC,EAAmB/0zC,MAAOwhK,EAAO2tpC,oBAAqBlz9B,UAAWrjU,EAAMm7xC,cAAepqyC,QAASiP,EAAMw8xC,gBAAiBzpyC,SAAkB,QAARw5F,GAAiB,IAAAomI,KAAI0pkC,EAAoB,CAAE15uC,UAAWi1K,EAAW6+jC,SAAUrvzC,MAAOwhK,EAAO6tpC,YAAgB,IAAA9jkC,KAAI2pkC,EAAmB,CAAE35uC,UAAWi1K,EAAW6+jC,SAAUrvzC,MAAOwhK,EAAO6tpC,cAAmBz2xC,EAAMy8xC,WAAa,IAAA9pkC,KAAIopkC,GAAQ,CAAEt+zC,KAAM,aAAc,aAAcwjmC,EAAWt+gC,UAAWy5uC,EAAeh1zC,MAAOwhK,EAAO4tpC,gBAAiBnz9B,UAAWrjU,EAAM86xC,UAAW/pyC,QAASiP,EAAM08xC,YAAa3pyC,SAAkB,QAARw5F,GAAiB,IAAAomI,KAAI2pkC,EAAmB,CAAE35uC,UAAWi1K,EAAW6+jC,SAAUrvzC,MAAOwhK,EAAO6tpC,YAAgB,IAAA9jkC,KAAI0pkC,EAAoB,CAAE15uC,UAAWi1K,EAAW6+jC,SAAUrvzC,MAAOwhK,EAAO6tpC,eACr3B,CAKA,SAASkG,GAAkB38xC,GACvB,IAAIw4xC,EAAiBO,KAAeP,eAChC9uyC,EAAK8xyC,KAAiBL,EAAgBzxyC,EAAGyxyC,cAAeL,EAAYpxyC,EAAGoxyC,UAAWJ,EAAYhxyC,EAAGgxyC,UAAWC,EAAgBjxyC,EAAGixyC,cAC/HjksB,EAAeiksB,EAActhuC,WAAU,SAAUojb,GACjD,OAAO4viB,EAAYrshC,EAAMi5xC,aAAcx8yB,EAC3C,IACI0nd,EAA2B,IAAjBztW,EACV8la,EAAS9la,IAAiBiksB,EAAcvn0C,OAAS,EACjDqp0C,EAAWjE,EAAiB,IAAMr0V,IAAYq4D,GAC9C+/R,EAAe/D,EAAiB,IAAMh8R,IAAWr4D,GAWrD,OAAQ,IAAAxxuB,KAAIspkC,GAAY,CAAEhD,aAAcj5xC,EAAMi5xC,aAAcwD,SAAUA,EAAUF,aAAcA,EAAczB,UAAWA,EAAWK,cAAeA,EAAeqB,gBAVtI,WACjBrB,GAELT,EAAUS,EACd,EAMsMuB,YALhL,WACb5B,GAELJ,EAAUI,EACd,GAEJ,CAMA,SAASjqiB,GAAQ7wvB,GACb,IAAItW,EAGAghV,EAFAnqT,EAAKw4wC,KAAgBnhkC,EAAar3M,EAAGq3M,WAAY0ikC,EAAoB/5wC,EAAG+5wC,kBAAmB1xpC,EAASroH,EAAGqoH,OAAQ0vpC,EAAgB/3wC,EAAG+3wC,cAAer3kC,EAAa1gM,EAAG0gM,WACjK06kC,EAAmH,QAA1FjyyC,EAAKu3N,aAA+C,EAASA,EAAW+3kC,oBAAiC,IAAPtvyC,EAAgBA,EAAKsvyC,GAcpJ,OAXItu9B,EADA4v9B,GACW,IAAA3nkC,KAAIgpkC,EAAuB,CAAEr9yC,GAAI0hB,EAAM1hB,GAAI26yC,aAAcj5xC,EAAMi5xC,eAEnD,aAAlBX,GACM,IAAA3lkC,KAAI8okC,GAAkB,CAAExC,aAAcj5xC,EAAMi5xC,aAAc36yC,GAAI0hB,EAAM1hB,KAExD,qBAAlBg6yC,GACM,IAAAxl7B,MAAK,EAAApgJ,SAAU,CAAE3/N,SAAU,EAAC,IAAA4/N,KAAI8okC,GAAkB,CAAExC,aAAcj5xC,EAAMi5xC,aAAcvisB,aAAc12lB,EAAM02lB,aAAcp4mB,GAAI0hB,EAAM1hB,MAAO,IAAAq0O,KAAIgqkC,GAAmB,CAAE1D,aAAcj5xC,EAAMi5xC,aAAcvisB,aAAc12lB,EAAM02lB,aAAcp4mB,GAAI0hB,EAAM1hB,SAGhP,IAAAw0X,MAAK,EAAApgJ,SAAU,CAAE3/N,SAAU,EAAC,IAAA4/N,KAAIgpkC,EAAuB,CAAEr9yC,GAAI0hB,EAAM1hB,GAAI26yC,aAAcj5xC,EAAMi5xC,aAAcvisB,aAAc12lB,EAAM02lB,gBAAiB,IAAA/jY,KAAIgqkC,GAAmB,CAAE1D,aAAcj5xC,EAAMi5xC,aAAc36yC,GAAI0hB,EAAM1hB,SAE1N,IAAAq0O,KAAI,MAAO,CAAEhwK,UAAWi1K,EAAW8yG,QAAStjW,MAAOwhK,EAAO8hM,QAAS33U,SAAU23U,GACzF,CAIA,SAASky9B,GAAO58xC,GACZ,IAAItW,EAAKqvyC,KAAgBvkgC,EAAS9qS,EAAG8qS,OAAQ5rJ,EAASl/I,EAAGk/I,OAAQutpC,EAAQzsyC,EAAGkuO,WAAWu+jC,MACvF,OAAK3hgC,GAEG,IAAA7hE,KAAI,QAAS,CAAEhwK,UAAWwzuC,EAAO/uzC,MAAOwhK,EAAOutpC,MAAOpjyC,UAAU,IAAA4/N,KAAI,KAAM,CAAE5/N,UAAU,IAAA4/N,KAAI,KAAM,CAAEq0O,QAAS,EAAGj0c,SAAUyhS,SADrH,IAAA7hE,KAAI,EAAAD,SAAU,CAAC,EAE9B,CAyBA,SAASmqkC,KACL,IAAInzyC,EAAKqvyC,KAAgBnhkC,EAAaluO,EAAGkuO,WAAYhvF,EAASl/I,EAAGk/I,OAAQk0pC,EAAiBpzyC,EAAGozyC,eAAgBl93B,EAASl2a,EAAGk2a,OAAQknf,EAAep95B,EAAGo95B,aAAci2Y,EAAUrzyC,EAAGqzyC,QAAStF,EAAoB/tyC,EAAGytyC,WAAWM,kBAAmBQ,EAAevuyC,EAAGi3D,OAAOs3uC,aACjQ+E,EArBR,SAAqBp93B,EAErBknf,EAEAi2Y,GAKI,IAJA,IAAIxjyC,EAAQwjyC,GACN,EAAA1mY,EAAA,GAAe,IAAI936B,OACnB,EAAA4w6B,EAAA,GAAY,IAAI5w6B,KAAQ,CAAEqhb,OAAQA,EAAQknf,aAAcA,IAC1Drra,EAAO,GACF9nhB,EAAI,EAAGA,EAAI,EAAGA,IAAK,CACxB,IAAI+ohB,GAAM,EAAAqta,EAAA,GAAQxw5B,EAAO5lC,GACzB8nhB,EAAK7mhB,KAAK8nhB,EACd,CACA,OAAOjB,CACX,CAOmBwhzB,CAAYr93B,EAAQknf,EAAci2Y,GACjD,OAAQ,IAAAjq7B,MAAK,KAAM,CAAE1rY,MAAOwhK,EAAOwtpC,SAAUzzuC,UAAWi1K,EAAWw+jC,SAAUrjyC,SAAU,CAAC+pyC,IAAmB,IAAAnqkC,KAAI,KAAM,CAAEvrP,MAAOwhK,EAAOytpC,UAAW1zuC,UAAWi1K,EAAWy+jC,YAAe2G,EAAS56yC,KAAI,SAAUgquB,EAASz4vB,GAAK,OAAQ,IAAAg/P,KAAI,KAAM,CAAExxO,MAAO,MAAOwhE,UAAWi1K,EAAWy+jC,UAAWjvzC,MAAOwhK,EAAOytpC,UAAW,aAAc4B,EAAa7rkB,EAAS,CAAExsT,OAAQA,IAAW7sa,SAAU0kyC,EAAkBrrkB,EAAS,CAAExsT,OAAQA,KAAajsc,EAAK,MACpb,CAGA,SAASup0C,KACL,IAAIxzyC,EACA62B,EAAKw4wC,KAAgBnhkC,EAAar3M,EAAGq3M,WAAYhvF,EAASroH,EAAGqoH,OAAQq4E,EAAa1gM,EAAG0gM,WACrFk8kC,EAAyG,QAArFzzyC,EAAKu3N,aAA+C,EAASA,EAAW47kC,eAA4B,IAAPnzyC,EAAgBA,EAAKmzyC,GAC1I,OAAQ,IAAAlqkC,KAAI,QAAS,CAAEvrP,MAAOwhK,EAAO9uH,KAAM6oC,UAAWi1K,EAAW99M,KAAM/mB,UAAU,IAAA4/N,KAAIwqkC,EAAkB,CAAC,IAC5G,CAGA,SAASC,GAAWp9xC,GAChB,IAAItW,EAAKqvyC,KAAgBn53B,EAASl2a,EAAGk2a,OAAQy33B,EAAY3tyC,EAAGytyC,WAAWE,UACvE,OAAO,IAAA1kkC,KAAI,EAAAD,SAAU,CAAE3/N,SAAUskyC,EAAUr3xC,EAAMoI,KAAM,CAAEw3Z,OAAQA,KACrE,CAQA,IAAIy93B,IAAwB,IAAA5rkC,oBAAc3wN,GAE1C,SAASw8xC,GAAuBt9xC,GAC5B,IAAKi1xC,EAAoBj1xC,EAAM8+E,cAAe,CAO1C,OAAQ,IAAA6zI,KAAI0qkC,GAAsBloyC,SAAU,CAAEjhC,MANtB,CACpBkrL,cAAUt+I,EACVgyrC,UAAW,CACPzv3B,SAAU,KAGsDtwU,SAAUiN,EAAMjN,UAC5F,CACA,OAAQ,IAAA4/N,KAAI4qkC,GAAgC,CAAEz+sC,aAAc9+E,EAAM8+E,aAAc/rF,SAAUiN,EAAMjN,UACpG,CACA,SAASwqyC,GAA+B7zyC,GACpC,IAAIo1F,EAAep1F,EAAGo1F,aAAc/rF,EAAWrJ,EAAGqJ,SAC9CqsJ,EAAWtgE,EAAasgE,SAAUx+K,EAAMk+G,EAAal+G,IAAKF,EAAMo+G,EAAap+G,IAwB7EoytC,EAAY,CACZzv3B,SAAU,IAEVjkL,GACA0ziC,EAAUzv3B,SAASzuW,MAAK,SAAU8nhB,GAC9B,IAAI8gzB,EAAgB98zC,GAAO0+K,EAAShsL,OAASsN,EAAM,EAC/CygC,EAAai+I,EAAS1kJ,MAAK,SAAU+iyC,GACrC,OAAO,EAAA9tY,EAAA,GAAU8tY,EAAa/gzB,EAClC,IACA,OAAO12gB,QAAQw3zC,IAAkBr8xC,EACrC,IAEJ,IAAI8rN,EAAe,CACf7tE,SAAUA,EACVs+oC,WArCa,SAAUhhzB,EAAKk7yB,EAAiB1l0C,GAC7C,IAAIw3B,EAAI62B,EAGR,KAFmC,QAAlC72B,EAAKo1F,EAAa4+sC,kBAA+B,IAAPh0yC,GAAyBA,EAAG/2B,KAAKmsH,EAAc49Z,EAAKk7yB,EAAiB1l0C,GAC5F8T,QAAQ4xzC,EAAgBx4oC,UAAYx+K,IAAQw+K,aAA2C,EAASA,EAAShsL,UAAYwN,IAIrHoF,SAAS4xzC,EAAgBx4oC,UAAY1+K,IAAQ0+K,aAA2C,EAASA,EAAShsL,UAAYsN,IAC1I,CAGA,IAAIi9zC,EAAev+oC,EAAWphI,EAAc,GAAIohI,GAAU,GAAQ,GAClE,GAAIw4oC,EAAgBx4oC,SAAU,CAC1B,IAAIrvK,EAAQ4tzC,EAAatkuC,WAAU,SAAUokuC,GACzC,OAAO,EAAA9tY,EAAA,GAAUjza,EAAK+gzB,EAC1B,IACAE,EAAa3nzC,OAAOjG,EAAO,EAC/B,MAEI4tzC,EAAa/o0C,KAAK8nhB,GAEW,QAAhCn8d,EAAKu+D,EAAaqlR,gBAA6B,IAAP5jV,GAAyBA,EAAG5tD,KAAKmsH,EAAc6+sC,EAAcjhzB,EAAKk7yB,EAAiB1l0C,EAX5H,CAYJ,EAgBI4guC,UAAWA,GAEf,OAAQ,IAAAng+B,KAAI0qkC,GAAsBloyC,SAAU,CAAEjhC,MAAO+4P,EAAcl6N,SAAUA,GACjF,CAMA,SAAS6qyC,KACL,IAAI19xC,GAAU,IAAA2xN,YAAWwrkC,IACzB,IAAKn9xC,EACD,MAAM,IAAI3lB,MAAM,kEAEpB,OAAO2lB,CACX,CA8CA,IA+II29xC,GA/IAC,IAAqB,IAAArskC,oBAAc3wN,GAEvC,SAASi9xC,GAAoB/9xC,GACzB,IAAKk1xC,EAAiBl1xC,EAAM8+E,cAAe,CAUvC,OAAQ,IAAA6zI,KAAImrkC,GAAmB3oyC,SAAU,CAAEjhC,MATnB,CACpBkrL,cAAUt+I,EACVgyrC,UAAW,CACPkrG,YAAa,GACbC,UAAW,GACXC,aAAc,GACd769B,SAAU,KAGmDtwU,SAAUiN,EAAMjN,UACzF,CACA,OAAQ,IAAA4/N,KAAIwrkC,GAA6B,CAAEr/sC,aAAc9+E,EAAM8+E,aAAc/rF,SAAUiN,EAAMjN,UACjG,CACA,SAASoryC,GAA4Bz0yC,GACjC,IAAIo1F,EAAep1F,EAAGo1F,aAAc/rF,EAAWrJ,EAAGqJ,SAC9CqsJ,EAAWtgE,EAAasgE,SACxB7+H,EAAK6+H,GAAY,CAAC,EAAGg/oC,EAAe79wC,EAAGzvC,KAAMutzC,EAAa99wC,EAAGv0C,GAC7DpL,EAAMk+G,EAAal+G,IACnBF,EAAMo+G,EAAap+G,IAOnBoytC,EAAY,CACZkrG,YAAa,GACbC,UAAW,GACXC,aAAc,GACd769B,SAAU,IA2Cd,GAzCI+69B,GACAtrG,EAAUkrG,YAAc,CAACI,GACpBC,GAIDvrG,EAAUmrG,UAAY,CAACI,IAClB,EAAA1uY,EAAA,GAAUyuY,EAAcC,KACzBvrG,EAAUorG,aAAe,CACrB,CACI1xxC,MAAO4xxC,EACP9wkC,OAAQ+wkC,MARpBvrG,EAAUmrG,UAAY,CAACG,IActBC,IACLvrG,EAAUkrG,YAAc,CAACK,GACzBvrG,EAAUmrG,UAAY,CAACI,IAEvBz9zC,IACIw9zC,IAAiBC,GACjBvrG,EAAUzv3B,SAASzuW,KAAK,CACpB43C,OAAO,EAAAiq5B,EAAA,GAAQ2nY,EAAcx9zC,EAAM,GACnC0sP,QAAQ,EAAAy8rB,EAAA,GAAQq0Y,EAAcx9zC,EAAM,KAGxCw9zC,GAAgBC,GAChBvrG,EAAUzv3B,SAASzuW,KAAK,CACpB43C,MAAO4xxC,EACP9wkC,QAAQ,EAAAy8rB,EAAA,GAAQq0Y,EAAcx9zC,EAAM,MAGvCw9zC,GAAgBC,GACjBvrG,EAAUzv3B,SAASzuW,KAAK,CACpB43C,OAAO,EAAAiq5B,EAAA,GAAQ4nY,EAAYz9zC,EAAM,GACjC0sP,QAAQ,EAAAy8rB,EAAA,GAAQs0Y,EAAYz9zC,EAAM,MAI1CF,EAAK,CASL,GARI09zC,IAAiBC,IACjBvrG,EAAUzv3B,SAASzuW,KAAK,CACpB04P,QAAQ,EAAAy8rB,EAAA,GAAQq0Y,EAAqB,EAAN19zC,KAEnCoytC,EAAUzv3B,SAASzuW,KAAK,CACpB43C,OAAO,EAAAu94B,EAAA,GAAQq0Y,EAAc19zC,EAAM,MAGvC09zC,GAAgBC,EAAY,CAC5B,IACInpxC,EAASx0C,IADO,OAAyB29zC,EAAYD,GAAgB,GAEzEtrG,EAAUzv3B,SAASzuW,KAAK,CACpB04P,QAAQ,EAAAmpsB,EAAA,GAAQ2nY,EAAclpxC,KAElC49qC,EAAUzv3B,SAASzuW,KAAK,CACpB43C,OAAO,EAAAu94B,EAAA,GAAQs0Y,EAAYnpxC,IAEnC,EACKkpxC,GAAgBC,IACjBvrG,EAAUzv3B,SAASzuW,KAAK,CACpB04P,QAAQ,EAAAy8rB,EAAA,GAAQs0Y,EAAmB,EAAN39zC,KAEjCoytC,EAAUzv3B,SAASzuW,KAAK,CACpB43C,OAAO,EAAAu94B,EAAA,GAAQs0Y,EAAY39zC,EAAM,KAG7C,CACA,OAAQ,IAAAiyP,KAAImrkC,GAAmB3oyC,SAAU,CAAEjhC,MAAO,CAAEkrL,SAAUA,EAAUs+oC,WAjFvD,SAAUhhzB,EAAKk7yB,EAAiB1l0C,GAC7C,IAAIw3B,EAAI62B,EAC2B,QAAlC72B,EAAKo1F,EAAa4+sC,kBAA+B,IAAPh0yC,GAAyBA,EAAG/2B,KAAKmsH,EAAc49Z,EAAKk7yB,EAAiB1l0C,GAChH,IAAIiv3B,EAhEZ,SAAoBzkW,EAAK5nZ,GACrB,IAAIprG,EAAKorG,GAAS,CAAC,EAAGhkH,EAAO4Y,EAAG5Y,KAAM9E,EAAK0d,EAAG1d,GAC9C,GAAI8E,GAAQ9E,EAAI,CACZ,IAAI,EAAA2j7B,EAAA,GAAU3j7B,EAAI0wgB,KAAQ,EAAAiza,EAAA,GAAU7+6B,EAAM4rgB,GACtC,OAEJ,IAAI,EAAAiza,EAAA,GAAU3j7B,EAAI0wgB,GACd,MAAO,CAAE5rgB,KAAM9E,EAAIA,QAAI80B,GAE3B,IAAI,EAAA6u5B,EAAA,GAAU7+6B,EAAM4rgB,GAChB,OAEJ,OAAI,EAAA4ya,EAAA,GAAQx+6B,EAAM4rgB,GACP,CAAE5rgB,KAAM4rgB,EAAK1wgB,GAAIA,GAErB,CAAE8E,KAAMA,EAAM9E,GAAI0wgB,EAC7B,CACA,OAAI1wgB,GACI,EAAAsj7B,EAAA,GAAQ5ya,EAAK1wgB,GACN,CAAE8E,KAAM9E,EAAIA,GAAI0wgB,GAEpB,CAAE5rgB,KAAM4rgB,EAAK1wgB,GAAIA,GAExB8E,GACI,EAAAsrsB,EAAA,GAAS1/L,EAAK5rgB,GACP,CAAEA,KAAM4rgB,EAAK1wgB,GAAI8E,GAErB,CAAEA,KAAMA,EAAM9E,GAAI0wgB,GAEtB,CAAE5rgB,KAAM4rgB,EAAK1wgB,QAAI80B,EAC5B,CAkCuBw9xC,CAAW5hzB,EAAKt9V,GACE,QAAhC7+H,EAAKu+D,EAAaqlR,gBAA6B,IAAP5jV,GAAyBA,EAAG5tD,KAAKmsH,EAAcqiwB,EAAUzkW,EAAKk7yB,EAAiB1l0C,EAC5H,EA4EgG4guC,UAAWA,GAAa//rC,SAAUA,GACtI,CAMA,SAASwryC,KACL,IAAIr+xC,GAAU,IAAA2xN,YAAWiskC,IACzB,IAAK59xC,EACD,MAAM,IAAI3lB,MAAM,4DAEpB,OAAO2lB,CACX,CAGA,SAASs+xC,GAAe775B,GACpB,OAAInwa,MAAMkS,QAAQi+Z,GACP3kX,EAAc,GAAI2kX,GAAS,QAEjB7hY,IAAZ6hY,EACE,CAACA,GAGD,EAEf,EAcA,SAAWk75B,GACPA,EAA0B,QAAI,UAE9BA,EAA2B,SAAI,WAE/BA,EAA2B,SAAI,WAE/BA,EAAyB,OAAI,SAE7BA,EAAwB,MAAI,QAE5BA,EAA6B,WAAI,cAEjCA,EAA2B,SAAI,YAE/BA,EAA8B,YAAI,cACrC,CAhBD,CAgBGA,KAAqBA,GAAmB,CAAC,IAE5C,IAAIY,GAAWZ,GAAiBY,SAAUC,GAAWb,GAAiBa,SAAUt04B,GAASyz4B,GAAiBzz4B,OAAQu04B,GAAQd,GAAiBc,MAAOC,GAAWf,GAAiBe,SAAUC,GAAchB,GAAiBgB,YAAaC,GAAajB,GAAiBiB,WAAYC,GAAUlB,GAAiBkB,QAiCrSC,IAAmB,IAAAvtkC,oBAAc3wN,GAErC,SAASm+xC,GAAkBj/xC,GACvB,IAAIq5xC,EAAYN,KAGZmG,EArCR,SAA8B7F,EAAW8F,EAAgBh5pB,GACrD,IAAIz8oB,EACAw1yC,IAAqBx1yC,EAAK,CAAC,GACxB+0yC,IAAYD,GAAenF,EAAUj6oC,UACxC11J,EAAGg1yC,IAAYF,GAAenF,EAAUh29B,UACxC35U,EAAG0ga,IAAUo04B,GAAenF,EAAUhjzB,QACtC3sf,EAAGi1yC,IAAS,CAACtF,EAAUvnY,OACvBpo6B,EAAGk1yC,IAAY,GACfl1yC,EAAGm1yC,IAAe,GAClBn1yC,EAAGo1yC,IAAc,GACjBp1yC,EAAGq1yC,IAAW,GACdr1yC,GAgBJ,OAfI2vyC,EAAUR,UACVqG,EAAkBR,IAAU9p0C,KAAK,CAAE04P,OAAQ+rkC,EAAUR,WAErDQ,EAAUztY,QACVszY,EAAkBR,IAAU9p0C,KAAK,CAAE43C,MAAO6sxC,EAAUztY,SAEpDqpY,EAAoBoE,GACpB6F,EAAkBR,IAAYQ,EAAkBR,IAAU3p0C,OAAOoq0C,EAAersG,UAAU4rG,KAErFxJ,EAAiBmE,KACtB6F,EAAkBR,IAAYQ,EAAkBR,IAAU3p0C,OAAOoxqB,EAAY2sjB,UAAU4rG,KACvFQ,EAAkBJ,IAAc34pB,EAAY2sjB,UAAUgsG,IACtDI,EAAkBL,IAAe14pB,EAAY2sjB,UAAU+rG,IACvDK,EAAkBN,IAAYz4pB,EAAY2sjB,UAAU8rG,KAEjDM,CACX,CAS4BE,CAAqB/F,EAFxBuE,KACHW,MAEdc,EArER,SAA4BC,GACxB,IAAID,EAAkB,CAAC,EAKvB,OAJAht0C,OAAOmd,QAAQ8vzC,GAAcrnzC,SAAQ,SAAUyR,GAC3C,IAAI05E,EAAW15E,EAAG,GAAIi5Y,EAAUj5Y,EAAG,GACnC21yC,EAAgBj8tC,GAAYo7tC,GAAe775B,EAC/C,IACO085B,CACX,CA8D0BE,CAAmBlG,EAAUvmG,WAC/CA,EAAY/psC,EAASA,EAAS,CAAC,EAAGm2yC,GAAoBG,GAC1D,OAAQ,IAAA1skC,KAAIqskC,GAAiB7pyC,SAAU,CAAEjhC,MAAO4+tC,EAAW//rC,SAAUiN,EAAMjN,UAC/E,CAQA,SAASysyC,KACL,IAAIt/xC,GAAU,IAAA2xN,YAAWmtkC,IACzB,IAAK9+xC,EACD,MAAM,IAAI3lB,MAAM,wDAEpB,OAAO2lB,CACX,CAqHA,SAASu/xC,GAAmB/izB,EAE5Bo2sB,EAEAmmG,GACI,IAAIyG,EAAmBrt0C,OAAOgU,KAAKystC,GAAWrssC,QAAO,SAAUlQ,EAAQqB,GACnE,IAAIwrF,EAAW0vnC,EAAUl7sC,GAIzB,OAtDR,SAAiB8kgB,EAAKijzB,GAClB,OAAOA,EAASjlyC,MAAK,SAAUioY,GAC3B,GAAuB,kBAAZA,EACP,OAAOA,EAEX,GA7BYzua,EA6BGyua,GA5BZ,EAAAv7J,EAAA,GAAOlzQ,GA6BN,OAAO,EAAAy77B,EAAA,GAAUjza,EAAK/5G,GA9BlC,IAAoBzua,EAtBGk0C,EAAM0sF,EACrBprG,EACA5Y,EAAmB9E,EAoDnB,GA5BR,SAAwB9X,GACpB,OAAO1B,MAAMkS,QAAQxQ,IAAUA,EAAMsnC,MAAM4rO,EAAA,EAC/C,CA0BYw4jC,CAAej95B,GACf,OAAOA,EAAQxha,SAASu7gB,GAE5B,GA1ER,SAAqBxohB,GACjB,OAAO8R,QAAQ9R,GAA0B,iBAAVA,GAAsB,SAAUA,EACnE,CAwEY2r0C,CAAYl95B,GACZ,OA1DWv6X,EA0DUs0e,EAxDzB5rgB,GAFqBgkH,EA0DS6tS,GAxDjB7xZ,KAAM9E,EAAK8oH,EAAM9oH,GAC9B8E,GAAQ9E,IACc,OAAyBA,EAAI8E,GAAQ,IAEtCA,GAAjB4Y,EAAK,CAAC1d,EAAI8E,IAAiB,GAAI9E,EAAK0d,EAAG,KAE3B,OAAyB0e,EAAMt3B,IAAS,IACpD,OAAyB9E,EAAIo8B,IAAS,GAG1Cp8B,GACO,EAAA2j7B,EAAA,GAAU3j7B,EAAIo8B,KAErBt3B,IACO,EAAA6+6B,EAAA,GAAU7+6B,EAAMs3B,GA4CvB,GAjER,SAAyBl0C,GACrB,OAAO8R,QAAQ9R,GAA0B,iBAAVA,GAAsB,cAAeA,EACxE,CA+DY4r0C,CAAgBn95B,GAChB,OAAOA,EAAQgkhB,UAAUxl7B,SAASu7gB,EAAIplf,UAE1C,GAvFR,SAAwBqrY,GACpB,OAAO38Z,QAAQ28Z,GACQ,iBAAZA,GACP,WAAYA,GACZ,UAAWA,EACnB,CAkFYo95B,CAAep95B,GAAU,CACzB,IAEIq95B,GAFa,OAAyBr95B,EAAQr1K,OAAQovR,GAE3B,EAC3BujzB,GAFY,OAAyBt95B,EAAQn2X,MAAOkwe,GAE3B,EAE7B,OADuB,EAAA4ya,EAAA,GAAQ3shB,EAAQr1K,OAAQq1K,EAAQn2X,OAE5CyzxC,GAAcD,EAGdA,GAAeC,CAE9B,CACA,OAzFR,SAAyB/r0C,GACrB,OAAO8R,QAAQ9R,GAA0B,iBAAVA,GAAsB,UAAWA,EACpE,CAuFYgs0C,CAAgBv95B,IACT,OAAyB+5G,EAAK/5G,EAAQn2X,OAAS,EAtFlE,SAA0Bt4C,GACtB,OAAO8R,QAAQ9R,GAA0B,iBAAVA,GAAsB,WAAYA,EACrE,CAsFYis0C,CAAiBx95B,IACV,OAAyBA,EAAQr1K,OAAQovR,GAAO,EAEpC,mBAAZ/5G,GACAA,EAAQ+5G,EAGvB,GACJ,CAUY2xtB,CAAQ3xtB,EAAKt5a,IACb7sF,EAAO3hB,KAAKgjB,GAETrB,CACX,GAAG,IACCqhzC,EAAkB,CAAC,EAKvB,OAJA8H,EAAiBznzC,SAAQ,SAAUmrF,GAAY,OAAQw0tC,EAAgBx0tC,IAAY,CAAO,IACtF61tC,IAAiB5sQ,EAAY3viB,EAAKu8yB,KAClCrB,EAAgBwI,SAAU,GAEvBxI,CACX,CA2CA,IAAIyI,GAAY,IAEhB,SAASC,GAAaC,EAAYrkzC,GAC9B,IAAIskzC,EAAStkzC,EAAQskzC,OAAQ9/sC,EAAYxkG,EAAQwkG,UAAWxgF,EAAUhkB,EAAQgkB,QAAS4yrC,EAAY52sC,EAAQ42sC,UAAWppsC,EAAKxN,EAAQmgC,MAAOA,OAAe,IAAP3yB,EAAgB,CAAE4yB,MAAO,EAAGmkxC,YAAaF,GAAe72yC,EACtMo95B,EAAe5m5B,EAAQ4m5B,aAAc+xY,EAAW34xC,EAAQ24xC,SAAUjtY,EAAS1r5B,EAAQ0r5B,OAAQhsf,EAAS1/Z,EAAQ0/Z,OAiB5G8g4B,EAhBU,CACVhkzB,IAAKqta,EAAA,EACL/0J,KAAMs1J,EAAA,EACN7ta,MAAO0ta,EAAA,EACP3ta,KAAM+ta,EAAA,EACN4E,YAAa,SAAU/m5B,GACnB,OAAOlI,EAAQ68xC,SACT,EAAA1mY,EAAA,GAAeju5B,IACf,EAAA+m5B,EAAA,GAAY/m5B,EAAM,CAAEw3Z,OAAQA,EAAQknf,aAAcA,GAC5D,EACA0tY,UAAW,SAAUpsxC,GACjB,OAAOlI,EAAQ68xC,QACTtI,EAAarsxC,GACbosxC,EAAUpsxC,EAAM,CAAEw3Z,OAAQA,EAAQknf,aAAcA,GAC1D,GAEwB05Y,GAAQD,EAA0B,UAAd7/sC,EAAwB,GAAK,GAC3D,WAAdA,GAA0Bm4sC,EAC1B6H,EAAgBhg0C,EAAI,CAACm4zC,EAAU6H,IAEZ,UAAdhgtC,GAAyBkr0B,IAC9B80Y,EAAgB9/zC,EAAI,CAACgr7B,EAAQ80Y,KAEjC,IAAIljzB,GAAc,EAClB,GAAIs1sB,EAAW,CACX,IAAI8kG,EAAkB6H,GAAmBiB,EAAe5tG,GACxDt1sB,GAAeo6yB,EAAgBv09B,WAAau09B,EAAgBvhzB,MAChE,CACA,OAAImH,EACOkjzB,EAGHrkxC,EAAMC,MAAQ+jxC,GACPhkxC,EAAMokxC,YAEVH,GAAaI,EAAe,CAC/BF,OAAQA,EACR9/sC,UAAWA,EACXxgF,QAASA,EACT4yrC,UAAWA,EACXz2qC,MAAOtzB,EAASA,EAAS,CAAC,EAAGszB,GAAQ,CAAEC,MAAOD,EAAMC,MAAQ,KAGxE,CAOA,IAAIqkxC,IAAe,IAAAlvkC,oBAAc3wN,GAEjC,SAAS8/xC,GAAc5gyC,GACnB,IAAI6gyC,EAAarF,KACb1oG,EAAY0sG,KACZ91yC,GAAK,IAAAmhO,YAAY01kC,EAAa72yC,EAAG,GAAIo3yC,EAAgBp3yC,EAAG,GACxD62B,GAAK,IAAAsqM,YAAY41kC,EAAclgxC,EAAG,GAAIwgxC,EAAiBxgxC,EAAG,GAC1DygxC,EA/FR,SAA+BrG,EAAe7nG,GAO1C,IANA,IAGImuG,EACAnvY,EAJAovY,EAAkBlN,EAAa2G,EAAc,IAC7CwG,GAAiB,EAAAp1Y,EAAA,GAAW4uY,EAAcA,EAAcvn0C,OAAS,IAIjEg1C,EAAO84xC,EACJ94xC,GAAQ+4xC,GAAgB,CAC3B,IAAIvJ,EAAkB6H,GAAmBr3xC,EAAM0qrC,GAE/C,GADmB8kG,EAAgBv09B,UAAau09B,EAAgBvhzB,OAE5Djue,GAAO,EAAA2h5B,EAAA,GAAQ3h5B,EAAM,OADzB,CAIA,GAAIwvxC,EAAgBx4oC,SAChB,OAAOh3I,EAEPwvxC,EAAgB9lY,QAAUA,IAC1BA,EAAQ1p5B,GAEP64xC,IACDA,EAAoB74xC,GAExBA,GAAO,EAAA2h5B,EAAA,GAAQ3h5B,EAAM,EAVrB,CAWJ,CACA,OAAI0p5B,GAIOmvY,CAEf,CAgE6BG,CAAsBP,EAAWlG,cAAe7nG,GAErEuuG,GAAed,QAA+CA,EAAcE,GAAeI,EAAWxF,gBAAgBoF,IACpHA,EACAO,EAKFn99B,EAAQ,SAAUz7T,GAClB04xC,EAAc14xC,EAClB,EACIlI,EAAU64xC,KACVuI,EAAY,SAAUd,EAAQ9/sC,GAC9B,GAAK6/sC,EAAL,CAEA,IAAIgB,EAAcjB,GAAaC,EAAY,CACvCC,OAAQA,EACR9/sC,UAAWA,EACXxgF,QAASA,EACT4yrC,UAAWA,KAEX,EAAAnjS,EAAA,GAAU4wY,EAAYgB,KAE1BV,EAAWvF,SAASiG,EAAahB,GACjC189B,EAAM099B,GAVI,CAWd,EACIrt0C,EAAQ,CACRqs0C,WAAYA,EACZc,YAAaA,EACbrpjB,KAzBO,WACP+ojB,EAAeR,GACfO,OAAchgyC,EAClB,EAuBI+iU,MAAOA,EACP299B,cAAe,WAAc,OAAOF,EAAU,MAAO,QAAU,EAC/DG,eAAgB,WAAc,OAAOH,EAAU,MAAO,SAAW,EACjEI,eAAgB,WAAc,OAAOJ,EAAU,OAAQ,QAAU,EACjEK,gBAAiB,WAAc,OAAOL,EAAU,OAAQ,SAAW,EACnEM,iBAAkB,WAAc,OAAON,EAAU,QAAS,SAAW,EACrEO,gBAAiB,WAAc,OAAOP,EAAU,QAAS,QAAU,EACnEQ,gBAAiB,WAAc,OAAOR,EAAU,OAAQ,SAAW,EACnES,eAAgB,WAAc,OAAOT,EAAU,OAAQ,QAAU,EACjEU,iBAAkB,WAAc,OAAOV,EAAU,cAAe,SAAW,EAC3EW,eAAgB,WAAc,OAAOX,EAAU,YAAa,QAAU,GAE1E,OAAQ,IAAA3ukC,KAAIgukC,GAAaxryC,SAAU,CAAEjhC,MAAOA,EAAO6+B,SAAUiN,EAAMjN,UACvE,CAOA,SAASmvyC,KACL,IAAIhiyC,GAAU,IAAA2xN,YAAW8ukC,IACzB,IAAKzgyC,EACD,MAAM,IAAI3lB,MAAM,uDAEpB,OAAO2lB,CACX,CA2BA,IAAIiiyC,IAAsB,IAAA1wkC,oBAAc3wN,GAExC,SAASshyC,GAAqBpiyC,GAC1B,IAAKm1xC,EAAkBn1xC,EAAM8+E,cAAe,CAIxC,OAAQ,IAAA6zI,KAAIwvkC,GAAoBhtyC,SAAU,CAAEjhC,MAHpB,CACpBkrL,cAAUt+I,GAEwD/N,SAAUiN,EAAMjN,UAC1F,CACA,OAAQ,IAAA4/N,KAAI0vkC,GAA8B,CAAEvjtC,aAAc9+E,EAAM8+E,aAAc/rF,SAAUiN,EAAMjN,UAClG,CACA,SAASsvyC,GAA6B34yC,GAClC,IAAIo1F,EAAep1F,EAAGo1F,aAAc/rF,EAAWrJ,EAAGqJ,SAU9Ck6N,EAAe,CACf7tE,SAAUtgE,EAAasgE,SACvBs+oC,WAXa,SAAUhhzB,EAAKk7yB,EAAiB1l0C,GAC7C,IAAIw3B,EAAI62B,EAAInoC,EACuB,QAAlCsR,EAAKo1F,EAAa4+sC,kBAA+B,IAAPh0yC,GAAyBA,EAAG/2B,KAAKmsH,EAAc49Z,EAAKk7yB,EAAiB1l0C,IAC5G0l0C,EAAgBx4oC,UAAatgE,EAAa9wC,SAIb,QAAhC51D,EAAK0mG,EAAaqlR,gBAA6B,IAAP/rX,GAAyBA,EAAGzlB,KAAKmsH,EAAc49Z,EAAKA,EAAKk7yB,EAAiB1l0C,GAH9E,QAAhCquD,EAAKu+D,EAAaqlR,gBAA6B,IAAP5jV,GAAyBA,EAAG5tD,KAAKmsH,OAAch+E,EAAW47e,EAAKk7yB,EAAiB1l0C,EAIjI,GAKA,OAAQ,IAAAygQ,KAAIwvkC,GAAoBhtyC,SAAU,CAAEjhC,MAAO+4P,EAAcl6N,SAAUA,GAC/E,CAMA,SAASuvyC,KACL,IAAIpiyC,GAAU,IAAA2xN,YAAWswkC,IACzB,IAAKjiyC,EACD,MAAM,IAAI3lB,MAAM,8DAEpB,OAAO2lB,CACX,CA0NA,SAASqiyC,GAET7lzB,EAEAu8yB,EAEAuJ,GACI,IAAI94yC,EACA62B,EAAInoC,EACJihzC,EAAYN,KACZ0J,EAAeP,KACftK,EA7RR,SAA4Bl7yB,EAK5Bu8yB,GAGI,OADsBwG,GAAmB/izB,EADzB8izB,KACyCvG,EAE7D,CAoR0ByJ,CAAmBhmzB,EAAKu8yB,GAC1C0J,EAhNR,SAA6Bv6xC,EAAMwvxC,GAC/B,IAAIyB,EAAYN,KACZ52U,EAASmgV,KACThgV,EAAWs7U,KACX9osC,EAAQypsC,KACR70yC,EAAKw4yC,KAAmBV,EAAgB93yC,EAAG83yC,cAAeC,EAAiB/3yC,EAAG+3yC,eAAgBC,EAAiBh4yC,EAAGg4yC,eAAgBC,EAAkBj4yC,EAAGi4yC,gBAAiB3pjB,EAAOtuvB,EAAGsuvB,KAAMn0a,EAAQn6U,EAAGm6U,MAAO+99B,EAAmBl4yC,EAAGk4yC,iBAAkBC,EAAkBn4yC,EAAGm4yC,gBAAiBC,EAAkBp4yC,EAAGo4yC,gBAAiBC,EAAiBr4yC,EAAGq4yC,eAAgBC,EAAmBt4yC,EAAGs4yC,iBAAkBC,EAAiBv4yC,EAAGu4yC,eA4G9ZU,EAAgB,CAChB5xyC,QA5GU,SAAU7+B,GACpB,IAAIw3B,EAAI62B,EAAInoC,EAAIg2C,EACZ+mwC,EAAkBkE,GACW,QAA5B3vyC,EAAKy49B,EAAOu7U,kBAA+B,IAAPh0yC,GAAyBA,EAAG/2B,KAAKwv/B,EAAQ/58B,EAAMwvxC,EAAiB1l0C,GAEhG+i0C,EAAoBoE,GACM,QAA9B94wC,EAAK+h8B,EAASo7U,kBAA+B,IAAPn9wC,GAAyBA,EAAG5tD,KAAK2v/B,EAAUl68B,EAAMwvxC,EAAiB1l0C,GAEpGgj0C,EAAiBmE,GACM,QAA3BjhzC,EAAK08G,EAAM4osC,kBAA+B,IAAPtlzC,GAAyBA,EAAGzlB,KAAKmiI,EAAO1sF,EAAMwvxC,EAAiB1l0C,GAGnE,QAA/Bk8D,EAAKirwC,EAAUqE,kBAA+B,IAAPtvwC,GAAyBA,EAAGz7D,KAAK0m0C,EAAWjxxC,EAAMwvxC,EAAiB1l0C,EAEnH,EA+FIi9pB,QA9FU,SAAUj9pB,GACpB,IAAIw3B,EACJm6U,EAAMz7T,GAC0B,QAA/B1e,EAAK2vyC,EAAUuJ,kBAA+B,IAAPl5yC,GAAyBA,EAAG/2B,KAAK0m0C,EAAWjxxC,EAAMwvxC,EAAiB1l0C,EAC/G,EA2FI2w0C,OA1FS,SAAU3w0C,GACnB,IAAIw3B,EACJsuvB,IAC+B,QAA9BtuvB,EAAK2vyC,EAAUyJ,iBAA8B,IAAPp5yC,GAAyBA,EAAG/2B,KAAK0m0C,EAAWjxxC,EAAMwvxC,EAAiB1l0C,EAC9G,EAuFI+4hB,UAlDY,SAAU/4hB,GACtB,IAAIw3B,EACJ,OAAQx3B,EAAE0lB,KACN,IAAK,YACD1lB,EAAEymH,iBACFzmH,EAAEqjH,kBACgB,QAAlB8jtC,EAAU9ssC,IAAgBi1sC,IAAkBC,IAC5C,MACJ,IAAK,aACDvv0C,EAAEymH,iBACFzmH,EAAEqjH,kBACgB,QAAlB8jtC,EAAU9ssC,IAAgBk1sC,IAAmBD,IAC7C,MACJ,IAAK,YACDtv0C,EAAEymH,iBACFzmH,EAAEqjH,kBACFmstC,IACA,MACJ,IAAK,UACDxv0C,EAAEymH,iBACFzmH,EAAEqjH,kBACFostC,IACA,MACJ,IAAK,SACDzv0C,EAAEymH,iBACFzmH,EAAEqjH,kBACFrjH,EAAE2jH,SAAWistC,IAAoBF,IACjC,MACJ,IAAK,WACD1v0C,EAAEymH,iBACFzmH,EAAEqjH,kBACFrjH,EAAE2jH,SAAWkstC,IAAmBF,IAChC,MACJ,IAAK,OACD3v0C,EAAEymH,iBACFzmH,EAAEqjH,kBACFystC,IACA,MACJ,IAAK,MACD9v0C,EAAEymH,iBACFzmH,EAAEqjH,kBACF0stC,IAG0B,QAAjCv4yC,EAAK2vyC,EAAU0J,oBAAiC,IAAPr5yC,GAAyBA,EAAG/2B,KAAK0m0C,EAAWjxxC,EAAMwvxC,EAAiB1l0C,EACjH,EAMI8w0C,QAvDU,SAAU9w0C,GACpB,IAAIw3B,EAC4B,QAA/BA,EAAK2vyC,EAAU4J,kBAA+B,IAAPv5yC,GAAyBA,EAAG/2B,KAAK0m0C,EAAWjxxC,EAAMwvxC,EAAiB1l0C,EAC/G,EAqDI64hB,aAxFe,SAAU74hB,GACzB,IAAIw3B,EACiC,QAApCA,EAAK2vyC,EAAU6J,uBAAoC,IAAPx5yC,GAAyBA,EAAG/2B,KAAK0m0C,EAAWjxxC,EAAMwvxC,EAAiB1l0C,EACpH,EAsFI84hB,aArFe,SAAU94hB,GACzB,IAAIw3B,EACiC,QAApCA,EAAK2vyC,EAAU8J,uBAAoC,IAAPz5yC,GAAyBA,EAAG/2B,KAAK0m0C,EAAWjxxC,EAAMwvxC,EAAiB1l0C,EACpH,EAmFIkx0C,eAlFiB,SAAUlx0C,GAC3B,IAAIw3B,EACmC,QAAtCA,EAAK2vyC,EAAUgK,yBAAsC,IAAP35yC,GAAyBA,EAAG/2B,KAAK0m0C,EAAWjxxC,EAAMwvxC,EAAiB1l0C,EACtH,EAgFIox0C,eA/EiB,SAAUpx0C,GAC3B,IAAIw3B,EACmC,QAAtCA,EAAK2vyC,EAAUkK,yBAAsC,IAAP75yC,GAAyBA,EAAG/2B,KAAK0m0C,EAAWjxxC,EAAMwvxC,EAAiB1l0C,EACtH,EA6EIsx0C,cA5EgB,SAAUtx0C,GAC1B,IAAIw3B,EACkC,QAArCA,EAAK2vyC,EAAUoK,wBAAqC,IAAP/5yC,GAAyBA,EAAG/2B,KAAK0m0C,EAAWjxxC,EAAMwvxC,EAAiB1l0C,EACrH,EA0EI6ojB,WAzEa,SAAU7ojB,GACvB,IAAIw3B,EAC+B,QAAlCA,EAAK2vyC,EAAUqK,qBAAkC,IAAPh6yC,GAAyBA,EAAG/2B,KAAK0m0C,EAAWjxxC,EAAMwvxC,EAAiB1l0C,EAClH,EAuEI2ojB,YAtEc,SAAU3ojB,GACxB,IAAIw3B,EACgC,QAAnCA,EAAK2vyC,EAAUsK,sBAAmC,IAAPj6yC,GAAyBA,EAAG/2B,KAAK0m0C,EAAWjxxC,EAAMwvxC,EAAiB1l0C,EACnH,EAoEI0ojB,aAnEe,SAAU1ojB,GACzB,IAAIw3B,EACiC,QAApCA,EAAK2vyC,EAAUuK,uBAAoC,IAAPl6yC,GAAyBA,EAAG/2B,KAAK0m0C,EAAWjxxC,EAAMwvxC,EAAiB1l0C,EACpH,GAkEA,OAAOyw0C,CACX,CA+EwBkB,CAAoBnnzB,EAAKk7yB,GACzC+F,EAvER,WACI,IAAItE,EAAYN,KACZ52U,EAASmgV,KACThgV,EAAWs7U,KACX9osC,EAAQypsC,KAQZ,OAPmBpJ,EAAkBkE,GAC/Bl3U,EAAO/i0B,SACP61oC,EAAoBoE,GAChB/2U,EAASlj0B,SACT81oC,EAAiBmE,GACbvksC,EAAMsqD,cACNt+I,CAElB,CA0DuBgjyC,GACfC,EAAW/9zC,QAAQqzzC,EAAUqE,YAAiC,YAAnBrE,EAAU5+zC,OAEzD,IAAA45B,YAAU,WACN,IAAI3K,EACAkuyC,EAAgBwI,SAEfqC,EAAalC,YAEbwD,IAED,EAAAp0Y,EAAA,GAAU8yY,EAAalC,WAAY7jzB,KACN,QAA5Bhzf,EAAK84yC,EAAU1vyC,eAA4B,IAAPpJ,GAAyBA,EAAGm6U,QAEzE,GAAG,CACC4+9B,EAAalC,WACb7jzB,EACA8lzB,EACAuB,EACAnM,EAAgBwI,UAEpB,IAAIz9uC,EAnER,SAA0B02uC,EAAWzB,GACjC,IAAIhgkC,EAAa,CAACyhkC,EAAUzhkC,WAAW8kR,KAavC,OAZArqhB,OAAOgU,KAAKuxzC,GAAiB3/yC,SAAQ,SAAUmrF,GAC3C,IAAI4guC,EAAkB3K,EAAUd,oBAAoBn1tC,GACpD,GAAI4guC,EACApskC,EAAWhjQ,KAAKov0C,QAEf,GAjBb,SAA4B5guC,GACxB,OAAO/wG,OAAOod,OAAOouzC,IAAkB18zC,SAASiiG,EACpD,CAeiB6guC,CAAmB7guC,GAAW,CACnC,IAAI8guC,EAAoB7K,EAAUzhkC,WAAW,OAAO7iQ,OAAOquG,IACvD8guC,GACAtskC,EAAWhjQ,KAAKsv0C,EAExB,CACJ,IACOtskC,CACX,CAoDoBuskC,CAAiB9K,EAAWzB,GAAiBh4zC,KAAK,KAC9DwH,EAlDR,SAAqBiyzC,EAAWzB,GAC5B,IAAIxwzC,EAAQ2hB,EAAS,CAAC,EAAGswyC,EAAUzwpC,OAAO8zW,KAK1C,OAJArqhB,OAAOgU,KAAKuxzC,GAAiB3/yC,SAAQ,SAAUmrF,GAC3C,IAAI15E,EACJtiB,EAAQ2hB,EAASA,EAAS,CAAC,EAAG3hB,GAA6C,QAApCsiB,EAAK2vyC,EAAU+K,uBAAoC,IAAP16yC,OAAgB,EAASA,EAAG05E,GACnH,IACOh8F,CACX,CA2CgBi9zC,CAAYhL,EAAWzB,GAC/B9w6B,EAAW9gZ,QAAS4xzC,EAAgBwI,UAAY/G,EAAUiL,iBAC1D1M,EAAgBvhzB,QAChBkuzB,EAAgH,QAAzFnszC,EAAqC,QAA/BmoC,EAAK84wC,EAAUp4kC,kBAA+B,IAAP1gM,OAAgB,EAASA,EAAG68wC,kBAA+B,IAAPhlzC,EAAgBA,EAAKglzC,GAE7IoH,EAAW,CACXp9zC,MAAOA,EACPu7E,UAAWA,EACX5vD,UAJY,IAAA4/N,KAAI4xkC,EAAqB,CAAEn8xC,KAAMs0e,EAAKu8yB,aAAcA,EAAcrB,gBAAiBA,IAK/FrizB,KAAM,YAENkvzB,EAAgBhC,EAAapB,cAC7B,EAAA1xY,EAAA,GAAU8yY,EAAapB,YAAa3kzB,KACnCk7yB,EAAgBwI,QACjBvptB,EAAY4rtB,EAAalC,aAAc,EAAA5wY,EAAA,GAAU8yY,EAAalC,WAAY7jzB,GAC1EgozB,EAAc37yC,EAASA,EAASA,EAAS,CAAC,EAAGy7yC,KAAY96yC,EAAK,CAAE25U,SAAUu09B,EAAgBv09B,SAAUkyK,KAAM,aAAiB,iBAAmBqizB,EAAgBx4oC,SAAU11J,EAAG0vf,SAAWy9F,GAAa4ttB,EAAgB,GAAK,EAAG/6yC,IAAMi5yC,GASrO,MARgB,CACZoB,SAAUA,EACVj96B,SAAUA,EACV8w6B,gBAAiBA,EACjB+F,aAAcA,EACd+G,YAAaA,EACbF,SAAUA,EAGlB,CAMA,SAASG,GAAI3kyC,GACT,IAAIwiyC,GAAY,IAAAnxyC,QAAO,MACnBuzyC,EAAYrC,GAAaviyC,EAAMoI,KAAMpI,EAAMi5xC,aAAcuJ,GAC7D,OAAIoC,EAAU996B,UACH,IAAAn0J,KAAI,MAAO,CAAE4iR,KAAM,aAEzBqvzB,EAAUb,UAGR,IAAApxkC,KAAIopkC,GAAQhzyC,EAAS,CAAEtrB,KAAM,MAAOk3B,IAAK6tyC,GAAaoC,EAAUF,eAF5D,IAAA/xkC,KAAI,MAAO5pO,EAAS,CAAC,EAAG67yC,EAAUJ,UAGjD,CAMA,SAASK,GAAW7kyC,GAChB,IAAIw3xC,EAAax3xC,EAAM88G,OAAQx2B,EAAQtmF,EAAMsmF,MACzC58F,EAAKqvyC,KAAgB+L,EAAoBp7yC,EAAGo7yC,kBAAmBl8pC,EAASl/I,EAAGk/I,OAAQgvF,EAAaluO,EAAGkuO,WAAYgoM,EAASl2a,EAAGk2a,OAAQo43B,EAAkBtuyC,EAAGi3D,OAAOq3uC,gBAC/JvsuC,GAAU8ruC,EADyL7tyC,EAAGytyC,WAAWI,kBACtLr/xC,OAAOs/xC,GAAa,CAAE533B,OAAQA,IAC7D,IAAKkl4B,EACD,OAAQ,IAAAnykC,KAAI,OAAQ,CAAEhwK,UAAWi1K,EAAW8+jC,WAAYtvzC,MAAOwhK,EAAO8tpC,WAAY3jyC,SAAU04D,IAEhG,IAAIr3F,EAAQ4j0C,EAAgB9/xC,OAAOs/xC,GAAa,CAAE533B,OAAQA,IAI1D,OAAQ,IAAAjtM,KAAIopkC,GAAQ,CAAEt+zC,KAAM,cAAe,aAAcrJ,EAAOuuF,UAAWi1K,EAAW8+jC,WAAYtvzC,MAAOwhK,EAAO8tpC,WAAY3lyC,QAH1G,SAAU7+B,GACxB4y0C,EAAkBtN,EAAYlxsC,EAAOp0H,EACzC,EACkJ6gC,SAAU04D,GAChK,CAGA,SAASs5uC,GAAI/kyC,GACT,IAAItW,EAAI62B,EAIJykxC,EAHA5szC,EAAK2gzC,KAAgBnwpC,EAASxwJ,EAAGwwJ,OAAQgvF,EAAax/O,EAAGw/O,WAAYklkC,EAAiB1kzC,EAAG0kzC,eAAgB77kC,EAAa7oO,EAAG6oO,WACzHgklC,EAAiG,QAAjFv7yC,EAAKu3N,aAA+C,EAASA,EAAW0jlC,WAAwB,IAAPj7yC,EAAgBA,EAAKi7yC,GAC9HO,EAA+G,QAAxF3kxC,EAAK0gM,aAA+C,EAASA,EAAW4jlC,kBAA+B,IAAPtkxC,EAAgBA,EAAKskxC,GAKhJ,OAHI/H,IACAkI,GAAkB,IAAArykC,KAAI,KAAM,CAAEhwK,UAAWi1K,EAAW0jG,KAAMl0V,MAAOwhK,EAAO0yL,KAAMvoU,UAAU,IAAA4/N,KAAIuykC,EAAqB,CAAEporC,OAAQ98G,EAAMw3xC,WAAYlxsC,MAAOtmF,EAAMsmF,YAEtJ,IAAAwsR,MAAK,KAAM,CAAEnwT,UAAWi1K,EAAW7hI,IAAK3uH,MAAOwhK,EAAO7yC,IAAKhjG,SAAU,CAACiyyC,EAAgBhlyC,EAAMsmF,MAAMlkG,KAAI,SAAUgmB,GAAQ,OAAQ,IAAAuqN,KAAI,KAAM,CAAEhwK,UAAWi1K,EAAW0jG,KAAMl0V,MAAOwhK,EAAO0yL,KAAMi6K,KAAM,eAAgBxif,UAAU,IAAA4/N,KAAIsykC,EAAc,CAAEhM,aAAcj5xC,EAAMi5xC,aAAc7wxC,KAAMA,KCxuDrR,SAAqB4/4B,GAElC,OADA,EAAA0B,EAAA,GAAa,EAAGv27B,WACTyC,KAAKyK,MCFC,SAAiB2n7B,GAI9B,OAHA,EAAA0B,EAAA,GAAa,EAAGv27B,YACL,EAAAy47B,EAAA,GAAO5D,GACGxt5B,SAEvB,CDHoBA,CAAQwt5B,GAAa,IACzC,CDquD+Sm9Y,CAAY/8xC,GAAS,MACpU,CAGA,SAASg9xC,GAAiBvM,EAAUjtY,EAAQ1v6B,GASxC,IARA,IAAImpzC,GAAUnpzC,aAAyC,EAASA,EAAQ6gzC,SAClEtI,EAAa7oY,GACb4oY,EAAU5oY,EAAQ1v6B,GACpBopzC,GAAYppzC,aAAyC,EAASA,EAAQ6gzC,UACpE,EAAA1mY,EAAA,GAAewiY,IACf,EAAA1pY,EAAA,GAAY0pY,EAAU38yC,GACxBqpzC,GAAU,OAAyBF,EAAQC,GAC3C7pzB,EAAO,GACF9nhB,EAAI,EAAGA,GAAK4x0C,EAAS5x0C,IAC1B8nhB,EAAK7mhB,MAAK,EAAAm17B,EAAA,GAAQu7Y,EAAU3x0C,IAiBhC,OAfmB8nhB,EAAKh1f,QAAO,SAAUlQ,EAAQ6xB,GAC7C,IAAIovxC,GAAct7yC,aAAyC,EAASA,EAAQ6gzC,SACtEnI,EAAWxsxC,IACX,EAAA8m5B,EAAA,GAAQ9m5B,EAAMlsB,GAChBspzC,EAAejvzC,EAAOkjB,MAAK,SAAUvlC,GAAS,OAAOA,EAAMsj0C,aAAeA,CAAY,IAC1F,OAAIgO,GACAA,EAAal/sC,MAAM1xH,KAAKwzC,GACjB7xB,IAEXA,EAAO3hB,KAAK,CACR4i0C,WAAYA,EACZlxsC,MAAO,CAACl+E,KAEL7xB,EACX,GAAG,GAEP,CAuBA,SAASkvzC,GAAMzlyC,GACX,IAAItW,EAAI62B,EAAInoC,EACRg2C,EAAK2qwC,KAAgBn53B,EAASxxY,EAAGwxY,OAAQhoM,EAAaxpM,EAAGwpM,WAAYhvF,EAASx6G,EAAGw6G,OAAQ88pC,EAAWt3wC,EAAGs3wC,SAAUC,EAAav3wC,EAAGu3wC,WAAY1klC,EAAa7yL,EAAG6yL,WAAY6lsB,EAAe143B,EAAG043B,aAAc8B,EAAwBx63B,EAAGw63B,sBAAuBm0Y,EAAU3uwC,EAAG2uwC,QACxQjwY,EApBR,SAAuBrwa,EAAOvggB,GAC1B,IAAI0pzC,EAAeR,GAAiBpR,EAAav3yB,IAAQ,EAAAsva,EAAA,GAAWtva,GAAQvggB,GAC5E,GAAIA,aAAyC,EAASA,EAAQ2pzC,cAAe,CAEzE,IAAIC,EAAiBjR,EAAgBp4yB,EAAOvggB,GAC5C,GAAI4pzC,EAAiB,EAAG,CACpB,IAAIl0Y,EAAWg0Y,EAAaA,EAAaxy0C,OAAS,GAC9C2y0C,EAAWn0Y,EAAStr0B,MAAMsr0B,EAAStr0B,MAAMlzH,OAAS,GAClDw47B,GAAS,EAAAtB,EAAA,GAASy7Y,EAAU,EAAID,GAChCE,EAAaZ,IAAiB,EAAA96Y,EAAA,GAASy7Y,EAAU,GAAIn6Y,EAAQ1v6B,GACjE0pzC,EAAahx0C,KAAKtB,MAAMsy0C,EAAcI,EAC1C,CACJ,CACA,OAAOJ,CACX,CAMgBK,CAAcjmyC,EAAMi5xC,aAAc,CAC1C4M,cAAe7/zC,QAAQ2/zC,GACvB5I,QAASA,EACTn93B,OAAQA,EACRknf,aAAcA,EACd8B,sBAAuBA,IAEvBs9Y,EAAmG,QAAlFx8yC,EAAKu3N,aAA+C,EAASA,EAAWi8kC,YAAyB,IAAPxzyC,EAAgBA,EAAKwzyC,GAChIiJ,EAAiG,QAAjF5lxC,EAAK0gM,aAA+C,EAASA,EAAW8jlC,WAAwB,IAAPxkxC,EAAgBA,EAAKwkxC,GAC9HqB,EAAuG,QAApFhuzC,EAAK6oO,aAA+C,EAASA,EAAW27kC,cAA2B,IAAPxkzC,EAAgBA,EAAKwkzC,GACxI,OAAQ,IAAA9p7B,MAAK,QAAS,CAAEx0X,GAAI0hB,EAAM1hB,GAAIqkE,UAAWi1K,EAAWtiH,MAAOluI,MAAOwhK,EAAOtzB,MAAOigY,KAAM,OAAQ,kBAAmBv1e,EAAM,mBAAoBjN,SAAU,EAAE2yyC,IAAY,IAAA/ykC,KAAIuzkC,EAAe,CAAC,IAAI,IAAAvzkC,KAAI,QAAS,CAAEhwK,UAAWi1K,EAAWs+jC,MAAO9uzC,MAAOwhK,EAAOstpC,MAAOnjyC,SAAU+55B,EAAM1q6B,KAAI,SAAU4ywB,GAAQ,OAAQ,IAAAriiB,KAAIwzkC,EAAc,CAAElN,aAAcj5xC,EAAMi5xC,aAAc3ysC,MAAO0uqB,EAAK1uqB,MAAOkxsC,WAAYxiiB,EAAKwiiB,YAAcxiiB,EAAKwiiB,WAAc,OAAO,IAAA7kkC,KAAIyzkC,EAAiB,CAAEnN,aAAcj5xC,EAAMi5xC,iBACne,CAkGA,IAAIoN,GA5B4B,oBAAXpx0C,QACbA,OAAOiD,UACPjD,OAAOiD,SAASmE,cA0BsB,EAAAqtP,gBAAkB,EAAAr1N,UAC5DiyyC,IAAwB,EACxBhozC,GAAK,EACT,SAASiozC,KACL,MAAO,oBAAoBxx0C,SAASupB,GACxC,CA+BA,SAASkozC,GAAMxmyC,GACX,IAAItW,EACA62B,EACA84wC,EAAYN,KACZxssC,EAAM8ssC,EAAU9ssC,IAAKqrI,EAAayhkC,EAAUzhkC,WAAYhvF,EAASywpC,EAAUzwpC,OAAQq4E,EAAao4kC,EAAUp4kC,WAC1G05kC,EAAgBa,KAAgBb,cAChC8L,EApCR,SAAeC,GAGX,IAAIh9yC,EAGAi9yC,EAAYD,QAA+CA,EAAcJ,GAAwBC,KAAU,KAC3GhmxC,GAAK,IAAAsqM,UAAS87kC,GAAYrozC,EAAKiiC,EAAG,GAAIomgB,EAAQpmgB,EAAG,GAmBrD,OAlBA8lxC,IAA0B,WACX,OAAP/nzC,GAKAqoiB,EAAM4/wB,KAGd,GAAG,KACH,IAAAlyyC,YAAU,YACwB,IAA1BiyyC,KAIAA,IAAwB,EAEhC,GAAG,IAC8E,QAAzE58yC,EAAKg9yC,QAA+CA,EAAapozC,SAAuB,IAAPoL,EAAgBA,OAAKoX,CAClH,CASoB85rC,CAAMy+F,EAAU/6yC,GAAK,GAAGvpB,OAAOsk0C,EAAU/6yC,GAAI,KAAKvpB,OAAOirC,EAAM02lB,mBAAgB51lB,GAC3F8lyC,EAAUvN,EAAU/6yC,GAClB,GAAGvpB,OAAOsk0C,EAAU/6yC,GAAI,UAAUvpB,OAAOirC,EAAM02lB,mBAC/C51lB,EACF6hD,EAAY,CAACi1K,EAAW6kR,OACxBr1gB,EAAQwhK,EAAO6zW,MACfy8pB,EAAiC,IAAvBl5oC,EAAM02lB,aAChB4lG,EAAQt8rB,EAAM02lB,eAAiBiksB,EAAcvn0C,OAAS,EACtDwlrC,GAAYM,IAAY58c,EAChB,QAAR/vmB,IACuB+vmB,GAAvB5ysB,EAAK,CAACwvpC,EAAS58c,IAAmB,GAAI48c,EAAUxvpC,EAAG,IAEnDwvpC,IACAv2lC,EAAU/tF,KAAKgjQ,EAAW69jC,eAC1BruzC,EAAQ2hB,EAASA,EAAS,CAAC,EAAG3hB,GAAQwhK,EAAO6spC,gBAE7Cn5lB,IACA35oB,EAAU/tF,KAAKgjQ,EAAW89jC,aAC1BtuzC,EAAQ2hB,EAASA,EAAS,CAAC,EAAG3hB,GAAQwhK,EAAO8spC,cAE7C98I,IACAj2lC,EAAU/tF,KAAKgjQ,EAAW+9jC,iBAC1BvuzC,EAAQ2hB,EAASA,EAAS,CAAC,EAAG3hB,GAAQwhK,EAAO+spC,kBAEjD,IAAIkR,EAAyG,QAArFtmxC,EAAK0gM,aAA+C,EAASA,EAAW4viB,eAA4B,IAAPtwuB,EAAgBA,EAAKswuB,GAC1I,OAAQ,IAAA/9Y,MAAK,MAAO,CAAEnwT,UAAWA,EAAU/iF,KAAK,KAAMwH,MAAOA,EAAO2rB,SAAU,EAAC,IAAA4/N,KAAIk0kC,EAAkB,CAAEvozC,GAAImozC,EAAWxN,aAAcj5xC,EAAMi5xC,aAAcvisB,aAAc12lB,EAAM02lB,gBAAiB,IAAA/jY,KAAI8ykC,GAAO,CAAEnnzC,GAAIsozC,EAAS,kBAAmBH,EAAWxN,aAAcj5xC,EAAMi5xC,iBAAoBj5xC,EAAM02lB,aACvS,CAKA,SAASowsB,GAAO9myC,GACZ,IAAItW,EAAKqvyC,KAAgBnhkC,EAAaluO,EAAGkuO,WAAYhvF,EAASl/I,EAAGk/I,OACjE,OAAQ,IAAA+pF,KAAI,MAAO,CAAEhwK,UAAWi1K,EAAW4jR,OAAQp0gB,MAAOwhK,EAAO4yW,OAAQzof,SAAUiN,EAAMjN,UAC7F,CAGA,SAASg0yC,GAAKr9yC,GACV,IAAI62B,EAAInoC,EACJ0mG,EAAep1F,EAAGo1F,aAClBu6sC,EAAYN,KACZ0J,EAAeP,KACfrB,EAAarF,KACbptwC,GAAK,IAAAy8L,WAAS,GAAQm8kC,EAAkB54wC,EAAG,GAAI64wC,EAAqB74wC,EAAG,IAE3E,IAAA/5B,YAAU,WACDglyC,EAAU6N,cAEVzE,EAAapB,cAEd2F,IAEJvE,EAAa5+9B,MAAM4+9B,EAAapB,aAChC4F,GAAmB,IACvB,GAAG,CACC5N,EAAU6N,aACVF,EACAvE,EAAa5+9B,MACb4+9B,EAAapB,YACboB,IAGJ,IAAI7qkC,EAAa,CAACyhkC,EAAUzhkC,WAAW10G,KAAMm2qC,EAAU12uC,WACnD02uC,EAAUb,eAAiB,GAC3B5gkC,EAAWhjQ,KAAKyk0C,EAAUzhkC,WAAWy9jC,iBAErCgE,EAAUyD,gBACVllkC,EAAWhjQ,KAAKyk0C,EAAUzhkC,WAAW09jC,iBAEzC,IAAIluzC,EAAQ2hB,EAASA,EAAS,CAAC,EAAGswyC,EAAUzwpC,OAAO1lB,MAAOm2qC,EAAUjyzC,OAChE+/zC,EAAiB900C,OAAOgU,KAAKy4G,GAC5Bl/F,QAAO,SAAUhI,GAAO,OAAOA,EAAI1T,WAAW,QAAU,IACxDuiB,QAAO,SAAUy5gC,EAAOtohC,GACzB,IAAI8R,EACJ,OAAOX,EAASA,EAAS,CAAC,EAAGm3gC,KAASx2gC,EAAK,CAAC,GAAM9R,GAAOknG,EAAalnG,GAAM8R,GAChF,GAAG,CAAC,GACA09yC,EAA2G,QAAxFhvzC,EAAwC,QAAlCmoC,EAAKu+D,EAAamiI,kBAA+B,IAAP1gM,OAAgB,EAASA,EAAGumxC,cAA2B,IAAP1uzC,EAAgBA,EAAK0uzC,GAC5I,OAAQ,IAAAn0kC,KAAI,MAAO5pO,EAAS,CAAE45D,UAAWi1K,EAAWh4P,KAAK,KAAMwH,MAAOA,EAAOmlH,IAAK8ssC,EAAU9ssC,IAAKjuG,GAAI+6yC,EAAU/6yC,GAAI+J,MAAOy2F,EAAaz2F,MAAO+5I,MAAOtjD,EAAasjD,MAAO690B,KAAMnh4B,EAAamh4B,MAAQknV,EAAgB,CAAEp0yC,UAAU,IAAA4/N,KAAIy0kC,EAAiB,CAAEr0yC,SAAU8tyC,EAAWlG,cAAcv4yC,KAAI,SAAUq6f,EAAO9ohB,GAAK,OAAQ,IAAAg/P,KAAI6zkC,GAAO,CAAE9vsB,aAAc/ioB,EAAGsl0C,aAAcx8yB,GAAS9ohB,EAAK,QAC1X,CAGA,SAAS0z0C,GAAarnyC,GAClB,IAAIjN,EAAWiN,EAAMjN,SAAU+rF,EA7/DnC,SAAgBjrH,EAAG3B,GACf,IAAIC,EAAI,CAAC,EACT,IAAK,IAAI0D,KAAKhC,EAAOxB,OAAOI,UAAUC,eAAeC,KAAKkB,EAAGgC,IAAM3D,EAAEqB,QAAQsC,GAAK,IAC9E1D,EAAE0D,GAAKhC,EAAEgC,IACb,GAAS,MAALhC,GAAqD,mBAAjCxB,OAAOmB,sBACtB,KAAIG,EAAI,EAAb,IAAgBkC,EAAIxD,OAAOmB,sBAAsBK,GAAIF,EAAIkC,EAAEzC,OAAQO,IAC3DzB,EAAEqB,QAAQsC,EAAElC,IAAM,GAAKtB,OAAOI,UAAUgB,qBAAqBd,KAAKkB,EAAGgC,EAAElC,MACvExB,EAAE0D,EAAElC,IAAME,EAAEgC,EAAElC,IAF4B,CAItD,OAAOxB,CACX,CAm/DkD69Z,CAAOhwX,EAAO,CAAC,aAC7D,OAAQ,IAAA2yN,KAAIylkC,EAAmB,CAAEt5sC,aAAcA,EAAc/rF,UAAU,IAAA4/N,KAAIonkC,GAAoB,CAAEhnyC,UAAU,IAAA4/N,KAAIyvkC,GAAsB,CAAEtjtC,aAAcA,EAAc/rF,UAAU,IAAA4/N,KAAI2qkC,GAAwB,CAAEx+sC,aAAcA,EAAc/rF,UAAU,IAAA4/N,KAAIorkC,GAAqB,CAAEj/sC,aAAcA,EAAc/rF,UAAU,IAAA4/N,KAAIsskC,GAAmB,CAAElsyC,UAAU,IAAA4/N,KAAIiukC,GAAe,CAAE7tyC,SAAUA,eACxX,CAyFA,SAASu0yC,GAAUtnyC,GACf,OAAQ,IAAA2yN,KAAI00kC,GAAct+yC,EAAS,CAAC,EAAGiX,EAAO,CAAEjN,UAAU,IAAA4/N,KAAIo0kC,GAAM,CAAEjotC,aAAc9+E,MACxF,gCGlnEa,IAAIjc,EAAG,EAAQ,OAAS,SAASxuB,EAAExB,GAAG,IAAI,IAAIsC,EAAE,yDAAyDtC,EAAEH,EAAE,EAAEA,EAAET,UAAUC,OAAOQ,IAAIyC,GAAG,WAAWgsB,mBAAmBlvB,UAAUS,IAAI,MAAM,yBAAyBG,EAAE,WAAWsC,EAAE,gHAAgH,CAChW,IAAIR,EAAExD,OAAOI,UAAUC,eAAeqyB,EAAG,8VAA8VG,EAAG,CAAC,EAAEjE,EAAG,CAAC,EACjZ,SAASqJ,EAAGv2B,GAAG,QAAG8B,EAAElD,KAAKsuB,EAAGltB,KAAe8B,EAAElD,KAAKuyB,EAAGnxB,KAAegxB,EAAG3mB,KAAKrK,GAAUktB,EAAGltB,IAAG,GAAGmxB,EAAGnxB,IAAG,GAAS,GAAE,CAAC,SAASjB,EAAEiB,EAAEsC,EAAEzC,EAAE8B,EAAED,EAAEvD,EAAEgD,GAAGnC,KAAKw00C,gBAAgB,IAAIlx0C,GAAG,IAAIA,GAAG,IAAIA,EAAEtD,KAAKywF,cAAc9tF,EAAE3C,KAAKy00C,mBAAmB/x0C,EAAE1C,KAAK000C,gBAAgB7z0C,EAAEb,KAAKg8M,aAAah7M,EAAEhB,KAAKuM,KAAKjJ,EAAEtD,KAAK200C,YAAYx10C,EAAEa,KAAK400C,kBAAkBzy0C,CAAC,CAAC,IAAI/C,EAAE,CAAC,EAC7U,uIAAuIwF,MAAM,KAAKsgB,SAAQ,SAASlkB,GAAG5B,EAAE4B,GAAG,IAAIjB,EAAEiB,EAAE,GAAE,EAAGA,EAAE,MAAK,GAAG,EAAG,IAAG,CAAC,CAAC,gBAAgB,kBAAkB,CAAC,YAAY,SAAS,CAAC,UAAU,OAAO,CAAC,YAAY,eAAekkB,SAAQ,SAASlkB,GAAG,IAAIsC,EAAEtC,EAAE,GAAG5B,EAAEkE,GAAG,IAAIvD,EAAEuD,EAAE,GAAE,EAAGtC,EAAE,GAAG,MAAK,GAAG,EAAG,IAAG,CAAC,kBAAkB,YAAY,aAAa,SAASkkB,SAAQ,SAASlkB,GAAG5B,EAAE4B,GAAG,IAAIjB,EAAEiB,EAAE,GAAE,EAAGA,EAAEuO,cAAc,MAAK,GAAG,EAAG,IAC1e,CAAC,cAAc,4BAA4B,YAAY,iBAAiB2V,SAAQ,SAASlkB,GAAG5B,EAAE4B,GAAG,IAAIjB,EAAEiB,EAAE,GAAE,EAAGA,EAAE,MAAK,GAAG,EAAG,IAAG,8OAA8O4D,MAAM,KAAKsgB,SAAQ,SAASlkB,GAAG5B,EAAE4B,GAAG,IAAIjB,EAAEiB,EAAE,GAAE,EAAGA,EAAEuO,cAAc,MAAK,GAAG,EAAG,IACxb,CAAC,UAAU,WAAW,QAAQ,YAAY2V,SAAQ,SAASlkB,GAAG5B,EAAE4B,GAAG,IAAIjB,EAAEiB,EAAE,GAAE,EAAGA,EAAE,MAAK,GAAG,EAAG,IAAG,CAAC,UAAU,YAAYkkB,SAAQ,SAASlkB,GAAG5B,EAAE4B,GAAG,IAAIjB,EAAEiB,EAAE,GAAE,EAAGA,EAAE,MAAK,GAAG,EAAG,IAAG,CAAC,OAAO,OAAO,OAAO,QAAQkkB,SAAQ,SAASlkB,GAAG5B,EAAE4B,GAAG,IAAIjB,EAAEiB,EAAE,GAAE,EAAGA,EAAE,MAAK,GAAG,EAAG,IAAG,CAAC,UAAU,SAASkkB,SAAQ,SAASlkB,GAAG5B,EAAE4B,GAAG,IAAIjB,EAAEiB,EAAE,GAAE,EAAGA,EAAEuO,cAAc,MAAK,GAAG,EAAG,IAAG,IAAIwmB,EAAG,gBAAgB,SAASjE,EAAG9wB,GAAG,OAAOA,EAAE,GAAG4vD,aAAa,CACxZ,0jCAA0jChsD,MAAM,KAAKsgB,SAAQ,SAASlkB,GAAG,IAAIsC,EAAEtC,EAAEyL,QAAQspB,EACzmCjE,GAAI1yB,EAAEkE,GAAG,IAAIvD,EAAEuD,EAAE,GAAE,EAAGtC,EAAE,MAAK,GAAG,EAAG,IAAG,2EAA2E4D,MAAM,KAAKsgB,SAAQ,SAASlkB,GAAG,IAAIsC,EAAEtC,EAAEyL,QAAQspB,EAAGjE,GAAI1yB,EAAEkE,GAAG,IAAIvD,EAAEuD,EAAE,GAAE,EAAGtC,EAAE,gCAA+B,GAAG,EAAG,IAAG,CAAC,WAAW,WAAW,aAAakkB,SAAQ,SAASlkB,GAAG,IAAIsC,EAAEtC,EAAEyL,QAAQspB,EAAGjE,GAAI1yB,EAAEkE,GAAG,IAAIvD,EAAEuD,EAAE,GAAE,EAAGtC,EAAE,wCAAuC,GAAG,EAAG,IAAG,CAAC,WAAW,eAAekkB,SAAQ,SAASlkB,GAAG5B,EAAE4B,GAAG,IAAIjB,EAAEiB,EAAE,GAAE,EAAGA,EAAEuO,cAAc,MAAK,GAAG,EAAG,IACldnQ,EAAEy10C,UAAU,IAAI900C,EAAE,YAAY,GAAE,EAAG,aAAa,gCAA+B,GAAG,GAAI,CAAC,MAAM,OAAO,SAAS,cAAcmlB,SAAQ,SAASlkB,GAAG5B,EAAE4B,GAAG,IAAIjB,EAAEiB,EAAE,GAAE,EAAGA,EAAEuO,cAAc,MAAK,GAAG,EAAG,IAC5L,IAAIlN,EAAE,CAAC6+P,yBAAwB,EAAGC,aAAY,EAAGC,mBAAkB,EAAGC,kBAAiB,EAAGC,kBAAiB,EAAGC,SAAQ,EAAGC,cAAa,EAAGC,iBAAgB,EAAGC,aAAY,EAAG7pB,SAAQ,EAAG8pB,MAAK,EAAGC,UAAS,EAAGC,cAAa,EAAGC,YAAW,EAAGC,cAAa,EAAGC,WAAU,EAAG27G,UAAS,EAAG17G,SAAQ,EAAGC,YAAW,EAAGC,aAAY,EAAGC,cAAa,EAAGC,YAAW,EAAGC,eAAc,EAAGC,gBAAe,EAAGC,iBAAgB,EAAG5d,YAAW,EAAGkwlC,WAAU,EAAG9qlC,YAAW,EAAGp+G,SAAQ,EAAGqH,OAAM,EAAG4vH,SAAQ,EAAGC,SAAQ,EAAGC,QAAO,EAAGnkO,QAAO,EAAGe,MAAK,EACzfsjO,aAAY,EAAGC,cAAa,EAAGC,aAAY,EAAGC,iBAAgB,EAAGC,kBAAiB,EAAGC,kBAAiB,EAAGC,eAAc,EAAGjkB,aAAY,GAAIrsN,EAAG,CAAC,SAAS,KAAK,MAAM,KAAK3zB,OAAOgU,KAAKjR,GAAG6iB,SAAQ,SAASlkB,GAAGiyB,EAAG/N,SAAQ,SAAS5hB,GAAGA,EAAEA,EAAEtC,EAAE6X,OAAO,GAAG+3C,cAAc5vD,EAAEs2B,UAAU,GAAGj1B,EAAEiB,GAAGjB,EAAErB,EAAE,GAAE,IAAG,IAAIuuB,EAAG,UACnS,SAAStsB,EAAEjC,GAAG,GAAG,kBAAmBA,GAAG,iBAAkBA,EAAE,MAAM,GAAGA,EAAEA,EAAE,GAAGA,EAAE,IAAIsC,EAAEisB,EAAGnd,KAAKpR,GAAG,GAAGsC,EAAE,CAAC,IAASX,EAAL9B,EAAE,GAAK6B,EAAE,EAAE,IAAIC,EAAEW,EAAE0Z,MAAMra,EAAE3B,EAAEX,OAAOsC,IAAI,CAAC,OAAO3B,EAAE+X,WAAWpW,IAAI,KAAK,GAAGW,EAAE,SAAS,MAAM,KAAK,GAAGA,EAAE,QAAQ,MAAM,KAAK,GAAGA,EAAE,SAAS,MAAM,KAAK,GAAGA,EAAE,OAAO,MAAM,KAAK,GAAGA,EAAE,OAAO,MAAM,QAAQ,SAASZ,IAAIC,IAAI9B,GAAGG,EAAEs2B,UAAU50B,EAAEC,IAAID,EAAEC,EAAE,EAAE9B,GAAGyC,CAAC,CAACtC,EAAE0B,IAAIC,EAAE9B,EAAEG,EAAEs2B,UAAU50B,EAAEC,GAAG9B,CAAC,CAAC,OAAOG,CAAC,CAAC,IAAI8uB,EAAG,WAAWwC,EAAG,OAAOi5tC,EAAG9rvC,MAAMkS,QAAQ,SAASpO,EAAEvC,EAAEsC,GAAG,MAAM,CAACyx0C,cAAc/z0C,EAAE+ltB,cAAczjtB,EAAE,CAC5F,IAAI4tB,EAAG,IAAIvG,IACnZ,SAASyE,EAAGpuB,EAAEsC,EAAEzC,GAAG,GAAG,iBAAkBA,EAAE,MAAM2mB,MAAMhlB,EAAE,KAAU,IAAI,IAAIG,KAAbW,GAAE,EAAgBzC,EAAE,GAAGiC,EAAElD,KAAKiB,EAAE8B,GAAG,CAAC,IAAID,EAAE7B,EAAE8B,GAAG,GAAG,MAAMD,GAAG,kBAAmBA,GAAG,KAAKA,EAAE,CAAC,GAAG,IAAIC,EAAEnC,QAAQ,MAAM,CAAC,IAAIrB,EAAE8D,EAAEN,GAAGD,EAAEO,GAAG,GAAGP,GAAG2vB,OAAO,KAAK,CAAClzB,EAAEwD,EAAE,IAAIR,EAAE+uB,EAAG/tB,IAAIhE,QAAG,IAASgD,IAAOA,EAAEc,EAAE9D,EAAEsN,QAAQqjB,EAAG,OAAOvgB,cAAc9C,QAAQ6lB,EAAG,SAASpB,EAAGjlB,IAAI9M,EAAEgD,IAAxEhD,EAAEgD,EAA8EO,EAAE,iBAAkBA,EAAE,IAAIA,GAAGI,EAAElD,KAAKyC,EAAEM,GAAG,GAAGD,EAAEA,EAAE,KAAKO,GAAG,GAAGP,GAAG2vB,OAAO,CAAC/uB,GAAGA,GAAE,EAAGtC,EAAEa,KAAK,WAAW1C,EAAE,IAAIuD,IAAI1B,EAAEa,KAAK,IAAI1C,EAAE,IAAIuD,EAAE,CAAC,CAACY,GAAGtC,EAAEa,KAAK,IAAI,CAC7c,SAASoC,EAAEjD,EAAEsC,EAAEzC,EAAE8B,GAAG,OAAO9B,GAAG,IAAK,QAAkB,YAAVuuB,EAAGpuB,EAAEsC,EAAEX,GAAU,IAAK,eAAe,IAAK,iBAAiB,IAAK,YAAY,IAAK,iCAAiC,IAAK,2BAA2B,OAAO,KAAK,EAAE9B,EAAER,SAAS,MAAMQ,EAAE,IAAI,MAAMA,EAAE,IAAI,MAAMA,EAAE,IAAI,MAAMA,EAAE,GAAG,GAAmC,QAAhCyC,EAAElE,EAAEO,eAAekB,GAAGzB,EAAEyB,GAAG,MAAc,CAAC,cAAc8B,GAAG,IAAK,WAAW,IAAK,SAAS,OAAO,IAAK,UAAU,IAAIW,EAAEkx0C,gBAAgB,OAAyB,OAAlB3z0C,EAAEyC,EAAEmtF,cAAqBntF,EAAEiJ,MAAM,KAAK,EAAE5J,GAAG3B,EAAEa,KAAK,IAAIhB,EAAE,OAAO,MAAM,KAAK,GAAE,IAAK8B,EAAE3B,EAAEa,KAAK,IAAIhB,EAAE,QACpf,IAAK8B,GAAG3B,EAAEa,KAAK,IAAIhB,EAAE,KAAKoC,EAAEN,GAAG,KAAK,MAAM,KAAK,EAAE2pC,MAAM3pC,IAAI3B,EAAEa,KAAK,IAAIhB,EAAE,KAAKoC,EAAEN,GAAG,KAAK,MAAM,KAAK,GAAG2pC,MAAM3pC,IAAI,GAAGA,GAAG3B,EAAEa,KAAK,IAAIhB,EAAE,KAAKoC,EAAEN,GAAG,KAAK,MAAM,QAAQW,EAAEqx0C,cAAchy0C,EAAE,GAAGA,GAAG3B,EAAEa,KAAK,IAAIhB,EAAE,KAAKoC,EAAEN,GAAG,KAAK,MAAM,GAAG40B,EAAG12B,GAAG,CAAC,cAAc8B,GAAG,IAAK,WAAW,IAAK,SAAS,OAAO,IAAK,UAAU,GAAgC,WAA7BW,EAAEzC,EAAE0O,cAAcxN,MAAM,EAAE,KAAgB,UAAUuB,EAAE,OAAOtC,EAAEa,KAAK,IAAIhB,EAAE,KAAKoC,EAAEN,GAAG,IAAI,CAAC,CACpY,SAASK,EAAEhC,EAAEsC,EAAEzC,GAAG,GAAG,MAAMyC,EAAE,CAAC,GAAG,MAAMzC,EAAE,MAAM2mB,MAAMhlB,EAAE,KAAK,GAAG,iBAAkBc,KAAK,WAAWA,GAAG,MAAMkkB,MAAMhlB,EAAE,KAAgB,OAAXc,EAAEA,EAAE0x0C,SAA6Bh00C,EAAEa,KAAK,GAAGyB,EAAE,CAAC,CACrK,SAASyvB,EAAG/xB,EAAEsC,EAAEzC,EAAE8B,GAAG3B,EAAEa,KAAKgD,EAAEhE,IAAI,IAAa1B,EAATuD,EAAE7B,EAAE,KAAO,IAAI1B,KAAKmE,EAAE,GAAGR,EAAElD,KAAK0D,EAAEnE,GAAG,CAAC,IAAIgD,EAAEmB,EAAEnE,GAAG,GAAG,MAAMgD,EAAE,OAAOhD,GAAG,IAAK,WAAW0B,EAAEsB,EAAE,MAAM,IAAK,0BAA0BO,EAAEP,EAAE,MAAM,QAAQ8B,EAAEjD,EAAE2B,EAAExD,EAAEgD,GAAG,CAAsB,OAArBnB,EAAEa,KAAK,KAAKmB,EAAEhC,EAAE0B,EAAE7B,GAAS,iBAAkBA,GAAGG,EAAEa,KAAKoB,EAAEpC,IAAI,MAAMA,CAAC,CAAC,IAAI2zB,EAAG,8BAA8BsC,EAAG,IAAInM,IAAI,SAAS9lB,EAAE7D,GAAG,IAAIsC,EAAEwzB,EAAG3zB,IAAInC,GAAG,QAAG,IAASsC,EAAE,CAAC,IAAIkxB,EAAGnpB,KAAKrK,GAAG,MAAMwmB,MAAMhlB,EAAE,GAAGxB,IAAIsC,EAAE,IAAItC,EAAE81B,EAAG7qB,IAAIjL,EAAEsC,EAAE,CAAC,OAAOA,CAAC,CAQlZ,SAAS+lvC,EAAGrovC,EAAEsC,EAAEzC,GAA2C,GAAxCG,EAAEa,KAAK,iCAAoC,OAAOhB,EAAE,MAAM2mB,MAAMhlB,EAAE,MAAgB,OAAVxB,EAAEa,KAAKhB,GAAUG,EAAEa,KAAK,gBAAgB,CAGkL,IAAIs1B,EAAG,mBAC/U,SAASyytC,EAAG5ovC,GAAG,OAAOsZ,KAAKb,UAAUzY,GAAGyL,QAAQ0qB,GAAG,SAASn2B,GAAG,OAAOA,GAAG,IAAK,IAAI,MAAM,UAAU,IAAK,SAAS,MAAM,UAAU,IAAK,SAAS,MAAM,UAAU,QAAQ,MAAMwmB,MAAM,qMAAsM,GAAE,CAC7E,SAASyQ,EAAGj3B,EAAEsC,EAAEzC,EAAE8B,GAAG,OAAG9B,EAAEo00C,sBAA4Bj00C,EAAEa,KAAKoB,EAAEK,KAAI,IAAG,KAAKA,EAAEtC,EAAE2B,GAAGA,GAAG3B,EAAEa,KAAK,kBAAkBb,EAAEa,KAAKoB,EAAEK,IAAItC,GAAE,GAAWA,EAAC,CACtb,IAAI+E,EAAEzG,OAAOa,OAAOs3B,EAAG/1B,OAAOiH,IAAI,iBAAiBkhvC,EAAGnovC,OAAOiH,IAAI,gBAAgBiuB,EAAGl1B,OAAOiH,IAAI,kBAAkBmhvC,EAAGpovC,OAAOiH,IAAI,qBAAqBohvC,EAAGrovC,OAAOiH,IAAI,kBAAkBqhvC,EAAGtovC,OAAOiH,IAAI,kBAAkBshvC,EAAGvovC,OAAOiH,IAAI,iBAAiBuvB,EAAGx2B,OAAOiH,IAAI,qBAAqBkuB,EAAGn1B,OAAOiH,IAAI,kBAAkBkvB,EAAGn2B,OAAOiH,IAAI,uBAAuBuhvC,EAAGxovC,OAAOiH,IAAI,cAAcwhvC,EAAGzovC,OAAOiH,IAAI,cAAc8rB,EAAG/yB,OAAOiH,IAAI,eAAeuuB,EAAGx1B,OAAOiH,IAAI,0BAA0ByhvC,EAAG1ovC,OAAOiH,IAAI,uBACte0hvC,EAAG3ovC,OAAOiH,IAAI,uBAAuB2hvC,EAAG5ovC,OAAOC,SAC/C,SAASm2B,EAAG92B,GAAG,GAAG,MAAMA,EAAE,OAAO,KAAK,GAAG,mBAAoBA,EAAE,OAAOA,EAAEonK,aAAapnK,EAAE0J,MAAM,KAAK,GAAG,iBAAkB1J,EAAE,OAAOA,EAAE,OAAOA,GAAG,KAAK41B,EAAG,MAAM,WAAW,KAAKiztC,EAAG,MAAM,SAAS,KAAKE,EAAG,MAAM,WAAW,KAAKD,EAAG,MAAM,aAAa,KAAKjztC,EAAG,MAAM,WAAW,KAAKgB,EAAG,MAAM,eAAe,GAAG,iBAAkB72B,EAAE,OAAOA,EAAE616B,UAAU,KAAKozU,EAAG,OAAOjpvC,EAAEonK,aAAa,WAAW,YAAY,KAAK4hlC,EAAG,OAAOhpvC,EAAEgkJ,SAASojB,aAAa,WAAW,YAAY,KAAKlwI,EAAG,IAAI50B,EAAEtC,EAAEstH,OAC7Z,OADoattH,EAAEA,EAAEonK,eACndpnK,EAAE,MADieA,EAAEsC,EAAE8kK,aAClf9kK,EAAEoH,MAAM,IAAY,cAAc1J,EAAE,IAAI,cAAqBA,EAAE,KAAKkpvC,EAAG,OAA6B,QAAtB5mvC,EAAEtC,EAAEonK,aAAa,MAAc9kK,EAAEw0B,EAAG92B,EAAEuL,OAAO,OAAO,KAAK49uC,EAAG7mvC,EAAEtC,EAAEyggC,SAASzggC,EAAEA,EAAEyx9B,MAAM,IAAI,OAAO367B,EAAG92B,EAAEsC,GAAG,CAAC,MAAMzC,GAAG,EAAE,OAAO,IAAI,CAAC,IAAIqqvC,EAAG,CAAC,EAAE,SAASx0tC,GAAG11B,EAAEsC,GAAoB,KAAjBtC,EAAEA,EAAEkowC,cAAmB,OAAOhe,EAAG,IAASvovC,EAAL9B,EAAE,CAAC,EAAI,IAAI8B,KAAK3B,EAAEH,EAAE8B,GAAGW,EAAEX,GAAG,OAAO9B,CAAC,CAAC,IAAI6D,GAAE,KACvT,SAASM,GAAEhE,EAAEsC,GAAG,GAAGtC,IAAIsC,EAAE,CAACtC,EAAEmsC,QAAQ+nyC,eAAel00C,EAAEm00C,YAAYn00C,EAAEA,EAAEqwF,OAAO,IAAIxwF,EAAEyC,EAAE+tF,OAAO,GAAG,OAAOrwF,GAAG,GAAG,OAAOH,EAAE,MAAM2mB,MAAMhlB,EAAE,UAAW,CAAC,GAAG,OAAO3B,EAAE,MAAM2mB,MAAMhlB,EAAE,MAAMwC,GAAEhE,EAAEH,EAAE,CAACyC,EAAE6pC,QAAQ+nyC,eAAe5x0C,EAAEnC,KAAK,CAAC,CAAC,SAASq1rC,GAAGx1rC,GAAGA,EAAEmsC,QAAQ+nyC,eAAel00C,EAAEm00C,YAAuB,QAAXn00C,EAAEA,EAAEqwF,SAAiBmlmC,GAAGx1rC,EAAE,CAAC,SAASmoO,GAAGnoO,GAAG,IAAIsC,EAAEtC,EAAEqwF,OAAO,OAAO/tF,GAAG6lO,GAAG7lO,GAAGtC,EAAEmsC,QAAQ+nyC,eAAel00C,EAAEG,KAAK,CACtX,SAASqpvC,GAAGxpvC,EAAEsC,GAAqD,GAAlDtC,EAAEmsC,QAAQ+nyC,eAAel00C,EAAEm00C,YAA0B,QAAdn00C,EAAEA,EAAEqwF,QAAmB,MAAM7pE,MAAMhlB,EAAE,MAAMxB,EAAEu2I,QAAQj0I,EAAEi0I,MAAMvyI,GAAEhE,EAAEsC,GAAGknvC,GAAGxpvC,EAAEsC,EAAE,CAAC,SAASo+D,GAAG1gE,EAAEsC,GAAG,IAAIzC,EAAEyC,EAAE+tF,OAAO,GAAG,OAAOxwF,EAAE,MAAM2mB,MAAMhlB,EAAE,MAAMxB,EAAEu2I,QAAQ12I,EAAE02I,MAAMvyI,GAAEhE,EAAEH,GAAG6gE,GAAG1gE,EAAEH,GAAGyC,EAAE6pC,QAAQ+nyC,eAAe5x0C,EAAEnC,KAAK,CAAC,SAASwD,GAAE3D,GAAG,IAAIsC,EAAEoB,GAAEpB,IAAItC,IAAI,OAAOsC,EAAE6lO,GAAGnoO,GAAG,OAAOA,EAAEw1rC,GAAGlzrC,GAAGA,EAAEi0I,QAAQv2I,EAAEu2I,MAAMvyI,GAAE1B,EAAEtC,GAAGsC,EAAEi0I,MAAMv2I,EAAEu2I,MAAMizmC,GAAGlnvC,EAAEtC,GAAG0gE,GAAGp+D,EAAEtC,GAAG0D,GAAE1D,EAAE,CAC/X,IAAIypvC,GAAG,CAACjq2B,UAAU,WAAW,OAAM,CAAE,EAAE407B,gBAAgB,SAASp00C,EAAEsC,GAAuB,QAApBtC,EAAEA,EAAEq00C,iBAAyB72xC,OAAOx9C,EAAEw9C,MAAM38C,KAAKyB,EAAE,EAAEgy0C,oBAAoB,SAASt00C,EAAEsC,IAAGtC,EAAEA,EAAEq00C,iBAAkB5o0C,SAAQ,EAAGzL,EAAEw9C,MAAM,CAACl7C,EAAE,EAAEiy0C,mBAAmB,WAAW,GACxO,SAAS7qF,GAAG1pvC,EAAEsC,EAAEzC,EAAE8B,GAAG,IAAID,OAAE,IAAS1B,EAAE2K,MAAM3K,EAAE2K,MAAM,KAAK3K,EAAEq++B,QAAQorQ,GAAGzpvC,EAAEisC,MAAMpsC,EAAEG,EAAE2K,MAAMjJ,EAAE,IAAIvD,EAAE,CAACq/C,MAAM,GAAG/xC,SAAQ,GAAIzL,EAAEq00C,gBAAgBl20C,EAAE,IAAIgD,EAAEmB,EAAE2lwC,YAAmL,GAAvKjowC,EAAEmsC,QAAQ,iBAAkBhrC,GAAG,OAAOA,EAAEA,EAAE+y0C,eAAevy0C,EAA+B,mBAA7BR,EAAEmB,EAAE8lwC,4BAA0D1mwC,EAAE,OAAXP,EAAEA,EAAEtB,EAAE6B,IAA0BA,EAAEqD,EAAE,CAAC,EAAErD,EAAEP,GAAGnB,EAAE2K,MAAMjJ,GAAM,mBAAoBY,EAAE8lwC,0BAA0B,mBAAoBpowC,EAAEw00C,0BAA0B,mBAAoBx00C,EAAEy00C,2BAA2B,mBAAoBz00C,EAAE000C,oBAAoB,GAAGpy0C,EACtgBtC,EAAE2K,MAAM,mBAAoB3K,EAAE000C,oBAAoB100C,EAAE000C,qBAAqB,mBAAoB100C,EAAEy00C,2BAA2Bz00C,EAAEy00C,4BAA4Bny0C,IAAItC,EAAE2K,OAAO8+uC,GAAG6qF,oBAAoBt00C,EAAEA,EAAE2K,MAAM,MAAM,OAAOxM,EAAEq/C,OAAO,EAAEr/C,EAAEq/C,MAAMn+C,OAAO,GAAGiD,EAAEnE,EAAEq/C,MAAMr8C,EAAEhD,EAAEsN,QAAQtN,EAAEq/C,MAAM,KAAKr/C,EAAEsN,SAAQ,EAAGtK,GAAG,IAAImB,EAAEjD,OAAOW,EAAE2K,MAAMrI,EAAE,OAAO,CAAuB,IAAtBnE,EAAEgD,EAAEmB,EAAE,GAAGtC,EAAE2K,MAAMjJ,GAAE,EAAOP,EAAEA,EAAE,EAAE,EAAEA,EAAEmB,EAAEjD,OAAO8B,IAAI,CAAC,IAAIS,EAAEU,EAAEnB,GAA6C,OAA1CS,EAAE,mBAAoBA,EAAEA,EAAEhD,KAAKoB,EAAE7B,EAAE0B,EAAE8B,GAAGC,KAAYF,GAAGA,GAAE,EAAGvD,EAAE4G,EAAE,CAAC,EAAE5G,EAAEyD,IAAImD,EAAE5G,EAAEyD,GAAG,CAAC5B,EAAE2K,MAAMxM,CAAC,MAAMA,EAAEq/C,MAAM,IAAI,CAC3e,IAAIooS,GAAG,CAACr7T,GAAG,EAAEg2V,SAAS,IAAI,SAASgp4B,GAAGvpvC,EAAEsC,EAAEzC,GAAG,IAAI8B,EAAE3B,EAAEuqB,GAAGvqB,EAAEA,EAAEugX,SAAS,IAAI7+W,EAAE,GAAG8C,GAAE7C,GAAG,EAAEA,KAAK,GAAGD,GAAG7B,GAAG,EAAE,IAAI1B,EAAE,GAAGqG,GAAElC,GAAGZ,EAAE,GAAG,GAAGvD,EAAE,CAAC,IAAIgD,EAAEO,EAAEA,EAAE,EAAyC,OAAvCvD,GAAGwD,GAAG,GAAGR,GAAG,GAAGoC,SAAS,IAAI5B,IAAIR,EAAEO,GAAGP,EAAQ,CAACopB,GAAG,GAAG,GAAG/lB,GAAElC,GAAGZ,EAAE7B,GAAG6B,EAAEC,EAAE4+W,SAASpiX,EAAE6B,EAAE,CAAC,MAAM,CAACuqB,GAAG,GAAGpsB,EAAE0B,GAAG6B,EAAEC,EAAE4+W,SAASvgX,EAAE,CAAC,IAAIwE,GAAE3C,KAAKuqN,MAAMvqN,KAAKuqN,MAAiC,SAAYpsN,GAAU,OAAO,IAAdA,KAAK,GAAe,GAAG,IAAI200C,GAAG300C,GAAGyovC,GAAG,GAAG,CAAC,EAA/EksF,GAAG9y0C,KAAKwnB,IAAIo/tC,GAAG5mvC,KAAKsvN,IAC9S2gvB,GAAG,mBAAoBxz8B,OAAOwte,GAAGxte,OAAOwte,GADkU,SAAY9re,EAAEsC,GAAG,OAAOtC,IAAIsC,IAAI,IAAItC,GAAG,EAAEA,GAAI,EAAEsC,IAAItC,GAAIA,GAAGsC,GAAIA,CAAC,EAC3XO,GAAE,KAAK+x0C,GAAG,KAAKlw0C,GAAE,KAAKT,GAAE,KAAKZ,IAAE,EAAGwB,IAAE,EAAGX,GAAE,EAAElB,GAAE,KAAKc,GAAE,EAAE,SAASkB,KAAI,GAAG,OAAOnC,GAAE,MAAM2jB,MAAMhlB,EAAE,MAAM,OAAOqB,EAAC,CAAC,SAASi8W,KAAK,GAAG,EAAEh7W,GAAE,MAAM0iB,MAAMhlB,EAAE,MAAM,MAAM,CAACqz0C,cAAc,KAAKr3xC,MAAM,KAAKz9C,KAAK,KAAK,CAAC,SAAS+00C,KAAqG,OAAhG,OAAO7w0C,GAAE,OAAOS,IAAGrB,IAAE,EAAGqB,GAAET,GAAE66W,OAAOz7W,IAAE,EAAGY,GAAES,IAAG,OAAOT,GAAElE,MAAMsD,IAAE,EAAGY,GAAEA,GAAElE,KAAK++W,OAAOz7W,IAAE,EAAGY,GAAEA,GAAElE,MAAakE,EAAC,CAAC,SAAS4t8B,KAAK+iY,GAAG/x0C,GAAE,KAAKgC,IAAE,EAAGH,GAAE,KAAKZ,GAAE,EAAEG,GAAEjB,GAAE,IAAI,CAAC,SAAS4mvC,GAAG5pvC,EAAEsC,GAAG,MAAM,mBAAoBA,EAAEA,EAAEtC,GAAGsC,CAAC,CACld,SAASy+uC,GAAG/gvC,EAAEsC,EAAEzC,GAAgB,GAAbgD,GAAEmC,KAAIf,GAAE6w0C,KAAQzx0C,GAAE,CAAC,IAAI1B,EAAEsC,GAAEu5C,MAAmB,GAAbl7C,EAAEX,EAAE6pa,SAAY,OAAOxoa,SAAe,KAAXnD,EAAEmD,GAAEb,IAAIR,IAAe,CAACqB,GAAEihB,OAAOtiB,GAAGA,EAAEsC,GAAE4w0C,cAAc,GAAGlz0C,EAAE3B,EAAE2B,EAAE9B,EAAEyqE,QAAQzqE,EAAEA,EAAEE,WAAW,OAAOF,GAAqB,OAAlBoE,GAAE4w0C,cAAclz0C,EAAQ,CAACA,EAAEW,EAAE,CAAC,MAAM,CAAC2B,GAAE4w0C,cAAcvy0C,EAAE,CAA6I,OAA5ItC,EAAEA,IAAI4pvC,GAAG,mBAAoBtnvC,EAAEA,IAAIA,OAAE,IAASzC,EAAEA,EAAEyC,GAAGA,EAAE2B,GAAE4w0C,cAAc700C,EAAsCA,GAApCA,EAAEiE,GAAEu5C,MAAM,CAAC75B,KAAK,KAAK6nZ,SAAS,OAAUA,SAASk7W,GAAGrkxB,KAAK,KAAKQ,GAAE7C,GAAS,CAACiE,GAAE4w0C,cAAc700C,EAAE,CAC9Y,SAAS+00C,GAAG/00C,EAAEsC,GAAoC,GAAjCO,GAAEmC,KAAW1C,OAAE,IAASA,EAAE,KAAKA,EAAK,QAA9B2B,GAAE6w0C,MAAqC,CAAC,IAAIj10C,EAAEoE,GAAE4w0C,cAAc,GAAG,OAAOh10C,GAAG,OAAOyC,EAAE,CAAC,IAAIX,EAAE9B,EAAE,GAAGG,EAAE,GAAG,OAAO2B,EAAEA,GAAE,MAAO,CAAC,IAAI,IAAID,EAAE,EAAEA,EAAEC,EAAEtC,QAAQqC,EAAEY,EAAEjD,OAAOqC,IAAI,IAAIow8B,GAAGxv8B,EAAEZ,GAAGC,EAAED,IAAI,CAACC,GAAE,EAAG,MAAM3B,CAAC,CAAC2B,GAAE,CAAE,CAAC,GAAGA,EAAE,OAAO9B,EAAE,EAAE,CAAC,CAA6B,OAA5BG,EAAEA,IAAIiE,GAAE4w0C,cAAc,CAAC700C,EAAEsC,GAAUtC,CAAC,CAAC,SAAS0mxB,GAAG1mxB,EAAEsC,EAAEzC,GAAG,GAAG,IAAIiE,GAAE,MAAM0iB,MAAMhlB,EAAE,MAAM,GAAGxB,IAAI6C,GAAE,GAAGgC,IAAE,EAAG7E,EAAE,CAACsqE,OAAOzqE,EAAEE,KAAK,MAAM,OAAOiD,KAAIA,GAAE,IAAI2mB,UAAgB,KAAX9pB,EAAEmD,GAAEb,IAAIG,IAAcU,GAAEiI,IAAI3I,EAAEtC,OAAO,CAAC,IAAIsC,EAAEzC,EAAE,OAAOyC,EAAEvC,MAAMuC,EAAEA,EAAEvC,KAAKuC,EAAEvC,KAAKC,CAAC,CAAC,CAAC,SAASwzuB,KAAK,MAAMhttB,MAAMhlB,EAAE,KAAM,CAClf,SAAS8B,KAAI,CACb,IAAI0x0C,GAAG,CAACC,YAAY,SAASj10C,GAAG,OAAOA,EAAEk00C,cAAc,EAAEp2kC,WAAW,SAAS99P,GAAO,OAAJgF,KAAWhF,EAAEk00C,cAAc,EAAEzmyC,QAAQsnyC,GAAGG,WAAWn0F,GAAGzjtC,OAAO,SAASt9B,GAAG6C,GAAEmC,KAAW,IAAI1C,GAAX2B,GAAE6w0C,MAAaD,cAAc,OAAO,OAAOvy0C,GAAGtC,EAAE,CAAC++B,QAAQ/+B,GAAGiE,GAAE4w0C,cAAc700C,GAAGsC,CAAC,EAAEw0P,SAAS,SAAS92P,GAAG,OAAO+gvC,GAAG6I,GAAG5pvC,EAAE,EAAEg+P,mBAAmB16P,GAAEqyP,gBAAgB,WAAW,EAAEmxqB,YAAY,SAAS9m6B,EAAEsC,GAAG,OAAOyy0C,IAAG,WAAW,OAAO/00C,CAAC,GAAEsC,EAAE,EAAEi2P,oBAAoBj1P,GAAEg9B,UAAUh9B,GAAE6x0C,cAAc7x0C,GAAE8x0C,iBAAiB,SAASp10C,GAAO,OAAJgF,KAAWhF,CAAC,EAAEq10C,cAAc,WAAe,OAAJrw0C,KAAU,EAAC,EACvgBwuuB,GAAG,EAAEqzf,MAAM,WAAW,IAAI7muC,EAAE400C,GAAGU,YAAgBhz0C,EAAEtC,EAAEugX,SAAgBvgX,IAAPA,EAAEA,EAAEuqB,MAAU,GAAG,GAAG/lB,GAAExE,GAAG,IAAIuD,SAAS,IAAIjB,EAAE,IAAIzC,EAAE2C,GAAE,GAAG,OAAO3C,EAAE,MAAM2mB,MAAMhlB,EAAE,MAAgE,OAA1Dc,EAAE4B,KAAIlE,EAAE,IAAIH,EAAEsvpB,SAAS,IAAInvpB,EAAE,EAAEsC,IAAItC,GAAG,IAAIsC,EAAEiB,SAAS,KAAYvD,EAAE,GAAG,EAAEu10C,iBAAiB,SAASv10C,EAAEsC,GAAO,OAAJ0C,KAAW1C,EAAEtC,EAAEygwB,QAAQ,EAAE+0kB,qBAAqB,SAASx10C,EAAEsC,EAAEzC,GAAG,QAAG,IAASA,EAAE,MAAM2mB,MAAMhlB,EAAE,MAAM,OAAO3B,GAAG,GAAG2C,GAAE,KAAKiz0C,GAAGzlzC,EAAG0lzC,mDAAmDC,uBAAuB,SAASC,GAAG510C,GAAoB,OAAjBqmB,QAAQvlB,MAAMd,GAAU,IAAI,CACte,SAASkD,KAAI,CAEuC,SAAS4mvC,GAAG9pvC,EAAEsC,EAAEzC,EAAE8B,EAAED,EAAEvD,EAAEgD,EAAES,GAAG5B,EAAE610C,kBAAkB,OAAOh20C,EAAEG,EAAE810C,mBAAmBj20C,EAAEm5F,eAAe,IAAIt2F,EAAE,CAAC2lF,KAAK/lF,EAAEyz0C,KAAK,WAAW,IAAIzz0C,EAAEtC,EAAEg20C,YAAY1z0C,EAAEzB,KAAK6B,GAAG,IAAIJ,EAAEjD,QAAQ0qvC,GAAG/pvC,EAAE,EAAEi20C,gBAAgBp20C,EAAEq20C,eAAev00C,EAAEw00C,SAASz00C,EAAE000C,cAAcj40C,EAAEguC,QAAQhrC,EAAEm00C,YAAY1z0C,GAAY,OAATF,EAAEyiB,IAAIzhB,GAAUA,CAAC,CAAC,SAAS2B,GAAErE,EAAEsC,EAAEzC,EAAE8B,EAAED,EAAEvD,GAAG,MAAM,CAACsmB,OAAO,EAAE8F,IAAI,EAAEvO,MAAM1Z,EAAE+z0C,eAAc,EAAG1xwC,OAAO,GAAG3lC,SAAS,GAAGs3yC,cAAc300C,EAAE400C,SAAS120C,EAAE220C,eAAe900C,EAAE+00C,aAAat40C,EAAE,CACte,SAASyG,GAAE5E,EAAEsC,GAAkB,GAAG,OAAlBtC,EAAEA,EAAEq8G,QAAQ/5G,KAAe,iBAAkBtC,EAAE,MAAMwmB,MAAM,wMAAwMxmB,EAAE,aAAa,OAAOA,CAAC,CAAC,SAASwD,GAAExD,EAAEsC,GAAG,IAAIzC,EAAEG,EAAE020C,aAAa720C,EAAEyC,IAAGzC,EAAEG,EAAE220C,cAAer00C,GAAG,OAAOtC,EAAE84C,aAAa94C,EAAEykB,OAAO,EAAEzkB,EAAE84C,YAAYskG,QAAQ96I,KAAKtC,EAAEykB,OAAO,EAAEzkB,EAAE420C,WAAWt00C,EAAE,CACjc,SAASu00C,GAAG720C,EAAEsC,EAAEzC,EAAE8B,EAAED,GAAiB,IAAdmB,GAAE,CAAC,EAAE+x0C,GAAGty0C,EAAE4B,GAAE,EAAMlE,EAAEH,EAAE8B,EAAED,GAAGmD,IAAGA,IAAE,EAAGX,GAAE,EAAEJ,IAAG,EAAEG,GAAE,KAAKjE,EAAEH,EAAE8B,EAAED,GAAQ,OAALmw8B,KAAY7x8B,CAAC,CAAC,SAASgqvC,GAAGhqvC,EAAEsC,EAAEzC,EAAE8B,GAAG,IAAID,EAAE7B,EAAEytH,SAASnvH,EAAEwD,EAAEqmwC,kBAAkB,GAAG,MAAO7pwC,EAAc,CAAC,IAAIgD,EAAEmB,EAAE8z0C,cAAc,GAAG,mBAAoBv20C,EAAEi30C,gBAAgBn10C,EAAER,MAAM,CAAuB,IAAI,IAAIS,KAA9B/B,EAAEA,EAAEi30C,kBAAiC,KAAKl10C,KAAKzD,GAAG,MAAMqoB,MAAMhlB,EAAE,IAAIs1B,EAAGn1B,IAAI,UAAUC,IAAID,EAAEoD,EAAE,CAAC,EAAE5D,EAAEtB,EAAE,CAACyC,EAAE8z0C,cAAcz00C,EAAEoC,GAAE/D,EAAEsC,EAAEZ,GAAGY,EAAE8z0C,cAAcj10C,CAAC,MAAM4C,GAAE/D,EAAEsC,EAAEZ,EAAE,CAC7Z,SAASmmvC,GAAG7nvC,EAAEsC,GAAG,GAAGtC,GAAGA,EAAEk5I,aAAa,CAA4B,IAAI,IAAIr5I,KAAnCyC,EAAEyC,EAAE,CAAC,EAAEzC,GAAGtC,EAAEA,EAAEk5I,kBAA4B,IAAS52I,EAAEzC,KAAKyC,EAAEzC,GAAGG,EAAEH,IAAI,OAAOyC,CAAC,CAAC,OAAOA,CAAC,CAC7H,SAASy00C,GAAG/20C,EAAEsC,EAAEzC,EAAE8B,EAAED,GAAG,GAAG,mBAAoB7B,EAAE,GAAGA,EAAEnB,WAAWmB,EAAEnB,UAAUk36B,iBAAiB,CAACl06B,EAAEg0B,GAAG71B,EAAEyC,EAAE8z0C,eAAe,IAAIj40C,EAAE0B,EAAEoowC,YAAwEve,GAA5DvrvC,EAAE,IAAI0B,EAAE8B,EAAE,iBAAkBxD,GAAG,OAAOA,EAAEA,EAAE+10C,eAAexy0C,GAAQ7B,EAAE8B,EAAED,GAAGsovC,GAAGhqvC,EAAEsC,EAAEnE,EAAE0B,EAAE,KAAK,CAAyB6B,EAAEm10C,GAAG720C,EAAEsC,EAAEzC,EAAE8B,EAAnCxD,EAAEu3B,GAAG71B,EAAEyC,EAAE8z0C,gBAA+B,IAAIj10C,EAAE,IAAI+C,GAAE,GAAG,iBAAkBxC,GAAG,OAAOA,GAAG,mBAAoBA,EAAE4rH,aAAQ,IAAS5rH,EAAEm06B,SAAS6zU,GAAGhovC,EAAE7B,EAAE8B,EAAExD,GAAG6rvC,GAAGhqvC,EAAEsC,EAAEZ,EAAE7B,QAAQ,GAAGsB,EAAE,CAACQ,EAAEW,EAAEgz0C,YAAYhz0C,EAAEgz0C,YAAY/rF,GAAG5nvC,EAAE,EAAE,GAAG,IAAIoC,GAAE/D,EAAEsC,EAAEZ,EAAE,CAAC,QAAQY,EAAEgz0C,YAAY3z0C,CAAC,CAAC,MAAMoC,GAAE/D,EAAEsC,EAAEZ,EAAE,KAAM,IAAG,iBAC3e7B,EAAoa,CAAC,OAAOA,GAAG,KAAKupvC,EAAG,KAAKlztC,EAAG,KAAK4ytC,EAAG,KAAKC,EAAG,KAAKnztC,EAC3d,KAAKiB,EAAqB,YAAlB9yB,GAAE/D,EAAEsC,EAAEX,EAAEq9B,UAAiB,KAAKvL,EAAG,MAAMjN,MAAMhlB,EAAE,MAAM,KAAKq0B,EAAG71B,EAAE,CAACH,EAAEyC,EAAE2z0C,gBAAgBv00C,EAAEY,EAAE4z0C,eAAe/30C,EAAEwD,EAAEq9iB,SAASr9iB,EAAEA,EAAEq9B,SAAmB,IAAIp9B,EAAE,CAAC2oB,GAAG,KAAKyszC,eAAe,EAAEX,eAAc,EAAGr9uC,aAAa,EAAEi+uC,mBAAkB,EAAGC,kBAAkB,GAAGtn/B,SAAS,EAAEun/B,uBAA/Hh20C,EAAE,IAAIwjB,IAAkJyyzC,YAAY,MAAM100C,EAAE2B,GAAErE,EAAE0B,EAAEijE,OAAOtlE,OAAOuC,EAAEF,EAAE400C,eAAc,GAAG,GAAI500C,EAAEs9B,SAASn+B,KAAK6B,GAAGhB,EAAE800C,gBAAe,EAAG,IAAIp00C,EAAEiC,GAAErE,EAAE,EAAE,KAAK0B,EAAE400C,eAAc,GAAG,GAAIl00C,EAAEi00C,eAAc,EAAG/z0C,EAAE2z0C,gBAAgBr00C,EAAEU,EAAE4z0C,eAAe9z0C,EAAE,IAAI,GAAGi10C,GAAGr30C,EACrfsC,EAAEX,GAAG3B,EAAEs30C,cAAcrD,sBAAsB7x0C,EAAEo00C,gBAAgBp00C,EAAEq00C,cAAcr00C,EAAEuiE,OAAO9jE,KAAK,kBAAkBuB,EAAEqiB,OAAO,EAAEhgB,GAAE7C,EAAEQ,GAAG,IAAIR,EAAEo3F,aAAa,MAAMh5F,CAAC,CAAC,MAAM3B,GAAG+D,EAAEqiB,OAAO,EAAE7iB,EAAEq10C,mBAAkB,EAAGr10C,EAAEw10C,YAAYxy0C,GAAE5E,EAAE3B,EAAE,CAAC,QAAQiE,EAAE2z0C,gBAAgBp20C,EAAEyC,EAAE4z0C,eAAex00C,CAAC,CAACY,EAAEwnvC,GAAG9pvC,EAAE7B,EAAE0B,EAAE6C,EAAEvB,EAAEmB,EAAE8z0C,cAAc9z0C,EAAE6pC,QAAQ7pC,EAAEgz0C,aAAat10C,EAAEg20C,YAAYn10C,KAAKyB,EAAE,CAAC,OAAO,GAAG,iBAAkBzC,GAAG,OAAOA,EAAE,OAAOA,EAAEg26B,UAAU,KAAK3+4B,EAA0B,GAAvBv1B,EAAEk10C,GAAG720C,EAAEsC,EAAEzC,EAAEytH,OAAO3rH,EAAED,GAAM,IAAIwC,GAAE,CAACrE,EAAEyC,EAAEgz0C,YAAYhz0C,EAAEgz0C,YAAY/rF,GAAG1pvC,EAAE,EAAE,GAAG,IAAIkE,GAAE/D,EAAEsC,EAAEX,EAAE,CAAC,QAAQW,EAAEgz0C,YAC1fz10C,CAAC,CAAC,MAAMkE,GAAE/D,EAAEsC,EAAEX,GAAG,OAAO,KAAKunvC,EAAoC,YAAd6tF,GAAG/20C,EAAEsC,EAAxBzC,EAAEA,EAAE0L,KAAK5J,EAAEkmvC,GAAGhovC,EAAE8B,GAAcD,GAAU,KAAKsnvC,EAAoL,GAAjLtnvC,EAAEC,EAAEq9B,SAASn/B,EAAEA,EAAEmkJ,SAASriJ,EAAEA,EAAExB,MAAMhC,EAAE0B,EAAEq00C,eAAer00C,EAAEq00C,eAAevy0C,EAAM+B,GAAE/B,EAAE,CAAC0uF,OAATlvF,EAAEuC,GAAgB6yI,MAAM,OAAOp1I,EAAE,EAAEA,EAAEo1I,MAAM,EAAEpqG,QAAQtsC,EAAEs00C,YAAYh20C,EAAEgC,MAAMwB,GAAGW,EAAE6pC,QAAQxqC,EAAEoC,GAAE/D,EAAEsC,EAAEZ,GAAU,QAAP1B,EAAE0D,IAAc,MAAM8iB,MAAMhlB,EAAE,MAAyG,OAAnGG,EAAE3B,EAAEm00C,YAAYn00C,EAAEmsC,QAAQ+nyC,eAAevy0C,IAAI0nvC,EAAGrpvC,EAAEmsC,QAAQoryC,cAAc510C,EAAE3B,EAAE0D,GAAE1D,EAAEqwF,YAAO/tF,EAAE6pC,QAAQnsC,GAAS,KAAKipvC,EAA+C,YAATllvC,GAAE/D,EAAEsC,EAA1BX,GAAbA,EAAEA,EAAEq9B,UAAan/B,EAAEq00C,iBAAgC,KAAK/qF,EAC7b,YADoe4tF,GAAG/20C,EACrfsC,EADwdzC,GAAV6B,EAAE7B,EAAE4x9B,OAAU5x9B,EAAE4ggC,UAAU9+/B,EAAEkmvC,GAAGhovC,EAAE8B,QACze,GAAe,MAAM6kB,MAAMhlB,EAAE,IAAI,MAAM3B,EAAEA,SAASA,EAAE,IAAK,CAJ6G,OAA/I1B,EApC7B,SAAY6B,EAAEsC,EAAEzC,EAAE8B,EAAED,GAAG,OAAOY,GAAG,IAAK,SAAStC,EAAEa,KAAKgD,EAAE,WAAW,IAAI1F,EAAE,KAAKgD,EAAE,KAAK,IAAI9C,KAAKwB,EAAE,GAAGiC,EAAElD,KAAKiB,EAAExB,GAAG,CAAC,IAAIuD,EAAE/B,EAAExB,GAAG,GAAG,MAAMuD,EAAE,OAAOvD,GAAG,IAAK,WAAWF,EAAEyD,EAAE,MAAM,IAAK,0BAA0BT,EAAES,EAAE,MAAM,IAAK,eAAe,IAAK,QAAQ,MAAM,QAAQqB,EAAEjD,EAAE2B,EAAEtD,EAAEuD,GAAG,CAAsB,OAArB5B,EAAEa,KAAK,KAAKmB,EAAEhC,EAAEmB,EAAEhD,GAAUA,EAAE,IAAK,SAASgD,EAAEO,EAAEqktB,cAAc/ltB,EAAEa,KAAKgD,EAAE,WAAW,IAAInB,EAAEd,EAAE,KAAKQ,EAAE,KAAS/D,EAAE,KAAK,IAAIF,KAAK0B,EAAE,GAAGiC,EAAElD,KAAKiB,EAAE1B,GAAG,CAAC,IAAI+G,EAAErF,EAAE1B,GAAG,GAAG,MAAM+G,EAAE,OAAO/G,GAAG,IAAK,WAAWyD,EAAEsD,EAAE,MAAM,IAAK,WAAW9C,EAAE8C,EAAE,MAAM,IAAK,0BAA0B7G,EAC7gB6G,EAAE,MAAM,IAAK,QAAQxC,EAAEwC,EAAE,QAAQjC,EAAEjD,EAAE2B,EAAExD,EAAE+G,GAAG,CAAC,GAAG,MAAM/D,EAAE,GAAGtB,EAAE,OAAO6C,EAAE,GAAGA,EAH6F,SAAY1C,GAAG,IAAIsC,EAAE,GAAuD,OAApD0tB,EAAG83X,SAAS5jY,QAAQlkB,GAAE,SAASA,GAAG,MAAMA,IAAIsC,GAAGtC,EAAE,IAAUsC,CAAC,CAG/KuuB,CAAGjvB,GAAG2ovC,EAAGppvC,IAAG,IAAIQ,EAAE,EAAEA,EAAER,EAAE9B,OAAOsC,IAAK,GAAG,GAAGR,EAAEQ,KAAK9B,EAAE,CAACG,EAAEa,KAAK,gBAAgB,KAAK,MAAM,GAAGM,IAAItB,GAAGG,EAAEa,KAAK,qBAAqBuB,GAAGpC,EAAEa,KAAK,gBAAqC,OAArBb,EAAEa,KAAK,KAAKmB,EAAEhC,EAAE3B,EAAEuD,GAAUA,EAAE,IAAK,WAA4C,IAAIA,KAArC5B,EAAEa,KAAKgD,EAAE,aAAaxF,EAAE8C,EAAEhD,EAAE,KAAc0B,EAAE,GAAGiC,EAAElD,KAAKiB,EAAE+B,IAAY,OAAPc,EAAE7C,EAAE+B,IAAY,OAAOA,GAAG,IAAK,WAAWvD,EAAEqE,EAAE,MAAM,IAAK,QAAQvE,EAAEuE,EAAE,MAAM,IAAK,eAAevB,EAAEuB,EAAE,MAAM,IAAK,0BAA0B,MAAM8jB,MAAMhlB,EAAE,KAAK,QAAQyB,EAAEjD,EAAE2B,EACnfC,EAAEc,GAAyC,GAAtC,OAAOvE,GAAG,OAAOgD,IAAIhD,EAAEgD,GAAGnB,EAAEa,KAAK,KAAQ,MAAMxC,EAAE,CAAC,GAAG,MAAMF,EAAE,MAAMqoB,MAAMhlB,EAAE,KAAK,GAAG+ovC,EAAGlsvC,IAAI,EAAEA,EAAEgB,OAAO,MAAMmnB,MAAMhlB,EAAE,KAAKrD,EAAE,GAAGE,CAAC,CAA0E,MAAzE,iBAAkBF,GAAG,OAAOA,EAAE,IAAI6B,EAAEa,KAAK,MAAM,OAAO1C,GAAG6B,EAAEa,KAAKoB,EAAE,GAAG9D,IAAW,KAAK,IAAK,QAAwC,IAAIgD,KAApCnB,EAAEa,KAAKgD,EAAE,UAAUnB,EAAErE,EAAEuD,EAAEzD,EAAE,KAAc0B,EAAE,GAAGiC,EAAElD,KAAKiB,EAAEsB,IAAY,OAAPiB,EAAEvC,EAAEsB,IAAY,OAAOA,GAAG,IAAK,WAAW,IAAK,0BAA0B,MAAMqlB,MAAMhlB,EAAE,IAAI,UAAU,IAAK,iBAAiBkB,EAAEN,EAAE,MAAM,IAAK,eAAeR,EAAEQ,EAAE,MAAM,IAAK,UAAU/D,EAAE+D,EAAE,MAAM,IAAK,QAAQjE,EAAEiE,EAAE,MAC/e,QAAQa,EAAEjD,EAAE2B,EAAER,EAAEiB,GAA8H,OAA3H,OAAO/D,EAAE4E,EAAEjD,EAAE2B,EAAE,UAAUtD,GAAG,OAAOqE,GAAGO,EAAEjD,EAAE2B,EAAE,UAAUe,GAAG,OAAOvE,EAAE8E,EAAEjD,EAAE2B,EAAE,QAAQxD,GAAG,OAAOyD,GAAGqB,EAAEjD,EAAE2B,EAAE,QAAQC,GAAG5B,EAAEa,KAAK,MAAa,KAAK,IAAK,WAAiC,IAAI,IAAIsC,KAA9BnD,EAAEa,KAAKgD,EAAE,aAA0BhE,EAAE,GAAGiC,EAAElD,KAAKiB,EAAEsD,IAAY,OAAPhF,EAAE0B,EAAEsD,IAAY,OAAOA,GAAG,IAAK,WAAW,IAAK,0BAA0B,MAAMqjB,MAAMhlB,EAAE,MAAM,QAAQyB,EAAEjD,EAAE2B,EAAEwB,EAAEhF,GAAe,OAAZ6B,EAAEa,KAAK,KAAY,KAAK,IAAK,QAAkC,IAAIqE,KAA9BlF,EAAEa,KAAKgD,EAAE,UAAU1F,EAAE,KAAc0B,EAAE,GAAGiC,EAAElD,KAAKiB,EAAEqF,IAAY,OAAP/D,EAAEtB,EAAEqF,IAAY,OAAOA,GAAG,IAAK,WAAW/G,EAAEgD,EAAE,MAAM,IAAK,0BAA0B,MAAMqlB,MAAMhlB,EAAE,MAC5gB,QAAQyB,EAAEjD,EAAE2B,EAAEuD,EAAE/D,GAAe,OAAZnB,EAAEa,KAAK,KAAY1C,EAAE,IAAK,UAAU,IAAK,MAA4B,IAAIuE,KAA1B1C,EAAEa,KAAKgD,EAAEvB,IAAInB,EAAEhD,EAAE,KAAc0B,EAAE,GAAGiC,EAAElD,KAAKiB,EAAE6C,IAAY,OAAPd,EAAE/B,EAAE6C,IAAY,OAAOA,GAAG,IAAK,WAAWvE,EAAEyD,EAAE,MAAM,IAAK,0BAA0BT,EAAES,EAAE,MAAM,QAAQqB,EAAEjD,EAAE2B,EAAEe,EAAEd,GAAe,GAAZ5B,EAAEa,KAAK,KAAQ,MAAMM,EAAE,CAAC,GAAG,MAAMhD,EAAE,MAAMqoB,MAAMhlB,EAAE,KAAK,GAAG,iBAAkBL,KAAK,WAAWA,GAAG,MAAMqlB,MAAMhlB,EAAE,KAAgB,OAAX3B,EAAEsB,EAAE6y0C,UAA8B,iBAAkBn00C,GAAG,EAAEA,EAAER,QAAQ,OAAOQ,EAAE,GAAGG,EAAEa,KAAK,KAAKhB,GAAGG,EAAEa,KAAK,GAAGhB,GAAG,CAAgD,MAA/C,iBAAkB1B,GAAG,OAAOA,EAAE,IAAI6B,EAAEa,KAAK,MAAa1C,EACvf,IAAK,OAAO,IAAK,OAAO,IAAK,KAAK,IAAK,MAAM,IAAK,QAAQ,IAAK,KAAK,IAAK,MAAM,IAAK,SAAS,IAAK,OAAO,IAAK,OAAO,IAAK,QAAQ,IAAK,SAAS,IAAK,QAAQ,IAAK,MAAmB,IAAI,IAAIoG,KAArBvE,EAAEa,KAAKgD,EAAEvB,IAAiBzC,EAAE,GAAGiC,EAAElD,KAAKiB,EAAE0E,IAAY,OAAPpG,EAAE0B,EAAE0E,IAAY,OAAOA,GAAG,IAAK,WAAW,IAAK,0BAA0B,MAAMiiB,MAAMhlB,EAAE,IAAIc,IAAI,QAAQW,EAAEjD,EAAE2B,EAAE4C,EAAEpG,GAAgB,OAAb6B,EAAEa,KAAK,MAAa,KAAK,IAAK,iBAAiB,IAAK,gBAAgB,IAAK,YAAY,IAAK,gBAAgB,IAAK,gBAAgB,IAAK,mBAAmB,IAAK,iBAAiB,IAAK,gBAAgB,OAAOkxB,EAAG/xB,EACnhBH,EAAEyC,EAAEX,GAAG,IAAK,OAAO,OAAO,IAAID,EAAEqy0C,eAAe/z0C,EAAEa,KAAK,mBAAmBkxB,EAAG/xB,EAAEH,EAAEyC,EAAEX,GAAG,QAAQ,IAAI,IAAIW,EAAE9C,QAAQ,MAAM,iBAAkBK,EAAEise,GAAG,OAAO/5c,EAAG/xB,EAAEH,EAAEyC,EAAEX,GAAyB,IAAIS,KAA1BpC,EAAEa,KAAKgD,EAAEvB,IAAInB,EAAEhD,EAAE,KAAc0B,EAAE,GAAGiC,EAAElD,KAAKiB,EAAEuC,IAAY,OAAPR,EAAE/B,EAAEuC,IAAY,OAAOA,GAAG,IAAK,WAAWjE,EAAEyD,EAAE,MAAM,IAAK,0BAA0BT,EAAES,EAAE,MAAM,IAAK,QAAQwsB,EAAGpuB,EAAE2B,EAAEC,GAAG,MAAM,IAAK,iCAAiC,IAAK,2BAA2B,MAAM,QAAQ20B,EAAGn0B,IAAI,mBAAoBR,GAAG,iBAAkBA,GAAG5B,EAAEa,KAAK,IAAIuB,EAAE,KAAKH,EAAEL,GAAG,KAChe,OADqe5B,EAAEa,KAAK,KACrfmB,EAAEhC,EAAEmB,EAAEhD,GAAUA,EAAE,CA6BayzB,EAArBlwB,EAAEY,EAAE4z0C,gBAAsBvxwC,OAAO9kE,EAAE8B,EAAE3B,EAAEs30C,cAAc510C,EAAE400C,eAAe500C,EAAE800C,gBAAe,EAAGr10C,EAAEO,EAAE400C,cAAc500C,EAAE400C,cA1CxH,SAAYt20C,EAAEsC,EAAEzC,GAAG,OAAOyC,GAAG,IAAK,SAAS,OAAOC,EAAE,EAAE,MAAM1C,EAAEM,MAAMN,EAAEM,MAAMN,EAAEs8H,cAAc,IAAK,MAAM,OAAO55H,EAAE,EAAE,MAAM,IAAK,OAAO,OAAOA,EAAE,EAAE,MAAM,IAAK,gBAAgB,OAAOA,EAAE,EAAE,MAAM,IAAK,QAAQ,OAAOA,EAAE,EAAE,MAAM,IAAK,QAAQ,IAAK,QAAQ,IAAK,QAAQ,OAAOA,EAAE,EAAE,MAAM,IAAK,WAAW,OAAOA,EAAE,EAAE,MAAM,IAAK,KAAK,OAAOA,EAAE,EAAE,MAAM,OAAO,GAAGvC,EAAE+z0C,eAAe,IAAI/z0C,EAAE+z0C,cAAcxx0C,EAAE,EAAE,MAAMvC,CAAC,CA0CjQ2uB,CAAGxtB,EAAEtB,EAAE8B,GAAG010C,GAAGr30C,EAAEsC,EAAEnE,GAAGuD,EAAE400C,cAAcn10C,EAAStB,GAAG,IAAK,OAAO,IAAK,OAAO,IAAK,KAAK,IAAK,MAAM,IAAK,QAAQ,IAAK,KAAK,IAAK,MAAM,IAAK,QAAQ,IAAK,SAAS,IAAK,OAAO,IAAK,OAAO,IAAK,QAAQ,IAAK,SAAS,IAAK,QAAQ,IAAK,MAAM,MAAM,QAAQ6B,EAAEijE,OAAO9jE,KAAK,KAAKhB,EAAE,KAAK6B,EAAE800C,gBAAe,CAIrW,CAAC,CAChE,SAASzy0C,GAAE/D,EAAEsC,EAAEzC,GAAY,GAATyC,EAAE+lF,KAAKxoF,EAAK,iBAAkBA,GAAG,OAAOA,EAAE,CAAC,OAAOA,EAAEg26B,UAAU,KAAKp/4B,EAAgC,YAA7BsgzC,GAAG/20C,EAAEsC,EAAEzC,EAAE0L,KAAK1L,EAAEosC,MAAMpsC,EAAE+gC,KAAY,KAAKiotC,EAAG,MAAMriuC,MAAMhlB,EAAE,MAAM,KAAK2nvC,EAAG,IAAIxnvC,EAAE9B,EAAE4x9B,MAA+B,YAAT1t9B,GAAE/D,EAAEsC,EAApBzC,EAAE8B,EAAE9B,EAAE4ggC,WAA0B,GAAG8pP,EAAG1qvC,GAAc,YAAV230C,GAAGx30C,EAAEsC,EAAEzC,GAA6G,IAArE8B,EAA9B,OAAO9B,GAAG,iBAAkBA,EAAI,KAAqC,mBAA/B8B,EAAE2nvC,GAAIzpvC,EAAEypvC,IAAKzpvC,EAAE,eAAsC8B,EAAE,QAAaA,EAAEA,EAAE/C,KAAKiB,IAAI,CAAY,KAAXA,EAAE8B,EAAE5B,QAAaG,KAAK,CAAC,IAAIwB,EAAE,GAAG,GAAGA,EAAEb,KAAKhB,EAAEM,OAAON,EAAE8B,EAAE5B,cAAcF,EAAEK,MAAMs30C,GAAGx30C,EAAEsC,EAAEZ,EAAE,CAAC,MAAM,CAAqC,MAApC1B,EAAE1B,OAAOI,UAAU6E,SAAS3E,KAAKiB,GAAS2mB,MAAMhlB,EAAE,GAAG,oBACpfxB,EAAE,qBAAqB1B,OAAOgU,KAAKzS,GAAGgM,KAAK,MAAM,IAAI7L,GAAI,CAAC,iBAAkBH,GAAG8B,EAAEW,EAAE4z0C,gBAAiBM,eAAev/yC,EAAG30B,EAAE4z0C,eAAevxwC,OAAO9kE,EAAEG,EAAEs30C,cAAc310C,EAAE600C,gBAAiB,iBAAkB320C,KAAI8B,EAAEW,EAAE4z0C,gBAAiBM,eAAev/yC,EAAG30B,EAAE4z0C,eAAevxwC,OAAO,GAAG9kE,EAAEG,EAAEs30C,cAAc310C,EAAE600C,gBAAgB,CAAC,SAASgB,GAAGx30C,EAAEsC,EAAEzC,GAAG,IAAI,IAAI8B,EAAE9B,EAAER,OAAOqC,EAAE,EAAEA,EAAEC,EAAED,IAAI,CAAC,IAAIvD,EAAEmE,EAAEgz0C,YAAYhz0C,EAAEgz0C,YAAY/rF,GAAGprvC,EAAEwD,EAAED,GAAG,IAAI210C,GAAGr30C,EAAEsC,EAAEzC,EAAE6B,GAAG,CAAC,QAAQY,EAAEgz0C,YAAYn30C,CAAC,CAAC,CAAC,CACzb,SAASk50C,GAAGr30C,EAAEsC,EAAEzC,GAAG,IAAI8B,EAAEW,EAAE4z0C,eAAeI,cAAc500C,EAAEY,EAAE8z0C,cAAcj40C,EAAEmE,EAAE6pC,QAAQ,IAAI,OAAOpoC,GAAE/D,EAAEsC,EAAEzC,EAAE,CAAC,MAAM6C,GAAG,GAAGmv8B,KAAK,iBAAkBnv8B,GAAG,OAAOA,GAAG,mBAAoBA,EAAEtC,KAAwT,MAAMkC,EAAE4z0C,eAAeI,cAC/f300C,EAAEW,EAAE8z0C,cAAc100C,EAAEY,EAAE6pC,QAAQhuC,EAAEwF,GAAExF,GAAGuE,EADiJ7C,EAAE6C,EAAE,IAAIvB,EAAEmB,EAAE4z0C,eAAet00C,EAAEyC,GAAErE,EAAEmB,EAAEwjE,OAAOtlE,OAAO,KAAK8B,EAAEm10C,cAAcn10C,EAAEq10C,gBAAe,GAAIr10C,EAAE69B,SAASn+B,KAAKe,GAAGT,EAAEq10C,gBAAe,EAAGx20C,EAAE8pvC,GAAG9pvC,EAAEsC,EAAE+lF,KAAK/lF,EAAE2z0C,gBAAgBr00C,EAAEU,EAAE6z0C,SAAS7z0C,EAAE8z0C,cAAc9z0C,EAAE6pC,QAAQ7pC,EAAEgz0C,aAAaS,KAAKl20C,EAAEO,KAAKJ,EAAEA,GAAGsC,EAAE4z0C,eAAeI,cAAc300C,EAAEW,EAAE8z0C,cAAc100C,EAAEY,EAAE6pC,QAAQhuC,EAAEwF,GAAExF,EACzb,CAAC,CAAC,SAASs50C,GAAGz30C,GAAG,IAAIsC,EAAEtC,EAAEi20C,iBAAgBj20C,EAAEA,EAAEk20C,gBAAiBzxzC,OAAO,EAAEizzC,GAAG140C,KAAKsD,EAAEtC,EAAE,CAC1H,SAASgovC,GAAGhovC,EAAEsC,EAAEzC,GAAG,IAAI8B,EAAE3B,EAAEi20C,gBAAgBj20C,EAAEk20C,eAAezxzC,OAAO,EAAE,OAAO9iB,GAAGW,EAAEuz0C,kBAAkB,IAAIvz0C,EAAEmiB,SAASniB,EAAEmiB,OAAO,EAAE,OAAOniB,EAAEw2C,aAAax2C,EAAEw2C,YAAYj4C,KAAK,SAASc,EAAEq3F,eAAer3F,EAAEs10C,oBAAoBt10C,EAAEs10C,mBAAkB,EAAGj30C,OAAE,IAASH,EAAE2mB,MAAMhlB,EAAE,MAAM3B,EAAE8B,EAAEy10C,YAAY900C,EAAE+5G,QAAQr8G,GAAG2B,EAAE000C,eAAe/z0C,EAAEq10C,yBAAyB920C,KAAKc,IAAIA,EAAEw10C,uBAAuBjzzC,SAAQ,SAASlkB,GAAG,OAAOgovC,GAAGhovC,EAAEsC,EAAEzC,EAAE,IAAG8B,EAAEw10C,uBAAuBnzzC,QAAQ1hB,EAAEuz0C,kBAAkB,IAAIvz0C,EAAEuz0C,kBAAkBl00C,EAAEW,EAAEs10C,cACte,CAAC,SAASnz0C,GAAEzE,EAAEsC,GAAG,GAAG,IAAIA,EAAEqiE,OAAOtlE,QAAQ,IAAIiD,EAAE08B,SAAS3/B,QAAQ,OAAOiD,EAAE08B,SAAS,GAAGu3yC,SAAS,CAAC,IAAI120C,EAAEyC,EAAE08B,SAAS,GAAGn/B,EAAE0qB,GAAGjoB,EAAEioB,GAAG1qB,EAAEw20C,eAAc,EAAG,IAAIx20C,EAAE4kB,QAAQhgB,GAAEzE,EAAEH,EAAE,MAAMG,EAAEk30C,kBAAkBr20C,KAAKyB,EAAE,CAC1M,SAASo10C,GAAG130C,EAAEsC,EAAEzC,GAAG,GAAG,OAAOyC,EAAE,CAAC,GAAGzC,EAAEw20C,cAAc,CAAC,GAAG,OAAOr20C,EAAE630C,qBAAqB,MAAMrxzC,MAAMhlB,EAAE,MAAMxB,EAAE630C,qBAAqBh40C,CAAC,CAACG,EAAE810C,mBAAmB,IAAI910C,EAAE810C,mBAAmB910C,EAAE020C,aAAaxz0C,IAAEZ,EAAEtC,EAAE830C,gBAAiB,MAAMx10C,EAAE02F,eAAe12F,EAAE200C,oBAAoB,IAAI300C,EAAE02F,cAAcn5F,EAAEw20C,eAAe,IAAIx20C,EAAE4kB,QAAQhgB,GAAEnC,EAAEzC,GAAGyC,EAAE+z0C,eAAer20C,EAAE+30C,oBAAoBl30C,KAAKyB,GAAGA,EAAE600C,uBAAuBjzzC,QAAQuzzC,GAAGz30C,GAAGsC,EAAE600C,uBAAuBnzzC,SAASnkB,EAAEw20C,eAAe,IAAIx20C,EAAE4kB,SAAShgB,GAAEnC,EAAEzC,GAAG,IAAIyC,EAAE400C,kBAAkB730C,QACpfiD,EAAE+z0C,eAAer20C,EAAEg40C,kBAAkBn30C,KAAKyB,KAAKtC,EAAE610C,kBAAkB,IAAI710C,EAAE610C,kBAAkB710C,EAAEA,EAAE430C,aAAe,CAC9G,SAAS7tF,GAAG/pvC,GAAG,GAAG,IAAIA,EAAEykB,OAAO,CAAC,IAAIniB,EAAEoB,GAAE7D,EAAE410C,GAAG12yC,QAAQ02yC,GAAG12yC,QAAQi2yC,GAAG,IAAIrz0C,EAAEa,GAAEA,GAAExC,EAAEs30C,cAAc,IAAI,IAAoBn50C,EAAhBuD,EAAE1B,EAAEg20C,YAAc,IAAI730C,EAAE,EAAEA,EAAEuD,EAAErC,OAAOlB,IAAI,CAAC,IAAIgD,EAAEO,EAAEvD,GAAOyD,EAAE5B,EAAE0C,EAAEvB,EAAE+00C,eAAe,GAAG,IAAIxz0C,EAAE+hB,OAAO,CAAC9gB,GAAExC,EAAEgrC,SAAS,IAAIpoC,GAAEnC,EAAET,EAAEA,EAAEknF,MAAMzmF,EAAE010C,cAAcrD,sBAAsBvx0C,EAAE8z0C,gBAAgB9z0C,EAAE+z0C,cAAc/z0C,EAAEiiE,OAAO9jE,KAAK,kBAAkBM,EAAEg10C,SAASlyzC,OAAO9iB,GAAGuB,EAAE+hB,OAAO,EAAEizzC,GAAG910C,EAAET,EAAE800C,gBAAgBvz0C,EAAE,CAAC,MAAMiC,GAAG,GAAGkt8B,KAAK,iBAAkBlt8B,GAAG,OAAOA,GAAG,mBAAoBA,EAAEvE,KAAK,CAAC,IAAIgC,EAAEjB,EAAE400C,KAAKpx0C,EAAEvE,KAAKgC,EAAEA,EAAE,KAAK,CAACjB,EAAEg10C,SAASlyzC,OAAO9iB,GACngBuB,EAAE+hB,OAAO,EAAE,IAAIpmB,EAAE8C,EAAE800C,gBAAgB/w0C,EAAEP,EAAExB,EAAEyB,GAAEhD,EAAEsD,GAAG,OAAO7G,EAAEmF,GAAE5B,EAAEsD,IAAI7G,EAAE26F,eAAe36F,EAAE440C,oBAAoB540C,EAAE440C,mBAAkB,EAAG540C,EAAE+40C,YAAYj00C,EAAE9E,EAAEg40C,eAAez00C,EAAE+10C,yBAAyB920C,KAAKxC,KAAKuD,EAAEi00C,kBAAqB,IAAIj00C,EAAEi00C,kBAAoCtx0C,EAAb3C,EAAEg20C,aAAe,CAAC,CAAU,CAAC,CAACl20C,EAAEugB,OAAO,EAAE9jB,GAAG,OAAO6B,EAAE84C,aAAasvsC,GAAGpovC,EAAEA,EAAE84C,YAAY,CAAC,MAAMn0C,GAAGC,GAAE5E,EAAE2E,GAAGnB,GAAExD,EAAE2E,EAAE,CAAC,QAAQnC,GAAEb,EAAE8z0C,GAAG12yC,QAAQl/B,EAAEA,IAAIm10C,IAAIrx0C,GAAErB,EAAE,CAAC,CAAC,CAC7Y,SAASmB,GAAEzD,EAAEsC,EAAEzC,GAAsB,OAAnBA,EAAEw20C,eAAc,EAAUx20C,EAAE4kB,QAAQ,KAAK,EAAE,IAAI9iB,EAAE9B,EAAE0qB,GAAGvqB,EAAEi40C,gBAAwJ,OAAxIp40C,EAAE220C,gBAAe,EAAG320C,EAAE420C,cAAa,EAAGz20C,EAAEA,EAAEs30C,cAAch10C,EAAEzB,KAAK,kBAAkByB,EAAEzB,KAAKb,EAAEk40C,mBAAmBl40C,EAAE2B,EAAE4B,SAAS,IAAIjB,EAAEzB,KAAKb,GAAUsC,EAAEzB,KAAK,iBAAiB,KAAK,EAAEhB,EAAE4kB,OAAO,EAAE,IAAI/iB,GAAE,EAAGC,EAAE9B,EAAE8kE,OAAO,IAAIxmE,EAAE,EAAE0B,EAAEA,EAAEm/B,SAAS,IAAI,IAAI79B,EAAE,EAAEA,EAAEtB,EAAER,OAAO8B,IAAI,CAAC,IAAIO,EAAE7B,EAAEsB,GAAGhD,EAAEuD,EAAEsa,MAAM7d,IAAImE,EAAEzB,KAAKc,EAAExD,IAAIuD,EAAEwmvC,GAAGlovC,EAAEsC,EAAEZ,EAAE,CAAC,KAAKvD,EAAEwD,EAAEtC,OAAO,EAAElB,IAAImE,EAAEzB,KAAKc,EAAExD,IAAiC,OAA7BA,EAAEwD,EAAEtC,SAASqC,EAAEY,EAAEzB,KAAKc,EAAExD,KAAYuD,EAAE,QAAQ,MAAM8kB,MAAMhlB,EAAE,MAAO,CAChf,SAAS0mvC,GAAGlovC,EAAEsC,EAAEzC,GAAG,IAAI8B,EAAE9B,EAAE020C,SAAS,GAAG,OAAO500C,EAAE,OAAO8B,GAAEzD,EAAEsC,EAAEzC,GAAsB,GAAnB8B,EAAE000C,eAAc,EAAM100C,EAAEs10C,kBAAkB,OAAOj30C,EAAEs30C,cAAcrD,uBAAuBty0C,EAAEA,EAAEy10C,YAAY900C,EAAEzB,KAAK,mBAAmByB,EAAEzB,KAAK,aAAac,IAAIW,EAAEzB,KAAK,gBAAgBc,EAAEM,EAAEN,GAAGW,EAAEzB,KAAKc,GAAGW,EAAEzB,KAAK,MAAMyB,EAAEzB,KAAK,iBAAiB4C,GAAEzD,EAAEsC,EAAEzC,KAAKG,EAAEs30C,cAAcrD,sBAAwB3x0C,EAAEzB,KAAK,mBAAqB,GAAG,EAAEc,EAAEq3F,aAAa,CAACr3F,EAAEq10C,cAAch30C,EAAEi40C,gBAAgB,EAAEt20C,EAAEu10C,kBAAkB730C,QAAQW,EAAEg40C,kBAAkBn30C,KAAKc,GAAG,IAAID,EAAE1B,EAAEs30C,cAC3en50C,EAAEuD,EAAEy20C,iBAA6F,OAA5Ez20C,EAAEA,EAAE020C,eAAej60C,EAAEoF,SAAS,IAAI5B,EAAEA,EAAE4oB,GAAG7oB,EAAE2mvC,EAAG/lvC,EAAEtC,EAAEs30C,cAAc310C,GAAG8B,GAAEzD,EAAEsC,EAAEzC,GAAUyC,EAAEzB,KAAK,kBAAkB,CAAC,GAAGc,EAAEiuV,SAAS5vV,EAAEq40C,qBAAqB,OAAO120C,EAAEq10C,cAAch30C,EAAEi40C,gBAAgBj40C,EAAE+30C,oBAAoBl30C,KAAKc,GAAG0mvC,EAAG/lvC,EAAEtC,EAAEs30C,cAAc310C,EAAE4oB,IAAI9mB,GAAEzD,EAAEsC,EAAEzC,GAAGyC,EAAEzB,KAAK,mBAAwG,GAArFb,EAAEs30C,cAAcrD,sBAAsB3x0C,EAAEzB,KAAK,kBAA2C,KAAzBhB,EAAE8B,EAAEu10C,mBAA2B730C,OAAO,MAAMmnB,MAAMhlB,EAAE,MACna,OADya0mvC,GAAGlovC,EAAEsC,EAAEzC,EAAE,MAAMG,EAAEs30C,cAAcrD,sBAAwB3x0C,EAAEzB,KAAK,kBAC/d,CAAC,SAASopvC,GAAGjqvC,EAAEsC,EAAEzC,GAAwD,OA9CjF,SAAYG,EAAEsC,EAAEzC,EAAE8B,GAAG,OAAO9B,EAAEk00C,eAAe,KAAK,EAAE,KAAK,EAAE,OAAO/z0C,EAAEa,KAAK,oBAAoBb,EAAEa,KAAKyB,EAAEg20C,eAAeh20C,EAAEX,EAAE4B,SAAS,IAAIvD,EAAEa,KAAKyB,GAAGtC,EAAEa,KAAK,MAAM,KAAK,EAAE,OAAOb,EAAEa,KAAK,qDAAqDb,EAAEa,KAAKyB,EAAEg20C,eAAeh20C,EAAEX,EAAE4B,SAAS,IAAIvD,EAAEa,KAAKyB,GAAGtC,EAAEa,KAAK,MAAM,KAAK,EAAE,OAAOb,EAAEa,KAAK,sDAAsDb,EAAEa,KAAKyB,EAAEg20C,eAAeh20C,EAAEX,EAAE4B,SAAS,IAAIvD,EAAEa,KAAKyB,GAAGtC,EAAEa,KAAK,MAAM,KAAK,EAAE,OAAOb,EAAEa,KAAK,sBAAsBb,EAAEa,KAAKyB,EAAEg20C,eACteh20C,EAAEX,EAAE4B,SAAS,IAAIvD,EAAEa,KAAKyB,GAAGtC,EAAEa,KAAK,MAAM,KAAK,EAAE,OAAOb,EAAEa,KAAK,6BAA6Bb,EAAEa,KAAKyB,EAAEg20C,eAAeh20C,EAAEX,EAAE4B,SAAS,IAAIvD,EAAEa,KAAKyB,GAAGtC,EAAEa,KAAK,MAAM,KAAK,EAAE,OAAOb,EAAEa,KAAK,0BAA0Bb,EAAEa,KAAKyB,EAAEg20C,eAAeh20C,EAAEX,EAAE4B,SAAS,IAAIvD,EAAEa,KAAKyB,GAAGtC,EAAEa,KAAK,MAAM,KAAK,EAAE,OAAOb,EAAEa,KAAK,gCAAgCb,EAAEa,KAAKyB,EAAEg20C,eAAeh20C,EAAEX,EAAE4B,SAAS,IAAIvD,EAAEa,KAAKyB,GAAGtC,EAAEa,KAAK,MAAM,QAAQ,MAAM2lB,MAAMhlB,EAAE,MAAO,CA6C/Xk1B,CAAGp0B,EAAEtC,EAAEs30C,cAAcz30C,EAAEy20C,cAAcz20C,EAAE0qB,IAAI29tC,GAAGlovC,EAAEsC,EAAEzC,GA5C9E,SAAYG,EAAEsC,GAAG,OAAOA,EAAEyx0C,eAAe,KAAK,EAAE,KAAK,EAAE,OAAO/z0C,EAAEa,KAAK,UAAU,KAAK,EAAE,OAAOb,EAAEa,KAAK,UAAU,KAAK,EAAE,OAAOb,EAAEa,KAAK,WAAW,KAAK,EAAE,OAAOb,EAAEa,KAAK,YAAY,KAAK,EAAE,OAAOb,EAAEa,KAAK,oBAAoB,KAAK,EAAE,OAAOb,EAAEa,KAAK,iBAAiB,KAAK,EAAE,OAAOb,EAAEa,KAAK,uBAAuB,QAAQ,MAAM2lB,MAAMhlB,EAAE,MAAO,CA4C/OmnvC,CAAGrmvC,EAAEzC,EAAEy20C,cAAc,CAC7G,SAASnuF,GAAGnovC,EAAEsC,EAAEzC,GAAG,IAAI,IAAI8B,EAAE9B,EAAEq30C,kBAAkBx10C,EAAE,EAAEA,EAAEC,EAAEtC,OAAOqC,IAAIyovC,GAAGnqvC,EAAEsC,EAAEzC,EAAE8B,EAAED,IAA6lB,GAAzlBC,EAAEtC,OAAO,EAAEW,EAAEA,EAAEs30C,cAAc310C,EAAE9B,EAAE0qB,GAAG1qB,EAAEA,EAAEm30C,cAAc100C,EAAEzB,KAAKb,EAAEu40C,mBAAmBv40C,EAAEw40C,6BAA6Bl20C,EAAEzB,KAAK,UAAUb,EAAEw40C,8BAA6B,EAAGl20C,EAAEzB,KAAK,8aAAib,OAC/qBc,EAAE,MAAM6kB,MAAMhlB,EAAE,MAAiF,OAA3E3B,EAAEA,EAAE0D,SAAS,IAAIjB,EAAEzB,KAAKc,GAAGW,EAAEzB,KAAK,OAAOyB,EAAEzB,KAAKb,EAAEs40C,eAAeh20C,EAAEzB,KAAKhB,GAAUyC,EAAEzB,KAAK,eAAiB,CAChI,SAASspvC,GAAGnqvC,EAAEsC,EAAEzC,EAAE8B,GAAG,GAAG,IAAIA,EAAE8iB,OAAO,OAAM,EAAG,IAAI/iB,EAAEC,EAAE4oB,GAAG,IAAI,IAAI7oB,EAAE,CAAC,IAAI,KAAKC,EAAE4oB,GAAG1qB,EAAEm30C,eAAe,MAAMxwzC,MAAMhlB,EAAE,MAAM,OAAOyovC,GAAGjqvC,EAAEsC,EAAEX,EAAE,CACxD,OADyDsovC,GAAGjqvC,EAAEsC,EAAEX,GAAG3B,EAAEA,EAAEs30C,cAAch10C,EAAEzB,KAAKb,EAAEu40C,mBAAmBv40C,EAAEy40C,4BAA4Bn20C,EAAEzB,KAAK,UAAUb,EAAEy40C,6BAA4B,EAAGn20C,EAAEzB,KAAK,2MAA2MyB,EAAEzB,KAAKb,EAAEs40C,eAC3e520C,EAAEA,EAAE6B,SAAS,IAAIjB,EAAEzB,KAAKa,GAAGY,EAAEzB,KAAK,OAAOyB,EAAEzB,KAAKb,EAAEk40C,mBAAmB510C,EAAEzB,KAAKa,GAAUY,EAAEzB,KAAK,eAAiB,CAC9G,SAASunvC,GAAGpovC,EAAEsC,GAAG,IAAI,IAAIzC,EAAEG,EAAE630C,qBAAqB,GAAG,OAAOh40C,GAAG,IAAIG,EAAE810C,iBAAiB,CAAC5tF,GAAGlovC,EAAEsC,EAAEzC,GAAGG,EAAE630C,qBAAqB,KAAK,IAAIl20C,EAAE3B,EAAEs30C,cAAcoB,gBAAgB,IAAI740C,EAAE,EAAEA,EAAE8B,EAAEtC,OAAO,EAAEQ,IAAIyC,EAAEzB,KAAKc,EAAE9B,IAAIA,EAAE8B,EAAEtC,QAAQiD,EAAEzB,KAAKc,EAAE9B,GAAG,CAAC,IAAiC1B,EAA7BuD,EAAE1B,EAAE230C,yBAA2B,IAAIx50C,EAAE,EAAEA,EAAEuD,EAAErC,OAAOlB,IAAI,CAAC,IAAIgD,EAAEO,EAAEvD,GAAGwD,EAAEW,EAAE,IAAIV,EAAE5B,EAAEs30C,cAAc500C,EAAEvB,EAAEopB,GAAGnoB,EAAEjB,EAAEi20C,YAAY/40C,EAAE8C,EAAEw1U,aAAazxU,EAAE/D,EAAEw30C,oBAC9W,GADkYh30C,EAAEd,KAAKe,EAAE220C,mBAAmB320C,EAAEg30C,yBAAyBj30C,EAAEd,KAAK,UAAUe,EAAEg30C,0BAAyB,EAAGj30C,EAAEd,KAAK,2LAC5e,OAAO6B,EAAE,MAAM8jB,MAAMhlB,EAAE,MAA4B,GAAtBG,EAAEd,KAAK6B,GAAGf,EAAEd,KAAK,KAAQuB,GAAG/D,GAAG6G,EAAE,CAACvD,EAAEd,KAAK,KAAK,IAAIsC,EAAEylvC,EAAGxmvC,GAAG,IAAIT,EAAEd,KAAKsC,EAAE,CAAC,GAAG9E,GAAG6G,EAAE,CAACvD,EAAEd,KAAK,KAAK,IAAI0D,EAAEqkvC,EAAGvqvC,GAAG,IAAIsD,EAAEd,KAAK0D,EAAE,CAAC,GAAGW,EAAE,CAACvD,EAAEd,KAAK,KAAK,IAAI8D,EAAEikvC,EAAG1jvC,GAAGvD,EAAEd,KAAK8D,EAAE,CAAC,IAAIhD,EAAEd,KAAK,eAAuD,OAArCb,EAAE84C,YAAY,KAAK36C,SAAIuD,EAAEugB,OAAO,EAAE9jB,EAAU,CAACuD,EAAEugB,OAAO,EAAE9jB,GAAG,IAAI60B,EAAGhzB,EAAE+30C,oBAAoB,IAAI550C,EAAE,EAAEA,EAAE60B,EAAG3zB,OAAOlB,IAAI,IAAIgqvC,GAAGnovC,EAAEsC,EAAE0wB,EAAG70B,IAA2C,OAAtC6B,EAAE84C,YAAY,KAAK36C,SAAI60B,EAAG/Q,OAAO,EAAE9jB,GAAU60B,EAAG/Q,OAAO,EAAE9jB,GAAG,IAAI4wB,EAAG/uB,EAAEg40C,kBAAkB,IAAI750C,EAAE,EAAEA,EAAE4wB,EAAG1vB,OAAOlB,IAAI,CAAC,IAAIuhX,EAAG3wV,EAAG5wB,GAAG6B,EAAE,CAAC0B,EAAE1B,EAAEmB,EAAEmB,EAAE,IAAI8uB,EAAGsuV,EAAGw39B,kBACjf,IAAIt10C,EAAE,EAAEA,EAAEwvB,EAAG/xB,OAAOuC,IAAI,IAAIuovC,GAAGzovC,EAAEP,EAAEu+W,EAAGtuV,EAAGxvB,IAAI,CAACA,IAAIwvB,EAAGnP,OAAO,EAAErgB,GAAG,IAAIi30C,GAAG,EAAG,MAAM740C,CAAC,CAACoxB,EAAGnP,OAAO,EAAErgB,GAAGi30C,GAAG,CAAE,CAAC,IAAIA,EAA0C,OAAtC740C,EAAE84C,YAAY,KAAK36C,SAAI4wB,EAAG9M,OAAO,EAAE9jB,EAAU,CAAC4wB,EAAG9M,OAAO,EAAE9jB,GAAG,IAAI+vB,EAAGluB,EAAE+30C,oBAAoB,IAAI550C,EAAE,EAAEA,EAAE+vB,EAAG7uB,OAAOlB,IAAI,IAAIgqvC,GAAGnovC,EAAEsC,EAAE4rB,EAAG/vB,IAA2C,OAAtC6B,EAAE84C,YAAY,KAAK36C,SAAI+vB,EAAGjM,OAAO,EAAE9jB,GAAU+vB,EAAGjM,OAAO,EAAE9jB,EAAE,CAAC,QAAQ,IAAI6B,EAAE610C,iBAAiB,IAAI710C,EAAEg20C,YAAY320C,QAAQ,IAAIW,EAAE230C,yBAAyBt40C,QAAQ,IAAIW,EAAE+30C,oBAAoB140C,QAAQiD,EAAEzB,KAAK,KAAK,CAAC,CAChc,SAASonvC,GAAGjovC,EAAEsC,GAAG,IAAI,IAAIzC,EAAEG,EAAE840C,eAAej50C,EAAEqkB,SAAQ,SAASrkB,GAAG,OAAOmovC,GAAGnovC,EAAEG,EAAEsC,EAAE,IAAGzC,EAAEmkB,QAAQ,OAAOhkB,EAAE84C,aAAasvsC,GAAGpovC,EAAEA,EAAE84C,YAAY,CAAC,MAAMn3C,GAAGiD,GAAE5E,EAAE2B,GAAG6B,GAAExD,EAAE2B,EAAE,CAAC,CAAC,SAAS2mvC,KAAK,CAC/K,SAAS8B,GAAGpqvC,EAAEsC,EAAEzC,EAAE8B,GAAG,IAAID,GAAE,EAAGvD,EAAE,KAAKgD,EAAE,GAAGS,EAAE,CAACf,KAAK,SAASb,GAAoB,OAAjB,OAAOA,IAAImB,GAAGnB,IAAS,CAAE,EAAEo9I,QAAQ,SAASp9I,GAAG0B,GAAE,EAAGvD,EAAE6B,CAAC,GAAG0C,GAAE,EAAkJ,GAA/I1C,EAjC7H,SAAYA,EAAEsC,EAAEzC,EAAE8B,EAAED,EAAEvD,EAAEgD,EAAES,EAAEc,GAAG,IAAIN,EAAE,GAAG/D,EAAE,IAAIsmB,IACH,OADya9kB,EAAEwE,GAApa/B,EAAE,CAACw2C,YAAY,KAAKw+xC,cAAch10C,EAAE+10C,qBAAsC120C,EAAE8iB,OAAO,EAAEmyzC,WAAW,KAAKqB,cAAc,EAAEpC,gBAAgB,EAAEC,iBAAiB,EAAE+B,qBAAqB,KAAKiB,eAAez60C,EAAE230C,YAAY5z0C,EAAEu10C,yBAAyB,GAAGI,oBAAoB,GAAGC,kBAAkB,GAAG37tC,aAAQ,IAAS36G,EAAEk00C,GAAGl00C,EAAEk20C,WAAsB100C,GAAI400C,kBAAa,IAAS320C,EAAE+B,GAAE/B,EAAEu10C,aAAwBxz0C,GAAIyz0C,aAAwBzz0C,IAAW,EAAE,KAAKrD,GAAE,GAAG,IAAMw20C,eAC5e,EAAGr20C,EAAE8pvC,GAAGxnvC,EAAEtC,EAAE,KAAKH,EAAExB,EAAE6rvC,EAAG,KAAKtk6B,IAAIxjV,EAAEvB,KAAKb,GAAUsC,CAAC,CAgC4EunvC,CAAG7pvC,EAnDlI,SAAYA,EAAEsC,GAAqB,MAAM,CAACo20C,gBAAgB,GAAGH,kBAAkB,WAAWL,mBAAzE510C,OAAE,IAASA,EAAE,GAAGA,GAA6E,KAAKg20C,cAAch20C,EAAE,KAAK810C,eAAe910C,EAAE,KAAK6spB,SAAS7spB,EAAE610C,eAAe,EAAEM,6BAA4B,EAAGD,8BAA6B,EAAGI,0BAAyB,EAAG3E,qBAAqBj00C,EAAE,CAmDxKq2B,CAAGx2B,EAAEyC,EAAEA,EAAEy20C,sBAAiB,GAAQ,CAAChF,cAAc,EAAEhunB,cAAc,MAAMhnpB,IAASuprC,GAAG,GAAO,WAAW5lvC,GAAE,CAAE,IAAiBqnvC,GAAG/pvC,GAAGiovC,GAAGjovC,EAAE2B,GAAM,IAAI3B,EAAEykB,OAAOzkB,EAAEykB,OAAO,EAAE7iB,EAAEw7I,QAAQp9I,EAAE420C,iBAAiB,GAAG,IAAI520C,EAAEykB,QAAQ,OAAOzkB,EAAE84C,YAAY,CAAC94C,EAAE84C,YAAYl3C,EAAE,IAAIwmvC,GAAGpovC,EAAE4B,EAAE,CAAC,MAAMQ,GAAGwC,GAAE5E,EAAEoC,GAAGoB,GAAExD,EAAEoC,EAAE,CAAC,CAAC,GAAGV,EAAE,MAAMvD,EAAE,IAAIuE,EAAE,MAAM8jB,MAAMhlB,EAAE,MAAM,OAAOL,CAAC,CAC9cM,EAAQu30C,mBAAmB,WAAW,MAAMxyzC,MAAMhlB,EAAE,KAAM,EAAEC,EAAQ2j6B,qBAAqB,SAASpl6B,EAAEsC,GAAG,OAAO8nvC,GAAGpqvC,EAAEsC,GAAE,EAAG,8NAA8N,EAAEb,EAAQw30C,yBAAyB,WAAW,MAAMzyzC,MAAMhlB,EAAE,KAAM,EAAEC,EAAQ8wiC,eAAe,SAASvyiC,EAAEsC,GAAG,OAAO8nvC,GAAGpqvC,EAAEsC,GAAE,EAAG,mXAAmX,EACn0Bb,EAAQ6D,QAAQ,uCCnFH,IAAI0qB,EAAG,EAAQ,OAAS,SAASttB,EAAE1C,GAAG,IAAI,IAAIsC,EAAE,yDAAyDtC,EAAEH,EAAE,EAAEA,EAAET,UAAUC,OAAOQ,IAAIyC,GAAG,WAAWgsB,mBAAmBlvB,UAAUS,IAAI,MAAM,yBAAyBG,EAAE,WAAWsC,EAAE,gHAAgH,CAAC,IAAId,EAAE,KAAKnD,EAAE,EAC9W,SAASyD,EAAE9B,EAAEsC,GAAG,GAAG,IAAIA,EAAEjD,OAAO,GAAG,IAAIiD,EAAEjD,OAAO,EAAEhB,IAAI2B,EAAEgoD,QAAQ,IAAIrpC,WAAWnd,EAAE0lB,OAAO,EAAE7oB,IAAImD,EAAE,IAAImd,WAAW,KAAKtgB,EAAE,GAAG2B,EAAEgoD,QAAQ1lD,OAAO,CAAC,IAAIzC,EAAE2B,EAAEnC,OAAOhB,EAAEwB,EAAEyC,EAAEjD,SAAS,IAAIQ,EAAEG,EAAEgoD,QAAQxmD,IAAIA,EAAEyJ,IAAI3I,EAAEmkB,SAAS,EAAE5mB,GAAGxB,GAAG2B,EAAEgoD,QAAQxmD,GAAGc,EAAEA,EAAEmkB,SAAS5mB,IAAI2B,EAAE,IAAImd,WAAW,KAAKtgB,EAAE,GAAGmD,EAAEyJ,IAAI3I,EAAEjE,GAAGA,GAAGiE,EAAEjD,MAAM,CAAC,CAAC,SAASjB,EAAE4B,EAAEsC,GAAU,OAAPR,EAAE9B,EAAEsC,IAAS,CAAE,CAAC,SAAS0wB,EAAGhzB,GAAGwB,GAAG,EAAEnD,IAAI2B,EAAEgoD,QAAQ,IAAIrpC,WAAWnd,EAAE0lB,OAAO,EAAE7oB,IAAImD,EAAE,KAAKnD,EAAE,EAAE,CAAC,IAAI0wB,EAAG,IAAIjH,YAAY,SAASzmB,EAAErB,GAAG,OAAO+uB,EAAGlI,OAAO7mB,EAAE,CAAC,SAASuC,EAAEvC,GAAG,OAAO+uB,EAAGlI,OAAO7mB,EAAE,CAC7e,SAASoxB,EAAGpxB,EAAEsC,GAAG,mBAAoBtC,EAAEc,MAAMd,EAAEc,MAAMwB,GAAGtC,EAAEgT,OAAO,CAAC,IAAI/P,EAAE3E,OAAOI,UAAUC,eAAeuvB,EAAG,8VAA8V8C,EAAG,CAAC,EAAEG,EAAG,CAAC,EACnd,SAASjE,EAAGltB,GAAG,QAAGiD,EAAErE,KAAKuyB,EAAGnxB,KAAeiD,EAAErE,KAAKoyB,EAAGhxB,KAAekuB,EAAG7jB,KAAKrK,GAAUmxB,EAAGnxB,IAAG,GAAGgxB,EAAGhxB,IAAG,GAAS,GAAE,CAAC,SAASgC,EAAEhC,EAAEsC,EAAEzC,EAAE8B,EAAED,EAAEvD,EAAEgD,GAAGnC,KAAKw00C,gBAAgB,IAAIlx0C,GAAG,IAAIA,GAAG,IAAIA,EAAEtD,KAAKywF,cAAc9tF,EAAE3C,KAAKy00C,mBAAmB/x0C,EAAE1C,KAAK000C,gBAAgB7z0C,EAAEb,KAAKg8M,aAAah7M,EAAEhB,KAAKuM,KAAKjJ,EAAEtD,KAAK200C,YAAYx10C,EAAEa,KAAK400C,kBAAkBzy0C,CAAC,CAAC,IAAIwD,EAAE,CAAC,EAC7U,uIAAuIf,MAAM,KAAKsgB,SAAQ,SAASlkB,GAAG2E,EAAE3E,GAAG,IAAIgC,EAAEhC,EAAE,GAAE,EAAGA,EAAE,MAAK,GAAG,EAAG,IAAG,CAAC,CAAC,gBAAgB,kBAAkB,CAAC,YAAY,SAAS,CAAC,UAAU,OAAO,CAAC,YAAY,eAAekkB,SAAQ,SAASlkB,GAAG,IAAIsC,EAAEtC,EAAE,GAAG2E,EAAErC,GAAG,IAAIN,EAAEM,EAAE,GAAE,EAAGtC,EAAE,GAAG,MAAK,GAAG,EAAG,IAAG,CAAC,kBAAkB,YAAY,aAAa,SAASkkB,SAAQ,SAASlkB,GAAG2E,EAAE3E,GAAG,IAAIgC,EAAEhC,EAAE,GAAE,EAAGA,EAAEuO,cAAc,MAAK,GAAG,EAAG,IAC1e,CAAC,cAAc,4BAA4B,YAAY,iBAAiB2V,SAAQ,SAASlkB,GAAG2E,EAAE3E,GAAG,IAAIgC,EAAEhC,EAAE,GAAE,EAAGA,EAAE,MAAK,GAAG,EAAG,IAAG,8OAA8O4D,MAAM,KAAKsgB,SAAQ,SAASlkB,GAAG2E,EAAE3E,GAAG,IAAIgC,EAAEhC,EAAE,GAAE,EAAGA,EAAEuO,cAAc,MAAK,GAAG,EAAG,IACxb,CAAC,UAAU,WAAW,QAAQ,YAAY2V,SAAQ,SAASlkB,GAAG2E,EAAE3E,GAAG,IAAIgC,EAAEhC,EAAE,GAAE,EAAGA,EAAE,MAAK,GAAG,EAAG,IAAG,CAAC,UAAU,YAAYkkB,SAAQ,SAASlkB,GAAG2E,EAAE3E,GAAG,IAAIgC,EAAEhC,EAAE,GAAE,EAAGA,EAAE,MAAK,GAAG,EAAG,IAAG,CAAC,OAAO,OAAO,OAAO,QAAQkkB,SAAQ,SAASlkB,GAAG2E,EAAE3E,GAAG,IAAIgC,EAAEhC,EAAE,GAAE,EAAGA,EAAE,MAAK,GAAG,EAAG,IAAG,CAAC,UAAU,SAASkkB,SAAQ,SAASlkB,GAAG2E,EAAE3E,GAAG,IAAIgC,EAAEhC,EAAE,GAAE,EAAGA,EAAEuO,cAAc,MAAK,GAAG,EAAG,IAAG,IAAIgoB,EAAG,gBAAgB,SAASxB,EAAG/0B,GAAG,OAAOA,EAAE,GAAG4vD,aAAa,CACxZ,0jCAA0jChsD,MAAM,KAAKsgB,SAAQ,SAASlkB,GAAG,IAAIsC,EAAEtC,EAAEyL,QAAQ8qB,EACzmCxB,GAAIpwB,EAAErC,GAAG,IAAIN,EAAEM,EAAE,GAAE,EAAGtC,EAAE,MAAK,GAAG,EAAG,IAAG,2EAA2E4D,MAAM,KAAKsgB,SAAQ,SAASlkB,GAAG,IAAIsC,EAAEtC,EAAEyL,QAAQ8qB,EAAGxB,GAAIpwB,EAAErC,GAAG,IAAIN,EAAEM,EAAE,GAAE,EAAGtC,EAAE,gCAA+B,GAAG,EAAG,IAAG,CAAC,WAAW,WAAW,aAAakkB,SAAQ,SAASlkB,GAAG,IAAIsC,EAAEtC,EAAEyL,QAAQ8qB,EAAGxB,GAAIpwB,EAAErC,GAAG,IAAIN,EAAEM,EAAE,GAAE,EAAGtC,EAAE,wCAAuC,GAAG,EAAG,IAAG,CAAC,WAAW,eAAekkB,SAAQ,SAASlkB,GAAG2E,EAAE3E,GAAG,IAAIgC,EAAEhC,EAAE,GAAE,EAAGA,EAAEuO,cAAc,MAAK,GAAG,EAAG,IACld5J,EAAEkv0C,UAAU,IAAI7x0C,EAAE,YAAY,GAAE,EAAG,aAAa,gCAA+B,GAAG,GAAI,CAAC,MAAM,OAAO,SAAS,cAAckiB,SAAQ,SAASlkB,GAAG2E,EAAE3E,GAAG,IAAIgC,EAAEhC,EAAE,GAAE,EAAGA,EAAEuO,cAAc,MAAK,GAAG,EAAG,IAC5L,IAAIxJ,EAAE,CAACm7P,yBAAwB,EAAGC,aAAY,EAAGC,mBAAkB,EAAGC,kBAAiB,EAAGC,kBAAiB,EAAGC,SAAQ,EAAGC,cAAa,EAAGC,iBAAgB,EAAGC,aAAY,EAAG7pB,SAAQ,EAAG8pB,MAAK,EAAGC,UAAS,EAAGC,cAAa,EAAGC,YAAW,EAAGC,cAAa,EAAGC,WAAU,EAAG27G,UAAS,EAAG17G,SAAQ,EAAGC,YAAW,EAAGC,aAAY,EAAGC,cAAa,EAAGC,YAAW,EAAGC,eAAc,EAAGC,gBAAe,EAAGC,iBAAgB,EAAG5d,YAAW,EAAGkwlC,WAAU,EAAG9qlC,YAAW,EAAGp+G,SAAQ,EAAGqH,OAAM,EAAG4vH,SAAQ,EAAGC,SAAQ,EAAGC,QAAO,EAAGnkO,QAAO,EAAGe,MAAK,EACzfsjO,aAAY,EAAGC,cAAa,EAAGC,aAAY,EAAGC,iBAAgB,EAAGC,kBAAiB,EAAGC,kBAAiB,EAAGC,eAAc,EAAGjkB,aAAY,GAAIxtN,EAAG,CAAC,SAAS,KAAK,MAAM,KAAKxyB,OAAOgU,KAAKvN,GAAGmf,SAAQ,SAASlkB,GAAG8wB,EAAG5M,SAAQ,SAAS5hB,GAAGA,EAAEA,EAAEtC,EAAE6X,OAAO,GAAG+3C,cAAc5vD,EAAEs2B,UAAU,GAAGvxB,EAAEzC,GAAGyC,EAAE/E,EAAE,GAAE,IAAG,IAAI8uB,EAAG,UACnS,SAAS3rB,EAAEnD,GAAG,GAAG,kBAAmBA,GAAG,iBAAkBA,EAAE,MAAM,GAAGA,EAAEA,EAAE,GAAGA,EAAE,IAAIsC,EAAEwsB,EAAG1d,KAAKpR,GAAG,GAAGsC,EAAE,CAAC,IAASX,EAAL9B,EAAE,GAAK6B,EAAE,EAAE,IAAIC,EAAEW,EAAE0Z,MAAMra,EAAE3B,EAAEX,OAAOsC,IAAI,CAAC,OAAO3B,EAAE+X,WAAWpW,IAAI,KAAK,GAAGW,EAAE,SAAS,MAAM,KAAK,GAAGA,EAAE,QAAQ,MAAM,KAAK,GAAGA,EAAE,SAAS,MAAM,KAAK,GAAGA,EAAE,OAAO,MAAM,KAAK,GAAGA,EAAE,OAAO,MAAM,QAAQ,SAASZ,IAAIC,IAAI9B,GAAGG,EAAEs2B,UAAU50B,EAAEC,IAAID,EAAEC,EAAE,EAAE9B,GAAGyC,CAAC,CAACtC,EAAE0B,IAAIC,EAAE9B,EAAEG,EAAEs2B,UAAU50B,EAAEC,GAAG9B,CAAC,CAAC,OAAOG,CAAC,CAC/X,IAAIsxB,EAAG,WAAWi5tC,EAAG,OAAO57tC,EAAGlwB,MAAMkS,QAAQuf,EAAG3tB,EAAE,YAAY6rB,EAAG7rB,EAAE,cAAgBsuB,EAAGtuB,EAAE,iBAAiBwvB,EAAGxvB,EAAE,+BAA+BixB,EAAGjxB,EAAE,yBAA2BuzB,EAAG,sBAAsB,SAASlE,EAAG5xB,EAAEsC,EAAEzC,EAAE8B,GAAG,OAASW,GAAG,MAAMzC,EAAE,UAAU,WAAW8B,CAAC,CAErQ,SAAS4C,EAAEvE,EAAEsC,GAAG,MAAM,CAACyx0C,cAAc/z0C,EAAE+ltB,cAAczjtB,EAAE,CACiV,IAAI6zB,EAAG5zB,EAAE,kBAAkB,SAASqmvC,EAAG5ovC,EAAEsC,EAAEzC,EAAE8B,GAAG,MAAG,KAAKW,EAASX,GAAEA,GAAG3B,EAAEa,KAAKs1B,GAAIn2B,EAAEa,KAAKQ,EAAE8B,EAAEb,MAAW,EAAE,CACjf,IAAI+zB,EAAG,IAAI1M,IAAIsN,EAAG10B,EAAE,YAAYk0B,EAAGl0B,EAAE,KAAKsmvC,EAAGtmvC,EAAE,KAC/C,SAASqzB,EAAG51B,EAAEsC,EAAEzC,GAAG,GAAG,iBAAkBA,EAAE,MAAM2mB,MAAM9jB,EAAE,KAAU,IAAI,IAAIf,KAAbW,GAAE,EAAgBzC,EAAE,GAAGoD,EAAErE,KAAKiB,EAAE8B,GAAG,CAAC,IAAID,EAAE7B,EAAE8B,GAAG,GAAG,MAAMD,GAAG,kBAAmBA,GAAG,KAAKA,EAAE,CAAC,GAAG,IAAIC,EAAEnC,QAAQ,MAAM,CAAC,IAAIrB,EAAEkD,EAAE8B,EAAExB,IAAID,EAAEL,EAAE8B,GAAG,GAAGzB,GAAG2vB,QAAQ,KAAK,CAAClzB,EAAEwD,EAAE,IAAIR,EAAEk1B,EAAGl0B,IAAIhE,QAAG,IAASgD,IAAOA,EAAEoB,EAAEY,EAAEhF,EAAEsN,QAAQ6lB,EAAG,OAAO/iB,cAAc9C,QAAQ8+uC,EAAG,UAAUl0tC,EAAGprB,IAAI9M,EAAEgD,IAA3EhD,EAAEgD,EAAiFO,EAAE,iBAAkBA,EAAE,IAAIA,GAAGuB,EAAErE,KAAKmG,EAAEpD,GAAGN,EAAE,GAAGK,GAAGL,EAAEK,EAAE,MAAML,EAAE8B,GAAG,GAAGzB,GAAG2vB,QAAQ,CAAC/uB,GAAGA,GAAE,EAAGtC,EAAEa,KAAKo2B,EAAG94B,EAAEs4B,EAAG/0B,IAAI1B,EAAEa,KAAKgovC,EAAG1qvC,EAAEs4B,EAAG/0B,EAAE,CAAC,CAACY,GAAGtC,EAAEa,KAAK6C,EAAE,CACld,IAAIc,EAAEjC,EAAE,KAAKM,EAAEN,EAAE,MAAMmB,EAAEnB,EAAE,KAAKumvC,EAAGvmvC,EAAE,OACrC,SAASmC,EAAE1E,EAAEsC,EAAEzC,EAAE8B,GAAG,OAAO9B,GAAG,IAAK,QAAkB,YAAV+1B,EAAG51B,EAAEsC,EAAEX,GAAU,IAAK,eAAe,IAAK,iBAAiB,IAAK,YAAY,IAAK,iCAAiC,IAAK,2BAA2B,OAAO,KAAK,EAAE9B,EAAER,SAAS,MAAMQ,EAAE,IAAI,MAAMA,EAAE,IAAI,MAAMA,EAAE,IAAI,MAAMA,EAAE,GAAG,GAAmC,QAAhCyC,EAAEqC,EAAEhG,eAAekB,GAAG8E,EAAE9E,GAAG,MAAc,CAAC,cAAc8B,GAAG,IAAK,WAAW,IAAK,SAAS,OAAO,IAAK,UAAU,IAAIW,EAAEkx0C,gBAAgB,OAA4B,OAArB3z0C,EAAEwB,EAAEiB,EAAEmtF,eAAsBntF,EAAEiJ,MAAM,KAAK,EAAE5J,GAAG3B,EAAEa,KAAK2D,EAAE3E,EAAEipvC,GAAI,MAAM,KAAK,GAAE,IAAKnnvC,EAAE3B,EAAEa,KAAK2D,EAAE3E,EAAEipvC,IAAI,IACpfnnvC,GAAG3B,EAAEa,KAAK2D,EAAE3E,EAAEgD,EAAExB,EAAE8B,EAAExB,IAAI+B,GAAG,MAAM,KAAK,EAAE4nC,MAAM3pC,IAAI3B,EAAEa,KAAK2D,EAAE3E,EAAEgD,EAAExB,EAAE8B,EAAExB,IAAI+B,GAAG,MAAM,KAAK,GAAG4nC,MAAM3pC,IAAI,GAAGA,GAAG3B,EAAEa,KAAK2D,EAAE3E,EAAEgD,EAAExB,EAAE8B,EAAExB,IAAI+B,GAAG,MAAM,QAAQpB,EAAEqx0C,cAAchy0C,EAAE,GAAGA,GAAG3B,EAAEa,KAAK2D,EAAE3E,EAAEgD,EAAExB,EAAE8B,EAAExB,IAAI+B,GAAG,MAAM,GAAGwpB,EAAGrtB,GAAG,CAAC,cAAc8B,GAAG,IAAK,WAAW,IAAK,SAAS,OAAO,IAAK,UAAU,GAAgC,WAA7BW,EAAEzC,EAAE0O,cAAcxN,MAAM,EAAE,KAAgB,UAAUuB,EAAE,OAAOtC,EAAEa,KAAK2D,EAAEnD,EAAExB,GAAGgD,EAAExB,EAAE8B,EAAExB,IAAI+B,EAAE,CAAC,CAAC,IAAIO,EAAE1B,EAAE,KAAKwmvC,EAAGxmvC,EAAE,MACjY,SAASc,EAAErD,EAAEsC,EAAEzC,GAAG,GAAG,MAAMyC,EAAE,CAAC,GAAG,MAAMzC,EAAE,MAAM2mB,MAAM9jB,EAAE,KAAK,GAAG,iBAAkBJ,KAAK,WAAWA,GAAG,MAAMkkB,MAAM9jB,EAAE,KAAgB,OAAXJ,EAAEA,EAAE0x0C,SAA6Bh00C,EAAEa,KAAKQ,EAAE,GAAGiB,GAAG,CAAC,CAAsF,IAAI2mvC,EAAG1mvC,EAAE,gBACvQ,SAAS20B,GAAGl3B,EAAEsC,EAAEzC,EAAE8B,GAAG3B,EAAEa,KAAKgE,GAAEhF,IAAI,IAAa1B,EAATuD,EAAE7B,EAAE,KAAO,IAAI1B,KAAKmE,EAAE,GAAGW,EAAErE,KAAK0D,EAAEnE,GAAG,CAAC,IAAIgD,EAAEmB,EAAEnE,GAAG,GAAG,MAAMgD,EAAE,OAAOhD,GAAG,IAAK,WAAW0B,EAAEsB,EAAE,MAAM,IAAK,0BAA0BO,EAAEP,EAAE,MAAM,QAAQuD,EAAE1E,EAAE2B,EAAExD,EAAEgD,GAAG,CAAoB,OAAnBnB,EAAEa,KAAKoD,GAAGZ,EAAErD,EAAE0B,EAAE7B,GAAS,iBAAkBA,GAAGG,EAAEa,KAAKQ,EAAE8B,EAAEtD,KAAK,MAAMA,CAAC,CAAC,IAAIg2B,GAAGtzB,EAAE,MAAMs0B,GAAG,8BAA8BqytC,GAAG,IAAIv/tC,IAAI,SAAS9kB,GAAE7E,GAAG,IAAIsC,EAAE4mvC,GAAG/mvC,IAAInC,GAAG,QAAG,IAASsC,EAAE,CAAC,IAAIu0B,GAAGxsB,KAAKrK,GAAG,MAAMwmB,MAAM9jB,EAAE,GAAG1C,IAAIsC,EAAEC,EAAE,IAAIvC,GAAGkpvC,GAAGj+uC,IAAIjL,EAAEsC,EAAE,CAAC,OAAOA,CAAC,CAAC,IAAI6mvC,GAAG5mvC,EAAE,mBAQ9b,IAAI2zB,GAAG3zB,EAAE,MAAM6mvC,GAAG7mvC,EAAE,KAAK8mvC,GAAG9mvC,EAAE,kBAAkB+mvC,GAAG/mvC,EAAE,iBAAiBu0B,GAAGv0B,EAAE,kBAAkB2nvC,GAAG3nvC,EAAE,iCAAiCmzB,GAAGnzB,EAAE,iBAAiBizrC,GAAGjzrC,EAAE,mBAAmB4lO,GAAG5lO,EAAE,mBAAmBinvC,GAAGjnvC,EAAE,aAAam+D,GAAGn+D,EAAE,KAAKknvC,GAAGlnvC,EAAE,gBAAgBA,EAAE,eAAeA,EAAE,gBAAgB,IAAImnvC,GAAGnnvC,EAAE,gBAAgB,SAASqjV,GAAG5lV,EAAEsC,EAAEzC,GAAW,GAARiC,EAAE9B,EAAEkqvC,IAAO,OAAOrqvC,EAAE,MAAM2mB,MAAM9jB,EAAE,MAAa,OAAPZ,EAAE9B,EAAEH,GAAUzB,EAAE4B,EAAE01B,GAAG,CACtY,IAAI6ztC,GAAGhnvC,EAAE,oBAAoBonvC,GAAGpnvC,EAAE,MAAMoy0C,GAAGpy0C,EAAE,UAAUkmvC,GAAGlmvC,EAAE,qDAAqD220C,GAAG320C,EAAE,MAAMuv8B,GAAGvv8B,EAAE,UAAUm9W,GAAGn9W,EAAE,sDAAsDs20C,GAAGt20C,EAAE,MAAMqy0C,GAAGry0C,EAAE,WAAWu8W,GAAGv8W,EAAE,sBAAsBuy0C,GAAGvy0C,EAAE,MAAMsv8B,GAAGtv8B,EAAE,YAAYqnvC,GAAGrnvC,EAAE,6BAA6Bw+uC,GAAGx+uC,EAAE,MAAMmkxB,GAAGnkxB,EAAE,oBAAoBwy0C,GAAGxy0C,EAAE,0BAA0BixuB,GAAGjxuB,EAAE,MAAMyy0C,GAAGzy0C,EAAE,iBAAiBkz0C,GAAGlz0C,EAAE,gCAAgCqz0C,GAAGrz0C,EAAE,MAAMsnvC,GAAGtnvC,EAAE,uBAG/cs00C,GAAGt00C,EAAE,0MAA0MynvC,GAAGznvC,EAAE,SAASw00C,GAAGx00C,EAAE,OAAO800C,GAAG900C,EAAE,gBAAkBi10C,GAAGj10C,EAAE,6aACzQk10C,GAAGl10C,EAAE,SAASm10C,GAAGn10C,EAAE,OAAOylvC,GAAGzlvC,EAAE,gBAAkB6lvC,GAAG7lvC,EAAE,0LAA0L2lvC,GAAG3lvC,EAAE,SAAS0nvC,GAAG1nvC,EAAE,KAAK4lvC,GAAG5lvC,EAAE,eAAiB4nvC,GAAG5nvC,EAAE,KAAK0lvC,GAAG,mBAC3S,SAASK,GAAGtovC,GAAG,OAAOsZ,KAAKb,UAAUzY,GAAGyL,QAAQw8uC,IAAG,SAASjovC,GAAG,OAAOA,GAAG,IAAK,IAAI,MAAM,UAAU,IAAK,SAAS,MAAM,UAAU,IAAK,SAAS,MAAM,UAAU,QAAQ,MAAMwmB,MAAM,qMAAsM,GAAE,CAC1X,IAAItiB,GAAE5F,OAAOa,OAAOirvC,GAAG1pvC,OAAOiH,IAAI,iBAAiB0ivC,GAAG3pvC,OAAOiH,IAAI,gBAAgB4gvC,GAAG7nvC,OAAOiH,IAAI,kBAAkB6gvC,GAAG9nvC,OAAOiH,IAAI,qBAAqBwx0C,GAAGz40C,OAAOiH,IAAI,kBAAkB4kvC,GAAG7rvC,OAAOiH,IAAI,kBAAkByx0C,GAAG140C,OAAOiH,IAAI,iBAAiB2ivC,GAAG5pvC,OAAOiH,IAAI,qBAAqB+Z,GAAGhhB,OAAOiH,IAAI,kBAAkByb,GAAG1iB,OAAOiH,IAAI,uBAAuB8Z,GAAG/gB,OAAOiH,IAAI,cAAc8a,GAAG/hB,OAAOiH,IAAI,cAAcqZ,GAAGtgB,OAAOiH,IAAI,eAAe2a,GAAG5hB,OAAOiH,IAAI,0BAA0B0b,GAAG3iB,OAAOiH,IAAI,uBACte+a,GAAGhiB,OAAOiH,IAAI,uBAAuB4Z,GAAG7gB,OAAOC,SAC/C,SAAS2kB,GAAGtlB,GAAG,GAAG,MAAMA,EAAE,OAAO,KAAK,GAAG,mBAAoBA,EAAE,OAAOA,EAAEonK,aAAapnK,EAAE0J,MAAM,KAAK,GAAG,iBAAkB1J,EAAE,OAAOA,EAAE,OAAOA,GAAG,KAAKuovC,GAAG,MAAM,WAAW,KAAK8B,GAAG,MAAM,SAAS,KAAK8uF,GAAG,MAAM,WAAW,KAAK3wF,GAAG,MAAM,aAAa,KAAK9muC,GAAG,MAAM,WAAW,KAAK0B,GAAG,MAAM,eAAe,GAAG,iBAAkBpjB,EAAE,OAAOA,EAAE616B,UAAU,KAAKuja,GAAG,OAAOp50C,EAAEonK,aAAa,WAAW,YAAY,KAAKmllC,GAAG,OAAOvsvC,EAAEgkJ,SAASojB,aAAa,WAAW,YAAY,KAAKkjlC,GAAG,IAAIhovC,EAAEtC,EAAEstH,OAC7Z,OADoattH,EAAEA,EAAEonK,eACndpnK,EAAE,MADieA,EAAEsC,EAAE8kK,aAClf9kK,EAAEoH,MAAM,IAAY,cAAc1J,EAAE,IAAI,cAAqBA,EAAE,KAAKyhB,GAAG,OAA6B,QAAtBnf,EAAEtC,EAAEonK,aAAa,MAAc9kK,EAAEgjB,GAAGtlB,EAAEuL,OAAO,OAAO,KAAKkX,GAAGngB,EAAEtC,EAAEyggC,SAASzggC,EAAEA,EAAEyx9B,MAAM,IAAI,OAAOns8B,GAAGtlB,EAAEsC,GAAG,CAAC,MAAMzC,GAAG,EAAE,OAAO,IAAI,CAAC,IAAI2jB,GAAG,CAAC,EAAE,SAASnB,GAAGriB,EAAEsC,GAAoB,KAAjBtC,EAAEA,EAAEkowC,cAAmB,OAAO1kvC,GAAG,IAAS7hB,EAAL9B,EAAE,CAAC,EAAI,IAAI8B,KAAK3B,EAAEH,EAAE8B,GAAGW,EAAEX,GAAG,OAAO9B,CAAC,CAAC,IAAImD,GAAE,KACvT,SAASc,GAAE9D,EAAEsC,GAAG,GAAGtC,IAAIsC,EAAE,CAACtC,EAAEmsC,QAAQktyC,cAAcr50C,EAAEm00C,YAAYn00C,EAAEA,EAAEqwF,OAAO,IAAIxwF,EAAEyC,EAAE+tF,OAAO,GAAG,OAAOrwF,GAAG,GAAG,OAAOH,EAAE,MAAM2mB,MAAM9jB,EAAE,UAAW,CAAC,GAAG,OAAO7C,EAAE,MAAM2mB,MAAM9jB,EAAE,MAAMoB,GAAE9D,EAAEH,EAAE,CAACyC,EAAE6pC,QAAQktyC,cAAc/20C,EAAEnC,KAAK,CAAC,CAAC,SAASgjB,GAAGnjB,GAAGA,EAAEmsC,QAAQktyC,cAAcr50C,EAAEm00C,YAAuB,QAAXn00C,EAAEA,EAAEqwF,SAAiBltE,GAAGnjB,EAAE,CAAC,SAASkhB,GAAGlhB,GAAG,IAAIsC,EAAEtC,EAAEqwF,OAAO,OAAO/tF,GAAG4e,GAAG5e,GAAGtC,EAAEmsC,QAAQktyC,cAAcr50C,EAAEG,KAAK,CAClX,SAASkhB,GAAGrhB,EAAEsC,GAAoD,GAAjDtC,EAAEmsC,QAAQktyC,cAAcr50C,EAAEm00C,YAA0B,QAAdn00C,EAAEA,EAAEqwF,QAAmB,MAAM7pE,MAAM9jB,EAAE,MAAM1C,EAAEu2I,QAAQj0I,EAAEi0I,MAAMzyI,GAAE9D,EAAEsC,GAAG+e,GAAGrhB,EAAEsC,EAAE,CAAC,SAAS0gB,GAAGhjB,EAAEsC,GAAG,IAAIzC,EAAEyC,EAAE+tF,OAAO,GAAG,OAAOxwF,EAAE,MAAM2mB,MAAM9jB,EAAE,MAAM1C,EAAEu2I,QAAQ12I,EAAE02I,MAAMzyI,GAAE9D,EAAEH,GAAGmjB,GAAGhjB,EAAEH,GAAGyC,EAAE6pC,QAAQktyC,cAAc/20C,EAAEnC,KAAK,CAAC,SAAS6E,GAAEhF,GAAG,IAAIsC,EAAEU,GAAEV,IAAItC,IAAI,OAAOsC,EAAE4e,GAAGlhB,GAAG,OAAOA,EAAEmjB,GAAG7gB,GAAGA,EAAEi0I,QAAQv2I,EAAEu2I,MAAMzyI,GAAExB,EAAEtC,GAAGsC,EAAEi0I,MAAMv2I,EAAEu2I,MAAMl1H,GAAG/e,EAAEtC,GAAGgjB,GAAG1gB,EAAEtC,GAAGgD,GAAEhD,EAAE,CAC7X,IAAI6tB,GAAG,CAAC2xX,UAAU,WAAW,OAAM,CAAE,EAAE407B,gBAAgB,SAASp00C,EAAEsC,GAAuB,QAApBtC,EAAEA,EAAEq00C,iBAAyB72xC,OAAOx9C,EAAEw9C,MAAM38C,KAAKyB,EAAE,EAAEgy0C,oBAAoB,SAASt00C,EAAEsC,IAAGtC,EAAEA,EAAEq00C,iBAAkB5o0C,SAAQ,EAAGzL,EAAEw9C,MAAM,CAACl7C,EAAE,EAAEiy0C,mBAAmB,WAAW,GACxO,SAASpzzC,GAAGnhB,EAAEsC,EAAEzC,EAAE8B,GAAG,IAAID,OAAE,IAAS1B,EAAE2K,MAAM3K,EAAE2K,MAAM,KAAK3K,EAAEq++B,QAAQxw9B,GAAG7tB,EAAEisC,MAAMpsC,EAAEG,EAAE2K,MAAMjJ,EAAE,IAAIvD,EAAE,CAACq/C,MAAM,GAAG/xC,SAAQ,GAAIzL,EAAEq00C,gBAAgBl20C,EAAE,IAAIgD,EAAEmB,EAAE2lwC,YAAkL,GAAtKjowC,EAAEmsC,QAAQ,iBAAkBhrC,GAAG,OAAOA,EAAEA,EAAEk40C,cAAc130C,EAA+B,mBAA7BR,EAAEmB,EAAE8lwC,4BAA0D1mwC,EAAE,OAAXP,EAAEA,EAAEtB,EAAE6B,IAA0BA,EAAEwC,GAAE,CAAC,EAAExC,EAAEP,GAAGnB,EAAE2K,MAAMjJ,GAAM,mBAAoBY,EAAE8lwC,0BAA0B,mBAAoBpowC,EAAEw00C,0BAA0B,mBAAoBx00C,EAAEy00C,2BAA2B,mBAAoBz00C,EAAE000C,oBAAoB,GAAGpy0C,EACrgBtC,EAAE2K,MAAM,mBAAoB3K,EAAE000C,oBAAoB100C,EAAE000C,qBAAqB,mBAAoB100C,EAAEy00C,2BAA2Bz00C,EAAEy00C,4BAA4Bny0C,IAAItC,EAAE2K,OAAOkjB,GAAGymzC,oBAAoBt00C,EAAEA,EAAE2K,MAAM,MAAM,OAAOxM,EAAEq/C,OAAO,EAAEr/C,EAAEq/C,MAAMn+C,OAAO,GAAGiD,EAAEnE,EAAEq/C,MAAMr8C,EAAEhD,EAAEsN,QAAQtN,EAAEq/C,MAAM,KAAKr/C,EAAEsN,SAAQ,EAAGtK,GAAG,IAAImB,EAAEjD,OAAOW,EAAE2K,MAAMrI,EAAE,OAAO,CAAuB,IAAtBnE,EAAEgD,EAAEmB,EAAE,GAAGtC,EAAE2K,MAAMjJ,GAAE,EAAOP,EAAEA,EAAE,EAAE,EAAEA,EAAEmB,EAAEjD,OAAO8B,IAAI,CAAC,IAAIS,EAAEU,EAAEnB,GAA6C,OAA1CS,EAAE,mBAAoBA,EAAEA,EAAEhD,KAAKoB,EAAE7B,EAAE0B,EAAE8B,GAAGC,KAAYF,GAAGA,GAAE,EAAGvD,EAAE+F,GAAE,CAAC,EAAE/F,EAAEyD,IAAIsC,GAAE/F,EAAEyD,GAAG,CAAC5B,EAAE2K,MAAMxM,CAAC,MAAMA,EAAEq/C,MAAM,IAAI,CAC3e,IAAI77B,GAAG,CAAC4I,GAAG,EAAEg2V,SAAS,IAAI,SAASt/V,GAAGjhB,EAAEsC,EAAEzC,GAAG,IAAI8B,EAAE3B,EAAEuqB,GAAGvqB,EAAEA,EAAEugX,SAAS,IAAI7+W,EAAE,GAAGmgB,GAAGlgB,GAAG,EAAEA,KAAK,GAAGD,GAAG7B,GAAG,EAAE,IAAI1B,EAAE,GAAG0jB,GAAGvf,GAAGZ,EAAE,GAAG,GAAGvD,EAAE,CAAC,IAAIgD,EAAEO,EAAEA,EAAE,EAAyC,OAAvCvD,GAAGwD,GAAG,GAAGR,GAAG,GAAGoC,SAAS,IAAI5B,IAAIR,EAAEO,GAAGP,EAAQ,CAACopB,GAAG,GAAG,GAAG1I,GAAGvf,GAAGZ,EAAE7B,GAAG6B,EAAEC,EAAE4+W,SAASpiX,EAAE6B,EAAE,CAAC,MAAM,CAACuqB,GAAG,GAAGpsB,EAAE0B,GAAG6B,EAAEC,EAAE4+W,SAASvgX,EAAE,CAAC,IAAI6hB,GAAGhgB,KAAKuqN,MAAMvqN,KAAKuqN,MAAiC,SAAYpsN,GAAU,OAAO,IAAdA,KAAK,GAAe,GAAG,IAAIsjB,GAAGtjB,GAAG8kB,GAAG,GAAG,CAAC,EAA/ExB,GAAGzhB,KAAKwnB,IAAIvE,GAAGjjB,KAAKsvN,IAClTpkM,GAAG,mBAAoBzuB,OAAOwte,GAAGxte,OAAOwte,GADsU,SAAY9re,EAAEsC,GAAG,OAAOtC,IAAIsC,IAAI,IAAItC,GAAG,EAAEA,GAAI,EAAEsC,IAAItC,GAAIA,GAAGsC,GAAIA,CAAC,EAC/XgB,GAAE,KAAKmmB,GAAG,KAAK4D,GAAG,KAAK7qB,GAAE,KAAKU,IAAE,EAAG8hB,IAAG,EAAG3gB,GAAE,EAAEO,GAAE,KAAK0nB,GAAG,EAAE,SAAS9oB,KAAI,GAAG,OAAOF,GAAE,MAAMkjB,MAAM9jB,EAAE,MAAM,OAAOY,EAAC,CAAC,SAAS+hB,KAAK,GAAG,EAAEiH,GAAG,MAAM9F,MAAM9jB,EAAE,MAAM,MAAM,CAACmy0C,cAAc,KAAKr3xC,MAAM,KAAKz9C,KAAK,KAAK,CAAC,SAASksB,KAAwG,OAAnG,OAAOzpB,GAAE,OAAO6qB,IAAInqB,IAAE,EAAGmqB,GAAG7qB,GAAE6iB,OAAOniB,IAAE,EAAGV,GAAE6qB,IAAI,OAAO7qB,GAAEzC,MAAMmD,IAAE,EAAGV,GAAEA,GAAEzC,KAAKslB,OAAOniB,IAAE,EAAGV,GAAEA,GAAEzC,MAAayC,EAAC,CAAC,SAAS+jB,KAAKkD,GAAGnmB,GAAE,KAAK0hB,IAAG,EAAGqI,GAAG,KAAKf,GAAG,EAAE9pB,GAAEoC,GAAE,IAAI,CAAC,SAAS6nB,GAAGzsB,EAAEsC,GAAG,MAAM,mBAAoBA,EAAEA,EAAEtC,GAAGsC,CAAC,CAC5d,SAASkiB,GAAGxkB,EAAEsC,EAAEzC,GAAgB,GAAbyD,GAAEE,KAAIhB,GAAEypB,KAAQ/oB,GAAE,CAAC,IAAIvB,EAAEa,GAAEg7C,MAAmB,GAAbl7C,EAAEX,EAAE6pa,SAAY,OAAO5ma,SAAe,KAAX/E,EAAE+E,GAAEzC,IAAIR,IAAe,CAACiD,GAAEqf,OAAOtiB,GAAGA,EAAEa,GAAEqy0C,cAAc,GAAGlz0C,EAAE3B,EAAE2B,EAAE9B,EAAEyqE,QAAQzqE,EAAEA,EAAEE,WAAW,OAAOF,GAAqB,OAAlB2C,GAAEqy0C,cAAclz0C,EAAQ,CAACA,EAAEW,EAAE,CAAC,MAAM,CAACE,GAAEqy0C,cAAcvy0C,EAAE,CAA6I,OAA5ItC,EAAEA,IAAIysB,GAAG,mBAAoBnqB,EAAEA,IAAIA,OAAE,IAASzC,EAAEA,EAAEyC,GAAGA,EAAEE,GAAEqy0C,cAAc700C,EAAsCA,GAApCA,EAAEwC,GAAEg7C,MAAM,CAAC75B,KAAK,KAAK6nZ,SAAS,OAAUA,SAAS5+Y,GAAGvqB,KAAK,KAAKiB,GAAEtD,GAAS,CAACwC,GAAEqy0C,cAAc700C,EAAE,CAC9Y,SAASmsB,GAAGnsB,EAAEsC,GAAoC,GAAjCgB,GAAEE,KAAWlB,OAAE,IAASA,EAAE,KAAKA,EAAK,QAA9BE,GAAEypB,MAAqC,CAAC,IAAIpsB,EAAE2C,GAAEqy0C,cAAc,GAAG,OAAOh10C,GAAG,OAAOyC,EAAE,CAAC,IAAIX,EAAE9B,EAAE,GAAGG,EAAE,GAAG,OAAO2B,EAAEA,GAAE,MAAO,CAAC,IAAI,IAAID,EAAE,EAAEA,EAAEC,EAAEtC,QAAQqC,EAAEY,EAAEjD,OAAOqC,IAAI,IAAIqrB,GAAGzqB,EAAEZ,GAAGC,EAAED,IAAI,CAACC,GAAE,EAAG,MAAM3B,CAAC,CAAC2B,GAAE,CAAE,CAAC,GAAGA,EAAE,OAAO9B,EAAE,EAAE,CAAC,CAA6B,OAA5BG,EAAEA,IAAIwC,GAAEqy0C,cAAc,CAAC700C,EAAEsC,GAAUtC,CAAC,CAAC,SAAS4sB,GAAG5sB,EAAEsC,EAAEzC,GAAG,GAAG,IAAIysB,GAAG,MAAM9F,MAAM9jB,EAAE,MAAM,GAAG1C,IAAIsD,GAAE,GAAG0hB,IAAG,EAAGhlB,EAAE,CAACsqE,OAAOzqE,EAAEE,KAAK,MAAM,OAAO6E,KAAIA,GAAE,IAAI+kB,UAAgB,KAAX9pB,EAAE+E,GAAEzC,IAAIG,IAAcsC,GAAEqG,IAAI3I,EAAEtC,OAAO,CAAC,IAAIsC,EAAEzC,EAAE,OAAOyC,EAAEvC,MAAMuC,EAAEA,EAAEvC,KAAKuC,EAAEvC,KAAKC,CAAC,CAAC,CACjd,SAAS4lB,KAAK,MAAMY,MAAM9jB,EAAE,KAAM,CAAC,SAASuqB,KAAK,CACjD,IAAIrI,GAAG,CAACqwzC,YAAY,SAASj10C,GAAG,OAAOA,EAAEq50C,aAAa,EAAEv7kC,WAAW,SAAS99P,GAAO,OAAJwD,KAAWxD,EAAEq50C,aAAa,EAAE5ryC,QAAQthB,GAAG+ozC,WAAW1wzC,GAAG8Y,OAAO,SAASt9B,GAAGsD,GAAEE,KAAW,IAAIlB,GAAXE,GAAEypB,MAAa4ozC,cAAc,OAAO,OAAOvy0C,GAAGtC,EAAE,CAAC++B,QAAQ/+B,GAAGwC,GAAEqy0C,cAAc700C,GAAGsC,CAAC,EAAEw0P,SAAS,SAAS92P,GAAG,OAAOwkB,GAAGiI,GAAGzsB,EAAE,EAAEg+P,mBAAmB/wO,GAAG0oO,gBAAgB,WAAW,EAAEmxqB,YAAY,SAAS9m6B,EAAEsC,GAAG,OAAO6pB,IAAG,WAAW,OAAOnsB,CAAC,GAAEsC,EAAE,EAAEi2P,oBAAoBtrO,GAAGqT,UAAUrT,GAAGkozC,cAAclozC,GAAGmozC,iBAAiB,SAASp10C,GAAO,OAAJwD,KAAWxD,CAAC,EAAEq10C,cAAc,WACnf,OAD8f7x0C,KACxf,EAAC,EAAGoiB,GAAG,EAAEihtC,MAAM,WAAW,IAAI7muC,EAAEypB,GAAG6rzC,YAAgBhz0C,EAAEtC,EAAEugX,SAAgBvgX,IAAPA,EAAEA,EAAEuqB,MAAU,GAAG,GAAG1I,GAAG7hB,GAAG,IAAIuD,SAAS,IAAIjB,EAAE,IAAIzC,EAAEusB,GAAG,GAAG,OAAOvsB,EAAE,MAAM2mB,MAAM9jB,EAAE,MAAgE,OAA1DJ,EAAE+B,KAAIrE,EAAE,IAAIH,EAAEsvpB,SAAS,IAAInvpB,EAAE,EAAEsC,IAAItC,GAAG,IAAIsC,EAAEiB,SAAS,KAAYvD,EAAE,GAAG,EAAEu10C,iBAAiB,SAASv10C,EAAEsC,GAAO,OAAJkB,KAAWlB,EAAEtC,EAAEygwB,QAAQ,EAAE+0kB,qBAAqB,SAASx10C,EAAEsC,EAAEzC,GAAG,QAAG,IAASA,EAAE,MAAM2mB,MAAM9jB,EAAE,MAAM,OAAO7C,GAAG,GAAGusB,GAAG,KAAKjC,GAAG6F,EAAG0lzC,mDAAmDC,uBAAuB,SAASjozC,GAAG1tB,GAAoB,OAAjBqmB,QAAQvlB,MAAMd,GAAU,IAAI,CACnf,SAAS+D,KAAI,CAEuC,SAASghB,GAAG/kB,EAAEsC,EAAEzC,EAAE8B,EAAED,EAAEvD,EAAEgD,EAAES,GAAG5B,EAAE610C,kBAAkB,OAAOh20C,EAAEG,EAAE810C,mBAAmBj20C,EAAEm5F,eAAe,IAAI52F,EAAE,CAACimF,KAAK/lF,EAAEyz0C,KAAK,WAAW,IAAIzz0C,EAAEtC,EAAEg20C,YAAY1z0C,EAAEzB,KAAKuB,GAAG,IAAIE,EAAEjD,QAAQgtB,GAAGrsB,EAAE,EAAEi20C,gBAAgBp20C,EAAEq20C,eAAev00C,EAAEw00C,SAASz00C,EAAE000C,cAAcj40C,EAAEguC,QAAQhrC,EAAEm00C,YAAY1z0C,GAAY,OAATF,EAAEyiB,IAAI/hB,GAAUA,CAAC,CAAC,SAASmhB,GAAGvjB,EAAEsC,EAAEzC,EAAE8B,EAAED,EAAEvD,GAAG,MAAM,CAACsmB,OAAO,EAAE8F,IAAI,EAAEvO,MAAM1Z,EAAE+z0C,eAAc,EAAG1xwC,OAAO,GAAG3lC,SAAS,GAAGs3yC,cAAc300C,EAAE400C,SAAS120C,EAAE220C,eAAe900C,EAAE+00C,aAAat40C,EAAE,CACve,SAASsG,GAAEzE,EAAEsC,GAAkB,GAAG,OAAlBtC,EAAEA,EAAEq8G,QAAQ/5G,KAAe,iBAAkBtC,EAAE,MAAMwmB,MAAM,wMAAwMxmB,EAAE,aAAa,OAAOA,CAAC,CAAC,SAAS8sB,GAAG9sB,EAAEsC,GAAG,IAAIzC,EAAEG,EAAE020C,aAAa720C,EAAEyC,IAAGzC,EAAEG,EAAE220C,cAAer00C,GAAG,OAAOtC,EAAE84C,aAAa94C,EAAEykB,OAAO,EAAE2M,EAAGpxB,EAAE84C,YAAYx2C,KAAKtC,EAAEykB,OAAO,EAAEzkB,EAAE420C,WAAWt00C,EAAE,CAC7b,SAASujB,GAAG7lB,EAAEsC,EAAEzC,EAAE8B,EAAED,GAAiB,IAAd4B,GAAE,CAAC,EAAEmmB,GAAGnnB,EAAE+B,GAAE,EAAMrE,EAAEH,EAAE8B,EAAED,GAAGsjB,IAAIA,IAAG,EAAG3gB,GAAE,EAAEioB,IAAI,EAAE9pB,GAAE,KAAKxC,EAAEH,EAAE8B,EAAED,GAAQ,OAAL6kB,KAAYvmB,CAAC,CAAC,SAASgsB,GAAGhsB,EAAEsC,EAAEzC,EAAE8B,GAAG,IAAID,EAAE7B,EAAEytH,SAASnvH,EAAEwD,EAAEqmwC,kBAAkB,GAAG,MAAO7pwC,EAAc,CAAC,IAAIgD,EAAEmB,EAAE8z0C,cAAc,GAAG,mBAAoBv20C,EAAEi30C,gBAAgBn10C,EAAER,MAAM,CAAuB,IAAI,IAAIS,KAA9B/B,EAAEA,EAAEi30C,kBAAiC,KAAKl10C,KAAKzD,GAAG,MAAMqoB,MAAM9jB,EAAE,IAAI4iB,GAAG3jB,IAAI,UAAUC,IAAID,EAAEuC,GAAE,CAAC,EAAE/C,EAAEtB,EAAE,CAACyC,EAAE8z0C,cAAcz00C,EAAE8B,GAAEzD,EAAEsC,EAAEZ,GAAGY,EAAE8z0C,cAAcj10C,CAAC,MAAMsC,GAAEzD,EAAEsC,EAAEZ,EAAE,CACha,SAASirB,GAAG3sB,EAAEsC,GAAG,GAAGtC,GAAGA,EAAEk5I,aAAa,CAA4B,IAAI,IAAIr5I,KAAnCyC,EAAE4B,GAAE,CAAC,EAAE5B,GAAGtC,EAAEA,EAAEk5I,kBAA4B,IAAS52I,EAAEzC,KAAKyC,EAAEzC,GAAGG,EAAEH,IAAI,OAAOyC,CAAC,CAAC,OAAOA,CAAC,CAC7H,SAASyjB,GAAG/lB,EAAEsC,EAAEzC,EAAE8B,EAAED,GAAG,GAAG,mBAAoB7B,EAAE,GAAGA,EAAEnB,WAAWmB,EAAEnB,UAAUk36B,iBAAiB,CAACl06B,EAAE2gB,GAAGxiB,EAAEyC,EAAE8z0C,eAAe,IAAIj40C,EAAE0B,EAAEoowC,YAAuE9mvC,GAA3DhjB,EAAE,IAAI0B,EAAE8B,EAAE,iBAAkBxD,GAAG,OAAOA,EAAEA,EAAEk70C,cAAc330C,GAAQ7B,EAAE8B,EAAED,GAAGsqB,GAAGhsB,EAAEsC,EAAEnE,EAAE0B,EAAE,KAAK,CAAyB6B,EAAEmkB,GAAG7lB,EAAEsC,EAAEzC,EAAE8B,EAAnCxD,EAAEkkB,GAAGxiB,EAAEyC,EAAE8z0C,gBAA+B,IAAIj10C,EAAE,IAAIkD,GAAE,GAAG,iBAAkB3C,GAAG,OAAOA,GAAG,mBAAoBA,EAAE4rH,aAAQ,IAAS5rH,EAAEm06B,SAAS105B,GAAGzf,EAAE7B,EAAE8B,EAAExD,GAAG6tB,GAAGhsB,EAAEsC,EAAEZ,EAAE7B,QAAQ,GAAGsB,EAAE,CAACQ,EAAEW,EAAEgz0C,YAAYhz0C,EAAEgz0C,YAAYr0zC,GAAGtf,EAAE,EAAE,GAAG,IAAI8B,GAAEzD,EAAEsC,EAAEZ,EAAE,CAAC,QAAQY,EAAEgz0C,YAAY3z0C,CAAC,CAAC,MAAM8B,GAAEzD,EAAEsC,EAAEZ,EAAE,KAAM,IAAG,iBAC1e7B,EAAoa,CAAC,OAAOA,GAAG,KAAKwjB,GAAG,KAAKf,GAAG,KAAKkmuC,GAAG,KAAK2wF,GAAG,KAAK5wF,GAC3d,KAAKnluC,GAAqB,YAAlB3f,GAAEzD,EAAEsC,EAAEX,EAAEq9B,UAAiB,KAAKhe,GAAG,MAAMwF,MAAM9jB,EAAE,MAAM,KAAKgf,GAAG1hB,EAAE,CAACH,EAAEyC,EAAE2z0C,gBAAgBv00C,EAAEY,EAAE4z0C,eAAe/30C,EAAEwD,EAAEq9iB,SAASr9iB,EAAEA,EAAEq9B,SAAmB,IAAIp9B,EAAE,CAAC2oB,GAAG,KAAKyszC,eAAe,EAAEX,eAAc,EAAGr9uC,aAAa,EAAEi+uC,mBAAkB,EAAGC,kBAAkB,GAAGtn/B,SAAS,EAAEun/B,uBAA/Hh20C,EAAE,IAAIwjB,IAAkJyyzC,YAAY,MAAMh10C,EAAEmhB,GAAGvjB,EAAE0B,EAAEijE,OAAOtlE,OAAOuC,EAAEF,EAAE400C,eAAc,GAAG,GAAI500C,EAAEs9B,SAASn+B,KAAKuB,GAAGV,EAAE800C,gBAAe,EAAG,IAAItx0C,EAAEqe,GAAGvjB,EAAE,EAAE,KAAK0B,EAAE400C,eAAc,GAAG,GAAIpx0C,EAAEmx0C,eAAc,EAAG/z0C,EAAE2z0C,gBAAgBr00C,EAAEU,EAAE4z0C,eAAehx0C,EAAE,IAAI,GAAG8oB,GAAGhuB,EACvfsC,EAAEX,GAAGuD,EAAEsx0C,gBAAgBtx0C,EAAEux0C,cAAcvx0C,EAAEy/D,OAAO9jE,KAAKs1B,GAAIjxB,EAAEuf,OAAO,EAAE6s7B,GAAG1v8B,EAAEsD,GAAG,IAAItD,EAAEo3F,aAAa,MAAMh5F,CAAC,CAAC,MAAMjB,GAAGmG,EAAEuf,OAAO,EAAE7iB,EAAEq10C,mBAAkB,EAAGr10C,EAAEw10C,YAAY3y0C,GAAEzE,EAAEjB,EAAE,CAAC,QAAQuD,EAAE2z0C,gBAAgBp20C,EAAEyC,EAAE4z0C,eAAex00C,CAAC,CAACY,EAAEyiB,GAAG/kB,EAAE7B,EAAE0B,EAAEuC,EAAEjB,EAAEmB,EAAE8z0C,cAAc9z0C,EAAE6pC,QAAQ7pC,EAAEgz0C,aAAat10C,EAAEg20C,YAAYn10C,KAAKyB,EAAE,CAAC,OAAO,GAAG,iBAAkBzC,GAAG,OAAOA,EAAE,OAAOA,EAAEg26B,UAAU,KAAKy0U,GAA0B,GAAvB3ovC,EAAEkkB,GAAG7lB,EAAEsC,EAAEzC,EAAEytH,OAAO3rH,EAAED,GAAM,IAAI2C,GAAE,CAACxE,EAAEyC,EAAEgz0C,YAAYhz0C,EAAEgz0C,YAAYr0zC,GAAGphB,EAAE,EAAE,GAAG,IAAI4D,GAAEzD,EAAEsC,EAAEX,EAAE,CAAC,QAAQW,EAAEgz0C,YAAYz10C,CAAC,CAAC,MAAM4D,GAAEzD,EAAEsC,EAAEX,GAAG,OAAO,KAAK8f,GACjd,YAAdsE,GAAG/lB,EAAEsC,EAD6dzC,EACnfA,EAAE0L,KAAK5J,EAAEgrB,GAAG9sB,EAAE8B,GAAcD,GAAU,KAAK6qvC,GAAkL,GAA/K7qvC,EAAEC,EAAEq9B,SAASn/B,EAAEA,EAAEmkJ,SAASriJ,EAAEA,EAAExB,MAAMhC,EAAE0B,EAAEw50C,cAAcx50C,EAAEw50C,cAAc130C,EAAMqB,GAAErB,EAAE,CAAC0uF,OAATlvF,EAAE6B,GAAgBuzI,MAAM,OAAOp1I,EAAE,EAAEA,EAAEo1I,MAAM,EAAEpqG,QAAQtsC,EAAEs00C,YAAYh20C,EAAEgC,MAAMwB,GAAGW,EAAE6pC,QAAQxqC,EAAE8B,GAAEzD,EAAEsC,EAAEZ,GAAU,QAAP1B,EAAEgD,IAAc,MAAMwjB,MAAM9jB,EAAE,MAAwG,OAAlGf,EAAE3B,EAAEm00C,YAAYn00C,EAAEmsC,QAAQktyC,cAAc130C,IAAI+gB,GAAG1iB,EAAEmsC,QAAQoryC,cAAc510C,EAAE3B,EAAEgD,GAAEhD,EAAEqwF,YAAO/tF,EAAE6pC,QAAQnsC,GAAS,KAAKo50C,GAA8C,YAAT310C,GAAEzD,EAAEsC,EAAzBX,GAAbA,EAAEA,EAAEq9B,UAAan/B,EAAEw50C,gBAA+B,KAAK52zC,GAA0D,YAAnBsD,GAAG/lB,EAAEsC,EAA/BzC,GAAV6B,EAAE7B,EAAE4x9B,OAAU5x9B,EAAE4ggC,UAAU9+/B,EAAEgrB,GAAG9sB,EAAE8B,QAAc,GAAe,MAAM6kB,MAAM9jB,EAAE,IACpf,MAAM7C,EAAEA,SAASA,EAAE,IAAK,CAJoJ,OAA/I1B,EArC7B,SAAY6B,EAAEsC,EAAEzC,EAAE8B,EAAED,GAAG,OAAOY,GAAG,IAAK,SAAStC,EAAEa,KAAKgE,GAAE,WAAW,IAAI1G,EAAE,KAAKgD,EAAE,KAAK,IAAIpC,KAAKc,EAAE,GAAGoD,EAAErE,KAAKiB,EAAEd,GAAG,CAAC,IAAI6C,EAAE/B,EAAEd,GAAG,GAAG,MAAM6C,EAAE,OAAO7C,GAAG,IAAK,WAAWZ,EAAEyD,EAAE,MAAM,IAAK,0BAA0BT,EAAES,EAAE,MAAM,IAAK,eAAe,IAAK,QAAQ,MAAM,QAAQ8C,EAAE1E,EAAE2B,EAAE5C,EAAE6C,GAAG,CAAoB,OAAnB5B,EAAEa,KAAKoD,GAAGZ,EAAErD,EAAEmB,EAAEhD,GAAUA,EAAE,IAAK,SAASgD,EAAEO,EAAEqktB,cAAc/ltB,EAAEa,KAAKgE,GAAE,WAAW,IAAIzC,EAAER,EAAE,KAAKsD,EAAE,KAASnG,EAAE,KAAK,IAAIZ,KAAK0B,EAAE,GAAGoD,EAAErE,KAAKiB,EAAE1B,GAAG,CAAC,IAAI8D,EAAEpC,EAAE1B,GAAG,GAAG,MAAM8D,EAAE,OAAO9D,GAAG,IAAK,WAAWyD,EAAEK,EAAE,MAAM,IAAK,WAAWiD,EAAEjD,EAAE,MAAM,IAAK,0BAA0BlD,EAC3gBkD,EAAE,MAAM,IAAK,QAAQG,EAAEH,EAAE,QAAQyC,EAAE1E,EAAE2B,EAAExD,EAAE8D,GAAG,CAAC,GAAG,MAAMd,EAAE,GAAGtB,EAAE,OAAOuC,EAAE,GAAGA,EAHgG,SAAYpC,GAAG,IAAIsC,EAAE,GAAuD,OAApD0tB,EAAG83X,SAAS5jY,QAAQlkB,GAAE,SAASA,GAAG,MAAMA,IAAIsC,GAAGtC,EAAE,IAAUsC,CAAC,CAGlL0mvC,CAAGpnvC,GAAG+sB,EAAGxtB,IAAG,IAAIQ,EAAE,EAAEA,EAAER,EAAE9B,OAAOsC,IAAK,GAAG,GAAGR,EAAEQ,KAAK9B,EAAE,CAACG,EAAEa,KAAKoovC,GAAI,KAAK,MAAM,GAAG9nvC,IAAItB,GAAGG,EAAEa,KAAKoovC,QAAS/jvC,GAAGlF,EAAEa,KAAKoovC,GAAuB,OAAnBjpvC,EAAEa,KAAKoD,GAAGZ,EAAErD,EAAEjB,EAAE6C,GAAUA,EAAE,IAAK,WAA4C,IAAIA,KAArC5B,EAAEa,KAAKgE,GAAE,aAAa9F,EAAEoC,EAAEhD,EAAE,KAAc0B,EAAE,GAAGoD,EAAErE,KAAKiB,EAAE+B,IAAY,OAAPQ,EAAEvC,EAAE+B,IAAY,OAAOA,GAAG,IAAK,WAAW7C,EAAEqD,EAAE,MAAM,IAAK,QAAQjE,EAAEiE,EAAE,MAAM,IAAK,eAAejB,EAAEiB,EAAE,MAAM,IAAK,0BAA0B,MAAMokB,MAAM9jB,EAAE,KAAK,QAAQgC,EAAE1E,EAAE2B,EAAEC,EAAEQ,GACjd,GADod,OAAOjE,GAAG,OAAOgD,IAAIhD,EAAEgD,GAAGnB,EAAEa,KAAKoD,GAClf,MAAMlF,EAAE,CAAC,GAAG,MAAMZ,EAAE,MAAMqoB,MAAM9jB,EAAE,KAAK,GAAGisB,EAAG5vB,IAAI,EAAEA,EAAEM,OAAO,MAAMmnB,MAAM9jB,EAAE,KAAKvE,EAAE,GAAGY,CAAC,CAA2E,MAA1E,iBAAkBZ,GAAG,OAAOA,EAAE,IAAI6B,EAAEa,KAAKg1B,IAAI,OAAO13B,GAAG6B,EAAEa,KAAKQ,EAAE8B,EAAE,GAAGhF,KAAY,KAAK,IAAK,QAAwC,IAAIgD,KAApCnB,EAAEa,KAAKgE,GAAE,UAAUzC,EAAErD,EAAE6C,EAAEzD,EAAE,KAAc0B,EAAE,GAAGoD,EAAErE,KAAKiB,EAAEsB,IAAY,OAAP+D,EAAErF,EAAEsB,IAAY,OAAOA,GAAG,IAAK,WAAW,IAAK,0BAA0B,MAAMqlB,MAAM9jB,EAAE,IAAI,UAAU,IAAK,iBAAiBN,EAAE8C,EAAE,MAAM,IAAK,eAAetD,EAAEsD,EAAE,MAAM,IAAK,UAAUnG,EAAEmG,EAAE,MAAM,IAAK,QAAQ/G,EAAE+G,EAAE,MAAM,QAAQR,EAAE1E,EAAE2B,EAAER,EAAE+D,GAC3X,OAD8X,OAAOnG,EAAE2F,EAAE1E,EAAE2B,EAAE,UAC7e5C,GAAG,OAAOqD,GAAGsC,EAAE1E,EAAE2B,EAAE,UAAUS,GAAG,OAAOjE,EAAEuG,EAAE1E,EAAE2B,EAAE,QAAQxD,GAAG,OAAOyD,GAAG8C,EAAE1E,EAAE2B,EAAE,QAAQC,GAAG5B,EAAEa,KAAKkovC,GAAW,KAAK,IAAK,WAAiC,IAAI,IAAIllvC,KAA9B7D,EAAEa,KAAKgE,GAAE,aAA0BhF,EAAE,GAAGoD,EAAErE,KAAKiB,EAAEgE,IAAY,OAAP1F,EAAE0B,EAAEgE,IAAY,OAAOA,GAAG,IAAK,WAAW,IAAK,0BAA0B,MAAM2iB,MAAM9jB,EAAE,MAAM,QAAQgC,EAAE1E,EAAE2B,EAAEkC,EAAE1F,GAAa,OAAV6B,EAAEa,KAAKoD,GAAU,KAAK,IAAK,QAAkC,IAAIhC,KAA9BjC,EAAEa,KAAKgE,GAAE,UAAU1G,EAAE,KAAc0B,EAAE,GAAGoD,EAAErE,KAAKiB,EAAEoC,IAAY,OAAPd,EAAEtB,EAAEoC,IAAY,OAAOA,GAAG,IAAK,WAAW9D,EAAEgD,EAAE,MAAM,IAAK,0BAA0B,MAAMqlB,MAAM9jB,EAAE,MAAM,QAAQgC,EAAE1E,EAAE2B,EAAEM,EAAEd,GAClf,OADqfnB,EAAEa,KAAKoD,GACrf9F,EAAE,IAAK,UAAU,IAAK,MAA4B,IAAIiE,KAA1BpC,EAAEa,KAAKgE,GAAEvC,IAAInB,EAAEhD,EAAE,KAAc0B,EAAE,GAAGoD,EAAErE,KAAKiB,EAAEuC,IAAY,OAAPR,EAAE/B,EAAEuC,IAAY,OAAOA,GAAG,IAAK,WAAWjE,EAAEyD,EAAE,MAAM,IAAK,0BAA0BT,EAAES,EAAE,MAAM,QAAQ8C,EAAE1E,EAAE2B,EAAES,EAAER,GAAa,GAAV5B,EAAEa,KAAKoD,GAAM,MAAM9C,EAAE,CAAC,GAAG,MAAMhD,EAAE,MAAMqoB,MAAM9jB,EAAE,KAAK,GAAG,iBAAkBvB,KAAK,WAAWA,GAAG,MAAMqlB,MAAM9jB,EAAE,KAAgB,OAAX7C,EAAEsB,EAAE6y0C,UAA8B,iBAAkBn00C,GAAG,EAAEA,EAAER,QAAQ,OAAOQ,EAAE,GAAGG,EAAEa,KAAKg1B,GAAGx0B,EAAExB,IAAIG,EAAEa,KAAKQ,EAAE,GAAGxB,IAAI,CAA8C,MAA7C,iBAAkB1B,GAAG,OAAOA,EAAE,IAAI6B,EAAEa,KAAKg1B,IAAW13B,EAAE,IAAK,OAAO,IAAK,OAAO,IAAK,KAAK,IAAK,MAAM,IAAK,QAAQ,IAAK,KAAK,IAAK,MAAM,IAAK,SAAS,IAAK,OAAO,IAAK,OAAO,IAAK,QAAQ,IAAK,SAAS,IAAK,QAAQ,IAAK,MAC5nB,IAAI,IAAI6F,KAD0nBhE,EAAEa,KAAKgE,GAAEvC,IAC9nBzC,EAAE,GAAGoD,EAAErE,KAAKiB,EAAEmE,IAAY,OAAP7F,EAAE0B,EAAEmE,IAAY,OAAOA,GAAG,IAAK,WAAW,IAAK,0BAA0B,MAAMwiB,MAAM9jB,EAAE,IAAIJ,IAAI,QAAQoC,EAAE1E,EAAE2B,EAAEqC,EAAE7F,GAAc,OAAX6B,EAAEa,KAAKkovC,GAAW,KAAK,IAAK,iBAAiB,IAAK,gBAAgB,IAAK,YAAY,IAAK,gBAAgB,IAAK,gBAAgB,IAAK,mBAAmB,IAAK,iBAAiB,IAAK,gBAAgB,OAAO7xtC,GAAGl3B,EAAEH,EAAEyC,EAAEX,GAAG,IAAK,OAAO,OAAO,IAAID,EAAEqy0C,eAAe/z0C,EAAEa,KAAKsovC,IAAIjytC,GAAGl3B,EAAEH,EAAEyC,EAAEX,GAAG,QAAQ,IAAI,IAAIW,EAAE9C,QAAQ,MAAM,iBAAkBK,EAAEise,GAAG,OAAO50c,GAAGl3B,EAAEH,EAAEyC,EAAEX,GACle,IAAIuD,KADielF,EAAEa,KAAKgE,GAAEvC,IACvfnB,EAAEhD,EAAE,KAAc0B,EAAE,GAAGoD,EAAErE,KAAKiB,EAAEqF,IAAY,OAAPtD,EAAE/B,EAAEqF,IAAY,OAAOA,GAAG,IAAK,WAAW/G,EAAEyD,EAAE,MAAM,IAAK,0BAA0BT,EAAES,EAAE,MAAM,IAAK,QAAQg0B,EAAG51B,EAAE2B,EAAEC,GAAG,MAAM,IAAK,iCAAiC,IAAK,2BAA2B,MAAM,QAAQsrB,EAAGhoB,IAAI,mBAAoBtD,GAAG,iBAAkBA,GAAG5B,EAAEa,KAAK2D,EAAEnD,EAAE6D,GAAGrC,EAAExB,EAAE8B,EAAEvB,IAAI8B,GAAsB,OAAnB1D,EAAEa,KAAKoD,GAAGZ,EAAErD,EAAEmB,EAAEhD,GAAUA,EAAE,CA+B9Ts1B,EAArB/xB,EAAEY,EAAE4z0C,gBAAsBvxwC,OAAO9kE,EAAE8B,EAAE3B,EAAEs30C,cAAc510C,EAAE400C,eAAe500C,EAAE800C,gBAAe,EAAGr10C,EAAEO,EAAE400C,cAAc500C,EAAE400C,cA7CxH,SAAYt20C,EAAEsC,EAAEzC,GAAG,OAAOyC,GAAG,IAAK,SAAS,OAAOiC,EAAE,EAAE,MAAM1E,EAAEM,MAAMN,EAAEM,MAAMN,EAAEs8H,cAAc,IAAK,MAAM,OAAO53H,EAAE,EAAE,MAAM,IAAK,OAAO,OAAOA,EAAE,EAAE,MAAM,IAAK,gBAAgB,OAAOA,EAAE,EAAE,MAAM,IAAK,QAAQ,OAAOA,EAAE,EAAE,MAAM,IAAK,QAAQ,IAAK,QAAQ,IAAK,QAAQ,OAAOA,EAAE,EAAE,MAAM,IAAK,WAAW,OAAOA,EAAE,EAAE,MAAM,IAAK,KAAK,OAAOA,EAAE,EAAE,MAAM,OAAO,GAAGvE,EAAE+z0C,eAAe,IAAI/z0C,EAAE+z0C,cAAcxv0C,EAAE,EAAE,MAAMvE,CAAC,CA6CjQ2ovC,CAAGxnvC,EAAEtB,EAAE8B,GAAGqsB,GAAGhuB,EAAEsC,EAAEnE,GAAGuD,EAAE400C,cAAcn10C,EAAStB,GAAG,IAAK,OAAO,IAAK,OAAO,IAAK,KAAK,IAAK,MAAM,IAAK,QAAQ,IAAK,KAAK,IAAK,MAAM,IAAK,QAAQ,IAAK,SAAS,IAAK,OAAO,IAAK,OAAO,IAAK,QAAQ,IAAK,SAAS,IAAK,QAAQ,IAAK,MAAM,MAAM,QAAQ6B,EAAEijE,OAAO9jE,KAAKq1B,GAAG70B,EAAExB,GAAGupvC,IAAI1nvC,EAAE800C,gBAAe,CAI5Y,CAAC,CACzB,SAAS/y0C,GAAEzD,EAAEsC,EAAEzC,GAAY,GAATyC,EAAE+lF,KAAKxoF,EAAK,iBAAkBA,GAAG,OAAOA,EAAE,CAAC,OAAOA,EAAEg26B,UAAU,KAAKu0U,GAAgC,YAA7BrkuC,GAAG/lB,EAAEsC,EAAEzC,EAAE0L,KAAK1L,EAAEosC,MAAMpsC,EAAE+gC,KAAY,KAAKyptC,GAAG,MAAM7juC,MAAM9jB,EAAE,MAAM,KAAK+f,GAAG,IAAI9gB,EAAE9B,EAAE4x9B,MAA+B,YAAThu9B,GAAEzD,EAAEsC,EAApBzC,EAAE8B,EAAE9B,EAAE4ggC,WAA0B,GAAG9x+B,EAAG9uB,GAAc,YAAViovC,GAAG9nvC,EAAEsC,EAAEzC,GAA6G,IAArE8B,EAA9B,OAAO9B,GAAG,iBAAkBA,EAAI,KAAqC,mBAA/B8B,EAAE4f,IAAI1hB,EAAE0hB,KAAK1hB,EAAE,eAAsC8B,EAAE,QAAaA,EAAEA,EAAE/C,KAAKiB,IAAI,CAAY,KAAXA,EAAE8B,EAAE5B,QAAaG,KAAK,CAAC,IAAIwB,EAAE,GAAG,GAAGA,EAAEb,KAAKhB,EAAEM,OAAON,EAAE8B,EAAE5B,cAAcF,EAAEK,MAAM4nvC,GAAG9nvC,EAAEsC,EAAEZ,EAAE,CAAC,MAAM,CAAqC,MAApC1B,EAAE1B,OAAOI,UAAU6E,SAAS3E,KAAKiB,GAAS2mB,MAAM9jB,EAAE,GAAG,oBACpf1C,EAAE,qBAAqB1B,OAAOgU,KAAKzS,GAAGgM,KAAK,MAAM,IAAI7L,GAAI,CAAC,iBAAkBH,GAAG8B,EAAEW,EAAE4z0C,gBAAiBM,eAAe5tF,EAAGtmvC,EAAE4z0C,eAAevxwC,OAAO9kE,EAAEG,EAAEs30C,cAAc310C,EAAE600C,gBAAiB,iBAAkB320C,KAAI8B,EAAEW,EAAE4z0C,gBAAiBM,eAAe5tF,EAAGtmvC,EAAE4z0C,eAAevxwC,OAAO,GAAG9kE,EAAEG,EAAEs30C,cAAc310C,EAAE600C,gBAAgB,CAAC,SAAS1uF,GAAG9nvC,EAAEsC,EAAEzC,GAAG,IAAI,IAAI8B,EAAE9B,EAAER,OAAOqC,EAAE,EAAEA,EAAEC,EAAED,IAAI,CAAC,IAAIvD,EAAEmE,EAAEgz0C,YAAYhz0C,EAAEgz0C,YAAYr0zC,GAAG9iB,EAAEwD,EAAED,GAAG,IAAIssB,GAAGhuB,EAAEsC,EAAEzC,EAAE6B,GAAG,CAAC,QAAQY,EAAEgz0C,YAAYn30C,CAAC,CAAC,CAAC,CACzb,SAAS6vB,GAAGhuB,EAAEsC,EAAEzC,GAAG,IAAI8B,EAAEW,EAAE4z0C,eAAeI,cAAc500C,EAAEY,EAAE8z0C,cAAcj40C,EAAEmE,EAAE6pC,QAAQ,IAAI,OAAO1oC,GAAEzD,EAAEsC,EAAEzC,EAAE,CAAC,MAAMuC,GAAG,GAAGmkB,KAAK,iBAAkBnkB,GAAG,OAAOA,GAAG,mBAAoBA,EAAEhC,KAAyT,MAAMkC,EAAE4z0C,eAAeI,cAChgB300C,EAAEW,EAAE8z0C,cAAc100C,EAAEY,EAAE6pC,QAAQhuC,EAAE6G,GAAE7G,GAAGiE,EADiJvC,EAAEuC,EAAE,IAAIjB,EAAEmB,EAAE4z0C,eAAet00C,EAAE2hB,GAAGvjB,EAAEmB,EAAEwjE,OAAOtlE,OAAO,KAAK8B,EAAEm10C,cAAcn10C,EAAEq10C,gBAAe,GAAIr10C,EAAE69B,SAASn+B,KAAKe,GAAGT,EAAEq10C,gBAAe,EAAGx20C,EAAE+kB,GAAG/kB,EAAEsC,EAAE+lF,KAAK/lF,EAAE2z0C,gBAAgBr00C,EAAEU,EAAE6z0C,SAAS7z0C,EAAE8z0C,cAAc9z0C,EAAE6pC,QAAQ7pC,EAAEgz0C,aAAaS,KAAKl20C,EAAEO,KAAKJ,EAAEA,GAAGsC,EAAE4z0C,eAAeI,cAAc300C,EAAEW,EAAE8z0C,cAAc100C,EAAEY,EAAE6pC,QAAQhuC,EAAE6G,GAAE7G,EAC1b,CAAC,CAAC,SAAS4pvC,GAAG/nvC,GAAG,IAAIsC,EAAEtC,EAAEi20C,iBAAgBj20C,EAAEA,EAAEk20C,gBAAiBzxzC,OAAO,EAAE0jgB,GAAGnphB,KAAKsD,EAAEtC,EAAE,CAC1H,SAAS0ovC,GAAG1ovC,EAAEsC,EAAEzC,GAAG,IAAI8B,EAAE3B,EAAEi20C,gBAAgBj20C,EAAEk20C,eAAezxzC,OAAO,EAAE,OAAO9iB,GAAGW,EAAEuz0C,kBAAkB,IAAIvz0C,EAAEmiB,SAASniB,EAAEmiB,OAAO,EAAE,OAAOniB,EAAEw2C,aAAax2C,EAAEw2C,YAAY9lC,WAAWrR,EAAEq3F,eAAer3F,EAAEs10C,oBAAoBt10C,EAAEs10C,mBAAkB,EAAGj30C,OAAE,IAASH,EAAE2mB,MAAM9jB,EAAE,MAAM7C,EAAE8B,EAAEy10C,YAAY900C,EAAE+5G,QAAQr8G,GAAG2B,EAAE000C,eAAe/z0C,EAAEq10C,yBAAyB920C,KAAKc,IAAIA,EAAEw10C,uBAAuBjzzC,SAAQ,SAASlkB,GAAG,OAAO0ovC,GAAG1ovC,EAAEsC,EAAEzC,EAAE,IAAG8B,EAAEw10C,uBAAuBnzzC,QAAQ1hB,EAAEuz0C,kBAAkB,IAAIvz0C,EAAEuz0C,kBAAkBl00C,EAAEW,EAAEs10C,cAAgB,CACxf,SAAStmY,GAAGtx8B,EAAEsC,GAAG,GAAG,IAAIA,EAAEqiE,OAAOtlE,QAAQ,IAAIiD,EAAE08B,SAAS3/B,QAAQ,OAAOiD,EAAE08B,SAAS,GAAGu3yC,SAAS,CAAC,IAAI120C,EAAEyC,EAAE08B,SAAS,GAAGn/B,EAAE0qB,GAAGjoB,EAAEioB,GAAG1qB,EAAEw20C,eAAc,EAAG,IAAIx20C,EAAE4kB,QAAQ6s7B,GAAGtx8B,EAAEH,EAAE,MAAMG,EAAEk30C,kBAAkBr20C,KAAKyB,EAAE,CACtM,SAAS6lhB,GAAGnohB,EAAEsC,EAAEzC,GAAG,GAAG,OAAOyC,EAAE,CAAC,GAAGzC,EAAEw20C,cAAc,CAAC,GAAG,OAAOr20C,EAAE630C,qBAAqB,MAAMrxzC,MAAM9jB,EAAE,MAAM1C,EAAE630C,qBAAqBh40C,CAAC,CAACG,EAAE810C,mBAAmB,IAAI910C,EAAE810C,mBAAmB910C,EAAE020C,aAAa3y0C,IAAEzB,EAAEtC,EAAE830C,gBAAiB,MAAMx10C,EAAE02F,eAAe12F,EAAE200C,oBAAoB,IAAI300C,EAAE02F,cAAcn5F,EAAEw20C,eAAe,IAAIx20C,EAAE4kB,QAAQ6s7B,GAAGhv8B,EAAEzC,GAAGyC,EAAE+z0C,eAAer20C,EAAE+30C,oBAAoBl30C,KAAKyB,GAAGA,EAAE600C,uBAAuBjzzC,QAAQ6juC,GAAG/nvC,GAAGsC,EAAE600C,uBAAuBnzzC,SAASnkB,EAAEw20C,eAAe,IAAIx20C,EAAE4kB,SAAS6s7B,GAAGhv8B,EAAEzC,GAAG,IAAIyC,EAAE400C,kBAAkB730C,QACtfiD,EAAE+z0C,eAAer20C,EAAEg40C,kBAAkBn30C,KAAKyB,KAAKtC,EAAE610C,kBAAkB,IAAI710C,EAAE610C,kBAAkB710C,EAAEA,EAAE430C,aAAe,CAC9G,SAASvrzC,GAAGrsB,GAAG,GAAG,IAAIA,EAAEykB,OAAO,CAAC,IAAIniB,EAAEU,GAAEnD,EAAEsqB,GAAG4U,QAAQ5U,GAAG4U,QAAQna,GAAG,IAAIjjB,EAAEyqB,GAAGA,GAAGpsB,EAAEs30C,cAAc,IAAI,IAAoBn50C,EAAhBuD,EAAE1B,EAAEg20C,YAAc,IAAI730C,EAAE,EAAEA,EAAEuD,EAAErC,OAAOlB,IAAI,CAAC,IAAIgD,EAAEO,EAAEvD,GAAOyD,EAAE5B,EAAEoC,EAAEjB,EAAE+00C,eAAe,GAAG,IAAI9z0C,EAAEqiB,OAAO,CAACzf,GAAE7D,EAAEgrC,SAAS,IAAI1oC,GAAE7B,EAAET,EAAEA,EAAEknF,MAAMjmF,EAAEo00C,gBAAgBp00C,EAAEq00C,cAAcr00C,EAAEuiE,OAAO9jE,KAAKs1B,GAAIh1B,EAAEg10C,SAASlyzC,OAAO9iB,GAAGiB,EAAEqiB,OAAO,EAAE0jgB,GAAGvmhB,EAAET,EAAE800C,gBAAgB7z0C,EAAE,CAAC,MAAMuB,GAAG,GAAG4iB,KAAK,iBAAkB5iB,GAAG,OAAOA,GAAG,mBAAoBA,EAAEvD,KAAK,CAAC,IAAI8E,EAAE/D,EAAE400C,KAAKpy0C,EAAEvD,KAAK8E,EAAEA,EAAE,KAAK,CAAC/D,EAAEg10C,SAASlyzC,OAAO9iB,GAAGiB,EAAEqiB,OAAO,EAAE,IAAI1lB,EAAEoC,EAAE800C,gBACveh00C,EAAE0B,EAAEE,EAAEY,GAAE7C,EAAEK,GAAG,OAAOlD,EAAE+tB,GAAGlrB,EAAEK,IAAIlD,EAAEi6F,eAAej6F,EAAEk40C,oBAAoBl40C,EAAEk40C,mBAAkB,EAAGl40C,EAAEq40C,YAAYvz0C,EAAE9E,EAAEs30C,eAAez00C,EAAE+10C,yBAAyB920C,KAAK9B,KAAK6C,EAAEi00C,kBAAqB,IAAIj00C,EAAEi00C,kBAAoC7x0C,EAAbpC,EAAEg20C,aAAe,CAAC,CAAU,CAAC,CAACl20C,EAAEugB,OAAO,EAAE9jB,GAAG,OAAO6B,EAAE84C,aAAa2xsC,GAAGzqvC,EAAEA,EAAE84C,YAAY,CAAC,MAAMn1C,GAAGc,GAAEzE,EAAE2D,GAAGmpB,GAAG9sB,EAAE2D,EAAE,CAAC,QAAQyoB,GAAGzqB,EAAEwoB,GAAG4U,QAAQl/B,EAAEA,IAAI+kB,IAAI5f,GAAE1C,EAAE,CAAC,CAAC,CAC7W,SAASoovC,GAAG1qvC,EAAEsC,EAAEzC,GAAsB,OAAnBA,EAAEw20C,eAAc,EAAUx20C,EAAE4kB,QAAQ,KAAK,EAAE,IAAI9iB,EAAE9B,EAAE0qB,GAAGvqB,EAAEi40C,gBAAoI,OAApHp40C,EAAE220C,gBAAe,EAAG320C,EAAE420C,cAAa,EAAGz20C,EAAEA,EAAEs30C,cAAcx10C,EAAEQ,EAAE+mvC,IAAIvnvC,EAAEQ,EAAEtC,EAAEk40C,mBAAuCp20C,EAAEQ,EAAtBtC,EAAEqB,EAAEM,EAAE4B,SAAS,MAAmBnF,EAAEkE,EAAEgnvC,IAAI,KAAK,EAAEzpvC,EAAE4kB,OAAO,EAAE,IAAI/iB,GAAE,EAAGC,EAAE9B,EAAE8kE,OAAO,IAAIxmE,EAAE,EAAE0B,EAAEA,EAAEm/B,SAAS,IAAI,IAAI79B,EAAE,EAAEA,EAAEtB,EAAER,OAAO8B,IAAI,CAAC,IAAIO,EAAE7B,EAAEsB,GAAGhD,EAAEuD,EAAEsa,MAAM7d,IAAI2D,EAAEQ,EAAEX,EAAExD,IAAIuD,EAAEkmvC,GAAG5nvC,EAAEsC,EAAEZ,EAAE,CAAC,KAAKvD,EAAEwD,EAAEtC,OAAO,EAAElB,IAAI2D,EAAEQ,EAAEX,EAAExD,IAA8B,OAA1BA,EAAEwD,EAAEtC,SAASqC,EAAEtD,EAAEkE,EAAEX,EAAExD,KAAYuD,EAAE,QAAQ,MAAM8kB,MAAM9jB,EAAE,MAAO,CACpc,SAASklvC,GAAG5nvC,EAAEsC,EAAEzC,GAAG,IAAI8B,EAAE9B,EAAE020C,SAAS,GAAG,OAAO500C,EAAE,OAAO+ovC,GAAG1qvC,EAAEsC,EAAEzC,GAAsB,GAAnB8B,EAAE000C,eAAc,EAAM100C,EAAEs10C,kBAAkBt10C,EAAEA,EAAEy10C,YAAYh50C,EAAEkE,EAAEkzrC,IAAI1zrC,EAAEQ,EAAEknvC,IAAI7nvC,IAAIG,EAAEQ,EAAEmnvC,IAAI3nvC,EAAEQ,EAAEjB,EAAE8B,EAAExB,KAAKG,EAAEQ,EAAEo+D,KAAKtiE,EAAEkE,EAAEonvC,IAAIgB,GAAG1qvC,EAAEsC,EAAEzC,QAAQ,GAAG,EAAE8B,EAAEq3F,aAAa,CAACr3F,EAAEq10C,cAAch30C,EAAEi40C,gBAAgB,EAAEt20C,EAAEu10C,kBAAkB730C,QAAQW,EAAEg40C,kBAAkBn30C,KAAKc,GAAG,IAAID,EAAE1B,EAAEs30C,cAAkBn50C,EAAEuD,EAAEy20C,iBAAiBz20C,EAAEa,EAAEb,EAAE020C,eAAej60C,EAAEoF,SAAS,KAAK5B,EAAEA,EAAE4oB,GAAG7oB,EAAEkkV,GAAGtjV,EAAEtC,EAAEs30C,cAAc310C,GAAG+ovC,GAAG1qvC,EAAEsC,EAAEzC,EAAE,MAAM,GAAG8B,EAAEiuV,SAAS5vV,EAAEq40C,qBAAqB120C,EAAEq10C,cAAch30C,EAAEi40C,gBAChfj40C,EAAE+30C,oBAAoBl30C,KAAKc,GAAGikV,GAAGtjV,EAAEtC,EAAEs30C,cAAc310C,EAAE4oB,IAAImguC,GAAG1qvC,EAAEsC,EAAEzC,OAAO,CAA+B,GAA9BzB,EAAEkE,EAAEw0B,IAA6B,KAAzBj3B,EAAE8B,EAAEu10C,mBAA2B730C,OAAO,MAAMmnB,MAAM9jB,EAAE,MAAMklvC,GAAG5nvC,EAAEsC,EAAEzC,EAAE,GAAG,CAAC,OAAOzB,EAAEkE,EAAE6lO,GAAG,CAAC,SAAS59M,GAAGvqB,EAAEsC,EAAEzC,GAAwD,OA7C9O,SAAYG,EAAEsC,EAAEzC,EAAE8B,GAAG,OAAO9B,EAAEk00C,eAAe,KAAK,EAAE,KAAK,EAAE,OAAOjy0C,EAAE9B,EAAEupvC,IAAIznvC,EAAE9B,EAAEsC,EAAEg20C,eAAex20C,EAAE9B,EAAEqB,EAAEM,EAAE4B,SAAS,MAAMnF,EAAE4B,EAAE2pvC,IAAI,KAAK,EAAE,OAAO7nvC,EAAE9B,EAAEyovC,IAAI3mvC,EAAE9B,EAAEsC,EAAEg20C,eAAex20C,EAAE9B,EAAEqB,EAAEM,EAAE4B,SAAS,MAAMnF,EAAE4B,EAAEk50C,IAAI,KAAK,EAAE,OAAOp30C,EAAE9B,EAAE0/W,IAAI59W,EAAE9B,EAAEsC,EAAEg20C,eAAex20C,EAAE9B,EAAEqB,EAAEM,EAAE4B,SAAS,MAAMnF,EAAE4B,EAAE640C,IAAI,KAAK,EAAE,OAAO/20C,EAAE9B,EAAE8+W,IAAIh9W,EAAE9B,EAAEsC,EAAEg20C,eAAex20C,EAAE9B,EAAEqB,EAAEM,EAAE4B,SAAS,MAAMnF,EAAE4B,EAAE800C,IAAI,KAAK,EAAE,OAAOhz0C,EAAE9B,EAAE4pvC,IAAI9nvC,EAAE9B,EAAEsC,EAAEg20C,eAAex20C,EAAE9B,EAAEqB,EAAEM,EAAE4B,SAAS,MAAMnF,EAAE4B,EAAE+gvC,IAAI,KAAK,EAAE,OAAOj/uC,EAAE9B,EAAE+00C,IAAIjz0C,EAAE9B,EAAEsC,EAAEg20C,eAAex20C,EAAE9B,EAAEqB,EAAEM,EAAE4B,SAAS,MAAMnF,EAAE4B,EAAEwzuB,IAAI,KAAK,EAAE,OAAO1xuB,EAAE9B,EAChgBy10C,IAAI3z0C,EAAE9B,EAAEsC,EAAEg20C,eAAex20C,EAAE9B,EAAEqB,EAAEM,EAAE4B,SAAS,MAAMnF,EAAE4B,EAAE410C,IAAI,QAAQ,MAAMpvzC,MAAM9jB,EAAE,MAAO,CA4CoGonvC,CAAGxnvC,EAAEtC,EAAEs30C,cAAcz30C,EAAEy20C,cAAcz20C,EAAE0qB,IAAIq9tC,GAAG5nvC,EAAEsC,EAAEzC,GA5CrJ,SAAYG,EAAEsC,GAAG,OAAOA,EAAEyx0C,eAAe,KAAK,EAAE,KAAK,EAAE,OAAO310C,EAAE4B,EAAE200C,IAAI,KAAK,EAAE,OAAOv20C,EAAE4B,EAAE8x8B,IAAI,KAAK,EAAE,OAAO1z8B,EAAE4B,EAAE400C,IAAI,KAAK,EAAE,OAAOx20C,EAAE4B,EAAE6x8B,IAAI,KAAK,EAAE,OAAOzz8B,EAAE4B,EAAE0mxB,IAAI,KAAK,EAAE,OAAOtoxB,EAAE4B,EAAEg10C,IAAI,KAAK,EAAE,OAAO520C,EAAE4B,EAAE6pvC,IAAI,QAAQ,MAAMrjuC,MAAM9jB,EAAE,MAAO,CA4CxEqnvC,CAAGznvC,EAAEzC,EAAEy20C,cAAc,CAC1Q,SAAS9rF,GAAGxqvC,EAAEsC,EAAEzC,GAAG,IAAI,IAAI8B,EAAE9B,EAAEq30C,kBAAkBx10C,EAAE,EAAEA,EAAEC,EAAEtC,OAAOqC,IAAI430C,GAAGt50C,EAAEsC,EAAEzC,EAAE8B,EAAED,IAAsK,GAAlKC,EAAEtC,OAAO,EAAEW,EAAEA,EAAEs30C,cAAc310C,EAAE9B,EAAE0qB,GAAG1qB,EAAEA,EAAEm30C,cAAcl10C,EAAEQ,EAAEtC,EAAEu40C,mBAAmBv40C,EAAEw40C,6BAA6B120C,EAAEQ,EAAEm10C,KAAKz30C,EAAEw40C,8BAA6B,EAAG120C,EAAEQ,EAAEk10C,KAAQ,OAAO710C,EAAE,MAAM6kB,MAAM9jB,EAAE,MAAqE,OAA/D7C,EAAEwB,EAAExB,EAAE0D,SAAS,KAAKzB,EAAEQ,EAAEX,GAAGG,EAAEQ,EAAEo10C,IAAI510C,EAAEQ,EAAEtC,EAAEs40C,eAAex20C,EAAEQ,EAAEzC,GAAUzB,EAAEkE,EAAE0lvC,GAAG,CAClW,SAASsxF,GAAGt50C,EAAEsC,EAAEzC,EAAE8B,GAAG,GAAG,IAAIA,EAAE8iB,OAAO,OAAM,EAAG,IAAI/iB,EAAEC,EAAE4oB,GAAG,IAAI,IAAI7oB,EAAE,CAAC,IAAI,KAAKC,EAAE4oB,GAAG1qB,EAAEm30C,eAAe,MAAMxwzC,MAAM9jB,EAAE,MAAM,OAAO6nB,GAAGvqB,EAAEsC,EAAEX,EAAE,CAA+N,OAA9N4oB,GAAGvqB,EAAEsC,EAAEX,GAAqBG,EAAEQ,GAApBtC,EAAEA,EAAEs30C,eAAoBiB,mBAAmBv40C,EAAEy40C,4BAA4B320C,EAAEQ,EAAE0nvC,KAAKhqvC,EAAEy40C,6BAA4B,EAAG320C,EAAEQ,EAAEu00C,KAAK/00C,EAAEQ,EAAEtC,EAAEs40C,eAAmCx20C,EAAEQ,EAAtBZ,EAAEL,EAAEK,EAAE6B,SAAS,MAAYzB,EAAEQ,EAAEy00C,IAAIj10C,EAAEQ,EAAEtC,EAAEk40C,mBAAmBp20C,EAAEQ,EAAEZ,GAAUtD,EAAEkE,EAAE+00C,GAAG,CACpX,SAAS5sF,GAAGzqvC,EAAEsC,GAAGd,EAAE,IAAImd,WAAW,KAAKtgB,EAAE,EAAE,IAAI,IAAIwB,EAAEG,EAAE630C,qBAAqB,GAAG,OAAOh40C,GAAG,IAAIG,EAAE810C,iBAAiB,CAACluF,GAAG5nvC,EAAEsC,EAAEzC,GAAGG,EAAE630C,qBAAqB,KAAK,IAAIl20C,EAAE3B,EAAEs30C,cAAcoB,gBAAgB,IAAI740C,EAAE,EAAEA,EAAE8B,EAAEtC,OAAO,EAAEQ,IAAIiC,EAAEQ,EAAEX,EAAE9B,IAAIA,EAAE8B,EAAEtC,QAAQjB,EAAEkE,EAAEX,EAAE9B,GAAG,CAAC,IAAiC1B,EAA7BuD,EAAE1B,EAAE230C,yBAA2B,IAAIx50C,EAAE,EAAEA,EAAEuD,EAAErC,OAAOlB,IAAI,CAAC,IAAIgD,EAAEO,EAAEvD,GAAGwD,EAAEW,EAAE,IAAIV,EAAE5B,EAAEs30C,cAAcl10C,EAAEjB,EAAEopB,GAAGrlB,EAAE/D,EAAEi20C,YAAYr40C,EAAEoC,EAAEw1U,aAAa10U,EAAEd,EAAEw30C,oBAC7X,GADiZ720C,EAAEH,EAAEC,EAAE220C,mBAAmB320C,EAAEg30C,yBAAyB920C,EAAEH,EAAEumvC,KAAKtmvC,EAAEg30C,0BAAyB,EAAG920C,EAAEH,EACnfymvC,KAAQ,OAAOhmvC,EAAE,MAAMokB,MAAM9jB,EAAE,MAAuH,GAAjHZ,EAAEH,EAAES,GAAGN,EAAEH,EAAEsovC,KAAO/kvC,GAAGnG,GAAGkD,KAAEH,EAAEH,EAAEwovC,IAAIrovC,EAAEH,EAAEN,EAAEinvC,GAAGpjvC,GAAG,QAASnG,GAAGkD,KAAEH,EAAEH,EAAEwovC,IAAIrovC,EAAEH,EAAEN,EAAEinvC,GAAGvpvC,GAAG,OAAMkD,IAAIH,EAAEH,EAAEwovC,IAAIrovC,EAAEH,EAAEN,EAAEinvC,GAAGrmvC,OAAU7D,EAAEuD,EAAEwmvC,IAA0C,OAArCnovC,EAAE84C,YAAY,KAAK36C,SAAIuD,EAAEugB,OAAO,EAAE9jB,EAAU,CAACuD,EAAEugB,OAAO,EAAE9jB,GAAG,IAAI0F,EAAE7D,EAAE+30C,oBAAoB,IAAI550C,EAAE,EAAEA,EAAE0F,EAAExE,OAAOlB,IAAI,IAAIqsvC,GAAGxqvC,EAAEsC,EAAEuB,EAAE1F,IAA0C,OAArC6B,EAAE84C,YAAY,KAAK36C,SAAI0F,EAAEoe,OAAO,EAAE9jB,GAAU0F,EAAEoe,OAAO,EAAE9jB,GAAG60B,EAAG1wB,GAAGd,EAAE,IAAImd,WAAW,KAAKtgB,EAAE,EAAE,IAAI2F,EAAEhE,EAAEg40C,kBAAkB,IAAI750C,EAAE,EAAEA,EAAE6F,EAAE3E,OAAOlB,IAAI,CAAC,IAAIwF,EAAEK,EAAE7F,GAAG6B,EAAE,CAAC0B,EAAE1B,EAAEmB,EAAEmB,EAAE,IAAI2vB,EAAGtuB,EAAEuz0C,kBAAkB,IAAIt10C,EAAE,EAAEA,EAAEqwB,EAAG5yB,OAAOuC,IAAI,IAAI030C,GAAG530C,EAC/fP,EAAEwC,EAAEsuB,EAAGrwB,IAAI,CAACA,IAAIqwB,EAAGhQ,OAAO,EAAErgB,GAAG,IAAIimvC,GAAG,EAAG,MAAM7nvC,CAAC,CAACiyB,EAAGhQ,OAAO,EAAErgB,GAAGimvC,GAAG,CAAE,CAAC,IAAIA,EAAyC,OAArC7nvC,EAAE84C,YAAY,KAAK36C,SAAI6F,EAAEie,OAAO,EAAE9jB,EAAU,CAAC6F,EAAEie,OAAO,EAAE9jB,GAAG,IAAIowB,EAAGvuB,EAAE+30C,oBAAoB,IAAI550C,EAAE,EAAEA,EAAEowB,EAAGlvB,OAAOlB,IAAI,IAAIqsvC,GAAGxqvC,EAAEsC,EAAEisB,EAAGpwB,IAA2C,OAAtC6B,EAAE84C,YAAY,KAAK36C,SAAIowB,EAAGtM,OAAO,EAAE9jB,GAAUowB,EAAGtM,OAAO,EAAE9jB,EAAE,CAAC,QAAQ60B,EAAG1wB,GAAG,IAAItC,EAAE610C,iBAAiB,IAAI710C,EAAEg20C,YAAY320C,QAAQ,IAAIW,EAAE230C,yBAAyBt40C,QAAQ,IAAIW,EAAE+30C,oBAAoB140C,QAAQiD,EAAE0Q,OAAO,CAAC,CAC/Z,SAASomyB,GAAGp5yB,EAAEsC,GAAG,IAAI,IAAIzC,EAAEG,EAAE840C,eAAej50C,EAAEqkB,SAAQ,SAASrkB,GAAG,OAAO6ovC,GAAG7ovC,EAAEG,EAAEsC,EAAE,IAAGzC,EAAEmkB,QAAQ,OAAOhkB,EAAE84C,aAAa2xsC,GAAGzqvC,EAAEA,EAAE84C,YAAY,CAAC,MAAMn3C,GAAG8C,GAAEzE,EAAE2B,GAAGmrB,GAAG9sB,EAAE2B,EAAE,CAAC,CACjKF,EAAQ830C,uBAAuB,SAASv50C,EAAEsC,GAAG,OAAO,IAAI3C,SAAQ,SAASE,EAAE8B,GAAG,IAAID,EAAEvD,EAAEgD,EAAE,IAAIxB,SAAQ,SAASK,EAAEsC,GAAGnE,EAAE6B,EAAE0B,EAAEY,CAAC,IAAGV,EA9B5H,SAAY5B,EAAEsC,EAAEzC,EAAE8B,EAAED,EAAEvD,EAAEgD,EAAES,EAAEQ,GAAG,IAAI8C,EAAE,GAAGnG,EAAE,IAAI4lB,IACH,OADya9kB,EAAE0jB,GAApajhB,EAAE,CAACw2C,YAAY,KAAKw+xC,cAAch10C,EAAE+10C,0BAAqB,IAAS120C,EAAE,MAAMA,EAAE8iB,OAAO,EAAEmyzC,WAAW,KAAKqB,cAAc,EAAEpC,gBAAgB,EAAEC,iBAAiB,EAAE+B,qBAAqB,KAAKiB,eAAe/50C,EAAEi30C,YAAY9w0C,EAAEyy0C,yBAAyB,GAAGI,oBAAoB,GAAGC,kBAAkB,GAAG37tC,aAAQ,IAAS36G,EAAEgsB,GAAGhsB,EAAEk20C,gBAAW,IAASz50C,EAAE4F,GAAE5F,EAAE250C,kBAAa,IAAS320C,EAAE4C,GAAE5C,EAAEu10C,kBAAa,IAAS900C,EAAEmC,GAAEnC,EAAE+00C,kBAAa,IAASv00C,EAAE2B,GAAE3B,GAAU,EAAE,KAAKvC,GAAE,GAAG,IAAMw20C,eAC7e,EAAGr20C,EAAE+kB,GAAGziB,EAAEtC,EAAE,KAAKH,EAAEd,EAAEykB,GAAG,KAAK7B,IAAIzc,EAAErE,KAAKb,GAAUsC,CAAC,CA6B2EojB,CAAG1lB,EAvEjI,SAAYA,EAAEsC,EAAEzC,EAAE8B,EAAED,GAAG1B,OAAE,IAASA,EAAE,GAAGA,EAAEsC,OAAE,IAASA,EAAE4tB,EAAG3tB,EAAE,kBAAkBY,EAAEb,GAAG,MAAM,IAAInE,EAAE,GAAqD,QAAlD,IAAS0B,GAAG1B,EAAE0C,KAAKyB,EAAEjB,GAAG,GAAGxB,GAAG4L,QAAQqqB,EAAGlE,IAAKxD,QAAO,IAASzsB,EAAE,IAAI9B,EAAE,EAAEA,EAAE8B,EAAEtC,OAAOQ,IAAI1B,EAAE0C,KAAKgwB,EAAGxvB,EAAE8B,EAAExB,EAAE9B,KAAK2zB,GAAI,QAAG,IAAS9xB,EAAE,IAAIC,EAAE,EAAEA,EAAED,EAAErC,OAAOsC,IAAIxD,EAAE0C,KAAKkxB,EAAG1wB,EAAE8B,EAAEzB,EAAEC,KAAK6xB,GAAI,MAAM,CAACklzC,gBAAgBv60C,EAAEo60C,kBAAkBj20C,EAAE410C,kBAAkB310C,EAAEvC,EAAE,MAAMs40C,cAAc/10C,EAAEvC,EAAE,MAAMo40C,eAAep40C,EAAE,KAAKmvpB,SAASnvpB,EAAEm40C,eAAe,EAAEM,6BAA4B,EAAGD,8BAA6B,EAAGI,0BAAyB,EAAG,CAuE1XvwF,CAAG/lvC,EAAEA,EAAEy20C,sBAAiB,EAAOz20C,EAAEA,EAAEgyB,WAAM,EAAOhyB,EAAEA,EAAEk30C,4BAAuB,EAAOl30C,EAAEA,EAAEm30C,sBAAiB,EAAOn30C,EAAEA,EAAEo30C,sBAAiB,GAtE9M,SAAY150C,GAAG,OAAOuE,EAAE,+BAA+BvE,EAAE,EAAE,uCAAuCA,EAAE,EAAE,EAAE,KAAK,CAsEyG02B,CAAGp0B,EAAEA,EAAEq30C,kBAAa,GAAQr30C,EAAEA,EAAE+10C,0BAAqB,EAAO/10C,EAAEA,EAAE+5G,aAAQ,EAAOl+G,GAAE,WAAW,IAAI6B,EAAE,IAAIykQ,eAAe,CAACl5P,KAAK,QAAQukxC,KAAK,SAAS9vxC,GAAG,GAAG,IAAI4B,EAAE6iB,OAAO7iB,EAAE6iB,OAAO,EAAE2M,EAAGpxB,EAAE4B,EAAEg10C,iBAAiB,GAAG,IAAIh10C,EAAE6iB,QAAQ,OAAO7iB,EAAEk3C,YAAY,CAACl3C,EAAEk3C,YAC9f94C,EAAE,IAAIyqvC,GAAG7ovC,EAAE5B,EAAE,CAAC,MAAM6D,GAAGY,GAAE7C,EAAEiC,GAAGipB,GAAGlrB,EAAEiC,EAAE,CAAC,CAAC,EAAEg+C,OAAO,WAAWu3vB,GAAGx3yB,EAAE,GAAG,CAACg40C,cAAc,IAAI550C,EAAE650C,SAAS140C,EAAEtB,EAAEG,EAAE,IAAE,SAASA,GAAGmB,EAAE6kB,OAAM,WAAW,IAAGrkB,EAAE3B,EAAE,GAAE0B,GAAG,GAAGY,GAAGA,EAAE2mB,OAAO,CAAC,IAAI7mB,EAAEE,EAAE2mB,OAAO/jB,EAAE,WAAWk0yB,GAAGx3yB,EAAEQ,EAAEsiB,QAAQtiB,EAAEimB,oBAAoB,QAAQnjB,EAAE,EAAE9C,EAAEupB,iBAAiB,QAAQzmB,EAAE,CAACmnB,GAAGzqB,EAAE,GAAE,EAAEH,EAAQ6D,QAAQ,uCCnF3R,IAAI0qB,EAAG,EAAQ,OAASjB,EAAG,EAAQ,OAAa,SAASjtB,EAAE9B,GAAG,IAAI,IAAIsC,EAAE,yDAAyDtC,EAAEH,EAAE,EAAEA,EAAET,UAAUC,OAAOQ,IAAIyC,GAAG,WAAWgsB,mBAAmBlvB,UAAUS,IAAI,MAAM,yBAAyBG,EAAE,WAAWsC,EAAE,gHAAgH,CAAC,IAAI8uB,EAAG,IAAIzM,IAAIuJ,EAAG,CAAC,EAAE,SAAS8C,EAAGhxB,EAAEsC,GAAG6uB,EAAGnxB,EAAEsC,GAAG6uB,EAAGnxB,EAAE,UAAUsC,EAAE,CACxb,SAAS6uB,EAAGnxB,EAAEsC,GAAW,IAAR4rB,EAAGluB,GAAGsC,EAAMtC,EAAE,EAAEA,EAAEsC,EAAEjD,OAAOW,IAAIoxB,EAAGjN,IAAI7hB,EAAEtC,GAAG,CAC5D,IAAIktB,IAAK,oBAAqBhsB,aAAQ,IAAqBA,OAAOiD,eAAU,IAAqBjD,OAAOiD,SAASmE,eAAeiuB,EAAGj4B,OAAOI,UAAUC,eAAeo2B,EAAG,8VAA8VjE,EACpgB,CAAC,EAAEmB,EAAG,CAAC,EACiN,SAAShwB,EAAEjC,EAAEsC,EAAEzC,EAAE8B,EAAExD,EAAEuD,EAAEP,GAAGnC,KAAKw00C,gBAAgB,IAAIlx0C,GAAG,IAAIA,GAAG,IAAIA,EAAEtD,KAAKywF,cAAc9tF,EAAE3C,KAAKy00C,mBAAmBt10C,EAAEa,KAAK000C,gBAAgB7z0C,EAAEb,KAAKg8M,aAAah7M,EAAEhB,KAAKuM,KAAKjJ,EAAEtD,KAAK200C,YAAYjy0C,EAAE1C,KAAK400C,kBAAkBzy0C,CAAC,CAAC,IAAIwD,EAAE,CAAC,EACpb,uIAAuIf,MAAM,KAAKsgB,SAAQ,SAASlkB,GAAG2E,EAAE3E,GAAG,IAAIiC,EAAEjC,EAAE,GAAE,EAAGA,EAAE,MAAK,GAAG,EAAG,IAAG,CAAC,CAAC,gBAAgB,kBAAkB,CAAC,YAAY,SAAS,CAAC,UAAU,OAAO,CAAC,YAAY,eAAekkB,SAAQ,SAASlkB,GAAG,IAAIsC,EAAEtC,EAAE,GAAG2E,EAAErC,GAAG,IAAIL,EAAEK,EAAE,GAAE,EAAGtC,EAAE,GAAG,MAAK,GAAG,EAAG,IAAG,CAAC,kBAAkB,YAAY,aAAa,SAASkkB,SAAQ,SAASlkB,GAAG2E,EAAE3E,GAAG,IAAIiC,EAAEjC,EAAE,GAAE,EAAGA,EAAEuO,cAAc,MAAK,GAAG,EAAG,IAC1e,CAAC,cAAc,4BAA4B,YAAY,iBAAiB2V,SAAQ,SAASlkB,GAAG2E,EAAE3E,GAAG,IAAIiC,EAAEjC,EAAE,GAAE,EAAGA,EAAE,MAAK,GAAG,EAAG,IAAG,8OAA8O4D,MAAM,KAAKsgB,SAAQ,SAASlkB,GAAG2E,EAAE3E,GAAG,IAAIiC,EAAEjC,EAAE,GAAE,EAAGA,EAAEuO,cAAc,MAAK,GAAG,EAAG,IACxb,CAAC,UAAU,WAAW,QAAQ,YAAY2V,SAAQ,SAASlkB,GAAG2E,EAAE3E,GAAG,IAAIiC,EAAEjC,EAAE,GAAE,EAAGA,EAAE,MAAK,GAAG,EAAG,IAAG,CAAC,UAAU,YAAYkkB,SAAQ,SAASlkB,GAAG2E,EAAE3E,GAAG,IAAIiC,EAAEjC,EAAE,GAAE,EAAGA,EAAE,MAAK,GAAG,EAAG,IAAG,CAAC,OAAO,OAAO,OAAO,QAAQkkB,SAAQ,SAASlkB,GAAG2E,EAAE3E,GAAG,IAAIiC,EAAEjC,EAAE,GAAE,EAAGA,EAAE,MAAK,GAAG,EAAG,IAAG,CAAC,UAAU,SAASkkB,SAAQ,SAASlkB,GAAG2E,EAAE3E,GAAG,IAAIiC,EAAEjC,EAAE,GAAE,EAAGA,EAAEuO,cAAc,MAAK,GAAG,EAAG,IAAG,IAAIogB,EAAG,gBAAgB,SAASuB,EAAGlwB,GAAG,OAAOA,EAAE,GAAG4vD,aAAa,CAIxZ,SAASxhC,EAAGpuB,EAAEsC,EAAEzC,EAAE8B,GAAG,IAAIxD,EAAEwG,EAAEhG,eAAe2D,GAAGqC,EAAErC,GAAG,MAAQ,OAAOnE,EAAE,IAAIA,EAAEoN,KAAK5J,KAAK,EAAEW,EAAEjD,SAAS,MAAMiD,EAAE,IAAI,MAAMA,EAAE,IAAI,MAAMA,EAAE,IAAI,MAAMA,EAAE,MAP9I,SAAYtC,EAAEsC,EAAEzC,EAAE8B,GAAG,GAAG,MAAOW,GAD6F,SAAYtC,EAAEsC,EAAEzC,EAAE8B,GAAG,GAAG,OAAO9B,GAAG,IAAIA,EAAE0L,KAAK,OAAM,EAAG,cAAcjJ,GAAG,IAAK,WAAW,IAAK,SAAS,OAAM,EAAG,IAAK,UAAU,OAAGX,IAAc,OAAO9B,GAASA,EAAE2z0C,gBAAmD,WAAnCxz0C,EAAEA,EAAEuO,cAAcxN,MAAM,EAAE,KAAsB,UAAUf,GAAE,QAAQ,OAAM,EAAG,CAC/TsxB,CAAGtxB,EAAEsC,EAAEzC,EAAE8B,GAAG,OAAM,EAAG,GAAGA,EAAE,OAAM,EAAG,GAAG,OAAO9B,EAAE,OAAOA,EAAE0L,MAAM,KAAK,EAAE,OAAOjJ,EAAE,KAAK,EAAE,OAAM,IAAKA,EAAE,KAAK,EAAE,OAAOgpC,MAAMhpC,GAAG,KAAK,EAAE,OAAOgpC,MAAMhpC,IAAI,EAAEA,EAAE,OAAM,CAAE,CAOtEiovC,CAAGjovC,EAAEzC,EAAE1B,EAAEwD,KAAK9B,EAAE,MAAM8B,GAAG,OAAOxD,EARxK,SAAY6B,GAAG,QAAGu2B,EAAG33B,KAAKqzB,EAAGjyB,KAAeu2B,EAAG33B,KAAKkyB,EAAG9wB,KAAe+0B,EAAG1qB,KAAKrK,GAAUiyB,EAAGjyB,IAAG,GAAG8wB,EAAG9wB,IAAG,GAAS,GAAE,CAQwD8uB,CAAGxsB,KAAK,OAAOzC,EAAEG,EAAEshhB,gBAAgBh/gB,GAAGtC,EAAE27B,aAAar5B,EAAE,GAAGzC,IAAI1B,EAAEu10C,gBAAgB1z0C,EAAE7B,EAAE68M,cAAc,OAAOn7M,EAAE,IAAI1B,EAAEoN,MAAQ,GAAG1L,GAAGyC,EAAEnE,EAAEsxF,cAAc9tF,EAAExD,EAAEs10C,mBAAmB,OAAO5z0C,EAAEG,EAAEshhB,gBAAgBh/gB,IAAazC,EAAE,KAAX1B,EAAEA,EAAEoN,OAAc,IAAIpN,IAAG,IAAK0B,EAAE,GAAG,GAAGA,EAAE8B,EAAE3B,EAAEgglC,eAAer+kC,EAAEW,EAAEzC,GAAGG,EAAE27B,aAAar5B,EAAEzC,KAAI,CAHjd,0jCAA0jC+D,MAAM,KAAKsgB,SAAQ,SAASlkB,GAAG,IAAIsC,EAAEtC,EAAEyL,QAAQkjB,EACzmCuB,GAAIvrB,EAAErC,GAAG,IAAIL,EAAEK,EAAE,GAAE,EAAGtC,EAAE,MAAK,GAAG,EAAG,IAAG,2EAA2E4D,MAAM,KAAKsgB,SAAQ,SAASlkB,GAAG,IAAIsC,EAAEtC,EAAEyL,QAAQkjB,EAAGuB,GAAIvrB,EAAErC,GAAG,IAAIL,EAAEK,EAAE,GAAE,EAAGtC,EAAE,gCAA+B,GAAG,EAAG,IAAG,CAAC,WAAW,WAAW,aAAakkB,SAAQ,SAASlkB,GAAG,IAAIsC,EAAEtC,EAAEyL,QAAQkjB,EAAGuB,GAAIvrB,EAAErC,GAAG,IAAIL,EAAEK,EAAE,GAAE,EAAGtC,EAAE,wCAAuC,GAAG,EAAG,IAAG,CAAC,WAAW,eAAekkB,SAAQ,SAASlkB,GAAG2E,EAAE3E,GAAG,IAAIiC,EAAEjC,EAAE,GAAE,EAAGA,EAAEuO,cAAc,MAAK,GAAG,EAAG,IACld5J,EAAEkv0C,UAAU,IAAI5x0C,EAAE,YAAY,GAAE,EAAG,aAAa,gCAA+B,GAAG,GAAI,CAAC,MAAM,OAAO,SAAS,cAAciiB,SAAQ,SAASlkB,GAAG2E,EAAE3E,GAAG,IAAIiC,EAAEjC,EAAE,GAAE,EAAGA,EAAEuO,cAAc,MAAK,GAAG,EAAG,IAE5L,IAAIsiB,EAAGb,EAAG0lzC,mDAAmD3jzC,EAAGrxB,OAAOiH,IAAI,iBAAiB6rB,EAAG9yB,OAAOiH,IAAI,gBAAgBiqB,EAAGlxB,OAAOiH,IAAI,kBAAkB0gvC,EAAG3nvC,OAAOiH,IAAI,qBAAqB+uB,EAAGh2B,OAAOiH,IAAI,kBAAkBghvC,EAAGjovC,OAAOiH,IAAI,kBAAkBwuB,EAAGz1B,OAAOiH,IAAI,iBAAiBihvC,EAAGlovC,OAAOiH,IAAI,qBAAqB0uB,EAAG31B,OAAOiH,IAAI,kBAAkBsvB,EAAGv2B,OAAOiH,IAAI,uBAAuB8uB,EAAG/1B,OAAOiH,IAAI,cAAckhvC,EAAGnovC,OAAOiH,IAAI,cAAcjH,OAAOiH,IAAI,eAAejH,OAAOiH,IAAI,0BACje,IAAIiuB,EAAGl1B,OAAOiH,IAAI,mBAAmBjH,OAAOiH,IAAI,uBAAuBjH,OAAOiH,IAAI,eAAejH,OAAOiH,IAAI,wBAAwB,IAAImhvC,EAAGpovC,OAAOC,SAAS,SAASoovC,EAAG/ovC,GAAG,OAAG,OAAOA,GAAG,iBAAkBA,EAAS,KAAwC,mBAAnCA,EAAE8ovC,GAAI9ovC,EAAE8ovC,IAAK9ovC,EAAE,eAA0CA,EAAE,IAAI,CAAC,IAAoBgpvC,EAAhBnlvC,EAAEvF,OAAOa,OAAU,SAAS8pvC,EAAGjpvC,GAAG,QAAG,IAASgpvC,EAAG,IAAI,MAAMxiuC,OAAQ,CAAC,MAAM3mB,GAAG,IAAIyC,EAAEzC,EAAE8xC,MAAMtgB,OAAO5rB,MAAM,gBAAgBujvC,EAAG1mvC,GAAGA,EAAE,IAAI,EAAE,CAAC,MAAM,KAAK0mvC,EAAGhpvC,CAAC,CAAC,IAAIk3B,GAAG,EACzb,SAASrB,EAAG71B,EAAEsC,GAAG,IAAItC,GAAGk3B,EAAG,MAAM,GAAGA,GAAG,EAAG,IAAIr3B,EAAE2mB,MAAMszzC,kBAAkBtzzC,MAAMszzC,uBAAkB,EAAO,IAAI,GAAGx30C,EAAE,GAAGA,EAAE,WAAW,MAAMkkB,OAAQ,EAAEloB,OAAO4D,eAAeI,EAAE5D,UAAU,QAAQ,CAACuM,IAAI,WAAW,MAAMub,OAAQ,IAAI,iBAAkBhP,SAASA,QAAQ+Q,UAAU,CAAC,IAAI/Q,QAAQ+Q,UAAUjmB,EAAE,GAAG,CAAC,MAAMd,GAAG,IAAIG,EAAEH,CAAC,CAACgW,QAAQ+Q,UAAUvoB,EAAE,GAAGsC,EAAE,KAAK,CAAC,IAAIA,EAAE1D,MAAM,CAAC,MAAM4C,GAAGG,EAAEH,CAAC,CAACxB,EAAEpB,KAAK0D,EAAE5D,UAAU,KAAK,CAAC,IAAI,MAAM8nB,OAAQ,CAAC,MAAMhlB,GAAGG,EAAEH,CAAC,CAACxB,GAAG,CAAC,CAAC,MAAMwB,GAAG,GAAGA,GAAGG,GAAG,iBAAkBH,EAAEmwC,MAAM,CAAC,IAAI,IAAIxzC,EAAEqD,EAAEmwC,MAAM/tC,MAAM,MACnflC,EAAEC,EAAEgwC,MAAM/tC,MAAM,MAAMzC,EAAEhD,EAAEkB,OAAO,EAAEuC,EAAEF,EAAErC,OAAO,EAAE,GAAG8B,GAAG,GAAGS,GAAGzD,EAAEgD,KAAKO,EAAEE,IAAIA,IAAI,KAAK,GAAGT,GAAG,GAAGS,EAAET,IAAIS,IAAI,GAAGzD,EAAEgD,KAAKO,EAAEE,GAAG,CAAC,GAAG,IAAIT,GAAG,IAAIS,EAAG,MAAMT,IAAQ,IAAJS,GAASzD,EAAEgD,KAAKO,EAAEE,GAAG,CAAC,IAAIc,EAAE,KAAKvE,EAAEgD,GAAGsK,QAAQ,WAAW,QAA6F,OAArFzL,EAAEonK,aAAa1kK,EAAE0K,SAAS,iBAAiB1K,EAAEA,EAAE+I,QAAQ,cAAczL,EAAEonK,cAAqB1kK,CAAC,QAAO,GAAGvB,GAAG,GAAGS,GAAG,KAAK,CAAC,CAAC,CAAC,QAAQs1B,GAAG,EAAG1Q,MAAMszzC,kBAAkBj60C,CAAC,CAAC,OAAOG,EAAEA,EAAEA,EAAEonK,aAAapnK,EAAE0J,KAAK,IAAIu/uC,EAAGjpvC,GAAG,EAAE,CAC9Z,SAAS62B,EAAG72B,GAAG,OAAOA,EAAEoW,KAAK,KAAK,EAAE,OAAO6yuC,EAAGjpvC,EAAEuL,MAAM,KAAK,GAAG,OAAO09uC,EAAG,QAAQ,KAAK,GAAG,OAAOA,EAAG,YAAY,KAAK,GAAG,OAAOA,EAAG,gBAAgB,KAAK,EAAE,KAAK,EAAE,KAAK,GAAG,OAASpztC,EAAG71B,EAAEuL,MAAK,GAAM,KAAK,GAAG,OAASsqB,EAAG71B,EAAEuL,KAAK+hH,QAAO,GAAM,KAAK,EAAE,OAASz3F,EAAG71B,EAAEuL,MAAK,GAAM,QAAQ,MAAM,GAAG,CACxR,SAAS29uC,EAAGlpvC,GAAG,GAAG,MAAMA,EAAE,OAAO,KAAK,GAAG,mBAAoBA,EAAE,OAAOA,EAAEonK,aAAapnK,EAAE0J,MAAM,KAAK,GAAG,iBAAkB1J,EAAE,OAAOA,EAAE,OAAOA,GAAG,KAAK4xB,EAAG,MAAM,WAAW,KAAK4B,EAAG,MAAM,SAAS,KAAKkD,EAAG,MAAM,WAAW,KAAK2xtC,EAAG,MAAM,aAAa,KAAKhytC,EAAG,MAAM,WAAW,KAAKY,EAAG,MAAM,eAAe,GAAG,iBAAkBj3B,EAAE,OAAOA,EAAE616B,UAAU,KAAK1/4B,EAAG,OAAOn2B,EAAEonK,aAAa,WAAW,YAAY,KAAKuhlC,EAAG,OAAO3ovC,EAAEgkJ,SAASojB,aAAa,WAAW,YAAY,KAAKwhlC,EAAG,IAAItmvC,EAAEtC,EAAEstH,OAC7Z,OADoattH,EAAEA,EAAEonK,eACndpnK,EAAE,MADieA,EAAEsC,EAAE8kK,aAClf9kK,EAAEoH,MAAM,IAAY,cAAc1J,EAAE,IAAI,cAAqBA,EAAE,KAAKy2B,EAAG,OAA6B,QAAtBn0B,EAAEtC,EAAEonK,aAAa,MAAc9kK,EAAE4mvC,EAAGlpvC,EAAEuL,OAAO,OAAO,KAAKs9uC,EAAGvmvC,EAAEtC,EAAEyggC,SAASzggC,EAAEA,EAAEyx9B,MAAM,IAAI,OAAOy3R,EAAGlpvC,EAAEsC,GAAG,CAAC,MAAMzC,GAAG,EAAE,OAAO,IAAI,CAC3M,SAASspvC,EAAGnpvC,GAAG,IAAIsC,EAAEtC,EAAEuL,KAAK,OAAOvL,EAAEoW,KAAK,KAAK,GAAG,MAAM,QAAQ,KAAK,EAAE,OAAO9T,EAAE8kK,aAAa,WAAW,YAAY,KAAK,GAAG,OAAO9kK,EAAE0hJ,SAASojB,aAAa,WAAW,YAAY,KAAK,GAAG,MAAM,qBAAqB,KAAK,GAAG,OAAkBpnK,GAAXA,EAAEsC,EAAEgrH,QAAW85C,aAAapnK,EAAE0J,MAAM,GAAGpH,EAAE8kK,cAAc,KAAKpnK,EAAE,cAAcA,EAAE,IAAI,cAAc,KAAK,EAAE,MAAM,WAAW,KAAK,EAAE,OAAOsC,EAAE,KAAK,EAAE,MAAM,SAAS,KAAK,EAAE,MAAM,OAAO,KAAK,EAAE,MAAM,OAAO,KAAK,GAAG,OAAO4mvC,EAAG5mvC,GAAG,KAAK,EAAE,OAAOA,IAAI+lvC,EAAG,aAAa,OAAO,KAAK,GAAG,MAAM,YACtf,KAAK,GAAG,MAAM,WAAW,KAAK,GAAG,MAAM,QAAQ,KAAK,GAAG,MAAM,WAAW,KAAK,GAAG,MAAM,eAAe,KAAK,GAAG,MAAM,gBAAgB,KAAK,EAAE,KAAK,EAAE,KAAK,GAAG,KAAK,EAAE,KAAK,GAAG,KAAK,GAAG,GAAG,mBAAoB/lvC,EAAE,OAAOA,EAAE8kK,aAAa9kK,EAAEoH,MAAM,KAAK,GAAG,iBAAkBpH,EAAE,OAAOA,EAAE,OAAO,IAAI,CAAC,SAASmxB,EAAGzzB,GAAG,cAAcA,GAAG,IAAK,UAAU,IAAK,SAAS,IAAK,SAAS,IAAK,YAAqB,IAAK,SAAS,OAAOA,EAAE,QAAQ,MAAM,GAAG,CACra,SAASk2B,EAAGl2B,GAAG,IAAIsC,EAAEtC,EAAEuL,KAAK,OAAOvL,EAAEA,EAAEgrF,WAAW,UAAUhrF,EAAEuO,gBAAgB,aAAajM,GAAG,UAAUA,EAAE,CAEtF,SAAS+mvC,EAAGrpvC,GAAGA,EAAE+50C,gBAAgB/50C,EAAE+50C,cADvD,SAAY/50C,GAAG,IAAIsC,EAAE4zB,EAAGl2B,GAAG,UAAU,QAAQH,EAAEvB,OAAOmE,yBAAyBzC,EAAEf,YAAYP,UAAU4D,GAAGX,EAAE,GAAG3B,EAAEsC,GAAG,IAAItC,EAAErB,eAAe2D,SAAI,IAAqBzC,GAAG,mBAAoBA,EAAEsC,KAAK,mBAAoBtC,EAAEoL,IAAI,CAAC,IAAI9M,EAAE0B,EAAEsC,IAAIT,EAAE7B,EAAEoL,IAAiL,OAA7K3M,OAAO4D,eAAelC,EAAEsC,EAAE,CAACQ,cAAa,EAAGX,IAAI,WAAW,OAAOhE,EAAES,KAAKI,KAAK,EAAEiM,IAAI,SAASjL,GAAG2B,EAAE,GAAG3B,EAAE0B,EAAE9C,KAAKI,KAAKgB,EAAE,IAAI1B,OAAO4D,eAAelC,EAAEsC,EAAE,CAACK,WAAW9C,EAAE8C,aAAmB,CAACu4H,SAAS,WAAW,OAAOv5H,CAAC,EAAEu8hB,SAAS,SAASl+hB,GAAG2B,EAAE,GAAG3B,CAAC,EAAEg60C,aAAa,WAAWh60C,EAAE+50C,cACxf,YAAY/50C,EAAEsC,EAAE,EAAE,CAAC,CAAkD8mvC,CAAGppvC,GAAG,CAAC,SAASspvC,EAAGtpvC,GAAG,IAAIA,EAAE,OAAM,EAAG,IAAIsC,EAAEtC,EAAE+50C,cAAc,IAAIz30C,EAAE,OAAM,EAAG,IAAIzC,EAAEyC,EAAE44H,WAAev5H,EAAE,GAAqD,OAAlD3B,IAAI2B,EAAEu0B,EAAGl2B,GAAGA,EAAE0jhB,QAAQ,OAAO,QAAQ1jhB,EAAEG,QAAOH,EAAE2B,KAAa9B,IAAGyC,EAAE47hB,SAASl+hB,IAAG,EAAM,CAAC,SAAS82B,EAAG92B,GAAwD,QAAG,KAAxDA,EAAEA,IAAI,oBAAqBmE,SAASA,cAAS,IAAkC,OAAO,KAAK,IAAI,OAAOnE,EAAEyrhB,eAAezrhB,EAAE+vB,IAAI,CAAC,MAAMztB,GAAG,OAAOtC,EAAE+vB,IAAI,CAAC,CACpa,SAASm6tC,EAAGlqvC,EAAEsC,GAAG,IAAIzC,EAAEyC,EAAEohhB,QAAQ,OAAO7/gB,EAAE,CAAC,EAAEvB,EAAE,CAAC230C,oBAAe,EAAO99sC,kBAAa,EAAOh8H,WAAM,EAAOujhB,QAAQ,MAAM7jhB,EAAEA,EAAEG,EAAEk60C,cAAcC,gBAAgB,CAAC,SAASzkzC,EAAG11B,EAAEsC,GAAG,IAAIzC,EAAE,MAAMyC,EAAE65H,aAAa,GAAG75H,EAAE65H,aAAax6H,EAAE,MAAMW,EAAEohhB,QAAQphhB,EAAEohhB,QAAQphhB,EAAE230C,eAAep60C,EAAE4zB,EAAG,MAAMnxB,EAAEnC,MAAMmC,EAAEnC,MAAMN,GAAGG,EAAEk60C,cAAc,CAACC,eAAex40C,EAAE8sd,aAAa5ud,EAAEu60C,WAAW,aAAa930C,EAAEiJ,MAAM,UAAUjJ,EAAEiJ,KAAK,MAAMjJ,EAAEohhB,QAAQ,MAAMphhB,EAAEnC,MAAM,CAAC,SAASgoO,EAAGnoO,EAAEsC,GAAe,OAAZA,EAAEA,EAAEohhB,UAAiBt1f,EAAGpuB,EAAE,UAAUsC,GAAE,EAAG,CAC9d,SAASknvC,EAAGxpvC,EAAEsC,GAAG6lO,EAAGnoO,EAAEsC,GAAG,IAAIzC,EAAE4zB,EAAGnxB,EAAEnC,OAAOwB,EAAEW,EAAEiJ,KAAK,GAAG,MAAM1L,EAAK,WAAW8B,GAAM,IAAI9B,GAAG,KAAKG,EAAEG,OAAOH,EAAEG,OAAON,KAAEG,EAAEG,MAAM,GAAGN,GAAOG,EAAEG,QAAQ,GAAGN,IAAIG,EAAEG,MAAM,GAAGN,QAAQ,GAAG,WAAW8B,GAAG,UAAUA,EAA8B,YAA3B3B,EAAEshhB,gBAAgB,SAAgBh/gB,EAAE3D,eAAe,SAAS+hE,GAAG1gE,EAAEsC,EAAEiJ,KAAK1L,GAAGyC,EAAE3D,eAAe,iBAAiB+hE,GAAG1gE,EAAEsC,EAAEiJ,KAAKkoB,EAAGnxB,EAAE65H,eAAe,MAAM75H,EAAEohhB,SAAS,MAAMphhB,EAAE230C,iBAAiBj60C,EAAEi60C,iBAAiB330C,EAAE230C,eAAe,CACla,SAASxwF,EAAGzpvC,EAAEsC,EAAEzC,GAAG,GAAGyC,EAAE3D,eAAe,UAAU2D,EAAE3D,eAAe,gBAAgB,CAAC,IAAIgD,EAAEW,EAAEiJ,KAAK,KAAK,WAAW5J,GAAG,UAAUA,QAAG,IAASW,EAAEnC,OAAO,OAAOmC,EAAEnC,OAAO,OAAOmC,EAAE,GAAGtC,EAAEk60C,cAAczr3B,aAAa5ud,GAAGyC,IAAItC,EAAEG,QAAQH,EAAEG,MAAMmC,GAAGtC,EAAEm8H,aAAa75H,CAAC,CAAU,MAATzC,EAAEG,EAAE0J,QAAc1J,EAAE0J,KAAK,IAAI1J,EAAEi60C,iBAAiBj60C,EAAEk60C,cAAcC,eAAe,KAAKt60C,IAAIG,EAAE0J,KAAK7J,EAAE,CACzV,SAAS6gE,GAAG1gE,EAAEsC,EAAEzC,GAAM,WAAWyC,GAAGw0B,EAAG92B,EAAEmtF,iBAAiBntF,IAAE,MAAMH,EAAEG,EAAEm8H,aAAa,GAAGn8H,EAAEk60C,cAAczr3B,aAAazud,EAAEm8H,eAAe,GAAGt8H,IAAIG,EAAEm8H,aAAa,GAAGt8H,GAAE,CAAC,IAAI6pvC,GAAGjrvC,MAAMkS,QAC7K,SAASi1U,GAAG5lV,EAAEsC,EAAEzC,EAAE8B,GAAe,GAAZ3B,EAAEA,EAAEmoB,QAAW7lB,EAAE,CAACA,EAAE,CAAC,EAAE,IAAI,IAAInE,EAAE,EAAEA,EAAE0B,EAAER,OAAOlB,IAAImE,EAAE,IAAIzC,EAAE1B,KAAI,EAAG,IAAI0B,EAAE,EAAEA,EAAEG,EAAEX,OAAOQ,IAAI1B,EAAEmE,EAAE3D,eAAe,IAAIqB,EAAEH,GAAGM,OAAOH,EAAEH,GAAGwrL,WAAWltL,IAAI6B,EAAEH,GAAGwrL,SAASltL,GAAGA,GAAGwD,IAAI3B,EAAEH,GAAGw60C,iBAAgB,EAAG,KAAK,CAAmB,IAAlBx60C,EAAE,GAAG4zB,EAAG5zB,GAAGyC,EAAE,KAASnE,EAAE,EAAEA,EAAE6B,EAAEX,OAAOlB,IAAI,CAAC,GAAG6B,EAAE7B,GAAGgC,QAAQN,EAAiD,OAA9CG,EAAE7B,GAAGktL,UAAS,OAAG1pL,IAAI3B,EAAE7B,GAAGk80C,iBAAgB,IAAW,OAAO/30C,GAAGtC,EAAE7B,GAAGmxW,WAAWhtW,EAAEtC,EAAE7B,GAAG,CAAC,OAAOmE,IAAIA,EAAE+oL,UAAS,EAAG,CAAC,CACxY,SAASk+jC,GAAGvpvC,EAAEsC,GAAG,GAAG,MAAMA,EAAEg40C,wBAAwB,MAAM9zzC,MAAM1kB,EAAE,KAAK,OAAO+B,EAAE,CAAC,EAAEvB,EAAE,CAACnC,WAAM,EAAOg8H,kBAAa,EAAOn9F,SAAS,GAAGh/B,EAAEk60C,cAAczr3B,cAAc,CAAC,SAASk7xB,GAAG3pvC,EAAEsC,GAAG,IAAIzC,EAAEyC,EAAEnC,MAAM,GAAG,MAAMN,EAAE,CAA+B,GAA9BA,EAAEyC,EAAE08B,SAAS18B,EAAEA,EAAE65H,aAAgB,MAAMt8H,EAAE,CAAC,GAAG,MAAMyC,EAAE,MAAMkkB,MAAM1kB,EAAE,KAAK,GAAG4nvC,GAAG7pvC,GAAG,CAAC,GAAG,EAAEA,EAAER,OAAO,MAAMmnB,MAAM1kB,EAAE,KAAKjC,EAAEA,EAAE,EAAE,CAACyC,EAAEzC,CAAC,CAAC,MAAMyC,IAAIA,EAAE,IAAIzC,EAAEyC,CAAC,CAACtC,EAAEk60C,cAAc,CAACzr3B,aAAah7b,EAAG5zB,GAAG,CACnY,SAAS800C,GAAG300C,EAAEsC,GAAG,IAAIzC,EAAE4zB,EAAGnxB,EAAEnC,OAAOwB,EAAE8xB,EAAGnxB,EAAE65H,cAAc,MAAMt8H,KAAIA,EAAE,GAAGA,KAAMG,EAAEG,QAAQH,EAAEG,MAAMN,GAAG,MAAMyC,EAAE65H,cAAcn8H,EAAEm8H,eAAet8H,IAAIG,EAAEm8H,aAAat8H,IAAI,MAAM8B,IAAI3B,EAAEm8H,aAAa,GAAGx6H,EAAE,CAAC,SAAS8mvC,GAAGzovC,GAAG,IAAIsC,EAAEtC,EAAEgsF,YAAY1pF,IAAItC,EAAEk60C,cAAczr3B,cAAc,KAAKnsd,GAAG,OAAOA,IAAItC,EAAEG,MAAMmC,EAAE,CAAC,SAAS420C,GAAGl50C,GAAG,OAAOA,GAAG,IAAK,MAAM,MAAM,6BAA6B,IAAK,OAAO,MAAM,qCAAqC,QAAQ,MAAM,+BAA+B,CAC7c,SAAS8x8B,GAAG9x8B,EAAEsC,GAAG,OAAO,MAAMtC,GAAG,iCAAiCA,EAAEk50C,GAAG520C,GAAG,+BAA+BtC,GAAG,kBAAkBsC,EAAE,+BAA+BtC,CAAC,CAChK,IAAI0/W,GAAe1/W,GAAZ640C,IAAY740C,GAAsJ,SAASA,EAAEsC,GAAG,GAAG,+BAA+BtC,EAAE250C,cAAc,cAAc350C,EAAEA,EAAEi5I,UAAU32I,MAAM,CAA2F,KAA1Fo9W,GAAGA,IAAIv7W,SAASmE,cAAc,QAAU2wI,UAAU,QAAQ32I,EAAE4F,UAAU3E,WAAW,SAAajB,EAAEo9W,GAAGv2R,WAAWnpF,EAAEmpF,YAAYnpF,EAAE67B,YAAY77B,EAAEmpF,YAAY,KAAK7mF,EAAE6mF,YAAYnpF,EAAEuT,YAAYjR,EAAE6mF,WAAW,CAAC,EAAvb,oBAAqBoxvC,OAAOA,MAAMC,wBAAwB,SAASl40C,EAAEzC,EAAE8B,EAAExD,GAAGo80C,MAAMC,yBAAwB,WAAW,OAAOx60C,GAAEsC,EAAEzC,EAAM,GAAE,EAAEG,IACtK,SAAS400C,GAAG500C,EAAEsC,GAAG,GAAGA,EAAE,CAAC,IAAIzC,EAAEG,EAAEmpF,WAAW,GAAGtpF,GAAGA,IAAIG,EAAE2thB,WAAW,IAAI9thB,EAAEyoF,SAAwB,YAAdzoF,EAAEyrpC,UAAUhppC,EAAS,CAACtC,EAAEgsF,YAAY1pF,CAAC,CACtH,IAAIw8W,GAAG,CAAC5+G,yBAAwB,EAAGC,aAAY,EAAGC,mBAAkB,EAAGC,kBAAiB,EAAGC,kBAAiB,EAAGC,SAAQ,EAAGC,cAAa,EAAGC,iBAAgB,EAAGC,aAAY,EAAG7pB,SAAQ,EAAG8pB,MAAK,EAAGC,UAAS,EAAGC,cAAa,EAAGC,YAAW,EAAGC,cAAa,EAAGC,WAAU,EAAG27G,UAAS,EAAG17G,SAAQ,EAAGC,YAAW,EAAGC,aAAY,EAAGC,cAAa,EAAGC,YAAW,EAAGC,eAAc,EAAGC,gBAAe,EAAGC,iBAAgB,EAAG5d,YAAW,EAAGkwlC,WAAU,EAAG9qlC,YAAW,EAAGp+G,SAAQ,EAAGqH,OAAM,EAAG4vH,SAAQ,EAAGC,SAAQ,EAAGC,QAAO,EAAGnkO,QAAO,EAClfe,MAAK,EAAGsjO,aAAY,EAAGC,cAAa,EAAGC,aAAY,EAAGC,iBAAgB,EAAGC,kBAAiB,EAAGC,kBAAiB,EAAGC,eAAc,EAAGjkB,aAAY,GAAIw2lC,GAAG,CAAC,SAAS,KAAK,MAAM,KAA6H,SAASjjY,GAAG7x8B,EAAEsC,EAAEzC,GAAG,OAAO,MAAMyC,GAAG,kBAAmBA,GAAG,KAAKA,EAAE,GAAGzC,GAAG,iBAAkByC,GAAG,IAAIA,GAAGw8W,GAAGngX,eAAeqB,IAAI8+W,GAAG9+W,IAAI,GAAGsC,GAAG+uB,OAAO/uB,EAAE,IAAI,CACzb,SAASsnvC,GAAG5pvC,EAAEsC,GAAa,IAAI,IAAIzC,KAAlBG,EAAEA,EAAEqT,MAAmB/Q,EAAE,GAAGA,EAAE3D,eAAekB,GAAG,CAAC,IAAI8B,EAAE,IAAI9B,EAAEL,QAAQ,MAAMrB,EAAE0z8B,GAAGhy8B,EAAEyC,EAAEzC,GAAG8B,GAAG,UAAU9B,IAAIA,EAAE,YAAY8B,EAAE3B,EAAE2gN,YAAY9gN,EAAE1B,GAAG6B,EAAEH,GAAG1B,CAAC,CAAC,CADYG,OAAOgU,KAAKwsW,IAAI56V,SAAQ,SAASlkB,GAAG800C,GAAG5wzC,SAAQ,SAAS5hB,GAAGA,EAAEA,EAAEtC,EAAE6X,OAAO,GAAG+3C,cAAc5vD,EAAEs2B,UAAU,GAAGwoV,GAAGx8W,GAAGw8W,GAAG9+W,EAAE,GAAE,IAChI,IAAI+gvC,GAAGl9uC,EAAE,CAAC420C,UAAS,GAAI,CAACp6lC,MAAK,EAAGh7L,MAAK,EAAGpwC,IAAG,EAAGs+H,KAAI,EAAGmnsC,OAAM,EAAG9l0C,IAAG,EAAGygY,KAAI,EAAG5lV,OAAM,EAAGkrxC,QAAO,EAAGh87B,MAAK,EAAG9vE,MAAK,EAAGrgQ,OAAM,EAAG3nE,QAAO,EAAG+uc,OAAM,EAAGgl4B,KAAI,IAClT,SAASl0jB,GAAG1mxB,EAAEsC,GAAG,GAAGA,EAAE,CAAC,GAAGy+uC,GAAG/gvC,KAAK,MAAMsC,EAAE08B,UAAU,MAAM18B,EAAEg40C,yBAAyB,MAAM9zzC,MAAM1kB,EAAE,IAAI9B,IAAI,GAAG,MAAMsC,EAAEg40C,wBAAwB,CAAC,GAAG,MAAMh40C,EAAE08B,SAAS,MAAMxY,MAAM1kB,EAAE,KAAK,GAAG,iBAAkBQ,EAAEg40C,2BAA2B,WAAWh40C,EAAEg40C,yBAAyB,MAAM9zzC,MAAM1kB,EAAE,IAAK,CAAC,GAAG,MAAMQ,EAAE+Q,OAAO,iBAAkB/Q,EAAE+Q,MAAM,MAAMmT,MAAM1kB,EAAE,IAAK,CAAC,CAClW,SAASiz0C,GAAG/00C,EAAEsC,GAAG,IAAI,IAAItC,EAAER,QAAQ,KAAK,MAAM,iBAAkB8C,EAAEwpe,GAAG,OAAO9re,GAAG,IAAK,iBAAiB,IAAK,gBAAgB,IAAK,YAAY,IAAK,gBAAgB,IAAK,gBAAgB,IAAK,mBAAmB,IAAK,iBAAiB,IAAK,gBAAgB,OAAM,EAAG,QAAQ,OAAM,EAAG,CAAC,IAAIwzuB,GAAG,KAAK,SAASwhmB,GAAGh10C,GAA6F,OAA1FA,EAAEA,EAAE8O,QAAQ9O,EAAEygzC,YAAYv/yC,QAAS250C,0BAA0B760C,EAAEA,EAAE660C,yBAAgC,IAAI760C,EAAEsoF,SAAStoF,EAAE0gC,WAAW1gC,CAAC,CAAC,IAAIy10C,GAAG,KAAKG,GAAG,KAAK/rF,GAAG,KACpc,SAASC,GAAG9pvC,GAAG,GAAGA,EAAE+pvC,GAAG/pvC,GAAG,CAAC,GAAG,mBAAoBy10C,GAAG,MAAMjvzC,MAAM1kB,EAAE,MAAM,IAAIQ,EAAEtC,EAAE860C,UAAUx40C,IAAIA,EAAEu00C,GAAGv00C,GAAGmz0C,GAAGz10C,EAAE860C,UAAU960C,EAAEuL,KAAKjJ,GAAG,CAAC,CAAC,SAAS0nvC,GAAGhqvC,GAAG410C,GAAG/rF,GAAGA,GAAGhpvC,KAAKb,GAAG6pvC,GAAG,CAAC7pvC,GAAG410C,GAAG510C,CAAC,CAAC,SAAS6nvC,KAAK,GAAG+tF,GAAG,CAAC,IAAI510C,EAAE410C,GAAGtz0C,EAAEunvC,GAAoB,GAAjBA,GAAG+rF,GAAG,KAAK9rF,GAAG9pvC,GAAMsC,EAAE,IAAItC,EAAE,EAAEA,EAAEsC,EAAEjD,OAAOW,IAAI8pvC,GAAGxnvC,EAAEtC,GAAG,CAAC,CAAC,SAAS+20C,GAAG/20C,EAAEsC,GAAG,OAAOtC,EAAEsC,EAAE,CAAC,SAAS+00C,KAAK,CAAC,IAAIG,IAAG,EAAG,SAASC,GAAGz30C,EAAEsC,EAAEzC,GAAG,GAAG230C,GAAG,OAAOx30C,EAAEsC,EAAEzC,GAAG230C,IAAG,EAAG,IAAI,OAAOT,GAAG/20C,EAAEsC,EAAEzC,EAAE,CAAC,QAAW230C,IAAG,GAAG,OAAO5B,IAAI,OAAO/rF,MAAGwtF,KAAKxvF,KAAI,CAAC,CAChb,SAAS6vF,GAAG130C,EAAEsC,GAAG,IAAIzC,EAAEG,EAAE860C,UAAU,GAAG,OAAOj70C,EAAE,OAAO,KAAK,IAAI8B,EAAEk10C,GAAGh30C,GAAG,GAAG,OAAO8B,EAAE,OAAO,KAAK9B,EAAE8B,EAAEW,GAAGtC,EAAE,OAAOsC,GAAG,IAAK,UAAU,IAAK,iBAAiB,IAAK,gBAAgB,IAAK,uBAAuB,IAAK,cAAc,IAAK,qBAAqB,IAAK,cAAc,IAAK,qBAAqB,IAAK,YAAY,IAAK,mBAAmB,IAAK,gBAAgBX,GAAGA,EAAE2tW,YAAqB3tW,IAAI,YAAb3B,EAAEA,EAAEuL,OAAuB,UAAUvL,GAAG,WAAWA,GAAG,aAAaA,IAAIA,GAAG2B,EAAE,MAAM3B,EAAE,QAAQA,GAAE,EAAG,GAAGA,EAAE,OAAO,KAAK,GAAGH,GAAG,mBACleA,EAAE,MAAM2mB,MAAM1kB,EAAE,IAAIQ,SAASzC,IAAI,OAAOA,CAAC,CAAC,IAAImovC,IAAG,EAAG,GAAG96tC,EAAG,IAAI,IAAIk7tC,GAAG,CAAC,EAAE9pvC,OAAO4D,eAAekmvC,GAAG,UAAU,CAACjmvC,IAAI,WAAW6lvC,IAAG,CAAE,IAAI9mvC,OAAOyqB,iBAAiB,OAAOy8tC,GAAGA,IAAIlnvC,OAAOmnB,oBAAoB,OAAO+/tC,GAAGA,GAAG,CAAC,MAAMpovC,IAAGgovC,IAAG,CAAE,CAAC,SAASE,GAAGlovC,EAAEsC,EAAEzC,EAAE8B,EAAExD,EAAEuD,EAAEP,EAAES,EAAEc,GAAG,IAAIlB,EAAE/C,MAAMC,UAAUqC,MAAMnC,KAAKQ,UAAU,GAAG,IAAIkD,EAAE/C,MAAMM,EAAE2B,EAAE,CAAC,MAAMY,GAAGpD,KAAKq9G,QAAQj6G,EAAE,CAAC,CAAC,IAAI6nvC,IAAG,EAAG9B,GAAG,KAAKgC,IAAG,EAAGlC,GAAG,KAAKK,GAAG,CAACjsoC,QAAQ,SAASr8G,GAAGiqvC,IAAG,EAAG9B,GAAGnovC,CAAC,GAAG,SAASoqvC,GAAGpqvC,EAAEsC,EAAEzC,EAAE8B,EAAExD,EAAEuD,EAAEP,EAAES,EAAEc,GAAGunvC,IAAG,EAAG9B,GAAG,KAAKD,GAAG3ovC,MAAM+ovC,GAAGlpvC,UAAU,CACjW,SAASmpvC,GAAGvovC,GAAG,IAAIsC,EAAEtC,EAAEH,EAAEG,EAAE,GAAGA,EAAE+60C,UAAU,KAAKz40C,EAAE7B,QAAQ6B,EAAEA,EAAE7B,WAAW,CAACT,EAAEsC,EAAE,GAAO,IAAa,MAAjBA,EAAEtC,GAASo5C,SAAcv5C,EAAEyC,EAAE7B,QAAQT,EAAEsC,EAAE7B,aAAaT,EAAE,CAAC,OAAO,IAAIsC,EAAE8T,IAAIvW,EAAE,IAAI,CAAC,SAAS2ovC,GAAGxovC,GAAG,GAAG,KAAKA,EAAEoW,IAAI,CAAC,IAAI9T,EAAEtC,EAAE600C,cAAsE,GAAxD,OAAOvy0C,GAAkB,QAAdtC,EAAEA,EAAE+60C,aAAqBz40C,EAAEtC,EAAE600C,eAAmB,OAAOvy0C,EAAE,OAAOA,EAAE040C,UAAU,CAAC,OAAO,IAAI,CAAC,SAAS7B,GAAGn50C,GAAG,GAAGuovC,GAAGvovC,KAAKA,EAAE,MAAMwmB,MAAM1kB,EAAE,KAAM,CAE1S,SAASs30C,GAAGp50C,GAAW,OAAO,QAAfA,EADtN,SAAYA,GAAG,IAAIsC,EAAEtC,EAAE+60C,UAAU,IAAIz40C,EAAE,CAAS,GAAG,QAAXA,EAAEimvC,GAAGvovC,IAAe,MAAMwmB,MAAM1kB,EAAE,MAAM,OAAOQ,IAAItC,EAAE,KAAKA,CAAC,CAAC,IAAI,IAAIH,EAAEG,EAAE2B,EAAEW,IAAI,CAAC,IAAInE,EAAE0B,EAAEY,OAAO,GAAG,OAAOtC,EAAE,MAAM,IAAIuD,EAAEvD,EAAE480C,UAAU,GAAG,OAAOr50C,EAAE,CAAY,GAAG,QAAdC,EAAExD,EAAEsC,QAAmB,CAACZ,EAAE8B,EAAE,QAAQ,CAAC,KAAK,CAAC,GAAGxD,EAAE+qF,QAAQxnF,EAAEwnF,MAAM,CAAC,IAAIxnF,EAAEvD,EAAE+qF,MAAMxnF,GAAG,CAAC,GAAGA,IAAI7B,EAAE,OAAOs50C,GAAGh70C,GAAG6B,EAAE,GAAG0B,IAAIC,EAAE,OAAOw30C,GAAGh70C,GAAGmE,EAAEZ,EAAEA,EAAEguF,OAAO,CAAC,MAAMlpE,MAAM1kB,EAAE,KAAM,CAAC,GAAGjC,EAAEY,SAASkB,EAAElB,OAAOZ,EAAE1B,EAAEwD,EAAED,MAAM,CAAC,IAAI,IAAIP,GAAE,EAAGS,EAAEzD,EAAE+qF,MAAMtnF,GAAG,CAAC,GAAGA,IAAI/B,EAAE,CAACsB,GAAE,EAAGtB,EAAE1B,EAAEwD,EAAED,EAAE,KAAK,CAAC,GAAGE,IAAID,EAAE,CAACR,GAAE,EAAGQ,EAAExD,EAAE0B,EAAE6B,EAAE,KAAK,CAACE,EAAEA,EAAE8tF,OAAO,CAAC,IAAIvuF,EAAE,CAAC,IAAIS,EAAEF,EAAEwnF,MAAMtnF,GAAG,CAAC,GAAGA,IAC5f/B,EAAE,CAACsB,GAAE,EAAGtB,EAAE6B,EAAEC,EAAExD,EAAE,KAAK,CAAC,GAAGyD,IAAID,EAAE,CAACR,GAAE,EAAGQ,EAAED,EAAE7B,EAAE1B,EAAE,KAAK,CAACyD,EAAEA,EAAE8tF,OAAO,CAAC,IAAIvuF,EAAE,MAAMqlB,MAAM1kB,EAAE,KAAM,CAAC,CAAC,GAAGjC,EAAEk70C,YAAYp50C,EAAE,MAAM6kB,MAAM1kB,EAAE,KAAM,CAAC,GAAG,IAAIjC,EAAEuW,IAAI,MAAMoQ,MAAM1kB,EAAE,MAAM,OAAOjC,EAAEi70C,UAAU/7yC,UAAUl/B,EAAEG,EAAEsC,CAAC,CAAkBiqvC,CAAGvsvC,IAAmBsqvC,GAAGtqvC,GAAG,IAAI,CAAC,SAASsqvC,GAAGtqvC,GAAG,GAAG,IAAIA,EAAEoW,KAAK,IAAIpW,EAAEoW,IAAI,OAAOpW,EAAE,IAAIA,EAAEA,EAAEkpF,MAAM,OAAOlpF,GAAG,CAAC,IAAIsC,EAAEgovC,GAAGtqvC,GAAG,GAAG,OAAOsC,EAAE,OAAOA,EAAEtC,EAAEA,EAAE0vF,OAAO,CAAC,OAAO,IAAI,CAC1X,IAAIhuE,GAAGqN,EAAGkszC,0BAA0B73zC,GAAG2L,EAAGmszC,wBAAwBz5zC,GAAGsN,EAAGoszC,qBAAqB14zC,GAAGsM,EAAGqszC,sBAAsBr20C,GAAEgqB,EAAGsszC,aAAar6zC,GAAG+N,EAAGuszC,iCAAiCh5zC,GAAGyM,EAAGwszC,2BAA2Bl4zC,GAAG0L,EAAGyszC,8BAA8B94zC,GAAGqM,EAAG0szC,wBAAwBl6zC,GAAGwN,EAAG2szC,qBAAqBp2zC,GAAGyJ,EAAG4szC,sBAAsBn4zC,GAAG,KAAKnB,GAAG,KACnVhB,GAAGxf,KAAKuqN,MAAMvqN,KAAKuqN,MAAiC,SAAYpsN,GAAU,OAAO,KAAdA,KAAK,GAAe,GAAG,IAAIgjB,GAAGhjB,GAAG6tB,GAAG,GAAG,CAAC,EAA/E7K,GAAGnhB,KAAKwnB,IAAIwE,GAAGhsB,KAAKsvN,IAAgEhwM,GAAG,GAAGQ,GAAG,QAC7H,SAASV,GAAGjhB,GAAG,OAAOA,GAAGA,GAAG,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,GAAG,OAAO,GAAG,KAAK,GAAG,OAAO,GAAG,KAAK,GAAG,KAAK,IAAI,KAAK,IAAI,KAAK,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,MAAM,KAAK,MAAM,KAAK,MAAM,KAAK,OAAO,KAAK,OAAO,KAAK,OAAO,KAAK,QAAQ,KAAK,QAAQ,OAAS,QAAFA,EAAU,KAAK,QAAQ,KAAK,QAAQ,KAAK,SAAS,KAAK,SAAS,KAAK,SAAS,OAAS,UAAFA,EAAY,KAAK,UAAU,OAAO,UAAU,KAAK,UAAU,OAAO,UAAU,KAAK,UAAU,OAAO,UAAU,KAAK,WAAW,OAAO,WACzgB,QAAQ,OAAOA,EAAE,CAAC,SAAS6hB,GAAG7hB,EAAEsC,GAAG,IAAIzC,EAAEG,EAAE470C,aAAa,GAAG,IAAI/70C,EAAE,OAAO,EAAE,IAAI8B,EAAE,EAAExD,EAAE6B,EAAE670C,eAAen60C,EAAE1B,EAAE870C,YAAY360C,EAAI,UAAFtB,EAAY,GAAG,IAAIsB,EAAE,CAAC,IAAIS,EAAET,GAAGhD,EAAE,IAAIyD,EAAED,EAAEsf,GAAGrf,GAAS,IAALF,GAAGP,KAAUQ,EAAEsf,GAAGvf,GAAI,MAAa,IAAPP,EAAEtB,GAAG1B,GAAQwD,EAAEsf,GAAG9f,GAAG,IAAIO,IAAIC,EAAEsf,GAAGvf,IAAI,GAAG,IAAIC,EAAE,OAAO,EAAE,GAAG,IAAIW,GAAGA,IAAIX,GAAG,IAAKW,EAAEnE,MAAKA,EAAEwD,GAAGA,KAAED,EAAEY,GAAGA,IAAQ,KAAKnE,GAAG,IAAO,QAAFuD,IAAY,OAAOY,EAA0C,GAAxC,IAAO,EAAFX,KAAOA,GAAK,GAAF9B,GAA4B,KAAtByC,EAAEtC,EAAE+70C,gBAAwB,IAAI/70C,EAAEA,EAAEg80C,cAAc150C,GAAGX,EAAE,EAAEW,GAAcnE,EAAE,IAAb0B,EAAE,GAAGwhB,GAAG/e,IAAUX,GAAG3B,EAAEH,GAAGyC,IAAInE,EAAE,OAAOwD,CAAC,CACvc,SAASuhB,GAAGljB,EAAEsC,GAAG,OAAOtC,GAAG,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,OAAOsC,EAAE,IAAI,KAAK,EAAE,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,IAAI,KAAK,IAAI,KAAK,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,MAAM,KAAK,MAAM,KAAK,MAAM,KAAK,OAAO,KAAK,OAAO,KAAK,OAAO,KAAK,QAAQ,KAAK,QAAQ,OAAOA,EAAE,IAAuJ,QAAQ,OAAO,EAAE,CACrN,SAASwiB,GAAG9kB,GAAgC,OAAO,IAApCA,GAAkB,WAAhBA,EAAE470C,cAAsC570C,EAAI,WAAFA,EAAa,WAAW,CAAC,CAAC,SAASijB,KAAK,IAAIjjB,EAAEmhB,GAAoC,OAA1B,IAAQ,SAAfA,KAAK,MAAqBA,GAAG,IAAWnhB,CAAC,CAAC,SAAS+sB,GAAG/sB,GAAG,IAAI,IAAIsC,EAAE,GAAGzC,EAAE,EAAE,GAAGA,EAAEA,IAAIyC,EAAEzB,KAAKb,GAAG,OAAOsC,CAAC,CAC3a,SAASmnB,GAAGzpB,EAAEsC,EAAEzC,GAAGG,EAAE470C,cAAct50C,EAAE,YAAYA,IAAItC,EAAE670C,eAAe,EAAE770C,EAAE870C,YAAY,IAAG970C,EAAEA,EAAEi80C,YAAW350C,EAAE,GAAG+e,GAAG/e,IAAQzC,CAAC,CACzH,SAASmlB,GAAGhlB,EAAEsC,GAAG,IAAIzC,EAAEG,EAAE+70C,gBAAgBz50C,EAAE,IAAItC,EAAEA,EAAEg80C,cAAcn80C,GAAG,CAAC,IAAI8B,EAAE,GAAG0f,GAAGxhB,GAAG1B,EAAE,GAAGwD,EAAExD,EAAEmE,EAAEtC,EAAE2B,GAAGW,IAAItC,EAAE2B,IAAIW,GAAGzC,IAAI1B,CAAC,CAAC,CAAC,IAAIgF,GAAE,EAAE,SAASmpB,GAAGtsB,GAAS,OAAO,GAAbA,IAAIA,GAAa,EAAEA,EAAE,IAAO,UAAFA,GAAa,GAAG,UAAU,EAAE,CAAC,CAAC,IAAIqlB,GAAG4G,GAAG1F,GAAGkG,GAAGjI,GAAGoI,IAAG,EAAGT,GAAG,GAAGvG,GAAG,KAAKqH,GAAG,KAAKb,GAAG,KAAKxH,GAAG,IAAI+E,IAAIQ,GAAG,IAAIR,IAAI+D,GAAG,GAAGhI,GAAG,6PAA6P9hB,MAAM,KAChiB,SAAS2f,GAAGvjB,EAAEsC,GAAG,OAAOtC,GAAG,IAAK,UAAU,IAAK,WAAW4lB,GAAG,KAAK,MAAM,IAAK,YAAY,IAAK,YAAYqH,GAAG,KAAK,MAAM,IAAK,YAAY,IAAK,WAAWb,GAAG,KAAK,MAAM,IAAK,cAAc,IAAK,aAAaxH,GAAGX,OAAO3hB,EAAE+9vC,WAAW,MAAM,IAAK,oBAAoB,IAAK,qBAAqBl2uC,GAAGlG,OAAO3hB,EAAE+9vC,WAAW,CACnT,SAASt7uC,GAAG/kB,EAAEsC,EAAEzC,EAAE8B,EAAExD,EAAEuD,GAAG,OAAG,OAAO1B,GAAGA,EAAE67wB,cAAcn6wB,GAAS1B,EAAE,CAACk80C,UAAU550C,EAAE650C,aAAat80C,EAAEu80C,iBAAiBz60C,EAAEk6wB,YAAYn6wB,EAAE260C,iBAAiB,CAACl+0C,IAAI,OAAOmE,GAAY,QAARA,EAAEynvC,GAAGznvC,KAAa2pB,GAAG3pB,GAAItC,IAAEA,EAAEo80C,kBAAkBz60C,EAAEW,EAAEtC,EAAEq80C,iBAAiB,OAAOl+0C,IAAI,IAAImE,EAAE9C,QAAQrB,IAAImE,EAAEzB,KAAK1C,GAAU6B,EAAC,CAEpR,SAAS8sB,GAAG9sB,GAAG,IAAIsC,EAAEujB,GAAG7lB,EAAE8O,QAAQ,GAAG,OAAOxM,EAAE,CAAC,IAAIzC,EAAE0ovC,GAAGjmvC,GAAG,GAAG,OAAOzC,EAAE,GAAW,MAARyC,EAAEzC,EAAEuW,MAAY,GAAW,QAAR9T,EAAEkmvC,GAAG3ovC,IAA4D,OAA/CG,EAAEk80C,UAAU550C,OAAEkiB,GAAGxkB,EAAE6sC,UAAS,WAAWtmB,GAAG1mB,EAAE,SAAgB,GAAG,IAAIyC,GAAGzC,EAAEi70C,UAAU/7yC,QAAQ81yC,cAAcyH,aAAmE,YAArDt80C,EAAEk80C,UAAU,IAAIr80C,EAAEuW,IAAIvW,EAAEi70C,UAAUyB,cAAc,KAAY,CAACv80C,EAAEk80C,UAAU,IAAI,CAClT,SAASlwzC,GAAGhsB,GAAG,GAAG,OAAOA,EAAEk80C,UAAU,OAAM,EAAG,IAAI,IAAI550C,EAAEtC,EAAEq80C,iBAAiB,EAAE/50C,EAAEjD,QAAQ,CAAC,IAAIQ,EAAE8sB,GAAG3sB,EAAEm80C,aAAan80C,EAAEo80C,iBAAiB950C,EAAE,GAAGtC,EAAE67wB,aAAa,GAAG,OAAOh8wB,EAAiG,OAAe,QAARyC,EAAEynvC,GAAGlqvC,KAAaosB,GAAG3pB,GAAGtC,EAAEk80C,UAAUr80C,GAAE,EAA3H,IAAI8B,EAAE,IAAtB9B,EAAEG,EAAE67wB,aAAwB58wB,YAAYY,EAAE0L,KAAK1L,GAAG2zuB,GAAG7xuB,EAAE9B,EAAEiP,OAAOoa,cAAcvnB,GAAG6xuB,GAAG,KAA0DlxuB,EAAE66C,OAAO,CAAC,OAAM,CAAE,CAAC,SAASp3B,GAAG/lB,EAAEsC,EAAEzC,GAAGmsB,GAAGhsB,IAAIH,EAAEokB,OAAO3hB,EAAE,CAAC,SAAS0rB,KAAKpB,IAAG,EAAG,OAAOhH,IAAIoG,GAAGpG,MAAMA,GAAG,MAAM,OAAOqH,IAAIjB,GAAGiB,MAAMA,GAAG,MAAM,OAAOb,IAAIJ,GAAGI,MAAMA,GAAG,MAAMxH,GAAGV,QAAQ6B,IAAIoE,GAAGjG,QAAQ6B,GAAG,CACnf,SAASur7B,GAAGtx8B,EAAEsC,GAAGtC,EAAEk80C,YAAY550C,IAAItC,EAAEk80C,UAAU,KAAKtvzC,KAAKA,IAAG,EAAGmC,EAAGkszC,0BAA0BlszC,EAAG0szC,wBAAwBztzC,KAAK,CAC5H,SAAS85tC,GAAG9nvC,GAAG,SAASsC,EAAEA,GAAG,OAAOgv8B,GAAGhv8B,EAAEtC,EAAE,CAAC,GAAG,EAAEmsB,GAAG9sB,OAAO,CAACiy8B,GAAGnl7B,GAAG,GAAGnsB,GAAG,IAAI,IAAIH,EAAE,EAAEA,EAAEssB,GAAG9sB,OAAOQ,IAAI,CAAC,IAAI8B,EAAEwqB,GAAGtsB,GAAG8B,EAAEu60C,YAAYl80C,IAAI2B,EAAEu60C,UAAU,KAAK,CAAC,CAAyF,IAAxF,OAAOt2zC,IAAI0r7B,GAAG1r7B,GAAG5lB,GAAG,OAAOitB,IAAIqk7B,GAAGrk7B,GAAGjtB,GAAG,OAAOosB,IAAIkl7B,GAAGll7B,GAAGpsB,GAAG4kB,GAAGV,QAAQ5hB,GAAG6nB,GAAGjG,QAAQ5hB,GAAOzC,EAAE,EAAEA,EAAE6tB,GAAGruB,OAAOQ,KAAI8B,EAAE+rB,GAAG7tB,IAAKq80C,YAAYl80C,IAAI2B,EAAEu60C,UAAU,MAAM,KAAK,EAAExuzC,GAAGruB,QAAiB,QAARQ,EAAE6tB,GAAG,IAAYwuzC,WAAYpvzC,GAAGjtB,GAAG,OAAOA,EAAEq80C,WAAWxuzC,GAAGyvB,OAAO,CAAC,IAAI4qsC,GAAGl3tC,EAAG2rzC,wBAAwBr0zB,IAAG,EAC5a,SAASuguB,GAAG1ovC,EAAEsC,EAAEzC,EAAE8B,GAAG,IAAIxD,EAAEgF,GAAEzB,EAAEqmvC,GAAGjhoC,WAAWihoC,GAAGjhoC,WAAW,KAAK,IAAI3jH,GAAE,EAAEsnvC,GAAGzqvC,EAAEsC,EAAEzC,EAAE8B,EAAE,CAAC,QAAQwB,GAAEhF,EAAE4pvC,GAAGjhoC,WAAWplH,CAAC,CAAC,CAAC,SAASgpvC,GAAG1qvC,EAAEsC,EAAEzC,EAAE8B,GAAG,IAAIxD,EAAEgF,GAAEzB,EAAEqmvC,GAAGjhoC,WAAWihoC,GAAGjhoC,WAAW,KAAK,IAAI3jH,GAAE,EAAEsnvC,GAAGzqvC,EAAEsC,EAAEzC,EAAE8B,EAAE,CAAC,QAAQwB,GAAEhF,EAAE4pvC,GAAGjhoC,WAAWplH,CAAC,CAAC,CACjO,SAAS+ovC,GAAGzqvC,EAAEsC,EAAEzC,EAAE8B,GAAG,GAAGwmhB,GAAG,CAAC,IAAIhqhB,EAAEwuB,GAAG3sB,EAAEsC,EAAEzC,EAAE8B,GAAG,GAAG,OAAOxD,EAAEypvC,GAAG5nvC,EAAEsC,EAAEX,EAAE4oB,GAAG1qB,GAAG0jB,GAAGvjB,EAAE2B,QAAQ,GANtF,SAAY3B,EAAEsC,EAAEzC,EAAE8B,EAAExD,GAAG,OAAOmE,GAAG,IAAK,UAAU,OAAOsjB,GAAGb,GAAGa,GAAG5lB,EAAEsC,EAAEzC,EAAE8B,EAAExD,IAAG,EAAG,IAAK,YAAY,OAAO8uB,GAAGlI,GAAGkI,GAAGjtB,EAAEsC,EAAEzC,EAAE8B,EAAExD,IAAG,EAAG,IAAK,YAAY,OAAOiuB,GAAGrH,GAAGqH,GAAGpsB,EAAEsC,EAAEzC,EAAE8B,EAAExD,IAAG,EAAG,IAAK,cAAc,IAAIuD,EAAEvD,EAAEkiwC,UAAkD,OAAxCz7uC,GAAG3Z,IAAIvJ,EAAEqjB,GAAGH,GAAGziB,IAAIT,IAAI,KAAK1B,EAAEsC,EAAEzC,EAAE8B,EAAExD,KAAU,EAAG,IAAK,oBAAoB,OAAOuD,EAAEvD,EAAEkiwC,UAAUl2uC,GAAGlf,IAAIvJ,EAAEqjB,GAAGoF,GAAGhoB,IAAIT,IAAI,KAAK1B,EAAEsC,EAAEzC,EAAE8B,EAAExD,KAAI,EAAG,OAAM,CAAE,CAM1QkuB,CAAGluB,EAAE6B,EAAEsC,EAAEzC,EAAE8B,GAAGA,EAAE6/G,uBAAuB,GAAGj+F,GAAGvjB,EAAE2B,GAAK,EAAFW,IAAM,EAAEojB,GAAGlmB,QAAQQ,GAAG,CAAC,KAAK,OAAO7B,GAAG,CAAC,IAAIuD,EAAEqovC,GAAG5rvC,GAA0D,GAAvD,OAAOuD,GAAG2jB,GAAG3jB,GAAiB,QAAdA,EAAEirB,GAAG3sB,EAAEsC,EAAEzC,EAAE8B,KAAaimvC,GAAG5nvC,EAAEsC,EAAEX,EAAE4oB,GAAG1qB,GAAM6B,IAAIvD,EAAE,MAAMA,EAAEuD,CAAC,CAAC,OAAOvD,GAAGwD,EAAE6/G,iBAAiB,MAAMomoC,GAAG5nvC,EAAEsC,EAAEX,EAAE,KAAK9B,EAAE,CAAC,CAAC,IAAI0qB,GAAG,KACpU,SAASoC,GAAG3sB,EAAEsC,EAAEzC,EAAE8B,GAA2B,GAAxB4oB,GAAG,KAAwB,QAAXvqB,EAAE6lB,GAAV7lB,EAAEg10C,GAAGrz0C,KAAuB,GAAW,QAARW,EAAEimvC,GAAGvovC,IAAYA,EAAE,UAAU,GAAW,MAARH,EAAEyC,EAAE8T,KAAW,CAAS,GAAG,QAAXpW,EAAEwovC,GAAGlmvC,IAAe,OAAOtC,EAAEA,EAAE,IAAI,MAAM,GAAG,IAAIH,EAAE,CAAC,GAAGyC,EAAEw40C,UAAU/7yC,QAAQ81yC,cAAcyH,aAAa,OAAO,IAAIh60C,EAAE8T,IAAI9T,EAAEw40C,UAAUyB,cAAc,KAAKv80C,EAAE,IAAI,MAAMsC,IAAItC,IAAIA,EAAE,MAAW,OAALuqB,GAAGvqB,EAAS,IAAI,CAC7S,SAASwqvC,GAAGxqvC,GAAG,OAAOA,GAAG,IAAK,SAAS,IAAK,QAAQ,IAAK,QAAQ,IAAK,cAAc,IAAK,OAAO,IAAK,MAAM,IAAK,WAAW,IAAK,WAAW,IAAK,UAAU,IAAK,YAAY,IAAK,OAAO,IAAK,UAAU,IAAK,WAAW,IAAK,QAAQ,IAAK,UAAU,IAAK,UAAU,IAAK,WAAW,IAAK,QAAQ,IAAK,YAAY,IAAK,UAAU,IAAK,QAAQ,IAAK,QAAQ,IAAK,OAAO,IAAK,gBAAgB,IAAK,cAAc,IAAK,YAAY,IAAK,aAAa,IAAK,QAAQ,IAAK,SAAS,IAAK,SAAS,IAAK,SAAS,IAAK,cAAc,IAAK,WAAW,IAAK,aAAa,IAAK,eAAe,IAAK,SAAS,IAAK,kBAAkB,IAAK,YAAY,IAAK,mBAAmB,IAAK,iBAAiB,IAAK,oBAAoB,IAAK,aAAa,IAAK,YAAY,IAAK,cAAc,IAAK,OAAO,IAAK,mBAAmB,IAAK,QAAQ,IAAK,aAAa,IAAK,WAAW,IAAK,SAAS,IAAK,cAAc,OAAO,EAAE,IAAK,OAAO,IAAK,YAAY,IAAK,WAAW,IAAK,YAAY,IAAK,WAAW,IAAK,YAAY,IAAK,WAAW,IAAK,YAAY,IAAK,cAAc,IAAK,aAAa,IAAK,cAAc,IAAK,SAAS,IAAK,SAAS,IAAK,YAAY,IAAK,QAAQ,IAAK,aAAa,IAAK,aAAa,IAAK,eAAe,IAAK,eAAe,OAAO,EACpqC,IAAK,UAAU,OAAOghB,MAAM,KAAKsB,GAAG,OAAO,EAAE,KAAKe,GAAG,OAAO,EAAE,KAAKX,GAAG,KAAKnB,GAAG,OAAO,GAAG,KAAK+D,GAAG,OAAO,UAAU,QAAQ,OAAO,GAAG,QAAQ,OAAO,GAAG,CAAC,IAAIg0zC,GAAG,KAAKlgiB,GAAG,KAAKphc,GAAG,KAAK,SAASyk+B,KAAK,GAAGzk+B,GAAG,OAAOA,GAAG,IAAIh4W,EAAkB2B,EAAhBW,EAAE82yB,GAAGv5yB,EAAEyC,EAAEjD,OAASlB,EAAE,UAAUm70C,GAAGA,GAAGn50C,MAAMm50C,GAAGttvC,YAAYtqF,EAAEvD,EAAEkB,OAAO,IAAIW,EAAE,EAAEA,EAAEH,GAAGyC,EAAEtC,KAAK7B,EAAE6B,GAAGA,KAAK,IAAImB,EAAEtB,EAAEG,EAAE,IAAI2B,EAAE,EAAEA,GAAGR,GAAGmB,EAAEzC,EAAE8B,KAAKxD,EAAEuD,EAAEC,GAAGA,KAAK,OAAOq2W,GAAG75W,EAAE4C,MAAMf,EAAE,EAAE2B,EAAE,EAAEA,OAAE,EAAO,CACxY,SAAS+60C,GAAG180C,GAAG,IAAIsC,EAAEtC,EAAEozhB,QAA+E,MAAvE,aAAapzhB,EAAgB,KAAbA,EAAEA,EAAEqqP,WAAgB,KAAK/nP,IAAItC,EAAE,IAAKA,EAAEsC,EAAE,KAAKtC,IAAIA,EAAE,IAAW,IAAIA,GAAG,KAAKA,EAAEA,EAAE,CAAC,CAAC,SAAS280C,KAAK,OAAM,CAAE,CAAC,SAASC,KAAK,OAAM,CAAE,CAC5K,SAASC,GAAG780C,GAAG,SAASsC,EAAEA,EAAEX,EAAExD,EAAEuD,EAAEP,GAA6G,IAAI,IAAItB,KAAlHb,KAAK890C,WAAWx60C,EAAEtD,KAAK+90C,YAAY5+0C,EAAEa,KAAKuM,KAAK5J,EAAE3C,KAAK68wB,YAAYn6wB,EAAE1C,KAAK8P,OAAO3N,EAAEnC,KAAK++C,cAAc,KAAkB/9C,EAAEA,EAAErB,eAAekB,KAAKyC,EAAEtC,EAAEH,GAAGb,KAAKa,GAAGyC,EAAEA,EAAEZ,GAAGA,EAAE7B,IAAgI,OAA5Hb,KAAKg+0C,oBAAoB,MAAMt70C,EAAE4mB,iBAAiB5mB,EAAE4mB,kBAAiB,IAAK5mB,EAAEgyZ,aAAaip7B,GAAGC,GAAG590C,KAAKi+0C,qBAAqBL,GAAU590C,IAAI,CAC9E,OAD+E6E,EAAEvB,EAAE5D,UAAU,CAACkmH,eAAe,WAAW5lH,KAAKspB,kBAAiB,EAAG,IAAItoB,EAAEhB,KAAK68wB,YAAY77wB,IAAIA,EAAE4kH,eAAe5kH,EAAE4kH,iBAAiB,kBAAmB5kH,EAAE0zZ,cAC7e1zZ,EAAE0zZ,aAAY,GAAI10Z,KAAKg+0C,mBAAmBL,GAAG,EAAEn7tC,gBAAgB,WAAW,IAAIxhH,EAAEhB,KAAK68wB,YAAY77wB,IAAIA,EAAEwhH,gBAAgBxhH,EAAEwhH,kBAAkB,kBAAmBxhH,EAAE2pZ,eAAe3pZ,EAAE2pZ,cAAa,GAAI3qZ,KAAKi+0C,qBAAqBN,GAAG,EAAEO,QAAQ,WAAW,EAAEC,aAAaR,KAAYr60C,CAAC,CACjR,IAAoL860C,GAAGC,GAAGC,GAAtLpl7B,GAAG,CAACql7B,WAAW,EAAEx0zC,QAAQ,EAAEC,WAAW,EAAEw6B,UAAU,SAASxjD,GAAG,OAAOA,EAAEwjD,WAAWh5B,KAAKC,KAAK,EAAEnC,iBAAiB,EAAEsmB,UAAU,GAAG4uyC,GAAGX,GAAG3k7B,IAAIul7B,GAAG550C,EAAE,CAAC,EAAEq0Z,GAAG,CAAC3xW,KAAK,EAAEwkhB,OAAO,IAAI2ywB,GAAGb,GAAGY,IAAaE,GAAG950C,EAAE,CAAC,EAAE450C,GAAG,CAAC7jzC,QAAQ,EAAEE,QAAQ,EAAEg5D,QAAQ,EAAEC,QAAQ,EAAE8ue,MAAM,EAAED,MAAM,EAAE//c,QAAQ,EAAEC,SAAS,EAAEF,OAAO,EAAED,QAAQ,EAAEi8tC,iBAAiBC,GAAGnn+B,OAAO,EAAE8zL,QAAQ,EAAEsH,cAAc,SAAS9xiB,GAAG,YAAO,IAASA,EAAE8xiB,cAAc9xiB,EAAE890C,cAAc990C,EAAEygzC,WAAWzgzC,EAAE6s9B,UAAU7s9B,EAAE890C,YAAY990C,EAAE8xiB,aAAa,EAAE3K,UAAU,SAASnniB,GAAG,MAAG,cAC3eA,EAASA,EAAEmniB,WAAUnniB,IAAIs90C,KAAKA,IAAI,cAAct90C,EAAEuL,MAAM6x0C,GAAGp90C,EAAE45B,QAAQ0jzC,GAAG1jzC,QAAQyjzC,GAAGr90C,EAAE85B,QAAQwjzC,GAAGxjzC,SAASujzC,GAAGD,GAAG,EAAEE,GAAGt90C,GAAUo90C,GAAE,EAAE/1yB,UAAU,SAASrniB,GAAG,MAAM,cAAcA,EAAEA,EAAEqniB,UAAUg2yB,EAAE,IAAIU,GAAGlB,GAAGc,IAAiCK,GAAGnB,GAA7Bh50C,EAAE,CAAC,EAAE850C,GAAG,CAACzruB,aAAa,KAA4C+ruB,GAAGpB,GAA9Bh50C,EAAE,CAAC,EAAE450C,GAAG,CAAC3ryB,cAAc,KAA0EosyB,GAAGrB,GAA5Dh50C,EAAE,CAAC,EAAEq0Z,GAAG,CAACogrB,cAAc,EAAE94H,YAAY,EAAE2+X,cAAc,KAAc5xlB,GAAG1ovB,EAAE,CAAC,EAAEq0Z,GAAG,CAAC6pJ,cAAc,SAAS/hjB,GAAG,MAAM,kBAAkBA,EAAEA,EAAE+hjB,cAAc7gjB,OAAO6gjB,aAAa,IAAIq8xB,GAAGvB,GAAGtwlB,IAAyB8xlB,GAAGxB,GAArBh50C,EAAE,CAAC,EAAEq0Z,GAAG,CAAC1pZ,KAAK,KAAc8v0C,GAAG,CAACC,IAAI,SACxfC,SAAS,IAAIx9wB,KAAK,YAAYG,GAAG,UAAUF,MAAM,aAAaG,KAAK,YAAYq9wB,IAAI,SAASC,IAAI,KAAKC,KAAK,cAAcC,KAAK,cAAcC,OAAO,aAAaC,gBAAgB,gBAAgBC,GAAG,CAAC,EAAE,YAAY,EAAE,MAAM,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,GAAG,UAAU,GAAG,MAAM,GAAG,QAAQ,GAAG,WAAW,GAAG,SAAS,GAAG,IAAI,GAAG,SAAS,GAAG,WAAW,GAAG,MAAM,GAAG,OAAO,GAAG,YAAY,GAAG,UAAU,GAAG,aAAa,GAAG,YAAY,GAAG,SAAS,GAAG,SAAS,IAAI,KAAK,IAAI,KAAK,IAAI,KAAK,IAAI,KAAK,IAAI,KAAK,IAAI,KAAK,IAAI,KACtf,IAAI,KAAK,IAAI,KAAK,IAAI,MAAM,IAAI,MAAM,IAAI,MAAM,IAAI,UAAU,IAAI,aAAa,IAAI,QAAQC,GAAG,CAACC,IAAI,SAASC,QAAQ,UAAUC,KAAK,UAAUC,MAAM,YAAY,SAASC,GAAGr/0C,GAAG,IAAIsC,EAAEtD,KAAK68wB,YAAY,OAAOv5wB,EAAEs70C,iBAAiBt70C,EAAEs70C,iBAAiB590C,MAAIA,EAAEg/0C,GAAGh/0C,OAAMsC,EAAEtC,EAAK,CAAC,SAAS690C,KAAK,OAAOwB,EAAE,CAChS,IAAIC,GAAGz70C,EAAE,CAAC,EAAE450C,GAAG,CAAC55zC,IAAI,SAAS7jB,GAAG,GAAGA,EAAE6jB,IAAI,CAAC,IAAIvhB,EAAEg80C,GAAGt+0C,EAAE6jB,MAAM7jB,EAAE6jB,IAAI,GAAG,iBAAiBvhB,EAAE,OAAOA,CAAC,CAAC,MAAM,aAAatC,EAAEuL,KAAc,MAARvL,EAAE080C,GAAG180C,IAAU,QAAQlB,OAAO4nB,aAAa1mB,GAAI,YAAYA,EAAEuL,MAAM,UAAUvL,EAAEuL,KAAKwz0C,GAAG/+0C,EAAEozhB,UAAU,eAAe,EAAE,EAAEl5f,KAAK,EAAEnE,SAAS,EAAE8rF,QAAQ,EAAEC,SAAS,EAAEF,OAAO,EAAED,QAAQ,EAAE4mD,OAAO,EAAEsjS,OAAO,EAAE+x4B,iBAAiBC,GAAGxzlC,SAAS,SAASrqP,GAAG,MAAM,aAAaA,EAAEuL,KAAKmx0C,GAAG180C,GAAG,CAAC,EAAEozhB,QAAQ,SAASpzhB,GAAG,MAAM,YAAYA,EAAEuL,MAAM,UAAUvL,EAAEuL,KAAKvL,EAAEozhB,QAAQ,CAAC,EAAEssW,MAAM,SAAS1/3B,GAAG,MAAM,aAC7eA,EAAEuL,KAAKmx0C,GAAG180C,GAAG,YAAYA,EAAEuL,MAAM,UAAUvL,EAAEuL,KAAKvL,EAAEozhB,QAAQ,CAAC,IAAImszB,GAAG1C,GAAGyC,IAAiIE,GAAG3C,GAA7Hh50C,EAAE,CAAC,EAAE850C,GAAG,CAACt9E,UAAU,EAAEtiuC,MAAM,EAAEC,OAAO,EAAEyhzC,SAAS,EAAEC,mBAAmB,EAAEC,MAAM,EAAEC,MAAM,EAAEC,MAAM,EAAE7zX,YAAY,EAAEl73B,UAAU,KAAmIgvvC,GAAGjD,GAArHh50C,EAAE,CAAC,EAAE450C,GAAG,CAACp2xB,QAAQ,EAAEmoZ,cAAc,EAAE33X,eAAe,EAAEj2d,OAAO,EAAED,QAAQ,EAAEE,QAAQ,EAAEC,SAAS,EAAE87tC,iBAAiBC,MAA0EkC,GAAGlD,GAA3Dh50C,EAAE,CAAC,EAAEq0Z,GAAG,CAACl9M,aAAa,EAAEwkwB,YAAY,EAAE2+X,cAAc,KAAc6B,GAAGn80C,EAAE,CAAC,EAAE850C,GAAG,CAACv4tC,OAAO,SAASplH,GAAG,MAAM,WAAWA,EAAEA,EAAEolH,OAAO,gBAAgBplH,GAAGA,EAAEig1C,YAAY,CAAC,EACnft3tC,OAAO,SAAS3oH,GAAG,MAAM,WAAWA,EAAEA,EAAE2oH,OAAO,gBAAgB3oH,GAAGA,EAAEkg1C,YAAY,eAAelg1C,GAAGA,EAAEyv8B,WAAW,CAAC,EAAE0wY,OAAO,EAAElhC,UAAU,IAAImhC,GAAGvD,GAAGmD,IAAIK,GAAG,CAAC,EAAE,GAAG,GAAG,IAAIp60C,GAAGinB,GAAI,qBAAqBhsB,OAAO8F,GAAG,KAAKkmB,GAAI,iBAAiB/oB,WAAW6C,GAAG7C,SAAS0yD,cAAc,IAAI7wD,GAAGknB,GAAI,cAAchsB,SAAS8F,GAAGV,GAAG4mB,KAAMjnB,IAAIe,IAAI,EAAEA,IAAI,IAAIA,IAAIzB,GAAGzG,OAAO4nB,aAAa,IAAIrgB,IAAG,EAC1W,SAASY,GAAGjH,EAAEsC,GAAG,OAAOtC,GAAG,IAAK,QAAQ,OAAO,IAAIqg1C,GAAG7g1C,QAAQ8C,EAAE8whB,SAAS,IAAK,UAAU,OAAO,MAAM9whB,EAAE8whB,QAAQ,IAAK,WAAW,IAAK,YAAY,IAAK,WAAW,OAAM,EAAG,QAAQ,OAAM,EAAG,CAAC,SAAS7shB,GAAGvG,GAAc,MAAM,iBAAjBA,EAAEA,EAAE+qkB,SAAkC,SAAS/qkB,EAAEA,EAAEwO,KAAK,IAAI,CAAC,IAAIzI,IAAG,EAE1QK,GAAG,CAACmmH,OAAM,EAAGl4E,MAAK,EAAGisyC,UAAS,EAAG,kBAAiB,EAAG/lwC,OAAM,EAAGmuc,OAAM,EAAG3/X,QAAO,EAAG60R,UAAS,EAAG78S,OAAM,EAAGx2E,QAAO,EAAGg2xC,KAAI,EAAGnxzC,MAAK,EAAGy1B,MAAK,EAAG31B,KAAI,EAAG+xwB,MAAK,GAAI,SAASl6xB,GAAG/G,GAAG,IAAIsC,EAAEtC,GAAGA,EAAEgrF,UAAUhrF,EAAEgrF,SAASz8E,cAAc,MAAM,UAAUjM,IAAI8D,GAAGpG,EAAEuL,MAAM,aAAajJ,CAAO,CAAC,SAASqD,GAAG3F,EAAEsC,EAAEzC,EAAE8B,GAAGqovC,GAAGrovC,GAAsB,GAAnBW,EAAEwD,GAAGxD,EAAE,aAAgBjD,SAASQ,EAAE,IAAI290C,GAAG,WAAW,SAAS,KAAK390C,EAAE8B,GAAG3B,EAAEa,KAAK,CAAC48B,MAAM59B,EAAEooB,UAAU3lB,IAAI,CAAC,IAAIkE,GAAG,KAAKoD,GAAG,KAAK,SAAS/D,GAAG7F,GAAGkG,GAAGlG,EAAE,EAAE,CAAC,SAAS0F,GAAG1F,GAAe,GAAGspvC,EAATnjvC,GAAGnG,IAAY,OAAOA,CAAC,CACpe,SAAS8G,GAAG9G,EAAEsC,GAAG,GAAG,WAAWtC,EAAE,OAAOsC,CAAC,CAAC,IAAI6E,IAAG,EAAG,GAAG+lB,EAAG,CAAC,IAAIxlB,GAAG,GAAGwlB,EAAG,CAAC,IAAIzmB,GAAG,YAAYtC,SAAS,IAAIsC,GAAG,CAAC,IAAI2C,GAAGjF,SAASmE,cAAc,OAAOc,GAAGuyB,aAAa,UAAU,WAAWl1B,GAAG,mBAAoB2C,GAAGo30C,OAAO,CAAC940C,GAAGjB,EAAE,MAAMiB,IAAG,EAAGP,GAAGO,MAAMvD,SAAS0yD,cAAc,EAAE1yD,SAAS0yD,aAAa,CAAC,SAASruD,KAAKhC,KAAKA,GAAGi60C,YAAY,mBAAmBn30C,IAAIM,GAAGpD,GAAG,KAAK,CAAC,SAAS8C,GAAGtJ,GAAG,GAAG,UAAUA,EAAEg7M,cAAct1M,GAAGkE,IAAI,CAAC,IAAItH,EAAE,GAAGqD,GAAGrD,EAAEsH,GAAG5J,EAAEg10C,GAAGh10C,IAAIy30C,GAAG5x0C,GAAGvD,EAAE,CAAC,CAC/b,SAASwF,GAAG9H,EAAEsC,EAAEzC,GAAG,YAAYG,GAAGwI,KAAUoB,GAAG/J,GAAR2G,GAAGlE,GAAUqpuC,YAAY,mBAAmBriuC,KAAK,aAAatJ,GAAGwI,IAAI,CAAC,SAASO,GAAG/I,GAAG,GAAG,oBAAoBA,GAAG,UAAUA,GAAG,YAAYA,EAAE,OAAO0F,GAAGkE,GAAG,CAAC,SAASvB,GAAGrI,EAAEsC,GAAG,GAAG,UAAUtC,EAAE,OAAO0F,GAAGpD,EAAE,CAAC,SAASqG,GAAG3I,EAAEsC,GAAG,GAAG,UAAUtC,GAAG,WAAWA,EAAE,OAAO0F,GAAGpD,EAAE,CAAiE,IAAI0G,GAAG,mBAAoB1K,OAAOwte,GAAGxte,OAAOwte,GAA5G,SAAY9re,EAAEsC,GAAG,OAAOtC,IAAIsC,IAAI,IAAItC,GAAG,EAAEA,GAAI,EAAEsC,IAAItC,GAAIA,GAAGsC,GAAIA,CAAC,EACtW,SAASkF,GAAGxH,EAAEsC,GAAG,GAAG0G,GAAGhJ,EAAEsC,GAAG,OAAM,EAAG,GAAG,iBAAkBtC,GAAG,OAAOA,GAAG,iBAAkBsC,GAAG,OAAOA,EAAE,OAAM,EAAG,IAAIzC,EAAEvB,OAAOgU,KAAKtS,GAAG2B,EAAErD,OAAOgU,KAAKhQ,GAAG,GAAGzC,EAAER,SAASsC,EAAEtC,OAAO,OAAM,EAAG,IAAIsC,EAAE,EAAEA,EAAE9B,EAAER,OAAOsC,IAAI,CAAC,IAAIxD,EAAE0B,EAAE8B,GAAG,IAAI40B,EAAG33B,KAAK0D,EAAEnE,KAAK6K,GAAGhJ,EAAE7B,GAAGmE,EAAEnE,IAAI,OAAM,CAAE,CAAC,OAAM,CAAE,CAAC,SAAS+K,GAAGlJ,GAAG,KAAKA,GAAGA,EAAEmpF,YAAYnpF,EAAEA,EAAEmpF,WAAW,OAAOnpF,CAAC,CACtU,SAAS4I,GAAG5I,EAAEsC,GAAG,IAAwBX,EAApB9B,EAAEqJ,GAAGlJ,GAAO,IAAJA,EAAE,EAAYH,GAAG,CAAC,GAAG,IAAIA,EAAEyoF,SAAS,CAA0B,GAAzB3mF,EAAE3B,EAAEH,EAAEmsF,YAAY3sF,OAAUW,GAAGsC,GAAGX,GAAGW,EAAE,MAAM,CAAC+lF,KAAKxoF,EAAEshD,OAAO7+C,EAAEtC,GAAGA,EAAE2B,CAAC,CAAC3B,EAAE,CAAC,KAAKH,GAAG,CAAC,GAAGA,EAAEupF,YAAY,CAACvpF,EAAEA,EAAEupF,YAAY,MAAMppF,CAAC,CAACH,EAAEA,EAAE6gC,UAAU,CAAC7gC,OAAE,CAAM,CAACA,EAAEqJ,GAAGrJ,EAAE,CAAC,CAAC,SAASmI,GAAGhI,EAAEsC,GAAG,SAAOtC,IAAGsC,KAAEtC,IAAIsC,KAAKtC,GAAG,IAAIA,EAAEsoF,YAAYhmF,GAAG,IAAIA,EAAEgmF,SAAStgF,GAAGhI,EAAEsC,EAAEo+B,YAAY,aAAa1gC,EAAEA,EAAE47B,SAASt5B,KAAGtC,EAAE0g1C,4BAAwD,GAA7B1g1C,EAAE0g1C,wBAAwBp+0C,KAAY,CAC9Z,SAAS+G,KAAK,IAAI,IAAIrJ,EAAEkB,OAAOoB,EAAEw0B,IAAKx0B,aAAatC,EAAEqwc,mBAAmB,CAAC,IAAI,IAAIxwc,EAAE,iBAAkByC,EAAEmR,cAAcsiB,SAASkE,IAAI,CAAC,MAAMt4B,GAAG9B,GAAE,CAAE,CAAC,IAAGA,EAAyB,MAAMyC,EAAEw0B,GAA/B92B,EAAEsC,EAAEmR,eAAgCtP,SAAS,CAAC,OAAO7B,CAAC,CAAC,SAASuG,GAAG7I,GAAG,IAAIsC,EAAEtC,GAAGA,EAAEgrF,UAAUhrF,EAAEgrF,SAASz8E,cAAc,OAAOjM,IAAI,UAAUA,IAAI,SAAStC,EAAEuL,MAAM,WAAWvL,EAAEuL,MAAM,QAAQvL,EAAEuL,MAAM,QAAQvL,EAAEuL,MAAM,aAAavL,EAAEuL,OAAO,aAAajJ,GAAG,SAAStC,EAAE2g1C,gBAAgB,CACxa,SAASl50C,GAAGzH,GAAG,IAAIsC,EAAE+G,KAAKxJ,EAAEG,EAAE4g1C,YAAYj/0C,EAAE3B,EAAE6g1C,eAAe,GAAGv+0C,IAAIzC,GAAGA,GAAGA,EAAEstF,eAAenlF,GAAGnI,EAAEstF,cAAckV,gBAAgBxiG,GAAG,CAAC,GAAG,OAAO8B,GAAGkH,GAAGhJ,GAAG,GAAGyC,EAAEX,EAAE6jC,WAAc,KAARxlC,EAAE2B,EAAE8jC,OAAiBzlC,EAAEsC,GAAG,mBAAmBzC,EAAEA,EAAEih1C,eAAex+0C,EAAEzC,EAAEkh1C,aAAal/0C,KAAKgL,IAAI7M,EAAEH,EAAEM,MAAMd,aAAa,IAAGW,GAAGsC,EAAEzC,EAAEstF,eAAehpF,WAAW7B,EAAEmyZ,aAAavzZ,QAASwvF,aAAa,CAAC1wF,EAAEA,EAAE0wF,eAAe,IAAIvyF,EAAE0B,EAAEmsF,YAAY3sF,OAAOqC,EAAEG,KAAKgL,IAAIlL,EAAE6jC,MAAMrnC,GAAGwD,OAAE,IAASA,EAAE8jC,IAAI/jC,EAAEG,KAAKgL,IAAIlL,EAAE8jC,IAAItnC,IAAI6B,EAAEqoZ,QAAQ3mZ,EAAEC,IAAIxD,EAAEwD,EAAEA,EAAED,EAAEA,EAAEvD,GAAGA,EAAEyK,GAAG/I,EAAE6B,GAAG,IAAIP,EAAEyH,GAAG/I,EACvf8B,GAAGxD,GAAGgD,IAAI,IAAInB,EAAEqpmB,YAAYrpmB,EAAEgh1C,aAAa7i1C,EAAEkqF,MAAMroF,EAAEih1C,eAAe9i1C,EAAEgjD,QAAQnhD,EAAEkh1C,YAAY//0C,EAAEknF,MAAMroF,EAAEmh1C,cAAchg1C,EAAEggD,WAAU7+C,EAAEA,EAAEyrxC,eAAgBqzD,SAASjj1C,EAAEkqF,KAAKlqF,EAAEgjD,QAAQnhD,EAAEqh1C,kBAAkB3/0C,EAAEC,GAAG3B,EAAEsh1C,SAASh/0C,GAAGtC,EAAEqoZ,OAAOlnZ,EAAEknF,KAAKlnF,EAAEggD,UAAU7+C,EAAEi/0C,OAAOpg1C,EAAEknF,KAAKlnF,EAAEggD,QAAQnhD,EAAEsh1C,SAASh/0C,IAAI,CAAM,IAALA,EAAE,GAAOtC,EAAEH,EAAEG,EAAEA,EAAE0gC,YAAY,IAAI1gC,EAAEsoF,UAAUhmF,EAAEzB,KAAK,CAACkqF,QAAQ/qF,EAAE69B,KAAK79B,EAAE4qhB,WAAW9sf,IAAI99B,EAAEkiG,YAAmD,IAAvC,mBAAoBriG,EAAEiwW,OAAOjwW,EAAEiwW,QAAYjwW,EAAE,EAAEA,EAAEyC,EAAEjD,OAAOQ,KAAIG,EAAEsC,EAAEzC,IAAKkrF,QAAQ6/b,WAAW5qhB,EAAE69B,KAAK79B,EAAE+qF,QAAQmX,UAAUliG,EAAE89B,GAAG,CAAC,CACzf,IAAIr1B,GAAGykB,GAAI,iBAAiB/oB,UAAU,IAAIA,SAAS0yD,aAAattD,GAAG,KAAKpB,GAAG,KAAKf,GAAG,KAAKQ,IAAG,EAC3F,SAASkB,GAAG9I,EAAEsC,EAAEzC,GAAG,IAAI8B,EAAE9B,EAAEqB,SAASrB,EAAEA,EAAEsE,SAAS,IAAItE,EAAEyoF,SAASzoF,EAAEA,EAAEstF,cAAcvlF,IAAI,MAAM2B,IAAIA,KAAKutB,EAAGn1B,KAAsCA,EAA5B,mBAALA,EAAE4H,KAAyBV,GAAGlH,GAAK,CAAC6jC,MAAM7jC,EAAEm/0C,eAAer7yC,IAAI9jC,EAAEo/0C,cAAyF,CAACC,YAA3Er/0C,GAAGA,EAAEwrF,eAAexrF,EAAEwrF,cAAcsnU,aAAavzZ,QAAQwvF,gBAA+BswvC,WAAWC,aAAat/0C,EAAEs/0C,aAAaC,UAAUv/0C,EAAEu/0C,UAAUC,YAAYx/0C,EAAEw/0C,aAAc/50C,IAAII,GAAGJ,GAAGzF,KAAKyF,GAAGzF,EAAsB,GAApBA,EAAEmE,GAAGqC,GAAG,aAAgB9I,SAASiD,EAAE,IAAIk70C,GAAG,WAAW,SAAS,KAAKl70C,EAAEzC,GAAGG,EAAEa,KAAK,CAAC48B,MAAMn7B,EAAE2lB,UAAUtmB,IAAIW,EAAEwM,OAAOvF,KAAK,CACtf,SAASJ,GAAGnJ,EAAEsC,GAAG,IAAIzC,EAAE,CAAC,EAAiF,OAA/EA,EAAEG,EAAEuO,eAAejM,EAAEiM,cAAc1O,EAAE,SAASG,GAAG,SAASsC,EAAEzC,EAAE,MAAMG,GAAG,MAAMsC,EAASzC,CAAC,CAAC,IAAIoI,GAAG,CAACu50C,aAAar40C,GAAG,YAAY,gBAAgBs40C,mBAAmBt40C,GAAG,YAAY,sBAAsBu40C,eAAev40C,GAAG,YAAY,kBAAkBw40C,cAAcx40C,GAAG,aAAa,kBAAkBT,GAAG,CAAC,EAAEO,GAAG,CAAC,EACpF,SAASb,GAAGpI,GAAG,GAAG0I,GAAG1I,GAAG,OAAO0I,GAAG1I,GAAG,IAAIiI,GAAGjI,GAAG,OAAOA,EAAE,IAAYH,EAARyC,EAAE2F,GAAGjI,GAAK,IAAIH,KAAKyC,EAAE,GAAGA,EAAE3D,eAAekB,IAAIA,KAAKoJ,GAAG,OAAOP,GAAG1I,GAAGsC,EAAEzC,GAAG,OAAOG,CAAC,CAA/XktB,IAAKjkB,GAAG9E,SAASmE,cAAc,OAAO+K,MAAM,mBAAmBnS,gBAAgB+G,GAAGu50C,aAAazylC,iBAAiB9mP,GAAGw50C,mBAAmB1ylC,iBAAiB9mP,GAAGy50C,eAAe3ylC,WAAW,oBAAoB7tP,eAAe+G,GAAG050C,cAAc76tC,YAAwJ,IAAIh9G,GAAG1B,GAAG,gBAAgBu0xC,GAAGv0xC,GAAG,sBAAsBw0xC,GAAGx0xC,GAAG,kBAAkBy0xC,GAAGz0xC,GAAG,iBAAiB00xC,GAAG,IAAInzwC,IAAIi4zC,GAAG,smBAAsmBh+0C,MAAM,KAC/lC,SAAS6xsB,GAAGz1sB,EAAEsC,GAAGw6xC,GAAG7xxC,IAAIjL,EAAEsC,GAAG0uB,EAAG1uB,EAAE,CAACtC,GAAG,CAAC,IAAI,IAAI6h1C,GAAG,EAAEA,GAAGD,GAAGvi1C,OAAOwi1C,KAAK,CAAC,IAAIC,GAAGF,GAAGC,IAA2DpsoB,GAApDqsoB,GAAGvz0C,cAAuD,MAAtCuz0C,GAAG,GAAGlyxC,cAAckyxC,GAAG/g1C,MAAM,IAAiB,CAAC00sB,GAAG3rsB,GAAG,kBAAkB2rsB,GAAGknlB,GAAG,wBAAwBlnlB,GAAGmnlB,GAAG,oBAAoBnnlB,GAAG,WAAW,iBAAiBA,GAAG,UAAU,WAAWA,GAAG,WAAW,UAAUA,GAAGonlB,GAAG,mBAAmB1rwC,EAAG,eAAe,CAAC,WAAW,cAAcA,EAAG,eAAe,CAAC,WAAW,cAAcA,EAAG,iBAAiB,CAAC,aAAa,gBAC7cA,EAAG,iBAAiB,CAAC,aAAa,gBAAgBH,EAAG,WAAW,oEAAoEptB,MAAM,MAAMotB,EAAG,WAAW,uFAAuFptB,MAAM,MAAMotB,EAAG,gBAAgB,CAAC,iBAAiB,WAAW,YAAY,UAAUA,EAAG,mBAAmB,2DAA2DptB,MAAM,MAAMotB,EAAG,qBAAqB,6DAA6DptB,MAAM,MAC/fotB,EAAG,sBAAsB,8DAA8DptB,MAAM,MAAM,IAAIm+0C,GAAG,6NAA6Nn+0C,MAAM,KAAKo+0C,GAAG,IAAIr9zC,IAAI,0CAA0C/gB,MAAM,KAAK5C,OAAO+g1C,KACzZ,SAAS/gG,GAAGhhvC,EAAEsC,EAAEzC,GAAG,IAAI8B,EAAE3B,EAAEuL,MAAM,gBAAgBvL,EAAE+9C,cAAcl+C,EAlDjE,SAAYG,EAAEsC,EAAEzC,EAAE8B,EAAExD,EAAEuD,EAAEP,EAAES,EAAEc,GAA4B,GAAzB0nvC,GAAG7qvC,MAAMP,KAAKI,WAAc6qvC,GAAG,CAAC,IAAGA,GAAgC,MAAMzjuC,MAAM1kB,EAAE,MAA1C,IAAIN,EAAE2mvC,GAAG8B,IAAG,EAAG9B,GAAG,KAA8BgC,KAAKA,IAAG,EAAGlC,GAAGzmvC,EAAE,CAAC,CAkDpE6ovC,CAAG1ovC,EAAEW,OAAE,EAAOtC,GAAGA,EAAE+9C,cAAc,IAAI,CACxG,SAAS73C,GAAGlG,EAAEsC,GAAGA,EAAE,IAAO,EAAFA,GAAK,IAAI,IAAIzC,EAAE,EAAEA,EAAEG,EAAEX,OAAOQ,IAAI,CAAC,IAAI8B,EAAE3B,EAAEH,GAAG1B,EAAEwD,EAAE87B,MAAM97B,EAAEA,EAAEsmB,UAAUjoB,EAAE,CAAC,IAAI0B,OAAE,EAAO,GAAGY,EAAE,IAAI,IAAInB,EAAEQ,EAAEtC,OAAO,EAAE,GAAG8B,EAAEA,IAAI,CAAC,IAAIS,EAAED,EAAER,GAAGuB,EAAEd,EAAEsoB,SAAS1oB,EAAEI,EAAEm8C,cAA2B,GAAbn8C,EAAEA,EAAE0sC,SAAY5rC,IAAIhB,GAAGvD,EAAE8+0C,uBAAuB,MAAMj90C,EAAEghvC,GAAG7ivC,EAAEyD,EAAEJ,GAAGE,EAAEgB,CAAC,MAAM,IAAIvB,EAAE,EAAEA,EAAEQ,EAAEtC,OAAO8B,IAAI,CAAoD,GAA5CuB,GAAPd,EAAED,EAAER,IAAO+oB,SAAS1oB,EAAEI,EAAEm8C,cAAcn8C,EAAEA,EAAE0sC,SAAY5rC,IAAIhB,GAAGvD,EAAE8+0C,uBAAuB,MAAMj90C,EAAEghvC,GAAG7ivC,EAAEyD,EAAEJ,GAAGE,EAAEgB,CAAC,CAAC,CAAC,CAAC,GAAGynvC,GAAG,MAAMnqvC,EAAEiovC,GAAGkC,IAAG,EAAGlC,GAAG,KAAKjovC,CAAE,CAC5a,SAASuE,GAAEvE,EAAEsC,GAAG,IAAIzC,EAAEyC,EAAE2/0C,SAAI,IAASpi1C,IAAIA,EAAEyC,EAAE2/0C,IAAI,IAAIt9zC,KAAK,IAAIhjB,EAAE3B,EAAE,WAAWH,EAAEkL,IAAIpJ,KAAK89uB,GAAGn9uB,EAAEtC,EAAE,GAAE,GAAIH,EAAEskB,IAAIxiB,GAAG,CAAC,SAASug1C,GAAGli1C,EAAEsC,EAAEzC,GAAG,IAAI8B,EAAE,EAAEW,IAAIX,GAAG,GAAG89uB,GAAG5/uB,EAAEG,EAAE2B,EAAEW,EAAE,CAAC,IAAI6/0C,GAAG,kBAAkBtg1C,KAAKwF,SAAS9D,SAAS,IAAIxC,MAAM,GAAG,SAASqh1C,GAAGpi1C,GAAG,IAAIA,EAAEmi1C,IAAI,CAACni1C,EAAEmi1C,KAAI,EAAG/wzC,EAAGlN,SAAQ,SAAS5hB,GAAG,oBAAoBA,IAAI0/0C,GAAGj30C,IAAIzI,IAAI4/0C,GAAG5/0C,GAAE,EAAGtC,GAAGki1C,GAAG5/0C,GAAE,EAAGtC,GAAG,IAAG,IAAIsC,EAAE,IAAItC,EAAEsoF,SAAStoF,EAAEA,EAAEmtF,cAAc,OAAO7qF,GAAGA,EAAE6/0C,MAAM7/0C,EAAE6/0C,KAAI,EAAGD,GAAG,mBAAkB,EAAG5/0C,GAAG,CAAC,CACjb,SAASm9uB,GAAGz/uB,EAAEsC,EAAEzC,EAAE8B,GAAG,OAAO6ovC,GAAGlovC,IAAI,KAAK,EAAE,IAAInE,EAAEuqvC,GAAG,MAAM,KAAK,EAAEvqvC,EAAEusvC,GAAG,MAAM,QAAQvsvC,EAAEssvC,GAAG5qvC,EAAE1B,EAAEkE,KAAK,KAAKC,EAAEzC,EAAEG,GAAG7B,OAAE,GAAQ6pvC,IAAI,eAAe1lvC,GAAG,cAAcA,GAAG,UAAUA,IAAInE,GAAE,GAAIwD,OAAE,IAASxD,EAAE6B,EAAE2rB,iBAAiBrpB,EAAEzC,EAAE,CAAC4uC,SAAQ,EAAGC,QAAQvwC,IAAI6B,EAAE2rB,iBAAiBrpB,EAAEzC,GAAE,QAAI,IAAS1B,EAAE6B,EAAE2rB,iBAAiBrpB,EAAEzC,EAAE,CAAC6uC,QAAQvwC,IAAI6B,EAAE2rB,iBAAiBrpB,EAAEzC,GAAE,EAAG,CAClV,SAAS+nvC,GAAG5nvC,EAAEsC,EAAEzC,EAAE8B,EAAExD,GAAG,IAAIuD,EAAEC,EAAE,GAAG,IAAO,EAAFW,IAAM,IAAO,EAAFA,IAAM,OAAOX,EAAE3B,EAAE,OAAO,CAAC,GAAG,OAAO2B,EAAE,OAAO,IAAIR,EAAEQ,EAAEyU,IAAI,GAAG,IAAIjV,GAAG,IAAIA,EAAE,CAAC,IAAIS,EAAED,EAAEm50C,UAAUyB,cAAc,GAAG360C,IAAIzD,GAAG,IAAIyD,EAAE0mF,UAAU1mF,EAAE8+B,aAAaviC,EAAE,MAAM,GAAG,IAAIgD,EAAE,IAAIA,EAAEQ,EAAElB,OAAO,OAAOU,GAAG,CAAC,IAAIuB,EAAEvB,EAAEiV,IAAI,IAAG,IAAI1T,GAAG,IAAIA,MAAKA,EAAEvB,EAAE250C,UAAUyB,iBAAkBp+0C,GAAG,IAAIuE,EAAE4lF,UAAU5lF,EAAEg+B,aAAaviC,GAAE,OAAOgD,EAAEA,EAAEV,MAAM,CAAC,KAAK,OAAOmB,GAAG,CAAS,GAAG,QAAXT,EAAE0kB,GAAGjkB,IAAe,OAAe,GAAG,KAAXc,EAAEvB,EAAEiV,MAAc,IAAI1T,EAAE,CAACf,EAAED,EAAEP,EAAE,SAASnB,CAAC,CAAC4B,EAAEA,EAAE8+B,UAAU,CAAC,CAAC/+B,EAAEA,EAAElB,MAAM,CAACg30C,IAAG,WAAW,IAAI910C,EAAED,EAAEvD,EAAE620C,GAAGn10C,GAAGsB,EAAE,GACpfnB,EAAE,CAAC,IAAI4B,EAAEk7xC,GAAG36xC,IAAInC,GAAG,QAAG,IAAS4B,EAAE,CAAC,IAAIc,EAAE860C,GAAGn/0C,EAAE2B,EAAE,OAAOA,GAAG,IAAK,WAAW,GAAG,IAAI080C,GAAG780C,GAAG,MAAMG,EAAE,IAAK,UAAU,IAAK,QAAQ0C,EAAE680C,GAAG,MAAM,IAAK,UAAUlh1C,EAAE,QAAQqE,EAAEu70C,GAAG,MAAM,IAAK,WAAW5/0C,EAAE,OAAOqE,EAAEu70C,GAAG,MAAM,IAAK,aAAa,IAAK,YAAYv70C,EAAEu70C,GAAG,MAAM,IAAK,QAAQ,GAAG,IAAIp+0C,EAAE62W,OAAO,MAAM12W,EAAE,IAAK,WAAW,IAAK,WAAW,IAAK,YAAY,IAAK,YAAY,IAAK,UAAU,IAAK,WAAW,IAAK,YAAY,IAAK,cAAc0C,EAAEq70C,GAAG,MAAM,IAAK,OAAO,IAAK,UAAU,IAAK,YAAY,IAAK,WAAW,IAAK,YAAY,IAAK,WAAW,IAAK,YAAY,IAAK,OAAOr70C,EAC1iBs70C,GAAG,MAAM,IAAK,cAAc,IAAK,WAAW,IAAK,YAAY,IAAK,aAAat70C,EAAEo90C,GAAG,MAAM,KAAKh20C,GAAG,KAAK6yxC,GAAG,KAAKC,GAAGl6xC,EAAEw70C,GAAG,MAAM,KAAKrhD,GAAGn6xC,EAAEq90C,GAAG,MAAM,IAAK,SAASr90C,EAAEg70C,GAAG,MAAM,IAAK,QAAQh70C,EAAE090C,GAAG,MAAM,IAAK,OAAO,IAAK,MAAM,IAAK,QAAQ190C,EAAE070C,GAAG,MAAM,IAAK,oBAAoB,IAAK,qBAAqB,IAAK,gBAAgB,IAAK,cAAc,IAAK,cAAc,IAAK,aAAa,IAAK,cAAc,IAAK,YAAY170C,EAAE880C,GAAG,IAAIph1C,EAAE,IAAO,EAAFkE,GAAKoC,GAAGtG,GAAG,WAAW4B,EAAEiD,EAAE7E,EAAE,OAAOwD,EAAEA,EAAE,UAAU,KAAKA,EAAExD,EAAE,GAAG,IAAI,IAAQiD,EAAJkB,EAAEZ,EAAI,OAC/eY,GAAG,CAAK,IAAIyB,GAAR3C,EAAEkB,GAAUu40C,UAAsF,GAA5E,IAAIz50C,EAAE+U,KAAK,OAAOpS,IAAI3C,EAAE2C,EAAE,OAAOf,GAAc,OAAVe,EAAE0z0C,GAAGn10C,EAAEU,KAAY7E,EAAEyC,KAAKwh1C,GAAG9/0C,EAAEyB,EAAE3C,KAASqD,EAAE,MAAMnC,EAAEA,EAAE9B,MAAM,CAAC,EAAErC,EAAEiB,SAASuC,EAAE,IAAIc,EAAEd,EAAEvD,EAAE,KAAKwB,EAAE1B,GAAGgD,EAAEN,KAAK,CAAC48B,MAAM77B,EAAEqmB,UAAU7pB,IAAI,CAAC,CAAC,GAAG,IAAO,EAAFkE,GAAK,CAA4E,GAAnCI,EAAE,aAAa1C,GAAG,eAAeA,KAAtE4B,EAAE,cAAc5B,GAAG,gBAAgBA,IAA2CH,IAAI2zuB,MAAKn1uB,EAAEwB,EAAEiyiB,eAAejyiB,EAAEi+0C,eAAej4zC,GAAGxnB,KAAIA,EAAEik1C,OAAgB5/0C,GAAGd,KAAGA,EAAEzD,EAAE+C,SAAS/C,EAAEA,GAAGyD,EAAEzD,EAAEgvF,eAAevrF,EAAE6yZ,aAAa7yZ,EAAEqR,aAAa/R,OAAUwB,GAAqCA,EAAEf,EAAiB,QAAftD,GAAnCA,EAAEwB,EAAEiyiB,eAAejyiB,EAAEgt9B,WAAkBhn8B,GAAGxnB,GAAG,QAC9dA,KAARqG,EAAE6jvC,GAAGlqvC,KAAU,IAAIA,EAAE+X,KAAK,IAAI/X,EAAE+X,OAAK/X,EAAE,QAAUqE,EAAE,KAAKrE,EAAEsD,GAAKe,IAAIrE,GAAE,CAAgU,GAA/TD,EAAE2/0C,GAAG/50C,EAAE,eAAef,EAAE,eAAeV,EAAE,QAAW,eAAevC,GAAG,gBAAgBA,IAAE5B,EAAEoh1C,GAAGx70C,EAAE,iBAAiBf,EAAE,iBAAiBV,EAAE,WAAUmC,EAAE,MAAMhC,EAAEd,EAAEuE,GAAGzD,GAAGrB,EAAE,MAAMhD,EAAEuD,EAAEuE,GAAG9H,IAAGuD,EAAE,IAAIxD,EAAE4F,EAAEzB,EAAE,QAAQG,EAAE7C,EAAE1B,IAAK2Q,OAAOpK,EAAE9C,EAAEkwiB,cAAczwiB,EAAE2C,EAAE,KAAK6hB,GAAG1nB,KAAKwD,KAAIvD,EAAE,IAAIA,EAAE6E,EAAEV,EAAE,QAAQlE,EAAEwB,EAAE1B,IAAK2Q,OAAOzN,EAAEjD,EAAE0ziB,cAAcptiB,EAAEV,EAAE5F,GAAGsG,EAAEV,EAAKtB,GAAGrE,EAAEiE,EAAE,CAAa,IAARW,EAAE5E,EAAEkE,EAAE,EAAMlB,EAAhBjD,EAAEsE,EAAkBrB,EAAEA,EAAEkh1C,GAAGlh1C,GAAGkB,IAAQ,IAAJlB,EAAE,EAAM2C,EAAEf,EAAEe,EAAEA,EAAEu+0C,GAAGv+0C,GAAG3C,IAAI,KAAK,EAAEkB,EAAElB,GAAGjD,EAAEmk1C,GAAGnk1C,GAAGmE,IAAI,KAAK,EAAElB,EAAEkB,GAAGU,EACpfs/0C,GAAGt/0C,GAAG5B,IAAI,KAAKkB,KAAK,CAAC,GAAGnE,IAAI6E,GAAG,OAAOA,GAAG7E,IAAI6E,EAAE830C,UAAU,MAAMz40C,EAAElE,EAAEmk1C,GAAGnk1C,GAAG6E,EAAEs/0C,GAAGt/0C,EAAE,CAAC7E,EAAE,IAAI,MAAMA,EAAE,KAAK,OAAOsE,GAAG8/0C,GAAGrh1C,EAAES,EAAEc,EAAEtE,GAAE,GAAI,OAAOC,GAAG,OAAOqG,GAAG890C,GAAGrh1C,EAAEuD,EAAErG,EAAED,GAAE,EAAG,CAA8D,GAAG,YAA1CsE,GAAjBd,EAAED,EAAEwE,GAAGxE,GAAGT,QAAW8pF,UAAUppF,EAAEopF,SAASz8E,gBAA+B,UAAU7L,GAAG,SAASd,EAAE2J,KAAK,IAAIgjB,EAAGznB,QAAQ,GAAGC,GAAGnF,GAAG,GAAGuF,GAAGonB,EAAG5lB,OAAO,CAAC4lB,EAAGxlB,GAAG,IAAI+sB,EAAGhuB,EAAE,MAAMpF,EAAEd,EAAEopF,WAAW,UAAUtoF,EAAE6L,gBAAgB,aAAa3M,EAAE2J,MAAM,UAAU3J,EAAE2J,QAAQgjB,EAAGlmB,IACrV,OAD4VkmB,IAAKA,EAAGA,EAAGvuB,EAAE2B,IAAKgE,GAAGxE,EAAEotB,EAAG1uB,EAAE1B,IAAW23B,GAAIA,EAAG91B,EAAE4B,EAAED,GAAG,aAAa3B,IAAI81B,EAAGl0B,EAAEs40C,gBAClfpkzC,EAAGskzC,YAAY,WAAWx40C,EAAE2J,MAAMm1D,GAAG9+D,EAAE,SAASA,EAAEzB,QAAO21B,EAAGn0B,EAAEwE,GAAGxE,GAAGT,OAAclB,GAAG,IAAK,WAAa+G,GAAG+uB,IAAK,SAASA,EAAG6qzC,mBAAgBp30C,GAAGusB,EAAG3tB,GAAGxG,EAAEyF,GAAG,MAAK,MAAM,IAAK,WAAWA,GAAGe,GAAGoB,GAAG,KAAK,MAAM,IAAK,YAAY3B,IAAG,EAAG,MAAM,IAAK,cAAc,IAAK,UAAU,IAAK,UAAUA,IAAG,EAAGkB,GAAG3H,EAAEtB,EAAE1B,GAAG,MAAM,IAAK,kBAAkB,GAAGsK,GAAG,MAAM,IAAK,UAAU,IAAK,QAAQK,GAAG3H,EAAEtB,EAAE1B,GAAG,IAAIq3rC,EAAG,GAAGvvrC,GAAG3D,EAAE,CAAC,OAAOtC,GAAG,IAAK,mBAAmB,IAAIgzB,EAAG,qBAAqB,MAAM1wB,EAAE,IAAK,iBAAiB0wB,EAAG,mBACpe,MAAM1wB,EAAE,IAAK,oBAAoB0wB,EAAG,sBAAsB,MAAM1wB,EAAE0wB,OAAG,CAAM,MAAMjtB,GAAGkB,GAAGjH,EAAEH,KAAKmzB,EAAG,oBAAoB,YAAYhzB,GAAG,MAAMH,EAAEuzhB,UAAUpggB,EAAG,sBAAsBA,IAAK1sB,IAAI,OAAOzG,EAAEgsc,SAAS9lc,IAAI,uBAAuBitB,EAAG,qBAAqBA,GAAIjtB,KAAKyvrC,EAAGinJ,OAAYrjiB,GAAG,UAARkgiB,GAAGn70C,GAAkBm70C,GAAGn50C,MAAMm50C,GAAGttvC,YAAYjmF,IAAG,IAAiB,GAAZ+vB,EAAGhwB,GAAGnE,EAAEqxB,IAAS3zB,SAAS2zB,EAAG,IAAIqrzC,GAAGrrzC,EAAGhzB,EAAE,KAAKH,EAAE1B,GAAGgD,EAAEN,KAAK,CAAC48B,MAAMzK,EAAG/K,UAAU6N,KAAK0/pC,GAAwB,QAATA,EAAGjvrC,GAAG1G,OAAlBmzB,EAAGxkB,KAAKgnrC,MAA2CA,EAAGxvrC,GA5BhM,SAAYhG,EAAEsC,GAAG,OAAOtC,GAAG,IAAK,iBAAiB,OAAOuG,GAAGjE,GAAG,IAAK,WAAW,OAAG,KAAKA,EAAEo93B,MAAa,MAAKr53B,IAAG,EAAUd,IAAG,IAAK,YAAY,OAAOvF,EAAEsC,EAAEkM,QAASjJ,IAAIc,GAAG,KAAKrG,EAAE,QAAQ,OAAO,KAAK,CA4BE+H,CAAG/H,EAAEH,GA3Bzd,SAAYG,EAAEsC,GAAG,GAAGyD,GAAG,MAAM,mBAAmB/F,IAAIiG,IAAIgB,GAAGjH,EAAEsC,IAAItC,EAAEy80C,KAAKzk+B,GAAGohc,GAAGkgiB,GAAG,KAAKvz0C,IAAG,EAAG/F,GAAG,KAAK,OAAOA,GAAG,IAAK,QAAgQ,QAAQ,OAAO,KAA3P,IAAK,WAAW,KAAKsC,EAAEu/G,SAASv/G,EAAEs/G,QAAQt/G,EAAEq/G,UAAUr/G,EAAEu/G,SAASv/G,EAAEs/G,OAAO,CAAC,GAAGt/G,EAAE8hP,MAAM,EAAE9hP,EAAE8hP,KAAK/kP,OAAO,OAAOiD,EAAE8hP,KAAK,GAAG9hP,EAAEo93B,MAAM,OAAO5g4B,OAAO4nB,aAAapkB,EAAEo93B,MAAM,CAAC,OAAO,KAAK,IAAK,iBAAiB,OAAOp53B,IAAI,OAAOhE,EAAEupc,OAAO,KAAKvpc,EAAEkM,KAAyB,CA2BqFlH,CAAGtH,EAAEH,KACje,GADoe8B,EAAEmE,GAAGnE,EAAE,kBACvetC,SAASlB,EAAE,IAAIkg1C,GAAG,gBAAgB,cAAc,KAAKx+0C,EAAE1B,GAAGgD,EAAEN,KAAK,CAAC48B,MAAMt/B,EAAE8pB,UAAUtmB,IAAIxD,EAAEqQ,KAAKgnrC,EAAG,CAACtvrC,GAAG/E,EAAEmB,EAAE,GAAE,CAAC,SAAS+/0C,GAAGri1C,EAAEsC,EAAEzC,GAAG,MAAM,CAACqqB,SAASlqB,EAAEsuC,SAAShsC,EAAEy7C,cAAcl+C,EAAE,CAAC,SAASiG,GAAG9F,EAAEsC,GAAG,IAAI,IAAIzC,EAAEyC,EAAE,UAAUX,EAAE,GAAG,OAAO3B,GAAG,CAAC,IAAI7B,EAAE6B,EAAE0B,EAAEvD,EAAE280C,UAAU,IAAI380C,EAAEiY,KAAK,OAAO1U,IAAIvD,EAAEuD,EAAY,OAAVA,EAAEg20C,GAAG130C,EAAEH,KAAY8B,EAAEkoB,QAAQw4zC,GAAGri1C,EAAE0B,EAAEvD,IAAc,OAAVuD,EAAEg20C,GAAG130C,EAAEsC,KAAYX,EAAEd,KAAKwh1C,GAAGri1C,EAAE0B,EAAEvD,KAAK6B,EAAEA,EAAES,MAAM,CAAC,OAAOkB,CAAC,CAAC,SAAS4g1C,GAAGvi1C,GAAG,GAAG,OAAOA,EAAE,OAAO,KAAK,GAAGA,EAAEA,EAAES,aAAaT,GAAG,IAAIA,EAAEoW,KAAK,OAAOpW,GAAI,IAAI,CACnd,SAASwi1C,GAAGxi1C,EAAEsC,EAAEzC,EAAE8B,EAAExD,GAAG,IAAI,IAAIuD,EAAEY,EAAEw60C,WAAW370C,EAAE,GAAG,OAAOtB,GAAGA,IAAI8B,GAAG,CAAC,IAAIC,EAAE/B,EAAE6C,EAAEd,EAAEm50C,UAAUv50C,EAAEI,EAAEk50C,UAAU,GAAG,OAAOp40C,GAAGA,IAAIf,EAAE,MAAM,IAAIC,EAAEwU,KAAK,OAAO5U,IAAII,EAAEJ,EAAErD,EAAa,OAAVuE,EAAEg10C,GAAG730C,EAAE6B,KAAYP,EAAE0oB,QAAQw4zC,GAAGxi1C,EAAE6C,EAAEd,IAAKzD,GAAc,OAAVuE,EAAEg10C,GAAG730C,EAAE6B,KAAYP,EAAEN,KAAKwh1C,GAAGxi1C,EAAE6C,EAAEd,KAAM/B,EAAEA,EAAEY,MAAM,CAAC,IAAIU,EAAE9B,QAAQW,EAAEa,KAAK,CAAC48B,MAAMn7B,EAAE2lB,UAAU9mB,GAAG,CAAC,IAAIoivB,GAAG,SAASk/lB,GAAG,iBAAiB,SAASC,GAAG1i1C,GAAG,OAAO,iBAAkBA,EAAEA,EAAE,GAAGA,GAAGyL,QAAQ83uB,GAAG,MAAM93uB,QAAQg30C,GAAG,GAAG,CAAC,SAASE,GAAG3i1C,EAAEsC,EAAEzC,GAAW,GAARyC,EAAEog1C,GAAGpg1C,GAAMog1C,GAAG1i1C,KAAKsC,GAAGzC,EAAE,MAAM2mB,MAAM1kB,EAAE,KAAM,CAAC,SAAS8g1C,KAAK,CAC9e,IAAIC,GAAG,KAAKC,GAAG,KAAK,SAASC,GAAG/i1C,EAAEsC,GAAG,MAAM,aAAatC,GAAG,aAAaA,GAAG,iBAAkBsC,EAAE08B,UAAU,iBAAkB18B,EAAE08B,UAAU,iBAAkB18B,EAAEg40C,yBAAyB,OAAOh40C,EAAEg40C,yBAAyB,MAAMh40C,EAAEg40C,wBAAwBtG,MAAM,CAC5P,IAAIgP,GAAG,mBAAoBn+zC,WAAWA,gBAAW,EAAOo+zC,GAAG,mBAAoBv3zC,aAAaA,kBAAa,EAAOw3zC,GAAG,mBAAoBvj1C,QAAQA,aAAQ,EAAOwj1C,GAAG,mBAAoBrw6B,eAAeA,oBAAe,IAAqBow6B,GAAG,SAASlj1C,GAAG,OAAOkj1C,GAAG5+zC,QAAQ,MAAMlkB,KAAKJ,GAAGgmB,MAAMo9zC,GAAG,EAAEJ,GAAG,SAASI,GAAGpj1C,GAAG6kB,YAAW,WAAW,MAAM7kB,CAAE,GAAE,CACpV,SAASqj1C,GAAGrj1C,EAAEsC,GAAG,IAAIzC,EAAEyC,EAAEX,EAAE,EAAE,EAAE,CAAC,IAAIxD,EAAE0B,EAAEupF,YAA6B,GAAjBppF,EAAE67B,YAAYh8B,GAAM1B,GAAG,IAAIA,EAAEmqF,SAAS,GAAY,QAATzoF,EAAE1B,EAAEqQ,MAAc,CAAC,GAAG,IAAI7M,EAA0B,OAAvB3B,EAAE67B,YAAY19B,QAAG2pvC,GAAGxlvC,GAAUX,GAAG,KAAK,MAAM9B,GAAG,OAAOA,GAAG,OAAOA,GAAG8B,IAAI9B,EAAE1B,CAAC,OAAO0B,GAAGiovC,GAAGxlvC,EAAE,CAAC,SAASgh1C,GAAGtj1C,GAAG,KAAK,MAAMA,EAAEA,EAAEA,EAAEopF,YAAY,CAAC,IAAI9mF,EAAEtC,EAAEsoF,SAAS,GAAG,IAAIhmF,GAAG,IAAIA,EAAE,MAAM,GAAG,IAAIA,EAAE,CAAU,GAAG,OAAZA,EAAEtC,EAAEwO,OAAiB,OAAOlM,GAAG,OAAOA,EAAE,MAAM,GAAG,OAAOA,EAAE,OAAO,IAAI,CAAC,CAAC,OAAOtC,CAAC,CACjY,SAASuj1C,GAAGvj1C,GAAGA,EAAEA,EAAEwj1C,gBAAgB,IAAI,IAAIlh1C,EAAE,EAAEtC,GAAG,CAAC,GAAG,IAAIA,EAAEsoF,SAAS,CAAC,IAAIzoF,EAAEG,EAAEwO,KAAK,GAAG,MAAM3O,GAAG,OAAOA,GAAG,OAAOA,EAAE,CAAC,GAAG,IAAIyC,EAAE,OAAOtC,EAAEsC,GAAG,KAAK,OAAOzC,GAAGyC,GAAG,CAACtC,EAAEA,EAAEwj1C,eAAe,CAAC,OAAO,IAAI,CAAC,IAAIC,GAAG5h1C,KAAKwF,SAAS9D,SAAS,IAAIxC,MAAM,GAAG2i1C,GAAG,gBAAgBD,GAAGE,GAAG,gBAAgBF,GAAGnB,GAAG,oBAAoBmB,GAAGxB,GAAG,iBAAiBwB,GAAGG,GAAG,oBAAoBH,GAAGI,GAAG,kBAAkBJ,GAClX,SAAS59zC,GAAG7lB,GAAG,IAAIsC,EAAEtC,EAAE0j1C,IAAI,GAAGph1C,EAAE,OAAOA,EAAE,IAAI,IAAIzC,EAAEG,EAAE0gC,WAAW7gC,GAAG,CAAC,GAAGyC,EAAEzC,EAAEyi1C,KAAKzi1C,EAAE6j1C,IAAI,CAAe,GAAd7j1C,EAAEyC,EAAEy40C,UAAa,OAAOz40C,EAAE4mF,OAAO,OAAOrpF,GAAG,OAAOA,EAAEqpF,MAAM,IAAIlpF,EAAEuj1C,GAAGvj1C,GAAG,OAAOA,GAAG,CAAC,GAAGH,EAAEG,EAAE0j1C,IAAI,OAAO7j1C,EAAEG,EAAEuj1C,GAAGvj1C,EAAE,CAAC,OAAOsC,CAAC,CAAKzC,GAAJG,EAAEH,GAAM6gC,UAAU,CAAC,OAAO,IAAI,CAAC,SAASqptC,GAAG/pvC,GAAkB,QAAfA,EAAEA,EAAE0j1C,KAAK1j1C,EAAEsi1C,MAAc,IAAIti1C,EAAEoW,KAAK,IAAIpW,EAAEoW,KAAK,KAAKpW,EAAEoW,KAAK,IAAIpW,EAAEoW,IAAI,KAAKpW,CAAC,CAAC,SAASmG,GAAGnG,GAAG,GAAG,IAAIA,EAAEoW,KAAK,IAAIpW,EAAEoW,IAAI,OAAOpW,EAAE860C,UAAU,MAAMt0zC,MAAM1kB,EAAE,IAAK,CAAC,SAAS+00C,GAAG720C,GAAG,OAAOA,EAAE2j1C,KAAK,IAAI,CAAC,IAAIG,GAAG,GAAGC,IAAI,EAAE,SAASC,GAAGhk1C,GAAG,MAAM,CAAC++B,QAAQ/+B,EAAE,CACve,SAAS0D,GAAE1D,GAAG,EAAE+j1C,KAAK/j1C,EAAE++B,QAAQ+kzC,GAAGC,IAAID,GAAGC,IAAI,KAAKA,KAAK,CAAC,SAASpg1C,GAAE3D,EAAEsC,GAAGyh1C,KAAKD,GAAGC,IAAI/j1C,EAAE++B,QAAQ/+B,EAAE++B,QAAQz8B,CAAC,CAAC,IAAI2h1C,GAAG,CAAC,EAAEz/0C,GAAEw/0C,GAAGC,IAAIC,GAAGF,IAAG,GAAIG,GAAGF,GAAG,SAASG,GAAGpk1C,EAAEsC,GAAG,IAAIzC,EAAEG,EAAEuL,KAAK28vC,aAAa,IAAIrowC,EAAE,OAAOok1C,GAAG,IAAIti1C,EAAE3B,EAAE860C,UAAU,GAAGn50C,GAAGA,EAAE0i1C,8CAA8C/h1C,EAAE,OAAOX,EAAE2i1C,0CAA0C,IAAS5i1C,EAALvD,EAAE,CAAC,EAAI,IAAIuD,KAAK7B,EAAE1B,EAAEuD,GAAGY,EAAEZ,GAAoH,OAAjHC,KAAI3B,EAAEA,EAAE860C,WAAYuJ,4CAA4C/h1C,EAAEtC,EAAEsk1C,0CAA0Cnm1C,GAAUA,CAAC,CAC9d,SAASom1C,GAAGvk1C,GAAyB,OAAO,MAA3BA,EAAEgowC,iBAA6C,CAAC,SAASw8E,KAAK9g1C,GAAEwg1C,IAAIxg1C,GAAEc,GAAE,CAAC,SAASig1C,GAAGzk1C,EAAEsC,EAAEzC,GAAG,GAAG2E,GAAEu6B,UAAUklzC,GAAG,MAAMz9zC,MAAM1kB,EAAE,MAAM6B,GAAEa,GAAElC,GAAGqB,GAAEug1C,GAAGrk1C,EAAE,CAAC,SAAS87nC,GAAG37nC,EAAEsC,EAAEzC,GAAG,IAAI8B,EAAE3B,EAAE860C,UAAgC,GAAtBx40C,EAAEA,EAAE0lwC,kBAAqB,mBAAoBrmwC,EAAEm10C,gBAAgB,OAAOj30C,EAAwB,IAAI,IAAI1B,KAA9BwD,EAAEA,EAAEm10C,kBAAiC,KAAK340C,KAAKmE,GAAG,MAAMkkB,MAAM1kB,EAAE,IAAIqnvC,EAAGnpvC,IAAI,UAAU7B,IAAI,OAAO0F,EAAE,CAAC,EAAEhE,EAAE8B,EAAE,CACxX,SAAS+i1C,GAAG1k1C,GAA2G,OAAxGA,GAAGA,EAAEA,EAAE860C,YAAY960C,EAAE2k1C,2CAA2CV,GAAGE,GAAG3/0C,GAAEu6B,QAAQp7B,GAAEa,GAAExE,GAAG2D,GAAEug1C,GAAGA,GAAGnlzC,UAAe,CAAE,CAAC,SAAS6lzC,GAAG5k1C,EAAEsC,EAAEzC,GAAG,IAAI8B,EAAE3B,EAAE860C,UAAU,IAAIn50C,EAAE,MAAM6kB,MAAM1kB,EAAE,MAAMjC,GAAGG,EAAE27nC,GAAG37nC,EAAEsC,EAAE6h1C,IAAIxi1C,EAAEgj1C,0CAA0C3k1C,EAAE0D,GAAEwg1C,IAAIxg1C,GAAEc,IAAGb,GAAEa,GAAExE,IAAI0D,GAAEwg1C,IAAIvg1C,GAAEug1C,GAAGrk1C,EAAE,CAAC,IAAIgl1C,GAAG,KAAKC,IAAG,EAAGpvoB,IAAG,EAAG,SAASqvoB,GAAG/k1C,GAAG,OAAO6k1C,GAAGA,GAAG,CAAC7k1C,GAAG6k1C,GAAGhk1C,KAAKb,EAAE,CAChW,SAASgl1C,KAAK,IAAItvoB,IAAI,OAAOmvoB,GAAG,CAACnvoB,IAAG,EAAG,IAAI11sB,EAAE,EAAEsC,EAAEa,GAAE,IAAI,IAAItD,EAAEgl1C,GAAG,IAAI1h1C,GAAE,EAAEnD,EAAEH,EAAER,OAAOW,IAAI,CAAC,IAAI2B,EAAE9B,EAAEG,GAAG,GAAG2B,EAAEA,GAAE,SAAU,OAAOA,EAAE,CAACkj1C,GAAG,KAAKC,IAAG,CAAE,CAAC,MAAM3m1C,GAAG,MAAM,OAAO0m1C,KAAKA,GAAGA,GAAG9j1C,MAAMf,EAAE,IAAI0hB,GAAGY,GAAG0i0C,IAAI7m1C,CAAE,CAAC,QAAQgF,GAAEb,EAAEozsB,IAAG,CAAE,CAAC,CAAC,OAAO,IAAI,CAAC,IAAIuvoB,GAAG,GAAGht+B,GAAG,EAAEit+B,GAAG,KAAKC,GAAG,EAAEC,GAAG,GAAGC,GAAG,EAAEC,GAAG,KAAKtouB,GAAG,EAAEuouB,GAAG,GAAG,SAASC,GAAGxl1C,EAAEsC,GAAG2i1C,GAAGht+B,MAAMkt+B,GAAGF,GAAGht+B,MAAMit+B,GAAGA,GAAGll1C,EAAEml1C,GAAG7i1C,CAAC,CACjV,SAASmj1C,GAAGzl1C,EAAEsC,EAAEzC,GAAGul1C,GAAGC,MAAMrouB,GAAGoouB,GAAGC,MAAME,GAAGH,GAAGC,MAAMC,GAAGA,GAAGtl1C,EAAE,IAAI2B,EAAEq7mB,GAAGh9mB,EAAEul1C,GAAG,IAAIpn1C,EAAE,GAAGkjB,GAAG1f,GAAG,EAAEA,KAAK,GAAGxD,GAAG0B,GAAG,EAAE,IAAI6B,EAAE,GAAG2f,GAAG/e,GAAGnE,EAAE,GAAG,GAAGuD,EAAE,CAAC,IAAIP,EAAEhD,EAAEA,EAAE,EAAEuD,GAAGC,GAAG,GAAGR,GAAG,GAAGoC,SAAS,IAAI5B,IAAIR,EAAEhD,GAAGgD,EAAE67mB,GAAG,GAAG,GAAG37lB,GAAG/e,GAAGnE,EAAE0B,GAAG1B,EAAEwD,EAAE4j1C,GAAG7j1C,EAAE1B,CAAC,MAAMg9mB,GAAG,GAAGt7mB,EAAE7B,GAAG1B,EAAEwD,EAAE4j1C,GAAGvl1C,CAAC,CAAC,SAAS0l1C,GAAG1l1C,GAAG,OAAOA,EAAES,SAAS+k1C,GAAGxl1C,EAAE,GAAGyl1C,GAAGzl1C,EAAE,EAAE,GAAG,CAAC,SAAS2l1C,GAAG3l1C,GAAG,KAAKA,IAAIkl1C,IAAIA,GAAGD,KAAKht+B,IAAIgt+B,GAAGht+B,IAAI,KAAKkt+B,GAAGF,KAAKht+B,IAAIgt+B,GAAGht+B,IAAI,KAAK,KAAKj4W,IAAIsl1C,IAAIA,GAAGF,KAAKC,IAAID,GAAGC,IAAI,KAAKE,GAAGH,KAAKC,IAAID,GAAGC,IAAI,KAAKrouB,GAAGoouB,KAAKC,IAAID,GAAGC,IAAI,IAAI,CAAC,IAAIO,GAAG,KAAKC,GAAG,KAAKhj1C,IAAE,EAAGij1C,GAAG,KACje,SAASC,GAAG/l1C,EAAEsC,GAAG,IAAIzC,EAAEmm1C,GAAG,EAAE,KAAK,KAAK,GAAGnm1C,EAAEsxmC,YAAY,UAAUtxmC,EAAEi70C,UAAUx40C,EAAEzC,EAAEY,OAAOT,EAAgB,QAAdsC,EAAEtC,EAAEim1C,YAAoBjm1C,EAAEim1C,UAAU,CAACpm1C,GAAGG,EAAEo5C,OAAO,IAAI92C,EAAEzB,KAAKhB,EAAE,CACxJ,SAASqm1C,GAAGlm1C,EAAEsC,GAAG,OAAOtC,EAAEoW,KAAK,KAAK,EAAE,IAAIvW,EAAEG,EAAEuL,KAAyE,OAAO,QAA3EjJ,EAAE,IAAIA,EAAEgmF,UAAUzoF,EAAE0O,gBAAgBjM,EAAE0oF,SAASz8E,cAAc,KAAKjM,KAAmBtC,EAAE860C,UAAUx40C,EAAEsj1C,GAAG5l1C,EAAE6l1C,GAAGvC,GAAGhh1C,EAAE6mF,aAAY,GAAO,KAAK,EAAE,OAAoD,QAA7C7mF,EAAE,KAAKtC,EAAEmm1C,cAAc,IAAI7j1C,EAAEgmF,SAAS,KAAKhmF,KAAYtC,EAAE860C,UAAUx40C,EAAEsj1C,GAAG5l1C,EAAE6l1C,GAAG,MAAK,GAAO,KAAK,GAAG,OAA+B,QAAxBvj1C,EAAE,IAAIA,EAAEgmF,SAAS,KAAKhmF,KAAYzC,EAAE,OAAOyl1C,GAAG,CAAC/6zC,GAAGyylB,GAAGz8P,SAASgl+B,IAAI,KAAKvl1C,EAAE600C,cAAc,CAACmG,WAAW140C,EAAEgz0C,YAAYz10C,EAAEum1C,UAAU,aAAYvm1C,EAAEmm1C,GAAG,GAAG,KAAK,KAAK,IAAKlL,UAAUx40C,EAAEzC,EAAEY,OAAOT,EAAEA,EAAEkpF,MAAMrpF,EAAE+l1C,GAAG5l1C,EAAE6l1C,GAClf,MAAK,GAAO,QAAQ,OAAM,EAAG,CAAC,SAASQ,GAAGrm1C,GAAG,OAAO,IAAY,EAAPA,EAAE0G,OAAS,IAAa,IAAR1G,EAAEo5C,MAAU,CAAC,SAASktyC,GAAGtm1C,GAAG,GAAG6C,GAAE,CAAC,IAAIP,EAAEuj1C,GAAG,GAAGvj1C,EAAE,CAAC,IAAIzC,EAAEyC,EAAE,IAAI4j1C,GAAGlm1C,EAAEsC,GAAG,CAAC,GAAG+j1C,GAAGrm1C,GAAG,MAAMwmB,MAAM1kB,EAAE,MAAMQ,EAAEgh1C,GAAGzj1C,EAAEupF,aAAa,IAAIznF,EAAEik1C,GAAGtj1C,GAAG4j1C,GAAGlm1C,EAAEsC,GAAGyj1C,GAAGpk1C,EAAE9B,IAAIG,EAAEo5C,OAAe,KAATp5C,EAAEo5C,MAAY,EAAEv2C,IAAE,EAAG+i1C,GAAG5l1C,EAAE,CAAC,KAAK,CAAC,GAAGqm1C,GAAGrm1C,GAAG,MAAMwmB,MAAM1kB,EAAE,MAAM9B,EAAEo5C,OAAe,KAATp5C,EAAEo5C,MAAY,EAAEv2C,IAAE,EAAG+i1C,GAAG5l1C,CAAC,CAAC,CAAC,CAAC,SAASum1C,GAAGvm1C,GAAG,IAAIA,EAAEA,EAAES,OAAO,OAAOT,GAAG,IAAIA,EAAEoW,KAAK,IAAIpW,EAAEoW,KAAK,KAAKpW,EAAEoW,KAAKpW,EAAEA,EAAES,OAAOml1C,GAAG5l1C,CAAC,CACha,SAASwm1C,GAAGxm1C,GAAG,GAAGA,IAAI4l1C,GAAG,OAAM,EAAG,IAAI/i1C,GAAE,OAAO0j1C,GAAGvm1C,GAAG6C,IAAE,GAAG,EAAG,IAAIP,EAAkG,IAA/FA,EAAE,IAAItC,EAAEoW,QAAQ9T,EAAE,IAAItC,EAAEoW,OAAgB9T,EAAE,UAAXA,EAAEtC,EAAEuL,OAAmB,SAASjJ,IAAIyg1C,GAAG/i1C,EAAEuL,KAAKvL,EAAEym1C,gBAAmBnk1C,IAAIA,EAAEuj1C,IAAI,CAAC,GAAGQ,GAAGrm1C,GAAG,MAAM0m1C,KAAKlg0C,MAAM1kB,EAAE,MAAM,KAAKQ,GAAGyj1C,GAAG/l1C,EAAEsC,GAAGA,EAAEgh1C,GAAGhh1C,EAAE8mF,YAAY,CAAO,GAANm9vC,GAAGvm1C,GAAM,KAAKA,EAAEoW,IAAI,CAAgD,KAA7BpW,EAAE,QAApBA,EAAEA,EAAE600C,eAAyB700C,EAAEg70C,WAAW,MAAW,MAAMx0zC,MAAM1kB,EAAE,MAAM9B,EAAE,CAAiB,IAAhBA,EAAEA,EAAEopF,YAAgB9mF,EAAE,EAAEtC,GAAG,CAAC,GAAG,IAAIA,EAAEsoF,SAAS,CAAC,IAAIzoF,EAAEG,EAAEwO,KAAK,GAAG,OAAO3O,EAAE,CAAC,GAAG,IAAIyC,EAAE,CAACuj1C,GAAGvC,GAAGtj1C,EAAEopF,aAAa,MAAMppF,CAAC,CAACsC,GAAG,KAAK,MAAMzC,GAAG,OAAOA,GAAG,OAAOA,GAAGyC,GAAG,CAACtC,EAAEA,EAAEopF,WAAW,CAACy8vC,GACjgB,IAAI,CAAC,MAAMA,GAAGD,GAAGtC,GAAGtj1C,EAAE860C,UAAU1xvC,aAAa,KAAK,OAAM,CAAE,CAAC,SAASs9vC,KAAK,IAAI,IAAI1m1C,EAAE6l1C,GAAG7l1C,GAAGA,EAAEsj1C,GAAGtj1C,EAAEopF,YAAY,CAAC,SAASu9vC,KAAKd,GAAGD,GAAG,KAAK/i1C,IAAE,CAAE,CAAC,SAAS+j1C,GAAG5m1C,GAAG,OAAO8l1C,GAAGA,GAAG,CAAC9l1C,GAAG8l1C,GAAGjl1C,KAAKb,EAAE,CAAC,IAAI6m1C,GAAGh2zC,EAAG2rzC,wBAChM,SAASsK,GAAG9m1C,EAAEsC,EAAEzC,GAAW,GAAG,QAAXG,EAAEH,EAAE+gC,MAAiB,mBAAoB5gC,GAAG,iBAAkBA,EAAE,CAAC,GAAGH,EAAEkn1C,OAAO,CAAY,GAAXln1C,EAAEA,EAAEkn1C,OAAY,CAAC,GAAG,IAAIln1C,EAAEuW,IAAI,MAAMoQ,MAAM1kB,EAAE,MAAM,IAAIH,EAAE9B,EAAEi70C,SAAS,CAAC,IAAIn50C,EAAE,MAAM6kB,MAAM1kB,EAAE,IAAI9B,IAAI,IAAI7B,EAAEwD,EAAED,EAAE,GAAG1B,EAAE,OAAG,OAAOsC,GAAG,OAAOA,EAAEs+B,KAAK,mBAAoBt+B,EAAEs+B,KAAKt+B,EAAEs+B,IAAIomzC,aAAatl1C,EAASY,EAAEs+B,KAAIt+B,EAAE,SAAStC,GAAG,IAAIsC,EAAEnE,EAAE8o1C,KAAK,OAAOjn1C,SAASsC,EAAEZ,GAAGY,EAAEZ,GAAG1B,CAAC,EAAEsC,EAAE0k1C,WAAWtl1C,EAASY,EAAC,CAAC,GAAG,iBAAkBtC,EAAE,MAAMwmB,MAAM1kB,EAAE,MAAM,IAAIjC,EAAEkn1C,OAAO,MAAMvg0C,MAAM1kB,EAAE,IAAI9B,GAAI,CAAC,OAAOA,CAAC,CAC/c,SAASkn1C,GAAGln1C,EAAEsC,GAAuC,MAApCtC,EAAE1B,OAAOI,UAAU6E,SAAS3E,KAAK0D,GAASkkB,MAAM1kB,EAAE,GAAG,oBAAoB9B,EAAE,qBAAqB1B,OAAOgU,KAAKhQ,GAAGuJ,KAAK,MAAM,IAAI7L,GAAI,CAAC,SAASmn1C,GAAGnn1C,GAAiB,OAAOsC,EAAftC,EAAEyx9B,OAAezx9B,EAAEyggC,SAAS,CACrM,SAAS2mV,GAAGpn1C,GAAG,SAASsC,EAAEA,EAAEzC,GAAG,GAAGG,EAAE,CAAC,IAAI2B,EAAEW,EAAE2j1C,UAAU,OAAOtk1C,GAAGW,EAAE2j1C,UAAU,CAACpm1C,GAAGyC,EAAE82C,OAAO,IAAIz3C,EAAEd,KAAKhB,EAAE,CAAC,CAAC,SAASA,EAAEA,EAAE8B,GAAG,IAAI3B,EAAE,OAAO,KAAK,KAAK,OAAO2B,GAAGW,EAAEzC,EAAE8B,GAAGA,EAAEA,EAAE+tF,QAAQ,OAAO,IAAI,CAAC,SAAS/tF,EAAE3B,EAAEsC,GAAG,IAAItC,EAAE,IAAI2pB,IAAI,OAAOrnB,GAAG,OAAOA,EAAEuhB,IAAI7jB,EAAEiL,IAAI3I,EAAEuhB,IAAIvhB,GAAGtC,EAAEiL,IAAI3I,EAAE0Z,MAAM1Z,GAAGA,EAAEA,EAAEotF,QAAQ,OAAO1vF,CAAC,CAAC,SAAS7B,EAAE6B,EAAEsC,GAAsC,OAAnCtC,EAAEqn1C,GAAGrn1C,EAAEsC,IAAK0Z,MAAM,EAAEhc,EAAE0vF,QAAQ,KAAY1vF,CAAC,CAAC,SAAS0B,EAAEY,EAAEzC,EAAE8B,GAAa,OAAVW,EAAE0Z,MAAMra,EAAM3B,EAA6C,QAAjB2B,EAAEW,EAAEy40C,YAA6Bp50C,EAAEA,EAAEqa,OAAQnc,GAAGyC,EAAE82C,OAAO,EAAEv5C,GAAG8B,GAAEW,EAAE82C,OAAO,EAASv5C,IAArGyC,EAAE82C,OAAO,QAAQv5C,EAAqF,CAAC,SAASsB,EAAEmB,GACzd,OAD4dtC,GAC7f,OAAOsC,EAAEy40C,YAAYz40C,EAAE82C,OAAO,GAAU92C,CAAC,CAAC,SAASV,EAAE5B,EAAEsC,EAAEzC,EAAE8B,GAAG,OAAG,OAAOW,GAAG,IAAIA,EAAE8T,MAAW9T,EAAEgl1C,GAAGzn1C,EAAEG,EAAE0G,KAAK/E,IAAKlB,OAAOT,EAAEsC,KAAEA,EAAEnE,EAAEmE,EAAEzC,IAAKY,OAAOT,EAASsC,EAAC,CAAC,SAASI,EAAE1C,EAAEsC,EAAEzC,EAAE8B,GAAG,IAAID,EAAE7B,EAAE0L,KAAK,OAAG7J,IAAIkwB,EAAUxvB,EAAEpC,EAAEsC,EAAEzC,EAAEosC,MAAMjN,SAASr9B,EAAE9B,EAAEgkB,KAAQ,OAAOvhB,IAAIA,EAAE6umC,cAAczvmC,GAAG,iBAAkBA,GAAG,OAAOA,GAAGA,EAAEm06B,WAAWgzU,GAAIs+F,GAAGzl1C,KAAKY,EAAEiJ,QAAa5J,EAAExD,EAAEmE,EAAEzC,EAAEosC,QAASrL,IAAIkmzC,GAAG9m1C,EAAEsC,EAAEzC,GAAG8B,EAAElB,OAAOT,EAAE2B,KAAEA,EAAE4l1C,GAAG1n1C,EAAE0L,KAAK1L,EAAEgkB,IAAIhkB,EAAEosC,MAAM,KAAKjsC,EAAE0G,KAAK/E,IAAKi/B,IAAIkmzC,GAAG9m1C,EAAEsC,EAAEzC,GAAG8B,EAAElB,OAAOT,EAAS2B,EAAC,CAAC,SAASH,EAAExB,EAAEsC,EAAEzC,EAAE8B,GAAG,OAAG,OAAOW,GAAG,IAAIA,EAAE8T,KACjf9T,EAAEw40C,UAAUyB,gBAAgB180C,EAAE080C,eAAej60C,EAAEw40C,UAAUl1xC,iBAAiB/lD,EAAE+lD,iBAAsBtjD,EAAEkl1C,GAAG3n1C,EAAEG,EAAE0G,KAAK/E,IAAKlB,OAAOT,EAAEsC,KAAEA,EAAEnE,EAAEmE,EAAEzC,EAAEm/B,UAAU,KAAMv+B,OAAOT,EAASsC,EAAC,CAAC,SAASF,EAAEpC,EAAEsC,EAAEzC,EAAE8B,EAAED,GAAG,OAAG,OAAOY,GAAG,IAAIA,EAAE8T,MAAW9T,EAAEml1C,GAAG5n1C,EAAEG,EAAE0G,KAAK/E,EAAED,IAAKjB,OAAOT,EAAEsC,KAAEA,EAAEnE,EAAEmE,EAAEzC,IAAKY,OAAOT,EAASsC,EAAC,CAAC,SAAS4C,EAAElF,EAAEsC,EAAEzC,GAAG,GAAG,iBAAkByC,GAAG,KAAKA,GAAG,iBAAkBA,EAAE,OAAOA,EAAEgl1C,GAAG,GAAGhl1C,EAAEtC,EAAE0G,KAAK7G,IAAKY,OAAOT,EAAEsC,EAAE,GAAG,iBAAkBA,GAAG,OAAOA,EAAE,CAAC,OAAOA,EAAEuz6B,UAAU,KAAK9j5B,EAAG,OAAOlyB,EAAE0n1C,GAAGjl1C,EAAEiJ,KAAKjJ,EAAEuhB,IAAIvhB,EAAE2pC,MAAM,KAAKjsC,EAAE0G,KAAK7G,IACjf+gC,IAAIkmzC,GAAG9m1C,EAAE,KAAKsC,GAAGzC,EAAEY,OAAOT,EAAEH,EAAE,KAAK2zB,EAAG,OAAOlxB,EAAEkl1C,GAAGll1C,EAAEtC,EAAE0G,KAAK7G,IAAKY,OAAOT,EAAEsC,EAAE,KAAKumvC,EAAiB,OAAO3jvC,EAAElF,GAAE2B,EAAnBW,EAAEmv9B,OAAmBnv9B,EAAEm+/B,UAAU5ggC,GAAG,GAAG6pvC,GAAGpnvC,IAAIymvC,EAAGzmvC,GAAG,OAAOA,EAAEml1C,GAAGnl1C,EAAEtC,EAAE0G,KAAK7G,EAAE,OAAQY,OAAOT,EAAEsC,EAAE4k1C,GAAGln1C,EAAEsC,EAAE,CAAC,OAAO,IAAI,CAAC,SAASvD,EAAEiB,EAAEsC,EAAEzC,EAAE8B,GAAG,IAAIxD,EAAE,OAAOmE,EAAEA,EAAEuhB,IAAI,KAAK,GAAG,iBAAkBhkB,GAAG,KAAKA,GAAG,iBAAkBA,EAAE,OAAO,OAAO1B,EAAE,KAAKyD,EAAE5B,EAAEsC,EAAE,GAAGzC,EAAE8B,GAAG,GAAG,iBAAkB9B,GAAG,OAAOA,EAAE,CAAC,OAAOA,EAAEg26B,UAAU,KAAK9j5B,EAAG,OAAOlyB,EAAEgkB,MAAM1lB,EAAEuE,EAAE1C,EAAEsC,EAAEzC,EAAE8B,GAAG,KAAK,KAAK6xB,EAAG,OAAO3zB,EAAEgkB,MAAM1lB,EAAEqD,EAAExB,EAAEsC,EAAEzC,EAAE8B,GAAG,KAAK,KAAKknvC,EAAG,OAAiB9pvC,EAAEiB,EACpfsC,GADwenE,EAAE0B,EAAE4x9B,OACxe5x9B,EAAE4ggC,UAAU9+/B,GAAG,GAAG+nvC,GAAG7pvC,IAAIkpvC,EAAGlpvC,GAAG,OAAO,OAAO1B,EAAE,KAAKiE,EAAEpC,EAAEsC,EAAEzC,EAAE8B,EAAE,MAAMul1C,GAAGln1C,EAAEH,EAAE,CAAC,OAAO,IAAI,CAAC,SAASmC,EAAEhC,EAAEsC,EAAEzC,EAAE8B,EAAExD,GAAG,GAAG,iBAAkBwD,GAAG,KAAKA,GAAG,iBAAkBA,EAAE,OAAwBC,EAAEU,EAAnBtC,EAAEA,EAAEmC,IAAItC,IAAI,KAAW,GAAG8B,EAAExD,GAAG,GAAG,iBAAkBwD,GAAG,OAAOA,EAAE,CAAC,OAAOA,EAAEk06B,UAAU,KAAK9j5B,EAAG,OAA2CrvB,EAAEJ,EAAtCtC,EAAEA,EAAEmC,IAAI,OAAOR,EAAEkiB,IAAIhkB,EAAE8B,EAAEkiB,MAAM,KAAWliB,EAAExD,GAAG,KAAKq1B,EAAG,OAA2ChyB,EAAEc,EAAtCtC,EAAEA,EAAEmC,IAAI,OAAOR,EAAEkiB,IAAIhkB,EAAE8B,EAAEkiB,MAAM,KAAWliB,EAAExD,GAAG,KAAK0qvC,EAAiB,OAAO7mvC,EAAEhC,EAAEsC,EAAEzC,GAAE6B,EAAvBC,EAAE8v9B,OAAuB9v9B,EAAE8+/B,UAAUtigC,GAAG,GAAGurvC,GAAG/nvC,IAAIonvC,EAAGpnvC,GAAG,OAAwBS,EAAEE,EAAnBtC,EAAEA,EAAEmC,IAAItC,IAAI,KAAW8B,EAAExD,EAAE,MAAM+o1C,GAAG5k1C,EAAEX,EAAE,CAAC,OAAO,IAAI,CAC9f,SAAStD,EAAEF,EAAEgD,EAAES,EAAEc,GAAG,IAAI,IAAIlB,EAAE,KAAKY,EAAE,KAAKf,EAAEF,EAAEoB,EAAEpB,EAAE,EAAE8B,EAAE,KAAK,OAAO5B,GAAGkB,EAAEX,EAAEvC,OAAOkD,IAAI,CAAClB,EAAE2a,MAAMzZ,GAAGU,EAAE5B,EAAEA,EAAE,MAAM4B,EAAE5B,EAAEquF,QAAQ,IAAIrxF,EAAEU,EAAEZ,EAAEkD,EAAEO,EAAEW,GAAGG,GAAG,GAAG,OAAOrE,EAAE,CAAC,OAAOgD,IAAIA,EAAE4B,GAAG,KAAK,CAACjD,GAAGqB,GAAG,OAAOhD,EAAE080C,WAAWz40C,EAAEnE,EAAEkD,GAAGF,EAAEO,EAAErD,EAAE8C,EAAEoB,GAAG,OAAOH,EAAEZ,EAAEnD,EAAE+D,EAAEstF,QAAQrxF,EAAE+D,EAAE/D,EAAEgD,EAAE4B,CAAC,CAAC,GAAGV,IAAIX,EAAEvC,OAAO,OAAOQ,EAAE1B,EAAEkD,GAAGwB,IAAG2i1C,GAAGrn1C,EAAEoE,GAAGf,EAAE,GAAG,OAAOH,EAAE,CAAC,KAAKkB,EAAEX,EAAEvC,OAAOkD,IAAkB,QAAdlB,EAAE6D,EAAE/G,EAAEyD,EAAEW,GAAGG,MAAcvB,EAAEO,EAAEL,EAAEF,EAAEoB,GAAG,OAAOH,EAAEZ,EAAEH,EAAEe,EAAEstF,QAAQruF,EAAEe,EAAEf,GAAc,OAAXwB,IAAG2i1C,GAAGrn1C,EAAEoE,GAAUf,CAAC,CAAC,IAAIH,EAAEM,EAAExD,EAAEkD,GAAGkB,EAAEX,EAAEvC,OAAOkD,IAAsB,QAAlBU,EAAEjB,EAAEX,EAAElD,EAAEoE,EAAEX,EAAEW,GAAGG,MAAc1C,GAAG,OAAOiD,EAAE830C,WAAW150C,EAAE4iB,OAAO,OACvfhhB,EAAE4gB,IAAIthB,EAAEU,EAAE4gB,KAAK1iB,EAAEO,EAAEuB,EAAE9B,EAAEoB,GAAG,OAAOH,EAAEZ,EAAEyB,EAAEb,EAAEstF,QAAQzsF,EAAEb,EAAEa,GAAuD,OAApDjD,GAAGqB,EAAE6iB,SAAQ,SAASlkB,GAAG,OAAOsC,EAAEnE,EAAE6B,EAAE,IAAG6C,IAAG2i1C,GAAGrn1C,EAAEoE,GAAUf,CAAC,CAAC,SAASpD,EAAED,EAAEgD,EAAES,EAAEc,GAAG,IAAIlB,EAAEunvC,EAAGnnvC,GAAG,GAAG,mBAAoBJ,EAAE,MAAMglB,MAAM1kB,EAAE,MAAkB,GAAG,OAAfF,EAAEJ,EAAE5C,KAAKgD,IAAc,MAAM4kB,MAAM1kB,EAAE,MAAM,IAAI,IAAIT,EAAEG,EAAE,KAAKY,EAAEjB,EAAEoB,EAAEpB,EAAE,EAAE8B,EAAE,KAAK5E,EAAEuD,EAAE7B,OAAO,OAAOqC,IAAI/D,EAAE6B,KAAKqC,IAAIlE,EAAEuD,EAAE7B,OAAO,CAACqC,EAAE4Z,MAAMzZ,GAAGU,EAAEb,EAAEA,EAAE,MAAMa,EAAEb,EAAEstF,QAAQ,IAAItxF,EAAEW,EAAEZ,EAAEiE,EAAE/D,EAAE8B,MAAMuC,GAAG,GAAG,OAAOtE,EAAE,CAAC,OAAOgE,IAAIA,EAAEa,GAAG,KAAK,CAACjD,GAAGoC,GAAG,OAAOhE,EAAE280C,WAAWz40C,EAAEnE,EAAEiE,GAAGjB,EAAEO,EAAEtD,EAAE+C,EAAEoB,GAAG,OAAOlB,EAAEG,EAAEpD,EAAEiD,EAAEquF,QAAQtxF,EAAEiD,EAAEjD,EAAEgE,EAAEa,CAAC,CAAC,GAAG5E,EAAE6B,KAAK,OAAOL,EAAE1B,EACzfiE,GAAGS,IAAG2i1C,GAAGrn1C,EAAEoE,GAAGf,EAAE,GAAG,OAAOY,EAAE,CAAC,MAAM/D,EAAE6B,KAAKqC,IAAIlE,EAAEuD,EAAE7B,OAAwB,QAAjB1B,EAAE6G,EAAE/G,EAAEE,EAAE8B,MAAMuC,MAAcvB,EAAEO,EAAErD,EAAE8C,EAAEoB,GAAG,OAAOlB,EAAEG,EAAEnD,EAAEgD,EAAEquF,QAAQrxF,EAAEgD,EAAEhD,GAAc,OAAXwE,IAAG2i1C,GAAGrn1C,EAAEoE,GAAUf,CAAC,CAAC,IAAIY,EAAET,EAAExD,EAAEiE,IAAI/D,EAAE6B,KAAKqC,IAAIlE,EAAEuD,EAAE7B,OAA4B,QAArB1B,EAAE2D,EAAEI,EAAEjE,EAAEoE,EAAElE,EAAE8B,MAAMuC,MAAc1C,GAAG,OAAO3B,EAAE080C,WAAW340C,EAAE6hB,OAAO,OAAO5lB,EAAEwlB,IAAIthB,EAAElE,EAAEwlB,KAAK1iB,EAAEO,EAAErD,EAAE8C,EAAEoB,GAAG,OAAOlB,EAAEG,EAAEnD,EAAEgD,EAAEquF,QAAQrxF,EAAEgD,EAAEhD,GAAuD,OAApD2B,GAAGoC,EAAE8hB,SAAQ,SAASlkB,GAAG,OAAOsC,EAAEnE,EAAE6B,EAAE,IAAG6C,IAAG2i1C,GAAGrn1C,EAAEoE,GAAUf,CAAC,CAG3T,OAH4T,SAASkD,EAAE1E,EAAE2B,EAAED,EAAEE,GAAkF,GAA/E,iBAAkBF,GAAG,OAAOA,GAAGA,EAAE6J,OAAOqmB,GAAI,OAAOlwB,EAAEmiB,MAAMniB,EAAEA,EAAEuqC,MAAMjN,UAAa,iBAAkBt9B,GAAG,OAAOA,EAAE,CAAC,OAAOA,EAAEm06B,UAAU,KAAK9j5B,EAAG/xB,EAAE,CAAC,IAAI,IAAI0C,EAC7hBhB,EAAEmiB,IAAIriB,EAAEG,EAAE,OAAOH,GAAG,CAAC,GAAGA,EAAEqiB,MAAMnhB,EAAE,CAAU,IAATA,EAAEhB,EAAE6J,QAAYqmB,GAAI,GAAG,IAAIpwB,EAAE4U,IAAI,CAACvW,EAAEG,EAAEwB,EAAEkuF,UAAS/tF,EAAExD,EAAEqD,EAAEE,EAAEuqC,MAAMjN,WAAYv+B,OAAOT,EAAEA,EAAE2B,EAAE,MAAM3B,CAAC,OAAO,GAAGwB,EAAE2vmC,cAAczumC,GAAG,iBAAkBA,GAAG,OAAOA,GAAGA,EAAEmz6B,WAAWgzU,GAAIs+F,GAAGzk1C,KAAKlB,EAAE+J,KAAK,CAAC1L,EAAEG,EAAEwB,EAAEkuF,UAAS/tF,EAAExD,EAAEqD,EAAEE,EAAEuqC,QAASrL,IAAIkmzC,GAAG9m1C,EAAEwB,EAAEE,GAAGC,EAAElB,OAAOT,EAAEA,EAAE2B,EAAE,MAAM3B,CAAC,CAACH,EAAEG,EAAEwB,GAAG,KAAK,CAAMc,EAAEtC,EAAEwB,GAAGA,EAAEA,EAAEkuF,OAAO,CAAChuF,EAAE6J,OAAOqmB,IAAIjwB,EAAE8l1C,GAAG/l1C,EAAEuqC,MAAMjN,SAASh/B,EAAE0G,KAAK9E,EAAEF,EAAEmiB,MAAOpjB,OAAOT,EAAEA,EAAE2B,KAAIC,EAAE2l1C,GAAG7l1C,EAAE6J,KAAK7J,EAAEmiB,IAAIniB,EAAEuqC,MAAM,KAAKjsC,EAAE0G,KAAK9E,IAAKg/B,IAAIkmzC,GAAG9m1C,EAAE2B,EAAED,GAAGE,EAAEnB,OAAOT,EAAEA,EAAE4B,EAAE,CAAC,OAAOT,EAAEnB,GAAG,KAAKwzB,EAAGxzB,EAAE,CAAC,IAAIwB,EAAEE,EAAEmiB,IAAI,OACzfliB,GAAG,CAAC,GAAGA,EAAEkiB,MAAMriB,EAAE,IAAG,IAAIG,EAAEyU,KAAKzU,EAAEm50C,UAAUyB,gBAAgB760C,EAAE660C,eAAe560C,EAAEm50C,UAAUl1xC,iBAAiBlkD,EAAEkkD,eAAe,CAAC/lD,EAAEG,EAAE2B,EAAE+tF,UAAS/tF,EAAExD,EAAEwD,EAAED,EAAEs9B,UAAU,KAAMv+B,OAAOT,EAAEA,EAAE2B,EAAE,MAAM3B,CAAC,CAAMH,EAAEG,EAAE2B,GAAG,KAAK,CAAMW,EAAEtC,EAAE2B,GAAGA,EAAEA,EAAE+tF,OAAO,EAAC/tF,EAAE6l1C,GAAG9l1C,EAAE1B,EAAE0G,KAAK9E,IAAKnB,OAAOT,EAAEA,EAAE2B,CAAC,CAAC,OAAOR,EAAEnB,GAAG,KAAK6ovC,EAAG,OAAiBnkvC,EAAE1E,EAAE2B,GAAdH,EAAEE,EAAE+v9B,OAAc/v9B,EAAE++/B,UAAU7+/B,GAAG,GAAG8nvC,GAAGhovC,GAAG,OAAOrD,EAAE2B,EAAE2B,EAAED,EAAEE,GAAG,GAAGmnvC,EAAGrnvC,GAAG,OAAOtD,EAAE4B,EAAE2B,EAAED,EAAEE,GAAGsl1C,GAAGln1C,EAAE0B,EAAE,CAAC,MAAM,iBAAkBA,GAAG,KAAKA,GAAG,iBAAkBA,GAAGA,EAAE,GAAGA,EAAE,OAAOC,GAAG,IAAIA,EAAEyU,KAAKvW,EAAEG,EAAE2B,EAAE+tF,UAAS/tF,EAAExD,EAAEwD,EAAED,IAAKjB,OAAOT,EAAEA,EAAE2B,IACnf9B,EAAEG,EAAE2B,IAAGA,EAAE2l1C,GAAG5l1C,EAAE1B,EAAE0G,KAAK9E,IAAKnB,OAAOT,EAAEA,EAAE2B,GAAGR,EAAEnB,IAAIH,EAAEG,EAAE2B,EAAE,CAAS,CAAC,IAAI+l1C,GAAGN,IAAG,GAAIO,GAAGP,IAAG,GAAIQ,GAAG5D,GAAG,MAAM6D,GAAG,KAAKC,GAAG,KAAKC,GAAG,KAAK,SAASC,KAAKD,GAAGD,GAAGD,GAAG,IAAI,CAAC,SAASI,GAAGjo1C,GAAG,IAAIsC,EAAEsl1C,GAAG7ozC,QAAQr7B,GAAEkk1C,IAAI5n1C,EAAEq50C,cAAc/20C,CAAC,CAAC,SAAS4l1C,GAAGlo1C,EAAEsC,EAAEzC,GAAG,KAAK,OAAOG,GAAG,CAAC,IAAI2B,EAAE3B,EAAE+60C,UAA+H,IAApH/60C,EAAEmo1C,WAAW7l1C,KAAKA,GAAGtC,EAAEmo1C,YAAY7l1C,EAAE,OAAOX,IAAIA,EAAEwm1C,YAAY7l1C,IAAI,OAAOX,IAAIA,EAAEwm1C,WAAW7l1C,KAAKA,IAAIX,EAAEwm1C,YAAY7l1C,GAAMtC,IAAIH,EAAE,MAAMG,EAAEA,EAAES,MAAM,CAAC,CACnZ,SAAS8qR,GAAGvrR,EAAEsC,GAAGul1C,GAAG7n1C,EAAE+n1C,GAAGD,GAAG,KAAsB,QAAjB9n1C,EAAEA,EAAEi7J,eAAuB,OAAOj7J,EAAEoo1C,eAAe,IAAKpo1C,EAAEqo1C,MAAM/l1C,KAAKsjkC,IAAG,GAAI5lkC,EAAEoo1C,aAAa,KAAK,CAAC,SAASxlC,GAAG5izC,GAAG,IAAIsC,EAAEtC,EAAEq50C,cAAc,GAAG0O,KAAK/n1C,EAAE,GAAGA,EAAE,CAACmsC,QAAQnsC,EAAEso1C,cAAchm1C,EAAEvC,KAAK,MAAM,OAAO+n1C,GAAG,CAAC,GAAG,OAAOD,GAAG,MAAMrh0C,MAAM1kB,EAAE,MAAMgm1C,GAAG9n1C,EAAE6n1C,GAAG5srC,aAAa,CAACotrC,MAAM,EAAED,aAAapo1C,EAAE,MAAM8n1C,GAAGA,GAAG/n1C,KAAKC,EAAE,OAAOsC,CAAC,CAAC,IAAIim1C,GAAG,KAAK,SAASC,GAAGxo1C,GAAG,OAAOuo1C,GAAGA,GAAG,CAACvo1C,GAAGuo1C,GAAG1n1C,KAAKb,EAAE,CACvY,SAAS21sB,GAAG31sB,EAAEsC,EAAEzC,EAAE8B,GAAG,IAAIxD,EAAEmE,EAAEkjO,YAA+E,OAAnE,OAAOrnO,GAAG0B,EAAEE,KAAKF,EAAE2o1C,GAAGlm1C,KAAKzC,EAAEE,KAAK5B,EAAE4B,KAAK5B,EAAE4B,KAAKF,GAAGyC,EAAEkjO,YAAY3lO,EAAS4o1C,GAAGzo1C,EAAE2B,EAAE,CAAC,SAAS8m1C,GAAGzo1C,EAAEsC,GAAGtC,EAAEqo1C,OAAO/l1C,EAAE,IAAIzC,EAAEG,EAAE+60C,UAAqC,IAA3B,OAAOl70C,IAAIA,EAAEwo1C,OAAO/l1C,GAAGzC,EAAEG,EAAMA,EAAEA,EAAES,OAAO,OAAOT,GAAGA,EAAEmo1C,YAAY7l1C,EAAgB,QAAdzC,EAAEG,EAAE+60C,aAAqBl70C,EAAEso1C,YAAY7l1C,GAAGzC,EAAEG,EAAEA,EAAEA,EAAES,OAAO,OAAO,IAAIZ,EAAEuW,IAAIvW,EAAEi70C,UAAU,IAAI,CAAC,IAAI4N,IAAG,EAAG,SAASC,GAAG3o1C,GAAGA,EAAE4o1C,YAAY,CAACC,UAAU7o1C,EAAE600C,cAAciU,gBAAgB,KAAKC,eAAe,KAAKC,OAAO,CAAC736B,QAAQ,KAAK3rM,YAAY,KAAK6inC,MAAM,GAAG75sC,QAAQ,KAAK,CAC/e,SAASy6sC,GAAGjp1C,EAAEsC,GAAGtC,EAAEA,EAAE4o1C,YAAYtm1C,EAAEsm1C,cAAc5o1C,IAAIsC,EAAEsm1C,YAAY,CAACC,UAAU7o1C,EAAE6o1C,UAAUC,gBAAgB9o1C,EAAE8o1C,gBAAgBC,eAAe/o1C,EAAE+o1C,eAAeC,OAAOhp1C,EAAEgp1C,OAAOx6sC,QAAQxuI,EAAEwuI,SAAS,CAAC,SAAS06sC,GAAGlp1C,EAAEsC,GAAG,MAAM,CAAC6m1C,UAAUnp1C,EAAEop1C,KAAK9m1C,EAAE8T,IAAI,EAAE0d,QAAQ,KAAK5L,SAAS,KAAKnoB,KAAK,KAAK,CACtR,SAASsp1C,GAAGrp1C,EAAEsC,EAAEzC,GAAG,IAAI8B,EAAE3B,EAAE4o1C,YAAY,GAAG,OAAOjn1C,EAAE,OAAO,KAAgB,GAAXA,EAAEA,EAAEqn1C,OAAU,IAAO,EAAF/k1C,IAAK,CAAC,IAAI9F,EAAEwD,EAAEwva,QAA+D,OAAvD,OAAOhza,EAAEmE,EAAEvC,KAAKuC,GAAGA,EAAEvC,KAAK5B,EAAE4B,KAAK5B,EAAE4B,KAAKuC,GAAGX,EAAEwva,QAAQ7ua,EAASmm1C,GAAGzo1C,EAAEH,EAAE,CAAoF,OAAnE,QAAhB1B,EAAEwD,EAAE6jO,cAAsBljO,EAAEvC,KAAKuC,EAAEkm1C,GAAG7m1C,KAAKW,EAAEvC,KAAK5B,EAAE4B,KAAK5B,EAAE4B,KAAKuC,GAAGX,EAAE6jO,YAAYljO,EAASmm1C,GAAGzo1C,EAAEH,EAAE,CAAC,SAASyp1C,GAAGtp1C,EAAEsC,EAAEzC,GAAmB,GAAG,QAAnByC,EAAEA,EAAEsm1C,eAA0Btm1C,EAAEA,EAAE0m1C,OAAO,IAAO,QAAFnp1C,IAAY,CAAC,IAAI8B,EAAEW,EAAE+l1C,MAAwBxo1C,GAAlB8B,GAAG3B,EAAE470C,aAAkBt50C,EAAE+l1C,MAAMxo1C,EAAEmlB,GAAGhlB,EAAEH,EAAE,CAAC,CACrZ,SAAS0p1C,GAAGvp1C,EAAEsC,GAAG,IAAIzC,EAAEG,EAAE4o1C,YAAYjn1C,EAAE3B,EAAE+60C,UAAU,GAAG,OAAOp50C,GAAoB9B,KAAhB8B,EAAEA,EAAEin1C,aAAmB,CAAC,IAAIzq1C,EAAE,KAAKuD,EAAE,KAAyB,GAAG,QAAvB7B,EAAEA,EAAEip1C,iBAA4B,CAAC,EAAE,CAAC,IAAI3n1C,EAAE,CAACgo1C,UAAUtp1C,EAAEsp1C,UAAUC,KAAKvp1C,EAAEup1C,KAAKhz0C,IAAIvW,EAAEuW,IAAI0d,QAAQj0B,EAAEi0B,QAAQ5L,SAASroB,EAAEqoB,SAASnoB,KAAK,MAAM,OAAO2B,EAAEvD,EAAEuD,EAAEP,EAAEO,EAAEA,EAAE3B,KAAKoB,EAAEtB,EAAEA,EAAEE,IAAI,OAAO,OAAOF,GAAG,OAAO6B,EAAEvD,EAAEuD,EAAEY,EAAEZ,EAAEA,EAAE3B,KAAKuC,CAAC,MAAMnE,EAAEuD,EAAEY,EAAiH,OAA/GzC,EAAE,CAACgp1C,UAAUln1C,EAAEkn1C,UAAUC,gBAAgB3q1C,EAAE4q1C,eAAern1C,EAAEsn1C,OAAOrn1C,EAAEqn1C,OAAOx6sC,QAAQ7sI,EAAE6sI,cAASxuI,EAAE4o1C,YAAY/o1C,EAAQ,CAAoB,QAAnBG,EAAEH,EAAEkp1C,gBAAwBlp1C,EAAEip1C,gBAAgBxm1C,EAAEtC,EAAED,KACnfuC,EAAEzC,EAAEkp1C,eAAezm1C,CAAC,CACpB,SAASkn1C,GAAGxp1C,EAAEsC,EAAEzC,EAAE8B,GAAG,IAAIxD,EAAE6B,EAAE4o1C,YAAYF,IAAG,EAAG,IAAIhn1C,EAAEvD,EAAE2q1C,gBAAgB3n1C,EAAEhD,EAAE4q1C,eAAenn1C,EAAEzD,EAAE6q1C,OAAO736B,QAAQ,GAAG,OAAOvva,EAAE,CAACzD,EAAE6q1C,OAAO736B,QAAQ,KAAK,IAAIzua,EAAEd,EAAEJ,EAAEkB,EAAE3C,KAAK2C,EAAE3C,KAAK,KAAK,OAAOoB,EAAEO,EAAEF,EAAEL,EAAEpB,KAAKyB,EAAEL,EAAEuB,EAAE,IAAIN,EAAEpC,EAAE+60C,UAAU,OAAO340C,IAAoBR,GAAhBQ,EAAEA,EAAEwm1C,aAAgBG,kBAAmB5n1C,IAAI,OAAOS,EAAEQ,EAAE0m1C,gBAAgBtn1C,EAAEI,EAAE7B,KAAKyB,EAAEY,EAAE2m1C,eAAerm1C,EAAG,CAAC,GAAG,OAAOhB,EAAE,CAAC,IAAIwD,EAAE/G,EAAE0q1C,UAA6B,IAAnB1n1C,EAAE,EAAEiB,EAAEZ,EAAEkB,EAAE,KAAKd,EAAEF,IAAI,CAAC,IAAI3C,EAAE6C,EAAEwn1C,KAAKpn1C,EAAEJ,EAAEun1C,UAAU,IAAIxn1C,EAAE5C,KAAKA,EAAE,CAAC,OAAOqD,IAAIA,EAAEA,EAAErC,KAAK,CAACop1C,UAAUnn1C,EAAEon1C,KAAK,EAAEhz0C,IAAIxU,EAAEwU,IAAI0d,QAAQlyB,EAAEkyB,QAAQ5L,SAAStmB,EAAEsmB,SACvfnoB,KAAK,OAAOC,EAAE,CAAC,IAAI3B,EAAE2B,EAAE5B,EAAEwD,EAAU,OAAR7C,EAAEuD,EAAEN,EAAEnC,EAASzB,EAAEgY,KAAK,KAAK,EAAc,GAAG,mBAAf/X,EAAED,EAAE01B,SAAiC,CAAC5uB,EAAE7G,EAAEO,KAAKoD,EAAEkD,EAAEnG,GAAG,MAAMiB,CAAC,CAACkF,EAAE7G,EAAE,MAAM2B,EAAE,KAAK,EAAE3B,EAAE+6C,OAAe,MAAT/6C,EAAE+6C,MAAa,IAAI,KAAK,EAAsD,GAAG,OAA3Cr6C,EAAE,mBAAdV,EAAED,EAAE01B,SAAgCz1B,EAAEO,KAAKoD,EAAEkD,EAAEnG,GAAGV,GAA0B,MAAM2B,EAAEkF,EAAErB,EAAE,CAAC,EAAEqB,EAAEnG,GAAG,MAAMiB,EAAE,KAAK,EAAE0o1C,IAAG,EAAG,CAAC,OAAO9m1C,EAAEsmB,UAAU,IAAItmB,EAAEwn1C,OAAOpp1C,EAAEo5C,OAAO,GAAe,QAAZr6C,EAAEZ,EAAEqwI,SAAiBrwI,EAAEqwI,QAAQ,CAAC5sI,GAAG7C,EAAE8B,KAAKe,GAAG,MAAMI,EAAE,CAACmn1C,UAAUnn1C,EAAEon1C,KAAKrq1C,EAAEqX,IAAIxU,EAAEwU,IAAI0d,QAAQlyB,EAAEkyB,QAAQ5L,SAAStmB,EAAEsmB,SAASnoB,KAAK,MAAM,OAAOqC,GAAGZ,EAAEY,EAAEJ,EAAEU,EAAEwC,GAAG9C,EAAEA,EAAErC,KAAKiC,EAAEb,GAAGpC,EAC3e,GAAG,QAAZ6C,EAAEA,EAAE7B,MAAiB,IAAsB,QAAnB6B,EAAEzD,EAAE6q1C,OAAO736B,SAAiB,MAAevva,GAAJ7C,EAAE6C,GAAM7B,KAAKhB,EAAEgB,KAAK,KAAK5B,EAAE4q1C,eAAehq1C,EAAEZ,EAAE6q1C,OAAO736B,QAAQ,KAAI,CAAsG,GAA5F,OAAO/ua,IAAIM,EAAEwC,GAAG/G,EAAE0q1C,UAAUnm1C,EAAEvE,EAAE2q1C,gBAAgBtn1C,EAAErD,EAAE4q1C,eAAe3m1C,EAA4B,QAA1BE,EAAEnE,EAAE6q1C,OAAOxjnC,aAAwB,CAACrnO,EAAEmE,EAAE,GAAGnB,GAAGhD,EAAEir1C,KAAKjr1C,EAAEA,EAAE4B,WAAW5B,IAAImE,EAAE,MAAM,OAAOZ,IAAIvD,EAAE6q1C,OAAOX,MAAM,GAAGxngB,IAAI1/0B,EAAEnB,EAAEqo1C,MAAMln1C,EAAEnB,EAAE600C,cAAc3v0C,CAAC,CAAC,CAC9V,SAASq+qC,GAAGvjrC,EAAEsC,EAAEzC,GAA8B,GAA3BG,EAAEsC,EAAEksI,QAAQlsI,EAAEksI,QAAQ,KAAQ,OAAOxuI,EAAE,IAAIsC,EAAE,EAAEA,EAAEtC,EAAEX,OAAOiD,IAAI,CAAC,IAAIX,EAAE3B,EAAEsC,GAAGnE,EAAEwD,EAAEumB,SAAS,GAAG,OAAO/pB,EAAE,CAAqB,GAApBwD,EAAEumB,SAAS,KAAKvmB,EAAE9B,EAAK,mBAAoB1B,EAAE,MAAMqoB,MAAM1kB,EAAE,IAAI3D,IAAIA,EAAES,KAAK+C,EAAE,CAAC,CAAC,CAAC,IAAI8n1C,GAAG,CAAC,EAAEC,GAAG1F,GAAGyF,IAAIp8Y,GAAG22Y,GAAGyF,IAAItjT,GAAG69S,GAAGyF,IAAI,SAASE,GAAG3p1C,GAAG,GAAGA,IAAIyp1C,GAAG,MAAMjj0C,MAAM1kB,EAAE,MAAM,OAAO9B,CAAC,CACnS,SAAS4p1C,GAAG5p1C,EAAEsC,GAAyC,OAAtCqB,GAAEwiiC,GAAG7jiC,GAAGqB,GAAE0p8B,GAAGrt8B,GAAG2D,GAAE+l1C,GAAGD,IAAIzp1C,EAAEsC,EAAEgmF,UAAmB,KAAK,EAAE,KAAK,GAAGhmF,GAAGA,EAAEA,EAAE+/F,iBAAiB//F,EAAEq30C,aAAa7nY,GAAG,KAAK,IAAI,MAAM,QAAkExv8B,EAAEwv8B,GAArCxv8B,GAAvBtC,EAAE,IAAIA,EAAEsC,EAAEo+B,WAAWp+B,GAAMq30C,cAAc,KAAK350C,EAAEA,EAAEi6D,SAAkBv2D,GAAEgm1C,IAAI/l1C,GAAE+l1C,GAAGpn1C,EAAE,CAAC,SAASun1C,KAAKnm1C,GAAEgm1C,IAAIhm1C,GAAE2p8B,IAAI3p8B,GAAEyiiC,GAAG,CAAC,SAAS2jT,GAAG9p1C,GAAG2p1C,GAAGxjT,GAAGpngC,SAAS,IAAIz8B,EAAEqn1C,GAAGD,GAAG3qzC,SAAal/B,EAAEiy8B,GAAGxv8B,EAAEtC,EAAEuL,MAAMjJ,IAAIzC,IAAI8D,GAAE0p8B,GAAGrt8B,GAAG2D,GAAE+l1C,GAAG7p1C,GAAG,CAAC,SAASkq1C,GAAG/p1C,GAAGqt8B,GAAGtu6B,UAAU/+B,IAAI0D,GAAEgm1C,IAAIhm1C,GAAE2p8B,IAAI,CAAC,IAAIhq8B,GAAE2g1C,GAAG,GACxZ,SAASgG,GAAGhq1C,GAAG,IAAI,IAAIsC,EAAEtC,EAAE,OAAOsC,GAAG,CAAC,GAAG,KAAKA,EAAE8T,IAAI,CAAC,IAAIvW,EAAEyC,EAAEuy0C,cAAc,GAAG,OAAOh10C,IAAmB,QAAfA,EAAEA,EAAEm70C,aAAqB,OAAOn70C,EAAE2O,MAAM,OAAO3O,EAAE2O,MAAM,OAAOlM,CAAC,MAAM,GAAG,KAAKA,EAAE8T,UAAK,IAAS9T,EAAEmk1C,cAAcwD,aAAa,GAAG,IAAa,IAAR3n1C,EAAE82C,OAAW,OAAO92C,OAAO,GAAG,OAAOA,EAAE4mF,MAAM,CAAC5mF,EAAE4mF,MAAMzoF,OAAO6B,EAAEA,EAAEA,EAAE4mF,MAAM,QAAQ,CAAC,GAAG5mF,IAAItC,EAAE,MAAM,KAAK,OAAOsC,EAAEotF,SAAS,CAAC,GAAG,OAAOptF,EAAE7B,QAAQ6B,EAAE7B,SAAST,EAAE,OAAO,KAAKsC,EAAEA,EAAE7B,MAAM,CAAC6B,EAAEotF,QAAQjvF,OAAO6B,EAAE7B,OAAO6B,EAAEA,EAAEotF,OAAO,CAAC,OAAO,IAAI,CAAC,IAAIw6vC,GAAG,GACrc,SAASC,KAAK,IAAI,IAAInq1C,EAAE,EAAEA,EAAEkq1C,GAAG7q1C,OAAOW,IAAIkq1C,GAAGlq1C,GAAGoq1C,8BAA8B,KAAKF,GAAG7q1C,OAAO,CAAC,CAAC,IAAIgr1C,GAAGx5zC,EAAG8kzC,uBAAuB2U,GAAGz5zC,EAAG2rzC,wBAAwB+N,GAAG,EAAE1l1C,GAAE,KAAKX,GAAE,KAAKlB,GAAE,KAAKwn1C,IAAG,EAAGC,IAAG,EAAGC,GAAG,EAAEC,GAAG,EAAE,SAAS7m1C,KAAI,MAAM0iB,MAAM1kB,EAAE,KAAM,CAAC,SAAS8o1C,GAAG5q1C,EAAEsC,GAAG,GAAG,OAAOA,EAAE,OAAM,EAAG,IAAI,IAAIzC,EAAE,EAAEA,EAAEyC,EAAEjD,QAAQQ,EAAEG,EAAEX,OAAOQ,IAAI,IAAImJ,GAAGhJ,EAAEH,GAAGyC,EAAEzC,IAAI,OAAM,EAAG,OAAM,CAAE,CAChW,SAASgr1C,GAAG7q1C,EAAEsC,EAAEzC,EAAE8B,EAAExD,EAAEuD,GAAyH,GAAtH6o1C,GAAG7o1C,EAAEmD,GAAEvC,EAAEA,EAAEuy0C,cAAc,KAAKvy0C,EAAEsm1C,YAAY,KAAKtm1C,EAAE+l1C,MAAM,EAAEgC,GAAGtrzC,QAAQ,OAAO/+B,GAAG,OAAOA,EAAE600C,cAAciW,GAAGC,GAAG/q1C,EAAEH,EAAE8B,EAAExD,GAAMss1C,GAAG,CAAC/o1C,EAAE,EAAE,EAAE,CAAY,GAAX+o1C,IAAG,EAAGC,GAAG,EAAK,IAAIhp1C,EAAE,MAAM8kB,MAAM1kB,EAAE,MAAMJ,GAAG,EAAEsB,GAAEkB,GAAE,KAAK5B,EAAEsm1C,YAAY,KAAKyB,GAAGtrzC,QAAQiszC,GAAGhr1C,EAAEH,EAAE8B,EAAExD,EAAE,OAAOss1C,GAAG,CAA+D,GAA9DJ,GAAGtrzC,QAAQkszC,GAAG3o1C,EAAE,OAAO4B,IAAG,OAAOA,GAAEnE,KAAKwq1C,GAAG,EAAEvn1C,GAAEkB,GAAEW,GAAE,KAAK2l1C,IAAG,EAAMlo1C,EAAE,MAAMkkB,MAAM1kB,EAAE,MAAM,OAAO9B,CAAC,CAAC,SAASkr1C,KAAK,IAAIlr1C,EAAE,IAAI0q1C,GAAQ,OAALA,GAAG,EAAS1q1C,CAAC,CAC/Y,SAASmr1C,KAAK,IAAInr1C,EAAE,CAAC600C,cAAc,KAAKgU,UAAU,KAAKuC,UAAU,KAAK5tyC,MAAM,KAAKz9C,KAAK,MAA8C,OAAxC,OAAOiD,GAAE6B,GAAEgw0C,cAAc7x0C,GAAEhD,EAAEgD,GAAEA,GAAEjD,KAAKC,EAASgD,EAAC,CAAC,SAASqo1C,KAAK,GAAG,OAAOnn1C,GAAE,CAAC,IAAIlE,EAAE6E,GAAEk20C,UAAU/60C,EAAE,OAAOA,EAAEA,EAAE600C,cAAc,IAAI,MAAM700C,EAAEkE,GAAEnE,KAAK,IAAIuC,EAAE,OAAOU,GAAE6B,GAAEgw0C,cAAc7x0C,GAAEjD,KAAK,GAAG,OAAOuC,EAAEU,GAAEV,EAAE4B,GAAElE,MAAM,CAAC,GAAG,OAAOA,EAAE,MAAMwmB,MAAM1kB,EAAE,MAAU9B,EAAE,CAAC600C,eAAP3w0C,GAAElE,GAAqB600C,cAAcgU,UAAU3k1C,GAAE2k1C,UAAUuC,UAAUln1C,GAAEkn1C,UAAU5tyC,MAAMt5C,GAAEs5C,MAAMz9C,KAAK,MAAM,OAAOiD,GAAE6B,GAAEgw0C,cAAc7x0C,GAAEhD,EAAEgD,GAAEA,GAAEjD,KAAKC,CAAC,CAAC,OAAOgD,EAAC,CACje,SAASso1C,GAAGtr1C,EAAEsC,GAAG,MAAM,mBAAoBA,EAAEA,EAAEtC,GAAGsC,CAAC,CACnD,SAASip1C,GAAGvr1C,GAAG,IAAIsC,EAAE+o1C,KAAKxr1C,EAAEyC,EAAEk7C,MAAM,GAAG,OAAO39C,EAAE,MAAM2mB,MAAM1kB,EAAE,MAAMjC,EAAE2r1C,oBAAoBxr1C,EAAE,IAAI2B,EAAEuC,GAAE/F,EAAEwD,EAAEyp1C,UAAU1p1C,EAAE7B,EAAEsxa,QAAQ,GAAG,OAAOzva,EAAE,CAAC,GAAG,OAAOvD,EAAE,CAAC,IAAIgD,EAAEhD,EAAE4B,KAAK5B,EAAE4B,KAAK2B,EAAE3B,KAAK2B,EAAE3B,KAAKoB,CAAC,CAACQ,EAAEyp1C,UAAUjt1C,EAAEuD,EAAE7B,EAAEsxa,QAAQ,IAAI,CAAC,GAAG,OAAOhza,EAAE,CAACuD,EAAEvD,EAAE4B,KAAK4B,EAAEA,EAAEkn1C,UAAU,IAAIjn1C,EAAET,EAAE,KAAKuB,EAAE,KAAKlB,EAAEE,EAAE,EAAE,CAAC,IAAIU,EAAEZ,EAAE4n1C,KAAK,IAAImB,GAAGno1C,KAAKA,EAAE,OAAOM,IAAIA,EAAEA,EAAE3C,KAAK,CAACqp1C,KAAK,EAAE9+wC,OAAO9oE,EAAE8oE,OAAOmhxC,cAAcjq1C,EAAEiq1C,cAAcC,WAAWlq1C,EAAEkq1C,WAAW3r1C,KAAK,OAAO4B,EAAEH,EAAEiq1C,cAAcjq1C,EAAEkq1C,WAAW1r1C,EAAE2B,EAAEH,EAAE8oE,YAAY,CAAC,IAAIplE,EAAE,CAACkk1C,KAAKhn1C,EAAEkoE,OAAO9oE,EAAE8oE,OAAOmhxC,cAAcjq1C,EAAEiq1C,cACngBC,WAAWlq1C,EAAEkq1C,WAAW3r1C,KAAK,MAAM,OAAO2C,GAAGd,EAAEc,EAAEwC,EAAE/D,EAAEQ,GAAGe,EAAEA,EAAE3C,KAAKmF,EAAEL,GAAEwj1C,OAAOjm1C,EAAEy+0B,IAAIz+0B,CAAC,CAACZ,EAAEA,EAAEzB,IAAI,OAAO,OAAOyB,GAAGA,IAAIE,GAAG,OAAOgB,EAAEvB,EAAEQ,EAAEe,EAAE3C,KAAK6B,EAAEoH,GAAGrH,EAAEW,EAAEuy0C,iBAAiBjvQ,IAAG,GAAItjkC,EAAEuy0C,cAAclz0C,EAAEW,EAAEum1C,UAAU1n1C,EAAEmB,EAAE8o1C,UAAU1o1C,EAAE7C,EAAE8r1C,kBAAkBhq1C,CAAC,CAAiB,GAAG,QAAnB3B,EAAEH,EAAE2lO,aAAwB,CAACrnO,EAAE6B,EAAE,GAAG0B,EAAEvD,EAAEir1C,KAAKvk1C,GAAEwj1C,OAAO3m1C,EAAEm/0B,IAAIn/0B,EAAEvD,EAAEA,EAAE4B,WAAW5B,IAAI6B,EAAE,MAAM,OAAO7B,IAAI0B,EAAEwo1C,MAAM,GAAG,MAAM,CAAC/l1C,EAAEuy0C,cAAch10C,EAAE2ra,SAAS,CAC9X,SAASog7B,GAAG5r1C,GAAG,IAAIsC,EAAE+o1C,KAAKxr1C,EAAEyC,EAAEk7C,MAAM,GAAG,OAAO39C,EAAE,MAAM2mB,MAAM1kB,EAAE,MAAMjC,EAAE2r1C,oBAAoBxr1C,EAAE,IAAI2B,EAAE9B,EAAE2ra,SAASrta,EAAE0B,EAAEsxa,QAAQzva,EAAEY,EAAEuy0C,cAAc,GAAG,OAAO120C,EAAE,CAAC0B,EAAEsxa,QAAQ,KAAK,IAAIhwa,EAAEhD,EAAEA,EAAE4B,KAAK,GAAG2B,EAAE1B,EAAE0B,EAAEP,EAAEmpE,QAAQnpE,EAAEA,EAAEpB,WAAWoB,IAAIhD,GAAG6K,GAAGtH,EAAEY,EAAEuy0C,iBAAiBjvQ,IAAG,GAAItjkC,EAAEuy0C,cAAcnz0C,EAAE,OAAOY,EAAE8o1C,YAAY9o1C,EAAEum1C,UAAUnn1C,GAAG7B,EAAE8r1C,kBAAkBjq1C,CAAC,CAAC,MAAM,CAACA,EAAEC,EAAE,CAAC,SAASkq1C,KAAK,CACpW,SAASC,GAAG9r1C,EAAEsC,GAAG,IAAIzC,EAAEgF,GAAElD,EAAE0p1C,KAAKlt1C,EAAEmE,IAAIZ,GAAGsH,GAAGrH,EAAEkz0C,cAAc120C,GAAsE,GAAnEuD,IAAIC,EAAEkz0C,cAAc120C,EAAEynkC,IAAG,GAAIjkkC,EAAEA,EAAE67C,MAAMuuyC,GAAGzv0C,GAAGja,KAAK,KAAKxC,EAAE8B,EAAE3B,GAAG,CAACA,IAAO2B,EAAEqq1C,cAAc1p1C,GAAGZ,GAAG,OAAOsB,IAAuB,EAApBA,GAAE6x0C,cAAcz+zC,IAAM,CAAuD,GAAtDvW,EAAEu5C,OAAO,KAAKl8B,GAAG,EAAEb,GAAGha,KAAK,KAAKxC,EAAE8B,EAAExD,EAAEmE,QAAG,EAAO,MAAS,OAAO0C,GAAE,MAAMwhB,MAAM1kB,EAAE,MAAM,IAAQ,GAAHyo1C,KAAQ5t0C,GAAG9c,EAAEyC,EAAEnE,EAAE,CAAC,OAAOA,CAAC,CAAC,SAASwe,GAAG3c,EAAEsC,EAAEzC,GAAGG,EAAEo5C,OAAO,MAAMp5C,EAAE,CAACgs1C,YAAY1p1C,EAAEnC,MAAMN,GAAmB,QAAhByC,EAAEuC,GAAE+j1C,cAAsBtm1C,EAAE,CAAC2p1C,WAAW,KAAKC,OAAO,MAAMrn1C,GAAE+j1C,YAAYtm1C,EAAEA,EAAE4p1C,OAAO,CAACls1C,IAAgB,QAAXH,EAAEyC,EAAE4p1C,QAAgB5p1C,EAAE4p1C,OAAO,CAACls1C,GAAGH,EAAEgB,KAAKb,EAAG,CAClf,SAASqc,GAAGrc,EAAEsC,EAAEzC,EAAE8B,GAAGW,EAAEnC,MAAMN,EAAEyC,EAAE0p1C,YAAYrq1C,EAAEka,GAAGvZ,IAAIoa,GAAG1c,EAAE,CAAC,SAASsc,GAAGtc,EAAEsC,EAAEzC,GAAG,OAAOA,GAAE,WAAWgc,GAAGvZ,IAAIoa,GAAG1c,EAAE,GAAE,CAAC,SAAS6b,GAAG7b,GAAG,IAAIsC,EAAEtC,EAAEgs1C,YAAYhs1C,EAAEA,EAAEG,MAAM,IAAI,IAAIN,EAAEyC,IAAI,OAAO0G,GAAGhJ,EAAEH,EAAE,CAAC,MAAM8B,GAAG,OAAM,CAAE,CAAC,CAAC,SAAS+a,GAAG1c,GAAG,IAAIsC,EAAEmm1C,GAAGzo1C,EAAE,GAAG,OAAOsC,GAAG6a,GAAG7a,EAAEtC,EAAE,GAAG,EAAE,CAClQ,SAAS4c,GAAG5c,GAAG,IAAIsC,EAAE6o1C,KAA8M,MAAzM,mBAAoBnr1C,IAAIA,EAAEA,KAAKsC,EAAEuy0C,cAAcvy0C,EAAEum1C,UAAU7o1C,EAAEA,EAAE,CAACmxa,QAAQ,KAAK3rM,YAAY,KAAK6inC,MAAM,EAAE786B,SAAS,KAAKgg7B,oBAAoBF,GAAGK,kBAAkB3r1C,GAAGsC,EAAEk7C,MAAMx9C,EAAEA,EAAEA,EAAEwra,SAASpvZ,GAAG/Z,KAAK,KAAKwC,GAAE7E,GAAS,CAACsC,EAAEuy0C,cAAc700C,EAAE,CAC5P,SAASkd,GAAGld,EAAEsC,EAAEzC,EAAE8B,GAA8O,OAA3O3B,EAAE,CAACoW,IAAIpW,EAAEd,OAAOoD,EAAE86I,QAAQv9I,EAAEo2/B,KAAKt0/B,EAAE5B,KAAK,MAAsB,QAAhBuC,EAAEuC,GAAE+j1C,cAAsBtm1C,EAAE,CAAC2p1C,WAAW,KAAKC,OAAO,MAAMrn1C,GAAE+j1C,YAAYtm1C,EAAEA,EAAE2p1C,WAAWjs1C,EAAED,KAAKC,GAAmB,QAAfH,EAAEyC,EAAE2p1C,YAAoB3p1C,EAAE2p1C,WAAWjs1C,EAAED,KAAKC,GAAG2B,EAAE9B,EAAEE,KAAKF,EAAEE,KAAKC,EAAEA,EAAED,KAAK4B,EAAEW,EAAE2p1C,WAAWjs1C,GAAWA,CAAC,CAAC,SAASie,KAAK,OAAOot0C,KAAKxW,aAAa,CAAC,SAASr3zC,GAAGxd,EAAEsC,EAAEzC,EAAE8B,GAAG,IAAIxD,EAAEgt1C,KAAKtm1C,GAAEu0C,OAAOp5C,EAAE7B,EAAE020C,cAAc33zC,GAAG,EAAE5a,EAAEzC,OAAE,OAAO,IAAS8B,EAAE,KAAKA,EAAE,CAC9Y,SAAS8a,GAAGzc,EAAEsC,EAAEzC,EAAE8B,GAAG,IAAIxD,EAAEkt1C,KAAK1p1C,OAAE,IAASA,EAAE,KAAKA,EAAE,IAAID,OAAE,EAAO,GAAG,OAAOwC,GAAE,CAAC,IAAI/C,EAAE+C,GAAE2w0C,cAA0B,GAAZnz0C,EAAEP,EAAEi8I,QAAW,OAAOz7I,GAAGip1C,GAAGjp1C,EAAER,EAAE80/B,MAAmC,YAA5B93/B,EAAE020C,cAAc33zC,GAAG5a,EAAEzC,EAAE6B,EAAEC,GAAU,CAACkD,GAAEu0C,OAAOp5C,EAAE7B,EAAE020C,cAAc33zC,GAAG,EAAE5a,EAAEzC,EAAE6B,EAAEC,EAAE,CAAC,SAASsb,GAAGjd,EAAEsC,GAAG,OAAOkb,GAAG,QAAQ,EAAExd,EAAEsC,EAAE,CAAC,SAASyp1C,GAAG/r1C,EAAEsC,GAAG,OAAOma,GAAG,KAAK,EAAEzc,EAAEsC,EAAE,CAAC,SAAS2Z,GAAGjc,EAAEsC,GAAG,OAAOma,GAAG,EAAE,EAAEzc,EAAEsC,EAAE,CAAC,SAAS6Z,GAAGnc,EAAEsC,GAAG,OAAOma,GAAG,EAAE,EAAEzc,EAAEsC,EAAE,CAChX,SAASua,GAAG7c,EAAEsC,GAAG,MAAG,mBAAoBA,GAAStC,EAAEA,IAAIsC,EAAEtC,GAAG,WAAWsC,EAAE,KAAK,GAAK,MAAOA,GAAqBtC,EAAEA,IAAIsC,EAAEy8B,QAAQ/+B,EAAE,WAAWsC,EAAEy8B,QAAQ,IAAI,QAA1E,CAA2E,CAAC,SAASje,GAAG9gB,EAAEsC,EAAEzC,GAA6C,OAA1CA,EAAE,MAAOA,EAAcA,EAAEmB,OAAO,CAAChB,IAAI,KAAYyc,GAAG,EAAE,EAAEI,GAAGxa,KAAK,KAAKC,EAAEtC,GAAGH,EAAE,CAAC,SAASqc,KAAK,CAAC,SAASK,GAAGvc,EAAEsC,GAAG,IAAIzC,EAAEwr1C,KAAK/o1C,OAAE,IAASA,EAAE,KAAKA,EAAE,IAAIX,EAAE9B,EAAEg10C,cAAc,OAAG,OAAOlz0C,GAAG,OAAOW,GAAGso1C,GAAGto1C,EAAEX,EAAE,IAAWA,EAAE,IAAG9B,EAAEg10C,cAAc,CAAC700C,EAAEsC,GAAUtC,EAAC,CAC7Z,SAAS8b,GAAG9b,EAAEsC,GAAG,IAAIzC,EAAEwr1C,KAAK/o1C,OAAE,IAASA,EAAE,KAAKA,EAAE,IAAIX,EAAE9B,EAAEg10C,cAAc,OAAG,OAAOlz0C,GAAG,OAAOW,GAAGso1C,GAAGto1C,EAAEX,EAAE,IAAWA,EAAE,IAAG3B,EAAEA,IAAIH,EAAEg10C,cAAc,CAAC700C,EAAEsC,GAAUtC,EAAC,CAAC,SAASwc,GAAGxc,EAAEsC,EAAEzC,GAAG,OAAG,IAAQ,GAAH0q1C,KAAcvq1C,EAAE6o1C,YAAY7o1C,EAAE6o1C,WAAU,EAAGjjR,IAAG,GAAI5lkC,EAAE600C,cAAch10C,IAAEmJ,GAAGnJ,EAAEyC,KAAKzC,EAAEojB,KAAKpe,GAAEwj1C,OAAOxo1C,EAAEgh1B,IAAIhh1B,EAAEG,EAAE6o1C,WAAU,GAAWvm1C,EAAC,CAAC,SAAS0a,GAAGhd,EAAEsC,GAAG,IAAIzC,EAAEsD,GAAEA,GAAE,IAAItD,GAAG,EAAEA,EAAEA,EAAE,EAAEG,GAAE,GAAI,IAAI2B,EAAE2o1C,GAAGxjuC,WAAWwjuC,GAAGxjuC,WAAW,CAAC,EAAE,IAAI9mH,GAAE,GAAIsC,GAAG,CAAC,QAAQa,GAAEtD,EAAEyq1C,GAAGxjuC,WAAWnlH,CAAC,CAAC,CAAC,SAASyb,KAAK,OAAOiu0C,KAAKxW,aAAa,CAC1d,SAASh3zC,GAAG7d,EAAEsC,EAAEzC,GAAG,IAAI8B,EAAEmb,GAAG9c,GAAGH,EAAE,CAACup1C,KAAKzn1C,EAAE2oE,OAAOzqE,EAAE4r1C,eAAc,EAAGC,WAAW,KAAK3r1C,KAAK,MAAS2gB,GAAG1gB,GAAGye,GAAGnc,EAAEzC,GAAyB,QAAdA,EAAE81sB,GAAG31sB,EAAEsC,EAAEzC,EAAE8B,MAAuBwb,GAAGtd,EAAEG,EAAE2B,EAAX2B,MAAgBsd,GAAG/gB,EAAEyC,EAAEX,GAAG,CAC/K,SAASya,GAAGpc,EAAEsC,EAAEzC,GAAG,IAAI8B,EAAEmb,GAAG9c,GAAG7B,EAAE,CAACir1C,KAAKzn1C,EAAE2oE,OAAOzqE,EAAE4r1C,eAAc,EAAGC,WAAW,KAAK3r1C,KAAK,MAAM,GAAG2gB,GAAG1gB,GAAGye,GAAGnc,EAAEnE,OAAO,CAAC,IAAIuD,EAAE1B,EAAE+60C,UAAU,GAAG,IAAI/60C,EAAEqo1C,QAAQ,OAAO3m1C,GAAG,IAAIA,EAAE2m1C,QAAiC,QAAxB3m1C,EAAEY,EAAEkp1C,qBAA8B,IAAI,IAAIrq1C,EAAEmB,EAAEqp1C,kBAAkB/p1C,EAAEF,EAAEP,EAAEtB,GAAqC,GAAlC1B,EAAEst1C,eAAc,EAAGtt1C,EAAEut1C,WAAW9p1C,EAAKoH,GAAGpH,EAAET,GAAG,CAAC,IAAIuB,EAAEJ,EAAEkjO,YAA+E,OAAnE,OAAO9iO,GAAGvE,EAAE4B,KAAK5B,EAAEqq1C,GAAGlm1C,KAAKnE,EAAE4B,KAAK2C,EAAE3C,KAAK2C,EAAE3C,KAAK5B,QAAGmE,EAAEkjO,YAAYrnO,EAAQ,CAAC,CAAC,MAAMqD,GAAG,CAAwB,QAAd3B,EAAE81sB,GAAG31sB,EAAEsC,EAAEnE,EAAEwD,MAAoBwb,GAAGtd,EAAEG,EAAE2B,EAAbxD,EAAEmF,MAAgBsd,GAAG/gB,EAAEyC,EAAEX,GAAG,CAAC,CAC/c,SAAS+e,GAAG1gB,GAAG,IAAIsC,EAAEtC,EAAE+60C,UAAU,OAAO/60C,IAAI6E,IAAG,OAAOvC,GAAGA,IAAIuC,EAAC,CAAC,SAAS4Z,GAAGze,EAAEsC,GAAGmo1C,GAAGD,IAAG,EAAG,IAAI3q1C,EAAEG,EAAEmxa,QAAQ,OAAOtxa,EAAEyC,EAAEvC,KAAKuC,GAAGA,EAAEvC,KAAKF,EAAEE,KAAKF,EAAEE,KAAKuC,GAAGtC,EAAEmxa,QAAQ7ua,CAAC,CAAC,SAASse,GAAG5gB,EAAEsC,EAAEzC,GAAG,GAAG,IAAO,QAAFA,GAAW,CAAC,IAAI8B,EAAEW,EAAE+l1C,MAAwBxo1C,GAAlB8B,GAAG3B,EAAE470C,aAAkBt50C,EAAE+l1C,MAAMxo1C,EAAEmlB,GAAGhlB,EAAEH,EAAE,CAAC,CAC9P,IAAIor1C,GAAG,CAAChW,YAAYryB,GAAG97Y,YAAYhj6B,GAAEg6P,WAAWh6P,GAAEw8B,UAAUx8B,GAAEy0P,oBAAoBz0P,GAAEk6P,mBAAmBl6P,GAAE6xP,gBAAgB7xP,GAAE2pC,QAAQ3pC,GAAEox0C,WAAWpx0C,GAAEw5B,OAAOx5B,GAAEgzP,SAAShzP,GAAEqx0C,cAAcrx0C,GAAEsx0C,iBAAiBtx0C,GAAEux0C,cAAcvx0C,GAAEyx0C,iBAAiBzx0C,GAAE0x0C,qBAAqB1x0C,GAAE+iuC,MAAM/iuC,GAAEqo1C,0BAAyB,GAAIrB,GAAG,CAAC7V,YAAYryB,GAAG97Y,YAAY,SAAS9m6B,EAAEsC,GAA4C,OAAzC6o1C,KAAKtW,cAAc,CAAC700C,OAAE,IAASsC,EAAE,KAAKA,GAAUtC,CAAC,EAAE89P,WAAW8kjC,GAAGtixC,UAAUrjB,GAAGs7O,oBAAoB,SAASv4P,EAAEsC,EAAEzC,GAA6C,OAA1CA,EAAE,MAAOA,EAAcA,EAAEmB,OAAO,CAAChB,IAAI,KAAYwd,GAAG,QAC3f,EAAEX,GAAGxa,KAAK,KAAKC,EAAEtC,GAAGH,EAAE,EAAE81P,gBAAgB,SAAS31P,EAAEsC,GAAG,OAAOkb,GAAG,QAAQ,EAAExd,EAAEsC,EAAE,EAAE07P,mBAAmB,SAASh+P,EAAEsC,GAAG,OAAOkb,GAAG,EAAE,EAAExd,EAAEsC,EAAE,EAAEmrC,QAAQ,SAASztC,EAAEsC,GAAG,IAAIzC,EAAEsr1C,KAAqD,OAAhD7o1C,OAAE,IAASA,EAAE,KAAKA,EAAEtC,EAAEA,IAAIH,EAAEg10C,cAAc,CAAC700C,EAAEsC,GAAUtC,CAAC,EAAEk10C,WAAW,SAASl10C,EAAEsC,EAAEzC,GAAG,IAAI8B,EAAEwp1C,KAAkM,OAA7L7o1C,OAAE,IAASzC,EAAEA,EAAEyC,GAAGA,EAAEX,EAAEkz0C,cAAclz0C,EAAEkn1C,UAAUvm1C,EAAEtC,EAAE,CAACmxa,QAAQ,KAAK3rM,YAAY,KAAK6inC,MAAM,EAAE786B,SAAS,KAAKgg7B,oBAAoBxr1C,EAAE2r1C,kBAAkBrp1C,GAAGX,EAAE67C,MAAMx9C,EAAEA,EAAEA,EAAEwra,SAAS3tZ,GAAGxb,KAAK,KAAKwC,GAAE7E,GAAS,CAAC2B,EAAEkz0C,cAAc700C,EAAE,EAAEs9B,OAAO,SAASt9B,GAC3d,OAAdA,EAAE,CAAC++B,QAAQ/+B,GAAhBmr1C,KAA4BtW,cAAc700C,CAAC,EAAE82P,SAASl6O,GAAGu4zC,cAAcj5zC,GAAGk5zC,iBAAiB,SAASp10C,GAAG,OAAOmr1C,KAAKtW,cAAc700C,CAAC,EAAEq10C,cAAc,WAAW,IAAIr10C,EAAE4c,IAAG,GAAIta,EAAEtC,EAAE,GAA6C,OAA1CA,EAAEgd,GAAG3a,KAAK,KAAKrC,EAAE,IAAImr1C,KAAKtW,cAAc700C,EAAQ,CAACsC,EAAEtC,EAAE,EAAEu10C,iBAAiB,WAAW,EAAEC,qBAAqB,SAASx10C,EAAEsC,EAAEzC,GAAG,IAAI8B,EAAEkD,GAAE1G,EAAEgt1C,KAAK,GAAGto1C,GAAE,CAAC,QAAG,IAAShD,EAAE,MAAM2mB,MAAM1kB,EAAE,MAAMjC,EAAEA,GAAG,KAAK,CAAO,GAANA,EAAEyC,IAAO,OAAO0C,GAAE,MAAMwhB,MAAM1kB,EAAE,MAAM,IAAQ,GAAHyo1C,KAAQ5t0C,GAAGhb,EAAEW,EAAEzC,EAAE,CAAC1B,EAAE020C,cAAch10C,EAAE,IAAI6B,EAAE,CAACvB,MAAMN,EAAEms1C,YAAY1p1C,GACvZ,OAD0ZnE,EAAEq/C,MAAM97C,EAAEub,GAAGX,GAAGja,KAAK,KAAKV,EACpfD,EAAE1B,GAAG,CAACA,IAAI2B,EAAEy3C,OAAO,KAAKl8B,GAAG,EAAEb,GAAGha,KAAK,KAAKV,EAAED,EAAE7B,EAAEyC,QAAG,EAAO,MAAazC,CAAC,EAAEgnuC,MAAM,WAAW,IAAI7muC,EAAEmr1C,KAAK7o1C,EAAE0C,GAAE+z0C,iBAAiB,GAAGl20C,GAAE,CAAC,IAAIhD,EAAE0l1C,GAAkDjj1C,EAAE,IAAIA,EAAE,KAA9CzC,GAAHm9mB,KAAU,GAAG,GAAG37lB,GAAhB27lB,IAAsB,IAAIz5mB,SAAS,IAAI1D,GAAuB,GAAPA,EAAE6q1C,QAAWpo1C,GAAG,IAAIzC,EAAE0D,SAAS,KAAKjB,GAAG,GAAG,MAAaA,EAAE,IAAIA,EAAE,KAAfzC,EAAE8q1C,MAAmBpn1C,SAAS,IAAI,IAAI,OAAOvD,EAAE600C,cAAcvy0C,CAAC,EAAE6p1C,0BAAyB,GAAIpB,GAAG,CAAC9V,YAAYryB,GAAG97Y,YAAYvq5B,GAAGuhP,WAAW8kjC,GAAGtixC,UAAUyrzC,GAAGxzlC,oBAAoBz3O,GAAGk9O,mBAAmB/hP,GAAG05O,gBAAgBx5O,GAAGsxB,QAAQ3xB,GAAGo5zC,WAAWqW,GAAGjuzC,OAAOrf,GAAG64O,SAAS,WAAW,OAAOy0lC,GAAGD,GAAG,EACrhBnW,cAAcj5zC,GAAGk5zC,iBAAiB,SAASp10C,GAAc,OAAOwc,GAAZ6u0C,KAAiBnn1C,GAAE2w0C,cAAc700C,EAAE,EAAEq10C,cAAc,WAAgD,MAAM,CAArCkW,GAAGD,IAAI,GAAKD,KAAKxW,cAAyB,EAAEU,iBAAiBsW,GAAGrW,qBAAqBsW,GAAGjlH,MAAMzptC,GAAG+u0C,0BAAyB,GAAInB,GAAG,CAAC/V,YAAYryB,GAAG97Y,YAAYvq5B,GAAGuhP,WAAW8kjC,GAAGtixC,UAAUyrzC,GAAGxzlC,oBAAoBz3O,GAAGk9O,mBAAmB/hP,GAAG05O,gBAAgBx5O,GAAGsxB,QAAQ3xB,GAAGo5zC,WAAW0W,GAAGtuzC,OAAOrf,GAAG64O,SAAS,WAAW,OAAO80lC,GAAGN,GAAG,EAAEnW,cAAcj5zC,GAAGk5zC,iBAAiB,SAASp10C,GAAG,IAAIsC,EAAE+o1C,KAAK,OAAO,OACzfnn1C,GAAE5B,EAAEuy0C,cAAc700C,EAAEwc,GAAGla,EAAE4B,GAAE2w0C,cAAc700C,EAAE,EAAEq10C,cAAc,WAAgD,MAAM,CAArCuW,GAAGN,IAAI,GAAKD,KAAKxW,cAAyB,EAAEU,iBAAiBsW,GAAGrW,qBAAqBsW,GAAGjlH,MAAMzptC,GAAG+u0C,0BAAyB,GAAI,SAASnu0C,GAAGhe,EAAEsC,GAAG,GAAGtC,GAAGA,EAAEk5I,aAAa,CAA4B,IAAI,IAAIr5I,KAAnCyC,EAAEuB,EAAE,CAAC,EAAEvB,GAAGtC,EAAEA,EAAEk5I,kBAA4B,IAAS52I,EAAEzC,KAAKyC,EAAEzC,GAAGG,EAAEH,IAAI,OAAOyC,CAAC,CAAC,OAAOA,CAAC,CAAC,SAAS+d,GAAGrgB,EAAEsC,EAAEzC,EAAE8B,GAA8B9B,EAAE,OAAXA,EAAEA,EAAE8B,EAAtBW,EAAEtC,EAAE600C,gBAA8Cvy0C,EAAEuB,EAAE,CAAC,EAAEvB,EAAEzC,GAAGG,EAAE600C,cAAch10C,EAAE,IAAIG,EAAEqo1C,QAAQro1C,EAAE4o1C,YAAYC,UAAUhp1C,EAAE,CACrd,IAAIye,GAAG,CAACkhY,UAAU,SAASx/Y,GAAG,SAAOA,EAAEA,EAAEq00C,kBAAiB9rF,GAAGvovC,KAAKA,CAAI,EAAEo00C,gBAAgB,SAASp00C,EAAEsC,EAAEzC,GAAGG,EAAEA,EAAEq00C,gBAAgB,IAAI1y0C,EAAE2B,KAAInF,EAAE2e,GAAG9c,GAAG0B,EAAEwn1C,GAAGvn1C,EAAExD,GAAGuD,EAAEoyB,QAAQxxB,EAAE,MAASzC,IAAc6B,EAAEwmB,SAASroB,GAAe,QAAZyC,EAAE+m1C,GAAGrp1C,EAAE0B,EAAEvD,MAAcgf,GAAG7a,EAAEtC,EAAE7B,EAAEwD,GAAG2n1C,GAAGhn1C,EAAEtC,EAAE7B,GAAG,EAAEm20C,oBAAoB,SAASt00C,EAAEsC,EAAEzC,GAAGG,EAAEA,EAAEq00C,gBAAgB,IAAI1y0C,EAAE2B,KAAInF,EAAE2e,GAAG9c,GAAG0B,EAAEwn1C,GAAGvn1C,EAAExD,GAAGuD,EAAE0U,IAAI,EAAE1U,EAAEoyB,QAAQxxB,EAAE,MAASzC,IAAc6B,EAAEwmB,SAASroB,GAAe,QAAZyC,EAAE+m1C,GAAGrp1C,EAAE0B,EAAEvD,MAAcgf,GAAG7a,EAAEtC,EAAE7B,EAAEwD,GAAG2n1C,GAAGhn1C,EAAEtC,EAAE7B,GAAG,EAAEo20C,mBAAmB,SAASv00C,EAAEsC,GAAGtC,EAAEA,EAAEq00C,gBAAgB,IAAIx00C,EAAEyD,KAAI3B,EACnfmb,GAAG9c,GAAG7B,EAAE+q1C,GAAGrp1C,EAAE8B,GAAGxD,EAAEiY,IAAI,EAAE,MAAS9T,IAAcnE,EAAE+pB,SAAS5lB,GAAe,QAAZA,EAAE+m1C,GAAGrp1C,EAAE7B,EAAEwD,MAAcwb,GAAG7a,EAAEtC,EAAE2B,EAAE9B,GAAGyp1C,GAAGhn1C,EAAEtC,EAAE2B,GAAG,GAAG,SAAS0d,GAAGrf,EAAEsC,EAAEzC,EAAE8B,EAAExD,EAAEuD,EAAEP,GAAiB,MAAM,mBAApBnB,EAAEA,EAAE860C,WAAsCr4a,sBAAsBzi6B,EAAEyi6B,sBAAsB9g6B,EAAED,EAAEP,KAAGmB,EAAE5D,WAAW4D,EAAE5D,UAAU0t1C,sBAAsB5k1C,GAAG3H,EAAE8B,IAAK6F,GAAGrJ,EAAEuD,GAAK,CAC1S,SAAS6c,GAAGve,EAAEsC,EAAEzC,GAAG,IAAI8B,GAAE,EAAGxD,EAAE8l1C,GAAOvi1C,EAAEY,EAAE2lwC,YAA2W,MAA/V,iBAAkBvmwC,GAAG,OAAOA,EAAEA,EAAEkhzC,GAAGlhzC,IAAIvD,EAAEom1C,GAAGji1C,GAAG6h1C,GAAG3/0C,GAAEu6B,QAAyBr9B,GAAGC,EAAE,OAAtBA,EAAEW,EAAE4lwC,eAAwCk8E,GAAGpk1C,EAAE7B,GAAG8l1C,IAAI3h1C,EAAE,IAAIA,EAAEzC,EAAE6B,GAAG1B,EAAE600C,cAAc,OAAOvy0C,EAAEqI,YAAO,IAASrI,EAAEqI,MAAMrI,EAAEqI,MAAM,KAAKrI,EAAE+7+B,QAAQ//9B,GAAGte,EAAE860C,UAAUx40C,EAAEA,EAAE+x0C,gBAAgBr00C,EAAE2B,KAAI3B,EAAEA,EAAE860C,WAAYuJ,4CAA4Clm1C,EAAE6B,EAAEsk1C,0CAA0C5i1C,GAAUY,CAAC,CAC5Z,SAASme,GAAGzgB,EAAEsC,EAAEzC,EAAE8B,GAAG3B,EAAEsC,EAAEqI,MAAM,mBAAoBrI,EAAE+p1C,2BAA2B/p1C,EAAE+p1C,0BAA0Bxs1C,EAAE8B,GAAG,mBAAoBW,EAAEgq1C,kCAAkChq1C,EAAEgq1C,iCAAiCzs1C,EAAE8B,GAAGW,EAAEqI,QAAQ3K,GAAGse,GAAGg2zC,oBAAoBhy0C,EAAEA,EAAEqI,MAAM,KAAK,CACpQ,SAAS+S,GAAG1d,EAAEsC,EAAEzC,EAAE8B,GAAG,IAAIxD,EAAE6B,EAAE860C,UAAU380C,EAAE8tC,MAAMpsC,EAAE1B,EAAEwM,MAAM3K,EAAE600C,cAAc120C,EAAE8o1C,KAAK,CAAC,EAAE0B,GAAG3o1C,GAAG,IAAI0B,EAAEY,EAAE2lwC,YAAY,iBAAkBvmwC,GAAG,OAAOA,EAAEvD,EAAEguC,QAAQy2wC,GAAGlhzC,IAAIA,EAAE6i1C,GAAGji1C,GAAG6h1C,GAAG3/0C,GAAEu6B,QAAQ5gC,EAAEguC,QAAQi4yC,GAAGpk1C,EAAE0B,IAAIvD,EAAEwM,MAAM3K,EAAE600C,cAA2C,mBAA7Bnz0C,EAAEY,EAAE8lwC,4BAAiD/nvC,GAAGrgB,EAAEsC,EAAEZ,EAAE7B,GAAG1B,EAAEwM,MAAM3K,EAAE600C,eAAe,mBAAoBvy0C,EAAE8lwC,0BAA0B,mBAAoBjqwC,EAAEq20C,yBAAyB,mBAAoBr20C,EAAEs20C,2BAA2B,mBAAoBt20C,EAAEu20C,qBAAqBpy0C,EAAEnE,EAAEwM,MACrf,mBAAoBxM,EAAEu20C,oBAAoBv20C,EAAEu20C,qBAAqB,mBAAoBv20C,EAAEs20C,2BAA2Bt20C,EAAEs20C,4BAA4Bny0C,IAAInE,EAAEwM,OAAO2T,GAAGg2zC,oBAAoBn20C,EAAEA,EAAEwM,MAAM,MAAM6+0C,GAAGxp1C,EAAEH,EAAE1B,EAAEwD,GAAGxD,EAAEwM,MAAM3K,EAAE600C,eAAe,mBAAoB120C,EAAEm+Y,oBAAoBt8Y,EAAEo5C,OAAO,QAAQ,CAAC,SAAS74B,GAAGvgB,EAAEsC,GAAG,IAAI,IAAIzC,EAAE,GAAG8B,EAAEW,EAAE,GAAGzC,GAAGg3B,EAAGl1B,GAAGA,EAAEA,EAAElB,aAAakB,GAAG,IAAIxD,EAAE0B,CAAC,CAAC,MAAM6B,GAAGvD,EAAE,6BAA6BuD,EAAEqvB,QAAQ,KAAKrvB,EAAEiwC,KAAK,CAAC,MAAM,CAACxxC,MAAMH,EAAE6G,OAAOvE,EAAEqvC,MAAMxzC,EAAEqwB,OAAO,KAAK,CAC1d,SAASjP,GAAGvf,EAAEsC,EAAEzC,GAAG,MAAM,CAACM,MAAMH,EAAE6G,OAAO,KAAK8qC,MAAM,MAAM9xC,EAAEA,EAAE,KAAK2uB,OAAO,MAAMlsB,EAAEA,EAAE,KAAK,CAAC,SAAS4b,GAAGle,EAAEsC,GAAG,IAAI+jB,QAAQvlB,MAAMwB,EAAEnC,MAAM,CAAC,MAAMN,GAAGglB,YAAW,WAAW,MAAMhlB,CAAE,GAAE,CAAC,CAAC,IAAI8gB,GAAG,mBAAoBxW,QAAQA,QAAQwf,IAAI,SAASnK,GAAGxf,EAAEsC,EAAEzC,IAAGA,EAAEqp1C,IAAI,EAAErp1C,IAAKuW,IAAI,EAAEvW,EAAEi0B,QAAQ,CAACi3D,QAAQ,MAAM,IAAIppF,EAAEW,EAAEnC,MAAsD,OAAhDN,EAAEqoB,SAAS,WAAWvK,KAAKA,IAAG,EAAGe,GAAG/c,GAAGuc,GAAGle,EAAEsC,EAAE,EAASzC,CAAC,CACrW,SAASghB,GAAG7gB,EAAEsC,EAAEzC,IAAGA,EAAEqp1C,IAAI,EAAErp1C,IAAKuW,IAAI,EAAE,IAAIzU,EAAE3B,EAAEuL,KAAK48vC,yBAAyB,GAAG,mBAAoBxmwC,EAAE,CAAC,IAAIxD,EAAEmE,EAAEnC,MAAMN,EAAEi0B,QAAQ,WAAW,OAAOnyB,EAAExD,EAAE,EAAE0B,EAAEqoB,SAAS,WAAWhK,GAAGle,EAAEsC,EAAE,CAAC,CAAC,IAAIZ,EAAE1B,EAAE860C,UAA8O,OAApO,OAAOp50C,GAAG,mBAAoBA,EAAE6q1C,oBAAoB1s1C,EAAEqoB,SAAS,WAAWhK,GAAGle,EAAEsC,GAAG,mBAAoBX,IAAI,OAAOwc,GAAGA,GAAG,IAAIwG,IAAI,CAAC3lB,OAAOmf,GAAGgG,IAAInlB,OAAO,IAAIa,EAAEyC,EAAEqvC,MAAM3yC,KAAKut1C,kBAAkBjq1C,EAAEnC,MAAM,CAACixC,eAAe,OAAOvxC,EAAEA,EAAE,IAAI,GAAUA,CAAC,CACnb,SAASwd,GAAGrd,EAAEsC,EAAEzC,GAAG,IAAI8B,EAAE3B,EAAEws1C,UAAU,GAAG,OAAO7q1C,EAAE,CAACA,EAAE3B,EAAEws1C,UAAU,IAAI7r0C,GAAG,IAAIxiB,EAAE,IAAIwmB,IAAIhjB,EAAEsJ,IAAI3I,EAAEnE,EAAE,WAAiB,KAAXA,EAAEwD,EAAEQ,IAAIG,MAAgBnE,EAAE,IAAIwmB,IAAIhjB,EAAEsJ,IAAI3I,EAAEnE,IAAIA,EAAE4M,IAAIlL,KAAK1B,EAAEgmB,IAAItkB,GAAGG,EAAE8d,GAAGzb,KAAK,KAAKrC,EAAEsC,EAAEzC,GAAGyC,EAAElC,KAAKJ,EAAEA,GAAG,CAAC,SAASogB,GAAGpgB,GAAG,EAAE,CAAC,IAAIsC,EAA4E,IAAvEA,EAAE,KAAKtC,EAAEoW,OAAsB9T,EAAE,QAApBA,EAAEtC,EAAE600C,gBAAyB,OAAOvy0C,EAAE040C,YAAuB140C,EAAE,OAAOtC,EAAEA,EAAEA,EAAES,MAAM,OAAO,OAAOT,GAAG,OAAO,IAAI,CAChW,SAASwgB,GAAGxgB,EAAEsC,EAAEzC,EAAE8B,EAAExD,GAAG,OAAG,IAAY,EAAP6B,EAAE0G,OAAe1G,IAAIsC,EAAEtC,EAAEo5C,OAAO,OAAOp5C,EAAEo5C,OAAO,IAAIv5C,EAAEu5C,OAAO,OAAOv5C,EAAEu5C,QAAQ,MAAM,IAAIv5C,EAAEuW,MAAM,OAAOvW,EAAEk70C,UAAUl70C,EAAEuW,IAAI,KAAI9T,EAAE4m1C,IAAI,EAAE,IAAK9y0C,IAAI,EAAEiz0C,GAAGxp1C,EAAEyC,EAAE,KAAKzC,EAAEwo1C,OAAO,GAAGro1C,IAAEA,EAAEo5C,OAAO,MAAMp5C,EAAEqo1C,MAAMlq1C,EAAS6B,EAAC,CAAC,IAAIoe,GAAGyS,EAAG47zC,kBAAkB7mR,IAAG,EAAG,SAAS1mjC,GAAGlf,EAAEsC,EAAEzC,EAAE8B,GAAGW,EAAE4mF,MAAM,OAAOlpF,EAAE2n1C,GAAGrl1C,EAAE,KAAKzC,EAAE8B,GAAG+l1C,GAAGpl1C,EAAEtC,EAAEkpF,MAAMrpF,EAAE8B,EAAE,CACnV,SAAS2e,GAAGtgB,EAAEsC,EAAEzC,EAAE8B,EAAExD,GAAG0B,EAAEA,EAAEytH,OAAO,IAAI5rH,EAAEY,EAAEs+B,IAAqC,OAAjC2qP,GAAGjpR,EAAEnE,GAAGwD,EAAEkp1C,GAAG7q1C,EAAEsC,EAAEzC,EAAE8B,EAAED,EAAEvD,GAAG0B,EAAEqr1C,KAAQ,OAAOlr1C,GAAI4lkC,IAA2E/ikC,IAAGhD,GAAG6l1C,GAAGpj1C,GAAGA,EAAE82C,OAAO,EAAEl6B,GAAGlf,EAAEsC,EAAEX,EAAExD,GAAUmE,EAAE4mF,QAA7G5mF,EAAEsm1C,YAAY5o1C,EAAE4o1C,YAAYtm1C,EAAE82C,QAAQ,KAAKp5C,EAAEqo1C,QAAQlq1C,EAAEkgB,GAAGre,EAAEsC,EAAEnE,GAAoD,CACzN,SAAS4iB,GAAG/gB,EAAEsC,EAAEzC,EAAE8B,EAAExD,GAAG,GAAG,OAAO6B,EAAE,CAAC,IAAI0B,EAAE7B,EAAE0L,KAAK,MAAG,mBAAoB7J,GAAIgr1C,GAAGhr1C,SAAI,IAASA,EAAEw3I,cAAc,OAAOr5I,EAAEqpH,cAAS,IAASrpH,EAAEq5I,eAAoDl5I,EAAEun1C,GAAG1n1C,EAAE0L,KAAK,KAAK5J,EAAEW,EAAEA,EAAEoE,KAAKvI,IAAKyiC,IAAIt+B,EAAEs+B,IAAI5gC,EAAES,OAAO6B,EAASA,EAAE4mF,MAAMlpF,IAArGsC,EAAE8T,IAAI,GAAG9T,EAAEiJ,KAAK7J,EAAEir1C,GAAG3s1C,EAAEsC,EAAEZ,EAAEC,EAAExD,GAAyE,CAAW,GAAVuD,EAAE1B,EAAEkpF,MAAS,IAAKlpF,EAAEqo1C,MAAMlq1C,GAAG,CAAC,IAAIgD,EAAEO,EAAE+k1C,cAA0C,IAAhB5m1C,EAAE,QAAdA,EAAEA,EAAEqpH,SAAmBrpH,EAAE2H,IAAQrG,EAAEQ,IAAI3B,EAAE4gC,MAAMt+B,EAAEs+B,IAAI,OAAOviB,GAAGre,EAAEsC,EAAEnE,EAAE,CAA6C,OAA5CmE,EAAE82C,OAAO,GAAEp5C,EAAEqn1C,GAAG3l1C,EAAEC,IAAKi/B,IAAIt+B,EAAEs+B,IAAI5gC,EAAES,OAAO6B,EAASA,EAAE4mF,MAAMlpF,CAAC,CAC1b,SAAS2s1C,GAAG3s1C,EAAEsC,EAAEzC,EAAE8B,EAAExD,GAAG,GAAG,OAAO6B,EAAE,CAAC,IAAI0B,EAAE1B,EAAEym1C,cAAc,GAAGj/0C,GAAG9F,EAAEC,IAAI3B,EAAE4gC,MAAMt+B,EAAEs+B,IAAI,IAAGgliC,IAAG,EAAGtjkC,EAAE6j1C,aAAaxk1C,EAAED,EAAE,IAAK1B,EAAEqo1C,MAAMlq1C,GAAsC,OAAOmE,EAAE+l1C,MAAMro1C,EAAEqo1C,MAAMhq0C,GAAGre,EAAEsC,EAAEnE,GAAjE,IAAa,OAAR6B,EAAEo5C,SAAgBwshC,IAAG,EAAwC,CAAC,CAAC,OAAOgnR,GAAG5s1C,EAAEsC,EAAEzC,EAAE8B,EAAExD,EAAE,CACxN,SAAS0u1C,GAAG7s1C,EAAEsC,EAAEzC,GAAG,IAAI8B,EAAEW,EAAE6j1C,aAAaho1C,EAAEwD,EAAEq9B,SAASt9B,EAAE,OAAO1B,EAAEA,EAAE600C,cAAc,KAAK,GAAG,WAAWlz0C,EAAE+E,KAAK,GAAG,IAAY,EAAPpE,EAAEoE,MAAQpE,EAAEuy0C,cAAc,CAACiY,UAAU,EAAEC,UAAU,KAAKhotC,YAAY,MAAMphI,GAAEqp1C,GAAGC,IAAIA,IAAIpt1C,MAAM,CAAC,GAAG,IAAO,WAAFA,GAAc,OAAOG,EAAE,OAAO0B,EAAEA,EAAEor1C,UAAUjt1C,EAAEA,EAAEyC,EAAE+l1C,MAAM/l1C,EAAE6l1C,WAAW,WAAW7l1C,EAAEuy0C,cAAc,CAACiY,UAAU9s1C,EAAE+s1C,UAAU,KAAKhotC,YAAY,MAAMziI,EAAEsm1C,YAAY,KAAKjl1C,GAAEqp1C,GAAGC,IAAIA,IAAIjt1C,EAAE,KAAKsC,EAAEuy0C,cAAc,CAACiY,UAAU,EAAEC,UAAU,KAAKhotC,YAAY,MAAMpjI,EAAE,OAAOD,EAAEA,EAAEor1C,UAAUjt1C,EAAE8D,GAAEqp1C,GAAGC,IAAIA,IAAItr1C,CAAC,MAAM,OACtfD,GAAGC,EAAED,EAAEor1C,UAAUjt1C,EAAEyC,EAAEuy0C,cAAc,MAAMlz0C,EAAE9B,EAAE8D,GAAEqp1C,GAAGC,IAAIA,IAAItr1C,EAAc,OAAZud,GAAGlf,EAAEsC,EAAEnE,EAAE0B,GAAUyC,EAAE4mF,KAAK,CAAC,SAASgkwC,GAAGlt1C,EAAEsC,GAAG,IAAIzC,EAAEyC,EAAEs+B,KAAO,OAAO5gC,GAAG,OAAOH,GAAG,OAAOG,GAAGA,EAAE4gC,MAAM/gC,KAAEyC,EAAE82C,OAAO,IAAI92C,EAAE82C,OAAO,QAAO,CAAC,SAASwzyC,GAAG5s1C,EAAEsC,EAAEzC,EAAE8B,EAAExD,GAAG,IAAIuD,EAAE6i1C,GAAG1k1C,GAAGsk1C,GAAG3/0C,GAAEu6B,QAAmD,OAA3Cr9B,EAAE0i1C,GAAG9h1C,EAAEZ,GAAG6pR,GAAGjpR,EAAEnE,GAAG0B,EAAEgr1C,GAAG7q1C,EAAEsC,EAAEzC,EAAE8B,EAAED,EAAEvD,GAAGwD,EAAEup1C,KAAQ,OAAOlr1C,GAAI4lkC,IAA2E/ikC,IAAGlB,GAAG+j1C,GAAGpj1C,GAAGA,EAAE82C,OAAO,EAAEl6B,GAAGlf,EAAEsC,EAAEzC,EAAE1B,GAAUmE,EAAE4mF,QAA7G5mF,EAAEsm1C,YAAY5o1C,EAAE4o1C,YAAYtm1C,EAAE82C,QAAQ,KAAKp5C,EAAEqo1C,QAAQlq1C,EAAEkgB,GAAGre,EAAEsC,EAAEnE,GAAoD,CACla,SAASgv1C,GAAGnt1C,EAAEsC,EAAEzC,EAAE8B,EAAExD,GAAG,GAAGom1C,GAAG1k1C,GAAG,CAAC,IAAI6B,GAAE,EAAGgj1C,GAAGpi1C,EAAE,MAAMZ,GAAE,EAAW,GAAR6pR,GAAGjpR,EAAEnE,GAAM,OAAOmE,EAAEw40C,UAAUl/pC,GAAG57K,EAAEsC,GAAGic,GAAGjc,EAAEzC,EAAE8B,GAAG+b,GAAGpb,EAAEzC,EAAE8B,EAAExD,GAAGwD,GAAE,OAAQ,GAAG,OAAO3B,EAAE,CAAC,IAAImB,EAAEmB,EAAEw40C,UAAUl50C,EAAEU,EAAEmk1C,cAActl1C,EAAE8qC,MAAMrqC,EAAE,IAAIc,EAAEvB,EAAEgrC,QAAQ3qC,EAAE3B,EAAEoowC,YAA0CzmwC,EAA9B,iBAAkBA,GAAG,OAAOA,EAAIohzC,GAAGphzC,GAA2B4i1C,GAAG9h1C,EAA1Bd,EAAE+i1C,GAAG1k1C,GAAGsk1C,GAAG3/0C,GAAEu6B,SAAmB,IAAI38B,EAAEvC,EAAEuowC,yBAAyBljwC,EAAE,mBAAoB9C,GAAG,mBAAoBjB,EAAEqz0C,wBAAwBtv0C,GAAG,mBAAoB/D,EAAEmr1C,kCAAkC,mBAAoBnr1C,EAAEkr1C,4BAC1dzq1C,IAAID,GAAGe,IAAIlB,IAAIif,GAAGne,EAAEnB,EAAEQ,EAAEH,GAAGkn1C,IAAG,EAAG,IAAI3p1C,EAAEuD,EAAEuy0C,cAAc1z0C,EAAEwJ,MAAM5L,EAAEyq1C,GAAGln1C,EAAEX,EAAER,EAAEhD,GAAGuE,EAAEJ,EAAEuy0C,cAAcjz0C,IAAID,GAAG5C,IAAI2D,GAAGwh1C,GAAGnlzC,SAAS2pzC,IAAI,mBAAoBtm1C,IAAIie,GAAG/d,EAAEzC,EAAEuC,EAAET,GAAGe,EAAEJ,EAAEuy0C,gBAAgBjz0C,EAAE8m1C,IAAIrp0C,GAAG/c,EAAEzC,EAAE+B,EAAED,EAAE5C,EAAE2D,EAAElB,KAAK0D,GAAG,mBAAoB/D,EAAEsz0C,2BAA2B,mBAAoBtz0C,EAAEuz0C,qBAAqB,mBAAoBvz0C,EAAEuz0C,oBAAoBvz0C,EAAEuz0C,qBAAqB,mBAAoBvz0C,EAAEsz0C,2BAA2Btz0C,EAAEsz0C,6BAA6B,mBAAoBtz0C,EAAEm7Y,oBAAoBh6Y,EAAE82C,OAAO,WAClf,mBAAoBj4C,EAAEm7Y,oBAAoBh6Y,EAAE82C,OAAO,SAAS92C,EAAEmk1C,cAAc9k1C,EAAEW,EAAEuy0C,cAAcny0C,GAAGvB,EAAE8qC,MAAMtqC,EAAER,EAAEwJ,MAAMjI,EAAEvB,EAAEgrC,QAAQ3qC,EAAEG,EAAEC,IAAI,mBAAoBT,EAAEm7Y,oBAAoBh6Y,EAAE82C,OAAO,SAASz3C,GAAE,EAAG,KAAK,CAACR,EAAEmB,EAAEw40C,UAAUmO,GAAGjp1C,EAAEsC,GAAGV,EAAEU,EAAEmk1C,cAAcjl1C,EAAEc,EAAEiJ,OAAOjJ,EAAE6umC,YAAYvvmC,EAAEoc,GAAG1b,EAAEiJ,KAAK3J,GAAGT,EAAE8qC,MAAMzqC,EAAE0D,EAAE5C,EAAE6j1C,aAAapn1C,EAAEoC,EAAEgrC,QAAsDzpC,EAA9B,iBAAhBA,EAAE7C,EAAEoowC,cAAiC,OAAOvlwC,EAAIkgzC,GAAGlgzC,GAA2B0h1C,GAAG9h1C,EAA1BI,EAAE6h1C,GAAG1k1C,GAAGsk1C,GAAG3/0C,GAAEu6B,SAAmB,IAAI/8B,EAAEnC,EAAEuowC,0BAA0BhmwC,EAAE,mBAAoBJ,GAAG,mBAAoBb,EAAEqz0C,0BAC9e,mBAAoBrz0C,EAAEmr1C,kCAAkC,mBAAoBnr1C,EAAEkr1C,4BAA4Bzq1C,IAAIsD,GAAGnG,IAAI2D,IAAI+d,GAAGne,EAAEnB,EAAEQ,EAAEe,GAAGgm1C,IAAG,EAAG3p1C,EAAEuD,EAAEuy0C,cAAc1z0C,EAAEwJ,MAAM5L,EAAEyq1C,GAAGln1C,EAAEX,EAAER,EAAEhD,GAAG,IAAIE,EAAEiE,EAAEuy0C,cAAcjz0C,IAAIsD,GAAGnG,IAAIV,GAAG6l1C,GAAGnlzC,SAAS2pzC,IAAI,mBAAoB1m1C,IAAIqe,GAAG/d,EAAEzC,EAAEmC,EAAEL,GAAGtD,EAAEiE,EAAEuy0C,gBAAgBrz0C,EAAEkn1C,IAAIrp0C,GAAG/c,EAAEzC,EAAE2B,EAAEG,EAAE5C,EAAEV,EAAEqE,KAAI,IAAKN,GAAG,mBAAoBjB,EAAEis1C,4BAA4B,mBAAoBjs1C,EAAEks1C,sBAAsB,mBAAoBls1C,EAAEks1C,qBAAqBls1C,EAAEks1C,oBAAoB1r1C,EAAEtD,EAAEqE,GAAG,mBAAoBvB,EAAEis1C,4BAC5fjs1C,EAAEis1C,2BAA2Bzr1C,EAAEtD,EAAEqE,IAAI,mBAAoBvB,EAAEq7Y,qBAAqBl6Y,EAAE82C,OAAO,GAAG,mBAAoBj4C,EAAEqz0C,0BAA0Bly0C,EAAE82C,OAAO,QAAQ,mBAAoBj4C,EAAEq7Y,oBAAoB56Y,IAAI5B,EAAEym1C,eAAe1n1C,IAAIiB,EAAE600C,gBAAgBvy0C,EAAE82C,OAAO,GAAG,mBAAoBj4C,EAAEqz0C,yBAAyB5y0C,IAAI5B,EAAEym1C,eAAe1n1C,IAAIiB,EAAE600C,gBAAgBvy0C,EAAE82C,OAAO,MAAM92C,EAAEmk1C,cAAc9k1C,EAAEW,EAAEuy0C,cAAcx20C,GAAG8C,EAAE8qC,MAAMtqC,EAAER,EAAEwJ,MAAMtM,EAAE8C,EAAEgrC,QAAQzpC,EAAEf,EAAEH,IAAI,mBAAoBL,EAAEq7Y,oBAAoB56Y,IAAI5B,EAAEym1C,eAAe1n1C,IACjfiB,EAAE600C,gBAAgBvy0C,EAAE82C,OAAO,GAAG,mBAAoBj4C,EAAEqz0C,yBAAyB5y0C,IAAI5B,EAAEym1C,eAAe1n1C,IAAIiB,EAAE600C,gBAAgBvy0C,EAAE82C,OAAO,MAAMz3C,GAAE,EAAG,CAAC,OAAO2r1C,GAAGtt1C,EAAEsC,EAAEzC,EAAE8B,EAAED,EAAEvD,EAAE,CACnK,SAASmv1C,GAAGtt1C,EAAEsC,EAAEzC,EAAE8B,EAAExD,EAAEuD,GAAGwr1C,GAAGlt1C,EAAEsC,GAAG,IAAInB,EAAE,IAAa,IAARmB,EAAE82C,OAAW,IAAIz3C,IAAIR,EAAE,OAAOhD,GAAGym1C,GAAGti1C,EAAEzC,GAAE,GAAIwe,GAAGre,EAAEsC,EAAEZ,GAAGC,EAAEW,EAAEw40C,UAAU18zC,GAAG2gB,QAAQz8B,EAAE,IAAIV,EAAET,GAAG,mBAAoBtB,EAAEsowC,yBAAyB,KAAKxmwC,EAAE2rH,SAAwI,OAA/HhrH,EAAE82C,OAAO,EAAE,OAAOp5C,GAAGmB,GAAGmB,EAAE4mF,MAAMw+vC,GAAGpl1C,EAAEtC,EAAEkpF,MAAM,KAAKxnF,GAAGY,EAAE4mF,MAAMw+vC,GAAGpl1C,EAAE,KAAKV,EAAEF,IAAIwd,GAAGlf,EAAEsC,EAAEV,EAAEF,GAAGY,EAAEuy0C,cAAclz0C,EAAEgJ,MAAMxM,GAAGym1C,GAAGti1C,EAAEzC,GAAE,GAAWyC,EAAE4mF,KAAK,CAAC,SAASqkwC,GAAGvt1C,GAAG,IAAIsC,EAAEtC,EAAE860C,UAAUx40C,EAAEkr1C,eAAe/I,GAAGzk1C,EAAEsC,EAAEkr1C,eAAelr1C,EAAEkr1C,iBAAiBlr1C,EAAE6pC,SAAS7pC,EAAE6pC,SAASs4yC,GAAGzk1C,EAAEsC,EAAE6pC,SAAQ,GAAIy9yC,GAAG5p1C,EAAEsC,EAAEi60C,cAAc,CAC5e,SAASkR,GAAGzt1C,EAAEsC,EAAEzC,EAAE8B,EAAExD,GAAuC,OAApCwo1C,KAAKC,GAAGzo1C,GAAGmE,EAAE82C,OAAO,IAAIl6B,GAAGlf,EAAEsC,EAAEzC,EAAE8B,GAAUW,EAAE4mF,KAAK,CAAC,IAaqLwkwC,GAAGC,GAAGC,GAAGC,GAb1LC,GAAG,CAAC9S,WAAW,KAAK1F,YAAY,KAAK8Q,UAAU,GAAG,SAAS2H,GAAG/t1C,GAAG,MAAM,CAAC8s1C,UAAU9s1C,EAAE+s1C,UAAU,KAAKhotC,YAAY,KAAK,CAClM,SAASiptC,GAAGhu1C,EAAEsC,EAAEzC,GAAG,IAA0D+B,EAAtDD,EAAEW,EAAE6j1C,aAAaho1C,EAAEkF,GAAE07B,QAAQr9B,GAAE,EAAGP,EAAE,IAAa,IAARmB,EAAE82C,OAAqJ,IAAvIx3C,EAAET,KAAKS,GAAE,OAAO5B,GAAG,OAAOA,EAAE600C,gBAAiB,IAAO,EAAF120C,IAASyD,GAAEF,GAAE,EAAGY,EAAE82C,QAAQ,KAAY,OAAOp5C,GAAG,OAAOA,EAAE600C,gBAAc120C,GAAG,GAAEwF,GAAEN,GAAI,EAAFlF,GAAQ,OAAO6B,EAA2B,OAAxBsm1C,GAAGhk1C,GAAwB,QAArBtC,EAAEsC,EAAEuy0C,gBAA2C,QAAf700C,EAAEA,EAAEg70C,aAA4B,IAAY,EAAP140C,EAAEoE,MAAQpE,EAAE+l1C,MAAM,EAAE,OAAOro1C,EAAEwO,KAAKlM,EAAE+l1C,MAAM,EAAE/l1C,EAAE+l1C,MAAM,WAAW,OAAKln1C,EAAEQ,EAAEq9B,SAASh/B,EAAE2B,EAAEq9iB,SAAgBt9iB,GAAGC,EAAEW,EAAEoE,KAAKhF,EAAEY,EAAE4mF,MAAM/nF,EAAE,CAACuF,KAAK,SAASs4B,SAAS79B,GAAG,IAAO,EAAFQ,IAAM,OAAOD,GAAGA,EAAEym1C,WAAW,EAAEzm1C,EAAEyk1C,aAC7ehl1C,GAAGO,EAAEus1C,GAAG9s1C,EAAEQ,EAAE,EAAE,MAAM3B,EAAEyn1C,GAAGzn1C,EAAE2B,EAAE9B,EAAE,MAAM6B,EAAEjB,OAAO6B,EAAEtC,EAAES,OAAO6B,EAAEZ,EAAEguF,QAAQ1vF,EAAEsC,EAAE4mF,MAAMxnF,EAAEY,EAAE4mF,MAAM2rvC,cAAckZ,GAAGlu1C,GAAGyC,EAAEuy0C,cAAciZ,GAAG9t1C,GAAGku1C,GAAG5r1C,EAAEnB,IAAqB,GAAG,QAArBhD,EAAE6B,EAAE600C,gBAA2C,QAAfjz0C,EAAEzD,EAAE680C,YAAqB,OAGpM,SAAYh70C,EAAEsC,EAAEzC,EAAE8B,EAAExD,EAAEuD,EAAEP,GAAG,GAAGtB,EAAG,OAAW,IAARyC,EAAE82C,OAAiB92C,EAAE82C,QAAQ,IAAwB+0yC,GAAGnu1C,EAAEsC,EAAEnB,EAA3BQ,EAAE4d,GAAGiH,MAAM1kB,EAAE,SAAsB,OAAOQ,EAAEuy0C,eAAqBvy0C,EAAE4mF,MAAMlpF,EAAEkpF,MAAM5mF,EAAE82C,OAAO,IAAI,OAAK13C,EAAEC,EAAEq9iB,SAAS7gjB,EAAEmE,EAAEoE,KAAK/E,EAAEss1C,GAAG,CAACvn1C,KAAK,UAAUs4B,SAASr9B,EAAEq9B,UAAU7gC,EAAE,EAAE,OAAMuD,EAAE+l1C,GAAG/l1C,EAAEvD,EAAEgD,EAAE,OAAQi4C,OAAO,EAAEz3C,EAAElB,OAAO6B,EAAEZ,EAAEjB,OAAO6B,EAAEX,EAAE+tF,QAAQhuF,EAAEY,EAAE4mF,MAAMvnF,EAAE,IAAY,EAAPW,EAAEoE,OAASgh1C,GAAGpl1C,EAAEtC,EAAEkpF,MAAM,KAAK/nF,GAAGmB,EAAE4mF,MAAM2rvC,cAAckZ,GAAG5s1C,GAAGmB,EAAEuy0C,cAAciZ,GAAUps1C,GAAE,GAAG,IAAY,EAAPY,EAAEoE,MAAQ,OAAOyn1C,GAAGnu1C,EAAEsC,EAAEnB,EAAE,MAAM,GAAG,OAAOhD,EAAEqQ,KAAK,CAChd,GADid7M,EAAExD,EAAEirF,aAAajrF,EAAEirF,YAAY466B,QAC3e,IAAIpigC,EAAED,EAAEys1C,KAA0C,OAArCzs1C,EAAEC,EAA0Cus1C,GAAGnu1C,EAAEsC,EAAEnB,EAA/BQ,EAAE4d,GAAlB7d,EAAE8kB,MAAM1kB,EAAE,MAAaH,OAAE,GAA0B,CAAwB,GAAvBC,EAAE,IAAKT,EAAEnB,EAAEmo1C,YAAeviR,IAAIhkkC,EAAE,CAAK,GAAG,QAAPD,EAAEqD,IAAc,CAAC,OAAO7D,GAAGA,GAAG,KAAK,EAAEhD,EAAE,EAAE,MAAM,KAAK,GAAGA,EAAE,EAAE,MAAM,KAAK,GAAG,KAAK,IAAI,KAAK,IAAI,KAAK,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,MAAM,KAAK,MAAM,KAAK,MAAM,KAAK,OAAO,KAAK,OAAO,KAAK,OAAO,KAAK,QAAQ,KAAK,QAAQ,KAAK,QAAQ,KAAK,QAAQ,KAAK,SAAS,KAAK,SAAS,KAAK,SAASA,EAAE,GAAG,MAAM,KAAK,UAAUA,EAAE,UAAU,MAAM,QAAQA,EAAE,EAChd,KADkdA,EAAE,IAAKA,GAAGwD,EAAEk60C,eAAe160C,IAAI,EAAEhD,IAC5eA,IAAIuD,EAAE0k1C,YAAY1k1C,EAAE0k1C,UAAUjo1C,EAAEsq1C,GAAGzo1C,EAAE7B,GAAGgf,GAAGxb,EAAE3B,EAAE7B,GAAG,GAAG,CAA0B,OAAzBkw1C,KAAgCF,GAAGnu1C,EAAEsC,EAAEnB,EAAlCQ,EAAE4d,GAAGiH,MAAM1kB,EAAE,OAAyB,CAAC,MAAG,OAAO3D,EAAEqQ,MAAYlM,EAAE82C,OAAO,IAAI92C,EAAE4mF,MAAMlpF,EAAEkpF,MAAM5mF,EAAEgs1C,GAAGjs1C,KAAK,KAAKrC,GAAG7B,EAAEow1C,YAAYjs1C,EAAE,OAAKtC,EAAE0B,EAAE4z0C,YAAYuQ,GAAGvC,GAAGnl1C,EAAEirF,aAAaw8vC,GAAGtj1C,EAAEO,IAAE,EAAGij1C,GAAG,KAAK,OAAO9l1C,IAAIol1C,GAAGC,MAAMrouB,GAAGoouB,GAAGC,MAAME,GAAGH,GAAGC,MAAMC,GAAGtouB,GAAGh9mB,EAAEuqB,GAAGg7zC,GAAGvl1C,EAAEugX,SAAS+k+B,GAAGhj1C,IAAGA,EAAE4r1C,GAAG5r1C,EAAEX,EAAEq9B,WAAYoa,OAAO,KAAY92C,EAAC,CALrKks1C,CAAGxu1C,EAAEsC,EAAEnB,EAAEQ,EAAEC,EAAEzD,EAAE0B,GAAG,GAAG6B,EAAE,CAACA,EAAEC,EAAEq9iB,SAAS79iB,EAAEmB,EAAEoE,KAAe9E,GAAVzD,EAAE6B,EAAEkpF,OAAUwG,QAAQ,IAAIhtF,EAAE,CAACgE,KAAK,SAASs4B,SAASr9B,EAAEq9B,UAChF,OAD0F,IAAO,EAAF79B,IAAMmB,EAAE4mF,QAAQ/qF,IAAGwD,EAAEW,EAAE4mF,OAAQi/vC,WAAW,EAAExm1C,EAAEwk1C,aAAazj1C,EAAEJ,EAAE2j1C,UAAU,OAAOtk1C,EAAE0l1C,GAAGlp1C,EAAEuE,IAAK+r1C,aAA4B,SAAftw1C,EAAEsw1C,aAAuB,OAAO7s1C,EAAEF,EAAE2l1C,GAAGzl1C,EAAEF,IAAIA,EAAE+l1C,GAAG/l1C,EAAEP,EAAEtB,EAAE,OAAQu5C,OAAO,EAAG13C,EAAEjB,OACnf6B,EAAEX,EAAElB,OAAO6B,EAAEX,EAAE+tF,QAAQhuF,EAAEY,EAAE4mF,MAAMvnF,EAAEA,EAAED,EAAEA,EAAEY,EAAE4mF,MAA8B/nF,EAAE,QAA1BA,EAAEnB,EAAEkpF,MAAM2rvC,eAAyBkZ,GAAGlu1C,GAAG,CAACit1C,UAAU3r1C,EAAE2r1C,UAAUjt1C,EAAEkt1C,UAAU,KAAKhotC,YAAY5jI,EAAE4jI,aAAarjI,EAAEmz0C,cAAc1z0C,EAAEO,EAAEym1C,WAAWno1C,EAAEmo1C,YAAYto1C,EAAEyC,EAAEuy0C,cAAciZ,GAAUns1C,CAAC,CAAoO,OAAzN3B,GAAV0B,EAAE1B,EAAEkpF,OAAUwG,QAAQ/tF,EAAE0l1C,GAAG3l1C,EAAE,CAACgF,KAAK,UAAUs4B,SAASr9B,EAAEq9B,WAAW,IAAY,EAAP18B,EAAEoE,QAAU/E,EAAE0m1C,MAAMxo1C,GAAG8B,EAAElB,OAAO6B,EAAEX,EAAE+tF,QAAQ,KAAK,OAAO1vF,IAAkB,QAAdH,EAAEyC,EAAE2j1C,YAAoB3j1C,EAAE2j1C,UAAU,CAACjm1C,GAAGsC,EAAE82C,OAAO,IAAIv5C,EAAEgB,KAAKb,IAAIsC,EAAE4mF,MAAMvnF,EAAEW,EAAEuy0C,cAAc,KAAYlz0C,CAAC,CACnd,SAASus1C,GAAGlu1C,EAAEsC,GAA8D,OAA3DA,EAAE2r1C,GAAG,CAACvn1C,KAAK,UAAUs4B,SAAS18B,GAAGtC,EAAE0G,KAAK,EAAE,OAAQjG,OAAOT,EAASA,EAAEkpF,MAAM5mF,CAAC,CAAC,SAAS6r1C,GAAGnu1C,EAAEsC,EAAEzC,EAAE8B,GAAwG,OAArG,OAAOA,GAAGil1C,GAAGjl1C,GAAG+l1C,GAAGpl1C,EAAEtC,EAAEkpF,MAAM,KAAKrpF,IAAGG,EAAEku1C,GAAG5r1C,EAAEA,EAAE6j1C,aAAannzC,WAAYoa,OAAO,EAAE92C,EAAEuy0C,cAAc,KAAY700C,CAAC,CAGkJ,SAAS0u1C,GAAG1u1C,EAAEsC,EAAEzC,GAAGG,EAAEqo1C,OAAO/l1C,EAAE,IAAIX,EAAE3B,EAAE+60C,UAAU,OAAOp50C,IAAIA,EAAE0m1C,OAAO/l1C,GAAG4l1C,GAAGlo1C,EAAES,OAAO6B,EAAEzC,EAAE,CACxc,SAAS8u1C,GAAG3u1C,EAAEsC,EAAEzC,EAAE8B,EAAExD,GAAG,IAAIuD,EAAE1B,EAAE600C,cAAc,OAAOnz0C,EAAE1B,EAAE600C,cAAc,CAAC+Z,YAAYts1C,EAAEus1C,UAAU,KAAKC,mBAAmB,EAAEnr0C,KAAKhiB,EAAE67L,KAAK39L,EAAEkv1C,SAAS5w1C,IAAIuD,EAAEkt1C,YAAYts1C,EAAEZ,EAAEmt1C,UAAU,KAAKnt1C,EAAEot1C,mBAAmB,EAAEpt1C,EAAEiiB,KAAKhiB,EAAED,EAAE87L,KAAK39L,EAAE6B,EAAEqt1C,SAAS5w1C,EAAE,CAC3O,SAASw0d,GAAG3yd,EAAEsC,EAAEzC,GAAG,IAAI8B,EAAEW,EAAE6j1C,aAAaho1C,EAAEwD,EAAEso1C,YAAYvo1C,EAAEC,EAAE67L,KAAsC,GAAjCt+K,GAAGlf,EAAEsC,EAAEX,EAAEq9B,SAASn/B,GAAkB,IAAO,GAAtB8B,EAAE0B,GAAE07B,UAAqBp9B,EAAI,EAAFA,EAAI,EAAEW,EAAE82C,OAAO,QAAQ,CAAC,GAAG,OAAOp5C,GAAG,IAAa,IAARA,EAAEo5C,OAAWp5C,EAAE,IAAIA,EAAEsC,EAAE4mF,MAAM,OAAOlpF,GAAG,CAAC,GAAG,KAAKA,EAAEoW,IAAI,OAAOpW,EAAE600C,eAAe6Z,GAAG1u1C,EAAEH,EAAEyC,QAAQ,GAAG,KAAKtC,EAAEoW,IAAIs40C,GAAG1u1C,EAAEH,EAAEyC,QAAQ,GAAG,OAAOtC,EAAEkpF,MAAM,CAAClpF,EAAEkpF,MAAMzoF,OAAOT,EAAEA,EAAEA,EAAEkpF,MAAM,QAAQ,CAAC,GAAGlpF,IAAIsC,EAAE,MAAMtC,EAAE,KAAK,OAAOA,EAAE0vF,SAAS,CAAC,GAAG,OAAO1vF,EAAES,QAAQT,EAAES,SAAS6B,EAAE,MAAMtC,EAAEA,EAAEA,EAAES,MAAM,CAACT,EAAE0vF,QAAQjvF,OAAOT,EAAES,OAAOT,EAAEA,EAAE0vF,OAAO,CAAC/tF,GAAG,CAAC,CAAQ,GAAPgC,GAAEN,GAAE1B,GAAM,IAAY,EAAPW,EAAEoE,MAAQpE,EAAEuy0C,cAC/e,UAAU,OAAO120C,GAAG,IAAK,WAAqB,IAAV0B,EAAEyC,EAAE4mF,MAAU/qF,EAAE,KAAK,OAAO0B,GAAiB,QAAdG,EAAEH,EAAEk70C,YAAoB,OAAOiP,GAAGhq1C,KAAK7B,EAAE0B,GAAGA,EAAEA,EAAE6vF,QAAY,QAAJ7vF,EAAE1B,IAAYA,EAAEmE,EAAE4mF,MAAM5mF,EAAE4mF,MAAM,OAAO/qF,EAAE0B,EAAE6vF,QAAQ7vF,EAAE6vF,QAAQ,MAAMi/vC,GAAGrs1C,GAAE,EAAGnE,EAAE0B,EAAE6B,GAAG,MAAM,IAAK,YAA6B,IAAjB7B,EAAE,KAAK1B,EAAEmE,EAAE4mF,MAAU5mF,EAAE4mF,MAAM,KAAK,OAAO/qF,GAAG,CAAe,GAAG,QAAjB6B,EAAE7B,EAAE480C,YAAuB,OAAOiP,GAAGhq1C,GAAG,CAACsC,EAAE4mF,MAAM/qF,EAAE,KAAK,CAAC6B,EAAE7B,EAAEuxF,QAAQvxF,EAAEuxF,QAAQ7vF,EAAEA,EAAE1B,EAAEA,EAAE6B,CAAC,CAAC2u1C,GAAGrs1C,GAAE,EAAGzC,EAAE,KAAK6B,GAAG,MAAM,IAAK,WAAWit1C,GAAGrs1C,GAAE,EAAG,KAAK,UAAK,GAAQ,MAAM,QAAQA,EAAEuy0C,cAAc,KAAK,OAAOvy0C,EAAE4mF,KAAK,CAC7d,SAAS0yF,GAAG57K,EAAEsC,GAAG,IAAY,EAAPA,EAAEoE,OAAS,OAAO1G,IAAIA,EAAE+60C,UAAU,KAAKz40C,EAAEy40C,UAAU,KAAKz40C,EAAE82C,OAAO,EAAE,CAAC,SAAS/6B,GAAGre,EAAEsC,EAAEzC,GAAyD,GAAtD,OAAOG,IAAIsC,EAAE24J,aAAaj7J,EAAEi7J,cAAc4lrB,IAAIv+0B,EAAE+l1C,MAAS,IAAKxo1C,EAAEyC,EAAE6l1C,YAAY,OAAO,KAAK,GAAG,OAAOno1C,GAAGsC,EAAE4mF,QAAQlpF,EAAEkpF,MAAM,MAAM1iE,MAAM1kB,EAAE,MAAM,GAAG,OAAOQ,EAAE4mF,MAAM,CAA4C,IAAjCrpF,EAAEwn1C,GAAZrn1C,EAAEsC,EAAE4mF,MAAalpF,EAAEmm1C,cAAc7j1C,EAAE4mF,MAAMrpF,EAAMA,EAAEY,OAAO6B,EAAE,OAAOtC,EAAE0vF,SAAS1vF,EAAEA,EAAE0vF,SAAQ7vF,EAAEA,EAAE6vF,QAAQ23vC,GAAGrn1C,EAAEA,EAAEmm1C,eAAgB1l1C,OAAO6B,EAAEzC,EAAE6vF,QAAQ,IAAI,CAAC,OAAOptF,EAAE4mF,KAAK,CAO9a,SAAS8lwC,GAAGhv1C,EAAEsC,GAAG,IAAIO,GAAE,OAAO7C,EAAE+u1C,UAAU,IAAK,SAASzs1C,EAAEtC,EAAEw9L,KAAK,IAAI,IAAI39L,EAAE,KAAK,OAAOyC,GAAG,OAAOA,EAAEy40C,YAAYl70C,EAAEyC,GAAGA,EAAEA,EAAEotF,QAAQ,OAAO7vF,EAAEG,EAAEw9L,KAAK,KAAK39L,EAAE6vF,QAAQ,KAAK,MAAM,IAAK,YAAY7vF,EAAEG,EAAEw9L,KAAK,IAAI,IAAI77L,EAAE,KAAK,OAAO9B,GAAG,OAAOA,EAAEk70C,YAAYp50C,EAAE9B,GAAGA,EAAEA,EAAE6vF,QAAQ,OAAO/tF,EAAEW,GAAG,OAAOtC,EAAEw9L,KAAKx9L,EAAEw9L,KAAK,KAAKx9L,EAAEw9L,KAAK9tG,QAAQ,KAAK/tF,EAAE+tF,QAAQ,KAAK,CAC5U,SAASltF,GAAExC,GAAG,IAAIsC,EAAE,OAAOtC,EAAE+60C,WAAW/60C,EAAE+60C,UAAU7xvC,QAAQlpF,EAAEkpF,MAAMrpF,EAAE,EAAE8B,EAAE,EAAE,GAAGW,EAAE,IAAI,IAAInE,EAAE6B,EAAEkpF,MAAM,OAAO/qF,GAAG0B,GAAG1B,EAAEkq1C,MAAMlq1C,EAAEgq1C,WAAWxm1C,GAAkB,SAAfxD,EAAEsw1C,aAAsB9s1C,GAAW,SAARxD,EAAEi7C,MAAej7C,EAAEsC,OAAOT,EAAE7B,EAAEA,EAAEuxF,aAAa,IAAIvxF,EAAE6B,EAAEkpF,MAAM,OAAO/qF,GAAG0B,GAAG1B,EAAEkq1C,MAAMlq1C,EAAEgq1C,WAAWxm1C,GAAGxD,EAAEsw1C,aAAa9s1C,GAAGxD,EAAEi7C,MAAMj7C,EAAEsC,OAAOT,EAAE7B,EAAEA,EAAEuxF,QAAyC,OAAjC1vF,EAAEyu1C,cAAc9s1C,EAAE3B,EAAEmo1C,WAAWto1C,EAASyC,CAAC,CAC7V,SAAS2s1C,GAAGjv1C,EAAEsC,EAAEzC,GAAG,IAAI8B,EAAEW,EAAE6j1C,aAAmB,OAANR,GAAGrj1C,GAAUA,EAAE8T,KAAK,KAAK,EAAE,KAAK,GAAG,KAAK,GAAG,KAAK,EAAE,KAAK,GAAG,KAAK,EAAE,KAAK,EAAE,KAAK,GAAG,KAAK,EAAE,KAAK,GAAG,OAAO5T,GAAEF,GAAG,KAAK,KAAK,EAUtD,KAAK,GAAG,OAAOii1C,GAAGji1C,EAAEiJ,OAAOi50C,KAAKhi1C,GAAEF,GAAG,KAVqD,KAAK,EAA2Q,OAAzQX,EAAEW,EAAEw40C,UAAU+O,KAAKnm1C,GAAEwg1C,IAAIxg1C,GAAEc,IAAG2l1C,KAAKxo1C,EAAE6r1C,iBAAiB7r1C,EAAEwqC,QAAQxqC,EAAE6r1C,eAAe7r1C,EAAE6r1C,eAAe,MAAS,OAAOxt1C,GAAG,OAAOA,EAAEkpF,QAAMs9vC,GAAGlk1C,GAAGA,EAAE82C,OAAO,EAAE,OAAOp5C,GAAGA,EAAE600C,cAAcyH,cAAc,IAAa,IAARh60C,EAAE82C,SAAa92C,EAAE82C,OAAO,KAAK,OAAO0syC,KAAKoJ,GAAGpJ,IAAIA,GAAG,QAAO6H,GAAG3t1C,EAAEsC,GAAGE,GAAEF,GAAU,KAAK,KAAK,EAAEyn1C,GAAGzn1C,GAAG,IAAInE,EAAEwr1C,GAAGxjT,GAAGpngC,SAC7e,GAATl/B,EAAEyC,EAAEiJ,KAAQ,OAAOvL,GAAG,MAAMsC,EAAEw40C,UAAU8S,GAAG5t1C,EAAEsC,EAAEzC,EAAE8B,EAAExD,GAAG6B,EAAE4gC,MAAMt+B,EAAEs+B,MAAMt+B,EAAE82C,OAAO,IAAI92C,EAAE82C,OAAO,aAAa,CAAC,IAAIz3C,EAAE,CAAC,GAAG,OAAOW,EAAEw40C,UAAU,MAAMt0zC,MAAM1kB,EAAE,MAAW,OAALU,GAAEF,GAAU,IAAI,CAAkB,GAAjBtC,EAAE2p1C,GAAGD,GAAG3qzC,SAAYynzC,GAAGlk1C,GAAG,CAACX,EAAEW,EAAEw40C,UAAUj70C,EAAEyC,EAAEiJ,KAAK,IAAI7J,EAAEY,EAAEmk1C,cAA+C,OAAjC9k1C,EAAE+h1C,IAAIph1C,EAAEX,EAAEgi1C,IAAIji1C,EAAE1B,EAAE,IAAY,EAAPsC,EAAEoE,MAAe7G,GAAG,IAAK,SAAS0E,GAAE,SAAS5C,GAAG4C,GAAE,QAAQ5C,GAAG,MAAM,IAAK,SAAS,IAAK,SAAS,IAAK,QAAQ4C,GAAE,OAAO5C,GAAG,MAAM,IAAK,QAAQ,IAAK,QAAQ,IAAIxD,EAAE,EAAEA,EAAE4j1C,GAAG1i1C,OAAOlB,IAAIoG,GAAEw90C,GAAG5j1C,GAAGwD,GAAG,MAAM,IAAK,SAAS4C,GAAE,QAAQ5C,GAAG,MAAM,IAAK,MAAM,IAAK,QAAQ,IAAK,OAAO4C,GAAE,QACnhB5C,GAAG4C,GAAE,OAAO5C,GAAG,MAAM,IAAK,UAAU4C,GAAE,SAAS5C,GAAG,MAAM,IAAK,QAAQ+zB,EAAG/zB,EAAED,GAAG6C,GAAE,UAAU5C,GAAG,MAAM,IAAK,SAASA,EAAEu40C,cAAc,CAACiV,cAAczt1C,EAAE6s/B,UAAUhq/B,GAAE,UAAU5C,GAAG,MAAM,IAAK,WAAWgovC,GAAGhovC,EAAED,GAAG6C,GAAE,UAAU5C,GAAkB,IAAI,IAAIR,KAAvBulxB,GAAG7mxB,EAAE6B,GAAGvD,EAAE,KAAkBuD,EAAE,GAAGA,EAAE/C,eAAewC,GAAG,CAAC,IAAIS,EAAEF,EAAEP,GAAG,aAAaA,EAAE,iBAAkBS,EAAED,EAAEqqF,cAAcpqF,KAAI,IAAKF,EAAE0t1C,0BAA0BzM,GAAGhh1C,EAAEqqF,YAAYpqF,EAAE5B,GAAG7B,EAAE,CAAC,WAAWyD,IAAI,iBAAkBA,GAAGD,EAAEqqF,cAAc,GAAGpqF,KAAI,IAAKF,EAAE0t1C,0BAA0BzM,GAAGhh1C,EAAEqqF,YAC1epqF,EAAE5B,GAAG7B,EAAE,CAAC,WAAW,GAAGyD,IAAIssB,EAAGvvB,eAAewC,IAAI,MAAMS,GAAG,aAAaT,GAAGoD,GAAE,SAAS5C,EAAE,CAAC,OAAO9B,GAAG,IAAK,QAAQwpvC,EAAG1nvC,GAAG8nvC,EAAG9nvC,EAAED,GAAE,GAAI,MAAM,IAAK,WAAW2nvC,EAAG1nvC,GAAG8mvC,GAAG9mvC,GAAG,MAAM,IAAK,SAAS,IAAK,SAAS,MAAM,QAAQ,mBAAoBD,EAAEs7B,UAAUr7B,EAAE82nC,QAAQmqN,IAAIjh1C,EAAExD,EAAEmE,EAAEsm1C,YAAYjn1C,EAAE,OAAOA,IAAIW,EAAE82C,OAAO,EAAE,KAAK,CAACj4C,EAAE,IAAIhD,EAAEmqF,SAASnqF,EAAEA,EAAEgvF,cAAc,iCAAiCntF,IAAIA,EAAEk50C,GAAGr50C,IAAI,iCAAiCG,EAAE,WAAWH,IAAGG,EAAEmB,EAAEmH,cAAc,QAAS2wI,UAAU,qBAAuBj5I,EAAEA,EAAE67B,YAAY77B,EAAEmpF,aAC/f,iBAAkBxnF,EAAEmqe,GAAG9re,EAAEmB,EAAEmH,cAAczI,EAAE,CAACise,GAAGnqe,EAAEmqe,MAAM9re,EAAEmB,EAAEmH,cAAczI,GAAG,WAAWA,IAAIsB,EAAEnB,EAAE2B,EAAE4s/B,SAASpt/B,EAAEot/B,UAAS,EAAG5s/B,EAAEiiB,OAAOziB,EAAEyiB,KAAKjiB,EAAEiiB,QAAQ5jB,EAAEmB,EAAEq6vB,gBAAgBx7vB,EAAEH,GAAGG,EAAE0j1C,IAAIph1C,EAAEtC,EAAE2j1C,IAAIhi1C,EAAE+r1C,GAAG1t1C,EAAEsC,GAAE,GAAG,GAAIA,EAAEw40C,UAAU960C,EAAEA,EAAE,CAAW,OAAVmB,EAAE4z0C,GAAGl10C,EAAE8B,GAAU9B,GAAG,IAAK,SAAS0E,GAAE,SAASvE,GAAGuE,GAAE,QAAQvE,GAAG7B,EAAEwD,EAAE,MAAM,IAAK,SAAS,IAAK,SAAS,IAAK,QAAQ4C,GAAE,OAAOvE,GAAG7B,EAAEwD,EAAE,MAAM,IAAK,QAAQ,IAAK,QAAQ,IAAIxD,EAAE,EAAEA,EAAE4j1C,GAAG1i1C,OAAOlB,IAAIoG,GAAEw90C,GAAG5j1C,GAAG6B,GAAG7B,EAAEwD,EAAE,MAAM,IAAK,SAAS4C,GAAE,QAAQvE,GAAG7B,EAAEwD,EAAE,MAAM,IAAK,MAAM,IAAK,QAAQ,IAAK,OAAO4C,GAAE,QAClfvE,GAAGuE,GAAE,OAAOvE,GAAG7B,EAAEwD,EAAE,MAAM,IAAK,UAAU4C,GAAE,SAASvE,GAAG7B,EAAEwD,EAAE,MAAM,IAAK,QAAQ+zB,EAAG11B,EAAE2B,GAAGxD,EAAE+rvC,EAAGlqvC,EAAE2B,GAAG4C,GAAE,UAAUvE,GAAG,MAAM,IAAK,SAAiL,QAAQ7B,EAAEwD,QAAxK,IAAK,SAAS3B,EAAEk60C,cAAc,CAACiV,cAAcxt1C,EAAE4s/B,UAAUpw/B,EAAE0F,EAAE,CAAC,EAAElC,EAAE,CAACxB,WAAM,IAASoE,GAAE,UAAUvE,GAAG,MAAM,IAAK,WAAW2pvC,GAAG3pvC,EAAE2B,GAAGxD,EAAEorvC,GAAGvpvC,EAAE2B,GAAG4C,GAAE,UAAUvE,GAAiC,IAAI0B,KAAhBglxB,GAAG7mxB,EAAE1B,GAAGyD,EAAEzD,EAAa,GAAGyD,EAAEjD,eAAe+C,GAAG,CAAC,IAAIgB,EAAEd,EAAEF,GAAG,UAAUA,EAAEkovC,GAAG5pvC,EAAE0C,GAAG,4BAA4BhB,EAAuB,OAApBgB,EAAEA,EAAEA,EAAEsx0C,YAAO,IAAgB6E,GAAG740C,EAAE0C,GAAI,aAAahB,EAAE,iBAAkBgB,GAAG,aAC7e7C,GAAG,KAAK6C,IAAIky0C,GAAG500C,EAAE0C,GAAG,iBAAkBA,GAAGky0C,GAAG500C,EAAE,GAAG0C,GAAG,mCAAmChB,GAAG,6BAA6BA,GAAG,cAAcA,IAAIwsB,EAAGvvB,eAAe+C,GAAG,MAAMgB,GAAG,aAAahB,GAAG6C,GAAE,SAASvE,GAAG,MAAM0C,GAAG0rB,EAAGpuB,EAAE0B,EAAEgB,EAAEvB,GAAG,CAAC,OAAOtB,GAAG,IAAK,QAAQwpvC,EAAGrpvC,GAAGypvC,EAAGzpvC,EAAE2B,GAAE,GAAI,MAAM,IAAK,WAAW0nvC,EAAGrpvC,GAAGyovC,GAAGzovC,GAAG,MAAM,IAAK,SAAS,MAAM2B,EAAExB,OAAOH,EAAE27B,aAAa,QAAQ,GAAGlI,EAAG9xB,EAAExB,QAAQ,MAAM,IAAK,SAASH,EAAEuu/B,WAAW5s/B,EAAE4s/B,SAAmB,OAAV7s/B,EAAEC,EAAExB,OAAcylV,GAAG5lV,IAAI2B,EAAE4s/B,SAAS7s/B,GAAE,GAAI,MAAMC,EAAEw6H,cAAcypN,GAAG5lV,IAAI2B,EAAE4s/B,SAAS5s/B,EAAEw6H,cAClf,GAAI,MAAM,QAAQ,mBAAoBh+H,EAAE6+B,UAAUh9B,EAAEy4nC,QAAQmqN,IAAI,OAAO/i1C,GAAG,IAAK,SAAS,IAAK,QAAQ,IAAK,SAAS,IAAK,WAAW8B,IAAIA,EAAE0t1C,UAAU,MAAMrv1C,EAAE,IAAK,MAAM2B,GAAE,EAAG,MAAM3B,EAAE,QAAQ2B,GAAE,EAAG,CAACA,IAAIW,EAAE82C,OAAO,EAAE,CAAC,OAAO92C,EAAEs+B,MAAMt+B,EAAE82C,OAAO,IAAI92C,EAAE82C,OAAO,QAAQ,CAAM,OAAL52C,GAAEF,GAAU,KAAK,KAAK,EAAE,GAAGtC,GAAG,MAAMsC,EAAEw40C,UAAU+S,GAAG7t1C,EAAEsC,EAAEtC,EAAEym1C,cAAc9k1C,OAAO,CAAC,GAAG,iBAAkBA,GAAG,OAAOW,EAAEw40C,UAAU,MAAMt0zC,MAAM1kB,EAAE,MAAsC,GAAhCjC,EAAE8p1C,GAAGxjT,GAAGpngC,SAAS4qzC,GAAGD,GAAG3qzC,SAAYynzC,GAAGlk1C,GAAG,CAAyC,GAAxCX,EAAEW,EAAEw40C,UAAUj70C,EAAEyC,EAAEmk1C,cAAc9k1C,EAAE+h1C,IAAIph1C,GAAKZ,EAAEC,EAAE2ppC,YAAYzrpC,IAC/e,QADofG,EACvf4l1C,IAAY,OAAO5l1C,EAAEoW,KAAK,KAAK,EAAEus0C,GAAGhh1C,EAAE2ppC,UAAUzrpC,EAAE,IAAY,EAAPG,EAAE0G,OAAS,MAAM,KAAK,GAAE,IAAK1G,EAAEym1C,cAAc2I,0BAA0BzM,GAAGhh1C,EAAE2ppC,UAAUzrpC,EAAE,IAAY,EAAPG,EAAE0G,OAAShF,IAAIY,EAAE82C,OAAO,EAAE,MAAMz3C,GAAG,IAAI9B,EAAEyoF,SAASzoF,EAAEA,EAAEstF,eAAe8sK,eAAet4P,IAAK+h1C,IAAIph1C,EAAEA,EAAEw40C,UAAUn50C,CAAC,CAAM,OAALa,GAAEF,GAAU,KAAK,KAAK,GAA0B,GAAvBoB,GAAEL,IAAG1B,EAAEW,EAAEuy0C,cAAiB,OAAO700C,GAAG,OAAOA,EAAE600C,eAAe,OAAO700C,EAAE600C,cAAcmG,WAAW,CAAC,GAAGn40C,IAAG,OAAOgj1C,IAAI,IAAY,EAAPvj1C,EAAEoE,OAAS,IAAa,IAARpE,EAAE82C,OAAWstyC,KAAKC,KAAKrk1C,EAAE82C,OAAO,MAAM13C,GAAE,OAAQ,GAAGA,EAAE8k1C,GAAGlk1C,GAAG,OAAOX,GAAG,OAAOA,EAAEq50C,WAAW,CAAC,GAAG,OAC5fh70C,EAAE,CAAC,IAAI0B,EAAE,MAAM8kB,MAAM1kB,EAAE,MAAqD,KAA7BJ,EAAE,QAApBA,EAAEY,EAAEuy0C,eAAyBnz0C,EAAEs50C,WAAW,MAAW,MAAMx0zC,MAAM1kB,EAAE,MAAMJ,EAAEgi1C,IAAIph1C,CAAC,MAAMqk1C,KAAK,IAAa,IAARrk1C,EAAE82C,SAAa92C,EAAEuy0C,cAAc,MAAMvy0C,EAAE82C,OAAO,EAAE52C,GAAEF,GAAGZ,GAAE,CAAE,MAAM,OAAOok1C,KAAKoJ,GAAGpJ,IAAIA,GAAG,MAAMpk1C,GAAE,EAAG,IAAIA,EAAE,OAAe,MAARY,EAAE82C,MAAY92C,EAAE,IAAI,CAAC,OAAG,IAAa,IAARA,EAAE82C,QAAkB92C,EAAE+l1C,MAAMxo1C,EAAEyC,KAAEX,EAAE,OAAOA,KAAO,OAAO3B,GAAG,OAAOA,EAAE600C,gBAAgBlz0C,IAAIW,EAAE4mF,MAAM9vC,OAAO,KAAK,IAAY,EAAP92C,EAAEoE,QAAU,OAAO1G,GAAG,IAAe,EAAVqD,GAAE07B,SAAW,IAAI77B,KAAIA,GAAE,GAAGmr1C,OAAO,OAAO/r1C,EAAEsm1C,cAActm1C,EAAE82C,OAAO,GAAG52C,GAAEF,GAAU,MAAK,KAAK,EAAE,OAAOun1C,KACrf8D,GAAG3t1C,EAAEsC,GAAG,OAAOtC,GAAGoi1C,GAAG9/0C,EAAEw40C,UAAUyB,eAAe/50C,GAAEF,GAAG,KAAK,KAAK,GAAG,OAAO2l1C,GAAG3l1C,EAAEiJ,KAAKy4I,UAAUxhJ,GAAEF,GAAG,KAA+C,KAAK,GAA0B,GAAvBoB,GAAEL,IAAwB,QAArB3B,EAAEY,EAAEuy0C,eAA0B,OAAOry0C,GAAEF,GAAG,KAAuC,GAAlCX,EAAE,IAAa,IAARW,EAAE82C,OAA4B,QAAjBj4C,EAAEO,EAAEmt1C,WAAsB,GAAGlt1C,EAAEqt1C,GAAGtt1C,GAAE,OAAQ,CAAC,GAAG,IAAIwB,IAAG,OAAOlD,GAAG,IAAa,IAARA,EAAEo5C,OAAW,IAAIp5C,EAAEsC,EAAE4mF,MAAM,OAAOlpF,GAAG,CAAS,GAAG,QAAXmB,EAAE6o1C,GAAGhq1C,IAAe,CAAmG,IAAlGsC,EAAE82C,OAAO,IAAI41yC,GAAGtt1C,GAAE,GAAoB,QAAhBC,EAAER,EAAEyn1C,eAAuBtm1C,EAAEsm1C,YAAYjn1C,EAAEW,EAAE82C,OAAO,GAAG92C,EAAEms1C,aAAa,EAAE9s1C,EAAE9B,EAAMA,EAAEyC,EAAE4mF,MAAM,OAAOrpF,GAAOG,EAAE2B,GAAND,EAAE7B,GAAQu5C,OAAO,SAC/d,QAAdj4C,EAAEO,EAAEq50C,YAAoBr50C,EAAEym1C,WAAW,EAAEzm1C,EAAE2m1C,MAAMro1C,EAAE0B,EAAEwnF,MAAM,KAAKxnF,EAAE+s1C,aAAa,EAAE/s1C,EAAE+k1C,cAAc,KAAK/k1C,EAAEmz0C,cAAc,KAAKnz0C,EAAEkn1C,YAAY,KAAKln1C,EAAEu5J,aAAa,KAAKv5J,EAAEo50C,UAAU,OAAOp50C,EAAEym1C,WAAWhn1C,EAAEgn1C,WAAWzm1C,EAAE2m1C,MAAMln1C,EAAEkn1C,MAAM3m1C,EAAEwnF,MAAM/nF,EAAE+nF,MAAMxnF,EAAE+s1C,aAAa,EAAE/s1C,EAAEuk1C,UAAU,KAAKvk1C,EAAE+k1C,cAActl1C,EAAEsl1C,cAAc/k1C,EAAEmz0C,cAAc1z0C,EAAE0z0C,cAAcnz0C,EAAEkn1C,YAAYzn1C,EAAEyn1C,YAAYln1C,EAAE6J,KAAKpK,EAAEoK,KAAKvL,EAAEmB,EAAE85J,aAAav5J,EAAEu5J,aAAa,OAAOj7J,EAAE,KAAK,CAACqo1C,MAAMro1C,EAAEqo1C,MAAMD,aAAapo1C,EAAEoo1C,eAAevo1C,EAAEA,EAAE6vF,QAA2B,OAAnB/rF,GAAEN,GAAY,EAAVA,GAAE07B,QAAU,GAAUz8B,EAAE4mF,KAAK,CAAClpF,EAClgBA,EAAE0vF,OAAO,CAAC,OAAOhuF,EAAE87L,MAAMz4L,KAAIuq1C,KAAKht1C,EAAE82C,OAAO,IAAIz3C,GAAE,EAAGqt1C,GAAGtt1C,GAAE,GAAIY,EAAE+l1C,MAAM,QAAQ,KAAK,CAAC,IAAI1m1C,EAAE,GAAW,QAAR3B,EAAEgq1C,GAAG7o1C,KAAa,GAAGmB,EAAE82C,OAAO,IAAIz3C,GAAE,EAAmB,QAAhB9B,EAAEG,EAAE4o1C,eAAuBtm1C,EAAEsm1C,YAAY/o1C,EAAEyC,EAAE82C,OAAO,GAAG41yC,GAAGtt1C,GAAE,GAAI,OAAOA,EAAE87L,MAAM,WAAW97L,EAAEqt1C,WAAW5t1C,EAAE450C,YAAYl40C,GAAE,OAAOL,GAAEF,GAAG,UAAU,EAAEyC,KAAIrD,EAAEot1C,mBAAmBQ,IAAI,aAAazv1C,IAAIyC,EAAE82C,OAAO,IAAIz3C,GAAE,EAAGqt1C,GAAGtt1C,GAAE,GAAIY,EAAE+l1C,MAAM,SAAS3m1C,EAAEkt1C,aAAazt1C,EAAEuuF,QAAQptF,EAAE4mF,MAAM5mF,EAAE4mF,MAAM/nF,IAAa,QAATtB,EAAE6B,EAAEiiB,MAAc9jB,EAAE6vF,QAAQvuF,EAAEmB,EAAE4mF,MAAM/nF,EAAEO,EAAEiiB,KAAKxiB,EAAE,CAAC,OAAG,OAAOO,EAAE87L,MAAYl7L,EAAEZ,EAAE87L,KAAK97L,EAAEmt1C,UAC9evs1C,EAAEZ,EAAE87L,KAAKl7L,EAAEotF,QAAQhuF,EAAEot1C,mBAAmB/p1C,KAAIzC,EAAEotF,QAAQ,KAAK7vF,EAAEwD,GAAE07B,QAAQp7B,GAAEN,GAAE1B,EAAI,EAAF9B,EAAI,EAAI,EAAFA,GAAKyC,IAAEE,GAAEF,GAAU,MAAK,KAAK,GAAG,KAAK,GAAG,OAAOit1C,KAAK5t1C,EAAE,OAAOW,EAAEuy0C,cAAc,OAAO700C,GAAG,OAAOA,EAAE600C,gBAAgBlz0C,IAAIW,EAAE82C,OAAO,MAAMz3C,GAAG,IAAY,EAAPW,EAAEoE,MAAQ,IAAQ,WAAHum1C,MAAiBzq1C,GAAEF,GAAkB,EAAfA,EAAEms1C,eAAiBns1C,EAAE82C,OAAO,OAAO52C,GAAEF,GAAG,KAAK,KAAK,GAAe,KAAK,GAAG,OAAO,KAAK,MAAMkkB,MAAM1kB,EAAE,IAAIQ,EAAE8T,KAAM,CAClX,SAASo50C,GAAGxv1C,EAAEsC,GAAS,OAANqj1C,GAAGrj1C,GAAUA,EAAE8T,KAAK,KAAK,EAAE,OAAOmu0C,GAAGji1C,EAAEiJ,OAAOi50C,KAAiB,OAAZxk1C,EAAEsC,EAAE82C,QAAe92C,EAAE82C,OAAS,MAAHp5C,EAAS,IAAIsC,GAAG,KAAK,KAAK,EAAE,OAAOun1C,KAAKnm1C,GAAEwg1C,IAAIxg1C,GAAEc,IAAG2l1C,KAAe,IAAO,OAAjBnq1C,EAAEsC,EAAE82C,SAAqB,IAAO,IAAFp5C,IAAQsC,EAAE82C,OAAS,MAAHp5C,EAAS,IAAIsC,GAAG,KAAK,KAAK,EAAE,OAAOyn1C,GAAGzn1C,GAAG,KAAK,KAAK,GAA0B,GAAvBoB,GAAEL,IAAwB,QAArBrD,EAAEsC,EAAEuy0C,gBAA2B,OAAO700C,EAAEg70C,WAAW,CAAC,GAAG,OAAO140C,EAAEy40C,UAAU,MAAMv0zC,MAAM1kB,EAAE,MAAM6k1C,IAAI,CAAW,OAAS,OAAnB3m1C,EAAEsC,EAAE82C,QAAsB92C,EAAE82C,OAAS,MAAHp5C,EAAS,IAAIsC,GAAG,KAAK,KAAK,GAAG,OAAOoB,GAAEL,IAAG,KAAK,KAAK,EAAE,OAAOwm1C,KAAK,KAAK,KAAK,GAAG,OAAO5B,GAAG3l1C,EAAEiJ,KAAKy4I,UAAU,KAAK,KAAK,GAAG,KAAK,GAAG,OAAOursC,KAC1gB,KAAyB,QAAQ,OAAO,KAAK,CArB7C7B,GAAG,SAAS1t1C,EAAEsC,GAAG,IAAI,IAAIzC,EAAEyC,EAAE4mF,MAAM,OAAOrpF,GAAG,CAAC,GAAG,IAAIA,EAAEuW,KAAK,IAAIvW,EAAEuW,IAAIpW,EAAEuT,YAAY1T,EAAEi70C,gBAAgB,GAAG,IAAIj70C,EAAEuW,KAAK,OAAOvW,EAAEqpF,MAAM,CAACrpF,EAAEqpF,MAAMzoF,OAAOZ,EAAEA,EAAEA,EAAEqpF,MAAM,QAAQ,CAAC,GAAGrpF,IAAIyC,EAAE,MAAM,KAAK,OAAOzC,EAAE6vF,SAAS,CAAC,GAAG,OAAO7vF,EAAEY,QAAQZ,EAAEY,SAAS6B,EAAE,OAAOzC,EAAEA,EAAEY,MAAM,CAACZ,EAAE6vF,QAAQjvF,OAAOZ,EAAEY,OAAOZ,EAAEA,EAAE6vF,OAAO,CAAC,EAAEi+vC,GAAG,WAAW,EACxTC,GAAG,SAAS5t1C,EAAEsC,EAAEzC,EAAE8B,GAAG,IAAIxD,EAAE6B,EAAEym1C,cAAc,GAAGto1C,IAAIwD,EAAE,CAAC3B,EAAEsC,EAAEw40C,UAAU6O,GAAGD,GAAG3qzC,SAAS,IAA4R59B,EAAxRO,EAAE,KAAK,OAAO7B,GAAG,IAAK,QAAQ1B,EAAE+rvC,EAAGlqvC,EAAE7B,GAAGwD,EAAEuovC,EAAGlqvC,EAAE2B,GAAGD,EAAE,GAAG,MAAM,IAAK,SAASvD,EAAE0F,EAAE,CAAC,EAAE1F,EAAE,CAACgC,WAAM,IAASwB,EAAEkC,EAAE,CAAC,EAAElC,EAAE,CAACxB,WAAM,IAASuB,EAAE,GAAG,MAAM,IAAK,WAAWvD,EAAEorvC,GAAGvpvC,EAAE7B,GAAGwD,EAAE4nvC,GAAGvpvC,EAAE2B,GAAGD,EAAE,GAAG,MAAM,QAAQ,mBAAoBvD,EAAE6+B,SAAS,mBAAoBr7B,EAAEq7B,UAAUh9B,EAAEy4nC,QAAQmqN,IAAyB,IAAIph1C,KAAzBklxB,GAAG7mxB,EAAE8B,GAAS9B,EAAE,KAAc1B,EAAE,IAAIwD,EAAEhD,eAAe6C,IAAIrD,EAAEQ,eAAe6C,IAAI,MAAMrD,EAAEqD,GAAG,GAAG,UAAUA,EAAE,CAAC,IAAII,EAAEzD,EAAEqD,GAAG,IAAIL,KAAKS,EAAEA,EAAEjD,eAAewC,KACjftB,IAAIA,EAAE,CAAC,GAAGA,EAAEsB,GAAG,GAAG,KAAK,4BAA4BK,GAAG,aAAaA,GAAG,mCAAmCA,GAAG,6BAA6BA,GAAG,cAAcA,IAAI0sB,EAAGvvB,eAAe6C,GAAGE,IAAIA,EAAE,KAAKA,EAAEA,GAAG,IAAIb,KAAKW,EAAE,OAAO,IAAIA,KAAKG,EAAE,CAAC,IAAIe,EAAEf,EAAEH,GAAyB,GAAtBI,EAAE,MAAMzD,EAAEA,EAAEqD,QAAG,EAAUG,EAAEhD,eAAe6C,IAAIkB,IAAId,IAAI,MAAMc,GAAG,MAAMd,GAAG,GAAG,UAAUJ,EAAE,GAAGI,EAAE,CAAC,IAAIT,KAAKS,GAAGA,EAAEjD,eAAewC,IAAIuB,GAAGA,EAAE/D,eAAewC,KAAKtB,IAAIA,EAAE,CAAC,GAAGA,EAAEsB,GAAG,IAAI,IAAIA,KAAKuB,EAAEA,EAAE/D,eAAewC,IAAIS,EAAET,KAAKuB,EAAEvB,KAAKtB,IAAIA,EAAE,CAAC,GAAGA,EAAEsB,GAAGuB,EAAEvB,GAAG,MAAMtB,IAAI6B,IAAIA,EAAE,IAAIA,EAAEb,KAAKW,EACpf3B,IAAIA,EAAE6C,MAAM,4BAA4BlB,GAAGkB,EAAEA,EAAEA,EAAEsx0C,YAAO,EAAOpy0C,EAAEA,EAAEA,EAAEoy0C,YAAO,EAAO,MAAMtx0C,GAAGd,IAAIc,IAAIhB,EAAEA,GAAG,IAAIb,KAAKW,EAAEkB,IAAI,aAAalB,EAAE,iBAAkBkB,GAAG,iBAAkBA,IAAIhB,EAAEA,GAAG,IAAIb,KAAKW,EAAE,GAAGkB,GAAG,mCAAmClB,GAAG,6BAA6BA,IAAI0sB,EAAGvvB,eAAe6C,IAAI,MAAMkB,GAAG,aAAalB,GAAG+C,GAAE,SAASvE,GAAG0B,GAAGE,IAAIc,IAAIhB,EAAE,MAAMA,EAAEA,GAAG,IAAIb,KAAKW,EAAEkB,GAAG,CAAC7C,IAAI6B,EAAEA,GAAG,IAAIb,KAAK,QAAQhB,GAAG,IAAI2B,EAAEE,GAAKY,EAAEsm1C,YAAYpn1C,KAAEc,EAAE82C,OAAO,EAAC,CAAC,EAAEy0yC,GAAG,SAAS7t1C,EAAEsC,EAAEzC,EAAE8B,GAAG9B,IAAI8B,IAAIW,EAAE82C,OAAO,EAAE,EAkBlb,IAAIq2yC,IAAG,EAAGpr1C,IAAE,EAAGqr1C,GAAG,mBAAoB12yC,QAAQA,QAAQr0B,IAAI/f,GAAE,KAAK,SAAS+q1C,GAAG3v1C,EAAEsC,GAAG,IAAIzC,EAAEG,EAAE4gC,IAAI,GAAG,OAAO/gC,EAAE,GAAG,mBAAoBA,EAAE,IAAIA,EAAE,KAAK,CAAC,MAAM8B,GAAG6B,GAAExD,EAAEsC,EAAEX,EAAE,MAAM9B,EAAEk/B,QAAQ,IAAI,CAAC,SAAS6wzC,GAAG5v1C,EAAEsC,EAAEzC,GAAG,IAAIA,GAAG,CAAC,MAAM8B,GAAG6B,GAAExD,EAAEsC,EAAEX,EAAE,CAAC,CAAC,IAAIku1C,IAAG,EAIxR,SAASC,GAAG9v1C,EAAEsC,EAAEzC,GAAG,IAAI8B,EAAEW,EAAEsm1C,YAAyC,GAAG,QAAhCjn1C,EAAE,OAAOA,EAAEA,EAAEsq1C,WAAW,MAAiB,CAAC,IAAI9t1C,EAAEwD,EAAEA,EAAE5B,KAAK,EAAE,CAAC,IAAI5B,EAAEiY,IAAIpW,KAAKA,EAAE,CAAC,IAAI0B,EAAEvD,EAAEi/I,QAAQj/I,EAAEi/I,aAAQ,OAAO,IAAS17I,GAAGku1C,GAAGtt1C,EAAEzC,EAAE6B,EAAE,CAACvD,EAAEA,EAAE4B,IAAI,OAAO5B,IAAIwD,EAAE,CAAC,CAAC,SAASou1C,GAAG/v1C,EAAEsC,GAAgD,GAAG,QAAhCA,EAAE,QAAlBA,EAAEA,EAAEsm1C,aAAuBtm1C,EAAE2p1C,WAAW,MAAiB,CAAC,IAAIps1C,EAAEyC,EAAEA,EAAEvC,KAAK,EAAE,CAAC,IAAIF,EAAEuW,IAAIpW,KAAKA,EAAE,CAAC,IAAI2B,EAAE9B,EAAEX,OAAOW,EAAEu9I,QAAQz7I,GAAG,CAAC9B,EAAEA,EAAEE,IAAI,OAAOF,IAAIyC,EAAE,CAAC,CAAC,SAAS0t1C,GAAGhw1C,GAAG,IAAIsC,EAAEtC,EAAE4gC,IAAI,GAAG,OAAOt+B,EAAE,CAAC,IAAIzC,EAAEG,EAAE860C,UAAiB960C,EAAEoW,IAA8BpW,EAAEH,EAAE,mBAAoByC,EAAEA,EAAEtC,GAAGsC,EAAEy8B,QAAQ/+B,CAAC,CAAC,CAClf,SAASiw1C,GAAGjw1C,GAAG,IAAIsC,EAAEtC,EAAE+60C,UAAU,OAAOz40C,IAAItC,EAAE+60C,UAAU,KAAKkV,GAAG3t1C,IAAItC,EAAEkpF,MAAM,KAAKlpF,EAAEim1C,UAAU,KAAKjm1C,EAAE0vF,QAAQ,KAAK,IAAI1vF,EAAEoW,KAAoB,QAAd9T,EAAEtC,EAAE860C,oBAA4Bx40C,EAAEoh1C,WAAWph1C,EAAEqh1C,WAAWrh1C,EAAE2/0C,WAAW3/0C,EAAEsh1C,WAAWth1C,EAAEuh1C,KAAM7j1C,EAAE860C,UAAU,KAAK960C,EAAES,OAAO,KAAKT,EAAEi7J,aAAa,KAAKj7J,EAAEym1C,cAAc,KAAKzm1C,EAAE600C,cAAc,KAAK700C,EAAEmm1C,aAAa,KAAKnm1C,EAAE860C,UAAU,KAAK960C,EAAE4o1C,YAAY,IAAI,CAAC,SAASsH,GAAGlw1C,GAAG,OAAO,IAAIA,EAAEoW,KAAK,IAAIpW,EAAEoW,KAAK,IAAIpW,EAAEoW,GAAG,CACna,SAAS+50C,GAAGnw1C,GAAGA,EAAE,OAAO,CAAC,KAAK,OAAOA,EAAE0vF,SAAS,CAAC,GAAG,OAAO1vF,EAAES,QAAQyv1C,GAAGlw1C,EAAES,QAAQ,OAAO,KAAKT,EAAEA,EAAES,MAAM,CAA2B,IAA1BT,EAAE0vF,QAAQjvF,OAAOT,EAAES,OAAWT,EAAEA,EAAE0vF,QAAQ,IAAI1vF,EAAEoW,KAAK,IAAIpW,EAAEoW,KAAK,KAAKpW,EAAEoW,KAAK,CAAC,GAAW,EAARpW,EAAEo5C,MAAQ,SAASp5C,EAAE,GAAG,OAAOA,EAAEkpF,OAAO,IAAIlpF,EAAEoW,IAAI,SAASpW,EAAOA,EAAEkpF,MAAMzoF,OAAOT,EAAEA,EAAEA,EAAEkpF,KAAK,CAAC,KAAa,EAARlpF,EAAEo5C,OAAS,OAAOp5C,EAAE860C,SAAS,CAAC,CACzT,SAASsV,GAAGpw1C,EAAEsC,EAAEzC,GAAG,IAAI8B,EAAE3B,EAAEoW,IAAI,GAAG,IAAIzU,GAAG,IAAIA,EAAE3B,EAAEA,EAAE860C,UAAUx40C,EAAE,IAAIzC,EAAEyoF,SAASzoF,EAAE6gC,WAAWC,aAAa3gC,EAAEsC,GAAGzC,EAAE8gC,aAAa3gC,EAAEsC,IAAI,IAAIzC,EAAEyoF,UAAUhmF,EAAEzC,EAAE6gC,YAAaC,aAAa3gC,EAAEH,IAAKyC,EAAEzC,GAAI0T,YAAYvT,GAA4B,OAAxBH,EAAEA,EAAEww1C,sBAA0C,OAAO/t1C,EAAEm2nC,UAAUn2nC,EAAEm2nC,QAAQmqN,UAAU,GAAG,IAAIjh1C,GAAc,QAAV3B,EAAEA,EAAEkpF,OAAgB,IAAIknwC,GAAGpw1C,EAAEsC,EAAEzC,GAAGG,EAAEA,EAAE0vF,QAAQ,OAAO1vF,GAAGow1C,GAAGpw1C,EAAEsC,EAAEzC,GAAGG,EAAEA,EAAE0vF,OAAO,CAC1X,SAAS4gwC,GAAGtw1C,EAAEsC,EAAEzC,GAAG,IAAI8B,EAAE3B,EAAEoW,IAAI,GAAG,IAAIzU,GAAG,IAAIA,EAAE3B,EAAEA,EAAE860C,UAAUx40C,EAAEzC,EAAE8gC,aAAa3gC,EAAEsC,GAAGzC,EAAE0T,YAAYvT,QAAQ,GAAG,IAAI2B,GAAc,QAAV3B,EAAEA,EAAEkpF,OAAgB,IAAIonwC,GAAGtw1C,EAAEsC,EAAEzC,GAAGG,EAAEA,EAAE0vF,QAAQ,OAAO1vF,GAAGsw1C,GAAGtw1C,EAAEsC,EAAEzC,GAAGG,EAAEA,EAAE0vF,OAAO,CAAC,IAAI3rF,GAAE,KAAKws1C,IAAG,EAAG,SAASC,GAAGxw1C,EAAEsC,EAAEzC,GAAG,IAAIA,EAAEA,EAAEqpF,MAAM,OAAOrpF,GAAG4w1C,GAAGzw1C,EAAEsC,EAAEzC,GAAGA,EAAEA,EAAE6vF,OAAO,CACnR,SAAS+gwC,GAAGzw1C,EAAEsC,EAAEzC,GAAG,GAAGwiB,IAAI,mBAAoBA,GAAGqu0C,qBAAqB,IAAIru0C,GAAGqu0C,qBAAqBlt0C,GAAG3jB,EAAE,CAAC,MAAM+B,GAAG,CAAC,OAAO/B,EAAEuW,KAAK,KAAK,EAAE/R,IAAGsr1C,GAAG9v1C,EAAEyC,GAAG,KAAK,EAAE,IAAIX,EAAEoC,GAAE5F,EAAEoy1C,GAAGxs1C,GAAE,KAAKys1C,GAAGxw1C,EAAEsC,EAAEzC,GAAO0w1C,GAAGpy1C,EAAE,QAAT4F,GAAEpC,KAAkB4u1C,IAAIvw1C,EAAE+D,GAAElE,EAAEA,EAAEi70C,UAAU,IAAI960C,EAAEsoF,SAAStoF,EAAE0gC,WAAW7E,YAAYh8B,GAAGG,EAAE67B,YAAYh8B,IAAIkE,GAAE83B,YAAYh8B,EAAEi70C,YAAY,MAAM,KAAK,GAAG,OAAO/20C,KAAIws1C,IAAIvw1C,EAAE+D,GAAElE,EAAEA,EAAEi70C,UAAU,IAAI960C,EAAEsoF,SAAS+6vC,GAAGrj1C,EAAE0gC,WAAW7gC,GAAG,IAAIG,EAAEsoF,UAAU+6vC,GAAGrj1C,EAAEH,GAAGiovC,GAAG9nvC,IAAIqj1C,GAAGt/0C,GAAElE,EAAEi70C,YAAY,MAAM,KAAK,EAAEn50C,EAAEoC,GAAE5F,EAAEoy1C,GAAGxs1C,GAAElE,EAAEi70C,UAAUyB,cAAcgU,IAAG,EAClfC,GAAGxw1C,EAAEsC,EAAEzC,GAAGkE,GAAEpC,EAAE4u1C,GAAGpy1C,EAAE,MAAM,KAAK,EAAE,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,IAAIkG,IAAoB,QAAhB1C,EAAE9B,EAAE+o1C,cAAsC,QAAfjn1C,EAAEA,EAAEsq1C,YAAsB,CAAC9t1C,EAAEwD,EAAEA,EAAE5B,KAAK,EAAE,CAAC,IAAI2B,EAAEvD,EAAEgD,EAAEO,EAAE07I,QAAQ17I,EAAEA,EAAE0U,SAAI,IAASjV,IAAI,IAAO,EAAFO,IAAe,IAAO,EAAFA,KAAfku1C,GAAG/v1C,EAAEyC,EAAEnB,GAAyBhD,EAAEA,EAAE4B,IAAI,OAAO5B,IAAIwD,EAAE,CAAC6u1C,GAAGxw1C,EAAEsC,EAAEzC,GAAG,MAAM,KAAK,EAAE,IAAIwE,KAAIsr1C,GAAG9v1C,EAAEyC,GAAiB,mBAAdX,EAAE9B,EAAEi70C,WAAgCr+7B,sBAAsB,IAAI96Y,EAAEsqC,MAAMpsC,EAAE4m1C,cAAc9k1C,EAAEgJ,MAAM9K,EAAEg10C,cAAclz0C,EAAE86Y,sBAAsB,CAAC,MAAM76Y,GAAG4B,GAAE3D,EAAEyC,EAAEV,EAAE,CAAC4u1C,GAAGxw1C,EAAEsC,EAAEzC,GAAG,MAAM,KAAK,GAAG2w1C,GAAGxw1C,EAAEsC,EAAEzC,GAAG,MAAM,KAAK,GAAU,EAAPA,EAAE6G,MAAQrC,IAAG1C,EAAE0C,KAAI,OAChfxE,EAAEg10C,cAAc2b,GAAGxw1C,EAAEsC,EAAEzC,GAAGwE,GAAE1C,GAAG6u1C,GAAGxw1C,EAAEsC,EAAEzC,GAAG,MAAM,QAAQ2w1C,GAAGxw1C,EAAEsC,EAAEzC,GAAG,CAAC,SAAS8w1C,GAAG3w1C,GAAG,IAAIsC,EAAEtC,EAAE4o1C,YAAY,GAAG,OAAOtm1C,EAAE,CAACtC,EAAE4o1C,YAAY,KAAK,IAAI/o1C,EAAEG,EAAE860C,UAAU,OAAOj70C,IAAIA,EAAEG,EAAE860C,UAAU,IAAI4U,IAAIpt1C,EAAE4hB,SAAQ,SAAS5hB,GAAG,IAAIX,EAAEiv1C,GAAGvu1C,KAAK,KAAKrC,EAAEsC,GAAGzC,EAAEkL,IAAIzI,KAAKzC,EAAEskB,IAAI7hB,GAAGA,EAAElC,KAAKuB,EAAEA,GAAG,GAAE,CAAC,CACzQ,SAASkv1C,GAAG7w1C,EAAEsC,GAAG,IAAIzC,EAAEyC,EAAE2j1C,UAAU,GAAG,OAAOpm1C,EAAE,IAAI,IAAI8B,EAAE,EAAEA,EAAE9B,EAAER,OAAOsC,IAAI,CAAC,IAAIxD,EAAE0B,EAAE8B,GAAG,IAAI,IAAID,EAAE1B,EAAEmB,EAAEmB,EAAEV,EAAET,EAAEnB,EAAE,KAAK,OAAO4B,GAAG,CAAC,OAAOA,EAAEwU,KAAK,KAAK,EAAErS,GAAEnC,EAAEk50C,UAAUyV,IAAG,EAAG,MAAMvw1C,EAAE,KAAK,EAA4C,KAAK,EAAE+D,GAAEnC,EAAEk50C,UAAUyB,cAAcgU,IAAG,EAAG,MAAMvw1C,EAAE4B,EAAEA,EAAEnB,MAAM,CAAC,GAAG,OAAOsD,GAAE,MAAMyiB,MAAM1kB,EAAE,MAAM2u1C,GAAG/u1C,EAAEP,EAAEhD,GAAG4F,GAAE,KAAKws1C,IAAG,EAAG,IAAI7t1C,EAAEvE,EAAE480C,UAAU,OAAOr40C,IAAIA,EAAEjC,OAAO,MAAMtC,EAAEsC,OAAO,IAAI,CAAC,MAAMe,GAAGgC,GAAErF,EAAEmE,EAAEd,EAAE,CAAC,CAAC,GAAkB,MAAfc,EAAEms1C,aAAmB,IAAIns1C,EAAEA,EAAE4mF,MAAM,OAAO5mF,GAAGwu1C,GAAGxu1C,EAAEtC,GAAGsC,EAAEA,EAAEotF,OAAO,CACje,SAASohwC,GAAG9w1C,EAAEsC,GAAG,IAAIzC,EAAEG,EAAE+60C,UAAUp50C,EAAE3B,EAAEo5C,MAAM,OAAOp5C,EAAEoW,KAAK,KAAK,EAAE,KAAK,GAAG,KAAK,GAAG,KAAK,GAAiB,GAAdy60C,GAAGvu1C,EAAEtC,GAAG+w1C,GAAG/w1C,GAAQ,EAAF2B,EAAI,CAAC,IAAImu1C,GAAG,EAAE9v1C,EAAEA,EAAES,QAAQsv1C,GAAG,EAAE/v1C,EAAE,CAAC,MAAM5B,GAAGoF,GAAExD,EAAEA,EAAES,OAAOrC,EAAE,CAAC,IAAI0x1C,GAAG,EAAE9v1C,EAAEA,EAAES,OAAO,CAAC,MAAMrC,GAAGoF,GAAExD,EAAEA,EAAES,OAAOrC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAEyy1C,GAAGvu1C,EAAEtC,GAAG+w1C,GAAG/w1C,GAAK,IAAF2B,GAAO,OAAO9B,GAAG8v1C,GAAG9v1C,EAAEA,EAAEY,QAAQ,MAAM,KAAK,EAAgD,GAA9Cow1C,GAAGvu1C,EAAEtC,GAAG+w1C,GAAG/w1C,GAAK,IAAF2B,GAAO,OAAO9B,GAAG8v1C,GAAG9v1C,EAAEA,EAAEY,QAAmB,GAART,EAAEo5C,MAAS,CAAC,IAAIj7C,EAAE6B,EAAE860C,UAAU,IAAIlG,GAAGz20C,EAAE,GAAG,CAAC,MAAMC,GAAGoF,GAAExD,EAAEA,EAAES,OAAOrC,EAAE,CAAC,CAAC,GAAK,EAAFuD,GAAoB,OAAdxD,EAAE6B,EAAE860C,WAAmB,CAAC,IAAIp50C,EAAE1B,EAAEym1C,cAActl1C,EAAE,OAAOtB,EAAEA,EAAE4m1C,cAAc/k1C,EAAEE,EAAE5B,EAAEuL,KAAK7I,EAAE1C,EAAE4o1C,YACje,GAAnB5o1C,EAAE4o1C,YAAY,KAAQ,OAAOlm1C,EAAE,IAAI,UAAUd,GAAG,UAAUF,EAAE6J,MAAM,MAAM7J,EAAEgI,MAAMy+N,EAAGhqO,EAAEuD,GAAGqz0C,GAAGnz0C,EAAET,GAAG,IAAIK,EAAEuz0C,GAAGnz0C,EAAEF,GAAG,IAAIP,EAAE,EAAEA,EAAEuB,EAAErD,OAAO8B,GAAG,EAAE,CAAC,IAAIiB,EAAEM,EAAEvB,GAAG+D,EAAExC,EAAEvB,EAAE,GAAG,UAAUiB,EAAEwnvC,GAAGzrvC,EAAE+G,GAAG,4BAA4B9C,EAAEy20C,GAAG160C,EAAE+G,GAAG,aAAa9C,EAAEwy0C,GAAGz20C,EAAE+G,GAAGkpB,EAAGjwB,EAAEiE,EAAE8C,EAAE1D,EAAE,CAAC,OAAOI,GAAG,IAAK,QAAQ4nvC,EAAGrrvC,EAAEuD,GAAG,MAAM,IAAK,WAAWiz0C,GAAGx20C,EAAEuD,GAAG,MAAM,IAAK,SAAS,IAAI3C,EAAEZ,EAAE+70C,cAAciV,YAAYhx1C,EAAE+70C,cAAciV,cAAczt1C,EAAE6s/B,SAAS,IAAIvs/B,EAAEN,EAAEvB,MAAM,MAAM6B,EAAE4jV,GAAGznV,IAAIuD,EAAE6s/B,SAASvs/B,GAAE,GAAIjD,MAAM2C,EAAE6s/B,WAAW,MAAM7s/B,EAAEy6H,aAAaypN,GAAGznV,IAAIuD,EAAE6s/B,SACnf7s/B,EAAEy6H,cAAa,GAAIypN,GAAGznV,IAAIuD,EAAE6s/B,SAAS7s/B,EAAE6s/B,SAAS,GAAG,IAAG,IAAKpw/B,EAAEwl1C,IAAIji1C,CAAC,CAAC,MAAMtD,GAAGoF,GAAExD,EAAEA,EAAES,OAAOrC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAgB,GAAdyy1C,GAAGvu1C,EAAEtC,GAAG+w1C,GAAG/w1C,GAAQ,EAAF2B,EAAI,CAAC,GAAG,OAAO3B,EAAE860C,UAAU,MAAMt0zC,MAAM1kB,EAAE,MAAM3D,EAAE6B,EAAE860C,UAAUp50C,EAAE1B,EAAEym1C,cAAc,IAAIto1C,EAAEmtpC,UAAU5ppC,CAAC,CAAC,MAAMtD,GAAGoF,GAAExD,EAAEA,EAAES,OAAOrC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAgB,GAAdyy1C,GAAGvu1C,EAAEtC,GAAG+w1C,GAAG/w1C,GAAQ,EAAF2B,GAAK,OAAO9B,GAAGA,EAAEg10C,cAAcyH,aAAa,IAAIx0F,GAAGxlvC,EAAEi60C,cAAc,CAAC,MAAMn+0C,GAAGoF,GAAExD,EAAEA,EAAES,OAAOrC,EAAE,CAAC,MAAM,KAAK,EAG4G,QAAQyy1C,GAAGvu1C,EACnftC,GAAG+w1C,GAAG/w1C,SAJ4Y,KAAK,GAAG6w1C,GAAGvu1C,EAAEtC,GAAG+w1C,GAAG/w1C,GAAqB,MAAlB7B,EAAE6B,EAAEkpF,OAAQ9vC,QAAa13C,EAAE,OAAOvD,EAAE020C,cAAc120C,EAAE280C,UAAU/n7B,SAASrxZ,GAAGA,GAClf,OAAOvD,EAAE480C,WAAW,OAAO580C,EAAE480C,UAAUlG,gBAAgBmc,GAAGjs1C,OAAQ,EAAFpD,GAAKgv1C,GAAG3w1C,GAAG,MAAM,KAAK,GAAsF,GAAnFoC,EAAE,OAAOvC,GAAG,OAAOA,EAAEg10C,cAAqB,EAAP700C,EAAE0G,MAAQrC,IAAG7C,EAAE6C,KAAIjC,EAAEyu1C,GAAGvu1C,EAAEtC,GAAGqE,GAAE7C,GAAGqv1C,GAAGvu1C,EAAEtC,GAAG+w1C,GAAG/w1C,GAAQ,KAAF2B,EAAO,CAA0B,GAAzBH,EAAE,OAAOxB,EAAE600C,eAAkB700C,EAAE860C,UAAU/n7B,SAASvxZ,KAAKY,GAAG,IAAY,EAAPpC,EAAE0G,MAAQ,IAAI9B,GAAE5E,EAAEoC,EAAEpC,EAAEkpF,MAAM,OAAO9mF,GAAG,CAAC,IAAI8C,EAAEN,GAAExC,EAAE,OAAOwC,IAAG,CAAe,OAAV5C,GAAJjD,EAAE6F,IAAMskF,MAAanqF,EAAEqX,KAAK,KAAK,EAAE,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG050C,GAAG,EAAE/w1C,EAAEA,EAAE0B,QAAQ,MAAM,KAAK,EAAEkv1C,GAAG5w1C,EAAEA,EAAE0B,QAAQ,IAAIpC,EAAEU,EAAE+70C,UAAU,GAAG,mBAAoBz80C,EAAEo+Y,qBAAqB,CAAC96Y,EAAE5C,EAAEc,EAAEd,EAAE0B,OAAO,IAAI6B,EAAEX,EAAEtD,EAAE4tC,MACpf3pC,EAAEmk1C,cAAcpo1C,EAAEsM,MAAMrI,EAAEuy0C,cAAcx20C,EAAEo+Y,sBAAsB,CAAC,MAAMr+Y,GAAGoF,GAAE7B,EAAE9B,EAAEzB,EAAE,CAAC,CAAC,MAAM,KAAK,EAAEux1C,GAAG5w1C,EAAEA,EAAE0B,QAAQ,MAAM,KAAK,GAAG,GAAG,OAAO1B,EAAE810C,cAAc,CAACoc,GAAG/r1C,GAAG,QAAQ,EAAE,OAAOlD,GAAGA,EAAEvB,OAAO1B,EAAE6F,GAAE5C,GAAGiv1C,GAAG/r1C,EAAE,CAAC9C,EAAEA,EAAEstF,OAAO,CAAC1vF,EAAE,IAAIoC,EAAE,KAAK8C,EAAElF,IAAI,CAAC,GAAG,IAAIkF,EAAEkR,KAAK,GAAG,OAAOhU,EAAE,CAACA,EAAE8C,EAAE,IAAI/G,EAAE+G,EAAE410C,UAAUt50C,EAAa,mBAAVE,EAAEvD,EAAEkV,OAA4BstM,YAAYj/M,EAAEi/M,YAAY,UAAU,OAAO,aAAaj/M,EAAE4R,QAAQ,QAAS1R,EAAEsD,EAAE410C,UAAkC350C,EAAE,OAA1BuB,EAAEwC,EAAEuh1C,cAAcpz0C,QAA8B3Q,EAAE/D,eAAe,WAAW+D,EAAE4Q,QAAQ,KAAK1R,EAAEyR,MAAMC,QACzfu+7B,GAAG,UAAU1w8B,GAAG,CAAC,MAAM/C,GAAGoF,GAAExD,EAAEA,EAAES,OAAOrC,EAAE,CAAC,OAAO,GAAG,IAAI8G,EAAEkR,KAAK,GAAG,OAAOhU,EAAE,IAAI8C,EAAE410C,UAAUxvL,UAAU9ppC,EAAE,GAAG0D,EAAEuh1C,aAAa,CAAC,MAAMro1C,GAAGoF,GAAExD,EAAEA,EAAES,OAAOrC,EAAE,OAAO,IAAI,KAAK8G,EAAEkR,KAAK,KAAKlR,EAAEkR,KAAK,OAAOlR,EAAE2v0C,eAAe3v0C,IAAIlF,IAAI,OAAOkF,EAAEgkF,MAAM,CAAChkF,EAAEgkF,MAAMzoF,OAAOyE,EAAEA,EAAEA,EAAEgkF,MAAM,QAAQ,CAAC,GAAGhkF,IAAIlF,EAAE,MAAMA,EAAE,KAAK,OAAOkF,EAAEwqF,SAAS,CAAC,GAAG,OAAOxqF,EAAEzE,QAAQyE,EAAEzE,SAAST,EAAE,MAAMA,EAAEoC,IAAI8C,IAAI9C,EAAE,MAAM8C,EAAEA,EAAEzE,MAAM,CAAC2B,IAAI8C,IAAI9C,EAAE,MAAM8C,EAAEwqF,QAAQjvF,OAAOyE,EAAEzE,OAAOyE,EAAEA,EAAEwqF,OAAO,CAAC,CAAC,MAAM,KAAK,GAAGmhwC,GAAGvu1C,EAAEtC,GAAG+w1C,GAAG/w1C,GAAK,EAAF2B,GAAKgv1C,GAAG3w1C,GAAS,KAAK,IACtd,CAAC,SAAS+w1C,GAAG/w1C,GAAG,IAAIsC,EAAEtC,EAAEo5C,MAAM,GAAK,EAAF92C,EAAI,CAAC,IAAItC,EAAE,CAAC,IAAI,IAAIH,EAAEG,EAAES,OAAO,OAAOZ,GAAG,CAAC,GAAGqw1C,GAAGrw1C,GAAG,CAAC,IAAI8B,EAAE9B,EAAE,MAAMG,CAAC,CAACH,EAAEA,EAAEY,MAAM,CAAC,MAAM+lB,MAAM1kB,EAAE,KAAM,CAAC,OAAOH,EAAEyU,KAAK,KAAK,EAAE,IAAIjY,EAAEwD,EAAEm50C,UAAkB,GAARn50C,EAAEy3C,QAAWw7xC,GAAGz20C,EAAE,IAAIwD,EAAEy3C,QAAQ,IAAgBk3yC,GAAGtw1C,EAATmw1C,GAAGnw1C,GAAU7B,GAAG,MAAM,KAAK,EAAE,KAAK,EAAE,IAAIgD,EAAEQ,EAAEm50C,UAAUyB,cAAsB6T,GAAGpw1C,EAATmw1C,GAAGnw1C,GAAUmB,GAAG,MAAM,QAAQ,MAAMqlB,MAAM1kB,EAAE,MAAO,CAAC,MAAMY,GAAGc,GAAExD,EAAEA,EAAES,OAAOiC,EAAE,CAAC1C,EAAEo5C,QAAQ,CAAC,CAAG,KAAF92C,IAAStC,EAAEo5C,QAAQ,KAAK,CAAC,SAAS83yC,GAAGlx1C,EAAEsC,EAAEzC,GAAG+E,GAAE5E,EAAEmx1C,GAAGnx1C,EAAEsC,EAAEzC,EAAE,CACvb,SAASsx1C,GAAGnx1C,EAAEsC,EAAEzC,GAAG,IAAI,IAAI8B,EAAE,IAAY,EAAP3B,EAAE0G,MAAQ,OAAO9B,IAAG,CAAC,IAAIzG,EAAEyG,GAAElD,EAAEvD,EAAE+qF,MAAM,GAAG,KAAK/qF,EAAEiY,KAAKzU,EAAE,CAAC,IAAIR,EAAE,OAAOhD,EAAE020C,eAAe4a,GAAG,IAAItu1C,EAAE,CAAC,IAAIS,EAAEzD,EAAE480C,UAAUr40C,EAAE,OAAOd,GAAG,OAAOA,EAAEiz0C,eAAexw0C,GAAEzC,EAAE6t1C,GAAG,IAAIju1C,EAAE6C,GAAO,GAALor1C,GAAGtu1C,GAAMkD,GAAE3B,KAAKlB,EAAE,IAAIoD,GAAEzG,EAAE,OAAOyG,IAAOlC,GAAJvB,EAAEyD,IAAMskF,MAAM,KAAK/nF,EAAEiV,KAAK,OAAOjV,EAAE0z0C,cAAcuc,GAAGjz1C,GAAG,OAAOuE,GAAGA,EAAEjC,OAAOU,EAAEyD,GAAElC,GAAG0u1C,GAAGjz1C,GAAG,KAAK,OAAOuD,GAAGkD,GAAElD,EAAEyv1C,GAAGzv1C,EAAEY,EAAEzC,GAAG6B,EAAEA,EAAEguF,QAAQ9qF,GAAEzG,EAAEsx1C,GAAG7t1C,EAAEyC,GAAE7C,CAAC,CAAC6v1C,GAAGrx1C,EAAM,MAAM,IAAoB,KAAf7B,EAAEsw1C,eAAoB,OAAO/s1C,GAAGA,EAAEjB,OAAOtC,EAAEyG,GAAElD,GAAG2v1C,GAAGrx1C,EAAM,CAAC,CACvc,SAASqx1C,GAAGrx1C,GAAG,KAAK,OAAO4E,IAAG,CAAC,IAAItC,EAAEsC,GAAE,GAAG,IAAa,KAARtC,EAAE82C,OAAY,CAAC,IAAIv5C,EAAEyC,EAAEy40C,UAAU,IAAI,GAAG,IAAa,KAARz40C,EAAE82C,OAAY,OAAO92C,EAAE8T,KAAK,KAAK,EAAE,KAAK,GAAG,KAAK,GAAG/R,IAAG0r1C,GAAG,EAAEzt1C,GAAG,MAAM,KAAK,EAAE,IAAIX,EAAEW,EAAEw40C,UAAU,GAAW,EAARx40C,EAAE82C,QAAU/0C,GAAE,GAAG,OAAOxE,EAAE8B,EAAE26Y,wBAAwB,CAAC,IAAIn+Y,EAAEmE,EAAE6umC,cAAc7umC,EAAEiJ,KAAK1L,EAAE4m1C,cAAczo0C,GAAG1b,EAAEiJ,KAAK1L,EAAE4m1C,eAAe9k1C,EAAE66Y,mBAAmBr+Y,EAAE0B,EAAEg10C,cAAclz0C,EAAE2v1C,oCAAoC,CAAC,IAAI5v1C,EAAEY,EAAEsm1C,YAAY,OAAOln1C,GAAG6hrC,GAAGjhrC,EAAEZ,EAAEC,GAAG,MAAM,KAAK,EAAE,IAAIR,EAAEmB,EAAEsm1C,YAAY,GAAG,OAAOzn1C,EAAE,CAAQ,GAAPtB,EAAE,KAAQ,OAAOyC,EAAE4mF,MAAM,OAAO5mF,EAAE4mF,MAAM9yE,KAAK,KAAK,EACvf,KAAK,EAAEvW,EAAEyC,EAAE4mF,MAAM4xvC,UAAUv3J,GAAGjhrC,EAAEnB,EAAEtB,EAAE,CAAC,MAAM,KAAK,EAAE,IAAI+B,EAAEU,EAAEw40C,UAAU,GAAG,OAAOj70C,GAAW,EAARyC,EAAE82C,MAAQ,CAACv5C,EAAE+B,EAAE,IAAIc,EAAEJ,EAAEmk1C,cAAc,OAAOnk1C,EAAEiJ,MAAM,IAAK,SAAS,IAAK,QAAQ,IAAK,SAAS,IAAK,WAAW7I,EAAE2s1C,WAAWxv1C,EAAEiwW,QAAQ,MAAM,IAAK,MAAMptW,EAAE8Q,MAAM3T,EAAE2T,IAAI9Q,EAAE8Q,KAAK,CAAC,MAAM,KAAK,EAAQ,KAAK,EAAQ,KAAK,GAAyJ,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,MAAhM,KAAK,GAAG,GAAG,OAAOlR,EAAEuy0C,cAAc,CAAC,IAAIrz0C,EAAEc,EAAEy40C,UAAU,GAAG,OAAOv50C,EAAE,CAAC,IAAIY,EAAEZ,EAAEqz0C,cAAc,GAAG,OAAOzy0C,EAAE,CAAC,IAAI8C,EAAE9C,EAAE440C,WAAW,OAAO910C,GAAG4ivC,GAAG5ivC,EAAE,CAAC,CAAC,CAAC,MAC5c,QAAQ,MAAMshB,MAAM1kB,EAAE,MAAOuC,IAAW,IAAR/B,EAAE82C,OAAW42yC,GAAG1t1C,EAAE,CAAC,MAAMvD,GAAGyE,GAAElB,EAAEA,EAAE7B,OAAO1B,EAAE,CAAC,CAAC,GAAGuD,IAAItC,EAAE,CAAC4E,GAAE,KAAK,KAAK,CAAa,GAAG,QAAf/E,EAAEyC,EAAEotF,SAAoB,CAAC7vF,EAAEY,OAAO6B,EAAE7B,OAAOmE,GAAE/E,EAAE,KAAK,CAAC+E,GAAEtC,EAAE7B,MAAM,CAAC,CAAC,SAASww1C,GAAGjx1C,GAAG,KAAK,OAAO4E,IAAG,CAAC,IAAItC,EAAEsC,GAAE,GAAGtC,IAAItC,EAAE,CAAC4E,GAAE,KAAK,KAAK,CAAC,IAAI/E,EAAEyC,EAAEotF,QAAQ,GAAG,OAAO7vF,EAAE,CAACA,EAAEY,OAAO6B,EAAE7B,OAAOmE,GAAE/E,EAAE,KAAK,CAAC+E,GAAEtC,EAAE7B,MAAM,CAAC,CACvS,SAAS2w1C,GAAGpx1C,GAAG,KAAK,OAAO4E,IAAG,CAAC,IAAItC,EAAEsC,GAAE,IAAI,OAAOtC,EAAE8T,KAAK,KAAK,EAAE,KAAK,GAAG,KAAK,GAAG,IAAIvW,EAAEyC,EAAE7B,OAAO,IAAIsv1C,GAAG,EAAEzt1C,EAAE,CAAC,MAAMI,GAAGc,GAAElB,EAAEzC,EAAE6C,EAAE,CAAC,MAAM,KAAK,EAAE,IAAIf,EAAEW,EAAEw40C,UAAU,GAAG,mBAAoBn50C,EAAE26Y,kBAAkB,CAAC,IAAIn+Y,EAAEmE,EAAE7B,OAAO,IAAIkB,EAAE26Y,mBAAmB,CAAC,MAAM55Y,GAAGc,GAAElB,EAAEnE,EAAEuE,EAAE,CAAC,CAAC,IAAIhB,EAAEY,EAAE7B,OAAO,IAAIuv1C,GAAG1t1C,EAAE,CAAC,MAAMI,GAAGc,GAAElB,EAAEZ,EAAEgB,EAAE,CAAC,MAAM,KAAK,EAAE,IAAIvB,EAAEmB,EAAE7B,OAAO,IAAIuv1C,GAAG1t1C,EAAE,CAAC,MAAMI,GAAGc,GAAElB,EAAEnB,EAAEuB,EAAE,EAAE,CAAC,MAAMA,GAAGc,GAAElB,EAAEA,EAAE7B,OAAOiC,EAAE,CAAC,GAAGJ,IAAItC,EAAE,CAAC4E,GAAE,KAAK,KAAK,CAAC,IAAIhD,EAAEU,EAAEotF,QAAQ,GAAG,OAAO9tF,EAAE,CAACA,EAAEnB,OAAO6B,EAAE7B,OAAOmE,GAAEhD,EAAE,KAAK,CAACgD,GAAEtC,EAAE7B,MAAM,CAAC,CAC7d,IAwBkN8w1C,GAxB9MC,GAAG3v1C,KAAKuK,KAAKql1C,GAAG5g0C,EAAG8kzC,uBAAuB+b,GAAG7g0C,EAAG47zC,kBAAkBz9zC,GAAG6B,EAAG2rzC,wBAAwBv40C,GAAE,EAAEe,GAAE,KAAKP,GAAE,KAAKhB,GAAE,EAAEwp1C,GAAG,EAAED,GAAGhJ,GAAG,GAAG9g1C,GAAE,EAAEsq8B,GAAG,KAAK3sH,GAAG,EAAE8wgB,GAAG,EAAEC,GAAG,EAAEC,GAAG,KAAKC,GAAG,KAAKd,GAAG,EAAE1B,GAAGvwxC,IAASgzxC,GAAG,KAAKp00C,IAAG,EAAGe,GAAG,KAAKP,GAAG,KAAK6z0C,IAAG,EAAGC,GAAG,KAAKC,GAAG,EAAEC,GAAG,EAAEC,GAAG,KAAKC,IAAI,EAAEC,GAAG,EAAE,SAAShv1C,KAAI,OAAO,IAAO,EAAFW,IAAKc,MAAK,IAAIst1C,GAAGA,GAAGA,GAAGtt1C,IAAG,CAChU,SAAS+X,GAAG9c,GAAG,OAAG,IAAY,EAAPA,EAAE0G,MAAe,EAAK,IAAO,EAAFzC,KAAM,IAAIR,GAASA,IAAGA,GAAK,OAAOoj1C,GAAG//tC,YAAkB,IAAIwruC,KAAKA,GAAGrv0C,MAAMqv0C,IAAU,KAAPty1C,EAAEmD,IAAkBnD,EAAiBA,OAAE,KAAjBA,EAAEkB,OAAOu8B,OAAmB,GAAG+stC,GAAGxqvC,EAAEuL,KAAc,CAAC,SAAS4R,GAAGnd,EAAEsC,EAAEzC,EAAE8B,GAAG,GAAG,GAAGww1C,GAAG,MAAMA,GAAG,EAAEC,GAAG,KAAK5r0C,MAAM1kB,EAAE,MAAM2nB,GAAGzpB,EAAEH,EAAE8B,GAAM,IAAO,EAAFsC,KAAMjE,IAAIgF,KAAEhF,IAAIgF,KAAI,IAAO,EAAFf,MAAO0t1C,IAAI9x1C,GAAG,IAAIqD,IAAGqv1C,GAAGvy1C,EAAEyD,KAAI+u1C,GAAGxy1C,EAAE2B,GAAG,IAAI9B,GAAG,IAAIoE,IAAG,IAAY,EAAP3B,EAAEoE,QAAU4o1C,GAAGvq1C,KAAI,IAAI+/0C,IAAIE,MAAK,CAC1Y,SAASwN,GAAGxy1C,EAAEsC,GAAG,IAAIzC,EAAEG,EAAEyy1C,cA3MzB,SAAYzy1C,EAAEsC,GAAG,IAAI,IAAIzC,EAAEG,EAAE670C,eAAel60C,EAAE3B,EAAE870C,YAAY390C,EAAE6B,EAAE0y1C,gBAAgBhx1C,EAAE1B,EAAE470C,aAAa,EAAEl60C,GAAG,CAAC,IAAIP,EAAE,GAAGkgB,GAAG3f,GAAGE,EAAE,GAAGT,EAAEuB,EAAEvE,EAAEgD,IAAO,IAAIuB,EAAM,IAAKd,EAAE/B,IAAI,IAAK+B,EAAED,KAAGxD,EAAEgD,GAAG+hB,GAAGthB,EAAEU,IAAQI,GAAGJ,IAAItC,EAAE2y1C,cAAc/w1C,GAAGF,IAAIE,CAAC,CAAC,CA2MnL0hB,CAAGtjB,EAAEsC,GAAG,IAAIX,EAAEkgB,GAAG7hB,EAAEA,IAAIgF,GAAEvB,GAAE,GAAG,GAAG,IAAI9B,EAAE,OAAO9B,GAAGujB,GAAGvjB,GAAGG,EAAEyy1C,aAAa,KAAKzy1C,EAAE4y1C,iBAAiB,OAAO,GAAGtw1C,EAAEX,GAAGA,EAAE3B,EAAE4y1C,mBAAmBtw1C,EAAE,CAAgB,GAAf,MAAMzC,GAAGujB,GAAGvjB,GAAM,IAAIyC,EAAE,IAAItC,EAAEoW,IA5IsJ,SAAYpW,GAAG8k1C,IAAG,EAAGC,GAAG/k1C,EAAE,CA4I5K6y1C,CAAGC,GAAGzw1C,KAAK,KAAKrC,IAAI+k1C,GAAG+N,GAAGzw1C,KAAK,KAAKrC,IAAImj1C,IAAG,WAAW,IAAO,EAAFl/0C,KAAM+g1C,IAAI,IAAGnl1C,EAAE,SAAS,CAAC,OAAOysB,GAAG3qB,IAAI,KAAK,EAAE9B,EAAEyiB,GAAG,MAAM,KAAK,EAAEziB,EAAEwjB,GAAG,MAAM,KAAK,GAAwC,QAAQxjB,EAAE6iB,SAApC,KAAK,UAAU7iB,EAAEylB,GAAsBzlB,EAAEkz1C,GAAGlz1C,EAAEmz1C,GAAG3w1C,KAAK,KAAKrC,GAAG,CAACA,EAAE4y1C,iBAAiBtw1C,EAAEtC,EAAEyy1C,aAAa5y1C,CAAC,CAAC,CAC7c,SAASmz1C,GAAGhz1C,EAAEsC,GAAc,GAAX+v1C,IAAI,EAAEC,GAAG,EAAK,IAAO,EAAFru1C,IAAK,MAAMuiB,MAAM1kB,EAAE,MAAM,IAAIjC,EAAEG,EAAEyy1C,aAAa,GAAGQ,MAAMjz1C,EAAEyy1C,eAAe5y1C,EAAE,OAAO,KAAK,IAAI8B,EAAEkgB,GAAG7hB,EAAEA,IAAIgF,GAAEvB,GAAE,GAAG,GAAG,IAAI9B,EAAE,OAAO,KAAK,GAAG,IAAO,GAAFA,IAAO,IAAKA,EAAE3B,EAAE2y1C,eAAerw1C,EAAEA,EAAE4w1C,GAAGlz1C,EAAE2B,OAAO,CAACW,EAAEX,EAAE,IAAIxD,EAAE8F,GAAEA,IAAG,EAAE,IAAIvC,EAAEyx1C,KAAgD,IAAxCnu1C,KAAIhF,GAAGyD,KAAInB,IAAEyv1C,GAAG,KAAKzC,GAAGvq1C,KAAI,IAAIqu1C,GAAGpz1C,EAAEsC,UAAU+w1C,KAAK,KAAK,CAAC,MAAMzx1C,GAAG0x1C,GAAGtz1C,EAAE4B,EAAE,CAAUom1C,KAAKyJ,GAAG1yzC,QAAQr9B,EAAEuC,GAAE9F,EAAE,OAAOsG,GAAEnC,EAAE,GAAG0C,GAAE,KAAKvB,GAAE,EAAEnB,EAAEY,GAAE,CAAC,GAAG,IAAIZ,EAAE,CAAyC,GAAxC,IAAIA,GAAY,KAARnE,EAAE2mB,GAAG9kB,MAAW2B,EAAExD,EAAEmE,EAAEix1C,GAAGvz1C,EAAE7B,IAAQ,IAAImE,EAAE,MAAMzC,EAAE2t8B,GAAG4lZ,GAAGpz1C,EAAE,GAAGuy1C,GAAGvy1C,EAAE2B,GAAG6w1C,GAAGxy1C,EAAE+E,MAAKlF,EAAE,GAAG,IAAIyC,EAAEiw1C,GAAGvy1C,EAAE2B,OAChf,CAAuB,GAAtBxD,EAAE6B,EAAE++B,QAAQg8yC,UAAa,IAAO,GAAFp50C,KAGnC,SAAY3B,GAAG,IAAI,IAAIsC,EAAEtC,IAAI,CAAC,GAAW,MAARsC,EAAE82C,MAAY,CAAC,IAAIv5C,EAAEyC,EAAEsm1C,YAAY,GAAG,OAAO/o1C,GAAe,QAAXA,EAAEA,EAAEqs1C,QAAiB,IAAI,IAAIvq1C,EAAE,EAAEA,EAAE9B,EAAER,OAAOsC,IAAI,CAAC,IAAIxD,EAAE0B,EAAE8B,GAAGD,EAAEvD,EAAE6t1C,YAAY7t1C,EAAEA,EAAEgC,MAAM,IAAI,IAAI6I,GAAGtH,IAAIvD,GAAG,OAAM,CAAE,CAAC,MAAMgD,GAAG,OAAM,CAAE,CAAC,CAAC,CAAW,GAAVtB,EAAEyC,EAAE4mF,MAAwB,MAAf5mF,EAAEms1C,cAAoB,OAAO5u1C,EAAEA,EAAEY,OAAO6B,EAAEA,EAAEzC,MAAM,CAAC,GAAGyC,IAAItC,EAAE,MAAM,KAAK,OAAOsC,EAAEotF,SAAS,CAAC,GAAG,OAAOptF,EAAE7B,QAAQ6B,EAAE7B,SAAST,EAAE,OAAM,EAAGsC,EAAEA,EAAE7B,MAAM,CAAC6B,EAAEotF,QAAQjvF,OAAO6B,EAAE7B,OAAO6B,EAAEA,EAAEotF,OAAO,CAAC,CAAC,OAAM,CAAE,CAHvX8jwC,CAAGr11C,KAAe,KAAVmE,EAAE4w1C,GAAGlz1C,EAAE2B,KAAmB,KAARD,EAAEojB,GAAG9kB,MAAW2B,EAAED,EAAEY,EAAEix1C,GAAGvz1C,EAAE0B,IAAK,IAAIY,GAAG,MAAMzC,EAAE2t8B,GAAG4lZ,GAAGpz1C,EAAE,GAAGuy1C,GAAGvy1C,EAAE2B,GAAG6w1C,GAAGxy1C,EAAE+E,MAAKlF,EAAqC,OAAnCG,EAAEyz1C,aAAat11C,EAAE6B,EAAE0z1C,cAAc/x1C,EAASW,GAAG,KAAK,EAAE,KAAK,EAAE,MAAMkkB,MAAM1kB,EAAE,MAAM,KAAK,EAC8B,KAAK,EAAE6x1C,GAAG3z1C,EAAE8x1C,GAAGC,IAAI,MAD7B,KAAK,EAAU,GAARQ,GAAGvy1C,EAAE2B,IAAS,UAAFA,KAAeA,GAAiB,IAAbW,EAAE0u1C,GAAG,IAAIjs1C,MAAU,CAAC,GAAG,IAAI8c,GAAG7hB,EAAE,GAAG,MAAyB,KAAnB7B,EAAE6B,EAAE670C,gBAAqBl60C,KAAKA,EAAE,CAAC2B,KAAItD,EAAE870C,aAAa970C,EAAE670C,eAAe190C,EAAE,KAAK,CAAC6B,EAAE4z1C,cAAc5Q,GAAG2Q,GAAGtx1C,KAAK,KAAKrC,EAAE8x1C,GAAGC,IAAIzv1C,GAAG,KAAK,CAACqx1C,GAAG3z1C,EAAE8x1C,GAAGC,IAAI,MAAM,KAAK,EAAU,GAARQ,GAAGvy1C,EAAE2B,IAAS,QAAFA,KAC9eA,EAAE,MAAqB,IAAfW,EAAEtC,EAAEi80C,WAAe990C,GAAG,EAAE,EAAEwD,GAAG,CAAC,IAAIR,EAAE,GAAGkgB,GAAG1f,GAAGD,EAAE,GAAGP,GAAEA,EAAEmB,EAAEnB,IAAKhD,IAAIA,EAAEgD,GAAGQ,IAAID,CAAC,CAAqG,GAApGC,EAAExD,EAAqG,IAA3FwD,GAAG,KAAXA,EAAEoD,KAAIpD,GAAW,IAAI,IAAIA,EAAE,IAAI,KAAKA,EAAE,KAAK,KAAKA,EAAE,KAAK,IAAIA,EAAE,IAAI,KAAKA,EAAE,KAAK,KAAK6v1C,GAAG7v1C,EAAE,OAAOA,GAAU,CAAC3B,EAAE4z1C,cAAc5Q,GAAG2Q,GAAGtx1C,KAAK,KAAKrC,EAAE8x1C,GAAGC,IAAIpw1C,GAAG,KAAK,CAACgy1C,GAAG3z1C,EAAE8x1C,GAAGC,IAAI,MAA+B,QAAQ,MAAMvr0C,MAAM1kB,EAAE,MAAO,CAAC,CAAW,OAAV0w1C,GAAGxy1C,EAAE+E,MAAY/E,EAAEyy1C,eAAe5y1C,EAAEmz1C,GAAG3w1C,KAAK,KAAKrC,GAAG,IAAI,CACrX,SAASuz1C,GAAGvz1C,EAAEsC,GAAG,IAAIzC,EAAEgy1C,GAA2G,OAAxG7x1C,EAAE++B,QAAQ81yC,cAAcyH,eAAe8W,GAAGpz1C,EAAEsC,GAAG82C,OAAO,KAAe,KAAVp5C,EAAEkz1C,GAAGlz1C,EAAEsC,MAAWA,EAAEwv1C,GAAGA,GAAGjy1C,EAAE,OAAOyC,GAAG4s1C,GAAG5s1C,IAAWtC,CAAC,CAAC,SAASkv1C,GAAGlv1C,GAAG,OAAO8x1C,GAAGA,GAAG9x1C,EAAE8x1C,GAAGjx1C,KAAKtB,MAAMuy1C,GAAG9x1C,EAAE,CAE5L,SAASuy1C,GAAGvy1C,EAAEsC,GAAuD,IAApDA,IAAIsv1C,GAAGtv1C,IAAIqv1C,GAAG3x1C,EAAE670C,gBAAgBv50C,EAAEtC,EAAE870C,cAAcx50C,EAAMtC,EAAEA,EAAE0y1C,gBAAgB,EAAEpw1C,GAAG,CAAC,IAAIzC,EAAE,GAAGwhB,GAAG/e,GAAGX,EAAE,GAAG9B,EAAEG,EAAEH,IAAI,EAAEyC,IAAIX,CAAC,CAAC,CAAC,SAASmx1C,GAAG9y1C,GAAG,GAAG,IAAO,EAAFiE,IAAK,MAAMuiB,MAAM1kB,EAAE,MAAMmx1C,KAAK,IAAI3w1C,EAAEuf,GAAG7hB,EAAE,GAAG,GAAG,IAAO,EAAFsC,GAAK,OAAOkw1C,GAAGxy1C,EAAE+E,MAAK,KAAK,IAAIlF,EAAEqz1C,GAAGlz1C,EAAEsC,GAAG,GAAG,IAAItC,EAAEoW,KAAK,IAAIvW,EAAE,CAAC,IAAI8B,EAAEmjB,GAAG9kB,GAAG,IAAI2B,IAAIW,EAAEX,EAAE9B,EAAE0z1C,GAAGvz1C,EAAE2B,GAAG,CAAC,GAAG,IAAI9B,EAAE,MAAMA,EAAE2t8B,GAAG4lZ,GAAGpz1C,EAAE,GAAGuy1C,GAAGvy1C,EAAEsC,GAAGkw1C,GAAGxy1C,EAAE+E,MAAKlF,EAAE,GAAG,IAAIA,EAAE,MAAM2mB,MAAM1kB,EAAE,MAAiF,OAA3E9B,EAAEyz1C,aAAazz1C,EAAE++B,QAAQg8yC,UAAU/60C,EAAE0z1C,cAAcpx1C,EAAEqx1C,GAAG3z1C,EAAE8x1C,GAAGC,IAAIS,GAAGxy1C,EAAE+E,MAAY,IAAI,CACvd,SAAS8u1C,GAAG7z1C,EAAEsC,GAAG,IAAIzC,EAAEoE,GAAEA,IAAG,EAAE,IAAI,OAAOjE,EAAEsC,EAAE,CAAC,QAAY,KAAJ2B,GAAEpE,KAAUyv1C,GAAGvq1C,KAAI,IAAI+/0C,IAAIE,KAAK,CAAC,CAAC,SAAS8O,GAAG9z1C,GAAG,OAAOiy1C,IAAI,IAAIA,GAAG770C,KAAK,IAAO,EAAFnS,KAAMgv1C,KAAK,IAAI3w1C,EAAE2B,GAAEA,IAAG,EAAE,IAAIpE,EAAEmvB,GAAG83F,WAAWnlH,EAAEwB,GAAE,IAAI,GAAG6rB,GAAG83F,WAAW,KAAK3jH,GAAE,EAAEnD,EAAE,OAAOA,GAAG,CAAC,QAAQmD,GAAExB,EAAEqtB,GAAG83F,WAAWjnH,EAAM,IAAO,GAAXoE,GAAE3B,KAAa0i1C,IAAI,CAAC,CAAC,SAASuK,KAAKtC,GAAGD,GAAGjuzC,QAAQr7B,GAAEsp1C,GAAG,CAChT,SAASoG,GAAGpz1C,EAAEsC,GAAGtC,EAAEyz1C,aAAa,KAAKzz1C,EAAE0z1C,cAAc,EAAE,IAAI7z1C,EAAEG,EAAE4z1C,cAAiD,IAAlC,IAAI/z1C,IAAIG,EAAE4z1C,eAAe,EAAE3Q,GAAGpj1C,IAAO,OAAO4E,GAAE,IAAI5E,EAAE4E,GAAEhE,OAAO,OAAOZ,GAAG,CAAC,IAAI8B,EAAE9B,EAAQ,OAAN8l1C,GAAGhk1C,GAAUA,EAAEyU,KAAK,KAAK,EAA6B,OAA3BzU,EAAEA,EAAE4J,KAAKy8vC,oBAAwCw8E,KAAK,MAAM,KAAK,EAAEqF,KAAKnm1C,GAAEwg1C,IAAIxg1C,GAAEc,IAAG2l1C,KAAK,MAAM,KAAK,EAAEJ,GAAGpo1C,GAAG,MAAM,KAAK,EAAEko1C,KAAK,MAAM,KAAK,GAAc,KAAK,GAAGnm1C,GAAEL,IAAG,MAAM,KAAK,GAAG4k1C,GAAGtm1C,EAAE4J,KAAKy4I,UAAU,MAAM,KAAK,GAAG,KAAK,GAAGursC,KAAK1v1C,EAAEA,EAAEY,MAAM,CAAqE,GAApEuE,GAAEhF,EAAEyE,GAAEzE,EAAEqn1C,GAAGrn1C,EAAE++B,QAAQ,MAAMt7B,GAAEwp1C,GAAG3q1C,EAAEY,GAAE,EAAEsq8B,GAAG,KAAKokZ,GAAGD,GAAG9wgB,GAAG,EAAEixgB,GAAGD,GAAG,KAAQ,OAAOtJ,GAAG,CAAC,IAAIjm1C,EAC1f,EAAEA,EAAEim1C,GAAGlp1C,OAAOiD,IAAI,GAA2B,QAAhBX,GAAR9B,EAAE0o1C,GAAGjm1C,IAAOkjO,aAAqB,CAAC3lO,EAAE2lO,YAAY,KAAK,IAAIrnO,EAAEwD,EAAE5B,KAAK2B,EAAE7B,EAAEsxa,QAAQ,GAAG,OAAOzva,EAAE,CAAC,IAAIP,EAAEO,EAAE3B,KAAK2B,EAAE3B,KAAK5B,EAAEwD,EAAE5B,KAAKoB,CAAC,CAACtB,EAAEsxa,QAAQxva,CAAC,CAAC4m1C,GAAG,IAAI,CAAC,OAAOvo1C,CAAC,CAC3K,SAASsz1C,GAAGtz1C,EAAEsC,GAAG,OAAE,CAAC,IAAIzC,EAAE4E,GAAE,IAAuB,GAAnBuj1C,KAAKqC,GAAGtrzC,QAAQkszC,GAAMT,GAAG,CAAC,IAAI,IAAI7o1C,EAAEkD,GAAEgw0C,cAAc,OAAOlz0C,GAAG,CAAC,IAAIxD,EAAEwD,EAAE67C,MAAM,OAAOr/C,IAAIA,EAAEgza,QAAQ,MAAMxva,EAAEA,EAAE5B,IAAI,CAACyq1C,IAAG,CAAE,CAA4C,GAA3CD,GAAG,EAAEvn1C,GAAEkB,GAAEW,GAAE,KAAK4l1C,IAAG,EAAGC,GAAG,EAAEgH,GAAG3yzC,QAAQ,KAAQ,OAAOl/B,GAAG,OAAOA,EAAEY,OAAO,CAACyC,GAAE,EAAEsq8B,GAAGlr8B,EAAEmC,GAAE,KAAK,KAAK,CAACzE,EAAE,CAAC,IAAI0B,EAAE1B,EAAEmB,EAAEtB,EAAEY,OAAOmB,EAAE/B,EAAE6C,EAAEJ,EAAqB,GAAnBA,EAAEmB,GAAE7B,EAAEw3C,OAAO,MAAS,OAAO12C,GAAG,iBAAkBA,GAAG,mBAAoBA,EAAEtC,KAAK,CAAC,IAAIoB,EAAEkB,EAAEN,EAAER,EAAEsD,EAAE9C,EAAEgU,IAAI,GAAG,IAAY,EAAPhU,EAAEsE,QAAU,IAAIxB,GAAG,KAAKA,GAAG,KAAKA,GAAG,CAAC,IAAInG,EAAEqD,EAAE240C,UAAUh80C,GAAGqD,EAAEwm1C,YAAY7p1C,EAAE6p1C,YAAYxm1C,EAAEyy0C,cAAc910C,EAAE810C,cACxezy0C,EAAEim1C,MAAMtp1C,EAAEsp1C,QAAQjm1C,EAAEwm1C,YAAY,KAAKxm1C,EAAEyy0C,cAAc,KAAK,CAAC,IAAI7y0C,EAAEoe,GAAGjf,GAAG,GAAG,OAAOa,EAAE,CAACA,EAAEo3C,QAAQ,IAAI54B,GAAGxe,EAAEb,EAAES,EAAEF,EAAEY,GAAU,EAAPN,EAAE0E,MAAQ2W,GAAG3b,EAAEF,EAAEc,GAAOI,EAAElB,EAAE,IAAInD,GAAZiE,EAAEN,GAAc4m1C,YAAY,GAAG,OAAOvq1C,EAAE,CAAC,IAAID,EAAE,IAAIumB,IAAIvmB,EAAE+lB,IAAIzhB,GAAGJ,EAAEsm1C,YAAYxq1C,CAAC,MAAMC,EAAE8lB,IAAIzhB,GAAG,MAAM1C,CAAC,CAAM,GAAG,IAAO,EAAFsC,GAAK,CAAC+a,GAAG3b,EAAEF,EAAEc,GAAG+r1C,KAAK,MAAMru1C,CAAC,CAAC0C,EAAE8jB,MAAM1kB,EAAE,KAAM,MAAM,GAAGe,IAAU,EAAPjB,EAAE8E,KAAO,CAAC,IAAIhC,EAAE0b,GAAGjf,GAAG,GAAG,OAAOuD,EAAE,CAAC,IAAa,MAARA,EAAE00C,SAAe10C,EAAE00C,OAAO,KAAK54B,GAAG9b,EAAEvD,EAAES,EAAEF,EAAEY,GAAGsk1C,GAAGrm0C,GAAG7d,EAAEd,IAAI,MAAM5B,CAAC,CAAC,CAAC0B,EAAEgB,EAAE6d,GAAG7d,EAAEd,GAAG,IAAIsB,KAAIA,GAAE,GAAG,OAAO2u1C,GAAGA,GAAG,CAACnw1C,GAAGmw1C,GAAGhx1C,KAAKa,GAAGA,EAAEP,EAAE,EAAE,CAAC,OAAOO,EAAE0U,KAAK,KAAK,EAAE1U,EAAE03C,OAAO,MACpf92C,IAAIA,EAAEZ,EAAE2m1C,OAAO/l1C,EAAkBin1C,GAAG7n1C,EAAb8d,GAAG9d,EAAEgB,EAAEJ,IAAW,MAAMtC,EAAE,KAAK,EAAE4B,EAAEc,EAAE,IAAIH,EAAEb,EAAE6J,KAAKlK,EAAEK,EAAEo50C,UAAU,GAAG,IAAa,IAARp50C,EAAE03C,SAAa,mBAAoB72C,EAAE4lwC,0BAA0B,OAAO9mwC,GAAG,mBAAoBA,EAAEkr1C,oBAAoB,OAAOpu0C,KAAKA,GAAGpT,IAAI1J,KAAK,CAACK,EAAE03C,OAAO,MAAM92C,IAAIA,EAAEZ,EAAE2m1C,OAAO/l1C,EAAkBin1C,GAAG7n1C,EAAbmf,GAAGnf,EAAEE,EAAEU,IAAW,MAAMtC,CAAC,EAAE0B,EAAEA,EAAEjB,MAAM,OAAO,OAAOiB,EAAE,CAACqy1C,GAAGl01C,EAAE,CAAC,MAAM0uB,GAAIjsB,EAAEisB,EAAG9pB,KAAI5E,GAAG,OAAOA,IAAI4E,GAAE5E,EAAEA,EAAEY,QAAQ,QAAQ,CAAC,KAAK,CAAS,CAAC,SAAS0y1C,KAAK,IAAInz1C,EAAEyx1C,GAAG1yzC,QAAsB,OAAd0yzC,GAAG1yzC,QAAQkszC,GAAU,OAAOjr1C,EAAEir1C,GAAGjr1C,CAAC,CACrd,SAASqu1C,KAAQ,IAAInr1C,IAAG,IAAIA,IAAG,IAAIA,KAAEA,GAAE,GAAE,OAAO8B,IAAG,IAAQ,UAAH670B,KAAe,IAAQ,UAAH8wgB,KAAeY,GAAGvt1C,GAAEvB,GAAE,CAAC,SAASyv1C,GAAGlz1C,EAAEsC,GAAG,IAAIzC,EAAEoE,GAAEA,IAAG,EAAE,IAAItC,EAAEwx1C,KAAqC,IAA7Bnu1C,KAAIhF,GAAGyD,KAAInB,IAAEyv1C,GAAG,KAAKqB,GAAGpz1C,EAAEsC,UAAU0x1C,KAAK,KAAK,CAAC,MAAM711C,GAAGm11C,GAAGtz1C,EAAE7B,EAAE,CAAgC,GAAtB6p1C,KAAK/j1C,GAAEpE,EAAE4x1C,GAAG1yzC,QAAQp9B,EAAK,OAAO8C,GAAE,MAAM+hB,MAAM1kB,EAAE,MAAiB,OAAXkD,GAAE,KAAKvB,GAAE,EAASP,EAAC,CAAC,SAAS8w1C,KAAK,KAAK,OAAOvv1C,IAAGwv1C,GAAGxv1C,GAAE,CAAC,SAAS4u1C,KAAK,KAAK,OAAO5u1C,KAAIgd,MAAMwy0C,GAAGxv1C,GAAE,CAAC,SAASwv1C,GAAGj01C,GAAG,IAAIsC,EAAEiv1C,GAAGvx1C,EAAE+60C,UAAU/60C,EAAEit1C,IAAIjt1C,EAAEym1C,cAAczm1C,EAAEmm1C,aAAa,OAAO7j1C,EAAEyx1C,GAAG/z1C,GAAGyE,GAAEnC,EAAEov1C,GAAG3yzC,QAAQ,IAAI,CAC1d,SAASg1zC,GAAG/z1C,GAAG,IAAIsC,EAAEtC,EAAE,EAAE,CAAC,IAAIH,EAAEyC,EAAEy40C,UAAqB,GAAX/60C,EAAEsC,EAAE7B,OAAU,IAAa,MAAR6B,EAAE82C,QAAc,GAAgB,QAAbv5C,EAAEov1C,GAAGpv1C,EAAEyC,EAAE2q1C,KAAkB,YAAJxo1C,GAAE5E,OAAc,CAAW,GAAG,QAAbA,EAAE2v1C,GAAG3v1C,EAAEyC,IAAmC,OAAnBzC,EAAEu5C,OAAO,WAAM30C,GAAE5E,GAAS,GAAG,OAAOG,EAAmE,OAAXkD,GAAE,OAAEuB,GAAE,MAA5DzE,EAAEo5C,OAAO,MAAMp5C,EAAEyu1C,aAAa,EAAEzu1C,EAAEim1C,UAAU,IAA4B,CAAa,GAAG,QAAf3j1C,EAAEA,EAAEotF,SAAyB,YAAJjrF,GAAEnC,GAASmC,GAAEnC,EAAEtC,CAAC,OAAO,OAAOsC,GAAG,IAAIY,KAAIA,GAAE,EAAE,CAAC,SAASyw1C,GAAG3z1C,EAAEsC,EAAEzC,GAAG,IAAI8B,EAAEwB,GAAEhF,EAAE6wB,GAAG83F,WAAW,IAAI93F,GAAG83F,WAAW,KAAK3jH,GAAE,EAC3Y,SAAYnD,EAAEsC,EAAEzC,EAAE8B,GAAG,GAAGsx1C,WAAW,OAAOhB,IAAI,GAAG,IAAO,EAAFhu1C,IAAK,MAAMuiB,MAAM1kB,EAAE,MAAMjC,EAAEG,EAAEyz1C,aAAa,IAAIt11C,EAAE6B,EAAE0z1C,cAAc,GAAG,OAAO7z1C,EAAE,OAAO,KAA2C,GAAtCG,EAAEyz1C,aAAa,KAAKzz1C,EAAE0z1C,cAAc,EAAK7z1C,IAAIG,EAAE++B,QAAQ,MAAMvY,MAAM1kB,EAAE,MAAM9B,EAAEyy1C,aAAa,KAAKzy1C,EAAE4y1C,iBAAiB,EAAE,IAAIlx1C,EAAE7B,EAAEwo1C,MAAMxo1C,EAAEso1C,WAA8J,GAzNtT,SAAYno1C,EAAEsC,GAAG,IAAIzC,EAAEG,EAAE470C,cAAct50C,EAAEtC,EAAE470C,aAAat50C,EAAEtC,EAAE670C,eAAe,EAAE770C,EAAE870C,YAAY,EAAE970C,EAAE2y1C,cAAcrw1C,EAAEtC,EAAEk01C,kBAAkB5x1C,EAAEtC,EAAE+70C,gBAAgBz50C,EAAEA,EAAEtC,EAAEg80C,cAAc,IAAIr60C,EAAE3B,EAAEi80C,WAAW,IAAIj80C,EAAEA,EAAE0y1C,gBAAgB,EAAE7y1C,GAAG,CAAC,IAAI1B,EAAE,GAAGkjB,GAAGxhB,GAAG6B,EAAE,GAAGvD,EAAEmE,EAAEnE,GAAG,EAAEwD,EAAExD,IAAI,EAAE6B,EAAE7B,IAAI,EAAE0B,IAAI6B,CAAC,CAAC,CAyN5G2rB,CAAGrtB,EAAE0B,GAAG1B,IAAIgF,KAAIP,GAAEO,GAAE,KAAKvB,GAAE,GAAG,IAAoB,KAAf5D,EAAE4u1C,eAAoB,IAAa,KAAR5u1C,EAAEu5C,QAAa44yC,KAAKA,IAAG,EAAGe,GAAGrw0C,IAAG,WAAgB,OAALuw0C,KAAY,IAAI,KAAIvx1C,EAAE,IAAa,MAAR7B,EAAEu5C,OAAgB,IAAoB,MAAfv5C,EAAE4u1C,eAAqB/s1C,EAAE,CAACA,EAAEstB,GAAG83F,WAAW93F,GAAG83F,WAAW,KAChf,IAAI3lH,EAAEgC,GAAEA,GAAE,EAAE,IAAIvB,EAAEqC,GAAEA,IAAG,EAAEyt1C,GAAG3yzC,QAAQ,KA1CpC,SAAY/+B,EAAEsC,GAAgB,GAAbug1C,GAAG16zB,GAAat/gB,GAAV7I,EAAEqJ,MAAc,CAAC,GAAG,mBAAmBrJ,EAAE,IAAIH,EAAE,CAAC2lC,MAAMxlC,EAAE8g1C,eAAer7yC,IAAIzlC,EAAE+g1C,mBAAmB/g1C,EAAE,CAA8C,IAAI2B,GAAjD9B,GAAGA,EAAEG,EAAEmtF,gBAAgBttF,EAAE40Z,aAAavzZ,QAAewvF,cAAc7wF,EAAE6wF,eAAe,GAAG/uF,GAAG,IAAIA,EAAE0nmB,WAAW,CAACxpmB,EAAE8B,EAAEq/0C,WAAW,IAAI7i1C,EAAEwD,EAAEs/0C,aAAav/0C,EAAEC,EAAEu/0C,UAAUv/0C,EAAEA,EAAEw/0C,YAAY,IAAIth1C,EAAEyoF,SAAS5mF,EAAE4mF,QAAQ,CAAC,MAAMtkF,GAAGnE,EAAE,KAAK,MAAMG,CAAC,CAAC,IAAImB,EAAE,EAAES,GAAG,EAAEc,GAAG,EAAElB,EAAE,EAAEY,EAAE,EAAE8C,EAAElF,EAAEjB,EAAE,KAAKuD,EAAE,OAAO,CAAC,IAAI,IAAIN,EAAKkD,IAAIrF,GAAG,IAAI1B,GAAG,IAAI+G,EAAEojF,WAAW1mF,EAAET,EAAEhD,GAAG+G,IAAIxD,GAAG,IAAIC,GAAG,IAAIuD,EAAEojF,WAAW5lF,EAAEvB,EAAEQ,GAAG,IAAIuD,EAAEojF,WAAWnnF,GACnf+D,EAAEompC,UAAUjspC,QAAW,QAAQ2C,EAAEkD,EAAEikF,aAAkBpqF,EAAEmG,EAAEA,EAAElD,EAAE,OAAO,CAAC,GAAGkD,IAAIlF,EAAE,MAAMsC,EAA8C,GAA5CvD,IAAIc,KAAK2B,IAAIrD,IAAIyD,EAAET,GAAGpC,IAAI2C,KAAKU,IAAIT,IAAIe,EAAEvB,GAAM,QAAQa,EAAEkD,EAAEkkF,aAAa,MAAUrqF,GAAJmG,EAAEnG,GAAM2hC,UAAU,CAACx7B,EAAElD,CAAC,CAACnC,GAAG,IAAI+B,IAAI,IAAIc,EAAE,KAAK,CAAC8iC,MAAM5jC,EAAE6jC,IAAI/iC,EAAE,MAAM7C,EAAE,IAAI,CAACA,EAAEA,GAAG,CAAC2lC,MAAM,EAAEC,IAAI,EAAE,MAAM5lC,EAAE,KAA+C,IAA1Cij1C,GAAG,CAAClC,YAAY5g1C,EAAE6g1C,eAAehh1C,GAAGsohB,IAAG,EAAOvjhB,GAAEtC,EAAE,OAAOsC,IAAG,GAAO5E,GAAJsC,EAAEsC,IAAMskF,MAAM,IAAoB,KAAf5mF,EAAEms1C,eAAoB,OAAOzu1C,EAAEA,EAAES,OAAO6B,EAAEsC,GAAE5E,OAAO,KAAK,OAAO4E,IAAG,CAACtC,EAAEsC,GAAE,IAAI,IAAIvG,EAAEiE,EAAEy40C,UAAU,GAAG,IAAa,KAARz40C,EAAE82C,OAAY,OAAO92C,EAAE8T,KAAK,KAAK,EAAE,KAAK,GAAG,KAAK,GACvK,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,GAAG,MAA3W,KAAK,EAAE,GAAG,OAAO/X,EAAE,CAAC,IAAID,EAAEC,EAAEoo1C,cAAc/h1C,EAAErG,EAAEw20C,cAAc5x0C,EAAEX,EAAEw40C,UAAUv40C,EAAEU,EAAEux0C,wBAAwBly0C,EAAE6umC,cAAc7umC,EAAEiJ,KAAKnN,EAAE4f,GAAG1b,EAAEiJ,KAAKnN,GAAGsG,GAAGzB,EAAEqu1C,oCAAoC/u1C,CAAC,CAAC,MAAM,KAAK,EAAE,IAAIlB,EAAEiB,EAAEw40C,UAAUyB,cAAc,IAAIl70C,EAAEinF,SAASjnF,EAAE2qF,YAAY,GAAG,IAAI3qF,EAAEinF,UAAUjnF,EAAEghG,iBAAiBhhG,EAAEw6B,YAAYx6B,EAAEghG,iBAAiB,MAAyC,QAAQ,MAAM77E,MAAM1kB,EAAE,MAAO,CAAC,MAAMkC,GAAGR,GAAElB,EAAEA,EAAE7B,OAAOuD,EAAE,CAAa,GAAG,QAAfhE,EAAEsC,EAAEotF,SAAoB,CAAC1vF,EAAES,OAAO6B,EAAE7B,OAAOmE,GAAE5E,EAAE,KAAK,CAAC4E,GAAEtC,EAAE7B,MAAM,CAACpC,EAAEwx1C,GAAGA,IAAG,CAAW,CAwCldsE,CAAGn01C,EAAEH,GAAGix1C,GAAGjx1C,EAAEG,GAAGyH,GAAGq70C,IAAI36zB,KAAK06zB,GAAGC,GAAGD,GAAG,KAAK7i1C,EAAE++B,QAAQl/B,EAAEqx1C,GAAGrx1C,EAAEG,EAAE7B,GAAGskB,KAAKxe,GAAErC,EAAEuB,GAAEhC,EAAE6tB,GAAG83F,WAAWplH,CAAC,MAAM1B,EAAE++B,QAAQl/B,EAAsF,GAApFmy1C,KAAKA,IAAG,EAAGC,GAAGjy1C,EAAEky1C,GAAG/z1C,GAAoB,KAAjBuD,EAAE1B,EAAE470C,gBAAqBz9zC,GAAG,MAhOmJ,SAAYne,GAAG,GAAGqiB,IAAI,mBAAoBA,GAAG+x0C,kBAAkB,IAAI/x0C,GAAG+x0C,kBAAkB5w0C,GAAGxjB,OAAE,EAAO,MAAuB,IAAhBA,EAAE++B,QAAQqa,OAAW,CAAC,MAAM92C,GAAG,CAAC,CAgOxR6gB,CAAGtjB,EAAEi70C,WAAa0X,GAAGxy1C,EAAE+E,MAAQ,OAAOzC,EAAE,IAAIX,EAAE3B,EAAEq01C,mBAAmBx01C,EAAE,EAAEA,EAAEyC,EAAEjD,OAAOQ,IAAW8B,GAAPxD,EAAEmE,EAAEzC,IAAOM,MAAM,CAACixC,eAAejzC,EAAEwzC,MAAMnjB,OAAOrwB,EAAEqwB,SAAS,GAAG7Q,GAAG,MAAMA,IAAG,EAAG3d,EAAE0e,GAAGA,GAAG,KAAK1e,EAAE,IAAQ,EAAHky1C,KAAO,IAAIly1C,EAAEoW,KAAK680C,KAAsB,IAAO,GAAxBvx1C,EAAE1B,EAAE470C,eAAuB570C,IAAIoy1C,GAAGD,MAAMA,GAAG,EAAEC,GAAGpy1C,GAAGmy1C,GAAG,EAAEnN,IAAgB,CAFxFsP,CAAGt01C,EAAEsC,EAAEzC,EAAE8B,EAAE,CAAC,QAAQqtB,GAAG83F,WAAW3oH,EAAEgF,GAAExB,CAAC,CAAC,OAAO,IAAI,CAGhc,SAASsx1C,KAAK,GAAG,OAAOhB,GAAG,CAAC,IAAIjy1C,EAAEssB,GAAG4l0C,IAAI5v1C,EAAE0sB,GAAG83F,WAAWjnH,EAAEsD,GAAE,IAAmC,GAA/B6rB,GAAG83F,WAAW,KAAK3jH,GAAE,GAAGnD,EAAE,GAAGA,EAAK,OAAOiy1C,GAAG,IAAItw1C,GAAE,MAAO,CAAmB,GAAlB3B,EAAEiy1C,GAAGA,GAAG,KAAKC,GAAG,EAAK,IAAO,EAAFju1C,IAAK,MAAMuiB,MAAM1kB,EAAE,MAAM,IAAI3D,EAAE8F,GAAO,IAALA,IAAG,EAAMW,GAAE5E,EAAE++B,QAAQ,OAAOn6B,IAAG,CAAC,IAAIlD,EAAEkD,GAAEzD,EAAEO,EAAEwnF,MAAM,GAAG,IAAa,GAARtkF,GAAEw0C,OAAU,CAAC,IAAIx3C,EAAEF,EAAEuk1C,UAAU,GAAG,OAAOrk1C,EAAE,CAAC,IAAI,IAAIc,EAAE,EAAEA,EAAEd,EAAEvC,OAAOqD,IAAI,CAAC,IAAIlB,EAAEI,EAAEc,GAAG,IAAIkC,GAAEpD,EAAE,OAAOoD,IAAG,CAAC,IAAIxC,EAAEwC,GAAE,OAAOxC,EAAEgU,KAAK,KAAK,EAAE,KAAK,GAAG,KAAK,GAAG050C,GAAG,EAAE1t1C,EAAEV,GAAG,IAAIwD,EAAE9C,EAAE8mF,MAAM,GAAG,OAAOhkF,EAAEA,EAAEzE,OAAO2B,EAAEwC,GAAEM,OAAO,KAAK,OAAON,IAAG,CAAK,IAAI7F,GAARqD,EAAEwC,IAAU8qF,QAAQ1tF,EAAEI,EAAE3B,OAAa,GAANwv1C,GAAG7t1C,GAAMA,IACnfZ,EAAE,CAACoD,GAAE,KAAK,KAAK,CAAC,GAAG,OAAO7F,EAAE,CAACA,EAAE0B,OAAOuB,EAAE4C,GAAE7F,EAAE,KAAK,CAAC6F,GAAE5C,CAAC,CAAC,CAAC,CAAC,IAAI3D,EAAEqD,EAAEq50C,UAAU,GAAG,OAAO180C,EAAE,CAAC,IAAID,EAAEC,EAAE6qF,MAAM,GAAG,OAAO9qF,EAAE,CAACC,EAAE6qF,MAAM,KAAK,EAAE,CAAC,IAAIxkF,EAAEtG,EAAEsxF,QAAQtxF,EAAEsxF,QAAQ,KAAKtxF,EAAEsG,CAAC,OAAO,OAAOtG,EAAE,CAAC,CAACwG,GAAElD,CAAC,CAAC,CAAC,GAAG,IAAoB,KAAfA,EAAE+s1C,eAAoB,OAAOtt1C,EAAEA,EAAEV,OAAOiB,EAAEkD,GAAEzD,OAAOmB,EAAE,KAAK,OAAOsC,IAAG,CAAK,GAAG,IAAa,MAApBlD,EAAEkD,IAAYw0C,OAAY,OAAO13C,EAAE0U,KAAK,KAAK,EAAE,KAAK,GAAG,KAAK,GAAG050C,GAAG,EAAEpu1C,EAAEA,EAAEjB,QAAQ,IAAIwC,EAAEvB,EAAEguF,QAAQ,GAAG,OAAOzsF,EAAE,CAACA,EAAExC,OAAOiB,EAAEjB,OAAOmE,GAAE3B,EAAE,MAAMX,CAAC,CAACsC,GAAElD,EAAEjB,MAAM,CAAC,CAAC,IAAI8B,EAAEvC,EAAE++B,QAAQ,IAAIn6B,GAAErC,EAAE,OAAOqC,IAAG,CAAK,IAAIvD,GAARF,EAAEyD,IAAUskF,MAAM,GAAG,IAAoB,KAAf/nF,EAAEst1C,eAAoB,OAClfpt1C,EAAEA,EAAEZ,OAAOU,EAAEyD,GAAEvD,OAAOiB,EAAE,IAAInB,EAAEoB,EAAE,OAAOqC,IAAG,CAAK,GAAG,IAAa,MAApBhD,EAAEgD,IAAYw0C,OAAY,IAAI,OAAOx3C,EAAEwU,KAAK,KAAK,EAAE,KAAK,GAAG,KAAK,GAAG250C,GAAG,EAAEnu1C,GAAG,CAAC,MAAM2sB,GAAI/qB,GAAE5B,EAAEA,EAAEnB,OAAO8tB,EAAG,CAAC,GAAG3sB,IAAIT,EAAE,CAACyD,GAAE,KAAK,MAAMtC,CAAC,CAAC,IAAI0B,EAAEpC,EAAE8tF,QAAQ,GAAG,OAAO1rF,EAAE,CAACA,EAAEvD,OAAOmB,EAAEnB,OAAOmE,GAAEZ,EAAE,MAAM1B,CAAC,CAACsC,GAAEhD,EAAEnB,MAAM,CAAC,CAAU,GAATwD,GAAE9F,EAAE6m1C,KAAQ3i0C,IAAI,mBAAoBA,GAAGky0C,sBAAsB,IAAIly0C,GAAGky0C,sBAAsB/w0C,GAAGxjB,EAAE,CAAC,MAAMuuB,GAAI,CAAC5sB,GAAE,CAAE,CAAC,OAAOA,CAAC,CAAC,QAAQwB,GAAEtD,EAAEmvB,GAAG83F,WAAWxkH,CAAC,CAAC,CAAC,OAAM,CAAE,CAAC,SAASky1C,GAAGx01C,EAAEsC,EAAEzC,GAAyBG,EAAEqp1C,GAAGrp1C,EAAjBsC,EAAEkd,GAAGxf,EAAfsC,EAAEie,GAAG1gB,EAAEyC,GAAY,GAAY,GAAGA,EAAEgB,KAAI,OAAOtD,IAAIypB,GAAGzpB,EAAE,EAAEsC,GAAGkw1C,GAAGxy1C,EAAEsC,GAAG,CACze,SAASkB,GAAExD,EAAEsC,EAAEzC,GAAG,GAAG,IAAIG,EAAEoW,IAAIo+0C,GAAGx01C,EAAEA,EAAEH,QAAQ,KAAK,OAAOyC,GAAG,CAAC,GAAG,IAAIA,EAAE8T,IAAI,CAACo+0C,GAAGly1C,EAAEtC,EAAEH,GAAG,KAAK,CAAM,GAAG,IAAIyC,EAAE8T,IAAI,CAAC,IAAIzU,EAAEW,EAAEw40C,UAAU,GAAG,mBAAoBx40C,EAAEiJ,KAAK48vC,0BAA0B,mBAAoBxmwC,EAAE4q1C,oBAAoB,OAAOpu0C,KAAKA,GAAGpT,IAAIpJ,IAAI,CAAuBW,EAAE+m1C,GAAG/m1C,EAAjBtC,EAAE6gB,GAAGve,EAAftC,EAAEugB,GAAG1gB,EAAEG,GAAY,GAAY,GAAGA,EAAEsD,KAAI,OAAOhB,IAAImnB,GAAGnnB,EAAE,EAAEtC,GAAGwy1C,GAAGlw1C,EAAEtC,IAAI,KAAK,CAAC,CAACsC,EAAEA,EAAE7B,MAAM,CAAC,CACnV,SAASqd,GAAG9d,EAAEsC,EAAEzC,GAAG,IAAI8B,EAAE3B,EAAEws1C,UAAU,OAAO7q1C,GAAGA,EAAEsiB,OAAO3hB,GAAGA,EAAEgB,KAAItD,EAAE870C,aAAa970C,EAAE670C,eAAeh80C,EAAEmF,KAAIhF,IAAIyD,GAAE5D,KAAKA,IAAI,IAAIqD,IAAG,IAAIA,KAAM,UAAFO,MAAeA,IAAG,IAAIsB,KAAIis1C,GAAGoC,GAAGpz1C,EAAE,GAAG4x1C,IAAI/x1C,GAAG2y1C,GAAGxy1C,EAAEsC,EAAE,CAAC,SAASmy1C,GAAGz01C,EAAEsC,GAAG,IAAIA,IAAI,IAAY,EAAPtC,EAAE0G,MAAQpE,EAAE,GAAGA,EAAEqf,GAAU,IAAQ,WAAfA,KAAK,MAAuBA,GAAG,WAAW,IAAI9hB,EAAEyD,KAAc,QAAVtD,EAAEyo1C,GAAGzo1C,EAAEsC,MAAcmnB,GAAGzpB,EAAEsC,EAAEzC,GAAG2y1C,GAAGxy1C,EAAEH,GAAG,CAAC,SAASyu1C,GAAGtu1C,GAAG,IAAIsC,EAAEtC,EAAE600C,cAAch10C,EAAE,EAAE,OAAOyC,IAAIzC,EAAEyC,EAAE8j1C,WAAWqO,GAAGz01C,EAAEH,EAAE,CACjZ,SAAS+w1C,GAAG5w1C,EAAEsC,GAAG,IAAIzC,EAAE,EAAE,OAAOG,EAAEoW,KAAK,KAAK,GAAG,IAAIzU,EAAE3B,EAAE860C,UAAc380C,EAAE6B,EAAE600C,cAAc,OAAO120C,IAAI0B,EAAE1B,EAAEio1C,WAAW,MAAM,KAAK,GAAGzk1C,EAAE3B,EAAE860C,UAAU,MAAM,QAAQ,MAAMt0zC,MAAM1kB,EAAE,MAAO,OAAOH,GAAGA,EAAEsiB,OAAO3hB,GAAGmy1C,GAAGz01C,EAAEH,EAAE,CAQqK,SAASkz1C,GAAG/y1C,EAAEsC,GAAG,OAAOof,GAAG1hB,EAAEsC,EAAE,CACjZ,SAASoy1C,GAAG101C,EAAEsC,EAAEzC,EAAE8B,GAAG3C,KAAKoX,IAAIpW,EAAEhB,KAAK6kB,IAAIhkB,EAAEb,KAAK0wF,QAAQ1wF,KAAKkqF,MAAMlqF,KAAKyB,OAAOzB,KAAK870C,UAAU970C,KAAKuM,KAAKvM,KAAKmymC,YAAY,KAAKnymC,KAAKgd,MAAM,EAAEhd,KAAK4hC,IAAI,KAAK5hC,KAAKmn1C,aAAa7j1C,EAAEtD,KAAKi8J,aAAaj8J,KAAK610C,cAAc710C,KAAK4p1C,YAAY5p1C,KAAKyn1C,cAAc,KAAKzn1C,KAAK0H,KAAK/E,EAAE3C,KAAKyv1C,aAAazv1C,KAAKo6C,MAAM,EAAEp6C,KAAKin1C,UAAU,KAAKjn1C,KAAKmp1C,WAAWnp1C,KAAKqp1C,MAAM,EAAErp1C,KAAK+70C,UAAU,IAAI,CAAC,SAASiL,GAAGhm1C,EAAEsC,EAAEzC,EAAE8B,GAAG,OAAO,IAAI+y1C,GAAG101C,EAAEsC,EAAEzC,EAAE8B,EAAE,CAAC,SAAS+q1C,GAAG1s1C,GAAiB,UAAdA,EAAEA,EAAEtB,aAAuBsB,EAAE416B,iBAAiB,CAEpd,SAASyxa,GAAGrn1C,EAAEsC,GAAG,IAAIzC,EAAEG,EAAE+60C,UACuB,OADb,OAAOl70C,IAAGA,EAAEmm1C,GAAGhm1C,EAAEoW,IAAI9T,EAAEtC,EAAE6jB,IAAI7jB,EAAE0G,OAAQyqmC,YAAYnxmC,EAAEmxmC,YAAYtxmC,EAAE0L,KAAKvL,EAAEuL,KAAK1L,EAAEi70C,UAAU960C,EAAE860C,UAAUj70C,EAAEk70C,UAAU/60C,EAAEA,EAAE+60C,UAAUl70C,IAAIA,EAAEsm1C,aAAa7j1C,EAAEzC,EAAE0L,KAAKvL,EAAEuL,KAAK1L,EAAEu5C,MAAM,EAAEv5C,EAAE4u1C,aAAa,EAAE5u1C,EAAEom1C,UAAU,MAAMpm1C,EAAEu5C,MAAc,SAARp5C,EAAEo5C,MAAev5C,EAAEso1C,WAAWno1C,EAAEmo1C,WAAWto1C,EAAEwo1C,MAAMro1C,EAAEqo1C,MAAMxo1C,EAAEqpF,MAAMlpF,EAAEkpF,MAAMrpF,EAAE4m1C,cAAczm1C,EAAEym1C,cAAc5m1C,EAAEg10C,cAAc700C,EAAE600C,cAAch10C,EAAE+o1C,YAAY5o1C,EAAE4o1C,YAAYtm1C,EAAEtC,EAAEi7J,aAAap7J,EAAEo7J,aAAa,OAAO34J,EAAE,KAAK,CAAC+l1C,MAAM/l1C,EAAE+l1C,MAAMD,aAAa9l1C,EAAE8l1C,cAC/evo1C,EAAE6vF,QAAQ1vF,EAAE0vF,QAAQ7vF,EAAEmc,MAAMhc,EAAEgc,MAAMnc,EAAE+gC,IAAI5gC,EAAE4gC,IAAW/gC,CAAC,CACxD,SAAS0n1C,GAAGvn1C,EAAEsC,EAAEzC,EAAE8B,EAAExD,EAAEuD,GAAG,IAAIP,EAAE,EAAM,GAAJQ,EAAE3B,EAAK,mBAAoBA,EAAE0s1C,GAAG1s1C,KAAKmB,EAAE,QAAQ,GAAG,iBAAkBnB,EAAEmB,EAAE,OAAOnB,EAAE,OAAOA,GAAG,KAAK4xB,EAAG,OAAO61zC,GAAG5n1C,EAAEm/B,SAAS7gC,EAAEuD,EAAEY,GAAG,KAAK+lvC,EAAGlnvC,EAAE,EAAEhD,GAAG,EAAE,MAAM,KAAKu4B,EAAG,OAAO12B,EAAEgm1C,GAAG,GAAGnm1C,EAAEyC,EAAI,EAAFnE,IAAOgzmC,YAAYz6kC,EAAG12B,EAAEqo1C,MAAM3m1C,EAAE1B,EAAE,KAAKq2B,EAAG,OAAOr2B,EAAEgm1C,GAAG,GAAGnm1C,EAAEyC,EAAEnE,IAAKgzmC,YAAY96kC,EAAGr2B,EAAEqo1C,MAAM3m1C,EAAE1B,EAAE,KAAKi3B,EAAG,OAAOj3B,EAAEgm1C,GAAG,GAAGnm1C,EAAEyC,EAAEnE,IAAKgzmC,YAAYl6kC,EAAGj3B,EAAEqo1C,MAAM3m1C,EAAE1B,EAAE,KAAK41B,EAAG,OAAOq4zC,GAAGpu1C,EAAE1B,EAAEuD,EAAEY,GAAG,QAAQ,GAAG,iBAAkBtC,GAAG,OAAOA,EAAE,OAAOA,EAAE616B,UAAU,KAAK8yU,EAAGxnvC,EAAE,GAAG,MAAMnB,EAAE,KAAKm2B,EAAGh1B,EAAE,EAAE,MAAMnB,EAAE,KAAK4ovC,EAAGznvC,EAAE,GACpf,MAAMnB,EAAE,KAAKy2B,EAAGt1B,EAAE,GAAG,MAAMnB,EAAE,KAAK6ovC,EAAG1nvC,EAAE,GAAGQ,EAAE,KAAK,MAAM3B,EAAE,MAAMwmB,MAAM1kB,EAAE,IAAI,MAAM9B,EAAEA,SAASA,EAAE,KAAuD,OAAjDsC,EAAE0j1C,GAAG7k1C,EAAEtB,EAAEyC,EAAEnE,IAAKgzmC,YAAYnxmC,EAAEsC,EAAEiJ,KAAK5J,EAAEW,EAAE+l1C,MAAM3m1C,EAASY,CAAC,CAAC,SAASml1C,GAAGzn1C,EAAEsC,EAAEzC,EAAE8B,GAA2B,OAAxB3B,EAAEgm1C,GAAG,EAAEhm1C,EAAE2B,EAAEW,IAAK+l1C,MAAMxo1C,EAASG,CAAC,CAAC,SAASiu1C,GAAGju1C,EAAEsC,EAAEzC,EAAE8B,GAAuE,OAApE3B,EAAEgm1C,GAAG,GAAGhm1C,EAAE2B,EAAEW,IAAK6umC,YAAYv7kC,EAAG51B,EAAEqo1C,MAAMxo1C,EAAEG,EAAE860C,UAAU,CAAC/n7B,UAAS,GAAW/yZ,CAAC,CAAC,SAASsn1C,GAAGtn1C,EAAEsC,EAAEzC,GAA8B,OAA3BG,EAAEgm1C,GAAG,EAAEhm1C,EAAE,KAAKsC,IAAK+l1C,MAAMxo1C,EAASG,CAAC,CAC5W,SAASwn1C,GAAGxn1C,EAAEsC,EAAEzC,GAA8J,OAA3JyC,EAAE0j1C,GAAG,EAAE,OAAOhm1C,EAAEg/B,SAASh/B,EAAEg/B,SAAS,GAAGh/B,EAAE6jB,IAAIvhB,IAAK+l1C,MAAMxo1C,EAAEyC,EAAEw40C,UAAU,CAACyB,cAAcv80C,EAAEu80C,cAAcoY,gBAAgB,KAAK/uyC,eAAe5lD,EAAE4lD,gBAAuBtjD,CAAC,CACtL,SAASsy1C,GAAG501C,EAAEsC,EAAEzC,EAAE8B,EAAExD,GAAGa,KAAKoX,IAAI9T,EAAEtD,KAAKu90C,cAAcv80C,EAAEhB,KAAKy01C,aAAaz01C,KAAKwt1C,UAAUxt1C,KAAK+/B,QAAQ//B,KAAK211C,gBAAgB,KAAK311C,KAAK401C,eAAe,EAAE501C,KAAKyz1C,aAAazz1C,KAAKwu1C,eAAexu1C,KAAKmtC,QAAQ,KAAKntC,KAAK4z1C,iBAAiB,EAAE5z1C,KAAKi90C,WAAWlvzC,GAAG,GAAG/tB,KAAK0z1C,gBAAgB3l0C,IAAI,GAAG/tB,KAAK+80C,eAAe/80C,KAAK001C,cAAc101C,KAAKk11C,iBAAiBl11C,KAAK2z1C,aAAa3z1C,KAAK880C,YAAY980C,KAAK680C,eAAe780C,KAAK480C,aAAa,EAAE580C,KAAKg90C,cAAcjvzC,GAAG,GAAG/tB,KAAK+50C,iBAAiBp30C,EAAE3C,KAAKq11C,mBAAmBl21C,EAAEa,KAAK611C,gCAC/e,IAAI,CAAC,SAAS/tK,GAAG9mrC,EAAEsC,EAAEzC,EAAE8B,EAAExD,EAAEuD,EAAEP,EAAES,EAAEc,GAAgN,OAA7M1C,EAAE,IAAI401C,GAAG501C,EAAEsC,EAAEzC,EAAE+B,EAAEc,GAAG,IAAIJ,GAAGA,EAAE,GAAE,IAAKZ,IAAIY,GAAG,IAAIA,EAAE,EAAEZ,EAAEsk1C,GAAG,EAAE,KAAK,KAAK1j1C,GAAGtC,EAAE++B,QAAQr9B,EAAEA,EAAEo50C,UAAU960C,EAAE0B,EAAEmz0C,cAAc,CAAC9pvC,QAAQppF,EAAE260C,aAAaz80C,EAAEqyB,MAAM,KAAK6yG,YAAY,KAAK+vtC,0BAA0B,MAAMnM,GAAGjn1C,GAAU1B,CAAC,CACzP,SAAS+01C,GAAG/01C,GAAG,IAAIA,EAAE,OAAOik1C,GAAuBjk1C,EAAE,CAAC,GAAGuovC,GAA1BvovC,EAAEA,EAAEq00C,mBAA8Br00C,GAAG,IAAIA,EAAEoW,IAAI,MAAMoQ,MAAM1kB,EAAE,MAAM,IAAIQ,EAAEtC,EAAE,EAAE,CAAC,OAAOsC,EAAE8T,KAAK,KAAK,EAAE9T,EAAEA,EAAEw40C,UAAU3uyC,QAAQ,MAAMnsC,EAAE,KAAK,EAAE,GAAGuk1C,GAAGji1C,EAAEiJ,MAAM,CAACjJ,EAAEA,EAAEw40C,UAAU6J,0CAA0C,MAAM3k1C,CAAC,EAAEsC,EAAEA,EAAE7B,MAAM,OAAO,OAAO6B,GAAG,MAAMkkB,MAAM1kB,EAAE,KAAM,CAAC,GAAG,IAAI9B,EAAEoW,IAAI,CAAC,IAAIvW,EAAEG,EAAEuL,KAAK,GAAGg50C,GAAG1k1C,GAAG,OAAO87nC,GAAG37nC,EAAEH,EAAEyC,EAAE,CAAC,OAAOA,CAAC,CACpW,SAASu2I,GAAG74I,EAAEsC,EAAEzC,EAAE8B,EAAExD,EAAEuD,EAAEP,EAAES,EAAEc,GAAwK,OAArK1C,EAAE8mrC,GAAGjnrC,EAAE8B,GAAE,EAAG3B,EAAE7B,EAAEuD,EAAEP,EAAES,EAAEc,IAAKypC,QAAQ4ozC,GAAG,MAAMl11C,EAAEG,EAAE++B,SAAsBr9B,EAAEwn1C,GAAhBvn1C,EAAE2B,KAAInF,EAAE2e,GAAGjd,KAAeqoB,SAAS,MAAS5lB,EAAYA,EAAE,KAAK+m1C,GAAGxp1C,EAAE6B,EAAEvD,GAAG6B,EAAE++B,QAAQspzC,MAAMlq1C,EAAEsrB,GAAGzpB,EAAE7B,EAAEwD,GAAG6w1C,GAAGxy1C,EAAE2B,GAAU3B,CAAC,CAAC,SAASg11C,GAAGh11C,EAAEsC,EAAEzC,EAAE8B,GAAG,IAAIxD,EAAEmE,EAAEy8B,QAAQr9B,EAAE4B,KAAInC,EAAE2b,GAAG3e,GAAsL,OAAnL0B,EAAEk11C,GAAGl11C,GAAG,OAAOyC,EAAE6pC,QAAQ7pC,EAAE6pC,QAAQtsC,EAAEyC,EAAEkr1C,eAAe3t1C,GAAEyC,EAAE4m1C,GAAGxn1C,EAAEP,IAAK2yB,QAAQ,CAACi3D,QAAQ/qF,GAAuB,QAApB2B,OAAE,IAASA,EAAE,KAAKA,KAAaW,EAAE4lB,SAASvmB,GAAe,QAAZ3B,EAAEqp1C,GAAGlr1C,EAAEmE,EAAEnB,MAAcgc,GAAGnd,EAAE7B,EAAEgD,EAAEO,GAAG4n1C,GAAGtp1C,EAAE7B,EAAEgD,IAAWA,CAAC,CAC3b,SAAS8rH,GAAGjtH,GAAe,OAAZA,EAAEA,EAAE++B,SAAcmqD,OAAyBlpF,EAAEkpF,MAAM9yE,IAAoDpW,EAAEkpF,MAAM4xvC,WAAhF,IAA0F,CAAC,SAASma,GAAGj11C,EAAEsC,GAAqB,GAAG,QAArBtC,EAAEA,EAAE600C,gBAA2B,OAAO700C,EAAEg70C,WAAW,CAAC,IAAIn70C,EAAEG,EAAEom1C,UAAUpm1C,EAAEom1C,UAAU,IAAIvm1C,GAAGA,EAAEyC,EAAEzC,EAAEyC,CAAC,CAAC,CAAC,SAASupa,GAAG7ra,EAAEsC,GAAG2y1C,GAAGj11C,EAAEsC,IAAItC,EAAEA,EAAE+60C,YAAYka,GAAGj11C,EAAEsC,EAAE,CAnB7Siv1C,GAAG,SAASvx1C,EAAEsC,EAAEzC,GAAG,GAAG,OAAOG,EAAE,GAAGA,EAAEym1C,gBAAgBnk1C,EAAE6j1C,cAAcjC,GAAGnlzC,QAAQ6miC,IAAG,MAAO,CAAC,GAAG,IAAK5lkC,EAAEqo1C,MAAMxo1C,IAAI,IAAa,IAARyC,EAAE82C,OAAW,OAAOwshC,IAAG,EAzE1I,SAAY5lkC,EAAEsC,EAAEzC,GAAG,OAAOyC,EAAE8T,KAAK,KAAK,EAAEm30C,GAAGjr1C,GAAGqk1C,KAAK,MAAM,KAAK,EAAEmD,GAAGxn1C,GAAG,MAAM,KAAK,EAAEii1C,GAAGji1C,EAAEiJ,OAAOm50C,GAAGpi1C,GAAG,MAAM,KAAK,EAAEsn1C,GAAGtn1C,EAAEA,EAAEw40C,UAAUyB,eAAe,MAAM,KAAK,GAAG,IAAI560C,EAAEW,EAAEiJ,KAAKy4I,SAAS7lJ,EAAEmE,EAAEmk1C,cAActm1C,MAAMwD,GAAEik1C,GAAGjm1C,EAAE030C,eAAe130C,EAAE030C,cAAcl70C,EAAE,MAAM,KAAK,GAAqB,GAAG,QAArBwD,EAAEW,EAAEuy0C,eAA2B,OAAG,OAAOlz0C,EAAEq50C,YAAkBr30C,GAAEN,GAAY,EAAVA,GAAE07B,SAAWz8B,EAAE82C,OAAO,IAAI,MAAQ,IAAKv5C,EAAEyC,EAAE4mF,MAAMi/vC,YAAmB6F,GAAGhu1C,EAAEsC,EAAEzC,IAAG8D,GAAEN,GAAY,EAAVA,GAAE07B,SAA8B,QAAnB/+B,EAAEqe,GAAGre,EAAEsC,EAAEzC,IAAmBG,EAAE0vF,QAAQ,MAAK/rF,GAAEN,GAAY,EAAVA,GAAE07B,SAAW,MAAM,KAAK,GAC7d,GADgep9B,EAAE,IAAK9B,EACrfyC,EAAE6l1C,YAAe,IAAa,IAARno1C,EAAEo5C,OAAW,CAAC,GAAGz3C,EAAE,OAAOgxd,GAAG3yd,EAAEsC,EAAEzC,GAAGyC,EAAE82C,OAAO,GAAG,CAA6F,GAA1E,QAAlBj7C,EAAEmE,EAAEuy0C,iBAAyB120C,EAAE0w1C,UAAU,KAAK1w1C,EAAEq/L,KAAK,KAAKr/L,EAAE8t1C,WAAW,MAAMto1C,GAAEN,GAAEA,GAAE07B,SAAYp9B,EAAE,MAAW,OAAO,KAAK,KAAK,GAAG,KAAK,GAAG,OAAOW,EAAE+l1C,MAAM,EAAEwE,GAAG7s1C,EAAEsC,EAAEzC,GAAG,OAAOwe,GAAGre,EAAEsC,EAAEzC,EAAE,CAwE7G+yd,CAAG5yd,EAAEsC,EAAEzC,GAAG+lkC,GAAG,IAAa,OAAR5lkC,EAAEo5C,MAAmB,MAAMwshC,IAAG,EAAG/ikC,IAAG,IAAa,QAARP,EAAE82C,QAAgBqsyC,GAAGnj1C,EAAE6i1C,GAAG7i1C,EAAE0Z,OAAiB,OAAV1Z,EAAE+l1C,MAAM,EAAS/l1C,EAAE8T,KAAK,KAAK,EAAE,IAAIzU,EAAEW,EAAEiJ,KAAKqwK,GAAG57K,EAAEsC,GAAGtC,EAAEsC,EAAE6j1C,aAAa,IAAIho1C,EAAEim1C,GAAG9h1C,EAAEkC,GAAEu6B,SAASwsP,GAAGjpR,EAAEzC,GAAG1B,EAAE0s1C,GAAG,KAAKvo1C,EAAEX,EAAE3B,EAAE7B,EAAE0B,GAAG,IAAI6B,EAAEwp1C,KACvI,OAD4I5o1C,EAAE82C,OAAO,EAAE,iBAAkBj7C,GAAG,OAAOA,GAAG,mBAAoBA,EAAEmvH,aAAQ,IAASnvH,EAAE036B,UAAUvz6B,EAAE8T,IAAI,EAAE9T,EAAEuy0C,cAAc,KAAKvy0C,EAAEsm1C,YAC1e,KAAKrE,GAAG5i1C,IAAID,GAAE,EAAGgj1C,GAAGpi1C,IAAIZ,GAAE,EAAGY,EAAEuy0C,cAAc,OAAO120C,EAAEwM,YAAO,IAASxM,EAAEwM,MAAMxM,EAAEwM,MAAM,KAAKg+0C,GAAGrm1C,GAAGnE,EAAEkg/B,QAAQ//9B,GAAGhc,EAAEw40C,UAAU380C,EAAEA,EAAEk20C,gBAAgB/x0C,EAAEob,GAAGpb,EAAEX,EAAE3B,EAAEH,GAAGyC,EAAEgr1C,GAAG,KAAKhr1C,EAAEX,GAAE,EAAGD,EAAE7B,KAAKyC,EAAE8T,IAAI,EAAEvT,IAAGnB,GAAGgk1C,GAAGpj1C,GAAG4c,GAAG,KAAK5c,EAAEnE,EAAE0B,GAAGyC,EAAEA,EAAE4mF,OAAc5mF,EAAE,KAAK,GAAGX,EAAEW,EAAE6umC,YAAYnxmC,EAAE,CAAqF,OAApF47K,GAAG57K,EAAEsC,GAAGtC,EAAEsC,EAAE6j1C,aAAuBxk1C,GAAVxD,EAAEwD,EAAE8v9B,OAAU9v9B,EAAE8+/B,UAAUn+/B,EAAEiJ,KAAK5J,EAAExD,EAAEmE,EAAE8T,IAQtU,SAAYpW,GAAG,GAAG,mBAAoBA,EAAE,OAAO0s1C,GAAG1s1C,GAAG,EAAE,EAAE,GAAG,MAASA,EAAY,CAAc,IAAbA,EAAEA,EAAE616B,YAAgB+yU,EAAG,OAAO,GAAG,GAAG5ovC,IAAIy2B,EAAG,OAAO,EAAE,CAAC,OAAO,CAAC,CAR2Ly+zC,CAAGvz1C,GAAG3B,EAAEge,GAAGrc,EAAE3B,GAAU7B,GAAG,KAAK,EAAEmE,EAAEsq1C,GAAG,KAAKtq1C,EAAEX,EAAE3B,EAAEH,GAAG,MAAMG,EAAE,KAAK,EAAEsC,EAAE6q1C,GAAG,KAAK7q1C,EAAEX,EAAE3B,EAAEH,GAAG,MAAMG,EAAE,KAAK,GAAGsC,EAAEge,GAAG,KAAKhe,EAAEX,EAAE3B,EAAEH,GAAG,MAAMG,EAAE,KAAK,GAAGsC,EAAEye,GAAG,KAAKze,EAAEX,EAAEqc,GAAGrc,EAAE4J,KAAKvL,GAAGH,GAAG,MAAMG,EAAE,MAAMwmB,MAAM1kB,EAAE,IACvgBH,EAAE,IAAK,CAAC,OAAOW,EAAE,KAAK,EAAE,OAAOX,EAAEW,EAAEiJ,KAAKpN,EAAEmE,EAAE6j1C,aAA2CyG,GAAG5s1C,EAAEsC,EAAEX,EAArCxD,EAAEmE,EAAE6umC,cAAcxvmC,EAAExD,EAAE6f,GAAGrc,EAAExD,GAAc0B,GAAG,KAAK,EAAE,OAAO8B,EAAEW,EAAEiJ,KAAKpN,EAAEmE,EAAE6j1C,aAA2CgH,GAAGnt1C,EAAEsC,EAAEX,EAArCxD,EAAEmE,EAAE6umC,cAAcxvmC,EAAExD,EAAE6f,GAAGrc,EAAExD,GAAc0B,GAAG,KAAK,EAAEG,EAAE,CAAO,GAANut1C,GAAGjr1C,GAAM,OAAOtC,EAAE,MAAMwmB,MAAM1kB,EAAE,MAAMH,EAAEW,EAAE6j1C,aAA+Bho1C,GAAlBuD,EAAEY,EAAEuy0C,eAAkB9pvC,QAAQk+vC,GAAGjp1C,EAAEsC,GAAGkn1C,GAAGln1C,EAAEX,EAAE,KAAK9B,GAAG,IAAIsB,EAAEmB,EAAEuy0C,cAA0B,GAAZlz0C,EAAER,EAAE4pF,QAAWrpF,EAAE460C,aAAa,IAAG560C,EAAE,CAACqpF,QAAQppF,EAAE260C,cAAa,EAAGpqzC,MAAM/wB,EAAE+wB,MAAM4i0C,0BAA0B3z1C,EAAE2z1C,0BAA0B/vtC,YAAY5jI,EAAE4jI,aAAaziI,EAAEsm1C,YAAYC,UAChfnn1C,EAAEY,EAAEuy0C,cAAcnz0C,EAAU,IAARY,EAAE82C,MAAU,CAAuB92C,EAAEmr1C,GAAGzt1C,EAAEsC,EAAEX,EAAE9B,EAAjC1B,EAAEoiB,GAAGiG,MAAM1kB,EAAE,MAAMQ,IAAmB,MAAMtC,CAAC,CAAM,GAAG2B,IAAIxD,EAAE,CAAuBmE,EAAEmr1C,GAAGzt1C,EAAEsC,EAAEX,EAAE9B,EAAjC1B,EAAEoiB,GAAGiG,MAAM1kB,EAAE,MAAMQ,IAAmB,MAAMtC,CAAC,CAAM,IAAI6l1C,GAAGvC,GAAGhh1C,EAAEw40C,UAAUyB,cAAcpzvC,YAAYy8vC,GAAGtj1C,EAAEO,IAAE,EAAGij1C,GAAG,KAAKjm1C,EAAE8n1C,GAAGrl1C,EAAE,KAAKX,EAAE9B,GAAGyC,EAAE4mF,MAAMrpF,EAAEA,GAAGA,EAAEu5C,OAAe,EAATv5C,EAAEu5C,MAAS,KAAKv5C,EAAEA,EAAE6vF,OAAO,KAAK,CAAM,GAALi3vC,KAAQhl1C,IAAIxD,EAAE,CAACmE,EAAE+b,GAAGre,EAAEsC,EAAEzC,GAAG,MAAMG,CAAC,CAACkf,GAAGlf,EAAEsC,EAAEX,EAAE9B,EAAE,CAACyC,EAAEA,EAAE4mF,KAAK,CAAC,OAAO5mF,EAAE,KAAK,EAAE,OAAOwn1C,GAAGxn1C,GAAG,OAAOtC,GAAGsm1C,GAAGhk1C,GAAGX,EAAEW,EAAEiJ,KAAKpN,EAAEmE,EAAE6j1C,aAAazk1C,EAAE,OAAO1B,EAAEA,EAAEym1C,cAAc,KAAKtl1C,EAAEhD,EAAE6gC,SAAS+jzC,GAAGph1C,EAAExD,GAAGgD,EAAE,KAAK,OAAOO,GAAGqh1C,GAAGph1C,EAAED,KAAKY,EAAE82C,OAAO,IACnf8zyC,GAAGlt1C,EAAEsC,GAAG4c,GAAGlf,EAAEsC,EAAEnB,EAAEtB,GAAGyC,EAAE4mF,MAAM,KAAK,EAAE,OAAO,OAAOlpF,GAAGsm1C,GAAGhk1C,GAAG,KAAK,KAAK,GAAG,OAAO0r1C,GAAGhu1C,EAAEsC,EAAEzC,GAAG,KAAK,EAAE,OAAO+p1C,GAAGtn1C,EAAEA,EAAEw40C,UAAUyB,eAAe560C,EAAEW,EAAE6j1C,aAAa,OAAOnm1C,EAAEsC,EAAE4mF,MAAMw+vC,GAAGpl1C,EAAE,KAAKX,EAAE9B,GAAGqf,GAAGlf,EAAEsC,EAAEX,EAAE9B,GAAGyC,EAAE4mF,MAAM,KAAK,GAAG,OAAOvnF,EAAEW,EAAEiJ,KAAKpN,EAAEmE,EAAE6j1C,aAA2C7l0C,GAAGtgB,EAAEsC,EAAEX,EAArCxD,EAAEmE,EAAE6umC,cAAcxvmC,EAAExD,EAAE6f,GAAGrc,EAAExD,GAAc0B,GAAG,KAAK,EAAE,OAAOqf,GAAGlf,EAAEsC,EAAEA,EAAE6j1C,aAAatm1C,GAAGyC,EAAE4mF,MAAM,KAAK,EAAmD,KAAK,GAAG,OAAOhqE,GAAGlf,EAAEsC,EAAEA,EAAE6j1C,aAAannzC,SAASn/B,GAAGyC,EAAE4mF,MAAM,KAAK,GAAGlpF,EAAE,CACxZ,GADyZ2B,EAAEW,EAAEiJ,KAAKy4I,SAAS7lJ,EAAEmE,EAAE6j1C,aAAazk1C,EAAEY,EAAEmk1C,cAClftl1C,EAAEhD,EAAEgC,MAAMwD,GAAEik1C,GAAGjm1C,EAAE030C,eAAe130C,EAAE030C,cAAcl40C,EAAK,OAAOO,EAAE,GAAGsH,GAAGtH,EAAEvB,MAAMgB,IAAI,GAAGO,EAAEs9B,WAAW7gC,EAAE6gC,WAAWklzC,GAAGnlzC,QAAQ,CAACz8B,EAAE+b,GAAGre,EAAEsC,EAAEzC,GAAG,MAAMG,CAAC,OAAO,IAAc,QAAV0B,EAAEY,EAAE4mF,SAAiBxnF,EAAEjB,OAAO6B,GAAG,OAAOZ,GAAG,CAAC,IAAIE,EAAEF,EAAEu5J,aAAa,GAAG,OAAOr5J,EAAE,CAACT,EAAEO,EAAEwnF,MAAM,IAAI,IAAIxmF,EAAEd,EAAEwm1C,aAAa,OAAO1l1C,GAAG,CAAC,GAAGA,EAAEypC,UAAUxqC,EAAE,CAAC,GAAG,IAAID,EAAE0U,IAAI,EAAC1T,EAAEwm1C,IAAI,EAAErp1C,GAAGA,IAAKuW,IAAI,EAAE,IAAI5U,EAAEE,EAAEkn1C,YAAY,GAAG,OAAOpn1C,EAAE,CAAY,IAAIY,GAAfZ,EAAEA,EAAEwn1C,QAAe736B,QAAQ,OAAO/ua,EAAEM,EAAE3C,KAAK2C,GAAGA,EAAE3C,KAAKqC,EAAErC,KAAKqC,EAAErC,KAAK2C,GAAGlB,EAAE2va,QAAQzua,CAAC,CAAC,CAAChB,EAAE2m1C,OAAOxo1C,EAAgB,QAAd6C,EAAEhB,EAAEq50C,aAAqBr40C,EAAE2l1C,OAAOxo1C,GAAGqo1C,GAAGxm1C,EAAEjB,OAClfZ,EAAEyC,GAAGV,EAAEym1C,OAAOxo1C,EAAE,KAAK,CAAC6C,EAAEA,EAAE3C,IAAI,CAAC,MAAM,GAAG,KAAK2B,EAAE0U,IAAIjV,EAAEO,EAAE6J,OAAOjJ,EAAEiJ,KAAK,KAAK7J,EAAEwnF,WAAW,GAAG,KAAKxnF,EAAE0U,IAAI,CAAY,GAAG,QAAdjV,EAAEO,EAAEjB,QAAmB,MAAM+lB,MAAM1kB,EAAE,MAAMX,EAAEkn1C,OAAOxo1C,EAAgB,QAAd+B,EAAET,EAAE450C,aAAqBn50C,EAAEym1C,OAAOxo1C,GAAGqo1C,GAAG/m1C,EAAEtB,EAAEyC,GAAGnB,EAAEO,EAAEguF,OAAO,MAAMvuF,EAAEO,EAAEwnF,MAAM,GAAG,OAAO/nF,EAAEA,EAAEV,OAAOiB,OAAO,IAAIP,EAAEO,EAAE,OAAOP,GAAG,CAAC,GAAGA,IAAImB,EAAE,CAACnB,EAAE,KAAK,KAAK,CAAa,GAAG,QAAfO,EAAEP,EAAEuuF,SAAoB,CAAChuF,EAAEjB,OAAOU,EAAEV,OAAOU,EAAEO,EAAE,KAAK,CAACP,EAAEA,EAAEV,MAAM,CAACiB,EAAEP,CAAC,CAAC+d,GAAGlf,EAAEsC,EAAEnE,EAAE6gC,SAASn/B,GAAGyC,EAAEA,EAAE4mF,KAAK,CAAC,OAAO5mF,EAAE,KAAK,EAAE,OAAOnE,EAAEmE,EAAEiJ,KAAK5J,EAAEW,EAAE6j1C,aAAannzC,SAASusP,GAAGjpR,EAAEzC,GAAW8B,EAAEA,EAAVxD,EAAEykzC,GAAGzkzC,IAAUmE,EAAE82C,OAAO,EAAEl6B,GAAGlf,EAAEsC,EAAEX,EAAE9B,GACpfyC,EAAE4mF,MAAM,KAAK,GAAG,OAAgB/qF,EAAE6f,GAAXrc,EAAEW,EAAEiJ,KAAYjJ,EAAE6j1C,cAA6Bpl0C,GAAG/gB,EAAEsC,EAAEX,EAAtBxD,EAAE6f,GAAGrc,EAAE4J,KAAKpN,GAAc0B,GAAG,KAAK,GAAG,OAAO8s1C,GAAG3s1C,EAAEsC,EAAEA,EAAEiJ,KAAKjJ,EAAE6j1C,aAAatm1C,GAAG,KAAK,GAAG,OAAO8B,EAAEW,EAAEiJ,KAAKpN,EAAEmE,EAAE6j1C,aAAaho1C,EAAEmE,EAAE6umC,cAAcxvmC,EAAExD,EAAE6f,GAAGrc,EAAExD,GAAGy9K,GAAG57K,EAAEsC,GAAGA,EAAE8T,IAAI,EAAEmu0C,GAAG5i1C,IAAI3B,GAAE,EAAG0k1C,GAAGpi1C,IAAItC,GAAE,EAAGurR,GAAGjpR,EAAEzC,GAAG0e,GAAGjc,EAAEX,EAAExD,GAAGuf,GAAGpb,EAAEX,EAAExD,EAAE0B,GAAGyt1C,GAAG,KAAKhr1C,EAAEX,GAAE,EAAG3B,EAAEH,GAAG,KAAK,GAAG,OAAO8yd,GAAG3yd,EAAEsC,EAAEzC,GAAG,KAAK,GAAG,OAAOgt1C,GAAG7s1C,EAAEsC,EAAEzC,GAAG,MAAM2mB,MAAM1kB,EAAE,IAAIQ,EAAE8T,KAAM,EAYxC,IAAI++0C,GAAG,mBAAoB3tyC,YAAYA,YAAY,SAASxnD,GAAGqmB,QAAQvlB,MAAMd,EAAE,EAAE,SAAS0tzC,GAAG1tzC,GAAGhB,KAAKo21C,cAAcp11C,CAAC,CACjI,SAAS2/W,GAAG3/W,GAAGhB,KAAKo21C,cAAcp11C,CAAC,CAC5J,SAASq11C,GAAGr11C,GAAG,SAASA,GAAG,IAAIA,EAAEsoF,UAAU,IAAItoF,EAAEsoF,UAAU,KAAKtoF,EAAEsoF,SAAS,CAAC,SAASgtwC,GAAGt11C,GAAG,SAASA,GAAG,IAAIA,EAAEsoF,UAAU,IAAItoF,EAAEsoF,UAAU,KAAKtoF,EAAEsoF,WAAW,IAAItoF,EAAEsoF,UAAU,iCAAiCtoF,EAAEsrpC,WAAW,CAAC,SAASvsyB,KAAK,CAExa,SAAS+h4B,GAAG9gvC,EAAEsC,EAAEzC,EAAE8B,EAAExD,GAAG,IAAIuD,EAAE7B,EAAEww1C,oBAAoB,GAAG3u1C,EAAE,CAAC,IAAIP,EAAEO,EAAE,GAAG,mBAAoBvD,EAAE,CAAC,IAAIyD,EAAEzD,EAAEA,EAAE,WAAW,IAAI6B,EAAEitH,GAAG9rH,GAAGS,EAAEhD,KAAKoB,EAAE,CAAC,CAACg11C,GAAG1y1C,EAAEnB,EAAEnB,EAAE7B,EAAE,MAAMgD,EADxJ,SAAYnB,EAAEsC,EAAEzC,EAAE8B,EAAExD,GAAG,GAAGA,EAAE,CAAC,GAAG,mBAAoBwD,EAAE,CAAC,IAAID,EAAEC,EAAEA,EAAE,WAAW,IAAI3B,EAAEitH,GAAG9rH,GAAGO,EAAE9C,KAAKoB,EAAE,CAAC,CAAC,IAAImB,EAAE03I,GAAGv2I,EAAEX,EAAE3B,EAAE,EAAE,MAAK,EAAG,EAAG,GAAG++W,IAAmF,OAA/E/+W,EAAEqw1C,oBAAoBlv1C,EAAEnB,EAAEsi1C,IAAInh1C,EAAE49B,QAAQqjzC,GAAG,IAAIpi1C,EAAEsoF,SAAStoF,EAAE0gC,WAAW1gC,GAAG8z1C,KAAY3y1C,CAAC,CAAC,KAAKhD,EAAE6B,EAAE2thB,WAAW3thB,EAAE67B,YAAY19B,GAAG,GAAG,mBAAoBwD,EAAE,CAAC,IAAIC,EAAED,EAAEA,EAAE,WAAW,IAAI3B,EAAEitH,GAAGvqH,GAAGd,EAAEhD,KAAKoB,EAAE,CAAC,CAAC,IAAI0C,EAAEokrC,GAAG9mrC,EAAE,GAAE,EAAG,KAAK,GAAK,EAAG,EAAG,GAAG++W,IAA0G,OAAtG/+W,EAAEqw1C,oBAAoB3t1C,EAAE1C,EAAEsi1C,IAAI5/0C,EAAEq8B,QAAQqjzC,GAAG,IAAIpi1C,EAAEsoF,SAAStoF,EAAE0gC,WAAW1gC,GAAG8z1C,IAAG,WAAWkB,GAAG1y1C,EAAEI,EAAE7C,EAAE8B,EAAE,IAAUe,CAAC,CACpU6y1C,CAAG111C,EAAEyC,EAAEtC,EAAE7B,EAAEwD,GAAG,OAAOsrH,GAAG9rH,EAAE,CAHpLw+W,GAAGjhX,UAAU4uH,OAAOogsC,GAAGhvzC,UAAU4uH,OAAO,SAASttH,GAAG,IAAIsC,EAAEtD,KAAKo21C,cAAc,GAAG,OAAO9y1C,EAAE,MAAMkkB,MAAM1kB,EAAE,MAAMkz1C,GAAGh11C,EAAEsC,EAAE,KAAK,KAAK,EAAEq9W,GAAGjhX,UAAU6kpC,QAAQmqK,GAAGhvzC,UAAU6kpC,QAAQ,WAAW,IAAIvjpC,EAAEhB,KAAKo21C,cAAc,GAAG,OAAOp11C,EAAE,CAAChB,KAAKo21C,cAAc,KAAK,IAAI9y1C,EAAEtC,EAAEu80C,cAAcuX,IAAG,WAAWkB,GAAG,KAAKh11C,EAAE,KAAK,KAAK,IAAGsC,EAAEgg1C,IAAI,IAAI,CAAC,EACzT3i+B,GAAGjhX,UAAU821C,2BAA2B,SAASx11C,GAAG,GAAGA,EAAE,CAAC,IAAIsC,EAAEmqB,KAAKzsB,EAAE,CAACk80C,UAAU,KAAKpt0C,OAAO9O,EAAE6sC,SAASvqC,GAAG,IAAI,IAAIzC,EAAE,EAAEA,EAAE6tB,GAAGruB,QAAQ,IAAIiD,GAAGA,EAAEorB,GAAG7tB,GAAGgtC,SAAShtC,KAAK6tB,GAAGzL,OAAOpiB,EAAE,EAAEG,GAAG,IAAIH,GAAGitB,GAAG9sB,EAAE,CAAC,EAEXqlB,GAAG,SAASrlB,GAAG,OAAOA,EAAEoW,KAAK,KAAK,EAAE,IAAI9T,EAAEtC,EAAE860C,UAAU,GAAGx40C,EAAEy8B,QAAQ81yC,cAAcyH,aAAa,CAAC,IAAIz80C,EAAEohB,GAAG3e,EAAEs50C,cAAc,IAAI/70C,IAAImlB,GAAG1iB,EAAI,EAAFzC,GAAK2y1C,GAAGlw1C,EAAEyC,MAAK,IAAO,EAAFd,MAAOqr1C,GAAGvq1C,KAAI,IAAIig1C,MAAM,CAAC,MAAM,KAAK,GAAG8O,IAAG,WAAW,IAAIxx1C,EAAEmm1C,GAAGzo1C,EAAE,GAAG,GAAG,OAAOsC,EAAE,CAAC,IAAIzC,EAAEyD,KAAI6Z,GAAG7a,EAAEtC,EAAE,EAAEH,EAAE,CAAC,IAAGgsa,GAAG7ra,EAAE,GAAG,EAC/bisB,GAAG,SAASjsB,GAAG,GAAG,KAAKA,EAAEoW,IAAI,CAAC,IAAI9T,EAAEmm1C,GAAGzo1C,EAAE,WAAc,OAAOsC,GAAa6a,GAAG7a,EAAEtC,EAAE,UAAXsD,MAAwBuoa,GAAG7ra,EAAE,UAAU,CAAC,EAAEumB,GAAG,SAASvmB,GAAG,GAAG,KAAKA,EAAEoW,IAAI,CAAC,IAAI9T,EAAEwa,GAAG9c,GAAGH,EAAE4o1C,GAAGzo1C,EAAEsC,GAAM,OAAOzC,GAAasd,GAAGtd,EAAEG,EAAEsC,EAAXgB,MAAgBuoa,GAAG7ra,EAAEsC,EAAE,CAAC,EAAEmqB,GAAG,WAAW,OAAOtpB,EAAC,EAAEqhB,GAAG,SAASxkB,EAAEsC,GAAG,IAAIzC,EAAEsD,GAAE,IAAI,OAAOA,GAAEnD,EAAEsC,GAAG,CAAC,QAAQa,GAAEtD,CAAC,CAAC,EAClS410C,GAAG,SAASz10C,EAAEsC,EAAEzC,GAAG,OAAOyC,GAAG,IAAK,QAAyB,GAAjBknvC,EAAGxpvC,EAAEH,GAAGyC,EAAEzC,EAAE6J,KAAQ,UAAU7J,EAAE0L,MAAM,MAAMjJ,EAAE,CAAC,IAAIzC,EAAEG,EAAEH,EAAE6gC,YAAY7gC,EAAEA,EAAE6gC,WAAsF,IAA3E7gC,EAAEA,EAAEquF,iBAAiB,cAAc50E,KAAKb,UAAU,GAAGnW,GAAG,mBAAuBA,EAAE,EAAEA,EAAEzC,EAAER,OAAOiD,IAAI,CAAC,IAAIX,EAAE9B,EAAEyC,GAAG,GAAGX,IAAI3B,GAAG2B,EAAE8z1C,OAAOz11C,EAAEy11C,KAAK,CAAC,IAAIt31C,EAAE040C,GAAGl10C,GAAG,IAAIxD,EAAE,MAAMqoB,MAAM1kB,EAAE,KAAKwnvC,EAAG3nvC,GAAG6nvC,EAAG7nvC,EAAExD,EAAE,CAAC,CAAC,CAAC,MAAM,IAAK,WAAWw20C,GAAG300C,EAAEH,GAAG,MAAM,IAAK,SAAmB,OAAVyC,EAAEzC,EAAEM,QAAeylV,GAAG5lV,IAAIH,EAAE0u/B,SAASjs/B,GAAE,GAAI,EAAEy00C,GAAG8c,GAAGxc,GAAGyc,GACpa,IAAI4B,GAAG,CAACC,uBAAsB,EAAG9w2B,OAAO,CAACklwB,GAAG5jvC,GAAG0w0C,GAAG7sF,GAAGnC,GAAGgsG,KAAKpwK,GAAG,CAACmyK,wBAAwB/v0C,GAAGgw0C,WAAW,EAAEvw1C,QAAQ,SAASww1C,oBAAoB,aAC1IC,GAAG,CAACF,WAAWpyK,GAAGoyK,WAAWvw1C,QAAQm+qC,GAAGn+qC,QAAQww1C,oBAAoBryK,GAAGqyK,oBAAoBE,eAAevyK,GAAGuyK,eAAeC,kBAAkB,KAAKC,4BAA4B,KAAKC,4BAA4B,KAAKC,cAAc,KAAKC,wBAAwB,KAAKC,wBAAwB,KAAKC,gBAAgB,KAAKC,mBAAmB,KAAKC,eAAe,KAAKC,qBAAqB7l0C,EAAG8kzC,uBAAuBghB,wBAAwB,SAAS321C,GAAW,OAAO,QAAfA,EAAEo50C,GAAGp50C,IAAmB,KAAKA,EAAE860C,SAAS,EAAE8a,wBAAwBnyK,GAAGmyK,yBARjN,WAAc,OAAO,IAAI,EASpUgB,4BAA4B,KAAKC,gBAAgB,KAAKC,aAAa,KAAKC,kBAAkB,KAAKC,gBAAgB,KAAKC,kBAAkB,mCAAmC,GAAG,oBAAqBC,+BAA+B,CAAC,IAAIC,GAAGD,+BAA+B,IAAIC,GAAGlpzB,YAAYkpzB,GAAGC,cAAc,IAAI5z0C,GAAG2z0C,GAAG9gxC,OAAO0/wC,IAAI1z0C,GAAG800C,EAAE,CAAC,MAAMn31C,IAAG,CAAC,CAACyB,EAAQi00C,mDAAmDggB,GAC/Yj01C,EAAQk1Z,aAAa,SAAS32Z,EAAEsC,GAAG,IAAIzC,EAAE,EAAET,UAAUC,aAAQ,IAASD,UAAU,GAAGA,UAAU,GAAG,KAAK,IAAIi21C,GAAG/y1C,GAAG,MAAMkkB,MAAM1kB,EAAE,MAAM,OAbuH,SAAY9B,EAAEsC,EAAEzC,GAAG,IAAI8B,EAAE,EAAEvC,UAAUC,aAAQ,IAASD,UAAU,GAAGA,UAAU,GAAG,KAAK,MAAM,CAACy26B,SAASri5B,EAAG3P,IAAI,MAAMliB,EAAE,KAAK,GAAGA,EAAEq9B,SAASh/B,EAAEu80C,cAAcj60C,EAAEsjD,eAAe/lD,EAAE,CAa1R286B,CAAGx86B,EAAEsC,EAAE,KAAKzC,EAAE,EAAE4B,EAAQs06B,WAAW,SAAS/16B,EAAEsC,GAAG,IAAI+y1C,GAAGr11C,GAAG,MAAMwmB,MAAM1kB,EAAE,MAAM,IAAIjC,GAAE,EAAG8B,EAAE,GAAGxD,EAAEg31C,GAA4P,OAAzP,MAAO7y1C,KAAgB,IAAKA,EAAE+01C,sBAAsBx31C,GAAE,QAAI,IAASyC,EAAEy20C,mBAAmBp30C,EAAEW,EAAEy20C,uBAAkB,IAASz20C,EAAE+x1C,qBAAqBl21C,EAAEmE,EAAE+x1C,qBAAqB/x1C,EAAEwkrC,GAAG9mrC,EAAE,GAAE,EAAG,KAAK,EAAKH,EAAE,EAAG8B,EAAExD,GAAG6B,EAAEsi1C,IAAIhg1C,EAAEy8B,QAAQqjzC,GAAG,IAAIpi1C,EAAEsoF,SAAStoF,EAAE0gC,WAAW1gC,GAAU,IAAI0tzC,GAAGprzC,EAAE,EACrfb,EAAQ611C,YAAY,SAASt31C,GAAG,GAAG,MAAMA,EAAE,OAAO,KAAK,GAAG,IAAIA,EAAEsoF,SAAS,OAAOtoF,EAAE,IAAIsC,EAAEtC,EAAEq00C,gBAAgB,QAAG,IAAS/x0C,EAAE,CAAC,GAAG,mBAAoBtC,EAAEstH,OAAO,MAAM9mG,MAAM1kB,EAAE,MAAiC,MAA3B9B,EAAE1B,OAAOgU,KAAKtS,GAAG6L,KAAK,KAAW2a,MAAM1kB,EAAE,IAAI9B,GAAI,CAAqC,OAA1B,QAAVA,EAAEo50C,GAAG920C,IAAc,KAAKtC,EAAE860C,SAAkB,EAAEr50C,EAAQu06B,UAAU,SAASh26B,GAAG,OAAO8z1C,GAAG9z1C,EAAE,EAAEyB,EAAQq4P,QAAQ,SAAS95P,EAAEsC,EAAEzC,GAAG,IAAIy11C,GAAGhz1C,GAAG,MAAMkkB,MAAM1kB,EAAE,MAAM,OAAOg/uC,GAAG,KAAK9gvC,EAAEsC,GAAE,EAAGzC,EAAE,EAC/Y4B,EAAQ811C,YAAY,SAASv31C,EAAEsC,EAAEzC,GAAG,IAAIw11C,GAAGr11C,GAAG,MAAMwmB,MAAM1kB,EAAE,MAAM,IAAIH,EAAE,MAAM9B,GAAGA,EAAE231C,iBAAiB,KAAKr51C,GAAE,EAAGuD,EAAE,GAAGP,EAAEg01C,GAAyO,GAAtO,MAAOt11C,KAAgB,IAAKA,EAAEw31C,sBAAsBl51C,GAAE,QAAI,IAAS0B,EAAEk50C,mBAAmBr30C,EAAE7B,EAAEk50C,uBAAkB,IAASl50C,EAAEw01C,qBAAqBlz1C,EAAEtB,EAAEw01C,qBAAqB/x1C,EAAEu2I,GAAGv2I,EAAE,KAAKtC,EAAE,EAAE,MAAMH,EAAEA,EAAE,KAAK1B,EAAE,EAAGuD,EAAEP,GAAGnB,EAAEsi1C,IAAIhg1C,EAAEy8B,QAAQqjzC,GAAGpi1C,GAAM2B,EAAE,IAAI3B,EAAE,EAAEA,EAAE2B,EAAEtC,OAAOW,IAA2B7B,GAAhBA,GAAP0B,EAAE8B,EAAE3B,IAAOy31C,aAAgB531C,EAAE4gwB,SAAS,MAAMn+vB,EAAEuy1C,gCAAgCvy1C,EAAEuy1C,gCAAgC,CAACh11C,EAAE1B,GAAGmE,EAAEuy1C,gCAAgCh01C,KAAKhB,EACvhB1B,GAAG,OAAO,IAAIwhX,GAAGr9W,EAAE,EAAEb,EAAQ6rH,OAAO,SAASttH,EAAEsC,EAAEzC,GAAG,IAAIy11C,GAAGhz1C,GAAG,MAAMkkB,MAAM1kB,EAAE,MAAM,OAAOg/uC,GAAG,KAAK9gvC,EAAEsC,GAAE,EAAGzC,EAAE,EAAE4B,EAAQi21C,uBAAuB,SAAS131C,GAAG,IAAIs11C,GAAGt11C,GAAG,MAAMwmB,MAAM1kB,EAAE,KAAK,QAAO9B,EAAEqw1C,sBAAqByD,IAAG,WAAWhzG,GAAG,KAAK,KAAK9gvC,GAAE,GAAG,WAAWA,EAAEqw1C,oBAAoB,KAAKrw1C,EAAEsi1C,IAAI,IAAI,GAAE,KAAG,EAAM,EAAE7g1C,EAAQk21C,wBAAwB9D,GAC/Upy1C,EAAQm21C,oCAAoC,SAAS531C,EAAEsC,EAAEzC,EAAE8B,GAAG,IAAI2z1C,GAAGz11C,GAAG,MAAM2mB,MAAM1kB,EAAE,MAAM,GAAG,MAAM9B,QAAG,IAASA,EAAEq00C,gBAAgB,MAAM7tzC,MAAM1kB,EAAE,KAAK,OAAOg/uC,GAAG9gvC,EAAEsC,EAAEzC,GAAE,EAAG8B,EAAE,EAAEF,EAAQ6D,QAAQ,mEC/TzLlD,EAAI,EAAQ,OAEdX,EAAQ,EAAaW,EAAE2z6B,WACD3z6B,EAAEm11C,2CCH1B,SAASM,IAEP,GAC4C,oBAAnCX,gCAC4C,mBAA5CA,+BAA+BW,SAcxC,IAEEX,+BAA+BW,SAASA,EAC1C,CAAE,MAAOvhzC,GAGPjwB,QAAQvlB,MAAMw1C,EAChB,CACF,CAKEuhzC,GACA/7zC,EAAOr6B,QAAU,EAAjB,qCChCF,IAAID,EAAG1B,EAEL0B,EAAI,EAAQ,OACZ1B,EAAI,EAAQ,OAMd2B,EAAQ6D,QAAU9D,EAAE8D,QACpB7D,EAAQ8wiC,eAAiB/wiC,EAAE+wiC,eAC3B9wiC,EAAQ2j6B,qBAAuB5j6B,EAAE4j6B,qBACjC3j6B,EAAQu30C,mBAAqBx30C,EAAEw30C,mBAC/Bv30C,EAAQw30C,yBAA2Bz30C,EAAEy30C,yBACrCx30C,EAAQ830C,uBAAyBz50C,EAAEy50C,qDCdnC,SAASp39B,EAAQj2J,GAAkC,OAAOi2J,EAAU,mBAAqBzhX,QAAU,iBAAmBA,OAAOC,SAAW,SAAUurN,GAAO,cAAcA,CAAK,EAAI,SAAUA,GAAO,OAAOA,GAAO,mBAAqBxrN,QAAUwrN,EAAIjtN,cAAgByB,QAAUwrN,IAAQxrN,OAAOhC,UAAY,gBAAkBwtN,CAAK,EAAGi2J,EAAQj2J,EAAM,CAE/U5tN,OAAO4D,eAAeT,EAAS,aAAc,CAC3CtB,OAAO,IAET7B,OAAO4D,eAAeT,EAAS,gBAAiB,CAC9CkB,YAAY,EACZR,IAAK,WACH,OAAO211C,EAAev21C,OACxB,IAEFE,EAAA,aAAkB,EAElB,IAAIs21C,EAwBJ,SAAiC7roC,EAAK8roC,GAAe,GAAoB9roC,GAAOA,EAAI5qN,WAAc,OAAO4qN,EAAO,GAAY,OAARA,GAAiC,WAAjBi2J,EAAQj2J,IAAoC,mBAARA,EAAsB,MAAO,CAAE3qN,QAAS2qN,GAAS,IAAIh6L,EAAQs0V,EAAyBwx+B,GAAc,GAAI9l0C,GAASA,EAAMnnB,IAAImhN,GAAQ,OAAOh6L,EAAM/vB,IAAI+pN,GAAQ,IAAIu6J,EAAS,CAAC,EAAOC,EAAwBpoX,OAAO4D,gBAAkB5D,OAAOmE,yBAA0B,IAAK,IAAIohB,KAAOqoM,EAAO,GAAY,YAARroM,GAAqBvlB,OAAOI,UAAUC,eAAeC,KAAKstN,EAAKroM,GAAM,CAAE,IAAIsrC,EAAOu3T,EAAwBpoX,OAAOmE,yBAAyBypN,EAAKroM,GAAO,KAAUsrC,IAASA,EAAKhtD,KAAOgtD,EAAKlkD,KAAQ3M,OAAO4D,eAAeukX,EAAQ5iW,EAAKsrC,GAAgBs3T,EAAO5iW,GAAOqoM,EAAIroM,EAAQ,CAAiE,OAA7D4iW,EAAOllX,QAAU2qN,EAASh6L,GAASA,EAAMjnB,IAAIihN,EAAKu6J,GAAkBA,CAAQ,CAxBzxBE,CAAwB,EAAQ,QAExCh7O,EAAa09O,EAAuB,EAAQ,OAE5C4u+B,EAAY5u+B,EAAuB,EAAQ,QAE3C6u+B,EAAS7u+B,EAAuB,EAAQ,QAExC8u+B,EAAU,EAAQ,OAElBC,EAAe,EAAQ,OAEvBC,EAAS,EAAQ,OAEjBP,EAAiBzu+B,EAAuB,EAAQ,OAEhDiv+B,EAAOjv+B,EAAuB,EAAQ,QAEtCja,EAAY,CAAC,OAAQ,SAAU,WAAY,kBAAmB,mBAAoB,2BAA4B,0BAA2B,WAAY,iBAAkB,SAE3K,SAASia,EAAuBn9J,GAAO,OAAOA,GAAOA,EAAI5qN,WAAa4qN,EAAM,CAAE3qN,QAAS2qN,EAAO,CAE9F,SAASs6J,EAAyBwx+B,GAAe,GAAuB,mBAAZ7t1C,QAAwB,OAAO,KAAM,IAAIou1C,EAAoB,IAAIpu1C,QAAequ1C,EAAmB,IAAIru1C,QAAW,OAAQq8W,EAA2B,SAAkCwx+B,GAAe,OAAOA,EAAcQ,EAAmBD,CAAmB,GAAGP,EAAc,CAI9U,SAASjl7B,IAA2Q,OAA9PA,EAAWz0a,OAAOa,QAAU,SAAU2P,GAAU,IAAK,IAAIlP,EAAI,EAAGA,EAAIR,UAAUC,OAAQO,IAAK,CAAE,IAAIiH,EAASzH,UAAUQ,GAAI,IAAK,IAAIikB,KAAOhd,EAAcvI,OAAOI,UAAUC,eAAeC,KAAKiI,EAAQgd,KAAQ/U,EAAO+U,GAAOhd,EAAOgd,GAAU,CAAE,OAAO/U,CAAQ,EAAUika,EAASxza,MAAMP,KAAMI,UAAY,CAM5T,SAASi1X,EAAQj4U,EAAQk4U,GAAkB,IAAIhiX,EAAOhU,OAAOgU,KAAK8pC,GAAS,GAAI99C,OAAOmB,sBAAuB,CAAE,IAAI80X,EAAUj2X,OAAOmB,sBAAsB28C,GAASk4U,IAAmBC,EAAUA,EAAQ1oW,QAAO,SAAU2oW,GAAO,OAAOl2X,OAAOmE,yBAAyB25C,EAAQo4U,GAAK7xX,UAAY,KAAK2P,EAAKzR,KAAKtB,MAAM+S,EAAMiiX,EAAU,CAAE,OAAOjiX,CAAM,CAEpV,SAASmiX,EAAc3lX,GAAU,IAAK,IAAIlP,EAAI,EAAGA,EAAIR,UAAUC,OAAQO,IAAK,CAAE,IAAIiH,EAAS,MAAQzH,UAAUQ,GAAKR,UAAUQ,GAAK,CAAC,EAAGA,EAAI,EAAIy0X,EAAQ/1X,OAAOuI,IAAS,GAAIqd,SAAQ,SAAUL,GAAO6qW,EAAgB5/W,EAAQ+U,EAAKhd,EAAOgd,GAAO,IAAKvlB,OAAOq+B,0BAA4Br+B,OAAOkU,iBAAiB1D,EAAQxQ,OAAOq+B,0BAA0B91B,IAAWwtX,EAAQ/1X,OAAOuI,IAASqd,SAAQ,SAAUL,GAAOvlB,OAAO4D,eAAe4M,EAAQ+U,EAAKvlB,OAAOmE,yBAAyBoE,EAAQgd,GAAO,GAAI,CAAE,OAAO/U,CAAQ,CAQzf,SAASg4W,EAAkBrpJ,EAAK5/F,IAAkB,MAAPA,GAAeA,EAAM4/F,EAAIp+N,UAAQw+H,EAAM4/F,EAAIp+N,QAAQ,IAAK,IAAIO,EAAI,EAAGmoW,EAAO,IAAItpW,MAAMo/H,GAAMj+H,EAAIi+H,EAAKj+H,IAAOmoW,EAAKnoW,GAAK69N,EAAI79N,GAAM,OAAOmoW,CAAM,CAQtL,SAASgf,EAAkBj4W,EAAQm9B,GAAS,IAAK,IAAIrsC,EAAI,EAAGA,EAAIqsC,EAAM5sC,OAAQO,IAAK,CAAE,IAAIyqD,EAAape,EAAMrsC,GAAIyqD,EAAW1nD,WAAa0nD,EAAW1nD,aAAc,EAAO0nD,EAAWvnD,cAAe,EAAU,UAAWunD,IAAYA,EAAWtnD,UAAW,GAAMzE,OAAO4D,eAAe4M,EAAQu7C,EAAWxmC,IAAKwmC,EAAa,CAAE,CAM5T,SAAS68T,EAAgB5nX,EAAGwC,GAA+G,OAA1GolX,EAAkB5oX,OAAOC,gBAAkB,SAAyBe,EAAGwC,GAAsB,OAAjBxC,EAAEd,UAAYsD,EAAUxC,CAAG,EAAU4nX,EAAgB5nX,EAAGwC,EAAI,CAMzK,SAASklX,EAAuB5lX,GAAQ,QAAa,IAATA,EAAmB,MAAM,IAAI4mB,eAAe,6DAAgE,OAAO5mB,CAAM,CAIrK,SAAS6lX,EAAgB3nX,GAAwJ,OAAnJ2nX,EAAkB3oX,OAAOC,eAAiBD,OAAO2b,eAAiB,SAAyB3a,GAAK,OAAOA,EAAEd,WAAaF,OAAO2b,eAAe3a,EAAI,EAAU2nX,EAAgB3nX,EAAI,CAE5M,SAASovX,EAAgBxiK,EAAKroM,EAAK1jB,GAAiK,OAApJ0jB,KAAOqoM,EAAO5tN,OAAO4D,eAAegqN,EAAKroM,EAAK,CAAE1jB,MAAOA,EAAOwC,YAAY,EAAMG,cAAc,EAAMC,UAAU,IAAkBmpN,EAAIroM,GAAO1jB,EAAgB+rN,CAAK,CAKhN,IAAI8+uB,EAAyB,SAAUytZ,IAnBvC,SAAmBrx+B,EAAUC,GAAc,GAA0B,mBAAfA,GAA4C,OAAfA,EAAuB,MAAM,IAAIxoX,UAAU,sDAAyDuoX,EAAS1oX,UAAYJ,OAAOY,OAAOmoX,GAAcA,EAAW3oX,UAAW,CAAEO,YAAa,CAAEkB,MAAOinX,EAAUrkX,UAAU,EAAMD,cAAc,KAAWxE,OAAO4D,eAAeklX,EAAU,YAAa,CAAErkX,UAAU,IAAcskX,GAAYH,EAAgBE,EAAUC,EAAa,CAoBjcC,CAAU0jlB,EAAWytZ,GAErB,IAxBoBlx+B,EAAaC,EAAYyI,EAMzBxI,EAAeix+B,EAkB/Bhx+B,GAlBgBD,EAkBMujlB,EAlBS0tZ,EAMrC,WAAuC,GAAuB,oBAAZlh1C,UAA4BA,QAAQ+Q,UAAW,OAAO,EAAO,GAAI/Q,QAAQ+Q,UAAU3iB,KAAM,OAAO,EAAO,GAAqB,mBAAV4iB,MAAsB,OAAO,EAAM,IAAsF,OAAhFvW,QAAQvT,UAAUwJ,QAAQtJ,KAAK4Y,QAAQ+Q,UAAUtW,QAAS,IAAI,WAAa,MAAY,CAAM,CAAE,MAAO9T,GAAK,OAAO,CAAO,CAAE,CANvQypX,GAAoC,WAAkC,IAAsCplW,EAAlCmlW,EAAQV,EAAgBQ,GAAkB,GAAIix+B,EAA2B,CAAE,IAAI7w+B,EAAYZ,EAAgBjoX,MAAMC,YAAaujB,EAAShL,QAAQ+Q,UAAUo/V,EAAOvoX,UAAWyoX,EAAY,MAASrlW,EAASmlW,EAAMpoX,MAAMP,KAAMI,WAAc,OAEpX,SAAoCgC,EAAMxC,GAAQ,GAAIA,IAA2B,WAAlBujX,EAAQvjX,IAAsC,mBAATA,GAAwB,OAAOA,EAAa,QAAa,IAATA,EAAmB,MAAM,IAAIC,UAAU,4DAA+D,OAAOmoX,EAAuB5lX,EAAO,CAF4F0mX,CAA2B9oX,KAAMwjB,EAAS,GAoBna,SAASwo7B,EAAU/+5B,GAGjB,IAAIyf,EAoHJ,OArJJ,SAAyBxhC,EAAUq9V,GAAe,KAAMr9V,aAAoBq9V,GAAgB,MAAM,IAAI1oX,UAAU,oCAAwC,CAmCpJkpX,CAAgB/oX,KAAMgs8B,GAItBt8kB,EAAgB1H,EAFhBt7T,EAAQg8T,EAAO9oX,KAAKI,KAAMitC,IAEqB,eAAe,SAAU9tC,EAAGw61C,GAMzE,IALA,EAAIL,EAAK/21C,SAAS,6BAA8Bo31C,IAK5B,IAHFjtyC,EAAMzf,MAAMk/E,QAAQhtH,GAAG,EAAIi61C,EAAaQ,qBAAqB5x+B,EAAuBt7T,GAAQityC,IAGnF,OAAO,EAElCjtyC,EAAMg+E,SAAS,CACb4qb,UAAU,EACVukyB,SAAS,GAEb,IAEAnq+B,EAAgB1H,EAAuBt7T,GAAQ,UAAU,SAAUvtD,EAAGw61C,GACpE,IAAKjtyC,EAAM/gD,MAAM2pjB,SAAU,OAAO,GAClC,EAAIgkyB,EAAK/21C,SAAS,wBAAyBo31C,GAC3C,IApEkBl7nC,EAAK79N,EAoEnBk51C,GAAS,EAAIV,EAAaQ,qBAAqB5x+B,EAAuBt7T,GAAQityC,GAC9E1gyC,EAEF,CACAh1D,EAAG611C,EAAO711C,EACVjB,EAAG821C,EAAO921C,GAGZ,GAAI0pD,EAAMzf,MAAM+wF,OAAQ,CAEtB,IAAI/5H,EAAIg1D,EAASh1D,EACbjB,EAAIi2D,EAASj2D,EAIjBi2D,EAASh1D,GAAKyoD,EAAM/gD,MAAMou1C,OAC1B9gyC,EAASj2D,GAAK0pD,EAAM/gD,MAAMqu1C,OAE1B,IACIC,GAvFYx7nC,GAsFQ,EAAI26nC,EAAac,kBAAkBly+B,EAAuBt7T,GAAQuM,EAASh1D,EAAGg1D,EAASj2D,GAtF1FpC,EAuFsC,EA7EnE,SAAyB69N,GAAO,GAAIh/N,MAAMkS,QAAQ8sN,GAAM,OAAOA,CAAK,CAV3B2sJ,CAAgB3sJ,IAQzD,SAA+BA,EAAK79N,GAAK,IAAI6d,EAAY,MAAPggN,EAAc,KAAyB,oBAAX/8N,QAA0B+8N,EAAI/8N,OAAOC,WAAa88N,EAAI,cAAe,GAAU,MAANhgN,EAAJ,CAAwB,IAAkD6pF,EAAI//F,EAAlD8iX,EAAO,GAAQp5W,GAAK,EAAUopD,GAAK,EAAmB,IAAM,IAAK58C,EAAKA,EAAG7e,KAAK6+N,KAAQxsN,GAAMq2F,EAAK7pF,EAAG1d,QAAQG,QAAoBmqX,EAAKxpX,KAAKymG,EAAGnnG,QAAYP,GAAKyqX,EAAKhrX,SAAWO,GAA3DqR,GAAK,GAAkE,CAAE,MAAOqlC,GAAO+jB,GAAK,EAAM9yD,EAAK+uC,CAAK,CAAE,QAAU,IAAWrlC,GAAsB,MAAhBwM,EAAW,QAAWA,EAAW,QAAK,CAAE,QAAU,GAAI48C,EAAI,MAAM9yD,CAAI,CAAE,CAAE,OAAO8iX,CAAjV,CAAuV,CAR/bC,CAAsB7sJ,EAAK79N,IAI5F,SAAqCN,EAAGunX,GAAU,GAAKvnX,EAAL,CAAgB,GAAiB,iBAANA,EAAgB,OAAOwnX,EAAkBxnX,EAAGunX,GAAS,IAAIxoX,EAAIC,OAAOI,UAAU6E,SAAS3E,KAAKU,GAAGyB,MAAM,GAAI,GAAiE,MAAnD,WAAN1C,GAAkBiB,EAAEL,cAAaZ,EAAIiB,EAAEL,YAAYyK,MAAgB,QAANrL,GAAqB,QAANA,EAAoBI,MAAMse,KAAKzd,GAAc,cAANjB,GAAqB,2CAA2CgM,KAAKhM,GAAWyoX,EAAkBxnX,EAAGunX,QAAzG,CAA7O,CAA+V,CAJ7TD,CAA4BnpJ,EAAK79N,IAEnI,WAA8B,MAAM,IAAIf,UAAU,4IAA8I,CAFvD0rX,IAwF7H4u+B,EAAYF,EAAmB,GAC/BG,EAAYH,EAAmB,GAEnChhyC,EAASh1D,EAAIk21C,EACblhyC,EAASj2D,EAAIo31C,EAEbnhyC,EAAS8gyC,OAASrtyC,EAAM/gD,MAAMou1C,QAAU911C,EAAIg1D,EAASh1D,GACrDg1D,EAAS+gyC,OAASttyC,EAAM/gD,MAAMqu1C,QAAUh31C,EAAIi2D,EAASj2D,GAErD821C,EAAO711C,EAAIg1D,EAASh1D,EACpB611C,EAAO921C,EAAIi2D,EAASj2D,EACpB821C,EAAO1zuC,OAASntD,EAASh1D,EAAIyoD,EAAM/gD,MAAM1H,EACzC611C,EAAOnwuC,OAAS1wD,EAASj2D,EAAI0pD,EAAM/gD,MAAM3I,CAC3C,CAKA,IAAqB,IAFF0pD,EAAMzf,MAAMkuG,OAAOh8I,EAAG261C,GAEb,OAAO,EAEnCptyC,EAAMg+E,SAASzxE,EACjB,IAEAy2T,EAAgB1H,EAAuBt7T,GAAQ,cAAc,SAAUvtD,EAAGw61C,GACxE,IAAKjtyC,EAAM/gD,MAAM2pjB,SAAU,OAAO,EAIlC,IAAuB,IAFF5ogB,EAAMzf,MAAMotzC,OAAOl71C,GAAG,EAAIi61C,EAAaQ,qBAAqB5x+B,EAAuBt7T,GAAQityC,IAElF,OAAO,GACrC,EAAIL,EAAK/21C,SAAS,4BAA6Bo31C,GAC/C,IAAI1gyC,EAEF,CACAq8f,UAAU,EACVykyB,OAAQ,EACRC,OAAQ,GAMV,GAFiB/m1C,QAAQy5C,EAAMzf,MAAMtO,UAErB,CACd,IAAI27zC,EAAuB5tyC,EAAMzf,MAAMtO,SACnC16B,EAAIq21C,EAAqBr21C,EACzBjB,EAAIs31C,EAAqBt31C,EAC7Bi2D,EAASh1D,EAAIA,EACbg1D,EAASj2D,EAAIA,CACf,CAEA0pD,EAAMg+E,SAASzxE,EACjB,IAEAvM,EAAM/gD,MAAQ,CAEZ2pjB,UAAU,EAEVukyB,SAAS,EAET511C,EAAGgpC,EAAMtO,SAAWsO,EAAMtO,SAAS16B,EAAIgpC,EAAM04lC,gBAAgB1hoC,EAC7DjB,EAAGiqC,EAAMtO,SAAWsO,EAAMtO,SAAS37B,EAAIiqC,EAAM04lC,gBAAgB3ioC,EAC7Du31C,kBAAmB9k+B,EAAc,CAAC,EAAGxoV,EAAMtO,UAE3Co7zC,OAAQ,EACRC,OAAQ,EAERQ,cAAc,IAGZvtzC,EAAMtO,UAAcsO,EAAMkuG,QAAUluG,EAAMotzC,QAE5Chz0C,QAAQC,KAAK,6NAGRolC,CACT,CAkHA,OApQoB67T,EAoJPyjlB,EApJgC/6kB,EAyOzC,CAAC,CACHpsW,IAAK,2BACL1jB,MAEA,SAAkCisM,EAAMymB,GAGtC,IAAIl1L,EAAWyuK,EAAKzuK,SAChB47zC,EAAoB1moC,EAAM0moC,kBAG9B,OAAI57zC,GAAc47zC,GAAqB57zC,EAAS16B,IAAMs21C,EAAkBt21C,GAAK06B,EAAS37B,IAAMu31C,EAAkBv31C,EAYvG,OAXL,EAAIs21C,EAAK/21C,SAAS,yCAA0C,CAC1Do8B,SAAUA,EACV47zC,kBAAmBA,IAEd,CACLt21C,EAAG06B,EAAS16B,EACZjB,EAAG27B,EAAS37B,EACZu31C,kBAAmB9k+B,EAAc,CAAC,EAAG92V,IAK3C,KAjQ+B6pV,EAoJT,CAAC,CACvB3jW,IAAK,oBACL1jB,MAAO,gBAE4B,IAAtBe,OAAOu41C,YAA8Bz61C,KAAKs41C,wBAAyBp21C,OAAOu41C,YACnFz61C,KAAK0qI,SAAS,CACZ8vtC,cAAc,GAGpB,GACC,CACD310C,IAAK,uBACL1jB,MAAO,WACLnB,KAAK0qI,SAAS,CACZ4qb,UAAU,GAEd,GAGC,CACDzwiB,IAAK,cACL1jB,MAAO,WAGL,IAAIu51C,EAAuBnosC,EAAaoosC,EAExC,OAA4O,QAApOD,EAAuD,QAA9BnosC,EAAcvyJ,KAAKitC,aAAmC,IAAhBslH,GAAkF,QAA/CoosC,EAAsBposC,EAAYqosC,eAA6C,IAAxBD,OAAjE,EAA2GA,EAAoB56zC,eAA+C,IAA1B26zC,EAAmCA,EAAwBzB,EAAU121C,QAAQ+11C,YAAYt41C,KAC/U,GACC,CACD6kB,IAAK,SACL1jB,MAAO,WAGL,IAAI051C,EAEAtr9B,EAAevvY,KAAKitC,MAGpBjN,GAFOuvW,EAAa9kM,KACX8kM,EAAavxQ,OACXuxQ,EAAavvW,UACxB2lmC,EAAkBp2vB,EAAao2vB,gBAC/Bm1N,EAAmBvr9B,EAAaur9B,iBAChCC,EAA2Bxr9B,EAAawr9B,yBACxCC,EAA0Bzr9B,EAAayr9B,wBACvCr8zC,EAAW4wW,EAAa5wW,SACxBwvyB,EAAiB5+b,EAAa4+b,eAE9B8shB,GADQ1r9B,EAAaztS,MAzN/B,SAAkCj6F,EAAQqz1C,GAAY,GAAc,MAAVrz1C,EAAgB,MAAO,CAAC,EAAG,IAAkEgd,EAAKjkB,EAAnEkP,EAEzF,SAAuCjI,EAAQqz1C,GAAY,GAAc,MAAVrz1C,EAAgB,MAAO,CAAC,EAAG,IAA2Dgd,EAAKjkB,EAA5DkP,EAAS,CAAC,EAAOqr1C,EAAa771C,OAAOgU,KAAKzL,GAAqB,IAAKjH,EAAI,EAAGA,EAAIu61C,EAAW961C,OAAQO,IAAOikB,EAAMs20C,EAAWv61C,GAAQs61C,EAAS161C,QAAQqkB,IAAQ,IAAa/U,EAAO+U,GAAOhd,EAAOgd,IAAQ,OAAO/U,CAAQ,CAFhNowY,CAA8Br4Y,EAAQqz1C,GAAuB,GAAI571C,OAAOmB,sBAAuB,CAAE,IAAI261C,EAAmB971C,OAAOmB,sBAAsBoH,GAAS,IAAKjH,EAAI,EAAGA,EAAIw61C,EAAiB/61C,OAAQO,IAAOikB,EAAMu20C,EAAiBx61C,GAAQs61C,EAAS161C,QAAQqkB,IAAQ,GAAkBvlB,OAAOI,UAAUgB,qBAAqBd,KAAKiI,EAAQgd,KAAgB/U,EAAO+U,GAAOhd,EAAOgd,GAAQ,CAAE,OAAO/U,CAAQ,CA0N5cmwY,CAAyB1Q,EAAcn/B,IAE5D/7V,EAAQ,CAAC,EACTgn1C,EAAe,KAGf908B,GADatzY,QAAQ0rB,IACM3+B,KAAK2L,MAAM2pjB,SACtCgmyB,EAAgB38zC,GAAYgnmC,EAC5B41N,EAAgB,CAElBt31C,GAAG,EAAIm11C,EAAaoC,UAAUx71C,OAASumZ,EAAYvmZ,KAAK2L,MAAM1H,EAAIq31C,EAAcr31C,EAEhFjB,GAAG,EAAIo21C,EAAaqC,UAAUz71C,OAASumZ,EAAYvmZ,KAAK2L,MAAM3I,EAAIs41C,EAAct41C,GAG9EhD,KAAK2L,MAAM6u1C,aACba,GAAe,EAAIlC,EAAQuC,oBAAoBH,EAAepthB,GAM9D95zB,GAAQ,EAAI8k1C,EAAQwC,oBAAoBJ,EAAepthB,GAIzD,IAAIv+uB,GAAY,EAAIspwC,EAAO321C,SAASy9B,EAASiN,MAAM2iD,WAAa,GAAIkrwC,GAA+Bpr+B,EAAZmr+B,EAAQ,CAAC,EAA0BE,EAA0B/61C,KAAK2L,MAAM2pjB,UAAW5lM,EAAgBmr+B,EAAOG,EAAyBh71C,KAAK2L,MAAMku1C,SAAUgB,IAG/O,OAAoB9B,EAAMzv1C,cAAcwv1C,EAAev21C,QAASwxa,EAAS,CAAC,EAAGkn7B,EAAoB,CAC/F9uuC,QAASnsH,KAAKk7I,YACdC,OAAQn7I,KAAKm7I,OACbk/sC,OAAQr61C,KAAKuliB,aACEwzzB,EAAM5hmC,aAAa4hmC,EAAMjw8B,SAASpsC,KAAK18U,GAAW,CACjE4vD,UAAWA,EACXv7E,MAAOohX,EAAcA,EAAc,CAAC,EAAGz1V,EAASiN,MAAM54B,OAAQA,GAC9DuuH,UAAWy4tC,IAEf,MAxO0Etz+B,EAAkBQ,EAAY7oX,UAAW8oX,GAAiByI,GAAalJ,EAAkBQ,EAAa0I,GAAc3xX,OAAO4D,eAAeqlX,EAAa,YAAa,CAAExkX,UAAU,IAoQrPio8B,CACT,CAhP6B,CAgP3B+sZ,EAAMrssC,WAERjqJ,EAAA,QAAkBup8B,EAElBt8kB,EAAgBs8kB,EAAW,cAAe,aAE1Ct8kB,EAAgBs8kB,EAAW,YAAav2kB,EAAcA,EAAc,CAAC,EAAGqj+B,EAAev21C,QAAQkqI,WAAY,CAAC,EAAG,CAc7Gg+D,KAAM99D,EAAWpqI,QAAQi7zC,MAAM,CAAC,OAAQ,IAAK,IAAK,SA4BlDx/rC,OAAQ2O,EAAWpqI,QAAQk7zC,UAAU,CAAC9wrC,EAAWpqI,QAAQ+/N,MAAM,CAC7DzjM,KAAM8tG,EAAWpqI,QAAQwnJ,OACzBlqD,MAAO8sC,EAAWpqI,QAAQwnJ,OAC1BjrH,IAAK6tG,EAAWpqI,QAAQwnJ,OACxBjqD,OAAQ6sC,EAAWpqI,QAAQwnJ,SACzBpd,EAAWpqI,QAAQwa,OAAQ4vH,EAAWpqI,QAAQi7zC,MAAM,EAAC,MACzDs9B,iBAAkBnutC,EAAWpqI,QAAQwa,OACrCg+0C,yBAA0BputC,EAAWpqI,QAAQwa,OAC7Ci+0C,wBAAyBrutC,EAAWpqI,QAAQwa,OAmB5C4onC,gBAAiBh5/B,EAAWpqI,QAAQ+/N,MAAM,CACxCr+N,EAAG0oI,EAAWpqI,QAAQwnJ,OACtB/mJ,EAAG2pI,EAAWpqI,QAAQwnJ,SAExBokrB,eAAgBxhsB,EAAWpqI,QAAQ+/N,MAAM,CACvCr+N,EAAG0oI,EAAWpqI,QAAQk7zC,UAAU,CAAC9wrC,EAAWpqI,QAAQwnJ,OAAQpd,EAAWpqI,QAAQwa,SAC/E/Z,EAAG2pI,EAAWpqI,QAAQk7zC,UAAU,CAAC9wrC,EAAWpqI,QAAQwnJ,OAAQpd,EAAWpqI,QAAQwa,WAuBjF4hB,SAAUguG,EAAWpqI,QAAQ+/N,MAAM,CACjCr+N,EAAG0oI,EAAWpqI,QAAQwnJ,OACtB/mJ,EAAG2pI,EAAWpqI,QAAQwnJ,SAMxBn6D,UAAWypwC,EAAOuC,UAClBvn1C,MAAOgl1C,EAAOuC,UACdh5tC,UAAWy2tC,EAAOuC,aAGpBls+B,EAAgBs8kB,EAAW,eAAgBv2kB,EAAcA,EAAc,CAAC,EAAGqj+B,EAAev21C,QAAQ23I,cAAe,CAAC,EAAG,CACnHuwD,KAAM,OACNzsE,QAAQ,EACR88tC,iBAAkB,kBAClBC,yBAA0B,2BAC1BC,wBAAyB,0BACzBr1N,gBAAiB,CACf1hoC,EAAG,EACHjB,EAAG,GAEL8+F,MAAO,kCCrcT,SAASqhR,EAAQj2J,GAAkC,OAAOi2J,EAAU,mBAAqBzhX,QAAU,iBAAmBA,OAAOC,SAAW,SAAUurN,GAAO,cAAcA,CAAK,EAAI,SAAUA,GAAO,OAAOA,GAAO,mBAAqBxrN,QAAUwrN,EAAIjtN,cAAgByB,QAAUwrN,IAAQxrN,OAAOhC,UAAY,gBAAkBwtN,CAAK,EAAGi2J,EAAQj2J,EAAM,CAE/U5tN,OAAO4D,eAAeT,EAAS,aAAc,CAC3CtB,OAAO,IAETsB,EAAA,aAAkB,EAElB,IAAIs21C,EAkBJ,SAAiC7roC,EAAK8roC,GAAe,GAAoB9roC,GAAOA,EAAI5qN,WAAc,OAAO4qN,EAAO,GAAY,OAARA,GAAiC,WAAjBi2J,EAAQj2J,IAAoC,mBAARA,EAAsB,MAAO,CAAE3qN,QAAS2qN,GAAS,IAAIh6L,EAAQs0V,EAAyBwx+B,GAAc,GAAI9l0C,GAASA,EAAMnnB,IAAImhN,GAAQ,OAAOh6L,EAAM/vB,IAAI+pN,GAAQ,IAAIu6J,EAAS,CAAC,EAAOC,EAAwBpoX,OAAO4D,gBAAkB5D,OAAOmE,yBAA0B,IAAK,IAAIohB,KAAOqoM,EAAO,GAAY,YAARroM,GAAqBvlB,OAAOI,UAAUC,eAAeC,KAAKstN,EAAKroM,GAAM,CAAE,IAAIsrC,EAAOu3T,EAAwBpoX,OAAOmE,yBAAyBypN,EAAKroM,GAAO,KAAUsrC,IAASA,EAAKhtD,KAAOgtD,EAAKlkD,KAAQ3M,OAAO4D,eAAeukX,EAAQ5iW,EAAKsrC,GAAgBs3T,EAAO5iW,GAAOqoM,EAAIroM,EAAQ,CAAiE,OAA7D4iW,EAAOllX,QAAU2qN,EAASh6L,GAASA,EAAMjnB,IAAIihN,EAAKu6J,GAAkBA,CAAQ,CAlBzxBE,CAAwB,EAAQ,QAExCh7O,EAAa09O,EAAuB,EAAQ,OAE5C4u+B,EAAY5u+B,EAAuB,EAAQ,QAE3C8u+B,EAAU,EAAQ,OAElBC,EAAe,EAAQ,OAEvBC,EAAS,EAAQ,OAEjBC,EAAOjv+B,EAAuB,EAAQ,QAE1C,SAASA,EAAuBn9J,GAAO,OAAOA,GAAOA,EAAI5qN,WAAa4qN,EAAM,CAAE3qN,QAAS2qN,EAAO,CAE9F,SAASs6J,EAAyBwx+B,GAAe,GAAuB,mBAAZ7t1C,QAAwB,OAAO,KAAM,IAAIou1C,EAAoB,IAAIpu1C,QAAequ1C,EAAmB,IAAIru1C,QAAW,OAAQq8W,EAA2B,SAAkCwx+B,GAAe,OAAOA,EAAcQ,EAAmBD,CAAmB,GAAGP,EAAc,CAI9U,SAAS9m+B,EAAezzJ,EAAK79N,GAAK,OAUlC,SAAyB69N,GAAO,GAAIh/N,MAAMkS,QAAQ8sN,GAAM,OAAOA,CAAK,CAV3B2sJ,CAAgB3sJ,IAQzD,SAA+BA,EAAK79N,GAAK,IAAI6d,EAAY,MAAPggN,EAAc,KAAyB,oBAAX/8N,QAA0B+8N,EAAI/8N,OAAOC,WAAa88N,EAAI,cAAe,GAAU,MAANhgN,EAAJ,CAAwB,IAAkD6pF,EAAI//F,EAAlD8iX,EAAO,GAAQp5W,GAAK,EAAUopD,GAAK,EAAmB,IAAM,IAAK58C,EAAKA,EAAG7e,KAAK6+N,KAAQxsN,GAAMq2F,EAAK7pF,EAAG1d,QAAQG,QAAoBmqX,EAAKxpX,KAAKymG,EAAGnnG,QAAYP,GAAKyqX,EAAKhrX,SAAWO,GAA3DqR,GAAK,GAAkE,CAAE,MAAOqlC,GAAO+jB,GAAK,EAAM9yD,EAAK+uC,CAAK,CAAE,QAAU,IAAWrlC,GAAsB,MAAhBwM,EAAW,QAAWA,EAAW,QAAK,CAAE,QAAU,GAAI48C,EAAI,MAAM9yD,CAAI,CAAE,CAAE,OAAO8iX,CAAjV,CAAuV,CAR/bC,CAAsB7sJ,EAAK79N,IAI5F,SAAqCN,EAAGunX,GAAU,GAAKvnX,EAAL,CAAgB,GAAiB,iBAANA,EAAgB,OAAOwnX,EAAkBxnX,EAAGunX,GAAS,IAAIxoX,EAAIC,OAAOI,UAAU6E,SAAS3E,KAAKU,GAAGyB,MAAM,GAAI,GAAiE,MAAnD,WAAN1C,GAAkBiB,EAAEL,cAAaZ,EAAIiB,EAAEL,YAAYyK,MAAgB,QAANrL,GAAqB,QAANA,EAAoBI,MAAMse,KAAKzd,GAAc,cAANjB,GAAqB,2CAA2CgM,KAAKhM,GAAWyoX,EAAkBxnX,EAAGunX,QAAzG,CAA7O,CAA+V,CAJ7TD,CAA4BnpJ,EAAK79N,IAEnI,WAA8B,MAAM,IAAIf,UAAU,4IAA8I,CAFvD0rX,EAAoB,CAM7J,SAASzD,EAAkBrpJ,EAAK5/F,IAAkB,MAAPA,GAAeA,EAAM4/F,EAAIp+N,UAAQw+H,EAAM4/F,EAAIp+N,QAAQ,IAAK,IAAIO,EAAI,EAAGmoW,EAAO,IAAItpW,MAAMo/H,GAAMj+H,EAAIi+H,EAAKj+H,IAAOmoW,EAAKnoW,GAAK69N,EAAI79N,GAAM,OAAOmoW,CAAM,CAQtL,SAASgf,EAAkBj4W,EAAQm9B,GAAS,IAAK,IAAIrsC,EAAI,EAAGA,EAAIqsC,EAAM5sC,OAAQO,IAAK,CAAE,IAAIyqD,EAAape,EAAMrsC,GAAIyqD,EAAW1nD,WAAa0nD,EAAW1nD,aAAc,EAAO0nD,EAAWvnD,cAAe,EAAU,UAAWunD,IAAYA,EAAWtnD,UAAW,GAAMzE,OAAO4D,eAAe4M,EAAQu7C,EAAWxmC,IAAKwmC,EAAa,CAAE,CAM5T,SAAS68T,EAAgB5nX,EAAGwC,GAA+G,OAA1GolX,EAAkB5oX,OAAOC,gBAAkB,SAAyBe,EAAGwC,GAAsB,OAAjBxC,EAAEd,UAAYsD,EAAUxC,CAAG,EAAU4nX,EAAgB5nX,EAAGwC,EAAI,CAMzK,SAASklX,EAAuB5lX,GAAQ,QAAa,IAATA,EAAmB,MAAM,IAAI4mB,eAAe,6DAAgE,OAAO5mB,CAAM,CAIrK,SAAS6lX,EAAgB3nX,GAAwJ,OAAnJ2nX,EAAkB3oX,OAAOC,eAAiBD,OAAO2b,eAAiB,SAAyB3a,GAAK,OAAOA,EAAEd,WAAaF,OAAO2b,eAAe3a,EAAI,EAAU2nX,EAAgB3nX,EAAI,CAE5M,SAASovX,EAAgBxiK,EAAKroM,EAAK1jB,GAAiK,OAApJ0jB,KAAOqoM,EAAO5tN,OAAO4D,eAAegqN,EAAKroM,EAAK,CAAE1jB,MAAOA,EAAOwC,YAAY,EAAMG,cAAc,EAAMC,UAAU,IAAkBmpN,EAAIroM,GAAO1jB,EAAgB+rN,CAAK,CAGhN,IAAI2uoC,EACK,CACLr1zC,MAAO,aACPs8lB,KAAM,YACN/ylB,KAAM,YAJN8rzC,EAMK,CACLr1zC,MAAO,YACPs8lB,KAAM,YACN/ylB,KAAM,WAIN+rzC,EAAeD,EAgDfE,EAA6B,SAAUtC,IA9E3C,SAAmBrx+B,EAAUC,GAAc,GAA0B,mBAAfA,GAA4C,OAAfA,EAAuB,MAAM,IAAIxoX,UAAU,sDAAyDuoX,EAAS1oX,UAAYJ,OAAOY,OAAOmoX,GAAcA,EAAW3oX,UAAW,CAAEO,YAAa,CAAEkB,MAAOinX,EAAUrkX,UAAU,EAAMD,cAAc,KAAWxE,OAAO4D,eAAeklX,EAAU,YAAa,CAAErkX,UAAU,IAAcskX,GAAYH,EAAgBE,EAAUC,EAAa,CA+EjcC,CAAUyz+B,EAAetC,GAEzB,IAnFoBlx+B,EAAaC,EAMbC,EAAeix+B,EA6E/Bhx+B,GA7EgBD,EA6EMsz+B,EA7ESrC,EAMrC,WAAuC,GAAuB,oBAAZlh1C,UAA4BA,QAAQ+Q,UAAW,OAAO,EAAO,GAAI/Q,QAAQ+Q,UAAU3iB,KAAM,OAAO,EAAO,GAAqB,mBAAV4iB,MAAsB,OAAO,EAAM,IAAsF,OAAhFvW,QAAQvT,UAAUwJ,QAAQtJ,KAAK4Y,QAAQ+Q,UAAUtW,QAAS,IAAI,WAAa,MAAY,CAAM,CAAE,MAAO9T,GAAK,OAAO,CAAO,CAAE,CANvQypX,GAAoC,WAAkC,IAAsCplW,EAAlCmlW,EAAQV,EAAgBQ,GAAkB,GAAIix+B,EAA2B,CAAE,IAAI7w+B,EAAYZ,EAAgBjoX,MAAMC,YAAaujB,EAAShL,QAAQ+Q,UAAUo/V,EAAOvoX,UAAWyoX,EAAY,MAASrlW,EAASmlW,EAAMpoX,MAAMP,KAAMI,WAAc,OAEpX,SAAoCgC,EAAMxC,GAAQ,GAAIA,IAA2B,WAAlBujX,EAAQvjX,IAAsC,mBAATA,GAAwB,OAAOA,EAAa,QAAa,IAATA,EAAmB,MAAM,IAAIC,UAAU,4DAA+D,OAAOmoX,EAAuB5lX,EAAO,CAF4F0mX,CAA2B9oX,KAAMwjB,EAAS,GA+Ena,SAASu40C,IACP,IAAIrvyC,GA1FR,SAAyBxhC,EAAUq9V,GAAe,KAAMr9V,aAAoBq9V,GAAgB,MAAM,IAAI1oX,UAAU,oCAAwC,CA4FpJkpX,CAAgB/oX,KAAM+71C,GAEtB,IAAK,IAAInumC,EAAOxtP,UAAUC,OAAQg3C,EAAO,IAAI53C,MAAMmuP,GAAOlF,EAAO,EAAGA,EAAOkF,EAAMlF,IAC/ErxM,EAAKqxM,GAAQtoP,UAAUsoP,GA8MzB,OAzMAgnI,EAAgB1H,EAFhBt7T,EAAQg8T,EAAO9oX,KAAKW,MAAMmoX,EAAQ,CAAC1oX,MAAMgC,OAAOq1C,KAED,QAAS,CACtDi+gB,UAAU,EAEVu9S,MAAOj3G,IACPqje,MAAOrje,IACPogmB,gBAAiB,OAGnBts+B,EAAgB1H,EAAuBt7T,GAAQ,WAAW,GAE1DgjU,EAAgB1H,EAAuBt7T,GAAQ,mBAAmB,SAAUvtD,GAK1E,GAHAutD,EAAMzf,MAAMktW,YAAYh7Y,IAGnButD,EAAMzf,MAAMgvzC,eAAqC,iBAAb981C,EAAEu4W,QAAoC,IAAbv4W,EAAEu4W,OAAc,OAAO,EAEzF,IAAI2/hB,EAAW3q1B,EAAM4ryC,cAErB,IAAKjhd,IAAaA,EAASlpzB,gBAAkBkpzB,EAASlpzB,cAAcp9D,KAClE,MAAM,IAAIvJ,MAAM,6CAGlB,IAAI2mE,EAAgBkpzB,EAASlpzB,cAE7B,KAAIzhC,EAAMzf,MAAMqjU,YAAcnxW,EAAE2Q,kBAAkBq+E,EAAcsnU,YAAYlsU,OAAS78B,EAAMzf,MAAM+yI,UAAW,EAAIm5qC,EAAQ+C,6BAA6B/81C,EAAE2Q,OAAQ48C,EAAMzf,MAAM+yI,OAAQq3tB,IAAa3q1B,EAAMzf,MAAM4V,SAAU,EAAIs2yC,EAAQ+C,6BAA6B/81C,EAAE2Q,OAAQ48C,EAAMzf,MAAM4V,OAAQw01B,IAA7R,CAMe,eAAXl44B,EAAEoN,MAAuBpN,EAAEymH,iBAI/B,IAAIo2uC,GAAkB,EAAI7C,EAAQgD,oBAAoBh91C,GAEtDutD,EAAMg+E,SAAS,CACbsxtC,gBAAiBA,IAInB,IAAIr9zC,GAAW,EAAIy6zC,EAAagD,oBAAoBj91C,EAAG681C,EAAiBh0+B,EAAuBt7T,IAC/F,GAAgB,MAAZ/tB,EAAJ,CAEA,IAAI16B,EAAI06B,EAAS16B,EACbjB,EAAI27B,EAAS37B,EAEbq51C,GAAY,EAAIjD,EAAakD,gBAAgBt0+B,EAAuBt7T,GAAQzoD,EAAGjB,IACnF,EAAIs21C,EAAK/21C,SAAS,qCAAsC851C,IAExD,EAAI/C,EAAK/21C,SAAS,UAAWmqD,EAAMzf,MAAMk/E,UAIpB,IAFFz/D,EAAMzf,MAAMk/E,QAAQhtH,EAAGk91C,KAEM,IAAlB3vyC,EAAMg62B,UAGhCh62B,EAAMzf,MAAMsvzC,uBAAsB,EAAIpD,EAAQqD,qBAAqBruwC,GAIvEzhC,EAAMg+E,SAAS,CACb4qb,UAAU,EACVu9S,MAAO5u2B,EACPg7tC,MAAOj8tC,KAMT,EAAIm21C,EAAQsD,UAAUtuwC,EAAe2twC,EAAah5tB,KAAMp2kB,EAAMgwyC,aAC9D,EAAIvD,EAAQsD,UAAUtuwC,EAAe2twC,EAAa/rzC,KAAM2c,EAAMiwyC,gBA7BlC,CAhB5B,CA8CF,IAEAjt+B,EAAgB1H,EAAuBt7T,GAAQ,cAAc,SAAUvtD,GAErE,IAAIw/B,GAAW,EAAIy6zC,EAAagD,oBAAoBj91C,EAAGutD,EAAM/gD,MAAMqw1C,gBAAiBh0+B,EAAuBt7T,IAC3G,GAAgB,MAAZ/tB,EAAJ,CACA,IAAI16B,EAAI06B,EAAS16B,EACbjB,EAAI27B,EAAS37B,EAEjB,GAAIvD,MAAMkS,QAAQ+6C,EAAMzf,MAAMs5M,MAAO,CACnC,IAAIngI,EAASniH,EAAIyoD,EAAM/gD,MAAMkn2B,MACzBlpvB,EAAS3mH,EAAI0pD,EAAM/gD,MAAMsztC,MAIzB29H,EAAe1q+B,GAFD,EAAIkn+B,EAAayD,YAAYnwyC,EAAMzf,MAAMs5M,KAAMngI,EAAQuD,GAE1B,GAI/C,GAFAvD,EAASw2uC,EAAa,GACtBjzuC,EAASizuC,EAAa,IACjBx2uC,IAAWuD,EAAQ,OAExB1lH,EAAIyoD,EAAM/gD,MAAMkn2B,MAAQzsvB,EAAQpjH,EAAI0pD,EAAM/gD,MAAMsztC,MAAQt1mC,CAC1D,CAEA,IAAI0yuC,GAAY,EAAIjD,EAAakD,gBAAgBt0+B,EAAuBt7T,GAAQzoD,EAAGjB,GAKnF,IAJA,EAAIs21C,EAAK/21C,SAAS,gCAAiC851C,IAI9B,IAFF3vyC,EAAMzf,MAAMkuG,OAAOh8I,EAAGk91C,KAEO,IAAlB3vyC,EAAMg62B,QAqBpCh62B,EAAMg+E,SAAS,CACbmouB,MAAO5u2B,EACPg7tC,MAAOj8tC,SAtBP,IAEE0pD,EAAMiwyC,eAAe,IAAIngtB,WAAW,WACtC,CAAE,MAAOllmB,GAEP,IAAI7Y,EAAUt5B,SAASykB,YAAY,eAOnC6U,EAAMq+zC,eAAe,WAAW,GAAM,EAAM561C,OAAQ,EAAG,EAAG,EAAG,EAAG,GAAG,GAAO,GAAO,GAAO,EAAO,EAAG,MAElGwqD,EAAMiwyC,eAAel+zC,EACvB,CAxC0B,CAiD9B,IAEAixV,EAAgB1H,EAAuBt7T,GAAQ,kBAAkB,SAAUvtD,GACzE,GAAKutD,EAAM/gD,MAAM2pjB,SAAjB,CACA,IAAI32hB,GAAW,EAAIy6zC,EAAagD,oBAAoBj91C,EAAGutD,EAAM/gD,MAAMqw1C,gBAAiBh0+B,EAAuBt7T,IAC3G,GAAgB,MAAZ/tB,EAAJ,CACA,IAAI16B,EAAI06B,EAAS16B,EACbjB,EAAI27B,EAAS37B,EAEjB,GAAIvD,MAAMkS,QAAQ+6C,EAAMzf,MAAMs5M,MAAO,CACnC,IAAIngI,EAASniH,EAAIyoD,EAAM/gD,MAAMkn2B,OAAS,EAClClpvB,EAAS3mH,EAAI0pD,EAAM/gD,MAAMsztC,OAAS,EAIlC89H,EAAe7q+B,GAFA,EAAIkn+B,EAAayD,YAAYnwyC,EAAMzf,MAAMs5M,KAAMngI,EAAQuD,GAE1B,GAEhDvD,EAAS22uC,EAAa,GACtBpzuC,EAASozuC,EAAa,GACtB941C,EAAIyoD,EAAM/gD,MAAMkn2B,MAAQzsvB,EAAQpjH,EAAI0pD,EAAM/gD,MAAMsztC,MAAQt1mC,CAC1D,CAEA,IAAI0yuC,GAAY,EAAIjD,EAAakD,gBAAgBt0+B,EAAuBt7T,GAAQzoD,EAAGjB,GAInF,IAAuB,IAFF0pD,EAAMzf,MAAMotzC,OAAOl71C,EAAGk91C,KAEO,IAAlB3vyC,EAAMg62B,QAAmB,OAAO,EAEhE,IAAIrvB,EAAW3q1B,EAAM4ryC,cAEjBjhd,GAEE3q1B,EAAMzf,MAAMsvzC,uBAAsB,EAAIpD,EAAQ6D,wBAAwB3ld,EAASlpzB,gBAGrF,EAAImrwC,EAAK/21C,SAAS,oCAAqC851C,GAEvD3vyC,EAAMg+E,SAAS,CACb4qb,UAAU,EACVu9S,MAAOj3G,IACPqje,MAAOrje,MAGLy7I,KAEF,EAAIiid,EAAK/21C,SAAS,qCAClB,EAAI421C,EAAQ8D,aAAa5ld,EAASlpzB,cAAe2twC,EAAah5tB,KAAMp2kB,EAAMgwyC,aAC1E,EAAIvD,EAAQ8D,aAAa5ld,EAASlpzB,cAAe2twC,EAAa/rzC,KAAM2c,EAAMiwyC,gBA1ChD,CAFK,CA8CnC,IAEAjt+B,EAAgB1H,EAAuBt7T,GAAQ,eAAe,SAAUvtD,GAGtE,OAFA281C,EAAeD,EAERnvyC,EAAMwwyC,gBAAgB/91C,EAC/B,IAEAuwX,EAAgB1H,EAAuBt7T,GAAQ,aAAa,SAAUvtD,GAEpE,OADA281C,EAAeD,EACRnvyC,EAAMiwyC,eAAex91C,EAC9B,IAEAuwX,EAAgB1H,EAAuBt7T,GAAQ,gBAAgB,SAAUvtD,GAGvE,OADA281C,EAAeD,EACRnvyC,EAAMwwyC,gBAAgB/91C,EAC/B,IAEAuwX,EAAgB1H,EAAuBt7T,GAAQ,cAAc,SAAUvtD,GAGrE,OADA281C,EAAeD,EACRnvyC,EAAMiwyC,eAAex91C,EAC9B,IAEOutD,CACT,CAmEA,OA7WoB67T,EA4SPwz+B,GA5SoBvz+B,EA4SL,CAAC,CAC3B3jW,IAAK,oBACL1jB,MAAO,WACLnB,KAAK0m6B,SAAU,EAGf,IAAIrvB,EAAWr34B,KAAKs41C,cAEhBjhd,IACF,EAAI8hd,EAAQsD,UAAUpld,EAAUwkd,EAAgBr1zC,MAAOxmC,KAAK6njB,aAAc,CACxEn4gB,SAAS,GAGf,GACC,CACD7qB,IAAK,uBACL1jB,MAAO,WACLnB,KAAK0m6B,SAAU,EAGf,IAAIrvB,EAAWr34B,KAAKs41C,cAEpB,GAAIjhd,EAAU,CACZ,IAAIlpzB,EAAgBkpzB,EAASlpzB,eAC7B,EAAIgrwC,EAAQ8D,aAAa9uwC,EAAe0twC,EAAgB/4tB,KAAM9ioB,KAAK081C,aACnE,EAAIvD,EAAQ8D,aAAa9uwC,EAAe0twC,EAAgB/4tB,KAAM9ioB,KAAK081C,aACnE,EAAIvD,EAAQ8D,aAAa9uwC,EAAe0twC,EAAgB9rzC,KAAM/vC,KAAK281C,iBACnE,EAAIxD,EAAQ8D,aAAa9uwC,EAAe0twC,EAAgB9rzC,KAAM/vC,KAAK281C,iBACnE,EAAIxD,EAAQ8D,aAAa5ld,EAAUwkd,EAAgBr1zC,MAAOxmC,KAAK6njB,aAAc,CAC3En4gB,SAAS,IAEP1vC,KAAKitC,MAAMsvzC,uBAAsB,EAAIpD,EAAQ6D,wBAAwB7uwC,EAC3E,CACF,GAGC,CACDtpE,IAAK,cACL1jB,MAAO,WAGL,IAAIoxJ,EAAag9O,EAAc4t9B,EAE/B,OAAsC,QAA9B5qsC,EAAcvyJ,KAAKitC,aAAmC,IAAhBslH,GAA0BA,EAAYqosC,QAA0C,QAA/Brr9B,EAAevvY,KAAKitC,aAAoC,IAAjBsiW,GAAqF,QAAjD4t9B,EAAuB5t9B,EAAaqr9B,eAA8C,IAAzBuC,OAAnE,EAA8GA,EAAqBp9zC,QAAUk5zC,EAAU121C,QAAQ+11C,YAAYt41C,KAC7U,GACC,CACD6kB,IAAK,SACL1jB,MAAO,WAKL,OAAoB431C,EAAM5hmC,aAAa4hmC,EAAMjw8B,SAASpsC,KAAK18W,KAAKitC,MAAMjN,UAAW,CAG/Em6W,YAAan6Y,KAAKm6Y,YAClBC,UAAWp6Y,KAAKo6Y,UAIhB4tK,WAAYhojB,KAAKgojB,YAErB,MA1W0EjgM,EAAkBQ,EAAY7oX,UAAW8oX,GAA2ElpX,OAAO4D,eAAeqlX,EAAa,YAAa,CAAExkX,UAAU,IA6WrPg41C,CACT,CA9RiC,CA8R/BhD,EAAMrssC,WAERjqJ,EAAA,QAAkBs51C,EAElBrs+B,EAAgBqs+B,EAAe,cAAe,iBAE9Crs+B,EAAgBqs+B,EAAe,YAAa,CAO1CE,cAAetvtC,EAAWpqI,QAAQqwd,KAMlCtiH,SAAU3jO,EAAWpqI,QAAQqwd,KAO7B2p4B,qBAAsB5vtC,EAAWpqI,QAAQqwd,KAMzCz4N,aAAc,SAAsBltN,EAElCs+G,GAGA,GAAIt+G,EAAMs+G,IAA0C,IAA7Bt+G,EAAMs+G,GAAUjiE,SACrC,MAAM,IAAI9hE,MAAM,+CAEpB,EAKA++N,KAAM55G,EAAWpqI,QAAQ86zC,QAAQ1wrC,EAAWpqI,QAAQwnJ,QAsBpDi2B,OAAQrzC,EAAWpqI,QAAQwa,OAsB3B8lC,OAAQ8pF,EAAWpqI,QAAQwa,OAmB3B690C,QAASjutC,EAAWpqI,QAAQ66C,OAM5B+uE,QAASwgB,EAAWpqI,QAAQw9C,KAM5Bo7F,OAAQxO,EAAWpqI,QAAQw9C,KAM3Bs6yC,OAAQ1ttC,EAAWpqI,QAAQw9C,KAM3Bo6V,YAAaxtQ,EAAWpqI,QAAQw9C,KAKhC+hD,MAAO6qC,EAAWpqI,QAAQwnJ,OAK1Bn6D,UAAWypwC,EAAOuC,UAClBvn1C,MAAOgl1C,EAAOuC,UACdh5tC,UAAWy2tC,EAAOuC,YAGpBls+B,EAAgBqs+B,EAAe,eAAgB,CAC7CE,eAAe,EAEf3r/B,UAAU,EACVis/B,sBAAsB,EACtBpwuC,QAAS,WAAoB,EAC7BgvB,OAAQ,WAAmB,EAC3Bk/sC,OAAQ,WAAmB,EAC3Blg9B,YAAa,WAAwB,EACrCr4S,MAAO,kCCrjBT,IAAIs7vC,EAAW,EAAQ,OACnBpxZ,EAAYoxZ,EAAS761C,QACrBw51C,EAAgBqB,EAASrB,cAK7Bj/zC,EAAOr6B,QAAUup8B,EACjBlv6B,EAAOr6B,QAAP,QAAyBup8B,EACzBlv6B,EAAOr6B,QAAQs51C,cAAgBA,gCCT/B,SAAS54+B,EAAQj2J,GAAkC,OAAOi2J,EAAU,mBAAqBzhX,QAAU,iBAAmBA,OAAOC,SAAW,SAAUurN,GAAO,cAAcA,CAAK,EAAI,SAAUA,GAAO,OAAOA,GAAO,mBAAqBxrN,QAAUwrN,EAAIjtN,cAAgByB,QAAUwrN,IAAQxrN,OAAOhC,UAAY,gBAAkBwtN,CAAK,EAAGi2J,EAAQj2J,EAAM,CAE/U5tN,OAAO4D,eAAeT,EAAS,aAAc,CAC3CtB,OAAO,IAETsB,EAAQ461C,aAAeA,EACvB561C,EAAQg61C,SA4ER,SAAkB5itC,EAEhBp7G,EAEAuxB,EAEAstyC,GAKA,GAAKzjtC,EAAL,CAEA,IAAI1wH,EAAUssW,EAAc,CAC1BhmV,SAAS,GACR6tzC,GAGCzjtC,EAAGltH,iBACLktH,EAAGltH,iBAAiB8R,EAAOuxB,EAAS7mC,GAC3B0wH,EAAG8ylC,YACZ9ylC,EAAG8ylC,YAAY,KAAOlusC,EAAOuxB,GAG7B6pF,EAAG,KAAOp7G,GAASuxB,CAbN,CAejB,EArGAvtD,EAAQ+51C,oBAuRR,SAA6B91yC,GAG3B,GAAKA,EAAL,CACA,IAAI62yC,EAAU72yC,EAAI0nC,eAAe,4BAE5BmvwC,KACHA,EAAU72yC,EAAIp9C,cAAc,UACpBiD,KAAO,WACfgx1C,EAAQhy0C,GAAK,2BACbgy0C,EAAQtjtC,UAAY,6EACpBsjtC,EAAQtjtC,WAAa,wEACrBvzF,EAAIjlB,qBAAqB,QAAQ,GAAGltB,YAAYgp1C,IAG9C72yC,EAAI31B,MAAMss0C,EAAa32yC,EAAI31B,KAAM,wCAZrB,CAalB,EAtSAtuB,EAAQk51C,mBAiNR,SAA4B6B,EAE1BrvhB,GAKA,IAAI1jnB,EAAcsoC,EAAeyqmC,EAAYrvhB,EAAgB,MAC7D,OAAOz+c,EAAgB,CAAC,GAAG,EAAI+t+B,EAAWC,oBAAoB,YAAaD,EAAWl71C,SAAUkoN,EAClG,EAzNAhoN,EAAQi51C,mBA2NR,SAA4B8B,EAE1BrvhB,GAMA,OADkBp7kB,EAAeyqmC,EAAYrvhB,EAAgB,GAE/D,EAnOA1r0B,EAAQk71C,SAyPR,SAAkBx+1C,EAEhBw4E,GAKA,OAAOx4E,EAAEqx8B,gBAAiB,EAAI6oZ,EAAOuE,aAAaz+1C,EAAEqx8B,eAAe,SAAUpx8B,GAC3E,OAAOu4E,IAAev4E,EAAEu4E,UAC1B,KAAMx4E,EAAE05kB,iBAAkB,EAAIwgxB,EAAOuE,aAAaz+1C,EAAE05kB,gBAAgB,SAAUz5kB,GAC5E,OAAOu4E,IAAev4E,EAAEu4E,UAC1B,GACF,EApQAl1E,EAAQ051C,mBAsQR,SAA4Bh91C,GAK1B,OAAIA,EAAEqx8B,eAAiBrx8B,EAAEqx8B,cAAc,GAAWrx8B,EAAEqx8B,cAAc,GAAG743B,WACjEx4E,EAAE05kB,gBAAkB15kB,EAAE05kB,eAAe,GAAW15kB,EAAE05kB,eAAe,GAAGlhgB,gBAAxE,CACF,EA5QAl1E,EAAQswP,eAAiBA,EACzBtwP,EAAQs4B,YAyJR,SAAqBsuD,GAKnB,IAAIrqD,EAASqqD,EAAKg3D,aACdq1Q,EAAgBrsU,EAAK8E,cAAcsnU,YAAYE,iBAAiBtsU,GAGpE,OAFArqD,IAAU,EAAIq6zC,EAAOv7kC,KAAK43I,EAAc11C,cAC9B,EAAIq5+B,EAAOv7kC,KAAK43I,EAAcx1C,cAE1C,EAlKAz9W,EAAQo4B,WAoKR,SAAoBwuD,GAKlB,IAAItqD,EAAQsqD,EAAK82D,YACbu1Q,EAAgBrsU,EAAK8E,cAAcsnU,YAAYE,iBAAiBtsU,GAGpE,OAFAtqD,IAAS,EAAIs6zC,EAAOv7kC,KAAK43I,EAAcv1C,eAC9B,EAAIk5+B,EAAOv7kC,KAAK43I,EAAcz1C,aAEzC,EA7KAx9W,EAAQo71C,gBAAkBA,EAC1Bp71C,EAAQy51C,4BA8CR,SAAqCritC,EAEnCtpD,EAEAutwC,GAKA,IAAIz0wC,EAAOwwD,EAEX,EAAG,CACD,GAAIgktC,EAAgBx0wC,EAAMkH,GAAW,OAAO,EAC5C,GAAIlH,IAASy0wC,EAAU,OAAO,EAC9Bz0wC,EAAOA,EAAK3nD,UACd,OAAS2nD,GAET,OAAO,CACT,EA/DA5mF,EAAQs71C,mBAkLR,SAA4B32wC,EAE1B+yK,EAEAr4J,GAKA,IACI8kc,EADSzsS,IAAiBA,EAAahsK,cAAcp9D,KACzB,CAC9B8N,KAAM,EACNC,IAAK,GACHq7N,EAAaxmK,wBAGjB,MAAO,CACL1vF,GAHOmjF,EAAI0M,QAAUqmK,EAAayxR,WAAagb,EAAiB/ngB,MAAQijE,EAIxE9+F,GAHOokF,EAAI2M,QAAUomK,EAAaj3J,UAAY0jc,EAAiB9ngB,KAAOgjE,EAK1E,EArMAr/F,EAAQgn+B,YAwHR,SAAqBpg5B,GAOnB,IAAIrqD,EAASqqD,EAAKg3D,aACdq1Q,EAAgBrsU,EAAK8E,cAAcsnU,YAAYE,iBAAiBtsU,GAGpE,OAFArqD,IAAU,EAAIq6zC,EAAOv7kC,KAAK43I,EAAcE,kBAC9B,EAAIyj8B,EAAOv7kC,KAAK43I,EAAcG,kBAE1C,EAnIApzZ,EAAQ+m+B,WAqIR,SAAoBng5B,GAOlB,IAAItqD,EAAQsqD,EAAK82D,YACbu1Q,EAAgBrsU,EAAK8E,cAAcsnU,YAAYE,iBAAiBtsU,GAGpE,OAFAtqD,IAAS,EAAIs6zC,EAAOv7kC,KAAK43I,EAAcI,mBAC9B,EAAIuj8B,EAAOv7kC,KAAK43I,EAAcK,iBAEzC,EAhJAtzZ,EAAQu71C,gBAAkBA,EAC1Bv71C,EAAQw61C,YAyFR,SAAqBpjtC,EAEnBp7G,EAEAuxB,EAEAstyC,GAKA,GAAKzjtC,EAAL,CAEA,IAAI1wH,EAAUssW,EAAc,CAC1BhmV,SAAS,GACR6tzC,GAGCzjtC,EAAGxwH,oBACLwwH,EAAGxwH,oBAAoBoV,EAAOuxB,EAAS7mC,GAC9B0wH,EAAG4nsC,YACZ5nsC,EAAG4nsC,YAAY,KAAOhjzC,EAAOuxB,GAG7B6pF,EAAG,KAAOp7G,GAAS,IAbN,CAejB,EAlHAh8B,EAAQu61C,uBA0RR,SAAgCt2yC,GAG9B,GAAKA,EAEL,IAGE,GAFIA,EAAI31B,MAAMit0C,EAAgBt3yC,EAAI31B,KAAM,yCAEpC21B,EAAI+qC,UAEN/qC,EAAI+qC,UAAUiwc,YACT,CAGL,IAAIjwc,GAAa/qC,EAAI+uW,aAAevzZ,QAAQwvF,eAExCD,GAAgC,UAAnBA,EAAUllF,MACzBklF,EAAU4wvC,iBAEd,CACF,CAAE,MAAOlj1C,GACT,CACF,EA9SA,IAAIk61C,EAAS,EAAQ,OAEjBoE,EAIJ,SAAiCvwoC,EAAK8roC,GAAe,GAAoB9roC,GAAOA,EAAI5qN,WAAc,OAAO4qN,EAAO,GAAY,OAARA,GAAiC,WAAjBi2J,EAAQj2J,IAAoC,mBAARA,EAAsB,MAAO,CAAE3qN,QAAS2qN,GAAS,IAAIh6L,EAAQs0V,EAAyBwx+B,GAAc,GAAI9l0C,GAASA,EAAMnnB,IAAImhN,GAAQ,OAAOh6L,EAAM/vB,IAAI+pN,GAAQ,IAAIu6J,EAAS,CAAC,EAAOC,EAAwBpoX,OAAO4D,gBAAkB5D,OAAOmE,yBAA0B,IAAK,IAAIohB,KAAOqoM,EAAO,GAAY,YAARroM,GAAqBvlB,OAAOI,UAAUC,eAAeC,KAAKstN,EAAKroM,GAAM,CAAE,IAAIsrC,EAAOu3T,EAAwBpoX,OAAOmE,yBAAyBypN,EAAKroM,GAAO,KAAUsrC,IAASA,EAAKhtD,KAAOgtD,EAAKlkD,KAAQ3M,OAAO4D,eAAeukX,EAAQ5iW,EAAKsrC,GAAgBs3T,EAAO5iW,GAAOqoM,EAAIroM,EAAQ,CAAiE,OAA7D4iW,EAAOllX,QAAU2qN,EAASh6L,GAASA,EAAMjnB,IAAIihN,EAAKu6J,GAAkBA,CAAQ,CAJpxBE,CAAwB,EAAQ,QAEjD,SAASH,EAAyBwx+B,GAAe,GAAuB,mBAAZ7t1C,QAAwB,OAAO,KAAM,IAAIou1C,EAAoB,IAAIpu1C,QAAequ1C,EAAmB,IAAIru1C,QAAW,OAAQq8W,EAA2B,SAAkCwx+B,GAAe,OAAOA,EAAcQ,EAAmBD,CAAmB,GAAGP,EAAc,CAI9U,SAAS3j+B,EAAQj4U,EAAQk4U,GAAkB,IAAIhiX,EAAOhU,OAAOgU,KAAK8pC,GAAS,GAAI99C,OAAOmB,sBAAuB,CAAE,IAAI80X,EAAUj2X,OAAOmB,sBAAsB28C,GAASk4U,IAAmBC,EAAUA,EAAQ1oW,QAAO,SAAU2oW,GAAO,OAAOl2X,OAAOmE,yBAAyB25C,EAAQo4U,GAAK7xX,UAAY,KAAK2P,EAAKzR,KAAKtB,MAAM+S,EAAMiiX,EAAU,CAAE,OAAOjiX,CAAM,CAEpV,SAASmiX,EAAc3lX,GAAU,IAAK,IAAIlP,EAAI,EAAGA,EAAIR,UAAUC,OAAQO,IAAK,CAAE,IAAIiH,EAAS,MAAQzH,UAAUQ,GAAKR,UAAUQ,GAAK,CAAC,EAAGA,EAAI,EAAIy0X,EAAQ/1X,OAAOuI,IAAS,GAAIqd,SAAQ,SAAUL,GAAO6qW,EAAgB5/W,EAAQ+U,EAAKhd,EAAOgd,GAAO,IAAKvlB,OAAOq+B,0BAA4Br+B,OAAOkU,iBAAiB1D,EAAQxQ,OAAOq+B,0BAA0B91B,IAAWwtX,EAAQ/1X,OAAOuI,IAASqd,SAAQ,SAAUL,GAAOvlB,OAAO4D,eAAe4M,EAAQ+U,EAAKvlB,OAAOmE,yBAAyBoE,EAAQgd,GAAO,GAAI,CAAE,OAAO/U,CAAQ,CAEzf,SAAS4/W,EAAgBxiK,EAAKroM,EAAK1jB,GAAiK,OAApJ0jB,KAAOqoM,EAAO5tN,OAAO4D,eAAegqN,EAAKroM,EAAK,CAAE1jB,MAAOA,EAAOwC,YAAY,EAAMG,cAAc,EAAMC,UAAU,IAAkBmpN,EAAIroM,GAAO1jB,EAAgB+rN,CAAK,CAEhN,IAAI+woC,EAAsB,GAE1B,SAASJ,EAAgBhktC,EAEvBtpD,GAcA,OATK0twC,IACHA,GAAsB,EAAI5E,EAAOuE,aAAa,CAAC,UAAW,wBAAyB,qBAAsB,oBAAqB,qBAAqB,SAAUnt0C,GAE3J,OAAO,EAAI4o0C,EAAOr0lC,YAAYnrH,EAAGppH,GACnC,QAKG,EAAI4o0C,EAAOr0lC,YAAYnrH,EAAGoktC,KAExBpktC,EAAGoktC,GAAqB1twC,EACjC,CAoLA,SAASwiK,EAAel/B,EAAOs6mB,EAE7B+vhB,GAKA,IAAIj61C,EAAI4vN,EAAM5vN,EACVjB,EAAI6wN,EAAM7wN,EACVynN,EAAc,aAAazoN,OAAOiC,GAAGjC,OAAOk81C,EAAY,KAAKl81C,OAAOgB,GAAGhB,OAAOk81C,EAAY,KAE9F,GAAI/vhB,EAAgB,CAClB,IAAIgwhB,EAAW,GAAGn81C,OAAmC,iBAArBms0B,EAAelq0B,EAAiBkq0B,EAAelq0B,EAAIkq0B,EAAelq0B,EAAIi61C,GAClGE,EAAW,GAAGp81C,OAAmC,iBAArBms0B,EAAenr0B,EAAiBmr0B,EAAenr0B,EAAImr0B,EAAenr0B,EAAIk71C,GACtGzzoC,EAAc,aAAazoN,OAAOm81C,EAAU,MAAMn81C,OAAOo81C,EAAU,KAAO3zoC,CAC5E,CAEA,OAAOA,CACT,CAuEA,SAAS4yoC,EAAaxjtC,EAEpBjqD,GAGIiqD,EAAGlqD,UACLkqD,EAAGlqD,UAAUxqE,IAAIyqE,GAEZiqD,EAAGjqD,UAAUnpF,MAAM,IAAIshC,OAAO,YAAY/lC,OAAO4tF,EAAW,eAC/DiqD,EAAGjqD,WAAa,IAAI5tF,OAAO4tF,GAGjC,CAEA,SAASouwC,EAAgBnktC,EAEvBjqD,GAGIiqD,EAAGlqD,UACLkqD,EAAGlqD,UAAU98D,OAAO+8D,GAEpBiqD,EAAGjqD,UAAYiqD,EAAGjqD,UAAUnjF,QAAQ,IAAIs7B,OAAO,YAAY/lC,OAAO4tF,EAAW,WAAY,KAAM,GAEnG,8BChWAtwF,OAAO4D,eAAeT,EAAS,aAAc,CAC3CtB,OAAO,IAETsB,EAAQi71C,mBAAqBA,EAC7Bj71C,EAAQ471C,qBAuCR,SAA8B7xsC,EAE5Bj6H,GAKA,OAAOA,EAAS,IAAIvwB,OAAOuwB,EAAOhjB,cAAe,KAAKvN,OAAOwqJ,GAAQA,CACvE,EA9CA/pJ,EAAA,aAAkB,EAClBA,EAAQ671C,UAAYA,EACpB,IAAIC,EAAW,CAAC,MAAO,SAAU,IAAK,MAEtC,SAASD,IAGP,IAAIE,EAAkBC,EAElBjysC,EAEFpsJ,UAAUC,OAAS,QAAsB0tC,IAAjB3tC,UAAU,GAAmBA,UAAU,GAAK,YAGtE,GAAsB,oBAAX8B,OAAwB,MAAO,GAG1C,IAAImS,EAAiD,QAAxCmq1C,EAAmBt81C,OAAOiD,gBAA2C,IAArBq51C,GAAsG,QAA9DC,EAAwBD,EAAiBn7vC,uBAAuD,IAA1Bo7vC,OAAhF,EAA4HA,EAAsBpq1C,MAC7O,IAAKA,EAAO,MAAO,GACnB,GAAIm4I,KAAQn4I,EAAO,MAAO,GAE1B,IAAK,IAAIzT,EAAI,EAAGA,EAAI291C,EAASl+1C,OAAQO,IACnC,GAAI881C,EAAmBlxsC,EAAM+xsC,EAAS391C,MAAOyT,EAAO,OAAOkq1C,EAAS391C,GAGtE,MAAO,EACT,CAEA,SAAS881C,EAAmBlxsC,EAE1Bj6H,GAKA,OAAOA,EAAS,GAAGvwB,OAAOuwB,GAAQvwB,OAapC,SAA0B20E,GAQxB,IAHA,IAAIupD,EAAM,GACNw+tC,GAAmB,EAEd991C,EAAI,EAAGA,EAAI+1E,EAAIt2E,OAAQO,IAC1B891C,GACFx+tC,GAAOvpD,EAAI/1E,GAAGgwD,cACd8tyC,GAAmB,GACC,MAAX/nxC,EAAI/1E,GACb891C,GAAmB,EAEnBx+tC,GAAOvpD,EAAI/1E,GAIf,OAAOs/H,CACT,CAjC2Cy+tC,CAAiBnysC,IAASA,CACrE,CAqCA,IAAIkmP,EAAY4r9B,IAIhB771C,EAAA,QAAkBiwY,8BClFlBpzY,OAAO4D,eAAeT,EAAS,aAAc,CAC3CtB,OAAO,IAETsB,EAAA,QAGA,WAIA,gCCVAnD,OAAO4D,eAAeT,EAAS,aAAc,CAC3CtB,OAAO,IAETsB,EAAQ+41C,SAiFR,SAAkBj18B,GAKhB,MAAgC,SAAzBA,EAAUt5W,MAAMw9J,MAA4C,MAAzB87M,EAAUt5W,MAAMw9J,IAC5D,EAtFAhoM,EAAQg51C,SAwFR,SAAkBl18B,GAKhB,MAAgC,SAAzBA,EAAUt5W,MAAMw9J,MAA4C,MAAzB87M,EAAUt5W,MAAMw9J,IAC5D,EA7FAhoM,EAAQ651C,eAmHR,SAAwB/18B,EAEtBtiZ,EAEAjB,GAKA,IAAI2I,EAAQ46Y,EAAU56Y,MAClBw6qC,IAAW,EAAIkzK,EAAOuF,OAAOjz1C,EAAMkn2B,OACnCxpxB,EAAOivwC,EAAY/x8B,GAEvB,OAAI4/xB,EAEK,CACL98lC,KAAMA,EACN+8B,OAAQ,EACRuD,OAAQ,EACRkpvB,MAAO5u2B,EACPg7tC,MAAOj8tC,EACPiB,EAAGA,EACHjB,EAAGA,GAIE,CACLqmF,KAAMA,EACN+8B,OAAQniH,EAAI0H,EAAMkn2B,MAClBlpvB,OAAQ3mH,EAAI2I,EAAMsztC,MAClBpsX,MAAOln2B,EAAMkn2B,MACbosX,MAAOtztC,EAAMsztC,MACbh7tC,EAAGA,EACHjB,EAAGA,EAGT,EAtJAP,EAAQm31C,oBAyJR,SAA6Brz8B,EAE3Boz8B,GAKA,IAAI73vC,EAAQykT,EAAUt5W,MAAM60D,MAC5B,MAAO,CACLzY,KAAMswwC,EAAStwwC,KACfplF,EAAGsiZ,EAAU56Y,MAAM1H,EAAI011C,EAASvzuC,OAAStkB,EACzC9+F,EAAGujZ,EAAU56Y,MAAM3I,EAAI221C,EAAShwuC,OAAS7nB,EACzCskB,OAAQuzuC,EAASvzuC,OAAStkB,EAC1B6nB,OAAQgwuC,EAAShwuC,OAAS7nB,EAC1B+wwB,MAAOtsd,EAAU56Y,MAAM1H,EACvBg7tC,MAAO140B,EAAU56Y,MAAM3I,EAE3B,EAzKAP,EAAQy31C,iBAQR,SAA0B3z8B,EAExBtiZ,EAEAjB,GAMA,IAAKujZ,EAAUt5W,MAAM+wF,OAAQ,MAAO,CAAC/5H,EAAGjB,GAExC,IAAIg7H,EAASuoR,EAAUt5W,MAAM+wF,OAC7BA,EAA2B,iBAAXA,EAAsBA,EAuJxC,SAAqBA,GAKnB,MAAO,CACLn/F,KAAMm/F,EAAOn/F,KACbC,IAAKk/F,EAAOl/F,IACZ+gE,MAAOm+B,EAAOn+B,MACdC,OAAQk+B,EAAOl+B,OAEnB,CAlKiD++vC,CAAY7guC,GAC3D,IAAI30C,EAAOivwC,EAAY/x8B,GAEvB,GAAsB,iBAAXvoR,EAAqB,CAC9B,IAEI8guC,EAFA3wwC,EAAgB9E,EAAK8E,cACrB4wwC,EAAc5wwC,EAAcsnU,YAShC,MALEqp8B,EADa,WAAX9guC,EACU30C,EAAK3nD,WAELysD,EAAc5sD,cAAcy8F,cAGf+guC,EAAYpgmC,aACrC,MAAM,IAAIn3O,MAAM,oBAAsBw2G,EAAS,gCAGjD,IAAIghuC,EAEFF,EAEE1hO,EAAY2hO,EAAYpp8B,iBAAiBtsU,GACzC41wC,EAAiBF,EAAYpp8B,iBAAiBqp8B,GAElDhhuC,EAAS,CACPn/F,MAAOwqD,EAAK6X,YAAa,EAAIm4vC,EAAOv7kC,KAAKmhlC,EAAe9++B,cAAe,EAAIk5+B,EAAOv7kC,KAAKs/2B,EAAUr8wB,YACjGjiV,KAAMuqD,EAAKkY,WAAY,EAAI83vC,EAAOv7kC,KAAKmhlC,EAAej/+B,aAAc,EAAIq5+B,EAAOv7kC,KAAKs/2B,EAAUx8wB,WAC9F/gR,OAAO,EAAIs5vC,EAAQt+zC,YAAYmk0C,IAAe,EAAI7F,EAAQ3vX,YAAYng5B,GAAQA,EAAK6X,YAAa,EAAIm4vC,EAAOv7kC,KAAKmhlC,EAAeh/+B,eAAgB,EAAIo5+B,EAAOv7kC,KAAKs/2B,EAAUv8wB,aACzK/gR,QAAQ,EAAIq5vC,EAAQp+zC,aAAaik0C,IAAe,EAAI7F,EAAQ1vX,aAAapg5B,GAAQA,EAAKkY,WAAY,EAAI83vC,EAAOv7kC,KAAKmhlC,EAAe/++B,gBAAiB,EAAIm5+B,EAAOv7kC,KAAKs/2B,EAAUt8wB,cAEhL,CAQA,OALI,EAAIu4+B,EAAOuF,OAAO5guC,EAAOn+B,SAAQ57F,EAAIpB,KAAKgL,IAAI5J,EAAG+5H,EAAOn+B,SACxD,EAAIw5vC,EAAOuF,OAAO5guC,EAAOl+B,UAAS98F,EAAIH,KAAKgL,IAAI7K,EAAGg7H,EAAOl+B,UAEzD,EAAIu5vC,EAAOuF,OAAO5guC,EAAOn/F,QAAO56B,EAAIpB,KAAK8K,IAAI1J,EAAG+5H,EAAOn/F,QACvD,EAAIw6zC,EAAOuF,OAAO5guC,EAAOl/F,OAAM97B,EAAIH,KAAK8K,IAAI3K,EAAGg7H,EAAOl/F,MACnD,CAAC76B,EAAGjB,EACb,EA5DAP,EAAQ251C,mBA6FR,SAA4Bj91C,EAE1B681C,EAEAkD,GAKA,IAAIC,EAAsC,iBAApBnD,GAA+B,EAAI7C,EAAQwE,UAAUx+1C,EAAG681C,GAAmB,KACjG,GAA+B,iBAApBA,IAAiCmD,EAAU,OAAO,KAE7D,IAAI91wC,EAAOivwC,EAAY4G,GAEnB/kmC,EAAe+kmC,EAAcjyzC,MAAMktN,cAAgB9wK,EAAK8wK,cAAgB9wK,EAAK8E,cAAcp9D,KAC/F,OAAO,EAAIoo0C,EAAQ4E,oBAAoBoB,GAAYhg2C,EAAGg7P,EAAc+kmC,EAAcjyzC,MAAM60D,MAC1F,EA5GAr/F,EAAQo61C,WA6DR,SAAoBt2mC,EAElB64mC,EAEAC,GAOA,MAAO,CAFCx81C,KAAKogD,MAAMm8yC,EAAW74mC,EAAK,IAAMA,EAAK,GACtC1jP,KAAKogD,MAAMo8yC,EAAW94mC,EAAK,IAAMA,EAAK,GAEhD,EAvEA,IAAI8ymC,EAAS,EAAQ,OAEjBF,EAAU,EAAQ,OAmLtB,SAASb,EAAY/x8B,GAKnB,IAAIl9T,EAAOk9T,EAAU+x8B,cAErB,IAAKjvwC,EACH,MAAM,IAAI7hE,MAAM,4CAIlB,OAAO6hE,CACT,8BC7MA/pF,OAAO4D,eAAeT,EAAS,aAAc,CAC3CtB,OAAO,IAETsB,EAAQm51C,UA4CR,SAAmB3uzC,EAEjBs+G,EAEA7H,GAKA,GAAIz2G,EAAMs+G,GACR,OAAO,IAAI/jI,MAAM,gBAAgBxlB,OAAOupJ,EAAU,eAAevpJ,OAAO0hJ,EAAe,4CAE3F,EAvDAjhJ,EAAQm71C,YAMR,SAAqB1jzC,EAEnBhxB,GAKA,IAAK,IAAItoB,EAAI,EAAGP,EAAS65C,EAAM75C,OAAQO,EAAIP,EAAQO,IACjD,GAAIsoB,EAAS3oB,MAAM2oB,EAAU,CAACgxB,EAAMt5C,GAAIA,EAAGs5C,IAAS,OAAOA,EAAMt5C,EAErE,EAfA6B,EAAQq7Q,IAkCR,SAAa98Q,GAKX,OAAO20B,SAAS30B,EAAG,GACrB,EAvCAyB,EAAQuiQ,WAgBR,SAAoBjlN,GAMlB,MAAuB,mBAATA,GAAgE,sBAAzCzgD,OAAOI,UAAU6E,SAAS3E,KAAKmgD,EACtE,EAtBAt9C,EAAQm81C,MAwBR,SAAe17yC,GAKb,MAAsB,iBAARA,IAAqB5W,MAAM4W,EAC3C,gCCvCA,SAASnjD,EAAEZ,GAAG,IAAIC,EAAEsD,EAAErD,EAAE,GAAG,GAAG,iBAAiBF,GAAG,iBAAiBA,EAAEE,GAAGF,OAAO,GAAG,iBAAiBA,EAAE,GAAGM,MAAMkS,QAAQxS,GAAG,IAAIC,EAAE,EAAEA,EAAED,EAAEkB,OAAOjB,IAAID,EAAEC,KAAKsD,EAAE3C,EAAEZ,EAAEC,OAAOC,IAAIA,GAAG,KAAKA,GAAGqD,QAAQ,IAAItD,KAAKD,EAAEA,EAAEC,KAAKC,IAAIA,GAAG,KAAKA,GAAGD,GAAG,OAAOC,CAAC,CAAQ,SAASig2C,IAAO,IAAI,IAAIng2C,EAAEC,EAAEsD,EAAE,EAAErD,EAAE,GAAGqD,EAAEtC,UAAUC,SAASlB,EAAEiB,UAAUsC,QAAQtD,EAAEW,EAAEZ,MAAME,IAAIA,GAAG,KAAKA,GAAGD,GAAG,OAAOC,CAAC,0CAAC,6FCkH3V,SAAS+rB,EAAU62X,EAASslX,EAAYziwB,EAAGuhR,GAEhD,OAAO,IAAKvhR,IAAMA,EAAInE,WAAU,SAAU2kB,EAASC,GAC/C,SAAS28X,EAAU/gZ,GAAS,IAAMutW,EAAKroF,EAAUtlR,KAAKI,GAAS,CAAE,MAAOhC,GAAKomB,EAAOpmB,EAAI,CAAE,CAC1F,SAASgjZ,EAAShhZ,GAAS,IAAMutW,EAAKroF,EAAiB,MAAEllR,GAAS,CAAE,MAAOhC,GAAKomB,EAAOpmB,EAAI,CAAE,CAC7F,SAASuvW,EAAKlrV,GAJlB,IAAeriB,EAIaqiB,EAAOtiB,KAAOokB,EAAQ9B,EAAOriB,QAJ1CA,EAIyDqiB,EAAOriB,MAJhDA,aAAiB2D,EAAI3D,EAAQ,IAAI2D,GAAE,SAAUwgB,GAAWA,EAAQnkB,EAAQ,KAIjBC,KAAK8gZ,EAAWC,EAAW,CAC7GzzC,GAAMroF,EAAYA,EAAU9lR,MAAM0hZ,EAASslX,GAAc,KAAKxmwB,OAClE,GACF,CAEO,SAASsqB,EAAY42X,EAASlxX,GACnC,IAAsGruB,EAAGM,EAAG5D,EAAG+C,EAA3GyB,EAAI,CAAEvC,MAAO,EAAGC,KAAM,WAAa,GAAW,EAAPlC,EAAE,GAAQ,MAAMA,EAAE,GAAI,OAAOA,EAAE,EAAI,EAAGmC,KAAM,GAAIC,IAAK,IAChG,OAAOW,EAAI,CAAEpB,KAAMqya,EAAK,GAAI,MAASA,EAAK,GAAI,OAAUA,EAAK,IAAwB,mBAAX1xa,SAA0BS,EAAET,OAAOC,UAAY,WAAa,OAAO3B,IAAM,GAAImC,EACvJ,SAASixa,EAAK/za,GAAK,OAAO,SAAU4D,GAAK,OACzC,SAAcowa,GACV,GAAI3wa,EAAG,MAAM,IAAI7C,UAAU,mCAC3B,KAAOsC,IAAMA,EAAI,EAAGkxa,EAAG,KAAOzva,EAAI,IAAKA,OACnC,GAAIlB,EAAI,EAAGM,IAAM5D,EAAY,EAARi0a,EAAG,GAASrwa,EAAU,OAAIqwa,EAAG,GAAKrwa,EAAS,SAAO5D,EAAI4D,EAAU,SAAM5D,EAAEQ,KAAKoD,GAAI,GAAKA,EAAEjC,SAAW3B,EAAIA,EAAEQ,KAAKoD,EAAGqwa,EAAG,KAAKnya,KAAM,OAAO9B,EAE3J,OADI4D,EAAI,EAAG5D,IAAGi0a,EAAK,CAAS,EAARA,EAAG,GAAQj0a,EAAE+B,QACzBkya,EAAG,IACP,KAAK,EAAG,KAAK,EAAGj0a,EAAIi0a,EAAI,MACxB,KAAK,EAAc,OAAXzva,EAAEvC,QAAgB,CAAEF,MAAOkya,EAAG,GAAInya,MAAM,GAChD,KAAK,EAAG0C,EAAEvC,QAAS2B,EAAIqwa,EAAG,GAAIA,EAAK,CAAC,GAAI,SACxC,KAAK,EAAGA,EAAKzva,EAAEpC,IAAII,MAAOgC,EAAErC,KAAKK,MAAO,SACxC,QACI,MAAkBxC,GAAZA,EAAIwE,EAAErC,MAAYlB,OAAS,GAAKjB,EAAEA,EAAEiB,OAAS,KAAkB,IAAVgza,EAAG,IAAsB,IAAVA,EAAG,IAAW,CAAEzva,EAAI,EAAG,QAAU,CAC3G,GAAc,IAAVyva,EAAG,MAAcj0a,GAAMi0a,EAAG,GAAKj0a,EAAE,IAAMi0a,EAAG,GAAKj0a,EAAE,IAAM,CAAEwE,EAAEvC,MAAQgya,EAAG,GAAI,KAAO,CACrF,GAAc,IAAVA,EAAG,IAAYzva,EAAEvC,MAAQjC,EAAE,GAAI,CAAEwE,EAAEvC,MAAQjC,EAAE,GAAIA,EAAIi0a,EAAI,KAAO,CACpE,GAAIj0a,GAAKwE,EAAEvC,MAAQjC,EAAE,GAAI,CAAEwE,EAAEvC,MAAQjC,EAAE,GAAIwE,EAAEpC,IAAIK,KAAKwxa,GAAK,KAAO,CAC9Dj0a,EAAE,IAAIwE,EAAEpC,IAAII,MAChBgC,EAAErC,KAAKK,MAAO,SAEtByxa,EAAKtiZ,EAAKnxB,KAAKqiZ,EAASr+Y,EAC5B,CAAE,MAAOzE,GAAKk0a,EAAK,CAAC,EAAGl0a,GAAI6D,EAAI,CAAG,CAAE,QAAUN,EAAItD,EAAI,CAAG,CACzD,GAAY,EAARi0a,EAAG,GAAQ,MAAMA,EAAG,GAAI,MAAO,CAAElya,MAAOkya,EAAG,GAAKA,EAAG,QAAK,EAAQnya,MAAM,EAC9E,CAtBgDwtW,CAAK,CAACrvW,EAAG4D,GAAK,CAAG,CAuBnE,CA8BO,SAAS2ksB,EAAOtnsB,EAAGjB,GACxB,IAAI+D,EAAsB,mBAAX1B,QAAyBpB,EAAEoB,OAAOC,UACjD,IAAKyB,EAAG,OAAO9C,EACf,IAAmBP,EAAYZ,EAA3ByB,EAAIwC,EAAExD,KAAKU,GAAOgV,EAAK,GAC3B,IACI,WAAc,IAANjW,GAAgBA,KAAM,MAAQU,EAAIa,EAAEG,QAAQG,MAAMoU,EAAGzT,KAAK9B,EAAEoB,MACxE,CACA,MAAOW,GAAS3C,EAAI,CAAE2C,MAAOA,EAAS,CACtC,QACI,IACQ/B,IAAMA,EAAEmB,OAASkC,EAAIxC,EAAU,SAAIwC,EAAExD,KAAKgB,EAClD,CACA,QAAU,GAAIzB,EAAG,MAAMA,EAAE2C,KAAO,CACpC,CACA,OAAOwT,CACT,CAkBO,SAAS21C,EAAchyC,EAAI8E,EAAMmtC,GACtC,GAAIA,GAA6B,IAArB9qD,UAAUC,OAAc,IAAK,IAA4BiV,EAAxB1U,EAAI,EAAG4B,EAAIub,EAAK1d,OAAYO,EAAI4B,EAAG5B,KACxE0U,GAAQ1U,KAAKmd,IACRzI,IAAIA,EAAK7V,MAAMC,UAAUqC,MAAMnC,KAAKme,EAAM,EAAGnd,IAClD0U,EAAG1U,GAAKmd,EAAKnd,IAGrB,OAAOqY,EAAGjX,OAAOsT,GAAM7V,MAAMC,UAAUqC,MAAMnC,KAAKme,GACpD,CArE6Bze,OAAOY,OA0GXZ,OAAOY,OAyDkB,mBAApB4gZ,iBAAiCA,gBC3TxD,IAAIy+8B,EAAoB,IAAI500C,IAAI,CAEnC,CAAC,MAAO,aACR,CAAC,MAAO,yBACR,CAAC,MAAO,yBACR,CAAC,OAAQ,cACT,CAAC,MAAO,mBACR,CAAC,MAAO,gCACR,CAAC,MAAO,4BACR,CAAC,MAAO,aACR,CAAC,KAAM,sBACP,CAAC,MAAO,uBACR,CAAC,MAAO,qBACR,CAAC,MAAO,qBACR,CAAC,MAAO,YACR,CAAC,MAAO,YACR,CAAC,MAAO,sBACR,CAAC,OAAQ,2EACT,CAAC,MAAO,iCACR,CAAC,OAAQ,wBACT,CAAC,KAAM,oBACP,CAAC,MAAO,aACR,CAAC,OAAQ,cACT,CAAC,OAAQ,cACT,CAAC,MAAO,aACR,CAAC,OAAQ,aACT,CAAC,MAAO,4BACR,CAAC,MAAO,iBACR,CAAC,MAAO,4BACR,CAAC,OAAQ,cACT,CAAC,MAAO,cACR,CAAC,KAAM,mBACP,CAAC,OAAQ,oBACT,CAAC,SAAU,uBACX,CAAC,MAAO,cACR,CAAC,OAAQ,cACT,CAAC,MAAO,mBACR,CAAC,MAAO,cACR,CAAC,MAAO,aACR,CAAC,OAAQ,cACT,CAAC,OAAQ,uCACT,CAAC,MAAO,mDACR,CAAC,MAAO,kDACR,CAAC,MAAO,2CACR,CAAC,MAAO,aACR,CAAC,MAAO,aACR,CAAC,MAAO,mBACR,CAAC,OAAQ,cACT,CAAC,MAAO,YACR,CAAC,MAAO,aACR,CAAC,MAAO,mBACR,CAAC,MAAO,2BACR,CAAC,MAAO,iCACR,CAAC,OAAQ,6EACT,CAAC,MAAO,uBACR,CAAC,MAAO,mBACR,CAAC,KAAM,oBACP,CAAC,MAAO,iBACR,CAAC,MAAO,iCACR,CAAC,MAAO,qBACR,CAAC,MAAO,cACR,CAAC,OAAQ,cACT,CAAC,KAAM,cACP,CAAC,MAAO,YACR,CAAC,MAAO,cACR,CAAC,MAAO,yBACR,CAAC,MAAO,aACR,CAAC,OAAQ,cACT,CAAC,OAAQ,cACT,CAAC,OAAQ,cACT,CAAC,OAAQ,aACT,CAAC,QAAS,cACV,CAAC,QAAS,yBACV,CAAC,MAAO,4BACR,CAAC,OAAQ,qEACT,CAAC,MAAO,mBACR,CAAC,MAAO,mCACR,CAAC,MAAO,mBACR,CAAC,KAAM,+BAEP,CAAC,MAAO,oBACR,CAAC,MAAO,mBACR,CAAC,MAAO,gCAEL,SAAS600C,EAAe3mb,EAAMxi5B,GACjC,IAAI3zB,EAmBR,SAAsBm26B,GAClB,IAAInu6B,EAAOmu6B,EAAKnu6B,KAEhB,GADmBA,IAAmC,IAA3BA,EAAKuzK,YAAY,OACvB46vB,EAAKts6B,KAAM,CAC5B,IAAI+7Q,EAAM59Q,EAAK9F,MAAM,KAChBhD,MAAM2N,cACPhD,EAAOgz1C,EAAkBp81C,IAAImlR,GAC7B/7Q,GACAjN,OAAO4D,eAAe216B,EAAM,OAAQ,CAChC136B,MAAOoL,EACPxI,UAAU,EACVD,cAAc,EACdH,YAAY,GAGxB,CACA,OAAOk16B,CACX,CApCY4mb,CAAa5mb,GACrB,GAAsB,iBAAXn26B,EAAE2zB,KAAmB,CAC5B,IAAIqp0C,EAAqB7mb,EAAK6mb,mBAC9Bpg2C,OAAO4D,eAAeR,EAAG,OAAQ,CAC7BvB,MAAuB,iBAATk1B,EACRA,EAI8B,iBAAvBqp0C,GAAmCA,EAAmBr/1C,OAAS,EAClEq/1C,EACA7mb,EAAKnu6B,KACf3G,UAAU,EACVD,cAAc,EACdH,YAAY,GAEpB,CACA,OAAOjB,CACX,CCrGA,IAAIi91C,EAAkB,CAElB,YACA,aAkCJ,SAAS16lC,EAAShiQ,GACd,MAAoB,iBAANA,GAAwB,OAANA,CACpC,CACA,SAAS281C,EAAcx4wC,GACnB,OAAO29oC,EAAS39oC,EAAIt3E,OAAOqksB,OAAO9krB,KAAI,SAAUwp5B,GAAQ,OAAO2mb,EAAe3mb,EAAO,GACzF,CAEA,SAASgnb,EAAiBtn+B,GACtB,OAAOntW,EAAUprB,UAAM,OAAQ,GAAQ,WAEnC,OAAOqrB,EAAYrrB,MAAM,SAAU22B,GAC/B,OAAQA,EAAGt1B,OACP,KAAK,EAAG,MAAO,CAAC,EAAaV,QAAQyE,IAAImzX,EAAQlpW,KAAI,SAAUzsB,GAAK,OAAOA,EAAEk91C,SAAW,MACxF,KAAK,EAED,MAAO,CAAC,EADAnp0C,EAAGr1B,OACiB+tB,KAAI,SAAUwp5B,GAAQ,OAAO2mb,EAAe3mb,EAAO,KAE3F,GACJ,GACJ,CACA,SAASknb,EAAqBj01C,EAAIS,GAC9B,OAAO6e,EAAUprB,UAAM,OAAQ,GAAQ,WACnC,IAAI05N,EACJ,OAAOruM,EAAYrrB,MAAM,SAAU22B,GAC/B,OAAQA,EAAGt1B,OACP,KAAK,EACD,OAAKyK,EAAG4tN,OACRA,EAAQqrgC,EAASj5tC,EAAG4tN,OACf7sM,QAAO,SAAUu0B,GAAQ,MAAqB,SAAdA,EAAKh/B,IAAiB,IAG9C,SAAT7V,EACO,CAAC,EAAcmtN,GAEnB,CAAC,EAAa/4N,QAAQyE,IAAIs0N,EAAMrqM,IAAI2w0C,MARrB,CAAC,EAAa,GASxC,KAAK,EAED,MAAO,CAAC,EAAcC,EAAezutC,EAD7B76G,EAAGr1B,UAEf,KAAK,EAAG,MAAO,CAAC,EAAc2+1C,EAAel7H,EAASj5tC,EAAGqosB,OAChD9krB,KAAI,SAAUwp5B,GAAQ,OAAO2mb,EAAe3mb,EAAO,MAEpE,GACJ,GACJ,CACA,SAASonb,EAAe9rpB,GACpB,OAAOA,EAAMtnrB,QAAO,SAAUgs5B,GAAQ,OAA+C,IAAxC8mb,EAAgBn/1C,QAAQq46B,EAAKnu6B,KAAc,GAC5F,CAKA,SAASq6tC,EAASrrgC,GACd,GAAc,OAAVA,EACA,MAAO,GAIX,IAFA,IAAIy6e,EAAQ,GAEHvzsB,EAAI,EAAGA,EAAI84N,EAAMr5N,OAAQO,IAAK,CACnC,IAAIi46B,EAAOn/sB,EAAM94N,GACjBuzsB,EAAMtysB,KAAKg36B,EACf,CACA,OAAO1kO,CACX,CAEA,SAAS6rpB,EAAe5+yC,GACpB,GAAqC,mBAA1BA,EAAK8+yC,iBACZ,OAAOC,EAAqB/+yC,GAEhC,IAAI4S,EAAQ5S,EAAK8+yC,mBAIjB,OAAIlsyC,GAASA,EAAMosyC,YACRC,EAAarsyC,GAEjBmsyC,EAAqB/+yC,EAChC,CACA,SAASowF,EAAQkoF,GACb,OAAOA,EAAMhmM,QAAO,SAAU4oQ,EAAK63a,GAAS,OAAOlppB,EAAcA,EAAc,GAAI28oB,EAAOtra,IAAM,GAAQsra,EAAQnosB,MAAMkS,QAAQwisB,GAAS3ikB,EAAQ2ikB,GAAS,CAACA,KAAU,EAAQ,GAAG,GAClL,CACA,SAASgspB,EAAqB/+yC,GAC1B,IAAIy33B,EAAOz33B,EAAKk/yC,YAChB,IAAKznb,EACD,OAAOl46B,QAAQ4kB,OAAO,GAAGvjB,OAAOo/C,EAAM,mBAE1C,IAAIm/yC,EAAMf,EAAe3mb,GACzB,OAAOl46B,QAAQ2kB,QAAQi70C,EAC3B,CAEA,SAASC,EAAUxsyC,GACf,OAAO5oC,EAAUprB,UAAM,OAAQ,GAAQ,WACnC,OAAOqrB,EAAYrrB,MAAM,SAAU22B,GAC/B,MAAO,CAAC,EAAcq9B,EAAMosyC,YAAcC,EAAarsyC,GAASysyC,EAAczsyC,GAClF,GACJ,GACJ,CAEA,SAASqsyC,EAAarsyC,GAClB,IAAIyR,EAASzR,EAAM0syC,eACnB,OAAO,IAAI//1C,SAAQ,SAAU2kB,EAASC,GAClC,IAAI9I,EAAU,IACd,SAASkk1C,IACL,IAAIj0yC,EAAQ1sD,KAGZylE,EAAOk7xC,aAAY,SAAU/uxC,GAAS,OAAOxmD,EAAUshC,OAAO,OAAQ,GAAQ,WAC1E,IAAIynpB,EAAOhhS,EAAOz5M,EAClB,OAAOruM,EAAYrrB,MAAM,SAAU22B,GAC/B,OAAQA,EAAGt1B,OACP,KAAK,EACD,GAAMuwE,EAAMvxE,OAAQ,MAAO,CAAC,EAAa,GACzCs2B,EAAGt1B,MAAQ,EACf,KAAK,EAED,OADAs1B,EAAGp1B,KAAKM,KAAK,CAAC,EAAG,EAAG,CAAE,IACf,CAAC,EAAalB,QAAQyE,IAAIqX,IACrC,KAAK,EAGD,OAFA03rB,EAAQx9qB,EAAGr1B,OACXgkB,EAAQ6urB,GACD,CAAC,EAAa,GACzB,KAAK,EAGD,OAFAhhS,EAAQx8Y,EAAGr1B,OACXikB,EAAO4tZ,GACA,CAAC,EAAa,GACzB,KAAK,EAAG,MAAO,CAAC,EAAa,GAC7B,KAAK,EACDz5M,EAAQ/4N,QAAQyE,IAAIwsE,EAAMviD,IAAImx0C,IAC9B/j1C,EAAQ5a,KAAK63N,GAEbinoC,IACAhq0C,EAAGt1B,MAAQ,EACf,KAAK,EAAG,MAAO,CAAC,GAExB,GACJ,GAAI,IAAG,SAAUi2C,GACb/xB,EAAO+xB,EACX,GACJ,CACAqpzC,EACJ,GACJ,CAEA,SAASF,EAAczsyC,GACnB,OAAO5oC,EAAUprB,UAAM,OAAQ,GAAQ,WACnC,OAAOqrB,EAAYrrB,MAAM,SAAU22B,GAC/B,MAAO,CAAC,EAAc,IAAIh2B,SAAQ,SAAU2kB,EAASC,GAC7CyuC,EAAM6k3B,MAAK,SAAUA,GACjB,IAAI0nb,EAAMf,EAAe3mb,EAAM7k3B,EAAM4syC,UACrCt70C,EAAQi70C,EACZ,IAAG,SAAUjpzC,GACT/xB,EAAO+xB,EACX,GACJ,IACR,GACJ,GACJ,eCjMA,SAASqzU,EAAmBlsJ,GAAO,OAMnC,SAA4BA,GAAO,GAAIh/N,MAAMkS,QAAQ8sN,GAAM,OAAOqpJ,EAAkBrpJ,EAAM,CANhDsrJ,CAAmBtrJ,IAI7D,SAA0BwrJ,GAAQ,GAAsB,oBAAXvoX,QAAmD,MAAzBuoX,EAAKvoX,OAAOC,WAA2C,MAAtBsoX,EAAK,cAAuB,OAAOxqX,MAAMse,KAAKksW,EAAO,CAJxFC,CAAiBzrJ,IAAQmpJ,EAA4BnpJ,IAE1H,WAAgC,MAAM,IAAI5+N,UAAU,uIAAyI,CAF3DsqX,EAAsB,CAQxJ,SAASkL,EAAQj4U,EAAQk4U,GAAkB,IAAIhiX,EAAOhU,OAAOgU,KAAK8pC,GAAS,GAAI99C,OAAOmB,sBAAuB,CAAE,IAAI80X,EAAUj2X,OAAOmB,sBAAsB28C,GAASk4U,IAAmBC,EAAUA,EAAQ1oW,QAAO,SAAU2oW,GAAO,OAAOl2X,OAAOmE,yBAAyB25C,EAAQo4U,GAAK7xX,UAAY,KAAK2P,EAAKzR,KAAKtB,MAAM+S,EAAMiiX,EAAU,CAAE,OAAOjiX,CAAM,CAEpV,SAASmiX,EAAc3lX,GAAU,IAAK,IAAIlP,EAAI,EAAGA,EAAIR,UAAUC,OAAQO,IAAK,CAAE,IAAIiH,EAAS,MAAQzH,UAAUQ,GAAKR,UAAUQ,GAAK,CAAC,EAAGA,EAAI,EAAIy0X,EAAQ/1X,OAAOuI,IAAS,GAAIqd,SAAQ,SAAUL,GAAO6qW,EAAgB5/W,EAAQ+U,EAAKhd,EAAOgd,GAAO,IAAKvlB,OAAOq+B,0BAA4Br+B,OAAOkU,iBAAiB1D,EAAQxQ,OAAOq+B,0BAA0B91B,IAAWwtX,EAAQ/1X,OAAOuI,IAASqd,SAAQ,SAAUL,GAAOvlB,OAAO4D,eAAe4M,EAAQ+U,EAAKvlB,OAAOmE,yBAAyBoE,EAAQgd,GAAO,GAAI,CAAE,OAAO/U,CAAQ,CAEzf,SAAS4/W,EAAgBxiK,EAAKroM,EAAK1jB,GAAiK,OAApJ0jB,KAAOqoM,EAAO5tN,OAAO4D,eAAegqN,EAAKroM,EAAK,CAAE1jB,MAAOA,EAAOwC,YAAY,EAAMG,cAAc,EAAMC,UAAU,IAAkBmpN,EAAIroM,GAAO1jB,EAAgB+rN,CAAK,CAIhN,SAASglK,EAAezzJ,EAAK79N,GAAK,OAUlC,SAAyB69N,GAAO,GAAIh/N,MAAMkS,QAAQ8sN,GAAM,OAAOA,CAAK,CAV3B2sJ,CAAgB3sJ,IAQzD,SAA+BA,EAAK79N,GAAK,IAAI6d,EAAY,MAAPggN,EAAc,KAAyB,oBAAX/8N,QAA0B+8N,EAAI/8N,OAAOC,WAAa88N,EAAI,cAAe,GAAU,MAANhgN,EAAJ,CAAwB,IAAkD6pF,EAAI//F,EAAlD8iX,EAAO,GAAQp5W,GAAK,EAAUopD,GAAK,EAAmB,IAAM,IAAK58C,EAAKA,EAAG7e,KAAK6+N,KAAQxsN,GAAMq2F,EAAK7pF,EAAG1d,QAAQG,QAAoBmqX,EAAKxpX,KAAKymG,EAAGnnG,QAAYP,GAAKyqX,EAAKhrX,SAAWO,GAA3DqR,GAAK,GAAkE,CAAE,MAAOqlC,GAAO+jB,GAAK,EAAM9yD,EAAK+uC,CAAK,CAAE,QAAU,IAAWrlC,GAAsB,MAAhBwM,EAAW,QAAWA,EAAW,QAAK,CAAE,QAAU,GAAI48C,EAAI,MAAM9yD,CAAI,CAAE,CAAE,OAAO8iX,CAAjV,CAAuV,CAR/bC,CAAsB7sJ,EAAK79N,IAAMgnX,EAA4BnpJ,EAAK79N,IAEnI,WAA8B,MAAM,IAAIf,UAAU,4IAA8I,CAFvD0rX,EAAoB,CAI7J,SAAS3D,EAA4BtnX,EAAGunX,GAAU,GAAKvnX,EAAL,CAAgB,GAAiB,iBAANA,EAAgB,OAAOwnX,EAAkBxnX,EAAGunX,GAAS,IAAIxoX,EAAIC,OAAOI,UAAU6E,SAAS3E,KAAKU,GAAGyB,MAAM,GAAI,GAAiE,MAAnD,WAAN1C,GAAkBiB,EAAEL,cAAaZ,EAAIiB,EAAEL,YAAYyK,MAAgB,QAANrL,GAAqB,QAANA,EAAoBI,MAAMse,KAAKzd,GAAc,cAANjB,GAAqB,2CAA2CgM,KAAKhM,GAAWyoX,EAAkBxnX,EAAGunX,QAAzG,CAA7O,CAA+V,CAE/Z,SAASC,EAAkBrpJ,EAAK5/F,IAAkB,MAAPA,GAAeA,EAAM4/F,EAAIp+N,UAAQw+H,EAAM4/F,EAAIp+N,QAAQ,IAAK,IAAIO,EAAI,EAAGmoW,EAAO,IAAItpW,MAAMo/H,GAAMj+H,EAAIi+H,EAAKj+H,IAAOmoW,EAAKnoW,GAAK69N,EAAI79N,GAAM,OAAOmoW,CAAM,CAQ/K,IAWI83/B,EAA6B,SAAoC354B,GAC1EA,EAASznd,MAAMkS,QAAQu1c,IAA6B,IAAlBA,EAAO7md,OAAe6md,EAAO,GAAKA,EACpE,IAAI454B,EAAgBrh2C,MAAMkS,QAAQu1c,GAAU,UAAUlld,OAAOkld,EAAOr6c,KAAK,OAASq6c,EAClF,MAAO,CACLhsb,KAf2B,oBAgB3BnJ,QAAS,qBAAqB/vB,OAAO8+1C,GAEzC,EACWC,EAA0B,SAAiC16rC,GACpE,MAAO,CACLnrI,KApBwB,iBAqBxBnJ,QAAS,uBAAuB/vB,OAAOqkK,EAAS,KAAKrkK,OAAmB,IAAZqkK,EAAgB,OAAS,SAEzF,EACW26rC,EAA0B,SAAiC13e,GACpE,MAAO,CACLpu1B,KAzBwB,iBA0BxBnJ,QAAS,wBAAwB/vB,OAAOsn3B,EAAS,KAAKtn3B,OAAmB,IAAZsn3B,EAAgB,OAAS,SAE1F,EACW23e,EAA2B,CACpC/l0C,KA7B0B,iBA8B1BnJ,QAAS,kBAIJ,SAASmv0C,EAAarob,EAAM3xd,GACjC,IAAIi64B,EAA6B,2BAAdtob,EAAKts6B,OAAqC,OAAQss6B,EAAM3xd,GAC3E,MAAO,CAACi64B,EAAcA,EAAe,KAAON,EAA2B354B,GACzE,CACO,SAASk64B,EAAcvob,EAAMvvD,EAASjjtB,GAC3C,GAAInrF,EAAU291B,EAAKj05B,MACjB,GAAIs2D,EAAUouyB,IAAYpuyB,EAAUmrF,GAAU,CAC5C,GAAIwywB,EAAKj05B,KAAOyhJ,EAAS,MAAO,EAAC,EAAO06rC,EAAwB16rC,IAChE,GAAIwywB,EAAKj05B,KAAO0k2B,EAAS,MAAO,EAAC,EAAO03e,EAAwB13e,GAClE,KAAO,IAAIpuyB,EAAUouyB,IAAYuvD,EAAKj05B,KAAO0k2B,EAAS,MAAO,EAAC,EAAO03e,EAAwB13e,IAAe,GAAIpuyB,EAAUmrF,IAAYwywB,EAAKj05B,KAAOyhJ,EAAS,MAAO,EAAC,EAAO06rC,EAAwB16rC,GAAS,CAG7M,MAAO,EAAC,EAAM,KAChB,CAEA,SAASnrF,EAAU/5E,GACjB,OAAOA,OACT,CA4CO,SAAS880C,EAAqBx/yC,GACnC,MAA0C,mBAA/BA,EAAMw/yC,qBACRx/yC,EAAMw/yC,4BAC0B,IAAvBx/yC,EAAMksX,cACflsX,EAAMksX,YAIjB,CACO,SAAS028B,EAAe5i0C,GAC7B,OAAKA,EAAMy0kB,aAMJzzmB,MAAMC,UAAUioC,KAAK/nC,KAAK6+B,EAAMy0kB,aAAatiiB,OAAO,SAAUrkE,GACnE,MAAgB,UAATA,GAA6B,2BAATA,CAC7B,MAPWkyB,EAAM3uB,UAAY2uB,EAAM3uB,OAAOqksB,KAQ5C,CAKO,SAASmtpB,EAAmB7i0C,GACjCA,EAAMmnF,gBACR,CAyBO,SAAS27uC,IACd,IAAK,IAAI3zmC,EAAOxtP,UAAUC,OAAQoie,EAAM,IAAIhje,MAAMmuP,GAAOlF,EAAO,EAAGA,EAAOkF,EAAMlF,IAC9E+5O,EAAI/5O,GAAQtoP,UAAUsoP,GAGxB,OAAO,SAAUjqN,GACf,IAAK,IAAIkiO,EAAQvgQ,UAAUC,OAAQg3C,EAAO,IAAI53C,MAAMkhQ,EAAQ,EAAIA,EAAQ,EAAI,GAAIC,EAAQ,EAAGA,EAAQD,EAAOC,IACxGvpN,EAAKupN,EAAQ,GAAKxgQ,UAAUwgQ,GAG9B,OAAO6hO,EAAI96b,MAAK,SAAUz2B,GAKxB,OAJK+s0C,EAAqBx/yC,IAAUvtB,GAClCA,EAAG3Q,WAAM,EAAQ,CAACk+B,GAAOz8B,OAAOq1C,IAG3B4myC,EAAqBx/yC,EAC9B,GACF,CACF,CA0GO,SAAS+i0C,EAAWv+1C,GACzB,MAAa,YAANA,GAAyB,YAANA,GAAyB,YAANA,GAAyB,WAANA,GAAkB,iBAAiBoI,KAAKpI,EAC1G,CAMO,SAASw+1C,EAAMx+1C,GACpB,MAAO,cAAcoI,KAAKpI,EAC5B,CCzTA,IAAImtW,EAAY,CAAC,YACb6lD,EAAa,CAAC,QACdyr8B,EAAa,CAAC,SAAU,OAAQ,YAAa,UAAW,SAAU,UAAW,cAAe,aAAc,cAAe,UACzHC,EAAa,CAAC,SAAU,WAAY,WAUxC,SAAS,EAAeljoC,EAAK79N,GAAK,OAUlC,SAAyB69N,GAAO,GAAIh/N,MAAMkS,QAAQ8sN,GAAM,OAAOA,CAAK,CAV3B,CAAgBA,IAQzD,SAA+BA,EAAK79N,GAAK,IAAI6d,EAAY,MAAPggN,EAAc,KAAyB,oBAAX/8N,QAA0B+8N,EAAI/8N,OAAOC,WAAa88N,EAAI,cAAe,GAAU,MAANhgN,EAAJ,CAAwB,IAAkD6pF,EAAI//F,EAAlD8iX,EAAO,GAAQp5W,GAAK,EAAUopD,GAAK,EAAmB,IAAM,IAAK58C,EAAKA,EAAG7e,KAAK6+N,KAAQxsN,GAAMq2F,EAAK7pF,EAAG1d,QAAQG,QAAoBmqX,EAAKxpX,KAAKymG,EAAGnnG,QAAYP,GAAKyqX,EAAKhrX,SAAWO,GAA3DqR,GAAK,GAAkE,CAAE,MAAOqlC,GAAO+jB,GAAK,EAAM9yD,EAAK+uC,CAAK,CAAE,QAAU,IAAWrlC,GAAsB,MAAhBwM,EAAW,QAAWA,EAAW,QAAK,CAAE,QAAU,GAAI48C,EAAI,MAAM9yD,CAAI,CAAE,CAAE,OAAO8iX,CAAjV,CAAuV,CAR/b,CAAsB5sJ,EAAK79N,IAAM,EAA4B69N,EAAK79N,IAEnI,WAA8B,MAAM,IAAIf,UAAU,4IAA8I,CAFvD,EAAoB,CAI7J,SAAS,EAA4BS,EAAGunX,GAAU,GAAKvnX,EAAL,CAAgB,GAAiB,iBAANA,EAAgB,OAAO,EAAkBA,EAAGunX,GAAS,IAAIxoX,EAAIC,OAAOI,UAAU6E,SAAS3E,KAAKU,GAAGyB,MAAM,GAAI,GAAiE,MAAnD,WAAN1C,GAAkBiB,EAAEL,cAAaZ,EAAIiB,EAAEL,YAAYyK,MAAgB,QAANrL,GAAqB,QAANA,EAAoBI,MAAMse,KAAKzd,GAAc,cAANjB,GAAqB,2CAA2CgM,KAAKhM,GAAW,EAAkBiB,EAAGunX,QAAzG,CAA7O,CAA+V,CAE/Z,SAAS,EAAkBppJ,EAAK5/F,IAAkB,MAAPA,GAAeA,EAAM4/F,EAAIp+N,UAAQw+H,EAAM4/F,EAAIp+N,QAAQ,IAAK,IAAIO,EAAI,EAAGmoW,EAAO,IAAItpW,MAAMo/H,GAAMj+H,EAAIi+H,EAAKj+H,IAAOmoW,EAAKnoW,GAAK69N,EAAI79N,GAAM,OAAOmoW,CAAM,CAMtL,SAAS,EAAQ3rT,EAAQk4U,GAAkB,IAAIhiX,EAAOhU,OAAOgU,KAAK8pC,GAAS,GAAI99C,OAAOmB,sBAAuB,CAAE,IAAI80X,EAAUj2X,OAAOmB,sBAAsB28C,GAASk4U,IAAmBC,EAAUA,EAAQ1oW,QAAO,SAAU2oW,GAAO,OAAOl2X,OAAOmE,yBAAyB25C,EAAQo4U,GAAK7xX,UAAY,KAAK2P,EAAKzR,KAAKtB,MAAM+S,EAAMiiX,EAAU,CAAE,OAAOjiX,CAAM,CAEpV,SAAS,GAAcxD,GAAU,IAAK,IAAIlP,EAAI,EAAGA,EAAIR,UAAUC,OAAQO,IAAK,CAAE,IAAIiH,EAAS,MAAQzH,UAAUQ,GAAKR,UAAUQ,GAAK,CAAC,EAAGA,EAAI,EAAI,EAAQtB,OAAOuI,IAAS,GAAIqd,SAAQ,SAAUL,GAAO,GAAgB/U,EAAQ+U,EAAKhd,EAAOgd,GAAO,IAAKvlB,OAAOq+B,0BAA4Br+B,OAAOkU,iBAAiB1D,EAAQxQ,OAAOq+B,0BAA0B91B,IAAW,EAAQvI,OAAOuI,IAASqd,SAAQ,SAAUL,GAAOvlB,OAAO4D,eAAe4M,EAAQ+U,EAAKvlB,OAAOmE,yBAAyBoE,EAAQgd,GAAO,GAAI,CAAE,OAAO/U,CAAQ,CAEzf,SAAS,GAAgBo9M,EAAKroM,EAAK1jB,GAAiK,OAApJ0jB,KAAOqoM,EAAO5tN,OAAO4D,eAAegqN,EAAKroM,EAAK,CAAE1jB,MAAOA,EAAOwC,YAAY,EAAMG,cAAc,EAAMC,UAAU,IAAkBmpN,EAAIroM,GAAO1jB,EAAgB+rN,CAAK,CAEhN,SAAS+yL,GAAyBp4Y,EAAQqz1C,GAAY,GAAc,MAAVrz1C,EAAgB,MAAO,CAAC,EAAG,IAAkEgd,EAAKjkB,EAAnEkP,EAEzF,SAAuCjI,EAAQqz1C,GAAY,GAAc,MAAVrz1C,EAAgB,MAAO,CAAC,EAAG,IAA2Dgd,EAAKjkB,EAA5DkP,EAAS,CAAC,EAAOqr1C,EAAa771C,OAAOgU,KAAKzL,GAAqB,IAAKjH,EAAI,EAAGA,EAAIu61C,EAAW961C,OAAQO,IAAOikB,EAAMs20C,EAAWv61C,GAAQs61C,EAAS161C,QAAQqkB,IAAQ,IAAa/U,EAAO+U,GAAOhd,EAAOgd,IAAQ,OAAO/U,CAAQ,CAFhNowY,CAA8Br4Y,EAAQqz1C,GAAuB,GAAI571C,OAAOmB,sBAAuB,CAAE,IAAI261C,EAAmB971C,OAAOmB,sBAAsBoH,GAAS,IAAKjH,EAAI,EAAGA,EAAIw61C,EAAiB/61C,OAAQO,IAAOikB,EAAMu20C,EAAiBx61C,GAAQs61C,EAAS161C,QAAQqkB,IAAQ,GAAkBvlB,OAAOI,UAAUgB,qBAAqBd,KAAKiI,EAAQgd,KAAgB/U,EAAO+U,GAAOhd,EAAOgd,GAAQ,CAAE,OAAO/U,CAAQ,CAwB3e,IAAI8x1C,IAAwB,IAAAhqmC,aAAW,SAAUxqD,EAAMxrK,GACrD,IAAI5B,EAAWotK,EAAKptK,SAGhB6h0C,EA6XC,WACL,IAAI50zC,EAAQ7sC,UAAUC,OAAS,QAAsB0tC,IAAjB3tC,UAAU,GAAmBA,UAAU,GAAK,CAAC,EAE7E0h2C,EAAsB,GAAc,GAAc,CAAC,EAAG5ntC,IAAejtG,GACrEi6a,EAAS464B,EAAoB564B,OAC7B52G,EAAWwx/B,EAAoBxx/B,SAC/Byx/B,EAAoBD,EAAoBC,kBACxC17rC,EAAUy7rC,EAAoBz7rC,QAC9BijtB,EAAUw4e,EAAoBx4e,QAC9BimI,EAAWuyW,EAAoBvyW,SAC/ByyW,EAAWF,EAAoBE,SAC/B9gyB,EAAc4gyB,EAAoB5gyB,YAClCI,EAAcwgyB,EAAoBxgyB,YAClC2gyB,EAAaH,EAAoBG,WACjCC,EAASJ,EAAoBI,OAC7BC,EAAiBL,EAAoBK,eACrCC,EAAiBN,EAAoBM,eACrCC,EAAqBP,EAAoBO,mBACzCC,EAAmBR,EAAoBQ,iBACvCC,EAAiBT,EAAoBS,eACrClS,EAAYyR,EAAoBzR,UAChCmS,EAAwBV,EAAoBU,sBAC5CC,EAAUX,EAAoBW,QAC9BC,EAAaZ,EAAoBY,WACjCC,EAASb,EAAoBa,OAC7BC,EAAuBd,EAAoBc,qBAC3CvlvC,EAAUykvC,EAAoBzkvC,QAC9B4jzB,EAAY6gc,EAAoB7gc,UAEhC4hc,GAAa,IAAAp0zC,UAAQ,WACvB,ODrNG,SAAgCy4a,GACrC,GAAIhsY,EAAUgsY,GACZ,OAAO5nd,OAAOmd,QAAQyqc,GAAQxzb,QAAO,SAAU1yB,EAAGkjY,GAChD,IAAIk3jB,EAAQlpkB,EAAegS,EAAO,GAC9B/gK,EAAWi4tB,EAAM,GACjB9yqB,EAAM8yqB,EAAM,GAEhB,MAAO,GAAGp57B,OAAO2oX,EAAmB3pX,GAAI,CAACmiO,GAAWwnJ,EAAmBriG,GACzE,GAAG,IACFz7P,QAAO,SAAU5pB,GAChB,OAAOu+1C,EAAWv+1C,IAAMw+1C,EAAMx+1C,EAChC,IAAG4J,KAAK,IAIZ,CCsMWi21C,CAAuB574B,EAChC,GAAG,CAACA,IACA674B,GAAc,IAAAt0zC,UAAQ,WACxB,ODlQG,SAAiCy4a,GACtC,OAAIhsY,EAAUgsY,GA0BL,CAAC,CAEN7vc,YAAa,QACb6vc,OA5BoB5nd,OAAOmd,QAAQyqc,GAAQr6b,QAAO,SAAUgnM,GAC5D,IAAI66B,EAAQwjI,EAAer+J,EAAO,GAC9BsP,EAAWurB,EAAM,GACjB45B,EAAM55B,EAAM,GAEZ1+N,GAAK,EAYT,OAVKwx0C,EAAWr+nC,KACd97M,QAAQC,KAAK,YAAatlB,OAAOmhO,EAAU,0KAC3CnzM,GAAK,GAGFvwB,MAAMkS,QAAQ22Q,IAASA,EAAI7/O,MAAMg5zC,KACpCp60C,QAAQC,KAAK,YAAatlB,OAAOmhO,EAAU,sDAC3CnzM,GAAK,GAGAA,CACT,IAAG0D,QAAO,SAAUwsW,EAAKjwI,GACvB,IAAIE,EAAQ+hI,EAAejiI,EAAO,GAC9B9sB,EAAWgtB,EAAM,GACjBm4B,EAAMn4B,EAAM,GAEhB,OAAOslI,EAAcA,EAAc,CAAC,EAAGyK,GAAM,CAAC,EAAGxQ,EAAgB,CAAC,EAAGvsJ,EAAUmlD,GACjF,GAAG,CAAC,KAQC4+L,CACT,CC+NW874B,CAAwB974B,EACjC,GAAG,CAACA,IACA+74B,GAAqB,IAAAx0zC,UAAQ,WAC/B,MAAmC,mBAArB6zzC,EAAkCA,EAAmBx/yC,EACrE,GAAG,CAACw/yC,IACAY,GAAuB,IAAAz0zC,UAAQ,WACjC,MAAqC,mBAAvB4zzC,EAAoCA,EAAqBv/yC,EACzE,GAAG,CAACu/yC,IAMAc,GAAU,IAAA7k0C,QAAO,MACjB8k0C,GAAW,IAAA9k0C,QAAO,MAGlB+k0C,EAAe,GADD,IAAAntB,YAAW7n6B,GAAS2B,IACS,GAC3Crka,EAAQ031C,EAAa,GACrB727B,GAAW627B,EAAa,GAExBv/uB,GAAYn4mB,EAAMm4mB,UAClBw/uB,GAAqB331C,EAAM231C,mBAC3BC,IAAsB,IAAAjl0C,QAAyB,oBAAXp8B,QAA0BA,OAAOsh2C,iBAAmBjB,GDnSrF,uBAAwBrg2C,QCqS3Buh2C,GAAgB,YAEbF,GAAoBxj0C,SAAWuj0C,IAClCz90C,YAAW,WACLu90C,EAASrj0C,UACCqj0C,EAASrj0C,QAAQo0qB,MAElB9zsB,SACTmsa,GAAS,CACPjga,KAAM,gBAER221C,KAGN,GAAG,IAEP,GAEA,IAAA5h0C,YAAU,WAER,OADAp/B,OAAOyqB,iBAAiB,QAAS820C,IAAe,GACzC,WACLvh2C,OAAOmnB,oBAAoB,QAASo60C,IAAe,EACrD,CACF,GAAG,CAACL,EAAUE,GAAoBJ,EAAsBK,KACxD,IAAIG,IAAiB,IAAApl0C,QAAO,IAExBql0C,GAAiB,SAAwBll0C,GACvC0k0C,EAAQpj0C,SAAWoj0C,EAAQpj0C,QAAQnD,SAAS6B,EAAM3uB,UAKtD2uB,EAAMmnF,iBACN89uC,GAAe3j0C,QAAU,GAC3B,GAEA,IAAAuB,YAAU,WAMR,OALIkh0C,IACFr91C,SAASwnB,iBAAiB,WAAY200C,GAAoB,GAC1Dn81C,SAASwnB,iBAAiB,OAAQg30C,IAAgB,IAG7C,WACDnB,IACFr91C,SAASkkB,oBAAoB,WAAYi40C,GACzCn81C,SAASkkB,oBAAoB,OAAQs60C,IAEzC,CACF,GAAG,CAACR,EAASX,KAEb,IAAAlh0C,YAAU,WAKR,OAJKgvU,GAAY+/+B,GAAa8S,EAAQpj0C,SACpCoj0C,EAAQpj0C,QAAQ+wU,QAGX,WAAa,CACtB,GAAG,CAACqy/B,EAAS9S,EAAW//+B,IACxB,IAAIsz/B,IAAU,IAAA97b,cAAY,SAAU3o6B,GAC9Bk+G,EACFA,EAAQl+G,GAGRkoB,QAAQvlB,MAAM3C,EAElB,GAAG,CAACk+G,IACAwmvC,IAAgB,IAAA/7b,cAAY,SAAUrp4B,GA9iB5C,IAA4BggM,EA+iBxBhgM,EAAMmnF,iBAENnnF,EAAMy/yC,UACN17tC,GAAgB/jF,GAChBil0C,GAAe3j0C,QAAU,GAAG/9B,OA7iBhC,SAA4By8N,GAAO,GAAIh/N,MAAMkS,QAAQ8sN,GAAM,OAAO,EAAkBA,EAAM,CANhD,CAAdA,EAmjB8BiloC,GAAe3j0C,UA/iBzE,SAA0BkqV,GAAQ,GAAsB,oBAAXvoX,QAAmD,MAAzBuoX,EAAKvoX,OAAOC,WAA2C,MAAtBsoX,EAAK,cAAuB,OAAOxqX,MAAMse,KAAKksW,EAAO,CAJxF,CAAiBxrJ,IAAQ,EAA4BA,IAE1H,WAAgC,MAAM,IAAI5+N,UAAU,uIAAyI,CAF3D,GAmjB/C,CAAC4+B,EAAM3uB,SAElFux1C,EAAe5i0C,IACjB99B,QAAQ2kB,QAAQy80C,EAAkBtj0C,IAAQr9B,MAAK,SAAU+ysB,GACvD,IAAI8poB,EAAqBx/yC,IAAWmk0C,EAApC,CAIA,IAAIkB,EAAY3vpB,EAAM9zsB,OAClB0j2C,EAAeD,EAAY,GD9dhC,SAA0B12pC,GAC/B,IAAI+mgB,EAAQ/mgB,EAAK+mgB,MACbjtP,EAAS95Q,EAAK85Q,OACdoia,EAAUl8qB,EAAKk8qB,QACfjjtB,EAAU+mC,EAAK/mC,QACfkp1B,EAAWnizB,EAAKmizB,SAChByyW,EAAW50pC,EAAK40pC,SAChB/gc,EAAY7ztB,EAAK6ztB,UAErB,SAAKsuF,GAAYp7S,EAAM9zsB,OAAS,GAAKkv/B,GAAYyyW,GAAY,GAAK7tpB,EAAM9zsB,OAAS2h2C,IAI1E7tpB,EAAM1rqB,OAAM,SAAUow4B,GAC3B,IAEImrb,EADiB9x+B,EADDgv+B,EAAarob,EAAM3xd,GACY,GACrB,GAI1B+84B,EADkB/x+B,EADDkv+B,EAAcvob,EAAMvvD,EAASjjtB,GACG,GACrB,GAE5B69rC,EAAejjc,EAAYA,EAAU4X,GAAQ,KACjD,OAAOmrb,GAAYC,IAAcC,CACnC,GACF,CCqc4CC,CAAiB,CACnDhwpB,MAAOA,EACPjtP,OAAQ274B,EACRv5e,QAASA,EACTjjtB,QAASA,EACTkp1B,SAAUA,EACVyyW,SAAUA,EACV/gc,UAAWA,IAGbz0f,GAAS,CACPu37B,aAAcA,EACdK,aAHiBN,EAAY,IAAMC,EAInCM,cAAc,EACd931C,KAAM,oBAGJ20jB,GACFA,EAAYziiB,EArBd,CAuBF,IAAGzX,OAAM,SAAU7nB,GACjB,OAAOyk2C,GAAQzk2C,EACjB,GAEJ,GAAG,CAAC4i2C,EAAmB7gyB,EAAa0iyB,GAAShB,EAAsBC,EAAYv5e,EAASjjtB,EAASkp1B,EAAUyyW,EAAU/gc,IACjHqjc,IAAe,IAAAx8b,cAAY,SAAUrp4B,GACvCA,EAAMmnF,iBACNnnF,EAAMy/yC,UACN17tC,GAAgB/jF,GAChB,IAAI8l0C,EAAWlD,EAAe5i0C,GAE9B,GAAI8l0C,GAAY9l0C,EAAMy0kB,aACpB,IACEz0kB,EAAMy0kB,aAAasxvB,WAAa,MAClC,CAAE,MAAOC,GAAU,CASrB,OAJIF,GAAYtC,GACdA,EAAWxj0C,IAGN,CACT,GAAG,CAACwj0C,EAAYW,IACZ8B,IAAgB,IAAA58b,cAAY,SAAUrp4B,GACxCA,EAAMmnF,iBACNnnF,EAAMy/yC,UACN17tC,GAAgB/jF,GAEhB,IAAIkm0C,EAAUjB,GAAe3j0C,QAAQlT,QAAO,SAAU/c,GACpD,OAAOqz1C,EAAQpj0C,SAAWoj0C,EAAQpj0C,QAAQnD,SAAS9sB,EACrD,IAGI801C,EAAYD,EAAQnk2C,QAAQi+B,EAAM3uB,SAEnB,IAAf801C,GACFD,EAAQ1h1C,OAAO2h1C,EAAW,GAG5BlB,GAAe3j0C,QAAU4k0C,EAErBA,EAAQtk2C,OAAS,IAIrBmsa,GAAS,CACPjga,KAAM,kBACN831C,cAAc,EACdN,cAAc,EACdK,cAAc,IAGZ/C,EAAe5i0C,IAAU6iiB,GAC3BA,EAAY7iiB,GAEhB,GAAG,CAAC0k0C,EAAS7hyB,EAAashyB,IACtBiC,IAAW,IAAA/8b,cAAY,SAAU3zN,EAAO11qB,GAC1C,IAAIq64B,EAAgB,GAChBgsb,EAAiB,GACrB3wpB,EAAMjvrB,SAAQ,SAAU2z5B,GACtB,IACIksb,EAAiB,EADD7D,EAAarob,EAAMgqb,GACY,GAC/CmB,EAAWe,EAAe,GAC1BC,EAAcD,EAAe,GAG7BE,EAAkB,EADD7D,EAAcvob,EAAMvvD,EAASjjtB,GACG,GACjD49rC,EAAYgB,EAAgB,GAC5BC,EAAYD,EAAgB,GAE5Bf,EAAejjc,EAAYA,EAAU4X,GAAQ,KAEjD,GAAImrb,GAAYC,IAAcC,EAC5Bprb,EAAcj36B,KAAKg36B,OACd,CACL,IAAI5tlB,EAAS,CAAC+5gC,EAAaE,GAEvBhB,IACFj5gC,EAASA,EAAOjpV,OAAOki2C,IAGzBY,EAAejj2C,KAAK,CAClBg36B,KAAMA,EACN5tlB,OAAQA,EAAOp+T,QAAO,SAAU1tB,GAC9B,OAAOA,CACT,KAEJ,CACF,MAEKow/B,GAAYz2E,EAAcz46B,OAAS,GAAKkv/B,GAAYyyW,GAAY,GAAKlpb,EAAcz46B,OAAS2h2C,KAE/Flpb,EAAc5z5B,SAAQ,SAAU2z5B,GAC9Bisb,EAAejj2C,KAAK,CAClBg36B,KAAMA,EACN5tlB,OAAQ,CAACg2gC,IAEb,IACAnob,EAAc715B,OAAO,IAGvBupZ,GAAS,CACPssgB,cAAeA,EACfgsb,eAAgBA,EAChBv41C,KAAM,aAGJ211C,GACFA,EAAOppb,EAAegsb,EAAgBrm0C,GAGpCqm0C,EAAezk2C,OAAS,GAAK+h2C,GAC/BA,EAAe0C,EAAgBrm0C,GAG7Bq64B,EAAcz46B,OAAS,GAAK8h2C,GAC9BA,EAAerpb,EAAer64B,EAElC,GAAG,CAAC+tY,GAAU+ilB,EAAUszW,EAAYv5e,EAASjjtB,EAAS27rC,EAAUE,EAAQC,EAAgBC,EAAgBnhc,IACpGkkc,IAAW,IAAAr9b,cAAY,SAAUrp4B,GACnCA,EAAMmnF,iBAENnnF,EAAMy/yC,UACN17tC,GAAgB/jF,GAChBil0C,GAAe3j0C,QAAU,GAErBsh0C,EAAe5i0C,IACjB99B,QAAQ2kB,QAAQy80C,EAAkBtj0C,IAAQr9B,MAAK,SAAU+ysB,GACnD8poB,EAAqBx/yC,KAAWmk0C,GAIpCiC,GAAS1wpB,EAAO11qB,EAClB,IAAGzX,OAAM,SAAU7nB,GACjB,OAAOyk2C,GAAQzk2C,EACjB,IAGFqta,GAAS,CACPjga,KAAM,SAEV,GAAG,CAACw11C,EAAmB8C,GAAUjB,GAAShB,IAEtCwC,IAAiB,IAAAt9b,cAAY,WAG/B,GAAIy7b,GAAoBxj0C,QAAxB,CACEysY,GAAS,CACPjga,KAAM,eAER021C,IAEA,IAAI5mzC,EAAO,CACTkz8B,SAAUA,EACV3+6B,MAAOmyxC,GAET7g2C,OAAOmj2C,mBAAmBhpzC,GAAMj7C,MAAK,SAAUm3X,GAC7C,OAAOwp+B,EAAkBxp+B,EAC3B,IAAGn3X,MAAK,SAAU+ysB,GAChB0wpB,GAAS1wpB,EAAO,MAChB3nS,GAAS,CACPjga,KAAM,eAEV,IAAGya,OAAM,SAAU7nB,GDjelB,IAAiB8D,KCmeJ9D,aDleEgyD,eAA4B,eAAXluD,EAAEyH,MAAyBzH,EAAEi4B,OAASj4B,EAAEmuD,YCmerE8xyC,EAAqB/j2C,GACrBqta,GAAS,CACPjga,KAAM,iBD3dX,SAAyBtJ,GAC9B,OAAOA,aAAakuD,eAA4B,kBAAXluD,EAAEyH,MAA4BzH,EAAEi4B,OAASj4B,EAAEqi2C,aAClF,CC2dmBC,CAAgBpm2C,IACzBok2C,GAAoBxj0C,SAAU,EAG1Bqj0C,EAASrj0C,SACXqj0C,EAASrj0C,QAAQ5+B,MAAQ,KACzBii2C,EAASrj0C,QAAQmyD,SAEjB0xwC,GAAQ,IAAIp80C,MAAM,mKAGpBo80C,GAAQzk2C,EAEZ,GAEF,MAEIik2C,EAASrj0C,UACXysY,GAAS,CACPjga,KAAM,eAER021C,IACAG,EAASrj0C,QAAQ5+B,MAAQ,KACzBii2C,EAASrj0C,QAAQmyD,QAErB,GAAG,CAACs6U,GAAUy27B,EAAoBC,EAAsBX,EAAgBsC,GAAUjB,GAASb,EAAaxzW,IAEpGi2W,IAAc,IAAA19b,cAAY,SAAUrp4B,GAEjC0k0C,EAAQpj0C,SAAYoj0C,EAAQpj0C,QAAQ0l0C,YAAYhn0C,EAAM3uB,UAIzC,MAAd2uB,EAAM5Z,KAA6B,UAAd4Z,EAAM5Z,KAAqC,KAAlB4Z,EAAM21f,SAAoC,KAAlB31f,EAAM21f,UAC9E31f,EAAMmnF,iBACNw/uC,MAEJ,GAAG,CAACjC,EAASiC,KAETM,IAAY,IAAA59b,cAAY,WAC1Bt7f,GAAS,CACPjga,KAAM,SAEV,GAAG,IACCo51C,IAAW,IAAA79b,cAAY,WACzBt7f,GAAS,CACPjga,KAAM,QAEV,GAAG,IAECq51C,IAAY,IAAA99b,cAAY,WACtB26b,IDhpBD,WACL,IAAInp0C,EAAYl5B,UAAUC,OAAS,QAAsB0tC,IAAjB3tC,UAAU,GAAmBA,UAAU,GAAK8B,OAAOm3B,UAAUC,UACrG,OAVF,SAAcA,GACZ,OAAsC,IAA/BA,EAAU94B,QAAQ,UAAqD,IAAnC84B,EAAU94B,QAAQ,WAC/D,CAQSql2C,CAAKvs0C,IANd,SAAgBA,GACd,OAAuC,IAAhCA,EAAU94B,QAAQ,QAC3B,CAI4Bsl2C,CAAOxs0C,EACnC,CCopBQys0C,GACFlg1C,WAAWu/0C,GAAgB,GAE3BA,KAEJ,GAAG,CAAC3C,EAAS2C,KAETY,GAAiB,SAAwB901C,GAC3C,OAAOo/V,EAAW,KAAOp/V,CAC3B,EAEI+01C,GAAyB,SAAgC/01C,GAC3D,OAAOwx1C,EAAa,KAAOsD,GAAe901C,EAC5C,EAEIg11C,GAAqB,SAA4Bh11C,GACnD,OAAOyx1C,EAAS,KAAOqD,GAAe901C,EACxC,EAEIsxG,GAAkB,SAAyB/jF,GACzCmk0C,GACFnk0C,EAAM+jF,iBAEV,EAEI2jvC,IAAe,IAAA13zC,UAAQ,WACzB,OAAO,WACL,IAAIolL,EAAQzzN,UAAUC,OAAS,QAAsB0tC,IAAjB3tC,UAAU,GAAmBA,UAAU,GAAK,CAAC,EAC7Egm2C,EAAevyoC,EAAMwyoC,OACrBA,OAA0B,IAAjBD,EAA0B,MAAQA,EAC3C5j1B,EAAO3uT,EAAM2uT,KACb0V,EAAYrkU,EAAMqkU,UAClBkkI,EAAUvoc,EAAMuoc,QAChB0zqB,EAASj8mC,EAAMi8mC,OACf9xyC,EAAU61L,EAAM71L,QAChBkjiB,EAAcrtW,EAAMqtW,YACpB+gyB,EAAapuoC,EAAMouoC,WACnB3gyB,EAAcztW,EAAMytW,YACpB4gyB,EAASruoC,EAAMquoC,OACf34nC,EAAO02K,GAAyBpsL,EAAO6toC,GAE3C,OAAO,GAAc,GAAc,GAAgB,CACjDxp0B,UAAW+t0B,GAAuB1E,EAAqBrp0B,EAAWst0B,KAClEppsB,QAAS6psB,GAAuB1E,EAAqBnlsB,EAASspsB,KAC9D51B,OAAQm2B,GAAuB1E,EAAqBzxB,EAAQ61B,KAC5D3n0C,QAASgo0C,GAAezE,EAAqBvj0C,EAAS4n0C,KACtD1kyB,YAAaglyB,GAAmB3E,EAAqBrgyB,EAAa2iyB,KAClE5B,WAAYiE,GAAmB3E,EAAqBU,EAAYqC,KAChEhjyB,YAAa4kyB,GAAmB3E,EAAqBjgyB,EAAaojyB,KAClExC,OAAQgE,GAAmB3E,EAAqBW,EAAQiD,KACxD3i1B,KAAsB,iBAATA,GAA8B,KAATA,EAAcA,EAAO,gBACtD6j1B,EAAQlD,GAAW7y/B,GAAaoy/B,EAE/B,CAAC,EAF2C,CAC9Cr80B,SAAU,IACH98S,EACX,CACF,GAAG,CAAC45nC,EAASqC,GAAaE,GAAWC,GAAUC,GAAW/B,GAAeS,GAAcI,GAAeS,GAAUzC,EAAYC,EAAQry/B,IAChIg2/B,IAAsB,IAAAx+b,cAAY,SAAUrp4B,GAC9CA,EAAM+jF,iBACR,GAAG,IACC+jvC,IAAgB,IAAA93zC,UAAQ,WAC1B,OAAO,WACL,IAAIigN,EAAQtuP,UAAUC,OAAS,QAAsB0tC,IAAjB3tC,UAAU,GAAmBA,UAAU,GAAK,CAAC,EAC7Eom2C,EAAe93mC,EAAM23mC,OACrBA,OAA0B,IAAjBG,EAA0B,MAAQA,EAC3CthxC,EAAWwpK,EAAMxpK,SACjBlnD,EAAU0wN,EAAM1wN,QAChBurM,EAAO02K,GAAyBvxJ,EAAOizmC,GAc3C,OAAO,GAAc,GAAc,CAAC,EAZnB,GAAgB,CAC/Bz64B,OAAQ274B,EACRtzW,SAAUA,EACVhj/B,KAAM,OACN8H,MAAO,CACLC,QAAS,QAEX4wE,SAAU8gxC,GAAezE,EAAqBr8wC,EAAUigxC,KACxDnn0C,QAASgo0C,GAAezE,EAAqBvj0C,EAASso0C,KACtDjg1B,UAAW,GACVgg1B,EAAQjD,IAEyC75nC,EACtD,CACF,GAAG,CAAC65nC,EAAUl84B,EAAQqoiB,EAAU41W,GAAU70/B,IAC1C,OAAO,GAAc,GAAc,CAAC,EAAG3kW,GAAQ,CAAC,EAAG,CACjDm4mB,UAAWA,KAAcxzQ,EACzB61/B,aAAcA,GACdI,cAAeA,GACfpD,QAASA,EACTC,SAAUA,EACV1u1C,KAAMsx1C,GAAeZ,KAEzB,CA31BqBqB,CAFNxm9B,GAAyB7yM,EAAMgjK,IAGxC17V,EAAOmt1C,EAAant1C,KACpBu4B,EAAQgzW,GAAyB4h9B,EAAc5r8B,GAQnD,OANA,IAAA18J,qBAAoB33N,GAAK,WACvB,MAAO,CACLltB,KAAMA,EAEV,GAAG,CAACA,IAEgB,gBAAoB,EAAAirP,SAAU,KAAM3/N,EAAS,GAAc,GAAc,CAAC,EAAGiN,GAAQ,CAAC,EAAG,CAC3Gv4B,KAAMA,KAEV,IACAkt1C,GAASx5rC,YAAc,WAEvB,IAAIluB,GAAe,CACjBo2N,UAAU,EACVyx/B,kBF5DK,SAAmB36wC,GACtB,OAAOh8D,EAAUprB,UAAM,OAAQ,GAAQ,WACnC,OAAOqrB,EAAYrrB,MAAM,SAAU22B,GAC/B,OAAIsuO,EAAS79K,IAcd69K,EAdqC79K,EAAI8rhB,cAC7B,CAAC,EAAc6svB,EAAqB34wC,EAAI8rhB,aAAc9rhB,EAAI76E,OAgBtE04P,EADU9jQ,EAbYimF,IAcH69K,EAAS9jQ,EAAM2O,QAbtB,CAAC,EAAc8v1C,EAAcx4wC,IAE/B3nF,MAAMkS,QAAQy1E,IAAQA,EAAI3+C,OAAM,SAAU2Y,GAAQ,MAAO,YAAaA,GAAgC,mBAAjBA,EAAK0+yC,OAAwB,IAChH,CAAC,EAAcD,EAAiBz4wC,IAEpC,CAAC,EAAc,IAOlC,IAAqBjmF,CANb,GACJ,GACJ,EE8CEklK,QAAStmG,IACTupzB,QAAS,EACTimI,UAAU,EACVyyW,SAAU,EACVQ,uBAAuB,EACvBC,SAAS,EACTC,YAAY,EACZC,QAAQ,EACRC,sBAAsB,EACtB3hc,UAAW,KACXshc,gBAAgB,EAChBlS,WAAW,GAEbuR,GAAS1ntC,aAAeA,GACxB0ntC,GAASn1tC,UAAY,CAgBnBzsG,SAAU,SASVknb,OAAQ,aAAmB,YAAkB,aAK7CqoiB,SAAU,SAKVizW,sBAAuB,SAKvBC,QAAS,SAMTC,WAAY,SAKZC,OAAQ,SAKRC,qBAAsB,SAKtBt5e,QAAS,WAKTjjtB,QAAS,WAMT27rC,SAAU,WAKV1x/B,SAAU,SAOVyx/B,kBAAmB,SAKnBM,mBAAoB,SAKpBC,iBAAkB,SAMlBC,eAAgB,SAKhBlS,UAAW,SAOXnvxB,YAAa,SAObI,YAAa,SAOb2gyB,WAAY,SAgCZC,OAAQ,SASRC,eAAgB,SAShBC,eAAgB,SAOhB/kvC,QAAS,SAOT4jzB,UAAW,UAEb,YAsEA,IAAIjxf,GAAe,CACjB8zM,WAAW,EACXw/uB,oBAAoB,EACpBe,cAAc,EACdN,cAAc,EACdK,cAAc,EACdtrb,cAAe,GACfgsb,eAAgB,IAojBlB,SAASz27B,GAAQ1ia,EAAO2/D,GAEtB,OAAQA,EAAO/+D,MACb,IAAK,QACH,OAAO,GAAc,GAAc,CAAC,EAAGZ,GAAQ,CAAC,EAAG,CACjDm4mB,WAAW,IAGf,IAAK,OACH,OAAO,GAAc,GAAc,CAAC,EAAGn4mB,GAAQ,CAAC,EAAG,CACjDm4mB,WAAW,IAGf,IAAK,aACH,OAAO,GAAc,GAAc,CAAC,EAAG9zM,IAAe,CAAC,EAAG,CACxDsz7B,oBAAoB,IAGxB,IAAK,cACH,OAAO,GAAc,GAAc,CAAC,EAAG331C,GAAQ,CAAC,EAAG,CACjD231C,oBAAoB,IAGxB,IAAK,kBACH,OAAO,GAAc,GAAc,CAAC,EAAG331C,GAAQ,CAAC,EAAG,CACjD041C,aAAc/4xC,EAAO+4xC,aACrBN,aAAcz4xC,EAAOy4xC,aACrBK,aAAc94xC,EAAO84xC,eAGzB,IAAK,WACH,OAAO,GAAc,GAAc,CAAC,EAAGz41C,GAAQ,CAAC,EAAG,CACjDmt6B,cAAext2B,EAAOwt2B,cACtBgsb,eAAgBx5xC,EAAOw5xC,iBAG3B,IAAK,QACH,OAAO,GAAc,CAAC,EAAG907B,IAE3B,QACE,OAAOrka,EAEb,CAEA,SAASm3C,KAAQ,+BCp8BjBrgD,EAAQ,EAYR,SAAiBm/B,GACf,IAAI8k0C,GAAM,EAAIC,EAAOro0C,UAGjBso0C,EAAa10+B,GADD,EAAIy0+B,EAAO7umC,UAAU,GACM,GAEvC+umC,GADUD,EAAW,GACRA,EAAW,IAMxBE,EAAa50+B,GAJA,EAAIy0+B,EAAO7umC,UAAU,CACpC/4N,MAAO,KACPC,OAAQ,OAEkC,GACxCpa,EAAOki1C,EAAW,GAClBC,EAAUD,EAAW,GAwCzB,OAtCA,EAAIH,EAAOrl0C,YAAW,WAapB,IAAI0l0C,EAAY9k2C,OAAO8gG,gBAAkB,WAGzC,OADA0jwC,EAAI3m0C,QAAU,IAAIin0C,GAdlB,SAAiBvq1C,GACf,IAAIwq1C,EAAwBxq1C,EAAQ,GAAGs4b,YACnCh2a,EAAQko0C,EAAsBlo0C,MAC9BC,EAASio0C,EAAsBjo0C,OACnC+n0C,GAAQ,SAAUjm2C,GAChB,OAAOA,EAAEi+B,QAAUA,GAASj+B,EAAEk+B,SAAWA,EAAS,CAChDD,MAAOA,EACPC,OAAQA,GACNl+B,CACN,GACF,IAKO,WACL,OAAO4l2C,EAAI3m0C,QAAQgxC,YACrB,CACF,GAAG,KACH,EAAI41xC,EAAOrl0C,YAAW,WACpB,IAMI8f,EAAOxf,EAAI7B,QAOf,OALIqhB,IACFslzC,EAAI3m0C,QAAQ+wC,QAAQ1vB,GACpBl/C,OAAO2jB,YAVS,WAChB,OAAOgh1C,GAAW,SAAUhm2C,GAC1B,OAAOA,EAAI,CACb,GACF,GAMiC,IAG1B,WACL,OAAOugD,GAAQslzC,EAAI3m0C,QAAQk7uB,UAAU75tB,EACvC,CACF,GAAG,CAACslzC,EAAK9k0C,IACFhd,CACT,EAjEA,IAAI+h1C,EAAS,EAAQ,OAErB,SAASz0+B,EAAezzJ,EAAK79N,GAAK,OAMlC,SAAyB69N,GAAO,GAAIh/N,MAAMkS,QAAQ8sN,GAAM,OAAOA,CAAK,CAN3B2sJ,CAAgB3sJ,IAIzD,SAA+BA,EAAK79N,GAAK,IAAIyqX,EAAO,GAAQp5W,GAAK,EAAUopD,GAAK,EAAW9yD,OAAKwlC,EAAW,IAAM,IAAK,IAAiCu6D,EAA7B7pF,EAAKggN,EAAI/8N,OAAOC,cAAmBsQ,GAAMq2F,EAAK7pF,EAAG1d,QAAQG,QAAoBmqX,EAAKxpX,KAAKymG,EAAGnnG,QAAYP,GAAKyqX,EAAKhrX,SAAWO,GAA3DqR,GAAK,GAAkE,CAAE,MAAOqlC,GAAO+jB,GAAK,EAAM9yD,EAAK+uC,CAAK,CAAE,QAAU,IAAWrlC,GAAsB,MAAhBwM,EAAW,QAAWA,EAAW,QAAK,CAAE,QAAU,GAAI48C,EAAI,MAAM9yD,CAAI,CAAE,CAAE,OAAO8iX,CAAM,CAJvVC,CAAsB7sJ,EAAK79N,IAE5F,WAA8B,MAAM,IAAIf,UAAU,uDAAyD,CAFT0rX,EAAoB,+DCO3G27+B,EAAgB,SAAUz2yC,GAEjC,OADiBA,EAAM7rD,MAAM,SACX8uB,QAAO,SAAU4oQ,EAAK35R,GACpC,IAAIg0B,EAnB0B,SAAUr2B,EAAGjB,GAC/C,IAAI+D,EAAsB,mBAAX1B,QAAyBpB,EAAEoB,OAAOC,UACjD,IAAKyB,EAAG,OAAO9C,EACf,IAAmBP,EAAYZ,EAA3ByB,EAAIwC,EAAExD,KAAKU,GAAOgV,EAAK,GAC3B,IACI,WAAc,IAANjW,GAAgBA,KAAM,MAAQU,EAAIa,EAAEG,QAAQG,MAAMoU,EAAGzT,KAAK9B,EAAEoB,MACxE,CACA,MAAOW,GAAS3C,EAAI,CAAE2C,MAAOA,EAAS,CACtC,QACI,IACQ/B,IAAMA,EAAEmB,OAASkC,EAAIxC,EAAU,SAAIwC,EAAExD,KAAKgB,EAClD,CACA,QAAU,GAAIzB,EAAG,MAAMA,EAAE2C,KAAO,CACpC,CACA,OAAOwT,CACX,CAIiBsyrB,CAAOjlsB,EAAEiC,MAAM,SAAU,GAAIigB,EAAM8R,EAAG,GAAIx1B,EAAQw1B,EAAG,GAM9D,OALI9R,GAAO1jB,IACPm7R,EAAIz3Q,EAAIpY,QAAQ,UAAU,SAAU061C,EAAKC,GAAM,OAAOA,EAAGx2yC,aAAe,KAAMzrB,OAAOmH,MAAMnH,OAAOhkC,IAC5FA,EACAgkC,OAAOhkC,IAEVm7R,CACX,GAAG,CAAC,EACR,EAWW+qkC,EAAmB,CAC1B,KACA,MACA,WACA,KACA,KACA,SACA,MACA,QACA,OACA,WACA,OACA,KACA,QACA,SACA,QACA,QACA,QACA,QACA,KACA,KACA,OAUOC,EAAwB,CAE/B,iBAAkB,gBAClBC,cAAe,gBACfC,UAAW,YACXC,gBAAiB,kBACjBC,eAAgB,iBAChB97wC,aAAc,eACd+7wC,YAAa,cACbC,UAAW,YACXC,SAAU,WACVC,SAAU,WACVC,YAAa,cACbC,YAAa,cACbC,QAAS,UACT9zkC,MAAO,YACP+zkC,QAAS,UACTC,UAAW,YACXC,QAAS,UACTC,gBAAiB,kBACjBC,YAAa,cACbC,aAAc,eACdC,YAAa,cACbC,wBAAyB,0BACzBnnB,SAAU,WACVonB,eAAgB,iBAChBC,aAAc,eACdC,QAAS,UACTjg2C,IAAK,UACLkg2C,WAAY,aACZC,WAAY,aACZC,YAAa,cACbC,eAAgB,iBAChBC,WAAY,aACZC,YAAa,cACbC,SAAU,WACVC,QAAS,UACTC,UAAW,YACX,aAAc,YACd54nC,KAAM,OACN64nC,UAAW,YACXC,UAAW,YACXC,OAAQ,SACRC,SAAU,WACVC,QAAS,UACTC,UAAW,YACXC,SAAU,WACVC,UAAW,YACXC,QAAS,UACTC,YAAa,cACbC,aAAc,eACdC,UAAW,YACXC,WAAY,aACZC,UAAW,YACXC,SAAU,WACVC,WAAY,aACZC,YAAa,cACbC,WAAY,aACZC,SAAU,WACVC,eAAgB,iBAChBC,QAAS,UACTC,WAAY,aACZC,OAAQ,SACRC,QAAS,UACTC,OAAQ,SACRC,SAAU,WACVC,cAAe,gBACfC,OAAQ,SAERC,aAAc,eACd,gBAAiB,eACjBC,kBAAmB,oBACnB,qBAAsB,oBACtBC,aAAc,eACdC,WAAY,aACZ,cAAe,aACfC,cAAe,gBACfC,cAAe,gBACfC,YAAa,cACbC,cAAe,gBACfC,cAAe,gBACf,iBAAkB,gBAClBC,YAAa,cACbC,SAAU,WACVC,UAAW,YACX,aAAc,YACdC,SAAU,WACV,YAAa,WACbC,cAAe,gBACfC,SAAU,WACV,YAAa,WACbC,mBAAoB,qBACpB,sBAAuB,qBACvBC,0BAA2B,4BAC3B,8BAA+B,4BAC/BC,aAAc,eACd,gBAAiB,eACjBC,eAAgB,iBAChB,kBAAmB,iBACnBC,kBAAmB,oBACnBC,iBAAkB,mBAClBC,gBAAiB,kBACjBC,iBAAkB,mBAClB,oBAAqB,mBACrBC,SAAU,WACVC,iBAAkB,mBAClB,oBAAqB,mBACrBC,0BAA2B,4BAC3BC,YAAa,cACb,eAAgB,cAChBC,SAAU,WACV,YAAa,WACbC,UAAW,YACXC,YAAa,cACbC,aAAc,eACd,gBAAiB,eACjBC,WAAY,aACZ,cAAe,aACfC,WAAY,aACZ,cAAe,aACfC,SAAU,WACV,YAAa,WACbC,eAAgB,iBAChB,mBAAoB,iBACpBC,YAAa,cACb,eAAgB,cAChBC,UAAW,YACX,aAAc,YACdC,YAAa,cACb,eAAgB,cAChBC,WAAY,aACZ,cAAe,aACfC,UAAW,YACX,aAAc,YACdC,2BAA4B,6BAC5B,+BAAgC,6BAChCC,yBAA0B,2BAC1B,6BAA8B,2BAC9BC,SAAU,WACVC,kBAAmB,oBACnBC,cAAe,gBACfC,UAAW,YACX,cAAe,YACfC,aAAc,eACd,iBAAkB,eAClBC,eAAgB,iBAChB,kBAAmB,iBACnBC,aAAc,eACdC,iBAAkB,mBAClBC,UAAW,YACXC,WAAY,aACZC,SAAU,WACVC,aAAc,eACdC,cAAe,gBACf,iBAAkB,gBAClBC,cAAe,gBACf,iBAAkB,gBAClBC,kBAAmB,oBACnBC,UAAW,YACX,aAAc,YACdC,aAAc,eACdC,UAAW,YACX,aAAc,YACdC,YAAa,cACb,eAAgB,cAChBC,YAAa,cACbC,YAAa,cACbC,iBAAkB,mBAClBC,UAAW,YACXC,WAAY,aACZC,iBAAkB,mBAClB,oBAAqB,mBACrBC,kBAAmB,oBACnB,qBAAsB,oBACtBC,WAAY,aACZ,cAAe,aACf,WAAY,UACZC,WAAY,aACZC,oBAAqB,sBACrBC,iBAAkB,mBAClBC,aAAc,eACdC,cAAe,gBACf,iBAAkB,gBAClBC,UAAW,YACXC,UAAW,YACXC,UAAW,YACXC,cAAe,gBACfC,oBAAqB,sBACrBC,eAAgB,iBAChBC,KAAM,OACNC,KAAM,OACNC,gBAAiB,kBACjB,mBAAoB,kBACpBC,YAAa,cACbC,UAAW,YACXC,mBAAoB,qBACpBC,iBAAkB,mBAClBC,eAAgB,iBAChB,kBAAmB,iBACnBC,iBAAkB,mBAClBC,iBAAkB,mBAClBC,aAAc,eACdC,YAAa,cACbC,aAAc,eACdC,YAAa,cACbC,UAAW,YACX,aAAc,YACdC,YAAa,cACb,eAAgB,cAChBC,sBAAuB,wBACvB,yBAA0B,wBAC1BC,uBAAwB,yBACxB,0BAA2B,yBAC3BC,gBAAiB,kBACjB,mBAAoB,kBACpBC,iBAAkB,mBAClB,oBAAqB,mBACrBC,cAAe,gBACf,iBAAkB,gBAClBC,eAAgB,iBAChB,kBAAmB,iBACnBC,iBAAkB,mBAClB,oBAAqB,mBACrBC,YAAa,cACb,eAAgB,cAChBC,cAAe,gBACf,iBAAkB,gBAClBC,+BAAgC,iCAChCC,yBAA0B,2BAC1BC,aAAc,eACdC,eAAgB,iBAChBC,YAAa,cACbC,QAAS,UACTC,QAAS,UACTC,WAAY,aACZ,cAAe,aACfC,eAAgB,iBAChB,kBAAmB,iBACnBC,WAAY,aACZC,cAAe,gBACf,iBAAkB,gBAClBC,kBAAmB,oBACnB,qBAAsB,oBACtBC,mBAAoB,qBACpB,sBAAuB,qBACvBC,YAAa,cACb,eAAgB,cAChBC,aAAc,eACd,gBAAiB,eACjBC,WAAY,aACZ,eAAgB,aAChBC,aAAc,eACdC,YAAa,cACb,eAAgB,cAChBC,aAAc,eACd,gBAAiB,eACjBC,SAAU,WACV,aAAc,WACdC,YAAa,cACb,gBAAiB,cACjBC,YAAa,cACb,gBAAiB,cACjBC,SAAU,WACV,YAAa,WACbC,aAAc,eACd,gBAAiB,eACjBC,QAAS,UACTC,WAAY,aACZC,cAAe,gBACf,iBAAkB,gBAClBC,YAAa,cACb,eAAgB,cAChBC,YAAa,cACb,eAAgB,cAChBC,iBAAkB,mBAClBC,QAAS,UACT,WAAY,UACZC,aAAc,eACd,gBAAiB,eACjBC,aAAc,eACd,gBAAiB,eACjBC,UAAW,YACX,aAAc,YACdC,UAAW,YACX,aAAc,YACdC,UAAW,YACX,aAAc,YACdC,WAAY,aACZ,cAAe,aACfC,UAAW,YACX,aAAc,YACdC,QAAS,UACT,WAAY,UACZC,QAAS,UACT,WAAY,UACZ,YAAa,WACbC,WAAY,aACZ,cAAe,aACfC,SAAU,WACVC,iBAAkB,mBAClBC,WAAY,aAEZC,OAAQ,SACRC,SAAU,WACV/6O,QAAS,UACTg7O,cAAe,gBACfC,cAAe,gBACfC,OAAQ,SACRjvN,UAAW,YACXkvN,YAAa,cACbC,WAAY,aACZC,YAAa,cACbC,WAAY,aACZnrJ,YAAa,cACborJ,OAAQ,SACRtl1C,QAAS,UACTul1C,QAAS,UACTzzB,QAAS,UACT0zB,UAAW,YACXC,UAAW,YACXC,WAAY,aACZC,QAAS,UACT3k1C,OAAQ,SACRompC,YAAa,cACb0pB,aAAc,eACdG,aAAc,eACd9pB,YAAa,cACboyC,WAAY,aACZF,YAAa,cACbusJ,UAAW,YACXC,SAAU,WACVC,SAAU,WACVC,cAAe,gBACfC,WAAY,aACZC,YAAa,cACbC,aAAc,eACdC,QAAS,WCrZT7/0C,EAAsC,WAStC,OARAA,EAAW12B,OAAOa,QAAU,SAASf,GACjC,IAAK,IAAI0B,EAAGF,EAAI,EAAGvB,EAAIe,UAAUC,OAAQO,EAAIvB,EAAGuB,IAE5C,IAAK,IAAIkC,KADThC,EAAIV,UAAUQ,GACOtB,OAAOI,UAAUC,eAAeC,KAAKkB,EAAGgC,KACzD1D,EAAE0D,GAAKhC,EAAEgC,IAEjB,OAAO1D,CACX,EACO42B,EAASz1B,MAAMP,KAAMI,UAChC,EACI,EAAkC,SAAUE,EAAGjB,GAC/C,IAAI+D,EAAsB,mBAAX1B,QAAyBpB,EAAEoB,OAAOC,UACjD,IAAKyB,EAAG,OAAO9C,EACf,IAAmBP,EAAYZ,EAA3ByB,EAAIwC,EAAExD,KAAKU,GAAOgV,EAAK,GAC3B,IACI,WAAc,IAANjW,GAAgBA,KAAM,MAAQU,EAAIa,EAAEG,QAAQG,MAAMoU,EAAGzT,KAAK9B,EAAEoB,MACxE,CACA,MAAOW,GAAS3C,EAAI,CAAE2C,MAAOA,EAAS,CACtC,QACI,IACQ/B,IAAMA,EAAEmB,OAASkC,EAAIxC,EAAU,SAAIwC,EAAExD,KAAKgB,EAClD,CACA,QAAU,GAAIzB,EAAG,MAAMA,EAAE2C,KAAO,CACpC,CACA,OAAOwT,CACX,EACI21C,EAAgD,SAAUhyC,EAAI8E,EAAMmtC,GACpE,GAAIA,GAA6B,IAArB9qD,UAAUC,OAAc,IAAK,IAA4BiV,EAAxB1U,EAAI,EAAG4B,EAAIub,EAAK1d,OAAYO,EAAI4B,EAAG5B,KACxE0U,GAAQ1U,KAAKmd,IACRzI,IAAIA,EAAK7V,MAAMC,UAAUqC,MAAMnC,KAAKme,EAAM,EAAGnd,IAClD0U,EAAG1U,GAAKmd,EAAKnd,IAGrB,OAAOqY,EAAGjX,OAAOsT,GAAM7V,MAAMC,UAAUqC,MAAMnC,KAAKme,GACtD,EAwEO,SAAS+31C,EAAgBrlzC,EAAOtnC,GACnC,IAAIwN,EAEJ,QADgB,IAAZxN,IAAsBA,EAAU,CAAC,KAChCsnC,GAAWA,aAAiB84B,MAC7B,OAAO,KAEX,IAZeyC,EAYXx+B,EAAKrkC,EAAQooZ,QAASA,OAAiB,IAAP/jX,EAAgB,GAAKA,EAAInoC,EAAK8D,EAAQnM,MAAOA,OAAe,IAAPqI,EAAgB,EAAIA,EAAIg2C,EAAKlyC,EAAQumC,MAAOA,OAAe,IAAP2L,EAAgB,EAAIA,EAAI06yC,EAAY5s1C,EAAQ4s1C,UACrL1sxC,EAAO54B,EACP5rC,EAAM,GAAG7iB,OAAO0tD,EAAO,KAAK1tD,OAAOgb,GACnCwG,EAAS,GAyBb,GAxBIuy1C,GAAuB,IAAVrmzC,IACb7qC,EAAM,GAAG7iB,ODzFV,SAAsB3B,QACV,IAAXA,IAAqBA,EAAS,GAGlC,IAFA,IACImjB,EAAS,GACJxG,EAAQ3c,EAAQ2c,EAAQ,IAAKA,EAClCwG,GAHa,iEAGQ3gB,KAAKogD,MAAsB,GAAhBpgD,KAAKwF,WAEzC,OAAOmb,CACX,CCiFwB0gB,GAAgB,KAAKliC,OAAO6iB,IAG5CplB,MAAMkS,QAAQ4/Z,IACdA,EAAQrsZ,SAAQ,SAAUomD,GAClBA,EAAOq2F,UAAUt4E,EAAMxkE,EAAK6qC,KACF,mBAAf4b,EAAO0qyC,OACd3sxC,EAAO/d,EAAO0qyC,IAAI3sxC,EAAMxkE,EAAK6qC,cACP65B,OAClBF,EAAO54B,IAQY,mBAAhB6a,EAAO2xL,MACdz5O,EAAO3hB,KAAKypE,EAAO2xL,KAAK5zK,EAAMxkE,EAAK6qC,IAG/C,IAEAlsC,EAAOnjB,OACP,OAAOmjB,EAEX,OAAQ6lE,EAAKC,UACT,KAAK,EAED,OAAO,iBA9CA0C,EA8C8B3C,EAAK2C,SA7C9C,qBAAqB3gF,KAAK2gF,GACnBA,EAEJA,EAASz8E,eAlEpB,SAAyB85E,EAAM4sxC,GAC3B,IAAI7jwC,EAAa,CACbvtF,IAAKox1C,GAGT,GAAI5sxC,aAAgBwI,QAAS,CACzB,IAAIqkxC,EAAiB7sxC,EAAKwC,aAAa,SACnCqqxC,IACA9jwC,EAAWxiB,UAAYsmxC,GAE3BjrzC,EAAc,GAAI,EAAOo+B,EAAK+oB,aAAa,GAAOltF,SAAQ,SAAUviB,GAChE,OAAQA,EAAE+H,MAEN,IAAK,QACD,MACJ,IAAK,QACD0nG,EAAWzvG,EAAE+H,MAAQw81C,EAAcvk2C,EAAExB,OACrC,MACJ,IAAK,kBACL,IAAK,sBACL,IAAK,QACL,IAAK,YACL,IAAK,WACL,IAAK,UACL,IAAK,WACL,IAAK,UACL,IAAK,QACL,IAAK,WACL,IAAK,iBACL,IAAK,SACL,IAAK,QACL,IAAK,YACL,IAAK,OACL,IAAK,WACL,IAAK,QACL,IAAK,WACL,IAAK,aACL,IAAK,OACL,IAAK,WACL,IAAK,WACL,IAAK,WACL,IAAK,WACL,IAAK,gBACDixG,EAAWk1vC,EAAsB3k2C,EAAE+H,OAAS/H,EAAE+H,OAAQ,EACtD,MACJ,QACI0nG,EAAWk1vC,EAAsB3k2C,EAAE+H,OAAS/H,EAAE+H,MAAQ/H,EAAExB,MAEpE,GACJ,CACA,OAAOixG,CACX,CAyDiEsogC,CAAgBrxhC,EAAMxkE,GAxDvF,SAAuBsx1C,EAAezmzC,EAAOvmC,GACzC,IAAI6W,EAAWirB,EAAc,GAAI,EAAOkrzC,IAAgB,GAAO9m1C,KAAI,SAAUg6D,EAAMrsE,GAC/E,OAAO841C,EAAgBzsxC,EAAMrzD,EAASA,EAAS,CAAC,EAAG7M,GAAU,CAAEnM,MAAOA,EAAO0yC,MAAOA,EAAQ,IAChG,IACK7iC,OAAO5Z,SACZ,OAAK+sB,EAAS3/B,OAGP2/B,EAFI,IAGf,CA+C6Fo20C,CAAc/sxC,EAAKW,WAAYt6B,EAAOvmC,IAE3H,KAAK,EAED,IAAIkt1C,GAAsC,QAAzB1/0C,EAAK0yD,EAAKijkC,iBAA8B,IAAP31nC,OAAgB,EAASA,EAAGpyB,aAAe,GAE7F,GAAI,QAAQ8G,KAAKgr2C,KAAc,iBAAiBhr2C,KAAKgr2C,GACjD,OAAO,KAGX,IAAKhtxC,EAAK3nD,WACN,OAAO200C,EAEX,IAAIC,EAAiBjtxC,EAAK3nD,WAAWsqD,SAASz8E,cAC9C,OAAI831C,EAAiBj51C,SAASko2C,IAEtB,KAAKjr2C,KAAKgr2C,IAEVhv1C,QAAQC,KAAK,qCAAqCtlB,OAAOs02C,EAAgB,mBAAmBt02C,OAAOq02C,EAAU,sBAE1G,MAEJA,EAOX,QACI,OAAO,KAGnB,CA4Be,SAASp6kB,EAAQxruB,EAAOtnC,GAEnC,YADgB,IAAZA,IAAsBA,EAAU,CAAC,GAChB,iBAAVsnC,EA7BR,SAA2BA,EAAOtnC,GAErC,QADgB,IAAZA,IAAsBA,EAAU,CAAC,IAChCsnC,GAA0B,iBAAVA,EACjB,OAAO,KAEX,IAAI95B,EAAKxN,EAAQot1C,SAAUA,OAAkB,IAAP5/0C,GAAwBA,EAAI62B,EAAKrkC,EAAQonE,SAAUA,OAAkB,IAAP/iC,EAAgB,WAAaA,EAAInoC,EAAK8D,EAAQ5c,KAAMA,OAAc,IAAP8Y,EAAgB,YAAcA,EAC7L,IACI,IAEIgkE,GAFS,IAAI40U,WACOC,gBAAgBztW,EAAOlkD,GACzBg1B,cAAcgvD,GACpC,KAAMlH,aAAgBE,MAClB,MAAM,IAAI1pF,UAAU,uBAExB,OAAI022C,EACOltxC,EAEJysxC,EAAgBzsxC,EAAMlgE,EACjC,CACA,MAAOrnB,GAMP,CACA,OAAO,IACX,CAIe002C,CAAkB/lzC,EAAOtnC,GAEhCsnC,aAAiB84B,KACVusxC,EAAgBrlzC,EAAOtnC,GAE3B,IACX,gBCxNWk5T,EAAS,CAChBo0hC,OAAQ,SACRC,OAAQ,SACRl19B,QAAS,UACTm19B,QAAS,UACTC,MAAO,QACPC,YAAa,eAEV,SAAStqI,IACZ,OAAO,EAAAA,SACX,CCXA,IACQ5/zB,EADJC,GACID,EAAgB,SAAUhqa,EAAGW,GAI7B,OAHAqpa,EAAgBrta,OAAOC,gBAClB,CAAEC,UAAW,cAAgBC,OAAS,SAAUkD,EAAGW,GAAKX,EAAEnD,UAAY8D,CAAG,GAC1E,SAAUX,EAAGW,GAAK,IAAK,IAAIR,KAAKQ,EAAOhE,OAAOI,UAAUC,eAAeC,KAAK0D,EAAGR,KAAIH,EAAEG,GAAKQ,EAAER,GAAI,EAC7F6pa,EAAchqa,EAAGW,EAC5B,EACO,SAAUX,EAAGW,GAChB,GAAiB,mBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIzD,UAAU,uBAAyBC,OAAOwD,GAAK,iCAE7D,SAAS8nD,IAAOprD,KAAKC,YAAc0C,CAAG,CADtCgqa,EAAchqa,EAAGW,GAEjBX,EAAEjD,UAAkB,OAAN4D,EAAahE,OAAOY,OAAOoD,IAAM8nD,EAAG1rD,UAAY4D,EAAE5D,UAAW,IAAI0rD,EACnF,GAEA,EAAsC,WAStC,OARA,EAAW9rD,OAAOa,QAAU,SAASf,GACjC,IAAK,IAAI0B,EAAGF,EAAI,EAAGvB,EAAIe,UAAUC,OAAQO,EAAIvB,EAAGuB,IAE5C,IAAK,IAAIkC,KADThC,EAAIV,UAAUQ,GACOtB,OAAOI,UAAUC,eAAeC,KAAKkB,EAAGgC,KACzD1D,EAAE0D,GAAKhC,EAAEgC,IAEjB,OAAO1D,CACX,EACO,EAASmB,MAAMP,KAAMI,UAChC,EACI,EAAkC,SAAUE,EAAGjB,GAC/C,IAAI+D,EAAsB,mBAAX1B,QAAyBpB,EAAEoB,OAAOC,UACjD,IAAKyB,EAAG,OAAO9C,EACf,IAAmBP,EAAYZ,EAA3ByB,EAAIwC,EAAExD,KAAKU,GAAOgV,EAAK,GAC3B,IACI,WAAc,IAANjW,GAAgBA,KAAM,MAAQU,EAAIa,EAAEG,QAAQG,MAAMoU,EAAGzT,KAAK9B,EAAEoB,MACxE,CACA,MAAOW,GAAS3C,EAAI,CAAE2C,MAAOA,EAAS,CACtC,QACI,IACQ/B,IAAMA,EAAEmB,OAASkC,EAAIxC,EAAU,SAAIwC,EAAExD,KAAKgB,EAClD,CACA,QAAU,GAAIzB,EAAG,MAAMA,EAAE2C,KAAO,CACpC,CACA,OAAOwT,CACX,EASWwh2C,EAAax32C,OAAOY,OAAO,MA6StC,QA5S+B,SAAUwoX,GAErC,SAASqu/B,EAAU9p0C,GACf,IAAIyf,EAAQg8T,EAAO9oX,KAAKI,KAAMitC,IAAUjtC,KAiGxC,OAhGA0sD,EAAMo9C,UAAW,EACjBp9C,EAAMsqzC,iBAAmB,SAAUt+wC,GAER,iBAAZA,EAIXhsC,EAAMi2X,YAAYjqV,GAHdhsC,EAAMuqzC,WAAWv+wC,EAIzB,EACAhsC,EAAMuqzC,WAAa,SAAUv+wC,GAErBhsC,EAAMo9C,UACNp9C,EAAMg+E,SAAS,CACXhyC,QAASA,EACTjzE,OAAQ48T,EAAOq0hC,QAChBhqzC,EAAM4sS,WAEjB,EACA5sS,EAAMi2X,YAAc,SAAU7gb,GAC1B,IAAIu7G,EAAU3wD,EAAMzf,MAAMowE,QACtB53F,EAA2B,iCAAlB3jB,EAAMiwB,QAA6CswT,EAAOw0hC,YAAcx0hC,EAAOo0hC,OAExF/pzC,EAAMo9C,UACNp9C,EAAMg+E,SAAS,CAAEjlH,OAAQA,IAAU,WAER,mBAAZ43F,GACPA,EAAQv7G,EAEhB,GAER,EACA4qD,EAAMqY,QAAU,WACZ,IAAIpuC,EAAK+1B,EAAMzf,MAAOiq0C,EAAgBvg1C,EAAGug1C,cAAe5l1C,EAAeqF,EAAGrF,aAAc9c,EAAMmiB,EAAGniB,IACjG,IAII,OAHI0i2C,IACAJ,EAAWti2C,GAAO,CAAEkkF,QAAS,GAAIjzE,OAAQ48T,EAAOm/D,QAAShjW,MAAO,KAE7D+L,MAAM/1C,EAAK8c,GACblwB,MAAK,SAAUqtB,GAChB,IAAImpJ,EAAcnpJ,EAAS+B,QAAQrtB,IAAI,gBACiBg02C,EAA/C,GAAQv/rC,GAAe,IAAIhzK,MAAM,SAAU,GAAkB,GACtE,GAAI6pB,EAAShJ,OAAS,IAClB,MAAM,IAAI+B,MAAM,aAEpB,IAAK,CAAC,gBAAiB,cAAcmgB,MAAK,SAAUhlC,GAAK,OAAOw02C,EAAS322C,QAAQmC,IAAM,CAAG,IACtF,MAAM,IAAI6kB,MAAM,6BAA+B2v1C,GAEnD,OAAO1o1C,EAAS2B,MACpB,IACKhvB,MAAK,SAAUs3F,GAChB,IAAI0+wC,EAAa1qzC,EAAMzf,MAAMz4B,IAE7B,GAAIA,IAAQ4i2C,IAGZ1qzC,EAAMuqzC,WAAWv+wC,GAEbw+wC,GAAe,CACf,IAAIhk1C,EAAQ4j1C,EAAWti2C,GAEnB0e,IACAA,EAAMwlE,QAAUA,EAChBxlE,EAAMzN,OAAS48T,EAAOq0hC,OACtBxj1C,EAAMsrB,MAAQtrB,EAAMsrB,MAAM3xB,QAAO,SAAU60C,GAEvC,OADAA,EAAGg3B,IACI,CACX,IAER,CACJ,IACK1xE,OAAM,SAAUllB,GAGjB,GAFA4qD,EAAMi2X,YAAY7gb,GAEdo12C,EAAe,CACf,IAAIhk1C,EAAQ4j1C,EAAWti2C,GAEnB0e,IACAA,EAAMsrB,MAAMt5B,SAAQ,SAAUw8C,GAC1BA,EAAG5/D,EACP,WACOg12C,EAAWti2C,GAE1B,CACJ,GACJ,CACA,MAAO1S,GACH,OAAO4qD,EAAMi2X,YAAY,IAAIn7Z,MAAM1lB,EAAMiwB,SAC7C,CACJ,EACA26B,EAAM/gD,MAAQ,CACV+sF,QAAS,GACT3M,QAAS,KACTsrxC,WAAYpq0C,EAAMiq0C,iBAAmBJ,EAAW7p0C,EAAMz4B,KACtDiR,OAAQ48T,EAAOs0hC,SAEnBjqzC,EAAMg7C,KAAOz6D,EAAMqq0C,YD9HpB,SAAsBj32C,GAQzB,IAPA,IAGgCqnP,EAH5B6vnC,EAAU,6BAEVtP,EAAU,GAAKsP,EAAUA,EAAQ3mzC,cADvB,aAKVtsD,EAAI,GACC1D,EAAI,EAAGA,ECsHkC,EDtHtBA,IACxB0D,IAL4BojP,EAKPugnC,GAJJpl2C,KAAKyK,MAAMzK,KAAKwF,SAAWq/O,EAAUrnP,SAM1D,OAAOiE,CACX,CCkHyC,GAC1BooD,CACX,CAqMA,OAzSAkgX,EAAUmq8B,EAAWru/B,GAqGrBqu/B,EAAUr32C,UAAU49Y,kBAAoB,WAEpC,GADAt9Y,KAAK8pG,UAAW,EACXyioC,IAAL,CAGA,IAAI9mtC,EAASzlB,KAAK2L,MAAM8Z,OACpBjR,EAAMxU,KAAKitC,MAAMz4B,IACrB,IAEI,GAAIiR,IAAW48T,EAAOs0hC,QAAS,CAE3B,IDrJT,WAEH,IAAKxx2C,SACD,OAAO,EAEX,IAAImqN,EAAMnqN,SAASmE,cAAc,OAEjC,OADAgmN,EAAIr1E,UAAY,YACPq1E,EAAInlI,YAA8C,+BAAhCmlI,EAAInlI,WAAWwwvC,YAC9C,CAVW68B,IAAyC,oBAAXt12C,QAAqC,OAAXA,OCwJ/C,MAAM,IAAIslB,MAAM,gCAGpB,IAAKhT,EACD,MAAM,IAAIgT,MAAM,eAEpBxnB,KAAK6kJ,MACT,CACJ,CACA,MAAO/iJ,GACH9B,KAAK2ib,YAAY7gb,EACrB,CAnBA,CAoBJ,EACAi12C,EAAUr32C,UAAU89Y,mBAAqB,SAAUnE,EAAWo+9B,GAC1D,GAAKlrI,IAAL,CAGA,IAAI51sC,EAAK32B,KAAK2L,MAAO0r2C,EAAW1g1C,EAAG0g1C,SAAU5x1C,EAASkR,EAAGlR,OACrD+nC,EAAKxtD,KAAKitC,MAAO+tG,EAASxtF,EAAGwtF,OAAQxmI,EAAMg5C,EAAGh5C,IAOlD,GANIij2C,EAAUhy1C,SAAW48T,EAAOu0hC,OAASnx1C,IAAW48T,EAAOu0hC,OAEnD57tC,GACAA,EAAOxmI,EAAK6i2C,GAGhBh+9B,EAAU7kY,MAAQA,EAAK,CACvB,IAAKA,EAED,YADAxU,KAAK2ib,YAAY,IAAIn7Z,MAAM,gBAG/BxnB,KAAK6kJ,MACT,CAfA,CAgBJ,EACAkytC,EAAUr32C,UAAU+9Y,qBAAuB,WACvCz9Y,KAAK8pG,UAAW,CACpB,EACAitwC,EAAUr32C,UAAUg42C,WAAa,WAC7B,IAAIh/wC,EAAU14F,KAAK2L,MAAM+sF,QACrBi/wC,EAAe332C,KAAKitC,MAAM0q0C,aAC9B,OAAIA,EACOA,EAAaj/wC,GAEjBA,CACX,EACAq+wC,EAAUr32C,UAAUk42C,oBAAsB,SAAUvuxC,GAChD,IAAI38B,EAAQ1sD,KACR22B,EAAK32B,KAAKitC,MAAOugB,EAAK72B,EAAGso5B,QAASA,OAAiB,IAAPzx3B,EAAgB,GAAKA,EAAIqqzC,EAAclh1C,EAAGkh1C,YACtFC,EAAwB,CAAC,KAAM,OAAQ,aAAc,aAAc,iBACnEC,EAAiB,CAAC,OAAQ,cAI9B,OAAKF,GA/KuC,SAAU5+1C,EAAI8E,GAC9D,IAAK,IAAInd,EAAI,EAAGisa,EAAK9uZ,EAAK1d,OAAQ+D,EAAI6U,EAAG5Y,OAAQO,EAAIisa,EAAIjsa,IAAKwD,IAC1D6U,EAAG7U,GAAK2Z,EAAKnd,GACjB,OAAOqY,CACX,CA8KQ,CAAc,GAAI,EAAOowE,EAAKrpD,WAAW3Q,KAAI,SAAU1sB,GACnD,GAAIA,EAAEyvG,YAAczvG,EAAEyvG,WAAW/xG,OAAQ,CACrC,IAAI232C,EAAe142C,OAAOod,OAAO/Z,EAAEyvG,YAAY/iF,KAAI,SAAUruB,GACzD,IAAIithB,EAAOjthB,EACPyF,EAAQzF,EAAEG,MAAMsF,MAAM,gBAI1B,OAHIA,GAASA,EAAM,KACfwnhB,EAAK9shB,MAAQH,EAAEG,MAAMsL,QAAQhG,EAAM,GAAI,OAASw46B,EAAUx46B,EAAM,GAAK,KAAOimD,EAAMg7C,KAAO,MAEtFumb,CACX,IACA6p1B,EAAsB5y1C,SAAQ,SAAUnlB,GACpC,IAjBgB2K,EAAMvJ,EAiBlB0tF,EAAYmpxC,EAAatx0C,MAAK,SAAU1lC,GAAK,OAAOA,EAAE0J,OAAS3K,CAAG,KAClE8uF,IAlBYnkF,EAkBc3K,EAlBRoB,EAkBW0tF,EAAU1tF,MAjB5C422C,EAAev32C,QAAQkK,IAAS,GAAMvJ,GAAQA,EAAMX,QAAQ,KAAO,KAkB9DquF,EAAU1tF,MAAQ0tF,EAAU1tF,MAAQ,KAAOurD,EAAMg7C,KAEzD,GACJ,CACA,OAAI/kG,EAAEq9B,SAAS3/B,OACJqsD,EAAMkrzC,oBAAoBj12C,GAE9BA,CACX,IACO0mF,GAxBIA,CAyBf,EACA0txC,EAAUr32C,UAAUunR,QAAU,WAC1B,IAAItwP,EAAK32B,KAAKitC,MAAO51B,EAAcsf,EAAGtf,YAAag4J,EAAQ14I,EAAG04I,MAC9D,IACI,IACIhmF,EAAO4ysB,EADGj8xB,KAAK032C,aACS,CAAEnB,UAAU,IACxC,KAAKltxC,GAAUA,aAAgB4uxC,eAC3B,MAAM,IAAIzw1C,MAAM,2CAEpB,IAAIs2Y,EAAM99Z,KAAK432C,oBAAoBvuxC,GACnC,GAAIhyE,EAAa,CACb,IAAI6g2C,EAAep68B,EAAIv8X,cAAc,QACjC220C,GAAgBA,EAAax20C,YAC7Bw20C,EAAax20C,WAAW7E,YAAYq70C,GAExC,IAAIC,EAAchz2C,SAASmE,cAAc,QACzC6u2C,EAAYl+tC,UAAY5iI,EACxBymZ,EAAIrjK,QAAQ09mC,EAChB,CACA,GAAI9osC,EAAO,CACP,IAAI+osC,EAAgBt68B,EAAIv8X,cAAc,SAClC620C,GAAiBA,EAAc120C,YAC/B020C,EAAc120C,WAAW7E,YAAYu70C,GAEzC,IAAIC,EAAelz2C,SAASmE,cAAc,SAC1C+u2C,EAAap+tC,UAAYo1B,EACzByuP,EAAIrjK,QAAQ49mC,EAChB,CACA,OAAOv68B,CACX,CACA,MAAOh8Z,GACH,OAAO9B,KAAK2ib,YAAY7gb,EAC5B,CACJ,EACAi12C,EAAUr32C,UAAU45V,WAAa,WAC7B,IACI,IACIvtQ,EAAUkwsB,EADHj8xB,KAAKinR,WAEhB,IAAKl7L,IAAY,iBAAqBA,GAClC,MAAM,IAAIvkE,MAAM,gDAEpBxnB,KAAK0qI,SAAS,CACV3+C,QAASA,EACTtmE,OAAQ48T,EAAOu0hC,OAEvB,CACA,MAAO902C,GACH9B,KAAK2ib,YAAY,IAAIn7Z,MAAM1lB,EAAMiwB,SACrC,CACJ,EACAgl1C,EAAUr32C,UAAUmlJ,KAAO,WACvB,IAAIn4F,EAAQ1sD,KAERA,KAAK8pG,UACL9pG,KAAK0qI,SAAS,CACVhyC,QAAS,GACT3M,QAAS,KACTtmE,OAAQ48T,EAAOm/D,UAChB,WACC,IAAI7qX,EAAK+1B,EAAMzf,MAAOiq0C,EAAgBvg1C,EAAGug1C,cAAe1i2C,EAAMmiB,EAAGniB,IAC7D0e,EAAQgk1C,GAAiBJ,EAAWti2C,GACxC,GAAI0e,EAEIA,EAAMzN,SAAW48T,EAAOm/D,QACxBtuX,EAAMsrB,MAAM38C,KAAK6qD,EAAMsqzC,kBAElB9j1C,EAAMzN,SAAW48T,EAAOq0hC,QAC7BhqzC,EAAMuqzC,WAAW/j1C,EAAMwlE,aAN/B,CAUA,IACI4/wC,EADAC,EAAU/j2C,EAAI/N,MAAM,wCAEpB8x2C,EACAD,EAAYC,EAAQ,GAAK1o1C,KAAK0o1C,EAAQ,IAAM3o1C,mBAAmB2o1C,EAAQ,IAElE/j2C,EAAIhU,QAAQ,SAAW,IAC5B832C,EAAY9j2C,GAEZ8j2C,EACA5rzC,EAAMuqzC,WAAWqB,GAGrB5rzC,EAAMqY,SAbN,CAcJ,GAER,EACAgyyC,EAAUr32C,UAAU4uH,OAAS,WACzB,IAAI33F,EAAK32B,KAAK2L,MAAOogF,EAAUp1D,EAAGo1D,QAAStmE,EAASkR,EAAGlR,OACnD+nC,EAAKxtD,KAAKitC,MAAO5nB,EAAKmoC,EAAGxtB,SAAUA,OAAkB,IAAP3a,EAAgB,KAAOA,EAAImz1C,EAAWhrzC,EAAGgrzC,SAAUn9yC,EAAK7N,EAAGo3F,OAAQA,OAAgB,IAAPvpF,EAAgB,KAAOA,EACjJo9yC,EDrSL,SAA0BhozC,GAE7B,IADA,IAAI5jC,EAAS,GACJpO,EAAK,EAAGA,EAAKre,UAAUC,OAAQoe,IACpCoO,EAAOpO,EAAK,GAAKre,UAAUqe,GAE/B,IAAI2qD,EAAS,CAAC,EACd,IAAK,IAAIvkD,KAAO4rC,GAER,CAAC,GAAE9wD,eAAeC,KAAK6wD,EAAO5rC,KACzBgI,EAAOze,SAASyW,KACjBukD,EAAOvkD,GAAO4rC,EAAM5rC,KAIhC,OAAOukD,CACX,CCsR2BsvyC,CAAiB142C,KAAKitC,MAAO,UAAW,gBAAiB,WAAY,cAAe,eAAgB,WAAY,SAAU,UAAW,SAAU,eAAgB,MAAO,QAAS,aAAc,eAChN,OAAKs/rC,IAGDxgpC,EACO,eAAmBA,EAAS,EAAS,CAAEnqD,IAAK420C,GAAYC,IAE/D,CAACp2hC,EAAOw0hC,YAAax0hC,EAAOo0hC,QAAQj22C,QAAQilB,IAAW,EAChDua,EAEJ4kH,EARIA,CASf,EACAmytC,EAAU78tC,aAAe,CACrBg9tC,eAAe,EACfW,aAAa,GAEVd,CACX,CA3S8B,CA2S5B,6CCrVW,IAAIzz2C,EAAE,mBAAoB5B,QAAQA,OAAOiH,IAAI9H,EAAEyC,EAAE5B,OAAOiH,IAAI,iBAAiB,MAAMhG,EAAEW,EAAE5B,OAAOiH,IAAI,gBAAgB,MAAMxJ,EAAEmE,EAAE5B,OAAOiH,IAAI,kBAAkB,MAAMjG,EAAEY,EAAE5B,OAAOiH,IAAI,qBAAqB,MAAMxG,EAAEmB,EAAE5B,OAAOiH,IAAI,kBAAkB,MAAM/F,EAAEU,EAAE5B,OAAOiH,IAAI,kBAAkB,MAAMjF,EAAEJ,EAAE5B,OAAOiH,IAAI,iBAAiB,MAAMnG,EAAEc,EAAE5B,OAAOiH,IAAI,oBAAoB,MAAMvF,EAAEE,EAAE5B,OAAOiH,IAAI,yBAAyB,MAAMtJ,EAAEiE,EAAE5B,OAAOiH,IAAI,qBAAqB,MAAM7F,EAAEQ,EAAE5B,OAAOiH,IAAI,kBAAkB,MAAMzC,EAAE5C,EACpf5B,OAAOiH,IAAI,uBAAuB,MAAM5I,EAAEuD,EAAE5B,OAAOiH,IAAI,cAAc,MAAMvJ,EAAEkE,EAAE5B,OAAOiH,IAAI,cAAc,MAAM1F,EAAEK,EAAE5B,OAAOiH,IAAI,eAAe,MAAMpF,EAAED,EAAE5B,OAAOiH,IAAI,qBAAqB,MAAM1E,EAAEX,EAAE5B,OAAOiH,IAAI,mBAAmB,MAAM3F,EAAEM,EAAE5B,OAAOiH,IAAI,eAAe,MAClQ,SAAShD,EAAE3E,GAAG,GAAG,iBAAkBA,GAAG,OAAOA,EAAE,CAAC,IAAIqB,EAAErB,EAAE616B,SAAS,OAAOx06B,GAAG,KAAKxB,EAAE,OAAOG,EAAEA,EAAEuL,MAAQ,KAAK/J,EAAE,KAAKY,EAAE,KAAKjE,EAAE,KAAKgD,EAAE,KAAKO,EAAE,KAAKI,EAAE,OAAO9B,EAAE,QAAQ,OAAOA,EAAEA,GAAGA,EAAE616B,UAAY,KAAKnz6B,EAAE,KAAKrE,EAAE,KAAKD,EAAE,KAAKW,EAAE,KAAK6C,EAAE,OAAO5B,EAAE,QAAQ,OAAOqB,GAAG,KAAKM,EAAE,OAAON,EAAE,CAAC,CAAC,SAASwC,EAAE7D,GAAG,OAAO2E,EAAE3E,KAAKoC,CAAC,CAACX,EAAQk22C,UAAUn22C,EAAEC,EAAQm22C,eAAex12C,EAAEX,EAAQo22C,gBAAgBn12C,EAAEjB,EAAQi3P,gBAAgB92P,EAAEH,EAAQovF,QAAQhxF,EAAE4B,EAAQknwC,WAAWtqwC,EAAEoD,EAAQk9P,SAASxgQ,EAAEsD,EAAQq22C,KAAK152C,EAAEqD,EAAQmnwC,KAAK7pwC,EAAE0C,EAAQs22C,OAAOp22C,EAChfF,EAAQ48G,SAASl9G,EAAEM,EAAQu22C,WAAWt22C,EAAED,EAAQw22C,SAASn22C,EAAEL,EAAQy22C,YAAY,SAASl42C,GAAG,OAAO6D,EAAE7D,IAAI2E,EAAE3E,KAAKwB,CAAC,EAAEC,EAAQ022C,iBAAiBt02C,EAAEpC,EAAQ222C,kBAAkB,SAASp42C,GAAG,OAAO2E,EAAE3E,KAAK0C,CAAC,EAAEjB,EAAQ422C,kBAAkB,SAASr42C,GAAG,OAAO2E,EAAE3E,KAAK4B,CAAC,EAAEH,EAAQuwuC,UAAU,SAAShyuC,GAAG,MAAM,iBAAkBA,GAAG,OAAOA,GAAGA,EAAE616B,WAAWh26B,CAAC,EAAE4B,EAAQ622C,aAAa,SAASt42C,GAAG,OAAO2E,EAAE3E,KAAK3B,CAAC,EAAEoD,EAAQ+9T,WAAW,SAASx/T,GAAG,OAAO2E,EAAE3E,KAAK7B,CAAC,EAAEsD,EAAQg5xC,OAAO,SAASz6xC,GAAG,OAAO2E,EAAE3E,KAAK5B,CAAC,EAC1dqD,EAAQinwC,OAAO,SAAS1owC,GAAG,OAAO2E,EAAE3E,KAAKjB,CAAC,EAAE0C,EAAQ822C,SAAS,SAASv42C,GAAG,OAAO2E,EAAE3E,KAAK2B,CAAC,EAAEF,EAAQ+22C,WAAW,SAASx42C,GAAG,OAAO2E,EAAE3E,KAAKmB,CAAC,EAAEM,EAAQg32C,aAAa,SAASz42C,GAAG,OAAO2E,EAAE3E,KAAK0B,CAAC,EAAED,EAAQi32C,WAAW,SAAS142C,GAAG,OAAO2E,EAAE3E,KAAK8B,CAAC,EAC1OL,EAAQk32C,mBAAmB,SAAS342C,GAAG,MAAM,iBAAkBA,GAAG,mBAAoBA,GAAGA,IAAI7B,GAAG6B,IAAIoC,GAAGpC,IAAImB,GAAGnB,IAAI0B,GAAG1B,IAAI8B,GAAG9B,IAAIkF,GAAG,iBAAkBlF,GAAG,OAAOA,IAAIA,EAAE616B,WAAWz36B,GAAG4B,EAAE616B,WAAW926B,GAAGiB,EAAE616B,WAAWj06B,GAAG5B,EAAE616B,WAAWnz6B,GAAG1C,EAAE616B,WAAWx36B,GAAG2B,EAAE616B,WAAWtz6B,GAAGvC,EAAE616B,WAAW5y6B,GAAGjD,EAAE616B,WAAW7z6B,GAAGhC,EAAE616B,WAAW5z6B,EAAE,EAAER,EAAQm32C,OAAOj02C,gCCXjUm3B,EAAOr6B,QAAU,EAAjB,qCCGF,IAAIsxa,EAAWz0a,OAAOa,QAAU,SAAU2P,GAAU,IAAK,IAAIlP,EAAI,EAAGA,EAAIR,UAAUC,OAAQO,IAAK,CAAE,IAAIiH,EAASzH,UAAUQ,GAAI,IAAK,IAAIikB,KAAOhd,EAAcvI,OAAOI,UAAUC,eAAeC,KAAKiI,EAAQgd,KAAQ/U,EAAO+U,GAAOhd,EAAOgd,GAAU,CAAE,OAAO/U,CAAQ,EAI3P+p2C,EAAUxv/B,EAFD,EAAQ,QAMjByv/B,EAAoBzv/B,EAFD,EAAQ,QAI/B,SAASA,EAAuBn9J,GAAO,OAAOA,GAAOA,EAAI5qN,WAAa4qN,EAAM,CAAE3qN,QAAS2qN,EAAO,CAiB9FzqN,EAAQ,EAbU,SAAqBwqC,GACrC,IAAIz9B,EAAOy9B,EAAMz9B,KACbg4P,EAAWv6N,EAAMu6N,SACjBm8tB,EALN,SAAkCz2wB,EAAK55M,GAAQ,IAAIxD,EAAS,CAAC,EAAG,IAAK,IAAIlP,KAAKssN,EAAW55M,EAAK9S,QAAQI,IAAM,GAAkBtB,OAAOI,UAAUC,eAAeC,KAAKstN,EAAKtsN,KAAckP,EAAOlP,GAAKssN,EAAItsN,IAAM,OAAOkP,CAAQ,CAK5MmwY,CAAyBhzW,EAAO,CAAC,OAAQ,aAEtD,OAAO4s0C,EAAQt32C,QAAQ+G,cACrB,SACAyqa,EAAS,CAAE/1Y,QAAS,WAChB,OAAO,EAAI870C,EAAkBv32C,SAASiN,EAAMg4P,EAC9C,GAAKm8tB,GACP127B,EAAMjN,UAAY,gBAEtB,gCCzBA,SAAS01yC,IAEP,IAAI/p0C,EAAQ3L,KAAKC,YAAYmpwC,yBAAyBppwC,KAAKitC,MAAOjtC,KAAK2L,OACnEA,SACF3L,KAAK0qI,SAAS/+H,EAElB,CAEA,SAAS0h1C,EAA0BniuC,GAQjClrH,KAAK0qI,SALL,SAAiB+suC,GACf,IAAI9r2C,EAAQ3L,KAAKC,YAAYmpwC,yBAAyBl+oC,EAAWusvC,GACjE,OAAO9r2C,QAAwCA,EAAQ,IACzD,EAEsBtI,KAAKrD,MAC7B,CAEA,SAASqu1C,EAAoBnjuC,EAAWq7lB,GACtC,IACE,IAAIltU,EAAYr5Y,KAAKitC,MACjBwq0C,EAAYz32C,KAAK2L,MACrB3L,KAAKitC,MAAQi+E,EACblrH,KAAK2L,MAAQ46sB,EACbvmtB,KAAK+52C,6BAA8B,EACnC/52C,KAAKg62C,wBAA0Bh62C,KAAKw10C,wBAClCn87B,EACAo+9B,EAEJ,CAAE,QACAz32C,KAAKitC,MAAQosW,EACbr5Y,KAAK2L,MAAQ8r2C,CACf,CACF,CAQA,SAASxs0C,EAASyhH,GAChB,IAAIhtJ,EAAYgtJ,EAAUhtJ,UAE1B,IAAKA,IAAcA,EAAUk36B,iBAC3B,MAAM,IAAIpv5B,MAAM,sCAGlB,GACgD,mBAAvCklI,EAAU08mC,0BAC4B,mBAAtC1pwC,EAAU810C,wBAEjB,OAAO9orC,EAMT,IAAIuttC,EAAqB,KACrBC,EAA4B,KAC5BC,EAAsB,KAgB1B,GAf4C,mBAAjCz62C,EAAUg20C,mBACnBukC,EAAqB,qBACmC,mBAAxCv62C,EAAU+10C,4BAC1BwkC,EAAqB,6BAE4B,mBAAxCv62C,EAAU2t1C,0BACnB6sB,EAA4B,4BACmC,mBAA/Cx62C,EAAU4t1C,mCAC1B4sB,EAA4B,oCAEe,mBAAlCx62C,EAAU2u1C,oBACnB8rB,EAAsB,sBACmC,mBAAzCz62C,EAAU0u1C,6BAC1B+rB,EAAsB,8BAGC,OAAvBF,GAC8B,OAA9BC,GACwB,OAAxBC,EACA,CACA,IAAIz2tC,EAAgBgJ,EAAU0b,aAAe1b,EAAUhiJ,KACnD0v2C,EAC4C,mBAAvC1ttC,EAAU08mC,yBACb,6BACA,4BAEN,MAAM5hvC,MACJ,2FACEk8H,EACA,SACA02tC,EACA,uDACwB,OAAvBH,EAA8B,OAASA,EAAqB,KAC9B,OAA9BC,EACG,OAASA,EACT,KACqB,OAAxBC,EAA+B,OAASA,EAAsB,IATjE,uIAaJ,CAaA,GARkD,mBAAvCzttC,EAAU08mC,2BACnB1pwC,EAAUg20C,mBAAqBA,EAC/Bh20C,EAAU2t1C,0BAA4BA,GAMS,mBAAtC3t1C,EAAU810C,wBAAwC,CAC3D,GAA4C,mBAAjC910C,EAAU89Y,mBACnB,MAAM,IAAIh2X,MACR,qHAIJ9nB,EAAU2u1C,oBAAsBA,EAEhC,IAAI7w8B,EAAqB99Y,EAAU89Y,mBAEnC99Y,EAAU89Y,mBAAqB,SAC7BnE,EACAo+9B,EACA4C,GAUA,IAAIv+mB,EAAW97vB,KAAK+52C,4BAChB/52C,KAAKg62C,wBACLK,EAEJ789B,EAAmB59Y,KAAKI,KAAMq5Y,EAAWo+9B,EAAW37mB,EACtD,CACF,CAEA,OAAOpvmB,CACT,gCA9GAgprC,EAAmB4kC,8BAA+B,EAClDjtB,EAA0BitB,8BAA+B,EACzDjsB,EAAoBisB,8BAA+B,kKC7C/CC,GAF4B,oBAAXr42C,OAAyBA,OAAS,EAAAC,OACvB,IAAX,EAAAA,EAAyB,EAAAA,EAASD,OACnB,oBAAbiD,SAA2BA,SAAW,CAAC,GCA9D,SAASkwX,EAAQj4U,EAAQk4U,GAAkB,IAAIhiX,EAAOhU,OAAOgU,KAAK8pC,GAAS,GAAI99C,OAAOmB,sBAAuB,CAAE,IAAI80X,EAAUj2X,OAAOmB,sBAAsB28C,GAAak4U,IAAgBC,EAAUA,EAAQ1oW,QAAO,SAAU2oW,GAAO,OAAOl2X,OAAOmE,yBAAyB25C,EAAQo4U,GAAK7xX,UAAY,KAAI2P,EAAKzR,KAAKtB,MAAM+S,EAAMiiX,EAAU,CAAE,OAAOjiX,CAAM,CAEpV,SAASmiX,EAAc3lX,GAAU,IAAK,IAAIlP,EAAI,EAAGA,EAAIR,UAAUC,OAAQO,IAAK,CAAE,IAAIiH,EAAyB,MAAhBzH,UAAUQ,GAAaR,UAAUQ,GAAK,CAAC,EAAOA,EAAI,EAAKy0X,EAAQ/1X,OAAOuI,IAAS,GAAMqd,SAAQ,SAAUL,IAAO,OAAgB/U,EAAQ+U,EAAKhd,EAAOgd,GAAO,IAAevlB,OAAOq+B,0BAA6Br+B,OAAOkU,iBAAiB1D,EAAQxQ,OAAOq+B,0BAA0B91B,IAAmBwtX,EAAQ/1X,OAAOuI,IAASqd,SAAQ,SAAUL,GAAOvlB,OAAO4D,eAAe4M,EAAQ+U,EAAKvlB,OAAOmE,yBAAyBoE,EAAQgd,GAAO,GAAM,CAAE,OAAO/U,CAAQ,CAErhB,SAASg6W,EAA2BxpX,EAAGk62C,GAAkB,IAAIlv2C,EAAI,GAAsB,oBAAX5J,QAAgD,MAAtBpB,EAAEoB,OAAOC,UAAmB,CAAE,GAAIlC,MAAMkS,QAAQrR,KAAOgL,EAE7J,SAAqChL,EAAGunX,GAAU,GAAKvnX,EAAL,CAAgB,GAAiB,iBAANA,EAAgB,OAAOwnX,EAAkBxnX,EAAGunX,GAAS,IAAIxoX,EAAIC,OAAOI,UAAU6E,SAAS3E,KAAKU,GAAGyB,MAAM,GAAI,GAAiE,MAAnD,WAAN1C,GAAkBiB,EAAEL,cAAaZ,EAAIiB,EAAEL,YAAYyK,MAAgB,QAANrL,GAAqB,QAANA,EAAoBI,MAAMse,KAAKzd,GAAc,cAANjB,GAAqB,2CAA2CgM,KAAKhM,GAAWyoX,EAAkBxnX,EAAGunX,QAAzG,CAA7O,CAA+V,CAF7PD,CAA4BtnX,KAAOk62C,GAAkBl62C,GAAyB,iBAAbA,EAAED,OAAqB,CAAMiL,IAAIhL,EAAIgL,GAAI,IAAI1K,EAAI,EAAOoE,EAAI,WAAc,EAAG,MAAO,CAAElE,EAAGkE,EAAG3F,EAAG,WAAe,OAAIuB,GAAKN,EAAED,OAAe,CAAEa,MAAM,GAAe,CAAEA,MAAM,EAAOC,MAAOb,EAAEM,KAAQ,EAAGzB,EAAG,SAAWoJ,GAAM,MAAMA,CAAI,EAAG7F,EAAGsC,EAAK,CAAE,MAAM,IAAInF,UAAU,wIAA0I,CAAE,IAA6Cy3C,EAAzCqyU,GAAmB,EAAMC,GAAS,EAAY,MAAO,CAAE9oX,EAAG,WAAewK,EAAKhL,EAAEoB,OAAOC,WAAa,EAAGtC,EAAG,WAAe,IAAIqvW,EAAOpjW,EAAGvK,OAAsC,OAA9B4oX,EAAmBjb,EAAKxtW,KAAawtW,CAAM,EAAGvvW,EAAG,SAAW0qX,GAAOD,GAAS,EAAMtyU,EAAMuyU,CAAK,EAAGnnX,EAAG,WAAe,IAAWinX,GAAoC,MAAhBr+W,EAAW,QAAWA,EAAW,QAAK,CAAE,QAAU,GAAIs+W,EAAQ,MAAMtyU,CAAK,CAAE,EAAK,CAIp+B,SAASwwU,EAAkBrpJ,EAAK5/F,IAAkB,MAAPA,GAAeA,EAAM4/F,EAAIp+N,UAAQw+H,EAAM4/F,EAAIp+N,QAAQ,IAAK,IAAIO,EAAI,EAAGmoW,EAAO,IAAItpW,MAAMo/H,GAAMj+H,EAAIi+H,EAAKj+H,IAAOmoW,EAAKnoW,GAAK69N,EAAI79N,GAAM,OAAOmoW,CAAM,CAEtL,IAAI0xgC,EAAW,CAAC,OAAQ,SAAU,eAAgB,UAAW,UAAW,SAAU,UAC3E,SAAS5iY,EAAexj+B,GAC7B,IAAKA,EACH,OAAO,KAGT,GAAqB,iBAAVA,EACT,OAAOA,EAGLA,EAAMqm2C,OACRrm2C,EAAQA,EAAMqm2C,QAGhB,IAGIlx/B,EAHAz5N,EAAa,CAAC,EAEd25N,EAAYI,EAA2Bz1W,EAAMypB,QAGjD,IACE,IAAK4rV,EAAU5oX,MAAO0oX,EAAQE,EAAUrqX,KAAK6B,MAAO,CAClD,IAAI8tH,EAAQw6P,EAAMroX,MAClB4uJ,EAAW/gC,EAAMzjG,IAAMyjG,CACzB,CACF,CAAE,MAAO13E,GACPoyU,EAAUvqX,EAAEm4C,EACd,CAAE,QACAoyU,EAAUhnX,GACZ,CAEA,IAAIo7B,EAASzpB,EAAMypB,OAAOzO,KAAI,SAAU2/F,GACtC,IAAI2rvC,EAAW5qtC,EAAW/gC,EAAMptF,KAC5Bg50C,EAAkB,KAOtB,GALI,gBAAiB5rvC,UACnB4rvC,EAAkBnl/B,EAAc,CAAC,EAAGzmQ,IACb6rvC,YAGrBF,EAAU,QACZC,EAAkBA,GAAmBnl/B,EAAc,CAAC,EAAGzmQ,IAChCptF,IAEvB,IACI8oW,EADAC,EAAa7gB,EAA2B2w/B,GAG5C,IACE,IAAK9v+B,EAAW7pY,MAAO4pY,EAASC,EAAWtrY,KAAK6B,MAAO,CACrD,IAAIqqJ,EAAWm/O,EAAOvpY,MAElBoqJ,KAAYovtC,IACdC,EAAgBrvtC,GAAYovtC,EAASpvtC,GAEzC,CACF,CAAE,MAAOj0G,GACPqzV,EAAWxrY,EAAEm4C,EACf,CAAE,QACAqzV,EAAWjoY,GACb,CACF,CAEA,OAAOk42C,GAAmB5rvC,CAC5B,IACA,OAAOymQ,EAAcA,EAAc,CAAC,EAAGphX,GAAQ,CAAC,EAAG,CACjDypB,OAAQA,GAEZ,CC/DA,IAAI2uG,EAAY,CACd2U,UAAW,SACXnzB,GAAI,SACJ6svC,qBAAsB,SACtBC,aAAc,SACdC,mBAAoB,OACpBC,sBAAuB,OACvBC,UAAW,OACX9gc,iBAAkB,OAClB+gc,WAAY,SACZ190C,SAAU,YAAoB,CAAC,SAAkB,WACjD290C,oBAAqB,OACrBtvuC,QAAS,OACTuvuC,YAAa,OACbrguC,OAAQ,OACR39B,QAAS,OACTt+E,MAAO,SACPC,OAAQ,SACRnB,UAAW,SACXwB,UAAW,SACXF,SAAU,SACVQ,KAAM,SACNH,QAAS,SACTE,MAAO,SACPsoF,SAAU,UAERkyB,EAAe,CACjBkH,UAAW,EAASrwH,KACpB+p1C,qBAqBK,WACL,IAAIp+7B,EAAc,KAElB,GAAsB,oBAAXx6a,QAA0BA,OAAO60B,SAAU,CACpD,IAAItwB,EAAQvE,OAAO60B,SAASw0B,OAAO9kD,MAAM,0BACzCi2a,EAAcj2a,GAASA,EAAM,EAC/B,CAMA,OAJKi2a,GAAkC,oBAAZz2a,UACzBy2a,EAAcA,GAAez2a,QAAQs1D,IAAI+/yC,mBAAqBr12C,QAAQs1D,IAAIggzC,+BAGrE7+7B,GAAe,UACxB,CAlCwB8+7B,GACtBT,aAAc,yBACdE,uBAAuB,EACvBD,oBAAoB,EACpBE,WAAW,EACXC,WAAY,CAAC,EACb190C,SAAU,kCACV290C,qBAAqB,EACrBtvuC,SAAS,EACTuvuC,aAAa,EACbrguC,OA9CF,WAAiB,EA+Cf39B,QA7CF,SAAwB5+E,GAClBA,GACFpX,QAAQvlB,MAAM28B,EAAM38B,MAExB,EA0CEi9B,MAAO,EACPC,OAAQ,EACRK,UAAW,EACXF,SAAU,EACVQ,KAAM,EACNH,QAAS,EACTE,MAAO,EACPsoF,SAAU,KAiBZ,SAAS21sC,EAAe1wxC,GACtB,IAAIo9G,EAAYjqJ,UAAUC,OAAS,QAAsB0tC,IAAjB3tC,UAAU,GAAmBA,UAAU,GAAK,YAEhF6sC,EAAMuJ,OACR,iBAAyBi2F,EAAWx/F,EAAO,OAAQo9G,EAEvD,CAEA,IAAIoxtC,EAAS,WACX,SAASA,EAAOxu0C,GACd,IAAIyf,EAAQ1sD,KAiBZ,IAfA,OAAgBA,KAAMy72C,IAEtB,OAAgBz72C,KAAM,QAASk6I,IAE/B,OAAgBl6I,KAAM,QAAS,IAE/B,OAAgBA,KAAM,SAAU,IAEhC,OAAgBA,KAAM,kBAAkB,WACtC0sD,EAAMzf,MAAM+tG,OAAO,CACjBzuI,KAAM,OACNuD,OAAQ48C,EAAMu4I,MAElB,KAEKh4J,EAAMyu0C,SACT,MAAM,IAAIl01C,MAAM,wBAGlBxnB,KAAK072C,SAAWzu0C,EAAMyu0C,SAEjBD,EAAOrhM,cACVqhM,EAAOrhM,aAAc,EAErBp6qC,KAAK272C,iBAAiB372C,KAAK072C,SAASp12C,UAGtCtG,KAAK+nJ,YAAY96G,EACnB,CA6SA,OA3SA,OAAawu0C,EAAQ,CAAC,CACpB521C,IAAK,WACL1jB,MAAO,WAGL,OAFAnB,KAAK6yM,WAEE7yM,IACT,GACC,CACD6kB,IAAK,WACL1jB,MAAO,SAAkB8rC,GAGvB,OAFAjtC,KAAKsxI,QAAQtxI,KAAKitC,MAAOA,GAElBjtC,IACT,GACC,CACD6kB,IAAK,SACL1jB,MAAO,WACL,IAAIkuB,EAAMrvB,KAAKilM,KAEX51K,EAAIhb,QACFgb,EAAIus1C,SACNvs1C,EAAIus1C,OAAO/4zC,SAEXxzB,EAAIus1C,OAAS,MAGfvs1C,EAAIws1C,UAER,GACC,CACDh31C,IAAK,SACL1jB,MAAO,WACL,OAAOnB,KAAKilM,IACd,GACC,CACDpgL,IAAK,SACL1jB,MAAO,SAAgB8rC,GACrBjtC,KAAKilM,KAAOw2qC,EAAOK,SAEnB,IAAIC,EAAe/72C,KAAKilM,KAAKwhC,eAEzBu1oC,EAAe/u0C,EAAMm0G,UAGzB,IAFA46tC,EAAarsxC,UAAUxqE,IAAI,gBAEpB421C,EAAa/xxC,WAAW3pF,OAAS,GACtC272C,EAAazn2C,YAAYwn2C,EAAa/xxC,WAAW,IAGnDhqF,KAAKilM,KAAKw2jB,WAAaugnB,EACvBP,EAAOK,SAAW,KAEd7u0C,EAAMxP,UACRz9B,KAAKilM,KAAKq/N,SAASuzkB,EAAe5q8B,EAAMxP,UAAW,CACjD8qgB,MAAM,IAINvoiB,KAAKilM,KAAKg3qC,gBACZj82C,KAAKk82C,iBAELl82C,KAAKilM,KAAK77K,KAAK,YAAappB,KAAKk82C,eAErC,GACC,CACDr31C,IAAK,UACL1jB,MAAO,SAAiB8rC,GACtB,GAAIA,EAAMiu0C,WAAaO,EAAOK,SAC5B972C,KAAKm82C,OAAOlv0C,OACP,CACL,GAAIA,EAAMghF,GAAI,CACZ,IAAIlhE,EAAamjS,kBAAkBxwV,UAAUqtD,WAE7CmjS,kBAAkBxwV,UAAUqtD,WAAa,WAEvC,OADAmjS,kBAAkBxwV,UAAUqtD,WAAaA,EAClC9f,EAAMghF,EACf,CACF,CAEA,IAAIktvC,EAAa,CACf/5tC,UAAWn0G,EAAMm0G,UACjBniH,OAAQ,CAAC,EAAG,GACZU,KAAM,EACND,MAAO,EACPF,QAAS,EACTyoF,QAAS,GACT5zG,MAAOwj+B,EAAe5q8B,EAAMxP,UAC5Bo90C,aAAa,EACbuB,aAAa,EACbpB,mBAAoB/t0C,EAAM+t0C,mBAC1BC,sBAAuBhu0C,EAAMgu0C,uBAG3Bhu0C,EAAMmt4B,mBACR+gc,EAAW/gc,iBAAmBnt4B,EAAMmt4B,kBAGtCp66B,KAAKilM,KAAO,IAAIjlM,KAAK072C,SAAS/w1C,IAAIrrB,OAAOa,OAAO,CAAC,EAAGg72C,EAAYlu0C,EAAMku0C,aAEtEn72C,KAAKilM,KAAK77K,KAAK,OAAQ6jB,EAAM+tG,QAE7Bh7I,KAAKilM,KAAKr0L,GAAG,QAASq8B,EAAMowE,QAC9B,CAEA,OAAOr9G,IACT,GACC,CACD6kB,IAAK,WACL1jB,MAAO,WACAnB,KAAKilM,OAILw2qC,EAAOK,SASV972C,KAAKilM,KAAKpyK,UARV4o1C,EAAOK,SAAW972C,KAAKilM,KAEvBjlM,KAAKilM,KAAKj3J,IAAI,OAAQhuC,KAAKitC,MAAM+tG,QAEjCh7I,KAAKilM,KAAKj3J,IAAI,QAAShuC,KAAKitC,MAAMowE,SAElCr9G,KAAKilM,KAAKj3J,IAAI,YAAahuC,KAAKk82C,iBAKlCl82C,KAAKilM,KAAO,KACd,GACC,CACDpgL,IAAK,cACL1jB,MAAO,SAAqB8rC,GAC1B,IAAIwtV,EAASz6X,KAGb29zC,EADA1wxC,EAAQ3tC,OAAOa,OAAO,CAAC,EAAG+5I,EAAcjtG,GAClB,UACtBjtC,KAAK072C,SAASh/7B,YAAczvY,EAAM6t0C,sBAAwB5guC,EAAa4guC,qBACvE962C,KAAK072C,SAASW,WAAapv0C,EAAM8t0C,aAEjC/62C,KAAKsjmC,QAAQr2jC,GAEb,IACIm0G,EADSn0G,EACUm0G,UACvB9hJ,OAAO4D,eAAek+I,EAAW,cAAe,CAC9Cj+I,IAAK,WACH,OAAOs3X,EAAO17V,KAChB,IAEFz/B,OAAO4D,eAAek+I,EAAW,cAAe,CAC9Cj+I,IAAK,WACH,OAAOs3X,EAAO17V,KAChB,IAEFz/B,OAAO4D,eAAek+I,EAAW,eAAgB,CAC/Cj+I,IAAK,WACH,OAAOs3X,EAAOz7V,MAChB,IAEF1/B,OAAO4D,eAAek+I,EAAW,eAAgB,CAC/Cj+I,IAAK,WACH,OAAOs3X,EAAOz7V,MAChB,IAGF,IAAIm4G,EAASn3I,KAAKilM,KAAK/lD,YAEnB/H,IACFA,EAAO9iI,MAAMkrO,QAAU,QAGzBv/O,KAAKs82C,mBAAmB,CAAC,EAAGrv0C,GAE5BjtC,KAAKu82C,eAAe,CAAC,EAAGtv0C,GAExBjtC,KAAKitC,MAAQA,CACf,GACC,CACDpoB,IAAK,UACL1jB,MAAO,SAAiB+rC,EAAU67E,GAChC,GAAK/oH,KAAKilM,KAAV,CAKA04nC,EADA50sC,EAAWzpH,OAAOa,OAAO,CAAC,EAAGH,KAAKitC,MAAO87E,GAChB,UAEzB,IAAI8pC,EAAkB7yJ,KAAKs82C,mBAAmBpv0C,EAAU67E,GAEpDyzvC,EAAcx82C,KAAKu82C,eAAerv0C,EAAU67E,GAEhD/oH,KAAKy82C,gBAAgBvv0C,EAAU67E,GAE1BA,EAASsyvC,cAAgBxotC,IAAmB2ptC,GAC/Cx82C,KAAKgnI,SAGPhnI,KAAKitC,MAAQ87E,CAfb,CAgBF,GACC,CACDlkG,IAAK,kBACL1jB,MAAO,SAAyB+rC,EAAU67E,GACrB77E,EAASzP,WAAasrF,EAAStrF,UAGhDz9B,KAAKilM,KAAKq/N,SAASuzkB,EAAe9u3B,EAAStrF,UAAW,CACpD8qgB,MAAOx/a,EAASqyvC,qBAGtB,GACC,CACDv21C,IAAK,iBACL1jB,MAAO,SAAwB+rC,EAAU67E,GACvC,IAAIyzvC,EAActv0C,EAASnO,QAAUgqF,EAAShqF,OAASmO,EAASlO,SAAW+pF,EAAS/pF,OASpF,OAPIw90C,IACFx82C,KAAK++B,MAAQgqF,EAAShqF,MACtB/+B,KAAKg/B,OAAS+pF,EAAS/pF,OAEvBh/B,KAAKilM,KAAKp2E,UAGL2tvC,CACT,GACC,CACD331C,IAAK,qBACL1jB,MAAO,SAA4B+rC,EAAU67E,GAC3C,IAAIxE,EAAevkH,KAAKw+I,cAActxG,GAElC+9H,EAAejrK,KAAKw+I,cAAcz1B,GAElC8pC,EAAkBoY,EAAa9rI,WAAaolF,EAAaplF,UAAY8rI,EAAa5rI,YAAcklF,EAAallF,WAAa4rI,EAAatrI,OAAS4kF,EAAa5kF,MAAQsrI,EAAavrI,QAAU6kF,EAAa7kF,OAASurI,EAAazrI,UAAY+kF,EAAa/kF,SAAWyrI,EAAajjD,WAAazD,EAAayD,SAU9S,OARI6qC,IACF7yJ,KAAKilM,KAAKy3qC,OAAO182C,KAAK282C,wBAAwB1xsC,IAE1CA,EAAajjD,WAAazD,EAAayD,WACzChoH,KAAKilM,KAAKriE,UAAU5a,SAAWijD,EAAajjD,WAIzC6qC,CACT,GACC,CACDhuI,IAAK,gBACL1jB,MAAO,SAAuB8rC,GAC5B,IAAImgK,EAAOngK,EAAMpP,WAAaoP,EAC1B5N,EAAY+tK,EAAK/tK,UACjBF,EAAWiuK,EAAKjuK,SAChBQ,EAAOytK,EAAKztK,KACZi90C,EAAaxvqC,EAAK1tK,MAClBA,OAAuB,IAAfk90C,EAAwB,EAAIA,EACpCC,EAAezvqC,EAAK5tK,QACpBA,OAA2B,IAAjBq90C,EAA0B,EAAIA,EACxCC,EAAgB1vqC,EAAKplF,SAGzB,MAAO,CACL3oF,UAAWA,EACXF,SAAUA,EACVQ,KAAMA,EACND,MAAOA,EACPF,QAASA,EACTwoF,cAR+B,IAAlB80vC,EAA2B,IAAMA,EAUlD,GACC,CACDj41C,IAAK,mBACL1jB,MAAO,WACL,IAAI472C,EAAgB382C,UAAUC,OAAS,QAAsB0tC,IAAjB3tC,UAAU,GAAmBA,UAAU,GAAK,SAExF,QAAwB,IAAb,EAIX,IACE,IAAI482C,EAAc,EAAS1z2C,cAAc,OAMzC,GALA0z2C,EAAYptxC,UAAY,eACxBotxC,EAAY3o2C,MAAMC,QAAU,OAC5B,EAASyc,KAAKxc,YAAYyo2C,GAC0C,WAAlD962C,OAAOyzZ,iBAAiBqn9B,GAAar+0C,SAErC,CAChB,IAAIghX,EAAO,EAASr2Y,cAAc,QAClCq2Y,EAAKhjX,aAAa,MAAO,cACzBgjX,EAAKhjX,aAAa,OAAQ,YAC1BgjX,EAAKhjX,aAAa,OAAQ,8CAA8C36B,OAAO+62C,EAAe,mBAC9F,EAASh2zC,KAAKxyC,YAAYorY,EAC5B,CACF,CAAE,MAAO79Y,GAAQ,CACnB,GACC,CACD+iB,IAAK,0BACL1jB,MAAO,SAAiC08B,GACtC,MAAO,CACLoB,OAAQ,CAACpB,EAAUwB,UAAWxB,EAAUsB,UACxCQ,KAAM9B,EAAU8B,KAChBH,QAAS3B,EAAU2B,QACnBE,MAAO7B,EAAU6B,MAErB,KAGK+70C,CACT,CA9Ua,IAgVb,OAAgBA,EAAQ,eAAe,IAEvC,OAAgBA,EAAQ,YAAahvuC,IAErC,OAAgBgvuC,EAAQ,eAAgBvhuC,IAExC,OAAgBuhuC,EAAQ,WAAY,8BC3apC,SAAS9p2C,EAAQxQ,GACf,OAAO1B,MAAMkS,QAAQxQ,IAAUmd,YAAY0C,OAAO7f,EACpD,CAEO,SAASoxI,EAAOvxI,EAAGsC,GACxB,GAAItC,IAAMsC,EACR,OAAO,EAGT,GAAIqO,EAAQ3Q,IAAM2Q,EAAQrO,GAAI,CAC5B,GAAItC,EAAEX,SAAWiD,EAAEjD,OACjB,OAAO,EAGT,IAAK,IAAIO,EAAI,EAAGA,EAAII,EAAEX,SAAUO,EAC9B,IAAK2xI,EAAOvxI,EAAEJ,GAAI0C,EAAE1C,IAClB,OAAO,EAIX,OAAO,CACT,CAEA,OAAOiC,KAAKmjH,IAAIhlH,EAAIsC,IAzBR,IA0Bd,CACO,SAASo1V,EAAMv3V,EAAO0M,EAAKF,GAChC,OAAO9K,KAAK8K,IAAIE,EAAKhL,KAAKgL,IAAIF,EAAKxM,GACrC,CACO,SAASs3V,EAAKz3V,EAAGsC,EAAGlE,GACzB,OAAIuS,EAAQ3Q,GACHA,EAAEquB,KAAI,SAAU/R,EAAI1c,GACzB,OAAO63V,EAAKn7U,EAAIha,EAAE1C,GAAIxB,EACxB,IAGKA,EAAIkE,GAAK,EAAIlE,GAAK4B,CAC3B,CCtCe,SAAS6hI,EAAO8+B,EAAW5vI,GACxC,IAAK4vI,EACH,MAAM,IAAIn6I,MAAMuK,GAAW,kCAE/B,CCCA,SAAS,EAAQqrB,EAAQk4U,GAAkB,IAAIhiX,EAAOhU,OAAOgU,KAAK8pC,GAAS,GAAI99C,OAAOmB,sBAAuB,CAAE,IAAI80X,EAAUj2X,OAAOmB,sBAAsB28C,GAAak4U,IAAgBC,EAAUA,EAAQ1oW,QAAO,SAAU2oW,GAAO,OAAOl2X,OAAOmE,yBAAyB25C,EAAQo4U,GAAK7xX,UAAY,KAAI2P,EAAKzR,KAAKtB,MAAM+S,EAAMiiX,EAAU,CAAE,OAAOjiX,CAAM,CAEpV,SAAS,EAAcxD,GAAU,IAAK,IAAIlP,EAAI,EAAGA,EAAIR,UAAUC,OAAQO,IAAK,CAAE,IAAIiH,EAAyB,MAAhBzH,UAAUQ,GAAaR,UAAUQ,GAAK,CAAC,EAAOA,EAAI,EAAK,EAAQtB,OAAOuI,IAAS,GAAMqd,SAAQ,SAAUL,IAAO,OAAgB/U,EAAQ+U,EAAKhd,EAAOgd,GAAO,IAAevlB,OAAOq+B,0BAA6Br+B,OAAOkU,iBAAiB1D,EAAQxQ,OAAOq+B,0BAA0B91B,IAAmB,EAAQvI,OAAOuI,IAASqd,SAAQ,SAAUL,GAAOvlB,OAAO4D,eAAe4M,EAAQ+U,EAAKvlB,OAAOmE,yBAAyBoE,EAAQgd,GAAO,GAAM,CAAE,OAAO/U,CAAQ,CAK9gB,IAAImt2C,EAAgB,CACzB/0vC,QAAS,EACTD,QAAS,GACTG,SAAU,EACVD,SAAU,IAURJ,EAAW,WACb,SAASA,EAASqlF,GAChB,IAAIruK,EAAQquK,EAAKruK,MACbC,EAASouK,EAAKpuK,OACdG,EAAWiuK,EAAKjuK,SAChBE,EAAY+tK,EAAK/tK,UACjBM,EAAOytK,EAAKztK,KACZk90C,EAAezvqC,EAAK5tK,QACpBA,OAA2B,IAAjBq90C,EAdP,EAcyDA,EAC5DD,EAAaxvqC,EAAK1tK,MAClBA,OAAuB,IAAfk90C,EAjBP,EAiBqDA,EACtDE,EAAgB1vqC,EAAKplF,SACrBA,OAA6B,IAAlB80vC,EAjBP,IAiB2DA,EAC/DI,EAAe9vqC,EAAKnlF,QACpBA,OAA2B,IAAjBi1vC,EAA0BD,EAAch1vC,QAAUi1vC,EAC5DC,EAAe/vqC,EAAKllF,QACpBA,OAA2B,IAAjBi1vC,EAA0BF,EAAc/0vC,QAAUi1vC,EAC5DC,EAAgBhwqC,EAAKjlF,SACrBA,OAA6B,IAAlBi1vC,EAA2BH,EAAc90vC,SAAWi1vC,EAC/DC,EAAgBjwqC,EAAKhlF,SACrBA,OAA6B,IAAlBi1vC,EAA2BJ,EAAc70vC,SAAWi1vC,EAC/Dr9vC,EAAqBotF,EAAKptF,mBAC1BwF,EAAmB4nF,EAAK5nF,iBACxBrC,EAAyBiqF,EAAKjqF,uBAC9B+I,EAAyBkhF,EAAKlhF,uBAC9B7D,EAAiB+kF,EAAK/kF,eACtBC,EAAkB8kF,EAAK9kF,gBACvBC,EAAiB6kF,EAAK7kF,eACtBC,EAAe4kF,EAAK5kF,aACpBC,EAAa2kF,EAAK3kF,WAClBC,EAAY0kF,EAAK1kF,WAErB,OAAgB1oH,KAAM+nH,GAEtB8a,EAAO19F,OAAOuC,SAAS3I,GAAQ,4BAC/B8jG,EAAO19F,OAAOuC,SAAS1I,GAAS,6BAChC6jG,EAAO19F,OAAOuC,SAASrI,GAAY,gCACnCwjG,EAAO19F,OAAOuC,SAASvI,GAAW,+BAClC0jG,EAAO19F,OAAOuC,SAAS/H,GAAO,2BAC9B3/B,KAAK6sH,eAAiB7sH,KAAKs92C,kBAAkB,CAC3Cv+0C,MAAOA,EACPC,OAAQA,EACRG,SAAUA,EACVE,UAAWA,EACXM,KAAMA,EACNH,QAASA,EACTE,MAAOA,EACPsoF,SAAUA,EACVC,QAASA,EACTC,QAASA,EACTC,SAAUA,EACVC,SAAUA,EACVpI,mBAAoBA,EACpBwF,iBAAkBA,EAClBrC,uBAAwBA,EACxB+I,uBAAwBA,IAE1BlsH,KAAKimB,OAAS,CACZoiG,eAAgBA,EAChBC,gBAAiBA,EACjBC,eAAgBA,EAChBC,aAAcA,EACdC,WAAYA,EACZC,UAAWA,EAEf,CAwQA,OAtQA,OAAaX,EAAU,CAAC,CACtBljG,IAAK,mBACL1jB,MAAO,WACL,OAAOnB,KAAK6sH,cACd,GACC,CACDhoG,IAAK,WACL1jB,MAAO,WACL,OAAOnB,KAAKimB,MACd,GACC,CACDpB,IAAK,WACL1jB,MAAO,SAAkB0yN,GACvB,IAAIxxG,EAAMwxG,EAAMxxG,IAChB,OAAOriH,KAAKu92C,oBAAoB,CAC9Bl1vC,eAAgBroH,KAAK6oH,WAAWxG,IAEpC,GACC,CACDx9F,IAAK,MACL1jB,MAAO,SAAautP,GAClB,IAAIrsI,EAAMqsI,EAAMrsI,IACZyG,EAAW4lI,EAAM5lI,SAEjBT,EAAiBroH,KAAKimB,OAAOoiG,gBAAkBroH,KAAK6oH,WAAWC,GAEnE,IAAKT,EACH,OAAOroH,KAGT,IAAIw92C,EAAwBx92C,KAAKy92C,oBAAoB,CACnDp1vC,eAAgBA,EAChBhG,IAAKA,IAEHq7vC,GAAyB,OAAeF,EAAuB,GAC/Dn+0C,EAAYq+0C,EAAuB,GACnCv+0C,EAAWu+0C,EAAuB,GAEtC,OAAO192C,KAAKu92C,oBAAoB,CAC9Bl+0C,UAAWA,EACXF,SAAUA,GAEd,GACC,CACDta,IAAK,SACL1jB,MAAO,WACL,OAAOnB,KAAKu92C,oBAAoB,CAC9Bl1vC,eAAgB,MAEpB,GACC,CACDxjG,IAAK,cACL1jB,MAAO,SAAqB8uP,GAC1B,IAAI5tI,EAAM4tI,EAAM5tI,IAChB,OAAOriH,KAAKu92C,oBAAoB,CAC9Bh1vC,eAAgBlG,EAChBmG,aAAcxoH,KAAK6sH,eAAertF,QAClCipF,WAAYzoH,KAAK6sH,eAAentF,OAEpC,GACC,CACD7a,IAAK,SACL1jB,MAAO,SAAgBgvP,GACrB,IAcIjnI,EAdA7G,EAAM8tI,EAAM9tI,IACZs7vC,EAAoBxtnC,EAAM1pI,YAC1BA,OAAoC,IAAtBk3vC,EAA+B,EAAIA,EACjDC,EAAoBztnC,EAAMlnI,YAC1BA,OAAoC,IAAtB20vC,EAA+B,EAAIA,EACjDC,EAAe792C,KAAKimB,OACpBsiG,EAAiBs1vC,EAAat1vC,eAC9BC,EAAeq1vC,EAAar1vC,aAC5BC,EAAao1vC,EAAap1vC,WAE9B,OAAKtjF,OAAOuC,SAAS8gF,IAAkBrjF,OAAOuC,SAAS+gF,IAOrDS,EADE7G,EACYriH,KAAK892C,6BAA6B,EAAc,EAAc,CAAC,EAAG992C,KAAK+92C,mBAAmB17vC,EAAKkG,IAAkB,CAAC,EAAG,CACjIC,aAAcA,EACdC,WAAYA,KAGA,CACZjpF,QAASgpF,EAAe/B,EACxB/mF,MAAO+oF,EAAaQ,GAIjBjpH,KAAKu92C,oBAAoBr0vC,IAjBvBlpH,IAkBX,GACC,CACD6kB,IAAK,YACL1jB,MAAO,WACL,OAAOnB,KAAKu92C,oBAAoB,CAC9B/0vC,aAAc,KACdC,WAAY,MAEhB,GACC,CACD5jG,IAAK,YACL1jB,MAAO,SAAmB+iY,GACxB,IAAI7hR,EAAM6hR,EAAM7hR,IAChB,OAAOriH,KAAKu92C,oBAAoB,CAC9Bj1vC,gBAAiBtoH,KAAK6oH,WAAWxG,GACjCqG,UAAW1oH,KAAK6sH,eAAeltF,MAEnC,GACC,CACD9a,IAAK,OACL1jB,MAAO,SAAci67B,GACnB,IAAI/40B,EAAM+40B,EAAM/40B,IACZyG,EAAWsy0B,EAAMty0B,SACjBhnB,EAAQs51B,EAAMt51B,MAClB+gC,EAAO/gC,EAAQ,EAAG,qCAClB,IAAIk8wC,EAAgBh+2C,KAAKimB,OACrByiG,EAAYs1vC,EAAct1vC,UAC1BJ,EAAkB01vC,EAAc11vC,gBAE/BnjF,OAAOuC,SAASghF,KACnBA,EAAY1oH,KAAK6sH,eAAeltF,KAChC2oF,EAAkBtoH,KAAK6oH,WAAWC,IAAa9oH,KAAK6oH,WAAWxG,IAGjEwgB,EAAOva,EAAiB,gGAExB,IAAI3oF,EAAO3/B,KAAK86H,kBAAkB,CAChCh5B,MAAOA,EACP4mB,UAAWA,GAAa,IAOtBu1vC,EAJiB,IAAI,UAAoB3+2C,OAAOa,OAAO,CAAC,EAAGH,KAAK6sH,eAAgB,CAClFltF,KAAMA,KAGmC8tU,6BAA6B,CACtE3uL,OAAQx2D,EACRjG,IAAKA,IAEH67vC,GAAyB,OAAeD,EAAuB,GAC/D5+0C,EAAY6+0C,EAAuB,GACnC/+0C,EAAW++0C,EAAuB,GAEtC,OAAOl+2C,KAAKu92C,oBAAoB,CAC9B590C,KAAMA,EACNN,UAAWA,EACXF,SAAUA,GAEd,GACC,CACDta,IAAK,UACL1jB,MAAO,WACL,OAAOnB,KAAKu92C,oBAAoB,CAC9Bj1vC,gBAAiB,KACjBI,UAAW,MAEf,GACC,CACD7jG,IAAK,sBACL1jB,MAAO,SAA6B4nH,GAClC,OAAO,IAAIhB,EAASzoH,OAAOa,OAAO,CAAC,EAAGH,KAAK6sH,eAAgB7sH,KAAKimB,OAAQ8iG,GAC1E,GACC,CACDlkG,IAAK,oBACL1jB,MAAO,SAA2B8rC,GAChC,IAAIg7E,EAAUh7E,EAAMg7E,QAChBC,EAAUj7E,EAAMi7E,QAChBvoF,EAAOsN,EAAMtN,KACjBsN,EAAMtN,KAAO+4T,EAAM/4T,EAAMuoF,EAASD,GAClC,IAAIE,EAAWl7E,EAAMk7E,SACjBC,EAAWn7E,EAAMm7E,SACjB1oF,EAAQuN,EAAMvN,MAGlB,OAFAuN,EAAMvN,MAAQg5T,EAAMh5T,EAAO0oF,EAAUD,GACrC7oH,OAAOa,OAAO8sC,GAAO,IAAA2gU,wBAAuB3gU,IACrCA,CACT,GACC,CACDpoB,IAAK,aACL1jB,MAAO,SAAoBkhH,GACzB,IAAIl3E,EAAW,IAAI,UAAoBnrC,KAAK6sH,gBAC5C,OAAOxK,GAAOl3E,EAASu+E,UAAUrH,EACnC,GACC,CACDx9F,IAAK,sBACL1jB,MAAO,SAA6Bg92C,GAClC,IAAI91vC,EAAiB81vC,EAAM91vC,eACvBhG,EAAM87vC,EAAM97vC,IAEhB,OADe,IAAI,UAAoBriH,KAAK6sH,gBAC5B4gP,6BAA6B,CAC3C3uL,OAAQz2D,EACRhG,IAAKA,GAET,GACC,CACDx9F,IAAK,oBACL1jB,MAAO,SAA2Bi92C,GAChC,IAAIt8wC,EAAQs8wC,EAAMt8wC,MACd4mB,EAAY01vC,EAAM11vC,UAClB21vC,EAAuBr+2C,KAAK6sH,eAC5B5E,EAAUo2vC,EAAqBp2vC,QAC/BC,EAAUm2vC,EAAqBn2vC,QAEnC,OAAOwwO,EADIhwO,EAAY7lH,KAAKqmC,KAAK44D,GACdomB,EAASD,EAC9B,GACC,CACDpjG,IAAK,+BACL1jB,MAAO,SAAsCi8Z,GAC3C,IAAItzS,EAAcszS,EAAOtzS,YACrBC,EAAcqzS,EAAOrzS,YACrBvB,EAAe40S,EAAO50S,aACtBC,EAAa20S,EAAO30S,WACxBsB,EAAc2uO,EAAM3uO,GAAc,EAAG,GACrC,IAAIu0vC,EAAwBt+2C,KAAK6sH,eAC7BzE,EAAWk2vC,EAAsBl2vC,SACjCD,EAAWm2vC,EAAsBn2vC,SAEjCzoF,EAAQ+oF,EAQZ,OANIsB,EAAc,EAChBrqF,EAAQ+oF,EAAasB,GAAe5B,EAAWM,GACtCsB,EAAc,IACvBrqF,EAAQ+oF,EAAasB,GAAe3B,EAAWK,IAG1C,CACL/oF,MAAOA,EACPF,QAXYgpF,EAAe,IAAMsB,EAarC,GACC,CACDjlG,IAAK,qBACL1jB,MAAO,SAA4BkhH,EAAKyG,GACtC,IAAI1C,EAAS/D,EAAI,GAAKyG,EAAS,GAC3Ba,EAAStH,EAAI,GAAKyG,EAAS,GAC3Bc,EAAUvH,EAAI,GACdwH,EAASf,EAAS,GAClBy1vC,EAAwBv+2C,KAAK6sH,eAC7B9tF,EAAQw/0C,EAAsBx/0C,MAC9BC,EAASu/0C,EAAsBv/0C,OAC/B8qF,EAAc1D,EAASrnF,EACvBgrF,EAAc,EAalB,OAXIJ,EAAS,EACP9mH,KAAKmjH,IAAIhnF,EAAS6qF,GA3TF,IA4TlBE,EAAcJ,GAAUE,EAAS7qF,GA3TzB,KA6TD2qF,EAAS,GACdE,EA/TgB,IAgUlBE,EAAc,EAAIH,EAAUC,GAKzB,CACLC,YAAaA,EACbC,YAHFA,EAAclnH,KAAKgL,IAAI,EAAGhL,KAAK8K,KAAK,EAAGo8G,IAKzC,KAGKhC,CACT,CA1Ue,GCvBf,SAAS,EAAQ3qE,EAAQk4U,GAAkB,IAAIhiX,EAAOhU,OAAOgU,KAAK8pC,GAAS,GAAI99C,OAAOmB,sBAAuB,CAAE,IAAI80X,EAAUj2X,OAAOmB,sBAAsB28C,GAAak4U,IAAgBC,EAAUA,EAAQ1oW,QAAO,SAAU2oW,GAAO,OAAOl2X,OAAOmE,yBAAyB25C,EAAQo4U,GAAK7xX,UAAY,KAAI2P,EAAKzR,KAAKtB,MAAM+S,EAAMiiX,EAAU,CAAE,OAAOjiX,CAAM,CAEpV,SAAS,EAAcxD,GAAU,IAAK,IAAIlP,EAAI,EAAGA,EAAIR,UAAUC,OAAQO,IAAK,CAAE,IAAIiH,EAAyB,MAAhBzH,UAAUQ,GAAaR,UAAUQ,GAAK,CAAC,EAAOA,EAAI,EAAK,EAAQtB,OAAOuI,IAAS,GAAMqd,SAAQ,SAAUL,IAAO,OAAgB/U,EAAQ+U,EAAKhd,EAAOgd,GAAO,IAAevlB,OAAOq+B,0BAA6Br+B,OAAOkU,iBAAiB1D,EAAQxQ,OAAOq+B,0BAA0B91B,IAAmB,EAAQvI,OAAOuI,IAASqd,SAAQ,SAAUL,GAAOvlB,OAAO4D,eAAe4M,EAAQ+U,EAAKvlB,OAAOmE,yBAAyBoE,EAAQgd,GAAO,GAAM,CAAE,OAAO/U,CAAQ,CAIrhB,IAAIipY,GAAa,IAAAr6I,eAAc,CAC7BvzN,SAAU,KACV9b,IAAK,KACL+xH,UAAW,KACXo9tC,iBAAkB,KAClBtg1C,kBAAmB,KACnBmP,aAAc,OAELox0C,EAAqB1l+B,EAAW32W,SAsB3C22W,EAAW32W,SApBX,SAAyBgrK,GACvB,IAAIjsM,EAAQisM,EAAKjsM,MACb6+B,EAAWotK,EAAKptK,SAEhB0+0C,GAAY,IAAA5mnC,UAAS,MACrB8umC,GAAa,OAAe8X,EAAW,GACvCrv1C,EAAMu30C,EAAW,GACjB7l0C,EAAS6l0C,EAAW,GAEpBz5zC,GAAU,IAAA2xN,YAAWi6I,GAMzB,OALA53Y,EAAQ,EAAc,EAAc,CAClC4/B,OAAQA,GACPoM,GAAU,CAAC,EAAG,CACf9d,IAAK8d,GAAWA,EAAQ9d,KAAOA,GAC9BluB,GACI,gBAAoBs92C,EAAoB,CAC7Ct92C,MAAOA,GACN6+B,EACL,EAGA,UCtCA,EADkD,oBAAX99B,OAAyB,EAAAy0P,gBAAkB,EAAAr1N,UCElF,SAAS,EAAQ8b,EAAQk4U,GAAkB,IAAIhiX,EAAOhU,OAAOgU,KAAK8pC,GAAS,GAAI99C,OAAOmB,sBAAuB,CAAE,IAAI80X,EAAUj2X,OAAOmB,sBAAsB28C,GAAak4U,IAAgBC,EAAUA,EAAQ1oW,QAAO,SAAU2oW,GAAO,OAAOl2X,OAAOmE,yBAAyB25C,EAAQo4U,GAAK7xX,UAAY,KAAI2P,EAAKzR,KAAKtB,MAAM+S,EAAMiiX,EAAU,CAAE,OAAOjiX,CAAM,CAEpV,SAAS,EAAcxD,GAAU,IAAK,IAAIlP,EAAI,EAAGA,EAAIR,UAAUC,OAAQO,IAAK,CAAE,IAAIiH,EAAyB,MAAhBzH,UAAUQ,GAAaR,UAAUQ,GAAK,CAAC,EAAOA,EAAI,EAAK,EAAQtB,OAAOuI,IAAS,GAAMqd,SAAQ,SAAUL,IAAO,OAAgB/U,EAAQ+U,EAAKhd,EAAOgd,GAAO,IAAevlB,OAAOq+B,0BAA6Br+B,OAAOkU,iBAAiB1D,EAAQxQ,OAAOq+B,0BAA0B91B,IAAmB,EAAQvI,OAAOuI,IAASqd,SAAQ,SAAUL,GAAOvlB,OAAO4D,eAAe4M,EAAQ+U,EAAKvlB,OAAOmE,yBAAyBoE,EAAQgd,GAAO,GAAM,CAAE,OAAO/U,CAAQ,CAarhB,IACI6u2C,EAAmB,0DAIhB,SAASztuC,EAAYk8D,GAC1B,IAAIngK,EAAQmgK,EAAKngK,MACblO,EAAQquK,EAAKruK,MACbC,EAASouK,EAAKpuK,OAClB,OAAO,IAAI,UAAoB,EAAc,EAAc,EAAc,CAAC,EAAGiO,GAAQA,EAAMpP,WAAY,CAAC,EAAG,CACzGkB,MAAOA,EACPC,OAAQA,IAEZ,CACA,IACI4/0C,EAAkB,CACpBjg1C,SAAU,WACVI,MAAO,OACPC,OAAQ,OACRuiV,SAAU,UAER,EAAYjiX,OAAOa,OAAO,CAAC,EAAGs72C,EAAOhvuC,UAAW,CAClD1tG,MAAO,YAAoB,CAAC,SAAkB,WAC9CC,OAAQ,YAAoB,CAAC,SAAkB,WAC/Cf,SAAU,OACV4g1C,oBAAqB,OACrB/yuC,QAAS,OACTl8C,UAAW,SACXv7E,MAAO,SACPyq2C,sBAAuB,WAErB,EAAex/2C,OAAOa,OAAO,CAAC,EAAGs72C,EAAOvhuC,aAAc,CACxD2kuC,qBAAqB,EACrB/yuC,SAAS,EACT7tG,SA/BF,WAAiB,EAgCf2xD,UAAW,GACXv7E,MAAO,KACPyq2C,sBAAuB7B,IAGzB,SAAS8B,IAMP,OAAO,gBAAoB,MAAO,CAChCl61C,IAAK,UACL0G,GAAI,mBACJlX,MARU,CACVsqB,SAAU,WACVE,KAAM,EACNC,IAAK,IAMJ,gBAAoB,KAAM,CAC3Bja,IAAK,UACJ851C,GAAmB,gBAAoB,MAAO,CAC/C951C,IAAK,QACJ,oDAAqD,gBAAoB,IAAK,CAC/EA,IAAK,OACLoW,KAxDgB,uEAyDf,sBACL,CAeA,IAAI+j1C,GAAY,IAAApnnC,aAAW,SAAU3qN,EAAOrL,GAC1C,IAAI880C,GAAY,IAAA5mnC,WAAS,GACrB8umC,GAAa,OAAe8X,EAAW,GACvCO,EAAmBrY,EAAW,GAC9BsY,EAAgBtY,EAAW,GAE3BuY,GAAa,IAAArnnC,UAAS,CACxB/4N,MAAO,EACPC,OAAQ,IAEN8n0C,GAAa,OAAeqY,EAAY,GACxCv61C,EAAOki1C,EAAW,GAClBC,EAAUD,EAAW,GAErBsY,GAAY,IAAA9g1C,QAAO,MACnB+g1C,GAAY,IAAA/g1C,QAAO,MACnB05N,GAAe,IAAA15N,QAAO,MACtBgh1C,GAAa,IAAAhh1C,QAAO,MACpB6O,GAAU,IAAA2xN,YAAW,GACzB,GAA0B,WACxB,GAAKkgnC,EAAU7xlC,YAAf,CAIA,IAAIoylC,EAAS,IAAI9D,EAAO,EAAc,EAAc,EAAc,CAAC,EAAGxu0C,GAAQroB,GAAO,CAAC,EAAG,CACvF821C,SAAU,IACVt6tC,UAAWi+tC,EAAUt/0C,QACrBs9E,QAAS,SAAiBj2B,GAtFF,OAuFLA,EAAItlF,OAASslF,EAAItlF,MAAM2jB,QAAU2hE,EAAI3hE,SAERw51C,IAC5C531C,QAAQvlB,MAAM682C,GACdO,GAAc,IAGhBjy0C,EAAMowE,QAAQj2B,EAChB,KAEFg4xC,EAAUr/0C,QAAUw/0C,EAEhBpy0C,GAAWA,EAAQpM,QACrBoM,EAAQpM,OAAOw+0C,EAAOppsC,UAGxB,IAAI1yE,EAAiB,IAAI,KAAe,SAAUhnF,GAChD,GAAIA,EAAQ,GAAGs4b,YAAa,CAC1B,IAAIky5B,EAAwBxq1C,EAAQ,GAAGs4b,YACnCnqS,EAASq8rC,EAAsBlo0C,MAC/B8rI,EAAUo8rC,EAAsBjo0C,OACpC+n0C,EAAQ,CACNho0C,MAAO6rI,EACP5rI,OAAQ6rI,IAEV59H,EAAMhP,SAAS,CACbc,MAAO6rI,EACP5rI,OAAQ6rI,GAEZ,CACF,IAEA,OADApnE,EAAe3yB,QAAQknL,EAAaj4N,SAC7B,WACLw/0C,EAAOv+vC,WACPo+vC,EAAUr/0C,QAAU,KACpB0jE,EAAe1yB,YACjB,CA1CA,CA2CF,GAAG,IACH,GAA0B,WACpBquyC,EAAUr/0C,SACZq/0C,EAAUr/0C,QAAQsB,SAAS,EAAc,EAAc,CAAC,EAAG4L,GAAQroB,GAEvE,IACA,IAAIyK,EAAM+v1C,EAAUr/0C,SAAWq/0C,EAAUr/0C,QAAQo2I,UACjD,IAAAojF,qBAAoB33N,GAAK,WACvB,OAtFJ,SAAuBw90C,GACrB,MAAO,CACLjpsC,OAAQ,WACN,OAAOipsC,EAAUr/0C,SAAWq/0C,EAAUr/0C,QAAQo2I,QAChD,EACAqpsC,sBAAuB,SAA+Bz60C,GACpD,IAAI5b,EAAU/oB,UAAUC,OAAS,QAAsB0tC,IAAjB3tC,UAAU,GAAmBA,UAAU,GAAK,CAAC,EAC/EivB,EAAM+v1C,EAAUr/0C,SAAWq/0C,EAAUr/0C,QAAQo2I,SACjD,OAAO9mJ,GAAOA,EAAImw1C,sBAAsBz60C,EAAU5b,EACpD,EAEJ,CA2EWqwO,CAAc4lnC,EACvB,GAAG,IACH,IAAIxy1B,GAAgB,IAAAk7Y,cAAY,SAAUj0sB,GACxC,IAAI/jN,EAAS+jN,EAAM/jN,OAEfA,IAAWwv2C,EAAWv/0C,SACxBjwB,EAAOoslB,SAAS,EAAG,EAEvB,GAAG,IACC4oN,EAAWz1xB,GAAO,gBAAoBov1C,EAAoB,CAC5Dt92C,MAAO,EAAc,EAAc,CAAC,EAAGgsC,GAAU,CAAC,EAAG,CACnDhC,SAAUgC,EAAQhC,UAAY+lG,EAAY,EAAc,CACtD7hH,IAAKA,EACL4d,MAAOA,GACNroB,IACHyK,IAAKA,EACL+xH,UAAWj0G,EAAQi0G,WAAa42G,EAAaj4N,WAE9C,gBAAoB,MAAO,CAC5Blb,IAAK,eACL+qE,UAAW,WACXhuD,IAAK090C,EACLjr2C,MAAOuq2C,EACPa,SAAU7y1B,GACT3/e,EAAMjN,WACL4vD,EAAY3iD,EAAM2iD,UAClB7wD,EAAQkO,EAAMlO,MACdC,EAASiO,EAAMjO,OACf3qB,EAAQ44B,EAAM54B,MACdyq2C,EAAwB7x0C,EAAM6x0C,sBAC9Btj+B,EAAoBl8Y,OAAOa,OAAO,CACpCw+B,SAAU,YACTtqB,EAAO,CACR0qB,MAAOA,EACPC,OAAQA,IAEN8sG,EAAU7+F,EAAM6+F,SClMf,SAAoC7+F,GACzC,IALoBnsC,EAKhB4+2C,EAAct/2C,UAAUC,OAAS,QAAsB0tC,IAAjB3tC,UAAU,GAAmBA,UAAU,GAAK682C,EAEtF,IAAK,IAAI0C,KAAkBD,EAAa,CACtC,IAAInz2C,EAAOoz2C,EAAe592C,MAAM,EAAG,GAC/BwpJ,GATczqJ,EASU6+2C,EAAe592C,MAAM,IAR1C,GAAGwN,cAAgBzO,EAAEiB,MAAM,GAUlC,GAAa,QAATwK,GAAkB0gC,EAAMs+G,GAAYm0tC,EAAYC,GAClD,OAAO,EAGT,GAAa,QAATpz2C,GAAkB0gC,EAAMs+G,GAAYm0tC,EAAYC,GAClD,OAAO,CAEX,CAEA,OAAO,CACT,CDiLiCC,CAA2B3y0C,EAAMpP,WAAaoP,EAAO6x0C,GAChFrh1C,EAAWn+B,OAAOa,OAAO,CAAC,EAAGy+2C,EAAiB,CAChD5xqC,WAAYlhE,EAAU,UAAY,WAEpC,OAAO,gBAAoB,MAAO,CAChCjnH,IAAK,gBACL+c,IAAKo2N,EACL3jP,MAAOmnY,GACN,gBAAoB,MAAO,CAC5B32X,IAAK,aACL+c,IAAKy90C,EACLhr2C,MAAOopB,EACPmyD,UAAWA,IACTk1tB,GAAWm6jB,IAAqBhy0C,EAAM4x0C,qBAAuB,gBAAoBE,EAAgB,MACvG,IAEAC,EAAU7xlC,UAAY,WACpB,OAAO,KAAY,IAASA,WAC9B,EAEA6xlC,EAAUvyuC,UAAY,EACtBuyuC,EAAU9kuC,aAAe,EACzB,UEtNA,SAAS,EAAkBukF,EAAK5/F,IAAkB,MAAPA,GAAeA,EAAM4/F,EAAIp+N,UAAQw+H,EAAM4/F,EAAIp+N,QAAQ,IAAK,IAAIO,EAAI,EAAGmoW,EAAO,IAAItpW,MAAMo/H,GAAMj+H,EAAIi+H,EAAKj+H,IAAOmoW,EAAKnoW,GAAK69N,EAAI79N,GAAM,OAAOmoW,CAAM,CAKtL,IAAIxoM,EAAyB,WAC3B,SAASA,KACP,OAAgBvgK,KAAMugK,IAEtB,OAAgBvgK,KAAM,YAAa,GACrC,CA4CA,OA1CA,OAAaugK,EAAwB,CAAC,CACpC17I,IAAK,gBACL1jB,MAAO,SAAuBiqH,EAAcF,GAC1C,IACIs+P,EADAE,EAnBV,SAAoCppX,EAAGk62C,GAAkB,IAAIlv2C,EAAI,GAAsB,oBAAX5J,QAAgD,MAAtBpB,EAAEoB,OAAOC,UAAmB,CAAE,GAAIlC,MAAMkS,QAAQrR,KAAOgL,EAE7J,SAAqChL,EAAGunX,GAAU,GAAKvnX,EAAL,CAAgB,GAAiB,iBAANA,EAAgB,OAAO,EAAkBA,EAAGunX,GAAS,IAAIxoX,EAAIC,OAAOI,UAAU6E,SAAS3E,KAAKU,GAAGyB,MAAM,GAAI,GAAiE,MAAnD,WAAN1C,GAAkBiB,EAAEL,cAAaZ,EAAIiB,EAAEL,YAAYyK,MAAgB,QAANrL,GAAqB,QAANA,EAAoBI,MAAMse,KAAKzd,GAAc,cAANjB,GAAqB,2CAA2CgM,KAAKhM,GAAW,EAAkBiB,EAAGunX,QAAzG,CAA7O,CAA+V,CAF7P,CAA4BvnX,KAAOk62C,GAAkBl62C,GAAyB,iBAAbA,EAAED,OAAqB,CAAMiL,IAAIhL,EAAIgL,GAAI,IAAI1K,EAAI,EAAOoE,EAAI,WAAc,EAAG,MAAO,CAAElE,EAAGkE,EAAG3F,EAAG,WAAe,OAAIuB,GAAKN,EAAED,OAAe,CAAEa,MAAM,GAAe,CAAEA,MAAM,EAAOC,MAAOb,EAAEM,KAAQ,EAAGzB,EAAG,SAAWoJ,GAAM,MAAMA,CAAI,EAAG7F,EAAGsC,EAAK,CAAE,MAAM,IAAInF,UAAU,wIAA0I,CAAE,IAA6Cy3C,EAAzCqyU,GAAmB,EAAMC,GAAS,EAAY,MAAO,CAAE9oX,EAAG,WAAewK,EAAKhL,EAAEoB,OAAOC,WAAa,EAAGtC,EAAG,WAAe,IAAIqvW,EAAOpjW,EAAGvK,OAAsC,OAA9B4oX,EAAmBjb,EAAKxtW,KAAawtW,CAAM,EAAGvvW,EAAG,SAAW0qX,GAAOD,GAAS,EAAMtyU,EAAMuyU,CAAK,EAAGnnX,EAAG,WAAe,IAAWinX,GAAoC,MAAhBr+W,EAAW,QAAWA,EAAW,QAAK,CAAE,QAAU,GAAIs+W,EAAQ,MAAMtyU,CAAK,CAAE,EAAK,CAmB98B,CAA2Bt3C,KAAKs1Y,WAAa,IAG7D,IACE,IAAK5rB,EAAU5oX,MAAO0oX,EAAQE,EAAUrqX,KAAK6B,MAAO,CAClD,IAAI2jB,EAAM2kW,EAAMroX,MAEhB,IAAKoxI,EAAOnnB,EAAavmG,GAAMqmG,EAAUrmG,IACvC,OAAO,CAEX,CACF,CAAE,MAAOyyB,GACPoyU,EAAUvqX,EAAEm4C,EACd,CAAE,QACAoyU,EAAUhnX,GACZ,CAEA,OAAO,CACT,GACC,CACDmiB,IAAK,kBACL1jB,MAAO,SAAyBwpH,EAAYC,GAC1C,MAAO,CACLpkF,MAAOmkF,EACPlkF,IAAKmkF,EAET,GACC,CACD/lG,IAAK,mBACL1jB,MAAO,SAA0BwpH,EAAYC,EAAUxrH,GACrDyjI,GAAO,EAAO,sCAChB,GACC,CACDh+G,IAAK,cACL1jB,MAAO,SAAqBwpH,EAAYC,GACtC,OAAOA,EAAS5K,kBAClB,KAGKugD,CACT,CAlD6B,qCCX7B,SAASuoN,GAA2B1pX,EAAGD,GACrC,GAAIA,IAAM,WAAY,QAAQA,IAAM,mBAAqBA,GAAI,OAAOA,EACpE,QAAI,IAAWA,EAAG,MAAM,IAAIU,UAAU,4DACtC,OAAO,EAAAgg3C,EAAA,GAAsBzg3C,EAC/B,CCNA,SAAS6oX,GAAgB7oX,GACvB,OAAO6oX,GAAkB3oX,OAAOC,eAAiBD,OAAO2b,eAAe5X,OAAS,SAAUjE,GACxF,OAAOA,EAAEI,WAAaF,OAAO2b,eAAe7b,EAC9C,EAAG6oX,GAAgB7oX,EACrB,CCJA,IAAI0g3C,GAAwB,CAC1Bzg1C,UAAW,EACXG,QAAS,GAMJ,SAASszC,GAAQ05E,GACtB,OAAOrnH,OAAOuC,SAAS8kH,IAAS/sJ,MAAMkS,QAAQ66I,EAChD,CAMO,SAASuztC,GAA0Bx0tC,EAAUijN,EAAYC,GAK9D,OATF,SAA8BljN,GAC5B,OAAOA,KAAYu0tC,EACrB,CAGME,CAAqBz0tC,IAAa1oJ,KAAKmjH,IAAIyoP,EAAWD,GAAc,MACtEC,EAAWA,EAAW,EAAIA,EAAW,IAAMA,EAAW,KAGjDA,CACT,CCdA,SAAS,GAA2BnuW,EAAGk62C,GAAkB,IAAIlv2C,EAAI,GAAsB,oBAAX5J,QAAgD,MAAtBpB,EAAEoB,OAAOC,UAAmB,CAAE,GAAIlC,MAAMkS,QAAQrR,KAAOgL,EAE7J,SAAqChL,EAAGunX,GAAU,GAAKvnX,EAAL,CAAgB,GAAiB,iBAANA,EAAgB,OAAO,GAAkBA,EAAGunX,GAAS,IAAIxoX,EAAIC,OAAOI,UAAU6E,SAAS3E,KAAKU,GAAGyB,MAAM,GAAI,GAAiE,MAAnD,WAAN1C,GAAkBiB,EAAEL,cAAaZ,EAAIiB,EAAEL,YAAYyK,MAAgB,QAANrL,GAAqB,QAANA,EAAoBI,MAAMse,KAAKzd,GAAc,cAANjB,GAAqB,2CAA2CgM,KAAKhM,GAAW,GAAkBiB,EAAGunX,QAAzG,CAA7O,CAA+V,CAF7P,CAA4BvnX,KAAOk62C,GAAkBl62C,GAAyB,iBAAbA,EAAED,OAAqB,CAAMiL,IAAIhL,EAAIgL,GAAI,IAAI1K,EAAI,EAAOoE,EAAI,WAAc,EAAG,MAAO,CAAElE,EAAGkE,EAAG3F,EAAG,WAAe,OAAIuB,GAAKN,EAAED,OAAe,CAAEa,MAAM,GAAe,CAAEA,MAAM,EAAOC,MAAOb,EAAEM,KAAQ,EAAGzB,EAAG,SAAWoJ,GAAM,MAAMA,CAAI,EAAG7F,EAAGsC,EAAK,CAAE,MAAM,IAAInF,UAAU,wIAA0I,CAAE,IAA6Cy3C,EAAzCqyU,GAAmB,EAAMC,GAAS,EAAY,MAAO,CAAE9oX,EAAG,WAAewK,EAAKhL,EAAEoB,OAAOC,WAAa,EAAGtC,EAAG,WAAe,IAAIqvW,EAAOpjW,EAAGvK,OAAsC,OAA9B4oX,EAAmBjb,EAAKxtW,KAAawtW,CAAM,EAAGvvW,EAAG,SAAW0qX,GAAOD,GAAS,EAAMtyU,EAAMuyU,CAAK,EAAGnnX,EAAG,WAAe,IAAWinX,GAAoC,MAAhBr+W,EAAW,QAAWA,EAAW,QAAK,CAAE,QAAU,GAAIs+W,EAAQ,MAAMtyU,CAAK,CAAE,EAAK,CAIp+B,SAAS,GAAkBmnL,EAAK5/F,IAAkB,MAAPA,GAAeA,EAAM4/F,EAAIp+N,UAAQw+H,EAAM4/F,EAAIp+N,QAAQ,IAAK,IAAIO,EAAI,EAAGmoW,EAAO,IAAItpW,MAAMo/H,GAAMj+H,EAAIi+H,EAAKj+H,IAAOmoW,EAAKnoW,GAAK69N,EAAI79N,GAAM,OAAOmoW,CAAM,CAWtL,IAAIgF,GAA4B,CAAC,YAAa,WAAY,OAAQ,UAAW,SACzEkygC,GAAiB,CAAC,WAAY,YAAa,OAAQ,QAAS,UAC5DtkvC,GAA8B,CAAC,UAAW,SAC1CC,GAAe,CACjB/V,MAAO,IACPgW,MAAO,OCrBT,SAAS,GAA2Bv7H,EAAGk62C,GAAkB,IAAIlv2C,EAAI,GAAsB,oBAAX5J,QAAgD,MAAtBpB,EAAEoB,OAAOC,UAAmB,CAAE,GAAIlC,MAAMkS,QAAQrR,KAAOgL,EAE7J,SAAqChL,EAAGunX,GAAU,GAAKvnX,EAAL,CAAgB,GAAiB,iBAANA,EAAgB,OAAO,GAAkBA,EAAGunX,GAAS,IAAIxoX,EAAIC,OAAOI,UAAU6E,SAAS3E,KAAKU,GAAGyB,MAAM,GAAI,GAAiE,MAAnD,WAAN1C,GAAkBiB,EAAEL,cAAaZ,EAAIiB,EAAEL,YAAYyK,MAAgB,QAANrL,GAAqB,QAANA,EAAoBI,MAAMse,KAAKzd,GAAc,cAANjB,GAAqB,2CAA2CgM,KAAKhM,GAAW,GAAkBiB,EAAGunX,QAAzG,CAA7O,CAA+V,CAF7P,CAA4BvnX,KAAOk62C,GAAkBl62C,GAAyB,iBAAbA,EAAED,OAAqB,CAAMiL,IAAIhL,EAAIgL,GAAI,IAAI1K,EAAI,EAAOoE,EAAI,WAAc,EAAG,MAAO,CAAElE,EAAGkE,EAAG3F,EAAG,WAAe,OAAIuB,GAAKN,EAAED,OAAe,CAAEa,MAAM,GAAe,CAAEA,MAAM,EAAOC,MAAOb,EAAEM,KAAQ,EAAGzB,EAAG,SAAWoJ,GAAM,MAAMA,CAAI,EAAG7F,EAAGsC,EAAK,CAAE,MAAM,IAAInF,UAAU,wIAA0I,CAAE,IAA6Cy3C,EAAzCqyU,GAAmB,EAAMC,GAAS,EAAY,MAAO,CAAE9oX,EAAG,WAAewK,EAAKhL,EAAEoB,OAAOC,WAAa,EAAGtC,EAAG,WAAe,IAAIqvW,EAAOpjW,EAAGvK,OAAsC,OAA9B4oX,EAAmBjb,EAAKxtW,KAAawtW,CAAM,EAAGvvW,EAAG,SAAW0qX,GAAOD,GAAS,EAAMtyU,EAAMuyU,CAAK,EAAGnnX,EAAG,WAAe,IAAWinX,GAAoC,MAAhBr+W,EAAW,QAAWA,EAAW,QAAK,CAAE,QAAU,GAAIs+W,EAAQ,MAAMtyU,CAAK,CAAE,EAAK,CAIp+B,SAAS,GAAkBmnL,EAAK5/F,IAAkB,MAAPA,GAAeA,EAAM4/F,EAAIp+N,UAAQw+H,EAAM4/F,EAAIp+N,QAAQ,IAAK,IAAIO,EAAI,EAAGmoW,EAAO,IAAItpW,MAAMo/H,GAAMj+H,EAAIi+H,EAAKj+H,IAAOmoW,EAAKnoW,GAAK69N,EAAI79N,GAAM,OAAOmoW,CAAM,EDoBtJ,SAAUm3gC,IACxC,QAAUC,EAA2BD,GAErC,IApBoBz3/B,EAAeix+B,EAoB/Bhx+B,GApBgBD,EAoBM03/B,EApBSzmB,EAErC,WAAuC,GAAuB,oBAAZlh1C,UAA4BA,QAAQ+Q,UAAW,OAAO,EAAO,GAAI/Q,QAAQ+Q,UAAU3iB,KAAM,OAAO,EAAO,GAAqB,mBAAV4iB,MAAsB,OAAO,EAAM,IAAiF,OAA3EgC,KAAK9rB,UAAU6E,SAAS3E,KAAK4Y,QAAQ+Q,UAAUiC,KAAM,IAAI,WAAa,MAAY,CAAM,CAAE,MAAOrsB,GAAK,OAAO,CAAO,CAAE,CAFlQypX,GAAoC,WAAkC,IAAsCplW,EAAlCmlW,EAAQV,GAAgBQ,GAAkB,GAAIix+B,EAA2B,CAAE,IAAI7w+B,EAAYZ,GAAgBjoX,MAAMC,YAAaujB,EAAShL,QAAQ+Q,UAAUo/V,EAAOvoX,UAAWyoX,EAAY,MAASrlW,EAASmlW,EAAMpoX,MAAMP,KAAMI,WAAc,OAAO0oX,GAA2B9oX,KAAMwjB,EAAS,GAsBna,SAAS281C,IACP,IAAIzzzC,EAEAzf,EAAQ7sC,UAAUC,OAAS,QAAsB0tC,IAAjB3tC,UAAU,GAAmBA,UAAU,GAAK,CAAC,EASjF,OAPA,OAAgBJ,KAAMmg3C,GAEtBzzzC,EAAQg8T,EAAO9oX,KAAKI,OAEpB,QAAgB,OAAuB0sD,GAAQ,YAAaqhT,IAE5DrhT,EAAMzf,MAAQ3tC,OAAOa,OAAO,CAAC,EAAGy7H,GAAc3uF,GACvCyf,CACT,EAEA,OAAayzzC,EAA2B,CAAC,CACvCt71C,IAAK,kBACL1jB,MAAO,SAAyBwpH,EAAYC,GAC1C,IAII4+P,EAJA42/B,EAAqB,CAAC,EACtBC,EAAmB,CAAC,EAEpB32/B,EAAY,GAA2Bu2/B,IAG3C,IACE,IAAKv2/B,EAAU5oX,MAAO0oX,EAAQE,EAAUrqX,KAAK6B,MAAO,CAClD,IAAI2jB,EAAM2kW,EAAMroX,MACZqtW,EAAa7jP,EAAW9lG,GACxB4pV,EAAW7jP,EAAS/lG,GACxBg+G,EAAO/vD,GAAQ07R,IAAe17R,GAAQ27R,GAAW,GAAGzsW,OAAO6iB,EAAK,qCAChEu71C,EAAmBv71C,GAAO2pV,EAC1B6xgC,EAAiBx71C,GAAOk71C,GAA0Bl71C,EAAK2pV,EAAYC,EACrE,CACF,CAAE,MAAOn3T,GACPoyU,EAAUvqX,EAAEm4C,EACd,CAAE,QACAoyU,EAAUhnX,GACZ,CAEA,IACIgoY,EADAC,EAAa,GAA2BhvQ,IAG5C,IACE,IAAKgvQ,EAAW7pY,MAAO4pY,EAASC,EAAWtrY,KAAK6B,MAAO,CACrD,IAAIwnP,EAAOgiJ,EAAOvpY,MAEdm/2C,EAAc31vC,EAAW+9H,IAAS,EAElC63nC,EAAY31vC,EAAS89H,IAAS,EAElC03nC,EAAmB13nC,GAAQ43nC,EAC3BD,EAAiB33nC,GAAQq3nC,GAA0Br3nC,EAAM43nC,EAAaC,EACxE,CACF,CAAE,MAAOjp0C,GACPqzV,EAAWxrY,EAAEm4C,EACf,CAAE,QACAqzV,EAAWjoY,GACb,CAEA,MAAO,CACL8jC,MAAO450C,EACP350C,IAAK450C,EAET,GACC,CACDx71C,IAAK,mBACL1jB,MAAO,SAA0BwpH,EAAYC,EAAUxrH,GACrD,IAGIoh3C,EAHAr10C,GAAW,IAAA6iU,eAAcrjP,EAAYC,EAAUxrH,EAAGY,KAAKitC,OAEvDwz0C,EAAa,GAA2B9kvC,IAG5C,IACE,IAAK8kvC,EAAW3/2C,MAAO0/2C,EAASC,EAAWph3C,KAAK6B,MAAO,CACrD,IAAI2jB,EAAM271C,EAAOr/2C,MACjBgqC,EAAStmB,GAAO4zU,EAAK9tO,EAAW9lG,GAAM+lG,EAAS/lG,GAAMzlB,EACvD,CACF,CAAE,MAAOk4C,GACPmp0C,EAAWth3C,EAAEm4C,EACf,CAAE,QACAmp0C,EAAW/92C,GACb,CAEA,OAAOyoC,CACT,GACC,CACDtmB,IAAK,cACL1jB,MAAO,SAAqBwpH,EAAYC,GACtC,IAAI5K,EAAqB4K,EAAS5K,mBAMlC,MAJ2B,SAAvBA,IACFA,GAAqB,IAAA+uP,kBAAiBpkP,EAAYC,EAAU5qH,KAAKitC,QAG5D+yE,CACT,IAIJ,CAxGgC,CAwG9BugD,GCjHF,IAAI,GAA4B,CAAC,YAAa,WAAY,OAAQ,UAAW,SAEzEN,GAAqB,SAAUigtC,IACjC,QAAUjgtC,EAAoBigtC,GAE9B,IAdoBz3/B,EAAeix+B,EAc/Bhx+B,GAdgBD,EAcMxoN,EAdSy5rC,EAErC,WAAuC,GAAuB,oBAAZlh1C,UAA4BA,QAAQ+Q,UAAW,OAAO,EAAO,GAAI/Q,QAAQ+Q,UAAU3iB,KAAM,OAAO,EAAO,GAAqB,mBAAV4iB,MAAsB,OAAO,EAAM,IAAiF,OAA3EgC,KAAK9rB,UAAU6E,SAAS3E,KAAK4Y,QAAQ+Q,UAAUiC,KAAM,IAAI,WAAa,MAAY,CAAM,CAAE,MAAOrsB,GAAK,OAAO,CAAO,CAAE,CAFlQ,GAAoC,WAAkC,IAAsCqkB,EAAlCmlW,EAAQV,GAAgBQ,GAAkB,GAAIix+B,EAA2B,CAAE,IAAI7w+B,EAAYZ,GAAgBjoX,MAAMC,YAAaujB,EAAShL,QAAQ+Q,UAAUo/V,EAAOvoX,UAAWyoX,EAAY,MAASrlW,EAASmlW,EAAMpoX,MAAMP,KAAMI,WAAc,OAAO0oX,GAA2B9oX,KAAMwjB,EAAS,GAgBna,SAASy8I,IACP,IAAIvzG,EAEArQ,EAAOj8C,UAAUC,OAAS,QAAsB0tC,IAAjB3tC,UAAU,GAAmBA,UAAU,GAAK,CAAC,EAkBhF,OAhBA,OAAgBJ,KAAMigK,GAEtBvzG,EAAQg8T,EAAO9oX,KAAKI,MAEhBP,MAAMkS,QAAQ0qC,KAChBA,EAAO,CACL4tE,gBAAiB5tE,IAIrBqQ,EAAM4oV,UAAYj5V,EAAK4tE,iBAAmB,GAEtC5tE,EAAK4pE,SACPv5D,EAAMu5D,OAAS5pE,EAAK4pE,QAGfv5D,CACT,CA4EA,OA1EA,OAAauzG,EAAoB,CAAC,CAChCp7I,IAAK,kBACL1jB,MAAO,SAAyBwpH,EAAYC,GAC1C,IAAIw1vC,EAAqB,CAAC,EACtBC,EAAmB,CAAC,EAExB,GAAIrg3C,KAAKimH,OAAQ,CACfm6vC,EAAmBn6vC,OAASjmH,KAAKimH,OACjC,IAAIy6vC,EAAe,IAAI,UAAoB/1vC,GAAYjB,UAAU1pH,KAAKimH,QACtE3mH,OAAOa,OAAOkg3C,EAAkBz1vC,EAAU,CACxC3E,OAAQ,IAAI,UAAoB2E,GAAU0M,QAAQopvC,GAClDA,aAAcA,GAElB,CAEA,IACIl3/B,EADAE,EAAY,GAA2B1pX,KAAKs1Y,WAGhD,IACE,IAAK5rB,EAAU5oX,MAAO0oX,EAAQE,EAAUrqX,KAAK6B,MAAO,CAClD,IAAI2jB,EAAM2kW,EAAMroX,MACZqtW,EAAa7jP,EAAW9lG,GACxB4pV,EAAW7jP,EAAS/lG,GACxBg+G,EAAO/vD,GAAQ07R,IAAe17R,GAAQ27R,GAAW,GAAGzsW,OAAO6iB,EAAK,qCAChEu71C,EAAmBv71C,GAAO2pV,EAC1B6xgC,EAAiBx71C,GAAOk71C,GAA0Bl71C,EAAK2pV,EAAYC,EACrE,CACF,CAAE,MAAOn3T,GACPoyU,EAAUvqX,EAAEm4C,EACd,CAAE,QACAoyU,EAAUhnX,GACZ,CAEA,MAAO,CACL8jC,MAAO450C,EACP350C,IAAK450C,EAET,GACC,CACDx71C,IAAK,mBACL1jB,MAAO,SAA0BwpH,EAAYC,EAAUxrH,GACrD,IAGIsrY,EAHAv/V,EAAW,CAAC,EAEZw/V,EAAa,GAA2B3qY,KAAKs1Y,WAGjD,IACE,IAAK3K,EAAW7pY,MAAO4pY,EAASC,EAAWtrY,KAAK6B,MAAO,CACrD,IAAI2jB,EAAM6lX,EAAOvpY,MACjBgqC,EAAStmB,GAAO4zU,EAAK9tO,EAAW9lG,GAAM+lG,EAAS/lG,GAAMzlB,EACvD,CACF,CAAE,MAAOk4C,GACPqzV,EAAWxrY,EAAEm4C,EACf,CAAE,QACAqzV,EAAWjoY,GACb,CAEA,GAAIkoH,EAAS3E,OAAQ,CACnB,IAAI06vC,EAAwB,IAAI,UAAoBrh3C,OAAOa,OAAO,CAAC,EAAGyqH,EAAUz/E,IAAWsiU,6BAA6B,CACtH3uL,OAAQl0D,EAAS81vC,aACjBr+vC,IAAKo2O,EAAK9tO,EAAW1E,OAAQ2E,EAAS3E,OAAQ7mH,KAE5Cwh3C,GAAyB,OAAeD,EAAuB,GAC/Dth1C,EAAYuh1C,EAAuB,GACnCzh1C,EAAWyh1C,EAAuB,GAEtCz10C,EAAS9L,UAAYA,EACrB8L,EAAShM,SAAWA,CACtB,CAEA,OAAOgM,CACT,KAGK80H,CACT,CAxGyB,CAwGvBM,GCzHE,GAAO,WAAiB,EAcxBR,GAAgB,CAClB//C,mBAAoB,EACpBwF,iBAAkB,SAA0BpmH,GAC1C,OAAOA,CACT,EACA+jH,uBAAwB,IAAI88C,GAC5B/zC,uBAXO,EAYPE,kBAAmB,GACnBK,sBAAuB,GACvBC,gBAAiB,IAGflC,GAAoB,WACtB,SAASA,IACP,IAAI99D,EAAQ1sD,KAERq8C,EAAOj8C,UAAUC,OAAS,QAAsB0tC,IAAjB3tC,UAAU,GAAmBA,UAAU,GAAK,CAAC,GAEhF,OAAgBJ,KAAMwqH,IAEtB,OAAgBxqH,KAAM,kBAAmB,OAEzC,OAAgBA,KAAM,sBAAsB,WAC1C0sD,EAAMm0zC,gBAAkBvqwC,sBAAsB5pD,EAAMo0zC,oBAEpDp0zC,EAAMq0zC,iBACR,IAEA/g3C,KAAKitC,MAAQ,KACbjtC,KAAKw+2C,iBAAmBni0C,EAAKmi0C,kBAAoB,GACjDx+2C,KAAKygH,cAAgBpkE,EAAKokE,eAAiB,GAC3CzgH,KAAK6lD,KAAOxJ,EAAK5U,SAAWjc,KAAKC,GACnC,CAmLA,OAjLA,OAAa++F,EAAmB,CAAC,CAC/B3lG,IAAK,0BACL1jB,MAAO,WACL,OAAOnB,KAAK6g3C,gBAAkB7g3C,KAAK2L,MAAMo/G,kBAAoB,IAC/D,GACC,CACDlmG,IAAK,wBACL1jB,MAAO,SAA+B+pH,GACpC,IAAIE,EAAeprH,KAAKitC,MAGxB,GAFAjtC,KAAKitC,MAAQi+E,GAERE,GAAgBprH,KAAKqrH,4BAA4BD,EAAcF,GAClE,OAAO,EAGT,GAAIlrH,KAAKsrH,qBAAqBJ,GAAY,CACxC,IAAIP,EAAarrH,OAAOa,OAAO,CAAC,EAAGirH,GAC/BR,EAAWtrH,OAAOa,OAAO,CAAC,EAAG+qH,GAEjC,GAAIlrH,KAAKgh3C,4BACP51vC,EAAaqB,wBA1DR,IA4DDzsH,KAAK2L,MAAM6/G,aACblsH,OAAOa,OAAOwqH,EAAY3qH,KAAK2L,MAAMi/G,UAErCtrH,OAAOa,OAAOwqH,EAAY3qH,KAAK2L,MAAMo/G,mBA7DvC,IAgEI/qH,KAAK2L,MAAM6/G,cAA2C,CACxD,IAAIyoE,EAAcj0L,KAAK6lD,OACnBugM,GAAMnyD,EAAcj0L,KAAK2L,MAAMg1D,WAAa3gE,KAAK2L,MAAM05C,SAC3DulE,EAAS5K,mBAAqBhgH,KAAK2L,MAAM05C,UAAY4uI,EAAcj0L,KAAK2L,MAAMg1D,WAC9EiqD,EAASpF,iBA9Ed,SAA4BqF,EAAQu7H,GACzC,IAAI30D,EAAK5mE,EAAOu7H,GAChB,OAAO,SAAUhnP,GACf,OAAO,GAAK,EAAIqyL,IAAO5mE,EAAOzrH,GAAK,EAAIgnP,GAAMA,GAAM30D,EACrD,CACF,CAyEwCwvrC,CAAmBjh3C,KAAK2L,MAAMk/G,OAAQu7H,GAClEx7H,EAASzH,uBAAyBwH,EAAWxH,sBAC/C,CAOF,OAJAyH,EAASwB,oBAETpsH,KAAKyrH,mBAAmBd,EAAYC,IAE7B,CACT,CAQA,OANI5qH,KAAKgh3C,4BACP51vC,EAAaqB,wBAEbzsH,KAAKkh3C,mBAGA,CACT,GACC,CACDr81C,IAAK,0BACL1jB,MAAO,WACL,OAAO8R,QAAQjT,KAAK6g3C,gBACtB,GACC,CACDh81C,IAAK,uBACL1jB,MAAO,SAA8B8rC,GACnC,IAAI+yE,EAAqB/yE,EAAM+yE,mBAC3BmD,EAAyBl2E,EAAMk2E,uBACnC,OAAQnD,EAAqB,GAA4B,SAAvBA,IAAkC/sG,QAAQkwG,EAC9E,GACC,CACDt+F,IAAK,kCACL1jB,MAAO,SAAyC8rC,GAC9C,QAAIjtC,KAAK2L,MAAMo/G,mBACN/qH,KAAK2L,MAAM++G,aAAaiB,cAAc1+E,EAAOjtC,KAAK2L,MAAMo/G,kBAInE,GACC,CACDlmG,IAAK,8BACL1jB,MAAO,SAAqCiqH,EAAcF,GACxD,OAAKE,IAIDprH,KAAKgh3C,0BArHL,IAsHKhh3C,KAAK2L,MAAM6/G,cAA6CxrH,KAAK0rH,gCAAgCR,IAGlGlrH,KAAKsrH,qBAAqBJ,IACrBA,EAAU/H,uBAAuBwI,cAAcP,EAAcF,GAIxE,GACC,CACDrmG,IAAK,qBACL1jB,MAAO,SAA4BwpH,EAAYC,GAC7CiY,EAAO7iI,KAAKsrH,qBAAqBV,IAE7B5qH,KAAK6g3C,iBACPpqwC,qBAAqBz2G,KAAK6g3C,iBAG5B,IAAI19vC,EAAyByH,EAASzH,uBAClC99D,EAAW89D,EAAuB2I,YAAc3I,EAAuB2I,YAAYnB,EAAYC,GAAYA,EAAS5K,mBAExH,GAAiB,IAAb36D,EAAJ,CAIA,IAAI0mE,EAAenB,EAASzH,uBAAuB6I,gBAAgBrB,EAAYC,GAC3EzG,EAAmB,CACrBwI,cAAc,EACdzG,UAAWyE,EAAWhrF,OAASirF,EAASjrF,KACxCulF,UAAWyF,EAAWtrF,YAAcurF,EAASvrF,WAAasrF,EAAWxrF,WAAayrF,EAASzrF,SAC3FumF,WAAYiF,EAAWnrF,UAAYorF,EAASprF,SAAWmrF,EAAWjrF,QAAUkrF,EAASlrF,OAEvF1/B,KAAK2L,MAAQ,CACX05C,SAAUA,EACVwlE,OAAQD,EAASpF,iBACjBkF,aAAcE,EAASzH,uBACvBqI,aAAcZ,EAASsB,uBACvBvrD,UAAW3gE,KAAK6lD,OAChB8kE,WAAYoB,EAAavlF,MACzBokF,SAAUmB,EAAatlF,IACvBspN,UAAW,KACXhlI,kBAAmB,CAAC,GAGtB/qH,KAAK8g3C,qBAEL9g3C,KAAKygH,cAAc0D,EAvBnB,CAwBF,GACC,CACDt/F,IAAK,iBACL1jB,MAAO,WACDnB,KAAK6g3C,kBACPpqwC,qBAAqBz2G,KAAK6g3C,iBAC1B7g3C,KAAK6g3C,gBAAkB,MAGzB7g3C,KAAKygH,cAAc,CACjBkM,cAAc,EACdzG,WAAW,EACXhB,WAAW,EACXQ,YAAY,GAEhB,GACC,CACD7gG,IAAK,kBACL1jB,MAAO,WACL,IAAI8yL,EAAcj0L,KAAK6lD,OACnBuzH,EAAcp5K,KAAK2L,MACnBg1D,EAAYy4G,EAAYz4G,UACxBtb,EAAW+zH,EAAY/zH,SACvBwlE,EAASuuD,EAAYvuD,OACrBH,EAAe0uD,EAAY1uD,aAC3BC,EAAayuD,EAAYzuD,WACzBC,EAAWwuD,EAAYxuD,SACvBu2vC,GAAY,EACZ/h3C,GAAK60L,EAActzH,GAAatb,EAEhCjmD,GAAK,IACPA,EAAI,EACJ+h3C,GAAY,GAGd/h3C,EAAIyrH,EAAOzrH,GACX,IAAI+rC,EAAWu/E,EAAaI,iBAAiBH,EAAYC,EAAUxrH,GAC/Dgi3C,EAAW,IAAIr5vC,EAASzoH,OAAOa,OAAO,CAAC,EAAGH,KAAKitC,MAAO9B,IAC1DnrC,KAAK2L,MAAMo/G,kBAAoBq2vC,EAASh9vC,mBACxCpkH,KAAKw+2C,iBAAiBx+2C,KAAK2L,MAAMo/G,kBAAmB/qH,KAAKitC,OAErDk00C,IACFnh3C,KAAKkh3C,iBAELlh3C,KAAKitC,MAAMy/E,kBAEf,KAGKlC,CACT,CAxMwB,IA0MxB,OAAgBA,GAAmB,eAAgBu1C,oBCvOnD,SAAS,GAAQ3iH,EAAQk4U,GAAkB,IAAIhiX,EAAOhU,OAAOgU,KAAK8pC,GAAS,GAAI99C,OAAOmB,sBAAuB,CAAE,IAAI80X,EAAUj2X,OAAOmB,sBAAsB28C,GAAak4U,IAAgBC,EAAUA,EAAQ1oW,QAAO,SAAU2oW,GAAO,OAAOl2X,OAAOmE,yBAAyB25C,EAAQo4U,GAAK7xX,UAAY,KAAI2P,EAAKzR,KAAKtB,MAAM+S,EAAMiiX,EAAU,CAAE,OAAOjiX,CAAM,CAEpV,SAAS,GAAcxD,GAAU,IAAK,IAAIlP,EAAI,EAAGA,EAAIR,UAAUC,OAAQO,IAAK,CAAE,IAAIiH,EAAyB,MAAhBzH,UAAUQ,GAAaR,UAAUQ,GAAK,CAAC,EAAOA,EAAI,EAAK,GAAQtB,OAAOuI,IAAS,GAAMqd,SAAQ,SAAUL,IAAO,OAAgB/U,EAAQ+U,EAAKhd,EAAOgd,GAAO,IAAevlB,OAAOq+B,0BAA6Br+B,OAAOkU,iBAAiB1D,EAAQxQ,OAAOq+B,0BAA0B91B,IAAmB,GAAQvI,OAAOuI,IAASqd,SAAQ,SAAUL,GAAOvlB,OAAO4D,eAAe4M,EAAQ+U,EAAKvlB,OAAOmE,yBAAyBoE,EAAQgd,GAAO,GAAM,CAAE,OAAO/U,CAAQ,CAKrhB,IAAIiwG,GAAsB,CACxBC,mBAAoB,GAEXqhwC,GAA0B,CACnCrhwC,mBAAoB,IACpBwF,iBAAkB,SAA0BpmH,GAC1C,OAAOA,CACT,EACA+jH,uBAAwB,IAAI88C,GAC5B/zC,uBDJO,GCMLo1vC,GAAkB,IAElBrhwC,GAAiB,SAAwB7gH,GAC3C,OAAO,GAAK,EAAIA,IAAM,EAAIA,EAC5B,EAEI0tC,GACK,CAAC,SADNA,GAEG,CAAC,WAAY,UAAW,UAF3BA,GAGK,CAAC,aAAc,YAAa,YAHjCA,GAIU,CAAC,cAAe,aAAc,aAJxCA,GAKU,CAAC,aALXA,GAMQ,CAAC,WAGTk9E,GAAgB,WAClB,SAASA,IACP,IAAIt9D,EAAQ1sD,MAEZ,OAAgBA,KAAMgqH,IAEtB,OAAgBhqH,KAAM,SAAU,KAEhC,OAAgBA,KAAM,cAAc,IAEpC,OAAgBA,KAAM,WAAW,IAEjC,OAAgBA,KAAM,cAAc,IAEpC,OAAgBA,KAAM,mBAAmB,IAEzC,OAAgBA,KAAM,aAAa,IAEnC,OAAgBA,KAAM,eAAe,IAErC,OAAgBA,KAAM,YAAY,IAElC,OAAgBA,KAAM,oBAAqB,CACzCogH,YAAY,KAGd,OAAgBpgH,KAAM,UAAW,CAAC,IAElC,OAAgBA,KAAM,wBAAwB,SAAUi5D,GACtD35D,OAAOa,OAAOusD,EAAMq2D,kBAAmB9pD,GAEnCvM,EAAM+zD,eACR/zD,EAAM+zD,cAAc/zD,EAAMq2D,kBAE9B,KAEA,OAAgB/iH,KAAM,iBAAiB,SAAUuh3C,EAAapytC,GAC5DziG,EAAM8xzC,iBAAiB+C,EAAa70zC,EAAMq2D,kBAAmBosC,EAC/D,IAEAnvJ,KAAK2gH,YAAc3gH,KAAK2gH,YAAYt9G,KAAKrD,MACzCA,KAAKwh3C,mBAAqB,IAAIh3vC,GAAkB,CAC9Cg0vC,iBAAkBx+2C,KAAKwgH,cACvBC,cAAezgH,KAAK0gH,sBAExB,CA8oBA,OA5oBA,OAAasJ,EAAe,CAAC,CAC3BnlG,IAAK,cACL1jB,MAAO,SAAqBs9B,GAC1Bz+B,KAAKoh3C,SAAWph3C,KAAKyh3C,cACrB,IAAIrgwC,EAAoBphH,KAAKqhH,mBAE7B,OAAQ5iF,EAAMlyB,MACZ,IAAK,WACH,OAAO60G,GAA4BphH,KAAKshH,YAAY7iF,GAEtD,IAAK,UACH,OAAOz+B,KAAKuhH,OAAO9iF,GAErB,IAAK,SACH,OAAOz+B,KAAKwhH,UAAU/iF,GAExB,IAAK,aACH,OAAO2iF,GAA4BphH,KAAKyhH,cAAchjF,GAExD,IAAK,YACH,OAAOz+B,KAAK0hH,SAASjjF,GAEvB,IAAK,WACH,OAAOz+B,KAAK2hH,YAAYljF,GAE1B,IAAK,cACH,OAAO2iF,GAA4BphH,KAAK4hH,kBAAkBnjF,GAE5D,IAAK,aACH,OAAOz+B,KAAK6hH,aAAapjF,GAE3B,IAAK,YACH,OAAOz+B,KAAK8hH,gBAAgBrjF,GAE9B,IAAK,YACH,OAAOz+B,KAAK+hH,aAAatjF,GAE3B,IAAK,QACH,OAAOz+B,KAAKgiH,SAASvjF,GAEvB,IAAK,UACH,OAAOz+B,KAAKiiH,WAAWxjF,GAEzB,QACE,OAAO,EAEb,GACC,CACD5Z,IAAK,YACL1jB,MAAO,SAAmBs9B,GACxB,IAAIij1C,EAAsBjj1C,EAAM0jF,aAGhC,MAAO,CAFCu/vC,EAAoBz92C,EACpBy92C,EAAoB1+2C,EAE9B,GACC,CACD6hB,IAAK,uBACL1jB,MAAO,SAA8Bs9B,GACnC,IAAIikF,EAAWjkF,EAAMikF,SACrB,OAAOzvG,QAAQyvG,EAASC,SAAWD,EAASE,QAAUF,EAASG,SAAWH,EAASI,SACrF,GACC,CACDj+F,IAAK,cACL1jB,MAAO,SAAqBiwB,GAC1B,IAAIqpW,EAASz6X,KAETijH,EAAQp9F,YAAW,WACjB40W,EAAOp5Q,qBAAuB4B,IAChCw3Q,EAAOp5Q,mBAAqB,KAEhC,GAAGjwF,GACHpxB,KAAKqhH,mBAAqB4B,CAC5B,GACC,CACDp+F,IAAK,iBACL1jB,MAAO,SAAwBwg3C,EAAaz9vC,EAAYC,GACtD,IAAIgrC,EAAcnvJ,KAAKoh3C,oBAAoBr5vC,EAAW/nH,KAAKoh3C,SAASh9vC,mBAAqBpkH,KAAKoh3C,SAE1FG,EAAc,GAAc,GAAc,CAAC,EAAGI,EAAYv9vC,oBAAqBF,GAE/E09vC,EAAmBti3C,OAAOgU,KAAKiu2C,GAAa550C,MAAK,SAAU9iB,GAC7D,OAAOsqI,EAAYtqI,KAAS081C,EAAY181C,EAC1C,IACA7kB,KAAKimB,OAAS071C,EAAYr9vC,WAE1BtkH,KAAK0gH,qBAAqByD,GAEtBy9vC,GACF5h3C,KAAKw+2C,iBAAiB+C,EAAavh3C,KAAK+iH,kBAAmBosC,EAE/D,GACC,CACDtqI,IAAK,cACL1jB,MAAO,SAAqBk4J,GAC1B,OAAO,IAAItxC,EAAS,GAAc,GAAc,GAAc,CAAC,EAAG/nH,KAAK6h3C,eAAgB7h3C,KAAKimB,QAASozI,GACvG,GACC,CACDx0I,IAAK,aACL1jB,MAAO,WACL,OAAOnB,KAAK+iH,kBAAkB3C,UAChC,GACC,CACDv7F,IAAK,aACL1jB,MAAO,SAAoBgoB,GACzB,IAAIq11C,EAAmBr11C,EAAQq11C,iBAC3B/9vC,EAAgBt3F,EAAQs3F,cACxBqhwC,EAAwB341C,EAAQkkB,aAChCA,OAAyC,IAA1By00C,EAAmC9h3C,KAAKqtC,aAAey00C,EACtEC,EAAwB541C,EAAQ26F,cAChCA,OAA0C,IAA1Bi+vC,GAA0CA,EAC1DC,EAAsB741C,EAAQo6F,WAC9BA,OAAqC,IAAxBy+vC,EAAiChi3C,KAAKujH,WAAay+vC,EAChEC,EAAmB941C,EAAQq6F,QAC3BA,OAA+B,IAArBy+vC,EAA8Bji3C,KAAKwjH,QAAUy+vC,EACvDC,EAAsB/41C,EAAQs6F,WAC9BA,OAAqC,IAAxBy+vC,EAAiCli3C,KAAKyjH,WAAay+vC,EAChEC,EAAwBh51C,EAAQu6F,gBAChCA,OAA4C,IAA1By+vC,EAAmCni3C,KAAK0jH,gBAAkBy+vC,EAC5EC,EAAqBj51C,EAAQw6F,UAC7BA,OAAmC,IAAvBy+vC,EAAgCpi3C,KAAK2jH,UAAYy+vC,EAC7DC,EAAuBl51C,EAAQy6F,YAC/BA,OAAuC,IAAzBy+vC,EAAkCri3C,KAAK4jH,YAAcy+vC,EACnEC,EAAoBn51C,EAAQ06F,SAC5BA,OAAiC,IAAtBy+vC,EAA+Bti3C,KAAK6jH,SAAWy+vC,EAC9Dti3C,KAAKw+2C,iBAAmBA,EACxBx+2C,KAAKygH,cAAgBA,EACrB,IAAI8hwC,EAAcvi3C,KAAK6h3C,eAAiB,CAAC,EACrCW,EAAmBD,EAAYvj1C,SAAW7V,EAAQ6V,QAAUuj1C,EAAYxj1C,QAAU5V,EAAQ4V,MAC9F/+B,KAAK6h3C,cAAgB141C,EAEjBq51C,IACFxi3C,KAAKoh3C,SAAWmB,EAChBvi3C,KAAKgkH,eAAe,IAAI+D,EAAS5+F,KAGnCnpB,KAAKwh3C,mBAAmBiB,sBAAsBt51C,GAE1CnpB,KAAKqtC,eAAiBA,IACxBrtC,KAAKqtC,aAAeA,EACpBrtC,KAAKihH,QAAU,CAAC,EAChBjhH,KAAK8gH,aAAa9gH,KAAK62F,QAAQ,IAGjC72F,KAAK8gH,aAAah0E,GAAmBg3E,GAAiB7wG,QAAQswG,IAC9DvjH,KAAK8gH,aAAah0E,GAAiBg3E,GAAiB7wG,QAAQuwG,GAAWC,IACvEzjH,KAAK8gH,aAAah0E,GAAmBg3E,GAAiB7wG,QAAQ0wG,GAAaC,IAC3E5jH,KAAK8gH,aAAah0E,GAAwBg3E,GAAiB7wG,QAAQ2wG,IACnE5jH,KAAK8gH,aAAah0E,GAAwBg3E,GAAiB7wG,QAAQywG,IACnE1jH,KAAK8gH,aAAah0E,GAAsBg3E,GAAiB7wG,QAAQ4wG,IACjE7jH,KAAKujH,WAAaA,EAClBvjH,KAAKwjH,QAAUA,EACfxjH,KAAKyjH,WAAaA,EAClBzjH,KAAK0jH,gBAAkBA,EACvB1jH,KAAK2jH,UAAYA,EACjB3jH,KAAK4jH,YAAcA,EACnB5jH,KAAK6jH,SAAWA,CAClB,GACC,CACDh/F,IAAK,eACL1jB,MAAO,SAAsBquC,EAAY2G,GACvC,IAAIus0C,EAAS1i3C,KAETA,KAAKqtC,cACPmC,EAAWtqB,SAAQ,SAAUmqB,GACvBqz0C,EAAOzhwC,QAAQ5xE,KAAe8G,IAChCus0C,EAAOzhwC,QAAQ5xE,GAAa8G,EAExBA,EACFus0C,EAAOr10C,aAAaz8B,GAAGy+B,EAAWqz0C,EAAO/hwC,aAEzC+hwC,EAAOr10C,aAAaW,IAAIqB,EAAWqz0C,EAAO/hwC,aAGhD,GAEJ,GACC,CACD97F,IAAK,cACL1jB,MAAO,SAAqBs9B,GAC1B,IAAI4jF,EAAMriH,KAAKogC,UAAU3B,GACzBz+B,KAAK2i3C,WAAa3i3C,KAAKyiH,qBAAqBhkF,IAAUA,EAAMimF,YAC5D,IAAIi9vC,EAAc3h3C,KAAK2i3C,WAAa3i3C,KAAKoh3C,SAASj7vC,YAAY,CAC5D9D,IAAKA,IACFriH,KAAKoh3C,SAASz4vC,SAAS,CAC1BtG,IAAKA,IAKP,OAHAriH,KAAKgkH,eAAe29vC,EAAa5hwC,GAAqB,CACpDK,YAAY,KAEP,CACT,GACC,CACDv7F,IAAK,SACL1jB,MAAO,SAAgBs9B,GACrB,QAAKz+B,KAAKogH,eAIHpgH,KAAK2i3C,WAAa3i3C,KAAK8kH,aAAarmF,GAASz+B,KAAK6kH,WAAWpmF,GACtE,GACC,CACD5Z,IAAK,YACL1jB,MAAO,SAAmBs9B,GACxB,QAAKz+B,KAAKogH,eAIHpgH,KAAK2i3C,WAAa3i3C,KAAKglH,gBAAgBvmF,GAASz+B,KAAK+kH,cAActmF,GAC5E,GACC,CACD5Z,IAAK,aACL1jB,MAAO,SAAoBs9B,GACzB,IAAKz+B,KAAKwjH,QACR,OAAO,EAGT,IAAInB,EAAMriH,KAAKogC,UAAU3B,GACrBkj1C,EAAc3h3C,KAAKoh3C,SAASn8vC,IAAI,CAClC5C,IAAKA,IAKP,OAHAriH,KAAKgkH,eAAe29vC,EAAa5hwC,GAAqB,CACpDmF,WAAW,KAEN,CACT,GACC,CACDrgG,IAAK,gBACL1jB,MAAO,SAAuBs9B,GAC5B,GAAIz+B,KAAKwjH,QAAS,CAChB,IAAIo/vC,EAAwB5i3C,KAAKwjH,QAAQF,QACrCA,OAAoC,IAA1Bs/vC,EAAmCtB,GAAkBsB,EAEnE,GAAIt/vC,GAAW7kF,EAAM0mF,SAAU,CAC7B,IAAI9C,EAAMriH,KAAKogC,UAAU3B,GACrB2mF,EAAS,CAAC/C,EAAI,GAAK5jF,EAAM4mF,UAAY/B,EAAU,EAAGjB,EAAI,GAAK5jF,EAAM6mF,UAAYhC,EAAU,GACvFW,EAAqBjkH,KAAKoh3C,SAASn8vC,IAAI,CACzC5C,IAAK+C,IACJG,SAQH,OAPAvlH,KAAKgkH,eAAeC,EAAoB,GAAc,GAAc,CAAC,EAAGo9vC,IAA0B,CAAC,EAAG,CACpGrhwC,mBAAoBsD,EACpBkC,iBAAkBvF,KAChB,CACFG,YAAY,EACZ8E,WAAW,KAEN,CACT,CACF,CAEA,IAAIy8vC,EAAc3h3C,KAAKoh3C,SAAS77vC,SAKhC,OAJAvlH,KAAKgkH,eAAe29vC,EAAa,KAAM,CACrCvhwC,YAAY,EACZ8E,WAAW,KAEN,CACT,GACC,CACDrgG,IAAK,eACL1jB,MAAO,SAAsBs9B,GAC3B,IAAKz+B,KAAKyjH,WACR,OAAO,EAGT,IAAIpB,EAAMriH,KAAKogC,UAAU3B,GACrBkj1C,EAAc3h3C,KAAKoh3C,SAAS37vC,OAAO,CACrCpD,IAAKA,IAKP,OAHAriH,KAAKgkH,eAAe29vC,EAAa5hwC,GAAqB,CACpD2F,YAAY,KAEP,CACT,GACC,CACD7gG,IAAK,kBACL1jB,MAAO,SAAyBs9B,GAC9B,GAAIz+B,KAAKyjH,WAAY,CACnB,IAAIo/vC,EAAwB7i3C,KAAKyjH,WAAWH,QACxCA,OAAoC,IAA1Bu/vC,EAAmCvB,GAAkBuB,EAEnE,GAAIv/vC,GAAW7kF,EAAM0mF,SAAU,CAC7B,IAAI9C,EAAMriH,KAAKogC,UAAU3B,GACrB2mF,EAAS,CAAC/C,EAAI,GAAK5jF,EAAM4mF,UAAY/B,EAAU,EAAGjB,EAAI,GAAK5jF,EAAM6mF,UAAYhC,EAAU,GACvFW,EAAqBjkH,KAAKoh3C,SAAS37vC,OAAO,CAC5CpD,IAAK+C,IACJO,YAQH,OAPA3lH,KAAKgkH,eAAeC,EAAoB,GAAc,GAAc,CAAC,EAAGo9vC,IAA0B,CAAC,EAAG,CACpGrhwC,mBAAoBsD,EACpBkC,iBAAkBvF,KAChB,CACFG,YAAY,EACZsF,YAAY,KAEP,CACT,CACF,CAEA,IAAIi8vC,EAAc3h3C,KAAKoh3C,SAAS77vC,SAKhC,OAJAvlH,KAAKgkH,eAAe29vC,EAAa,KAAM,CACrCvhwC,YAAY,EACZsF,YAAY,KAEP,CACT,GACC,CACD7gG,IAAK,WACL1jB,MAAO,SAAkBs9B,GACvB,IAAKz+B,KAAKujH,WACR,OAAO,EAGT,IAAIu/vC,EAAmB9i3C,KAAKujH,WACxBw/vC,EAAwBD,EAAiBj9vC,MACzCA,OAAkC,IAA1Bk9vC,EAAmC,IAAOA,EAClDC,EAAwBF,EAAiBh9vC,OACzCA,OAAmC,IAA1Bk9vC,GAA2CA,EACxDvk1C,EAAMmnF,iBACN,IAAIvD,EAAMriH,KAAKogC,UAAU3B,GACrBsnF,EAAQtnF,EAAMsnF,MACdjkB,EAAQ,GAAK,EAAIj/F,KAAKkxB,KAAKlxB,KAAKmjH,IAAID,EAAQF,KAE5CE,EAAQ,GAAe,IAAVjkB,IACfA,EAAQ,EAAIA,GAGd,IAAI6/wC,EAAc3h3C,KAAKoh3C,SAASzh1C,KAAK,CACnC0iF,IAAKA,EACLvgB,MAAOA,IAWT,OATA9hG,KAAKgkH,eAAe29vC,EAAa,GAAc,GAAc,CAAC,EAAGN,IAA0B,CAAC,EAAG,CAC7Fl+vC,uBAAwB,IAAI88C,GAAmB,CAC7Ch6C,OAAQ5D,IAEVrC,mBAAoB8F,EAAS,IAAM,IACjC,CACFZ,WAAW,EACXgB,WAAW,KAEN,CACT,GACC,CACDrhG,IAAK,gBACL1jB,MAAO,SAAuBs9B,GAC5B,IAAI4jF,EAAMriH,KAAKogC,UAAU3B,GACrBkj1C,EAAc3h3C,KAAKoh3C,SAAS/6vC,UAAU,CACxChE,IAAKA,IACJ8D,YAAY,CACb9D,IAAKA,IAOP,OALAriH,KAAKsmH,oBAAsB7nF,EAAM8nF,SACjCvmH,KAAKwmH,gBAAkB/nF,EACvBz+B,KAAKgkH,eAAe29vC,EAAa5hwC,GAAqB,CACpDK,YAAY,KAEP,CACT,GACC,CACDv7F,IAAK,WACL1jB,MAAO,SAAkBs9B,GACvB,IAAKz+B,KAAKogH,aACR,OAAO,EAGT,IAAKpgH,KAAK2jH,YAAc3jH,KAAK4jH,YAC3B,OAAO,EAGT,IAAI+9vC,EAAc3h3C,KAAKoh3C,SAEvB,GAAIph3C,KAAK2jH,UAAW,CAClB,IAAI7hB,EAAQrjE,EAAMqjE,MACdugB,EAAMriH,KAAKogC,UAAU3B,GACzBkj1C,EAAcA,EAAYhi1C,KAAK,CAC7B0iF,IAAKA,EACLvgB,MAAOA,GAEX,CAEA,GAAI9hG,KAAK4jH,YAAa,CACpB,IAAI2C,EAAW9nF,EAAM8nF,SACrBo7vC,EAAcA,EAAYl8vC,OAAO,CAC/BgB,YAAazmH,KAAKsmH,oBAAsBC,GAE5C,CASA,OAPAvmH,KAAKgkH,eAAe29vC,EAAa5hwC,GAAqB,CACpDK,YAAY,EACZ8E,UAAWjyG,QAAQjT,KAAK2jH,WACxBuC,UAAWjzG,QAAQjT,KAAK2jH,WACxB+B,WAAYzyG,QAAQjT,KAAK4jH,eAE3B5jH,KAAKwmH,gBAAkB/nF,GAChB,CACT,GACC,CACD5Z,IAAK,cACL1jB,MAAO,SAAqBs9B,GAC1B,IAAKz+B,KAAKogH,aACR,OAAO,EAGT,GAAIpgH,KAAK2jH,UAAW,CAClB,IAAIs/vC,EAAwBjj3C,KAAK2jH,UAAUL,QACvCA,OAAoC,IAA1B2/vC,EAAmC3B,GAAkB2B,EAC/Dz8vC,EAAkBxmH,KAAKwmH,gBAE3B,GAAIlD,GAAWkD,GAAmB/nF,EAAMqjE,QAAU0kB,EAAgB1kB,MAAO,CACvE,IAAIugB,EAAMriH,KAAKogC,UAAU3B,GAErByk1C,EAAelj3C,KAAKoh3C,SAASz7vC,YAE7BhgH,EAAI9C,KAAKqmC,KAAKzK,EAAMqjE,OAEpB4kB,GAAa/gH,EAAI9C,KAAKqmC,KAAKs9E,EAAgB1kB,SAAWrjE,EAAMkoF,UAAYH,EAAgBG,WAExFC,EAAW/jH,KAAK6yF,IAAI,EAAG/vF,EAAI+gH,EAAYpD,EAAU,GAkBrD,OAjBA4/vC,EAAeA,EAAavj1C,KAAK,CAC/B0iF,IAAKA,EACLvgB,MAAO8kB,IACNC,UACH7mH,KAAKgkH,eAAek/vC,EAAc,GAAc,GAAc,CAAC,EAAG7B,IAA0B,CAAC,EAAG,CAC9Fl+vC,uBAAwB,IAAI88C,GAAmB,CAC7Ch6C,OAAQ5D,IAEVrC,mBAAoBsD,EACpBkC,iBAAkBvF,KAChB,CACFG,YAAY,EACZ8E,UAAWjyG,QAAQjT,KAAK2jH,WACxBuC,UAAWjzG,QAAQjT,KAAK2jH,WACxB+B,YAAY,IAEd1lH,KAAKgjH,YAAYM,IACV,CACT,CACF,CAEA,IAAIq+vC,EAAc3h3C,KAAKoh3C,SAASv6vC,UAAUlB,YAU1C,OATA3lH,KAAKimB,OAAOk91C,mBAAqB,EACjCnj3C,KAAKgkH,eAAe29vC,EAAa,KAAM,CACrCvhwC,YAAY,EACZ8E,WAAW,EACXgB,WAAW,EACXR,YAAY,IAEd1lH,KAAKsmH,oBAAsB,KAC3BtmH,KAAKwmH,gBAAkB,MAChB,CACT,GACC,CACD3hG,IAAK,oBACL1jB,MAAO,SAA2Bs9B,GAChC,IAAI4jF,EAAMriH,KAAKogC,UAAU3B,GACrBkj1C,EAAc3h3C,KAAKoh3C,SAASj7vC,YAAY,CAC1C9D,IAAKA,IAKP,OAHAriH,KAAKgkH,eAAe29vC,EAAa5hwC,GAAqB,CACpDK,YAAY,KAEP,CACT,GACC,CACDv7F,IAAK,eACL1jB,MAAO,SAAsBs9B,GAC3B,IAAKz+B,KAAKogH,aACR,OAAO,EAGT,IAAKpgH,KAAK4jH,YACR,OAAO,EAGT,IAAIvB,EAAMriH,KAAKogC,UAAU3B,GACzB4jF,EAAI,IAAM5jF,EAAM2nF,OAChB,IAAIu7vC,EAAc3h3C,KAAKoh3C,SAAS37vC,OAAO,CACrCpD,IAAKA,IAKP,OAHAriH,KAAKgkH,eAAe29vC,EAAa5hwC,GAAqB,CACpD2F,YAAY,KAEP,CACT,GACC,CACD7gG,IAAK,kBACL1jB,MAAO,SAAyBs9B,GAC9B,IAAKz+B,KAAKogH,aACR,OAAO,EAGT,GAAIpgH,KAAK4jH,YAAa,CACpB,IAAIw/vC,EAAwBpj3C,KAAK4jH,YAAYN,QACzCA,OAAoC,IAA1B8/vC,EAAmC9B,GAAkB8B,EAEnE,GAAI9/vC,GAAW7kF,EAAM6mF,UAAW,CAC9B,IAAIjD,EAAMriH,KAAKogC,UAAU3B,GACrB2mF,EAAS,CAAC/C,EAAI,GAAIA,EAAI,IAAM5jF,EAAM6mF,UAAYhC,EAAU,GAExD+/vC,EAAgBrj3C,KAAKoh3C,SAAS37vC,OAAO,CACvCpD,IAAK+C,IAWP,OARAplH,KAAKgkH,eAAeq/vC,EAAe,GAAc,GAAc,CAAC,EAAGhC,IAA0B,CAAC,EAAG,CAC/FrhwC,mBAAoBsD,EACpBkC,iBAAkBvF,KAChB,CACFG,YAAY,EACZsF,YAAY,IAEd1lH,KAAKgjH,YAAYM,IACV,CACT,CACF,CAEA,IAAIq+vC,EAAc3h3C,KAAKoh3C,SAASz7vC,YAKhC,OAJA3lH,KAAKgkH,eAAe29vC,EAAa,KAAM,CACrCvhwC,YAAY,EACZsF,YAAY,KAEP,CACT,GACC,CACD7gG,IAAK,eACL1jB,MAAO,SAAsBs9B,GAC3B,IAAKz+B,KAAK0jH,gBACR,OAAO,EAGT,IAAIrB,EAAMriH,KAAKogC,UAAU3B,GACrBqoF,EAAY9mH,KAAKyiH,qBAAqBhkF,GACtCkj1C,EAAc3h3C,KAAKoh3C,SAASzh1C,KAAK,CACnC0iF,IAAKA,EACLvgB,MAAOglB,EAAY,GAAM,IAS3B,OAPA9mH,KAAKgkH,eAAe29vC,EAAari3C,OAAOa,OAAO,CAAC,EAAGkh3C,GAAyB,CAC1El+vC,uBAAwB,IAAI88C,GAAmB,CAC7Ch6C,OAAQ5D,MAER,CACF6D,WAAW,KAEN,CACT,GACC,CACDrhG,IAAK,aACL1jB,MAAO,SAAoBs9B,GACzB,IAAKz+B,KAAK6jH,SACR,OAAO,EAGT,IAWI89vC,EAXA56vC,EAAU/mH,KAAKyiH,qBAAqBhkF,GACpC6k1C,EAAiBtj3C,KAAK6jH,SACtB0/vC,EAAwBD,EAAet8vC,UACvCA,OAAsC,IAA1Bu8vC,EAAmC,EAAIA,EACnDC,EAAwBF,EAAer8vC,UACvCA,OAAsC,IAA1Bu8vC,EAAmC,IAAMA,EACrDC,EAAwBH,EAAep8vC,aACvCA,OAAyC,IAA1Bu8vC,EAAmC,GAAKA,EACvDC,EAAyBJ,EAAen8vC,aACxCA,OAA0C,IAA3Bu8vC,EAAoC,GAAKA,EACxD7B,EAAgB7h3C,KAAK6h3C,cAGzB,OAAQpj1C,EAAMikF,SAAS0xa,SACrB,KAAK,IAEDut1B,EADE56vC,EACY/mH,KAAKyh3C,YAAY,CAC7B9h1C,KAAMki1C,EAAcli1C,KAAO98B,KAAKqmC,KAAK89E,GAAa,IAGtChnH,KAAKyh3C,YAAY,CAC7B9h1C,KAAMki1C,EAAcli1C,KAAO98B,KAAKqmC,KAAK89E,KAIzC,MAEF,KAAK,IAED26vC,EADE56vC,EACY/mH,KAAKyh3C,YAAY,CAC7B9h1C,KAAMki1C,EAAcli1C,KAAO98B,KAAKqmC,KAAK89E,GAAa,IAGtChnH,KAAKyh3C,YAAY,CAC7B9h1C,KAAMki1C,EAAcli1C,KAAO98B,KAAKqmC,KAAK89E,KAIzC,MAEF,KAAK,GAED26vC,EADE56vC,EACY/mH,KAAKyh3C,YAAY,CAC7Bji1C,QAASqi1C,EAAcri1C,QAAU0nF,IAGrBlnH,KAAKoh3C,SAASn8vC,IAAI,CAC9B5C,IAAK,CAAC4E,EAAW,GACjB6B,SAAU,CAAC,EAAG,KAIlB,MAEF,KAAK,GAED64vC,EADE56vC,EACY/mH,KAAKyh3C,YAAY,CAC7Bji1C,QAASqi1C,EAAcri1C,QAAU0nF,IAGrBlnH,KAAKoh3C,SAASn8vC,IAAI,CAC9B5C,IAAK,EAAE4E,EAAW,GAClB6B,SAAU,CAAC,EAAG,KAIlB,MAEF,KAAK,GAED64vC,EADE56vC,EACY/mH,KAAKyh3C,YAAY,CAC7B/h1C,MAAOmi1C,EAAcni1C,MAAQynF,IAGjBnnH,KAAKoh3C,SAASn8vC,IAAI,CAC9B5C,IAAK,CAAC,EAAG4E,GACT6B,SAAU,CAAC,EAAG,KAIlB,MAEF,KAAK,GAED64vC,EADE56vC,EACY/mH,KAAKyh3C,YAAY,CAC7B/h1C,MAAOmi1C,EAAcni1C,MAAQynF,IAGjBnnH,KAAKoh3C,SAASn8vC,IAAI,CAC9B5C,IAAK,CAAC,GAAI4E,GACV6B,SAAU,CAAC,EAAG,KAIlB,MAEF,QACE,OAAO,EAGX,OAAO9oH,KAAKgkH,eAAe29vC,EAAaN,GAC1C,KAGKr3vC,CACT,CA5rBoB,GCjCpB,SAAS,GAAQ5sE,EAAQk4U,GAAkB,IAAIhiX,EAAOhU,OAAOgU,KAAK8pC,GAAS,GAAI99C,OAAOmB,sBAAuB,CAAE,IAAI80X,EAAUj2X,OAAOmB,sBAAsB28C,GAAak4U,IAAgBC,EAAUA,EAAQ1oW,QAAO,SAAU2oW,GAAO,OAAOl2X,OAAOmE,yBAAyB25C,EAAQo4U,GAAK7xX,UAAY,KAAI2P,EAAKzR,KAAKtB,MAAM+S,EAAMiiX,EAAU,CAAE,OAAOjiX,CAAM,CAEpV,SAAS,GAAcxD,GAAU,IAAK,IAAIlP,EAAI,EAAGA,EAAIR,UAAUC,OAAQO,IAAK,CAAE,IAAIiH,EAAyB,MAAhBzH,UAAUQ,GAAaR,UAAUQ,GAAK,CAAC,EAAOA,EAAI,EAAK,GAAQtB,OAAOuI,IAAS,GAAMqd,SAAQ,SAAUL,IAAO,OAAgB/U,EAAQ+U,EAAKhd,EAAOgd,GAAO,IAAevlB,OAAOq+B,0BAA6Br+B,OAAOkU,iBAAiB1D,EAAQxQ,OAAOq+B,0BAA0B91B,IAAmB,GAAQvI,OAAOuI,IAASqd,SAAQ,SAAUL,GAAOvlB,OAAO4D,eAAe4M,EAAQ+U,EAAKvlB,OAAOmE,yBAAyBoE,EAAQgd,GAAO,GAAM,CAAE,OAAO/U,CAAQ,CAYrhB,IAAI,GAAYxQ,OAAOa,OAAO,CAAC,EAAG,EAAUssI,UAAW,CACrDxkB,QAAS,SACTC,QAAS,SACTC,SAAU,SACVC,SAAU,SACVlqF,kBAAmB,OACnBsg1C,iBAAkB,OAClBluuC,yBAA0B,OAC1BtwB,mBAAoB,YAAoB,CAAC,SAAkB,WAC3DmD,uBAAwB,SACxB+I,uBAAwB,SACxB1G,iBAAkB,OAClB4G,kBAAmB,OACnBK,sBAAuB,OACvBC,gBAAiB,OACjBnJ,WAAY,YAAoB,CAAC,OAAgB,WACjDC,QAAS,YAAoB,CAAC,OAAgB,WAC9CC,WAAY,YAAoB,CAAC,OAAgB,WACjDC,gBAAiB,OACjBC,UAAW,YAAoB,CAAC,OAAgB,WAChDC,YAAa,YAAoB,CAAC,OAAgB,WAClDC,SAAU,YAAoB,CAAC,OAAgB,WAC/Co3B,QAAS,OACTj9G,QAAS,OACT87W,WAAY,OACZ2uN,cAAe,OACftuN,YAAa,OACbH,YAAa,OACbI,UAAW,OACXytK,aAAc,OACdC,YAAa,OACbE,WAAY,OACZhwB,aAAc,OACdC,aAAc,OACdh+I,WAAY,OACZmpK,QAAS,OACT7oa,YAAa,SACbC,uBAAwB,SACxBmpuC,YAAa,SACbC,oBAAqB,QACrBtouC,UAAW,OACX/K,WAAY,aAAqBvmB,MAS/B,GAAe1qH,OAAOa,OAAO,CAAC,EAAG,EAAU+5I,aAAc+iuC,EAAezyvC,GAAkB0vB,aAAc,CAC1Gh8G,kBAAmB,KACnBsg1C,iBAAkB,KAClBxg1C,QAAS,KACT6l1C,cAAe,KACf5ouC,QAAS,KACTwtd,cAAe,SAAuBhqkB,GACpC,OAAOA,EAAMmnF,gBACf,EACArC,YAAY,EACZC,SAAS,EACTC,YAAY,EACZC,iBAAiB,EACjBC,WAAW,EACXC,aAAa,EACbC,UAAU,EACV02B,YAAa,OACbC,uBAAwB,CAAC,EACzBmpuC,YAAa,EACbrouC,UAzBqB,SAA0B8xD,GAC/C,IAAIhtF,EAAagtF,EAAKhtF,WAClBi8B,EAAa+wD,EAAK/wD,WACtB,OAAOj8B,EAAa,WAAai8B,EAAa,UAAY,MAC5D,IAwBA,SAASk0zB,GAAe9x6B,GACtB,GAAIA,EAAMqgJ,SAAWrgJ,EAAM0jF,aACzB,OAAO1jF,EAGT,IAAIij1C,EAAsBjj1C,EAAM0jF,aAC5Bl+G,EAAIy92C,EAAoBz92C,EACxBjB,EAAI0+2C,EAAoB1+2C,EAE5B,IAAKmiC,OAAOuC,SAASzjC,KAAOkhC,OAAOuC,SAAS1kC,GAC1C,OAAOy7B,EAGT,IAAI4jF,EAAM,CAACp+G,EAAGjB,GAGd,OAFAy7B,EAAM02G,MAAQ9yB,EACd5jF,EAAMqgJ,OAAS9+K,KAAKmrC,SAASu+E,UAAUrH,GAChC5jF,CACT,CAEA,SAASgzT,GAAYpvO,GACnB,IAAIhzF,EAAMrvB,KAAKqvB,IAEf,IAAKA,IAAQgzF,EACX,OAAO,KAGT,IAAI2wF,EAAc,CAAC,EACfpuL,EAAO5kB,KAAKitC,MAAM020C,YAElB3j3C,KAAKitC,MAAM220C,sBACb5wqC,EAAYl1K,OAAS99B,KAAKitC,MAAM220C,qBAGlC,IACE,OAAOv01C,EAAImw1C,sBAAsB561C,EAAO,CAAC,CAACy9F,EAAI,GAAKz9F,EAAMy9F,EAAI,GAAKz9F,GAAO,CAACy9F,EAAI,GAAKz9F,EAAMy9F,EAAI,GAAKz9F,IAASy9F,EAAK2wF,EAClH,CAAE,MAAOyxpC,GACP,OAAO,IACT,CACF,CAEA,SAASrzrB,GAAQ0ysB,EAAcrl1C,GAC7B,IAAIshB,EAAO//C,KAAKitC,MAAM620C,GAElB/j0C,GACFA,EAAKww5B,GAAe3w8B,KAAKI,KAAMy+B,GAEnC,CAEA,SAASw0D,GAAcx0D,GACrB2yoB,GAAQxxqB,KAAKI,KAA4B,UAAtBy+B,EAAMuu7B,YAA0B,eAAiB,cAAevu7B,EACrF,CAEA,SAASy0D,GAAYz0D,GACnB2yoB,GAAQxxqB,KAAKI,KAA4B,UAAtBy+B,EAAMuu7B,YAA0B,aAAe,YAAavu7B,EACjF,CAEA,SAASgtW,GAAchtW,GAGrB,GAFA2yoB,GAAQxxqB,KAAKI,KAA4B,UAAtBy+B,EAAMuu7B,YAA0B,cAAgB,cAAevu7B,IAE7Ez+B,KAAK2L,MAAMy0G,WAAY,CAC1B,IAGI10E,EAHA6mH,EAAcvyJ,KAAKitC,MACnBguG,EAAUsX,EAAYtX,QACtB2ouC,EAAsBrxtC,EAAYqxtC,oBAEtCnl1C,EAAQ8x6B,GAAe3w8B,KAAKI,KAAMy+B,IAE9Bml1C,GAAuB3ouC,KACzBvvG,EAAW+lT,GAAY7xV,KAAKI,KAAMy+B,EAAM02G,QAG1C,IAAIkH,EAAappI,QAAQ2w2C,GAAuBl40C,GAAYA,EAASrrC,OAAS,GAC1E0j3C,EAAa1nuC,IAAer8I,KAAK2L,MAAM0wI,WACvC2nuC,GAAa3nuC,GAAcr8I,KAAK2L,MAAM0wI,YAEtCpB,GAAW8ouC,KACbtl1C,EAAMiN,SAAWA,EAEbuvG,GACFA,EAAQx8G,IAIRsl1C,GACF3ysB,GAAQxxqB,KAAKI,KAAM,eAAgBy+B,GAGjCul1C,GACF5ysB,GAAQxxqB,KAAKI,KAAM,eAAgBy+B,IAGjCsl1C,GAAcC,IAChBhk3C,KAAK0qI,SAAS,CACZ2R,WAAYA,GAGlB,CACF,CAEA,SAAS4nuC,GAAexl1C,GACtB,IAAI8wW,EAAevvY,KAAKitC,MACpBjP,EAAUuxW,EAAavxW,QACvB6l1C,EAAgBt0+B,EAAas0+B,cAC7B/p+B,EAAavK,EAAauK,WAC1Bp2R,EAAkB6rR,EAAa7rR,gBAC/Bv8C,EAAY,GACZ+8yC,EAAuBpq+B,GAAcp2R,EAEzC,OAAQjlF,EAAMlyB,MACZ,IAAK,WACH46D,EAAUtlE,KAAKgi3C,GAEVK,GACH/8yC,EAAUtlE,KAAKm8B,GAGjB,MAEF,IAAK,QACCkm1C,GACF/8yC,EAAUtlE,KAAKm8B,IAQrBmpC,EAAYA,EAAUt6C,OAAO5Z,UAEf5S,UACZo+B,EAAQ8x6B,GAAe3w8B,KAAKI,KAAMy+B,IAC5BiN,SAAW+lT,GAAY7xV,KAAKI,KAAMy+B,EAAM02G,OAC9ChuE,EAAUjiD,SAAQ,SAAUw8C,GAC1B,OAAOA,EAAGjjC,EACZ,IAEJ,CASA,IAAI0l1C,IAAiB,IAAAvsnC,aAAW,SAAU3qN,EAAOrL,GAC/C,IAAI+sO,GAAgB,IAAA7P,YAAW,GAC3BvuH,GAAa,IAAA9hG,UAAQ,WACvB,OAAOxB,EAAMsjG,YAAc,IAAIvmB,EACjC,GAAG,IACC38E,GAAe,IAAAoB,UAAQ,WACzB,OAAO,IAAI,GAAA/pC,EAAa,KAAM,CAC5B61I,YAAattG,EAAMstG,YACnBoH,kBAAmB10G,EAAMutG,wBAE7B,GAAG,IACC4puC,GAAiB,IAAA9l1C,QAAO,MACxB+l1C,GAAe,IAAA/l1C,QAAO,MAWtBo5N,GATW,IAAAp5N,QAAO,CACpBS,MAAO,EACPC,OAAQ,EACRrzB,MAAO,CACL0wI,YAAY,EACZj8B,YAAY,KAIOrgF,QACvB23N,EAAQzqN,MAAQA,EAChByqN,EAAQroO,IAAMg11C,EAAatk1C,SAAWsk1C,EAAatk1C,QAAQo2I,SAE3DuhF,EAAQhtH,SAAW,SAAUzxE,GAC3By+L,EAAQ/rP,MAAQ,GAAc,GAAc,CAAC,EAAG+rP,EAAQ/rP,OAAQstD,GAChEmrzC,EAAerk1C,QAAQ1rB,MAAMgtI,OAASp0G,EAAMquG,UAAUo8G,EAAQ/rP,MAChE,EAEA,IACI242C,EACAC,EAFA3rnC,GAAW,EAIX4rnC,EAAuB,SAA8B3m1C,EAAWsmF,EAAkBI,GACpF,GAAIq0I,EACF0rnC,EAA0B,CAACzm1C,EAAWsmF,EAAkBI,OAD1D,CAKA,IAAIkgwC,EAAiB/snC,EAAQzqN,MACzB/O,EAAoBum1C,EAAevm1C,kBACnCsg1C,EAAmBiG,EAAejG,iBAElCtg1C,GACFA,EAAkB,CAChBL,UAAWA,EACXsmF,iBAAkBA,EAClBI,aAAcA,IAIdi6vC,GACFA,EAAiB3g1C,EAAWsmF,EAAkBI,EAfhD,CAiBF,GAEA,IAAAg1I,qBAAoB33N,GAAK,WACvB,OAnEJ,SAAuByi1C,GACrB,MAAO,CACLlusC,OAAQkusC,EAAatk1C,SAAWsk1C,EAAatk1C,QAAQo2I,OACrDqpsC,sBAAuB6E,EAAatk1C,SAAWsk1C,EAAatk1C,QAAQy/0C,sBAExE,CA8DW,CAAc6E,EACvB,GAAG,IACH,IAAIl30C,GAAU,IAAAsB,UAAQ,WACpB,OAAO,GAAc,GAAc,CAAC,EAAGkgO,GAAgB,CAAC,EAAG,CACzDthO,aAAcA,EACd+zG,UAAWutH,EAAcvtH,WAAagjuC,EAAerk1C,SAEzD,GAAG,CAAC4uO,EAAey1mC,EAAerk1C,UAClCoN,EAAQqx0C,iBAAmBgG,EAC3Br30C,EAAQhC,SAAWwjO,EAAcxjO,UAAY+lG,EAAYwmH,GACzDA,EAAQvsN,SAAWgC,EAAQhC,SAE3B,IAAI6tN,EAA+B,SAAsC70I,GACvE,IAAIugwC,EAAwBvgwC,EAAiB/D,WACzCA,OAAuC,IAA1BskwC,GAA2CA,EAQ5D,GANItkwC,IAAes3I,EAAQ/rP,MAAMy0G,YAC/Bs3I,EAAQhtH,SAAS,CACftqB,WAAYA,IAIZw4I,EACF2rnC,EAAuBpgwC,MADzB,CAKA,IAAImsB,EAA2BonH,EAAQzqN,MAAMqjG,yBAEzCA,GACFA,EAAyBnsB,EAL3B,CAOF,EAEIwgwC,EAAuB,WACrBjtnC,EAAQ34N,OAAS24N,EAAQ14N,QAC3BuxG,EAAWnvG,WAAW,GAAc,GAAc,GAAc,CAAC,EAAGs2N,EAAQzqN,OAAQyqN,EAAQzqN,MAAMpP,WAAY,CAAC,EAAG,CAChHimF,cAAe7wG,QAAQykP,EAAQzqN,MAAM/O,mBAAqBw5N,EAAQzqN,MAAMux0C,kBACxEA,iBAAkBgG,EAClB/jwC,cAAeu4I,EACf3rN,aAAcA,EACdtO,MAAO24N,EAAQ34N,MACfC,OAAQ04N,EAAQ14N,SAGtB,GAcA,IAAAsC,YAAU,WAaR,OAZA+L,EAAaksT,WAAW6qhC,EAAerk1C,SACvCsN,EAAaz8B,GAAG,CACdgxI,YAAa3uD,GAAc5vF,KAAKq0P,GAChC51G,YAAa2pP,GAAcpoY,KAAKq0P,GAChC+0tB,UAAWv53B,GAAY7vF,KAAKq0P,GAC5B11G,aAAcovhB,GAAQ/tqB,KAAKq0P,EAAS,cACpCxlK,MAAO+xxC,GAAe5g3C,KAAKq0P,GAC3B+njC,SAAUwkE,GAAe5g3C,KAAKq0P,GAC9BtxB,SAAUgrc,GAAQ/tqB,KAAKq0P,EAAS,cAChCq2tB,MAAO38S,GAAQ/tqB,KAAKq0P,EAAS,WAC7B4wmC,YAAal3rB,GAAQ/tqB,KAAKq0P,EAAS,mBAE9B,WACLrqN,EAAa+wG,SACf,CACF,GAAG,IACH,GAA0B,WACpBkmuC,GACFE,EAAqBjk3C,WAAM,GAAQ,OAAmB+j3C,IAGpDC,GACFvrnC,EAA6BurnC,EAEjC,IACAI,IACA,IAAI5l1C,EAAQkO,EAAMlO,MACdC,EAASiO,EAAMjO,OACf3qB,EAAQ44B,EAAM54B,MACdinI,EAAYruG,EAAMquG,UAClBspuC,GAAmB,IAAAn20C,UAAQ,WAC7B,OAAO,GAAc,GAAc,CACjC9P,SAAU,YACTtqB,GAAQ,CAAC,EAAG,CACb0qB,MAAOA,EACPC,OAAQA,EACRqiH,OAAQ/F,EAAUo8G,EAAQ/rP,QAE9B,GAAG,CAAC0I,EAAO0qB,EAAOC,EAAQs8G,EAAWo8G,EAAQ/rP,QAmB7C,OAjBK242C,GAA4B5snC,EAAQmtnC,SACvCntnC,EAAQmtnC,OAAS,gBAAoBpG,EAAoB,CACvDt92C,MAAOgsC,GACN,gBAAoB,MAAO,CAC5BtoB,IAAK,eACL+c,IAAKwi1C,EACL/v2C,MAAOuw2C,GACN,gBAAoB,GAAW,OAAS,CAAC,EAAG330C,EAAO,CACpDlO,MAAO,OACPC,OAAQ,OACR3qB,MAAO,KACP4pB,SAhEW,SAAkB41L,GAC/B,IAAI90L,EAAQ80L,EAAM90L,MACdC,EAAS60L,EAAM70L,OACnB04N,EAAQ34N,MAAQA,EAChB24N,EAAQ14N,OAASA,EACjB2l1C,IACAjtnC,EAAQzqN,MAAMhP,SAAS,CACrBc,MAAOA,EACPC,OAAQA,GAEZ,EAuDI4C,IAAKyi1C,QAITzrnC,GAAW,EACJlB,EAAQmtnC,MACjB,IACAV,GAAeh3lC,UAAY,EAAUA,UACrCg3lC,GAAe13uC,UAAY,GAC3B03uC,GAAejquC,aAAe,GCjZtB,SAAiBgjrC,WACnB,kBCDE,QAFU,CAAC,OAAQ,OAAQ,SAAU,SAAU,iBAAkB,SAAU,aAAc,UAAW,cAEvEA,WAC/B,SACI,SACE,SCfL,IAAI4nD,GAAyB,CAClCC,eAAe,EACfC,aAAa,EACbC,cAAc,EACdC,oBAAoB,EACpBC,oBAAoB,GAEXC,GAAsB,CAC/BL,cAAe,OACfC,YAAa,OACbC,aAAc,OACdC,mBAAoB,OACpBC,mBAAoB,QAqFP,SAASE,KACtB,IAAIp40C,EAAQ7sC,UAAUC,OAAS,QAAsB0tC,IAAjB3tC,UAAU,GAAmBA,UAAU,GAAK,CAAC,EAC7E+sC,GAAU,IAAA2xN,YAAW,GACrB9G,GAAe,IAAA15N,QAAO,MAStBo5N,GAPW,IAAAp5N,QAAO,CACpB2O,MAAOA,EACPthC,MAAO,CAAC,EACRwhC,QAASA,EACT6qN,aAAcA,IAGOj4N,QAMvB,OALA23N,EAAQzqN,MAAQA,EAChByqN,EAAQvqN,QAAUA,GAClB,IAAA7L,YAAU,WACR,OAlGJ,SAAiBo2N,GACf,IAAI91N,EAAM81N,EAAQM,aAAaj4N,QAC3BsN,EAAeqqN,EAAQvqN,QAAQE,aAEnC,GAAKzL,GAAQyL,EAAb,CAIA,IAAIwpD,EAAS,CACXk33B,MAAO,SAAe3m4B,GACpB,IAAIn6C,EAAQyqN,EAAQzqN,MAEhBA,EAAM830C,eACR39xC,EAAIo7B,kBAGFv1E,EAAMwy0C,UACRxy0C,EAAMwy0C,SAASr4xC,EAAKswK,EAExB,EACArpH,SAAU,SAAkBjnD,GAC1B,IAAIn6C,EAAQyqN,EAAQzqN,MAEhBA,EAAM+30C,aACR59xC,EAAIo7B,kBAGFv1E,EAAMiuG,aACRjuG,EAAMiuG,YAAY9zD,EAAKswK,EAE3B,EACA+njC,SAAU,SAAkBr4tC,GAC1B,IAAIn6C,EAAQyqN,EAAQzqN,MAEhBA,EAAMg40C,cACR79xC,EAAIo7B,kBAGFv1E,EAAMjP,SACRiP,EAAMjP,QAAQopD,EAAKswK,EAEvB,EACAxlK,MAAO,SAAe9K,GACpB,IAAIn6C,EAAQyqN,EAAQzqN,MAEhBA,EAAMg40C,cACR79xC,EAAIo7B,kBAGFv1E,EAAMjP,SACRiP,EAAMjP,QAAQopD,EAAKswK,EAEvB,EACAtxB,SAAU,SAAkBh/I,GAC1B,IAAIn6C,EAAQyqN,EAAQzqN,MAEhBA,EAAMi40C,oBACR99xC,EAAIo7B,kBAGFv1E,EAAM83wB,eACR93wB,EAAM83wB,cAAc39tB,EAAKswK,EAE7B,EACA51G,YAAa,SAAqB16D,GAChC,IAAIn6C,EAAQyqN,EAAQzqN,MAEhBA,EAAMk40C,oBACR/9xC,EAAIo7B,kBAGFv1E,EAAMw+V,eACRx+V,EAAMw+V,cAAcrkT,EAAKswK,EAE7B,GAGF,OADArqN,EAAam2wC,MAAM3stC,EAAQj1D,GACpB,WACLyL,EAAaW,IAAI6oD,EACnB,CAzEA,CA0EF,CAkBWyuxC,CAAQ5tnC,EACjB,GAAG,CAACvqN,EAAQE,eACLqqN,CACT,CCtGA,SAASwolC,GAAQjzyC,GACf,IAAI/hB,EAAW+hB,EAAM/hB,SAEjBq61C,EAAiBF,GAAcp40C,GAC/BE,EAAUo40C,EAAep40C,QACzB6qN,EAAeutnC,EAAevtnC,aAIlC,OAFA9sO,EAAS85H,SAAW73G,EACpBjiB,EAASs61C,cAAgBxtnC,EAClB9sO,EAAS2w1C,SAClB,CAEA,IAAI4J,GAAc,SAAUC,IAC1B,QAAUD,EAAaC,GAEvB,IAvBoBj9/B,EAAeix+B,EAuB/Bhx+B,GAvBgBD,EAuBMg9/B,EAvBS/rB,EAErC,WAAuC,GAAuB,oBAAZlh1C,UAA4BA,QAAQ+Q,UAAW,OAAO,EAAO,GAAI/Q,QAAQ+Q,UAAU3iB,KAAM,OAAO,EAAO,GAAqB,mBAAV4iB,MAAsB,OAAO,EAAM,IAAiF,OAA3EgC,KAAK9rB,UAAU6E,SAAS3E,KAAK4Y,QAAQ+Q,UAAUiC,KAAM,IAAI,WAAa,MAAY,CAAM,CAAE,MAAOrsB,GAAK,OAAO,CAAO,CAAE,CAFlQ,GAAoC,WAAkC,IAAsCqkB,EAAlCmlW,EAAQV,GAAgBQ,GAAkB,GAAIix+B,EAA2B,CAAE,IAAI7w+B,EAAYZ,GAAgBjoX,MAAMC,YAAaujB,EAAShL,QAAQ+Q,UAAUo/V,EAAOvoX,UAAWyoX,EAAY,MAASrlW,EAASmlW,EAAMpoX,MAAMP,KAAMI,WAAc,OAAO0oX,GAA2B9oX,KAAMwjB,EAAS,GAyBna,SAASii2C,IACP,IAAI/4zC,GAEJ,OAAgB1sD,KAAMyl3C,GAEtB,IAAK,IAAI73nC,EAAOxtP,UAAUC,OAAQg3C,EAAO,IAAI53C,MAAMmuP,GAAOlF,EAAO,EAAGA,EAAOkF,EAAMlF,IAC/ErxM,EAAKqxM,GAAQtoP,UAAUsoP,GAmBzB,OAhBAh8L,EAAQg8T,EAAO9oX,KAAKW,MAAMmoX,EAAQ,CAAC1oX,MAAMgC,OAAOq1C,KAEhD,QAAgB,OAAuBqV,GAAQ,WAAY,CAAC,IAE5D,QAAgB,OAAuBA,GAAQ,iBAAiB,IAAAw7W,eAEhE,QAAgB,OAAuBx7W,GAAQ,aAAa,SAAU06B,GAAM,KAE5E,QAAgB,OAAuB16B,GAAQ,gBAAgB,SAAU06B,GAAM,KAE/E,QAAgB,OAAuB16B,GAAQ,eAAe,SAAU06B,GAAM,KAE9E,QAAgB,OAAuB16B,GAAQ,YAAY,SAAU06B,GAAM,KAE3E,QAAgB,OAAuB16B,GAAQ,kBAAkB,SAAU06B,GAAM,IAE1E16B,CACT,CAsBA,OApBA,OAAa+4zC,EAAa,CAAC,CACzB5g2C,IAAK,UACL1jB,MAAO,WACL,MAAM,IAAIqmB,MAAM,4BAClB,GACC,CACD3C,IAAK,SACL1jB,MAAO,WACL,OAAO,gBAAoB++0C,IAAS,OAAS,CAC3Ch1zC,SAAUlrB,MACTA,KAAKitC,MAAO,CACbwy0C,SAAUz/2C,KAAK2l3C,UACfzquC,YAAal7I,KAAK4l3C,aAClB9r+B,WAAY95Y,KAAK6l3C,YACjB7n1C,QAASh+B,KAAK8l3C,SACdr6+B,cAAezrY,KAAK+hJ,iBAExB,KAGK0juC,CACT,CAtDkB,CAsDhB,EAAAto+B,eChFF,SAAS,GAAQ//V,EAAQk4U,GAAkB,IAAIhiX,EAAOhU,OAAOgU,KAAK8pC,GAAS,GAAI99C,OAAOmB,sBAAuB,CAAE,IAAI80X,EAAUj2X,OAAOmB,sBAAsB28C,GAAak4U,IAAgBC,EAAUA,EAAQ1oW,QAAO,SAAU2oW,GAAO,OAAOl2X,OAAOmE,yBAAyB25C,EAAQo4U,GAAK7xX,UAAY,KAAI2P,EAAKzR,KAAKtB,MAAM+S,EAAMiiX,EAAU,CAAE,OAAOjiX,CAAM,CAEpV,SAAS,GAAcxD,GAAU,IAAK,IAAIlP,EAAI,EAAGA,EAAIR,UAAUC,OAAQO,IAAK,CAAE,IAAIiH,EAAyB,MAAhBzH,UAAUQ,GAAaR,UAAUQ,GAAK,CAAC,EAAOA,EAAI,EAAK,GAAQtB,OAAOuI,IAAS,GAAMqd,SAAQ,SAAUL,IAAO,OAAgB/U,EAAQ+U,EAAKhd,EAAOgd,GAAO,IAAevlB,OAAOq+B,0BAA6Br+B,OAAOkU,iBAAiB1D,EAAQxQ,OAAOq+B,0BAA0B91B,IAAmB,GAAQvI,OAAOuI,IAASqd,SAAQ,SAAUL,GAAOvlB,OAAO4D,eAAe4M,EAAQ+U,EAAKvlB,OAAOmE,yBAAyBoE,EAAQgd,GAAO,GAAM,CAAE,OAAO/U,CAAQ,EDgFrhB,OAAgB212C,GAAa,YAAaL,KAE1C,OAAgBK,GAAa,eAAgBX,IC7EtC,IAAIiB,GAA4Bzm3C,OAAOa,OAAO,CAAC,EAAGil3C,GAAqB,CAC5E7+9B,UAAW,OACXprQ,OAAQ,OACRC,UAAW,OACXF,YAAa,OACbh6C,WAAY,SACZK,UAAW,WAEFykxC,GAA+B1m3C,OAAOa,OAAO,CAAC,EAAG2k3C,GAAwB,CAClFv+9B,WAAW,EACXrlT,WAAY,EACZK,UAAW,IAGb,SAAS0kxC,GAAqBxn1C,GAC5B,IAAIij1C,EAAsBjj1C,EAAM0jF,aAGhC,MAAO,CAFCu/vC,EAAoBz92C,EACpBy92C,EAAoB1+2C,EAE9B,CAeA,SAASkj3C,GAAcC,EAASC,EAAYn50C,EAAOE,GACjD,IAAIlpC,EAAIki3C,EAAQ,GAAKC,EAAW,GAAKn50C,EAAMi0D,WACvCl+F,EAAImj3C,EAAQ,GAAKC,EAAW,GAAKn50C,EAAMs0D,UAC3C,OAAOp0D,EAAQhC,SAASu+E,UAAU,CAACzlH,EAAGjB,GACxC,CAEA,SAASk4I,GAAYz8G,EAAO2uK,GAC1B,IAAIngK,EAAQmgK,EAAKngK,MACbk6B,EAAYimI,EAAKjmI,UACjBx7D,EAAQyhM,EAAKzhM,MACbwhC,EAAUigK,EAAKjgK,QACf6qN,EAAe5qD,EAAK4qD,aAGxB,GAFgB/qN,EAAMs5W,UAEtB,CAIA9nX,EAAM+jF,kBACN,IAAI2jwC,EAAUF,GAAqBxn1C,GAC/B2n1C,EAjCN,SAA4B3n1C,EAAO2iH,GACjC,IAAIiluC,EAAgB5n1C,EAAMQ,OACtBh7B,EAAIoi3C,EAAcpi3C,EAClBjB,EAAIqj3C,EAAcrj3C,EAEtB,GAAIo+I,EAAW,CACb,IAAI1tD,EAAO0tD,EAAUztD,wBACrB,MAAO,CAACD,EAAK70D,KAAO56B,EAAGyvF,EAAK50D,IAAM97B,EACpC,CAEA,OAAO,IACT,CAsBmBsj3C,CAAmB7n1C,EAAOu5N,EAAaj4N,SAIxD,GAHAp0B,EAAM462C,WAAWJ,GACjBx62C,EAAM662C,cAAcJ,GAEhBj/yC,EAAU+zE,aAAekruC,EAAY,CACvC,IAAIK,EAAgBnn3C,OAAOa,OAAO,CAAC,EAAGs+B,GACtCgo1C,EAAc3nsC,OAASonsC,GAAcC,EAASC,EAAYn50C,EAAOE,GACjEg6B,EAAU+zE,YAAYuruC,EACxB,CAZA,CAaF,CCzEA,IAAI73vC,GAA+B,oBAAX1sH,QAA0BA,OAAO+iG,kBAAoB,EAClEyhxC,GAAa,SAAoB9h2C,GAC1C,OAAO/hB,KAAKogD,MAAMr+B,EAAOgqG,IAAcA,EACzC,EACW+3vC,GAAkB,SAAyB9suC,EAAI2zP,GAGxD,GAAW,OAAP3zP,EACF,OAAO2zP,EAGT,IAAIo5+B,EAAyB,OANbxm3C,UAAUC,OAAS,QAAsB0tC,IAAjB3tC,UAAU,GAAmBA,UAAU,GAAK,KAMjDy5I,EAAGj5G,YAAci5G,EAAGl5G,aACvD,OAAO+l1C,GAAWl5+B,EAAa,IAAMo5+B,GAAYA,EAAW,GAC9D,ECPI,GAAYtn3C,OAAOa,OAAO,CAAC,EAAG4l3C,GAA2B,CAC3Dn2xC,UAAW,SACXvwD,UAAW,SAAiB69xC,WAC5B/9xC,SAAU,SAAiB+9xC,aAEzB,GAAe59zC,OAAOa,OAAO,CAAC,EAAG6l3C,GAA8B,CACjEp2xC,UAAW,KA4Bb,SAAS84T,GAAOz7W,GACd,IAAIyqN,EFoGS,SAA6BzqN,GAC1C,IAAIyx0C,GAAY,IAAA5mnC,UAAS,MACrB8umC,GAAa,OAAe8X,EAAW,GACvCyH,EAAUvf,EAAW,GACrB2f,EAAa3f,EAAW,GAExBuY,GAAa,IAAArnnC,UAAS,MACtBgvmC,GAAa,OAAeqY,EAAY,GACxCiH,EAAatf,EAAW,GACxB0f,EAAgB1f,EAAW,GAE3BpvmC,EAAU2tnC,GAAc,GAAc,GAAc,CAAC,EAAGp40C,GAAQ,CAAC,EAAG,CACtEiuG,YAAaA,MAUf,OARAw8G,EAAQvwL,UAAYl6B,EACpByqN,EAAQ/rP,MAAMw62C,QAAUA,EACxBzunC,EAAQ/rP,MAAM462C,WAAaA,EAC3B7unC,EAAQ/rP,MAAMy62C,WAAaA,EAC3B1unC,EAAQ/rP,MAAM662C,cAAgBA,GAC9B,IAAAll1C,YAAU,WACR,OA5CJ,SAAwBo2N,GACtB,IAAIrqN,EAAeqqN,EAAQvqN,QAAQE,aAEnC,GAAKA,GAAiBqqN,EAAQ/rP,MAAMw62C,QAApC,CAIA,IAAItvxC,EAAS,CACXy3C,QAAS,SAAiBlnD,GACxB,OAnDN,SAAgB3oD,EAAOo1L,GACrB,IAAI5mL,EAAQ4mL,EAAM5mL,MACdk6B,EAAY0sJ,EAAM1sJ,UAClBx7D,EAAQkoN,EAAMloN,MACdwhC,EAAU0mL,EAAM1mL,QACpB1O,EAAM+jF,kBACN,IAAI2jwC,EAAUF,GAAqBxn1C,GACnC9yB,EAAM462C,WAAWJ,GACjB,IAAIC,EAAaz62C,EAAMy62C,WAEvB,GAAIj/yC,EAAUg0E,QAAUiruC,EAAY,CAClC,IAAIK,EAAgBnn3C,OAAOa,OAAO,CAAC,EAAGs+B,GACtCgo1C,EAAc3nsC,OAASonsC,GAAcC,EAASC,EAAYn50C,EAAOE,GACjEg6B,EAAUg0E,OAAOsruC,EACnB,CACF,CAoCatruC,CAAO/zD,EAAKswK,EACrB,EACAnpH,OAAQ,SAAgBnnD,GACtB,OArCN,SAAmB3oD,EAAOiwN,GACxB,IAAIzhN,EAAQyhN,EAAMzhN,MACdk6B,EAAYunL,EAAMvnL,UAClBx7D,EAAQ+iP,EAAM/iP,MACdwhC,EAAUuhN,EAAMvhN,QACpB1O,EAAM+jF,kBACN,IAAI2jwC,EAAUx62C,EAAMw62C,QAChBC,EAAaz62C,EAAMy62C,WAIvB,GAHAz62C,EAAM462C,WAAW,MACjB562C,EAAM662C,cAAc,MAEhBr/yC,EAAUi0E,WAAa+quC,GAAWC,EAAY,CAChD,IAAIK,EAAgBnn3C,OAAOa,OAAO,CAAC,EAAGs+B,GACtCgo1C,EAAc3nsC,OAASonsC,GAAcC,EAASC,EAAYn50C,EAAOE,GACjEg6B,EAAUi0E,UAAUqruC,EACtB,CACF,CAqBarruC,CAAUh0D,EAAKswK,EACxB,EACAwnjC,UAAW,SAAmB93tC,GAC5B,OAtBgB3oD,EAsBI2oD,EArBpBz7E,EAqByB+rP,EArBX/rP,MAClB8yB,EAAM+jF,kBACN72G,EAAM462C,WAAW,WACjB562C,EAAM662C,cAAc,MAJtB,IAAsB/n1C,EAChB9yB,CAsBF,GAGF,OADA0hC,EAAam2wC,MAAM3stC,GACZ,WACLxpD,EAAaW,IAAI6oD,EACnB,CAhBA,CAiBF,CAsBW8iT,CAAejiJ,EACxB,GAAG,CAACA,EAAQvqN,QAAQE,aAAcp6B,QAAQkz2C,KACnCzunC,CACT,CE3HgBmvnC,CAAoB550C,GAC9BthC,EAAQ+rP,EAAQ/rP,MAChBqsP,EAAeN,EAAQM,aACvBh4N,EAAWiN,EAAMjN,SACjB4vD,EAAY3iD,EAAM2iD,UAClB22T,EAAYt5W,EAAMs5W,UAClB4/9B,EAAUx62C,EAAMw62C,QAEhBW,EAlCN,SAAqB15qC,GACnB,IAAIngK,EAAQmgK,EAAKngK,MACbthC,EAAQyhM,EAAKzhM,MACbwhC,EAAUigK,EAAKjgK,QACf9N,EAAY4N,EAAM5N,UAClBF,EAAW8N,EAAM9N,SACjB+hE,EAAaj0D,EAAMi0D,WACnBK,EAAYt0D,EAAMs0D,UAClB4kxC,EAAUx62C,EAAMw62C,QAChBC,EAAaz62C,EAAMy62C,WAEvB,GAAID,GAAWC,EACb,MAAO,CAACD,EAAQ,GAAKC,EAAW,GAAID,EAAQ,GAAKC,EAAW,IAG9D,IAAIW,EAAwB550C,EAAQhC,SAASmsF,QAAQ,CAACj4F,EAAWF,IAC7D6n1C,GAAyB,OAAeD,EAAuB,GAC/D9i3C,EAAI+i3C,EAAuB,GAC3Bhk3C,EAAIgk3C,EAAuB,GAI/B,MAAO,CAFP/i3C,GAAKi9F,EACLl+F,GAAKu+F,EAEP,CAWqB+oE,CAAYotF,GAC3BuvnC,GAAgB,OAAeH,EAAc,GAC7C7i3C,EAAIgj3C,EAAc,GAClBjk3C,EAAIik3C,EAAc,GAElBrkvC,EAAY,aAAa5gI,OAAO0k3C,GAAWzi3C,GAAI,QAAQjC,OAAO0k3C,GAAW1j3C,GAAI,OAC7Eq+I,EAASklQ,EAAY4/9B,EAAU,WAAa,OAAS,OACrDpunC,GAAU,IAAAtpN,UAAQ,WACpB,IAAIkrN,EAAiB,CACnBh7N,SAAU,WACVE,KAAM,EACNC,IAAK,EACL8jG,UAAWA,EACXye,OAAQA,GAEV,OAAO,gBAAoB,MAAO,CAChCzxD,UAAW,mBAAmB5tF,OAAO4tF,GACrChuD,IAAK81N,EAAQM,aACb3jP,MAAOslP,GACN35N,EACL,GAAG,CAACA,EAAU4vD,IACVwxD,EAAY42G,EAAaj4N,QAO7B,OALIqhH,IACFA,EAAU/sI,MAAMuuH,UAAYA,EAC5Bwe,EAAU/sI,MAAMgtI,OAASA,GAGpB02G,CACT,CAEA2wJ,GAAOxuQ,aAAe,GACtBwuQ,GAAOj8Q,UAAY,GACJ,OAAWi8Q,IClFnB,IAAIw+9B,GAAkB,CAC3Bpo1C,IAAK,CACH76B,EAAG,GACHjB,EAAG,GAEL,WAAY,CACViB,EAAG,EACHjB,EAAG,GAEL,YAAa,CACXiB,EAAG,EACHjB,EAAG,GAEL88F,OAAQ,CACN77F,EAAG,GACHjB,EAAG,GAEL,cAAe,CACbiB,EAAG,EACHjB,EAAG,GAEL,eAAgB,CACdiB,EAAG,EACHjB,EAAG,GAEL67B,KAAM,CACJ56B,EAAG,EACHjB,EAAG,IAEL68F,MAAO,CACL57F,EAAG,EACHjB,EAAG,KAGHmk3C,GAAe7n3C,OAAOgU,KAAK4z2C,IC/B/B,SAAS,GAAQ9p0C,EAAQk4U,GAAkB,IAAIhiX,EAAOhU,OAAOgU,KAAK8pC,GAAS,GAAI99C,OAAOmB,sBAAuB,CAAE,IAAI80X,EAAUj2X,OAAOmB,sBAAsB28C,GAAak4U,IAAgBC,EAAUA,EAAQ1oW,QAAO,SAAU2oW,GAAO,OAAOl2X,OAAOmE,yBAAyB25C,EAAQo4U,GAAK7xX,UAAY,KAAI2P,EAAKzR,KAAKtB,MAAM+S,EAAMiiX,EAAU,CAAE,OAAOjiX,CAAM,CAEpV,SAAS,GAAcxD,GAAU,IAAK,IAAIlP,EAAI,EAAGA,EAAIR,UAAUC,OAAQO,IAAK,CAAE,IAAIiH,EAAyB,MAAhBzH,UAAUQ,GAAaR,UAAUQ,GAAK,CAAC,EAAOA,EAAI,EAAK,GAAQtB,OAAOuI,IAAS,GAAMqd,SAAQ,SAAUL,IAAO,OAAgB/U,EAAQ+U,EAAKhd,EAAOgd,GAAO,IAAevlB,OAAOq+B,0BAA6Br+B,OAAOkU,iBAAiB1D,EAAQxQ,OAAOq+B,0BAA0B91B,IAAmB,GAAQvI,OAAOuI,IAASqd,SAAQ,SAAUL,GAAOvlB,OAAO4D,eAAe4M,EAAQ+U,EAAKvlB,OAAOmE,yBAAyBoE,EAAQgd,GAAO,GAAM,CAAE,OAAO/U,CAAQ,CAQrhB,IAAI,GAAYxQ,OAAOa,OAAO,CAAC,EAAGil3C,GAAqB,CACrDx1xC,UAAW,SACXvwD,UAAW,SAAiB69xC,WAC5B/9xC,SAAU,SAAiB+9xC,WAC3Bl1sC,SAAU,SACV9mB,WAAY,SACZK,UAAW,SACX6lxC,QAAS,SACT/uL,YAAa,OACbgvL,aAAc,OACdp+9B,OAAQ,QAAgB3pZ,OAAOgU,KAAK4z2C,KACpCI,gBAAiB,OACjBC,YAAa,OACbC,QAAS,SAEP,GAAelo3C,OAAOa,OAAO,CAAC,EAAG2k3C,GAAwB,CAC3Dl1xC,UAAW,GACXo4B,SAAU,EACV9mB,WAAY,EACZK,UAAW,EACX6lxC,QAAS,GACTn+9B,OAAQ,SACRq+9B,iBAAiB,EACjBC,aAAa,EACblvL,aAAa,EACbgvL,cAAc,EACdG,QAAS,WAAoB,IA8D/B,SAASxp1C,GAAQopD,EAAK+oK,GACpB,IAAIljN,EAAQkjN,EAAMljN,MACdE,EAAUgjN,EAAMhjN,SAEhBF,EAAMo60C,cAAyC,gCAAzBjgyC,EAAIt3E,OAAO8/E,aACnC3iD,EAAMu60C,UAEFr60C,EAAQE,cACVF,EAAQE,aAAajkB,KAAK,SAAS,SAAUjqB,GAC3C,OAAOA,EAAEqjH,iBACX,GAAGp7B,EAAIt3E,QAGb,CAEA,SAAS232C,GAAMx60C,GACb,IAAIy60C,GAAa,IAAApp1C,QAAO,MACpBo5N,EAAU2tnC,GAAc,GAAc,GAAc,CAAC,EAAGp40C,GAAQ,CAAC,EAAG,CACtEjP,QAASA,MAEPmP,EAAUuqN,EAAQvqN,QAClB6qN,EAAeN,EAAQM,aAEvB0mnC,GAAY,IAAA5mnC,WAAS,GAErB2oJ,GADa,OAAei+9B,EAAW,GAChB,IAE3B,IAAAp90C,YAAU,WACRm/W,GAAU,EACZ,GAAG,CAACin+B,EAAW3n1C,UACf,IAAIoL,EAAWgC,EAAQhC,SACnBykD,EAAY3iD,EAAM2iD,UAClBvwD,EAAY4N,EAAM5N,UAClBF,EAAW8N,EAAM9N,SACjB6oF,EAAW/6E,EAAM+6E,SACjBo/vC,EAAUn60C,EAAMm60C,QAChB/uL,EAAcprpC,EAAMorpC,YACpBr4pC,EAAWiN,EAAMjN,SACjBrB,EAAWwM,EAASmsF,QAAQ,CAACj4F,EAAWF,EAAU6oF,IAClD2/vC,EAlGN,SAAqB160C,EAAO9B,EAAU0uG,EAAIuzD,GACxC,IAAIymB,GAAQ,OAAezmB,EAAM,GAC7BnpM,EAAI4vN,EAAM,GACV7wN,EAAI6wN,EAAM,GAEVo1L,EAASh8W,EAAMg8W,OACfq+9B,EAAkBr60C,EAAMq60C,gBACxBF,EAAUn60C,EAAMm60C,QAEpB,OAAIvtuC,GACKytuC,EDjBJ,SAA4Bl6qC,GACjC,IAAInpM,EAAImpM,EAAKnpM,EACTjB,EAAIoqM,EAAKpqM,EACT+7B,EAAQquK,EAAKruK,MACbC,EAASouK,EAAKpuK,OACd4o1C,EAAYx6qC,EAAKw6qC,UACjBC,EAAaz6qC,EAAKy6qC,WAClB5+9B,EAAS77M,EAAK67M,OACd6+9B,EAAe16qC,EAAKl1E,QACpBA,OAA2B,IAAjB4vvC,EAA0B,EAAIA,EACxCC,EAAwBb,GAAgBj+9B,GACxCxtK,EAAUssoC,EAAsB9j3C,EAChCy3O,EAAUqsoC,EAAsB/k3C,EAChC87B,EAAM97B,EAAI04O,EAAUmsoC,EACpB/nxC,EAAShhE,EAAM+o1C,EACfG,EAAUnl3C,KAAK8K,IAAI,EAAGuqH,EAAUp5F,GAAOj8B,KAAK8K,IAAI,EAAGmyF,EAAS9gE,EAASk5F,GAEzE,GAAI8vvC,EAAU,EAAG,CACf,IAAIC,EAAcvsoC,EACdwsoC,EAAYF,EAEhB,IAAKtsoC,EAAU,EAAGA,GAAW,EAAGA,GAAW,GAEzC57I,GADAhhE,EAAM97B,EAAI04O,EAAUmsoC,GACLA,GACfG,EAAUnl3C,KAAK8K,IAAI,EAAGuqH,EAAUp5F,GAAOj8B,KAAK8K,IAAI,EAAGmyF,EAAS9gE,EAASk5F,IAEvDgwvC,IACZA,EAAYF,EACZC,EAAcvsoC,GAIlBA,EAAUusoC,CACZ,CAEA,IAAIE,EAAQ,GAEI,KAAZzsoC,IACFD,EAAU54O,KAAKyK,MAAMmuO,GACrB0soC,EAAQ,GAGV,IAAItp1C,EAAO56B,EAAIw3O,EAAUmsoC,EACrB/nxC,EAAQhhE,EAAO+o1C,EACfQ,EAAUvl3C,KAAK8K,IAAI,EAAGuqH,EAAUr5F,GAAQh8B,KAAK8K,IAAI,EAAGkyF,EAAQ9gE,EAAQm5F,GAExE,GAAIkwvC,EAAU,EAAG,CACf,IAAIC,EAAc5soC,EACd6soC,EAAaF,EAEjB,IAAK3soC,EAAU,EAAGA,GAAW,EAAGA,GAAW0soC,EAEzCtoxC,GADAhhE,EAAO56B,EAAIw3O,EAAUmsoC,GACNA,GACfQ,EAAUvl3C,KAAK8K,IAAI,EAAGuqH,EAAUr5F,GAAQh8B,KAAK8K,IAAI,EAAGkyF,EAAQ9gE,EAAQm5F,IAEtDowvC,IACZA,EAAaF,EACbC,EAAc5soC,GAIlBA,EAAU4soC,CACZ,CAEA,OAAOlB,GAAazg1C,MAAK,SAAUih1C,GACjC,IAAIY,EAAiBrB,GAAgBS,GACrC,OAAOY,EAAetk3C,IAAMw3O,GAAW8soC,EAAevl3C,IAAM04O,CAC9D,KAAMutK,CACR,CCnD6Bu/9B,CAAmB,CAC1Cvk3C,EAAGA,EACHjB,EAAGA,EACHimZ,OAAQA,EACR/wR,QAASkvvC,EACTro1C,MAAOoM,EAASpM,MAChBC,OAAQmM,EAASnM,OACjB4o1C,UAAW/tuC,EAAGsG,YACd0nuC,WAAYhuuC,EAAGwG,eAIZ4oQ,CACT,CA2EqB,CAAYh8W,EAAO9B,EAAUu80C,EAAW3n1C,QAASpB,GAChEg7N,EA1EN,SAA2B1sN,EAAO9B,EAAU0uG,EAAI60G,EAAOi5nC,GACrD,IAAI13nC,GAAQ,OAAevB,EAAO,GAC9BzqP,EAAIgsP,EAAM,GACVjtP,EAAIitP,EAAM,GACVtqP,EAAIsqP,EAAM,GAEV/uJ,EAAaj0D,EAAMi0D,WACnBK,EAAYt0D,EAAMs0D,UAClBgmxC,EAAct60C,EAAMs60C,YACpBgB,EAAiBrB,GAAgBS,GACjC9o1C,EAAO56B,EAAIi9F,EACXpiE,EAAM97B,EAAIu+F,EACVknxC,EAAc9B,GAAgB9suC,EAAwB,KAAnB0uuC,EAAetk3C,GAClDyk3C,EAAc/B,GAAgB9suC,EAAwB,KAAnB0uuC,EAAevl3C,EAAS,KAC3DqR,EAAQ,CACVsqB,SAAU,WACVikG,UAAW,qBAAqB5gI,OAAOym3C,EAAa,OAAOzm3C,OAAO0m3C,EAAa,wBAAwB1m3C,OAAO0k3C,GAAW7n1C,GAAO,QAAQ78B,OAAO0k3C,GAAW5n1C,GAAM,aAChKxqB,aAASy5B,EACTnP,YAAQmP,GAGV,OAAKw50C,GAID5h3C,EAAI,GAAKA,GAAK,GAAK1B,EAAI,GAAKA,EAAIknC,EAASpM,OAAS/7B,EAAI,GAAKA,EAAImoC,EAASnM,OAC1E3qB,EAAMC,QAAU,OAEhBD,EAAMuqB,OAAS/7B,KAAKyK,OAAO,EAAI3H,GAAK,EAAI,KAGnC0O,GATEA,CAUX,CA0CuBs02C,CAAkB170C,EAAO9B,EAAU6sN,EAAaj4N,QAASpB,EAAUgp1C,GACpFiB,GAAe,IAAA9gd,cAAY,SAAU3o6B,GACvC,OAAQguC,EAAQE,cAAgBrP,GAAQ7+B,EAAGu4P,EAC7C,GAAG,CAACvqN,EAAQE,eACZ,OAAO,gBAAoB,MAAO,CAChCuiD,UAAW,wCAAwC5tF,OAAO2l3C,EAAc,KAAK3l3C,OAAO4tF,GACpFv7E,MAAOslP,EACP/3N,IAAKo2N,GACJ,gBAAoB,MAAO,CAC5BnzO,IAAK,MACL+qE,UAAW,qBACXv7E,MAAO,CACLmj+B,YAAa4vY,KAEb,gBAAoB,MAAO,CAC7Bvi2C,IAAK,UACL+c,IAAK8l1C,EACL93xC,UAAW,yBACX5xD,QAAS4q1C,GACRvwL,GAAe,gBAAoB,SAAU,CAC9CxzqC,IAAK,eACL+qE,UAAW,8BACXrjF,KAAM,UACL,KAASyzB,GACd,CClKA,SAAS,GAAQod,EAAQk4U,GAAkB,IAAIhiX,EAAOhU,OAAOgU,KAAK8pC,GAAS,GAAI99C,OAAOmB,sBAAuB,CAAE,IAAI80X,EAAUj2X,OAAOmB,sBAAsB28C,GAAak4U,IAAgBC,EAAUA,EAAQ1oW,QAAO,SAAU2oW,GAAO,OAAOl2X,OAAOmE,yBAAyB25C,EAAQo4U,GAAK7xX,UAAY,KAAI2P,EAAKzR,KAAKtB,MAAM+S,EAAMiiX,EAAU,CAAE,OAAOjiX,CAAM,CDoKpVm02C,GAAMh7uC,UAAY,GAClBg7uC,GAAMvtuC,aAAe,GACN,OAAWutuC,IC7J1B,IAAI,GAAYno3C,OAAOa,OAAO,CAAC,EAAGil3C,GAAqB,CACrDyD,YAAa,SACbj5xC,UAAW,SACXv7E,MAAO,SACPykvC,QAAS,OACTgwH,kBAAmB,YAAoB,CAAC,SAAkB,UAAkB,cAE1E,GAAexp3C,OAAOa,OAAO,CAAC,EAAG2k3C,GAAwB,CAC3Dl1xC,UAAW,GACXi5xC,YAAa,uBAwBf,SAASE,GAAmB970C,GAC1B,IAAIs40C,EAAiBF,GAAcp40C,GAC/BE,EAAUo40C,EAAep40C,QACzB6qN,EAAeutnC,EAAevtnC,aAE9BgxnC,GAAoB,IAAA1q1C,QAAO,MAE3Bog1C,GAAY,IAAA5mnC,WAAS,GACrB8umC,GAAa,OAAe8X,EAAW,GACvCuK,EAAcriB,EAAW,GACzBsiB,EAAiBtiB,EAAW,IAEhC,IAAAtl0C,YAAU,WACR,IAAIy2N,EAQJ,OANI5qN,EAAQ9d,MACV0oO,EArCN,SAAiC17M,EAAMhtB,EAAK+xH,EAAW+nuC,GACrD,IAAIpxnC,EAAU,IAAI,IAASgxnC,oBAAmB1s0C,GAW9C,OAVA07M,EAAQ9yD,KAAO51K,EACf0oO,EAAQ0jgB,WAAar6mB,EACrB22G,EAAQqxnC,gBAAkBD,EAE1BpxnC,EAAQsxnC,sBAERtxnC,EAAQuxnC,kBAERj61C,EAAIze,GAAG,YAAamnP,EAAQoj9B,aAC5B9rrC,EAAIze,GAAG,aAAcmnP,EAAQoj9B,aACtBpj9B,CACT,CAwBgBwxnC,CAAwB,CAChCT,kBAAmB770C,EAAM670C,mBACxB370C,EAAQ9d,IAAK2oO,EAAaj4N,QAASip1C,EAAkBjp1C,UAGnD,WACL,OAAOg4N,GA5Bb,SAAkCA,GAChCA,EAAQ9yD,KAAKj3J,IAAI,YAAa+pN,EAAQoj9B,aAEtCpj9B,EAAQ9yD,KAAKj3J,IAAI,aAAc+pN,EAAQoj9B,YACzC,CAwBwBquK,CAAyBzxnC,EAC7C,CACF,GAAG,CAAC5qN,EAAQ9d,MACZ,IAAIypuC,OAA4B/qtC,IAAlBd,EAAM6rtC,QAAwB3rtC,EAAQhC,SAASpM,OAAS,IAAMkO,EAAM6rtC,SAClF,IAAAx3tC,YAAU,YACHw3tC,GAAWmwH,GACdC,GAAe,EAEnB,GAAG,CAACpwH,IACJ,IAAI2wH,GAAoB,IAAA3hd,cAAY,WAClC,OAAOohd,GAAe,SAAU/n3C,GAC9B,OAAQA,CACV,GACF,GAAG,IACCkT,GAAQ,IAAAo6B,UAAQ,WAClB,OA7EJ,SAAuB3+B,GAAU,IAAK,IAAIlP,EAAI,EAAGA,EAAIR,UAAUC,OAAQO,IAAK,CAAE,IAAIiH,EAAyB,MAAhBzH,UAAUQ,GAAaR,UAAUQ,GAAK,CAAC,EAAOA,EAAI,EAAK,GAAQtB,OAAOuI,IAAS,GAAMqd,SAAQ,SAAUL,IAAO,OAAgB/U,EAAQ+U,EAAKhd,EAAOgd,GAAO,IAAevlB,OAAOq+B,0BAA6Br+B,OAAOkU,iBAAiB1D,EAAQxQ,OAAOq+B,0BAA0B91B,IAAmB,GAAQvI,OAAOuI,IAASqd,SAAQ,SAAUL,GAAOvlB,OAAO4D,eAAe4M,EAAQ+U,EAAKvlB,OAAOmE,yBAAyBoE,EAAQgd,GAAO,GAAM,CAAE,OAAO/U,CAAQ,CA6E1gB,CAAc,CACnB6uB,SAAU,YACTsO,EAAM54B,MACX,GAAG,CAAC44B,EAAM54B,QACV,OAAO,gBAAoB,MAAO,CAChCA,MAAOA,EACPu7E,UAAW3iD,EAAM2iD,WAChB,gBAAoB,MAAO,CAC5BhuD,IAAKo2N,EACL,eAAgBixnC,EAChBr5xC,UAAW,sCAAsC5tF,OAAO82vC,EAAU,mBAAqB,GAAI,KAAK92vC,OAAOin3C,EAAc,wBAA0B,KAC9I,gBAAoB,SAAU,CAC/B182C,KAAM,SACNqjF,UAAW,8BACXy/E,MAAOpiI,EAAM470C,YACb7q1C,QAASyr1C,IACP,gBAAoB,MAAO,CAC7B7n1C,IAAKon1C,EACLp5xC,UAAW,6BACX4yb,KAAM,UAEV,CCpGA,SAAS,GAAQple,EAAQk4U,GAAkB,IAAIhiX,EAAOhU,OAAOgU,KAAK8pC,GAAS,GAAI99C,OAAOmB,sBAAuB,CAAE,IAAI80X,EAAUj2X,OAAOmB,sBAAsB28C,GAAak4U,IAAgBC,EAAUA,EAAQ1oW,QAAO,SAAU2oW,GAAO,OAAOl2X,OAAOmE,yBAAyB25C,EAAQo4U,GAAK7xX,UAAY,KAAI2P,EAAKzR,KAAKtB,MAAM+S,EAAMiiX,EAAU,CAAE,OAAOjiX,CAAM,CDsGpVy12C,GAAmBt8uC,UAAY,GAC/Bs8uC,GAAmB7uuC,aAAe,GACnB,OAAW6uuC,IC9F1B,ICbI57lC,GDaA,GAAY7tR,OAAOa,OAAO,CAAC,EAAGil3C,GAAqB,CACrDx1xC,UAAW,SACXv7E,MAAO,SACP+sI,UAAW,SACX//I,MAAO,WAEL,GAAe/B,OAAOa,OAAO,CAAC,EAAG2k3C,GAAwB,CAC3Dl1xC,UAAW,GACXwxD,UAAW,KACX//I,MAAO,sBAGT,SAASqo3C,GAAkBz80C,GACzB,IAAIs40C,EAAiBF,GAAcp40C,GAC/BE,EAAUo40C,EAAep40C,QACzB6qN,EAAeutnC,EAAevtnC,aAE9B0mnC,GAAY,IAAA5mnC,WAAS,GACrB8umC,GAAa,OAAe8X,EAAW,GACvCiL,EAAe/iB,EAAW,GAC1BgjB,EAAkBhjB,EAAW,GAE7BuY,GAAa,IAAArnnC,WAAS,GACtBgvmC,GAAa,OAAeqY,EAAY,GACxC0K,EAAa/iB,EAAW,GACxBgjB,EAAgBhjB,EAAW,GAE3BijB,GAAa,IAAAjynC,UAAS,MACtBkynC,GAAa,OAAeD,EAAY,GACxCE,EAA0BD,EAAW,GACrCE,EAAgCF,EAAW,IAE/C,IAAA1o1C,YAAU,WACR,IAAIy2N,EAAU,IAAI,IAAS2xnC,mBAC3BQ,EAA8BnynC,GAC9B+xnC,EAAc/xnC,EAAQoynC,2BAEtB,IAAIC,EAAqB,WACvB,IAAI7jqB,GAAaxud,EAAQsynC,YACzBtynC,EAAQsynC,YAAc9jqB,EACtBqjqB,EAAgBrjqB,EAClB,EAGA,OADA,EAAS55rB,iBAAiBorO,EAAQuynC,kBAAmBF,GAC9C,WACL,EAAS/g2C,oBAAoB0uO,EAAQuynC,kBAAmBF,EAC1D,CACF,GAAG,IAEH,IAQI/12C,GAAQ,IAAAo6B,UAAQ,WAClB,OAlEJ,SAAuB3+B,GAAU,IAAK,IAAIlP,EAAI,EAAGA,EAAIR,UAAUC,OAAQO,IAAK,CAAE,IAAIiH,EAAyB,MAAhBzH,UAAUQ,GAAaR,UAAUQ,GAAK,CAAC,EAAOA,EAAI,EAAK,GAAQtB,OAAOuI,IAAS,GAAMqd,SAAQ,SAAUL,IAAO,OAAgB/U,EAAQ+U,EAAKhd,EAAOgd,GAAO,IAAevlB,OAAOq+B,0BAA6Br+B,OAAOkU,iBAAiB1D,EAAQxQ,OAAOq+B,0BAA0B91B,IAAmB,GAAQvI,OAAOuI,IAASqd,SAAQ,SAAUL,GAAOvlB,OAAO4D,eAAe4M,EAAQ+U,EAAKvlB,OAAOmE,yBAAyBoE,EAAQgd,GAAO,GAAM,CAAE,OAAO/U,CAAQ,CAkE1gB,CAAc,CACnB6uB,SAAU,YACTsO,EAAM54B,MACX,GAAG,CAAC44B,EAAM54B,QAEV,IAAKw12C,EACH,OAAO,KAGT,IAAIj6xC,EAAY3iD,EAAM2iD,UAClBvuF,EAAQ4rC,EAAM5rC,MACdkL,EAAOo92C,EAAe,SAAW,aACrC,OAAO,gBAAoB,MAAO,CAChCt12C,MAAOA,EACPu7E,UAAWA,GACV,gBAAoB,MAAO,CAC5BA,UAAW,oCACXhuD,IAAKo2N,GACJ,gBAAoB,SAAU,CAC/BnzO,IAAKtY,EACLqjF,UAAW,oCAAoC5tF,OAAOuK,GACtDA,KAAM,SACN8iK,MAAOhuK,EACP28B,QAhCsB,WAClBis1C,IACFA,EAAwBxunB,WAAaxutB,EAAMm0G,WAAaj0G,EAAQi0G,UAEhE6ouC,EAAwBM,qBAE5B,GA2BG,gBAAoB,OAAQ,CAC7B36xC,UAAW,qBACX,cAAe,WAEnB,CEhGA,SAAS,GAAQxyC,EAAQk4U,GAAkB,IAAIhiX,EAAOhU,OAAOgU,KAAK8pC,GAAS,GAAI99C,OAAOmB,sBAAuB,CAAE,IAAI80X,EAAUj2X,OAAOmB,sBAAsB28C,GAAak4U,IAAgBC,EAAUA,EAAQ1oW,QAAO,SAAU2oW,GAAO,OAAOl2X,OAAOmE,yBAAyB25C,EAAQo4U,GAAK7xX,UAAY,KAAI2P,EAAKzR,KAAKtB,MAAM+S,EAAMiiX,EAAU,CAAE,OAAOjiX,CAAM,CFkGpVo22C,GAAkBj9uC,UAAY,GAC9Bi9uC,GAAkBxvuC,aAAe,GAClB,OAAWwvuC,IEtF1B,IAAI,GAAO,WAAiB,EAExB,GAAYpq3C,OAAOa,OAAO,CAAC,EAAGil3C,GAAqB,CACrDx1xC,UAAW,SACXv7E,MAAO,SACPhT,MAAO,SACPmp3C,cAAe,SACf98J,KAAM,OACN+8J,gBAAiB,SACjBC,iBAAkB,SAClBC,kBAAmB,OACnBC,iBAAkB,OAClBC,mBAAoB,OACpB3s1C,kBAAmB,OACnBsg1C,iBAAkB,OAClBsM,YAAa,SAEX,GAAexr3C,OAAOa,OAAO,CAAC,EAAG2k3C,GAAwB,CAC3Dl1xC,UAAW,GACXvuF,MAAO,mBACPmp3C,cAAe,yBACf98J,MAAM,EACN+8J,gBAAiB,CACfM,oBAAoB,EACpB351C,QAAS,KAEXs51C,iBAAkB,CAChBziwC,QAAS,IAEX0iwC,mBAAmB,EACnBC,kBAAkB,EAClBC,oBAAoB,EACpBC,YAAa,WAAwB,IAiEvC,SAASE,GAAiB/90C,GACxB,IAAIyqN,EAAU2tnC,GAAcp40C,GACxBE,EAAUuqN,EAAQvqN,QAClB6qN,EAAeN,EAAQM,aACvBiznC,GAAqB,IAAA3s1C,QAAO,MAE5Bog1C,GAAY,IAAA5mnC,UAAS,MACrB8umC,GAAa,OAAe8X,EAAW,GACvCwM,EAAyBtkB,EAAW,GACpCukB,EAA+BvkB,EAAW,GAE1CuY,GAAa,IAAArnnC,WAAS,GACtBgvmC,GAAa,OAAeqY,EAAY,GACxCiM,EAAsBtkB,EAAW,GACjCukB,EAAyBvkB,EAAW,IAExC,IAAAxl0C,YAAU,WACR,IAAIy2N,EAkBJ,OAhBI5qN,EAAQ9d,WDnII0e,IAAdo/O,GACKxsR,QAAQ2kB,QAAQ6nQ,SAGYp/O,IAAjC7rC,OAAOm3B,UAAUiy1C,YACZpp3C,OAAOm3B,UAAUiy1C,YAAYr8xC,MAAM,CACxCvkF,KAAM,gBACLtJ,MAAK,SAAU0B,GAEhB,OADAqqR,GAAwB,WAAZrqR,EAAE6I,KAEhB,KAGFwhR,GAAYl6Q,QAAQ/Q,OAAOm3B,UAAUky1C,aAC9B5q3C,QAAQ2kB,QAAQ6nQ,MCsHM/rR,MAAK,SAAUoiB,GACtC6n2C,EAAuB7n2C,GAEnByn2C,EAAmBlr1C,UACrBg4N,EA/EV,SAAqC5qN,EAASF,EAAOu+0C,GACnD,IAAIzznC,EAAU,IAAI,IAASiznC,kBAAiB/90C,GAC5C8qN,EAAQ0jgB,WAAa,EAASnyvB,cAAc,OAC5CyuP,EAAQ9yD,KAAO,CACbr0L,GAAI,WAAe,EACnB662C,aAAc,WACZ,MAAO,EACT,GAGF1znC,EAAQ2znC,UAAS,GAEjB3znC,EAAQ9yD,KAAO93J,EAAQ9d,IACvB0oO,EAAQ4znC,iBAAmBH,EAC3B,IAAIn+0C,EAAeF,EAAQE,aAa3B,OAXI0qN,EAAQ5uO,QAAQwh2C,mBAAqBt90C,GACvCA,EAAaz8B,GAAG,YAAY,WACE,gBAAxBmnP,EAAQ6znC,cACV7znC,EAAQ6znC,YAAc,aACtBJ,EAAgB77xC,UAAUxqE,IAAI,sCAC9Bqm2C,EAAgB77xC,UAAU98D,OAAO,kCAErC,IAGFklO,EAAQnnP,GAAG,YAAaq8B,EAAM690C,aACvB/ynC,CACT,CAmDoB8znC,CAA4B1+0C,EAASF,EAAOg+0C,EAAmBlr1C,SAEzEg4N,EAAQ+znC,cAAgB,SAAUnt1C,GAChC,OApDZ,SAAsBA,EAAUyuK,GAC9B,IAAIjgK,EAAUigK,EAAKjgK,QACfF,EAAQmgK,EAAKngK,MACb+wF,EAxCN,SAAmBr/F,GACjB,IAAIM,EAAS,IAAI,IAAS8s1C,QAAOpt1C,EAASg5F,OAAOt4F,UAAWV,EAASg5F,OAAOx4F,UACxEm4G,EAAS34G,EAASg5F,OAAOmjnC,SACzB98mC,EAAS/+F,EAAO+s1C,SAAS10uC,GAC7B,MAAO,CAAC,CAACtZ,EAAOiuvC,IAAI7s1C,IAAK4+F,EAAOiuvC,IAAI/s1C,KAAM,CAAC8+F,EAAO4ojC,IAAIxnpC,IAAK4+F,EAAO4ojC,IAAI1npC,KACxE,CAmCe0/F,CAAUjgG,GAEnBut1C,EAAwB/+0C,EAAQhC,SAAS8+H,UAAUjsC,EAAQ/wF,EAAMy90C,kBACjErr1C,EAAY6s1C,EAAsB7s1C,UAClCF,EAAW+s1C,EAAsB/s1C,SACjCQ,EAAOus1C,EAAsBvs1C,KAE7BsrI,EAAe3rK,OAAOa,OAAO,CAAC,EAAGgtC,EAAQhC,SAAU,CACrD9L,UAAWA,EACXF,SAAUA,EACVQ,KAAMA,IAEJyh1C,EAAW,IAAIr5vC,EAASkjD,GACxBptI,EAAYv+B,OAAOa,OAAO,CAAC,EAAGih3C,EAASh9vC,mBAAoBi9vC,IAC3D7C,EAAmBvx0C,EAAMux0C,kBAAoBrx0C,EAAQqx0C,kBAAoB,IACrDvx0C,EAAM/O,mBAAqBiP,EAAQjP,mBAAqB,IAC9D,CAChBL,UAAWA,IAEb2g1C,EAAiB3g1C,EACnB,CA6BmBsu1C,CAAaxt1C,EAAU+4N,EAChC,EAEAyznC,EAA6BpznC,GAEjC,IAGK,WACDA,GACFA,EAAQq0nC,aAEZ,CACF,GAAG,CAACj/0C,EAAQ9d,MACZ,IAAIg91C,GAAmB,IAAAvkd,cAAY,WAC7Bojd,IACFA,EAAuB/h2C,QAAUuuO,EAAQzqN,MACzCi+0C,EAAuBxs1C,UAE3B,GAAG,CAACws1C,KACJ,IAAA5p1C,YAAU,WACJ2L,EAAMygrC,MACR2+J,GAEJ,GAAG,CAACnB,EAAwBj+0C,EAAMygrC,QAClC,IAAApsrC,YAAU,WACJ4p1C,GACFA,EAAuB9rP,SAE3B,GAAG,CAACjylC,EAAQhC,SAASxL,OACrB,IAAIiwD,EAAY3iD,EAAM2iD,UAClBvuF,EAAQ4rC,EAAM5rC,MACdmp3C,EAAgBv90C,EAAMu90C,cACtBG,EAAoB190C,EAAM090C,kBAC1Bt22C,GAAQ,IAAAo6B,UAAQ,WAClB,OA3KJ,SAAuB3+B,GAAU,IAAK,IAAIlP,EAAI,EAAGA,EAAIR,UAAUC,OAAQO,IAAK,CAAE,IAAIiH,EAAyB,MAAhBzH,UAAUQ,GAAaR,UAAUQ,GAAK,CAAC,EAAOA,EAAI,EAAK,GAAQtB,OAAOuI,IAAS,GAAMqd,SAAQ,SAAUL,IAAO,OAAgB/U,EAAQ+U,EAAKhd,EAAOgd,GAAO,IAAevlB,OAAOq+B,0BAA6Br+B,OAAOkU,iBAAiB1D,EAAQxQ,OAAOq+B,0BAA0B91B,IAAmB,GAAQvI,OAAOuI,IAASqd,SAAQ,SAAUL,GAAOvlB,OAAO4D,eAAe4M,EAAQ+U,EAAKvlB,OAAOmE,yBAAyBoE,EAAQgd,GAAO,GAAM,CAAE,OAAO/U,CAAQ,CA2K1gB,CAAc,CACnB6uB,SAAU,YACTsO,EAAM54B,MACX,GAAG,CAAC44B,EAAM54B,QACV,OAAO,gBAAoB,MAAO,CAChCA,MAAOA,EACPu7E,UAAWA,GACV,gBAAoB,MAAO,CAC5B/qE,IAAK,oBACL+qE,UAAW,oCACXhuD,IAAKo2N,GACJ,gBAAoB,SAAU,CAC/BnzO,IAAK,YACL+qE,UAAW,6CACXhuD,IAAKqp1C,EACL36gC,UAAW86gC,EACX,gBAAiBT,EACjBp+2C,KAAM,SACN8iK,MAAO+7sC,EAAsB/p3C,EAAQmp3C,EACrC,aAAcY,EAAsB/p3C,EAAQmp3C,EAC5Cxs1C,QAASqu1C,GACR,gBAAoB,OAAQ,CAC7Bz8xC,UAAW,qBACX,cAAe,WAEnB,CCvMA,SAAS,GAAQxyC,EAAQk4U,GAAkB,IAAIhiX,EAAOhU,OAAOgU,KAAK8pC,GAAS,GAAI99C,OAAOmB,sBAAuB,CAAE,IAAI80X,EAAUj2X,OAAOmB,sBAAsB28C,GAAak4U,IAAgBC,EAAUA,EAAQ1oW,QAAO,SAAU2oW,GAAO,OAAOl2X,OAAOmE,yBAAyB25C,EAAQo4U,GAAK7xX,UAAY,KAAI2P,EAAKzR,KAAKtB,MAAM+S,EAAMiiX,EAAU,CAAE,OAAOjiX,CAAM,CDyMpV032C,GAAiBv+uC,UAAY,GAC7Bu+uC,GAAiB9wuC,aAAe,GACjB,OAAW8wuC,IC/L1B,IAAI,GAAO,WAAiB,EAExB,GAAY1r3C,OAAOa,OAAO,CAAC,EAAGil3C,GAAqB,CACrDx1xC,UAAW,SACXv7E,MAAO,SACP6pB,kBAAmB,OACnBsg1C,iBAAkB,OAClB8N,YAAa,OACbC,SAAU,OACVC,YAAa,SACbC,aAAc,SACdC,aAAc,WAEZ,GAAept3C,OAAOa,OAAO,CAAC,EAAG2k3C,GAAwB,CAC3Dl1xC,UAAW,GACX08xC,aAAa,EACbC,UAAU,EACVC,YAAa,UACbC,aAAc,WACdC,aAAc,gBAEZC,GAAiB,EACjBC,GAAc,EAMlB,SAAS5owC,GAAe72E,EAASF,EAAOoP,GACtC,IAAIlR,EAAWgC,EAAQhC,SACnBi20C,EAAW,IAAIr5vC,EAASzoH,OAAOa,OAAO,CAAC,EAAGgrC,EAAUkR,IACpDxe,EAAYv+B,OAAOa,OAAO,CAAC,EAAGih3C,EAASh9vC,mBAAoBi9vC,IAC3D7C,EAAmBvx0C,EAAMux0C,kBAAoBrx0C,EAAQqx0C,kBAAoB,IACrDvx0C,EAAM/O,mBAAqBiP,EAAQjP,mBAAqB,IAC9D,CAChBL,UAAWA,IAEb2g1C,EAAiB3g1C,EACnB,CAEA,SAASgv1C,GAAatg3C,EAAMlL,EAAO6nB,EAAU8W,GAC3C,OAAO,gBAAoB,SAAU,CACnCnb,IAAKtY,EACLqjF,UAAW,oCAAoC5tF,OAAOuK,GACtDA,KAAM,SACN8iK,MAAOhuK,EACP28B,QAAS9U,GACR8W,GAAY,gBAAoB,OAAQ,CACzC4vD,UAAW,qBACX,cAAe,SAEnB,CAoBA,SAASk9xC,GAAkB7/0C,GACzB,IAAIs40C,EAAiBF,GAAcp40C,GAC/BE,EAAUo40C,EAAep40C,QACzB6qN,EAAeutnC,EAAevtnC,aAqB9BpoK,EAAY3iD,EAAM2iD,UAClB08xC,EAAcr/0C,EAAMq/0C,YACpBC,EAAWt/0C,EAAMs/0C,SACjBC,EAAcv/0C,EAAMu/0C,YACpBC,EAAex/0C,EAAMw/0C,aACrBC,EAAez/0C,EAAMy/0C,aACrBr42C,GAAQ,IAAAo6B,UAAQ,WAClB,OAhHJ,SAAuB3+B,GAAU,IAAK,IAAIlP,EAAI,EAAGA,EAAIR,UAAUC,OAAQO,IAAK,CAAE,IAAIiH,EAAyB,MAAhBzH,UAAUQ,GAAaR,UAAUQ,GAAK,CAAC,EAAOA,EAAI,EAAK,GAAQtB,OAAOuI,IAAS,GAAMqd,SAAQ,SAAUL,IAAO,OAAgB/U,EAAQ+U,EAAKhd,EAAOgd,GAAO,IAAevlB,OAAOq+B,0BAA6Br+B,OAAOkU,iBAAiB1D,EAAQxQ,OAAOq+B,0BAA0B91B,IAAmB,GAAQvI,OAAOuI,IAASqd,SAAQ,SAAUL,GAAOvlB,OAAO4D,eAAe4M,EAAQ+U,EAAKvlB,OAAOmE,yBAAyBoE,EAAQgd,GAAO,GAAM,CAAE,OAAO/U,CAAQ,CAgH1gB,CAAc,CACnB6uB,SAAU,YACTsO,EAAM54B,MACX,GAAG,CAAC44B,EAAM54B,QACV,OAAO,gBAAoB,MAAO,CAChCA,MAAOA,EACPu7E,UAAWA,GACV,gBAAoB,MAAO,CAC5BA,UAAW,oCACXhuD,IAAKo2N,GACJu0nC,GAAYM,GAAa,UAAWL,GApCxB,WACbxowC,GAAe72E,EAASF,EAAO,CAC7BtN,KAAMwN,EAAQhC,SAASxL,KAAO,GAElC,IAgC+D4s1C,GAAYM,GAAa,WAAYJ,GA9BpF,WACdzowC,GAAe72E,EAASF,EAAO,CAC7BtN,KAAMwN,EAAQhC,SAASxL,KAAO,GAElC,IA0B8H2s1C,GAAeO,GAAa,UAAWH,GAxBlJ,WACjB1owC,GAAe72E,EAASF,EAAO,CAC7BzN,QAAS,EACTE,MAAO,GAEX,GAxCF,SAAuByN,GACrB,IAAI4/0C,GAAY,IAAAt+0C,UAAQ,WACtB,OAAOtB,EAAQ9d,ICrEZ,SAAyB291C,EAAUC,GAIxC,IAHA,IAAInisC,GAAMkisC,GAAY,IAAIpo3C,MAAM,KAAKyqB,IAAI8V,QACrC4lJ,EDqCkC,QCrCZnmL,MAAM,KAAKyqB,IAAI8V,QAEhCvkC,EAAI,EAAGA,EAAI,EAAGA,IAAK,CAC1B,IAAIss3C,EAAQpisC,EAAGlqL,IAAM,EACjBus3C,EAAQpisC,EAAGnqL,IAAM,EAErB,GAAIss3C,EAAQC,EACV,OAAQ,EAGV,GAAID,EAAQC,EACV,OAAO,CAEX,CAEA,OAAO,CACT,CDqBSC,CA8B6Bjg1C,EAAQ9d,IAAI/oB,UA9BE,EAAIsm3C,GAAcD,GA8BTC,EAC3D,GAAG,CAACz/0C,EAAQ9d,MACRmQ,EAAU2N,EAAQhC,SAAS3L,QAC3BnrB,EAAQ,CACVuuH,UAAW,UAAU5gI,QAAQw9B,EAAS,SAExC,OAAOut1C,IAAcH,GAAc,gBAAoB,OAAQ,CAC7Dh9xC,UAAW,qBACX,cAAe,OACfv7E,MAAOA,IACJ,gBAAoB,OAAQ,CAC/Bu7E,UAAW,8BACXv7E,MAAOA,GAEX,CA2CmMg52C,CAAclg1C,KACjN,CE5HA,SAAS,GAAQiQ,EAAQk4U,GAAkB,IAAIhiX,EAAOhU,OAAOgU,KAAK8pC,GAAS,GAAI99C,OAAOmB,sBAAuB,CAAE,IAAI80X,EAAUj2X,OAAOmB,sBAAsB28C,GAAak4U,IAAgBC,EAAUA,EAAQ1oW,QAAO,SAAU2oW,GAAO,OAAOl2X,OAAOmE,yBAAyB25C,EAAQo4U,GAAK7xX,UAAY,KAAI2P,EAAKzR,KAAKtB,MAAM+S,EAAMiiX,EAAU,CAAE,OAAOjiX,CAAM,CF8HpVw52C,GAAkBrgvC,UAAY,GAC9BqgvC,GAAkB5yuC,aAAe,GAClB,OAAW4yuC,IEvH1B,IAAI,GAAYxt3C,OAAOa,OAAO,CAAC,EAAGil3C,GAAqB,CACrDx1xC,UAAW,SACXv7E,MAAO,SACP67J,SAAU,SACVqsM,KAAM,QAAgB,CAAC,WAAY,SAAU,eAE3C,GAAej9W,OAAOa,OAAO,CAAC,EAAG2k3C,GAAwB,CAC3Dl1xC,UAAW,GACXsgF,SAAU,IACVqsM,KAAM,WAGR,SAAS+wgC,GAAarg1C,GACpB,IAAIs40C,EAAiBF,GAAcp40C,GAC/BE,EAAUo40C,EAAep40C,QACzB6qN,EAAeutnC,EAAevtnC,aAE9B0mnC,GAAY,IAAA5mnC,UAAS,MACrB8umC,GAAa,OAAe8X,EAAW,GACvC6O,EAAqB3mB,EAAW,GAChC4mB,EAA2B5mB,EAAW,IAE1C,IAAAtl0C,YAAU,WACR,GAAI6L,EAAQ9d,IAAK,CACf,IAAI0oO,EAAU,IAAI,IAASu1nC,cAC3Bv1nC,EAAQ9yD,KAAO93J,EAAQ9d,IACvB0oO,EAAQ0jgB,WAAazjgB,EAAaj4N,QAClCyt1C,EAAyBz1nC,EAC3B,CACF,GAAG,CAAC5qN,EAAQ9d,MAERk+1C,IACFA,EAAmBpk2C,QAAU8jB,EAE7Bsg1C,EAAmBE,WAGrB,IAAIp52C,GAAQ,IAAAo6B,UAAQ,WAClB,OA7CJ,SAAuB3+B,GAAU,IAAK,IAAIlP,EAAI,EAAGA,EAAIR,UAAUC,OAAQO,IAAK,CAAE,IAAIiH,EAAyB,MAAhBzH,UAAUQ,GAAaR,UAAUQ,GAAK,CAAC,EAAOA,EAAI,EAAK,GAAQtB,OAAOuI,IAAS,GAAMqd,SAAQ,SAAUL,IAAO,OAAgB/U,EAAQ+U,EAAKhd,EAAOgd,GAAO,IAAevlB,OAAOq+B,0BAA6Br+B,OAAOkU,iBAAiB1D,EAAQxQ,OAAOq+B,0BAA0B91B,IAAmB,GAAQvI,OAAOuI,IAASqd,SAAQ,SAAUL,GAAOvlB,OAAO4D,eAAe4M,EAAQ+U,EAAKvlB,OAAOmE,yBAAyBoE,EAAQgd,GAAO,GAAM,CAAE,OAAO/U,CAAQ,CA6C1gB,CAAc,CACnB6uB,SAAU,YACTsO,EAAM54B,MACX,GAAG,CAAC44B,EAAM54B,QACV,OAAO,gBAAoB,MAAO,CAChCA,MAAOA,EACPu7E,UAAW3iD,EAAM2iD,WAChB,gBAAoB,MAAO,CAC5BhuD,IAAKo2N,EACLpoK,UAAW,sCAEf,CAEA09xC,GAAa7gvC,UAAY,GACzB6gvC,GAAapzuC,aAAe,GACb,OAAWozuC,IC5D1B,IAAI,GAA+B,oBAAXpr3C,QAA0BA,OAAO+iG,kBAAoB,EACzE,GAAY3lG,OAAOa,OAAO,CAAC,EAAGil3C,GAAqB,CACrDp+uC,OAAQ,OAAek2rC,aAUzB,SAASwwD,GAAczg1C,GACrB,IAAIs40C,EAAiBF,GAAcp40C,GAC/BE,EAAUo40C,EAAep40C,QACzB6qN,EAAeutnC,EAAevtnC,aAE9B0mnC,GAAY,IAAA5mnC,UAAS,MACrB8umC,GAAa,OAAe8X,EAAW,GACvCpnoC,EAAMsvnC,EAAW,GACjB+mB,EAAoB/mB,EAAW,IAEnC,IAAAtl0C,YAAU,WACRqs1C,EAAkB31nC,EAAaj4N,QAAQgtB,WAAW,MACpD,GAAG,IACH,IAAI5hB,EAAWgC,EAAQhC,SACnBi1E,EAAajzE,EAAQizE,WAgBzB,OAdIk3H,IACFA,EAAIjjN,OACJijN,EAAIx1I,MAAM,GAAY,IACtB70D,EAAM+5F,OAAO,CACXjoG,MAAOoM,EAASpM,MAChBC,OAAQmM,EAASnM,OACjBs4M,IAAKA,EACLl3H,WAAYA,EACZkX,QAASnsF,EAASmsF,QAClB5N,UAAWv+E,EAASu+E,YAEtB4tH,EAAI0khB,WAGC,gBAAoB,SAAU,CACnCp6tB,IAAKo2N,EACLj5N,MAAOoM,EAASpM,MAAQ,GACxBC,OAAQmM,EAASnM,OAAS,GAC1B3qB,MAAO,CACL0qB,MAAO,GAAG/8B,OAAOmpC,EAASpM,MAAO,MACjCC,OAAQ,GAAGh9B,OAAOmpC,EAASnM,OAAQ,MACnCL,SAAU,WACVE,KAAM,EACNC,IAAK,IAGX,CCzDA,SAAS,GAAQse,EAAQk4U,GAAkB,IAAIhiX,EAAOhU,OAAOgU,KAAK8pC,GAAS,GAAI99C,OAAOmB,sBAAuB,CAAE,IAAI80X,EAAUj2X,OAAOmB,sBAAsB28C,GAAak4U,IAAgBC,EAAUA,EAAQ1oW,QAAO,SAAU2oW,GAAO,OAAOl2X,OAAOmE,yBAAyB25C,EAAQo4U,GAAK7xX,UAAY,KAAI2P,EAAKzR,KAAKtB,MAAM+S,EAAMiiX,EAAU,CAAE,OAAOjiX,CAAM,CD2DpVo62C,GAAcjhvC,UAAY,GAC1BihvC,GAAcxzuC,aArDK,CACjB6quC,eAAe,EACfC,aAAa,EACbC,cAAc,EACdC,oBAAoB,EACpBC,oBAAoB,GCLtB,IAAI,GAAY7l3C,OAAOa,OAAO,CAAC,EAAGil3C,GAAqB,CACrDp+uC,OAAQ,OAAek2rC,WACvB7ozC,MAAO,WAUT,SAASu52C,GAAY3g1C,GACnB,IAAIs40C,EAAiBF,GAAcp40C,GAC/BE,EAAUo40C,EAAep40C,QACzB6qN,EAAeutnC,EAAevtnC,aAE9B7sN,EAAWgC,EAAQhC,SACnBi1E,EAAajzE,EAAQizE,WAErB/rG,EAzBN,SAAuBvE,GAAU,IAAK,IAAIlP,EAAI,EAAGA,EAAIR,UAAUC,OAAQO,IAAK,CAAE,IAAIiH,EAAyB,MAAhBzH,UAAUQ,GAAaR,UAAUQ,GAAK,CAAC,EAAOA,EAAI,EAAK,GAAQtB,OAAOuI,IAAS,GAAMqd,SAAQ,SAAUL,IAAO,OAAgB/U,EAAQ+U,EAAKhd,EAAOgd,GAAO,IAAevlB,OAAOq+B,0BAA6Br+B,OAAOkU,iBAAiB1D,EAAQxQ,OAAOq+B,0BAA0B91B,IAAmB,GAAQvI,OAAOuI,IAASqd,SAAQ,SAAUL,GAAOvlB,OAAO4D,eAAe4M,EAAQ+U,EAAKvlB,OAAOmE,yBAAyBoE,EAAQgd,GAAO,GAAM,CAAE,OAAO/U,CAAQ,CAyBvgB,CAAc,CACxB6uB,SAAU,WACVE,KAAM,EACNC,IAAK,EACLC,MAAOoM,EAASpM,MAChBC,OAAQmM,EAASnM,QAChBiO,EAAM54B,OAET,OAAO,gBAAoB,MAAO,CAChCutB,IAAKo2N,EACL3jP,MAAOA,GACN44B,EAAM+5F,OAAO,CACdjoG,MAAOoM,EAASpM,MAChBC,OAAQmM,EAASnM,OACjBohF,WAAYA,EACZkX,QAASnsF,EAASmsF,QAClB5N,UAAWv+E,EAASu+E,YAExB,CC7CA,SAAS,GAAQtsE,EAAQk4U,GAAkB,IAAIhiX,EAAOhU,OAAOgU,KAAK8pC,GAAS,GAAI99C,OAAOmB,sBAAuB,CAAE,IAAI80X,EAAUj2X,OAAOmB,sBAAsB28C,GAAak4U,IAAgBC,EAAUA,EAAQ1oW,QAAO,SAAU2oW,GAAO,OAAOl2X,OAAOmE,yBAAyB25C,EAAQo4U,GAAK7xX,UAAY,KAAI2P,EAAKzR,KAAKtB,MAAM+S,EAAMiiX,EAAU,CAAE,OAAOjiX,CAAM,CD+CpVs62C,GAAYnhvC,UAAY,GACxBmhvC,GAAY1zuC,aArCO,CACjB6quC,eAAe,EACfC,aAAa,EACbC,cAAc,EACdC,oBAAoB,EACpBC,oBAAoB,GCTtB,IAAI,GAAY7l3C,OAAOa,OAAO,CAAC,EAAGil3C,GAAqB,CACrDp+uC,OAAQ,OAAek2rC,WACvB7ozC,MAAO,WAUT,SAASw52C,GAAW5g1C,GAClB,IAAIs40C,EAAiBF,GAAcp40C,GAC/BE,EAAUo40C,EAAep40C,QACzB6qN,EAAeutnC,EAAevtnC,aAE9B7sN,EAAWgC,EAAQhC,SACnBi1E,EAAajzE,EAAQizE,WAErB/rG,EAzBN,SAAuBvE,GAAU,IAAK,IAAIlP,EAAI,EAAGA,EAAIR,UAAUC,OAAQO,IAAK,CAAE,IAAIiH,EAAyB,MAAhBzH,UAAUQ,GAAaR,UAAUQ,GAAK,CAAC,EAAOA,EAAI,EAAK,GAAQtB,OAAOuI,IAAS,GAAMqd,SAAQ,SAAUL,IAAO,OAAgB/U,EAAQ+U,EAAKhd,EAAOgd,GAAO,IAAevlB,OAAOq+B,0BAA6Br+B,OAAOkU,iBAAiB1D,EAAQxQ,OAAOq+B,0BAA0B91B,IAAmB,GAAQvI,OAAOuI,IAASqd,SAAQ,SAAUL,GAAOvlB,OAAO4D,eAAe4M,EAAQ+U,EAAKvlB,OAAOmE,yBAAyBoE,EAAQgd,GAAO,GAAM,CAAE,OAAO/U,CAAQ,CAyBvgB,CAAc,CACxB6uB,SAAU,WACVE,KAAM,EACNC,IAAK,GACJmO,EAAM54B,OAET,OAAO,gBAAoB,MAAO,CAChC0qB,MAAOoM,EAASpM,MAChBC,OAAQmM,EAASnM,OACjB4C,IAAKo2N,EACL3jP,MAAOA,GACN44B,EAAM+5F,OAAO,CACdjoG,MAAOoM,EAASpM,MAChBC,OAAQmM,EAASnM,OACjBohF,WAAYA,EACZkX,QAASnsF,EAASmsF,QAClB5N,UAAWv+E,EAASu+E,YAExB,CAEAmkwC,GAAWphvC,UAAY,GACvBohvC,GAAW3zuC,aArCQ,CACjB6quC,eAAe,EACfC,aAAa,EACbC,cAAc,EACdC,oBAAoB,EACpBC,oBAAoB,GCjBC,KAAW,IAAS2I,oCCCoBhx1C,EAAOr6B,QAG9D,WAAe,aAIvB,IAAIun1C,EAAQzwzC,EAAQmi1C,EAGpB,SAAS96iC,EAAOh9T,EAAGuiE,GACnB,GAAK6jxC,EAEE,GAAKzwzC,EAEL,CACH,IAAIw01C,EAAqB,0BAA4B/jC,EAAS,oBAAsBzwzC,EAAS,kBAEzFy01C,EAAc,CAAC,EACnBhkC,EAAOgkC,GACPtS,EAAWv1yC,EAAM6nzC,GACK,oBAAX9r3C,SACPw52C,EAAS5hyC,UAAY53E,OAAO8lB,IAAIC,gBAAgB,IAAIF,KAAK,CAACgm2C,GAAqB,CAAExh3C,KAAM,qBAE/F,MAVIgtB,EAAS4sC,OAFT6jxC,EAAS7jxC,CAab,CAWA,OARAy6P,EAAO,GAAY,SAAUxhU,GAAgB,SAASD,EAAEC,EAAED,GAAG,OAAOC,EAAED,EAAE,CAACsD,QAAQ,CAAC,GAAGtD,EAAEsD,SAAStD,EAAEsD,OAAO,CAAC,IAAI1C,EAAEV,EAAE,SAASA,EAAED,EAAED,EAAEY,EAAEV,GAAGW,KAAK0gQ,GAAG,EAAEthQ,EAAEY,KAAKg+V,GAAG,GAAGj+V,EAAEX,GAAGY,KAAK0gQ,GAAG1gQ,KAAK49V,GAAG,EAAE59V,KAAK0gQ,GAAG1gQ,KAAKg+V,GAAGh+V,KAAKinW,GAAG,EAAE9nW,EAAEa,KAAKi+V,GAAG,GAAG5+V,EAAEF,GAAGa,KAAKinW,GAAGjnW,KAAK69V,GAAG,EAAE79V,KAAKinW,GAAGjnW,KAAKi+V,GAAGj+V,KAAKiu3C,IAAI7u3C,EAAEY,KAAKku3C,IAAI7u3C,EAAEW,KAAKmu3C,IAAIpu3C,EAAEC,KAAKou3C,IAAI/u3C,CAAE,CAACA,EAAEK,UAAU2u3C,aAAa,SAASjv3C,GAAG,QAASY,KAAK49V,GAAGx+V,EAAEY,KAAKg+V,IAAI5+V,EAAEY,KAAK0gQ,IAAIthQ,CAAC,EAAEC,EAAEK,UAAU4u3C,aAAa,SAASlv3C,GAAG,QAASY,KAAK69V,GAAGz+V,EAAEY,KAAKi+V,IAAI7+V,EAAEY,KAAKinW,IAAI7nW,CAAC,EAAEC,EAAEK,UAAU6u3C,uBAAuB,SAASnv3C,GAAG,OAAQ,EAAEY,KAAK49V,GAAGx+V,EAAE,EAAEY,KAAKg+V,IAAI5+V,EAAEY,KAAK0gQ,EAAE,EAAErhQ,EAAEK,UAAU8u3C,YAAY,SAASpv3C,EAAED,GAAG,IAAIY,EAAEV,EAAEuB,EAAEI,EAAEV,EAAE,SAAI,IAASnB,IAAIA,EAAE,MAAMyB,EAAExB,EAAEkB,EAAE,EAAEA,EAAE,EAAEA,IAAI,CAAC,GAAGU,EAAEhB,KAAKqu3C,aAAazt3C,GAAGxB,EAAEyD,KAAKmjH,IAAIhlH,GAAG7B,EAAE,OAAOyB,EAAE,IAAIE,EAAEd,KAAKuu3C,uBAAuB3t3C,GAAG,GAAGiC,KAAKmjH,IAAIllH,GAAG,KAAK,MAAMF,GAAGI,EAAEF,CAAE,CAAC,IAAIF,EAAExB,IAAIW,EAAE,GAAG,OAAOA,EAAE,GAAGa,GAAGvB,EAAE,GAAG,OAAOA,EAAE,KAAKU,EAAEV,GAAG,CAAC,GAAG2B,EAAEhB,KAAKqu3C,aAAazt3C,GAAGiC,KAAKmjH,IAAIhlH,EAAE5B,GAAGD,EAAE,OAAOyB,EAAExB,EAAE4B,EAAEjB,EAAEa,EAAEvB,EAAEuB,EAAEA,EAAE,IAAIvB,EAAEU,GAAGA,CAAE,CAAC,OAAOa,CAAC,EAAEvB,EAAEK,UAAU+u3C,MAAM,SAASrv3C,EAAED,GAAG,OAAOa,KAAKsu3C,aAAatu3C,KAAKwu3C,YAAYpv3C,EAAED,GAAG,EAAE,IAAIyB,EAAEI,EAAE,SAASA,EAAE5B,EAAED,GAAGa,KAAKiE,EAAE7E,EAAEY,KAAKgD,EAAE7D,CAAE,CAAC6B,EAAEtB,UAAU,CAAC6wB,MAAM,WAAW,OAAO,IAAIvvB,EAAEhB,KAAKiE,EAAEjE,KAAKgD,EAAE,EAAEmiB,IAAI,SAAS/lB,GAAG,OAAOY,KAAKuwB,QAAQ02G,KAAK7nI,EAAE,EAAE81B,IAAI,SAAS91B,GAAG,OAAOY,KAAKuwB,QAAQm+1C,KAAKtv3C,EAAE,EAAEuv3C,YAAY,SAASvv3C,GAAG,OAAOY,KAAKuwB,QAAQq+1C,aAAaxv3C,EAAE,EAAEyv3C,WAAW,SAASzv3C,GAAG,OAAOY,KAAKuwB,QAAQu+1C,YAAY1v3C,EAAE,EAAE2v3C,KAAK,SAAS3v3C,GAAG,OAAOY,KAAKuwB,QAAQy+1C,MAAM5v3C,EAAE,EAAEkwN,IAAI,SAASlwN,GAAG,OAAOY,KAAKuwB,QAAQ0+1C,KAAK7v3C,EAAE,EAAEqmH,OAAO,SAASrmH,GAAG,OAAOY,KAAKuwB,QAAQ2+1C,QAAQ9v3C,EAAE,EAAE+v3C,aAAa,SAAS/v3C,EAAED,GAAG,OAAOa,KAAKuwB,QAAQ6+1C,cAAchw3C,EAAED,EAAE,EAAEkw3C,QAAQ,SAASjw3C,GAAG,OAAOY,KAAKuwB,QAAQ++1C,SAASlw3C,EAAE,EAAEm9W,KAAK,WAAW,OAAOv8W,KAAKuwB,QAAQg/1C,OAAO,EAAEC,KAAK,WAAW,OAAOxv3C,KAAKuwB,QAAQk/1C,OAAO,EAAExs0C,MAAM,WAAW,OAAOjjD,KAAKuwB,QAAQq/tC,QAAQ,EAAE1pkC,IAAI,WAAW,OAAOrjL,KAAK4yF,KAAKz1F,KAAKiE,EAAEjE,KAAKiE,EAAEjE,KAAKgD,EAAEhD,KAAKgD,EAAE,EAAEuvI,OAAO,SAASnzI,GAAG,OAAOY,KAAKiE,IAAI7E,EAAE6E,GAAGjE,KAAKgD,IAAI5D,EAAE4D,CAAC,EAAE+2V,KAAK,SAAS36V,GAAG,OAAOyD,KAAK4yF,KAAKz1F,KAAK0v3C,QAAQtw3C,GAAG,EAAEsw3C,QAAQ,SAAStw3C,GAAG,IAAID,EAAEC,EAAE6E,EAAEjE,KAAKiE,EAAElE,EAAEX,EAAE4D,EAAEhD,KAAKgD,EAAE,OAAO7D,EAAEA,EAAEY,EAAEA,CAAC,EAAE4uO,MAAM,WAAW,OAAO9rO,KAAK0xH,MAAMv0H,KAAKgD,EAAEhD,KAAKiE,EAAE,EAAE0r3C,QAAQ,SAASvw3C,GAAG,OAAOyD,KAAK0xH,MAAMv0H,KAAKgD,EAAE5D,EAAE4D,EAAEhD,KAAKiE,EAAE7E,EAAE6E,EAAE,EAAE2r3C,UAAU,SAASxw3C,GAAG,OAAOY,KAAK6v3C,aAAazw3C,EAAE6E,EAAE7E,EAAE4D,EAAE,EAAE6s3C,aAAa,SAASzw3C,EAAED,GAAG,OAAO0D,KAAK0xH,MAAMv0H,KAAKiE,EAAE9E,EAAEa,KAAKgD,EAAE5D,EAAEY,KAAKiE,EAAE7E,EAAEY,KAAKgD,EAAE7D,EAAE,EAAEmw3C,SAAS,SAASlw3C,GAAG,IAAID,EAAEC,EAAE,GAAGY,KAAKiE,EAAE7E,EAAE,GAAGY,KAAKgD,EAAE,OAAOhD,KAAKiE,EAAE7E,EAAE,GAAGY,KAAKiE,EAAE7E,EAAE,GAAGY,KAAKgD,EAAEhD,KAAKgD,EAAE7D,EAAEa,IAAI,EAAEinI,KAAK,SAAS7nI,GAAG,OAAOY,KAAKiE,GAAG7E,EAAE6E,EAAEjE,KAAKgD,GAAG5D,EAAE4D,EAAEhD,IAAI,EAAE0u3C,KAAK,SAAStv3C,GAAG,OAAOY,KAAKiE,GAAG7E,EAAE6E,EAAEjE,KAAKgD,GAAG5D,EAAE4D,EAAEhD,IAAI,EAAEgv3C,MAAM,SAAS5v3C,GAAG,OAAOY,KAAKiE,GAAG7E,EAAEY,KAAKgD,GAAG5D,EAAEY,IAAI,EAAEiv3C,KAAK,SAAS7v3C,GAAG,OAAOY,KAAKiE,GAAG7E,EAAEY,KAAKgD,GAAG5D,EAAEY,IAAI,EAAE4u3C,aAAa,SAASxv3C,GAAG,OAAOY,KAAKiE,GAAG7E,EAAE6E,EAAEjE,KAAKgD,GAAG5D,EAAE4D,EAAEhD,IAAI,EAAE8u3C,YAAY,SAAS1v3C,GAAG,OAAOY,KAAKiE,GAAG7E,EAAE6E,EAAEjE,KAAKgD,GAAG5D,EAAE4D,EAAEhD,IAAI,EAAEuv3C,MAAM,WAAW,OAAOvv3C,KAAKiv3C,KAAKjv3C,KAAKkmL,OAAOlmL,IAAI,EAAEyv3C,MAAM,WAAW,IAAIrw3C,EAAEY,KAAKgD,EAAE,OAAOhD,KAAKgD,EAAEhD,KAAKiE,EAAEjE,KAAKiE,GAAG7E,EAAEY,IAAI,EAAEkv3C,QAAQ,SAAS9v3C,GAAG,IAAID,EAAE0D,KAAKuxH,IAAIh1H,GAAGW,EAAE8C,KAAK4wH,IAAIr0H,GAAGC,EAAEU,EAAEC,KAAKiE,EAAE9E,EAAEa,KAAKgD,EAAE,OAAOhD,KAAKiE,EAAE9E,EAAEa,KAAKiE,EAAElE,EAAEC,KAAKgD,EAAEhD,KAAKgD,EAAE3D,EAAEW,IAAI,EAAEov3C,cAAc,SAAShw3C,EAAED,GAAG,IAAIY,EAAE8C,KAAKuxH,IAAIh1H,GAAGC,EAAEwD,KAAK4wH,IAAIr0H,GAAGwB,EAAEzB,EAAE6D,EAAE3D,GAAGW,KAAKiE,EAAE9E,EAAE8E,GAAGlE,GAAGC,KAAKgD,EAAE7D,EAAE6D,GAAG,OAAOhD,KAAKiE,EAAE9E,EAAE8E,EAAElE,GAAGC,KAAKiE,EAAE9E,EAAE8E,GAAG5E,GAAGW,KAAKgD,EAAE7D,EAAE6D,GAAGhD,KAAKgD,EAAEpC,EAAEZ,IAAI,EAAE4vvC,OAAO,WAAW,OAAO5vvC,KAAKiE,EAAEpB,KAAKogD,MAAMjjD,KAAKiE,GAAGjE,KAAKgD,EAAEH,KAAKogD,MAAMjjD,KAAKgD,GAAGhD,IAAI,GAAGgB,EAAEi7xB,QAAQ,SAAS78xB,GAAG,OAAOA,aAAa4B,EAAE5B,EAAEK,MAAMkS,QAAQvS,GAAG,IAAI4B,EAAE5B,EAAE,GAAGA,EAAE,IAAIA,CAAC,EAAE,IAAIkB,EAAE,oBAAoB8B,KAAKA,KAAK,CAAC,EAAEtB,EAAE+B,KAAK6yF,IAAI,EAAE,IAAI,EAAE,SAASrzF,EAAEjD,EAAED,EAAEE,EAAEuB,GAAG,IAAII,EAAE,IAAIjB,EAAEX,EAAED,EAAEE,EAAEuB,GAAG,OAAO,SAASxB,GAAG,OAAO4B,EAAEyt3C,MAAMrv3C,EAAE,CAAC,CAAC,IAAIoD,EAAEH,EAAE,IAAI,GAAG,IAAI,GAAG,SAASS,EAAE1D,EAAED,EAAEY,GAAG,OAAO8C,KAAKgL,IAAI9N,EAAE8C,KAAK8K,IAAIxO,EAAEC,GAAG,CAAC,SAASyB,EAAEzB,EAAED,EAAEY,GAAG,IAAIV,EAAEU,EAAEZ,EAAEyB,IAAIxB,EAAED,GAAGE,EAAEA,GAAGA,EAAEF,EAAE,OAAOyB,IAAIzB,EAAEY,EAAEa,CAAC,CAAC,SAASgC,EAAExD,GAAG,IAAI,IAAID,EAAE,GAAGY,EAAEK,UAAUC,OAAO,EAAEN,KAAK,GAAGZ,EAAEY,GAAGK,UAAUL,EAAE,GAAG,IAAI,IAAIV,EAAE,EAAEuB,EAAEzB,EAAEE,EAAEuB,EAAEP,OAAOhB,GAAG,EAAE,CAAC,IAAI2B,EAAEJ,EAAEvB,GAAG,IAAI,IAAIiB,KAAKU,EAAE5B,EAAEkB,GAAGU,EAAEV,EAAG,CAAC,OAAOlB,CAAC,CAAC,IAAIsD,EAAE,EAAE,SAASM,IAAI,OAAON,GAAG,CAAC,SAASC,IAAI,OAAO,SAASvD,EAAED,GAAG,OAAOA,GAAGA,EAAE,GAAG0D,KAAKwF,UAAUlJ,EAAE,GAAGoF,SAAS,KAAK,CAAC,MAAM,CAAC,MAAM,KAAK,KAAK,MAAMkI,QAAQ,SAASrN,EAAE,CAAhH,EAAmH,CAAC,SAASgE,EAAEhE,GAAG,QAASA,GAAG,2EAA2EiM,KAAKjM,EAAE,CAAC,SAAS6D,EAAE7D,EAAED,GAAGC,EAAE8lB,SAAQ,SAAU9lB,GAAGD,EAAEC,KAAKD,EAAEC,GAAGD,EAAEC,GAAGiE,KAAKlE,GAAK,GAAG,CAAC,SAASgD,EAAE/C,EAAED,GAAG,OAAQ,IAAIC,EAAEoB,QAAQrB,EAAEC,EAAEiB,OAAOlB,EAAEkB,OAAO,CAAC,SAAS4D,EAAE7E,EAAED,EAAEY,GAAG,IAAIV,EAAE,CAAC,EAAE,IAAI,IAAIuB,KAAKxB,EAAEC,EAAEuB,GAAGzB,EAAES,KAAKG,GAAGC,KAAKZ,EAAEwB,GAAGA,EAAExB,GAAG,OAAOC,CAAC,CAAC,SAASiE,EAAElE,EAAED,EAAEY,GAAG,IAAIV,EAAE,CAAC,EAAE,IAAI,IAAIuB,KAAKxB,EAAED,EAAES,KAAKG,GAAGC,KAAKZ,EAAEwB,GAAGA,EAAExB,KAAKC,EAAEuB,GAAGxB,EAAEwB,IAAI,OAAOvB,CAAC,CAAC,SAASkE,EAAEnE,GAAG,OAAOK,MAAMkS,QAAQvS,GAAGA,EAAEiwB,IAAI9rB,GAAG,iBAAiBnE,GAAGA,EAAE6E,EAAE7E,EAAEmE,GAAGnE,CAAC,CAAC,IAAIwE,EAAE,CAAC,EAAE,SAASiB,EAAEzF,GAAGwE,EAAExE,KAAK,oBAAoBioB,SAASA,QAAQC,KAAKloB,GAAGwE,EAAExE,IAAG,EAAI,CAAC,SAASoE,EAAEpE,EAAED,EAAEY,GAAG,OAAQA,EAAEiD,EAAE5D,EAAE4D,IAAI7D,EAAE8E,EAAE7E,EAAE6E,IAAI9E,EAAE6D,EAAE5D,EAAE4D,IAAIjD,EAAEkE,EAAE7E,EAAE6E,EAAE,CAAC,SAASP,EAAEtE,GAAG,IAAI,IAAID,EAAE,EAAEY,EAAE,EAAEV,EAAED,EAAEiB,OAAOO,EAAEvB,EAAE,EAAE2B,OAAE,EAAOV,OAAE,EAAOP,EAAEV,EAAEuB,EAAEb,IAAIZ,KAAKmB,EAAElB,EAAEwB,IAAIqD,GAAGjD,EAAE5B,EAAEW,IAAIkE,IAAIjD,EAAEgC,EAAE1C,EAAE0C,GAAG,OAAO7D,CAAC,CAAC,SAAS0E,IAAI,MAAO,oBAAoBis3C,mBAAmB,oBAAoB1t3C,MAAMA,gBAAgB0t3C,iBAAiB,CAAC,SAASnq3C,EAAEvG,GAAG,IAAID,EAAE,CAAC,EAAE,GAAGC,EAAEqN,QAAQ,4JAA2J,SAAUrN,EAAEW,EAAEV,EAAEuB,GAAG,IAAII,EAAE3B,GAAGuB,EAAE,OAAOzB,EAAEY,IAAIiB,GAAGA,EAAEuO,cAAc,EAAG,IAAGpQ,EAAE,WAAW,CAAC,IAAIY,EAAE41B,SAASx2B,EAAE,WAAW,IAAImtC,MAAMvsC,UAAUZ,EAAE,WAAWA,EAAE,WAAWY,CAAE,CAAC,OAAOZ,CAAC,CAAC,IAAIgF,EAAE,KAAK,SAASO,EAAEtF,GAAG,GAAG,MAAM+E,EAAE,CAAC,IAAIhF,EAAEC,EAAEi6B,UAAUj6B,EAAEi6B,UAAUC,UAAU,KAAKn1B,IAAI/E,EAAEq0Y,WAAWt0Y,KAAK,yBAAyBkM,KAAKlM,IAAIA,EAAEsH,MAAM,YAAYtH,EAAEsH,MAAM,WAAY,CAAC,OAAOtC,CAAC,CAAC,SAASW,EAAE1F,GAAG,IAAI,IAAID,EAAEmB,EAAElB,GAAG,OAAOD,EAAE+sB,QAAQ,gBAAgB,GAAG/sB,EAAE4tB,WAAW,kBAAiB,CAAE,CAAC,MAAM3tB,GAAG,OAAO,CAAE,CAAC,CAAC,IAAIyG,EAAEE,EAAE7B,EAAE0B,EAAEZ,EAAE1E,EAAEykD,aAAazkD,EAAEykD,YAAYt5B,IAAInrB,EAAEykD,YAAYt5B,IAAIpoB,KAAK/C,EAAEykD,aAAav5B,KAAKC,IAAIpoB,KAAKmoB,MAAMjmB,EAAEjF,EAAEg2G,uBAAuBh2G,EAAEk78B,0BAA0Bl78B,EAAEkipB,6BAA6BlipB,EAAEi78B,wBAAwBl38B,EAAE/D,EAAEm2G,sBAAsBn2G,EAAEyv3C,yBAAyBzv3C,EAAE0v3C,4BAA4B1v3C,EAAE2v3C,uBAAuBjs3C,EAAE,CAACynB,IAAIzmB,EAAE8xC,MAAM,SAAS13C,GAAG,IAAID,EAAEoG,EAAEnG,GAAG,MAAO,CAACyjD,OAAO,WAAW,OAAOx+C,EAAElF,EAAE,EAAE,EAAE+mP,aAAa,SAAS9mP,EAAED,QAAG,IAASA,IAAIA,EAAE,GAAG,IAAIY,EAAEO,EAAE6E,SAASmE,cAAc,UAAUjK,EAAEU,EAAEgtD,WAAW,MAAM,IAAI1tD,EAAE,MAAM,IAAImoB,MAAM,sCAAsC,OAAOznB,EAAEg/B,MAAM3/B,EAAE2/B,MAAMh/B,EAAEi/B,OAAO5/B,EAAE4/B,OAAO3/B,EAAEq4O,UAAUt4O,EAAE,EAAE,EAAEA,EAAE2/B,MAAM3/B,EAAE4/B,QAAQ3/B,EAAE6mP,cAAc/mP,GAAGA,EAAEC,EAAE2/B,MAAM,EAAE5/B,EAAEC,EAAE4/B,OAAO,EAAE7/B,EAAE,EAAEwh7B,WAAW,SAASvh7B,GAAG,OAAOyG,IAAIA,EAAEvF,EAAE6E,SAASmE,cAAc,MAAMzD,EAAEo1B,KAAK77B,EAAEyG,EAAEo1B,IAAI,EAAEi11C,oBAAoB5v3C,EAAE+4B,WAAW/4B,EAAE+4B,UAAU621C,qBAAqB,EAAE,oBAAIjrxC,GAAmB,OAAO3kG,EAAE2kG,gBAAgB,EAAE,wBAAIkrxC,GAAuB,QAAS7v3C,EAAE8v3C,aAAa,MAAMrq3C,IAAIA,EAAEzF,EAAE8v3C,WAAW,qCAAqCrq3C,EAAEkuD,QAAQ,GAAG3vD,EAAE,CAAC+r3C,QAAQ,yBAAyB,cAAIC,GAAa,OAAOtw3C,KAAKqw3C,QAAQ,IAAIrw3C,KAAKqw3C,QAAQ7v3C,QAAQ,yBAAyB,qCAAqC,IAAIR,KAAKqw3C,QAAQ7v3C,QAAQ,0BAA0B,sCAAsC,KAAK,IAAI,EAAE+v3C,aAAa,mCAAmCC,sBAAqB,EAAGC,aAAa,KAAKC,4BAA4B,IAAIrr3C,EAAE,CAAC8nR,WAAU,EAAGwjmC,YAAY,SAASvx3C,IAAIgF,GAAGwB,IAAIM,EAAEhB,EAAE9F,GAAG8E,EAAE9E,EAAG,GAAGgF,GAAE,EAAG8B,GAAE,EAAG,SAAShB,EAAE9F,GAAG,IAAID,EAAEC,EAAEsrJ,gBAAgBtrJ,EAAEkkV,YAAYlkV,EAAE0sS,WAAW3sS,GAAG,IAAI,GAAGC,EAAEwuV,WAAWxuV,EAAE0sS,WAAW,EAAE1sS,EAAE0mN,KAAK1mN,EAAE0mN,KAAK1mN,EAAE46M,cAAcp0M,GAAGxG,EAAEgxT,gBAAgB,OAAO/qT,EAAE8nR,WAAU,CAAG,CAAC,MAAM/tR,GAAG,CAACA,EAAEixV,cAAclxV,GAAGiF,GAAE,CAAG,CAAC9D,EAAE6E,YAAYS,EAAEtF,EAAE6E,SAASmE,cAAc,QAAQonB,OAAO,WAAWxsB,GAAGgB,EAAEhB,GAAGA,EAAE,KAAKgC,GAAE,CAAG,EAAEN,EAAE8pB,QAAQ,WAAWtrB,GAAE,EAAGF,EAAE,IAAK,EAAE0B,EAAE4O,IAAI,+EAA+E,IAAIvP,EAAE,KAAKN,EAAE,SAASvF,EAAED,GAAGa,KAAK4w3C,oBAAoBxx3C,EAAEY,KAAK6w3C,mBAAmB1x3C,EAAEa,KAAK8w3C,iBAAkB,EAAE,SAASrs3C,EAAErF,GAAG,OAAO,IAAIA,EAAEoB,QAAQ,UAAU,CAACmE,EAAEjF,UAAUox3C,gBAAgB,WAAW,IAAI1x3C,EAAE,WAAW,IAAI,IAAIA,EAAE,GAAGD,EAAE,EAAEA,EAAE,GAAGA,IAAIC,GAAG,iEAAiEyD,KAAKyK,MAAM,GAAGzK,KAAKwF,WAAW,MAAO,CAACg1K,MAAM,CAAC,IAAIp4K,EAAE7F,GAAGyN,KAAK,IAAIkk3C,eAAevl2C,KAAKC,MAAM,MAAM,CAAxM,GAA4MzrB,KAAKgx3C,UAAU5x3C,EAAEi+K,MAAMr9K,KAAKix3C,mBAAmB7x3C,EAAE2x3C,cAAe,EAAEps3C,EAAEjF,UAAUwx3C,mBAAmB,WAAW,OAAO1l2C,KAAKC,MAAMzrB,KAAKix3C,kBAAkB,EAAEts3C,EAAEjF,UAAU066B,iBAAiB,SAASh76B,EAAED,GAAG,OAAOa,KAAK4w3C,qBAAqB5w3C,KAAK4w3C,oBAAoBxx3C,EAAED,IAAI,CAAC+wB,IAAI9wB,EAAE,EAAEuF,EAAEjF,UAAUyx3C,kBAAkB,SAAS/x3C,EAAED,GAAG,IAAIsF,EAAErF,GAAG,OAAOA,EAAE,IAAIW,EAAE0F,EAAErG,GAAG,OAAOW,EAAEs2B,KAAK,aAAat2B,EAAEs2B,KAAKr2B,KAAKox3C,YAAYrx3C,EAAEC,KAAK6w3C,oBAAoB1x3C,EAAE,EAAEwF,EAAEjF,UAAU2x3C,mBAAmB,SAASjy3C,EAAED,GAAG,IAAIsF,EAAErF,GAAG,OAAOA,EAAE,IAAIW,EAAE0F,EAAErG,GAAG,OAAOW,EAAEs2B,KAAK,YAAYt2B,EAAEs2B,KAAKr2B,KAAKox3C,YAAYrx3C,EAAEC,KAAK6w3C,oBAAoB1x3C,EAAE,EAAEwF,EAAEjF,UAAU4x3C,mBAAmB,SAASly3C,EAAED,GAAG,IAAIsF,EAAErF,GAAG,OAAOA,EAAE,IAAIW,EAAE0F,EAAErG,GAAG,OAAOW,EAAEs2B,KAAK,OAAOt2B,EAAEwx3C,UAAU,QAAQxx3C,EAAEsoC,OAAOxmC,KAAK,UAAU7B,KAAKox3C,YAAYrx3C,EAAEC,KAAK6w3C,oBAAoB1x3C,EAAE,EAAEwF,EAAEjF,UAAU8x3C,mBAAmB,SAASpy3C,EAAED,EAAEY,EAAEV,GAAG,IAAIuB,EAAE6E,EAAErG,GAAG,OAAOqF,EAAErF,IAAIwB,EAAEy1B,KAAK,aAAaz1B,EAAEy1B,KAAK,UAAUl3B,EAAEY,EAAEC,KAAKox3C,YAAYxw3C,EAAEZ,KAAK6w3C,oBAAoBxx3C,KAAKuB,EAAEy1B,MAAM,GAAGl3B,EAAEY,EAAEqG,EAAExF,GAAG,EAAE+D,EAAEjF,UAAU+x3C,iBAAiB,SAASry3C,EAAED,GAAG,GAAGa,KAAKkx3C,sBAAsBlx3C,KAAK8w3C,kBAAkB1x3C,IAAIqF,EAAErF,GAAG,OAAOA,EAAE,IAAIW,EAAE0F,EAAErG,GAAGW,EAAEs2B,KAAKt2B,EAAEs2B,KAAK5pB,QAAQ,yBAAyBzI,EAAEihG,kBAAkB,GAAG,MAAM9lG,EAAE,MAAM,KAAKkG,EAAE8nR,UAAU,QAAQ,OAAOptR,EAAEs2B,KAAKt2B,EAAEs2B,KAAK5pB,QAAQ,YAAY,KAAK1M,EAAEs2B,KAAK,MAAMt2B,EAAEs2B,KAAK,IAAIh3B,EAAEW,KAAK6w3C,oBAAoB,SAASzx3C,GAAG,IAAI,IAAID,EAAE,EAAEY,EAAEX,EAAED,EAAEY,EAAEM,OAAOlB,GAAG,EAAE,CAAC,IAAIE,EAAEU,EAAEZ,GAAGsH,MAAM,uBAAuB,GAAGpH,EAAE,OAAOA,EAAE,EAAE,CAAC,OAAO,IAAI,CAAjH,CAAmHU,EAAEsoC,SAAS/jC,EAAEms3C,aAAa,OAAOns3C,EAAEks3C,sBAAsBnx3C,GAAGW,KAAKgx3C,WAAWjx3C,EAAEsoC,OAAOxmC,KAAK,OAAO7B,KAAKgx3C,WAAWhx3C,KAAKox3C,YAAYrx3C,EAAEV,EAAE,EAAEsF,EAAEjF,UAAUgy3C,oBAAoB,SAASty3C,EAAED,GAAG,IAAIY,EAAE0F,EAAErG,GAAG,IAAIW,EAAEs2B,KAAK5vB,MAAM,eAAe1G,EAAEs2B,KAAK5vB,MAAM,YAAY,OAAOrH,EAAE,IAAIC,EAAE,kBAAkBA,GAAGU,EAAEs2B,KAAK5pB,QAAQ,OAAO,IAAI,IAAI7L,EAAEb,EAAEsoC,OAAO,OAAOlpC,IAAIyB,EAAEA,EAAEisB,QAAO,SAAUztB,GAAG,OAAQA,EAAEqH,MAAM,iBAAkB,KAAI7F,EAAEP,SAAShB,GAAG,IAAIuB,EAAEiM,KAAK,MAAMxN,CAAC,EAAEsF,EAAEjF,UAAUiy3C,oBAAoB,SAASvy3C,EAAED,GAAG,IAAI,IAAIY,IAAIZ,GAAGsF,EAAEtF,GAAGE,EAAE,GAAGuB,EAAE,EAAEI,EAAE5B,EAAEsrC,OAAO,GAAG9pC,EAAEI,EAAEX,OAAOO,GAAG,EAAE,CAAC,IAAIN,EAAEU,EAAEJ,GAAG8E,EAAEpF,GAAGjB,EAAEwC,KAAK7B,KAAK0x3C,oBAAoBpx3C,EAAEP,IAAIV,EAAEwC,KAAKvB,EAAG,CAAC,OAAOjB,CAAC,EAAEsF,EAAEjF,UAAU0x3C,YAAY,SAAShy3C,EAAED,GAAG,IAAIY,EAAE,+EAA+EV,EAAEoG,EAAEnB,EAAE+r3C,SAAS,GAAGjx3C,EAAE43B,SAAS33B,EAAE23B,SAAS53B,EAAEmy3C,UAAUly3C,EAAEky3C,UAAU,SAASny3C,EAAE43B,SAAS,CAAC,IAAIp2B,EAAExB,EAAEipC,OAAO7nC,QAAQ,UAAUI,GAAG,GAAGxB,EAAEipC,OAAOplB,OAAOriB,EAAE,EAAG,CAAC,GAAG,MAAMvB,EAAEg3B,OAAOj3B,EAAEi3B,KAAK,GAAGh3B,EAAEg3B,KAAKj3B,EAAEi3B,OAAO/xB,EAAEks3C,qBAAqB,OAAOpq3C,EAAEhH,GAAG,KAAKD,EAAEA,GAAGmF,EAAEms3C,cAAc,MAAM,IAAIjp2C,MAAM,qDAAqDznB,GAAG,GAAG,MAAMZ,EAAE,GAAG,MAAM,IAAIqoB,MAAM,sFAAsFznB,GAAG,OAAOX,EAAEipC,OAAOjpC,EAAEipC,OAAOxb,QAAO,SAAUztB,GAAG,OAAQ,IAAIA,EAAEoB,QAAQ,eAAgB,IAAGpB,EAAEipC,OAAOxmC,KAAK,gBAAgB1C,GAAGiH,EAAEhH,EAAE,EAAE,IAAI2F,EAAE,yDAAyD,SAASW,EAAEtG,GAAG,OAAO2F,EAAEsG,KAAKjM,EAAE,CAAC,IAAIoG,EAAE,wCAAwC,SAASC,EAAErG,GAAG,IAAID,EAAEC,EAAEqH,MAAMjB,GAAG,IAAIrG,EAAE,MAAM,IAAIqoB,MAAM,8BAA8B,MAAO,CAACwP,SAAS73B,EAAE,GAAGoy3C,UAAUpy3C,EAAE,GAAGk3B,KAAKl3B,EAAE,IAAI,IAAIkpC,OAAOlpC,EAAE,GAAGA,EAAE,GAAGyF,MAAM,KAAK,GAAG,CAAC,SAASwB,EAAEhH,GAAG,IAAID,EAAEC,EAAEipC,OAAOhoC,OAAO,IAAIjB,EAAEipC,OAAOx7B,KAAK,KAAK,GAAG,OAAOzN,EAAE43B,SAAS,MAAM53B,EAAEmy3C,UAAUny3C,EAAEi3B,KAAKl3B,CAAC,CAAC,SAASqF,EAAEpF,GAAG,IAAIA,EAAE,OAAO,KAAK,IAAID,EAAEC,EAAEwF,MAAM,KAAK,IAAIzF,GAAG,IAAIA,EAAEkB,OAAO,OAAO,KAAK,IAAI,OAAOia,KAAKiS,MAAMqD,mBAAmBtvB,EAAEuvB,KAAK1wB,EAAE,IAAIyF,MAAM,IAAIyqB,KAAI,SAAUjwB,GAAG,MAAO,KAAK,KAAKA,EAAE2Z,WAAW,GAAGxU,SAAS,KAAKxC,OAAO,EAAG,IAAG8K,KAAK,KAAK,CAAC,MAAMzN,GAAG,OAAO,IAAI,CAAC,CAAC,IAAI4G,EAAE,SAAS5G,GAAGY,KAAKuM,KAAKnN,EAAEY,KAAK4x3C,OAAO,KAAK5x3C,KAAK+gc,UAAU,CAAC,EAAE/gc,KAAKw+C,MAAM,GAAGx+C,KAAK6x3C,eAAe,IAAK,EAAE7r3C,EAAEtG,UAAUoy3C,cAAc,SAAS1y3C,GAAG,IAAID,EAAEY,EAAEyE,EAAEF,EAAEms3C,cAAc,OAAOtx3C,EAAEY,GAAGA,EAAEsC,EAAE/B,EAAE6uB,KAAKG,mBAAmBvvB,EAAEsC,GAAGoK,QAAQ,mBAAkB,SAAUrN,EAAED,GAAG,OAAOW,OAAO4nB,aAAayd,OAAO,KAAKhmC,GAAI,KAAImF,EAAEms3C,cAAc,GAAGrx3C,EAAE,oBAAoBA,EAAE,IAAID,EAAE,oBAAoBA,CAAC,EAAE6G,EAAEtG,UAAUqy3C,eAAe,WAAW,IAAI3y3C,EAAE0F,EAAE,gBAAgB3F,EAAEa,KAAK8x3C,gBAAgB/x3C,EAAEC,KAAK8x3C,cAAc,QAAQ,GAAG1y3C,EAAE,IAAI,IAAIC,EAAEiB,EAAE0rB,aAAaC,QAAQ9sB,GAAGE,IAAIW,KAAK+gc,UAAUzmb,KAAKiS,MAAMltB,IAAI,IAAIuB,EAAEN,EAAE0rB,aAAaC,QAAQlsB,GAAGa,IAAIZ,KAAK4x3C,OAAOhx3C,EAAG,CAAC,MAAMxB,GAAGyF,EAAE,mCAAoC,CAAC,EAAEmB,EAAEtG,UAAUsy3C,cAAc,WAAW,IAAI5y3C,EAAE0F,EAAE,gBAAgB3F,EAAEa,KAAK8x3C,gBAAgB/x3C,EAAEC,KAAK8x3C,cAAc,QAAQ,GAAG1y3C,EAAE,IAAIkB,EAAE0rB,aAAaE,QAAQnsB,EAAEC,KAAK4x3C,QAAQty3C,OAAOgU,KAAKtT,KAAK+gc,WAAW1gc,QAAQ,GAAGC,EAAE0rB,aAAaE,QAAQ/sB,EAAEmb,KAAKb,UAAUzZ,KAAK+gc,WAAY,CAAC,MAAM3hc,GAAGyF,EAAE,kCAAmC,CAAC,EAAEmB,EAAEtG,UAAUuy3C,gBAAgB,SAAS7y3C,GAAG,EAAE4G,EAAEtG,UAAUwy3C,UAAU,SAAS9y3C,EAAED,EAAEY,EAAEV,GAAG,IAAIuB,EAAEZ,KAAK,GAAGsE,EAAEgs3C,WAAW,CAAC,IAAItv3C,EAAEyE,EAAEnB,EAAEgs3C,YAAYtv3C,EAAEqnC,OAAOxmC,KAAK,iBAAiBxC,GAAGiF,EAAEms3C,cAAc,KAAK,IAAInw3C,EAAE,CAACm+B,MAAMz+B,KAAKuM,KAAKknD,QAAQ,IAAIjoC,KAAKpsB,GAAGgpC,cAAc+p1C,cAAc,eAAe/66B,WAAW,SAASg76B,MAAMnt3C,EAAE0zE,OAAO34E,KAAK4x3C,QAAQ9w3C,EAAE3B,EAAEyD,EAAEtC,EAAEnB,GAAGmB,EAAE+B,EAAE,CAAC6tB,IAAI9pB,EAAEpF,GAAGwvB,QAAQ,CAAC,eAAe,cAAcO,KAAKzW,KAAKb,UAAU,CAAC3Y,KAAKd,KAAK6x3C,eAAetk3C,GAAGlL,GAAE,SAAUjD,GAAGwB,EAAEix3C,eAAe,KAAK9x3C,EAAEX,GAAGwB,EAAEox3C,gBAAgBpx3C,EAAEqx3C,gBAAgB5y3C,EAAI,GAAG,CAAC,EAAE2G,EAAEtG,UAAU2y3C,aAAa,SAASjz3C,EAAED,GAAGa,KAAKw+C,MAAM38C,KAAKzC,GAAGY,KAAKiy3C,gBAAgB9y3C,EAAG,EAAE,IAAI6L,GAAGD,GAAGG,GAAG,SAAS9L,GAAG,SAASD,IAAIC,EAAEQ,KAAKI,KAAK,YAAYA,KAAKizW,QAAQ,CAAC,EAAEjzW,KAAKsy3C,SAAS,EAAG,CAAC,OAAOlz3C,IAAID,EAAEK,UAAUJ,IAAID,EAAEO,UAAUJ,OAAOY,OAAOd,GAAGA,EAAEM,YAAYO,YAAYd,EAAEA,EAAEO,UAAU6y3C,iBAAiB,SAASnz3C,EAAED,EAAEY,EAAEV,GAAGW,KAAKsy3C,SAASvy3C,EAAE,IAAIa,KAAKvB,IAAIiF,EAAEms3C,cAAczv3C,EAAEvB,MAAMkS,QAAQvS,IAAIA,EAAEuoC,MAAK,SAAUvoC,GAAG,OAAOqF,EAAErF,IAAIsG,EAAEtG,EAAG,IAAGkF,EAAEgs3C,YAAY1v3C,GAAGI,GAAGhB,KAAKqy3C,aAAa,CAAC9m2C,GAAGpsB,EAAEwmD,UAAUn6B,KAAKC,OAAOpsB,EAAG,EAAEF,EAAEO,UAAUuy3C,gBAAgB,SAAS7y3C,GAAG,IAAID,EAAEa,KAAK,IAAIA,KAAK6x3C,gBAAgB,IAAI7x3C,KAAKw+C,MAAMn+C,OAAO,CAAC,IAAIN,EAAEC,KAAKw+C,MAAML,QAAQ9+C,EAAEU,EAAEwrB,GAAG3qB,EAAEb,EAAE4lD,UAAUtmD,GAAGW,KAAKizW,QAAQ5zW,KAAKW,KAAK4x3C,QAAQ5x3C,KAAK+x3C,iBAAiB3u3C,EAAEpD,KAAK4x3C,UAAU5x3C,KAAK4x3C,OAAOjv3C,KAAK3C,KAAKky3C,UAAUtx3C,EAAE,CAAC0x3C,SAASty3C,KAAKsy3C,WAAU,SAAUlz3C,GAAGA,GAAGC,IAAIF,EAAE8zW,QAAQ5zW,IAAG,EAAK,GAAED,GAAI,CAAC,EAAED,CAAC,CAA5sB,CAA8sB6G,GAAGiF,GAAG,IAAI,SAAS7L,GAAG,SAASD,EAAEA,GAAGC,EAAEQ,KAAKI,KAAK,oBAAoBA,KAAK6w3C,mBAAmB1x3C,CAAE,CAAC,OAAOC,IAAID,EAAEK,UAAUJ,IAAID,EAAEO,UAAUJ,OAAOY,OAAOd,GAAGA,EAAEM,YAAYO,YAAYd,EAAEA,EAAEO,UAAU8y3C,mBAAmB,SAASpz3C,EAAED,GAAGmF,EAAEgs3C,YAAYhs3C,EAAEms3C,cAAchx3C,MAAMkS,QAAQvS,IAAIA,EAAEuoC,MAAK,SAAUvoC,GAAG,OAAOqF,EAAErF,IAAIsG,EAAEtG,EAAG,KAAIY,KAAKqy3C,aAAa7m2C,KAAKC,MAAMtsB,EAAG,EAAEA,EAAEO,UAAUuy3C,gBAAgB,SAAS7y3C,GAAG,IAAID,EAAEa,KAAK,IAAIA,KAAK6x3C,gBAAgB,IAAI7x3C,KAAKw+C,MAAMn+C,OAAO,CAACL,KAAK4x3C,QAAQ5x3C,KAAK+gc,UAAU0x7B,aAAazy3C,KAAK+gc,UAAU2x7B,QAAQ1y3C,KAAK+x3C,iBAAiB,IAAIhy3C,EAAEyE,EAAEF,EAAEms3C,cAAcpx3C,EAAEU,EAAEA,EAAEsC,EAAEiC,EAAEms3C,aAAa7v3C,EAAEvB,IAAIW,KAAK+gc,UAAU2x7B,OAAOtv3C,EAAEpD,KAAK4x3C,UAAU5x3C,KAAK4x3C,OAAOjv3C,IAAI/B,GAAE,GAAI,IAAII,EAAEhB,KAAKw+C,MAAML,QAAQ,GAAGn+C,KAAK+gc,UAAU0x7B,YAAY,CAAC,IAAIny3C,EAAE,IAAIkrB,KAAKxrB,KAAK+gc,UAAU0x7B,aAAa3x3C,EAAE,IAAI0qB,KAAKxqB,GAAGqB,GAAGrB,EAAEhB,KAAK+gc,UAAU0x7B,aAAa,MAAM7x3C,EAAEA,GAAGyB,GAAG,GAAGA,GAAG,GAAG/B,EAAEkkC,YAAY1jC,EAAE0jC,SAAU,MAAM5jC,GAAE,EAAG,IAAIA,EAAE,OAAOZ,KAAKiy3C,kBAAkBjy3C,KAAKky3C,UAAUlx3C,EAAE,CAAC,qBAAoB,IAAI,SAAU5B,GAAGA,IAAID,EAAE4hc,UAAU0x7B,YAAYzx3C,EAAE7B,EAAE4hc,UAAU2x7B,OAAOrz3C,EAAI,GAAED,EAAG,CAAC,EAAED,CAAC,CAAr+B,CAAu+B6G,IAAIsF,GAAGL,GAAGun3C,mBAAmBnv3C,KAAK4H,IAAIO,GAAG,IAAIN,GAAGE,GAAGI,GAAG+m3C,iBAAiBlv3C,KAAKmI,IAAIC,GAAG,IAAIC,GAAG,GAAG,SAASE,KAAKtL,EAAEqywC,SAAS3nwC,KAAKA,GAAG1K,EAAEqywC,OAAOj+vC,KAAK,gBAAiB,CAAC,SAASvI,GAAG/M,GAAG,IAAID,EAAEC,EAAEoB,QAAQ,KAAK,OAAOrB,EAAE,EAAEC,EAAEA,EAAE2C,MAAM,EAAE5C,EAAE,CAAC,IAAIoM,GAAGS,GAAG,IAAI,SAASH,KAAK,OAAO,MAAMN,KAAKA,GAAGjL,EAAEioQ,iBAAiB,IAAIjoQ,EAAEioQ,gBAAgB,EAAE,GAAGx7M,WAAW,OAAO,mBAAmBzsD,EAAE49R,mBAAmB3yR,EAAE,CAAC,IAAIa,GAAG,CAAC68B,QAAQ,UAAU0p1C,MAAM,QAAQC,OAAO,SAASC,KAAK,OAAOC,OAAO,SAASC,YAAY,cAAcC,WAAW,aAAav2lC,MAAM,SAAS,mBAAmBn9R,OAAOgmC,QAAQhmC,OAAOgmC,OAAOl5B,IAAI,IAAsmBI,GAAGa,GAArmBvB,GAAG,SAAS1M,GAAG,SAASD,EAAEA,EAAEY,EAAEV,GAAG,MAAMU,GAAG2F,EAAErG,KAAKF,GAAG,wIAAwIC,EAAEQ,KAAKI,KAAKb,GAAGa,KAAKylB,OAAO1lB,EAAEC,KAAKkwB,IAAI7wB,EAAEW,KAAK0K,KAAK1K,KAAKC,YAAYyK,KAAK1K,KAAK+xB,QAAQ5yB,CAAE,CAAC,OAAOC,IAAID,EAAEK,UAAUJ,IAAID,EAAEO,UAAUJ,OAAOY,OAAOd,GAAGA,EAAEM,YAAYO,YAAYd,EAAEA,EAAEO,UAAU6E,SAAS,WAAW,OAAOvE,KAAK0K,KAAK,KAAK1K,KAAK+xB,QAAQ,KAAK/xB,KAAKylB,OAAO,MAAMzlB,KAAKkwB,GAAG,EAAE/wB,CAAC,CAA1c,CAA4cqoB,OAAO1a,GAAGjJ,IAAI,WAAW,OAAOzB,KAAKm3B,QAAQn3B,KAAKm3B,OAAOi1C,QAAQ,EAAE,WAAW,OAAQ,UAAUluE,EAAEy2B,SAASC,SAAS12B,EAAE+wF,OAAO/wF,GAAGy2B,SAASkE,IAAI,EAAYjtB,GAAG,SAAS5O,EAAED,GAAG,KAAK,SAASkM,KAAKtL,EAAEX,EAAE8wB,MAAM,SAAS7kB,KAAKyB,QAAQ,QAAQzB,KAAKtL,IAAI,CAAC,GAAGO,EAAEiqD,OAAOjqD,EAAEgqB,SAAShqB,EAAEiqB,iBAAiBjqB,EAAEgqB,QAAQ5qB,UAAUC,eAAe,UAAU,OAAO,SAASP,EAAED,GAAG,IAAIY,EAAEV,EAAE,IAAIiB,EAAEiqB,gBAAgB3pB,EAAE,IAAIN,EAAEgqB,QAAQlrB,EAAE8wB,IAAI,CAACO,OAAOrxB,EAAEqxB,QAAQ,MAAMM,KAAK3xB,EAAE2xB,KAAKF,YAAYzxB,EAAEyxB,YAAYL,QAAQpxB,EAAEoxB,QAAQg+C,SAAS1hE,KAAKmd,OAAO5qB,EAAE4qB,SAASjpB,GAAE,EAAGF,GAAE,EAAGuB,GAAGtC,EAAEa,EAAEsvB,KAAK1vB,QAAQ,QAAQ,GAAGkF,EAAE3F,GAAG,SAASX,EAAEmN,MAAM3L,EAAE4vB,QAAQvkB,IAAI,SAAS,oBAAoB,IAAIzJ,EAAE,SAASzC,EAAEV,EAAE2B,GAAG,IAAIF,EAAE,CAAC,GAAGf,GAAG,kBAAkBA,EAAEgyB,SAASltB,EAAE9E,GAAGV,GAAG2B,EAAE,OAAO8B,EAAEzD,GAAG,IAAImD,EAAEgpB,KAAKC,MAAMnrB,EAAEiqD,MAAM3pD,GAAGQ,MAAK,SAAUrB,GAAG,GAAGA,EAAEiwB,GAAG,CAAC,IAAI3wB,EAAEgD,EAAEtC,EAAEwwB,QAAQ,KAAK,OAAOztB,EAAE/C,EAAEV,EAAEmD,EAAE,CAAC,OAAOrD,EAAE,IAAI2M,GAAG/L,EAAEkwB,WAAWlwB,EAAE0lB,OAAOrmB,EAAE8wB,KAAM,IAAGlJ,OAAM,SAAU5nB,GAAG,KAAKA,EAAE87B,MAAM/7B,EAAE,IAAIqoB,MAAMpoB,EAAE2yB,SAAW,GAAG,CAAC,EAAEjvB,EAAE,SAAS/C,EAAEV,EAAEgD,IAAI,gBAAgBjD,EAAEmN,KAAKxM,EAAEisK,cAAc,SAAS5sK,EAAEmN,KAAKxM,EAAEswB,OAAOtwB,EAAEqwB,QAAQhvB,MAAK,SAAUhC,GAAG0B,IAAIzB,GAAGgD,GAAG,SAASjD,EAAED,EAAEY,GAAG,GAAG6L,KAAKZ,GAAG,CAAC,IAAI3L,EAAE,CAAComB,OAAOtmB,EAAEsmB,OAAOwK,WAAW9wB,EAAE8wB,WAAWO,QAAQ,IAAIlwB,EAAE+jF,SAASllF,EAAEqxB,QAAQtL,SAAQ,SAAU9lB,EAAED,GAAG,OAAOE,EAAEmxB,QAAQvkB,IAAI9M,EAAEC,EAAG,IAAG,IAAIwB,EAAE+E,EAAExG,EAAEqxB,QAAQrtB,IAAI,kBAAkB,IAAIvC,EAAE,cAAcA,EAAE,YAAYvB,EAAEmxB,QAAQvkB,IAAI,UAAU,IAAIuf,KAAKzrB,EAAE,IAAIa,EAAE,YAAYw1B,eAAe,IAAI5K,KAAKnsB,EAAEmxB,QAAQrtB,IAAI,YAAYskC,UAAU1nC,EAAE,MAAM,SAASX,EAAED,GAAG,QAAG,IAAS4L,GAAG,IAAI,IAAIs6P,SAAS,IAAII,gBAAgB16P,IAAG,CAAG,CAAC,MAAM3L,GAAG2L,IAAG,CAAG,CAACA,GAAG5L,EAAEC,EAAE2xB,MAAM3xB,EAAEkxB,OAAOlvB,KAAKjC,EAAG,CAAvH,CAAyHA,GAAE,SAAUA,GAAG,IAAIY,EAAE,IAAIO,EAAE+kQ,SAASlmQ,EAAEE,GAAGuM,KAAKZ,IAAIA,GAAG5J,MAAK,SAAUjC,GAAG,OAAOA,EAAE+h9B,IAAI/08B,GAAG/M,EAAE8wB,KAAKnwB,EAAG,IAAGinB,OAAM,SAAU5nB,GAAG,OAAOyF,EAAEzF,EAAE2yB,QAAS,GAAI,IAAI,CAAC,CAAhnB,CAAknBnxB,EAAEvB,EAAEgD,GAAGrB,GAAE,EAAG7B,EAAE,KAAKC,EAAEW,EAAEywB,QAAQrtB,IAAI,iBAAiBpD,EAAEywB,QAAQrtB,IAAI,YAAc,IAAG6jB,OAAM,SAAU5nB,GAAG0B,GAAG3B,EAAE,IAAIqoB,MAAMpoB,EAAE2yB,SAAW,GAAG,EAAE,OAAO1vB,EAAE,SAASjD,EAAED,GAAG,GAAGyM,MAAMZ,GAAG,OAAO7L,EAAE,MAAM,IAAIY,EAAEoM,GAAG/M,EAAE8wB,KAAKllB,GAAG5J,MAAK,SAAUhC,GAAGA,EAAEqH,MAAM1G,GAAGqB,MAAK,SAAU/B,GAAG,IAAIuB,EAAE,SAASxB,GAAG,IAAIA,EAAE,OAAO,EAAG,IAAID,EAAE,IAAIqsB,KAAKpsB,EAAEoxB,QAAQrtB,IAAI,YAAY,GAAGpD,EAAE4F,EAAEvG,EAAEoxB,QAAQrtB,IAAI,kBAAkB,IAAI,OAAOhE,EAAEqsB,KAAKC,QAAQ1rB,EAAE,WAAW,CAAnJ,CAAqJV,GAAGD,EAAE6lB,OAAOllB,GAAGa,GAAGxB,EAAE8h9B,IAAInh9B,EAAEV,EAAEkxB,SAASpxB,EAAE,KAAKE,EAAEuB,EAAI,IAAGomB,MAAM7nB,EAAI,IAAG6nB,MAAM7nB,EAAG,CAAjV,CAAmVyB,EAAE4B,GAAGA,EAAE,KAAK,MAAM,CAACqgD,OAAO,WAAW/hD,GAAE,EAAGE,GAAG3B,EAAE4xB,OAAQ,EAAE,CAAv0D,CAAy0D7xB,EAAED,GAAG,GAAG0E,KAAKzB,KAAKm3B,QAAQn3B,KAAKm3B,OAAO051C,MAAM,OAAO7w3C,KAAKm3B,OAAO051C,MAAM3q2C,KAAK,cAAclpB,EAAED,OAAE,GAAO,EAAG,CAAC,IAAIY,EAAE,OAAO,SAASX,EAAED,GAAG,IAAIY,EAAE,IAAIO,EAAE+nB,eAAe,IAAI,IAAIhpB,KAAKU,EAAE2U,KAAKtV,EAAEqxB,QAAQ,MAAMrxB,EAAE8wB,KAAI,GAAI,gBAAgB9wB,EAAEmN,OAAOxM,EAAEkxD,aAAa,eAAe7xD,EAAEoxB,QAAQzwB,EAAE+wB,iBAAiBzxB,EAAED,EAAEoxB,QAAQnxB,IAAI,MAAO,SAASD,EAAEmN,OAAOxM,EAAEkxD,aAAa,OAAOlxD,EAAE+wB,iBAAiB,SAAS,qBAAqB/wB,EAAE6wB,gBAAgB,YAAYxxB,EAAEyxB,YAAY9wB,EAAE2vB,QAAQ,WAAWvwB,EAAE,IAAIqoB,MAAMznB,EAAEkwB,YAAa,EAAElwB,EAAE2wB,OAAO,WAAW,IAAI3wB,EAAE0lB,QAAQ,KAAK1lB,EAAE0lB,OAAO,KAAK,IAAI1lB,EAAE0lB,SAAS,OAAO1lB,EAAE0uB,SAAS,CAAC,IAAIpvB,EAAEU,EAAE0uB,SAAS,GAAG,SAASrvB,EAAEmN,KAAK,IAAIlN,EAAEib,KAAKiS,MAAMxsB,EAAE0uB,SAAU,CAAC,MAAMrvB,GAAG,OAAOD,EAAEC,EAAE,CAACD,EAAE,KAAKE,EAAEU,EAAEmnzC,kBAAkB,iBAAiBnnzC,EAAEmnzC,kBAAkB,WAAY,MAAM/nzC,EAAE,IAAI2M,GAAG/L,EAAEkwB,WAAWlwB,EAAE0lB,OAAOrmB,EAAE8wB,KAAM,EAAEnwB,EAAEuoB,KAAKlpB,EAAE2xB,MAAM,CAAC8xB,OAAO,WAAW,OAAO9iD,EAAEkxB,OAAO,EAAE,CAAxtB,CAA0tB7xB,EAAED,EAAE,EAAEgO,GAAG,SAAS/N,EAAED,GAAG,OAAO6O,GAAGpL,EAAExD,EAAE,CAACmN,KAAK,gBAAgBpN,EAAE,EAAEoO,GAAG,SAASnO,EAAED,GAAG,OAAO6O,GAAGpL,EAAExD,EAAE,CAACqxB,OAAO,SAAStxB,EAAE,EAAEyO,GAAG,qHAAqHpB,GAAG,GAAGa,GAAG,EAAE,IAAIuB,GAAG,SAASxP,EAAED,GAAG,GAAGkG,EAAE8nR,YAAY/tR,EAAEoxB,UAAUpxB,EAAEoxB,QAAQ,CAAC,GAAGpxB,EAAEoxB,QAAQ02b,OAAO,kBAAkB75c,IAAI/I,EAAEos3C,4BAA4B,CAAC,IAAI3w3C,EAAE,CAACmz3C,kBAAkB9z3C,EAAE8pB,SAAS/pB,EAAE49yB,WAAU,EAAGl6vB,OAAO,WAAW7iD,KAAK+8yB,WAAU,CAAG,GAAG,OAAOvwyB,GAAG3K,KAAK9B,GAAGA,CAAC,CAACsN,KAAK,IAAIhO,GAAE,EAAGuB,EAAE,WAAW,IAAIvB,EAAE,IAAIA,GAAE,EAAGgO,KAAKb,GAAGnM,QAAQgN,GAAG/I,EAAEos3C,6BAA6B,CAAC,IAAItx3C,EAAEoN,GAAG2xC,QAAQ/+C,EAAE29yB,YAAY39yB,EAAEyjD,OAAOj0C,GAAGxP,EAAE8z3C,kBAAkB9z3C,EAAE8pB,UAAU25B,OAAQ,CAAC,EAAE7hD,EAAEmM,GAAG/N,GAAE,SAAUA,EAAEW,EAAEV,EAAE2B,GAAGJ,IAAIxB,EAAED,EAAEC,GAAGW,IAAI8L,KAAK,SAASzM,EAAED,GAAG,IAAIY,EAAE,IAAIO,EAAEynB,KAAK,CAAC,IAAIpI,WAAWvgB,IAAI,CAACmN,KAAK,cAAcjM,EAAE49R,kBAAkBn+R,GAAGqB,MAAK,SAAUhC,GAAGD,EAAE,KAAKC,EAAI,IAAG4nB,OAAM,SAAU5nB,GAAGD,EAAE,IAAIqoB,MAAM,mCAAmCpoB,EAAE2yB,QAAQ,2GAA6G,GAAG,CAA1T,CAA4ThyB,EAAEZ,GAAG,SAASC,EAAED,EAAEY,EAAEV,GAAG,IAAIuB,EAAE,IAAIN,EAAEm8R,MAAMz7R,EAAEV,EAAE0nB,IAAIpnB,EAAE8vB,OAAO,WAAWvxB,EAAE,KAAKyB,GAAGI,EAAEwnB,gBAAgB5nB,EAAE4T,KAAK5T,EAAE8vB,OAAO,KAAKpwB,EAAEg2G,uBAAsB,WAAY11G,EAAE4T,IAAI5G,EAAI,GAAG,EAAEhN,EAAE8uB,QAAQ,WAAW,OAAOvwB,EAAE,IAAIqoB,MAAM,+HAA+H,EAAE,IAAI1mB,EAAE,IAAIR,EAAEynB,KAAK,CAAC,IAAIpI,WAAWvgB,IAAI,CAACmN,KAAK,cAAc3L,EAAEuy3C,aAAapz3C,EAAEa,EAAEq1B,QAAQ52B,EAAEuB,EAAE4T,IAAIpV,EAAEgpB,WAAWpnB,EAAEinB,gBAAgBnnB,GAAG8M,EAAG,CAA9c,CAAgd7N,EAAEZ,EAAEE,EAAE2B,GAAK,IAAG,MAAO,CAAC6hD,OAAO,WAAW7hD,EAAE6hD,SAASjiD,GAAI,EAAE,EAAE,SAAS6M,GAAGrO,EAAED,EAAEY,GAAGA,EAAEX,KAAK,IAAIW,EAAEX,GAAGoB,QAAQrB,KAAKY,EAAEX,GAAGW,EAAEX,IAAI,GAAGW,EAAEX,GAAGyC,KAAK1C,GAAI,CAAC,SAASuO,GAAGtO,EAAED,EAAEY,GAAG,GAAGA,GAAGA,EAAEX,GAAG,CAAC,IAAIC,EAAEU,EAAEX,GAAGoB,QAAQrB,IAAI,IAAIE,GAAGU,EAAEX,GAAG6jB,OAAO5jB,EAAE,EAAG,CAAC,CAAC,IAAIyO,GAAG,SAAS1O,EAAED,QAAG,IAASA,IAAIA,EAAE,CAAC,GAAGyD,EAAE5C,KAAKb,GAAGa,KAAKuM,KAAKnN,CAAE,EAAEyQ,GAAG,SAASzQ,GAAG,SAASD,EAAEA,EAAEY,QAAG,IAASA,IAAIA,EAAE,CAAC,GAAGX,EAAEQ,KAAKI,KAAK,QAAQ4C,EAAE,CAACd,MAAM3C,GAAGY,GAAI,CAAC,OAAOX,IAAID,EAAEK,UAAUJ,IAAID,EAAEO,UAAUJ,OAAOY,OAAOd,GAAGA,EAAEM,YAAYO,YAAYd,EAAEA,CAAC,CAAzK,CAA2K2O,IAAII,GAAG,WAAW,EAAEA,GAAGxO,UAAUkR,GAAG,SAASxR,EAAED,GAAG,OAAOa,KAAKoz3C,WAAWpz3C,KAAKoz3C,YAAY,CAAC,EAAE3l3C,GAAGrO,EAAED,EAAEa,KAAKoz3C,YAAYpz3C,IAAI,EAAEkO,GAAGxO,UAAUsuC,IAAI,SAAS5uC,EAAED,GAAG,OAAOuO,GAAGtO,EAAED,EAAEa,KAAKoz3C,YAAY1l3C,GAAGtO,EAAED,EAAEa,KAAKqz3C,mBAAmBrz3C,IAAI,EAAEkO,GAAGxO,UAAU0pB,KAAK,SAAShqB,EAAED,GAAG,OAAOa,KAAKqz3C,kBAAkBrz3C,KAAKqz3C,mBAAmB,CAAC,EAAE5l3C,GAAGrO,EAAED,EAAEa,KAAKqz3C,mBAAmBrz3C,IAAI,EAAEkO,GAAGxO,UAAU4z3C,KAAK,SAASl03C,EAAED,GAAG,iBAAiBC,IAAIA,EAAE,IAAI0O,GAAG1O,EAAED,GAAG,CAAC,IAAI,IAAIY,EAAEX,EAAEmN,KAAK,GAAGvM,KAAKuz3C,QAAQxz3C,GAAG,CAACX,EAAE0Q,OAAO9P,KAAK,IAAI,IAAIX,EAAE,EAAEuB,EAAEZ,KAAKoz3C,YAAYpz3C,KAAKoz3C,WAAWrz3C,GAAGC,KAAKoz3C,WAAWrz3C,GAAGgC,QAAQ,GAAG1C,EAAEuB,EAAEP,OAAOhB,GAAG,EAAEuB,EAAEvB,GAAGO,KAAKI,KAAKZ,GAAG,IAAI,IAAI4B,EAAE,EAAEV,EAAEN,KAAKqz3C,mBAAmBrz3C,KAAKqz3C,kBAAkBtz3C,GAAGC,KAAKqz3C,kBAAkBtz3C,GAAGgC,QAAQ,GAAGf,EAAEV,EAAED,OAAOW,GAAG,EAAE,CAAC,IAAIF,EAAER,EAAEU,GAAG0M,GAAG3N,EAAEe,EAAEd,KAAKqz3C,mBAAmBvy3C,EAAElB,KAAKI,KAAKZ,EAAG,CAAC,IAAIiD,EAAErC,KAAKwz3C,eAAenx3C,IAAIO,EAAExD,EAAE,mBAAmBY,KAAKyz3C,mBAAmBzz3C,KAAKyz3C,qBAAqBzz3C,KAAKyz3C,oBAAoBpx3C,EAAEix3C,KAAKl03C,GAAI,MAAMA,aAAayQ,IAAIwX,QAAQvlB,MAAM1C,EAAE0C,OAAO,OAAO9B,IAAI,EAAEkO,GAAGxO,UAAU6z3C,QAAQ,SAASn03C,GAAG,OAAOY,KAAKoz3C,YAAYpz3C,KAAKoz3C,WAAWh03C,IAAIY,KAAKoz3C,WAAWh03C,GAAGiB,OAAO,GAAGL,KAAKqz3C,mBAAmBrz3C,KAAKqz3C,kBAAkBj03C,IAAIY,KAAKqz3C,kBAAkBj03C,GAAGiB,OAAO,GAAGL,KAAKwz3C,gBAAgBxz3C,KAAKwz3C,eAAeD,QAAQn03C,EAAE,EAAE8O,GAAGxO,UAAUg03C,iBAAiB,SAASt03C,EAAED,GAAG,OAAOa,KAAKwz3C,eAAep03C,EAAEY,KAAKyz3C,mBAAmBt03C,EAAEa,IAAI,EAAE,IAAIyO,GAAG,CAACkl3C,SAAS,EAAEC,MAAM,CAACtt3C,QAAQ,CAAC20E,UAAS,EAAG1uE,KAAK,OAAOmQ,OAAO,CAAC,IAAIhS,KAAK,CAAC6B,KAAK,UAAU0rK,SAAS,CAAC1rK,KAAK,KAAK0yB,OAAO,CAAC1yB,KAAK,QAAQpL,MAAM,UAAUw+B,KAAK,CAACpzB,KAAK,UAAUizB,QAAQ,CAACjzB,KAAK,SAAShK,QAAQ,EAAEy0pC,OAAO,IAAI3j/B,MAAM,WAAW3zI,MAAM,CAACnzB,KAAK,SAAShK,QAAQ,EAAE8wK,MAAM,WAAWxjD,MAAM,CAACtjH,KAAK,SAASquC,QAAQ,CAACqgC,UAAS,EAAG1uE,KAAK,WAAWsn3C,OAAO,CAACtn3C,KAAK,UAAUun3C,OAAO,CAACvn3C,KAAK,UAAUu7G,WAAW,CAACv7G,KAAK,cAAcuxB,OAAO,CAACm9C,UAAS,EAAG1uE,KAAK,QAAQpL,MAAM,UAAUy5C,QAAQ,CAAC,IAAI,CAACruC,KAAK,WAAW1E,OAAO,CAAC,gBAAgB,gBAAgB,oBAAoB,iBAAiB,eAAe,gBAAgBks3C,cAAc,CAACxn3C,KAAK,CAAC0uE,UAAS,EAAG1uE,KAAK,OAAOmQ,OAAO,CAACurJ,OAAO,CAAC,IAAI/3I,IAAI,CAAC3jB,KAAK,UAAUm+B,MAAM,CAACn+B,KAAK,QAAQpL,MAAM,UAAU68H,OAAO,CAACzxH,KAAK,QAAQpL,MAAM,SAASd,OAAO,EAAEkC,QAAQ,EAAE,KAAK,UAAU,IAAI,YAAYw9uB,OAAO,CAACxzuB,KAAK,OAAOmQ,OAAO,CAAC66G,IAAI,CAAC,EAAEy8vC,IAAI,CAAC,GAAGzx3C,QAAQ,OAAOwgO,QAAQ,CAACx2N,KAAK,SAAShK,QAAQ,GAAGygO,QAAQ,CAACz2N,KAAK,SAAShK,QAAQ,IAAIwiG,YAAY,CAACx4F,KAAK,UAAU0n3C,UAAU,CAAC1n3C,KAAK,aAAa2n3C,SAAS,CAAC3n3C,KAAK,UAAUhK,SAAQ,GAAI,IAAI,CAACgK,KAAK,MAAM4n3C,cAAc,CAAC5n3C,KAAK,CAAC0uE,UAAS,EAAG1uE,KAAK,OAAOmQ,OAAO,CAAC032C,OAAO,CAAC,IAAIlk2C,IAAI,CAAC3jB,KAAK,UAAUm+B,MAAM,CAACn+B,KAAK,QAAQpL,MAAM,UAAU68H,OAAO,CAACzxH,KAAK,QAAQpL,MAAM,SAASd,OAAO,EAAEkC,QAAQ,EAAE,KAAK,UAAU,IAAI,YAAYwgO,QAAQ,CAACx2N,KAAK,SAAShK,QAAQ,GAAGygO,QAAQ,CAACz2N,KAAK,SAAShK,QAAQ,IAAIkrL,SAAS,CAAClhL,KAAK,SAAShK,QAAQ,IAAI8wK,MAAM,UAAU0skB,OAAO,CAACxzuB,KAAK,OAAOmQ,OAAO,CAAC66G,IAAI,CAAC,EAAEy8vC,IAAI,CAAC,GAAGzx3C,QAAQ,OAAOwiG,YAAY,CAACx4F,KAAK,UAAU2n3C,SAAS,CAAC3n3C,KAAK,UAAUhK,SAAQ,GAAI,IAAI,CAACgK,KAAK,MAAM8n3C,kBAAkB,CAAC9n3C,KAAK,CAAC0uE,UAAS,EAAG1uE,KAAK,OAAOmQ,OAAO,CAAC,aAAa,CAAC,IAAIwT,IAAI,CAAC3jB,KAAK,UAAUm+B,MAAM,CAACn+B,KAAK,QAAQpL,MAAM,UAAU68H,OAAO,CAACzxH,KAAK,QAAQpL,MAAM,SAASd,OAAO,EAAEkC,QAAQ,EAAE,KAAK,UAAU,IAAI,YAAYwgO,QAAQ,CAACx2N,KAAK,SAAShK,QAAQ,GAAGygO,QAAQ,CAACz2N,KAAK,SAAShK,QAAQ,IAAIkrL,SAAS,CAAClhL,KAAK,SAAShK,QAAQ,IAAI8wK,MAAM,UAAUtuE,YAAY,CAACx4F,KAAK,UAAUqb,SAAS,CAACrb,KAAK,OAAOmQ,OAAO,CAAC432C,UAAU,CAAC,EAAE/U,OAAO,CAAC,GAAGh92C,QAAQ,UAAU2x3C,SAAS,CAAC3n3C,KAAK,UAAUhK,SAAQ,GAAI,IAAI,CAACgK,KAAK,MAAMgo3C,eAAe,CAACho3C,KAAK,CAAC0uE,UAAS,EAAG1uE,KAAK,OAAOmQ,OAAO,CAAC+uB,QAAQ,CAAC,IAAIj8B,KAAK,CAACjD,KAAK,KAAKy2N,QAAQ,CAACz2N,KAAK,SAAShK,QAAQ,IAAIwiG,YAAY,CAACx4F,KAAK,UAAU2b,OAAO,CAAC3b,KAAK,SAAShK,QAAQ,IAAI2/K,QAAQ,IAAID,QAAQ,GAAGp1J,OAAO,CAACtgB,KAAK,KAAKq8K,UAAU,CAACr8K,KAAK,SAAShK,QAAQ,MAAM4mZ,QAAQ,CAAC58Y,KAAK,UAAUhK,SAAQ,GAAIiy3C,cAAc,CAACjo3C,KAAK,SAAShK,QAAQ,GAAG0/K,QAAQ,GAAGwysC,eAAe,CAAClo3C,KAAK,UAAUmo3C,iBAAiB,CAACno3C,KAAK,UAAUuvZ,kBAAkB,CAACvvZ,KAAK,KAAKoo3C,YAAY,CAACpo3C,KAAK,UAAUhK,SAAQ,GAAI+2Z,WAAW,CAAC/sZ,KAAK,UAAUhK,SAAQ,GAAI0x3C,UAAU,CAAC1n3C,KAAK,cAAcqo3C,aAAa,CAACro3C,KAAK,CAAC0uE,UAAS,EAAG1uE,KAAK,OAAOmQ,OAAO,CAACuyU,MAAM,CAAC,IAAI4liC,KAAK,CAAC55yC,UAAS,EAAG1uE,KAAK,QAAQpL,MAAM,UAAU2jC,YAAY,CAACm2C,UAAS,EAAG1uE,KAAK,QAAQlM,OAAO,EAAEc,MAAM,CAACoL,KAAK,QAAQlM,OAAO,EAAEc,MAAM,YAAY2z3C,aAAa,CAACvo3C,KAAK,CAAC0uE,UAAS,EAAG1uE,KAAK,OAAOmQ,OAAO,CAAC6tI,MAAM,CAAC,IAAIr6H,IAAI,CAAC+qD,UAAS,EAAG1uE,KAAK,UAAUu4B,YAAY,CAACm2C,UAAS,EAAG1uE,KAAK,QAAQlM,OAAO,EAAEc,MAAM,CAACoL,KAAK,QAAQlM,OAAO,EAAEc,MAAM,YAAY6tH,MAAM,CAACzjG,GAAG,CAAChf,KAAK,SAAS0uE,UAAS,GAAI1uE,KAAK,CAACA,KAAK,OAAOmQ,OAAO,CAAC0gH,KAAK,CAAC,EAAE99E,KAAK,CAAC,EAAE46c,OAAO,CAAC,EAAEjqR,OAAO,CAAC,EAAEu+wB,QAAQ,CAAC,EAAE,iBAAiB,CAAC,EAAE4lY,OAAO,CAAC,EAAEW,UAAU,CAAC,EAAEproC,WAAW,CAAC,GAAG1uK,UAAS,GAAIg9F,SAAS,CAAC1rK,KAAK,KAAK1E,OAAO,CAAC0E,KAAK,UAAU,eAAe,CAACA,KAAK,UAAUw2N,QAAQ,CAACx2N,KAAK,SAAS01K,QAAQ,EAAEC,QAAQ,IAAI8gD,QAAQ,CAACz2N,KAAK,SAAS01K,QAAQ,EAAEC,QAAQ,IAAIr1J,OAAO,CAACtgB,KAAK,UAAU20H,OAAO,CAAC30H,KAAK,UAAUyo3C,MAAM,CAACzo3C,KAAK,UAAU20H,OAAO,CAAC,cAAc,cAAc,gBAAgB,iBAAiB,wBAAwB,gBAAgB,gBAAgB,mBAAmB,qBAAqB+zvC,kBAAkB,CAACjorC,WAAW,CAACzgM,KAAK,OAAOmQ,OAAO,CAACovH,QAAQ,CAAC,EAAE6j3B,KAAK,CAAC,GAAGpt/B,QAAQ,UAAU,gBAAgB,aAAa2y3C,YAAY,CAAC,gBAAgB,CAAC3o3C,KAAK,SAASy0d,WAAW,CAAC78N,cAAa,EAAG/qN,WAAW,CAAC,OAAO,YAAY,gBAAgB,eAAe4zJ,WAAW,CAACzgM,KAAK,OAAOmQ,OAAO,CAACovH,QAAQ,CAAC,EAAE6j3B,KAAK,CAAC,GAAGpt/B,QAAQ,UAAU,gBAAgB,aAAa4y3C,cAAc,CAAC,kBAAkB,CAAC5o3C,KAAK,SAASy0d,WAAW,CAAC78N,cAAa,EAAG/qN,WAAW,CAAC,OAAO,YAAY,gBAAgB,eAAe4zJ,WAAW,CAACzgM,KAAK,OAAOmQ,OAAO,CAACovH,QAAQ,CAAC,EAAE6j3B,KAAK,CAAC,GAAGpt/B,QAAQ,UAAU,gBAAgB,aAAa6y3C,eAAe,CAACporC,WAAW,CAACzgM,KAAK,OAAOmQ,OAAO,CAACovH,QAAQ,CAAC,EAAE6j3B,KAAK,CAAC,GAAGpt/B,QAAQ,UAAU,gBAAgB,aAAa,wBAAwB,CAACyqM,WAAW,CAACzgM,KAAK,OAAOmQ,OAAO,CAACovH,QAAQ,CAAC,EAAE6j3B,KAAK,CAAC,GAAGpt/B,QAAQ,UAAU,gBAAgB,aAAa8y3C,YAAY,CAAC,WAAW,CAAC9o3C,KAAK,OAAOmQ,OAAO,CAAC442C,KAAK,CAAC,EAAEry0C,MAAM,CAAC,EAAEytU,OAAO,CAAC,GAAGnuX,QAAQ,OAAOy+d,WAAW,CAAC78N,cAAa,EAAG/qN,WAAW,CAAC,SAAS,gBAAgB,iBAAiB,YAAY,CAAC7sC,KAAK,OAAOmQ,OAAO,CAAC642C,MAAM,CAAC,EAAEty0C,MAAM,CAAC,EAAEuy0C,MAAM,CAAC,GAAGjz3C,QAAQ,QAAQy+d,WAAW,CAAC78N,cAAa,EAAG/qN,WAAW,CAAC,OAAO,YAAY,gBAAgB,eAAe,mBAAmB,CAAC7sC,KAAK,SAAShK,QAAQ,EAAEkz3C,SAAS,CAAC,CAAC,YAAY,UAAUz05B,WAAW,CAAC78N,cAAa,EAAG/qN,WAAW,CAAC,SAAS,gBAAgB,iBAAiB,mBAAmB,CAAC7sC,KAAK,SAAShK,QAAQ,KAAKkz3C,SAAS,CAAC,CAAC,YAAY,UAAUz05B,WAAW,CAAC78N,cAAa,EAAG/qN,WAAW,CAAC,SAAS,gBAAgB,iBAAiB,gBAAgB,CAAC7sC,KAAK,SAASy0d,WAAW,CAAC78N,cAAa,EAAG/qN,WAAW,CAAC,OAAO,YAAY,gBAAgB,eAAe4zJ,WAAW,CAACzgM,KAAK,OAAOmQ,OAAO,CAACovH,QAAQ,CAAC,EAAE6j3B,KAAK,CAAC,GAAGpt/B,QAAQ,UAAU,gBAAgB,aAAamz3C,cAAc,CAAC,mBAAmB,CAACnp3C,KAAK,OAAOmQ,OAAO,CAACy4H,MAAM,CAAC,EAAE71F,KAAK,CAAC,EAAE,cAAc,CAAC,GAAG/8C,QAAQ,QAAQy+d,WAAW,CAAC78N,cAAa,EAAG/qN,WAAW,CAAC,SAAS,gBAAgB,iBAAiB,iBAAiB,CAAC7sC,KAAK,SAAShK,QAAQ,IAAI0/K,QAAQ,EAAE5O,MAAM,SAASoitC,SAAS,CAAC,CAAC,mBAAmB,SAASz05B,WAAW,CAAC78N,cAAa,EAAG/qN,WAAW,CAAC,SAAS,gBAAgB,iBAAiB,qBAAqB,CAAC7sC,KAAK,UAAUhK,SAAQ,EAAGy+d,WAAW,CAAC78N,cAAa,EAAG/qN,WAAW,CAAC,SAAS,gBAAgB,iBAAiB,kBAAkB,CAAC7sC,KAAK,SAASy0d,WAAW,CAAC78N,cAAa,EAAG/qN,WAAW,CAAC,OAAO,YAAY,gBAAgB,eAAe,iBAAiB,CAAC7sC,KAAK,OAAOmQ,OAAO,CAACgxsC,KAAK,CAAC,EAAE,aAAa,CAAC,EAAE7ltC,OAAO,CAAC,GAAGtF,QAAQ,OAAOy+d,WAAW,CAAC78N,cAAa,EAAG/qN,WAAW,CAAC,SAAS,gBAAgB,iBAAiB,qBAAqB,CAAC7sC,KAAK,UAAUhK,SAAQ,EAAGkz3C,SAAS,CAAC,cAAcz05B,WAAW,CAAC78N,cAAa,EAAG/qN,WAAW,CAAC,SAAS,gBAAgB,iBAAiB,wBAAwB,CAAC7sC,KAAK,UAAUhK,SAAQ,EAAGkz3C,SAAS,CAAC,cAAcz05B,WAAW,CAAC78N,cAAa,EAAG/qN,WAAW,CAAC,SAAS,gBAAgB,iBAAiB,gBAAgB,CAAC7sC,KAAK,UAAUhK,SAAQ,EAAGkz3C,SAAS,CAAC,aAAa,cAAcz05B,WAAW,CAAC78N,cAAa,EAAG/qN,WAAW,CAAC,SAAS,gBAAgB,iBAAiB,0BAA0B,CAAC7sC,KAAK,OAAOmQ,OAAO,CAAC2S,IAAI,CAAC,EAAE8b,SAAS,CAAC,EAAEuirC,KAAK,CAAC,GAAGnrtC,QAAQ,OAAOkz3C,SAAS,CAAC,cAAcz05B,WAAW,CAAC78N,cAAa,EAAG/qN,WAAW,CAAC,SAAS,gBAAgB,iBAAiB,YAAY,CAAC7sC,KAAK,SAAShK,QAAQ,EAAE0/K,QAAQ,EAAE5O,MAAM,mCAAmCoitC,SAAS,CAAC,cAAcz05B,WAAW,CAAC78N,cAAa,EAAG/qN,WAAW,CAAC,OAAO,YAAY,gBAAgB,eAAe,gBAAgB,CAAC7sC,KAAK,OAAOmQ,OAAO,CAACiz+B,KAAK,CAAC,EAAE5w9B,MAAM,CAAC,EAAEC,OAAO,CAAC,EAAE221C,KAAK,CAAC,GAAGpz3C,QAAQ,OAAOkz3C,SAAS,CAAC,aAAa,cAAcz05B,WAAW,CAAC78N,cAAa,EAAG/qN,WAAW,CAAC,SAAS,gBAAgB,iBAAiB,wBAAwB,CAAC7sC,KAAK,QAAQpL,MAAM,SAASd,OAAO,EAAEkC,QAAQ,CAAC,EAAE,EAAE,EAAE,GAAG8wK,MAAM,SAASoitC,SAAS,CAAC,aAAa,aAAa,CAAC,gBAAgB,CAAC,OAAO,QAAQ,YAAYz05B,WAAW,CAAC78N,cAAa,EAAG/qN,WAAW,CAAC,SAAS,gBAAgB,iBAAiB,aAAa,CAAC7sC,KAAK,gBAAgB+37B,QAAO,EAAGtje,WAAW,CAAC78N,cAAa,EAAG/qN,WAAW,CAAC,OAAO,YAAY,gBAAgB,eAAe,cAAc,CAAC7sC,KAAK,SAAShK,QAAQ,EAAEy0pC,OAAO,IAAI3j/B,MAAM,UAAUoitC,SAAS,CAAC,cAAcz05B,WAAW,CAAC78N,cAAa,EAAG/qN,WAAW,CAAC,OAAO,YAAY,gBAAgB,eAAe,eAAe,CAAC7sC,KAAK,SAAShK,QAAQ,EAAE0/K,QAAQ,EAAE5O,MAAM,SAASoitC,SAAS,CAAC,cAAcz05B,WAAW,CAAC78N,cAAa,EAAG/qN,WAAW,CAAC,SAAS,gBAAgB,iBAAiB,oBAAoB,CAAC7sC,KAAK,UAAUhK,SAAQ,EAAGkz3C,SAAS,CAAC,aAAa,CAAC,0BAA0B,OAAO,CAAC,mBAAmB,CAAC,OAAO,iBAAiBz05B,WAAW,CAAC78N,cAAa,EAAG/qN,WAAW,CAAC,SAAS,gBAAgB,iBAAiB,cAAc,CAAC7sC,KAAK,QAAQpL,MAAM,SAASd,OAAO,EAAEkC,QAAQ,CAAC,EAAE,GAAGkz3C,SAAS,CAAC,cAAcz05B,WAAW,CAAC78N,cAAa,EAAG/qN,WAAW,CAAC,OAAO,YAAY,gBAAgB,eAAe,cAAc,CAAC7sC,KAAK,OAAOmQ,OAAO,CAACuiB,OAAO,CAAC,EAAEJ,KAAK,CAAC,EAAEghE,MAAM,CAAC,EAAE/gE,IAAI,CAAC,EAAEghE,OAAO,CAAC,EAAE,WAAW,CAAC,EAAE,YAAY,CAAC,EAAE,cAAc,CAAC,EAAE,eAAe,CAAC,GAAGv9F,QAAQ,SAASkz3C,SAAS,CAAC,cAAcz05B,WAAW,CAAC78N,cAAa,EAAG/qN,WAAW,CAAC,OAAO,YAAY,gBAAgB,eAAe,uBAAuB,CAAC7sC,KAAK,OAAOmQ,OAAO,CAAC2S,IAAI,CAAC,EAAE8b,SAAS,CAAC,EAAEuirC,KAAK,CAAC,GAAGnrtC,QAAQ,OAAOkz3C,SAAS,CAAC,cAAcz05B,WAAW,CAAC78N,cAAa,EAAG/qN,WAAW,CAAC,SAAS,gBAAgB,iBAAiB,uBAAuB,CAAC7sC,KAAK,OAAOmQ,OAAO,CAAC2S,IAAI,CAAC,EAAE8b,SAAS,CAAC,EAAEuirC,KAAK,CAAC,GAAGnrtC,QAAQ,OAAOkz3C,SAAS,CAAC,cAAcz05B,WAAW,CAAC78N,cAAa,EAAG/qN,WAAW,CAAC,SAAS,gBAAgB,iBAAiB,0BAA0B,CAAC7sC,KAAK,OAAOmQ,OAAO,CAAC2S,IAAI,CAAC,EAAE8b,SAAS,CAAC,EAAEuirC,KAAK,CAAC,GAAGnrtC,QAAQ,OAAOkz3C,SAAS,CAAC,cAAcz05B,WAAW,CAAC78N,cAAa,EAAG/qN,WAAW,CAAC,SAAS,gBAAgB,iBAAiB,aAAa,CAAC7sC,KAAK,YAAYhK,QAAQ,GAAG+h8B,QAAO,EAAGtje,WAAW,CAAC78N,cAAa,EAAG/qN,WAAW,CAAC,OAAO,YAAY,gBAAgB,eAAe,YAAY,CAAC7sC,KAAK,QAAQpL,MAAM,SAASoB,QAAQ,CAAC,oBAAoB,4BAA4Bkz3C,SAAS,CAAC,cAAcz05B,WAAW,CAAC78N,cAAa,EAAG/qN,WAAW,CAAC,OAAO,YAAY,gBAAgB,eAAe,YAAY,CAAC7sC,KAAK,SAAShK,QAAQ,GAAG0/K,QAAQ,EAAE5O,MAAM,SAASoitC,SAAS,CAAC,cAAcz05B,WAAW,CAAC78N,cAAa,EAAG/qN,WAAW,CAAC,OAAO,YAAY,gBAAgB,eAAe,iBAAiB,CAAC7sC,KAAK,SAAShK,QAAQ,GAAG0/K,QAAQ,EAAE5O,MAAM,MAAMoitC,SAAS,CAAC,cAAcz05B,WAAW,CAAC78N,cAAa,EAAG/qN,WAAW,CAAC,OAAO,YAAY,gBAAgB,eAAe,mBAAmB,CAAC7sC,KAAK,SAAShK,QAAQ,IAAI8wK,MAAM,MAAMoitC,SAAS,CAAC,cAAcz05B,WAAW,CAAC78N,cAAa,EAAG/qN,WAAW,CAAC,SAAS,gBAAgB,iBAAiB,sBAAsB,CAAC7sC,KAAK,SAAShK,QAAQ,EAAE8wK,MAAM,MAAMoitC,SAAS,CAAC,cAAcz05B,WAAW,CAAC78N,cAAa,EAAG/qN,WAAW,CAAC,OAAO,YAAY,gBAAgB,eAAe,eAAe,CAAC7sC,KAAK,OAAOmQ,OAAO,CAACgxsC,KAAK,CAAC,EAAE7urC,KAAK,CAAC,EAAEI,OAAO,CAAC,EAAE4gE,MAAM,CAAC,GAAGt9F,QAAQ,SAASkz3C,SAAS,CAAC,cAAcz05B,WAAW,CAAC78N,cAAa,EAAG/qN,WAAW,CAAC,OAAO,YAAY,gBAAgB,eAAe,qBAAqB,CAAC7sC,KAAK,SAAS8mK,MAAM,MAAM9wK,QAAQ,EAAEkz3C,SAAS,CAAC,cAAc,gBAAgB,cAAcz05B,WAAW,CAAC78N,cAAa,EAAG/qN,WAAW,CAAC,OAAO,aAAa,uBAAuB,CAAC7sC,KAAK,QAAQpL,MAAM,OAAOub,OAAO,CAACuiB,OAAO,CAAC,EAAEJ,KAAK,CAAC,EAAEghE,MAAM,CAAC,EAAE/gE,IAAI,CAAC,EAAEghE,OAAO,CAAC,EAAE,WAAW,CAAC,EAAE,YAAY,CAAC,EAAE,cAAc,CAAC,EAAE,eAAe,CAAC,GAAG21xC,SAAS,CAAC,aAAa,CAAC,mBAAmB,CAAC,WAAWz05B,WAAW,CAAC78N,cAAa,EAAG/qN,WAAW,CAAC,SAAS,gBAAgB,iBAAiB,cAAc,CAAC7sC,KAAK,OAAOmQ,OAAO,CAACuiB,OAAO,CAAC,EAAEJ,KAAK,CAAC,EAAEghE,MAAM,CAAC,EAAE/gE,IAAI,CAAC,EAAEghE,OAAO,CAAC,EAAE,WAAW,CAAC,EAAE,YAAY,CAAC,EAAE,cAAc,CAAC,EAAE,eAAe,CAAC,GAAGv9F,QAAQ,SAASkz3C,SAAS,CAAC,aAAa,CAAC,IAAI,yBAAyBz05B,WAAW,CAAC78N,cAAa,EAAG/qN,WAAW,CAAC,OAAO,YAAY,gBAAgB,eAAe,iBAAiB,CAAC7sC,KAAK,SAAShK,QAAQ,GAAG8wK,MAAM,UAAUoitC,SAAS,CAAC,aAAa,CAAC,mBAAmB,CAAC,OAAO,iBAAiBz05B,WAAW,CAAC78N,cAAa,EAAG/qN,WAAW,CAAC,SAAS,gBAAgB,iBAAiB,oBAAoB,CAAC7sC,KAAK,QAAQpL,MAAM,OAAOub,OAAO,CAACispB,WAAW,CAAC,EAAEn/H,SAAS,CAAC,GAAGis1B,SAAS,CAAC,aAAa,CAAC,mBAAmB,CAAC,WAAWz05B,WAAW,CAAC78N,cAAa,EAAG/qN,WAAW,CAAC,SAAS,gBAAgB,iBAAiB,cAAc,CAAC7sC,KAAK,SAAShK,QAAQ,EAAEy0pC,OAAO,IAAI3j/B,MAAM,UAAUoitC,SAAS,CAAC,cAAcz05B,WAAW,CAAC78N,cAAa,EAAG/qN,WAAW,CAAC,OAAO,YAAY,gBAAgB,eAAe,eAAe,CAAC7sC,KAAK,SAAShK,QAAQ,EAAE0/K,QAAQ,EAAE5O,MAAM,SAASoitC,SAAS,CAAC,cAAcz05B,WAAW,CAAC78N,cAAa,EAAG/qN,WAAW,CAAC,SAAS,gBAAgB,iBAAiB,oBAAoB,CAAC7sC,KAAK,UAAUhK,SAAQ,EAAGkz3C,SAAS,CAAC,aAAa,CAAC,0BAA0B,OAAO,CAAC,mBAAmB,CAAC,OAAO,iBAAiBz05B,WAAW,CAAC78N,cAAa,EAAG/qN,WAAW,CAAC,SAAS,gBAAgB,iBAAiB,iBAAiB,CAAC7sC,KAAK,OAAOmQ,OAAO,CAACiz+B,KAAK,CAAC,EAAEimY,UAAU,CAAC,EAAEC,UAAU,CAAC,GAAGtz3C,QAAQ,OAAOkz3C,SAAS,CAAC,cAAcz05B,WAAW,CAAC78N,cAAa,EAAG/qN,WAAW,CAAC,OAAO,YAAY,gBAAgB,eAAe,cAAc,CAAC7sC,KAAK,QAAQpL,MAAM,SAASkyK,MAAM,MAAMhzK,OAAO,EAAEkC,QAAQ,CAAC,EAAE,GAAGkz3C,SAAS,CAAC,aAAa,CAAC,IAAI,uBAAuBz05B,WAAW,CAAC78N,cAAa,EAAG/qN,WAAW,CAAC,OAAO,YAAY,gBAAgB,eAAe,qBAAqB,CAAC7sC,KAAK,UAAUhK,SAAQ,EAAGkz3C,SAAS,CAAC,cAAcz05B,WAAW,CAAC78N,cAAa,EAAG/qN,WAAW,CAAC,SAAS,gBAAgB,iBAAiB,wBAAwB,CAAC7sC,KAAK,UAAUhK,SAAQ,EAAGkz3C,SAAS,CAAC,cAAcz05B,WAAW,CAAC78N,cAAa,EAAG/qN,WAAW,CAAC,SAAS,gBAAgB,iBAAiB,gBAAgB,CAAC7sC,KAAK,UAAUhK,SAAQ,EAAGkz3C,SAAS,CAAC,aAAa,cAAcz05B,WAAW,CAAC78N,cAAa,EAAG/qN,WAAW,CAAC,SAAS,gBAAgB,iBAAiB4zJ,WAAW,CAACzgM,KAAK,OAAOmQ,OAAO,CAACovH,QAAQ,CAAC,EAAE6j3B,KAAK,CAAC,GAAGpt/B,QAAQ,UAAU,gBAAgB,aAAauz3C,cAAc,CAAC9orC,WAAW,CAACzgM,KAAK,OAAOmQ,OAAO,CAACovH,QAAQ,CAAC,EAAE6j3B,KAAK,CAAC,GAAGpt/B,QAAQ,UAAU,gBAAgB,aAAawz3C,iBAAiB,CAAC/orC,WAAW,CAACzgM,KAAK,OAAOmQ,OAAO,CAACovH,QAAQ,CAAC,EAAE6j3B,KAAK,CAAC,GAAGpt/B,QAAQ,UAAU,gBAAgB,aAAasqB,OAAO,CAACtgB,KAAK,QAAQpL,MAAM,KAAK603C,gBAAgB,CAACzp3C,KAAK,OAAOmQ,OAAO,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,EAAE,IAAI,CAAC,EAAE,KAAK,CAAC,EAAE,IAAI,CAAC,EAAE,KAAK,CAAC,EAAEu52C,GAAG,CAAC,EAAE,MAAM,CAAC,EAAE7w3C,IAAI,CAAC,EAAE677B,IAAI,CAAC,EAAE0uD,KAAK,CAAC,EAAE5j/B,IAAI,CAAC,EAAE,OAAO,CAAC,EAAE+sZ,OAAO,CAAC,IAAItgJ,cAAc,CAACjsQ,KAAK,OAAOmQ,OAAO,CAAC8sB,MAAM,CAAC,EAAEE,WAAW,CAAC,EAAEE,QAAQ,CAAC,IAAIwgH,SAAS,CAAC42U,WAAW,CAACz0d,KAAK,cAAc+1wB,MAAM,CAAC/1wB,KAAK,QAAQpL,MAAM,iBAAiBklD,KAAK,CAAC95C,KAAK,SAAShK,QAAQ,EAAE0/K,QAAQ,GAAGzoI,SAAS,CAACjtC,KAAK,SAAShK,QAAQ,SAASgK,KAAK,CAACA,KAAK,OAAOmQ,OAAO,CAAC8tK,SAAS,CAAC,EAAE0rsC,YAAY,CAAC,EAAEh05B,SAAS,CAAC,EAAEi05B,YAAY,CAAC,GAAG5z3C,QAAQ,eAAeo4W,WAAW,CAACpuW,KAAK,OAAOmQ,OAAO,CAAC0+V,IAAI,CAAC,EAAEg7gC,IAAI,CAAC,EAAEC,IAAI,CAAC,GAAG9z3C,QAAQ,OAAOA,QAAQ,CAACgK,KAAK,IAAI0uE,UAAS,IAAKq7yC,cAAc,CAAC/p3C,KAAK,QAAQ01K,QAAQ,EAAEC,QAAQ,GAAG/gL,MAAM,CAAC,SAAS,SAASd,OAAO,GAAG2ge,WAAW,CAACz0d,KAAK,QAAQpL,MAAM,IAAI8gL,QAAQ,GAAGpyD,MAAM,CAACo5R,OAAO,CAAC18Y,KAAK,OAAOhK,QAAQ,WAAWma,OAAO,CAAC2S,IAAI,CAAC,EAAE8b,SAAS,CAAC,GAAG,gBAAgB,gBAAgB28E,YAAW,EAAGk5W,WAAW,CAAC78N,cAAa,EAAG/qN,WAAW,CAAC,UAAUza,SAAS,CAACpyB,KAAK,QAAQhK,QAAQ,CAAC,KAAK,IAAI,IAAIlC,OAAO,EAAEc,MAAM,SAAS,gBAAgB,gBAAgB2mH,YAAW,EAAGk5W,WAAW,CAAC78N,cAAa,EAAG/qN,WAAW,CAAC,UAAUm0E,MAAM,CAAChhH,KAAK,QAAQ,gBAAgB,gBAAgBhK,QAAQ,UAAUy+d,WAAW,CAAC78N,cAAa,EAAG/qN,WAAW,CAAC,SAAS0uE,YAAW,GAAI0F,UAAU,CAACjhH,KAAK,SAAS,gBAAgB,gBAAgBhK,QAAQ,GAAG0/K,QAAQ,EAAEC,QAAQ,EAAE8+S,WAAW,CAAC78N,cAAa,EAAG/qN,WAAW,CAAC,SAAS0uE,YAAW,IAAKktwC,MAAM,CAAC,aAAa,aAAa,eAAe,gBAAgB,uBAAuB,eAAe,eAAe,kBAAkB,oBAAoBuB,WAAW,CAAC,iBAAiB,CAAChq3C,KAAK,UAAUhK,SAAQ,EAAGy+d,WAAW,CAAC78N,cAAa,EAAG/qN,WAAW,CAAC,SAAS,gBAAgB,iBAAiB,eAAe,CAAC7sC,KAAK,SAAShK,QAAQ,EAAE0/K,QAAQ,EAAEC,QAAQ,EAAEp6D,YAAW,EAAGk5W,WAAW,CAAC78N,cAAa,EAAG/qN,WAAW,CAAC,OAAO,UAAU,kBAAkB,gBAAgB,eAAe,aAAa,CAAC7sC,KAAK,QAAQhK,QAAQ,UAAUulH,YAAW,EAAG2twC,SAAS,CAAC,CAAC,IAAI,iBAAiBz05B,WAAW,CAAC78N,cAAa,EAAG/qN,WAAW,CAAC,OAAO,UAAU,kBAAkB,gBAAgB,eAAe,qBAAqB,CAAC7sC,KAAK,QAAQu7G,YAAW,EAAG2twC,SAAS,CAAC,CAAC,IAAI,gBAAgB,CAAC,kBAAiB,IAAKz05B,WAAW,CAAC78N,cAAa,EAAG/qN,WAAW,CAAC,OAAO,UAAU,kBAAkB,gBAAgB,eAAe,iBAAiB,CAAC7sC,KAAK,QAAQpL,MAAM,SAASd,OAAO,EAAEkC,QAAQ,CAAC,EAAE,GAAGulH,YAAW,EAAGurD,MAAM,SAAS2tT,WAAW,CAAC78N,cAAa,EAAG/qN,WAAW,CAAC,SAAS,gBAAgB,iBAAiB,wBAAwB,CAAC7sC,KAAK,OAAOmQ,OAAO,CAAC2S,IAAI,CAAC,EAAE8b,SAAS,CAAC,GAAG5oC,QAAQ,MAAMkz3C,SAAS,CAAC,kBAAkBz05B,WAAW,CAAC78N,cAAa,EAAG/qN,WAAW,CAAC,SAAS,gBAAgB,iBAAiB,eAAe,CAAC7sC,KAAK,gBAAgBu7G,YAAW,EAAGk5W,WAAW,CAAC78N,cAAa,EAAG/qN,WAAW,CAAC,OAAO,YAAY,gBAAgB,4BAA4B,uBAAuB,CAAC,yBAAyB,CAAC7sC,KAAK,SAAShK,QAAQ,EAAE0/K,QAAQ,EAAEC,QAAQ,EAAEp6D,YAAW,EAAGk5W,WAAW,CAAC78N,cAAa,EAAG/qN,WAAW,CAAC,SAAS,gBAAgB,iBAAiB,uBAAuB,CAAC7sC,KAAK,QAAQhK,QAAQ,UAAUulH,YAAW,EAAG2twC,SAAS,CAAC,CAAC,IAAI,2BAA2Bz05B,WAAW,CAAC78N,cAAa,EAAG/qN,WAAW,CAAC,OAAO,UAAU,kBAAkB,gBAAgB,eAAe,2BAA2B,CAAC7sC,KAAK,QAAQpL,MAAM,SAASd,OAAO,EAAEkC,QAAQ,CAAC,EAAE,GAAGulH,YAAW,EAAGurD,MAAM,SAAS2tT,WAAW,CAAC78N,cAAa,EAAG/qN,WAAW,CAAC,SAAS,gBAAgB,iBAAiB,kCAAkC,CAAC7sC,KAAK,OAAOmQ,OAAO,CAAC2S,IAAI,CAAC,EAAE8b,SAAS,CAAC,GAAG5oC,QAAQ,MAAMkz3C,SAAS,CAAC,4BAA4Bz05B,WAAW,CAAC78N,cAAa,EAAG/qN,WAAW,CAAC,SAAS,gBAAgB,iBAAiB,yBAAyB,CAAC7sC,KAAK,gBAAgBu7G,YAAW,EAAGk5W,WAAW,CAAC78N,cAAa,EAAG/qN,WAAW,CAAC,OAAO,YAAY,gBAAgB,2BAA2B,wBAAwB,CAAC7sC,KAAK,SAAShK,QAAQ,EAAE0/K,QAAQ,EAAE5O,MAAM,SAASvrD,YAAW,EAAGk5W,WAAW,CAAC78N,cAAa,EAAG/qN,WAAW,CAAC,OAAO,UAAU,kBAAkB,gBAAgB,eAAe,sBAAsB,CAAC7sC,KAAK,SAAShK,QAAQ,EAAE0/K,QAAQ,EAAE5O,MAAM,SAASvrD,YAAW,EAAG2twC,SAAS,CAAC,yBAAyBz05B,WAAW,CAAC78N,cAAa,EAAG/qN,WAAW,CAAC,OAAO,UAAU,kBAAkB,gBAAgB,eAAe,mCAAmC,CAAC7sC,KAAK,UAAUhK,SAAQ,EAAGulH,YAAW,EAAGk5W,WAAW,CAAC78N,cAAa,EAAG/qN,WAAW,CAAC,SAAS,gBAAgB,kBAAkBo90C,WAAW,CAAC,eAAe,CAACjq3C,KAAK,SAAShK,QAAQ,EAAE0/K,QAAQ,EAAEC,QAAQ,EAAEp6D,YAAW,EAAGk5W,WAAW,CAAC78N,cAAa,EAAG/qN,WAAW,CAAC,OAAO,UAAU,kBAAkB,gBAAgB,eAAe,aAAa,CAAC7sC,KAAK,QAAQhK,QAAQ,UAAUulH,YAAW,EAAG2twC,SAAS,CAAC,CAAC,IAAI,iBAAiBz05B,WAAW,CAAC78N,cAAa,EAAG/qN,WAAW,CAAC,OAAO,UAAU,kBAAkB,gBAAgB,eAAe,iBAAiB,CAAC7sC,KAAK,QAAQpL,MAAM,SAASd,OAAO,EAAEkC,QAAQ,CAAC,EAAE,GAAGulH,YAAW,EAAGurD,MAAM,SAAS2tT,WAAW,CAAC78N,cAAa,EAAG/qN,WAAW,CAAC,SAAS,gBAAgB,iBAAiB,wBAAwB,CAAC7sC,KAAK,OAAOmQ,OAAO,CAAC2S,IAAI,CAAC,EAAE8b,SAAS,CAAC,GAAG5oC,QAAQ,MAAMkz3C,SAAS,CAAC,kBAAkBz05B,WAAW,CAAC78N,cAAa,EAAG/qN,WAAW,CAAC,SAAS,gBAAgB,iBAAiB,aAAa,CAAC7sC,KAAK,SAAShK,QAAQ,EAAE0/K,QAAQ,EAAEn6D,YAAW,EAAGurD,MAAM,SAAS2tT,WAAW,CAAC78N,cAAa,EAAG/qN,WAAW,CAAC,OAAO,UAAU,kBAAkB,gBAAgB,eAAe,iBAAiB,CAAC7sC,KAAK,SAAShK,QAAQ,EAAE0/K,QAAQ,EAAEn6D,YAAW,EAAGurD,MAAM,SAAS2tT,WAAW,CAAC78N,cAAa,EAAG/qN,WAAW,CAAC,OAAO,UAAU,kBAAkB,gBAAgB,eAAe,cAAc,CAAC7sC,KAAK,SAAShK,QAAQ,EAAEulH,YAAW,EAAGurD,MAAM,SAAS2tT,WAAW,CAAC78N,cAAa,EAAG/qN,WAAW,CAAC,OAAO,UAAU,kBAAkB,gBAAgB,eAAe,YAAY,CAAC7sC,KAAK,SAAShK,QAAQ,EAAE0/K,QAAQ,EAAEn6D,YAAW,EAAGurD,MAAM,SAAS2tT,WAAW,CAAC78N,cAAa,EAAG/qN,WAAW,CAAC,OAAO,UAAU,kBAAkB,gBAAgB,eAAe,iBAAiB,CAAC7sC,KAAK,QAAQpL,MAAM,SAAS8gL,QAAQ,EAAEn6D,YAAW,EAAGurD,MAAM,cAAcoitC,SAAS,CAAC,CAAC,IAAI,iBAAiBz05B,WAAW,CAAC78N,cAAa,EAAG/qN,WAAW,CAAC,SAAS,gBAAgB,eAAe,eAAe,CAAC7sC,KAAK,gBAAgBu7G,YAAW,EAAGk5W,WAAW,CAAC78N,cAAa,EAAG/qN,WAAW,CAAC,OAAO,YAAY,gBAAgB,2BAA2B,gBAAgB,CAAC7sC,KAAK,QAAQu7G,YAAW,EAAG2twC,SAAS,CAAC,CAAC,IAAI,kBAAkB,CAAC,IAAI,gBAAgB,CAAC5t3C,OAAO,UAAUkE,IAAI,CAAC4o3C,aAAY,KAAM3z5B,WAAW,CAAC78N,cAAa,EAAG/qN,WAAW,CAAC,kBAAkB,gBAAgB,eAAeq90C,aAAa,CAAC,gBAAgB,CAAClq3C,KAAK,SAAShK,QAAQ,EAAE0/K,QAAQ,EAAEn6D,YAAW,EAAGurD,MAAM,SAAS2tT,WAAW,CAAC78N,cAAa,EAAG/qN,WAAW,CAAC,OAAO,UAAU,kBAAkB,gBAAgB,eAAe,eAAe,CAAC7sC,KAAK,QAAQhK,QAAQ,UAAUulH,YAAW,EAAGk5W,WAAW,CAAC78N,cAAa,EAAG/qN,WAAW,CAAC,OAAO,UAAU,kBAAkB,gBAAgB,eAAe,cAAc,CAAC7sC,KAAK,SAAShK,QAAQ,EAAEulH,YAAW,EAAGk5W,WAAW,CAAC78N,cAAa,EAAG/qN,WAAW,CAAC,OAAO,UAAU,kBAAkB,gBAAgB,eAAe,iBAAiB,CAAC7sC,KAAK,SAAShK,QAAQ,EAAE0/K,QAAQ,EAAEC,QAAQ,EAAEp6D,YAAW,EAAGk5W,WAAW,CAAC78N,cAAa,EAAG/qN,WAAW,CAAC,OAAO,UAAU,kBAAkB,gBAAgB,eAAe,mBAAmB,CAAC7sC,KAAK,QAAQpL,MAAM,SAASd,OAAO,EAAEkC,QAAQ,CAAC,EAAE,GAAGulH,YAAW,EAAGurD,MAAM,SAAS2tT,WAAW,CAAC78N,cAAa,EAAG/qN,WAAW,CAAC,SAAS,gBAAgB,iBAAiB,0BAA0B,CAAC7sC,KAAK,OAAOmQ,OAAO,CAAC2S,IAAI,CAAC,EAAE8b,SAAS,CAAC,GAAG5oC,QAAQ,MAAMkz3C,SAAS,CAAC,oBAAoBz05B,WAAW,CAAC78N,cAAa,EAAG/qN,WAAW,CAAC,SAAS,gBAAgB,iBAAiB,qBAAqB,CAAC7sC,KAAK,OAAOmQ,OAAO,CAAC2S,IAAI,CAAC,EAAE8b,SAAS,CAAC,GAAG5oC,QAAQ,MAAMy+d,WAAW,CAAC78N,cAAa,EAAG/qN,WAAW,CAAC,SAAS,gBAAgB,iBAAiB,yBAAyB,CAAC7sC,KAAK,OAAOmQ,OAAO,CAAC2S,IAAI,CAAC,EAAE8b,SAAS,CAAC,GAAG5oC,QAAQ,WAAWy+d,WAAW,CAAC78N,cAAa,EAAG/qN,WAAW,CAAC,SAAS,gBAAgB,iBAAiB,sBAAsB,CAAC7sC,KAAK,SAAShK,QAAQ,EAAE0/K,QAAQ,EAAEn6D,YAAW,EAAGurD,MAAM,SAAS2tT,WAAW,CAAC78N,cAAa,EAAG/qN,WAAW,CAAC,OAAO,UAAU,kBAAkB,gBAAgB,eAAe,sBAAsB,CAAC7sC,KAAK,QAAQhK,QAAQ,UAAUulH,YAAW,EAAGk5W,WAAW,CAAC78N,cAAa,EAAG/qN,WAAW,CAAC,OAAO,UAAU,kBAAkB,gBAAgB,eAAe,wBAAwB,CAAC7sC,KAAK,SAAShK,QAAQ,EAAE0/K,QAAQ,EAAEC,QAAQ,EAAEp6D,YAAW,EAAGk5W,WAAW,CAAC78N,cAAa,EAAG/qN,WAAW,CAAC,OAAO,UAAU,kBAAkB,gBAAgB,gBAAgBs90C,cAAc,CAAC,iBAAiB,CAACnq3C,KAAK,SAAShK,QAAQ,GAAG0/K,QAAQ,EAAEn6D,YAAW,EAAGurD,MAAM,SAAS2tT,WAAW,CAAC78N,cAAa,EAAG/qN,WAAW,CAAC,OAAO,UAAU,kBAAkB,gBAAgB,eAAe,iBAAiB,CAAC7sC,KAAK,SAAShK,QAAQ,EAAE0/K,QAAQ,EAAEn6D,YAAW,EAAGk5W,WAAW,CAAC78N,cAAa,EAAG/qN,WAAW,CAAC,OAAO,UAAU,kBAAkB,gBAAgB,eAAe,oBAAoB,CAAC7sC,KAAK,SAAShK,QAAQ,EAAE0/K,QAAQ,EAAEn6D,YAAW,EAAGk5W,WAAW,CAAC78N,cAAa,EAAG/qN,WAAW,CAAC,SAAS,gBAAgB,iBAAiB,gBAAgB,CAAC7sC,KAAK,QAAQhK,QAAQ,CAAC,cAAc,CAAC,UAAU,CAAC,mBAAmB,EAAE,qBAAqB,GAAG,YAAY,GAAG,OAAO,GAAG,OAAO,GAAG,SAAS,EAAE,OAAOulH,YAAW,EAAGk5W,WAAW,CAAC78N,cAAa,EAAG/qN,WAAW,CAAC,oBAAoB,gBAAgB,cAAc,kBAAkB,CAAC7sC,KAAK,SAAShK,QAAQ,EAAE0/K,QAAQ,EAAEC,QAAQ,EAAEp6D,YAAW,EAAGk5W,WAAW,CAAC78N,cAAa,EAAG/qN,WAAW,CAAC,SAAS,gBAAgB,kBAAkBu90C,aAAa,CAAC,eAAe,CAACpq3C,KAAK,SAAShK,QAAQ,EAAE0/K,QAAQ,EAAEC,QAAQ,EAAEp6D,YAAW,EAAG2twC,SAAS,CAAC,cAAcz05B,WAAW,CAAC78N,cAAa,EAAG/qN,WAAW,CAAC,OAAO,UAAU,kBAAkB,gBAAgB,eAAe,aAAa,CAAC7sC,KAAK,QAAQhK,QAAQ,UAAUulH,YAAW,EAAG2twC,SAAS,CAAC,cAAcz05B,WAAW,CAAC78N,cAAa,EAAG/qN,WAAW,CAAC,OAAO,UAAU,kBAAkB,gBAAgB,eAAe,kBAAkB,CAAC7sC,KAAK,QAAQhK,QAAQ,mBAAmBulH,YAAW,EAAG2twC,SAAS,CAAC,cAAcz05B,WAAW,CAAC78N,cAAa,EAAG/qN,WAAW,CAAC,OAAO,UAAU,kBAAkB,gBAAgB,eAAe,kBAAkB,CAAC7sC,KAAK,SAAShK,QAAQ,EAAE0/K,QAAQ,EAAEn6D,YAAW,EAAGurD,MAAM,SAASoitC,SAAS,CAAC,cAAcz05B,WAAW,CAAC78N,cAAa,EAAG/qN,WAAW,CAAC,OAAO,UAAU,kBAAkB,gBAAgB,eAAe,iBAAiB,CAAC7sC,KAAK,SAAShK,QAAQ,EAAE0/K,QAAQ,EAAEn6D,YAAW,EAAGurD,MAAM,SAASoitC,SAAS,CAAC,cAAcz05B,WAAW,CAAC78N,cAAa,EAAG/qN,WAAW,CAAC,OAAO,UAAU,kBAAkB,gBAAgB,eAAe,iBAAiB,CAAC7sC,KAAK,QAAQpL,MAAM,SAASd,OAAO,EAAEkC,QAAQ,CAAC,EAAE,GAAGulH,YAAW,EAAGurD,MAAM,SAASoitC,SAAS,CAAC,cAAcz05B,WAAW,CAAC78N,cAAa,EAAG/qN,WAAW,CAAC,SAAS,gBAAgB,iBAAiB,wBAAwB,CAAC7sC,KAAK,OAAOmQ,OAAO,CAAC2S,IAAI,CAAC,EAAE8b,SAAS,CAAC,GAAG5oC,QAAQ,MAAMkz3C,SAAS,CAAC,aAAa,kBAAkBz05B,WAAW,CAAC78N,cAAa,EAAG/qN,WAAW,CAAC,SAAS,gBAAgB,iBAAiB,eAAe,CAAC7sC,KAAK,SAAShK,QAAQ,EAAE0/K,QAAQ,EAAEC,QAAQ,EAAEp6D,YAAW,EAAG2twC,SAAS,CAAC,cAAcz05B,WAAW,CAAC78N,cAAa,EAAG/qN,WAAW,CAAC,OAAO,UAAU,kBAAkB,gBAAgB,eAAe,aAAa,CAAC7sC,KAAK,QAAQhK,QAAQ,UAAUulH,YAAW,EAAG8uwC,aAAY,EAAGnB,SAAS,CAAC,cAAcz05B,WAAW,CAAC78N,cAAa,EAAG/qN,WAAW,CAAC,OAAO,UAAU,kBAAkB,gBAAgB,eAAe,kBAAkB,CAAC7sC,KAAK,QAAQhK,QAAQ,mBAAmBulH,YAAW,EAAG2twC,SAAS,CAAC,cAAcz05B,WAAW,CAAC78N,cAAa,EAAG/qN,WAAW,CAAC,OAAO,UAAU,kBAAkB,gBAAgB,eAAe,kBAAkB,CAAC7sC,KAAK,SAAShK,QAAQ,EAAE0/K,QAAQ,EAAEn6D,YAAW,EAAGurD,MAAM,SAASoitC,SAAS,CAAC,cAAcz05B,WAAW,CAAC78N,cAAa,EAAG/qN,WAAW,CAAC,OAAO,UAAU,kBAAkB,gBAAgB,eAAe,iBAAiB,CAAC7sC,KAAK,SAAShK,QAAQ,EAAE0/K,QAAQ,EAAEn6D,YAAW,EAAGurD,MAAM,SAASoitC,SAAS,CAAC,cAAcz05B,WAAW,CAAC78N,cAAa,EAAG/qN,WAAW,CAAC,OAAO,UAAU,kBAAkB,gBAAgB,eAAe,iBAAiB,CAAC7sC,KAAK,QAAQpL,MAAM,SAASd,OAAO,EAAEkC,QAAQ,CAAC,EAAE,GAAGulH,YAAW,EAAGurD,MAAM,SAASoitC,SAAS,CAAC,cAAcz05B,WAAW,CAAC78N,cAAa,EAAG/qN,WAAW,CAAC,SAAS,gBAAgB,iBAAiB,wBAAwB,CAAC7sC,KAAK,OAAOmQ,OAAO,CAAC2S,IAAI,CAAC,EAAE8b,SAAS,CAAC,GAAG5oC,QAAQ,MAAMkz3C,SAAS,CAAC,aAAa,kBAAkBz05B,WAAW,CAAC78N,cAAa,EAAG/qN,WAAW,CAAC,SAAS,gBAAgB,kBAAkBy90C,aAAa,CAAC,iBAAiB,CAACtq3C,KAAK,SAAShK,QAAQ,EAAE0/K,QAAQ,EAAEC,QAAQ,EAAEp6D,YAAW,EAAGk5W,WAAW,CAAC78N,cAAa,EAAG/qN,WAAW,CAAC,SAAS,gBAAgB,iBAAiB,oBAAoB,CAAC7sC,KAAK,SAAShK,QAAQ,EAAEy0pC,OAAO,IAAIlviC,YAAW,EAAGurD,MAAM,UAAU2tT,WAAW,CAAC78N,cAAa,EAAG/qN,WAAW,CAAC,SAAS,gBAAgB,iBAAiB,wBAAwB,CAAC7sC,KAAK,SAAShK,QAAQ,EAAE0/K,QAAQ,EAAEC,QAAQ,EAAEp6D,YAAW,EAAGk5W,WAAW,CAAC78N,cAAa,EAAG/qN,WAAW,CAAC,SAAS,gBAAgB,iBAAiB,wBAAwB,CAAC7sC,KAAK,SAAShK,QAAQ,EAAE0/K,QAAQ,EAAEC,QAAQ,EAAEp6D,YAAW,EAAGk5W,WAAW,CAAC78N,cAAa,EAAG/qN,WAAW,CAAC,SAAS,gBAAgB,iBAAiB,oBAAoB,CAAC7sC,KAAK,SAAShK,QAAQ,EAAE0/K,SAAS,EAAEC,QAAQ,EAAEp6D,YAAW,EAAGk5W,WAAW,CAAC78N,cAAa,EAAG/qN,WAAW,CAAC,SAAS,gBAAgB,iBAAiB,kBAAkB,CAAC7sC,KAAK,SAAShK,QAAQ,EAAE0/K,SAAS,EAAEC,QAAQ,EAAEp6D,YAAW,EAAGk5W,WAAW,CAAC78N,cAAa,EAAG/qN,WAAW,CAAC,SAAS,gBAAgB,iBAAiB,oBAAoB,CAAC7sC,KAAK,OAAOmQ,OAAO,CAACg/7B,OAAO,CAAC,EAAE84I,QAAQ,CAAC,GAAGjylC,QAAQ,SAASy+d,WAAW,CAAC78N,cAAa,EAAG/qN,WAAW,CAAC,SAAS,gBAAgB,iBAAiB,uBAAuB,CAAC7sC,KAAK,SAAShK,QAAQ,IAAI0/K,QAAQ,EAAEn6D,YAAW,EAAGurD,MAAM,eAAe2tT,WAAW,CAAC78N,cAAa,EAAG/qN,WAAW,CAAC,SAAS,gBAAgB,kBAAkB090C,gBAAgB,CAAC,mCAAmC,CAACvq3C,KAAK,SAAShK,QAAQ,IAAI0/K,QAAQ,EAAEC,QAAQ,IAAIp6D,YAAW,EAAGk5W,WAAW,CAAC78N,cAAa,EAAG/qN,WAAW,CAAC,SAAS,gBAAgB,iBAAiB,gCAAgC,CAAC7sC,KAAK,OAAOmQ,OAAO,CAAC2S,IAAI,CAAC,EAAE8b,SAAS,CAAC,GAAG5oC,QAAQ,WAAWy+d,WAAW,CAAC78N,cAAa,EAAG/qN,WAAW,CAAC,SAAS,gBAAgB,iBAAiB,yBAAyB,CAAC7sC,KAAK,SAAShK,QAAQ,GAAG0/K,QAAQ,EAAEC,QAAQ,EAAEp6D,YAAW,EAAGk5W,WAAW,CAAC78N,cAAa,EAAG/qN,WAAW,CAAC,SAAS,gBAAgB,iBAAiB,yBAAyB,CAAC7sC,KAAK,QAAQhK,QAAQ,UAAUulH,YAAW,EAAGk5W,WAAW,CAAC78N,cAAa,EAAG/qN,WAAW,CAAC,SAAS,gBAAgB,iBAAiB,4BAA4B,CAAC7sC,KAAK,QAAQhK,QAAQ,UAAUulH,YAAW,EAAGk5W,WAAW,CAAC78N,cAAa,EAAG/qN,WAAW,CAAC,SAAS,gBAAgB,iBAAiB,yBAAyB,CAAC7sC,KAAK,QAAQhK,QAAQ,UAAUulH,YAAW,EAAGk5W,WAAW,CAAC78N,cAAa,EAAG/qN,WAAW,CAAC,SAAS,gBAAgB,kBAAkB290C,iBAAiB,CAAC,mBAAmB,CAACxq3C,KAAK,QAAQhK,QAAQ,UAAUulH,YAAW,EAAG2twC,SAAS,CAAC,CAAC,IAAI,uBAAuBz05B,WAAW,CAAC78N,cAAa,EAAG/qN,WAAW,CAAC,SAAS,gBAAgB,iBAAiB,qBAAqB,CAAC7sC,KAAK,gBAAgBu7G,YAAW,EAAGk5W,WAAW,CAAC78N,cAAa,EAAG/qN,WAAW,CAAC,SAAS,gBAAgB,eAAe,qBAAqB,CAAC7sC,KAAK,SAAShK,QAAQ,EAAE0/K,QAAQ,EAAEC,QAAQ,EAAEp6D,YAAW,EAAGk5W,WAAW,CAAC78N,cAAa,EAAG/qN,WAAW,CAAC,SAAS,gBAAgB,kBAAkB0uE,WAAW,CAACziE,SAAS,CAAC94C,KAAK,SAAShK,QAAQ,IAAI0/K,QAAQ,EAAE5O,MAAM,gBAAgBlyH,MAAM,CAAC50C,KAAK,SAAShK,QAAQ,EAAE0/K,QAAQ,EAAE5O,MAAM,iBAAiB,gBAAgB,CAAC,cAAc,CAAC9mK,KAAK,iBAAiB,cAAc,CAACA,KAAK,iBAAiB,0BAA0B,CAACA,KAAK,iBAAiB,aAAa,CAACA,KAAK,iBAAiB,gBAAgB,CAACA,KAAK,iBAAiB0xH,SAAS,CAAC1xH,KAAK,kBAAkB0n3C,UAAU,CAAC,IAAI,CAAC1n3C,KAAK,YAAYsC,GAAG,SAASzP,EAAED,EAAEY,EAAEV,GAAGW,KAAK+xB,SAAS3yB,EAAEA,EAAE,KAAK,IAAIW,EAAEV,IAAIW,KAAK23E,WAAWt4E,GAAG,MAAMF,GAAGA,EAAE633C,WAAWh33C,KAAKs/C,KAAKngD,EAAE633C,SAAU,EAAE,SAAS9m3C,GAAG9Q,GAAG,IAAID,EAAEC,EAAE+B,MAAM,OAAOhC,EAAE,CAAC,IAAI0P,GAAGzP,EAAEylB,IAAI1lB,EAAE,4CAA4C,EAAE,CAAC,SAASgR,GAAG/Q,GAAG,IAAI,IAAID,EAAE,GAAGY,EAAEK,UAAUC,OAAO,EAAEN,KAAK,GAAGZ,EAAEY,GAAGK,UAAUL,EAAE,GAAG,IAAI,IAAIV,EAAE,EAAEuB,EAAEzB,EAAEE,EAAEuB,EAAEP,OAAOhB,GAAG,EAAE,CAAC,IAAI2B,EAAEJ,EAAEvB,GAAG,IAAI,IAAIiB,KAAKU,EAAE5B,EAAEkB,GAAGU,EAAEV,EAAG,CAAC,OAAOlB,CAAC,CAAC,SAAS6O,GAAG7O,GAAG,OAAOA,aAAa+lC,QAAQ/lC,aAAaU,QAAQV,aAAa6T,QAAQ7T,EAAE8J,UAAU9J,CAAC,CAAC,SAASwQ,GAAGxQ,GAAG,GAAGK,MAAMkS,QAAQvS,GAAG,OAAOA,EAAEiwB,IAAIzf,IAAI,GAAGxQ,aAAaE,UAAUF,aAAa+lC,QAAQ/lC,aAAaU,QAAQV,aAAa6T,SAAS,CAAC,IAAI9T,EAAE,CAAC,EAAE,IAAI,IAAIY,KAAKX,EAAED,EAAEY,GAAG6P,GAAGxQ,EAAEW,IAAI,OAAOZ,CAAC,CAAC,OAAO8O,GAAG7O,EAAE,CAAC,IAAI2P,GAAG,SAAS3P,GAAG,SAASD,EAAEA,EAAEY,GAAGX,EAAEQ,KAAKI,KAAKD,GAAGC,KAAK+xB,QAAQhyB,EAAEC,KAAK6kB,IAAI1lB,CAAE,CAAC,OAAOC,IAAID,EAAEK,UAAUJ,IAAID,EAAEO,UAAUJ,OAAOY,OAAOd,GAAGA,EAAEM,YAAYO,YAAYd,EAAEA,CAAC,CAA3J,CAA6JqoB,OAAOtY,GAAG,SAAS9P,EAAED,QAAG,IAASA,IAAIA,EAAE,IAAIa,KAAKqxF,OAAOjyF,EAAEY,KAAKukU,SAAS,CAAC,EAAE,IAAI,IAAIxkU,EAAE,EAAEV,EAAEF,EAAEY,EAAEV,EAAEgB,OAAON,GAAG,EAAE,CAAC,IAAIa,EAAEvB,EAAEU,GAAGC,KAAKukU,SAAS3jU,EAAE,IAAIA,EAAE,EAAG,CAAC,EAAEsO,GAAGxP,UAAUsC,OAAO,SAAS5C,GAAG,OAAO,IAAI8P,GAAGlP,KAAKZ,EAAE,EAAE8P,GAAGxP,UAAUyD,IAAI,SAAS/D,GAAG,GAAGY,KAAKukU,SAASnlU,GAAG,OAAOY,KAAKukU,SAASnlU,GAAG,GAAGY,KAAKqxF,OAAO,OAAOrxF,KAAKqxF,OAAOluF,IAAI/D,GAAG,MAAM,IAAIooB,MAAMpoB,EAAE,uBAAuB,EAAE8P,GAAGxP,UAAUqM,IAAI,SAAS3M,GAAG,QAASY,KAAKukU,SAASnlU,MAAMY,KAAKqxF,QAAQrxF,KAAKqxF,OAAOtlF,IAAI3M,EAAE,EAAE,IAAIiP,GAAG,CAAC+T,KAAK,QAAQrU,GAAG,CAACqU,KAAK,UAAU9T,GAAG,CAAC8T,KAAK,UAAUjT,GAAG,CAACiT,KAAK,WAAWjU,GAAG,CAACiU,KAAK,SAAS/R,GAAG,CAAC+R,KAAK,UAAUnT,GAAG,CAACmT,KAAK,SAASpT,GAAG,CAACoT,KAAK,YAAY1T,GAAG,CAAC0T,KAAK,aAAa5T,GAAG,CAAC4T,KAAK,iBAAiB,SAAStT,GAAG1P,EAAED,GAAG,MAAO,CAACijB,KAAK,QAAQ6zD,SAAS72E,EAAE8F,EAAE/F,EAAE,CAAC,SAASwQ,GAAGvQ,GAAG,GAAG,UAAUA,EAAEgjB,KAAK,CAAC,IAAIjjB,EAAEwQ,GAAGvQ,EAAE62E,UAAU,MAAO,iBAAiB72E,EAAE8F,EAAE,SAAS/F,EAAE,KAAKC,EAAE8F,EAAE,IAAI,UAAU9F,EAAE62E,SAAS7zD,KAAK,QAAQ,SAASjjB,EAAE,GAAG,CAAC,OAAOC,EAAEgjB,IAAI,CAAC,IAAI/S,GAAG,CAAChB,GAAGN,GAAGO,GAAGa,GAAGhB,GAAGO,GAAG2B,GAAGvB,GAAGG,IAAIT,IAAI,SAASY,GAAGhQ,EAAED,GAAG,GAAG,UAAUA,EAAEijB,KAAK,OAAO,KAAK,GAAG,UAAUhjB,EAAEgjB,MAAM,GAAG,UAAUjjB,EAAEijB,OAAO,IAAIjjB,EAAE+F,GAAG,UAAU/F,EAAE82E,SAAS7zD,OAAOhT,GAAGhQ,EAAE62E,SAAS92E,EAAE82E,aAAa,iBAAiB72E,EAAE8F,GAAG9F,EAAE8F,IAAI/F,EAAE+F,GAAG,OAAO,SAAU,CAAC,GAAG9F,EAAEgjB,OAAOjjB,EAAEijB,KAAK,OAAO,KAAK,GAAG,UAAUhjB,EAAEgjB,KAAK,IAAI,IAAIriB,EAAE,EAAEV,EAAEgQ,GAAGtP,EAAEV,EAAEgB,OAAON,GAAG,EAAE,IAAIqP,GAAG/P,EAAEU,GAAGZ,GAAG,OAAO,IAAI,CAAC,MAAO,YAAYwQ,GAAGvQ,GAAG,cAAcuQ,GAAGxQ,GAAG,WAAW,CAAC,SAASmR,GAAGlR,EAAED,GAAG,OAAOA,EAAEwoC,MAAK,SAAUxoC,GAAG,OAAOA,EAAEijB,OAAOhjB,EAAEgjB,IAAK,GAAE,CAAC,SAAS7T,GAAGnP,EAAED,GAAG,OAAOA,EAAEwoC,MAAK,SAAUxoC,GAAG,MAAO,SAASA,EAAE,OAAOC,EAAE,UAAUD,EAAEM,MAAMkS,QAAQvS,GAAG,WAAWD,EAAEC,IAAIK,MAAMkS,QAAQvS,IAAI,iBAAiBA,EAAED,WAAWC,CAAE,GAAE,CAAC,IAAIgR,GAAGjR,GAAE,SAAUC,EAAED,GAAG,IAAIY,EAAE,CAACg2K,YAAY,CAAC,EAAE,EAAE,EAAE,GAAGm4lB,UAAU,CAAC,IAAI,IAAI,IAAI,GAAGC,aAAa,CAAC,IAAI,IAAI,IAAI,GAAGC,KAAK,CAAC,EAAE,IAAI,IAAI,GAAGC,WAAW,CAAC,IAAI,IAAI,IAAI,GAAGC,MAAM,CAAC,IAAI,IAAI,IAAI,GAAGC,MAAM,CAAC,IAAI,IAAI,IAAI,GAAGC,OAAO,CAAC,IAAI,IAAI,IAAI,GAAG1+Z,MAAM,CAAC,EAAE,EAAE,EAAE,GAAG2+Z,eAAe,CAAC,IAAI,IAAI,IAAI,GAAGh8Z,KAAK,CAAC,EAAE,EAAE,IAAI,GAAGi8Z,WAAW,CAAC,IAAI,GAAG,IAAI,GAAGC,MAAM,CAAC,IAAI,GAAG,GAAG,GAAGC,UAAU,CAAC,IAAI,IAAI,IAAI,GAAGC,UAAU,CAAC,GAAG,IAAI,IAAI,GAAGC,WAAW,CAAC,IAAI,IAAI,EAAE,GAAGC,UAAU,CAAC,IAAI,IAAI,GAAG,GAAGC,MAAM,CAAC,IAAI,IAAI,GAAG,GAAGC,eAAe,CAAC,IAAI,IAAI,IAAI,GAAGC,SAAS,CAAC,IAAI,IAAI,IAAI,GAAGC,QAAQ,CAAC,IAAI,GAAG,GAAG,GAAGC,KAAK,CAAC,EAAE,IAAI,IAAI,GAAGC,SAAS,CAAC,EAAE,EAAE,IAAI,GAAGC,SAAS,CAAC,EAAE,IAAI,IAAI,GAAGC,cAAc,CAAC,IAAI,IAAI,GAAG,GAAGC,SAAS,CAAC,IAAI,IAAI,IAAI,GAAGC,UAAU,CAAC,EAAE,IAAI,EAAE,GAAGC,SAAS,CAAC,IAAI,IAAI,IAAI,GAAGC,UAAU,CAAC,IAAI,IAAI,IAAI,GAAGC,YAAY,CAAC,IAAI,EAAE,IAAI,GAAGC,eAAe,CAAC,GAAG,IAAI,GAAG,GAAGC,WAAW,CAAC,IAAI,IAAI,EAAE,GAAGC,WAAW,CAAC,IAAI,GAAG,IAAI,GAAGC,QAAQ,CAAC,IAAI,EAAE,EAAE,GAAGC,WAAW,CAAC,IAAI,IAAI,IAAI,GAAGC,aAAa,CAAC,IAAI,IAAI,IAAI,GAAGC,cAAc,CAAC,GAAG,GAAG,IAAI,GAAGC,cAAc,CAAC,GAAG,GAAG,GAAG,GAAGC,cAAc,CAAC,GAAG,GAAG,GAAG,GAAGC,cAAc,CAAC,EAAE,IAAI,IAAI,GAAGC,WAAW,CAAC,IAAI,EAAE,IAAI,GAAGC,SAAS,CAAC,IAAI,GAAG,IAAI,GAAGC,YAAY,CAAC,EAAE,IAAI,IAAI,GAAGC,QAAQ,CAAC,IAAI,IAAI,IAAI,GAAGC,QAAQ,CAAC,IAAI,IAAI,IAAI,GAAGC,WAAW,CAAC,GAAG,IAAI,IAAI,GAAGC,UAAU,CAAC,IAAI,GAAG,GAAG,GAAGC,YAAY,CAAC,IAAI,IAAI,IAAI,GAAGC,YAAY,CAAC,GAAG,IAAI,GAAG,GAAGC,QAAQ,CAAC,IAAI,EAAE,IAAI,GAAGC,UAAU,CAAC,IAAI,IAAI,IAAI,GAAGC,WAAW,CAAC,IAAI,IAAI,IAAI,GAAGC,KAAK,CAAC,IAAI,IAAI,EAAE,GAAGC,UAAU,CAAC,IAAI,IAAI,GAAG,GAAGC,KAAK,CAAC,IAAI,IAAI,IAAI,GAAGn+Z,MAAM,CAAC,EAAE,IAAI,EAAE,GAAGo+Z,YAAY,CAAC,IAAI,IAAI,GAAG,GAAGv9Z,KAAK,CAAC,IAAI,IAAI,IAAI,GAAGw9Z,SAAS,CAAC,IAAI,IAAI,IAAI,GAAGC,QAAQ,CAAC,IAAI,IAAI,IAAI,GAAGC,UAAU,CAAC,IAAI,GAAG,GAAG,GAAGC,OAAO,CAAC,GAAG,EAAE,IAAI,GAAGC,MAAM,CAAC,IAAI,IAAI,IAAI,GAAGC,MAAM,CAAC,IAAI,IAAI,IAAI,GAAGC,SAAS,CAAC,IAAI,IAAI,IAAI,GAAGC,cAAc,CAAC,IAAI,IAAI,IAAI,GAAGC,UAAU,CAAC,IAAI,IAAI,EAAE,GAAGC,aAAa,CAAC,IAAI,IAAI,IAAI,GAAGC,UAAU,CAAC,IAAI,IAAI,IAAI,GAAGC,WAAW,CAAC,IAAI,IAAI,IAAI,GAAGC,UAAU,CAAC,IAAI,IAAI,IAAI,GAAGC,qBAAqB,CAAC,IAAI,IAAI,IAAI,GAAGC,UAAU,CAAC,IAAI,IAAI,IAAI,GAAGC,WAAW,CAAC,IAAI,IAAI,IAAI,GAAGC,UAAU,CAAC,IAAI,IAAI,IAAI,GAAGC,UAAU,CAAC,IAAI,IAAI,IAAI,GAAGC,YAAY,CAAC,IAAI,IAAI,IAAI,GAAGC,cAAc,CAAC,GAAG,IAAI,IAAI,GAAGC,aAAa,CAAC,IAAI,IAAI,IAAI,GAAGC,eAAe,CAAC,IAAI,IAAI,IAAI,GAAGC,eAAe,CAAC,IAAI,IAAI,IAAI,GAAGC,eAAe,CAAC,IAAI,IAAI,IAAI,GAAGC,YAAY,CAAC,IAAI,IAAI,IAAI,GAAGC,KAAK,CAAC,EAAE,IAAI,EAAE,GAAGC,UAAU,CAAC,GAAG,IAAI,GAAG,GAAGC,MAAM,CAAC,IAAI,IAAI,IAAI,GAAGC,QAAQ,CAAC,IAAI,EAAE,IAAI,GAAGC,OAAO,CAAC,IAAI,EAAE,EAAE,GAAGC,iBAAiB,CAAC,IAAI,IAAI,IAAI,GAAGC,WAAW,CAAC,EAAE,EAAE,IAAI,GAAGC,aAAa,CAAC,IAAI,GAAG,IAAI,GAAGC,aAAa,CAAC,IAAI,IAAI,IAAI,GAAGC,eAAe,CAAC,GAAG,IAAI,IAAI,GAAGC,gBAAgB,CAAC,IAAI,IAAI,IAAI,GAAGC,kBAAkB,CAAC,EAAE,IAAI,IAAI,GAAGC,gBAAgB,CAAC,GAAG,IAAI,IAAI,GAAGC,gBAAgB,CAAC,IAAI,GAAG,IAAI,GAAGC,aAAa,CAAC,GAAG,GAAG,IAAI,GAAGC,UAAU,CAAC,IAAI,IAAI,IAAI,GAAGC,UAAU,CAAC,IAAI,IAAI,IAAI,GAAGC,SAAS,CAAC,IAAI,IAAI,IAAI,GAAGC,YAAY,CAAC,IAAI,IAAI,IAAI,GAAGC,KAAK,CAAC,EAAE,EAAE,IAAI,GAAGC,QAAQ,CAAC,IAAI,IAAI,IAAI,GAAGC,MAAM,CAAC,IAAI,IAAI,EAAE,GAAGC,UAAU,CAAC,IAAI,IAAI,GAAG,GAAGjha,OAAO,CAAC,IAAI,IAAI,EAAE,GAAGkha,UAAU,CAAC,IAAI,GAAG,EAAE,GAAGC,OAAO,CAAC,IAAI,IAAI,IAAI,GAAGC,cAAc,CAAC,IAAI,IAAI,IAAI,GAAGC,UAAU,CAAC,IAAI,IAAI,IAAI,GAAGC,cAAc,CAAC,IAAI,IAAI,IAAI,GAAGC,cAAc,CAAC,IAAI,IAAI,IAAI,GAAGC,WAAW,CAAC,IAAI,IAAI,IAAI,GAAGC,UAAU,CAAC,IAAI,IAAI,IAAI,GAAGC,KAAK,CAAC,IAAI,IAAI,GAAG,GAAGC,KAAK,CAAC,IAAI,IAAI,IAAI,GAAGC,KAAK,CAAC,IAAI,IAAI,IAAI,GAAGC,WAAW,CAAC,IAAI,IAAI,IAAI,GAAGvia,OAAO,CAAC,IAAI,EAAE,IAAI,GAAGwia,cAAc,CAAC,IAAI,GAAG,IAAI,GAAGtia,IAAI,CAAC,IAAI,EAAE,EAAE,GAAGuia,UAAU,CAAC,IAAI,IAAI,IAAI,GAAGC,UAAU,CAAC,GAAG,IAAI,IAAI,GAAGC,YAAY,CAAC,IAAI,GAAG,GAAG,GAAGC,OAAO,CAAC,IAAI,IAAI,IAAI,GAAGC,WAAW,CAAC,IAAI,IAAI,GAAG,GAAGC,SAAS,CAAC,GAAG,IAAI,GAAG,GAAGC,SAAS,CAAC,IAAI,IAAI,IAAI,GAAGC,OAAO,CAAC,IAAI,GAAG,GAAG,GAAGC,OAAO,CAAC,IAAI,IAAI,IAAI,GAAGC,QAAQ,CAAC,IAAI,IAAI,IAAI,GAAGC,UAAU,CAAC,IAAI,GAAG,IAAI,GAAGC,UAAU,CAAC,IAAI,IAAI,IAAI,GAAGC,UAAU,CAAC,IAAI,IAAI,IAAI,GAAGC,KAAK,CAAC,IAAI,IAAI,IAAI,GAAGC,YAAY,CAAC,EAAE,IAAI,IAAI,GAAGC,UAAU,CAAC,GAAG,IAAI,IAAI,GAAGrsuB,IAAI,CAAC,IAAI,IAAI,IAAI,GAAGssuB,KAAK,CAAC,EAAE,IAAI,IAAI,GAAGC,QAAQ,CAAC,IAAI,IAAI,IAAI,GAAGC,OAAO,CAAC,IAAI,GAAG,GAAG,GAAGC,UAAU,CAAC,GAAG,IAAI,IAAI,GAAGC,OAAO,CAAC,IAAI,IAAI,IAAI,GAAGC,MAAM,CAAC,IAAI,IAAI,IAAI,GAAG1ma,MAAM,CAAC,IAAI,IAAI,IAAI,GAAG2ma,WAAW,CAAC,IAAI,IAAI,IAAI,GAAGC,OAAO,CAAC,IAAI,IAAI,EAAE,GAAGC,YAAY,CAAC,IAAI,IAAI,GAAG,IAAI,SAASv3wB,EAAED,GAAG,OAAQA,EAAEyD,KAAKogD,MAAM7jD,IAAI,EAAE,EAAEA,EAAE,IAAI,IAAIA,CAAC,CAAC,SAASwB,EAAExB,GAAG,OAAOC,EAAE,MAAMD,EAAEA,EAAEiB,OAAO,GAAGgqK,WAAWjrK,GAAG,IAAI,IAAIu2B,SAASv2B,GAAG,CAAC,SAAS4B,EAAE5B,GAAG,OAAQD,EAAE,MAAMC,EAAEA,EAAEiB,OAAO,GAAGgqK,WAAWjrK,GAAG,IAAIirK,WAAWjrK,IAAI,EAAE,EAAED,EAAE,EAAE,EAAEA,EAAE,IAAIA,CAAE,CAAC,SAASmB,EAAElB,EAAED,EAAEY,GAAG,OAAOA,EAAE,EAAEA,GAAG,EAAEA,EAAE,IAAIA,GAAG,GAAG,EAAEA,EAAE,EAAEX,GAAGD,EAAEC,GAAGW,EAAE,EAAE,EAAEA,EAAE,EAAEZ,EAAE,EAAEY,EAAE,EAAEX,GAAGD,EAAEC,IAAI,EAAE,EAAEW,GAAG,EAAEX,CAAC,CAAC,IAAID,EAAE833C,cAAc,SAAS733C,GAAG,IAAID,EAAE2B,EAAE1B,EAAEqN,QAAQ,KAAK,IAAI8C,cAAc,GAAGzO,KAAKf,EAAE,OAAOA,EAAEe,GAAGiB,QAAQ,GAAG,MAAMjB,EAAE,GAAG,OAAO,IAAIA,EAAET,QAAQlB,EAAEw2B,SAAS70B,EAAE26B,OAAO,GAAG,MAAM,GAAGt8B,GAAG,KAAK,EAAE,KAAKA,IAAI,GAAG,KAAKA,IAAI,EAAE,IAAIA,GAAG,IAAIA,IAAI,EAAE,GAAGA,GAAG,GAAGA,IAAI,EAAE,GAAG,KAAK,IAAI2B,EAAET,SAASlB,EAAEw2B,SAAS70B,EAAE26B,OAAO,GAAG,MAAM,GAAGt8B,GAAG,SAAS,EAAE,SAASA,IAAI,IAAI,MAAMA,IAAI,EAAE,IAAIA,EAAE,GAAG,KAAK,IAAIkD,EAAEvB,EAAEN,QAAQ,KAAKgC,EAAE1B,EAAEN,QAAQ,KAAK,IAAI,IAAI6B,GAAGG,EAAE,IAAI1B,EAAET,OAAO,CAAC,IAAIyC,EAAEhC,EAAE26B,OAAO,EAAEp5B,GAAGxB,EAAEC,EAAE26B,OAAOp5B,EAAE,EAAEG,GAAGH,EAAE,IAAIuC,MAAM,KAAKhC,EAAE,EAAE,OAAOE,GAAG,IAAI,OAAO,GAAG,IAAIjC,EAAER,OAAO,OAAO,KAAKuC,EAAE5B,EAAEH,EAAEe,OAAO,IAAI,MAAM,OAAO,IAAIf,EAAER,OAAO,KAAK,CAACO,EAAEC,EAAE,IAAID,EAAEC,EAAE,IAAID,EAAEC,EAAE,IAAI+B,GAAG,IAAI,OAAO,GAAG,IAAI/B,EAAER,OAAO,OAAO,KAAKuC,EAAE5B,EAAEH,EAAEe,OAAO,IAAI,MAAM,GAAG,IAAIf,EAAER,OAAO,OAAO,KAAK,IAAIqC,GAAG2nK,WAAWxpK,EAAE,IAAI,IAAI,KAAK,IAAI,IAAImC,EAAEhC,EAAEH,EAAE,IAAI8B,EAAE3B,EAAEH,EAAE,IAAIuC,EAAET,GAAG,GAAGA,GAAGK,EAAE,GAAGL,EAAEK,EAAEL,EAAEK,EAAEC,EAAE,EAAEN,EAAES,EAAE,MAAO,CAAC/D,EAAE,IAAIiB,EAAE2C,EAAEG,EAAEV,EAAE,EAAE,IAAIrD,EAAE,IAAIiB,EAAE2C,EAAEG,EAAEV,IAAIrD,EAAE,IAAIiB,EAAE2C,EAAEG,EAAEV,EAAE,EAAE,IAAIE,GAAG,QAAQ,OAAO,KAAK,CAAC,OAAO,IAAI,CAAE,CAAC,MAAMxD,GAAG,CAAE,IAAG633C,cAAcvw3C,GAAG,SAAStH,EAAED,EAAEY,EAAEV,QAAG,IAASA,IAAIA,EAAE,GAAGW,KAAKD,EAAEX,EAAEY,KAAKmC,EAAEhD,EAAEa,KAAKsD,EAAEvD,EAAEC,KAAKgB,EAAE3B,CAAE,EAAEqH,GAAG6lB,MAAM,SAASntB,GAAG,GAAGA,EAAE,CAAC,GAAGA,aAAasH,GAAG,OAAOtH,EAAE,GAAG,iBAAiBA,EAAE,CAAC,IAAID,EAAEiR,GAAGhR,GAAG,GAAGD,EAAE,OAAO,IAAIuH,GAAGvH,EAAE,GAAG,IAAIA,EAAE,GAAGA,EAAE,GAAG,IAAIA,EAAE,GAAGA,EAAE,GAAG,IAAIA,EAAE,GAAGA,EAAE,GAAG,CAAC,CAAC,EAAEuH,GAAGhH,UAAU6E,SAAS,WAAW,IAAInF,EAAEY,KAAK6tH,UAAU1uH,EAAEC,EAAE,GAAGW,EAAEX,EAAE,GAAGC,EAAED,EAAE,GAAG,MAAO,QAAQyD,KAAKogD,MAAM7jD,EAAE,IAAI,IAAIyD,KAAKogD,MAAM9jD,GAAG,IAAI0D,KAAKogD,MAAMljD,GAAG,IAAIV,EAAE,GAAG,EAAEqH,GAAGhH,UAAUmuH,QAAQ,WAAW,IAAIzuH,EAAEY,KAAKgB,EAAE,OAAO,IAAI5B,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,IAAIY,KAAKD,EAAEX,EAAE,IAAIY,KAAKmC,EAAE/C,EAAE,IAAIY,KAAKsD,EAAElE,EAAEA,EAAE,EAAEsH,GAAGopW,MAAM,IAAIppW,GAAG,EAAE,EAAE,EAAE,GAAGA,GAAGqpW,MAAM,IAAIrpW,GAAG,EAAE,EAAE,EAAE,GAAGA,GAAGqvK,YAAY,IAAIrvK,GAAG,EAAE,EAAE,EAAE,GAAGA,GAAGmsW,IAAI,IAAInsW,GAAG,EAAE,EAAE,EAAE,GAAG,IAAIH,GAAG,SAASnH,EAAED,EAAEY,GAAGC,KAAKk33C,YAAY933C,EAAED,EAAE,UAAU,OAAOA,EAAE,SAAS,OAAOa,KAAK6sc,OAAO9sc,EAAEC,KAAKm33C,SAAS,IAAI5/d,KAAK6/d,SAASp33C,KAAK6sc,OAAO7sc,KAAK6sc,OAAO,GAAG,CAACqq7B,YAAYl33C,KAAKk33C,YAAYnj1C,MAAM,UAAW,EAAExtC,GAAG7G,UAAUwqH,QAAQ,SAAS9qH,EAAED,GAAG,OAAOa,KAAKm33C,SAASjtwC,QAAQ9qH,EAAED,EAAE,EAAEoH,GAAG7G,UAAU233C,eAAe,WAAW,OAAO,IAAI9/d,KAAK6/d,SAASp33C,KAAK6sc,OAAO7sc,KAAK6sc,OAAO,IAAIpuU,kBAAkBouU,MAAM,EAAE,IAAIhmc,GAAG,SAASzH,EAAED,EAAEY,EAAEV,EAAEuB,GAAGZ,KAAKowB,KAAKhxB,EAAEY,KAAKuqJ,MAAMprJ,EAAEa,KAAK8hG,MAAM/hG,EAAEC,KAAKs33C,UAAUj43C,EAAEW,KAAK4pZ,UAAUhpZ,CAAE,EAAE+F,GAAG,SAASvH,GAAGY,KAAKu33C,SAASn43C,CAAE,EAAEuH,GAAG4nN,WAAW,SAASnvN,GAAG,OAAO,IAAIuH,GAAG,CAAC,IAAIE,GAAGzH,EAAE,KAAK,KAAK,KAAK,OAAO,EAAEuH,GAAGjH,UAAU2oE,QAAQ,WAAW,OAAO,IAAIroE,KAAKu33C,SAASl33C,SAASL,KAAKu33C,SAAS5v1C,MAAK,SAAUvoC,GAAG,OAAO,IAAIA,EAAEgxB,KAAK/vB,QAAQjB,EAAEmrJ,OAAO,IAAInrJ,EAAEmrJ,MAAM7/I,KAAKrK,MAAO,GAAE,EAAEsG,GAAG4/Z,QAAQ,SAASnna,GAAG,OAAOA,aAAauH,GAAGvH,EAAEuH,GAAG4nN,WAAWnvN,EAAE,EAAEuH,GAAGjH,UAAU6E,SAAS,WAAW,OAAO,IAAIvE,KAAKu33C,SAASl33C,OAAO,GAAGL,KAAKu33C,SAASlo2C,KAAI,SAAUjwB,GAAG,OAAOA,EAAEgxB,IAAK,IAAGvjB,KAAK,GAAG,EAAElG,GAAGjH,UAAUytsB,UAAU,WAAW,IAAI,IAAI/tsB,EAAE,CAAC,UAAUD,EAAE,EAAEY,EAAEC,KAAKu33C,SAASp43C,EAAEY,EAAEM,OAAOlB,GAAG,EAAE,CAAC,IAAIE,EAAEU,EAAEZ,GAAG,GAAGE,EAAEkrJ,MAAMnrJ,EAAEyC,KAAK,CAAC,QAAQxC,EAAEkrJ,MAAM7/I,WAAY,CAACtL,EAAEyC,KAAKxC,EAAE+wB,MAAM,IAAIxvB,EAAE,CAAC,EAAEvB,EAAEi43C,YAAY123C,EAAE,aAAa,CAAC,UAAUvB,EAAEi43C,UAAU1y3C,MAAM,OAAOvF,EAAEyiG,QAAQlhG,EAAE,cAAcvB,EAAEyiG,OAAOziG,EAAEuqZ,YAAYhpZ,EAAE,cAAc,CAAC,QAAQoB,OAAO3C,EAAEuqZ,UAAU/7R,YAAYzuH,EAAEyC,KAAKjB,EAAG,CAAC,CAAC,OAAOxB,CAAC,EAAE,IAAI2H,GAAG,SAAS3H,GAAGY,KAAK0K,KAAKtL,EAAEsL,KAAK1K,KAAKil5B,UAAU7l5B,EAAE6l5B,SAAU,EAAE,SAASh+4B,GAAG7H,EAAED,EAAEY,EAAEV,GAAG,MAAO,iBAAiBD,GAAGA,GAAG,GAAGA,GAAG,KAAK,iBAAiBD,GAAGA,GAAG,GAAGA,GAAG,KAAK,iBAAiBY,GAAGA,GAAG,GAAGA,GAAG,SAAI,IAASV,GAAG,iBAAiBA,GAAGA,GAAG,GAAGA,GAAG,EAAE,KAAK,uBAAuB,CAACD,EAAED,EAAEY,EAAEV,GAAGwN,KAAK,MAAM,kCAAkC,wBAAwB,iBAAiBxN,EAAE,CAACD,EAAED,EAAEY,EAAEV,GAAG,CAACD,EAAED,EAAEY,IAAI8M,KAAK,MAAM,iDAAiD,CAAC,SAAS/F,GAAG1H,GAAG,GAAG,OAAOA,EAAE,OAAO,EAAG,GAAG,iBAAiBA,EAAE,OAAO,EAAG,GAAG,kBAAkBA,EAAE,OAAO,EAAG,GAAG,iBAAiBA,EAAE,OAAO,EAAG,GAAGA,aAAasH,GAAG,OAAO,EAAG,GAAGtH,aAAamH,GAAG,OAAO,EAAG,GAAGnH,aAAauH,GAAG,OAAO,EAAG,GAAGvH,aAAa2H,GAAG,OAAO,EAAG,GAAGtH,MAAMkS,QAAQvS,GAAG,CAAC,IAAI,IAAID,EAAE,EAAEY,EAAEX,EAAED,EAAEY,EAAEM,OAAOlB,GAAG,EAAE,IAAI2H,GAAG/G,EAAEZ,IAAI,OAAO,EAAG,OAAO,CAAE,CAAC,GAAG,iBAAiBC,EAAE,CAAC,IAAI,IAAIC,KAAKD,EAAE,IAAI0H,GAAG1H,EAAEC,IAAI,OAAO,EAAG,OAAO,CAAE,CAAC,OAAO,CAAE,CAAC,SAAS6H,GAAG9H,GAAG,GAAG,OAAOA,EAAE,OAAOiP,GAAG,GAAG,iBAAiBjP,EAAE,OAAOkP,GAAG,GAAG,kBAAkBlP,EAAE,OAAO+P,GAAG,GAAG,iBAAiB/P,EAAE,OAAO2O,GAAG,GAAG3O,aAAasH,GAAG,OAAOyH,GAAG,GAAG/O,aAAamH,GAAG,OAAOyI,GAAG,GAAG5P,aAAauH,GAAG,OAAO+H,GAAG,GAAGtP,aAAa2H,GAAG,OAAOyH,GAAG,GAAG/O,MAAMkS,QAAQvS,GAAG,CAAC,IAAI,IAAID,EAAEY,EAAEX,EAAEiB,OAAOhB,EAAE,EAAEuB,EAAExB,EAAEC,EAAEuB,EAAEP,OAAOhB,GAAG,EAAE,CAAC,IAAI2B,EAAEkG,GAAGtG,EAAEvB,IAAI,GAAGF,EAAE,CAAC,GAAGA,IAAI6B,EAAE,SAAS7B,EAAE8P,GAAG,KAAK,CAAC9P,EAAE6B,CAAE,CAAC,OAAO8N,GAAG3P,GAAG8P,GAAGlP,EAAE,CAAC,OAAOsQ,EAAE,CAAC,SAASlJ,GAAG/H,GAAG,IAAID,SAASC,EAAE,OAAO,OAAOA,EAAE,GAAG,WAAWD,GAAG,WAAWA,GAAG,YAAYA,EAAEW,OAAOV,GAAGA,aAAasH,IAAItH,aAAauH,IAAIvH,aAAa2H,GAAG3H,EAAEmF,WAAW+V,KAAKb,UAAUra,EAAE,CAAC2H,GAAGrH,UAAU6E,SAAS,WAAW,OAAOvE,KAAK0K,IAAI,EAAE3D,GAAGwnN,WAAW,SAASnvN,GAAG,OAAOA,EAAE,IAAI2H,GAAG,CAAC2D,KAAKtL,EAAE6l5B,WAAU,IAAK,IAAI,EAAEl+4B,GAAGrH,UAAUytsB,UAAU,WAAW,MAAO,CAAC,QAAQntsB,KAAK0K,KAAK,EAAE,IAAItD,GAAG,SAAShI,EAAED,GAAGa,KAAKuM,KAAKnN,EAAEY,KAAKmB,MAAMhC,CAAE,EAAEiI,GAAGmlB,MAAM,SAASntB,EAAED,GAAG,GAAG,IAAIC,EAAEiB,OAAO,OAAOlB,EAAE2C,MAAM,kEAAkE1C,EAAEiB,OAAO,GAAG,aAAa,IAAIyG,GAAG1H,EAAE,IAAI,OAAOD,EAAE2C,MAAM,iBAAiB,IAAI/B,EAAEX,EAAE,GAAGC,EAAE6H,GAAGnH,GAAGa,EAAEzB,EAAEq43C,aAAa,MAAO,UAAUn43C,EAAE+iB,MAAM,IAAI/iB,EAAE6F,IAAItE,GAAG,UAAUA,EAAEwhB,MAAM,iBAAiBxhB,EAAEsE,GAAG,IAAItE,EAAEsE,IAAI7F,EAAEuB,GAAG,IAAIwG,GAAG/H,EAAEU,EAAE,EAAEqH,GAAG1H,UAAU40gB,SAAS,WAAW,OAAOt0gB,KAAKmB,KAAK,EAAEiG,GAAG1H,UAAUy79B,UAAU,WAAW,EAAE/z9B,GAAG1H,UAAU+33C,cAAc,WAAW,OAAO,CAAE,EAAErw3C,GAAG1H,UAAUytsB,UAAU,WAAW,MAAO,UAAUntsB,KAAKuM,KAAK6V,MAAM,WAAWpiB,KAAKuM,KAAK6V,KAAK,CAAC,UAAUpiB,KAAKmB,OAAOnB,KAAKmB,iBAAiBuF,GAAG,CAAC,QAAQ1E,OAAOhC,KAAKmB,MAAM0sH,WAAW7tH,KAAKmB,iBAAiBwF,GAAG3G,KAAKmB,MAAMgssB,YAAYntsB,KAAKmB,KAAK,EAAE,IAAIqG,GAAG,SAASpI,GAAGY,KAAK0K,KAAK,4BAA4B1K,KAAK+xB,QAAQ3yB,CAAE,EAAEoI,GAAG9H,UAAU49C,OAAO,WAAW,OAAOt9C,KAAK+xB,OAAO,EAAE,IAAI/qB,GAAG,CAAC+V,OAAOzO,GAAGy7I,OAAOh8I,GAAG87I,QAAQ16I,GAAGiuC,OAAO/sC,IAAI9I,GAAG,SAASnI,EAAED,GAAGa,KAAKuM,KAAKnN,EAAEY,KAAKq3C,KAAKl4C,CAAE,EAAEoI,GAAGglB,MAAM,SAASntB,EAAED,GAAG,GAAGC,EAAEiB,OAAO,EAAE,OAAOlB,EAAE2C,MAAM,mCAAmC,IAAI/B,EAAEV,EAAE,EAAEuB,EAAExB,EAAE,GAAG,GAAG,UAAUwB,EAAE,CAAC,IAAII,EAAEV,EAAE,GAAGlB,EAAEiB,OAAO,EAAE,CAAC,IAAIS,EAAE1B,EAAE,GAAG,GAAG,iBAAiB0B,KAAKA,KAAKkG,KAAK,WAAWlG,EAAE,OAAO3B,EAAE2C,MAAM,2EAA2E,GAAGd,EAAEgG,GAAGlG,GAAGzB,GAAI,MAAM2B,EAAEiO,GAAG,GAAG7P,EAAEiB,OAAO,EAAE,CAAC,GAAG,OAAOjB,EAAE,KAAK,iBAAiBA,EAAE,IAAIA,EAAE,GAAG,GAAGA,EAAE,KAAKyD,KAAKyK,MAAMlO,EAAE,KAAK,OAAOD,EAAE2C,MAAM,oEAAoE,GAAGxB,EAAElB,EAAE,GAAGC,GAAI,CAACU,EAAE+O,GAAG9N,EAAEV,EAAG,MAAMP,EAAEiH,GAAGpG,GAAG,IAAI,IAAIyB,EAAE,GAAGhD,EAAED,EAAEiB,OAAOhB,IAAI,CAAC,IAAImD,EAAErD,EAAEotB,MAAMntB,EAAEC,GAAGA,EAAE4P,IAAI,IAAIzM,EAAE,OAAO,KAAKH,EAAER,KAAKW,EAAG,CAAC,OAAO,IAAI+E,GAAGxH,EAAEsC,EAAE,EAAEkF,GAAG7H,UAAU40gB,SAAS,SAASl1gB,GAAG,IAAI,IAAID,EAAE,EAAEA,EAAEa,KAAKq3C,KAAKh3C,OAAOlB,IAAI,CAAC,IAAIY,EAAEC,KAAKq3C,KAAKl4C,GAAGm1gB,SAASl1gB,GAAG,IAAIgQ,GAAGpP,KAAKuM,KAAKrF,GAAGnH,IAAI,OAAOA,EAAE,GAAGZ,IAAIa,KAAKq3C,KAAKh3C,OAAO,EAAE,MAAM,IAAImH,GAAG,gCAAgCmI,GAAG3P,KAAKuM,MAAM,eAAeoD,GAAGzI,GAAGnH,IAAI,YAAY,CAAC,OAAO,IAAI,EAAEwH,GAAG7H,UAAUy79B,UAAU,SAAS/79B,GAAGY,KAAKq3C,KAAKnyB,QAAQ9lB,EAAG,EAAEmI,GAAG7H,UAAU+33C,cAAc,WAAW,OAAOz33C,KAAKq3C,KAAK5O,OAAM,SAAUrpC,GAAG,OAAOA,EAAEq43C,eAAgB,GAAE,EAAElw3C,GAAG7H,UAAUytsB,UAAU,WAAW,IAAI/tsB,EAAEY,KAAKuM,KAAKpN,EAAE,CAACC,EAAEgjB,MAAM,GAAG,UAAUhjB,EAAEgjB,KAAK,CAAC,IAAIriB,EAAEX,EAAE62E,SAAS,GAAG,WAAWl2E,EAAEqiB,MAAM,WAAWriB,EAAEqiB,MAAM,YAAYriB,EAAEqiB,KAAK,CAACjjB,EAAE0C,KAAK9B,EAAEqiB,MAAM,IAAI/iB,EAAED,EAAE8F,GAAG,iBAAiB7F,GAAGW,KAAKq3C,KAAKh3C,OAAO,IAAIlB,EAAE0C,KAAKxC,EAAG,CAAC,CAAC,OAAOF,EAAE6C,OAAOhC,KAAKq3C,KAAKhoB,KAAI,SAAUjwB,GAAG,OAAOA,EAAE+tsB,WAAY,IAAG,EAAE,IAAI9lsB,GAAG,SAASjI,GAAGY,KAAKuM,KAAKmC,GAAG1O,KAAKu33C,SAASn43C,CAAE,EAAEiI,GAAGklB,MAAM,SAASntB,EAAED,GAAG,GAAGC,EAAEiB,OAAO,EAAE,OAAOlB,EAAE2C,MAAM,mCAAmC,IAAI/B,EAAEX,EAAE,GAAG,IAAIK,MAAMkS,QAAQ5R,IAAI,iBAAiBA,EAAE,OAAOZ,EAAE2C,MAAM,oDAAoD,IAAI,IAAIzC,EAAE,GAAGuB,GAAE,EAAGI,EAAE,EAAEA,GAAG5B,EAAEiB,OAAO,IAAIW,EAAE,CAAC,IAAIV,EAAElB,EAAE4B,GAAG,GAAGJ,GAAG,iBAAiBN,IAAIb,MAAMkS,QAAQrR,GAAG,CAACM,GAAE,EAAG,IAAIE,EAAE,KAAK,GAAGR,EAAE,iBAAiBQ,EAAE3B,EAAEotB,MAAMjsB,EAAE,cAAc,EAAEyN,KAAK,OAAO,KAAK,IAAI1L,EAAE,KAAK,GAAG/B,EAAE,gBAAgB+B,EAAElD,EAAEotB,MAAMjsB,EAAE,aAAa,EAAEwO,GAAGR,MAAM,OAAO,KAAK,IAAI9L,EAAE,KAAK,GAAGlC,EAAE,iBAAiBkC,EAAErD,EAAEotB,MAAMjsB,EAAE,cAAc,EAAE6N,KAAK,OAAO,KAAK,IAAIrL,EAAEzD,EAAEA,EAAEgB,OAAO,GAAGyC,EAAEg/F,MAAMhhG,EAAEgC,EAAEgiP,KAAKziP,EAAES,EAAE8mZ,UAAUpnZ,CAAE,KAAM,CAAC,IAAI3B,EAAE1B,EAAEotB,MAAMntB,EAAE4B,GAAG,EAAEiO,IAAI,IAAIpO,EAAE,OAAO,KAAK,IAAI+B,EAAE/B,EAAE0L,KAAK6V,KAAK,GAAG,WAAWxf,GAAG,UAAUA,GAAG,SAASA,GAAG,kBAAkBA,EAAE,OAAOzD,EAAE2C,MAAM,qEAAqElB,GAAE,EAAGvB,EAAEwC,KAAK,CAAC62F,QAAQ73F,EAAEihG,MAAM,KAAKgjJ,KAAK,KAAK8kK,UAAU,MAAO,CAAC,CAAC,OAAO,IAAIviZ,GAAGhI,EAAE,EAAEgI,GAAG3H,UAAU40gB,SAAS,SAASl1gB,GAAG,OAAO,IAAIuH,GAAG3G,KAAKu33C,SAASlo2C,KAAI,SAAUlwB,GAAG,IAAIY,EAAEZ,EAAEu5F,QAAQ47a,SAASl1gB,GAAG,OAAO8H,GAAGnH,KAAKyO,GAAG,IAAI3H,GAAG,GAAG9G,EAAE,KAAK,KAAK,MAAM,IAAI8G,GAAGM,GAAGpH,GAAG,KAAKZ,EAAE2iG,MAAM3iG,EAAE2iG,MAAMwya,SAASl1gB,GAAG,KAAKD,EAAE2lP,KAAK3lP,EAAE2lP,KAAKwvR,SAASl1gB,GAAGyN,KAAK,KAAK,KAAK1N,EAAEyqZ,UAAUzqZ,EAAEyqZ,UAAU0qH,SAASl1gB,GAAG,KAAM,IAAG,EAAEiI,GAAG3H,UAAUy79B,UAAU,SAAS/79B,GAAG,IAAI,IAAID,EAAE,EAAEY,EAAEC,KAAKu33C,SAASp43C,EAAEY,EAAEM,OAAOlB,GAAG,EAAE,CAAC,IAAIE,EAAEU,EAAEZ,GAAGC,EAAEC,EAAEq5F,SAASr5F,EAAEyiG,OAAO1iG,EAAEC,EAAEyiG,OAAOziG,EAAEylP,MAAM1lP,EAAEC,EAAEylP,MAAMzlP,EAAEuqZ,WAAWxqZ,EAAEC,EAAEuqZ,UAAW,CAAC,EAAEviZ,GAAG3H,UAAU+33C,cAAc,WAAW,OAAO,CAAE,EAAEpw3C,GAAG3H,UAAUytsB,UAAU,WAAW,IAAI,IAAI/tsB,EAAE,CAAC,UAAUD,EAAE,EAAEY,EAAEC,KAAKu33C,SAASp43C,EAAEY,EAAEM,OAAOlB,GAAG,EAAE,CAAC,IAAIE,EAAEU,EAAEZ,GAAGC,EAAEyC,KAAKxC,EAAEq5F,QAAQy0mB,aAAa,IAAIvssB,EAAE,CAAC,EAAEvB,EAAEyiG,QAAQlhG,EAAE,cAAcvB,EAAEyiG,MAAMqrmB,aAAa9tsB,EAAEylP,OAAOlkP,EAAE,aAAavB,EAAEylP,KAAKqod,aAAa9tsB,EAAEuqZ,YAAYhpZ,EAAE,cAAcvB,EAAEuqZ,UAAUujT,aAAa/tsB,EAAEyC,KAAKjB,EAAG,CAAC,OAAOxB,CAAC,EAAE,IAAIqI,GAAG,SAASrI,GAAGY,KAAKuM,KAAKiC,GAAGxO,KAAKywD,MAAMrxD,CAAE,EAAEqI,GAAG8kB,MAAM,SAASntB,EAAED,GAAG,GAAG,IAAIC,EAAEiB,OAAO,OAAOlB,EAAE2C,MAAM,2BAA2B,IAAI/B,EAAEZ,EAAEotB,MAAMntB,EAAE,GAAG,EAAEkP,IAAI,OAAOvO,EAAE,IAAI0H,GAAG1H,GAAGZ,EAAE2C,MAAM,0BAA0B,EAAE2F,GAAG/H,UAAU40gB,SAAS,SAASl1gB,GAAG,IAAID,EAAEa,KAAKywD,MAAM6jd,SAASl1gB,GAAGW,EAAEgH,GAAGwnN,WAAWpvN,GAAG,OAAOY,GAAGX,EAAEs43C,kBAAkB333C,EAAEkl5B,UAAU7l5B,EAAEs43C,gBAAgBl33C,QAAQrB,IAAI,GAAGY,CAAC,EAAE0H,GAAG/H,UAAUy79B,UAAU,SAAS/79B,GAAGA,EAAEY,KAAKywD,MAAO,EAAEhpD,GAAG/H,UAAU+33C,cAAc,WAAW,OAAO,CAAE,EAAEhw3C,GAAG/H,UAAUytsB,UAAU,WAAW,MAAO,CAAC,QAAQntsB,KAAKywD,MAAM08oB,YAAY,EAAE,IAAI7lsB,GAAG,CAAC,aAAa6H,GAAG,WAAWhB,GAAG,YAAYJ,GAAG,YAAYO,IAAIvG,GAAG,SAAS3I,EAAED,GAAGa,KAAKuM,KAAKnN,EAAEY,KAAKq3C,KAAKl4C,CAAE,EAAE4I,GAAGwkB,MAAM,SAASntB,EAAED,GAAG,GAAGC,EAAEiB,OAAO,EAAE,OAAOlB,EAAE2C,MAAM,mCAAmC,IAAI/B,EAAEX,EAAE,GAAG,IAAI,eAAeW,GAAG,cAAcA,IAAI,IAAIX,EAAEiB,OAAO,OAAOlB,EAAE2C,MAAM,0BAA0B,IAAI,IAAIzC,EAAEiI,GAAGvH,GAAGa,EAAE,GAAGI,EAAE,EAAEA,EAAE5B,EAAEiB,OAAOW,IAAI,CAAC,IAAIV,EAAEnB,EAAEotB,MAAMntB,EAAE4B,GAAGA,EAAEiO,IAAI,IAAI3O,EAAE,OAAO,KAAKM,EAAEiB,KAAKvB,EAAG,CAAC,OAAO,IAAIyH,GAAG1I,EAAEuB,EAAE,EAAEmH,GAAGrI,UAAU40gB,SAAS,SAASl1gB,GAAG,GAAG,YAAYY,KAAKuM,KAAK6V,KAAK,OAAOnP,QAAQjT,KAAKq3C,KAAK,GAAGi9d,SAASl1gB,IAAI,GAAG,UAAUY,KAAKuM,KAAK6V,KAAK,CAAC,IAAI,IAAIjjB,EAAEY,EAAEV,EAAE,EAAEuB,EAAEZ,KAAKq3C,KAAKh4C,EAAEuB,EAAEP,OAAOhB,GAAG,EAAE,CAAC,GAAGU,EAAE,MAAMZ,EAAEyB,EAAEvB,GAAGi1gB,SAASl1gB,cAAcsH,GAAG,OAAOvH,EAAE,GAAG,iBAAiBA,EAAE,CAAC,IAAI6B,EAAE5B,EAAEu43C,WAAWx43C,GAAG,GAAG6B,EAAE,OAAOA,CAAC,MAAM,GAAGvB,MAAMkS,QAAQxS,MAAMY,EAAEZ,EAAEkB,OAAO,GAAGlB,EAAEkB,OAAO,EAAE,sBAAsBia,KAAKb,UAAUta,GAAG,sEAAsE8H,GAAG9H,EAAE,GAAGA,EAAE,GAAGA,EAAE,GAAGA,EAAE,KAAK,OAAO,IAAIuH,GAAGvH,EAAE,GAAG,IAAIA,EAAE,GAAG,IAAIA,EAAE,GAAG,IAAIA,EAAE,GAAG,CAAC,MAAM,IAAIqI,GAAGzH,GAAG,sCAAsC,iBAAiBZ,EAAEA,EAAEW,OAAOwa,KAAKb,UAAUta,KAAK,IAAI,CAAC,GAAG,WAAWa,KAAKuM,KAAK6V,KAAK,CAAC,IAAI,IAAI9hB,EAAE,KAAKQ,EAAE,EAAEuB,EAAErC,KAAKq3C,KAAKv2C,EAAEuB,EAAEhC,OAAOS,GAAG,EAAE,CAAC,GAAG,QAAQR,EAAE+B,EAAEvB,GAAGwzgB,SAASl1gB,IAAI,OAAO,EAAE,IAAIoD,EAAE2iC,OAAO7kC,GAAG,IAAIgsC,MAAM9pC,GAAG,OAAOA,CAAC,CAAC,MAAM,IAAIgF,GAAG,qBAAqB8S,KAAKb,UAAUnZ,GAAG,cAAc,CAAC,MAAO,cAAcN,KAAKuM,KAAK6V,KAAKzb,GAAG4nN,WAAWpnN,GAAGnH,KAAKq3C,KAAK,GAAGi9d,SAASl1gB,KAAK,kBAAkBY,KAAKuM,KAAK6V,KAAKrb,GAAGwnN,WAAWpnN,GAAGnH,KAAKq3C,KAAK,GAAGi9d,SAASl1gB,KAAK+H,GAAGnH,KAAKq3C,KAAK,GAAGi9d,SAASl1gB,GAAG,EAAE2I,GAAGrI,UAAUy79B,UAAU,SAAS/79B,GAAGY,KAAKq3C,KAAKnyB,QAAQ9lB,EAAG,EAAE2I,GAAGrI,UAAU+33C,cAAc,WAAW,OAAOz33C,KAAKq3C,KAAK5O,OAAM,SAAUrpC,GAAG,OAAOA,EAAEq43C,eAAgB,GAAE,EAAE1v3C,GAAGrI,UAAUytsB,UAAU,WAAW,GAAG,cAAcntsB,KAAKuM,KAAK6V,KAAK,OAAO,IAAI/a,GAAG,CAAC,CAACqxF,QAAQ14F,KAAKq3C,KAAK,GAAGyqD,MAAM,KAAKgjJ,KAAK,KAAK8kK,UAAU,QAAQujT,YAAY,GAAG,kBAAkBntsB,KAAKuM,KAAK6V,KAAK,OAAO,IAAI3a,GAAGzH,KAAKq3C,KAAK,IAAI81pB,YAAY,IAAI/tsB,EAAE,CAAC,MAAMY,KAAKuM,KAAK6V,MAAM,OAAOpiB,KAAKm79B,WAAU,SAAUh89B,GAAGC,EAAEyC,KAAK1C,EAAEgusB,YAAc,IAAG/tsB,CAAC,EAAE,IAAI0I,GAAG,CAAC,UAAU,QAAQ,aAAa,WAAWG,GAAG,WAAWjI,KAAKwgS,QAAQ,KAAKxgS,KAAKmyE,QAAQ,KAAKnyE,KAAK433C,aAAa,KAAK533C,KAAK633C,iBAAiB,KAAK733C,KAAK833C,iBAAiB,CAAC,EAAE933C,KAAK033C,gBAAgB,KAAK133C,KAAK+33C,UAAU,IAAK,EAAE9v3C,GAAGvI,UAAU6rB,GAAG,WAAW,OAAOvrB,KAAKmyE,SAAS,OAAOnyE,KAAKmyE,QAAQnyE,KAAKmyE,QAAQ5mD,GAAG,IAAI,EAAEtjB,GAAGvI,UAAUs43C,aAAa,WAAW,OAAOh43C,KAAKmyE,QAAQ,iBAAiBnyE,KAAKmyE,QAAQ5lE,KAAKzE,GAAG9H,KAAKmyE,QAAQ5lE,MAAMvM,KAAKmyE,QAAQ5lE,KAAK,IAAI,EAAEtE,GAAGvI,UAAUqlC,SAAS,WAAW,OAAO/kC,KAAKmyE,SAAS,aAAanyE,KAAKmyE,QAAQnyE,KAAKmyE,QAAQptC,SAAS,IAAI,EAAE98B,GAAGvI,UAAUu43C,YAAY,WAAW,OAAOj43C,KAAK+33C,SAAS,EAAE9v3C,GAAGvI,UAAU8oC,WAAW,WAAW,OAAOxoC,KAAKmyE,SAASnyE,KAAKmyE,QAAQ3pC,YAAY,CAAC,CAAC,EAAEvgC,GAAGvI,UAAUi43C,WAAW,SAASv43C,GAAG,IAAID,EAAEa,KAAK833C,iBAAiB143C,GAAG,OAAOD,IAAIA,EAAEa,KAAK833C,iBAAiB143C,GAAGsH,GAAG6lB,MAAMntB,IAAID,CAAC,EAAE,IAAIuJ,GAAG,SAAStJ,EAAED,EAAEY,EAAEV,GAAGW,KAAK0K,KAAKtL,EAAEY,KAAKuM,KAAKpN,EAAEa,KAAKk43C,UAAUn43C,EAAEC,KAAKq3C,KAAKh4C,CAAE,EAAEqJ,GAAGhJ,UAAU40gB,SAAS,SAASl1gB,GAAG,OAAOY,KAAKk43C,UAAU943C,EAAEY,KAAKq3C,KAAK,EAAE3uC,GAAGhJ,UAAUy79B,UAAU,SAAS/79B,GAAGY,KAAKq3C,KAAKnyB,QAAQ9lB,EAAG,EAAEsJ,GAAGhJ,UAAU+33C,cAAc,WAAW,OAAO,CAAE,EAAE/u3C,GAAGhJ,UAAUytsB,UAAU,WAAW,MAAO,CAACntsB,KAAK0K,MAAM1I,OAAOhC,KAAKq3C,KAAKhoB,KAAI,SAAUjwB,GAAG,OAAOA,EAAE+tsB,WAAY,IAAG,EAAEzksB,GAAG6jB,MAAM,SAASntB,EAAED,GAAG,IAAIY,EAAEV,EAAED,EAAE,GAAGwB,EAAE8H,GAAGyv3C,YAAY943C,GAAG,IAAIuB,EAAE,OAAOzB,EAAE2C,MAAM,uBAAuBzC,EAAE,4DAA4D,GAAG,IAAI,IAAI2B,EAAEvB,MAAMkS,QAAQ/Q,GAAGA,EAAE,GAAGA,EAAE2L,KAAKjM,EAAEb,MAAMkS,QAAQ/Q,GAAG,CAAC,CAACA,EAAE,GAAGA,EAAE,KAAKA,EAAEw33C,UAAUt33C,EAAER,EAAEusB,QAAO,SAAU1tB,GAAG,IAAIY,EAAEZ,EAAE,GAAG,OAAQM,MAAMkS,QAAQ5R,IAAIA,EAAEM,SAASjB,EAAEiB,OAAO,CAAE,IAAGgC,EAAE,KAAKG,EAAE,EAAEM,EAAEhC,EAAE0B,EAAEM,EAAEzC,OAAOmC,GAAG,EAAE,CAAC,IAAI3B,EAAEiC,EAAEN,GAAGI,EAAE/B,EAAE,GAAG6B,EAAE7B,EAAE,GAAGwB,EAAE,IAAI0G,GAAG5J,EAAEoyrB,SAASpyrB,EAAEk3B,KAAK,KAAKl3B,EAAEivB,OAAO,IAAI,IAAIprB,EAAE,GAAGL,GAAE,EAAGS,EAAE,EAAEA,EAAEhE,EAAEiB,OAAO+C,IAAI,CAAC,IAAIH,EAAE7D,EAAEgE,GAAGjB,EAAE1C,MAAMkS,QAAQ/O,GAAGA,EAAEQ,EAAE,GAAGR,EAAE2J,KAAKtI,EAAE5B,EAAEkqB,MAAMtpB,EAAE,EAAED,EAAE3C,OAAO8B,GAAG,IAAI8B,EAAE,CAACtB,GAAE,EAAG,KAAK,CAACK,EAAEnB,KAAKoC,EAAG,CAAC,IAAItB,EAAE,GAAGlD,MAAMkS,QAAQ/O,IAAIA,EAAEvC,SAAS2C,EAAE3C,OAAOgC,EAAEP,MAAM,YAAYc,EAAEvC,OAAO,yBAAyB2C,EAAE3C,OAAO,iBAAkB,CAAC,IAAI,IAAIiD,EAAE,EAAEA,EAAEN,EAAE3C,OAAOiD,IAAI,CAAC,IAAIC,EAAE9D,MAAMkS,QAAQ/O,GAAGA,EAAEU,GAAGV,EAAE2J,KAAK3I,EAAEZ,EAAEM,GAAGjB,EAAEL,OAAOsB,EAAE,GAAG+03C,aAAa903C,EAAEK,EAAE2I,KAAM,CAAC,GAAG,IAAIlK,EAAE4oV,OAAO5qV,OAAO,OAAO,IAAIqI,GAAGrJ,EAAE2B,EAAE0B,EAAEM,EAAE,CAAC,CAAC,GAAG,IAAIlC,EAAET,QAAQN,EAAEZ,EAAE8rV,QAAQppV,KAAKtB,MAAMR,EAAEsC,EAAE4oV,YAAa,CAAC,IAAI,IAAIpmV,GAAG/D,EAAET,OAAOS,EAAER,GAAG+uB,KAAI,SAAUjwB,GAAG,IAAID,EAAE,OAAOA,EAAEC,EAAE,GAAGK,MAAMkS,QAAQxS,GAAG,IAAIA,EAAEkwB,IAAI1f,IAAI9C,KAAK,MAAM,IAAI,IAAI8C,GAAGxQ,EAAEoN,MAAM,MAAO,IAAGM,KAAK,OAAOrJ,EAAE,GAAGE,EAAE,EAAEA,EAAEtE,EAAEiB,OAAOqD,IAAI,CAAC,IAAIG,EAAE1E,EAAEotB,MAAMntB,EAAEsE,GAAG,EAAEF,EAAEnD,QAAQ,IAAIwD,EAAE,OAAO,KAAKL,EAAE3B,KAAK8N,GAAG9L,EAAE0I,MAAO,CAACpN,EAAE2C,MAAM,8BAA8B+C,EAAE,gBAAgBrB,EAAEqJ,KAAK,MAAM,aAAc,CAAC,OAAO,IAAI,EAAEnE,GAAGoiG,SAAS,SAAS1rG,EAAED,GAAG,IAAI,IAAIY,KAAK2I,GAAGyv3C,YAAYh53C,EAAEA,EAAEC,EAAEW,GAAG2I,EAAG,EAAE,IAAIV,GAAG,SAAS5I,EAAED,EAAEY,GAAGC,KAAKuM,KAAKyC,GAAGhP,KAAK6sc,OAAO9sc,EAAEC,KAAKgoC,cAAc5oC,EAAEY,KAAKs43C,mBAAmBn53C,CAAE,EAAE,SAASgJ,GAAG/I,EAAED,GAAGC,EAAE,GAAGyD,KAAKgL,IAAIzO,EAAE,GAAGD,EAAE,IAAIC,EAAE,GAAGyD,KAAKgL,IAAIzO,EAAE,GAAGD,EAAE,IAAIC,EAAE,GAAGyD,KAAK8K,IAAIvO,EAAE,GAAGD,EAAE,IAAIC,EAAE,GAAGyD,KAAK8K,IAAIvO,EAAE,GAAGD,EAAE,GAAI,CAAC,SAASoJ,GAAGnJ,EAAED,GAAG,QAASC,EAAE,IAAID,EAAE,IAAIC,EAAE,IAAID,EAAE,IAAIC,EAAE,IAAID,EAAE,IAAIC,EAAE,IAAID,EAAE,GAAG,CAAC,SAASqK,GAAGpK,EAAED,GAAG,IAAIY,GAAG,IAAIX,EAAE,IAAI,IAAIC,GAAG,IAAI,IAAIwD,KAAKsmC,GAAGtmC,KAAKwnB,IAAIxnB,KAAKinC,IAAIjnC,KAAKsmC,GAAG,EAAE/pC,EAAE,GAAGyD,KAAKsmC,GAAG,OAAO,IAAIvoC,EAAEiC,KAAK6yF,IAAI,EAAEv2F,EAAEwG,GAAG,MAAO,CAAC9C,KAAKogD,MAAMljD,EAAEa,EAAE,MAAMiC,KAAKogD,MAAM5jD,EAAEuB,EAAE,MAAM,CAAC,SAASwH,GAAGhJ,EAAED,EAAEY,GAAG,OAAOZ,EAAE,GAAGC,EAAE,IAAIW,EAAE,GAAGX,EAAE,IAAIA,EAAE,IAAIW,EAAE,GAAGZ,EAAE,KAAKC,EAAE,GAAGD,EAAE,KAAKY,EAAE,GAAGZ,EAAE,IAAIA,EAAE,EAAE,CAAC,SAASmJ,GAAGlJ,EAAED,GAAG,IAAI,IAAIY,EAAEV,EAAEuB,EAAEI,EAAEV,EAAEQ,EAAEuB,EAAEG,GAAE,EAAGM,EAAE,EAAEjC,EAAE1B,EAAEkB,OAAOyC,EAAEjC,EAAEiC,IAAI,IAAI,IAAIF,EAAEzD,EAAE2D,GAAGJ,EAAE,EAAEM,EAAEJ,EAAEvC,OAAOqC,EAAEM,EAAE,EAAEN,IAAI,CAAC,IAAI1B,GAAGjB,EAAEX,GAAG,IAAIC,EAAEuD,EAAEF,IAAI,KAAKL,EAAEtC,EAAE,IAAIa,EAAEgC,EAAEF,EAAE,IAAI,KAAK5B,EAAEf,EAAE,GAAGa,EAAE,KAAKN,EAAEP,EAAE,GAAGV,EAAE,KAAK,GAAG2B,EAAEF,GAAG,GAAGR,EAAE+B,GAAG,EAAE,OAAO,EAAG+F,GAAGhJ,EAAEwD,EAAEF,GAAGE,EAAEF,EAAE,MAAMF,GAAGA,EAAG,CAAC,OAAOA,CAAC,CAAC,SAASgG,GAAGpJ,EAAED,GAAG,IAAI,IAAIY,EAAE,EAAEA,EAAEZ,EAAEkB,OAAON,IAAI,GAAGuI,GAAGlJ,EAAED,EAAEY,IAAI,OAAO,EAAG,OAAO,CAAE,CAAC,SAASqK,GAAGhL,EAAED,EAAEY,EAAEV,GAAG,IAAIuB,EAAEvB,EAAE,GAAGU,EAAE,GAAGiB,EAAE3B,EAAE,GAAGU,EAAE,GAAGO,GAAGlB,EAAE,GAAGW,EAAE,IAAIiB,EAAEJ,GAAGxB,EAAE,GAAGW,EAAE,IAAIe,GAAG3B,EAAE,GAAGY,EAAE,IAAIiB,EAAEJ,GAAGzB,EAAE,GAAGY,EAAE,IAAI,OAAOO,EAAE,GAAGQ,EAAE,GAAGR,EAAE,GAAGQ,EAAE,CAAC,CAAC,SAASgI,GAAG1J,EAAED,EAAEY,GAAG,IAAI,IAAIV,EAAE,EAAEuB,EAAEb,EAAEV,EAAEuB,EAAEP,OAAOhB,GAAG,EAAE,IAAI,IAAI2B,EAAEJ,EAAEvB,GAAGiB,EAAE,EAAEA,EAAEU,EAAEX,OAAO,IAAIC,EAAE,GAAG,IAAIO,EAAE,EAAEiC,EAAE9B,EAAEV,EAAE,IAAI,IAAIkC,EAAExB,EAAEV,IAAI,GAAGwC,EAAE,GAAGN,EAAE,KAAK,IAAII,EAAE,EAAEP,EAAElD,GAAG,IAAI2B,EAAE1B,GAAG,GAAGiD,EAAE,GAAGvB,EAAE,KAAK,GAAGD,EAAE,GAAG+B,EAAE,IAAIwH,GAAGtJ,EAAEuB,EAAEG,EAAEM,IAAIsH,GAAG5H,EAAEM,EAAEhC,EAAEuB,GAAG,OAAO,EAAG,IAAIvB,EAAEuB,EAAEG,EAAEM,EAAEjC,EAAE+B,EAAE,OAAO,CAAE,CAAC,SAASyG,GAAGjK,EAAED,GAAG,IAAI,IAAIY,EAAE,EAAEA,EAAEX,EAAEiB,SAASN,EAAE,IAAIuI,GAAGlJ,EAAEW,GAAGZ,GAAG,OAAO,EAAG,IAAI,IAAIE,EAAE,EAAEA,EAAED,EAAEiB,OAAO,IAAIhB,EAAE,GAAGyJ,GAAG1J,EAAEC,GAAGD,EAAEC,EAAE,GAAGF,GAAG,OAAO,EAAG,OAAO,CAAE,CAAC,SAASsK,GAAGrK,EAAED,GAAG,IAAI,IAAIY,EAAE,EAAEA,EAAEZ,EAAEkB,OAAON,IAAI,GAAGsJ,GAAGjK,EAAED,EAAEY,IAAI,OAAO,EAAG,OAAO,CAAE,CAAC,SAASsK,GAAGjL,EAAED,EAAEY,GAAG,IAAI,IAAIV,EAAE,GAAGuB,EAAE,EAAEA,EAAExB,EAAEiB,OAAOO,IAAI,CAAC,IAAI,IAAII,EAAE,GAAGV,EAAE,EAAEA,EAAElB,EAAEwB,GAAGP,OAAOC,IAAI,CAAC,IAAIQ,EAAE0I,GAAGpK,EAAEwB,GAAGN,GAAGP,GAAGoI,GAAGhJ,EAAE2B,GAAGE,EAAEa,KAAKf,EAAG,CAACzB,EAAEwC,KAAKb,EAAG,CAAC,OAAO3B,CAAC,CAAC,SAASiL,GAAGlL,EAAED,EAAEY,GAAG,IAAI,IAAIV,EAAE,GAAGuB,EAAE,EAAEA,EAAExB,EAAEiB,OAAOO,IAAI,CAAC,IAAII,EAAEqJ,GAAGjL,EAAEwB,GAAGzB,EAAEY,GAAGV,EAAEwC,KAAKb,EAAG,CAAC,OAAO3B,CAAC,CAAC,SAASuJ,GAAGxJ,EAAED,EAAEY,EAAEV,GAAG,GAAGD,EAAE,GAAGW,EAAE,IAAIX,EAAE,GAAGW,EAAE,GAAG,CAAC,IAAIa,EAAE,GAAGvB,EAAE2B,EAAE5B,EAAE,GAAGW,EAAE,GAAGa,GAAGvB,EAAEU,EAAE,GAAGX,EAAE,GAAGwB,EAAEvB,EAAE,EAAE,IAAI2B,IAAIA,EAAE5B,EAAE,GAAGW,EAAE,GAAGa,GAAGvB,EAAEU,EAAE,GAAGX,EAAE,GAAGwB,EAAEvB,EAAE,GAAGD,EAAE,IAAI4B,CAAE,CAACmH,GAAGhJ,EAAEC,EAAG,CAAC,SAAS+K,GAAG/K,EAAED,EAAEY,EAAEV,GAAG,IAAI,IAAIuB,EAAE,KAAKiC,KAAK6yF,IAAI,EAAEr2F,EAAEsG,GAAG3E,EAAE,CAAC,KAAK3B,EAAE4E,EAAE,KAAK5E,EAAE2D,GAAG1C,EAAE,GAAGQ,EAAE,EAAEuB,EAAEjD,EAAE0B,EAAEuB,EAAEhC,OAAOS,GAAG,EAAE,IAAI,IAAI0B,EAAE,EAAEM,EAAET,EAAEvB,GAAG0B,EAAEM,EAAEzC,OAAOmC,GAAG,EAAE,CAAC,IAAI3B,EAAEiC,EAAEN,GAAGI,EAAE,CAAC/B,EAAEoD,EAAEjD,EAAE,GAAGH,EAAEmC,EAAEhC,EAAE,IAAI4H,GAAGhG,EAAEzD,EAAEY,EAAEa,GAAGN,EAAEuB,KAAKe,EAAG,CAAC,OAAOtC,CAAC,CAAC,SAASqJ,GAAGvK,EAAED,EAAEY,EAAEV,GAAG,IAAI,IAAIuB,EAAEI,EAAE,KAAK6B,KAAK6yF,IAAI,EAAEr2F,EAAEsG,GAAGrF,EAAE,CAAC,KAAKjB,EAAE4E,EAAE,KAAK5E,EAAE2D,GAAGlC,EAAE,GAAGuB,EAAE,EAAEG,EAAEpD,EAAEiD,EAAEG,EAAEnC,OAAOgC,GAAG,EAAE,CAAC,IAAI,IAAIS,EAAE,GAAGjC,EAAE,EAAE+B,EAAEJ,EAAEH,GAAGxB,EAAE+B,EAAEvC,OAAOQ,GAAG,EAAE,CAAC,IAAI6B,EAAEE,EAAE/B,GAAGmC,EAAE,CAACN,EAAEuB,EAAE3D,EAAE,GAAGoC,EAAEM,EAAE1C,EAAE,IAAI6H,GAAGhJ,EAAE6D,GAAGF,EAAEjB,KAAKmB,EAAG,CAAClC,EAAEe,KAAKiB,EAAG,CAAC,GAAG3D,EAAE,GAAGA,EAAE,IAAI6B,EAAE,EAAE,EAAEJ,EAAEzB,GAAG,GAAGyB,EAAE,GAAG,IAAIA,EAAE,GAAGA,EAAE,IAAG,IAAK,IAAI,IAAI+B,EAAE,EAAES,EAAEtC,EAAE6B,EAAES,EAAE/C,OAAOsC,GAAG,EAAE,IAAI,IAAIM,EAAE,EAAEd,EAAEiB,EAAET,GAAGM,EAAEd,EAAE9B,OAAO4C,GAAG,EAAE2F,GAAGzG,EAAEc,GAAG9D,EAAEY,EAAEiB,EAAG,CAAC,OAAOF,CAAC,CAACkH,GAAGukB,MAAM,SAASntB,EAAED,GAAG,GAAG,IAAIC,EAAEiB,OAAO,OAAOlB,EAAE2C,MAAM,0BAA0B,IAAI/B,EAAEX,EAAE,GAAG,GAAG,iBAAiBW,GAAGN,MAAMkS,QAAQ5R,GAAG,OAAOZ,EAAE2C,MAAM,gDAAgD,IAAIzC,EAAEF,EAAEotB,WAAM,IAASxsB,EAAE,mBAAmBA,EAAE,kBAAkB,EAAEoP,IAAI,IAAI9P,EAAE,OAAO,KAAK,IAAIuB,EAAEzB,EAAEotB,WAAM,IAASxsB,EAAE,wBAAwBA,EAAE,uBAAuB,EAAEoP,IAAI,IAAIvO,EAAE,OAAO,KAAK,IAAII,EAAE,KAAK,OAAOjB,EAAE8sc,UAAU7rc,EAAE7B,EAAEotB,MAAMxsB,EAAE8sc,OAAO,EAAEv+b,KAAK,KAAK,IAAItG,GAAG3I,EAAEuB,EAAEI,EAAE,EAAEgH,GAAGtI,UAAU40gB,SAAS,SAASl1gB,GAAG,OAAO,IAAImH,GAAGvG,KAAKgoC,cAAcsse,SAASl1gB,GAAGY,KAAKs43C,mBAAmBhk3B,SAASl1gB,GAAGY,KAAK6sc,OAAO7sc,KAAK6sc,OAAOynE,SAASl1gB,GAAG,KAAK,EAAE4I,GAAGtI,UAAUy79B,UAAU,SAAS/79B,GAAGA,EAAEY,KAAKgoC,eAAe5oC,EAAEY,KAAKs43C,oBAAoBt43C,KAAK6sc,QAAQztc,EAAEY,KAAK6sc,OAAQ,EAAE7kc,GAAGtI,UAAU+33C,cAAc,WAAW,OAAO,CAAE,EAAEzv3C,GAAGtI,UAAUytsB,UAAU,WAAW,IAAI/tsB,EAAE,CAAC,EAAE,OAAOA,EAAE,kBAAkBY,KAAKgoC,cAAcmlqB,YAAY/tsB,EAAE,uBAAuBY,KAAKs43C,mBAAmBnrrB,YAAYntsB,KAAK6sc,SAASztc,EAAEytc,OAAO7sc,KAAK6sc,OAAOsgQ,aAAa,CAAC,WAAW/tsB,EAAE,EAAE,IAAI2K,GAAG,SAAS3K,EAAED,GAAGa,KAAKuM,KAAK4C,GAAGnP,KAAKyrC,QAAQrsC,EAAEY,KAAKi0O,WAAW90O,CAAE,EAAE,SAAS6J,GAAG5J,GAAG,GAAGA,aAAasJ,GAAG,CAAC,GAAG,QAAQtJ,EAAEsL,MAAM,IAAItL,EAAEi4C,KAAKh3C,OAAO,OAAO,EAAG,GAAG,kBAAkBjB,EAAEsL,KAAK,OAAO,EAAG,GAAG,QAAQtL,EAAEsL,MAAM,IAAItL,EAAEi4C,KAAKh3C,OAAO,OAAO,EAAG,GAAG,eAAejB,EAAEsL,MAAM,kBAAkBtL,EAAEsL,MAAM,OAAOtL,EAAEsL,KAAK,OAAO,EAAG,GAAG,WAAWW,KAAKjM,EAAEsL,MAAM,OAAO,CAAE,CAAC,GAAGtL,aAAa2K,GAAG,OAAO,EAAG,IAAI5K,GAAE,EAAG,OAAOC,EAAE+79B,WAAU,SAAU/79B,GAAGD,IAAI6J,GAAG5J,KAAKD,GAAE,EAAK,IAAGA,CAAC,CAAC,SAASsJ,GAAGrJ,GAAG,GAAGA,aAAasJ,IAAI,kBAAkBtJ,EAAEsL,KAAK,OAAO,EAAG,IAAIvL,GAAE,EAAG,OAAOC,EAAE+79B,WAAU,SAAU/79B,GAAGD,IAAIsJ,GAAGrJ,KAAKD,GAAE,EAAK,IAAGA,CAAC,CAAC,SAASgK,GAAG/J,EAAED,GAAG,GAAGC,aAAasJ,IAAIvJ,EAAEqB,QAAQpB,EAAEsL,OAAO,EAAE,OAAO,EAAG,IAAI3K,GAAE,EAAG,OAAOX,EAAE+79B,WAAU,SAAU/79B,GAAGW,IAAIoJ,GAAG/J,EAAED,KAAKY,GAAE,EAAK,IAAGA,CAAC,CAACgK,GAAGwiB,MAAM,SAASntB,EAAED,GAAG,GAAG,IAAIC,EAAEiB,OAAO,OAAOlB,EAAE2C,MAAM,iEAAiE1C,EAAEiB,OAAO,GAAG,aAAa,GAAGyG,GAAG1H,EAAE,IAAI,CAAC,IAAIW,EAAEX,EAAE,GAAG,GAAG,sBAAsBW,EAAEwM,KAAK,IAAI,IAAIlN,EAAE,EAAEA,EAAEU,EAAE2rC,SAASrrC,SAAShB,EAAE,CAAC,IAAIuB,EAAEb,EAAE2rC,SAASrsC,GAAG0lC,SAASx4B,KAAK,GAAG,YAAY3L,GAAG,iBAAiBA,EAAE,OAAO,IAAImJ,GAAGhK,EAAEA,EAAE2rC,SAASrsC,GAAG0lC,SAAS,MAAM,GAAG,YAAYhlC,EAAEwM,KAAK,CAAC,IAAIvL,EAAEjB,EAAEglC,SAASx4B,KAAK,GAAG,YAAYvL,GAAG,iBAAiBA,EAAE,OAAO,IAAI+I,GAAGhK,EAAEA,EAAEglC,SAAS,MAAM,GAAG,YAAYhlC,EAAEwM,MAAM,iBAAiBxM,EAAEwM,KAAK,OAAO,IAAIxC,GAAGhK,EAAEA,EAAE,CAAC,OAAOZ,EAAE2C,MAAM,yFAAyF,EAAEiI,GAAGrK,UAAU40gB,SAAS,SAASl1gB,GAAG,GAAG,MAAMA,EAAE2lC,YAAY,MAAM3lC,EAAE643C,cAAc,CAAC,GAAG,UAAU743C,EAAE443C,eAAe,OAAO,SAAS543C,EAAED,GAAG,IAAIY,EAAE,CAAC,IAAI,KAAI,KAAK,KAAMV,EAAE,CAAC,IAAI,KAAI,KAAK,KAAMuB,EAAExB,EAAE643C,cAAc,GAAG,YAAY943C,EAAEoN,KAAK,CAAC,IAAIvL,EAAEqJ,GAAGlL,EAAE2lC,YAAYzlC,EAAEuB,GAAGN,EAAE6J,GAAG/K,EAAE2lC,WAAWhlC,EAAEV,EAAEuB,GAAG,IAAI2H,GAAGxI,EAAEV,GAAG,OAAO,EAAG,IAAI,IAAIyB,EAAE,EAAEuB,EAAE/B,EAAEQ,EAAEuB,EAAEhC,OAAOS,GAAG,EAAE,IAAIwH,GAAGjG,EAAEvB,GAAGE,GAAG,OAAO,CAAE,CAAC,GAAG,iBAAiB7B,EAAEoN,KAAK,CAAC,IAAI/J,EAAE8H,GAAGnL,EAAE2lC,YAAYzlC,EAAEuB,GAAGkC,EAAEqH,GAAG/K,EAAE2lC,WAAWhlC,EAAEV,EAAEuB,GAAG,IAAI2H,GAAGxI,EAAEV,GAAG,OAAO,EAAG,IAAI,IAAIwB,EAAE,EAAE+B,EAAEE,EAAEjC,EAAE+B,EAAEvC,OAAOQ,GAAG,EAAE,IAAI2H,GAAG5F,EAAE/B,GAAG2B,GAAG,OAAO,CAAE,CAAC,OAAO,CAAE,CAApZ,CAAsZpD,EAAEY,KAAKi0O,YAAY,GAAG,eAAe70O,EAAE443C,eAAe,OAAO,SAAS543C,EAAED,GAAG,IAAIY,EAAE,CAAC,IAAI,KAAI,KAAK,KAAMV,EAAE,CAAC,IAAI,KAAI,KAAK,KAAMuB,EAAExB,EAAE643C,cAAc,GAAG,YAAY943C,EAAEoN,KAAK,CAAC,IAAIvL,EAAEqJ,GAAGlL,EAAE2lC,YAAYzlC,EAAEuB,GAAGN,EAAEqJ,GAAGvK,EAAE2lC,WAAWhlC,EAAEV,EAAEuB,GAAG,IAAI2H,GAAGxI,EAAEV,GAAG,OAAO,EAAG,IAAI,IAAIyB,EAAE,EAAEuB,EAAE/B,EAAEQ,EAAEuB,EAAEhC,OAAOS,GAAG,EAAE,IAAIuI,GAAGhH,EAAEvB,GAAGE,GAAG,OAAO,CAAE,CAAC,GAAG,iBAAiB7B,EAAEoN,KAAK,CAAC,IAAI/J,EAAE8H,GAAGnL,EAAE2lC,YAAYzlC,EAAEuB,GAAGkC,EAAE6G,GAAGvK,EAAE2lC,WAAWhlC,EAAEV,EAAEuB,GAAG,IAAI2H,GAAGxI,EAAEV,GAAG,OAAO,EAAG,IAAI,IAAIwB,EAAE,EAAE+B,EAAEE,EAAEjC,EAAE+B,EAAEvC,OAAOQ,GAAG,EAAE,IAAI4I,GAAG7G,EAAE/B,GAAG2B,GAAG,OAAO,CAAE,CAAC,OAAO,CAAE,CAApZ,CAAsZpD,EAAEY,KAAKi0O,WAAW,CAAC,OAAO,CAAE,EAAElqO,GAAGrK,UAAUy79B,UAAU,WAAW,EAAEpx9B,GAAGrK,UAAU+33C,cAAc,WAAW,OAAO,CAAE,EAAE1t3C,GAAGrK,UAAUytsB,UAAU,WAAW,MAAO,CAAC,SAASntsB,KAAKyrC,QAAQ,EAAE,IAAI3hC,GAAG,SAAS1K,EAAED,GAAGa,KAAKuM,KAAKpN,EAAEoN,KAAKvM,KAAK0K,KAAKtL,EAAEY,KAAKu43C,gBAAgBp53C,CAAE,EAAE2K,GAAGyiB,MAAM,SAASntB,EAAED,GAAG,GAAG,IAAIC,EAAEiB,QAAQ,iBAAiBjB,EAAE,GAAG,OAAOD,EAAE2C,MAAM,kEAAkE,IAAI/B,EAAEX,EAAE,GAAG,OAAOD,EAAEivB,MAAMriB,IAAIhM,GAAG,IAAI+J,GAAG/J,EAAEZ,EAAEivB,MAAMjrB,IAAIpD,IAAIZ,EAAE2C,MAAM,qBAAqB/B,EAAE,iBAAiBA,EAAE,qEAAqE,EAAE,EAAE+J,GAAGpK,UAAU40gB,SAAS,SAASl1gB,GAAG,OAAOY,KAAKu43C,gBAAgBjk3B,SAASl1gB,EAAE,EAAE0K,GAAGpK,UAAUy79B,UAAU,WAAW,EAAErx9B,GAAGpK,UAAU+33C,cAAc,WAAW,OAAO,CAAE,EAAE3t3C,GAAGpK,UAAUytsB,UAAU,WAAW,MAAO,CAAC,MAAMntsB,KAAK0K,KAAK,EAAE,IAAI3B,GAAG,SAAS3J,EAAED,EAAEY,EAAEV,EAAEuB,QAAG,IAASzB,IAAIA,EAAE,SAAI,IAASE,IAAIA,EAAE,IAAI6P,SAAI,IAAStO,IAAIA,EAAE,IAAIZ,KAAKuxrB,SAASnyrB,EAAEY,KAAKq2B,KAAKl3B,EAAEa,KAAK6kB,IAAI1lB,EAAEkwB,KAAI,SAAUjwB,GAAG,MAAO,IAAIA,EAAE,GAAI,IAAGyN,KAAK,IAAI7M,KAAKouB,MAAM/uB,EAAEW,KAAKirV,OAAOrqV,EAAEZ,KAAKw33C,aAAaz33C,CAAE,EAAE,SAAS6K,GAAGxL,EAAED,GAAG,IAAI,IAAIY,EAAEV,EAAED,EAAEiB,OAAO,EAAEO,EAAE,EAAEI,EAAE3B,EAAEiB,EAAE,EAAEM,GAAGI,GAAG,IAAIjB,EAAEX,EAAEkB,EAAEuC,KAAKyK,OAAO1M,EAAEI,GAAG,MAAM7B,EAAE,CAAC,GAAGmB,IAAIjB,GAAGF,EAAEC,EAAEkB,EAAE,GAAG,OAAOA,EAAEM,EAAEN,EAAE,CAAE,KAAM,CAAC,KAAKP,EAAEZ,GAAG,MAAM,IAAIqI,GAAG,0BAA0BxG,EAAEV,EAAE,CAAE,CAAC,OAAO,CAAC,CAACyI,GAAGrJ,UAAU6sB,MAAM,SAASntB,EAAED,EAAEY,EAAEV,EAAEuB,GAAG,YAAO,IAASA,IAAIA,EAAE,CAAC,GAAGzB,EAAEa,KAAKgC,OAAO7C,EAAEY,EAAEV,GAAGm53C,OAAOp53C,EAAEwB,GAAGZ,KAAKw43C,OAAOp53C,EAAEwB,EAAE,EAAEmI,GAAGrJ,UAAU843C,OAAO,SAASp53C,EAAED,GAAG,SAASY,EAAEX,EAAED,EAAEY,GAAG,MAAO,WAAWA,EAAE,IAAIwH,GAAGpI,EAAE,CAACC,IAAI,WAAWW,EAAE,IAAIgI,GAAG5I,EAAE,CAACC,IAAIA,CAAC,CAAC,GAAG,OAAOA,GAAG,iBAAiBA,GAAG,kBAAkBA,GAAG,iBAAiBA,IAAIA,EAAE,CAAC,UAAUA,IAAIK,MAAMkS,QAAQvS,GAAG,CAAC,GAAG,IAAIA,EAAEiB,OAAO,OAAOL,KAAK8B,MAAM,oGAAoG,IAAIzC,EAAED,EAAE,GAAG,GAAG,iBAAiBC,EAAE,OAAOW,KAAK8B,MAAM,sDAAsDzC,EAAE,mEAAmE,GAAG,KAAK,IAAIuB,EAAEZ,KAAKuxrB,SAASlyrB,GAAG,GAAGuB,EAAE,CAAC,IAAII,EAAEJ,EAAE2rB,MAAMntB,EAAEY,MAAM,IAAIgB,EAAE,OAAO,KAAK,GAAGhB,KAAKw33C,aAAa,CAAC,IAAIl33C,EAAEN,KAAKw33C,aAAa123C,EAAEE,EAAEuL,KAAK,GAAG,WAAWjM,EAAE8hB,MAAM,WAAW9hB,EAAE8hB,MAAM,YAAY9hB,EAAE8hB,MAAM,WAAW9hB,EAAE8hB,MAAM,UAAU9hB,EAAE8hB,MAAM,UAAUthB,EAAEshB,KAAK,GAAG,UAAU9hB,EAAE8hB,MAAM,cAAc9hB,EAAE8hB,MAAM,kBAAkB9hB,EAAE8hB,MAAM,UAAUthB,EAAEshB,MAAM,WAAWthB,EAAEshB,MAAM,GAAGpiB,KAAKq43C,aAAa/33C,EAAEQ,GAAG,OAAO,UAAUE,EAAEjB,EAAEiB,EAAEV,EAAEnB,EAAEs53C,gBAAgB,eAAez33C,EAAEjB,EAAEiB,EAAEV,EAAEnB,EAAEs53C,gBAAgB,SAAU,CAAC,KAAKz33C,aAAaoG,KAAK,kBAAkBpG,EAAEuL,KAAK6V,MAAM,SAAShjB,EAAED,GAAG,GAAGA,aAAa2K,GAAG,OAAO1K,EAAED,EAAEo53C,iBAAiB,GAAGp53C,aAAauJ,IAAI,UAAUvJ,EAAEuL,KAAK,OAAO,EAAG,GAAGvL,aAAa6I,GAAG,OAAO,EAAG,GAAG7I,aAAa4K,GAAG,OAAO,EAAG,IAAIhK,EAAEZ,aAAa4I,IAAI5I,aAAaoI,GAAGlI,GAAE,EAAG,OAAOF,EAAEg89B,WAAU,SAAUh89B,GAAGE,EAAEU,EAAEV,GAAGD,EAAED,GAAGE,GAAGF,aAAaiI,EAAI,MAAK/H,GAAG2J,GAAG7J,IAAIgK,GAAGhK,EAAE,CAAC,OAAO,kBAAkB,gBAAgB,cAAc,uBAAuB,CAArX,CAAuX6B,GAAG,CAAC,IAAIqB,EAAE,IAAI4F,GAAG,IAAIjH,EAAE,IAAIoG,GAAGpG,EAAEuL,KAAKvL,EAAEszgB,SAASjygB,GAAI,CAAC,MAAMjD,GAAG,OAAOY,KAAK8B,MAAM1C,EAAE2yB,SAAS,IAAI,CAAC,CAAC,OAAO/wB,CAAC,CAAC,OAAOhB,KAAK8B,MAAM,uBAAuBzC,EAAE,4DAA4D,EAAE,CAAC,OAAOW,KAAK8B,WAAM,IAAS1C,EAAE,+CAA+C,iBAAiBA,EAAE,wDAAwD,uCAAuCA,EAAE,YAAY,EAAE2J,GAAGrJ,UAAUsC,OAAO,SAAS5C,EAAED,EAAEY,GAAG,IAAIV,EAAE,iBAAiBD,EAAEY,KAAKq2B,KAAKr0B,OAAO5C,GAAGY,KAAKq2B,KAAKz1B,EAAEb,EAAEC,KAAKouB,MAAMpsB,OAAOjC,GAAGC,KAAKouB,MAAM,OAAO,IAAIrlB,GAAG/I,KAAKuxrB,SAASlyrB,EAAEF,GAAG,KAAKyB,EAAEZ,KAAKirV,OAAO,EAAEliV,GAAGrJ,UAAUoC,MAAM,SAAS1C,GAAG,IAAI,IAAID,EAAE,GAAGY,EAAEK,UAAUC,OAAO,EAAEN,KAAK,GAAGZ,EAAEY,GAAGK,UAAUL,EAAE,GAAG,IAAIV,EAAE,GAAGW,KAAK6kB,IAAI1lB,EAAEkwB,KAAI,SAAUjwB,GAAG,MAAO,IAAIA,EAAE,GAAI,IAAGyN,KAAK,IAAI7M,KAAKirV,OAAOppV,KAAK,IAAIkN,GAAG1P,EAAED,GAAI,EAAE2J,GAAGrJ,UAAU243C,aAAa,SAASj53C,EAAED,GAAG,IAAIY,EAAEqP,GAAGhQ,EAAED,GAAG,OAAOY,GAAGC,KAAK8B,MAAM/B,GAAGA,CAAC,EAAE,IAAI8J,GAAG,SAASzK,EAAED,EAAEY,GAAGC,KAAKuM,KAAKnN,EAAEY,KAAKywD,MAAMtxD,EAAEa,KAAK4tF,OAAO,GAAG5tF,KAAK043C,QAAQ,GAAG,IAAI,IAAIr53C,EAAE,EAAEuB,EAAEb,EAAEV,EAAEuB,EAAEP,OAAOhB,GAAG,EAAE,CAAC,IAAI2B,EAAEJ,EAAEvB,GAAGiB,EAAEU,EAAE,GAAGhB,KAAK4tF,OAAO/rF,KAAKb,EAAE,IAAIhB,KAAK043C,QAAQ723C,KAAKvB,EAAG,CAAC,EAAE,SAASsJ,GAAGxK,EAAED,EAAEY,GAAG,OAAOX,GAAG,EAAEW,GAAGZ,EAAEY,CAAC,CAAC8J,GAAG0iB,MAAM,SAASntB,EAAED,GAAG,GAAGC,EAAEiB,OAAO,EAAE,EAAE,OAAOlB,EAAE2C,MAAM,kDAAkD1C,EAAEiB,OAAO,GAAG,KAAK,IAAIjB,EAAEiB,OAAO,GAAG,GAAG,EAAE,OAAOlB,EAAE2C,MAAM,yCAAyC,IAAI/B,EAAEZ,EAAEotB,MAAMntB,EAAE,GAAG,EAAE2O,IAAI,IAAIhO,EAAE,OAAO,KAAK,IAAIV,EAAE,GAAGuB,EAAE,KAAKzB,EAAEq43C,cAAc,UAAUr43C,EAAEq43C,aAAap12C,OAAOxhB,EAAEzB,EAAEq43C,cAAc,IAAI,IAAIx23C,EAAE,EAAEA,EAAE5B,EAAEiB,OAAOW,GAAG,EAAE,CAAC,IAAIV,EAAE,IAAIU,GAAE,IAAK5B,EAAE4B,GAAGF,EAAE1B,EAAE4B,EAAE,GAAGqB,EAAErB,EAAEwB,EAAExB,EAAE,EAAE,GAAG,iBAAiBV,EAAE,OAAOnB,EAAE2C,MAAM,0IAA0IO,GAAG,GAAGhD,EAAEgB,QAAQhB,EAAEA,EAAEgB,OAAO,GAAG,IAAIC,EAAE,OAAOnB,EAAE2C,MAAM,4GAA4GO,GAAG,IAAIS,EAAE3D,EAAEotB,MAAMzrB,EAAE0B,EAAE5B,GAAG,IAAIkC,EAAE,OAAO,KAAKlC,EAAEA,GAAGkC,EAAEyJ,KAAKlN,EAAEwC,KAAK,CAACvB,EAAEwC,GAAI,CAAC,OAAO,IAAI+G,GAAGjJ,EAAEb,EAAEV,EAAE,EAAEwK,GAAGnK,UAAU40gB,SAAS,SAASl1gB,GAAG,IAAID,EAAEa,KAAK4tF,OAAO7tF,EAAEC,KAAK043C,QAAQ,GAAG,IAAIv53C,EAAEkB,OAAO,OAAON,EAAE,GAAGu0gB,SAASl1gB,GAAG,IAAIC,EAAEW,KAAKywD,MAAM6jd,SAASl1gB,GAAG,GAAGC,GAAGF,EAAE,GAAG,OAAOY,EAAE,GAAGu0gB,SAASl1gB,GAAG,IAAIwB,EAAEzB,EAAEkB,OAAO,OAAOhB,GAAGF,EAAEyB,EAAE,GAAGb,EAAEa,EAAE,GAAG0zgB,SAASl1gB,GAAGW,EAAE6K,GAAGzL,EAAEE,IAAIi1gB,SAASl1gB,EAAE,EAAEyK,GAAGnK,UAAUy79B,UAAU,SAAS/79B,GAAGA,EAAEY,KAAKywD,OAAO,IAAI,IAAItxD,EAAE,EAAEY,EAAEC,KAAK043C,QAAQv53C,EAAEY,EAAEM,OAAOlB,GAAG,EAAEC,EAAEW,EAAEZ,GAAI,EAAE0K,GAAGnK,UAAU+33C,cAAc,WAAW,OAAOz33C,KAAK043C,QAAQjw1C,OAAM,SAAUrpC,GAAG,OAAOA,EAAEq43C,eAAgB,GAAE,EAAE5t3C,GAAGnK,UAAUytsB,UAAU,WAAW,IAAI,IAAI/tsB,EAAE,CAAC,OAAOY,KAAKywD,MAAM08oB,aAAahusB,EAAE,EAAEA,EAAEa,KAAK4tF,OAAOvtF,OAAOlB,IAAIA,EAAE,GAAGC,EAAEyC,KAAK7B,KAAK4tF,OAAOzuF,IAAIC,EAAEyC,KAAK7B,KAAK043C,QAAQv53C,GAAGgusB,aAAa,OAAO/tsB,CAAC,EAAE,IAAImK,GAAGjK,OAAOgmC,OAAO,CAAC9lC,UAAU,KAAKuqJ,OAAOngJ,GAAG2jH,MAAM,SAASnuH,EAAED,EAAEY,GAAG,OAAO,IAAI2G,GAAGkD,GAAGxK,EAAEW,EAAEZ,EAAEY,EAAEA,GAAG6J,GAAGxK,EAAE+C,EAAEhD,EAAEgD,EAAEpC,GAAG6J,GAAGxK,EAAEkE,EAAEnE,EAAEmE,EAAEvD,GAAG6J,GAAGxK,EAAE4B,EAAE7B,EAAE6B,EAAEjB,GAAG,EAAEm6C,MAAM,SAAS96C,EAAED,EAAEY,GAAG,OAAOX,EAAEiwB,KAAI,SAAUjwB,EAAEC,GAAG,OAAOuK,GAAGxK,EAAED,EAAEE,GAAGU,EAAG,GAAE,IAAIqJ,GAAG,EAAE,GAAG,GAAG,EAAE,IAAIM,GAAG7G,KAAKsmC,GAAG,IAAIj/B,GAAG,IAAIrH,KAAKsmC,GAAG,SAASn/B,GAAG5K,GAAG,OAAOA,EAAE,oBAAoByD,KAAK6yF,IAAIt2F,EAAE,EAAE,GAAGA,EAAEgK,GAAG,EAAE,EAAE,CAAC,SAASa,GAAG7K,GAAG,OAAOA,EAAE,EAAE,GAAGA,EAAEA,EAAEA,EAAEgK,IAAIhK,EAAE,EAAE,GAAG,CAAC,SAAS0L,GAAG1L,GAAG,OAAO,KAAKA,GAAG,SAAS,MAAMA,EAAE,MAAMyD,KAAK6yF,IAAIt2F,EAAE,EAAE,KAAK,KAAK,CAAC,SAAS6J,GAAG7J,GAAG,OAAQA,GAAG,MAAM,OAAOA,EAAE,MAAMyD,KAAK6yF,KAAKt2F,EAAE,MAAM,MAAM,IAAI,CAAC,SAASmL,GAAGnL,GAAG,IAAID,EAAE8J,GAAG7J,EAAEW,GAAGA,EAAEkJ,GAAG7J,EAAE+C,GAAG9C,EAAE4J,GAAG7J,EAAEkE,GAAG1C,EAAEoJ,IAAI,SAAS7K,EAAE,SAASY,EAAE,SAASV,GAAG,QAAQ2B,EAAEgJ,IAAI,SAAS7K,EAAE,SAASY,EAAE,QAAQV,GAAG,GAAG,MAAO,CAACmD,EAAE,IAAIxB,EAAE,GAAGA,EAAE,KAAKJ,EAAEI,GAAGsC,EAAE,KAAKtC,EAAEgJ,IAAI,SAAS7K,EAAE,QAAQY,EAAE,SAASV,GAAG,UAAUgmR,MAAMjmR,EAAE4B,EAAE,CAAC,SAASiU,GAAG7V,GAAG,IAAID,GAAGC,EAAEoD,EAAE,IAAI,IAAIzC,EAAEusC,MAAMltC,EAAE4B,GAAG7B,EAAEA,EAAEC,EAAE4B,EAAE,IAAI3B,EAAEitC,MAAMltC,EAAEkE,GAAGnE,EAAEA,EAAEC,EAAEkE,EAAE,IAAI,OAAOnE,EAAE,EAAE8K,GAAG9K,GAAGY,EAAE,OAAOkK,GAAGlK,GAAGV,EAAE,QAAQ4K,GAAG5K,GAAG,IAAIqH,GAAGoE,GAAG,UAAU/K,EAAE,UAAUZ,EAAE,SAASE,GAAGyL,IAAI,QAAQ/K,EAAE,UAAUZ,EAAE,QAAQE,GAAGyL,GAAG,SAAS/K,EAAE,SAASZ,EAAE,UAAUE,GAAGD,EAAEimR,MAAM,CAAC,SAAStwQ,GAAG3V,EAAED,EAAEY,GAAG,IAAIV,EAAEF,EAAEC,EAAE,OAAOA,EAAEW,GAAGV,EAAE,KAAKA,GAAG,IAAIA,EAAE,IAAIwD,KAAKogD,MAAM5jD,EAAE,KAAKA,EAAE,CAAC,IAAI6V,GAAG,CAACu4X,QAAQljY,GAAG+vD,QAAQrlD,GAAGw6O,YAAY,SAASrwP,EAAED,EAAEY,GAAG,MAAO,CAACyC,EAAEoH,GAAGxK,EAAEoD,EAAErD,EAAEqD,EAAEzC,GAAGiB,EAAE4I,GAAGxK,EAAE4B,EAAE7B,EAAE6B,EAAEjB,GAAGuD,EAAEsG,GAAGxK,EAAEkE,EAAEnE,EAAEmE,EAAEvD,GAAGslR,MAAMz7Q,GAAGxK,EAAEimR,MAAMlmR,EAAEkmR,MAAMtlR,GAAG,GAAGiV,GAAG,CAACy4X,QAAQ,SAASruY,GAAG,IAAID,EAAEoL,GAAGnL,GAAGW,EAAEZ,EAAEqD,EAAEnD,EAAEF,EAAE6B,EAAEJ,EAAEzB,EAAEmE,EAAEtC,EAAE6B,KAAK0xH,MAAM3zH,EAAEvB,GAAG6K,GAAG,MAAO,CAACtH,EAAE5B,EAAE,EAAEA,EAAE,IAAIA,EAAEH,EAAEgC,KAAK4yF,KAAKp2F,EAAEA,EAAEuB,EAAEA,GAAG4B,EAAEzC,EAAEslR,MAAMjmR,EAAE4B,EAAE,EAAEs5D,QAAQ,SAASl7D,GAAG,IAAID,EAAEC,EAAEwD,EAAE8G,GAAG3J,EAAEX,EAAEyB,EAAE,OAAOoU,GAAG,CAACzS,EAAEpD,EAAEoD,EAAExB,EAAE6B,KAAKuxH,IAAIj1H,GAAGY,EAAEuD,EAAET,KAAK4wH,IAAIt0H,GAAGY,EAAEslR,MAAMjmR,EAAEimR,OAAO,EAAE51B,YAAY,SAASrwP,EAAED,EAAEY,GAAG,MAAO,CAAC6C,EAAEmS,GAAG3V,EAAEwD,EAAEzD,EAAEyD,EAAE7C,GAAGc,EAAE+I,GAAGxK,EAAEyB,EAAE1B,EAAE0B,EAAEd,GAAGyC,EAAEoH,GAAGxK,EAAEoD,EAAErD,EAAEqD,EAAEzC,GAAGslR,MAAMz7Q,GAAGxK,EAAEimR,MAAMlmR,EAAEkmR,MAAMtlR,GAAG,GAAGqV,GAAG9V,OAAOgmC,OAAO,CAAC9lC,UAAU,KAAK423C,IAAIlh3C,GAAGmh3C,IAAIrh3C,KAAKM,GAAG,SAASlW,EAAED,EAAEY,EAAEV,EAAEuB,GAAGZ,KAAKuM,KAAKnN,EAAEY,KAAK89b,SAAS3+b,EAAEa,KAAK0jI,cAAc3jI,EAAEC,KAAKywD,MAAMpxD,EAAEW,KAAK4tF,OAAO,GAAG5tF,KAAK043C,QAAQ,GAAG,IAAI,IAAI133C,EAAE,EAAEV,EAAEM,EAAEI,EAAEV,EAAED,OAAOW,GAAG,EAAE,CAAC,IAAIF,EAAER,EAAEU,GAAGqB,EAAEvB,EAAE,GAAGd,KAAK4tF,OAAO/rF,KAAKf,EAAE,IAAId,KAAK043C,QAAQ723C,KAAKQ,EAAG,CAAC,EAAE,SAAS8S,GAAG/V,EAAED,EAAEY,EAAEV,GAAG,IAAIuB,EAAEvB,EAAEU,EAAEiB,EAAE5B,EAAEW,EAAE,OAAO,IAAIa,EAAE,EAAE,IAAIzB,EAAE6B,EAAEJ,GAAGiC,KAAK6yF,IAAIv2F,EAAE6B,GAAG,IAAI6B,KAAK6yF,IAAIv2F,EAAEyB,GAAG,EAAE,CAAC0U,GAAGqj3C,oBAAoB,SAASv53C,EAAED,EAAEE,EAAEuB,GAAG,IAAII,EAAE,EAAE,GAAG,gBAAgB5B,EAAEsL,KAAK1J,EAAEmU,GAAGhW,EAAEC,EAAEinD,KAAKhnD,EAAEuB,QAAQ,GAAG,WAAWxB,EAAEsL,KAAK1J,EAAEmU,GAAGhW,EAAE,EAAEE,EAAEuB,QAAQ,GAAG,iBAAiBxB,EAAEsL,KAAK,CAAC,IAAIpK,EAAElB,EAAEwyhC,cAAc5whC,EAAE,IAAIjB,EAAEO,EAAE,GAAGA,EAAE,GAAGA,EAAE,GAAGA,EAAE,IAAImu3C,MAAMt52C,GAAGhW,EAAE,EAAEE,EAAEuB,GAAI,CAAC,OAAOI,CAAC,EAAEsU,GAAGiX,MAAM,SAASntB,EAAED,GAAG,IAAIY,EAAEX,EAAE,GAAGC,EAAED,EAAE,GAAGwB,EAAExB,EAAE,GAAG4B,EAAE5B,EAAE2C,MAAM,GAAG,IAAItC,MAAMkS,QAAQtS,IAAI,IAAIA,EAAEgB,OAAO,OAAOlB,EAAE2C,MAAM,6CAA6C,GAAG,GAAG,WAAWzC,EAAE,GAAGA,EAAE,CAACqL,KAAK,eAAe,GAAG,gBAAgBrL,EAAE,GAAG,CAAC,IAAIiB,EAAEjB,EAAE,GAAG,GAAG,iBAAiBiB,EAAE,OAAOnB,EAAE2C,MAAM,qDAAqD,EAAE,GAAGzC,EAAE,CAACqL,KAAK,cAAc27C,KAAK/lD,EAAG,KAAM,CAAC,GAAG,iBAAiBjB,EAAE,GAAG,OAAOF,EAAE2C,MAAM,8BAA8BhC,OAAOT,EAAE,IAAI,EAAE,GAAG,IAAIyB,EAAEzB,EAAE0C,MAAM,GAAG,GAAG,IAAIjB,EAAET,QAAQS,EAAE6mC,MAAK,SAAUvoC,GAAG,MAAO,iBAAiBA,GAAGA,EAAE,GAAGA,EAAE,CAAE,IAAG,OAAOD,EAAE2C,MAAM,0FAA0F,GAAGzC,EAAE,CAACqL,KAAK,eAAeknhC,cAAc9whC,EAAG,CAAC,GAAG1B,EAAEiB,OAAO,EAAE,EAAE,OAAOlB,EAAE2C,MAAM,kDAAkD1C,EAAEiB,OAAO,GAAG,KAAK,IAAIjB,EAAEiB,OAAO,GAAG,GAAG,EAAE,OAAOlB,EAAE2C,MAAM,yCAAyC,KAAKlB,EAAEzB,EAAEotB,MAAM3rB,EAAE,EAAEmN,KAAK,OAAO,KAAK,IAAI1L,EAAE,GAAGG,EAAE,KAAK,oBAAoBzC,GAAG,oBAAoBA,EAAEyC,EAAE2L,GAAGhP,EAAEq43C,cAAc,UAAUr43C,EAAEq43C,aAAap12C,OAAO5f,EAAErD,EAAEq43C,cAAc,IAAI,IAAI103C,EAAE,EAAEA,EAAE9B,EAAEX,OAAOyC,GAAG,EAAE,CAAC,IAAIjC,EAAEG,EAAE8B,GAAGF,EAAE5B,EAAE8B,EAAE,GAAGJ,EAAEI,EAAE,EAAEE,EAAEF,EAAE,EAAE,GAAG,iBAAiBjC,EAAE,OAAO1B,EAAE2C,MAAM,iJAAiJY,GAAG,GAAGL,EAAEhC,QAAQgC,EAAEA,EAAEhC,OAAO,GAAG,IAAIQ,EAAE,OAAO1B,EAAE2C,MAAM,mHAAmHY,GAAG,IAAIC,EAAExD,EAAEotB,MAAM3pB,EAAEI,EAAER,GAAG,IAAIG,EAAE,OAAO,KAAKH,EAAEA,GAAGG,EAAE4J,KAAKlK,EAAER,KAAK,CAAChB,EAAE8B,GAAI,CAAC,MAAO,WAAWH,EAAE4f,MAAM,UAAU5f,EAAE4f,MAAM,UAAU5f,EAAE4f,MAAM,WAAW5f,EAAEyzE,SAAS7zD,MAAM,iBAAiB5f,EAAE0C,EAAE,IAAIoQ,GAAG9S,EAAEzC,EAAEV,EAAEuB,EAAEyB,GAAGlD,EAAE2C,MAAM,QAAQ6N,GAAGnN,GAAG,0BAA0B,EAAE8S,GAAG5V,UAAU40gB,SAAS,SAASl1gB,GAAG,IAAID,EAAEa,KAAK4tF,OAAO7tF,EAAEC,KAAK043C,QAAQ,GAAG,IAAIv53C,EAAEkB,OAAO,OAAON,EAAE,GAAGu0gB,SAASl1gB,GAAG,IAAIC,EAAEW,KAAKywD,MAAM6jd,SAASl1gB,GAAG,GAAGC,GAAGF,EAAE,GAAG,OAAOY,EAAE,GAAGu0gB,SAASl1gB,GAAG,IAAIwB,EAAEzB,EAAEkB,OAAO,GAAGhB,GAAGF,EAAEyB,EAAE,GAAG,OAAOb,EAAEa,EAAE,GAAG0zgB,SAASl1gB,GAAG,IAAI4B,EAAE4J,GAAGzL,EAAEE,GAAGiB,EAAEgV,GAAGqj3C,oBAAoB343C,KAAK0jI,cAAcrkI,EAAEF,EAAE6B,GAAG7B,EAAE6B,EAAE,IAAIF,EAAEf,EAAEiB,GAAGszgB,SAASl1gB,GAAGiD,EAAEtC,EAAEiB,EAAE,GAAGszgB,SAASl1gB,GAAG,MAAO,gBAAgBY,KAAK89b,SAASv0b,GAAGvJ,KAAKuM,KAAK6V,KAAK7S,eAAezO,EAAEuB,EAAE/B,GAAG,oBAAoBN,KAAK89b,SAAS9ob,GAAGslD,QAAQtlD,GAAGy6O,YAAYz6O,GAAGy4X,QAAQ3sY,GAAGkU,GAAGy4X,QAAQprY,GAAG/B,IAAI4U,GAAGolD,QAAQplD,GAAGu6O,YAAYv6O,GAAGu4X,QAAQ3sY,GAAGoU,GAAGu4X,QAAQprY,GAAG/B,GAAG,EAAEgV,GAAG5V,UAAUy79B,UAAU,SAAS/79B,GAAGA,EAAEY,KAAKywD,OAAO,IAAI,IAAItxD,EAAE,EAAEY,EAAEC,KAAK043C,QAAQv53C,EAAEY,EAAEM,OAAOlB,GAAG,EAAEC,EAAEW,EAAEZ,GAAI,EAAEmW,GAAG5V,UAAU+33C,cAAc,WAAW,OAAOz33C,KAAK043C,QAAQjw1C,OAAM,SAAUrpC,GAAG,OAAOA,EAAEq43C,eAAgB,GAAE,EAAEni3C,GAAG5V,UAAUytsB,UAAU,WAAW,IAAI/tsB,EAAEA,EAAE,WAAWY,KAAK0jI,cAAch5H,KAAK,CAAC,UAAU,gBAAgB1K,KAAK0jI,cAAch5H,KAAK,IAAI1K,KAAK0jI,cAAcr9E,KAAK,CAAC,UAAU,CAAC,cAAcrmD,KAAK0jI,cAAcr9E,MAAM,CAAC,gBAAgBrkD,OAAOhC,KAAK0jI,cAAcku5B,eAAe,IAAI,IAAIzyhC,EAAE,CAACa,KAAK89b,SAAS1+b,EAAEY,KAAKywD,MAAM08oB,aAAaptsB,EAAE,EAAEA,EAAEC,KAAK4tF,OAAOvtF,OAAON,IAAIZ,EAAE0C,KAAK7B,KAAK4tF,OAAO7tF,GAAGC,KAAK043C,QAAQ343C,GAAGotsB,aAAa,OAAOhusB,CAAC,EAAE,IAAIoW,GAAG,SAASnW,EAAED,GAAGa,KAAKuM,KAAKnN,EAAEY,KAAKq3C,KAAKl4C,CAAE,EAAEoW,GAAGgX,MAAM,SAASntB,EAAED,GAAG,GAAGC,EAAEiB,OAAO,EAAE,OAAOlB,EAAE2C,MAAM,sCAAsC,IAAI/B,EAAE,KAAKV,EAAEF,EAAEq43C,aAAan43C,GAAG,UAAUA,EAAE+iB,OAAOriB,EAAEV,GAAG,IAAI,IAAIuB,EAAE,GAAGI,EAAE,EAAEV,EAAElB,EAAE2C,MAAM,GAAGf,EAAEV,EAAED,OAAOW,GAAG,EAAE,CAAC,IAAIF,EAAE3B,EAAEotB,MAAMjsB,EAAEU,GAAG,EAAEJ,EAAEP,OAAON,OAAE,EAAO,CAAC043C,eAAe,SAAS,IAAI333C,EAAE,OAAO,KAAKf,EAAEA,GAAGe,EAAEyL,KAAK3L,EAAEiB,KAAKf,EAAG,CAAC,IAAIuB,EAAEhD,GAAGuB,EAAE+mC,MAAK,SAAUvoC,GAAG,OAAOgQ,GAAG/P,EAAED,EAAEmN,KAAM,IAAG,OAAO,IAAIgJ,GAAGlT,EAAE4M,GAAGlP,EAAEa,EAAE,EAAE2U,GAAG7V,UAAU40gB,SAAS,SAASl1gB,GAAG,IAAI,IAAID,EAAEY,EAAE,KAAKV,EAAE,EAAEuB,EAAE,EAAEI,EAAEhB,KAAKq3C,KAAKz2C,EAAEI,EAAEX,SAAShB,KAAKU,EAAEiB,EAAEJ,GAAG0zgB,SAASl1gB,KAAKW,aAAagH,KAAKhH,EAAEkl5B,YAAY9l5B,IAAIA,EAAEY,EAAE2K,MAAM3K,EAAE,KAAKV,IAAIW,KAAKq3C,KAAKh3C,SAASN,EAAEZ,IAAI,OAAOY,GAAGa,GAAG,GAAG,OAAOb,CAAC,EAAEwV,GAAG7V,UAAUy79B,UAAU,SAAS/79B,GAAGY,KAAKq3C,KAAKnyB,QAAQ9lB,EAAG,EAAEmW,GAAG7V,UAAU+33C,cAAc,WAAW,OAAOz33C,KAAKq3C,KAAK5O,OAAM,SAAUrpC,GAAG,OAAOA,EAAEq43C,eAAgB,GAAE,EAAEli3C,GAAG7V,UAAUytsB,UAAU,WAAW,IAAI/tsB,EAAE,CAAC,YAAY,OAAOY,KAAKm79B,WAAU,SAAUh89B,GAAGC,EAAEyC,KAAK1C,EAAEgusB,YAAc,IAAG/tsB,CAAC,EAAE,IAAIoW,GAAG,SAASpW,EAAED,GAAGa,KAAKuM,KAAKpN,EAAEoN,KAAKvM,KAAKukU,SAAS,GAAGviU,OAAO5C,GAAGY,KAAKwjB,OAAOrkB,CAAE,EAAEqW,GAAG9V,UAAU40gB,SAAS,SAASl1gB,GAAG,OAAOY,KAAKwjB,OAAO8wf,SAASl1gB,EAAE,EAAEoW,GAAG9V,UAAUy79B,UAAU,SAAS/79B,GAAG,IAAI,IAAID,EAAE,EAAEY,EAAEC,KAAKukU,SAASplU,EAAEY,EAAEM,OAAOlB,GAAG,EAAEC,EAAEW,EAAEZ,GAAG,IAAIC,EAAEY,KAAKwjB,OAAQ,EAAEhO,GAAG+W,MAAM,SAASntB,EAAED,GAAG,GAAGC,EAAEiB,OAAO,EAAE,OAAOlB,EAAE2C,MAAM,6CAA6C1C,EAAEiB,OAAO,GAAG,aAAa,IAAI,IAAIN,EAAE,GAAGV,EAAE,EAAEA,EAAED,EAAEiB,OAAO,EAAEhB,GAAG,EAAE,CAAC,IAAIuB,EAAExB,EAAEC,GAAG,GAAG,iBAAiBuB,EAAE,OAAOzB,EAAE2C,MAAM,qCAAqClB,EAAE,YAAYvB,GAAG,GAAG,gBAAgBgM,KAAKzK,GAAG,OAAOzB,EAAE2C,MAAM,mEAAmEzC,GAAG,IAAI2B,EAAE7B,EAAEotB,MAAMntB,EAAEC,EAAE,GAAGA,EAAE,GAAG,IAAI2B,EAAE,OAAO,KAAKjB,EAAE8B,KAAK,CAACjB,EAAEI,GAAI,CAAC,IAAIV,EAAEnB,EAAEotB,MAAMntB,EAAEA,EAAEiB,OAAO,GAAGjB,EAAEiB,OAAO,EAAElB,EAAEq43C,aAAaz33C,GAAG,OAAOO,EAAE,IAAIkV,GAAGzV,EAAEO,GAAG,IAAI,EAAEkV,GAAG9V,UAAU+33C,cAAc,WAAW,OAAOz33C,KAAKwjB,OAAOi02C,eAAe,EAAEji3C,GAAG9V,UAAUytsB,UAAU,WAAW,IAAI,IAAI/tsB,EAAE,CAAC,OAAOD,EAAE,EAAEY,EAAEC,KAAKukU,SAASplU,EAAEY,EAAEM,OAAOlB,GAAG,EAAE,CAAC,IAAIE,EAAEU,EAAEZ,GAAGC,EAAEyC,KAAKxC,EAAE,GAAGA,EAAE,GAAG8tsB,YAAa,CAAC,OAAO/tsB,EAAEyC,KAAK7B,KAAKwjB,OAAO2prB,aAAa/tsB,CAAC,EAAE,IAAIqW,GAAG,SAASrW,EAAED,EAAEY,GAAGC,KAAKuM,KAAKnN,EAAEY,KAAKgd,MAAM7d,EAAEa,KAAKywD,MAAM1wD,CAAE,EAAE0V,GAAG8W,MAAM,SAASntB,EAAED,GAAG,GAAG,IAAIC,EAAEiB,OAAO,OAAOlB,EAAE2C,MAAM,oCAAoC1C,EAAEiB,OAAO,GAAG,aAAa,IAAIN,EAAEZ,EAAEotB,MAAMntB,EAAE,GAAG,EAAE2O,IAAI1O,EAAEF,EAAEotB,MAAMntB,EAAE,GAAG,EAAE0P,GAAG3P,EAAEq43C,cAAcvo3C,KAAK,OAAOlP,GAAGV,EAAE,IAAIoW,GAAGpW,EAAEkN,KAAK0pE,SAASl2E,EAAEV,GAAG,IAAI,EAAEoW,GAAG/V,UAAU40gB,SAAS,SAASl1gB,GAAG,IAAID,EAAEa,KAAKgd,MAAMs3f,SAASl1gB,GAAGW,EAAEC,KAAKywD,MAAM6jd,SAASl1gB,GAAG,GAAGD,EAAE,EAAE,MAAM,IAAIqI,GAAG,8BAA8BrI,EAAE,SAAS,GAAGA,GAAGY,EAAEM,OAAO,MAAM,IAAImH,GAAG,8BAA8BrI,EAAE,OAAOY,EAAEM,OAAO,GAAG,KAAK,GAAGlB,IAAI0D,KAAKyK,MAAMnO,GAAG,MAAM,IAAIqI,GAAG,6CAA6CrI,EAAE,aAAa,OAAOY,EAAEZ,EAAE,EAAEsW,GAAG/V,UAAUy79B,UAAU,SAAS/79B,GAAGA,EAAEY,KAAKgd,OAAO5d,EAAEY,KAAKywD,MAAO,EAAEh7C,GAAG/V,UAAU+33C,cAAc,WAAW,OAAO,CAAE,EAAEhi3C,GAAG/V,UAAUytsB,UAAU,WAAW,MAAO,CAAC,KAAKntsB,KAAKgd,MAAMmwrB,YAAYntsB,KAAKywD,MAAM08oB,YAAY,EAAE,IAAIt3rB,GAAG,SAASzW,EAAED,GAAGa,KAAKuM,KAAK4C,GAAGnP,KAAK4gyC,OAAOxhyC,EAAEY,KAAK443C,SAASz53C,CAAE,EAAE0W,GAAG0W,MAAM,SAASntB,EAAED,GAAG,GAAG,IAAIC,EAAEiB,OAAO,OAAOlB,EAAE2C,MAAM,oCAAoC1C,EAAEiB,OAAO,GAAG,aAAa,IAAIN,EAAEZ,EAAEotB,MAAMntB,EAAE,GAAG,EAAE6P,IAAI5P,EAAEF,EAAEotB,MAAMntB,EAAE,GAAG,EAAE6P,IAAI,OAAOlP,GAAGV,EAAEiR,GAAGvQ,EAAEwM,KAAK,CAAC4C,GAAGb,GAAGP,GAAGM,GAAGY,KAAK,IAAI4G,GAAG9V,EAAEV,GAAGF,EAAE2C,MAAM,oFAAoF6N,GAAG5P,EAAEwM,MAAM,YAAY,IAAI,EAAEsJ,GAAGnW,UAAU40gB,SAAS,SAASl1gB,GAAG,IAAID,EAAEa,KAAK4gyC,OAAOtsxB,SAASl1gB,GAAGW,EAAEC,KAAK443C,SAAStk3B,SAASl1gB,GAAG,IAAIW,EAAE,OAAO,EAAG,IAAIwO,GAAGpP,EAAE,CAAC,UAAU,SAAS,SAAS,SAAS,MAAM,IAAIqI,GAAG,oFAAoFmI,GAAGzI,GAAG/H,IAAI,aAAa,IAAIoP,GAAGxO,EAAE,CAAC,SAAS,UAAU,MAAM,IAAIyH,GAAG,qEAAqEmI,GAAGzI,GAAGnH,IAAI,aAAa,OAAOA,EAAES,QAAQrB,IAAI,CAAC,EAAE0W,GAAGnW,UAAUy79B,UAAU,SAAS/79B,GAAGA,EAAEY,KAAK4gyC,QAAQxhyC,EAAEY,KAAK443C,SAAU,EAAE/i3C,GAAGnW,UAAU+33C,cAAc,WAAW,OAAO,CAAE,EAAE5h3C,GAAGnW,UAAUytsB,UAAU,WAAW,MAAO,CAAC,KAAKntsB,KAAK4gyC,OAAOzzlB,YAAYntsB,KAAK443C,SAASzrrB,YAAY,EAAE,IAAI93rB,GAAG,SAASjW,EAAED,EAAEY,GAAGC,KAAKuM,KAAKwB,GAAG/N,KAAK4gyC,OAAOxhyC,EAAEY,KAAK443C,SAASz53C,EAAEa,KAAKsqgB,UAAUvqgB,CAAE,EAAEsV,GAAGkX,MAAM,SAASntB,EAAED,GAAG,GAAGC,EAAEiB,QAAQ,GAAGjB,EAAEiB,QAAQ,EAAE,OAAOlB,EAAE2C,MAAM,yCAAyC1C,EAAEiB,OAAO,GAAG,aAAa,IAAIN,EAAEZ,EAAEotB,MAAMntB,EAAE,GAAG,EAAE6P,IAAI5P,EAAEF,EAAEotB,MAAMntB,EAAE,GAAG,EAAE6P,IAAI,IAAIlP,IAAIV,EAAE,OAAO,KAAK,IAAIiR,GAAGvQ,EAAEwM,KAAK,CAAC4C,GAAGb,GAAGP,GAAGM,GAAGY,KAAK,OAAO9P,EAAE2C,MAAM,oFAAoF6N,GAAG5P,EAAEwM,MAAM,YAAY,GAAG,IAAInN,EAAEiB,OAAO,CAAC,IAAIO,EAAEzB,EAAEotB,MAAMntB,EAAE,GAAG,EAAE2O,IAAI,OAAOnN,EAAE,IAAIyU,GAAGtV,EAAEV,EAAEuB,GAAG,IAAI,CAAC,OAAO,IAAIyU,GAAGtV,EAAEV,EAAE,EAAEgW,GAAG3V,UAAU40gB,SAAS,SAASl1gB,GAAG,IAAID,EAAEa,KAAK4gyC,OAAOtsxB,SAASl1gB,GAAGW,EAAEC,KAAK443C,SAAStk3B,SAASl1gB,GAAG,IAAImP,GAAGpP,EAAE,CAAC,UAAU,SAAS,SAAS,SAAS,MAAM,IAAIqI,GAAG,oFAAoFmI,GAAGzI,GAAG/H,IAAI,aAAa,IAAIoP,GAAGxO,EAAE,CAAC,SAAS,UAAU,MAAM,IAAIyH,GAAG,qEAAqEmI,GAAGzI,GAAGnH,IAAI,aAAa,GAAGC,KAAKsqgB,UAAU,CAAC,IAAIjrgB,EAAEW,KAAKsqgB,UAAUgK,SAASl1gB,GAAG,OAAOW,EAAES,QAAQrB,EAAEE,EAAE,CAAC,OAAOU,EAAES,QAAQrB,EAAE,EAAEkW,GAAG3V,UAAUy79B,UAAU,SAAS/79B,GAAGA,EAAEY,KAAK4gyC,QAAQxhyC,EAAEY,KAAK443C,UAAU543C,KAAKsqgB,WAAWlrgB,EAAEY,KAAKsqgB,UAAW,EAAEj1f,GAAG3V,UAAU+33C,cAAc,WAAW,OAAO,CAAE,EAAEpi3C,GAAG3V,UAAUytsB,UAAU,WAAW,GAAG,MAAMntsB,KAAKsqgB,gBAAW,IAAStqgB,KAAKsqgB,UAAU,CAAC,IAAIlrgB,EAAEY,KAAKsqgB,UAAU6iM,YAAY,MAAO,CAAC,WAAWntsB,KAAK4gyC,OAAOzzlB,YAAYntsB,KAAK443C,SAASzrrB,YAAY/tsB,EAAE,CAAC,MAAO,CAAC,WAAWY,KAAK4gyC,OAAOzzlB,YAAYntsB,KAAK443C,SAASzrrB,YAAY,EAAE,IAAIv3rB,GAAG,SAASxW,EAAED,EAAEY,EAAEV,EAAEuB,EAAEI,GAAGhB,KAAKikU,UAAU7kU,EAAEY,KAAKuM,KAAKpN,EAAEa,KAAKywD,MAAM1wD,EAAEC,KAAK643C,MAAMx53C,EAAEW,KAAK043C,QAAQ933C,EAAEZ,KAAK843C,UAAU933C,CAAE,EAAE4U,GAAG2W,MAAM,SAASntB,EAAED,GAAG,GAAGC,EAAEiB,OAAO,EAAE,OAAOlB,EAAE2C,MAAM,kDAAkD1C,EAAEiB,OAAO,GAAG,KAAK,GAAGjB,EAAEiB,OAAO,GAAG,EAAE,OAAOlB,EAAE2C,MAAM,yCAAyC,IAAI/B,EAAEV,EAAEF,EAAEq43C,cAAc,UAAUr43C,EAAEq43C,aAAap12C,OAAO/iB,EAAEF,EAAEq43C,cAAc,IAAI,IAAI523C,EAAE,CAAC,EAAEI,EAAE,GAAGV,EAAE,EAAEA,EAAElB,EAAEiB,OAAO,EAAEC,GAAG,EAAE,CAAC,IAAIQ,EAAE1B,EAAEkB,GAAG+B,EAAEjD,EAAEkB,EAAE,GAAGb,MAAMkS,QAAQ7Q,KAAKA,EAAE,CAACA,IAAI,IAAI0B,EAAErD,EAAE6C,OAAO1B,GAAG,GAAG,IAAIQ,EAAET,OAAO,OAAOmC,EAAEV,MAAM,uCAAuC,IAAI,IAAIgB,EAAE,EAAEjC,EAAEC,EAAEgC,EAAEjC,EAAER,OAAOyC,GAAG,EAAE,CAAC,IAAIF,EAAE/B,EAAEiC,GAAG,GAAG,iBAAiBF,GAAG,iBAAiBA,EAAE,OAAOJ,EAAEV,MAAM,6CAA6C,GAAG,iBAAiBc,GAAGC,KAAKmjH,IAAIpjH,GAAGuiC,OAAOE,iBAAiB,OAAO7iC,EAAEV,MAAM,iDAAiDqjC,OAAOE,iBAAiB,KAAK,GAAG,iBAAiBziC,GAAGC,KAAKyK,MAAM1K,KAAKA,EAAE,OAAOJ,EAAEV,MAAM,iDAAiD,GAAG/B,GAAG,GAAGyC,EAAE613C,aAAat43C,EAAEmH,GAAGtE,IAAI,OAAO,UAAU7C,EAAEmH,GAAGtE,GAAG,QAAG,IAAShC,EAAEd,OAAO8C,IAAI,OAAOJ,EAAEV,MAAM,iCAAiClB,EAAEd,OAAO8C,IAAI5B,EAAEX,MAAO,CAAC,IAAIqC,EAAEvD,EAAEotB,MAAMlqB,EAAE/B,EAAEjB,GAAG,IAAIqD,EAAE,OAAO,KAAKrD,EAAEA,GAAGqD,EAAE6J,KAAKvL,EAAEa,KAAKa,EAAG,CAAC,IAAIM,EAAE7D,EAAEotB,MAAMntB,EAAE,GAAG,EAAE6P,IAAI,IAAIjM,EAAE,OAAO,KAAK,IAAIL,EAAExD,EAAEotB,MAAMntB,EAAEA,EAAEiB,OAAO,GAAGjB,EAAEiB,OAAO,EAAEhB,GAAG,OAAOsD,EAAE,UAAUK,EAAEuJ,KAAK6V,MAAMjjB,EAAE6C,OAAO,GAAGq23C,aAAat43C,EAAEiD,EAAEuJ,MAAM,KAAK,IAAIqJ,GAAG7V,EAAEV,EAAE2D,EAAEpC,EAAEI,EAAE2B,GAAG,IAAI,EAAEiT,GAAGlW,UAAU40gB,SAAS,SAASl1gB,GAAG,IAAID,EAAEa,KAAKywD,MAAM6jd,SAASl1gB,GAAG,OAAQ8H,GAAG/H,KAAKa,KAAKikU,WAAWjkU,KAAK043C,QAAQ143C,KAAK643C,MAAM153C,KAAKa,KAAK843C,WAAWxk3B,SAASl1gB,EAAE,EAAEwW,GAAGlW,UAAUy79B,UAAU,SAAS/79B,GAAGA,EAAEY,KAAKywD,OAAOzwD,KAAK043C,QAAQxz2C,QAAQ9lB,GAAGA,EAAEY,KAAK843C,UAAW,EAAElj3C,GAAGlW,UAAU+33C,cAAc,WAAW,OAAOz33C,KAAK043C,QAAQjw1C,OAAM,SAAUrpC,GAAG,OAAOA,EAAEq43C,eAAgB,KAAIz33C,KAAK843C,UAAUrB,eAAe,EAAE7h3C,GAAGlW,UAAUytsB,UAAU,WAAW,IAAI,IAAI/tsB,EAAEY,KAAKb,EAAE,CAAC,QAAQa,KAAKywD,MAAM08oB,aAAaptsB,EAAE,GAAGV,EAAE,CAAC,EAAEuB,EAAE,EAAEI,EAAE1B,OAAOgU,KAAKtT,KAAK643C,OAAOts1C,OAAO3rC,EAAEI,EAAEX,OAAOO,GAAG,EAAE,CAAC,IAAIN,EAAEU,EAAEJ,QAAG,KAAUC,EAAExB,EAAEW,KAAK643C,MAAMv43C,MAAMjB,EAAEW,KAAK643C,MAAMv43C,IAAIP,EAAEM,OAAON,EAAE8B,KAAK,CAAC7B,KAAK643C,MAAMv43C,GAAG,CAACA,MAAMP,EAAEc,GAAG,GAAGgB,KAAKvB,EAAG,CAAC,IAAI,IAAIQ,EAAE,SAAS3B,GAAG,MAAO,WAAWC,EAAE6kU,UAAU7hT,KAAK+iB,OAAOhmC,GAAGA,CAAC,EAAEkD,EAAE,EAAEG,EAAEzC,EAAEsC,EAAEG,EAAEnC,OAAOgC,GAAG,EAAE,CAAC,IAAIS,EAAEN,EAAEH,GAAGxB,EAAEiC,EAAE,GAAGF,EAAEE,EAAE,GAAG3D,EAAE0C,KAAK,IAAIe,EAAEvC,OAAOS,EAAE8B,EAAE,IAAIA,EAAEysB,IAAIvuB,IAAI3B,EAAE0C,KAAK7B,KAAK043C,QAAQK,eAAe5rrB,YAAa,CAAC,OAAOhusB,EAAE0C,KAAK7B,KAAK843C,UAAU3rrB,aAAahusB,CAAC,EAAE,IAAIuW,GAAG,SAAStW,EAAED,EAAEY,GAAGC,KAAKuM,KAAKnN,EAAEY,KAAKg2a,SAAS72a,EAAEa,KAAK843C,UAAU/43C,CAAE,EAAE2V,GAAG6W,MAAM,SAASntB,EAAED,GAAG,GAAGC,EAAEiB,OAAO,EAAE,OAAOlB,EAAE2C,MAAM,kDAAkD1C,EAAEiB,OAAO,GAAG,KAAK,GAAGjB,EAAEiB,OAAO,GAAG,EAAE,OAAOlB,EAAE2C,MAAM,wCAAwC,IAAI/B,EAAEZ,EAAEq43C,cAAc,UAAUr43C,EAAEq43C,aAAap12C,OAAOriB,EAAEZ,EAAEq43C,cAAc,IAAI,IAAIn43C,EAAE,GAAGuB,EAAE,EAAEA,EAAExB,EAAEiB,OAAO,EAAEO,GAAG,EAAE,CAAC,IAAII,EAAE7B,EAAEotB,MAAMntB,EAAEwB,GAAGA,EAAEuO,IAAI,IAAInO,EAAE,OAAO,KAAK,IAAIV,EAAEnB,EAAEotB,MAAMntB,EAAEwB,EAAE,GAAGA,EAAE,EAAEb,GAAG,IAAIO,EAAE,OAAO,KAAKjB,EAAEwC,KAAK,CAACb,EAAEV,IAAIP,EAAEA,GAAGO,EAAEiM,IAAK,CAAC,IAAIzL,EAAE3B,EAAEotB,MAAMntB,EAAEA,EAAEiB,OAAO,GAAGjB,EAAEiB,OAAO,EAAEN,GAAG,OAAOe,EAAE,IAAI4U,GAAG3V,EAAEV,EAAEyB,GAAG,IAAI,EAAE4U,GAAGhW,UAAU40gB,SAAS,SAASl1gB,GAAG,IAAI,IAAID,EAAE,EAAEY,EAAEC,KAAKg2a,SAAS72a,EAAEY,EAAEM,OAAOlB,GAAG,EAAE,CAAC,IAAIE,EAAEU,EAAEZ,GAAGyB,EAAEvB,EAAE,GAAG,GAAGA,EAAE,GAAGi1gB,SAASl1gB,GAAG,OAAOwB,EAAE0zgB,SAASl1gB,EAAE,CAAC,OAAOY,KAAK843C,UAAUxk3B,SAASl1gB,EAAE,EAAEsW,GAAGhW,UAAUy79B,UAAU,SAAS/79B,GAAG,IAAI,IAAID,EAAE,EAAEY,EAAEC,KAAKg2a,SAAS72a,EAAEY,EAAEM,OAAOlB,GAAG,EAAE,CAAC,IAAIE,EAAEU,EAAEZ,GAAGyB,EAAEvB,EAAE,GAAGD,EAAEC,EAAE,IAAID,EAAEwB,EAAG,CAACxB,EAAEY,KAAK843C,UAAW,EAAEpj3C,GAAGhW,UAAU+33C,cAAc,WAAW,OAAOz33C,KAAKg2a,SAASvtY,OAAM,SAAUrpC,GAAG,OAAOA,EAAE,GAAGq43C,eAAgB,KAAIz33C,KAAK843C,UAAUrB,eAAe,EAAE/h3C,GAAGhW,UAAUytsB,UAAU,WAAW,IAAI/tsB,EAAE,CAAC,QAAQ,OAAOY,KAAKm79B,WAAU,SAAUh89B,GAAGC,EAAEyC,KAAK1C,EAAEgusB,YAAc,IAAG/tsB,CAAC,EAAE,IAAI0W,GAAG,SAAS1W,EAAED,EAAEY,EAAEV,GAAGW,KAAKuM,KAAKnN,EAAEY,KAAKywD,MAAMtxD,EAAEa,KAAKg53C,WAAWj53C,EAAEC,KAAK4/H,SAASvgI,CAAE,EAAE,SAASsW,GAAGvW,EAAED,GAAG,MAAO,OAAOC,GAAG,OAAOA,EAAE,YAAYD,EAAEijB,MAAM,WAAWjjB,EAAEijB,MAAM,WAAWjjB,EAAEijB,MAAM,SAASjjB,EAAEijB,MAAM,UAAUjjB,EAAEijB,KAAK,WAAWjjB,EAAEijB,MAAM,WAAWjjB,EAAEijB,MAAM,UAAUjjB,EAAEijB,IAAI,CAAC,SAASpM,GAAG5W,EAAED,EAAEY,EAAEV,GAAG,OAAO,IAAIA,EAAE6qH,QAAQ/qH,EAAEY,EAAE,CAAC,SAASgW,GAAG3W,EAAED,EAAEY,GAAG,IAAIV,EAAE,OAAOD,GAAG,OAAOA,EAAE,OAAO,WAAW,SAASwB,EAAExB,EAAED,EAAEY,GAAGC,KAAKuM,KAAK4C,GAAGnP,KAAKuzyB,IAAIn0yB,EAAEY,KAAKwzyB,IAAIr0yB,EAAEa,KAAKm33C,SAASp33C,EAAEC,KAAKi53C,mBAAmB,UAAU753C,EAAEmN,KAAK6V,MAAM,UAAUjjB,EAAEoN,KAAK6V,IAAK,CAAC,OAAOxhB,EAAE2rB,MAAM,SAASntB,EAAED,GAAG,GAAG,IAAIC,EAAEiB,QAAQ,IAAIjB,EAAEiB,OAAO,OAAOlB,EAAE2C,MAAM,oCAAoC,IAAI/B,EAAEX,EAAE,GAAG4B,EAAE7B,EAAEotB,MAAMntB,EAAE,GAAG,EAAE6P,IAAI,IAAIjO,EAAE,OAAO,KAAK,IAAI2U,GAAG5V,EAAEiB,EAAEuL,MAAM,OAAOpN,EAAE6C,OAAO,GAAGF,MAAM,IAAI/B,EAAE,8CAA8C4P,GAAG3O,EAAEuL,MAAM,MAAM,IAAIjM,EAAEnB,EAAEotB,MAAMntB,EAAE,GAAG,EAAE6P,IAAI,IAAI3O,EAAE,OAAO,KAAK,IAAIqV,GAAG5V,EAAEO,EAAEiM,MAAM,OAAOpN,EAAE6C,OAAO,GAAGF,MAAM,IAAI/B,EAAE,8CAA8C4P,GAAGrP,EAAEiM,MAAM,MAAM,GAAGvL,EAAEuL,KAAK6V,OAAO9hB,EAAEiM,KAAK6V,MAAM,UAAUphB,EAAEuL,KAAK6V,MAAM,UAAU9hB,EAAEiM,KAAK6V,KAAK,OAAOjjB,EAAE2C,MAAM,yBAAyB6N,GAAG3O,EAAEuL,MAAM,UAAUoD,GAAGrP,EAAEiM,MAAM,MAAMlN,IAAI,UAAU2B,EAAEuL,KAAK6V,MAAM,UAAU9hB,EAAEiM,KAAK6V,KAAKphB,EAAE,IAAIuG,GAAGjH,EAAEiM,KAAK,CAACvL,IAAI,UAAUA,EAAEuL,KAAK6V,MAAM,UAAU9hB,EAAEiM,KAAK6V,OAAO9hB,EAAE,IAAIiH,GAAGvG,EAAEuL,KAAK,CAACjM,MAAM,IAAIQ,EAAE,KAAK,GAAG,IAAI1B,EAAEiB,OAAO,CAAC,GAAG,WAAWW,EAAEuL,KAAK6V,MAAM,WAAW9hB,EAAEiM,KAAK6V,MAAM,UAAUphB,EAAEuL,KAAK6V,MAAM,UAAU9hB,EAAEiM,KAAK6V,KAAK,OAAOjjB,EAAE2C,MAAM,oDAAoD,KAAKhB,EAAE3B,EAAEotB,MAAMntB,EAAE,GAAG,EAAE4P,KAAK,OAAO,IAAI,CAAC,OAAO,IAAIpO,EAAEI,EAAEV,EAAEQ,EAAE,EAAEF,EAAElB,UAAU40gB,SAAS,SAAS1zgB,GAAG,IAAII,EAAEhB,KAAKuzyB,IAAIj/R,SAAS1zgB,GAAGN,EAAEN,KAAKwzyB,IAAIl/R,SAAS1zgB,GAAG,GAAGvB,GAAGW,KAAKi53C,mBAAmB,CAAC,IAAIn43C,EAAEoG,GAAGlG,GAAGqB,EAAE6E,GAAG5G,GAAG,GAAGQ,EAAEshB,OAAO/f,EAAE+f,MAAM,WAAWthB,EAAEshB,MAAM,WAAWthB,EAAEshB,KAAK,MAAM,IAAI5a,GAAG,2BAA2BpI,EAAE,4DAA4D0B,EAAEshB,KAAK,KAAK/f,EAAE+f,KAAK,aAAa,CAAC,GAAGpiB,KAAKm33C,WAAW933C,GAAGW,KAAKi53C,mBAAmB,CAAC,IAAIz23C,EAAE0E,GAAGlG,GAAG8B,EAAEoE,GAAG5G,GAAG,GAAG,WAAWkC,EAAE4f,MAAM,WAAWtf,EAAEsf,KAAK,OAAOjjB,EAAEyB,EAAEI,EAAEV,EAAE,CAAC,OAAON,KAAKm33C,SAASp33C,EAAEa,EAAEI,EAAEV,EAAEN,KAAKm33C,SAAS7i3B,SAAS1zgB,IAAIzB,EAAEyB,EAAEI,EAAEV,EAAE,EAAEM,EAAElB,UAAUy79B,UAAU,SAAS/79B,GAAGA,EAAEY,KAAKuzyB,KAAKn0yB,EAAEY,KAAKwzyB,KAAKxzyB,KAAKm33C,UAAU/33C,EAAEY,KAAKm33C,SAAU,EAAEv23C,EAAElB,UAAU+33C,cAAc,WAAW,OAAO,CAAE,EAAE723C,EAAElB,UAAUytsB,UAAU,WAAW,IAAIhusB,EAAE,CAACC,GAAG,OAAOY,KAAKm79B,WAAU,SAAU/79B,GAAGD,EAAE0C,KAAKzC,EAAE+tsB,YAAc,IAAGhusB,CAAC,EAAEyB,CAAC,CAA11D,EAA61D,CAACkV,GAAGyW,MAAM,SAASntB,EAAED,GAAG,GAAGC,EAAEiB,QAAQ,GAAGjB,EAAEiB,QAAQ,EAAE,OAAOlB,EAAE2C,MAAM,yCAAyC1C,EAAEiB,OAAO,GAAG,aAAa,IAAIN,EAAEZ,EAAEotB,MAAMntB,EAAE,GAAG,EAAE6P,IAAI5P,EAAEF,EAAEotB,MAAMntB,EAAE,GAAG,EAAE2O,IAAI,IAAIhO,IAAIV,EAAE,OAAO,KAAK,IAAIiR,GAAGvQ,EAAEwM,KAAK,CAACuC,GAAGG,IAAIX,GAAGW,KAAK,OAAO9P,EAAE2C,MAAM,oEAAoE6N,GAAG5P,EAAEwM,MAAM,YAAY,GAAG,IAAInN,EAAEiB,OAAO,CAAC,IAAIO,EAAEzB,EAAEotB,MAAMntB,EAAE,GAAG,EAAE2O,IAAI,OAAOnN,EAAE,IAAIkV,GAAG/V,EAAEwM,KAAKxM,EAAEV,EAAEuB,GAAG,IAAI,CAAC,OAAO,IAAIkV,GAAG/V,EAAEwM,KAAKxM,EAAEV,EAAE,EAAEyW,GAAGpW,UAAU40gB,SAAS,SAASl1gB,GAAG,IAAID,EAAEa,KAAKywD,MAAM6jd,SAASl1gB,GAAGW,EAAEC,KAAKg53C,WAAW1k3B,SAASl1gB,GAAG,IAAImP,GAAGpP,EAAE,CAAC,SAAS,UAAU,MAAM,IAAIqI,GAAG,oEAAoEmI,GAAGzI,GAAG/H,IAAI,aAAa,GAAGa,KAAK4/H,SAAS,CAAC,IAAIvgI,EAAEW,KAAK4/H,SAAS00Y,SAASl1gB,GAAG,OAAOD,EAAE4C,MAAMhC,EAAEV,EAAE,CAAC,OAAOF,EAAE4C,MAAMhC,EAAE,EAAE+V,GAAGpW,UAAUy79B,UAAU,SAAS/79B,GAAGA,EAAEY,KAAKywD,OAAOrxD,EAAEY,KAAKg53C,YAAYh53C,KAAK4/H,UAAUxgI,EAAEY,KAAK4/H,SAAU,EAAE9pH,GAAGpW,UAAU+33C,cAAc,WAAW,OAAO,CAAE,EAAE3h3C,GAAGpW,UAAUytsB,UAAU,WAAW,GAAG,MAAMntsB,KAAK4/H,eAAU,IAAS5/H,KAAK4/H,SAAS,CAAC,IAAIxgI,EAAEY,KAAK4/H,SAASutkB,YAAY,MAAO,CAAC,QAAQntsB,KAAKywD,MAAM08oB,YAAYntsB,KAAKg53C,WAAW7rrB,YAAY/tsB,EAAE,CAAC,MAAO,CAAC,QAAQY,KAAKywD,MAAM08oB,YAAYntsB,KAAKg53C,WAAW7rrB,YAAY,EAAE,IAAIj3rB,GAAGH,GAAG,MAAK,SAAU3W,EAAED,EAAEY,GAAG,OAAOZ,IAAIY,CAAE,GAAEiW,IAAIU,GAAGX,GAAG,MAAK,SAAU3W,EAAED,EAAEY,GAAG,OAAOZ,IAAIY,CAAE,IAAE,SAAUX,EAAED,EAAEY,EAAEV,GAAG,OAAQ2W,GAAG,EAAE7W,EAAEY,EAAEV,EAAG,IAAG4W,GAAGF,GAAG,KAAI,SAAU3W,EAAED,EAAEY,GAAG,OAAOZ,EAAEY,CAAE,IAAE,SAAUX,EAAED,EAAEY,EAAEV,GAAG,OAAOA,EAAE6qH,QAAQ/qH,EAAEY,GAAG,CAAE,IAAGoW,GAAGJ,GAAG,KAAI,SAAU3W,EAAED,EAAEY,GAAG,OAAOZ,EAAEY,CAAE,IAAE,SAAUX,EAAED,EAAEY,EAAEV,GAAG,OAAOA,EAAE6qH,QAAQ/qH,EAAEY,GAAG,CAAE,IAAGuW,GAAGP,GAAG,MAAK,SAAU3W,EAAED,EAAEY,GAAG,OAAOZ,GAAGY,CAAE,IAAE,SAAUX,EAAED,EAAEY,EAAEV,GAAG,OAAOA,EAAE6qH,QAAQ/qH,EAAEY,IAAI,CAAE,IAAGwX,GAAGxB,GAAG,MAAK,SAAU3W,EAAED,EAAEY,GAAG,OAAOZ,GAAGY,CAAE,IAAE,SAAUX,EAAED,EAAEY,EAAEV,GAAG,OAAOA,EAAE6qH,QAAQ/qH,EAAEY,IAAI,CAAE,IAAGqW,GAAG,SAAShX,EAAED,EAAEY,EAAEV,EAAEuB,GAAGZ,KAAKuM,KAAK+B,GAAGtO,KAAK+pJ,OAAO3qJ,EAAEY,KAAK6sc,OAAO1tc,EAAEa,KAAKk53C,SAASn53C,EAAEC,KAAKm53C,kBAAkB953C,EAAEW,KAAKo53C,kBAAkBx43C,CAAE,EAAEwV,GAAGmW,MAAM,SAASntB,EAAED,GAAG,GAAG,IAAIC,EAAEiB,OAAO,OAAOlB,EAAE2C,MAAM,2BAA2B,IAAI/B,EAAEZ,EAAEotB,MAAMntB,EAAE,GAAG,EAAE2O,IAAI,IAAIhO,EAAE,OAAO,KAAK,IAAIV,EAAED,EAAE,GAAG,GAAG,iBAAiBC,GAAGI,MAAMkS,QAAQtS,GAAG,OAAOF,EAAE2C,MAAM,oDAAoD,IAAIlB,EAAE,KAAK,GAAGvB,EAAEwtc,UAAUjsc,EAAEzB,EAAEotB,MAAMltB,EAAEwtc,OAAO,EAAEv+b,KAAK,OAAO,KAAK,IAAItN,EAAE,KAAK,GAAG3B,EAAE653C,YAAYl43C,EAAE7B,EAAEotB,MAAMltB,EAAE653C,SAAS,EAAE5q3C,KAAK,OAAO,KAAK,IAAIhO,EAAE,KAAK,GAAGjB,EAAE,0BAA0BiB,EAAEnB,EAAEotB,MAAMltB,EAAE,uBAAuB,EAAE0O,KAAK,OAAO,KAAK,IAAIjN,EAAE,KAAK,OAAOzB,EAAE,0BAA0ByB,EAAE3B,EAAEotB,MAAMltB,EAAE,uBAAuB,EAAE0O,KAAK,KAAK,IAAIqI,GAAGrW,EAAEa,EAAEI,EAAEV,EAAEQ,EAAE,EAAEsV,GAAG1W,UAAU40gB,SAAS,SAASl1gB,GAAG,OAAO,IAAIm45B,KAAK8he,aAAar53C,KAAK6sc,OAAO7sc,KAAK6sc,OAAOynE,SAASl1gB,GAAG,GAAG,CAACiV,MAAMrU,KAAKk53C,SAAS,WAAW,UAAUA,SAASl53C,KAAKk53C,SAASl53C,KAAKk53C,SAAS5k3B,SAASl1gB,QAAG,EAAOk63C,sBAAsBt53C,KAAKm53C,kBAAkBn53C,KAAKm53C,kBAAkB7k3B,SAASl1gB,QAAG,EAAOm63C,sBAAsBv53C,KAAKo53C,kBAAkBp53C,KAAKo53C,kBAAkB9k3B,SAASl1gB,QAAG,IAAS8lE,OAAOllE,KAAK+pJ,OAAOuqX,SAASl1gB,GAAG,EAAEgX,GAAG1W,UAAUy79B,UAAU,SAAS/79B,GAAGA,EAAEY,KAAK+pJ,QAAQ/pJ,KAAK6sc,QAAQztc,EAAEY,KAAK6sc,QAAQ7sc,KAAKk53C,UAAU953C,EAAEY,KAAKk53C,UAAUl53C,KAAKm53C,mBAAmB/53C,EAAEY,KAAKm53C,mBAAmBn53C,KAAKo53C,mBAAmBh63C,EAAEY,KAAKo53C,kBAAmB,EAAEhj3C,GAAG1W,UAAU+33C,cAAc,WAAW,OAAO,CAAE,EAAErh3C,GAAG1W,UAAUytsB,UAAU,WAAW,IAAI/tsB,EAAE,CAAC,EAAE,OAAOY,KAAK6sc,SAASztc,EAAEytc,OAAO7sc,KAAK6sc,OAAOsgQ,aAAantsB,KAAKk53C,WAAW953C,EAAE853C,SAASl53C,KAAKk53C,SAAS/rrB,aAAantsB,KAAKm53C,oBAAoB/53C,EAAE,uBAAuBY,KAAKm53C,kBAAkBhsrB,aAAantsB,KAAKo53C,oBAAoBh63C,EAAE,uBAAuBY,KAAKo53C,kBAAkBjsrB,aAAa,CAAC,gBAAgBntsB,KAAK+pJ,OAAOojjB,YAAY/tsB,EAAE,EAAE,IAAIiX,GAAG,SAASjX,GAAGY,KAAKuM,KAAKwB,GAAG/N,KAAKywD,MAAMrxD,CAAE,EAAEiX,GAAGkW,MAAM,SAASntB,EAAED,GAAG,GAAG,IAAIC,EAAEiB,OAAO,OAAOlB,EAAE2C,MAAM,mCAAmC1C,EAAEiB,OAAO,GAAG,aAAa,IAAIN,EAAEZ,EAAEotB,MAAMntB,EAAE,GAAG,GAAG,OAAOW,EAAE,UAAUA,EAAEwM,KAAK6V,MAAM,WAAWriB,EAAEwM,KAAK6V,MAAM,UAAUriB,EAAEwM,KAAK6V,KAAKjjB,EAAE2C,MAAM,wDAAwD6N,GAAG5P,EAAEwM,MAAM,aAAa,IAAI8J,GAAGtW,GAAG,IAAI,EAAEsW,GAAG3W,UAAU40gB,SAAS,SAASl1gB,GAAG,IAAID,EAAEa,KAAKywD,MAAM6jd,SAASl1gB,GAAG,GAAG,iBAAiBD,EAAE,OAAOA,EAAEkB,OAAO,GAAGZ,MAAMkS,QAAQxS,GAAG,OAAOA,EAAEkB,OAAO,MAAM,IAAImH,GAAG,2DAA2DmI,GAAGzI,GAAG/H,IAAI,YAAY,EAAEkX,GAAG3W,UAAUy79B,UAAU,SAAS/79B,GAAGA,EAAEY,KAAKywD,MAAO,EAAEp6C,GAAG3W,UAAU+33C,cAAc,WAAW,OAAO,CAAE,EAAEph3C,GAAG3W,UAAUytsB,UAAU,WAAW,IAAI/tsB,EAAE,CAAC,UAAU,OAAOY,KAAKm79B,WAAU,SAAUh89B,GAAGC,EAAEyC,KAAK1C,EAAEgusB,YAAc,IAAG/tsB,CAAC,EAAE,IAAIoX,GAAG,CAAC,KAAKN,GAAG,KAAKQ,GAAG,IAAIP,GAAG,IAAIF,GAAG,KAAKsB,GAAG,KAAKjB,GAAG4jC,MAAM3yC,GAAGiE,GAAGiK,GAAGo0I,QAAQtiJ,GAAGiy3C,KAAK9j3C,GAAG+j3C,SAASlk3C,GAAG4h3C,SAASnv3C,GAAGk9D,OAAO79D,GAAGkjJ,MAAM9iJ,GAAGwu3C,GAAGpg3C,GAAG,WAAWR,GAAGo6O,YAAYn6O,GAAG,kBAAkBA,GAAG,kBAAkBA,GAAGjV,OAAOgW,GAAGqj3C,IAAIlk3C,GAAGmk3C,QAAQvy3C,GAAGX,MAAMmP,GAAGm0I,OAAOxiJ,GAAG,gBAAgB6O,GAAGgnC,OAAO71C,GAAGxF,MAAM+T,GAAG44V,KAAK7kW,GAAGkT,OAAOxV,GAAG,aAAaQ,GAAG,WAAWA,GAAG,YAAYA,GAAG,YAAYA,GAAG6x3C,IAAI9v3C,GAAGgvZ,OAAO/uZ,IAAI,SAASwO,GAAGnZ,EAAED,GAAG,IAAIY,EAAEZ,EAAE,GAAGE,EAAEF,EAAE,GAAGyB,EAAEzB,EAAE,GAAG6B,EAAE7B,EAAE,GAAGY,EAAEA,EAAEu0gB,SAASl1gB,GAAGC,EAAEA,EAAEi1gB,SAASl1gB,GAAGwB,EAAEA,EAAE0zgB,SAASl1gB,GAAG,IAAIkB,EAAEU,EAAEA,EAAEszgB,SAASl1gB,GAAG,EAAE0B,EAAEmG,GAAGlH,EAAEV,EAAEuB,EAAEN,GAAG,GAAGQ,EAAE,MAAM,IAAI0G,GAAG1G,GAAG,OAAO,IAAI4F,GAAG3G,EAAE,IAAIO,EAAEjB,EAAE,IAAIiB,EAAEM,EAAE,IAAIN,EAAEA,EAAE,CAAC,SAASsW,GAAGxX,EAAED,GAAG,OAAOC,KAAKD,CAAC,CAAC,SAASgY,GAAG/X,EAAED,GAAG,IAAIY,EAAEZ,EAAEC,GAAG,YAAO,IAASW,EAAE,KAAKA,CAAC,CAAC,SAAS0X,GAAGrY,GAAG,MAAO,CAACmN,KAAKnN,EAAE,CAAC,SAASqZ,GAAGrZ,GAAG,MAAO,CAACokB,OAAO,UAAUriB,MAAM/B,EAAE,CAAC,SAASsZ,GAAGtZ,GAAG,MAAO,CAACokB,OAAO,QAAQriB,MAAM/B,EAAE,CAAC,SAASuX,GAAGvX,GAAG,MAAO,gBAAgBA,EAAE,kBAAkB,4BAA4BA,EAAE,gBAAgB,CAAC,SAASkZ,GAAGlZ,GAAG,QAASA,EAAE4he,YAAY5he,EAAE4he,WAAW5nb,WAAW54C,QAAQ,SAAS,CAAC,CAAC,SAASmX,GAAGvY,GAAG,QAASA,EAAE4he,YAAY5he,EAAE4he,WAAW78N,YAAY,CAAC,SAASjsP,GAAG9Y,GAAG,OAAOA,aAAa+lC,OAAO,SAAS/lC,aAAaU,OAAO,SAASV,aAAa6T,QAAQ,UAAUxT,MAAMkS,QAAQvS,GAAG,QAAQ,OAAOA,EAAE,cAAcA,CAAC,CAAC,SAAS0X,GAAG1X,GAAG,MAAO,iBAAiBA,GAAG,OAAOA,IAAIK,MAAMkS,QAAQvS,EAAE,CAAC,SAASqX,GAAGrX,GAAG,OAAOA,CAAC,CAAC,SAAS2X,GAAG3X,EAAED,EAAEY,GAAG,YAAO,IAASX,EAAEA,OAAE,IAASD,EAAEA,OAAE,IAASY,EAAEA,OAAE,CAAM,CAAC,SAASkY,GAAG7Y,EAAED,EAAEY,EAAEV,EAAEuB,GAAG,OAAOmW,UAAUhX,IAAIa,EAAEvB,EAAEU,QAAG,EAAOX,EAAEmD,QAAQpD,EAAEoD,QAAQ,CAAC,SAASsU,GAAGzX,EAAED,EAAEY,GAAG,GAAG,WAAWmY,GAAGnY,GAAG,OAAOgX,GAAG3X,EAAEmD,QAAQpD,EAAEoD,SAAS,IAAIlD,EAAED,EAAEkjxB,MAAMjixB,OAAO,GAAG,IAAIhB,EAAE,OAAOD,EAAEkjxB,MAAM,GAAG,GAAG,GAAGvixB,GAAGX,EAAEkjxB,MAAM,GAAG,GAAG,OAAOljxB,EAAEkjxB,MAAM,GAAG,GAAG,GAAGvixB,GAAGX,EAAEkjxB,MAAMjjxB,EAAE,GAAG,GAAG,OAAOD,EAAEkjxB,MAAMjjxB,EAAE,GAAG,GAAG,IAAIuB,EAAEgK,GAAGxL,EAAEkjxB,MAAMjzvB,KAAI,SAAUjwB,GAAG,OAAOA,EAAE,EAAG,IAAGW,GAAG,OAAOX,EAAEkjxB,MAAM1hxB,GAAG,EAAE,CAAC,SAASgY,GAAGxZ,EAAED,EAAEY,GAAG,IAAIV,OAAE,IAASD,EAAEinD,KAAKjnD,EAAEinD,KAAK,EAAE,GAAG,WAAWnuC,GAAGnY,GAAG,OAAOgX,GAAG3X,EAAEmD,QAAQpD,EAAEoD,SAAS,IAAI3B,EAAExB,EAAEkjxB,MAAMjixB,OAAO,GAAG,IAAIO,EAAE,OAAOxB,EAAEkjxB,MAAM,GAAG,GAAG,GAAGvixB,GAAGX,EAAEkjxB,MAAM,GAAG,GAAG,OAAOljxB,EAAEkjxB,MAAM,GAAG,GAAG,GAAGvixB,GAAGX,EAAEkjxB,MAAM1hxB,EAAE,GAAG,GAAG,OAAOxB,EAAEkjxB,MAAM1hxB,EAAE,GAAG,GAAG,IAAII,EAAE4J,GAAGxL,EAAEkjxB,MAAMjzvB,KAAI,SAAUjwB,GAAG,OAAOA,EAAE,EAAG,IAAGW,GAAGO,EAAE,SAASlB,EAAED,EAAEY,EAAEV,GAAG,IAAIuB,EAAEvB,EAAEU,EAAEiB,EAAE5B,EAAEW,EAAE,OAAO,IAAIa,EAAE,EAAE,IAAIzB,EAAE6B,EAAEJ,GAAGiC,KAAK6yF,IAAIv2F,EAAE6B,GAAG,IAAI6B,KAAK6yF,IAAIv2F,EAAEyB,GAAG,EAAE,CAA9F,CAAgGb,EAAEV,EAAED,EAAEkjxB,MAAMthxB,GAAG,GAAG5B,EAAEkjxB,MAAMthxB,EAAE,GAAG,IAAIF,EAAE1B,EAAEkjxB,MAAMthxB,GAAG,GAAGqB,EAAEjD,EAAEkjxB,MAAMthxB,EAAE,GAAG,GAAGwB,EAAE+G,GAAGpK,EAAEoN,OAAOkK,GAAG,GAAGrX,EAAEu7W,YAAY,QAAQv7W,EAAEu7W,WAAW,CAAC,IAAI73W,EAAEsS,GAAGhW,EAAEu7W,YAAYn4W,EAAE,SAASpD,EAAED,GAAG,OAAO2D,EAAEw3D,QAAQx3D,EAAE2sP,YAAY3sP,EAAE2qY,QAAQruY,GAAG0D,EAAE2qY,QAAQtuY,GAAGmB,GAAG,CAAE,CAAC,MAAO,mBAAmBQ,EAAEwzgB,SAAS,CAACA,SAAS,WAAW,IAAI,IAAIl1gB,EAAE,GAAGD,EAAEiB,UAAUC,OAAOlB,KAAKC,EAAED,GAAGiB,UAAUjB,GAAG,IAAIY,EAAEe,EAAEwzgB,SAAS/zgB,WAAM,EAAOnB,GAAGC,EAAEgD,EAAEiygB,SAAS/zgB,WAAM,EAAOnB,GAAG,QAAG,IAASW,QAAG,IAASV,EAAE,OAAOmD,EAAEzC,EAAEV,EAAEiB,EAAE,GAAGkC,EAAE1B,EAAEuB,EAAE/B,EAAE,CAAC,SAASyX,GAAG3Y,EAAED,EAAEY,GAAG,MAAO,UAAUZ,EAAEoN,KAAKxM,EAAE2G,GAAG6lB,MAAMxsB,GAAG,cAAcZ,EAAEoN,KAAKxM,EAAE4G,GAAG4nN,WAAWxuN,EAAEwE,YAAY,kBAAkBpF,EAAEoN,KAAKxM,EAAEgH,GAAGwnN,WAAWxuN,EAAEwE,YAAY2T,GAAGnY,KAAKZ,EAAEoN,MAAM,SAASpN,EAAEoN,MAAMpN,EAAEud,OAAO3c,KAAKA,OAAE,GAAQgX,GAAGhX,EAAEX,EAAEmD,QAAQpD,EAAEoD,QAAQ,CAACmG,GAAGoiG,SAASt0F,GAAG,CAAC1U,MAAM,CAAC,CAACsgB,KAAK,SAAS,CAAC9T,IAAI,SAASlP,EAAED,GAAG,MAAM,IAAIqI,GAAGrI,EAAE,GAAGm1gB,SAASl1gB,GAAG,GAAGy63C,OAAO,CAACvr3C,GAAG,CAACW,IAAI,SAAS7P,EAAED,GAAG,OAAOwQ,GAAGzI,GAAG/H,EAAE,GAAGm1gB,SAASl1gB,IAAI,GAAG,UAAU,CAAC0P,GAAGf,GAAG,GAAG,CAACI,IAAI,SAAS/O,EAAED,GAAG,OAAOA,EAAE,GAAGm1gB,SAASl1gB,GAAGyuH,SAAS,GAAGutP,IAAI,CAACjtW,GAAG,CAACJ,GAAGA,GAAGA,IAAIwK,IAAIy0vB,KAAK,CAAC7+vB,GAAG,CAACJ,GAAGA,GAAGA,GAAGA,IAAIwK,IAAIxM,IAAI,CAACQ,KAAK4C,GAAGip3C,UAAU,CAAC,CAAC,CAAC9p3C,IAAI,SAASlP,EAAED,GAAG,OAAOyX,GAAGzX,EAAE,GAAGm1gB,SAASl1gB,GAAGA,EAAEopC,aAAa,GAAG,CAAC,CAACl6B,GAAG+B,IAAI,SAASjR,EAAED,GAAG,IAAIY,EAAEZ,EAAE,GAAG,OAAOyX,GAAGzX,EAAE,GAAGm1gB,SAASl1gB,GAAGW,EAAEu0gB,SAASl1gB,GAAG,KAAK+D,IAAI,CAACoJ,KAAK0C,GAAGmp3C,UAAU,CAAC,CAAC,CAAC9p3C,IAAI,SAASlP,EAAED,GAAG,OAAOgY,GAAGhY,EAAE,GAAGm1gB,SAASl1gB,GAAGA,EAAEopC,aAAa,GAAG,CAAC,CAACl6B,GAAG+B,IAAI,SAASjR,EAAED,GAAG,IAAIY,EAAEZ,EAAE,GAAG,OAAOgY,GAAGhY,EAAE,GAAGm1gB,SAASl1gB,GAAGW,EAAEu0gB,SAASl1gB,GAAG,KAAK,gBAAgB,CAAC6P,GAAG,CAACX,IAAI,SAASlP,EAAED,GAAG,OAAOgY,GAAGhY,EAAE,GAAGm1gB,SAASl1gB,GAAGA,EAAEw43C,cAAc,CAAC,EAAE,GAAGpv1C,WAAW,CAACn4B,GAAG,GAAG,SAASjR,GAAG,OAAOA,EAAEopC,YAAY,GAAG,gBAAgB,CAACl6B,GAAG,GAAG,SAASlP,GAAG,OAAOA,EAAE443C,cAAc,GAAGzs2C,GAAG,CAACtc,GAAG,GAAG,SAAS7P,GAAG,OAAOA,EAAEmsB,IAAI,GAAGoU,KAAK,CAAC5xB,GAAG,GAAG,SAAS3O,GAAG,OAAOA,EAAEohS,QAAQ7gQ,IAAI,GAAG,kBAAkB,CAAC5xB,GAAG,GAAG,SAAS3O,GAAG,OAAOA,EAAEohS,QAAQs5lC,gBAAgB,CAAC,GAAG,gBAAgB,CAAC/r3C,GAAG,GAAG,SAAS3O,GAAG,OAAOA,EAAEohS,QAAQu5lC,cAAc,CAAC,GAAGC,YAAY,CAAC/q3C,GAAG,GAAG,SAAS7P,GAAG,YAAO,IAASA,EAAEohS,QAAQw5lC,YAAY,KAAK563C,EAAEohS,QAAQw5lC,WAAW,GAAG,IAAI,CAACjs3C,GAAG0J,GAAG1J,IAAI,SAAS3O,EAAED,GAAG,IAAI,IAAIY,EAAE,EAAEV,EAAE,EAAEuB,EAAEzB,EAAEE,EAAEuB,EAAEP,OAAOhB,GAAG,EAAEU,GAAGa,EAAEvB,GAAGi1gB,SAASl1gB,GAAG,OAAOW,CAAC,GAAG,IAAI,CAACgO,GAAG0J,GAAG1J,IAAI,SAAS3O,EAAED,GAAG,IAAI,IAAIY,EAAE,EAAEV,EAAE,EAAEuB,EAAEzB,EAAEE,EAAEuB,EAAEP,OAAOhB,GAAG,EAAEU,GAAGa,EAAEvB,GAAGi1gB,SAASl1gB,GAAG,OAAOW,CAAC,GAAG,IAAI,CAACwM,KAAKwB,GAAGqq3C,UAAU,CAAC,CAAC,CAACrq3C,GAAGA,IAAI,SAAS3O,EAAED,GAAG,IAAIY,EAAEZ,EAAE,GAAG,OAAOA,EAAE,GAAGm1gB,SAASl1gB,GAAGW,EAAEu0gB,SAASl1gB,EAAE,GAAG,CAAC,CAAC2O,IAAI,SAAS3O,EAAED,GAAG,OAAQA,EAAE,GAAGm1gB,SAASl1gB,EAAE,KAAK,IAAI,CAAC2O,GAAG,CAACA,GAAGA,IAAI,SAAS3O,EAAED,GAAG,IAAIY,EAAEZ,EAAE,GAAG,OAAOA,EAAE,GAAGm1gB,SAASl1gB,GAAGW,EAAEu0gB,SAASl1gB,EAAE,GAAG,IAAI,CAAC2O,GAAG,CAACA,GAAGA,IAAI,SAAS3O,EAAED,GAAG,IAAIY,EAAEZ,EAAE,GAAG,OAAOA,EAAE,GAAGm1gB,SAASl1gB,GAAGW,EAAEu0gB,SAASl1gB,EAAE,GAAGykY,IAAI,CAAC91X,GAAG,GAAG,WAAW,OAAOlL,KAAKsvN,GAAG,GAAGt0M,GAAG,CAAC9P,GAAG,GAAG,WAAW,OAAOlL,KAAKsmC,EAAE,GAAGhqC,EAAE,CAAC4O,GAAG,GAAG,WAAW,OAAOlL,KAAK6B,CAAC,GAAG,IAAI,CAACqJ,GAAG,CAACA,GAAGA,IAAI,SAAS3O,EAAED,GAAG,IAAIY,EAAEZ,EAAE,GAAG,OAAO0D,KAAK6yF,IAAIv2F,EAAE,GAAGm1gB,SAASl1gB,GAAGW,EAAEu0gB,SAASl1gB,GAAG,GAAGq2F,KAAK,CAAC1nF,GAAG,CAACA,IAAI,SAAS3O,EAAED,GAAG,OAAO0D,KAAK4yF,KAAKt2F,EAAE,GAAGm1gB,SAASl1gB,GAAG,GAAGq/xB,MAAM,CAAC1wxB,GAAG,CAACA,IAAI,SAAS3O,EAAED,GAAG,OAAO0D,KAAKwnB,IAAIlrB,EAAE,GAAGm1gB,SAASl1gB,IAAIyD,KAAK26xB,IAAI,GAAGvsxB,GAAG,CAAClD,GAAG,CAACA,IAAI,SAAS3O,EAAED,GAAG,OAAO0D,KAAKwnB,IAAIlrB,EAAE,GAAGm1gB,SAASl1gB,GAAG,GAAG8pC,KAAK,CAACn7B,GAAG,CAACA,IAAI,SAAS3O,EAAED,GAAG,OAAO0D,KAAKwnB,IAAIlrB,EAAE,GAAGm1gB,SAASl1gB,IAAIyD,KAAKsvN,GAAG,GAAG1+F,IAAI,CAAC1lH,GAAG,CAACA,IAAI,SAAS3O,EAAED,GAAG,OAAO0D,KAAK4wH,IAAIt0H,EAAE,GAAGm1gB,SAASl1gB,GAAG,GAAGg1H,IAAI,CAACrmH,GAAG,CAACA,IAAI,SAAS3O,EAAED,GAAG,OAAO0D,KAAKuxH,IAAIj1H,EAAE,GAAGm1gB,SAASl1gB,GAAG,GAAG0qC,IAAI,CAAC/7B,GAAG,CAACA,IAAI,SAAS3O,EAAED,GAAG,OAAO0D,KAAKinC,IAAI3qC,EAAE,GAAGm1gB,SAASl1gB,GAAG,GAAGo1H,KAAK,CAACzmH,GAAG,CAACA,IAAI,SAAS3O,EAAED,GAAG,OAAO0D,KAAK2xH,KAAKr1H,EAAE,GAAGm1gB,SAASl1gB,GAAG,GAAGopT,KAAK,CAACz6S,GAAG,CAACA,IAAI,SAAS3O,EAAED,GAAG,OAAO0D,KAAK2lT,KAAKrpT,EAAE,GAAGm1gB,SAASl1gB,GAAG,GAAG+nK,KAAK,CAACp5J,GAAG,CAACA,IAAI,SAAS3O,EAAED,GAAG,OAAO0D,KAAKskK,KAAKhoK,EAAE,GAAGm1gB,SAASl1gB,GAAG,GAAGyO,IAAI,CAACE,GAAG0J,GAAG1J,IAAI,SAAS3O,EAAED,GAAG,OAAO0D,KAAKgL,IAAItN,MAAMsC,KAAK1D,EAAEkwB,KAAI,SAAUlwB,GAAG,OAAOA,EAAEm1gB,SAASl1gB,EAAG,IAAG,GAAGuO,IAAI,CAACI,GAAG0J,GAAG1J,IAAI,SAAS3O,EAAED,GAAG,OAAO0D,KAAK8K,IAAIpN,MAAMsC,KAAK1D,EAAEkwB,KAAI,SAAUlwB,GAAG,OAAOA,EAAEm1gB,SAASl1gB,EAAG,IAAG,GAAG4mH,IAAI,CAACj4G,GAAG,CAACA,IAAI,SAAS3O,EAAED,GAAG,OAAO0D,KAAKmjH,IAAI7mH,EAAE,GAAGm1gB,SAASl1gB,GAAG,GAAG6jD,MAAM,CAACl1C,GAAG,CAACA,IAAI,SAAS3O,EAAED,GAAG,IAAIY,EAAEZ,EAAE,GAAGm1gB,SAASl1gB,GAAG,OAAOW,EAAE,GAAG8C,KAAKogD,OAAOljD,GAAG8C,KAAKogD,MAAMljD,EAAE,GAAGuN,MAAM,CAACS,GAAG,CAACA,IAAI,SAAS3O,EAAED,GAAG,OAAO0D,KAAKyK,MAAMnO,EAAE,GAAGm1gB,SAASl1gB,GAAG,GAAGgO,KAAK,CAACW,GAAG,CAACA,IAAI,SAAS3O,EAAED,GAAG,OAAO0D,KAAKuK,KAAKjO,EAAE,GAAGm1gB,SAASl1gB,GAAG,GAAG,YAAY,CAAC+P,GAAG,CAACb,GAAGW,IAAI,SAAS7P,EAAED,GAAG,IAAIY,EAAEZ,EAAE,GAAGE,EAAEF,EAAE,GAAG,OAAOC,EAAEopC,aAAazoC,EAAEoB,SAAS9B,EAAE8B,KAAK,GAAG,eAAe,CAACgO,GAAG,CAACF,IAAI,SAAS7P,EAAED,GAAG,IAAIY,EAAEZ,EAAE,GAAG,OAAOC,EAAEmsB,OAAOxrB,EAAEoB,KAAK,GAAG,iBAAiB,CAACgO,GAAG,CAACb,IAAI,SAASlP,EAAED,GAAG,IAAIY,EAAEZ,EAAE,GAAG,OAAOC,EAAE443C,iBAAiBj43C,EAAEoB,KAAK,GAAG,WAAW,CAACgO,GAAG,CAACb,GAAGW,IAAI,SAAS7P,EAAED,GAAG,IAAIY,EAAEZ,EAAE,GAAGE,EAAEF,EAAE,GAAGyB,EAAExB,EAAEopC,aAAazoC,EAAEoB,OAAOH,EAAE3B,EAAE8B,MAAM,cAAcP,UAAUI,GAAGJ,EAAEI,CAAC,GAAG,cAAc,CAACmO,GAAG,CAACF,IAAI,SAAS7P,EAAED,GAAG,IAAIY,EAAEZ,EAAE,GAAGE,EAAED,EAAEmsB,KAAK3qB,EAAEb,EAAEoB,MAAM,cAAc9B,UAAUuB,GAAGvB,EAAEuB,CAAC,GAAG,WAAW,CAACuO,GAAG,CAACb,GAAGW,IAAI,SAAS7P,EAAED,GAAG,IAAIY,EAAEZ,EAAE,GAAGE,EAAEF,EAAE,GAAGyB,EAAExB,EAAEopC,aAAazoC,EAAEoB,OAAOH,EAAE3B,EAAE8B,MAAM,cAAcP,UAAUI,GAAGJ,EAAEI,CAAC,GAAG,cAAc,CAACmO,GAAG,CAACF,IAAI,SAAS7P,EAAED,GAAG,IAAIY,EAAEZ,EAAE,GAAGE,EAAED,EAAEmsB,KAAK3qB,EAAEb,EAAEoB,MAAM,cAAc9B,UAAUuB,GAAGvB,EAAEuB,CAAC,GAAG,YAAY,CAACuO,GAAG,CAACb,GAAGW,IAAI,SAAS7P,EAAED,GAAG,IAAIY,EAAEZ,EAAE,GAAGE,EAAEF,EAAE,GAAGyB,EAAExB,EAAEopC,aAAazoC,EAAEoB,OAAOH,EAAE3B,EAAE8B,MAAM,cAAcP,UAAUI,GAAGJ,GAAGI,CAAC,GAAG,eAAe,CAACmO,GAAG,CAACF,IAAI,SAAS7P,EAAED,GAAG,IAAIY,EAAEZ,EAAE,GAAGE,EAAED,EAAEmsB,KAAK3qB,EAAEb,EAAEoB,MAAM,cAAc9B,UAAUuB,GAAGvB,GAAGuB,CAAC,GAAG,YAAY,CAACuO,GAAG,CAACb,GAAGW,IAAI,SAAS7P,EAAED,GAAG,IAAIY,EAAEZ,EAAE,GAAGE,EAAEF,EAAE,GAAGyB,EAAExB,EAAEopC,aAAazoC,EAAEoB,OAAOH,EAAE3B,EAAE8B,MAAM,cAAcP,UAAUI,GAAGJ,GAAGI,CAAC,GAAG,eAAe,CAACmO,GAAG,CAACF,IAAI,SAAS7P,EAAED,GAAG,IAAIY,EAAEZ,EAAE,GAAGE,EAAED,EAAEmsB,KAAK3qB,EAAEb,EAAEoB,MAAM,cAAc9B,UAAUuB,GAAGvB,GAAGuB,CAAC,GAAG,aAAa,CAACuO,GAAG,CAACF,IAAI,SAAS7P,EAAED,GAAG,OAAOA,EAAE,GAAGgC,SAAS/B,EAAEopC,YAAY,GAAG,gBAAgB,CAACr5B,GAAG,GAAG,SAAS/P,GAAG,OAAO,OAAOA,EAAEmsB,WAAM,IAASnsB,EAAEmsB,IAAI,GAAG,iBAAiB,CAACpc,GAAG,CAACL,GAAGR,KAAK,SAASlP,EAAED,GAAG,OAAOA,EAAE,GAAGgC,MAAMX,QAAQpB,EAAE443C,iBAAiB,CAAC,GAAG,eAAe,CAAC7o3C,GAAG,CAACL,GAAGG,KAAK,SAAS7P,EAAED,GAAG,OAAOA,EAAE,GAAGgC,MAAMX,QAAQpB,EAAEmsB,OAAO,CAAC,GAAG,kBAAkB,CAACpc,GAAG,CAACb,GAAGQ,GAAGG,KAAK,SAAS7P,EAAED,GAAG,IAAIY,EAAEZ,EAAE,GAAG,OAAOA,EAAE,GAAGgC,MAAMX,QAAQpB,EAAEopC,aAAazoC,EAAEoB,SAAS,CAAC,GAAG,kBAAkB,CAACgO,GAAG,CAACb,GAAGQ,GAAGG,KAAK,SAAS7P,EAAED,GAAG,IAAIY,EAAEZ,EAAE,GAAGE,EAAEF,EAAE,GAAG,OAAO,SAASC,EAAED,EAAEY,EAAEV,GAAG,KAAKU,GAAGV,GAAG,CAAC,IAAIuB,EAAEb,EAAEV,GAAG,EAAE,GAAGF,EAAEyB,KAAKxB,EAAE,OAAO,EAAGD,EAAEyB,GAAGxB,EAAEC,EAAEuB,EAAE,EAAEb,EAAEa,EAAE,CAAE,CAAC,OAAO,CAAE,CAA9F,CAAgGxB,EAAEopC,aAAazoC,EAAEoB,OAAO9B,EAAE8B,MAAM,EAAE9B,EAAE8B,MAAMd,OAAO,EAAE,GAAG+E,IAAI,CAACmH,KAAK4C,GAAGip3C,UAAU,CAAC,CAAC,CAACjp3C,GAAGA,IAAI,SAAS/P,EAAED,GAAG,IAAIY,EAAEZ,EAAE,GAAG,OAAOA,EAAE,GAAGm1gB,SAASl1gB,IAAIW,EAAEu0gB,SAASl1gB,EAAE,GAAG,CAACqY,GAAGtI,IAAI,SAAS/P,EAAED,GAAG,IAAI,IAAIY,EAAE,EAAEV,EAAEF,EAAEY,EAAEV,EAAEgB,OAAON,GAAG,EAAE,IAAIV,EAAEU,GAAGu0gB,SAASl1gB,GAAG,OAAO,EAAG,OAAO,CAAE,KAAK6h8B,IAAI,CAAC107B,KAAK4C,GAAGip3C,UAAU,CAAC,CAAC,CAACjp3C,GAAGA,IAAI,SAAS/P,EAAED,GAAG,IAAIY,EAAEZ,EAAE,GAAG,OAAOA,EAAE,GAAGm1gB,SAASl1gB,IAAIW,EAAEu0gB,SAASl1gB,EAAE,GAAG,CAACqY,GAAGtI,IAAI,SAAS/P,EAAED,GAAG,IAAI,IAAIY,EAAE,EAAEV,EAAEF,EAAEY,EAAEV,EAAEgB,OAAON,GAAG,EAAE,GAAGV,EAAEU,GAAGu0gB,SAASl1gB,GAAG,OAAO,EAAG,OAAO,CAAE,KAAK,IAAI,CAAC+P,GAAG,CAACA,IAAI,SAAS/P,EAAED,GAAG,OAAQA,EAAE,GAAGm1gB,SAASl1gB,EAAE,GAAG,sBAAsB,CAAC+P,GAAG,CAACb,IAAI,SAASlP,EAAED,GAAG,IAAIY,EAAEX,EAAEohS,SAASphS,EAAEohS,QAAQy5lC,kBAAkB,OAAQl63C,GAAGA,EAAEZ,EAAE,GAAGm1gB,SAASl1gB,GAAG,GAAG863C,OAAO,CAAC5r3C,GAAG,CAACA,IAAI,SAASlP,EAAED,GAAG,OAAOA,EAAE,GAAGm1gB,SAASl1gB,GAAGwxD,aAAa,GAAGup0C,SAAS,CAAC7r3C,GAAG,CAACA,IAAI,SAASlP,EAAED,GAAG,OAAOA,EAAE,GAAGm1gB,SAASl1gB,GAAGmQ,aAAa,GAAGvN,OAAO,CAACsM,GAAGmJ,GAAGxI,IAAI,SAAS7P,EAAED,GAAG,OAAOA,EAAEkwB,KAAI,SAAUlwB,GAAG,OAAOgI,GAAGhI,EAAEm1gB,SAASl1gB,GAAI,IAAGyN,KAAK,GAAG,GAAG,kBAAkB,CAACyB,GAAG,CAACU,IAAI,SAAS5P,EAAED,GAAG,OAAOA,EAAE,GAAGm1gB,SAASl1gB,GAAGi43C,gBAAgB,KAAK,IAAI7/2C,GAAG,SAASpY,EAAED,GAAGa,KAAKghe,WAAW5he,EAAEY,KAAKo63C,gBAAgB,CAAC,EAAEp63C,KAAKq63C,WAAW,IAAIpy3C,GAAGjI,KAAKu40C,cAAcp50C,EAAE,SAASC,GAAG,MAAO,UAAUA,EAAEmN,MAAMuK,GAAG1X,EAAEmD,SAAS,IAAImE,GAAG,EAAE,EAAE,EAAE,GAAG,UAAUtH,EAAEmN,KAAK7F,GAAG6lB,MAAMntB,EAAEmD,UAAU,UAAK,IAASnD,EAAEmD,QAAQ,KAAKnD,EAAEmD,OAAO,CAA/I,CAAiJpD,GAAG,KAAKa,KAAKs63C,YAAYn73C,GAAG,SAASA,EAAEoN,KAAKpN,EAAEud,OAAO,IAAK,EAAE,SAASpF,GAAGlY,GAAG,OAAOK,MAAMkS,QAAQvS,IAAIA,EAAEiB,OAAO,GAAG,iBAAiBjB,EAAE,IAAIA,EAAE,KAAKoX,EAAE,CAAC,SAASU,GAAG9X,EAAED,GAAG,IAAIY,EAAE,IAAIgJ,GAAGyN,GAAG,GAAGrX,EAAE,SAASC,GAAG,IAAID,EAAE,CAACouH,MAAMp/G,GAAG4O,OAAOzO,GAAGy7I,OAAOh8I,GAAGws3C,KAAKjs3C,GAAGu7I,QAAQ16I,GAAG4nY,UAAUroY,GAAG8r3C,cAAchs3C,IAAI,MAAO,UAAUpP,EAAEmN,KAAKuC,GAAG3P,EAAEC,EAAE+B,QAAQ8N,GAAG7P,EAAEiB,QAAQlB,EAAEC,EAAEmN,KAAK,CAA/J,CAAiKpN,QAAG,GAAQE,EAAEU,EAAEwsB,MAAMntB,OAAE,OAAO,OAAO,EAAOD,GAAG,WAAWA,EAAEoN,KAAK,CAACks3C,eAAe,eAAU,GAAQ,OAAOp53C,EAAEoZ,GAAG,IAAIjB,GAAGnY,EAAEF,IAAIuZ,GAAG3Y,EAAEkrV,OAAO,CAACzzU,GAAG9X,UAAU+63C,6BAA6B,SAASr73C,EAAED,EAAEY,EAAEV,EAAEuB,EAAEI,GAAG,OAAOhB,KAAKq63C,WAAW75lC,QAAQphS,EAAEY,KAAKq63C,WAAWlozC,QAAQhzE,EAAEa,KAAKq63C,WAAWzC,aAAa733C,EAAEC,KAAKq63C,WAAWtC,UAAU143C,EAAEW,KAAKq63C,WAAW3C,gBAAgB923C,GAAG,KAAKZ,KAAKq63C,WAAWxC,iBAAiB723C,EAAEhB,KAAKghe,WAAWszC,SAASt0gB,KAAKq63C,WAAW,EAAE7i3C,GAAG9X,UAAU40gB,SAAS,SAASl1gB,EAAED,EAAEY,EAAEV,EAAEuB,EAAEI,GAAGhB,KAAKq63C,WAAW75lC,QAAQphS,EAAEY,KAAKq63C,WAAWlozC,QAAQhzE,GAAG,KAAKa,KAAKq63C,WAAWzC,aAAa733C,GAAG,KAAKC,KAAKq63C,WAAWtC,UAAU143C,EAAEW,KAAKq63C,WAAW3C,gBAAgB923C,GAAG,KAAKZ,KAAKq63C,WAAWxC,iBAAiB723C,GAAG,KAAK,IAAI,IAAIV,EAAEN,KAAKghe,WAAWszC,SAASt0gB,KAAKq63C,YAAY,GAAG,MAAM/53C,GAAG,iBAAiBA,GAAGA,GAAGA,EAAE,OAAON,KAAKu40C,cAAc,GAAGv40C,KAAKs63C,eAAeh63C,KAAKN,KAAKs63C,aAAa,MAAM,IAAI9y3C,GAAG,+BAA+BlI,OAAOgU,KAAKtT,KAAKs63C,aAAajr2C,KAAI,SAAUjwB,GAAG,OAAOkb,KAAKb,UAAUra,EAAG,IAAGyN,KAAK,MAAM,eAAeyN,KAAKb,UAAUnZ,GAAG,aAAa,OAAOA,CAAC,CAAC,MAAMlB,GAAG,OAAOY,KAAKo63C,gBAAgBh73C,EAAE2yB,WAAW/xB,KAAKo63C,gBAAgBh73C,EAAE2yB,UAAS,EAAG,oBAAoB1K,SAASA,QAAQC,KAAKloB,EAAE2yB,UAAU/xB,KAAKu40C,aAAa,CAAC,EAAE,IAAI7g0C,GAAG,SAAStY,EAAED,GAAGa,KAAKoiB,KAAKhjB,EAAEY,KAAK063C,iBAAiBv73C,EAAEa,KAAK263C,iBAAiB,aAAav73C,IAAIqJ,GAAGtJ,EAAE6he,WAAY,EAAEtpd,GAAGhY,UAAU+63C,6BAA6B,SAASr73C,EAAED,EAAEY,EAAEV,EAAEuB,EAAEI,GAAG,OAAOhB,KAAK063C,iBAAiBD,6BAA6Br73C,EAAED,EAAEY,EAAEV,EAAEuB,EAAEI,EAAE,EAAE0W,GAAGhY,UAAU40gB,SAAS,SAASl1gB,EAAED,EAAEY,EAAEV,EAAEuB,EAAEI,GAAG,OAAOhB,KAAK063C,iBAAiBpm3B,SAASl1gB,EAAED,EAAEY,EAAEV,EAAEuB,EAAEI,EAAE,EAAE,IAAIqX,GAAG,SAASjZ,EAAED,EAAEY,EAAEV,GAAGW,KAAKoiB,KAAKhjB,EAAEY,KAAK463C,UAAU763C,EAAEC,KAAK063C,iBAAiBv73C,EAAEa,KAAK263C,iBAAiB,WAAWv73C,IAAIqJ,GAAGtJ,EAAE6he,YAAYhhe,KAAK663C,kBAAkBx73C,CAAE,EAAE,SAAS8Y,GAAG/Y,EAAED,GAAG,GAAG,WAAWC,EAAE8X,GAAG9X,EAAED,IAAIqkB,OAAO,OAAOpkB,EAAE,IAAIW,EAAEX,EAAE+B,MAAM6/d,WAAW3he,EAAE2J,GAAGjJ,GAAG,IAAIV,IAAIsX,GAAGxX,GAAG,OAAOuZ,GAAG,CAAC,IAAI3J,GAAG,GAAG,oCAAoC,IAAInO,EAAEuI,GAAGpJ,EAAE,CAAC,SAAS,IAAIa,IAAI0X,GAAGnZ,GAAG,OAAOuZ,GAAG,CAAC,IAAI3J,GAAG,GAAG,oCAAoC,IAAI/N,EAAE,SAAS5B,EAAED,GAAG,IAAIY,EAAE,KAAK,GAAGZ,aAAaqW,GAAGzV,EAAEX,EAAED,EAAEqkB,aAAa,GAAGrkB,aAAaoW,GAAG,IAAI,IAAIlW,EAAE,EAAEuB,EAAEzB,EAAEk4C,KAAKh4C,EAAEuB,EAAEP,UAAUN,EAAEX,EAAEwB,EAAEvB,KAAKA,GAAG,QAASF,aAAa0K,IAAI1K,aAAamW,KAAKnW,EAAEsxD,iBAAiB/nD,IAAI,SAASvJ,EAAEsxD,MAAM/lD,OAAO3K,EAAEZ,GAAG,OAAOY,aAAagP,IAAI5P,EAAEg89B,WAAU,SAAUh89B,GAAG,IAAIE,EAAED,EAAED,GAAGE,aAAa0P,GAAGhP,EAAEV,GAAGU,GAAGV,EAAEU,EAAE,IAAIgP,GAAG,GAAG,kGAAkGhP,GAAGV,GAAGU,IAAIV,IAAIU,EAAE,IAAIgP,GAAG,GAAG,2FAA6F,IAAGhP,CAAC,CAAliB,CAAoiBA,GAAG,OAAOiB,GAAGJ,EAAEI,aAAa+N,GAAG2J,GAAG,CAAC1X,IAAIA,aAAasU,KAAKqC,GAAGxY,GAAGuZ,GAAG,CAAC,IAAI3J,GAAG,GAAG,iEAAiE0J,GAAGzX,EAAE,IAAIqX,GAAGhZ,EAAE,SAAS,YAAYD,EAAE+B,MAAMH,EAAE4sF,OAAO5sF,aAAasU,GAAGtU,EAAE0iI,mBAAc,GAAQ,IAAIhsH,GAAGrY,EAAE,WAAW,SAASD,EAAE+B,QAAQuX,GAAG,CAAC,IAAI3J,GAAG,GAAG,mGAAmG,CAACsJ,GAAG3Y,UAAU+63C,6BAA6B,SAASr73C,EAAED,EAAEY,EAAEV,EAAEuB,EAAEI,GAAG,OAAOhB,KAAK063C,iBAAiBD,6BAA6Br73C,EAAED,EAAEY,EAAEV,EAAEuB,EAAEI,EAAE,EAAEqX,GAAG3Y,UAAU40gB,SAAS,SAASl1gB,EAAED,EAAEY,EAAEV,EAAEuB,EAAEI,GAAG,OAAOhB,KAAK063C,iBAAiBpm3B,SAASl1gB,EAAED,EAAEY,EAAEV,EAAEuB,EAAEI,EAAE,EAAEqX,GAAG3Y,UAAUi53C,oBAAoB,SAASv53C,EAAED,EAAEY,GAAG,OAAOC,KAAK663C,kBAAkBvl3C,GAAGqj3C,oBAAoB343C,KAAK663C,kBAAkBz73C,EAAED,EAAEY,GAAG,CAAC,EAAE,IAAIqY,GAAG,SAAShZ,EAAED,GAAGa,KAAK863C,YAAY173C,EAAEY,KAAK+63C,eAAe573C,EAAEgR,GAAGnQ,KAAK,SAASZ,EAAED,EAAEY,GAAG,IAAIV,EAAEuB,EAAEI,EAAEV,EAAE,UAAUP,EAAEwM,KAAKzL,EAAE3B,EAAEmjxB,OAAO,iBAAiBnjxB,EAAEmjxB,MAAM,GAAG,GAAGjgxB,EAAEvB,KAAKA,QAAG,IAAS3B,EAAEq6C,UAAUh3C,EAAErD,EAAEoN,OAAOoL,GAAG5X,GAAG,cAAc,YAAY,GAAGO,KAAKnB,EAAEgR,GAAG,CAAC,EAAEhR,IAAImjxB,QAAQnjxB,EAAEmjxB,MAAMnjxB,EAAEmjxB,MAAMjzvB,KAAI,SAAUjwB,GAAG,MAAO,CAACA,EAAE,GAAGsH,GAAG6lB,MAAMntB,EAAE,IAAK,KAAID,EAAEoD,QAAQmE,GAAG6lB,MAAMptB,EAAEoD,QAAQpD,EAAEoD,QAAQxC,EAAEwC,UAAUpD,EAAEw7W,YAAY,QAAQx7W,EAAEw7W,aAAavlW,GAAGjW,EAAEw7W,YAAY,MAAM,IAAInzV,MAAM,wBAAwBroB,EAAEw7W,YAAY,GAAG,gBAAgBn4W,EAAEnD,EAAEuZ,QAAQ,GAAG,aAAapW,EAAEnD,EAAEwX,QAAQ,GAAG,gBAAgBrU,EAAE,CAACnD,EAAE4Y,GAAGrX,EAAEtB,OAAOY,OAAO,MAAM,IAAI,IAAI4C,EAAE,EAAEjC,EAAE1B,EAAEmjxB,MAAMx/wB,EAAEjC,EAAER,OAAOyC,GAAG,EAAE,CAAC,IAAIF,EAAE/B,EAAEiC,GAAGlC,EAAEgC,EAAE,IAAIA,EAAE,EAAG,CAAC5B,SAAS7B,EAAEmjxB,MAAM,GAAG,EAAG,KAAM,CAAC,GAAG,aAAa9/wB,EAAE,MAAM,IAAIglB,MAAM,0BAA0BhlB,EAAE,KAAKnD,EAAE0Y,EAAG,CAAC,GAAGjX,EAAE,CAAC,IAAI,IAAI4B,EAAE,CAAC,EAAEM,EAAE,GAAGL,EAAE,EAAEA,EAAExD,EAAEmjxB,MAAMjixB,OAAOsC,IAAI,CAAC,IAAIS,EAAEjE,EAAEmjxB,MAAM3/wB,GAAGM,EAAEG,EAAE,GAAGu8B,UAAK,IAASj9B,EAAEO,KAAKP,EAAEO,GAAG,CAAC08B,KAAK18B,EAAEsJ,KAAKpN,EAAEoN,KAAKitC,SAASr6C,EAAEq6C,SAASj3C,QAAQpD,EAAEoD,QAAQ+/wB,MAAM,IAAIt/wB,EAAEnB,KAAKoB,IAAIP,EAAEO,GAAGq/wB,MAAMzgxB,KAAK,CAACuB,EAAE,GAAGjC,MAAMiC,EAAE,IAAK,CAAC,IAAI,IAAIjB,EAAE,GAAG8B,EAAE,EAAEX,EAAEN,EAAEiB,EAAEX,EAAEjD,OAAO4D,GAAG,EAAE,CAAC,IAAIV,EAAED,EAAEW,GAAG9B,EAAEN,KAAK,CAACa,EAAEa,GAAGo8B,KAAKvgC,EAAEsD,EAAEa,GAAGxD,IAAK,CAAC,IAAI6D,EAAE,CAAC8G,KAAK,UAAU,MAAO,CAAC0X,KAAK,YAAYy42C,kBAAkBj33C,EAAE+03C,oBAAoBrj3C,GAAGqj3C,oBAAoBt13C,UAAK,EAAOO,GAAGg33C,UAAUz43C,EAAEktB,KAAI,SAAUjwB,GAAG,OAAOA,EAAE,EAAG,IAAGk1gB,SAAS,SAASl1gB,EAAEC,GAAG,IAAIuB,EAAExB,EAAEugC,KAAK,OAAO/mB,GAAG,CAAC0pwB,MAAMngxB,EAAEkkD,KAAKlnD,EAAEknD,MAAMtmD,EAAEa,GAAG0zgB,SAAS1zgB,EAAEvB,EAAE,EAAE,CAAC,GAAGgD,EAAE,CAAC,IAAIwC,EAAE,gBAAgBrC,EAAE,CAACkI,KAAK,cAAc27C,UAAK,IAASlnD,EAAEknD,KAAKlnD,EAAEknD,KAAK,GAAG,KAAK,MAAO,CAACjkC,KAAK,SAASy42C,kBAAkBh23C,EAAE8z3C,oBAAoBrj3C,GAAGqj3C,oBAAoBt13C,UAAK,EAAOwB,GAAG+13C,UAAUz73C,EAAEmjxB,MAAMjzvB,KAAI,SAAUjwB,GAAG,OAAOA,EAAE,EAAG,IAAGk1gB,SAAS,SAASl1gB,GAAG,OAAOC,EAAEF,EAAEY,EAAEX,EAAEugC,KAAK/+B,EAAEI,EAAE,EAAE,CAAC,MAAO,CAACohB,KAAK,SAASkyf,SAAS,SAASl1gB,EAAEkB,GAAG,IAAIQ,EAAER,GAAGA,EAAEkoC,WAAWloC,EAAEkoC,WAAWrpC,EAAEq6C,eAAU,EAAO,YAAO,IAAS14C,EAAEiW,GAAG5X,EAAEoD,QAAQxC,EAAEwC,SAASlD,EAAEF,EAAEY,EAAEe,EAAEF,EAAEI,EAAE,EAAE,CAAjpD,CAAmpDhB,KAAK863C,YAAY963C,KAAK+63C,gBAAiB,EAAE,SAASji3C,GAAG1Z,GAAG,IAAID,EAAEC,EAAEylB,IAAI9kB,EAAEX,EAAE+B,MAAM9B,EAAED,EAAE473C,WAAW,CAAC,EAAEp63C,EAAExB,EAAE673C,yBAAyB,CAAC,EAAEj63C,EAAE5B,EAAEiV,MAAM/T,EAAElB,EAAE873C,UAAUp63C,EAAE,GAAGuB,EAAE6V,GAAGnY,GAAG,GAAG,WAAWsC,EAAE,MAAO,CAAC,IAAIwM,GAAG1P,EAAEY,EAAE,oBAAoBsC,EAAE,WAAW,IAAI,IAAIG,KAAKzC,EAAE,CAAC,IAAI+C,EAAEN,EAAEoC,MAAM,KAAK,GAAG/D,EAAExB,EAAEyD,IAAIzD,EAAE,KAAKuD,OAAE,EAAO,GAAGhC,EAAEkC,GAAGF,EAAEhC,EAAEkC,QAAQ,GAAGzD,EAAEyD,GAAGF,EAAEkQ,QAAQ,GAAGlS,EAAE,KAAKgC,EAAEhC,EAAE,SAAU,CAAC,IAAIvB,EAAE,KAAK,CAACyB,EAAEe,KAAK,IAAIgN,GAAG1P,EAAEY,EAAEyC,GAAG,qBAAqBA,EAAE,MAAM,QAAQ,CAACI,EAAEkQ,EAAG,CAAChS,EAAEA,EAAEkB,OAAOY,EAAE,CAACiiB,KAAK1lB,EAAEA,EAAE,IAAIA,GAAGqD,EAAErB,MAAMpB,EAAEyC,GAAGw43C,UAAUn63C,EAAEwT,MAAMrT,EAAEk63C,UAAU563C,EAAE88C,OAAOr9C,EAAEo73C,UAAU343C,GAAGzC,GAAI,CAAC,IAAI,IAAI2C,KAAKrD,EAAEuB,EAAE8B,IAAIrD,EAAEqD,GAAGu4E,eAAU,IAAS57E,EAAEqD,GAAGH,cAAS,IAASxC,EAAE2C,IAAI5B,EAAEe,KAAK,IAAIgN,GAAG1P,EAAEY,EAAE,8BAA8B2C,EAAE,MAAM,OAAO5B,CAAC,CAAC,SAASkW,GAAG5X,GAAG,IAAID,EAAEC,EAAE+B,MAAMpB,EAAEX,EAAE473C,UAAU373C,EAAED,EAAEiV,MAAMzT,EAAExB,EAAE873C,UAAUl63C,EAAE5B,EAAEylB,IAAIvkB,EAAElB,EAAEg83C,uBAAuBto3C,GAAG,GAAG,UAAUoF,GAAG/Y,GAAG,MAAO,CAAC,IAAI0P,GAAG7N,EAAE7B,EAAE,mBAAmB+Y,GAAG/Y,GAAG,WAAW,GAAGY,EAAEM,QAAQlB,EAAEkB,SAASN,EAAEM,OAAO,MAAO,CAAC,IAAIwO,GAAG7N,EAAE7B,EAAE,gBAAgBY,EAAEM,OAAO,qBAAqBlB,EAAEkB,OAAO,WAAW,GAAGN,EAAE,eAAeZ,EAAEkB,OAAON,EAAE,cAAc,MAAO,CAAC,IAAI8O,GAAG7N,EAAE7B,EAAE,yBAAyBY,EAAE,cAAc,qBAAqBZ,EAAEkB,OAAO,WAAW,IAAIS,EAAE,CAACyL,KAAKxM,EAAEoB,MAAMub,OAAO3c,EAAE2c,QAAQ9b,EAAE+y3C,SAAS,IAAI7y3C,EAAEspJ,SAASrqJ,EAAEqqJ,UAAU,WAAWlyI,GAAGnY,EAAEoB,SAASL,EAAEf,EAAEoB,OAAO,IAAI,IAAIkB,EAAE,GAAGG,EAAE,EAAEA,EAAErD,EAAEkB,OAAOmC,IAAIH,EAAEA,EAAEL,OAAO1B,EAAE,CAAC45C,MAAM/6C,EAAEk83C,WAAW743C,EAAErB,MAAMhC,EAAEqD,GAAGw43C,UAAUl63C,EAAEuT,MAAMhV,EAAE673C,UAAUt63C,EAAEikB,IAAI7jB,EAAE,IAAIwB,EAAE,OAAO,OAAOH,CAAC,CAAC,SAASsW,GAAGvZ,GAAG,IAAID,EAAEC,EAAEylB,IAAI9kB,EAAEX,EAAE+B,MAAM9B,EAAED,EAAE473C,UAAUp63C,EAAEsX,GAAGnY,GAAG,MAAO,WAAWa,GAAGb,GAAGA,IAAIa,EAAE,OAAO,WAAWA,EAAE,CAAC,IAAIiO,GAAG1P,EAAEY,EAAE,oBAAoBa,EAAE,WAAW,YAAYvB,GAAGU,EAAEV,EAAE4iL,QAAQ,CAAC,IAAIpzK,GAAG1P,EAAEY,EAAEA,EAAE,mCAAmCV,EAAE4iL,UAAU,YAAY5iL,GAAGU,EAAEV,EAAE6iL,QAAQ,CAAC,IAAIrzK,GAAG1P,EAAEY,EAAEA,EAAE,sCAAsCV,EAAE6iL,UAAU,EAAE,CAAC,SAAS1xK,GAAGpR,GAAG,IAAID,EAAEY,EAAEV,EAAEuB,EAAExB,EAAE473C,UAAUh63C,EAAEiN,GAAG7O,EAAE+B,MAAMoL,MAAMjM,EAAE,CAAC,EAAEQ,EAAE,gBAAgBE,QAAG,IAAS5B,EAAE+B,MAAMq4C,SAASn3C,GAAGvB,EAAE0B,EAAE,UAAU0V,GAAG9Y,EAAE+B,MAAMmhxB,QAAQ,UAAUpqwB,GAAG9Y,EAAE+B,MAAMmhxB,MAAM,KAAK,WAAWpqwB,GAAG9Y,EAAE+B,MAAMmhxB,MAAM,GAAG,IAAIx/wB,EAAEgW,GAAG,CAAC+L,IAAIzlB,EAAEylB,IAAI1jB,MAAM/B,EAAE+B,MAAM653C,UAAU573C,EAAE873C,UAAU9wuC,SAAS/1I,MAAMjV,EAAEiV,MAAM6m3C,UAAU973C,EAAE873C,UAAUD,wBAAwB,CAAC34mB,MAAM,SAASljxB,GAAG,GAAG,aAAa4B,EAAE,MAAO,CAAC,IAAI6N,GAAGzP,EAAEylB,IAAIzlB,EAAE+B,MAAM,sDAAsD,IAAIhC,EAAE,GAAGY,EAAEX,EAAE+B,MAAM,OAAOhC,EAAEA,EAAE6C,OAAOgV,GAAG,CAAC6N,IAAIzlB,EAAEylB,IAAI1jB,MAAMpB,EAAEi73C,UAAU573C,EAAE473C,UAAU3m3C,MAAMjV,EAAEiV,MAAM6m3C,UAAU973C,EAAE873C,UAAUE,sBAAsBv63C,KAAK,UAAUqX,GAAGnY,IAAI,IAAIA,EAAEM,QAAQlB,EAAE0C,KAAK,IAAIgN,GAAGzP,EAAEylB,IAAI9kB,EAAE,sCAAsCZ,CAAC,EAAEoD,QAAQ,SAASnD,GAAG,OAAO0T,GAAG,CAAC+R,IAAIzlB,EAAEylB,IAAI1jB,MAAM/B,EAAE+B,MAAM653C,UAAUp63C,EAAEyT,MAAMjV,EAAEiV,MAAM6m3C,UAAU973C,EAAE873C,WAAW,KAAK,MAAO,aAAal63C,GAAGF,GAAGgC,EAAEjB,KAAK,IAAIgN,GAAGzP,EAAEylB,IAAIzlB,EAAE+B,MAAM,yCAAyC,aAAaH,GAAG5B,EAAE+B,MAAMmhxB,OAAOx/wB,EAAEjB,KAAK,IAAIgN,GAAGzP,EAAEylB,IAAIzlB,EAAE+B,MAAM,sCAAsC,gBAAgBH,GAAG5B,EAAE473C,UAAUh65B,aAAarpd,GAAGvY,EAAE473C,YAAYl43C,EAAEjB,KAAK,IAAIgN,GAAGzP,EAAEylB,IAAIzlB,EAAE+B,MAAM,wCAAwC/B,EAAE873C,UAAUvH,UAAU,IAAItx3C,IAAIsU,GAAGvX,EAAE473C,WAAWl43C,EAAEjB,KAAK,IAAIgN,GAAGzP,EAAEylB,IAAIzlB,EAAE+B,MAAM,qCAAqCL,IAAIwX,GAAGlZ,EAAE473C,YAAYl43C,EAAEjB,KAAK,IAAIgN,GAAGzP,EAAEylB,IAAIzlB,EAAE+B,MAAM,kCAAkC,gBAAgBH,IAAIwB,QAAG,IAASpD,EAAE+B,MAAMq4C,UAAU12C,EAAEjB,KAAK,IAAIgN,GAAGzP,EAAEylB,IAAIzlB,EAAE+B,MAAM,oCAAoC2B,EAAE,SAASjC,EAAEzB,GAAG,IAAID,EAAE,GAAG6B,EAAE5B,EAAE+B,MAAML,EAAE1B,EAAEylB,IAAI,GAAG,UAAU3M,GAAGlX,GAAG,MAAO,CAAC,IAAI6N,GAAG/N,EAAEE,EAAE,mBAAmBkX,GAAGlX,GAAG,WAAW,GAAG,IAAIA,EAAEX,OAAO,MAAO,CAAC,IAAIwO,GAAG/N,EAAEE,EAAE,mCAAmCA,EAAEX,OAAO,WAAW,GAAGmC,EAAE,CAAC,GAAG,WAAW0V,GAAGlX,EAAE,IAAI,MAAO,CAAC,IAAI6N,GAAG/N,EAAEE,EAAE,oBAAoBkX,GAAGlX,EAAE,IAAI,WAAW,QAAG,IAASA,EAAE,GAAG2+B,KAAK,MAAO,CAAC,IAAI9wB,GAAG/N,EAAEE,EAAE,mCAAmC,QAAG,IAASA,EAAE,GAAGG,MAAM,MAAO,CAAC,IAAI0N,GAAG/N,EAAEE,EAAE,oCAAoC,GAAG3B,GAAGA,EAAE4O,GAAGjN,EAAE,GAAG2+B,MAAM,MAAO,CAAC,IAAI9wB,GAAG/N,EAAEE,EAAE,GAAG2+B,KAAK,oDAAoD1xB,GAAGjN,EAAE,GAAG2+B,QAAQtgC,IAAIA,EAAE4O,GAAGjN,EAAE,GAAG2+B,MAAM5/B,OAAE,EAAOO,EAAE,CAAC,GAAGnB,EAAEA,EAAE6C,OAAO8W,GAAG,CAAC+L,IAAI/jB,EAAE,MAAMK,MAAMH,EAAE,GAAGg63C,UAAU,CAACr71C,KAAK,CAAC,GAAGtrB,MAAMjV,EAAEiV,MAAM6m3C,UAAU973C,EAAE873C,UAAUD,wBAAwB,CAACt71C,KAAKhnB,GAAGxX,MAAMyB,KAAM,MAAMzD,EAAEA,EAAE6C,OAAOY,EAAE,CAACiiB,IAAI/jB,EAAE,MAAMK,MAAMH,EAAE,GAAGg63C,UAAU,CAAC,EAAE3m3C,MAAMjV,EAAEiV,MAAM6m3C,UAAU973C,EAAE873C,WAAWl63C,IAAI,OAAOsW,GAAG1H,GAAG5O,EAAE,KAAK7B,EAAE6C,OAAO,CAAC,IAAI6M,GAAG/N,EAAE,MAAME,EAAE,GAAG,oDAAoD7B,EAAE6C,OAAO8Q,GAAG,CAAC+R,IAAI/jB,EAAE,MAAMK,MAAMH,EAAE,GAAGg63C,UAAUp63C,EAAEyT,MAAMjV,EAAEiV,MAAM6m3C,UAAU973C,EAAE873C,YAAY,CAAC,SAASt43C,EAAExD,EAAEC,GAAG,IAAIyB,EAAEoX,GAAG9Y,EAAE+B,OAAOkB,EAAE4L,GAAG7O,EAAE+B,OAAOqB,EAAE,OAAOpD,EAAE+B,MAAM/B,EAAE+B,MAAM9B,EAAE,GAAGF,GAAG,GAAG2B,IAAI3B,EAAE,MAAO,CAAC,IAAI0P,GAAGzP,EAAEylB,IAAIriB,EAAE1B,EAAE,0DAA0D3B,SAASA,EAAE2B,EAAE,GAAG,WAAWA,GAAG,WAAWA,GAAG,YAAYA,EAAE,MAAO,CAAC,IAAI+N,GAAGzP,EAAEylB,IAAIriB,EAAE,2DAA2D,GAAG,WAAW1B,GAAG,gBAAgBE,EAAE,CAAC,IAAI8B,EAAE,oBAAoBhC,EAAE,SAAS,OAAO6V,GAAG/V,SAAI,IAASI,IAAI8B,GAAG,qFAAqF,CAAC,IAAI+L,GAAGzP,EAAEylB,IAAIriB,EAAEM,GAAG,CAAC,MAAO,gBAAgB9B,GAAG,WAAWF,GAAG4mC,SAASrlC,IAAIQ,KAAKyK,MAAMjL,KAAKA,EAAE,gBAAgBrB,GAAG,WAAWF,QAAG,IAASf,GAAGsC,EAAEtC,EAAE,CAAC,IAAI8O,GAAGzP,EAAEylB,IAAIriB,EAAE,uDAAuDzC,EAAEsC,EAAE,gBAAgBrB,GAAGqB,KAAK/B,EAAE,CAAC,IAAIuO,GAAGzP,EAAEylB,IAAIriB,EAAE,uCAAuClC,EAAE+B,IAAG,EAAG,KAAK,CAAC,IAAIwM,GAAGzP,EAAEylB,IAAIriB,EAAE,2BAA2BH,GAAG,CAAC,CAAC,SAASkO,GAAGnR,GAAG,IAAID,GAAG,aAAaC,EAAEk83C,kBAAkBnj3C,GAAGjB,IAAItH,GAAGxQ,EAAE+B,OAAO/B,EAAE473C,WAAW,GAAG,UAAU773C,EAAEqkB,OAAO,OAAOrkB,EAAEgC,MAAMkuB,KAAI,SAAUlwB,GAAG,OAAO,IAAI0P,GAAG,GAAGzP,EAAEylB,IAAI1lB,EAAE0lB,IAAIzlB,EAAE+B,MAAMhC,EAAE4yB,QAAS,IAAG,IAAIhyB,EAAEZ,EAAEgC,MAAM6/d,YAAY7he,EAAEgC,MAAMu53C,iBAAiB155B,WAAW,GAAG,aAAa5he,EAAEk83C,mBAAmB,cAAcl83C,EAAEune,cAAc5me,EAAE033C,gBAAgB,MAAO,CAAC,IAAI5o3C,GAAGzP,EAAEylB,IAAIzlB,EAAE+B,MAAM,gCAAgC/B,EAAEune,YAAY,0EAA0E,GAAG,aAAavne,EAAEk83C,mBAAmB,WAAWl83C,EAAEm83C,eAAe9y3C,GAAG1I,GAAG,MAAO,CAAC,IAAI8O,GAAGzP,EAAEylB,IAAIzlB,EAAE+B,MAAM,+EAA+E,GAAG,WAAW/B,EAAEk83C,oBAAoB7y3C,GAAG1I,GAAG,MAAO,CAAC,IAAI8O,GAAGzP,EAAEylB,IAAIzlB,EAAE+B,MAAM,qEAAqE,GAAG/B,EAAEk83C,mBAAmB,IAAIl83C,EAAEk83C,kBAAkB963C,QAAQ,WAAW,CAAC,IAAI2I,GAAGpJ,EAAE,CAAC,OAAO,kBAAkB,MAAO,CAAC,IAAI8O,GAAGzP,EAAEylB,IAAIzlB,EAAE+B,MAAM,sFAAsF,GAAG,oBAAoB/B,EAAEk83C,oBAAoBty3C,GAAGjJ,GAAG,MAAO,CAAC,IAAI8O,GAAGzP,EAAEylB,IAAIzlB,EAAE+B,MAAM,kGAAkG,CAAC,MAAO,EAAE,CAAC,SAASwP,GAAGvR,GAAG,IAAID,EAAEC,EAAEylB,IAAI9kB,EAAEX,EAAE+B,MAAM9B,EAAED,EAAE473C,UAAUp63C,EAAE,GAAG,OAAOnB,MAAMkS,QAAQtS,EAAEqd,SAAS,IAAIrd,EAAEqd,OAAOlc,QAAQyN,GAAGlO,KAAKa,EAAEiB,KAAK,IAAIgN,GAAG1P,EAAEY,EAAE,oBAAoBV,EAAEqd,OAAO7P,KAAK,MAAM,MAAMyN,KAAKb,UAAU1Z,GAAG,YAAY,IAAIT,OAAOgU,KAAKjU,EAAEqd,QAAQlc,QAAQyN,GAAGlO,KAAKa,EAAEiB,KAAK,IAAIgN,GAAG1P,EAAEY,EAAE,oBAAoBT,OAAOgU,KAAKjU,EAAEqd,QAAQ7P,KAAK,MAAM,MAAMyN,KAAKb,UAAU1Z,GAAG,WAAWa,CAAC,CAAC,SAAS8P,GAAGtR,GAAG,IAAG,IAAKA,IAAG,IAAKA,EAAE,OAAO,EAAG,IAAIK,MAAMkS,QAAQvS,IAAI,IAAIA,EAAEiB,OAAO,OAAO,EAAG,OAAOjB,EAAE,IAAI,IAAI,MAAM,OAAOA,EAAEiB,QAAQ,GAAG,QAAQjB,EAAE,IAAI,UAAUA,EAAE,GAAG,IAAI,KAAK,OAAOA,EAAEiB,QAAQ,IAAI,iBAAiBjB,EAAE,IAAIK,MAAMkS,QAAQvS,EAAE,KAAK,IAAI,MAAM,IAAI,OAAO,IAAI,OAAO,OAAO,EAAG,IAAI,KAAK,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,OAAO,IAAIA,EAAEiB,QAAQZ,MAAMkS,QAAQvS,EAAE,KAAKK,MAAMkS,QAAQvS,EAAE,IAAI,IAAI,MAAM,IAAI,MAAM,IAAI,IAAID,EAAE,EAAEY,EAAEX,EAAE2C,MAAM,GAAG5C,EAAEY,EAAEM,OAAOlB,GAAG,EAAE,CAAC,IAAIE,EAAEU,EAAEZ,GAAG,IAAIuR,GAAGrR,IAAI,kBAAkBA,EAAE,OAAO,CAAE,CAAC,OAAO,EAAG,QAAQ,OAAO,EAAG,CAAC+Y,GAAGoj3C,YAAY,SAASp83C,GAAG,OAAO,IAAIgZ,GAAGhZ,EAAE073C,YAAY173C,EAAE273C,eAAe,EAAE3i3C,GAAG+0rB,UAAU,SAAS/tsB,GAAG,MAAO,CAAC073C,YAAY173C,EAAE073C,YAAYC,eAAe373C,EAAE273C,eAAe,EAAE,IAAIjq3C,GAAG,CAACvE,KAAK,UAAUhK,SAAQ,EAAGulH,YAAW,EAAG,gBAAgB,cAAck5W,WAAW,CAAC78N,cAAa,EAAG/qN,WAAW,CAAC,OAAO,aAAa,SAASxoC,GAAGxR,GAAG,GAAG,MAAMA,EAAE,MAAO,CAACytB,OAAO,WAAW,OAAO,CAAE,EAAE4u2C,cAAa,GAAI/q3C,GAAGtR,KAAKA,EAAE4R,GAAG5R,IAAI,IAAID,EAAE+X,GAAG9X,EAAE0R,IAAI,GAAG,UAAU3R,EAAEqkB,OAAO,MAAM,IAAIgE,MAAMroB,EAAEgC,MAAMkuB,KAAI,SAAUjwB,GAAG,OAAOA,EAAEylB,IAAI,KAAKzlB,EAAE2yB,OAAQ,IAAGllB,KAAK,OAAO,MAAO,CAACggB,OAAO,SAASztB,EAAEW,EAAEV,GAAG,OAAOF,EAAEgC,MAAMmzgB,SAASl1gB,EAAEW,EAAE,CAAC,EAAEV,EAAE,EAAEo83C,aAAa,SAASr83C,EAAED,GAAG,IAAIM,MAAMkS,QAAQxS,GAAG,OAAO,EAAG,GAAG,WAAWA,EAAE,GAAG,OAAO,EAAG,IAAI,IAAIY,EAAE,EAAEA,EAAEZ,EAAEkB,OAAON,IAAI,GAAGX,EAAED,EAAEY,IAAI,OAAO,EAAG,OAAO,CAAE,CAAnI,CAAqIX,GAAG,CAAC,SAAS2R,GAAG3R,EAAED,GAAG,OAAOC,EAAED,GAAG,EAAEC,EAAED,EAAE,EAAE,CAAC,CAAC,SAAS6R,GAAG5R,GAAG,IAAIA,EAAE,OAAO,EAAG,IAAID,EAAEY,EAAEX,EAAE,GAAG,OAAOA,EAAEiB,QAAQ,EAAE,QAAQN,EAAE,OAAOA,EAAEkR,GAAG7R,EAAE,GAAGA,EAAE,GAAG,MAAM,OAAOW,EAAEsR,GAAGJ,GAAG7R,EAAE,GAAGA,EAAE,GAAG,OAAO,MAAMW,GAAG,MAAMA,GAAG,OAAOA,GAAG,OAAOA,EAAEkR,GAAG7R,EAAE,GAAGA,EAAE,GAAGW,GAAG,QAAQA,GAAGZ,EAAEC,EAAE2C,MAAM,GAAG,CAAC,OAAOC,OAAO7C,EAAEkwB,IAAIre,MAAM,QAAQjR,EAAE,CAAC,OAAOiC,OAAO5C,EAAE2C,MAAM,GAAGstB,IAAIre,KAAK,SAASjR,EAAE,CAAC,OAAOiC,OAAO5C,EAAE2C,MAAM,GAAGstB,IAAIre,IAAIqe,IAAIhe,KAAK,OAAOtR,EAAEuR,GAAGlS,EAAE,GAAGA,EAAE2C,MAAM,IAAI,QAAQhC,EAAEsR,GAAGC,GAAGlS,EAAE,GAAGA,EAAE2C,MAAM,KAAK,QAAQhC,EAAE8Q,GAAGzR,EAAE,IAAI,SAASW,EAAEsR,GAAGR,GAAGzR,EAAE,KAAK,WAAWW,GAAGX,CAAC,CAAC,SAAS6R,GAAG7R,EAAED,EAAEY,GAAG,OAAOX,GAAG,IAAI,QAAQ,MAAO,CAAC,eAAeW,EAAEZ,GAAG,IAAI,MAAM,MAAO,CAAC,aAAaY,EAAEZ,GAAG,QAAQ,MAAO,CAAC,UAAUY,EAAEX,EAAED,GAAG,CAAC,SAASmS,GAAGlS,EAAED,GAAG,GAAG,IAAIA,EAAEkB,OAAO,OAAO,EAAG,OAAOjB,GAAG,IAAI,QAAQ,MAAO,CAAC,iBAAiB,CAAC,UAAUD,IAAI,IAAI,MAAM,MAAO,CAAC,eAAe,CAAC,UAAUA,IAAI,QAAQ,OAAOA,EAAEkB,OAAO,MAAMlB,EAAEwoC,MAAK,SAAUvoC,GAAG,cAAcA,UAAUD,EAAE,EAAG,IAAG,CAAC,kBAAkBC,EAAE,CAAC,UAAUD,EAAEotC,KAAKx7B,MAAM,CAAC,kBAAkB3R,EAAE,CAAC,UAAUD,IAAI,CAAC,SAAS0R,GAAGzR,GAAG,OAAOA,GAAG,IAAI,QAAQ,OAAO,EAAG,IAAI,MAAM,MAAO,CAAC,iBAAiB,QAAQ,MAAO,CAAC,aAAaA,GAAG,CAAC,SAASiS,GAAGjS,GAAG,MAAO,CAAC,IAAIA,EAAE,CAAC,SAAS8R,GAAG9R,GAAG,OAAOsR,GAAGd,GAAGxQ,EAAE+B,QAAQoP,GAAGJ,GAAG,CAAC,EAAE/Q,EAAE,CAACk83C,kBAAkB,SAASN,UAAU,CAAC753C,MAAM,cAAc,SAAS/B,EAAED,GAAG,IAAIY,EAAEZ,EAAEgC,MAAM9B,EAAEF,EAAE0lB,IAAI,GAAG,UAAU3M,GAAGnY,GAAG,MAAO,CAAC,IAAI8O,GAAGxP,EAAEU,EAAE,mBAAmBmY,GAAGnY,GAAG,WAAW,IAAIa,EAAEI,EAAE7B,EAAE+73C,UAAU563C,EAAE,GAAG,GAAGP,EAAEM,OAAO,EAAE,MAAO,CAAC,IAAIwO,GAAGxP,EAAEU,EAAE,8CAA8C,OAAOO,EAAEA,EAAE0B,OAAO2O,GAAG,CAACkU,IAAIxlB,EAAE,MAAM8B,MAAMpB,EAAE,GAAGi73C,UAAUh63C,EAAEg13C,gBAAgB3h3C,MAAMlV,EAAEkV,MAAM6m3C,UAAU/73C,EAAE+73C,aAAajt3C,GAAGlO,EAAE,KAAK,IAAI,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,KAAKA,EAAEM,QAAQ,GAAG,UAAU4N,GAAGlO,EAAE,KAAKO,EAAEuB,KAAK,IAAIgN,GAAGxP,EAAEU,EAAE,wCAAwCA,EAAE,GAAG,MAAM,IAAI,KAAK,IAAI,KAAK,IAAIA,EAAEM,QAAQC,EAAEuB,KAAK,IAAIgN,GAAGxP,EAAEU,EAAE,8BAA8BA,EAAE,GAAG,2BAA2B,IAAI,KAAK,IAAI,MAAMA,EAAEM,QAAQ,GAAG,YAAYO,EAAEsX,GAAGnY,EAAE,MAAMO,EAAEuB,KAAK,IAAIgN,GAAGxP,EAAE,MAAMU,EAAE,GAAG,oBAAoBa,EAAE,WAAW,IAAI,IAAIE,EAAE,EAAEA,EAAEf,EAAEM,OAAOS,IAAIF,EAAEsX,GAAGnY,EAAEe,IAAI,UAAUmN,GAAGlO,EAAE,IAAIO,EAAEA,EAAE0B,OAAO2O,GAAG,CAACkU,IAAIxlB,EAAE,IAAIyB,EAAE,IAAIK,MAAMpB,EAAEe,GAAGk63C,UAAUh63C,EAAEw3Q,cAAcnkQ,MAAMlV,EAAEkV,MAAM6m3C,UAAU/73C,EAAE+73C,aAAa,WAAWt63C,GAAG,WAAWA,GAAG,YAAYA,GAAGN,EAAEuB,KAAK,IAAIgN,GAAGxP,EAAE,IAAIyB,EAAE,IAAIf,EAAEe,GAAG,wCAAwCF,EAAE,WAAW,MAAM,IAAI,MAAM,IAAI,MAAM,IAAI,OAAO,IAAI,IAAIyB,EAAE,EAAEA,EAAEtC,EAAEM,OAAOgC,IAAI/B,EAAEA,EAAE0B,OAAO5C,EAAE,CAACylB,IAAIxlB,EAAE,IAAIgD,EAAE,IAAIlB,MAAMpB,EAAEsC,GAAGgS,MAAMlV,EAAEkV,MAAM6m3C,UAAU/73C,EAAE+73C,aAAa,MAAM,IAAI,MAAM,IAAI,OAAOt63C,EAAEsX,GAAGnY,EAAE,IAAI,IAAIA,EAAEM,OAAOC,EAAEuB,KAAK,IAAIgN,GAAGxP,EAAEU,EAAE,qBAAqBA,EAAE,GAAG,oCAAoC,WAAWa,GAAGN,EAAEuB,KAAK,IAAIgN,GAAGxP,EAAE,MAAMU,EAAE,GAAG,oBAAoBa,EAAE,WAAW,MAAM,IAAI,SAASA,EAAEsX,GAAGnY,EAAE,IAAI,IAAIA,EAAEM,OAAOC,EAAEuB,KAAK,IAAIgN,GAAGxP,EAAEU,EAAE,qBAAqBA,EAAE,GAAG,oCAAoC,WAAWa,GAAGN,EAAEuB,KAAK,IAAIgN,GAAGxP,EAAE,MAAMU,EAAE,GAAG,oBAAoBa,EAAE,WAAY,OAAON,CAAC,CAA3gD,CAA6gDlB,EAAE,CAAC,SAASmS,GAAGnS,EAAED,GAAG,IAAIY,EAAEX,EAAEylB,IAAIxlB,EAAED,EAAEiV,MAAMzT,EAAExB,EAAE873C,UAAUl63C,EAAE5B,EAAE+B,MAAMb,EAAElB,EAAE+73C,UAAUr63C,EAAEF,EAAEzB,EAAE,IAAIC,EAAEs83C,WAAW,IAAI563C,EAAE,MAAO,GAAG,IAAIuB,EAAE/B,EAAEmG,MAAM,qBAAqB,GAAG,UAAUtH,GAAGkD,GAAGvB,EAAEuB,EAAE,KAAKvB,EAAEuB,EAAE,IAAIylH,WAAW,OAAOh1G,GAAG,CAAC+R,IAAI9kB,EAAEoB,MAAMH,EAAEg63C,UAAUp63C,EAAEknH,WAAWzzG,MAAMhV,EAAE673C,UAAUt63C,IAAI,IAAI4B,EAAEM,EAAE1D,EAAE473C,WAAWl63C,EAAER,GAAG,IAAIwC,EAAE,MAAO,CAAC,IAAI+L,GAAG9O,EAAEiB,EAAE,qBAAqBV,EAAE,MAAM,GAAG,WAAW4X,GAAGlX,IAAI2V,GAAG7T,KAAKA,EAAEwh8B,SAAS9h8B,EAAE,cAAc4P,KAAKpR,IAAI,MAAO,CAAC,IAAI6N,GAAG9O,EAAEiB,EAAE,IAAIV,EAAE,0HAA0Hga,KAAKb,UAAUjX,EAAE,IAAI,SAAS,IAAI3B,EAAE,GAAG,MAAO,WAAWzB,EAAEs83C,YAAY,eAAep73C,GAAGjB,IAAIA,EAAEy03C,QAAQjz3C,EAAEgB,KAAK,IAAIgN,GAAG9O,EAAEiB,EAAE,2DAA2D,cAAcV,GAAGwW,GAAGlH,GAAG5O,KAAK,aAAaiN,GAAGjN,EAAEuL,OAAO1L,EAAEgB,KAAK,IAAIgN,GAAG9O,EAAEiB,EAAE,qDAAqDH,EAAEmB,OAAO8Q,GAAG,CAAC+R,IAAIzlB,EAAEylB,IAAI1jB,MAAMH,EAAEg63C,UAAUl43C,EAAEuR,MAAMhV,EAAE673C,UAAUt63C,EAAE063C,kBAAkB,WAAWC,aAAap83C,EAAEwne,YAAYrme,IAAI,CAAC,SAAS8Q,GAAGhS,GAAG,OAAOmS,GAAGnS,EAAE,QAAQ,CAAC,SAASsS,GAAGtS,GAAG,OAAOmS,GAAGnS,EAAE,SAAS,CAAC,SAASqS,GAAGrS,GAAG,IAAID,EAAE,GAAGY,EAAEX,EAAE+B,MAAM9B,EAAED,EAAEylB,IAAIjkB,EAAExB,EAAEiV,MAAMrT,EAAE5B,EAAE873C,UAAUn73C,EAAEwM,MAAMxM,EAAE6hC,KAAKziC,EAAE0C,KAAK,IAAIgN,GAAGxP,EAAEU,EAAE,uCAAuC,IAAIO,EAAEQ,EAAEmN,GAAGlO,EAAEwM,MAAMlK,EAAE4L,GAAGlO,EAAE6hC,KAAK,GAAG7hC,EAAEwrB,GAAG,IAAI,IAAI/oB,EAAEyL,GAAGlO,EAAEwrB,IAAIzoB,EAAE,EAAEA,EAAE1D,EAAEi83C,WAAWv43C,IAAI,CAAC,IAAIjC,EAAED,EAAEk9B,OAAOh7B,GAAGmL,GAAGpN,EAAE0qB,MAAM/oB,GAAGrD,EAAE0C,KAAK,IAAIgN,GAAGxP,EAAEU,EAAEwrB,GAAG,uBAAuBxrB,EAAEwrB,GAAG,8BAA8B1qB,EAAE0qB,GAAGyr2C,UAAW,CAAC,GAAG,QAAQj33C,EAAE,CAAC,OAAO,SAAS,eAAe,SAAS,UAAUmlB,SAAQ,SAAU9lB,GAAGA,KAAKW,GAAGZ,EAAE0C,KAAK,IAAIgN,GAAGxP,EAAEU,EAAEX,GAAG,IAAIA,EAAE,kCAAoC,IAAGwB,EAAEk9B,OAAO5Y,SAAQ,SAAU9lB,GAAG6O,GAAG7O,EAAEmsB,MAAMlpB,IAAI/B,EAAElB,EAAI,IAAGkB,EAAEA,EAAEshC,IAAIziC,EAAE0C,KAAK,IAAIgN,GAAGxP,EAAEU,EAAE6hC,IAAI,2CAA2C9gC,EAAEmN,GAAG3N,EAAEiM,MAAMpN,EAAE0C,KAAK,IAAIgN,GAAGxP,EAAEU,EAAE6hC,IAAI,cAAcv/B,EAAE,qBAAqB,GAAG,eAAevB,EAAE,GAAGf,EAAE8H,OAAO,CAAC,IAAIjF,EAAEhC,EAAEg6C,SAASh6C,EAAEg6C,QAAQ76C,EAAE8H,QAAQnF,EAAEE,GAAGqL,GAAGrL,EAAE2J,MAAM3J,EAAE,WAAWF,GAAG,WAAW5B,EAAE3B,EAAE0C,KAAK,IAAIgN,GAAGxP,EAAEU,EAAE8H,OAAO,UAAU9H,EAAEwrB,GAAG,+BAA+B,WAAW7oB,GAAG,WAAW5B,EAAE3B,EAAE0C,KAAK,IAAIgN,GAAGxP,EAAEU,EAAE8H,OAAO,UAAU9H,EAAEwrB,GAAG,+BAA+B,WAAW7oB,GAAG3C,EAAE,gBAAgB,eAAe2C,GAAG,cAAc5B,EAAE3B,EAAE0C,KAAK,IAAIgN,GAAGxP,EAAEU,EAAE8H,OAAO,oEAAoE,SAAS/G,IAAIf,EAAEi13C,QAAQj13C,EAAEi13C,MAAM,kBAAkB,YAAYty3C,GAAGE,EAAE+x3C,aAAax13C,EAAE0C,KAAK,IAAIgN,GAAGxP,EAAEU,EAAE,UAAUA,EAAEwrB,GAAG,6FAA6FpsB,EAAE0C,KAAK,IAAIgN,GAAGxP,EAAEU,EAAE,UAAUA,EAAEwrB,GAAG,oCAAoCpsB,EAAE0C,KAAK,IAAIgN,GAAGxP,EAAEU,EAAE8H,OAAO,WAAW9H,EAAE8H,OAAO,eAAgB,MAAM1I,EAAE0C,KAAK,IAAIgN,GAAGxP,EAAEU,EAAE,uCAAuC,OAAOZ,EAAEA,EAAE6C,OAAO8W,GAAG,CAAC+L,IAAIxlB,EAAE8B,MAAMpB,EAAEi73C,UAAUh63C,EAAEguH,MAAM36G,MAAMjV,EAAEiV,MAAM6m3C,UAAU973C,EAAE873C,UAAUD,wBAAwB,CAAC,IAAI,WAAW,MAAO,EAAE,EAAE1u3C,KAAK,WAAW,OAAOuG,GAAG,CAAC+R,IAAIxlB,EAAE,QAAQ8B,MAAMpB,EAAEwM,KAAKyu3C,UAAUh63C,EAAEguH,MAAMziH,KAAK8H,MAAMjV,EAAEiV,MAAM6m3C,UAAU973C,EAAE873C,UAAU990C,OAAOr9C,EAAEo73C,UAAU,QAAQ,EAAEtu2C,OAAO3b,GAAGgwH,OAAO,SAAS9hI,GAAG,OAAO0Z,GAAG,CAACk2G,MAAMjvH,EAAE8kB,IAAIzlB,EAAEylB,IAAI1jB,MAAM/B,EAAE+B,MAAMkT,MAAMjV,EAAEiV,MAAM6m3C,UAAU973C,EAAE873C,UAAUD,wBAAwB,CAAC,IAAI,SAAS773C,GAAG,OAAOsS,GAAGvB,GAAG,CAACur3C,UAAU563C,GAAG1B,GAAG,IAAI,EAAE413C,MAAM,SAAS513C,GAAG,OAAO0Z,GAAG,CAACk2G,MAAMjvH,EAAE8kB,IAAIzlB,EAAEylB,IAAI1jB,MAAM/B,EAAE+B,MAAMkT,MAAMjV,EAAEiV,MAAM6m3C,UAAU973C,EAAE873C,UAAUD,wBAAwB,CAAC,IAAI,SAAS773C,GAAG,OAAOgS,GAAGjB,GAAG,CAACur3C,UAAU563C,GAAG1B,GAAG,IAAI,KAAK,CAAC,SAASyS,GAAGzS,GAAG,IAAID,EAAEC,EAAE+B,MAAMpB,EAAEX,EAAEylB,IAAIxlB,EAAE6Y,GAAG/Y,GAAG,MAAO,WAAWE,EAAE,CAAC,IAAIwP,GAAG9O,EAAEZ,EAAE,oBAAoBE,EAAE,WAAW,EAAE,CAAC,IAAIgT,GAAG,CAAC4h3C,UAAU,SAAS703C,GAAG,IAAID,EAAEC,EAAEylB,IAAI9kB,EAAEX,EAAE+B,MAAM,GAAG,WAAW+W,GAAGnY,GAAG,OAAO8R,GAAG,CAACgT,IAAI1lB,EAAEgC,MAAMpB,IAAI,IAAIV,EAAE,GAAG,IAAI,IAAIuB,KAAKb,EAAEV,EAAEwC,KAAKtB,MAAMlB,EAAEwS,GAAG,CAACgT,IAAI1lB,EAAE,IAAIyB,EAAEO,MAAMpB,EAAEa,MAAM,OAAOvB,CAAC,GAAG,SAASuS,GAAGxS,GAAG,IAAID,EAAEC,EAAE+B,MAAMpB,EAAEX,EAAEylB,IAAIxlB,EAAED,EAAE873C,UAAUt63C,EAAExB,EAAEiV,MAAM,IAAIlV,EAAEoN,KAAK,MAAO,CAAC,IAAIsC,GAAG9O,EAAEZ,EAAE,uBAAuB,IAAI6B,EAAEV,EAAE2N,GAAG9O,EAAEoN,MAAM,OAAOjM,GAAG,IAAI,SAAS,IAAI,SAAS,IAAI,aAAa,OAAOwY,GAAG,CAAC+L,IAAI9kB,EAAEoB,MAAMhC,EAAE673C,UAAU373C,EAAE,UAAUiB,EAAEmM,QAAQ,IAAI,MAAM4H,MAAMjV,EAAEiV,MAAM6m3C,UAAU773C,EAAE473C,wBAAwB5o3C,KAAK,IAAI,UAAU,GAAGrR,EAAE8X,GAAG,CAAC+L,IAAI9kB,EAAEoB,MAAMhC,EAAE673C,UAAU373C,EAAEk13C,eAAelg3C,MAAMzT,EAAEs63C,UAAU773C,EAAE473C,wBAAwB5o3C,KAAKlT,EAAEgqZ,QAAQ,IAAI,IAAIroZ,KAAK3B,EAAE28Z,kBAAkB,CAAC,IAAIz5Z,EAAElD,EAAE28Z,kBAAkBh7Z,GAAG0B,EAAEH,EAAE,GAAGS,EAAE,iBAAiBN,EAAE,CAACA,EAAE,CAAC,eAAe,CAAC,MAAM1B,IAAI0B,EAAExB,EAAEa,KAAKtB,MAAMS,EAAEuP,GAAG,CAACsU,IAAI9kB,EAAE,IAAIe,EAAE,OAAOK,MAAMkB,EAAE,GAAGi53C,kBAAkB,iBAAiBt63C,EAAEa,KAAKtB,MAAMS,EAAEuP,GAAG,CAACsU,IAAI9kB,EAAE,IAAIe,EAAE,UAAUK,MAAM2B,EAAEw43C,kBAAkB,mBAAoB,CAAC,OAAOt63C,EAAE,IAAI,QAAQ,OAAO8X,GAAG,CAAC+L,IAAI9kB,EAAEoB,MAAMhC,EAAE673C,UAAU373C,EAAEu13C,aAAavg3C,MAAMzT,EAAEs63C,UAAU773C,IAAI,IAAI,QAAQ,OAAOyZ,GAAG,CAAC+L,IAAI9kB,EAAEoB,MAAMhC,EAAE673C,UAAU373C,EAAEy13C,aAAazg3C,MAAMzT,EAAEs63C,UAAU773C,IAAI,IAAI,SAAS,MAAO,CAAC,IAAIwP,GAAG9O,EAAE,KAAK,4FAA4F,kBAAkB,QAAQ,OAAO4Q,GAAG,CAACkU,IAAI9kB,EAAE,QAAQoB,MAAMhC,EAAEoN,KAAKyu3C,UAAU,CAACt+2C,OAAO,CAAC,SAAS,SAAS,aAAa,UAAU,QAAQ,UAAUrI,MAAMzT,EAAEs63C,UAAU773C,IAAI,CAAC,SAASyS,GAAG1S,GAAG,IAAID,EAAEC,EAAE+B,MAAMpB,EAAEX,EAAE873C,UAAU773C,EAAEU,EAAE8vH,MAAMjvH,EAAExB,EAAEiV,MAAMrT,EAAE,GAAGV,EAAE4X,GAAG/Y,GAAG,QAAG,IAASA,EAAE,OAAO6B,EAAE,GAAG,WAAWV,EAAE,OAAOU,EAAEgB,OAAO,CAAC,IAAI6M,GAAG,QAAQ1P,EAAE,oBAAoBmB,EAAE,YAAY,IAAI,IAAIQ,KAAK3B,EAAE,CAAC,IAAIkD,EAAEvB,EAAE2F,MAAM,qBAAqBzF,EAAEA,EAAEgB,OAAOK,GAAGhD,EAAEgD,EAAE,KAAKhD,EAAEgD,EAAE,IAAIylH,WAAWh1G,GAAG,CAAC+R,IAAI/jB,EAAEK,MAAMhC,EAAE2B,GAAGk63C,UAAUj73C,EAAE+nH,WAAWzzG,MAAMzT,EAAEs63C,UAAUn73C,IAAIV,EAAEyB,GAAGgS,GAAG,CAAC+R,IAAI/jB,EAAEK,MAAMhC,EAAE2B,GAAGk63C,UAAU373C,EAAEyB,GAAGuT,MAAMzT,EAAEs63C,UAAUn73C,IAAI,CAAC,IAAI8O,GAAG/N,EAAE3B,EAAE2B,GAAG,qBAAqBA,EAAE,MAAO,CAAC,OAAOE,CAAC,CAAC,IAAIiR,GAAG,CAAC,IAAI,WAAW,MAAO,EAAE,EAAEioC,MAAMljC,GAAG6yI,QAAQ,SAASzqJ,GAAG,IAAID,EAAEC,EAAE+B,MAAMpB,EAAEX,EAAEylB,IAAIxlB,EAAE6Y,GAAG/Y,GAAG,MAAO,YAAYE,EAAE,CAAC,IAAIwP,GAAG9O,EAAEZ,EAAE,qBAAqBE,EAAE,WAAW,EAAE,EAAE0qJ,OAAOpxI,GAAG40G,MAAM,SAASnuH,GAAG,IAAID,EAAEC,EAAEylB,IAAI9kB,EAAEX,EAAE+B,MAAM9B,EAAE6Y,GAAGnY,GAAG,MAAO,WAAWV,EAAE,CAAC,IAAIwP,GAAG1P,EAAEY,EAAE,mBAAmBV,EAAE,WAAW,OAAO+Q,GAAGrQ,GAAG,CAAC,IAAI8O,GAAG1P,EAAEY,EAAE,oBAAoBA,EAAE,YAAY,EAAE,EAAE473C,UAAUzr3C,GAAGqq3C,KAAK5p3C,GAAGkc,OAAO3b,GAAGk5I,SAAS55I,GAAGw+G,MAAMv9G,GAAG2rC,OAAOtkC,GAAGjR,OAAO+J,GAAGi+G,MAAM/9G,GAAGiL,OAAOlL,GAAGklY,UAAU,SAAS33Y,GAAG,OAAO,IAAIyS,GAAGzS,GAAGiB,OAAO,GAAGkQ,GAAGnR,EAAE,EAAEo73C,cAAc,SAASp73C,GAAG,OAAO,IAAIyS,GAAGzS,GAAGiB,OAAO,GAAGkQ,GAAGnR,EAAE,GAAG,SAAS0T,GAAG1T,GAAG,IAAID,EAAEC,EAAE+B,MAAMpB,EAAEX,EAAE473C,UAAU373C,EAAED,EAAE873C,UAAU,OAAOn73C,EAAEihe,YAAYlqd,GAAG7I,GAAG9O,IAAIqR,GAAGpR,GAAGW,EAAEihe,YAAY1pd,GAAG1H,GAAGzQ,IAAIoR,GAAGnR,GAAGW,EAAEwM,MAAM0F,GAAGlS,EAAEwM,MAAM0F,GAAGlS,EAAEwM,MAAMnN,GAAG0Z,GAAG3I,GAAG,CAAC,EAAE/Q,EAAE,CAAC473C,UAAUj73C,EAAEwM,KAAKlN,EAAEU,EAAEwM,MAAMxM,IAAI,CAAC,SAASgS,GAAG3S,GAAG,IAAID,EAAEC,EAAE+B,MAAMpB,EAAEX,EAAEylB,IAAIxlB,EAAEwS,GAAGzS,GAAG,OAAOC,EAAEgB,UAAU,IAAIlB,EAAEqB,QAAQ,gBAAgBnB,EAAEwC,KAAK,IAAIgN,GAAG9O,EAAEZ,EAAE,qDAAqD,IAAIA,EAAEqB,QAAQ,YAAYnB,EAAEwC,KAAK,IAAIgN,GAAG9O,EAAEZ,EAAE,iDAAiDE,CAAC,CAAC,SAAS2S,GAAG5S,EAAED,QAAG,IAASA,IAAIA,EAAEsP,IAAI,IAAI1O,EAAE,GAAG,OAAOA,EAAEA,EAAEiC,OAAO8Q,GAAG,CAAC+R,IAAI,GAAG1jB,MAAM/B,EAAE473C,UAAU773C,EAAEy03C,MAAMsH,UAAU/73C,EAAEkV,MAAMjV,EAAE673C,wBAAwB,CAACnH,OAAO/h3C,GAAG,IAAI,WAAW,MAAO,EAAE,MAAM3S,EAAEu83C,YAAY573C,EAAEA,EAAEiC,OAAOkO,GAAG,CAAC2U,IAAI,YAAY1jB,MAAM/B,EAAEu83C,UAAUtn3C,MAAMjV,EAAE873C,UAAU/73C,MAAM+S,GAAGnS,EAAE,CAAC,SAASmS,GAAG9S,GAAG,MAAO,GAAG4C,OAAO5C,GAAGmtC,MAAK,SAAUntC,EAAED,GAAG,OAAOC,EAAEkgD,KAAKngD,EAAEmgD,IAAK,GAAE,CAAC,SAASxrC,GAAG1U,GAAG,OAAO,WAAW,IAAI,IAAID,EAAE,GAAGY,EAAEK,UAAUC,OAAON,KAAKZ,EAAEY,GAAGK,UAAUL,GAAG,OAAOmS,GAAG9S,EAAEmB,MAAMP,KAAKb,GAAG,CAAC,CAAC6S,GAAGnK,OAAOiM,GAAGlC,IAAII,GAAG69G,MAAM/7G,GAAGhC,IAAIE,GAAGg9G,MAAMl7G,GAAGrC,IAAIO,GAAG6a,OAAO/Y,GAAG5C,IAAIc,GAAG4p3C,cAAc9n3C,GAAG1C,IAAIY,GAAG6p3C,eAAe/n3C,GAAGpC,IAAI,IAAIa,GAAGP,GAAGY,GAAGL,GAAGs9G,MAAM98G,GAAGR,GAAGqp3C,cAAc1n3C,GAAG3B,GAAGsp3C,eAAe,SAASln3C,GAAGvV,EAAED,GAAG,IAAIY,GAAE,EAAG,GAAGZ,GAAGA,EAAEkB,OAAO,IAAI,IAAIhB,EAAE,EAAEuB,EAAEzB,EAAEE,EAAEuB,EAAEP,OAAOhB,GAAG,EAAED,EAAEk03C,KAAK,IAAIzj3C,GAAG,IAAI2X,MAAM5mB,EAAEvB,GAAG0yB,WAAWhyB,GAAE,EAAG,OAAOA,CAAC,CAAC,IAAIuS,GAAGuB,GAAG,SAASA,GAAGzU,EAAED,EAAEY,GAAG,IAAIV,EAAEW,KAAKi5mB,MAAM,GAAG,GAAG75mB,aAAakf,YAAY,CAACte,KAAKgsK,YAAY5sK,EAAE,IAAIwB,EAAE,IAAIkf,WAAW9f,KAAKgsK,aAAa5sK,EAAEwB,EAAE,GAAGZ,KAAK2C,GAAGxD,EAAEyB,EAAE,IAAI,GAAGb,EAAEa,EAAE,IAAI,IAAI,IAAII,EAAE,EAAEA,EAAEhB,KAAK2C,EAAE3C,KAAK2C,EAAE3B,IAAI,CAAC,IAAIV,EAAEM,EAAE,EAAEI,GAAGF,EAAEF,EAAE,EAAEI,EAAE,GAAG3B,EAAEwC,KAAKvB,IAAIQ,EAAE,KAAKF,EAAE6mB,SAASnnB,EAAEQ,GAAI,CAAC,IAAIuB,EAAEzB,EAAE,EAAEvB,EAAEgB,OAAO,GAAGL,KAAKsT,KAAK1S,EAAE6mB,SAAS7mB,EAAE,EAAEvB,EAAEgB,QAAQgC,GAAGrC,KAAKytxB,OAAO7sxB,EAAE6mB,SAASplB,GAAGrC,KAAK+6P,OAAO/6P,KAAK873C,eAAgB,KAAM,CAAC973C,KAAK2C,EAAExD,EAAE,EAAEY,EAAE,IAAI,IAAIyC,EAAE,EAAEA,EAAExC,KAAK2C,EAAE3C,KAAK2C,EAAEH,IAAInD,EAAEwC,KAAK,IAAI7B,KAAKsT,KAAK,GAAGtT,KAAKytxB,OAAO,EAAG,CAACztxB,KAAKX,EAAEF,EAAEa,KAAKuqK,OAAOnrK,EAAEY,KAAKk4H,QAAQn4H,EAAEC,KAAK8hG,MAAM3iG,EAAEC,EAAEY,KAAKozV,IAAI,EAAE,IAAItwV,EAAE/C,EAAEZ,EAAEC,EAAEY,KAAK6N,KAAK/K,EAAE9C,KAAK2N,IAAIvO,EAAE0D,CAAE,CAAC+Q,GAAGnU,UAAUq7P,OAAO,SAAS37P,EAAED,EAAEY,EAAEV,EAAEuB,GAAGZ,KAAK+73C,aAAa583C,EAAEY,EAAEV,EAAEuB,EAAEZ,KAAKg83C,YAAYh83C,KAAKozV,OAAOpzV,KAAKsT,KAAKzR,KAAKzC,GAAGY,KAAKytxB,OAAO5rxB,KAAK1C,GAAGa,KAAKytxB,OAAO5rxB,KAAK9B,GAAGC,KAAKytxB,OAAO5rxB,KAAKxC,GAAGW,KAAKytxB,OAAO5rxB,KAAKjB,EAAG,EAAEiT,GAAGnU,UAAUo83C,gBAAgB,WAAW,KAAM,6DAA6D,EAAEjo3C,GAAGnU,UAAUs83C,YAAY,SAAS583C,EAAED,EAAEY,EAAEV,EAAEuB,EAAEI,GAAGhB,KAAKi5mB,MAAMr4mB,GAAGiB,KAAKb,EAAG,EAAE6S,GAAGnU,UAAUuvF,MAAM,SAAS7vF,EAAED,EAAEY,EAAEV,EAAEuB,GAAG,IAAII,EAAEhB,KAAK6N,IAAIvN,EAAEN,KAAK2N,IAAI,GAAGvO,GAAG4B,GAAG7B,GAAG6B,GAAGV,GAAGP,GAAGO,GAAGjB,IAAIuB,EAAE,OAAOnB,MAAMC,UAAUqC,MAAMnC,KAAKI,KAAKsT,MAAM,IAAIxS,EAAE,GAAG,OAAOd,KAAK+73C,aAAa383C,EAAED,EAAEY,EAAEV,EAAEW,KAAKi83C,WAAWn73C,EAAE,CAAC,EAAEF,GAAGE,CAAC,EAAE+S,GAAGnU,UAAUu83C,WAAW,SAAS783C,EAAED,EAAEY,EAAEV,EAAEuB,EAAEI,EAAEV,EAAEQ,GAAG,IAAIuB,EAAErC,KAAKi5mB,MAAMr4mB,GAAG,GAAG,OAAOyB,EAAE,IAAI,IAAIG,EAAExC,KAAKsT,KAAKxQ,EAAE9C,KAAKytxB,OAAO5sxB,EAAE,EAAEA,EAAEwB,EAAEhC,OAAOQ,IAAI,CAAC,IAAI+B,EAAEP,EAAExB,GAAG,QAAG,IAASP,EAAEsC,GAAG,CAAC,IAAIF,EAAE,EAAEE,GAAG9B,EAAEA,EAAEgC,EAAEJ,EAAE,GAAGI,EAAEJ,EAAE,GAAGI,EAAEJ,EAAE,GAAGI,EAAEJ,EAAE,IAAItD,GAAG0D,EAAEJ,EAAE,IAAIvD,GAAG2D,EAAEJ,EAAE,IAAI3C,GAAG+C,EAAEJ,EAAE,IAAIrD,GAAGyD,EAAEJ,EAAE,KAAKpC,EAAEsC,IAAG,EAAG5B,EAAEa,KAAKW,EAAEI,KAAKtC,EAAEsC,IAAG,CAAG,CAAC,CAAC,EAAEiR,GAAGnU,UAAUq83C,aAAa,SAAS383C,EAAED,EAAEY,EAAEV,EAAEuB,EAAEI,EAAEV,EAAEQ,GAAG,IAAI,IAAIuB,EAAErC,KAAKk83C,oBAAoB983C,GAAGoD,EAAExC,KAAKk83C,oBAAoB/83C,GAAG2D,EAAE9C,KAAKk83C,oBAAoBn83C,GAAGc,EAAEb,KAAKk83C,oBAAoB783C,GAAGuD,EAAEP,EAAEO,GAAGE,EAAEF,IAAI,IAAI,IAAIF,EAAEF,EAAEE,GAAG7B,EAAE6B,IAAI,CAAC,IAAIM,EAAEhD,KAAK2C,EAAED,EAAEE,EAAE,KAAK9B,GAAGA,EAAEd,KAAKm83C,sBAAsBv53C,GAAG5C,KAAKm83C,sBAAsBz53C,GAAG1C,KAAKm83C,sBAAsBv53C,EAAE,GAAG5C,KAAKm83C,sBAAsBz53C,EAAE,MAAM9B,EAAEhB,KAAKI,KAAKZ,EAAED,EAAEY,EAAEV,EAAE2D,EAAEhC,EAAEV,EAAEQ,GAAG,MAAM,CAAC,EAAE+S,GAAGnU,UAAUy83C,sBAAsB,SAAS/83C,GAAG,OAAQA,EAAEY,KAAKk4H,SAASl4H,KAAK8hG,KAAK,EAAEjuF,GAAGnU,UAAUw83C,oBAAoB,SAAS983C,GAAG,OAAOyD,KAAK8K,IAAI,EAAE9K,KAAKgL,IAAI7N,KAAK2C,EAAE,EAAEE,KAAKyK,MAAMlO,EAAEY,KAAK8hG,OAAO9hG,KAAKk4H,SAAS,EAAErkH,GAAGnU,UAAU083C,cAAc,WAAW,GAAGp83C,KAAKgsK,YAAY,OAAOhsK,KAAKgsK,YAAY,IAAI,IAAI5sK,EAAEY,KAAKi5mB,MAAM95mB,EAAE,EAAEa,KAAKi5mB,MAAM54mB,OAAO,EAAE,EAAEN,EAAE,EAAEV,EAAE,EAAEA,EAAEW,KAAKi5mB,MAAM54mB,OAAOhB,IAAIU,GAAGC,KAAKi5mB,MAAM55mB,GAAGgB,OAAO,IAAIO,EAAE,IAAIkf,WAAW3gB,EAAEY,EAAEC,KAAKsT,KAAKjT,OAAOL,KAAKytxB,OAAOptxB,QAAQO,EAAE,GAAGZ,KAAKuqK,OAAO3pK,EAAE,GAAGZ,KAAKX,EAAEuB,EAAE,GAAGZ,KAAKk4H,QAAQ,IAAI,IAAIl3H,EAAE7B,EAAEmB,EAAE,EAAEA,EAAElB,EAAEiB,OAAOC,IAAI,CAAC,IAAIQ,EAAE1B,EAAEkB,GAAGM,EAAE,EAAEN,GAAGU,EAAEJ,EAAEqL,IAAInL,EAAEE,GAAGA,GAAGF,EAAET,MAAO,CAAC,OAAOO,EAAE,EAAExB,EAAEiB,QAAQW,EAAEJ,EAAEqL,IAAIjM,KAAKsT,KAAKtS,GAAGJ,EAAE,EAAExB,EAAEiB,OAAO,GAAGW,GAAGhB,KAAKsT,KAAKjT,OAAOO,EAAEqL,IAAIjM,KAAKytxB,OAAOzsxB,GAAGA,GAAGhB,KAAKytxB,OAAOptxB,OAAOO,EAAEsnB,MAAM,EAAE,IAAI/U,GAAG7S,EAAEwvV,UAAUr8U,GAAGnT,EAAEgoQ,YAAY91P,GAAG,CAAC,EAAE,SAASL,GAAG/S,EAAED,EAAEY,QAAG,IAASA,IAAIA,EAAE,CAAC,GAAGT,OAAO4D,eAAe/D,EAAE,oBAAoB,CAACgC,MAAM/B,EAAEi93C,WAAU,IAAK7p3C,GAAGpT,GAAG,CAACk93C,MAAMn93C,EAAEi0xC,KAAKrzxC,EAAEqzxC,MAAM,GAAGmpG,QAAQx83C,EAAEw83C,SAAS,GAAI,CAAC,IAAI,IAAI9p3C,MAAMN,GAAG,SAAS7S,QAAQgT,GAAG66rB,UAAU,SAAS/tsB,EAAED,GAAG,IAAIY,EAAEX,EAAEg93C,gBAAgB,OAAOj93C,GAAGA,EAAE0C,KAAK9B,GAAG,CAACmoB,OAAOnoB,EAAE,EAAEuS,GAAGkp3C,YAAY,SAASp83C,GAAG,OAAO,IAAIkT,GAAGlT,EAAE8oB,OAAO,EAAE/V,GAAG,OAAOG,IAAIH,GAAG,QAAQzL,IAAIyL,GAAG,QAAQqV,OAAOrV,GAAG,gBAAgBpL,IAAIoL,GAAG,wBAAwBiG,IAAIjG,GAAG,kBAAkBqF,GAAG,CAAC47wC,KAAK,CAAC,gBAAgBjhxC,GAAG,0BAA0BkG,IAAIlG,GAAG,yBAAyBuF,IAAIvF,GAAG,qBAAqBzJ,GAAG,CAAC0qxC,KAAK,CAAC,eAAe58wC,GAAGA,GAAG/D,IAAI+p3C,mBAAmBrq3C,GAAG,cAAcM,GAAG+D,GAAG/D,KAAK,SAASc,GAAGnU,GAAG,OAAOA,GAAG,oBAAoBkf,cAAclf,aAAakf,aAAalf,EAAEa,aAAa,gBAAgBb,EAAEa,YAAYyK,KAAK,CAAC,SAAS+x3C,GAAGr93C,GAAG,OAAOqU,IAAIrU,aAAaqU,EAAE,CAAC,SAASoB,GAAGzV,EAAED,GAAG,GAAG,MAAMC,GAAG,kBAAkBA,GAAG,iBAAiBA,GAAG,iBAAiBA,GAAGA,aAAa6T,SAAS7T,aAAa+lC,QAAQ/lC,aAAaU,QAAQV,aAAaosB,MAAMpsB,aAAa2oC,OAAO,OAAO3oC,EAAE,GAAGmU,GAAGnU,IAAIq93C,GAAGr93C,GAAG,OAAOD,GAAGA,EAAE0C,KAAKzC,GAAGA,EAAE,GAAGkf,YAAY0C,OAAO5hB,GAAG,CAAC,IAAIW,EAAEX,EAAE,OAAOD,GAAGA,EAAE0C,KAAK9B,EAAEmoB,QAAQnoB,CAAC,CAAC,GAAGX,aAAa+T,GAAG,OAAOhU,GAAGA,EAAE0C,KAAKzC,EAAEoQ,KAAK0Y,QAAQ9oB,EAAE,GAAGK,MAAMkS,QAAQvS,GAAG,CAAC,IAAI,IAAIC,EAAE,GAAGuB,EAAE,EAAEI,EAAE5B,EAAEwB,EAAEI,EAAEX,OAAOO,GAAG,EAAEvB,EAAEwC,KAAKgT,GAAG7T,EAAEJ,GAAGzB,IAAI,OAAOE,CAAC,CAAC,GAAG,iBAAiBD,EAAE,CAAC,IAAIkB,EAAElB,EAAEa,YAAYa,EAAER,EAAEk83C,kBAAkB,IAAI173C,EAAE,MAAM,IAAI0mB,MAAM,gDAAgD,IAAInlB,EAAE/B,EAAE6ssB,UAAU7ssB,EAAE6ssB,UAAU/tsB,EAAED,GAAG,CAAC,EAAE,IAAImB,EAAE6ssB,UAAU,CAAC,IAAI,IAAI3qsB,KAAKpD,EAAE,GAAGA,EAAEO,eAAe6C,MAAMgQ,GAAG1R,GAAGsyxC,KAAK5yxC,QAAQgC,IAAI,GAAG,CAAC,IAAIM,EAAE1D,EAAEoD,GAAGH,EAAEG,GAAGgQ,GAAG1R,GAAGy73C,QAAQ/73C,QAAQgC,IAAI,EAAEM,EAAE+R,GAAG/R,EAAE3D,EAAG,CAACC,aAAaooB,QAAQnlB,EAAE0vB,QAAQ3yB,EAAE2yB,QAAS,CAAC,GAAG1vB,EAAEq63C,MAAM,MAAM,IAAIl12C,MAAM,8DAA8D,MAAO,WAAW1mB,IAAIuB,EAAEq63C,MAAM573C,GAAGuB,CAAC,CAAC,MAAM,IAAImlB,MAAM,yCAAyCpoB,EAAE,CAAC,SAASiU,GAAGjU,GAAG,GAAG,MAAMA,GAAG,kBAAkBA,GAAG,iBAAiBA,GAAG,iBAAiBA,GAAGA,aAAa6T,SAAS7T,aAAa+lC,QAAQ/lC,aAAaU,QAAQV,aAAaosB,MAAMpsB,aAAa2oC,QAAQx0B,GAAGnU,IAAIq93C,GAAGr93C,IAAIkf,YAAY0C,OAAO5hB,IAAIA,aAAa+T,GAAG,OAAO/T,EAAE,GAAGK,MAAMkS,QAAQvS,GAAG,OAAOA,EAAEiwB,IAAIhc,IAAI,GAAG,iBAAiBjU,EAAE,CAAC,IAAID,EAAEC,EAAEs93C,OAAO,SAAS383C,EAAEyS,GAAGrT,GAAGm93C,MAAM,IAAIv83C,EAAE,MAAM,IAAIynB,MAAM,wCAAwCroB,GAAG,GAAGY,EAAEy73C,YAAY,OAAOz73C,EAAEy73C,YAAYp83C,GAAG,IAAI,IAAIC,EAAEC,OAAOY,OAAOH,EAAEL,WAAWkB,EAAE,EAAEI,EAAE1B,OAAOgU,KAAKlU,GAAGwB,EAAEI,EAAEX,OAAOO,GAAG,EAAE,CAAC,IAAIN,EAAEU,EAAEJ,GAAG,GAAG,UAAUN,EAAE,CAAC,IAAIQ,EAAE1B,EAAEkB,GAAGjB,EAAEiB,GAAGkS,GAAGrT,GAAGo93C,QAAQ/73C,QAAQF,IAAI,EAAEQ,EAAEuS,GAAGvS,EAAG,CAAC,CAAC,OAAOzB,CAAC,CAAC,MAAM,IAAImoB,MAAM,2CAA2CpoB,EAAE,CAAC,IAAIgU,GAAG,WAAWpT,KAAK0kB,OAAM,CAAG,EAAEtR,GAAG1T,UAAU6uE,OAAO,SAASnvE,EAAED,GAAG,IAAIY,EAAE8C,KAAKyK,MAAMlO,GAAG,OAAOY,KAAK0kB,OAAO1kB,KAAK0kB,OAAM,EAAG1kB,KAAK283C,gBAAgB583C,EAAEC,KAAK483C,oBAAoB,EAAE583C,KAAK683C,SAASz93C,EAAEY,KAAK883C,cAAc/83C,GAAE,IAAKC,KAAK883C,cAAc/83C,GAAGC,KAAK283C,gBAAgB583C,EAAE,EAAEC,KAAK483C,oBAAoBz93C,GAAGa,KAAK883C,cAAc/83C,IAAIC,KAAK283C,gBAAgB583C,EAAEC,KAAK483C,oBAAoBz93C,GAAGC,IAAIY,KAAK683C,WAAW783C,KAAK683C,SAASz93C,EAAEY,KAAK883C,cAAc/83C,GAAE,GAAI,EAAE,IAAI8S,GAAG,CAAC,qBAAqB,SAASzT,GAAG,OAAOA,GAAG,KAAKA,GAAG,GAAG,EAAE293C,OAAO,SAAS393C,GAAG,OAAOA,GAAG,MAAMA,GAAG,IAAI,EAAE,oBAAoB,SAASA,GAAG,OAAOA,GAAG,MAAMA,GAAG,IAAI,EAAE,oBAAoB,SAASA,GAAG,OAAOA,GAAG,MAAMA,GAAG,IAAI,EAAE,cAAc,SAASA,GAAG,OAAOA,GAAG,MAAMA,GAAG,IAAI,EAAE,wCAAwC,SAASA,GAAG,OAAOA,GAAG,MAAMA,GAAG,IAAI,EAAE493C,MAAM,SAAS593C,GAAG,OAAOA,GAAG,MAAMA,GAAG,IAAI,EAAE,iDAAiD,SAASA,GAAG,OAAOA,GAAG,MAAMA,GAAG,IAAI,EAAE,sBAAsB,SAASA,GAAG,OAAOA,GAAG,MAAMA,GAAG,IAAI,EAAE,qBAAqB,SAASA,GAAG,OAAOA,GAAG,MAAMA,GAAG,IAAI,EAAE,eAAe,SAASA,GAAG,OAAOA,GAAG,MAAMA,GAAG,IAAI,EAAE,0BAA0B,SAASA,GAAG,OAAOA,GAAG,MAAMA,GAAG,IAAI,EAAE,mBAAmB,SAASA,GAAG,OAAOA,GAAG,MAAMA,GAAG,IAAI,EAAE,gCAAgC,SAASA,GAAG,OAAOA,GAAG,MAAMA,GAAG,IAAI,EAAE,yBAAyB,SAASA,GAAG,OAAOA,GAAG,MAAMA,GAAG,IAAI,EAAE,mBAAmB,SAASA,GAAG,OAAOA,GAAG,MAAMA,GAAG,IAAI,EAAE,wBAAwB,SAASA,GAAG,OAAOA,GAAG,MAAMA,GAAG,IAAI,EAAE,mCAAmC,SAASA,GAAG,OAAOA,GAAG,OAAOA,GAAG,KAAK,EAAE,0BAA0B,SAASA,GAAG,OAAOA,GAAG,OAAOA,GAAG,KAAK,EAAE,kBAAkB,SAASA,GAAG,OAAOA,GAAG,OAAOA,GAAG,KAAK,EAAE,qCAAqC,SAASA,GAAG,OAAOA,GAAG,OAAOA,GAAG,KAAK,EAAE,8BAA8B,SAASA,GAAG,OAAOA,GAAG,OAAOA,GAAG,KAAK,EAAE693C,SAAS,SAAS793C,GAAG,OAAOA,GAAG,OAAOA,GAAG,KAAK,EAAE893C,SAAS,SAAS993C,GAAG,OAAOA,GAAG,OAAOA,GAAG,KAAK,EAAE+93C,SAAS,SAAS/93C,GAAG,OAAOA,GAAG,OAAOA,GAAG,KAAK,EAAE,4BAA4B,SAASA,GAAG,OAAOA,GAAG,OAAOA,GAAG,KAAK,EAAEg+3C,OAAO,SAASh+3C,GAAG,OAAOA,GAAG,OAAOA,GAAG,KAAK,EAAE,oBAAoB,SAASA,GAAG,OAAOA,GAAG,OAAOA,GAAG,KAAK,EAAE,cAAc,SAASA,GAAG,OAAOA,GAAG,OAAOA,GAAG,KAAK,EAAE,+BAA+B,SAASA,GAAG,OAAOA,GAAG,OAAOA,GAAG,KAAK,EAAE,kCAAkC,SAASA,GAAG,OAAOA,GAAG,OAAOA,GAAG,KAAK,EAAE,oBAAoB,SAASA,GAAG,OAAOA,GAAG,OAAOA,GAAG,KAAK,EAAE,qCAAqC,SAASA,GAAG,OAAOA,GAAG,OAAOA,GAAG,KAAK,EAAE,0BAA0B,SAASA,GAAG,OAAOA,GAAG,OAAOA,GAAG,KAAK,EAAE,yBAAyB,SAASA,GAAG,OAAOA,GAAG,OAAOA,GAAG,KAAK,EAAE,eAAe,SAASA,GAAG,OAAOA,GAAG,OAAOA,GAAG,KAAK,EAAE,cAAc,SAASA,GAAG,OAAOA,GAAG,OAAOA,GAAG,KAAK,EAAE,yBAAyB,SAASA,GAAG,OAAOA,GAAG,OAAOA,GAAG,KAAK,EAAE,mBAAmB,SAASA,GAAG,OAAOA,GAAG,OAAOA,GAAG,KAAK,EAAE,yBAAyB,SAASA,GAAG,OAAOA,GAAG,OAAOA,GAAG,KAAK,EAAE,mBAAmB,SAASA,GAAG,OAAOA,GAAG,OAAOA,GAAG,KAAK,EAAE,+BAA+B,SAASA,GAAG,OAAOA,GAAG,OAAOA,GAAG,KAAK,EAAE,8BAA8B,SAASA,GAAG,OAAOA,GAAG,OAAOA,GAAG,KAAK,EAAE,iBAAiB,SAASA,GAAG,OAAOA,GAAG,OAAOA,GAAG,KAAK,EAAE,0BAA0B,SAASA,GAAG,OAAOA,GAAG,OAAOA,GAAG,KAAK,EAAE,sBAAsB,SAASA,GAAG,OAAOA,GAAG,OAAOA,GAAG,KAAK,EAAE,8BAA8B,SAASA,GAAG,OAAOA,GAAG,OAAOA,GAAG,KAAK,EAAE,gCAAgC,SAASA,GAAG,OAAOA,GAAG,OAAOA,GAAG,KAAK,GAAG,SAASuT,GAAGvT,GAAG,IAAI,IAAID,EAAE,EAAEY,EAAEX,EAAED,EAAEY,EAAEM,OAAOlB,GAAG,EAAE,GAAG+T,GAAGnT,EAAEZ,GAAG4Z,WAAW,IAAI,OAAO,EAAG,OAAO,CAAE,CAAC,SAAS7F,GAAG9T,GAAG,QAAS,MAAMA,GAAG,MAAMA,IAAIA,EAAE,QAAQyT,GAAG,qBAAqBzT,IAAIyT,GAAGsq3C,SAAS/93C,IAAIyT,GAAG,2BAA2BzT,MAAMA,GAAG,OAAOA,GAAG,QAAQyT,GAAG,gCAAgCzT,IAAIyT,GAAG,qBAAqBzT,IAAIyT,GAAG,2BAA2BzT,IAAIyT,GAAG,eAAezT,OAAOyT,GAAG,+BAA+BzT,IAAIA,GAAG,OAAOA,GAAG,OAAOA,GAAG,OAAOA,GAAG,OAAO,QAAQA,IAAIyT,GAAG,sCAAsCzT,IAAIyT,GAAG,0BAA0BzT,IAAIyT,GAAG,mCAAmCzT,IAAIyT,GAAG,6BAA6BzT,IAAIyT,GAAG,0BAA0BzT,IAAIyT,GAAG,0BAA0BzT,IAAIyT,GAAG,eAAezT,IAAIyT,GAAG,oBAAoBzT,IAAIyT,GAAGoq3C,SAAS793C,IAAIyT,GAAG,sCAAsCzT,IAAIyT,GAAGuq3C,OAAOh+3C,IAAIyT,GAAG,mBAAmBzT,IAAIyT,GAAG,gCAAgCzT,IAAIyT,GAAGqq3C,SAAS993C,IAAI,QAAQA,MAAMyT,GAAG,iCAAiCzT,IAAI,QAAQA,GAAG,QAAQA,GAAG,QAAQA,GAAGA,GAAG,OAAOA,GAAG,OAAO,QAAQA,GAAG,QAAQA,GAAG,QAAQA,GAAGA,GAAG,OAAOA,GAAG,OAAO,QAAQA,GAAGA,GAAG,OAAOA,GAAG,WAAWyT,GAAG,uBAAuBzT,IAAIA,GAAG,OAAOA,GAAG,OAAOA,GAAG,OAAOA,GAAG,QAAQyT,GAAG,yCAAyCzT,IAAIyT,GAAG,kDAAkDzT,IAAIyT,GAAG,kBAAkBzT,IAAIyT,GAAG,2BAA2BzT,IAAIyT,GAAG,gBAAgBzT,IAAIyT,GAAG,eAAezT,KAAK,CAAC,SAASwU,GAAGxU,GAAG,QAAS8T,GAAG9T,IAAI,SAASA,GAAG,SAAUyT,GAAG,sBAAsBzT,KAAK,MAAMA,GAAG,MAAMA,GAAG,MAAMA,GAAG,MAAMA,GAAG,MAAMA,GAAG,MAAMA,GAAG,MAAMA,GAAG,MAAMA,GAAG,MAAMA,IAAIyT,GAAG,uBAAuBzT,KAAK,OAAOA,GAAG,OAAOA,GAAG,OAAOA,GAAG,OAAOA,GAAG,OAAOA,GAAG,OAAOA,GAAG,OAAOA,GAAG,OAAOA,GAAG,OAAOA,GAAG,OAAOA,GAAG,OAAOA,GAAG,OAAOA,IAAIyT,GAAG,sBAAsBzT,IAAIyT,GAAG,gBAAgBzT,IAAIyT,GAAG,2BAA2BzT,KAAKA,GAAG,MAAMA,GAAG,MAAMA,GAAG,MAAMA,GAAG,MAAMA,GAAG,MAAMA,GAAG,KAAK,OAAOA,GAAGA,GAAG,MAAMA,GAAG,MAAMA,GAAG,MAAMA,GAAG,MAAM,OAAOA,GAAGA,GAAG,MAAMA,GAAG,MAAMA,GAAG,MAAMA,GAAG,OAAOyT,GAAG,oBAAoBzT,IAAI,OAAOA,GAAGyT,GAAG,iCAAiCzT,IAAIyT,GAAG,0BAA0BzT,IAAIyT,GAAG,oBAAoBzT,IAAIyT,GAAG,yBAAyBzT,MAAMA,GAAG,MAAMA,GAAG,OAAOyT,GAAG,oCAAoCzT,KAAKA,GAAG,OAAOA,GAAG,OAAOA,GAAG,OAAOA,GAAG,OAAOA,GAAG,OAAOA,GAAG,QAAQyT,GAAG,+BAA+BzT,IAAIyT,GAAGqq3C,SAAS993C,IAAIyT,GAAG,oBAAoBzT,IAAIyT,GAAG,2BAA2BzT,IAAIyT,GAAG,uBAAuBzT,IAAIyT,GAAG,iCAAiCzT,IAAI,OAAOA,GAAG,OAAOA,GAAG,OAAOA,GAAGA,GAAG,MAAMA,GAAG,OAAOA,GAAG,OAAOA,GAAG,OAAO,QAAQA,GAAG,QAAQA,EAAE,CAAjkC,CAAmkCA,GAAG,CAAC,SAASsU,GAAGtU,GAAG,OAAOA,GAAG,MAAMA,GAAG,MAAMyT,GAAG,+BAA+BzT,IAAIyT,GAAG,+BAA+BzT,EAAE,CAAC,SAASuU,GAAGvU,EAAED,GAAG,SAAUA,GAAGuU,GAAGtU,IAAIA,GAAG,MAAMA,GAAG,MAAMA,GAAG,MAAMA,GAAG,MAAMyT,GAAGmq3C,MAAM593C,GAAG,CAAC,SAAS0V,GAAG1V,GAAG,IAAI,IAAID,EAAE,EAAEY,EAAEX,EAAED,EAAEY,EAAEM,OAAOlB,GAAG,EAAE,GAAGuU,GAAG3T,EAAEZ,GAAG4Z,WAAW,IAAI,OAAO,EAAG,OAAO,CAAE,CAAC,IAAIrG,GAAG,KAAKkC,GAAG,cAAckI,GAAG,KAAKD,GAAG,SAASzd,GAAGA,GAAG,iBAAiBA,GAAGA,EAAEoB,QAAQ,iBAAiB,IAAIoU,GAAG,SAASlC,IAAIA,GAAGtT,EAAG,EAAE,SAAS8d,KAAKD,GAAGq22C,KAAK,IAAIxl3C,GAAG,oBAAoB,CAACuv3C,aAAazo3C,GAAG0o3C,UAAUxg3C,KAAM,CAAC,IAAIG,GAAG,IAAI/O,GAAGkP,GAAG,WAAW,OAAOxI,EAAE,EAAE0I,GAAG,WAAW,GAAG,aAAa1I,KAAKkI,GAAG,MAAM,IAAI0K,MAAM,wEAAwE5S,GAAG,UAAUsI,KAAKJ,IAAI3P,GAAG,CAAC+iB,IAAIpT,KAAI,SAAU1d,GAAGA,EAAEyd,GAAGzd,IAAIwV,GAAG,SAASsI,KAAO,GAAG,EAAEC,GAAG,CAACog3C,mBAAmB,KAAKC,yBAAyB,KAAKC,+BAA+B,KAAKpzvC,SAAS,WAAW,MAAO,WAAWz1H,IAAI,MAAMuI,GAAGog3C,kBAAkB,EAAEn8sC,UAAU,WAAW,MAAO,YAAYxsK,EAAE,EAAE81H,SAAS,SAAStrI,GAAGwV,GAAGxV,EAAEi+3C,aAAavg3C,GAAG1d,EAAEk+3C,SAAU,EAAEI,SAAS,WAAW,OAAO,MAAMvg3C,GAAGog3C,oBAAoB,MAAMpg3C,GAAGqg3C,0BAA0B,MAAMrg3C,GAAGsg3C,8BAA8B,EAAEE,aAAa,WAAW,OAAO7g3C,EAAE,GAAGS,GAAG,SAASne,EAAED,GAAGa,KAAK2/B,KAAKvgC,EAAED,GAAGa,KAAKyrB,IAAItsB,EAAEssB,IAAIzrB,KAAK493C,aAAaz+3C,EAAEy+3C,aAAa593C,KAAK693C,YAAY1+3C,EAAE0+3C,YAAY793C,KAAK8nH,WAAW3oH,EAAE2oH,aAAa9nH,KAAKyrB,IAAI,EAAEzrB,KAAK493C,aAAa,EAAE593C,KAAK693C,YAAY,IAAIzq3C,GAAGpT,KAAK8nH,WAAW,CAAC,EAAG,EAAEvqG,GAAG7d,UAAUu63C,kBAAkB,SAAS763C,GAAG,OAAO,SAASA,EAAED,GAAG,IAAI,IAAIY,EAAE,EAAEV,EAAED,EAAEW,EAAEV,EAAEgB,OAAON,GAAG,EAAE,IAAI4T,GAAGtU,EAAEU,GAAGgZ,WAAW,GAAG5Z,GAAG,OAAO,EAAG,OAAO,CAAE,CAA9F,CAAgGC,EAAE+d,GAAGktH,WAAW,EAAE9sH,GAAG7d,UAAUo+3C,kBAAkB,WAAW,OAAO,IAAI993C,KAAK493C,aAAa,EAAE/63C,KAAKgL,KAAK7N,KAAKyrB,IAAIzrB,KAAK693C,YAAYjB,qBAAqB583C,KAAK493C,aAAa,EAAE,EAAErg3C,GAAG7d,UAAUq+3C,uBAAuB,WAAW,IAAI3+3C,EAAEY,KAAK2/B,KAAKxgC,EAAEC,EAAEyD,KAAKyK,MAAMlO,GAAGW,EAAEC,KAAK893C,oBAAoB,OAAO1+3C,EAAEY,KAAK693C,YAAYlB,gBAAgB,CAACqB,UAAU,EAAEC,QAAQ,EAAE7+3C,EAAED,GAAG,EAAEA,GAAGY,GAAG,CAACi+3C,UAAU,GAAGC,QAAQ,EAAE7+3C,EAAE,GAAG,EAAEW,GAAGZ,EAAE,EAAE,IAAIqe,GAAG,SAASpe,EAAED,GAAGa,KAAKw5C,SAASp6C,EAAEY,KAAKmB,MAAMhC,EAAEa,KAAKghe,WAAW,SAAS5he,EAAED,GAAG,GAAG2X,GAAG1X,GAAG,OAAO,IAAIgZ,GAAGhZ,EAAED,GAAG,GAAGmY,GAAGlY,GAAG,CAAC,IAAIW,EAAEoY,GAAG/Y,EAAED,GAAG,GAAG,UAAUY,EAAEyjB,OAAO,MAAM,IAAIgE,MAAMznB,EAAEoB,MAAMkuB,KAAI,SAAUjwB,GAAG,OAAOA,EAAEylB,IAAI,KAAKzlB,EAAE2yB,OAAQ,IAAGllB,KAAK,OAAO,OAAO9M,EAAEoB,KAAK,CAAC,IAAI9B,EAAED,EAAE,MAAO,iBAAiBA,GAAG,UAAUD,EAAEoN,OAAOlN,EAAEqH,GAAG6lB,MAAMntB,IAAI,CAACgjB,KAAK,WAAWkyf,SAAS,WAAW,OAAOj1gB,CAAC,EAAE,CAA/S,MAAiT,IAASF,EAAEC,EAAE8+3C,cAAc373C,QAAQpD,EAAEC,EAAE8+3C,cAAe,EAAE1g3C,GAAG9d,UAAUy+3C,aAAa,WAAW,MAAO,WAAWn+3C,KAAKghe,WAAW5+c,MAAM,cAAcpiB,KAAKghe,WAAW5+c,IAAI,EAAE5E,GAAG9d,UAAU0+3C,iBAAiB,SAASh/3C,EAAED,EAAEY,GAAG,OAAOC,KAAKw5C,SAAS4k1C,iBAAiBp+3C,KAAKZ,EAAED,EAAEY,EAAE,EAAE,IAAI0d,GAAG,SAASre,GAAGY,KAAKw5C,SAASp6C,EAAEY,KAAKmB,MAAM,IAAIqc,GAAGpe,OAAE,EAAQ,EAAEqe,GAAG/d,UAAU2+3C,aAAa,SAASj/3C,EAAED,GAAG,OAAO,IAAIke,GAAGrd,KAAKw5C,SAASx5C,KAAKmB,MAAMhC,EAAEyD,EAAE,CAAC,EAAExD,EAAE0oH,WAAW9nH,KAAK8nH,YAAY1oH,EAAEqsB,IAAI,EAAEhO,GAAG/d,UAAU4+3C,eAAe,WAAW,OAAO,IAAIjh3C,GAAGrd,KAAKw5C,SAASx5C,KAAKmB,MAAM,KAAK,CAAC,EAAE,EAAE,EAAE,IAAI0c,GAAG,SAASze,GAAGY,KAAKk/M,YAAY9/M,EAAEY,KAAKu+3C,QAAQj/3C,OAAOY,OAAOd,EAAEo/3C,oCAAqC,EAAE3g3C,GAAGne,UAAUw8H,SAAS,SAAS98H,GAAG,OAAOmE,EAAEvD,KAAKu+3C,QAAQn/3C,GAAG+B,MAAMA,MAAM,EAAE0c,GAAGne,UAAUw/hB,SAAS,SAAS9/hB,EAAED,GAAGa,KAAKu+3C,QAAQ5+3C,eAAeP,KAAKY,KAAKu+3C,QAAQn/3C,GAAG,IAAIqe,GAAGzd,KAAKu+3C,QAAQn/3C,GAAGo6C,WAAWx5C,KAAKu+3C,QAAQn/3C,GAAG+B,MAAM,IAAIqc,GAAGxd,KAAKu+3C,QAAQn/3C,GAAGo6C,SAAS,OAAOr6C,OAAE,EAAOoE,EAAEpE,GAAI,EAAE0e,GAAGne,UAAU++3C,cAAc,SAASr/3C,GAAG,OAAOmE,EAAEvD,KAAKu+3C,QAAQn/3C,GAAG0oH,WAAW,EAAEjqG,GAAGne,UAAUg/3C,cAAc,SAASt/3C,EAAED,GAAGa,KAAKu+3C,QAAQ5+3C,eAAeP,KAAKY,KAAKu+3C,QAAQn/3C,GAAG,IAAIqe,GAAGzd,KAAKu+3C,QAAQn/3C,GAAGo6C,WAAWx5C,KAAKu+3C,QAAQn/3C,GAAG0oH,WAAWvkH,EAAEpE,SAAI,CAAO,EAAE0e,GAAGne,UAAUytsB,UAAU,WAAW,IAAI,IAAI/tsB,EAAE,CAAC,EAAED,EAAE,EAAEY,EAAET,OAAOgU,KAAKtT,KAAKu+3C,SAASp/3C,EAAEY,EAAEM,OAAOlB,GAAG,EAAE,CAAC,IAAIE,EAAEU,EAAEZ,GAAGyB,EAAEZ,KAAKk8H,SAAS78H,QAAG,IAASuB,IAAIxB,EAAEC,GAAGuB,GAAG,IAAII,EAAEhB,KAAKy+3C,cAAcp/3C,QAAG,IAAS2B,IAAI5B,EAAEC,EAAE,eAAe2B,EAAG,CAAC,OAAO5B,CAAC,EAAEye,GAAGne,UAAU2+3C,aAAa,SAASj/3C,EAAED,GAAG,IAAI,IAAIY,EAAE,IAAI6d,GAAG5d,KAAKk/M,aAAa7/M,EAAE,EAAEuB,EAAEtB,OAAOgU,KAAKtT,KAAKu+3C,SAASl/3C,EAAEuB,EAAEP,OAAOhB,GAAG,EAAE,CAAC,IAAI2B,EAAEJ,EAAEvB,GAAGU,EAAEw+3C,QAAQv93C,GAAGhB,KAAKu+3C,QAAQv93C,GAAGq93C,aAAaj/3C,EAAED,EAAEo/3C,QAAQv93C,GAAI,CAAC,OAAOjB,CAAC,EAAE8d,GAAGne,UAAU4+3C,eAAe,WAAW,IAAI,IAAIl/3C,EAAE,IAAIwe,GAAG5d,KAAKk/M,aAAa//M,EAAE,EAAEY,EAAET,OAAOgU,KAAKtT,KAAKu+3C,SAASp/3C,EAAEY,EAAEM,OAAOlB,GAAG,EAAE,CAAC,IAAIE,EAAEU,EAAEZ,GAAGC,EAAEm/3C,QAAQl/3C,GAAGW,KAAKu+3C,QAAQl/3C,GAAGi/3C,gBAAiB,CAAC,OAAOl/3C,CAAC,EAAE,IAAIie,GAAG,SAASje,EAAED,EAAEY,EAAEV,EAAEuB,GAAGZ,KAAKw5C,SAASp6C,EAAEY,KAAKmB,MAAMhC,EAAEa,KAAK47P,MAAMh7P,EAAEvB,EAAE8hD,OAAO,EAAEnhD,KAAKymC,IAAIzmC,KAAK47P,MAAMv8P,EAAEgmD,UAAU,EAAEjmD,EAAE8+3C,cAAcp2wC,aAAazoH,EAAE8hD,OAAO9hD,EAAEgmD,YAAYrlD,KAAK2+3C,MAAM5+3C,EAAG,EAAEsd,GAAG3d,UAAU0+3C,iBAAiB,SAASh/3C,EAAED,EAAEY,GAAG,IAAIV,EAAED,EAAEqsB,KAAK,EAAE7qB,EAAEZ,KAAKmB,MAAMi93C,iBAAiBh/3C,EAAED,EAAEY,GAAGiB,EAAEhB,KAAK2+3C,MAAM,GAAG393C,EAAE,CAAC,GAAG3B,EAAEW,KAAKymC,IAAI,OAAOzmC,KAAK2+3C,MAAM,KAAK/93C,EAAE,GAAGZ,KAAKmB,MAAMg93C,eAAe,OAAOn+3C,KAAK2+3C,MAAM,KAAK/93C,EAAE,GAAGvB,EAAEW,KAAK47P,MAAM,OAAO56P,EAAEo93C,iBAAiBh/3C,EAAED,EAAEY,GAAG,IAAIO,GAAGjB,EAAEW,KAAK47P,QAAQ57P,KAAKymC,IAAIzmC,KAAK47P,OAAO,OAAO57P,KAAKw5C,SAASi2M,YAAYzuP,EAAEo93C,iBAAiBh/3C,EAAED,EAAEY,GAAGa,EAAE,SAASxB,GAAG,GAAGA,GAAG,EAAE,OAAO,EAAE,GAAGA,GAAG,EAAE,OAAO,EAAE,IAAID,EAAEC,EAAEA,EAAEW,EAAEZ,EAAEC,EAAE,OAAO,GAAGA,EAAE,GAAGW,EAAE,GAAGX,EAAED,GAAGY,EAAE,IAAI,CAA7F,CAA+FO,GAAG,CAAC,OAAOM,CAAC,EAAE,IAAIgd,GAAG,SAASxe,GAAGY,KAAKk/M,YAAY9/M,EAAEY,KAAKu+3C,QAAQj/3C,OAAOY,OAAOd,EAAEw/3C,mCAAoC,EAAEhh3C,GAAGle,UAAU0+3C,iBAAiB,SAASh/3C,EAAED,EAAEY,GAAG,IAAI,IAAIV,EAAE,IAAIse,GAAG3d,KAAKk/M,aAAat+M,EAAE,EAAEI,EAAE1B,OAAOgU,KAAKtT,KAAKu+3C,SAAS393C,EAAEI,EAAEX,OAAOO,GAAG,EAAE,CAAC,IAAIN,EAAEU,EAAEJ,GAAGvB,EAAEk/3C,QAAQj+3C,GAAGN,KAAKu+3C,QAAQj+3C,GAAG893C,iBAAiBh/3C,EAAED,EAAEY,EAAG,CAAC,OAAOV,CAAC,EAAEue,GAAGle,UAAU439B,cAAc,WAAW,IAAI,IAAIl49B,EAAE,EAAED,EAAEG,OAAOgU,KAAKtT,KAAKu+3C,SAASn/3C,EAAED,EAAEkB,OAAOjB,GAAG,EAAE,GAAGY,KAAKu+3C,QAAQp/3C,EAAEC,IAAIu/3C,MAAM,OAAO,EAAG,OAAO,CAAE,EAAE,IAAIjh3C,GAAG,SAASte,GAAGY,KAAKk/M,YAAY9/M,EAAEY,KAAKu+3C,QAAQj/3C,OAAOY,OAAOd,EAAEy/3C,sBAAuB,EAAEnh3C,GAAGhe,UAAUw8H,SAAS,SAAS98H,GAAG,OAAOmE,EAAEvD,KAAKu+3C,QAAQn/3C,GAAG+B,MAAM,EAAEuc,GAAGhe,UAAUw/hB,SAAS,SAAS9/hB,EAAED,GAAGa,KAAKu+3C,QAAQn/3C,GAAG,IAAIoe,GAAGxd,KAAKu+3C,QAAQn/3C,GAAGo6C,SAAS,OAAOr6C,OAAE,EAAOoE,EAAEpE,GAAI,EAAEue,GAAGhe,UAAUytsB,UAAU,WAAW,IAAI,IAAI/tsB,EAAE,CAAC,EAAED,EAAE,EAAEY,EAAET,OAAOgU,KAAKtT,KAAKu+3C,SAASp/3C,EAAEY,EAAEM,OAAOlB,GAAG,EAAE,CAAC,IAAIE,EAAEU,EAAEZ,GAAGyB,EAAEZ,KAAKk8H,SAAS78H,QAAG,IAASuB,IAAIxB,EAAEC,GAAGuB,EAAG,CAAC,OAAOxB,CAAC,EAAEse,GAAGhe,UAAU0+3C,iBAAiB,SAASh/3C,EAAED,EAAEY,GAAG,IAAI,IAAIV,EAAE,IAAIse,GAAG3d,KAAKk/M,aAAat+M,EAAE,EAAEI,EAAE1B,OAAOgU,KAAKtT,KAAKu+3C,SAAS393C,EAAEI,EAAEX,OAAOO,GAAG,EAAE,CAAC,IAAIN,EAAEU,EAAEJ,GAAGvB,EAAEk/3C,QAAQj+3C,GAAGN,KAAKu+3C,QAAQj+3C,GAAG893C,iBAAiBh/3C,EAAED,EAAEY,EAAG,CAAC,OAAOV,CAAC,EAAE,IAAIye,GAAG,SAAS1e,EAAED,EAAEY,GAAGC,KAAKw5C,SAASp6C,EAAEY,KAAKmB,MAAMhC,EAAEa,KAAKo5C,WAAWr5C,CAAE,EAAE+d,GAAGpe,UAAUy+H,WAAW,WAAW,MAAO,aAAan+H,KAAKmB,MAAMihB,IAAI,EAAEtE,GAAGpe,UAAUo/3C,WAAW,SAAS1/3C,GAAG,MAAO,aAAaY,KAAKmB,MAAMihB,KAAKpiB,KAAKmB,MAAMA,MAAM/B,CAAC,EAAE0e,GAAGpe,UAAU40gB,SAAS,SAASl1gB,EAAED,EAAEY,EAAEV,GAAG,OAAOW,KAAKw5C,SAAS86d,SAASt0gB,KAAKmB,MAAMnB,KAAKo5C,WAAWh6C,EAAED,EAAEY,EAAEV,EAAE,EAAE,IAAIse,GAAG,SAASve,GAAGY,KAAKk/M,YAAY9/M,EAAEY,KAAKu+3C,QAAQj/3C,OAAOY,OAAOd,EAAE2/3C,+BAAgC,EAAEph3C,GAAGje,UAAUyD,IAAI,SAAS/D,GAAG,OAAOY,KAAKu+3C,QAAQn/3C,EAAE,EAAE,IAAI6e,GAAG,SAAS7e,GAAGY,KAAKk+3C,cAAc9+3C,CAAE,EAAE6e,GAAGve,UAAU0+3C,iBAAiB,SAASh/3C,EAAED,GAAG,OAAOC,EAAE4he,WAAWszC,SAASn1gB,EAAE,EAAE8e,GAAGve,UAAU+vP,YAAY,SAASrwP,EAAED,EAAEY,GAAG,IAAIV,EAAEkK,GAAGvJ,KAAKk+3C,cAAc3x3C,MAAM,OAAOlN,EAAEA,EAAED,EAAED,EAAEY,GAAGX,CAAC,EAAE,IAAI4e,GAAG,SAAS5e,EAAED,GAAGa,KAAKk+3C,cAAc9+3C,EAAEY,KAAKq5J,UAAUl6J,CAAE,EAAE6e,GAAGte,UAAU0+3C,iBAAiB,SAASh/3C,EAAED,EAAEY,EAAEV,GAAG,OAAO,IAAIye,GAAG9d,KAAK,aAAaZ,EAAE4he,WAAW5+c,MAAM,WAAWhjB,EAAE4he,WAAW5+c,KAAK,CAACA,KAAK,WAAWjhB,MAAM/B,EAAE4he,WAAWszC,SAASn1gB,EAAE,KAAK,CAAC,EAAEY,EAAEV,IAAID,EAAE4he,WAAW7he,EAAE,EAAE6e,GAAGte,UAAU+vP,YAAY,SAASrwP,EAAED,EAAEY,GAAG,GAAG,aAAaX,EAAE+B,MAAMihB,MAAM,aAAajjB,EAAEgC,MAAMihB,KAAK,OAAOhjB,EAAE,QAAG,IAASA,EAAE+B,MAAMA,YAAO,IAAShC,EAAEgC,MAAMA,MAAM,OAAO,IAAI2c,GAAG9d,KAAK,CAACoiB,KAAK,WAAWjhB,WAAM,GAAQ/B,EAAEg6C,YAAY,IAAI/5C,EAAEkK,GAAGvJ,KAAKk+3C,cAAc3x3C,MAAM,OAAOlN,EAAE,IAAIye,GAAG9d,KAAK,CAACoiB,KAAK,WAAWjhB,MAAM9B,EAAED,EAAE+B,MAAMA,MAAMhC,EAAEgC,MAAMA,MAAMpB,IAAIX,EAAEg6C,YAAYh6C,CAAC,EAAE4e,GAAGte,UAAU40gB,SAAS,SAASl1gB,EAAED,EAAEY,EAAEV,EAAEuB,EAAEI,GAAG,MAAO,aAAa5B,EAAEgjB,KAAKhjB,EAAE+B,MAAM/B,EAAEk1gB,SAASn1gB,EAAEY,EAAEV,EAAEuB,EAAEI,EAAE,EAAE,IAAImd,GAAG,SAAS/e,GAAG,SAASD,IAAIC,EAAEmB,MAAMP,KAAKI,UAAW,CAAC,OAAOhB,IAAID,EAAEK,UAAUJ,IAAID,EAAEO,UAAUJ,OAAOY,OAAOd,GAAGA,EAAEM,YAAYO,YAAYd,EAAEA,EAAEO,UAAU0+3C,iBAAiB,SAASh/3C,EAAED,EAAEY,EAAEV,GAAG,QAAG,IAASD,EAAE+B,MAAM,OAAO,IAAI2c,GAAG9d,KAAK,CAACoiB,KAAK,WAAWjhB,WAAM,GAAQhC,GAAG,GAAG,aAAaC,EAAE4he,WAAW5+c,KAAK,CAAC,IAAIxhB,EAAExB,EAAE4he,WAAWszC,SAASn1gB,EAAE,KAAK,CAAC,EAAEY,EAAEV,GAAG2B,EAAE,kBAAkB5B,EAAEo6C,SAAS0k1C,cAAc3x3C,MAAM,iBAAiB3L,EAAEA,EAAE8J,KAAK9J,EAAEN,EAAEN,KAAKg/3C,WAAWh+3C,EAAEA,EAAEA,EAAE7B,GAAG,OAAO,IAAI2e,GAAG9d,KAAK,CAACoiB,KAAK,WAAWjhB,MAAMb,GAAGnB,EAAE,CAAC,GAAG,WAAWC,EAAE4he,WAAW5+c,KAAK,CAAC,IAAIthB,EAAEd,KAAKg/3C,WAAW5/3C,EAAE4he,WAAWszC,SAAS,CAAC30e,KAAKxgC,EAAEwgC,KAAK,IAAIvgC,EAAE4he,WAAWszC,SAAS,CAAC30e,KAAKxgC,EAAEwgC,OAAOvgC,EAAE4he,WAAWszC,SAAS,CAAC30e,KAAKxgC,EAAEwgC,KAAK,IAAIxgC,GAAG,OAAO,IAAI2e,GAAG9d,KAAK,CAACoiB,KAAK,WAAWjhB,MAAML,GAAG3B,EAAE,CAAC,OAAO,IAAI2e,GAAG9d,KAAKZ,EAAE4he,WAAW7he,EAAE,EAAEA,EAAEO,UAAU40gB,SAAS,SAASl1gB,EAAED,EAAEY,EAAEV,EAAEuB,EAAEI,GAAG,GAAG,WAAW5B,EAAEgjB,KAAK,CAAC,IAAI9hB,EAAElB,EAAEk1gB,SAASn1gB,EAAEY,EAAEV,EAAEuB,EAAEI,GAAG,OAAOhB,KAAKg/3C,WAAW1+3C,EAAEA,EAAEA,EAAEnB,EAAE,CAAC,MAAO,cAAcC,EAAEgjB,KAAKpiB,KAAKg/3C,WAAW5/3C,EAAEk1gB,SAAS,CAAC30e,KAAK98B,KAAKyK,MAAMnO,EAAEwgC,MAAM,GAAG5/B,EAAEV,GAAGD,EAAEk1gB,SAAS,CAAC30e,KAAK98B,KAAKyK,MAAMnO,EAAEwgC,OAAO5/B,EAAEV,GAAGD,EAAEk1gB,SAAS,CAAC30e,KAAK98B,KAAKyK,MAAMnO,EAAEwgC,MAAM,GAAG5/B,EAAEV,GAAGF,GAAGC,EAAE+B,KAAK,EAAEhC,EAAEO,UAAUs/3C,WAAW,SAAS5/3C,EAAED,EAAEY,EAAEV,GAAG,OAAOA,EAAEsgC,KAAKtgC,EAAEw+3C,YAAYlB,gBAAgB,CAAC5+2C,KAAK3e,EAAE6Z,GAAG9Z,GAAG,CAAC4e,KAAKhe,EAAEkZ,GAAG9Z,EAAE,EAAEA,EAAEO,UAAU+vP,YAAY,SAASrwP,GAAG,OAAOA,CAAC,EAAED,CAAC,CAA/rC,CAAisC6e,IAAIa,GAAG,SAASzf,GAAGY,KAAKk+3C,cAAc9+3C,CAAE,EAAEyf,GAAGnf,UAAU0+3C,iBAAiB,SAASh/3C,EAAED,EAAEY,EAAEV,GAAG,QAAG,IAASD,EAAE+B,MAAM,CAAC,GAAG,aAAa/B,EAAE4he,WAAW5+c,KAAK,CAAC,IAAIxhB,EAAExB,EAAE4he,WAAWszC,SAASn1gB,EAAE,KAAK,CAAC,EAAEY,EAAEV,GAAG,OAAOW,KAAKg/3C,WAAWp+3C,EAAEA,EAAEA,EAAEzB,EAAE,CAAC,OAAOa,KAAKg/3C,WAAW5/3C,EAAE4he,WAAWszC,SAAS,IAAI/2f,GAAG1a,KAAKyK,MAAMnO,EAAEwgC,KAAK,GAAGxgC,IAAIC,EAAE4he,WAAWszC,SAAS,IAAI/2f,GAAG1a,KAAKyK,MAAMnO,EAAEwgC,MAAMxgC,IAAIC,EAAE4he,WAAWszC,SAAS,IAAI/2f,GAAG1a,KAAKyK,MAAMnO,EAAEwgC,KAAK,GAAGxgC,IAAIA,EAAE,CAAC,EAAE0f,GAAGnf,UAAUs/3C,WAAW,SAAS5/3C,EAAED,EAAEY,EAAEV,GAAG,OAAOA,EAAEsgC,KAAKtgC,EAAEw+3C,YAAYlB,gBAAgB,CAAC5+2C,KAAK3e,EAAE6Z,GAAG9Z,GAAG,CAAC4e,KAAKhe,EAAEkZ,GAAG9Z,EAAE,EAAE0f,GAAGnf,UAAU+vP,YAAY,SAASrwP,GAAG,OAAOA,CAAC,EAAE,IAAI8e,GAAG,SAAS9e,GAAGY,KAAKk+3C,cAAc9+3C,CAAE,EAAE8e,GAAGxe,UAAU0+3C,iBAAiB,SAASh/3C,EAAED,EAAEY,EAAEV,GAAG,QAASD,EAAE4he,WAAWszC,SAASn1gB,EAAE,KAAK,CAAC,EAAEY,EAAEV,EAAE,EAAE6e,GAAGxe,UAAU+vP,YAAY,WAAW,OAAO,CAAE,EAAE,IAAIrxO,GAAG,SAAShf,GAAG,IAAI,IAAID,KAAKa,KAAKwoC,WAAWppC,EAAEY,KAAK6+3C,sBAAsB,CAAC,EAAE7+3C,KAAKw+3C,oCAAoC,CAAC,EAAEx+3C,KAAK4+3C,mCAAmC,CAAC,EAAE5+3C,KAAK++3C,+BAA+B,CAAC,EAAE/+3C,KAAKi/3C,sBAAsB,GAAG7/3C,EAAE,CAAC,IAAIW,EAAEX,EAAED,GAAGY,EAAEm+3C,cAActH,aAAa523C,KAAKi/3C,sBAAsBp93C,KAAK1C,GAAG,IAAIE,EAAEW,KAAK6+3C,sBAAsB1/3C,GAAG,IAAIqe,GAAGzd,OAAE,GAAQa,EAAEZ,KAAKw+3C,oCAAoCr/3C,GAAG,IAAIse,GAAG1d,GAAGC,KAAK4+3C,mCAAmCz/3C,GAAGyB,EAAE093C,iBAAiBt+3C,KAAK++3C,+BAA+B5/3C,GAAGE,EAAE++3C,iBAAiB,CAAC,EAAG,CAAC,EAAEjs3C,GAAG,qBAAqB6L,IAAI7L,GAAG,uBAAuB8L,IAAI9L,GAAG,+BAA+BgM,IAAIhM,GAAG,qBAAqB0M,IAAI1M,GAAG,oBAAoB+L,IAAI,IAAIO,GAAG,SAASrf,GAAG,SAASD,EAAEA,EAAEY,GAAG,GAAGX,EAAEQ,KAAKI,MAAMA,KAAKurB,GAAGpsB,EAAEosB,GAAGvrB,KAAKuM,KAAKpN,EAAEoN,KAAKvM,KAAKk/3C,eAAe,CAACry2C,OAAO,WAAW,OAAO,CAAE,EAAE4u2C,cAAa,GAAI,WAAWt83C,EAAEoN,OAAOvM,KAAKi4K,SAAY94K,EAAG84K,SAASj4K,KAAK+iO,QAAQ5jO,EAAE4jO,QAAQ/iO,KAAKgjO,QAAQ7jO,EAAE6jO,QAAQ,eAAe7jO,EAAEoN,OAAOvM,KAAK6H,OAAO1I,EAAE0I,OAAO7H,KAAKm2I,YAAYh3I,EAAE,gBAAgBa,KAAK6sB,OAAO1tB,EAAE0tB,QAAQ9sB,EAAEmhI,SAASlhI,KAAKm/3C,mBAAmB,IAAIzh3C,GAAG3d,EAAEmhI,SAASnhI,EAAEi13C,OAAO,CAAC,IAAI,IAAI313C,KAAKW,KAAKo/3C,qBAAqB,IAAIvh3C,GAAG9d,EAAEi13C,OAAO713C,EAAE613C,MAAMh13C,KAAKq/3C,iBAAiBhg4C,EAAEF,EAAE613C,MAAM313C,GAAG,CAAC62F,UAAS,IAAK,IAAI,IAAIt1F,KAAKzB,EAAE+hI,OAAOlhI,KAAKs/3C,kBAAkB1+3C,EAAEzB,EAAE+hI,OAAOtgI,GAAG,CAACs1F,UAAS,IAAKl2F,KAAKu/3C,oBAAoBv/3C,KAAKo/3C,qBAAqBd,iBAAiBt+3C,KAAKg13C,MAAM,IAAIr32C,GAAG5d,EAAEi13C,MAAO,CAAC,CAAC,OAAO513C,IAAID,EAAEK,UAAUJ,IAAID,EAAEO,UAAUJ,OAAOY,OAAOd,GAAGA,EAAEM,YAAYO,YAAYd,EAAEA,EAAEO,UAAUq+3C,uBAAuB,WAAW,OAAO/93C,KAAKw/3C,oBAAoB,EAAErg4C,EAAEO,UAAU+/3C,kBAAkB,SAASrg4C,GAAG,MAAO,eAAeA,EAAEY,KAAKgtM,WAAWhtM,KAAKm/3C,mBAAmBjjwC,SAAS98H,EAAE,EAAED,EAAEO,UAAU4/3C,kBAAkB,SAASlg4C,EAAED,EAAEY,QAAG,IAASA,IAAIA,EAAE,CAAC,GAAG,MAAMZ,GAAGa,KAAK0/3C,UAAUxr3C,GAAG,UAAUlU,KAAKurB,GAAG,WAAWnsB,EAAEA,EAAED,EAAEY,KAAK,eAAeX,EAAEY,KAAKm/3C,mBAAmBjg2B,SAAS9/hB,EAAED,GAAGa,KAAKgtM,WAAW7tM,EAAG,EAAEA,EAAEO,UAAUig4C,iBAAiB,SAASvg4C,GAAG,OAAO+C,EAAE/C,EAAE,eAAeY,KAAKo/3C,qBAAqBX,cAAcr/3C,EAAE2C,MAAM,GAAG,KAAuB/B,KAAKo/3C,qBAAqBljwC,SAAS98H,EAAE,EAAED,EAAEO,UAAU2/3C,iBAAiB,SAASjg4C,EAAED,EAAEY,GAAG,QAAG,IAASA,IAAIA,EAAE,CAAC,GAAG,MAAMZ,GAAGa,KAAK0/3C,UAAU3s3C,GAAG,UAAU/S,KAAKurB,GAAG,UAAUnsB,EAAEA,EAAED,EAAEY,GAAG,OAAO,EAAG,GAAGoC,EAAE/C,EAAE,eAAe,OAAOY,KAAKo/3C,qBAAqBV,cAAct/3C,EAAE2C,MAAM,GAAG,IAAsB5C,QAAG,IAAQ,EAAG,IAAIE,EAAEW,KAAKo/3C,qBAAqBb,QAAQn/3C,GAAGwB,EAAE,4BAA4BvB,EAAEm6C,SAAS0k1C,cAAc,iBAAiBl93C,EAAE3B,EAAE8B,MAAMg93C,eAAe793C,EAAEjB,EAAE8B,MAAMnB,KAAKo/3C,qBAAqBlg2B,SAAS9/hB,EAAED,GAAGa,KAAK4/3C,kCAAkCxg4C,GAAG,IAAI0B,EAAEd,KAAKo/3C,qBAAqBb,QAAQn/3C,GAAG+B,MAAM,OAAOL,EAAEq93C,gBAAgBn93C,GAAGJ,GAAGZ,KAAK6/3C,sCAAsCzg4C,EAAEkB,EAAEQ,EAAE,EAAE3B,EAAEO,UAAUkg4C,kCAAkC,SAASxg4C,GAAG,EAAED,EAAEO,UAAUmg4C,sCAAsC,SAASzg4C,EAAED,EAAEY,GAAG,OAAO,CAAE,EAAEZ,EAAEO,UAAUq0Z,SAAS,SAAS30Z,GAAG,SAAUY,KAAK+iO,SAAS3jO,EAAEY,KAAK+iO,aAAa/iO,KAAKgjO,SAAS5jO,GAAGY,KAAKgjO,UAAU,SAAShjO,KAAKgtM,UAAU,EAAE7tM,EAAEO,UAAUog4C,kBAAkB,SAAS1g4C,GAAGY,KAAKu/3C,oBAAoBv/3C,KAAKo/3C,qBAAqBf,aAAaj/3C,EAAEY,KAAKu/3C,oBAAqB,EAAEpg4C,EAAEO,UAAU439B,cAAc,WAAW,OAAOt39B,KAAKu/3C,oBAAoBjoa,eAAe,EAAEn49B,EAAEO,UAAUqg4C,YAAY,SAAS3g4C,EAAED,GAAGC,EAAE2+3C,yBAAyB/93C,KAAKw/3C,qBAAqBpg4C,EAAE2+3C,0BAA0B/93C,KAAKm/3C,qBAAqBn/3C,KAAKkhI,OAAOlhI,KAAKm/3C,mBAAmBf,iBAAiBh/3C,OAAE,EAAOD,IAAIa,KAAKg13C,MAAMh13C,KAAKu/3C,oBAAoBnB,iBAAiBh/3C,OAAE,EAAOD,EAAG,EAAEA,EAAEO,UAAUytsB,UAAU,WAAW,IAAI/tsB,EAAE,CAACmsB,GAAGvrB,KAAKurB,GAAGhf,KAAKvM,KAAKuM,KAAK1E,OAAO7H,KAAK6H,OAAO,eAAe7H,KAAKm2I,YAAY8hC,SAASj4K,KAAKi4K,SAAS8qD,QAAQ/iO,KAAK+iO,QAAQC,QAAQhjO,KAAKgjO,QAAQn2M,OAAO7sB,KAAK6sB,OAAOq0G,OAAOlhI,KAAKm/3C,oBAAoBn/3C,KAAKm/3C,mBAAmBhyrB,YAAY6nrB,MAAMh13C,KAAKo/3C,sBAAsBp/3C,KAAKo/3C,qBAAqBjyrB,aAAa,OAAOntsB,KAAKgtM,aAAa5tM,EAAE8hI,OAAO9hI,EAAE8hI,QAAQ,CAAC,EAAE9hI,EAAE8hI,OAAO8rE,WAAWhtM,KAAKgtM,YAAY1pM,EAAElE,GAAE,SAAUA,EAAED,GAAG,aAAS,IAASC,GAAG,WAAWD,IAAIG,OAAOgU,KAAKlU,GAAGiB,QAAQ,UAAUlB,IAAIG,OAAOgU,KAAKlU,GAAGiB,OAAQ,GAAE,EAAElB,EAAEO,UAAUgg4C,UAAU,SAAStg4C,EAAED,EAAEY,EAAEV,EAAEuB,GAAG,YAAO,IAASA,IAAIA,EAAE,CAAC,KAAKA,IAAG,IAAKA,EAAEs1F,WAAWvhF,GAAG3U,KAAKZ,EAAEQ,KAAK2S,GAAG,CAACsS,IAAI1lB,EAAEu83C,UAAU173C,KAAKuM,KAAK4u3C,UAAUp73C,EAAEoB,MAAM9B,EAAE673C,UAAUzs3C,GAAG4F,MAAM,CAACy/2C,QAAO,EAAGD,QAAO,KAAM,EAAE103C,EAAEO,UAAUsg4C,KAAK,WAAW,OAAO,CAAE,EAAE7g4C,EAAEO,UAAUug4C,cAAc,WAAW,OAAO,CAAE,EAAE9g4C,EAAEO,UAAUwg4C,iBAAiB,WAAW,OAAO,CAAE,EAAE/g4C,EAAEO,UAAUmvH,OAAO,WAAW,EAAE1vH,EAAEO,UAAUi73C,iBAAiB,WAAW,IAAI,IAAIv73C,KAAKY,KAAKg13C,MAAMuJ,QAAQ,CAAC,IAAIp/3C,EAAEa,KAAKg13C,MAAM7x3C,IAAI/D,GAAG,GAAGD,aAAa2e,IAAInH,GAAGxX,EAAEq6C,SAAS0k1C,iBAAiB,WAAW/+3C,EAAEgC,MAAMihB,MAAM,cAAcjjB,EAAEgC,MAAMihB,OAAOjjB,EAAEgC,MAAMw53C,iBAAiB,OAAO,CAAE,CAAC,OAAO,CAAE,EAAEx73C,CAAC,CAAx0H,CAA00H+O,IAAIuR,GAAG,CAACk2P,KAAK/2P,UAAUk3P,MAAMn2P,WAAWi2P,MAAMh2P,WAAWm2P,OAAOl2P,YAAYg2P,MAAM/1P,WAAWk2P,OAAOj2P,YAAYm2P,QAAQl2P,cAAc3B,GAAG,SAASjf,EAAED,GAAGa,KAAKmg4C,aAAa/g4C,EAAEY,KAAKog4C,MAAMjh4C,EAAEa,KAAK4kB,KAAK5kB,KAAKqg4C,MAAMrg4C,KAAKog4C,MAAM,EAAEpg4C,KAAKsg4C,MAAMtg4C,KAAKog4C,MAAM,EAAEpg4C,KAAKug4C,MAAMvg4C,KAAKog4C,MAAM,CAAE,EAAE5h3C,GAAG,WAAWxe,KAAKwg4C,eAAc,EAAGxg4C,KAAKyg4C,UAAU,EAAEzg4C,KAAK6uH,OAAO,EAAG,EAAE,SAASnwG,GAAGtf,EAAED,QAAG,IAASA,IAAIA,EAAE,GAAG,IAAIY,EAAE,EAAEV,EAAE,EAAE,MAAO,CAACqh4C,QAAQth4C,EAAEiwB,KAAI,SAAUjwB,GAAG,IAAIwB,EAAE6e,GAAGrgB,EAAEmN,MAAMoxH,kBAAkB38H,EAAEjB,EAAE2hB,GAAG3hB,EAAE8C,KAAK8K,IAAIxO,EAAEyB,IAAIN,EAAElB,EAAE8uP,YAAY,EAAE,OAAO7uP,EAAEwD,KAAK8K,IAAItO,EAAEuB,GAAGb,GAAGa,EAAEN,EAAE,CAACoK,KAAKtL,EAAEsL,KAAK6B,KAAKnN,EAAEmN,KAAK2hP,WAAW5tP,EAAE6hD,OAAOnhD,EAAG,IAAG4jB,KAAKlD,GAAG3hB,EAAE8C,KAAK8K,IAAItO,EAAEF,IAAI0viB,UAAU1viB,EAAE,CAAC,SAASuiB,GAAGtiB,EAAED,GAAG,OAAO0D,KAAKuK,KAAKhO,EAAED,GAAGA,CAAC,CAACqf,GAAG2urB,UAAU,SAAS/tsB,EAAED,GAAG,OAAOC,EAAEuh4C,QAAQxh4C,IAAIC,EAAEoh4C,eAAc,EAAGrh4C,EAAE0C,KAAKzC,EAAE4sK,cAAc,CAAC3rK,OAAOjB,EAAEiB,OAAO2rK,YAAY5sK,EAAE4sK,YAAY,EAAExtJ,GAAGg92C,YAAY,SAASp83C,GAAG,IAAID,EAAEG,OAAOY,OAAOF,KAAKN,WAAW,OAAOP,EAAE6sK,YAAY5sK,EAAE4sK,YAAY7sK,EAAEkB,OAAOjB,EAAEiB,OAAOlB,EAAEsh4C,SAASrh4C,EAAE4sK,YAAY5jJ,WAAWjpB,EAAEu9H,gBAAgBv9H,EAAEyh4C,gBAAgBzh4C,CAAC,EAAEqf,GAAG9e,UAAUih4C,MAAM,WAAW3g4C,KAAKK,SAASL,KAAKyg4C,WAAWzg4C,KAAKyg4C,SAASzg4C,KAAKK,OAAOL,KAAKgsK,YAAYhsK,KAAKgsK,YAAYjqK,MAAM,EAAE/B,KAAKK,OAAOL,KAAK08H,iBAAiB18H,KAAK4g4C,gBAAiB,EAAEpi3C,GAAG9e,UAAUslB,MAAM,WAAWhlB,KAAKK,OAAO,CAAE,EAAEme,GAAG9e,UAAUmvH,OAAO,SAASzvH,GAAGY,KAAKmlM,QAAQ/lM,GAAGY,KAAKK,OAAOjB,CAAE,EAAEof,GAAG9e,UAAUylM,QAAQ,SAAS/lM,GAAG,GAAGA,EAAEY,KAAKyg4C,SAAS,CAACzg4C,KAAKyg4C,SAAS593C,KAAK8K,IAAIvO,EAAEyD,KAAKyK,MAAM,EAAEtN,KAAKyg4C,UAAU,KAAKzg4C,KAAKgsK,YAAY,IAAI1tJ,YAAYte,KAAKyg4C,SAASzg4C,KAAK08H,iBAAiB,IAAIv9H,EAAEa,KAAKk2sB,MAAMl2sB,KAAK4g4C,gBAAgBzh4C,GAAGa,KAAKk2sB,MAAMjqsB,IAAI9M,EAAG,CAAC,EAAEqf,GAAG9e,UAAUkh4C,cAAc,WAAW,MAAM,IAAIp52C,MAAM,0EAA0E,EAAE,IAAIxI,GAAG,SAAS5f,GAAG,SAASD,IAAIC,EAAEmB,MAAMP,KAAKI,UAAW,CAAC,OAAOhB,IAAID,EAAEK,UAAUJ,IAAID,EAAEO,UAAUJ,OAAOY,OAAOd,GAAGA,EAAEM,YAAYO,YAAYd,EAAEA,EAAEO,UAAUkh4C,cAAc,WAAW5g4C,KAAKk2sB,MAAM,IAAIv2rB,WAAW3f,KAAKgsK,aAAahsK,KAAK6g4C,MAAM,IAAIjh3C,WAAW5f,KAAKgsK,YAAa,EAAE7sK,EAAEO,UAAUoh4C,YAAY,SAAS1h4C,EAAED,GAAG,IAAIY,EAAEC,KAAKK,OAAO,OAAOL,KAAK6uH,OAAO9uH,EAAE,GAAGC,KAAK+g4C,QAAQhh4C,EAAEX,EAAED,EAAE,EAAEA,EAAEO,UAAUqh4C,QAAQ,SAAS3h4C,EAAED,EAAEY,GAAG,IAAIV,EAAE,EAAED,EAAE,OAAOY,KAAK6g4C,MAAMxh4C,EAAE,GAAGF,EAAEa,KAAK6g4C,MAAMxh4C,EAAE,GAAGU,EAAEX,CAAC,EAAED,CAAC,CAAvc,CAAycqf,IAAIQ,GAAGtf,UAAUg9H,gBAAgB,EAAEvqH,GAAG,uBAAuB6M,IAAI,IAAIM,GAAG,SAASlgB,GAAG,SAASD,IAAIC,EAAEmB,MAAMP,KAAKI,UAAW,CAAC,OAAOhB,IAAID,EAAEK,UAAUJ,IAAID,EAAEO,UAAUJ,OAAOY,OAAOd,GAAGA,EAAEM,YAAYO,YAAYd,EAAEA,EAAEO,UAAUkh4C,cAAc,WAAW5g4C,KAAKk2sB,MAAM,IAAIv2rB,WAAW3f,KAAKgsK,aAAahsK,KAAK6g4C,MAAM,IAAIjh3C,WAAW5f,KAAKgsK,YAAa,EAAE7sK,EAAEO,UAAUoh4C,YAAY,SAAS1h4C,EAAED,EAAEY,EAAEV,GAAG,IAAIuB,EAAEZ,KAAKK,OAAO,OAAOL,KAAK6uH,OAAOjuH,EAAE,GAAGZ,KAAK+g4C,QAAQng4C,EAAExB,EAAED,EAAEY,EAAEV,EAAE,EAAEF,EAAEO,UAAUqh4C,QAAQ,SAAS3h4C,EAAED,EAAEY,EAAEV,EAAEuB,GAAG,IAAII,EAAE,EAAE5B,EAAE,OAAOY,KAAK6g4C,MAAM7/3C,EAAE,GAAG7B,EAAEa,KAAK6g4C,MAAM7/3C,EAAE,GAAGjB,EAAEC,KAAK6g4C,MAAM7/3C,EAAE,GAAG3B,EAAEW,KAAK6g4C,MAAM7/3C,EAAE,GAAGJ,EAAExB,CAAC,EAAED,CAAC,CAAvf,CAAyfqf,IAAIc,GAAG5f,UAAUg9H,gBAAgB,EAAEvqH,GAAG,uBAAuBmN,IAAI,IAAII,GAAG,SAAStgB,GAAG,SAASD,IAAIC,EAAEmB,MAAMP,KAAKI,UAAW,CAAC,OAAOhB,IAAID,EAAEK,UAAUJ,IAAID,EAAEO,UAAUJ,OAAOY,OAAOd,GAAGA,EAAEM,YAAYO,YAAYd,EAAEA,EAAEO,UAAUkh4C,cAAc,WAAW5g4C,KAAKk2sB,MAAM,IAAIv2rB,WAAW3f,KAAKgsK,aAAahsK,KAAK6g4C,MAAM,IAAIjh3C,WAAW5f,KAAKgsK,YAAa,EAAE7sK,EAAEO,UAAUoh4C,YAAY,SAAS1h4C,EAAED,EAAEY,EAAEV,EAAEuB,EAAEI,GAAG,IAAIV,EAAEN,KAAKK,OAAO,OAAOL,KAAK6uH,OAAOvuH,EAAE,GAAGN,KAAK+g4C,QAAQzg4C,EAAElB,EAAED,EAAEY,EAAEV,EAAEuB,EAAEI,EAAE,EAAE7B,EAAEO,UAAUqh4C,QAAQ,SAAS3h4C,EAAED,EAAEY,EAAEV,EAAEuB,EAAEI,EAAEV,GAAG,IAAIQ,EAAE,EAAE1B,EAAE,OAAOY,KAAK6g4C,MAAM//3C,EAAE,GAAG3B,EAAEa,KAAK6g4C,MAAM//3C,EAAE,GAAGf,EAAEC,KAAK6g4C,MAAM//3C,EAAE,GAAGzB,EAAEW,KAAK6g4C,MAAM//3C,EAAE,GAAGF,EAAEZ,KAAK6g4C,MAAM//3C,EAAE,GAAGE,EAAEhB,KAAK6g4C,MAAM//3C,EAAE,GAAGR,EAAElB,CAAC,EAAED,CAAC,CAAviB,CAAyiBqf,IAAIkB,GAAGhgB,UAAUg9H,gBAAgB,GAAGvqH,GAAG,0BAA0BuN,IAAI,IAAIiC,GAAG,SAASviB,GAAG,SAASD,IAAIC,EAAEmB,MAAMP,KAAKI,UAAW,CAAC,OAAOhB,IAAID,EAAEK,UAAUJ,IAAID,EAAEO,UAAUJ,OAAOY,OAAOd,GAAGA,EAAEM,YAAYO,YAAYd,EAAEA,EAAEO,UAAUkh4C,cAAc,WAAW5g4C,KAAKk2sB,MAAM,IAAIv2rB,WAAW3f,KAAKgsK,aAAahsK,KAAK6g4C,MAAM,IAAIjh3C,WAAW5f,KAAKgsK,YAAa,EAAE7sK,EAAEO,UAAUoh4C,YAAY,SAAS1h4C,EAAED,EAAEY,EAAEV,EAAEuB,EAAEI,GAAG,IAAIV,EAAEN,KAAKK,OAAO,OAAOL,KAAK6uH,OAAOvuH,EAAE,GAAGN,KAAK+g4C,QAAQzg4C,EAAElB,EAAED,EAAEY,EAAEV,EAAEuB,EAAEI,EAAE,EAAE7B,EAAEO,UAAUqh4C,QAAQ,SAAS3h4C,EAAED,EAAEY,EAAEV,EAAEuB,EAAEI,EAAEV,GAAG,IAAIQ,EAAE,EAAE1B,EAAEiD,EAAE,EAAEjD,EAAE,OAAOY,KAAK6g4C,MAAM//3C,EAAE,GAAG3B,EAAEa,KAAK6g4C,MAAM//3C,EAAE,GAAGf,EAAEC,KAAKk2sB,MAAM7zsB,EAAE,GAAGhD,EAAEW,KAAKk2sB,MAAM7zsB,EAAE,GAAGzB,EAAEZ,KAAKk2sB,MAAM7zsB,EAAE,GAAGrB,EAAEhB,KAAKk2sB,MAAM7zsB,EAAE,GAAG/B,EAAElB,CAAC,EAAED,CAAC,CAA7iB,CAA+iBqf,IAAImD,GAAGjiB,UAAUg9H,gBAAgB,EAAEvqH,GAAG,0BAA0BwP,IAAI,IAAIC,GAAG,SAASxiB,GAAG,SAASD,IAAIC,EAAEmB,MAAMP,KAAKI,UAAW,CAAC,OAAOhB,IAAID,EAAEK,UAAUJ,IAAID,EAAEO,UAAUJ,OAAOY,OAAOd,GAAGA,EAAEM,YAAYO,YAAYd,EAAEA,EAAEO,UAAUkh4C,cAAc,WAAW5g4C,KAAKk2sB,MAAM,IAAIv2rB,WAAW3f,KAAKgsK,aAAahsK,KAAKgh4C,QAAQ,IAAIhh3C,aAAahgB,KAAKgsK,YAAa,EAAE7sK,EAAEO,UAAUoh4C,YAAY,SAAS1h4C,EAAED,GAAG,IAAIY,EAAEC,KAAKK,OAAO,OAAOL,KAAK6uH,OAAO9uH,EAAE,GAAGC,KAAK+g4C,QAAQhh4C,EAAEX,EAAED,EAAE,EAAEA,EAAEO,UAAUqh4C,QAAQ,SAAS3h4C,EAAED,EAAEY,GAAG,IAAIV,EAAE,EAAED,EAAE,OAAOY,KAAKgh4C,QAAQ3h4C,EAAE,GAAGF,EAAEa,KAAKgh4C,QAAQ3h4C,EAAE,GAAGU,EAAEX,CAAC,EAAED,CAAC,CAA/c,CAAidqf,IAAIoD,GAAGliB,UAAUg9H,gBAAgB,EAAEvqH,GAAG,uBAAuByP,IAAI,IAAI9C,GAAG,SAAS1f,GAAG,SAASD,IAAIC,EAAEmB,MAAMP,KAAKI,UAAW,CAAC,OAAOhB,IAAID,EAAEK,UAAUJ,IAAID,EAAEO,UAAUJ,OAAOY,OAAOd,GAAGA,EAAEM,YAAYO,YAAYd,EAAEA,EAAEO,UAAUkh4C,cAAc,WAAW5g4C,KAAKk2sB,MAAM,IAAIv2rB,WAAW3f,KAAKgsK,aAAahsK,KAAKih4C,OAAO,IAAIph3C,YAAY7f,KAAKgsK,YAAa,EAAE7sK,EAAEO,UAAUoh4C,YAAY,SAAS1h4C,EAAED,EAAEY,EAAEV,EAAEuB,EAAEI,EAAEV,EAAEQ,EAAEuB,EAAEG,GAAG,IAAIM,EAAE9C,KAAKK,OAAO,OAAOL,KAAK6uH,OAAO/rH,EAAE,GAAG9C,KAAK+g4C,QAAQj+3C,EAAE1D,EAAED,EAAEY,EAAEV,EAAEuB,EAAEI,EAAEV,EAAEQ,EAAEuB,EAAEG,EAAE,EAAErD,EAAEO,UAAUqh4C,QAAQ,SAAS3h4C,EAAED,EAAEY,EAAEV,EAAEuB,EAAEI,EAAEV,EAAEQ,EAAEuB,EAAEG,EAAEM,GAAG,IAAIjC,EAAE,GAAGzB,EAAE,OAAOY,KAAKih4C,OAAOpg4C,EAAE,GAAG1B,EAAEa,KAAKih4C,OAAOpg4C,EAAE,GAAGd,EAAEC,KAAKih4C,OAAOpg4C,EAAE,GAAGxB,EAAEW,KAAKih4C,OAAOpg4C,EAAE,GAAGD,EAAEZ,KAAKih4C,OAAOpg4C,EAAE,GAAGG,EAAEhB,KAAKih4C,OAAOpg4C,EAAE,GAAGP,EAAEN,KAAKih4C,OAAOpg4C,EAAE,GAAGC,EAAEd,KAAKih4C,OAAOpg4C,EAAE,GAAGwB,EAAErC,KAAKih4C,OAAOpg4C,EAAE,GAAG2B,EAAExC,KAAKih4C,OAAOpg4C,EAAE,GAAGiC,EAAE1D,CAAC,EAAED,CAAC,CAAppB,CAAspBqf,IAAIM,GAAGpf,UAAUg9H,gBAAgB,GAAGvqH,GAAG,0BAA0B2M,IAAI,IAAI0C,GAAG,SAASpiB,GAAG,SAASD,IAAIC,EAAEmB,MAAMP,KAAKI,UAAW,CAAC,OAAOhB,IAAID,EAAEK,UAAUJ,IAAID,EAAEO,UAAUJ,OAAOY,OAAOd,GAAGA,EAAEM,YAAYO,YAAYd,EAAEA,EAAEO,UAAUkh4C,cAAc,WAAW5g4C,KAAKk2sB,MAAM,IAAIv2rB,WAAW3f,KAAKgsK,aAAahsK,KAAK6g4C,MAAM,IAAIjh3C,WAAW5f,KAAKgsK,aAAahsK,KAAKih4C,OAAO,IAAIph3C,YAAY7f,KAAKgsK,YAAa,EAAE7sK,EAAEO,UAAUoh4C,YAAY,SAAS1h4C,EAAED,EAAEY,EAAEV,EAAEuB,EAAEI,EAAEV,EAAEQ,EAAEuB,EAAEG,EAAEM,EAAEjC,GAAG,IAAI+B,EAAE5C,KAAKK,OAAO,OAAOL,KAAK6uH,OAAOjsH,EAAE,GAAG5C,KAAK+g4C,QAAQn+3C,EAAExD,EAAED,EAAEY,EAAEV,EAAEuB,EAAEI,EAAEV,EAAEQ,EAAEuB,EAAEG,EAAEM,EAAEjC,EAAE,EAAE1B,EAAEO,UAAUqh4C,QAAQ,SAAS3h4C,EAAED,EAAEY,EAAEV,EAAEuB,EAAEI,EAAEV,EAAEQ,EAAEuB,EAAEG,EAAEM,EAAEjC,EAAE+B,GAAG,IAAIF,EAAE,GAAGtD,EAAE,OAAOY,KAAK6g4C,MAAMn+3C,EAAE,GAAGvD,EAAEa,KAAK6g4C,MAAMn+3C,EAAE,GAAG3C,EAAEC,KAAK6g4C,MAAMn+3C,EAAE,GAAGrD,EAAEW,KAAK6g4C,MAAMn+3C,EAAE,GAAG9B,EAAEZ,KAAKih4C,OAAOv+3C,EAAE,GAAG1B,EAAEhB,KAAKih4C,OAAOv+3C,EAAE,GAAGpC,EAAEN,KAAKih4C,OAAOv+3C,EAAE,GAAG5B,EAAEd,KAAKih4C,OAAOv+3C,EAAE,GAAGL,EAAErC,KAAK6g4C,MAAMn+3C,EAAE,GAAGF,EAAExC,KAAK6g4C,MAAMn+3C,EAAE,GAAGI,EAAE9C,KAAK6g4C,MAAMn+3C,EAAE,IAAI7B,EAAEb,KAAK6g4C,MAAMn+3C,EAAE,IAAIE,EAAExD,CAAC,EAAED,CAAC,CAA5uB,CAA8uBqf,IAAIgD,GAAG9hB,UAAUg9H,gBAAgB,GAAGvqH,GAAG,6BAA6BqP,IAAI,IAAInB,GAAG,SAASjhB,GAAG,SAASD,IAAIC,EAAEmB,MAAMP,KAAKI,UAAW,CAAC,OAAOhB,IAAID,EAAEK,UAAUJ,IAAID,EAAEO,UAAUJ,OAAOY,OAAOd,GAAGA,EAAEM,YAAYO,YAAYd,EAAEA,EAAEO,UAAUkh4C,cAAc,WAAW5g4C,KAAKk2sB,MAAM,IAAIv2rB,WAAW3f,KAAKgsK,aAAahsK,KAAKgh4C,QAAQ,IAAIhh3C,aAAahgB,KAAKgsK,YAAa,EAAE7sK,EAAEO,UAAUoh4C,YAAY,SAAS1h4C,EAAED,EAAEY,GAAG,IAAIV,EAAEW,KAAKK,OAAO,OAAOL,KAAK6uH,OAAOxvH,EAAE,GAAGW,KAAK+g4C,QAAQ1h4C,EAAED,EAAED,EAAEY,EAAE,EAAEZ,EAAEO,UAAUqh4C,QAAQ,SAAS3h4C,EAAED,EAAEY,EAAEV,GAAG,IAAIuB,EAAE,EAAExB,EAAE,OAAOY,KAAKgh4C,QAAQpg4C,EAAE,GAAGzB,EAAEa,KAAKgh4C,QAAQpg4C,EAAE,GAAGb,EAAEC,KAAKgh4C,QAAQpg4C,EAAE,GAAGvB,EAAED,CAAC,EAAED,CAAC,CAAze,CAA2eqf,IAAI6B,GAAG3gB,UAAUg9H,gBAAgB,GAAGvqH,GAAG,wBAAwBkO,IAAI,IAAIgB,GAAG,SAASjiB,GAAG,SAASD,IAAIC,EAAEmB,MAAMP,KAAKI,UAAW,CAAC,OAAOhB,IAAID,EAAEK,UAAUJ,IAAID,EAAEO,UAAUJ,OAAOY,OAAOd,GAAGA,EAAEM,YAAYO,YAAYd,EAAEA,EAAEO,UAAUkh4C,cAAc,WAAW5g4C,KAAKk2sB,MAAM,IAAIv2rB,WAAW3f,KAAKgsK,aAAahsK,KAAKkh4C,OAAO,IAAInh3C,YAAY/f,KAAKgsK,YAAa,EAAE7sK,EAAEO,UAAUoh4C,YAAY,SAAS1h4C,GAAG,IAAID,EAAEa,KAAKK,OAAO,OAAOL,KAAK6uH,OAAO1vH,EAAE,GAAGa,KAAK+g4C,QAAQ5h4C,EAAEC,EAAE,EAAED,EAAEO,UAAUqh4C,QAAQ,SAAS3h4C,EAAED,GAAG,OAAOa,KAAKkh4C,OAAO,EAAE9h4C,EAAE,GAAGD,EAAEC,CAAC,EAAED,CAAC,CAA1a,CAA4aqf,IAAI6C,GAAG3hB,UAAUg9H,gBAAgB,EAAEvqH,GAAG,wBAAwBkP,IAAI,IAAInC,GAAG,SAAS9f,GAAG,SAASD,IAAIC,EAAEmB,MAAMP,KAAKI,UAAW,CAAC,OAAOhB,IAAID,EAAEK,UAAUJ,IAAID,EAAEO,UAAUJ,OAAOY,OAAOd,GAAGA,EAAEM,YAAYO,YAAYd,EAAEA,EAAEO,UAAUkh4C,cAAc,WAAW5g4C,KAAKk2sB,MAAM,IAAIv2rB,WAAW3f,KAAKgsK,aAAahsK,KAAK6g4C,MAAM,IAAIjh3C,WAAW5f,KAAKgsK,aAAahsK,KAAKkh4C,OAAO,IAAInh3C,YAAY/f,KAAKgsK,aAAahsK,KAAKih4C,OAAO,IAAIph3C,YAAY7f,KAAKgsK,YAAa,EAAE7sK,EAAEO,UAAUoh4C,YAAY,SAAS1h4C,EAAED,EAAEY,EAAEV,EAAEuB,EAAEI,EAAEV,EAAEQ,EAAEuB,GAAG,IAAIG,EAAExC,KAAKK,OAAO,OAAOL,KAAK6uH,OAAOrsH,EAAE,GAAGxC,KAAK+g4C,QAAQv+3C,EAAEpD,EAAED,EAAEY,EAAEV,EAAEuB,EAAEI,EAAEV,EAAEQ,EAAEuB,EAAE,EAAElD,EAAEO,UAAUqh4C,QAAQ,SAAS3h4C,EAAED,EAAEY,EAAEV,EAAEuB,EAAEI,EAAEV,EAAEQ,EAAEuB,EAAEG,GAAG,IAAIM,EAAE,GAAG1D,EAAEyB,EAAE,EAAEzB,EAAE,OAAOY,KAAK6g4C,MAAM/93C,EAAE,GAAG3D,EAAEa,KAAK6g4C,MAAM/93C,EAAE,GAAG/C,EAAEC,KAAK6g4C,MAAM/93C,EAAE,GAAGzD,EAAEW,KAAK6g4C,MAAM/93C,EAAE,GAAGlC,EAAEZ,KAAK6g4C,MAAM/93C,EAAE,GAAG9B,EAAEhB,KAAK6g4C,MAAM/93C,EAAE,GAAGxC,EAAEN,KAAKkh4C,OAAOrg4C,EAAE,GAAGC,EAAEd,KAAKih4C,OAAOn+3C,EAAE,GAAGT,EAAErC,KAAKih4C,OAAOn+3C,EAAE,GAAGN,EAAEpD,CAAC,EAAED,CAAC,CAArtB,CAAutBqf,IAAIU,GAAGxf,UAAUg9H,gBAAgB,GAAGvqH,GAAG,8BAA8B+M,IAAI,IAAIP,GAAG,SAASvf,GAAG,SAASD,IAAIC,EAAEmB,MAAMP,KAAKI,UAAW,CAAC,OAAOhB,IAAID,EAAEK,UAAUJ,IAAID,EAAEO,UAAUJ,OAAOY,OAAOd,GAAGA,EAAEM,YAAYO,YAAYd,EAAEA,EAAEO,UAAUkh4C,cAAc,WAAW5g4C,KAAKk2sB,MAAM,IAAIv2rB,WAAW3f,KAAKgsK,aAAahsK,KAAK6g4C,MAAM,IAAIjh3C,WAAW5f,KAAKgsK,YAAa,EAAE7sK,EAAEO,UAAUoh4C,YAAY,SAAS1h4C,EAAED,EAAEY,EAAEV,EAAEuB,EAAEI,GAAG,IAAIV,EAAEN,KAAKK,OAAO,OAAOL,KAAK6uH,OAAOvuH,EAAE,GAAGN,KAAK+g4C,QAAQzg4C,EAAElB,EAAED,EAAEY,EAAEV,EAAEuB,EAAEI,EAAE,EAAE7B,EAAEO,UAAUqh4C,QAAQ,SAAS3h4C,EAAED,EAAEY,EAAEV,EAAEuB,EAAEI,EAAEV,GAAG,IAAIQ,EAAE,EAAE1B,EAAE,OAAOY,KAAK6g4C,MAAM//3C,EAAE,GAAG3B,EAAEa,KAAK6g4C,MAAM//3C,EAAE,GAAGf,EAAEC,KAAK6g4C,MAAM//3C,EAAE,GAAGzB,EAAEW,KAAK6g4C,MAAM//3C,EAAE,GAAGF,EAAEZ,KAAK6g4C,MAAM//3C,EAAE,GAAGE,EAAEhB,KAAK6g4C,MAAM//3C,EAAE,GAAGR,EAAElB,CAAC,EAAED,CAAC,CAAviB,CAAyiBqf,IAAIG,GAAGjf,UAAUg9H,gBAAgB,GAAGvqH,GAAG,4BAA4BwM,IAAI,IAAIQ,GAAG,SAAS/f,GAAG,SAASD,IAAIC,EAAEmB,MAAMP,KAAKI,UAAW,CAAC,OAAOhB,IAAID,EAAEK,UAAUJ,IAAID,EAAEO,UAAUJ,OAAOY,OAAOd,GAAGA,EAAEM,YAAYO,YAAYd,EAAEA,EAAEO,UAAUkh4C,cAAc,WAAW5g4C,KAAKk2sB,MAAM,IAAIv2rB,WAAW3f,KAAKgsK,aAAahsK,KAAKgh4C,QAAQ,IAAIhh3C,aAAahgB,KAAKgsK,aAAahsK,KAAK6g4C,MAAM,IAAIjh3C,WAAW5f,KAAKgsK,YAAa,EAAE7sK,EAAEO,UAAUoh4C,YAAY,SAAS1h4C,EAAED,EAAEY,EAAEV,EAAEuB,GAAG,IAAII,EAAEhB,KAAKK,OAAO,OAAOL,KAAK6uH,OAAO7tH,EAAE,GAAGhB,KAAK+g4C,QAAQ//3C,EAAE5B,EAAED,EAAEY,EAAEV,EAAEuB,EAAE,EAAEzB,EAAEO,UAAUqh4C,QAAQ,SAAS3h4C,EAAED,EAAEY,EAAEV,EAAEuB,EAAEI,GAAG,IAAIV,EAAE,EAAElB,EAAE0B,EAAE,EAAE1B,EAAE,OAAOY,KAAKgh4C,QAAQ1g4C,EAAE,GAAGnB,EAAEa,KAAKgh4C,QAAQ1g4C,EAAE,GAAGP,EAAEC,KAAKgh4C,QAAQ1g4C,EAAE,GAAGjB,EAAEW,KAAK6g4C,MAAM//3C,EAAE,GAAGF,EAAEZ,KAAK6g4C,MAAM//3C,EAAE,GAAGE,EAAE5B,CAAC,EAAED,CAAC,CAA3kB,CAA6kBqf,IAAIW,GAAGzf,UAAUg9H,gBAAgB,GAAGvqH,GAAG,4BAA4BgN,IAAI,IAAIiC,GAAG,SAAShiB,GAAG,SAASD,IAAIC,EAAEmB,MAAMP,KAAKI,UAAW,CAAC,OAAOhB,IAAID,EAAEK,UAAUJ,IAAID,EAAEO,UAAUJ,OAAOY,OAAOd,GAAGA,EAAEM,YAAYO,YAAYd,EAAEA,EAAEO,UAAUkh4C,cAAc,WAAW5g4C,KAAKk2sB,MAAM,IAAIv2rB,WAAW3f,KAAKgsK,aAAahsK,KAAKgh4C,QAAQ,IAAIhh3C,aAAahgB,KAAKgsK,YAAa,EAAE7sK,EAAEO,UAAUoh4C,YAAY,SAAS1h4C,EAAED,EAAEY,EAAEV,GAAG,IAAIuB,EAAEZ,KAAKK,OAAO,OAAOL,KAAK6uH,OAAOjuH,EAAE,GAAGZ,KAAK+g4C,QAAQng4C,EAAExB,EAAED,EAAEY,EAAEV,EAAE,EAAEF,EAAEO,UAAUqh4C,QAAQ,SAAS3h4C,EAAED,EAAEY,EAAEV,EAAEuB,GAAG,IAAII,EAAE,GAAG5B,EAAEkB,EAAE,EAAElB,EAAE,OAAOY,KAAKk2sB,MAAMl1sB,EAAE,GAAG7B,EAAEa,KAAKk2sB,MAAMl1sB,EAAE,GAAGjB,EAAEC,KAAKgh4C,QAAQ1g4C,EAAE,GAAGjB,EAAEW,KAAKgh4C,QAAQ1g4C,EAAE,GAAGM,EAAExB,CAAC,EAAED,CAAC,CAAtgB,CAAwgBqf,IAAI4C,GAAG1hB,UAAUg9H,gBAAgB,GAAGvqH,GAAG,2BAA2BiP,IAAI,IAAInC,GAAG,SAAS7f,GAAG,SAASD,IAAIC,EAAEmB,MAAMP,KAAKI,UAAW,CAAC,OAAOhB,IAAID,EAAEK,UAAUJ,IAAID,EAAEO,UAAUJ,OAAOY,OAAOd,GAAGA,EAAEM,YAAYO,YAAYd,EAAEA,EAAEO,UAAUkh4C,cAAc,WAAW5g4C,KAAKk2sB,MAAM,IAAIv2rB,WAAW3f,KAAKgsK,aAAahsK,KAAKih4C,OAAO,IAAIph3C,YAAY7f,KAAKgsK,YAAa,EAAE7sK,EAAEO,UAAUoh4C,YAAY,SAAS1h4C,EAAED,EAAEY,GAAG,IAAIV,EAAEW,KAAKK,OAAO,OAAOL,KAAK6uH,OAAOxvH,EAAE,GAAGW,KAAK+g4C,QAAQ1h4C,EAAED,EAAED,EAAEY,EAAE,EAAEZ,EAAEO,UAAUqh4C,QAAQ,SAAS3h4C,EAAED,EAAEY,EAAEV,GAAG,IAAIuB,EAAE,EAAExB,EAAE,OAAOY,KAAKih4C,OAAOrg4C,EAAE,GAAGzB,EAAEa,KAAKih4C,OAAOrg4C,EAAE,GAAGb,EAAEC,KAAKih4C,OAAOrg4C,EAAE,GAAGvB,EAAED,CAAC,EAAED,CAAC,CAApe,CAAseqf,IAAIS,GAAGvf,UAAUg9H,gBAAgB,EAAEvqH,GAAG,wBAAwB8M,IAAI,IAAI6C,GAAG,SAAS1iB,GAAG,SAASD,IAAIC,EAAEmB,MAAMP,KAAKI,UAAW,CAAC,OAAOhB,IAAID,EAAEK,UAAUJ,IAAID,EAAEO,UAAUJ,OAAOY,OAAOd,GAAGA,EAAEM,YAAYO,YAAYd,EAAEA,EAAEO,UAAUkh4C,cAAc,WAAW5g4C,KAAKk2sB,MAAM,IAAIv2rB,WAAW3f,KAAKgsK,aAAahsK,KAAK6g4C,MAAM,IAAIjh3C,WAAW5f,KAAKgsK,aAAahsK,KAAKih4C,OAAO,IAAIph3C,YAAY7f,KAAKgsK,aAAahsK,KAAKkh4C,OAAO,IAAInh3C,YAAY/f,KAAKgsK,aAAahsK,KAAKgh4C,QAAQ,IAAIhh3C,aAAahgB,KAAKgsK,YAAa,EAAE7sK,EAAEO,UAAUoh4C,YAAY,SAAS1h4C,EAAED,EAAEY,EAAEV,EAAEuB,EAAEI,EAAEV,EAAEQ,EAAEuB,EAAEG,EAAEM,EAAEjC,EAAE+B,EAAEF,EAAEM,EAAEL,EAAES,GAAG,IAAIH,EAAEjD,KAAKK,OAAO,OAAOL,KAAK6uH,OAAO5rH,EAAE,GAAGjD,KAAK+g4C,QAAQ993C,EAAE7D,EAAED,EAAEY,EAAEV,EAAEuB,EAAEI,EAAEV,EAAEQ,EAAEuB,EAAEG,EAAEM,EAAEjC,EAAE+B,EAAEF,EAAEM,EAAEL,EAAES,EAAE,EAAEjE,EAAEO,UAAUqh4C,QAAQ,SAAS3h4C,EAAED,EAAEY,EAAEV,EAAEuB,EAAEI,EAAEV,EAAEQ,EAAEuB,EAAEG,EAAEM,EAAEjC,EAAE+B,EAAEF,EAAEM,EAAEL,EAAES,EAAEH,GAAG,IAAId,EAAE,GAAG/C,EAAE6E,EAAE,GAAG7E,EAAEkE,EAAE,GAAGlE,EAAE,OAAOY,KAAK6g4C,MAAM1+3C,EAAE,GAAGhD,EAAEa,KAAK6g4C,MAAM1+3C,EAAE,GAAGpC,EAAEC,KAAKih4C,OAAO9+3C,EAAE,GAAG9C,EAAEW,KAAKih4C,OAAO9+3C,EAAE,GAAGvB,EAAEZ,KAAKkh4C,OAAOj93C,EAAE,GAAGjD,EAAEhB,KAAKkh4C,OAAOj93C,EAAE,GAAG3D,EAAEN,KAAKkh4C,OAAOj93C,EAAE,GAAGnD,EAAEd,KAAKih4C,OAAO9+3C,EAAE,IAAIE,EAAErC,KAAKih4C,OAAO9+3C,EAAE,IAAIK,EAAExC,KAAKih4C,OAAO9+3C,EAAE,IAAIW,EAAE9C,KAAKgh4C,QAAQ/83C,EAAE,GAAGpD,EAAEb,KAAKgh4C,QAAQ/83C,EAAE,GAAGrB,EAAE5C,KAAKk2sB,MAAM5ysB,EAAE,IAAIZ,EAAE1C,KAAKk2sB,MAAM5ysB,EAAE,IAAIN,EAAEhD,KAAKk2sB,MAAM5ysB,EAAE,IAAIX,EAAE3C,KAAKkh4C,OAAOj93C,EAAE,IAAIb,EAAEpD,KAAK6g4C,MAAM1+3C,EAAE,IAAIc,EAAE7D,CAAC,EAAED,CAAC,CAA/9B,CAAi+Bqf,IAAIsD,GAAGpiB,UAAUg9H,gBAAgB,GAAGvqH,GAAG,2CAA2C2P,IAAI,IAAItB,GAAG,SAASphB,GAAG,SAASD,IAAIC,EAAEmB,MAAMP,KAAKI,UAAW,CAAC,OAAOhB,IAAID,EAAEK,UAAUJ,IAAID,EAAEO,UAAUJ,OAAOY,OAAOd,GAAGA,EAAEM,YAAYO,YAAYd,EAAEA,EAAEO,UAAUkh4C,cAAc,WAAW5g4C,KAAKk2sB,MAAM,IAAIv2rB,WAAW3f,KAAKgsK,aAAahsK,KAAK6g4C,MAAM,IAAIjh3C,WAAW5f,KAAKgsK,aAAahsK,KAAKih4C,OAAO,IAAIph3C,YAAY7f,KAAKgsK,aAAahsK,KAAKkh4C,OAAO,IAAInh3C,YAAY/f,KAAKgsK,aAAahsK,KAAKgh4C,QAAQ,IAAIhh3C,aAAahgB,KAAKgsK,YAAa,EAAE7sK,EAAEO,UAAUoh4C,YAAY,SAAS1h4C,EAAED,EAAEY,EAAEV,EAAEuB,EAAEI,EAAEV,EAAEQ,EAAEuB,EAAEG,EAAEM,EAAEjC,EAAE+B,EAAEF,EAAEM,EAAEL,EAAES,EAAEH,EAAEd,EAAE8B,EAAEX,EAAEC,EAAEK,EAAEiB,EAAErB,EAAEE,EAAEG,EAAE8B,GAAG,IAAIxB,EAAEnE,KAAKK,OAAO,OAAOL,KAAK6uH,OAAO1qH,EAAE,GAAGnE,KAAK+g4C,QAAQ583C,EAAE/E,EAAED,EAAEY,EAAEV,EAAEuB,EAAEI,EAAEV,EAAEQ,EAAEuB,EAAEG,EAAEM,EAAEjC,EAAE+B,EAAEF,EAAEM,EAAEL,EAAES,EAAEH,EAAEd,EAAE8B,EAAEX,EAAEC,EAAEK,EAAEiB,EAAErB,EAAEE,EAAEG,EAAE8B,EAAE,EAAExG,EAAEO,UAAUqh4C,QAAQ,SAAS3h4C,EAAED,EAAEY,EAAEV,EAAEuB,EAAEI,EAAEV,EAAEQ,EAAEuB,EAAEG,EAAEM,EAAEjC,EAAE+B,EAAEF,EAAEM,EAAEL,EAAES,EAAEH,EAAEd,EAAE8B,EAAEX,EAAEC,EAAEK,EAAEiB,EAAErB,EAAEE,EAAEG,EAAE8B,EAAExB,GAAG,IAAIO,EAAE,GAAGtF,EAAE0F,EAAE,GAAG1F,EAAE,OAAOY,KAAK6g4C,MAAMn83C,EAAE,GAAGvF,EAAEa,KAAK6g4C,MAAMn83C,EAAE,GAAG3E,EAAEC,KAAK6g4C,MAAMn83C,EAAE,GAAGrF,EAAEW,KAAK6g4C,MAAMn83C,EAAE,GAAG9D,EAAEZ,KAAK6g4C,MAAMn83C,EAAE,GAAG1D,EAAEhB,KAAK6g4C,MAAMn83C,EAAE,GAAGpE,EAAEN,KAAK6g4C,MAAMn83C,EAAE,GAAG5D,EAAEd,KAAK6g4C,MAAMn83C,EAAE,GAAGrC,EAAErC,KAAKih4C,OAAOv83C,EAAE,GAAGlC,EAAExC,KAAKih4C,OAAOv83C,EAAE,GAAG5B,EAAE9C,KAAKih4C,OAAOv83C,EAAE,IAAI7D,EAAEb,KAAKih4C,OAAOv83C,EAAE,IAAI9B,EAAE5C,KAAKih4C,OAAOv83C,EAAE,IAAIhC,EAAE1C,KAAKih4C,OAAOv83C,EAAE,IAAI1B,EAAEhD,KAAKih4C,OAAOv83C,EAAE,IAAI/B,EAAE3C,KAAKih4C,OAAOv83C,EAAE,IAAItB,EAAEpD,KAAKih4C,OAAOv83C,EAAE,IAAIzB,EAAEjD,KAAKih4C,OAAOv83C,EAAE,IAAIvC,EAAEnC,KAAKih4C,OAAOv83C,EAAE,IAAIT,EAAEjE,KAAKih4C,OAAOv83C,EAAE,IAAIpB,EAAEtD,KAAKih4C,OAAOv83C,EAAE,IAAInB,EAAEvD,KAAKih4C,OAAOv83C,EAAE,IAAId,EAAE5D,KAAKih4C,OAAOv83C,EAAE,IAAIG,EAAE7E,KAAKkh4C,OAAOp83C,EAAE,IAAItB,EAAExD,KAAKgh4C,QAAQl83C,EAAE,IAAIpB,EAAE1D,KAAKgh4C,QAAQl83C,EAAE,IAAIjB,EAAE7D,KAAKgh4C,QAAQl83C,EAAE,IAAIa,EAAE3F,KAAKgh4C,QAAQl83C,EAAE,IAAIX,EAAE/E,CAAC,EAAED,CAAC,CAArvC,CAAuvCqf,IAAIgC,GAAG9gB,UAAUg9H,gBAAgB,GAAGvqH,GAAG,iCAAiCqO,IAAI,IAAID,GAAG,SAASnhB,GAAG,SAASD,IAAIC,EAAEmB,MAAMP,KAAKI,UAAW,CAAC,OAAOhB,IAAID,EAAEK,UAAUJ,IAAID,EAAEO,UAAUJ,OAAOY,OAAOd,GAAGA,EAAEM,YAAYO,YAAYd,EAAEA,EAAEO,UAAUkh4C,cAAc,WAAW5g4C,KAAKk2sB,MAAM,IAAIv2rB,WAAW3f,KAAKgsK,aAAahsK,KAAKgh4C,QAAQ,IAAIhh3C,aAAahgB,KAAKgsK,YAAa,EAAE7sK,EAAEO,UAAUoh4C,YAAY,SAAS1h4C,GAAG,IAAID,EAAEa,KAAKK,OAAO,OAAOL,KAAK6uH,OAAO1vH,EAAE,GAAGa,KAAK+g4C,QAAQ5h4C,EAAEC,EAAE,EAAED,EAAEO,UAAUqh4C,QAAQ,SAAS3h4C,EAAED,GAAG,OAAOa,KAAKgh4C,QAAQ,EAAE5h4C,EAAE,GAAGD,EAAEC,CAAC,EAAED,CAAC,CAA7a,CAA+aqf,IAAI+B,GAAG7gB,UAAUg9H,gBAAgB,EAAEvqH,GAAG,uBAAuBoO,IAAI,IAAIhB,GAAG,SAASngB,GAAG,SAASD,IAAIC,EAAEmB,MAAMP,KAAKI,UAAW,CAAC,OAAOhB,IAAID,EAAEK,UAAUJ,IAAID,EAAEO,UAAUJ,OAAOY,OAAOd,GAAGA,EAAEM,YAAYO,YAAYd,EAAEA,EAAEO,UAAUkh4C,cAAc,WAAW5g4C,KAAKk2sB,MAAM,IAAIv2rB,WAAW3f,KAAKgsK,aAAahsK,KAAK6g4C,MAAM,IAAIjh3C,WAAW5f,KAAKgsK,YAAa,EAAE7sK,EAAEO,UAAUoh4C,YAAY,SAAS1h4C,EAAED,EAAEY,GAAG,IAAIV,EAAEW,KAAKK,OAAO,OAAOL,KAAK6uH,OAAOxvH,EAAE,GAAGW,KAAK+g4C,QAAQ1h4C,EAAED,EAAED,EAAEY,EAAE,EAAEZ,EAAEO,UAAUqh4C,QAAQ,SAAS3h4C,EAAED,EAAEY,EAAEV,GAAG,IAAIuB,EAAE,EAAExB,EAAE,OAAOY,KAAK6g4C,MAAMjg4C,EAAE,GAAGzB,EAAEa,KAAK6g4C,MAAMjg4C,EAAE,GAAGb,EAAEC,KAAK6g4C,MAAMjg4C,EAAE,GAAGvB,EAAED,CAAC,EAAED,CAAC,CAA/d,CAAieqf,IAAIe,GAAG7f,UAAUg9H,gBAAgB,EAAEvqH,GAAG,uBAAuBoN,IAAI,IAAIF,GAAG,SAASjgB,GAAG,SAASD,IAAIC,EAAEmB,MAAMP,KAAKI,UAAW,CAAC,OAAOhB,IAAID,EAAEK,UAAUJ,IAAID,EAAEO,UAAUJ,OAAOY,OAAOd,GAAGA,EAAEM,YAAYO,YAAYd,EAAEA,EAAEO,UAAUkh4C,cAAc,WAAW5g4C,KAAKk2sB,MAAM,IAAIv2rB,WAAW3f,KAAKgsK,aAAahsK,KAAKkh4C,OAAO,IAAInh3C,YAAY/f,KAAKgsK,aAAahsK,KAAKih4C,OAAO,IAAIph3C,YAAY7f,KAAKgsK,YAAa,EAAE7sK,EAAEO,UAAUoh4C,YAAY,SAAS1h4C,EAAED,EAAEY,GAAG,IAAIV,EAAEW,KAAKK,OAAO,OAAOL,KAAK6uH,OAAOxvH,EAAE,GAAGW,KAAK+g4C,QAAQ1h4C,EAAED,EAAED,EAAEY,EAAE,EAAEZ,EAAEO,UAAUqh4C,QAAQ,SAAS3h4C,EAAED,EAAEY,EAAEV,GAAG,IAAIuB,EAAE,EAAExB,EAAE,OAAOY,KAAKkh4C,OAAO,EAAE9h4C,EAAE,GAAGD,EAAEa,KAAKih4C,OAAOrg4C,EAAE,GAAGb,EAAEC,KAAKih4C,OAAOrg4C,EAAE,GAAGvB,EAAED,CAAC,EAAED,CAAC,CAAphB,CAAshBqf,IAAIa,GAAG3f,UAAUg9H,gBAAgB,EAAEvqH,GAAG,2BAA2BkN,IAAI,IAAIa,GAAG,SAAS9gB,GAAG,SAASD,IAAIC,EAAEmB,MAAMP,KAAKI,UAAW,CAAC,OAAOhB,IAAID,EAAEK,UAAUJ,IAAID,EAAEO,UAAUJ,OAAOY,OAAOd,GAAGA,EAAEM,YAAYO,YAAYd,EAAEA,EAAEO,UAAUkh4C,cAAc,WAAW5g4C,KAAKk2sB,MAAM,IAAIv2rB,WAAW3f,KAAKgsK,aAAahsK,KAAKih4C,OAAO,IAAIph3C,YAAY7f,KAAKgsK,YAAa,EAAE7sK,EAAEO,UAAUoh4C,YAAY,SAAS1h4C,EAAED,GAAG,IAAIY,EAAEC,KAAKK,OAAO,OAAOL,KAAK6uH,OAAO9uH,EAAE,GAAGC,KAAK+g4C,QAAQhh4C,EAAEX,EAAED,EAAE,EAAEA,EAAEO,UAAUqh4C,QAAQ,SAAS3h4C,EAAED,EAAEY,GAAG,IAAIV,EAAE,EAAED,EAAE,OAAOY,KAAKih4C,OAAO5h4C,EAAE,GAAGF,EAAEa,KAAKih4C,OAAO5h4C,EAAE,GAAGU,EAAEX,CAAC,EAAED,CAAC,CAA3c,CAA6cqf,IAAI0B,GAAGxgB,UAAUg9H,gBAAgB,EAAEvqH,GAAG,wBAAwB+N,IAAI,IAAIqB,GAAG,SAASniB,GAAG,SAASD,IAAIC,EAAEmB,MAAMP,KAAKI,UAAW,CAAC,OAAOhB,IAAID,EAAEK,UAAUJ,IAAID,EAAEO,UAAUJ,OAAOY,OAAOd,GAAGA,EAAEM,YAAYO,YAAYd,EAAEA,EAAEO,UAAUkh4C,cAAc,WAAW5g4C,KAAKk2sB,MAAM,IAAIv2rB,WAAW3f,KAAKgsK,aAAahsK,KAAKih4C,OAAO,IAAIph3C,YAAY7f,KAAKgsK,YAAa,EAAE7sK,EAAEO,UAAUoh4C,YAAY,SAAS1h4C,GAAG,IAAID,EAAEa,KAAKK,OAAO,OAAOL,KAAK6uH,OAAO1vH,EAAE,GAAGa,KAAK+g4C,QAAQ5h4C,EAAEC,EAAE,EAAED,EAAEO,UAAUqh4C,QAAQ,SAAS3h4C,EAAED,GAAG,OAAOa,KAAKih4C,OAAO,EAAE7h4C,EAAE,GAAGD,EAAEC,CAAC,EAAED,CAAC,CAA1a,CAA4aqf,IAAI+C,GAAG7hB,UAAUg9H,gBAAgB,EAAEvqH,GAAG,wBAAwBoP,IAAI,IAAIE,GAAG,SAASriB,GAAG,SAASD,IAAIC,EAAEmB,MAAMP,KAAKI,UAAW,CAAC,OAAOhB,IAAID,EAAEK,UAAUJ,IAAID,EAAEO,UAAUJ,OAAOY,OAAOd,GAAGA,EAAEM,YAAYO,YAAYd,EAAEA,EAAEO,UAAUkh4C,cAAc,WAAW5g4C,KAAKk2sB,MAAM,IAAIv2rB,WAAW3f,KAAKgsK,aAAahsK,KAAKgh4C,QAAQ,IAAIhh3C,aAAahgB,KAAKgsK,YAAa,EAAE7sK,EAAEO,UAAUoh4C,YAAY,SAAS1h4C,EAAED,EAAEY,EAAEV,GAAG,IAAIuB,EAAEZ,KAAKK,OAAO,OAAOL,KAAK6uH,OAAOjuH,EAAE,GAAGZ,KAAK+g4C,QAAQng4C,EAAExB,EAAED,EAAEY,EAAEV,EAAE,EAAEF,EAAEO,UAAUqh4C,QAAQ,SAAS3h4C,EAAED,EAAEY,EAAEV,EAAEuB,GAAG,IAAII,EAAE,EAAE5B,EAAE,OAAOY,KAAKgh4C,QAAQhg4C,EAAE,GAAG7B,EAAEa,KAAKgh4C,QAAQhg4C,EAAE,GAAGjB,EAAEC,KAAKgh4C,QAAQhg4C,EAAE,GAAG3B,EAAEW,KAAKgh4C,QAAQhg4C,EAAE,GAAGJ,EAAExB,CAAC,EAAED,CAAC,CAAngB,CAAqgBqf,IAAIiD,GAAG/hB,UAAUg9H,gBAAgB,GAAGvqH,GAAG,wBAAwBsP,IAAI,IAAIH,GAAG,SAASliB,GAAG,SAASD,IAAIC,EAAEmB,MAAMP,KAAKI,UAAW,CAAChB,IAAID,EAAEK,UAAUJ,IAAID,EAAEO,UAAUJ,OAAOY,OAAOd,GAAGA,EAAEM,YAAYO,YAAYd,EAAE,IAAIY,EAAE,CAACoh4C,aAAa,CAACr93C,cAAa,GAAIs93C,aAAa,CAACt93C,cAAa,GAAI8jT,GAAG,CAAC9jT,cAAa,GAAI4tL,GAAG,CAAC5tL,cAAa,GAAIg5L,GAAG,CAACh5L,cAAa,GAAI2zH,GAAG,CAAC3zH,cAAa,GAAIg+N,aAAa,CAACh+N,cAAa,GAAIu93C,iBAAiB,CAACv93C,cAAa,GAAIw93C,YAAY,CAACx93C,cAAa,GAAI4kkC,YAAY,CAAC5kkC,cAAa,IAAK,OAAO/D,EAAEoh4C,aAAah+3C,IAAI,WAAW,OAAOnD,KAAKmg4C,aAAaU,MAAM7g4C,KAAKqg4C,MAAM,EAAE,EAAEtg4C,EAAEqh4C,aAAaj+3C,IAAI,WAAW,OAAOnD,KAAKmg4C,aAAaU,MAAM7g4C,KAAKqg4C,MAAM,EAAE,EAAEtg4C,EAAE6nT,GAAGzkT,IAAI,WAAW,OAAOnD,KAAKmg4C,aAAaU,MAAM7g4C,KAAKqg4C,MAAM,EAAE,EAAEtg4C,EAAE2xL,GAAGvuL,IAAI,WAAW,OAAOnD,KAAKmg4C,aAAaU,MAAM7g4C,KAAKqg4C,MAAM,EAAE,EAAEtg4C,EAAE+8L,GAAG35L,IAAI,WAAW,OAAOnD,KAAKmg4C,aAAaU,MAAM7g4C,KAAKqg4C,MAAM,EAAE,EAAEtg4C,EAAE03H,GAAGt0H,IAAI,WAAW,OAAOnD,KAAKmg4C,aAAaU,MAAM7g4C,KAAKqg4C,MAAM,EAAE,EAAEtg4C,EAAE+hO,aAAa3+N,IAAI,WAAW,OAAOnD,KAAKmg4C,aAAae,OAAOlh4C,KAAKsg4C,MAAM,EAAE,EAAEvg4C,EAAEsh4C,iBAAiBl+3C,IAAI,WAAW,OAAOnD,KAAKmg4C,aAAac,OAAOjh4C,KAAKqg4C,MAAM,EAAE,EAAEtg4C,EAAEuh4C,YAAYn+3C,IAAI,WAAW,OAAOnD,KAAKmg4C,aAAac,OAAOjh4C,KAAKqg4C,MAAM,EAAE,EAAEtg4C,EAAE2okC,YAAYvlkC,IAAI,WAAW,OAAO,IAAIvC,EAAEZ,KAAKmh4C,aAAanh4C,KAAKoh4C,aAAa,EAAE9h4C,OAAOkU,iBAAiBrU,EAAEO,UAAUK,GAAGZ,CAAC,CAAhqC,CAAkqCkf,IAAIiD,GAAG5hB,UAAUklB,KAAK,GAAG,IAAI7C,GAAG,SAAS3iB,GAAG,SAASD,IAAIC,EAAEmB,MAAMP,KAAKI,UAAW,CAAC,OAAOhB,IAAID,EAAEK,UAAUJ,IAAID,EAAEO,UAAUJ,OAAOY,OAAOd,GAAGA,EAAEM,YAAYO,YAAYd,EAAEA,EAAEO,UAAUyD,IAAI,SAAS/D,GAAG,OAAO,IAAIkiB,GAAGthB,KAAKZ,EAAE,EAAED,CAAC,CAA1L,CAA4L+f,IAAI/M,GAAG,oBAAoB4P,IAAI,IAAI3C,GAAG,SAAShgB,GAAG,SAASD,IAAIC,EAAEmB,MAAMP,KAAKI,UAAW,CAAChB,IAAID,EAAEK,UAAUJ,IAAID,EAAEO,UAAUJ,OAAOY,OAAOd,GAAGA,EAAEM,YAAYO,YAAYd,EAAE,IAAIY,EAAE,CAAC07O,QAAQ,CAAC33O,cAAa,GAAI43O,QAAQ,CAAC53O,cAAa,GAAIy93C,gBAAgB,CAACz93C,cAAa,GAAI093C,UAAU,CAAC193C,cAAa,GAAI293C,iBAAiB,CAAC393C,cAAa,GAAI6nP,eAAe,CAAC7nP,cAAa,GAAIk/X,WAAW,CAACl/X,cAAa,GAAIuza,QAAQ,CAACvza,cAAa,GAAI493C,UAAU,CAAC593C,cAAa,GAAI693C,UAAU,CAAC793C,cAAa,GAAI893C,YAAY,CAAC993C,cAAa,GAAI+93C,YAAY,CAAC/93C,cAAa,GAAIg+3C,YAAY,CAACh+3C,cAAa,GAAIi+3C,kBAAkB,CAACj+3C,cAAa,GAAIw/gB,OAAO,CAACx/gB,cAAa,GAAIk+3C,YAAY,CAACl+3C,cAAa,GAAIm+3C,oBAAoB,CAACn+3C,cAAa,IAAK,OAAO/D,EAAE07O,QAAQt4O,IAAI,WAAW,OAAOnD,KAAKmg4C,aAAaU,MAAM7g4C,KAAKqg4C,MAAM,EAAE,EAAEtg4C,EAAE27O,QAAQv4O,IAAI,WAAW,OAAOnD,KAAKmg4C,aAAaU,MAAM7g4C,KAAKqg4C,MAAM,EAAE,EAAEtg4C,EAAEwh4C,gBAAgBp+3C,IAAI,WAAW,OAAOnD,KAAKmg4C,aAAac,OAAOjh4C,KAAKqg4C,MAAM,EAAE,EAAEtg4C,EAAEyh4C,UAAUr+3C,IAAI,WAAW,OAAOnD,KAAKmg4C,aAAac,OAAOjh4C,KAAKqg4C,MAAM,EAAE,EAAEtg4C,EAAE0h4C,iBAAiBt+3C,IAAI,WAAW,OAAOnD,KAAKmg4C,aAAae,OAAOlh4C,KAAKsg4C,MAAM,EAAE,EAAEvg4C,EAAE4rP,eAAexoP,IAAI,WAAW,OAAOnD,KAAKmg4C,aAAae,OAAOlh4C,KAAKsg4C,MAAM,EAAE,EAAEvg4C,EAAEijY,WAAW7/X,IAAI,WAAW,OAAOnD,KAAKmg4C,aAAae,OAAOlh4C,KAAKsg4C,MAAM,EAAE,EAAEvg4C,EAAEs3a,QAAQl0a,IAAI,WAAW,OAAOnD,KAAKmg4C,aAAac,OAAOjh4C,KAAKqg4C,MAAM,GAAG,EAAEtg4C,EAAE2h4C,UAAUv+3C,IAAI,WAAW,OAAOnD,KAAKmg4C,aAAac,OAAOjh4C,KAAKqg4C,MAAM,GAAG,EAAEtg4C,EAAE4h4C,UAAUx+3C,IAAI,WAAW,OAAOnD,KAAKmg4C,aAAac,OAAOjh4C,KAAKqg4C,MAAM,GAAG,EAAEtg4C,EAAE6h4C,YAAYz+3C,IAAI,WAAW,OAAOnD,KAAKmg4C,aAAaa,QAAQhh4C,KAAKsg4C,MAAM,EAAE,EAAEvg4C,EAAE8h4C,YAAY1+3C,IAAI,WAAW,OAAOnD,KAAKmg4C,aAAaa,QAAQhh4C,KAAKsg4C,MAAM,EAAE,EAAEvg4C,EAAE+h4C,YAAY3+3C,IAAI,WAAW,OAAOnD,KAAKmg4C,aAAajqrB,MAAMl2sB,KAAKog4C,MAAM,GAAG,EAAErg4C,EAAEgi4C,kBAAkB5+3C,IAAI,WAAW,OAAOnD,KAAKmg4C,aAAajqrB,MAAMl2sB,KAAKog4C,MAAM,GAAG,EAAErg4C,EAAEgi4C,kBAAkB913C,IAAI,SAAS7M,GAAGY,KAAKmg4C,aAAajqrB,MAAMl2sB,KAAKog4C,MAAM,IAAIhh4C,CAAE,EAAEW,EAAEujhB,OAAOnghB,IAAI,WAAW,OAAOnD,KAAKmg4C,aAAajqrB,MAAMl2sB,KAAKog4C,MAAM,GAAG,EAAErg4C,EAAEujhB,OAAOr3gB,IAAI,SAAS7M,GAAGY,KAAKmg4C,aAAajqrB,MAAMl2sB,KAAKog4C,MAAM,IAAIhh4C,CAAE,EAAEW,EAAEii4C,YAAY7+3C,IAAI,WAAW,OAAOnD,KAAKmg4C,aAAae,OAAOlh4C,KAAKsg4C,MAAM,GAAG,EAAEvg4C,EAAEii4C,YAAY/13C,IAAI,SAAS7M,GAAGY,KAAKmg4C,aAAae,OAAOlh4C,KAAKsg4C,MAAM,IAAIlh4C,CAAE,EAAEW,EAAEki4C,oBAAoB9+3C,IAAI,WAAW,OAAOnD,KAAKmg4C,aAAaU,MAAM7g4C,KAAKqg4C,MAAM,GAAG,EAAE/g4C,OAAOkU,iBAAiBrU,EAAEO,UAAUK,GAAGZ,CAAC,CAArqE,CAAuqEkf,IAAIe,GAAG1f,UAAUklB,KAAK,GAAG,IAAI/C,GAAG,SAASziB,GAAG,SAASD,IAAIC,EAAEmB,MAAMP,KAAKI,UAAW,CAAC,OAAOhB,IAAID,EAAEK,UAAUJ,IAAID,EAAEO,UAAUJ,OAAOY,OAAOd,GAAGA,EAAEM,YAAYO,YAAYd,EAAEA,EAAEO,UAAUyD,IAAI,SAAS/D,GAAG,OAAO,IAAIggB,GAAGpf,KAAKZ,EAAE,EAAED,CAAC,CAA1L,CAA4L2iB,IAAI3P,GAAG,oBAAoB0P,IAAI,IAAIuN,GAAG,SAAShwB,GAAG,SAASD,IAAIC,EAAEmB,MAAMP,KAAKI,UAAW,CAAChB,IAAID,EAAEK,UAAUJ,IAAID,EAAEO,UAAUJ,OAAOY,OAAOd,GAAGA,EAAEM,YAAYO,YAAYd,EAAE,IAAIY,EAAE,CAAC07O,QAAQ,CAAC33O,cAAa,GAAI43O,QAAQ,CAAC53O,cAAa,GAAIo+3C,8BAA8B,CAACp+3C,cAAa,GAAIq+3C,+BAA+B,CAACr+3C,cAAa,GAAIs+3C,6BAA6B,CAACt+3C,cAAa,GAAIu+3C,8BAA8B,CAACv+3C,cAAa,GAAIw+3C,sBAAsB,CAACx+3C,cAAa,GAAIy+3C,8BAA8B,CAACz+3C,cAAa,GAAI+gB,IAAI,CAAC/gB,cAAa,GAAI0+3C,kBAAkB,CAAC1+3C,cAAa,GAAI2+3C,gBAAgB,CAAC3+3C,cAAa,GAAI4+3C,0BAA0B,CAAC5+3C,cAAa,GAAI6+3C,wBAAwB,CAAC7+3C,cAAa,GAAI8+3C,kBAAkB,CAAC9+3C,cAAa,GAAI++3C,gBAAgB,CAAC/+3C,cAAa,GAAIg/3C,0BAA0B,CAACh/3C,cAAa,GAAIi/3C,wBAAwB,CAACj/3C,cAAa,GAAIg+N,aAAa,CAACh+N,cAAa,GAAIk/3C,2BAA2B,CAACl/3C,cAAa,GAAIm/3C,yBAAyB,CAACn/3C,cAAa,GAAIo/3C,gBAAgB,CAACp/3C,cAAa,GAAIq/3C,wBAAwB,CAACr/3C,cAAa,GAAIs/3C,2BAA2B,CAACt/3C,cAAa,GAAIk+3C,YAAY,CAACl+3C,cAAa,GAAIu/3C,aAAa,CAACv/3C,cAAa,GAAIw/3C,YAAY,CAACx/3C,cAAa,GAAIy/3C,YAAY,CAACz/3C,cAAa,GAAI0/3C,wBAAwB,CAAC1/3C,cAAa,IAAK,OAAO/D,EAAE07O,QAAQt4O,IAAI,WAAW,OAAOnD,KAAKmg4C,aAAaU,MAAM7g4C,KAAKqg4C,MAAM,EAAE,EAAEtg4C,EAAE27O,QAAQv4O,IAAI,WAAW,OAAOnD,KAAKmg4C,aAAaU,MAAM7g4C,KAAKqg4C,MAAM,EAAE,EAAEtg4C,EAAEmi4C,8BAA8B/+3C,IAAI,WAAW,OAAOnD,KAAKmg4C,aAAaU,MAAM7g4C,KAAKqg4C,MAAM,EAAE,EAAEtg4C,EAAEoi4C,+BAA+Bh/3C,IAAI,WAAW,OAAOnD,KAAKmg4C,aAAaU,MAAM7g4C,KAAKqg4C,MAAM,EAAE,EAAEtg4C,EAAEqi4C,6BAA6Bj/3C,IAAI,WAAW,OAAOnD,KAAKmg4C,aAAaU,MAAM7g4C,KAAKqg4C,MAAM,EAAE,EAAEtg4C,EAAEsi4C,8BAA8Bl/3C,IAAI,WAAW,OAAOnD,KAAKmg4C,aAAaU,MAAM7g4C,KAAKqg4C,MAAM,EAAE,EAAEtg4C,EAAEui4C,sBAAsBn/3C,IAAI,WAAW,OAAOnD,KAAKmg4C,aAAaU,MAAM7g4C,KAAKqg4C,MAAM,EAAE,EAAEtg4C,EAAEwi4C,8BAA8Bp/3C,IAAI,WAAW,OAAOnD,KAAKmg4C,aAAaU,MAAM7g4C,KAAKqg4C,MAAM,EAAE,EAAEtg4C,EAAE8kB,IAAI1hB,IAAI,WAAW,OAAOnD,KAAKmg4C,aAAac,OAAOjh4C,KAAKqg4C,MAAM,EAAE,EAAEtg4C,EAAEyi4C,kBAAkBr/3C,IAAI,WAAW,OAAOnD,KAAKmg4C,aAAac,OAAOjh4C,KAAKqg4C,MAAM,EAAE,EAAEtg4C,EAAE0i4C,gBAAgBt/3C,IAAI,WAAW,OAAOnD,KAAKmg4C,aAAac,OAAOjh4C,KAAKqg4C,MAAM,GAAG,EAAEtg4C,EAAE2i4C,0BAA0Bv/3C,IAAI,WAAW,OAAOnD,KAAKmg4C,aAAac,OAAOjh4C,KAAKqg4C,MAAM,GAAG,EAAEtg4C,EAAE4i4C,wBAAwBx/3C,IAAI,WAAW,OAAOnD,KAAKmg4C,aAAac,OAAOjh4C,KAAKqg4C,MAAM,GAAG,EAAEtg4C,EAAE6i4C,kBAAkBz/3C,IAAI,WAAW,OAAOnD,KAAKmg4C,aAAac,OAAOjh4C,KAAKqg4C,MAAM,GAAG,EAAEtg4C,EAAE8i4C,gBAAgB1/3C,IAAI,WAAW,OAAOnD,KAAKmg4C,aAAac,OAAOjh4C,KAAKqg4C,MAAM,GAAG,EAAEtg4C,EAAE+i4C,0BAA0B3/3C,IAAI,WAAW,OAAOnD,KAAKmg4C,aAAac,OAAOjh4C,KAAKqg4C,MAAM,GAAG,EAAEtg4C,EAAEgj4C,wBAAwB5/3C,IAAI,WAAW,OAAOnD,KAAKmg4C,aAAac,OAAOjh4C,KAAKqg4C,MAAM,GAAG,EAAEtg4C,EAAE+hO,aAAa3+N,IAAI,WAAW,OAAOnD,KAAKmg4C,aAAac,OAAOjh4C,KAAKqg4C,MAAM,GAAG,EAAEtg4C,EAAEij4C,2BAA2B7/3C,IAAI,WAAW,OAAOnD,KAAKmg4C,aAAac,OAAOjh4C,KAAKqg4C,MAAM,GAAG,EAAEtg4C,EAAEkj4C,yBAAyB9/3C,IAAI,WAAW,OAAOnD,KAAKmg4C,aAAac,OAAOjh4C,KAAKqg4C,MAAM,GAAG,EAAEtg4C,EAAEmj4C,gBAAgB//3C,IAAI,WAAW,OAAOnD,KAAKmg4C,aAAac,OAAOjh4C,KAAKqg4C,MAAM,GAAG,EAAEtg4C,EAAEoj4C,wBAAwBhg4C,IAAI,WAAW,OAAOnD,KAAKmg4C,aAAac,OAAOjh4C,KAAKqg4C,MAAM,GAAG,EAAEtg4C,EAAEqj4C,2BAA2Bjg4C,IAAI,WAAW,OAAOnD,KAAKmg4C,aAAac,OAAOjh4C,KAAKqg4C,MAAM,GAAG,EAAEtg4C,EAAEii4C,YAAY7+3C,IAAI,WAAW,OAAOnD,KAAKmg4C,aAAae,OAAOlh4C,KAAKsg4C,MAAM,GAAG,EAAEvg4C,EAAEii4C,YAAY/13C,IAAI,SAAS7M,GAAGY,KAAKmg4C,aAAae,OAAOlh4C,KAAKsg4C,MAAM,IAAIlh4C,CAAE,EAAEW,EAAEsj4C,aAAalg4C,IAAI,WAAW,OAAOnD,KAAKmg4C,aAAaa,QAAQhh4C,KAAKsg4C,MAAM,GAAG,EAAEvg4C,EAAEuj4C,YAAYng4C,IAAI,WAAW,OAAOnD,KAAKmg4C,aAAaa,QAAQhh4C,KAAKsg4C,MAAM,GAAG,EAAEvg4C,EAAEwj4C,YAAYpg4C,IAAI,WAAW,OAAOnD,KAAKmg4C,aAAaa,QAAQhh4C,KAAKsg4C,MAAM,GAAG,EAAEvg4C,EAAEyj4C,wBAAwBrg4C,IAAI,WAAW,OAAOnD,KAAKmg4C,aAAaa,QAAQhh4C,KAAKsg4C,MAAM,GAAG,EAAEhh4C,OAAOkU,iBAAiBrU,EAAEO,UAAUK,GAAGZ,CAAC,CAAhnH,CAAknHkf,IAAI+Q,GAAG1vB,UAAUklB,KAAK,GAAG,IAAIsK,GAAG,SAAS9vB,GAAG,SAASD,IAAIC,EAAEmB,MAAMP,KAAKI,UAAW,CAAC,OAAOhB,IAAID,EAAEK,UAAUJ,IAAID,EAAEO,UAAUJ,OAAOY,OAAOd,GAAGA,EAAEM,YAAYO,YAAYd,EAAEA,EAAEO,UAAUyD,IAAI,SAAS/D,GAAG,OAAO,IAAIgwB,GAAGpvB,KAAKZ,EAAE,EAAED,CAAC,CAA1L,CAA4LqhB,IAAIrO,GAAG,sBAAsB+c,IAAI,IAAIS,GAAG,SAASvwB,GAAG,SAASD,IAAIC,EAAEmB,MAAMP,KAAKI,UAAW,CAAC,OAAOhB,IAAID,EAAEK,UAAUJ,IAAID,EAAEO,UAAUJ,OAAOY,OAAOd,GAAGA,EAAEM,YAAYO,YAAYd,EAAEA,EAAEO,UAAU+j4C,WAAW,SAASrk4C,GAAG,OAAOY,KAAKgh4C,QAAQ,EAAE5h4C,EAAE,EAAE,EAAED,CAAC,CAAtM,CAAwMohB,IAAIpO,GAAG,mBAAmBwd,IAAI,IAAIJ,GAAG,SAASnwB,GAAG,SAASD,IAAIC,EAAEmB,MAAMP,KAAKI,UAAW,CAAC,OAAOhB,IAAID,EAAEK,UAAUJ,IAAID,EAAEO,UAAUJ,OAAOY,OAAOd,GAAGA,EAAEM,YAAYO,YAAYd,EAAEA,EAAEO,UAAUgk4C,KAAK,SAAStk4C,GAAG,OAAOY,KAAK6g4C,MAAM,EAAEzh4C,EAAE,EAAE,EAAED,EAAEO,UAAUik4C,KAAK,SAASvk4C,GAAG,OAAOY,KAAK6g4C,MAAM,EAAEzh4C,EAAE,EAAE,EAAED,EAAEO,UAAUkk4C,8BAA8B,SAASxk4C,GAAG,OAAOY,KAAK6g4C,MAAM,EAAEzh4C,EAAE,EAAE,EAAED,CAAC,CAArU,CAAuUogB,IAAIpN,GAAG,wBAAwBod,IAAI,IAAIrB,GAAG,SAAS9uB,GAAG,SAASD,IAAIC,EAAEmB,MAAMP,KAAKI,UAAW,CAAChB,IAAID,EAAEK,UAAUJ,IAAID,EAAEO,UAAUJ,OAAOY,OAAOd,GAAGA,EAAEM,YAAYO,YAAYd,EAAE,IAAIY,EAAE,CAAC+hO,aAAa,CAACh+N,cAAa,GAAIu93C,iBAAiB,CAACv93C,cAAa,GAAIw93C,YAAY,CAACx93C,cAAa,IAAK,OAAO/D,EAAE+hO,aAAa3+N,IAAI,WAAW,OAAOnD,KAAKmg4C,aAAae,OAAOlh4C,KAAKsg4C,MAAM,EAAE,EAAEvg4C,EAAEsh4C,iBAAiBl+3C,IAAI,WAAW,OAAOnD,KAAKmg4C,aAAac,OAAOjh4C,KAAKqg4C,MAAM,EAAE,EAAEtg4C,EAAEuh4C,YAAYn+3C,IAAI,WAAW,OAAOnD,KAAKmg4C,aAAac,OAAOjh4C,KAAKqg4C,MAAM,EAAE,EAAE/g4C,OAAOkU,iBAAiBrU,EAAEO,UAAUK,GAAGZ,CAAC,CAAhgB,CAAkgBkf,IAAI6P,GAAGxuB,UAAUklB,KAAK,EAAE,IAAIoM,GAAG,SAAS5xB,GAAG,SAASD,IAAIC,EAAEmB,MAAMP,KAAKI,UAAW,CAAC,OAAOhB,IAAID,EAAEK,UAAUJ,IAAID,EAAEO,UAAUJ,OAAOY,OAAOd,GAAGA,EAAEM,YAAYO,YAAYd,EAAEA,EAAEO,UAAUyD,IAAI,SAAS/D,GAAG,OAAO,IAAI8uB,GAAGluB,KAAKZ,EAAE,EAAED,CAAC,CAA1L,CAA4LkgB,IAAIlN,GAAG,oBAAoB6e,IAAI,IAAIlB,GAAGpR,GAAG,CAAC,CAAChU,KAAK,QAAQwjP,WAAW,EAAE3hP,KAAK,UAAU,GAAGm03C,QAAQxv2C,GAAG,SAAS9xB,QAAG,IAASA,IAAIA,EAAE,IAAIY,KAAKkrV,SAAS9rV,CAAE,EAAE,SAASyyB,GAAGzyB,EAAED,GAAG,OAAO,KAAKC,EAAE0D,EAAED,KAAKyK,MAAMlO,GAAG,EAAE,MAAM0D,EAAED,KAAKyK,MAAMnO,GAAG,EAAE,IAAI,CAAC+xB,GAAGxxB,UAAUmk4C,eAAe,SAASzk4C,EAAED,EAAEY,EAAEV,GAAG,IAAIuB,EAAEZ,KAAKkrV,SAASlrV,KAAKkrV,SAAS7qV,OAAO,GAAG,OAAOjB,EAAE8xB,GAAG4y2C,yBAAyBj/3C,EAAE,+BAA+BqsB,GAAG4y2C,wBAAwB,sBAAsB1k4C,KAAKwB,GAAGA,EAAEmj4C,aAAa3k4C,EAAE8xB,GAAG4y2C,yBAAyBlj4C,EAAEoj4C,UAAU3k4C,KAAKuB,EAAE,CAACk8H,aAAa39H,EAAEkB,OAAO4j4C,gBAAgBlk4C,EAAEM,OAAO0j4C,aAAa,EAAEG,gBAAgB,QAAG,IAAS7k4C,IAAIuB,EAAEoj4C,QAAQ3k4C,GAAGW,KAAKkrV,SAASrpV,KAAKjB,IAAIA,CAAC,EAAEswB,GAAGxxB,UAAUyD,IAAI,WAAW,OAAOnD,KAAKkrV,QAAQ,EAAEh6T,GAAGxxB,UAAU0+I,QAAQ,WAAW,IAAI,IAAIh/I,EAAE,EAAED,EAAEa,KAAKkrV,SAAS9rV,EAAED,EAAEkB,OAAOjB,GAAG,EAAE,CAAC,IAAIW,EAAEZ,EAAEC,GAAG,IAAI,IAAIC,KAAKU,EAAEok4C,KAAKpk4C,EAAEok4C,KAAK9k4C,GAAG++I,SAAU,CAAC,EAAEltH,GAAGkz2C,cAAc,SAAShl4C,EAAED,EAAEY,EAAEV,GAAG,OAAO,IAAI6xB,GAAG,CAAC,CAAC4rG,aAAa19H,EAAE6k4C,gBAAgB9k4C,EAAE4k4C,aAAahk4C,EAAEmk4C,gBAAgB7k4C,EAAE8k4C,KAAK,CAAC,EAAEH,QAAQ,IAAI,EAAE9y2C,GAAG4y2C,wBAAwBjh4C,KAAK6yF,IAAI,EAAE,IAAI,EAAEvjF,GAAG,gBAAgB+e,IAAI,IAAIY,GAAGpT,GAAG,CAAC,CAAChU,KAAK,iBAAiBwjP,WAAW,EAAE3hP,KAAK,UAAU,CAAC7B,KAAK,eAAewjP,WAAW,EAAE3hP,KAAK,UAAU,CAAC7B,KAAK,qBAAqBwjP,WAAW,EAAE3hP,KAAK,UAAU,CAAC7B,KAAK,mBAAmBwjP,WAAW,EAAE3hP,KAAK,YAAY+lB,GAAGnzB,GAAE,SAAUC,GAAGA,EAAEqD,QAAQ,SAASrD,EAAED,GAAG,IAAIY,EAAEV,EAAEuB,EAAEI,EAAEV,EAAEQ,EAAEuB,EAAEG,EAAE,IAAInD,EAAED,EAAEiB,QAAQN,EAAE,EAAEX,EAAEiB,QAAQO,EAAEzB,EAAEmB,EAAE,WAAWQ,EAAE,UAAU0B,EAAE,EAAEA,EAAEnD,GAAGgD,EAAE,IAAIjD,EAAE2Z,WAAWvW,IAAI,IAAIpD,EAAE2Z,aAAavW,KAAK,GAAG,IAAIpD,EAAE2Z,aAAavW,KAAK,IAAI,IAAIpD,EAAE2Z,aAAavW,KAAK,KAAKA,EAAE5B,EAAE,OAAO,OAAOI,EAAE,GAAG,OAAOJ,GAAGA,GAAGyB,GAAG,OAAOA,GAAGA,GAAG,MAAMA,GAAG/B,KAAK+B,IAAI,IAAI/B,EAAE,QAAQ,IAAI,aAAa,GAAG+B,IAAI,KAAKvB,KAAKuB,IAAI,IAAIvB,EAAE,QAAQ,IAAI,aAAa,GAAGF,IAAI,OAAO,GAAGA,IAAI,IAAI,QAAQ,IAAI,eAAe,OAAOI,IAAI,IAAI,QAAQ,IAAI,OAAOqB,EAAE,EAAEtC,GAAG,KAAK,EAAEsC,IAAI,IAAIjD,EAAE2Z,WAAWvW,EAAE,KAAK,GAAG,KAAK,EAAEH,IAAI,IAAIjD,EAAE2Z,WAAWvW,EAAE,KAAK,EAAE,KAAK,EAAE5B,GAAGyB,GAAG,OAAOA,GAAGA,GAAG,OAAOA,GAAG,IAAIjD,EAAE2Z,WAAWvW,KAAKlC,KAAK+B,IAAI,IAAI/B,EAAE,QAAQ,IAAI,aAAa,GAAG+B,IAAI,KAAKvB,KAAKuB,IAAI,IAAIvB,EAAE,QAAQ,IAAI,WAAY,OAAOF,GAAGxB,EAAEiB,OAAOO,EAAE,YAAY,OAAOA,GAAGA,IAAI,OAAO,YAAYA,IAAI,IAAI,QAAQ,IAAI,WAAWA,EAAE,YAAY,OAAOA,GAAGA,IAAI,OAAO,YAAYA,IAAI,IAAI,QAAQ,IAAI,YAAYA,GAAGA,IAAI,MAAM,CAAC,CAAG,IAAGmvB,GAAG5wB,GAAE,SAAUC,GAAGA,EAAEqD,QAAQ,SAASrD,EAAED,GAAG,IAAI,IAAIY,EAAEV,EAAED,EAAEiB,OAAOO,EAAEzB,EAAEE,EAAE2B,EAAE,EAAE3B,GAAG,GAAGU,EAAE,YAAY,OAAOA,EAAE,IAAIX,EAAE2Z,WAAW/X,IAAI,IAAI5B,EAAE2Z,aAAa/X,KAAK,GAAG,IAAI5B,EAAE2Z,aAAa/X,KAAK,IAAI,IAAI5B,EAAE2Z,aAAa/X,KAAK,OAAO,YAAYjB,IAAI,IAAI,QAAQ,IAAIa,EAAE,YAAY,MAAMA,KAAK,YAAYA,IAAI,IAAI,QAAQ,KAAKb,EAAE,YAAY,OAAOA,GAAGA,IAAI,OAAO,YAAYA,IAAI,IAAI,QAAQ,KAAKV,GAAG,IAAI2B,EAAE,OAAO3B,GAAG,KAAK,EAAEuB,IAAI,IAAIxB,EAAE2Z,WAAW/X,EAAE,KAAK,GAAG,KAAK,EAAEJ,IAAI,IAAIxB,EAAE2Z,WAAW/X,EAAE,KAAK,EAAE,KAAK,EAAEJ,EAAE,YAAY,OAAOA,GAAG,IAAIxB,EAAE2Z,WAAW/X,OAAO,YAAYJ,IAAI,IAAI,QAAQ,IAAK,OAAOA,EAAE,YAAY,OAAOA,GAAGA,IAAI,OAAO,YAAYA,IAAI,IAAI,QAAQ,KAAKA,GAAGA,IAAI,MAAM,CAAC,CAAG,IAAGuxB,GAAGG,GAAGN,GAAGjC,GAAGoC,GAAGky2C,QAAQ/x2C,GAAGH,GAAGmy2C,QAAQty2C,GAAG,IAAIY,GAAG,WAAW5yB,KAAK04Z,IAAI,GAAG14Z,KAAKyqC,UAAU,GAAGzqC,KAAK0gvB,SAAQ,CAAG,EAAE9ttB,GAAGlzB,UAAUylB,IAAI,SAAS/lB,EAAED,EAAEY,EAAEV,GAAGW,KAAK04Z,IAAI72Z,KAAKoxB,GAAG7zB,IAAIY,KAAKyqC,UAAU5oC,KAAK1C,EAAEY,EAAEV,EAAG,EAAEuzB,GAAGlzB,UAAUqgP,aAAa,SAAS3gP,GAAG,IAAI,IAAID,EAAE8zB,GAAG7zB,GAAGW,EAAE,EAAEV,EAAEW,KAAK04Z,IAAIr4Z,OAAO,EAAEN,EAAEV,GAAG,CAAC,IAAIuB,EAAEb,EAAEV,GAAG,EAAEW,KAAK04Z,IAAI93Z,IAAIzB,EAAEE,EAAEuB,EAAEb,EAAEa,EAAE,CAAE,CAAC,IAAI,IAAII,EAAE,GAAGhB,KAAK04Z,IAAI34Z,KAAKZ,GAAG6B,EAAEa,KAAK,CAACmb,MAAMhd,KAAKyqC,UAAU,EAAE1qC,GAAGymC,MAAMxmC,KAAKyqC,UAAU,EAAE1qC,EAAE,GAAG0mC,IAAIzmC,KAAKyqC,UAAU,EAAE1qC,EAAE,KAAKA,IAAI,OAAOiB,CAAC,EAAE4xB,GAAGu6qB,UAAU,SAAS/tsB,EAAED,GAAG,IAAIY,EAAE,IAAIkgB,aAAa7gB,EAAEs5Z,KAAKr5Z,EAAE,IAAI0gB,YAAY3gB,EAAEqrC,WAAW,OAAO,SAASrrC,EAAED,EAAEY,EAAEV,EAAEuB,GAAG,KAAKvB,EAAEuB,GAAG,CAAC,IAAI,IAAII,EAAE7B,EAAEE,EAAEuB,GAAG,GAAGN,EAAEjB,EAAE,EAAEyB,EAAEF,EAAE,IAAI,CAAC,GAAGN,UAAWnB,EAAEmB,GAAGU,GAAG,GAAGF,UAAW3B,EAAE2B,GAAGE,GAAG,GAAGV,GAAGQ,EAAE,MAAMiyB,GAAG5zB,EAAEmB,EAAEQ,GAAGiyB,GAAGhzB,EAAE,EAAEO,EAAE,EAAEQ,GAAGiyB,GAAGhzB,EAAE,EAAEO,EAAE,EAAE,EAAEQ,EAAE,GAAGiyB,GAAGhzB,EAAE,EAAEO,EAAE,EAAE,EAAEQ,EAAE,EAAG,CAACA,EAAEzB,EAAEuB,EAAEE,GAAG1B,EAAED,EAAEY,EAAEV,EAAEyB,GAAGzB,EAAEyB,EAAE,IAAI1B,EAAED,EAAEY,EAAEe,EAAE,EAAEF,GAAGA,EAAEE,EAAG,CAAC,CAAxO,CAA0Of,EAAEV,EAAE,EAAEU,EAAEM,OAAO,GAAGlB,GAAGA,EAAE0C,KAAK9B,EAAEmoB,OAAO7oB,EAAE6oB,QAAQ,CAACwwY,IAAI34Z,EAAE0qC,UAAUprC,EAAE,EAAEuzB,GAAG4o2C,YAAY,SAASp83C,GAAG,IAAID,EAAE,IAAIyzB,GAAG,OAAOzzB,EAAEu5Z,IAAIt5Z,EAAEs5Z,IAAIv5Z,EAAEsrC,UAAUrrC,EAAEqrC,UAAUtrC,EAAEuhvB,SAAQ,EAAGvhvB,CAAC,EAAE,IAAIizB,GAAGvvB,KAAK6yF,IAAI,EAAE,IAAI,EAAE,SAASziE,GAAG7zB,GAAG,IAAID,GAAGC,EAAE,OAAQktC,MAAMntC,IAAIA,GAAGizB,GAAGjzB,EAAEgzB,GAAGryB,OAAOV,GAAG,CAAC,SAAS2zB,GAAG3zB,EAAED,EAAEY,GAAG,IAAIV,EAAED,EAAED,GAAGC,EAAED,GAAGC,EAAEW,GAAGX,EAAEW,GAAGV,CAAE,CAAC8S,GAAG,qBAAqBygB,IAAI,IAAI2B,GAAG,SAASn1B,EAAED,GAAGa,KAAKiuH,GAAG7uH,EAAE6uH,GAAGjuH,KAAK+2B,SAAS53B,CAAE,EAAE23B,GAAG,SAAS13B,GAAG,SAASD,EAAEA,EAAEY,GAAGX,EAAEQ,KAAKI,KAAKb,EAAEY,GAAGC,KAAK+/B,QAAQ,CAAE,CAAC,OAAO3gC,IAAID,EAAEK,UAAUJ,IAAID,EAAEO,UAAUJ,OAAOY,OAAOd,GAAGA,EAAEM,YAAYO,YAAYd,EAAEA,EAAEO,UAAUuM,IAAI,SAAS7M,GAAGY,KAAK+/B,UAAU3gC,IAAIY,KAAK+/B,QAAQ3gC,EAAEY,KAAKiuH,GAAG82N,UAAU/kV,KAAK+2B,SAAS33B,GAAI,EAAED,CAAC,CAAtP,CAAwPo1B,IAAIP,GAAG,SAAS50B,GAAG,SAASD,EAAEA,EAAEY,GAAGX,EAAEQ,KAAKI,KAAKb,EAAEY,GAAGC,KAAK+/B,QAAQ,CAAE,CAAC,OAAO3gC,IAAID,EAAEK,UAAUJ,IAAID,EAAEO,UAAUJ,OAAOY,OAAOd,GAAGA,EAAEM,YAAYO,YAAYd,EAAEA,EAAEO,UAAUuM,IAAI,SAAS7M,GAAGY,KAAK+/B,UAAU3gC,IAAIY,KAAK+/B,QAAQ3gC,EAAEY,KAAKiuH,GAAGs2wC,UAAUvk4C,KAAK+2B,SAAS33B,GAAI,EAAED,CAAC,CAAtP,CAAwPo1B,IAAIC,GAAG,SAASp1B,GAAG,SAASD,EAAEA,EAAEY,GAAGX,EAAEQ,KAAKI,KAAKb,EAAEY,GAAGC,KAAK+/B,QAAQ,CAAC,EAAE,EAAG,CAAC,OAAO3gC,IAAID,EAAEK,UAAUJ,IAAID,EAAEO,UAAUJ,OAAOY,OAAOd,GAAGA,EAAEM,YAAYO,YAAYd,EAAEA,EAAEO,UAAUuM,IAAI,SAAS7M,GAAGA,EAAE,KAAKY,KAAK+/B,QAAQ,IAAI3gC,EAAE,KAAKY,KAAK+/B,QAAQ,KAAK//B,KAAK+/B,QAAQ3gC,EAAEY,KAAKiuH,GAAGu2wC,UAAUxk4C,KAAK+2B,SAAS33B,EAAE,GAAGA,EAAE,IAAK,EAAED,CAAC,CAAhS,CAAkSo1B,IAAIoC,GAAG,SAASv3B,GAAG,SAASD,EAAEA,EAAEY,GAAGX,EAAEQ,KAAKI,KAAKb,EAAEY,GAAGC,KAAK+/B,QAAQ,CAAC,EAAE,EAAE,EAAG,CAAC,OAAO3gC,IAAID,EAAEK,UAAUJ,IAAID,EAAEO,UAAUJ,OAAOY,OAAOd,GAAGA,EAAEM,YAAYO,YAAYd,EAAEA,EAAEO,UAAUuM,IAAI,SAAS7M,GAAGA,EAAE,KAAKY,KAAK+/B,QAAQ,IAAI3gC,EAAE,KAAKY,KAAK+/B,QAAQ,IAAI3gC,EAAE,KAAKY,KAAK+/B,QAAQ,KAAK//B,KAAK+/B,QAAQ3gC,EAAEY,KAAKiuH,GAAGw2wC,UAAUzk4C,KAAK+2B,SAAS33B,EAAE,GAAGA,EAAE,GAAGA,EAAE,IAAK,EAAED,CAAC,CAA/T,CAAiUo1B,IAAImD,GAAG,SAASt4B,GAAG,SAASD,EAAEA,EAAEY,GAAGX,EAAEQ,KAAKI,KAAKb,EAAEY,GAAGC,KAAK+/B,QAAQ,CAAC,EAAE,EAAE,EAAE,EAAG,CAAC,OAAO3gC,IAAID,EAAEK,UAAUJ,IAAID,EAAEO,UAAUJ,OAAOY,OAAOd,GAAGA,EAAEM,YAAYO,YAAYd,EAAEA,EAAEO,UAAUuM,IAAI,SAAS7M,GAAGA,EAAE,KAAKY,KAAK+/B,QAAQ,IAAI3gC,EAAE,KAAKY,KAAK+/B,QAAQ,IAAI3gC,EAAE,KAAKY,KAAK+/B,QAAQ,IAAI3gC,EAAE,KAAKY,KAAK+/B,QAAQ,KAAK//B,KAAK+/B,QAAQ3gC,EAAEY,KAAKiuH,GAAGy2wC,UAAU1k4C,KAAK+2B,SAAS33B,EAAE,GAAGA,EAAE,GAAGA,EAAE,GAAGA,EAAE,IAAK,EAAED,CAAC,CAA9V,CAAgWo1B,IAAIE,GAAG,SAASr1B,GAAG,SAASD,EAAEA,EAAEY,GAAGX,EAAEQ,KAAKI,KAAKb,EAAEY,GAAGC,KAAK+/B,QAAQr5B,GAAGqvK,WAAY,CAAC,OAAO32K,IAAID,EAAEK,UAAUJ,IAAID,EAAEO,UAAUJ,OAAOY,OAAOd,GAAGA,EAAEM,YAAYO,YAAYd,EAAEA,EAAEO,UAAUuM,IAAI,SAAS7M,GAAGA,EAAEW,IAAIC,KAAK+/B,QAAQhgC,GAAGX,EAAE+C,IAAInC,KAAK+/B,QAAQ59B,GAAG/C,EAAEkE,IAAItD,KAAK+/B,QAAQz8B,GAAGlE,EAAE4B,IAAIhB,KAAK+/B,QAAQ/+B,IAAIhB,KAAK+/B,QAAQ3gC,EAAEY,KAAKiuH,GAAGy2wC,UAAU1k4C,KAAK+2B,SAAS33B,EAAEW,EAAEX,EAAE+C,EAAE/C,EAAEkE,EAAElE,EAAE4B,GAAI,EAAE7B,CAAC,CAAvV,CAAyVo1B,IAAIwB,GAAG,IAAI/V,aAAa,IAAI4W,GAAG,SAASx3B,GAAG,SAASD,EAAEA,EAAEY,GAAGX,EAAEQ,KAAKI,KAAKb,EAAEY,GAAGC,KAAK+/B,QAAQhK,EAAG,CAAC,OAAO32B,IAAID,EAAEK,UAAUJ,IAAID,EAAEO,UAAUJ,OAAOY,OAAOd,GAAGA,EAAEM,YAAYO,YAAYd,EAAEA,EAAEO,UAAUuM,IAAI,SAAS7M,GAAG,GAAGA,EAAE,MAAMY,KAAK+/B,QAAQ,KAAK3gC,EAAE,KAAKY,KAAK+/B,QAAQ,GAAG,OAAO//B,KAAK+/B,QAAQ3gC,OAAOY,KAAKiuH,GAAG02wC,iBAAiB3k4C,KAAK+2B,UAAS,EAAG33B,GAAG,IAAI,IAAID,EAAE,EAAEA,EAAE,GAAGA,IAAI,GAAGC,EAAED,KAAKa,KAAK+/B,QAAQ5gC,GAAG,CAACa,KAAK+/B,QAAQ3gC,EAAEY,KAAKiuH,GAAG02wC,iBAAiB3k4C,KAAK+2B,UAAS,EAAG33B,GAAG,KAAK,CAAC,EAAED,CAAC,CAA/Z,CAAiao1B,IAAI,SAAS80tC,GAAGjqvC,GAAG,MAAO,CAACyyB,GAAG,IAAIzyB,EAAEW,EAAE,IAAIX,EAAE+C,GAAG0vB,GAAG,IAAIzyB,EAAEkE,EAAE,IAAIlE,EAAE4B,GAAG,CAAC,IAAIm2B,GAAG,SAAS/3B,EAAED,EAAEY,GAAGC,KAAKmB,MAAM/B,EAAEY,KAAKm4T,aAAah5T,EAAEkwB,KAAI,SAAUjwB,GAAG,MAAO,KAAKA,CAAE,IAAGY,KAAKuM,KAAKxM,CAAE,EAAEo3B,GAAGz3B,UAAUkl4C,WAAW,SAASxl4C,EAAED,EAAEY,GAAGX,EAAE6M,IAAIlM,EAAE++3C,WAAW9+3C,KAAKmB,OAAQ,EAAEg2B,GAAGz3B,UAAUml4C,WAAW,SAASzl4C,EAAED,EAAEY,GAAG,MAAO,UAAUC,KAAKuM,KAAK,IAAIkoB,GAAGr1B,EAAED,GAAG,IAAI60B,GAAG50B,EAAED,EAAE,EAAE,IAAIk4B,GAAG,SAASj4B,EAAED,GAAGa,KAAKm4T,aAAah5T,EAAEkwB,KAAI,SAAUjwB,GAAG,MAAO,KAAKA,CAAE,IAAGY,KAAK8k4C,YAAY,KAAK9k4C,KAAK+k4C,UAAU,KAAK/k4C,KAAKgl4C,eAAe,EAAEhl4C,KAAKil4C,aAAa,CAAE,EAAE5t2C,GAAG33B,UAAUwl4C,4BAA4B,SAAS9l4C,EAAED,GAAGa,KAAKgl4C,eAAe7l4C,EAAEyvH,WAAW5uH,KAAKil4C,aAAa7l4C,EAAEwvH,WAAW5uH,KAAK8k4C,YAAY3l4C,EAAEgm4C,KAAKnl4C,KAAK+k4C,UAAU3l4C,EAAE+l4C,IAAK,EAAE9t2C,GAAG33B,UAAUkl4C,WAAW,SAASxl4C,EAAED,EAAEY,EAAEV,GAAG,IAAIuB,EAAE,iBAAiBvB,EAAEW,KAAK+k4C,UAAU,mBAAmB1l4C,EAAEW,KAAK8k4C,YAAY,qBAAqBzl4C,EAAEW,KAAKil4C,aAAa,uBAAuB5l4C,EAAEW,KAAKgl4C,eAAe,KAAKpk4C,GAAGxB,EAAE6M,IAAIrL,EAAG,EAAEy2B,GAAG33B,UAAUml4C,WAAW,SAASzl4C,EAAED,EAAEY,GAAG,MAAO,cAAcA,EAAE07B,OAAO,EAAE,GAAG,IAAI/D,GAAGt4B,EAAED,GAAG,IAAI60B,GAAG50B,EAAED,EAAE,EAAE,IAAI04B,GAAG,SAASz4B,EAAED,EAAEY,EAAEV,GAAGW,KAAKghe,WAAW5he,EAAEY,KAAKuM,KAAKxM,EAAEC,KAAK0kG,SAAS,EAAE1kG,KAAKol4C,sBAAsBjm4C,EAAEkwB,KAAI,SAAUjwB,GAAG,MAAO,CAACsL,KAAK,KAAKtL,EAAEmN,KAAK,UAAU2hP,WAAW,UAAUnuP,EAAE,EAAE,EAAEoiD,OAAO,EAAG,IAAGniD,KAAKql4C,iBAAiB,IAAIhm4C,CAAE,EAAEw4B,GAAGn4B,UAAU4l4C,mBAAmB,SAASlm4C,EAAED,EAAEY,EAAEV,EAAEuB,GAAG,IAAII,EAAEhB,KAAKql4C,iBAAiBhl4C,OAAOC,EAAEN,KAAKghe,WAAWszC,SAAS,IAAI/2f,GAAG,GAAGpe,EAAE,CAAC,EAAEE,EAAE,GAAGuB,GAAGZ,KAAKql4C,iBAAiBx2wC,OAAOzvH,GAAGY,KAAKul4C,eAAevk4C,EAAE5B,EAAEkB,EAAG,EAAEu3B,GAAGn4B,UAAU8l4C,iBAAiB,SAASpm4C,EAAED,EAAEY,EAAEV,GAAG,IAAIuB,EAAEZ,KAAKghe,WAAWszC,SAAS,CAAC30e,KAAK,GAAG5/B,EAAEV,GAAGW,KAAKul4C,eAAenm4C,EAAED,EAAEyB,EAAG,EAAEi3B,GAAGn4B,UAAU6l4C,eAAe,SAASnm4C,EAAED,EAAEY,GAAG,GAAG,UAAUC,KAAKuM,KAAK,IAAI,IAAIlN,EAAEgqvC,GAAGtpvC,GAAGa,EAAExB,EAAEwB,EAAEzB,EAAEyB,IAAIZ,KAAKql4C,iBAAiBtE,QAAQng4C,EAAEvB,EAAE,GAAGA,EAAE,QAAS,CAAC,IAAI,IAAI2B,EAAE5B,EAAE4B,EAAE7B,EAAE6B,IAAIhB,KAAKql4C,iBAAiBtE,QAAQ//3C,EAAEjB,GAAGC,KAAK0kG,SAAS7hG,KAAK8K,IAAI3N,KAAK0kG,SAAS7hG,KAAKmjH,IAAIjmH,GAAI,CAAC,EAAE83B,GAAGn4B,UAAU676B,OAAO,SAASn86B,GAAGY,KAAKql4C,kBAAkBrl4C,KAAKql4C,iBAAiBr5tC,cAAchsK,KAAKyl4C,mBAAmBzl4C,KAAKyl4C,kBAAkBv92C,OAAOloB,KAAKyl4C,kBAAkB9y0B,WAAW3yjB,KAAKql4C,kBAAkBrl4C,KAAKyl4C,kBAAkBrm4C,EAAEsm4C,mBAAmB1l4C,KAAKql4C,iBAAiBrl4C,KAAKol4C,sBAAsBpl4C,KAAKghe,WAAW255B,kBAAmB,EAAE9i2C,GAAGn4B,UAAU0+I,QAAQ,WAAWp+I,KAAKyl4C,mBAAmBzl4C,KAAKyl4C,kBAAkBrnvC,SAAU,EAAE,IAAI6rmC,GAAG,SAAS7qvC,EAAED,EAAEY,EAAEV,EAAEuB,EAAEI,GAAGhB,KAAKghe,WAAW5he,EAAEY,KAAKm4T,aAAah5T,EAAEkwB,KAAI,SAAUjwB,GAAG,MAAO,KAAKA,EAAE,IAAK,IAAGY,KAAKuM,KAAKxM,EAAEC,KAAK2l4C,eAAetm4C,EAAEW,KAAK2/B,KAAK/+B,EAAEZ,KAAK0kG,SAAS,EAAE1kG,KAAKol4C,sBAAsBjm4C,EAAEkwB,KAAI,SAAUjwB,GAAG,MAAO,CAACsL,KAAK,KAAKtL,EAAEmN,KAAK,UAAU2hP,WAAW,UAAUnuP,EAAE,EAAE,EAAEoiD,OAAO,EAAG,IAAGniD,KAAKql4C,iBAAiB,IAAIrk4C,CAAE,EAAEipvC,GAAGvqvC,UAAU4l4C,mBAAmB,SAASlm4C,EAAED,EAAEY,EAAEV,EAAEuB,GAAG,IAAII,EAAEhB,KAAKghe,WAAWszC,SAAS,IAAI/2f,GAAGvd,KAAK2/B,MAAMxgC,EAAE,CAAC,EAAEE,EAAE,GAAGuB,GAAGN,EAAEN,KAAKghe,WAAWszC,SAAS,IAAI/2f,GAAGvd,KAAK2/B,KAAK,GAAGxgC,EAAE,CAAC,EAAEE,EAAE,GAAGuB,GAAGE,EAAEd,KAAKql4C,iBAAiBhl4C,OAAOL,KAAKql4C,iBAAiBx2wC,OAAOzvH,GAAGY,KAAKul4C,eAAezk4C,EAAE1B,EAAE4B,EAAEV,EAAG,EAAE2pvC,GAAGvqvC,UAAU8l4C,iBAAiB,SAASpm4C,EAAED,EAAEY,EAAEV,GAAG,IAAIuB,EAAEZ,KAAKghe,WAAWszC,SAAS,CAAC30e,KAAK3/B,KAAK2/B,MAAM5/B,EAAEV,GAAG2B,EAAEhB,KAAKghe,WAAWszC,SAAS,CAAC30e,KAAK3/B,KAAK2/B,KAAK,GAAG5/B,EAAEV,GAAGW,KAAKul4C,eAAenm4C,EAAED,EAAEyB,EAAEI,EAAG,EAAEipvC,GAAGvqvC,UAAU6l4C,eAAe,SAASnm4C,EAAED,EAAEY,EAAEV,GAAG,GAAG,UAAUW,KAAKuM,KAAK,IAAI,IAAI3L,EAAEyovC,GAAGtpvC,GAAGiB,EAAEqovC,GAAGhqvC,GAAGiB,EAAElB,EAAEkB,EAAEnB,EAAEmB,IAAIN,KAAKql4C,iBAAiBtE,QAAQzg4C,EAAEM,EAAE,GAAGA,EAAE,GAAGI,EAAE,GAAGA,EAAE,QAAS,CAAC,IAAI,IAAIF,EAAE1B,EAAE0B,EAAE3B,EAAE2B,IAAId,KAAKql4C,iBAAiBtE,QAAQjg4C,EAAEf,EAAEV,GAAGW,KAAK0kG,SAAS7hG,KAAK8K,IAAI3N,KAAK0kG,SAAS7hG,KAAKmjH,IAAIjmH,GAAG8C,KAAKmjH,IAAI3mH,GAAI,CAAC,EAAE4qvC,GAAGvqvC,UAAU676B,OAAO,SAASn86B,GAAGY,KAAKql4C,kBAAkBrl4C,KAAKql4C,iBAAiBr5tC,cAAchsK,KAAKyl4C,mBAAmBzl4C,KAAKyl4C,kBAAkBv92C,OAAOloB,KAAKyl4C,kBAAkB9y0B,WAAW3yjB,KAAKql4C,kBAAkBrl4C,KAAKyl4C,kBAAkBrm4C,EAAEsm4C,mBAAmB1l4C,KAAKql4C,iBAAiBrl4C,KAAKol4C,sBAAsBpl4C,KAAKghe,WAAW255B,kBAAmB,EAAE1wI,GAAGvqvC,UAAU0+I,QAAQ,WAAWp+I,KAAKyl4C,mBAAmBzl4C,KAAKyl4C,kBAAkBrnvC,SAAU,EAAE6rmC,GAAGvqvC,UAAUkl4C,WAAW,SAASxl4C,EAAED,GAAG,IAAIY,EAAEC,KAAK2l4C,eAAe9i4C,KAAKyK,MAAMnO,EAAEwgC,MAAMxgC,EAAEwgC,KAAKtgC,EAAEyD,EAAE9C,KAAKghe,WAAW235B,oBAAoB543C,EAAEC,KAAK2/B,KAAK3/B,KAAK2/B,KAAK,GAAG,EAAE,GAAGvgC,EAAE6M,IAAI5M,EAAG,EAAE4qvC,GAAGvqvC,UAAUml4C,WAAW,SAASzl4C,EAAED,EAAEY,GAAG,OAAO,IAAIi0B,GAAG50B,EAAED,EAAE,EAAE,IAAIwqvC,GAAG,SAASvqvC,EAAED,EAAEY,EAAEV,EAAEuB,EAAEI,GAAGhB,KAAKghe,WAAW5he,EAAEY,KAAKuM,KAAKpN,EAAEa,KAAK2l4C,eAAe5l4C,EAAEC,KAAK2/B,KAAKtgC,EAAEW,KAAK41I,QAAQ50I,EAAEhB,KAAK4l4C,uBAAuB,IAAIhl4C,EAAEZ,KAAK6l4C,wBAAwB,IAAIjl4C,CAAE,EAAE+ovC,GAAGjqvC,UAAU4l4C,mBAAmB,SAASlm4C,EAAED,EAAEY,GAAG,IAAIV,EAAEW,KAAK4l4C,uBAAuBvl4C,OAAOL,KAAK4l4C,uBAAuB/2wC,OAAOzvH,GAAGY,KAAK6l4C,wBAAwBh3wC,OAAOzvH,GAAGY,KAAK8l4C,gBAAgBzm4C,EAAED,EAAED,EAAEqi8B,UAAUri8B,EAAEqi8B,SAASxh8B,KAAK41I,SAAS71I,EAAG,EAAE4pvC,GAAGjqvC,UAAU8l4C,iBAAiB,SAASpm4C,EAAED,EAAEY,EAAEV,EAAEuB,GAAGZ,KAAK8l4C,gBAAgB1m4C,EAAED,EAAEY,EAAEyh8B,UAAUzh8B,EAAEyh8B,SAASxh8B,KAAK41I,SAASh1I,EAAG,EAAE+ovC,GAAGjqvC,UAAUom4C,gBAAgB,SAAS1m4C,EAAED,EAAEY,EAAEV,GAAG,GAAGA,GAAGU,EAAE,CAAC,IAAIa,EAAEvB,EAAEU,EAAE8N,KAAK7M,EAAE3B,EAAEU,EAAEulO,KAAKhlO,EAAEjB,EAAEU,EAAE4N,KAAK,GAAG/M,GAAGI,GAAGV,EAAE,IAAI,IAAIQ,EAAE1B,EAAE0B,EAAE3B,EAAE2B,IAAId,KAAK4l4C,uBAAuB7E,QAAQjg4C,EAAEE,EAAEyjrC,GAAG,GAAGzjrC,EAAEyjrC,GAAG,GAAGzjrC,EAAEiV,GAAG,GAAGjV,EAAEiV,GAAG,GAAGrV,EAAE6jrC,GAAG,GAAG7jrC,EAAE6jrC,GAAG,GAAG7jrC,EAAEqV,GAAG,GAAGrV,EAAEqV,GAAG,GAAGjV,EAAE4tH,WAAWhuH,EAAEguH,YAAY5uH,KAAK6l4C,wBAAwB9E,QAAQjg4C,EAAEE,EAAEyjrC,GAAG,GAAGzjrC,EAAEyjrC,GAAG,GAAGzjrC,EAAEiV,GAAG,GAAGjV,EAAEiV,GAAG,GAAG3V,EAAEmkrC,GAAG,GAAGnkrC,EAAEmkrC,GAAG,GAAGnkrC,EAAE2V,GAAG,GAAG3V,EAAE2V,GAAG,GAAGjV,EAAE4tH,WAAWtuH,EAAEsuH,WAAY,CAAC,EAAE+6nC,GAAGjqvC,UAAU676B,OAAO,SAASn86B,GAAGY,KAAK4l4C,wBAAwB5l4C,KAAK4l4C,uBAAuB55tC,aAAahsK,KAAK6l4C,yBAAyB7l4C,KAAK6l4C,wBAAwB75tC,cAAchsK,KAAK+l4C,wBAAwB3m4C,EAAEsm4C,mBAAmB1l4C,KAAK4l4C,uBAAuB9z2C,GAAG4u2C,QAAQ1g4C,KAAKghe,WAAW255B,kBAAkB363C,KAAKgm4C,yBAAyB5m4C,EAAEsm4C,mBAAmB1l4C,KAAK6l4C,wBAAwB/z2C,GAAG4u2C,QAAQ1g4C,KAAKghe,WAAW255B,kBAAmB,EAAEhxI,GAAGjqvC,UAAU0+I,QAAQ,WAAWp+I,KAAKgm4C,0BAA0Bhm4C,KAAKgm4C,yBAAyB5nvC,UAAUp+I,KAAK+l4C,yBAAyB/l4C,KAAK+l4C,wBAAwB3nvC,SAAU,EAAE,IAAIlnH,GAAG,SAAS93B,EAAED,EAAEY,GAAGC,KAAKim4C,QAAQ,CAAC,EAAEjm4C,KAAKkm4C,SAAS,GAAG,IAAI7m4C,EAAE,GAAG,IAAI,IAAIuB,KAAKxB,EAAE413C,MAAMuJ,QAAQ,GAAGx+3C,EAAEa,GAAG,CAAC,IAAII,EAAE5B,EAAE413C,MAAM7x3C,IAAIvC,GAAG,GAAGI,aAAa8c,IAAInH,GAAG3V,EAAEw4C,SAAS0k1C,eAAe,CAAC,IAAI593C,EAAE23B,GAAGr3B,EAAExB,EAAEmN,MAAMzL,EAAEE,EAAEG,MAAMkB,EAAErB,EAAEw4C,SAAS0k1C,cAAc3x3C,KAAK/J,EAAExB,EAAEw4C,SAASms1C,eAAe7i4C,EAAE9B,EAAEw4C,SAAS0k1C,cAAc,iBAAiBr93C,EAAE,gBAAgBiC,GAAG,4BAA4BA,EAAE,GAAG,aAAahC,EAAEshB,KAAKpiB,KAAKim4C,QAAQrl4C,GAAGC,EAAE,IAAIw2B,GAAGv2B,EAAEK,MAAMb,GAAG,IAAI62B,GAAGr2B,EAAEK,MAAMb,EAAE+B,GAAGhD,EAAEwC,KAAK,MAAMjB,QAAQ,GAAG,WAAWE,EAAEshB,MAAMvhB,EAAE,CAAC,IAAI+B,EAAEgnvC,GAAGhpvC,EAAEyB,EAAE,UAAUrC,KAAKim4C,QAAQrl4C,GAAGC,EAAE,IAAI8ovC,GAAG7ovC,EAAEuB,EAAEG,EAAErD,EAAEyD,EAAExD,EAAEmsB,IAAI,IAAIsM,GAAG/2B,EAAER,EAAE+B,EAAEO,GAAGvD,EAAEwC,KAAK,MAAMjB,EAAG,KAAM,CAAC,IAAI8B,EAAEknvC,GAAGhpvC,EAAEyB,EAAE,aAAarC,KAAKim4C,QAAQrl4C,GAAG,IAAIqpvC,GAAGnpvC,EAAER,EAAE+B,EAAEG,EAAErD,EAAEuD,GAAGrD,EAAEwC,KAAK,MAAMjB,EAAG,CAAC,CAAC,CAACZ,KAAKgrJ,SAAS3rJ,EAAEktC,OAAO1/B,KAAK,GAAI,EAAEqqB,GAAGx3B,UAAU2l2B,YAAY,SAASjm2B,GAAG,IAAID,EAAEa,KAAKim4C,QAAQ7m4C,GAAG,OAAOD,aAAa04B,IAAI14B,aAAa8qvC,GAAG9qvC,EAAEulG,SAAS,CAAC,EAAExtE,GAAGx3B,UAAUym4C,oBAAoB,SAAS/m4C,EAAED,EAAEY,EAAEV,EAAEuB,GAAG,IAAI,IAAII,KAAKhB,KAAKim4C,QAAQ,CAAC,IAAI3l4C,EAAEN,KAAKim4C,QAAQjl4C,IAAIV,aAAau3B,IAAIv3B,aAAa2pvC,IAAI3pvC,aAAaqpvC,KAAKrpvC,EAAEgl4C,mBAAmBlm4C,EAAED,EAAEY,EAAEV,EAAEuB,EAAG,CAAC,EAAEs2B,GAAGx3B,UAAUwl4C,4BAA4B,SAAS9l4C,EAAED,GAAG,IAAI,IAAIY,KAAKC,KAAKim4C,QAAQ,CAAC,IAAI5m4C,EAAEW,KAAKim4C,QAAQlm4C,GAAGV,aAAag4B,IAAIh4B,EAAE6l4C,4BAA4B9l4C,EAAED,EAAG,CAAC,EAAE+3B,GAAGx3B,UAAU0m4C,kBAAkB,SAAShn4C,EAAED,EAAEY,EAAEV,EAAEuB,GAAG,IAAII,GAAE,EAAG,IAAI,IAAIV,KAAKlB,EAAE,IAAI,IAAI0B,EAAE,EAAEuB,EAAElD,EAAE4gP,aAAaz/O,GAAGQ,EAAEuB,EAAEhC,OAAOS,GAAG,EAAE,CAAC,IAAI0B,EAAEH,EAAEvB,GAAGgC,EAAE/C,EAAEoyE,QAAQ3vE,EAAEwa,OAAO,IAAI,IAAInc,KAAKb,KAAKim4C,QAAQ,CAAC,IAAIrj4C,EAAE5C,KAAKim4C,QAAQpl4C,GAAG,IAAI+B,aAAai1B,IAAIj1B,aAAaqnvC,IAAIrnvC,aAAa+mvC,MAAK,IAAK/mvC,EAAEo+d,WAAW255B,iBAAiB,CAAC,IAAIj43C,EAAErD,EAAE213C,MAAM7x3C,IAAItC,GAAG+B,EAAEo+d,WAAWt+d,EAAEvB,MAAMyB,EAAE4i4C,iBAAiBhj4C,EAAEgkC,MAAMhkC,EAAEikC,IAAI3jC,EAAE1D,EAAEkB,GAAGM,GAAGI,GAAE,CAAG,CAAC,CAAC,CAAC,OAAOA,CAAC,EAAEk2B,GAAGx3B,UAAUskI,QAAQ,WAAW,IAAI5kI,EAAE,GAAG,IAAI,IAAID,KAAKa,KAAKim4C,QAAQ,CAAC,IAAIlm4C,EAAEC,KAAKim4C,QAAQ9m4C,IAAIY,aAAao3B,IAAIp3B,aAAas3B,KAAKj4B,EAAEyC,KAAKtB,MAAMnB,EAAEW,EAAEo4T,aAAa9oS,KAAI,SAAUjwB,GAAG,MAAO,uBAAuBA,CAAE,IAAI,CAAC,OAAOA,CAAC,EAAE83B,GAAGx3B,UAAU2m4C,oBAAoB,WAAW,IAAIjn4C,EAAE,GAAG,IAAI,IAAID,KAAKa,KAAKim4C,QAAQ,CAAC,IAAIlm4C,EAAEC,KAAKim4C,QAAQ9m4C,GAAG,GAAGY,aAAa83B,IAAI93B,aAAakqvC,GAAG,IAAI,IAAI5qvC,EAAE,EAAEA,EAAEU,EAAEql4C,sBAAsB/k4C,OAAOhB,IAAID,EAAEyC,KAAK9B,EAAEql4C,sBAAsB/l4C,GAAGqL,WAAW,GAAG3K,aAAa4pvC,GAAG,IAAI,IAAI/ovC,EAAE,EAAEA,EAAEkxB,GAAG4u2C,QAAQrg4C,OAAOO,IAAIxB,EAAEyC,KAAKiwB,GAAG4u2C,QAAQ9/3C,GAAG8J,KAAM,CAAC,OAAOtL,CAAC,EAAE83B,GAAGx3B,UAAU4m4C,kBAAkB,WAAW,IAAIln4C,EAAE,GAAG,IAAI,IAAID,KAAKa,KAAKim4C,QAAQ,CAAC,IAAIlm4C,EAAEC,KAAKim4C,QAAQ9m4C,GAAG,GAAGY,aAAao3B,IAAIp3B,aAAas3B,IAAIt3B,aAAakqvC,GAAG,IAAI,IAAI5qvC,EAAE,EAAEuB,EAAEb,EAAEo4T,aAAa94T,EAAEuB,EAAEP,OAAOhB,GAAG,EAAED,EAAEyC,KAAKjB,EAAEvB,GAAI,CAAC,OAAOD,CAAC,EAAE83B,GAAGx3B,UAAU6m4C,sBAAsB,WAAW,OAAOvm4C,KAAKkm4C,QAAQ,EAAEhv2C,GAAGx3B,UAAUy8J,YAAY,SAAS/8J,EAAED,GAAG,IAAIY,EAAE,GAAG,IAAI,IAAIV,KAAKW,KAAKim4C,QAAQ,CAAC,IAAIrl4C,EAAEZ,KAAKim4C,QAAQ5m4C,GAAG,GAAGuB,aAAau2B,IAAIv2B,aAAay2B,IAAIz2B,aAAaqpvC,GAAG,IAAI,IAAIjpvC,EAAE,EAAEV,EAAEM,EAAEu3T,aAAan3T,EAAEV,EAAED,OAAOW,GAAG,EAAE,CAAC,IAAIF,EAAER,EAAEU,GAAG,GAAG7B,EAAE2B,GAAG,CAAC,IAAIuB,EAAEzB,EAAEik4C,WAAWzl4C,EAAED,EAAE2B,GAAGA,GAAGf,EAAE8B,KAAK,CAAC6I,KAAK5J,EAAE04C,SAASn6C,EAAEolU,QAAQpiU,GAAI,CAAC,CAAC,CAAC,OAAOtC,CAAC,EAAEm3B,GAAGx3B,UAAU+3L,YAAY,SAASr4L,EAAED,EAAEY,EAAEV,GAAG,IAAI,IAAIuB,EAAE,EAAEI,EAAE7B,EAAEyB,EAAEI,EAAEX,OAAOO,GAAG,EAAE,CAAC,IAAIN,EAAEU,EAAEJ,GAAGE,EAAER,EAAEoK,KAAKrI,EAAE/B,EAAEk5C,SAASx5C,KAAKim4C,QAAQ5j4C,GAAGui4C,WAAWtk4C,EAAEmkU,QAAQplU,EAAEU,EAAEoD,IAAId,GAAGvB,EAAG,CAAC,EAAEo2B,GAAGx3B,UAAU8m4C,mBAAmB,SAASpn4C,GAAG,IAAI,IAAID,KAAKa,KAAKkm4C,SAAS,GAAGlm4C,KAAKim4C,QAAQ,CAAC,IAAIlm4C,EAAEC,KAAKim4C,QAAQ9m4C,GAAG,GAAGC,GAAGW,aAAa4pvC,GAAG,CAAC,IAAItqvC,EAAE,IAAID,EAAE4+3C,UAAUj+3C,EAAEgm4C,wBAAwBhm4C,EAAEim4C,yBAAyB3m4C,GAAGW,KAAKkm4C,SAASrk4C,KAAKxC,EAAG,MAAOU,aAAa83B,IAAI93B,aAAakqvC,KAAKlqvC,EAAE0l4C,mBAAmBzl4C,KAAKkm4C,SAASrk4C,KAAK9B,EAAE0l4C,kBAAmB,CAAC,EAAEvu2C,GAAGx3B,UAAU676B,OAAO,SAASn86B,GAAG,IAAI,IAAID,KAAKa,KAAKim4C,QAAQ,CAAC,IAAIlm4C,EAAEC,KAAKim4C,QAAQ9m4C,IAAIY,aAAa83B,IAAI93B,aAAakqvC,IAAIlqvC,aAAa4pvC,KAAK5pvC,EAAEw76B,OAAOn86B,EAAG,CAACY,KAAKwm4C,oBAAqB,EAAEtv2C,GAAGx3B,UAAU0+I,QAAQ,WAAW,IAAI,IAAIh/I,KAAKY,KAAKim4C,QAAQ,CAAC,IAAI9m4C,EAAEa,KAAKim4C,QAAQ7m4C,IAAID,aAAa04B,IAAI14B,aAAa8qvC,IAAI9qvC,aAAawqvC,KAAKxqvC,EAAEi/I,SAAU,CAAC,EAAE,IAAIismC,GAAG,SAASjrvC,EAAED,EAAEY,QAAG,IAASA,IAAIA,EAAE,WAAW,OAAO,CAAE,GAAGC,KAAKym4C,sBAAsB,CAAC,EAAE,IAAI,IAAIpn4C,EAAE,EAAEuB,EAAExB,EAAEC,EAAEuB,EAAEP,OAAOhB,GAAG,EAAE,CAAC,IAAI2B,EAAEJ,EAAEvB,GAAGW,KAAKym4C,sBAAsBzl4C,EAAEuqB,IAAI,IAAI2L,GAAGl2B,EAAE7B,EAAEY,EAAG,CAACC,KAAK0m4C,aAAY,EAAG1m4C,KAAK2m4C,YAAY,IAAI/z2C,GAAG5yB,KAAK4m4C,cAAc,CAAE,EAAE,SAAS3u2C,GAAG74B,EAAED,GAAG,MAAO,CAAC,eAAe,CAAC,WAAW,eAAe,CAAC,WAAW,aAAa,CAAC,cAAc,aAAa,CAAC,cAAc,kBAAkB,CAAC,cAAc,kBAAkB,CAAC,cAAc,iBAAiB,CAAC,aAAa,iBAAiB,CAAC,aAAa,kBAAkB,CAAC,cAAc,kBAAkB,CAAC,cAAc,iBAAiB,CAAC,YAAY,eAAe,CAAC,aAAa,eAAe,iBAAiB,oBAAoB,eAAe,CAAC,aAAa,eAAe,iBAAiB,oBAAoB,yBAAyB,CAAC,aAAa,eAAe,iBAAiB,qBAAqBC,IAAI,CAACA,EAAEqN,QAAQtN,EAAE,IAAI,IAAIsN,QAAQ,KAAK,KAAK,CAAC,SAASm9uC,GAAGxqvC,EAAED,EAAEY,GAAG,IAAIV,EAAE,CAACkuH,MAAM,CAAC1lH,OAAO+Z,GAAGil3C,UAAUpl3C,IAAIsoI,OAAO,CAACliJ,OAAO0Y,GAAGsm3C,UAAUjl3C,KAAKhhB,EAAE,SAASxB,GAAG,MAAO,CAAC,eAAe,CAACyI,OAAOiX,GAAG+n3C,UAAU/n3C,IAAI,eAAe,CAACjX,OAAOiX,GAAG+n3C,UAAU/n3C,IAAI,yBAAyB,CAACjX,OAAOiX,GAAG+n3C,UAAU/n3C,KAAK1f,EAAE,CAAzJ,CAA2JA,GAAG,OAAOwB,GAAGA,EAAEb,IAAIV,EAAEF,GAAGY,EAAE,CAACsqvC,GAAG3qvC,UAAUym4C,oBAAoB,SAAS/m4C,EAAED,EAAEY,EAAEV,EAAEuB,EAAEI,GAAG,IAAI,IAAIV,KAAKN,KAAKym4C,sBAAsBzm4C,KAAKym4C,sBAAsBnm4C,GAAG6l4C,oBAAoB/m4C,EAAED,EAAEE,EAAEuB,EAAEI,QAAG,IAAS7B,EAAEosB,IAAIvrB,KAAK2m4C,YAAYxh3C,IAAIhmB,EAAEosB,GAAGxrB,EAAEC,KAAK4m4C,cAAcxn4C,GAAGY,KAAK4m4C,cAAcxn4C,EAAEY,KAAK0m4C,aAAY,CAAG,EAAEr8I,GAAG3qvC,UAAU0m4C,kBAAkB,SAAShn4C,EAAED,EAAEY,EAAEV,GAAG,IAAI,IAAIuB,EAAE,EAAEI,EAAEjB,EAAEa,EAAEI,EAAEX,OAAOO,GAAG,EAAE,CAAC,IAAIN,EAAEU,EAAEJ,GAAGZ,KAAK0m4C,YAAY1m4C,KAAKym4C,sBAAsBnm4C,EAAEirB,IAAI662C,kBAAkBhn4C,EAAEY,KAAK2m4C,YAAYxn4C,EAAEmB,EAAEjB,IAAIW,KAAK0m4C,WAAY,CAAC,EAAEr8I,GAAG3qvC,UAAUyD,IAAI,SAAS/D,GAAG,OAAOY,KAAKym4C,sBAAsBrn4C,EAAE,EAAEirvC,GAAG3qvC,UAAU676B,OAAO,SAASn86B,GAAG,GAAGY,KAAK0m4C,YAAY,CAAC,IAAI,IAAIvn4C,KAAKa,KAAKym4C,sBAAsBzm4C,KAAKym4C,sBAAsBtn4C,GAAGo86B,OAAOn86B,GAAGY,KAAK0m4C,aAAY,CAAG,CAAC,EAAEr8I,GAAG3qvC,UAAU0+I,QAAQ,WAAW,IAAI,IAAIh/I,KAAKY,KAAKym4C,sBAAsBzm4C,KAAKym4C,sBAAsBrn4C,GAAGg/I,SAAU,EAAEjsI,GAAG,iBAAiBglB,IAAIhlB,GAAG,2BAA2BklB,IAAIllB,GAAG,yBAAyB0lB,IAAI1lB,GAAG,4BAA4Bw3uC,IAAIx3uC,GAAG,4BAA4B83uC,IAAI93uC,GAAG,uBAAuB+kB,GAAG,CAACk8vC,KAAK,CAAC,cAAcjhxC,GAAG,0BAA0Bk4uC,IAAI,IAAIL,GAAGnnvC,KAAK6yF,IAAI,EAAE,IAAI,EAAE7+D,IAAImztC,GAAG,EAAE,SAASG,GAAG/qvC,GAAG,IAAI,IAAID,EAAE,KAAKC,EAAEmrK,OAAOxqK,EAAEX,EAAE0n4C,eAAezn4C,EAAE,EAAEA,EAAEU,EAAEM,OAAOhB,IAAI,IAAI,IAAIuB,EAAEb,EAAEV,GAAG2B,EAAE,EAAEA,EAAEJ,EAAEP,OAAOW,IAAI,CAAC,IAAIV,EAAEM,EAAEI,GAAGF,EAAE+B,KAAKogD,MAAM3iD,EAAE2D,EAAE9E,GAAGkD,EAAEQ,KAAKogD,MAAM3iD,EAAE0C,EAAE7D,GAAGmB,EAAE2D,EAAEnB,EAAEhC,EAAE+1B,GAAGmztC,IAAI1pvC,EAAE0C,EAAEF,EAAET,EAAEw0B,GAAGmztC,KAAKlpvC,EAAER,EAAE2D,GAAGnD,EAAER,EAAE2D,EAAE,GAAG5B,EAAE/B,EAAE0C,GAAGX,EAAE/B,EAAE0C,EAAE,IAAI6B,EAAE,uEAAwE,CAAC,OAAO9E,CAAC,CAAC,SAASqqvC,GAAGhrvC,EAAED,GAAG,MAAO,CAACoN,KAAKnN,EAAEmN,KAAKgf,GAAGnsB,EAAEmsB,GAAGid,WAAWppC,EAAEopC,WAAWzD,SAAS5lC,EAAEgrvC,GAAG/qvC,GAAG,GAAG,CAAC,SAASm4B,GAAGn4B,EAAED,EAAEY,EAAEV,EAAEuB,GAAGxB,EAAE0h4C,YAAY,EAAE3h4C,GAAGE,EAAE,GAAG,EAAE,EAAEU,GAAGa,EAAE,GAAG,EAAG,CAAC,IAAI2qvC,GAAG,SAASnsvC,GAAGY,KAAK2/B,KAAKvgC,EAAEugC,KAAK3/B,KAAK+m4C,YAAY3n4C,EAAE2n4C,YAAY/m4C,KAAK89B,OAAO1+B,EAAE0+B,OAAO99B,KAAKymJ,SAASzmJ,KAAK89B,OAAOzO,KAAI,SAAUjwB,GAAG,OAAOA,EAAEmsB,EAAG,IAAGvrB,KAAKgd,MAAM5d,EAAE4d,MAAMhd,KAAKgn4C,YAAW,EAAGhn4C,KAAKin4C,kBAAkB,IAAIjo3C,GAAGhf,KAAKkn4C,WAAW,IAAIjo3C,GAAGjf,KAAKkrV,SAAS,IAAIh6T,GAAGlxB,KAAKym4C,sBAAsB,IAAIp8I,GAAGjrvC,EAAE0+B,OAAO1+B,EAAEugC,MAAM3/B,KAAKmn4C,uBAAuBnn4C,KAAK89B,OAAOjR,QAAO,SAAUztB,GAAG,OAAOA,EAAEu73C,kBAAmB,IAAGtr2C,KAAI,SAAUjwB,GAAG,OAAOA,EAAEmsB,EAAG,GAAG,EAAE,SAAS2M,GAAG94B,EAAED,GAAG,IAAI,IAAIY,EAAE,EAAEA,EAAEX,EAAEiB,OAAON,IAAI,GAAGuqvC,GAAGnrvC,EAAEC,EAAEW,IAAI,OAAO,EAAG,IAAI,IAAIV,EAAE,EAAEA,EAAEF,EAAEkB,OAAOhB,IAAI,GAAGirvC,GAAGlrvC,EAAED,EAAEE,IAAI,OAAO,EAAG,QAASy4B,GAAG14B,EAAED,EAAE,CAAC,SAAS4qvC,GAAG3qvC,EAAED,EAAEY,GAAG,QAASuqvC,GAAGlrvC,EAAED,MAAM0qvC,GAAG1qvC,EAAEC,EAAEW,EAAE,CAAC,SAAS03B,GAAGr4B,EAAED,GAAG,GAAG,IAAIC,EAAEiB,OAAO,OAAOm2rC,GAAGr3rC,EAAEC,EAAE,IAAI,IAAI,IAAIW,EAAE,EAAEA,EAAEZ,EAAEkB,OAAON,IAAI,IAAI,IAAIV,EAAEF,EAAEY,GAAGa,EAAE,EAAEA,EAAEvB,EAAEgB,OAAOO,IAAI,GAAG0pvC,GAAGlrvC,EAAEC,EAAEuB,IAAI,OAAO,EAAG,IAAI,IAAII,EAAE,EAAEA,EAAE5B,EAAEiB,OAAOW,IAAI,GAAGw1rC,GAAGr3rC,EAAEC,EAAE4B,IAAI,OAAO,EAAG,IAAI,IAAIV,EAAE,EAAEA,EAAEnB,EAAEkB,OAAOC,IAAI,GAAGw3B,GAAG14B,EAAED,EAAEmB,IAAI,OAAO,EAAG,OAAO,CAAE,CAAC,SAASo2B,GAAGt3B,EAAED,EAAEY,GAAG,GAAGX,EAAEiB,OAAO,EAAE,CAAC,GAAGy3B,GAAG14B,EAAED,GAAG,OAAO,EAAG,IAAI,IAAIE,EAAE,EAAEA,EAAEF,EAAEkB,OAAOhB,IAAI,GAAGwqvC,GAAG1qvC,EAAEE,GAAGD,EAAEW,GAAG,OAAO,CAAE,CAAC,IAAI,IAAIa,EAAE,EAAEA,EAAExB,EAAEiB,OAAOO,IAAI,GAAGipvC,GAAGzqvC,EAAEwB,GAAGzB,EAAEY,GAAG,OAAO,EAAG,OAAO,CAAE,CAAC,SAAS+3B,GAAG14B,EAAED,GAAG,GAAG,IAAIC,EAAEiB,QAAQ,IAAIlB,EAAEkB,OAAO,OAAO,EAAG,IAAI,IAAIN,EAAE,EAAEA,EAAEX,EAAEiB,OAAO,EAAEN,IAAI,IAAI,IAAIV,EAAED,EAAEW,GAAGa,EAAExB,EAAEW,EAAE,GAAGiB,EAAE,EAAEA,EAAE7B,EAAEkB,OAAO,EAAEW,IAAI,GAAG8ovC,GAAGzqvC,EAAEuB,EAAEzB,EAAE6B,GAAG7B,EAAE6B,EAAE,IAAI,OAAO,EAAG,OAAO,CAAE,CAAC,SAAS8ovC,GAAG1qvC,EAAED,EAAEY,EAAEV,GAAG,OAAOmE,EAAEpE,EAAEW,EAAEV,KAAKmE,EAAErE,EAAEY,EAAEV,IAAImE,EAAEpE,EAAED,EAAEY,KAAKyD,EAAEpE,EAAED,EAAEE,EAAE,CAAC,SAASwqvC,GAAGzqvC,EAAED,EAAEY,GAAG,IAAIV,EAAEU,EAAEA,EAAE,GAAG,IAAIZ,EAAEkB,OAAO,OAAOjB,EAAEsw3C,QAAQvw3C,EAAE,IAAIE,EAAE,IAAI,IAAIuB,EAAE,EAAEA,EAAEzB,EAAEkB,OAAOO,IAAI,GAAGsqvC,GAAG9rvC,EAAED,EAAEyB,EAAE,GAAGzB,EAAEyB,IAAIvB,EAAE,OAAO,EAAG,OAAO,CAAE,CAAC,SAAS6rvC,GAAG9rvC,EAAED,EAAEY,GAAG,IAAIV,EAAEF,EAAEuw3C,QAAQ3v3C,GAAG,GAAG,IAAIV,EAAE,OAAOD,EAAEsw3C,QAAQvw3C,GAAG,IAAIyB,IAAIxB,EAAE6E,EAAE9E,EAAE8E,IAAIlE,EAAEkE,EAAE9E,EAAE8E,IAAI7E,EAAE4D,EAAE7D,EAAE6D,IAAIjD,EAAEiD,EAAE7D,EAAE6D,IAAI3D,EAAE,OAAOD,EAAEsw3C,QAAQ9u3C,EAAE,EAAEzB,EAAEyB,EAAE,EAAEb,EAAEA,EAAEm1B,IAAI/1B,GAAG6v3C,MAAMpu3C,GAAGqmI,KAAK9nI,GAAG,CAAC,SAASq3rC,GAAGp3rC,EAAED,GAAG,IAAI,IAAIY,EAAEV,EAAEuB,EAAEI,GAAE,EAAGV,EAAE,EAAEA,EAAElB,EAAEiB,OAAOC,IAAI,IAAI,IAAIQ,EAAE,EAAEuB,GAAGtC,EAAEX,EAAEkB,IAAID,OAAO,EAAES,EAAEf,EAAEM,OAAOgC,EAAEvB,KAAKzB,EAAEU,EAAEe,IAAIkC,EAAE7D,EAAE6D,IAAIpC,EAAEb,EAAEsC,IAAIW,EAAE7D,EAAE6D,GAAG7D,EAAE8E,GAAGrD,EAAEqD,EAAE5E,EAAE4E,IAAI9E,EAAE6D,EAAE3D,EAAE2D,IAAIpC,EAAEoC,EAAE3D,EAAE2D,GAAG3D,EAAE4E,IAAIjD,GAAGA,GAAG,OAAOA,CAAC,CAAC,SAASspvC,GAAGlrvC,EAAED,GAAG,IAAI,IAAIY,GAAE,EAAGV,EAAE,EAAEuB,EAAExB,EAAEiB,OAAO,EAAEhB,EAAED,EAAEiB,OAAOO,EAAEvB,IAAI,CAAC,IAAI2B,EAAE5B,EAAEC,GAAGiB,EAAElB,EAAEwB,GAAGI,EAAEgC,EAAE7D,EAAE6D,GAAG1C,EAAE0C,EAAE7D,EAAE6D,GAAG7D,EAAE8E,GAAG3D,EAAE2D,EAAEjD,EAAEiD,IAAI9E,EAAE6D,EAAEhC,EAAEgC,IAAI1C,EAAE0C,EAAEhC,EAAEgC,GAAGhC,EAAEiD,IAAIlE,GAAGA,EAAG,CAAC,OAAOA,CAAC,CAAC,SAASmqvC,GAAG9qvC,EAAED,EAAEY,GAAG,IAAIV,EAAEU,EAAE,GAAGa,EAAEb,EAAE,GAAG,GAAGX,EAAE6E,EAAE5E,EAAE4E,GAAG9E,EAAE8E,EAAE5E,EAAE4E,GAAG7E,EAAE6E,EAAErD,EAAEqD,GAAG9E,EAAE8E,EAAErD,EAAEqD,GAAG7E,EAAE4D,EAAE3D,EAAE2D,GAAG7D,EAAE6D,EAAE3D,EAAE2D,GAAG5D,EAAE4D,EAAEpC,EAAEoC,GAAG7D,EAAE6D,EAAEpC,EAAEoC,EAAE,OAAO,EAAG,IAAIhC,EAAEwC,EAAEpE,EAAED,EAAEY,EAAE,IAAI,OAAOiB,IAAIwC,EAAEpE,EAAED,EAAEY,EAAE,KAAKiB,IAAIwC,EAAEpE,EAAED,EAAEY,EAAE,KAAKiB,IAAIwC,EAAEpE,EAAED,EAAEY,EAAE,GAAG,CAAC,SAASkZ,GAAG7Z,EAAED,EAAEY,GAAG,IAAIV,EAAEF,EAAE613C,MAAM7x3C,IAAI/D,GAAG+B,MAAM,MAAO,aAAa9B,EAAE+iB,KAAK/iB,EAAE8B,MAAMpB,EAAE0m4C,sBAAsBtj4C,IAAIhE,EAAEosB,IAAI850B,YAAYjm2B,EAAE,CAAC,SAAS4Z,GAAG5Z,GAAG,OAAOyD,KAAK4yF,KAAKr2F,EAAE,GAAGA,EAAE,GAAGA,EAAE,GAAGA,EAAE,GAAG,CAAC,SAAS+Z,GAAG/Z,EAAED,EAAEY,EAAEV,EAAE2B,GAAG,IAAI7B,EAAE,KAAKA,EAAE,GAAG,OAAOC,EAAE,IAAIkB,EAAEM,EAAEq7xB,QAAQ98xB,GAAG6v3C,MAAMhu3C,GAAG,aAAajB,GAAGO,EAAE4u3C,SAAS7v3C,GAAG,IAAI,IAAIyB,EAAE,GAAGuB,EAAE,EAAEA,EAAEjD,EAAEiB,OAAOgC,IAAIvB,EAAEe,KAAKzC,EAAEiD,GAAG6yB,IAAI50B,IAAI,OAAOQ,CAAC,CAACyqvC,GAAG7rvC,UAAU0n4C,SAAS,SAASho4C,EAAED,EAAEY,GAAG,IAAIV,EAAEW,KAAK89B,OAAO,GAAGl9B,EAAE,GAAGI,EAAE,KAAK,WAAW3B,EAAEkN,OAAOvL,EAAE3B,EAAE6hI,OAAO/9H,IAAI,oBAAoB,IAAI,IAAI7C,EAAE,EAAEQ,EAAE1B,EAAEkB,EAAEQ,EAAET,OAAOC,GAAG,EAAE,CAAC,IAAI+B,EAAEvB,EAAER,GAAGkC,EAAEH,EAAE8vE,QAAQrvE,EAAET,EAAEkpB,GAAG1qB,EAAEwB,EAAE2a,MAAMpa,EAAEP,EAAEg/3C,iBAAiB3+3C,EAAE1C,KAAK89B,OAAO,GAAGoh2C,eAAezD,aAAaz43C,EAAEonvC,GAAG5nvC,EAAEE,GAAG,GAAG1C,KAAK89B,OAAO,GAAGoh2C,eAAery2C,OAAO,IAAItP,GAAGvd,KAAK2/B,MAAM38B,EAAEjD,GAAG,CAAC,IAAI4C,EAAE3B,EAAEA,EAAEszgB,SAAStxgB,EAAE,CAAC,EAAEjD,QAAG,EAAOqD,EAAE,CAACmoB,GAAGzoB,EAAE0lC,WAAWhmC,EAAEgmC,WAAWj8B,KAAK/J,EAAE+J,KAAK803C,iBAAiBz+3C,EAAEoa,MAAMnc,EAAEkkC,SAASriC,EAAEM,EAAE+hC,SAASoltC,GAAG3nvC,GAAGg/7B,SAAS,CAAC,EAAEwic,QAAQrh4C,GAAG/B,EAAEiB,KAAKuB,EAAG,CAAC,CAACpC,GAAGJ,EAAE2rC,MAAK,SAAUntC,EAAED,GAAG,OAAOC,EAAE4k4C,QAAQ7k4C,EAAE6k4C,OAAQ,IAAG,IAAI,IAAI/g4C,EAAE,EAAEd,EAAEvB,EAAEqC,EAAEd,EAAE9B,OAAO4C,GAAG,EAAE,CAAC,IAAIgB,EAAE9B,EAAEc,GAAGK,EAAEW,EAAE8gC,SAASxhC,EAAEU,EAAE+Y,MAAMpZ,EAAEK,EAAEo93C,iBAAiBx83C,EAAEzF,EAAEmE,GAAG4uE,QAAQnyE,KAAK40X,WAAW3wX,EAAEX,EAAEC,EAAExD,GAAGZ,EAAE2iO,aAAai5B,OAAOl2P,EAAEvB,EAAEC,EAAEK,EAAE5D,KAAKgd,MAAO,CAAC,EAAEuuuC,GAAG7rvC,UAAU6uE,OAAO,SAASnvE,EAAED,EAAEY,GAAGC,KAAKqn4C,qBAAqBhn4C,QAAQL,KAAKym4C,sBAAsBL,kBAAkBhn4C,EAAED,EAAEa,KAAKqn4C,qBAAqBtn4C,EAAG,EAAEwrvC,GAAG7rvC,UAAU2oE,QAAQ,WAAW,OAAO,IAAIroE,KAAKin4C,kBAAkB5m4C,MAAM,EAAEkrvC,GAAG7rvC,UAAU4n4C,cAAc,WAAW,OAAQtn4C,KAAKun4C,UAAUvn4C,KAAKym4C,sBAAsBC,WAAW,EAAEn7I,GAAG7rvC,UAAU676B,OAAO,SAASn86B,GAAGY,KAAKun4C,WAAWvn4C,KAAKwn4C,mBAAmBpo4C,EAAEsm4C,mBAAmB1l4C,KAAKin4C,kBAAkBn32C,IAAI9vB,KAAKyn4C,YAAYro4C,EAAEso4C,kBAAkB1n4C,KAAKkn4C,aAAaln4C,KAAKym4C,sBAAsBlrd,OAAOn86B,GAAGY,KAAKun4C,UAAS,CAAG,EAAEh8I,GAAG7rvC,UAAU0+I,QAAQ,WAAWp+I,KAAKwn4C,qBAAqBxn4C,KAAKwn4C,mBAAmBppvC,UAAUp+I,KAAKyn4C,YAAYrpvC,UAAUp+I,KAAKym4C,sBAAsBrovC,UAAUp+I,KAAKkrV,SAAS9sM,UAAW,EAAEmtmC,GAAG7rvC,UAAUk1X,WAAW,SAASx1X,EAAED,EAAEY,EAAEV,GAAG,IAAI,IAAIuB,EAAE,EAAEI,EAAE7B,EAAEyB,EAAEI,EAAEX,OAAOO,GAAG,EAAE,IAAI,IAAIN,EAAE,EAAEQ,EAAEE,EAAEJ,GAAGN,EAAEQ,EAAET,OAAOC,GAAG,EAAE,CAAC,IAAI+B,EAAEvB,EAAER,GAAGkC,EAAEH,EAAE4B,EAAEnB,EAAET,EAAEW,EAAE,KAAKR,EAAE,GAAGA,GAAG,MAAMM,EAAE,GAAGA,GAAG,MAAM,CAAC,IAAIjC,EAAEb,KAAKkrV,SAAS24iC,eAAe,EAAE7j4C,KAAKin4C,kBAAkBjn4C,KAAKkn4C,WAAW9n4C,EAAE4k4C,SAASph4C,EAAE/B,EAAEkj4C,aAAaxs2C,GAAGv3B,KAAKin4C,kBAAkBzk4C,EAAEM,GAAG,GAAG,GAAGy0B,GAAGv3B,KAAKin4C,kBAAkBzk4C,EAAEM,EAAE,GAAG,GAAGy0B,GAAGv3B,KAAKin4C,kBAAkBzk4C,EAAEM,EAAE,EAAE,GAAGy0B,GAAGv3B,KAAKin4C,kBAAkBzk4C,EAAEM,GAAG,EAAE,GAAG9C,KAAKkn4C,WAAWpG,YAAYl+3C,EAAEA,EAAE,EAAEA,EAAE,GAAG5C,KAAKkn4C,WAAWpG,YAAYl+3C,EAAEA,EAAE,EAAEA,EAAE,GAAG/B,EAAEkj4C,cAAc,EAAElj4C,EAAEqj4C,iBAAiB,CAAE,CAAC,CAAClk4C,KAAKym4C,sBAAsBN,oBAAoBnm4C,KAAKin4C,kBAAkB5m4C,OAAOjB,EAAEW,EAAE,CAAC,EAAEV,EAAG,EAAE8S,GAAG,eAAeo5uC,GAAG,CAAC6nC,KAAK,CAAC,YAAY,IAAIl6wC,GAAG,IAAIkF,GAAG,CAAC,kBAAkB,IAAIJ,GAAGvP,GAAG0m3C,cAAc,sBAAsB972C,GAAG,CAAC272C,MAAM,IAAI522C,GAAG,CAAC,gBAAgB,IAAIJ,GAAGvP,GAAGgo3C,aAAa,kBAAkB,eAAe,IAAIz42C,GAAGvP,GAAGgo3C,aAAa,iBAAiB,cAAc,IAAIz42C,GAAGvP,GAAGgo3C,aAAa,gBAAgB,iBAAiB,IAAIz42C,GAAGvP,GAAGgo3C,aAAa,mBAAmB,mBAAmB,IAAIx42C,GAAGxP,GAAGgo3C,aAAa,qBAAqB,0BAA0B,IAAIx42C,GAAGxP,GAAGgo3C,aAAa,4BAA4B,qBAAqB,IAAIx42C,GAAGxP,GAAGgo3C,aAAa,uBAAuB,yBAAyB,IAAIx42C,GAAGxP,GAAGgo3C,aAAa,2BAA2B,sBAAsB,IAAIz42C,GAAGvP,GAAGgo3C,aAAa,wBAAwB,sBAAsB,IAAIz42C,GAAGvP,GAAGgo3C,aAAa,wBAAwB,wBAAwB,IAAIz42C,GAAGvP,GAAGgo3C,aAAa,4BAA4Bv1vC,OAAOhoH,IAAIK,GAAG,oBAAoByG,aAAaA,aAAavgB,MAAM,SAAS2Z,GAAGha,GAAG,OAAOA,EAAE,GAAG,EAAEA,EAAE,GAAG,EAAEA,EAAE,GAAG,EAAEA,EAAE,GAAG,EAAEA,EAAE,GAAG,EAAEA,EAAE,GAAG,EAAEA,EAAE,GAAG,EAAEA,EAAE,GAAG,EAAEA,EAAE,GAAG,EAAEA,EAAE,GAAG,EAAEA,EAAE,IAAI,EAAEA,EAAE,IAAI,EAAEA,EAAE,IAAI,EAAEA,EAAE,IAAI,EAAEA,EAAE,IAAI,EAAEA,EAAE,IAAI,EAAEA,CAAC,CAAC,SAASoa,GAAGpa,EAAED,EAAEY,GAAG,IAAIV,EAAEF,EAAE,GAAGyB,EAAEzB,EAAE,GAAG6B,EAAE7B,EAAE,GAAGmB,EAAEnB,EAAE,GAAG2B,EAAE3B,EAAE,GAAGkD,EAAElD,EAAE,GAAGqD,EAAErD,EAAE,GAAG2D,EAAE3D,EAAE,GAAG0B,EAAE1B,EAAE,GAAGyD,EAAEzD,EAAE,GAAGuD,EAAEvD,EAAE,IAAI6D,EAAE7D,EAAE,IAAIwD,EAAExD,EAAE,IAAIiE,EAAEjE,EAAE,IAAI8D,EAAE9D,EAAE,IAAIgD,EAAEhD,EAAE,IAAI8E,EAAElE,EAAE,GAAGuD,EAAEvD,EAAE,GAAGwD,EAAExD,EAAE,GAAG6D,EAAE7D,EAAE,GAAG,OAAOX,EAAE,GAAG6E,EAAE5E,EAAEiE,EAAExC,EAAEyC,EAAE1C,EAAE+C,EAAEjB,EAAEvD,EAAE,GAAG6E,EAAErD,EAAE0C,EAAEjB,EAAEkB,EAAEX,EAAEgB,EAAER,EAAEhE,EAAE,GAAG6E,EAAEjD,EAAEsC,EAAEd,EAAEe,EAAEb,EAAEkB,EAAEX,EAAE7D,EAAE,GAAG6E,EAAE3D,EAAEgD,EAAER,EAAES,EAAEP,EAAEY,EAAEzB,EAAE/C,EAAE,IAAI6E,EAAElE,EAAE,IAAIV,GAAGiE,EAAEvD,EAAE,IAAIe,GAAGyC,EAAExD,EAAE,IAAIc,GAAG+C,EAAE7D,EAAE,IAAI4C,EAAEvD,EAAE,GAAG6E,EAAErD,EAAE0C,EAAEjB,EAAEkB,EAAEX,EAAEgB,EAAER,EAAEhE,EAAE,GAAG6E,EAAEjD,EAAEsC,EAAEd,EAAEe,EAAEb,EAAEkB,EAAEX,EAAE7D,EAAE,GAAG6E,EAAE3D,EAAEgD,EAAER,EAAES,EAAEP,EAAEY,EAAEzB,EAAE/C,EAAE,IAAI6E,EAAElE,EAAE,IAAIV,GAAGiE,EAAEvD,EAAE,IAAIe,GAAGyC,EAAExD,EAAE,KAAKc,GAAG+C,EAAE7D,EAAE,KAAK4C,EAAEvD,EAAE,GAAG6E,EAAErD,EAAE0C,EAAEjB,EAAEkB,EAAEX,EAAEgB,EAAER,EAAEhE,EAAE,IAAI6E,EAAEjD,EAAEsC,EAAEd,EAAEe,EAAEb,EAAEkB,EAAEX,EAAE7D,EAAE,IAAI6E,EAAE3D,EAAEgD,EAAER,EAAES,EAAEP,EAAEY,EAAEzB,EAAE/C,EAAE,KAAK6E,EAAElE,EAAE,KAAKV,GAAGiE,EAAEvD,EAAE,KAAKe,GAAGyC,EAAExD,EAAE,KAAKc,GAAG+C,EAAE7D,EAAE,KAAK4C,EAAEvD,EAAE,IAAI6E,EAAErD,EAAE0C,EAAEjB,EAAEkB,EAAEX,EAAEgB,EAAER,EAAEhE,EAAE,IAAI6E,EAAEjD,EAAEsC,EAAEd,EAAEe,EAAEb,EAAEkB,EAAEX,EAAE7D,EAAE,IAAI6E,EAAE3D,EAAEgD,EAAER,EAAES,EAAEP,EAAEY,EAAEzB,EAAE/C,CAAC,CAACyD,KAAK68uC,QAAQ78uC,KAAK68uC,MAAM,WAAW,IAAI,IAAItgvC,EAAEgB,UAAUjB,EAAE,EAAEY,EAAEK,UAAUC,OAAON,KAAKZ,GAAGC,EAAEW,GAAGX,EAAEW,GAAG,OAAO8C,KAAK4yF,KAAKt2F,EAAE,GAAG,IAAIua,GAAGC,GAAGH,GAAG,SAASM,GAAG1a,EAAED,EAAEY,GAAG,IAAIV,EAAEF,EAAE,GAAGyB,EAAEzB,EAAE,GAAG6B,EAAE7B,EAAE,GAAGmB,EAAEnB,EAAE,GAAG,OAAOC,EAAE,GAAGW,EAAE,GAAGV,EAAEU,EAAE,GAAGa,EAAEb,EAAE,GAAGiB,EAAEjB,EAAE,IAAIO,EAAElB,EAAE,GAAGW,EAAE,GAAGV,EAAEU,EAAE,GAAGa,EAAEb,EAAE,GAAGiB,EAAEjB,EAAE,IAAIO,EAAElB,EAAE,GAAGW,EAAE,GAAGV,EAAEU,EAAE,GAAGa,EAAEb,EAAE,IAAIiB,EAAEjB,EAAE,IAAIO,EAAElB,EAAE,GAAGW,EAAE,GAAGV,EAAEU,EAAE,GAAGa,EAAEb,EAAE,IAAIiB,EAAEjB,EAAE,IAAIO,EAAElB,CAAC,CAACsa,GAAG,IAAIH,GAAG,GAAGA,IAAIyG,eAAetG,GAAG,GAAG,EAAEA,GAAG,GAAG,EAAEA,GAAG,GAAG,GAAG,WAAW,IAAIta,EAAE,IAAIma,GAAG,GAAGA,IAAIyG,eAAe5gB,EAAE,GAAG,EAAEA,EAAE,GAAG,EAAEA,EAAE,GAAG,EAAEA,EAAE,GAAG,EAAG,CAA3E,GAA+E,IAAIka,IAAI,WAAW,IAAIla,EAAE,IAAIma,GAAG,GAAGA,IAAIyG,eAAe5gB,EAAE,GAAG,EAAEA,EAAE,GAAG,EAAG,CAA7D,GAAiE,SAASA,GAAG,SAASD,EAAEA,GAAGC,EAAEQ,KAAKI,KAAKb,EAAEka,GAAI,CAAC,OAAOja,IAAID,EAAEK,UAAUJ,IAAID,EAAEO,UAAUJ,OAAOY,OAAOd,GAAGA,EAAEM,YAAYO,YAAYd,EAAEA,EAAEO,UAAUio4C,aAAa,SAASvo4C,GAAG,OAAO,IAAImsvC,GAAGnsvC,EAAE,EAAED,EAAEO,UAAUko4C,YAAY,SAASxo4C,GAAG,IAAID,EAAEC,EAAE,OAAO6Z,GAAG,gBAAgBjZ,KAAKb,GAAG8Z,GAAG,sBAAsBjZ,KAAKb,GAAG6Z,GAAGhZ,KAAKg13C,MAAM7x3C,IAAI,oBAAoB,EAAEhE,EAAEO,UAAUmo4C,uBAAuB,SAASzo4C,EAAED,EAAEY,EAAEV,EAAEuB,EAAEI,EAAEV,EAAEQ,GAAG,IAAI,IAAIuB,EAAE8W,GAAG/Z,EAAEY,KAAKg13C,MAAM7x3C,IAAI,oBAAoBnD,KAAKg13C,MAAM7x3C,IAAI,2BAA2BnC,EAAE2tO,MAAMruO,GAAGkC,EAAExC,KAAKg13C,MAAM7x3C,IAAI,iBAAiBmxgB,SAASn1gB,EAAEY,GAAGC,KAAKg13C,MAAM7x3C,IAAI,uBAAuBmxgB,SAASn1gB,EAAEY,GAAG+C,EAAE,QAAQ9C,KAAKg13C,MAAM7x3C,IAAI,0BAA0BtC,EAAEiC,EAAET,EAAE,SAASjD,EAAED,GAAG,OAAOC,EAAEiwB,KAAI,SAAUjwB,GAAG,OAAOya,GAAGza,EAAED,EAAG,GAAE,CAAzD,CAA2DkD,EAAEvB,GAAG8B,EAAEE,EAAEN,EAAElC,EAAEkC,EAAEE,EAAE,EAAEM,EAAE3D,EAAEqD,EAAEM,EAAE3C,OAAOqC,GAAG,EAAE,IAAI,IAAIC,EAAE,EAAES,EAAEJ,EAAEN,GAAGC,EAAES,EAAE/C,OAAOsC,GAAG,EAAE,CAAC,IAAIM,EAAEG,EAAET,GAAGR,EAAEW,EAAEG,EAAE4W,GAAG5W,EAAEnC,GAAGmD,EAAErB,EAAEU,EAAEwW,GAAG,GAAG,CAAC7W,EAAEgB,EAAEhB,EAAED,EAAE,EAAE,GAAGlC,GAAG,GAAG,aAAad,KAAKg13C,MAAM7x3C,IAAI,uBAAuB,QAAQnD,KAAKg13C,MAAM7x3C,IAAI,0BAA0Bc,GAAGX,EAAE,GAAGtC,EAAE8m4C,uBAAuB,QAAQ9n4C,KAAKg13C,MAAM7x3C,IAAI,uBAAuB,aAAanD,KAAKg13C,MAAM7x3C,IAAI,4BAA4Bc,GAAGjD,EAAE8m4C,uBAAuBxk4C,EAAE,IAAIymvC,GAAGlpvC,EAAEsB,EAAE8B,GAAG,OAAO,CAAE,CAAC,OAAO,CAAE,EAAE9E,CAAC,CAA5nC,CAA8nCsf,KAAK,SAAS5E,GAAGza,EAAED,GAAG,IAAIY,EAAE+Z,GAAG,GAAG,CAAC1a,EAAE6E,EAAE7E,EAAE4D,EAAE,EAAE,GAAG7D,GAAG,OAAO,IAAIyB,EAAEb,EAAE,GAAGA,EAAE,GAAGA,EAAE,GAAGA,EAAE,GAAG,CAAC,IAAI6Z,GAAG,SAASxa,GAAG,SAASD,IAAIC,EAAEmB,MAAMP,KAAKI,UAAW,CAAC,OAAOhB,IAAID,EAAEK,UAAUJ,IAAID,EAAEO,UAAUJ,OAAOY,OAAOd,GAAGA,EAAEM,YAAYO,YAAYd,EAAEA,CAAC,CAAvI,CAAyIosvC,IAAI,SAASxxuC,GAAG3a,EAAED,EAAEY,EAAEV,GAAG,IAAIuB,EAAEzB,EAAE4/B,MAAM/9B,EAAE7B,EAAE6/B,OAAO,GAAG3/B,GAAG,GAAGA,aAAa0f,kBAAkB1f,EAAE,IAAIsgB,WAAWtgB,EAAE6oB,aAAa,GAAG7oB,EAAEgB,SAASO,EAAEI,EAAEjB,EAAE,MAAM,IAAI4oB,WAAW,8BAA8BtpB,EAAE,IAAIsgB,WAAW/e,EAAEI,EAAEjB,GAAG,OAAOX,EAAE2/B,MAAMn+B,EAAExB,EAAE4/B,OAAOh+B,EAAE5B,EAAEoQ,KAAKnQ,EAAED,CAAC,CAAC,SAAS6a,GAAG7a,EAAED,EAAEY,GAAG,IAAIV,EAAEF,EAAE4/B,MAAMn+B,EAAEzB,EAAE6/B,OAAO,GAAG3/B,IAAID,EAAE2/B,OAAOn+B,IAAIxB,EAAE4/B,OAAO,CAAC,IAAIh+B,EAAE+Y,GAAG,CAAC,EAAE,CAACglB,MAAM1/B,EAAE2/B,OAAOp+B,GAAGb,GAAGia,GAAG5a,EAAE4B,EAAE,CAACiD,EAAE,EAAEjB,EAAE,GAAG,CAACiB,EAAE,EAAEjB,EAAE,GAAG,CAAC+7B,MAAMl8B,KAAKgL,IAAIzO,EAAE2/B,MAAM1/B,GAAG2/B,OAAOn8B,KAAKgL,IAAIzO,EAAE4/B,OAAOp+B,IAAIb,GAAGX,EAAE2/B,MAAM1/B,EAAED,EAAE4/B,OAAOp+B,EAAExB,EAAEoQ,KAAKxO,EAAEwO,IAAK,CAAC,CAAC,SAASwK,GAAG5a,EAAED,EAAEY,EAAEV,EAAEuB,EAAEI,GAAG,GAAG,IAAIJ,EAAEm+B,OAAO,IAAIn+B,EAAEo+B,OAAO,OAAO7/B,EAAE,GAAGyB,EAAEm+B,MAAM3/B,EAAE2/B,OAAOn+B,EAAEo+B,OAAO5/B,EAAE4/B,QAAQj/B,EAAEkE,EAAE7E,EAAE2/B,MAAMn+B,EAAEm+B,OAAOh/B,EAAEiD,EAAE5D,EAAE4/B,OAAOp+B,EAAEo+B,OAAO,MAAM,IAAIrW,WAAW,kDAAkD,GAAG/nB,EAAEm+B,MAAM5/B,EAAE4/B,OAAOn+B,EAAEo+B,OAAO7/B,EAAE6/B,QAAQ3/B,EAAE4E,EAAE9E,EAAE4/B,MAAMn+B,EAAEm+B,OAAO1/B,EAAE2D,EAAE7D,EAAE6/B,OAAOp+B,EAAEo+B,OAAO,MAAM,IAAIrW,WAAW,uDAAuD,IAAI,IAAIroB,EAAElB,EAAEoQ,KAAK1O,EAAE3B,EAAEqQ,KAAKnN,EAAE,EAAEA,EAAEzB,EAAEo+B,OAAO38B,IAAI,IAAI,IAAIG,IAAIzC,EAAEiD,EAAEX,GAAGjD,EAAE2/B,MAAMh/B,EAAEkE,GAAGjD,EAAE8B,IAAIzD,EAAE2D,EAAEX,GAAGlD,EAAE4/B,MAAM1/B,EAAE4E,GAAGjD,EAAEH,EAAE,EAAEA,EAAED,EAAEm+B,MAAM/9B,EAAEH,IAAIC,EAAEgC,EAAEjC,GAAGP,EAAEkC,EAAE3B,GAAG,OAAO1B,CAAC,CAACgT,GAAG,gBAAgByH,GAAG,CAACw5wC,KAAK,CAAC,YAAY,IAAIj5wC,GAAG,SAAS/a,EAAED,GAAG4a,GAAG/Z,KAAKZ,EAAE,EAAED,EAAG,EAAEgb,GAAGza,UAAUmvH,OAAO,SAASzvH,GAAG6a,GAAGja,KAAKZ,EAAE,EAAG,EAAE+a,GAAGza,UAAU6wB,MAAM,WAAW,OAAO,IAAIpW,GAAG,CAAC4kB,MAAM/+B,KAAK++B,MAAMC,OAAOh/B,KAAKg/B,QAAQ,IAAIrf,WAAW3f,KAAKwP,MAAM,EAAE2K,GAAG2lH,KAAK,SAAS1gI,EAAED,EAAEY,EAAEV,EAAEuB,GAAGoZ,GAAG5a,EAAED,EAAEY,EAAEV,EAAEuB,EAAE,EAAG,EAAE,IAAI+Z,GAAG,SAASvb,EAAED,GAAG4a,GAAG/Z,KAAKZ,EAAE,EAAED,EAAG,EAAEwb,GAAGjb,UAAUmvH,OAAO,SAASzvH,GAAG6a,GAAGja,KAAKZ,EAAE,EAAG,EAAEub,GAAGjb,UAAU+M,QAAQ,SAASrN,EAAED,GAAGA,EAAEa,KAAKwP,KAAKvD,IAAI7M,GAAGY,KAAKwP,KAAKpQ,aAAa2f,kBAAkB,IAAIY,WAAWvgB,EAAE8oB,QAAQ9oB,CAAE,EAAEub,GAAGjb,UAAU6wB,MAAM,WAAW,OAAO,IAAI5V,GAAG,CAACokB,MAAM/+B,KAAK++B,MAAMC,OAAOh/B,KAAKg/B,QAAQ,IAAIrf,WAAW3f,KAAKwP,MAAM,EAAEmL,GAAGmlH,KAAK,SAAS1gI,EAAED,EAAEY,EAAEV,EAAEuB,GAAGoZ,GAAG5a,EAAED,EAAEY,EAAEV,EAAEuB,EAAE,EAAG,EAAEuR,GAAG,aAAagI,IAAIhI,GAAG,YAAYwI,IAAI,IAAIT,GAAG,CAAC862C,MAAM,IAAI522C,GAAG,CAAC,iBAAiB,IAAIJ,GAAGvP,GAAGio3C,cAAc,mBAAmB,iBAAiB,IAAI142C,GAAGvP,GAAGio3C,cAAc,mBAAmB,oBAAoB,IAAIz42C,GAAGxP,GAAGio3C,cAAc,sBAAsB,gBAAgB,IAAIx42C,GAAGzP,GAAGio3C,cAAc,kBAAkB,kBAAkB,IAAIz42C,GAAGxP,GAAGio3C,cAAc,uBAAuB,SAASt82C,GAAGhb,GAAG,IAAID,EAAE,CAAC,EAAEY,EAAEX,EAAEw1H,YAAY,IAAIv1H,EAAED,EAAE2o4C,MAAM3o4C,EAAE2o4C,MAAM1n4C,OAAO,EAAEO,EAAExB,EAAEmrJ,OAAO,IAAI5vI,GAAG,CAACokB,MAAMh/B,EAAEi/B,OAAO3/B,IAAI2B,EAAE,SAASjB,EAAEV,EAAE2B,GAAG7B,EAAEC,EAAE4o4C,eAAehn4C,EAAE,IAAIV,EAAElB,EAAE4he,WAAWszC,SAASn1gB,GAAGyB,EAAE4O,KAAKzP,EAAEV,EAAE,GAAGwD,KAAKyK,MAAM,IAAIhN,EAAEP,EAAEO,EAAEU,GAAGJ,EAAE4O,KAAKzP,EAAEV,EAAE,GAAGwD,KAAKyK,MAAM,IAAIhN,EAAE6B,EAAE7B,EAAEU,GAAGJ,EAAE4O,KAAKzP,EAAEV,EAAE,GAAGwD,KAAKyK,MAAM,IAAIhN,EAAEgD,EAAEhD,EAAEU,GAAGJ,EAAE4O,KAAKzP,EAAEV,EAAE,GAAGwD,KAAKyK,MAAM,IAAIhN,EAAEU,EAAG,EAAE,GAAG5B,EAAE2o4C,MAAM,IAAI,IAAIzn4C,EAAE,EAAEQ,EAAE,EAAER,EAAEjB,IAAIiB,EAAEQ,GAAG,EAAEf,EAAE,IAAI,IAAIsC,EAAE,EAAEG,EAAE,EAAEH,EAAEtC,EAAEsC,IAAIG,GAAG,EAAE,CAAC,IAAIM,EAAET,GAAGtC,EAAE,GAAGc,EAAEzB,EAAE2o4C,MAAMzn4C,GAAGU,EAAEF,EAAE0B,EAAE3B,EAAE2lC,OAAO,EAAE1jC,GAAGjC,EAAE4lC,IAAI3jC,EAAG,MAAM,IAAI,IAAIF,EAAE,EAAEF,EAAE,EAAEE,EAAE7C,EAAE6C,IAAIF,GAAG,EAAE1B,EAAE,EAAE0B,EAAEE,GAAG7C,EAAE,IAAI,OAAOa,CAAC,CAAC,IAAI4Z,GAAG,SAASpb,GAAG,SAASD,EAAEA,GAAGC,EAAEQ,KAAKI,KAAKb,EAAE+a,IAAIla,KAAKio4C,kBAAmB,CAAC,OAAO7o4C,IAAID,EAAEK,UAAUJ,IAAID,EAAEO,UAAUJ,OAAOY,OAAOd,GAAGA,EAAEM,YAAYO,YAAYd,EAAEA,EAAEO,UAAUio4C,aAAa,SAASvo4C,GAAG,OAAO,IAAIwa,GAAGxa,EAAE,EAAED,EAAEO,UAAUkg4C,kCAAkC,SAASxg4C,GAAG,kBAAkBA,GAAGY,KAAKio4C,kBAAmB,EAAE9o4C,EAAEO,UAAUuo4C,iBAAiB,WAAWjo4C,KAAKko4C,UAAU9t3C,GAAG,CAAC4md,WAAWhhe,KAAKo/3C,qBAAqBb,QAAQ,iBAAiBp93C,MAAM6/d,WAAWgn6B,cAAc,iBAAiBz9uC,MAAMvqJ,KAAKko4C,YAAYlo4C,KAAKmo4C,iBAAiB,IAAK,EAAEhp4C,EAAEO,UAAUmvH,OAAO,WAAW7uH,KAAKoo4C,aAAapo4C,KAAKoo4C,WAAWhqvC,UAAUp+I,KAAKoo4C,WAAW,KAAM,EAAEjp4C,EAAEO,UAAUko4C,YAAY,WAAW,OAAO,CAAC,EAAEzo4C,EAAEO,UAAUmo4C,uBAAuB,WAAW,OAAO,CAAE,EAAE1o4C,EAAEO,UAAUwg4C,iBAAiB,WAAW,OAAO,IAAIlg4C,KAAKg13C,MAAM7x3C,IAAI,oBAAoB,SAASnD,KAAKgtM,UAAU,EAAE7tM,CAAC,CAA/0B,CAAi1Bsf,IAAIlD,GAAG,CAACy52C,MAAM,IAAI522C,GAAG,CAAC,mCAAmC,IAAIH,GAAGxP,GAAGqo3C,gBAAgB,qCAAqC,gCAAgC,IAAI742C,GAAGxP,GAAGqo3C,gBAAgB,kCAAkC,yBAAyB,IAAI742C,GAAGxP,GAAGqo3C,gBAAgB,2BAA2B,yBAAyB,IAAI742C,GAAGxP,GAAGqo3C,gBAAgB,2BAA2B,4BAA4B,IAAI742C,GAAGxP,GAAGqo3C,gBAAgB,8BAA8B,yBAAyB,IAAI742C,GAAGxP,GAAGqo3C,gBAAgB,8BAA8Bz82C,GAAG,SAASjb,GAAG,SAASD,EAAEA,GAAGC,EAAEQ,KAAKI,KAAKb,EAAEoc,GAAI,CAAC,OAAOnc,IAAID,EAAEK,UAAUJ,IAAID,EAAEO,UAAUJ,OAAOY,OAAOd,GAAGA,EAAEM,YAAYO,YAAYd,EAAEA,EAAEO,UAAUwg4C,iBAAiB,WAAW,OAAO,IAAIlg4C,KAAKg13C,MAAM7x3C,IAAI,2BAA2B,SAASnD,KAAKgtM,UAAU,EAAE7tM,CAAC,CAAzP,CAA2Psf,IAAIlE,GAAGmE,GAAG,CAAC,CAAChU,KAAK,QAAQwjP,WAAW,EAAE3hP,KAAK,UAAU,GAAGm03C,QAAQjm3C,GAAGI,GAAGwB,GAAGxB,GAAG,SAASA,GAAGzb,EAAED,EAAEY,GAAGA,EAAEA,GAAG,EAAE,IAAIV,EAAEuB,EAAEI,EAAEV,EAAEQ,EAAEuB,EAAEG,EAAEM,EAAE3D,GAAGA,EAAEkB,OAAOQ,EAAEiC,EAAE3D,EAAE,GAAGY,EAAEX,EAAEiB,OAAOuC,EAAEyY,GAAGjc,EAAE,EAAEyB,EAAEd,GAAE,GAAI2C,EAAE,GAAG,IAAIE,GAAGA,EAAE7B,OAAO6B,EAAEkmJ,KAAK,OAAOpmJ,EAAE,GAAGI,IAAIF,EAAE,SAASxD,EAAED,EAAEY,EAAEV,GAAG,IAAIuB,EAAEI,EAAEV,EAAEQ,EAAE,GAAG,IAAIF,EAAE,EAAEI,EAAE7B,EAAEkB,OAAOO,EAAEI,EAAEJ,KAAKN,EAAE+a,GAAGjc,EAAED,EAAEyB,GAAGvB,EAAEuB,EAAEI,EAAE,EAAE7B,EAAEyB,EAAE,GAAGvB,EAAED,EAAEiB,OAAOhB,GAAE,MAAOiB,EAAES,OAAOT,EAAE+jW,SAAQ,GAAIvjW,EAAEe,KAAKka,GAAGzb,IAAI,IAAIQ,EAAEyrC,KAAKvwB,IAAIpb,EAAE,EAAEA,EAAEE,EAAET,OAAOO,IAAIoa,GAAGla,EAAEF,GAAGb,GAAGA,EAAEyb,GAAGzb,EAAEA,EAAEgB,MAAM,OAAOhB,CAAC,CAArN,CAAuNX,EAAED,EAAEyD,EAAE7C,IAAIX,EAAEiB,OAAO,GAAGN,EAAE,CAACV,EAAE2B,EAAE5B,EAAE,GAAGwB,EAAEN,EAAElB,EAAE,GAAG,IAAI,IAAI4D,EAAEjD,EAAEiD,EAAEnC,EAAEmC,GAAGjD,GAAGe,EAAE1B,EAAE4D,IAAI3D,IAAIA,EAAEyB,IAAIuB,EAAEjD,EAAE4D,EAAE,IAAIpC,IAAIA,EAAEyB,GAAGvB,EAAEE,IAAIA,EAAEF,GAAGuB,EAAE/B,IAAIA,EAAE+B,GAAGG,EAAE,KAAKA,EAAEK,KAAK8K,IAAI3M,EAAE3B,EAAEiB,EAAEM,IAAI,EAAE4B,EAAE,CAAE,CAAC,OAAO8Z,GAAG1Z,EAAEF,EAAE3C,EAAEV,EAAEuB,EAAE4B,GAAGE,CAAC,CAAC,SAAS2Y,GAAGjc,EAAED,EAAEY,EAAEV,EAAEuB,GAAG,IAAII,EAAEV,EAAE,GAAGM,IAAI4b,GAAGpd,EAAED,EAAEY,EAAEV,GAAG,EAAE,IAAI2B,EAAE7B,EAAE6B,EAAEjB,EAAEiB,GAAG3B,EAAEiB,EAAE4b,GAAGlb,EAAE5B,EAAE4B,GAAG5B,EAAE4B,EAAE,GAAGV,QAAQ,IAAIU,EAAEjB,EAAEV,EAAE2B,GAAG7B,EAAE6B,GAAG3B,EAAEiB,EAAE4b,GAAGlb,EAAE5B,EAAE4B,GAAG5B,EAAE4B,EAAE,GAAGV,GAAG,OAAOA,GAAGub,GAAGvb,EAAEA,EAAES,QAAQ6b,GAAGtc,GAAGA,EAAEA,EAAES,MAAMT,CAAC,CAAC,SAASkb,GAAGpc,EAAED,GAAG,IAAIC,EAAE,OAAOA,EAAED,IAAIA,EAAEC,GAAG,IAAIW,EAAEV,EAAED,EAAE,GAAG,GAAGW,GAAE,EAAGV,EAAEglW,UAAUxoV,GAAGxc,EAAEA,EAAE0B,OAAO,IAAI+a,GAAGzc,EAAEypJ,KAAKzpJ,EAAEA,EAAE0B,MAAM1B,EAAEA,EAAE0B,SAAU,CAAC,GAAG6b,GAAGvd,IAAIA,EAAEF,EAAEE,EAAEypJ,QAAQzpJ,EAAE0B,KAAK,MAAMhB,GAAE,CAAG,QAAQA,GAAGV,IAAIF,GAAG,OAAOA,CAAC,CAAC,SAASmd,GAAGld,EAAED,EAAEY,EAAEV,EAAEuB,EAAEI,EAAEV,GAAG,GAAGlB,EAAE,EAAEkB,GAAGU,GAAG,SAAS5B,EAAED,EAAEY,EAAEV,GAAG,IAAIuB,EAAExB,EAAE,GAAG,OAAOwB,EAAE+E,IAAI/E,EAAE+E,EAAEuV,GAAGta,EAAEqD,EAAErD,EAAEoC,EAAE7D,EAAEY,EAAEV,IAAIuB,EAAEskW,MAAMtkW,EAAEkoJ,KAAKloJ,EAAEukW,MAAMvkW,EAAEG,KAAKH,EAAEA,EAAEG,WAAYH,IAAIxB,GAAGwB,EAAEskW,MAAMC,MAAM,KAAKvkW,EAAEskW,MAAM,KAAK,SAAS9lW,GAAG,IAAID,EAAEY,EAAEV,EAAEuB,EAAEI,EAAEV,EAAEQ,EAAEuB,EAAEG,EAAE,EAAE,EAAE,CAAC,IAAIzC,EAAEX,EAAEA,EAAE,KAAK4B,EAAE,KAAKV,EAAE,EAAEP,GAAG,CAAC,IAAIO,IAAIjB,EAAEU,EAAEe,EAAE,EAAE3B,EAAE,EAAEA,EAAEqD,IAAI1B,IAAIzB,EAAEA,EAAE8lW,OAAOhmW,KAAK,IAAIkD,EAAEG,EAAE1B,EAAE,GAAGuB,EAAE,GAAGhD,GAAG,IAAIyB,IAAI,IAAIuB,IAAIhD,GAAGU,EAAE4F,GAAGtG,EAAEsG,IAAI/E,EAAEb,EAAEA,EAAEA,EAAEolW,MAAMrkW,MAAMF,EAAEvB,EAAEA,EAAEA,EAAE8lW,MAAM9iW,KAAKrB,EAAEA,EAAEmkW,MAAMvkW,EAAExB,EAAEwB,EAAEA,EAAEskW,MAAMlkW,EAAEA,EAAEJ,EAAEb,EAAEV,CAAE,CAAC2B,EAAEmkW,MAAM,KAAK3iW,GAAG,CAAE,OAAOlC,EAAE,EAAE,CAA7Q,CAA+QM,EAAG,CAAxa,CAA0axB,EAAEC,EAAEuB,EAAEI,GAAG,IAAI,IAAIF,EAAEuB,EAAEG,EAAEpD,EAAEA,EAAE0pJ,OAAO1pJ,EAAE2B,MAAM,GAAGD,EAAE1B,EAAE0pJ,KAAKzmJ,EAAEjD,EAAE2B,KAAKC,EAAE4Z,GAAGxb,EAAEC,EAAEuB,EAAEI,GAAGub,GAAGnd,GAAGD,EAAE0C,KAAKf,EAAEF,EAAEb,GAAGZ,EAAE0C,KAAKzC,EAAEwB,EAAEb,GAAGZ,EAAE0C,KAAKQ,EAAEzB,EAAEb,GAAG6c,GAAGxd,GAAGA,EAAEiD,EAAEtB,KAAKyB,EAAEH,EAAEtB,UAAU,IAAI3B,EAAEiD,KAAKG,EAAE,CAAClC,EAAE,IAAIA,EAAEgc,GAAGld,EAAEgd,GAAGZ,GAAGpc,GAAGD,EAAEY,GAAGZ,EAAEY,EAAEV,EAAEuB,EAAEI,EAAE,GAAG,IAAIV,GAAGsb,GAAGxc,EAAED,EAAEY,EAAEV,EAAEuB,EAAEI,GAAGsb,GAAGd,GAAGpc,GAAGD,EAAEY,EAAEV,EAAEuB,EAAEI,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,SAASub,GAAGnd,GAAG,IAAID,EAAEC,EAAE0pJ,KAAK/oJ,EAAEX,EAAEC,EAAED,EAAE2B,KAAK,GAAG+a,GAAG3c,EAAEY,EAAEV,IAAI,EAAE,OAAO,EAAG,IAAI,IAAIuB,EAAExB,EAAE2B,KAAKA,KAAKH,IAAIxB,EAAE0pJ,MAAM,CAAC,GAAGhuI,GAAG3b,EAAE8E,EAAE9E,EAAE6D,EAAEjD,EAAEkE,EAAElE,EAAEiD,EAAE3D,EAAE4E,EAAE5E,EAAE2D,EAAEpC,EAAEqD,EAAErD,EAAEoC,IAAI8Y,GAAGlb,EAAEkoJ,KAAKloJ,EAAEA,EAAEG,OAAO,EAAE,OAAO,EAAGH,EAAEA,EAAEG,IAAK,CAAC,OAAO,CAAE,CAAC,SAAS6Z,GAAGxb,EAAED,EAAEY,EAAEV,GAAG,IAAIuB,EAAExB,EAAE0pJ,KAAK9nJ,EAAE5B,EAAEkB,EAAElB,EAAE2B,KAAK,GAAG+a,GAAGlb,EAAEI,EAAEV,IAAI,EAAE,OAAO,EAAG,IAAI,IAAIQ,EAAEF,EAAEqD,EAAEjD,EAAEiD,EAAErD,EAAEqD,EAAE3D,EAAE2D,EAAErD,EAAEqD,EAAE3D,EAAE2D,EAAEjD,EAAEiD,EAAE3D,EAAE2D,EAAEjD,EAAEiD,EAAE3D,EAAE2D,EAAE5B,EAAEzB,EAAEoC,EAAEhC,EAAEgC,EAAEpC,EAAEoC,EAAE1C,EAAE0C,EAAEpC,EAAEoC,EAAE1C,EAAE0C,EAAEhC,EAAEgC,EAAE1C,EAAE0C,EAAEhC,EAAEgC,EAAE1C,EAAE0C,EAAER,EAAE0Y,GAAGta,EAAEqD,EAAEjD,EAAEiD,EAAErD,EAAEqD,EAAE3D,EAAE2D,EAAErD,EAAEqD,EAAE3D,EAAE2D,EAAEjD,EAAEiD,EAAE3D,EAAE2D,EAAEjD,EAAEiD,EAAE3D,EAAE2D,EAAErD,EAAEoC,EAAEhC,EAAEgC,EAAEpC,EAAEoC,EAAE1C,EAAE0C,EAAEpC,EAAEoC,EAAE1C,EAAE0C,EAAEhC,EAAEgC,EAAE1C,EAAE0C,EAAEhC,EAAEgC,EAAE1C,EAAE0C,EAAE7D,EAAEY,EAAEV,GAAGyD,EAAEoY,GAAGpa,EAAEuB,EAAElD,EAAEY,EAAEV,GAAGwB,EAAEzB,EAAE8lW,MAAMtiW,EAAExD,EAAE+lW,MAAMtkW,GAAGA,EAAE8E,GAAGnD,GAAGI,GAAGA,EAAE+C,GAAG7C,GAAG,CAAC,GAAGjC,IAAIzB,EAAE0pJ,MAAMjoJ,IAAIzB,EAAE2B,MAAM+Z,GAAGla,EAAEqD,EAAErD,EAAEoC,EAAEhC,EAAEiD,EAAEjD,EAAEgC,EAAE1C,EAAE2D,EAAE3D,EAAE0C,EAAEnC,EAAEoD,EAAEpD,EAAEmC,IAAI8Y,GAAGjb,EAAEioJ,KAAKjoJ,EAAEA,EAAEE,OAAO,EAAE,OAAO,EAAG,GAAGF,EAAEA,EAAEqkW,MAAMtiW,IAAIxD,EAAE0pJ,MAAMlmJ,IAAIxD,EAAE2B,MAAM+Z,GAAGla,EAAEqD,EAAErD,EAAEoC,EAAEhC,EAAEiD,EAAEjD,EAAEgC,EAAE1C,EAAE2D,EAAE3D,EAAE0C,EAAEJ,EAAEqB,EAAErB,EAAEI,IAAI8Y,GAAGlZ,EAAEkmJ,KAAKlmJ,EAAEA,EAAE7B,OAAO,EAAE,OAAO,EAAG6B,EAAEA,EAAEuiW,KAAM,CAAC,KAAKtkW,GAAGA,EAAE8E,GAAGnD,GAAG,CAAC,GAAG3B,IAAIzB,EAAE0pJ,MAAMjoJ,IAAIzB,EAAE2B,MAAM+Z,GAAGla,EAAEqD,EAAErD,EAAEoC,EAAEhC,EAAEiD,EAAEjD,EAAEgC,EAAE1C,EAAE2D,EAAE3D,EAAE0C,EAAEnC,EAAEoD,EAAEpD,EAAEmC,IAAI8Y,GAAGjb,EAAEioJ,KAAKjoJ,EAAEA,EAAEE,OAAO,EAAE,OAAO,EAAGF,EAAEA,EAAEqkW,KAAM,CAAC,KAAKtiW,GAAGA,EAAE+C,GAAG7C,GAAG,CAAC,GAAGF,IAAIxD,EAAE0pJ,MAAMlmJ,IAAIxD,EAAE2B,MAAM+Z,GAAGla,EAAEqD,EAAErD,EAAEoC,EAAEhC,EAAEiD,EAAEjD,EAAEgC,EAAE1C,EAAE2D,EAAE3D,EAAE0C,EAAEJ,EAAEqB,EAAErB,EAAEI,IAAI8Y,GAAGlZ,EAAEkmJ,KAAKlmJ,EAAEA,EAAE7B,OAAO,EAAE,OAAO,EAAG6B,EAAEA,EAAEuiW,KAAM,CAAC,OAAO,CAAE,CAAC,SAAS/oV,GAAGhd,EAAED,EAAEY,GAAG,IAAIV,EAAED,EAAE,EAAE,CAAC,IAAIwB,EAAEvB,EAAEypJ,KAAK9nJ,EAAE3B,EAAE0B,KAAKA,MAAM8a,GAAGjb,EAAEI,IAAIsa,GAAG1a,EAAEvB,EAAEA,EAAE0B,KAAKC,IAAImb,GAAGvb,EAAEI,IAAImb,GAAGnb,EAAEJ,KAAKzB,EAAE0C,KAAKjB,EAAEA,EAAEb,GAAGZ,EAAE0C,KAAKxC,EAAEuB,EAAEb,GAAGZ,EAAE0C,KAAKb,EAAEJ,EAAEb,GAAG6c,GAAGvd,GAAGud,GAAGvd,EAAE0B,MAAM1B,EAAED,EAAE4B,GAAG3B,EAAEA,EAAE0B,IAAK,OAAO1B,IAAID,GAAG,OAAOoc,GAAGnc,EAAE,CAAC,SAASuc,GAAGxc,EAAED,EAAEY,EAAEV,EAAEuB,EAAEI,GAAG,IAAIV,EAAElB,EAAE,EAAE,CAAC,IAAI,IAAI0B,EAAER,EAAES,KAAKA,KAAKD,IAAIR,EAAEwoJ,MAAM,CAAC,GAAGxoJ,EAAEM,IAAIE,EAAEF,GAAG+b,GAAGrc,EAAEQ,GAAG,CAAC,IAAIuB,EAAE4Z,GAAG3b,EAAEQ,GAAG,OAAOR,EAAEkb,GAAGlb,EAAEA,EAAES,MAAMsB,EAAEmZ,GAAGnZ,EAAEA,EAAEtB,MAAMub,GAAGhc,EAAEnB,EAAEY,EAAEV,EAAEuB,EAAEI,QAAQsb,GAAGja,EAAElD,EAAEY,EAAEV,EAAEuB,EAAEI,EAAE,CAACF,EAAEA,EAAEC,IAAK,CAACT,EAAEA,EAAES,IAAK,OAAOT,IAAIlB,EAAE,CAAC,SAAS4c,GAAG5c,EAAED,GAAG,OAAOC,EAAE6E,EAAE9E,EAAE8E,CAAC,CAAC,SAAS+W,GAAG5b,EAAED,GAAG,GAAGA,EAAE,SAASC,EAAED,GAAG,IAAIY,EAAEV,EAAEF,EAAEyB,EAAExB,EAAE6E,EAAEjD,EAAE5B,EAAE4D,EAAE1C,GAAE,IAAK,EAAE,CAAC,GAAGU,GAAG3B,EAAE2D,GAAGhC,GAAG3B,EAAE0B,KAAKiC,GAAG3D,EAAE0B,KAAKiC,IAAI3D,EAAE2D,EAAE,CAAC,IAAIlC,EAAEzB,EAAE4E,GAAGjD,EAAE3B,EAAE2D,IAAI3D,EAAE0B,KAAKkD,EAAE5E,EAAE4E,IAAI5E,EAAE0B,KAAKiC,EAAE3D,EAAE2D,GAAG,GAAGlC,GAAGF,GAAGE,EAAER,EAAE,CAAC,GAAGA,EAAEQ,EAAEA,IAAIF,EAAE,CAAC,GAAGI,IAAI3B,EAAE2D,EAAE,OAAO3D,EAAE,GAAG2B,IAAI3B,EAAE0B,KAAKiC,EAAE,OAAO3D,EAAE0B,IAAI,CAAChB,EAAEV,EAAE4E,EAAE5E,EAAE0B,KAAKkD,EAAE5E,EAAEA,EAAE0B,IAAK,CAAC,CAAC1B,EAAEA,EAAE0B,IAAK,OAAO1B,IAAIF,GAAG,IAAIY,EAAE,OAAO,KAAK,GAAGa,IAAIN,EAAE,OAAOP,EAAE,IAAIsC,EAAEG,EAAEzC,EAAE+C,EAAE/C,EAAEkE,EAAEpD,EAAEd,EAAEiD,EAAEJ,EAAE,IAAIvD,EAAEU,EAAE,GAAGa,GAAGvB,EAAE4E,GAAG5E,EAAE4E,GAAGnB,GAAGlC,IAAIvB,EAAE4E,GAAG6W,GAAG9Z,EAAEH,EAAED,EAAEN,EAAEU,EAAE8B,EAAEjC,EAAEG,EAAEH,EAAEP,EAAEM,EAAEI,EAAE3B,EAAE4E,EAAE5E,EAAE2D,KAAKX,EAAEQ,KAAKmjH,IAAIhlH,EAAE3B,EAAE2D,IAAIpC,EAAEvB,EAAE4E,GAAGkY,GAAG9c,EAAED,KAAKiD,EAAEO,GAAGP,IAAIO,IAAIvD,EAAE4E,EAAElE,EAAEkE,GAAG5E,EAAE4E,IAAIlE,EAAEkE,GAAGyW,GAAG3a,EAAEV,OAAOU,EAAEV,EAAEuD,EAAEP,IAAIhD,EAAEA,EAAE0B,WAAY1B,IAAImD,GAAG,OAAOzC,CAAC,CAArgB,CAAugBX,EAAED,GAAG,CAAC,IAAIY,EAAEkc,GAAG9c,EAAEC,GAAGoc,GAAGrc,EAAEA,EAAE4B,MAAMya,GAAGzb,EAAEA,EAAEgB,KAAM,CAAC,CAAC,SAAS2Z,GAAGtb,EAAED,GAAG,OAAO2c,GAAG1c,EAAE0pJ,KAAK1pJ,EAAED,EAAE2pJ,MAAM,GAAGhtI,GAAG3c,EAAE4B,KAAK3B,EAAEA,EAAE2B,MAAM,CAAC,CAAC,SAASma,GAAG9b,EAAED,EAAEY,EAAEV,EAAEuB,GAAG,OAAQxB,EAAE,aAAaA,EAAE,YAAYA,EAAE,YAAYA,EAAE,WAAWA,EAAE,OAAOA,EAAEW,GAAGa,GAAGxB,GAAG,IAAIA,GAAG,IAAIA,GAAG,IAAIA,GAAG,KAAKD,EAAE,aAAaA,EAAE,YAAYA,EAAE,YAAYA,EAAE,WAAWA,EAAE,OAAOA,EAAEE,GAAGuB,GAAGzB,GAAG,IAAIA,GAAG,IAAIA,GAAG,IAAIA,GAAG,KAAK,CAAC,CAAC,SAAS4c,GAAG3c,GAAG,IAAID,EAAEC,EAAEW,EAAEX,EAAE,IAAID,EAAE8E,EAAElE,EAAEkE,GAAG9E,EAAE8E,IAAIlE,EAAEkE,GAAG9E,EAAE6D,EAAEjD,EAAEiD,KAAKjD,EAAEZ,GAAGA,EAAEA,EAAE4B,WAAY5B,IAAIC,GAAG,OAAOW,CAAC,CAAC,SAAS+a,GAAG1b,EAAED,EAAEY,EAAEV,EAAEuB,EAAEI,EAAEV,EAAEQ,GAAG,OAAQF,EAAEN,IAAInB,EAAE2B,IAAI1B,EAAEkB,IAAIU,EAAEF,IAAI,IAAI1B,EAAEkB,IAAIjB,EAAEyB,IAAIf,EAAEO,IAAInB,EAAE2B,IAAI,IAAIf,EAAEO,IAAIU,EAAEF,IAAIF,EAAEN,IAAIjB,EAAEyB,IAAI,CAAC,CAAC,SAAS6b,GAAGvd,EAAED,GAAG,OAAOC,EAAE2B,KAAKH,IAAIzB,EAAEyB,GAAGxB,EAAE0pJ,KAAKloJ,IAAIzB,EAAEyB,IAAI,SAASxB,EAAED,GAAG,IAAIY,EAAEX,EAAE,EAAE,CAAC,GAAGW,EAAEa,IAAIxB,EAAEwB,GAAGb,EAAEgB,KAAKH,IAAIxB,EAAEwB,GAAGb,EAAEa,IAAIzB,EAAEyB,GAAGb,EAAEgB,KAAKH,IAAIzB,EAAEyB,GAAG0a,GAAGvb,EAAEA,EAAEgB,KAAK3B,EAAED,GAAG,OAAO,EAAGY,EAAEA,EAAEgB,IAAK,OAAOhB,IAAIX,GAAG,OAAO,CAAE,CAA7I,CAA+IA,EAAED,KAAKgd,GAAG/c,EAAED,IAAIgd,GAAGhd,EAAEC,IAAI,SAASA,EAAED,GAAG,IAAIY,EAAEX,EAAEC,GAAE,EAAGuB,GAAGxB,EAAE6E,EAAE9E,EAAE8E,GAAG,EAAEjD,GAAG5B,EAAE4D,EAAE7D,EAAE6D,GAAG,EAAE,GAAGjD,EAAEiD,EAAEhC,GAAGjB,EAAEgB,KAAKiC,EAAEhC,GAAGjB,EAAEgB,KAAKiC,IAAIjD,EAAEiD,GAAGpC,GAAGb,EAAEgB,KAAKkD,EAAElE,EAAEkE,IAAIjD,EAAEjB,EAAEiD,IAAIjD,EAAEgB,KAAKiC,EAAEjD,EAAEiD,GAAGjD,EAAEkE,IAAI5E,GAAGA,GAAGU,EAAEA,EAAEgB,WAAYhB,IAAIX,GAAG,OAAOC,CAAC,CAAhL,CAAkLD,EAAED,KAAK2c,GAAG1c,EAAE0pJ,KAAK1pJ,EAAED,EAAE2pJ,OAAOhtI,GAAG1c,EAAED,EAAE2pJ,KAAK3pJ,KAAK0c,GAAGzc,EAAED,IAAI2c,GAAG1c,EAAE0pJ,KAAK1pJ,EAAEA,EAAE2B,MAAM,GAAG+a,GAAG3c,EAAE2pJ,KAAK3pJ,EAAEA,EAAE4B,MAAM,EAAE,CAAC,SAAS+a,GAAG1c,EAAED,EAAEY,GAAG,OAAQZ,EAAE6D,EAAE5D,EAAE4D,IAAIjD,EAAEkE,EAAE9E,EAAE8E,IAAI9E,EAAE8E,EAAE7E,EAAE6E,IAAIlE,EAAEiD,EAAE7D,EAAE6D,EAAE,CAAC,SAAS6Y,GAAGzc,EAAED,GAAG,OAAOC,EAAE6E,IAAI9E,EAAE8E,GAAG7E,EAAE4D,IAAI7D,EAAE6D,CAAC,CAAC,SAASsY,GAAGlc,EAAED,EAAEY,EAAEV,GAAG,IAAIuB,EAAE6a,GAAGK,GAAG1c,EAAED,EAAEY,IAAIiB,EAAEya,GAAGK,GAAG1c,EAAED,EAAEE,IAAIiB,EAAEmb,GAAGK,GAAG/b,EAAEV,EAAED,IAAI0B,EAAE2a,GAAGK,GAAG/b,EAAEV,EAAEF,IAAI,OAAOyB,IAAII,GAAGV,IAAIQ,KAAK,IAAIF,IAAIwa,GAAGhc,EAAEW,EAAEZ,OAAO,IAAI6B,IAAIoa,GAAGhc,EAAEC,EAAEF,OAAO,IAAImB,IAAI8a,GAAGrb,EAAEX,EAAEC,OAAO,IAAIyB,IAAIsa,GAAGrb,EAAEZ,EAAEE,GAAG,CAAC,SAAS+b,GAAGhc,EAAED,EAAEY,GAAG,OAAOZ,EAAE8E,GAAGpB,KAAK8K,IAAIvO,EAAE6E,EAAElE,EAAEkE,IAAI9E,EAAE8E,GAAGpB,KAAKgL,IAAIzO,EAAE6E,EAAElE,EAAEkE,IAAI9E,EAAE6D,GAAGH,KAAK8K,IAAIvO,EAAE4D,EAAEjD,EAAEiD,IAAI7D,EAAE6D,GAAGH,KAAKgL,IAAIzO,EAAE4D,EAAEjD,EAAEiD,EAAE,CAAC,SAASyY,GAAGrc,GAAG,OAAOA,EAAE,EAAE,EAAEA,EAAE,GAAG,EAAE,CAAC,CAAC,SAAS+c,GAAG/c,EAAED,GAAG,OAAO2c,GAAG1c,EAAE0pJ,KAAK1pJ,EAAEA,EAAE2B,MAAM,EAAE+a,GAAG1c,EAAED,EAAEC,EAAE2B,OAAO,GAAG+a,GAAG1c,EAAEA,EAAE0pJ,KAAK3pJ,IAAI,EAAE2c,GAAG1c,EAAED,EAAEC,EAAE0pJ,MAAM,GAAGhtI,GAAG1c,EAAEA,EAAE2B,KAAK5B,GAAG,CAAC,CAAC,SAAS8c,GAAG7c,EAAED,GAAG,IAAIY,EAAE,IAAIob,GAAG/b,EAAEwB,EAAExB,EAAE6E,EAAE7E,EAAE4D,GAAG3D,EAAE,IAAI8b,GAAGhc,EAAEyB,EAAEzB,EAAE8E,EAAE9E,EAAE6D,GAAGpC,EAAExB,EAAE2B,KAAKC,EAAE7B,EAAE2pJ,KAAK,OAAO1pJ,EAAE2B,KAAK5B,EAAEA,EAAE2pJ,KAAK1pJ,EAAEW,EAAEgB,KAAKH,EAAEA,EAAEkoJ,KAAK/oJ,EAAEV,EAAE0B,KAAKhB,EAAEA,EAAE+oJ,KAAKzpJ,EAAE2B,EAAED,KAAK1B,EAAEA,EAAEypJ,KAAK9nJ,EAAE3B,CAAC,CAAC,SAAS6c,GAAG9c,EAAED,EAAEY,EAAEV,GAAG,IAAIuB,EAAE,IAAIua,GAAG/b,EAAED,EAAEY,GAAG,OAAOV,GAAGuB,EAAEG,KAAK1B,EAAE0B,KAAKH,EAAEkoJ,KAAKzpJ,EAAEA,EAAE0B,KAAK+nJ,KAAKloJ,EAAEvB,EAAE0B,KAAKH,IAAIA,EAAEkoJ,KAAKloJ,EAAEA,EAAEG,KAAKH,GAAGA,CAAC,CAAC,SAASgc,GAAGxd,GAAGA,EAAE2B,KAAK+nJ,KAAK1pJ,EAAE0pJ,KAAK1pJ,EAAE0pJ,KAAK/nJ,KAAK3B,EAAE2B,KAAK3B,EAAE8lW,QAAQ9lW,EAAE8lW,MAAMC,MAAM/lW,EAAE+lW,OAAO/lW,EAAE+lW,QAAQ/lW,EAAE+lW,MAAMD,MAAM9lW,EAAE8lW,MAAO,CAAC,SAAS/pV,GAAG/b,EAAED,EAAEY,GAAGC,KAAKY,EAAExB,EAAEY,KAAKiE,EAAE9E,EAAEa,KAAKgD,EAAEjD,EAAEC,KAAK8oJ,KAAK,KAAK9oJ,KAAKe,KAAK,KAAKf,KAAK2F,EAAE,KAAK3F,KAAKklW,MAAM,KAAKllW,KAAKmlW,MAAM,KAAKnlW,KAAKqkW,SAAQ,CAAG,CAAC,SAAS7nV,GAAGpd,EAAED,EAAEY,EAAEV,GAAG,IAAI,IAAIuB,EAAE,EAAEI,EAAE7B,EAAEmB,EAAEP,EAAEV,EAAE2B,EAAEjB,EAAEiB,GAAG3B,EAAEuB,IAAIxB,EAAEkB,GAAGlB,EAAE4B,KAAK5B,EAAE4B,EAAE,GAAG5B,EAAEkB,EAAE,IAAIA,EAAEU,EAAE,OAAOJ,CAAC,CAAC,SAAS628B,GAAGr48B,EAAED,EAAEY,EAAEV,EAAEuB,IAAI,SAASxB,EAAED,EAAEY,EAAEV,EAAEuB,EAAEI,GAAG,KAAKJ,EAAEvB,GAAG,CAAC,GAAGuB,EAAEvB,EAAE,IAAI,CAAC,IAAIiB,EAAEM,EAAEvB,EAAE,EAAEyB,EAAEf,EAAEV,EAAE,EAAEgD,EAAEQ,KAAKwnB,IAAI/pB,GAAGkC,EAAE,GAAGK,KAAKkxB,IAAI,EAAE1xB,EAAE,GAAGS,EAAE,GAAGD,KAAK4yF,KAAKpzF,EAAEG,GAAGlC,EAAEkC,GAAGlC,IAAIQ,EAAER,EAAE,EAAE,GAAG,EAAE,GAAGlB,EAAED,EAAEY,EAAE8C,KAAK8K,IAAItO,EAAEwD,KAAKyK,MAAMvN,EAAEe,EAAE0B,EAAElC,EAAEwC,IAAID,KAAKgL,IAAIjN,EAAEiC,KAAKyK,MAAMvN,GAAGO,EAAEQ,GAAG0B,EAAElC,EAAEwC,IAAI9B,EAAG,CAAC,IAAIH,EAAE1B,EAAEY,GAAG6C,EAAEvD,EAAEqD,EAAE9B,EAAE,IAAIyn4C,GAAGlp4C,EAAEE,EAAEU,GAAGiB,EAAE7B,EAAEyB,GAAGC,GAAG,GAAGwn4C,GAAGlp4C,EAAEE,EAAEuB,GAAGgC,EAAEF,GAAG,CAAC,IAAI2l4C,GAAGlp4C,EAAEyD,EAAEF,GAAGE,IAAIF,IAAI1B,EAAE7B,EAAEyD,GAAG/B,GAAG,GAAG+B,IAAI,KAAK5B,EAAE7B,EAAEuD,GAAG7B,GAAG,GAAG6B,GAAI,CAAC,IAAI1B,EAAE7B,EAAEE,GAAGwB,GAAGwn4C,GAAGlp4C,EAAEE,EAAEqD,GAAG2l4C,GAAGlp4C,IAAIuD,EAAE9B,GAAG8B,GAAG3C,IAAIV,EAAEqD,EAAE,GAAG3C,GAAG2C,IAAI9B,EAAE8B,EAAE,EAAG,CAAC,CAA9Z,CAAgatD,EAAED,EAAEY,GAAG,EAAEV,GAAGD,EAAEiB,OAAO,EAAEO,GAAGouvB,GAAI,CAAC,SAASq5oB,GAAGjp4C,EAAED,EAAEY,GAAG,IAAIV,EAAED,EAAED,GAAGC,EAAED,GAAGC,EAAEW,GAAGX,EAAEW,GAAGV,CAAE,CAAC,SAAS2vvB,GAAG5vvB,EAAED,GAAG,OAAOC,EAAED,GAAG,EAAEC,EAAED,EAAE,EAAE,CAAC,CAAC,SAASmp4C,GAAGlp4C,EAAED,GAAG,IAAIY,EAAEX,EAAEiB,OAAO,GAAGN,GAAG,EAAE,MAAO,CAACX,GAAG,IAAI,IAAIC,EAAEuB,EAAEI,EAAE,GAAGV,EAAE,EAAEA,EAAEP,EAAEO,IAAI,CAAC,IAAIQ,EAAE4C,EAAEtE,EAAEkB,IAAI,IAAIQ,IAAI1B,EAAEkB,GAAG+gP,KAAKx+O,KAAKmjH,IAAIllH,QAAG,IAASF,IAAIA,EAAEE,EAAE,GAAGF,IAAIE,EAAE,GAAGzB,GAAG2B,EAAEa,KAAKxC,GAAGA,EAAE,CAACD,EAAEkB,KAAKjB,EAAEwC,KAAKzC,EAAEkB,IAAK,CAAC,GAAGjB,GAAG2B,EAAEa,KAAKxC,GAAGF,EAAE,EAAE,IAAI,IAAIkD,EAAE,EAAEA,EAAErB,EAAEX,OAAOgC,IAAIrB,EAAEqB,GAAGhC,QAAQlB,IAAIs48B,GAAGz28B,EAAEqB,GAAGlD,EAAE,EAAE6B,EAAEqB,GAAGhC,OAAO,EAAEyse,IAAI9re,EAAEqB,GAAGrB,EAAEqB,GAAGN,MAAM,EAAE5C,IAAI,OAAO6B,CAAC,CAAC,SAAS8re,GAAG1te,EAAED,GAAG,OAAOA,EAAEkiP,KAAKjiP,EAAEiiP,IAAI,CAAC,SAASknpC,GAAGnp4C,EAAED,EAAEY,GAAG,IAAI,IAAIV,EAAEU,EAAEyo4C,oBAAoB5n4C,GAAE,EAAGI,EAAE,EAAEV,EAAEnB,EAAE6B,EAAEV,EAAED,OAAOW,GAAG,EAAE,CAAC,IAAIF,EAAER,EAAEU,GAAGg03C,MAAM7x3C,IAAI/D,EAAE,YAAY0B,EAAEq9H,eAAev9H,GAAE,GAAI,IAAIyB,EAAEvB,EAAEg+3C,WAAW,MAAMz83C,IAAIzB,GAAE,EAAGvB,EAAEgD,EAAE4W,KAAI,EAAG5Z,EAAEgD,EAAE0b,OAAM,EAAI,CAAC,OAAOnd,CAAC,CAAC,SAAS+kyC,GAAGvmyC,EAAED,EAAEY,EAAEV,EAAEuB,GAAG,IAAI,IAAII,EAAEJ,EAAE4n4C,oBAAoBlo4C,EAAE,EAAEQ,EAAE3B,EAAEmB,EAAEQ,EAAET,OAAOC,GAAG,EAAE,CAAC,IAAI+B,EAAEvB,EAAER,GAAGkC,EAAEH,EAAE2y3C,MAAM7x3C,IAAI/D,EAAE,YAAY+B,MAAM,GAAG,aAAaqB,EAAE4f,KAAK,CAAC,IAAItf,EAAEN,EAAE8xgB,SAAS,CAAC30e,KAAKtgC,EAAE,GAAGU,EAAE,CAAC,EAAEa,EAAE823C,iBAAiB723C,EAAE2B,EAAE8xgB,SAAS,CAAC30e,KAAKtgC,GAAGU,EAAE,CAAC,EAAEa,EAAE823C,iBAAiB903C,EAAEJ,EAAE8xgB,SAAS,CAAC30e,KAAKtgC,EAAE,GAAGU,EAAE,CAAC,EAAEa,EAAE823C,iBAAiB723C,EAAEA,GAAGA,EAAE6J,KAAK7J,EAAE6J,KAAK7J,EAAE+B,EAAEA,GAAGA,EAAE8H,KAAK9H,EAAE8H,KAAK9H,EAAE5B,EAAE8B,EAAEA,GAAGA,EAAE4H,KAAK5H,EAAE4H,KAAK5H,IAAG,EAAG9B,EAAEH,IAAG,EAAGG,EAAE4B,IAAG,EAAG7C,EAAEyh8B,SAASn/7B,EAAEkpB,IAAI,CAAC1d,IAAI/K,EAAEwiO,IAAIzkO,EAAE8M,IAAI/K,EAAG,CAAC,CAAC,OAAO7C,CAAC,CAAC8a,GAAG+p7B,UAAU,SAASxl8B,EAAED,EAAEY,EAAEV,GAAG,IAAIuB,EAAEzB,GAAGA,EAAEkB,OAAOW,EAAE6B,KAAKmjH,IAAIxpG,GAAGpd,EAAE,EAAEwB,EAAEzB,EAAE,GAAGY,EAAEX,EAAEiB,OAAON,IAAI,GAAGa,EAAE,IAAI,IAAIN,EAAE,EAAEQ,EAAE3B,EAAEkB,OAAOC,EAAEQ,EAAER,IAAIU,GAAG6B,KAAKmjH,IAAIxpG,GAAGpd,EAAED,EAAEmB,GAAGP,EAAEO,EAAEQ,EAAE,EAAE3B,EAAEmB,EAAE,GAAGP,EAAEX,EAAEiB,OAAON,IAAI,IAAIsC,EAAE,EAAE,IAAI/B,EAAE,EAAEA,EAAEjB,EAAEgB,OAAOC,GAAG,EAAE,CAAC,IAAIkC,EAAEnD,EAAEiB,GAAGP,EAAE+C,EAAEzD,EAAEiB,EAAE,GAAGP,EAAEc,EAAExB,EAAEiB,EAAE,GAAGP,EAAEsC,GAAGQ,KAAKmjH,KAAK5mH,EAAEoD,GAAGpD,EAAEyB,KAAKzB,EAAE0D,EAAE,GAAG1D,EAAEoD,EAAE,KAAKpD,EAAEoD,GAAGpD,EAAE0D,KAAK1D,EAAEyB,EAAE,GAAGzB,EAAEoD,EAAE,IAAK,CAAC,OAAO,IAAIxB,GAAG,IAAIqB,EAAE,EAAEQ,KAAKmjH,KAAK3jH,EAAErB,GAAGA,EAAE,EAAE6Z,GAAG22H,QAAQ,SAASpyI,GAAG,IAAI,IAAID,EAAEC,EAAE,GAAG,GAAGiB,OAAON,EAAE,CAACq0L,SAAS,GAAG60K,MAAM,GAAGvwM,WAAWv5J,GAAGE,EAAE,EAAEuB,EAAE,EAAEA,EAAExB,EAAEiB,OAAOO,IAAI,CAAC,IAAI,IAAII,EAAE,EAAEA,EAAE5B,EAAEwB,GAAGP,OAAOW,IAAI,IAAI,IAAIV,EAAE,EAAEA,EAAEnB,EAAEmB,IAAIP,EAAEq0L,SAASvyL,KAAKzC,EAAEwB,GAAGI,GAAGV,IAAIM,EAAE,GAAGb,EAAEkpW,MAAMpnW,KAAKxC,GAAGD,EAAEwB,EAAE,GAAGP,OAAQ,CAAC,OAAON,CAAC,EAAE0a,GAAGlY,QAAQ8Z,GAAG,IAAIu0tB,GAAG,SAASxxuB,GAAGY,KAAK2/B,KAAKvgC,EAAEugC,KAAK3/B,KAAK+m4C,YAAY3n4C,EAAE2n4C,YAAY/m4C,KAAK89B,OAAO1+B,EAAE0+B,OAAO99B,KAAKymJ,SAASzmJ,KAAK89B,OAAOzO,KAAI,SAAUjwB,GAAG,OAAOA,EAAEmsB,EAAG,IAAGvrB,KAAKgd,MAAM5d,EAAE4d,MAAMhd,KAAKgn4C,YAAW,EAAGhn4C,KAAKyo4C,gBAAgB,GAAGzo4C,KAAKin4C,kBAAkB,IAAIjo3C,GAAGhf,KAAKkn4C,WAAW,IAAIjo3C,GAAGjf,KAAK0o4C,YAAY,IAAIxo3C,GAAGlgB,KAAKym4C,sBAAsB,IAAIp8I,GAAGjrvC,EAAE0+B,OAAO1+B,EAAEugC,MAAM3/B,KAAKkrV,SAAS,IAAIh6T,GAAGlxB,KAAK2o4C,UAAU,IAAIz32C,GAAGlxB,KAAKmn4C,uBAAuBnn4C,KAAK89B,OAAOjR,QAAO,SAAUztB,GAAG,OAAOA,EAAEu73C,kBAAmB,IAAGtr2C,KAAI,SAAUjwB,GAAG,OAAOA,EAAEmsB,EAAG,GAAG,EAAEqltB,GAAGlxuB,UAAU0n4C,SAAS,SAASho4C,EAAED,EAAEY,GAAGC,KAAKgn4C,WAAWuB,GAAG,OAAOvo4C,KAAK89B,OAAO3+B,GAAG,IAAI,IAAIE,EAAEW,KAAK89B,OAAO,GAAGojG,OAAO/9H,IAAI,iBAAiBvC,EAAE,GAAGI,EAAE,EAAEV,EAAElB,EAAE4B,EAAEV,EAAED,OAAOW,GAAG,EAAE,CAAC,IAAIF,EAAER,EAAEU,GAAGqB,EAAEvB,EAAEqxE,QAAQ3vE,EAAE1B,EAAEyqB,GAAGzoB,EAAEhC,EAAEkc,MAAMnc,EAAEC,EAAEug4C,iBAAiBz+3C,EAAE5C,KAAK89B,OAAO,GAAGoh2C,eAAezD,aAAa/43C,EAAE0nvC,GAAG/nvC,EAAEO,GAAG,GAAG5C,KAAK89B,OAAO,GAAGoh2C,eAAery2C,OAAO,IAAItP,GAAGvd,KAAK2/B,MAAMj9B,EAAE3C,GAAG,CAAC,IAAIiD,EAAE3D,EAAEA,EAAEi1gB,SAAS5xgB,EAAE,CAAC,EAAE3C,EAAEZ,EAAEu43C,sBAAiB,EAAO/03C,EAAE,CAAC4oB,GAAG/oB,EAAEgmC,WAAWnmC,EAAEmmC,WAAWj8B,KAAKlK,EAAEkK,KAAK803C,iBAAiBxg4C,EAAEmc,MAAMla,EAAEiiC,SAASniC,EAAEF,EAAEqiC,SAASoltC,GAAG9nvC,GAAGm/7B,SAAS,CAAC,EAAEwic,QAAQhh4C,GAAGpC,EAAEiB,KAAKc,EAAG,CAAC,CAACtD,GAAGuB,EAAE2rC,MAAK,SAAUntC,EAAED,GAAG,OAAOC,EAAE4k4C,QAAQ7k4C,EAAE6k4C,OAAQ,IAAG,IAAI,IAAI5g4C,EAAE,EAAEH,EAAErC,EAAEwC,EAAEH,EAAE5C,OAAO+C,GAAG,EAAE,CAAC,IAAIjB,EAAEc,EAAEG,GAAGa,EAAE9B,EAAE4iC,SAASzhC,EAAEnB,EAAE6a,MAAMzZ,EAAEpB,EAAEk/3C,iBAAiB,GAAGrh4C,KAAKgn4C,WAAW,CAAC,IAAIpj4C,EAAE+hyC,GAAG,OAAO3lyC,KAAK89B,OAAO37B,EAAEnC,KAAK2/B,KAAKxgC,GAAGa,KAAKyo4C,gBAAgB5m4C,KAAK+B,EAAG,MAAM5D,KAAK40X,WAAWzyX,EAAE8B,EAAEX,EAAEvD,EAAE,CAAC,GAAGZ,EAAE2iO,aAAai5B,OAAO37P,EAAEkE,GAAG6uE,QAAQluE,EAAEX,EAAEC,EAAEvD,KAAKgd,MAAO,CAAC,EAAE4ztB,GAAGlxuB,UAAU6uE,OAAO,SAASnvE,EAAED,EAAEY,GAAGC,KAAKqn4C,qBAAqBhn4C,QAAQL,KAAKym4C,sBAAsBL,kBAAkBhn4C,EAAED,EAAEa,KAAKqn4C,qBAAqBtn4C,EAAG,EAAE6wuB,GAAGlxuB,UAAU+2X,YAAY,SAASr3X,EAAED,EAAEY,GAAG,IAAI,IAAIV,EAAE,EAAEuB,EAAEZ,KAAKyo4C,gBAAgBpp4C,EAAEuB,EAAEP,OAAOhB,GAAG,EAAE,CAAC,IAAI2B,EAAEJ,EAAEvB,GAAGW,KAAK40X,WAAW5zX,EAAEA,EAAE+jC,SAAS/jC,EAAEgc,MAAM7d,EAAEY,EAAG,CAAC,EAAE6wuB,GAAGlxuB,UAAU2oE,QAAQ,WAAW,OAAO,IAAIroE,KAAKin4C,kBAAkB5m4C,MAAM,EAAEuwuB,GAAGlxuB,UAAU4n4C,cAAc,WAAW,OAAQtn4C,KAAKun4C,UAAUvn4C,KAAKym4C,sBAAsBC,WAAW,EAAE91pB,GAAGlxuB,UAAU676B,OAAO,SAASn86B,GAAGY,KAAKun4C,WAAWvn4C,KAAKwn4C,mBAAmBpo4C,EAAEsm4C,mBAAmB1l4C,KAAKin4C,kBAAkB1s3C,IAAIva,KAAKyn4C,YAAYro4C,EAAEso4C,kBAAkB1n4C,KAAKkn4C,YAAYln4C,KAAK4o4C,aAAaxp4C,EAAEso4C,kBAAkB1n4C,KAAK0o4C,cAAc1o4C,KAAKym4C,sBAAsBlrd,OAAOn86B,GAAGY,KAAKun4C,UAAS,CAAG,EAAE32pB,GAAGlxuB,UAAU0+I,QAAQ,WAAWp+I,KAAKwn4C,qBAAqBxn4C,KAAKwn4C,mBAAmBppvC,UAAUp+I,KAAKyn4C,YAAYrpvC,UAAUp+I,KAAK4o4C,aAAaxqvC,UAAUp+I,KAAKym4C,sBAAsBrovC,UAAUp+I,KAAKkrV,SAAS9sM,UAAUp+I,KAAK2o4C,UAAUvqvC,UAAW,EAAEwylB,GAAGlxuB,UAAUk1X,WAAW,SAASx1X,EAAED,EAAEY,EAAEV,EAAEuB,GAAG,IAAI,IAAII,EAAE,EAAEV,EAAEgo4C,GAAGnp4C,EAAE,KAAK6B,EAAEV,EAAED,OAAOW,GAAG,EAAE,CAAC,IAAI,IAAIF,EAAER,EAAEU,GAAGqB,EAAE,EAAEG,EAAE,EAAEM,EAAEhC,EAAE0B,EAAEM,EAAEzC,OAAOmC,GAAG,EAAEH,GAAGS,EAAEN,GAAGnC,OAAO,IAAI,IAAIQ,EAAEb,KAAKkrV,SAAS24iC,eAAexh4C,EAAErC,KAAKin4C,kBAAkBjn4C,KAAKkn4C,YAAYtk4C,EAAE/B,EAAEkj4C,aAAarh4C,EAAE,GAAGM,EAAE,GAAGL,EAAE,EAAES,EAAEtC,EAAE6B,EAAES,EAAE/C,OAAOsC,GAAG,EAAE,CAAC,IAAIM,EAAEG,EAAET,GAAG,GAAG,IAAIM,EAAE5C,OAAO,CAAC4C,IAAInC,EAAE,IAAIkC,EAAEnB,KAAKa,EAAErC,OAAO,GAAG,IAAI8B,EAAEnC,KAAK2o4C,UAAU9E,eAAe5g4C,EAAE5C,OAAOL,KAAKin4C,kBAAkBjn4C,KAAK0o4C,aAAazk4C,EAAE9B,EAAE4h4C,aAAa/j4C,KAAKin4C,kBAAkBnG,YAAY793C,EAAE,GAAGgB,EAAEhB,EAAE,GAAGD,GAAGhD,KAAK0o4C,YAAY5H,YAAY783C,EAAEhB,EAAE5C,OAAO,EAAE4D,GAAGvB,EAAEb,KAAKoB,EAAE,GAAGgB,GAAGvB,EAAEb,KAAKoB,EAAE,GAAGD,GAAG,IAAI,IAAIM,EAAE,EAAEA,EAAEL,EAAE5C,OAAOiD,IAAItD,KAAKin4C,kBAAkBnG,YAAY793C,EAAEK,GAAGW,EAAEhB,EAAEK,GAAGN,GAAGhD,KAAK0o4C,YAAY5H,YAAY783C,EAAEX,EAAE,EAAEW,EAAEX,GAAGZ,EAAEb,KAAKoB,EAAEK,GAAGW,GAAGvB,EAAEb,KAAKoB,EAAEK,GAAGN,GAAGb,EAAE4h4C,cAAc9g4C,EAAE5C,OAAO8B,EAAE+h4C,iBAAiBjh4C,EAAE5C,MAAO,CAAC,CAAC,IAAI,IAAIkD,EAAEkX,GAAG/X,EAAEM,GAAGY,EAAE,EAAEA,EAAEL,EAAElD,OAAOuD,GAAG,EAAE5D,KAAKkn4C,WAAWpG,YAAYl+3C,EAAEW,EAAEK,GAAGhB,EAAEW,EAAEK,EAAE,GAAGhB,EAAEW,EAAEK,EAAE,IAAI/C,EAAEkj4C,cAAc1h4C,EAAExB,EAAEqj4C,iBAAiB3g4C,EAAElD,OAAO,CAAE,CAACL,KAAKym4C,sBAAsBN,oBAAoBnm4C,KAAKin4C,kBAAkB5m4C,OAAOjB,EAAEW,EAAEa,EAAEvB,EAAG,EAAE8S,GAAG,aAAay+tB,GAAG,CAACwijB,KAAK,CAAC,SAAS,qBAAqB,IAAIy1G,GAAG,IAAIzq3C,GAAG,CAAC,gBAAgB,IAAIJ,GAAGvP,GAAGym3C,YAAY,oBAAoB79lB,GAAG,CAAC29lB,MAAM,IAAI522C,GAAG,CAAC,iBAAiB,IAAIH,GAAGxP,GAAG8n3C,WAAW,mBAAmB,eAAe,IAAIv42C,GAAGvP,GAAG8n3C,WAAW,iBAAiB,aAAa,IAAIv42C,GAAGvP,GAAG8n3C,WAAW,eAAe,qBAAqB,IAAIv42C,GAAGvP,GAAG8n3C,WAAW,uBAAuB,iBAAiB,IAAIt42C,GAAGxP,GAAG8n3C,WAAW,mBAAmB,wBAAwB,IAAIt42C,GAAGxP,GAAG8n3C,WAAW,0BAA0B,eAAe,IAAIp42C,GAAG1P,GAAG8n3C,WAAW,mBAAmBr1vC,OAAO2nwC,IAAIC,GAAG,SAAS1p4C,GAAG,SAASD,EAAEA,GAAGC,EAAEQ,KAAKI,KAAKb,EAAEk4xB,GAAI,CAAC,OAAOj4xB,IAAID,EAAEK,UAAUJ,IAAID,EAAEO,UAAUJ,OAAOY,OAAOd,GAAGA,EAAEM,YAAYO,YAAYd,EAAEA,EAAEO,UAAUqg4C,YAAY,SAAS5g4C,EAAEY,GAAGX,EAAEM,UAAUqg4C,YAAYng4C,KAAKI,KAAKb,EAAEY,GAAG,IAAIV,EAAEW,KAAKg13C,MAAMuJ,QAAQ,sBAAsB,aAAal/3C,EAAE8B,MAAMihB,WAAM,IAAS/iB,EAAE8B,MAAMA,QAAQnB,KAAKg13C,MAAMuJ,QAAQ,sBAAsBv+3C,KAAKg13C,MAAMuJ,QAAQ,cAAe,EAAEp/3C,EAAEO,UAAUio4C,aAAa,SAASvo4C,GAAG,OAAO,IAAIwxuB,GAAGxxuB,EAAE,EAAED,EAAEO,UAAUko4C,YAAY,WAAW,OAAO5u3C,GAAGhZ,KAAKg13C,MAAM7x3C,IAAI,kBAAkB,EAAEhE,EAAEO,UAAUmo4C,uBAAuB,SAASzo4C,EAAED,EAAEY,EAAEV,EAAEuB,EAAEI,EAAEV,GAAG,OAAOm3B,GAAGte,GAAG/Z,EAAEY,KAAKg13C,MAAM7x3C,IAAI,kBAAkBnD,KAAKg13C,MAAM7x3C,IAAI,yBAAyBnC,EAAE2tO,MAAMruO,GAAGjB,EAAE,EAAEF,EAAEO,UAAUug4C,cAAc,WAAW,OAAO,CAAE,EAAE9g4C,CAAC,CAAxtB,CAA0tBsf,IAAIszf,GAAGrzf,GAAG,CAAC,CAAChU,KAAK,QAAQwjP,WAAW,EAAE3hP,KAAK,SAAS,CAAC7B,KAAK,cAAcwjP,WAAW,EAAE3hP,KAAK,UAAU,GAAGm03C,QAAQx0mB,GAAGp3pB,GAAG,SAASA,GAAG11H,EAAED,EAAEY,EAAEV,EAAEuB,GAAGZ,KAAKwoC,WAAW,CAAC,EAAExoC,KAAKuqK,OAAOxqK,EAAEC,KAAKuM,KAAK,EAAEvM,KAAK+o4C,KAAK3p4C,EAAEY,KAAKgp4C,WAAW,EAAEhp4C,KAAKm4uC,MAAM94uC,EAAEW,KAAKu+3C,QAAQ393C,EAAExB,EAAEsrzC,WAAWu+E,GAAGjp4C,KAAKb,EAAG,CAAC,SAAS8p4C,GAAG7p4C,EAAED,EAAEY,GAAG,GAAGX,EAAED,EAAEosB,GAAGxrB,EAAEipzC,aAAa,GAAG5pzC,EAAE,SAASA,EAAED,GAAG,IAAI,IAAIY,EAAEX,EAAE4pzC,aAAa5pzC,EAAEijH,IAAIjjH,EAAEijH,IAAItiH,GAAG,CAAC,IAAIV,EAAEF,EAAEg5uC,MAAM/4uC,EAAE4pzC,cAAcpozC,EAAEzB,EAAEo/3C,QAAQn/3C,EAAE4pzC,cAAc7pzC,EAAEqpC,WAAWnpC,GAAGuB,CAAE,CAAC,CAApI,CAAsIb,EAAEZ,GAAG,GAAGC,EAAED,EAAEoN,KAAKxM,EAAEipzC,aAAa,GAAG5pzC,IAAID,EAAE6p4C,UAAUjp4C,EAAEsiH,IAAK,CAAC,SAAS6mxC,GAAG9p4C,GAAG,IAAI,IAAID,EAAEY,EAAEV,EAAE,EAAEuB,EAAE,EAAEI,EAAE5B,EAAEiB,OAAOC,EAAEU,EAAE,EAAEJ,EAAEI,EAAEV,EAAEM,IAAIvB,KAAKU,EAAEX,EAAEkB,IAAI2D,GAAG9E,EAAEC,EAAEwB,IAAIqD,IAAI9E,EAAE6D,EAAEjD,EAAEiD,GAAG,OAAO3D,CAAC,CAACy1H,GAAGlkD,MAAM,CAAC,UAAU,QAAQ,aAAa,WAAWkkD,GAAGp1H,UAAUon4C,aAAa,WAAW,IAAI1n4C,EAAEY,KAAK+o4C,KAAK3p4C,EAAEijH,IAAIriH,KAAKgp4C,UAAU,IAAI,IAAI7p4C,EAAEY,EAAEX,EAAE4pzC,aAAa5pzC,EAAEijH,IAAIhjH,EAAE,EAAE2B,EAAE,EAAEV,EAAE,EAAEQ,EAAE,EAAEuB,EAAE,GAAGjD,EAAEijH,IAAItiH,GAAG,CAAC,GAAGiB,GAAG,EAAE,CAAC,IAAIwB,EAAEpD,EAAE4pzC,aAAa3pzC,EAAE,EAAEmD,EAAExB,EAAEwB,GAAG,CAAE,CAAC,GAAGxB,IAAI,IAAI3B,GAAG,IAAIA,EAAEiB,GAAGlB,EAAEiszC,cAAcvqzC,GAAG1B,EAAEiszC,cAAc,IAAIhszC,IAAIF,GAAGkD,EAAER,KAAK1C,GAAGA,EAAE,IAAIA,EAAE0C,KAAK,IAAIjB,EAAEN,EAAEQ,QAAS,CAAC,GAAG,IAAIzB,EAAE,MAAM,IAAImoB,MAAM,mBAAmBnoB,GAAGF,GAAGA,EAAE0C,KAAK1C,EAAE,GAAGoxB,QAAS,CAAC,CAAC,OAAOpxB,GAAGkD,EAAER,KAAK1C,GAAGkD,CAAC,EAAEyyH,GAAGp1H,UAAU2rC,KAAK,WAAW,IAAIjsC,EAAEY,KAAK+o4C,KAAK3p4C,EAAEijH,IAAIriH,KAAKgp4C,UAAU,IAAI,IAAI7p4C,EAAEC,EAAE4pzC,aAAa5pzC,EAAEijH,IAAItiH,EAAE,EAAEV,EAAE,EAAEuB,EAAE,EAAEI,EAAE,EAAEV,EAAE,IAAIQ,GAAE,IAAKuB,EAAE,IAAIG,GAAE,IAAKpD,EAAEijH,IAAIljH,GAAG,CAAC,GAAGE,GAAG,EAAE,CAAC,IAAIyD,EAAE1D,EAAE4pzC,aAAajpzC,EAAE,EAAE+C,EAAEzD,EAAEyD,GAAG,CAAE,CAAC,GAAGzD,IAAI,IAAIU,GAAG,IAAIA,GAAGa,GAAGxB,EAAEiszC,eAAe/qzC,IAAIA,EAAEM,GAAGA,EAAEE,IAAIA,EAAEF,IAAII,GAAG5B,EAAEiszC,eAAehpzC,IAAIA,EAAErB,GAAGA,EAAEwB,IAAIA,EAAExB,QAAQ,GAAG,IAAIjB,EAAE,MAAM,IAAIynB,MAAM,mBAAmBznB,EAAE,CAAC,MAAO,CAACO,EAAE+B,EAAEvB,EAAE0B,EAAE,EAAEsyH,GAAGp1H,UAAUyp4C,UAAU,SAAS/p4C,EAAED,EAAEY,GAAG,IAAIV,EAAEuB,EAAEI,EAAEhB,KAAKuqK,OAAO1nK,KAAK6yF,IAAI,EAAE31F,GAAGO,EAAEN,KAAKuqK,OAAOnrK,EAAE0B,EAAEd,KAAKuqK,OAAOprK,EAAEkD,EAAErC,KAAK8m4C,eAAetk4C,EAAEsyH,GAAGlkD,MAAM5wE,KAAKuM,MAAM,SAASzJ,EAAE1D,GAAG,IAAI,IAAID,EAAE,EAAEA,EAAEC,EAAEiB,OAAOlB,IAAI,CAAC,IAAIY,EAAEX,EAAED,GAAGC,EAAED,GAAG,CAAC,KAAKY,EAAEkE,EAAE3D,GAAGU,EAAE,IAAI,IAAI6B,KAAKsmC,GAAGtmC,KAAKskK,KAAKtkK,KAAKkxB,KAAK,IAAI,KAAKh0B,EAAEiD,EAAElC,GAAGE,GAAG6B,KAAKsmC,GAAG,MAAM,GAAI,CAAC,CAAC,OAAOnpC,KAAKuM,MAAM,KAAK,EAAE,IAAI1L,EAAE,GAAG,IAAIxB,EAAE,EAAEA,EAAEgD,EAAEhC,OAAOhB,IAAIwB,EAAExB,GAAGgD,EAAEhD,GAAG,GAAGyD,EAAET,EAAExB,GAAG,MAAM,KAAK,EAAE,IAAIxB,EAAE,EAAEA,EAAEgD,EAAEhC,OAAOhB,IAAIyD,EAAET,EAAEhD,IAAI,MAAM,KAAK,EAAE,IAAIgD,EAAE,SAASjD,GAAG,IAAID,EAAEC,EAAEiB,OAAO,GAAGlB,GAAG,EAAE,MAAO,CAACC,GAAG,IAAI,IAAIW,EAAEV,EAAEuB,EAAE,GAAGI,EAAE,EAAEA,EAAE7B,EAAE6B,IAAI,CAAC,IAAIV,EAAE4o4C,GAAG9p4C,EAAE4B,IAAI,IAAIV,SAAI,IAASjB,IAAIA,EAAEiB,EAAE,GAAGjB,IAAIiB,EAAE,GAAGP,GAAGa,EAAEiB,KAAK9B,GAAGA,EAAE,CAACX,EAAE4B,KAAKjB,EAAE8B,KAAKzC,EAAE4B,IAAK,CAAC,OAAOjB,GAAGa,EAAEiB,KAAK9B,GAAGa,CAAC,CAA3L,CAA6LyB,GAAGhD,EAAE,EAAEA,EAAEgD,EAAEhC,OAAOhB,IAAI,IAAIuB,EAAE,EAAEA,EAAEyB,EAAEhD,GAAGgB,OAAOO,IAAIkC,EAAET,EAAEhD,GAAGuB,IAAK,IAAIyB,EAAEhC,OAAOgC,EAAEA,EAAE,GAAGG,EAAE,QAAQA,EAAE,IAAII,EAAE,CAAC2J,KAAK,UAAUw4B,SAAS,CAACx4B,KAAK/J,EAAEsiC,YAAYziC,GAAGmmC,WAAWxoC,KAAKwoC,YAAY,MAAO,OAAOxoC,OAAO4C,EAAE2oB,GAAGvrB,KAAKurB,IAAI3oB,CAAC,EAAE,IAAIi4K,GAAG92C,GAAG,SAASA,GAAG3kI,EAAED,GAAGa,KAAKsG,QAAQ,EAAEtG,KAAK0K,KAAK,KAAK1K,KAAKuqK,OAAO,KAAKvqK,KAAKK,OAAO,EAAEL,KAAK+o4C,KAAK3p4C,EAAEY,KAAKm4uC,MAAM,GAAGn4uC,KAAKu+3C,QAAQ,GAAGv+3C,KAAK60rC,UAAU,GAAGz1rC,EAAEsrzC,WAAW0+E,GAAGpp4C,KAAKb,GAAGa,KAAKK,OAAOL,KAAK60rC,UAAUx0rC,MAAO,CAAC,SAAS+o4C,GAAGhq4C,EAAED,EAAEY,GAAG,KAAKX,EAAED,EAAEmH,QAAQvG,EAAEipzC,aAAa,IAAI5pzC,EAAED,EAAEuL,KAAK3K,EAAEwrzC,aAAa,IAAInszC,EAAED,EAAEorK,OAAOxqK,EAAEipzC,aAAa,IAAI5pzC,EAAED,EAAE01rC,UAAUhzrC,KAAK9B,EAAEsiH,KAAK,IAAIjjH,EAAED,EAAEg5uC,MAAMt2uC,KAAK9B,EAAEwrzC,cAAc,IAAInszC,GAAGD,EAAEo/3C,QAAQ183C,KAAK,SAASzC,GAAG,IAAI,IAAID,EAAE,KAAKY,EAAEX,EAAE4pzC,aAAa5pzC,EAAEijH,IAAIjjH,EAAEijH,IAAItiH,GAAG,CAAC,IAAIV,EAAED,EAAE4pzC,cAAc,EAAE7pzC,EAAE,IAAIE,EAAED,EAAEmszC,aAAa,IAAIlszC,EAAED,EAAE6rzC,YAAY,IAAI5rzC,EAAED,EAAE8rzC,aAAa,IAAI7rzC,EAAED,EAAEgszC,eAAe,IAAI/rzC,EAAED,EAAE4pzC,aAAa,IAAI3pzC,EAAED,EAAEiszC,cAAc,IAAIhszC,EAAED,EAAEkszC,cAAc,IAAK,CAAC,OAAOnszC,CAAC,CAA1P,CAA4PY,GAAI,CAAC,SAAS+4W,GAAG15W,EAAED,EAAEY,GAAG,GAAG,IAAIX,EAAE,CAAC,IAAIC,EAAE,IAAIw7K,GAAG96K,EAAEA,EAAEipzC,aAAajpzC,EAAEsiH,KAAKhjH,EAAEgB,SAASlB,EAAEE,EAAEqL,MAAMrL,EAAG,CAAC,CAAC0kI,GAAGrkI,UAAUyyE,QAAQ,SAAS/yE,GAAG,GAAGA,EAAE,GAAGA,GAAGY,KAAK60rC,UAAUx0rC,OAAO,MAAM,IAAImnB,MAAM,+BAA+BxnB,KAAK+o4C,KAAK1mxC,IAAIriH,KAAK60rC,UAAUz1rC,GAAG,IAAID,EAAEa,KAAK+o4C,KAAK//E,aAAahpzC,KAAK+o4C,KAAK1mxC,IAAI,OAAO,IAAI6pqB,GAAGlsxB,KAAK+o4C,KAAK5p4C,EAAEa,KAAKuqK,OAAOvqK,KAAKm4uC,MAAMn4uC,KAAKu+3C,QAAQ,EAAE,IAAI8K,GAAG,CAACC,WAAW,SAASlq4C,EAAED,GAAGa,KAAK89B,OAAO1+B,EAAEsrzC,WAAW5x8B,GAAG,CAAC,EAAE35W,EAAG,EAAEoq4C,kBAAkBr9mB,GAAGs9mB,gBAAgB3utC,IAAIs2jB,GAAGk4pB,GAAGE,kBAAkB34zC,MAAM03B,GAAGzlG,KAAK6yF,IAAI,EAAE,IAAI,SAAS+zyC,GAAGrq4C,EAAED,EAAEY,EAAEV,EAAEuB,EAAEI,EAAEV,EAAEQ,GAAG1B,EAAE0h4C,YAAY3h4C,EAAEY,EAAE,EAAE8C,KAAKyK,MAAMjO,EAAEipG,IAAIhoG,EAAEM,EAAE0nG,GAAG,EAAEtnG,EAAEsnG,GAAG,EAAEzlG,KAAKogD,MAAMniD,GAAI,CAAC,IAAI4o4C,GAAG,SAAStq4C,GAAGY,KAAK2/B,KAAKvgC,EAAEugC,KAAK3/B,KAAK+m4C,YAAY3n4C,EAAE2n4C,YAAY/m4C,KAAK89B,OAAO1+B,EAAE0+B,OAAO99B,KAAKymJ,SAASzmJ,KAAK89B,OAAOzO,KAAI,SAAUjwB,GAAG,OAAOA,EAAEmsB,EAAG,IAAGvrB,KAAKgd,MAAM5d,EAAE4d,MAAMhd,KAAKgn4C,YAAW,EAAGhn4C,KAAKin4C,kBAAkB,IAAIvn3C,GAAG1f,KAAKkn4C,WAAW,IAAIjo3C,GAAGjf,KAAKym4C,sBAAsB,IAAIp8I,GAAGjrvC,EAAE0+B,OAAO1+B,EAAEugC,MAAM3/B,KAAKkrV,SAAS,IAAIh6T,GAAGlxB,KAAKmn4C,uBAAuBnn4C,KAAK89B,OAAOjR,QAAO,SAAUztB,GAAG,OAAOA,EAAEu73C,kBAAmB,IAAGtr2C,KAAI,SAAUjwB,GAAG,OAAOA,EAAEmsB,EAAG,GAAG,EAAE,SAASo+2C,GAAGvq4C,EAAED,GAAG,OAAOC,EAAE6E,IAAI9E,EAAE8E,IAAI7E,EAAE6E,EAAE,GAAG7E,EAAE6E,EAAE,OAAO7E,EAAE4D,IAAI7D,EAAE6D,IAAI5D,EAAE4D,EAAE,GAAG5D,EAAE4D,EAAE,KAAK,CAAC0m4C,GAAGhq4C,UAAU0n4C,SAAS,SAASho4C,EAAED,EAAEY,GAAGC,KAAK0rC,SAAS,GAAG1rC,KAAKgn4C,WAAWuB,GAAG,iBAAiBvo4C,KAAK89B,OAAO3+B,GAAG,IAAI,IAAIE,EAAE,EAAEuB,EAAExB,EAAEC,EAAEuB,EAAEP,OAAOhB,GAAG,EAAE,CAAC,IAAI2B,EAAEJ,EAAEvB,GAAGiB,EAAEU,EAAEmxE,QAAQrxE,EAAEE,EAAEuqB,GAAGlpB,EAAErB,EAAEgc,MAAMxa,EAAExB,EAAEqg4C,iBAAiBv+3C,EAAE9C,KAAK89B,OAAO,GAAGoh2C,eAAezD,aAAa563C,EAAEupvC,GAAG9pvC,EAAEwC,GAAG,GAAG9C,KAAK89B,OAAO,GAAGoh2C,eAAery2C,OAAO,IAAItP,GAAGvd,KAAK2/B,MAAM9+B,EAAEd,GAAG,CAAC,IAAI6C,EAAE,CAAC2oB,GAAGzqB,EAAEug4C,iBAAiB7+3C,EAAEwa,MAAM3a,EAAE0iC,SAASjiC,EAAEjC,EAAEkkC,SAASoltC,GAAG7pvC,GAAGkoC,WAAWloC,EAAEkoC,WAAWj8B,KAAKjM,EAAEiM,KAAKi17B,SAAS,CAAC,GAAGxh8B,KAAKgn4C,WAAWhn4C,KAAK0rC,SAAS7pC,KAAK8jyC,GAAG,iBAAiB3lyC,KAAK89B,OAAOl7B,EAAE5C,KAAK2/B,KAAKxgC,IAAIa,KAAK40X,WAAWhyX,EAAEA,EAAEmiC,SAAS1iC,EAAEtC,EAAE,CAAC,GAAGZ,EAAE2iO,aAAai5B,OAAOz6P,EAAEsC,EAAEmiC,SAAS1iC,EAAEG,EAAExC,KAAKgd,OAAM,EAAI,CAAC,CAAC,EAAE0s3C,GAAGhq4C,UAAU+2X,YAAY,SAASr3X,EAAED,EAAEY,GAAG,IAAI,IAAIV,EAAE,EAAEuB,EAAEZ,KAAK0rC,SAASrsC,EAAEuB,EAAEP,OAAOhB,GAAG,EAAE,CAAC,IAAI2B,EAAEJ,EAAEvB,GAAGW,KAAK40X,WAAW5zX,EAAEA,EAAE+jC,SAAS/jC,EAAEgc,MAAM7d,EAAEY,EAAG,CAAC,EAAE2p4C,GAAGhq4C,UAAU6uE,OAAO,SAASnvE,EAAED,EAAEY,GAAGC,KAAKqn4C,qBAAqBhn4C,QAAQL,KAAKym4C,sBAAsBL,kBAAkBhn4C,EAAED,EAAEa,KAAKqn4C,qBAAqBtn4C,EAAG,EAAE2p4C,GAAGhq4C,UAAU2oE,QAAQ,WAAW,OAAO,IAAIroE,KAAKin4C,kBAAkB5m4C,MAAM,EAAEqp4C,GAAGhq4C,UAAU4n4C,cAAc,WAAW,OAAQtn4C,KAAKun4C,UAAUvn4C,KAAKym4C,sBAAsBC,WAAW,EAAEgD,GAAGhq4C,UAAU676B,OAAO,SAASn86B,GAAGY,KAAKun4C,WAAWvn4C,KAAKwn4C,mBAAmBpo4C,EAAEsm4C,mBAAmB1l4C,KAAKin4C,kBAAkBl13B,IAAI/xgB,KAAKyn4C,YAAYro4C,EAAEso4C,kBAAkB1n4C,KAAKkn4C,aAAaln4C,KAAKym4C,sBAAsBlrd,OAAOn86B,GAAGY,KAAKun4C,UAAS,CAAG,EAAEmC,GAAGhq4C,UAAU0+I,QAAQ,WAAWp+I,KAAKwn4C,qBAAqBxn4C,KAAKwn4C,mBAAmBppvC,UAAUp+I,KAAKyn4C,YAAYrpvC,UAAUp+I,KAAKym4C,sBAAsBrovC,UAAUp+I,KAAKkrV,SAAS9sM,UAAW,EAAEsrvC,GAAGhq4C,UAAUk1X,WAAW,SAASx1X,EAAED,EAAEY,EAAEV,EAAEuB,GAAG,IAAI,IAAII,EAAE,EAAEV,EAAEgo4C,GAAGnp4C,EAAE,KAAK6B,EAAEV,EAAED,OAAOW,GAAG,EAAE,CAAC,IAAI,IAAIF,EAAER,EAAEU,GAAGqB,EAAE,EAAEG,EAAE,EAAEM,EAAEhC,EAAE0B,EAAEM,EAAEzC,OAAOmC,GAAG,EAAEH,GAAGS,EAAEN,GAAGnC,OAAO,IAAI,IAAIQ,EAAEb,KAAKkrV,SAAS24iC,eAAe,EAAE7j4C,KAAKin4C,kBAAkBjn4C,KAAKkn4C,YAAYtk4C,EAAE,EAAEF,EAAE5B,EAAE8B,EAAEF,EAAErC,OAAOuC,GAAG,EAAE,CAAC,IAAII,EAAEN,EAAEE,GAAG,GAAG,IAAII,EAAE3C,WAAW0F,EAAE/C,GAAGylC,OAAM,SAAUrpC,GAAG,OAAOA,EAAE6E,EAAE,CAAE,KAAI8B,EAAE0iC,OAAM,SAAUrpC,GAAG,OAAOA,EAAE6E,EAAE,IAAK,KAAI8B,EAAE0iC,OAAM,SAAUrpC,GAAG,OAAOA,EAAE4D,EAAE,CAAE,KAAI+C,EAAE0iC,OAAM,SAAUrpC,GAAG,OAAOA,EAAE4D,EAAE,IAAK,KAAI,IAAI,IAAIL,EAAE,EAAES,EAAE,EAAEA,EAAEJ,EAAE3C,OAAO+C,IAAI,CAAC,IAAIH,EAAED,EAAEI,GAAG,GAAGA,GAAG,EAAE,CAAC,IAAIjB,EAAEa,EAAEI,EAAE,GAAG,IAAIum4C,GAAG1m4C,EAAEd,GAAG,CAACtB,EAAEkj4C,aAAa,EAAE7y2C,GAAG4y2C,0BAA0Bjj4C,EAAEb,KAAKkrV,SAAS24iC,eAAe,EAAE7j4C,KAAKin4C,kBAAkBjn4C,KAAKkn4C,aAAa,IAAIjj4C,EAAEhB,EAAEiyB,IAAI/yB,GAAGst3C,QAAQF,QAAQjs3C,EAAEnB,EAAE43V,KAAK92V,GAAGN,EAAEW,EAAE,QAAQX,EAAE,GAAG8m4C,GAAGzp4C,KAAKin4C,kBAAkBhk4C,EAAEgB,EAAEhB,EAAED,EAAEiB,EAAEA,EAAEA,EAAEjB,EAAE,EAAE,EAAEL,GAAG8m4C,GAAGzp4C,KAAKin4C,kBAAkBhk4C,EAAEgB,EAAEhB,EAAED,EAAEiB,EAAEA,EAAEA,EAAEjB,EAAE,EAAE,EAAEL,GAAG8m4C,GAAGzp4C,KAAKin4C,kBAAkB9k4C,EAAE8B,EAAE9B,EAAEa,EAAEiB,EAAEA,EAAEA,EAAEjB,EAAE,EAAE,EAAEL,GAAGW,GAAGmm4C,GAAGzp4C,KAAKin4C,kBAAkB9k4C,EAAE8B,EAAE9B,EAAEa,EAAEiB,EAAEA,EAAEA,EAAEjB,EAAE,EAAE,EAAEL,GAAG,IAAIY,EAAE1C,EAAEkj4C,aAAa/j4C,KAAKkn4C,WAAWpG,YAAYv93C,EAAEA,EAAE,EAAEA,EAAE,GAAGvD,KAAKkn4C,WAAWpG,YAAYv93C,EAAE,EAAEA,EAAE,EAAEA,EAAE,GAAG1C,EAAEkj4C,cAAc,EAAElj4C,EAAEqj4C,iBAAiB,CAAE,CAAC,CAAC,CAAC,CAAC,GAAGrj4C,EAAEkj4C,aAAa1h4C,EAAE6uB,GAAG4y2C,0BAA0Bjj4C,EAAEb,KAAKkrV,SAAS24iC,eAAexh4C,EAAErC,KAAKin4C,kBAAkBjn4C,KAAKkn4C,aAAa,YAAY/1pB,GAAG/xuB,EAAEmN,MAAM,CAAC,IAAI,IAAI3I,EAAE,GAAGiB,EAAE,GAAGrB,EAAE3C,EAAEkj4C,aAAarg4C,EAAE,EAAEG,EAAE/C,EAAE4C,EAAEG,EAAExD,OAAOqD,GAAG,EAAE,CAAC,IAAIiC,EAAE9B,EAAEH,GAAG,GAAG,IAAIiC,EAAEtF,OAAO,CAACsF,IAAI7E,EAAE,IAAI+D,EAAEhD,KAAK+B,EAAEvD,OAAO,GAAG,IAAI,IAAI8D,EAAE,EAAEA,EAAEwB,EAAEtF,OAAO8D,IAAI,CAAC,IAAIO,EAAEiB,EAAExB,GAAGsl4C,GAAGzp4C,KAAKin4C,kBAAkBvi4C,EAAET,EAAES,EAAE1B,EAAE,EAAE,EAAE,EAAE,EAAE,GAAGY,EAAE/B,KAAK6C,EAAET,GAAGL,EAAE/B,KAAK6C,EAAE1B,EAAG,CAAC,CAAC,CAAC,IAAI,IAAI8B,EAAE2V,GAAG7W,EAAEiB,GAAGgB,EAAE,EAAEA,EAAEf,EAAEzE,OAAOwF,GAAG,EAAE7F,KAAKkn4C,WAAWpG,YAAYt93C,EAAEsB,EAAEe,GAAGrC,EAAEsB,EAAEe,EAAE,GAAGrC,EAAEsB,EAAEe,EAAE,IAAIhF,EAAEqj4C,iBAAiBp/3C,EAAEzE,OAAO,EAAEQ,EAAEkj4C,cAAc1h4C,CAAE,CAAC,CAAC,IAAI0D,EAAE/F,KAAKym4C,sBAAsBN,oBAAoBnm4C,KAAKin4C,kBAAkB5m4C,OAAOjB,EAAEW,EAAEa,EAAEvB,EAAG,EAAE8S,GAAG,sBAAsBu33C,GAAG,CAACt2G,KAAK,CAAC,SAAS,cAAc,IAAIw2G,GAAG,CAAC5U,MAAM,IAAI522C,GAAG,CAAC,yBAAyB,IAAIH,GAAGxP,GAAG,wBAAwB,2BAA2B,uBAAuB,IAAIuP,GAAGvP,GAAG,wBAAwB,yBAAyB,2BAA2B,IAAIwP,GAAGxP,GAAG,wBAAwB,6BAA6B,kCAAkC,IAAIwP,GAAGxP,GAAG,wBAAwB,oCAAoC,yBAAyB,IAAI0P,GAAG1P,GAAG,wBAAwB,2BAA2B,wBAAwB,IAAIuP,GAAGvP,GAAG,wBAAwB,0BAA0B,sBAAsB,IAAIuP,GAAGvP,GAAG,wBAAwB,wBAAwB,mCAAmC,IAAIwP,GAAGxP,GAAG,wBAAwB,wCAAwCo73C,GAAG,SAASzq4C,GAAG,SAASD,EAAEA,GAAGC,EAAEQ,KAAKI,KAAKb,EAAEyq4C,GAAI,CAAC,OAAOxq4C,IAAID,EAAEK,UAAUJ,IAAID,EAAEO,UAAUJ,OAAOY,OAAOd,GAAGA,EAAEM,YAAYO,YAAYd,EAAEA,EAAEO,UAAUio4C,aAAa,SAASvo4C,GAAG,OAAO,IAAIsq4C,GAAGtq4C,EAAE,EAAED,EAAEO,UAAUko4C,YAAY,WAAW,OAAO5u3C,GAAGhZ,KAAKg13C,MAAM7x3C,IAAI,4BAA4B,EAAEhE,EAAEO,UAAUsg4C,KAAK,WAAW,OAAO,CAAE,EAAE7g4C,EAAEO,UAAUmo4C,uBAAuB,SAASzo4C,EAAED,EAAEY,EAAEV,EAAE2B,EAAEV,EAAEQ,EAAEuB,GAAG,IAAIG,EAAE2W,GAAG/Z,EAAEY,KAAKg13C,MAAM7x3C,IAAI,4BAA4BnD,KAAKg13C,MAAM7x3C,IAAI,mCAAmC7C,EAAEquO,MAAM7tO,GAAGgC,EAAE9C,KAAKg13C,MAAM7x3C,IAAI,yBAAyBmxgB,SAASn1gB,EAAEY,GAAGc,EAAEb,KAAKg13C,MAAM7x3C,IAAI,uBAAuBmxgB,SAASn1gB,EAAEY,GAAG6C,EAAE,SAASxD,EAAED,EAAEY,EAAEV,GAAG,IAAI,IAAI2B,EAAE,GAAGV,EAAE,EAAEQ,EAAE1B,EAAEkB,EAAEQ,EAAET,OAAOC,GAAG,EAAE,CAAC,IAAI+B,EAAEvB,EAAER,GAAGkC,EAAE,CAACH,EAAE4B,EAAE5B,EAAEW,EAAE,EAAE,GAAG8W,GAAGtX,EAAEA,EAAErD,GAAG6B,EAAEa,KAAK,IAAIjB,EAAE4B,EAAE,GAAGA,EAAE,GAAGA,EAAE,GAAGA,EAAE,IAAK,CAAC,OAAOxB,CAAC,CAAzI,CAA2IwB,EAAEH,GAAGK,EAAE,SAAStD,EAAED,EAAEY,EAAEV,GAAG,IAAI,IAAI2B,EAAE,GAAGV,EAAE,GAAGQ,EAAEzB,EAAE,GAAGF,EAAEkD,EAAEhD,EAAE,GAAGF,EAAEqD,EAAEnD,EAAE,IAAIF,EAAE2D,EAAEzD,EAAE,IAAIF,EAAE0B,EAAExB,EAAE,GAAGU,EAAE6C,EAAEvD,EAAE,GAAGU,EAAE2C,EAAErD,EAAE,IAAIU,EAAEiD,EAAE3D,EAAE,IAAIU,EAAE4C,EAAE,EAAES,EAAEhE,EAAEuD,EAAES,EAAE/C,OAAOsC,GAAG,EAAE,CAAC,IAAI,IAAIM,EAAE,GAAGd,EAAE,GAAG8B,EAAE,EAAEX,EAAEF,EAAET,GAAGsB,EAAEX,EAAEjD,OAAO4D,GAAG,EAAE,CAAC,IAAIV,EAAED,EAAEW,GAAGL,EAAEL,EAAEU,EAAEY,EAAEtB,EAAEP,EAAEQ,EAAEnE,EAAE,GAAGuE,EAAEvE,EAAE,GAAGwF,EAAExF,EAAE,IAAIqE,EAAErE,EAAE,GAAGuE,EAAEvE,EAAE,GAAGwF,EAAExF,EAAE,IAAIwE,EAAExE,EAAE,GAAGuE,EAAEvE,EAAE,GAAGwF,EAAExF,EAAE,IAAIsG,EAAEtG,EAAE,GAAGuE,EAAEvE,EAAE,GAAGwF,EAAExF,EAAE,IAAI8E,EAAEN,EAAErB,EAAEkC,EAAEiB,EAAE7C,EAAEgC,EAAEtB,EAAE3C,EAAEgF,EAAEnC,EAAEd,EAAEmD,EAAElC,EAAEnB,EAAEwB,EAAEyB,EAAE3C,EAAE4C,EAAE,IAAIhF,GAAG4C,EAAE1C,GAAG4D,GAAGhB,EAAErB,GAAGqC,GAAGkB,EAAED,EAAExB,EAAEO,EAAEzB,EAAEpB,KAAK+D,GAAG,IAAIZ,EAAE,IAAIpE,EAAEkE,EAAEZ,EAAE2B,EAAE3B,GAAGc,EAAEW,EAAEI,EAAE7B,EAAE/B,EAAEN,KAAKmD,EAAG,CAAChE,EAAEa,KAAKoB,GAAG3C,EAAEuB,KAAKM,EAAG,CAAC,MAAO,CAACnB,EAAEV,EAAE,CAA9b,CAAgcjB,EAAEwB,EAAEiC,EAAET,GAAG,OAAO,SAASjD,EAAED,EAAEY,GAAG,IAAIV,EAAE,IAAIo4B,GAAG13B,EAAEZ,KAAKE,EAAEyq4C,GAAG/p4C,EAAEZ,EAAE,KAAK,IAAI,IAAIyB,EAAE,EAAEA,EAAEzB,EAAEkB,OAAOO,IAAI,IAAI,IAAII,EAAE7B,EAAEyB,GAAGN,EAAElB,EAAEwB,GAAGE,EAAE,EAAEA,EAAEE,EAAEX,OAAO,EAAES,IAAI,CAAC,IAAIuB,EAAErB,EAAEF,GAAG0B,EAAE,CAACH,EAAErB,EAAEF,EAAE,GAAGR,EAAEQ,EAAE,GAAGR,EAAEQ,GAAGuB,GAAG61B,GAAGn4B,EAAEyC,KAAKnD,EAAEwD,KAAKgL,IAAIxO,EAAEyq4C,GAAG/p4C,EAAEyC,IAAK,CAAC,OAAOnD,IAAI,KAAKA,CAAC,CAAlN,CAAoNqD,EAAE,GAAGA,EAAE,GAAGE,EAAE,EAAEzD,CAAC,CAA95C,CAAg6Csf,IAAI,SAASsr3C,GAAG3q4C,EAAED,GAAG,OAAOC,EAAE6E,EAAE9E,EAAE8E,EAAE7E,EAAE4D,EAAE7D,EAAE6D,CAAC,CAAC,SAAS8m4C,GAAG1q4C,EAAED,GAAG,GAAG,IAAIC,EAAEiB,OAAO,CAAC,IAAI,IAAIN,EAAEV,EAAE,EAAEuB,EAAEzB,EAAEE,MAAMU,GAAGa,EAAE2xI,OAAOxyI,IAAI,KAAKA,EAAEZ,EAAEE,MAAM,OAAO,IAAI,KAAKA,EAAEF,EAAEkB,OAAOhB,IAAI,CAAC,IAAI2B,EAAE7B,EAAEE,GAAGiB,EAAElB,EAAE,GAAG0B,EAAEf,EAAEm1B,IAAIt0B,GAAGyB,EAAErB,EAAEk0B,IAAIt0B,GAAG4B,EAAElC,EAAE40B,IAAIt0B,GAAGkC,EAAEin4C,GAAGjp4C,EAAEA,GAAGD,EAAEkp4C,GAAGjp4C,EAAEuB,GAAGO,EAAEmn4C,GAAG1n4C,EAAEA,GAAGK,EAAEqn4C,GAAGvn4C,EAAE1B,GAAGkC,EAAE+m4C,GAAGvn4C,EAAEH,GAAGM,EAAEG,EAAEF,EAAE/B,EAAEA,EAAEuC,GAAGR,EAAEF,EAAE7B,EAAEmC,GAAGL,EAAEM,GAAGH,EAAEE,EAAEnC,EAAE6B,GAAGC,EAAER,EAAEvB,EAAE+E,GAAG,EAAEvC,EAAEH,GAAGlD,EAAE4F,EAAEvC,EAAEpC,EAAE2E,EAAE1C,EAAE,GAAGykC,SAASvlC,GAAG,OAAOA,CAAC,CAAC,OAAO,GAAG,CAAC,IAAI,IAAI8B,EAAE,IAAIX,EAAE,EAAEC,EAAEpE,EAAEmE,EAAEC,EAAElD,OAAOiD,GAAG,EAAEW,EAAEpB,KAAKgL,IAAI5J,EAAEV,EAAED,GAAGqC,GAAG,OAAO1B,CAAC,CAAC,IAAI+l4C,GAAGtr3C,GAAG,CAAC,CAAChU,KAAK,eAAewjP,WAAW,EAAE3hP,KAAK,SAAS,CAAC7B,KAAK,SAASwjP,WAAW,EAAE3hP,KAAK,UAAU,GAAGm03C,QAAQuJ,GAAGvr3C,GAAG,CAAC,CAAChU,KAAK,SAASwjP,WAAW,EAAE3hP,KAAK,WAAW,CAAC7B,KAAK,gBAAgBwjP,WAAW,EAAE3hP,KAAK,aAAam03C,QAAQwJ,GAAGb,GAAGE,kBAAkB34zC,MAAMu5zC,GAAGtn4C,KAAKuxH,IAAIvxH,KAAKsmC,GAAG,IAAI,MAAMih2C,GAAGvn4C,KAAK6yF,IAAI,EAAE,IAAI,GAAG20yC,GAAG,SAASjr4C,GAAG,IAAID,EAAEa,KAAKA,KAAK2/B,KAAKvgC,EAAEugC,KAAK3/B,KAAK+m4C,YAAY3n4C,EAAE2n4C,YAAY/m4C,KAAK89B,OAAO1+B,EAAE0+B,OAAO99B,KAAKymJ,SAASzmJ,KAAK89B,OAAOzO,KAAI,SAAUjwB,GAAG,OAAOA,EAAEmsB,EAAG,IAAGvrB,KAAKgd,MAAM5d,EAAE4d,MAAMhd,KAAKgn4C,YAAW,EAAGhn4C,KAAKyo4C,gBAAgB,GAAGzo4C,KAAKsq4C,eAAe,GAAGtq4C,KAAKuq4C,UAAU,CAAC,EAAEvq4C,KAAK89B,OAAO5Y,SAAQ,SAAU9lB,GAAGD,EAAEor4C,UAAUnr4C,EAAEmsB,IAAI,CAAC,CAAG,IAAGvrB,KAAKin4C,kBAAkB,IAAItl3C,GAAG3hB,KAAKwq4C,mBAAmB,IAAI5o3C,GAAG5hB,KAAKkn4C,WAAW,IAAIjo3C,GAAGjf,KAAKym4C,sBAAsB,IAAIp8I,GAAGjrvC,EAAE0+B,OAAO1+B,EAAEugC,MAAM3/B,KAAKkrV,SAAS,IAAIh6T,GAAGlxB,KAAKyq4C,cAAc,EAAEzq4C,KAAKmn4C,uBAAuBnn4C,KAAK89B,OAAOjR,QAAO,SAAUztB,GAAG,OAAOA,EAAEu73C,kBAAmB,IAAGtr2C,KAAI,SAAUjwB,GAAG,OAAOA,EAAEmsB,EAAG,GAAG,EAAE8+2C,GAAG3q4C,UAAU0n4C,SAAS,SAASho4C,EAAED,EAAEY,GAAGC,KAAKgn4C,WAAWuB,GAAG,OAAOvo4C,KAAK89B,OAAO3+B,GAAG,IAAI,IAAIE,EAAEW,KAAK89B,OAAO,GAAGojG,OAAO/9H,IAAI,iBAAiBvC,EAAE,GAAGI,EAAE,EAAEV,EAAElB,EAAE4B,EAAEV,EAAED,OAAOW,GAAG,EAAE,CAAC,IAAIF,EAAER,EAAEU,GAAGqB,EAAEvB,EAAEqxE,QAAQ3vE,EAAE1B,EAAEyqB,GAAGzoB,EAAEhC,EAAEkc,MAAMnc,EAAEC,EAAEug4C,iBAAiBz+3C,EAAE5C,KAAK89B,OAAO,GAAGoh2C,eAAezD,aAAa/43C,EAAE0nvC,GAAG/nvC,EAAEO,GAAG,GAAG5C,KAAK89B,OAAO,GAAGoh2C,eAAery2C,OAAO,IAAItP,GAAGvd,KAAK2/B,MAAMj9B,EAAE3C,GAAG,CAAC,IAAIiD,EAAE3D,EAAEA,EAAEi1gB,SAAS5xgB,EAAE,CAAC,EAAE3C,QAAG,EAAO4C,EAAE,CAAC4oB,GAAG/oB,EAAEgmC,WAAWnmC,EAAEmmC,WAAWj8B,KAAKlK,EAAEkK,KAAK803C,iBAAiBxg4C,EAAEmc,MAAMla,EAAEiiC,SAASniC,EAAEF,EAAEqiC,SAASoltC,GAAG9nvC,GAAGm/7B,SAAS,CAAC,EAAEwic,QAAQhh4C,GAAGpC,EAAEiB,KAAKc,EAAG,CAAC,CAACtD,GAAGuB,EAAE2rC,MAAK,SAAUntC,EAAED,GAAG,OAAOC,EAAE4k4C,QAAQ7k4C,EAAE6k4C,OAAQ,IAAG,IAAI,IAAI5g4C,EAAE,EAAEH,EAAErC,EAAEwC,EAAEH,EAAE5C,OAAO+C,GAAG,EAAE,CAAC,IAAIjB,EAAEc,EAAEG,GAAGa,EAAE9B,EAAE4iC,SAASzhC,EAAEnB,EAAE6a,MAAMzZ,EAAEpB,EAAEk/3C,iBAAiB,GAAGrh4C,KAAKgn4C,WAAW,CAAC,IAAIpj4C,EAAE+hyC,GAAG,OAAO3lyC,KAAK89B,OAAO37B,EAAEnC,KAAK2/B,KAAKxgC,GAAGa,KAAKyo4C,gBAAgB5m4C,KAAK+B,EAAG,MAAM5D,KAAK40X,WAAWzyX,EAAE8B,EAAEX,EAAEvD,EAAE,CAAC,GAAGZ,EAAE2iO,aAAai5B,OAAO37P,EAAEkE,GAAG6uE,QAAQluE,EAAEX,EAAEC,EAAEvD,KAAKgd,MAAO,CAAC,EAAEqt3C,GAAG3q4C,UAAU6uE,OAAO,SAASnvE,EAAED,EAAEY,GAAGC,KAAKqn4C,qBAAqBhn4C,QAAQL,KAAKym4C,sBAAsBL,kBAAkBhn4C,EAAED,EAAEa,KAAKqn4C,qBAAqBtn4C,EAAG,EAAEsq4C,GAAG3q4C,UAAU+2X,YAAY,SAASr3X,EAAED,EAAEY,GAAG,IAAI,IAAIV,EAAE,EAAEuB,EAAEZ,KAAKyo4C,gBAAgBpp4C,EAAEuB,EAAEP,OAAOhB,GAAG,EAAE,CAAC,IAAI2B,EAAEJ,EAAEvB,GAAGW,KAAK40X,WAAW5zX,EAAEA,EAAE+jC,SAAS/jC,EAAEgc,MAAM7d,EAAEY,EAAG,CAAC,EAAEsq4C,GAAG3q4C,UAAU2oE,QAAQ,WAAW,OAAO,IAAIroE,KAAKin4C,kBAAkB5m4C,MAAM,EAAEgq4C,GAAG3q4C,UAAU4n4C,cAAc,WAAW,OAAQtn4C,KAAKun4C,UAAUvn4C,KAAKym4C,sBAAsBC,WAAW,EAAE2D,GAAG3q4C,UAAU676B,OAAO,SAASn86B,GAAGY,KAAKun4C,WAAW,IAAIvn4C,KAAKwq4C,mBAAmBnq4C,SAASL,KAAK0q4C,oBAAoBtr4C,EAAEsm4C,mBAAmB1l4C,KAAKwq4C,mBAAmBP,KAAKjq4C,KAAKwn4C,mBAAmBpo4C,EAAEsm4C,mBAAmB1l4C,KAAKin4C,kBAAkB+C,IAAIhq4C,KAAKyn4C,YAAYro4C,EAAEso4C,kBAAkB1n4C,KAAKkn4C,aAAaln4C,KAAKym4C,sBAAsBlrd,OAAOn86B,GAAGY,KAAKun4C,UAAS,CAAG,EAAE8C,GAAG3q4C,UAAU0+I,QAAQ,WAAWp+I,KAAKwn4C,qBAAqBxn4C,KAAKwn4C,mBAAmBppvC,UAAUp+I,KAAKyn4C,YAAYrpvC,UAAUp+I,KAAKym4C,sBAAsBrovC,UAAUp+I,KAAKkrV,SAAS9sM,UAAW,EAAEisvC,GAAG3q4C,UAAUir4C,iBAAiB,SAASvr4C,GAAG,GAAGA,EAAEopC,YAAYppC,EAAEopC,WAAW7oC,eAAe,sBAAsBP,EAAEopC,WAAW7oC,eAAe,mBAAmB,MAAO,CAAC6mC,OAAOpnC,EAAEopC,WAAWoi2C,kBAAkBnk2C,KAAKrnC,EAAEopC,WAAWqi2C,gBAAgB,EAAER,GAAG3q4C,UAAUk1X,WAAW,SAASx1X,EAAED,EAAEY,EAAEV,EAAEuB,GAAG,IAAII,EAAEhB,KAAK89B,OAAO,GAAGojG,OAAO5gI,EAAEU,EAAEmC,IAAI,aAAamxgB,SAASl1gB,EAAE,CAAC,GAAG0B,EAAEE,EAAEmC,IAAI,YAAYd,EAAErB,EAAEmC,IAAI,oBAAoBX,EAAExB,EAAEmC,IAAI,oBAAoBnD,KAAK8q4C,UAAU9q4C,KAAK2q4C,iBAAiBvr4C,GAAG,IAAI,IAAI0D,EAAE,EAAEjC,EAAE1B,EAAE2D,EAAEjC,EAAER,OAAOyC,GAAG,EAAE9C,KAAKg8tC,QAAQn7tC,EAAEiC,GAAG1D,EAAEkB,EAAEQ,EAAEuB,EAAEG,GAAGxC,KAAKym4C,sBAAsBN,oBAAoBnm4C,KAAKin4C,kBAAkB5m4C,OAAOjB,EAAEW,EAAEa,EAAEvB,EAAG,EAAEgr4C,GAAG3q4C,UAAUs8tC,QAAQ,SAAS58tC,EAAED,EAAEY,EAAEV,EAAEuB,EAAEI,GAAG,GAAGhB,KAAKipJ,SAAS,EAAEjpJ,KAAK+q4C,eAAe,EAAE/q4C,KAAKgr4C,cAAc,EAAEhr4C,KAAK8q4C,UAAU,CAAC9q4C,KAAKsq4C,eAAezo4C,KAAK7B,KAAK8q4C,WAAW,IAAI,IAAIxq4C,EAAE,EAAEA,EAAElB,EAAEiB,OAAO,EAAEC,IAAIN,KAAKgr4C,eAAe5r4C,EAAEkB,GAAGy5V,KAAK36V,EAAEkB,EAAE,IAAIN,KAAKir4C,uBAAuBjr4C,KAAKyq4C,cAAc5n4C,KAAK8K,IAAI3N,KAAKyq4C,cAAczq4C,KAAKgr4C,cAAe,CAAC,IAAI,IAAIlq4C,EAAE,YAAYop4C,GAAG/q4C,EAAEoN,MAAMlK,EAAEjD,EAAEiB,OAAOgC,GAAG,GAAGjD,EAAEiD,EAAE,GAAGkwI,OAAOnzI,EAAEiD,EAAE,KAAKA,IAAI,IAAI,IAAIG,EAAE,EAAEA,EAAEH,EAAE,GAAGjD,EAAEoD,GAAG+vI,OAAOnzI,EAAEoD,EAAE,KAAKA,IAAI,KAAKH,GAAGvB,EAAE,EAAE,IAAI,CAAC,UAAUf,IAAIa,EAAE,MAAM,IAAIkC,EAAEjC,EAAEb,KAAK+m4C,aAAa,GAAG,QAAQ,IAAI/m4C,KAAK+m4C,aAAa,EAAEnk4C,EAAE5C,KAAKkrV,SAAS24iC,eAAe,GAAGxh4C,EAAErC,KAAKin4C,kBAAkBjn4C,KAAKkn4C,YAAYxk4C,OAAE,EAAOM,OAAE,EAAOL,OAAE,EAAOS,OAAE,EAAOpD,KAAKy0hB,GAAGz0hB,KAAK+yI,IAAI,EAAEjyI,IAAIsC,EAAEhE,EAAEoD,GAAG0yB,IAAIpyB,EAAE1D,EAAEiD,EAAE,IAAIkt3C,QAAQE,SAAS,IAAI,IAAIxs3C,EAAET,EAAES,EAAEZ,EAAEY,IAAI,KAAKD,EAAEC,IAAIZ,EAAE,EAAEvB,EAAE1B,EAAEoD,EAAE,QAAG,EAAOpD,EAAE6D,EAAE,MAAM7D,EAAE6D,GAAGsvI,OAAOvvI,GAAG,CAACI,IAAIT,EAAES,GAAGN,IAAIJ,EAAEI,GAAGA,EAAE1D,EAAE6D,GAAGG,EAAEJ,EAAEA,EAAEkyB,IAAIpyB,GAAGys3C,QAAQE,QAAQ9s3C,EAAE,IAAIR,GAAGQ,EAAEA,GAAGS,GAAG+hB,IAAI/hB,GAAG,IAAIjB,EAAE8B,GAAG,IAAI9B,EAAEa,GAAGb,EAAEot3C,QAAQ,IAAItr3C,EAAEtB,EAAEsB,EAAEb,EAAEa,EAAEtB,EAAEK,EAAEI,EAAEJ,EAAEM,EAAEnB,EAAE8B,EAAEb,EAAEa,EAAE9B,EAAEa,EAAEI,EAAEJ,EAAEO,EAAE,IAAID,EAAE,EAAEA,EAAE,IAAIM,EAAE,EAAEf,KAAK4yF,KAAK,EAAE,EAAEnyF,GAAGuB,EAAEvB,EAAE6m4C,IAAIzn4C,GAAGM,EAAEQ,EAAEb,EAAEsB,EAAEb,EAAEJ,EAAEL,EAAEK,EAAEI,EAAEa,EAAE,EAAE,GAAGY,GAAG5B,EAAET,EAAE,CAAC,IAAIkB,EAAEZ,EAAEi3V,KAAKr3V,GAAG,GAAGgB,EAAE,EAAE7C,EAAE,CAAC,IAAIgD,EAAEf,EAAEoyB,IAAIpyB,EAAEoyB,IAAIxyB,GAAGss3C,MAAMnu3C,EAAE6C,GAAGksvC,UAAU5vvC,KAAKkr4C,eAAexo4C,EAAEmB,GAAG7D,KAAKmr4C,iBAAiBtn4C,EAAElB,EAAE,EAAE,EAAEC,GAAGF,EAAEmB,CAAE,CAAC,CAAC,IAAI8B,EAAEjD,GAAGM,EAAEmB,EAAEwB,EAAE5F,EAAEe,EAAE,OAAOzB,EAAE,GAAGsG,GAAG,UAAUxB,IAAIZ,EAAEvC,EAAEmD,EAAE,QAAQZ,GAAG,IAAIY,EAAE,cAAc,UAAUA,GAAGZ,EAAE3C,IAAIuD,EAAE,SAAS,UAAUA,IAAIZ,EAAE,IAAIY,EAAE,aAAaZ,EAAE3C,IAAIuD,EAAE,UAAUzB,GAAG1C,KAAKkr4C,eAAexo4C,EAAEI,GAAG,UAAUqB,EAAEhC,EAAE6s3C,MAAMzr3C,GAAGvD,KAAKmr4C,iBAAiBro4C,EAAEX,EAAE,EAAE,EAAES,QAAQ,GAAG,cAAcuB,EAAE,CAAC,GAAGZ,EAAE,IAAIpB,EAAEiB,EAAE2r3C,MAAM,OAAQ,CAAC,IAAIrq3C,EAAEnB,EAAEZ,EAAEwiB,IAAI/hB,GAAG8iL,MAAMvjL,EAAEuyB,IAAI9xB,GAAG8iL,MAAM/jL,EAAEst3C,QAAQT,MAAMtq3C,GAAGlB,GAAG,EAAE,GAAI,CAACxD,KAAKmr4C,iBAAiBro4C,EAAEX,EAAE,EAAE,EAAES,GAAG5C,KAAKmr4C,iBAAiBro4C,EAAEX,EAAE4s3C,MAAM,GAAG,EAAE,EAAEns3C,EAAG,MAAM,GAAG,UAAUuB,GAAG,cAAcA,EAAE,CAAC,IAAIW,GAAGjC,KAAK4yF,KAAKlyF,EAAEA,EAAE,GAAGsC,EAAErC,EAAEsB,EAAE,EAAEiB,EAAEvC,EAAE,EAAEsB,EAAE,GAAGpC,GAAG1C,KAAKmr4C,iBAAiBro4C,EAAEH,EAAEkD,EAAEE,EAAEnD,GAAG,cAAcuB,EAAE,IAAI,IAAID,EAAErB,KAAKogD,MAAM,IAAIr/C,EAAEf,KAAKsmC,GAAG,IAAIvjC,EAAE,EAAEA,EAAE1B,EAAE0B,IAAI,CAAC,IAAIZ,EAAEY,EAAE1B,EAAE,GAAG,KAAKc,EAAE,CAAC,IAAIO,EAAEP,EAAE,GAAGA,GAAGA,EAAEO,GAAGP,EAAE,KAAK,OAAOf,GAAGA,GAAG,QAAQ,QAAQA,GAAG,SAASsB,EAAEA,GAAG,QAAQtB,GAAG,QAAQA,EAAE,UAAW,CAAC,IAAII,EAAEjB,EAAE8xB,IAAIvyB,GAAGqs3C,MAAMhq3C,GAAGiiI,KAAKtkI,GAAG4s3C,QAAQP,MAAMxr3C,GAAG,EAAE,GAAGxD,KAAKor4C,cAActo4C,EAAEuB,EAAEJ,EAAEI,EAAErB,GAAE,EAAGQ,EAAE,EAAEZ,EAAG,CAACI,GAAGhD,KAAKmr4C,iBAAiBro4C,EAAEM,GAAGyC,GAAGE,EAAEnD,EAAG,MAAM,GAAG,SAASuB,EAAEnE,KAAKmr4C,iBAAiBro4C,EAAEX,EAAE,EAAE,EAAES,QAAQ,GAAG,WAAWuB,EAAE,CAAC,IAAIH,EAAEtB,EAAE,GAAG,EAAE1C,KAAKmr4C,iBAAiBro4C,EAAEX,EAAE6B,EAAEA,EAAEpB,EAAG,KAAM,UAAUuB,IAAIzB,IAAI1C,KAAKmr4C,iBAAiBro4C,EAAEH,EAAE,EAAE,EAAEC,GAAG5C,KAAKmr4C,iBAAiBro4C,EAAEH,EAAE,EAAE,EAAEC,GAAE,IAAKI,IAAIhD,KAAKmr4C,iBAAiBro4C,EAAEM,GAAG,GAAG,EAAER,GAAE,GAAI5C,KAAKmr4C,iBAAiBro4C,EAAEM,EAAE,EAAE,EAAER,KAAK,GAAGiC,GAAG5B,EAAEZ,EAAE,EAAE,CAAC,IAAIiC,EAAExB,EAAEi3V,KAAK/2V,GAAG,GAAGsB,EAAE,EAAEzD,EAAE,CAAC,IAAIwE,EAAEvC,EAAEqiB,IAAIniB,EAAEkyB,IAAIpyB,GAAGks3C,MAAMnu3C,EAAEyD,GAAGsrvC,UAAU5vvC,KAAKkr4C,eAAepo4C,EAAEuC,GAAGrF,KAAKmr4C,iBAAiB9l4C,EAAEjC,EAAE,EAAE,EAAER,GAAGE,EAAEuC,CAAE,CAAC,CAAC,CAAC,CAAC,EAAEgl4C,GAAG3q4C,UAAUyr4C,iBAAiB,SAAS/r4C,EAAED,EAAEY,EAAEV,EAAEuB,EAAEI,QAAG,IAASA,IAAIA,GAAE,GAAI,IAAIV,EAAEnB,EAAE6D,EAAE3D,EAAEF,EAAE8E,EAAEnD,GAAG3B,EAAE6D,EAAE7D,EAAE8E,EAAE5E,EAAEW,KAAKor4C,cAAchs4C,EAAED,EAAE8E,EAAE9E,EAAE6D,EAAEjD,EAAEZ,EAAE6D,EAAE7D,EAAE8E,EAAElE,EAAEiB,GAAE,EAAGjB,EAAEa,GAAGZ,KAAKor4C,cAAchs4C,EAAEkB,EAAEQ,EAAEE,GAAE,GAAI3B,EAAEuB,GAAGZ,KAAKipJ,SAASmhvC,GAAG,GAAG,IAAIpq4C,KAAKgr4C,gBAAgBhr4C,KAAKipJ,SAAS,EAAEjpJ,KAAKmr4C,iBAAiB/r4C,EAAED,EAAEY,EAAEV,EAAEuB,EAAEI,GAAI,EAAEqp4C,GAAG3q4C,UAAU0r4C,cAAc,SAAShs4C,EAAED,EAAEY,EAAEV,EAAEuB,EAAEI,EAAEV,GAAG,IAAIQ,EAAE,IAAId,KAAK8q4C,UAAU9q4C,KAAK+q4C,gBAAgBX,GAAG,GAAGpq4C,KAAK+q4C,gBAAgB/q4C,KAAKin4C,kBAAkBnG,aAAa1h4C,EAAE6E,GAAG,IAAI5E,EAAE,EAAE,IAAID,EAAE4D,GAAG,IAAIpC,EAAE,EAAE,GAAGiC,KAAKogD,MAAM,GAAG9jD,GAAG,IAAI0D,KAAKogD,MAAM,GAAGljD,GAAG,IAAI,GAAG,IAAIiB,EAAE,EAAEA,EAAE,GAAG,EAAE,IAAI,GAAGF,IAAI,EAAEA,GAAG,GAAGd,KAAK8q4C,WAAW9q4C,KAAKwq4C,mBAAmB1J,aAAa9g4C,KAAK+q4C,eAAe/q4C,KAAK8q4C,UAAUtk2C,QAAQxmC,KAAK8q4C,UAAUrk2C,IAAIzmC,KAAK8q4C,UAAUtk2C,OAAOxmC,KAAKsq4C,eAAejq4C,QAAQ,IAAIgC,EAAE/B,EAAEyj4C,eAAe/j4C,KAAKy0hB,IAAI,GAAGz0hB,KAAK+yI,IAAI,IAAI/yI,KAAKkn4C,WAAWpG,YAAY9g4C,KAAKy0hB,GAAGz0hB,KAAK+yI,GAAG1wI,GAAG/B,EAAE4j4C,mBAAmBtj4C,EAAEZ,KAAK+yI,GAAG1wI,EAAErC,KAAKy0hB,GAAGpyhB,CAAE,EAAEgo4C,GAAG3q4C,UAAUur4C,qBAAqB,WAAWjr4C,KAAK+q4C,eAAe/q4C,KAAK8q4C,UAAU9q4C,KAAK8q4C,UAAUtk2C,OAAOxmC,KAAK8q4C,UAAUrk2C,IAAIzmC,KAAK8q4C,UAAUtk2C,OAAOxmC,KAAKipJ,SAASjpJ,KAAKgr4C,cAAchr4C,KAAKipJ,QAAS,EAAEohvC,GAAG3q4C,UAAUwr4C,eAAe,SAAS9r4C,EAAED,GAAGa,KAAKipJ,UAAU7pJ,EAAE26V,KAAK56V,GAAGa,KAAKir4C,sBAAuB,EAAE943C,GAAG,aAAak43C,GAAG,CAACj3G,KAAK,CAAC,SAAS,qBAAqB,IAAIi4G,GAAG,IAAIjt3C,GAAG,CAAC,WAAW,IAAIH,GAAGxP,GAAG4m3C,YAAY,aAAa,YAAY,IAAIr32C,GAAGvP,GAAG4m3C,YAAY,cAAc,mBAAmB,IAAIp32C,GAAGxP,GAAG4m3C,YAAY,qBAAqB,mBAAmB,IAAIp32C,GAAGxP,GAAG4m3C,YAAY,qBAAqB,gBAAgB,IAAIr32C,GAAGvP,GAAG4m3C,YAAY,oBAAoBiW,GAAG,CAACtW,MAAM,IAAI522C,GAAG,CAAC,eAAe,IAAIJ,GAAGvP,GAAG+n3C,WAAW,iBAAiB,aAAa,IAAIx42C,GAAGvP,GAAG+n3C,WAAW,eAAe,iBAAiB,IAAIv42C,GAAGxP,GAAG+n3C,WAAW,mBAAmB,wBAAwB,IAAIv42C,GAAGxP,GAAG+n3C,WAAW,0BAA0B,aAAa,IAAIx42C,GAAGvP,GAAG+n3C,WAAW,eAAe,iBAAiB,IAAIx42C,GAAGvP,GAAG+n3C,WAAW,mBAAmB,cAAc,IAAIx42C,GAAGvP,GAAG+n3C,WAAW,gBAAgB,YAAY,IAAIx42C,GAAGvP,GAAG+n3C,WAAW,cAAc,iBAAiB,IAAI332C,GAAGpQ,GAAG+n3C,WAAW,mBAAmB,eAAe,IAAIr42C,GAAG1P,GAAG+n3C,WAAW,iBAAiB,gBAAgB,IAAIt42C,GAAGzP,GAAG+n3C,WAAW,oBAAoBt1vC,OAAOmqwC,IAAIE,GAAG,IAAI,SAASns4C,GAAG,SAASD,IAAIC,EAAEmB,MAAMP,KAAKI,UAAW,CAAC,OAAOhB,IAAID,EAAEK,UAAUJ,IAAID,EAAEO,UAAUJ,OAAOY,OAAOd,GAAGA,EAAEM,YAAYO,YAAYd,EAAEA,EAAEO,UAAU0+3C,iBAAiB,SAASj/3C,EAAEY,GAAG,OAAOA,EAAE,IAAIwd,GAAG1a,KAAKyK,MAAMvN,EAAE4/B,MAAM,CAAClU,IAAI1rB,EAAE0rB,IAAImy2C,aAAa793C,EAAE693C,aAAaC,YAAY993C,EAAE893C,YAAY/1wC,WAAW/nH,EAAE+nH,aAAa1oH,EAAEM,UAAU0+3C,iBAAiBx+3C,KAAKI,KAAKb,EAAEY,EAAE,EAAEZ,EAAEO,UAAU40gB,SAAS,SAASn1gB,EAAEY,EAAEV,EAAEuB,GAAG,OAAOb,EAAE6C,EAAE,CAAC,EAAE7C,EAAE,CAAC4/B,KAAK98B,KAAKyK,MAAMvN,EAAE4/B,QAAQvgC,EAAEM,UAAU40gB,SAAS10gB,KAAKI,KAAKb,EAAEY,EAAEV,EAAEuB,EAAE,EAAEzB,CAAC,CAAzd,CAA2d6e,IAA9d,CAAmest3C,GAAGtW,MAAMxs1C,WAAW,cAAc011C,eAAeqN,GAAG5F,gBAAe,EAAG,IAAI6F,GAAG,SAASps4C,GAAG,SAASD,EAAEA,GAAGC,EAAEQ,KAAKI,KAAKb,EAAEms4C,IAAItr4C,KAAKyr4C,gBAAgB,CAAE,CAAC,OAAOrs4C,IAAID,EAAEK,UAAUJ,IAAID,EAAEO,UAAUJ,OAAOY,OAAOd,GAAGA,EAAEM,YAAYO,YAAYd,EAAEA,EAAEO,UAAUkg4C,kCAAkC,SAASxg4C,GAAG,kBAAkBA,IAAIY,KAAK0r4C,gBAAgB1r4C,KAAKo/3C,qBAAqBb,QAAQ,iBAAiBp93C,MAAM6/d,WAAW055B,iBAAiB155B,sBAAsBn3d,GAAG7J,KAAKyr4C,iBAAiBzr4C,KAAKyr4C,gBAAgB,GAAG3q4C,EAAG,EAAE3B,EAAEO,UAAUis4C,mBAAmB,WAAW,OAAO3r4C,KAAKo/3C,qBAAqBb,QAAQ,iBAAiBp93C,MAAM6/d,UAAU,EAAE7he,EAAEO,UAAUqg4C,YAAY,SAAS5g4C,EAAEY,GAAGX,EAAEM,UAAUqg4C,YAAYng4C,KAAKI,KAAKb,EAAEY,GAAGC,KAAKg13C,MAAMuJ,QAAQ,mBAAmBgN,GAAGnN,iBAAiBp+3C,KAAKu/3C,oBAAoBhB,QAAQ,cAAcp93C,MAAMhC,EAAG,EAAEA,EAAEO,UAAUio4C,aAAa,SAASvo4C,GAAG,OAAO,IAAIir4C,GAAGjr4C,EAAE,EAAED,EAAEO,UAAUko4C,YAAY,SAASxo4C,GAAG,IAAID,EAAEC,EAAEW,EAAE6r4C,GAAG3y3C,GAAG,aAAajZ,KAAKb,GAAG8Z,GAAG,iBAAiBjZ,KAAKb,IAAIE,EAAE4Z,GAAG,cAAcjZ,KAAKb,GAAG,OAAOY,EAAE,EAAE8C,KAAKmjH,IAAI3mH,GAAG2Z,GAAGhZ,KAAKg13C,MAAM7x3C,IAAI,kBAAkB,EAAEhE,EAAEO,UAAUmo4C,uBAAuB,SAASzo4C,EAAED,EAAEY,EAAEV,EAAE2B,EAAEV,EAAEQ,GAAG,IAAIuB,EAAE8W,GAAG/Z,EAAEY,KAAKg13C,MAAM7x3C,IAAI,kBAAkBnD,KAAKg13C,MAAM7x3C,IAAI,yBAAyB7C,EAAEquO,MAAM7tO,GAAG0B,EAAE1B,EAAE,EAAE8q4C,GAAG5r4C,KAAKg13C,MAAM7x3C,IAAI,cAAcmxgB,SAASn1gB,EAAEY,GAAGC,KAAKg13C,MAAM7x3C,IAAI,kBAAkBmxgB,SAASn1gB,EAAEY,IAAI+C,EAAE9C,KAAKg13C,MAAM7x3C,IAAI,eAAemxgB,SAASn1gB,EAAEY,GAAG,OAAO+C,IAAIzD,EAAE,SAASD,EAAED,GAAG,IAAI,IAAIY,EAAE,GAAGV,EAAE,IAAIuB,EAAE,EAAE,GAAGI,EAAE,EAAEA,EAAE5B,EAAEiB,OAAOW,IAAI,CAAC,IAAI,IAAIV,EAAElB,EAAE4B,GAAGF,EAAE,GAAGuB,EAAE,EAAEA,EAAE/B,EAAED,OAAOgC,IAAI,CAAC,IAAIG,EAAElC,EAAE+B,GAAGS,EAAExC,EAAE+B,EAAE,GAAGxB,EAAE,IAAIwB,EAAEhD,EAAEmD,EAAE0yB,IAAI50B,EAAE+B,EAAE,IAAIkt3C,QAAQE,QAAQ7s3C,EAAEP,IAAI/B,EAAED,OAAO,EAAEhB,EAAEyD,EAAEoyB,IAAI1yB,GAAG+s3C,QAAQE,QAAQ/s3C,EAAE7B,EAAEomI,KAAKrkI,GAAG2s3C,QAAQ7s3C,EAAEss3C,MAAM,GAAGts3C,EAAEuB,EAAErB,EAAEqB,EAAEvB,EAAEM,EAAEJ,EAAEI,IAAIlC,EAAEe,KAAKa,EAAEss3C,MAAM7v3C,GAAG8nI,KAAKzkI,GAAI,CAACzC,EAAE8B,KAAKf,EAAG,CAAC,OAAOf,CAAC,CAA5S,CAA8SV,EAAEyD,EAAEhC,IAAI,SAAS1B,EAAED,EAAEY,GAAG,IAAI,IAAIV,EAAE,EAAEA,EAAEF,EAAEkB,OAAOhB,IAAI,CAAC,IAAIuB,EAAEzB,EAAEE,GAAG,GAAGD,EAAEiB,QAAQ,EAAE,IAAI,IAAIW,EAAE,EAAEA,EAAEJ,EAAEP,OAAOW,IAAI,GAAGspvC,GAAGlrvC,EAAEwB,EAAEI,IAAI,OAAO,EAAG,GAAG01B,GAAGt3B,EAAEwB,EAAEb,GAAG,OAAO,CAAE,CAAC,OAAO,CAAE,CAAzJ,CAA2JsC,EAAEhD,EAAEmD,EAAE,EAAErD,EAAEO,UAAUug4C,cAAc,WAAW,OAAO,CAAE,EAAE9g4C,CAAC,CAA7wD,CAA+wDsf,IAAI,SAASmt3C,GAAGxs4C,EAAED,GAAG,OAAOA,EAAE,EAAEA,EAAE,EAAEC,EAAEA,CAAC,CAAC,IAAIyxvC,GAAGnyuC,GAAG,CAAC,CAAChU,KAAK,eAAewjP,WAAW,EAAE3hP,KAAK,SAAS,CAAC7B,KAAK,SAASwjP,WAAW,EAAE3hP,KAAK,UAAU,CAAC7B,KAAK,gBAAgBwjP,WAAW,EAAE3hP,KAAK,UAAU,GAAGs/3C,GAAGnt3C,GAAG,CAAC,CAAChU,KAAK,kBAAkBwjP,WAAW,EAAE3hP,KAAK,YAAY,GAAGu/3C,IAAIpt3C,GAAG,CAAC,CAAChU,KAAK,iBAAiBwjP,WAAW,EAAE3hP,KAAK,WAAW,GAAGmS,GAAG,CAAC,CAAChU,KAAK,WAAWwjP,WAAW,EAAE3hP,KAAK,SAAS,CAAC7B,KAAK,UAAUwjP,WAAW,EAAE3hP,KAAK,cAAc8kuC,IAAI3ytC,GAAG,CAAC,CAACnS,KAAK,QAAQ7B,KAAK,gBAAgB,CAAC6B,KAAK,QAAQ7B,KAAK,gBAAgB,CAAC6B,KAAK,QAAQ7B,KAAK,MAAM,CAAC6B,KAAK,QAAQ7B,KAAK,MAAM,CAAC6B,KAAK,QAAQ7B,KAAK,MAAM,CAAC6B,KAAK,QAAQ7B,KAAK,MAAM,CAAC6B,KAAK,SAAS7B,KAAK,gBAAgB,CAAC6B,KAAK,SAAS7B,KAAK,oBAAoB,CAAC6B,KAAK,SAAS7B,KAAK,iBAAiBgU,GAAG,CAAC,CAAChU,KAAK,QAAQwjP,WAAW,EAAE3hP,KAAK,SAAS,CAAC7B,KAAK,eAAewjP,WAAW,EAAE3hP,KAAK,SAAS,CAAC7B,KAAK,YAAYwjP,WAAW,EAAE3hP,KAAK,UAAU,IAAIw/3C,GAAGrt3C,GAAG,CAAC,CAAChU,KAAK,QAAQwjP,WAAW,EAAE3hP,KAAK,WAAW,CAAC7B,KAAK,WAAWwjP,WAAW,EAAE3hP,KAAK,WAAW,CAAC7B,KAAK,UAAUwjP,WAAW,EAAE3hP,KAAK,UAAU,GAAG,SAASy/3C,GAAG5s4C,EAAED,EAAEY,GAAG,OAAOX,EAAEm43C,SAASry2C,SAAQ,SAAU9lB,GAAGA,EAAEgxB,KAAK,SAAShxB,EAAED,EAAEY,GAAG,IAAIV,EAAEF,EAAE+hI,OAAO/9H,IAAI,kBAAkBmxgB,SAASv0gB,EAAE,CAAC,GAAG,MAAO,cAAcV,EAAED,EAAEA,EAAE6s4C,oBAAoB,cAAc5s4C,IAAID,EAAEA,EAAE6qc,qBAAqB9sb,GAAGog3C,qBAAqBn+3C,EAAE+d,GAAGog3C,mBAAmBn+3C,IAAIA,CAAC,CAAnN,CAAqNA,EAAEgxB,KAAKjxB,EAAEY,EAAI,IAAGX,CAAC,CAACsf,GAAG,CAAC,CAAChU,KAAK,WAAWwjP,WAAW,EAAE3hP,KAAK,YAAYmS,GAAG,CAAC,CAACnS,KAAK,QAAQ7B,KAAK,WAAW,CAAC6B,KAAK,QAAQ7B,KAAK,WAAW,CAAC6B,KAAK,SAAS7B,KAAK,mBAAmB,CAAC6B,KAAK,SAAS7B,KAAK,aAAa,CAAC6B,KAAK,SAAS7B,KAAK,oBAAoB,CAAC6B,KAAK,SAAS7B,KAAK,kBAAkB,CAAC6B,KAAK,SAAS7B,KAAK,cAAc,CAAC6B,KAAK,SAAS7B,KAAK,WAAW,CAAC6B,KAAK,SAAS7B,KAAK,aAAa,CAAC6B,KAAK,SAAS7B,KAAK,aAAa,CAAC6B,KAAK,UAAU7B,KAAK,eAAe,CAAC6B,KAAK,UAAU7B,KAAK,eAAe,CAAC6B,KAAK,QAAQ7B,KAAK,eAAe,CAAC6B,KAAK,QAAQ7B,KAAK,qBAAqB,CAAC6B,KAAK,QAAQ7B,KAAK,UAAU,CAAC6B,KAAK,SAAS7B,KAAK,eAAe,CAAC6B,KAAK,QAAQ7B,KAAK,yBAAyBgU,GAAG,CAAC,CAACnS,KAAK,QAAQ7B,KAAK,WAAW,CAAC6B,KAAK,QAAQ7B,KAAK,WAAW,CAAC6B,KAAK,QAAQ7B,KAAK,iCAAiC,CAAC6B,KAAK,QAAQ7B,KAAK,kCAAkC,CAAC6B,KAAK,QAAQ7B,KAAK,gCAAgC,CAAC6B,KAAK,QAAQ7B,KAAK,iCAAiC,CAAC6B,KAAK,QAAQ7B,KAAK,yBAAyB,CAAC6B,KAAK,QAAQ7B,KAAK,iCAAiC,CAAC6B,KAAK,SAAS7B,KAAK,OAAO,CAAC6B,KAAK,SAAS7B,KAAK,qBAAqB,CAAC6B,KAAK,SAAS7B,KAAK,mBAAmB,CAAC6B,KAAK,SAAS7B,KAAK,6BAA6B,CAAC6B,KAAK,SAAS7B,KAAK,2BAA2B,CAAC6B,KAAK,SAAS7B,KAAK,qBAAqB,CAAC6B,KAAK,SAAS7B,KAAK,mBAAmB,CAAC6B,KAAK,SAAS7B,KAAK,6BAA6B,CAAC6B,KAAK,SAAS7B,KAAK,2BAA2B,CAAC6B,KAAK,SAAS7B,KAAK,gBAAgB,CAAC6B,KAAK,SAAS7B,KAAK,8BAA8B,CAAC6B,KAAK,SAAS7B,KAAK,4BAA4B,CAAC6B,KAAK,SAAS7B,KAAK,mBAAmB,CAAC6B,KAAK,SAAS7B,KAAK,2BAA2B,CAAC6B,KAAK,SAAS7B,KAAK,8BAA8B,CAAC6B,KAAK,SAAS7B,KAAK,eAAe,CAAC6B,KAAK,UAAU7B,KAAK,gBAAgB,CAAC6B,KAAK,UAAU2hP,WAAW,EAAExjP,KAAK,cAAc,CAAC6B,KAAK,UAAU7B,KAAK,6BAA6BgU,GAAG,CAAC,CAACnS,KAAK,UAAU7B,KAAK,aAAagU,GAAG,CAAC,CAACnS,KAAK,QAAQ7B,KAAK,KAAK,CAAC6B,KAAK,QAAQ7B,KAAK,KAAK,CAAC6B,KAAK,QAAQ7B,KAAK,gCAAgC,IAAIwh4C,GAAG,CAAC,IAAI,IAAI,IAAI,IAAI9l4C,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,IAAI,IAAIxC,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAKuo4C,GAAG,SAAS/s4C,EAAED,EAAEY,EAAEV,EAAEuB,GAAG,IAAII,EAAEV,EAAEQ,EAAE,EAAEF,EAAEvB,EAAE,EAAEgD,GAAG,GAAGvB,GAAG,EAAE0B,EAAEH,GAAG,EAAES,GAAG,EAAEjC,EAAEd,EAAEa,EAAE,EAAE,EAAEgC,EAAE7C,GAAG,EAAE,EAAE2C,EAAEtD,EAAED,EAAE0B,GAAG,IAAIA,GAAG+B,EAAE5B,EAAE0B,GAAG,IAAII,GAAG,EAAEJ,KAAKI,EAAEA,GAAGhC,EAAEgC,EAAE,EAAE9B,EAAE,IAAIA,EAAE5B,EAAED,EAAE0B,GAAGA,GAAG+B,EAAEE,GAAG,GAAG,IAAIxC,EAAEU,GAAG,IAAI8B,GAAG,EAAE9B,KAAK8B,EAAEA,GAAGzD,EAAEyD,EAAE,EAAExC,EAAE,IAAIA,EAAElB,EAAED,EAAE0B,GAAGA,GAAG+B,EAAEE,GAAG,GAAG,GAAG,IAAI9B,EAAEA,EAAE,EAAEwB,MAAO,CAAC,GAAGxB,IAAIqB,EAAE,OAAO/B,EAAEs7vB,IAAI,KAAKl5vB,GAAG,EAAE,GAAGpC,GAAGuC,KAAK6yF,IAAI,EAAEr2F,GAAG2B,GAAGwB,CAAE,CAAC,OAAQE,GAAG,EAAE,GAAGpC,EAAEuC,KAAK6yF,IAAI,EAAE10F,EAAE3B,EAAE,EAAE+s4C,GAAG,SAASht4C,EAAED,EAAEY,EAAEV,EAAEuB,EAAEI,GAAG,IAAIV,EAAEQ,EAAEuB,EAAEG,EAAE,EAAExB,EAAEJ,EAAE,EAAEkC,GAAG,GAAGN,GAAG,EAAE3B,EAAEiC,GAAG,EAAEF,EAAE,KAAKhC,EAAEiC,KAAK6yF,IAAI,GAAG,IAAI7yF,KAAK6yF,IAAI,GAAG,IAAI,EAAEhzF,EAAErD,EAAE,EAAE2B,EAAE,EAAEgC,EAAE3D,EAAE,GAAG,EAAEsD,EAAExD,EAAE,GAAG,IAAIA,GAAG,EAAEA,EAAE,EAAE,EAAE,EAAE,IAAIA,EAAE0D,KAAKmjH,IAAI7mH,GAAGmtC,MAAMntC,IAAIA,IAAI,KAAK2B,EAAEwrC,MAAMntC,GAAG,EAAE,EAAEmB,EAAEwC,IAAIxC,EAAEuC,KAAKyK,MAAMzK,KAAKwnB,IAAIlrB,GAAG0D,KAAKsvN,KAAKhzN,GAAGkD,EAAEQ,KAAK6yF,IAAI,GAAGp1F,IAAI,IAAIA,IAAI+B,GAAG,IAAIlD,GAAGmB,EAAEO,GAAG,EAAE+B,EAAEP,EAAEO,EAAEC,KAAK6yF,IAAI,EAAE,EAAE70F,IAAIwB,GAAG,IAAI/B,IAAI+B,GAAG,GAAG/B,EAAEO,GAAGiC,GAAGhC,EAAE,EAAER,EAAEwC,GAAGxC,EAAEO,GAAG,GAAGC,GAAG3B,EAAEkD,EAAE,GAAGQ,KAAK6yF,IAAI,EAAE90F,GAAGN,GAAGO,IAAIC,EAAE3B,EAAE0D,KAAK6yF,IAAI,EAAE70F,EAAE,GAAGgC,KAAK6yF,IAAI,EAAE90F,GAAGN,EAAE,IAAIM,GAAG,EAAExB,EAAEW,EAAE2C,GAAG,IAAI5B,EAAE4B,GAAGM,EAAElC,GAAG,IAAIF,GAAG,GAAG,IAAIN,EAAEA,GAAGM,EAAEE,EAAE0B,GAAG5B,EAAE4B,EAAE,EAAEpD,EAAEW,EAAE2C,GAAG,IAAIpC,EAAEoC,GAAGM,EAAE1C,GAAG,IAAIkC,GAAG,GAAGpD,EAAEW,EAAE2C,EAAEM,IAAI,IAAIL,CAAE,EAAE0p4C,GAAGC,GAAG,SAASA,GAAGlt4C,GAAGY,KAAKsmvC,IAAIhouC,YAAY0C,QAAQ1C,YAAY0C,OAAO5hB,GAAGA,EAAE,IAAIugB,WAAWvgB,GAAG,GAAGY,KAAKqiH,IAAI,EAAEriH,KAAKuM,KAAK,EAAEvM,KAAKK,OAAOL,KAAKsmvC,IAAIjmvC,MAAO,CAACis4C,GAAG/jF,OAAO,EAAE+jF,GAAG9jF,QAAQ,EAAE8jF,GAAG7jF,MAAM,EAAE6jF,GAAG5jF,QAAQ,EAAE,IAAI6jF,GAAG,oBAAoBxj3C,YAAY,KAAK,IAAIA,YAAY,QAAQ,SAASyj3C,GAAGpt4C,GAAG,OAAOA,EAAEmN,OAAO+/3C,GAAG7jF,MAAMrpzC,EAAE4pzC,aAAa5pzC,EAAEijH,IAAIjjH,EAAEijH,IAAI,CAAC,CAAC,SAASoqxC,GAAGrt4C,EAAED,EAAEY,GAAG,OAAOA,EAAE,WAAWZ,GAAGC,IAAI,GAAG,YAAYD,IAAI,IAAIC,IAAI,EAAE,CAAC,SAASst4C,GAAGtt4C,EAAED,EAAEY,GAAG,IAAIV,EAAEF,GAAG,MAAM,EAAEA,GAAG,QAAQ,EAAEA,GAAG,UAAU,EAAE0D,KAAKyK,MAAMzK,KAAKwnB,IAAIlrB,IAAI,EAAE0D,KAAKsvN,MAAMpyN,EAAEqpzC,QAAQ/pzC,GAAG,IAAI,IAAIuB,EAAEb,EAAEsiH,IAAI,EAAEzhH,GAAGxB,EAAEwB,IAAIb,EAAEumvC,IAAI1lvC,EAAEvB,GAAGU,EAAEumvC,IAAI1lvC,EAAG,CAAC,SAAS+r4C,GAAGvt4C,EAAED,GAAG,IAAI,IAAIY,EAAE,EAAEA,EAAEX,EAAEiB,OAAON,IAAIZ,EAAEmqzC,YAAYlqzC,EAAEW,GAAI,CAAC,SAAS6s4C,GAAGxt4C,EAAED,GAAG,IAAI,IAAIY,EAAE,EAAEA,EAAEX,EAAEiB,OAAON,IAAIZ,EAAEqqzC,aAAapqzC,EAAEW,GAAI,CAAC,SAAS8s4C,GAAGzt4C,EAAED,GAAG,IAAI,IAAIY,EAAE,EAAEA,EAAEX,EAAEiB,OAAON,IAAIZ,EAAEuqzC,WAAWtqzC,EAAEW,GAAI,CAAC,SAAS+s4C,GAAG1t4C,EAAED,GAAG,IAAI,IAAIY,EAAE,EAAEA,EAAEX,EAAEiB,OAAON,IAAIZ,EAAEyqzC,YAAYxqzC,EAAEW,GAAI,CAAC,SAASgt4C,GAAG3t4C,EAAED,GAAG,IAAI,IAAIY,EAAE,EAAEA,EAAEX,EAAEiB,OAAON,IAAIZ,EAAE2qzC,aAAa1qzC,EAAEW,GAAI,CAAC,SAASit4C,GAAG5t4C,EAAED,GAAG,IAAI,IAAIY,EAAE,EAAEA,EAAEX,EAAEiB,OAAON,IAAIZ,EAAE6qzC,aAAa5qzC,EAAEW,GAAI,CAAC,SAASyv7B,GAAGpw7B,EAAED,GAAG,IAAI,IAAIY,EAAE,EAAEA,EAAEX,EAAEiB,OAAON,IAAIZ,EAAE+qzC,cAAc9qzC,EAAEW,GAAI,CAAC,SAASkt4C,GAAG7t4C,EAAED,GAAG,IAAI,IAAIY,EAAE,EAAEA,EAAEX,EAAEiB,OAAON,IAAIZ,EAAEirzC,aAAahrzC,EAAEW,GAAI,CAAC,SAASmt4C,GAAG9t4C,EAAED,GAAG,IAAI,IAAIY,EAAE,EAAEA,EAAEX,EAAEiB,OAAON,IAAIZ,EAAEmrzC,cAAclrzC,EAAEW,GAAI,CAAC,SAASot4C,GAAG/t4C,EAAED,GAAG,OAAQC,EAAED,GAAGC,EAAED,EAAE,IAAI,EAAEC,EAAED,EAAE,IAAI,IAAI,SAASC,EAAED,EAAE,EAAE,CAAC,SAASiu4C,GAAGhu4C,EAAED,EAAEY,GAAGX,EAAEW,GAAGZ,EAAEC,EAAEW,EAAE,GAAGZ,IAAI,EAAEC,EAAEW,EAAE,GAAGZ,IAAI,GAAGC,EAAEW,EAAE,GAAGZ,IAAI,EAAG,CAAC,SAASku4C,GAAGju4C,EAAED,GAAG,OAAQC,EAAED,GAAGC,EAAED,EAAE,IAAI,EAAEC,EAAED,EAAE,IAAI,KAAKC,EAAED,EAAE,IAAI,GAAG,CAAC,SAASmu4C,GAAGlu4C,EAAED,EAAEY,GAAG,IAAIX,GAAGW,EAAE6qzC,YAAY2iF,GAAGpu4C,EAAG,CAAC,SAASou4C,GAAGnu4C,EAAED,EAAEY,GAAG,GAAG,IAAIX,EAAE,CAAC,IAAIC,EAAEU,EAAE6qzC,YAAY4iF,GAAG,CAAC,GAAG5s4C,EAAEvB,EAAE0/B,MAAM/9B,EAAE3B,EAAE2/B,OAAO1+B,EAAEjB,EAAEw/B,KAAK/9B,EAAEzB,EAAEy/B,IAAIz8B,EAAEhD,EAAEou4C,QAAQtu4C,EAAE0C,KAAK,CAAC0pB,GAAGlsB,EAAEksB,GAAG2hN,OAAO,IAAI/yN,GAAG,CAAC4kB,MAAMn+B,EAAE,EAAEo+B,OAAOh+B,EAAE,GAAG3B,EAAE6tO,QAAQzwF,QAAQ,CAAC19G,MAAMn+B,EAAEo+B,OAAOh+B,EAAE69B,KAAKv+B,EAAEw+B,IAAIh+B,EAAE2s4C,QAAQpr4C,IAAK,CAAC,CAAC,SAASmr4C,GAAGpu4C,EAAED,EAAEY,GAAG,IAAIX,EAAED,EAAEosB,GAAGxrB,EAAEipzC,aAAa,IAAI5pzC,EAAED,EAAE+tO,OAAOntO,EAAE4rzC,YAAY,IAAIvszC,EAAED,EAAE4/B,MAAMh/B,EAAEipzC,aAAa,IAAI5pzC,EAAED,EAAE6/B,OAAOj/B,EAAEipzC,aAAa,IAAI5pzC,EAAED,EAAE0/B,KAAK9+B,EAAEsrzC,cAAc,IAAIjszC,EAAED,EAAE2/B,IAAI/+B,EAAEsrzC,cAAc,IAAIjszC,IAAID,EAAEsu4C,QAAQ1t4C,EAAEipzC,aAAc,CAAC,SAAS0kF,GAAGtu4C,GAAG,IAAI,IAAID,EAAE,EAAEY,EAAE,EAAEV,EAAE,EAAEuB,EAAExB,EAAEC,EAAEuB,EAAEP,OAAOhB,GAAG,EAAE,CAAC,IAAI2B,EAAEJ,EAAEvB,GAAGF,GAAG6B,EAAEuC,EAAEvC,EAAE4B,EAAE7C,EAAE8C,KAAK8K,IAAI5N,EAAEiB,EAAEuC,EAAG,CAACnE,EAAEmtC,MAAK,SAAUntC,EAAED,GAAG,OAAOA,EAAEyD,EAAExD,EAAEwD,CAAE,IAAG,IAAI,IAAItC,EAAE,CAAC,CAAC2D,EAAE,EAAEjB,EAAE,EAAEO,EAAEV,KAAK8K,IAAI9K,KAAKuK,KAAKvK,KAAK4yF,KAAKt2F,EAAE,MAAMY,GAAG6C,EAAE,MAAM9B,EAAE,EAAEuB,EAAE,EAAEG,EAAE,EAAEM,EAAE1D,EAAEoD,EAAEM,EAAEzC,OAAOmC,GAAG,EAAE,IAAI,IAAI3B,EAAEiC,EAAEN,GAAGI,EAAEtC,EAAED,OAAO,EAAEuC,GAAG,EAAEA,IAAI,CAAC,IAAIF,EAAEpC,EAAEsC,GAAG,KAAK/B,EAAE0C,EAAEb,EAAEa,GAAG1C,EAAE+B,EAAEF,EAAEE,GAAG,CAAC,GAAG/B,EAAEoD,EAAEvB,EAAEuB,EAAEpD,EAAEmC,EAAEN,EAAEM,EAAEX,EAAEQ,KAAK8K,IAAItL,EAAExB,EAAEmC,EAAEnC,EAAE+B,GAAG9B,EAAE+B,KAAK8K,IAAI7M,EAAED,EAAEoD,EAAEpD,EAAE0C,GAAG1C,EAAE0C,IAAIb,EAAEa,GAAG1C,EAAE+B,IAAIF,EAAEE,EAAE,CAAC,IAAII,EAAE1C,EAAEsB,MAAMgB,EAAEtC,EAAED,SAASC,EAAEsC,GAAGI,EAAG,MAAMnC,EAAE+B,IAAIF,EAAEE,GAAGF,EAAEuB,GAAGpD,EAAE0C,EAAEb,EAAEa,GAAG1C,EAAE0C,GAAG1C,EAAE0C,IAAIb,EAAEa,GAAGb,EAAEM,GAAGnC,EAAE+B,EAAEF,EAAEE,GAAG/B,EAAE+B,IAAItC,EAAEuB,KAAK,CAACoC,EAAEvB,EAAEuB,EAAEpD,EAAE0C,EAAEP,EAAEN,EAAEM,EAAEO,EAAEb,EAAEa,EAAE1C,EAAE0C,EAAEX,EAAE/B,EAAE+B,IAAIF,EAAEM,GAAGnC,EAAE+B,EAAEF,EAAEE,GAAG/B,EAAE+B,GAAG,KAAK,CAAC,CAAC,MAAO,CAACW,EAAEzC,EAAE8B,EAAEP,EAAE+6H,KAAKj+H,GAAG2B,EAAEuB,IAAI,EAAE,CAACiq4C,GAAG5s4C,UAAU,CAAC0+I,QAAQ,WAAWp+I,KAAKsmvC,IAAI,IAAK,EAAEokE,WAAW,SAAStrzC,EAAED,EAAEY,GAAG,IAAIA,EAAEA,GAAGC,KAAKK,OAAOL,KAAKqiH,IAAItiH,GAAG,CAAC,IAAIV,EAAEW,KAAKgpzC,aAAapozC,EAAEvB,GAAG,EAAE2B,EAAEhB,KAAKqiH,IAAIriH,KAAKuM,KAAK,EAAElN,EAAED,EAAEwB,EAAEzB,EAAEa,MAAMA,KAAKqiH,MAAMrhH,GAAGhB,KAAKi2hB,KAAK52hB,EAAG,CAAC,OAAOF,CAAC,EAAEyrzC,YAAY,SAASxrzC,EAAED,GAAG,OAAOa,KAAK0qzC,WAAWtrzC,EAAED,EAAEa,KAAKgpzC,aAAahpzC,KAAKqiH,IAAI,EAAEwosC,YAAY,WAAW,IAAIzrzC,EAAE+t4C,GAAGnt4C,KAAKsmvC,IAAItmvC,KAAKqiH,KAAK,OAAOriH,KAAKqiH,KAAK,EAAEjjH,CAAC,EAAE0rzC,aAAa,WAAW,IAAI1rzC,EAAEiu4C,GAAGrt4C,KAAKsmvC,IAAItmvC,KAAKqiH,KAAK,OAAOriH,KAAKqiH,KAAK,EAAEjjH,CAAC,EAAE2rzC,YAAY,WAAW,IAAI3rzC,EAAE+t4C,GAAGnt4C,KAAKsmvC,IAAItmvC,KAAKqiH,KAAK,WAAW8qxC,GAAGnt4C,KAAKsmvC,IAAItmvC,KAAKqiH,IAAI,GAAG,OAAOriH,KAAKqiH,KAAK,EAAEjjH,CAAC,EAAE4rzC,aAAa,WAAW,IAAI5rzC,EAAE+t4C,GAAGnt4C,KAAKsmvC,IAAItmvC,KAAKqiH,KAAK,WAAWgrxC,GAAGrt4C,KAAKsmvC,IAAItmvC,KAAKqiH,IAAI,GAAG,OAAOriH,KAAKqiH,KAAK,EAAEjjH,CAAC,EAAE6rzC,UAAU,WAAW,IAAI7rzC,EAAE+s4C,GAAGns4C,KAAKsmvC,IAAItmvC,KAAKqiH,KAAI,EAAG,GAAG,GAAG,OAAOriH,KAAKqiH,KAAK,EAAEjjH,CAAC,EAAE8rzC,WAAW,WAAW,IAAI9rzC,EAAE+s4C,GAAGns4C,KAAKsmvC,IAAItmvC,KAAKqiH,KAAI,EAAG,GAAG,GAAG,OAAOriH,KAAKqiH,KAAK,EAAEjjH,CAAC,EAAE4pzC,WAAW,SAAS5pzC,GAAG,IAAID,EAAEY,EAAEV,EAAEW,KAAKsmvC,IAAI,OAAOnnvC,EAAE,KAAKY,EAAEV,EAAEW,KAAKqiH,QAAQtiH,EAAE,IAAIZ,GAAGA,IAAI,KAAKY,EAAEV,EAAEW,KAAKqiH,UAAU,EAAEtiH,EAAE,IAAIZ,GAAGA,IAAI,KAAKY,EAAEV,EAAEW,KAAKqiH,UAAU,GAAGtiH,EAAE,IAAIZ,GAAGA,IAAI,KAAKY,EAAEV,EAAEW,KAAKqiH,UAAU,GAAGtiH,EAAE,IAAIZ,EAAE,SAASC,EAAED,EAAEY,GAAG,IAAIV,EAAEuB,EAAEI,EAAEjB,EAAEumvC,IAAI,GAAGjnvC,GAAG,KAAKuB,EAAEI,EAAEjB,EAAEsiH,UAAU,EAAEzhH,EAAE,IAAI,OAAO6r4C,GAAGrt4C,EAAEC,EAAEF,GAAG,GAAGE,IAAI,KAAKuB,EAAEI,EAAEjB,EAAEsiH,UAAU,EAAEzhH,EAAE,IAAI,OAAO6r4C,GAAGrt4C,EAAEC,EAAEF,GAAG,GAAGE,IAAI,KAAKuB,EAAEI,EAAEjB,EAAEsiH,UAAU,GAAGzhH,EAAE,IAAI,OAAO6r4C,GAAGrt4C,EAAEC,EAAEF,GAAG,GAAGE,IAAI,KAAKuB,EAAEI,EAAEjB,EAAEsiH,UAAU,GAAGzhH,EAAE,IAAI,OAAO6r4C,GAAGrt4C,EAAEC,EAAEF,GAAG,GAAGE,IAAI,KAAKuB,EAAEI,EAAEjB,EAAEsiH,UAAU,GAAGzhH,EAAE,IAAI,OAAO6r4C,GAAGrt4C,EAAEC,EAAEF,GAAG,GAAGE,IAAI,GAAGuB,EAAEI,EAAEjB,EAAEsiH,UAAU,GAAGzhH,EAAE,IAAI,OAAO6r4C,GAAGrt4C,EAAEC,EAAEF,GAAG,MAAM,IAAIqoB,MAAM,yCAAyC,CAAxZ,CAA0ZroB,IAAI,IAAIY,EAAEV,EAAEW,KAAKqiH,QAAQ,GAAGjjH,EAAEY,QAAQ,EAAEorzC,aAAa,WAAW,OAAOprzC,KAAKgpzC,YAAW,EAAG,EAAEqC,YAAY,WAAW,IAAIjszC,EAAEY,KAAKgpzC,aAAa,OAAO5pzC,EAAE,GAAG,GAAGA,EAAE,IAAI,EAAEA,EAAE,CAAC,EAAEkszC,YAAY,WAAW,OAAOr4yC,QAAQjT,KAAKgpzC,aAAa,EAAEuC,WAAW,WAAW,IAAInszC,EAAEY,KAAKgpzC,aAAahpzC,KAAKqiH,IAAIljH,EAAEa,KAAKqiH,IAAI,OAAOriH,KAAKqiH,IAAIjjH,EAAEA,EAAED,GAAG,IAAIot4C,GAAG,SAASnt4C,EAAED,EAAEY,GAAG,OAAOws4C,GAAG1j3C,OAAOzpB,EAAEqoB,SAAStoB,EAAEY,GAAG,CAAjD,CAAmDC,KAAKsmvC,IAAInnvC,EAAEC,GAAG,SAASA,EAAED,EAAEY,GAAG,IAAI,IAAIV,EAAE,GAAGuB,EAAEzB,EAAEyB,EAAEb,GAAG,CAAC,IAAIiB,EAAEV,EAAEQ,EAAEuB,EAAEjD,EAAEwB,GAAG4B,EAAE,KAAKM,EAAET,EAAE,IAAI,EAAEA,EAAE,IAAI,EAAEA,EAAE,IAAI,EAAE,EAAE,GAAGzB,EAAEkC,EAAE/C,EAAE,MAAM,IAAI+C,EAAET,EAAE,MAAMG,EAAEH,GAAG,IAAIS,EAAE,MAAM,KAAK9B,EAAE5B,EAAEwB,EAAE,OAAO4B,GAAG,GAAGH,IAAI,EAAE,GAAGrB,IAAI,MAAMwB,EAAE,MAAM,IAAIM,GAAGxC,EAAElB,EAAEwB,EAAE,GAAG,MAAM,KAAKI,EAAE5B,EAAEwB,EAAE,MAAM,MAAM,IAAIN,MAAMkC,GAAG,GAAGH,IAAI,IAAI,GAAGrB,IAAI,EAAE,GAAGV,IAAI,MAAMkC,GAAG,OAAOA,GAAG,SAASA,EAAE,OAAO,IAAIM,IAAIxC,EAAElB,EAAEwB,EAAE,GAAGE,EAAE1B,EAAEwB,EAAE,GAAG,MAAM,KAAKI,EAAE5B,EAAEwB,EAAE,MAAM,MAAM,IAAIN,IAAI,MAAM,IAAIQ,MAAM0B,GAAG,GAAGH,IAAI,IAAI,GAAGrB,IAAI,IAAI,GAAGV,IAAI,EAAE,GAAGQ,IAAI,OAAO0B,GAAG,WAAWA,EAAE,OAAO,OAAOA,GAAGA,EAAE,MAAMM,EAAE,GAAGN,EAAE,QAAQA,GAAG,MAAMnD,GAAGS,OAAO4nB,aAAallB,IAAI,GAAG,KAAK,OAAOA,EAAE,MAAM,KAAKA,GAAGnD,GAAGS,OAAO4nB,aAAallB,GAAG5B,GAAGkC,CAAE,CAAC,OAAOzD,CAAC,CAAxlB,CAA0lBW,KAAKsmvC,IAAInnvC,EAAEC,EAAE,EAAEuszC,UAAU,WAAW,IAAIvszC,EAAEY,KAAKgpzC,aAAahpzC,KAAKqiH,IAAIljH,EAAEa,KAAKsmvC,IAAI7+tC,SAASznB,KAAKqiH,IAAIjjH,GAAG,OAAOY,KAAKqiH,IAAIjjH,EAAED,CAAC,EAAEyszC,iBAAiB,SAASxszC,EAAED,GAAG,GAAGa,KAAKuM,OAAO+/3C,GAAG7jF,MAAM,OAAOrpzC,EAAEyC,KAAK7B,KAAKgpzC,WAAW7pzC,IAAI,IAAIY,EAAEys4C,GAAGxs4C,MAAM,IAAIZ,EAAEA,GAAG,GAAGY,KAAKqiH,IAAItiH,GAAGX,EAAEyC,KAAK7B,KAAKgpzC,WAAW7pzC,IAAI,OAAOC,CAAC,EAAEyszC,kBAAkB,SAASzszC,GAAG,GAAGY,KAAKuM,OAAO+/3C,GAAG7jF,MAAM,OAAOrpzC,EAAEyC,KAAK7B,KAAKqrzC,eAAe,IAAIlszC,EAAEqt4C,GAAGxs4C,MAAM,IAAIZ,EAAEA,GAAG,GAAGY,KAAKqiH,IAAIljH,GAAGC,EAAEyC,KAAK7B,KAAKqrzC,eAAe,OAAOjszC,CAAC,EAAE0szC,kBAAkB,SAAS1szC,GAAG,GAAGY,KAAKuM,OAAO+/3C,GAAG7jF,MAAM,OAAOrpzC,EAAEyC,KAAK7B,KAAKsrzC,eAAe,IAAInszC,EAAEqt4C,GAAGxs4C,MAAM,IAAIZ,EAAEA,GAAG,GAAGY,KAAKqiH,IAAIljH,GAAGC,EAAEyC,KAAK7B,KAAKsrzC,eAAe,OAAOlszC,CAAC,EAAE2szC,gBAAgB,SAAS3szC,GAAG,GAAGY,KAAKuM,OAAO+/3C,GAAG7jF,MAAM,OAAOrpzC,EAAEyC,KAAK7B,KAAKirzC,aAAa,IAAI9rzC,EAAEqt4C,GAAGxs4C,MAAM,IAAIZ,EAAEA,GAAG,GAAGY,KAAKqiH,IAAIljH,GAAGC,EAAEyC,KAAK7B,KAAKirzC,aAAa,OAAO7rzC,CAAC,EAAE4szC,iBAAiB,SAAS5szC,GAAG,GAAGY,KAAKuM,OAAO+/3C,GAAG7jF,MAAM,OAAOrpzC,EAAEyC,KAAK7B,KAAKkrzC,cAAc,IAAI/rzC,EAAEqt4C,GAAGxs4C,MAAM,IAAIZ,EAAEA,GAAG,GAAGY,KAAKqiH,IAAIljH,GAAGC,EAAEyC,KAAK7B,KAAKkrzC,cAAc,OAAO9rzC,CAAC,EAAE6szC,kBAAkB,SAAS7szC,GAAG,GAAGY,KAAKuM,OAAO+/3C,GAAG7jF,MAAM,OAAOrpzC,EAAEyC,KAAK7B,KAAK6qzC,eAAe,IAAI1rzC,EAAEqt4C,GAAGxs4C,MAAM,IAAIZ,EAAEA,GAAG,GAAGY,KAAKqiH,IAAIljH,GAAGC,EAAEyC,KAAK7B,KAAK6qzC,eAAe,OAAOzrzC,CAAC,EAAE8szC,mBAAmB,SAAS9szC,GAAG,GAAGY,KAAKuM,OAAO+/3C,GAAG7jF,MAAM,OAAOrpzC,EAAEyC,KAAK7B,KAAK8qzC,gBAAgB,IAAI3rzC,EAAEqt4C,GAAGxs4C,MAAM,IAAIZ,EAAEA,GAAG,GAAGY,KAAKqiH,IAAIljH,GAAGC,EAAEyC,KAAK7B,KAAK8qzC,gBAAgB,OAAO1rzC,CAAC,EAAE+szC,kBAAkB,SAAS/szC,GAAG,GAAGY,KAAKuM,OAAO+/3C,GAAG7jF,MAAM,OAAOrpzC,EAAEyC,KAAK7B,KAAK+qzC,eAAe,IAAI5rzC,EAAEqt4C,GAAGxs4C,MAAM,IAAIZ,EAAEA,GAAG,GAAGY,KAAKqiH,IAAIljH,GAAGC,EAAEyC,KAAK7B,KAAK+qzC,eAAe,OAAO3rzC,CAAC,EAAEgtzC,mBAAmB,SAAShtzC,GAAG,GAAGY,KAAKuM,OAAO+/3C,GAAG7jF,MAAM,OAAOrpzC,EAAEyC,KAAK7B,KAAKgrzC,gBAAgB,IAAI7rzC,EAAEqt4C,GAAGxs4C,MAAM,IAAIZ,EAAEA,GAAG,GAAGY,KAAKqiH,IAAIljH,GAAGC,EAAEyC,KAAK7B,KAAKgrzC,gBAAgB,OAAO5rzC,CAAC,EAAE62hB,KAAK,SAAS72hB,GAAG,IAAID,EAAE,EAAEC,EAAE,GAAGD,IAAImt4C,GAAG/jF,OAAO,KAAKvozC,KAAKsmvC,IAAItmvC,KAAKqiH,OAAO,WAAW,GAAGljH,IAAImt4C,GAAG7jF,MAAMzozC,KAAKqiH,IAAIriH,KAAKgpzC,aAAahpzC,KAAKqiH,SAAS,GAAGljH,IAAImt4C,GAAG5jF,QAAQ1ozC,KAAKqiH,KAAK,MAAO,CAAC,GAAGljH,IAAImt4C,GAAG9jF,QAAQ,MAAM,IAAIhhyC,MAAM,uBAAuBroB,GAAGa,KAAKqiH,KAAK,CAAE,CAAC,EAAEgqsC,SAAS,SAASjtzC,EAAED,GAAGa,KAAKspzC,YAAYlqzC,GAAG,EAAED,EAAG,EAAEiqzC,QAAQ,SAAShqzC,GAAG,IAAI,IAAID,EAAEa,KAAKK,QAAQ,GAAGlB,EAAEa,KAAKqiH,IAAIjjH,GAAGD,GAAG,EAAE,GAAGA,IAAIa,KAAKK,OAAO,CAAC,IAAIN,EAAE,IAAI4f,WAAWxgB,GAAGY,EAAEkM,IAAIjM,KAAKsmvC,KAAKtmvC,KAAKsmvC,IAAIvmvC,EAAEC,KAAKK,OAAOlB,CAAE,CAAC,EAAEmpE,OAAO,WAAW,OAAOtoE,KAAKK,OAAOL,KAAKqiH,IAAIriH,KAAKqiH,IAAI,EAAEriH,KAAKsmvC,IAAI7+tC,SAAS,EAAEznB,KAAKK,OAAO,EAAE2pzC,aAAa,SAAS5qzC,GAAGY,KAAKopzC,QAAQ,GAAGgkF,GAAGpt4C,KAAKsmvC,IAAIlnvC,EAAEY,KAAKqiH,KAAKriH,KAAKqiH,KAAK,CAAE,EAAE6nsC,cAAc,SAAS9qzC,GAAGY,KAAKopzC,QAAQ,GAAGgkF,GAAGpt4C,KAAKsmvC,IAAIlnvC,EAAEY,KAAKqiH,KAAKriH,KAAKqiH,KAAK,CAAE,EAAE+nsC,aAAa,SAAShrzC,GAAGY,KAAKopzC,QAAQ,GAAGgkF,GAAGpt4C,KAAKsmvC,KAAK,EAAElnvC,EAAEY,KAAKqiH,KAAK+qxC,GAAGpt4C,KAAKsmvC,IAAIzjvC,KAAKyK,MAAMlO,GAAG,EAAE,aAAaY,KAAKqiH,IAAI,GAAGriH,KAAKqiH,KAAK,CAAE,EAAEiosC,cAAc,SAASlrzC,GAAGY,KAAKopzC,QAAQ,GAAGgkF,GAAGpt4C,KAAKsmvC,KAAK,EAAElnvC,EAAEY,KAAKqiH,KAAK+qxC,GAAGpt4C,KAAKsmvC,IAAIzjvC,KAAKyK,MAAMlO,GAAG,EAAE,aAAaY,KAAKqiH,IAAI,GAAGriH,KAAKqiH,KAAK,CAAE,EAAEinsC,YAAY,SAASlqzC,IAAIA,GAAGA,GAAG,GAAG,WAAWA,EAAE,EAAE,SAASA,EAAED,GAAG,IAAIY,EAAEV,EAAE,GAAGD,GAAG,GAAGW,EAAEX,EAAE,WAAW,EAAEC,EAAED,EAAE,WAAW,IAAIC,KAAKD,EAAE,YAAY,YAAYW,KAAKX,EAAE,aAAaW,EAAEA,EAAE,EAAE,GAAGA,EAAE,EAAEV,EAAEA,EAAE,EAAE,IAAID,GAAG,qBAAqBA,GAAG,oBAAoB,MAAM,IAAIooB,MAAM,0CAA0CroB,EAAEiqzC,QAAQ,IAAI,SAAShqzC,EAAED,EAAEY,GAAGA,EAAEumvC,IAAIvmvC,EAAEsiH,OAAO,IAAIjjH,EAAE,IAAIA,KAAK,EAAEW,EAAEumvC,IAAIvmvC,EAAEsiH,OAAO,IAAIjjH,EAAE,IAAIA,KAAK,EAAEW,EAAEumvC,IAAIvmvC,EAAEsiH,OAAO,IAAIjjH,EAAE,IAAIA,KAAK,EAAEW,EAAEumvC,IAAIvmvC,EAAEsiH,OAAO,IAAIjjH,EAAE,IAAIW,EAAEumvC,IAAIvmvC,EAAEsiH,KAAK,KAAKjjH,KAAK,EAAG,CAAnK,CAAqKW,EAAE,EAAEZ,GAAG,SAASC,EAAED,GAAG,IAAIY,GAAG,EAAEX,IAAI,EAAED,EAAEmnvC,IAAInnvC,EAAEkjH,QAAQtiH,IAAIX,KAAK,GAAG,IAAI,GAAGA,IAAID,EAAEmnvC,IAAInnvC,EAAEkjH,OAAO,IAAIjjH,IAAIA,KAAK,GAAG,IAAI,GAAGA,IAAID,EAAEmnvC,IAAInnvC,EAAEkjH,OAAO,IAAIjjH,IAAIA,KAAK,GAAG,IAAI,GAAGA,IAAID,EAAEmnvC,IAAInnvC,EAAEkjH,OAAO,IAAIjjH,IAAIA,KAAK,GAAG,IAAI,GAAGA,IAAID,EAAEmnvC,IAAInnvC,EAAEkjH,OAAO,IAAIjjH,IAAIA,KAAK,GAAG,IAAI,GAAGA,IAAID,EAAEmnvC,IAAInnvC,EAAEkjH,OAAO,IAAIjjH,MAAO,CAAtQ,CAAwQC,EAAEF,EAAG,CAA7rB,CAA+rBC,EAAEY,OAAOA,KAAKopzC,QAAQ,GAAGppzC,KAAKsmvC,IAAItmvC,KAAKqiH,OAAO,IAAIjjH,GAAGA,EAAE,IAAI,IAAI,GAAGA,GAAG,MAAMY,KAAKsmvC,IAAItmvC,KAAKqiH,OAAO,KAAKjjH,KAAK,IAAIA,EAAE,IAAI,IAAI,GAAGA,GAAG,MAAMY,KAAKsmvC,IAAItmvC,KAAKqiH,OAAO,KAAKjjH,KAAK,IAAIA,EAAE,IAAI,IAAI,GAAGA,GAAG,MAAMY,KAAKsmvC,IAAItmvC,KAAKqiH,OAAOjjH,IAAI,EAAE,OAAQ,EAAEoqzC,aAAa,SAASpqzC,GAAGY,KAAKspzC,YAAYlqzC,EAAE,EAAE,GAAGA,EAAE,EAAE,EAAEA,EAAG,EAAE0qzC,aAAa,SAAS1qzC,GAAGY,KAAKspzC,YAAYr2yC,QAAQ7T,GAAI,EAAEqtzC,YAAY,SAASrtzC,GAAGA,EAAEU,OAAOV,GAAGY,KAAKopzC,QAAQ,EAAEhqzC,EAAEiB,QAAQL,KAAKqiH,MAAM,IAAIljH,EAAEa,KAAKqiH,IAAIriH,KAAKqiH,IAAI,SAASjjH,EAAED,EAAEY,GAAG,IAAI,IAAIV,EAAEuB,EAAEI,EAAE,EAAEA,EAAE7B,EAAEkB,OAAOW,IAAI,CAAC,IAAI3B,EAAEF,EAAE4Z,WAAW/X,IAAI,OAAO3B,EAAE,MAAM,CAAC,IAAIuB,EAAE,CAACvB,EAAE,OAAO2B,EAAE,IAAI7B,EAAEkB,QAAQjB,EAAEW,KAAK,IAAIX,EAAEW,KAAK,IAAIX,EAAEW,KAAK,KAAKa,EAAEvB,EAAE,QAAQ,CAAC,GAAGA,EAAE,MAAM,CAACD,EAAEW,KAAK,IAAIX,EAAEW,KAAK,IAAIX,EAAEW,KAAK,IAAIa,EAAEvB,EAAE,QAAQ,CAACA,EAAEuB,EAAE,OAAO,GAAGvB,EAAE,MAAM,MAAMuB,EAAE,IAAK,MAAMA,IAAIxB,EAAEW,KAAK,IAAIX,EAAEW,KAAK,IAAIX,EAAEW,KAAK,IAAIa,EAAE,MAAMvB,EAAE,IAAID,EAAEW,KAAKV,GAAGA,EAAE,KAAKD,EAAEW,KAAKV,GAAG,EAAE,KAAKA,EAAE,MAAMD,EAAEW,KAAKV,GAAG,GAAG,KAAKD,EAAEW,KAAKV,GAAG,GAAG,IAAID,EAAEW,KAAKV,GAAG,GAAG,GAAG,KAAKD,EAAEW,KAAKV,GAAG,EAAE,GAAG,KAAKD,EAAEW,KAAK,GAAGV,EAAE,IAAK,CAAC,OAAOU,CAAC,CAA5c,CAA8cC,KAAKsmvC,IAAIlnvC,EAAEY,KAAKqiH,KAAK,IAAItiH,EAAEC,KAAKqiH,IAAIljH,EAAEY,GAAG,KAAK2s4C,GAAGvt4C,EAAEY,EAAEC,MAAMA,KAAKqiH,IAAIljH,EAAE,EAAEa,KAAKspzC,YAAYvpzC,GAAGC,KAAKqiH,KAAKtiH,CAAE,EAAE2pzC,WAAW,SAAStqzC,GAAGY,KAAKopzC,QAAQ,GAAGgjF,GAAGps4C,KAAKsmvC,IAAIlnvC,EAAEY,KAAKqiH,KAAI,EAAG,GAAG,GAAGriH,KAAKqiH,KAAK,CAAE,EAAEunsC,YAAY,SAASxqzC,GAAGY,KAAKopzC,QAAQ,GAAGgjF,GAAGps4C,KAAKsmvC,IAAIlnvC,EAAEY,KAAKqiH,KAAI,EAAG,GAAG,GAAGriH,KAAKqiH,KAAK,CAAE,EAAEuqsC,WAAW,SAASxtzC,GAAG,IAAID,EAAEC,EAAEiB,OAAOL,KAAKspzC,YAAYnqzC,GAAGa,KAAKopzC,QAAQjqzC,GAAG,IAAI,IAAIY,EAAE,EAAEA,EAAEZ,EAAEY,IAAIC,KAAKsmvC,IAAItmvC,KAAKqiH,OAAOjjH,EAAEW,EAAG,EAAE8szC,gBAAgB,SAASztzC,EAAED,GAAGa,KAAKqiH,MAAM,IAAItiH,EAAEC,KAAKqiH,IAAIjjH,EAAED,EAAEa,MAAM,IAAIX,EAAEW,KAAKqiH,IAAItiH,EAAEV,GAAG,KAAKqt4C,GAAG3s4C,EAAEV,EAAEW,MAAMA,KAAKqiH,IAAItiH,EAAE,EAAEC,KAAKspzC,YAAYjqzC,GAAGW,KAAKqiH,KAAKhjH,CAAE,EAAEytzC,aAAa,SAAS1tzC,EAAED,EAAEY,GAAGC,KAAKqszC,SAASjtzC,EAAEkt4C,GAAG7jF,OAAOzozC,KAAK6szC,gBAAgB1tzC,EAAEY,EAAG,EAAEspzC,kBAAkB,SAASjqzC,EAAED,GAAGA,EAAEkB,QAAQL,KAAK8szC,aAAa1tzC,EAAEut4C,GAAGxt4C,EAAG,EAAEoqzC,mBAAmB,SAASnqzC,EAAED,GAAGA,EAAEkB,QAAQL,KAAK8szC,aAAa1tzC,EAAEwt4C,GAAGzt4C,EAAG,EAAE0qzC,mBAAmB,SAASzqzC,EAAED,GAAGA,EAAEkB,QAAQL,KAAK8szC,aAAa1tzC,EAAE2t4C,GAAG5t4C,EAAG,EAAEsqzC,iBAAiB,SAASrqzC,EAAED,GAAGA,EAAEkB,QAAQL,KAAK8szC,aAAa1tzC,EAAEyt4C,GAAG1t4C,EAAG,EAAEwqzC,kBAAkB,SAASvqzC,EAAED,GAAGA,EAAEkB,QAAQL,KAAK8szC,aAAa1tzC,EAAE0t4C,GAAG3t4C,EAAG,EAAE4qzC,mBAAmB,SAAS3qzC,EAAED,GAAGA,EAAEkB,QAAQL,KAAK8szC,aAAa1tzC,EAAE4t4C,GAAG7t4C,EAAG,EAAE8qzC,oBAAoB,SAAS7qzC,EAAED,GAAGA,EAAEkB,QAAQL,KAAK8szC,aAAa1tzC,EAAEow7B,GAAGrw7B,EAAG,EAAEgrzC,mBAAmB,SAAS/qzC,EAAED,GAAGA,EAAEkB,QAAQL,KAAK8szC,aAAa1tzC,EAAE6t4C,GAAG9t4C,EAAG,EAAEkrzC,oBAAoB,SAASjrzC,EAAED,GAAGA,EAAEkB,QAAQL,KAAK8szC,aAAa1tzC,EAAE8t4C,GAAG/t4C,EAAG,EAAE4tzC,gBAAgB,SAAS3tzC,EAAED,GAAGa,KAAKqszC,SAASjtzC,EAAEkt4C,GAAG7jF,OAAOzozC,KAAK4szC,WAAWztzC,EAAG,EAAE6tzC,kBAAkB,SAAS5tzC,EAAED,GAAGa,KAAKqszC,SAASjtzC,EAAEkt4C,GAAG5jF,SAAS1ozC,KAAKgqzC,aAAa7qzC,EAAG,EAAE8tzC,mBAAmB,SAAS7tzC,EAAED,GAAGa,KAAKqszC,SAASjtzC,EAAEkt4C,GAAG5jF,SAAS1ozC,KAAKkqzC,cAAc/qzC,EAAG,EAAE+tzC,kBAAkB,SAAS9tzC,EAAED,GAAGa,KAAKqszC,SAASjtzC,EAAEkt4C,GAAG9jF,SAASxozC,KAAKoqzC,aAAajrzC,EAAG,EAAEguzC,mBAAmB,SAAS/tzC,EAAED,GAAGa,KAAKqszC,SAASjtzC,EAAEkt4C,GAAG9jF,SAASxozC,KAAKsqzC,cAAcnrzC,EAAG,EAAEiuzC,iBAAiB,SAAShuzC,EAAED,GAAGa,KAAKqszC,SAASjtzC,EAAEkt4C,GAAG/jF,QAAQvozC,KAAKspzC,YAAYnqzC,EAAG,EAAEkuzC,kBAAkB,SAASjuzC,EAAED,GAAGa,KAAKqszC,SAASjtzC,EAAEkt4C,GAAG/jF,QAAQvozC,KAAKwpzC,aAAarqzC,EAAG,EAAEmuzC,iBAAiB,SAASluzC,EAAED,GAAGa,KAAKqszC,SAASjtzC,EAAEkt4C,GAAG7jF,OAAOzozC,KAAKyszC,YAAYttzC,EAAG,EAAEouzC,gBAAgB,SAASnuzC,EAAED,GAAGa,KAAKqszC,SAASjtzC,EAAEkt4C,GAAG5jF,SAAS1ozC,KAAK0pzC,WAAWvqzC,EAAG,EAAEquzC,iBAAiB,SAASpuzC,EAAED,GAAGa,KAAKqszC,SAASjtzC,EAAEkt4C,GAAG9jF,SAASxozC,KAAK4pzC,YAAYzqzC,EAAG,EAAEsuzC,kBAAkB,SAASruzC,EAAED,GAAGa,KAAKotzC,iBAAiBhuzC,EAAE6T,QAAQ9T,GAAI,GAAG,IAAIwu4C,GAAG,SAASvu4C,EAAED,GAAG,IAAIY,EAAEZ,EAAEyvH,WAAWvvH,EAAEF,EAAEmH,QAAQ1F,EAAEzB,EAAEyu4C,SAAS5s4C,EAAE7B,EAAE0u4C,SAASvt4C,EAAEnB,EAAEu5F,QAAQ14F,KAAKyvzB,WAAWrwzB,EAAEY,KAAK4uH,WAAW7uH,EAAEC,KAAK4t4C,SAASht4C,EAAEZ,KAAK6t4C,SAAS7s4C,EAAEhB,KAAK04F,QAAQp4F,EAAEN,KAAKsG,QAAQjH,CAAE,EAAEyu4C,GAAG,CAACrpN,GAAG,CAAC3grC,cAAa,GAAImS,GAAG,CAACnS,cAAa,GAAIqh4C,KAAK,CAACrh4C,cAAa,GAAIiq4C,YAAY,CAACjq4C,cAAa,IAAKgq4C,GAAGrpN,GAAGthrC,IAAI,WAAW,MAAO,CAACnD,KAAKyvzB,WAAWxrzB,EAAE,EAAEjE,KAAKyvzB,WAAWzszB,EAAE,EAAE,EAAE8q4C,GAAG733C,GAAG9S,IAAI,WAAW,MAAO,CAACnD,KAAKyvzB,WAAWxrzB,EAAEjE,KAAKyvzB,WAAWlszB,EAAE,EAAEvD,KAAKyvzB,WAAWzszB,EAAEhD,KAAKyvzB,WAAW7szB,EAAE,EAAE,EAAEkr4C,GAAG3I,KAAKhi4C,IAAI,WAAW,OAAOnD,KAAKykrC,GAAGzirC,OAAOhC,KAAKiW,GAAG,EAAE633C,GAAGC,YAAY5q4C,IAAI,WAAW,MAAO,EAAEnD,KAAKyvzB,WAAWlszB,EAAE,GAAGvD,KAAK4uH,YAAY5uH,KAAKyvzB,WAAW7szB,EAAE,GAAG5C,KAAK4uH,WAAW,EAAEtvH,OAAOkU,iBAAiBm63C,GAAGju4C,UAAUou4C,IAAI,IAAIE,GAAG,SAAS5u4C,EAAED,GAAG,IAAIY,EAAE,CAAC,EAAEV,EAAE,CAAC,EAAEW,KAAKiu4C,oBAAoB,GAAG,IAAIrt4C,EAAE,GAAGZ,KAAKku4C,UAAU9u4C,EAAEW,EAAEa,GAAGZ,KAAKku4C,UAAU/u4C,EAAEE,EAAEuB,GAAG,IAAII,EAAE0s4C,GAAG9s4C,GAAGN,EAAE,IAAIqa,GAAG,CAACokB,MAAM/9B,EAAEuC,GAAG,EAAEy7B,OAAOh+B,EAAE4B,GAAG,IAAI,IAAI,IAAI9B,KAAK1B,EAAE,CAAC,IAAIiD,EAAEjD,EAAE0B,GAAG0B,EAAEzC,EAAEe,GAAG2uzB,WAAW90yB,GAAGmlH,KAAKz9H,EAAEmN,KAAKlP,EAAE,CAAC2D,EAAE,EAAEjB,EAAE,GAAG,CAACiB,EAAEzB,EAAEyB,EAAE,EAAEjB,EAAER,EAAEQ,EAAE,GAAGX,EAAEmN,KAAM,CAAC,IAAI,IAAI1M,KAAK3D,EAAE,CAAC,IAAI0B,EAAE1B,EAAE2D,GAAGF,EAAEvD,EAAEyD,GAAG2szB,WAAW/szB,EAAEE,EAAEqB,EAAE,EAAEjB,EAAEJ,EAAEI,EAAE,EAAEL,EAAE9B,EAAE2O,KAAKuvB,MAAM37B,EAAEvC,EAAE2O,KAAKwvB,OAAOrkB,GAAGmlH,KAAKj/H,EAAE2O,KAAKlP,EAAE,CAAC2D,EAAE,EAAEjB,EAAE,GAAG,CAACiB,EAAEvB,EAAEM,EAAEA,GAAGnC,EAAE2O,MAAMmL,GAAGmlH,KAAKj/H,EAAE2O,KAAKlP,EAAE,CAAC2D,EAAE,EAAEjB,EAAEI,EAAE,GAAG,CAACa,EAAEvB,EAAEM,EAAEA,EAAE,GAAG,CAAC+7B,MAAMp8B,EAAEq8B,OAAO,IAAIrkB,GAAGmlH,KAAKj/H,EAAE2O,KAAKlP,EAAE,CAAC2D,EAAE,EAAEjB,EAAE,GAAG,CAACiB,EAAEvB,EAAEM,EAAEA,EAAEI,GAAG,CAAC27B,MAAMp8B,EAAEq8B,OAAO,IAAIrkB,GAAGmlH,KAAKj/H,EAAE2O,KAAKlP,EAAE,CAAC2D,EAAEtB,EAAE,EAAEK,EAAE,GAAG,CAACiB,EAAEvB,EAAE,EAAEM,EAAEA,GAAG,CAAC+7B,MAAM,EAAEC,OAAO57B,IAAIuX,GAAGmlH,KAAKj/H,EAAE2O,KAAKlP,EAAE,CAAC2D,EAAE,EAAEjB,EAAE,GAAG,CAACiB,EAAEvB,EAAEC,EAAEK,EAAEA,GAAG,CAAC+7B,MAAM,EAAEC,OAAO57B,GAAI,CAACpD,KAAKuqJ,MAAMjqJ,EAAEN,KAAKmu4C,cAAcpu4C,EAAEC,KAAKou4C,iBAAiB/u4C,CAAE,EAAE2u4C,GAAGtu4C,UAAUwu4C,UAAU,SAAS9u4C,EAAED,EAAEY,GAAG,IAAI,IAAIV,KAAKD,EAAE,CAAC,IAAIwB,EAAExB,EAAEC,GAAG2B,EAAE,CAACiD,EAAE,EAAEjB,EAAE,EAAEO,EAAE3C,EAAE4O,KAAKuvB,MAAM,EAAEn8B,EAAEhC,EAAE4O,KAAKwvB,OAAO,GAAGj/B,EAAE8B,KAAKb,GAAG7B,EAAEE,GAAG,IAAIsu4C,GAAG3s4C,EAAEJ,GAAGA,EAAEyt4C,mBAAmBru4C,KAAKiu4C,oBAAoBps4C,KAAKxC,EAAG,CAAC,EAAE2u4C,GAAGtu4C,UAAU4u4C,mBAAmB,SAASlv4C,EAAED,GAAG,IAAI,IAAIY,KAAKX,EAAEmv4C,wBAAwBvu4C,KAAKiu4C,qBAAqB7u4C,EAAEov4C,cAAcxu4C,KAAKyu4C,kBAAkBzu4C,KAAKmu4C,cAAcpu4C,GAAGX,EAAEwsK,SAAS7rK,GAAGZ,GAAGa,KAAKyu4C,kBAAkBzu4C,KAAKou4C,iBAAiBru4C,GAAGX,EAAEwsK,SAAS7rK,GAAGZ,EAAG,EAAE6u4C,GAAGtu4C,UAAU+u4C,kBAAkB,SAASrv4C,EAAED,EAAEY,GAAG,GAAGX,GAAGD,GAAGC,EAAEkH,UAAUnH,EAAEmH,QAAQ,CAAClH,EAAEkH,QAAQnH,EAAEmH,QAAQ,IAAIjH,EAAED,EAAEqlrC,GAAG1krC,EAAEwuE,OAAOpvE,EAAEqQ,UAAK,EAAO,CAACvL,EAAE5E,EAAE,GAAG2D,EAAE3D,EAAE,IAAK,CAAC,EAAE8S,GAAG,gBAAgBw73C,IAAIx73C,GAAG,aAAa673C,IAAI,IAAIU,GAAG,CAAC/luB,WAAW,EAAEn/H,SAAS,EAAEml2B,eAAe,GAAGC,GAAG,WAAW5u4C,KAAK8hG,MAAM,EAAE9hG,KAAKs33C,UAAU,GAAGt33C,KAAK6u4C,UAAU,IAAK,EAAED,GAAGE,QAAQ,SAAS1v4C,EAAED,GAAG,IAAIY,EAAE,IAAI6u4C,GAAG,OAAO7u4C,EAAE+hG,MAAM1iG,GAAG,EAAEW,EAAEu33C,UAAUn43C,EAAEY,CAAC,EAAE6u4C,GAAGG,SAAS,SAAS3v4C,GAAG,IAAID,EAAE,IAAIyv4C,GAAG,OAAOzv4C,EAAE0v4C,UAAUzv4C,EAAED,CAAC,EAAE,IAAI6v4C,GAAG,WAAWhv4C,KAAKowB,KAAK,GAAGpwB,KAAKiv4C,aAAa,GAAGjv4C,KAAKu33C,SAAS,GAAGv33C,KAAKkv4C,eAAe,IAAK,EAAE,SAASC,GAAG/v4C,EAAED,EAAEY,EAAEV,EAAEuB,EAAEI,EAAEV,EAAEQ,EAAEuB,EAAEG,EAAEM,EAAEjC,EAAE+B,EAAEF,EAAEM,EAAEL,GAAG,IAAIS,EAAEH,EAAE+r4C,GAAGI,YAAYhw4C,EAAEwB,GAAGC,IAAI6t4C,GAAGll2B,UAAUvmiB,EAAEos4C,yBAAyB,IAAIlt4C,EAAEgb,GAAGqg3C,yBAAyBv53C,EAAEkZ,GAAGsg3C,+BAA+B,GAAGt73C,GAAG,IAAIc,EAAEs03C,SAASl33C,OAAO,CAAC+C,EAAE,GAAG,IAAI,IAAIE,EAAE,EAAEC,EAAEpB,EAAEc,EAAEsB,WAAW+q4C,GAAGrs4C,EAAET,EAAExB,EAAE7B,EAAEE,EAAEqD,EAAEM,IAAIM,EAAEC,EAAElD,OAAOiD,GAAG,EAAE,CAAC,IAAIM,EAAEL,EAAED,GAAGuB,EAAE,IAAImq4C,GAAGnq4C,EAAEurB,KAAKxsB,EAAEiB,EAAE0y3C,SAASt03C,EAAEs03C,SAAS,IAAI,IAAI/z3C,EAAE,EAAEA,EAAEI,EAAEvD,OAAOmD,IAAIqB,EAAEoq4C,aAAapt4C,KAAK,GAAGuB,EAAEvB,KAAKgD,EAAG,CAAC,MAAM,GAAGZ,EAAE,CAACb,EAAE,GAAG,IAAI,IAAIM,EAAE,EAAEG,EAAEI,EAAEhB,EAAEmtB,KAAKntB,EAAEgs4C,aAAaK,GAAGrs4C,EAAET,EAAExB,EAAE7B,EAAEE,EAAEqD,EAAEM,IAAIU,EAAEG,EAAExD,OAAOqD,GAAG,EAAE,CAAC,IAAIiC,EAAE9B,EAAEH,GAAGS,EAAE,IAAI6q4C,GAAG7q4C,EAAEisB,KAAKzqB,EAAE,GAAGxB,EAAE8q4C,aAAatp4C,EAAE,GAAGxB,EAAEoz3C,SAASt03C,EAAEs03C,SAASn03C,EAAEvB,KAAKsC,EAAG,CAAC,MAAMf,EAAE,SAAShE,EAAED,GAAG,IAAI,IAAIY,EAAE,GAAGV,EAAED,EAAEgxB,KAAKxvB,EAAE,EAAEI,EAAE,EAAEV,EAAEnB,EAAE6B,EAAEV,EAAED,OAAOW,GAAG,EAAE,CAAC,IAAIF,EAAER,EAAEU,GAAGjB,EAAE8B,KAAKzC,EAAEk4B,UAAU12B,EAAEE,IAAIF,EAAEE,CAAE,CAAC,OAAOF,EAAEvB,EAAEgB,QAAQN,EAAE8B,KAAKzC,EAAEk4B,UAAU12B,EAAEvB,EAAEgB,SAASN,CAAC,CAA9J,CAAgKkD,EAAEqs4C,GAAGrs4C,EAAET,EAAExB,EAAE7B,EAAEE,EAAEqD,EAAEM,IAAI,IAAI0B,EAAE,GAAGI,EAAE,CAACyq4C,gBAAgB7q4C,EAAE0rB,KAAKntB,EAAEsB,WAAWu6B,IAAIh8B,EAAE,GAAGg9F,OAAOh9F,EAAE,GAAG+7B,KAAK/7B,EAAE,GAAG+8F,MAAM/8F,EAAE,GAAGg/3C,YAAYjh4C,EAAE2u4C,aAAY,EAAGC,gBAAe,GAAI,OAAO,SAASrw4C,EAAED,EAAEY,EAAEV,EAAEuB,EAAEI,EAAEV,EAAEQ,EAAEuB,EAAEG,EAAEM,EAAEjC,GAAG,IAAI,IAAI+B,EAAE,EAAEF,GAAG,GAAGM,EAAE,EAAEL,EAAE,EAAES,EAAE,UAAUtC,EAAE,EAAE,SAASA,EAAE,EAAE,GAAGmC,EAAE,EAAEd,EAAE,EAAE8B,EAAErD,EAAEuB,EAAE8B,EAAE5D,OAAO8B,GAAG,EAAE,CAAC,IAAImB,EAAEW,EAAE9B,GAAGmB,EAAE+uB,OAAO,IAAI9uB,EAAED,EAAEos4C,cAAc9r4C,EAAE,IAAIL,EAAE,GAAGsB,EAAE,CAAC8q4C,iBAAiB,GAAGC,WAAW,GAAGxw4C,EAAEmw4C,gBAAgBts4C,GAAG4B,EAAE,IAAIrB,EAAEqB,EAAE8q4C,iBAAiBjs4C,EAAE,EAAE,GAAGJ,EAAEjD,SAAS,CAAC,IAAI,IAAIwD,EAAE,EAAEA,EAAEP,EAAEjD,SAASwD,IAAI,CAAC,IAAI8B,EAAErC,EAAEus4C,WAAWhs4C,GAAGM,EAAEb,EAAEws4C,gBAAgBjs4C,GAAGa,EAAEpB,EAAEys4C,YAAYls4C,GAAGiB,EAAE,EAAEe,EAAE,KAAKE,EAAE,KAAK7B,EAAE,KAAK0B,EAAE,GAAGZ,IAAI3C,IAAIqs4C,GAAG/luB,aAAa7lqB,IAAIoQ,GAAGxO,IAAI5B,IAAIkt4C,GAAGtr4C,KAAKO,EAAEP,EAAEmO,GAAGkq3C,OAAO933C,IAAI4N,GAAG,qBAAqB5N,IAAI4N,GAAG,qBAAqB5N,IAAI4N,GAAG,+BAA+B5N,IAAI4N,GAAG,+BAA+B5N,MAAM,GAAGU,EAAEkp4C,UAAU,CAAC,IAAItp4C,EAAElG,EAAEsG,EAAEkp4C,WAAW,IAAItp4C,EAAE,SAASrB,EAAEyB,EAAEkp4C,UAAUzv4C,EAAEow4C,YAAYpw4C,EAAEow4C,cAAa,EAAGzp4C,EAAER,EAAEkqzB,WAAW,IAAIprzB,EAAEkB,EAAEwo4C,YAAYpo4C,EAAEm8F,MAAM,GAAGn8F,EAAEm8F,MAAMjhG,EAAEiE,EAAElB,GAAG,GAAGS,EAAE,GAAGsB,EAAEm8F,OAAOl8F,GAAGC,EAAE,CAACk5B,MAAM16B,EAAE,GAAG26B,OAAO36B,EAAE,GAAGw6B,KAAK,EAAEC,KAAK,EAAE2u2C,QAAQzo4C,EAAEX,EAAE,GAAGA,EAAE,KAAKop4C,QAAQ,IAAIzp4C,EAAEgB,EAAEX,EAAE,GAAGsB,EAAEm8F,MAAM,GAAGv+F,EAAEc,EAAE,GAAGsB,EAAEm8F,MAAM,GAAGv+F,EAAES,EAAE,GAAGA,EAAEN,IAAIA,EAAEM,EAAG,KAAM,CAAC,IAAIM,EAAEvE,EAAE4F,EAAE2x3C,WAAWjy3C,EAAEf,GAAGA,EAAEI,GAAG,GAAGW,GAAGA,EAAEquF,KAAK3tF,EAAEV,EAAEquF,KAAK7tF,EAAER,EAAEo3I,YAAa,CAAC,IAAIr4I,EAAEjF,EAAEwG,EAAE2x3C,WAAWpx3C,EAAE9B,GAAGA,EAAEM,GAAG,IAAIwB,EAAE,SAASL,EAAEK,EAAEu2I,OAAQ,CAAC33I,EAAE,IAAIvB,EAAEoC,EAAEm8F,MAAO,CAAC98F,GAAG5F,EAAEqw4C,gBAAe,EAAGjs4C,EAAE3B,KAAK,CAACikP,MAAMphP,EAAEmq4C,UAAU3q4C,EAAED,EAAErB,EAAEI,EAAEN,EAAEoC,EAAE0kiB,SAASxkiB,EAAE88F,MAAMn8F,EAAEm8F,MAAMw1xC,UAAU3x3C,EAAE2x3C,UAAU2X,aAAa9q4C,EAAEs4I,QAAQ52I,EAAE6tF,KAAK3tF,IAAInD,GAAGgD,EAAED,EAAEm8F,MAAMt/F,IAAIgB,EAAE3B,KAAK,CAACikP,MAAMphP,EAAEmq4C,UAAU3q4C,EAAED,EAAErB,EAAEI,EAAEN,EAAEoC,EAAE0kiB,SAASxkiB,EAAE88F,MAAMn8F,EAAEm8F,MAAMw1xC,UAAU3x3C,EAAE2x3C,UAAU2X,aAAa9q4C,EAAEs4I,QAAQ52I,EAAE6tF,KAAK3tF,IAAInD,GAAGiD,EAAE4n4C,QAAQ9n4C,EAAEm8F,MAAMt/F,EAAG,CAAC,IAAIgB,EAAEnD,SAAS2C,EAAEH,KAAK8K,IAAI/K,EAAEJ,EAAEQ,GAAGit4C,GAAGzs4C,EAAE,EAAEA,EAAEnD,OAAO,EAAE+C,EAAEM,IAAId,EAAE,EAAE,IAAIsC,EAAElE,EAAEuC,EAAEG,EAAEmB,EAAE+q4C,WAAW/s4C,KAAK8K,IAAIjK,EAAEE,GAAGlB,GAAGwC,EAAEvC,EAAEE,KAAK8K,IAAIzI,EAAEvC,KAAKM,CAAE,MAAMP,GAAG1B,IAAIiC,CAAE,CAAC,IAAIgC,EAAEN,EAAEjC,IAAI,GAAG+B,EAAEyr4C,GAAG5v4C,GAAGyE,EAAEN,EAAE0r4C,gBAAgBzq4C,EAAEjB,EAAE0uuB,eAAc,SAAU/zuB,EAAED,EAAEY,EAAEV,EAAEuB,EAAEI,EAAEV,EAAEQ,EAAEuB,GAAG,IAAIG,EAAEM,GAAG3D,EAAEY,GAAGa,EAAE4B,EAAExB,IAAIV,GAAGQ,EAAEzB,IAAI,KAAKA,EAAEgD,EAAE,IAAI/B,EAAE,IAAI,IAAIO,EAAE,EAAE+B,EAAExD,EAAEyB,EAAE+B,EAAEvC,OAAOQ,GAAG,EAAE,IAAI,IAAI6B,EAAE,EAAEM,EAAEJ,EAAE/B,GAAG8u4C,iBAAiBjt4C,EAAEM,EAAE3C,OAAOqC,GAAG,EAAE,CAAC,IAAIC,EAAEK,EAAEN,GAAGC,EAAEsB,GAAGnB,EAAEH,EAAEK,GAAGR,CAAE,CAAE,EAA3L,CAA6LpD,EAAEmw4C,gBAAgBns4C,EAAE2B,EAAEW,EAAE1C,EAAEL,EAAE3B,EAAE2D,EAAE/D,EAAEP,QAAQjB,EAAE0/B,MAAMp5B,EAAEf,EAAEvF,EAAE0gG,OAAO1gG,EAAE0/B,IAAIn6B,EAAEvF,EAAEy/B,OAAO95B,EAAE/B,EAAE5D,EAAEygG,MAAMzgG,EAAEy/B,KAAK77B,CAAE,CAAp0D,CAAs0D8B,EAAE3F,EAAEY,EAAEV,EAAE+D,EAAE9C,EAAEQ,EAAEuB,EAAExB,EAAE2B,EAAEI,EAAED,IAAI,SAASvD,GAAG,IAAI,IAAID,EAAE,EAAEY,EAAEX,EAAED,EAAEY,EAAEM,OAAOlB,GAAG,EAAE,GAAG,IAAIY,EAAEZ,GAAGww4C,iBAAiBtv4C,OAAO,OAAO,EAAG,OAAO,CAAE,CAAnG,CAAqGqE,IAAII,CAAC,CAACkq4C,GAAGI,YAAY,SAAShw4C,EAAED,GAAG,IAAI,IAAIY,EAAE,IAAIiv4C,GAAG3v4C,EAAE,EAAEA,EAAED,EAAEm43C,SAASl33C,OAAOhB,IAAI,CAAC,IAAIuB,EAAExB,EAAEm43C,SAASl43C,GAAGuB,EAAE2pJ,MAAMxqJ,EAAEqw4C,gBAAgBxv4C,GAAGb,EAAEsw4C,eAAezv4C,EAAEzB,EAAG,CAAC,OAAOY,CAAC,EAAEiv4C,GAAGtv4C,UAAUW,OAAO,WAAW,OAAOL,KAAKowB,KAAK/vB,MAAM,EAAE2u4C,GAAGtv4C,UAAUmw4C,WAAW,SAASzw4C,GAAG,OAAOY,KAAKu33C,SAASv33C,KAAKiv4C,aAAa7v4C,GAAG,EAAE4v4C,GAAGtv4C,UAAUow4C,gBAAgB,SAAS1w4C,GAAG,OAAOY,KAAKiv4C,aAAa7v4C,EAAE,EAAE4v4C,GAAGtv4C,UAAUqw4C,YAAY,SAAS3w4C,GAAG,OAAOY,KAAKowB,KAAKrX,WAAW3Z,EAAE,EAAE4v4C,GAAGtv4C,UAAU2v4C,uBAAuB,WAAWrv4C,KAAKowB,KAAK,SAAShxB,GAAG,IAAI,IAAID,EAAE,GAAGY,EAAE,EAAEA,EAAEX,EAAEiB,OAAON,IAAI,CAAC,IAAIV,EAAED,EAAE2Z,WAAWhZ,EAAE,IAAI,KAAKa,EAAExB,EAAE2Z,WAAWhZ,EAAE,IAAI,KAAKZ,GAAGE,GAAGuU,GAAGvU,KAAK6s4C,GAAG9s4C,EAAEW,EAAE,KAAKa,GAAGgT,GAAGhT,KAAKsr4C,GAAG9s4C,EAAEW,EAAE,MAAMms4C,GAAG9s4C,EAAEW,IAAIX,EAAEW,GAAGms4C,GAAG9s4C,EAAEW,GAAI,CAAC,OAAOZ,CAAC,CAAvL,CAAyLa,KAAKowB,KAAM,EAAE4+2C,GAAGtv4C,UAAU2yB,KAAK,WAAW,IAAI,IAAIjzB,EAAE,EAAED,EAAE,EAAEA,EAAEa,KAAKowB,KAAK/vB,QAAQ2v4C,GAAGhw4C,KAAKowB,KAAKrX,WAAW5Z,IAAIA,IAAIC,IAAI,IAAI,IAAIW,EAAEC,KAAKowB,KAAK/vB,OAAOhB,EAAEW,KAAKowB,KAAK/vB,OAAO,EAAEhB,GAAG,GAAGA,GAAGD,GAAG4w4C,GAAGhw4C,KAAKowB,KAAKrX,WAAW1Z,IAAIA,IAAIU,IAAIC,KAAKowB,KAAKpwB,KAAKowB,KAAKkH,UAAUl4B,EAAEW,GAAGC,KAAKiv4C,aAAajv4C,KAAKiv4C,aAAalt4C,MAAM3C,EAAEW,EAAG,EAAEiv4C,GAAGtv4C,UAAU43B,UAAU,SAASl4B,EAAED,GAAG,IAAIY,EAAE,IAAIiv4C,GAAG,OAAOjv4C,EAAEqwB,KAAKpwB,KAAKowB,KAAKkH,UAAUl4B,EAAED,GAAGY,EAAEkv4C,aAAajv4C,KAAKiv4C,aAAalt4C,MAAM3C,EAAED,GAAGY,EAAEw33C,SAASv33C,KAAKu33C,SAASx33C,CAAC,EAAEiv4C,GAAGtv4C,UAAU6E,SAAS,WAAW,OAAOvE,KAAKowB,IAAI,EAAE4+2C,GAAGtv4C,UAAUgw4C,YAAY,WAAW,IAAItw4C,EAAEY,KAAK,OAAOA,KAAKiv4C,aAAav72C,QAAO,SAAUv0B,EAAEY,GAAG,OAAO8C,KAAK8K,IAAIxO,EAAEC,EAAEm43C,SAASx33C,GAAG+hG,MAAO,GAAE,EAAE,EAAEktyC,GAAGtv4C,UAAU2w4C,eAAe,SAASjx4C,EAAED,GAAGa,KAAKowB,MAAMhxB,EAAEgxB,KAAKpwB,KAAKu33C,SAAS113C,KAAK+s4C,GAAGE,QAAQ1v4C,EAAE0iG,MAAM1iG,EAAEk43C,WAAWn43C,IAAI,IAAI,IAAIY,EAAEC,KAAKu33C,SAASl33C,OAAO,EAAEhB,EAAE,EAAEA,EAAED,EAAEgxB,KAAK/vB,SAAShB,EAAEW,KAAKiv4C,aAAapt4C,KAAK9B,EAAG,EAAEiv4C,GAAGtv4C,UAAU0w4C,gBAAgB,SAAShx4C,GAAG,IAAID,EAAEC,EAAEmrJ,MAAMnrJ,EAAEmrJ,MAAM7/I,KAAK,GAAG,GAAG,IAAIvL,EAAEkB,OAAO,CAAC,IAAIN,EAAEC,KAAKsw4C,8BAA8Bvw4C,GAAGC,KAAKowB,MAAMtwB,OAAO4nB,aAAa3nB,GAAGC,KAAKu33C,SAAS113C,KAAK+s4C,GAAGG,SAAS5v4C,IAAIa,KAAKiv4C,aAAapt4C,KAAK7B,KAAKu33C,SAASl33C,OAAO,IAAIwE,EAAE,wCAAyC,MAAMA,EAAE,kDAAmD,EAAEmq4C,GAAGtv4C,UAAU4w4C,4BAA4B,WAAW,OAAOtw4C,KAAKkv4C,eAAelv4C,KAAKkv4C,gBAAgB,MAAM,OAAOlv4C,KAAKkv4C,gBAAgBlv4C,KAAKkv4C,eAAe,MAAMlv4C,KAAKkv4C,eAAe,EAAE,IAAIc,GAAG,CAAC,GAAE,EAAG,IAAG,EAAG,IAAG,EAAG,IAAG,EAAG,IAAG,EAAG,IAAG,GAAIO,GAAG,CAAC,EAAE,SAASC,GAAGpx4C,EAAED,EAAEY,EAAEV,EAAEuB,EAAEI,GAAG,GAAG7B,EAAE0v4C,UAAU,CAAC,IAAIvu4C,EAAEjB,EAAEF,EAAE0v4C,WAAW,OAAOvu4C,EAAEA,EAAEyt4C,YAAY,GAAG5u4C,EAAE2iG,MAAM,GAAG9gG,EAAEJ,EAAE,CAAC,CAAC,IAAIE,EAAEf,EAAEZ,EAAEm43C,WAAWj13C,EAAEvB,GAAGA,EAAE1B,GAAG,OAAOiD,EAAEA,EAAEo6I,QAAQgxvC,QAAQtu4C,EAAE2iG,MAAMlhG,EAAE,CAAC,CAAC,SAAS6v4C,GAAGrx4C,EAAED,EAAEY,EAAEV,GAAG,IAAIuB,EAAEiC,KAAK6yF,IAAIt2F,EAAED,EAAE,GAAG,OAAOE,EAAED,EAAED,EAAEyB,EAAE,EAAE,EAAEA,EAAEA,EAAEiC,KAAKmjH,IAAIjmH,GAAGA,CAAC,CAAC,SAAS2w4C,GAAGtx4C,EAAED,EAAEY,GAAG,IAAIV,EAAE,EAAE,OAAO,KAAKD,IAAIC,GAAG,KAAKU,IAAIV,GAAG,KAAK,KAAKD,GAAG,QAAQA,IAAIC,GAAG,IAAI,KAAKF,GAAG,QAAQA,IAAIE,GAAG,IAAIA,CAAC,CAAC,SAASsx4C,GAAGvx4C,EAAED,EAAEY,EAAEV,EAAEuB,EAAEI,GAAG,IAAI,IAAIV,EAAE,KAAKQ,EAAE2v4C,GAAGtx4C,EAAEY,EAAEa,EAAEI,GAAGqB,EAAE,EAAEG,EAAEnD,EAAEgD,EAAEG,EAAEnC,OAAOgC,GAAG,EAAE,CAAC,IAAIS,EAAEN,EAAEH,GAAGxB,EAAE4v4C,GAAGtx4C,EAAE2D,EAAEmB,EAAElE,EAAEa,EAAEI,GAAG8B,EAAE8t4C,QAAQ/v4C,GAAGC,IAAIR,EAAEwC,EAAEhC,EAAED,EAAG,CAAC,MAAO,CAACmc,MAAM5d,EAAE6E,EAAE9E,EAAE0x4C,WAAWvw4C,EAAEsw4C,QAAQ9v4C,EAAE,CAAC,SAASwu4C,GAAGlw4C,EAAED,EAAEY,EAAEV,EAAEuB,EAAEI,EAAEV,GAAG,GAAG,UAAUU,EAAE,MAAO,GAAG,IAAI5B,EAAE,MAAO,GAAG,IAAI,IAAI0B,EAAEuB,EAAE,GAAGG,EAAE,SAASpD,EAAED,EAAEY,EAAEV,EAAEuB,EAAEI,GAAG,IAAI,IAAIV,EAAE,EAAEQ,EAAE,EAAEA,EAAE1B,EAAEiB,SAASS,IAAI,CAAC,IAAIuB,EAAEjD,EAAEyw4C,WAAW/u4C,GAAGR,GAAGkw4C,GAAGpx4C,EAAE2w4C,YAAYjv4C,GAAGuB,EAAEhD,EAAEuB,EAAEzB,EAAE6B,EAAG,CAAC,OAAOV,EAAEuC,KAAK8K,IAAI,EAAE9K,KAAKuK,KAAK9M,EAAEP,GAAG,CAApJ,CAAsJX,EAAED,EAAEY,EAAEV,EAAEuB,EAAEN,GAAGwC,EAAE1D,EAAEgxB,KAAK5vB,QAAQ,MAAM,EAAEK,EAAE,EAAE+B,EAAE,EAAEA,EAAExD,EAAEiB,SAASuC,IAAI,CAAC,IAAIF,EAAEtD,EAAEyw4C,WAAWjt4C,GAAGI,EAAE5D,EAAE2w4C,YAAYnt4C,GAAG,GAAGot4C,GAAGht4C,KAAKnC,GAAG2v4C,GAAGxt4C,EAAEN,EAAErD,EAAEuB,EAAEzB,EAAEmB,IAAIsC,EAAExD,EAAEiB,SAAS,EAAE,CAAC,IAAIsC,KAAK7B,EAAEkC,GAAG,SAAS6P,GAAG,qBAAqB/R,IAAI+R,GAAGsq3C,SAASr83C,IAAI+R,GAAG,2BAA2B/R,IAAI+R,GAAG,gCAAgC/R,IAAI+R,GAAG,qBAAqB/R,IAAI+R,GAAG,2BAA2B/R,IAAI+R,GAAG,eAAe/R,IAAI+R,GAAG,+BAA+B/R,IAAI+R,GAAG,sCAAsC/R,IAAI+R,GAAG,0BAA0B/R,IAAI+R,GAAG,mCAAmC/R,IAAI+R,GAAG,iCAAiC/R,IAAI+R,GAAGoq3C,SAASn83C,IAAI+R,GAAG,sCAAsC/R,IAAI+R,GAAG,mBAAmB/R,IAAI+R,GAAG,gCAAgC/R,IAAI+R,GAAGqq3C,SAASp83C,IAAI+R,GAAG,kBAAkB/R,IAAI+R,GAAG,eAAe/R,IAAI+R,GAAG,gBAAgB/R,MAAMyv4C,GAAGvt4C,IAAIL,GAAGD,EAAEms4C,YAAYxs4C,EAAER,KAAK8u4C,GAAG/t4C,EAAE,EAAE/B,EAAE2B,EAAEH,EAAEqu4C,GAAG1t4C,EAAE5D,EAAE2w4C,YAAYnt4C,EAAE,GAAGD,GAAGG,IAAG,GAAK,CAAC,CAAC,OAAO,SAAS1D,EAAED,GAAG,OAAOA,EAAEC,EAAED,EAAE0x4C,YAAY7u4C,OAAO7C,EAAE6d,OAAO,EAAE,CAAzD,CAA2D2z3C,GAAGvx4C,EAAEiB,SAASQ,EAAE2B,EAAEH,EAAE,GAAE,GAAI,CAAC,SAAS6t4C,GAAG9w4C,GAAG,IAAID,EAAE,GAAGY,EAAE,GAAG,OAAOX,GAAG,IAAI,QAAQ,IAAI,YAAY,IAAI,eAAeD,EAAE,EAAE,MAAM,IAAI,OAAO,IAAI,WAAW,IAAI,cAAcA,EAAE,EAAG,OAAOC,GAAG,IAAI,SAAS,IAAI,eAAe,IAAI,cAAcW,EAAE,EAAE,MAAM,IAAI,MAAM,IAAI,YAAY,IAAI,WAAWA,EAAE,EAAG,MAAO,CAACow4C,gBAAgBhx4C,EAAEg0uB,cAAcpzuB,EAAE,CAAC,SAASkw4C,GAAG7w4C,EAAED,EAAEY,EAAEV,EAAEuB,GAAG,GAAGvB,GAAGuB,EAAE,IAAI,IAAII,EAAE5B,EAAEW,GAAGO,GAAGlB,EAAEW,GAAGkE,EAAEjD,EAAEy7I,QAAQgxvC,QAAQzs4C,EAAE8gG,OAAOziG,EAAEyB,EAAE3B,EAAE2B,GAAGf,EAAEe,IAAI1B,EAAE0B,GAAGmD,GAAG3D,EAAElB,EAAE0B,GAAGkC,GAAGpC,CAAE,CAAC,SAASkw4C,GAAG1x4C,EAAED,EAAEY,EAAEV,EAAEuB,EAAEI,GAAG,IAAIV,EAAEQ,EAAE1B,EAAEmrJ,MAAM,GAAGzpJ,EAAE43F,QAAQ,CAAC,IAAIr2F,EAAEvB,EAAE43F,QAAQl2F,EAAE1B,EAAE8tH,YAAY,EAAEtuH,EAAE,CAAC+B,EAAE,GAAGG,EAAEH,EAAE,GAAGG,EAAE1B,EAAEit4C,YAAY,GAAG1r4C,EAAE,GAAGG,EAAE1B,EAAEit4C,YAAY,GAAG1r4C,EAAE,GAAGG,EAAG,CAAC,IAAIM,EAAEjC,EAAE+B,EAAEF,EAAEM,EAAE7D,EAAE0/B,KAAK79B,EAAE2B,EAAExD,EAAE0gG,MAAM7+F,EAAE,UAAUjB,GAAG,SAASA,GAAG2C,EAAE9B,EAAE,GAAGoC,EAAE3D,EAAE,GAAGwB,EAAED,EAAE,GAAG+B,EAAEtD,EAAE,IAAIwB,GAAG6B,EAAE9B,EAAE,IAAIoC,EAAEL,EAAE7B,EAAEit4C,YAAY,IAAI,GAAGjt4C,EAAEit4C,YAAY,GAAG,IAAI3q4C,EAAEjE,EAAE2/B,IAAI99B,EAAEiC,EAAE9D,EAAE2gG,OAAO9+F,EAAE,MAAO,WAAWjB,GAAG,SAASA,GAAG+C,EAAElC,EAAE,GAAGwC,EAAE/D,EAAE,GAAGuD,EAAEhC,EAAE,GAAGqC,EAAE5D,EAAE,IAAIuD,GAAGE,EAAElC,EAAE,IAAIwC,EAAEH,EAAEnC,EAAEit4C,YAAY,IAAI,GAAGjt4C,EAAEit4C,YAAY,GAAG,CAACxjvC,MAAMzpJ,EAAEg+B,IAAIh8B,EAAE+8F,MAAMh/F,EAAEi/F,OAAOl9F,EAAEi8B,KAAKn8B,EAAEqu4C,iBAAiBzw4C,EAAE,CAACiw4C,GAAG,KAAI,EAAGA,GAAG,KAAI,EAAGA,GAAG,KAAI,EAAGA,GAAG,KAAI,EAAGA,GAAG,KAAI,EAAGA,GAAG,KAAI,EAAGA,GAAG,KAAI,EAAGA,GAAG,KAAI,EAAGA,GAAG,MAAK,EAAGA,GAAG,MAAK,EAAGA,GAAG,OAAM,EAAGA,GAAG,OAAM,EAAGA,GAAG,OAAM,EAAGA,GAAG,OAAM,EAAG,IAAIS,GAAG,SAAS5x4C,GAAG,SAASD,EAAEA,EAAEY,EAAEV,EAAEuB,GAAGxB,EAAEQ,KAAKI,KAAKb,EAAEY,GAAGC,KAAK2uO,MAAMtvO,OAAE,IAASuB,IAAIZ,KAAKq3a,QAAQz2a,EAAG,CAAC,OAAOxB,IAAID,EAAEK,UAAUJ,IAAID,EAAEO,UAAUJ,OAAOY,OAAOd,GAAGA,EAAEM,YAAYO,YAAYd,EAAEA,EAAEO,UAAU6wB,MAAM,WAAW,OAAO,IAAIpxB,EAAEa,KAAKiE,EAAEjE,KAAKgD,EAAEhD,KAAK2uO,MAAM3uO,KAAKq3a,QAAQ,EAAEl4a,CAAC,CAAnQ,CAAqQyB,GAAG,SAASqw4C,GAAG7x4C,EAAED,GAAG,IAAIY,EAAEZ,EAAE6he,WAAW,GAAG,aAAajhe,EAAEqiB,KAAK,MAAO,CAACA,KAAK,WAAW8u3C,WAAWnx4C,EAAEu0gB,SAAS,IAAI/2f,GAAGne,EAAE,KAAK,GAAG,WAAWW,EAAEqiB,KAAK,MAAO,CAACA,KAAK,UAAU,IAAI,IAAI/iB,EAAEU,EAAE663C,UAAUh63C,EAAEb,EAAE863C,kBAAkB753C,EAAE,EAAEA,EAAE3B,EAAEgB,QAAQhB,EAAE2B,IAAI5B,GAAG4B,IAAI,IAAI,IAAIV,EAAEU,EAAE6B,KAAK8K,IAAI,EAAE3M,EAAE,GAAGV,EAAEjB,EAAEgB,QAAQhB,EAAEiB,GAAGlB,EAAE,GAAGkB,IAAIA,EAAEuC,KAAKgL,IAAIxO,EAAEgB,OAAO,EAAEC,GAAG,IAAIQ,EAAEzB,EAAE2B,GAAGqB,EAAEhD,EAAEiB,GAAG,MAAO,cAAcP,EAAEqiB,KAAK,CAACA,KAAK,YAAY8lG,QAAQpnH,EAAEmnH,QAAQ5lH,EAAEw43C,kBAAkBj63C,GAAG,CAACwhB,KAAK,SAAS8lG,QAAQpnH,EAAEmnH,QAAQ5lH,EAAEin3B,QAAQvp3B,EAAEu0gB,SAAS,IAAI/2f,GAAGzc,IAAIulK,QAAQtmK,EAAEu0gB,SAAS,IAAI/2f,GAAGlb,IAAIw43C,kBAAkBj63C,EAAE,CAAC,SAASuw4C,GAAG/x4C,EAAED,EAAEY,GAAG,IAAIV,EAAEF,EAAEiy4C,MAAMxw4C,EAAEb,EAAE2h4C,UAAU,MAAO,WAAWti4C,EAAEgjB,KAAKxhB,EAAE,IAAI,cAAcxB,EAAEgjB,KAAKxY,GAAGhJ,EAAE,IAAIb,EAAE4h4C,UAAU,IAAIxi4C,EAAEky4C,QAAQhy4C,CAAC,CAAC,SAASiy4C,GAAGly4C,EAAED,GAAG,IAAIY,EAAE,EAAEV,EAAE,EAAE,GAAG,aAAaD,EAAEgjB,KAAK/iB,EAAED,EAAE8x4C,gBAAgB,GAAG,WAAW9x4C,EAAEgjB,KAAK,CAAC,IAAIxhB,EAAExB,EAAEy73C,kBAAkB753C,EAAEJ,EAAEkC,EAAEwS,GAAGqj3C,oBAAoB/33C,EAAEzB,EAAEC,EAAE8oH,QAAQ9oH,EAAE6oH,SAAS,EAAE,GAAG,EAAE,WAAW7oH,EAAEgjB,KAAK/iB,EAAEuK,GAAGxK,EAAEkq3B,QAAQlq3B,EAAEinK,QAAQrlK,GAAGjB,EAAEiB,CAAE,CAAC,MAAO,CAACqw4C,OAAOtx4C,EAAEqx4C,MAAM/x4C,EAAE,CAAC8S,GAAG,SAAS6+3C,IAAI,IAAIO,GAAGjy4C,OAAOgmC,OAAO,CAAC9lC,UAAU,KAAKgy4C,YAAYP,GAAGQ,uBAAuBN,GAAGO,oBAAoBJ,GAAGK,iBAAiB,MAAM,SAASC,GAAGxy4C,EAAED,EAAEY,EAAEV,EAAEuB,GAAG,QAAG,IAASzB,EAAEk4a,QAAQ,OAAO,EAAG,IAAI,IAAIr2a,EAAE7B,EAAEmB,EAAEnB,EAAEk4a,QAAQ,EAAEv2a,EAAE,EAAEA,GAAGf,EAAE,GAAG,CAAC,KAAKO,EAAE,EAAE,OAAO,EAAGQ,GAAG1B,EAAEkB,GAAGy5V,KAAK/4V,GAAGA,EAAE5B,EAAEkB,EAAG,CAACQ,GAAG1B,EAAEkB,GAAGy5V,KAAK36V,EAAEkB,EAAE,IAAIA,IAAI,IAAI,IAAI+B,EAAE,GAAGG,EAAE,EAAE1B,EAAEf,EAAE,GAAG,CAAC,IAAI+C,EAAE1D,EAAEkB,GAAGO,EAAEzB,EAAEkB,EAAE,GAAG,IAAIO,EAAE,OAAO,EAAG,IAAI+B,EAAExD,EAAEkB,EAAE,GAAGqv3C,QAAQ7s3C,GAAGA,EAAE6s3C,QAAQ9u3C,GAAG,IAAI+B,EAAEC,KAAKmjH,KAAKpjH,EAAE,EAAEC,KAAKsmC,KAAK,EAAEtmC,KAAKsmC,IAAItmC,KAAKsmC,IAAI9mC,EAAER,KAAK,CAAConJ,SAASnoJ,EAAE+w4C,WAAWjv4C,IAAIJ,GAAGI,EAAE9B,EAAEuB,EAAE,GAAG4mJ,SAAS5pJ,GAAGmD,GAAGH,EAAE87C,QAAQ0z1C,WAAW,GAAGrv4C,EAAE5B,EAAE,OAAO,EAAGN,IAAIQ,GAAGgC,EAAEi3V,KAAKl5V,EAAG,CAAC,OAAO,CAAE,CAAC,SAASix4C,GAAG1y4C,GAAG,IAAI,IAAID,EAAE,EAAEY,EAAE,EAAEA,EAAEX,EAAEiB,OAAO,EAAEN,IAAIZ,GAAGC,EAAEW,GAAGg6V,KAAK36V,EAAEW,EAAE,IAAI,OAAOZ,CAAC,CAAC,SAAS4y4C,GAAG3y4C,EAAED,EAAEY,GAAG,OAAOX,EAAE,GAAGD,EAAEY,EAAE,CAAC,CAAC,SAASiy4C,GAAG5y4C,EAAED,GAAG,OAAO0D,KAAK8K,IAAIvO,EAAEA,EAAEygG,MAAMzgG,EAAEy/B,KAAK,EAAE1/B,EAAEA,EAAE0gG,MAAM1gG,EAAE0/B,KAAK,EAAE,CAAC,SAASoz2C,GAAG7y4C,EAAED,EAAEY,EAAEV,EAAEuB,EAAEI,GAAG,IAAI,IAAIV,EAAEyx4C,GAAGhy4C,EAAEa,EAAEI,GAAGF,EAAEkx4C,GAAGjy4C,EAAEV,GAAG2B,EAAEqB,EAAE,EAAEG,EAAEsv4C,GAAG1y4C,GAAG,EAAE0D,EAAE,EAAEA,EAAE1D,EAAEiB,OAAO,EAAEyC,IAAI,CAAC,IAAIjC,EAAEzB,EAAE0D,GAAGF,EAAExD,EAAE0D,EAAE,GAAGJ,EAAE7B,EAAEk5V,KAAKn3V,GAAG,GAAGP,EAAEK,EAAEF,EAAE,CAAC,IAAIQ,GAAGR,EAAEH,GAAGK,EAAEC,EAAEiH,GAAG/I,EAAEoD,EAAErB,EAAEqB,EAAEjB,GAAGI,EAAEwG,GAAG/I,EAAEmC,EAAEJ,EAAEI,EAAEA,GAAGC,EAAE,IAAI+t4C,GAAGru4C,EAAES,EAAER,EAAE+s3C,QAAQ9u3C,GAAGiC,GAAG,OAAOG,EAAE2svC,UAAUtvvC,GAAGsx4C,GAAGxy4C,EAAE6D,EAAEnC,EAAER,EAAEnB,GAAG8D,OAAE,CAAM,CAACZ,GAAGK,CAAE,CAAC,CAAC,SAASwv4C,GAAG9y4C,EAAED,EAAEY,EAAEV,EAAEuB,EAAEI,EAAEV,EAAEQ,EAAEuB,GAAG,IAAIG,EAAEuv4C,GAAG1y4C,EAAE2B,EAAEV,GAAGwC,EAAEkv4C,GAAG3y4C,EAAEuB,GAAGC,EAAEiC,EAAExC,EAAEsC,EAAE,IAAIxD,EAAE,GAAG6E,GAAG7E,EAAE,GAAG6E,IAAI5B,GAAG,IAAIjD,EAAE,GAAG4D,GAAG5D,EAAE,GAAG4D,IAAIX,EAAE,OAAOlD,EAAE0B,EAAE1B,EAAE,IAAIA,EAAE0B,EAAE1B,EAAE,GAAG,SAASC,EAAED,EAAEY,EAAEV,EAAEuB,EAAEI,EAAEV,EAAEQ,EAAEuB,EAAEG,GAAG,IAAI,IAAIM,EAAExC,EAAE,EAAEO,EAAEix4C,GAAG3y4C,GAAGyD,EAAE,EAAEF,EAAE3C,EAAEV,EAAE2D,EAAE,GAAGL,EAAE,EAAEA,EAAExD,EAAEkB,OAAO,EAAEsC,IAAI,CAAC,IAAI,IAAIS,EAAEjE,EAAEwD,GAAGM,EAAE9D,EAAEwD,EAAE,GAAGR,EAAEiB,EAAE22V,KAAK92V,GAAGgB,EAAEhB,EAAE0s3C,QAAQvs3C,GAAGV,EAAErD,EAAEuD,EAAET,GAAG,CAAC,IAAImB,IAAIZ,GAAGrD,GAAGuD,GAAGT,EAAEoB,EAAEqG,GAAGxG,EAAEa,EAAEhB,EAAEgB,EAAEX,GAAGM,EAAEgG,GAAGxG,EAAEJ,EAAEC,EAAED,EAAEM,GAAG,GAAGC,GAAG,GAAGA,EAAEf,GAAGoB,GAAG,GAAGA,EAAEpB,GAAGE,EAAEI,GAAG,GAAGJ,EAAEI,GAAGjC,EAAE,CAAC,IAAIgE,EAAE,IAAIms4C,GAAGzt4C,EAAEK,EAAEK,EAAEtB,GAAGkC,EAAE+qvC,SAAShvvC,IAAIgx4C,GAAGzy4C,EAAE0F,EAAEvE,EAAEM,EAAEI,IAAIgC,EAAEnB,KAAKgD,EAAG,CAAC,CAACjC,GAAGT,CAAE,CAAC,OAAOE,GAAGW,EAAE3C,QAAQS,IAAIkC,EAAE5D,EAAED,EAAEyD,EAAE,EAAEvD,EAAEuB,EAAEI,EAAEV,EAAEQ,GAAE,EAAG0B,IAAIQ,CAAC,CAA5W,CAA8W5D,EAAEwD,EAAEzD,EAAE,EAAE2B,EAAE3B,GAAG2D,EAAE,EAAE,EAAE9B,GAAGV,EAAEQ,EAAE3B,EAAEA,EAAEqD,EAAEzC,EAAEc,EAAE+B,GAAE,EAAGP,EAAE,CAAC,SAAS8v4C,GAAG/y4C,EAAED,EAAEY,EAAEV,EAAE2B,GAAG,IAAI,IAAIV,EAAE,GAAGQ,EAAE,EAAEA,EAAE1B,EAAEiB,OAAOS,IAAI,IAAI,IAAIuB,EAAEjD,EAAE0B,GAAG0B,OAAE,EAAOM,EAAE,EAAEA,EAAET,EAAEhC,OAAO,EAAEyC,IAAI,CAAC,IAAIjC,EAAEwB,EAAES,GAAGF,EAAEP,EAAES,EAAE,GAAGjC,EAAEoD,EAAE9E,GAAGyD,EAAEqB,EAAE9E,IAAI0B,EAAEoD,EAAE9E,EAAE0B,EAAE,IAAID,EAAEzB,EAAE0B,EAAEmC,GAAG7D,EAAE0B,EAAEoD,IAAIrB,EAAEqB,EAAEpD,EAAEoD,IAAIrB,EAAEI,EAAEnC,EAAEmC,IAAI4svC,SAAShtvC,EAAEqB,EAAE9E,IAAIyD,EAAE,IAAIhC,EAAEzB,EAAE0B,EAAEmC,GAAG7D,EAAE0B,EAAEoD,IAAIrB,EAAEqB,EAAEpD,EAAEoD,IAAIrB,EAAEI,EAAEnC,EAAEmC,IAAI4svC,UAAU/uvC,EAAEmC,EAAEjD,GAAG6C,EAAEI,EAAEjD,IAAIc,EAAEmC,EAAEjD,EAAEc,EAAE,IAAID,EAAEC,EAAEoD,GAAGlE,EAAEc,EAAEmC,IAAIJ,EAAEI,EAAEnC,EAAEmC,IAAIJ,EAAEqB,EAAEpD,EAAEoD,GAAGlE,GAAG6vvC,SAAShtvC,EAAEI,EAAEjD,IAAI6C,EAAE,IAAIhC,EAAEC,EAAEoD,GAAGlE,EAAEc,EAAEmC,IAAIJ,EAAEI,EAAEnC,EAAEmC,IAAIJ,EAAEqB,EAAEpD,EAAEoD,GAAGlE,GAAG6vvC,UAAU/uvC,EAAEoD,GAAG5E,GAAGuD,EAAEqB,GAAG5E,IAAIwB,EAAEoD,GAAG5E,EAAEwB,EAAE,IAAID,EAAEvB,EAAEwB,EAAEmC,GAAG3D,EAAEwB,EAAEoD,IAAIrB,EAAEqB,EAAEpD,EAAEoD,IAAIrB,EAAEI,EAAEnC,EAAEmC,IAAI4svC,SAAShtvC,EAAEqB,GAAG5E,IAAIuD,EAAE,IAAIhC,EAAEvB,EAAEwB,EAAEmC,GAAG3D,EAAEwB,EAAEoD,IAAIrB,EAAEqB,EAAEpD,EAAEoD,IAAIrB,EAAEI,EAAEnC,EAAEmC,IAAI4svC,UAAU/uvC,EAAEmC,GAAGhC,GAAG4B,EAAEI,GAAGhC,IAAIH,EAAEmC,GAAGhC,EAAEH,EAAE,IAAID,EAAEC,EAAEoD,GAAGjD,EAAEH,EAAEmC,IAAIJ,EAAEI,EAAEnC,EAAEmC,IAAIJ,EAAEqB,EAAEpD,EAAEoD,GAAGjD,GAAG4uvC,SAAShtvC,EAAEI,GAAGhC,IAAI4B,EAAE,IAAIhC,EAAEC,EAAEoD,GAAGjD,EAAEH,EAAEmC,IAAIJ,EAAEI,EAAEnC,EAAEmC,IAAIJ,EAAEqB,EAAEpD,EAAEoD,GAAGjD,GAAG4uvC,UAAUptvC,GAAG3B,EAAE0xI,OAAO/vI,EAAEA,EAAEnC,OAAO,KAAKC,EAAEuB,KAAKW,EAAE,CAAC3B,IAAI2B,EAAEX,KAAKe,MAAO,CAAC,OAAOtC,CAAC,CAAC,SAAS8x4C,GAAGhz4C,EAAED,EAAEY,EAAEV,GAAG,IAAI2B,EAAE,GAAGV,EAAElB,EAAEmrJ,MAAMzpJ,EAAER,EAAEsuH,WAAWvsH,EAAE/B,EAAEmvzB,WAAWlszB,EAAE,EAAEf,EAAElC,EAAEmvzB,WAAW7szB,EAAE,EAAEE,EAAE1D,EAAEygG,MAAMzgG,EAAEy/B,KAAKh+B,EAAEzB,EAAE0gG,OAAO1gG,EAAE0/B,IAAIl8B,EAAEtC,EAAEst4C,UAAU,CAAC,CAAC,EAAEvr4C,IAAIK,EAAEpC,EAAEut4C,UAAU,CAAC,CAAC,EAAErr4C,IAAIQ,EAAE,SAAS5D,EAAED,GAAG,OAAOC,EAAED,EAAE,GAAGA,EAAE,EAAE,EAAEwD,EAAEC,EAAE8wB,OAAO1wB,EAAE,GAAGI,EAAEV,EAAEgxB,OAAO1wB,EAAE,GAAGC,EAAEZ,EAAEM,EAAER,EAAEK,EAAEY,EAAEa,EAAE,EAAEX,EAAEX,EAAEY,EAAE,EAAEK,EAAER,EAAEyB,EAAE,EAAErB,EAAEP,EAAES,EAAE,EAAEG,EAAE1B,EAAE,GAAG7B,EAAEo4F,SAASr5F,EAAE,CAAC,IAAIsG,EAAErF,EAAEo4F,QAAQz0F,EAAEou4C,GAAGzv4C,EAAE,EAAE+C,EAAE,IAAIpC,EAAE8u4C,GAAG3v4C,EAAE,EAAEiD,EAAE,IAAIrC,EAAE+u4C,GAAGzv4C,EAAE+C,EAAE,GAAGA,EAAE,IAAI/B,EAAEyu4C,GAAG3v4C,EAAEiD,EAAE,GAAGA,EAAE,IAAId,EAAEc,EAAE,GAAG1B,EAAEP,EAAEiC,EAAE,GAAGpC,EAAEC,EAAEmC,EAAE,GAAGA,EAAE,GAAGrC,EAAEO,EAAE8B,EAAE,GAAGA,EAAE,GAAG/B,CAAE,CAAC,IAAIO,EAAE,SAAS9E,EAAE2B,EAAEqB,EAAEG,GAAG,IAAII,EAAE0v4C,GAAGjz4C,EAAEkz4C,QAAQtu4C,EAAEX,EAAER,EAAE1D,EAAEy/B,MAAMn8B,EAAE8v4C,GAAGnz4C,EAAEujoC,MAAM/9nC,EAAErB,EAAEnE,EAAEkz4C,QAAQ5v4C,GAAGK,EAAEsv4C,GAAGtx4C,EAAEux4C,QAAQhv4C,EAAEK,EAAE/C,EAAEzB,EAAE0/B,KAAK77B,EAAEuv4C,GAAGxx4C,EAAE4hoC,MAAMl/nC,EAAEG,EAAE7C,EAAEux4C,QAAQnv4C,GAAGjB,EAAEmw4C,GAAGjw4C,EAAEkw4C,QAAQtu4C,EAAEX,EAAER,EAAE1D,EAAEy/B,MAAMl5B,EAAE6s4C,GAAGnw4C,EAAEugoC,MAAM/9nC,EAAErB,EAAEnB,EAAEkw4C,QAAQ5v4C,GAAGwB,EAAEmu4C,GAAG9v4C,EAAE+v4C,QAAQhv4C,EAAEK,EAAE/C,EAAEzB,EAAE0/B,KAAKp6B,EAAE8t4C,GAAGhw4C,EAAEogoC,MAAMl/nC,EAAEG,EAAErB,EAAE+v4C,QAAQnv4C,GAAG0B,EAAE,IAAIlE,EAAEgC,EAAEI,GAAG6C,EAAE,IAAIjF,EAAEuB,EAAEa,GAAG+C,EAAE,IAAInF,EAAEuB,EAAEgC,GAAGD,EAAE,IAAItD,EAAEgC,EAAEuB,GAAGyB,EAAE,IAAIhF,EAAE8B,EAAE5B,EAAEmC,EAAEnC,GAAGkE,EAAE,IAAIpE,EAAE+E,EAAE7E,EAAE4D,EAAE5D,GAAGyE,EAAEpG,EAAE0D,KAAKsmC,GAAG,IAAI,GAAG5jC,EAAE,CAAC,IAAIlB,EAAExB,KAAK4wH,IAAIluH,GAAGvB,EAAEnB,KAAKuxH,IAAI7uH,GAAGjB,EAAE,CAACN,GAAGK,EAAEA,EAAEL,GAAGc,EAAEwq3C,SAAShr3C,GAAGuB,EAAEyp3C,SAAShr3C,GAAGJ,EAAEor3C,SAAShr3C,GAAGyB,EAAEup3C,SAAShr3C,EAAG,CAAC,IAAIe,EAAEhG,EAAEkz4C,QAAQlz4C,EAAEujoC,MAAMx+nC,EAAEpD,EAAEux4C,QAAQvx4C,EAAE4hoC,MAAM,MAAO,CAAC6hD,GAAG3/qC,EAAEmQ,GAAGpP,EAAEiirC,GAAG5jrC,EAAE+R,GAAGlQ,EAAEuwR,IAAI,CAACryR,EAAE3D,EAAEmvzB,WAAWxrzB,EAAE,EAAEoB,EAAErC,EAAE1C,EAAEmvzB,WAAWzszB,EAAE,EAAEoB,EAAEb,EAAElB,EAAEkw4C,QAAQlw4C,EAAEugoC,MAAMv9nC,EAAEzC,EAAEJ,EAAE+v4C,QAAQ/v4C,EAAEogoC,MAAMx+nC,GAAG093C,iBAAY,EAAO2Q,YAAY,CAAC,EAAE,GAAGxD,aAAa,EAAEyD,cAAc9s4C,EAAE+s4C,cAAc3t4C,EAAE4t4C,cAAcpv4C,EAAE1C,EAAEgC,EAAE+v4C,cAAchv4C,EAAE/C,EAAED,EAAEiy4C,MAAM/y4C,EAAE,EAAE,GAAGV,IAAIiB,EAAEst4C,UAAUtt4C,EAAEut4C,UAAU,IAAI,IAAInp4C,EAAEqu4C,GAAGnw4C,EAAEK,EAAEN,GAAGmC,EAAEiu4C,GAAGrw4C,EAAEP,EAAEiB,GAAGyC,EAAE,EAAEA,EAAEnB,EAAErE,OAAO,EAAEwF,IAAI,IAAI,IAAIE,EAAErB,EAAEmB,GAAG3B,EAAEQ,EAAEmB,EAAE,GAAGD,EAAE,EAAEA,EAAEd,EAAEzE,OAAO,EAAEuF,IAAI5E,EAAEa,KAAKsC,EAAE4B,EAAEjB,EAAEc,GAAG1B,EAAEY,EAAEc,EAAE,UAAU5E,EAAEa,KAAKsC,EAAE,CAACy+nC,MAAM,EAAE2vQ,SAAS,GAAG,CAAC3vQ,MAAM,EAAE2vQ,SAAS,GAAG,CAAC3vQ,MAAM,EAAE2vQ,QAAQlw4C,EAAE,GAAG,CAACugoC,MAAM,EAAE2vQ,QAAQ/v4C,EAAE,KAAK,OAAOxB,CAAC,CAAC,SAASqx4C,GAAGjz4C,EAAED,EAAEY,GAAG,IAAI,IAAIV,EAAE,EAAEuB,EAAE,EAAEI,EAAE5B,EAAEwB,EAAEI,EAAEX,OAAOO,GAAG,EAAE,CAAC,IAAIN,EAAEU,EAAEJ,GAAGvB,GAAGwD,KAAK8K,IAAIxO,EAAE0D,KAAKgL,IAAI9N,EAAEO,EAAE,KAAKuC,KAAK8K,IAAIxO,EAAE0D,KAAKgL,IAAI9N,EAAEO,EAAE,IAAK,CAAC,OAAOjB,CAAC,CAAC,SAAS0z4C,GAAG3z4C,EAAED,EAAEY,GAAG,IAAI,IAAIV,EAAE,CAAC,CAACujoC,OAAO,EAAE2vQ,QAAQ,IAAI3x4C,EAAE,EAAEI,EAAE5B,EAAEwB,EAAEI,EAAEX,OAAOO,GAAG,EAAE,CAAC,IAAIN,EAAEU,EAAEJ,GAAGE,EAAER,EAAE,GAAG+B,EAAE/B,EAAE,GAAGkC,EAAEnD,EAAEA,EAAEgB,OAAO,GAAGhB,EAAEwC,KAAK,CAAC+goC,MAAM9hoC,EAAE0B,EAAE+v4C,QAAQA,QAAQ/v4C,EAAE+v4C,UAAUlz4C,EAAEwC,KAAK,CAAC+goC,MAAM9hoC,EAAE0B,EAAE+v4C,QAAQA,QAAQ/v4C,EAAE+v4C,SAASlw4C,EAAEvB,IAAK,CAAC,OAAOzB,EAAEwC,KAAK,CAAC+goC,MAAMzjoC,EAAE,EAAEoz4C,QAAQxy4C,IAAIV,CAAC,CAAC,SAASiz4C,GAAGlz4C,EAAED,EAAEY,EAAEV,GAAG,OAAOD,EAAED,EAAEY,EAAEV,CAAC,CAAC,SAASmz4C,GAAGpz4C,EAAED,EAAEY,EAAEV,GAAG,OAAOD,EAAED,EAAEY,EAAEV,CAAC,CAAC,IAAI2z4C,GAAG,SAAS5z4C,EAAED,EAAEY,EAAEV,EAAE2B,EAAEV,EAAEQ,EAAEuB,EAAEG,EAAEM,GAAG,GAAG9C,KAAKiz4C,cAAc7z4C,EAAEiB,OAAOmC,EAAE,CAAC,IAAI3B,EAAEP,EAAEw+B,IAAIl8B,EAAEtC,EAAEw/F,OAAOp9F,EAAEpC,EAAEyw4C,iBAAiBru4C,IAAI7B,GAAG6B,EAAE,GAAGE,GAAGF,EAAE,IAAI,IAAIM,EAAEJ,EAAE/B,EAAEmC,EAAE,IAAIA,EAAEH,KAAK8K,IAAI,GAAG3K,GAAGhD,KAAKkz4C,eAAelw4C,EAAG,KAAM,CAAC,IAAIL,EAAErC,EAAEw+B,IAAIh+B,EAAEuB,EAAEe,EAAE9C,EAAEw/F,OAAOh/F,EAAEuB,EAAEY,EAAE3C,EAAEu+B,KAAK/9B,EAAEuB,EAAEF,EAAE7B,EAAEu/F,MAAM/+F,EAAEuB,EAAE4B,EAAE3D,EAAEyw4C,iBAAiB,GAAG9s4C,IAAIhB,GAAGgB,EAAE,GAAGnD,EAAE6B,GAAGsB,EAAE,GAAGnD,EAAEqB,GAAG8B,EAAE,GAAGnD,EAAEsC,GAAGa,EAAE,GAAGnD,GAAGgC,EAAE,CAAC,IAAIQ,EAAE,IAAI1C,EAAEqC,EAAEN,GAAGY,EAAE,IAAI3C,EAAEuB,EAAEQ,GAAGiB,EAAE,IAAIhD,EAAEqC,EAAEG,GAAGyB,EAAE,IAAIjE,EAAEuB,EAAEiB,GAAGI,EAAEV,EAAED,KAAKsmC,GAAG,IAAI7lC,EAAE4r3C,QAAQ1r3C,GAAGD,EAAE2r3C,QAAQ1r3C,GAAGI,EAAEsr3C,QAAQ1r3C,GAAGqB,EAAEqq3C,QAAQ1r3C,GAAGP,EAAEJ,KAAKgL,IAAIvK,EAAEW,EAAEV,EAAEU,EAAEL,EAAEK,EAAEY,EAAEZ,GAAG9B,EAAEU,KAAK8K,IAAIrK,EAAEW,EAAEV,EAAEU,EAAEL,EAAEK,EAAEY,EAAEZ,GAAGtB,EAAEE,KAAKgL,IAAIvK,EAAEN,EAAEO,EAAEP,EAAEY,EAAEZ,EAAE6B,EAAE7B,GAAGI,EAAEP,KAAK8K,IAAIrK,EAAEN,EAAEO,EAAEP,EAAEY,EAAEZ,EAAE6B,EAAE7B,EAAG,CAAC5D,EAAE0h4C,YAAY3h4C,EAAE8E,EAAE9E,EAAE6D,EAAEC,EAAEN,EAAER,EAAEiB,EAAErD,EAAEV,EAAE2B,EAAG,CAAChB,KAAKmz4C,YAAY/z4C,EAAEiB,MAAO,EAAE+y4C,GAAG,SAASh04C,EAAED,GAAG,QAAG,IAASC,IAAIA,EAAE,SAAI,IAASD,IAAIA,EAAEslrC,IAAIzkrC,KAAKwP,KAAKpQ,EAAEY,KAAKK,OAAOL,KAAKwP,KAAKnP,OAAOL,KAAKkqH,QAAQ/qH,EAAEa,KAAKK,OAAO,EAAE,IAAI,IAAIN,GAAGC,KAAKK,QAAQ,GAAG,EAAEN,GAAG,EAAEA,IAAIC,KAAKqz4C,MAAMtz4C,EAAG,EAAE,SAAS0krC,GAAGrlrC,EAAED,GAAG,OAAOC,EAAED,GAAG,EAAEC,EAAED,EAAE,EAAE,CAAC,CAAC,SAAS06I,GAAGz6I,EAAED,EAAEY,QAAG,IAASZ,IAAIA,EAAE,QAAG,IAASY,IAAIA,GAAE,GAAI,IAAI,IAAIV,EAAE,IAAI2B,EAAE,IAAIV,GAAE,IAAKQ,GAAE,IAAKuB,EAAEjD,EAAE,GAAGoD,EAAE,EAAEA,EAAEH,EAAEhC,OAAOmC,IAAI,CAAC,IAAIM,EAAET,EAAEG,KAAKA,GAAGM,EAAEmB,EAAE5E,KAAKA,EAAEyD,EAAEmB,KAAKzB,GAAGM,EAAEE,EAAEhC,KAAKA,EAAE8B,EAAEE,KAAKR,GAAGM,EAAEmB,EAAE3D,KAAKA,EAAEwC,EAAEmB,KAAKzB,GAAGM,EAAEE,EAAElC,KAAKA,EAAEgC,EAAEE,EAAG,CAAC,IAAInC,EAAEgC,KAAKgL,IAAIvN,EAAEjB,EAAEyB,EAAEE,GAAG4B,EAAE/B,EAAE,EAAE6B,EAAE,IAAI0w4C,GAAG,GAAGtxJ,IAAI,GAAG,IAAIjhvC,EAAE,OAAO,IAAID,EAAEvB,EAAE2B,GAAG,IAAI,IAAIgC,EAAE3D,EAAE2D,EAAE1C,EAAE0C,GAAGnC,EAAE,IAAI,IAAI8B,EAAE3B,EAAE2B,EAAE7B,EAAE6B,GAAG9B,EAAE6B,EAAEb,KAAK,IAAIw01C,GAAGrz1C,EAAEJ,EAAED,EAAEC,EAAEA,EAAExD,IAAI,IAAI,IAAIgE,EAAE,SAAShE,GAAG,IAAI,IAAID,EAAE,EAAEY,EAAE,EAAEV,EAAE,EAAEuB,EAAExB,EAAE,GAAG4B,EAAE,EAAEV,EAAEM,EAAEP,OAAOS,EAAER,EAAE,EAAEU,EAAEV,EAAEQ,EAAEE,IAAI,CAAC,IAAIqB,EAAEzB,EAAEI,GAAGwB,EAAE5B,EAAEE,GAAGgC,EAAET,EAAE4B,EAAEzB,EAAEQ,EAAER,EAAEyB,EAAE5B,EAAEW,EAAEjD,IAAIsC,EAAE4B,EAAEzB,EAAEyB,GAAGnB,EAAEzD,IAAIgD,EAAEW,EAAER,EAAEQ,GAAGF,EAAE3D,GAAG,EAAE2D,CAAE,CAAC,OAAO,IAAIuz1C,GAAGt21C,EAAEZ,EAAEE,EAAEF,EAAE,EAAEC,EAAE,CAA3K,CAA6KA,GAAG6D,EAAEP,EAAErC,OAAOqC,EAAErC,QAAQ,CAAC,IAAI8B,EAAEO,EAAEd,OAAOO,EAAEQ,EAAES,EAAET,IAAIS,EAAET,KAAKS,EAAEjB,EAAEpC,GAAGsnB,QAAQgD,IAAI,gCAAgCxnB,KAAKogD,MAAM,IAAI9gD,EAAEQ,GAAG,IAAIM,IAAId,EAAEwL,IAAIvK,EAAET,GAAGxD,IAAIuD,EAAEb,KAAK,IAAIw01C,GAAGl01C,EAAEW,EAAEmB,GAAGrB,EAAET,EAAES,EAAE,GAAGT,EAAEW,EAAEE,EAAEJ,EAAEA,EAAExD,IAAIsD,EAAEb,KAAK,IAAIw01C,GAAGl01C,EAAEW,EAAEmB,EAAErB,EAAET,EAAEW,EAAEE,EAAEJ,EAAEA,EAAExD,IAAIsD,EAAEb,KAAK,IAAIw01C,GAAGl01C,EAAEW,EAAEmB,EAAErB,EAAET,EAAEW,EAAEE,EAAEJ,EAAEA,EAAExD,IAAIsD,EAAEb,KAAK,IAAIw01C,GAAGl01C,EAAEW,EAAEmB,EAAErB,EAAET,EAAEW,EAAEE,EAAEJ,EAAEA,EAAExD,IAAI6D,GAAG,EAAG,CAAC,OAAOlD,IAAIsnB,QAAQgD,IAAI,eAAepnB,GAAGokB,QAAQgD,IAAI,kBAAkBjnB,EAAET,IAAIS,EAAEN,CAAC,CAAC,SAASg/uC,GAAG1ivC,EAAED,GAAG,OAAOA,EAAEwO,IAAIvO,EAAEuO,GAAG,CAAC,SAAS0o1C,GAAGj31C,EAAED,EAAEY,EAAEV,GAAGW,KAAK8C,EAAE,IAAIlC,EAAExB,EAAED,GAAGa,KAAK4C,EAAE7C,EAAEC,KAAK2C,EAAE,SAASvD,EAAED,GAAG,IAAI,IAAIY,GAAE,EAAGV,EAAE,IAAIuB,EAAE,EAAEA,EAAEzB,EAAEkB,OAAOO,IAAI,IAAI,IAAII,EAAE7B,EAAEyB,GAAGN,EAAE,EAAEQ,EAAEE,EAAEX,OAAOgC,EAAEvB,EAAE,EAAER,EAAEQ,EAAEuB,EAAE/B,IAAI,CAAC,IAAIkC,EAAExB,EAAEV,GAAGwC,EAAE9B,EAAEqB,GAAGG,EAAEQ,EAAE5D,EAAE4D,GAAGF,EAAEE,EAAE5D,EAAE4D,GAAG5D,EAAE6E,GAAGnB,EAAEmB,EAAEzB,EAAEyB,IAAI7E,EAAE4D,EAAER,EAAEQ,IAAIF,EAAEE,EAAER,EAAEQ,GAAGR,EAAEyB,IAAIlE,GAAGA,GAAGV,EAAEwD,KAAKgL,IAAIxO,EAAE6rvC,GAAG9rvC,EAAEoD,EAAEM,GAAI,CAAC,OAAQ/C,EAAE,GAAG,GAAG8C,KAAK4yF,KAAKp2F,EAAE,CAA1O,CAA4OW,KAAK8C,EAAEzD,GAAGW,KAAK2N,IAAI3N,KAAK2C,EAAE3C,KAAK4C,EAAEC,KAAKu/rC,KAAM,CAACgxM,GAAG1z4C,UAAUmC,KAAK,SAASzC,GAAGY,KAAKwP,KAAK3N,KAAKzC,GAAGY,KAAKK,SAASL,KAAKsz4C,IAAItz4C,KAAKK,OAAO,EAAG,EAAE+y4C,GAAG1z4C,UAAUkC,IAAI,WAAW,GAAG,IAAI5B,KAAKK,OAAO,CAAC,IAAIjB,EAAEY,KAAKwP,KAAK,GAAGrQ,EAAEa,KAAKwP,KAAK5N,MAAM,OAAO5B,KAAKK,SAASL,KAAKK,OAAO,IAAIL,KAAKwP,KAAK,GAAGrQ,EAAEa,KAAKqz4C,MAAM,IAAIj04C,CAAC,CAAC,EAAEg04C,GAAG1z4C,UAAUwlM,KAAK,WAAW,OAAOllM,KAAKwP,KAAK,EAAE,EAAE4j4C,GAAG1z4C,UAAU4z4C,IAAI,SAASl04C,GAAG,IAAI,IAAID,EAAEa,KAAKwP,KAAKzP,EAAEC,KAAKkqH,QAAQ7qH,EAAEF,EAAEC,GAAGA,EAAE,GAAG,CAAC,IAAIwB,EAAExB,EAAE,GAAG,EAAE4B,EAAE7B,EAAEyB,GAAG,GAAGb,EAAEV,EAAE2B,IAAI,EAAE,MAAM7B,EAAEC,GAAG4B,EAAE5B,EAAEwB,CAAE,CAACzB,EAAEC,GAAGC,CAAE,EAAE+z4C,GAAG1z4C,UAAU2z4C,MAAM,SAASj04C,GAAG,IAAI,IAAID,EAAEa,KAAKwP,KAAKzP,EAAEC,KAAKkqH,QAAQ7qH,EAAEW,KAAKK,QAAQ,EAAEO,EAAEzB,EAAEC,GAAGA,EAAEC,GAAG,CAAC,IAAI2B,EAAE,GAAG5B,GAAG,GAAGkB,EAAEnB,EAAE6B,GAAGF,EAAEE,EAAE,EAAE,GAAGF,EAAEd,KAAKK,QAAQN,EAAEZ,EAAE2B,GAAGR,GAAG,IAAIU,EAAEF,EAAER,EAAEnB,EAAE2B,IAAIf,EAAEO,EAAEM,IAAI,EAAE,MAAMzB,EAAEC,GAAGkB,EAAElB,EAAE4B,CAAE,CAAC7B,EAAEC,GAAGwB,CAAE,EAAE,IAAIisa,GAAG1nY,OAAOy/C,kBAAkB,SAASgxwC,GAAGx21C,EAAED,GAAG,OAAOA,EAAE,KAAK0ta,GAAG,SAASzta,EAAED,EAAEY,GAAG,IAAIV,EAAE,EAAEuB,EAAE,EAAE,OAAOzB,EAAE0D,KAAKmjH,IAAI7mH,GAAGY,EAAE8C,KAAKmjH,IAAIjmH,GAAGX,GAAG,IAAI,YAAY,IAAI,WAAW,IAAI,MAAMwB,EAAEb,EAAE,EAAE,MAAM,IAAI,eAAe,IAAI,cAAc,IAAI,SAASa,EAAE,EAAEb,EAAG,OAAOX,GAAG,IAAI,YAAY,IAAI,eAAe,IAAI,QAAQC,GAAGF,EAAE,MAAM,IAAI,WAAW,IAAI,cAAc,IAAI,OAAOE,EAAEF,EAAG,MAAO,CAACE,EAAEuB,EAAE,CAAjT,CAAmTxB,EAAED,EAAE,GAAGA,EAAE,IAAI,SAASC,EAAED,GAAG,IAAIY,EAAE,EAAEV,EAAE,EAAEF,EAAE,IAAIA,EAAE,GAAG,IAAIyB,EAAEzB,EAAE0D,KAAK4yF,KAAK,GAAG,OAAOr2F,GAAG,IAAI,YAAY,IAAI,WAAWC,EAAEuB,EAAE,EAAE,MAAM,IAAI,eAAe,IAAI,cAAcvB,EAAE,EAAEuB,EAAE,MAAM,IAAI,SAASvB,EAAE,EAAEF,EAAE,MAAM,IAAI,MAAME,EAAEF,EAAE,EAAG,OAAOC,GAAG,IAAI,YAAY,IAAI,eAAeW,GAAGa,EAAE,MAAM,IAAI,WAAW,IAAI,cAAcb,EAAEa,EAAE,MAAM,IAAI,OAAOb,EAAEZ,EAAE,MAAM,IAAI,QAAQY,GAAGZ,EAAG,MAAO,CAACY,EAAEV,EAAE,CAAhW,CAAkWD,EAAED,EAAE,GAAG,CAAC,SAASm31C,GAAGl31C,GAAG,OAAOA,GAAG,IAAI,QAAQ,IAAI,YAAY,IAAI,eAAe,MAAO,QAAQ,IAAI,OAAO,IAAI,WAAW,IAAI,cAAc,MAAO,OAAO,MAAO,QAAQ,CAAC,SAASs31C,GAAGt31C,EAAED,EAAEY,EAAEV,EAAE2B,EAAEV,EAAEQ,EAAEuB,EAAEG,EAAEM,EAAEjC,EAAE+B,EAAEF,EAAEM,EAAEL,GAAG,IAAIS,EAAE,SAAShE,EAAED,EAAEY,EAAEV,EAAE2B,EAAEV,EAAEQ,EAAEuB,GAAG,IAAI,IAAIG,EAAEnD,EAAE6hI,OAAO/9H,IAAI,eAAemxgB,SAASh0gB,EAAE,CAAC,GAAGuC,KAAKsmC,GAAG,IAAIrmC,EAAE,GAAGjC,EAAE,EAAE+B,EAAEzD,EAAEow4C,gBAAgB1u4C,EAAE+B,EAAEvC,OAAOQ,GAAG,EAAE,IAAI,IAAI6B,EAAEE,EAAE/B,GAAGmC,EAAE,EAAEL,EAAED,EAAEit4C,iBAAiB3s4C,EAAEL,EAAEtC,OAAO2C,GAAG,EAAE,CAAC,IAAII,EAAET,EAAEK,GAAG,GAAGI,EAAEswF,KAAK,CAAC,IAAIzwF,EAAEG,EAAEswF,MAAM,CAAC,EAAEvxF,EAAE,EAAE8B,GAAE,EAAGX,EAAE,EAAEC,EAAE,EAAEK,GAAG5C,GAAGqB,IAAIe,EAAEomiB,SAAS3kiB,EAAEzB,EAAEq5I,QAAQgxvC,QAAQrq4C,EAAE0+F,MAAM,EAAE,GAAGz/F,GAAGlD,EAAEsw4C,iBAAiBls4C,EAAEb,EAAEkt4C,WAAW,GAAGxs4C,EAAEyr4C,YAAY,GAAGzr4C,EAAEq5I,QAAQ19G,MAAM37B,EAAE0+F,OAAO,EAAE,IAAI1+F,EAAE0+F,MAAM,KAAK1+F,EAAEyr4C,UAAU,CAAC,IAAIrr4C,EAAE1C,EAAEsC,EAAEyr4C,WAAW5q4C,EAAET,EAAEqgP,IAAI1hP,EAAE,GAAGmB,EAAEE,EAAEorH,WAAY,CAAC,IAAIlrH,EAAE1C,EAAE,CAACoC,EAAEa,EAAEY,EAAEzB,EAAEJ,GAAG,CAAC,EAAE,GAAGa,EAAE7C,EAAE,CAAC,EAAE,GAAG,CAACoC,EAAEa,EAAEY,EAAE9E,EAAE,GAAGqD,EAAEJ,EAAEjD,EAAE,GAAGwD,GAAGoC,EAAE,CAAC,EAAE,GAAG/B,IAAI+B,EAAE9B,EAAEA,EAAE,CAAC,EAAE,IAAI,IAAIM,GAAGf,EAAEq5I,QAAQ59G,KAAK18B,GAAGiB,EAAE0+F,MAAMj9F,EAAEhB,EAAE,GAAGa,IAAItB,EAAEq5I,QAAQ39G,IAAI38B,GAAGiB,EAAE0+F,MAAMj+F,EAAE,GAAGiB,EAAEX,EAAElB,EAAEM,EAAEH,EAAE0+F,MAAMx+F,EAAEuC,EAAEnB,EAAEzB,EAAEL,EAAEQ,EAAE0+F,MAAMx+F,EAAEyC,EAAE,IAAInF,EAAEuD,EAAEO,GAAGR,EAAE,IAAItD,EAAEkE,EAAEJ,GAAGkB,EAAE,IAAIhF,EAAEuD,EAAE0B,GAAGb,EAAE,IAAIpE,EAAEkE,EAAEe,GAAG,GAAGjC,EAAE,CAAC,IAAI2B,EAAE,IAAI3E,GAAGiE,EAAEA,IAAI,IAAIR,GAAGxB,KAAKsmC,GAAG,EAAEnlC,EAAE,GAAGa,EAAEP,EAAE,IAAI1D,EAAE,GAAGoD,IAAIZ,EAAEyr4C,UAAU7q4C,EAAE,IAAIqB,EAAE,IAAItC,SAASrD,UAAU2D,KAAK9C,MAAMK,EAAE,CAAC,MAAMoB,OAAO2D,KAAKI,EAAEqp3C,cAAc/q3C,EAAEkB,GAAG0hI,KAAK3iI,GAAG2iI,KAAK5hI,GAAGnB,EAAEkr3C,cAAc/q3C,EAAEkB,GAAG0hI,KAAK3iI,GAAG2iI,KAAK5hI,GAAGO,EAAEwp3C,cAAc/q3C,EAAEkB,GAAG0hI,KAAK3iI,GAAG2iI,KAAK5hI,GAAGL,EAAEoq3C,cAAc/q3C,EAAEkB,GAAG0hI,KAAK3iI,GAAG2iI,KAAK5hI,EAAG,CAAC,GAAG7C,EAAE,CAAC,IAAI4B,EAAEvB,KAAK4wH,IAAIjxH,GAAG0D,EAAErD,KAAKuxH,IAAI5xH,GAAG0C,EAAE,CAACgB,GAAG9B,EAAEA,EAAE8B,GAAGH,EAAEup3C,SAASpq3C,GAAGhB,EAAEor3C,SAASpq3C,GAAGU,EAAE0p3C,SAASpq3C,GAAGF,EAAEsq3C,SAASpq3C,EAAG,CAAC,IAAID,EAAE,IAAIrE,EAAE,EAAE,GAAG+D,EAAE,IAAI/D,EAAE,EAAE,GAAGkC,EAAEjB,KAAK,CAAC4irC,GAAG1+qC,EAAEkP,GAAG/Q,EAAE4jrC,GAAGlirC,EAAEqQ,GAAGjR,EAAEsxR,IAAIrzR,EAAE6+3C,YAAY3i4C,EAAE2i4C,YAAY2Q,YAAY/u4C,EAAEur4C,aAAa7r4C,EAAE6r4C,aAAa6D,MAAM7u4C,EAAEyu4C,cAAczt4C,EAAE0t4C,cAAchu4C,EAAEiu4C,cAAc,EAAEC,cAAc,GAAI,CAAC,CAAC,OAAO/v4C,CAAC,CAA/yC,CAAizC,EAAE/C,EAAEsC,EAAErB,EAAEV,EAAEQ,EAAEzB,EAAED,EAAEm04C,wBAAwBtw4C,EAAE7D,EAAEo04C,aAAarx4C,EAAE,KAAK,WAAWc,EAAEmf,MAAMjgB,EAAE,CAAC,IAAInB,EAAEkgI,OAAO/9H,IAAI,aAAamxgB,SAASxzgB,EAAE,CAAC,KAAK,GAAG,OAAO+D,EAAEzF,EAAEqnJ,SAAS,GAAG,+DAA+D,cAAcxjJ,EAAEmf,QAAQjgB,EAAE,CAAC,IAAIa,EAAEyw4C,mBAAmB,GAAGn/3B,SAASxzgB,EAAE,CAAC,EAAE6B,GAAG,IAAIK,EAAEyw4C,mBAAmB,GAAGn/3B,SAASxzgB,EAAE,CAAC,EAAE6B,KAAK,GAAG,OAAOR,EAAE,GAAG,QAAQ0C,EAAEzF,EAAEqnJ,SAAS,GAAG,+DAA+DrnJ,EAAEs04C,WAAWt04C,EAAEgxB,KAAKhtB,EAAEjB,EAAEE,EAAE/B,EAAEQ,EAAEgC,EAAE3D,EAAEqD,EAAEmpP,eAAenpP,EAAEwgY,WAAWtgY,EAAEC,GAAG,IAAI,IAAIsB,EAAE,EAAEX,EAAEzC,EAAEoD,EAAEX,EAAEjD,OAAO4D,GAAG,EAAErB,EAAEU,EAAEW,IAAI7E,EAAEgxB,KAAKuj3C,kBAAkBtz4C,OAAO,EAAE,OAAO,EAAE+C,EAAE/C,MAAM,CAAC,SAAS021C,GAAG331C,GAAG,IAAI,IAAID,KAAKC,EAAE,OAAOA,EAAED,GAAG,OAAO,IAAI,CAAC,SAASuvzC,GAAGtvzC,EAAED,EAAEY,EAAEV,GAAG,IAAIuB,EAAExB,EAAEw04C,YAAY,GAAGz04C,KAAKyB,GAAG,IAAI,IAAII,EAAEJ,EAAEzB,GAAGmB,EAAEU,EAAEX,OAAO,EAAEC,GAAG,EAAEA,IAAI,GAAGjB,EAAE06V,KAAK/4V,EAAEV,IAAIP,EAAE,OAAO,OAAQa,EAAEzB,GAAG,GAAG,OAAOyB,EAAEzB,GAAG0C,KAAKxC,IAAG,CAAE,CAAC,IAAI0gX,GAAGsphC,GAAGE,kBAAkB34zC,MAAM4s2B,GAAG,CAAC,CAAC9y6B,KAAK,iBAAiBwjP,WAAW,EAAE3hP,KAAK,QAAQ41C,OAAO,IAAI,SAAS8zyC,GAAG721C,EAAED,EAAEY,EAAEV,EAAEuB,EAAEI,EAAEV,EAAEQ,EAAEuB,EAAEG,EAAEM,EAAEjC,EAAE+B,GAAG,IAAIF,EAAE5B,EAAE+B,KAAKgL,IAAI,MAAMhL,KAAKogD,MAAMniD,EAAE,KAAK,EAAEkC,EAAElC,EAAE+B,KAAKgL,IAAI,MAAMhL,KAAKogD,MAAMniD,EAAE,KAAK,EAAE1B,EAAE0h4C,YAAY3h4C,EAAEY,EAAE8C,KAAKogD,MAAM,GAAG5jD,GAAGwD,KAAKogD,MAAM,GAAGriD,GAAGI,EAAEV,GAAGoC,GAAG,IAAIL,EAAE,EAAE,GAAGW,EAAE,GAAGR,EAAE,GAAGM,EAAE,IAAIjC,EAAE,IAAI+B,EAAG,CAAC,SAASoz1C,GAAG521C,EAAED,EAAEY,GAAGX,EAAE0h4C,YAAY3h4C,EAAE8E,EAAE9E,EAAE6D,EAAEjD,GAAGX,EAAE0h4C,YAAY3h4C,EAAE8E,EAAE9E,EAAE6D,EAAEjD,GAAGX,EAAE0h4C,YAAY3h4C,EAAE8E,EAAE9E,EAAE6D,EAAEjD,GAAGX,EAAE0h4C,YAAY3h4C,EAAE8E,EAAE9E,EAAE6D,EAAEjD,EAAG,CAAC,SAAS8z4C,GAAGz04C,GAAG,IAAI,IAAID,EAAE,EAAEY,EAAEX,EAAEm43C,SAASp43C,EAAEY,EAAEM,OAAOlB,GAAG,EAAE,GAAG2V,GAAG/U,EAAEZ,GAAGixB,MAAM,OAAO,EAAG,OAAO,CAAE,CAAC,IAAI2l0C,GAAG,SAAS321C,GAAGY,KAAKin4C,kBAAkB,IAAIzl3C,GAAGxhB,KAAKkn4C,WAAW,IAAIjo3C,GAAGjf,KAAKym4C,sBAAsBrn4C,EAAEY,KAAKkrV,SAAS,IAAIh6T,GAAGlxB,KAAK8z4C,yBAAyB,IAAIzz3C,GAAGrgB,KAAK+z4C,mBAAmB,IAAI1y3C,GAAGrhB,KAAK2z4C,kBAAkB,IAAI9x3C,EAAG,EAAEk00C,GAAGr21C,UAAU2oE,QAAQ,WAAW,OAAO,IAAIroE,KAAKin4C,kBAAkB5m4C,QAAQ,IAAIL,KAAKkn4C,WAAW7m4C,QAAQ,IAAIL,KAAK8z4C,yBAAyBzz4C,QAAQ,IAAIL,KAAK+z4C,mBAAmB1z4C,MAAM,EAAE011C,GAAGr21C,UAAU676B,OAAO,SAASn86B,EAAED,EAAEY,EAAEV,GAAGW,KAAKqoE,YAAYtoE,IAAIC,KAAKwn4C,mBAAmBpo4C,EAAEsm4C,mBAAmB1l4C,KAAKin4C,kBAAkBp2I,GAAG6vI,SAAS1g4C,KAAKyn4C,YAAYro4C,EAAEso4C,kBAAkB1n4C,KAAKkn4C,WAAW/n4C,GAAGa,KAAKg04C,0BAA0B504C,EAAEsm4C,mBAAmB1l4C,KAAK8z4C,yBAAyBjI,GAAGnL,SAAQ,GAAI1g4C,KAAKi04C,oBAAoB704C,EAAEsm4C,mBAAmB1l4C,KAAK+z4C,mBAAmBv2d,IAAG,GAAIx96B,KAAKi04C,oBAAoB54P,SAAS,IAAIt7oC,GAAGV,IAAIW,KAAKym4C,sBAAsBlrd,OAAOn86B,GAAI,EAAE221C,GAAGr21C,UAAU0+I,QAAQ,WAAWp+I,KAAKwn4C,qBAAqBxn4C,KAAKwn4C,mBAAmBppvC,UAAUp+I,KAAKyn4C,YAAYrpvC,UAAUp+I,KAAKym4C,sBAAsBrovC,UAAUp+I,KAAKkrV,SAAS9sM,UAAUp+I,KAAKg04C,0BAA0B51vC,UAAUp+I,KAAKi04C,oBAAoB71vC,UAAW,EAAEjsI,GAAG,gBAAgB4j1C,IAAI,IAAIp1+B,GAAG,SAASvhX,EAAED,EAAEY,GAAGC,KAAKin4C,kBAAkB,IAAI7n4C,EAAEY,KAAKk04C,iBAAiB/04C,EAAEa,KAAKkn4C,WAAW,IAAInn4C,EAAEC,KAAKkrV,SAAS,IAAIh6T,GAAGlxB,KAAKm04C,qBAAqB,IAAI/y3C,EAAG,EAAEu/V,GAAGjhX,UAAU676B,OAAO,SAASn86B,GAAGY,KAAKwn4C,mBAAmBpo4C,EAAEsm4C,mBAAmB1l4C,KAAKin4C,kBAAkBjn4C,KAAKk04C,kBAAkBl04C,KAAKyn4C,YAAYro4C,EAAEso4C,kBAAkB1n4C,KAAKkn4C,YAAYln4C,KAAKo04C,sBAAsBh14C,EAAEsm4C,mBAAmB1l4C,KAAKm04C,qBAAqBrI,GAAGpL,SAAQ,EAAI,EAAE//gC,GAAGjhX,UAAU0+I,QAAQ,WAAWp+I,KAAKwn4C,qBAAqBxn4C,KAAKwn4C,mBAAmBppvC,UAAUp+I,KAAKyn4C,YAAYrpvC,UAAUp+I,KAAKkrV,SAAS9sM,UAAUp+I,KAAKo04C,sBAAsBh2vC,UAAW,EAAEjsI,GAAG,mBAAmBwuW,IAAI,IAAIw3+B,GAAG,SAAS/41C,GAAGY,KAAKq04C,kBAAkBj14C,EAAEi14C,kBAAkBr04C,KAAK2/B,KAAKvgC,EAAEugC,KAAK3/B,KAAK+m4C,YAAY3n4C,EAAE2n4C,YAAY/m4C,KAAK89B,OAAO1+B,EAAE0+B,OAAO99B,KAAKymJ,SAASzmJ,KAAK89B,OAAOzO,KAAI,SAAUjwB,GAAG,OAAOA,EAAEmsB,EAAG,IAAGvrB,KAAKgd,MAAM5d,EAAE4d,MAAMhd,KAAK4uH,WAAWxvH,EAAEwvH,WAAW5uH,KAAKqh4C,iBAAiBji4C,EAAEii4C,iBAAiBrh4C,KAAKgn4C,YAAW,EAAGhn4C,KAAKs04C,YAAW,EAAGt04C,KAAKu04C,cAAc,GAAGv04C,KAAKw04C,qBAAqB,GAAGx04C,KAAKy04C,uBAAuBr73C,GAAG,IAAIpZ,KAAK004C,wBAAwBt73C,GAAG,IAAI,IAAIja,EAAEa,KAAK89B,OAAO,GAAGqh2C,mBAAmBZ,QAAQv+3C,KAAKwz4C,aAAavC,GAAGjx4C,KAAK2/B,KAAKxgC,EAAE,cAAca,KAAK204C,aAAa1D,GAAGjx4C,KAAK2/B,KAAKxgC,EAAE,cAAc,IAAIY,EAAEC,KAAK89B,OAAO,GAAGojG,OAAO7hI,EAAEU,EAAEoD,IAAI,mBAAmBvC,EAAEb,EAAEoD,IAAI,kBAAkBnD,KAAK404C,WAAW704C,EAAEoD,IAAI,uBAAuBpD,EAAEoD,IAAI,uBAAuBpD,EAAEoD,IAAI,0BAA0BpD,EAAEoD,IAAI,yBAAyBnD,KAAK604C,kBAAkB,eAAej04C,QAAG,IAASvB,EAAEy/3C,WAAW,GAAG9+3C,KAAK804C,iBAAiB,eAAel04C,GAAG,SAASA,IAAIZ,KAAK604C,oBAAoB704C,KAAK404C,WAAW,UAAU704C,EAAEoD,IAAI,sBAAsBnD,KAAK+04C,aAAah14C,EAAEoD,IAAI,qBAAqBksB,KAAI,SAAUjwB,GAAG,OAAOsv4C,GAAGtv4C,EAAG,KAAIY,KAAKmn4C,uBAAuBnn4C,KAAK89B,OAAOjR,QAAO,SAAUztB,GAAG,OAAOA,EAAEu73C,kBAAmB,IAAGtr2C,KAAI,SAAUjwB,GAAG,OAAOA,EAAEmsB,EAAG,IAAGvrB,KAAKg14C,SAAS514C,EAAE414C,QAAS,EAAE78C,GAAGz41C,UAAUu14C,aAAa,WAAWj14C,KAAKowB,KAAK,IAAI2l0C,GAAG,IAAI1rG,GAAGrqvC,KAAK89B,OAAO99B,KAAK2/B,MAAK,SAAUvgC,GAAG,MAAO,QAAQiM,KAAKjM,EAAG,KAAIY,KAAKywO,KAAK,IAAIslnC,GAAG,IAAI1rG,GAAGrqvC,KAAK89B,OAAO99B,KAAK2/B,MAAK,SAAUvgC,GAAG,MAAO,QAAQiM,KAAKjM,EAAG,KAAIY,KAAKk14C,iBAAiB,IAAIvl3C,GAAG3vB,KAAKm14C,gBAAgB,IAAI5l3C,GAAGvvB,KAAKo14C,gBAAgB,IAAIlm3C,EAAG,EAAEip0C,GAAGz41C,UAAU214C,2BAA2B,SAASj24C,EAAED,EAAEY,EAAEV,EAAEuB,GAAG,IAAI,IAAII,EAAE,EAAEA,EAAE5B,EAAEiB,OAAOW,IAAI,GAAG7B,EAAEC,EAAE2Z,WAAW/X,KAAI,GAAIjB,GAAGV,IAAIuB,EAAE,CAAC,IAAIN,EAAE4r4C,GAAG9s4C,EAAEyZ,OAAO7X,IAAIV,IAAInB,EAAEmB,EAAEyY,WAAW,KAAI,EAAI,CAAC,EAAEo/0C,GAAGz41C,UAAU0n4C,SAAS,SAASho4C,EAAED,EAAEY,GAAG,IAAIV,EAAEW,KAAK89B,OAAO,GAAGl9B,EAAEvB,EAAE6hI,OAAOlgI,EAAEJ,EAAEuC,IAAI,aAAa7C,EAAEM,EAAEuC,IAAI,cAAcrC,EAAEF,EAAEuC,IAAI,cAAcd,GAAG,aAAa/B,EAAEa,MAAMihB,MAAM9hB,EAAEa,MAAMA,iBAAiBwF,KAAKrG,EAAEa,MAAMA,MAAMknE,WAAW/nE,EAAEa,MAAMA,MAAMoD,WAAWlE,OAAO,KAAK,aAAaW,EAAEG,MAAMihB,MAAMphB,EAAEG,MAAMA,MAAMd,OAAO,GAAGmC,EAAE,aAAa1B,EAAEK,MAAMihB,QAAQthB,EAAEK,MAAMA,OAAO7B,OAAOgU,KAAKxS,EAAEs4C,YAAY/4C,OAAO,EAAEyC,EAAElC,EAAEuC,IAAI,mBAAmB,GAAGnD,KAAK0rC,SAAS,GAAGrpC,GAAGG,EAAE,CAAC,IAAI,IAAI3B,EAAE1B,EAAEm24C,iBAAiB1y4C,EAAEzD,EAAEo24C,kBAAkB7y4C,EAAEvD,EAAEu43C,gBAAgB103C,EAAE,IAAIua,GAAGvd,KAAK2/B,MAAMh9B,EAAE,EAAES,EAAEhE,EAAEuD,EAAES,EAAE/C,OAAOsC,GAAG,EAAE,CAAC,IAAIM,EAAEG,EAAET,GAAGR,EAAEc,EAAEkvE,QAAQluE,EAAEhB,EAAEsoB,GAAGjoB,EAAEL,EAAE+Z,MAAMzZ,EAAEN,EAAEo+3C,iBAAiBz93C,EAAEvE,EAAE6/3C,eAAezD,aAAa523C,EAAEulvC,GAAGjovC,EAAEyB,GAAG,GAAGvE,EAAE6/3C,eAAery2C,OAAO7pB,EAAE6B,EAAE9E,GAAG,CAAC6D,IAAIiB,EAAEkgC,SAASoltC,GAAGhovC,IAAI,IAAIqB,OAAE,EAAO,GAAGnB,EAAE,CAAC,IAAIqB,EAAErE,EAAEm24C,yBAAyB,aAAa3w4C,EAAE9E,EAAE2C,GAAGmB,EAAE8C,GAAG4/Z,QAAQ7ia,GAAGmw4C,GAAGhw4C,KAAK7D,KAAKs04C,YAAW,KAAMt04C,KAAKs04C,YAAY,gBAAgBl33C,MAAMpd,KAAKs04C,YAAYn33C,GAAGug3C,cAAcl63C,EAAEwo4C,GAAGno4C,EAAExE,EAAEwF,GAAI,CAAC,IAAIc,OAAE,EAAO,GAAGnD,EAAE,CAAC,IAAI2B,EAAE9E,EAAEm24C,yBAAyB,aAAa3w4C,EAAE9E,EAAE2C,GAAGiD,EAAExB,aAAa4C,GAAG5C,EAAE4C,GAAGwnN,WAAWpqN,EAAG,CAAC,GAAGX,GAAGmC,EAAE,CAAC,IAAIjB,EAAE1E,KAAK604C,kBAAkB/x4C,EAAEwxgB,SAASzvgB,EAAE,CAAC,EAAE9E,QAAG,EAAO,GAAGC,KAAK0rC,SAAS7pC,KAAK,CAAC0pB,GAAGtnB,EAAEmsB,KAAK5sB,EAAEitO,KAAK9qO,EAAEqX,MAAM1Z,EAAE+93C,iBAAiB993C,EAAEwhC,SAASlgC,EAAEkgC,SAASyD,WAAWrmC,EAAEqmC,WAAWj8B,KAAKwzW,GAAG59W,EAAEoK,MAAMy33C,QAAQt/3C,IAAIiB,IAAI9E,EAAE8E,EAAE+E,OAAM,GAAIlH,EAAE,CAAC,IAAIsB,EAAE9D,EAAEszgB,SAASzvgB,EAAE,CAAC,EAAE9E,GAAG8M,KAAK,KAAKhH,EAAE,QAAQjF,EAAEuC,IAAI,4BAA4B,UAAUvC,EAAEuC,IAAI,oBAAoBnD,KAAKuz4C,uBAAuBvz4C,KAAK+04C,cAAc/04C,KAAK+04C,aAAav04C,QAAQku4C,GAAGll2B,WAAW,EAAE,IAAI,IAAIzjiB,EAAE,EAAE7B,EAAEV,EAAE+z3C,SAASxx3C,EAAE7B,EAAE7D,OAAO0F,GAAG,EAAE,CAAC,IAAIH,EAAE1B,EAAE6B,GAAG,GAAGH,EAAE2kJ,MAAM1pJ,EAAE+E,EAAE2kJ,MAAM7/I,OAAM,MAAQ,CAAC,IAAI1F,EAAE2N,GAAGnP,EAAEe,YAAYgB,EAAEK,EAAE0x3C,WAAWxy3C,EAAET,EAAEzB,EAAE2C,GAAG3C,EAAE2C,IAAI,CAAC,EAAEvF,KAAKq14C,2BAA2Bzv4C,EAAEwqB,KAAK/rB,EAAEwB,EAAE7F,KAAKuz4C,uBAAuBvu4C,EAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAASpE,EAAEuC,IAAI,sBAAsBnD,KAAK0rC,SAAS,SAAStsC,GAAG,IAAID,EAAE,CAAC,EAAEY,EAAE,CAAC,EAAEV,EAAE,GAAGuB,EAAE,EAAE,SAASI,EAAE7B,GAAGE,EAAEwC,KAAKzC,EAAED,IAAIyB,GAAI,CAAC,SAASN,EAAElB,EAAED,EAAEyB,GAAG,IAAII,EAAEjB,EAAEX,GAAG,cAAcW,EAAEX,GAAGW,EAAEZ,GAAG6B,EAAE3B,EAAE2B,GAAG+jC,SAAS,GAAGnjC,MAAMvC,EAAE2B,GAAG+jC,SAAS,GAAG1lC,EAAE2B,GAAG+jC,SAAS,GAAG/iC,OAAOpB,EAAE,IAAII,CAAC,CAAC,SAASF,EAAE1B,EAAEW,EAAEa,GAAG,IAAII,EAAE7B,EAAEY,GAAG,cAAcZ,EAAEY,GAAGZ,EAAEC,GAAG4B,EAAE3B,EAAE2B,GAAG+jC,SAAS,GAAGoZ,QAAQ9+C,EAAE2B,GAAG+jC,SAAS,GAAGnkC,EAAE,GAAGoB,OAAO3C,EAAE2B,GAAG+jC,SAAS,IAAI/jC,CAAC,CAAC,SAASqB,EAAEjD,EAAED,EAAEY,GAAG,IAAIV,EAAEU,EAAEZ,EAAE,GAAGA,EAAE,GAAGkB,OAAO,GAAGlB,EAAE,GAAG,GAAG,OAAOC,EAAE,IAAIC,EAAE4E,EAAE,IAAI5E,EAAE2D,CAAC,CAAC,IAAI,IAAIR,EAAE,EAAEA,EAAEpD,EAAEiB,OAAOmC,IAAI,CAAC,IAAIM,EAAE1D,EAAEoD,GAAG3B,EAAEiC,EAAEiiC,SAASniC,EAAEE,EAAEstB,KAAKttB,EAAEstB,KAAK7rB,WAAW,KAAK,GAAG3B,EAAE,CAAC,IAAIF,EAAEL,EAAEO,EAAE/B,GAAGmC,EAAEX,EAAEO,EAAE/B,GAAE,GAAI,GAAG6B,KAAK3C,GAAGiD,KAAK7D,GAAGY,EAAE2C,KAAKvD,EAAE6D,GAAG,CAAC,IAAIL,EAAE7B,EAAE4B,EAAEM,EAAEnC,GAAGuC,EAAE9C,EAAEoC,EAAEM,EAAE3D,EAAEsD,GAAGoiC,iBAAiB5lC,EAAEuD,UAAU3C,EAAEiD,GAAGjD,EAAEsC,EAAEO,EAAEvD,EAAE+D,GAAG2hC,UAAS,IAAK3hC,EAAE/D,EAAEsD,GAAGoiC,SAAS,IAAK,MAAMriC,KAAK3C,EAAEO,EAAEoC,EAAEM,EAAEnC,GAAGmC,KAAK7D,EAAE2B,EAAE4B,EAAEM,EAAEnC,IAAIG,EAAEwB,GAAGrD,EAAEuD,GAAG9B,EAAE,EAAEb,EAAEiD,GAAGpC,EAAE,EAAG,MAAMI,EAAEwB,EAAG,CAAC,OAAOnD,EAAEwtB,QAAO,SAAUztB,GAAG,OAAOA,EAAE2lC,QAAS,GAAE,CAA7wB,CAA+wB/kC,KAAK0rC,WAAW1rC,KAAK604C,mBAAmB704C,KAAK0rC,SAASa,MAAK,SAAUntC,EAAED,GAAG,OAAOC,EAAE4k4C,QAAQ7k4C,EAAE6k4C,OAAQ,GAAG,CAAC,EAAE7rC,GAAGz41C,UAAU6uE,OAAO,SAASnvE,EAAED,EAAEY,GAAGC,KAAKqn4C,qBAAqBhn4C,SAASL,KAAKowB,KAAKq22C,sBAAsBL,kBAAkBhn4C,EAAED,EAAEa,KAAK89B,OAAO/9B,GAAGC,KAAKywO,KAAKg2pC,sBAAsBL,kBAAkBhn4C,EAAED,EAAEa,KAAK89B,OAAO/9B,GAAI,EAAEo41C,GAAGz41C,UAAU2oE,QAAQ,WAAW,OAAO,IAAIroE,KAAKo14C,gBAAgB/04C,SAASL,KAAKs04C,UAAU,EAAEn8C,GAAGz41C,UAAU4n4C,cAAc,WAAW,OAAQtn4C,KAAKun4C,UAAUvn4C,KAAKowB,KAAKq22C,sBAAsBC,aAAa1m4C,KAAKywO,KAAKg2pC,sBAAsBC,WAAW,EAAEvuC,GAAGz41C,UAAU676B,OAAO,SAASn86B,IAAIY,KAAKun4C,UAAUvn4C,KAAKy14C,iBAAiBz14C,KAAK014C,iBAAiBn6d,OAAOn86B,GAAGY,KAAK214C,iBAAiBp6d,OAAOn86B,IAAIY,KAAKowB,KAAKmr5B,OAAOn86B,EAAEY,KAAK804C,iBAAiB904C,KAAKun4C,SAASvn4C,KAAKowB,KAAKq22C,sBAAsBC,aAAa1m4C,KAAKywO,KAAK8qsB,OAAOn86B,EAAEY,KAAK804C,iBAAiB904C,KAAKun4C,SAASvn4C,KAAKywO,KAAKg2pC,sBAAsBC,aAAa1m4C,KAAKun4C,UAAS,CAAG,EAAEpvC,GAAGz41C,UAAUk24C,iBAAiB,WAAW514C,KAAK014C,iBAAiBt3vC,UAAUp+I,KAAK214C,iBAAiBv3vC,SAAU,EAAE+5sC,GAAGz41C,UAAU0+I,QAAQ,WAAWp+I,KAAKowB,KAAKguH,UAAUp+I,KAAKywO,KAAKryF,UAAUp+I,KAAKy14C,gBAAgBz14C,KAAK414C,kBAAmB,EAAEz9C,GAAGz41C,UAAUm24C,qBAAqB,SAASz24C,EAAED,GAAG,IAAIY,EAAEC,KAAKm14C,gBAAgB904C,OAAO,QAAG,IAASjB,EAAEi4a,QAAQ,CAAC,IAAI,IAAIh4a,EAAED,EAAE26V,KAAK56V,EAAEC,EAAEi4a,QAAQ,IAAIz2a,EAAExB,EAAE26V,KAAK56V,EAAEC,EAAEi4a,UAAUr2a,EAAE,CAAC,EAAEV,EAAElB,EAAEi4a,QAAQ,EAAE/2a,EAAEnB,EAAEkB,OAAOC,IAAIU,EAAEV,GAAG,CAAC2D,EAAE9E,EAAEmB,GAAG2D,EAAEjB,EAAE7D,EAAEmB,GAAG0C,EAAE8y4C,2BAA2Bz24C,GAAGiB,EAAEnB,EAAEkB,OAAO,IAAIhB,GAAGF,EAAEmB,EAAE,GAAGy5V,KAAK56V,EAAEmB,KAAK,IAAI,IAAIQ,EAAE1B,EAAEi4a,SAAS,EAAEv2a,GAAG,EAAEA,IAAIE,EAAEF,GAAG,CAACmD,EAAE9E,EAAE2B,GAAGmD,EAAEjB,EAAE7D,EAAE2B,GAAGkC,EAAE8y4C,2BAA2Bl14C,GAAGE,EAAE,IAAIF,GAAGzB,EAAE2B,EAAE,GAAGi5V,KAAK56V,EAAE2B,KAAK,IAAI,IAAIuB,EAAE,EAAEA,EAAElD,EAAEkB,OAAOgC,IAAI,CAAC,IAAIG,EAAExB,EAAEqB,GAAGrC,KAAKm14C,gBAAgBrU,YAAYt+3C,EAAEyB,EAAEzB,EAAEQ,EAAER,EAAEsz4C,2BAA4B,CAAC,CAAC,MAAO,CAACnqpC,eAAe5rP,EAAEijY,WAAWhjY,KAAKm14C,gBAAgB904C,OAAON,EAAE,EAAEo41C,GAAGz41C,UAAUg04C,WAAW,SAASt04C,EAAED,EAAEY,EAAEV,EAAEuB,EAAEI,EAAEV,EAAEQ,EAAEuB,EAAEG,EAAEM,EAAEjC,GAAG,IAAI,IAAI+B,EAAExD,EAAE8n4C,WAAWxk4C,EAAEtD,EAAE6n4C,kBAAkBjk4C,EAAE5D,EAAE8rV,SAAS24iC,eAAe,EAAE1k4C,EAAEkB,OAAOqC,EAAEE,EAAE5C,KAAK404C,WAAW5z4C,EAAEgj4C,aAAQ,GAAQrh4C,EAAE3C,KAAKk14C,iBAAiB704C,OAAO+C,EAAEJ,EAAE+g4C,aAAa9g4C,EAAEjD,KAAKuz4C,wBAAwBjz4C,IAAIou4C,GAAGll2B,SAAS3miB,KAAKsmC,GAAG,EAAE,EAAEhnC,EAAEnB,EAAEovB,MAAMpvB,EAAEovB,KAAKmn2C,SAAStz3C,EAAE,EAAEA,EAAE9E,EAAEkB,OAAO4D,IAAI,CAAC,IAAIX,EAAEnE,EAAE8E,GAAGV,EAAED,EAAEmhrC,GAAG7grC,EAAEN,EAAE2R,GAAGpQ,EAAEvB,EAAEwkrC,GAAGtkrC,EAAEF,EAAE2S,GAAGvS,EAAEJ,EAAEgzR,IAAIzyR,EAAEP,EAAEov4C,cAAc/s4C,EAAErC,EAAEqv4C,cAAcxu4C,EAAEb,EAAEsv4C,cAAclu4C,EAAEpB,EAAEuv4C,cAAc/t4C,EAAExB,EAAEmv4C,YAAY5s4C,EAAEvC,EAAEwv4C,MAAM/s4C,EAAEzC,EAAE2r4C,aAAa/q4C,EAAElB,EAAE+g4C,aAAan+3C,EAAEd,EAAE,GAAGmx1C,GAAGvz1C,EAAE5B,EAAEmD,EAAEnD,EAAEkC,EAAEO,EAAEU,EAAE2B,EAAErC,EAAEP,EAAEU,EAAEO,EAAEP,EAAEV,EAAEjD,EAAE8F,EAAEhC,EAAEI,EAAEJ,EAAEb,EAAEmB,EAAEO,GAAGux1C,GAAGvz1C,EAAE5B,EAAEmD,EAAEnD,EAAEkC,EAAEY,EAAEK,EAAE2B,EAAEhC,EAAEZ,EAAEU,EAAEO,EAAEP,EAAEH,EAAEG,EAAEV,EAAEjD,EAAE8F,EAAEF,EAAE1B,EAAEJ,EAAEb,EAAEmB,EAAEO,GAAGux1C,GAAGvz1C,EAAE5B,EAAEmD,EAAEnD,EAAEkC,EAAE6B,EAAEZ,EAAE2B,EAAEf,EAAE7B,EAAEU,EAAEO,EAAEP,EAAEV,EAAEU,EAAEd,EAAE7C,EAAE8F,EAAEhC,EAAEI,EAAE0B,EAAE3C,EAAEmB,EAAEO,GAAGux1C,GAAGvz1C,EAAE5B,EAAEmD,EAAEnD,EAAEkC,EAAEQ,EAAES,EAAE2B,EAAEpC,EAAER,EAAEU,EAAEO,EAAEP,EAAEH,EAAEG,EAAEV,EAAEU,EAAEd,EAAE7C,EAAE8F,EAAEF,EAAE1B,EAAE0B,EAAE3C,EAAEmB,EAAEO,GAAGsx1C,GAAG521C,EAAE004C,yBAAyBhz4C,EAAEmC,GAAGL,EAAEk+3C,YAAY583C,EAAEA,EAAE,EAAEA,EAAE,GAAGtB,EAAEk+3C,YAAY583C,EAAE,EAAEA,EAAE,EAAEA,EAAE,GAAGlB,EAAE+g4C,cAAc,EAAE/g4C,EAAEkh4C,iBAAiB,EAAElk4C,KAAKk14C,iBAAiBpU,YAAYh83C,EAAE,IAAIb,IAAI9E,EAAEkB,OAAO,GAAG0F,IAAI5G,EAAE8E,EAAE,GAAGgr4C,cAAc7v4C,EAAEqn4C,sBAAsBN,oBAAoBzj4C,EAAErC,OAAOW,EAAEA,EAAEgc,MAAM,CAAC,EAAEnc,EAAEsB,GAAGA,EAAE4D,GAAI,CAAC3G,EAAEu04C,kBAAkB7S,YAAYhg4C,EAAEmD,EAAEnD,EAAEkC,EAAEL,EAAE3C,KAAKk14C,iBAAiB704C,OAAOsC,EAAES,EAAEf,EAAEG,EAAE1B,EAAEu2a,QAAQt3a,EAAEA,EAAE,GAAG,EAAEA,EAAEA,EAAE,GAAG,EAAEV,EAAE,GAAGA,EAAE,GAAGiB,EAAE,GAAE,EAAG,EAAEwC,EAAG,EAAEq11C,GAAGz41C,UAAUq24C,yBAAyB,SAAS324C,EAAED,EAAEY,EAAEV,EAAEuB,EAAEI,GAAG,OAAO7B,EAAE2h4C,YAAY,EAAE,GAAG1h4C,EAAE0h4C,YAAY/g4C,EAAEkE,EAAElE,EAAEiD,EAAE3D,EAAEuB,EAAEiC,KAAKogD,MAAMjiD,EAAEiD,GAAGpB,KAAKogD,MAAMjiD,EAAEgC,GAAG,EAAEm11C,GAAGz41C,UAAUs24C,0BAA0B,SAAS524C,EAAED,EAAEY,EAAEV,EAAE2B,EAAEV,EAAEQ,GAAG,IAAIuB,EAAErB,EAAEkqV,SAAS24iC,eAAe,EAAE7i4C,EAAEim4C,kBAAkBjm4C,EAAEkm4C,YAAY1k4C,EAAEH,EAAE0h4C,aAAajh4C,EAAE9B,EAAEim4C,kBAAkBpm4C,EAAEG,EAAEmz4C,qBAAqBvx4C,EAAE9B,EAAE26O,QAAQ/4O,EAAE5B,EAAE46O,QAAQ17O,KAAK+14C,yBAAyBjz4C,EAAEjC,EAAEP,EAAEsC,EAAEF,EAAE,IAAI9B,EAAExB,EAAED,IAAIa,KAAK+14C,yBAAyBjz4C,EAAEjC,EAAEP,EAAEsC,EAAEF,EAAE,IAAI9B,EAAEb,EAAEZ,IAAIa,KAAK+14C,yBAAyBjz4C,EAAEjC,EAAEP,EAAEsC,EAAEF,EAAE,IAAI9B,EAAEb,EAAEV,IAAIW,KAAK+14C,yBAAyBjz4C,EAAEjC,EAAEP,EAAEsC,EAAEF,EAAE,IAAI9B,EAAExB,EAAEC,IAAIgD,EAAE0h4C,cAAc,EAAE,IAAI/g4C,EAAEhC,EAAEkm4C,WAAWlk4C,EAAE893C,YAAYt+3C,EAAEA,EAAE,GAAGQ,EAAE893C,YAAYt+3C,EAAE,EAAEA,EAAE,GAAGQ,EAAE893C,YAAYt+3C,EAAE,EAAEA,EAAE,GAAGQ,EAAE893C,YAAYt+3C,EAAE,EAAEA,GAAGH,EAAE6h4C,iBAAiB,CAAE,EAAE/rC,GAAGz41C,UAAUu24C,uBAAuB,SAAS724C,EAAED,EAAEY,EAAEV,GAAG,IAAI,IAAIuB,EAAExB,EAAEwB,EAAEzB,EAAEyB,IAAI,CAAC,IAAII,EAAEhB,KAAKq04C,kBAAkBlx4C,IAAIvC,GAAGZ,KAAKg24C,0BAA0Bh14C,EAAE4mT,GAAG5mT,EAAE0wL,GAAG1wL,EAAE87L,GAAG97L,EAAEy2H,GAAGp4H,EAAEW,KAAK014C,iBAAiB114C,KAAK214C,iBAAiB304C,EAAE0nkC,YAAY3okC,EAAG,CAAC,EAAEo41C,GAAGz41C,UAAUw24C,8BAA8B,WAAWl24C,KAAKy14C,gBAAgBz14C,KAAK414C,mBAAmB514C,KAAK014C,iBAAiB,IAAI/0hC,GAAGhiW,GAAG0ytC,GAAGqvJ,QAAQxg3C,IAAIlgB,KAAK214C,iBAAiB,IAAIh1hC,GAAGhiW,GAAG0ytC,GAAGqvJ,QAAQxg3C,IAAI,IAAI,IAAI9gB,EAAE,EAAEA,EAAEY,KAAKo14C,gBAAgB/04C,OAAOjB,IAAI,CAAC,IAAID,EAAEa,KAAKo14C,gBAAgBjy4C,IAAI/D,GAAGY,KAAKi24C,uBAAuB924C,EAAEqj4C,kBAAkBrj4C,EAAEsj4C,gBAAgBtj4C,GAAE,GAAIa,KAAKi24C,uBAAuB924C,EAAEuj4C,0BAA0Bvj4C,EAAEwj4C,wBAAwBxj4C,GAAE,GAAIa,KAAKi24C,uBAAuB924C,EAAEyj4C,kBAAkBzj4C,EAAE0j4C,gBAAgB1j4C,GAAE,GAAIa,KAAKi24C,uBAAuB924C,EAAE2j4C,0BAA0B3j4C,EAAE4j4C,wBAAwB5j4C,GAAE,EAAI,CAAC,EAAEg51C,GAAGz41C,UAAUy24C,oCAAoC,SAAS/24C,EAAED,EAAEY,EAAEV,EAAEuB,EAAEI,EAAEV,EAAEQ,EAAEuB,GAAG,IAAI,IAAIG,EAAE,CAAC,EAAEM,EAAE3D,EAAE2D,EAAE/C,EAAE+C,IAAI,CAAC,IAAIjC,EAAEzB,EAAE+D,IAAIL,GAAGN,EAAE4z4C,QAAQ,CAACxulC,GAAG/mT,EAAE+mT,GAAGl2H,GAAG7wL,EAAE6wL,GAAGoL,GAAGj8L,EAAEi8L,GAAGrlE,GAAG52H,EAAE42H,GAAG0pwC,aAAatg4C,EAAEsg4C,aAAaC,aAAavg4C,EAAEug4C,cAAc5+3C,EAAE6z4C,iBAAiBx14C,EAAEihO,aAAa,KAAK,CAAC,IAAI,IAAIl/N,EAAEvD,EAAEuD,EAAEhC,EAAEgC,IAAI,CAAC,IAAIF,EAAEtD,EAAE+D,IAAIP,GAAGJ,EAAE8z4C,gBAAgB,CAAC1ulC,GAAGllT,EAAEklT,GAAGl2H,GAAGhvL,EAAEgvL,GAAGoL,GAAGp6L,EAAEo6L,GAAGrlE,GAAG/0H,EAAE+0H,GAAG0pwC,aAAaz+3C,EAAEy+3C,aAAaC,aAAa1+3C,EAAE0+3C,cAAc5+3C,EAAE+z4C,yBAAyB7z4C,EAAEo/N,aAAa,KAAK,CAAC,IAAI,IAAI9+N,EAAEhC,EAAEgC,EAAE1C,EAAE0C,IAAI,CAAC,IAAIL,EAAEvD,EAAE+D,IAAIH,GAAGR,EAAEg04C,QAAQ,CAAC5ulC,GAAGjlT,EAAEilT,GAAGl2H,GAAG/uL,EAAE+uL,GAAGoL,GAAGn6L,EAAEm6L,GAAGrlE,GAAG90H,EAAE80H,GAAG0pwC,aAAax+3C,EAAEw+3C,aAAaC,aAAaz+3C,EAAEy+3C,cAAc5+3C,EAAEi04C,iBAAiB9z4C,EAAEm/N,aAAa,KAAK,CAAC,IAAI,IAAI1+N,EAAEtC,EAAEsC,EAAEf,EAAEe,IAAI,CAAC,IAAIH,EAAE7D,EAAE+D,IAAIC,GAAGZ,EAAEk04C,gBAAgB,CAAC9ulC,GAAG3kT,EAAE2kT,GAAGl2H,GAAGzuL,EAAEyuL,GAAGoL,GAAG75L,EAAE65L,GAAGrlE,GAAGx0H,EAAEw0H,GAAG0pwC,aAAal+3C,EAAEk+3C,aAAaC,aAAan+3C,EAAEm+3C,cAAc5+3C,EAAEm04C,yBAAyB1z4C,EAAE6+N,aAAa,KAAK,CAAC,OAAOt/N,CAAC,EAAE211C,GAAGz41C,UAAUk34C,0BAA0B,SAASx34C,GAAGY,KAAK624C,gBAAgB,GAAG,IAAI,IAAI134C,EAAE,EAAEA,EAAEa,KAAKo14C,gBAAgB/04C,OAAOlB,IAAI,CAAC,IAAIY,EAAEC,KAAKo14C,gBAAgBjy4C,IAAIhE,GAAGa,KAAK624C,gBAAgBh14C,KAAK7B,KAAKm24C,oCAAoC/24C,EAAEW,EAAEyi4C,kBAAkBzi4C,EAAE0i4C,gBAAgB1i4C,EAAE2i4C,0BAA0B3i4C,EAAE4i4C,wBAAwB5i4C,EAAE6i4C,kBAAkB7i4C,EAAE8i4C,gBAAgB9i4C,EAAE+i4C,0BAA0B/i4C,EAAEgj4C,yBAA0B,CAAC,EAAE5qC,GAAGz41C,UAAUo34C,YAAY,WAAW,OAAO924C,KAAKowB,KAAK86T,SAAS/nV,MAAM9C,OAAO,CAAC,EAAE831C,GAAGz41C,UAAUq34C,YAAY,WAAW,OAAO/24C,KAAKywO,KAAKy6G,SAAS/nV,MAAM9C,OAAO,CAAC,EAAE831C,GAAGz41C,UAAU+14C,aAAa,WAAW,OAAOz14C,KAAK014C,kBAAkB114C,KAAK214C,gBAAgB,EAAEx9C,GAAGz41C,UAAUs34C,wBAAwB,WAAW,OAAOh34C,KAAKy14C,gBAAgBz14C,KAAK014C,iBAAiBxqjC,SAAS/nV,MAAM9C,OAAO,CAAC,EAAE831C,GAAGz41C,UAAUu34C,wBAAwB,WAAW,OAAOj34C,KAAKy14C,gBAAgBz14C,KAAK214C,iBAAiBzqjC,SAAS/nV,MAAM9C,OAAO,CAAC,EAAE831C,GAAGz41C,UAAUw34C,0BAA0B,SAAS934C,EAAED,GAAG,IAAI,IAAIY,EAAEX,EAAEu04C,kBAAkBxw4C,IAAIhE,GAAGE,EAAEU,EAAE0h4C,iBAAiB,EAAE1h4C,EAAEyh4C,UAAU5g4C,EAAEb,EAAE0h4C,iBAAiB7g4C,EAAEvB,EAAEuB,GAAG,EAAExB,EAAE8n4C,WAAWpG,YAAYlg4C,EAAEA,EAAE,EAAEA,EAAE,GAAGxB,EAAE8n4C,WAAWpG,YAAYlg4C,EAAE,EAAEA,EAAE,EAAEA,EAAE,EAAG,EAAEu31C,GAAGz41C,UAAUy34C,uBAAuB,SAAS/34C,GAAG,GAAGY,KAAKo34C,cAAch44C,QAAG,IAASY,KAAKq34C,sBAAsB,OAAOr34C,KAAKq34C,sBAAsB,IAAI,IAAIl44C,EAAE0D,KAAK4wH,IAAIr0H,GAAGW,EAAE8C,KAAKuxH,IAAIh1H,GAAGC,EAAE,GAAGuB,EAAE,GAAGI,EAAE,GAAGV,EAAE,EAAEA,EAAEN,KAAKo14C,gBAAgB/04C,SAASC,EAAE,CAACU,EAAEa,KAAKvB,GAAG,IAAIQ,EAAEd,KAAKo14C,gBAAgBjy4C,IAAI7C,GAAGjB,EAAEwC,KAAK,EAAEgB,KAAKogD,MAAM9jD,EAAE2B,EAAE26O,QAAQ17O,EAAEe,EAAE46O,UAAU96O,EAAEiB,KAAKf,EAAEghO,aAAc,CAAC,OAAO9gO,EAAEurC,MAAK,SAAUntC,EAAED,GAAG,OAAOE,EAAED,GAAGC,EAAEF,IAAIyB,EAAEzB,GAAGyB,EAAExB,EAAG,IAAG4B,CAAC,EAAEm31C,GAAGz41C,UAAU434C,mBAAmB,SAASl44C,EAAED,GAAG,IAAIY,EAAEC,KAAKu04C,cAAcv04C,KAAKu04C,cAAcl04C,OAAO,GAAGN,GAAGA,EAAEik4C,UAAU7k4C,EAAEY,EAAEw34C,kBAAkBn44C,EAAE,EAAEY,KAAKu04C,cAAc1y4C,KAAK,CAACmi4C,QAAQ7k4C,EAAEq44C,oBAAoBp44C,EAAEm44C,kBAAkBn44C,EAAE,GAAI,EAAE+41C,GAAGz41C,UAAU+34C,aAAa,SAASr44C,GAAG,IAAID,EAAEa,KAAK,GAAGA,KAAK804C,iBAAiB904C,KAAKo34C,cAAch44C,KAAKY,KAAKowB,KAAK86T,SAAS/nV,MAAM9C,OAAO,GAAGL,KAAKywO,KAAKy6G,SAAS/nV,MAAM9C,OAAO,GAAG,CAACL,KAAKq34C,sBAAsBr34C,KAAKm34C,uBAAuB/34C,GAAGY,KAAKo34C,YAAYh44C,EAAEY,KAAKowB,KAAK822C,WAAWli3C,QAAQhlB,KAAKywO,KAAKy2pC,WAAWli3C,QAAQhlB,KAAK034C,iBAAiB,GAAG,IAAI,IAAI334C,EAAE,EAAEV,EAAEW,KAAKq34C,sBAAsBt34C,EAAEV,EAAEgB,OAAON,GAAG,EAAE,CAAC,IAAIa,EAAEZ,KAAKo14C,gBAAgBjy4C,IAAI9D,EAAEU,IAAIC,KAAK034C,iBAAiB714C,KAAKjB,EAAEkhO,cAAc,CAAClhO,EAAEsh4C,8BAA8Bth4C,EAAEuh4C,+BAA+Bvh4C,EAAEwh4C,8BAA8Bl92C,SAAQ,SAAU9lB,EAAEW,EAAEV,GAAGD,GAAG,GAAGC,EAAEmB,QAAQpB,KAAKW,GAAGZ,EAAE+34C,0BAA0B/34C,EAAEixB,KAAKhxB,EAAI,IAAGwB,EAAEyh4C,+BAA+B,GAAGri4C,KAAKk34C,0BAA0Bl34C,KAAKowB,KAAKxvB,EAAEyh4C,+BAA+Bzh4C,EAAE0h4C,uBAAuB,GAAGti4C,KAAKk34C,0BAA0Bl34C,KAAKywO,KAAK7vO,EAAE0h4C,uBAAuB1h4C,EAAE2h4C,+BAA+B,GAAGvi4C,KAAKk34C,0BAA0Bl34C,KAAKywO,KAAK7vO,EAAE2h4C,8BAA+B,CAACvi4C,KAAKowB,KAAKq32C,aAAazn4C,KAAKowB,KAAKq32C,YAAY900B,WAAW3yjB,KAAKowB,KAAK822C,YAAYln4C,KAAKywO,KAAKg3pC,aAAazn4C,KAAKywO,KAAKg3pC,YAAY900B,WAAW3yjB,KAAKywO,KAAKy2pC,WAAY,CAAC,EAAE/03C,GAAG,eAAegm1C,GAAG,CAAC/kE,KAAK,CAAC,SAAS,oBAAoB,WAAW,iBAAiB+kE,GAAGw/C,WAAW,MAAMx/C,GAAGy/C,qBAAqB5hD,GAAG,IAAI/nuC,GAAG,IAAI7vG,GAAG,CAAC,mBAAmB,IAAIH,GAAGxP,GAAGin3C,cAAc,qBAAqB,iBAAiB,IAAIz32C,GAAGxP,GAAGin3C,cAAc,mBAAmB,qBAAqB,IAAIz32C,GAAGxP,GAAGin3C,cAAc,uBAAuB,kBAAkB,IAAI132C,GAAGvP,GAAGin3C,cAAc,oBAAoB,iBAAiB,IAAIz32C,GAAGxP,GAAGin3C,cAAc,mBAAmB,qBAAqB,IAAIz32C,GAAGxP,GAAGin3C,cAAc,uBAAuB,wBAAwB,IAAIz32C,GAAGxP,GAAGin3C,cAAc,0BAA0B,gBAAgB,IAAIz32C,GAAGxP,GAAGin3C,cAAc,kBAAkB,0BAA0B,IAAIz32C,GAAGxP,GAAGin3C,cAAc,4BAA4B,YAAY,IAAI132C,GAAGvP,GAAGin3C,cAAc,cAAc,gBAAgB,IAAIz32C,GAAGxP,GAAGin3C,cAAc,kBAAkB,wBAAwB,IAAIz32C,GAAGxP,GAAGin3C,cAAc,0BAA0B,aAAa,IAAI132C,GAAGvP,GAAGin3C,cAAc,eAAe,cAAc,IAAI132C,GAAGvP,GAAGin3C,cAAc,gBAAgB,eAAe,IAAIz32C,GAAGxP,GAAGin3C,cAAc,iBAAiB,oBAAoB,IAAIz32C,GAAGxP,GAAGin3C,cAAc,sBAAsB,cAAc,IAAI132C,GAAGvP,GAAGin3C,cAAc,gBAAgB,cAAc,IAAI132C,GAAGvP,GAAGin3C,cAAc,gBAAgB,uBAAuB,IAAIz32C,GAAGxP,GAAGin3C,cAAc,yBAAyB,uBAAuB,IAAIz32C,GAAGxP,GAAGin3C,cAAc,yBAAyB,0BAA0B,IAAIz32C,GAAGxP,GAAGin3C,cAAc,4BAA4B,aAAa,IAAI132C,GAAGvP,GAAGin3C,cAAc,eAAe,YAAY,IAAI132C,GAAGvP,GAAGin3C,cAAc,cAAc,YAAY,IAAI132C,GAAGvP,GAAGin3C,cAAc,cAAc,iBAAiB,IAAI132C,GAAGvP,GAAGin3C,cAAc,mBAAmB,mBAAmB,IAAIz32C,GAAGxP,GAAGin3C,cAAc,qBAAqB,sBAAsB,IAAI132C,GAAGvP,GAAGin3C,cAAc,wBAAwB,eAAe,IAAI132C,GAAGvP,GAAGin3C,cAAc,iBAAiB,qBAAqB,IAAI132C,GAAGvP,GAAGin3C,cAAc,uBAAuB,uBAAuB,IAAIz32C,GAAGxP,GAAGin3C,cAAc,yBAAyB,cAAc,IAAI132C,GAAGvP,GAAGin3C,cAAc,gBAAgB,iBAAiB,IAAIz32C,GAAGxP,GAAGin3C,cAAc,mBAAmB,oBAAoB,IAAIz32C,GAAGxP,GAAGin3C,cAAc,sBAAsB,cAAc,IAAI132C,GAAGvP,GAAGin3C,cAAc,gBAAgB,eAAe,IAAIz32C,GAAGxP,GAAGin3C,cAAc,iBAAiB,oBAAoB,IAAIz32C,GAAGxP,GAAGin3C,cAAc,sBAAsB,iBAAiB,IAAI132C,GAAGvP,GAAGin3C,cAAc,mBAAmB,cAAc,IAAI132C,GAAGvP,GAAGin3C,cAAc,gBAAgB,qBAAqB,IAAIz32C,GAAGxP,GAAGin3C,cAAc,uBAAuB,wBAAwB,IAAIz32C,GAAGxP,GAAGin3C,cAAc,0BAA0B,gBAAgB,IAAIz32C,GAAGxP,GAAGin3C,cAAc,oBAAoBx8gC,GAAG,CAAC87gC,MAAM,IAAI522C,GAAG,CAAC,eAAe,IAAIJ,GAAGvP,GAAGko3C,aAAa,iBAAiB,aAAa,IAAI342C,GAAGvP,GAAGko3C,aAAa,eAAe,kBAAkB,IAAI342C,GAAGvP,GAAGko3C,aAAa,oBAAoB,kBAAkB,IAAI342C,GAAGvP,GAAGko3C,aAAa,oBAAoB,iBAAiB,IAAI342C,GAAGvP,GAAGko3C,aAAa,mBAAmB,iBAAiB,IAAI142C,GAAGxP,GAAGko3C,aAAa,mBAAmB,wBAAwB,IAAI142C,GAAGxP,GAAGko3C,aAAa,0BAA0B,eAAe,IAAI342C,GAAGvP,GAAGko3C,aAAa,iBAAiB,aAAa,IAAI342C,GAAGvP,GAAGko3C,aAAa,cAAc,CAACkhB,YAAY1p4C,GAAG2p4C,YAAY,SAAS144C,GAAG,OAAOA,EAAEwqZ,SAAS,EAAEmu/B,YAAY,SAAS344C,GAAG,QAASA,EAAEwqZ,SAAS,IAAI,kBAAkB,IAAI5rY,GAAGvP,GAAGko3C,aAAa,oBAAoB,kBAAkB,IAAI342C,GAAGvP,GAAGko3C,aAAa,oBAAoB,iBAAiB,IAAI342C,GAAGvP,GAAGko3C,aAAa,mBAAmB,iBAAiB,IAAI142C,GAAGxP,GAAGko3C,aAAa,mBAAmB,wBAAwB,IAAI142C,GAAGxP,GAAGko3C,aAAa,4BAA4Bz1vC,OAAOjT,IAAI65jC,GAAG,SAAS1orC,GAAGY,KAAKuM,KAAKnN,EAAEo6C,SAAS6/G,UAAUj6J,EAAEo6C,SAAS6/G,UAAUw+uC,YAAYxp4C,GAAGrO,KAAKm9H,aAAa/9H,CAAE,EAAE0orC,GAAGporC,UAAU40gB,SAAS,SAASl1gB,GAAG,GAAGA,EAAEy43C,iBAAiB,CAAC,IAAI143C,EAAEa,KAAKm9H,aAAa3jF,SAAS6/G,UAAU,GAAGl6J,GAAGA,EAAE444C,YAAY344C,EAAEy43C,kBAAkB,OAAO143C,EAAE244C,YAAY144C,EAAEy43C,iBAAiB,CAAC,OAAOz43C,EAAE+yE,SAAS/yE,EAAEw43C,aAAa533C,KAAKm9H,aAAam3Y,SAASl1gB,EAAE+yE,QAAQ/yE,EAAEw43C,cAAc533C,KAAKm9H,aAAa3jF,SAAS0k1C,cAAc373C,OAAO,EAAEulrC,GAAGporC,UAAUy79B,UAAU,SAAS/79B,GAAGY,KAAKm9H,aAAagB,cAAc/+H,EAAEY,KAAKm9H,aAAah8H,MAAMu53C,iBAAiB155B,WAAY,EAAE8mtB,GAAGporC,UAAU+33C,cAAc,WAAW,OAAO,CAAE,EAAE3vM,GAAGporC,UAAUytsB,UAAU,WAAW,OAAO,IAAI,EAAEh7rB,GAAG,wBAAwB21qC,GAAG,CAACsrG,KAAK,CAAC,kBAAkB,IAAI/kK,GAAG,SAASjvnC,GAAG,SAASD,EAAEA,GAAGC,EAAEQ,KAAKI,KAAKb,EAAE+5W,GAAI,CAAC,OAAO95W,IAAID,EAAEK,UAAUJ,IAAID,EAAEO,UAAUJ,OAAOY,OAAOd,GAAGA,EAAEM,YAAYO,YAAYd,EAAEA,EAAEO,UAAUqg4C,YAAY,SAAS5g4C,EAAEY,GAAG,GAAGX,EAAEM,UAAUqg4C,YAAYng4C,KAAKI,KAAKb,EAAEY,GAAG,SAASC,KAAKkhI,OAAO/9H,IAAI,6BAA6BnD,KAAKkhI,OAAOq9vC,QAAQ,2BAA2B,UAAUv+3C,KAAKkhI,OAAO/9H,IAAI,oBAAoB,MAAM,YAAY,SAASnD,KAAKkhI,OAAO/9H,IAAI,6BAA6BnD,KAAKkhI,OAAOq9vC,QAAQ,2BAA2B,UAAUv+3C,KAAKkhI,OAAO/9H,IAAI,oBAAoB,MAAM,YAAY,SAASnD,KAAKkhI,OAAO/9H,IAAI,0BAA0BnD,KAAKkhI,OAAOq9vC,QAAQ,wBAAwBv+3C,KAAKkhI,OAAO/9H,IAAI,4BAA4B,SAASnD,KAAKkhI,OAAO/9H,IAAI,0BAA0BnD,KAAKkhI,OAAOq9vC,QAAQ,wBAAwBv+3C,KAAKkhI,OAAO/9H,IAAI,4BAA4B,UAAUnD,KAAKkhI,OAAO/9H,IAAI,oBAAoB,CAAC,IAAI9D,EAAEW,KAAKkhI,OAAO/9H,IAAI,qBAAqB,GAAG9D,EAAE,CAAC,IAAI,IAAIuB,EAAE,GAAGI,EAAE,EAAEV,EAAEjB,EAAE2B,EAAEV,EAAED,OAAOW,GAAG,EAAE,CAAC,IAAIF,EAAER,EAAEU,GAAGJ,EAAEJ,QAAQM,GAAG,GAAGF,EAAEiB,KAAKf,EAAG,CAACd,KAAKkhI,OAAOq9vC,QAAQ,qBAAqB393C,CAAE,MAAMZ,KAAKkhI,OAAOq9vC,QAAQ,qBAAqB,CAAC,aAAc,CAACv+3C,KAAKg44C,oBAAqB,EAAE744C,EAAEO,UAAU814C,yBAAyB,SAASp24C,EAAED,EAAEY,EAAEV,GAAG,IAAIuB,EAAEZ,KAAKkhI,OAAO/9H,IAAI/D,GAAGk1gB,SAASn1gB,EAAE,CAAC,EAAEY,EAAEV,GAAG2B,EAAEhB,KAAKm/3C,mBAAmBZ,QAAQn/3C,GAAG,OAAO4B,EAAEm93C,gBAAgB7m3C,GAAGtW,EAAEG,SAASP,EAAEA,EAAE,SAASxB,EAAED,GAAG,OAAOA,EAAEsN,QAAQ,eAAc,SAAUtN,EAAEY,GAAG,OAAOA,KAAKX,EAAEU,OAAOV,EAAEW,IAAI,EAAG,GAAE,CAA5F,CAA8FZ,EAAEqpC,WAAW5nC,EAAE,EAAEzB,EAAEO,UAAUio4C,aAAa,SAASvo4C,GAAG,OAAO,IAAI+41C,GAAG/41C,EAAE,EAAED,EAAEO,UAAUko4C,YAAY,WAAW,OAAO,CAAC,EAAEzo4C,EAAEO,UAAUmo4C,uBAAuB,WAAW,OAAO,CAAE,EAAE1o4C,EAAEO,UAAUs44C,mBAAmB,WAAW,IAAI,IAAI544C,EAAE,EAAEW,EAAEm5W,GAAG87gC,MAAMiK,sBAAsB7/3C,EAAEW,EAAEM,OAAOjB,GAAG,EAAE,CAAC,IAAIC,EAAEU,EAAEX,GAAG,GAAGD,EAAE844C,iBAAiBj44C,KAAKkhI,OAAO7hI,GAAG,CAAC,IAAIuB,EAAEI,EAAEhB,KAAKg13C,MAAM7x3C,IAAI9D,GAAGiB,EAAE,IAAIwnrC,GAAG9mrC,GAAGF,EAAE,IAAI0W,GAAGlX,EAAEU,EAAEw4C,SAAS0k1C,eAAet93C,EAAE,aAAaI,EAAEG,MAAMihB,MAAM,WAAWphB,EAAEG,MAAMihB,KAAK,IAAI1K,GAAG,SAAS5W,GAAG,IAAIuX,GAAG,YAAYvX,EAAEE,EAAEG,MAAMy53C,UAAU553C,EAAEG,MAAM+24C,oBAAoBl44C,KAAKg13C,MAAMuJ,QAAQl/3C,GAAG,IAAIye,GAAG9c,EAAEw4C,SAAS54C,EAAEI,EAAEo4C,WAAY,CAAC,CAAC,EAAEj6C,EAAEO,UAAUmg4C,sCAAsC,SAASzg4C,EAAEW,EAAEV,GAAG,SAAUW,KAAKkhI,QAAQnhI,EAAEo+3C,gBAAgB9+3C,EAAE8+3C,iBAAiBh/3C,EAAE844C,iBAAiBj44C,KAAKkhI,OAAO9hI,EAAE,EAAED,EAAE844C,iBAAiB,SAAS744C,EAAED,GAAG,IAAIY,EAAEX,EAAE+D,IAAI,cAAc9D,EAAE65W,GAAG87gC,MAAMxs1C,WAAWrpC,GAAGyB,GAAE,EAAGI,EAAE,SAAS5B,GAAG,IAAI,IAAID,EAAE,EAAEY,EAAEX,EAAED,EAAEY,EAAEM,OAAOlB,GAAG,EAAE,GAAGE,EAAEg6J,WAAWh6J,EAAEg6J,UAAU0+uC,YAAYh44C,EAAEZ,IAAI,YAAYyB,GAAE,EAAG,EAAE,GAAG,aAAab,EAAEoB,MAAMihB,MAAMriB,EAAEoB,MAAMA,iBAAiBwF,GAAG3F,EAAEjB,EAAEoB,MAAMA,MAAMo23C,eAAe,GAAG,WAAWx33C,EAAEoB,MAAMihB,KAAK,CAAC,IAAI9hB,EAAE,SAASlB,GAAGwB,IAAIxB,aAAagI,IAAIF,GAAG9H,EAAE+B,SAASuN,GAAG1N,EAAE5B,EAAE+B,MAAMo23C,UAAUn43C,aAAaiI,GAAGrG,EAAE5B,EAAEm43C,UAAUn43C,EAAE+79B,UAAU769B,GAAI,EAAEQ,EAAEf,EAAEoB,MAAML,EAAE453C,kBAAkBp63C,EAAEQ,EAAE453C,iBAAiB155B,WAAY,CAAC,OAAOpge,CAAC,EAAEzB,CAAC,CAAlnF,CAAonFsf,IAAIypF,GAAG,CAAC8sxC,MAAM,IAAI522C,GAAG,CAAC,mBAAmB,IAAIH,GAAGxP,GAAGso3C,iBAAiB,qBAAqB,qBAAqB,IAAIl42C,GAAGpQ,GAAGso3C,iBAAiB,uBAAuB,qBAAqB,IAAI942C,GAAGxP,GAAGso3C,iBAAiB,0BAA0BohB,GAAG,SAAS/44C,GAAG,SAASD,EAAEA,GAAGC,EAAEQ,KAAKI,KAAKb,EAAE+oG,GAAI,CAAC,OAAO9oG,IAAID,EAAEK,UAAUJ,IAAID,EAAEO,UAAUJ,OAAOY,OAAOd,GAAGA,EAAEM,YAAYO,YAAYd,EAAEA,CAAC,CAAlI,CAAoIsf,IAAI253C,GAAG,CAACpjB,MAAM,IAAI522C,GAAG,CAAC,iBAAiB,IAAIH,GAAGxP,GAAGoo3C,aAAa,mBAAmB,oBAAoB,IAAI542C,GAAGxP,GAAGoo3C,aAAa,sBAAsB,wBAAwB,IAAI542C,GAAGxP,GAAGoo3C,aAAa,0BAA0B,wBAAwB,IAAI542C,GAAGxP,GAAGoo3C,aAAa,0BAA0B,oBAAoB,IAAI542C,GAAGxP,GAAGoo3C,aAAa,sBAAsB,kBAAkB,IAAI542C,GAAGxP,GAAGoo3C,aAAa,oBAAoB,oBAAoB,IAAI542C,GAAGxP,GAAGoo3C,aAAa,sBAAsB,uBAAuB,IAAI542C,GAAGxP,GAAGoo3C,aAAa,4BAA4B1gC,GAAG,SAAS/21C,GAAG,SAASD,EAAEA,GAAGC,EAAEQ,KAAKI,KAAKb,EAAEi54C,GAAI,CAAC,OAAOh54C,IAAID,EAAEK,UAAUJ,IAAID,EAAEO,UAAUJ,OAAOY,OAAOd,GAAGA,EAAEM,YAAYO,YAAYd,EAAEA,CAAC,CAAlI,CAAoIsf,IAAI453C,GAAG,SAASj54C,GAAG,SAASD,EAAEA,GAAGC,EAAEQ,KAAKI,KAAKb,EAAE,CAAC,GAAGa,KAAK4mD,eAAeznD,CAAE,CAAC,OAAOC,IAAID,EAAEK,UAAUJ,IAAID,EAAEO,UAAUJ,OAAOY,OAAOd,GAAGA,EAAEM,YAAYO,YAAYd,EAAEA,EAAEO,UAAUsg4C,KAAK,WAAW,MAAO,OAAOhg4C,KAAK4mD,eAAe0x1C,aAAa,EAAEn54C,EAAEO,UAAUwg4C,iBAAiB,WAAW,YAAO,IAASlg4C,KAAK4mD,eAAe2x1C,SAAS,EAAEp54C,EAAEO,UAAUqg4C,YAAY,WAAW,EAAE5g4C,EAAEO,UAAUog4C,kBAAkB,WAAW,EAAE3g4C,EAAEO,UAAU439B,cAAc,WAAW,EAAEn49B,EAAEO,UAAUytsB,UAAU,WAAW,EAAEhusB,EAAEO,UAAU8oO,MAAM,SAASppO,GAAGY,KAAK4mD,eAAe4hL,OAAOxoO,KAAK4mD,eAAe4hL,MAAMppO,EAAEA,EAAEg18B,QAAQjn6B,QAAQ8gF,GAAI,EAAE9uH,EAAEO,UAAUspO,SAAS,SAAS5pO,GAAGY,KAAK4mD,eAAeoiL,UAAUhpO,KAAK4mD,eAAeoiL,SAAS5pO,EAAEA,EAAEg18B,QAAQjn6B,QAAQ8gF,GAAI,EAAE9uH,CAAC,CAAzrB,CAA2rBsf,IAAI+53C,GAAG,CAACvoqC,OAAO32N,GAAGk1+B,QAAQh0+B,GAAGu62C,UAAU162C,GAAG+iH,KAAK0rwC,GAAG,iBAAiBe,GAAGvq1C,KAAKks1C,GAAGtx4B,OAAOm0nB,GAAG1k4B,WAAWwupC,GAAG/jB,OAAOj+B,IAAIsiD,GAAGn44C,EAAEyvV,iBAAiB2ojC,GAAGp44C,EAAE4vV,kBAAkByojC,GAAGr44C,EAAEmuV,iBAAiBmqjC,GAAGt44C,EAAEwvV,UAAU+ojC,GAAGv44C,EAAEgoQ,YAAYwwoC,GAAG,SAAS154C,EAAED,EAAEY,EAAEV,GAAGW,KAAKmtC,QAAQ/tC,EAAEY,KAAKklE,OAAOnlE,EAAEC,KAAK01H,QAAQt2H,EAAE6uH,GAAGy8B,gBAAgB1qJ,KAAKuuE,OAAOpvE,EAAEE,EAAG,EAAEy54C,GAAGp54C,UAAU6uE,OAAO,SAASnvE,EAAED,EAAEY,GAAG,IAAIV,EAAED,EAAE2/B,MAAMn+B,EAAExB,EAAE4/B,OAAOh+B,IAAIhB,KAAK4kB,MAAM5kB,KAAK4kB,KAAK,KAAKvlB,GAAGW,KAAK4kB,KAAK,KAAKhkB,GAAGb,GAAGO,EAAEN,KAAKmtC,QAAQrsC,EAAER,EAAE2tH,GAAG,GAAGjuH,KAAK+44C,UAAU9l4C,QAAQ9T,GAAGA,EAAE454C,WAAWj44C,EAAEwiV,YAAYxiV,EAAEgrS,WAAW9rS,KAAK01H,SAASp1H,EAAE044C,sBAAsB/s4C,KAAI,GAAI3L,EAAE244C,iBAAiBht4C,IAAI,GAAG3L,EAAE444C,iCAAiCjt4C,IAAIjM,KAAKklE,SAASpkE,EAAEglN,QAAQ3mN,IAAG,IAAKA,EAAE8gW,cAAcj/V,EAAEhB,KAAK4kB,KAAK,CAACvlB,EAAEuB,GAAGxB,aAAaq54C,IAAIr54C,aAAas54C,IAAIt54C,aAAau54C,IAAIv54C,aAAaw54C,IAAIC,IAAIz54C,aAAay54C,GAAG/34C,EAAE8sV,WAAW9sV,EAAEgrS,WAAW,EAAE9rS,KAAKklE,OAAOllE,KAAKklE,OAAOpkE,EAAEk5M,cAAc56M,GAAG0B,EAAE8sV,WAAW9sV,EAAEgrS,WAAW,EAAE9rS,KAAKklE,OAAO7lE,EAAEuB,EAAE,EAAEZ,KAAKklE,OAAOpkE,EAAEk5M,cAAc56M,EAAEoQ,UAAW,CAAC,IAAInN,EAAEtC,GAAG,CAACkE,EAAE,EAAEjB,EAAE,GAAGR,EAAEH,EAAE4B,EAAEnB,EAAET,EAAEW,EAAE5D,aAAaq54C,IAAIr54C,aAAas54C,IAAIt54C,aAAau54C,IAAIv54C,aAAaw54C,IAAIC,IAAIz54C,aAAay54C,GAAG/34C,EAAE4uV,cAAc5uV,EAAEgrS,WAAW,EAAEtpS,EAAEM,EAAEhC,EAAEglN,KAAKhlN,EAAEk5M,cAAc56M,GAAG0B,EAAE4uV,cAAc5uV,EAAEgrS,WAAW,EAAEtpS,EAAEM,EAAEzD,EAAEuB,EAAEE,EAAEglN,KAAKhlN,EAAEk5M,cAAc56M,EAAEoQ,KAAM,CAACxP,KAAK+44C,WAAW/44C,KAAKm54C,oBAAoBr44C,EAAEi5O,eAAej5O,EAAEgrS,WAAY,EAAEgtmC,GAAGp54C,UAAU2D,KAAK,SAASjE,EAAED,EAAEY,GAAG,IAAIV,EAAEW,KAAKmtC,QAAQ8gF,GAAG5uH,EAAEikV,YAAYjkV,EAAEysS,WAAW9rS,KAAK01H,SAAS31H,IAAIV,EAAEksS,uBAAuBvrS,KAAKm54C,qBAAqBp54C,EAAEV,EAAE6iR,QAAQ9iR,IAAIY,KAAK6sB,SAASxtB,EAAEmxV,cAAcnxV,EAAEysS,WAAWzsS,EAAEqsS,mBAAmBtsS,GAAGC,EAAEmxV,cAAcnxV,EAAEysS,WAAWzsS,EAAEssS,mBAAmB5rS,GAAGX,GAAGY,KAAK6sB,OAAOztB,GAAGD,IAAIa,KAAK4X,OAAOvY,EAAEmxV,cAAcnxV,EAAEysS,WAAWzsS,EAAEusS,eAAezsS,GAAGE,EAAEmxV,cAAcnxV,EAAEysS,WAAWzsS,EAAEwsS,eAAe1sS,GAAGa,KAAK4X,KAAKzY,EAAG,EAAE254C,GAAGp54C,UAAUy54C,iBAAiB,WAAW,OAAOn54C,KAAK4kB,KAAK,KAAK5kB,KAAK4kB,KAAK,IAAI/hB,KAAKwnB,IAAIrqB,KAAK4kB,KAAK,IAAI/hB,KAAKsvN,IAAI,GAAG,CAAC,EAAE2mrC,GAAGp54C,UAAU0+I,QAAQ,WAAWp+I,KAAKmtC,QAAQ8gF,GAAGoiO,cAAcrwV,KAAK01H,SAAS11H,KAAK01H,QAAQ,IAAK,EAAE,IAAI0jxC,GAAG,SAASh64C,GAAG,IAAID,EAAEa,KAAKA,KAAKq54C,UAAUj64C,EAAEY,KAAKs54C,YAAW,EAAG,oBAAoB9n3C,iBAAiBxxB,KAAKu54C,SAAS,IAAI/n3C,eAAexxB,KAAKu54C,SAAS3n3C,MAAMF,UAAU,WAAWvyB,EAAEm64C,YAAW,EAAGn64C,EAAEk64C,WAAY,EAAG,EAAED,GAAG154C,UAAUg/B,QAAQ,WAAW,IAAIt/B,EAAEY,KAAKA,KAAKs54C,aAAat54C,KAAKs54C,YAAW,EAAGt54C,KAAKu54C,SAASv54C,KAAKu54C,SAAS9n3C,MAAME,aAAY,GAAI9L,YAAW,WAAYzmB,EAAEk64C,YAAW,EAAGl64C,EAAEi64C,WAAa,GAAE,GAAI,EAAED,GAAG154C,UAAUmzB,OAAO,kBAAkB7yB,KAAKu54C,SAASv54C,KAAKq54C,UAAU,WAAW,CAAE,EAAE,IAAIG,GAAG,SAASp64C,EAAED,EAAEY,GAAGC,KAAK8P,OAAO1Q,EAAEY,KAAKqxF,OAAOlyF,EAAEa,KAAKo+B,MAAMr+B,EAAEC,KAAKmnE,UAAU,CAAC,EAAEnnE,KAAKy54C,MAAM,CAAC,EAAEz54C,KAAK+5F,UAAU,GAAG/5F,KAAK054C,gBAAgB,CAAC,EAAEz24C,EAAE,CAAC,UAAU,WAAWjD,MAAMA,KAAK85G,QAAQ,IAAIs/xC,GAAGp54C,KAAKiG,SAASjG,KAAK8P,OAAO6c,iBAAiB,UAAU3sB,KAAK254C,SAAQ,GAAI354C,KAAK454C,YAAY/14C,IAAIzE,EAAEkB,CAAE,EAAE,SAASu54C,GAAGz64C,EAAED,EAAEY,GAAG,IAAIV,EAAE,EAAEwD,KAAKsmC,GAAG,QAAQ,IAAItmC,KAAK6yF,IAAI,EAAE31F,GAAG,MAAO,CAACX,EAAEC,EAAE,EAAEwD,KAAKsmC,GAAG,QAAQ,EAAEhqC,EAAEE,EAAE,EAAEwD,KAAKsmC,GAAG,QAAQ,EAAE,CAACqw2C,GAAG954C,UAAU4oB,KAAK,SAASlpB,EAAED,EAAEY,EAAEV,EAAEuB,GAAG,IAAII,EAAEhB,UAAK,IAASY,IAAIA,GAAE,GAAI,IAAIN,EAAEuC,KAAKogD,MAAM,KAAKpgD,KAAKwF,UAAU9D,SAAS,IAAI+yB,UAAU,EAAE,IAAIv3B,IAAIC,KAAKmnE,UAAU7mE,GAAGP,GAAG,IAAIe,EAAE4D,EAAE1E,KAAK454C,kBAAa,EAAO,GAAG,OAAO554C,KAAK8P,OAAO6hB,YAAY,CAACpG,GAAGjrB,EAAEiM,KAAKnN,EAAEwkiC,cAAc7jiC,EAAE+54C,YAAYz64C,EAAE064C,UAAUn54C,EAAEo54C,YAAYh64C,KAAKo+B,MAAM5uB,KAAKqF,GAAG1V,EAAE2B,IAAIA,GAAG,CAAC+hD,OAAO,WAAW9iD,UAAUiB,EAAEmmE,UAAU7mE,GAAGU,EAAE8O,OAAO6hB,YAAY,CAACpG,GAAGjrB,EAAEiM,KAAK,WAAWut4C,YAAYz64C,EAAE264C,YAAYh54C,EAAEo9B,OAAQ,EAAE,EAAEo72C,GAAG954C,UAAUi64C,QAAQ,SAASv64C,GAAG,IAAID,EAAEC,EAAEoQ,KAAKzP,EAAEZ,EAAEosB,GAAG,GAAGxrB,KAAKZ,EAAE264C,aAAa954C,KAAKo+B,QAAQj/B,EAAE264C,aAAa,GAAG,aAAa364C,EAAEoN,KAAK,QAAQvM,KAAKy54C,MAAM154C,GAAG,IAAIV,EAAEW,KAAK054C,gBAAgB354C,UAAUC,KAAK054C,gBAAgB354C,GAAGV,GAAGA,GAAI,MAAMwE,KAAK1E,EAAE464C,WAAW/54C,KAAKy54C,MAAM154C,GAAGZ,EAAEa,KAAK+5F,UAAUl4F,KAAK9B,GAAGC,KAAK85G,QAAQp7E,WAAW1+B,KAAKi64C,YAAYl64C,EAAEZ,EAAG,EAAEq64C,GAAG954C,UAAUuG,QAAQ,WAAW,GAAGjG,KAAK+5F,UAAU15F,OAAO,CAAC,IAAIjB,EAAEY,KAAK+5F,UAAU57C,QAAQh/C,EAAEa,KAAKy54C,MAAMr64C,UAAUY,KAAKy54C,MAAMr64C,GAAGY,KAAK+5F,UAAU15F,QAAQL,KAAK85G,QAAQp7E,UAAUv/B,GAAGa,KAAKi64C,YAAY764C,EAAED,EAAG,CAAC,EAAEq64C,GAAG954C,UAAUu64C,YAAY,SAAS764C,EAAED,GAAG,IAAIY,EAAEC,KAAK,GAAG,eAAeb,EAAEoN,KAAK,CAAC,IAAIlN,EAAEW,KAAKmnE,UAAU/nE,UAAUY,KAAKmnE,UAAU/nE,GAAGC,IAAIF,EAAE2C,MAAMzC,EAAEgU,GAAGlU,EAAE2C,QAAQzC,EAAE,KAAKgU,GAAGlU,EAAEqQ,OAAQ,KAAM,CAAC,IAAI5O,GAAE,EAAGI,EAAE0D,EAAE1E,KAAK454C,kBAAa,EAAO,GAAGt54C,EAAEnB,EAAEykiC,YAAY,SAASzkiC,EAAEE,GAAGuB,GAAE,SAAUb,EAAE254C,gBAAgBt64C,GAAGW,EAAE+P,OAAO6hB,YAAY,CAACpG,GAAGnsB,EAAEmN,KAAK,aAAayt4C,YAAYj64C,EAAEq+B,MAAMt8B,MAAM3C,EAAE0V,GAAG1V,GAAG,KAAKqQ,KAAKqF,GAAGxV,EAAE2B,IAAIA,EAAG,EAAE,SAAS5B,GAAGwB,GAAE,CAAG,EAAEE,EAAE,KAAKuB,EAAEgR,GAAGlU,EAAEqQ,MAAM,GAAGxP,KAAKqxF,OAAOlyF,EAAEoN,MAAMzL,EAAEd,KAAKqxF,OAAOlyF,EAAEoN,MAAMpN,EAAE664C,YAAY334C,EAAE/B,QAAQ,GAAGN,KAAKqxF,OAAO6ozC,gBAAgB,CAAC,IAAI134C,EAAErD,EAAEoN,KAAK3H,MAAM,KAAK9D,EAAEd,KAAKqxF,OAAO6ozC,gBAAgB/64C,EAAE664C,YAAYx34C,EAAE,GAAGH,EAAEwF,QAAQrF,EAAE,IAAIH,EAAE/B,EAAG,MAAMA,EAAE,IAAIknB,MAAM,2BAA2BroB,EAAEoN,QAAQ3L,GAAGE,GAAGA,EAAE+hD,SAAS7iD,KAAK054C,gBAAgBt64C,GAAG0B,EAAE+hD,OAAQ,CAAC,EAAE221C,GAAG954C,UAAUmzB,OAAO,WAAW7yB,KAAK85G,QAAQjnF,SAAS7yB,KAAK8P,OAAOuZ,oBAAoB,UAAUrpB,KAAK254C,SAAQ,EAAI,EAAE,IAAIQ,GAAG,SAAS/64C,EAAED,GAAGC,IAAID,EAAEa,KAAKo64C,aAAah74C,GAAGi74C,aAAal74C,GAAG,IAAIC,EAAEiB,OAAOL,KAAKo64C,aAAa,CAACh74C,EAAE,GAAGA,EAAE,KAAKi74C,aAAa,CAACj74C,EAAE,GAAGA,EAAE,KAAKY,KAAKo64C,aAAah74C,EAAE,IAAIi74C,aAAaj74C,EAAE,IAAK,EAAE+64C,GAAGz64C,UAAU264C,aAAa,SAASj74C,GAAG,OAAOY,KAAKis3C,IAAI7s3C,aAAak74C,GAAG,IAAIA,GAAGl74C,EAAEggC,IAAIhgC,EAAE8/B,KAAKo72C,GAAGr+mB,QAAQ78xB,GAAGY,IAAI,EAAEm64C,GAAGz64C,UAAU064C,aAAa,SAASh74C,GAAG,OAAOY,KAAK4mrC,IAAIxnrC,aAAak74C,GAAG,IAAIA,GAAGl74C,EAAEggC,IAAIhgC,EAAE8/B,KAAKo72C,GAAGr+mB,QAAQ78xB,GAAGY,IAAI,EAAEm64C,GAAGz64C,UAAU2pZ,OAAO,SAASjqZ,GAAG,IAAID,EAAEY,EAAEV,EAAEW,KAAK4mrC,IAAIhmrC,EAAEZ,KAAKis3C,IAAI,GAAG7s3C,aAAak74C,GAAGn74C,EAAEC,EAAEW,EAAEX,MAAO,CAAC,KAAKA,aAAa+64C,IAAI,OAAO164C,MAAMkS,QAAQvS,GAAG,IAAIA,EAAEiB,QAAQjB,EAAEqpC,MAAMhpC,MAAMkS,SAAS3R,KAAKqpZ,OAAO8w/B,GAAGl+mB,QAAQ78xB,IAAIY,KAAKqpZ,OAAOix/B,GAAGr+mB,QAAQ78xB,IAAIY,KAAK,GAAGD,EAAEX,EAAE6s3C,MAAM9s3C,EAAEC,EAAEwnrC,OAAO7mrC,EAAE,OAAOC,IAAI,CAAC,OAAOX,GAAGuB,GAAGvB,EAAE+/B,IAAIv8B,KAAKgL,IAAI1O,EAAEigC,IAAI//B,EAAE+/B,KAAK//B,EAAE6/B,IAAIr8B,KAAKgL,IAAI1O,EAAE+/B,IAAI7/B,EAAE6/B,KAAKt+B,EAAEw+B,IAAIv8B,KAAK8K,IAAI5N,EAAEq/B,IAAIx+B,EAAEw+B,KAAKx+B,EAAEs+B,IAAIr8B,KAAK8K,IAAI5N,EAAEm/B,IAAIt+B,EAAEs+B,OAAOl/B,KAAK4mrC,IAAI,IAAI0zN,GAAGn74C,EAAEigC,IAAIjgC,EAAE+/B,KAAKl/B,KAAKis3C,IAAI,IAAIquB,GAAGv64C,EAAEq/B,IAAIr/B,EAAEm/B,MAAMl/B,IAAI,EAAEm64C,GAAGz64C,UAAU0gC,UAAU,WAAW,OAAO,IAAIk62C,IAAIt64C,KAAK4mrC,IAAIxnpC,IAAIp/B,KAAKis3C,IAAI7s1C,KAAK,GAAGp/B,KAAK4mrC,IAAI1npC,IAAIl/B,KAAKis3C,IAAI/s1C,KAAK,EAAE,EAAEi72C,GAAGz64C,UAAUiqO,aAAa,WAAW,OAAO3pO,KAAK4mrC,GAAG,EAAEuzN,GAAGz64C,UAAU+pO,aAAa,WAAW,OAAOzpO,KAAKis3C,GAAG,EAAEkuB,GAAGz64C,UAAU664C,aAAa,WAAW,OAAO,IAAID,GAAGt64C,KAAKw64C,UAAUx64C,KAAKy64C,WAAW,EAAEN,GAAGz64C,UAAUg74C,aAAa,WAAW,OAAO,IAAIJ,GAAGt64C,KAAK264C,UAAU364C,KAAK464C,WAAW,EAAET,GAAGz64C,UAAU864C,QAAQ,WAAW,OAAOx64C,KAAK4mrC,IAAIxnpC,GAAG,EAAE+62C,GAAGz64C,UAAUk74C,SAAS,WAAW,OAAO564C,KAAK4mrC,IAAI1npC,GAAG,EAAEi72C,GAAGz64C,UAAUi74C,QAAQ,WAAW,OAAO364C,KAAKis3C,IAAI7s1C,GAAG,EAAE+62C,GAAGz64C,UAAU+64C,SAAS,WAAW,OAAOz64C,KAAKis3C,IAAI/s1C,GAAG,EAAEi72C,GAAGz64C,UAAUmuH,QAAQ,WAAW,MAAO,CAAC7tH,KAAK4mrC,IAAI/4jC,UAAU7tH,KAAKis3C,IAAIp+vC,UAAU,EAAEssxC,GAAGz64C,UAAU6E,SAAS,WAAW,MAAO,gBAAgBvE,KAAK4mrC,IAAIrirC,WAAW,KAAKvE,KAAKis3C,IAAI1n3C,WAAW,GAAG,EAAE414C,GAAGz64C,UAAU2oE,QAAQ,WAAW,QAASroE,KAAK4mrC,KAAK5mrC,KAAKis3C,IAAI,EAAEkuB,GAAGz64C,UAAUk9B,SAAS,SAASx9B,GAAG,IAAID,EAAEm74C,GAAGr+mB,QAAQ78xB,GAAGW,EAAEZ,EAAEigC,IAAI//B,EAAEF,EAAE+/B,IAAIt+B,EAAEZ,KAAK4mrC,IAAIxnpC,KAAKr/B,GAAGA,GAAGC,KAAKis3C,IAAI7s1C,IAAI,OAAOp/B,KAAK4mrC,IAAIxnpC,IAAIp/B,KAAKis3C,IAAI7s1C,MAAMx+B,EAAEZ,KAAK4mrC,IAAIxnpC,KAAKr/B,GAAGA,GAAGC,KAAKis3C,IAAI7s1C,KAAKp/B,KAAK4mrC,IAAI1npC,KAAK7/B,GAAGA,GAAGW,KAAKis3C,IAAI/s1C,KAAKt+B,CAAC,EAAEu54C,GAAGl+mB,QAAQ,SAAS78xB,GAAG,OAAQA,GAAGA,aAAa+64C,GAAG/64C,EAAE,IAAI+64C,GAAG/64C,EAAE,EAAE,IAAIk74C,GAAG,SAASl74C,EAAED,GAAG,GAAGmtC,MAAMltC,IAAIktC,MAAMntC,GAAG,MAAM,IAAIqoB,MAAM,2BAA2BpoB,EAAE,KAAKD,EAAE,KAAK,GAAGa,KAAKo/B,KAAKhgC,EAAEY,KAAKk/B,KAAK//B,EAAEa,KAAKk/B,IAAI,IAAIl/B,KAAKk/B,KAAK,GAAG,MAAM,IAAI1X,MAAM,4DAA4D,EAAE8y3C,GAAG564C,UAAUkY,KAAK,WAAW,OAAO,IAAI0i4C,GAAGz54C,EAAEb,KAAKo/B,KAAK,IAAI,KAAKp/B,KAAKk/B,IAAI,EAAEo72C,GAAG564C,UAAUmuH,QAAQ,WAAW,MAAO,CAAC7tH,KAAKo/B,IAAIp/B,KAAKk/B,IAAI,EAAEo72C,GAAG564C,UAAU6E,SAAS,WAAW,MAAO,UAAUvE,KAAKo/B,IAAI,KAAKp/B,KAAKk/B,IAAI,GAAG,EAAEo72C,GAAG564C,UAAU+iL,WAAW,SAASrjL,GAAG,IAAID,EAAE0D,KAAKsmC,GAAG,IAAIppC,EAAEC,KAAKk/B,IAAI//B,EAAEE,EAAED,EAAE8/B,IAAI//B,EAAEyB,EAAEiC,KAAK4wH,IAAI1zH,GAAG8C,KAAK4wH,IAAIp0H,GAAGwD,KAAKuxH,IAAIr0H,GAAG8C,KAAKuxH,IAAI/0H,GAAGwD,KAAKuxH,KAAKh1H,EAAEggC,IAAIp/B,KAAKo/B,KAAKjgC,GAAG,OAAO,UAAU0D,KAAK2lT,KAAK3lT,KAAKgL,IAAIjN,EAAE,GAAG,EAAE054C,GAAG564C,UAAUss3C,SAAS,SAAS5s3C,QAAG,IAASA,IAAIA,EAAE,GAAG,IAAID,EAAE,IAAIC,EAAE,SAASW,EAAEZ,EAAE0D,KAAKuxH,IAAIvxH,KAAKsmC,GAAG,IAAInpC,KAAKk/B,KAAK,OAAO,IAAIi72C,GAAG,IAAIG,GAAGt64C,KAAKo/B,IAAIr/B,EAAEC,KAAKk/B,IAAI//B,GAAG,IAAIm74C,GAAGt64C,KAAKo/B,IAAIr/B,EAAEC,KAAKk/B,IAAI//B,GAAG,EAAEm74C,GAAGr+mB,QAAQ,SAAS78xB,GAAG,GAAGA,aAAak74C,GAAG,OAAOl74C,EAAE,GAAGK,MAAMkS,QAAQvS,KAAK,IAAIA,EAAEiB,QAAQ,IAAIjB,EAAEiB,QAAQ,OAAO,IAAIi64C,GAAGn12C,OAAO/lC,EAAE,IAAI+lC,OAAO/lC,EAAE,KAAK,IAAIK,MAAMkS,QAAQvS,IAAI,iBAAiBA,GAAG,OAAOA,EAAE,OAAO,IAAIk74C,GAAGn12C,OAAO,QAAQ/lC,EAAEA,EAAEggC,IAAIhgC,EAAEy74C,KAAK112C,OAAO/lC,EAAE8/B,MAAM,MAAM,IAAI1X,MAAM,sKAAsK,EAAE,IAAIsz3C,GAAG,EAAEj44C,KAAKsmC,GAAG,UAAU,SAAS4x2C,GAAG374C,GAAG,OAAO074C,GAAGj44C,KAAKuxH,IAAIh1H,EAAEyD,KAAKsmC,GAAG,IAAI,CAAC,SAAS0p4B,GAAGzz6B,GAAG,OAAQ,IAAIA,GAAG,GAAG,CAAC,SAASm31C,GAAGn31C,GAAG,OAAQ,IAAI,IAAIyD,KAAKsmC,GAAGtmC,KAAKwnB,IAAIxnB,KAAKinC,IAAIjnC,KAAKsmC,GAAG,EAAE/pC,EAAEyD,KAAKsmC,GAAG,OAAO,GAAG,CAAC,SAAS6x2C,GAAG574C,EAAED,GAAG,OAAOC,EAAE274C,GAAG574C,EAAE,CAAC,SAAS874C,GAAG774C,GAAG,OAAO,IAAIyD,KAAKsmC,GAAGtmC,KAAKskK,KAAKtkK,KAAKkxB,KAAK,IAAI,IAAI30B,GAAGyD,KAAKsmC,GAAG,MAAM,EAAE,CAAC,IAAI+x2C,GAAG,SAAS974C,EAAED,EAAEY,QAAG,IAASA,IAAIA,EAAE,GAAGC,KAAKiE,GAAG7E,EAAEY,KAAKgD,GAAG7D,EAAEa,KAAK2F,GAAG5F,CAAE,EAAEm74C,GAAGC,WAAW,SAAS/74C,EAAED,QAAG,IAASA,IAAIA,EAAE,GAAG,IAAIY,EAAEu64C,GAAGr+mB,QAAQ78xB,GAAG,OAAO,IAAI874C,GAAGroe,GAAG9y6B,EAAEq/B,KAAKm3zC,GAAGx21C,EAAEm/B,KAAK872C,GAAG774C,EAAEY,EAAEm/B,KAAK,EAAEg82C,GAAGx74C,UAAU074C,SAAS,WAAW,OAAO,IAAId,GAAG,IAAIt64C,KAAKiE,EAAE,IAAIg34C,GAAGj74C,KAAKgD,GAAG,EAAEk44C,GAAGx74C,UAAU274C,WAAW,WAAW,OAAOr74C,KAAK2F,EAAEo14C,GAAGE,GAAGj74C,KAAKgD,GAAG,EAAEk44C,GAAGx74C,UAAU474C,+BAA+B,WAAW,OAAO,EAAER,IAAI174C,EAAE674C,GAAGj74C,KAAKgD,GAAG,EAAEH,KAAKuxH,IAAIh1H,EAAEyD,KAAKsmC,GAAG,MAAM,IAAI/pC,CAAE,EAAE,IAAIm84C,GAAG,SAASn84C,EAAED,EAAEY,GAAGC,KAAK2F,EAAEvG,EAAEY,KAAKiE,EAAE9E,EAAEa,KAAKgD,EAAEjD,EAAEC,KAAK6kB,IAAI223C,GAAG,EAAEp84C,EAAEA,EAAED,EAAEY,EAAG,EAAEw74C,GAAG774C,UAAU6yI,OAAO,SAASnzI,GAAG,OAAOY,KAAK2F,IAAIvG,EAAEuG,GAAG3F,KAAKiE,IAAI7E,EAAE6E,GAAGjE,KAAKgD,IAAI5D,EAAE4D,CAAC,EAAEu44C,GAAG774C,UAAUwwB,IAAI,SAAS9wB,EAAED,GAAG,IAAIY,EAAEV,EAAEuB,EAAEI,EAAEV,EAAEQ,GAAGzB,EAAEW,KAAKgD,EAAEpC,EAAEZ,KAAK2F,EAAE3E,EAAE644C,GAAG,KAAK954C,EAAEC,KAAKiE,GAAG,KAAK5E,EAAEwD,KAAK6yF,IAAI,EAAE90F,GAAGvB,EAAE,GAAGuB,GAAGN,EAAEu54C,GAAG,KAAK954C,EAAE,GAAG,KAAKV,EAAE,GAAGuB,GAAGI,EAAE,GAAG,IAAIA,EAAE,GAAG,IAAIV,EAAE,GAAG,IAAIA,EAAE,IAAI+B,EAAE,SAASjD,EAAED,EAAEY,GAAG,IAAI,IAAIV,EAAEuB,EAAE,GAAGI,EAAE5B,EAAE4B,EAAE,EAAEA,IAAIJ,IAAIzB,GAAGE,EAAE,GAAG2B,EAAE,GAAG,EAAE,IAAIjB,EAAEV,EAAE,EAAE,GAAG,OAAOuB,CAAC,CAAnF,CAAqFZ,KAAK2F,EAAE3F,KAAKiE,EAAEjE,KAAKgD,GAAG,OAAO5D,GAAGY,KAAKiE,EAAEjE,KAAKgD,GAAG5D,EAAEiB,QAAQoM,QAAQ,YAAYzM,KAAKiE,EAAE,IAAIM,SAAS,KAAKvE,KAAKgD,EAAE,IAAIuB,SAAS,KAAKkI,QAAQ,MAAM3M,OAAOE,KAAK2F,IAAI8G,QAAQ,MAAM3M,OAAOE,KAAKiE,IAAIwI,QAAQ,MAAM3M,OAAO,QAAQX,EAAE0D,KAAK6yF,IAAI,EAAE11F,KAAK2F,GAAG3F,KAAKgD,EAAE,EAAEhD,KAAKgD,IAAIyJ,QAAQ,YAAYpK,GAAGoK,QAAQ,mBAAmB3L,EAAE,EAAEy64C,GAAG774C,UAAU+74C,aAAa,SAASr84C,GAAG,IAAID,EAAE0D,KAAK6yF,IAAI,EAAE11F,KAAK2F,GAAG,OAAO,IAAI/E,EAAE,MAAMxB,EAAE6E,EAAE9E,EAAEa,KAAKiE,GAAG,MAAM7E,EAAE4D,EAAE7D,EAAEa,KAAKgD,GAAG,EAAEu44C,GAAG774C,UAAU6E,SAAS,WAAW,OAAOvE,KAAK2F,EAAE,IAAI3F,KAAKiE,EAAE,IAAIjE,KAAKgD,CAAC,EAAE,IAAI044C,GAAG,SAASt84C,EAAED,GAAGa,KAAK4X,KAAKxY,EAAEY,KAAK+33C,UAAU543C,EAAEa,KAAK6kB,IAAI223C,GAAGp84C,EAAED,EAAEwG,EAAExG,EAAEwG,EAAExG,EAAE8E,EAAE9E,EAAE6D,EAAG,EAAE244C,GAAG,SAASv84C,EAAED,EAAEY,EAAEV,EAAEuB,GAAGZ,KAAK474C,YAAYx84C,EAAEY,KAAK4X,KAAKzY,EAAEa,KAAK+33C,UAAU,IAAIwjB,GAAGx74C,GAAGV,GAAGuB,GAAGZ,KAAK6kB,IAAI223C,GAAGr84C,EAAEC,EAAEW,EAAEV,EAAEuB,EAAG,EAAE,SAAS464C,GAAGp84C,EAAED,EAAEY,EAAEV,EAAEuB,IAAIxB,GAAG,GAAG,IAAIA,GAAG,EAAEA,EAAE,GAAG,IAAI4B,EAAE,GAAGjB,EAAE,OAAQiB,EAAEA,EAAE5B,EAAE4B,EAAEJ,EAAEvB,GAAGkF,SAAS,IAAIxE,EAAEwE,SAAS,IAAIpF,EAAEoF,SAAS,GAAG,CAACo34C,GAAGj84C,UAAU6yI,OAAO,SAASnzI,GAAG,OAAOY,KAAK474C,cAAcx84C,EAAEw84C,aAAa574C,KAAK4X,OAAOxY,EAAEwY,MAAM5X,KAAK+33C,UAAUxlvC,OAAOnzI,EAAE243C,UAAU,EAAE4jB,GAAGj84C,UAAUm84C,SAAS,SAASz84C,GAAG,IAAID,EAAEa,KAAK+33C,UAAUpy3C,EAAEvG,EAAE,OAAOA,EAAEY,KAAK+33C,UAAUpy3C,EAAE,IAAIg24C,GAAGv84C,EAAEY,KAAK4X,KAAK5X,KAAK+33C,UAAUpy3C,EAAE3F,KAAK+33C,UAAU9z3C,EAAEjE,KAAK+33C,UAAU/03C,GAAG,IAAI244C,GAAGv84C,EAAEY,KAAK4X,KAAKxY,EAAEY,KAAK+33C,UAAU9z3C,GAAG9E,EAAEa,KAAK+33C,UAAU/03C,GAAG7D,EAAE,EAAEw84C,GAAGj84C,UAAUo84C,mBAAmB,SAAS184C,EAAED,GAAG,IAAIY,EAAEC,KAAK+33C,UAAUpy3C,EAAEvG,EAAE,OAAOA,EAAEY,KAAK+33C,UAAUpy3C,EAAE614C,GAAGx74C,KAAK4X,MAAMzY,EAAEC,EAAEY,KAAK+33C,UAAUpy3C,EAAE3F,KAAK+33C,UAAU9z3C,EAAEjE,KAAK+33C,UAAU/03C,GAAGw44C,GAAGx74C,KAAK4X,MAAMzY,EAAEC,EAAEA,EAAEY,KAAK+33C,UAAU9z3C,GAAGlE,EAAEC,KAAK+33C,UAAU/03C,GAAGjD,EAAE,EAAE474C,GAAGj84C,UAAUq84C,UAAU,SAAS384C,GAAG,GAAGA,EAAEwY,OAAO5X,KAAK4X,KAAK,OAAO,EAAG,IAAIzY,EAAEa,KAAK+33C,UAAUpy3C,EAAEvG,EAAE243C,UAAUpy3C,EAAE,OAAO,IAAIvG,EAAEw84C,aAAax84C,EAAEw84C,YAAY574C,KAAK474C,aAAax84C,EAAE243C,UAAU9z3C,IAAIjE,KAAK+33C,UAAU9z3C,GAAG9E,GAAGC,EAAE243C,UAAU/03C,IAAIhD,KAAK+33C,UAAU/03C,GAAG7D,CAAC,EAAEw84C,GAAGj84C,UAAUsgC,SAAS,SAAS5gC,GAAG,GAAGY,KAAK474C,aAAax84C,EAAE,MAAO,CAAC,IAAIu84C,GAAG374C,KAAK474C,YAAY,EAAE574C,KAAK4X,KAAK5X,KAAK+33C,UAAUpy3C,EAAE3F,KAAK+33C,UAAU9z3C,EAAEjE,KAAK+33C,UAAU/03C,IAAI,IAAI7D,EAAEa,KAAK+33C,UAAUpy3C,EAAE,EAAE5F,EAAE,EAAEC,KAAK+33C,UAAU9z3C,EAAE5E,EAAE,EAAEW,KAAK+33C,UAAU/03C,EAAE,MAAO,CAAC,IAAI244C,GAAGx84C,EAAEa,KAAK4X,KAAKzY,EAAEY,EAAEV,GAAG,IAAIs84C,GAAGx84C,EAAEa,KAAK4X,KAAKzY,EAAEY,EAAE,EAAEV,GAAG,IAAIs84C,GAAGx84C,EAAEa,KAAK4X,KAAKzY,EAAEY,EAAEV,EAAE,GAAG,IAAIs84C,GAAGx84C,EAAEa,KAAK4X,KAAKzY,EAAEY,EAAE,EAAEV,EAAE,GAAG,EAAEs84C,GAAGj84C,UAAUs84C,WAAW,SAAS584C,GAAG,OAAOY,KAAK4X,KAAKxY,EAAEwY,QAAQ5X,KAAK4X,KAAKxY,EAAEwY,QAAQ5X,KAAK474C,YAAYx84C,EAAEw84C,eAAe574C,KAAK474C,YAAYx84C,EAAEw84C,eAAe574C,KAAK+33C,UAAU9z3C,EAAE7E,EAAE243C,UAAU9z3C,KAAKjE,KAAK+33C,UAAU9z3C,EAAE7E,EAAE243C,UAAU9z3C,IAAIjE,KAAK+33C,UAAU/03C,EAAE5D,EAAE243C,UAAU/03C,GAAG,EAAE244C,GAAGj84C,UAAU66iC,QAAQ,WAAW,OAAO,IAAIohW,GAAG374C,KAAK474C,YAAY,EAAE574C,KAAK+33C,UAAUpy3C,EAAE3F,KAAK+33C,UAAU9z3C,EAAEjE,KAAK+33C,UAAU/03C,EAAE,EAAE244C,GAAGj84C,UAAUu84C,SAAS,SAAS784C,GAAG,OAAO,IAAIu84C,GAAG374C,KAAK474C,YAAYx84C,EAAEY,KAAK+33C,UAAUpy3C,EAAE3F,KAAK+33C,UAAU9z3C,EAAEjE,KAAK+33C,UAAU/03C,EAAE,EAAE244C,GAAGj84C,UAAUw84C,gBAAgB,WAAW,OAAOr54C,KAAK6yF,IAAI,EAAE11F,KAAK474C,YAAY574C,KAAK+33C,UAAUpy3C,EAAE,EAAEg24C,GAAGj84C,UAAUy84C,YAAY,WAAW,OAAO,IAAIT,GAAG174C,KAAK4X,KAAK5X,KAAK+33C,UAAU,EAAE4jB,GAAGj84C,UAAU6E,SAAS,WAAW,OAAOvE,KAAK474C,YAAY,IAAI574C,KAAK+33C,UAAU9z3C,EAAE,IAAIjE,KAAK+33C,UAAU/03C,CAAC,EAAE244C,GAAGj84C,UAAU+74C,aAAa,SAASr84C,GAAG,OAAOY,KAAK+33C,UAAU0jB,aAAa,IAAIP,GAAG974C,EAAE6E,EAAEjE,KAAK4X,KAAKxY,EAAE4D,GAAG,EAAEmP,GAAG,kBAAkBop4C,IAAIpp4C,GAAG,mBAAmBwp4C,GAAG,CAACvoH,KAAK,CAAC,eAAe,IAAIgpH,GAAG,SAASh94C,EAAED,EAAEY,GAAG,GAAGC,KAAKozV,IAAIh0V,EAAED,EAAE6/B,SAAS7/B,EAAE4/B,MAAM,MAAM,IAAIpW,WAAW,4BAA4B,GAAG5oB,GAAG,WAAWA,GAAG,cAAcA,EAAE,OAAO8E,EAAE,IAAI9E,EAAE,iFAAiFC,KAAKy8H,OAAOt9H,EAAE6/B,OAAO,IAAI3/B,EAAEW,KAAK23V,IAAIx4V,EAAE6/B,OAAO,EAAEh/B,KAAKwP,KAAK,IAAIuQ,YAAY5gB,EAAEqQ,KAAK0Y,QAAQloB,KAAK4nB,SAAS7nB,GAAG,SAAS,IAAI,IAAIa,EAAE,EAAEA,EAAEvB,EAAEuB,IAAIZ,KAAKwP,KAAKxP,KAAKq84C,MAAM,EAAEz74C,IAAIZ,KAAKwP,KAAKxP,KAAKq84C,KAAK,EAAEz74C,IAAIZ,KAAKwP,KAAKxP,KAAKq84C,KAAKh94C,EAAEuB,IAAIZ,KAAKwP,KAAKxP,KAAKq84C,KAAKh94C,EAAE,EAAEuB,IAAIZ,KAAKwP,KAAKxP,KAAKq84C,KAAKz74C,GAAG,IAAIZ,KAAKwP,KAAKxP,KAAKq84C,KAAKz74C,EAAE,IAAIZ,KAAKwP,KAAKxP,KAAKq84C,KAAKz74C,EAAEvB,IAAIW,KAAKwP,KAAKxP,KAAKq84C,KAAKz74C,EAAEvB,EAAE,IAAIW,KAAKwP,KAAKxP,KAAKq84C,MAAM,GAAG,IAAIr84C,KAAKwP,KAAKxP,KAAKq84C,KAAK,EAAE,IAAIr84C,KAAKwP,KAAKxP,KAAKq84C,KAAKh94C,GAAG,IAAIW,KAAKwP,KAAKxP,KAAKq84C,KAAKh94C,EAAE,EAAE,IAAIW,KAAKwP,KAAKxP,KAAKq84C,MAAM,EAAEh94C,IAAIW,KAAKwP,KAAKxP,KAAKq84C,KAAK,EAAEh94C,EAAE,IAAIW,KAAKwP,KAAKxP,KAAKq84C,KAAKh94C,EAAEA,IAAIW,KAAKwP,KAAKxP,KAAKq84C,KAAKh94C,EAAE,EAAEA,EAAE,GAAI,EAAE+84C,GAAG184C,UAAUyD,IAAI,SAAS/D,EAAED,GAAG,IAAIY,EAAE,IAAI4f,WAAW3f,KAAKwP,KAAK0Y,QAAQ7oB,EAAE,EAAEW,KAAKq84C,KAAKj94C,EAAED,GAAG,OAAQ,cAAca,KAAK4nB,SAAS5nB,KAAKs84C,iBAAiBt84C,KAAKu84C,eAAex84C,EAAEV,GAAGU,EAAEV,EAAE,GAAGU,EAAEV,EAAE,GAAG,EAAE+84C,GAAG184C,UAAU884C,gBAAgB,WAAW,MAAO,cAAcx84C,KAAK4nB,SAAS,CAAC,IAAI,EAAE,EAAE,IAAI,OAAO,CAAC,OAAO,KAAK,GAAG,IAAI,EAAEw03C,GAAG184C,UAAU284C,KAAK,SAASj94C,EAAED,GAAG,GAAGC,GAAG,GAAGA,GAAGY,KAAK23V,IAAI,GAAGx4V,GAAG,GAAGA,GAAGa,KAAK23V,IAAI,EAAE,MAAM,IAAIhvU,WAAW,gDAAgD,OAAQxpB,EAAE,GAAGa,KAAKy8H,QAAQr9H,EAAE,EAAE,EAAEg94C,GAAG184C,UAAU684C,cAAc,SAASn94C,EAAED,EAAEY,GAAG,OAAQ,IAAIX,EAAE,IAAI,IAAID,EAAEY,GAAG,GAAG,GAAG,EAAEq84C,GAAG184C,UAAU484C,iBAAiB,SAASl94C,EAAED,EAAEY,GAAG,OAAO,IAAIX,EAAED,EAAEY,EAAE,IAAI,KAAK,EAAEq84C,GAAG184C,UAAU+84C,UAAU,WAAW,OAAO,IAAI9h4C,GAAG,CAACokB,MAAM/+B,KAAKy8H,OAAOz9F,OAAOh/B,KAAKy8H,QAAQ,IAAI98G,WAAW3f,KAAKwP,KAAK0Y,QAAQ,EAAEk03C,GAAG184C,UAAUg94C,eAAe,SAASt94C,EAAED,EAAEY,GAAG,GAAGC,KAAK23V,MAAMv4V,EAAEu4V,IAAI,MAAM,IAAInwU,MAAM,0BAA0B,IAAInoB,EAAEF,EAAEa,KAAK23V,IAAI/2V,EAAEzB,EAAEa,KAAK23V,IAAI33V,KAAK23V,IAAI32V,EAAEjB,EAAEC,KAAK23V,IAAIr3V,EAAEP,EAAEC,KAAK23V,IAAI33V,KAAK23V,IAAI,OAAOx4V,GAAG,KAAK,EAAEE,EAAEuB,EAAE,EAAE,MAAM,KAAK,EAAEA,EAAEvB,EAAE,EAAG,OAAOU,GAAG,KAAK,EAAEiB,EAAEV,EAAE,EAAE,MAAM,KAAK,EAAEA,EAAEU,EAAE,EAAG,IAAI,IAAIF,GAAG3B,EAAEa,KAAK23V,IAAIt1V,GAAGtC,EAAEC,KAAK23V,IAAIn1V,EAAExB,EAAEwB,EAAElC,EAAEkC,IAAI,IAAI,IAAIM,EAAEzD,EAAEyD,EAAElC,EAAEkC,IAAI9C,KAAKwP,KAAKxP,KAAKq84C,KAAKv54C,EAAEN,IAAIpD,EAAEoQ,KAAKxP,KAAKq84C,KAAKv54C,EAAEhC,EAAE0B,EAAEH,GAAI,EAAE8P,GAAG,UAAUiq4C,IAAI,IAAIO,GAAG,SAASv94C,GAAGY,KAAK484C,gBAAgB,CAAC,EAAE584C,KAAK684C,gBAAgB,GAAG,IAAI,IAAI194C,EAAE,EAAEA,EAAEC,EAAEiB,OAAOlB,IAAI,CAAC,IAAIY,EAAEX,EAAED,GAAGa,KAAK484C,gBAAgB784C,GAAGZ,EAAEa,KAAK684C,gBAAgB194C,GAAGY,CAAE,CAAC,EAAE484C,GAAGj94C,UAAUmoB,OAAO,SAASzoB,GAAG,OAAOY,KAAK484C,gBAAgBx94C,EAAE,EAAEu94C,GAAGj94C,UAAUmpB,OAAO,SAASzpB,GAAG,OAAOY,KAAK684C,gBAAgBz94C,EAAE,EAAE,IAAI094C,GAAG,SAAS194C,EAAED,EAAEY,EAAEV,EAAEuB,GAAGZ,KAAKuM,KAAK,UAAUvM,KAAK+84C,mBAAmB394C,EAAEA,EAAE494C,GAAG794C,EAAEC,EAAEsrK,GAAG3qK,EAAEX,EAAEurK,GAAGtrK,EAAEW,KAAKwoC,WAAWppC,EAAEopC,WAAWxoC,KAAKurB,GAAG3qB,CAAE,EAAEq84C,GAAG,CAACl42C,SAAS,CAACjhC,cAAa,IAAKm54C,GAAGl42C,SAAS5hC,IAAI,WAAW,YAAO,IAASnD,KAAKgp4C,YAAYhp4C,KAAKgp4C,UAAUhp4C,KAAK+84C,mBAAmB5T,UAAUnp4C,KAAK+84C,mBAAmBryuC,GAAG1qK,KAAK+84C,mBAAmBpyuC,GAAG3qK,KAAK+84C,mBAAmBC,IAAIj42C,UAAU/kC,KAAKgp4C,SAAS,EAAEiU,GAAGl42C,SAAS94B,IAAI,SAAS7M,GAAGY,KAAKgp4C,UAAU5p4C,CAAE,EAAE094C,GAAGp94C,UAAU49C,OAAO,WAAW,IAAIl+C,EAAE,CAAC2lC,SAAS/kC,KAAK+kC,UAAU,IAAI,IAAI5lC,KAAKa,KAAK,cAAcb,GAAG,uBAAuBA,IAAIC,EAAED,GAAGa,KAAKb,IAAI,OAAOC,CAAC,EAAEE,OAAOkU,iBAAiBsp4C,GAAGp94C,UAAUu94C,IAAI,IAAInwnC,GAAG,WAAW9sR,KAAK2L,MAAM,CAAC,EAAE3L,KAAKk94C,aAAa,CAAC,EAAEl94C,KAAKm94C,cAAc,CAAC,CAAE,EAAErwnC,GAAGptR,UAAUstC,YAAY,SAAS5tC,EAAED,EAAEY,GAAG,IAAIV,EAAES,OAAOX,GAAG,GAAGa,KAAKk94C,aAAa994C,GAAGY,KAAKk94C,aAAa994C,IAAI,CAAC,EAAEY,KAAKk94C,aAAa994C,GAAGC,GAAGW,KAAKk94C,aAAa994C,GAAGC,IAAI,CAAC,EAAEuD,EAAE5C,KAAKk94C,aAAa994C,GAAGC,GAAGU,GAAG,OAAOC,KAAKm94C,cAAc/94C,GAAG,IAAI,IAAIwB,KAAKZ,KAAKm94C,cAAc/94C,GAAG,CAAC,EAAEY,KAAK2L,MAAMvM,GAAGwB,IAAIvB,IAAIW,KAAKm94C,cAAc/94C,GAAGwB,GAAG,WAAW,GAAGZ,KAAKm94C,cAAc/94C,IAAI,OAAOY,KAAKm94C,cAAc/94C,GAAGC,GAAG,IAAI,IAAI2B,KAAKhB,KAAKm94C,cAAc/94C,GAAGC,GAAG,CAAC,EAAEW,KAAK2L,MAAMvM,GAAGC,GAAGU,EAAEiB,KAAKhB,KAAKm94C,cAAc/94C,GAAGC,GAAG2B,GAAG,WAAW,IAAI,IAAIV,KAAKP,EAAEC,KAAKm94C,cAAc/94C,IAAIY,KAAKm94C,cAAc/94C,GAAGC,IAAI,OAAOW,KAAKm94C,cAAc/94C,GAAGC,GAAGiB,WAAWN,KAAKm94C,cAAc/94C,GAAGC,GAAGiB,EAAG,EAAEwsR,GAAGptR,UAAU094C,mBAAmB,SAASh+4C,EAAED,EAAEY,GAAG,GAAG,OAAOC,KAAKm94C,cAAc/94C,GAAG,CAAC,IAAIC,EAAES,OAAOX,GAAG,GAAGa,KAAKm94C,cAAc/94C,GAAGY,KAAKm94C,cAAc/94C,IAAI,CAAC,EAAEW,QAAG,IAASZ,EAAE,OAAOa,KAAKm94C,cAAc/94C,GAAGC,KAAKW,KAAKm94C,cAAc/94C,GAAGC,GAAGW,KAAKm94C,cAAc/94C,GAAGC,IAAI,CAAC,EAAEW,KAAKm94C,cAAc/94C,GAAGC,GAAGU,GAAG,WAAW,QAAG,IAASZ,EAAE,GAAGa,KAAKk94C,aAAa994C,IAAIY,KAAKk94C,aAAa994C,GAAGC,GAAG,IAAIU,KAAKC,KAAKm94C,cAAc/94C,GAAGC,GAAG,CAAC,EAAEW,KAAKk94C,aAAa994C,GAAGC,GAAGW,KAAKm94C,cAAc/94C,GAAGC,GAAGU,GAAG,UAAUC,KAAKm94C,cAAc/94C,GAAGC,GAAG,UAAUW,KAAKm94C,cAAc/94C,GAAG,IAAK,CAAC,EAAE0tR,GAAGptR,UAAU4kH,SAAS,SAASllH,EAAED,GAAG,IAAIY,EAAED,OAAOX,GAAGE,EAAEuD,EAAE,CAAC,GAAG5C,KAAK2L,MAAMvM,IAAI,CAAC,GAAGW,IAAIC,KAAKk94C,aAAa994C,IAAI,CAAC,GAAGW,IAAI,GAAG,OAAOC,KAAKm94C,cAAc/94C,GAAG,MAAO,CAAC,EAAE,GAAGY,KAAKm94C,cAAc/94C,GAAG,CAAC,IAAIwB,EAAEZ,KAAKm94C,cAAc/94C,GAAGD,GAAG,GAAG,OAAOyB,EAAE,MAAO,CAAC,EAAE,IAAI,IAAII,KAAKJ,SAASvB,EAAE2B,EAAG,CAAC,OAAO3B,CAAC,EAAEytR,GAAGptR,UAAU294C,oBAAoB,SAASj+4C,EAAED,GAAGC,EAAEk+4C,gBAAgBt94C,KAAK2L,MAAMxM,EAAG,EAAE2tR,GAAGptR,UAAU694C,gBAAgB,SAASn+4C,EAAED,GAAG,IAAIY,EAAE,CAAC,EAAE,IAAI,IAAIV,KAAKW,KAAKk94C,aAAa,CAACl94C,KAAK2L,MAAMtM,GAAGW,KAAK2L,MAAMtM,IAAI,CAAC,EAAE,IAAIuB,EAAE,CAAC,EAAE,IAAI,IAAII,KAAKhB,KAAKk94C,aAAa794C,GAAGW,KAAK2L,MAAMtM,GAAG2B,KAAKhB,KAAK2L,MAAMtM,GAAG2B,GAAG,CAAC,GAAG4B,EAAE5C,KAAK2L,MAAMtM,GAAG2B,GAAGhB,KAAKk94C,aAAa794C,GAAG2B,IAAIJ,EAAEI,GAAGhB,KAAK2L,MAAMtM,GAAG2B,GAAGjB,EAAEV,GAAGuB,CAAE,CAAC,IAAI,IAAIN,KAAKN,KAAKm94C,cAAc,CAACn94C,KAAK2L,MAAMrL,GAAGN,KAAK2L,MAAMrL,IAAI,CAAC,EAAE,IAAIQ,EAAE,CAAC,EAAE,GAAG,OAAOd,KAAKm94C,cAAc784C,GAAG,IAAI,IAAI+B,KAAKrC,KAAK2L,MAAMrL,GAAGQ,EAAEuB,GAAG,CAAC,EAAErC,KAAK2L,MAAMrL,GAAG+B,GAAG,CAAC,OAAO,IAAI,IAAIG,KAAKxC,KAAKm94C,cAAc784C,GAAG,CAAC,GAAG,OAAON,KAAKm94C,cAAc784C,GAAGkC,GAAGxC,KAAK2L,MAAMrL,GAAGkC,GAAG,CAAC,OAAO,IAAI,IAAIM,EAAE,EAAEjC,EAAEvB,OAAOgU,KAAKtT,KAAKm94C,cAAc784C,GAAGkC,IAAIM,EAAEjC,EAAER,OAAOyC,GAAG,SAAS9C,KAAK2L,MAAMrL,GAAGkC,GAAG3B,EAAEiC,IAAIhC,EAAE0B,GAAGxC,KAAK2L,MAAMrL,GAAGkC,EAAG,CAACzC,EAAEO,GAAGP,EAAEO,IAAI,CAAC,EAAEsC,EAAE7C,EAAEO,GAAGQ,EAAG,CAAC,GAAGd,KAAKk94C,aAAa,CAAC,EAAEl94C,KAAKm94C,cAAc,CAAC,EAAE,IAAI794C,OAAOgU,KAAKvT,GAAGM,OAAO,IAAI,IAAIqC,KAAKtD,EAAEA,EAAEsD,GAAG464C,gBAAgBv94C,EAAEZ,EAAG,EAAE,IAAIkj9B,GAAG,SAASjj9B,EAAED,GAAGa,KAAKw94C,OAAOp+4C,EAAEY,KAAKiE,EAAE7E,EAAE243C,UAAU9z3C,EAAEjE,KAAKgD,EAAE5D,EAAE243C,UAAU/03C,EAAEhD,KAAK2F,EAAEvG,EAAE243C,UAAUpy3C,EAAE3F,KAAKumP,KAAK,IAAIj0O,GAAG,KAAK,GAAG,GAAGtS,KAAKy94C,OAAO,IAAInr4C,GAAG,KAAK,GAAG,GAAGtS,KAAK094C,kBAAkB,IAAI1s3C,GAAGhxB,KAAKi03C,UAAU903C,CAAE,EAAE,SAASw+4C,GAAGv+4C,EAAED,EAAEY,EAAEV,EAAEuB,GAAG,OAAOqD,EAAE7E,GAAE,SAAUA,EAAE4B,GAAG,IAAIV,EAAEnB,aAAawe,GAAGxe,EAAEgE,IAAInC,GAAG,KAAK,OAAOV,GAAGA,EAAEg0gB,SAASh0gB,EAAEg0gB,SAASv0gB,EAAEV,EAAEuB,GAAGN,CAAE,GAAE,CAAC,SAASs94C,GAAGx+4C,GAAG,IAAI,IAAID,EAAE,IAAIY,EAAE,IAAIV,GAAE,IAAKuB,GAAE,IAAKI,EAAE,EAAEV,EAAElB,EAAE4B,EAAEV,EAAED,OAAOW,GAAG,EAAE,CAAC,IAAIF,EAAER,EAAEU,GAAG7B,EAAE0D,KAAKgL,IAAI1O,EAAE2B,EAAEmD,GAAGlE,EAAE8C,KAAKgL,IAAI9N,EAAEe,EAAEkC,GAAG3D,EAAEwD,KAAK8K,IAAItO,EAAEyB,EAAEmD,GAAGrD,EAAEiC,KAAK8K,IAAI/M,EAAEE,EAAEkC,EAAG,CAAC,MAAO,CAACu3K,KAAKp7K,EAAEq7K,KAAKz6K,EAAE06K,KAAKp7K,EAAEq7K,KAAK95K,EAAE,CAAC,SAASi94C,GAAGz+4C,EAAED,GAAG,OAAOA,EAAEC,CAAC,CAACij9B,GAAG3i9B,UAAUq7P,OAAO,SAAS37P,EAAED,EAAEY,EAAEV,EAAEuB,EAAEI,GAAG,IAAIV,EAAEN,KAAK094C,kBAAkBr94C,OAAOL,KAAK094C,kBAAkB5c,YAAY/g4C,EAAEV,EAAEuB,GAAG,IAAI,IAAIE,EAAEE,EAAEhB,KAAKy94C,OAAOz94C,KAAKumP,KAAKlkP,EAAE,EAAEA,EAAElD,EAAEkB,OAAOgC,IAAI,CAAC,IAAI,IAAIG,EAAErD,EAAEkD,GAAGS,EAAE,CAAC,IAAI,KAAI,KAAK,KAAMjC,EAAE,EAAEA,EAAE2B,EAAEnC,OAAOQ,IAAI,CAAC,IAAI+B,EAAEJ,EAAE3B,GAAGiC,EAAE,GAAGD,KAAKgL,IAAI/K,EAAE,GAAGF,EAAEqB,GAAGnB,EAAE,GAAGD,KAAKgL,IAAI/K,EAAE,GAAGF,EAAEI,GAAGF,EAAE,GAAGD,KAAK8K,IAAI7K,EAAE,GAAGF,EAAEqB,GAAGnB,EAAE,GAAGD,KAAK8K,IAAI7K,EAAE,GAAGF,EAAEI,EAAG,CAACF,EAAE,GAAG,MAAMA,EAAE,GAAG,MAAMA,EAAE,IAAI,GAAGA,EAAE,IAAI,GAAGhC,EAAEi6P,OAAOz6P,EAAEwC,EAAE,GAAGA,EAAE,GAAGA,EAAE,GAAGA,EAAE,GAAI,CAAC,EAAEu/8B,GAAG3i9B,UAAUo+4C,aAAa,WAAW,OAAO994C,KAAK+94C,WAAW/94C,KAAK+94C,SAAS,IAAI1U,GAAGC,WAAW,IAAI+C,GAAGrs4C,KAAKg+4C,cAAclg3C,OAAO99B,KAAKi+4C,iBAAiB,IAAItB,GAAG384C,KAAK+94C,SAASz+4C,OAAOgU,KAAKtT,KAAK+94C,UAAUxx2C,OAAO,CAAC,uBAAuBvsC,KAAK+94C,QAAQ,EAAE17b,GAAG3i9B,UAAUuvF,MAAM,SAAS7vF,EAAED,EAAEY,EAAEV,GAAG,IAAI2B,EAAEhB,KAAKA,KAAK894C,eAAe,IAAI,IAAIx94C,EAAElB,EAAEipC,QAAQ,CAAC,EAAEvnC,EAAE,KAAK1B,EAAEquL,SAASruL,EAAE0iG,MAAMz/F,EAAEuO,GAAGtQ,EAAEusB,QAAQrqB,EAAEpD,EAAE8+4C,cAAcp74C,EAAE1D,EAAE++4C,aAAar94C,EAAED,EAAE+84C,GAAGp74C,GAAGI,EAAE5C,KAAKumP,KAAKt3J,MAAMpuF,EAAE05K,KAAKz3K,EAAEjC,EAAE25K,KAAK13K,EAAEjC,EAAE45K,KAAK33K,EAAEjC,EAAE65K,KAAK53K,GAAGJ,EAAEk74C,GAAGx+4C,EAAEg/4C,qBAAqBp74C,EAAEhD,KAAKy94C,OAAOxuzC,MAAMvsF,EAAE63K,KAAKz3K,EAAEJ,EAAE83K,KAAK13K,EAAEJ,EAAE+3K,KAAK33K,EAAEJ,EAAEg4K,KAAK53K,GAAE,SAAU3D,EAAEY,EAAEV,EAAE2B,GAAG,OAAO,SAAS5B,EAAED,EAAEY,EAAEV,EAAE2B,GAAG,IAAI,IAAIV,EAAE,EAAEQ,EAAE1B,EAAEkB,EAAEQ,EAAET,OAAOC,GAAG,EAAE,CAAC,IAAI+B,EAAEvB,EAAER,GAAG,GAAGnB,GAAGkD,EAAE4B,GAAGlE,GAAGsC,EAAEW,GAAG3D,GAAGgD,EAAE4B,GAAGjD,GAAGqB,EAAEW,EAAE,OAAO,CAAE,CAAC,IAAIR,EAAE,CAAC,IAAI5B,EAAEzB,EAAEY,GAAG,IAAIa,EAAEzB,EAAE6B,GAAG,IAAIJ,EAAEvB,EAAE2B,GAAG,IAAIJ,EAAEvB,EAAEU,IAAI,GAAGX,EAAEiB,OAAO,EAAE,IAAI,IAAIyC,EAAE,EAAEjC,EAAE2B,EAAEM,EAAEjC,EAAER,OAAOyC,GAAG,EAAE,GAAGwnvC,GAAGlrvC,EAAEyB,EAAEiC,IAAI,OAAO,EAAG,IAAI,IAAIF,EAAE,EAAEA,EAAExD,EAAEiB,OAAO,EAAEuC,IAAI,GAAGsnvC,GAAG9qvC,EAAEwD,GAAGxD,EAAEwD,EAAE,GAAGJ,GAAG,OAAO,EAAG,OAAO,CAAE,CAA3S,CAA6SpD,EAAEg/4C,oBAAoBj/4C,EAAE2D,EAAE/C,EAAE+C,EAAEzD,EAAEyD,EAAE9B,EAAE8B,EAAG,IAAGH,EAAE,EAAES,EAAEJ,EAAEL,EAAES,EAAE/C,OAAOsC,GAAG,EAAEC,EAAEf,KAAKuB,EAAET,IAAIC,EAAE2pC,KAAKsx2C,IAAI,IAAI,IAAI564C,EAAEd,EAAE,CAAC,EAAE8B,EAAE,SAASrD,GAAG,IAAIkC,EAAEF,EAAEhC,GAAG,GAAGkC,IAAIG,EAAE,CAACA,EAAEH,EAAE,IAAIjC,EAAEG,EAAE084C,kBAAkBv64C,IAAIL,GAAGJ,EAAE,KAAK1B,EAAEq94C,oBAAoBl84C,EAAEtB,EAAEyg4C,YAAYzg4C,EAAEwg4C,iBAAiBxg4C,EAAEihO,aAAaz/N,EAAE/B,EAAEw9B,OAAOx9B,EAAEo33C,gBAAgBv43C,EAAEY,EAAEV,GAAE,SAAUF,EAAEY,EAAEV,GAAG,OAAOqD,IAAIA,EAAEynvC,GAAGhrvC,IAAIY,EAAE8n4C,uBAAuBrl4C,EAAErD,EAAEE,EAAEqD,EAAE1B,EAAE2E,EAAEvG,EAAEwjI,UAAU9hI,EAAE1B,EAAEk/4C,eAAgB,GAAG,CAAC,EAAEh74C,EAAE,EAAEA,EAAEV,EAAEvC,OAAOiD,IAAIW,EAAEX,GAAG,OAAOnB,CAAC,EAAEkg9B,GAAG3i9B,UAAU2+4C,oBAAoB,SAASj/4C,EAAED,EAAEY,EAAEV,EAAEuB,EAAEI,EAAEV,EAAEQ,EAAEuB,EAAEG,EAAEM,GAAG,IAAIjC,EAAEb,KAAKu+4C,eAAep/4C,GAAG,IAAI6B,GAAG,SAAS5B,EAAED,GAAG,IAAI,IAAIY,EAAE,EAAEA,EAAEX,EAAEiB,OAAON,IAAI,GAAGZ,EAAEqB,QAAQpB,EAAEW,KAAK,EAAE,OAAO,EAAG,OAAO,CAAE,CAAlF,CAAoFiB,EAAEH,GAAG,CAAC,IAAI6B,EAAE1C,KAAKi+4C,iBAAiBp13C,OAAO9oB,GAAGiD,EAAEhD,KAAK+94C,SAASr74C,GAAGyvE,QAAQ9yE,GAAG,GAAGuB,EAAE663C,aAAa,CAAC,IAAI943C,EAAEynvC,GAAGpnvC,GAAE,GAAI,IAAIpC,EAAEisB,OAAO,IAAItP,GAAGvd,KAAKw94C,OAAO5B,aAAaj54C,EAAE3C,KAAKw94C,OAAOzlB,WAAW,MAAM,MAAM,IAAIn33C,EAAEisB,OAAO,IAAItP,GAAGvd,KAAKw94C,OAAO5B,aAAa544C,GAAG,OAAO,IAAI,IAAII,EAAEpD,KAAKyze,MAAMzwe,EAAEN,GAAGO,EAAE,EAAEA,EAAEpC,EAAER,OAAO4C,IAAI,CAAC,IAAId,EAAEtB,EAAEoC,GAAG,KAAKjC,GAAGA,EAAER,QAAQ2B,GAAG,GAAG,CAAC,IAAI8B,EAAEnD,EAAEqB,GAAG,GAAG8B,EAAE,CAAC,IAAIX,EAAE,CAAC,OAAE,IAASF,GAAGZ,IAAIc,EAAEd,EAAE8hH,SAASrgH,EAAEkyI,aAAa,oBAAoB/yI,IAAI,IAAIG,EAAEX,EAAE,CAAC,EAAEP,EAAEF,IAAIoB,EAAEyx3C,MAAM2oB,GAAGp64C,EAAEyx3C,MAAM/w3C,EAAE+w3C,MAAMhy3C,EAAEM,EAAEhD,GAAGiD,EAAE29H,OAAOy8wC,GAAGp64C,EAAE29H,OAAOj9H,EAAEi9H,OAAOl+H,EAAEM,EAAEhD,GAAG,IAAIsD,GAAGd,GAAGA,EAAEE,EAAEiB,EAAEX,GAAG,GAAGM,EAAE,CAAC,IAAIiB,EAAE,IAAIi44C,GAAG954C,EAAEhD,KAAK2F,EAAE3F,KAAKiE,EAAEjE,KAAKgD,EAAEI,GAAGyB,EAAEmqH,MAAMzrH,EAAE,IAAIC,EAAEpE,EAAE+C,QAAG,IAASqB,IAAIA,EAAEpE,EAAE+C,GAAG,IAAIqB,EAAE3B,KAAK,CAACigO,aAAaziO,EAAE8yE,QAAQttE,EAAE254C,cAAc564C,GAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAEy+8B,GAAG3i9B,UAAU++4C,qBAAqB,SAASr/4C,EAAED,EAAEY,EAAEV,EAAEuB,EAAEI,EAAEV,EAAEQ,GAAG,IAAIuB,EAAE,CAAC,EAAErC,KAAK894C,eAAe,IAAI,IAAIt74C,EAAEoO,GAAGhQ,GAAGkC,EAAE,EAAEjC,EAAEzB,EAAE0D,EAAEjC,EAAER,OAAOyC,GAAG,EAAE9C,KAAKq+4C,oBAAoBh84C,EAAEtC,EAAEV,EAAEwB,EAAEiC,GAAGN,EAAExB,EAAEV,EAAEQ,EAAE3B,GAAG,OAAOkD,CAAC,EAAEgg9B,GAAG3i9B,UAAUg/4C,SAAS,SAASt/4C,GAAG,IAAI,IAAID,EAAE,EAAEY,EAAEC,KAAKu+4C,eAAep/4C,EAAEY,EAAEM,OAAOlB,GAAG,EAAE,IAAI,IAAIE,EAAE,EAAEuB,EAAEb,EAAEZ,GAAGE,EAAEuB,EAAEP,OAAOhB,GAAG,EAAE,GAAGD,IAAIwB,EAAEvB,GAAG,OAAO,EAAG,OAAO,CAAE,EAAEgj9B,GAAG3i9B,UAAU+ze,MAAM,SAASr0e,EAAED,GAAG,IAAIY,EAAEX,EAAEmsB,GAAG,OAAOvrB,KAAKi03C,WAAW,kBAAkBl03C,EAAEX,EAAEopC,WAAW,iBAAiBxoC,KAAKi03C,UAAUj03C,KAAKi03C,UAAUj03C,KAAKi03C,UAAU903C,OAAOY,EAAEolC,OAAOplC,IAAIA,CAAC,EAAEoS,GAAG,eAAekw8B,GAAG,CAAC+wU,KAAK,CAAC,cAAc,sBAAsB,IAAIurH,GAAG,SAASv/4C,EAAED,GAAGa,KAAKw94C,OAAOp+4C,EAAEY,KAAKozV,IAAIpwV,IAAIhD,KAAK4+4C,KAAK,EAAE5+4C,KAAKytL,SAAStuL,EAAEa,KAAKgl+B,QAAQ,CAAC,EAAEhl+B,KAAK6+4C,eAAe,KAAK7+4C,KAAKm+4C,aAAa,EAAEn+4C,KAAK8+4C,kBAAiB,EAAG9+4C,KAAKs04C,YAAW,EAAGt04C,KAAKi8J,aAAa,CAAC,EAAEj8J,KAAK++4C,oBAAoB,EAAE/+4C,KAAK2L,MAAM,SAAU,EAAEgz4C,GAAGj/4C,UAAUs/4C,qBAAqB,SAAS5/4C,GAAG,IAAID,EAAEC,EAAEY,KAAKi/4C,UAAU9/4C,EAAE6E,EAAEynB,OAAOzrB,KAAKk/4C,aAAa//4C,EAAEa,KAAKk/4C,cAAcl/4C,KAAKk/4C,YAAY//4C,EAAG,EAAEw/4C,GAAGj/4C,UAAUy/4C,aAAa,WAAW,MAAO,YAAYn/4C,KAAK2L,OAAO,WAAW3L,KAAK2L,OAAO,cAAc3L,KAAK2L,KAAK,EAAEgz4C,GAAGj/4C,UAAU0/4C,eAAe,SAAShg5C,EAAED,EAAEY,GAAG,GAAGC,KAAK8+wB,WAAW9+wB,KAAKq/4C,mBAAmBr/4C,KAAK2L,MAAM,SAASvM,EAAE,CAAC,IAAI,IAAIC,KAAKD,EAAE0iO,eAAe9hO,KAAKs/4C,mBAAmBlg5C,EAAE0iO,aAAa1iO,EAAE4+4C,aAAah+4C,KAAKu/4C,kBAAkBng5C,EAAE4+4C,YAAYh+4C,KAAKs/4C,mBAAmBtB,YAAY5+4C,EAAE4+4C,aAAah+4C,KAAKu/4C,oBAAoBv/4C,KAAKs/4C,mBAAmBtB,YAAYh+4C,KAAKu/4C,oBAAoBv/4C,KAAKq04C,kBAAkBj14C,EAAEi14C,kBAAkBr04C,KAAKgl+B,QAAQ,SAAS5l+B,EAAED,GAAG,IAAIY,EAAE,CAAC,EAAE,IAAIZ,EAAE,OAAOY,EAAE,IAAI,IAAIV,EAAE,WAAW,IAAID,EAAE4B,EAAEJ,GAAGvB,EAAED,EAAEqnJ,SAASp3H,KAAI,SAAUjwB,GAAG,OAAOD,EAAEq1kC,SAASp1kC,EAAG,IAAGytB,OAAO5Z,SAAS,GAAG,IAAI5T,EAAEgB,OAAO,CAACjB,EAAE0+B,OAAOz+B,EAAED,EAAE+n4C,yBAAyB/n4C,EAAEio4C,qBAAqBjo4C,EAAE+n4C,uBAAuB932C,KAAI,SAAUjwB,GAAG,OAAOC,EAAEwtB,QAAO,SAAU1tB,GAAG,OAAOA,EAAEosB,KAAKnsB,CAAE,IAAG,EAAG,KAAI,IAAI,IAAIkB,EAAE,EAAEQ,EAAEzB,EAAEiB,EAAEQ,EAAET,OAAOC,GAAG,EAAEP,EAAEe,EAAER,GAAGirB,IAAInsB,CAAE,CAAC,EAAEwB,EAAE,EAAEI,EAAE5B,EAAEwB,EAAEI,EAAEX,OAAOO,GAAG,EAAEvB,IAAI,OAAOU,CAAC,CAA/Y,CAAiZX,EAAE4l+B,QAAQ7l+B,EAAEkV,OAAOrU,KAAK8+4C,kBAAiB,EAAG9+4C,KAAKgl+B,QAAQ,CAAC,IAAIpk+B,EAAEZ,KAAKgl+B,QAAQ3l+B,GAAG,GAAGuB,aAAau31C,GAAG,CAAC,GAAGn41C,KAAK8+4C,kBAAiB,GAAI/+4C,EAAE,MAAMa,EAAE4+4C,cAAa,CAAG,CAAC,CAAC,GAAGx/4C,KAAKs04C,YAAW,EAAGt04C,KAAK8+4C,iBAAiB,IAAI,IAAI994C,KAAKhB,KAAKgl+B,QAAQ,CAAC,IAAI1k+B,EAAEN,KAAKgl+B,QAAQhk+B,GAAG,GAAGV,aAAa631C,IAAI731C,EAAEg04C,WAAW,CAACt04C,KAAKs04C,YAAW,EAAGn33C,GAAGikK,aAAajkK,GAAGktH,YAAY,aAAajtH,MAAME,KAAK,KAAK,CAAC,CAAC,IAAI,IAAIxc,KAAKd,KAAKm+4C,aAAa,EAAEn+4C,KAAKgl+B,QAAQ,CAAC,IAAI3i+B,EAAErC,KAAKgl+B,QAAQlk+B,GAAGd,KAAKm+4C,aAAat74C,KAAK8K,IAAI3N,KAAKm+4C,aAAah/4C,EAAEkV,MAAMmgkC,SAAS1zkC,GAAG8m4C,YAAYvl4C,GAAI,CAACjD,EAAEqg5C,aAAaz/4C,KAAKy/4C,WAAWrg5C,EAAEqg5C,YAAYrg5C,EAAEsg5C,kBAAkB1/4C,KAAK0/4C,gBAAgBtg5C,EAAEsg5C,gBAAiB,MAAM1/4C,KAAKq04C,kBAAkB,IAAIty3C,EAAG,EAAE483C,GAAGj/4C,UAAU2/4C,iBAAiB,WAAW,IAAI,IAAIjg5C,KAAKY,KAAKgl+B,QAAQhl+B,KAAKgl+B,QAAQ5l+B,GAAGg/I,UAAUp+I,KAAKgl+B,QAAQ,CAAC,EAAEhl+B,KAAK2/4C,mBAAmB3/4C,KAAK2/4C,kBAAkBvhwC,UAAUp+I,KAAKy/4C,aAAaz/4C,KAAKy/4C,WAAW,MAAMz/4C,KAAK4/4C,mBAAmB5/4C,KAAK4/4C,kBAAkBxhwC,UAAUp+I,KAAKs/4C,mBAAmB,KAAKt/4C,KAAK2L,MAAM,UAAW,EAAEgz4C,GAAGj/4C,UAAUmg5C,UAAU,SAASzg5C,GAAG,OAAOY,KAAKgl+B,QAAQ5l+B,EAAEmsB,GAAG,EAAEoz3C,GAAGj/4C,UAAU676B,OAAO,SAASn86B,GAAG,IAAI,IAAID,KAAKa,KAAKgl+B,QAAQ,CAAC,IAAIjl+B,EAAEC,KAAKgl+B,QAAQ7l+B,GAAGY,EAAEun4C,iBAAiBvn4C,EAAEw76B,OAAOn86B,EAAG,CAAC,IAAIC,EAAED,EAAE6uH,GAAGjuH,KAAKy/4C,aAAaz/4C,KAAKy/4C,WAAWlY,WAAWvn4C,KAAK2/4C,kBAAkB,IAAI7G,GAAG154C,EAAEY,KAAKy/4C,WAAWl1vC,MAAMlrJ,EAAEymN,MAAM9lN,KAAKy/4C,WAAWlY,UAAS,GAAIvn4C,KAAK0/4C,kBAAkB1/4C,KAAK4/4C,kBAAkB,IAAI9G,GAAG154C,EAAEY,KAAK0/4C,gBAAgBrg5C,EAAE4pS,OAAOjpS,KAAK0/4C,gBAAgB,KAAM,EAAEf,GAAGj/4C,UAAU4xa,QAAQ,SAASlya,GAAGY,KAAKy/4C,YAAYz/4C,KAAKy/4C,WAAWnR,mBAAmBlv4C,EAAEY,KAAK2/4C,kBAAmB,EAAEhB,GAAGj/4C,UAAU8/2C,sBAAsB,SAASpg3C,EAAED,EAAEY,EAAEV,EAAEuB,EAAEI,EAAEV,EAAEQ,EAAEuB,EAAEG,GAAG,OAAOxC,KAAKs/4C,oBAAoBt/4C,KAAKs/4C,mBAAmBtB,YAAYh+4C,KAAKs/4C,mBAAmBrwzC,MAAM,CAACivzC,cAAc7+4C,EAAE++4C,oBAAoBx94C,EAAEkhG,MAAM9gG,EAAEysL,SAASztL,KAAKytL,SAAS6wtC,eAAe974C,EAAEogI,UAAU9hI,EAAEunC,OAAO/nC,EAAE694C,aAAan+4C,KAAKm+4C,aAAa974C,GAAGjD,EAAED,EAAEY,GAAG,CAAC,CAAC,EAAE4+4C,GAAGj/4C,UAAUog5C,oBAAoB,SAAS1g5C,EAAED,GAAG,IAAIY,EAAEC,KAAKs/4C,mBAAmB,GAAGv/4C,GAAGA,EAAEi+4C,YAAY,CAAC,IAAI3+4C,EAAEU,EAAE+94C,eAAel94C,EAAEzB,EAAEA,EAAEg3I,YAAY,GAAGn1I,EAAE3B,EAAE0g5C,mBAAmB1g5C,EAAEuB,GAAG,GAAGI,EAAE,IAAI,IAAIV,EAAEsQ,GAAGzR,GAAGA,EAAE0tB,QAAQ/rB,EAAEd,KAAKw94C,OAAOzlB,UAAU113C,EAAEvB,EAAE6E,EAAEnD,EAAE1B,EAAEmD,EAAEnB,EAAEhC,EAAEkC,EAAEnC,EAAE,CAAC8E,EAAEtD,EAAE4B,EAAEzB,EAAEQ,EAAEF,GAAGF,EAAE,EAAEA,EAAE5B,EAAEX,OAAOuC,IAAI,CAAC,IAAIF,EAAE1B,EAAEmxE,QAAQvvE,GAAG,GAAGtC,EAAEm73C,aAAa,CAAC,IAAIz43C,EAAEonvC,GAAG1nvC,GAAE,GAAI,IAAIpC,EAAEusB,OAAO,IAAItP,GAAGvd,KAAKw94C,OAAO5B,aAAa544C,EAAEhD,KAAKw94C,OAAOzlB,WAAW,QAAQ,MAAM,IAAIz33C,EAAEusB,OAAO,IAAItP,GAAGvd,KAAKw94C,OAAO5B,aAAal54C,GAAG,SAAS,IAAIC,EAAE5C,EAAE0ze,MAAM/we,EAAE9B,GAAGwC,EAAE,IAAI054C,GAAGp64C,EAAEL,EAAEG,EAAEM,EAAEH,GAAGS,EAAEs+K,KAAK7gL,EAAEzB,EAAEyC,KAAKuB,EAAG,CAAC,CAAC,EAAEu74C,GAAGj/4C,UAAUo/wB,QAAQ,WAAW,MAAO,WAAW9+wB,KAAK2L,OAAO,cAAc3L,KAAK2L,OAAO,YAAY3L,KAAK2L,KAAK,EAAEgz4C,GAAGj/4C,UAAUsg5C,eAAe,WAAW,OAAOhg5C,KAAKy/4C,cAAcng5C,OAAOgU,KAAKtT,KAAKy/4C,WAAWrR,kBAAkB/t4C,MAAM,EAAEs+4C,GAAGj/4C,UAAUug5C,cAAc,SAAS7g5C,GAAG,IAAID,EAAEa,KAAK6+4C,eAAe,GAAGz/4C,EAAE+z3C,aAAa,CAAC,IAAIpz3C,EAAE4F,EAAEvG,EAAE+z3C,cAAcpz3C,EAAE,aAAaC,KAAK6+4C,eAAerz3C,KAAKC,MAAM,IAAI1rB,EAAE,WAAY,MAAMX,EAAE62B,UAAUj2B,KAAK6+4C,eAAe,IAAIrz3C,KAAKpsB,EAAE62B,SAASwR,WAAW,GAAGznC,KAAK6+4C,eAAe,CAAC,IAAIx/4C,EAAEmsB,KAAKC,MAAM7qB,GAAE,EAAG,GAAGZ,KAAK6+4C,eAAex/4C,EAAEuB,GAAE,OAAQ,GAAGzB,EAAE,GAAGa,KAAK6+4C,eAAe1/4C,EAAEyB,GAAE,MAAQ,CAAC,IAAII,EAAEhB,KAAK6+4C,eAAe1/4C,EAAE6B,EAAEhB,KAAK6+4C,eAAex/4C,EAAEwD,KAAK8K,IAAI3M,EAAE,KAAKJ,GAAE,CAAG,MAAMA,GAAE,EAAGA,GAAGZ,KAAK++4C,sBAAsB/+4C,KAAK2L,MAAM,WAAW3L,KAAK++4C,oBAAoB,CAAE,CAAC,EAAEJ,GAAGj/4C,UAAUwg5C,iBAAiB,WAAW,GAAGlg5C,KAAK6+4C,eAAe,OAAO7+4C,KAAK++4C,oBAAoB,KAAK,GAAGl84C,KAAKgL,IAAI7N,KAAK++4C,oBAAoB,EAAE,KAAKl84C,KAAKgL,IAAI7N,KAAK6+4C,gBAAe,IAAKrz3C,MAAMic,UAAU5kC,KAAK6yF,IAAI,EAAE,IAAI,EAAE,EAAEipzC,GAAGj/4C,UAAU494C,gBAAgB,SAASl+4C,EAAED,GAAG,GAAGa,KAAKs/4C,oBAAoBt/4C,KAAKs/4C,mBAAmBtB,aAAa,IAAI1+4C,OAAOgU,KAAKlU,GAAGiB,OAAO,CAAC,IAAIN,EAAEC,KAAKs/4C,mBAAmBxB,eAAe,IAAI,IAAIz+4C,KAAKW,KAAKgl+B,QAAQ,GAAG7l+B,EAAEkV,MAAMqq4C,SAASr/4C,GAAG,CAAC,IAAIuB,EAAEZ,KAAKgl+B,QAAQ3l+B,GAAG2B,EAAEJ,EAAEk9B,OAAO,GAAGq4G,aAAa,oBAAoB71I,EAAEP,EAAEiB,GAAGF,EAAE1B,EAAE4B,GAAG,GAAGV,GAAGQ,GAAG,IAAIxB,OAAOgU,KAAKxS,GAAGT,OAAO,CAACO,EAAE2tE,OAAOztE,EAAER,EAAEN,KAAKy/4C,YAAYz/4C,KAAKy/4C,WAAWrR,kBAAkB,CAAC,GAAG,IAAI/r4C,EAAElD,GAAGA,EAAEkV,OAAOlV,EAAEkV,MAAMmgkC,SAASn1kC,GAAGgD,IAAIrC,KAAKm+4C,aAAat74C,KAAK8K,IAAI3N,KAAKm+4C,aAAa974C,EAAEul4C,YAAYhn4C,IAAK,CAAC,CAAC,CAAC,EAAE+94C,GAAGj/4C,UAAUyg5C,eAAe,WAAW,YAAO,IAASng5C,KAAKog5C,mBAAmB,EAAEzB,GAAGj/4C,UAAU2g5C,mBAAmB,WAAW,OAAQrg5C,KAAKog5C,qBAAqBpg5C,KAAKog5C,oBAAoBp84C,EAAEynB,KAAK,EAAEkz3C,GAAGj/4C,UAAU4g5C,cAAc,WAAWtg5C,KAAKog5C,yBAAoB,CAAO,EAAEzB,GAAGj/4C,UAAU6g5C,gBAAgB,SAASnh5C,GAAGY,KAAKog5C,oBAAoBp84C,EAAEynB,MAAMrsB,CAAE,EAAEu/4C,GAAGj/4C,UAAU8g5C,gBAAgB,SAASph5C,EAAED,GAAG,IAAI,IAAIY,EAAE,CAAC,EAAEV,EAAE,EAAEuB,EAAEzB,EAAEE,EAAEuB,EAAEP,OAAOhB,GAAG,EAAEU,EAAEa,EAAEvB,KAAI,EAAGW,KAAKi8J,aAAa78J,GAAGW,CAAE,EAAE4+4C,GAAGj/4C,UAAU+g5C,cAAc,SAASrh5C,EAAED,GAAG,IAAI,IAAIY,EAAE,EAAEV,EAAED,EAAEW,EAAEV,EAAEgB,OAAON,GAAG,EAAE,CAAC,IAAIa,EAAEZ,KAAKi8J,aAAa58J,EAAEU,IAAI,GAAGa,EAAE,IAAI,IAAII,EAAE,EAAEV,EAAEnB,EAAE6B,EAAEV,EAAED,OAAOW,GAAG,EAAE,GAAGJ,EAAEN,EAAEU,IAAI,OAAO,CAAE,CAAC,OAAO,CAAE,EAAE,IAAIqya,GAAG/ya,EAAEykD,YAAYwwM,GAAG,SAASn2P,GAAGY,KAAK0g5C,OAAO,CAACl62C,MAAM,CAACpnC,EAAE8wB,IAAI,SAASrjB,KAAK,KAAK45B,IAAI,CAACrnC,EAAE8wB,IAAI,OAAOrjB,KAAK,KAAKgiG,QAAQzvG,EAAE8wB,IAAI3rB,YAAY8ua,GAAGst+B,KAAK3g5C,KAAK0g5C,OAAOl62C,MAAO,EAAE+uN,GAAG71P,UAAU4oE,OAAO,WAAW+qW,GAAGst+B,KAAK3g5C,KAAK0g5C,OAAOj62C,KAAK,IAAIrnC,EAAEi0a,GAAG34U,iBAAiB16F,KAAK0g5C,OAAO7xyC,SAAS,OAAO,IAAIzvG,EAAEiB,SAASgza,GAAGxkU,QAAQ7uG,KAAK0g5C,OAAO7xyC,QAAQ7uG,KAAK0g5C,OAAOl62C,MAAMxmC,KAAK0g5C,OAAOj62C,KAAKrnC,EAAEi0a,GAAG34U,iBAAiB16F,KAAK0g5C,OAAO7xyC,SAASwkU,GAAGut+B,WAAW5g5C,KAAK0g5C,OAAOl62C,OAAO6sY,GAAGut+B,WAAW5g5C,KAAK0g5C,OAAOj62C,KAAK4sY,GAAGwt+B,cAAc7g5C,KAAK0g5C,OAAO7xyC,UAAUzvG,CAAC,EAAEA,EAAE0h5C,MAAMtH,GAAGp64C,EAAE2h5C,WAAW5m4C,GAAG/a,EAAE4h5C,gBAAgBzF,GAAGn84C,EAAE6h5C,kBAAkBl/3C,GAAG3iB,EAAEizuB,MAAM3ruB,GAAGtH,EAAE8h5C,QAAQ9E,GAAGh94C,EAAE+h5C,qBAAqBlj4C,GAAG7e,EAAEgi5C,gBAAgBzE,GAAGv94C,EAAEii5C,OAAO,KAAKji5C,EAAEijZ,WAAWxyY,GAAGzQ,EAAEki5C,qBAAqB/j4C,GAAGne,EAAEuqB,MAAM7b,GAAG1O,EAAEmi5C,QAAQrz4C,GAAG9O,EAAEoi5C,aAAan/b,GAAGjj9B,EAAEqi5C,WAAW7wqB,GAAGxxuB,EAAEsi5C,oBAAoBhY,GAAGtq4C,EAAEui5C,WAAW3T,GAAG5u4C,EAAEwi5C,cAAcjU,GAAGvu4C,EAAEyi5C,WAAWxX,GAAGjr4C,EAAE2s3C,OAAOuuB,GAAGl74C,EAAE0i5C,aAAa3H,GAAG/64C,EAAE2i5C,mBAAmB7G,GAAG974C,EAAE4i5C,OAAO,GAAG5i5C,EAAE6i5C,iBAAiBtG,GAAGv84C,EAAEoqC,MAAM5oC,EAAExB,EAAE8i5C,QAAQth5C,EAAExB,EAAE+i5C,WAAW/j4C,GAAGhf,EAAEgj5C,SAAS/V,GAAGjt4C,EAAEij5C,UAAU1n4C,GAAGvb,EAAEkj5C,eAAe394C,EAAEvF,EAAEmj5C,mBAAmBhtpC,GAAGn2P,EAAEoj5C,aAAap24C,GAAGhN,EAAEqj5C,cAAcvx3C,GAAG9xB,EAAEsj5C,mBAAmB51nC,GAAG1tR,EAAEuj5C,sBAAsBph4C,GAAGniB,EAAEwj5C,0BAA0Bzj4C,GAAG/f,EAAEyj5C,qBAAqB7j4C,GAAG5f,EAAE0j5C,sBAAsB7j4C,GAAG7f,EAAE2j5C,qBAAqBzj4C,GAAGlgB,EAAE4j5C,aAAa7qD,GAAG/41C,EAAEivV,QAAQyqjC,GAAG154C,EAAEyz3C,KAAK8rB,GAAGv/4C,EAAE6j5C,eAAepl4C,GAAGze,EAAE8j5C,UAAUlv3C,GAAG50B,EAAE+j5C,UAAUrs3C,GAAG13B,EAAEgk5C,UAAU5u3C,GAAGp1B,EAAEik5C,UAAU1s3C,GAAGv3B,EAAEkk5C,UAAU5r3C,GAAGt4B,EAAEmk5C,aAAa9u3C,GAAGr1B,EAAEok5C,gBAAgB5s3C,GAAGx3B,EAAEqk5C,gBAAgB/H,GAAGt84C,EAAEsk5C,gBAAgB704C,GAAGzP,EAAEuk5C,YAAYjV,GAAGtv4C,EAAEwk5C,YAAYxw4C,GAAGhU,EAAE+lB,IAAI,SAAS/lB,EAAED,EAAEY,GAAG,OAAOX,EAAE,GAAGD,EAAE,GAAGY,EAAE,GAAGX,EAAE,GAAGD,EAAE,GAAGY,EAAE,GAAGX,EAAE,GAAGD,EAAE,GAAGY,EAAE,GAAGX,CAAC,EAAEA,EAAEw44C,qBAAqB5hD,GAAG521C,EAAEyk5C,SAAS,SAASzk5C,EAAED,EAAEY,GAAG,IAAIX,EAAEiB,OAAO,OAAON,EAAE,KAAK,IAAI,IAAIV,EAAED,EAAEiB,OAAOO,EAAE,IAAInB,MAAML,EAAEiB,QAAQW,EAAE,KAAK5B,EAAE8lB,SAAQ,SAAU9lB,EAAEkB,GAAGnB,EAAEC,GAAE,SAAUA,EAAED,GAAGC,IAAI4B,EAAE5B,GAAGwB,EAAEN,GAAGnB,EAAE,KAAKE,GAAGU,EAAEiB,EAAEJ,EAAI,GAAI,GAAG,EAAExB,EAAE0k5C,OAAOzh5C,EAAEjD,EAAE+0xC,QAAQlxxC,EAAE7D,EAAEghS,QAAQp8R,EAAE5E,EAAE2k5C,wBAAwB,SAAS3k5C,KAAK4M,GAAGN,KAAKtM,EAAE4k5C,WAAW173C,KAAK,wBAAwB7c,IAAIO,GAAG,EAAG,EAAE5M,EAAEs5V,MAAM51V,EAAE1D,EAAE6k5C,eAAe,SAAS7k5C,GAAG,IAAID,EAAEmB,EAAEqywC,OAAO1tvC,OAAO,gBAAgB7lB,GAAGD,EAAE6nB,MAAM5nB,GAAGgC,MAAK,WAAY,OAAOhC,GAAI,GAAG,EAAEA,EAAEut7B,SAASwld,GAAG/y4C,EAAEmxB,MAAM,SAASnxB,GAAG,IAAID,EAAE,IAAIoa,GAAG,IAAI,OAAOpa,EAAE,GAAGC,EAAE,GAAGD,EAAE,GAAGC,EAAE,GAAGD,EAAE,GAAGC,EAAE,GAAGD,EAAE,GAAGC,EAAE,GAAGD,EAAE,GAAGC,EAAE,GAAGD,EAAE,GAAGC,EAAE,GAAGD,EAAE,GAAGC,EAAE,GAAGD,EAAE,GAAGC,EAAE,GAAGD,EAAE,GAAGC,EAAE,GAAGD,EAAE,GAAGC,EAAE,GAAGD,EAAE,IAAIC,EAAE,IAAID,EAAE,IAAIC,EAAE,IAAID,EAAE,IAAIC,EAAE,IAAID,EAAE,IAAIC,EAAE,IAAID,EAAE,IAAIC,EAAE,IAAID,EAAE,IAAIC,EAAE,IAAID,CAAC,EAAEC,EAAE8k5C,QAAQ3g5C,EAAEnE,EAAE+k5C,QAAQ,SAAS/k5C,GAAG,IAAID,EAAE,IAAIoa,GAAG,GAAG,OAAOpa,EAAE,GAAGC,EAAE,GAAGD,EAAE,GAAGC,EAAE,GAAGD,EAAE,GAAGC,EAAE,GAAGD,CAAC,EAAEC,EAAEgl5C,sBAAsBrY,GAAG3s4C,EAAE08T,OAAOx3T,EAAElF,EAAEc,OAAO,WAAW,IAAId,EAAE,IAAIma,GAAG,IAAI,OAAOA,IAAIyG,eAAe5gB,EAAE,GAAG,EAAEA,EAAE,GAAG,EAAEA,EAAE,GAAG,EAAEA,EAAE,GAAG,EAAEA,EAAE,GAAG,EAAEA,EAAE,GAAG,EAAEA,EAAE,GAAG,EAAEA,EAAE,GAAG,EAAEA,EAAE,IAAI,EAAEA,EAAE,IAAI,EAAEA,EAAE,IAAI,EAAEA,EAAE,IAAI,GAAGA,EAAE,GAAG,EAAEA,EAAE,GAAG,EAAEA,EAAE,IAAI,EAAEA,EAAE,IAAI,EAAEA,CAAC,EAAEA,EAAEil5C,SAAS,WAAW,IAAIjl5C,EAAE,IAAIma,GAAG,GAAG,OAAOA,IAAIyG,eAAe5gB,EAAE,GAAG,EAAEA,EAAE,GAAG,EAAEA,EAAE,GAAG,EAAEA,EAAE,GAAG,EAAEA,EAAE,GAAG,EAAEA,EAAE,GAAG,GAAGA,EAAE,GAAG,EAAEA,EAAE,GAAG,EAAEA,EAAE,GAAG,EAAEA,CAAC,EAAEA,EAAEkl5C,SAAS,WAAW,IAAIll5C,EAAE,IAAIma,GAAG,GAAG,OAAOA,IAAIyG,eAAe5gB,EAAE,GAAG,EAAEA,EAAE,GAAG,GAAGA,EAAE,GAAG,EAAEA,EAAE,GAAG,EAAEA,CAAC,EAAEA,EAAEml5C,qBAAqBpl5C,EAAEC,EAAEol5C,iBAAiBtt4C,GAAG9X,EAAEql5C,aAAa/l4C,GAAGtf,EAAEsl5C,iBAAiB,SAAStl5C,GAAG,MAAO,WAAWA,EAAEmN,KAAK,IAAI8r4C,GAAGj54C,GAAG,IAAIo54C,GAAGp54C,EAAEmN,MAAMnN,EAAE,EAAEA,EAAEq7L,MAAM,SAASr7L,EAAED,EAAEY,GAAG,IAAIV,EAAEF,EAAE,GAAGyB,EAAEzB,EAAE,GAAG6B,EAAE7B,EAAE,GAAGmB,EAAEP,EAAE,GAAGe,EAAEf,EAAE,GAAGsC,EAAEtC,EAAE,GAAG,OAAOX,EAAE,GAAGwB,EAAEyB,EAAErB,EAAEF,EAAE1B,EAAE,GAAG4B,EAAEV,EAAEjB,EAAEgD,EAAEjD,EAAE,GAAGC,EAAEyB,EAAEF,EAAEN,EAAElB,CAAC,EAAEA,EAAE2iK,UAAU,SAAS3iK,EAAED,EAAEY,GAAG,GAAGN,MAAMkS,QAAQxS,GAAG,CAAC,IAAIM,MAAMkS,QAAQ5R,IAAIZ,EAAEkB,SAASN,EAAEM,OAAO,OAAO,EAAG,IAAI,IAAIhB,EAAE,EAAEA,EAAEF,EAAEkB,OAAOhB,IAAI,IAAID,EAAED,EAAEE,GAAGU,EAAEV,IAAI,OAAO,EAAG,OAAO,CAAE,CAAC,GAAG,iBAAiBF,GAAG,OAAOA,GAAG,OAAOY,EAAE,CAAC,GAAG,iBAAiBA,EAAE,OAAO,EAAG,GAAGT,OAAOgU,KAAKnU,GAAGkB,SAASf,OAAOgU,KAAKvT,GAAGM,OAAO,OAAO,EAAG,IAAI,IAAIO,KAAKzB,EAAE,IAAIC,EAAED,EAAEyB,GAAGb,EAAEa,IAAI,OAAO,EAAG,OAAO,CAAE,CAAC,OAAOzB,IAAIY,CAAC,EAAEX,EAAEojL,IAAI,SAASpjL,EAAED,GAAG,OAAOC,EAAE,GAAGD,EAAE,GAAGC,EAAE,GAAGD,EAAE,GAAGC,EAAE,GAAGD,EAAE,EAAE,EAAEC,EAAEul5C,MAAM,SAASvl5C,EAAED,GAAG,OAAOC,EAAE,GAAGD,EAAE,GAAGC,EAAE,GAAGD,EAAE,GAAGC,EAAE,GAAGD,EAAE,GAAGC,EAAE,GAAGD,EAAE,EAAE,EAAEC,EAAEwl5C,KAAKpi5C,EAAEpD,EAAEyl5C,qBAAqBlw4C,GAAGvV,EAAE2oD,SAAS5lD,EAAE/C,EAAE0l5C,sBAAsB,SAAS1l5C,GAAGwM,KAAKZ,IAAIA,GAAG5J,MAAK,SAAUjC,GAAGA,EAAEmU,OAAOlS,MAAK,SAAUrB,GAAG,IAAI,IAAIV,EAAE,EAAEA,EAAEU,EAAEM,OAAOjB,EAAEC,IAAIF,EAAE8lB,OAAOllB,EAAEV,GAAK,GAAI,GAAG,EAAED,EAAEqy4C,uBAAuBN,GAAG/x4C,EAAEsy4C,oBAAoBJ,GAAGly4C,EAAE2l5C,uBAAuBnvD,GAAGx21C,EAAE4l5C,QAAQ/n4C,GAAG7d,EAAEiqZ,OAAOzmZ,EAAExD,EAAE6l5C,cAAcr04C,GAAGxR,EAAEo/zC,aAAal7zC,EAAElE,EAAE8l5C,aAAa,SAAS9l5C,EAAED,GAAG,IAAIY,EAAE8C,KAAK4wH,IAAIt0H,GAAGE,EAAEwD,KAAKuxH,IAAIj1H,GAAG,OAAOC,EAAE,GAAGC,EAAED,EAAE,GAAGW,EAAEX,EAAE,GAAG,EAAEA,EAAE,IAAIW,EAAEX,EAAE,GAAGC,EAAED,EAAE,GAAG,EAAEA,EAAE,GAAG,EAAEA,EAAE,GAAG,EAAEA,EAAE,GAAG,EAAEA,CAAC,EAAEA,EAAE+l5C,mBAAmBjV,GAAG9w4C,EAAEgm5C,uBAAuB9uD,GAAGl31C,EAAEim5C,eAAel44C,GAAG/N,EAAEwsK,SAASh9J,GAAGxP,EAAEkm5C,QAAQ,SAASlm5C,EAAED,GAAG,OAAO6O,GAAGpL,EAAExD,EAAE,CAACmN,KAAK,SAASpN,EAAE,EAAEC,EAAEmm5C,uBAAuBno4C,GAAGhe,EAAEom5C,YAAY144C,GAAG1N,EAAEqm5C,SAAS,SAASrm5C,EAAED,GAAG,IAAIY,EAAEV,EAAEuB,EAAEN,EAAE6E,SAASmE,cAAc,SAAS1I,EAAE8k5C,OAAM,EAAG9k5C,EAAE+k5C,YAAY,WAAWxm5C,EAAE,KAAKyB,EAAG,EAAE,IAAI,IAAII,EAAE,EAAEA,EAAE5B,EAAEiB,OAAOW,IAAI,CAAC,IAAIF,EAAER,EAAE6E,SAASmE,cAAc,UAAUvJ,EAAEX,EAAE4B,GAAG3B,OAAE,GAAQA,EAAEiB,EAAE6E,SAASmE,cAAc,MAAM2xB,KAAKl7B,GAAGV,EAAE23B,WAAW12B,EAAE6E,SAAS4xB,SAASC,UAAU33B,EAAEw6D,OAAOv5D,EAAE6E,SAAS4xB,SAAS8iC,QAAQj5D,EAAEgsV,YAAY,aAAa9rV,EAAE0T,IAAIpV,EAAE4B,GAAGJ,EAAE2T,YAAYzT,EAAG,CAAC,MAAO,CAAC+hD,OAAO,WAAW,EAAE,EAAEzjD,EAAEorL,SAASpxK,GAAGha,EAAEw/J,OAAO,SAASx/J,EAAED,GAAG,IAAIY,EAAEZ,EAAE,GAAGE,EAAEF,EAAE,GAAGyB,EAAEzB,EAAE,GAAG6B,EAAE7B,EAAE,GAAGmB,EAAEnB,EAAE,GAAG2B,EAAE3B,EAAE,GAAGkD,EAAElD,EAAE,GAAGqD,EAAErD,EAAE,GAAG2D,EAAE3D,EAAE,GAAG0B,EAAE1B,EAAE,GAAGyD,EAAEzD,EAAE,IAAIuD,EAAEvD,EAAE,IAAI6D,EAAE7D,EAAE,IAAIwD,EAAExD,EAAE,IAAIiE,EAAEjE,EAAE,IAAI8D,EAAE9D,EAAE,IAAIgD,EAAEpC,EAAEe,EAAEzB,EAAEiB,EAAE2D,EAAElE,EAAEsC,EAAEzB,EAAEN,EAAEgD,EAAEvD,EAAEyC,EAAExB,EAAEV,EAAEiD,EAAElE,EAAEgD,EAAEzB,EAAEE,EAAE8C,EAAEvE,EAAEmD,EAAExB,EAAEF,EAAE+D,EAAEjE,EAAE4B,EAAExB,EAAEqB,EAAEmB,EAAEV,EAAEH,EAAE9B,EAAEmC,EAAEU,EAAEZ,EAAEM,EAAER,EAAEI,EAAEa,EAAEf,EAAEG,EAAEP,EAAEM,EAAE2C,EAAE9E,EAAEuC,EAAER,EAAED,EAAEwB,EAAEtD,EAAEoC,EAAEP,EAAEC,EAAE+B,EAAE9B,EAAEK,EAAEP,EAAEU,EAAE0B,EAAE3C,EAAEuC,EAAET,EAAEE,EAAEb,EAAEqC,EAAEpC,EAAEM,EAAED,EAAEF,EAAEmB,EAAErB,EAAE,OAAOsB,GAAG1F,EAAE,IAAI0B,EAAE4D,EAAErC,EAAE8B,EAAE3B,EAAEmD,IAAIb,EAAE,EAAEA,GAAG1F,EAAE,IAAIwB,EAAEuD,EAAE9E,EAAEqF,EAAE1D,EAAE2E,GAAGb,EAAE1F,EAAE,IAAIuD,EAAEkC,EAAEzB,EAAEQ,EAAEX,EAAEM,GAAGuB,EAAE1F,EAAE,IAAIwD,EAAEgB,EAAE/C,EAAEgE,EAAEnC,EAAEa,GAAGuB,EAAE1F,EAAE,IAAIiD,EAAEwB,EAAEvD,EAAEoE,EAAElC,EAAEkB,GAAGoB,EAAE1F,EAAE,IAAIW,EAAE2E,EAAE9D,EAAEiD,EAAE7C,EAAE0C,GAAGoB,EAAE1F,EAAE,IAAIgE,EAAEE,EAAEN,EAAE6B,EAAE5B,EAAEgB,GAAGa,EAAE1F,EAAE,IAAI0D,EAAE+B,EAAEjC,EAAEU,EAAEZ,EAAEuB,GAAGa,EAAE1F,EAAE,IAAIkB,EAAE6D,EAAErD,EAAE+C,EAAErB,EAAEgB,GAAGsB,EAAE1F,EAAE,IAAIC,EAAEwE,EAAE9D,EAAEoE,EAAEnD,EAAEwC,GAAGsB,EAAE1F,EAAE,KAAK4D,EAAEY,EAAEjB,EAAEW,EAAEL,EAAEd,GAAG2C,EAAE1F,EAAE,KAAKyB,EAAEyC,EAAER,EAAEc,EAAElB,EAAEP,GAAG2C,EAAE1F,EAAE,KAAK0B,EAAE4C,EAAEpD,EAAEqF,EAAEtD,EAAEmB,GAAGsB,EAAE1F,EAAE,KAAKW,EAAE4F,EAAEtG,EAAEqE,EAAE9C,EAAE4C,GAAGsB,EAAE1F,EAAE,KAAKuD,EAAEsB,EAAEjB,EAAEO,EAAEH,EAAEjB,GAAG2C,EAAE1F,EAAE,KAAK0D,EAAES,EAAE1C,EAAEoD,EAAErB,EAAET,GAAG2C,EAAE1F,GAAG,IAAI,EAAEA,EAAEwm5C,OAAO/y4C,GAAGzT,EAAEym5C,YAAYph5C,EAAErF,EAAE0m5C,eAAe,SAAS1m5C,EAAED,GAAG,IAAIY,EAAE,GAAG,IAAI,IAAIV,KAAKD,EAAEC,KAAKF,GAAGY,EAAE8B,KAAKxC,GAAG,OAAOU,CAAC,EAAEX,EAAE2m5C,YAAY/34C,GAAG5O,EAAE4m5C,UAAU/h5C,EAAE7E,EAAE6m5C,iBAAiBpze,GAAGzz6B,EAAE8m5C,iBAAiB3vD,GAAGn31C,EAAE+m5C,sBAAsBnL,GAAG574C,EAAEsvN,IAAI/0M,GAAGva,EAAEooN,SAAShuM,GAAGpa,EAAEijO,IAAIgnqC,GAAGjq4C,EAAEgn5C,eAAe,SAAShn5C,GAAG,OAAOA,GAAG,EAAE,EAAEyD,KAAK6yF,IAAI,EAAE7yF,KAAKuK,KAAKvK,KAAKwnB,IAAIjrB,GAAGyD,KAAKsvN,KAAK,EAAE/yN,EAAEkQ,UAAU,SAASlQ,EAAED,GAAG,IAAIY,EAAEZ,EAAE,GAAGE,EAAEF,EAAE,GAAGyB,EAAEzB,EAAE,GAAG6B,EAAEjB,EAAEA,EAAEV,EAAEA,EAAEuB,EAAEA,EAAE,OAAOI,EAAE,IAAIA,EAAE,EAAE6B,KAAK4yF,KAAKz0F,IAAI5B,EAAE,GAAGD,EAAE,GAAG6B,EAAE5B,EAAE,GAAGD,EAAE,GAAG6B,EAAE5B,EAAE,GAAGD,EAAE,GAAG6B,EAAE5B,CAAC,EAAEA,EAAE2qJ,OAAOngJ,GAAGxK,EAAEin5C,yBAAyBx64C,GAAGzM,EAAEi5H,MAAM,SAASj5H,EAAED,EAAEY,EAAEV,EAAEuB,EAAEI,EAAEV,GAAG,IAAIQ,EAAE,GAAG3B,EAAEY,GAAGsC,EAAE,GAAGhD,EAAEuB,GAAG4B,EAAE,GAAGxB,EAAEV,GAAG,OAAOlB,EAAE,IAAI,EAAE0B,EAAE1B,EAAE,GAAG,EAAEA,EAAE,GAAG,EAAEA,EAAE,GAAG,EAAEA,EAAE,GAAG,EAAEA,EAAE,IAAI,EAAEiD,EAAEjD,EAAE,GAAG,EAAEA,EAAE,GAAG,EAAEA,EAAE,GAAG,EAAEA,EAAE,GAAG,EAAEA,EAAE,IAAI,EAAEoD,EAAEpD,EAAE,IAAI,EAAEA,EAAE,KAAKD,EAAEY,GAAGe,EAAE1B,EAAE,KAAKwB,EAAEvB,GAAGgD,EAAEjD,EAAE,KAAKkB,EAAEU,GAAGwB,EAAEpD,EAAE,IAAI,EAAEA,CAAC,EAAEA,EAAEkn5C,cAAc,SAASln5C,GAAG,OAAO,IAAIit4C,GAAGjt4C,GAAGsrzC,WAAW4iF,GAAG,GAAG,EAAElu4C,EAAE2pzC,IAAIsjF,GAAGjt4C,EAAEmn5C,oBAAoB,SAASnn5C,EAAED,EAAEY,EAAEV,EAAEuB,EAAEI,EAAEV,GAAGlB,EAAE614C,eAAe714C,EAAEon5C,eAAe,MAAM,IAAIpn5C,EAAE2n4C,aAAa3n4C,EAAEw04C,YAAY,CAAC,EAAEx04C,EAAEqn5C,iBAAgB,EAAG,IAAI3l5C,EAAE1B,EAAE0+B,OAAO,GAAGojG,OAAO7+H,EAAEjD,EAAE0+B,OAAO,GAAGqh2C,mBAAmBZ,QAAQ/73C,EAAE,CAAC,EAAE,GAAG,cAAcpD,EAAEo04C,aAAapx3C,KAAK,CAAC,IAAItf,EAAE1D,EAAEo04C,aAAa3y4C,EAAEiC,EAAEmlH,QAAQzlH,EAAEix4C,mBAAmB,CAACpx4C,EAAE,aAAa+73C,iBAAiB,IAAI7g3C,GAAGza,EAAEolH,SAAS5nH,GAAG+B,EAAE,aAAa+73C,iBAAiB,IAAI7g3C,GAAG1c,GAAGP,GAAI,CAAC,GAAG,cAAclB,EAAEu14C,aAAavy3C,KAAK,CAAC,IAAIxf,EAAExD,EAAEu14C,aAAajy4C,EAAEE,EAAEqlH,QAAQzlH,EAAEkk5C,mBAAmB,CAACrk5C,EAAE,aAAa+73C,iBAAiB,IAAI7g3C,GAAG3a,EAAEslH,SAAS5nH,GAAG+B,EAAE,aAAa+73C,iBAAiB,IAAI7g3C,GAAG7a,GAAGpC,GAAI,CAACkC,EAAEmk5C,eAAetk5C,EAAE,aAAa+73C,iBAAiB,IAAI7g3C,GAAGne,EAAEugC,KAAK,GAAGr/B,GAAGkC,EAAEok5C,eAAevk5C,EAAE,aAAa+73C,iBAAiB,IAAI7g3C,GAAGne,EAAEugC,KAAK,GAAGr/B,GAAGkC,EAAEqk5C,YAAYxk5C,EAAE,aAAa+73C,iBAAiB,IAAI7g3C,GAAG,KAAK,IAAI,IAAIva,EAAE,GAAGlC,EAAEqC,IAAI,oBAAoBR,EAAE,QAAQ7B,EAAEqC,IAAI,4BAA4B,UAAUrC,EAAEqC,IAAI,oBAAoBC,EAAEtC,EAAEqC,IAAI,qBAAqBF,EAAEnC,EAAEqC,IAAI,aAAahB,EAAE,WAAW,IAAInB,EAAEsC,EAAEW,GAAG5B,EAAEvB,EAAEqC,IAAI,aAAamxgB,SAAStzgB,EAAE,CAAC,EAAEV,GAAGuM,KAAK,KAAK/J,EAAEG,EAAEqxgB,SAAStzgB,EAAE,CAAC,EAAEV,GAAGO,EAAE2B,EAAEmk5C,eAAery4B,SAAStzgB,EAAE,CAAC,EAAEV,GAAGsC,EAAEJ,EAAEok5C,eAAety4B,SAAStzgB,EAAE,CAAC,EAAEV,GAAGoC,EAAE,CAACimqB,WAAW,CAAC,EAAEn/H,cAAS,GAAQrniB,EAAEnB,EAAEovB,KAAK7sB,EAAE,CAAC,EAAE,GAAG,GAAGpB,EAAE,CAAC,IAAIyB,EAAEzB,EAAEoC,WAAWf,EAAE,GAAG1C,EAAEqC,IAAI,uBAAuBmxgB,SAAStzgB,EAAE,CAAC,EAAEV,GAAGoD,EAAE,SAAStE,GAAG,IAAI,IAAID,EAAE,EAAEY,EAAEX,EAAED,EAAEY,EAAEM,OAAOlB,GAAG,EAAE,GAAGE,EAAEU,EAAEZ,GAAG4Z,WAAW,GAAGlG,GAAGkq3C,OAAO193C,IAAIwT,GAAG,qBAAqBxT,IAAIwT,GAAG,qBAAqBxT,IAAIwT,GAAG,+BAA+BxT,IAAIwT,GAAG,+BAA+BxT,GAAG,OAAO,EAAG,IAAIA,EAAE,OAAO,CAAE,CAA9O,CAAgPuE,GAAGJ,EAAE,EAAEK,EAAE/C,EAAEqC,IAAI,eAAemxgB,SAAStzgB,EAAE,CAAC,EAAEV,GAAGqF,EAAE7E,EAAEqC,IAAI,wBAAwB,IAAIwC,EAAE,CAAC,IAAIxB,EAAErD,EAAEqC,IAAI,sBAAsBmxgB,SAAStzgB,EAAE,CAAC,EAAEV,GAAGiD,EAAEY,EAAEyx1C,GAAG/x1C,EAAE,CAAC,GAAGM,EAAE0oa,KAAK/ra,EAAEqC,IAAI,eAAemxgB,SAAStzgB,EAAE,CAAC,EAAEV,GAAG+uB,KAAI,SAAUjwB,GAAG,OAAO,GAAGA,CAAE,GAAG,CAAC,IAAIsF,EAAE/B,EAAE,SAAS7B,EAAEqC,IAAI,gBAAgBmxgB,SAAStzgB,EAAE,CAAC,EAAEV,GAAGwE,EAAEhE,EAAEqC,IAAI,oBAAoB0C,EAAE,UAAUf,EAAE,GAAGhE,EAAEqC,IAAI,kBAAkBmxgB,SAAStzgB,EAAE,CAAC,EAAEV,GAAG,EAAEyF,EAAE,WAAW3G,EAAEm04C,wBAAwB5g4C,GAAG/O,KAAKlB,EAAE8miB,SAAS2l2B,GAAGht4C,EAAEhD,EAAEY,EAAEa,EAAEyB,EAAEwD,EAAE7C,EAAEa,EAAE,OAAOH,EAAEH,EAAEmr4C,GAAGll2B,UAAS,EAAG1kiB,EAAEjE,EAAEiC,GAAI,EAAE,IAAIH,GAAGgD,EAAE,CAAC,IAAI,IAAIzB,EAAE,SAASQ,EAAEiB,EAAE0pB,KAAI,SAAUjwB,GAAG,OAAOk31C,GAAGl31C,EAAG,IAAG,CAACsF,GAAGkB,GAAE,EAAGZ,EAAE,EAAEA,EAAEd,EAAE7D,OAAO2E,IAAI,CAAC,IAAIO,EAAErB,EAAEc,GAAG,IAAItC,EAAEimqB,WAAWpjqB,GAAG,GAAGK,EAAElD,EAAEimqB,WAAWpjqB,GAAG7C,EAAEimqB,WAAW,OAAQ,CAAC,IAAItkqB,EAAE8q4C,GAAGht4C,EAAEhD,EAAEY,EAAEa,EAAEyB,EAAEwD,EAAE7C,EAAE,SAASuC,EAAE7B,EAAEH,EAAEmr4C,GAAG/luB,YAAW,EAAG7jqB,EAAEjE,EAAEiC,GAAGuB,IAAI3B,EAAEimqB,WAAWpjqB,GAAGlB,EAAEuB,EAAE,IAAIvB,EAAEkr4C,gBAAgBlv4C,OAAQ,CAAC,CAAC0F,GAAI,KAAM,CAAC,SAASrB,IAAIA,EAAE4x1C,GAAGzy1C,IAAI,IAAIG,EAAEmr4C,GAAGht4C,EAAEhD,EAAEY,EAAEa,EAAEyB,EAAEwD,EAAE7C,EAAEa,EAAEa,EAAEhB,EAAEH,EAAEmr4C,GAAG/luB,YAAW,EAAG7jqB,EAAEjE,EAAEiC,GAAGkB,IAAItB,EAAEimqB,WAAWjkqB,GAAGV,GAAG+B,IAAI4M,GAAG/O,IAAIjB,GAAGS,IAAIV,EAAE8miB,SAAS2l2B,GAAGht4C,EAAEhD,EAAEY,EAAEa,EAAEyB,EAAEwD,EAAE7C,EAAEa,EAAEa,EAAEhB,EAAEH,EAAEmr4C,GAAGll2B,UAAS,EAAG1kiB,EAAEjE,EAAEiC,GAAI,CAAC,CAAC,IAAIwB,OAAE,EAAOe,GAAE,EAAG,GAAGrE,EAAEyvO,MAAMzvO,EAAEyvO,KAAK/lO,KAAK,CAAC,IAAItG,EAAE/E,EAAE2B,EAAEyvO,KAAK/lO,MAAMtG,IAAIE,EAAE,SAASlF,EAAED,EAAEY,GAAG,IAAIV,EAAE6w4C,GAAGnw4C,GAAGa,EAAEzB,EAAE,GAAGC,EAAE2u4C,YAAY,GAAG1u4C,EAAE8w4C,gBAAgBnv4C,EAAE7B,EAAE,GAAGC,EAAE2u4C,YAAY,GAAG1u4C,EAAE8zuB,cAAc,MAAO,CAAC5olB,MAAMnrJ,EAAE0/B,IAAI99B,EAAE8+F,OAAO9+F,EAAE5B,EAAE2u4C,YAAY,GAAGlv2C,KAAKj+B,EAAEi/F,MAAMj/F,EAAExB,EAAE2u4C,YAAY,GAAG,CAA9L,CAAgMnt4C,EAAEI,EAAEyvO,KAAK/lO,MAAM5J,EAAEqC,IAAI,eAAemxgB,SAAStzgB,EAAE,CAAC,EAAEV,GAAGQ,EAAEqC,IAAI,eAAemxgB,SAAStzgB,EAAE,CAAC,EAAEV,IAAI+E,EAAEjB,EAAEy/O,SAAI,IAASzkP,EAAE0n5C,SAAS1n5C,EAAE0n5C,SAAS1i5C,EAAEy/O,IAAIzkP,EAAE0n5C,WAAW1i5C,EAAEy/O,KAAKh/O,EAAE,wEAAwET,EAAEwqH,aAAaxvH,EAAEwvH,YAAY,IAAI9tH,EAAEqC,IAAI,eAAe273C,WAAW,MAAM1/3C,EAAEqn5C,iBAAgB,GAAK,CAAC,IAAIvg5C,EAAE6w1C,GAAGr01C,EAAEimqB,aAAajmqB,EAAE8miB,SAASpqiB,EAAEow4C,cAActp4C,GAAGA,EAAEsp4C,aAAatp4C,GAAG5B,IAAI,SAASlF,EAAED,EAAEY,EAAEV,EAAEuB,EAAEI,EAAEV,EAAEQ,EAAEuB,EAAEG,EAAEM,GAAG,IAAIjC,EAAEG,EAAE6l5C,YAAYvy4B,SAASn1gB,EAAE,CAAC,QAAG,IAAS0B,IAAIA,EAAEP,GAAG,IAAIsC,EAAEF,EAAEtD,EAAE0+B,OAAO,GAAGojG,OAAOl+H,EAAEN,EAAES,IAAI,eAAemxgB,SAASn1gB,EAAE,CAAC,EAAE2D,GAAGH,EAAEo01C,GAAGh31C,EAAE4oqB,YAAYvlqB,EAAE9C,EAAE,GAAG2C,EAAE7D,EAAEon5C,eAAepj5C,EAAEjB,EAAE/C,EAAEon5C,eAAe3l5C,EAAE,GAAGoD,EAAE7E,EAAEon5C,eAAe1l5C,EAAEwC,EAAElE,EAAEon5C,eAAe9j5C,EAAES,IAAI,kBAAkBI,EAAEb,EAAES,IAAI,gBAAgB/D,EAAEon5C,eAAe5i5C,EAAElB,EAAES,IAAI,gBAAgB/D,EAAEon5C,eAAehj5C,EAAEd,EAAES,IAAI,kBAAkB,IAAIN,KAAKsmC,GAAGzlC,EAAE,QAAQhB,EAAES,IAAI,4BAA4B,UAAUT,EAAES,IAAI,oBAAoBU,EAAE,QAAQnB,EAAES,IAAI,4BAA4B,UAAUT,EAAES,IAAI,oBAAoBwC,EAAEjD,EAAES,IAAI,oBAAoBgB,EAAEb,EAAE,EAAEoB,EAAEhC,EAAES,IAAI,iBAAiB9D,GAAG,SAASqF,IAAItF,EAAEm04C,wBAAwBxz4C,EAAEypiB,WAAW5miB,EAAEku4C,GAAGzx4C,EAAEU,EAAEypiB,SAAS9kiB,EAAEhC,EAAES,IAAI,yBAAyBH,EAAEI,IAAIT,IAAItD,EAAEyx4C,GAAGzx4C,EAAEsD,EAAE+B,EAAEhC,EAAES,IAAI,yBAAyBH,EAAEI,KAAK,IAAI0B,EAAE,SAAShE,EAAED,GAAGA,EAAEoD,EAAE,GAAGpD,EAAEoD,GAAG,MAAMpD,EAAEmC,EAAE,GAAGnC,EAAEmC,GAAG,MAAM,SAAS5D,EAAED,EAAEY,EAAEV,EAAEuB,EAAEI,EAAEV,EAAEQ,EAAEuB,EAAEG,EAAEM,EAAEjC,EAAE+B,EAAEF,EAAEM,EAAEL,EAAES,EAAEH,EAAEd,EAAE8B,EAAEX,EAAEC,EAAEK,EAAEJ,EAAEE,GAAG,IAAIG,EAAE8B,EAAExB,EAAEO,EAAEI,EAAEe,EAAEzG,EAAEy24C,qBAAqB124C,EAAEY,GAAGgG,EAAE,EAAE7B,EAAE,EAAE0B,EAAE,EAAEZ,EAAE,EAAEO,GAAG,EAAElB,GAAG,EAAEL,EAAE,CAAC,EAAEM,EAAE6tB,GAAG,IAAI9sB,EAAE,EAAEjB,EAAE,EAAE,QAAG,IAAStD,EAAEq+3C,mBAAmBjjwC,SAAS,uBAAuB72H,GAAGxB,EAAE/C,EAAEogI,OAAO/9H,IAAI,eAAemxgB,SAAShxgB,EAAE,CAAC,EAAEE,GAAG6rB,KAAI,SAAUjwB,GAAG,OAAO,GAAGA,CAAE,KAAI,GAAGgF,EAAEP,EAAE,KAAKwB,EAAE,GAAGvE,EAAEogI,OAAO/9H,IAAI,sBAAsBmxgB,SAAShxgB,EAAE,CAAC,EAAEE,GAAGY,EAAEyoa,IAAIzta,EAAEm04C,wBAAwBl04C,EAAEmqiB,SAAS,CAAC,IAAItjiB,EAAEpF,EAAEogI,OAAO/9H,IAAI,eAAemxgB,SAAShxgB,EAAE,CAAC,EAAEE,GAAG,GAAGkB,EAAE,IAAIsu4C,GAAG3w4C,EAAElD,EAAEqD,EAAEM,EAAEjC,EAAExB,EAAEmqiB,SAAS5miB,EAAEF,EAAEM,EAAEkD,GAAG5F,IAAIwE,EAAE,IAAIku4C,GAAG3w4C,EAAElD,EAAEqD,EAAEM,EAAEjC,EAAEP,EAAE8C,EAAEH,EAAED,EAAEkD,GAAI,CAAC,GAAGtF,EAAE,CAAC,IAAIsE,EAAEpE,EAAEogI,OAAO/9H,IAAI,eAAemxgB,SAAShxgB,EAAE,CAAC,GAAG2B,EAAE,SAASnE,EAAEogI,OAAO/9H,IAAI,iBAAiBwB,EAAEyt4C,GAAGxx4C,EAAEsE,EAAEtB,EAAEqB,GAAGR,EAAEnE,EAAE8x4C,GAAG9x4C,EAAE4E,EAAEtB,EAAEqB,QAAG,EAAOd,EAAE,IAAI6u4C,GAAG3w4C,EAAElD,EAAEqD,EAAEM,EAAEjC,EAAED,EAAEwC,EAAEH,GAAE,EAAGiC,GAAGa,EAAE,EAAEpB,EAAEtE,OAAO,IAAI0E,EAAE3F,EAAEu14C,aAAajv4C,EAAE,KAAK,WAAWX,EAAEqd,MAAM1c,EAAE,CAAC,IAAI5E,EAAEogI,OAAO/9H,IAAI,aAAamxgB,SAAShxgB,EAAE,CAAC,KAAK,GAAG,OAAOuB,EAAEzF,EAAEqnJ,SAAS,GAAG,+DAA+D,cAAc1hJ,EAAEqd,QAAQ1c,EAAE,CAAC,IAAInC,EAAEmj5C,mBAAmB,GAAGpy4B,SAAShxgB,EAAE,CAAC,EAAEE,GAAG,IAAID,EAAEmj5C,mBAAmB,GAAGpy4B,SAAShxgB,EAAE,CAAC,EAAEE,KAAK,GAAG,OAAOkC,EAAE,GAAG,QAAQb,EAAEzF,EAAEqnJ,SAAS,GAAG,+DAA+DrnJ,EAAEs04C,WAAWt04C,EAAEqxO,KAAK9rO,EAAEe,EAAEzB,EAAE9B,EAAEmB,GAAE,EAAGnE,EAAE0G,EAAE8lP,eAAe9lP,EAAEm9X,YAAY,EAAEx/X,GAAG+B,EAAEnG,EAAEqxO,KAAKkjqC,kBAAkBtz4C,OAAO,EAAEoE,IAAIP,EAAE,EAAEO,EAAEpE,OAAOjB,EAAEs04C,WAAWt04C,EAAEqxO,KAAKhsO,EAAEiB,EAAEzB,EAAE9B,EAAEmB,EAAEor4C,GAAGll2B,SAASrqiB,EAAE0G,EAAE8lP,eAAe9lP,EAAEm9X,YAAY,EAAEx/X,GAAGa,EAAEjF,EAAEqxO,KAAKkjqC,kBAAkBtz4C,OAAO,EAAG,CAAC,IAAI,IAAImF,KAAKnG,EAAEspqB,WAAW,CAAC,IAAIljqB,EAAEpG,EAAEspqB,WAAWnjqB,GAAG,IAAIG,EAAE,CAACrB,EAAE6tB,GAAG1sB,EAAE2qB,MAAM,IAAIhqB,EAAEtF,EAAEogI,OAAO/9H,IAAI,eAAemxgB,SAAShxgB,EAAE,CAAC,EAAEE,GAAGmC,EAAE,IAAIqt4C,GAAG3w4C,EAAElD,EAAEqD,EAAEM,EAAEjC,EAAE4E,EAAE7C,EAAEF,EAAEM,EAAEoD,EAAG,CAAC,IAAI5B,EAAE,IAAIiB,EAAE8p4C,gBAAgBlv4C,OAAO,GAAGuF,GAAG8w1C,GAAGt31C,EAAED,EAAEsG,EAAEzE,EAAEF,EAAEkC,EAAEM,EAAEX,EAAEkD,EAAExG,EAAEmqiB,SAASkl2B,GAAG/luB,WAAW+luB,GAAGC,eAAenq4C,EAAElF,OAAOgU,KAAKjU,EAAEspqB,YAAY,CAACnjqB,GAAGxB,EAAEuB,EAAEhC,EAAEC,GAAGgB,EAAE,KAAK,CAACnF,EAAEmqiB,WAAWxkiB,GAAG0x1C,GAAGt31C,EAAED,EAAEE,EAAEmqiB,SAASxoiB,EAAEF,EAAEkC,EAAEM,EAAEX,EAAEkD,EAAE6o4C,GAAGll2B,SAAS,CAAC,YAAYxliB,EAAEK,EAAEd,EAAEC,IAAI,IAAIwC,EAAEL,EAAEA,EAAEst4C,cAAc7z4C,EAAEi14C,kBAAkBh04C,OAAO2K,GAAGrF,EAAEA,EAAEwt4C,YAAY/z4C,EAAEi14C,kBAAkBh04C,OAAO0K,GAAGrG,EAAEA,EAAEuu4C,cAAc7z4C,EAAEi14C,kBAAkBh04C,OAAO6K,GAAGxG,EAAEA,EAAEyu4C,YAAY/z4C,EAAEi14C,kBAAkBh04C,OAAO4K,GAAG9G,EAAEA,EAAE8u4C,cAAc7z4C,EAAEi14C,kBAAkBh04C,OAAOiL,GAAGnH,EAAEA,EAAEgv4C,YAAY/z4C,EAAEi14C,kBAAkBh04C,OAAOmL,GAAG1G,EAAEA,EAAEmu4C,cAAc7z4C,EAAEi14C,kBAAkBh04C,OAAO+K,GAAGtG,EAAEA,EAAEqu4C,YAAY/z4C,EAAEi14C,kBAAkBh04C,OAAOoL,IAAI,EAAEC,GAAG,SAAStM,EAAED,GAAG,OAAOC,GAAGA,EAAE8z4C,eAAerw4C,KAAK8K,IAAIvO,EAAE8z4C,eAAe/z4C,GAAGA,CAAC,EAAEsM,GAAGC,GAAG/F,EAAE8F,IAAIA,GAAGC,GAAGhH,EAAE+G,IAAIA,GAAGC,GAAGvH,EAAEsH,IAAI,IAAIG,IAAIH,GAAGC,GAAG5G,EAAE2G,MAAM,EAAE,EAAE,EAAEG,KAAKH,IAAI/H,EAAE,IAAItE,EAAE814C,iBAAiB704C,QAAQ831C,GAAGw/C,YAAY9y4C,EAAE,yGAAoG,IAASvB,EAAE0g4C,SAAS5k4C,EAAEk44C,mBAAmBl44C,EAAEg24C,gBAAgB/04C,OAAOiD,EAAE0g4C,SAAS5k4C,EAAEg24C,gBAAgBtU,YAAY3h4C,EAAE8E,EAAE9E,EAAE6D,EAAEgB,EAAE67F,OAAO,EAAE77F,EAAE67F,OAAO,EAAE77F,EAAEi7B,QAAQ,EAAEj7B,EAAEi7B,QAAQ,EAAEj7B,EAAE66B,MAAM,EAAE76B,EAAE66B,MAAM,EAAE76B,EAAEwliB,WAAW,EAAEjkiB,EAAElB,EAAEC,EAAE0B,EAAEgF,GAAGD,GAAGG,GAAGD,GAAGK,GAAGE,GAAGJ,GAAG5I,EAAEoD,EAAEZ,EAAEe,EAAE7B,EAAE0H,GAAG,EAAEhJ,EAAEyC,EAAEjB,EAAEqH,GAAI,CAAhoF,CAAkoFrM,EAAEyB,EAAEC,EAAEf,EAAEV,EAAEuB,EAAEgC,EAAExD,EAAE0+B,OAAO,GAAG1+B,EAAEi14C,kBAAkBl14C,EAAE6d,MAAM7d,EAAEki4C,iBAAiBji4C,EAAE4d,MAAM/Z,EAAEM,EAAEG,EAAErB,EAAE4B,EAAEL,EAAEC,EAAEb,EAAE7D,EAAE6B,EAAEwB,EAAEM,EAAExC,EAAG,EAAE,GAAG,SAASqF,EAAE,IAAI,IAAIE,EAAE,EAAEE,EAAEos4C,GAAGhz4C,EAAE4lC,SAAS,EAAE,EAAE,KAAK,MAAMl/B,EAAEE,EAAE1F,OAAOwF,GAAG,EAAE,IAAI,IAAI3B,EAAE6B,EAAEF,GAAGD,EAAE,EAAEZ,EAAEkt4C,GAAGhu4C,EAAEZ,EAAEE,EAAEzD,EAAEypiB,UAAU7miB,EAAEtD,EAAE,GAAG8C,EAAE/C,EAAE2n4C,YAAY,MAAMnh4C,EAAEZ,EAAE3E,OAAOuF,GAAG,EAAE,CAAC,IAAIL,EAAEP,EAAEY,GAAGjD,GAAG+rzC,GAAGtvzC,EAAEuD,EAAEytB,KAAKjsB,EAAEoB,IAAIT,EAAEZ,EAAEqB,EAAG,MAAM,GAAG,gBAAgBI,EAAE,IAAI,IAAItB,EAAE,EAAEL,EAAE7E,EAAE4lC,SAAS1gC,EAAEL,EAAE3D,OAAOgE,GAAG,EAAE,CAAC,IAAIC,EAAEN,EAAEK,GAAG,GAAGC,EAAEjE,OAAO,EAAE,CAAC,IAAIgF,EAAE4s4C,GAAG3t4C,EAAEd,EAAEzD,EAAEypiB,UAAU7miB,EAAEtD,EAAE,GAAG8C,GAAGkD,GAAGP,EAAER,EAAEe,EAAG,CAAC,MAAM,GAAG,YAAYlG,EAAEoN,KAAK,IAAI,IAAInI,EAAE,EAAE8B,EAAEoi4C,GAAGnp4C,EAAE4lC,SAAS,GAAG3gC,EAAE8B,EAAE7F,OAAO+D,GAAG,EAAE,CAAC,IAAIc,EAAEgB,EAAE9B,GAAGa,EAAE40I,GAAG30I,EAAE,IAAIJ,EAAEI,EAAE,GAAG,IAAI8r4C,GAAG/r4C,EAAEhB,EAAEgB,EAAEjC,EAAE,GAAI,MAAM,GAAG,eAAe7D,EAAEoN,KAAK,IAAI,IAAI5H,EAAE,EAAEF,EAAEtF,EAAE4lC,SAASpgC,EAAEF,EAAEpE,OAAOsE,GAAG,EAAE,CAAC,IAAII,EAAEN,EAAEE,GAAGG,EAAEC,EAAE,IAAIis4C,GAAGjs4C,EAAE,GAAGd,EAAEc,EAAE,GAAG/B,EAAE,GAAI,MAAM,GAAG,UAAU7D,EAAEoN,KAAK,IAAI,IAAI7G,EAAE,EAAEF,EAAErG,EAAE4lC,SAASr/B,EAAEF,EAAEnF,OAAOqF,GAAG,EAAE,IAAI,IAAID,EAAE,EAAEW,EAAEZ,EAAEE,GAAGD,EAAEW,EAAE/F,OAAOoF,GAAG,EAAE,CAAC,IAAIjB,EAAE4B,EAAEX,GAAGX,EAAE,CAACN,GAAG,IAAIws4C,GAAGxs4C,EAAEP,EAAEO,EAAExB,EAAE,GAAI,CAAC,CAA7wI,CAA+wI5D,EAAE4B,EAAE0B,EAAE4B,EAAEjF,EAAEmD,EAAE3B,EAAE+B,EAAEW,EAAE8B,EAAE/E,EAAG,EAAE2D,EAAE,EAAEX,EAAElE,EAAEssC,SAASznC,EAAEX,EAAEjD,OAAO4D,GAAG,EAAE9B,IAAInB,GAAG5B,EAAE824C,+BAAgC,EAAE924C,EAAE6pK,YAAY,SAAS7pK,EAAED,EAAEY,EAAEV,EAAEuB,GAAG,IAAII,EAAEV,EAAE,EAAEuC,KAAKinC,IAAI3qC,EAAE,GAAG,OAAOC,EAAE,GAAGkB,EAAEP,EAAEX,EAAE,GAAG,EAAEA,EAAE,GAAG,EAAEA,EAAE,GAAG,EAAEA,EAAE,GAAG,EAAEA,EAAE,GAAGkB,EAAElB,EAAE,GAAG,EAAEA,EAAE,GAAG,EAAEA,EAAE,GAAG,EAAEA,EAAE,GAAG,EAAEA,EAAE,KAAK,EAAEA,EAAE,IAAI,EAAEA,EAAE,IAAI,EAAEA,EAAE,IAAI,EAAE,MAAMwB,GAAGA,IAAI,KAAKxB,EAAE,KAAKwB,EAAEvB,IAAI2B,EAAE,GAAG3B,EAAEuB,IAAIxB,EAAE,IAAI,EAAEwB,EAAEvB,EAAE2B,IAAI5B,EAAE,KAAK,EAAEA,EAAE,KAAK,EAAEC,GAAGD,CAAC,EAAEA,EAAEw5X,KAAK,SAASx5X,EAAED,GAAG,IAAI,IAAIY,EAAE,CAAC,EAAEV,EAAE,EAAEA,EAAEF,EAAEkB,OAAOhB,IAAI,CAAC,IAAIuB,EAAEzB,EAAEE,GAAGuB,KAAKxB,IAAIW,EAAEa,GAAGxB,EAAEwB,GAAI,CAAC,OAAOb,CAAC,EAAEX,EAAEu1E,OAAOx3D,GAAG/d,EAAE2n5C,yBAAyB7u3C,GAAG94B,EAAEmz3C,iBAAiBnn3C,GAAGhM,EAAEoz3C,mBAAmBln3C,GAAGlM,EAAE4n5C,QAAQtZ,GAAGtu4C,EAAE6n5C,cAAc,CAAC,OAAO,SAAS,eAAe,UAAU,UAAU,SAAS,UAAU7n5C,EAAE0rG,SAAS34F,GAAG/S,EAAE8n5C,6BAA6B,SAAS9n5C,GAAG,OAAOA,EAAE,CAACi+3C,aAAazo3C,GAAG0o3C,UAAUxg3C,KAAKG,GAAGrM,GAAG,oBAAoBxR,GAAGA,CAAC,EAAEA,EAAE+n5C,gBAAgB/s4C,GAAGhb,EAAEqmH,OAAO,SAASrmH,EAAED,EAAEY,GAAG,IAAIV,EAAEF,EAAE,GAAGyB,EAAEzB,EAAE,GAAG6B,EAAE7B,EAAE,GAAGmB,EAAEnB,EAAE,GAAG2B,EAAE+B,KAAK4wH,IAAI1zH,GAAGsC,EAAEQ,KAAKuxH,IAAIr0H,GAAG,OAAOX,EAAE,GAAGC,EAAEgD,EAAErB,EAAEF,EAAE1B,EAAE,GAAGwB,EAAEyB,EAAE/B,EAAEQ,EAAE1B,EAAE,GAAGC,GAAGyB,EAAEE,EAAEqB,EAAEjD,EAAE,GAAGwB,GAAGE,EAAER,EAAE+B,EAAEjD,CAAC,EAAEA,EAAE03H,QAAQ,SAAS13H,EAAED,EAAEY,GAAG,IAAIV,EAAEwD,KAAK4wH,IAAI1zH,GAAGa,EAAEiC,KAAKuxH,IAAIr0H,GAAGiB,EAAE7B,EAAE,GAAGmB,EAAEnB,EAAE,GAAG2B,EAAE3B,EAAE,GAAGkD,EAAElD,EAAE,GAAGqD,EAAErD,EAAE,GAAG2D,EAAE3D,EAAE,GAAG0B,EAAE1B,EAAE,IAAIyD,EAAEzD,EAAE,IAAI,OAAOA,IAAIC,IAAIA,EAAE,GAAGD,EAAE,GAAGC,EAAE,GAAGD,EAAE,GAAGC,EAAE,GAAGD,EAAE,GAAGC,EAAE,GAAGD,EAAE,GAAGC,EAAE,IAAID,EAAE,IAAIC,EAAE,IAAID,EAAE,IAAIC,EAAE,IAAID,EAAE,IAAIC,EAAE,IAAID,EAAE,KAAKC,EAAE,GAAG4B,EAAEJ,EAAE4B,EAAEnD,EAAED,EAAE,GAAGkB,EAAEM,EAAEkC,EAAEzD,EAAED,EAAE,GAAG0B,EAAEF,EAAEC,EAAExB,EAAED,EAAE,GAAGiD,EAAEzB,EAAEgC,EAAEvD,EAAED,EAAE,GAAGoD,EAAE5B,EAAEI,EAAE3B,EAAED,EAAE,GAAG0D,EAAElC,EAAEN,EAAEjB,EAAED,EAAE,IAAIyB,EAAED,EAAEE,EAAEzB,EAAED,EAAE,IAAIwD,EAAEhC,EAAEyB,EAAEhD,EAAED,CAAC,EAAEA,EAAE23H,QAAQ,SAAS33H,EAAED,EAAEY,GAAG,IAAIV,EAAEwD,KAAK4wH,IAAI1zH,GAAGa,EAAEiC,KAAKuxH,IAAIr0H,GAAGiB,EAAE7B,EAAE,GAAGmB,EAAEnB,EAAE,GAAG2B,EAAE3B,EAAE,GAAGkD,EAAElD,EAAE,GAAGqD,EAAErD,EAAE,GAAG2D,EAAE3D,EAAE,GAAG0B,EAAE1B,EAAE,GAAGyD,EAAEzD,EAAE,GAAG,OAAOA,IAAIC,IAAIA,EAAE,GAAGD,EAAE,GAAGC,EAAE,GAAGD,EAAE,GAAGC,EAAE,IAAID,EAAE,IAAIC,EAAE,IAAID,EAAE,IAAIC,EAAE,IAAID,EAAE,IAAIC,EAAE,IAAID,EAAE,IAAIC,EAAE,IAAID,EAAE,IAAIC,EAAE,IAAID,EAAE,KAAKC,EAAE,GAAG4B,EAAEJ,EAAE4B,EAAEnD,EAAED,EAAE,GAAGkB,EAAEM,EAAEkC,EAAEzD,EAAED,EAAE,GAAG0B,EAAEF,EAAEC,EAAExB,EAAED,EAAE,GAAGiD,EAAEzB,EAAEgC,EAAEvD,EAAED,EAAE,GAAGoD,EAAE5B,EAAEI,EAAE3B,EAAED,EAAE,GAAG0D,EAAElC,EAAEN,EAAEjB,EAAED,EAAE,GAAGyB,EAAED,EAAEE,EAAEzB,EAAED,EAAE,GAAGwD,EAAEhC,EAAEyB,EAAEhD,EAAED,CAAC,EAAEA,EAAE0iG,MAAM,SAAS1iG,EAAED,EAAEY,GAAG,IAAIV,EAAEU,EAAE,GAAGa,EAAEb,EAAE,GAAGiB,EAAEjB,EAAE,GAAG,OAAOX,EAAE,GAAGD,EAAE,GAAGE,EAAED,EAAE,GAAGD,EAAE,GAAGE,EAAED,EAAE,GAAGD,EAAE,GAAGE,EAAED,EAAE,GAAGD,EAAE,GAAGE,EAAED,EAAE,GAAGD,EAAE,GAAGyB,EAAExB,EAAE,GAAGD,EAAE,GAAGyB,EAAExB,EAAE,GAAGD,EAAE,GAAGyB,EAAExB,EAAE,GAAGD,EAAE,GAAGyB,EAAExB,EAAE,GAAGD,EAAE,GAAG6B,EAAE5B,EAAE,GAAGD,EAAE,GAAG6B,EAAE5B,EAAE,IAAID,EAAE,IAAI6B,EAAE5B,EAAE,IAAID,EAAE,IAAI6B,EAAE5B,EAAE,IAAID,EAAE,IAAIC,EAAE,IAAID,EAAE,IAAIC,EAAE,IAAID,EAAE,IAAIC,EAAE,IAAID,EAAE,IAAIC,CAAC,EAAEA,EAAEgo5C,QAAQ,SAASho5C,EAAED,EAAEY,GAAG,OAAOX,EAAE,GAAGD,EAAE,GAAGY,EAAEX,EAAE,GAAGD,EAAE,GAAGY,EAAEX,EAAE,GAAGD,EAAE,GAAGY,EAAEX,EAAE,GAAGD,EAAE,GAAGY,EAAEX,CAAC,EAAEA,EAAEio5C,QAAQ,SAASjo5C,EAAED,EAAEY,GAAG,OAAOX,EAAE,GAAGD,EAAE,GAAGY,EAAEX,EAAE,GAAGD,EAAE,GAAGY,EAAEX,EAAE,GAAGD,EAAE,GAAGY,EAAEX,CAAC,EAAEA,EAAEko5C,eAAe,SAASlo5C,EAAED,GAAGsM,GAAGrM,EAAEsM,GAAGvM,CAAE,EAAEC,EAAE0u3C,iBAAiB,SAAS1u3C,EAAED,EAAEY,GAAG,QAAG,IAASA,IAAIA,GAAE,GAAI,aAAa6U,IAAI,YAAYA,IAAI,WAAWA,GAAG,MAAM,IAAI4S,MAAM,qDAAqD1K,GAAG9Y,EAAE286B,WAAWvh7B,GAAGwV,GAAG,WAAWlC,GAAGvT,EAAE+d,KAAKnd,GAAGud,IAAK,EAAEle,EAAEmo5C,qBAAqB,SAASno5C,GAAG,IAAID,EAAEC,EAAE,GAAGW,EAAEX,EAAE,GAAGC,EAAED,EAAE,GAAG,OAAOW,GAAG,GAAGA,GAAG8C,KAAKsmC,GAAG,IAAI9pC,GAAGwD,KAAKsmC,GAAG,IAAI,CAACllC,EAAE9E,EAAE0D,KAAKuxH,IAAIr0H,GAAG8C,KAAK4wH,IAAIp0H,GAAG2D,EAAE7D,EAAE0D,KAAK4wH,IAAI1zH,GAAG8C,KAAK4wH,IAAIp0H,GAAGsG,EAAExG,EAAE0D,KAAKuxH,IAAI/0H,GAAG,EAAED,EAAEmlvC,OAAO,SAASnlvC,GAAG,IAAID,EAAEC,EAAE,GAAGW,EAAEX,EAAE,GAAG,OAAOD,EAAEA,EAAEY,EAAEA,CAAC,EAAEX,EAAE873C,UAAUzs3C,GAAGrP,EAAE81B,IAAI,SAAS91B,EAAED,EAAEY,GAAG,OAAOX,EAAE,GAAGD,EAAE,GAAGY,EAAE,GAAGX,EAAE,GAAGD,EAAE,GAAGY,EAAE,GAAGX,EAAE,GAAGD,EAAE,GAAGY,EAAE,GAAGX,CAAC,EAAEA,EAAEm5/B,WAAWg5Y,GAAGny4C,EAAEskvC,cAAc,SAAStkvC,EAAED,EAAEY,GAAG,IAAIV,EAAEF,EAAE,GAAGyB,EAAEzB,EAAE,GAAG6B,EAAE7B,EAAE,GAAG,OAAOC,EAAE,GAAGC,EAAEU,EAAE,GAAGa,EAAEb,EAAE,GAAGiB,EAAEjB,EAAE,GAAGX,EAAE,GAAGC,EAAEU,EAAE,GAAGa,EAAEb,EAAE,GAAGiB,EAAEjB,EAAE,GAAGX,EAAE,GAAGC,EAAEU,EAAE,GAAGa,EAAEb,EAAE,GAAGiB,EAAEjB,EAAE,GAAGX,CAAC,EAAEA,EAAEukvC,cAAc7puC,GAAG1a,EAAEg6H,UAAU,SAASh6H,EAAED,EAAEY,GAAG,IAAIV,EAAEuB,EAAEI,EAAEV,EAAEQ,EAAEuB,EAAEG,EAAEM,EAAEjC,EAAE+B,EAAEF,EAAEM,EAAEL,EAAE5C,EAAE,GAAGqD,EAAErD,EAAE,GAAGkD,EAAElD,EAAE,GAAG,OAAOZ,IAAIC,GAAGA,EAAE,IAAID,EAAE,GAAGwD,EAAExD,EAAE,GAAGiE,EAAEjE,EAAE,GAAG8D,EAAE9D,EAAE,IAAIC,EAAE,IAAID,EAAE,GAAGwD,EAAExD,EAAE,GAAGiE,EAAEjE,EAAE,GAAG8D,EAAE9D,EAAE,IAAIC,EAAE,IAAID,EAAE,GAAGwD,EAAExD,EAAE,GAAGiE,EAAEjE,EAAE,IAAI8D,EAAE9D,EAAE,IAAIC,EAAE,IAAID,EAAE,GAAGwD,EAAExD,EAAE,GAAGiE,EAAEjE,EAAE,IAAI8D,EAAE9D,EAAE,MAAMyB,EAAEzB,EAAE,GAAG6B,EAAE7B,EAAE,GAAGmB,EAAEnB,EAAE,GAAG2B,EAAE3B,EAAE,GAAGkD,EAAElD,EAAE,GAAGqD,EAAErD,EAAE,GAAG2D,EAAE3D,EAAE,GAAG0B,EAAE1B,EAAE,GAAGyD,EAAEzD,EAAE,GAAGuD,EAAEvD,EAAE,IAAI6D,EAAE7D,EAAE,IAAIC,EAAE,GAAGC,EAAEF,EAAE,GAAGC,EAAE,GAAGwB,EAAExB,EAAE,GAAG4B,EAAE5B,EAAE,GAAGkB,EAAElB,EAAE,GAAG0B,EAAE1B,EAAE,GAAGiD,EAAEjD,EAAE,GAAGoD,EAAEpD,EAAE,GAAG0D,EAAE1D,EAAE,GAAGyB,EAAEzB,EAAE,GAAGwD,EAAExD,EAAE,IAAIsD,EAAEtD,EAAE,IAAI4D,EAAE5D,EAAE,IAAIC,EAAEsD,EAAE7B,EAAEsC,EAAEvC,EAAEoC,EAAE9D,EAAE,IAAIC,EAAE,IAAIwB,EAAE+B,EAAEN,EAAEe,EAAER,EAAEK,EAAE9D,EAAE,IAAIC,EAAE,IAAI4B,EAAE2B,EAAEH,EAAEY,EAAEV,EAAEO,EAAE9D,EAAE,IAAIC,EAAE,IAAIkB,EAAEqC,EAAEG,EAAEM,EAAEJ,EAAEC,EAAE9D,EAAE,KAAKC,CAAC,EAAEA,EAAEoo5C,6BAA6B3q4C,GAAGzd,EAAEirC,SAASrnC,EAAE5D,EAAEqo5C,yBAAyB,SAASro5C,GAAG,IAAID,EAAE,GAAGY,EAAEX,EAAEmsB,GAAG,YAAO,IAASxrB,GAAGZ,EAAE0C,KAAK,CAACkwB,QAAQ,UAAUhyB,EAAE,0CAAqC,IAASX,EAAEkvH,QAAQnvH,EAAE0C,KAAK,CAACkwB,QAAQ,UAAUhyB,EAAE,uCAAuCX,EAAEk54C,eAAe,OAAOl54C,EAAEk54C,eAAe,OAAOl54C,EAAEk54C,eAAen54C,EAAE0C,KAAK,CAACkwB,QAAQ,UAAUhyB,EAAE,2DAA2DZ,CAAC,EAAEC,EAAEso5C,cAAc904C,GAAGxT,EAAEuo5C,cAAcp14C,GAAGnT,EAAEsd,OAAO,SAAStd,GAAG,IAAID,EAAE,GAAG,IAAI,IAAIY,KAAKX,EAAED,EAAE0C,KAAKzC,EAAEW,IAAI,OAAOZ,CAAC,EAAEC,EAAEwo5C,WAAWve,GAAGjq4C,EAAEkH,QAAQ,SAASlH,EAAEive,SAASxpe,EAAEzF,EAAEyo5C,cAAcxi5C,EAAEjG,EAAE8C,OAAO5B,EAAElB,EAAEwY,KAAK/W,CAAG,IAE1rwV+/T,EAAO,GAAa,SAAUzhU,GAAgB,SAASC,EAAED,GAAG,IAAIY,SAASZ,EAAE,GAAG,WAAWY,GAAG,YAAYA,GAAG,WAAWA,GAAG,MAAMZ,EAAE,OAAOmb,KAAKb,UAAUta,GAAG,GAAGM,MAAMkS,QAAQxS,GAAG,CAAC,IAAI,IAAIyB,EAAE,IAAIN,EAAE,EAAEjB,EAAEF,EAAEmB,EAAEjB,EAAEgB,OAAOC,GAAG,EAAEM,GAAGxB,EAAEC,EAAEiB,IAAI,IAAI,OAAOM,EAAE,GAAG,CAAC,IAAI,IAAII,EAAE1B,OAAOgU,KAAKnU,GAAGotC,OAAOzrC,EAAE,IAAI0B,EAAE,EAAEA,EAAExB,EAAEX,OAAOmC,IAAI1B,GAAGwZ,KAAKb,UAAUzY,EAAEwB,IAAI,IAAIpD,EAAED,EAAE6B,EAAEwB,KAAK,IAAI,OAAO1B,EAAE,GAAG,CAAC,SAASf,EAAEA,GAAG,IAAI,IAAIa,EAAE,GAAGN,EAAE,EAAEjB,EAAEF,EAAE8n5C,cAAc3m5C,EAAEjB,EAAEgB,OAAOC,GAAG,EAAEM,GAAG,IAAIxB,EAAEW,EAAEV,EAAEiB,KAAK,OAAOM,CAAC,CAAC,IAAIA,EAAE,SAASzB,GAAGa,KAAK8n5C,SAAS,CAAC,EAAE3o5C,GAAGa,KAAKyM,QAAQtN,EAAG,EAAEyB,EAAElB,UAAU+M,QAAQ,SAAStN,GAAGa,KAAK+n5C,cAAc,CAAC,EAAE/n5C,KAAKukY,QAAQ,CAAC,EAAEvkY,KAAKuuE,OAAOpvE,EAAE,GAAI,EAAEyB,EAAElB,UAAU6uE,OAAO,SAASnvE,EAAEwB,GAAG,IAAI,IAAIN,EAAEN,KAAKX,EAAE,EAAE2B,EAAE5B,EAAEC,EAAE2B,EAAEX,OAAOhB,GAAG,EAAE,CAAC,IAAIyB,EAAEE,EAAE3B,GAAGW,KAAK+n5C,cAAcjn5C,EAAEyqB,IAAIzqB,EAAE,IAAI0B,EAAExC,KAAKukY,QAAQzjY,EAAEyqB,IAAIpsB,EAAEul5C,iBAAiB5j5C,GAAG0B,EAAE083C,eAAe//3C,EAAE8l5C,cAAczi5C,EAAEqqB,QAAQ7sB,KAAK8n5C,SAAShn5C,EAAEyqB,YAAYvrB,KAAK8n5C,SAAShn5C,EAAEyqB,GAAI,CAAC,IAAI,IAAIlpB,EAAE,EAAEO,EAAEhC,EAAEyB,EAAEO,EAAEvC,OAAOgC,GAAG,EAAE,CAAC,IAAIxB,EAAE+B,EAAEP,UAAUrC,KAAK8n5C,SAASjn5C,UAAUb,KAAK+n5C,cAAcln5C,UAAUb,KAAKukY,QAAQ1jY,EAAG,CAACb,KAAKgo5C,iBAAiB,CAAC,EAAE,IAAI,IAAIll5C,EAAE,EAAEJ,EAAE,SAASvD,EAAEC,GAAG,IAAI,IAAIwB,EAAE,CAAC,EAAEN,EAAE,EAAEA,EAAEnB,EAAEkB,OAAOC,IAAI,CAAC,IAAIjB,EAAED,GAAGA,EAAED,EAAEmB,GAAGirB,KAAKxrB,EAAEZ,EAAEmB,IAAIlB,IAAIA,EAAED,EAAEmB,GAAGirB,IAAIlsB,GAAG,IAAI2B,EAAEJ,EAAEvB,GAAG2B,IAAIA,EAAEJ,EAAEvB,GAAG,IAAI2B,EAAEa,KAAK1C,EAAEmB,GAAI,CAAC,IAAIQ,EAAE,GAAG,IAAI,IAAI0B,KAAK5B,EAAEE,EAAEe,KAAKjB,EAAE4B,IAAI,OAAO1B,CAAC,CAAnL,CAAqL3B,EAAEud,OAAO1c,KAAK+n5C,eAAe/n5C,KAAK8n5C,UAAUhl5C,EAAEJ,EAAErC,OAAOyC,GAAG,EAAE,CAAC,IAAIH,EAAED,EAAEI,GAAGusB,KAAI,SAAUlwB,GAAG,OAAOmB,EAAEikY,QAAQplY,EAAEosB,GAAI,IAAGppB,EAAEQ,EAAE,GAAG,GAAG,SAASR,EAAE6qM,WAAW,CAAC,IAAI/pM,EAAEd,EAAE0F,QAAQ,GAAGzE,EAAEpD,KAAKgo5C,iBAAiB/k5C,GAAGG,IAAIA,EAAEpD,KAAKgo5C,iBAAiB/k5C,GAAG,CAAC,GAAG,IAAID,EAAEb,EAAEg0I,aAAa,oBAAoBlyI,EAAEb,EAAEJ,GAAGiB,IAAIA,EAAEb,EAAEJ,GAAG,IAAIiB,EAAEpC,KAAKc,EAAG,CAAC,CAAC,EAAE,IAAIrC,EAAE,SAASlB,GAAG,IAAIW,EAAE,CAAC,EAAEa,EAAE,GAAG,IAAI,IAAIN,KAAKlB,EAAE,CAAC,IAAIC,EAAED,EAAEkB,GAAGU,EAAEjB,EAAEO,GAAG,CAAC,EAAE,IAAI,IAAIQ,KAAKzB,EAAE,CAAC,IAAImD,EAAEnD,GAAGyB,GAAG,GAAG0B,GAAG,IAAIA,EAAE0qO,OAAOnuM,OAAO,IAAIv8B,EAAE0qO,OAAOluM,OAAO,CAAC,IAAI38B,EAAE,CAAC4B,EAAE,EAAEjB,EAAE,EAAEO,EAAEf,EAAE0qO,OAAOnuM,MAAM,EAAEn8B,EAAEJ,EAAE0qO,OAAOluM,OAAO,GAAGp+B,EAAEiB,KAAKQ,GAAGrB,EAAEF,GAAG,CAAC4yF,KAAKrxF,EAAEo6I,QAAQj6I,EAAEi6I,QAAS,CAAC,CAAC,CAAC,IAAI75I,EAAEzD,EAAE6n5C,QAAQpm5C,GAAGC,EAAE,IAAI1B,EAAE4h5C,WAAW,CAAChi3C,MAAMn8B,EAAEW,GAAG,EAAEy7B,OAAOp8B,EAAEA,GAAG,IAAI,IAAI,IAAIE,KAAK1D,EAAE,CAAC,IAAIsD,EAAEtD,EAAE0D,GAAG,IAAI,IAAIH,KAAKD,EAAE,CAAC,IAAIP,EAAEO,GAAGC,GAAG,GAAGR,GAAG,IAAIA,EAAE+qO,OAAOnuM,OAAO,IAAI58B,EAAE+qO,OAAOluM,OAAO,CAAC,IAAI/7B,EAAElD,EAAE+C,GAAGH,GAAG+wF,KAAKv0F,EAAE4h5C,WAAWjhxC,KAAK39H,EAAE+qO,OAAOrsO,EAAE,CAACoD,EAAE,EAAEjB,EAAE,GAAG,CAACiB,EAAEhB,EAAEgB,EAAE,EAAEjB,EAAEC,EAAED,EAAE,GAAGb,EAAE+qO,OAAQ,CAAC,CAAC,CAACltO,KAAKuqJ,MAAM1pJ,EAAEb,KAAKyqC,UAAU1qC,CAAE,EAAEZ,EAAE2rG,SAAS,aAAaxqG,GAAG,IAAIjB,EAAE,SAASD,GAAGY,KAAKw94C,OAAO,IAAIr+4C,EAAE8i5C,iBAAiB7i5C,EAAEo+4C,OAAO5B,YAAYx84C,EAAEo+4C,OAAO5l4C,KAAKxY,EAAEo+4C,OAAOzlB,UAAUpy3C,EAAEvG,EAAEo+4C,OAAOzlB,UAAU9z3C,EAAE7E,EAAEo+4C,OAAOzlB,UAAU/03C,GAAGhD,KAAKozV,IAAIh0V,EAAEg0V,IAAIpzV,KAAK2/B,KAAKvgC,EAAEugC,KAAK3/B,KAAK4uH,WAAWxvH,EAAEwvH,WAAW5uH,KAAKytL,SAASruL,EAAEquL,SAASztL,KAAK6H,OAAOzI,EAAEyI,OAAO7H,KAAK+m4C,YAAY/m4C,KAAKw94C,OAAOtB,kBAAkBl84C,KAAKio5C,mBAAmB7o5C,EAAE6o5C,mBAAmBjo5C,KAAKko5C,wBAAwB9o5C,EAAE8o5C,sBAAsBlo5C,KAAKmo5C,qBAAqB/o5C,EAAE+o5C,mBAAmBno5C,KAAKi03C,UAAU703C,EAAE603C,SAAU,EAAE,SAASjz3C,EAAE5B,EAAEW,EAAEa,GAAG,IAAI,IAAIN,EAAE,IAAInB,EAAEmi5C,qBAAqBvh5C,GAAGV,EAAE,EAAE2B,EAAE5B,EAAEC,EAAE2B,EAAEX,OAAOhB,GAAG,EAAE2B,EAAE3B,GAAG0g4C,YAAYz/3C,EAAEM,EAAG,CAAC,SAASE,EAAE1B,EAAEW,GAAG,IAAIa,EAAEzB,EAAEkm5C,eAAejm5C,EAAE2lE,SAAQ,SAAU3lE,EAAEwB,EAAEN,EAAEjB,GAAGD,EAAEW,EAAEX,GAAGwB,GAAGb,EAAE,KAAK,CAAC6n5C,WAAW,IAAIzo5C,EAAEyo5C,WAAWte,WAAW,IAAInq4C,EAAE4pzC,IAAInozC,IAAIyugC,QAAQzugC,EAAEuy3C,aAAa7y3C,EAAE21B,QAAQ52B,GAAK,IAAG,OAAO,WAAWuB,EAAEiiD,SAAS9iD,GAAI,CAAC,CAACV,EAAEK,UAAU6sB,MAAM,SAASntB,EAAEW,EAAEa,EAAEvB,EAAEyB,GAAG,IAAI0B,EAAExC,KAAKA,KAAKylB,OAAO,UAAUzlB,KAAKwP,KAAKpQ,EAAEY,KAAKq04C,kBAAkB,IAAIl14C,EAAE8h5C,kBAAkB,IAAI5+4C,EAAE,IAAIlD,EAAEii5C,gBAAgB9h5C,OAAOgU,KAAKlU,EAAE0+B,QAAQyO,QAAQ3pC,EAAE,IAAIzD,EAAEqi5C,aAAaxh5C,KAAKw94C,OAAOx94C,KAAKi03C,WAAWrx3C,EAAE274C,eAAe,GAAG,IAAI194C,EAAEiC,EAAEJ,EAAEC,EAAER,EAAE,CAAC,EAAEc,EAAE,CAAC6+N,aAAal/N,EAAE0y4C,iBAAiB,CAAC,EAAE9M,oBAAoB,CAAC,EAAE+M,kBAAkB,CAAC,EAAE7d,gBAAgB923C,GAAGwC,EAAErD,EAAEio5C,iBAAiBho5C,KAAK6H,QAAQ,IAAI,IAAI7E,KAAKI,EAAE,CAAC,IAAIa,EAAE7E,EAAE0+B,OAAO96B,GAAG,GAAGiB,EAAE,CAAC,IAAIA,EAAEqC,SAASnH,EAAEkve,SAAS,uBAAuBrue,KAAK6H,OAAO,YAAY7E,EAAE,oFAAoF,IAAI,IAAIO,EAAElB,EAAEwlB,OAAO7kB,GAAGQ,EAAE,GAAGK,EAAE,EAAEA,EAAEI,EAAE5D,OAAOwD,IAAI,CAAC,IAAIgC,EAAE5B,EAAEkuE,QAAQtuE,GAAGP,EAAEV,EAAE6we,MAAM5te,EAAE7C,GAAGQ,EAAE3B,KAAK,CAACswE,QAAQtsE,EAAE0lB,GAAGjoB,EAAE0Z,MAAMnZ,EAAEw93C,iBAAiB993C,GAAI,CAAC,IAAI,IAAIK,EAAE,EAAEF,EAAEN,EAAEJ,GAAGY,EAAEF,EAAErD,OAAOuD,GAAG,EAAE,CAAC,IAAIkB,EAAEpB,EAAEE,GAAGM,EAAEY,EAAE,GAAGZ,EAAE6+N,SAAS/iO,KAAK2/B,KAAK98B,KAAKyK,MAAMpJ,EAAE6+N,UAAU7+N,EAAE8+N,SAAShjO,KAAK2/B,MAAMz7B,EAAE8+N,SAAS,SAAS9+N,EAAE8oM,aAAahsM,EAAE8D,EAAE9E,KAAK2/B,KAAK/+B,IAAIuB,EAAE+B,EAAEqnB,IAAIrnB,EAAEyj4C,aAAa,CAAC3q3C,MAAMpa,EAAE274C,eAAel+4C,OAAOy9B,OAAOh5B,EAAE66B,KAAK3/B,KAAK2/B,KAAKivF,WAAW5uH,KAAK4uH,WAAWm4wC,YAAY/m4C,KAAK+m4C,YAAYsN,kBAAkBr04C,KAAKq04C,kBAAkBhT,iBAAiB993C,EAAEyx4C,SAASh14C,KAAK6H,UAAUu/3C,SAAS5j4C,EAAEP,EAAEjD,KAAKw94C,OAAOzlB,WAAWn13C,EAAE274C,eAAe184C,KAAKiD,EAAEuqB,KAAI,SAAUlwB,GAAG,OAAOA,EAAEosB,EAAG,KAAK,CAAC,CAAC,CAAC,IAAIpnB,EAAEhF,EAAE6m5C,UAAU/i5C,EAAEsy4C,mBAAkB,SAAUp24C,GAAG,OAAOG,OAAOgU,KAAKnU,GAAGkwB,IAAI8V,OAAQ,IAAG7lC,OAAOgU,KAAKnP,GAAG9D,OAAOhB,EAAEipB,KAAK,YAAY,CAAC8qU,IAAIpzV,KAAKozV,IAAIsiuB,OAAOvxjC,IAAG,SAAUhF,EAAEC,GAAGyB,IAAIA,EAAE1B,EAAE2D,EAAE1D,EAAEuG,EAAE/F,KAAK4C,GAAK,IAAGM,EAAE,CAAC,EAAE,IAAIyC,EAAEjG,OAAOgU,KAAKrQ,EAAEqy4C,kBAAkB/v4C,EAAElF,OAAOhB,EAAEipB,KAAK,YAAY,CAACmwN,MAAMlzO,EAAEsC,OAAO7H,KAAK6H,OAAO214C,OAAOx94C,KAAKw94C,OAAOjx4C,KAAK,UAAS,SAAUpN,EAAEC,GAAGyB,IAAIA,EAAE1B,EAAEuD,EAAEtD,EAAEuG,EAAE/F,KAAK4C,GAAK,IAAGE,EAAE,CAAC,EAAE,IAAI2B,EAAE/E,OAAOgU,KAAKrQ,EAAEul4C,qBAAqB,SAAS7i4C,IAAI,GAAG9E,EAAE,OAAOC,EAAED,GAAG,GAAGiC,GAAGJ,GAAGC,EAAE,CAAC,IAAIvD,EAAE,IAAIkB,EAAEwC,GAAG/C,EAAE,IAAIZ,EAAEwi5C,WAAWj/4C,EAAEC,GAAG,IAAI,IAAItD,KAAK8C,EAAE,CAAC,IAAIK,EAAEL,EAAE9C,GAAGmD,aAAarD,EAAE6j5C,cAAchi5C,EAAEwB,EAAEs7B,OAAO99B,KAAK2/B,KAAK/+B,GAAGzB,EAAEon5C,oBAAoB/j5C,EAAEM,EAAE1D,EAAEqrC,UAAU/nC,EAAE3C,EAAEou4C,cAAcnu4C,KAAKio5C,mBAAmBjo5C,KAAKw94C,OAAOzlB,YAAYv13C,EAAEwk4C,aAAaxk4C,aAAarD,EAAE0i5C,YAAYr/4C,aAAarD,EAAEsi5C,YAAYj/4C,aAAarD,EAAEui5C,uBAAuB1g5C,EAAEwB,EAAEs7B,OAAO99B,KAAK2/B,KAAK/+B,GAAG4B,EAAEi0X,YAAYxzX,EAAEjD,KAAKw94C,OAAOzlB,UAAUh43C,EAAEqu4C,kBAAmB,CAACpu4C,KAAKylB,OAAO,OAAO3kB,EAAE,KAAK,CAACkk+B,QAAQ7l+B,EAAEud,OAAOva,GAAG0qB,QAAO,SAAU1tB,GAAG,OAAQA,EAAEkpE,SAAU,IAAGy5J,aAAal/N,EAAEyx4C,kBAAkBr04C,KAAKq04C,kBAAkBqL,gBAAgBtg5C,EAAEmrJ,MAAMk1vC,WAAW1/4C,EAAEqo5C,SAASpo5C,KAAKmo5C,mBAAmBrl5C,EAAE,KAAKul5C,QAAQro5C,KAAKmo5C,mBAAmBzl5C,EAAE,KAAK4l5C,eAAeto5C,KAAKmo5C,mBAAmB/o5C,EAAEqrC,UAAU,MAAO,CAAC,CAACpmC,EAAEhE,OAAOhB,EAAEipB,KAAK,YAAY,CAACmwN,MAAMp0O,EAAEwD,OAAO7H,KAAK6H,OAAO214C,OAAOx94C,KAAKw94C,OAAOjx4C,KAAK,aAAY,SAAUpN,EAAEC,GAAGyB,IAAIA,EAAE1B,EAAEwD,EAAEvD,EAAEuG,EAAE/F,KAAK4C,GAAK,IAAGG,EAAE,CAAC,EAAEgD,EAAE/F,KAAKI,KAAM,EAAE,IAAIwC,EAAE,SAASrD,EAAEC,EAAEW,EAAEa,GAAGZ,KAAKiz3C,MAAM9z3C,EAAEa,KAAK+vJ,WAAW3wJ,EAAEY,KAAK033C,gBAAgB333C,EAAEC,KAAKo/4C,eAAex+4C,GAAGE,EAAEd,KAAKqhZ,QAAQ,CAAC,EAAErhZ,KAAKm3M,OAAO,CAAC,CAAE,EAAE30M,EAAE9C,UAAUonM,SAAS,SAAS1nM,EAAEW,GAAG,IAAIa,EAAEZ,KAAKM,EAAElB,EAAEg0V,IAAIpzV,KAAKqhZ,UAAUrhZ,KAAKqhZ,QAAQ,CAAC,GAAG,IAAIrgZ,KAAK5B,GAAGA,EAAE2lE,SAAS3lE,EAAE2lE,QAAQmj1C,wBAAwB,IAAI/o5C,EAAEoj5C,mBAAmBnj5C,EAAE2lE,SAASjkE,EAAEd,KAAKqhZ,QAAQ/gZ,GAAG,IAAIjB,EAAED,GAAG0B,EAAEmwB,MAAMjxB,KAAKo/4C,eAAehg5C,GAAE,SAAUA,EAAEC,GAAG,UAAUuB,EAAEygZ,QAAQ/gZ,GAAGlB,IAAIC,EAAE,OAAOyB,EAAE2kB,OAAO,OAAO7kB,EAAEu2M,OAAO72M,GAAGQ,EAAEf,EAAEX,GAAG,IAAIoD,EAAEnD,EAAEgwgC,QAAQhtgC,EAAE,CAAC,EAAEhD,EAAE42B,UAAU5zB,EAAE4zB,QAAQ52B,EAAE42B,SAAS52B,EAAE8z3C,eAAe9w3C,EAAE8w3C,aAAa9z3C,EAAE8z3C,cAAc,IAAIvw3C,EAAE,CAAC,EAAE,GAAG5B,EAAE,CAAC,IAAIH,EAAEG,EAAEsnE,SAASznE,IAAI+B,EAAE2l5C,eAAeju4C,KAAKiS,MAAMjS,KAAKb,UAAU5Y,IAAK,CAACC,EAAE8m5C,WAAWvo5C,EAAEuo5C,WAAW9m5C,EAAEyrB,MAAMltB,EAAEuo5C,WAAWhn5C,EAAEmvJ,WAAWnvJ,EAAE823C,gBAAgB923C,EAAEqy3C,OAAM,SAAU7z3C,EAAEwB,GAAG,GAAGxB,IAAIwB,EAAE,OAAOb,EAAEX,GAAGW,EAAE,KAAKZ,EAAEkqZ,OAAO,CAAC20/B,YAAYx74C,EAAET,MAAM,IAAInB,EAAEyB,EAAEO,GAAK,IAAGhC,EAAEu2M,OAAOv2M,EAAEu2M,QAAQ,CAAC,EAAEv2M,EAAEu2M,OAAO72M,GAAGQ,CAAG,GAAG,EAAE0B,EAAE9C,UAAU8o5C,WAAW,SAASrp5C,EAAEC,GAAG,IAAIW,EAAEC,KAAKY,EAAEZ,KAAKm3M,OAAO72M,EAAEnB,EAAEi0V,IAAI/zV,EAAEW,KAAK,GAAGY,GAAGA,EAAEN,GAAG,CAAC,IAAIU,EAAEJ,EAAEN,GAAGU,EAAEin5C,mBAAmB9o5C,EAAE8o5C,mBAAmB,IAAInn5C,EAAE,SAAS3B,EAAEyB,GAAG,IAAIN,EAAEU,EAAEyn5C,eAAeno5C,WAAWU,EAAEyn5C,eAAezn5C,EAAEurB,MAAMvrB,EAAE4m5C,WAAWvo5C,EAAE0wJ,WAAWhwJ,EAAE233C,gBAAgBr43C,EAAE4z3C,MAAM3y3C,IAAIlB,EAAED,EAAEyB,EAAG,EAAE,YAAYI,EAAEykB,OAAOzkB,EAAEyn5C,eAAe3n5C,EAAE,SAASE,EAAEykB,SAASzkB,EAAE4m5C,WAAW5m5C,EAAEurB,MAAMvrB,EAAE4m5C,WAAW5n5C,KAAK+vJ,WAAW/vJ,KAAK033C,gBAAgB133C,KAAKiz3C,MAAMny3C,GAAGA,IAAK,CAAC,EAAE0B,EAAE9C,UAAUgp5C,UAAU,SAASvp5C,EAAEC,GAAG,IAAIW,EAAEC,KAAKqhZ,QAAQzgZ,EAAEzB,EAAEi0V,IAAIrzV,GAAGA,EAAEa,IAAIb,EAAEa,GAAGqwB,QAAQlxB,EAAEa,GAAGqwB,eAAelxB,EAAEa,IAAIxB,GAAI,EAAEoD,EAAE9C,UAAUip5C,WAAW,SAASxp5C,EAAEC,GAAG,IAAIW,EAAEC,KAAKm3M,OAAOv2M,EAAEzB,EAAEi0V,IAAIrzV,GAAGA,EAAEa,WAAWb,EAAEa,GAAGxB,GAAI,EAAE,IAAIiD,EAAElD,EAAE+C,OAAOomQ,YAAY1lQ,EAAE,WAAW5C,KAAKm3M,OAAO,CAAC,CAAE,EAAE,SAASt2M,EAAE1B,EAAEC,GAAG,GAAG,IAAID,EAAEkB,OAAO,CAACyC,EAAE3D,EAAE,GAAGC,GAAG,IAAI,IAAIW,EAAE,EAAEA,EAAEZ,EAAEkB,OAAON,IAAI+C,EAAE3D,EAAEY,IAAIX,EAAG,CAAC,CAAC,SAAS0D,EAAE3D,EAAEC,GAAG,IAAI,IAAIW,EAAE,EAAEa,EAAE,EAAEN,EAAE,EAAEjB,EAAEF,EAAEkB,OAAOW,EAAE3B,EAAE,EAAEiB,EAAEjB,EAAE2B,EAAEV,IAAI,CAAC,IAAIQ,GAAG3B,EAAEmB,GAAG,GAAGnB,EAAE6B,GAAG,KAAK7B,EAAE6B,GAAG,GAAG7B,EAAEmB,GAAG,IAAIkC,EAAEzC,EAAEe,EAAEF,GAAGiC,KAAKmjH,IAAIjmH,IAAI8C,KAAKmjH,IAAIllH,GAAGf,EAAEyC,EAAE1B,EAAEA,EAAE0B,EAAEzC,EAAEA,EAAEyC,CAAE,CAACzC,EAAEa,GAAG,KAAKxB,GAAGD,EAAEm7D,SAAU,CAAC13D,EAAElD,UAAUonM,SAAS,SAAS1nM,EAAEW,GAAG,IAAIa,EAAExB,EAAEg0V,IAAI9yV,EAAElB,EAAEwoB,SAASvoB,EAAED,EAAEwp5C,aAAa5n5C,EAAEqB,GAAGhD,aAAagD,EAAErC,KAAKkmP,aAAa7mP,GAAGA,EAAEyB,EAAE,IAAI3B,EAAE+h5C,QAAQtg5C,EAAEI,EAAEV,GAAGN,KAAKm3M,OAAOn3M,KAAKm3M,QAAQ,CAAC,EAAEn3M,KAAKm3M,OAAOv2M,GAAGE,EAAEf,EAAE,KAAKe,EAAG,EAAE8B,EAAElD,UAAUwmP,aAAa,SAAS9mP,GAAGY,KAAK6o5C,iBAAiB7o5C,KAAK8o5C,yBAAyB9o5C,KAAK6o5C,gBAAgB,IAAItgpC,gBAAgBnpQ,EAAE2/B,MAAM3/B,EAAE4/B,QAAQh/B,KAAK8o5C,uBAAuB9o5C,KAAK6o5C,gBAAgB971C,WAAW,OAAO/sD,KAAK6o5C,gBAAgB9p3C,MAAM3/B,EAAE2/B,MAAM/+B,KAAK6o5C,gBAAgB7p3C,OAAO5/B,EAAE4/B,OAAOh/B,KAAK8o5C,uBAAuBpxqC,UAAUt4O,EAAE,EAAE,EAAEA,EAAE2/B,MAAM3/B,EAAE4/B,QAAQ,IAAIj/B,EAAEC,KAAK8o5C,uBAAuB5iqC,cAAc,GAAG,EAAE9mP,EAAE2/B,MAAM,EAAE3/B,EAAE4/B,OAAO,GAAG,OAAOh/B,KAAK8o5C,uBAAuBrxqC,UAAU,EAAE,EAAEz3O,KAAK6o5C,gBAAgB9p3C,MAAM/+B,KAAK6o5C,gBAAgB7p3C,QAAQ,IAAI7/B,EAAEkj5C,UAAU,CAACtj3C,MAAMh/B,EAAEg/B,MAAMC,OAAOj/B,EAAEi/B,QAAQj/B,EAAEyP,KAAK,EAAE5M,EAAElD,UAAUip5C,WAAW,SAASxp5C,GAAG,IAAIC,EAAEY,KAAKm3M,OAAOp3M,EAAEZ,EAAEi0V,IAAIh0V,GAAGA,EAAEW,WAAWX,EAAEW,EAAG,EAAE,IAAI2C,EAAEvD,EAAEyo5C,WAAWre,kBAAkB7p4C,UAAUyp4C,UAAUxm4C,EAAE,SAASvD,GAAGY,KAAK+o5C,SAAS3p5C,EAAEY,KAAKuqK,OAAOprK,EAAEki5C,OAAOrh5C,KAAKuM,KAAKnN,EAAEmN,KAAKvM,KAAKwoC,WAAWppC,EAAEi7D,KAAK,OAAOj7D,IAAIktC,MAAMltC,EAAEmsB,MAAMvrB,KAAKurB,GAAGoK,SAASv2B,EAAEmsB,GAAG,IAAK,EAAE5oB,EAAEjD,UAAUon4C,aAAa,WAAW,GAAG,IAAI9m4C,KAAK+o5C,SAASx84C,KAAK,CAAC,IAAI,IAAInN,EAAE,GAAGW,EAAE,EAAEa,EAAEZ,KAAK+o5C,SAAShk3C,SAAShlC,EAAEa,EAAEP,OAAON,GAAG,EAAE,CAAC,IAAIO,EAAEM,EAAEb,GAAGX,EAAEyC,KAAK,CAAC,IAAI1C,EAAE+i5C,QAAQ5h5C,EAAE,GAAGA,EAAE,KAAM,CAAC,OAAOlB,CAAC,CAAC,IAAI,IAAIC,EAAE,GAAG2B,EAAE,EAAEF,EAAEd,KAAK+o5C,SAAShk3C,SAAS/jC,EAAEF,EAAET,OAAOW,GAAG,EAAE,CAAC,IAAI,IAAIwB,EAAE,GAAGH,EAAE,EAAEO,EAAE9B,EAAEE,GAAGqB,EAAEO,EAAEvC,OAAOgC,GAAG,EAAE,CAAC,IAAIxB,EAAE+B,EAAEP,GAAGG,EAAEX,KAAK,IAAI1C,EAAE+i5C,QAAQrh5C,EAAE,GAAGA,EAAE,IAAK,CAACxB,EAAEwC,KAAKW,EAAG,CAAC,OAAOnD,CAAC,EAAEsD,EAAEjD,UAAUyp4C,UAAU,SAAShq4C,EAAEC,EAAEW,GAAG,OAAO2C,EAAE9C,KAAKI,KAAKb,EAAEC,EAAEW,EAAE,EAAE,IAAIoC,EAAE,SAAS/C,GAAGY,KAAK89B,OAAO,CAACii3C,kBAAkB//4C,MAAMA,KAAK0K,KAAK,oBAAoB1K,KAAKuqK,OAAOprK,EAAEki5C,OAAOrh5C,KAAKK,OAAOjB,EAAEiB,OAAOL,KAAK60rC,UAAUz1rC,CAAE,EAAE+C,EAAEzC,UAAUyyE,QAAQ,SAAShzE,GAAG,OAAO,IAAIwD,EAAE3C,KAAK60rC,UAAU11rC,GAAG,EAAE,IAAI8D,EAAE9D,EAAEyo5C,WAAWre,kBAAkBnm4C,EAAEJ,EAAE,SAASA,EAAE7D,EAAEC,GAAGY,KAAKmpB,QAAQ/pB,GAAG,CAAC,EAAEY,KAAK0rC,SAASvsC,EAAEa,KAAKK,OAAOlB,EAAEkB,MAAO,CAAC,SAAS4D,EAAE9E,EAAEC,GAAGY,KAAKurB,GAAG,iBAAiBpsB,EAAEosB,GAAGpsB,EAAEosB,QAAG,EAAOvrB,KAAKuM,KAAKpN,EAAEoN,KAAKvM,KAAKgp5C,YAAY,IAAI7p5C,EAAEoN,KAAK,CAACpN,EAAE4lC,UAAU5lC,EAAE4lC,SAAS/kC,KAAKwoC,WAAWrpC,EAAEk7D,KAAKr6D,KAAKuqK,OAAOnrK,GAAG,IAAK,CAAC4D,EAAEtD,UAAUyyE,QAAQ,SAAShzE,GAAG,OAAO,IAAI8E,EAAEjE,KAAK0rC,SAASvsC,GAAGa,KAAKmpB,QAAQohJ,OAAO,EAAEtmK,EAAEvE,UAAUon4C,aAAa,WAAW,IAAI1n4C,EAAEY,KAAKgp5C,YAAYhp5C,KAAK+kC,SAAS,GAAG,IAAI,IAAIhlC,EAAE,EAAEA,EAAEX,EAAEiB,OAAON,IAAI,CAAC,IAAI,IAAIa,EAAExB,EAAEW,GAAGO,EAAE,GAAGjB,EAAE,EAAEA,EAAEuB,EAAEP,OAAOhB,IAAIiB,EAAEuB,KAAK,IAAI1C,EAAE+i5C,QAAQth5C,EAAEvB,GAAG,GAAGuB,EAAEvB,GAAG,KAAKW,KAAK+kC,SAASljC,KAAKvB,EAAG,CAAC,OAAON,KAAK+kC,QAAQ,EAAE9gC,EAAEvE,UAAU2rC,KAAK,WAAWrrC,KAAK+kC,UAAU/kC,KAAK8m4C,eAAe,IAAI,IAAI3n4C,EAAEa,KAAK+kC,SAAS3lC,EAAE,IAAIW,GAAE,IAAKa,EAAE,IAAIN,GAAE,IAAKjB,EAAE,EAAEA,EAAEF,EAAEkB,OAAOhB,IAAI,IAAI,IAAI2B,EAAE7B,EAAEE,GAAGyB,EAAE,EAAEA,EAAEE,EAAEX,OAAOS,IAAI,CAAC,IAAI0B,EAAExB,EAAEF,GAAG1B,EAAEyD,KAAKgL,IAAIzO,EAAEoD,EAAEyB,GAAGlE,EAAE8C,KAAK8K,IAAI5N,EAAEyC,EAAEyB,GAAGrD,EAAEiC,KAAKgL,IAAIjN,EAAE4B,EAAEQ,GAAG1C,EAAEuC,KAAK8K,IAAIrN,EAAEkC,EAAEQ,EAAG,CAAC,MAAO,CAAC5D,EAAEwB,EAAEb,EAAEO,EAAE,EAAE2D,EAAEvE,UAAUyp4C,UAAUlm4C,EAAEvD,UAAUyp4C,UAAU,IAAI5l4C,EAAEM,EAAEL,EAAEJ,EAAE,SAASS,EAAEzE,GAAG,IAAIW,EAAE,IAAIZ,EAAE4pzC,IAAI,OAAO,SAAS5pzC,EAAEC,GAAG,IAAI,IAAIW,KAAKZ,EAAE2+B,OAAO1+B,EAAE0tzC,aAAa,EAAEjnzC,EAAE1G,EAAE2+B,OAAO/9B,GAAI,CAApE,CAAsEX,EAAEW,GAAGA,EAAEuoE,QAAQ,CAAC,SAASziE,EAAE1G,EAAEC,GAAG,IAAIW,EAAEX,EAAEguzC,iBAAiB,GAAGjuzC,EAAEmH,SAAS,GAAGlH,EAAEkuzC,iBAAiB,EAAEnuzC,EAAEuL,MAAM,IAAItL,EAAEguzC,iBAAiB,EAAEjuzC,EAAEorK,QAAQ,MAAM,IAAI3pK,EAAE,CAAC0S,KAAK,GAAGoJ,OAAO,GAAGus4C,SAAS,CAAC,EAAEC,WAAW,CAAC,GAAG,IAAInp5C,EAAE,EAAEA,EAAEZ,EAAEkB,OAAON,IAAIa,EAAEuxE,QAAQhzE,EAAEgzE,QAAQpyE,GAAGX,EAAE0tzC,aAAa,EAAExpzC,EAAE1C,GAAG,IAAIN,EAAEM,EAAE0S,KAAK,IAAIvT,EAAE,EAAEA,EAAEO,EAAED,OAAON,IAAIX,EAAEkuzC,iBAAiB,EAAEhtzC,EAAEP,IAAI,IAAIV,EAAEuB,EAAE8b,OAAO,IAAI3c,EAAE,EAAEA,EAAEV,EAAEgB,OAAON,IAAIX,EAAE0tzC,aAAa,EAAE3ozC,EAAE9E,EAAEU,GAAI,CAAC,SAASuD,EAAEnE,EAAEC,GAAG,IAAIW,EAAEZ,EAAEgzE,aAAQ,IAASpyE,EAAEwrB,IAAInsB,EAAEguzC,iBAAiB,EAAErtzC,EAAEwrB,IAAInsB,EAAE0tzC,aAAa,EAAElpzC,EAAEzE,GAAGC,EAAEguzC,iBAAiB,EAAErtzC,EAAEwM,MAAMnN,EAAE0tzC,aAAa,EAAE5ozC,EAAEnE,EAAG,CAAC,SAAS6D,EAAEzE,EAAEC,GAAG,IAAIW,EAAEZ,EAAEgzE,QAAQvxE,EAAEzB,EAAEmU,KAAKhT,EAAEnB,EAAEud,OAAOrd,EAAEF,EAAE8p5C,SAASjo5C,EAAE7B,EAAE+p5C,WAAW,IAAI,IAAIpo5C,KAAKf,EAAEyoC,WAAW,CAAC,IAAIhmC,EAAEnD,EAAEyB,QAAG,IAAS0B,IAAI5B,EAAEiB,KAAKf,GAAGzB,EAAEyB,GAAG0B,EAAE5B,EAAEP,OAAO,GAAGjB,EAAEkqzC,YAAY9mzC,GAAG,IAAIH,EAAEtC,EAAEyoC,WAAW1nC,GAAG8B,SAASP,EAAE,WAAWO,GAAG,YAAYA,GAAG,WAAWA,IAAIP,EAAEiY,KAAKb,UAAUpX,IAAI,IAAIxB,EAAE+B,EAAE,IAAIP,EAAES,EAAE9B,EAAEH,QAAG,IAASiC,IAAIxC,EAAEuB,KAAKQ,GAAGrB,EAAEH,GAAGiC,EAAExC,EAAED,OAAO,GAAGjB,EAAEkqzC,YAAYxmzC,EAAG,CAAC,CAAC,SAASY,EAAEvE,EAAEC,GAAG,OAAQA,GAAG,IAAI,EAAED,EAAE,CAAC,SAAS2F,EAAE3F,GAAG,OAAOA,GAAG,EAAEA,GAAG,EAAE,CAAC,SAAS+E,EAAE/E,EAAEC,GAAG,IAAI,IAAIW,EAAEZ,EAAE2n4C,eAAelm4C,EAAEzB,EAAEoN,KAAKjM,EAAE,EAAEjB,EAAE,EAAE2B,EAAEjB,EAAEM,OAAOS,EAAE,EAAEA,EAAEE,EAAEF,IAAI,CAAC,IAAI0B,EAAEzC,EAAEe,GAAGuB,EAAE,EAAE,IAAIzB,IAAIyB,EAAEG,EAAEnC,QAAQjB,EAAEkqzC,YAAY5lzC,EAAE,EAAErB,IAAI,IAAI,IAAIO,EAAE,IAAIhC,EAAE4B,EAAEnC,OAAO,EAAEmC,EAAEnC,OAAOQ,EAAE,EAAEA,EAAE+B,EAAE/B,IAAI,CAAC,IAAIA,GAAG,IAAID,GAAGxB,EAAEkqzC,YAAY5lzC,EAAE,EAAEd,EAAE,IAAI,IAAIE,EAAEN,EAAE3B,GAAGoD,EAAE3D,EAAEoC,EAAEF,EAAE3B,GAAGmC,EAAE3D,EAAED,EAAEkqzC,YAAYxkzC,EAAEhC,IAAI1D,EAAEkqzC,YAAYxkzC,EAAEpC,IAAIpC,GAAGwC,EAAEzD,GAAGqD,CAAE,CAAC,IAAI9B,GAAGxB,EAAEkqzC,YAAY5lzC,EAAE,EAAE,GAAI,CAAC,CAAC,SAASS,EAAEhF,EAAEC,GAAG,IAAIW,SAASZ,EAAE,WAAWY,EAAEX,EAAEkuzC,iBAAiB,EAAEnuzC,GAAG,YAAYY,EAAEX,EAAEquzC,kBAAkB,EAAEtuzC,GAAG,WAAWY,IAAIZ,EAAE,GAAG,EAAEC,EAAEouzC,iBAAiB,EAAEruzC,GAAGA,EAAE,EAAEC,EAAEiuzC,kBAAkB,EAAEluzC,GAAGC,EAAEguzC,iBAAiB,EAAEjuzC,GAAI,CAAC,SAASoG,EAAEpG,EAAEC,EAAEW,EAAEa,GAAGyD,EAAElF,EAAEY,EAAEa,GAAGyD,EAAEjF,EAAE,EAAEW,EAAE,EAAEa,GAAGyD,EAAEjF,EAAE,EAAEW,EAAE,EAAE,EAAEa,EAAE,EAAG,CAAC,SAASyD,EAAElF,EAAEC,EAAEW,GAAG,IAAIa,EAAEzB,EAAEC,GAAGD,EAAEC,GAAGD,EAAEY,GAAGZ,EAAEY,GAAGa,CAAE,CAAC,SAAS+E,EAAExG,EAAEC,EAAEW,EAAEa,GAAG,IAAIN,EAAEnB,EAAEY,EAAEV,EAAED,EAAEwB,EAAE,OAAON,EAAEA,EAAEjB,EAAEA,CAAC,CAACkE,EAAE4l5C,iBAAiBtl5C,EAAEN,EAAE6l5C,cAAc,SAASjq5C,EAAEC,GAAGA,EAAEA,GAAG,CAAC,EAAE,IAAIW,EAAE,CAAC,EAAE,IAAI,IAAIa,KAAKzB,EAAEY,EAAEa,GAAG,IAAIwC,EAAEjE,EAAEyB,GAAG8qC,SAAStsC,GAAGW,EAAEa,GAAG8J,KAAK9J,EAAEb,EAAEa,GAAG0F,QAAQlH,EAAEkH,QAAQvG,EAAEa,GAAG2pK,OAAOnrK,EAAEmrK,OAAO,OAAO1mK,EAAE,CAACi6B,OAAO/9B,GAAG,EAAEwD,EAAE8l5C,eAAe7l5C,EAAE,IAAIQ,EAAE,SAAS7E,GAAG,OAAOA,EAAE,EAAE,EAAEuF,EAAE,SAASvF,GAAG,OAAOA,EAAE,EAAE,EAAE6F,EAAE,SAAS7F,EAAEC,EAAEW,EAAEa,EAAEN,QAAG,IAASlB,IAAIA,EAAE4E,QAAG,IAASjE,IAAIA,EAAE2E,QAAG,IAAS9D,IAAIA,EAAE,SAAI,IAASN,IAAIA,EAAE2f,cAAcjgB,KAAKm4Z,SAASv3Z,EAAEZ,KAAKsrC,OAAOnsC,EAAE,IAAI,IAAIE,EAAEF,EAAEkB,OAAO,MAAMwf,YAAYE,YAAY/e,EAAEhB,KAAK04Z,IAAI,IAAIr5Z,EAAEF,EAAEkB,QAAQS,EAAEd,KAAK23H,OAAO,IAAIr3H,EAAE,EAAEnB,EAAEkB,QAAQmC,EAAE,EAAEA,EAAErD,EAAEkB,OAAOmC,IAAIxB,EAAEwB,GAAGA,EAAE1B,EAAE,EAAE0B,GAAGpD,EAAED,EAAEqD,IAAI1B,EAAE,EAAE0B,EAAE,GAAGzC,EAAEZ,EAAEqD,KAAK,SAASrD,EAAEC,EAAEW,EAAEa,EAAEN,EAAEjB,EAAE2B,GAAG,KAAK3B,EAAEiB,GAAGM,GAAG,CAAC,IAAIE,EAAER,EAAEjB,GAAG,GAAG,SAASF,EAAEC,EAAEW,EAAEa,EAAEN,EAAEjB,EAAE2B,GAAG,KAAK3B,EAAEiB,GAAG,CAAC,GAAGjB,EAAEiB,EAAE,IAAI,CAAC,IAAIQ,EAAEzB,EAAEiB,EAAE,EAAEkC,EAAE5B,EAAEN,EAAE,EAAE+B,EAAEQ,KAAKwnB,IAAIvpB,GAAG8B,EAAE,GAAGC,KAAKkxB,IAAI,EAAE1xB,EAAE,GAAGxB,EAAE,GAAGgC,KAAK4yF,KAAKpzF,EAAEO,GAAG9B,EAAE8B,GAAG9B,IAAI0B,EAAE1B,EAAE,EAAE,GAAG,EAAE,GAAG3B,EAAEC,EAAEW,EAAEa,EAAEiC,KAAK8K,IAAIrN,EAAEuC,KAAKyK,MAAM1M,EAAE4B,EAAEI,EAAE9B,EAAED,IAAIgC,KAAKgL,IAAIxO,EAAEwD,KAAKyK,MAAM1M,GAAGE,EAAE0B,GAAGI,EAAE9B,EAAED,IAAIG,EAAG,CAAC,IAAI8B,EAAE/C,EAAE,EAAEa,EAAEI,GAAG0B,EAAEpC,EAAEqC,EAAEtD,EAAE,IAAIkG,EAAEnG,EAAEW,EAAEO,EAAEM,GAAGb,EAAE,EAAEV,EAAE2B,GAAG8B,GAAGyC,EAAEnG,EAAEW,EAAEO,EAAEjB,GAAGqD,EAAEC,GAAG,CAAC,IAAI4C,EAAEnG,EAAEW,EAAE2C,EAAEC,GAAGD,IAAIC,IAAI5C,EAAE,EAAE2C,EAAE1B,GAAG8B,GAAGJ,IAAI,KAAK3C,EAAE,EAAE4C,EAAE3B,GAAG8B,GAAGH,GAAI,CAAC5C,EAAE,EAAEO,EAAEU,KAAK8B,EAAEyC,EAAEnG,EAAEW,EAAEO,EAAEqC,GAAG4C,EAAEnG,EAAEW,IAAI4C,EAAEtD,GAAGsD,GAAG/B,IAAIN,EAAEqC,EAAE,GAAG/B,GAAG+B,IAAItD,EAAEsD,EAAE,EAAG,CAAC,CAAva,CAAyavD,EAAEW,EAAEe,EAAER,EAAEjB,EAAE2B,EAAE,GAAG7B,EAAEC,EAAEW,EAAEa,EAAEN,EAAEQ,EAAE,EAAEE,EAAE,GAAG7B,EAAEC,EAAEW,EAAEa,EAAEE,EAAE,EAAEzB,EAAE2B,EAAE,EAAG,CAAC,CAAnhB,CAAqhBA,EAAEF,EAAEF,EAAE,EAAEI,EAAEX,OAAO,EAAE,EAAG,EAAE2E,EAAEtF,UAAUqiI,MAAM,SAAS5iI,EAAEC,EAAEW,EAAEa,GAAG,OAAO,SAASzB,EAAEC,EAAEW,EAAEa,EAAEN,EAAEjB,EAAE2B,GAAG,IAAI,IAAIF,EAAE0B,EAAEH,EAAE,CAAC,EAAElD,EAAEkB,OAAO,EAAE,GAAGuC,EAAE,GAAGP,EAAEhC,QAAQ,CAAC,IAAIQ,EAAEwB,EAAET,MAAMkB,EAAET,EAAET,MAAMc,EAAEL,EAAET,MAAM,GAAGkB,EAAEJ,GAAG1B,EAAE,IAAI,IAAI2B,EAAED,EAAEC,GAAGG,EAAEH,IAAIH,EAAEpD,EAAE,EAAEuD,EAAE,IAAI7B,EAAE1B,EAAE,EAAEuD,KAAK5C,GAAGe,GAAGR,GAAGkC,GAAG5B,GAAG4B,GAAGnD,GAAGuD,EAAEf,KAAK1C,EAAEwD,QAAS,CAAC,IAAIR,EAAEU,KAAKyK,OAAO5K,EAAEI,GAAG,GAAGN,EAAEpD,EAAE,EAAE+C,EAAE,IAAIrB,EAAE1B,EAAE,EAAE+C,KAAKpC,GAAGe,GAAGR,GAAGkC,GAAG5B,GAAG4B,GAAGnD,GAAGuD,EAAEf,KAAK1C,EAAEgD,IAAI,IAAIc,GAAGpC,EAAE,GAAG,GAAG,IAAIA,EAAEd,GAAGe,EAAEF,GAAG4B,KAAKH,EAAER,KAAKa,GAAGL,EAAER,KAAKM,EAAE,GAAGE,EAAER,KAAKoB,KAAK,IAAIpC,EAAEP,GAAGQ,EAAEzB,GAAGmD,KAAKH,EAAER,KAAKM,EAAE,GAAGE,EAAER,KAAKiB,GAAGT,EAAER,KAAKoB,GAAI,CAAC,CAAC,OAAOL,CAAC,CAA5Z,CAA8Z5C,KAAK04Z,IAAI14Z,KAAK23H,OAAOx4H,EAAEC,EAAEW,EAAEa,EAAEZ,KAAKm4Z,SAAS,EAAEnzZ,EAAEtF,UAAUo5Z,OAAO,SAAS35Z,EAAEC,EAAEW,GAAG,OAAO,SAASZ,EAAEC,EAAEW,EAAEa,EAAEN,EAAEjB,GAAG,IAAI,IAAI2B,EAAE,CAAC,EAAE7B,EAAEkB,OAAO,EAAE,GAAGS,EAAE,GAAG0B,EAAElC,EAAEA,EAAEU,EAAEX,QAAQ,CAAC,IAAIgC,EAAErB,EAAEY,MAAMgB,EAAE5B,EAAEY,MAAMf,EAAEG,EAAEY,MAAM,GAAGgB,EAAE/B,GAAGxB,EAAE,IAAI,IAAIyD,EAAEjC,EAAEiC,GAAGF,EAAEE,IAAI6C,EAAEvG,EAAE,EAAE0D,GAAG1D,EAAE,EAAE0D,EAAE,GAAG/C,EAAEa,IAAI4B,GAAG1B,EAAEe,KAAK1C,EAAE2D,QAAS,CAAC,IAAIJ,EAAEG,KAAKyK,OAAOzM,EAAE+B,GAAG,GAAGD,EAAEvD,EAAE,EAAEsD,GAAGP,EAAE/C,EAAE,EAAEsD,EAAE,GAAGiD,EAAEhD,EAAER,EAAEpC,EAAEa,IAAI4B,GAAG1B,EAAEe,KAAK1C,EAAEuD,IAAI,IAAIO,GAAGZ,EAAE,GAAG,GAAG,IAAIA,EAAEtC,EAAEO,GAAGqC,EAAE/B,EAAEN,GAAG6B,KAAKnB,EAAEa,KAAKhB,GAAGG,EAAEa,KAAKa,EAAE,GAAG1B,EAAEa,KAAKoB,KAAK,IAAIZ,EAAEtC,EAAEO,GAAGqC,EAAE/B,EAAEN,GAAG6B,KAAKnB,EAAEa,KAAKa,EAAE,GAAG1B,EAAEa,KAAKe,GAAG5B,EAAEa,KAAKoB,GAAI,CAAC,CAAC,OAAOnC,CAAC,CAA1Y,CAA4Yd,KAAK04Z,IAAI14Z,KAAK23H,OAAOx4H,EAAEC,EAAEW,EAAEC,KAAKm4Z,SAAS,EAAE,IAAIjzZ,EAAE,CAACgjH,QAAQ,EAAED,QAAQ,GAAGoxS,UAAU,EAAE/hR,OAAO,GAAGizB,OAAO,IAAI4tP,SAAS,GAAG9tY,KAAI,EAAGivY,YAAW,EAAG5lY,OAAO,KAAKrE,IAAI,SAASlwB,GAAG,OAAOA,CAAC,GAAGuG,EAAE,SAASvG,GAAGa,KAAKmpB,QAAQvjB,EAAEtG,OAAOY,OAAOgF,GAAG/F,GAAGa,KAAK25Z,MAAM,IAAIl6Z,MAAMO,KAAKmpB,QAAQ8+F,QAAQ,EAAG,EAAE,SAASxjH,EAAEtF,EAAEC,EAAEW,EAAEa,EAAEN,GAAG,MAAO,CAAC2D,EAAE9E,EAAE6D,EAAE5D,EAAEugC,KAAK,IAAIpU,GAAGxrB,EAAEg6J,UAAU,EAAEuiF,UAAU17O,EAAE4nC,WAAWloC,EAAE,CAAC,SAASuE,EAAE1F,EAAEC,GAAG,IAAIW,EAAEZ,EAAE4lC,SAASD,YAAYlkC,EAAEb,EAAE,GAAG,MAAO,CAACkE,EAAEwB,EAAE1F,EAAE,IAAIiD,EAAEoB,EAAExD,GAAG++B,KAAK,IAAI3iB,MAAM5d,EAAE26J,UAAU,EAAE,CAAC,SAASh0J,EAAE5G,GAAG,MAAO,CAACoN,KAAK,UAAUgf,GAAGpsB,EAAEosB,GAAGid,WAAW7jC,EAAExF,GAAG4lC,SAAS,CAACx4B,KAAK,QAAQu4B,YAAY,EAAElkC,EAAEzB,EAAE8E,EAAE,KAAKrD,EAAE,MAAMxB,EAAED,EAAE6D,EAAEjD,GAAG,IAAI,IAAIX,GAAGyD,KAAKsmC,GAAG,IAAI,IAAItmC,KAAKskK,KAAKtkK,KAAKkxB,IAAIh0B,IAAI8C,KAAKsmC,GAAG,OAAO,IAAI/pC,EAAEW,EAAEa,CAAE,CAAC,SAAS+D,EAAExF,GAAG,IAAIC,EAAED,EAAEm9O,UAAUv8O,EAAEX,GAAG,IAAIyD,KAAKogD,MAAM7jD,EAAE,KAAK,IAAIA,GAAG,IAAIyD,KAAKogD,MAAM7jD,EAAE,KAAK,GAAG,IAAIA,EAAE,OAAOwG,EAAEA,EAAE,CAAC,EAAEzG,EAAEqpC,YAAY,CAAC2gX,SAAQ,EAAGgS,WAAWh8Z,EAAEosB,GAAG8vY,YAAYj8Z,EAAEk9Z,wBAAwBv8Z,GAAG,CAAC,SAAS0F,EAAEtG,GAAG,OAAOA,EAAE,IAAI,EAAE,CAAC,SAASiF,EAAEjF,GAAG,IAAIC,EAAEyD,KAAK4wH,IAAIt0H,EAAE0D,KAAKsmC,GAAG,KAAKppC,EAAE,GAAG,IAAI8C,KAAKwnB,KAAK,EAAEjrB,IAAI,EAAEA,IAAIyD,KAAKsmC,GAAG,OAAOppC,EAAE,EAAE,EAAEA,EAAE,EAAE,EAAEA,CAAC,CAAC,SAAS6F,EAAEzG,EAAEC,GAAG,IAAI,IAAIW,KAAKX,EAAED,EAAEY,GAAGX,EAAEW,GAAG,OAAOZ,CAAC,CAAC,SAAS4F,EAAE5F,GAAG,OAAOA,EAAE8E,CAAC,CAAC,SAASO,EAAErF,GAAG,OAAOA,EAAE6D,CAAC,CAAC,SAASsB,EAAEnF,EAAEC,EAAEW,EAAEa,EAAEN,EAAEjB,GAAG,IAAI2B,EAAEV,EAAEP,EAAEe,EAAEzB,EAAEuB,EAAE,GAAG,IAAII,GAAG,IAAIF,EAAE,CAAC,IAAI0B,IAAIrD,EAAEY,GAAGiB,GAAG5B,EAAEwB,GAAGE,IAAIE,EAAEA,EAAEF,EAAEA,GAAG0B,EAAE,GAAGzC,EAAEO,EAAEM,EAAEvB,GAAGmD,EAAE,IAAIzC,GAAGiB,EAAEwB,EAAE5B,GAAGE,EAAE0B,EAAG,CAAC,OAAQxB,EAAE7B,EAAEY,GAAGiB,GAAGF,EAAE1B,EAAEwB,GAAGE,CAAC,CAAC,SAASoF,EAAE/G,EAAEC,EAAEW,EAAEa,GAAG,IAAIN,EAAE,CAACirB,QAAG,IAASpsB,EAAE,KAAKA,EAAEoN,KAAKnN,EAAE2lC,SAAShlC,EAAEs6D,KAAKz5D,EAAE25K,KAAK,IAAIC,KAAK,IAAIC,MAAK,IAAKC,MAAK,KAAM,OAAO,SAASv7K,GAAG,IAAIC,EAAED,EAAE4lC,SAAShlC,EAAEZ,EAAEoN,KAAK,GAAG,UAAUxM,GAAG,eAAeA,GAAG,eAAeA,EAAEsF,EAAElG,EAAEC,QAAQ,GAAG,YAAYW,GAAG,oBAAoBA,EAAE,IAAI,IAAIa,EAAE,EAAEA,EAAExB,EAAEiB,OAAOO,IAAIyE,EAAElG,EAAEC,EAAEwB,SAAS,GAAG,iBAAiBb,EAAE,IAAIa,EAAE,EAAEA,EAAExB,EAAEiB,OAAOO,IAAI,IAAI,IAAIN,EAAE,EAAEA,EAAElB,EAAEwB,GAAGP,OAAOC,IAAI+E,EAAElG,EAAEC,EAAEwB,GAAGN,GAAI,CAA/Q,CAAiRA,GAAGA,CAAC,CAAC,SAAS+E,EAAElG,EAAEC,GAAG,IAAI,IAAIW,EAAE,EAAEA,EAAEX,EAAEiB,OAAON,GAAG,EAAEZ,EAAEo7K,KAAK13K,KAAKgL,IAAI1O,EAAEo7K,KAAKn7K,EAAEW,IAAIZ,EAAEq7K,KAAK33K,KAAKgL,IAAI1O,EAAEq7K,KAAKp7K,EAAEW,EAAE,IAAIZ,EAAEs7K,KAAK53K,KAAK8K,IAAIxO,EAAEs7K,KAAKr7K,EAAEW,IAAIZ,EAAEu7K,KAAK73K,KAAK8K,IAAIxO,EAAEu7K,KAAKt7K,EAAEW,EAAE,GAAI,CAAC,SAASqG,EAAEjH,EAAEC,EAAEW,EAAEa,GAAG,GAAGxB,EAAE2lC,SAAS,CAAC,IAAIzkC,EAAElB,EAAE2lC,SAASD,YAAYzlC,EAAED,EAAE2lC,SAASx4B,KAAKvL,EAAE6B,KAAK6yF,IAAI31F,EAAE6oL,YAAY,GAAG7oL,EAAEkoH,SAASloH,EAAEwqK,QAAQ,GAAGzpK,EAAE,GAAG0B,EAAEpD,EAAEmsB,GAAG,GAAGxrB,EAAEk03C,UAAUzx3C,EAAEpD,EAAEopC,WAAWzoC,EAAEk03C,WAAWl03C,EAAEu5Z,aAAa92Z,EAAE5B,GAAG,GAAG,UAAUvB,EAAEmG,EAAElF,EAAEQ,QAAQ,GAAG,eAAezB,EAAE,IAAI,IAAIgD,EAAE,EAAEA,EAAE/B,EAAED,OAAOgC,IAAImD,EAAElF,EAAE+B,GAAGvB,QAAQ,GAAG,eAAezB,EAAE4F,EAAE3E,EAAEQ,EAAEE,GAAE,QAAS,GAAG,oBAAoB3B,EAAE,CAAC,GAAGU,EAAE403C,YAAY,CAAC,IAAIty3C,EAAE,EAAEA,EAAE/B,EAAED,OAAOgC,IAAI4C,EAAE3E,EAAE+B,GAAGvB,EAAE,GAAGE,GAAE,GAAI7B,EAAE0C,KAAKqE,EAAE1D,EAAE,aAAa1B,EAAE1B,EAAEopC,aAAa,MAAM,CAACxiC,EAAE1F,EAAEQ,EAAEE,GAAE,EAAI,MAAM,GAAG,YAAY3B,EAAE2G,EAAE1F,EAAEQ,EAAEE,GAAE,OAAS,CAAC,GAAG,iBAAiB3B,EAAE,CAAC,GAAG,uBAAuBA,EAAE,CAAC,IAAIgD,EAAE,EAAEA,EAAEjD,EAAE2lC,SAASkvM,WAAW5zO,OAAOgC,IAAI+D,EAAEjH,EAAE,CAACosB,GAAG/oB,EAAEuiC,SAAS3lC,EAAE2lC,SAASkvM,WAAW5xO,GAAGmmC,WAAWppC,EAAEopC,YAAYzoC,EAAEa,GAAG,MAAM,CAAC,MAAM,IAAI4mB,MAAM,4CAA4C,CAAC,IAAInlB,EAAE,EAAEA,EAAE/B,EAAED,OAAOgC,IAAI,CAAC,IAAIO,EAAE,GAAGoD,EAAE1F,EAAE+B,GAAGO,EAAE5B,GAAE,GAAIF,EAAEe,KAAKe,EAAG,CAAC,CAACzD,EAAE0C,KAAKqE,EAAE1D,EAAEnD,EAAEyB,EAAE1B,EAAEopC,YAAa,CAAC,CAAC,SAAShjC,EAAErG,EAAEC,GAAGA,EAAEyC,KAAK0E,GAAGpH,EAAE,KAAKC,EAAEyC,KAAK6E,GAAGvH,EAAE,KAAKC,EAAEyC,KAAK,EAAG,CAAC,SAASoD,EAAE9F,EAAEC,EAAEW,EAAEa,GAAG,IAAI,IAAIN,EAAEjB,EAAE2B,EAAE,EAAEF,EAAE,EAAEA,EAAE3B,EAAEkB,OAAOS,IAAI,CAAC,IAAI0B,EAAE+D,GAAGpH,EAAE2B,GAAG,IAAIuB,EAAEqE,GAAGvH,EAAE2B,GAAG,IAAI1B,EAAEyC,KAAKW,GAAGpD,EAAEyC,KAAKQ,GAAGjD,EAAEyC,KAAK,GAAGf,EAAE,IAAIE,GAAGJ,GAAGN,EAAE+B,EAAEG,EAAEnD,GAAG,EAAEwD,KAAK4yF,KAAK5yF,KAAK6yF,IAAIlzF,EAAElC,EAAE,GAAGuC,KAAK6yF,IAAIrzF,EAAEhD,EAAE,KAAKiB,EAAEkC,EAAEnD,EAAEgD,CAAE,CAAC,IAAIO,EAAExD,EAAEiB,OAAO,EAAEjB,EAAE,GAAG,EAAE,SAASD,EAAEC,EAAEW,EAAEa,EAAEN,GAAG,IAAI,IAAIjB,EAAE2B,EAAEV,EAAEQ,EAAEF,EAAEb,GAAG,EAAEyC,EAAE5B,EAAEb,EAAEsC,EAAEjD,EAAEW,GAAG6C,EAAExD,EAAEW,EAAE,GAAGc,EAAEzB,EAAEwB,GAAGkC,EAAE1D,EAAEwB,EAAE,GAAG8B,EAAE3C,EAAE,EAAE2C,EAAE9B,EAAE8B,GAAG,EAAE,CAAC,IAAIC,EAAE2B,EAAElF,EAAEsD,GAAGtD,EAAEsD,EAAE,GAAGL,EAAEO,EAAE/B,EAAEiC,GAAG,GAAGH,EAAE3B,EAAE3B,EAAEqD,EAAE1B,EAAE2B,OAAO,GAAGA,IAAI3B,EAAE,CAAC,IAAImB,EAAEU,KAAKmjH,IAAItjH,EAAE5B,GAAGqB,EAAEK,IAAInD,EAAEqD,EAAEF,EAAEL,EAAG,CAAC,CAACnB,EAAEV,IAAIjB,EAAEU,EAAE,GAAGZ,EAAEC,EAAEW,EAAEV,EAAEiB,GAAGlB,EAAEC,EAAE,GAAG2B,EAAEJ,EAAEvB,EAAE,GAAGF,EAAEC,EAAEC,EAAEuB,EAAEN,GAAI,CAArP,CAAuPlB,EAAE,EAAEwD,EAAE7C,GAAGX,EAAEwD,EAAE,GAAG,EAAExD,EAAEwlB,KAAK/hB,KAAKmjH,IAAIhlH,GAAG5B,EAAEonC,MAAM,EAAEpnC,EAAEqnC,IAAIrnC,EAAEwlB,IAAK,CAAC,SAAS5e,EAAE7G,EAAEC,EAAEW,EAAEa,GAAG,IAAI,IAAIN,EAAE,EAAEA,EAAEnB,EAAEkB,OAAOC,IAAI,CAAC,IAAIjB,EAAE,GAAG4F,EAAE9F,EAAEmB,GAAGjB,EAAEU,EAAEa,GAAGxB,EAAEyC,KAAKxC,EAAG,CAAC,CAAC,SAASkH,GAAGpH,GAAG,OAAOA,EAAE,IAAI,EAAE,CAAC,SAASuH,GAAGvH,GAAG,IAAIC,EAAEyD,KAAK4wH,IAAIt0H,EAAE0D,KAAKsmC,GAAG,KAAKppC,EAAE,GAAG,IAAI8C,KAAKwnB,KAAK,EAAEjrB,IAAI,EAAEA,IAAIyD,KAAKsmC,GAAG,OAAOppC,EAAE,EAAE,EAAEA,EAAE,EAAE,EAAEA,CAAC,CAAC,SAAS8G,GAAG1H,EAAEC,EAAEW,EAAEa,EAAEN,EAAEjB,EAAE2B,EAAEF,GAAG,GAAGF,GAAGxB,EAAEC,IAAIU,GAAGX,IAAI4B,EAAEJ,EAAE,OAAOzB,EAAE,GAAG6B,EAAEjB,GAAGV,GAAGuB,EAAE,OAAO,KAAK,IAAI,IAAI4B,EAAE,GAAGH,EAAE,EAAEA,EAAElD,EAAEkB,OAAOgC,IAAI,CAAC,IAAIO,EAAEzD,EAAEkD,GAAGxB,EAAE+B,EAAEmiC,SAASjiC,EAAEF,EAAE2J,KAAK7J,EAAE,IAAIpC,EAAEsC,EAAE23K,KAAK33K,EAAE43K,KAAK73K,EAAE,IAAIrC,EAAEsC,EAAE63K,KAAK73K,EAAE83K,KAAK,GAAGh4K,GAAG3C,GAAG4C,EAAE/B,EAAE4B,EAAEX,KAAKe,QAAQ,KAAKD,EAAE5C,GAAG2C,GAAG9B,GAAG,CAAC,IAAIuB,EAAE,GAAG,GAAG,UAAUW,GAAG,eAAeA,EAAEiE,GAAGlG,EAAEsB,EAAEpC,EAAEa,EAAEN,QAAQ,GAAG,eAAewC,EAAEgE,GAAGjG,EAAEsB,EAAEpC,EAAEa,EAAEN,GAAE,EAAGQ,EAAE6z3C,kBAAkB,GAAG,oBAAoB7x3C,EAAEmE,GAAGpG,EAAEsB,EAAEpC,EAAEa,EAAEN,GAAE,QAAS,GAAG,YAAYwC,EAAEmE,GAAGpG,EAAEsB,EAAEpC,EAAEa,EAAEN,GAAE,QAAS,GAAG,iBAAiBwC,EAAE,IAAI,IAAIG,EAAE,EAAEA,EAAEpC,EAAER,OAAO4C,IAAI,CAAC,IAAIG,EAAE,GAAG6D,GAAGpG,EAAEoC,GAAGG,EAAErD,EAAEa,EAAEN,GAAE,GAAI8C,EAAE/C,QAAQ8B,EAAEN,KAAKuB,EAAG,CAAC,GAAGjB,EAAE9B,OAAO,CAAC,GAAGS,EAAE6z3C,aAAa,eAAe7x3C,EAAE,CAAC,IAAIG,EAAE,EAAEA,EAAEd,EAAE9B,OAAO4C,IAAIT,EAAEX,KAAKqE,EAAEtD,EAAE2oB,GAAGzoB,EAAEX,EAAEc,GAAGL,EAAEy3D,OAAO,QAAQ,CAAC,eAAev3D,GAAG,oBAAoBA,IAAI,IAAIX,EAAE9B,QAAQyC,EAAE,aAAaX,EAAEA,EAAE,IAAIW,EAAE,mBAAmB,UAAUA,GAAG,eAAeA,IAAIA,EAAE,IAAIX,EAAE9B,OAAO,QAAQ,cAAcmC,EAAEX,KAAKqE,EAAEtD,EAAE2oB,GAAGzoB,EAAEX,EAAES,EAAEy3D,MAAO,CAAC,CAAC,CAAC,OAAO73D,EAAEnC,OAAOmC,EAAE,IAAI,CAAC,SAASuE,GAAG5H,EAAEC,EAAEW,EAAEa,EAAEN,GAAG,IAAI,IAAIjB,EAAE,EAAEA,EAAEF,EAAEkB,OAAOhB,GAAG,EAAE,CAAC,IAAI2B,EAAE7B,EAAEE,EAAEiB,GAAGU,GAAGjB,GAAGiB,GAAGJ,IAAIxB,EAAEyC,KAAK1C,EAAEE,IAAID,EAAEyC,KAAK1C,EAAEE,EAAE,IAAID,EAAEyC,KAAK1C,EAAEE,EAAE,IAAK,CAAC,CAAC,SAASyH,GAAG3H,EAAEC,EAAEW,EAAEa,EAAEN,EAAEjB,EAAE2B,GAAG,IAAI,IAAIF,EAAE0B,EAAEH,EAAEsE,GAAGxH,GAAGyD,EAAE,IAAItC,EAAE8G,GAAGD,GAAGtG,EAAE1B,EAAEqnC,MAAM1jC,EAAE,EAAEA,EAAE3D,EAAEkB,OAAO,EAAEyC,GAAG,EAAE,CAAC,IAAIJ,EAAEvD,EAAE2D,GAAGH,EAAExD,EAAE2D,EAAE,GAAGX,EAAEhD,EAAE2D,EAAE,GAAGG,EAAE9D,EAAE2D,EAAE,GAAGM,EAAEjE,EAAE2D,EAAE,GAAGE,EAAE,IAAI1C,EAAEoC,EAAEC,EAAEsB,EAAE,IAAI3D,EAAE2C,EAAEG,EAAEG,GAAE,EAAGvC,IAAIF,EAAE+B,KAAK4yF,KAAK5yF,KAAK6yF,IAAIhzF,EAAEO,EAAE,GAAGJ,KAAK6yF,IAAI/yF,EAAES,EAAE,KAAKJ,EAAEjD,EAAEkE,EAAElE,IAAIyC,EAAEI,EAAEP,EAAEK,EAAEC,EAAEM,EAAEG,EAAErD,GAAGiB,IAAIqB,EAAEmkC,MAAM3lC,EAAEC,EAAE0B,IAAIQ,EAAEpC,EAAEqD,EAAErD,IAAI4B,EAAEI,EAAEP,EAAEK,EAAEC,EAAEM,EAAEG,EAAExC,GAAGI,IAAIqB,EAAEmkC,MAAM3lC,EAAEC,EAAE0B,IAAI0E,GAAG7E,EAAEK,EAAEC,EAAER,GAAG8B,EAAElE,GAAGiD,GAAGjD,IAAIyC,EAAEI,EAAEP,EAAEK,EAAEC,EAAEM,EAAEG,EAAErD,GAAGwD,GAAE,GAAIU,EAAErD,GAAGoC,GAAGpC,IAAI4B,EAAEI,EAAEP,EAAEK,EAAEC,EAAEM,EAAEG,EAAExC,GAAG2C,GAAE,IAAKlE,GAAGkE,IAAIvC,IAAIqB,EAAEokC,IAAI5lC,EAAEC,EAAE0B,GAAGpD,EAAEyC,KAAKQ,GAAGA,EAAEsE,GAAGxH,IAAI6B,IAAIH,GAAGC,EAAG,CAAC,IAAI0C,EAAErE,EAAEkB,OAAO,EAAEqC,EAAEvD,EAAEqE,GAAGb,EAAExD,EAAEqE,EAAE,GAAGrB,EAAEhD,EAAEqE,EAAE,IAAIR,EAAE,IAAI1C,EAAEoC,EAAEC,IAAI5C,GAAGiD,GAAGpC,GAAGsG,GAAG7E,EAAEK,EAAEC,EAAER,GAAGqB,EAAEnB,EAAEhC,OAAO,EAAEhB,GAAGmE,GAAG,IAAInB,EAAEmB,KAAKnB,EAAE,IAAIA,EAAEmB,EAAE,KAAKnB,EAAE,KAAK6E,GAAG7E,EAAEA,EAAE,GAAGA,EAAE,GAAGA,EAAE,IAAIA,EAAEhC,QAAQjB,EAAEyC,KAAKQ,EAAG,CAAC,SAASsE,GAAGxH,GAAG,IAAIC,EAAE,GAAG,OAAOA,EAAEwlB,KAAKzlB,EAAEylB,KAAKxlB,EAAEonC,MAAMrnC,EAAEqnC,MAAMpnC,EAAEqnC,IAAItnC,EAAEsnC,IAAIrnC,CAAC,CAAC,SAAS6H,GAAG9H,EAAEC,EAAEW,EAAEa,EAAEN,EAAEjB,GAAG,IAAI,IAAI2B,EAAE,EAAEA,EAAE7B,EAAEkB,OAAOW,IAAI8F,GAAG3H,EAAE6B,GAAG5B,EAAEW,EAAEa,EAAEN,EAAEjB,GAAE,EAAI,CAAC,SAAS6H,GAAG/H,EAAEC,EAAEW,EAAEa,GAAGzB,EAAE0C,KAAKzC,GAAGD,EAAE0C,KAAK9B,GAAGZ,EAAE0C,KAAKjB,EAAG,CAAC,SAASwG,GAAGjI,EAAEC,EAAEW,EAAEa,EAAEN,EAAEjB,GAAG,IAAI2B,GAAG3B,EAAED,IAAIwB,EAAExB,GAAG,OAAOD,EAAE0C,KAAKxC,GAAGF,EAAE0C,KAAK9B,GAAGO,EAAEP,GAAGiB,GAAG7B,EAAE0C,KAAK,GAAGb,CAAC,CAAC,SAASmG,GAAGhI,EAAEC,EAAEW,EAAEa,EAAEN,EAAEjB,GAAG,IAAI2B,GAAG3B,EAAEU,IAAIO,EAAEP,GAAG,OAAOZ,EAAE0C,KAAKzC,GAAGwB,EAAExB,GAAG4B,GAAG7B,EAAE0C,KAAKxC,GAAGF,EAAE0C,KAAK,GAAGb,CAAC,CAAC,SAASuG,GAAGpI,EAAEC,GAAG,IAAI,IAAIW,EAAE,GAAGa,EAAE,EAAEA,EAAEzB,EAAEkB,OAAOO,IAAI,CAAC,IAAIN,EAAEjB,EAAEF,EAAEyB,GAAGI,EAAE3B,EAAEkN,KAAK,GAAG,UAAUvL,GAAG,eAAeA,GAAG,eAAeA,EAAEV,EAAE0G,GAAG3H,EAAE0lC,SAAS3lC,QAAQ,GAAG,oBAAoB4B,GAAG,YAAYA,EAAE,CAACV,EAAE,GAAG,IAAI,IAAIQ,EAAE,EAAEA,EAAEzB,EAAE0lC,SAAS1kC,OAAOS,IAAIR,EAAEuB,KAAKmF,GAAG3H,EAAE0lC,SAASjkC,GAAG1B,GAAI,MAAM,GAAG,iBAAiB4B,EAAE,IAAIV,EAAE,GAAGQ,EAAE,EAAEA,EAAEzB,EAAE0lC,SAAS1kC,OAAOS,IAAI,CAAC,IAAI,IAAI0B,EAAE,GAAGH,EAAE,EAAEA,EAAEhD,EAAE0lC,SAASjkC,GAAGT,OAAOgC,IAAIG,EAAEX,KAAKmF,GAAG3H,EAAE0lC,SAASjkC,GAAGuB,GAAGjD,IAAIkB,EAAEuB,KAAKW,EAAG,CAACzC,EAAE8B,KAAKqE,EAAE7G,EAAEksB,GAAGvqB,EAAEV,EAAEjB,EAAEg7D,MAAO,CAAC,OAAOt6D,CAAC,CAAC,SAASiH,GAAG7H,EAAEC,GAAG,IAAIW,EAAE,GAAGA,EAAE6kB,KAAKzlB,EAAEylB,UAAK,IAASzlB,EAAEqnC,QAAQzmC,EAAEymC,MAAMrnC,EAAEqnC,MAAMzmC,EAAE0mC,IAAItnC,EAAEsnC,KAAK,IAAI,IAAI7lC,EAAE,EAAEA,EAAEzB,EAAEkB,OAAOO,GAAG,EAAEb,EAAE8B,KAAK1C,EAAEyB,GAAGxB,EAAED,EAAEyB,EAAE,GAAGzB,EAAEyB,EAAE,IAAI,OAAOb,CAAC,CAAC,SAASyH,GAAGrI,EAAEC,GAAG,GAAGD,EAAEkgX,YAAY,OAAOlgX,EAAE,IAAIY,EAAEa,EAAEN,EAAEjB,EAAE,GAAGF,EAAEwG,EAAE3E,EAAE7B,EAAE8E,EAAEnD,EAAE3B,EAAE6D,EAAE,IAAIjD,EAAE,EAAEA,EAAEZ,EAAEusC,SAASrrC,OAAON,IAAI,CAAC,IAAIyC,EAAErD,EAAEusC,SAAS3rC,GAAGsC,EAAEG,EAAEuiC,SAASniC,EAAEJ,EAAE+J,KAAK,GAAG/J,EAAEuiC,SAAS,GAAG,IAAIniC,EAAE,IAAIhC,EAAE,EAAEA,EAAEyB,EAAEhC,OAAOO,GAAG,EAAE4B,EAAEuiC,SAASljC,KAAKwF,GAAGhF,EAAEzB,GAAGyB,EAAEzB,EAAE,GAAGxB,EAAEC,EAAE2B,EAAEF,SAAS,IAAIF,EAAE,EAAEA,EAAEyB,EAAEhC,OAAOO,IAAI,CAAC,IAAIC,EAAE,GAAG,IAAIP,EAAE,EAAEA,EAAE+B,EAAEzB,GAAGP,OAAOC,GAAG,EAAEO,EAAEgB,KAAKwF,GAAGhF,EAAEzB,GAAGN,GAAG+B,EAAEzB,GAAGN,EAAE,GAAGlB,EAAEC,EAAE2B,EAAEF,IAAI0B,EAAEuiC,SAASljC,KAAKhB,EAAG,CAAC,CAAC,OAAO1B,EAAEkgX,aAAY,EAAGlgX,CAAC,CAAC,SAASkI,GAAGlI,EAAEC,EAAEW,EAAEa,EAAEN,EAAEjB,GAAG,MAAO,CAACwD,KAAKogD,MAAMljD,GAAGZ,EAAEyB,EAAEN,IAAIuC,KAAKogD,MAAMljD,GAAGX,EAAEwB,EAAEvB,IAAI,CAAC,SAASiI,GAAGnI,EAAEC,EAAEW,EAAEa,EAAEN,GAAG,IAAI,IAAIjB,EAAED,IAAIkB,EAAE2nH,QAAQ,EAAE3nH,EAAEsoL,YAAY,GAAGxpL,GAAGkB,EAAEiqK,QAAQvpK,EAAE,CAAC0qC,SAAS,GAAG4wM,UAAU,EAAEgtqC,cAAc,EAAEC,YAAY,EAAE1h5C,OAAO,KAAK5D,EAAElE,EAAEiD,EAAEpC,EAAE+E,EAAEvG,EAAEigX,aAAY,EAAG9kM,KAAK,EAAEC,KAAK,EAAEC,MAAM,EAAEC,KAAK,GAAG55K,EAAE,EAAEA,EAAE3B,EAAEkB,OAAOS,IAAI,CAACE,EAAEuo5C,cAActh5C,GAAGjH,EAAE7B,EAAE2B,GAAGzB,EAAEiB,GAAG,IAAIkC,EAAErD,EAAE2B,GAAGy5K,KAAKl4K,EAAElD,EAAE2B,GAAG05K,KAAK53K,EAAEzD,EAAE2B,GAAG25K,KAAK55K,EAAE1B,EAAE2B,GAAG45K,KAAKl4K,EAAExB,EAAEu5K,OAAOv5K,EAAEu5K,KAAK/3K,GAAGH,EAAErB,EAAEw5K,OAAOx5K,EAAEw5K,KAAKn4K,GAAGO,EAAE5B,EAAEy5K,OAAOz5K,EAAEy5K,KAAK73K,GAAG/B,EAAEG,EAAE05K,OAAO15K,EAAE05K,KAAK75K,EAAG,CAAC,OAAOG,CAAC,CAAC,SAASiH,GAAG9I,EAAEC,EAAEW,EAAEa,GAAG,IAAIN,EAAElB,EAAE2lC,SAAS1lC,EAAED,EAAEmN,KAAKvL,EAAE,GAAG,GAAG,UAAU3B,GAAG,eAAeA,EAAE,IAAI,IAAIyB,EAAE,EAAEA,EAAER,EAAED,OAAOS,GAAG,EAAEE,EAAEa,KAAKvB,EAAEQ,IAAIE,EAAEa,KAAKvB,EAAEQ,EAAE,IAAI3B,EAAEm9O,YAAYn9O,EAAEmq5C,qBAAqB,GAAG,eAAejq5C,EAAEyI,GAAG9G,EAAEV,EAAEnB,EAAEY,GAAE,GAAG,QAAS,GAAG,oBAAoBV,GAAG,YAAYA,EAAE,IAAIyB,EAAE,EAAEA,EAAER,EAAED,OAAOS,IAAIgH,GAAG9G,EAAEV,EAAEQ,GAAG3B,EAAEY,EAAE,YAAYV,EAAE,IAAIyB,QAAQ,GAAG,iBAAiBzB,EAAE,IAAI,IAAImD,EAAE,EAAEA,EAAElC,EAAED,OAAOmC,IAAI,CAAC,IAAIH,EAAE/B,EAAEkC,GAAG,IAAI1B,EAAE,EAAEA,EAAEuB,EAAEhC,OAAOS,IAAIgH,GAAG9G,EAAEqB,EAAEvB,GAAG3B,EAAEY,GAAE,EAAG,IAAIe,EAAG,CAAC,GAAGE,EAAEX,OAAO,CAAC,IAAIuC,EAAExD,EAAEi7D,MAAM,KAAK,GAAG,eAAeh7D,GAAGuB,EAAE+z3C,YAAY,CAAC,IAAI,IAAI9z3C,KAAK+B,EAAE,CAAC,EAAExD,EAAEi7D,KAAKz3D,EAAE/B,GAAGzB,EAAEi7D,KAAKx5D,GAAG+B,EAAEgo4C,kBAAkBtq4C,EAAEkmC,MAAMlmC,EAAEskB,KAAKhiB,EAAEio4C,gBAAgBvq4C,EAAEmmC,IAAInmC,EAAEskB,IAAK,CAAC,IAAI9hB,EAAE,CAACiiC,SAAS/jC,EAAEuL,KAAK,YAAYlN,GAAG,iBAAiBA,EAAE,EAAE,eAAeA,GAAG,oBAAoBA,EAAE,EAAE,EAAEg7D,KAAKz3D,GAAG,OAAOxD,EAAEmsB,KAAKzoB,EAAEyoB,GAAGnsB,EAAEmsB,IAAIpsB,EAAEusC,SAAS7pC,KAAKiB,EAAG,CAAC,CAAC,SAASgF,GAAG3I,EAAEC,EAAEW,EAAEa,EAAEN,EAAEjB,GAAG,IAAI2B,EAAEJ,EAAEA,EAAE,GAAGA,EAAE,GAAGxB,EAAEwlB,MAAMtkB,EAAEU,EAAEJ,GAAGb,EAAEu8O,WAAWl9O,EAAEiB,OAAO,MAAO,CAAC,IAAI,IAAIS,EAAE,GAAG0B,EAAE,EAAEA,EAAEpD,EAAEiB,OAAOmC,GAAG,GAAG,IAAI5B,GAAGxB,EAAEoD,EAAE,GAAGxB,KAAKjB,EAAEup5C,gBAAgBxo5C,EAAEe,KAAKzC,EAAEoD,IAAI1B,EAAEe,KAAKzC,EAAEoD,EAAE,KAAKzC,EAAEu8O,YAAYh8O,GAAG,SAASnB,EAAEC,GAAG,IAAI,IAAIW,EAAE,EAAEa,EAAE,EAAEN,EAAEnB,EAAEkB,OAAOhB,EAAEiB,EAAE,EAAEM,EAAEN,EAAEjB,EAAEuB,EAAEA,GAAG,EAAEb,IAAIZ,EAAEyB,GAAGzB,EAAEE,KAAKF,EAAEyB,EAAE,GAAGzB,EAAEE,EAAE,IAAI,GAAGU,EAAE,IAAIX,EAAE,IAAIwB,EAAE,EAAEN,EAAEnB,EAAEkB,OAAOO,EAAEN,EAAE,EAAEM,GAAG,EAAE,CAAC,IAAII,EAAE7B,EAAEyB,GAAGE,EAAE3B,EAAEyB,EAAE,GAAGzB,EAAEyB,GAAGzB,EAAEmB,EAAE,EAAEM,GAAGzB,EAAEyB,EAAE,GAAGzB,EAAEmB,EAAE,EAAEM,GAAGzB,EAAEmB,EAAE,EAAEM,GAAGI,EAAE7B,EAAEmB,EAAE,EAAEM,GAAGE,CAAE,CAAC,CAA9M,CAAgNA,EAAEzB,GAAGF,EAAE0C,KAAKf,EAAG,CAAC,CAAC,SAASiH,GAAG5I,EAAEC,GAAG,IAAIW,GAAGX,EAAEY,KAAKmpB,QAAQ,SAAShqB,EAAEC,GAAG,IAAI,IAAIW,KAAKX,EAAED,EAAEY,GAAGX,EAAEW,GAAG,OAAOZ,CAAC,CAA/C,CAAiDG,OAAOY,OAAOF,KAAKmpB,SAAS/pB,IAAIo3C,MAAM,GAAGz2C,GAAGsnB,QAAQw+B,KAAK,mBAAmBzmD,EAAE6oH,QAAQ,GAAG7oH,EAAE6oH,QAAQ,GAAG,MAAM,IAAIzgG,MAAM,uCAAuC,GAAGpoB,EAAE603C,WAAW703C,EAAEk6Z,WAAW,MAAM,IAAI9xY,MAAM,qDAAqD,IAAI5mB,EAAE,SAASzB,EAAEC,GAAG,IAAIW,EAAE,GAAG,GAAG,sBAAsBZ,EAAEoN,KAAK,IAAI,IAAI3L,EAAE,EAAEA,EAAEzB,EAAEusC,SAASrrC,OAAOO,IAAIwF,EAAErG,EAAEZ,EAAEusC,SAAS9qC,GAAGxB,EAAEwB,QAAQwF,EAAErG,EAAE,YAAYZ,EAAEoN,KAAKpN,EAAE,CAAC4lC,SAAS5lC,GAAGC,GAAG,OAAOW,CAAC,CAAxK,CAA0KZ,EAAEC,GAAGY,KAAK0qC,MAAM,CAAC,EAAE1qC,KAAKwp5C,WAAW,GAAGzp5C,IAAIsnB,QAAQugH,QAAQ,mBAAmBvgH,QAAQgD,IAAI,oCAAoCjrB,EAAEqq5C,aAAarq5C,EAAEsq5C,gBAAgBri4C,QAAQw+B,KAAK,kBAAkB7lD,KAAKymI,MAAM,CAAC,EAAEzmI,KAAKkiD,MAAM,IAAIthD,EAAE,SAASzB,EAAEC,GAAG,IAAIW,EAAEX,EAAE8oB,OAAO9oB,EAAEmrK,OAAO3pK,EAAEzB,EAAEmB,EAAEuG,GAAG1H,EAAE,GAAG,EAAEY,EAAEA,EAAE,GAAG,EAAE,EAAEX,GAAGC,EAAEwH,GAAG1H,EAAE,EAAE,EAAEY,EAAE,EAAEA,EAAE,GAAG,EAAE,EAAEX,GAAG,OAAQkB,GAAGjB,KAAKuB,EAAEiG,GAAG1H,EAAE,GAAGY,EAAE,EAAEA,EAAE,GAAG,EAAE,EAAEX,IAAI,GAAGkB,IAAIM,EAAE2G,GAAGjH,EAAE,GAAG0B,OAAOpB,IAAIvB,IAAIuB,EAAEA,EAAEoB,OAAOuF,GAAGlI,GAAG,MAAMuB,CAAC,CAAlM,CAAoMA,EAAExB,IAAIiB,QAAQL,KAAK2p5C,UAAU/o5C,EAAE,EAAE,EAAE,GAAGb,IAAIa,EAAEP,QAAQgnB,QAAQgD,IAAI,2BAA2BrqB,KAAK0qC,MAAM,GAAG6+2C,YAAYvp5C,KAAK0qC,MAAM,GAAG4xM,WAAWj1N,QAAQugH,QAAQ,kBAAkBvgH,QAAQgD,IAAI,mBAAmBrqB,KAAKkiD,MAAM5nC,KAAKb,UAAUzZ,KAAKymI,QAAS,CAAC,SAASh/H,GAAGtI,EAAEC,EAAEW,GAAG,OAAO,KAAK,GAAGZ,GAAGY,EAAEX,GAAGD,CAAC,CAAC,SAASuJ,GAAGvJ,EAAEC,GAAG,IAAIW,EAAEZ,EAAEq+4C,OAAOzlB,UAAU,IAAI/33C,KAAK4p5C,cAAc,OAAOxq5C,EAAE,KAAK,MAAM,IAAIwB,EAAEZ,KAAK4p5C,cAAc7u/B,QAAQh7Z,EAAE4F,EAAE5F,EAAEkE,EAAElE,EAAEiD,GAAG,IAAIpC,EAAE,OAAOxB,EAAE,KAAK,MAAM,IAAIkB,EAAE,IAAI6B,EAAEvB,EAAE8qC,UAAUrsC,EAAEkE,EAAEjD,GAAG,IAAIjB,EAAE8oB,YAAY9oB,EAAE+oB,aAAa/oB,EAAE6oB,OAAOE,aAAa/oB,EAAE,IAAIsgB,WAAWtgB,IAAID,EAAE,KAAK,CAACwo5C,WAAWtn5C,EAAE+ugC,QAAQhwgC,EAAE6oB,QAAS,CAACxiB,EAAEhG,UAAUmlJ,KAAK,SAAS1lJ,GAAG,IAAIC,EAAEY,KAAKmpB,QAAQppB,EAAEX,EAAEirB,IAAIzpB,EAAExB,EAAE8oH,QAAQ5nH,EAAElB,EAAE6oH,QAAQ5oH,EAAED,EAAE+4Z,SAASp4Z,GAAGsnB,QAAQw+B,KAAK,cAAc,IAAI7kD,EAAE,WAAW7B,EAAEkB,OAAO,UAAUN,GAAGsnB,QAAQw+B,KAAK7kD,GAAGhB,KAAKsrC,OAAOnsC,EAAE,IAAI,IAAI2B,EAAE,GAAG0B,EAAE,EAAEA,EAAErD,EAAEkB,OAAOmC,IAAIrD,EAAEqD,GAAGuiC,UAAUjkC,EAAEe,KAAKgD,EAAE1F,EAAEqD,GAAGA,IAAIxC,KAAK25Z,MAAMr5Z,EAAE,GAAG,IAAI0E,EAAElE,EAAEiE,EAAEP,EAAEnF,EAAE2gB,cAAcjgB,GAAGsnB,QAAQugH,QAAQ5mI,GAAG,IAAI,IAAIqB,EAAE/B,EAAE+B,GAAGzB,EAAEyB,IAAI,CAAC,IAAIO,GAAG4oB,KAAKC,MAAM3qB,EAAEd,KAAKi6Z,SAASn5Z,EAAEuB,GAAGrC,KAAK25Z,MAAMt3Z,GAAG,IAAI2C,EAAElE,EAAEiE,EAAEP,EAAEnF,EAAE2gB,cAAcjgB,GAAGsnB,QAAQgD,IAAI,2BAA2BhoB,EAAEvB,EAAET,QAAQmrB,KAAKC,MAAM7oB,EAAG,CAAC,OAAO7C,GAAGsnB,QAAQugH,QAAQ,cAAc5nI,IAAI,EAAE0F,EAAEhG,UAAUqvZ,YAAY,SAAS5vZ,EAAEC,GAAG,IAAIW,IAAIZ,EAAE,GAAG,KAAK,IAAI,KAAK,IAAI,IAAIyB,EAAEiC,KAAK8K,KAAK,GAAG9K,KAAKgL,IAAI,GAAG1O,EAAE,KAAKmB,EAAE,MAAMnB,EAAE,GAAG,MAAMA,EAAE,GAAG,KAAK,IAAI,KAAK,IAAI,IAAIE,EAAEwD,KAAK8K,KAAK,GAAG9K,KAAKgL,IAAI,GAAG1O,EAAE,KAAK,GAAGA,EAAE,GAAGA,EAAE,IAAI,IAAIY,GAAG,IAAIO,EAAE,SAAS,GAAGP,EAAEO,EAAE,CAAC,IAAIU,EAAEhB,KAAK+uZ,YAAY,CAAChvZ,EAAEa,EAAE,IAAIvB,GAAGD,GAAG0B,EAAEd,KAAK+uZ,YAAY,EAAE,IAAInuZ,EAAEN,EAAEjB,GAAGD,GAAG,OAAO4B,EAAEgB,OAAOlB,EAAE,CAAC,IAAI,IAAI0B,EAAExC,KAAK25Z,MAAM35Z,KAAKo6Z,WAAWh7Z,IAAIiD,EAAE,GAAGO,EAAE,EAAE/B,EAAE2B,EAAEu/H,MAAMt8H,EAAE1F,GAAGqE,EAAE/E,GAAGoG,EAAEnF,GAAG8D,EAAExD,IAAIgC,EAAE/B,EAAER,OAAOuC,GAAG,EAAE,CAAC,IAAIE,EAAEN,EAAE8oC,OAAOzqC,EAAE+B,IAAIP,EAAER,KAAKiB,EAAEw5O,UAAUv2O,EAAEjD,GAAG9C,KAAKsrC,OAAOxoC,EAAEka,OAAQ,CAAC,OAAO3a,CAAC,EAAEqD,EAAEhG,UAAU46Z,YAAY,SAASn7Z,GAAG,IAAIC,EAAEY,KAAKy6Z,aAAat7Z,GAAGY,EAAEC,KAAK26Z,eAAex7Z,GAAGyB,EAAE,oCAAoCN,EAAEN,KAAK25Z,MAAM55Z,GAAG,IAAIO,EAAE,MAAM,IAAIknB,MAAM5mB,GAAG,IAAIvB,EAAEiB,EAAEgrC,OAAOlsC,GAAG,IAAIC,EAAE,MAAM,IAAImoB,MAAM5mB,GAAG,IAAI,IAAII,EAAEhB,KAAKmpB,QAAQmuH,QAAQt3I,KAAKmpB,QAAQohJ,OAAO1nK,KAAK6yF,IAAI,EAAE31F,EAAE,IAAIe,EAAE,GAAG0B,EAAE,EAAEH,EAAE/B,EAAEw4Z,OAAOz5Z,EAAE4E,EAAE5E,EAAE2D,EAAEhC,GAAGwB,EAAEH,EAAEhC,OAAOmC,GAAG,EAAE,CAAC,IAAII,EAAEtC,EAAEgrC,OAAOjpC,EAAEG,IAAII,EAAEm3J,WAAW56J,GAAG2B,EAAEe,KAAKe,EAAE05O,UAAUv2O,EAAEnD,GAAG5C,KAAKsrC,OAAO1oC,EAAEoa,OAAQ,CAAC,GAAG,IAAIlc,EAAET,OAAO,MAAM,IAAImnB,MAAM5mB,GAAG,OAAOE,CAAC,EAAE4E,EAAEhG,UAAUk7Z,UAAU,SAASz7Z,EAAEC,EAAEW,GAAG,IAAIa,EAAE,GAAG,OAAOZ,KAAK86Z,cAAcl6Z,EAAEzB,EAAEC,EAAEA,GAAG,GAAGW,EAAEA,GAAG,EAAE,GAAGa,CAAC,EAAE8E,EAAEhG,UAAUq7Z,QAAQ,SAAS57Z,EAAEC,EAAEW,GAAG,IAAIa,EAAEZ,KAAK25Z,MAAM35Z,KAAKo6Z,WAAWj7Z,IAAImB,EAAEuC,KAAK6yF,IAAI,EAAEv2F,GAAGE,EAAEW,KAAKmpB,QAAQnoB,EAAE3B,EAAEi4I,OAAOj4I,EAAEkrK,OAAOzpK,GAAGf,EAAEiB,GAAGV,EAAEkC,GAAGzC,EAAE,EAAEiB,GAAGV,EAAE+B,EAAE,CAACqpC,SAAS,IAAI,OAAO1rC,KAAKg7Z,iBAAiBp6Z,EAAEmhI,OAAO3iI,EAAE4B,GAAGV,EAAEQ,GAAG1B,EAAE,EAAE4B,GAAGV,EAAEkC,GAAG5B,EAAE0qC,OAAOlsC,EAAEW,EAAEO,EAAE+B,GAAG,IAAIjD,GAAGY,KAAKg7Z,iBAAiBp6Z,EAAEmhI,MAAM,EAAE/gI,EAAEV,EAAEQ,EAAE,EAAE0B,GAAG5B,EAAE0qC,OAAOhrC,EAAEP,EAAEO,EAAE+B,GAAGjD,IAAIkB,EAAE,GAAGN,KAAKg7Z,iBAAiBp6Z,EAAEmhI,MAAM,EAAEjhI,EAAEE,EAAEV,EAAEkC,GAAG5B,EAAE0qC,QAAQ,EAAEvrC,EAAEO,EAAE+B,GAAGA,EAAEqpC,SAASrrC,OAAOgC,EAAE,IAAI,EAAEqD,EAAEhG,UAAUu7Z,wBAAwB,SAAS97Z,GAAG,IAAI,IAAIC,EAAEY,KAAK26Z,eAAex7Z,GAAG,EAAEC,GAAGY,KAAKmpB,QAAQ8+F,SAAS,CAAC,IAAIloH,EAAEC,KAAKs6Z,YAAYn7Z,GAAG,GAAGC,IAAI,IAAIW,EAAEM,OAAO,MAAMlB,EAAEY,EAAE,GAAGyoC,WAAW2yX,UAAW,CAAC,OAAO/7Z,CAAC,EAAEsG,EAAEhG,UAAUo7Z,cAAc,SAAS37Z,EAAEC,EAAEW,EAAEa,EAAEN,GAAG,IAAI,IAAIjB,EAAE,EAAE2B,EAAEhB,KAAKs6Z,YAAYl7Z,GAAGC,EAAE2B,EAAEX,OAAOhB,GAAG,EAAE,CAAC,IAAIyB,EAAEE,EAAE3B,GAAGmD,EAAE1B,EAAE0nC,WAAW,GAAGhmC,GAAGA,EAAE2mZ,QAAQ7oZ,EAAEkC,EAAE64Z,aAAaz6Z,EAAEN,GAAGkC,EAAE64Z,YAAY/6Z,EAAEN,KAAK86Z,cAAc37Z,EAAEqD,EAAE24Z,WAAWp7Z,EAAEa,EAAEN,GAAGA,EAAEM,EAAEN,IAAInB,EAAE0C,KAAKf,GAAG3B,EAAEkB,SAASN,EAAE,KAAK,CAAC,OAAOO,CAAC,EAAEoF,EAAEhG,UAAUs7Z,iBAAiB,SAAS77Z,EAAEC,EAAEW,EAAEa,EAAEN,EAAEjB,GAAG,IAAI,IAAI2B,EAAE,EAAEF,EAAE3B,EAAE6B,EAAEF,EAAET,OAAOW,GAAG,EAAE,CAAC,IAAIwB,EAAEpD,EAAE0B,EAAEE,IAAIqB,EAAEG,EAAE85O,UAAU15O,EAAE,CAAC2J,KAAK,EAAEw4B,SAAS,CAAC,CAACliC,KAAKogD,MAAMjjD,KAAKmpB,QAAQohJ,QAAQ/nK,EAAEyB,EAAE3D,EAAEP,IAAI8C,KAAKogD,MAAMjjD,KAAKmpB,QAAQohJ,QAAQ/nK,EAAEQ,EAAE1C,EAAEM,MAAMy5D,KAAKh4D,EAAEsC,EAAEnC,GAAGxC,KAAKsrC,OAAO9oC,EAAEwa,OAAOwrB,YAAY3nC,OAAE,EAAOwB,EAAExB,EAAE2B,EAAE+oB,GAAGvrB,KAAKmpB,QAAQmwY,WAAWz4Z,EAAE2B,EAAEwa,MAAMhd,KAAKsrC,OAAO9oC,EAAEwa,OAAOuO,KAAK1qB,EAAEb,KAAKsrC,OAAO9oC,EAAEwa,OAAOuO,SAAI,IAAS1qB,IAAI+B,EAAE2oB,GAAG1qB,GAAGxB,EAAEqsC,SAAS7pC,KAAKe,EAAG,CAAC,EAAE8C,EAAEhG,UAAU06Z,WAAW,SAASj7Z,GAAG,OAAO0D,KAAK8K,IAAI3N,KAAKmpB,QAAQ++F,QAAQrlH,KAAKgL,KAAK1O,EAAEa,KAAKmpB,QAAQ8+F,QAAQ,GAAG,EAAEviH,EAAEhG,UAAUu6Z,SAAS,SAAS96Z,EAAEC,GAAG,IAAI,IAAIW,EAAE,GAAGa,EAAEZ,KAAKmpB,QAAQ7oB,EAAEM,EAAE8yB,OAAOr0B,EAAEuB,EAAEy4Z,UAAUr4Z,EAAEJ,EAAE02I,QAAQ12I,EAAE2pK,OAAO1nK,KAAK6yF,IAAI,EAAEt2F,IAAI0B,EAAE,EAAEA,EAAE3B,EAAEkB,OAAOS,IAAI,CAAC,IAAI0B,EAAErD,EAAE2B,GAAG,KAAK0B,EAAEm9B,MAAMvgC,GAAG,CAACoD,EAAEm9B,KAAKvgC,EAAE,IAAI,IAAIiD,EAAErC,KAAK25Z,MAAMv6Z,EAAE,GAAGwD,EAAEP,EAAEy2Z,OAAOt2Z,EAAEyB,EAAEzB,EAAEQ,EAAEhC,GAAGH,EAAE2B,EAAE85O,WAAW,EAAEx5O,EAAEjC,EAAE6B,EAAE,EAAEC,EAAEC,EAAEF,EAAEC,EAAEtC,OAAOqC,GAAG,EAAE,CAAC,IAAIP,EAAEE,EAAEipC,OAAO3oC,EAAED,IAAIP,EAAEw9B,KAAKvgC,IAAI0D,GAAGX,EAAEm6O,WAAW,EAAG,CAAC,GAAGx5O,GAAGzD,EAAE,CAAC,IAAI,IAAI4D,EAAET,EAAEyB,EAAEpD,EAAEuC,EAAEZ,EAAEQ,EAAEnC,EAAEmC,EAAE1C,GAAGO,EAAE,EAAEb,KAAKilM,KAAKziM,GAAE,GAAI,KAAKyB,GAAGnD,GAAG,IAAI1B,EAAE,GAAGY,KAAKsrC,OAAOjrC,OAAOkD,EAAE,EAAEC,EAAEZ,EAAEW,EAAEC,EAAEnD,OAAOkD,GAAG,EAAE,CAAC,IAAIM,EAAExB,EAAEipC,OAAO9nC,EAAED,IAAI,KAAKM,EAAE87B,MAAMvgC,GAAG,CAACyE,EAAE87B,KAAKvgC,EAAE,IAAIyG,EAAEhC,EAAEy4O,WAAW,EAAEr5O,GAAGY,EAAEI,EAAE4B,EAAEzC,GAAGS,EAAEb,EAAE6C,EAAEhC,EAAEk2J,SAAS91J,EAAE3D,IAAI0C,IAAIA,EAAEhD,KAAKilM,KAAKziM,GAAE,IAAKlC,EAAE0C,EAAEhD,KAAKilM,KAAKphM,IAAK,CAAC,CAACrB,EAAEu3J,SAAS91J,EAAElE,EAAE8B,KAAK4C,EAAExB,EAAEH,EAAEM,EAAEN,EAAEmB,EAAEnB,EAAEE,GAAI,MAAM,GAAGjD,EAAE8B,KAAKW,GAAGM,EAAE,EAAE,IAAI,IAAIQ,EAAE,EAAEM,EAAEhB,EAAEU,EAAEM,EAAEvD,OAAOiD,GAAG,EAAE,CAAC,IAAII,EAAErB,EAAEipC,OAAO1nC,EAAEN,IAAII,EAAEi8B,MAAMvgC,IAAIsE,EAAEi8B,KAAKvgC,EAAEW,EAAE8B,KAAK6B,GAAI,CAAC,CAAC,CAAC,OAAO3D,CAAC,EAAE2F,EAAEhG,UAAU+6Z,aAAa,SAASt7Z,GAAG,OAAOA,EAAEa,KAAKsrC,OAAOjrC,QAAQ,CAAC,EAAEqF,EAAEhG,UAAUi7Z,eAAe,SAASx7Z,GAAG,OAAQA,EAAEa,KAAKsrC,OAAOjrC,QAAQ,EAAE,EAAEqF,EAAEhG,UAAUulM,KAAK,SAAS9lM,EAAEC,GAAG,GAAGD,EAAEm9O,UAAU,OAAOl9O,EAAEwG,EAAE,CAAC,EAAEzG,EAAEqpC,YAAYrpC,EAAEqpC,WAAW,IAAIzoC,EAAEC,KAAKsrC,OAAOnsC,EAAE6d,OAAOwrB,WAAW5nC,EAAEZ,KAAKmpB,QAAQkG,IAAItvB,GAAG,OAAOX,GAAGwB,IAAIb,EAAE6F,EAAE,CAAC,EAAEhF,GAAGA,CAAC,EAAEmH,GAAGrI,UAAUypB,QAAQ,CAAC8+F,QAAQ,GAAGwhyC,aAAa,EAAEC,eAAe,IAAI9guC,UAAU,EAAEre,OAAO,KAAKriJ,OAAO,GAAGys2C,aAAY,EAAGV,UAAU,KAAK369B,YAAW,EAAG9iX,MAAM,GAAGzuC,GAAGrI,UAAUiq5C,UAAU,SAASxq5C,EAAEC,EAAEW,EAAEa,EAAEN,EAAEjB,EAAE2B,GAAG,IAAI,IAAIF,EAAE,CAAC3B,EAAEC,EAAEW,EAAEa,GAAG4B,EAAExC,KAAKmpB,QAAQ9mB,EAAEG,EAAEg0C,MAAM11C,EAAET,QAAQ,CAACO,EAAEE,EAAEc,MAAM7B,EAAEe,EAAEc,MAAMxC,EAAE0B,EAAEc,MAAMzC,EAAE2B,EAAEc,MAAM,IAAIgB,EAAE,GAAGxD,EAAEyB,EAAE4G,GAAGrI,EAAEW,EAAEa,GAAGkC,EAAE9C,KAAK0qC,MAAM7pC,GAAG,IAAIiC,IAAIT,EAAE,GAAGglB,QAAQw+B,KAAK,YAAY/iD,EAAE9C,KAAK0qC,MAAM7pC,GAAGyG,GAAGnI,EAAEC,EAAEW,EAAEa,EAAE4B,GAAGxC,KAAKwp5C,WAAW3n5C,KAAK,CAAC8D,EAAEvG,EAAE6E,EAAElE,EAAEiD,EAAEpC,IAAIyB,GAAG,CAACA,EAAE,IAAIglB,QAAQgD,IAAI,4DAA4DjrB,EAAEW,EAAEa,EAAEkC,EAAEym5C,YAAYzm5C,EAAEw5O,UAAUx5O,EAAEwm5C,eAAeji4C,QAAQugH,QAAQ,aAAa,IAAIllI,EAAE,IAAItD,EAAEY,KAAKymI,MAAM/jI,IAAI1C,KAAKymI,MAAM/jI,IAAI,GAAG,EAAE1C,KAAKkiD,OAAQ,CAAC,GAAGp/C,EAAE+E,OAAO1I,EAAEmB,EAAE,CAAC,GAAGlB,IAAIoD,EAAEylH,SAAS7oH,IAAIkB,EAAE,SAAS,IAAIqC,EAAE,GAAGrC,EAAElB,EAAE,GAAGW,IAAI8C,KAAKyK,MAAMjO,EAAEsD,IAAI/B,IAAIiC,KAAKyK,MAAMtM,EAAE2B,GAAG,QAAQ,MAAM,GAAGvD,IAAIoD,EAAEin5C,cAAc3m5C,EAAEw5O,WAAW95O,EAAEkn5C,eAAe,SAAS,GAAG5m5C,EAAE+E,OAAO,KAAK,IAAI1I,EAAEkB,OAAO,CAACgC,EAAE,GAAGglB,QAAQw+B,KAAK,YAAY,IAAI1jD,EAAEc,EAAEG,EAAEJ,EAAEiB,EAAEV,EAAEC,EAAE,GAAGhB,EAAE0lB,OAAO1lB,EAAE+nK,OAAO1mK,EAAE,GAAGL,EAAEqC,EAAE,GAAGrC,EAAEF,EAAE,EAAEE,EAAErB,EAAEc,EAAEG,EAAEJ,EAAE,KAAKiB,EAAE4C,GAAG1H,EAAEyD,EAAE7C,EAAEyD,EAAEzD,EAAE8F,EAAE,EAAE/C,EAAEy3K,KAAKz3K,EAAE23K,KAAKj4K,GAAGe,EAAEsD,GAAG1H,EAAEyD,EAAE7C,EAAE8D,EAAE9D,EAAEuD,EAAE,EAAER,EAAEy3K,KAAKz3K,EAAE23K,KAAKj4K,GAAGrD,EAAE,KAAK8E,IAAI9B,EAAE0E,GAAG5C,EAAErB,EAAEhC,EAAE4C,EAAE5C,EAAEiF,EAAE,EAAE/C,EAAE03K,KAAK13K,EAAE43K,KAAKl4K,GAAGS,EAAE4D,GAAG5C,EAAErB,EAAEhC,EAAEiD,EAAEjD,EAAE0C,EAAE,EAAER,EAAE03K,KAAK13K,EAAE43K,KAAKl4K,GAAGyB,EAAE,MAAMV,IAAIH,EAAEyD,GAAGtD,EAAEX,EAAEhC,EAAE4C,EAAE5C,EAAEiF,EAAE,EAAE/C,EAAE03K,KAAK13K,EAAE43K,KAAKl4K,GAAGQ,EAAE6D,GAAGtD,EAAEX,EAAEhC,EAAEiD,EAAEjD,EAAE0C,EAAE,EAAER,EAAE03K,KAAK13K,EAAE43K,KAAKl4K,GAAGe,EAAE,MAAMlB,EAAE,GAAGglB,QAAQugH,QAAQ,YAAY9mI,EAAEe,KAAKM,GAAG,GAAG/C,EAAE,EAAE,EAAEW,EAAE,EAAEa,GAAGE,EAAEe,KAAKoB,GAAG,GAAG7D,EAAE,EAAE,EAAEW,EAAE,EAAEa,EAAE,GAAGE,EAAEe,KAAKuB,GAAG,GAAGhE,EAAE,EAAE,EAAEW,EAAE,EAAE,EAAEa,GAAGE,EAAEe,KAAKmB,GAAG,GAAG5D,EAAE,EAAE,EAAEW,EAAE,EAAE,EAAEa,EAAE,EAAG,CAAC,CAAC,EAAEmH,GAAGrI,UAAUq7Z,QAAQ,SAAS57Z,EAAEC,EAAEW,GAAG,IAAIa,EAAEZ,KAAKmpB,QAAQ7oB,EAAEM,EAAE2pK,OAAOlrK,EAAEuB,EAAE41C,MAAM,GAAGr3C,EAAE,GAAGA,EAAE,GAAG,OAAO,KAAK,IAAI6B,EAAE,GAAG7B,EAAE2B,EAAE2G,GAAGtI,EAAEC,GAAGA,EAAE4B,EAAEA,GAAGA,EAAEjB,GAAG,GAAGC,KAAK0qC,MAAM5pC,GAAG,OAAO0G,GAAGxH,KAAK0qC,MAAM5pC,GAAGR,GAAGjB,EAAE,GAAGgoB,QAAQgD,IAAI,6BAA6BlrB,EAAEC,EAAEW,GAAG,IAAI,IAAIyC,EAAEH,EAAElD,EAAEyD,EAAExD,EAAEyB,EAAEd,GAAGyC,GAAGH,EAAE,GAAGA,IAAIO,EAAEC,KAAKyK,MAAM1K,EAAE,GAAG/B,EAAEgC,KAAKyK,MAAMzM,EAAE,GAAG2B,EAAExC,KAAK0qC,MAAMjjC,GAAGpF,EAAEO,EAAE/B,IAAI,OAAO2B,GAAGA,EAAEqF,QAAQxI,EAAE,GAAGgoB,QAAQgD,IAAI,8BAA8BhoB,EAAEO,EAAE/B,GAAGxB,EAAE,GAAGgoB,QAAQw+B,KAAK,iBAAiB7lD,KAAK2p5C,UAAUnn5C,EAAEqF,OAAOxF,EAAEO,EAAE/B,EAAE1B,EAAEC,EAAEW,GAAGV,EAAE,GAAGgoB,QAAQugH,QAAQ,iBAAiB5nI,KAAK0qC,MAAM5pC,GAAG0G,GAAGxH,KAAK0qC,MAAM5pC,GAAGR,GAAG,MAAM,IAAI,EAAE,IAAI6H,GAAG,SAAS/I,GAAG,SAASW,EAAEZ,EAAEY,EAAEa,EAAEN,GAAGlB,EAAEQ,KAAKI,KAAKb,EAAEY,EAAEa,EAAE8H,IAAIpI,IAAIN,KAAK6p5C,YAAYvp5C,EAAG,CAAC,OAAOlB,IAAIW,EAAEP,UAAUJ,IAAIW,EAAEL,UAAUJ,OAAOY,OAAOd,GAAGA,EAAEM,YAAYO,YAAYF,EAAEA,EAAEL,UAAUkiL,SAAS,SAASziL,EAAEC,GAAGY,KAAK8p5C,kBAAkB9p5C,KAAK8p5C,iBAAiB,KAAK,CAACC,WAAU,IAAK/p5C,KAAK8p5C,iBAAiB1q5C,EAAEY,KAAKgq5C,uBAAuB7q5C,EAAEa,KAAKimB,QAAQ,SAASjmB,KAAKimB,OAAOjmB,KAAKimB,OAAO,iBAAiBjmB,KAAKimB,OAAO,aAAajmB,KAAKshL,YAAa,EAAEvhL,EAAEL,UAAU4hL,UAAU,WAAW,IAAIliL,EAAEY,KAAK,GAAGA,KAAK8p5C,kBAAkB9p5C,KAAKgq5C,uBAAuB,CAAC,IAAIjq5C,EAAEC,KAAK8p5C,iBAAiBlp5C,EAAEZ,KAAKgq5C,8BAA8Bhq5C,KAAK8p5C,wBAAwB9p5C,KAAKgq5C,uBAAuB,IAAI1p5C,KAAKM,GAAGA,EAAEmkE,SAASnkE,EAAEmkE,QAAQmj1C,wBAAwB,IAAI/o5C,EAAEoj5C,mBAAmB3h5C,EAAEmkE,SAAS/kE,KAAK6p5C,YAAYjp5C,GAAE,SAAUvB,EAAE2B,GAAG,GAAG3B,IAAI2B,EAAE,OAAOjB,EAAEV,GAAG,GAAG,iBAAiB2B,EAAE,OAAOjB,EAAE,IAAIynB,MAAM,wBAAwB5mB,EAAEiH,OAAO,sCAAsC,SAAS1I,EAAEC,EAAEW,GAAG,IAAIa,EAAEN,EAAElB,GAAGA,EAAEmN,KAAK,GAAG,sBAAsBjM,EAAE,IAAIM,EAAE,EAAEA,EAAExB,EAAEssC,SAASrrC,OAAOO,IAAIzB,EAAEC,EAAEssC,SAAS9qC,GAAGb,QAAQ,GAAG,uBAAuBO,EAAE,IAAIM,EAAE,EAAEA,EAAExB,EAAE60O,WAAW5zO,OAAOO,IAAIzB,EAAEC,EAAE60O,WAAWrzO,GAAGb,QAAQ,GAAG,YAAYO,EAAEnB,EAAEC,EAAE2lC,SAAShlC,QAAQ,GAAG,YAAYO,EAAEO,EAAEzB,EAAE0lC,YAAY/kC,QAAQ,GAAG,iBAAiBO,EAAE,IAAIM,EAAE,EAAEA,EAAExB,EAAE0lC,YAAYzkC,OAAOO,IAAIC,EAAEzB,EAAE0lC,YAAYlkC,GAAGb,GAAG,OAAOX,CAAC,CAAnX,CAAqX4B,GAAE,GAAI,IAAI,GAAGJ,EAAEisB,OAAO,CAAC,IAAI/rB,EAAE3B,EAAEql5C,iBAAiB5j5C,EAAEisB,OAAO,CAACtgB,KAAK,UAAU,gBAAgB,cAAcqq3C,aAAY,EAAG9uwC,YAAW,IAAK,GAAG,UAAUhnH,EAAE0iB,OAAO,MAAM,IAAIgE,MAAM1mB,EAAEK,MAAMkuB,KAAI,SAAUlwB,GAAG,OAAOA,EAAE0lB,IAAI,KAAK1lB,EAAE4yB,OAAQ,IAAGllB,KAAK,OAAO,IAAIrK,EAAExB,EAAE0qC,SAAS7e,QAAO,SAAU1tB,GAAG,OAAO2B,EAAEK,MAAMmzgB,SAAS,CAAC30e,KAAK,GAAGxgC,EAAG,IAAG6B,EAAE,CAACuL,KAAK,oBAAoBm/B,SAASlpC,EAAG,CAACpD,EAAEwq5C,cAAchp5C,EAAEuoZ,QAAQ,IAAIzjZ,EAAE,SAAStG,GAAG,IAAIW,EAAEX,EAAE6q5C,oBAAoBrp5C,EAAExB,EAAE08Z,kBAAkB,IAAIl7Z,IAAIb,EAAE,OAAOA,EAAE,IAAI,IAAIO,EAAE,CAAC,EAAEjB,EAAE,CAAC,EAAE2B,EAAE,CAACg53C,YAAY,KAAKr61C,KAAK,GAAG7+B,EAAE,CAAC0nC,WAAW,MAAMhmC,EAAElD,OAAOgU,KAAK1S,GAAGyB,EAAE,EAAEO,EAAEJ,EAAEH,EAAEO,EAAEvC,OAAOgC,GAAG,EAAE,CAAC,IAAIxB,EAAE+B,EAAEP,GAAGS,EAAElC,EAAEC,GAAG6B,EAAEI,EAAE,GAAGH,EAAExD,EAAEql5C,iBAAiB1h5C,EAAE,IAAIX,EAAEhD,EAAEql5C,iBAAiB,iBAAiB9h5C,EAAE,CAACA,EAAE,CAAC,eAAe,CAAC,MAAM7B,IAAI6B,GAAGpC,EAAEO,GAAG8B,EAAExB,MAAM9B,EAAEwB,GAAGsB,EAAEhB,KAAM,CAAC,OAAOpB,EAAEsvB,IAAI,SAASlwB,GAAG2B,EAAE0nC,WAAWrpC,EAAE,IAAI,IAAIC,EAAE,CAAC,EAAEW,EAAE,EAAEa,EAAE4B,EAAEzC,EAAEa,EAAEP,OAAON,GAAG,EAAE,CAAC,IAAIV,EAAEuB,EAAEb,GAAGX,EAAEC,GAAGiB,EAAEjB,GAAGi1gB,SAAStzgB,EAAEF,EAAG,CAAC,OAAO1B,CAAC,EAAEW,EAAE2zB,OAAO,SAASv0B,EAAEC,GAAG0B,EAAE0nC,WAAWppC,EAAE,IAAI,IAAIW,EAAE,EAAEa,EAAE4B,EAAEzC,EAAEa,EAAEP,OAAON,GAAG,EAAE,CAAC,IAAIO,EAAEM,EAAEb,GAAGiB,EAAEg53C,YAAY763C,EAAEmB,GAAGnB,EAAEmB,GAAGjB,EAAEiB,GAAGg0gB,SAAStzgB,EAAEF,EAAG,CAAC,EAAEf,CAAC,CAAllB,CAAolBa,IAAIikJ,KAAK7jJ,EAAE0qC,UAAU,SAASvsC,EAAEC,GAAG,OAAO,IAAI2I,GAAG5I,EAAEC,EAAE,CAAhC,CAAkC4B,EAAEJ,EAAEsp5C,iBAAkB,CAAC,MAAM7q5C,GAAG,OAAOU,EAAEV,EAAE,CAACD,EAAE+3M,OAAO,CAAC,EAAE,IAAI90M,EAAE,CAAC,EAAE,GAAG/B,EAAE,CAAC,IAAIsC,EAAEtC,EAAEgoE,SAAS1lE,IAAIP,EAAEkm5C,eAAe,CAAC,EAAElm5C,EAAEkm5C,eAAe3n5C,EAAEiH,QAAQyS,KAAKiS,MAAMjS,KAAKb,UAAU7W,IAAK,CAAC7C,EAAE,KAAKsC,EAAI,GAAG,CAAC,EAAEtC,EAAEL,UAAU+53C,SAAS,WAAW,eAAez53C,KAAKimB,OAAOjmB,KAAKimB,OAAO,OAAO,kBAAkBjmB,KAAKimB,SAASjmB,KAAKimB,OAAO,aAAajmB,KAAKshL,YAAa,EAAEvhL,EAAEL,UAAU8o5C,WAAW,SAASrp5C,EAAEY,GAAG,IAAIa,EAAEZ,KAAKm3M,OAAO,OAAOv2M,GAAGA,EAAEzB,EAAEi0V,KAAKh0V,EAAEM,UAAU8o5C,WAAW5o5C,KAAKI,KAAKb,EAAEY,GAAGC,KAAK8mM,SAAS3nM,EAAEY,EAAE,EAAEA,EAAEL,UAAUmq5C,YAAY,SAASzq5C,EAAEW,GAAG,GAAGX,EAAE2lE,QAAQ5lE,EAAEmm5C,QAAQlm5C,EAAE2lE,QAAQhlE,OAAQ,CAAC,GAAG,iBAAiBX,EAAEoQ,KAAK,OAAOzP,EAAE,IAAIynB,MAAM,wBAAwBpoB,EAAEyI,OAAO,qCAAqC,IAAI,OAAO9H,EAAE,KAAKua,KAAKiS,MAAMntB,EAAEoQ,MAAM,CAAC,MAAMrQ,GAAG,OAAOY,EAAE,IAAIynB,MAAM,wBAAwBpoB,EAAEyI,OAAO,oCAAoC,CAAC,CAAC,EAAE9H,EAAEL,UAAUyq5C,aAAa,SAAShr5C,EAAEC,GAAGY,KAAK8p5C,kBAAkB9p5C,KAAK8p5C,iBAAiB,KAAK,CAACC,WAAU,IAAK3q5C,GAAI,EAAEW,EAAEL,UAAUu7Z,wBAAwB,SAAS97Z,EAAEC,GAAG,IAAIA,EAAE,KAAKY,KAAK4p5C,cAAc3u/B,wBAAwB97Z,EAAEo7Z,WAAY,CAAC,MAAMp7Z,GAAGC,EAAED,EAAG,CAAC,EAAEY,EAAEL,UAAU0q5C,mBAAmB,SAASjr5C,EAAEC,GAAG,IAAIA,EAAE,KAAKY,KAAK4p5C,cAActv/B,YAAYn7Z,EAAEo7Z,WAAY,CAAC,MAAMp7Z,GAAGC,EAAED,EAAG,CAAC,EAAEY,EAAEL,UAAU2q5C,iBAAiB,SAASlr5C,EAAEC,GAAG,IAAIA,EAAE,KAAKY,KAAK4p5C,cAAchv/B,UAAUz7Z,EAAEo7Z,UAAUp7Z,EAAEyjE,MAAMzjE,EAAEgjD,QAAS,CAAC,MAAMhjD,GAAGC,EAAED,EAAG,CAAC,EAAEY,CAAC,CAA7iH,CAA+iHyC,GAAG4F,GAAG,SAAShJ,GAAG,IAAIW,EAAEC,KAAKA,KAAKoC,KAAKhD,EAAEY,KAAKiz3C,MAAM,IAAI9z3C,EAAE2h5C,MAAM1h5C,EAAEY,MAAMA,KAAKsq5C,aAAa,CAAC,EAAEtq5C,KAAK033C,gBAAgB,CAAC,EAAE133C,KAAKuq5C,kBAAkB,CAACtivC,OAAOzlK,EAAEipC,QAAQtjC,IAAInI,KAAKwq5C,cAAc,CAAC,EAAExq5C,KAAKyq5C,iBAAiB,CAAC,EAAEzq5C,KAAKoC,KAAKso5C,qBAAqB,SAASvr5C,EAAEC,GAAG,GAAGW,EAAEwq5C,kBAAkBpr5C,GAAG,MAAM,IAAIqoB,MAAM,4BAA4BroB,EAAE,yBAAyBY,EAAEwq5C,kBAAkBpr5C,GAAGC,CAAE,EAAEY,KAAKoC,KAAKuo5C,sBAAsB,SAASvr5C,GAAG,GAAGD,EAAEw1E,OAAO+ozC,WAAW,MAAM,IAAIl22C,MAAM,uCAAuCroB,EAAEw1E,OAAO4ozC,mBAAmBn+3C,EAAEm+3C,mBAAmBp+3C,EAAEw1E,OAAO6ozC,yBAAyBp+3C,EAAEo+3C,yBAAyBr+3C,EAAEw1E,OAAO8ozC,+BAA+Br+3C,EAAEq+3C,8BAA+B,CAAE,EAAE,OAAOr13C,GAAG1I,UAAUkr5C,YAAY,SAASzr5C,EAAEC,GAAGY,KAAKwuE,SAASpvE,CAAE,EAAEgJ,GAAG1I,UAAUmr5C,UAAU,SAAS1r5C,EAAEC,EAAEW,GAAG,IAAI,IAAIa,KAAKZ,KAAK033C,gBAAgBv43C,GAAGC,EAAEY,KAAKwq5C,cAAcrr5C,GAAG,CAAC,IAAImB,EAAEN,KAAKwq5C,cAAcrr5C,GAAGyB,GAAG,IAAI,IAAIvB,KAAKiB,EAAEA,EAAEjB,GAAGq43C,gBAAgBt43C,CAAE,CAACW,GAAI,EAAEqI,GAAG1I,UAAUinJ,UAAU,SAASxnJ,EAAEC,EAAEW,GAAGC,KAAK8q5C,cAAc3r5C,GAAGsN,QAAQrN,GAAGW,GAAI,EAAEqI,GAAG1I,UAAU8iJ,aAAa,SAASrjJ,EAAEC,EAAEW,GAAGC,KAAK8q5C,cAAc3r5C,GAAGovE,OAAOnvE,EAAE0+B,OAAO1+B,EAAE2r5C,YAAYhr5C,GAAI,EAAEqI,GAAG1I,UAAUonM,SAAS,SAAS3nM,EAAEC,EAAEW,GAAGC,KAAKk64C,gBAAgB/64C,EAAEC,EAAEmN,KAAKnN,EAAEyI,QAAQi/L,SAAS1nM,EAAEW,EAAG,EAAEqI,GAAG1I,UAAUsr5C,YAAY,SAAS7r5C,EAAEC,EAAEW,GAAGC,KAAKir5C,mBAAmB9r5C,EAAEC,EAAEyI,QAAQi/L,SAAS1nM,EAAEW,EAAG,EAAEqI,GAAG1I,UAAU8o5C,WAAW,SAASrp5C,EAAEC,EAAEW,GAAGC,KAAKk64C,gBAAgB/64C,EAAEC,EAAEmN,KAAKnN,EAAEyI,QAAQ2g5C,WAAWpp5C,EAAEW,EAAG,EAAEqI,GAAG1I,UAAUgp5C,UAAU,SAASvp5C,EAAEC,EAAEW,GAAGC,KAAKk64C,gBAAgB/64C,EAAEC,EAAEmN,KAAKnN,EAAEyI,QAAQ6g5C,UAAUtp5C,EAAEW,EAAG,EAAEqI,GAAG1I,UAAUip5C,WAAW,SAASxp5C,EAAEC,EAAEW,GAAGC,KAAKk64C,gBAAgB/64C,EAAEC,EAAEmN,KAAKnN,EAAEyI,QAAQ8g5C,WAAWvp5C,EAAEW,EAAG,EAAEqI,GAAG1I,UAAUwr5C,cAAc,SAAS/r5C,EAAEC,GAAGY,KAAKir5C,mBAAmB9r5C,EAAEC,EAAEyI,QAAQ8g5C,WAAWvp5C,EAAG,EAAEgJ,GAAG1I,UAAUyq5C,aAAa,SAAShr5C,EAAEC,EAAEW,GAAG,GAAGC,KAAKwq5C,cAAcrr5C,IAAIa,KAAKwq5C,cAAcrr5C,GAAGC,EAAEmN,OAAOvM,KAAKwq5C,cAAcrr5C,GAAGC,EAAEmN,MAAMnN,EAAEyI,QAAQ,CAAC,IAAIjH,EAAEZ,KAAKwq5C,cAAcrr5C,GAAGC,EAAEmN,MAAMnN,EAAEyI,eAAe7H,KAAKwq5C,cAAcrr5C,GAAGC,EAAEmN,MAAMnN,EAAEyI,aAAQ,IAASjH,EAAEup5C,aAAavp5C,EAAEup5C,aAAa/q5C,EAAEW,GAAGA,GAAI,CAAC,EAAEqI,GAAG1I,UAAUyr5C,iBAAiB,SAAShs5C,EAAEC,EAAEW,GAAG,IAAIC,KAAKoC,KAAKu+R,cAAcvhS,EAAE8wB,KAAKnwB,GAAI,CAAC,MAAMZ,GAAGY,EAAEZ,EAAEoF,WAAY,CAAC,EAAE6D,GAAG1I,UAAU0r5C,mBAAmB,SAAShs5C,EAAEW,EAAEa,GAAG,IAAIzB,EAAEw1E,OAAO+1D,SAAS3qI,GAAG,IAAIO,EAAEnB,EAAEw1E,OAAOgpzC,eAAe,GAAGx+3C,EAAEw1E,OAAO01D,aAAalrI,EAAEw1E,OAAO+ozC,YAAY,MAAMp93C,EAAE,CAACN,KAAKoC,KAAKu+R,cAAcrgS,GAAG,IAAIjB,EAAEF,EAAEw1E,OAAO+ozC,WAAW983C,EAAEvB,OAAE,EAAO,IAAImoB,MAAM,iDAAiDlnB,GAAGjB,EAAG,CAAC,CAAC,MAAMF,GAAGyB,EAAEzB,EAAEoF,WAAY,CAAC,EAAE6D,GAAG1I,UAAU2r5C,mBAAmB,SAASls5C,GAAG,IAAIC,EAAEY,KAAK033C,gBAAgBv43C,GAAG,OAAOC,IAAIA,EAAE,IAAIA,CAAC,EAAEgJ,GAAG1I,UAAUor5C,cAAc,SAAS3r5C,GAAG,IAAIC,EAAEY,KAAKsq5C,aAAanr5C,GAAG,OAAOC,IAAIA,EAAEY,KAAKsq5C,aAAanr5C,GAAG,IAAIyB,GAAGxB,CAAC,EAAEgJ,GAAG1I,UAAUw64C,gBAAgB,SAAS/64C,EAAEC,EAAEW,GAAG,IAAIa,EAAEZ,KAAK,OAAOA,KAAKwq5C,cAAcrr5C,KAAKa,KAAKwq5C,cAAcrr5C,GAAG,CAAC,GAAGa,KAAKwq5C,cAAcrr5C,GAAGC,KAAKY,KAAKwq5C,cAAcrr5C,GAAGC,GAAG,CAAC,GAAGY,KAAKwq5C,cAAcrr5C,GAAGC,GAAGW,KAAKC,KAAKwq5C,cAAcrr5C,GAAGC,GAAGW,GAAG,IAAIC,KAAKuq5C,kBAAkBnr5C,GAAG,CAACkpB,KAAK,SAASlpB,EAAEW,EAAEO,GAAGM,EAAEqy3C,MAAM3q2C,KAAKlpB,EAAEW,EAAEO,EAAEnB,EAAG,GAAGa,KAAK8q5C,cAAc3r5C,GAAGa,KAAKqr5C,mBAAmBls5C,KAAKa,KAAKwq5C,cAAcrr5C,GAAGC,GAAGW,EAAE,EAAEqI,GAAG1I,UAAUur5C,mBAAmB,SAAS9r5C,EAAEC,GAAG,OAAOY,KAAKyq5C,iBAAiBtr5C,KAAKa,KAAKyq5C,iBAAiBtr5C,GAAG,CAAC,GAAGa,KAAKyq5C,iBAAiBtr5C,GAAGC,KAAKY,KAAKyq5C,iBAAiBtr5C,GAAGC,GAAG,IAAIwD,GAAG5C,KAAKyq5C,iBAAiBtr5C,GAAGC,EAAE,EAAEgJ,GAAG1I,UAAUol5C,sBAAsB,SAAS1l5C,EAAEW,GAAGZ,EAAE2l5C,sBAAsB/k5C,EAAG,EAAE,oBAAoB+v3C,mBAAmB,oBAAoB1t3C,MAAMA,gBAAgB0t3C,oBAAoB1t3C,KAAKm3B,OAAO,IAAInxB,GAAGhG,OAAOgG,EAAG,IAE/inCw4T,EAAO,GAAa,SAAUxhU,GAAgB,IAAID,EAAEC,EAAEml5C,sBAAqB,SAAUnl5C,GAAG,SAASD,EAAEC,GAAG,OAAQwB,EAAExB,EAAE,CAAC,SAASwB,EAAExB,GAAG,MAAO,oBAAoB8C,QAAQ,oBAAoBiD,SAAS,gBAAgB1F,MAAMC,WAAWD,MAAMC,UAAU+oC,OAAOhpC,MAAMC,UAAUmtB,QAAQptB,MAAMC,UAAUwlB,SAASzlB,MAAMC,UAAUc,SAASf,MAAMC,UAAUu+K,aAAax+K,MAAMC,UAAU2vB,KAAK5vB,MAAMC,UAAUioC,MAAMloC,MAAMC,UAAUg0B,QAAQj0B,MAAMC,UAAU+5xC,aAAah6xC,MAAMkS,QAAQ5O,SAASrD,WAAWqD,SAASrD,UAAU2D,KAAK/D,OAAOgU,MAAMhU,OAAOY,QAAQZ,OAAO2b,gBAAgB3b,OAAOqP,qBAAqBrP,OAAOgs5C,UAAUhs5C,OAAOis5C,UAAUjs5C,OAAOkjB,cAAcljB,OAAOmE,0BAA0BnE,OAAO4D,gBAAgB5D,OAAOkU,kBAAkBlU,OAAO0hI,MAAM1hI,OAAOgmC,QAAQhmC,OAAOsjB,kBAAkB,SAAS1gB,QAAQ,UAAUoY,MAAM,cAAcA,KAAK,WAAW,KAAK,WAAWpY,QAAQ,SAASA,QAAQ,QAAQA,QAAQ,OAAO,EAAG,IAAI9C,EAAED,EAAEyB,EAAE,IAAImnB,KAAK,CAAC,IAAI,CAACxb,KAAK,oBAAoBjM,EAAE0nB,IAAIC,gBAAgBrnB,GAAG,IAAIzB,EAAE,IAAIq4B,OAAOl3B,GAAGlB,GAAE,CAAG,CAAC,MAAMD,GAAGC,GAAE,CAAG,CAAC,OAAOD,GAAGA,EAAEyoQ,YAAY5/O,IAAIQ,gBAAgBloB,GAAGlB,CAAC,CAAlP,GAAsP,sBAAsB8C,OAAOoc,YAAY0C,OAAO,WAAW,IAAI5hB,EAAE+F,SAASmE,cAAc,UAAUlK,EAAE2/B,MAAM3/B,EAAE4/B,OAAO,EAAE,IAAI7/B,EAAEC,EAAE2tD,WAAW,MAAM,IAAI5tD,EAAE,OAAO,EAAG,IAAIyB,EAAEzB,EAAE+mP,aAAa,EAAE,EAAE,EAAE,GAAG,OAAOtlP,GAAGA,EAAEm+B,QAAQ3/B,EAAE2/B,KAAK,CAAvK,SAA4K,IAASz+B,EAAEM,EAAExB,GAAGA,EAAEos5C,gCAAgClr5C,EAAEM,GAAG,SAASxB,GAAG,IAAIwB,EAAE,SAASxB,GAAG,IAAIwB,EAAEuE,SAASmE,cAAc,UAAUhJ,EAAEhB,OAAOY,OAAOf,EAAEss5C,wBAAwB,OAAOnr5C,EAAEkr5C,6BAA6Bps5C,EAAEwB,EAAE8q5C,wBAAwB9q5C,EAAE8q5C,wBAAwB,QAAQpr5C,IAAIM,EAAE8q5C,wBAAwB,qBAAqBpr5C,GAAGM,EAAE+q5C,gBAAgB/q5C,EAAE+q5C,gBAAgB,QAAQrr5C,IAAIM,EAAE+q5C,gBAAgB,qBAAqBrr5C,GAAGM,EAAEmsD,WAAW,QAAQzsD,IAAIM,EAAEmsD,WAAW,qBAAqBzsD,EAAE,CAA9Y,CAAgZlB,GAAG,IAAIwB,EAAE,OAAO,EAAG,IAAIN,EAAEM,EAAE+8T,aAAa/8T,EAAEyoS,eAAe,SAAU/oS,GAAGM,EAAEwvT,mBAAmBxvT,EAAEg9T,aAAat9T,EAAE,kBAAkBM,EAAEi9T,cAAcv9T,IAAG,IAAKM,EAAEm9T,mBAAmBz9T,EAAEM,EAAE0oS,gBAAgB,CAAjmB,CAAmmB1oS,IAAIN,EAAEM,QAAG,EAAO,8BAA8B,2CAA2C,mCAAmC,yCAAyC,8BAA8B,4BAA4B,8BAA8B,gCAAgC,4BAA4B,IAAIA,CAAE,CAACxB,EAAEqD,QAAQrD,EAAEqD,QAAQtD,EAAE+C,SAASA,OAAOw52C,SAASx52C,OAAOw52C,UAAU,CAAC,EAAEx52C,OAAOw52C,SAASvulC,UAAUhuR,EAAE+C,OAAOw52C,SAASkwC,mBAAmBhr5C,GAAG,IAAIN,EAAE,CAAC,EAAEnB,EAAEss5C,uBAAuB,CAACI,WAAU,EAAGxmoC,OAAM,EAAG85D,SAAQ,EAAG5nM,OAAM,EAAK,IAAG32I,EAAE,CAACV,OAAO,SAASf,EAAEyB,EAAEN,GAAG,IAAIP,EAAEX,EAAE8C,OAAOiD,SAASmE,cAAcnK,GAAG,YAAO,IAASyB,IAAIb,EAAE6vF,UAAUhvF,GAAGN,GAAGA,EAAEiU,YAAYxU,GAAGA,CAAC,EAAE+r5C,SAAS,SAAS3s5C,EAAEyB,GAAG,OAAOxB,EAAE8C,OAAOiD,SAASq3vB,gBAAgBr9vB,EAAEyB,EAAE,GAAGN,EAAElB,EAAE8C,OAAOiD,UAAU/F,EAAE8C,OAAOiD,SAASk+F,gBAAgBhvF,MAAM,SAAStU,EAAEX,GAAG,IAAIkB,EAAE,OAAOlB,EAAE,GAAG,IAAI,IAAID,EAAE,EAAEA,EAAEC,EAAEiB,OAAOlB,IAAI,GAAGC,EAAED,KAAKmB,EAAE,OAAOlB,EAAED,GAAG,OAAOC,EAAE,EAAE,CAAC,IAAI4B,EAAE3B,EAAEU,EAAE,CAAC,aAAa,gBAAgB,mBAAmB,iBAAiBa,EAAEmr5C,YAAY,WAAWzr5C,GAAGjB,IAAI2B,EAAEV,EAAEjB,GAAGiB,EAAEjB,GAAG,OAAQ,EAAEuB,EAAEor5C,WAAW,WAAW1r5C,GAAGjB,IAAIiB,EAAEjB,GAAG2B,EAAG,EAAE,IAAIF,EAAEf,EAAE,CAAC,YAAY,oBAAoBa,EAAE+nnB,aAAa,SAASvpnB,EAAED,GAAGC,EAAEiV,MAAMvT,GAAG3B,CAAE,EAAE,IAAIqD,GAAE,EAAG,IAAI,IAAI3B,EAAEvB,OAAO4D,eAAe,CAAC,EAAE,UAAU,CAACC,IAAI,WAAWX,GAAE,CAAG,IAAIpD,EAAE8C,OAAOyqB,iBAAiB,OAAO9rB,EAAEA,GAAGzB,EAAE8C,OAAOmnB,oBAAoB,OAAOxoB,EAAEA,EAAG,CAAC,MAAMzB,GAAGoD,GAAE,CAAG,CAAC5B,EAAE+rB,iBAAiB,SAASvtB,EAAED,EAAEyB,EAAEN,QAAG,IAASA,IAAIA,EAAE,CAAC,GAAGlB,EAAEutB,iBAAiBxtB,EAAEyB,EAAE,YAAYN,GAAGkC,EAAElC,EAAEA,EAAEmvC,QAAS,EAAE7uC,EAAEyoB,oBAAoB,SAASjqB,EAAED,EAAEyB,EAAEN,QAAG,IAASA,IAAIA,EAAE,CAAC,GAAGlB,EAAEiqB,oBAAoBlqB,EAAEyB,EAAE,YAAYN,GAAGkC,EAAElC,EAAEA,EAAEmvC,QAAS,EAAE,IAAIptC,EAAE,SAASlD,GAAGA,EAAEymH,iBAAiBzmH,EAAEqjH,kBAAkBpjH,EAAE8C,OAAOmnB,oBAAoB,QAAQhnB,GAAE,EAAI,EAAE,SAASO,EAAExD,GAAG,IAAID,EAAEC,EAAE6s5C,UAAU,SAAU9s5C,GAAGA,EAAEmvH,QAAQnvH,EAAEmvH,YAAYlvH,EAAEoQ,KAAK/C,QAAQ,IAAIkT,WAAWxgB,EAAEqQ,KAAK0Y,UAAS,EAAG,CAACtnB,EAAEsr5C,cAAc,WAAW9s5C,EAAE8C,OAAOyqB,iBAAiB,QAAQtqB,GAAE,GAAIjD,EAAE8C,OAAO2jB,YAAW,WAAYzmB,EAAE8C,OAAOmnB,oBAAoB,QAAQhnB,GAAE,EAAK,GAAE,EAAG,EAAEzB,EAAE8ysC,SAAS,SAASv0sC,EAAEyB,GAAG,IAAIN,EAAEnB,EAAEw0F,wBAAwB,OAAO,IAAIv0F,EAAEoqC,MAAM5oC,EAAEkzF,QAAQxzF,EAAEu+B,KAAK1/B,EAAE6izC,WAAWphzC,EAAEmzF,QAAQzzF,EAAEw+B,IAAI3/B,EAAE8izC,UAAU,EAAErhzC,EAAEur5C,SAAS,SAASht5C,EAAEyB,GAAG,IAAI,IAAIN,EAAEnB,EAAEw0F,wBAAwB5zF,EAAE,GAAGiB,EAAE,EAAEA,EAAEJ,EAAEP,OAAOW,IAAIjB,EAAE8B,KAAK,IAAIzC,EAAEoqC,MAAM5oC,EAAEI,GAAG8yF,QAAQxzF,EAAEu+B,KAAK1/B,EAAE6izC,WAAWphzC,EAAEI,GAAG+yF,QAAQzzF,EAAEw+B,IAAI3/B,EAAE8izC,YAAY,OAAOlizC,CAAC,EAAEa,EAAEwr5C,YAAY,SAASjt5C,GAAG,YAAO,IAASC,EAAE8C,OAAOmq5C,gBAAgB,IAAIlt5C,EAAEu4W,QAAQv4W,EAAE0jH,SAASzjH,EAAE8C,OAAOm3B,UAAU0sf,SAASn1d,cAAcpwD,QAAQ,QAAQ,EAAE,EAAErB,EAAEu4W,MAAM,EAAE92W,EAAEiyB,OAAO,SAASzzB,GAAGA,EAAEsiC,YAAYtiC,EAAEsiC,WAAW7E,YAAYz9B,EAAG,EAAE,IAAI0D,EAAE,SAAS3D,GAAG,SAASyB,IAAIzB,EAAES,KAAKI,MAAMA,KAAK8jR,OAAO,CAAC,EAAE9jR,KAAKwu4C,cAAc,CAAC,EAAExu4C,KAAKss5C,4BAA4B,CAAC,EAAEts5C,KAAKm3M,QAAO,EAAGn3M,KAAKus5C,WAAW,GAAGvs5C,KAAKwh8B,SAAS,CAAC,EAAExh8B,KAAKws5C,WAAW,IAAIpt5C,EAAEij5C,UAAU,CAACtj3C,MAAM,EAAEC,OAAO,IAAIh/B,KAAK8lwB,OAAM,CAAG,CAAC,OAAO3mwB,IAAIyB,EAAEpB,UAAUL,IAAIyB,EAAElB,UAAUJ,OAAOY,OAAOf,GAAGA,EAAEO,YAAYO,YAAYW,EAAEA,EAAElB,UAAU2qI,SAAS,WAAW,OAAOrqI,KAAKm3M,MAAM,EAAEv2M,EAAElB,UAAU+gZ,UAAU,SAASrhZ,GAAG,GAAGY,KAAKm3M,SAAS/3M,IAAIY,KAAKm3M,OAAO/3M,EAAEA,GAAG,CAAC,IAAI,IAAID,EAAE,EAAEyB,EAAEZ,KAAKus5C,WAAWpt5C,EAAEyB,EAAEP,OAAOlB,GAAG,EAAE,CAAC,IAAImB,EAAEM,EAAEzB,GAAGa,KAAKys5C,QAAQns5C,EAAEo4Z,IAAIp4Z,EAAE4oB,SAAU,CAAClpB,KAAKus5C,WAAW,EAAG,CAAC,EAAE3r5C,EAAElB,UAAUksK,SAAS,SAASxsK,GAAG,OAAOY,KAAK8jR,OAAO1kR,EAAE,EAAEwB,EAAElB,UAAU6pR,SAAS,SAASnqR,EAAED,GAAGa,KAAK0/3C,UAAUtg4C,EAAED,KAAKa,KAAK8jR,OAAO1kR,GAAGD,EAAG,EAAEyB,EAAElB,UAAUgg4C,UAAU,SAASvg4C,EAAEyB,GAAG,IAAIN,GAAE,EAAG,OAAON,KAAK0s5C,iBAAiB9r5C,EAAEgt4C,SAASht4C,EAAE4O,MAAM5O,EAAE4O,KAAKuvB,SAAS/+B,KAAKsz3C,KAAK,IAAIl03C,EAAEijZ,WAAW,IAAI76X,MAAM,UAAUroB,EAAE,oCAAoCmB,GAAE,GAAIN,KAAK0s5C,iBAAiB9r5C,EAAEit4C,SAASjt4C,EAAE4O,MAAM5O,EAAE4O,KAAKwvB,UAAUh/B,KAAKsz3C,KAAK,IAAIl03C,EAAEijZ,WAAW,IAAI76X,MAAM,UAAUroB,EAAE,oCAAoCmB,GAAE,GAAIN,KAAK2s5C,iBAAiB/r5C,EAAE83F,QAAQ93F,KAAKZ,KAAKsz3C,KAAK,IAAIl03C,EAAEijZ,WAAW,IAAI76X,MAAM,UAAUroB,EAAE,mCAAmCmB,GAAE,GAAIA,CAAC,EAAEM,EAAElB,UAAUgt5C,iBAAiB,SAAStt5C,EAAED,GAAG,IAAIC,EAAE,OAAO,EAAG,IAAI,IAAIwB,EAAE,EAAEN,EAAE,EAAEP,EAAEX,EAAEkB,EAAEP,EAAEM,OAAOC,GAAG,EAAE,CAAC,IAAIU,EAAEjB,EAAEO,GAAG,GAAGU,EAAE,GAAGJ,GAAGI,EAAE,GAAGA,EAAE,IAAI7B,EAAE6B,EAAE,GAAG,OAAO,EAAGJ,EAAEI,EAAE,EAAG,CAAC,OAAO,CAAE,EAAEJ,EAAElB,UAAUit5C,iBAAiB,SAASvt5C,EAAED,GAAG,QAASC,IAAI,IAAIA,EAAEiB,QAAQjB,EAAE,GAAG,GAAGD,EAAEqQ,KAAKuvB,MAAM3/B,EAAE,IAAIA,EAAE,GAAG,GAAGD,EAAEqQ,KAAKwvB,OAAO5/B,EAAE,IAAIA,EAAE,GAAG,GAAGD,EAAEqQ,KAAKuvB,MAAM3/B,EAAE,IAAIA,EAAE,GAAG,GAAGD,EAAEqQ,KAAKwvB,OAAO5/B,EAAE,IAAIA,EAAE,GAAGA,EAAE,IAAIA,EAAE,GAAGA,EAAE,IAAI,EAAEwB,EAAElB,UAAUkt5C,YAAY,SAASxt5C,EAAED,GAAGA,EAAEmH,QAAQtG,KAAK8jR,OAAO1kR,GAAGkH,QAAQ,EAAEtG,KAAK8jR,OAAO1kR,GAAGD,EAAEa,KAAKwu4C,cAAcpv4C,IAAG,CAAG,EAAEwB,EAAElB,UAAUmt5C,YAAY,SAASzt5C,GAAG,IAAID,EAAEa,KAAK8jR,OAAO1kR,UAAUY,KAAK8jR,OAAO1kR,UAAUY,KAAKwh8B,SAASpi8B,GAAGD,EAAE8s5C,WAAW9s5C,EAAE8s5C,UAAUjjrC,UAAU7pO,EAAE8s5C,UAAUjjrC,UAAW,EAAEpoO,EAAElB,UAAUot5C,WAAW,WAAW,OAAOxt5C,OAAOgU,KAAKtT,KAAK8jR,OAAO,EAAEljR,EAAElB,UAAUqt5C,UAAU,SAAS3t5C,EAAED,GAAG,IAAIyB,GAAE,EAAG,IAAIZ,KAAKqqI,WAAW,IAAI,IAAI/pI,EAAE,EAAEP,EAAEX,EAAEkB,EAAEP,EAAEM,OAAOC,GAAG,EAAEN,KAAK8jR,OAAO/jR,EAAEO,MAAMM,GAAE,GAAIZ,KAAKqqI,YAAYzpI,EAAEZ,KAAKys5C,QAAQrt5C,EAAED,GAAGa,KAAKus5C,WAAW1q5C,KAAK,CAAC62Z,IAAIt5Z,EAAE8pB,SAAS/pB,GAAI,EAAEyB,EAAElB,UAAU+s5C,QAAQ,SAAStt5C,EAAEyB,GAAG,IAAI,IAAIN,EAAE,CAAC,EAAEP,EAAE,EAAEiB,EAAE7B,EAAEY,EAAEiB,EAAEX,OAAON,GAAG,EAAE,CAAC,IAAIV,EAAE2B,EAAEjB,GAAGC,KAAK8jR,OAAOzkR,IAAIW,KAAKsz3C,KAAK,IAAIl03C,EAAEuqB,MAAM,oBAAoB,CAAC4B,GAAGlsB,KAAK,IAAIyB,EAAEd,KAAK8jR,OAAOzkR,GAAGyB,EAAER,EAAEjB,GAAG,CAACmQ,KAAK1O,EAAE0O,KAAK+gB,QAAQq+F,WAAW9tH,EAAE8tH,WAAWi1H,IAAI/iP,EAAE+iP,IAAIv9O,QAAQxF,EAAEwF,QAAQsn4C,SAAS9s4C,EAAE8s4C,SAASC,SAAS/s4C,EAAE+s4C,SAASn1yC,QAAQ53F,EAAE43F,QAAQ21yC,kBAAkBp73C,QAAQnS,EAAEmr5C,WAAWnr5C,EAAEmr5C,UAAU39xC,SAASlvH,EAAEive,SAAS,UAAUhve,EAAE,gNAAiN,CAACuB,EAAE,KAAKN,EAAG,EAAEM,EAAElB,UAAUst5C,aAAa,WAAW,IAAI5t5C,EAAEY,KAAKws5C,WAAW,MAAO,CAACzt3C,MAAM3/B,EAAE2/B,MAAMC,OAAO5/B,EAAE4/B,OAAO,EAAEp+B,EAAElB,UAAUut5C,WAAW,SAAS9t5C,GAAG,IAAIyB,EAAEZ,KAAKwh8B,SAASri8B,GAAGmB,EAAEN,KAAK4rK,SAASzsK,GAAG,IAAImB,EAAE,OAAO,KAAK,GAAGM,GAAGA,EAAE+9B,SAASr4B,UAAUhG,EAAEgG,QAAQ,OAAO1F,EAAE+9B,SAAS,GAAG/9B,EAAEA,EAAE+9B,SAASr4B,QAAQhG,EAAEgG,YAAa,CAAC,IAAIvG,EAAE,CAACwD,EAAEjD,EAAEkP,KAAKuvB,MAAM,EAAEn8B,EAAEtC,EAAEkP,KAAKwvB,OAAO,EAAE/6B,EAAE,EAAEjB,EAAE,GAAGhC,EAAE,IAAI5B,EAAEwi5C,cAAc7h5C,EAAEO,GAAGN,KAAKwh8B,SAASri8B,GAAG,CAAConC,IAAIxmC,EAAE4+B,SAAS39B,EAAG,CAAC,OAAOhB,KAAKkt5C,sBAAsBlt5C,KAAKwh8B,SAASri8B,GAAGw/B,QAAQ,EAAE/9B,EAAElB,UAAU2D,KAAK,SAASlE,GAAG,IAAIyB,EAAEzB,EAAE8uH,GAAGjuH,KAAKmt5C,aAAant5C,KAAK8lwB,QAAQ9lwB,KAAKmt5C,aAAa5+0C,OAAOvuE,KAAKws5C,YAAYxs5C,KAAK8lwB,OAAM,GAAI9lwB,KAAKmt5C,aAAa,IAAI/t5C,EAAEivV,QAAQlvV,EAAEa,KAAKws5C,WAAW5r5C,EAAEklN,MAAM9lN,KAAKmt5C,aAAa9p5C,KAAKzC,EAAEshR,OAAOthR,EAAEgsS,cAAe,EAAEhsS,EAAElB,UAAUwt5C,oBAAoB,WAAW,IAAI/t5C,EAAE,GAAG,IAAI,IAAIyB,KAAKZ,KAAKwh8B,SAASri8B,EAAE0C,KAAK7B,KAAKwh8B,SAAS5g8B,GAAG2lC,KAAK,IAAIjmC,EAAElB,EAAE4n5C,QAAQ7n5C,GAAGY,EAAEO,EAAEiD,EAAEvC,EAAEV,EAAEsC,EAAEvD,EAAEW,KAAKws5C,WAAW,IAAI,IAAI1r5C,KAAKzB,EAAEwvH,OAAO,CAAC9vF,MAAMh/B,GAAG,EAAEi/B,OAAOh+B,GAAG,IAAIhB,KAAKwh8B,SAAS,CAAC,IAAIh/7B,EAAExC,KAAKwh8B,SAAS1g8B,GAAGylC,IAAI1lC,EAAE2B,EAAEyB,EAAE,EAAE5B,EAAEG,EAAEQ,EAAE,EAAEJ,EAAE5C,KAAK8jR,OAAOhjR,GAAG0O,KAAK1M,EAAEF,EAAEm8B,MAAMp8B,EAAEC,EAAEo8B,OAAO5/B,EAAEij5C,UAAUvixC,KAAKl9H,EAAEvD,EAAE,CAAC4E,EAAE,EAAEjB,EAAE,GAAG,CAACiB,EAAEpD,EAAEmC,EAAEX,GAAG,CAAC08B,MAAMj8B,EAAEk8B,OAAOr8B,IAAIvD,EAAEij5C,UAAUvixC,KAAKl9H,EAAEvD,EAAE,CAAC4E,EAAE,EAAEjB,EAAEL,EAAE,GAAG,CAACsB,EAAEpD,EAAEmC,EAAEX,EAAE,GAAG,CAAC08B,MAAMj8B,EAAEk8B,OAAO,IAAI5/B,EAAEij5C,UAAUvixC,KAAKl9H,EAAEvD,EAAE,CAAC4E,EAAE,EAAEjB,EAAE,GAAG,CAACiB,EAAEpD,EAAEmC,EAAEX,EAAEM,GAAG,CAACo8B,MAAMj8B,EAAEk8B,OAAO,IAAI5/B,EAAEij5C,UAAUvixC,KAAKl9H,EAAEvD,EAAE,CAAC4E,EAAEnB,EAAE,EAAEE,EAAE,GAAG,CAACiB,EAAEpD,EAAE,EAAEmC,EAAEX,GAAG,CAAC08B,MAAM,EAAEC,OAAOr8B,IAAIvD,EAAEij5C,UAAUvixC,KAAKl9H,EAAEvD,EAAE,CAAC4E,EAAE,EAAEjB,EAAE,GAAG,CAACiB,EAAEpD,EAAEiC,EAAEE,EAAEX,GAAG,CAAC08B,MAAM,EAAEC,OAAOr8B,GAAI,CAAC3C,KAAK8lwB,OAAM,CAAG,EAAEllwB,EAAElB,UAAU0t5C,WAAW,WAAWpt5C,KAAKss5C,4BAA4B,CAAC,CAAE,EAAE1r5C,EAAElB,UAAU6u4C,wBAAwB,SAASnv4C,GAAG,IAAI,IAAID,EAAE,EAAEyB,EAAExB,EAAED,EAAEyB,EAAEP,OAAOlB,GAAG,EAAE,CAAC,IAAImB,EAAEM,EAAEzB,GAAG,IAAIa,KAAKss5C,4BAA4Bhs5C,GAAG,CAACN,KAAKss5C,4BAA4Bhs5C,IAAG,EAAG,IAAIP,EAAEC,KAAK8jR,OAAOxjR,GAAGsC,EAAE7C,IAAIC,KAAK4s5C,YAAYts5C,EAAEP,EAAG,CAAC,CAAC,EAAEa,CAAC,CAA9uI,CAAgvIxB,EAAEmi5C,SAAS5+4C,EAAES,EAAEQ,EAAER,EAAEV,EAAE,KAAK,SAASU,EAAEhE,EAAED,EAAEyB,EAAEN,EAAEP,EAAEiB,GAAGhB,KAAKykP,SAASrlP,GAAG,GAAGY,KAAKkoB,YAAO,IAAS/oB,EAAE,EAAEA,EAAEa,KAAK0kP,OAAOpkP,GAAG,IAAIN,KAAK2kP,WAAW5kP,GAAG,aAAaC,KAAK4kP,WAAW5jP,GAAG,SAAShB,KAAKs3I,OAAO12I,GAAG,EAAE,IAAIvB,EAAEW,KAAK4kB,KAAK5kB,KAAKykP,SAAS,EAAEzkP,KAAKkoB,OAAOloB,KAAKm3I,OAAOhyI,SAASmE,cAAc,UAAUtJ,KAAKm3I,OAAOp4G,MAAM/+B,KAAKm3I,OAAOn4G,OAAO3/B,EAAEW,KAAKs3O,IAAIt3O,KAAKm3I,OAAOpqF,WAAW,MAAM/sD,KAAKs3O,IAAIwN,KAAK9kP,KAAK4kP,WAAW,IAAI5kP,KAAKykP,SAAS,MAAMzkP,KAAK2kP,WAAW3kP,KAAKs3O,IAAIyN,aAAa,SAAS/kP,KAAKs3O,IAAI2N,UAAU,QAAQjlP,KAAKklP,UAAU,IAAIjlO,aAAa5gB,EAAEA,GAAGW,KAAKmlP,UAAU,IAAIllO,aAAa5gB,EAAEA,GAAGW,KAAK0C,EAAE,IAAIud,aAAa5gB,GAAGW,KAAK2C,EAAE,IAAIsd,aAAa5gB,GAAGW,KAAK2F,EAAE,IAAIsa,aAAa5gB,EAAE,GAAGW,KAAKiD,EAAE,IAAI2c,WAAWvgB,GAAGW,KAAKypP,OAAO5mP,KAAKogD,MAAM5jD,EAAE,GAAGg6B,UAAUC,UAAU94B,QAAQ,WAAW,EAAE,IAAI,GAAI,CAAC,SAAS2B,EAAE/C,EAAED,EAAEyB,EAAEN,EAAEP,EAAEiB,EAAE3B,GAAG,IAAI,IAAIyB,EAAE,EAAEA,EAAE3B,EAAE2B,IAAI,CAAC,IAAI,IAAI0B,EAAE,EAAEA,EAAE5B,EAAE4B,IAAIlC,EAAEkC,GAAGpD,EAAEoD,EAAErD,EAAE2B,GAAG,IAAImC,EAAE3C,EAAEP,EAAEiB,EAAE3B,EAAEuB,GAAG4B,EAAE,EAAEA,EAAE5B,EAAE4B,IAAIpD,EAAEoD,EAAErD,EAAE2B,GAAGf,EAAEyC,EAAG,CAAC,IAAIA,EAAE,EAAEA,EAAE5B,EAAE4B,IAAI,CAAC,IAAI1B,EAAE,EAAEA,EAAE3B,EAAE2B,IAAIR,EAAEQ,GAAG1B,EAAEoD,EAAErD,EAAE2B,GAAG,IAAImC,EAAE3C,EAAEP,EAAEiB,EAAE3B,EAAEF,GAAG2B,EAAE,EAAEA,EAAE3B,EAAE2B,IAAI1B,EAAEoD,EAAErD,EAAE2B,GAAG+B,KAAK4yF,KAAK11F,EAAEe,GAAI,CAAC,CAAC,SAASmC,EAAE7D,EAAED,EAAEyB,EAAEN,EAAEP,GAAGa,EAAE,GAAG,EAAEN,EAAE,IAAIoC,EAAEpC,EAAE,IAAIoC,EAAE,IAAI,IAAI1B,EAAE,EAAE3B,EAAE,EAAE2B,EAAEjB,EAAEiB,IAAI,CAAC,IAAI,IAAIF,GAAG1B,EAAE4B,GAAGA,EAAEA,GAAG5B,EAAEwB,EAAEvB,IAAIuB,EAAEvB,GAAGuB,EAAEvB,MAAM,EAAE2B,EAAE,EAAEJ,EAAEvB,IAAIyB,GAAGR,EAAEjB,IAAIA,IAAIyB,GAAG1B,EAAE4B,GAAGA,EAAEA,GAAG5B,EAAEwB,EAAEvB,IAAIuB,EAAEvB,GAAGuB,EAAEvB,MAAM,EAAE2B,EAAE,EAAEJ,EAAEvB,IAAIuB,IAAIvB,GAAG2B,EAAEV,EAAEjB,GAAGyB,EAAER,EAAEjB,EAAE,IAAIqD,CAAE,CAAC,IAAI1B,EAAE,EAAE3B,EAAE,EAAE2B,EAAEjB,EAAEiB,IAAI,CAAC,KAAKV,EAAEjB,EAAE,GAAG2B,GAAG3B,IAAIF,EAAE6B,IAAIA,EAAEJ,EAAEvB,KAAK2B,EAAEJ,EAAEvB,IAAID,EAAEwB,EAAEvB,GAAI,CAAC,CAAC+D,EAAE1D,UAAU61H,KAAK,SAASn2H,GAAGY,KAAKs3O,IAAIG,UAAU,EAAE,EAAEz3O,KAAK4kB,KAAK5kB,KAAK4kB,MAAM5kB,KAAKs3O,IAAI0O,SAAS5mP,EAAEY,KAAKkoB,OAAOloB,KAAKypP,QAAQ,IAAI,IAAItqP,EAAEa,KAAKs3O,IAAI4O,aAAa,EAAE,EAAElmP,KAAK4kB,KAAK5kB,KAAK4kB,MAAMhkB,EAAE,IAAIme,kBAAkB/e,KAAK4kB,KAAK5kB,KAAK4kB,MAAMtkB,EAAE,EAAEA,EAAEN,KAAK4kB,KAAK5kB,KAAK4kB,KAAKtkB,IAAI,CAAC,IAAIP,EAAEZ,EAAEqQ,KAAK,EAAElP,EAAE,GAAG,IAAIN,KAAKklP,UAAU5kP,GAAG,IAAIP,EAAE,EAAE,IAAIA,EAAE2C,EAAEG,KAAK6yF,IAAI7yF,KAAK8K,IAAI,EAAE,GAAG5N,GAAG,GAAGC,KAAKmlP,UAAU7kP,GAAG,IAAIP,EAAE2C,EAAE,IAAI3C,EAAE,EAAE8C,KAAK6yF,IAAI7yF,KAAK8K,IAAI,EAAE5N,EAAE,IAAI,EAAG,CAAC,IAAIoC,EAAEnC,KAAKklP,UAAUllP,KAAK4kB,KAAK5kB,KAAK4kB,KAAK5kB,KAAK0C,EAAE1C,KAAK2C,EAAE3C,KAAKiD,EAAEjD,KAAK2F,GAAGxD,EAAEnC,KAAKmlP,UAAUnlP,KAAK4kB,KAAK5kB,KAAK4kB,KAAK5kB,KAAK0C,EAAE1C,KAAK2C,EAAE3C,KAAKiD,EAAEjD,KAAK2F,GAAGrF,EAAE,EAAEA,EAAEN,KAAK4kB,KAAK5kB,KAAK4kB,KAAKtkB,IAAIM,EAAEN,GAAGuC,KAAK8K,IAAI,EAAE9K,KAAKgL,IAAI,IAAIhL,KAAKogD,MAAM,IAAI,MAAMjjD,KAAKklP,UAAU5kP,GAAGN,KAAKmlP,UAAU7kP,IAAIN,KAAKs3I,OAAOt3I,KAAK0kP,WAAW,OAAO9jP,CAAC,EAAE+B,EAAEJ,QAAQqB,EAAE,IAAIZ,EAAE,SAAS5D,EAAED,GAAGa,KAAKqt5C,eAAeju5C,EAAEY,KAAKst5C,yBAAyBnu5C,EAAEa,KAAKyc,QAAQ,CAAC,CAAE,EAAEzZ,EAAEtD,UAAU6t5C,OAAO,SAASnu5C,GAAGY,KAAKkwB,IAAI9wB,CAAE,EAAE4D,EAAEtD,UAAU8t5C,UAAU,SAASru5C,EAAEyB,GAAG,IAAIN,EAAEN,KAAKD,EAAE,GAAG,IAAI,IAAIiB,KAAK7B,EAAE,IAAI,IAAIE,EAAE,EAAEyB,EAAE3B,EAAE6B,GAAG3B,EAAEyB,EAAET,OAAOhB,GAAG,EAAEU,EAAE8B,KAAK,CAAC8wC,MAAM3xC,EAAEuqB,GAAGzqB,EAAEzB,KAAKD,EAAEyk5C,SAAS9j5C,GAAE,SAAUX,EAAED,GAAG,IAAIyB,EAAExB,EAAEuzC,MAAM5yC,EAAEX,EAAEmsB,GAAGvqB,EAAEV,EAAEmc,QAAQ7b,GAAGI,IAAIA,EAAEV,EAAEmc,QAAQ7b,GAAG,CAACkz3C,OAAO,CAAC,EAAE1jtC,SAAS,CAAC,EAAEouD,OAAO,CAAC,IAAI,IAAIn/N,EAAE2B,EAAE8y3C,OAAO/z3C,GAAG,QAAG,IAASV,EAAE,CAAC,GAAGA,EAAEiB,EAAEmt5C,SAASzs5C,EAAEJ,EAAEb,GAAG,OAAOiB,EAAE8y3C,OAAO/z3C,GAAGV,OAAOF,EAAE,KAAK,CAACwzC,MAAM/xC,EAAE2qB,GAAGxrB,EAAE+lP,MAAMzmP,IAAI,IAAIyB,EAAE+B,KAAKyK,MAAMvN,EAAE,KAAK,GAAG,IAAIe,EAAE,MAAM3B,EAAE,IAAIqoB,MAAM,sCAAsC,GAAGxmB,EAAEw9N,OAAO19N,GAAG3B,EAAE,KAAK,CAACwzC,MAAM/xC,EAAE2qB,GAAGxrB,EAAE+lP,MAAMzmP,QAAS,CAAC,IAAImD,EAAExB,EAAEovK,SAAStvK,GAAG0B,IAAIA,EAAExB,EAAEovK,SAAStvK,GAAG,GAAGkC,EAAE0q5C,eAAe9s5C,EAAEE,EAAER,EAAE4vB,IAAI5vB,EAAE+s5C,gBAAe,SAAUju5C,EAAED,GAAG,GAAGA,EAAE,CAAC,IAAI,IAAIyB,KAAKzB,EAAEmB,EAAEqt5C,4BAA4B/s5C,KAAKI,EAAE8y3C,QAAQlz3C,GAAGzB,GAAGyB,IAAII,EAAEw9N,OAAO19N,IAAG,CAAG,CAAC,IAAI,IAAIf,EAAE,EAAEV,EAAEmD,EAAEzC,EAAEV,EAAEgB,OAAON,GAAG,GAAE,EAAGV,EAAEU,IAAIX,EAAED,UAAU6B,EAAEovK,SAAStvK,EAAI,KAAI0B,EAAEX,MAAK,SAAUzC,EAAEkB,GAAGlB,EAAED,EAAEC,GAAGkB,GAAGnB,EAAE,KAAK,CAACwzC,MAAM/xC,EAAE2qB,GAAGxrB,EAAE+lP,MAAMxlP,EAAEP,IAAI,MAAQ,GAAG,CAAC,MAAMZ,EAAE,KAAK,CAACwzC,MAAM/xC,EAAE2qB,GAAGxrB,EAAE+lP,MAAMzmP,GAAK,IAAE,SAAUD,EAAED,GAAG,GAAGC,EAAEwB,EAAExB,QAAQ,GAAGD,EAAE,CAAC,IAAI,IAAImB,EAAE,CAAC,EAAEP,EAAE,EAAEiB,EAAE7B,EAAEY,EAAEiB,EAAEX,OAAON,GAAG,EAAE,CAAC,IAAIV,EAAE2B,EAAEjB,GAAGe,EAAEzB,EAAEszC,MAAMnwC,EAAEnD,EAAEksB,GAAG1qB,EAAExB,EAAEymP,OAAOxlP,EAAEQ,KAAKR,EAAEQ,GAAG,CAAC,IAAI0B,GAAG3B,GAAG,CAAC0qB,GAAG1qB,EAAE0qB,GAAG2hN,OAAOrsO,EAAEqsO,OAAO38M,QAAQksH,QAAQ57I,EAAE47I,QAAS,CAAC77I,EAAE,KAAKN,EAAG,CAAE,GAAG,EAAE0C,EAAEtD,UAAUiu5C,2BAA2B,SAASxu5C,GAAG,QAASa,KAAKst5C,2BAA2Blu5C,EAAEwm5C,OAAO,0BAA0Bzm5C,IAAIC,EAAEwm5C,OAAO,oBAAoBzm5C,IAAIC,EAAEwm5C,OAAO3oB,SAAS993C,IAAIC,EAAEwm5C,OAAO1oB,SAAS/93C,GAAG,EAAE6D,EAAEtD,UAAU+t5C,SAAS,SAAStu5C,EAAEyB,EAAEN,GAAG,IAAIP,EAAEC,KAAKst5C,yBAAyB,GAAGvt5C,GAAGC,KAAK2t5C,2BAA2Brt5C,GAAG,CAAC,IAAIU,EAAE7B,EAAEkqP,QAAQ,IAAIroP,EAAE,CAAC,IAAI3B,EAAE,MAAM,QAAQgM,KAAKzK,GAAGvB,EAAE,MAAM,UAAUgM,KAAKzK,GAAGvB,EAAE,MAAM,SAASgM,KAAKzK,KAAKvB,EAAE,OAAO2B,EAAE7B,EAAEkqP,QAAQ,IAAIrmP,EAAEwhP,QAAQ,GAAG,EAAE,EAAE,IAAIzkP,EAAEV,EAAG,CAAC,MAAO,CAACksB,GAAGjrB,EAAE4sO,OAAO,IAAI9tO,EAAE2h5C,WAAW,CAAChi3C,MAAM,GAAGC,OAAO,IAAIh+B,EAAEu0H,KAAKz1H,OAAO4nB,aAAapnB,KAAKm8I,QAAQ,CAAC19G,MAAM,GAAGC,OAAO,GAAGH,KAAK,EAAEC,KAAK,EAAE2u2C,QAAQ,IAAI,CAAC,EAAEzq4C,EAAE0q5C,eAAe,SAASvu5C,EAAEyB,EAAEN,EAAEP,EAAEiB,GAAG,IAAI3B,EAAE,IAAIuB,EAAEE,EAAEzB,EAAE,IAAImD,EAAEzC,EAAEq66B,iBAAiBr66B,EAAEsx3C,mBAAmB/w3C,GAAGmM,QAAQ,cAActN,GAAGsN,QAAQ,UAAUpN,EAAE,IAAIyB,GAAG1B,EAAEoj5C,aAAa1vB,QAAQ1z3C,EAAEim5C,eAAe7i5C,GAAE,SAAUrD,EAAEyB,GAAG,GAAGzB,EAAE6B,EAAE7B,QAAQ,GAAGyB,EAAE,CAAC,IAAI,IAAIN,EAAE,CAAC,EAAEP,EAAE,EAAEV,EAAED,EAAEkn5C,cAAc1l5C,GAAGb,EAAEV,EAAEgB,OAAON,GAAG,EAAE,CAAC,IAAIe,EAAEzB,EAAEU,GAAGO,EAAEQ,EAAEyqB,IAAIzqB,CAAE,CAACE,EAAE,KAAKV,EAAG,CAAE,GAAG,EAAE0C,EAAEwhP,QAAQ7hP,EAAE,IAAIsB,EAAE,WAAWjE,KAAKk+3C,cAAc9+3C,EAAE873C,UAAUrrwC,MAAMlxF,QAAS,EAAE16B,EAAEvE,UAAU0+3C,iBAAiB,SAASj/3C,EAAEyB,GAAG,OAAOxB,EAAEmo5C,qBAAqBpo5C,EAAE6he,WAAWszC,SAAS1zgB,GAAG,EAAEqD,EAAEvE,UAAU+vP,YAAY,SAAStwP,EAAEyB,EAAEN,GAAG,MAAO,CAAC2D,EAAE7E,EAAE2qJ,OAAO5qJ,EAAE8E,EAAErD,EAAEqD,EAAE3D,GAAG0C,EAAE5D,EAAE2qJ,OAAO5qJ,EAAE6D,EAAEpC,EAAEoC,EAAE1C,GAAGqF,EAAEvG,EAAE2qJ,OAAO5qJ,EAAEwG,EAAE/E,EAAE+E,EAAErF,GAAG,EAAE,IAAIgD,EAAE,IAAIlE,EAAE+i5C,WAAW,CAACl5/B,OAAO,IAAI7pZ,EAAE+h5C,qBAAqB/h5C,EAAE873C,UAAUrrwC,MAAMo5R,QAAQtqX,SAAS,IAAI16B,EAAEspH,MAAM,IAAInuH,EAAE+h5C,qBAAqB/h5C,EAAE873C,UAAUrrwC,MAAMtC,OAAOC,UAAU,IAAIpuH,EAAE+h5C,qBAAqB/h5C,EAAE873C,UAAUrrwC,MAAMrC,aAAajqH,EAAE,SAASpE,GAAG,SAASyB,EAAEA,GAAGzB,EAAES,KAAKI,MAAMA,KAAK4t5C,gBAAgB,IAAIxu5C,EAAE6j5C,eAAe3/4C,GAAGtD,KAAK6t5C,SAASjt5C,GAAGZ,KAAK8t5C,eAAe9t5C,KAAK4t5C,gBAAgBtvB,gBAAiB,CAAC,OAAOn/3C,IAAIyB,EAAEpB,UAAUL,IAAIyB,EAAElB,UAAUJ,OAAOY,OAAOf,GAAGA,EAAEO,YAAYO,YAAYW,EAAEA,EAAElB,UAAUqu5C,SAAS,WAAW,OAAO/t5C,KAAK4t5C,gBAAgBzgtB,WAAW,EAAEvssB,EAAElB,UAAUmu5C,SAAS,SAAS1u5C,EAAEyB,GAAG,QAAG,IAASA,IAAIA,EAAE,CAAC,IAAIZ,KAAK0/3C,UAAUtg4C,EAAEso5C,cAAcvo5C,EAAEyB,GAAG,IAAI,IAAIN,KAAKnB,EAAE,CAAC,IAAIY,EAAEZ,EAAEmB,GAAGlB,EAAE2oD,SAASznD,EAAE,eAAeN,KAAK4t5C,gBAAgBlvB,cAAcp+3C,EAAEyB,MAAM,GAAG,IAAsBhC,GAAGC,KAAK4t5C,gBAAgB1u3B,SAAS5+hB,EAAEP,EAAG,CAAC,EAAEa,EAAElB,UAAUog4C,kBAAkB,SAAS1g4C,GAAGY,KAAK8t5C,eAAe9t5C,KAAK4t5C,gBAAgBvvB,aAAaj/3C,EAAEY,KAAK8t5C,eAAgB,EAAElt5C,EAAElB,UAAU439B,cAAc,WAAW,OAAOt39B,KAAK8t5C,eAAex2b,eAAe,EAAE129B,EAAElB,UAAUqg4C,YAAY,SAAS3g4C,GAAGY,KAAKwoC,WAAWxoC,KAAK8t5C,eAAe1vB,iBAAiBh/3C,EAAG,EAAEwB,EAAElB,UAAUgg4C,UAAU,SAASvg4C,EAAEyB,EAAEN,GAAG,QAASA,IAAG,IAAKA,EAAE41F,WAAW92F,EAAEyl5C,qBAAqB7k5C,KAAKb,EAAES,KAAKR,EAAEuo5C,cAAcvo5C,EAAEiqZ,OAAO,CAACloZ,MAAMP,EAAEyT,MAAM,CAACy/2C,QAAO,EAAGD,QAAO,GAAIqH,UAAU973C,EAAE873C,aAAa,EAAEt63C,CAAC,CAAxiC,CAA0iCxB,EAAEmi5C,SAASr94C,EAAE,SAAS9E,EAAED,GAAGa,KAAK++B,MAAM3/B,EAAEY,KAAKg/B,OAAO7/B,EAAEa,KAAKy6oB,QAAQ,EAAEz6oB,KAAKwP,KAAK,IAAImQ,WAAW3f,KAAK++B,MAAM/+B,KAAKg/B,QAAQh/B,KAAKgu5C,UAAU,CAAC,CAAE,EAAE9p5C,EAAExE,UAAUuu5C,QAAQ,SAAS7u5C,EAAED,GAAG,IAAIyB,EAAExB,EAAEyN,KAAK,KAAK/M,OAAOX,GAAG,OAAOa,KAAKgu5C,UAAUpt5C,KAAKZ,KAAKgu5C,UAAUpt5C,GAAGZ,KAAKku5C,QAAQ9u5C,EAAED,IAAIa,KAAKgu5C,UAAUpt5C,EAAE,EAAEsD,EAAExE,UAAUyu5C,cAAc,SAAS/u5C,EAAED,EAAEyB,GAAG,IAAIN,EAAE,GAAGP,EAAEX,EAAEiB,OAAO,GAAG,GAAGjB,EAAEA,EAAEiB,OAAO,GAAGO,EAAE,EAAEI,EAAE5B,EAAE,GAAGwB,EAAEvB,GAAE,EAAGiB,EAAEuB,KAAK,CAACg9B,KAAK9+B,EAAE8/F,MAAM7+F,EAAEot5C,OAAO/u5C,EAAEgv5C,WAAW,IAAIjv5C,EAAE,KAAK,IAAI,IAAI0B,EAAE1B,EAAE,GAAGoD,EAAE,EAAEA,EAAEpD,EAAEiB,OAAOmC,IAAI,CAAC,IAAI3B,EAAEzB,EAAEoD,GAAGlC,EAAEuB,KAAK,CAACg9B,KAAK9+B,EAAEe,EAAEF,EAAEi/F,MAAM7+F,GAAGF,GAAGD,GAAGD,EAAEwt5C,OAAO/u5C,GAAGA,EAAEgv5C,WAAW,IAAIxt5C,GAAI,CAAC,OAAOP,CAAC,EAAE4D,EAAExE,UAAU4u5C,aAAa,SAASlv5C,EAAED,EAAEyB,GAAG,IAAI,IAAIN,EAAEnB,EAAE,EAAEY,GAAGa,EAAEb,GAAGa,EAAEb,IAAI,IAAI,IAAIiB,EAAEhB,KAAK++B,OAAO/+B,KAAKy6oB,QAAQ75oB,EAAEb,GAAGV,EAAE,EAAEyB,EAAE1B,EAAEC,GAAGmD,EAAE,EAAEA,EAAExC,KAAK++B,MAAMv8B,IAAI,CAACA,EAAE1B,EAAE++F,MAAM,IAAI/+F,EAAE1B,IAAIC,IAAI,IAAIwB,EAAEgC,KAAKmjH,IAAIxjH,EAAE1B,EAAE+9B,MAAMx8B,EAAEQ,KAAKmjH,IAAIxjH,EAAE1B,EAAE++F,OAAOj9F,EAAEC,KAAKgL,IAAIhN,EAAEwB,GAAGS,OAAE,EAAOH,EAAE5C,EAAEa,GAAGN,EAAE,GAAG,GAAGQ,EAAEst5C,OAAO,CAAC,IAAIxq5C,EAAEtD,EAAEuC,KAAKmjH,IAAIrjH,GAAGG,EAAED,KAAK4yF,KAAK7yF,EAAEA,EAAEgB,EAAEA,EAAG,MAAMd,EAAExC,EAAEuC,KAAK4yF,KAAK7yF,EAAEA,EAAED,EAAEA,GAAG3C,KAAKwP,KAAKxO,EAAEwB,GAAGK,KAAK8K,IAAI,EAAE9K,KAAKgL,IAAI,IAAI/K,EAAE,KAAM,CAAC,EAAEoB,EAAExE,UAAU6u5C,eAAe,SAASnv5C,GAAG,IAAI,IAAID,EAAEC,EAAEiB,OAAO,EAAElB,GAAG,IAAIA,EAAE,CAAC,IAAIyB,EAAExB,EAAED,GAAGmB,EAAElB,EAAED,EAAE,GAAGyB,EAAEyt5C,WAAWjv5C,EAAE6jB,OAAO9jB,EAAE,GAAGmB,GAAGA,EAAE8t5C,SAASxt5C,EAAEwt5C,SAAS9t5C,EAAEu+B,KAAKj+B,EAAEi+B,KAAKz/B,EAAE6jB,OAAO9jB,EAAE,GAAI,CAAC,IAAIY,EAAEX,EAAE,GAAG4B,EAAE5B,EAAEA,EAAEiB,OAAO,GAAGN,EAAEqu5C,SAASpt5C,EAAEot5C,SAASru5C,EAAE8+B,KAAK79B,EAAE69B,KAAK7+B,KAAK++B,MAAM/9B,EAAE6+F,MAAM9/F,EAAE8/F,MAAM7/F,KAAK++B,OAAO,IAAI,IAAI1/B,EAAEW,KAAK++B,MAAM/+B,KAAKy6oB,QAAQ35oB,EAAE,EAAE0B,EAAEpD,EAAE0B,GAAGD,EAAE,EAAEA,EAAEb,KAAK++B,MAAMl+B,IAAI,CAACA,EAAE2B,EAAEq9F,MAAM,IAAIr9F,EAAEpD,IAAI0B,IAAI,IAAIuB,EAAEQ,KAAKmjH,IAAInlH,EAAE2B,EAAEq8B,MAAMj8B,EAAEC,KAAKmjH,IAAInlH,EAAE2B,EAAEq9F,OAAO/8F,EAAED,KAAKgL,IAAIxL,EAAEO,GAAG5C,KAAKwP,KAAKnQ,EAAEwB,GAAGgC,KAAK8K,IAAI,EAAE9K,KAAKgL,IAAI,KAAKrL,EAAE4r5C,OAAOtr5C,GAAGA,GAAG,KAAM,CAAC,EAAEoB,EAAExE,UAAUwu5C,QAAQ,SAAS/u5C,EAAEyB,GAAG,IAAIN,EAAEM,EAAE,EAAE,EAAEb,EAAE,EAAEO,EAAE,EAAE,GAAGN,KAAKy6oB,QAAQ16oB,EAAEC,KAAKg/B,OAAO,OAAO5/B,EAAEive,SAAS,0BAA0B,KAAK,IAAI,IAAIrte,EAAE,EAAE3B,EAAE,EAAEA,EAAEF,EAAEkB,OAAOhB,IAAI2B,GAAG7B,EAAEE,GAAG,GAAG,IAAI2B,EAAE,CAAC,IAAIF,EAAEd,KAAK++B,MAAM/9B,EAAEwB,EAAExC,KAAKmu5C,cAAchv5C,EAAEa,KAAK++B,MAAMj+B,GAAGF,EAAEZ,KAAKsu5C,aAAa9r5C,EAAE1B,EAAER,GAAGN,KAAKuu5C,eAAe/r5C,EAAG,CAAC,IAAI3B,EAAE,CAACmC,GAAGhD,KAAKy6oB,QAAQn6oB,EAAE,IAAIN,KAAKg/B,OAAOA,OAAO,EAAE1+B,EAAEN,KAAKg/B,OAAOD,MAAM/9B,GAAG,OAAOhB,KAAKy6oB,SAAS16oB,EAAEC,KAAK8lwB,OAAM,EAAGjlwB,CAAC,EAAEqD,EAAExE,UAAU2D,KAAK,SAASjE,GAAG,IAAID,EAAEC,EAAE6uH,GAAGjuH,KAAK01H,SAASv2H,EAAEmkV,YAAYnkV,EAAE2sS,WAAW9rS,KAAK01H,SAAS11H,KAAK8lwB,QAAQ9lwB,KAAK8lwB,OAAM,EAAG3mwB,EAAEuwV,cAAcvwV,EAAE2sS,WAAW,EAAE,EAAE,EAAE9rS,KAAK++B,MAAM/+B,KAAKg/B,OAAO7/B,EAAE8pS,MAAM9pS,EAAE66M,cAAch6M,KAAKwP,SAASxP,KAAK01H,QAAQv2H,EAAEurJ,gBAAgBvrJ,EAAEmkV,YAAYnkV,EAAE2sS,WAAW9rS,KAAK01H,SAASv2H,EAAEqxV,cAAcrxV,EAAE2sS,WAAW3sS,EAAEysS,eAAezsS,EAAEwtS,QAAQxtS,EAAEqxV,cAAcrxV,EAAE2sS,WAAW3sS,EAAE0sS,eAAe1sS,EAAEwtS,QAAQxtS,EAAEqxV,cAAcrxV,EAAE2sS,WAAW3sS,EAAEwsS,mBAAmBxsS,EAAE+iR,QAAQ/iR,EAAEqxV,cAAcrxV,EAAE2sS,WAAW3sS,EAAEusS,mBAAmBvsS,EAAE+iR,QAAQ/iR,EAAEyuV,WAAWzuV,EAAE2sS,WAAW,EAAE3sS,EAAE8pS,MAAMjpS,KAAK++B,MAAM/+B,KAAKg/B,OAAO,EAAE7/B,EAAE8pS,MAAM9pS,EAAE66M,cAAch6M,KAAKwP,MAAO,EAAE,IAAI9K,EAAE,SAASvF,EAAEyB,EAAEN,GAAGN,KAAKirQ,WAAWrqQ,EAAEZ,KAAKwu5C,OAAO,GAAGxu5C,KAAKyu5C,aAAa,EAAEzu5C,KAAKurB,GAAGnsB,EAAEirC,WAAW,IAAI,IAAItqC,EAAEC,KAAKirQ,WAAWyjpC,QAAQ1u5C,KAAKurB,IAAIvqB,EAAE,EAAEA,EAAEjB,EAAEM,OAAOW,IAAI,CAAC,IAAI3B,EAAE,IAAIF,EAAE2h5C,MAAM/g5C,EAAEiB,GAAGV,EAAEN,KAAKurB,IAAIlsB,EAAEqL,KAAK,UAAU1J,EAAEhB,KAAKwu5C,OAAO3s5C,KAAKxC,EAAG,CAAC,EAAE,SAASwE,EAAE1E,EAAEyB,EAAEN,GAAG,IAAIP,EAAE,SAASA,EAAEiB,GAAG,GAAGjB,EAAE,OAAOO,EAAEP,GAAG,GAAGiB,EAAE,CAAC,IAAI3B,EAAED,EAAEw5X,KAAKx5X,EAAEiqZ,OAAOroZ,EAAE7B,GAAG,CAAC,QAAQ,UAAU,UAAU,cAAc,cAAc,SAAS,SAAS,WAAW,aAAa6B,EAAE2t5C,gBAAgBtv5C,EAAEuv5C,aAAa5t5C,EAAE2t5C,cAActv5C,EAAEwv5C,eAAexv5C,EAAEuv5C,aAAav/3C,KAAI,SAAUjwB,GAAG,OAAOA,EAAEmsB,EAAG,KAAIlsB,EAAEqrC,MAAM9pC,EAAE+w3C,oBAAoBty3C,EAAEF,EAAE+wB,KAAK5vB,EAAE,KAAKjB,EAAG,CAAC,EAAE,OAAOF,EAAE+wB,IAAI9wB,EAAEkm5C,QAAQ1k5C,EAAEw56B,iBAAiBx56B,EAAE0w3C,mBAAmBny3C,EAAE+wB,KAAK9wB,EAAEoj5C,aAAa5vB,QAAQ7y3C,GAAGX,EAAEghS,QAAQtpP,OAAM,WAAY,OAAO/2C,EAAE,KAAKZ,EAAG,GAAE,CAACuF,EAAEhF,UAAUov5C,UAAU,SAAS3v5C,EAAEyB,EAAEN,GAAGlB,EAAEyk5C,SAAS7j5C,KAAKwu5C,QAAO,SAAUpv5C,EAAEkB,GAAGlB,EAAEkpB,KAAKnpB,EAAEyB,EAAEN,EAAI,GAAEA,EAAEA,GAAG,WAAW,EAAG,EAAEoE,EAAEhF,UAAUsk5C,SAAS,WAAW,OAAOhk5C,KAAKyu5C,cAAczu5C,KAAKyu5C,aAAa,GAAGzu5C,KAAKwu5C,OAAOnu5C,OAAOL,KAAKwu5C,OAAOxu5C,KAAKyu5C,aAAa,EAAE/p5C,EAAEhF,UAAUmzB,OAAO,WAAW7yB,KAAKwu5C,OAAOtp4C,SAAQ,SAAU9lB,GAAGA,EAAEyzB,QAAU,IAAG7yB,KAAKwu5C,OAAO,GAAGxu5C,KAAKirQ,WAAW7sI,QAAQp+H,KAAKurB,GAAI,EAAE7mB,EAAEo84C,MAAM1h5C,EAAE0h5C,MAAM,IAAIh84C,EAAE,SAAS3F,EAAEyB,EAAEN,GAAGN,KAAKg+H,OAAO5+H,EAAE0i5C,aAAa7lnB,QAAQj8xB,KAAK+u5C,eAAe5v5C,IAAIa,KAAK+iO,QAAQniO,GAAG,EAAEZ,KAAKgjO,QAAQ1iO,GAAG,EAAG,EAAEwE,EAAEpF,UAAUqv5C,eAAe,SAAS3v5C,GAAG,OAAOK,MAAMkS,QAAQvS,IAAI,IAAIA,EAAEiB,OAAO,CAACwC,KAAK8K,KAAK,IAAIvO,EAAE,IAAIyD,KAAK8K,KAAK,GAAGvO,EAAE,IAAIyD,KAAKgL,IAAI,IAAIzO,EAAE,IAAIyD,KAAKgL,IAAI,GAAGzO,EAAE,KAAK,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE0F,EAAEpF,UAAUk9B,SAAS,SAASz9B,GAAG,IAAIyB,EAAEiC,KAAK6yF,IAAI,EAAEv2F,EAAEwG,GAAGrF,EAAEuC,KAAKyK,MAAMlO,EAAE6m5C,iBAAiBjm5C,KAAKg+H,OAAOw8wC,WAAW554C,GAAGb,EAAE8C,KAAKyK,MAAMlO,EAAE8m5C,iBAAiBlm5C,KAAKg+H,OAAOy8wC,YAAY754C,GAAGI,EAAE6B,KAAKuK,KAAKhO,EAAE6m5C,iBAAiBjm5C,KAAKg+H,OAAO28wC,WAAW/54C,GAAGvB,EAAEwD,KAAKuK,KAAKhO,EAAE8m5C,iBAAiBlm5C,KAAKg+H,OAAO48wC,YAAYh64C,GAAG,OAAOzB,EAAE8E,GAAG3D,GAAGnB,EAAE8E,EAAEjD,GAAG7B,EAAE6D,GAAGjD,GAAGZ,EAAE6D,EAAE3D,CAAC,EAAE,IAAImE,EAAE,SAASrE,GAAG,SAASyB,EAAEA,EAAEN,EAAEP,EAAEiB,GAAG,GAAG7B,EAAES,KAAKI,MAAMA,KAAKurB,GAAG3qB,EAAEZ,KAAKw3iC,WAAWz3iC,EAAEC,KAAKuM,KAAK,SAASvM,KAAK+iO,QAAQ,EAAE/iO,KAAKgjO,QAAQ,GAAGhjO,KAAK+/uB,OAAO,MAAM//uB,KAAKytL,SAAS,IAAIztL,KAAKgv5C,mBAAkB,EAAGhv5C,KAAKig4C,eAAc,EAAGjg4C,KAAK62yC,SAAQ,EAAGz3yC,EAAEiqZ,OAAOrpZ,KAAKZ,EAAEw5X,KAAKt4X,EAAE,CAAC,MAAM,SAAS,WAAW,eAAeN,KAAKgsd,SAAS5sd,EAAEiqZ,OAAO,CAAC98Y,KAAK,UAAUjM,GAAGN,KAAKiv5C,uBAAuB3u5C,EAAE4n5C,sBAAsB,MAAMlo5C,KAAKytL,SAAS,MAAM,IAAIjmK,MAAM,mDAAmDxnB,KAAK0z3C,iBAAiB1y3C,EAAG,CAAC,OAAO7B,IAAIyB,EAAEpB,UAAUL,IAAIyB,EAAElB,UAAUJ,OAAOY,OAAOf,GAAGA,EAAEO,YAAYO,YAAYW,EAAEA,EAAElB,UAAUmlJ,KAAK,WAAW,IAAI1lJ,EAAEa,KAAKA,KAAK62yC,SAAQ,EAAG72yC,KAAKsz3C,KAAK,IAAIl03C,EAAEuqB,MAAM,cAAc,CAACqlP,SAAS,YAAYhvQ,KAAKkv5C,iBAAiBrr5C,EAAE7D,KAAKgsd,SAAShsd,KAAKqvB,IAAI8/3C,iBAAgB,SAAUvu5C,EAAEN,GAAGnB,EAAE+v5C,iBAAiB,KAAK/v5C,EAAE03yC,SAAQ,EAAGj2yC,EAAEzB,EAAEm03C,KAAK,IAAIl03C,EAAEijZ,WAAWzhZ,IAAIN,IAAIlB,EAAEiqZ,OAAOlqZ,EAAEmB,GAAGA,EAAE09H,SAAS7+H,EAAEiw5C,WAAW,IAAItq5C,EAAExE,EAAE09H,OAAO7+H,EAAE4jO,QAAQ5jO,EAAE6jO,UAAU5jO,EAAEoz3C,mBAAmBly3C,EAAEoqC,MAAMvrC,EAAEkwB,IAAI8/3C,gBAAgBt+B,oBAAoBzx3C,EAAEmz3C,iBAAiBjy3C,EAAEoqC,MAAMvrC,EAAEkwB,IAAIgg4C,YAAYlw5C,EAAEkwB,IAAI8/3C,gBAAgBn+B,UAAU7x3C,EAAEkwB,IAAI8/3C,gBAAgBt+B,oBAAoB1x3C,EAAEm03C,KAAK,IAAIl03C,EAAEuqB,MAAM,OAAO,CAACqlP,SAAS,SAASsgpC,eAAe,cAAcnw5C,EAAEm03C,KAAK,IAAIl03C,EAAEuqB,MAAM,OAAO,CAACqlP,SAAS,SAASsgpC,eAAe,aAAe,GAAG,EAAE1u5C,EAAElB,UAAUy3M,OAAO,WAAW,OAAOn3M,KAAK62yC,OAAO,EAAEj2yC,EAAElB,UAAU6v5C,QAAQ,SAASnw5C,GAAG,OAAQY,KAAKov5C,YAAYpv5C,KAAKov5C,WAAWxy3C,SAASx9B,EAAE243C,UAAU,EAAEn33C,EAAElB,UAAU8oO,MAAM,SAASppO,GAAGY,KAAKqvB,IAAIjwB,EAAEY,KAAK6kJ,MAAO,EAAEjkJ,EAAElB,UAAU8v5C,kBAAkB,SAASpw5C,GAAGY,KAAKkv5C,kBAAkBlv5C,KAAKkv5C,iBAAiBrs2C,SAASzjD,IAAIY,KAAKqvB,IAAIhb,MAAMo74C,aAAazv5C,KAAKurB,IAAImk4C,aAAa1v5C,KAAK6kJ,MAAO,EAAEjkJ,EAAElB,UAAUiw5C,SAAS,SAASvw5C,GAAG,IAAID,EAAEa,KAAK,OAAOA,KAAKwv5C,mBAAkB,WAAYrw5C,EAAE6sd,SAASthb,MAAMtrC,CAAG,IAAGY,IAAI,EAAEY,EAAElB,UAAUima,OAAO,SAASvma,GAAG,IAAID,EAAEa,KAAK,OAAOA,KAAKwv5C,mBAAkB,WAAYrw5C,EAAE+wB,IAAI9wB,EAAED,EAAE6sd,SAAS97b,IAAI9wB,CAAG,IAAGY,IAAI,EAAEY,EAAElB,UAAUspO,SAAS,WAAWhpO,KAAKkv5C,mBAAmBlv5C,KAAKkv5C,iBAAiBrs2C,SAAS7iD,KAAKkv5C,iBAAiB,KAAM,EAAEtu5C,EAAElB,UAAUytsB,UAAU,WAAW,OAAO/tsB,EAAEiqZ,OAAO,CAAC,EAAErpZ,KAAKgsd,SAAS,EAAEprd,EAAElB,UAAUonM,SAAS,SAAS3nM,EAAEyB,GAAG,IAAIN,EAAEN,KAAKqvB,IAAI8/3C,gBAAgB19B,iBAAiBty3C,EAAEq+4C,OAAOzlB,UAAU7n2C,IAAIlwB,KAAK0qC,MAAM1qC,KAAK+/uB,SAAShgvB,EAAE,CAACglE,QAAQ/kE,KAAKqvB,IAAI8/3C,gBAAgB/0e,iBAAiB956B,EAAElB,EAAEoj5C,aAAa3vB,MAAMz/hC,IAAIj0V,EAAEi0V,IAAIoqjC,OAAOr+4C,EAAEq+4C,OAAO792C,KAAKxgC,EAAEq+4C,OAAO5B,YAAYnutC,SAASztL,KAAKytL,SAAStuL,EAAEq+4C,OAAOtB,kBAAkB3v4C,KAAKvM,KAAKuM,KAAK1E,OAAO7H,KAAKurB,GAAGqjG,WAAWxvH,EAAEghS,QAAQn7L,iBAAiBgjzC,mBAAmBjo5C,KAAKqvB,IAAI443C,mBAAmBh0B,UAAUj03C,KAAKi03C,WAAW,SAASjz3C,EAAEV,EAAEP,GAAG,cAAcZ,EAAE4lE,QAAQ5lE,EAAEsqB,QAAQ7oB,EAAE,MAAMN,GAAG,MAAMA,EAAEmlB,OAAO7kB,EAAEN,IAAIP,GAAGA,EAAEwo5C,iBAAiBpp5C,EAAEop5C,eAAexo5C,EAAEwo5C,gBAAgBvo5C,KAAKqvB,IAAIug4C,sBAAsB7v5C,GAAGZ,EAAE8g5C,cAAclg5C,GAAGZ,EAAEig5C,eAAer/4C,EAAEC,KAAKqvB,IAAI+k7B,SAASh18B,EAAE2k5C,wBAAwB/j5C,KAAKw3iC,YAAY52iC,EAAE,WAAWzB,EAAEsp5C,iBAAiBzo5C,KAAK8mM,SAAS3nM,EAAEA,EAAEsp5C,gBAAgBtp5C,EAAEsp5C,eAAe,OAAO,CAAC1o5C,EAAEglE,QAAQmj1C,sBAAsBlo5C,KAAKiv5C,uBAAuB9v5C,EAAE8z3C,OAAO,YAAY9z3C,EAAEwM,MAAM,YAAYxM,EAAEwM,MAAMxM,EAAEsp5C,eAAe7n5C,EAAEzB,EAAE4lE,QAAQ5lE,EAAE8z3C,MAAM3q2C,KAAK,aAAavoB,EAAEiB,EAAEqC,KAAKrD,QAAQb,EAAE8z3C,MAAMjz3C,KAAKw3iC,WAAWwsW,WAAW7k5C,EAAE4lE,QAAQ5lE,EAAE8z3C,MAAM3q2C,KAAK,WAAWvoB,EAAEiB,EAAEqC,KAAKrD,OAAQ,EAAEY,EAAElB,UAAUgp5C,UAAU,SAAStp5C,GAAGA,EAAE2lE,UAAU3lE,EAAE2lE,QAAQliB,gBAAgBzjD,EAAE2lE,SAAS3lE,EAAE6z3C,OAAO7z3C,EAAE6z3C,MAAM3q2C,KAAK,YAAY,CAAC8qU,IAAIh0V,EAAEg0V,IAAI7mV,KAAKvM,KAAKuM,KAAK1E,OAAO7H,KAAKurB,SAAI,EAAQ,EAAE3qB,EAAElB,UAAUy/L,WAAW,SAAS//L,GAAGA,EAAEig5C,mBAAmBjg5C,EAAE6z3C,OAAO7z3C,EAAE6z3C,MAAM3q2C,KAAK,aAAa,CAAC8qU,IAAIh0V,EAAEg0V,IAAI7mV,KAAKvM,KAAKuM,KAAK1E,OAAO7H,KAAKurB,SAAI,EAAQ,EAAE3qB,EAAElB,UAAU439B,cAAc,WAAW,OAAO,CAAE,EAAE129B,CAAC,CAAn6G,CAAq6GxB,EAAEmi5C,SAASp94C,EAAE,SAAShF,GAAG,SAASyB,EAAEA,EAAEN,EAAEP,EAAEiB,GAAG7B,EAAES,KAAKI,MAAMA,KAAKurB,GAAG3qB,EAAEZ,KAAKw3iC,WAAWz3iC,EAAEC,KAAK0z3C,iBAAiB1y3C,GAAGhB,KAAKuM,KAAK,SAASvM,KAAK+iO,QAAQ,EAAE/iO,KAAKgjO,QAAQ,GAAGhjO,KAAK6v5C,WAAU,EAAG7v5C,KAAK+/uB,OAAO,MAAM//uB,KAAKytL,SAAS,IAAIztL,KAAK62yC,SAAQ,EAAG72yC,KAAKgsd,SAAS5sd,EAAEiqZ,OAAO,CAAC98Y,KAAK,UAAUjM,GAAGlB,EAAEiqZ,OAAOrpZ,KAAKZ,EAAEw5X,KAAKt4X,EAAE,CAAC,MAAM,SAAS,aAAc,CAAC,OAAOnB,IAAIyB,EAAEpB,UAAUL,IAAIyB,EAAElB,UAAUJ,OAAOY,OAAOf,GAAGA,EAAEO,YAAYO,YAAYW,EAAEA,EAAElB,UAAUmlJ,KAAK,WAAW,IAAI1lJ,EAAEa,KAAKA,KAAK62yC,SAAQ,EAAG72yC,KAAKsz3C,KAAK,IAAIl03C,EAAEuqB,MAAM,cAAc,CAACqlP,SAAS,YAAYhvQ,KAAKkv5C,iBAAiBrr5C,EAAE7D,KAAKgsd,SAAShsd,KAAKqvB,IAAI8/3C,iBAAgB,SAAUvu5C,EAAEN,GAAGnB,EAAE+v5C,iBAAiB,KAAK/v5C,EAAE03yC,SAAQ,EAAGj2yC,EAAEzB,EAAEm03C,KAAK,IAAIl03C,EAAEijZ,WAAWzhZ,IAAIN,IAAIlB,EAAEiqZ,OAAOlqZ,EAAEmB,GAAGA,EAAE09H,SAAS7+H,EAAEiw5C,WAAW,IAAItq5C,EAAExE,EAAE09H,OAAO7+H,EAAE4jO,QAAQ5jO,EAAE6jO,UAAU5jO,EAAEoz3C,mBAAmBly3C,EAAEoqC,OAAOtrC,EAAEmz3C,iBAAiBjy3C,EAAEoqC,MAAMvrC,EAAEkwB,IAAIgg4C,YAAYlw5C,EAAEkwB,IAAI8/3C,gBAAgBn+B,WAAW7x3C,EAAEm03C,KAAK,IAAIl03C,EAAEuqB,MAAM,OAAO,CAACqlP,SAAS,SAASsgpC,eAAe,cAAcnw5C,EAAEm03C,KAAK,IAAIl03C,EAAEuqB,MAAM,OAAO,CAACqlP,SAAS,SAASsgpC,eAAe,aAAe,GAAG,EAAE1u5C,EAAElB,UAAUy3M,OAAO,WAAW,OAAOn3M,KAAK62yC,OAAO,EAAEj2yC,EAAElB,UAAU8oO,MAAM,SAASppO,GAAGY,KAAKqvB,IAAIjwB,EAAEY,KAAK6kJ,MAAO,EAAEjkJ,EAAElB,UAAUspO,SAAS,WAAWhpO,KAAKkv5C,mBAAmBlv5C,KAAKkv5C,iBAAiBrs2C,SAAS7iD,KAAKkv5C,iBAAiB,KAAM,EAAEtu5C,EAAElB,UAAUytsB,UAAU,WAAW,OAAO/tsB,EAAEiqZ,OAAO,CAAC,EAAErpZ,KAAKgsd,SAAS,EAAEprd,EAAElB,UAAU6v5C,QAAQ,SAASnw5C,GAAG,OAAQY,KAAKov5C,YAAYpv5C,KAAKov5C,WAAWxy3C,SAASx9B,EAAE243C,UAAU,EAAEn33C,EAAElB,UAAUonM,SAAS,SAAS3nM,EAAEyB,GAAG,IAAIN,EAAEN,KAAKD,EAAEC,KAAKqvB,IAAI8/3C,gBAAgB19B,iBAAiBty3C,EAAEq+4C,OAAOzlB,UAAU7n2C,IAAIlwB,KAAK0qC,MAAM1qC,KAAK+/uB,QAAQ//uB,KAAKytL,UAAUtuL,EAAE4lE,QAAQ3lE,EAAEwsK,SAAS5rK,KAAKqvB,IAAI8/3C,gBAAgB/0e,iBAAiBr66B,EAAEX,EAAEoj5C,aAAa3vB,OAAM,SAAU9y3C,EAAEiB,GAAG,UAAU7B,EAAE4lE,QAAQ5lE,EAAEsqB,QAAQtqB,EAAEwM,MAAM,WAAW/K,EAAE,WAAW,GAAGb,EAAEZ,EAAEwM,MAAM,UAAU/K,EAAEb,QAAQ,GAAGiB,EAAE,CAACV,EAAE+uB,IAAIug4C,sBAAsBzw5C,EAAE8g5C,cAAcj/4C,UAAUA,EAAEmy3C,oBAAoBny3C,EAAEi1B,QAAQ,IAAI52B,EAAEiB,EAAE+uB,IAAI+k7B,QAAQjn6B,QAAQrsC,EAAEzB,EAAE4uH,GAAG9uH,EAAEu2H,QAAQp1H,EAAE+uB,IAAI+k7B,QAAQ07c,eAAe9u5C,EAAE+9B,OAAO5/B,EAAEu2H,QAAQv2H,EAAEu2H,QAAQnnD,OAAOvtE,EAAE,CAAC+34C,WAAU,KAAM554C,EAAEu2H,QAAQ,IAAIt2H,EAAEivV,QAAQhvV,EAAE2B,EAAEF,EAAEglN,KAAK,CAACizrC,WAAU,IAAK554C,EAAEu2H,QAAQryH,KAAKvC,EAAEohR,OAAOphR,EAAE8rS,cAAc9rS,EAAEyqS,uBAAuBlsS,EAAE0w5C,6BAA6Bjv5C,EAAEyvV,cAAczvV,EAAEgrS,WAAWzsS,EAAE0w5C,4BAA4B7umC,2BAA2B7hT,EAAE2w5C,iCAAiC7w5C,EAAEwM,MAAM,SAASvM,EAAE2k5C,wBAAwBzj5C,EAAEk3iC,YAAY52iC,EAAE,KAAM,CAAE,GAAG,EAAEA,EAAElB,UAAUgp5C,UAAU,SAAStp5C,EAAED,GAAGC,EAAE2lE,UAAU3lE,EAAE2lE,QAAQliB,gBAAgBzjD,EAAE2lE,SAAS5lE,GAAI,EAAEyB,EAAElB,UAAUy/L,WAAW,SAAS//L,EAAED,GAAGC,EAAEs2H,SAAS11H,KAAKqvB,IAAI+k7B,QAAQ67c,gBAAgB7w5C,EAAEs2H,SAASv2H,GAAI,EAAEyB,EAAElB,UAAU439B,cAAc,WAAW,OAAO,CAAE,EAAE129B,CAAC,CAAn+E,CAAq+ExB,EAAEmi5C,SAAS574C,EAAE,SAASxG,GAAG,SAASyB,EAAEA,EAAEN,EAAEP,EAAEiB,GAAG7B,EAAES,KAAKI,KAAKY,EAAEN,EAAEP,EAAEiB,GAAGhB,KAAKuM,KAAK,aAAavM,KAAKgjO,QAAQ,GAAGhjO,KAAKgsd,SAAS5sd,EAAEiqZ,OAAO,CAAC98Y,KAAK,cAAcjM,GAAGN,KAAK4nB,SAAStnB,EAAEsnB,UAAU,QAAS,CAAC,OAAOzoB,IAAIyB,EAAEpB,UAAUL,IAAIyB,EAAElB,UAAUJ,OAAOY,OAAOf,GAAGA,EAAEO,YAAYO,YAAYW,EAAEA,EAAElB,UAAUytsB,UAAU,WAAW,MAAO,CAAC5gsB,KAAK,aAAa2jB,IAAIlwB,KAAKkwB,IAAIu9J,SAASztL,KAAKytL,SAAS/iJ,MAAM1qC,KAAK0qC,MAAMszF,OAAOh+H,KAAKg+H,OAAOp2G,SAAS5nB,KAAK4nB,SAAS,EAAEhnB,EAAElB,UAAUonM,SAAS,SAAS3nM,EAAEyB,GAAG,IAAIN,EAAEN,KAAKqvB,IAAI8/3C,gBAAgB19B,iBAAiBty3C,EAAEq+4C,OAAOzlB,UAAU7n2C,IAAIlwB,KAAK0qC,MAAM1qC,KAAK+/uB,QAAQ//uB,KAAKytL,UAAU,SAAS1tL,EAAEX,EAAEkB,GAAGlB,IAAID,EAAEwM,MAAM,UAAU/K,EAAExB,IAAIkB,IAAInB,EAAE+w5C,IAAI5v5C,EAAEnB,EAAEgx5C,uBAAsB,EAAGhx5C,EAAEwM,MAAM,SAAS/K,EAAE,MAAO,CAACzB,EAAE4lE,QAAQ3lE,EAAEwsK,SAAS5rK,KAAKqvB,IAAI8/3C,gBAAgB/0e,iBAAiB956B,EAAElB,EAAEoj5C,aAAa3vB,MAAM,SAASvy3C,EAAEU,GAAG,UAAU7B,EAAE4lE,QAAQ5lE,EAAEsqB,QAAQtqB,EAAEwM,MAAM,WAAW/K,EAAE,WAAW,GAAGN,EAAEnB,EAAEwM,MAAM,UAAU/K,EAAEN,QAAQ,GAAGU,EAAE,CAAChB,KAAKqvB,IAAIug4C,sBAAsBzw5C,EAAE8g5C,cAAcj/4C,UAAUA,EAAEmy3C,oBAAoBny3C,EAAEi1B,QAAQ,IAAI52B,EAAED,EAAE8C,OAAOomQ,aAAatnQ,aAAa5B,EAAE8C,OAAOomQ,aAAalpQ,EAAEin5C,2BAA2Brl5C,EAAE5B,EAAEghS,QAAQl6C,aAAallP,EAAE,GAAGF,EAAE,CAACsyV,IAAIj0V,EAAEi0V,IAAIn0L,MAAM9/J,EAAEq+4C,OAAO314C,OAAO7H,KAAKurB,GAAGq93C,aAAavp5C,EAAEuoB,SAAS5nB,KAAK4nB,UAAUzoB,EAAE8z3C,OAAO,YAAY9z3C,EAAEwM,QAAQxM,EAAE8z3C,MAAMjz3C,KAAKw3iC,WAAWwsW,WAAW7k5C,EAAE8z3C,MAAM3q2C,KAAK,cAAcxnB,EAAEf,EAAEsD,KAAKrD,OAAQ,CAAC,EAAEqD,KAAKrD,OAAOb,EAAEix5C,iBAAiBpw5C,KAAKqw5C,qBAAqBlx5C,EAAEq+4C,OAAQ,EAAE584C,EAAElB,UAAU2w5C,qBAAqB,SAASlx5C,GAAG,IAAIyB,EAAEzB,EAAE443C,UAAUz33C,EAAEuC,KAAK6yF,IAAI,EAAE90F,EAAE+E,GAAG5F,GAAGa,EAAEqD,EAAE,EAAE3D,GAAGA,EAAEU,EAAE,IAAIJ,EAAEqD,EAAE9E,EAAEyY,KAAK,EAAEzY,EAAEyY,KAAKvY,GAAGuB,EAAEqD,EAAE,EAAE3D,GAAGA,EAAEQ,EAAEF,EAAEqD,EAAE,IAAI3D,EAAEnB,EAAEyY,KAAK,EAAEzY,EAAEyY,KAAKpV,EAAE,CAAC,EAAE,OAAOA,EAAE,IAAIpD,EAAE6i5C,iBAAiB9i5C,EAAEy84C,YAAY564C,EAAEJ,EAAE+E,EAAE5F,EAAEa,EAAEoC,GAAG6hB,KAAK,CAACyr4C,YAAW,GAAI9t5C,EAAE,IAAIpD,EAAE6i5C,iBAAiB9i5C,EAAEy84C,YAAY964C,EAAEF,EAAE+E,EAAEtG,EAAEuB,EAAEoC,GAAG6hB,KAAK,CAACyr4C,YAAW,GAAI1v5C,EAAEoC,EAAE,IAAIR,EAAE,IAAIpD,EAAE6i5C,iBAAiB9i5C,EAAEy84C,YAAY564C,EAAEJ,EAAE+E,EAAE5F,EAAEa,EAAEoC,EAAE,GAAG6hB,KAAK,CAACyr4C,YAAW,GAAI9t5C,EAAE,IAAIpD,EAAE6i5C,iBAAiB9i5C,EAAEy84C,YAAYz84C,EAAEyY,KAAKhX,EAAE+E,EAAE/E,EAAEqD,EAAErD,EAAEoC,EAAE,GAAG6hB,KAAK,CAACyr4C,YAAW,GAAI9t5C,EAAE,IAAIpD,EAAE6i5C,iBAAiB9i5C,EAAEy84C,YAAY964C,EAAEF,EAAE+E,EAAEtG,EAAEuB,EAAEoC,EAAE,GAAG6hB,KAAK,CAACyr4C,YAAW,IAAK1v5C,EAAEoC,EAAE,EAAE1C,IAAIkC,EAAE,IAAIpD,EAAE6i5C,iBAAiB9i5C,EAAEy84C,YAAY564C,EAAEJ,EAAE+E,EAAE5F,EAAEa,EAAEoC,EAAE,GAAG6hB,KAAK,CAACyr4C,YAAW,GAAI9t5C,EAAE,IAAIpD,EAAE6i5C,iBAAiB9i5C,EAAEy84C,YAAYz84C,EAAEyY,KAAKhX,EAAE+E,EAAE/E,EAAEqD,EAAErD,EAAEoC,EAAE,GAAG6hB,KAAK,CAACyr4C,YAAW,GAAI9t5C,EAAE,IAAIpD,EAAE6i5C,iBAAiB9i5C,EAAEy84C,YAAY964C,EAAEF,EAAE+E,EAAEtG,EAAEuB,EAAEoC,EAAE,GAAG6hB,KAAK,CAACyr4C,YAAW,IAAK9t5C,CAAC,EAAE5B,EAAElB,UAAUy/L,WAAW,SAAS//L,GAAGA,EAAEmx5C,YAAYvw5C,KAAKqvB,IAAI+k7B,QAAQ67c,gBAAgB7w5C,EAAEmx5C,YAAYnx5C,EAAEgvH,MAAMhvH,EAAEgvH,IAAIgwB,iBAAiBh/I,EAAEgvH,KAAKhvH,EAAE8w5C,YAAY9w5C,EAAE8w5C,WAAW9w5C,EAAEgx5C,iBAAiBhx5C,EAAEuM,MAAM,WAAWvM,EAAE6z3C,OAAO7z3C,EAAE6z3C,MAAM3q2C,KAAK,gBAAgB,CAAC8qU,IAAIh0V,EAAEg0V,IAAIvrV,OAAO7H,KAAKurB,IAAK,EAAE3qB,CAAC,CAAr3E,CAAu3EuD,GAAGoB,EAAE,SAASpG,GAAG,SAASyB,EAAEA,EAAEN,EAAEP,EAAEiB,GAAG7B,EAAES,KAAKI,MAAMA,KAAKurB,GAAG3qB,EAAEZ,KAAKuM,KAAK,UAAUvM,KAAK+iO,QAAQ,EAAE/iO,KAAKgjO,QAAQ,GAAGhjO,KAAKytL,SAAS,IAAIztL,KAAKig4C,eAAc,EAAGjg4C,KAAKgv5C,mBAAkB,EAAGhv5C,KAAKww5C,UAAS,EAAGxw5C,KAAK62yC,SAAQ,EAAG72yC,KAAKiz3C,MAAMlz3C,EAAEik5C,WAAWhk5C,KAAK0z3C,iBAAiB1y3C,GAAGhB,KAAKykJ,MAAMnkJ,EAAEkP,KAAKxP,KAAKgsd,SAAS5sd,EAAEiqZ,OAAO,CAAC,EAAE/oZ,GAAGN,KAAKiv5C,uBAAuB3u5C,EAAE4n5C,sBAAsBlo5C,KAAKyw5C,gBAAgB,QAAG,IAASnw5C,EAAE0iO,UAAUhjO,KAAKgjO,QAAQ1iO,EAAE0iO,SAAS1iO,EAAEiM,OAAOvM,KAAKuM,KAAKjM,EAAEiM,MAAMjM,EAAEykG,cAAc/kG,KAAK+kG,YAAYzkG,EAAEykG,aAAa/kG,KAAKi03C,UAAU3z3C,EAAE2z3C,UAAU,IAAI503C,EAAED,EAAEii5C,OAAOrh5C,KAAKytL,SAASztL,KAAKurQ,cAAcnsQ,EAAEiqZ,OAAO,CAACxhZ,OAAO7H,KAAKurB,GAAG49X,QAAQ7oZ,EAAE6oZ,UAAS,EAAG+ggC,iBAAiB,CAAChi4C,aAAQ,IAAS5nB,EAAE4nB,OAAO5nB,EAAE4nB,OAAO,KAAK7oB,EAAEupL,gBAAW,IAAStoL,EAAEsoL,UAAUtoL,EAAEsoL,UAAU,MAAMvpL,EAAEkrK,OAAOnrK,EAAEii5C,OAAOp5xC,QAAQjoH,KAAKgjO,QAAQ2xpC,YAAYr03C,EAAEq03C,cAAa,EAAGr79B,WAAWh5Z,EAAEg5Z,aAAY,GAAI2w/B,oBAAoB,CAAChiyC,aAAQ,IAAS3nH,EAAEm03C,eAAe5x3C,KAAKgL,IAAIvN,EAAEm03C,eAAez03C,KAAKgjO,QAAQ,GAAGhjO,KAAKgjO,QAAQ,EAAEq2L,UAAUx2Z,KAAK8K,IAAI,EAAErN,EAAEo03C,kBAAkB,GAAGnqtC,OAAOnrK,EAAEii5C,OAAO/pwC,QAAQh3I,EAAEk03C,eAAe,IAAIn13C,EAAEgrB,KAAI,EAAGivY,WAAWh5Z,EAAEg5Z,aAAY,GAAIwC,kBAAkBx7Z,EAAEw7Z,kBAAkBjvY,OAAOvsB,EAAEusB,QAAQvsB,EAAEirQ,cAAe,CAAC,OAAOpsQ,IAAIyB,EAAEpB,UAAUL,IAAIyB,EAAElB,UAAUJ,OAAOY,OAAOf,GAAGA,EAAEO,YAAYO,YAAYW,EAAEA,EAAElB,UAAUmlJ,KAAK,WAAW,IAAI1lJ,EAAEa,KAAKA,KAAKsz3C,KAAK,IAAIl03C,EAAEuqB,MAAM,cAAc,CAACqlP,SAAS,YAAYhvQ,KAAK0w5C,mBAAkB,SAAU9v5C,GAAG,GAAGA,EAAEzB,EAAEm03C,KAAK,IAAIl03C,EAAEijZ,WAAWzhZ,QAAS,CAAC,IAAIN,EAAE,CAAC0uQ,SAAS,SAASsgpC,eAAe,YAAYnw5C,EAAE8v5C,wBAAwB9v5C,EAAEsx5C,iBAAiBtx5C,EAAEsx5C,gBAAgBpw5C,OAAO,IAAIC,EAAEio5C,eAAepp5C,EAAEsx5C,gBAAgBtx5C,EAAEsx5C,gBAAgB,IAAItx5C,EAAEm03C,KAAK,IAAIl03C,EAAEuqB,MAAM,OAAOrpB,GAAI,CAAE,GAAG,EAAEM,EAAElB,UAAU8oO,MAAM,SAASppO,GAAGY,KAAKqvB,IAAIjwB,EAAEY,KAAK6kJ,MAAO,EAAEjkJ,EAAElB,UAAUo/H,QAAQ,SAAS3/H,GAAG,IAAIyB,EAAEZ,KAAK,OAAOA,KAAKykJ,MAAMtlJ,EAAEa,KAAKsz3C,KAAK,IAAIl03C,EAAEuqB,MAAM,cAAc,CAACqlP,SAAS,YAAYhvQ,KAAK0w5C,mBAAkB,SAAUvx5C,GAAG,GAAGA,EAAEyB,EAAE0y3C,KAAK,IAAIl03C,EAAEijZ,WAAWljZ,QAAS,CAAC,IAAImB,EAAE,CAAC0uQ,SAAS,SAASsgpC,eAAe,WAAW1u5C,EAAEqu5C,wBAAwBru5C,EAAE6v5C,iBAAiB7v5C,EAAE6v5C,gBAAgBpw5C,OAAO,IAAIC,EAAEio5C,eAAe3n5C,EAAE6v5C,gBAAgB7v5C,EAAE6v5C,gBAAgB,IAAI7v5C,EAAE0y3C,KAAK,IAAIl03C,EAAEuqB,MAAM,OAAOrpB,GAAI,CAAE,IAAGN,IAAI,EAAEY,EAAElB,UAAUu7Z,wBAAwB,SAAS77Z,EAAED,GAAG,OAAOa,KAAKiz3C,MAAM3q2C,KAAK,kCAAkC,CAACiyY,UAAUn7Z,EAAEyI,OAAO7H,KAAKurB,IAAIpsB,GAAGa,IAAI,EAAEY,EAAElB,UAAU0q5C,mBAAmB,SAAShr5C,EAAED,GAAG,OAAOa,KAAKiz3C,MAAM3q2C,KAAK,6BAA6B,CAACiyY,UAAUn7Z,EAAEyI,OAAO7H,KAAKurB,IAAIpsB,GAAGa,IAAI,EAAEY,EAAElB,UAAU2q5C,iBAAiB,SAASjr5C,EAAED,EAAEyB,EAAEN,GAAG,OAAON,KAAKiz3C,MAAM3q2C,KAAK,2BAA2B,CAACzgB,OAAO7H,KAAKurB,GAAGgvY,UAAUn7Z,EAAEwjE,MAAMzjE,EAAEgjD,OAAOvhD,GAAGN,GAAGN,IAAI,EAAEY,EAAElB,UAAUgx5C,kBAAkB,SAASvx5C,GAAG,IAAIyB,EAAEZ,KAAKA,KAAK62yC,SAAQ,EAAG,IAAIv2yC,EAAElB,EAAEiqZ,OAAO,CAAC,EAAErpZ,KAAKurQ,eAAexrQ,EAAEC,KAAKykJ,MAAM,iBAAiB1kJ,GAAGO,EAAEykE,QAAQ/kE,KAAKqvB,IAAI8/3C,gBAAgB/0e,iBAAiBh76B,EAAEghS,QAAQugpB,WAAW5g7B,GAAGX,EAAEoj5C,aAAa5vB,QAAQty3C,EAAEykE,QAAQmj1C,sBAAsBlo5C,KAAKiv5C,wBAAwB3u5C,EAAEkP,KAAK8K,KAAKb,UAAU1Z,GAAGC,KAAKiz3C,MAAM3q2C,KAAKtoB,KAAKuM,KAAK,YAAYjM,GAAE,SAAUlB,EAAEW,GAAGa,EAAE4v5C,UAAUzw5C,GAAGA,EAAEgq5C,YAAYnp5C,EAAEi2yC,SAAQ,EAAG92yC,GAAGA,EAAEwo5C,gBAAgBxo5C,EAAEwo5C,eAAe3n5C,EAAE2qB,MAAM3qB,EAAE6v5C,gBAAgB1w5C,EAAEwo5C,eAAe3n5C,EAAE2qB,IAAIxpB,MAAM,IAAInB,EAAEqy3C,MAAM3q2C,KAAK1nB,EAAE2L,KAAK,YAAY,CAAC1E,OAAOvH,EAAEuH,QAAQ,MAAM1I,EAAEC,GAAK,GAAG,EAAEwB,EAAElB,UAAUy3M,OAAO,WAAW,OAAOn3M,KAAK62yC,OAAO,EAAEj2yC,EAAElB,UAAUonM,SAAS,SAAS3nM,EAAEyB,GAAG,IAAIN,EAAEN,KAAKD,EAAEZ,EAAE8z3C,MAAM,aAAa,WAAW9z3C,EAAE8z3C,MAAMjz3C,KAAKiz3C,MAAM9z3C,EAAE4lE,QAAQ/kE,KAAKiz3C,MAAM3q2C,KAAKvoB,EAAE,CAACwM,KAAKvM,KAAKuM,KAAK6mV,IAAIj0V,EAAEi0V,IAAIoqjC,OAAOr+4C,EAAEq+4C,OAAO792C,KAAKxgC,EAAEq+4C,OAAO5B,YAAY3zxC,QAAQjoH,KAAKgjO,QAAQv1C,SAASztL,KAAKytL,SAAS5lL,OAAO7H,KAAKurB,GAAGqjG,WAAWxvH,EAAEghS,QAAQn7L,iBAAiBgjzC,mBAAmBjo5C,KAAKqvB,IAAI443C,mBAAmBh0B,UAAUj03C,KAAKi03C,YAAW,SAAU703C,EAAE4B,GAAG,cAAc7B,EAAE4lE,QAAQ5lE,EAAEkg5C,mBAAmBlg5C,EAAEsqB,QAAQ7oB,EAAE,MAAMxB,EAAEwB,EAAExB,IAAID,EAAEig5C,eAAep+4C,EAAEV,EAAE+uB,IAAI+k7B,QAAQ,eAAer08B,GAAGa,EAAE,MAAO,GAAG,EAAEA,EAAElB,UAAUgp5C,UAAU,SAAStp5C,GAAGA,EAAE2lE,UAAU3lE,EAAE2lE,QAAQliB,gBAAgBzjD,EAAE2lE,SAAS3lE,EAAEqqB,SAAQ,CAAG,EAAE7oB,EAAElB,UAAUy/L,WAAW,SAAS//L,GAAGA,EAAEig5C,mBAAmBr/4C,KAAKiz3C,MAAM3q2C,KAAK,aAAa,CAAC8qU,IAAIh0V,EAAEg0V,IAAI7mV,KAAKvM,KAAKuM,KAAK1E,OAAO7H,KAAKurB,IAAK,EAAE3qB,EAAElB,UAAUspO,SAAS,WAAWhpO,KAAKww5C,UAAS,EAAGxw5C,KAAKiz3C,MAAM3q2C,KAAK,eAAe,CAAC/b,KAAKvM,KAAKuM,KAAK1E,OAAO7H,KAAKurB,IAAK,EAAE3qB,EAAElB,UAAUytsB,UAAU,WAAW,OAAO/tsB,EAAEiqZ,OAAO,CAAC,EAAErpZ,KAAKgsd,SAAS,CAACz/c,KAAKvM,KAAKuM,KAAKiD,KAAKxP,KAAKykJ,OAAO,EAAE7jJ,EAAElB,UAAU439B,cAAc,WAAW,OAAO,CAAE,EAAE129B,CAAC,CAAxkI,CAA0kIxB,EAAEmi5C,SAAS184C,EAAEzF,EAAEql5C,aAAa,CAAC,CAAC/54C,KAAK,QAAQ6B,KAAK,QAAQ2hP,WAAW,GAAG,CAACxjP,KAAK,gBAAgB6B,KAAK,QAAQ2hP,WAAW,KAAKroP,EAAE,SAAS1G,GAAG,SAASyB,EAAExB,EAAEwB,EAAEN,EAAEP,GAAGZ,EAAES,KAAKI,MAAMA,KAAKurB,GAAGnsB,EAAEY,KAAKw3iC,WAAWl3iC,EAAEN,KAAK8kC,YAAYlkC,EAAEkkC,YAAY9kC,KAAKuM,KAAK,QAAQvM,KAAK+iO,QAAQ,EAAE/iO,KAAKgjO,QAAQ,GAAGhjO,KAAKytL,SAAS,IAAIztL,KAAK0qC,MAAM,CAAC,EAAE1qC,KAAK62yC,SAAQ,EAAG72yC,KAAK0z3C,iBAAiB3z3C,GAAGC,KAAKmpB,QAAQvoB,CAAE,CAAC,OAAOzB,IAAIyB,EAAEpB,UAAUL,IAAIyB,EAAElB,UAAUJ,OAAOY,OAAOf,GAAGA,EAAEO,YAAYO,YAAYW,EAAEA,EAAElB,UAAUmlJ,KAAK,SAAS1lJ,EAAEyB,GAAG,IAAIN,EAAEN,KAAKA,KAAK62yC,SAAQ,EAAG72yC,KAAKsz3C,KAAK,IAAIl03C,EAAEuqB,MAAM,cAAc,CAACqlP,SAAS,YAAYhvQ,KAAKkwB,IAAIlwB,KAAKmpB,QAAQ+G,IAAI9wB,EAAEwsK,SAAS5rK,KAAKqvB,IAAI8/3C,gBAAgB/0e,iBAAiBp66B,KAAKkwB,IAAI9wB,EAAEoj5C,aAAa/lnC,QAAO,SAAU18R,EAAEiB,GAAGV,EAAEu2yC,SAAQ,EAAG92yC,EAAEO,EAAEgz3C,KAAK,IAAIl03C,EAAEijZ,WAAWtiZ,IAAIiB,IAAIV,EAAEiqJ,MAAMvpJ,EAAE7B,IAAImB,EAAEwkC,YAAY3lC,GAAGyB,GAAGA,IAAIN,EAAEqw5C,iBAAmB,GAAG,EAAE/v5C,EAAElB,UAAUy3M,OAAO,WAAW,OAAOn3M,KAAK62yC,OAAO,EAAEj2yC,EAAElB,UAAUkt5C,YAAY,SAASxt5C,GAAG,IAAID,EAAEa,KAAK,OAAOA,KAAKuqJ,OAAOnrJ,EAAE8wB,KAAKlwB,KAAKmpB,QAAQ+G,IAAI9wB,EAAE8wB,IAAIlwB,KAAK6kJ,KAAKzlJ,EAAE0lC,aAAY,WAAY3lC,EAAEu2H,QAAQ,IAAM,IAAG11H,MAAMA,IAAI,EAAEY,EAAElB,UAAUix5C,eAAe,WAAW3w5C,KAAKqvB,MAAMrvB,KAAK4w5C,eAAe5w5C,KAAK8kC,aAAa9kC,KAAKsz3C,KAAK,IAAIl03C,EAAEuqB,MAAM,OAAO,CAACqlP,SAAS,SAASsgpC,eAAe,cAAe,EAAE1u5C,EAAElB,UAAU8oO,MAAM,SAASppO,GAAGY,KAAKqvB,IAAIjwB,EAAEY,KAAK6kJ,MAAO,EAAEjkJ,EAAElB,UAAUkx5C,eAAe,SAASzx5C,GAAG,IAAIyB,EAAEZ,KAAKA,KAAK8kC,YAAY3lC,EAAE,IAAImB,EAAEnB,EAAEkwB,IAAIjwB,EAAE2i5C,mBAAmB5G,YAAYn74C,KAAKw94C,OAAO,SAASr+4C,GAAG,IAAI,IAAIyB,EAAE,IAAIN,EAAE,IAAIP,GAAE,IAAKiB,GAAE,IAAK3B,EAAE,EAAEyB,EAAE3B,EAAEE,EAAEyB,EAAET,OAAOhB,GAAG,EAAE,CAAC,IAAImD,EAAE1B,EAAEzB,GAAGuB,EAAEiC,KAAKgL,IAAIjN,EAAE4B,EAAEyB,GAAG3D,EAAEuC,KAAKgL,IAAIvN,EAAEkC,EAAEQ,GAAGjD,EAAE8C,KAAK8K,IAAI5N,EAAEyC,EAAEyB,GAAGjD,EAAE6B,KAAK8K,IAAI3M,EAAEwB,EAAEQ,EAAG,CAAC,IAAInC,EAAEgC,KAAK8K,IAAI5N,EAAEa,EAAEI,EAAEV,GAAG+B,EAAEQ,KAAK8K,IAAI,EAAE9K,KAAKyK,OAAOzK,KAAKwnB,IAAIxpB,GAAGgC,KAAKsvN,MAAMvvN,EAAEC,KAAK6yF,IAAI,EAAErzF,GAAG,OAAO,IAAIjD,EAAE4h5C,gBAAgB3+4C,EAAEQ,KAAKyK,OAAO1M,EAAEb,GAAG,EAAE6C,GAAGC,KAAKyK,OAAOhN,EAAEU,GAAG,EAAE4B,GAAG,CAA9T,CAAgUtC,GAAGN,KAAK+iO,QAAQ/iO,KAAKgjO,QAAQhjO,KAAKw94C,OAAO734C,EAAE,IAAI5F,EAAEO,EAAE+uB,KAAI,SAAUjwB,GAAG,OAAOwB,EAAE484C,OAAO/B,aAAar84C,GAAGwwvC,QAAS,IAAG,OAAO5vvC,KAAK6w5C,aAAa,IAAIzx5C,EAAE2j5C,qBAAqB/i5C,KAAK6w5C,aAAa/vB,YAAY/g4C,EAAE,GAAGkE,EAAElE,EAAE,GAAGiD,EAAE,EAAE,GAAGhD,KAAK6w5C,aAAa/vB,YAAY/g4C,EAAE,GAAGkE,EAAElE,EAAE,GAAGiD,EAAE5D,EAAEii5C,OAAO,GAAGrh5C,KAAK6w5C,aAAa/vB,YAAY/g4C,EAAE,GAAGkE,EAAElE,EAAE,GAAGiD,EAAE,EAAE5D,EAAEii5C,QAAQrh5C,KAAK6w5C,aAAa/vB,YAAY/g4C,EAAE,GAAGkE,EAAElE,EAAE,GAAGiD,EAAE5D,EAAEii5C,OAAOji5C,EAAEii5C,QAAQrh5C,KAAK8w5C,eAAe9w5C,KAAK8w5C,aAAa1ywC,iBAAiBp+I,KAAK8w5C,cAAc9w5C,KAAKsz3C,KAAK,IAAIl03C,EAAEuqB,MAAM,OAAO,CAACqlP,SAAS,SAASsgpC,eAAe,aAAatv5C,IAAI,EAAEY,EAAElB,UAAU4xa,QAAQ,WAAW,GAAG,IAAIhya,OAAOgU,KAAKtT,KAAK0qC,OAAOrqC,QAAQL,KAAKuqJ,MAAM,CAAC,IAAIprJ,EAAEa,KAAKqvB,IAAI+k7B,QAAQjn6B,QAAQvsC,EAAEzB,EAAE8uH,GAAG,IAAI,IAAI3tH,KAAKN,KAAK8w5C,eAAe9w5C,KAAK8w5C,aAAa3x5C,EAAEum4C,mBAAmB1l4C,KAAK6w5C,aAAahs5C,EAAE673C,UAAU1g4C,KAAK+w5C,iBAAiB/w5C,KAAK+w5C,eAAe3x5C,EAAEqj5C,cAAcre,cAAc,EAAE,EAAE,EAAE,IAAIpk4C,KAAK01H,UAAU11H,KAAK01H,QAAQ,IAAIt2H,EAAEivV,QAAQlvV,EAAEa,KAAKuqJ,MAAM3pJ,EAAEklN,MAAM9lN,KAAK01H,QAAQryH,KAAKzC,EAAEshR,OAAOthR,EAAEgsS,gBAAgB5sS,KAAK0qC,MAAM,CAAC,IAAI3qC,EAAEC,KAAK0qC,MAAMpqC,GAAG,WAAWP,EAAE4L,QAAQ5L,EAAE4L,MAAM,SAAS5L,EAAE21H,QAAQ11H,KAAK01H,QAAS,CAAC,CAAC,EAAE90H,EAAElB,UAAUonM,SAAS,SAAS1nM,EAAED,GAAGa,KAAKw94C,QAAQx94C,KAAKw94C,OAAOjrwC,OAAOnzI,EAAEo+4C,OAAOzlB,YAAY/33C,KAAK0qC,MAAM5qC,OAAOV,EAAEo+4C,OAAO5l4C,OAAOxY,EAAEA,EAAE4l+B,QAAQ,CAAC,EAAE7l+B,EAAE,QAAQC,EAAEuM,MAAM,UAAUxM,EAAE,MAAO,EAAEyB,EAAElB,UAAUytsB,UAAU,WAAW,MAAO,CAAC5gsB,KAAK,QAAQ2jB,IAAIlwB,KAAKmpB,QAAQ+G,IAAI4U,YAAY9kC,KAAK8kC,YAAY,EAAElkC,EAAElB,UAAU439B,cAAc,WAAW,OAAO,CAAE,EAAE129B,CAAC,CAAj4F,CAAm4FxB,EAAEmi5C,SAASl94C,EAAE,SAASlF,GAAG,SAASyB,EAAExB,EAAEwB,EAAEN,EAAEP,GAAGZ,EAAES,KAAKI,KAAKZ,EAAEwB,EAAEN,EAAEP,GAAGC,KAAK6v5C,WAAU,EAAG7v5C,KAAKuM,KAAK,QAAQvM,KAAKmpB,QAAQvoB,CAAE,CAAC,OAAOzB,IAAIyB,EAAEpB,UAAUL,IAAIyB,EAAElB,UAAUJ,OAAOY,OAAOf,GAAGA,EAAEO,YAAYO,YAAYW,EAAEA,EAAElB,UAAUmlJ,KAAK,WAAW,IAAI1lJ,EAAEa,KAAKA,KAAK62yC,SAAQ,EAAG,IAAIj2yC,EAAEZ,KAAKmpB,QAAQnpB,KAAK603C,KAAK,GAAG,IAAI,IAAIv03C,EAAE,EAAEP,EAAEa,EAAEi03C,KAAKv03C,EAAEP,EAAEM,OAAOC,GAAG,EAAEN,KAAK603C,KAAKhz3C,KAAK7B,KAAKqvB,IAAI8/3C,gBAAgB/0e,iBAAiBr66B,EAAEO,GAAGlB,EAAEoj5C,aAAa5vB,QAAQ1i2C,KAAK9wB,EAAEqm5C,SAASzl5C,KAAK603C,MAAK,SAAUj03C,EAAEN,GAAGnB,EAAE03yC,SAAQ,EAAGj2yC,EAAEzB,EAAEm03C,KAAK,IAAIl03C,EAAEijZ,WAAWzhZ,IAAIN,IAAInB,EAAE8vV,MAAM3uV,EAAEnB,EAAE8vV,MAAMpyG,MAAK,EAAG19O,EAAE8vV,MAAMtyT,aAAa,cAAc,IAAIx9B,EAAE8vV,MAAMtiU,iBAAiB,WAAU,WAAYxtB,EAAEkwB,IAAI2h4C,gBAAkB,IAAG7x5C,EAAEkwB,KAAKlwB,EAAE8vV,MAAMxtM,OAAOtiJ,EAAEwx5C,iBAAmB,GAAG,EAAE/v5C,EAAElB,UAAUssT,MAAM,WAAWhsT,KAAKivV,OAAOjvV,KAAKivV,MAAMjjC,OAAQ,EAAEprT,EAAElB,UAAU+hJ,KAAK,WAAWzhJ,KAAKivV,OAAOjvV,KAAKivV,MAAMxtM,MAAO,EAAE7gJ,EAAElB,UAAUux5C,KAAK,SAAS9x5C,GAAG,GAAGa,KAAKivV,MAAM,CAAC,IAAIruV,EAAEZ,KAAKivV,MAAMiikC,SAAS/x5C,EAAEyB,EAAE4lC,MAAM,IAAIrnC,EAAEyB,EAAE6lC,IAAI,GAAGzmC,KAAKsz3C,KAAK,IAAIl03C,EAAEijZ,WAAW,IAAIjjZ,EAAEsk5C,gBAAgB,WAAW1j5C,KAAKurB,GAAG,KAAK,uDAAuD3qB,EAAE4lC,MAAM,GAAG,QAAQ5lC,EAAE6lC,IAAI,GAAG,mBAAmBzmC,KAAKivV,MAAMh7J,YAAY90L,CAAE,CAAC,EAAEyB,EAAElB,UAAU+l5C,SAAS,WAAW,OAAOzl5C,KAAKivV,KAAK,EAAEruV,EAAElB,UAAU8oO,MAAM,SAASppO,GAAGY,KAAKqvB,MAAMrvB,KAAKqvB,IAAIjwB,EAAEY,KAAK6kJ,OAAO7kJ,KAAKivV,QAAQjvV,KAAKivV,MAAMxtM,OAAOzhJ,KAAK4w5C,eAAe5w5C,KAAK8kC,cAAe,EAAElkC,EAAElB,UAAU4xa,QAAQ,WAAW,KAAK,IAAIhya,OAAOgU,KAAKtT,KAAK0qC,OAAOrqC,QAAQL,KAAKivV,MAAMj+S,WAAW,GAAG,CAAC,IAAI7xC,EAAEa,KAAKqvB,IAAI+k7B,QAAQjn6B,QAAQvsC,EAAEzB,EAAE8uH,GAAG,IAAI,IAAI3tH,KAAKN,KAAK8w5C,eAAe9w5C,KAAK8w5C,aAAa3x5C,EAAEum4C,mBAAmB1l4C,KAAK6w5C,aAAahs5C,EAAE673C,UAAU1g4C,KAAK+w5C,iBAAiB/w5C,KAAK+w5C,eAAe3x5C,EAAEqj5C,cAAcre,cAAc,EAAE,EAAE,EAAE,IAAIpk4C,KAAK01H,QAAQ11H,KAAKivV,MAAMy39B,SAAS1mzC,KAAK01H,QAAQryH,KAAKzC,EAAEshR,OAAOthR,EAAEgsS,eAAehsS,EAAE8uV,cAAc9uV,EAAEkrS,WAAW,EAAE,EAAE,EAAElrS,EAAEklN,KAAKllN,EAAEo5M,cAAch6M,KAAKivV,SAASjvV,KAAK01H,QAAQ,IAAIt2H,EAAEivV,QAAQlvV,EAAEa,KAAKivV,MAAMruV,EAAEklN,MAAM9lN,KAAK01H,QAAQryH,KAAKzC,EAAEshR,OAAOthR,EAAEgsS,gBAAgB5sS,KAAK0qC,MAAM,CAAC,IAAI3qC,EAAEC,KAAK0qC,MAAMpqC,GAAG,WAAWP,EAAE4L,QAAQ5L,EAAE4L,MAAM,SAAS5L,EAAE21H,QAAQ11H,KAAK01H,QAAS,CAAC,CAAC,EAAE90H,EAAElB,UAAUytsB,UAAU,WAAW,MAAO,CAAC5gsB,KAAK,QAAQso3C,KAAK703C,KAAK603C,KAAK/v1C,YAAY9kC,KAAK8kC,YAAY,EAAElkC,EAAElB,UAAU439B,cAAc,WAAW,OAAOt39B,KAAKivV,QAAQjvV,KAAKivV,MAAMy39B,MAAM,EAAE9lzC,CAAC,CAAtkE,CAAwkEiF,GAAGvB,EAAE,SAASnF,GAAG,SAASyB,EAAEA,EAAEN,EAAEP,EAAEiB,GAAG7B,EAAES,KAAKI,KAAKY,EAAEN,EAAEP,EAAEiB,GAAGV,EAAEwkC,YAAYrlC,MAAMkS,QAAQrR,EAAEwkC,cAAc,IAAIxkC,EAAEwkC,YAAYzkC,SAASC,EAAEwkC,YAAY6C,MAAK,SAAUvoC,GAAG,OAAQK,MAAMkS,QAAQvS,IAAI,IAAIA,EAAEiB,QAAQjB,EAAEuoC,MAAK,SAAUvoC,GAAG,MAAO,iBAAiBA,CAAE,GAAG,KAAIY,KAAKsz3C,KAAK,IAAIl03C,EAAEijZ,WAAW,IAAIjjZ,EAAEsk5C,gBAAgB,WAAW9i5C,EAAE,KAAK,iFAAiFZ,KAAKsz3C,KAAK,IAAIl03C,EAAEijZ,WAAW,IAAIjjZ,EAAEsk5C,gBAAgB,WAAW9i5C,EAAE,KAAK,6CAA6CN,EAAEkuP,SAAS,kBAAkBluP,EAAEkuP,SAASxuP,KAAKsz3C,KAAK,IAAIl03C,EAAEijZ,WAAW,IAAIjjZ,EAAEsk5C,gBAAgB,WAAW9i5C,EAAE,KAAK,yDAAyDN,EAAE62I,OAAO,iBAAiB72I,EAAE62I,QAAQ72I,EAAE62I,kBAAkB/3I,EAAE8C,OAAOguV,mBAAmBlwV,KAAKsz3C,KAAK,IAAIl03C,EAAEijZ,WAAW,IAAIjjZ,EAAEsk5C,gBAAgB,WAAW9i5C,EAAE,KAAK,qIAAqIZ,KAAKsz3C,KAAK,IAAIl03C,EAAEijZ,WAAW,IAAIjjZ,EAAEsk5C,gBAAgB,WAAW9i5C,EAAE,KAAK,wCAAwCZ,KAAKmpB,QAAQ7oB,EAAEN,KAAKwuP,aAAQ,IAASluP,EAAEkuP,SAASluP,EAAEkuP,OAAQ,CAAC,OAAOrvP,IAAIyB,EAAEpB,UAAUL,IAAIyB,EAAElB,UAAUJ,OAAOY,OAAOf,GAAGA,EAAEO,YAAYO,YAAYW,EAAEA,EAAElB,UAAUmlJ,KAAK,WAAW7kJ,KAAK62yC,SAAQ,EAAG72yC,KAAKm3I,SAASn3I,KAAKm3I,OAAOn3I,KAAKmpB,QAAQguH,kBAAkB/3I,EAAE8C,OAAOguV,kBAAkBlwV,KAAKmpB,QAAQguH,OAAO/3I,EAAE8C,OAAOiD,SAASipF,eAAepuF,KAAKmpB,QAAQguH,SAASn3I,KAAK++B,MAAM/+B,KAAKm3I,OAAOp4G,MAAM/+B,KAAKg/B,OAAOh/B,KAAKm3I,OAAOn4G,OAAOh/B,KAAKmx5C,wBAAwBnx5C,KAAKsz3C,KAAK,IAAIl03C,EAAEijZ,WAAW,IAAI76X,MAAM,8DAA8DxnB,KAAKyhJ,KAAK,WAAWzhJ,KAAKox5C,UAAS,EAAGpx5C,KAAKqvB,IAAI2h4C,gBAAiB,EAAEhx5C,KAAKgsT,MAAM,WAAWhsT,KAAKox5C,WAAWpx5C,KAAKsxa,UAAUtxa,KAAKox5C,UAAS,EAAI,EAAEpx5C,KAAK2w5C,iBAAkB,EAAE/v5C,EAAElB,UAAUw/I,UAAU,WAAW,OAAOl/I,KAAKm3I,MAAM,EAAEv2I,EAAElB,UAAU8oO,MAAM,SAASppO,GAAGY,KAAKqvB,IAAIjwB,EAAEY,KAAK6kJ,OAAO7kJ,KAAKm3I,QAAQn3I,KAAKwuP,SAASxuP,KAAKyhJ,MAAO,EAAE7gJ,EAAElB,UAAUspO,SAAS,WAAWhpO,KAAKgsT,OAAQ,EAAEprT,EAAElB,UAAU4xa,QAAQ,WAAW,IAAInya,GAAE,EAAG,GAAGa,KAAKm3I,OAAOp4G,QAAQ/+B,KAAK++B,QAAQ/+B,KAAK++B,MAAM/+B,KAAKm3I,OAAOp4G,MAAM5/B,GAAE,GAAIa,KAAKm3I,OAAOn4G,SAASh/B,KAAKg/B,SAASh/B,KAAKg/B,OAAOh/B,KAAKm3I,OAAOn4G,OAAO7/B,GAAE,IAAKa,KAAKmx5C,yBAAyB,IAAI7x5C,OAAOgU,KAAKtT,KAAK0qC,OAAOrqC,OAAO,CAAC,IAAIO,EAAEZ,KAAKqvB,IAAI+k7B,QAAQjn6B,QAAQ7sC,EAAEM,EAAEqtH,GAAG,IAAI,IAAIluH,KAAKC,KAAK8w5C,eAAe9w5C,KAAK8w5C,aAAalw5C,EAAE8k4C,mBAAmB1l4C,KAAK6w5C,aAAahs5C,EAAE673C,UAAU1g4C,KAAK+w5C,iBAAiB/w5C,KAAK+w5C,eAAe3x5C,EAAEqj5C,cAAcre,cAAc,EAAE,EAAE,EAAE,IAAIpk4C,KAAK01H,SAASv2H,GAAGa,KAAKox5C,WAAWpx5C,KAAK01H,QAAQnnD,OAAOvuE,KAAKm3I,OAAO,CAAC8oN,aAAY,IAAKjgW,KAAK01H,QAAQ,IAAIt2H,EAAEivV,QAAQztV,EAAEZ,KAAKm3I,OAAO72I,EAAEwlN,KAAK,CAACm6I,aAAY,IAAKjgW,KAAK0qC,MAAM,CAAC,IAAI1pC,EAAEhB,KAAK0qC,MAAM3qC,GAAG,WAAWiB,EAAE2K,QAAQ3K,EAAE2K,MAAM,SAAS3K,EAAE00H,QAAQ11H,KAAK01H,QAAS,CAAC,CAAC,EAAE90H,EAAElB,UAAUytsB,UAAU,WAAW,MAAO,CAAC5gsB,KAAK,SAASu4B,YAAY9kC,KAAK8kC,YAAY,EAAElkC,EAAElB,UAAU439B,cAAc,WAAW,OAAOt39B,KAAKox5C,QAAQ,EAAExw5C,EAAElB,UAAUyx5C,sBAAsB,WAAW,IAAI,IAAI/x5C,EAAE,EAAED,EAAE,CAACa,KAAKm3I,OAAOp4G,MAAM/+B,KAAKm3I,OAAOn4G,QAAQ5/B,EAAED,EAAEkB,OAAOjB,GAAG,EAAE,CAAC,IAAIwB,EAAEzB,EAAEC,GAAG,GAAGktC,MAAM1rC,IAAIA,GAAG,EAAE,OAAO,CAAE,CAAC,OAAO,CAAE,EAAEA,CAAC,CAA16F,CAA46FiF,GAAGnC,EAAE,CAACukK,OAAOzkK,EAAE4w3C,OAAOjw3C,EAAE,aAAawB,EAAE8lC,QAAQlmC,EAAE0pV,MAAM5qV,EAAEkmJ,MAAM1kJ,EAAEsxI,OAAO7yI,GAAG,SAASyB,EAAE5G,EAAEyB,GAAG,IAAIN,EAAElB,EAAEorL,SAAS,IAAI,OAAOprL,EAAEg6H,UAAU94H,EAAEA,EAAE,CAAC,EAAE,EAAE,IAAIlB,EAAE0iG,MAAMxhG,EAAEA,EAAE,CAAC,GAAGnB,EAAE4/B,MAAM,GAAG5/B,EAAE6/B,OAAO,IAAI5/B,EAAEooN,SAASlnN,EAAEA,EAAEnB,EAAEky5C,mBAAmBzw5C,EAAEu74C,eAAe,CAAC,SAASn44C,EAAE5E,EAAED,EAAEyB,EAAEN,EAAEP,EAAEiB,GAAG,IAAI3B,EAAE,SAASD,EAAED,EAAEyB,GAAG,GAAGxB,EAAE,IAAI,IAAIkB,EAAE,EAAEP,EAAEX,EAAEkB,EAAEP,EAAEM,OAAOC,GAAG,EAAE,CAAC,IAAIU,EAAE7B,EAAEY,EAAEO,IAAI,GAAGU,GAAGA,EAAE6G,SAASjH,GAAG,mBAAmBI,EAAEuL,KAAK,OAAO,CAAE,MAAM,IAAI,IAAIlN,KAAKF,EAAE,CAAC,IAAI2B,EAAE3B,EAAEE,GAAG,GAAGyB,EAAE+G,SAASjH,GAAG,mBAAmBE,EAAEyL,KAAK,OAAO,CAAE,CAAC,OAAO,CAAE,CAA1N,CAA4NxM,GAAGA,EAAE+9B,OAAO3+B,EAAEC,EAAEmsB,IAAIzqB,EAAEE,EAAEsw5C,sBAAsB9u5C,EAAEpD,EAAEmy5C,QAAQjx5C,EAAEQ,EAAEzB,GAAGmD,EAAE+pC,KAAKvnC,GAAG,IAAI,IAAInE,EAAE,GAAGwB,EAAE,EAAEO,EAAEJ,EAAEH,EAAEO,EAAEvC,OAAOgC,GAAG,EAAE,CAAC,IAAIS,EAAEF,EAAEP,GAAGxB,EAAEgB,KAAK,CAAC2v5C,cAAc1u5C,EAAE064C,OAAOjjW,UAAU11hC,IAAI4s4C,aAAa3u5C,EAAE4+K,KAAK89rC,sBAAsBrg3C,EAAEyB,EAAExB,EAAE6mB,OAAOnjB,EAAEo74C,cAAcp74C,EAAEs74C,oBAAoBt74C,EAAEg/F,MAAM/hG,EAAEiB,EAAEF,EAAEiF,EAAE3G,EAAEwjI,UAAU9/H,EAAE064C,UAAW,CAAC,IAAI764C,EAAE,SAASvD,GAAG,IAAI,IAAID,EAAE,CAAC,EAAEyB,EAAE,CAAC,EAAEN,EAAE,EAAEP,EAAEX,EAAEkB,EAAEP,EAAEM,OAAOC,GAAG,EAAE,CAAC,IAAIU,EAAEjB,EAAEO,GAAGjB,EAAE2B,EAAEyw5C,aAAa3w5C,EAAEE,EAAEww5C,cAAchv5C,EAAE5B,EAAEE,GAAGF,EAAEE,IAAI,CAAC,EAAE,IAAI,IAAID,KAAKxB,EAAE,IAAI,IAAIgD,EAAEhD,EAAEwB,GAAG+B,EAAEJ,EAAE3B,GAAG2B,EAAE3B,IAAI,CAAC,EAAEiC,EAAE3D,EAAE0B,GAAG1B,EAAE0B,IAAI,GAAG8B,EAAE,EAAEiB,EAAEvB,EAAEM,EAAEiB,EAAEvD,OAAOsC,GAAG,EAAE,CAAC,IAAID,EAAEkB,EAAEjB,GAAGC,EAAEF,EAAEo/N,gBAAgBl/N,EAAEF,EAAEo/N,eAAc,EAAGh/N,EAAEjB,KAAKa,GAAI,CAAC,CAAC,OAAOvD,CAAC,CAArR,CAAuR0B,GAAG,IAAI,IAAI+C,KAAKjB,EAAEA,EAAEiB,GAAGshB,SAAQ,SAAU/lB,GAAG,IAAIyB,EAAEzB,EAAEgzE,QAAQ7xE,EAAElB,EAAEsy5C,gBAAgB9w5C,EAAEouH,MAAM,gBAAgBpuH,EAAE2qB,IAAI3qB,EAAEiH,OAAOjH,EAAEouH,MAAMnnH,OAAOjH,EAAEouH,MAAM,kBAAkBpuH,EAAEu1I,YAAYv1I,EAAEouH,MAAM,iBAAiBpuH,EAAE+K,MAAMrL,CAAG,IAAG,OAAOqC,CAAC,CAAC,SAASqC,EAAE5F,EAAED,GAAG,IAAIyB,EAAExB,EAAEo+4C,OAAOl94C,EAAEnB,EAAEq+4C,OAAO,OAAO584C,EAAEg74C,YAAYt74C,EAAEs74C,aAAah74C,EAAEm33C,UAAU/03C,EAAE1C,EAAEy33C,UAAU/03C,GAAGpC,EAAEgX,KAAKtX,EAAEsX,MAAMhX,EAAEm33C,UAAU9z3C,EAAE3D,EAAEy33C,UAAU9z3C,CAAC,CAAC,IAAIoB,EAAE,SAASjG,EAAED,GAAGa,KAAK2N,IAAIvO,EAAEY,KAAKgpO,SAAS7pO,EAAEa,KAAKihE,OAAQ,EAAE57D,EAAE3F,UAAUuhE,MAAM,WAAW,IAAI,IAAI7hE,KAAKY,KAAKwP,KAAK,IAAI,IAAIrQ,EAAE,EAAEyB,EAAEZ,KAAKwP,KAAKpQ,GAAGD,EAAEyB,EAAEP,OAAOlB,GAAG,EAAE,CAAC,IAAImB,EAAEM,EAAEzB,GAAGmB,EAAE8wB,SAAS1E,aAAapsB,EAAE8wB,SAASpxB,KAAKgpO,SAAS1oO,EAAEa,MAAO,CAAC,OAAOnB,KAAKwP,KAAK,CAAC,EAAExP,KAAKizI,MAAM,GAAGjzI,IAAI,EAAEqF,EAAE3F,UAAUylB,IAAI,SAAS/lB,EAAED,EAAEyB,GAAG,IAAIN,EAAEN,KAAKD,EAAEX,EAAEm7iC,UAAU11hC,SAAI,IAAS7kB,KAAKwP,KAAKzP,KAAKC,KAAKwP,KAAKzP,GAAG,IAAI,IAAIiB,EAAE,CAACG,MAAMhC,EAAEiyB,aAAQ,GAAQ,QAAG,IAASxwB,IAAII,EAAEowB,QAAQvL,YAAW,WAAYvlB,EAAEuyB,OAAOzzB,EAAE4B,EAAI,GAAEJ,IAAIZ,KAAKwP,KAAKzP,GAAG8B,KAAKb,GAAGhB,KAAKizI,MAAMpxI,KAAK9B,GAAGC,KAAKizI,MAAM5yI,OAAOL,KAAK2N,IAAI,CAAC,IAAItO,EAAEW,KAAK2x5C,mBAAmB3x5C,KAAKizI,MAAM,IAAI5zI,GAAGW,KAAKgpO,SAAS3pO,EAAG,CAAC,OAAOW,IAAI,EAAEqF,EAAE3F,UAAUqM,IAAI,SAAS3M,GAAG,OAAOA,EAAEm7iC,UAAU11hC,OAAO7kB,KAAKwP,IAAI,EAAEnK,EAAE3F,UAAUky5C,aAAa,SAASxy5C,GAAG,OAAOY,KAAK+L,IAAI3M,GAAGY,KAAK2x5C,mBAAmBvy5C,EAAEm7iC,UAAU11hC,KAAK,IAAI,EAAExf,EAAE3F,UAAUiy5C,mBAAmB,SAASvy5C,GAAG,IAAID,EAAEa,KAAKwP,KAAKpQ,GAAG++C,QAAQ,OAAOh/C,EAAEiyB,SAAS1E,aAAavtB,EAAEiyB,SAAS,IAAIpxB,KAAKwP,KAAKpQ,GAAGiB,eAAeL,KAAKwP,KAAKpQ,GAAGY,KAAKizI,MAAMhwH,OAAOjjB,KAAKizI,MAAMzyI,QAAQpB,GAAG,GAAGD,EAAEgC,KAAK,EAAEkE,EAAE3F,UAAUmy5C,SAAS,SAASzy5C,GAAG,IAAID,EAAEa,KAAKwP,KAAKpQ,GAAG,OAAOD,EAAEA,EAAE,GAAGgC,MAAM,IAAI,EAAEkE,EAAE3F,UAAUyD,IAAI,SAAS/D,GAAG,OAAOY,KAAK+L,IAAI3M,GAAGY,KAAKwP,KAAKpQ,EAAEm7iC,UAAU11hC,KAAK,GAAG1jB,MAAM,IAAI,EAAEkE,EAAE3F,UAAUmzB,OAAO,SAASzzB,EAAED,GAAG,IAAIa,KAAK+L,IAAI3M,GAAG,OAAOY,KAAK,IAAIY,EAAExB,EAAEm7iC,UAAU11hC,IAAIvkB,OAAE,IAASnB,EAAE,EAAEa,KAAKwP,KAAK5O,GAAGJ,QAAQrB,GAAGY,EAAEC,KAAKwP,KAAK5O,GAAGN,GAAG,OAAON,KAAKwP,KAAK5O,GAAGqiB,OAAO3iB,EAAE,GAAGP,EAAEqxB,SAAS1E,aAAa3sB,EAAEqxB,SAAS,IAAIpxB,KAAKwP,KAAK5O,GAAGP,eAAeL,KAAKwP,KAAK5O,GAAGZ,KAAKgpO,SAASjpO,EAAEoB,OAAOnB,KAAKizI,MAAMhwH,OAAOjjB,KAAKizI,MAAMzyI,QAAQI,GAAG,GAAGZ,IAAI,EAAEqF,EAAE3F,UAAUoy5C,WAAW,SAAS1y5C,GAAG,IAAIY,KAAK2N,IAAIvO,EAAEY,KAAKizI,MAAM5yI,OAAOL,KAAK2N,KAAK,CAAC,IAAIxO,EAAEa,KAAK2x5C,mBAAmB3x5C,KAAKizI,MAAM,IAAI9zI,GAAGa,KAAKgpO,SAAS7pO,EAAG,CAAC,OAAOa,IAAI,EAAEqF,EAAE3F,UAAUmtB,OAAO,SAASztB,GAAG,IAAID,EAAE,GAAG,IAAI,IAAIyB,KAAKZ,KAAKwP,KAAK,IAAI,IAAIlP,EAAE,EAAEP,EAAEC,KAAKwP,KAAK5O,GAAGN,EAAEP,EAAEM,OAAOC,GAAG,EAAE,CAAC,IAAIU,EAAEjB,EAAEO,GAAGlB,EAAE4B,EAAEG,QAAQhC,EAAE0C,KAAKb,EAAG,CAAC,IAAI,IAAI3B,EAAE,EAAEyB,EAAE3B,EAAEE,EAAEyB,EAAET,OAAOhB,GAAG,EAAE,CAAC,IAAImD,EAAE1B,EAAEzB,GAAGW,KAAK6yB,OAAOrwB,EAAErB,MAAMq84C,OAAOh74C,EAAG,CAAC,EAAE,IAAI0C,EAAE,SAAS9F,EAAED,EAAEyB,GAAGZ,KAAKmtC,QAAQ/tC,EAAE,IAAIkB,EAAElB,EAAE6uH,GAAGjuH,KAAKkoB,OAAO5nB,EAAE2xP,eAAejyP,KAAK+x5C,YAAY9+4C,QAAQrS,GAAGZ,KAAKmtC,QAAQ6k3C,YAAY5y5C,EAAE6y5C,kBAAkBhm5C,IAAIjM,KAAKkoB,QAAQ5nB,EAAE89U,WAAW99U,EAAE6xP,qBAAqBhzP,EAAE6sK,YAAYhsK,KAAK+x5C,YAAYzx5C,EAAEumS,aAAavmS,EAAEqmS,aAAa3mS,KAAK+x5C,oBAAoB5y5C,EAAE6sK,WAAY,EAAE9mK,EAAExF,UAAU2D,KAAK,WAAWrD,KAAKmtC,QAAQ8k3C,kBAAkBhm5C,IAAIjM,KAAKkoB,OAAQ,EAAEhjB,EAAExF,UAAUizjB,WAAW,SAASvzjB,GAAG,IAAID,EAAEa,KAAKmtC,QAAQ8gF,GAAGjuH,KAAKmtC,QAAQ6k3C,YAAYhy5C,KAAKqD,OAAOlE,EAAE29U,cAAc39U,EAAEgzP,qBAAqB,EAAE/yP,EAAE4sK,YAAa,EAAE9mK,EAAExF,UAAU0+I,QAAQ,WAAWp+I,KAAKkoB,SAASloB,KAAKmtC,QAAQ8gF,GAAGswN,aAAav+U,KAAKkoB,eAAeloB,KAAKkoB,OAAQ,EAAE,IAAIzjB,EAAE,CAACkxQ,KAAK,OAAOG,MAAM,gBAAgBF,MAAM,QAAQG,OAAO,iBAAiBF,MAAM,MAAMG,OAAO,eAAeE,QAAQ,SAAShwQ,EAAE,SAAS9G,EAAED,EAAEyB,EAAEN,GAAGN,KAAKK,OAAOlB,EAAEkB,OAAOL,KAAKoyG,WAAWxxG,EAAEZ,KAAKq7oC,SAASl8oC,EAAEu9H,gBAAgB18H,KAAK+x5C,YAAYzx5C,EAAEN,KAAKmtC,QAAQ/tC,EAAE,IAAIW,EAAEX,EAAE6uH,GAAGjuH,KAAKkoB,OAAOnoB,EAAEkyP,eAAe7yP,EAAE8y5C,iBAAiBjm5C,IAAIjM,KAAKkoB,QAAQnoB,EAAEq+U,WAAWr+U,EAAEmyP,aAAa/yP,EAAE6sK,YAAYhsK,KAAK+x5C,YAAYhy5C,EAAE8mS,aAAa9mS,EAAE4mS,aAAa3mS,KAAK+x5C,oBAAoB5y5C,EAAE6sK,WAAY,EAAE9lK,EAAExG,UAAU2D,KAAK,WAAWrD,KAAKmtC,QAAQ+k3C,iBAAiBjm5C,IAAIjM,KAAKkoB,OAAQ,EAAEhiB,EAAExG,UAAUizjB,WAAW,SAASvzjB,GAAG,IAAID,EAAEa,KAAKmtC,QAAQ8gF,GAAGjuH,KAAKqD,OAAOlE,EAAE29U,cAAc39U,EAAE+yP,aAAa,EAAE9yP,EAAE4sK,YAAa,EAAE9lK,EAAExG,UAAUyy5C,iBAAiB,SAAS/y5C,EAAED,GAAG,IAAI,IAAIyB,EAAE,EAAEA,EAAEZ,KAAKoyG,WAAW/xG,OAAOO,IAAI,CAAC,IAAIN,EAAEnB,EAAEizG,WAAWpyG,KAAKoyG,WAAWxxG,GAAG8J,WAAM,IAASpK,GAAGlB,EAAE6zT,wBAAwB3yT,EAAG,CAAC,EAAE4F,EAAExG,UAAU0y5C,wBAAwB,SAAShz5C,EAAED,EAAEyB,GAAG,IAAI,IAAIN,EAAE,EAAEA,EAAEN,KAAKoyG,WAAW/xG,OAAOC,IAAI,CAAC,IAAIP,EAAEC,KAAKoyG,WAAW9xG,GAAGU,EAAE7B,EAAEizG,WAAWryG,EAAE2K,WAAM,IAAS1J,GAAG5B,EAAE4zT,oBAAoBhyT,EAAEjB,EAAEmuP,WAAW9uP,EAAEqF,EAAE1E,EAAEwM,QAAO,EAAGvM,KAAKq7oC,SAASt7oC,EAAEoiD,OAAOniD,KAAKq7oC,UAAUz6oC,GAAG,GAAI,CAAC,EAAEsF,EAAExG,UAAU0+I,QAAQ,WAAWp+I,KAAKkoB,SAASloB,KAAKmtC,QAAQ8gF,GAAGswN,aAAav+U,KAAKkoB,eAAeloB,KAAKkoB,OAAQ,EAAE,IAAI9jB,EAAE,SAAShF,GAAGY,KAAKiuH,GAAG7uH,EAAE6uH,GAAGjuH,KAAKuC,QAAQvC,KAAKqy5C,aAAary5C,KAAK+/B,QAAQ//B,KAAKuC,QAAQvC,KAAK8lwB,OAAM,CAAG,EAAE1hwB,EAAE1E,UAAUyD,IAAI,WAAW,OAAOnD,KAAK+/B,OAAO,EAAE37B,EAAE1E,UAAUuM,IAAI,SAAS7M,GAAG,EAAEgF,EAAE1E,UAAU2y5C,WAAW,WAAW,OAAOry5C,KAAKuC,OAAO,EAAE6B,EAAE1E,UAAUw3nC,WAAW,WAAWl3nC,KAAKiM,IAAIjM,KAAKuC,QAAS,EAAE,IAAIqD,EAAE,SAASzG,GAAG,SAASyB,IAAIzB,EAAEoB,MAAMP,KAAKI,UAAW,CAAC,OAAOjB,IAAIyB,EAAEpB,UAAUL,IAAIyB,EAAElB,UAAUJ,OAAOY,OAAOf,GAAGA,EAAEO,YAAYO,YAAYW,EAAEA,EAAElB,UAAU2y5C,WAAW,WAAW,OAAOjz5C,EAAEizuB,MAAMt8jB,WAAW,EAAEn1K,EAAElB,UAAUuM,IAAI,SAAS7M,GAAG,IAAID,EAAEa,KAAK+/B,SAAS3gC,EAAEW,IAAIZ,EAAEY,GAAGX,EAAE+C,IAAIhD,EAAEgD,GAAG/C,EAAEkE,IAAInE,EAAEmE,GAAGlE,EAAE4B,IAAI7B,EAAE6B,GAAGhB,KAAK8lwB,SAAS9lwB,KAAKiuH,GAAGS,WAAWtvH,EAAEW,EAAEX,EAAE+C,EAAE/C,EAAEkE,EAAElE,EAAE4B,GAAGhB,KAAK+/B,QAAQ3gC,EAAEY,KAAK8lwB,OAAM,EAAI,EAAEllwB,CAAC,CAAnX,CAAqXwD,GAAGO,EAAE,SAASvF,GAAG,SAASD,IAAIC,EAAEmB,MAAMP,KAAKI,UAAW,CAAC,OAAOhB,IAAID,EAAEK,UAAUJ,IAAID,EAAEO,UAAUJ,OAAOY,OAAOd,GAAGA,EAAEM,YAAYO,YAAYd,EAAEA,EAAEO,UAAU2y5C,WAAW,WAAW,OAAO,CAAC,EAAElz5C,EAAEO,UAAUuM,IAAI,SAAS7M,IAAIA,IAAIY,KAAK+/B,SAAS//B,KAAK8lwB,SAAS9lwB,KAAKiuH,GAAGikN,WAAW9yU,GAAGY,KAAK+/B,QAAQ3gC,EAAEY,KAAK8lwB,OAAM,EAAI,EAAE3mwB,CAAC,CAAtS,CAAwSiF,GAAGI,EAAE,SAASpF,GAAG,SAASD,IAAIC,EAAEmB,MAAMP,KAAKI,UAAW,CAAC,OAAOhB,IAAID,EAAEK,UAAUJ,IAAID,EAAEO,UAAUJ,OAAOY,OAAOd,GAAGA,EAAEM,YAAYO,YAAYd,EAAEA,EAAEO,UAAU2y5C,WAAW,WAAW,OAAO,CAAC,EAAElz5C,EAAEO,UAAUuM,IAAI,SAAS7M,IAAIA,IAAIY,KAAK+/B,SAAS//B,KAAK8lwB,SAAS9lwB,KAAKiuH,GAAGqkN,aAAalzU,GAAGY,KAAK+/B,QAAQ3gC,EAAEY,KAAK8lwB,OAAM,EAAI,EAAE3mwB,CAAC,CAAxS,CAA0SiF,GAAGW,EAAE,SAAS3F,GAAG,SAASD,IAAIC,EAAEmB,MAAMP,KAAKI,UAAW,CAAC,OAAOhB,IAAID,EAAEK,UAAUJ,IAAID,EAAEO,UAAUJ,OAAOY,OAAOd,GAAGA,EAAEM,YAAYO,YAAYd,EAAEA,EAAEO,UAAU2y5C,WAAW,WAAW,MAAO,EAAC,GAAG,GAAG,GAAG,EAAG,EAAElz5C,EAAEO,UAAUuM,IAAI,SAAS7M,GAAG,IAAID,EAAEa,KAAK+/B,SAAS3gC,EAAE,KAAKD,EAAE,IAAIC,EAAE,KAAKD,EAAE,IAAIC,EAAE,KAAKD,EAAE,IAAIC,EAAE,KAAKD,EAAE,IAAIa,KAAK8lwB,SAAS9lwB,KAAKiuH,GAAGusC,UAAUp7J,EAAE,GAAGA,EAAE,GAAGA,EAAE,GAAGA,EAAE,IAAIY,KAAK+/B,QAAQ3gC,EAAEY,KAAK8lwB,OAAM,EAAI,EAAE3mwB,CAAC,CAAxX,CAA0XiF,GAAGoB,EAAE,SAASpG,GAAG,SAASD,IAAIC,EAAEmB,MAAMP,KAAKI,UAAW,CAAC,OAAOhB,IAAID,EAAEK,UAAUJ,IAAID,EAAEO,UAAUJ,OAAOY,OAAOd,GAAGA,EAAEM,YAAYO,YAAYd,EAAEA,EAAEO,UAAU2y5C,WAAW,WAAW,OAAO,CAAE,EAAElz5C,EAAEO,UAAUuM,IAAI,SAAS7M,IAAIA,IAAIY,KAAK+/B,SAAS//B,KAAK8lwB,SAAS9lwB,KAAKiuH,GAAGssC,UAAUn7J,GAAGY,KAAK+/B,QAAQ3gC,EAAEY,KAAK8lwB,OAAM,EAAI,EAAE3mwB,CAAC,CAAtS,CAAwSiF,GAAGa,EAAE,SAAS7F,GAAG,SAASD,IAAIC,EAAEmB,MAAMP,KAAKI,UAAW,CAAC,OAAOhB,IAAID,EAAEK,UAAUJ,IAAID,EAAEO,UAAUJ,OAAOY,OAAOd,GAAGA,EAAEM,YAAYO,YAAYd,EAAEA,EAAEO,UAAU2y5C,WAAW,WAAW,OAAO,GAAG,EAAElz5C,EAAEO,UAAUuM,IAAI,SAAS7M,IAAIA,IAAIY,KAAK+/B,SAAS//B,KAAK8lwB,SAAS9lwB,KAAKiuH,GAAG+kN,YAAY5zU,GAAGY,KAAK+/B,QAAQ3gC,EAAEY,KAAK8lwB,OAAM,EAAI,EAAE3mwB,CAAC,CAAzS,CAA2SiF,GAAGqB,EAAE,SAASrG,GAAG,SAASD,IAAIC,EAAEmB,MAAMP,KAAKI,UAAW,CAAC,OAAOhB,IAAID,EAAEK,UAAUJ,IAAID,EAAEO,UAAUJ,OAAOY,OAAOd,GAAGA,EAAEM,YAAYO,YAAYd,EAAEA,EAAEO,UAAU2y5C,WAAW,WAAW,MAAO,CAACty2C,KAAK//C,KAAKiuH,GAAGu8K,OAAO5oQ,IAAI,EAAE69I,KAAK,IAAI,EAAEtgL,EAAEO,UAAUuM,IAAI,SAAS7M,GAAG,IAAID,EAAEa,KAAK+/B,SAAS3gC,EAAE2gD,OAAO5gD,EAAE4gD,MAAM3gD,EAAEwiC,MAAMziC,EAAEyiC,KAAKxiC,EAAEqgL,OAAOtgL,EAAEsgL,MAAMz/K,KAAK8lwB,SAAS9lwB,KAAKiuH,GAAG08G,YAAYvrO,EAAE2gD,KAAK3gD,EAAEwiC,IAAIxiC,EAAEqgL,MAAMz/K,KAAK+/B,QAAQ3gC,EAAEY,KAAK8lwB,OAAM,EAAI,EAAE3mwB,CAAC,CAA9Y,CAAgZiF,GAAGsB,EAAE,SAAStG,GAAG,SAASD,IAAIC,EAAEmB,MAAMP,KAAKI,UAAW,CAAC,OAAOhB,IAAID,EAAEK,UAAUJ,IAAID,EAAEO,UAAUJ,OAAOY,OAAOd,GAAGA,EAAEM,YAAYO,YAAYd,EAAEA,EAAEO,UAAU2y5C,WAAW,WAAW,IAAIjz5C,EAAEY,KAAKiuH,GAAG,MAAO,CAAC7uH,EAAE2rS,KAAK3rS,EAAE2rS,KAAK3rS,EAAE2rS,KAAK,EAAE5rS,EAAEO,UAAUuM,IAAI,SAAS7M,GAAG,IAAID,EAAEa,KAAK+/B,SAAS3gC,EAAE,KAAKD,EAAE,IAAIC,EAAE,KAAKD,EAAE,IAAIC,EAAE,KAAKD,EAAE,IAAIa,KAAK8lwB,SAAS9lwB,KAAKiuH,GAAGolN,UAAUj0U,EAAE,GAAGA,EAAE,GAAGA,EAAE,IAAIY,KAAK+/B,QAAQ3gC,EAAEY,KAAK8lwB,OAAM,EAAI,EAAE3mwB,CAAC,CAA7X,CAA+XiF,GAAG4B,EAAE,SAAS5G,GAAG,SAASD,IAAIC,EAAEmB,MAAMP,KAAKI,UAAW,CAAC,OAAOhB,IAAID,EAAEK,UAAUJ,IAAID,EAAEO,UAAUJ,OAAOY,OAAOd,GAAGA,EAAEM,YAAYO,YAAYd,EAAEA,EAAEO,UAAU2y5C,WAAW,WAAW,OAAO,CAAE,EAAElz5C,EAAEO,UAAUuM,IAAI,SAAS7M,GAAG,GAAGA,IAAIY,KAAK+/B,SAAS//B,KAAK8lwB,MAAM,CAAC,IAAI3mwB,EAAEa,KAAKiuH,GAAG7uH,EAAED,EAAE6jB,OAAO7jB,EAAEgpS,cAAchpS,EAAE2yU,QAAQ3yU,EAAEgpS,cAAcnoS,KAAK+/B,QAAQ3gC,EAAEY,KAAK8lwB,OAAM,CAAG,CAAC,EAAE3mwB,CAAC,CAApV,CAAsViF,GAAGgC,EAAE,SAAShH,GAAG,SAASD,IAAIC,EAAEmB,MAAMP,KAAKI,UAAW,CAAC,OAAOhB,IAAID,EAAEK,UAAUJ,IAAID,EAAEO,UAAUJ,OAAOY,OAAOd,GAAGA,EAAEM,YAAYO,YAAYd,EAAEA,EAAEO,UAAU2y5C,WAAW,WAAW,MAAO,CAAC,EAAE,EAAE,EAAElz5C,EAAEO,UAAUuM,IAAI,SAAS7M,GAAG,IAAID,EAAEa,KAAK+/B,SAAS3gC,EAAE,KAAKD,EAAE,IAAIC,EAAE,KAAKD,EAAE,IAAIa,KAAK8lwB,SAAS9lwB,KAAKiuH,GAAGM,WAAWnvH,EAAE,GAAGA,EAAE,IAAIY,KAAK+/B,QAAQ3gC,EAAEY,KAAK8lwB,OAAM,EAAI,EAAE3mwB,CAAC,CAA7U,CAA+UiF,GAAG4G,GAAG,SAAS5L,GAAG,SAASD,IAAIC,EAAEmB,MAAMP,KAAKI,UAAW,CAAC,OAAOhB,IAAID,EAAEK,UAAUJ,IAAID,EAAEO,UAAUJ,OAAOY,OAAOd,GAAGA,EAAEM,YAAYO,YAAYd,EAAEA,EAAEO,UAAU2y5C,WAAW,WAAW,OAAO,CAAE,EAAElz5C,EAAEO,UAAUuM,IAAI,SAAS7M,GAAG,GAAGA,IAAIY,KAAK+/B,SAAS//B,KAAK8lwB,MAAM,CAAC,IAAI3mwB,EAAEa,KAAKiuH,GAAG7uH,EAAED,EAAE6jB,OAAO7jB,EAAE0oS,YAAY1oS,EAAE2yU,QAAQ3yU,EAAE0oS,YAAY7nS,KAAK+/B,QAAQ3gC,EAAEY,KAAK8lwB,OAAM,CAAG,CAAC,EAAE3mwB,CAAC,CAAhV,CAAkViF,GAAG2G,GAAG,SAAS3L,GAAG,SAASD,IAAIC,EAAEmB,MAAMP,KAAKI,UAAW,CAAC,OAAOhB,IAAID,EAAEK,UAAUJ,IAAID,EAAEO,UAAUJ,OAAOY,OAAOd,GAAGA,EAAEM,YAAYO,YAAYd,EAAEA,EAAEO,UAAU2y5C,WAAW,WAAW,OAAOry5C,KAAKiuH,GAAGw8K,IAAI,EAAEtrS,EAAEO,UAAUuM,IAAI,SAAS7M,IAAIA,IAAIY,KAAK+/B,SAAS//B,KAAK8lwB,SAAS9lwB,KAAKiuH,GAAGuzB,UAAUpiJ,GAAGY,KAAK+/B,QAAQ3gC,EAAEY,KAAK8lwB,OAAM,EAAI,EAAE3mwB,CAAC,CAAhT,CAAkTiF,GAAGkH,GAAG,SAASlM,GAAG,SAASD,IAAIC,EAAEmB,MAAMP,KAAKI,UAAW,CAAC,OAAOhB,IAAID,EAAEK,UAAUJ,IAAID,EAAEO,UAAUJ,OAAOY,OAAOd,GAAGA,EAAEM,YAAYO,YAAYd,EAAEA,EAAEO,UAAU2y5C,WAAW,WAAW,OAAO,CAAE,EAAElz5C,EAAEO,UAAUuM,IAAI,SAAS7M,GAAG,GAAGA,IAAIY,KAAK+/B,SAAS//B,KAAK8lwB,MAAM,CAAC,IAAI3mwB,EAAEa,KAAKiuH,GAAG7uH,EAAED,EAAE6jB,OAAO7jB,EAAEyoS,OAAOzoS,EAAE2yU,QAAQ3yU,EAAEyoS,OAAO5nS,KAAK+/B,QAAQ3gC,EAAEY,KAAK8lwB,OAAM,CAAG,CAAC,EAAE3mwB,CAAC,CAAtU,CAAwUiF,GAAGgH,GAAG,SAAShM,GAAG,SAASD,IAAIC,EAAEmB,MAAMP,KAAKI,UAAW,CAAC,OAAOhB,IAAID,EAAEK,UAAUJ,IAAID,EAAEO,UAAUJ,OAAOY,OAAOd,GAAGA,EAAEM,YAAYO,YAAYd,EAAEA,EAAEO,UAAU2y5C,WAAW,WAAW,IAAIjz5C,EAAEY,KAAKiuH,GAAG,MAAO,CAAC7uH,EAAEyvN,IAAIzvN,EAAEyuN,KAAK,EAAE1uN,EAAEO,UAAUuM,IAAI,SAAS7M,GAAG,IAAID,EAAEa,KAAK+/B,SAAS3gC,EAAE,KAAKD,EAAE,IAAIC,EAAE,KAAKD,EAAE,IAAIa,KAAK8lwB,SAAS9lwB,KAAKiuH,GAAG2X,UAAUxmI,EAAE,GAAGA,EAAE,IAAIY,KAAK+/B,QAAQ3gC,EAAEY,KAAK8lwB,OAAM,EAAI,EAAE3mwB,CAAC,CAAnW,CAAqWiF,GAAG8G,GAAG,SAAS/L,GAAG,SAASyB,IAAIzB,EAAEoB,MAAMP,KAAKI,UAAW,CAAC,OAAOjB,IAAIyB,EAAEpB,UAAUL,IAAIyB,EAAElB,UAAUJ,OAAOY,OAAOf,GAAGA,EAAEO,YAAYO,YAAYW,EAAEA,EAAElB,UAAU2y5C,WAAW,WAAW,OAAOjz5C,EAAEizuB,MAAMt8jB,WAAW,EAAEn1K,EAAElB,UAAUuM,IAAI,SAAS7M,GAAG,IAAID,EAAEa,KAAK+/B,SAAS3gC,EAAEW,IAAIZ,EAAEY,GAAGX,EAAE+C,IAAIhD,EAAEgD,GAAG/C,EAAEkE,IAAInE,EAAEmE,GAAGlE,EAAE4B,IAAI7B,EAAE6B,GAAGhB,KAAK8lwB,SAAS9lwB,KAAKiuH,GAAG4sC,WAAWz7J,EAAEW,EAAEX,EAAE+C,EAAE/C,EAAEkE,EAAElE,EAAE4B,GAAGhB,KAAK+/B,QAAQ3gC,EAAEY,KAAK8lwB,OAAM,EAAI,EAAEllwB,CAAC,CAAnX,CAAqXwD,GAAGoH,GAAG,SAASpM,GAAG,SAASD,IAAIC,EAAEmB,MAAMP,KAAKI,UAAW,CAAC,OAAOhB,IAAID,EAAEK,UAAUJ,IAAID,EAAEO,UAAUJ,OAAOY,OAAOd,GAAGA,EAAEM,YAAYO,YAAYd,EAAEA,EAAEO,UAAU2y5C,WAAW,WAAW,OAAOry5C,KAAKiuH,GAAGy0K,QAAQ,EAAEvjS,EAAEO,UAAUuM,IAAI,SAAS7M,IAAIA,IAAIY,KAAK+/B,SAAS//B,KAAK8lwB,SAAS9lwB,KAAKiuH,GAAG4X,cAAczmI,GAAGY,KAAK+/B,QAAQ3gC,EAAEY,KAAK8lwB,OAAM,EAAI,EAAE3mwB,CAAC,CAAxT,CAA0TiF,GAAG6G,GAAG,SAAS7L,GAAG,SAASD,IAAIC,EAAEmB,MAAMP,KAAKI,UAAW,CAAC,OAAOhB,IAAID,EAAEK,UAAUJ,IAAID,EAAEO,UAAUJ,OAAOY,OAAOd,GAAGA,EAAEM,YAAYO,YAAYd,EAAEA,EAAEO,UAAU2y5C,WAAW,WAAW,OAAO,CAAE,EAAElz5C,EAAEO,UAAUuM,IAAI,SAAS7M,GAAG,GAAGA,IAAIY,KAAK+/B,SAAS//B,KAAK8lwB,MAAM,CAAC,IAAI3mwB,EAAEa,KAAKiuH,GAAG7uH,EAAED,EAAE6jB,OAAO7jB,EAAEqoS,WAAWroS,EAAE2yU,QAAQ3yU,EAAEqoS,WAAWxnS,KAAK+/B,QAAQ3gC,EAAEY,KAAK8lwB,OAAM,CAAG,CAAC,EAAE3mwB,CAAC,CAA9U,CAAgViF,GAAGqH,GAAG,SAASrM,GAAG,SAASD,IAAIC,EAAEmB,MAAMP,KAAKI,UAAW,CAAC,OAAOhB,IAAID,EAAEK,UAAUJ,IAAID,EAAEO,UAAUJ,OAAOY,OAAOd,GAAGA,EAAEM,YAAYO,YAAYd,EAAEA,EAAEO,UAAU2y5C,WAAW,WAAW,OAAOry5C,KAAKiuH,GAAGy5K,IAAI,EAAEvoS,EAAEO,UAAUuM,IAAI,SAAS7M,IAAIA,IAAIY,KAAK+/B,SAAS//B,KAAK8lwB,SAAS9lwB,KAAKiuH,GAAGgkN,SAAS7yU,GAAGY,KAAK+/B,QAAQ3gC,EAAEY,KAAK8lwB,OAAM,EAAI,EAAE3mwB,CAAC,CAA/S,CAAiTiF,GAAGwH,GAAG,SAASxM,GAAG,SAASD,IAAIC,EAAEmB,MAAMP,KAAKI,UAAW,CAAC,OAAOhB,IAAID,EAAEK,UAAUJ,IAAID,EAAEO,UAAUJ,OAAOY,OAAOd,GAAGA,EAAEM,YAAYO,YAAYd,EAAEA,EAAEO,UAAU2y5C,WAAW,WAAW,OAAOry5C,KAAKiuH,GAAG06K,GAAG,EAAExpS,EAAEO,UAAUuM,IAAI,SAAS7M,IAAIA,IAAIY,KAAK+/B,SAAS//B,KAAK8lwB,SAAS9lwB,KAAKiuH,GAAGmkN,UAAUhzU,GAAGY,KAAK+/B,QAAQ3gC,EAAEY,KAAK8lwB,OAAM,EAAI,EAAE3mwB,CAAC,CAA/S,CAAiTiF,GAAGmH,GAAG,SAASnM,GAAG,SAASD,IAAIC,EAAEmB,MAAMP,KAAKI,UAAW,CAAC,OAAOhB,IAAID,EAAEK,UAAUJ,IAAID,EAAEO,UAAUJ,OAAOY,OAAOd,GAAGA,EAAEM,YAAYO,YAAYd,EAAEA,EAAEO,UAAU2y5C,WAAW,WAAW,OAAO,IAAI,EAAElz5C,EAAEO,UAAUuM,IAAI,SAAS7M,IAAIA,IAAIY,KAAK+/B,SAAS//B,KAAK8lwB,SAAS9lwB,KAAKiuH,GAAGioN,WAAW92U,GAAGY,KAAK+/B,QAAQ3gC,EAAEY,KAAK8lwB,OAAM,EAAI,EAAE3mwB,CAAC,CAAzS,CAA2SiF,GAAGsH,GAAG,SAAStM,GAAG,SAASD,IAAIC,EAAEmB,MAAMP,KAAKI,UAAW,CAAC,OAAOhB,IAAID,EAAEK,UAAUJ,IAAID,EAAEO,UAAUJ,OAAOY,OAAOd,GAAGA,EAAEM,YAAYO,YAAYd,EAAEA,EAAEO,UAAU2y5C,WAAW,WAAW,OAAOry5C,KAAKiuH,GAAGw+K,QAAQ,EAAEttS,EAAEO,UAAUuM,IAAI,SAAS7M,IAAIA,IAAIY,KAAK+/B,SAAS//B,KAAK8lwB,SAAS9lwB,KAAKiuH,GAAG6gO,cAAc1vV,GAAGY,KAAK+/B,QAAQ3gC,EAAEY,KAAK8lwB,OAAM,EAAI,EAAE3mwB,CAAC,CAAxT,CAA0TiF,GAAG4H,GAAG,SAAS5M,GAAG,SAASD,IAAIC,EAAEmB,MAAMP,KAAKI,UAAW,CAAC,OAAOhB,IAAID,EAAEK,UAAUJ,IAAID,EAAEO,UAAUJ,OAAOY,OAAOd,GAAGA,EAAEM,YAAYO,YAAYd,EAAEA,EAAEO,UAAU2y5C,WAAW,WAAW,IAAIjz5C,EAAEY,KAAKiuH,GAAG,MAAO,CAAC,EAAE,EAAE7uH,EAAE61H,mBAAmB71H,EAAE81H,oBAAoB,EAAE/1H,EAAEO,UAAUuM,IAAI,SAAS7M,GAAG,IAAID,EAAEa,KAAK+/B,SAAS3gC,EAAE,KAAKD,EAAE,IAAIC,EAAE,KAAKD,EAAE,IAAIC,EAAE,KAAKD,EAAE,IAAIC,EAAE,KAAKD,EAAE,IAAIa,KAAK8lwB,SAAS9lwB,KAAKiuH,GAAG9iF,SAAS/rC,EAAE,GAAGA,EAAE,GAAGA,EAAE,GAAGA,EAAE,IAAIY,KAAK+/B,QAAQ3gC,EAAEY,KAAK8lwB,OAAM,EAAI,EAAE3mwB,CAAC,CAAxa,CAA0aiF,GAAG+H,GAAG,SAAS/M,GAAG,SAASD,IAAIC,EAAEmB,MAAMP,KAAKI,UAAW,CAAC,OAAOhB,IAAID,EAAEK,UAAUJ,IAAID,EAAEO,UAAUJ,OAAOY,OAAOd,GAAGA,EAAEM,YAAYO,YAAYd,EAAEA,EAAEO,UAAU2y5C,WAAW,WAAW,OAAO,IAAI,EAAElz5C,EAAEO,UAAUuM,IAAI,SAAS7M,GAAG,GAAGA,IAAIY,KAAK+/B,SAAS//B,KAAK8lwB,MAAM,CAAC,IAAI3mwB,EAAEa,KAAKiuH,GAAG9uH,EAAEgzU,gBAAgBhzU,EAAEkvS,YAAYjvS,GAAGY,KAAK+/B,QAAQ3gC,EAAEY,KAAK8lwB,OAAM,CAAG,CAAC,EAAE3mwB,CAAC,CAApU,CAAsUiF,GAAG0H,GAAG,SAAS1M,GAAG,SAASD,IAAIC,EAAEmB,MAAMP,KAAKI,UAAW,CAAC,OAAOhB,IAAID,EAAEK,UAAUJ,IAAID,EAAEO,UAAUJ,OAAOY,OAAOd,GAAGA,EAAEM,YAAYO,YAAYd,EAAEA,EAAEO,UAAU2y5C,WAAW,WAAW,OAAO,IAAI,EAAElz5C,EAAEO,UAAUuM,IAAI,SAAS7M,GAAG,GAAGA,IAAIY,KAAK+/B,SAAS//B,KAAK8lwB,MAAM,CAAC,IAAI3mwB,EAAEa,KAAKiuH,GAAG9uH,EAAEoqV,iBAAiBpqV,EAAEmvS,aAAalvS,GAAGY,KAAK+/B,QAAQ3gC,EAAEY,KAAK8lwB,OAAM,CAAG,CAAC,EAAE3mwB,CAAC,CAAtU,CAAwUiF,GAAGwJ,GAAG,SAASxO,GAAG,SAASD,IAAIC,EAAEmB,MAAMP,KAAKI,UAAW,CAAC,OAAOhB,IAAID,EAAEK,UAAUJ,IAAID,EAAEO,UAAUJ,OAAOY,OAAOd,GAAGA,EAAEM,YAAYO,YAAYd,EAAEA,EAAEO,UAAU2y5C,WAAW,WAAW,OAAO,IAAI,EAAElz5C,EAAEO,UAAUuM,IAAI,SAAS7M,GAAG,GAAGA,IAAIY,KAAK+/B,SAAS//B,KAAK8lwB,MAAM,CAAC,IAAI3mwB,EAAEa,KAAKiuH,GAAG9uH,EAAEmkV,YAAYnkV,EAAE2sS,WAAW1sS,GAAGY,KAAK+/B,QAAQ3gC,EAAEY,KAAK8lwB,OAAM,CAAG,CAAC,EAAE3mwB,CAAC,CAA/T,CAAiUiF,GAAGyH,GAAG,SAASzM,GAAG,SAASD,IAAIC,EAAEmB,MAAMP,KAAKI,UAAW,CAAC,OAAOhB,IAAID,EAAEK,UAAUJ,IAAID,EAAEO,UAAUJ,OAAOY,OAAOd,GAAGA,EAAEM,YAAYO,YAAYd,EAAEA,EAAEO,UAAU2y5C,WAAW,WAAW,OAAO,IAAI,EAAElz5C,EAAEO,UAAUuM,IAAI,SAAS7M,GAAG,GAAGA,IAAIY,KAAK+/B,SAAS//B,KAAK8lwB,MAAM,CAAC,IAAI3mwB,EAAEa,KAAKiuH,GAAG9uH,EAAEkqO,WAAWlqO,EAAE+yP,aAAa9yP,GAAGY,KAAK+/B,QAAQ3gC,EAAEY,KAAK8lwB,OAAM,CAAG,CAAC,EAAE3mwB,CAAC,CAAhU,CAAkUiF,GAAG0I,GAAG,SAAS1N,GAAG,SAASD,IAAIC,EAAEmB,MAAMP,KAAKI,UAAW,CAAC,OAAOhB,IAAID,EAAEK,UAAUJ,IAAID,EAAEO,UAAUJ,OAAOY,OAAOd,GAAGA,EAAEM,YAAYO,YAAYd,EAAEA,EAAEO,UAAU2y5C,WAAW,WAAW,OAAO,IAAI,EAAElz5C,EAAEO,UAAUuM,IAAI,SAAS7M,GAAG,IAAID,EAAEa,KAAKiuH,GAAG9uH,EAAEkqO,WAAWlqO,EAAEgzP,qBAAqB/yP,GAAGY,KAAK+/B,QAAQ3gC,EAAEY,KAAK8lwB,OAAM,CAAG,EAAE3mwB,CAAC,CAAtS,CAAwSiF,GAAGiJ,GAAG,SAASjO,GAAG,SAASD,EAAEA,GAAGC,EAAEQ,KAAKI,KAAKb,GAAGa,KAAKouU,IAAIjvU,EAAEmz5C,oBAAqB,CAAC,OAAOlz5C,IAAID,EAAEK,UAAUJ,IAAID,EAAEO,UAAUJ,OAAOY,OAAOd,GAAGA,EAAEM,YAAYO,YAAYd,EAAEA,EAAEO,UAAU2y5C,WAAW,WAAW,OAAO,IAAI,EAAElz5C,EAAEO,UAAUuM,IAAI,SAAS7M,GAAGY,KAAKouU,MAAMhvU,IAAIY,KAAK+/B,SAAS//B,KAAK8lwB,SAAS9lwB,KAAKouU,IAAIM,mBAAmBtvU,GAAGY,KAAK+/B,QAAQ3gC,EAAEY,KAAK8lwB,OAAM,EAAI,EAAE3mwB,CAAC,CAApV,CAAsViF,GAAGoI,GAAG,SAASpN,GAAG,SAASD,IAAIC,EAAEmB,MAAMP,KAAKI,UAAW,CAAC,OAAOhB,IAAID,EAAEK,UAAUJ,IAAID,EAAEO,UAAUJ,OAAOY,OAAOd,GAAGA,EAAEM,YAAYO,YAAYd,EAAEA,EAAEO,UAAU2y5C,WAAW,WAAW,OAAO,CAAC,EAAElz5C,EAAEO,UAAUuM,IAAI,SAAS7M,GAAG,GAAGA,IAAIY,KAAK+/B,SAAS//B,KAAK8lwB,MAAM,CAAC,IAAI3mwB,EAAEa,KAAKiuH,GAAG9uH,EAAE4yU,YAAY5yU,EAAEgmS,iBAAiB/lS,GAAGY,KAAK+/B,QAAQ3gC,EAAEY,KAAK8lwB,OAAM,CAAG,CAAC,EAAE3mwB,CAAC,CAAlU,CAAoUiF,GAAGgI,GAAG,SAAShN,GAAG,SAASD,IAAIC,EAAEmB,MAAMP,KAAKI,UAAW,CAAC,OAAOhB,IAAID,EAAEK,UAAUJ,IAAID,EAAEO,UAAUJ,OAAOY,OAAOd,GAAGA,EAAEM,YAAYO,YAAYd,EAAEA,EAAEO,UAAU2y5C,WAAW,WAAW,OAAO,CAAE,EAAElz5C,EAAEO,UAAUuM,IAAI,SAAS7M,GAAG,GAAGA,IAAIY,KAAK+/B,SAAS//B,KAAK8lwB,MAAM,CAAC,IAAI3mwB,EAAEa,KAAKiuH,GAAG9uH,EAAE4yU,YAAY5yU,EAAEwxS,+BAA+BvxS,GAAGY,KAAK+/B,QAAQ3gC,EAAEY,KAAK8lwB,OAAM,CAAG,CAAC,EAAE3mwB,CAAC,CAAjV,CAAmViF,GAAG4J,GAAG,SAAS5O,GAAG,SAASD,IAAIC,EAAEmB,MAAMP,KAAKI,UAAW,CAAC,OAAOhB,IAAID,EAAEK,UAAUJ,IAAID,EAAEO,UAAUJ,OAAOY,OAAOd,GAAGA,EAAEM,YAAYO,YAAYd,EAAEA,EAAEO,UAAU2y5C,WAAW,WAAW,OAAO,CAAE,EAAElz5C,EAAEO,UAAUuM,IAAI,SAAS7M,GAAG,GAAGA,IAAIY,KAAK+/B,SAAS//B,KAAK8lwB,MAAM,CAAC,IAAI3mwB,EAAEa,KAAKiuH,GAAG9uH,EAAE4yU,YAAY5yU,EAAEuxS,oBAAoBtxS,GAAGY,KAAK+/B,QAAQ3gC,EAAEY,KAAK8lwB,OAAM,CAAG,CAAC,EAAE3mwB,CAAC,CAAtU,CAAwUiF,GAAG+I,GAAG,SAAS/N,GAAG,SAASD,EAAEA,EAAEyB,GAAGxB,EAAEQ,KAAKI,KAAKb,GAAGa,KAAKmtC,QAAQhuC,EAAEa,KAAKqxF,OAAOzwF,CAAE,CAAC,OAAOxB,IAAID,EAAEK,UAAUJ,IAAID,EAAEO,UAAUJ,OAAOY,OAAOd,GAAGA,EAAEM,YAAYO,YAAYd,EAAEA,EAAEO,UAAU2y5C,WAAW,WAAW,OAAO,IAAI,EAAElz5C,CAAC,CAA7M,CAA+MiF,GAAGmJ,GAAG,SAASnO,GAAG,SAASD,IAAIC,EAAEmB,MAAMP,KAAKI,UAAW,CAAC,OAAOhB,IAAID,EAAEK,UAAUJ,IAAID,EAAEO,UAAUJ,OAAOY,OAAOd,GAAGA,EAAEM,YAAYO,YAAYd,EAAEA,EAAEO,UAAU6+hC,SAAS,WAAWv+hC,KAAK8lwB,OAAM,CAAG,EAAE3mwB,EAAEO,UAAUuM,IAAI,SAAS7M,GAAG,GAAGA,IAAIY,KAAK+/B,SAAS//B,KAAK8lwB,MAAM,CAAC9lwB,KAAKmtC,QAAQglS,gBAAgBlmU,IAAIjM,KAAKqxF,QAAQ,IAAIlyF,EAAEa,KAAKiuH,GAAG9uH,EAAEkkV,qBAAqBlkV,EAAEkvS,YAAYlvS,EAAEwwS,kBAAkBxwS,EAAE2sS,WAAW1sS,EAAE,GAAGY,KAAK+/B,QAAQ3gC,EAAEY,KAAK8lwB,OAAM,CAAG,CAAC,EAAE3mwB,CAAC,CAA3Z,CAA6ZgO,IAAIc,GAAG,SAAS7O,GAAG,SAASD,IAAIC,EAAEmB,MAAMP,KAAKI,UAAW,CAAC,OAAOhB,IAAID,EAAEK,UAAUJ,IAAID,EAAEO,UAAUJ,OAAOY,OAAOd,GAAGA,EAAEM,YAAYO,YAAYd,EAAEA,EAAEO,UAAUuM,IAAI,SAAS7M,GAAG,GAAGA,IAAIY,KAAK+/B,SAAS//B,KAAK8lwB,MAAM,CAAC9lwB,KAAKmtC,QAAQglS,gBAAgBlmU,IAAIjM,KAAKqxF,QAAQ,IAAIlyF,EAAEa,KAAKiuH,GAAG9uH,EAAEikV,wBAAwBjkV,EAAEkvS,YAAYlvS,EAAEywS,iBAAiBzwS,EAAEmvS,aAAalvS,GAAGY,KAAK+/B,QAAQ3gC,EAAEY,KAAK8lwB,OAAM,CAAG,CAAC,EAAE3mwB,CAAC,CAA7W,CAA+WgO,IAAIsB,GAAG,SAASrP,EAAED,EAAEyB,EAAEN,GAAGN,KAAKmtC,QAAQ/tC,EAAEY,KAAK++B,MAAM5/B,EAAEa,KAAKg/B,OAAOp+B,EAAE,IAAIb,EAAEC,KAAKm1H,YAAY/1H,EAAE6uH,GAAG0gM,oBAAoB3uT,KAAKuy5C,gBAAgB,IAAIhl5C,GAAGnO,EAAEW,GAAGO,IAAIN,KAAKwy5C,gBAAgB,IAAIvk5C,GAAG7O,EAAEW,GAAI,EAAE0O,GAAG/O,UAAU0+I,QAAQ,WAAW,IAAIh/I,EAAEY,KAAKmtC,QAAQ8gF,GAAG9uH,EAAEa,KAAKuy5C,gBAAgBpv5C,MAAM,GAAGhE,GAAGC,EAAEixV,cAAclxV,GAAGa,KAAKwy5C,gBAAgB,CAAC,IAAI5x5C,EAAEZ,KAAKwy5C,gBAAgBrv5C,MAAMvC,GAAGxB,EAAEuqV,mBAAmB/oV,EAAG,CAACxB,EAAE4gV,kBAAkBhgV,KAAKm1H,YAAa,EAAE,IAAIrnH,GAAG,SAAS1O,EAAED,EAAEyB,GAAGZ,KAAK+/C,KAAK3gD,EAAEY,KAAKy/K,KAAKtgL,EAAEa,KAAK+hI,MAAMnhI,CAAE,EAAEkN,GAAG2k5C,UAAS,EAAG3k5C,GAAG4k5C,WAAU,EAAG5k5C,GAAGwiW,SAAS,IAAIxiW,GAAG,IAAIA,GAAG2k5C,SAAS,CAAC,EAAE,IAAI,IAAI5j5C,GAAG,SAASzP,EAAED,EAAEyB,EAAEN,EAAEP,EAAEiB,GAAGhB,KAAKqL,KAAKjM,EAAEY,KAAK4hC,IAAIziC,EAAEa,KAAKy/K,KAAK7+K,EAAEZ,KAAK40U,KAAKt0U,EAAEN,KAAK2y5C,UAAU5y5C,EAAEC,KAAK8uH,KAAK9tH,CAAE,EAAE6N,GAAGyhW,SAAS,IAAIzhW,GAAG,CAACkxC,KAAK,IAAI0/H,KAAK,GAAG,EAAE,EAAE,KAAK,KAAK,MAAM,IAAIhyK,GAAG,SAASrO,EAAED,EAAEyB,GAAGZ,KAAK4y5C,cAAcxz5C,EAAEY,KAAK66J,WAAW17J,EAAEa,KAAKy/K,KAAK7+K,CAAE,EAAE6M,GAAG6iW,SAAS,IAAI7iW,GAAGA,GAAG0na,QAAQ,CAAC,EAAE,GAAG/1a,EAAEizuB,MAAMt8jB,YAAY,EAAC,GAAG,GAAG,GAAG,IAAKtoK,GAAGol5C,UAAU,IAAIpl5C,GAAGA,GAAG0na,QAAQ/1a,EAAEizuB,MAAMt8jB,YAAY,EAAC,GAAG,GAAG,GAAG,IAAKtoK,GAAGql5C,aAAa,IAAIrl5C,GAAG,CAAC,EAAE,KAAKrO,EAAEizuB,MAAMt8jB,YAAY,EAAC,GAAG,GAAG,GAAG,IAAK,IAAI7nK,GAAG,SAAS9O,EAAED,EAAEyB,GAAGZ,KAAKgjB,OAAO5jB,EAAEY,KAAK0H,KAAKvI,EAAEa,KAAKoyU,UAAUxxU,CAAE,EAAEsN,GAAGoiW,SAAS,IAAIpiW,IAAG,EAAG,KAAK,MAAMA,GAAG6k5C,QAAQ,IAAI7k5C,IAAG,EAAG,KAAK,MAAM,IAAI2B,GAAG,SAASzQ,GAAGY,KAAKiuH,GAAG7uH,EAAEY,KAAKsy5C,qBAAqBty5C,KAAKiuH,GAAG6tF,aAAa,2BAA2B97M,KAAK0uH,WAAW,IAAI9oH,EAAE5F,MAAMA,KAAKkyU,WAAW,IAAIvtU,EAAE3E,MAAMA,KAAKsyU,aAAa,IAAI9tU,EAAExE,MAAMA,KAAKw6J,UAAU,IAAIz1J,EAAE/E,MAAMA,KAAKu6J,UAAU,IAAI/0J,EAAExF,MAAMA,KAAKgzU,YAAY,IAAI/tU,EAAEjF,MAAMA,KAAK2qO,YAAY,IAAIllO,EAAEzF,MAAMA,KAAKqzU,UAAU,IAAI3tU,EAAE1F,MAAMA,KAAK+yU,YAAY,IAAI/sU,EAAEhG,MAAMA,KAAKuuH,WAAW,IAAInoH,EAAEpG,MAAMA,KAAKwuH,UAAU,IAAIxjH,GAAGhL,MAAMA,KAAKwhJ,UAAU,IAAIz2I,GAAG/K,MAAMA,KAAKyuH,MAAM,IAAInjH,GAAGtL,MAAMA,KAAK4lI,UAAU,IAAIx6H,GAAGpL,MAAMA,KAAK66J,WAAW,IAAI3vJ,GAAGlL,MAAMA,KAAK6lI,cAAc,IAAIr6H,GAAGxL,MAAMA,KAAKiyU,SAAS,IAAIhnU,GAAGjL,MAAMA,KAAKgz5C,aAAa,IAAIvn5C,GAAGzL,MAAMA,KAAKoyU,UAAU,IAAIxmU,GAAG5L,MAAMA,KAAKmyR,QAAQ,IAAI5mR,GAAGvL,MAAMA,KAAK8uV,cAAc,IAAIpjV,GAAG1L,MAAMA,KAAKmrC,SAAS,IAAIn/B,GAAGhM,MAAMA,KAAKmyU,gBAAgB,IAAIhmU,GAAGnM,MAAMA,KAAKupV,iBAAiB,IAAIz9U,GAAG9L,MAAMA,KAAKsjV,YAAY,IAAI11U,GAAG5N,MAAMA,KAAKky5C,iBAAiB,IAAIrm5C,GAAG7L,MAAMA,KAAKiy5C,kBAAkB,IAAInl5C,GAAG9M,MAAMA,KAAK0uU,mBAAmB1uU,KAAKsy5C,sBAAsB,IAAIjl5C,GAAGrN,MAAMA,KAAKi54C,iBAAiB,IAAIzs4C,GAAGxM,MAAMA,KAAKk54C,iCAAiC,IAAI9s4C,GAAGpM,MAAMA,KAAKg54C,sBAAsB,IAAIhr4C,GAAGhO,MAAMA,KAAK+v5C,4BAA4B3w5C,EAAE08M,aAAa,mCAAmC18M,EAAE08M,aAAa,uCAAuC18M,EAAE08M,aAAa,yCAAyC97M,KAAK+v5C,8BAA8B/v5C,KAAKgw5C,+BAA+B5w5C,EAAEgqO,aAAappO,KAAK+v5C,4BAA4B9umC,iCAAiCjhT,KAAKiz5C,oBAAoB7z5C,EAAE08M,aAAa,0BAA0B97M,KAAKiz5C,sBAAsB7z5C,EAAE08M,aAAa,iCAAiC97M,KAAKkz5C,4BAA4B9z5C,EAAE08M,aAAa,gCAAgC97M,KAAKmz5C,cAAc/z5C,EAAE08M,aAAa,4BAA4B97M,KAAKoz5C,eAAeh05C,EAAEgqO,aAAahqO,EAAEimS,iBAAkB,EAAEx1R,GAAGnQ,UAAUw3nC,WAAW,WAAWl3nC,KAAKgy5C,YAAYhy5C,KAAK0uH,WAAWwogC,aAAal3nC,KAAKkyU,WAAWglzB,aAAal3nC,KAAKsyU,aAAa4kzB,aAAal3nC,KAAKw6J,UAAU089B,aAAal3nC,KAAKu6J,UAAU289B,aAAal3nC,KAAKgzU,YAAYkkzB,aAAal3nC,KAAK2qO,YAAYus5B,aAAal3nC,KAAKqzU,UAAU6jzB,aAAal3nC,KAAK+yU,YAAYmkzB,aAAal3nC,KAAKuuH,WAAW2ogC,aAAal3nC,KAAKwuH,UAAU0ogC,aAAal3nC,KAAKwhJ,UAAU01+B,aAAal3nC,KAAKyuH,MAAMyogC,aAAal3nC,KAAK4lI,UAAUsx/B,aAAal3nC,KAAK66J,WAAWq89B,aAAal3nC,KAAK6lI,cAAcqx/B,aAAal3nC,KAAKiyU,SAASilzB,aAAal3nC,KAAKgz5C,aAAa97R,aAAal3nC,KAAKoyU,UAAU8kzB,aAAal3nC,KAAKmyR,QAAQ+k2B,aAAal3nC,KAAK8uV,cAAcooyB,aAAal3nC,KAAKmyU,gBAAgB+kzB,aAAal3nC,KAAKi54C,iBAAiB/hR,aAAal3nC,KAAKk54C,iCAAiChiR,aAAal3nC,KAAKg54C,sBAAsB9hR,YAAa,EAAErnnC,GAAGnQ,UAAU6+hC,SAAS,WAAWv+hC,KAAK0uH,WAAWo3oB,OAAM,EAAG9lwB,KAAKkyU,WAAW4zb,OAAM,EAAG9lwB,KAAKsyU,aAAawzb,OAAM,EAAG9lwB,KAAKw6J,UAAUsrmB,OAAM,EAAG9lwB,KAAKu6J,UAAUurmB,OAAM,EAAG9lwB,KAAKgzU,YAAY8yb,OAAM,EAAG9lwB,KAAK2qO,YAAYm7hB,OAAM,EAAG9lwB,KAAKqzU,UAAUyyb,OAAM,EAAG9lwB,KAAK+yU,YAAY+yb,OAAM,EAAG9lwB,KAAKuuH,WAAWu3oB,OAAM,EAAG9lwB,KAAKwuH,UAAUs3oB,OAAM,EAAG9lwB,KAAKwhJ,UAAUsknB,OAAM,EAAG9lwB,KAAKyuH,MAAMq3oB,OAAM,EAAG9lwB,KAAK4lI,UAAUkgoB,OAAM,EAAG9lwB,KAAK66J,WAAWirmB,OAAM,EAAG9lwB,KAAK6lI,cAAcigoB,OAAM,EAAG9lwB,KAAKiyU,SAAS6zb,OAAM,EAAG9lwB,KAAKgz5C,aAAaltpB,OAAM,EAAG9lwB,KAAKoyU,UAAU0zb,OAAM,EAAG9lwB,KAAKmyR,QAAQ2ze,OAAM,EAAG9lwB,KAAK8uV,cAAcg3a,OAAM,EAAG9lwB,KAAKmrC,SAAS26tB,OAAM,EAAG9lwB,KAAKmyU,gBAAgB2zb,OAAM,EAAG9lwB,KAAKupV,iBAAiBu8a,OAAM,EAAG9lwB,KAAKsjV,YAAYwib,OAAM,EAAG9lwB,KAAKky5C,iBAAiBpspB,OAAM,EAAG9lwB,KAAKiy5C,kBAAkBnspB,OAAM,EAAG9lwB,KAAKsy5C,uBAAuBty5C,KAAK0uU,mBAAmBo3b,OAAM,GAAI9lwB,KAAKi54C,iBAAiBnzoB,OAAM,EAAG9lwB,KAAKk54C,iCAAiCpzoB,OAAM,EAAG9lwB,KAAKg54C,sBAAsBlzoB,OAAM,CAAG,EAAEj2vB,GAAGnQ,UAAUgo4C,kBAAkB,SAASto4C,EAAED,GAAG,OAAO,IAAI+F,EAAElF,KAAKZ,EAAED,EAAE,EAAE0Q,GAAGnQ,UAAUgm4C,mBAAmB,SAAStm4C,EAAED,EAAEyB,GAAG,OAAO,IAAIsF,EAAElG,KAAKZ,EAAED,EAAEyB,EAAE,EAAEiP,GAAGnQ,UAAUgqV,mBAAmB,SAAStqV,EAAED,EAAEyB,GAAG,IAAIN,EAAEN,KAAKiuH,GAAGluH,EAAEO,EAAEopV,qBAAqB,OAAO1pV,KAAKupV,iBAAiBt9U,IAAIlM,GAAGO,EAAEmpV,oBAAoBnpV,EAAEguS,aAAalvS,EAAED,EAAEyB,GAAGZ,KAAKupV,iBAAiBt9U,IAAI,MAAMlM,CAAC,EAAE8P,GAAGnQ,UAAUivT,kBAAkB,SAASvvT,EAAED,EAAEyB,GAAG,OAAO,IAAI6N,GAAGzO,KAAKZ,EAAED,EAAEyB,EAAE,EAAEiP,GAAGnQ,UAAUslB,MAAM,SAAS5lB,GAAG,IAAID,EAAEC,EAAEmuH,MAAM3sH,EAAExB,EAAEm4I,MAAMj3I,EAAEN,KAAKiuH,GAAGluH,EAAE,EAAEZ,IAAIY,GAAGO,EAAEshS,iBAAiB5hS,KAAK0uH,WAAWziH,IAAI9M,GAAGa,KAAKw6J,UAAUvuJ,IAAI,EAAC,GAAG,GAAG,GAAG,UAAM,IAASrL,IAAIb,GAAGO,EAAEohS,iBAAiB1hS,KAAKuuH,WAAWtiH,IAAI,CAAC,EAAE,IAAIjM,KAAKkyU,WAAWjmU,IAAIrL,GAAGZ,KAAKu6J,UAAUtuJ,KAAI,IAAK3L,EAAE0kB,MAAMjlB,EAAG,EAAE8P,GAAGnQ,UAAU2z5C,YAAY,SAASj05C,IAAG,IAAKA,EAAE4jB,OAAOhjB,KAAKiyU,SAAShmU,KAAI,IAAKjM,KAAKiyU,SAAShmU,KAAI,GAAIjM,KAAKgz5C,aAAa/m5C,IAAI7M,EAAEsI,MAAM1H,KAAKoyU,UAAUnmU,IAAI7M,EAAEgzU,WAAY,EAAEviU,GAAGnQ,UAAU4z5C,aAAa,SAASl05C,GAAGA,EAAE2gD,OAAO//C,KAAKiuH,GAAGu8K,QAAQprS,EAAEqgL,MAAMz/K,KAAKwuH,UAAUviH,KAAI,GAAIjM,KAAKwhJ,UAAUv1I,IAAI7M,EAAE2gD,MAAM//C,KAAKu6J,UAAUtuJ,IAAI7M,EAAEqgL,MAAMz/K,KAAKuuH,WAAWtiH,IAAI7M,EAAE2iI,QAAQ/hI,KAAKwuH,UAAUviH,KAAI,EAAI,EAAE4D,GAAGnQ,UAAU6z5C,eAAe,SAASn05C,GAAGA,EAAEiM,KAAK00C,OAAO//C,KAAKiuH,GAAGu8K,QAAQprS,EAAEqgL,MAAMz/K,KAAK+yU,YAAY9mU,KAAI,GAAIjM,KAAKgzU,YAAY/mU,IAAI7M,EAAEqgL,MAAMz/K,KAAKqzU,UAAUpnU,IAAI,CAAC7M,EAAEw1U,KAAKx1U,EAAEuz5C,UAAUvz5C,EAAE0vH,OAAO9uH,KAAK2qO,YAAY1+N,IAAI,CAAC8zC,KAAK3gD,EAAEiM,KAAK00C,KAAKne,IAAIxiC,EAAEwiC,IAAI69I,KAAKrgL,EAAEiM,KAAKo0K,QAAQz/K,KAAK+yU,YAAY9mU,KAAI,EAAI,EAAE4D,GAAGnQ,UAAU8z5C,aAAa,SAASr05C,GAAGC,EAAE2iK,UAAU5iK,EAAEyz5C,cAAcnl5C,GAAG0na,SAASn1a,KAAKyuH,MAAMxiH,KAAI,IAAKjM,KAAKyuH,MAAMxiH,KAAI,GAAIjM,KAAK4lI,UAAU35H,IAAI9M,EAAEyz5C,eAAe5y5C,KAAK66J,WAAW5uJ,IAAI9M,EAAE07J,aAAa76J,KAAKw6J,UAAUvuJ,IAAI9M,EAAEsgL,KAAM,EAAE5vK,GAAGnQ,UAAUsy5C,UAAU,WAAWhy5C,KAAKsy5C,sBAAsBty5C,KAAK0uU,mBAAmBziU,IAAI,KAAM,EAAE,IAAIiD,GAAG,SAAS/P,GAAG,SAASyB,EAAEA,EAAEN,EAAEP,GAAG,IAAIiB,EAAEhB,KAAKb,EAAES,KAAKI,MAAMA,KAAKurB,GAAG3qB,EAAEZ,KAAKw3iC,WAAWz3iC,EAAEC,KAAK4Q,GAAG,QAAO,SAAUxR,GAAG,WAAWA,EAAE4vQ,UAAU,aAAa5vQ,EAAEkw5C,iBAAiBtu5C,EAAEyy5C,eAAc,GAAIzy5C,EAAEyy5C,gBAAgBzy5C,EAAE++8B,SAAS,WAAW3g9B,EAAE4vQ,UAAU,YAAY5vQ,EAAEkw5C,iBAAiBtu5C,EAAEsnd,SAAStnd,EAAE4hI,WAAW5hI,EAAEutE,OAAOvtE,EAAE4hI,WAAa,IAAG5iI,KAAK4Q,GAAG,SAAQ,WAAY5P,EAAE0y5C,gBAAe,CAAI,IAAG1z5C,KAAKyhwB,QAAQ,SAAStiwB,EAAEyB,EAAEN,EAAEP,GAAG,IAAIiB,EAAE,IAAI0C,EAAE9C,EAAE2L,MAAMpN,EAAEyB,EAAEN,EAAEP,GAAG,GAAGiB,EAAEuqB,KAAKpsB,EAAE,MAAM,IAAIqoB,MAAM,4BAA4BroB,EAAE,eAAe6B,EAAEuqB,IAAI,OAAOnsB,EAAE+0xC,QAAQ,CAAC,OAAO,QAAQ,SAAS,YAAY,WAAWnzxC,GAAGA,CAAC,CAAnM,CAAqMJ,EAAEN,EAAEP,EAAEC,MAAMA,KAAKmwL,OAAO,CAAC,EAAEnwL,KAAKkwL,OAAO,IAAI7qL,EAAE,EAAErF,KAAKu1M,YAAYlyM,KAAKrD,OAAOA,KAAK2z5C,QAAQ,CAAC,EAAE3z5C,KAAK4z5C,aAAa,CAAC,EAAE5z5C,KAAK6z5C,kBAAkB,KAAK7z5C,KAAK8z5C,mBAAmB,CAAC,EAAE9z5C,KAAK+z5C,cAAc,CAAC,EAAE/z5C,KAAKimB,OAAO,IAAI7mB,EAAEsj5C,kBAAmB,CAAC,OAAOvj5C,IAAIyB,EAAEpB,UAAUL,IAAIyB,EAAElB,UAAUJ,OAAOY,OAAOf,GAAGA,EAAEO,YAAYO,YAAYW,EAAEA,EAAElB,UAAU8oO,MAAM,SAASppO,GAAGY,KAAKqvB,IAAIjwB,EAAEY,KAAK6z5C,kBAAkBz05C,EAAEA,EAAEy05C,kBAAkB,KAAK7z5C,KAAKyhwB,SAASzhwB,KAAKyhwB,QAAQj5hB,OAAOxoO,KAAKyhwB,QAAQj5hB,MAAMppO,EAAG,EAAEwB,EAAElB,UAAUspO,SAAS,SAAS5pO,GAAGY,KAAKyhwB,SAASzhwB,KAAKyhwB,QAAQz4hB,UAAUhpO,KAAKyhwB,QAAQz4hB,SAAS5pO,EAAG,EAAEwB,EAAElB,UAAUy3M,OAAO,WAAW,GAAGn3M,KAAK0z5C,eAAe,OAAO,EAAG,IAAI1z5C,KAAKyz5C,cAAc,OAAO,EAAG,IAAIzz5C,KAAKyhwB,QAAQtqjB,SAAS,OAAO,EAAG,IAAI,IAAI/3M,KAAKY,KAAKmwL,OAAO,CAAC,IAAIhxL,EAAEa,KAAKmwL,OAAO/wL,GAAG,GAAG,WAAWD,EAAEwM,OAAO,YAAYxM,EAAEwM,MAAM,OAAO,CAAE,CAAC,OAAO,CAAE,EAAE/K,EAAElB,UAAU+rV,UAAU,WAAW,OAAOzrV,KAAKyhwB,OAAO,EAAE7gwB,EAAElB,UAAUssT,MAAM,WAAWhsT,KAAK+/8B,SAAQ,CAAG,EAAEn/8B,EAAElB,UAAUkh9B,OAAO,WAAW,GAAG5g9B,KAAK+/8B,QAAQ,CAAC,IAAI3g9B,EAAEY,KAAKg05C,sBAAsBh05C,KAAK+/8B,SAAQ,EAAG//8B,KAAKg05C,uBAAsB,EAAG505C,GAAGY,KAAKsod,SAAStod,KAAK4iI,WAAW5iI,KAAKuuE,OAAOvuE,KAAK4iI,UAAW,CAAC,EAAEhiI,EAAElB,UAAUqxM,UAAU,SAAS3xM,EAAED,GAAG,OAAOa,KAAKyhwB,QAAQ36jB,SAAS1nM,EAAED,EAAE,EAAEyB,EAAElB,UAAU61M,YAAY,SAASn2M,GAAG,GAAGY,KAAKyhwB,QAAQtikB,WAAW,OAAOn/L,KAAKyhwB,QAAQtikB,WAAW//L,GAAE,WAAa,GAAE,EAAEwB,EAAElB,UAAUu05C,WAAW,SAAS705C,GAAG,GAAGY,KAAKyhwB,QAAQinpB,UAAU,OAAO1o5C,KAAKyhwB,QAAQinpB,UAAUtp5C,GAAE,WAAa,GAAE,EAAEwB,EAAElB,UAAUytsB,UAAU,WAAW,OAAOntsB,KAAKyhwB,QAAQt0D,WAAW,EAAEvssB,EAAElB,UAAU4xa,QAAQ,SAASlya,GAAG,IAAI,IAAID,KAAKa,KAAKyhwB,QAAQnwV,SAAStxa,KAAKyhwB,QAAQnwV,UAAUtxa,KAAKimB,OAAOs33C,gBAAgBv94C,KAAKmwL,OAAOnwL,KAAKqvB,IAAIrvB,KAAKqvB,IAAI+k7B,QAAQ,MAAMp08B,KAAKmwL,OAAO,CAAC,IAAIvvL,EAAEZ,KAAKmwL,OAAOhxL,GAAGyB,EAAE266B,OAAOn86B,GAAGwB,EAAE0wa,QAAQtxa,KAAKqvB,IAAIhb,MAAM6/4C,aAAc,CAAC,EAAEtz5C,EAAElB,UAAUy05C,OAAO,WAAW,OAAO/05C,EAAEsd,OAAO1c,KAAKmwL,QAAQ9gK,KAAI,SAAUjwB,GAAG,OAAOA,EAAEo+4C,MAAO,IAAGjx2C,KAAK39B,IAAIygB,KAAI,SAAUjwB,GAAG,OAAOA,EAAEylB,GAAI,GAAE,EAAEjkB,EAAElB,UAAU005C,iBAAiB,SAASj15C,GAAG,IAAIyB,EAAEZ,KAAKM,EAAE,GAAG,IAAI,IAAIP,KAAKC,KAAKmwL,OAAOnwL,KAAKq05C,gBAAgBt05C,EAAEZ,IAAImB,EAAEuB,KAAK7B,KAAKmwL,OAAOpwL,IAAI,OAAOZ,EAAEmB,EAAEisC,MAAK,SAAUptC,EAAEmB,GAAG,IAAIP,EAAEZ,EAAEq+4C,OAAOx84C,EAAEV,EAAEk94C,OAAOn+4C,EAAE,IAAID,EAAEoqC,MAAMzpC,EAAEg43C,UAAU9z3C,EAAElE,EAAEg43C,UAAU/03C,GAAGks3C,QAAQtu3C,EAAEgiI,UAAU+rG,OAAO7tO,EAAE,IAAI1B,EAAEoqC,MAAMxoC,EAAE+23C,UAAU9z3C,EAAEjD,EAAE+23C,UAAU/03C,GAAGks3C,QAAQtu3C,EAAEgiI,UAAU+rG,OAAO,OAAO5uO,EAAE674C,YAAY564C,EAAE464C,aAAa964C,EAAEkC,EAAE3D,EAAE2D,GAAGlC,EAAEmD,EAAE5E,EAAE4E,CAAE,IAAGorB,KAAI,SAAUjwB,GAAG,OAAOA,EAAEo+4C,OAAO343C,GAAI,IAAGvkB,EAAE+uB,KAAI,SAAUjwB,GAAG,OAAOA,EAAEo+4C,MAAO,IAAGjx2C,KAAK39B,IAAIygB,KAAI,SAAUjwB,GAAG,OAAOA,EAAEylB,GAAI,GAAE,EAAEjkB,EAAElB,UAAU405C,oBAAoB,SAASl15C,GAAG,IAAID,EAAEa,KAAKu05C,iBAAiBn15C,EAAE,GAAG,QAASD,GAAGa,KAAKq05C,gBAAgBl15C,EAAEq+4C,OAAO343C,IAAI,EAAEjkB,EAAElB,UAAU205C,gBAAgB,SAASj15C,EAAED,GAAG,OAAOa,KAAKmwL,OAAO/wL,IAAIY,KAAKmwL,OAAO/wL,GAAG0/wB,YAAY9+wB,KAAK+z5C,cAAc305C,KAAKD,IAAIa,KAAKmwL,OAAO/wL,GAAG+g5C,iBAAiB,EAAEv/4C,EAAElB,UAAU4od,OAAO,WAAW,GAAGtod,KAAK+/8B,QAAQ//8B,KAAKg05C,uBAAsB,OAAQ,IAAI,IAAI505C,KAAKY,KAAKkwL,OAAOjvH,QAAQjhE,KAAKmwL,OAAO,YAAYnwL,KAAKmwL,OAAO/wL,GAAGuM,OAAO3L,KAAKw05C,YAAYp15C,EAAE,YAAa,EAAEwB,EAAElB,UAAU805C,YAAY,SAASp15C,EAAED,GAAG,IAAIyB,EAAEZ,KAAKmwL,OAAO/wL,GAAGwB,IAAI,YAAYA,EAAE+K,QAAQ/K,EAAE+K,MAAMxM,GAAGa,KAAK+wM,UAAUnwM,EAAEZ,KAAKy05C,YAAYpx5C,KAAKrD,KAAKY,EAAExB,EAAED,IAAK,EAAEyB,EAAElB,UAAU+05C,YAAY,SAASt15C,EAAEyB,EAAEN,EAAEP,GAAG,GAAGA,EAAE,OAAOZ,EAAEwM,MAAM,eAAe,MAAM5L,EAAE0lB,OAAOzlB,KAAKyhwB,QAAQ6xnB,KAAK,IAAIl03C,EAAEijZ,WAAWtiZ,EAAE,CAAC2hL,KAAKviL,KAAKa,KAAKuuE,OAAOvuE,KAAK4iI,YAAYzjI,EAAE8/4C,UAAU7/4C,EAAEghS,QAAQ30Q,MAAM,YAAYnrB,IAAInB,EAAEu15C,yBAAwB,GAAI105C,KAAK205C,oBAAoB/z5C,EAAEzB,GAAG,eAAea,KAAKyrV,YAAYl/U,MAAMpN,EAAE+w5C,KAAKlw5C,KAAK405C,aAAaz15C,GAAGa,KAAKimB,OAAOo33C,oBAAoBl+4C,EAAEa,KAAKqvB,IAAIrvB,KAAKqvB,IAAI+k7B,QAAQ,MAAMp08B,KAAKyhwB,QAAQ6xnB,KAAK,IAAIl03C,EAAEuqB,MAAM,OAAO,CAACqlP,SAAS,SAASttF,KAAKviL,EAAE8/J,MAAM9/J,EAAEq+4C,SAAU,EAAE584C,EAAElB,UAAUk15C,aAAa,SAASx15C,GAAG,IAAI,IAAID,EAAEa,KAAKo05C,mBAAmBxz5C,EAAE,EAAEA,EAAEzB,EAAEkB,OAAOO,IAAI,CAAC,IAAIN,EAAEnB,EAAEyB,GAAG,GAAGxB,EAAEgx5C,kBAAkBhx5C,EAAEgx5C,iBAAiB9v5C,GAAG,CAAC,IAAIP,EAAEC,KAAK605C,YAAYv05C,GAAGU,EAAE5B,EAAEW,GAAGiB,EAAEjB,EAAEX,EAAG,CAAC,CAAC,SAAS4B,EAAE5B,EAAED,GAAGC,EAAE+w5C,uBAAsB,EAAG,IAAIvv5C,EAAEzB,EAAEq+4C,OAAOzlB,UAAU9z3C,EAAE7E,EAAEo+4C,OAAOzlB,UAAU9z3C,EAAE3D,EAAEnB,EAAEq+4C,OAAOzlB,UAAU/03C,EAAE5D,EAAEo+4C,OAAOzlB,UAAU/03C,EAAEjD,EAAE8C,KAAK6yF,IAAI,EAAEt2F,EAAEo+4C,OAAOzlB,UAAUpy3C,GAAG3E,EAAE7B,EAAEq+4C,OAAO343C,IAAI,IAAIjkB,GAAG,IAAIN,GAAGuC,KAAKmjH,IAAI1lH,GAAG,IAAIuC,KAAKmjH,IAAIplH,GAAG,IAAI,IAAIiC,KAAKmjH,IAAIplH,EAAEb,GAAGa,GAAGb,EAAE,IAAI8C,KAAKmjH,IAAIplH,EAAEb,KAAKa,GAAGb,IAAIZ,EAAE+w5C,KAAK9w5C,EAAE8w5C,MAAM9w5C,EAAE8w5C,IAAIxT,eAAev94C,EAAE+w5C,IAAItv5C,EAAEN,GAAGlB,EAAEgx5C,kBAAkBhx5C,EAAEgx5C,iBAAiBpv5C,KAAK5B,EAAEgx5C,iBAAiBpv5C,GAAGsv5C,YAAW,IAAM,CAAC,EAAE1v5C,EAAElB,UAAUq7Z,QAAQ,SAAS37Z,GAAG,OAAOY,KAAK605C,YAAYz15C,EAAEylB,IAAI,EAAEjkB,EAAElB,UAAUm15C,YAAY,SAASz15C,GAAG,OAAOY,KAAKmwL,OAAO/wL,EAAE,EAAEwB,EAAElB,UAAUo15C,sBAAsB,SAAS115C,EAAED,EAAEyB,EAAEN,GAAG,IAAI,IAAIP,KAAKC,KAAKmwL,OAAO,CAAC,IAAInvL,EAAEhB,KAAKmwL,OAAOpwL,GAAG,KAAKO,EAAEP,KAAKiB,EAAE89wB,WAAW99wB,EAAEw84C,OAAO5B,aAAaz84C,GAAG6B,EAAEw84C,OAAO5B,YAAYh74C,GAAG,CAAC,IAAI,IAAIvB,EAAE2B,EAAEw84C,OAAOx84C,GAAGA,EAAEw84C,OAAO5B,YAAYz84C,EAAE,GAAG,CAAC,IAAI2B,EAAEE,EAAEw84C,OAAO3B,SAAS764C,EAAEw84C,OAAO5B,YAAY,IAAI564C,EAAEhB,KAAKmwL,OAAOrvL,EAAE+jB,OAAO7jB,EAAE89wB,YAAYz/wB,EAAEyB,EAAG,CAAC,IAAI,IAAI0B,EAAEnD,EAAEmD,EAAEo54C,YAAYz84C,GAAG,GAAGC,GAAGoD,EAAEA,EAAEq54C,SAASr54C,EAAEo54C,YAAY,IAAI/23C,KAAK,CAACvkB,EAAEjB,EAAEwlB,KAAKxlB,EAAE,KAAK,CAAC,CAAC,CAAC,EAAEuB,EAAElB,UAAU605C,iBAAiB,SAASn15C,EAAED,GAAG,GAAGC,EAAEylB,OAAO7kB,KAAK8z5C,mBAAmB,CAAC,IAAIlz5C,EAAEZ,KAAK8z5C,mBAAmB105C,EAAEylB,KAAK,OAAOjkB,GAAGA,EAAE484C,OAAO5B,aAAaz84C,EAAEyB,EAAE,IAAI,CAAC,IAAI,IAAIN,EAAElB,EAAEw84C,YAAY,EAAEt74C,GAAGnB,EAAEmB,IAAI,CAAC,IAAIP,EAAEX,EAAEy84C,SAASv74C,GAAGU,EAAEhB,KAAK+05C,eAAeh15C,GAAG,GAAGiB,EAAE,OAAOA,CAAC,CAAC,EAAEJ,EAAElB,UAAUq15C,eAAe,SAAS315C,GAAG,IAAID,EAAEa,KAAKmwL,OAAO/wL,EAAEylB,KAAK,OAAO1lB,GAAGA,EAAE2/wB,UAAU3/wB,EAAEa,KAAKkwL,OAAO2huC,SAASzy5C,EAAEm7iC,UAAU11hC,IAAI,EAAEjkB,EAAElB,UAAUs15C,gBAAgB,SAAS515C,GAAG,IAAID,EAAE0D,KAAKuK,KAAKhO,EAAE2/B,MAAM/+B,KAAKyhwB,QAAQh0kB,UAAU,EAAE7sL,EAAEiC,KAAKuK,KAAKhO,EAAE4/B,OAAOh/B,KAAKyhwB,QAAQh0kB,UAAU,EAAEntL,EAAEuC,KAAKyK,MAAMnO,EAAEyB,EAAE,GAAGb,EAAE,iBAAiBC,KAAK6z5C,kBAAkBhx5C,KAAKgL,IAAI7N,KAAK6z5C,kBAAkBvz5C,GAAGA,EAAEN,KAAKkwL,OAAO4huC,WAAW/x5C,EAAG,EAAEa,EAAElB,UAAUu15C,eAAe,SAAS715C,GAAG,IAAID,EAAE0D,KAAKogD,OAAO7jD,QAAG,IAASY,KAAKk15C,SAAS915C,EAAEY,KAAKk15C,WAAW,KAAK,GAAGl15C,KAAKk15C,SAAS915C,EAAED,EAAE,CAAC,IAAIyB,EAAE,CAAC,EAAE,IAAI,IAAIN,KAAKN,KAAKmwL,OAAO,CAAC,IAAIpwL,EAAEC,KAAKmwL,OAAO7vL,GAAGP,EAAEy94C,OAAOz94C,EAAEy94C,OAAOvB,SAASl84C,EAAEy94C,OAAO5l4C,KAAKzY,GAAGyB,EAAEb,EAAEy94C,OAAO343C,KAAK9kB,CAAE,CAAC,IAAI,IAAIiB,KAAKhB,KAAKmwL,OAAOvvL,EAAEZ,KAAK2z5C,QAAQjn4C,aAAa1sB,KAAK2z5C,QAAQ3y5C,WAAWhB,KAAK2z5C,QAAQ3y5C,GAAG,IAAI,IAAI3B,KAAKW,KAAKmwL,OAAOnwL,KAAK205C,oBAAoBt15C,EAAEW,KAAKmwL,OAAO9wL,GAAI,CAAC,EAAEuB,EAAElB,UAAU6uE,OAAO,SAASpvE,GAAG,IAAImB,EAAEN,KAAK,GAAGA,KAAK4iI,UAAUzjI,EAAEa,KAAKyz5C,gBAAgBzz5C,KAAK+/8B,QAAQ,CAAC,IAAIhg9B,EAAEC,KAAKg15C,gBAAgB715C,GAAGa,KAAKi15C,eAAej15C,KAAK4iI,UAAU3jG,OAAOG,KAAKp/B,KAAK+z5C,cAAc,CAAC,EAAE/z5C,KAAKm15C,KAAKn15C,KAAKyhwB,QAAQ+7oB,OAAOz94C,EAAEZ,EAAEi25C,+BAA+Bp15C,KAAKyhwB,QAAQ+7oB,QAAQnu3C,KAAI,SAAUlwB,GAAG,OAAO,IAAIC,EAAE6i5C,iBAAiB9i5C,EAAE443C,UAAUpy3C,EAAExG,EAAEyY,KAAKzY,EAAE443C,UAAUpy3C,EAAExG,EAAE443C,UAAU9z3C,EAAE9E,EAAE443C,UAAU/03C,EAAG,KAAIjD,EAAEZ,EAAEk25C,cAAc,CAAC5nuC,SAASztL,KAAKyhwB,QAAQh0kB,SAASs1C,QAAQ/iO,KAAKyhwB,QAAQ1+hB,QAAQC,QAAQhjO,KAAKyhwB,QAAQz+hB,QAAQ6srC,UAAU7v5C,KAAKyhwB,QAAQoupB,UAAUb,kBAAkBhv5C,KAAKyhwB,QAAQutpB,oBAAoBhv5C,KAAKyhwB,QAAQ8tpB,UAAUxv5C,EAAEA,EAAE8sB,QAAO,SAAUztB,GAAG,OAAOkB,EAAEmhwB,QAAQ8tpB,QAAQnw5C,EAAG,MAAKW,EAAE,GAAG,IAAIiB,EAAE7B,EAAEm25C,kBAAkBt15C,KAAKyhwB,SAASpiwB,EAAEwD,KAAK8K,IAAI3M,EAAEJ,EAAE205C,eAAev15C,KAAKyhwB,QAAQ1+hB,SAASjiO,EAAE+B,KAAK8K,IAAI3M,EAAEJ,EAAE405C,gBAAgBx15C,KAAKyhwB,QAAQ1+hB,SAASvgO,EAAExC,KAAKy15C,qBAAqB115C,EAAEiB,GAAG,GAAGkP,GAAGlQ,KAAKyhwB,QAAQl1vB,MAAM,CAAC,IAAI,IAAI1L,EAAE,CAAC,EAAEwB,EAAE,CAAC,EAAEO,EAAE,EAAEE,EAAExD,OAAOgU,KAAK9Q,GAAGI,EAAEE,EAAEzC,OAAOuC,GAAG,EAAE,CAAC,IAAID,EAAEG,EAAEF,GAAGgB,EAAEpB,EAAEG,GAAGD,EAAE1C,KAAKmwL,OAAOxtL,GAAG,GAAGD,KAAKA,EAAEw84C,aAAax84C,EAAEw84C,aAAa9/4C,EAAEghS,QAAQ30Q,OAAO,CAAC,IAAIroB,EAAEpD,KAAKu05C,iBAAiB3w5C,EAAEvE,GAAG+D,IAAIpD,KAAK015C,SAASty5C,EAAEo64C,QAAQ384C,EAAEuC,EAAEo64C,OAAO343C,KAAKzhB,EAAEo64C,QAAQn74C,EAAEM,GAAGiB,CAAE,CAAC,CAAC,IAAI,IAAIzB,KAAKnC,KAAK805C,sBAAsBzy5C,EAAErB,EAAEF,EAAE0B,GAAG3B,EAAE2B,EAAEL,KAAKnC,KAAK+z5C,cAAc5x5C,IAAG,EAAGK,EAAEL,GAAGtB,EAAEsB,GAAI,CAAC,IAAI,IAAIc,KAAKT,EAAExC,KAAKmwL,OAAOltL,GAAGq94C,gBAAgB,IAAI,IAAIt94C,EAAE,EAAEiB,EAAE7E,EAAE0m5C,eAAe9l5C,KAAKmwL,OAAO3tL,GAAGQ,EAAEiB,EAAE5D,OAAO2C,GAAG,EAAE,CAAC,IAAIM,EAAEW,EAAEjB,GAAGO,EAAEvD,KAAKmwL,OAAO7sL,GAAGC,EAAEu74C,mBAAmBv74C,EAAE484C,iBAAiB584C,EAAEg94C,gBAAgBvg5C,KAAKqvB,IAAIsm4C,eAAepy5C,EAAEu74C,mBAAmBv74C,EAAE884C,sBAAsBrg5C,KAAK415C,YAAYty5C,EAAG,CAACtD,KAAK615C,8BAA+B,CAAC,EAAEj15C,EAAElB,UAAUo25C,uBAAuB,WAAW,IAAI,IAAI125C,KAAKY,KAAKmwL,OAAOnwL,KAAKmwL,OAAO/wL,GAAG+g5C,kBAAkBng5C,KAAK415C,YAAYx25C,EAAG,EAAEwB,EAAElB,UAAU+15C,qBAAqB,SAASr25C,EAAED,GAAG,IAAI,IAAImB,EAAE,CAAC,EAAEP,EAAE,CAAC,EAAEiB,EAAE6B,KAAK8K,IAAIxO,EAAEyB,EAAE205C,eAAev15C,KAAKyhwB,QAAQ1+hB,SAAS1jO,EAAEwD,KAAK8K,IAAIxO,EAAEyB,EAAE405C,gBAAgBx15C,KAAKyhwB,QAAQ1+hB,SAASjiO,EAAE,CAAC,EAAE0B,EAAE,EAAE3B,EAAEzB,EAAEoD,EAAE3B,EAAER,OAAOmC,GAAG,EAAE,CAAC,IAAIH,EAAExB,EAAE2B,GAAGI,EAAE5C,KAAK015C,SAASrz5C,GAAG/B,EAAE+B,EAAEwiB,KAAKxiB,EAAEO,EAAEk8wB,WAAW3/wB,EAAEa,KAAKyhwB,QAAQz+hB,UAAUliO,EAAEuB,EAAEwiB,KAAKxiB,EAAG,CAACrC,KAAK805C,sBAAsBh05C,EAAE3B,EAAEE,EAAEiB,GAAG,IAAI,IAAIwC,EAAE,EAAEH,EAAEvD,EAAE0D,EAAEH,EAAEtC,OAAOyC,GAAG,EAAE,CAAC,IAAIc,EAAEjB,EAAEG,GAAGJ,EAAE1C,KAAKmwL,OAAOvsL,EAAEihB,KAAK,IAAIniB,EAAEo8wB,UAAU,CAAC,GAAG3/wB,EAAE,EAAEa,KAAKyhwB,QAAQz+hB,QAAQ,CAAC,IAAI5/N,EAAEQ,EAAEo8B,SAAShgC,KAAKyhwB,QAAQz+hB,SAAS,GAAG7gO,EAAEnC,KAAK+6Z,QAAQ33Z,GAAG,GAAGjB,GAAGA,EAAE28wB,UAAU,CAACx+wB,EAAE8C,EAAEyhB,KAAKzhB,EAAE,QAAQ,CAAC,KAAM,CAAC,IAAIH,EAAEW,EAAEo8B,SAAShgC,KAAKyhwB,QAAQz+hB,SAAS,GAAG1iO,EAAE2C,EAAE,GAAG4hB,MAAMvkB,EAAE2C,EAAE,GAAG4hB,MAAMvkB,EAAE2C,EAAE,GAAG4hB,MAAMvkB,EAAE2C,EAAE,GAAG4hB,KAAK,QAAQ,CAAC,IAAI,IAAI7hB,EAAEN,EAAEy84C,eAAel74C,EAAEL,EAAEg44C,YAAY,EAAE334C,GAAGjD,IAAIiD,EAAE,CAAC,IAAIX,EAAEM,EAAEi44C,SAAS534C,GAAG,GAAGlE,EAAEuD,EAAEuhB,KAAK,MAAM,GAAG9kB,EAAEuD,EAAEuhB,MAAK,IAAKniB,EAAE1C,KAAK+6Z,QAAQz3Z,KAAKN,IAAIN,EAAE1C,KAAK015C,SAASpy5C,IAAIZ,IAAIpC,EAAEgD,EAAEuhB,KAAKvhB,EAAEN,EAAEN,EAAEy84C,eAAez84C,EAAEo8wB,WAAW,KAAK,CAAC,CAAC,CAAC,OAAOx+wB,CAAC,EAAEM,EAAElB,UAAUm25C,6BAA6B,WAAW,IAAI,IAAIz25C,KAAKY,KAAK8z5C,mBAAmB,CAAC,EAAE9z5C,KAAKmwL,OAAO,CAAC,IAAI,IAAIhxL,EAAE,GAAGyB,OAAE,EAAON,EAAEN,KAAKmwL,OAAO/wL,GAAGo+4C,OAAOl94C,EAAEs74C,YAAY,GAAG,CAAC,GAAGt74C,EAAEukB,OAAO7kB,KAAK8z5C,mBAAmB,CAAClz5C,EAAEZ,KAAK8z5C,mBAAmBxz5C,EAAEukB,KAAK,KAAK,CAAC1lB,EAAE0C,KAAKvB,EAAEukB,KAAK,IAAI9kB,EAAEO,EAAEu74C,SAASv74C,EAAEs74C,YAAY,GAAG,GAAGh74C,EAAEZ,KAAK+05C,eAAeh15C,GAAG,MAAMO,EAAEP,CAAE,CAAC,IAAI,IAAIiB,EAAE,EAAE3B,EAAEF,EAAE6B,EAAE3B,EAAEgB,OAAOW,GAAG,EAAEhB,KAAK8z5C,mBAAmBz05C,EAAE2B,IAAIJ,CAAE,CAAC,EAAEA,EAAElB,UAAUg25C,SAAS,SAASv25C,GAAG,IAAIyB,EAAEZ,KAAKmwL,OAAOhxL,EAAE0lB,KAAK,GAAGjkB,EAAE,OAAOA,GAAGA,EAAEZ,KAAKkwL,OAAO0huC,aAAazy5C,MAAMa,KAAK205C,oBAAoBx15C,EAAE0lB,IAAIjkB,GAAGA,EAAE484C,OAAOr+4C,EAAEa,KAAKimB,OAAOo33C,oBAAoBz84C,EAAEZ,KAAKqvB,IAAIrvB,KAAKqvB,IAAI+k7B,QAAQ,MAAMp08B,KAAK4z5C,aAAaz05C,EAAE0lB,OAAO6H,aAAa1sB,KAAK4z5C,aAAaz05C,EAAE0lB,aAAa7kB,KAAK4z5C,aAAaz05C,EAAE0lB,KAAK7kB,KAAK205C,oBAAoBx15C,EAAE0lB,IAAIjkB,KAAK,IAAIN,EAAE2S,QAAQrS,GAAG,OAAON,IAAIM,EAAE,IAAIxB,EAAEyz3C,KAAK1z3C,EAAEa,KAAKyhwB,QAAQh0kB,SAAStuL,EAAE+84C,mBAAmBl84C,KAAK+wM,UAAUnwM,EAAEZ,KAAKy05C,YAAYpx5C,KAAKrD,KAAKY,EAAEzB,EAAE0lB,IAAIjkB,EAAE+K,SAAS/K,GAAGA,EAAEg+4C,OAAO5+4C,KAAKmwL,OAAOhxL,EAAE0lB,KAAKjkB,EAAEN,GAAGN,KAAKyhwB,QAAQ6xnB,KAAK,IAAIl03C,EAAEuqB,MAAM,cAAc,CAAC+3J,KAAK9gL,EAAEq+J,MAAMr+J,EAAE484C,OAAOxuoC,SAAS,YAAYpuQ,GAAG,IAAI,EAAEA,EAAElB,UAAUi15C,oBAAoB,SAASv15C,EAAED,GAAG,IAAIyB,EAAEZ,KAAKZ,KAAKY,KAAK2z5C,UAAUjn4C,aAAa1sB,KAAK2z5C,QAAQv05C,WAAWY,KAAK2z5C,QAAQv05C,IAAI,IAAIkB,EAAEnB,EAAE+g5C,mBAAmB5/4C,IAAIN,KAAK2z5C,QAAQv05C,GAAGymB,YAAW,WAAYjlB,EAAE4z5C,YAAYp15C,EAAE,kBAAkBwB,EAAE+y5C,QAAQv05C,EAAI,GAAEkB,GAAI,EAAEM,EAAElB,UAAUk25C,YAAY,SAASx25C,GAAG,IAAID,EAAEa,KAAKmwL,OAAO/wL,GAAGD,IAAIA,EAAEy/4C,cAAc5+4C,KAAKmwL,OAAO/wL,GAAGY,KAAK2z5C,QAAQv05C,KAAKstB,aAAa1sB,KAAK2z5C,QAAQv05C,WAAWY,KAAK2z5C,QAAQv05C,IAAID,EAAEy/4C,KAAK,IAAIz/4C,EAAE2/wB,WAAW,cAAc3/wB,EAAEwM,MAAM3L,KAAKkwL,OAAO/qK,IAAIhmB,EAAEq+4C,OAAOr+4C,EAAEA,EAAE+g5C,qBAAqB/g5C,EAAEsqB,SAAQ,EAAGzpB,KAAKi05C,WAAW905C,GAAGa,KAAKu1M,YAAYp2M,KAAM,EAAEyB,EAAElB,UAAUgw5C,WAAW,WAAW,IAAI,IAAItw5C,KAAKY,KAAKg05C,uBAAsB,EAAGh05C,KAAK+/8B,SAAQ,EAAG//8B,KAAKmwL,OAAOnwL,KAAK415C,YAAYx25C,GAAGY,KAAKkwL,OAAOjvH,OAAQ,EAAErgE,EAAElB,UAAU6x5C,QAAQ,SAASpy5C,EAAEyB,EAAEN,GAAG,IAAIP,EAAEC,KAAKgB,EAAE,GAAG3B,EAAEW,KAAK4iI,UAAU,IAAIvjI,EAAE,OAAO2B,EAAE,IAAI,IAAIF,EAAER,EAAEjB,EAAE025C,uBAAuB525C,GAAGA,EAAEqD,EAAErD,EAAEkwB,KAAI,SAAUjwB,GAAG,OAAOC,EAAEmkY,gBAAgBpkY,EAAG,IAAGyB,EAAEC,EAAEuuB,KAAI,SAAUjwB,GAAG,OAAOC,EAAEmkY,gBAAgBpkY,EAAG,IAAGiD,EAAErC,KAAKm05C,SAASvx5C,EAAE,IAAIE,EAAE,IAAIH,GAAE,IAAKiB,GAAE,IAAKlB,EAAE,EAAEU,EAAEvC,EAAE6B,EAAEU,EAAE/C,OAAOqC,GAAG,EAAE,CAAC,IAAIP,EAAEiB,EAAEV,GAAGE,EAAEC,KAAKgL,IAAIjL,EAAET,EAAE8B,GAAGnB,EAAED,KAAKgL,IAAI/K,EAAEX,EAAEa,GAAGL,EAAEE,KAAK8K,IAAIhL,EAAER,EAAE8B,GAAGL,EAAEf,KAAK8K,IAAI/J,EAAEzB,EAAEa,EAAG,CAAC,IAAI,IAAIC,EAAE,SAAS9D,GAAG,IAAImB,EAAEP,EAAEowL,OAAO9tL,EAAElD,IAAI,IAAImB,EAAE6/4C,iBAAiB,CAAC,IAAIr/4C,EAAER,EAAEk94C,OAAO964C,EAAEG,KAAK6yF,IAAI,EAAEr2F,EAAEsgC,KAAKr/B,EAAEk94C,OAAO5B,aAAax44C,EAAExC,EAAEN,EAAE694C,aAAa/+4C,EAAEii5C,OAAO/g5C,EAAEmtL,SAAS/qL,EAAEP,EAAE,CAACrB,EAAE264C,aAAa,IAAIr84C,EAAE2i5C,mBAAmBn/4C,EAAEE,IAAIhC,EAAE264C,aAAa,IAAIr84C,EAAE2i5C,mBAAmBp/4C,EAAEiB,KAAK,GAAGzB,EAAE,GAAG8B,EAAEb,EAAEhE,EAAEii5C,QAAQl/4C,EAAE,GAAGa,EAAEI,EAAEhE,EAAEii5C,QAAQl/4C,EAAE,GAAG8B,EAAEb,GAAG,GAAGjB,EAAE,GAAGa,EAAEI,GAAG,EAAE,CAAC,IAAIH,EAAET,EAAE6sB,KAAI,SAAUjwB,GAAG,OAAO0B,EAAE264C,aAAar84C,EAAG,IAAG4D,EAAEnC,EAAEwuB,KAAI,SAAUjwB,GAAG,OAAO0B,EAAE264C,aAAar84C,EAAG,IAAG4B,EAAEa,KAAK,CAAC6/K,KAAKphL,EAAEk94C,OAAO184C,EAAEo94C,cAAcj74C,EAAEm74C,oBAAoBp74C,EAAE8+F,MAAMp/F,GAAI,CAAC,CAAC,EAAEM,EAAE,EAAEA,EAAEX,EAAEhC,OAAO2C,IAAIC,EAAED,GAAG,OAAOhC,CAAC,EAAEJ,EAAElB,UAAUs25C,sBAAsB,SAAS525C,GAAG,IAAI,IAAID,EAAEa,KAAKY,EAAEZ,KAAKo05C,iBAAiBh15C,GAAGiwB,KAAI,SAAUjwB,GAAG,OAAOD,EAAEgxL,OAAO/wL,GAAGo+4C,MAAO,IAAGl94C,EAAE,EAAEP,EAAEa,EAAEN,EAAEP,EAAEM,OAAOC,GAAG,EAAE,CAAC,IAAIU,EAAEjB,EAAEO,GAAGU,EAAEi15C,UAAUj25C,KAAK4iI,UAAUyuxC,mBAAmBrw5C,EAAEm74C,cAAe,CAAC,OAAOv74C,CAAC,EAAEA,EAAElB,UAAU439B,cAAc,WAAW,GAAGt39B,KAAKyhwB,QAAQ61N,gBAAgB,OAAO,EAAG,GAAGpn9B,GAAGlQ,KAAKyhwB,QAAQl1vB,MAAM,IAAI,IAAIpN,KAAKa,KAAKmwL,OAAO,CAAC,IAAIvvL,EAAEZ,KAAKmwL,OAAOhxL,GAAG,QAAG,IAASyB,EAAEs+4C,aAAat+4C,EAAEs+4C,aAAa9/4C,EAAEghS,QAAQ30Q,MAAM,OAAO,CAAE,CAAC,OAAO,CAAE,EAAE7qB,EAAElB,UAAU494C,gBAAgB,SAASl+4C,EAAED,EAAEyB,GAAGZ,KAAKimB,OAAO+mB,YAAY5tC,EAAEA,GAAG,oBAAoBD,EAAEyB,EAAG,EAAEA,EAAElB,UAAU094C,mBAAmB,SAASh+4C,EAAED,EAAEyB,GAAGZ,KAAKimB,OAAOm33C,mBAAmBh+4C,EAAEA,GAAG,oBAAoBD,EAAEyB,EAAG,EAAEA,EAAElB,UAAUgy5C,gBAAgB,SAASty5C,EAAED,GAAG,OAAOa,KAAKimB,OAAOq+F,SAASllH,EAAEA,GAAG,oBAAoBD,EAAE,EAAEyB,EAAElB,UAAU8g5C,gBAAgB,SAASph5C,EAAED,EAAEyB,GAAG,IAAIN,EAAEN,KAAKmwL,OAAO/wL,GAAGkB,GAAGA,EAAEkg5C,gBAAgBrh5C,EAAEyB,EAAG,EAAEA,EAAElB,UAAUw25C,2BAA2B,SAAS925C,EAAED,GAAG,IAAI,IAAIyB,KAAKZ,KAAKmwL,OAAOnwL,KAAKmwL,OAAOvvL,GAAG6/4C,cAAcrh5C,EAAED,IAAIa,KAAKw05C,YAAY5z5C,EAAE,aAAaZ,KAAKkwL,OAAOrjK,QAAO,SAAUjsB,GAAG,OAAQA,EAAE6/4C,cAAcrh5C,EAAED,EAAG,GAAG,EAAEyB,CAAC,CAA3uY,CAA6uYxB,EAAEmi5C,SAAS,SAAS3y4C,GAAGxP,EAAED,GAAG,IAAIyB,EAAEiC,KAAKmjH,IAAI,EAAE5mH,EAAEwY,QAAQxY,EAAEwY,KAAK,GAAGtX,EAAEuC,KAAKmjH,IAAI,EAAE7mH,EAAEyY,QAAQzY,EAAEyY,KAAK,GAAG,OAAOxY,EAAEw84C,YAAYz84C,EAAEy84C,aAAat74C,EAAEM,GAAGzB,EAAE443C,UAAU/03C,EAAE5D,EAAE243C,UAAU/03C,GAAG7D,EAAE443C,UAAU9z3C,EAAE7E,EAAE243C,UAAU9z3C,CAAC,CAAC,SAASiM,GAAG9Q,GAAG,MAAO,WAAWA,GAAG,UAAUA,GAAG,UAAUA,CAAC,CAAC,SAASiP,KAAK,OAAO,IAAIjP,EAAE8C,OAAOs1B,OAAOhgB,GAAGsiE,UAAU,CAAC5qE,GAAGqm5C,eAAe,GAAGrm5C,GAAGsm5C,gBAAgB,EAAE,IAAIln5C,GAAG,iCAAiCZ,GAAG,WAAW1N,KAAKypJ,OAAO,CAAC,CAAE,EAAE/7I,GAAGhO,UAAUgv5C,QAAQ,SAAStv5C,GAAG,IAAIY,KAAKm25C,QAAQ,IAAIn25C,KAAKm25C,QAAQ,GAAGn25C,KAAKm25C,QAAQ915C,OAAOqN,GAAG0o5C,aAAap25C,KAAKm25C,QAAQt05C,KAAK,IAAIwM,IAAI,OAAOrO,KAAKypJ,OAAOrqJ,IAAG,EAAGY,KAAKm25C,QAAQp05C,OAAO,EAAE2L,GAAGhO,UAAU0+H,QAAQ,SAASh/H,UAAUY,KAAKypJ,OAAOrqJ,GAAG,IAAIY,KAAKq25C,cAAcr25C,KAAKm25C,QAAQjx4C,SAAQ,SAAU9lB,GAAGA,EAAEwoQ,WAAa,IAAG5nQ,KAAKm25C,QAAQ,KAAM,EAAEzo5C,GAAGhO,UAAU425C,YAAY,WAAW,QAASt25C,KAAKypJ,OAAOn7I,GAAG,EAAEZ,GAAGhO,UAAU225C,UAAU,WAAW,OAAO/25C,OAAOgU,KAAKtT,KAAKypJ,QAAQppJ,MAAM,EAAE,IAAI8P,GAAGpC,GAAGlL,KAAKyK,MAAMlO,EAAEghS,QAAQ8vlC,oBAAoB,GAAG,SAASnh3C,KAAK,OAAOoB,KAAKA,GAAG,IAAIzC,IAAIyC,EAAE,CAAC,SAAShB,GAAGhQ,EAAEyB,GAAG,IAAIN,EAAE,CAAC,EAAE,IAAI,IAAIP,KAAKZ,EAAE,QAAQY,IAAIO,EAAEP,GAAGZ,EAAEY,IAAI,OAAOX,EAAE6n5C,cAAc/h4C,SAAQ,SAAU9lB,GAAGA,KAAKwB,IAAIN,EAAElB,GAAGwB,EAAExB,GAAK,IAAGkB,CAAC,CAAC,SAAS2O,GAAG7P,GAAGA,EAAEA,EAAE2C,QAAQ,IAAI,IAAI5C,EAAEG,OAAOY,OAAO,MAAMU,EAAE,EAAEA,EAAExB,EAAEiB,OAAOO,IAAIzB,EAAEC,EAAEwB,GAAG2qB,IAAInsB,EAAEwB,GAAG,IAAI,IAAIN,EAAE,EAAEA,EAAElB,EAAEiB,OAAOC,IAAI,QAAQlB,EAAEkB,KAAKlB,EAAEkB,GAAG6O,GAAG/P,EAAEkB,GAAGnB,EAAEC,EAAEkB,GAAGshC,OAAO,OAAOxiC,CAAC,CAACsO,GAAG0o5C,YAAYvz5C,KAAK8K,IAAI9K,KAAKgL,IAAIE,GAAG,GAAG,GAAG,IAAIS,GAAG,CAAC81Z,SAAS,WAAWohW,SAAS,WAAWD,YAAY,cAAc45nB,iBAAiB,mBAAmBC,kBAAkB,oBAAoB991B,UAAU,YAAY+03B,UAAU,YAAYpM,aAAa,eAAeqM,qBAAqB,uBAAuBC,kBAAkB,oBAAoBC,iBAAiB,mBAAmB113C,UAAU,YAAYG,QAAQ,UAAUw13C,WAAW,aAAaC,SAAS,WAAWC,UAAU,YAAYC,UAAU,YAAYp4B,cAAc,gBAAgBmvB,SAAS,YAAY,SAASx94C,GAAGjR,EAAED,EAAEyB,GAAGA,EAAEiB,KAAK,CAACkrsC,QAAQv+rC,GAAG+n5C,UAAUl/2C,KAAK,CAACj4C,EAAED,EAAEC,KAAM,CAAC,SAAS+O,GAAG/O,EAAED,EAAEyB,GAAGzB,EAAE0C,KAAK,CAACkrsC,QAAQv+rC,GAAG274C,aAAa9y2C,KAAK,CAACj4C,KAAKwB,EAAExB,IAAG,CAAG,CAAC,SAASwQ,GAAGxQ,EAAED,EAAEyB,EAAEN,GAAG6N,GAAG/O,EAAEwB,EAAEN,GAAG+P,GAAGjR,EAAED,EAAEyB,EAAG,CAAC,SAAS8N,GAAGvP,EAAEyB,EAAEN,GAAG,IAAIP,EAAE,IAAIA,KAAKZ,EAAEmB,GAAG,GAAGnB,EAAEmB,GAAGX,eAAeI,IAAI,SAASA,IAAIX,EAAE2iK,UAAU5iK,EAAEmB,GAAGP,GAAGa,EAAEN,GAAGP,IAAI,OAAO,EAAG,IAAIA,KAAKa,EAAEN,GAAG,GAAGM,EAAEN,GAAGX,eAAeI,IAAI,SAASA,IAAIX,EAAE2iK,UAAU5iK,EAAEmB,GAAGP,GAAGa,EAAEN,GAAGP,IAAI,OAAO,EAAG,OAAO,CAAE,CAAC,SAASwO,GAAGpP,EAAEyB,EAAEN,EAAEP,EAAEiB,EAAE3B,GAAG,IAAIyB,EAAE,IAAIA,KAAKF,EAAEA,GAAG,CAAC,EAAEzB,EAAEA,GAAG,CAAC,EAAEA,EAAEQ,eAAemB,KAAK1B,EAAE2iK,UAAU5iK,EAAE2B,GAAGF,EAAEE,KAAKR,EAAEuB,KAAK,CAACkrsC,QAAQ1tsC,EAAEg4C,KAAK,CAACt3C,EAAEe,EAAEF,EAAEE,GAAGE,MAAM,IAAIF,KAAKF,EAAEA,EAAEjB,eAAemB,KAAK3B,EAAEQ,eAAemB,KAAK1B,EAAE2iK,UAAU5iK,EAAE2B,GAAGF,EAAEE,KAAKR,EAAEuB,KAAK,CAACkrsC,QAAQ1tsC,EAAEg4C,KAAK,CAACt3C,EAAEe,EAAEF,EAAEE,GAAGE,KAAM,CAAC,SAAS8N,GAAG1P,GAAG,OAAOA,EAAEmsB,EAAE,CAAC,SAASlc,GAAGjQ,EAAED,GAAG,OAAOC,EAAED,EAAEosB,IAAIpsB,EAAEC,CAAC,CAAC,IAAI4P,GAAG,SAAS5P,EAAED,GAAGa,KAAKihE,MAAM7hE,EAAED,EAAG,EAAE6P,GAAGtP,UAAUuhE,MAAM,SAAS7hE,EAAED,GAAGa,KAAKsrC,OAAOlsC,GAAG,GAAGY,KAAK+25C,WAAW,CAAC,GAAG,IAAI,IAAIn25C,EAAE,EAAEA,EAAEZ,KAAKsrC,OAAOjrC,OAAOO,IAAIZ,KAAK+25C,WAAWn25C,GAAGZ,KAAK+25C,WAAWn25C,EAAE,GAAGZ,KAAKsrC,OAAO1qC,GAAGm5V,KAAK/5V,KAAKsrC,OAAO1qC,EAAE,IAAIZ,KAAKK,OAAOL,KAAK+25C,WAAW/25C,KAAK+25C,WAAW125C,OAAO,GAAGL,KAAKk4H,QAAQr1H,KAAKgL,IAAI1O,GAAG,EAAE,GAAGa,KAAKK,QAAQL,KAAK4z0B,aAAa5z0B,KAAKK,OAAO,EAAEL,KAAKk4H,OAAQ,EAAElpH,GAAGtP,UAAU+4V,KAAK,SAASt5V,GAAG,GAAG,IAAIa,KAAKsrC,OAAOjrC,OAAO,OAAOL,KAAKsrC,OAAO,GAAGnsC,EAAEC,EAAEs5V,MAAMv5V,EAAE,EAAE,GAAG,IAAI,IAAIyB,EAAE,EAAEN,EAAEN,KAAK+25C,WAAWn25C,GAAGb,EAAEZ,EAAEa,KAAK4z0B,aAAa5z0B,KAAKk4H,QAAQ53H,EAAEP,GAAGa,EAAEZ,KAAK+25C,WAAW125C,QAAQC,EAAEN,KAAK+25C,aAAan25C,GAAG,IAAII,EAAEJ,EAAE,EAAEvB,EAAEW,KAAK+25C,WAAW/15C,GAAGF,EAAER,EAAEjB,EAAEmD,EAAE1B,EAAE,GAAGf,EAAEV,GAAGyB,EAAE,EAAE,OAAOd,KAAKsrC,OAAOtqC,GAAG+t3C,KAAK,EAAEvs3C,GAAG2iB,IAAInlB,KAAKsrC,OAAO1qC,GAAGmu3C,KAAKvs3C,GAAG,EAAE,IAAI4M,GAAG,SAAShQ,EAAED,EAAEyB,GAAG,IAAIN,EAAEN,KAAKg35C,SAAS,GAAGj35C,EAAEC,KAAKi35C,YAAY,GAAGj35C,KAAKk35C,WAAWr05C,KAAKuK,KAAKhO,EAAEwB,GAAGZ,KAAKm35C,WAAWt05C,KAAKuK,KAAKjO,EAAEyB,GAAG,IAAI,IAAII,EAAE,EAAEA,EAAEhB,KAAKk35C,WAAWl35C,KAAKm35C,WAAWn25C,IAAIV,EAAEuB,KAAK,IAAI9B,EAAE8B,KAAK,IAAI7B,KAAKo35C,WAAW,GAAGp35C,KAAKq35C,QAAQ,GAAGr35C,KAAKytxB,OAAO,GAAGztxB,KAAKs35C,QAAQ,GAAGt35C,KAAK++B,MAAM3/B,EAAEY,KAAKg/B,OAAO7/B,EAAEa,KAAKsjO,OAAOtjO,KAAKk35C,WAAW935C,EAAEY,KAAKujO,OAAOvjO,KAAKm35C,WAAWh45C,EAAEa,KAAKu35C,OAAO,EAAEv35C,KAAKw35C,UAAU,CAAE,EAAE,SAAS7n5C,GAAGxQ,EAAEyB,EAAEN,EAAEP,EAAEiB,GAAG,IAAI3B,EAAED,EAAEc,SAAS,OAAOU,GAAGxB,EAAE0iG,MAAMziG,EAAEA,EAAE,CAAC,EAAE2B,EAAE,EAAEA,EAAE,IAAIV,GAAGlB,EAAE23H,QAAQ13H,EAAEA,EAAEU,EAAE4uO,QAAQvvO,EAAEooN,SAASnoN,EAAEU,EAAE035C,iBAAiBt45C,GAAGE,CAAC,CAAC,SAAS+Q,GAAGjR,EAAEyB,EAAEN,EAAEP,EAAEiB,GAAG,GAAGJ,EAAE,CAAC,IAAIvB,EAAED,EAAEmxB,MAAMpxB,GAAG,OAAOC,EAAE0iG,MAAMziG,EAAEA,EAAE,CAAC2B,EAAEA,EAAE,IAAIV,GAAGlB,EAAE23H,QAAQ13H,EAAEA,GAAGU,EAAE4uO,OAAOtvO,CAAC,CAAC,OAAOU,EAAE235C,aAAa,CAAC,SAASpn5C,GAAGnR,EAAEyB,GAAG,IAAIN,EAAE,CAACnB,EAAE8E,EAAE9E,EAAE6D,EAAE,EAAE,GAAGmE,GAAG7G,EAAEA,EAAEM,GAAG,IAAIb,EAAEO,EAAE,GAAG,MAAO,CAAC60I,MAAM,IAAI/1I,EAAEoqC,MAAMlpC,EAAE,GAAGP,EAAEO,EAAE,GAAGP,GAAG435C,yBAAyB535C,EAAE,CAAC,SAAS2G,GAAGtH,EAAED,GAAG,MAAO,GAAGC,EAAED,EAAE,EAAE,CAAC,SAASoH,GAAGnH,EAAED,GAAG,IAAIyB,EAAExB,EAAE,GAAGA,EAAE,GAAGkB,EAAElB,EAAE,GAAGA,EAAE,GAAG,OAAOwB,IAAIzB,EAAE,IAAIyB,GAAGzB,EAAE,IAAImB,IAAInB,EAAE,IAAImB,GAAGnB,EAAE,EAAE,CAAC,SAAS4H,GAAG5H,EAAEyB,EAAEN,EAAEP,EAAEiB,EAAE3B,EAAEyB,EAAE0B,GAAG,IAAI3B,EAAEd,EAAEZ,EAAEq04C,aAAar04C,EAAEw14C,aAAaty4C,EAAEjD,EAAEsy4C,oBAAoB7w4C,EAAEP,EAAEsiI,UAAUjjG,MAAM/8B,EAAE,CAAC,IAAItC,EAAEy+B,MAAM,EAAE,EAAE,IAAIz+B,EAAE0+B,OAAO,EAAE,GAAGl8B,EAAE/C,EAAEZ,EAAEixB,KAAK0j3C,yBAAyB304C,EAAEsxO,KAAKqjqC,yBAAyBhx4C,EAAEkiB,QAAQ,IAAI,IAAIriB,EAAExD,EAAEg24C,gBAAgBvx4C,EAAE7D,EAAEZ,EAAEixB,KAAKuj3C,kBAAkBx04C,EAAEsxO,KAAKkjqC,kBAAkBjx4C,EAAEpC,EAAEsiI,UAAU7jG,MAAMz+B,EAAEsiI,UAAU5jG,OAAO57B,GAAE,EAAGjB,EAAE,EAAEA,EAAEyB,EAAEvD,OAAO8B,IAAI,CAAC,IAAIc,EAAEW,EAAET,IAAIhB,GAAG,GAAGc,EAAEqghB,QAAQrghB,EAAE6+3C,cAAc1i4C,EAAEuk5C,YAAYn62B,WAAWpmiB,EAAE4D,GAAG/D,EAAEu+3C,UAAU1+3C,OAAQ,CAACM,GAAE,EAAG,IAAIJ,EAAE,CAACC,EAAEw4O,QAAQx4O,EAAEy4O,QAAQ,EAAE,GAAG,GAAGt8O,EAAEukvC,cAAc3gvC,EAAEA,EAAEpC,GAAG2F,GAAGvD,EAAEJ,GAAG,CAAC,IAAIqB,EAAEyC,GAAGpG,EAAEsiI,UAAUklwC,uBAAuB9k4C,EAAE,IAAIM,EAAElE,EAAEqy4C,uBAAuB5w4C,EAAEwB,EAAEY,GAAGM,EAAEzC,EAAEwC,EAAEW,EAAEX,EAAEW,EAAEC,EAAE,IAAI9E,EAAEoqC,MAAMvmC,EAAEw4O,QAAQx4O,EAAEy4O,SAASh3O,EAAE4L,GAAGpM,EAAElD,GAAGm0I,MAAMtxI,EAAE,CAAC,EAAEiB,EAAEmC,GAAGhE,EAAEM,GAAE,EAAGf,EAAE5B,EAAEI,EAAE3B,EAAEF,EAAE+14C,iBAAiBvy4C,EAAEG,EAAE4B,EAAER,EAAEL,EAAEnB,GAAGU,EAAE0B,EAAE8y5C,aAAa9y5C,EAAE+y5C,eAAez05C,GAAG0B,EAAEgz5C,eAAe7w5C,GAAGhE,EAAEM,GAAE,EAAGf,EAAE5B,EAAEI,EAAE3B,EAAEF,EAAE+14C,iBAAiBvy4C,EAAEG,EAAE4B,EAAER,EAAEL,EAAEnB,GAAGm15C,gBAAgB7w5C,GAAG/D,EAAEu+3C,UAAU1+3C,EAAG,MAAMkE,GAAG/D,EAAEu+3C,UAAU1+3C,EAAG,CAAC,CAAC/C,EAAEZ,EAAEixB,KAAK4j3C,0BAA0Brh1B,WAAW7vjB,GAAG3D,EAAEsxO,KAAKujqC,0BAA0Brh1B,WAAW7vjB,EAAG,CAAC,SAASgE,GAAG1H,EAAED,EAAEyB,EAAEN,EAAEP,EAAEiB,EAAE3B,EAAEyB,EAAE0B,EAAE3B,EAAEwB,GAAG,IAAIO,EAAE9B,EAAEyg4C,gBAAgBzg4C,EAAE0g4C,UAAU1+3C,EAAEhC,EAAE6qP,eAAehpP,EAAE7B,EAAE6qP,eAAe7qP,EAAEkiY,WAAWp/X,EAAEzE,EAAEsk4C,WAAW3i4C,EAAEyg4C,iBAAiB7+3C,EAAEvD,EAAEsk4C,WAAW7g4C,EAAE,GAAGQ,EAAE8D,GAAG9H,EAAEwE,EAAEhD,EAAEN,EAAEP,EAAEiB,EAAE3B,EAAEyB,EAAEu2a,QAAQv0a,EAAEH,EAAEH,EAAE3B,EAAEwB,GAAG,IAAIe,EAAE,OAAO,KAAK,IAAIjB,EAAE+E,GAAG9H,EAAEsD,EAAE9B,EAAEN,EAAEP,EAAEiB,EAAE3B,EAAEyB,EAAEu2a,QAAQv0a,EAAEH,EAAEH,EAAE3B,EAAEwB,GAAG,OAAOF,EAAE,CAACuiB,MAAMthB,EAAEuhB,KAAKxiB,GAAG,IAAI,CAAC,SAAS0E,GAAG1H,EAAEyB,EAAEN,EAAEP,GAAG,OAAOZ,IAAIC,EAAEuk5C,YAAYh7uB,YAAY9lqB,KAAKmjH,IAAI1lH,EAAE0C,EAAEpC,EAAEoC,GAAGH,KAAKmjH,IAAI1lH,EAAE2D,EAAErD,EAAEqD,GAAGlE,EAAE,CAAC635C,aAAY,IAAKz45C,IAAIC,EAAEuk5C,YAAYn62B,SAAS5oiB,EAAEoC,EAAE1C,EAAE0C,EAAEpC,EAAEqD,EAAE3D,EAAE2D,GAAG,CAAC6z5C,eAAc,GAAI,IAAI,CAAC,SAAS7w5C,GAAG9H,EAAEyB,EAAEN,EAAEP,EAAEiB,EAAE3B,EAAEyB,EAAE0B,EAAE3B,EAAEwB,EAAEO,EAAEE,EAAEH,EAAEiB,GAAG,IAAIlB,EAAEU,EAAExC,EAAE,GAAGuB,EAAEhD,EAAEyi4C,YAAYx+3C,EAAEH,EAAE9D,EAAE0i4C,YAAYz+3C,EAAE,GAAGjE,EAAEqi4C,UAAU,EAAE,CAAC,IAAIx+3C,EAAE7D,EAAEoi4C,gBAAgBpi4C,EAAEqi4C,UAAUv93C,EAAE9E,EAAEwsP,eAAeroP,EAAEnE,EAAEwsP,eAAexsP,EAAE6jY,WAAWz/X,EAAEuD,GAAG1D,EAAEZ,EAAEL,EAAEc,EAAE3C,EAAEsC,EAAEE,EAAE3D,EAAE0B,EAAExB,EAAEsD,GAAG,IAAIY,EAAE,MAAO,CAACs05C,eAAc,GAAI,IAAI3z5C,EAAEoM,GAAG/M,EAAEmhB,MAAMywH,MAAMr0I,GAAGq0I,MAAMzwI,EAAE4L,GAAG/M,EAAEohB,KAAKwwH,MAAMr0I,GAAGq0I,MAAM,GAAGp1I,IAAIO,EAAE,CAAC,IAAIuD,EAAEgD,GAAG1H,EAAE2i4C,YAAY593C,EAAEQ,EAAEd,GAAG,GAAGC,EAAE,OAAOA,CAAC,CAACnB,EAAE,CAACa,EAAEmhB,OAAO,IAAI,IAAI5f,EAAE3F,EAAEoi4C,gBAAgB,EAAEz83C,EAAE9B,EAAE,EAAE8B,IAAIpC,EAAEb,KAAKqF,GAAG9D,EAAEZ,EAAEih4C,WAAW3+3C,GAAG3C,EAAEc,EAAE3C,EAAEsC,EAAEE,EAAE3D,EAAEk4a,QAAQpza,EAAEX,EAAEzC,EAAExB,EAAEsD,IAAID,EAAEb,KAAK0B,EAAEohB,KAAM,KAAM,CAAC,GAAG5kB,IAAIO,EAAE,CAAC,IAAIkD,EAAE8M,GAAGxN,EAAE9B,GAAGm0I,MAAMhxI,EAAEhF,EAAEwsP,eAAexsP,EAAEk4a,QAAQ,EAAE1xa,EAAE,IAAIvG,EAAEoqC,MAAM3oC,EAAE6i4C,KAAKv/3C,GAAGtD,EAAE8i4C,KAAKx/3C,IAAIoB,EAAE+K,GAAG3K,EAAE3E,GAAG6D,EAAEU,EAAEoy5C,yBAAyB,EAAEpy5C,EAAE4vI,MAAMxuI,GAAG7D,EAAE6C,EAAEnC,EAAE,EAAExC,GAAG6E,EAAEgB,GAAG1H,EAAE2i4C,YAAYt+3C,EAAEqB,EAAEjB,GAAG,GAAGiC,EAAE,OAAOA,CAAC,CAAC,IAAIxB,EAAE6C,GAAG9D,EAAEZ,EAAEih4C,WAAWtk4C,EAAEoi4C,iBAAiBp/3C,EAAEc,EAAE3C,EAAEsC,EAAEE,EAAE3D,EAAEk4a,QAAQl4a,EAAEwsP,eAAexsP,EAAEwsP,eAAexsP,EAAE6jY,WAAWniY,EAAExB,EAAEsD,GAAG,IAAI0B,EAAE,MAAO,CAACwz5C,eAAc,GAAIn15C,EAAE,CAAC2B,EAAG,CAAC,IAAI,IAAIC,EAAE,EAAEZ,EAAEhB,EAAE4B,EAAEZ,EAAErD,OAAOiE,GAAG,EAAE,CAAC,IAAIyB,EAAErC,EAAEY,GAAGlF,EAAEw44C,qBAAqBv14C,EAAE0D,EAAEovI,MAAMpvI,EAAE4oO,MAAO,CAAC,MAAO,CAAC,CAAC,CAAC,SAAShoO,GAAGvH,EAAED,EAAEyB,EAAEN,EAAEP,GAAG,IAAIiB,EAAEsP,GAAGlR,EAAE+lB,IAAI/lB,EAAE81B,IAAI/1B,GAAGow3C,SAASxv3C,GAAGo1I,MAAM91I,EAAEuB,EAAEs0B,IAAIl0B,GAAG,OAAOJ,EAAEukB,IAAI9lB,EAAE2v3C,MAAM1u3C,EAAEjB,EAAE6mL,OAAO,CAAC,SAASh/K,GAAG/H,EAAEyB,EAAEN,EAAEP,EAAEiB,EAAE3B,EAAEyB,EAAE0B,EAAE3B,EAAEwB,EAAEO,EAAEE,GAAG,IAAIH,EAAE5C,EAAEZ,EAAEyB,EAAEzB,EAAEyB,EAAEgD,EAAEjB,EAAE,EAAE,GAAG,EAAED,EAAE,EAAE3C,IAAI6D,IAAI,EAAElB,EAAEG,KAAKsmC,IAAIvlC,EAAE,IAAIlB,GAAGG,KAAKsmC,IAAI,IAAI,IAAI/lC,EAAEQ,EAAE,EAAEpB,EAAE1B,EAAE0B,EAAE1B,EAAE,EAAEqB,EAAEnB,EAAEiC,EAAEjC,EAAEgC,EAAE,EAAEiB,EAAE,EAAEX,EAAET,KAAKmjH,IAAIrjH,GAAGY,EAAE,GAAGP,EAAEiB,GAAGX,GAAG,CAAC,IAAIF,GAAGQ,GAAGpB,GAAGY,GAAGvC,EAAE,OAAO,KAAK,GAAGoC,EAAEd,EAAEoB,EAAE1B,KAAKM,QAAG,KAAUA,EAAEW,EAAEM,IAAI,CAAC,IAAIc,EAAE,IAAI9E,EAAEoqC,MAAMnnC,EAAEqh4C,KAAKtg4C,GAAGf,EAAEsh4C,KAAKvg4C,IAAIsB,EAAE4L,GAAGpM,EAAEtB,GAAG,GAAG8B,EAAEiz5C,yBAAyB,EAAEx15C,EAAEW,EAAEM,GAAGsB,EAAEywI,UAAW,CAAC,IAAItxI,EAAET,EAAEQ,EAAEzB,EAAEwE,GAAG,IAAI3D,EAAE3D,EAAE,IAAID,EAAEoqC,MAAMnnC,EAAEqh4C,KAAK7/3C,GAAGxB,EAAEsh4C,KAAK9/3C,IAAIK,EAAEjB,EAAEK,EAAEN,EAAE,EAAEJ,EAAG,CAAC,CAACI,GAAGiB,EAAEA,EAAEhB,EAAE82V,KAAK53V,EAAG,CAAC,IAAI2C,GAAGxB,EAAEN,GAAGiB,EAAET,EAAErB,EAAE+yB,IAAIjyB,GAAGkB,EAAEX,EAAEur3C,KAAKjq3C,GAAGmiI,KAAKhkI,GAAGkB,EAAE8iI,KAAKzjI,EAAE+r3C,QAAQE,QAAQT,MAAM1u3C,EAAEsD,IAAI,IAAI+B,EAAEjD,EAAEG,KAAK0xH,MAAMpyH,EAAEa,EAAEC,EAAED,EAAEb,EAAE8B,EAAEhB,EAAEgB,GAAG,OAAOV,EAAE1B,KAAKsC,GAAG,CAACgxI,MAAMhxI,EAAEwqO,MAAMhpO,EAAE0wB,KAAK9yB,EAAE,CAAC6L,GAAG1P,UAAUq45C,WAAW,WAAW,OAAO/35C,KAAKq35C,QAAQh35C,OAAOL,KAAKo35C,WAAW/25C,MAAM,EAAE+O,GAAG1P,UAAUq7P,OAAO,SAAS37P,EAAED,EAAEyB,EAAEN,EAAEP,GAAGC,KAAK+73C,aAAa583C,EAAEyB,EAAEN,EAAEP,EAAEC,KAAKg45C,eAAeh45C,KAAKu35C,UAAUv35C,KAAKq35C,QAAQx15C,KAAKzC,GAAGY,KAAKytxB,OAAO5rxB,KAAK1C,GAAGa,KAAKytxB,OAAO5rxB,KAAKjB,GAAGZ,KAAKytxB,OAAO5rxB,KAAKvB,GAAGN,KAAKytxB,OAAO5rxB,KAAK9B,EAAG,EAAEqP,GAAG1P,UAAUu45C,aAAa,SAAS745C,EAAED,EAAEyB,EAAEN,GAAGN,KAAK+73C,aAAa583C,EAAEmB,EAAEM,EAAEN,EAAEnB,EAAEmB,EAAEM,EAAEN,EAAEN,KAAKk45C,kBAAkBl45C,KAAKw35C,aAAax35C,KAAKo35C,WAAWv15C,KAAKzC,GAAGY,KAAKs35C,QAAQz15C,KAAK1C,GAAGa,KAAKs35C,QAAQz15C,KAAKjB,GAAGZ,KAAKs35C,QAAQz15C,KAAKvB,EAAG,EAAE8O,GAAG1P,UAAUs45C,eAAe,SAAS545C,EAAED,EAAEyB,EAAEN,EAAEP,EAAEiB,GAAGhB,KAAKg35C,SAASj35C,GAAG8B,KAAKb,EAAG,EAAEoO,GAAG1P,UAAUw45C,kBAAkB,SAAS945C,EAAED,EAAEyB,EAAEN,EAAEP,EAAEiB,GAAGhB,KAAKi35C,YAAYl35C,GAAG8B,KAAKb,EAAG,EAAEoO,GAAG1P,UAAUy45C,OAAO,SAAS/45C,EAAED,EAAEyB,EAAEN,EAAEP,EAAEiB,GAAG,GAAGJ,EAAE,GAAGxB,EAAEY,KAAK++B,OAAOz+B,EAAE,GAAGnB,EAAEa,KAAKg/B,OAAO,OAAQj/B,GAAG,GAAG,IAAIV,EAAE,GAAG,GAAGD,GAAG,GAAGD,GAAG,GAAGa,KAAK++B,OAAOn+B,GAAGZ,KAAKg/B,QAAQ1+B,EAAE,CAAC,GAAGP,EAAE,OAAO,EAAG,IAAI,IAAIe,EAAE,EAAEA,EAAEd,KAAKq35C,QAAQh35C,OAAOS,IAAIzB,EAAEwC,KAAK,CAACgjB,IAAI7kB,KAAKq35C,QAAQv25C,GAAG8mT,GAAG5nT,KAAKytxB,OAAO,EAAE3sxB,GAAG4wL,GAAG1xL,KAAKytxB,OAAO,EAAE3sxB,EAAE,GAAGg8L,GAAG98L,KAAKytxB,OAAO,EAAE3sxB,EAAE,GAAG22H,GAAGz3H,KAAKytxB,OAAO,EAAE3sxB,EAAE,KAAK,IAAI,IAAI0B,EAAE,EAAEA,EAAExC,KAAKo35C,WAAW/25C,OAAOmC,IAAI,CAAC,IAAI3B,EAAEb,KAAKs35C,QAAQ,EAAE905C,GAAGH,EAAErC,KAAKs35C,QAAQ,EAAE905C,EAAE,GAAGI,EAAE5C,KAAKs35C,QAAQ,EAAE905C,EAAE,GAAGnD,EAAEwC,KAAK,CAACgjB,IAAI7kB,KAAKo35C,WAAW505C,GAAGolT,GAAG/mT,EAAE+B,EAAE8uL,GAAGrvL,EAAEO,EAAEk6L,GAAGj8L,EAAE+B,EAAE60H,GAAGp1H,EAAEO,GAAI,CAAC,OAAO5B,EAAE3B,EAAEwtB,OAAO7rB,GAAG3B,CAAC,CAAC,OAAOW,KAAK+73C,aAAa383C,EAAED,EAAEyB,EAAEN,EAAEN,KAAKi83C,WAAW583C,EAAE,CAAC+45C,QAAQr45C,EAAEs45C,SAAS,CAACz1tC,IAAI,CAAC,EAAEqtC,OAAO,CAAC,IAAIjvO,GAAGjB,EAAEV,EAAEgB,OAAO,EAAEhB,CAAC,EAAE+P,GAAG1P,UAAU445C,aAAa,SAASl55C,EAAED,EAAEyB,EAAEN,EAAEP,GAAG,IAAIiB,EAAE5B,EAAEwB,EAAEvB,EAAED,EAAEwB,EAAEE,EAAE3B,EAAEyB,EAAE4B,EAAErD,EAAEyB,EAAE,GAAGvB,EAAE,GAAG2B,EAAEhB,KAAK++B,OAAOv8B,EAAE,GAAG1B,EAAEd,KAAKg/B,OAAO,OAAQ1+B,GAAG,GAAG,IAAIO,EAAE,GAAG,OAAOb,KAAK+73C,aAAa/63C,EAAEF,EAAEzB,EAAEmD,EAAExC,KAAKu45C,iBAAiB135C,EAAE,CAACu35C,QAAQ935C,EAAE2vO,OAAO,CAAChsO,EAAE7E,EAAE4D,EAAE7D,EAAEm4I,OAAO12I,GAAGy35C,SAAS,CAACz1tC,IAAI,CAAC,EAAEqtC,OAAO,CAAC,IAAIlwO,GAAGO,EAAEO,EAAER,OAAO,EAAEQ,CAAC,EAAEuO,GAAG1P,UAAUuvF,MAAM,SAAS7vF,EAAED,EAAEyB,EAAEN,EAAEP,GAAG,OAAOC,KAAKm45C,OAAO/45C,EAAED,EAAEyB,EAAEN,GAAE,EAAGP,EAAE,EAAEqP,GAAG1P,UAAU045C,QAAQ,SAASh55C,EAAED,EAAEyB,EAAEN,EAAEP,GAAG,OAAOC,KAAKm45C,OAAO/45C,EAAED,EAAEyB,EAAEN,GAAE,EAAGP,EAAE,EAAEqP,GAAG1P,UAAU845C,cAAc,SAASp55C,EAAED,EAAEyB,EAAEN,GAAG,OAAON,KAAKs45C,aAAal55C,EAAED,EAAEyB,GAAE,EAAGN,EAAE,EAAE8O,GAAG1P,UAAUu83C,WAAW,SAAS783C,EAAED,EAAEyB,EAAEN,EAAEP,EAAEiB,EAAE3B,EAAEyB,GAAG,IAAI0B,EAAEnD,EAAEg55C,SAASx35C,EAAEb,KAAKg35C,SAASj35C,GAAG,GAAG,OAAOc,EAAE,IAAI,IAAIwB,EAAErC,KAAKytxB,OAAO7qxB,EAAE,EAAEE,EAAEjC,EAAE+B,EAAEE,EAAEzC,OAAOuC,GAAG,EAAE,CAAC,IAAID,EAAEG,EAAEF,GAAG,IAAIJ,EAAEogM,IAAIjgM,GAAG,CAACH,EAAEogM,IAAIjgM,IAAG,EAAG,IAAIiB,EAAE,EAAEjB,EAAE,GAAGvD,GAAGiD,EAAEuB,EAAE,IAAIzE,GAAGkD,EAAEuB,EAAE,IAAIhD,GAAGyB,EAAEuB,EAAE,IAAItD,GAAG+B,EAAEuB,EAAE,MAAM9C,GAAGA,EAAEd,KAAKq35C,QAAQ105C,KAAK,CAAC,GAAGtD,EAAE+45C,QAAQ,OAAOp35C,EAAEa,MAAK,IAAI,EAAGb,EAAEa,KAAK,CAACgjB,IAAI7kB,KAAKq35C,QAAQ105C,GAAGilT,GAAGvlT,EAAEuB,GAAG8tL,GAAGrvL,EAAEuB,EAAE,GAAGk5L,GAAGz6L,EAAEuB,EAAE,GAAG6zH,GAAGp1H,EAAEuB,EAAE,IAAK,CAAC,CAAC,CAAC,IAAIlB,EAAE1C,KAAKi35C,YAAYl35C,GAAG,GAAG,OAAO2C,EAAE,IAAI,IAAIU,EAAEpD,KAAKs35C,QAAQn15C,EAAE,EAAEc,EAAEP,EAAEP,EAAEc,EAAE5C,OAAO8B,GAAG,EAAE,CAAC,IAAIa,EAAEC,EAAEd,GAAG,IAAIK,EAAEytO,OAAOjtO,GAAG,CAACR,EAAEytO,OAAOjtO,IAAG,EAAG,IAAIiB,EAAE,EAAEjB,EAAE,GAAGhD,KAAKy45C,sBAAsBr15C,EAAEa,GAAGb,EAAEa,EAAE,GAAGb,EAAEa,EAAE,GAAG7E,EAAED,EAAEyB,EAAEN,MAAMQ,GAAGA,EAAEd,KAAKo35C,WAAWp05C,KAAK,CAAC,GAAG3D,EAAE+45C,QAAQ,OAAOp35C,EAAEa,MAAK,IAAI,EAAG,IAAIyB,EAAEF,EAAEa,GAAGV,EAAEH,EAAEa,EAAE,GAAGC,EAAEd,EAAEa,EAAE,GAAGjD,EAAEa,KAAK,CAACgjB,IAAI7kB,KAAKo35C,WAAWp05C,GAAG4kT,GAAGtkT,EAAEY,EAAEwtL,GAAGnuL,EAAEW,EAAE44L,GAAGx5L,EAAEY,EAAEuzH,GAAGl0H,EAAEW,GAAI,CAAC,CAAC,CAAC,EAAEkL,GAAG1P,UAAU645C,iBAAiB,SAASn55C,EAAED,EAAEyB,EAAEN,EAAEP,EAAEiB,EAAE3B,EAAEyB,GAAG,IAAI0B,EAAEnD,EAAE4wO,OAAOpvO,EAAExB,EAAEg55C,SAASh25C,EAAErC,KAAKg35C,SAASj35C,GAAG,GAAG,OAAOsC,EAAE,IAAI,IAAIO,EAAE5C,KAAKytxB,OAAO3qxB,EAAE,EAAEH,EAAEN,EAAES,EAAEH,EAAEtC,OAAOyC,GAAG,EAAE,CAAC,IAAIc,EAAEjB,EAAEG,GAAG,IAAIjC,EAAE+hM,IAAIh/L,GAAG,CAAC/C,EAAE+hM,IAAIh/L,IAAG,EAAG,IAAIlB,EAAE,EAAEkB,EAAE,GAAG5D,KAAKy45C,sBAAsBj25C,EAAEyB,EAAEzB,EAAEQ,EAAER,EAAE80I,OAAO10I,EAAEF,EAAE,GAAGE,EAAEF,EAAE,GAAGE,EAAEF,EAAE,GAAGE,EAAEF,EAAE,OAAO5B,GAAGA,EAAEd,KAAKq35C,QAAQzz5C,KAAK,OAAO5C,EAAEa,MAAK,IAAI,CAAE,CAAC,CAAC,IAAIuB,EAAEpD,KAAKi35C,YAAYl35C,GAAG,GAAG,OAAOqD,EAAE,IAAI,IAAIjB,EAAEnC,KAAKs35C,QAAQr05C,EAAE,EAAED,EAAEI,EAAEH,EAAED,EAAE3C,OAAO4C,GAAG,EAAE,CAAC,IAAIgB,EAAEjB,EAAEC,GAAG,IAAIpC,EAAEovO,OAAOhsO,GAAG,CAACpD,EAAEovO,OAAOhsO,IAAG,EAAG,IAAIX,EAAE,EAAEW,EAAE,GAAGjE,KAAK045C,gBAAgBv25C,EAAEmB,GAAGnB,EAAEmB,EAAE,GAAGnB,EAAEmB,EAAE,GAAGd,EAAEyB,EAAEzB,EAAEQ,EAAER,EAAE80I,WAAWx2I,GAAGA,EAAEd,KAAKo35C,WAAWnz5C,KAAK,OAAOjD,EAAEa,MAAK,IAAI,CAAE,CAAC,CAAC,EAAEuN,GAAG1P,UAAUq83C,aAAa,SAAS383C,EAAED,EAAEyB,EAAEN,EAAEP,EAAEiB,EAAE3B,EAAEyB,GAAG,IAAI,IAAI0B,EAAExC,KAAK245C,qBAAqBv55C,GAAGyB,EAAEb,KAAK445C,qBAAqBz55C,GAAGkD,EAAErC,KAAK245C,qBAAqB/35C,GAAGgC,EAAE5C,KAAK445C,qBAAqBt45C,GAAGwC,EAAEN,EAAEM,GAAGT,EAAES,IAAI,IAAI,IAAIH,EAAE9B,EAAE8B,GAAGC,EAAED,IAAI,GAAG5C,EAAEH,KAAKI,KAAKZ,EAAED,EAAEyB,EAAEN,EAAEN,KAAKk35C,WAAWv05C,EAAEG,EAAE9B,EAAE3B,EAAEyB,GAAG,MAAM,EAAEsO,GAAG1P,UAAUi55C,qBAAqB,SAASv55C,GAAG,OAAOyD,KAAK8K,IAAI,EAAE9K,KAAKgL,IAAI7N,KAAKk35C,WAAW,EAAEr05C,KAAKyK,MAAMlO,EAAEY,KAAKsjO,SAAS,EAAEl0N,GAAG1P,UAAUk55C,qBAAqB,SAASx55C,GAAG,OAAOyD,KAAK8K,IAAI,EAAE9K,KAAKgL,IAAI7N,KAAKm35C,WAAW,EAAEt05C,KAAKyK,MAAMlO,EAAEY,KAAKujO,SAAS,EAAEn0N,GAAG1P,UAAUg55C,gBAAgB,SAASt55C,EAAED,EAAEyB,EAAEN,EAAEP,EAAEiB,GAAG,IAAI3B,EAAEiB,EAAElB,EAAE0B,EAAEf,EAAEZ,EAAEqD,EAAE5B,EAAEI,EAAE,OAAOwB,EAAEA,EAAEnD,EAAEA,EAAEyB,EAAEA,CAAC,EAAEsO,GAAG1P,UAAU+45C,sBAAsB,SAASr55C,EAAED,EAAEyB,EAAEN,EAAEP,EAAEiB,EAAE3B,GAAG,IAAIyB,GAAGE,EAAEV,GAAG,EAAEkC,EAAEK,KAAKmjH,IAAI5mH,GAAGkB,EAAEQ,IAAI,GAAG0B,EAAE1B,EAAEF,EAAE,OAAO,EAAG,IAAIC,GAAGxB,EAAEU,GAAG,EAAEsC,EAAEQ,KAAKmjH,IAAI7mH,GAAGY,EAAEc,IAAI,GAAGwB,EAAExB,EAAED,EAAE,OAAO,EAAG,GAAG4B,GAAG1B,GAAGuB,GAAGxB,EAAE,OAAO,EAAG,IAAI+B,EAAEJ,EAAE1B,EAAEgC,EAAET,EAAExB,EAAE,OAAO+B,EAAEA,EAAEE,EAAEA,GAAGlC,EAAEA,CAAC,EAAE,IAAIwG,GAAG,IAAI4Y,aAAa,EAAC,KAAK,IAAK,GAAE,KAAK,IAAK,GAAE,KAAK,IAAK,GAAE,KAAK,IAAK,IAAI,SAAShZ,GAAG5H,EAAED,GAAG,IAAI,IAAIyB,EAAE,EAAEA,EAAExB,EAAEwB,IAAI,CAAC,IAAIN,EAAEnB,EAAEkB,OAAOlB,EAAE0vH,OAAOvuH,EAAE,GAAGnB,EAAE6h4C,QAAQ/03C,IAAI7E,GAAG,EAAE9G,EAAG,CAAC,CAAC,SAAS6G,GAAG/H,EAAED,EAAEyB,GAAG,IAAIN,EAAEnB,EAAE,GAAGY,EAAEZ,EAAE,GAAG,OAAOC,EAAE,GAAGwB,EAAE,GAAGN,EAAEM,EAAE,GAAGb,EAAEa,EAAE,IAAIxB,EAAE,GAAGwB,EAAE,GAAGN,EAAEM,EAAE,GAAGb,EAAEa,EAAE,IAAIxB,EAAE,GAAGwB,EAAE,GAAGN,EAAEM,EAAE,GAAGb,EAAEa,EAAE,IAAIxB,CAAC,CAAC,IAAImI,GAAG,SAASnI,EAAED,EAAEyB,QAAG,IAASzB,IAAIA,EAAE,IAAIiQ,GAAGhQ,EAAE2/B,MAAM,IAAI3/B,EAAE4/B,OAAO,IAAI,UAAK,IAASp+B,IAAIA,EAAE,IAAIwO,GAAGhQ,EAAE2/B,MAAM,IAAI3/B,EAAE4/B,OAAO,IAAI,KAAKh/B,KAAK4iI,UAAUxjI,EAAEY,KAAKumP,KAAKpnP,EAAEa,KAAK645C,YAAYj45C,EAAEZ,KAAK845C,YAAYj25C,KAAKuxH,IAAIh1H,EAAE255C,QAAQ355C,EAAE0o4C,uBAAuB9n4C,KAAKg55C,oBAAoB555C,EAAE2/B,MAAM,IAAI/+B,KAAKi55C,qBAAqB755C,EAAE4/B,OAAO,IAAIh/B,KAAKk55C,kBAAkB955C,EAAE2/B,MAAM,IAAI/+B,KAAKm55C,mBAAmB/55C,EAAE4/B,OAAO,GAAI,EAAE,SAASx3B,GAAGrI,EAAEyB,EAAEN,GAAG,OAAOM,GAAGxB,EAAEii5C,QAAQli5C,EAAEsuL,SAAS5qL,KAAK6yF,IAAI,EAAEp1F,EAAEnB,EAAEq+4C,OAAO5B,cAAc,CAACr04C,GAAG7H,UAAU055C,kBAAkB,SAASh65C,EAAED,EAAEyB,EAAEN,EAAEP,GAAG,IAAIiB,EAAEhB,KAAKq55C,8BAA8B/45C,EAAElB,EAAE+h4C,aAAa/h4C,EAAEgi4C,cAAc/h4C,EAAEuB,EAAEI,EAAEs45C,iBAAiBx45C,EAAE1B,EAAEwoT,GAAGvoT,EAAE2B,EAAEm0I,MAAMlxI,EAAEzB,EAAEpD,EAAEsyL,GAAGryL,EAAE2B,EAAEm0I,MAAMnyI,EAAEnC,EAAEzB,EAAE09L,GAAGz9L,EAAE2B,EAAEm0I,MAAMlxI,EAAE5B,EAAEjD,EAAEq4H,GAAGp4H,EAAE2B,EAAEm0I,MAAMnyI,EAAE,OAAQhD,KAAKu55C,aAAaz45C,EAAE0B,EAAE3B,EAAEwB,KAAKlD,GAAGa,KAAKumP,KAAK6xqC,QAAQt35C,EAAE0B,EAAE3B,EAAEwB,EAAEtC,GAAG,CAAC6iM,IAAI,GAAG42tC,WAAU,GAAI,CAAC52tC,IAAI,CAAC9hM,EAAE0B,EAAE3B,EAAEwB,GAAGm35C,UAAUx55C,KAAKy55C,YAAY345C,EAAE0B,EAAE3B,EAAEwB,GAAG,EAAEkF,GAAG7H,UAAUg65C,sBAAsB,SAASv65C,EAAEyB,EAAEN,EAAEP,EAAEiB,EAAE3B,EAAEyB,EAAE0B,EAAE3B,EAAEwB,EAAEO,EAAEE,EAAEH,GAAG,IAAIiB,EAAE,GAAGlB,EAAE,IAAItD,EAAEoqC,MAAM5oC,EAAE66O,QAAQ76O,EAAE86O,SAASt4O,EAAEkN,GAAG5N,EAAErD,GAAG8C,EAAEuE,GAAG1G,KAAK4iI,UAAUklwC,uBAAuB1k4C,EAAEu05C,0BAA0B105C,GAAGZ,EAAErB,EAAEmB,EAAEnB,EAAEmB,GAAG/C,EAAE4i5C,OAAOh/4C,EAAEsN,GAAG5N,EAAE5B,GAAGq0I,MAAMlxI,EAAE6C,GAAG7D,EAAElD,EAAEa,EAAEgh4C,YAAY3+3C,EAAErC,EAAEih4C,YAAY5+3C,GAAE,EAAGD,EAAEN,EAAE9B,EAAEN,EAAEQ,EAAE,CAAC,GAAGwC,GAAE,EAAGC,GAAE,EAAGW,GAAE,EAAG,GAAGD,EAAE,CAAC,IAAI,IAAIS,EAAE,GAAG5B,EAAEX,EAAEQ,EAAEkB,EAAE,IAAIzE,EAAEoqC,OAAO,KAAK,KAAK1kC,EAAE,IAAI1F,EAAEoqC,MAAMxpC,KAAKg55C,oBAAoBh55C,KAAKi55C,sBAAsBz15C,EAAE,IAAIwL,GAAG7K,EAAEF,EAAEygB,MAAM/e,EAAE1B,EAAE0gB,KAAKpf,EAAE,GAAGV,EAAEV,EAAEkyB,KAAKh2B,OAAO,EAAEwE,GAAG,EAAEA,IAAIU,EAAE1D,KAAKsC,EAAEkyB,KAAKxxB,IAAI,IAAI,IAAIgB,EAAE,EAAEA,EAAEF,EAAE0wB,KAAKh2B,OAAOwF,IAAIN,EAAE1D,KAAK8D,EAAE0wB,KAAKxwB,IAAI,IAAIxB,EAAE,IAAIK,EAAE,GAAGlC,EAAE,CAAC,IAAI8B,EAAEiB,EAAE8pB,KAAI,SAAUjwB,GAAG,OAAOkR,GAAGlR,EAAEoD,EAAG,IAAG+C,EAAEjB,EAAEqjC,MAAK,SAAUvoC,GAAG,OAAOA,EAAEu45C,0BAA0B,CAAE,IAAG,GAAGrz5C,EAAE+qB,KAAI,SAAUjwB,GAAG,OAAOA,EAAE+1I,KAAM,GAAG,CAAC,IAAIzxI,EAAE,GAAG,GAAG6B,EAAElF,OAAO,EAAE,CAAC,IAAI,IAAI0F,EAAER,EAAE,GAAGgrB,QAAQvsB,EAAEuB,EAAE,GAAGgrB,QAAQvrB,EAAE,EAAEA,EAAEO,EAAElF,OAAO2E,IAAIe,EAAE9B,EAAEpB,KAAKgL,IAAI9H,EAAE9B,EAAEsB,EAAEP,GAAGf,GAAG8B,EAAE/C,EAAEH,KAAKgL,IAAI9H,EAAE/C,EAAEuC,EAAEP,GAAGhC,GAAGgB,EAAEC,EAAEpB,KAAK8K,IAAI3J,EAAEC,EAAEsB,EAAEP,GAAGf,GAAGD,EAAEhB,EAAEH,KAAK8K,IAAI3J,EAAEhB,EAAEuC,EAAEP,GAAGhC,GAAGU,EAAEqC,EAAE9B,GAAGJ,EAAEI,GAAGD,EAAEC,GAAGa,EAAEb,GAAG8B,EAAE/C,GAAGa,EAAEb,GAAGgB,EAAEhB,GAAG8B,EAAE9B,EAAE,CAACuC,GAAGvB,EAAEC,EAAEJ,EAAEI,GAAG8B,EAAE9B,EAAEa,EAAEb,GAAGD,EAAEhB,EAAEa,EAAEb,GAAG+C,EAAE/C,EAAE8B,EAAE9B,EAAE,GAAG5D,EAAEut7B,SAAS,CAACpn7B,GAAG1B,EAAEI,EAAEJ,EAAEb,EAAE8B,EAAEb,EAAEa,EAAE9B,EAAG,CAAC,IAAI,IAAIqC,EAAE,EAAEH,EAAExB,EAAE2B,EAAEH,EAAE7E,OAAOgF,GAAG,EAAE,CAAC,IAAIZ,EAAEjB,EAAEy9D,MAAM/7D,EAAEG,GAAG,IAAIX,GAAGD,EAAEjB,EAAEnD,QAAQ,GAAGqE,EAAE,EAAE7B,KAAKuK,KAAK5J,EAAEow0B,aAAavv0B,GAAG,EAAE,IAAI,IAAI6B,EAAE,EAAEA,EAAEzB,EAAEyB,IAAI,CAAC,IAAI9B,EAAE8B,EAAErD,KAAK8K,IAAIlJ,EAAE,EAAE,GAAGmB,EAAEpC,EAAEi1V,KAAKr0V,GAAGO,EAAEiB,EAAE3B,EAAE,IAAIO,EAAEoB,EAAE5C,EAAE,IAAIY,EAAE/B,KAAK8C,EAAEH,EAAEE,EAAE,GAAG,IAAIK,EAAEJ,EAAED,EAAEc,EAAEhB,EAAEE,EAAEO,EAAEN,EAAED,EAAEe,EAAEjB,EAAEE,EAAE,GAAGR,EAAEA,GAAGlE,KAAKy55C,YAAY105C,EAAES,EAAEP,EAAEQ,GAAGlC,EAAEA,GAAGvD,KAAKu55C,aAAax05C,EAAES,EAAEP,EAAEQ,IAAItG,GAAGa,KAAKumP,KAAKiyqC,cAAc7z5C,EAAEH,EAAEE,EAAE9B,KAAKU,GAAE,GAAIzC,GAAG,MAAO,CAACy25C,QAAQ,GAAGkC,WAAU,EAAGG,kBAAkBr25C,EAAE,CAAC,CAAC,CAAC,MAAO,CAACg05C,SAASz25C,GAAGyC,IAAIC,EAAE,GAAGK,EAAE415C,UAAUt15C,EAAEy15C,kBAAkBr25C,EAAE,EAAEiE,GAAG7H,UAAUk65C,qBAAqB,SAASz65C,GAAG,GAAG,IAAIA,EAAEkB,QAAQ,IAAIL,KAAKumP,KAAKwxqC,cAAc,IAAI/35C,KAAK645C,YAAYd,aAAa,MAAO,CAAC,EAAE,IAAI,IAAIn35C,EAAE,GAAGN,EAAE,IAAIP,EAAE,IAAIiB,GAAE,IAAK3B,GAAE,IAAKyB,EAAE,EAAE0B,EAAErD,EAAE2B,EAAE0B,EAAEnC,OAAOS,GAAG,EAAE,CAAC,IAAID,EAAE2B,EAAE1B,GAAGuB,EAAE,IAAIjD,EAAEoqC,MAAM3oC,EAAEoD,EAAE,IAAIpD,EAAEmC,EAAE,KAAK1C,EAAEuC,KAAKgL,IAAIvN,EAAE+B,EAAE4B,GAAGlE,EAAE8C,KAAKgL,IAAI9N,EAAEsC,EAAEW,GAAGhC,EAAE6B,KAAK8K,IAAI3M,EAAEqB,EAAE4B,GAAG5E,EAAEwD,KAAK8K,IAAItO,EAAEgD,EAAEW,GAAGpC,EAAEiB,KAAKQ,EAAG,CAAC,IAAI,IAAIO,EAAE,CAAC,EAAEE,EAAE,CAAC,EAAEH,EAAE,EAAEiB,EAAE5D,KAAKumP,KAAKt3J,MAAM3uF,EAAEP,EAAEiB,EAAE3B,GAAG2C,OAAOhC,KAAK645C,YAAY5p0C,MAAM3uF,EAAEP,EAAEiB,EAAE3B,IAAIsD,EAAEiB,EAAEvD,OAAOsC,GAAG,EAAE,CAAC,IAAID,EAAEkB,EAAEjB,GAAGS,EAAEV,EAAEmiB,IAAI,QAAG,IAASjiB,EAAEQ,EAAEy25C,oBAAoBj35C,EAAEQ,EAAEy25C,kBAAkB,CAAC,IAAIj35C,EAAEQ,EAAEy25C,kBAAkBz25C,EAAE0+N,cAAc,CAAC,IAAI3/N,EAAE,CAAC,IAAI/C,EAAEoqC,MAAM9mC,EAAEklT,GAAGllT,EAAEgvL,IAAI,IAAItyL,EAAEoqC,MAAM9mC,EAAEo6L,GAAGp6L,EAAEgvL,IAAI,IAAItyL,EAAEoqC,MAAM9mC,EAAEo6L,GAAGp6L,EAAE+0H,IAAI,IAAIr4H,EAAEoqC,MAAM9mC,EAAEklT,GAAGllT,EAAE+0H,KAAKr4H,EAAE2n5C,yBAAyBnm5C,EAAEuB,KAAKS,EAAEQ,EAAEy25C,kBAAkBz25C,EAAE0+N,eAAc,OAAG,IAASh/N,EAAEM,EAAEy25C,oBAAoB/25C,EAAEM,EAAEy25C,kBAAkB,IAAI/25C,EAAEM,EAAEy25C,kBAAkBh45C,KAAKuB,EAAE0+N,cAAe,CAAC,CAAC,OAAOh/N,CAAC,EAAEyE,GAAG7H,UAAUo65C,mBAAmB,SAAS165C,EAAED,EAAEyB,EAAEN,EAAEP,IAAIZ,EAAEa,KAAK645C,YAAY745C,KAAKumP,MAAMwU,OAAO,CAAC8+pC,iBAAiBj55C,EAAEkhO,aAAaxhO,EAAEy55C,iBAAiBh65C,GAAGX,EAAE,GAAGA,EAAE,GAAGA,EAAE,GAAGA,EAAE,GAAI,EAAEmI,GAAG7H,UAAUs65C,uBAAuB,SAAS565C,EAAED,EAAEyB,EAAEN,EAAEP,GAAG,IAAI,IAAIiB,EAAE7B,EAAEa,KAAK645C,YAAY745C,KAAKumP,KAAKlnP,EAAE,CAACw65C,iBAAiBj55C,EAAEkhO,aAAaxhO,EAAEy55C,iBAAiBh65C,GAAGe,EAAE,EAAEA,EAAE1B,EAAEiB,OAAOS,GAAG,EAAEE,EAAEi35C,aAAa545C,EAAED,EAAE0B,GAAG1B,EAAE0B,EAAE,GAAG1B,EAAE0B,EAAE,GAAI,EAAEyG,GAAG7H,UAAU255C,8BAA8B,SAASl65C,EAAEyB,EAAEN,GAAG,IAAIP,EAAE,CAACa,EAAEN,EAAE,EAAE,GAAG,OAAO6G,GAAGpH,EAAEA,EAAEZ,GAAG,CAACg2I,MAAM,IAAI/1I,EAAEoqC,OAAOzpC,EAAE,GAAGA,EAAE,GAAG,GAAG,EAAEC,KAAK4iI,UAAU7jG,MAAM,MAAMh/B,EAAE,GAAGA,EAAE,GAAG,GAAG,EAAEC,KAAK4iI,UAAU5jG,OAAO,KAAKs63C,iBAAiB,GAAGt55C,KAAK4iI,UAAUklwC,uBAAuB/n4C,EAAE,GAAG,GAAG,EAAEwH,GAAG7H,UAAU+55C,YAAY,SAASr65C,EAAED,EAAEyB,EAAEN,GAAG,OAAOM,EAAE,KAAKxB,GAAGY,KAAKg55C,qBAAqB145C,EAAE,KAAKnB,EAAEa,KAAKi55C,oBAAoB,EAAE1x5C,GAAG7H,UAAU655C,aAAa,SAASn65C,EAAED,EAAEyB,EAAEN,GAAG,OAAOM,GAAG,GAAGxB,EAAEY,KAAKk55C,mBAAmB545C,GAAG,GAAGnB,EAAEa,KAAKm55C,kBAAkB,EAAE5x5C,GAAG7H,UAAUu65C,kBAAkB,WAAW,IAAI965C,EAAEC,EAAEorL,SAAS,IAAI,OAAOprL,EAAEg6H,UAAUj6H,EAAEA,EAAE,EAAE,KAAK,IAAI,IAAIA,CAAC,EAAE,IAAImI,GAAG,SAASlI,EAAED,EAAEyB,EAAEN,GAAGN,KAAK4rI,QAAQxsI,EAAEyD,KAAK8K,IAAI,EAAE9K,KAAKgL,IAAI,EAAEzO,EAAEwsI,SAASxsI,EAAE865C,OAAO/65C,GAAGA,KAAKmB,GAAGM,EAAE,EAAE,EAAEZ,KAAKk65C,OAAOt55C,CAAE,EAAE0G,GAAG5H,UAAUq0Z,SAAS,WAAW,OAAO,IAAI/zZ,KAAK4rI,UAAU5rI,KAAKk65C,MAAM,EAAE,IAAI3x5C,GAAG,SAASnJ,EAAED,EAAEyB,EAAEN,EAAEP,GAAGC,KAAKowB,KAAK,IAAI9oB,GAAGlI,EAAEA,EAAEgxB,KAAK,KAAKjxB,EAAEyB,EAAEb,GAAGC,KAAKywO,KAAK,IAAInpO,GAAGlI,EAAEA,EAAEqxO,KAAK,KAAKtxO,EAAEmB,EAAEP,EAAG,EAAEwI,GAAG7I,UAAUq0Z,SAAS,WAAW,OAAO/zZ,KAAKowB,KAAK2jY,YAAY/zZ,KAAKywO,KAAKsjL,UAAU,EAAE,IAAI1sZ,GAAG,SAASjI,EAAED,EAAEyB,GAAGZ,KAAKowB,KAAKhxB,EAAEY,KAAKywO,KAAKtxO,EAAEa,KAAKm65C,SAASv55C,CAAE,EAAEmH,GAAG,WAAW/H,KAAKo65C,cAAch75C,EAAEc,SAASF,KAAKopK,eAAehqK,EAAEc,SAASF,KAAKs35C,QAAQ,EAAG,EAAErv5C,GAAG,SAAS7I,EAAED,EAAEyB,EAAEN,EAAEP,GAAGC,KAAK655C,iBAAiBz65C,EAAEY,KAAK8hO,aAAa3iO,EAAEa,KAAKqh4C,iBAAiBzg4C,EAAEZ,KAAKsh4C,YAAYhh4C,EAAEN,KAAKw94C,OAAOz94C,CAAE,EAAE+H,GAAG,SAAS1I,GAAGY,KAAKq65C,sBAAsBj75C,EAAEY,KAAKs65C,WAAW,EAAEt65C,KAAKu65C,gBAAgB,CAAC,CAAE,EAAE,SAAS9y5C,GAAGtI,EAAEyB,EAAEN,EAAEP,EAAEiB,GAAG,IAAI3B,EAAED,EAAE+l5C,mBAAmBhm5C,GAAG2B,IAAIzB,EAAE8w4C,gBAAgB,IAAIvv4C,EAAE4B,IAAInD,EAAE8zuB,cAAc,IAAI7yuB,EAAEO,EAAEzB,EAAE2l5C,uBAAuB5l5C,EAAEY,GAAG,OAAO,IAAIX,EAAEoqC,MAAM1oC,EAAED,EAAE,GAAGG,EAAEwB,EAAE3B,EAAE,GAAGG,EAAE,CAAC,SAAS0H,GAAGvJ,EAAEyB,EAAEN,EAAEP,EAAEiB,EAAE3B,GAAG,IAAIyB,EAAE3B,EAAEyoT,GAAGplT,EAAErD,EAAE29L,GAAGj8L,EAAE1B,EAAEuyL,GAAGrvL,EAAElD,EAAEs4H,GAAG70H,EAAEzD,EAAEgi4C,aAAar+3C,EAAE3D,EAAEii4C,aAAaz+3C,EAAE,IAAIvD,EAAEoqC,MAAM5oC,EAAEN,GAAG,OAAOP,GAAG4C,EAAEus3C,QAAQlu3C,EAAE3B,GAAGA,GAAG,CAACuoT,GAAG9mT,EAAE6B,EAAEsB,EAAEytL,GAAG7wL,EAAE8B,EAAEK,EAAE85L,GAAGt6L,EAAEG,EAAEsB,EAAEwzH,GAAGp1H,EAAEM,EAAEK,EAAEm+3C,aAAav+3C,EAAEw+3C,aAAat+3C,EAAE,CAACgF,GAAGpI,UAAUyD,IAAI,SAAS/D,GAAG,GAAGY,KAAKq65C,sBAAsB,MAAO,CAACpmrB,GAAG,EAAEpwrB,UAAU,MAAM,IAAI7jD,KAAKu65C,gBAAgBn75C,GAAG,CAAC,IAAID,IAAIa,KAAKs65C,WAAWt65C,KAAKu65C,gBAAgBn75C,GAAG,CAAC60uB,GAAG90uB,EAAE0kD,UAAU,SAASzkD,GAAG,OAAOA,EAAE265C,mBAAmB565C,CAAC,EAAG,CAAC,OAAOa,KAAKu65C,gBAAgBn75C,EAAE,EAAE,IAAI4I,GAAG,SAAS5I,EAAED,EAAEyB,EAAEN,GAAGN,KAAK4iI,UAAUxjI,EAAEmxB,QAAQvwB,KAAKw65C,eAAe,IAAIjz5C,GAAGvH,KAAK4iI,WAAW5iI,KAAKy65C,WAAW,CAAC,EAAEz65C,KAAK065C,UAAU,CAAC,EAAE165C,KAAK265C,gBAAgB,CAAC,EAAE365C,KAAK465C,OAAM,EAAG565C,KAAK665C,WAAW,EAAE765C,KAAK493C,aAAaz+3C,EAAEa,KAAK865C,kBAAkB,CAAC,EAAE965C,KAAKu65C,gBAAgB,IAAIzy5C,GAAGlH,GAAGZ,KAAK+65C,sBAAsB,CAAC,EAAE/65C,KAAKg75C,cAAc165C,EAAEA,IAAIA,EAAE065C,mBAAc,GAAQh75C,KAAKi75C,mBAAmB,CAAC,CAAE,EAAE,SAAS9y5C,GAAG/I,EAAED,EAAEyB,EAAEN,EAAEP,GAAGX,EAAE0h4C,YAAY3h4C,EAAE,EAAE,EAAEyB,EAAE,EAAE,EAAEN,GAAG,EAAEP,GAAG,GAAGX,EAAE0h4C,YAAY3h4C,EAAE,EAAE,EAAEyB,EAAE,EAAE,EAAEN,GAAG,EAAEP,GAAG,GAAGX,EAAE0h4C,YAAY3h4C,EAAE,EAAE,EAAEyB,EAAE,EAAE,EAAEN,GAAG,EAAEP,GAAG,GAAGX,EAAE0h4C,YAAY3h4C,EAAE,EAAE,EAAEyB,EAAE,EAAE,EAAEN,GAAG,EAAEP,GAAG,EAAG,CAACiI,GAAGtI,UAAUw75C,eAAe,SAAS/75C,EAAEyB,EAAEN,EAAEP,GAAG,IAAIiB,EAAEV,EAAEu/4C,UAAUj/4C,GAAGvB,EAAEiB,EAAEg/4C,mBAAmB,GAAGt+4C,GAAG3B,GAAGuB,EAAE2qB,KAAKvqB,EAAEylJ,SAAS,GAAG,CAAC,IAAI3lJ,EAAER,EAAE+z4C,kBAAkB7x4C,EAAExB,EAAE88B,OAAO,GAAGojG,OAAOrgI,EAAEgC,KAAK6yF,IAAI,EAAE11F,KAAK4iI,UAAUjjG,KAAKr/B,EAAEk94C,OAAO5B,aAAav54C,EAAE/B,EAAEmtL,SAASruL,EAAEii5C,OAAOz+4C,EAAE5C,KAAK4iI,UAAUyuxC,mBAAmB/w5C,EAAEk94C,OAAOrB,eAAer54C,EAAE,QAAQN,EAAEW,IAAI,wBAAwBR,EAAE,QAAQH,EAAEW,IAAI,2BAA2BS,EAAE4D,GAAGlH,EAAE,EAAEN,KAAK4iI,UAAUjjG,MAAMj9B,EAAEiN,GAAG/M,EAAEE,EAAEH,EAAE3C,KAAK4iI,UAAUh/H,GAAGR,EAAE,KAAK,GAAGN,EAAE,CAAC,IAAIX,EAAEiO,GAAGxN,EAAEE,EAAEH,EAAE3C,KAAK4iI,UAAUh/H,GAAGR,EAAEhE,EAAEooN,SAAS,GAAGxnN,KAAK4iI,UAAU60xC,iBAAiBt15C,EAAG,CAACnC,KAAK865C,kBAAkB955C,EAAE645C,kBAAkB,IAAI5x5C,GAAGjH,EAAE645C,iBAAiBx65C,EAAE2B,EAAEqg4C,iBAAiBrg4C,EAAEgc,MAAM1c,EAAEk94C,QAAQ,IAAIv64C,EAAE,CAACk45C,OAAOn65C,EAAEkgI,OAAO1+H,EAAEyz5C,UAAUrz5C,EAAEw45C,qBAAqB145C,EAAE245C,oBAAoBj45C,EAAE0+F,MAAMjhG,EAAEy65C,eAAej55C,EAAE894C,eAAe7/4C,EAAE6/4C,iBAAiB9L,kBAAkBvz4C,EAAEy65C,2BAA2Bn85C,EAAEsy4C,oBAAoB1w4C,EAAEwy4C,aAAaxz4C,KAAK4iI,UAAUjjG,MAAM673C,eAAex75C,KAAKu65C,gBAAgBp35C,IAAInC,EAAEg04C,WAAW,GAAGj14C,EAAE,IAAI,IAAIiD,EAAE,EAAEiB,EAAEjD,EAAEuz4C,cAAcvx4C,EAAEiB,EAAE5D,OAAO2C,GAAG,EAAE,CAAC,IAAIM,EAAEW,EAAEjB,GAAG7D,EAAE0C,KAAK,CAACmi4C,QAAQ1g4C,EAAE0g4C,QAAQwT,oBAAoBl04C,EAAEk04C,oBAAoBD,kBAAkBj04C,EAAEi04C,kBAAkBn+1C,WAAWn2C,GAAI,MAAM9D,EAAE0C,KAAK,CAAC214C,oBAAoB,EAAED,kBAAkBv24C,EAAEo04C,gBAAgB/04C,OAAO+4C,WAAWn2C,GAAI,CAAC,EAAE+E,GAAGtI,UAAU+75C,uBAAuB,SAASr85C,EAAED,EAAEyB,EAAEN,EAAEP,EAAEiB,EAAE3B,EAAEyB,EAAE0B,EAAE3B,EAAEwB,EAAEO,EAAEE,EAAEH,EAAEiB,GAAG,IAAIlB,EAAEU,EAAE,CAACR,EAAE0g4C,YAAY1g4C,EAAE2g4C,aAAaph4C,EAAEsF,GAAGrI,EAAEwB,EAAEN,EAAE8C,EAAErD,GAAGkD,EAAEjD,KAAKw65C,eAAepB,kBAAkB1w5C,GAAGvJ,EAAEgD,EAAE8B,EAAE9B,EAAEa,EAAEhC,EAAE3B,EAAEW,KAAK4iI,UAAU+rG,OAAOtsO,EAAEvB,EAAE0B,EAAE3B,EAAEgjD,WAAW,IAAIjgD,GAAG,IAAI5D,KAAKw65C,eAAepB,kBAAkB1w5C,GAAG9E,EAAEzB,EAAE8B,EAAE9B,EAAEa,EAAEhC,EAAE3B,EAAEW,KAAK4iI,UAAU+rG,OAAOtsO,EAAEvB,EAAE0B,EAAE3B,EAAEgjD,WAAW++I,IAAIviM,OAAO,OAAO4C,EAAE2/L,IAAIviM,OAAO,GAAGL,KAAKg75C,eAAeh75C,KAAKg75C,cAAcL,gBAAgB/35C,EAAEo/3C,cAAchi4C,KAAKg75C,cAAcP,WAAW735C,EAAEo/3C,cAAchi4C,KAAKg75C,cAAcP,WAAW735C,EAAEo/3C,aAAa5x2C,OAAO1tB,EAAE1C,KAAKg75C,cAAcL,gBAAgB/35C,EAAEo/3C,aAAa/4+B,QAAQjpZ,KAAK265C,gBAAgB/35C,EAAEo/3C,aAAa,CAAC1ua,WAAWlw9B,EAAE27B,MAAMn+B,EAAEo+B,OAAO1+B,EAAE2oZ,OAAO7pZ,EAAEik4C,aAAatj4C,EAAE275C,WAAWh55C,GAAG1C,KAAK275C,sBAAsB745C,EAAE1D,EAAEwD,EAAED,GAAGG,EAAEyw4C,yBAAyBvz4C,KAAK475C,oBAAoB945C,EAAEH,EAAEC,GAAG5C,KAAKi75C,mBAAmBr45C,EAAEo/3C,aAAar/3C,GAAG,CAACw7C,MAAMh8C,EAAE055C,iBAAiB545C,SAAI,CAAM,EAAE+E,GAAGtI,UAAUo85C,qBAAqB,SAAS385C,EAAEyB,EAAEN,GAAG,IAAIP,EAAEC,KAAKgB,EAAE7B,EAAEi6C,WAAW/5C,EAAE2B,EAAEm65C,OAAOr65C,EAAEE,EAAEkgI,OAAO1+H,EAAExB,EAAEi15C,UAAUp15C,EAAEG,EAAEo65C,qBAAqB/45C,EAAErB,EAAEq65C,oBAAoBz45C,EAAE5B,EAAEs65C,eAAex45C,EAAE9B,EAAEm/4C,eAAex94C,EAAE3B,EAAEqz4C,kBAAkBzw4C,EAAE5C,EAAEu65C,2BAA2B745C,EAAE1B,EAAEw65C,eAAep45C,EAAEtC,EAAEqC,IAAI,iBAAiBhB,EAAErB,EAAEqC,IAAI,iBAAiBF,EAAEnC,EAAEqC,IAAI,sBAAsBH,EAAElC,EAAEqC,IAAI,sBAAsBc,EAAE,QAAQnD,EAAEqC,IAAI,2BAA2BG,EAAE,QAAQxC,EAAEqC,IAAI,wBAAwBI,EAAE,SAASzC,EAAEqC,IAAI,iBAAiBe,EAAE,eAAepD,EAAEqC,IAAI,kBAAkBuB,EAAEzB,IAAID,IAAI3D,EAAE034C,eAAe504C,GAAG0B,EAAEb,IAAIC,IAAI5D,EAAEy34C,eAAe1z4C,IAAI/D,EAAEw34C,iBAAiBl04C,GAAGtD,EAAEu34C,0BAA0Bj04C,GAAG,IAAImC,EAAE,SAAS3F,EAAE6B,GAAG,IAAIJ,EAAEzB,EAAE6i4C,aAAa,GAAGl/3C,EAAE/C,EAAE065C,WAAWt75C,EAAE6i4C,aAAa,IAAI363C,IAAG,GAAG,GAAG,OAAS,CAAC,IAAI1E,EAAEuB,GAAE,EAAGY,GAAE,EAAGtB,GAAE,EAAGW,EAAE,KAAKwB,EAAE,CAACi9L,IAAI,KAAK42tC,UAAU,MAAMj05C,EAAE,CAACq9L,IAAI,KAAK42tC,UAAU,MAAM305C,EAAE,KAAKgB,EAAE,KAAKxB,EAAE,EAAEC,EAAE,EAAEZ,EAAE,EAAE1C,EAAEq14C,iBAAiBhy4C,EAAErD,EAAEq14C,iBAAiBl34C,EAAEik4C,6BAA6B/+3C,EAAElF,EAAE2iO,cAAc9gO,EAAEu14C,2BAA2Bjy4C,EAAEtD,EAAEu14C,0BAA0B,IAAIxw4C,EAAE/E,EAAEo14C,QAAQ,GAAGrw4C,EAAE,CAAC,IAAI/B,EAAE,SAASpD,GAAG,IAAIN,EAAElB,EAAEuk5C,YAAYh7uB,WAAW,GAAGtpqB,EAAEk04C,yBAAyB3y4C,GAAGb,EAAEi75C,cAAc,CAAC,IAAIh65C,EAAEjB,EAAEi75C,cAAcC,mBAAmB975C,EAAE6i4C,aAAahh4C,IAAIjB,EAAEk75C,mBAAmB975C,EAAE6i4C,aAAahh4C,EAAEjB,EAAE675C,oBAAoBv85C,EAAEiB,EAAEU,EAAE7B,GAAI,CAAC,OAAOmB,CAAC,EAAE0E,EAAE,SAASpE,EAAEN,GAAG,GAAGjB,EAAEk04C,wBAAwBp04C,EAAE8j4C,yBAAyB,GAAGji4C,EAAEs14C,gBAAgB,IAAI,IAAIv24C,EAAE,EAAEe,EAAEzB,EAAE014C,aAAah14C,EAAEe,EAAET,SAASS,EAAEf,KAAKX,EAAEuk5C,YAAYn62B,UAAU7jiB,EAAErF,IAAIiF,EAAEI,GAAGA,EAAE/E,MAAM+E,GAAGA,EAAEi9L,KAAKj9L,EAAEi9L,IAAIviM,SAASN,GAAG,QAAQ4F,EAAE/E,GAAI,EAAE,GAAGE,EAAEqC,IAAI,wBAAwB,CAAC,IAAIkC,EAAEvE,EAAEqC,IAAI,wBAAwB,GAAGpD,EAAEi75C,eAAej75C,EAAEi75C,cAAcL,gBAAgBx75C,EAAE6i4C,aAAa,CAAC,IAAI983C,EAAEnF,EAAEi75C,cAAcL,gBAAgBx75C,EAAE6i4C,aAAa383C,EAAE7E,QAAQ0E,EAAE+jZ,QAAQ,IAAI5jZ,EAAEA,EAAEwnB,QAAO,SAAUztB,GAAG,OAAOA,IAAI8F,EAAE+jZ,MAAO,KAAIp+X,QAAQ3lB,EAAE+jZ,OAAQ,CAAC,IAAIxkZ,EAAE,SAASrF,EAAEwB,EAAEN,GAAG,IAAI,IAAIU,EAAE5B,EAAE09L,GAAG19L,EAAEwoT,GAAG9mT,EAAE1B,EAAEq4H,GAAGr4H,EAAEsyL,GAAG7wL,EAAE1B,EAAEkk4C,aAAahh4C,EAAEkB,IAAIP,EAAEpC,EAAE,KAAKkC,EAAE,CAAC8/L,IAAI,GAAG42tC,WAAU,GAAI725C,EAAEM,EAAE,EAAEoC,EAAEhF,OAAOgF,EAAEhF,OAAOuD,EAAE,EAAEA,EAAEjB,IAAIiB,EAAE,CAAC,IAAIR,EAAErD,EAAE075C,uBAAuBp25C,EAAEzB,EAAEyB,EAAEhF,QAAQjB,EAAE4B,EAAEF,EAAED,EAAEoD,EAAEX,EAAEV,EAAEJ,EAAEE,EAAEkB,GAAGyB,EAAEhF,OAAOlB,EAAEE,EAAEiB,EAAE+B,GAAG,GAAGe,IAAIN,EAAEM,EAAEy45C,mBAAmB/45C,EAAE8/L,KAAK9/L,EAAE8/L,IAAIviM,OAAO,CAAC6D,GAAE,EAAGC,EAAEf,EAAE+6C,MAAM,KAAK,CAAC,CAAC,OAAOr7C,CAAC,EAAEkC,GAAE,WAAY,OAAOP,EAAEsB,EAAE/E,EAAEw14C,QAAQp34C,EAAEuk5C,YAAYh7uB,WAAY,IAAE,WAAY,IAAI/nqB,EAAEI,EAAEs14C,gBAAgB,OAAOj34C,EAAEk04C,0BAA0B5t4C,GAAGA,EAAEi9L,KAAKj9L,EAAEi9L,IAAIviM,SAASlB,EAAE8j4C,yBAAyB,GAAGri4C,EAAE6D,EAAE7D,EAAEI,EAAE014C,gBAAgBt34C,EAAEuk5C,YAAYn62B,UAAU,CAAC5mW,IAAI,KAAK42tC,UAAU,KAAM,IAAG7z5C,IAAIzB,EAAEyB,EAAEi9L,IAAIp/L,EAAEmC,EAAE6z5C,WAAW,IAAItz5C,EAAElC,EAAE2B,GAAGA,EAAEi9L,KAAK,IAAI1+L,GAAGnE,EAAEi75C,cAAc,CAAC,IAAI525C,EAAErE,EAAEi75C,cAAcL,gBAAgBx75C,EAAE6i4C,aAAa593C,IAAIrE,EAAE465C,gBAAgBx75C,EAAE6i4C,aAAa593C,EAAErE,EAAE475C,sBAAsBt85C,EAAE+E,EAAE6kZ,OAAO9pZ,EAAE+G,GAAI,CAAC,KAAM,CAAC,IAAIN,EAAE,SAASxG,EAAEwB,GAAG,IAAIN,EAAEP,EAAEy65C,eAAepB,kBAAkBh65C,EAAE6D,EAAEL,EAAEJ,EAAEE,EAAEmhD,WAAW,OAAOvjD,GAAGA,EAAEsiM,KAAKtiM,EAAEsiM,IAAIviM,SAASN,EAAE675C,oBAAoBv85C,EAAEuB,EAAEzB,GAAGY,EAAEk75C,mBAAmB975C,EAAE6i4C,aAAaph4C,GAAGN,CAAC,EAAE0E,GAAE,WAAY,OAAOY,EAAEG,EAAE3G,EAAEuk5C,YAAYh7uB,WAAY,IAAE,WAAY,IAAI/nqB,EAAEI,EAAEs14C,gBAAgB,OAAOj34C,EAAEk04C,wBAAwBp04C,EAAE8j4C,yBAAyB,GAAGri4C,EAAEgF,EAAEhF,EAAExB,EAAEuk5C,YAAYn62B,UAAU,CAAC5mW,IAAI,KAAK42tC,UAAU,KAAM,IAAGx15C,EAAE2B,GAAGA,EAAEi9L,KAAKj9L,EAAEi9L,IAAIviM,OAAQ,CAAC,CAAC,GAAG6D,GAAGvB,EAAEgD,IAAIhD,EAAEigM,KAAKjgM,EAAEigM,IAAIviM,OAAO,EAAEmD,EAAEb,GAAGA,EAAE625C,UAAUr65C,EAAEik4C,2BAA2B,CAAC,IAAIz+3C,EAAEtF,EAAE+wB,KAAKuj3C,kBAAkBxw4C,IAAIhE,EAAEgj4C,gCAAgC393C,EAAEpF,EAAEqy4C,uBAAuBpy4C,EAAEm04C,aAAa5v4C,EAAEe,GAAGI,EAAEjE,EAAEqC,IAAI,gBAAgB0B,EAAE9E,EAAEy65C,eAAed,sBAAsBz25C,EAAE0B,EAAEtF,EAAE814C,gBAAgB914C,EAAE614C,iBAAiB1w4C,EAAEhC,EAAE3B,EAAEwB,EAAE/B,EAAEgD,EAAEZ,EAAEmhD,UAAU1kD,EAAEqk4C,wBAAwBz+3C,GAAGb,EAAEjB,GAAG4B,EAAEyy5C,QAAQj35C,OAAO,IAAIwE,EAAE805C,kBAAkBn25C,EAAEA,GAAGqB,EAAE205C,SAAU,CAAC,GAAGx45C,EAAEy14C,mBAAmB/y4C,EAAE1C,EAAEy14C,kBAAkBz14C,EAAEw14C,QAAQ,CAAC,IAAIhx4C,EAAE,SAASpG,GAAG,IAAID,EAAEoE,GAAGY,EAAEuE,GAAGtJ,EAAE+E,EAAEF,EAAEE,EAAEnB,EAAEiB,EAAEX,EAAEvD,EAAE6iI,UAAU+rG,OAAOvvO,EAAE,OAAOW,EAAEy65C,eAAepB,kBAAkBj65C,EAAE6D,EAAEJ,EAAEJ,EAAEE,EAAEmhD,UAAU,EAAE/+C,EAAES,GAAGA,EAAEq9L,KAAKr9L,EAAEq9L,IAAIviM,QAAQW,EAAE014C,iBAAiB7w4C,EAAEL,EAAExE,EAAE014C,kBAAkB9zsC,IAAIviM,OAAO,GAAGwF,EAAEL,EAAExE,EAAEw14C,UAAU5zsC,IAAIviM,OAAO,EAAEmD,EAAEA,GAAGqC,EAAE2z5C,SAAU,CAAC,IAAIv05C,EAAE7B,GAAG,IAAIjE,EAAE6j4C,4BAA4B,IAAI7j4C,EAAE8j4C,yBAAyBx93C,EAAEtD,GAAG,IAAIhD,EAAE+j4C,gBAAgB,GAAGj+3C,GAAGQ,EAAEA,EAAER,IAAIH,EAAEA,GAAGZ,GAAGA,EAAEY,GAAGZ,EAAEY,EAAEZ,EAAEY,GAAGZ,EAAEA,GAAGvB,GAAGA,EAAEigM,KAAK7iM,EAAEy65C,eAAeV,mBAAmBn35C,EAAEigM,IAAI9hM,EAAEqC,IAAI,yBAAyB9D,EAAEw65C,iBAAiBt05C,GAAGA,EAAEq9L,KAAKt+L,EAAEA,EAAED,EAAE3B,EAAEuxuB,IAAInvuB,GAAGe,GAAG9F,EAAEy65C,eAAeV,mBAAmBj05C,EAAE+8L,IAAI9hM,EAAEqC,IAAI,yBAAyB9D,EAAEw65C,iBAAiBn25C,EAAEhB,EAAEuxuB,IAAIpvuB,IAAIX,GAAGnE,EAAEy65C,eAAeR,uBAAuBn15C,EAAEyy5C,QAAQx25C,EAAEqC,IAAI,yBAAyB9D,EAAEw65C,iBAAiBx15C,EAAE3B,EAAEuxuB,IAAI3zuB,GAAG,CAAC,IAAIoF,EAAErG,EAAEw65C,iBAAiB7z5C,EAAEjG,EAAEg75C,sBAAsBr15C,QAAG,IAASM,IAAIA,EAAEjG,EAAEg75C,sBAAsBr15C,GAAG,IAAIqC,IAAI,IAAI,IAAI3B,EAAE,EAAEA,EAAEvB,EAAEyy5C,QAAQj35C,OAAO+F,GAAG,EAAEJ,EAAEsx5C,QAAQz15C,KAAKgD,EAAEyy5C,QAAQlx5C,EAAE,IAAIJ,EAAEsx5C,QAAQz15C,KAAKgD,EAAEyy5C,QAAQlx5C,EAAE,IAAIJ,EAAEsx5C,QAAQz15C,KAAKgD,EAAEyy5C,QAAQlx5C,EAAE,IAAIJ,EAAEsx5C,QAAQz15C,KAAKgD,EAAE805C,kBAAkB,EAAE,EAAG,CAAC555C,EAAE065C,WAAWt75C,EAAE6i4C,aAAa,IAAI363C,GAAGnD,GAAGQ,EAAEI,GAAGjB,EAAEL,GAAGnE,EAAEmg5C,cAAc5+4C,EAAEzB,EAAE6i4C,cAAa,CAAG,CAAC,EAAE,GAAG993C,EAAE,IAAI,IAAIV,EAAEnE,EAAE834C,uBAAuBn34C,KAAK4iI,UAAU+rG,OAAOxqO,EAAEX,EAAEnD,OAAO,EAAE8D,GAAG,IAAIA,EAAE,CAAC,IAAIwB,EAAEnC,EAAEW,GAAGW,EAAEzF,EAAE+14C,gBAAgBjy4C,IAAIwC,GAAGtG,EAAEw34C,gBAAgBlx4C,GAAI,MAAM,IAAI,IAAIJ,EAAEpG,EAAEq44C,oBAAoBjy4C,EAAEpG,EAAEo44C,kBAAkBhy4C,IAAIT,EAAEzF,EAAE+14C,gBAAgBjy4C,IAAIoC,GAAGlG,EAAEw34C,gBAAgBtx4C,IAAI,GAAGjF,GAAGjB,EAAEw65C,oBAAoB755C,KAAK+65C,sBAAsB,CAAC,IAAIl25C,EAAE7E,KAAK+65C,sBAAsB175C,EAAEw65C,kBAAkBz65C,EAAEw/J,OAAO/5J,EAAEu15C,cAAc535C,GAAGqC,EAAEukK,eAAeppK,KAAKw65C,eAAeP,mBAAoB,CAAC565C,EAAEmg5C,cAAa,CAAG,EAAEx34C,GAAGtI,UAAUi85C,sBAAsB,SAASx85C,EAAEyB,EAAEN,EAAEP,GAAG,IAAIiB,EAAEA,EAAEjB,IAAIX,EAAEuk5C,YAAYn62B,SAASlpiB,EAAE+h4C,8BAA8B,CAACxj2C,KAAKv+B,EAAE8h4C,6BAA6Bnj2C,OAAO3+B,EAAE6h4C,+BAA+BtiyC,MAAMv/F,EAAE4h4C,+BAA+B9i4C,EAAEgm5C,uBAAuBxk5C,IAAI,IAAI,IAAIvB,EAAE,EAAEyB,EAAE,CAACR,EAAE8h4C,6BAA6B9h4C,EAAE6h4C,+BAA+B7h4C,EAAE4h4C,8BAA8B5h4C,EAAE+h4C,+BAA+Bhj4C,EAAEyB,EAAET,OAAOhB,GAAG,EAAE,CAAC,IAAImD,EAAE1B,EAAEzB,GAAGmD,GAAG,IAAIrD,EAAEixB,KAAKuj3C,kBAAkBxw4C,IAAIX,GAAGw/3C,YAAYhh4C,GAAG,GAAGwB,IAAIxB,EAAE,EAAEV,EAAE0h4C,YAAa,CAAC,EAAEh63C,GAAGtI,UAAUk85C,oBAAoB,SAASz85C,EAAEyB,EAAEN,GAAG,IAAI,IAAIP,EAAEa,IAAIxB,EAAEuk5C,YAAYh7uB,YAAY/nqB,IAAIxB,EAAEuk5C,YAAYhV,eAAe/t4C,EAAE,EAAEI,EAAEJ,IAAIxB,EAAEuk5C,YAAYn62B,SAAS5oiB,EAAE,EAAEvB,EAAE,EAAEyB,EAAE,CAACR,EAAE8h4C,6BAA6B9h4C,EAAE6h4C,+BAA+B7h4C,EAAE4h4C,+BAA+B7i4C,EAAEyB,EAAET,OAAOhB,GAAG,EAAEF,EAAEixB,KAAKuj3C,kBAAkBxw4C,IAAIrC,EAAEzB,IAAI0i4C,kBAAkBhi4C,EAAEO,EAAE+h4C,gCAAgClj4C,EAAEixB,KAAKuj3C,kBAAkBxw4C,IAAI7C,EAAE+h4C,+BAA+BN,kBAAkB/g4C,EAAG,EAAEgH,GAAGtI,UAAU+wT,OAAO,SAASrxT,GAAGY,KAAK665C,WAAWz75C,EAAEY,KAAK+75C,uBAAuB/75C,KAAK4iI,UAAUjjG,KAAK,IAAIxgC,EAAEa,KAAKg75C,cAAcp65C,GAAE,EAAGZ,KAAKg85C,mBAAmB785C,EAAEA,EAAE885C,eAAej85C,KAAK4iI,UAAUjjG,MAAM,EAAE,IAAIr/B,EAAEnB,EAAEA,EAAE+85C,iBAAiB985C,GAAG,EAAEW,EAAEZ,EAAEA,EAAEu75C,UAAU,CAAC,EAAE155C,EAAE7B,EAAEA,EAAEw75C,gBAAgB,CAAC,EAAEt75C,EAAEF,EAAEA,EAAE875C,mBAAmB,CAAC,EAAE,IAAI,IAAIn65C,KAAKd,KAAKy65C,WAAW,CAAC,IAAIj45C,EAAExC,KAAKy65C,WAAW355C,GAAGD,EAAEd,EAAEe,GAAGD,GAAGb,KAAK065C,UAAU555C,GAAG,IAAIyH,GAAG1H,EAAEP,EAAEkC,EAAE4tB,KAAK5tB,EAAEiuO,MAAM7vO,EAAEA,GAAG4B,EAAE4tB,OAAOvvB,EAAEuvB,KAAK8p4C,QAAQ135C,EAAEiuO,OAAO5vO,EAAE4vO,KAAKyprC,SAASl65C,KAAK065C,UAAU555C,GAAG,IAAIyH,GAAG,KAAKjI,EAAEkC,EAAE4tB,KAAK5tB,EAAEiuO,KAAKjuO,EAAE235C,UAAUv55C,EAAEA,GAAG4B,EAAE4tB,MAAM5tB,EAAEiuO,KAAM,CAAC,IAAI,IAAIpuO,KAAKtC,EAAE,CAAC,IAAI6C,EAAE7C,EAAEsC,GAAG,IAAIrC,KAAK065C,UAAUr45C,GAAG,CAAC,IAAIS,EAAE,IAAIyF,GAAG3F,EAAEtC,GAAE,GAAG,GAAIwC,EAAEixZ,aAAa/zZ,KAAK065C,UAAUr45C,GAAGS,EAAElC,EAAEA,GAAGgC,EAAEwtB,KAAK8p4C,QAAQt35C,EAAE6tO,KAAKyprC,OAAQ,CAAC,CAAC,IAAI,IAAIv35C,KAAK3B,EAAEhB,KAAK265C,gBAAgBh45C,KAAK3C,KAAK065C,UAAU/35C,IAAI3C,KAAK065C,UAAU/35C,GAAGoxZ,aAAa/zZ,KAAK265C,gBAAgBh45C,GAAG3B,EAAE2B,IAAI,IAAI,IAAIiB,KAAKvE,EAAEW,KAAKi75C,mBAAmBr35C,KAAK5D,KAAK065C,UAAU925C,IAAI5D,KAAK065C,UAAU925C,GAAGmwZ,aAAa/zZ,KAAKi75C,mBAAmBr35C,GAAGvE,EAAEuE,IAAIhD,EAAEZ,KAAKm85C,wBAAwB/85C,EAAE,iBAAiBY,KAAKm85C,0BAA0Bn85C,KAAKm85C,wBAAwBh95C,EAAEA,EAAEg95C,wBAAwB/85C,EAAG,EAAE4I,GAAGtI,UAAU085C,qBAAqB,SAASh95C,EAAED,GAAG,IAAI,IAAIyB,EAAE,CAAC,EAAEN,EAAE,EAAEP,EAAEZ,EAAEmB,EAAEP,EAAEM,OAAOC,GAAG,EAAE,CAAC,IAAIU,EAAEjB,EAAEO,GAAGjB,EAAE2B,EAAE6+4C,UAAUzg5C,GAAGC,GAAG2B,EAAEs+4C,oBAAoBlg5C,EAAEmsB,KAAKlsB,EAAEonJ,SAAS,IAAIzmJ,KAAKq85C,sBAAsBh95C,EAAEuB,EAAEI,EAAEqz4C,kBAAmB,CAAC,EAAErs4C,GAAGtI,UAAU285C,sBAAsB,SAASl95C,EAAEyB,EAAEN,GAAG,IAAIP,EAAEC,KAAKb,EAAE234C,eAAe334C,EAAEixB,KAAK2j3C,mBAAmB/u3C,QAAQ7lB,EAAE434C,eAAe534C,EAAEsxO,KAAKsjqC,mBAAmB/u3C,QAAQ7lB,EAAE834C,2BAA2B934C,EAAEw24C,iBAAiBxB,qBAAqBnv3C,QAAQ7lB,EAAE634C,2BAA2B734C,EAAEu24C,iBAAiBvB,qBAAqBnv3C,QAAQ,IAAIhkB,EAAE7B,EAAE2+B,OAAO,GAAGojG,OAAO7hI,EAAE,IAAIkJ,GAAG,KAAK,GAAE,GAAG,GAAG,GAAIzH,EAAEE,EAAEmC,IAAI,sBAAsBX,EAAExB,EAAEmC,IAAI,sBAAsBtC,EAAEG,EAAEmC,IAAI,wBAAwBd,EAAE,QAAQrB,EAAEmC,IAAI,2BAA2BP,EAAE,QAAQ5B,EAAEmC,IAAI,wBAAwBL,EAAE,SAAS9B,EAAEmC,IAAI,iBAAiBR,EAAE,IAAI4F,GAAG,KAAK,EAAEzH,IAAI0B,IAAIrD,EAAE434C,eAAe/14C,EAAEmC,IAAI,kBAAkBX,IAAI1B,IAAI3B,EAAE234C,eAAe914C,EAAEmC,IAAI,mBAAkB,IAAKhE,EAAE034C,iBAAiBv24C,IAAInB,EAAE834C,2BAA2B934C,EAAE634C,4BAA4B734C,EAAEy34C,0BAA0Bt24C,GAAG,IAAI,IAAIsD,EAAE,SAASxE,EAAED,EAAEyB,GAAG,IAAI,IAAIN,EAAE,EAAEA,EAAEnB,EAAE,EAAEmB,IAAIlB,EAAE204C,mBAAmBjT,YAAYlg4C,EAAG,EAAE8B,EAAE,SAASpC,GAAG,IAAIU,EAAE7B,EAAEi24C,gBAAgBjy4C,IAAI7C,GAAGQ,EAAEE,EAAEgi4C,2BAA2Bxg4C,EAAExB,EAAEii4C,yBAAyBvg4C,EAAE1B,EAAEgh4C,YAAY5+3C,EAAErD,EAAE265C,UAAUh45C,GAAG9B,EAAE8B,GAAGU,EAAE/D,EAAE+D,IAAIrD,EAAE265C,UAAUh45C,GAAGU,EAAET,GAAG/B,EAAE8B,IAAG,EAAG,IAAIP,EAAEnB,EAAEki4C,gBAAgB,EAAEjg4C,EAAElD,EAAEk75C,mBAAmBj65C,EAAEgh4C,aAAah/3C,EAAEC,IAAI7D,EAAEuk5C,YAAYn62B,SAASvliB,EAAEhB,IAAI7D,EAAEuk5C,YAAYh7uB,YAAY1lqB,IAAI7D,EAAEuk5C,YAAYhV,eAAe,GAAG7t4C,EAAE,GAAG0B,EAAE,EAAE,CAAC,IAAIc,EAAEyG,GAAG3G,EAAEgtB,MAAMxsB,EAAEzE,EAAEixB,KAAKtvB,EAAEkC,EAAEwG,GAAGlG,GAAGM,EAAEzE,EAAEixB,KAAK5tB,EAAEyB,EAAEuF,GAAGlG,GAAG,IAAIC,EAAEH,EAAEgtB,KAAK2jY,WAAW,CAAC/yZ,EAAEkh4C,8BAA8Blh4C,EAAEmh4C,+BAA+Bnh4C,EAAEoh4C,8BAA8Bl92C,SAAQ,SAAU9lB,GAAGA,GAAG,IAAID,EAAEixB,KAAKuj3C,kBAAkBxw4C,IAAI/D,GAAGkkhB,OAAO//gB,GAAGP,EAAE,EAAE,EAAI,IAAGhC,EAAEqh4C,+BAA+B,IAAIlj4C,EAAEixB,KAAKuj3C,kBAAkBxw4C,IAAInC,EAAEqh4C,+BAA+B/+2B,OAAO//gB,GAAGU,EAAE,EAAE,GAAG,IAAIC,EAAEnE,EAAE465C,gBAAgB355C,EAAEgh4C,aAAa993C,GAAGnE,EAAE475C,sBAAsBx85C,EAAE+E,EAAE+kZ,OAAOjoZ,EAAEiC,GAAG,IAAIyB,EAAE3E,EAAEk75C,mBAAmBj65C,EAAEgh4C,aAAat93C,IAAI3E,EAAE475C,sBAAsBx85C,EAAE,OAAO6B,EAAE0D,GAAG3E,EAAE675C,oBAAoBz85C,EAAEuF,EAAE1D,GAAI,CAAC,GAAGmB,EAAE,CAAC,IAAI0B,EAAEkG,GAAG3G,EAAEqtO,MAAM3rO,IAAIhC,GAAG9B,EAAEuh4C,+BAA+Bv/3C,GAAGhC,EAAEsh4C,uBAAuB,IAAI1+3C,EAAEzE,EAAEsxO,KAAKzvO,EAAEki4C,gBAAgBp+3C,EAAEjB,EAAE2F,IAAIrK,EAAEsxO,KAAKkjqC,kBAAkBxw4C,IAAInC,EAAEsh4C,uBAAuBh/2B,OAAOlghB,EAAEqtO,KAAKsjL,YAAY/yZ,EAAEuh4C,+BAA+B,IAAI3+3C,EAAEzE,EAAEsxO,KAAKzvO,EAAEmi4C,wBAAwBr+3C,EAAE0E,GAAG3F,GAAG1E,EAAEsxO,KAAKkjqC,kBAAkBxw4C,IAAInC,EAAEuh4C,+BAA+Bj/2B,OAAOlghB,EAAEqtO,KAAKsjL,WAAY,CAAC,GAAG50Z,EAAE834C,2BAA2B934C,EAAE634C,0BAA0B,CAAC,IAAIxz4C,EAAErE,EAAE034C,gBAAgBv24C,GAAG,GAAGkD,EAAE,CAAC,IAAIW,EAAE,IAAI/E,EAAEoqC,MAAM,EAAE,GAAG,GAAGhmC,EAAE4y4C,SAAS5y4C,EAAE8y4C,gBAAgB,CAAC,IAAI3w4C,GAAE,EAAG,GAAG9E,EAAE,CAAC,IAAI0E,EAAExF,EAAE465C,gBAAgBj45C,GAAG6C,GAAGpB,EAAEsD,GAAGlC,EAAE0jZ,OAAO1jZ,EAAEw5B,MAAMx5B,EAAEy5B,OAAOz5B,EAAE+t9B,WAAW/t9B,EAAE893C,cAAchh4C,GAAG8B,EAAE+q3C,QAAQts3C,EAAE7C,EAAE6iI,UAAU+rG,OAAO5uO,EAAE6iI,UAAU+rG,QAAQhpO,GAAE,CAAG,CAACnC,EAAE4y4C,SAASju4C,GAAGhJ,EAAEu24C,iBAAiBvB,qBAAqB/w4C,EAAEgtB,KAAK8p4C,QAAQv05C,GAAG3C,EAAEmB,EAAEF,EAAEE,EAAEnB,GAAGQ,EAAE8y4C,iBAAiBnu4C,GAAGhJ,EAAEu24C,iBAAiBvB,qBAAqB/w4C,EAAEgtB,KAAK8p4C,QAAQv05C,GAAG1B,EAAEE,EAAEF,EAAEE,EAAEnB,EAAG,CAAC,IAAI6B,EAAEoO,SAAShP,GAAGT,EAAEkz4C,iBAAiBlz4C,EAAEgz4C,SAASru4C,GAAGhJ,EAAEw24C,iBAAiBxB,qBAAqB/w4C,EAAEqtO,KAAKyprC,OAAOr15C,EAAE/B,EAAEqB,EAAEF,EAAE,EAAEnB,EAAEqB,EAAEnB,EAAE,GAAGQ,EAAEkz4C,iBAAiBvu4C,GAAGhJ,EAAEw24C,iBAAiBxB,qBAAqB/w4C,EAAEqtO,KAAKyprC,QAAQr15C,EAAE/B,EAAEqB,EAAEF,EAAE,EAAEnB,EAAEqB,EAAEnB,EAAE,EAAG,CAAC,CAAC,EAAEI,EAAE,EAAEA,EAAEjE,EAAEi24C,gBAAgB/04C,OAAO+C,IAAIV,EAAEU,GAAG,GAAGjE,EAAEs44C,aAAaz34C,KAAK4iI,UAAU+rG,OAAO3uO,KAAK865C,kBAAkB375C,EAAE065C,oBAAoB755C,KAAK865C,kBAAkB375C,EAAE065C,kBAAkBniB,iBAAiBv44C,EAAEu44C,kBAAkBv44C,EAAE234C,eAAe334C,EAAEixB,KAAK6j3C,qBAAqB904C,EAAEixB,KAAK6j3C,oBAAoBth1B,WAAWxzjB,EAAEixB,KAAK2j3C,oBAAoB504C,EAAE434C,eAAe534C,EAAEsxO,KAAKwjqC,qBAAqB904C,EAAEsxO,KAAKwjqC,oBAAoBth1B,WAAWxzjB,EAAEsxO,KAAKsjqC,oBAAoB504C,EAAE834C,2BAA2B934C,EAAEw24C,iBAAiBvB,uBAAuBj14C,EAAEw24C,iBAAiBvB,sBAAsBzh1B,WAAWxzjB,EAAEw24C,iBAAiBxB,sBAAsBh14C,EAAE634C,2BAA2B734C,EAAEu24C,iBAAiBtB,uBAAuBj14C,EAAEu24C,iBAAiBtB,sBAAsBzh1B,WAAWxzjB,EAAEu24C,iBAAiBvB,sBAAsBh14C,EAAE065C,oBAAoB755C,KAAK+65C,sBAAsB,CAAC,IAAI545C,EAAEnC,KAAK+65C,sBAAsB575C,EAAE065C,kBAAkB165C,EAAEs14C,uBAAuBty4C,EAAEi45C,cAAcj75C,EAAEu14C,wBAAwBvy4C,EAAEinK,eAAejqK,EAAEq14C,qBAAqBry4C,EAAEm15C,eAAet35C,KAAK+65C,sBAAsB575C,EAAE065C,iBAAkB,CAAC,EAAE7x5C,GAAGtI,UAAUw85C,iBAAiB,SAAS985C,GAAG,OAAO,IAAIY,KAAK493C,aAAa,GAAGx+3C,EAAEY,KAAK665C,YAAY765C,KAAK493C,aAAa593C,KAAKg85C,kBAAkB,EAAEh05C,GAAGtI,UAAUu85C,eAAe,SAAS785C,GAAG,OAAOyD,KAAK8K,IAAI,GAAG3N,KAAK4iI,UAAUjjG,KAAKvgC,GAAG,IAAI,EAAE4I,GAAGtI,UAAU485C,eAAe,SAASl95C,GAAG,OAAOY,KAAK465C,OAAOx75C,EAAEY,KAAKm85C,wBAAwBn85C,KAAK493C,YAAY,EAAE513C,GAAGtI,UAAU685C,YAAY,SAASn95C,EAAED,GAAG,IAAIyB,EAAEZ,KAAK+75C,yBAAyB585C,EAAE,EAAEa,KAAKi85C,eAAe985C,GAAG,EAAE,OAAOa,KAAK+75C,uBAAuB585C,EAAEa,KAAK665C,WAAW765C,KAAK493C,aAAah93C,EAAExB,CAAC,EAAE4I,GAAGtI,UAAU885C,SAAS,WAAWx85C,KAAK465C,OAAM,CAAG,EAAE,IAAIhy5C,GAAG/F,KAAK6yF,IAAI,EAAE,IAAIrsF,GAAGxG,KAAK6yF,IAAI,EAAE,IAAIltF,GAAG3F,KAAK6yF,IAAI,EAAE,IAAIjsF,GAAG5G,KAAK6yF,IAAI,EAAE,IAAIttF,GAAGvF,KAAK6yF,IAAI,EAAE,GAAG5sF,GAAGjG,KAAK6yF,IAAI,EAAE,GAAGtrF,GAAGvH,KAAK6yF,IAAI,EAAE,GAAG,SAAS3rF,GAAG3K,GAAG,GAAG,IAAIA,EAAEwsI,UAAUxsI,EAAE865C,OAAO,OAAO,EAAE,GAAG,IAAI965C,EAAEwsI,SAASxsI,EAAE865C,OAAO,OAAO,WAAW,IAAI/65C,EAAEC,EAAE865C,OAAO,EAAE,EAAEt55C,EAAEiC,KAAKyK,MAAM,IAAIlO,EAAEwsI,SAAS,OAAOhrI,EAAEgI,GAAGzJ,EAAEkK,GAAGzI,EAAE4H,GAAGrJ,EAAEsK,GAAG7I,EAAEwH,GAAGjJ,EAAE2J,GAAGlI,EAAEwJ,GAAGjL,CAAC,CAAC,IAAIqK,GAAG,EAAEa,GAAG,SAASjL,GAAGY,KAAKy85C,iBAAiB,eAAer95C,EAAE8hI,OAAO/9H,IAAI,wBAAmB,IAAS/D,EAAE8hI,OAAO/9H,IAAI,mBAAmB273C,WAAW,GAAG9+3C,KAAK085C,kBAAkB,EAAE185C,KAAK285C,kBAAkB,EAAE385C,KAAK485C,kBAAkB,CAAC,EAAE585C,KAAK685C,aAAa,EAAG,EAAExy5C,GAAG3K,UAAUo95C,kBAAkB,SAAS195C,EAAED,EAAEyB,EAAEN,EAAEP,GAAG,IAAI,IAAIiB,EAAEhB,KAAK685C,aAAa785C,KAAK085C,kBAAkBt95C,EAAEiB,QAAQ,GAAGlB,EAAE+75C,eAAel65C,EAAEV,EAAElB,EAAEY,KAAK085C,mBAAmB185C,KAAKy85C,kBAAkBz85C,KAAK085C,oBAAoB385C,IAAI,OAAO,EAAG,IAAIC,KAAKy85C,mBAAmBz85C,KAAKy85C,kBAAiB,EAAGz75C,EAAEurC,MAAK,SAAUntC,EAAED,GAAG,OAAOC,EAAE4k4C,QAAQ7k4C,EAAE6k4C,OAAQ,KAAIhk4C,KAAK285C,kBAAkB375C,EAAEX,QAAQ,GAAGlB,EAAE285C,qBAAqB965C,EAAEhB,KAAK285C,mBAAmB385C,KAAK485C,kBAAkBh85C,GAAGZ,KAAK285C,oBAAoB585C,IAAI,OAAO,EAAG,OAAO,CAAE,EAAE,IAAIiJ,GAAG,SAAS5J,EAAED,EAAEyB,EAAEN,EAAEP,EAAEiB,EAAE3B,GAAGW,KAAKqrgB,UAAU,IAAIrjgB,GAAG5I,EAAEW,EAAEiB,EAAE3B,GAAGW,KAAK+85C,uBAAuB595C,EAAEkB,OAAO,EAAEL,KAAKg95C,oBAAoBp85C,EAAEZ,KAAKi95C,oBAAoB385C,EAAEN,KAAKk95C,OAAM,CAAG,EAAEl05C,GAAGtJ,UAAU4gL,OAAO,WAAW,OAAOtgL,KAAKk95C,KAAK,EAAEl05C,GAAGtJ,UAAUo95C,kBAAkB,SAAS395C,EAAEyB,EAAEN,GAAG,IAAI,IAAIP,EAAEC,KAAKgB,EAAE5B,EAAEghS,QAAQ30Q,MAAMpsB,EAAE,WAAW,IAAIF,EAAEC,EAAEghS,QAAQ30Q,MAAMzqB,EAAE,OAAQjB,EAAEi95C,qBAAqB795C,EAAE,CAAC,EAAEa,KAAK+85C,wBAAwB,GAAG,CAAC,IAAIj85C,EAAEF,EAAEzB,EAAEa,KAAK+85C,yBAAyBv65C,EAAExC,KAAKqrgB,UAAUmv5B,eAAe53xC,UAAUjjG,KAAK,GAAG,WAAW7+B,EAAEyL,QAAQzL,EAAEiiO,SAASjiO,EAAEiiO,SAASvgO,MAAM1B,EAAEkiO,SAASliO,EAAEkiO,QAAQxgO,GAAG,CAAC,GAAGxC,KAAKm95C,mBAAmBn95C,KAAKm95C,iBAAiB,IAAI9y5C,GAAGvJ,IAAId,KAAKm95C,iBAAiBL,kBAAkBx85C,EAAEQ,EAAE+G,QAAQ7H,KAAKqrgB,UAAUrrgB,KAAKi95C,oBAAoBn85C,EAAEzB,GAAG,cAAcW,KAAKm95C,gBAAiB,CAACn95C,KAAK+85C,wBAAyB,CAAC/85C,KAAKk95C,OAAM,CAAG,EAAEl05C,GAAGtJ,UAAU+wT,OAAO,SAASrxT,GAAG,OAAOY,KAAKqrgB,UAAU56M,OAAOrxT,GAAGY,KAAKqrgB,SAAS,EAAE,IAAIligB,GAAG,IAAI/J,EAAEii5C,OAAO,EAAE/44C,GAAG,SAASlJ,EAAED,EAAEyB,GAAGZ,KAAKw94C,OAAOp+4C,EAAEY,KAAKo95C,uBAAuB,CAAC,EAAEp95C,KAAK655C,iBAAiBj55C,EAAE,IAAI,IAAIN,EAAE,EAAEA,EAAEnB,EAAEkB,OAAOC,IAAI,CAAC,IAAIP,EAAEZ,EAAEgE,IAAI7C,GAAGU,EAAEjB,EAAE8kB,IAAI7kB,KAAKo95C,uBAAuBp85C,KAAKhB,KAAKo95C,uBAAuBp85C,GAAG,IAAIhB,KAAKo95C,uBAAuBp85C,GAAGa,KAAK,CAACmg4C,YAAYji4C,EAAEii4C,YAAY/iuC,MAAMj/J,KAAKq95C,qBAAqBt95C,EAAEX,IAAK,CAAC,EAAEkJ,GAAG5I,UAAU295C,qBAAqB,SAASl+5C,EAAEyB,GAAG,IAAIN,EAAE6I,GAAGtG,KAAK6yF,IAAI,EAAE90F,EAAEm33C,UAAUpy3C,EAAE3F,KAAKw94C,OAAOzlB,UAAUpy3C,GAAG,MAAO,CAAC1B,EAAEpB,KAAKyK,OAAO1M,EAAEm33C,UAAU9z3C,EAAE7E,EAAEii5C,OAAOli5C,EAAEs8O,SAASn7O,GAAG0C,EAAEH,KAAKyK,OAAO1M,EAAEm33C,UAAU/03C,EAAE5D,EAAEii5C,OAAOli5C,EAAEu8O,SAASp7O,GAAG,EAAEgI,GAAG5I,UAAU495C,YAAY,SAASl+5C,EAAED,EAAEyB,GAAG,IAAI,IAAIN,EAAEN,KAAKw94C,OAAOzlB,UAAUpy3C,EAAExG,EAAE443C,UAAUpy3C,EAAE,EAAE9C,KAAK6yF,IAAI,EAAE11F,KAAKw94C,OAAOzlB,UAAUpy3C,EAAExG,EAAE443C,UAAUpy3C,GAAG5F,EAAE,EAAEA,EAAEX,EAAEiB,OAAON,IAAI,CAAC,IAAIiB,EAAE5B,EAAE+D,IAAIpD,GAAG,IAAIiB,EAAEgh4C,YAAY,CAAC,IAAI3i4C,EAAEW,KAAKo95C,uBAAuBp85C,EAAE6jB,KAAK,GAAGxlB,EAAE,IAAI,IAAIyB,EAAEd,KAAKq95C,qBAAqBr85C,EAAE7B,GAAGqD,EAAE,EAAE3B,EAAExB,EAAEmD,EAAE3B,EAAER,OAAOmC,GAAG,EAAE,CAAC,IAAIH,EAAExB,EAAE2B,GAAG,GAAGK,KAAKmjH,IAAI3jH,EAAE48J,MAAMh7J,EAAEnD,EAAEmD,IAAI3D,GAAGuC,KAAKmjH,IAAI3jH,EAAE48J,MAAMj8J,EAAElC,EAAEkC,IAAI1C,IAAIM,EAAEyB,EAAE2/3C,aAAa,CAACph4C,EAAEyB,EAAE2/3C,cAAa,EAAGhh4C,EAAEgh4C,YAAY3/3C,EAAE2/3C,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI133C,GAAG,WAAWtK,KAAKu95C,eAAe,CAAE,EAAEjz5C,GAAG5K,UAAU895C,SAAS,WAAW,QAASx95C,KAAKu95C,cAAc,EAAE,IAAI905C,GAAG,WAAWzI,KAAK43V,QAAQ,CAAC,EAAE53V,KAAKy95C,iBAAiB,CAAC,EAAEz95C,KAAKo/B,IAAI,CAAE,EAAE32B,GAAG/I,UAAUu15C,eAAe,SAAS715C,GAAG,IAAID,EAAE0D,KAAKogD,OAAO7jD,EAAEY,KAAKo/B,KAAK,KAAK,GAAG,IAAIjgC,EAAE,IAAI,IAAIyB,KAAKZ,KAAK43V,QAAQ,CAAC,IAAIt3V,EAAEN,KAAK43V,QAAQh3V,GAAGb,EAAE,CAAC,EAAE,IAAI,IAAIiB,KAAKV,EAAE,CAAC,IAAIjB,EAAEiB,EAAEU,GAAG3B,EAAEm+4C,OAAOn+4C,EAAEm+4C,OAAOvB,SAAS584C,EAAEm+4C,OAAO5l4C,KAAKzY,GAAGY,EAAEV,EAAEm+4C,OAAO343C,KAAKxlB,CAAE,CAACW,KAAK43V,QAAQh3V,GAAGb,CAAE,CAACC,KAAKo/B,IAAIhgC,CAAE,EAAEqJ,GAAG/I,UAAUg+5C,UAAU,SAASt+5C,EAAED,EAAEyB,GAAG,GAAGZ,KAAK43V,QAAQx4V,EAAEw84C,cAAc574C,KAAK43V,QAAQx4V,EAAEw84C,aAAax84C,EAAEylB,KAAK,CAAC,GAAG7kB,KAAK43V,QAAQx4V,EAAEw84C,aAAax84C,EAAEylB,KAAKg14C,mBAAmB165C,EAAE065C,iBAAiB,OAAO,EAAG755C,KAAK295C,yBAAyBv+5C,EAAEw84C,YAAY574C,KAAK43V,QAAQx4V,EAAEw84C,aAAax84C,EAAEylB,KAAM,CAAC,IAAI,IAAIvkB,EAAE,EAAEA,EAAEnB,EAAEi24C,gBAAgB/04C,OAAOC,IAAInB,EAAEi24C,gBAAgBjy4C,IAAI7C,GAAG0h4C,YAAY,EAAEhi4C,KAAKy95C,iBAAiBr+5C,EAAEw84C,eAAe574C,KAAKy95C,iBAAiBr+5C,EAAEw84C,aAAa,CAAC,GAAG,IAAI774C,EAAEC,KAAKy95C,iBAAiBr+5C,EAAEw84C,aAAa,IAAI,IAAI564C,KAAKhB,KAAK43V,QAAQ,CAAC,IAAIv4V,EAAEW,KAAK43V,QAAQ52V,GAAG,GAAGmkC,OAAOnkC,GAAG5B,EAAEw84C,YAAY,IAAI,IAAI964C,KAAKzB,EAAE,CAAC,IAAImD,EAAEnD,EAAEyB,GAAG0B,EAAEg74C,OAAOzB,UAAU384C,IAAIoD,EAAE865C,YAAYn+5C,EAAEi24C,gBAAgBh24C,EAAEW,EAAG,KAAM,CAAC,IAAIc,EAAExB,EAAED,EAAEy84C,SAAS122C,OAAOnkC,IAAI6jB,KAAKhkB,GAAGA,EAAEy85C,YAAYn+5C,EAAEi24C,gBAAgBh24C,EAAEW,EAAG,CAAC,CAAC,IAAI,IAAIsC,EAAE,EAAEA,EAAElD,EAAEi24C,gBAAgB/04C,OAAOgC,IAAI,CAAC,IAAIO,EAAEzD,EAAEi24C,gBAAgBjy4C,IAAId,GAAGO,EAAEo/3C,cAAcp/3C,EAAEo/3C,YAAYph4C,EAAE485C,WAAWz95C,EAAE6C,EAAEo/3C,cAAa,EAAI,CAAC,YAAO,IAAShi4C,KAAK43V,QAAQx4V,EAAEw84C,eAAe574C,KAAK43V,QAAQx4V,EAAEw84C,aAAa,CAAC,GAAG574C,KAAK43V,QAAQx4V,EAAEw84C,aAAax84C,EAAEylB,KAAK,IAAIvc,GAAGlJ,EAAED,EAAEi24C,gBAAgBj24C,EAAE065C,mBAAkB,CAAE,EAAEpx5C,GAAG/I,UAAUi+5C,yBAAyB,SAASv+5C,EAAED,GAAG,IAAI,IAAIyB,KAAKzB,EAAEi+5C,uBAAuB,IAAI,IAAI985C,EAAE,EAAEP,EAAEZ,EAAEi+5C,uBAAuBx85C,GAAGN,EAAEP,EAAEM,OAAOC,GAAG,SAASN,KAAKy95C,iBAAiBr+5C,GAAGW,EAAEO,GAAG0h4C,YAAa,EAAEv53C,GAAG/I,UAAUk+5C,mBAAmB,SAASx+5C,GAAG,IAAID,GAAE,EAAG,IAAI,IAAIyB,KAAKZ,KAAK43V,QAAQ,CAAC,IAAIt3V,EAAEN,KAAK43V,QAAQh3V,GAAG,IAAI,IAAIb,KAAKO,EAAElB,EAAEkB,EAAEP,GAAG855C,oBAAoB755C,KAAK295C,yBAAyB/85C,EAAEN,EAAEP,WAAWO,EAAEP,GAAGZ,GAAE,EAAI,CAAC,OAAOA,CAAC,EAAE,IAAIwK,GAAG,WAAW3J,KAAKsq5C,aAAa,CAAC,EAAEtq5C,KAAK695C,aAAa,IAAIvz5C,GAAGtK,KAAK895C,oBAAoB,EAAE995C,KAAK+95C,0BAA0B,CAAC,CAAE,EAAEp05C,GAAGjK,UAAUgmwB,SAAS,SAAStmwB,EAAED,EAAEyB,GAAG,IAAIN,EAAEN,KAAKsq5C,aAAalr5C,EAAEmsB,SAAI,IAASjrB,IAAIA,EAAEN,KAAKsq5C,aAAalr5C,EAAEmsB,IAAI,IAAI9iB,IAAI,IAAI1I,GAAE,EAAGiB,EAAE,CAAC,EAAEV,EAAE205C,eAAer05C,GAAG,IAAI,IAAIvB,EAAE,EAAEyB,EAAE3B,EAAEE,EAAEyB,EAAET,OAAOhB,GAAG,EAAE,CAAC,IAAImD,EAAE1B,EAAEzB,GAAGwB,EAAE2B,EAAEq94C,UAAUzg5C,GAAGyB,GAAGzB,EAAEmsB,KAAK1qB,EAAE4lJ,SAAS,KAAK5lJ,EAAEg55C,mBAAmBh55C,EAAEg55C,mBAAmB755C,KAAK895C,qBAAqBx95C,EAAEo95C,UAAUl75C,EAAEg74C,OAAO384C,EAAEb,KAAK695C,gBAAgB995C,GAAE,GAAIiB,EAAEH,EAAEg55C,mBAAkB,EAAI,CAAC,OAAOv55C,EAAEs95C,mBAAmB585C,KAAKjB,GAAE,GAAIA,CAAC,EAAE4J,GAAGjK,UAAUs+5C,kBAAkB,SAAS5+5C,GAAG,IAAID,EAAE,CAAC,EAAE,IAAI,IAAIyB,KAAKxB,EAAE8lB,SAAQ,SAAU9lB,GAAGD,EAAEC,IAAG,CAAI,IAAGY,KAAKsq5C,aAAanr5C,EAAEyB,WAAWZ,KAAKsq5C,aAAa1p5C,EAAG,EAAE,IAAIkJ,GAAG,SAAS3K,EAAEyB,GAAG,OAAOxB,EAAEyl5C,qBAAqB1l5C,EAAEyB,GAAGA,EAAEisB,QAAO,SAAUztB,GAAG,MAAO,kBAAkBA,EAAEu4E,UAAW,IAAG,EAAE9tE,GAAGzK,EAAEw5X,KAAKpqX,GAAG,CAAC,WAAW,cAAc,mBAAmB,oBAAoB,YAAY,YAAY,eAAe,oBAAoB,WAAW,gBAAgB,yBAAyBpF,GAAGhK,EAAEw5X,KAAKpqX,GAAG,CAAC,YAAY,UAAU,aAAa,aAAa5D,GAAG,WAAW,IAAIzL,EAAE,CAAC,EAAEyB,EAAExB,EAAE873C,UAAUvH,SAAS,IAAI,IAAIrz3C,KAAKlB,EAAE873C,UAAUtH,MAAM,CAAC,IAAI7z3C,EAAEiB,EAAE5B,EAAE873C,UAAUtH,MAAMtz3C,GAAMU,EAAEi6E,UAAS,OAAOl7E,EAAE,YAAYO,EAAEM,EAAE,UAAUI,EAAEuL,KAAK,GAAG,CAAC,KAAKpN,EAAEmB,GAAGP,EAAG,CAAC,OAAOZ,CAAC,CAA1L,GAA8L4J,GAAG,SAAS5J,GAAG,SAASyB,EAAEN,EAAEP,GAAG,IAAIiB,EAAEhB,UAAK,IAASD,IAAIA,EAAE,CAAC,GAAGZ,EAAES,KAAKI,MAAMA,KAAKqvB,IAAI/uB,EAAEN,KAAKw3iC,WAAW,IAAI9yiC,EAAEqK,KAAK/O,MAAMA,KAAKk05C,aAAa,IAAIpx5C,EAAE9C,KAAKk05C,aAAaxgC,iBAAiB1z3C,MAAMA,KAAKi+5C,aAAa,IAAIj75C,EAAE1C,EAAE6u5C,gBAAgBpv5C,EAAEut5C,0BAA0Btt5C,KAAKk+5C,UAAU,IAAIh65C,EAAE,IAAI,KAAKlE,KAAKm+5C,qBAAqB,IAAIx05C,GAAG3J,KAAKukY,QAAQ,CAAC,EAAEvkY,KAAKo+5C,kBAAkB,CAAC,EAAEp+5C,KAAKgoP,OAAO,GAAGhoP,KAAKyv5C,aAAa,CAAC,EAAEzv5C,KAAK693C,YAAY,IAAIz+3C,EAAEwk5C,YAAY5j5C,KAAK62yC,SAAQ,EAAG72yC,KAAKq+5C,iBAAiB,GAAGr+5C,KAAKs+5C,gBAAgBt+5C,KAAKw3iC,WAAWs3W,UAAU,cAAc1v5C,EAAEom5C,eAAe,IAAInm5C,EAAEW,KAAKA,KAAKu+5C,uBAAuB395C,EAAEsm5C,8BAA6B,SAAU/n5C,GAAGE,EAAEm4iC,WAAWs3W,UAAU,qBAAqB,CAACzxB,aAAal+3C,EAAEk+3C,aAAaC,UAAUn+3C,EAAEm+3C,YAAW,SAAUn+3C,EAAEyB,GAAG,GAAGxB,EAAEoo5C,6BAA6Bro5C,GAAGyB,GAAGA,EAAE6nC,OAAM,SAAUrpC,GAAG,OAAOA,CAAE,IAAG,IAAI,IAAIkB,KAAKjB,EAAEow5C,aAAapw5C,EAAEow5C,aAAanv5C,GAAGgod,QAAU,GAAI,IAAGtod,KAAK4Q,GAAG,QAAO,SAAUxR,GAAG,GAAG,WAAWA,EAAE4vQ,UAAU,aAAa5vQ,EAAEkw5C,eAAe,CAAC,IAAInw5C,EAAE6B,EAAEyu5C,aAAarw5C,EAAE6jd,UAAU,GAAG9jd,EAAE,CAAC,IAAIyB,EAAEzB,EAAEssV,YAAY,GAAG7qV,GAAGA,EAAEiu5C,eAAe,IAAI,IAAIvu5C,KAAKU,EAAEujY,QAAQ,CAAC,IAAIxkY,EAAEiB,EAAEujY,QAAQjkY,GAAGP,EAAE8H,SAASjH,EAAE2qB,IAAIvqB,EAAEw95C,eAAez+5C,EAAG,CAAC,CAAC,CAAE,GAAG,CAAC,OAAOZ,IAAIyB,EAAEpB,UAAUL,IAAIyB,EAAElB,UAAUJ,OAAOY,OAAOf,GAAGA,EAAEO,YAAYO,YAAYW,EAAEA,EAAElB,UAAU++5C,QAAQ,SAASt/5C,EAAEyB,GAAG,IAAIN,EAAEN,UAAK,IAASY,IAAIA,EAAE,CAAC,GAAGZ,KAAKsz3C,KAAK,IAAIl03C,EAAEuqB,MAAM,cAAc,CAACqlP,SAAS,WAAW,IAAIjvQ,EAAE,kBAAkBa,EAAEs1F,SAASt1F,EAAEs1F,UAAU92F,EAAEym5C,YAAY1m5C,GAAGA,EAAEa,KAAKqvB,IAAI8/3C,gBAAgBh+B,kBAAkBhy3C,EAAEyB,EAAE87a,aAAa,IAAI17a,EAAEhB,KAAKqvB,IAAI8/3C,gBAAgB/0e,iBAAiBj76B,EAAEC,EAAEoj5C,aAAa7vB,OAAO3y3C,KAAK0+5C,SAASt/5C,EAAEkm5C,QAAQtk5C,GAAE,SAAU7B,EAAEyB,GAAGN,EAAEo+5C,SAAS,KAAKv/5C,EAAEmB,EAAEgz3C,KAAK,IAAIl03C,EAAEijZ,WAAWljZ,IAAIyB,GAAGN,EAAEq+5C,MAAM/95C,EAAEb,EAAI,GAAG,EAAEa,EAAElB,UAAUk/5C,SAAS,SAASz/5C,EAAEyB,GAAG,IAAIN,EAAEN,UAAK,IAASY,IAAIA,EAAE,CAAC,GAAGZ,KAAKsz3C,KAAK,IAAIl03C,EAAEuqB,MAAM,cAAc,CAACqlP,SAAS,WAAWhvQ,KAAK0+5C,SAASt/5C,EAAEghS,QAAQtpP,OAAM,WAAYx2C,EAAEo+5C,SAAS,KAAKp+5C,EAAEq+5C,MAAMx/5C,GAAE,IAAKyB,EAAEs1F,SAAW,GAAG,EAAEt1F,EAAElB,UAAUm/5C,UAAU,WAAW7+5C,KAAKsz3C,KAAK,IAAIl03C,EAAEuqB,MAAM,cAAc,CAACqlP,SAAS,WAAWhvQ,KAAK2+5C,MAAM/z5C,IAAG,EAAI,EAAEhK,EAAElB,UAAUi/5C,MAAM,SAASx/5C,EAAEyB,GAAG,IAAIA,IAAIkJ,GAAG9J,KAAKZ,EAAEuo5C,cAAcxo5C,IAAI,CAAC,IAAI,IAAImB,KAAKN,KAAK62yC,SAAQ,EAAG72yC,KAAK8+5C,WAAW3/5C,EAAEA,EAAEy7C,QAAQ56C,KAAKu25C,UAAUj25C,EAAEnB,EAAEy7C,QAAQt6C,GAAG,CAAC41F,UAAS,IAAK/2F,EAAE003C,OAAO7z3C,KAAK++5C,YAAY5/5C,EAAE003C,QAAQ7z3C,KAAKk05C,aAAazzgC,WAAU,GAAIzgZ,KAAKi+5C,aAAa1Q,OAAOpu5C,EAAE203C,QAAQ,IAAI/z3C,EAAEkP,GAAGjP,KAAK8+5C,WAAWhh4C,QAAQ99B,KAAKgoP,OAAOjoP,EAAEsvB,KAAI,SAAUjwB,GAAG,OAAOA,EAAEmsB,EAAG,IAAGvrB,KAAKukY,QAAQ,CAAC,EAAEvkY,KAAKo+5C,kBAAkB,CAAC,EAAE,IAAI,IAAIp95C,EAAE,EAAE3B,EAAEU,EAAEiB,EAAE3B,EAAEgB,OAAOW,GAAG,EAAE,CAAC,IAAIF,EAAEzB,EAAE2B,IAAIF,EAAE1B,EAAEsl5C,iBAAiB5j5C,IAAI4y3C,iBAAiB1z3C,KAAK,CAACgvH,MAAM,CAACzjG,GAAGzqB,EAAEyqB,MAAMvrB,KAAKukY,QAAQzjY,EAAEyqB,IAAIzqB,EAAEd,KAAKo+5C,kBAAkBt95C,EAAEyqB,IAAIzqB,EAAEqssB,WAAY,CAACntsB,KAAKw3iC,WAAWs3W,UAAU,YAAY9u5C,KAAKg/5C,iBAAiBh/5C,KAAKgoP,SAAShoP,KAAK6vH,MAAM,IAAItsH,EAAEvD,KAAK8+5C,WAAWjvyC,OAAO7vH,KAAKsz3C,KAAK,IAAIl03C,EAAEuqB,MAAM,OAAO,CAACqlP,SAAS,WAAWhvQ,KAAKsz3C,KAAK,IAAIl03C,EAAEuqB,MAAM,cAAe,CAAC,EAAE/oB,EAAElB,UAAUq/5C,YAAY,SAAS5/5C,GAAG,IAAIyB,EAAEZ,KAAKA,KAAKi/5C,eAAe,SAAS9/5C,EAAEyB,EAAEN,GAAG,IAAIP,EAAEiB,EAAE3B,EAAEyB,EAAE1B,EAAEghS,QAAQn7L,iBAAiB,EAAE,MAAM,GAAGziG,EAAEpD,EAAEkm5C,QAAQ1k5C,EAAEw56B,iBAAiBx56B,EAAE4w3C,mBAAmBry3C,EAAE2B,EAAE,SAAS1B,EAAEoj5C,aAAaxvB,aAAY,SAAU5z3C,EAAED,GAAGqD,EAAE,KAAKnD,IAAIA,EAAED,EAAEW,EAAEZ,EAAEkD,IAAM,IAAGxB,EAAEzB,EAAEwsK,SAAShrK,EAAEw56B,iBAAiBx56B,EAAE4w3C,mBAAmBry3C,EAAE2B,EAAE,QAAQ1B,EAAEoj5C,aAAazvB,cAAa,SAAU3z3C,EAAED,GAAG0B,EAAE,KAAKxB,IAAIA,EAAED,EAAE4B,EAAE7B,EAAEkD,IAAM,IAAG,SAASA,IAAI,GAAGhD,EAAEiB,EAAEjB,QAAQ,GAAGU,GAAGiB,EAAE,CAAC,IAAI7B,EAAEC,EAAEghS,QAAQl6C,aAAallP,GAAGJ,EAAE,CAAC,EAAE,IAAI,IAAIE,KAAKf,EAAE,CAAC,IAAIyC,EAAEzC,EAAEe,GAAGD,EAAE2B,EAAEu8B,MAAM18B,EAAEG,EAAEw8B,OAAOp8B,EAAEJ,EAAEyB,EAAEnB,EAAEN,EAAEQ,EAAEL,EAAEH,EAAEqhP,IAAIjgP,EAAEpB,EAAEosH,WAAWlsH,EAAEF,EAAEor4C,SAASxq4C,EAAEZ,EAAEqr4C,SAAS1r4C,EAAEK,EAAEk2F,QAAQz1F,EAAE,IAAI7D,EAAEij5C,UAAU,CAACtj3C,MAAMl+B,EAAEm+B,OAAO38B,IAAIjD,EAAEij5C,UAAUvixC,KAAK3gI,EAAE8D,EAAE,CAACgB,EAAErB,EAAEI,EAAEF,GAAG,CAACmB,EAAE,EAAEjB,EAAE,GAAG,CAAC+7B,MAAMl+B,EAAEm+B,OAAO38B,IAAIzB,EAAEE,GAAG,CAAC0O,KAAKvM,EAAE2rH,WAAWhrH,EAAEigP,IAAIlhP,EAAEir4C,SAASlr4C,EAAEmr4C,SAASzq4C,EAAEs1F,QAAQv2F,EAAG,CAAC7B,EAAE,KAAKM,EAAG,CAAC,CAAC,MAAO,CAACiiD,OAAO,WAAWrgD,IAAIA,EAAEqgD,SAASrgD,EAAE,MAAM3B,IAAIA,EAAEgiD,SAAShiD,EAAE,KAAM,EAAE,CAA/wB,CAAixB1B,EAAEa,KAAKqvB,IAAI8/3C,iBAAgB,SAAUhw5C,EAAEmB,GAAG,GAAGM,EAAEq+5C,eAAe,KAAK9/5C,EAAEyB,EAAE0y3C,KAAK,IAAIl03C,EAAEijZ,WAAWljZ,SAAS,GAAGmB,EAAE,IAAI,IAAIP,KAAKO,EAAEM,EAAEsz5C,aAAa3qoC,SAASxpR,EAAEO,EAAEP,IAAIa,EAAEsz5C,aAAazzgC,WAAU,GAAI7/Y,EAAEy95C,iBAAiBz95C,EAAEsz5C,aAAapH,aAAals5C,EAAE42iC,WAAWs3W,UAAU,YAAYlu5C,EAAEy95C,kBAAkBz95C,EAAE0y3C,KAAK,IAAIl03C,EAAEuqB,MAAM,OAAO,CAACqlP,SAAS,UAAY,GAAG,EAAEpuQ,EAAElB,UAAU8+5C,eAAe,SAASr/5C,GAAG,IAAIyB,EAAEZ,KAAKyv5C,aAAatw5C,EAAE0I,QAAQ,GAAGjH,EAAE,CAAC,IAAIN,EAAEnB,EAAEg3I,YAAY,GAAG71I,EAAE,CAAC,IAAIP,EAAEa,EAAE6qV,aAAa,YAAY1rV,EAAEwM,MAAMxM,EAAE8u5C,iBAAiB,IAAI9u5C,EAAE8u5C,eAAeru5C,QAAQF,KAAKN,KAAKsz3C,KAAK,IAAIl03C,EAAEijZ,WAAW,IAAI76X,MAAM,iBAAiBlnB,EAAE,+BAA+BP,EAAEwrB,GAAG,kCAAkCpsB,EAAEosB,GAAG,MAAO,CAAC,CAAC,EAAE3qB,EAAElB,UAAUy3M,OAAO,WAAW,IAAIn3M,KAAK62yC,QAAQ,OAAO,EAAG,GAAGv3yC,OAAOgU,KAAKtT,KAAKk/5C,iBAAiB7+5C,OAAO,OAAO,EAAG,IAAI,IAAIjB,KAAKY,KAAKyv5C,aAAa,IAAIzv5C,KAAKyv5C,aAAarw5C,GAAG+3M,SAAS,OAAO,EAAG,QAASn3M,KAAKk05C,aAAa7pxC,UAAU,EAAEzpI,EAAElB,UAAUs/5C,iBAAiB,SAAS5/5C,GAAG,IAAI,IAAID,EAAE,GAAGyB,EAAE,EAAEN,EAAElB,EAAEwB,EAAEN,EAAED,OAAOO,GAAG,EAAE,CAAC,IAAIb,EAAEC,KAAKukY,QAAQjkY,EAAEM,IAAI,WAAWb,EAAEwM,MAAMpN,EAAE0C,KAAK9B,EAAEotsB,YAAa,CAAC,OAAOhusB,CAAC,EAAEyB,EAAElB,UAAU485C,eAAe,WAAW,GAAGt85C,KAAK6vH,OAAO7vH,KAAK6vH,MAAMyn2B,gBAAgB,OAAO,EAAG,IAAI,IAAIl49B,KAAKY,KAAKyv5C,aAAa,GAAGzv5C,KAAKyv5C,aAAarw5C,GAAGk49B,gBAAgB,OAAO,EAAG,IAAI,IAAIn49B,KAAKa,KAAKukY,QAAQ,GAAGvkY,KAAKukY,QAAQplY,GAAGm49B,gBAAgB,OAAO,EAAG,OAAO,CAAE,EAAE129B,EAAElB,UAAUy/5C,aAAa,WAAW,IAAIn/5C,KAAK62yC,QAAQ,MAAM,IAAIrvxC,MAAM,4BAA4B,EAAE5mB,EAAElB,UAAU6uE,OAAO,SAASpvE,GAAG,GAAGa,KAAK62yC,QAAQ,CAAC,IAAIj2yC,EAAEZ,KAAKo/5C,SAAS,GAAGp/5C,KAAKo/5C,SAAS,CAAC,IAAI9+5C,EAAEhB,OAAOgU,KAAKtT,KAAKq/5C,gBAAgBt/5C,EAAET,OAAOgU,KAAKtT,KAAKs/5C,gBAAgB,IAAI,IAAIt+5C,KAAMV,EAAED,QAAQN,EAAEM,SAASL,KAAKu/5C,oBAAoBj/5C,EAAEP,GAAGC,KAAKk/5C,gBAAgB,CAAC,IAAI7/5C,EAAEW,KAAKk/5C,gBAAgBl+5C,GAAG,WAAW3B,EAAEW,KAAKw/5C,cAAcx+5C,GAAG,UAAU3B,GAAGW,KAAKy/5C,aAAaz+5C,EAAG,CAAC,IAAI,IAAIF,KAAKd,KAAK0/5C,+BAA+B1/5C,KAAK2/5C,mBAAmB3/5C,KAAKukY,QAAQzjY,GAAGg/3C,kBAAkB3g4C,GAAGa,KAAK6vH,MAAMiwwC,kBAAkB3g4C,GAAGa,KAAKs+5C,eAAgB,CAAC,IAAI975C,EAAE,CAAC,EAAE,IAAI,IAAI3B,KAAKb,KAAKyv5C,aAAa,CAAC,IAAIpt5C,EAAErC,KAAKyv5C,aAAa5u5C,GAAG2B,EAAE3B,GAAGwB,EAAE8y5C,KAAK9y5C,EAAE8y5C,MAAK,CAAG,CAAC,IAAI,IAAIvy5C,EAAE,EAAEE,EAAE9C,KAAKgoP,OAAOplP,EAAEE,EAAEzC,OAAOuC,GAAG,EAAE,CAAC,IAAID,EAAE3C,KAAKukY,QAAQzhY,EAAEF,IAAID,EAAEo93C,YAAY5g4C,EAAEa,KAAKq+5C,mBAAmB175C,EAAEoxZ,SAAS50Z,EAAEwgC,OAAOh9B,EAAEkF,SAAS7H,KAAKyv5C,aAAa9s5C,EAAEkF,QAAQst5C,MAAK,EAAI,CAAC,IAAI,IAAIvx5C,KAAKpB,EAAE,CAAC,IAAIE,EAAE1C,KAAKyv5C,aAAa7r5C,GAAGpB,EAAEoB,KAAKlB,EAAEyy5C,MAAMzy5C,EAAE4w3C,KAAK,IAAIl03C,EAAEuqB,MAAM,OAAO,CAAC2l4C,eAAe,aAAatgpC,SAAS,SAASi0M,SAASr/c,IAAK,CAAC5D,KAAK6vH,MAAMkwwC,YAAY5g4C,GAAGa,KAAK2F,EAAExG,EAAEwgC,KAAK/+B,GAAGZ,KAAKsz3C,KAAK,IAAIl03C,EAAEuqB,MAAM,OAAO,CAACqlP,SAAS,UAAW,CAAC,EAAEpuQ,EAAElB,UAAUgg6C,6BAA6B,WAAW,IAAItg6C,EAAEE,OAAOgU,KAAKtT,KAAK4/5C,gBAAgB,GAAGxg6C,EAAEiB,OAAO,CAAC,IAAI,IAAIlB,KAAKa,KAAKyv5C,aAAazv5C,KAAKyv5C,aAAatw5C,GAAG+25C,2BAA2B,CAAC,QAAQ,YAAY925C,GAAGY,KAAK4/5C,eAAe,CAAC,CAAE,CAAC,EAAEh/5C,EAAElB,UAAU6/5C,oBAAoB,SAASng6C,EAAED,GAAGa,KAAKw3iC,WAAWs3W,UAAU,eAAe,CAAChx3C,OAAO99B,KAAKg/5C,iBAAiB5/5C,GAAG2r5C,WAAW5r5C,GAAI,EAAEyB,EAAElB,UAAU4+5C,cAAc,WAAWt+5C,KAAKo/5C,UAAS,EAAGp/5C,KAAKq/5C,eAAe,CAAC,EAAEr/5C,KAAKs/5C,eAAe,CAAC,EAAEt/5C,KAAKk/5C,gBAAgB,CAAC,EAAEl/5C,KAAK2/5C,mBAAmB,CAAC,EAAE3/5C,KAAK4/5C,eAAe,CAAC,CAAE,EAAEh/5C,EAAElB,UAAUgrI,SAAS,SAASvrI,GAAG,IAAIyB,EAAEZ,KAAK,GAAGA,KAAKm/5C,eAAer15C,GAAG9J,KAAKZ,EAAEuo5C,cAAcxo5C,IAAI,OAAO,GAAIA,EAAEC,EAAE8k5C,QAAQ/k5C,IAAI2+B,OAAO7uB,GAAG9P,EAAE2+B,QAAQ,IAAIx9B,EAAE,SAASnB,EAAEyB,GAAG,IAAIzB,EAAE,MAAO,CAAC,CAAC4tsC,QAAQv+rC,GAAG81Z,SAASjtX,KAAK,CAACz2C,KAAK,IAAIN,EAAE,GAAG,IAAI,IAAIlB,EAAE2iK,UAAU5iK,EAAEmH,QAAQ1F,EAAE0F,SAAS,MAAO,CAAC,CAACymsC,QAAQv+rC,GAAG81Z,SAASjtX,KAAK,CAACz2C,KAAKxB,EAAE2iK,UAAU5iK,EAAE8/B,OAAOr+B,EAAEq+B,SAAS3+B,EAAEuB,KAAK,CAACkrsC,QAAQv+rC,GAAGwyB,UAAUqW,KAAK,CAACz2C,EAAEq+B,UAAU7/B,EAAE2iK,UAAU5iK,EAAEwgC,KAAK/+B,EAAE++B,OAAOr/B,EAAEuB,KAAK,CAACkrsC,QAAQv+rC,GAAG2yB,QAAQkW,KAAK,CAACz2C,EAAE++B,QAAQvgC,EAAE2iK,UAAU5iK,EAAEqgC,QAAQ5+B,EAAE4+B,UAAUl/B,EAAEuB,KAAK,CAACkrsC,QAAQv+rC,GAAGmo5C,WAAWt/2C,KAAK,CAACz2C,EAAE4+B,WAAWpgC,EAAE2iK,UAAU5iK,EAAEugC,MAAM9+B,EAAE8+B,QAAQp/B,EAAEuB,KAAK,CAACkrsC,QAAQv+rC,GAAGoo5C,SAASv/2C,KAAK,CAACz2C,EAAE8+B,SAAStgC,EAAE2iK,UAAU5iK,EAAE003C,OAAOjz3C,EAAEiz3C,SAASvz3C,EAAEuB,KAAK,CAACkrsC,QAAQv+rC,GAAGqo5C,UAAUx/2C,KAAK,CAACz2C,EAAEiz3C,UAAUz03C,EAAE2iK,UAAU5iK,EAAE203C,OAAOlz3C,EAAEkz3C,SAASxz3C,EAAEuB,KAAK,CAACkrsC,QAAQv+rC,GAAGso5C,UAAUz/2C,KAAK,CAACz2C,EAAEkz3C,UAAU103C,EAAE2iK,UAAU5iK,EAAE2oH,WAAWlnH,EAAEknH,aAAaxnH,EAAEuB,KAAK,CAACkrsC,QAAQv+rC,GAAGkw3C,cAAcrn1C,KAAK,CAACz2C,EAAEknH,cAAc1oH,EAAE2iK,UAAU5iK,EAAE0wH,MAAMjvH,EAAEivH,QAAQvvH,EAAEuB,KAAK,CAACkrsC,QAAQv+rC,GAAGq/4C,SAASx22C,KAAK,CAACz2C,EAAEivH,SAAS,IAAI9vH,EAAE,CAAC,EAAEiB,EAAE,IAAI,SAAS7B,EAAEyB,EAAEN,EAAEP,GAAG,IAAIiB,EAAE,IAAIA,KAAKJ,EAAEA,GAAG,CAAC,EAAEzB,EAAEA,GAAG,CAAC,EAAEA,EAAEQ,eAAeqB,KAAKJ,EAAEjB,eAAeqB,IAAImN,GAAGnN,EAAEV,EAAEP,IAAI,IAAIiB,KAAKJ,EAAEA,EAAEjB,eAAeqB,KAAK7B,EAAEQ,eAAeqB,GAAG5B,EAAE2iK,UAAU5iK,EAAE6B,GAAGJ,EAAEI,MAAM,YAAY7B,EAAE6B,GAAGuL,MAAM,YAAY3L,EAAEI,GAAGuL,MAAMmC,GAAGvP,EAAEyB,EAAEI,GAAGV,EAAEuB,KAAK,CAACkrsC,QAAQv+rC,GAAGgo5C,qBAAqBn/2C,KAAK,CAACr2C,EAAEJ,EAAEI,GAAGwO,QAAQI,GAAG5O,EAAEJ,EAAEN,EAAEP,IAAIsQ,GAAGrP,EAAEJ,EAAEN,GAAI,CAAlU,CAAoUnB,EAAEy7C,QAAQh6C,EAAEg6C,QAAQ55C,EAAEjB,GAAG,IAAIV,EAAE,GAAGF,EAAE2+B,QAAQ3+B,EAAE2+B,OAAO5Y,SAAQ,SAAU9lB,GAAGW,EAAEX,EAAEyI,QAAQvH,EAAEuB,KAAK,CAACkrsC,QAAQv+rC,GAAGi3vB,YAAYputB,KAAK,CAACj4C,EAAEmsB,MAAMlsB,EAAEwC,KAAKzC,EAAI,IAAGkB,EAAEA,EAAE0B,OAAOhB,GAAG,SAAS7B,EAAEyB,EAAEN,GAAGM,EAAEA,GAAG,GAAG,IAAIb,EAAEiB,EAAE3B,EAAEyB,EAAE0B,EAAE3B,EAAEwB,EAAEO,GAAGzD,EAAEA,GAAG,IAAIkwB,IAAIvgB,IAAIhM,EAAElC,EAAEyuB,IAAIvgB,IAAInM,EAAExD,EAAEu0B,OAAOrkB,GAAG,CAAC,GAAGzL,EAAEhD,EAAE8yB,OAAOrkB,GAAG,CAAC,GAAG3M,EAAEE,EAAEb,QAAQqB,EAAE9D,OAAOY,OAAO,MAAM,IAAIH,EAAE,EAAEiB,EAAE,EAAEjB,EAAE6C,EAAEvC,OAAON,IAAI6D,EAAEjE,eAAeN,EAAEuD,EAAE7C,IAAIiB,KAAKV,EAAEuB,KAAK,CAACkrsC,QAAQv+rC,GAAGi3vB,YAAYputB,KAAK,CAACh4C,KAAKqD,EAAEugB,OAAOvgB,EAAElC,QAAQnB,EAAE2B,GAAG,IAAI,IAAIjB,EAAE,EAAEiB,EAAE,EAAEjB,EAAE+C,EAAEzC,OAAON,IAAI2C,EAAEA,EAAErC,OAAO,EAAEN,MAAMV,EAAEyD,EAAEA,EAAEzC,OAAO,EAAEN,MAAM4C,EAAEhD,eAAeN,IAAIiB,EAAEuB,KAAK,CAACkrsC,QAAQv+rC,GAAGi3vB,YAAYputB,KAAK,CAACh4C,KAAKqD,EAAEugB,OAAOvgB,EAAEu7K,YAAY5+K,EAAEqD,EAAErC,OAAOW,GAAG,IAAIA,IAAIV,EAAEuB,KAAK,CAACkrsC,QAAQv+rC,GAAGk3vB,SAASrutB,KAAK,CAACzzC,EAAEvE,GAAGwB,EAAE6B,EAAEA,EAAErC,OAAON,MAAM2C,EAAEugB,OAAOvgB,EAAErC,OAAON,EAAE,EAAEV,GAAG+D,EAAE/D,IAAG,GAAI,IAAIU,EAAE,EAAEA,EAAE+C,EAAEzC,OAAON,IAAI,GAAGe,EAAE6B,EAAEtD,EAAEyD,EAAE/C,IAAIyC,EAAEoB,EAAEvE,IAAI+D,EAAE/D,KAAKD,EAAE2iK,UAAUjhK,EAAE0B,GAAG,GAAGpD,EAAE2iK,UAAUjhK,EAAE+G,OAAOrF,EAAEqF,SAASzI,EAAE2iK,UAAUjhK,EAAE,gBAAgB0B,EAAE,kBAAkBpD,EAAE2iK,UAAUjhK,EAAEyL,KAAK/J,EAAE+J,MAAM,CAAC,IAAIlK,KAAKkM,GAAGzN,EAAEogI,OAAO1+H,EAAE0+H,OAAO5gI,EAAEjB,EAAE,KAAKmP,GAAG8w3C,mBAAmB/w3C,GAAGzN,EAAEk03C,MAAMxy3C,EAAEwy3C,MAAM103C,EAAEjB,EAAE,KAAKmP,GAAG6w3C,kBAAkBjg4C,EAAE2iK,UAAUjhK,EAAE+rB,OAAOrqB,EAAEqqB,SAASvsB,EAAEuB,KAAK,CAACkrsC,QAAQv+rC,GAAGgzhB,UAAUnqf,KAAK,CAACh4C,EAAEmD,EAAEqqB,UAAUztB,EAAE2iK,UAAUjhK,EAAEiiO,QAAQvgO,EAAEugO,UAAU3jO,EAAE2iK,UAAUjhK,EAAEkiO,QAAQxgO,EAAEwgO,UAAU1iO,EAAEuB,KAAK,CAACkrsC,QAAQv+rC,GAAGio5C,kBAAkBp/2C,KAAK,CAACh4C,EAAEmD,EAAEugO,QAAQvgO,EAAEwgO,WAAWliO,EAAEA,EAAEnB,eAAe0C,IAAI,WAAWA,GAAG,UAAUA,GAAG,WAAWA,GAAG,aAAaA,GAAG,YAAYA,GAAG,YAAYA,IAAI,IAAIA,EAAE7B,QAAQ,UAAU+N,GAAGzN,EAAEuB,GAAGG,EAAEH,GAAG/B,EAAEjB,EAAEgD,EAAEN,MAAM,GAAGyM,GAAG6w3C,kBAAkBjg4C,EAAE2iK,UAAUjhK,EAAEuB,GAAGG,EAAEH,KAAK/B,EAAEuB,KAAK,CAACkrsC,QAAQv+rC,GAAGko5C,iBAAiBr/2C,KAAK,CAACh4C,EAAEgD,EAAEG,EAAEH,OAAO,IAAIA,KAAKG,EAAEA,EAAE7C,eAAe0C,KAAKvB,EAAEnB,eAAe0C,IAAI,WAAWA,GAAG,UAAUA,GAAG,WAAWA,GAAG,aAAaA,GAAG,YAAYA,GAAG,YAAYA,IAAI,IAAIA,EAAE7B,QAAQ,UAAU+N,GAAGzN,EAAEuB,GAAGG,EAAEH,GAAG/B,EAAEjB,EAAEgD,EAAEN,MAAM,GAAGyM,GAAG6w3C,kBAAkBjg4C,EAAE2iK,UAAUjhK,EAAEuB,GAAGG,EAAEH,KAAK/B,EAAEuB,KAAK,CAACkrsC,QAAQv+rC,GAAGko5C,iBAAiBr/2C,KAAK,CAACh4C,EAAEgD,EAAEG,EAAEH,MAAO,MAAM/B,EAAEuB,KAAK,CAACkrsC,QAAQv+rC,GAAGi3vB,YAAYputB,KAAK,CAACh4C,KAAKwB,EAAE6B,EAAEA,EAAEu7K,YAAY5+K,GAAG,GAAGiB,EAAEuB,KAAK,CAACkrsC,QAAQv+rC,GAAGk3vB,SAASrutB,KAAK,CAAC70C,EAAE3B,IAAK,CAAtrD,CAAwrDxB,EAAEuB,EAAEk9B,OAAOx9B,EAAG,CAAC,MAAMlB,GAAGioB,QAAQC,KAAK,gCAAgCloB,GAAGkB,EAAE,CAAC,CAACyssC,QAAQv+rC,GAAG81Z,SAASjtX,KAAK,CAACz2C,IAAK,CAAC,OAAON,CAAC,CAAhjG,CAAkjGN,KAAKmtsB,YAAYhusB,GAAG0tB,QAAO,SAAUztB,GAAG,QAASA,EAAE2tsC,WAAW3jsC,GAAI,IAAG,GAAG,IAAI9I,EAAED,OAAO,OAAO,EAAG,IAAIN,EAAEO,EAAEusB,QAAO,SAAUztB,GAAG,QAASA,EAAE2tsC,WAAWljsC,GAAI,IAAG,GAAG9J,EAAEM,OAAO,EAAE,MAAM,IAAImnB,MAAM,kBAAkBznB,EAAEsvB,KAAI,SAAUjwB,GAAG,OAAOA,EAAE2tsC,OAAQ,IAAGlgsC,KAAK,MAAM,KAAK,OAAOvM,EAAE4kB,SAAQ,SAAU9lB,GAAG,kBAAkBA,EAAE2tsC,SAASnssC,EAAExB,EAAE2tsC,SAASxssC,MAAMK,EAAExB,EAAEi4C,KAAO,IAAGr3C,KAAK8+5C,WAAW3/5C,GAAE,CAAE,EAAEyB,EAAElB,UAAU6pR,SAAS,SAASpqR,EAAEyB,GAAG,GAAGZ,KAAK4rK,SAASzsK,GAAG,OAAOa,KAAKsz3C,KAAK,IAAIl03C,EAAEijZ,WAAW,IAAI76X,MAAM,6CAA6CxnB,KAAKk05C,aAAa3qoC,SAASpqR,EAAEyB,GAAGZ,KAAK6/5C,mBAAmB1g6C,EAAG,EAAEyB,EAAElB,UAAUkt5C,YAAY,SAASxt5C,EAAED,GAAGa,KAAKk05C,aAAatH,YAAYxt5C,EAAED,EAAG,EAAEyB,EAAElB,UAAUksK,SAAS,SAASxsK,GAAG,OAAOY,KAAKk05C,aAAatovC,SAASxsK,EAAE,EAAEwB,EAAElB,UAAUmt5C,YAAY,SAAS1t5C,GAAG,IAAIa,KAAK4rK,SAASzsK,GAAG,OAAOa,KAAKsz3C,KAAK,IAAIl03C,EAAEijZ,WAAW,IAAI76X,MAAM,qCAAqCxnB,KAAKk05C,aAAarH,YAAY1t5C,GAAGa,KAAK6/5C,mBAAmB1g6C,EAAG,EAAEyB,EAAElB,UAAUmg6C,mBAAmB,SAAS1g6C,GAAGa,KAAKq+5C,iBAAiBr+5C,KAAKk05C,aAAapH,aAAa9s5C,KAAK4/5C,eAAezg6C,IAAG,EAAGa,KAAKo/5C,UAAS,EAAGp/5C,KAAKw3iC,WAAWs3W,UAAU,YAAY9u5C,KAAKq+5C,kBAAkBr+5C,KAAKsz3C,KAAK,IAAIl03C,EAAEuqB,MAAM,OAAO,CAACqlP,SAAS,UAAW,EAAEpuQ,EAAElB,UAAUot5C,WAAW,WAAW,OAAO9s5C,KAAKm/5C,eAAen/5C,KAAKk05C,aAAapH,YAAY,EAAEls5C,EAAElB,UAAU625C,UAAU,SAASp35C,EAAEyB,EAAEN,GAAG,IAAIP,EAAEC,KAAK,QAAG,IAASM,IAAIA,EAAE,CAAC,GAAGN,KAAKm/5C,oBAAe,IAASn/5C,KAAKyv5C,aAAatw5C,GAAG,MAAM,IAAIqoB,MAAM,0CAA0C,IAAI5mB,EAAE2L,KAAK,MAAM,IAAIib,MAAM,oFAAoFloB,OAAOgU,KAAK1S,GAAGiM,KAAK,MAAM,KAAK,KAAK,CAAC,SAAS,SAAS,UAAU,QAAQ,SAASrM,QAAQI,EAAE2L,OAAO,GAAGvM,KAAK0/3C,UAAUtg4C,EAAEuo5C,cAAc9/4C,OAAO,WAAW1I,EAAEyB,EAAE,KAAKN,IAAI,CAACN,KAAKqvB,KAAKrvB,KAAKqvB,IAAI4/3C,yBAAyBru5C,EAAEsn5C,uBAAsB,GAAI,IAAIln5C,EAAEhB,KAAKyv5C,aAAatw5C,GAAG,IAAI+P,GAAG/P,EAAEyB,EAAEZ,KAAKw3iC,YAAYx2iC,EAAEqT,MAAMrU,KAAKgB,EAAE0y3C,iBAAiB1z3C,MAAK,WAAY,MAAO,CAAC8/5C,eAAe//5C,EAAEo3M,SAAStvM,OAAO7G,EAAEmssB,YAAYlqP,SAAS9jd,EAAG,IAAG6B,EAAEwnO,MAAMxoO,KAAKqvB,KAAKrvB,KAAKo/5C,UAAS,CAAG,CAAC,EAAEx+5C,EAAElB,UAAUyq5C,aAAa,SAAShr5C,GAAG,GAAGa,KAAKm/5C,oBAAe,IAASn/5C,KAAKyv5C,aAAatw5C,GAAG,MAAM,IAAIqoB,MAAM,mCAAmC,IAAI,IAAI5mB,KAAKZ,KAAKukY,QAAQ,GAAGvkY,KAAKukY,QAAQ3jY,GAAGiH,SAAS1I,EAAE,OAAOa,KAAKsz3C,KAAK,IAAIl03C,EAAEijZ,WAAW,IAAI76X,MAAM,WAAWroB,EAAE,oCAAoCyB,EAAE,oBAAoB,IAAIN,EAAEN,KAAKyv5C,aAAatw5C,UAAUa,KAAKyv5C,aAAatw5C,UAAUa,KAAKk/5C,gBAAgB//5C,GAAGmB,EAAEgz3C,KAAK,IAAIl03C,EAAEuqB,MAAM,OAAO,CAAC2l4C,eAAe,WAAWtgpC,SAAS,SAASi0M,SAAS9jd,KAAKmB,EAAEoz3C,iBAAiB,MAAMpz3C,EAAEov5C,aAAapv5C,EAAE0oO,UAAU1oO,EAAE0oO,SAAShpO,KAAKqvB,KAAKrvB,KAAKo/5C,UAAS,CAAG,EAAEx+5C,EAAElB,UAAU825C,qBAAqB,SAASp35C,EAAED,GAAGa,KAAKm/5C,eAAen/5C,KAAKyv5C,aAAarw5C,GAAGqsV,YAAY3sN,QAAQ3/H,GAAGa,KAAKo/5C,UAAS,CAAG,EAAEx+5C,EAAElB,UAAU+rV,UAAU,SAASrsV,GAAG,OAAOY,KAAKyv5C,aAAarw5C,IAAIY,KAAKyv5C,aAAarw5C,GAAGqsV,WAAW,EAAE7qV,EAAElB,UAAUgmwB,SAAS,SAASvmwB,EAAEyB,EAAEN,QAAG,IAASA,IAAIA,EAAE,CAAC,GAAGN,KAAKm/5C,eAAe,IAAIp/5C,EAAEZ,EAAEosB,GAAG,GAAGvrB,KAAKw0kC,SAASz0kC,GAAGC,KAAKsz3C,KAAK,IAAIl03C,EAAEijZ,WAAW,IAAI76X,MAAM,kBAAkBznB,EAAE,sCAAuC,CAAC,IAAIiB,EAAE,GAAG,WAAW7B,EAAEoN,KAAK,CAAC,GAAGzC,GAAG9J,KAAKZ,EAAEqo5C,yBAAyBto5C,IAAI,OAAO6B,EAAE5B,EAAEsl5C,iBAAiBvl5C,EAAG,KAAM,CAAC,GAAG,iBAAiBA,EAAE0I,SAAS7H,KAAKu25C,UAAUx25C,EAAEZ,EAAE0I,QAAQ1I,EAAEC,EAAE8k5C,QAAQ/k5C,GAAGA,EAAEC,EAAEiqZ,OAAOlqZ,EAAE,CAAC0I,OAAO9H,KAAKC,KAAK0/3C,UAAUtg4C,EAAEuo5C,cAAc34xC,MAAM,UAAUjvH,EAAEZ,EAAE,CAACk83C,YAAY,GAAG/63C,GAAG,OAAOU,EAAE5B,EAAEsl5C,iBAAiBvl5C,GAAGa,KAAKw+5C,eAAex95C,GAAGA,EAAE0y3C,iBAAiB1z3C,KAAK,CAACgvH,MAAM,CAACzjG,GAAGxrB,KAAKC,KAAKo+5C,kBAAkBp95C,EAAEuqB,IAAIvqB,EAAEmssB,WAAY,CAAC,IAAI9tsB,EAAEuB,EAAEZ,KAAKgoP,OAAOxnP,QAAQI,GAAGZ,KAAKgoP,OAAO3nP,OAAO,GAAGO,IAAI,IAAIvB,EAAEW,KAAKsz3C,KAAK,IAAIl03C,EAAEijZ,WAAW,IAAI76X,MAAM,kBAAkB5mB,EAAE,uCAAwC,CAAC,GAAGZ,KAAKgoP,OAAO/kO,OAAO5jB,EAAE,EAAEU,GAAGC,KAAK+/5C,oBAAmB,EAAG//5C,KAAKukY,QAAQxkY,GAAGiB,EAAEhB,KAAKs/5C,eAAev/5C,IAAIiB,EAAE6G,QAAQ,WAAW7G,EAAEuL,KAAK,CAAC,IAAIzL,EAAEd,KAAKs/5C,eAAev/5C,UAAUC,KAAKs/5C,eAAev/5C,GAAGe,EAAEyL,OAAOvL,EAAEuL,KAAKvM,KAAKk/5C,gBAAgBl+5C,EAAE6G,QAAQ,SAAS7H,KAAKk/5C,gBAAgBl+5C,EAAE6G,QAAQ,SAAS7H,KAAKyv5C,aAAazu5C,EAAE6G,QAAQmkT,QAAS,CAAChsT,KAAK6nJ,aAAa7mJ,GAAGA,EAAEwnO,OAAOxnO,EAAEwnO,MAAMxoO,KAAKqvB,IAAK,CAAC,CAAC,EAAEzuB,EAAElB,UAAU6lwB,UAAU,SAASpmwB,EAAEyB,GAAG,GAAGZ,KAAKm/5C,eAAen/5C,KAAKo/5C,UAAS,EAAGp/5C,KAAKukY,QAAQplY,IAAI,GAAGA,IAAIyB,EAAE,CAAC,IAAIN,EAAEN,KAAKgoP,OAAOxnP,QAAQrB,GAAGa,KAAKgoP,OAAO/kO,OAAO3iB,EAAE,GAAG,IAAIP,EAAEa,EAAEZ,KAAKgoP,OAAOxnP,QAAQI,GAAGZ,KAAKgoP,OAAO3nP,OAAOO,IAAI,IAAIb,EAAEC,KAAKsz3C,KAAK,IAAIl03C,EAAEijZ,WAAW,IAAI76X,MAAM,kBAAkB5mB,EAAE,oCAAoCZ,KAAKgoP,OAAO/kO,OAAOljB,EAAE,EAAEZ,GAAGa,KAAK+/5C,oBAAmB,EAAI,OAAO//5C,KAAKsz3C,KAAK,IAAIl03C,EAAEijZ,WAAW,IAAI76X,MAAM,cAAcroB,EAAE,6DAA8D,EAAEyB,EAAElB,UAAU+lwB,YAAY,SAAStmwB,GAAGa,KAAKm/5C,eAAe,IAAIv+5C,EAAEZ,KAAKukY,QAAQplY,GAAG,GAAGyB,EAAE,CAACA,EAAE8y3C,iBAAiB,MAAM,IAAIpz3C,EAAEN,KAAKgoP,OAAOxnP,QAAQrB,GAAGa,KAAKgoP,OAAO/kO,OAAO3iB,EAAE,GAAGN,KAAK+/5C,oBAAmB,EAAG//5C,KAAKo/5C,UAAS,EAAGp/5C,KAAKs/5C,eAAeng6C,GAAGyB,SAASZ,KAAKukY,QAAQplY,UAAUa,KAAKo+5C,kBAAkBj/5C,UAAUa,KAAKq/5C,eAAelg6C,UAAUa,KAAK2/5C,mBAAmBxg6C,GAAGyB,EAAEooO,UAAUpoO,EAAEooO,SAAShpO,KAAKqvB,IAAK,MAAMrvB,KAAKsz3C,KAAK,IAAIl03C,EAAEijZ,WAAW,IAAI76X,MAAM,cAAcroB,EAAE,+DAAgE,EAAEyB,EAAElB,UAAU80kC,SAAS,SAASp1kC,GAAG,OAAOY,KAAKukY,QAAQnlY,EAAE,EAAEwB,EAAElB,UAAUg/4C,SAAS,SAASt/4C,GAAG,OAAOA,KAAKY,KAAKukY,OAAO,EAAE3jY,EAAElB,UAAU+25C,kBAAkB,SAASt35C,EAAEyB,EAAEN,GAAGN,KAAKm/5C,eAAe,IAAIp/5C,EAAEC,KAAKw0kC,SAASr1kC,GAAGY,EAAEA,EAAEgjO,UAAUniO,GAAGb,EAAEijO,UAAU1iO,IAAI,MAAMM,IAAIb,EAAEgjO,QAAQniO,GAAG,MAAMN,IAAIP,EAAEijO,QAAQ1iO,GAAGN,KAAK6nJ,aAAa9nJ,IAAIC,KAAKsz3C,KAAK,IAAIl03C,EAAEijZ,WAAW,IAAI76X,MAAM,cAAcroB,EAAE,qEAAsE,EAAEyB,EAAElB,UAAU8hiB,UAAU,SAASriiB,EAAEyB,EAAEN,QAAG,IAASA,IAAIA,EAAE,CAAC,GAAGN,KAAKm/5C,eAAe,IAAIp/5C,EAAEC,KAAKw0kC,SAASr1kC,GAAG,GAAGY,GAAG,IAAIX,EAAE2iK,UAAUhiK,EAAE8sB,OAAOjsB,GAAG,OAAO,MAAMA,GAAGb,EAAE8sB,YAAO,OAAY7sB,KAAK6nJ,aAAa9nJ,SAASC,KAAK0/3C,UAAUtg4C,EAAEuo5C,cAAc963C,OAAO,UAAU9sB,EAAEwrB,GAAG,UAAU3qB,EAAE,KAAKN,KAAKP,EAAE8sB,OAAOztB,EAAE8k5C,QAAQtj5C,GAAGZ,KAAK6nJ,aAAa9nJ,UAAUC,KAAKsz3C,KAAK,IAAIl03C,EAAEijZ,WAAW,IAAI76X,MAAM,cAAcroB,EAAE,gEAAiE,EAAEyB,EAAElB,UAAUsg6C,UAAU,SAAS7g6C,GAAG,OAAOC,EAAE8k5C,QAAQlk5C,KAAKw0kC,SAASr1kC,GAAG0tB,OAAO,EAAEjsB,EAAElB,UAAU4/3C,kBAAkB,SAASng4C,EAAEyB,EAAEN,EAAEP,QAAG,IAASA,IAAIA,EAAE,CAAC,GAAGC,KAAKm/5C,eAAe,IAAIn+5C,EAAEhB,KAAKw0kC,SAASr1kC,GAAG6B,EAAE5B,EAAE2iK,UAAU/gK,EAAEy+3C,kBAAkB7+3C,GAAGN,KAAKU,EAAEs+3C,kBAAkB1+3C,EAAEN,EAAEP,GAAGC,KAAK6nJ,aAAa7mJ,IAAIhB,KAAKsz3C,KAAK,IAAIl03C,EAAEijZ,WAAW,IAAI76X,MAAM,cAAcroB,EAAE,8DAA+D,EAAEyB,EAAElB,UAAU+/3C,kBAAkB,SAAStg4C,EAAEyB,GAAG,IAAIN,EAAEN,KAAKw0kC,SAASr1kC,GAAG,GAAGmB,EAAE,OAAOA,EAAEm/3C,kBAAkB7+3C,GAAGZ,KAAKsz3C,KAAK,IAAIl03C,EAAEijZ,WAAW,IAAI76X,MAAM,cAAcroB,EAAE,yCAA0C,EAAEyB,EAAElB,UAAU2/3C,iBAAiB,SAASlg4C,EAAEyB,EAAEN,EAAEP,QAAG,IAASA,IAAIA,EAAE,CAAC,GAAGC,KAAKm/5C,eAAe,IAAIn+5C,EAAEhB,KAAKw0kC,SAASr1kC,GAAG6B,EAAE5B,EAAE2iK,UAAU/gK,EAAE2+3C,iBAAiB/+3C,GAAGN,KAAKU,EAAEq+3C,iBAAiBz+3C,EAAEN,EAAEP,IAAIC,KAAK6nJ,aAAa7mJ,GAAGhB,KAAKo/5C,UAAS,EAAGp/5C,KAAK2/5C,mBAAmBxg6C,IAAG,GAAIa,KAAKsz3C,KAAK,IAAIl03C,EAAEijZ,WAAW,IAAI76X,MAAM,cAAcroB,EAAE,8DAA+D,EAAEyB,EAAElB,UAAUig4C,iBAAiB,SAASvg4C,EAAED,GAAG,OAAOa,KAAKw0kC,SAASp1kC,GAAGug4C,iBAAiBxg4C,EAAE,EAAEyB,EAAElB,UAAU494C,gBAAgB,SAASn+4C,EAAEyB,GAAGZ,KAAKm/5C,eAAe,IAAI7+5C,EAAEnB,EAAE0I,OAAO9H,EAAEZ,EAAEg3I,YAAYn1I,EAAEhB,KAAKyv5C,aAAanv5C,GAAG,QAAG,IAASU,EAAE,CAAC,IAAI3B,EAAE2B,EAAEyqV,YAAYl/U,KAAK,YAAYlN,GAAGU,EAAEC,KAAKsz3C,KAAK,IAAIl03C,EAAEijZ,WAAW,IAAI76X,MAAM,0DAA0D,WAAWnoB,GAAGU,QAAG,IAASZ,EAAEosB,IAAIvrB,KAAKsz3C,KAAK,IAAIl03C,EAAEijZ,WAAW,IAAI76X,MAAM,gDAAgDxmB,EAAEs84C,gBAAgBv94C,EAAEZ,EAAEosB,GAAG3qB,IAAIZ,KAAKsz3C,KAAK,IAAIl03C,EAAEijZ,WAAW,IAAI76X,MAAM,wEAAyE,MAAMxnB,KAAKsz3C,KAAK,IAAIl03C,EAAEijZ,WAAW,IAAI76X,MAAM,eAAelnB,EAAE,yCAA0C,EAAEM,EAAElB,UAAU094C,mBAAmB,SAASj+4C,EAAEyB,GAAGZ,KAAKm/5C,eAAe,IAAI7+5C,EAAEnB,EAAE0I,OAAO9H,EAAEC,KAAKyv5C,aAAanv5C,GAAG,QAAG,IAASP,EAAE,CAAC,IAAIiB,EAAEjB,EAAE0rV,YAAYl/U,KAAKlN,EAAE,WAAW2B,EAAE7B,EAAEg3I,iBAAY,EAAO,WAAWn1I,GAAG3B,EAAEuB,GAAG,iBAAiBzB,EAAEosB,IAAI,iBAAiBpsB,EAAEosB,GAAGvrB,KAAKsz3C,KAAK,IAAIl03C,EAAEijZ,WAAW,IAAI76X,MAAM,qEAAqEznB,EAAEq94C,mBAAmB/94C,EAAEF,EAAEosB,GAAG3qB,GAAGZ,KAAKsz3C,KAAK,IAAIl03C,EAAEijZ,WAAW,IAAI76X,MAAM,wEAAyE,MAAMxnB,KAAKsz3C,KAAK,IAAIl03C,EAAEijZ,WAAW,IAAI76X,MAAM,eAAelnB,EAAE,yCAA0C,EAAEM,EAAElB,UAAUgy5C,gBAAgB,SAASvy5C,GAAGa,KAAKm/5C,eAAe,IAAIv+5C,EAAEzB,EAAE0I,OAAOvH,EAAEnB,EAAEg3I,YAAYp2I,EAAEC,KAAKyv5C,aAAa7u5C,GAAG,QAAG,IAASb,EAAE,CAAC,GAAG,WAAWA,EAAE0rV,YAAYl/U,MAAMjM,EAAE,YAAO,IAASnB,EAAEosB,IAAIvrB,KAAKsz3C,KAAK,IAAIl03C,EAAEijZ,WAAW,IAAI76X,MAAM,gDAAgDznB,EAAE2x5C,gBAAgBpx5C,EAAEnB,EAAEosB,IAAIvrB,KAAKsz3C,KAAK,IAAIl03C,EAAEijZ,WAAW,IAAI76X,MAAM,wEAAyE,MAAMxnB,KAAKsz3C,KAAK,IAAIl03C,EAAEijZ,WAAW,IAAI76X,MAAM,eAAe5mB,EAAE,yCAA0C,EAAEA,EAAElB,UAAU++3C,cAAc,WAAW,OAAOr/3C,EAAEiqZ,OAAO,CAAChkW,SAAS,IAAIlE,MAAM,GAAGnhD,KAAK8+5C,YAAY9+5C,KAAK8+5C,WAAWh3yC,WAAW,EAAElnH,EAAElB,UAAUytsB,UAAU,WAAW,OAAO/tsB,EAAEo/zC,aAAa,CAACl4zC,QAAQtG,KAAK8+5C,WAAWx45C,QAAQoE,KAAK1K,KAAK8+5C,WAAWp05C,KAAKutK,SAASj4K,KAAK8+5C,WAAW7mvC,SAASpoD,MAAM7vH,KAAK8+5C,WAAWjvyC,MAAM5wF,OAAOj/B,KAAK8+5C,WAAW7/3C,OAAOU,KAAK3/B,KAAK8+5C,WAAWn/3C,KAAKH,QAAQx/B,KAAK8+5C,WAAWt/3C,QAAQE,MAAM1/B,KAAK8+5C,WAAWp/3C,MAAMm01C,OAAO7z3C,KAAK8+5C,WAAWjrC,OAAOC,OAAO9z3C,KAAK8+5C,WAAWhrC,OAAOhswC,WAAW9nH,KAAK8+5C,WAAWh3yC,WAAWltE,QAAQx7C,EAAE4m5C,UAAUhm5C,KAAKyv5C,cAAa,SAAUrw5C,GAAG,OAAOA,EAAE+tsB,WAAY,IAAGrvqB,OAAO99B,KAAKg/5C,iBAAiBh/5C,KAAKgoP,UAAS,SAAU5oP,GAAG,YAAO,IAASA,CAAE,GAAE,EAAEwB,EAAElB,UAAUmoJ,aAAa,SAASzoJ,GAAGY,KAAKq/5C,eAAejg6C,EAAEmsB,KAAI,EAAGnsB,EAAEyI,SAAS7H,KAAKk/5C,gBAAgB9/5C,EAAEyI,SAAS,WAAW7H,KAAKyv5C,aAAarw5C,EAAEyI,QAAQ4jV,YAAYl/U,OAAOvM,KAAKk/5C,gBAAgB9/5C,EAAEyI,QAAQ,SAAS7H,KAAKyv5C,aAAarw5C,EAAEyI,QAAQmkT,SAAShsT,KAAKo/5C,UAAS,CAAG,EAAEx+5C,EAAElB,UAAUug6C,gCAAgC,SAAS7g6C,GAAG,IAAI,IAAID,EAAEa,KAAKY,EAAE,SAASxB,GAAG,MAAO,mBAAmBD,EAAEolY,QAAQnlY,GAAGmN,IAAI,EAAEjM,EAAE,CAAC,EAAEP,EAAE,GAAGiB,EAAEhB,KAAKgoP,OAAO3nP,OAAO,EAAEW,GAAG,EAAEA,IAAI,CAAC,IAAI3B,EAAEW,KAAKgoP,OAAOhnP,GAAG,GAAGJ,EAAEvB,GAAG,CAACiB,EAAEjB,GAAG2B,EAAE,IAAI,IAAIF,EAAE,EAAE0B,EAAEpD,EAAE0B,EAAE0B,EAAEnC,OAAOS,GAAG,EAAE,CAAC,IAAID,EAAE2B,EAAE1B,GAAGzB,GAAG,GAAGwB,EAAE,IAAI,IAAIwB,EAAE,EAAEO,EAAE/B,EAAEwB,EAAEO,EAAEvC,OAAOgC,GAAG,EAAEtC,EAAE8B,KAAKe,EAAEP,GAAI,CAAC,CAAC,CAACtC,EAAEwsC,MAAK,SAAUntC,EAAED,GAAG,OAAOA,EAAEq/4C,cAAcp/4C,EAAEo/4C,aAAc,IAAG,IAAI,IAAI174C,EAAE,GAAGH,EAAE3C,KAAKgoP,OAAO3nP,OAAO,EAAEsC,GAAG,EAAEA,IAAI,CAAC,IAAIiB,EAAE5D,KAAKgoP,OAAOrlP,GAAG,GAAG/B,EAAEgD,GAAG,IAAI,IAAIlB,EAAE3C,EAAEM,OAAO,EAAEqC,GAAG,EAAEA,IAAI,CAAC,IAAIU,EAAErD,EAAE2C,GAAGyvE,QAAQ,GAAG7xE,EAAE8C,EAAE4rH,MAAMzjG,IAAI5oB,EAAE,MAAMG,EAAEjB,KAAKuB,GAAGrD,EAAE6B,KAAM,MAAM,IAAI,IAAIO,EAAE,EAAEc,EAAE7D,EAAE+C,EAAEc,EAAE5C,OAAO8B,GAAG,EAAE,CAAC,IAAIa,EAAEC,EAAEd,GAAGyB,GAAG,GAAGZ,EAAE,IAAI,IAAIiB,EAAE,EAAEX,EAAEN,EAAEiB,EAAEX,EAAEjD,OAAO4D,GAAG,EAAEnB,EAAEjB,KAAKyB,EAAEW,GAAGkuE,QAAS,CAAC,CAAC,OAAOrvE,CAAC,EAAElC,EAAElB,UAAU8/2C,sBAAsB,SAASrg3C,EAAEyB,EAAEN,GAAGM,GAAGA,EAAEisB,QAAQ7sB,KAAK0/3C,UAAUtg4C,EAAEuo5C,cAAc963C,OAAO,+BAA+BjsB,EAAEisB,OAAO,KAAKjsB,GAAG,IAAIb,EAAE,CAAC,EAAE,GAAGa,GAAGA,EAAEk9B,OAAO,CAAC,IAAIr+B,MAAMkS,QAAQ/Q,EAAEk9B,QAAQ,OAAO99B,KAAKsz3C,KAAK,IAAIl03C,EAAEijZ,WAAW,IAAI76X,MAAM,yCAAyC,GAAG,IAAI,IAAIxmB,EAAE,EAAE3B,EAAEuB,EAAEk9B,OAAO98B,EAAE3B,EAAEgB,OAAOW,GAAG,EAAE,CAAC,IAAIF,EAAEzB,EAAE2B,GAAGwB,EAAExC,KAAKukY,QAAQzjY,GAAG,IAAI0B,EAAE,OAAOxC,KAAKsz3C,KAAK,IAAIl03C,EAAEijZ,WAAW,IAAI76X,MAAM,cAAc1mB,EAAE,6EAA6E,GAAGf,EAAEyC,EAAEqF,SAAQ,CAAG,CAAC,CAAC,IAAIhH,EAAE,GAAG,IAAI,IAAIwB,KAAKzB,EAAE823C,gBAAgB133C,KAAKq+5C,iBAAiBr+5C,KAAKyv5C,aAAa7u5C,EAAEk9B,SAAS/9B,EAAEsC,IAAIxB,EAAEgB,KAAKmC,EAAEhE,KAAKyv5C,aAAapt5C,GAAGrC,KAAKukY,QAAQvkY,KAAKo+5C,kBAAkBj/5C,EAAEyB,EAAEN,IAAI,OAAON,KAAKqrgB,WAAWxqgB,EAAEgB,KAAK,SAASzC,EAAED,EAAEyB,EAAEN,EAAEP,EAAEiB,EAAE3B,GAAG,IAAI,IAAIyB,EAAE,CAAC,EAAE0B,EAAExB,EAAE445C,qBAAqBt55C,GAAGO,EAAE,GAAGwB,EAAE,EAAEO,EAAEtD,OAAOgU,KAAK9Q,GAAG6sB,IAAI8V,QAAQ9iC,EAAEO,EAAEvC,OAAOgC,GAAG,EAAExB,EAAEgB,KAAKxC,EAAEuD,EAAEP,KAAKxB,EAAE0rC,KAAKvnC,GAAG,IAAI,IAAIlC,EAAE,WAAW,IAAIlC,EAAEgD,EAAEjB,GAAGrC,EAAEM,EAAEkhO,aAAa28qC,qBAAqBj84C,EAAE5B,EAAEi55C,kBAAkB165C,EAAEyB,EAAE0g4C,YAAY1g4C,EAAEyg4C,iBAAiBth4C,EAAE8sB,OAAO9sB,EAAE+9B,OAAO/9B,EAAE233C,gBAAgBt43C,GAAG,IAAI,IAAI4B,KAAKV,EAAE,CAAC,IAAIjB,EAAEyB,EAAEE,GAAGF,EAAEE,IAAI,GAAGH,EAAEP,EAAEU,GAAGH,EAAE0rC,MAAK,SAAUntC,EAAED,GAAG,IAAImB,EAAEM,EAAE824C,iBAAiB,GAAGp34C,EAAE,CAAC,IAAIP,EAAEO,EAAEE,QAAQpB,EAAE0iO,cAAc,OAAOxhO,EAAEE,QAAQrB,EAAE2iO,cAAc/hO,CAAC,CAAC,OAAOZ,EAAE2iO,aAAa1iO,EAAE0iO,YAAa,IAAG,IAAI,IAAIz/N,EAAE,EAAEO,EAAE/B,EAAEwB,EAAEO,EAAEvC,OAAOgC,GAAG,EAAEhD,EAAEwC,KAAKe,EAAEP,GAAI,CAAC,EAAEM,EAAE,EAAEiB,EAAE/C,EAAE8B,EAAEiB,EAAEvD,OAAOsC,GAAG,EAAEG,IAAI,IAAIJ,EAAE,SAASvD,GAAG2B,EAAE3B,GAAG+lB,SAAQ,SAAU5kB,GAAG,IAAIP,EAAEO,EAAE6xE,QAAQnxE,EAAEJ,EAAExB,EAAED,GAAG0I,QAAQ6p5C,gBAAgB3x5C,EAAEivH,MAAM,gBAAgBjvH,EAAEwrB,IAAIxrB,EAAE8H,OAAO9H,EAAEivH,MAAMnnH,OAAO9H,EAAEivH,MAAM,kBAAkBjvH,EAAEo2I,YAAYp2I,EAAEivH,MAAM,iBAAiBjvH,EAAE4L,MAAM3K,CAAG,GAAG,EAAE,IAAI,IAAIoC,KAAKtC,EAAE4B,EAAEU,GAAG,OAAOtC,CAAC,CAA90B,CAAg1Bd,KAAKukY,QAAQvkY,KAAKo+5C,kBAAkBp+5C,KAAKyv5C,aAAatw5C,EAAEyB,EAAEZ,KAAKqrgB,UAAUmv5B,eAAex65C,KAAKqrgB,UAAUyv5B,oBAAoB965C,KAAKig6C,gCAAgCp/5C,EAAE,EAAED,EAAElB,UAAUog5C,oBAAoB,SAAS3g5C,EAAEyB,GAAGA,GAAGA,EAAEisB,QAAQ7sB,KAAK0/3C,UAAUtg4C,EAAEuo5C,cAAc963C,OAAO,6BAA6BjsB,EAAEisB,OAAO,KAAKjsB,GAAG,IAAIN,EAAEN,KAAKyv5C,aAAatw5C,GAAG,OAAOmB,EAAE,SAASlB,EAAED,GAAG,IAAI,IAAIyB,EAAExB,EAAEg15C,mBAAmB/k4C,KAAI,SAAUlwB,GAAG,OAAOC,EAAEy15C,YAAY115C,EAAG,IAAGmB,EAAE,GAAGP,EAAE,CAAC,EAAEiB,EAAE,EAAEA,EAAEJ,EAAEP,OAAOW,IAAI,CAAC,IAAI3B,EAAEuB,EAAEI,GAAGF,EAAEzB,EAAEm+4C,OAAOzlB,UAAUlz2C,IAAI9kB,EAAEe,KAAKf,EAAEe,IAAG,EAAGzB,EAAEyg5C,oBAAoBx/4C,EAAEnB,GAAI,CAAC,OAAOmB,CAAC,CAA/M,CAAiNA,EAAEM,GAAG,EAAE,EAAEA,EAAElB,UAAUwg6C,cAAc,SAAS9g6C,EAAED,EAAEmB,GAAG,OAAOM,EAAEu/5C,cAAc/g6C,GAAGkB,EAAE,IAAIknB,MAAM,yBAAyBpoB,EAAE,uBAAuBwB,EAAEw/5C,cAAchh6C,EAAED,GAAGA,EAAEkh6C,qBAAqBrg6C,KAAKw3iC,WAAWs3W,UAAU,mBAAmB,CAACpk5C,KAAKtL,EAAE8wB,IAAI/wB,EAAEkh6C,iBAAiB//5C,GAAGA,EAAE,KAAK,MAAM,EAAEM,EAAElB,UAAUqu5C,SAAS,WAAW,OAAO/t5C,KAAK6vH,MAAMk+xC,UAAU,EAAEnt5C,EAAElB,UAAUmu5C,SAAS,SAAS1u5C,EAAEyB,QAAG,IAASA,IAAIA,EAAE,CAAC,GAAGZ,KAAKm/5C,eAAe,IAAI7+5C,EAAEN,KAAK6vH,MAAMk+xC,WAAWhu5C,GAAE,EAAG,IAAI,IAAIiB,KAAK7B,EAAE,IAAIC,EAAE2iK,UAAU5iK,EAAE6B,GAAGV,EAAEU,IAAI,CAACjB,GAAE,EAAG,KAAK,CAAC,GAAGA,EAAE,CAAC,IAAIV,EAAE,CAACosB,IAAIrsB,EAAEghS,QAAQ30Q,MAAMq8F,WAAW1oH,EAAEiqZ,OAAO,CAAChkW,SAAS,IAAIlE,MAAM,GAAGnhD,KAAK8+5C,WAAWh3yC,aAAa9nH,KAAK6vH,MAAMg+xC,SAAS1u5C,EAAEyB,GAAGZ,KAAK6vH,MAAMiwwC,kBAAkBzg4C,EAAG,CAAC,EAAEuB,EAAElB,UAAUgg4C,UAAU,SAASvg4C,EAAEyB,EAAEN,EAAEP,EAAEiB,GAAG,YAAO,IAASA,IAAIA,EAAE,CAAC,KAAKA,IAAG,IAAKA,EAAEk1F,WAAWpsF,GAAG9J,KAAKb,EAAES,KAAKR,EAAEuo5C,cAAcvo5C,EAAEiqZ,OAAO,CAACxkY,IAAIjkB,EAAEyT,MAAMrU,KAAKmtsB,YAAYhssB,MAAMb,EAAE463C,UAAU973C,EAAE873C,WAAWn73C,IAAI,EAAEa,EAAElB,UAAUggjC,QAAQ,WAAW,IAAI,IAAIvgjC,KAAKa,KAAK0+5C,WAAW1+5C,KAAK0+5C,SAAS772C,SAAS7iD,KAAK0+5C,SAAS,MAAM1+5C,KAAKi/5C,iBAAiBj/5C,KAAKi/5C,eAAep82C,SAAS7iD,KAAKi/5C,eAAe,MAAM7/5C,EAAE4l5C,QAAQh32C,IAAI,oBAAoBhuC,KAAKu+5C,wBAAwBv+5C,KAAKukY,QAAQvkY,KAAKukY,QAAQplY,GAAGu03C,iBAAiB,MAAM,IAAI,IAAI9y3C,KAAKZ,KAAKyv5C,aAAazv5C,KAAKyv5C,aAAa7u5C,GAAG8u5C,aAAa1v5C,KAAKyv5C,aAAa7u5C,GAAG8y3C,iBAAiB,MAAM1z3C,KAAKk05C,aAAaxgC,iBAAiB,MAAM1z3C,KAAK0z3C,iBAAiB,MAAM1z3C,KAAKw3iC,WAAW3khC,QAAS,EAAEjyB,EAAElB,UAAU+/5C,aAAa,SAASrg6C,GAAGY,KAAKyv5C,aAAarw5C,GAAGsw5C,YAAa,EAAE9u5C,EAAElB,UAAU8/5C,cAAc,SAASpg6C,GAAGY,KAAKyv5C,aAAarw5C,GAAGwh9B,SAAS5g9B,KAAKyv5C,aAAarw5C,GAAGkpd,QAAS,EAAE1nd,EAAElB,UAAU4g6C,eAAe,SAASlh6C,GAAG,IAAI,IAAID,KAAKa,KAAKyv5C,aAAazv5C,KAAKyv5C,aAAatw5C,GAAGovE,OAAOnvE,EAAG,EAAEwB,EAAElB,UAAU6g6C,wBAAwB,WAAW,IAAI,IAAInh6C,KAAKY,KAAKyv5C,aAAazv5C,KAAKw/5C,cAAcpg6C,EAAG,EAAEwB,EAAElB,UAAU8g6C,iBAAiB,SAASrh6C,EAAEyB,EAAEN,EAAEP,EAAEiB,QAAG,IAASA,IAAIA,GAAE,GAAI,IAAI,IAAI3B,GAAE,EAAGyB,GAAE,EAAG0B,EAAE,CAAC,EAAE3B,EAAE,EAAEwB,EAAErC,KAAKgoP,OAAOnnP,EAAEwB,EAAEhC,OAAOQ,GAAG,EAAE,CAAC,IAAI+B,EAAE5C,KAAKukY,QAAQliY,EAAExB,IAAI,GAAG,WAAW+B,EAAE2J,KAAK,CAAC,IAAI/J,EAAEI,EAAEiF,QAAQ,CAAC,IAAI/E,EAAE9C,KAAKyv5C,aAAa7s5C,EAAEiF,QAAQrF,EAAEI,EAAEiF,QAAQ/E,EAAEsx5C,kBAAiB,GAAI/k4C,KAAI,SAAUjwB,GAAG,OAAO0D,EAAE+x5C,YAAYz15C,EAAG,IAAGmtC,MAAK,SAAUntC,EAAED,GAAG,OAAOA,EAAEq+4C,OAAO5B,YAAYx84C,EAAEo+4C,OAAO5B,cAAcx84C,EAAEo+4C,OAAOxB,WAAW784C,EAAEq+4C,SAAS,EAAE,EAAG,GAAG,CAAC,IAAI764C,EAAE3C,KAAKm+5C,qBAAqBz4pB,SAAS9iwB,EAAEJ,EAAEI,EAAEiF,QAAQ1I,EAAE8/B,OAAOG,KAAK//B,EAAEA,GAAGsD,CAAE,CAAC,CAAC,GAAG3C,KAAKm+5C,qBAAqBH,kBAAkBh+5C,KAAKgoP,UAAUhnP,EAAEA,GAAGhB,KAAK+/5C,oBAAoB,IAAIz/5C,KAAKN,KAAKyg6C,oBAAoBzg6C,KAAKyg6C,mBAAmBngvC,WAAWtgL,KAAKqrgB,UAAUkx5B,YAAYn95C,EAAEghS,QAAQ30Q,MAAMtsB,EAAEwgC,SAAS3/B,KAAKyg6C,mBAAmB,IAAIz35C,GAAG7J,EAAEa,KAAKgoP,OAAOhnP,EAAEJ,EAAEN,EAAEP,EAAEC,KAAKqrgB,WAAWrrgB,KAAK+/5C,oBAAmB,GAAI//5C,KAAKyg6C,mBAAmBngvC,SAAStgL,KAAKqrgB,UAAUmx5B,YAAYx85C,KAAKyg6C,mBAAmB3D,kBAAkB985C,KAAKgoP,OAAOhoP,KAAKukY,QAAQ/hY,GAAGxC,KAAKyg6C,mBAAmBngvC,WAAWtgL,KAAKqrgB,UAAUrrgB,KAAKyg6C,mBAAmBhwmC,OAAOrxT,EAAEghS,QAAQ30Q,OAAO3qB,GAAE,GAAIzB,GAAGW,KAAKyg6C,mBAAmBp15B,UAAUmx5B,YAAY175C,GAAGzB,EAAE,IAAI,IAAIuE,EAAE,EAAElB,EAAE1C,KAAKgoP,OAAOpkP,EAAElB,EAAErC,OAAOuD,GAAG,EAAE,CAAC,IAAIR,EAAEpD,KAAKukY,QAAQ7hY,EAAEkB,IAAI,WAAWR,EAAEmJ,MAAMvM,KAAKqrgB,UAAU+w5B,qBAAqBh55C,EAAEZ,EAAEY,EAAEyE,QAAS,CAAC,OAAQ7H,KAAKyg6C,mBAAmBngvC,UAAUtgL,KAAKqrgB,UAAUix5B,eAAel95C,EAAEghS,QAAQ30Q,MAAM,EAAE7qB,EAAElB,UAAUgh6C,wBAAwB,WAAW,IAAI,IAAIth6C,KAAKY,KAAKyv5C,aAAazv5C,KAAKyv5C,aAAarw5C,GAAG025C,wBAAyB,EAAEl15C,EAAElB,UAAUqt5C,UAAU,SAAS3t5C,EAAED,EAAEyB,GAAGZ,KAAKk05C,aAAanH,UAAU5t5C,EAAEs5O,MAAM73O,GAAGZ,KAAK0/5C,+BAA+B,IAAIp/5C,EAAEN,KAAKyv5C,aAAatw5C,EAAE0I,QAAQvH,GAAGA,EAAEkg5C,gBAAgBrh5C,EAAEq+4C,OAAO343C,IAAI1lB,EAAEoN,KAAKpN,EAAEs5O,MAAO,EAAE73O,EAAElB,UAAU8t5C,UAAU,SAASpu5C,EAAED,EAAEyB,GAAGZ,KAAKi+5C,aAAazQ,UAAUru5C,EAAEu2jC,OAAO90jC,EAAG,EAAEA,EAAElB,UAAUih6C,YAAY,SAASxh6C,EAAEyB,EAAEN,GAAG,OAAOlB,EAAE2m5C,YAAYnl5C,EAAEN,EAAE,EAAEM,CAAC,CAArmyB,CAAumyBxB,EAAEmi5C,SAASx44C,GAAGo35C,cAAc,SAAS/g6C,GAAG,OAAOsE,EAAEtE,EAAE,EAAE2J,GAAGq35C,cAAc,SAAShh6C,EAAED,GAAGuE,EAAEtE,GAAGD,CAAE,EAAE4J,GAAGm+4C,6BAA6B9n5C,EAAE8n5C,6BAA6B,IAAI/84C,GAAG/K,EAAEql5C,aAAa,CAAC,CAAC/54C,KAAK,QAAQ6B,KAAK,QAAQ2hP,WAAW,KAAK3kP,GAAG4U,GAAG,8LAA8L,ovCAAovClV,GAAGkV,GAAG,2JAA2J,kGAAkGzU,GAAGyU,GAAG,0pBAA0pB,ilBAAilBnU,GAAGmU,GAAG,spCAAspC,ktDAAktDvU,GAAGuU,GAAG,wCAAwC,kGAAkGlU,GAAGkU,GAAG,2YAA2Y,qrBAAqrBjU,GAAGiU,GAAG,kSAAkS,sLAAsL5T,GAAG4T,GAAG,gOAAgO,yqBAAyqBrT,GAAGqT,GAAG,4eAA4e,41CAA41CrB,GAAGqB,GAAG,+LAA+L,oLAAoLtB,GAAGsB,GAAG,4RAA4R,sRAAsRf,GAAGe,GAAG,maAAma,mYAAmYhB,GAAGgB,GAAG,6hCAA6hC,01CAA01CjB,GAAGiB,GAAG,k7BAAk7B,ywCAAywCb,GAAGa,GAAG,yHAAyH,s6CAAs6ClB,GAAGkB,GAAG,8wCAA8wC,sxEAAsxEZ,GAAGY,GAAG,4pCAA4pC,uSAAuSV,GAAGU,GAAG,yjCAAyjC,6KAA6Kd,GAAGc,GAAG,ypBAAypB,o5DAAo5DX,GAAGW,GAAG,wpBAAwpB,8+DAA8+DP,GAAGO,GAAG,gnEAAgnE,06EAA06EN,GAAGM,GAAG,4pCAA4pC,61EAA61ER,GAAGQ,GAAG,wiCAAwiC,+VAA+VM,GAAGN,GAAG,+UAA+U,kgFAAkgFT,GAAGS,GAAG,u4CAAu4C,k6FAAk6FF,GAAGE,GAAG,knDAAknD,k7FAAk7F,SAASA,GAAG/e,EAAED,GAAG,IAAIyB,EAAE,mDAAmDN,EAAEnB,EAAEsH,MAAM,8BAA8B1G,EAAEX,EAAEqH,MAAM,0CAA0CzF,EAAE7B,EAAEsH,MAAM,0CAA0CpH,EAAE2B,EAAEA,EAAEgB,OAAOjC,GAAGA,EAAEe,EAAE,CAAC,EAAE,MAAO,CAAC8/5C,eAAexh6C,EAAEA,EAAEqN,QAAQ7L,GAAE,SAAUxB,EAAED,EAAEyB,EAAEN,EAAEP,GAAG,OAAOe,EAAEf,IAAG,EAAG,WAAWZ,EAAE,2BAA2BY,EAAE,aAAaa,EAAE,IAAIN,EAAE,IAAIP,EAAE,qBAAqBa,EAAE,IAAIN,EAAE,MAAMP,EAAE,cAAc,0BAA0BA,EAAE,SAASa,EAAE,IAAIN,EAAE,IAAIP,EAAE,QAAQA,EAAE,aAAc,IAAG8g6C,aAAa1h6C,EAAEA,EAAEsN,QAAQ7L,GAAE,SAAUxB,EAAED,EAAEyB,EAAEN,EAAEP,GAAG,IAAIiB,EAAE,UAAUV,EAAE,OAAO,OAAOjB,EAAEU,EAAE0G,MAAM,SAAS,QAAQzF,EAAE,OAAOF,EAAEf,GAAG,WAAWZ,EAAE,2BAA2BY,EAAE,0BAA0BA,EAAE,kBAAkBa,EAAE,IAAII,EAAE,MAAMjB,EAAE,cAAca,EAAE,IAAIN,EAAE,IAAIP,EAAE,qBAAqBa,EAAE,IAAIN,EAAE,MAAMP,EAAE,cAAc,SAASV,EAAE,2BAA2BU,EAAE,SAASA,EAAE,QAAQA,EAAE,iBAAiBa,EAAE,IAAIN,EAAE,IAAIP,EAAE,QAAQA,EAAE,cAAc,2BAA2BA,EAAE,SAASA,EAAE,iBAAiBV,EAAE,MAAMU,EAAE,OAAOA,EAAE,oBAAoBa,EAAE,IAAIN,EAAE,IAAIP,EAAE,QAAQA,EAAE,cAAc,WAAWZ,EAAE,2BAA2BY,EAAE,0BAA0BA,EAAE,kBAAkBa,EAAE,IAAII,EAAE,MAAMjB,EAAE,qBAAqBa,EAAE,IAAIN,EAAE,MAAMP,EAAE,cAAc,SAASV,EAAE,2BAA2BU,EAAE,SAASa,EAAE,IAAIN,EAAE,IAAIP,EAAE,QAAQA,EAAE,iBAAiBa,EAAE,IAAIN,EAAE,IAAIP,EAAE,QAAQA,EAAE,cAAc,2BAA2BA,EAAE,SAASa,EAAE,IAAIN,EAAE,IAAIP,EAAE,iBAAiBV,EAAE,MAAMU,EAAE,OAAOA,EAAE,oBAAoBa,EAAE,IAAIN,EAAE,IAAIP,EAAE,QAAQA,EAAE,aAAc,IAAG+g6C,iBAAiBxg6C,EAAEyg6C,eAAe1h6C,EAAE,CAAC,IAAI2e,GAAG1e,OAAOgmC,OAAO,CAAC9lC,UAAU,KAAKwh6C,QAAQz35C,GAAGogP,WAAW1gP,GAAGg45C,kBAAkBv35C,GAAGumO,OAAOjmO,GAAGk35C,aAAat35C,GAAG4k/B,QAAQvk/B,GAAGk35C,eAAej35C,GAAGk35C,aAAa725C,GAAG825C,gBAAgBv25C,GAAG0rC,MAAM15B,GAAGsgH,KAAKvgH,GAAGyk5C,YAAYlk5C,GAAGmk5C,mBAAmBpk5C,GAAG2thC,YAAY5thC,GAAGsk5C,cAAclk5C,GAAGmk5C,qBAAqBxk5C,GAAGyk5C,iBAAiBnk5C,GAAGw32C,UAAUt32C,GAAG6hC,KAAKjiC,GAAGsk5C,aAAank5C,GAAGok5C,YAAYhk5C,GAAGik5C,QAAQhk5C,GAAGu22C,OAAOz22C,GAAGmk5C,WAAWrj5C,GAAGsj5C,UAAUrk5C,GAAGsk5C,kBAAkB/j5C,KAAKH,GAAG,WAAW9d,KAAKii6C,aAAa,KAAKji6C,KAAKki6C,wBAAwB,KAAKli6C,KAAKmi6C,wBAAwB,GAAGni6C,KAAKoi6C,iBAAiB,KAAKpi6C,KAAKqi6C,kBAAkB,KAAKri6C,KAAKsi6C,yBAAyB,KAAKti6C,KAAKouU,IAAI,IAAK,EAAE,SAASvvT,GAAGzf,GAAG,IAAI,IAAID,EAAE,GAAGyB,EAAE,EAAEA,EAAExB,EAAEiB,OAAOO,IAAI,GAAG,OAAOxB,EAAEwB,GAAG,CAAC,IAAIN,EAAElB,EAAEwB,GAAGgE,MAAM,KAAKzF,EAAE0C,KAAKvB,EAAEsB,MAAO,CAAC,OAAOzC,CAAC,CAAC2e,GAAGpe,UAAU2D,KAAK,SAASjE,EAAED,EAAEyB,EAAEN,EAAEP,EAAEiB,EAAE3B,EAAEyB,GAAGd,KAAKmtC,QAAQ/tC,EAAE,IAAI,IAAIoD,EAAExC,KAAKmi6C,wBAAwB9h6C,SAASC,EAAED,OAAOQ,EAAE,GAAG2B,GAAG3B,EAAEP,EAAED,OAAOQ,IAAIb,KAAKmi6C,wBAAwBth6C,KAAKP,EAAEO,KAAK2B,GAAE,GAAIpD,EAAEkz5C,sBAAsBty5C,KAAKouU,KAAKpuU,KAAKii6C,eAAe9i6C,GAAGa,KAAKki6C,0BAA0Bth6C,IAAI4B,GAAGxC,KAAKoi6C,mBAAmBri6C,GAAGC,KAAKqi6C,oBAAoBrh6C,GAAGhB,KAAKsi6C,2BAA2Bjj6C,GAAGW,KAAKui6C,4BAA4Bzh6C,GAAG1B,EAAEsvU,mBAAmBziU,IAAIjM,KAAKouU,KAAK/uU,GAAGA,EAAEgE,OAAOtD,GAAGA,EAAEgy5C,aAAahy5C,EAAEsD,OAAOvC,GAAGA,EAAEuC,QAAQrD,KAAKwi6C,UAAUrj6C,EAAEyB,EAAEN,EAAEP,EAAEiB,EAAE3B,EAAEyB,EAAG,EAAEgd,GAAGpe,UAAU8i6C,UAAU,SAASpj6C,EAAED,EAAEyB,EAAEN,EAAEP,EAAEiB,EAAE3B,GAAG,IAAIyB,EAAE0B,EAAEpD,EAAEqj6C,cAAc5h6C,EAAEb,KAAKmtC,QAAQ9qC,EAAExB,EAAEotH,GAAG,GAAGptH,EAAEyx5C,qBAAqBty5C,KAAKouU,KAAKpuU,KAAKo+I,UAAUp+I,KAAKouU,IAAIvtU,EAAEyx5C,qBAAqB3jlC,uBAAuB9tU,EAAE6tU,mBAAmBziU,IAAIjM,KAAKouU,KAAKttU,EAAE,EAAEd,KAAKii6C,aAAa7i6C,EAAEY,KAAKki6C,wBAAwB/i6C,EAAEa,KAAKmi6C,wBAAwBvh6C,EAAEZ,KAAKoi6C,iBAAiB9h6C,EAAEN,KAAKqi6C,kBAAkBti6C,EAAEC,KAAKsi6C,yBAAyBth6C,EAAEhB,KAAKui6C,0BAA0Blj6C,MAAO,CAACyB,EAAED,EAAE6h6C,sBAAsB,EAAE,IAAI,IAAI9/5C,EAAEJ,EAAEI,EAAE9B,EAAE8B,IAAIP,EAAE8wT,yBAAyBvwT,EAAG,CAACzD,EAAEgz5C,iBAAiB9v5C,EAAEjD,GAAG,IAAI,IAAI0D,EAAE,EAAEH,EAAE/B,EAAEkC,EAAEH,EAAEtC,OAAOyC,GAAG,EAAEH,EAAEG,GAAGqv5C,iBAAiB9v5C,EAAEjD,GAAG4B,GAAGA,EAAEmx5C,iBAAiB9v5C,EAAEjD,GAAGC,GAAGA,EAAE8y5C,iBAAiB9v5C,EAAEjD,GAAGD,EAAEkE,OAAOlE,EAAEiz5C,wBAAwB/v5C,EAAEjD,EAAEW,GAAG,IAAI,IAAI6D,EAAE,EAAElB,EAAE9B,EAAEgD,EAAElB,EAAErC,OAAOuD,GAAG,EAAE,CAAC,IAAIR,EAAEV,EAAEkB,GAAGR,EAAEC,OAAOD,EAAEgv5C,wBAAwB/v5C,EAAEjD,EAAEW,EAAG,CAACiB,IAAIA,EAAEqC,OAAOrC,EAAEox5C,wBAAwB/v5C,EAAEjD,EAAEW,IAAIO,GAAGA,EAAE+C,OAAOhE,IAAIA,EAAEgE,OAAOhE,EAAE+y5C,wBAAwB/v5C,EAAEjD,EAAEW,IAAIc,EAAE6h6C,qBAAqBlg6C,CAAE,EAAEsb,GAAGpe,UAAU0+I,QAAQ,WAAWp+I,KAAKouU,MAAMpuU,KAAKmtC,QAAQml3C,qBAAqBzjlC,qBAAqB7uU,KAAKouU,KAAKpuU,KAAKouU,IAAI,KAAM,EAAE,IAAIlwT,GAAG,SAAS9e,EAAED,EAAEyB,EAAEN,EAAEP,EAAEiB,GAAG,IAAI3B,EAAED,EAAE6uH,GAAGjuH,KAAKmyR,QAAQ9yR,EAAEmoV,gBAAgB,IAAI,IAAI1mV,EAAE+d,GAAGje,EAAEkg6C,kBAAkBt+5C,EAAElC,EAAEA,EAAE+l4C,sBAAsB,GAAGxl4C,EAAEC,EAAEkB,OAAOQ,GAAGH,EAAEzB,EAAEmg6C,eAAeli5C,GAAGje,EAAEmg6C,gBAAgB,GAAGn+5C,EAAEtC,EAAEA,EAAEgm4C,oBAAoB,GAAGxj4C,EAAE,GAAGH,EAAE,EAAEiB,EAAEvB,EAAEL,OAAOY,GAAGD,EAAEiB,EAAEvD,OAAOsC,GAAG,EAAE,CAAC,IAAID,EAAEkB,EAAEjB,GAAGG,EAAEtC,QAAQkC,GAAG,GAAGI,EAAEjB,KAAKa,EAAG,CAAC,IAAIU,EAAE9C,EAAEA,EAAE0jI,UAAU,GAAGhjI,GAAGoC,EAAEvB,KAAK,+BAA+B,IAAIM,EAAEiB,EAAEpB,OAAOuH,GAAGq35C,eAAehg6C,EAAEgg6C,gBAAgB/z5C,KAAK,MAAM5J,EAAEG,EAAEpB,OAAOuH,GAAGs35C,aAAajg6C,EAAEig6C,cAAch05C,KAAK,MAAM7J,EAAE3D,EAAEs+T,aAAat+T,EAAE+pS,iBAAiB,GAAG/pS,EAAE+wT,gBAAgBpwT,KAAK2i6C,gBAAe,MAAQ,CAACtj6C,EAAEu+T,aAAa56T,EAAEb,GAAG9C,EAAEw+T,cAAc76T,GAAG3D,EAAE4oV,aAAajoV,KAAKmyR,QAAQnvR,GAAG,IAAIiB,EAAE5E,EAAEs+T,aAAat+T,EAAEgqS,eAAe,GAAGhqS,EAAE+wT,gBAAgBpwT,KAAK2i6C,gBAAe,MAAQ,CAACtj6C,EAAEu+T,aAAa35T,EAAEhB,GAAG5D,EAAEw+T,cAAc55T,GAAG5E,EAAE4oV,aAAajoV,KAAKmyR,QAAQluR,GAAGjE,KAAKoyG,WAAW,CAAC,EAAE,IAAI9uG,EAAE,CAAC,EAAEtD,KAAKyi6C,cAAc5h6C,EAAER,OAAO,IAAI,IAAIkD,EAAE,EAAEA,EAAEvD,KAAKyi6C,cAAcl/5C,IAAI1C,EAAE0C,KAAKlE,EAAEuj6C,mBAAmB5i6C,KAAKmyR,QAAQ5uR,EAAE1C,EAAE0C,IAAIvD,KAAKoyG,WAAWvxG,EAAE0C,IAAIA,GAAGlE,EAAE6oV,YAAYloV,KAAKmyR,SAAS9yR,EAAE2+T,aAAa/5T,GAAG5E,EAAE2+T,aAAah7T,GAAG,IAAI,IAAIkB,EAAE,EAAEA,EAAEpB,EAAEzC,OAAO6D,IAAI,CAAC,IAAIQ,EAAE5B,EAAEoB,GAAG,GAAGQ,IAAIpB,EAAEoB,GAAG,CAAC,IAAIb,EAAExE,EAAEkpV,mBAAmBvoV,KAAKmyR,QAAQztR,GAAGb,IAAIP,EAAEoB,GAAGb,EAAG,CAAC,CAAC7D,KAAK6i6C,cAAc9i6C,EAAEX,EAAEkE,GAAGtD,KAAK8i6C,eAAexi6C,EAAEA,EAAE67J,YAAY/8J,EAAEkE,GAAG,EAAG,CAAC,CAAC,EAAE,SAAS8a,GAAGhf,EAAED,EAAEyB,GAAG,IAAIN,EAAE,EAAEkH,GAAG5G,EAAE,EAAEzB,EAAEyjI,UAAUmgyC,UAAUhj6C,EAAE8C,KAAK6yF,IAAI,EAAE90F,EAAE484C,OAAO5B,aAAa564C,EAAEJ,EAAE6sL,SAAS5qL,KAAK6yF,IAAI,EAAEv2F,EAAEyjI,UAAUmgyC,UAAUhj6C,EAAEV,EAAE2B,GAAGJ,EAAE484C,OAAOzlB,UAAU9z3C,EAAErD,EAAE484C,OAAO5l4C,KAAK7X,GAAGe,EAAEE,EAAEJ,EAAE484C,OAAOzlB,UAAU/03C,EAAE,MAAO,CAACgg6C,QAAQ,EAAEC,UAAUri6C,EAAE++4C,kBAAkB/63C,KAAKs+4C,QAAQ,CAAC5i6C,EAAElB,EAAE4+3C,UAAU5+3C,EAAE6+3C,SAASklC,OAAO/j6C,EAAEA,EAAEgk6C,oBAAoB,CAAC/j6C,GAAG,GAAGyB,GAAG,IAAIui6C,oBAAoB,CAAC,MAAMhk6C,EAAE,MAAMyB,GAAG,CAACod,GAAGxe,UAAU61H,KAAK,SAASn2H,EAAED,EAAEyB,EAAEN,EAAEP,EAAEiB,EAAE3B,EAAEyB,EAAE0B,EAAE3B,EAAEwB,EAAEO,EAAEE,EAAEH,EAAEiB,EAAElB,GAAG,IAAIU,EAAEjB,EAAE/C,EAAE6uH,GAAG,IAAIjuH,KAAK2i6C,eAAe,CAAC,IAAI,IAAI1/5C,KAAK7D,EAAE+yR,QAAQlmR,IAAIjM,KAAKmyR,SAAS/yR,EAAEk05C,aAAa1y5C,GAAGxB,EAAEm05C,eAAejz5C,GAAGlB,EAAEo05C,aAAazz5C,GAAGX,EAAEi05C,YAAYry5C,GAAGhB,KAAK6i6C,cAAc7i6C,KAAK6i6C,cAAc5/5C,GAAGgJ,IAAI5M,EAAE4D,IAAIN,GAAGA,EAAE80L,YAAYr4L,EAAEY,KAAK8i6C,eAAelg6C,EAAE,CAAC+8B,KAAK78B,IAAI,IAAI,IAAIE,GAAGI,EAAE,CAAC,EAAEA,EAAEjB,EAAEq4M,OAAO,EAAEp3M,EAAEjB,EAAEw4M,WAAW,EAAEv3M,EAAEjB,EAAEu4M,YAAY,EAAEt3M,GAAGjE,GAAG8E,EAAE,EAAEX,EAAEjB,EAAEc,MAAMc,EAAEX,EAAEjD,OAAO4D,GAAG,EAAE,CAAC,IAAIV,EAAED,EAAEW,GAAGC,EAAEX,EAAE4g4C,OAAO5g4C,EAAE4g4C,KAAK,CAAC,IAAIjg4C,EAAEpD,KAAKoD,EAAEpD,GAAG,IAAIgd,KAAKza,KAAKjE,EAAEY,KAAKwC,EAAEG,EAAEA,EAAE4j4C,wBAAwB,GAAG1l4C,EAAE0C,EAAEu5H,aAAal5H,EAAElB,GAAGP,EAAE8kV,aAAa9nV,EAAEoE,EAAE2g4C,gBAAgBlh4C,EAAEb,EAAE+3M,eAAe32M,EAAE0g4C,gBAAgBjh4C,EAAE,EAAG,CAAC,CAAC,EAAE,IAAI8b,GAAG,SAAS3f,EAAEyB,EAAEN,EAAEP,GAAG,IAAIiB,EAAEJ,EAAEyT,MAAMw7G,MAAMxwH,EAAE2B,EAAEwnC,WAAWrlC,IAAI,YAAYrC,EAAE,CAACzB,EAAE4E,EAAE5E,EAAE2D,EAAE3D,EAAEsG,GAAGnD,EAAEpD,EAAEil5C,WAAW,aAAarj5C,EAAEwnC,WAAWrlC,IAAI,WAAW/D,EAAE8l5C,aAAa1i5C,GAAG5B,EAAEgiI,UAAU+rG,OAAOvvO,EAAEskvC,cAAc5ivC,EAAEA,EAAE0B,GAAG,IAAI3B,EAAEG,EAAEwnC,WAAWrlC,IAAI,SAAS,MAAO,CAACmg6C,SAASnk6C,EAAEok6C,WAAWzi6C,EAAE0i6C,iBAAiBxi6C,EAAEwnC,WAAWrlC,IAAI,aAAasg6C,aAAa,CAAC5i6C,EAAEd,EAAEc,EAAEsB,EAAEtB,EAAEyC,GAAGog6C,qBAAqBpj6C,EAAEqj6C,UAAU5j6C,EAAE,EAAEuf,GAAG,SAASngB,EAAEyB,EAAEN,EAAEP,EAAEiB,EAAE3B,EAAEyB,GAAG,OAAO1B,EAAEiqZ,OAAOvqY,GAAG3f,EAAEyB,EAAEN,EAAEP,GAAGqe,GAAG/e,EAAEuB,EAAEE,GAAG,CAAC8i6C,iBAAiB/g6C,KAAK6yF,IAAI,EAAE10F,EAAE464C,aAAa964C,EAAE2sL,SAAS,GAAG,EAAE/uK,GAAG,SAAStf,GAAG,MAAO,CAACkk6C,SAASlk6C,EAAE,EAAEsgB,GAAG,SAASvgB,EAAEyB,EAAEN,EAAEP,GAAG,OAAOX,EAAEiqZ,OAAO3qY,GAAGvf,GAAGif,GAAG9d,EAAEM,EAAEb,GAAG,EAAEse,GAAG,SAASjf,EAAED,GAAG,MAAO,CAACmk6C,SAASlk6C,EAAEyk6C,QAAQ1k6C,EAAE,EAAE6f,GAAG,SAAS7f,EAAEyB,EAAEN,EAAEP,EAAEiB,GAAG,OAAO5B,EAAEiqZ,OAAO3pY,GAAGvgB,EAAEyB,EAAEN,EAAEP,GAAG,CAAC8j6C,QAAQ7i6C,GAAG,EAAE0gB,GAAG,SAASviB,EAAEyB,EAAEN,EAAEP,GAAG,IAAIiB,EAAE3B,EAAEyB,EAAE3B,EAAEyjI,UAAU,GAAG,QAAQ7iI,EAAEi13C,MAAM7x3C,IAAI,0BAA0B,CAAC,IAAIX,EAAEgF,GAAGlH,EAAE,EAAEQ,EAAE6+B,MAAM3+B,GAAE,EAAG3B,EAAE,CAACmD,EAAEA,EAAG,MAAMxB,GAAE,EAAG3B,EAAEyB,EAAEgj6C,gBAAgB,MAAO,CAACC,4BAA4Bjj6C,EAAEgn4C,uBAAuBk8B,mBAAmB,QAAQjk6C,EAAEi13C,MAAM7x3C,IAAI,uBAAuBmg6C,SAASnk6C,EAAE8k6C,mBAAmBrj6C,EAAEq15C,UAAU315C,EAAEP,EAAEi13C,MAAM7x3C,IAAI,oBAAoBpD,EAAEi13C,MAAM7x3C,IAAI,4BAA4B+g6C,kBAAkBlj6C,EAAEmj6C,qBAAqB/k6C,EAAEghS,QAAQn7L,iBAAiBm/zC,gBAAgB/k6C,EAAE,EAAEgiB,GAAG,SAASjiB,EAAED,EAAEyB,GAAG,IAAIN,EAAEkH,GAAG5G,EAAE,EAAEzB,EAAEwgC,MAAM5/B,EAAE8C,KAAK6yF,IAAI,EAAEv2F,EAAEwgC,KAAK/+B,EAAE484C,OAAO5B,aAAa564C,EAAEJ,EAAE484C,OAAOtB,kBAAkB,MAAO,CAAConB,SAASlk6C,EAAE2k6C,4BAA4B5k6C,EAAE2o4C,uBAAuBu8B,uBAAuB/j6C,EAAE8j6C,gBAAgB,CAACjl6C,EAAE2k6C,gBAAgB,IAAIxj6C,EAAEP,GAAGZ,EAAE2k6C,gBAAgB,IAAIxj6C,EAAEP,IAAIuk6C,mBAAmBtj6C,EAAE,EAAEye,GAAG,SAASrgB,EAAED,EAAEyB,GAAG,MAAO,CAAC0i6C,SAASlk6C,EAAEml6C,aAAapl6C,EAAE4k6C,4BAA4Bnj6C,EAAEkn4C,uBAAuB08B,gBAAgB,CAAC5j6C,EAAEm+B,MAAMn+B,EAAEo+B,QAAQ,EAAErd,GAAG,SAASviB,EAAED,EAAEyB,GAAG,YAAO,IAASA,IAAIA,EAAE,GAAG,CAAC0i6C,SAASlk6C,EAAEql6C,QAAQtl6C,EAAEul6C,UAAU,EAAEC,gBAAgB/j6C,EAAE,EAAEse,GAAG,SAAS9f,GAAG,MAAO,CAACkk6C,SAASlk6C,EAAE,EAAE+f,GAAG,SAAS/f,EAAED,EAAEyB,EAAEN,GAAG,MAAO,CAACgj6C,SAASlk6C,EAAEgl6C,gBAAgB585C,GAAGrI,EAAE,EAAEyB,GAAGgk6C,YAAYtk6C,EAAE,EAAEke,GAAG,SAASrf,EAAEyB,EAAEN,GAAG,IAAIP,EAAEZ,EAAEyjI,UAAU,MAAO,CAAC0gyC,SAAS9i5C,GAAGrhB,EAAEyB,EAAEN,GAAGuk6C,QAAQ,EAAEr95C,GAAG5G,EAAE,EAAEb,EAAE4/B,MAAMwk4C,qBAAqB/k6C,EAAEghS,QAAQn7L,iBAAiB6/zC,kBAAkB,CAAC,EAAE/k6C,EAAE+j6C,gBAAgB,GAAG,EAAE/j6C,EAAE+j6C,gBAAgB,IAAI,EAAEli5C,GAAG,SAASziB,EAAEyB,EAAEN,EAAEP,GAAG,OAAOX,EAAEiqZ,OAAO7qY,GAAGrf,EAAEyB,EAAEN,GAAG,CAAC0i6C,QAAQ,EAAE+B,eAAehl6C,GAAG,EAAE4e,GAAG,SAASxf,EAAEyB,EAAEN,EAAEP,GAAG,IAAIiB,EAAE7B,EAAEyjI,UAAUvjI,EAAE+hB,GAAGxgB,EAAEI,GAAG,MAAO,CAACsi6C,SAAS9i5C,GAAGrhB,EAAEyB,EAAEN,GAAG2i6C,UAAUri6C,EAAE++4C,kBAAkB/63C,KAAKig5C,QAAQ,EAAEr95C,GAAG5G,EAAE,EAAEI,EAAE2+B,MAAMwk4C,qBAAqB/k6C,EAAEghS,QAAQn7L,iBAAiB+9zC,QAAQ,EAAEE,QAAQ,CAAC7j6C,EAAEU,EAAEi+3C,UAAUj+3C,EAAEk+3C,SAASklC,OAAOpj6C,EAAEX,EAAE0l6C,kBAAkB,CAAC,EAAE9j6C,EAAE8i6C,gBAAgB,GAAG,EAAE9i6C,EAAE8i6C,gBAAgB,IAAI,EAAEzj5C,GAAG,SAASlhB,EAAEyB,EAAEN,EAAEP,EAAEiB,GAAG,IAAI3B,EAAEF,EAAE++5C,UAAUp95C,EAAEsgB,GAAGxgB,EAAEzB,EAAEyjI,WAAWpgI,EAAE,UAAUlC,EAAE4gI,OAAO/9H,IAAI,YAAYtC,EAAExB,EAAE4u5C,QAAQlu5C,EAAEge,KAAKvb,GAAGH,EAAEhD,EAAE4u5C,QAAQlu5C,EAAEkZ,GAAGzW,GAAGI,EAAE/B,EAAEk+B,MAAM/9B,EAAEg93C,UAAUl73C,EAAET,EAAE08B,MAAM/9B,EAAEi93C,QAAQ,OAAO7+3C,EAAEiqZ,OAAO7qY,GAAGrf,EAAEyB,EAAEN,GAAG,CAAC0k6C,iBAAiB,CAAClk6C,EAAE8B,GAAG/B,EAAEm+B,OAAO,GAAGim4C,iBAAiB,CAACnk6C,EAAEgC,GAAGT,EAAE28B,OAAO,GAAGkm4C,WAAW7l6C,EAAE0/B,OAAO,IAAIl8B,KAAKgL,IAAIjL,EAAEE,GAAG1D,EAAEghS,QAAQn7L,kBAAkB,EAAE+9zC,QAAQ,EAAEmC,UAAUtk6C,EAAEmC,EAAEoi6C,UAAU/i6C,EAAEW,EAAEqi6C,MAAMrk6C,EAAE5B,GAAG,EAAE,SAASgiB,GAAGhiB,EAAED,GAAG,OAAO,EAAEqI,GAAGpI,EAAE,EAAED,EAAE4j6C,SAAS,CAAC,SAASvi5C,GAAGphB,EAAED,EAAEyB,GAAG,OAAOxB,EAAE6k6C,mBAAmB9k6C,EAAEq+4C,OAAOyY,UAAU925C,EAAEyB,EAAEo03C,MAAM7x3C,IAAI,kBAAkBvC,EAAEo03C,MAAM7x3C,IAAI,yBAAyB,CAAC,IAAIkc,GAAG,SAASjgB,EAAED,EAAEyB,EAAEN,EAAEP,GAAG,MAAO,CAACuj6C,SAASlk6C,EAAEkm6C,YAAYnm6C,EAAEom6C,eAAe3k6C,EAAE4k6C,eAAe,EAAEC,SAASnl6C,EAAE8hY,IAAIuhiC,UAAUrj6C,EAAEsrI,QAAQ7rI,EAAEi13C,MAAM7x3C,IAAI,kBAAkBui6C,SAAS,EAAEC,SAAS,EAAEC,iBAAiB7l6C,EAAEi13C,MAAM7x3C,IAAI,yBAAyB0i6C,kBAAkB9l6C,EAAEi13C,MAAM7x3C,IAAI,yBAAyB2i6C,qBAAqBzm6C,EAAEU,EAAEi13C,MAAM7x3C,IAAI,qBAAqB9D,EAAE,EAAE,EAAE,GAAG,MAAMA,IAAIA,GAAG0m6C,mBAAmB/k6C,EAAEjB,EAAEi13C,MAAM7x3C,IAAI,mBAAmBnC,EAAE,EAAE,GAAG,EAAEA,GAAG,EAAEA,GAAGgl6C,eAAelk5C,GAAG/hB,EAAEi13C,MAAM7x3C,IAAI,uBAAuB,IAAInC,EAAE3B,CAAE,EAAE,SAASyiB,GAAG1iB,GAAGA,GAAGyD,KAAKsmC,GAAG,IAAI,IAAIhqC,EAAE0D,KAAK4wH,IAAIr0H,GAAGwB,EAAEiC,KAAKuxH,IAAIh1H,GAAG,MAAO,EAAE,EAAEwB,EAAE,GAAG,IAAIiC,KAAK4yF,KAAK,GAAGt2F,EAAEyB,EAAE,GAAG,GAAGiC,KAAK4yF,KAAK,GAAGt2F,EAAEyB,EAAE,GAAG,EAAE,CAAC,IAAIqe,GAAGuC,GAAG,SAASpiB,EAAED,EAAEyB,EAAEN,EAAEP,EAAEiB,EAAE3B,EAAEyB,EAAE0B,EAAE3B,GAAG,IAAIwB,EAAEtC,EAAE6iI,UAAU,MAAO,CAACqjyC,0BAA0B,aAAa7m6C,GAAG,WAAWA,GAAG8m6C,6BAA6B,aAAa9m6C,GAAG,WAAWA,GAAG+m6C,SAAShn6C,EAAEA,EAAEky4C,OAAO,EAAE+0B,OAAOjn6C,EAAEA,EAAEiy4C,MAAM,EAAE2yB,4BAA4B1h6C,EAAEyl4C,uBAAuBu+B,QAAQhk6C,EAAEq9B,MAAM,IAAI,EAAE78B,KAAKsmC,GAAGm93C,iBAAiB1l6C,EAAE2l6C,eAAelk6C,EAAE08B,MAAM18B,EAAE28B,OAAOwn4C,cAAczm6C,EAAEopB,QAAQy02C,aAAa793C,EAAEm85C,iBAAiB,EAAEoH,SAASti6C,EAAEyl6C,qBAAqBpn6C,EAAEqn6C,eAAe5l6C,EAAE6l6C,WAAWnk6C,EAAE0h6C,kBAAkB5j6C,EAAE2i6C,UAAUpi6C,EAAE+l6C,UAAU,EAAE,EAAErn5C,GAAG,SAASpgB,EAAEyB,EAAEN,EAAEP,EAAEiB,EAAE3B,EAAEyB,EAAE0B,EAAE3B,EAAEwB,EAAEO,GAAG,IAAIE,EAAE9B,EAAE4hI,UAAU,OAAOxjI,EAAEiqZ,OAAO7nY,GAAGriB,EAAEyB,EAAEN,EAAEP,EAAEiB,EAAE3B,EAAEyB,EAAE0B,EAAE3B,EAAEwB,GAAG,CAACwk6C,cAAc9m6C,EAAE8C,KAAKuxH,IAAItxH,EAAEi25C,QAAQj25C,EAAEgl4C,uBAAuB,EAAEq8B,qBAAqB/k6C,EAAEghS,QAAQn7L,iBAAiB6h0C,WAAWlk6C,GAAG,EAAEwc,GAAG,SAASjgB,EAAEyB,EAAEN,EAAEP,EAAEiB,EAAE3B,EAAEyB,EAAE0B,EAAE3B,EAAEwB,GAAG,OAAOjD,EAAEiqZ,OAAO9pY,GAAGpgB,EAAEyB,EAAEN,EAAEP,EAAEiB,EAAE3B,EAAEyB,EAAE0B,GAAE,EAAG3B,GAAE,GAAI,CAACkm6C,eAAe1k6C,EAAE2k6C,eAAe,GAAG,EAAE9m5C,GAAG,SAAS9gB,EAAED,EAAEyB,GAAG,MAAO,CAAC0i6C,SAASlk6C,EAAEuk6C,UAAUxk6C,EAAEsl6C,QAAQ7j6C,EAAE,EAAE6gB,GAAG,SAAStiB,EAAEyB,EAAEN,EAAEP,EAAEiB,EAAE3B,GAAG,OAAOD,EAAEiqZ,OAAO,SAASjqZ,EAAED,EAAEyB,EAAEN,GAAG,IAAIP,EAAEa,EAAEsz5C,aAAajH,WAAW7t5C,EAAE2e,KAAKxZ,YAAYvD,EAAEJ,EAAEsz5C,aAAajH,WAAW7t5C,EAAE6Z,GAAG1U,YAAYlF,EAAEuB,EAAEsz5C,aAAalH,eAAels5C,EAAEzB,EAAE0/B,MAAMv8B,EAAEnD,EAAE2/B,OAAOn+B,EAAEgC,KAAK6yF,IAAI,EAAEp1F,EAAEk94C,OAAO5B,aAAav54C,EAAE/B,EAAEmtL,SAAS5qL,KAAK6yF,IAAI,EAAE90F,EAAEgiI,UAAUmgyC,UAAUli6C,EAAE+B,EAAEP,GAAG/B,EAAEk94C,OAAOzlB,UAAU9z3C,EAAE3D,EAAEk94C,OAAO5l4C,KAAK/W,GAAGiC,EAAET,EAAE/B,EAAEk94C,OAAOzlB,UAAU/03C,EAAE,MAAO,CAACgg6C,QAAQ,EAAEiE,eAAeln6C,EAAE0krC,GAAGyiP,eAAenn6C,EAAEkW,GAAGkx5C,eAAenm6C,EAAEyjrC,GAAG2iP,eAAepm6C,EAAEiV,GAAGgt5C,UAAU,CAACni6C,EAAE0B,GAAG6i6C,MAAMlm6C,EAAEC,EAAEio6C,iBAAiBtn6C,EAAEgu4C,YAAYu5B,iBAAiBtm6C,EAAE+s4C,YAAYw5B,UAAUpo6C,EAAE6+3C,UAAUwpC,UAAUro6C,EAAE8+3C,QAAQwpC,uBAAuB,EAAEjg6C,GAAGlH,EAAE,EAAEM,EAAEgiI,UAAUmgyC,UAAUK,oBAAoB,CAACxg6C,GAAG,GAAGE,GAAG,IAAIug6C,oBAAoB,CAAC,MAAMzg6C,EAAE,MAAME,GAAG,CAAhqB,CAAkqB/C,EAAEV,EAAEiB,EAAEU,GAAG,CAACsi6C,SAASnk6C,EAAEwk6C,UAAU/i6C,GAAG,EAAE2f,GAAG,CAACih5C,cAAc,SAASri6C,EAAEyB,GAAG,MAAO,CAAC0i6C,SAAS,IAAIlk6C,EAAEok5C,gBAAgBrk5C,EAAEyB,EAAE0i6C,UAAUC,WAAW,IAAInk6C,EAAEik5C,UAAUlk5C,EAAEyB,EAAE2i6C,YAAYC,iBAAiB,IAAIpk6C,EAAE8j5C,UAAU/j5C,EAAEyB,EAAE4i6C,kBAAkBC,aAAa,IAAIrk6C,EAAEik5C,UAAUlk5C,EAAEyB,EAAE6i6C,cAAcC,oBAAoB,IAAItk6C,EAAE8j5C,UAAU/j5C,EAAEyB,EAAE8i6C,qBAAqBC,UAAU,IAAIvk6C,EAAE8j5C,UAAU/j5C,EAAEyB,EAAE+i6C,WAAW,EAAElC,qBAAqB,SAASti6C,EAAEyB,GAAG,MAAO,CAAC0i6C,SAAS,IAAIlk6C,EAAEok5C,gBAAgBrk5C,EAAEyB,EAAE0i6C,UAAUC,WAAW,IAAInk6C,EAAEik5C,UAAUlk5C,EAAEyB,EAAE2i6C,YAAYC,iBAAiB,IAAIpk6C,EAAE8j5C,UAAU/j5C,EAAEyB,EAAE4i6C,kBAAkBC,aAAa,IAAIrk6C,EAAEik5C,UAAUlk5C,EAAEyB,EAAE6i6C,cAAcC,oBAAoB,IAAItk6C,EAAE8j5C,UAAU/j5C,EAAEyB,EAAE8i6C,qBAAqBE,gBAAgB,IAAIxk6C,EAAE8j5C,UAAU/j5C,EAAEyB,EAAEgj6C,iBAAiBZ,QAAQ,IAAI5j6C,EAAE+j5C,UAAUhk5C,EAAEyB,EAAEoi6C,SAASC,UAAU,IAAI7j6C,EAAEgk5C,UAAUjk5C,EAAEyB,EAAEqi6C,WAAWG,oBAAoB,IAAIhk6C,EAAEgk5C,UAAUjk5C,EAAEyB,EAAEwi6C,qBAAqBC,oBAAoB,IAAIjk6C,EAAEgk5C,UAAUjk5C,EAAEyB,EAAEyi6C,qBAAqBH,QAAQ,IAAI9j6C,EAAEik5C,UAAUlk5C,EAAEyB,EAAEsi6C,SAASC,OAAO,IAAI/j6C,EAAE8j5C,UAAU/j5C,EAAEyB,EAAEui6C,QAAQQ,UAAU,IAAIvk6C,EAAE8j5C,UAAU/j5C,EAAEyB,EAAE+i6C,WAAW,EAAEvmyC,KAAK,SAASj+H,EAAEyB,GAAG,MAAO,CAAC0i6C,SAAS,IAAIlk6C,EAAEok5C,gBAAgBrk5C,EAAEyB,EAAE0i6C,UAAU,EAAEx4X,YAAY,SAAS3riC,EAAEyB,GAAG,MAAO,CAAC0i6C,SAAS,IAAIlk6C,EAAEok5C,gBAAgBrk5C,EAAEyB,EAAE0i6C,UAAUN,QAAQ,IAAI5j6C,EAAE+j5C,UAAUhk5C,EAAEyB,EAAEoi6C,SAASC,UAAU,IAAI7j6C,EAAEgk5C,UAAUjk5C,EAAEyB,EAAEqi6C,WAAWG,oBAAoB,IAAIhk6C,EAAEgk5C,UAAUjk5C,EAAEyB,EAAEwi6C,qBAAqBC,oBAAoB,IAAIjk6C,EAAEgk5C,UAAUjk5C,EAAEyB,EAAEyi6C,qBAAqBH,QAAQ,IAAI9j6C,EAAEik5C,UAAUlk5C,EAAEyB,EAAEsi6C,SAASC,OAAO,IAAI/j6C,EAAE8j5C,UAAU/j5C,EAAEyB,EAAEui6C,QAAQ,EAAE7B,YAAY,SAASni6C,EAAEyB,GAAG,MAAO,CAAC0i6C,SAAS,IAAIlk6C,EAAEok5C,gBAAgBrk5C,EAAEyB,EAAE0i6C,UAAUO,QAAQ,IAAIzk6C,EAAEgk5C,UAAUjk5C,EAAEyB,EAAEij6C,SAAS,EAAEtC,mBAAmB,SAASpi6C,EAAEyB,GAAG,MAAO,CAAC0i6C,SAAS,IAAIlk6C,EAAEok5C,gBAAgBrk5C,EAAEyB,EAAE0i6C,UAAUO,QAAQ,IAAIzk6C,EAAEgk5C,UAAUjk5C,EAAEyB,EAAEij6C,SAASb,QAAQ,IAAI5j6C,EAAE+j5C,UAAUhk5C,EAAEyB,EAAEoi6C,SAASC,UAAU,IAAI7j6C,EAAEgk5C,UAAUjk5C,EAAEyB,EAAEqi6C,WAAWG,oBAAoB,IAAIhk6C,EAAEgk5C,UAAUjk5C,EAAEyB,EAAEwi6C,qBAAqBC,oBAAoB,IAAIjk6C,EAAEgk5C,UAAUjk5C,EAAEyB,EAAEyi6C,qBAAqBH,QAAQ,IAAI9j6C,EAAEik5C,UAAUlk5C,EAAEyB,EAAEsi6C,SAASC,OAAO,IAAI/j6C,EAAE8j5C,UAAU/j5C,EAAEyB,EAAEui6C,QAAQ,EAAElzrC,OAAO,SAAS9wO,EAAEyB,GAAG,MAAO,CAACmj6C,4BAA4B,IAAI3k6C,EAAE8j5C,UAAU/j5C,EAAEyB,EAAEmj6C,6BAA6BC,iBAAiB,IAAI5k6C,EAAE+j5C,UAAUhk5C,EAAEyB,EAAEoj6C,kBAAkBE,iBAAiB,IAAI9k6C,EAAE+j5C,UAAUhk5C,EAAEyB,EAAEsj6C,kBAAkBE,gBAAgB,IAAIhl6C,EAAEgk5C,UAAUjk5C,EAAEyB,EAAEwj6C,iBAAiBD,qBAAqB,IAAI/k6C,EAAE8j5C,UAAU/j5C,EAAEyB,EAAEuj6C,sBAAsBb,SAAS,IAAIlk6C,EAAEok5C,gBAAgBrk5C,EAAEyB,EAAE0i6C,UAAU,EAAElC,aAAa,SAASji6C,EAAEyB,GAAG,MAAO,CAAC0i6C,SAAS,IAAIlk6C,EAAEok5C,gBAAgBrk5C,EAAEyB,EAAE0i6C,UAAUS,4BAA4B,IAAI3k6C,EAAE8j5C,UAAU/j5C,EAAEyB,EAAEmj6C,6BAA6BM,uBAAuB,IAAIjl6C,EAAE8j5C,UAAU/j5C,EAAEyB,EAAEyj6C,wBAAwBD,gBAAgB,IAAIhl6C,EAAEgk5C,UAAUjk5C,EAAEyB,EAAEwj6C,iBAAiBE,mBAAmB,IAAIll6C,EAAE8j5C,UAAU/j5C,EAAEyB,EAAE0j6C,oBAAoB,EAAEjD,gBAAgB,SAASli6C,EAAEyB,GAAG,MAAO,CAAC0i6C,SAAS,IAAIlk6C,EAAEok5C,gBAAgBrk5C,EAAEyB,EAAE0i6C,UAAUiB,aAAa,IAAInl6C,EAAEok5C,gBAAgBrk5C,EAAEyB,EAAE2j6C,cAAcR,4BAA4B,IAAI3k6C,EAAE8j5C,UAAU/j5C,EAAEyB,EAAEmj6C,6BAA6BS,gBAAgB,IAAIpl6C,EAAEgk5C,UAAUjk5C,EAAEyB,EAAE4j6C,iBAAiB,EAAEhu3C,MAAM,SAASr3C,EAAEyB,GAAG,MAAO,CAAC6j6C,QAAQ,IAAIrl6C,EAAEmk5C,aAAapk5C,EAAEyB,EAAE6j6C,SAASnB,SAAS,IAAIlk6C,EAAEok5C,gBAAgBrk5C,EAAEyB,EAAE0i6C,UAAUoB,UAAU,IAAItl6C,EAAE+j5C,UAAUhk5C,EAAEyB,EAAE8j6C,WAAWC,gBAAgB,IAAIvl6C,EAAE8j5C,UAAU/j5C,EAAEyB,EAAE+j6C,iBAAiB,EAAEzD,aAAa,SAAS/h6C,EAAEyB,GAAG,MAAO,CAAC0i6C,SAAS,IAAIlk6C,EAAEok5C,gBAAgBrk5C,EAAEyB,EAAE0i6C,UAAU,EAAE90a,QAAQ,SAASrv/B,EAAEyB,GAAG,MAAO,CAACwj6C,gBAAgB,IAAIhl6C,EAAE8j5C,UAAU/j5C,EAAEyB,EAAEwj6C,iBAAiBQ,YAAY,IAAIxl6C,EAAE8j5C,UAAU/j5C,EAAEyB,EAAEgk6C,aAAatB,SAAS,IAAIlk6C,EAAEok5C,gBAAgBrk5C,EAAEyB,EAAE0i6C,UAAU,EAAEnC,eAAe,SAAShi6C,EAAEyB,GAAG,MAAO,CAAC0i6C,SAAS,IAAIlk6C,EAAEok5C,gBAAgBrk5C,EAAEyB,EAAE0i6C,UAAUO,QAAQ,IAAIzk6C,EAAEgk5C,UAAUjk5C,EAAEyB,EAAEij6C,SAASb,QAAQ,IAAI5j6C,EAAE+j5C,UAAUhk5C,EAAEyB,EAAEoi6C,SAAS0E,aAAa,IAAIto6C,EAAE+j5C,UAAUhk5C,EAAEyB,EAAE8m6C,cAAc/D,UAAU,IAAIvk6C,EAAE8j5C,UAAU/j5C,EAAEyB,EAAE+i6C,WAAW,EAAE5uC,UAAU,SAAS513C,EAAEyB,GAAG,MAAO,CAAC0i6C,SAAS,IAAIlk6C,EAAEok5C,gBAAgBrk5C,EAAEyB,EAAE0i6C,UAAUN,QAAQ,IAAI5j6C,EAAE+j5C,UAAUhk5C,EAAEyB,EAAEoi6C,SAAS2E,WAAW,IAAIvo6C,EAAEgk5C,UAAUjk5C,EAAEyB,EAAE+m6C,YAAYC,QAAQ,IAAIxo6C,EAAEgk5C,UAAUjk5C,EAAEyB,EAAEgn6C,SAASC,SAAS,IAAIzo6C,EAAEmk5C,aAAapk5C,EAAEyB,EAAEin6C,UAAUC,YAAY,IAAI1o6C,EAAEmk5C,aAAapk5C,EAAEyB,EAAEkn6C,aAAaC,SAAS,IAAI3o6C,EAAEmk5C,aAAapk5C,EAAEyB,EAAEmn6C,UAAU,EAAErG,iBAAiB,SAASvi6C,EAAEyB,GAAG,MAAO,CAAC0i6C,SAAS,IAAIlk6C,EAAEok5C,gBAAgBrk5C,EAAEyB,EAAE0i6C,UAAUN,QAAQ,IAAI5j6C,EAAE+j5C,UAAUhk5C,EAAEyB,EAAEoi6C,SAASgF,YAAY,IAAI5o6C,EAAEgk5C,UAAUjk5C,EAAEyB,EAAEon6C,aAAaC,OAAO,IAAI7o6C,EAAE8j5C,UAAU/j5C,EAAEyB,EAAEqn6C,QAAQC,SAAS,IAAI9o6C,EAAEkk5C,UAAUnk5C,EAAEyB,EAAEsn6C,UAAU,EAAE5o3C,KAAK,SAASngD,EAAEyB,GAAG,MAAO,CAAC0i6C,SAAS,IAAIlk6C,EAAEok5C,gBAAgBrk5C,EAAEyB,EAAE0i6C,UAAUuB,QAAQ,IAAIzl6C,EAAE8j5C,UAAU/j5C,EAAEyB,EAAEik6C,SAASV,qBAAqB,IAAI/k6C,EAAE8j5C,UAAU/j5C,EAAEyB,EAAEuj6C,sBAAsBW,kBAAkB,IAAI1l6C,EAAEgk5C,UAAUjk5C,EAAEyB,EAAEkk6C,mBAAmB,EAAEnD,aAAa,SAASxi6C,EAAEyB,GAAG,MAAO,CAAC0i6C,SAAS,IAAIlk6C,EAAEok5C,gBAAgBrk5C,EAAEyB,EAAE0i6C,UAAUuB,QAAQ,IAAIzl6C,EAAE8j5C,UAAU/j5C,EAAEyB,EAAEik6C,SAASV,qBAAqB,IAAI/k6C,EAAE8j5C,UAAU/j5C,EAAEyB,EAAEuj6C,sBAAsBW,kBAAkB,IAAI1l6C,EAAEgk5C,UAAUjk5C,EAAEyB,EAAEkk6C,mBAAmB9B,QAAQ,IAAI5j6C,EAAE+j5C,UAAUhk5C,EAAEyB,EAAEoi6C,SAAS+B,eAAe,IAAI3l6C,EAAE8j5C,UAAU/j5C,EAAEyB,EAAEmk6C,gBAAgB,EAAEnD,YAAY,SAASzi6C,EAAEyB,GAAG,MAAO,CAAC0i6C,SAAS,IAAIlk6C,EAAEok5C,gBAAgBrk5C,EAAEyB,EAAE0i6C,UAAUL,UAAU,IAAI7j6C,EAAEgk5C,UAAUjk5C,EAAEyB,EAAEqi6C,WAAW4B,QAAQ,IAAIzl6C,EAAE8j5C,UAAU/j5C,EAAEyB,EAAEik6C,SAASV,qBAAqB,IAAI/k6C,EAAE8j5C,UAAU/j5C,EAAEyB,EAAEuj6C,sBAAsBnB,QAAQ,IAAI5j6C,EAAE+j5C,UAAUhk5C,EAAEyB,EAAEoi6C,SAAS8B,kBAAkB,IAAI1l6C,EAAEgk5C,UAAUjk5C,EAAEyB,EAAEkk6C,mBAAmB5B,QAAQ,IAAI9j6C,EAAEik5C,UAAUlk5C,EAAEyB,EAAEsi6C,SAASC,OAAO,IAAI/j6C,EAAE8j5C,UAAU/j5C,EAAEyB,EAAEui6C,QAAQ,EAAEtB,QAAQ,SAAS1i6C,EAAEyB,GAAG,MAAO,CAAC0i6C,SAAS,IAAIlk6C,EAAEok5C,gBAAgBrk5C,EAAEyB,EAAE0i6C,UAAUuB,QAAQ,IAAIzl6C,EAAE8j5C,UAAU/j5C,EAAEyB,EAAEik6C,SAASV,qBAAqB,IAAI/k6C,EAAE8j5C,UAAU/j5C,EAAEyB,EAAEuj6C,sBAAsBW,kBAAkB,IAAI1l6C,EAAEgk5C,UAAUjk5C,EAAEyB,EAAEkk6C,mBAAmBE,iBAAiB,IAAI5l6C,EAAEgk5C,UAAUjk5C,EAAEyB,EAAEok6C,kBAAkBC,iBAAiB,IAAI7l6C,EAAEgk5C,UAAUjk5C,EAAEyB,EAAEqk6C,kBAAkBC,WAAW,IAAI9l6C,EAAE8j5C,UAAU/j5C,EAAEyB,EAAEsk6C,YAAYlC,QAAQ,IAAI5j6C,EAAE+j5C,UAAUhk5C,EAAEyB,EAAEoi6C,SAASmC,UAAU,IAAI/l6C,EAAE8j5C,UAAU/j5C,EAAEyB,EAAEuk6C,WAAWC,UAAU,IAAIhm6C,EAAE8j5C,UAAU/j5C,EAAEyB,EAAEwk6C,WAAWC,MAAM,IAAIjm6C,EAAE8j5C,UAAU/j5C,EAAEyB,EAAEyk6C,OAAO,EAAEjxC,OAAO,SAASj13C,EAAEyB,GAAG,MAAO,CAAC0i6C,SAAS,IAAIlk6C,EAAEok5C,gBAAgBrk5C,EAAEyB,EAAE0i6C,UAAUgC,YAAY,IAAIlm6C,EAAEgk5C,UAAUjk5C,EAAEyB,EAAE0k6C,aAAaC,eAAe,IAAInm6C,EAAE8j5C,UAAU/j5C,EAAEyB,EAAE2k6C,gBAAgBC,eAAe,IAAIpm6C,EAAE8j5C,UAAU/j5C,EAAEyB,EAAE4k6C,gBAAgBC,SAAS,IAAIrm6C,EAAE8j5C,UAAU/j5C,EAAEyB,EAAE6k6C,UAAU9B,UAAU,IAAIvk6C,EAAE8j5C,UAAU/j5C,EAAEyB,EAAE+i6C,WAAW+B,SAAS,IAAItm6C,EAAE+j5C,UAAUhk5C,EAAEyB,EAAE8k6C,UAAUC,SAAS,IAAIvm6C,EAAE+j5C,UAAUhk5C,EAAEyB,EAAE+k6C,UAAUC,iBAAiB,IAAIxm6C,EAAE8j5C,UAAU/j5C,EAAEyB,EAAEgl6C,kBAAkBC,kBAAkB,IAAIzm6C,EAAE8j5C,UAAU/j5C,EAAEyB,EAAEil6C,mBAAmBC,oBAAoB,IAAI1m6C,EAAE8j5C,UAAU/j5C,EAAEyB,EAAEkl6C,qBAAqBC,kBAAkB,IAAI3m6C,EAAE8j5C,UAAU/j5C,EAAEyB,EAAEml6C,mBAAmBC,eAAe,IAAI5m6C,EAAEik5C,UAAUlk5C,EAAEyB,EAAEol6C,gBAAgB,EAAElE,WAAW,SAAS3i6C,EAAEyB,GAAG,MAAO,CAACql6C,wBAAwB,IAAI7m6C,EAAE+j5C,UAAUhk5C,EAAEyB,EAAEql6C,yBAAyBC,2BAA2B,IAAI9m6C,EAAE+j5C,UAAUhk5C,EAAEyB,EAAEsl6C,4BAA4BC,SAAS,IAAI/m6C,EAAE8j5C,UAAU/j5C,EAAEyB,EAAEul6C,UAAUC,OAAO,IAAIhn6C,EAAE8j5C,UAAU/j5C,EAAEyB,EAAEwl6C,QAAQrC,4BAA4B,IAAI3k6C,EAAE8j5C,UAAU/j5C,EAAEyB,EAAEmj6C,6BAA6BsC,QAAQ,IAAIjn6C,EAAE8j5C,UAAU/j5C,EAAEyB,EAAEyl6C,SAASC,gBAAgB,IAAIln6C,EAAE+j5C,UAAUhk5C,EAAEyB,EAAE0l6C,iBAAiBC,eAAe,IAAInn6C,EAAE8j5C,UAAU/j5C,EAAEyB,EAAE2l6C,gBAAgBC,cAAc,IAAIpn6C,EAAE8j5C,UAAU/j5C,EAAEyB,EAAE4l6C,eAAelD,SAAS,IAAIlk6C,EAAEok5C,gBAAgBrk5C,EAAEyB,EAAE0i6C,UAAUmD,qBAAqB,IAAIrn6C,EAAEok5C,gBAAgBrk5C,EAAEyB,EAAE6l6C,sBAAsBC,eAAe,IAAItn6C,EAAEok5C,gBAAgBrk5C,EAAEyB,EAAE8l6C,gBAAgBC,UAAU,IAAIvn6C,EAAE+j5C,UAAUhk5C,EAAEyB,EAAE+l6C,WAAWzC,iBAAiB,IAAI9k6C,EAAE+j5C,UAAUhk5C,EAAEyB,EAAEsj6C,kBAAkBjB,UAAU,IAAI7j6C,EAAEgk5C,UAAUjk5C,EAAEyB,EAAEqi6C,WAAW2D,UAAU,IAAIxn6C,EAAE+j5C,UAAUhk5C,EAAEyB,EAAEgm6C,WAAW,EAAE7E,UAAU,SAAS5i6C,EAAEyB,GAAG,MAAO,CAACql6C,wBAAwB,IAAI7m6C,EAAE+j5C,UAAUhk5C,EAAEyB,EAAEql6C,yBAAyBC,2BAA2B,IAAI9m6C,EAAE+j5C,UAAUhk5C,EAAEyB,EAAEsl6C,4BAA4BC,SAAS,IAAI/m6C,EAAE8j5C,UAAU/j5C,EAAEyB,EAAEul6C,UAAUC,OAAO,IAAIhn6C,EAAE8j5C,UAAU/j5C,EAAEyB,EAAEwl6C,QAAQrC,4BAA4B,IAAI3k6C,EAAE8j5C,UAAU/j5C,EAAEyB,EAAEmj6C,6BAA6BsC,QAAQ,IAAIjn6C,EAAE8j5C,UAAU/j5C,EAAEyB,EAAEyl6C,SAASC,gBAAgB,IAAIln6C,EAAE+j5C,UAAUhk5C,EAAEyB,EAAE0l6C,iBAAiBC,eAAe,IAAInn6C,EAAE8j5C,UAAU/j5C,EAAEyB,EAAE2l6C,gBAAgBC,cAAc,IAAIpn6C,EAAE8j5C,UAAU/j5C,EAAEyB,EAAE4l6C,eAAelD,SAAS,IAAIlk6C,EAAEok5C,gBAAgBrk5C,EAAEyB,EAAE0i6C,UAAUmD,qBAAqB,IAAIrn6C,EAAEok5C,gBAAgBrk5C,EAAEyB,EAAE6l6C,sBAAsBC,eAAe,IAAItn6C,EAAEok5C,gBAAgBrk5C,EAAEyB,EAAE8l6C,gBAAgBC,UAAU,IAAIvn6C,EAAE+j5C,UAAUhk5C,EAAEyB,EAAE+l6C,WAAWzC,iBAAiB,IAAI9k6C,EAAE+j5C,UAAUhk5C,EAAEyB,EAAEsj6C,kBAAkBjB,UAAU,IAAI7j6C,EAAEgk5C,UAAUjk5C,EAAEyB,EAAEqi6C,WAAW2D,UAAU,IAAIxn6C,EAAE+j5C,UAAUhk5C,EAAEyB,EAAEgm6C,WAAWC,cAAc,IAAIzn6C,EAAE8j5C,UAAU/j5C,EAAEyB,EAAEim6C,eAAe1C,qBAAqB,IAAI/k6C,EAAE8j5C,UAAU/j5C,EAAEyB,EAAEuj6C,sBAAsB2C,UAAU,IAAI1n6C,EAAE+j5C,UAAUhk5C,EAAEyB,EAAEkm6C,WAAW,EAAE9E,kBAAkB,SAAS7i6C,EAAEyB,GAAG,MAAO,CAACql6C,wBAAwB,IAAI7m6C,EAAE+j5C,UAAUhk5C,EAAEyB,EAAEql6C,yBAAyBC,2BAA2B,IAAI9m6C,EAAE+j5C,UAAUhk5C,EAAEyB,EAAEsl6C,4BAA4BC,SAAS,IAAI/m6C,EAAE8j5C,UAAU/j5C,EAAEyB,EAAEul6C,UAAUC,OAAO,IAAIhn6C,EAAE8j5C,UAAU/j5C,EAAEyB,EAAEwl6C,QAAQrC,4BAA4B,IAAI3k6C,EAAE8j5C,UAAU/j5C,EAAEyB,EAAEmj6C,6BAA6BsC,QAAQ,IAAIjn6C,EAAE8j5C,UAAU/j5C,EAAEyB,EAAEyl6C,SAASC,gBAAgB,IAAIln6C,EAAE+j5C,UAAUhk5C,EAAEyB,EAAE0l6C,iBAAiBC,eAAe,IAAInn6C,EAAE8j5C,UAAU/j5C,EAAEyB,EAAE2l6C,gBAAgBC,cAAc,IAAIpn6C,EAAE8j5C,UAAU/j5C,EAAEyB,EAAE4l6C,eAAelD,SAAS,IAAIlk6C,EAAEok5C,gBAAgBrk5C,EAAEyB,EAAE0i6C,UAAUmD,qBAAqB,IAAIrn6C,EAAEok5C,gBAAgBrk5C,EAAEyB,EAAE6l6C,sBAAsBC,eAAe,IAAItn6C,EAAEok5C,gBAAgBrk5C,EAAEyB,EAAE8l6C,gBAAgBC,UAAU,IAAIvn6C,EAAE+j5C,UAAUhk5C,EAAEyB,EAAE+l6C,WAAWzC,iBAAiB,IAAI9k6C,EAAE+j5C,UAAUhk5C,EAAEyB,EAAEsj6C,kBAAkBjB,UAAU,IAAI7j6C,EAAEgk5C,UAAUjk5C,EAAEyB,EAAEqi6C,WAAW8D,eAAe,IAAI3n6C,EAAEgk5C,UAAUjk5C,EAAEyB,EAAEmm6C,gBAAgBH,UAAU,IAAIxn6C,EAAE+j5C,UAAUhk5C,EAAEyB,EAAEgm6C,WAAWI,eAAe,IAAI5n6C,EAAE+j5C,UAAUhk5C,EAAEyB,EAAEom6C,gBAAgBH,cAAc,IAAIzn6C,EAAE8j5C,UAAU/j5C,EAAEyB,EAAEim6C,eAAe1C,qBAAqB,IAAI/k6C,EAAE8j5C,UAAU/j5C,EAAEyB,EAAEuj6C,sBAAsB2C,UAAU,IAAI1n6C,EAAE+j5C,UAAUhk5C,EAAEyB,EAAEkm6C,WAAW,EAAEn9qC,WAAW,SAASxqP,EAAEyB,GAAG,MAAO,CAAC0i6C,SAAS,IAAIlk6C,EAAEok5C,gBAAgBrk5C,EAAEyB,EAAE0i6C,UAAUK,UAAU,IAAIvk6C,EAAE8j5C,UAAU/j5C,EAAEyB,EAAE+i6C,WAAWc,QAAQ,IAAIrl6C,EAAEmk5C,aAAapk5C,EAAEyB,EAAE6j6C,SAAS,EAAExD,kBAAkB,SAAS9h6C,EAAEyB,GAAG,MAAO,CAAC0i6C,SAAS,IAAIlk6C,EAAEok5C,gBAAgBrk5C,EAAEyB,EAAE0i6C,UAAUK,UAAU,IAAIvk6C,EAAE8j5C,UAAU/j5C,EAAEyB,EAAE+i6C,WAAWX,QAAQ,IAAI5j6C,EAAE+j5C,UAAUhk5C,EAAEyB,EAAEoi6C,SAASiE,eAAe,IAAI7n6C,EAAEgk5C,UAAUjk5C,EAAEyB,EAAEqm6C,gBAAgBC,eAAe,IAAI9n6C,EAAEgk5C,UAAUjk5C,EAAEyB,EAAEsm6C,gBAAgBC,eAAe,IAAI/n6C,EAAEgk5C,UAAUjk5C,EAAEyB,EAAEum6C,gBAAgBC,eAAe,IAAIho6C,EAAEgk5C,UAAUjk5C,EAAEyB,EAAEwm6C,gBAAgBnE,UAAU,IAAI7j6C,EAAEgk5C,UAAUjk5C,EAAEyB,EAAEqi6C,WAAWoC,MAAM,IAAIjm6C,EAAE8j5C,UAAU/j5C,EAAEyB,EAAEyk6C,OAAOgC,iBAAiB,IAAIjo6C,EAAEgk5C,UAAUjk5C,EAAEyB,EAAEym6C,kBAAkBC,iBAAiB,IAAIlo6C,EAAEgk5C,UAAUjk5C,EAAEyB,EAAE0m6C,kBAAkBC,UAAU,IAAIno6C,EAAE8j5C,UAAU/j5C,EAAEyB,EAAE2m6C,WAAWC,UAAU,IAAIpo6C,EAAE8j5C,UAAU/j5C,EAAEyB,EAAE4m6C,WAAWpE,oBAAoB,IAAIhk6C,EAAEgk5C,UAAUjk5C,EAAEyB,EAAEwi6C,qBAAqBC,oBAAoB,IAAIjk6C,EAAEgk5C,UAAUjk5C,EAAEyB,EAAEyi6C,qBAAqBoE,uBAAuB,IAAIro6C,EAAE8j5C,UAAU/j5C,EAAEyB,EAAE6m6C,wBAAwB,GAAG,SAASnm5C,GAAGniB,EAAEyB,EAAEN,EAAEP,EAAEiB,EAAE3B,EAAEyB,GAAG,IAAI,IAAI0B,EAAErD,EAAEguC,QAAQtsC,EAAE2B,EAAEyrH,GAAG5rH,EAAElD,EAAE+2U,WAAW,gBAAgBtzU,EAAE,GAAGE,EAAE,EAAEH,EAAE,EAAEiB,EAAE,EAAEA,EAAE7D,EAAEM,OAAOuD,IAAI,CAAC,IAAIlB,EAAE3C,EAAE6D,GAAGR,EAAExC,EAAEm6Z,QAAQr4Z,GAAGP,EAAEiB,EAAEy84C,UAAUv/4C,GAAG,GAAG6B,EAAE,CAAC,IAAIc,EAAEP,EAAEuz5C,UAAU,IAAIj15C,EAAE,IAAI,IAAIA,EAAE,KAAKiC,EAAE9D,EAAE8k6C,mBAAmBvh6C,EAAEuz5C,UAAU7y5C,EAAEpC,EAAE3B,IAAI,IAAI2D,EAAElC,EAAEqB,EAAEuz4C,iBAAiBvz4C,EAAEwz4C,iBAAiB1x4C,EAAE9B,EAAEqy4C,qBAAqB,GAAGvw4C,EAAE5D,OAAO,EAAE,CAAC,IAAIiD,EAAElE,EAAEc,SAASqD,EAAEN,EAAE7D,EAAEsvN,IAAIprN,EAAEnB,EAAEsy4C,uBAAuBt14C,EAAEyjI,UAAU80xC,eAAet45C,EAAEsvN,IAAIprN,EAAEA,EAAEnB,EAAEuy4C,yBAAyB9x4C,EAAEf,KAAK,CAACsm6C,YAAYlk6C,EAAEmk6C,aAAazl6C,EAAEigI,UAAUr/H,EAAEit9B,aAAalt9B,IAAIX,EAAEG,GAAGmB,EAAE5D,OAAO,CAAE,CAAC2C,GAAGX,EAAEkzH,KAAK/yH,EAAE3B,EAAE25M,MAAM1sM,GAAGwiW,SAASzhW,GAAGyhW,SAASnxW,EAAEkp6C,yBAAyBn65C,GAAGoiW,SAASjvV,GAAGpe,EAAE9D,EAAEyjI,UAAUx/H,GAAG9C,EAAEirB,GAAGvoB,EAAEwk4C,mBAAmBxk4C,EAAEyk4C,YAAYzk4C,EAAEkoV,SAAS,KAAK/rV,EAAEyjI,UAAUjjG,KAAK,KAAK,KAAK38B,EAAEox4C,sBAAuB,CAAC,CAAC,GAAGtz4C,GAAG8B,EAAEvC,OAAO,CAAC,IAAI6D,EAAE/E,EAAE+2U,WAAW,mBAAmBxxU,EAAE,IAAItF,EAAEwj5C,0BAA0Bl+4C,EAAEmqH,OAAO,EAAE/rH,GAAG4B,EAAEi83C,QAAQ,IAAI,IAAI983C,EAAE,EAAEiB,EAAE,EAAEtB,EAAEZ,EAAEkC,EAAEtB,EAAEnD,OAAOyE,GAAG,EAAE,IAAI,IAAIX,EAAEX,EAAEsB,GAAGa,EAAE,EAAEA,EAAExB,EAAEgk6C,YAAY9n6C,OAAO,EAAEsF,IAAI,CAAC,IAAIJ,EAAE,EAAEI,EAAEd,EAAEV,EAAEgk6C,YAAY5i6C,EAAE,GAAGM,EAAE1B,EAAEgk6C,YAAY5i6C,EAAE,GAAGlB,EAAEF,EAAEgk6C,YAAY5i6C,EAAE,GAAGjB,EAAEH,EAAEgk6C,YAAY5i6C,EAAE,GAAGb,EAAEq83C,QAAQl93C,IAAIgB,EAAEgB,EAAExB,EAAEC,EAAE,GAAGI,EAAEq83C,QAAQl93C,IAAIgB,EAAEgB,EAAExB,EAAEC,EAAE,GAAGI,EAAEq83C,QAAQl93C,IAAIgB,EAAEgB,EAAExB,EAAEC,EAAE,GAAGI,EAAEq83C,QAAQl93C,IAAIgB,EAAEgB,EAAExB,EAAEC,EAAE,EAAG,GAAG2a,IAAIA,GAAG5e,OAAO,EAAEyC,KAAKmc,GAAG,SAAS9f,GAAG,IAAIyB,EAAE,EAAEzB,EAAEmB,EAAE,IAAIlB,EAAE0j5C,sBAAsBxi5C,EAAEuuH,OAAOjuH,GAAGN,EAAEqg4C,QAAQ,IAAI,IAAI5g4C,EAAE,EAAEA,EAAEa,EAAEb,IAAI,CAAC,IAAIiB,EAAE,EAAEjB,EAAEO,EAAE2g4C,OAAOjg4C,EAAE,GAAG,EAAEjB,EAAE,EAAEO,EAAE2g4C,OAAOjg4C,EAAE,GAAG,EAAEjB,EAAE,EAAEO,EAAE2g4C,OAAOjg4C,EAAE,GAAG,EAAEjB,EAAE,EAAEO,EAAE2g4C,OAAOjg4C,EAAE,GAAG,EAAEjB,EAAE,EAAEO,EAAE2g4C,OAAOjg4C,EAAE,GAAG,EAAEjB,EAAE,EAAEO,EAAE2g4C,OAAOjg4C,EAAE,GAAG,EAAEjB,EAAE,CAAE,CAAC,OAAOO,CAAC,CAA1O,CAA4OwC,IAAI,IAAI,IAAIY,EAAElB,EAAEkl4C,kBAAkBzo3C,IAAG,GAAIlZ,EAAEvD,EAAEkj4C,mBAAmBhh4C,EAAEtF,EAAEgl5C,sBAAsB1jB,SAAQ,GAAI183C,EAAE,EAAEgB,EAAEpC,EAAEoB,EAAEgB,EAAE3E,OAAO2D,GAAG,EAAE,CAAC,IAAIqB,EAAEL,EAAEhB,GAAGkB,EAAEua,GAAGpa,EAAEu9H,UAAUv9H,EAAEmr9B,aAAarx9B,EAAEyjI,WAAW1+H,EAAEqxH,KAAK/yH,EAAE3B,EAAE85M,UAAU7sM,GAAGwiW,SAASzhW,GAAGyhW,SAASnxW,EAAEkp6C,yBAAyBn65C,GAAGoiW,SAASprW,EAAE5E,EAAEirB,GAAGxlB,EAAErC,EAAEtE,EAAEqj5C,cAAcre,cAAc,EAAE,EAAE/+3C,EAAE+i6C,aAAa/i6C,EAAE8i6C,YAAY9n6C,OAAOgF,EAAE8i6C,YAAY9n6C,OAAO,GAAG,KAAKlB,EAAEyjI,UAAUjjG,KAAK,KAAK,KAAK,KAAM,CAAC55B,EAAEq4I,UAAU16I,EAAE06I,SAAU,CAAC,CAAC,IAAI78H,GAAGniB,EAAEorL,SAAS,IAAIxqK,aAAa,KAAK,SAAS6B,GAAG1iB,EAAEyB,EAAEN,EAAEP,EAAEiB,EAAE3B,GAAG,IAAIyB,EAAE1B,EAAE+l5C,mBAAmBhm5C,GAAGqD,IAAI1B,EAAEqv4C,gBAAgB,IAAIvv4C,EAAEC,IAAIC,EAAEqyuB,cAAc,IAAI7yuB,EAAE+B,EAAEjD,EAAE2l5C,uBAAuB5l5C,EAAEY,GAAG,OAAO,IAAIX,EAAEoqC,OAAOhnC,EAAExB,EAAEqB,EAAE,IAAIhD,GAAGwB,EAAEG,EAAEqB,EAAE,IAAIhD,EAAE,CAAC,SAAS0iB,GAAG5iB,EAAEyB,EAAEN,EAAEP,EAAEiB,EAAE3B,EAAEyB,EAAE0B,EAAE3B,EAAEwB,EAAEO,GAAG,IAAIE,EAAE3D,EAAEixB,KAAKuj3C,kBAAkBhx4C,EAAExD,EAAEixB,KAAK0j3C,yBAAyBlw4C,EAAEzE,EAAEsxO,KAAKqjqC,yBAAyBpx4C,EAAE,CAAC,EAAEC,EAAEqiB,QAAQ,IAAI,IAAI5hB,EAAE,EAAEA,EAAEN,EAAEzC,OAAO+C,IAAI,CAAC,IAAIjB,EAAEW,EAAEK,IAAIC,GAAGH,EAAEd,EAAEmhhB,SAASnhhB,EAAE6/3C,aAAa7i4C,EAAEo04C,yBAAyBpx4C,EAAE4/3C,kBAAkB,KAAKhi4C,EAAEoC,EAAE6/3C,aAAa,GAAG/+3C,EAAE,CAAC,IAAID,EAAE,IAAI5D,EAAEoqC,MAAMrnC,EAAEs5O,QAAQt5O,EAAEu5O,SAASz3O,EAAEqM,GAAGtN,EAAE1C,EAAEkC,EAAE1B,GAAGwC,EAAEoD,GAAGrH,EAAEyo4C,uBAAuB7j4C,EAAE0z5C,0BAA0Bp05C,EAAEvC,EAAEyw4C,uBAAuBty4C,EAAEq04C,aAAanx4C,EAAEF,GAAGmB,EAAElE,EAAE4i5C,OAAO1h5C,IAAIiD,GAAGpE,EAAEqn5C,eAAe3l5C,GAAG,IAAI,IAAIqD,EAAE2d,GAAG5e,EAAEgmZ,OAAOhmZ,EAAE87B,MAAM97B,EAAE+7B,OAAO/7B,EAAEqw9B,WAAWrw9B,EAAEog4C,aAAa9/3C,GAAGmB,EAAEpE,EAAEgQ,GAAGtN,EAAEmiB,IAAIjhB,GAAGpD,GAAGq0I,MAAMlxI,EAAEkxI,MAAMhwH,IAAIvkB,EAAEsD,EAAEuhH,QAAQpmH,EAAEsvO,OAAOzqO,GAAGL,EAAE1E,EAAEo04C,wBAAwBpx4C,EAAE4/3C,oBAAoB3i4C,EAAEuk5C,YAAYn62B,SAAS3miB,KAAKsmC,GAAG,EAAE,EAAErkC,EAAE,EAAEA,EAAE3C,EAAEq/3C,UAAU183C,IAAI1F,EAAEw44C,qBAAqBj14C,EAAE+B,EAAEb,GAAGjB,GAAGT,EAAE8/3C,qBAAqB,IAAIv/3C,EAAEP,EAAE8/3C,qBAAqB,CAACqmC,cAAc5j6C,EAAEiqO,MAAM9qO,GAAI,MAAMmD,GAAG7E,EAAEq/3C,UAAU7+3C,EAAG,CAAC,GAAGC,EAAE,CAACgB,EAAEohB,QAAQ,IAAI,IAAIxhB,EAAErE,EAAEsxO,KAAKkjqC,kBAAkBxv4C,EAAE,EAAEA,EAAEX,EAAEnD,OAAO8D,IAAI,CAAC,IAAIwB,EAAEnC,EAAEL,IAAIgB,GAAG,GAAGwB,EAAE29gB,OAAOt8gB,GAAGrB,EAAE673C,UAAU593C,OAAQ,CAAC,IAAI2B,EAAE7C,EAAEyB,GAAG,GAAGoB,EAAE,IAAI,IAAIV,EAAE,EAAEA,EAAEc,EAAE673C,UAAU383C,IAAIzF,EAAEw44C,qBAAqBh04C,EAAE2B,EAAE+i6C,cAAc/i6C,EAAEopO,YAAY3nO,GAAGrB,EAAE673C,UAAU593C,EAAG,CAAC,CAACzE,EAAEsxO,KAAKujqC,0BAA0Brh1B,WAAW/ujB,EAAG,CAACzE,EAAEixB,KAAK4j3C,0BAA0Brh1B,WAAWhwjB,EAAG,CAAC,SAASsW,GAAG7Z,EAAED,EAAEyB,GAAG,OAAOA,EAAE4u4C,aAAarw4C,EAAE,oBAAoBC,EAAE,YAAY,YAAY,CAAC,SAAS4Z,GAAG7Z,EAAEyB,EAAEN,EAAEP,EAAEiB,EAAE3B,EAAEyB,EAAE0B,EAAE3B,EAAEwB,EAAEO,EAAEE,GAAG,IAAI,IAAIH,EAAExD,EAAEguC,QAAQvpC,EAAEjB,EAAEsrH,GAAGvrH,EAAEvD,EAAEyjI,UAAUx/H,EAAE,QAAQZ,EAAEL,EAAE,QAAQtB,EAAEoC,EAAEG,GAAG,UAAU9C,EAAE4gI,OAAO/9H,IAAI,oBAAoBH,EAAEI,IAAIjB,IAAIc,EAAEgB,OAAE,IAAS3D,EAAE4gI,OAAO/9H,IAAI,mBAAmB273C,WAAW,GAAGx73C,GAAE,EAAGC,EAAEpE,EAAEop6C,qBAAqB,EAAEz65C,GAAG2k5C,UAAUvu5C,EAAE5D,EAAE4gI,OAAO/9H,IAAI,wBAAwBuB,EAAE,GAAGb,EAAE,EAAEiB,EAAE/E,EAAE8D,EAAEiB,EAAEzE,OAAOwD,GAAG,EAAE,CAAC,IAAIL,EAAEsB,EAAEjB,GAAGM,EAAEvD,EAAEm6Z,QAAQv3Z,GAAGmC,EAAExB,EAAE074C,UAAUv/4C,GAAG,GAAGqF,EAAE,CAAC,IAAIJ,EAAEvE,EAAE2E,EAAEyqB,KAAKzqB,EAAE8qO,KAAK,GAAGlrO,GAAGA,EAAE2lV,SAAS/nV,MAAM9C,OAAO,CAAC,IAAIwE,EAAEU,EAAEkh4C,sBAAsBtj4C,IAAI7C,EAAEirB,IAAI1lB,EAAE7E,GAAG2E,EAAEmh5C,SAASzi5C,EAAErD,EAAE2E,EAAE6t4C,aAAa7t4C,EAAEgv4C,aAAarw4C,EAAEnC,GAAG,IAAIO,EAAEg9B,MAAMh8B,EAAEvE,EAAE+2U,WAAWj9T,GAAGpT,EAAE7E,EAAE2E,GAAGd,GAAGkB,EAAE3G,EAAEsy4C,oBAAoBrt4C,EAAE3B,EAAEi9B,MAAM37B,OAAE,EAAOgB,EAAE,CAAC,EAAE,GAAGK,OAAE,EAAOH,OAAE,EAAOT,EAAE,KAAKyB,OAAE,EAAO,GAAGlF,EAAEqE,EAAElB,EAAEy74C,kBAAkB164C,EAAEtB,EAAEs+Q,OAAOl+Q,EAAEG,EAAEy74C,kBAAkBh73C,KAAKjf,EAAE6p4C,cAAcxq4C,EAAEb,EAAEw74C,kBAAkB/63C,KAAKngB,EAAEN,EAAEw74C,kBAAkBz54C,EAAE5B,GAAGnF,EAAEgqB,QAAQq/4C,UAAUrp6C,EAAEgqB,QAAQs/4C,SAAS,cAAcpk6C,EAAE+d,MAAM,WAAW/d,EAAE+d,KAAKxe,EAAEs+Q,OAAOt+Q,EAAEynS,aAAc,CAAC,IAAIjnS,EAAE,IAAI9D,EAAE4gI,OAAO/9H,IAAI,aAAa273C,WAAW,IAAIn53C,EAAE8g5C,gBAAgBph5C,EAAElB,EAAEw74C,kBAAkBz64C,EAAEW,GAAG1G,EAAEgqB,QAAQq/4C,UAAUrp6C,EAAEgqB,QAAQs/4C,SAASrk6C,GAAGE,EAAEV,EAAEs+Q,OAAOt+Q,EAAEynS,QAAQrnS,EAAEG,EAAEw74C,kBAAkB/63C,IAAK,CAAC,IAAIhf,EAAE4B,GAAGrD,EAAE,EAAEhF,EAAEyjI,UAAUjjG,MAAMh7B,EAAEgL,GAAGnM,EAAEyy5C,UAAU9z5C,EAAEiB,EAAEjE,EAAEyjI,UAAUh9H,GAAGpB,EAAE4L,GAAG5M,EAAEyy5C,UAAU9z5C,EAAEiB,EAAEjE,EAAEyjI,UAAUh9H,GAAGb,EAAEb,GAAGyB,EAAEmx4C,cAActx4C,EAAE,SAASlF,EAAE4gI,OAAO/9H,IAAI,kBAAkB4B,GAAGY,EAAEox4C,cAAc9z4C,GAAG8D,GAAGpB,EAAEnC,EAAEyy5C,UAAU925C,EAAE6B,EAAE2D,EAAEH,EAAErC,EAAEE,GAAG,IAAI4C,EAAE9F,EAAE8k6C,mBAAmBzg6C,EAAEyy5C,UAAU9x5C,EAAE9E,EAAEyB,GAAG2E,EAAExC,GAAGjC,GAAGkD,GAAGsB,EAAE+b,GAAG5c,EAAEe,EAAEvG,EAAE8k6C,mBAAmBz/5C,EAAEL,EAAE9E,EAAEyB,GAAE,GAAIkF,EAAEH,GAAG,IAAIvF,EAAE003C,MAAM7x3C,IAAInC,EAAE,kBAAkB,mBAAmB893C,WAAW,GAAG143C,EAAE,CAAC+rR,QAAQzuR,EAAEu+C,QAAQ18C,EAAEmj6C,cAAc7i6C,EAAEF,EAAE6p4C,YAAYpw3C,GAAG/a,EAAE+d,KAAKrc,EAAE/C,EAAEb,EAAEhD,EAAE8F,EAAEQ,EAAEC,EAAE1B,EAAEgB,GAAGua,GAAGlb,EAAE+d,KAAKrc,EAAE/C,EAAEb,EAAEhD,EAAE8F,EAAEQ,EAAEC,EAAE1E,EAAEgD,GAAE,GAAIwd,GAAGnd,EAAE+d,KAAKrc,EAAE/C,EAAEb,EAAEhD,EAAE8F,EAAEQ,EAAEC,EAAE1E,EAAEgD,GAAGmp5C,aAAa9n5C,EAAEsj6C,iBAAiBlk6C,EAAEmk6C,mBAAmB1j6C,EAAE2j6C,uBAAuB3i6C,EAAE4s4C,MAAMjt4C,EAAEij6C,QAAQ9i6C,GAAG,GAAG/B,GAAG0B,EAAEiv4C,WAAW,CAACtx4C,GAAE,EAAG,IAAI,IAAI0H,GAAG,EAAED,GAAGxF,EAAE2lV,SAAS/nV,MAAM6H,GAAGD,GAAG1K,OAAO2K,IAAI,EAAE,CAAC,IAAIM,GAAGP,GAAGC,IAAItG,EAAE7C,KAAK,CAACqpV,SAAS,IAAI9rV,EAAEqj5C,cAAc,CAACn34C,KAAK043C,QAAQ143C,GAAG043C,QAAQr43C,MAAMvF,GAAI,CAAC,MAAM1B,EAAE7C,KAAK,CAACqpV,SAAS3lV,EAAE2lV,SAAS84iC,QAAQ,EAAEr43C,MAAMvF,GAAI,CAAC,CAAC,CAAC9C,GAAGoB,EAAE6nC,MAAK,SAAUntC,EAAED,GAAG,OAAOC,EAAE4k4C,QAAQ7k4C,EAAE6k4C,OAAQ,IAAG,IAAI,IAAI543C,GAAG,EAAEF,GAAGxG,EAAE0G,GAAGF,GAAG7K,OAAO+K,IAAI,EAAE,CAAC,IAAII,GAAGN,GAAGE,IAAIH,GAAGO,GAAGG,MAAM,GAAGhJ,EAAEmsV,cAAc7iV,IAAIrI,EAAE6oS,UAAUxhS,GAAGki5C,aAAa9p5C,KAAK4H,GAAG295C,mBAAmBhl6C,EAAEgpS,eAAe3hS,GAAG095C,mBAAmBhm6C,EAAEmsV,cAAc7iV,IAAIrI,EAAEml6C,UAAU995C,GAAG095C,kBAAkB195C,GAAG095C,iBAAiBtl6C,KAAK4H,GAAG495C,uBAAuBjl6C,EAAEgpS,gBAAgB3hS,GAAG6n4C,MAAM,CAAC,IAAIrn4C,GAAGR,GAAGy95C,cAAcz95C,GAAG695C,UAAUr95C,GAAGq75C,UAAU,EAAEzt5C,GAAGpO,GAAGg3C,QAAQz2C,GAAG0/U,SAAS5qV,EAAEnB,EAAE8L,GAAGknR,QAAQ5uR,EAAEX,EAAEE,EAAE2I,KAAKA,GAAGq75C,UAAU,CAAE,CAACzt5C,GAAGpO,GAAGg3C,QAAQz2C,GAAG0/U,SAAS5qV,EAAEnB,EAAE8L,GAAGknR,QAAQ5uR,EAAEX,EAAEE,EAAEmI,GAAGy95C,cAAe,CAAC,CAAC,SAASrv5C,GAAGja,EAAED,EAAEyB,EAAEN,EAAEP,EAAEiB,EAAE3B,EAAEyB,EAAE0B,GAAG,IAAI3B,EAAEP,EAAE6sC,QAAQptC,EAAEw1H,KAAK10H,EAAEA,EAAEotH,GAAG0sF,UAAU35M,EAAE3B,EAAEyB,EAAEoN,GAAGoiW,SAAS9tW,EAAE5B,EAAE2qB,GAAGnsB,EAAEoo4C,mBAAmBpo4C,EAAEqo4C,YAAYto4C,EAAEyB,EAAEo03C,MAAM103C,EAAEsiI,UAAUjjG,KAAKvgC,EAAEqn4C,sBAAsBtj4C,IAAIvC,EAAE2qB,IAAInsB,EAAE404C,0BAA0B504C,EAAE604C,oBAAqB,CAAC,SAAS763C,GAAGha,EAAED,EAAEyB,EAAEN,EAAEP,EAAEiB,EAAE3B,GAAG,IAAIyB,EAAE0B,EAAE3B,EAAEwB,EAAEO,EAAEE,EAAE1D,EAAE+tC,QAAQ8gF,GAAGtrH,EAAE/B,EAAEo03C,MAAM7x3C,IAAI,gBAAgBS,EAAEjB,GAAGA,EAAEm83C,WAAW,GAAGp83C,EAAE9B,EAAEm93C,yBAAyB1+3C,GAAGmD,EAAEoB,IAAIhD,EAAE++3C,iBAAiB,sBAAsB,qBAAqB,cAAc7+3C,EAAEgC,EAAE03M,QAAQh4M,EAAEoB,EAAE,cAAc,OAAO9C,EAAEgC,EAAE63M,WAAW,IAAI,IAAIv3M,EAAE,EAAEjB,EAAE7B,EAAE8C,EAAEjB,EAAE9B,OAAO+C,GAAG,EAAE,CAAC,IAAIH,EAAEd,EAAEiB,GAAGJ,EAAE7D,EAAE47Z,QAAQ93Z,GAAG,IAAIW,GAAGZ,EAAEg94C,iBAAiB,CAAC,IAAI/74C,EAAEjB,EAAE684C,UAAUj/4C,GAAG,GAAGqD,EAAE,CAAC,IAAIX,EAAEW,EAAEwi4C,sBAAsBtj4C,IAAIvC,EAAE2qB,IAAIhoB,EAAEnE,EAAE82U,WAAW1zU,EAAEc,GAAGM,IAAIxE,EAAE+tC,QAAQ2hT,cAAc7iV,IAAInJ,EAAE2pS,UAAUzpS,EAAE284C,kBAAkBt84C,KAAKP,EAAEo/Q,OAAOp/Q,EAAE8pS,eAAetpS,EAAEkj4C,mBAAmB9j4C,IAAI,IAAIwB,EAAEvB,EAAEm83C,WAAW,MAAM,GAAG563C,GAAGlB,EAAEy84C,WAAW,CAAC,IAAI/64C,EAAE1B,EAAEy84C,WAAW574C,EAAEa,EAAE0p4C,iBAAiBlq4C,EAAE+U,GAAG1U,YAAYO,EAAEJ,EAAE0p4C,iBAAiBlq4C,EAAE6Z,KAAKxZ,YAAYV,GAAGiB,GAAGxB,EAAE4h4C,4BAA4Brh4C,EAAEiB,EAAG,CAAC,IAAItB,EAAEpE,EAAE6k6C,mBAAmBhh6C,EAAEgz5C,UAAUjz5C,EAAEpC,EAAEo03C,MAAM7x3C,IAAI,kBAAkBvC,EAAEo03C,MAAM7x3C,IAAI,0BAA0B,GAAG9D,EAAE,CAACgD,EAAE4B,EAAE2k4C,aAAahm4C,EAAEqB,EAAE0k4C,UAAU,IAAIxk4C,EAAE,CAACrB,EAAEmyH,mBAAmBnyH,EAAEoyH,qBAAqBr0H,EAAE,uBAAuB2B,GAAGoB,EAAEob,GAAGxb,EAAEpE,EAAEsD,EAAEM,EAAEmB,GAAGka,GAAG7a,EAAEW,EAAG,MAAM9B,EAAE4B,EAAEwj4C,YAAY7k4C,EAAEqB,EAAEinV,SAASrqV,EAAE+C,EAAE8b,GAAGlc,EAAEpE,EAAEsD,EAAEM,GAAG0b,GAAGlb,GAAGD,EAAEgyH,KAAKn2H,EAAE+tC,QAAQrsC,EAAEf,EAAEX,EAAE4p6C,uBAAuB/l6C,GAAGjC,EAAEkN,GAAGoiW,SAASzvW,EAAED,EAAE2qB,GAAGtnB,EAAEuj4C,mBAAmBnl4C,EAAEO,EAAEhC,EAAEo03C,MAAM513C,EAAEwjI,UAAUjjG,KAAKr8B,EAAG,CAAC,CAAC,CAAC,CAAC,SAAS6V,GAAG/Z,EAAED,EAAEyB,EAAEN,EAAEP,EAAEiB,EAAE3B,GAAG,IAAI,IAAIyB,EAAE1B,EAAE+tC,QAAQ3qC,EAAE1B,EAAEmtH,GAAGptH,EAAED,EAAEo03C,MAAM7x3C,IAAI,0BAA0Bd,EAAExB,EAAEi+3C,WAAW,GAAGl83C,EAAEhC,EAAEm93C,yBAAyBj73C,EAAElC,EAAEo03C,MAAM7x3C,IAAI,0BAA0BR,EAAE,EAAEiB,EAAEtD,EAAEqC,EAAEiB,EAAEvD,OAAOsC,GAAG,EAAE,CAAC,IAAID,EAAEkB,EAAEjB,GAAGS,EAAEjE,EAAE47Z,QAAQr4Z,GAAGP,EAAEiB,EAAEy84C,UAAUj/4C,GAAG,GAAGuB,EAAE,CAAC,IAAIc,EAAEd,EAAEsk4C,sBAAsBtj4C,IAAIvC,EAAE2qB,IAAIvoB,EAAE5D,EAAE82U,WAAW7zU,EAAE,uBAAuB,gBAAgBY,GAAGZ,IAAIjD,EAAE+tC,QAAQ2hT,cAAc7iV,IAAIzJ,EAAEiqS,UAAUrpS,EAAEu84C,kBAAkBt84C,KAAKb,EAAE0/Q,OAAO1/Q,EAAEoqS,eAAe3pS,EAAEuj4C,mBAAmB5j4C,IAAI,IAAIqB,EAAEpD,EAAEi+3C,WAAW,MAAM,GAAG763C,GAAGb,EAAEq84C,WAAW,CAAC,IAAIn84C,EAAEF,EAAEq84C,WAAWl84C,EAAED,EAAE8q4C,iBAAiBnq4C,EAAEgV,GAAG1U,YAAYL,EAAEZ,EAAE8q4C,iBAAiBnq4C,EAAE8Z,KAAKxZ,YAAYhB,GAAGW,GAAGjB,EAAEii4C,4BAA4B3h4C,EAAEW,EAAG,CAAC,IAAIQ,EAAEtF,EAAE6k6C,mBAAmBvh6C,EAAEuz5C,UAAU7y5C,EAAExC,EAAEo03C,MAAM7x3C,IAAI,4BAA4BvC,EAAEo03C,MAAM7x3C,IAAI,oCAAoCU,EAAEjD,EAAEo03C,MAAM7x3C,IAAI,oCAAoC2B,EAAEzC,EAAEid,GAAG5a,EAAEtF,EAAEyE,EAAEf,EAAEJ,EAAEE,EAAEQ,GAAG0b,GAAGpa,EAAEtF,EAAEyE,EAAEf,GAAGE,EAAEuyH,KAAKz0H,EAAEA,EAAEmtH,GAAG0sF,UAAU56M,EAAEiB,EAAE3B,EAAE6O,GAAG6k5C,QAAQju5C,EAAElE,EAAE2qB,GAAGppB,EAAEql4C,mBAAmBrl4C,EAAEsl4C,YAAYtl4C,EAAE+oV,SAAStqV,EAAEo03C,MAAM513C,EAAEwjI,UAAUjjG,KAAK18B,EAAG,CAAC,CAAC,CAAC,SAASsW,GAAGpa,EAAEyB,EAAEN,EAAEP,EAAEiB,EAAE3B,GAAG,IAAIyB,EAAE3B,EAAEguC,QAAQ3qC,EAAE1B,EAAEmtH,GAAGptH,EAAED,EAAEwtH,IAAI,GAAGvtH,EAAE,CAAC,IAAIwB,EAAElD,EAAE+2U,WAAW,aAAap1U,EAAEguV,cAAc7iV,IAAIzJ,EAAEiqS,UAAUjqS,EAAE8gV,YAAY9gV,EAAEspS,WAAWjrS,EAAE0x5C,gBAAgBpv5C,OAAO,IAAIP,EAAE,SAASzD,EAAEyB,EAAEN,GAAG,IAAIP,EAAEO,EAAE003C,MAAM7x3C,IAAI,0BAA0BnC,EAAEV,EAAE003C,MAAM7x3C,IAAI,6BAA6B9D,EAAEiB,EAAE003C,MAAM7x3C,IAAI,0BAA0BrC,EAAER,EAAE003C,MAAM7x3C,IAAI,qCAAqCN,KAAKsmC,GAAG,KAAK,aAAa7oC,EAAE003C,MAAM7x3C,IAAI,mCAAmCrC,GAAG3B,EAAEyjI,UAAU+rG,OAAO,IAAInsO,EAAE3B,EAAEwB,EAAEO,GAAGzD,EAAEgqB,QAAQ4hd,OAAO,MAAO,CAACu47B,SAASnk6C,EAAEyjI,UAAUyuxC,mBAAmBzw5C,EAAE484C,OAAOrB,cAAcv54C,GAAGog6C,QAAQ,EAAE2E,YAAYnl6C,EAAE5B,EAAE484C,OAAO384C,EAAEgC,KAAK6yF,IAAI,EAAElzF,EAAEu13C,UAAUpy3C,GAAGtD,EAAEG,EAAEu13C,UAAU/03C,EAAE,CAAC,IAAI5D,EAAE2i5C,mBAAmB,EAAE1/4C,EAAExB,GAAGu64C,WAAWl82C,IAAI,IAAI9/B,EAAE2i5C,mBAAmB,GAAG1/4C,EAAE,GAAGxB,GAAGu64C,WAAWl82C,MAAM0o4C,QAAQ,CAACtn6C,EAAE003C,MAAM7x3C,IAAI,0BAA0BrC,GAAG+m6C,SAAS9n6C,EAAE+n6C,YAAY9m6C,EAAE+m6C,SAAS1o6C,EAAE,CAAjpB,CAAmpBF,EAAEyB,EAAEN,GAAG+B,EAAEkzH,KAAKz0H,EAAE0B,EAAEm4M,UAAU56M,EAAEiB,EAAE3B,EAAE6O,GAAGoiW,SAAS1tW,EAAEtC,EAAEirB,GAAGpsB,EAAE8p6C,mBAAmB9p6C,EAAE+p6C,wBAAwB/p6C,EAAEgq6C,qBAAsB,CAAC,CAAC,SAASjw5C,GAAG/Z,EAAEyB,EAAEN,EAAEP,EAAEiB,EAAE3B,GAAG,IAAIyB,EAAE3B,EAAEguC,QAAQ3qC,EAAE1B,EAAEmtH,GAAGptH,EAAED,EAAEsv5C,IAAI,GAAGrv5C,GAAGA,EAAE2O,KAAK,CAAC,IAAInN,EAAExB,EAAE82V,IAAI/0V,EAAE/B,EAAE47H,OAAO35H,EAAEjC,EAAE474C,YAAY,GAAG374C,EAAEguV,cAAc7iV,IAAIzJ,EAAEum6C,UAAUjo6C,EAAEo44C,iCAAiCjt4C,KAAI,GAAIrL,EAAE2v5C,WAAW3v5C,EAAE2v5C,YAAYpx5C,EAAE2w5C,eAAelt5C,GAAGhC,EAAE2v5C,WAAW,CAAC,IAAI5t5C,EAAE/B,EAAE2v5C,WAAW5t5C,EAAE4rE,OAAOzrE,EAAE,CAACm9V,aAAY,IAAKt9V,EAAEU,KAAKb,EAAE6oS,QAAQ7oS,EAAEoqS,cAAe,MAAMhsS,EAAE2v5C,WAAW,IAAInx5C,EAAEivV,QAAQvtV,EAAEgC,EAAEN,EAAEsjN,KAAK,CAACm6I,aAAY,IAAKr/V,EAAE2v5C,WAAWlt5C,KAAKb,EAAE6oS,QAAQ7oS,EAAEoqS,eAAe9rS,EAAEguV,cAAc7iV,IAAIzJ,EAAEiqS,UAAU,IAAI7oS,EAAEhD,EAAEwtH,IAAI,IAAIxqH,EAAE,CAAC,IAAIlB,EAAE,IAAItD,EAAEivV,QAAQvtV,EAAE,CAACi+B,MAAM18B,EAAE28B,OAAO38B,EAAEmN,KAAK,MAAMhN,EAAEsjN,MAAMpjN,EAAEW,KAAKb,EAAE0/Q,OAAO1/Q,EAAEoqS,gBAAgBhpS,EAAEhD,EAAEwtH,IAAIttH,EAAE6tT,kBAAkBtsT,EAAEA,GAAE,IAAKkw5C,gBAAgBtm5C,IAAIvJ,EAAEgzH,QAAS,CAAC50H,EAAEqxU,gBAAgBlmU,IAAIrI,EAAEuxH,aAAar0H,EAAEqqC,SAASl/B,IAAI,CAAC,EAAE,EAAE5J,EAAEA,IAAIlD,EAAE+2U,WAAW,oBAAoB3gN,KAAKz0H,EAAE0B,EAAEm4M,UAAU56M,EAAEiB,EAAE3B,EAAE6O,GAAGoiW,SAAS,SAASnxW,EAAEyB,GAAG,IAAIN,EAAEM,EAAE67H,OAAO18H,EAAEX,EAAEc,SAAS,OAAOd,EAAEi5H,MAAMt4H,EAAE,EAAEX,EAAEii5C,QAAQji5C,EAAEii5C,OAAO,EAAE,EAAE,GAAGji5C,EAAEg6H,UAAUr5H,EAAEA,EAAE,CAAC,GAAGX,EAAEii5C,OAAO,IAAI,CAACiiB,SAASvj6C,EAAEij6C,QAAQ,EAAEgF,YAAY,CAAC1n6C,EAAEA,GAAG2n6C,OAAO9o6C,EAAEy84C,YAAYssB,SAAStn6C,EAAE474C,kBAAkB,CAAlN,CAAoN574C,EAAE484C,OAAO384C,GAAGP,EAAEirB,GAAGpsB,EAAE8p6C,mBAAmB9p6C,EAAE+p6C,wBAAwB/p6C,EAAEgq6C,sBAAsBvo6C,EAAEuv5C,uBAAsB,CAAG,CAAC,CAAC,SAAS324C,GAAGra,EAAEyB,EAAEN,EAAEP,EAAEiB,GAAG,IAAI3B,EAAEU,EAAEi13C,MAAM7x3C,IAAI,wBAAwB,GAAG9D,EAAE,EAAE,CAAC,IAAIyB,EAAE1B,EAAEghS,QAAQ30Q,MAAMjpB,GAAG1B,EAAE3B,EAAE8/4C,WAAW5/4C,EAAEwB,EAAED,GAAGE,EAAEF,EAAEq+4C,WAAW5/4C,GAAG,EAAEgD,EAAE/B,EAAEmrV,YAAY7oV,EAAE5B,EAAEs05C,kBAAkB,CAAC7nuC,SAASprL,EAAEorL,SAASoiuC,UAAUxt5C,EAAEwt5C,YAAY/s5C,GAAGlC,GAAGiC,KAAKmjH,IAAIplH,EAAE484C,OAAO5B,YAAYh54C,GAAGC,KAAKmjH,IAAI7mH,EAAEq+4C,OAAO5B,YAAYh54C,GAAGD,EAAEG,GAAG3D,EAAEu15C,wBAAwB,EAAEt15C,EAAEs5V,MAAM51V,EAAEN,EAAE,EAAE3B,EAAE,EAAE,GAAG,OAAO1B,EAAEu15C,yBAAyBly5C,GAAG,IAAIrD,EAAEu15C,yBAAwB,GAAI9z5C,EAAE,CAACgrI,QAAQ,EAAEw2P,IAAI,EAAEz/X,GAAG,CAACipI,QAAQjpI,EAAEy/X,IAAI,EAAE,CAAC,MAAO,CAACx2P,QAAQ,EAAEw2P,IAAI,EAAE,CAAC,IAAIzoX,GAAG,IAAIva,EAAEizuB,MAAM,EAAE,EAAE,EAAE,GAAG/4tB,GAAG,IAAIla,EAAEizuB,MAAM,EAAE,EAAE,EAAE,GAAG34tB,GAAG,IAAIta,EAAEizuB,MAAM,EAAE,EAAE,EAAE,GAAGx4tB,GAAG,IAAIza,EAAEizuB,MAAM,EAAE,EAAE,EAAE,GAAGv4tB,GAAG,IAAI1a,EAAEizuB,MAAM,EAAE,EAAE,EAAE,GAAG,SAAS73tB,GAAGpb,EAAED,EAAEyB,EAAEN,GAAG2Z,GAAG7a,EAAE,EAAED,EAAEyB,EAAE,EAAExB,EAAEwjI,UAAU7jG,MAAMn+B,EAAEN,EAAG,CAAC,SAASsZ,GAAGxa,EAAED,EAAEyB,EAAEN,GAAG2Z,GAAG7a,EAAED,EAAEyB,EAAE,EAAE,EAAEA,EAAExB,EAAEwjI,UAAU5jG,OAAO1+B,EAAG,CAAC,SAAS2Z,GAAG9a,EAAEyB,EAAEN,EAAEP,EAAEiB,EAAE3B,GAAG,IAAIyB,EAAE3B,EAAEguC,QAAQ3qC,EAAE1B,EAAEmtH,GAAGzrH,EAAEwgB,OAAOxgB,EAAE0lS,cAAc1lS,EAAEs2J,QAAQl4J,EAAExB,EAAEghS,QAAQn7L,iBAAiB3kG,EAAElB,EAAEghS,QAAQn7L,iBAAiBllG,EAAEX,EAAEghS,QAAQn7L,iBAAiBjkG,EAAE5B,EAAEghS,QAAQn7L,kBAAkBnkG,EAAEkkB,MAAM,CAACuoG,MAAMluH,IAAImD,EAAEsvU,QAAQtvU,EAAE0lS,aAAc,CAAC,SAAS/tR,GAAGhb,EAAEyB,EAAEN,GAAG,IAAIP,EAAEZ,EAAEguC,QAAQnsC,EAAEjB,EAAEkuH,GAAG5uH,EAAEiB,EAAE215C,UAAUn15C,EAAE3B,EAAE+2U,WAAW,SAAS1zU,EAAEsL,GAAGwiW,SAASzvW,EAAEgO,GAAGyhW,SAASjuW,EAAElD,EAAEkp6C,yBAAyBto6C,EAAE+uV,cAAc7iV,IAAIjL,EAAEyrS,UAAUttS,EAAE01P,aAAaxxP,KAAKrC,EAAEkhR,OAAOlhR,EAAE4rS,eAAe9rS,EAAEy0H,KAAKx1H,EAAEiB,EAAE05M,WAAWl4M,EAAE3B,EAAEwB,EAAE6L,GAAGoiW,SAAS3uV,GAAGtiB,EAAED,EAAEizuB,MAAMx/X,KAAK,SAAS1zW,EAAEiq6C,YAAYjq6C,EAAEkq6C,sBAAsBlq6C,EAAEmq6C,eAAe,IAAI1m6C,EAAEhC,EAAEi05C,YAAYv05C,EAAEukB,KAAK063C,kBAAkBz84C,EAAED,KAAKyK,OAAO1K,GAAGA,EAAEwlB,YAAY,GAAG,MAAMzlB,EAAE/B,EAAEm6Z,QAAQz6Z,GAAGmtL,SAAS7pL,EAAE,IAAIf,KAAKgL,IAAIlL,EAAE,MAAMrC,EAAEs74C,YAAYz84C,EAAEyjI,UAAUjjG,MAAM,GAAGj9B,EAAEpC,EAAEy33C,UAAUxz3C,WAAWjE,EAAEs74C,cAAct74C,EAAEy33C,UAAUpy3C,IAAIjD,GAAG,OAAOpC,EAAEs74C,aAAa,SAASx84C,EAAED,GAAGC,EAAEmq6C,yBAAyB,IAAI3o6C,EAAExB,EAAEoq6C,mBAAmBlp6C,EAAElB,EAAE+tC,QAAQ8gF,GAAGluH,EAAEX,EAAEoq6C,mBAAmBz82C,WAAW,MAAMhtD,EAAE03O,UAAU,EAAE,EAAE72O,EAAEm+B,MAAMn+B,EAAEo+B,QAAQj/B,EAAE8wH,YAAY,QAAQ9wH,EAAEilxB,WAAW,EAAEjlxB,EAAEsyU,UAAU,IAAItyU,EAAEqqwB,YAAY,QAAQrqwB,EAAEglP,aAAa,MAAMhlP,EAAE+kP,KAAK,kCAAkC/kP,EAAEimP,SAAS7mP,EAAE,EAAE,GAAGY,EAAEuqwB,WAAWnrwB,EAAE,EAAE,GAAGC,EAAEqq6C,oBAAoBl71C,OAAO3tE,GAAGxB,EAAEqq6C,oBAAoBpm6C,KAAK/C,EAAE4hR,OAAO5hR,EAAEssS,cAAe,CAAja,CAAmaztS,EAAEuD,EAAE,IAAII,EAAE,MAAMhC,EAAEy0H,KAAKx1H,EAAEiB,EAAE25M,UAAUn4M,EAAE3B,EAAE4M,GAAGql5C,aAAa5k5C,GAAGoiW,SAAS3uV,GAAGtiB,EAAED,EAAEizuB,MAAMt8jB,YAAYnyK,GAAG,SAASzE,EAAEiq6C,YAAYjq6C,EAAE+p6C,wBAAwB/p6C,EAAEmq6C,cAAe,CAAC,IAAItv5C,GAAG,CAACkgf,OAAO,SAAS/6f,EAAEyB,EAAEN,EAAEP,EAAEiB,GAAG,GAAG,gBAAgB7B,EAAE44J,WAAW,CAAC,IAAI14J,EAAEwP,GAAGyhW,SAASxvW,EAAE3B,EAAEkp6C,yBAAyB/n6C,EAAE4gI,OAAO/9H,IAAI,yBAAyB,SAAShE,EAAEyB,EAAEN,EAAEP,EAAEiB,EAAE3B,EAAEyB,GAAG,IAAI,IAAI0B,EAAE5B,EAAEgiI,UAAU/hI,EAAE,QAAQG,EAAEqB,EAAE,QAAQhD,EAAEuD,EAAE,EAAEE,EAAE3D,EAAEyD,EAAEE,EAAEzC,OAAOuC,GAAG,EAAE,CAAC,IAAID,EAAEG,EAAEF,GAAGgB,EAAE7D,EAAEg7Z,QAAQp4Z,GAAGD,EAAEkB,EAAEi84C,UAAUv/4C,GAAG,GAAGoC,GAAGA,EAAE0tB,MAAM1tB,EAAE0tB,KAAK86T,SAAS/nV,MAAM9C,OAAO,CAAC,IAAI+C,EAAEhE,EAAEsy4C,oBAAoBhv4C,EAAE8w4C,aAAahx4C,EAAEm9B,MAAMx9B,EAAEqF,GAAG5D,EAAE,EAAEhD,EAAEgiI,UAAUjjG,MAAM18B,EAAE0M,GAAGhN,EAAEsz5C,UAAU5z5C,EAAExB,EAAED,EAAEgiI,UAAUzgI,GAAGa,EAAE,SAAS1C,EAAE4gI,OAAO/9H,IAAI,kBAAkBT,EAAEq04C,cAAc,GAAG3z4C,EAAE,CAAC,IAAIa,EAAEpB,KAAK6yF,IAAI,EAAElzF,EAAEm9B,KAAK/7B,EAAE454C,OAAO5B,aAAa753C,GAAGrf,EAAE7B,EAAEwB,EAAEvB,EAAE1B,EAAEm5/B,WAAW/1/B,EAAES,EAAEN,EAAEsz5C,UAAUhy5C,EAAEb,EAAEJ,EAAG,CAAC,CAAC,CAAC,CAAxc,CAA0cjD,EAAEZ,EAAEmB,EAAEM,EAAEN,EAAE4gI,OAAO/9H,IAAI,2BAA2B7C,EAAE4gI,OAAO/9H,IAAI,wBAAwBnC,GAAG,IAAIV,EAAE003C,MAAM7x3C,IAAI,gBAAgB273C,WAAW,IAAI9l3C,GAAG7Z,EAAEyB,EAAEN,EAAEP,GAAE,EAAGO,EAAE003C,MAAM7x3C,IAAI,kBAAkB7C,EAAE003C,MAAM7x3C,IAAI,yBAAyB7C,EAAE4gI,OAAO/9H,IAAI,2BAA2B7C,EAAE4gI,OAAO/9H,IAAI,wBAAwB7C,EAAE4gI,OAAO/9H,IAAI,qBAAqB9D,EAAEyB,GAAG,IAAIR,EAAE003C,MAAM7x3C,IAAI,gBAAgB273C,WAAW,IAAI9l3C,GAAG7Z,EAAEyB,EAAEN,EAAEP,GAAE,EAAGO,EAAE003C,MAAM7x3C,IAAI,kBAAkB7C,EAAE003C,MAAM7x3C,IAAI,yBAAyB7C,EAAE4gI,OAAO/9H,IAAI,2BAA2B7C,EAAE4gI,OAAO/9H,IAAI,wBAAwB7C,EAAE4gI,OAAO/9H,IAAI,qBAAqB9D,EAAEyB,GAAGF,EAAEyuB,IAAI443C,qBAAqB3m4C,GAAGniB,EAAEyB,EAAEN,EAAEP,EAAEO,EAAE003C,MAAM7x3C,IAAI,kBAAkB7C,EAAE003C,MAAM7x3C,IAAI,0BAAyB,GAAIme,GAAGniB,EAAEyB,EAAEN,EAAEP,EAAEO,EAAE003C,MAAM7x3C,IAAI,kBAAkB7C,EAAE003C,MAAM7x3C,IAAI,0BAAyB,GAAK,CAAC,EAAE8sO,OAAO,SAAS9wO,EAAEyB,EAAEN,EAAEP,GAAG,GAAG,gBAAgBZ,EAAE44J,WAAW,CAAC,IAAI/2J,EAAEV,EAAE003C,MAAM7x3C,IAAI,kBAAkB9D,EAAEiB,EAAE003C,MAAM7x3C,IAAI,uBAAuBrC,EAAER,EAAE003C,MAAM7x3C,IAAI,yBAAyBX,OAAE,IAASlC,EAAE4gI,OAAO/9H,IAAI,mBAAmB273C,WAAW,GAAG,GAAG,IAAI993C,EAAE893C,WAAW,IAAI,IAAIz/3C,EAAEy/3C,WAAW,IAAI,IAAIh+3C,EAAEg+3C,WAAW,GAAG,CAAC,IAAI,IAAIj+3C,EAAE1B,EAAEguC,QAAQ9qC,EAAExB,EAAEotH,GAAGrrH,EAAEzD,EAAEop6C,qBAAqB,EAAEz65C,GAAG2k5C,UAAU3v5C,EAAE+L,GAAGyhW,SAAS3tW,EAAExD,EAAEkp6C,yBAAyBzk6C,EAAE,GAAGlB,EAAE,EAAEA,EAAE3C,EAAEM,OAAOqC,IAAI,CAAC,IAAIU,EAAErD,EAAE2C,GAAGP,EAAEvB,EAAEm6Z,QAAQ33Z,GAAGH,EAAEd,EAAE094C,UAAUv/4C,GAAG,GAAG2C,EAAE,CAAC,IAAID,EAAEC,EAAEwj4C,sBAAsBtj4C,IAAI7C,EAAEirB,IAAItnB,EAAE,CAACyl6C,qBAAqB1m6C,EAAEmvR,QAAQhzR,EAAE+2U,WAAW,SAASlzU,GAAGwk4C,mBAAmBvk4C,EAAEuk4C,mBAAmBC,YAAYxk4C,EAAEwk4C,YAAYihC,cAAchn5C,GAAGviB,EAAEiE,EAAEjB,EAAE7B,IAAI,GAAGkC,EAAE,IAAI,IAAIc,EAAE,EAAEC,EAAEN,EAAEioV,SAAS/nV,MAAMG,EAAEC,EAAElD,OAAOiD,GAAG,EAAE,CAAC,IAAIY,EAAEX,EAAED,GAAGM,EAAE/B,KAAK,CAACqpV,SAAS,IAAI9rV,EAAEqj5C,cAAc,CAACv+4C,IAAI8/3C,QAAQ9/3C,EAAE8/3C,QAAQr43C,MAAM1H,GAAI,MAAML,EAAE/B,KAAK,CAACqpV,SAASjoV,EAAEioV,SAAS84iC,QAAQ,EAAEr43C,MAAM1H,GAAI,CAAC,CAACzB,GAAGoB,EAAE2oC,MAAK,SAAUntC,EAAED,GAAG,OAAOC,EAAE4k4C,QAAQ7k4C,EAAE6k4C,OAAQ,IAAG,IAAI,IAAIt/3C,EAAE,EAAEb,EAAED,EAAEc,EAAEb,EAAExD,OAAOqE,GAAG,EAAE,CAAC,IAAII,EAAEjB,EAAEa,GAAGlB,EAAEsB,EAAE6G,MAAMnI,EAAE2uR,QAAQ58J,KAAK10H,EAAEwB,EAAEs4M,UAAU/3M,EAAEE,EAAEH,EAAEuL,GAAGoiW,SAAS9sW,EAAEkl6C,cAAcpo6C,EAAEirB,GAAG/nB,EAAEgk4C,mBAAmBhk4C,EAAEik4C,YAAY3i4C,EAAEomV,SAAS5qV,EAAE003C,MAAM713C,EAAEyjI,UAAUjjG,KAAKn8B,EAAEkm6C,qBAAsB,CAAC,CAAC,CAAC,EAAEl7a,QAAQ,SAASrv/B,EAAEyB,EAAEN,EAAEP,GAAG,GAAG,IAAIO,EAAE003C,MAAM7x3C,IAAI,mBAAmB,GAAG,cAAchE,EAAE44J,WAAW,CAAC,IAAI/2J,EAAE7B,EAAEguC,QAAQ9tC,EAAE2B,EAAEitH,GAAGntH,EAAE+N,GAAGyhW,SAAS9tW,EAAE,IAAIiL,GAAG,CAACpO,EAAEwvN,IAAIxvN,EAAEwvN,KAAKzvN,EAAEizuB,MAAMt8jB,YAAY,EAAC,GAAG,GAAG,GAAG,KAAM,SAAS32K,EAAED,EAAEyB,GAAG,IAAIN,EAAElB,EAAE6uH,GAAG7uH,EAAE0vV,cAAc7iV,IAAI3L,EAAEyo6C,UAAU3p6C,EAAE+rC,SAASl/B,IAAI,CAAC,EAAE,EAAE9M,EAAE4/B,MAAM,EAAE5/B,EAAE6/B,OAAO,IAAI,IAAIj/B,EAAEa,EAAEwn4C,WAAW,GAAGro4C,EAAEO,EAAEgjV,YAAYhjV,EAAEwrS,WAAW/rS,EAAEwy5C,gBAAgBpv5C,OAAO/D,EAAE+yU,gBAAgBlmU,IAAIlM,EAAEo1H,iBAAkB,CAAC,IAAIn0H,EAAEV,EAAEoqJ,gBAAgBpqJ,EAAEgjV,YAAYhjV,EAAEwrS,WAAW9qS,GAAGV,EAAEkwV,cAAclwV,EAAEwrS,WAAWxrS,EAAEsrS,eAAetrS,EAAEssS,eAAetsS,EAAEkwV,cAAclwV,EAAEwrS,WAAWxrS,EAAEurS,eAAevrS,EAAEssS,eAAetsS,EAAEkwV,cAAclwV,EAAEwrS,WAAWxrS,EAAEqrS,mBAAmBrrS,EAAE4hR,QAAQ5hR,EAAEkwV,cAAclwV,EAAEwrS,WAAWxrS,EAAEorS,mBAAmBprS,EAAE4hR,QAAQniR,EAAEa,EAAEwn4C,WAAWhp4C,EAAEuvT,kBAAkBxvT,EAAE4/B,MAAM,EAAE5/B,EAAE6/B,OAAO,GAAE,GAAI,SAAS5/B,EAAED,EAAEyB,EAAEN,GAAG,IAAIP,EAAEX,EAAE6uH,GAAGluH,EAAE6tV,WAAW7tV,EAAE+rS,WAAW,EAAE/rS,EAAE+lN,KAAK3mN,EAAE4/B,MAAM,EAAE5/B,EAAE6/B,OAAO,EAAE,EAAEj/B,EAAE+lN,KAAK1mN,EAAE8z5C,4BAA4B9z5C,EAAE6z5C,oBAAoBvwmC,eAAe3iT,EAAEi6M,cAAc,MAAM15M,EAAEiy5C,gBAAgBtm5C,IAAIrL,EAAG,CAAhN,CAAkNxB,EAAED,EAAE6B,EAAEjB,EAAG,CAAC,CAAjyB,CAAmyBiB,EAAE7B,EAAEmB,GAAGU,EAAEgkB,MAAM,CAACuoG,MAAMnuH,EAAEizuB,MAAMt8jB,cAAc,IAAI,IAAIl1K,EAAE,EAAEA,EAAEd,EAAEM,OAAOQ,IAAI,CAAC,IAAIwB,EAAEtC,EAAEc,GAAG,IAAID,EAAE0z5C,oBAAoBjy5C,GAAG,CAAC,IAAIO,EAAEhC,EAAEm6Z,QAAQ14Z,GAAGS,EAAEF,EAAEi94C,UAAUv/4C,GAAG,GAAGwC,EAAE,CAAC,IAAIH,EAAEG,EAAE2j4C,sBAAsBtj4C,IAAI7C,EAAEirB,IAAIpsB,EAAE+2U,WAAW,UAAUvzU,GAAG4yH,KAAKv0H,EAAE3B,EAAEs7M,UAAU7sM,GAAGwiW,SAASxvW,EAAE0B,EAAE0L,GAAGoiW,SAASnxV,GAAG9c,EAAE4z5C,UAAUrz5C,EAAEzD,EAAEyjI,UAAUjjG,KAAKr/B,EAAE003C,MAAM7x3C,IAAI,sBAAsB7C,EAAEirB,GAAGzoB,EAAE0k4C,mBAAmB1k4C,EAAE2k4C,YAAY3k4C,EAAEooV,SAAS5qV,EAAE003C,MAAM713C,EAAEyjI,UAAUjjG,KAAKh9B,EAAG,CAAC,CAAC,CAAC3B,EAAEmqC,SAASl/B,IAAI,CAAC,EAAE,EAAE9M,EAAE4/B,MAAM5/B,EAAE6/B,QAAS,KAAM,gBAAgB7/B,EAAE44J,aAAa54J,EAAEguC,QAAQqm3C,aAAar05C,EAAEkp6C,0BAA0B,SAASlp6C,EAAEyB,GAAG,IAAIN,EAAEnB,EAAEguC,QAAQptC,EAAEO,EAAE2tH,GAAGjtH,EAAEJ,EAAEwn4C,WAAW,GAAGpn4C,EAAE,CAACV,EAAEwuV,cAAc7iV,IAAIlM,EAAE0sS,UAAU1sS,EAAEujV,YAAYvjV,EAAE+rS,WAAW9qS,EAAEux5C,gBAAgBpv5C,OAAO7C,EAAEwuV,cAAc7iV,IAAIlM,EAAEgp6C,UAAU,IAAI1p6C,EAAEuB,EAAEun4C,iBAAiB9o4C,IAAIA,EAAEuB,EAAEun4C,iBAAiB,IAAI/o4C,EAAEivV,QAAQ/tV,EAAEM,EAAEsn4C,UAAUno4C,EAAE+lN,OAAOzmN,EAAEgE,KAAKtD,EAAEmiR,OAAOniR,EAAE6sS,eAAeztS,EAAE+2U,WAAW,kBAAkB3gN,KAAKj1H,EAAEP,EAAE46M,UAAU7sM,GAAGwiW,SAASzhW,GAAGyhW,SAASnxW,EAAEkp6C,yBAAyBn65C,GAAGoiW,SAAS,SAASnxW,EAAEyB,EAAEN,EAAEP,GAAG,IAAIiB,EAAE5B,EAAEc,SAASd,EAAEi5H,MAAMr3H,EAAE,EAAE7B,EAAE4/B,MAAM5/B,EAAE6/B,OAAO,EAAE,EAAE,GAAG,IAAI3/B,EAAEF,EAAEguC,QAAQ8gF,GAAG,MAAO,CAACq1yC,SAASti6C,EAAE6i6C,QAAQ,CAACxk6C,EAAE41H,mBAAmB51H,EAAE61H,qBAAqB8tyC,QAAQ,EAAE0E,aAAa,EAAE/D,UAAU/i6C,EAAEo03C,MAAM7x3C,IAAI,mBAAmB,CAApO,CAAsOhE,EAAEyB,GAAGA,EAAE2qB,GAAGpsB,EAAEwq6C,eAAexq6C,EAAE+p6C,wBAAwB/p6C,EAAEyq6C,iBAAiBhp6C,EAAEo03C,MAAM713C,EAAEyjI,UAAUjjG,KAAM,CAAC,CAAhuB,CAAkuBxgC,EAAEmB,GAAI,EAAEg/C,KAAK,SAASngD,EAAEyB,EAAEN,EAAEP,GAAG,GAAG,gBAAgBZ,EAAE44J,WAAW,CAAC,IAAI/2J,EAAEV,EAAE003C,MAAM7x3C,IAAI,gBAAgB9D,EAAEiB,EAAE003C,MAAM7x3C,IAAI,cAAc,GAAG,IAAInC,EAAE893C,WAAW,IAAI,IAAIz/3C,EAAEy/3C,WAAW,GAAG,IAAI,IAAIh+3C,EAAE3B,EAAEop6C,qBAAqB,EAAEz65C,GAAG2k5C,UAAUjw5C,EAAErD,EAAEkp6C,yBAAyBxn6C,EAAEP,EAAE003C,MAAM7x3C,IAAI,kBAAkBd,EAAE/B,EAAE003C,MAAM7x3C,IAAI,gBAAgBP,EAAEP,EAAEy83C,WAAW,GAAGh83C,EAAExC,EAAE003C,MAAM7x3C,IAAI,iBAAiBR,EAAErC,EAAEy93C,yBAAyBn63C,EAAEhB,EAAE,cAAc/B,EAAE,UAAUiC,EAAE,eAAe,OAAOJ,EAAEvD,EAAEguC,QAAQ/pC,EAAEV,EAAEurH,GAAG9rH,GAAE,EAAGc,EAAE,EAAED,EAAEjD,EAAEkD,EAAED,EAAE3C,OAAO4C,GAAG,EAAE,CAAC,IAAIgB,EAAEjB,EAAEC,GAAGK,EAAE1C,EAAEm6Z,QAAQ92Z,GAAG,IAAIrB,GAAGU,EAAE084C,iBAAiB,CAAC,IAAIz84C,EAAED,EAAEu84C,UAAUv/4C,GAAG,GAAGiD,EAAE,CAAC,IAAIW,EAAEX,EAAEkj4C,sBAAsBtj4C,IAAI7C,EAAEirB,IAAI7mB,EAAEvF,EAAEguC,QAAQglP,QAAQhvR,MAAMU,EAAE1E,EAAE+2U,WAAWtyU,EAAEM,GAAGY,EAAE3C,GAAG0B,EAAEsuR,UAAUztR,EAAElB,EAAEnB,EAAEy83C,WAAW,MAAM,GAAGt73C,GAAGF,EAAEm84C,WAAW,CAAC,IAAIt74C,EAAEb,EAAEm84C,WAAW954C,EAAExB,EAAEiq4C,iBAAiB5q4C,EAAEyV,GAAG1U,YAAYgB,EAAEpB,EAAEiq4C,iBAAiB5q4C,EAAEua,KAAKxZ,YAAYoB,GAAGJ,GAAGrB,EAAEgh4C,4BAA4Bv/3C,EAAEJ,EAAG,CAAC,IAAIV,EAAEjC,EAAE+b,GAAGxf,EAAEmE,EAAEhD,EAAEqC,GAAG9B,EAAEwf,GAAGlhB,EAAEmE,EAAEhD,EAAEO,EAAE8B,GAAGG,EAAE8e,GAAGziB,EAAEmE,EAAEhD,EAAEiD,EAAE+m4C,eAAejq4C,QAAQme,GAAGrf,EAAEmE,EAAEhD,GAAG,GAAGsC,EAAEF,EAAEosV,cAAc7iV,IAAI7I,EAAEqpS,UAAUnpS,EAAEq84C,kBAAkBt84C,KAAKD,EAAE8+Q,OAAO9+Q,EAAEwpS,eAAe1oS,EAAEsi4C,mBAAmB7j4C,QAAQ,GAAG9B,IAAIiE,GAAG3F,EAAE++5C,UAAUp4pB,OAAOpjwB,EAAEosV,cAAc7iV,IAAI7I,EAAEqpS,UAAUttS,EAAE++5C,UAAU765C,KAAKX,QAAQ,GAAGI,EAAE,CAAC,IAAI+C,EAAEtC,EAAEgn4C,UAAUjq4C,EAAEirB,IAAIlnB,EAAEwB,EAAE6vH,QAAQ,GAAGp1H,EAAEmr4C,kBAAkB5l4C,EAAES,QAAQ,CAAC,IAAIhC,EAAE,IAAI,GAAGhE,EAAEor4C,gBAAgB,CAAC,IAAIho4C,EAAE9C,EAAE6qV,YAAYzoH,QAAQj9N,EAAE9B,EAAE8z3C,UAAUpy3C,IAAIjC,EAAEb,KAAKuK,KAAK,GAAGjO,EAAEyjI,UAAU3a,QAAQhkH,EAAE8z3C,UAAUpy3C,GAAG,EAAErB,EAAElF,EAAEs5V,MAAMt5V,EAAEgn5C,eAAe7i5C,EAAEkn4C,cAAcrr4C,EAAEii5C,OAAO,KAAKt74C,GAAG,IAAIrD,EAAE0w5C,eAAgB,CAACvt5C,EAAEy3L,SAASl+L,EAAE+n5C,gBAAgB,CAACnm7B,WAAW1ge,EAAEqr4C,qBAAqB3D,cAAc,eAAepzwC,WAAWtwH,EAAEimJ,MAAM1kJ,EAAEy3L,eAAU,EAAOyqsC,MAAMxk4C,EAAE+m4C,iBAAiBzk4C,EAAE6vH,QAAQ7vH,EAAE6vH,QAAQnnD,OAAO1oE,EAAEy3L,UAAUz3L,EAAE6vH,QAAQ,IAAIt2H,EAAEivV,QAAQ3rV,EAAEmD,EAAEy3L,SAASl6L,EAAE0iN,MAAMjgN,EAAES,QAAQhG,EAAEmr4C,gBAAgBpn4C,EAAEwB,EAAE6vH,OAAQ,CAAChzH,EAAEosV,cAAc7iV,IAAI7I,EAAEqpS,UAAUpoS,EAAEhB,KAAK/C,EAAEor4C,gBAAgBto4C,EAAEioS,QAAQjoS,EAAE8+Q,OAAO9+Q,EAAEwpS,cAAe,CAAC/oS,EAAE0xH,KAAK7yH,EAAEU,EAAEu3M,UAAU75M,EAAE3B,EAAE6p6C,uBAAuB/k6C,GAAGzB,EAAE0L,GAAGoiW,SAASzrW,EAAEvE,EAAEirB,GAAGhoB,EAAEik4C,mBAAmBjk4C,EAAEkk4C,YAAYlk4C,EAAE2nV,SAAS5qV,EAAE003C,MAAM713C,EAAEyjI,UAAUjjG,KAAKz7B,EAAEX,EAAEmn4C,qBAAqBvo4C,GAAE,CAAG,CAAC,CAAC,CAAC,CAAC,EAAEi7H,KAAK,SAASj+H,EAAEyB,EAAEN,EAAEP,GAAG,IAAIiB,EAAEV,EAAE003C,MAAM7x3C,IAAI,cAAc9D,EAAEiB,EAAE003C,MAAM7x3C,IAAI,gBAAgB,GAAG,IAAI9D,EAAEy/3C,WAAW,GAAG,CAAC,IAAIh+3C,EAAE3B,EAAEkp6C,yBAAyB7l6C,EAAElC,EAAE003C,MAAM7x3C,IAAI,gBAAgBtC,EAAE1B,EAAE0q6C,8BAA8Brn6C,EAAEs83C,WAAW,IAAI,IAAI993C,EAAE893C,WAAW1/3C,EAAEizuB,MAAMt8jB,aAAa/0K,GAAG,IAAI3B,EAAEy/3C,WAAW,GAAG,SAAS,cAAc,GAAG3/3C,EAAE44J,aAAal3J,EAAE,CAAC,IAAIwB,EAAElD,EAAEop6C,qBAAqB,EAAE,WAAWpp6C,EAAE44J,WAAWjqJ,GAAG4k5C,UAAU5k5C,GAAG2k5C,UAAUr54C,GAAGja,EAAEyB,EAAEN,EAAEP,EAAEsC,EAAEvB,GAAE,EAAI,CAAC,GAAG,gBAAgB3B,EAAE44J,YAAYz3J,EAAE003C,MAAM7x3C,IAAI,kBAAkB,CAAC,IAAIP,EAAEzD,EAAEop6C,qBAAqBjo6C,EAAEq/3C,iBAAiB,sBAAsB,EAAE,EAAE7x3C,GAAG2k5C,UAAUr54C,GAAGja,EAAEyB,EAAEN,EAAEP,EAAE6C,EAAE9B,GAAE,EAAI,CAAC,CAAC,EAAE,iBAAiB,SAAS1B,EAAED,EAAEyB,EAAEN,GAAG,IAAIP,EAAEa,EAAEo03C,MAAM7x3C,IAAI,0BAA0B,GAAG,IAAIpD,GAAG,gBAAgBX,EAAE24J,WAAW,CAAC,IAAI/2J,EAAE,IAAI8M,GAAG1O,EAAE+tC,QAAQ8gF,GAAG08K,OAAO78R,GAAG4k5C,UAAUtz5C,EAAE0q6C,iBAAiB,GAAG,IAAI/p6C,GAAGa,EAAEo03C,MAAM7x3C,IAAI,0BAA0B273C,WAAW,GAAG3l3C,GAAG/Z,EAAED,EAAEyB,EAAEN,EAAEU,EAAE6N,GAAGyhW,SAAS7iW,GAAG6iW,UAAUn3V,GAAG/Z,EAAED,EAAEyB,EAAEN,EAAEU,EAAE5B,EAAE2q6C,mBAAmB3q6C,EAAEip6C,8BAA+B,CAAC,IAAIhp6C,EAAED,EAAEip6C,yBAAyBlv5C,GAAG/Z,EAAED,EAAEyB,EAAEN,EAAEU,EAAE6N,GAAGyhW,SAASjxW,EAAG,CAAC,CAAC,EAAE013C,UAAU,SAAS313C,EAAED,EAAEyB,EAAEN,GAAG,GAAG,cAAclB,EAAE24J,YAAY,gBAAgB34J,EAAE24J,WAAW,CAAC,IAAI,IAAIh4J,EAAEX,EAAE+tC,QAAQnsC,EAAE5B,EAAEmp6C,qBAAqB,EAAEz65C,GAAG2k5C,UAAUpz5C,EAAED,EAAEip6C,yBAAyBvn6C,EAAE,gBAAgB1B,EAAE24J,WAAW34J,EAAE4q6C,wBAAwB1p6C,GAAG,CAAC,CAAC,EAAEA,GAAGkC,EAAE1B,EAAE,GAAGD,EAAE,EAAEwB,EAAEvB,EAAE,GAAGD,EAAEwB,EAAEhC,OAAOQ,GAAG,EAAE,CAAC,IAAI+B,EAAEP,EAAExB,GAAGiC,EAAE3D,EAAE47Z,QAAQn4Z,GAAGE,EAAEqt5C,uBAAuB,cAAc/w5C,EAAE24J,WAAW7+I,GAAG9Z,EAAE0D,EAAElC,EAAEI,EAAE6N,GAAGyhW,SAASjxW,GAAG,gBAAgBD,EAAE24J,YAAYx+I,GAAGna,EAAE0D,EAAElC,EAAEI,EAAEwB,EAAEI,EAAEg54C,aAAav84C,EAAG,CAACU,EAAEorC,SAASl/B,IAAI,CAAC,EAAE,EAAE7M,EAAE2/B,MAAM3/B,EAAE4/B,QAAS,CAAC,EAAEo11C,OAAO,SAASh13C,EAAED,EAAEyB,EAAEN,GAAG,GAAG,gBAAgBlB,EAAE24J,YAAY,IAAIn3J,EAAEo03C,MAAM7x3C,IAAI,mBAAmB7C,EAAED,OAAO,IAAI,IAAIN,EAAEX,EAAE+tC,QAAQnsC,EAAEjB,EAAEkuH,GAAG5uH,EAAEF,EAAEssV,YAAY3qV,EAAE1B,EAAE82U,WAAW,UAAU1zU,EAAEpD,EAAEip6C,yBAAyBxn6C,EAAExB,aAAawG,EAAE,CAAC,CAAC,EAAEvF,GAAGlB,EAAE4q6C,wBAAwB1p6C,GAAG+B,EAAExB,EAAE,GAAG+B,EAAE/B,EAAE,GAAGiC,EAAEF,EAAEA,EAAEvC,OAAO,GAAGu74C,YAAYj54C,GAAGvD,EAAE+pB,QAAQ4hd,OAAOnne,EAAE,EAAElB,EAAEE,EAAEgB,EAAElB,EAAErC,OAAOuD,GAAG,EAAE,CAAC,IAAIR,EAAEV,EAAEkB,GAAGzB,EAAE/C,EAAEmp6C,qBAAqBnl6C,EAAEw44C,YAAY944C,EAAE,IAAIlC,EAAEo03C,MAAM7x3C,IAAI,kBAAkB2K,GAAG4k5C,UAAU5k5C,GAAG2k5C,SAASzx5C,EAAEypS,MAAMxnS,EAAE9D,EAAE47Z,QAAQ33Z,GAAGJ,EAAE5D,EAAEwjI,UAAUyuxC,mBAAmBju5C,EAAE+44C,cAAcx54C,GAAGM,EAAE+74C,qBAAqBp+4C,EAAEo03C,MAAM7x3C,IAAI,yBAAyB,IAAIc,EAAE9E,EAAEo15C,iBAAiBnx5C,EAAE,GAAGE,EAAEkW,GAAGvW,EAAEgB,EAAE9E,EAAEyB,EAAExB,EAAEwjI,WAAWr/H,OAAE,EAAOW,OAAE,EAAOQ,EAAE,YAAY9D,EAAEo03C,MAAM7x3C,IAAI,qBAAqBnC,EAAEqqS,QAAQrqS,EAAEkhR,OAAOniR,EAAE+uV,cAAc7iV,IAAIjL,EAAEyrS,UAAUxpS,EAAEyyH,QAAQryH,KAAKqB,EAAE1D,EAAE4rS,cAAc5rS,EAAEuqS,uBAAuBxrS,EAAE+uV,cAAc7iV,IAAIjL,EAAE+n6C,UAAU9k6C,GAAGA,EAAEyxH,QAAQryH,KAAKqB,EAAE1D,EAAE4rS,cAAc5rS,EAAEuqS,uBAAuBhoS,EAAEV,KAAK6yF,IAAI,EAAEzxF,EAAEu54C,OAAO5B,YAAY344C,EAAEu64C,OAAO5B,aAAa134C,EAAE,CAACjB,EAAEu64C,OAAOzlB,UAAU9z3C,EAAEV,EAAE,EAAEN,EAAEu64C,OAAOzlB,UAAU/03C,EAAEO,EAAE,IAAIN,EAAEyyH,QAAQryH,KAAKqB,EAAE1D,EAAE4rS,cAAc5rS,EAAEuqS,uBAAuB,IAAI1nS,EAAEwb,GAAGrc,EAAEkB,GAAG,CAAC,EAAE,GAAGX,GAAG,EAAED,EAAE1C,GAAGvB,aAAawG,EAAE/E,EAAEy0H,KAAKx1H,EAAEiB,EAAE25M,UAAUx4M,EAAE0M,GAAGyhW,SAAS9tW,EAAE0L,GAAGoiW,SAASzsW,EAAEjD,EAAE2qB,GAAGlsB,EAAEyx5C,aAAa1x5C,EAAE8p6C,wBAAwB7p6C,EAAE0x5C,gBAAgBjw5C,EAAEy0H,KAAKx1H,EAAEiB,EAAE25M,UAAUx4M,EAAEE,EAAEe,EAAEw44C,aAAap54C,EAAE0L,GAAGoiW,SAASzsW,EAAEjD,EAAE2qB,GAAGnsB,EAAE6p6C,mBAAmB7p6C,EAAE8p6C,wBAAwB9p6C,EAAE+p6C,qBAAsB,CAAC,EAAEx/qC,WAAW,SAASvqP,EAAED,EAAEyB,GAAG,IAAIN,EAAEM,EAAEo03C,MAAM7x3C,IAAI,oBAAoBpD,EAAEa,EAAEo03C,MAAM7x3C,IAAI,sBAAsB,GAAG,IAAIpD,EAAE,CAAC,IAAIiB,EAAE5B,EAAE+tC,QAAQ9tC,EAAE2B,EAAEitH,GAAGntH,EAAE1B,EAAEwjI,UAAUpgI,EAAE1B,EAAE2sL,SAAS5sL,EAAED,EAAEo03C,MAAM7x3C,IAAI,sBAAsB,IAAI/D,EAAE6q6C,iBAAiBpp6C,GAAG,CAAC,IAAIwB,GAAGxB,GAAG,IAAIP,EAAEU,GAAG,IAAIjB,GAAGX,EAAEyq6C,4BAA4B,SAAS,cAAc,GAAGzq6C,EAAE24J,aAAa11J,EAAE,CAAC,IAAIO,EAAEiM,GAAGyhW,SAASxtW,EAAE1D,EAAEmp6C,qBAAqB,EAAE,WAAWlm6C,EAAEyL,GAAG4k5C,UAAU5k5C,GAAG2k5C,UAAU9v5C,EAAEvD,EAAEip6C,yBAAyBzk6C,EAAExE,EAAE82U,WAAWr1U,EAAE,oBAAoB,cAAc6B,EAAE5B,EAAEu05C,cAAc,CAAC5nuC,SAASjrL,IAAI3B,IAAIG,EAAE8tV,cAAc7iV,IAAI5M,EAAEotS,UAAUrtS,EAAE805C,aAAa7w5C,KAAKjE,EAAE+tC,UAAU,IAAI,IAAI/pC,EAAExC,EAAEm93C,yBAAyB573C,EAAE,EAAEc,EAAEP,EAAEP,EAAEc,EAAE5C,OAAO8B,GAAG,EAAE,CAAC,IAAIa,EAAEC,EAAEd,GAAG8B,EAAE7E,EAAEwjI,UAAUyuxC,mBAAmBru5C,EAAEm54C,eAAe744C,EAAEzC,EAAE4gB,GAAGxd,EAAElE,EAAEX,EAAEyB,EAAE,CAAC284C,OAAOx64C,EAAEyqL,SAASjrL,GAAGY,GAAG8c,GAAGjc,EAAElE,EAAEO,GAAGsD,EAAE2xH,KAAKv0H,EAAE3B,EAAEs7M,UAAU73M,EAAEF,EAAED,EAAEuL,GAAGoiW,SAAShtW,EAAE1C,EAAE2qB,GAAGnsB,EAAE8q6C,iBAAiB9q6C,EAAE8p6C,wBAAwB9p6C,EAAE+q6C,mBAAoB,CAAC,CAAC,CAAC,CAAC,EAAE3z3C,MAAM,SAASp3C,EAAED,EAAEyB,GAAG,IAAI,IAAIN,EAAE,EAAEA,EAAEM,EAAEP,OAAOC,IAAI6Z,GAAG/a,EAAED,EAAEyB,EAAEN,GAAI,EAAE8p6C,OAAO,SAAShr6C,EAAED,EAAEyB,GAAG,IAAIN,EAAElB,EAAE+tC,QAAQptC,EAAEa,EAAEgmD,eAAe,GAAG,cAAcxnD,EAAE24J,WAAW,CAAC,IAAI/2J,EAAEjB,EAAEw44C,UAAUv34C,IAAI5B,EAAEir6C,yBAAyB/p6C,EAAEkz5C,aAAap05C,EAAEip6C,0BAA0Brn6C,EAAEpB,KAAKG,EAAEO,EAAE2tH,GAAG7uH,EAAEwjI,UAAU0nyC,qBAAqBhq6C,EAAEi+hC,WAAWn/hC,EAAEmr6C,eAAgB,MAAM,GAAG,gBAAgBnr6C,EAAE24J,WAAW,CAAC34J,EAAEir6C,yBAAyB/p6C,EAAEkz5C,aAAap05C,EAAEip6C,0BAA0B/n6C,EAAEiz5C,eAAe1k5C,GAAGyhW,UAAU,IAAIjxW,EAAE,OAAOU,EAAEu44C,cAAc,IAAIxq4C,GAAG1O,EAAE+tC,QAAQ8gF,GAAG08K,OAAO78R,GAAG4k5C,UAAUtz5C,EAAE0q6C,iBAAiB1q6C,EAAEmp6C,qBAAqB,EAAEz65C,GAAG2k5C,UAAUny5C,EAAEgz5C,aAAaj05C,GAAGU,EAAEuuH,OAAOhuH,EAAE2tH,GAAG7uH,EAAEwjI,UAAU0nyC,qBAAqBhq6C,EAAEi+hC,WAAWn/hC,EAAEmr6C,eAAejq6C,EAAE6xU,gBAAgBlmU,IAAI,KAAM,CAAC,GAAG8N,GAAG,SAAS3a,EAAED,GAAGa,KAAKmtC,QAAQ,IAAIt9B,GAAGzQ,GAAGY,KAAK4iI,UAAUzjI,EAAEa,KAAKwq6C,cAAc,CAAC,EAAExq6C,KAAKyq6C,QAAQzq6C,KAAK0q6C,aAAax75C,GAAGsm5C,gBAAgBtm5C,GAAGqm5C,eAAe,EAAEv15C,KAAK2q6C,aAAa,EAAE9n6C,KAAK6yF,IAAI,EAAE,IAAI11F,KAAKm+5C,qBAAqB,IAAIx05C,GAAG3J,KAAK4q6C,UAAU,CAAC,CAAE,EAAE7w5C,GAAGra,UAAUmvH,OAAO,SAAS1vH,EAAEyB,GAAG,GAAGZ,KAAK++B,MAAM5/B,EAAEC,EAAEghS,QAAQn7L,iBAAiBjlG,KAAKg/B,OAAOp+B,EAAExB,EAAEghS,QAAQn7L,iBAAiBjlG,KAAKmtC,QAAQhC,SAASl/B,IAAI,CAAC,EAAE,EAAEjM,KAAK++B,MAAM/+B,KAAKg/B,SAASh/B,KAAKqU,MAAM,IAAI,IAAI/T,EAAE,EAAEP,EAAEC,KAAKqU,MAAM2zO,OAAO1nP,EAAEP,EAAEM,OAAOC,GAAG,EAAEN,KAAKqU,MAAMkwX,QAAQxkY,EAAEO,IAAIuuH,QAAS,EAAE90G,GAAGra,UAAU+q6C,MAAM,WAAW,IAAItr6C,EAAEa,KAAKmtC,QAAQvsC,EAAE,IAAIxB,EAAEyj5C,qBAAqBji5C,EAAEkg4C,YAAY,EAAE,GAAGlg4C,EAAEkg4C,YAAY1h4C,EAAEii5C,OAAO,GAAGzg5C,EAAEkg4C,YAAY,EAAE1h4C,EAAEii5C,QAAQzg5C,EAAEkg4C,YAAY1h4C,EAAEii5C,OAAOji5C,EAAEii5C,QAAQrh5C,KAAKkq6C,iBAAiB/q6C,EAAEum4C,mBAAmB9k4C,EAAEuJ,GAAGu23C,SAAS1g4C,KAAKmq6C,mBAAmB/q6C,EAAEqj5C,cAAcre,cAAc,EAAE,EAAE,EAAE,GAAG,IAAI9j4C,EAAE,IAAIlB,EAAEyj5C,qBAAqBvi5C,EAAEwg4C,YAAY,EAAE,GAAGxg4C,EAAEwg4C,YAAY1h4C,EAAEii5C,OAAO,GAAG/g5C,EAAEwg4C,YAAY,EAAE1h4C,EAAEii5C,QAAQ/g5C,EAAEwg4C,YAAY1h4C,EAAEii5C,OAAOji5C,EAAEii5C,QAAQrh5C,KAAKop6C,YAAYjq6C,EAAEum4C,mBAAmBpl4C,EAAE6J,GAAGu23C,SAAS1g4C,KAAKsp6C,cAAclq6C,EAAEqj5C,cAAcre,cAAc,EAAE,EAAE,EAAE,GAAG,IAAIrk4C,EAAE,IAAIX,EAAE2j5C,qBAAqBhj5C,EAAE+g4C,YAAY,EAAE,EAAE,EAAE,GAAG/g4C,EAAE+g4C,YAAY1h4C,EAAEii5C,OAAO,EAAEji5C,EAAEii5C,OAAO,GAAGth5C,EAAE+g4C,YAAY,EAAE1h4C,EAAEii5C,OAAO,EAAEji5C,EAAEii5C,QAAQth5C,EAAE+g4C,YAAY1h4C,EAAEii5C,OAAOji5C,EAAEii5C,OAAOji5C,EAAEii5C,OAAOji5C,EAAEii5C,QAAQrh5C,KAAKip6C,mBAAmB9p6C,EAAEum4C,mBAAmB3l4C,EAAE8E,EAAE673C,SAAS1g4C,KAAKmp6C,qBAAqB/p6C,EAAEqj5C,cAAcre,cAAc,EAAE,EAAE,EAAE,GAAG,IAAIpj4C,EAAE,IAAI5B,EAAEyj5C,qBAAqB7h5C,EAAE8/3C,YAAY,EAAE,GAAG9/3C,EAAE8/3C,YAAY,EAAE,GAAG9/3C,EAAE8/3C,YAAY,EAAE,GAAG9/3C,EAAE8/3C,YAAY,EAAE,GAAG9g4C,KAAK2p6C,eAAexq6C,EAAEum4C,mBAAmB1k4C,EAAEmJ,GAAGu23C,SAAS1g4C,KAAK4p6C,iBAAiBxq6C,EAAEqj5C,cAAcre,cAAc,EAAE,EAAE,EAAE,GAAG,IAAI/k4C,EAAE,IAAID,EAAEuj5C,sBAAsBtj5C,EAAEyh4C,YAAY,GAAGzh4C,EAAEyh4C,YAAY,GAAGzh4C,EAAEyh4C,YAAY,GAAGzh4C,EAAEyh4C,YAAY,GAAGzh4C,EAAEyh4C,YAAY,GAAG9g4C,KAAKqp6C,sBAAsBlq6C,EAAEuo4C,kBAAkBro4C,GAAG,IAAIyB,EAAE,IAAI1B,EAAE0j5C,sBAAsBhi5C,EAAEgg4C,YAAY,EAAE,EAAE,GAAGhg4C,EAAEgg4C,YAAY,EAAE,EAAE,GAAG9g4C,KAAKkp6C,wBAAwB/p6C,EAAEuo4C,kBAAkB5m4C,GAAGd,KAAK60P,aAAa,IAAIz1P,EAAEivV,QAAQlvV,EAAE,CAAC4/B,MAAM,EAAEC,OAAO,EAAExvB,KAAK,IAAImQ,WAAW,CAAC,EAAE,EAAE,EAAE,KAAKxgB,EAAE8uH,GAAG63F,MAAM,IAAItjN,EAAExC,KAAKmtC,QAAQ8gF,GAAGjuH,KAAK6q6C,iBAAiB,IAAIh85C,GAAG,CAACkxC,KAAKv9C,EAAEgoS,OAAO/qH,KAAK,GAAG,EAAE,IAAIj9K,EAAEqrN,KAAKrrN,EAAEqrN,KAAKrrN,EAAEqrN,KAAM,EAAE9zM,GAAGra,UAAU4yU,aAAa,WAAW,IAAInzU,EAAEa,KAAKmtC,QAAQvsC,EAAEzB,EAAE8uH,GAAGjuH,KAAK8q6C,cAAc,EAAE9q6C,KAAK+q6C,0BAAqB,EAAO,IAAIzq6C,EAAElB,EAAEc,SAASd,EAAEi5H,MAAM/3H,EAAE,EAAEN,KAAK++B,MAAM/+B,KAAKg/B,OAAO,EAAE,EAAE,GAAG5/B,EAAE0iG,MAAMxhG,EAAEA,EAAE,CAACM,EAAEq0H,mBAAmBr0H,EAAEs0H,oBAAoB,IAAIl1H,KAAKk2U,WAAW,gBAAgB3gN,KAAKp2H,EAAEyB,EAAE+5M,UAAU7sM,GAAGwiW,SAAStwW,KAAK6q6C,iBAAiBp95C,GAAG6iW,SAASpiW,GAAGoiW,SAASpxV,GAAG5e,GAAG,YAAYN,KAAK2p6C,eAAe3p6C,KAAKkp6C,wBAAwBlp6C,KAAK4p6C,iBAAkB,EAAE7v5C,GAAGra,UAAUsr6C,yBAAyB,SAAS5r6C,EAAED,GAAG,GAAGa,KAAK+q6C,uBAAuB3r6C,EAAEyI,QAAQzI,EAAE6g4C,iBAAiB9g4C,GAAGA,EAAEkB,OAAO,CAACL,KAAK+q6C,qBAAqB3r6C,EAAEyI,OAAO,IAAIjH,EAAEZ,KAAKmtC,QAAQ7sC,EAAEM,EAAEqtH,GAAGjuH,KAAK8q6C,cAAc3r6C,EAAEkB,OAAO,KAAKL,KAAKsyU,eAAe1xU,EAAE4y5C,aAAa/l5C,GAAG6iW,UAAU1vW,EAAE0y5C,aAAaxl5C,GAAGwiW,UAAU,IAAIvwW,EAAEC,KAAKk2U,WAAW,gBAAgBl2U,KAAKir6C,qBAAqB,CAAC,EAAE,IAAI,IAAIjq6C,EAAE,EAAE3B,EAAEF,EAAE6B,EAAE3B,EAAEgB,OAAOW,GAAG,EAAE,CAAC,IAAIF,EAAEzB,EAAE2B,GAAGwB,EAAExC,KAAKir6C,qBAAqBnq6C,EAAE+jB,KAAK7kB,KAAK8q6C,gBAAgB/q6C,EAAEw1H,KAAK30H,EAAEN,EAAEq6M,UAAU7sM,GAAGwiW,SAAS,IAAIzhW,GAAG,CAACkxC,KAAKz/C,EAAEkqS,OAAO/qH,KAAK,GAAGj9K,EAAE,IAAIlC,EAAEyqS,KAAKzqS,EAAEyqS,KAAKzqS,EAAEyhM,SAASt0L,GAAG6iW,SAASpiW,GAAGoiW,SAASpxV,GAAGpe,EAAEm15C,WAAW,YAAYj25C,KAAKkq6C,iBAAiBlq6C,KAAKkp6C,wBAAwBlp6C,KAAKmq6C,mBAAoB,CAAC,CAAC,EAAEpw5C,GAAGra,UAAUqq6C,iBAAiB,WAAW/p6C,KAAK+q6C,0BAAqB,EAAO/q6C,KAAK8q6C,cAAc,EAAE,KAAK9q6C,KAAKsyU,eAAe,IAAIlzU,EAAEY,KAAK8q6C,gBAAgB3r6C,EAAEa,KAAKmtC,QAAQ8gF,GAAG,OAAO,IAAIp/G,GAAG,CAACkxC,KAAK5gD,EAAE2rS,SAASrrH,KAAK,KAAKrgL,EAAE,IAAID,EAAE4rS,KAAK5rS,EAAE4rS,KAAK5rS,EAAE4iM,QAAQ,EAAEhoL,GAAGra,UAAUsp6C,uBAAuB,SAAS5p6C,GAAG,IAAID,EAAEa,KAAKmtC,QAAQ8gF,GAAG,OAAO,IAAIp/G,GAAG,CAACkxC,KAAK5gD,EAAEurS,MAAMjrH,KAAK,KAAKz/K,KAAKir6C,qBAAqB7r6C,EAAEylB,KAAK,EAAE1lB,EAAE4rS,KAAK5rS,EAAE4rS,KAAK5rS,EAAE4iM,QAAQ,EAAEhoL,GAAGra,UAAUsq6C,wBAAwB,SAAS5q6C,GAAG,IAAID,EAAEyB,EAAEZ,KAAKmtC,QAAQ8gF,GAAG3tH,EAAElB,EAAEmtC,MAAK,SAAUntC,EAAED,GAAG,OAAOA,EAAEy84C,YAAYx84C,EAAEw84C,WAAY,IAAG774C,EAAEO,EAAEA,EAAED,OAAO,GAAGu74C,YAAY564C,EAAEV,EAAE,GAAGs74C,YAAY774C,EAAE,EAAE,GAAGiB,EAAE,EAAE,CAAChB,KAAK+q6C,0BAAqB,EAAO/q6C,KAAK8q6C,cAAc9p6C,EAAE,KAAKhB,KAAKsyU,eAAe,IAAI,IAAIjzU,EAAE,CAAC,EAAEyB,EAAE,EAAEA,EAAEE,EAAEF,IAAIzB,EAAEyB,EAAEf,GAAG,IAAI8O,GAAG,CAACkxC,KAAKn/C,EAAEiqS,OAAOprH,KAAK,KAAK3+K,EAAEd,KAAK8q6C,cAAc,IAAIlq6C,EAAEmqS,KAAKnqS,EAAEmqS,KAAKnqS,EAAEmhM,SAAS,OAAO/hM,KAAK8q6C,eAAe9p6C,EAAE,CAAC3B,EAAEiB,EAAE,CAAC,MAAO,EAAEnB,EAAE,CAAC,EAAEA,EAAEY,GAAG8O,GAAGyhW,SAASnxW,GAAGmB,EAAE,EAAEyZ,GAAGra,UAAU2o6C,uBAAuB,WAAW,IAAIlp6C,EAAEa,KAAKmtC,QAAQ8gF,GAAG,OAAOjuH,KAAKkr6C,uBAAuB,IAAIz95C,GAAG,CAACtO,EAAEmjS,eAAenjS,EAAE0vN,KAAK,IAAIzvN,EAAEizuB,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAC,GAAG,GAAG,GAAG,IAAK,WAAWryuB,KAAK+3J,WAAWtqJ,GAAGol5C,UAAUpl5C,GAAGql5C,YAAY,EAAE/44C,GAAGra,UAAU6o6C,qBAAqB,SAASnp6C,EAAED,EAAEyB,GAAG,IAAIZ,KAAK6p6C,4BAA4B,OAAO/75C,GAAGwiW,SAAS,IAAIhwW,EAAE,IAAI,EAAEN,KAAK4qY,cAAc5qY,KAAK0q6C,aAAatr6C,GAAGY,KAAK2q6C,aAAa,OAAO,IAAI785C,GAAGlN,GAAGZ,KAAKmtC,QAAQ8gF,GAAG08K,OAAOxrS,EAAE,CAACmB,EAAEA,GAAG,EAAEyZ,GAAGra,UAAUmq6C,0BAA0B,WAAW,OAAO7p6C,KAAK4qY,aAAa5qY,KAAKmr6C,gBAAgB,EAAEpx5C,GAAGra,UAAU4uH,OAAO,SAASnvH,EAAEyB,GAAG,IAAIN,EAAEN,KAAKA,KAAKqU,MAAMlV,EAAEa,KAAKmpB,QAAQvoB,EAAEZ,KAAKk+5C,UAAU/+5C,EAAE++5C,UAAUl+5C,KAAKk05C,aAAa/05C,EAAE+05C,aAAal05C,KAAKi+5C,aAAa9+5C,EAAE8+5C,aAAaj+5C,KAAKk85C,iBAAiB/85C,EAAEksgB,UAAU6w5B,iBAAiB985C,EAAEghS,QAAQ30Q,OAAOzrB,KAAKk05C,aAAa9G,aAAa,IAAIrt5C,EAAEC,KAAKqU,MAAM2zO,OAAOhnP,EAAEhB,KAAKqU,MAAMo74C,aAAa,IAAI,IAAIpw5C,KAAK2B,EAAE,CAAC,IAAIF,EAAEE,EAAE3B,GAAGyB,EAAEq05C,MAAMr05C,EAAEwwa,QAAQtxa,KAAKmtC,QAAS,CAAC,IAAI3qC,EAAE3B,EAAEwB,EAAE,CAAC,EAAEO,EAAE,CAAC,EAAEE,EAAE,CAAC,EAAE,IAAI,IAAIH,KAAK3B,EAAE,CAAC,IAAI4C,EAAE5C,EAAE2B,GAAGN,EAAEM,GAAGiB,EAAEoy5C,wBAAwBpz5C,EAAED,GAAGN,EAAEM,GAAGZ,QAAQu4D,UAAUx3D,EAAEH,GAAGiB,EAAEoy5C,uBAAsB,GAAI171C,SAAU,CAACt6D,KAAKmr6C,iBAAiB,IAAI,IAAI,IAAIzo6C,EAAE,EAAEA,EAAE3C,EAAEM,OAAOqC,IAAI,GAAG1C,KAAKqU,MAAMkwX,QAAQxkY,EAAE2C,IAAIs93C,OAAO,CAAChg4C,KAAKmr6C,iBAAiBzo6C,EAAE,KAAK,CAAC1C,KAAK+3J,WAAW,YAAY,IAAI,IAAI30J,EAAE,EAAEjB,EAAEpC,EAAEqD,EAAEjB,EAAE9B,OAAO+C,GAAG,EAAE,CAAC,IAAIH,EAAEjD,KAAKqU,MAAMkwX,QAAQpiY,EAAEiB,IAAI,GAAGH,EAAEi93C,qBAAqBj93C,EAAE8wZ,SAAS/zZ,KAAK4iI,UAAUjjG,MAAM,CAAC,IAAI38B,EAAEJ,EAAEK,EAAE4E,SAAS,WAAW5E,EAAEsJ,MAAMvJ,EAAE3C,SAASL,KAAKor6C,YAAYpr6C,KAAKgB,EAAEiC,EAAE4E,QAAQ5E,EAAED,EAAG,CAAC,CAAC,IAAIhD,KAAKmtC,QAAQglS,gBAAgBlmU,IAAI,MAAMjM,KAAKmtC,QAAQnoB,MAAM,CAACuoG,MAAM3sH,EAAEyq6C,sBAAsBjs6C,EAAEizuB,MAAMviY,MAAM1wW,EAAEizuB,MAAMt8jB,YAAYx+B,MAAM,IAAIv3I,KAAKsyU,eAAetyU,KAAKkr6C,uBAAuBtq6C,EAAEyq6C,sBAAsBrr6C,KAAK8p6C,gBAAgB,CAAC,EAAE,GAAG3q6C,EAAE6oP,OAAO3nP,OAAO,GAAGL,KAAK0q6C,aAAa1q6C,KAAK2q6C,cAAc3q6C,KAAK+3J,WAAW,SAAS/3J,KAAK4qY,aAAa7qY,EAAEM,OAAO,EAAEL,KAAK4qY,cAAc,EAAE5qY,KAAK4qY,eAAe,CAAC,IAAI3mY,EAAEjE,KAAKqU,MAAMkwX,QAAQxkY,EAAEC,KAAK4qY,eAAetnY,EAAEtC,EAAEiD,EAAE4D,QAAQtE,EAAElB,EAAE4B,EAAE4D,QAAQ7H,KAAKgr6C,yBAAyB/m6C,EAAEV,GAAGvD,KAAKor6C,YAAYpr6C,KAAKsD,EAAEW,EAAEV,EAAG,CAAC,IAAIvD,KAAK+3J,WAAW,cAAc/3J,KAAK4qY,aAAa,EAAE5qY,KAAK4qY,aAAa7qY,EAAEM,OAAOL,KAAK4qY,eAAe,CAAC,IAAI1mY,EAAElE,KAAKqU,MAAMkwX,QAAQxkY,EAAEC,KAAK4qY,eAAelmY,EAAE1D,EAAEkD,EAAE2D,QAAQhE,GAAG,WAAWK,EAAEqI,KAAKzJ,EAAEF,GAAGsB,EAAE2D,QAAQ7H,KAAKgr6C,yBAAyB9m6C,EAAE7B,EAAE6B,EAAE2D,SAAS7H,KAAKor6C,YAAYpr6C,KAAK0E,EAAER,EAAEL,EAAG,CAAC7D,KAAKmpB,QAAQmi5C,qBAAqBls6C,EAAEsd,OAAO1c,KAAKqU,MAAMkwX,SAASr/W,SAAQ,SAAU9lB,GAAGA,EAAEyI,SAASzI,EAAE20Z,SAASzzZ,EAAEsiI,UAAUjjG,QAAQvgC,EAAEyI,UAAUhH,GAAGA,EAAE0qB,MAAM1qB,EAAEP,EAAE+T,MAAMo74C,aAAarw5C,EAAEyI,WAAWrF,GAAGA,EAAEipV,YAAYzoH,QAAQniO,EAAE4qV,YAAYzoH,WAAWxgO,EAAE3B,GAAK,IAAG2B,GAAGwX,GAAGw8B,MAAMx2C,KAAKwC,EAAEA,EAAEwz5C,0BAA0Bh25C,KAAKmpB,QAAQoi5C,aAAa,SAASns6C,GAAG,IAAID,EAAEC,EAAEwjI,UAAU1K,QAAQ19G,GAAGpb,EAAEA,EAAEwjI,UAAU5jG,QAAQ7/B,EAAE2/B,KAAK,GAAG,EAAEnlB,IAAIa,GAAGpb,EAAED,EAAE2gG,QAAQ,EAAE,EAAExmF,IAAIM,GAAGxa,EAAED,EAAE0/B,MAAM,EAAE,EAAEnlB,IAAIE,GAAGxa,EAAEA,EAAEwjI,UAAU7jG,OAAO5/B,EAAE0gG,OAAO,GAAG,EAAEhmF,IAAI,IAAIjZ,EAAExB,EAAEwjI,UAAU4oyC,aAAa,SAASps6C,EAAED,EAAEyB,EAAEN,GAAG2Z,GAAG7a,EAAED,EAAE,EAAEyB,EAAE,GAAG,EAAE,GAAGN,GAAG2Z,GAAG7a,EAAED,EAAE,GAAGyB,EAAE,EAAE,GAAG,EAAEN,EAAG,CAA9D,CAAgElB,EAAEwB,EAAEqD,EAAE7E,EAAEwjI,UAAU5jG,OAAOp+B,EAAEoC,EAAE8W,GAAI,CAArS,CAAuS9Z,MAAMA,KAAKmtC,QAAQ+plC,YAAa,EAAEn9mC,GAAGra,UAAU0r6C,YAAY,SAAShs6C,EAAED,EAAEyB,EAAEN,GAAGM,EAAEmzZ,SAAS/zZ,KAAK4iI,UAAUjjG,QAAQ,eAAe/+B,EAAE2L,MAAM,WAAW3L,EAAE2L,MAAMjM,EAAED,UAAUL,KAAKurB,GAAG3qB,EAAE2qB,GAAGvrB,KAAKyr6C,eAAe7q6C,GAAGoZ,GAAGpZ,EAAE2L,MAAMnN,EAAED,EAAEyB,EAAEN,EAAEN,KAAKqU,MAAMg3f,UAAUsv5B,iBAAiB365C,KAAK0r6C,eAAgB,EAAE3x5C,GAAGra,UAAU+r6C,eAAe,SAASrs6C,GAAG,GAAGY,KAAKmpB,QAAQwi5C,UAAU,CAAC,IAAIxs6C,EAAEa,KAAKmtC,QAAQgm3C,cAAcvy5C,EAAEZ,KAAK4q6C,UAAUxr6C,EAAEmsB,IAAI3qB,IAAIA,EAAEZ,KAAK4q6C,UAAUxr6C,EAAEmsB,IAAI,CAACstxC,MAAM,EAAE37pC,QAAQ,EAAEjuD,MAAM9vF,EAAEys6C,mBAAmBhr6C,EAAEi4yC,QAAQ15yC,EAAE0s6C,cAAc1s6C,EAAE0mT,iBAAiBjlT,EAAEquF,MAAO,CAAC,EAAEl1E,GAAGra,UAAUgs6C,aAAa,WAAW,GAAG1r6C,KAAKmpB,QAAQwi5C,UAAU,CAAC,IAAIvs6C,EAAEY,KAAKmtC,QAAQgm3C,cAAc/z5C,EAAE0s6C,YAAY1s6C,EAAEymT,iBAAkB,CAAC,EAAE9rS,GAAGra,UAAUqs6C,iBAAiB,WAAW,IAAI3s6C,EAAEY,KAAK4q6C,UAAU,OAAO5q6C,KAAK4q6C,UAAU,CAAC,EAAExr6C,CAAC,EAAE2a,GAAGra,UAAUss6C,eAAe,SAAS5s6C,GAAG,IAAID,EAAE,CAAC,EAAE,IAAI,IAAIyB,KAAKxB,EAAE,CAAC,IAAIkB,EAAElB,EAAEwB,GAAGb,EAAEC,KAAKmtC,QAAQgm3C,cAAcny5C,EAAEjB,EAAEks6C,kBAAkB3r6C,EAAE2uF,MAAMlvF,EAAE4lT,kBAAkB,IAAI5lT,EAAEms6C,eAAe5r6C,EAAE2uF,OAAO9vF,EAAEyB,GAAGI,CAAE,CAAC,OAAO7B,CAAC,EAAE4a,GAAGra,UAAUuk6C,mBAAmB,SAAS9k6C,EAAEyB,EAAEN,EAAEP,EAAEiB,GAAG,IAAIV,EAAE,KAAKA,EAAE,GAAG,OAAOnB,EAAE,IAAIE,EAAE2B,EAAE,QAAQjB,EAAEC,KAAK4iI,UAAU+rG,MAAM,EAAE,aAAa5uO,GAAGC,KAAK4iI,UAAU+rG,MAAM,EAAE,GAAGtvO,EAAE,CAAC,IAAIyB,EAAE+B,KAAK4wH,IAAIp0H,GAAGmD,EAAEK,KAAKuxH,IAAI/0H,GAAGiB,EAAE,CAACA,EAAE,GAAGkC,EAAElC,EAAE,GAAGQ,EAAER,EAAE,GAAGQ,EAAER,EAAE,GAAGkC,EAAG,CAAC,IAAI3B,EAAE,CAACG,EAAEV,EAAE,GAAGkH,GAAG5G,EAAEN,EAAE,GAAGN,KAAK4iI,UAAUjjG,MAAM3+B,EAAEV,EAAE,GAAGkH,GAAG5G,EAAEN,EAAE,GAAGN,KAAK4iI,UAAUjjG,MAAM,GAAGt9B,EAAE,IAAI2d,aAAa,IAAI,OAAO5gB,EAAEg6H,UAAU/2H,EAAElD,EAAE0B,GAAGwB,CAAC,EAAE0X,GAAGra,UAAUuw5C,gBAAgB,SAAS7w5C,GAAG,IAAID,EAAEa,KAAKwq6C,cAAcpr6C,EAAEwlB,KAAK,IAAIzlB,EAAEA,EAAE0C,KAAKzC,GAAGY,KAAKwq6C,cAAcpr6C,EAAEwlB,KAAK,IAAI,CAACxlB,EAAG,EAAE2a,GAAGra,UAAUow5C,eAAe,SAAS1w5C,GAAG,IAAID,EAAEa,KAAKwq6C,cAAcpr6C,GAAG,OAAOD,GAAGA,EAAEkB,OAAO,EAAElB,EAAEyC,MAAM,IAAI,EAAEmY,GAAGra,UAAUuq6C,iBAAiB,SAAS7q6C,GAAG,IAAIA,EAAE,OAAO,EAAG,IAAIA,EAAE2e,OAAO3e,EAAE6Z,GAAG,OAAO,EAAG,IAAI9Z,EAAEa,KAAKk05C,aAAajH,WAAW7t5C,EAAE2e,KAAKxZ,YAAY3D,EAAEZ,KAAKk05C,aAAajH,WAAW7t5C,EAAE6Z,GAAG1U,YAAY,OAAQpF,IAAIyB,CAAC,EAAEmZ,GAAGra,UAAUw2U,WAAW,SAAS92U,EAAED,GAAGa,KAAKkzB,MAAMlzB,KAAKkzB,OAAO,CAAC,EAAE,IAAItyB,EAAE,GAAGxB,GAAGD,EAAEA,EAAE6rJ,SAAS,KAAKhrJ,KAAKkr6C,uBAAuB,YAAY,IAAI,OAAOlr6C,KAAKkzB,MAAMtyB,KAAKZ,KAAKkzB,MAAMtyB,GAAG,IAAIsd,GAAGle,KAAKmtC,QAAQ/tC,EAAE4e,GAAG5e,GAAGD,EAAEohB,GAAGnhB,GAAGY,KAAKkr6C,yBAAyBlr6C,KAAKkzB,MAAMtyB,EAAE,EAAEmZ,GAAGra,UAAU2q6C,uBAAuB,WAAWrq6C,KAAKmtC,QAAQ6k3C,YAAYhy5C,KAAKmtC,QAAQ8kS,SAASilzB,aAAal3nC,KAAKmtC,QAAQ2hT,cAAcooyB,aAAal3nC,KAAKmtC,QAAQ8r2C,iBAAiB/hR,aAAal3nC,KAAKmtC,QAAQ+r2C,iCAAiChiR,aAAal3nC,KAAKmtC,QAAQ6r2C,sBAAsB9hR,YAAa,EAAEn9mC,GAAGra,UAAU6q6C,aAAa,WAAW,IAAInr6C,EAAEY,KAAKmtC,QAAQ8gF,GAAGjuH,KAAKmtC,QAAQ8kS,SAAShmU,KAAI,GAAIjM,KAAKmtC,QAAQhC,SAASl/B,IAAI,CAAC,EAAE,EAAEjM,KAAK++B,MAAM/+B,KAAKg/B,SAASh/B,KAAKmtC,QAAQ04F,cAAc55H,IAAI7M,EAAEsjS,SAAU,EAAE3oR,GAAGra,UAAU6p6C,uBAAuB,WAAW,MAAMvp6C,KAAKwp6C,qBAAqBxp6C,KAAKwp6C,mBAAmBpq6C,EAAE8C,OAAOiD,SAASmE,cAAc,UAAUtJ,KAAKwp6C,mBAAmBzq4C,MAAM,IAAI/+B,KAAKwp6C,mBAAmBxq4C,OAAO,IAAIh/B,KAAKyp6C,oBAAoB,IAAIrq6C,EAAEivV,QAAQruV,KAAKmtC,QAAQntC,KAAKwp6C,mBAAmBxp6C,KAAKmtC,QAAQ8gF,GAAG63F,MAAO,EAAE/rM,GAAGra,UAAU0+I,QAAQ,WAAWp+I,KAAK60P,aAAaz2G,UAAUp+I,KAAKyp6C,qBAAqBzp6C,KAAKyp6C,oBAAoBrrxC,SAAU,EAAE,IAAIzjI,GAAG,SAASvb,EAAED,GAAGa,KAAKsrC,OAAOlsC,EAAEY,KAAKgnL,OAAO7nL,CAAE,EAAEwb,GAAGwx5C,wBAAwB,SAASht6C,EAAEyB,EAAEN,GAAG,IAAIP,EAAE8C,KAAK6yF,IAAI,EAAEp1F,GAAGU,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,GAAG,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,IAAIquB,KAAI,SAAUzuB,GAAG,OAAOxB,EAAEukvC,cAAc,GAAG/ivC,EAAEzB,EAAG,IAAGkwB,KAAI,SAAUlwB,GAAG,OAAOC,EAAEgo5C,QAAQ,GAAGjo5C,EAAE,EAAEA,EAAE,GAAGyB,EAAEb,EAAG,IAAGV,EAAE,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,IAAIgwB,KAAI,SAAUlwB,GAAG,IAAIyB,EAAExB,EAAE81B,IAAI,GAAGl0B,EAAE7B,EAAE,IAAI6B,EAAE7B,EAAE,KAAKmB,EAAElB,EAAE81B,IAAI,GAAGl0B,EAAE7B,EAAE,IAAI6B,EAAE7B,EAAE,KAAKY,EAAEX,EAAEkQ,UAAU,GAAGlQ,EAAEq7L,MAAM,GAAG75L,EAAEN,IAAIjB,GAAGD,EAAEojL,IAAIziL,EAAEiB,EAAE7B,EAAE,KAAK,OAAOY,EAAEiC,OAAO3C,EAAG,IAAG,OAAO,IAAIsb,GAAG3Z,EAAE3B,EAAE,EAAE,IAAI6a,GAAG,SAAS/a,EAAEyB,GAAGZ,KAAK6N,IAAI1O,EAAEa,KAAK2N,IAAI/M,EAAEZ,KAAKi/B,OAAO7/B,EAAEio5C,QAAQ,GAAGjo5C,EAAE+lB,IAAI,GAAGnlB,KAAK6N,IAAI7N,KAAK2N,KAAK,GAAI,EAAEuM,GAAGxa,UAAU0s6C,SAAS,SAASjt6C,GAAG,IAAI,IAAIyB,EAAE,CAACzB,EAAE,GAAG,EAAEA,EAAE,GAAGmB,EAAElB,EAAE+k5C,QAAQnk5C,KAAK6N,KAAK9N,EAAEX,EAAE+k5C,QAAQnk5C,KAAK2N,KAAK3M,EAAE,EAAEA,EAAEJ,EAAEP,OAAOW,IAAIV,EAAEU,GAAGJ,EAAEI,GAAGhB,KAAK6N,IAAI7M,GAAGhB,KAAKi/B,OAAOj+B,GAAGjB,EAAEiB,GAAGJ,EAAEI,GAAGhB,KAAKi/B,OAAOj+B,GAAGhB,KAAK2N,IAAI3M,GAAG,OAAOjB,EAAE,GAAGC,KAAK2N,IAAI,GAAG,IAAIuM,GAAG5Z,EAAEP,EAAE,EAAEma,GAAGxa,UAAU4xlC,UAAU,SAASlylC,GAAG,OAAOyD,KAAK8K,IAAI9K,KAAKgL,IAAI7N,KAAK2N,IAAI,GAAGvO,EAAE,IAAIY,KAAK6N,IAAI,IAAIzO,EAAE,EAAE,EAAE8a,GAAGxa,UAAU6xlC,UAAU,SAASnylC,GAAG,OAAOyD,KAAK8K,IAAI9K,KAAKgL,IAAI7N,KAAK2N,IAAI,GAAGvO,EAAE,IAAIY,KAAK6N,IAAI,IAAIzO,EAAE,EAAE,EAAE8a,GAAGxa,UAAUymW,WAAW,SAAShnW,GAAG,IAAI,IAAIyB,EAAE,CAAC,CAACZ,KAAK6N,IAAI,GAAG7N,KAAK6N,IAAI,GAAG,EAAE,GAAG,CAAC7N,KAAK2N,IAAI,GAAG3N,KAAK6N,IAAI,GAAG,EAAE,GAAG,CAAC7N,KAAK2N,IAAI,GAAG3N,KAAK2N,IAAI,GAAG,EAAE,GAAG,CAAC3N,KAAK6N,IAAI,GAAG7N,KAAK2N,IAAI,GAAG,EAAE,IAAIrN,GAAE,EAAGP,EAAE,EAAEA,EAAEZ,EAAE6nL,OAAO3mL,OAAON,IAAI,CAAC,IAAI,IAAIiB,EAAE7B,EAAE6nL,OAAOjnL,GAAGV,EAAE,EAAEyB,EAAE,EAAEA,EAAEF,EAAEP,OAAOS,IAAIzB,GAAGD,EAAEul5C,MAAM3j5C,EAAEJ,EAAEE,KAAK,EAAE,GAAG,IAAIzB,EAAE,OAAO,EAAEA,IAAIuB,EAAEP,SAASC,GAAE,EAAI,CAAC,GAAGA,EAAE,OAAO,EAAE,IAAI,IAAIkC,EAAE,EAAEA,EAAE,EAAEA,IAAI,CAAC,IAAI,IAAI3B,EAAEskC,OAAO+lJ,UAAU7oL,GAAG8iC,OAAO+lJ,UAAUtoL,EAAE,EAAEA,EAAEzD,EAAEmsC,OAAOjrC,OAAOuC,IAAI,CAAC,IAAIE,EAAE3D,EAAEmsC,OAAO1oC,GAAGJ,GAAGxC,KAAK6N,IAAIrL,GAAG3B,EAAEgC,KAAKgL,IAAIhN,EAAEiC,GAAGT,EAAEQ,KAAK8K,IAAItL,EAAES,EAAG,CAAC,GAAGT,EAAE,GAAGxB,EAAEb,KAAK2N,IAAInL,GAAGxC,KAAK6N,IAAIrL,GAAG,OAAO,CAAC,CAAC,OAAO,CAAC,EAAE,IAAI4X,GAAG,SAAShb,EAAED,EAAEyB,EAAEN,GAAG,QAAG,IAASlB,IAAIA,EAAE,QAAG,IAASD,IAAIA,EAAE,QAAG,IAASyB,IAAIA,EAAE,QAAG,IAASN,IAAIA,EAAE,GAAGgsC,MAAMltC,IAAIA,EAAE,GAAGktC,MAAMntC,IAAIA,EAAE,GAAGmtC,MAAM1rC,IAAIA,EAAE,GAAG0rC,MAAMhsC,IAAIA,EAAE,EAAE,MAAM,IAAIknB,MAAM,kFAAkFxnB,KAAK8+B,IAAI1/B,EAAEY,KAAK8/F,OAAO3gG,EAAEa,KAAK6+B,KAAKj+B,EAAEZ,KAAK6/F,MAAMv/F,CAAE,EAAE8Z,GAAG1a,UAAU+vP,YAAY,SAAStwP,EAAEyB,EAAEN,GAAG,OAAO,MAAMM,EAAEk+B,KAAK,MAAM3/B,EAAE2/B,MAAM9+B,KAAK8+B,IAAI1/B,EAAE2qJ,OAAO5qJ,EAAE2/B,IAAIl+B,EAAEk+B,IAAIx+B,IAAI,MAAMM,EAAEk/F,QAAQ,MAAM3gG,EAAE2gG,SAAS9/F,KAAK8/F,OAAO1gG,EAAE2qJ,OAAO5qJ,EAAE2gG,OAAOl/F,EAAEk/F,OAAOx/F,IAAI,MAAMM,EAAEi+B,MAAM,MAAM1/B,EAAE0/B,OAAO7+B,KAAK6+B,KAAKz/B,EAAE2qJ,OAAO5qJ,EAAE0/B,KAAKj+B,EAAEi+B,KAAKv+B,IAAI,MAAMM,EAAEi/F,OAAO,MAAM1gG,EAAE0gG,QAAQ7/F,KAAK6/F,MAAMzgG,EAAE2qJ,OAAO5qJ,EAAE0gG,MAAMj/F,EAAEi/F,MAAMv/F,IAAIN,IAAI,EAAEoa,GAAG1a,UAAU0gC,UAAU,SAASjhC,EAAEyB,GAAG,IAAIN,EAAElB,EAAEs5V,OAAO14V,KAAK6+B,KAAK1/B,EAAEa,KAAK6/F,OAAO,EAAE,EAAE1gG,GAAGY,EAAEX,EAAEs5V,OAAO14V,KAAK8+B,IAAIl+B,EAAEZ,KAAK8/F,QAAQ,EAAE,EAAEl/F,GAAG,OAAO,IAAIxB,EAAEoqC,MAAMlpC,EAAEP,EAAE,EAAEqa,GAAG1a,UAAU6yI,OAAO,SAASnzI,GAAG,OAAOY,KAAK8+B,MAAM1/B,EAAE0/B,KAAK9+B,KAAK8/F,SAAS1gG,EAAE0gG,QAAQ9/F,KAAK6+B,OAAOz/B,EAAEy/B,MAAM7+B,KAAK6/F,QAAQzgG,EAAEygG,KAAK,EAAEzlF,GAAG1a,UAAU6wB,MAAM,WAAW,OAAO,IAAInW,GAAGpa,KAAK8+B,IAAI9+B,KAAK8/F,OAAO9/F,KAAK6+B,KAAK7+B,KAAK6/F,MAAM,EAAEzlF,GAAG1a,UAAU49C,OAAO,WAAW,MAAO,CAACxe,IAAI9+B,KAAK8+B,IAAIghE,OAAO9/F,KAAK8/F,OAAOjhE,KAAK7+B,KAAK6+B,KAAKghE,MAAM7/F,KAAK6/F,MAAM,EAAE,IAAIjlF,GAAG,SAASzb,EAAEyB,EAAEN,EAAEP,EAAEiB,GAAGhB,KAAKytL,SAAS,IAAIztL,KAAKqs6C,iBAAiB,UAAUrs6C,KAAKss6C,wBAAmB,IAAStr6C,GAAGA,EAAEhB,KAAK4wL,SAASzxL,GAAG,EAAEa,KAAK2wL,SAAS/vL,GAAG,GAAGZ,KAAKus6C,UAAU,MAAMjs6C,EAAE,EAAEA,EAAEN,KAAKws6C,UAAU,MAAMzs6C,EAAE,GAAGA,EAAEC,KAAKys6C,eAAezs6C,KAAK++B,MAAM,EAAE/+B,KAAKg/B,OAAO,EAAEh/B,KAAK62X,QAAQ,IAAIz3X,EAAE2s3C,OAAO,EAAE,GAAG/r3C,KAAK2/B,KAAK,EAAE3/B,KAAK2uO,MAAM,EAAE3uO,KAAK0s6C,KAAK,kBAAkB1s6C,KAAK+45C,OAAO,EAAE/45C,KAAK2s6C,aAAY,EAAG3s6C,KAAK4s6C,YAAY,IAAIxy5C,GAAGpa,KAAK6s6C,gBAAgB,CAAC,EAAE7s6C,KAAK8s6C,uBAAuB,CAAC,CAAE,EAAEzx5C,GAAG,CAAC6sG,QAAQ,CAACpkH,cAAa,GAAImkH,QAAQ,CAACnkH,cAAa,GAAIskH,SAAS,CAACtkH,cAAa,GAAIqkH,SAAS,CAACrkH,cAAa,GAAIip6C,kBAAkB,CAACjp6C,cAAa,GAAI2nW,UAAU,CAAC3nW,cAAa,GAAIkp6C,aAAa,CAAClp6C,cAAa,GAAI8gB,KAAK,CAAC9gB,cAAa,GAAI07B,QAAQ,CAAC17B,cAAa,GAAI47B,MAAM,CAAC57B,cAAa,GAAIkpW,IAAI,CAAClpW,cAAa,GAAI67B,KAAK,CAAC77B,cAAa,GAAIm7B,OAAO,CAACn7B,cAAa,GAAIo0H,QAAQ,CAACp0H,cAAa,GAAI0n6C,YAAY,CAAC1n6C,cAAa,GAAImp6C,WAAW,CAACnp6C,cAAa,GAAIqxI,MAAM,CAACrxI,cAAa,IAAK8W,GAAGlb,UAAU6wB,MAAM,WAAW,IAAInxB,EAAE,IAAIwb,GAAG5a,KAAK4wL,SAAS5wL,KAAK2wL,SAAS3wL,KAAKus6C,UAAUvs6C,KAAKmoH,SAASnoH,KAAKss6C,oBAAoB,OAAOlt6C,EAAEquL,SAASztL,KAAKytL,SAASruL,EAAEyqT,SAAS7pT,KAAK6pT,SAASzqT,EAAE2/B,MAAM/+B,KAAK++B,MAAM3/B,EAAE4/B,OAAOh/B,KAAKg/B,OAAO5/B,EAAEy3X,QAAQ72X,KAAK62X,QAAQz3X,EAAEugC,KAAK3/B,KAAK2/B,KAAKvgC,EAAEuvO,MAAM3uO,KAAK2uO,MAAMvvO,EAAEst6C,KAAK1s6C,KAAK0s6C,KAAKtt6C,EAAE255C,OAAO/45C,KAAK+45C,OAAO355C,EAAEut6C,YAAY3s6C,KAAK2s6C,YAAYvt6C,EAAEwt6C,YAAY5s6C,KAAK4s6C,YAAYr84C,QAAQnxB,EAAE8t6C,gBAAgB9t6C,CAAC,EAAEic,GAAG6sG,QAAQ/kH,IAAI,WAAW,OAAOnD,KAAK4wL,QAAQ,EAAEv1K,GAAG6sG,QAAQj8G,IAAI,SAAS7M,GAAGY,KAAK4wL,WAAWxxL,IAAIY,KAAK4wL,SAASxxL,EAAEY,KAAK2/B,KAAK98B,KAAK8K,IAAI3N,KAAK2/B,KAAKvgC,GAAI,EAAEic,GAAG4sG,QAAQ9kH,IAAI,WAAW,OAAOnD,KAAK2wL,QAAQ,EAAEt1K,GAAG4sG,QAAQh8G,IAAI,SAAS7M,GAAGY,KAAK2wL,WAAWvxL,IAAIY,KAAK2wL,SAASvxL,EAAEY,KAAK2/B,KAAK98B,KAAKgL,IAAI7N,KAAK2/B,KAAKvgC,GAAI,EAAEic,GAAG+sG,SAASjlH,IAAI,WAAW,OAAOnD,KAAKus6C,SAAS,EAAElx5C,GAAG+sG,SAASn8G,IAAI,SAAS7M,GAAGY,KAAKus6C,YAAYnt6C,IAAIY,KAAKus6C,UAAUnt6C,EAAEY,KAAK0/B,MAAM78B,KAAK8K,IAAI3N,KAAK0/B,MAAMtgC,GAAI,EAAEic,GAAG8sG,SAAShlH,IAAI,WAAW,OAAOnD,KAAKws6C,SAAS,EAAEnx5C,GAAG8sG,SAASl8G,IAAI,SAAS7M,GAAGY,KAAKws6C,YAAYpt6C,IAAIY,KAAKws6C,UAAUpt6C,EAAEY,KAAK0/B,MAAM78B,KAAKgL,IAAI7N,KAAK0/B,MAAMtgC,GAAI,EAAEic,GAAG0x5C,kBAAkB5p6C,IAAI,WAAW,OAAOnD,KAAKss6C,kBAAkB,EAAEjx5C,GAAG0x5C,kBAAkB9g6C,IAAI,SAAS7M,QAAG,IAASA,EAAEA,GAAE,EAAG,OAAOA,IAAIA,GAAE,GAAIY,KAAKss6C,mBAAmBlt6C,CAAE,EAAEic,GAAGowV,UAAUtoW,IAAI,WAAW,OAAOnD,KAAKytL,SAASztL,KAAK8hG,KAAK,EAAEzmF,GAAG2x5C,aAAa7p6C,IAAI,WAAW,OAAOnD,KAAKwr6C,YAAY98C,KAAK1u3C,KAAK4kB,KAAKqq2C,KAAK,GAAG,EAAE5z2C,GAAGuJ,KAAKzhB,IAAI,WAAW,OAAO,IAAI/D,EAAEoqC,MAAMxpC,KAAK++B,MAAM/+B,KAAKg/B,OAAO,EAAE3jB,GAAGmkB,QAAQr8B,IAAI,WAAW,OAAQnD,KAAK2uO,MAAM9rO,KAAKsmC,GAAG,GAAG,EAAE9tB,GAAGmkB,QAAQvzB,IAAI,SAAS9M,GAAG,IAAIyB,GAAGxB,EAAEwY,KAAKzY,GAAG,IAAI,KAAK0D,KAAKsmC,GAAG,IAAInpC,KAAK2uO,QAAQ/tO,IAAIZ,KAAK2s6C,aAAY,EAAG3s6C,KAAK2uO,MAAM/tO,EAAEZ,KAAKkt6C,gBAAgBlt6C,KAAKkrN,eAAe9rN,EAAEkl5C,WAAWll5C,EAAEqmH,OAAOzlH,KAAKkrN,eAAelrN,KAAKkrN,eAAelrN,KAAK2uO,OAAQ,EAAEtzN,GAAGqkB,MAAMv8B,IAAI,WAAW,OAAOnD,KAAK+45C,OAAOl25C,KAAKsmC,GAAG,GAAG,EAAE9tB,GAAGqkB,MAAMzzB,IAAI,SAAS9M,GAAG,IAAIyB,EAAExB,EAAEs5V,MAAMv5V,EAAEa,KAAKooH,SAASpoH,KAAKmoH,UAAU,IAAItlH,KAAKsmC,GAAGnpC,KAAK+45C,SAASn45C,IAAIZ,KAAK2s6C,aAAY,EAAG3s6C,KAAK+45C,OAAOn45C,EAAEZ,KAAKkt6C,gBAAiB,EAAE7x5C,GAAG2xV,IAAI7pW,IAAI,WAAW,OAAOnD,KAAK0s6C,KAAK7p6C,KAAKsmC,GAAG,GAAG,EAAE9tB,GAAG2xV,IAAI/gW,IAAI,SAAS7M,GAAGA,EAAEyD,KAAK8K,IAAI,IAAI9K,KAAKgL,IAAI,GAAGzO,IAAIY,KAAK0s6C,OAAOtt6C,IAAIY,KAAK2s6C,aAAY,EAAG3s6C,KAAK0s6C,KAAKtt6C,EAAE,IAAIyD,KAAKsmC,GAAGnpC,KAAKkt6C,gBAAiB,EAAE7x5C,GAAGskB,KAAKx8B,IAAI,WAAW,OAAOnD,KAAK0pnC,KAAK,EAAErumC,GAAGskB,KAAK1zB,IAAI,SAAS7M,GAAG,IAAID,EAAE0D,KAAKgL,IAAIhL,KAAK8K,IAAIvO,EAAEY,KAAKkoH,SAASloH,KAAKioH,SAASjoH,KAAK0pnC,QAAQvqnC,IAAIa,KAAK2s6C,aAAY,EAAG3s6C,KAAK0pnC,MAAMvqnC,EAAEa,KAAK8hG,MAAM9hG,KAAK05mC,UAAUv6mC,GAAGa,KAAK+i6C,SAASlg6C,KAAKyK,MAAMnO,GAAGa,KAAKmt6C,aAAahu6C,EAAEa,KAAK+i6C,SAAS/i6C,KAAKot6C,aAAapt6C,KAAKkt6C,gBAAiB,EAAE7x5C,GAAG4jB,OAAO97B,IAAI,WAAW,OAAOnD,KAAK62X,OAAO,EAAEx7W,GAAG4jB,OAAOhzB,IAAI,SAAS7M,GAAGA,EAAE8/B,MAAMl/B,KAAK62X,QAAQ33V,KAAK9/B,EAAEggC,MAAMp/B,KAAK62X,QAAQz3V,MAAMp/B,KAAK2s6C,aAAY,EAAG3s6C,KAAK62X,QAAQz3X,EAAEY,KAAKot6C,aAAapt6C,KAAKkt6C,gBAAiB,EAAE7x5C,GAAG68G,QAAQ/0H,IAAI,WAAW,OAAOnD,KAAK4s6C,YAAYtv3C,QAAQ,EAAEjiC,GAAG68G,QAAQjsH,IAAI,SAAS7M,GAAGY,KAAK4s6C,YAAYr6xC,OAAOnzI,KAAKY,KAAK2s6C,aAAY,EAAG3s6C,KAAK4s6C,YAAYn9qC,YAAYzvP,KAAK4s6C,YAAYxt6C,EAAE,GAAGY,KAAKkt6C,gBAAiB,EAAE7x5C,GAAGmw5C,YAAYro6C,IAAI,WAAW,OAAOnD,KAAK4s6C,YAAYxs4C,UAAUpgC,KAAK++B,MAAM/+B,KAAKg/B,OAAO,EAAEpkB,GAAGlb,UAAU2t6C,eAAe,SAASju6C,GAAG,OAAOY,KAAK4s6C,YAAYr6xC,OAAOnzI,EAAE,EAAEwb,GAAGlb,UAAU4t6C,mBAAmB,SAASlu6C,EAAED,EAAEyB,GAAGZ,KAAK2s6C,aAAY,EAAG3s6C,KAAK4s6C,YAAYn9qC,YAAYrwP,EAAED,EAAEyB,GAAGZ,KAAKot6C,aAAapt6C,KAAKkt6C,eAAgB,EAAEty5C,GAAGlb,UAAU415C,kBAAkB,SAASl25C,GAAG,IAAID,GAAGC,EAAEyw5C,UAAUht5C,KAAKogD,MAAMpgD,KAAKyK,OAAOtN,KAAK2/B,KAAK3/B,KAAKut6C,UAAUvt6C,KAAKytL,SAASruL,EAAEquL,WAAW,OAAO5qL,KAAK8K,IAAI,EAAExO,EAAE,EAAEyb,GAAGlb,UAAU015C,+BAA+B,SAASj25C,GAAG,IAAIyB,EAAE,CAAC,IAAIxB,EAAEqk5C,gBAAgB,EAAEtk5C,IAAI,GAAGa,KAAKss6C,mBAAmB,IAAI,IAAIhs6C,EAAEN,KAAKwjY,gBAAgB,IAAIpkY,EAAEoqC,MAAM,EAAE,IAAIzpC,EAAEC,KAAKwjY,gBAAgB,IAAIpkY,EAAEoqC,MAAMxpC,KAAK++B,MAAM,IAAI/9B,EAAEhB,KAAKwjY,gBAAgB,IAAIpkY,EAAEoqC,MAAMxpC,KAAK++B,MAAM/+B,KAAKg/B,SAAS3/B,EAAEW,KAAKwjY,gBAAgB,IAAIpkY,EAAEoqC,MAAM,EAAExpC,KAAKg/B,SAASl+B,EAAE+B,KAAKyK,MAAMzK,KAAKgL,IAAIvN,EAAE2D,EAAElE,EAAEkE,EAAEjD,EAAEiD,EAAE5E,EAAE4E,IAAIzB,EAAEK,KAAKyK,MAAMzK,KAAK8K,IAAIrN,EAAE2D,EAAElE,EAAEkE,EAAEjD,EAAEiD,EAAE5E,EAAE4E,IAAIpD,EAAEC,EAAE,EAAED,GAAG2B,EAAE,EAAE3B,IAAI,IAAIA,GAAGD,EAAEiB,KAAK,IAAIzC,EAAEqk5C,gBAAgB5i5C,EAAE1B,IAAI,OAAOyB,CAAC,EAAEga,GAAGlb,UAAU215C,cAAc,SAASl25C,GAAG,IAAIyB,EAAEZ,KAAKs15C,kBAAkBn25C,GAAGmB,EAAEM,EAAE,QAAG,IAASzB,EAAE4jO,SAASniO,EAAEzB,EAAE4jO,QAAQ,MAAO,QAAG,IAAS5jO,EAAE6jO,SAASpiO,EAAEzB,EAAE6jO,UAAUpiO,EAAEzB,EAAE6jO,SAAS,IAAIjjO,EAAEX,EAAE2i5C,mBAAmB5G,WAAWn74C,KAAKi/B,QAAQj+B,EAAE6B,KAAK6yF,IAAI,EAAE90F,GAAGvB,EAAE,CAAC2B,EAAEjB,EAAEkE,EAAEjD,EAAEjB,EAAEiD,EAAE,GAAGlC,EAAE6Z,GAAGwx5C,wBAAwBns6C,KAAKo65C,cAAcp65C,KAAKyrW,UAAU7qW,GAAG4B,EAAErD,EAAE4jO,SAAS,EAAE/iO,KAAK0/B,OAAO,IAAI1/B,KAAK4s6C,YAAY9t4C,IAAI,KAAKt8B,EAAE5B,GAAG,IAAIC,EAAE,SAASzB,GAAG,MAAO,CAACou6C,KAAK,IAAItz5C,GAAG,CAAC9a,EAAE4B,EAAE,EAAE,GAAG,EAAE5B,EAAE,GAAG4B,EAAEA,EAAE,IAAI2+B,KAAK,EAAE17B,EAAE,EAAEjB,EAAE,EAAE4U,KAAKxY,EAAEqu6C,cAAa,EAAG,EAAEpr6C,EAAE,GAAGO,EAAE,GAAGE,EAAElC,EAAE+B,EAAExD,EAAE6v5C,kBAAkB1u5C,EAAEM,EAAE,GAAGZ,KAAKss6C,mBAAmB,IAAI,IAAI1o6C,EAAE,EAAEA,GAAG,EAAEA,IAAIvB,EAAER,KAAKhB,GAAG+C,IAAIvB,EAAER,KAAKhB,EAAE+C,IAAI,IAAIvB,EAAER,KAAKhB,EAAE,IAAIwB,EAAEhC,OAAO,GAAG,CAAC,IAAIqC,EAAEL,EAAET,MAAMwB,EAAEV,EAAEuB,EAAE9B,EAAEO,EAAEM,EAAEC,EAAEP,EAAE+q6C,aAAa,IAAIxq6C,EAAE,CAAC,IAAID,EAAEN,EAAE8q6C,KAAKrnkC,WAAWrlW,GAAG,GAAG,IAAIkC,EAAE,SAASC,EAAE,IAAID,CAAE,CAAC,IAAIiB,EAAEvB,EAAE8q6C,KAAKl8U,UAAUjylC,GAAGiE,EAAEZ,EAAE8q6C,KAAKj8U,UAAUlylC,GAAGkE,EAAEV,KAAK8K,IAAI9K,KAAKmjH,IAAI/hH,GAAGpB,KAAKmjH,IAAI1iH,IAAI,GAAGZ,EAAEi9B,OAAO78B,GAAGS,EAAE,GAAG,GAAGT,EAAEJ,EAAEi9B,MAAM,GAAGj9B,EAAEi9B,MAAMn9B,EAAEI,EAAEf,KAAK,CAAC274C,OAAO,IAAIp+4C,EAAE6i5C,iBAAiBv/4C,EAAEi9B,OAAO78B,EAAEH,EAAED,EAAEi9B,KAAKj9B,EAAEkV,KAAKlV,EAAEi9B,KAAKv8B,EAAEjB,GAAGur6C,WAAWtu6C,EAAEmlvC,OAAO,CAACllvC,EAAE,GAAG,GAAG+D,EAAE/D,EAAE,GAAG,GAAG8C,WAAW,IAAI,IAAI+B,EAAE,EAAEA,EAAE,EAAEA,IAAI,CAAC,IAAIQ,GAAGtB,GAAG,GAAGc,EAAE,EAAEL,GAAG1B,GAAG,IAAI+B,GAAG,GAAG7B,EAAER,KAAK,CAAC2r6C,KAAK9q6C,EAAE8q6C,KAAKpB,SAASlo6C,GAAGy7B,KAAKj9B,EAAEi9B,KAAK,EAAE17B,EAAES,EAAE1B,EAAEa,EAAE+T,KAAKlV,EAAEkV,KAAK615C,aAAaxq6C,GAAI,CAAC,CAAC,OAAOL,EAAE2pC,MAAK,SAAUntC,EAAED,GAAG,OAAOC,EAAEsu6C,WAAWvu6C,EAAEuu6C,UAAW,IAAGr+4C,KAAI,SAAUjwB,GAAG,OAAOA,EAAEo+4C,MAAO,GAAE,EAAE5i4C,GAAGlb,UAAUmvH,OAAO,SAASzvH,EAAED,GAAGa,KAAK++B,MAAM3/B,EAAEY,KAAKg/B,OAAO7/B,EAAEa,KAAK8j6C,gBAAgB,CAAC,EAAE1k6C,GAAG,EAAED,GAAGa,KAAKot6C,aAAapt6C,KAAKkt6C,eAAgB,EAAE7x5C,GAAG4x5C,WAAW9p6C,IAAI,WAAW,OAAOnD,KAAK2s6C,WAAW,EAAE/x5C,GAAGlb,UAAUg6mC,UAAU,SAASt6mC,GAAG,OAAOyD,KAAK6yF,IAAI,EAAEt2F,EAAE,EAAEwb,GAAGlb,UAAU6t6C,UAAU,SAASnu6C,GAAG,OAAOyD,KAAKwnB,IAAIjrB,GAAGyD,KAAKsvN,GAAG,EAAEv3M,GAAGlb,UAAU43H,QAAQ,SAASn4H,GAAG,IAAIyB,EAAExB,EAAEs5V,MAAMv5V,EAAE+/B,KAAKl/B,KAAKqs6C,iBAAiBrs6C,KAAKqs6C,kBAAkB,OAAO,IAAIjt6C,EAAEoqC,MAAMpqC,EAAE6m5C,iBAAiB9m5C,EAAEigC,KAAKp/B,KAAKyrW,UAAUrsW,EAAE8m5C,iBAAiBtl5C,GAAGZ,KAAKyrW,UAAU,EAAE7wV,GAAGlb,UAAUgqH,UAAU,SAASvqH,GAAG,OAAO,IAAIC,EAAE2i5C,mBAAmB5i5C,EAAE8E,EAAEjE,KAAKyrW,UAAUtsW,EAAE6D,EAAEhD,KAAKyrW,WAAW2viC,UAAU,EAAE//3C,GAAG85H,MAAMhyI,IAAI,WAAW,OAAOnD,KAAKs3H,QAAQt3H,KAAKi/B,OAAO,EAAErkB,GAAGlb,UAAUiu6C,mBAAmB,SAASxu6C,EAAEyB,GAAG,IAAIN,EAAEN,KAAKwjY,gBAAgB5iY,GAAGb,EAAEC,KAAKwjY,gBAAgBxjY,KAAKwr6C,aAAaxq6C,EAAEhB,KAAK4t6C,mBAAmBzu6C,GAAGE,EAAE,IAAID,EAAE2i5C,mBAAmB/g5C,EAAEiD,GAAG3D,EAAE2D,EAAElE,EAAEkE,GAAGjD,EAAEgC,GAAG1C,EAAE0C,EAAEjD,EAAEiD,IAAIhD,KAAKi/B,OAAOj/B,KAAK6t6C,mBAAmBxu6C,GAAGW,KAAKss6C,qBAAqBts6C,KAAKi/B,OAAOj/B,KAAKi/B,OAAOrnB,OAAQ,EAAEgD,GAAGlb,UAAUou6C,cAAc,SAAS1u6C,GAAG,OAAOY,KAAK+t6C,gBAAgB/t6C,KAAK4t6C,mBAAmBxu6C,GAAG,EAAEwb,GAAGlb,UAAUsu6C,cAAc,SAAS5u6C,GAAG,OAAOY,KAAK6t6C,mBAAmB7t6C,KAAKwjY,gBAAgBpkY,GAAG,EAAEwb,GAAGlb,UAAUku6C,mBAAmB,SAASzu6C,GAAG,OAAOC,EAAE2i5C,mBAAmB5G,WAAWh84C,EAAE,EAAEyb,GAAGlb,UAAUmu6C,mBAAmB,SAASzu6C,GAAG,OAAOA,EAAEg84C,UAAU,EAAExg4C,GAAGlb,UAAU8jY,gBAAgB,SAASrkY,GAAG,IAAIyB,EAAE,CAACzB,EAAE8E,EAAE9E,EAAE6D,EAAE,EAAE,GAAG1C,EAAE,CAACnB,EAAE8E,EAAE9E,EAAE6D,EAAE,EAAE,GAAG5D,EAAEukvC,cAAc/ivC,EAAEA,EAAEZ,KAAKiu6C,oBAAoB7u6C,EAAEukvC,cAAcrjvC,EAAEA,EAAEN,KAAKiu6C,oBAAoB,IAAIlu6C,EAAEa,EAAE,GAAGI,EAAEV,EAAE,GAAGjB,EAAEuB,EAAE,GAAGb,EAAEe,EAAER,EAAE,GAAGU,EAAEwB,EAAE5B,EAAE,GAAGb,EAAEc,EAAEP,EAAE,GAAGU,EAAEqB,EAAEG,IAAI3B,EAAE,GAAG,EAAE2B,IAAI3B,EAAE2B,GAAG,OAAO,IAAIpD,EAAE2i5C,mBAAmB3i5C,EAAE2qJ,OAAOnpJ,EAAE,GAAGb,EAAEO,EAAE,GAAGU,EAAEqB,GAAGrC,KAAKyrW,UAAUrsW,EAAE2qJ,OAAO1qJ,EAAEyB,EAAEuB,GAAGrC,KAAKyrW,UAAU,EAAE7wV,GAAGlb,UAAUqu6C,gBAAgB,SAAS5u6C,GAAG,IAAIyB,EAAE,CAACzB,EAAE8E,EAAEjE,KAAKyrW,UAAUtsW,EAAE6D,EAAEhD,KAAKyrW,UAAU,EAAE,GAAG,OAAOrsW,EAAEukvC,cAAc/ivC,EAAEA,EAAEZ,KAAKku6C,aAAa,IAAI9u6C,EAAEoqC,MAAM5oC,EAAE,GAAGA,EAAE,GAAGA,EAAE,GAAGA,EAAE,GAAG,EAAEga,GAAGlb,UAAUk/H,UAAU,WAAW,OAAO,IAAKx/H,EAAE0i5C,cAAcz4/B,OAAOrpZ,KAAKgu6C,cAAc,IAAI5u6C,EAAEoqC,MAAM,EAAE,KAAK6/W,OAAOrpZ,KAAKgu6C,cAAc,IAAI5u6C,EAAEoqC,MAAMxpC,KAAK++B,MAAM,KAAKsqX,OAAOrpZ,KAAKgu6C,cAAc,IAAI5u6C,EAAEoqC,MAAMxpC,KAAK++B,MAAM/+B,KAAKg/B,UAAUqqX,OAAOrpZ,KAAKgu6C,cAAc,IAAI5u6C,EAAEoqC,MAAM,EAAExpC,KAAKg/B,SAAS,EAAEpkB,GAAGlb,UAAUyu6C,aAAa,WAAW,OAAOnu6C,KAAK6pT,UAAU,IAAI7pT,KAAK6pT,SAASxpT,QAAQL,KAAKou6C,UAAU,IAAIpu6C,KAAKou6C,SAAS/t6C,OAAO,IAAIjB,EAAE0i5C,aAAa,CAAC9h5C,KAAKou6C,SAAS,GAAGpu6C,KAAK6pT,SAAS,IAAI,CAAC7pT,KAAKou6C,SAAS,GAAGpu6C,KAAK6pT,SAAS,KAAK,IAAI,EAAEjvS,GAAGlb,UAAU+s6C,aAAa,SAASrt6C,GAAGA,GAAGY,KAAKou6C,SAAS,CAAChv6C,EAAEo74C,UAAUp74C,EAAEu74C,WAAW364C,KAAK6pT,SAAS,CAACzqT,EAAEw74C,WAAWx74C,EAAEq74C,YAAYz64C,KAAKot6C,eAAept6C,KAAKou6C,SAAS,KAAKpu6C,KAAK6pT,SAAS,EAAE7pT,KAAKqs6C,iBAAiBrs6C,KAAKqs6C,kBAAmB,EAAEzx5C,GAAGlb,UAAU2x5C,mBAAmB,SAASly5C,EAAEyB,QAAG,IAASA,IAAIA,GAAE,GAAI,IAAIN,EAAEnB,EAAE0lB,IAAI9kB,EAAEa,EAAEZ,KAAK8s6C,uBAAuB9s6C,KAAK6s6C,gBAAgB,GAAG9s6C,EAAEO,GAAG,OAAOP,EAAEO,GAAG,IAAIU,EAAE7B,EAAE443C,UAAU143C,EAAEW,KAAKyrW,UAAUzrW,KAAK05mC,UAAU14mC,EAAE2E,GAAG7E,EAAEE,EAAEiD,EAAEpB,KAAK6yF,IAAI,EAAE10F,EAAE2E,GAAGxG,EAAEyY,KAAKpV,EAAEpD,EAAEorL,SAAS,IAAIvqK,aAAa,KAAK,OAAO7gB,EAAEg6H,UAAU52H,EAAEA,EAAE,CAAC1B,EAAEzB,EAAE2B,EAAEgC,EAAE3D,EAAE,IAAID,EAAE0iG,MAAMt/F,EAAEA,EAAE,CAACnD,EAAED,EAAEii5C,OAAOhi5C,EAAED,EAAEii5C,OAAO,IAAIji5C,EAAEooN,SAAShlN,EAAE5B,EAAEZ,KAAKqu6C,kBAAkBru6C,KAAKsu6C,WAAW9r6C,GAAGzC,EAAEO,GAAG,IAAI0f,aAAaxd,GAAGzC,EAAEO,EAAE,EAAEsa,GAAGlb,UAAU4q6C,kBAAkB,WAAW,OAAOtq6C,KAAKuu6C,eAAexs6C,OAAO,EAAE6Y,GAAGlb,UAAU0t6C,WAAW,WAAW,GAAGpt6C,KAAKi/B,QAAQj/B,KAAK++B,OAAO/+B,KAAKg/B,SAASh/B,KAAKwu6C,cAAc,CAACxu6C,KAAKwu6C,eAAc,EAAG,IAAIrv6C,EAAEyB,EAAEN,EAAEP,EAAEiB,GAAG,GAAG3B,EAAE,GAAGyB,GAAG,IAAI0B,EAAE,IAAI3B,EAAEb,KAAK4kB,KAAKviB,EAAErC,KAAK2s6C,YAAY,GAAG3s6C,KAAK6pT,SAAS,CAAC,IAAIjnT,EAAE5C,KAAK6pT,SAAS7oT,EAAE5B,EAAE8m5C,iBAAiBtj5C,EAAE,IAAI5C,KAAKyrW,UAAUtsW,GAAGE,EAAED,EAAE8m5C,iBAAiBtj5C,EAAE,IAAI5C,KAAKyrW,WAAWzqW,EAAEH,EAAEmC,EAAEnC,EAAEmC,GAAG3D,EAAE2B,GAAG,CAAE,CAAC,GAAGhB,KAAKou6C,SAAS,CAAC,IAAItr6C,EAAE9C,KAAKou6C,SAAStt6C,EAAE1B,EAAE6m5C,iBAAiBnj5C,EAAE,IAAI9C,KAAKyrW,UAAU7qW,GAAG4B,EAAEpD,EAAE6m5C,iBAAiBnj5C,EAAE,IAAI9C,KAAKyrW,WAAW3qW,EAAED,EAAEoD,EAAEpD,EAAEoD,GAAGzB,EAAE1B,GAAG,CAAE,CAAC,IAAI6B,EAAE3C,KAAKm1I,MAAMvxI,EAAEf,KAAK8K,IAAI/M,GAAG,EAAEzB,GAAG,GAAG,GAAGyE,EAAE,OAAO5D,KAAKi/B,OAAOj/B,KAAK0pH,UAAU,IAAItqH,EAAEoqC,MAAM5oC,GAAG4B,EAAE1B,GAAG,EAAE6B,EAAEsB,EAAE9E,GAAGE,EAAE2B,GAAG,EAAE2B,EAAEK,IAAIhD,KAAK2/B,MAAM3/B,KAAKut6C,UAAU3p6C,GAAG5D,KAAK2s6C,YAAYtq6C,OAAOrC,KAAKwu6C,eAAc,GAAI,GAAGxu6C,KAAK6pT,SAAS,CAAC,IAAInnT,EAAEC,EAAEK,EAAEI,EAAEvC,EAAEmC,EAAE,EAAEN,EAAEU,EAAEpC,IAAIjB,EAAEiB,EAAEoC,GAAGV,EAAEU,EAAE/D,IAAIU,EAAEV,EAAE+D,EAAG,CAAC,GAAGpD,KAAKou6C,SAAS,CAAC,IAAIjs6C,EAAEQ,EAAEsB,EAAEhB,EAAEpC,EAAEoD,EAAE,EAAE9B,EAAEc,EAAEnC,IAAIR,EAAEQ,EAAEmC,GAAGd,EAAEc,EAAET,IAAIlC,EAAEkC,EAAES,EAAG,MAAC,IAAS3C,QAAG,IAASP,IAAIC,KAAKi/B,OAAOj/B,KAAK0pH,UAAU,IAAItqH,EAAEoqC,WAAM,IAASlpC,EAAEA,EAAEqC,EAAEsB,OAAE,IAASlE,EAAEA,EAAE4C,EAAEK,KAAKhD,KAAK2s6C,YAAYtq6C,EAAErC,KAAKwu6C,eAAc,CAAG,CAAC,EAAE5z5C,GAAGlb,UAAUwt6C,cAAc,WAAW,GAAGlt6C,KAAKg/B,OAAO,CAAC,IAAI7/B,EAAEa,KAAKgt6C,aAAaht6C,KAAK8n4C,uBAAuB,GAAGjl4C,KAAKinC,IAAI9pC,KAAK0s6C,KAAK,GAAG1s6C,KAAKg/B,OAAO,IAAIp+B,EAAEiC,KAAKsmC,GAAG,EAAEnpC,KAAK+45C,OAAOz45C,EAAEN,KAAK0s6C,MAAM,GAAGvt6C,EAAE6D,EAAEhD,KAAKg/B,QAAQj/B,EAAE8C,KAAK4wH,IAAInzH,GAAGN,KAAK8n4C,uBAAuBjl4C,KAAK4wH,IAAIr0H,EAAEs5V,MAAM71V,KAAKsmC,GAAGvoC,EAAEN,EAAE,IAAIuC,KAAKsmC,GAAG,MAAMnoC,EAAEhB,KAAKm1I,MAAM91I,EAAE2B,EAAEiD,EAAEnD,EAAEE,EAAEgC,EAAER,EAAE,MAAMK,KAAKuxH,IAAIvxH,KAAKsmC,GAAG,EAAEnpC,KAAK+45C,QAAQh55C,EAAEC,KAAK8n4C,wBAAwBjn4C,EAAEb,KAAKg/B,OAAO,GAAG38B,EAAE,IAAI4d,aAAa,IAAI7gB,EAAE6pK,YAAY5mK,EAAErC,KAAK0s6C,KAAK1s6C,KAAK++B,MAAM/+B,KAAKg/B,OAAOn+B,EAAE2B,GAAGH,EAAE,GAAG,GAAGlD,EAAE8E,EAAEjE,KAAK++B,MAAM18B,EAAE,GAAG,EAAElD,EAAE6D,EAAEhD,KAAKg/B,OAAO5/B,EAAE0iG,MAAMz/F,EAAEA,EAAE,CAAC,GAAG,EAAE,IAAIjD,EAAEg6H,UAAU/2H,EAAEA,EAAE,CAAC,EAAE,GAAGrC,KAAK8n4C,yBAAyB1o4C,EAAE03H,QAAQz0H,EAAEA,EAAErC,KAAK+45C,QAAQ355C,EAAE23H,QAAQ10H,EAAEA,EAAErC,KAAK2uO,OAAOvvO,EAAEg6H,UAAU/2H,EAAEA,EAAE,EAAEhD,GAAGyB,EAAE,IAAId,KAAKuu6C,eAAenv6C,EAAE0iG,MAAM,GAAGz/F,EAAE,CAACrC,KAAKyrW,UAAUzrW,KAAKyrW,UAAUzrW,KAAKyrW,YAAYrsW,EAAE0iG,MAAMz/F,EAAEA,EAAE,CAAC,EAAE,EAAEjD,EAAE+m5C,sBAAsB,EAAEnm5C,KAAKi/B,OAAOC,KAAKl/B,KAAKyrW,UAAU,IAAIzrW,KAAKsu6C,WAAWjs6C,EAAErC,KAAKo65C,cAAch75C,EAAEw/J,OAAO,GAAG5+J,KAAKsu6C,YAAY,IAAI1r6C,EAAE5C,KAAK++B,MAAM,EAAE,EAAEj8B,EAAE9C,KAAKg/B,OAAO,EAAE,EAAEr8B,EAAEE,KAAKuxH,IAAIp0H,KAAK2uO,OAAO/qO,EAAEf,KAAK4wH,IAAIzzH,KAAK2uO,OAAOjsO,EAAErD,EAAEwD,KAAKogD,MAAM5jD,GAAGsD,EAAEC,EAAEgB,EAAEd,EAAEM,EAAEtC,EAAE+B,KAAKogD,MAAMniD,GAAG6B,EAAEG,EAAEc,EAAEhB,EAAET,EAAE,IAAI8d,aAAa5d,GAAG,GAAGjD,EAAEg6H,UAAUj3H,EAAEA,EAAE,CAACO,EAAE,GAAGA,EAAE,EAAEA,EAAEU,EAAE,GAAGA,EAAE,EAAEA,EAAE,IAAIpD,KAAKqu6C,kBAAkBls6C,EAAEE,EAAEjD,EAAEc,SAASd,EAAE0iG,MAAMz/F,EAAEA,EAAE,CAACrC,KAAK++B,MAAM,GAAG/+B,KAAKg/B,OAAO,EAAE,IAAI5/B,EAAEg6H,UAAU/2H,EAAEA,EAAE,CAAC,GAAG,EAAE,IAAIrC,KAAKy35C,iBAAiBp15C,EAAEA,EAAEjD,EAAEc,SAASd,EAAE0iG,MAAMz/F,EAAEA,EAAE,CAAC,GAAG,EAAE,IAAIjD,EAAEg6H,UAAU/2H,EAAEA,EAAE,EAAE,GAAG,EAAE,IAAIjD,EAAE0iG,MAAMz/F,EAAEA,EAAE,CAAC,EAAErC,KAAK++B,MAAM,EAAE/+B,KAAKg/B,OAAO,IAAIh/B,KAAK035C,cAAcr15C,EAAErC,KAAKku6C,YAAY9u6C,EAAEooN,SAAS,IAAIvnM,aAAa,IAAIjgB,KAAKy35C,iBAAiBz35C,KAAKsu6C,cAAcjs6C,EAAEjD,EAAEw/J,OAAO,IAAI3+I,aAAa,IAAIjgB,KAAKku6C,cAAc,MAAM,IAAI1m5C,MAAM,2BAA2BxnB,KAAKiu6C,mBAAmB5r6C,EAAErC,KAAK6s6C,gBAAgB,CAAC,EAAE7s6C,KAAK8s6C,uBAAuB,CAAC,CAAE,CAAC,EAAEly5C,GAAGlb,UAAU4x5C,oBAAoB,WAAW,IAAItx5C,KAAKiu6C,mBAAmB,OAAO,EAAE,IAAI9u6C,EAAEa,KAAKwjY,gBAAgB,IAAIpkY,EAAEoqC,MAAM,EAAE,IAAI5oC,EAAE,CAACzB,EAAE8E,EAAEjE,KAAKyrW,UAAUtsW,EAAE6D,EAAEhD,KAAKyrW,UAAU,EAAE,GAAG,OAAOrsW,EAAEukvC,cAAc/ivC,EAAEA,EAAEZ,KAAKku6C,aAAa,GAAGlu6C,KAAK8n4C,sBAAsB,EAAElt3C,GAAGlb,UAAU+u6C,eAAe,WAAW,IAAItv6C,EAAE0D,KAAKinC,IAAI9pC,KAAK+45C,SAAS/45C,KAAK8n4C,wBAAwB,GAAG,OAAO9n4C,KAAKwr6C,YAAYrm5C,IAAI,IAAI/lB,EAAEoqC,MAAM,EAAErqC,GAAG,EAAEyb,GAAGlb,UAAUq25C,uBAAuB,SAAS525C,GAAG,IAAIyB,EAAEZ,KAAKyu6C,iBAAiB,GAAG,IAAItv6C,EAAEkB,OAAO,MAAO,CAAClB,EAAE,GAAGyB,GAAG,IAAI,IAAIN,EAAEM,EAAEqD,EAAElE,EAAEa,EAAEoC,EAAEhC,EAAEJ,EAAEqD,EAAE5E,EAAEuB,EAAEoC,EAAElC,EAAE,EAAE0B,EAAErD,EAAE2B,EAAE0B,EAAEnC,OAAOS,GAAG,EAAE,CAAC,IAAID,EAAE2B,EAAE1B,GAAGR,EAAEuC,KAAKgL,IAAIvN,EAAEO,EAAEoD,GAAGlE,EAAE8C,KAAKgL,IAAI9N,EAAEc,EAAEmC,GAAGhC,EAAE6B,KAAK8K,IAAI3M,EAAEH,EAAEoD,GAAG5E,EAAEwD,KAAK8K,IAAItO,EAAEwB,EAAEmC,EAAG,CAAC,MAAO,CAAC,IAAI5D,EAAEoqC,MAAMlpC,EAAEP,GAAG,IAAIX,EAAEoqC,MAAMxoC,EAAEjB,GAAG,IAAIX,EAAEoqC,MAAMxoC,EAAE3B,GAAG,IAAID,EAAEoqC,MAAMlpC,EAAEjB,GAAG,IAAID,EAAEoqC,MAAMlpC,EAAEP,GAAG,EAAET,OAAOkU,iBAAiBoH,GAAGlb,UAAU2b,IAAI,IAAIZ,GAAG,SAAStb,GAAG,IAAIyB,EAAEN,EAAEP,EAAEiB,EAAEhB,KAAK0u6C,UAAUvv6C,GAAGmwB,mBAAmBnwB,GAAGC,EAAE+0xC,QAAQ,CAAC,kBAAkB,gBAAgB,eAAen0xC,MAAMA,KAAK2u6C,aAAa/t6C,EAAEZ,KAAK4u6C,uBAAuBvr6C,KAAKrD,MAAMM,GAAE,EAAGP,EAAE,KAAKiB,EAAE,WAAWjB,EAAE,KAAKO,IAAIM,IAAIb,EAAE8lB,WAAW7kB,EAAE,KAAKV,GAAE,EAAI,EAAE,WAAW,OAAOA,GAAE,EAAGP,GAAGiB,IAAIjB,CAAC,EAAG,EAAE0a,GAAG/a,UAAUmv6C,MAAM,SAAS1v6C,GAAG,OAAOa,KAAKilM,KAAK9lM,EAAEC,EAAE8C,OAAOyqB,iBAAiB,aAAa3sB,KAAK8u6C,eAAc,GAAI9u6C,KAAKilM,KAAKr0L,GAAG,UAAU5Q,KAAK2u6C,aAAa3u6C,IAAI,EAAEya,GAAG/a,UAAUmzB,OAAO,WAAW,OAAOzzB,EAAE8C,OAAOmnB,oBAAoB,aAAarpB,KAAK8u6C,eAAc,GAAI9u6C,KAAKilM,KAAKj3J,IAAI,UAAUhuC,KAAK2u6C,aAAaji5C,aAAa1sB,KAAK2u6C,sBAAsB3u6C,KAAKilM,KAAKjlM,IAAI,EAAEya,GAAG/a,UAAUqv6C,cAAc,SAAS5v6C,GAAG,IAAIyB,EAAEZ,KAAKilM,KAAK7kK,YAAY9/B,EAAEuC,KAAKogD,MAAM,IAAIjjD,KAAKilM,KAAK5kK,WAAW,IAAItgC,EAAE8C,KAAKuK,MAAM9M,EAAEuC,KAAKsvN,IAAItvN,KAAKwnB,IAAI,IAAI,IAAI,KAAKxnB,KAAK26xB,MAAMx8xB,EAAE6B,KAAK6yF,IAAI,GAAG31F,GAAGV,EAAEwD,KAAKogD,MAAMriD,EAAEw+B,IAAIp+B,GAAGA,EAAEF,EAAE+B,KAAKogD,MAAMriD,EAAEs+B,IAAIl+B,GAAGA,EAAEwB,EAAExC,KAAKilM,KAAKkuL,aAAatyX,EAAEb,KAAKilM,KAAK+puC,WAAW3s6C,EAAE,GAAG,GAAGA,GAAGlD,EAAE,IAAIE,EAAE,IAAIyB,EAAE,IAAIR,EAAEA,EAAE,IAAIQ,EAAE,IAAIzB,GAAGmD,GAAG3B,KAAKwB,GAAG,IAAIQ,KAAKogD,MAAM,GAAGzgD,GAAG,IAAI3B,IAAIwB,GAAG,IAAIQ,KAAKogD,MAAMpiD,IAAIb,KAAK0u6C,UAAU,CAAC,IAAI9r6C,EAAE5C,KAAK0u6C,UAAU5r6C,GAAE,EAAGH,EAAEvD,EAAE8C,OAAO60B,SAAS2wE,KAAK3lG,MAAM,GAAG6C,MAAM,KAAKyqB,KAAI,SAAUjwB,GAAG,IAAID,EAAEC,EAAEwF,MAAM,KAAK,GAAG,OAAOzF,IAAIyD,GAAGE,GAAE,EAAG3D,EAAE,IAAIkD,GAAGjD,CAAE,IAAGytB,QAAO,SAAUztB,GAAG,OAAOA,CAAE,IAAG,OAAO0D,GAAGH,EAAEd,KAAKe,EAAE,IAAIP,GAAG,IAAIM,EAAEkK,KAAK,IAAI,CAAC,MAAO,IAAIxK,CAAC,EAAEoY,GAAG/a,UAAUuv6C,gBAAgB,WAAW,IAAI9v6C,EAAEyB,EAAEZ,KAAKM,EAAElB,EAAE8C,OAAO60B,SAAS2wE,KAAKj7F,QAAQ,IAAI,IAAI,OAAOzM,KAAK0u6C,WAAWpu6C,EAAEsE,MAAM,KAAKyqB,KAAI,SAAUjwB,GAAG,OAAOA,EAAEwF,MAAM,IAAK,IAAGsgB,SAAQ,SAAU9lB,GAAGA,EAAE,KAAKwB,EAAE8t6C,YAAYvv6C,EAAEC,EAAI,KAAID,GAAGA,EAAE,IAAI,IAAIyF,MAAM,MAAMtE,EAAEsE,MAAM,IAAI,EAAE6V,GAAG/a,UAAUov6C,cAAc,WAAW,IAAI1v6C,EAAEY,KAAKiv6C,kBAAkB,GAAG7v6C,EAAEiB,QAAQ,IAAIjB,EAAEuoC,MAAK,SAAUvoC,GAAG,OAAOktC,MAAMltC,EAAG,IAAG,CAAC,IAAID,EAAEa,KAAKilM,KAAKxhF,WAAWsxN,aAAa/0U,KAAKilM,KAAKiquC,gBAAgBn6lC,cAAc31U,EAAE,IAAI,GAAGY,KAAKilM,KAAKkuL,aAAa,OAAOnzX,KAAKilM,KAAKy3qC,OAAO,CAACz90C,OAAO,EAAE7/B,EAAE,IAAIA,EAAE,IAAIugC,MAAMvgC,EAAE,GAAGogC,QAAQrgC,EAAEugC,QAAQtgC,EAAE,IAAI,MAAK,CAAE,CAAC,OAAO,CAAE,EAAEqb,GAAG/a,UAAUkv6C,uBAAuB,WAAW,IAAIzv6C,EAAEC,EAAE8C,OAAO60B,SAASkE,KAAKxuB,QAAQ,UAAUzM,KAAK+u6C,iBAAiB,IAAI3v6C,EAAE8C,OAAO0wF,QAAQwiV,aAAah2a,EAAE8C,OAAO0wF,QAAQjnF,MAAM,KAAKxM,EAAG,CAAC,MAAMC,GAAG,CAAC,EAAE,IAAIoc,GAAG,CAAC2z5C,UAAU,GAAGtkzC,OAAOzrH,EAAE0k5C,OAAO,EAAE,EAAE,GAAG,IAAIzp4C,GAAGjb,EAAEiqZ,OAAO,CAAC+lhC,aAAa,KAAKC,SAAS,MAAM7z5C,IAAIX,GAAGzb,EAAEiqZ,OAAO,CAAC+lhC,aAAa,GAAGC,SAAS,MAAM7z5C,IAAIa,GAAGjd,EAAEiqZ,OAAO,CAAC+lhC,aAAa,IAAIC,SAAS,KAAK7z5C,IAAIQ,GAAG5c,EAAEiqZ,OAAO,CAAC+lhC,aAAa,IAAIC,SAAS,IAAI7z5C,IAAID,GAAG,SAASnc,GAAGY,KAAKilM,KAAK7lM,EAAEY,KAAKglB,OAAQ,EAAE,SAAS1I,GAAGld,EAAED,KAAKC,EAAEimD,UAAUjmD,EAAEimD,SAASlmD,EAAEkmD,YAAYjmD,EAAEimD,SAASlmD,EAAEkmD,SAASjmD,EAAEyrH,OAAO1rH,EAAE0rH,OAAQ,CAAC,SAAS7vG,GAAG7b,EAAEyB,EAAEN,GAAG,IAAIP,EAAEO,EAAE+u6C,SAASru6C,EAAEV,EAAE6u6C,UAAU9v6C,EAAEiB,EAAE8u6C,aAAatu6C,EAAE1B,EAAEs5V,MAAMv5V,EAAE6B,GAAGJ,EAAE,MAAMb,EAAEA,GAAGyC,EAAEK,KAAKmjH,IAAIllH,IAAIzB,EAAE2B,GAAG,MAAO,CAAC6pH,OAAOvqH,EAAEuqH,OAAOxlE,SAAS,IAAI7iD,EAAEqwnB,OAAO/xnB,GAAG0B,EAAE,GAAG,CAAC+Y,GAAG7b,UAAUslB,MAAM,WAAWhlB,KAAKsv6C,eAAe,EAAG,EAAE/z5C,GAAG7b,UAAUm+hC,OAAO,SAAS1+hC,GAAGa,KAAKuv6C,sBAAsBvv6C,KAAKsv6C,eAAezt6C,KAAK,CAACgkD,KAAKzmD,EAAEghS,QAAQ30Q,MAAMg/F,SAAStrH,GAAI,EAAEoc,GAAG7b,UAAU6v6C,oBAAoB,WAAW,IAAI,IAAIpw6C,EAAEa,KAAKsv6C,eAAe1u6C,EAAExB,EAAEghS,QAAQ30Q,MAAMtsB,EAAEkB,OAAO,GAAGO,EAAEzB,EAAE,GAAG0mD,KAAK,KAAK1mD,EAAEg/C,OAAQ,EAAE5iC,GAAG7b,UAAU8v6C,WAAW,SAASrw6C,GAAG,GAAGa,KAAKuv6C,wBAAwBvv6C,KAAKsv6C,eAAejv6C,OAAO,GAAG,CAAC,IAAI,IAAIO,EAAE,CAAC++B,KAAK,EAAEH,QAAQ,EAAEE,MAAM,EAAEulF,IAAI,IAAI7lH,EAAEoqC,MAAM,EAAE,GAAGim4C,iBAAY,EAAOxpzC,YAAO,GAAQ3lH,EAAE,EAAEP,EAAEC,KAAKsv6C,eAAehv6C,EAAEP,EAAEM,OAAOC,GAAG,EAAE,CAAC,IAAIU,EAAEjB,EAAEO,GAAGmqH,SAAS7pH,EAAE++B,MAAM3+B,EAAEs4mC,WAAW,EAAE14mC,EAAE4+B,SAASx+B,EAAE0u6C,cAAc,EAAE9u6C,EAAE8+B,OAAO1+B,EAAE2u6C,YAAY,EAAE3u6C,EAAE4u6C,UAAUhv6C,EAAEqkH,IAAIgiB,KAAKjmI,EAAE4u6C,UAAU5u6C,EAAEilH,SAASrlH,EAAEqlH,OAAOjlH,EAAEilH,QAAQjlH,EAAEyu6C,cAAc7u6C,EAAE6u6C,YAAYzu6C,EAAEyu6C,YAAa,CAAC,IAAIpw6C,EAAEW,KAAKsv6C,eAAetv6C,KAAKsv6C,eAAejv6C,OAAO,GAAGwlD,KAAK7lD,KAAKsv6C,eAAe,GAAGzp3C,KAAK/kD,EAAE,CAAC,EAAE,GAAGF,EAAEqkH,IAAIihE,MAAM,CAAC,IAAI1jL,EAAEwY,GAAGpa,EAAEqkH,IAAIihE,MAAM7mL,EAAED,EAAEiqZ,OAAO,CAAC,EAAEhvY,GAAGlb,GAAG,CAAC,IAAI2B,EAAEqhD,OAAOvhD,EAAEqkH,IAAI8pwC,KAAKvs3C,EAAEqwnB,OAAOjynB,EAAEqkH,IAAIihE,OAAOplL,EAAEm+B,OAAOj/B,KAAKilM,KAAKriE,UAAU3jG,OAAO3iB,GAAGxb,EAAE0B,EAAG,CAAC,GAAG5B,EAAE++B,KAAK,CAAC,IAAI9+B,EAAEma,GAAGpa,EAAE++B,KAAKtgC,EAAEwb,IAAI/Z,EAAE6+B,KAAK3/B,KAAKilM,KAAKriE,UAAUjjG,KAAK9+B,EAAEgynB,OAAOv2mB,GAAGxb,EAAED,EAAG,CAAC,GAAGD,EAAE4+B,QAAQ,CAAC,IAAIn9B,EAAE2Y,GAAGpa,EAAE4+B,QAAQngC,EAAEgd,IAAIvb,EAAE0+B,QAAQx/B,KAAKilM,KAAKriE,UAAUpjG,QAAQpgC,EAAEs5V,MAAMr2V,EAAEwwnB,QAAQ,IAAI,KAAKv2mB,GAAGxb,EAAEuB,EAAG,CAAC,GAAGzB,EAAE8+B,MAAM,CAAC,IAAI98B,EAAEoY,GAAGpa,EAAE8+B,MAAMrgC,EAAE2c,IAAIlb,EAAE4+B,MAAM1/B,KAAKilM,KAAKriE,UAAUljG,MAAM98B,EAAEiwnB,OAAOv2mB,GAAGxb,EAAE8B,EAAG,CAAC,GAAG9B,EAAE6+B,MAAM7+B,EAAE0+B,QAAQ,CAAC,IAAI18B,OAAE,IAASlC,EAAE6u6C,YAAY7u6C,EAAEqlH,OAAOrlH,EAAE6u6C,YAAY3u6C,EAAEmlH,OAAOnjH,EAAE9C,KAAKilM,KAAKv7E,UAAU5mH,GAAG9C,KAAKilM,KAAK7kK,WAAY,CAAC,OAAOpgC,KAAKglB,QAAQ5lB,EAAEiqZ,OAAOvoZ,EAAE,CAAC+u6C,aAAY,GAAI,CAAC,EAAE,IAAI305C,GAAG,SAAS/b,GAAG,SAASmB,EAAEA,EAAEP,EAAEiB,EAAE3B,QAAG,IAASA,IAAIA,EAAE,CAAC,GAAG,IAAIyB,EAAEF,EAAE8ysC,SAAS3zsC,EAAE+v6C,qBAAqB9u6C,GAAGwB,EAAEzC,EAAE2pH,UAAU5oH,GAAG3B,EAAES,KAAKI,KAAKM,EAAElB,EAAEiqZ,OAAO,CAACl0Q,MAAMr0I,EAAEg+K,OAAOt8K,EAAEut6C,cAAc/u6C,GAAG3B,IAAIW,KAAKgw6C,mBAAkB,EAAGhw6C,KAAK8P,OAAO/P,CAAE,CAACZ,IAAImB,EAAEd,UAAUL,IAAImB,EAAEZ,UAAUJ,OAAOY,OAAOf,GAAGA,EAAEO,YAAYO,YAAYK,EAAE,IAAIP,EAAE,CAACupB,iBAAiB,CAACxlB,cAAa,IAAK,OAAOxD,EAAEZ,UAAUkmH,eAAe,WAAW5lH,KAAKgw6C,mBAAkB,CAAG,EAAEjw6C,EAAEupB,iBAAiBnmB,IAAI,WAAW,OAAOnD,KAAKgw6C,iBAAiB,EAAE1w6C,OAAOkU,iBAAiBlT,EAAEZ,UAAUK,GAAGO,CAAC,CAAhgB,CAAkgBlB,EAAEuqB,OAAOpP,GAAG,SAASpb,GAAG,SAASmB,EAAEA,EAAEP,EAAEiB,GAAG,IAAI3B,EAAE,aAAaiB,EAAEU,EAAE63kB,eAAe73kB,EAAEqnjB,QAAQvnjB,EAAEF,EAAEur5C,SAASps5C,EAAE+v6C,qBAAqBzw6C,GAAGmD,EAAE1B,EAAEuuB,KAAI,SAAUjwB,GAAG,OAAOW,EAAE2pH,UAAUtqH,EAAG,IAAGyB,EAAEC,EAAE4yB,QAAO,SAAUt0B,EAAED,EAAEyB,EAAEN,GAAG,OAAOlB,EAAE+lB,IAAIhmB,EAAEmwN,IAAIhvN,EAAED,QAAS,GAAE,IAAIjB,EAAEoqC,MAAM,EAAE,IAAInnC,EAAEtC,EAAE2pH,UAAU7oH,GAAG1B,EAAES,KAAKI,KAAKM,EAAE,CAACgrC,OAAOxqC,EAAEq0I,MAAMt0I,EAAEov6C,QAAQzt6C,EAAEs8K,OAAOz8K,EAAE0t6C,cAAc/u6C,IAAIhB,KAAKgw6C,mBAAkB,CAAG,CAAC7w6C,IAAImB,EAAEd,UAAUL,IAAImB,EAAEZ,UAAUJ,OAAOY,OAAOf,GAAGA,EAAEO,YAAYO,YAAYK,EAAE,IAAIP,EAAE,CAACupB,iBAAiB,CAACxlB,cAAa,IAAK,OAAOxD,EAAEZ,UAAUkmH,eAAe,WAAW5lH,KAAKgw6C,mBAAkB,CAAG,EAAEjw6C,EAAEupB,iBAAiBnmB,IAAI,WAAW,OAAOnD,KAAKgw6C,iBAAiB,EAAE1w6C,OAAOkU,iBAAiBlT,EAAEZ,UAAUK,GAAGO,CAAC,CAA9oB,CAAgpBlB,EAAEuqB,OAAOpN,GAAG,SAASnd,GAAG,SAASD,EAAEA,EAAEyB,EAAEN,GAAGlB,EAAEQ,KAAKI,KAAKb,EAAE,CAAC4w6C,cAAczv6C,IAAIN,KAAKgw6C,mBAAkB,CAAG,CAAC5w6C,IAAID,EAAEK,UAAUJ,IAAID,EAAEO,UAAUJ,OAAOY,OAAOd,GAAGA,EAAEM,YAAYO,YAAYd,EAAE,IAAIyB,EAAE,CAAC0oB,iBAAiB,CAACxlB,cAAa,IAAK,OAAO3E,EAAEO,UAAUkmH,eAAe,WAAW5lH,KAAKgw6C,mBAAkB,CAAG,EAAEpv6C,EAAE0oB,iBAAiBnmB,IAAI,WAAW,OAAOnD,KAAKgw6C,iBAAiB,EAAE1w6C,OAAOkU,iBAAiBrU,EAAEO,UAAUkB,GAAGzB,CAAC,CAApY,CAAsYC,EAAEuqB,OAAOjP,GAAG,SAAStb,EAAED,GAAGa,KAAKilM,KAAK7lM,EAAEY,KAAKkw6C,gBAAgB/w6C,EAAEgx6C,cAAe,EAAEz15C,GAAGhb,UAAUuhE,MAAM,kBAAkBjhE,KAAKow6C,aAAc,EAAE115C,GAAGhb,UAAUqu9B,MAAM,SAAS3u9B,GAAG,OAAOY,KAAKqw6C,iBAAiB,IAAI9z5C,GAAGnd,EAAEmN,KAAKvM,KAAKilM,KAAK7lM,GAAG,EAAEsb,GAAGhb,UAAU8t9B,UAAU,SAASpu9B,EAAED,GAAG,OAAOa,KAAKow6C,cAAcjx6C,EAAEa,KAAKqw6C,iBAAiB,IAAIn15C,GAAG9b,EAAEmN,KAAKvM,KAAKilM,KAAK7lM,GAAG,EAAEsb,GAAGhb,UAAUku9B,QAAQ,SAASxu9B,GAAGY,KAAKilM,KAAKqurC,KAAK,IAAIp42C,GAAG9b,EAAEmN,KAAKvM,KAAKilM,KAAK7lM,GAAI,EAAEsb,GAAGhb,UAAUwyF,MAAM,SAAS9yF,EAAED,GAAGa,KAAKow6C,eAAepw6C,KAAKow6C,cAAcr2kC,KAAK56V,IAAIa,KAAKkw6C,iBAAiBlw6C,KAAKilM,KAAKqurC,KAAK,IAAIp42C,GAAG9b,EAAEmN,KAAKvM,KAAKilM,KAAK7lM,GAAI,EAAEsb,GAAGhb,UAAU0mO,SAAS,SAAShnO,GAAG,OAAOY,KAAKqw6C,iBAAiB,IAAIn15C,GAAG9b,EAAEmN,KAAKvM,KAAKilM,KAAK7lM,GAAG,EAAEsb,GAAGhb,UAAUggzC,UAAU,SAAStgzC,GAAGY,KAAKilM,KAAKqurC,KAAK,IAAIp42C,GAAG9b,EAAEmN,KAAKvM,KAAKilM,KAAK7lM,GAAI,EAAEsb,GAAGhb,UAAU4mO,SAAS,SAASlnO,GAAGY,KAAKilM,KAAKqurC,KAAK,IAAIp42C,GAAG9b,EAAEmN,KAAKvM,KAAKilM,KAAK7lM,GAAI,EAAEsb,GAAGhb,UAAUuu9B,WAAW,SAAS7u9B,GAAG,OAAOY,KAAKqw6C,iBAAiB,IAAI915C,GAAGnb,EAAEmN,KAAKvM,KAAKilM,KAAK7lM,GAAG,EAAEsb,GAAGhb,UAAUyu9B,UAAU,SAAS/u9B,GAAGY,KAAKilM,KAAKqurC,KAAK,IAAI/42C,GAAGnb,EAAEmN,KAAKvM,KAAKilM,KAAK7lM,GAAI,EAAEsb,GAAGhb,UAAU0u9B,SAAS,SAAShv9B,GAAGY,KAAKilM,KAAKqurC,KAAK,IAAI/42C,GAAGnb,EAAEmN,KAAKvM,KAAKilM,KAAK7lM,GAAI,EAAEsb,GAAGhb,UAAU6hwC,YAAY,SAASniwC,GAAGY,KAAKilM,KAAKqurC,KAAK,IAAI/42C,GAAGnb,EAAEmN,KAAKvM,KAAKilM,KAAK7lM,GAAI,EAAEsb,GAAGhb,UAAU2w6C,iBAAiB,SAASjx6C,GAAG,GAAGY,KAAKilM,KAAKqurC,KAAKl03C,GAAGA,EAAEkqB,iBAAiB,MAAO,CAAC,CAAC,EAAE5O,GAAGhb,UAAUq1U,UAAU,WAAW,OAAO,CAAE,EAAEr6T,GAAGhb,UAAUoqG,SAAS,WAAW,OAAO,CAAE,EAAEpvF,GAAGhb,UAAUsjB,OAAO,WAAW,EAAEtI,GAAGhb,UAAUoyU,QAAQ,WAAW,EAAE,IAAIl2T,GAAG,SAASxc,GAAGY,KAAKilM,KAAK7lM,CAAE,EAAEwc,GAAGlc,UAAUuhE,MAAM,WAAWjhE,KAAKsw6C,mBAAkB,SAAUtw6C,KAAKuw6C,iBAAkB,EAAE305C,GAAGlc,UAAU2mO,UAAU,SAASjnO,GAAGY,KAAKilM,KAAKqurC,KAAK,IAAIp42C,GAAG9b,EAAEmN,KAAKvM,KAAKilM,KAAK7lM,GAAI,EAAEwc,GAAGlc,UAAU8t9B,UAAU,WAAWxt9B,KAAKsw6C,mBAAkB,CAAG,EAAE105C,GAAGlc,UAAUku9B,QAAQ,WAAW5t9B,KAAKsw6C,mBAAkB,EAAGtw6C,KAAKuw6C,oBAAoBvw6C,KAAKilM,KAAKqurC,KAAK,IAAIp42C,GAAG,cAAclb,KAAKilM,KAAKjlM,KAAKuw6C,2BAA2Bvw6C,KAAKuw6C,kBAAmB,EAAE305C,GAAGlc,UAAU4o2C,YAAY,SAASlp2C,GAAGY,KAAKsw6C,kBAAkBtw6C,KAAKuw6C,kBAAkBnx6C,EAAEY,KAAKilM,KAAKqurC,KAAK,IAAIp42C,GAAG9b,EAAEmN,KAAKvM,KAAKilM,KAAK7lM,IAAIY,KAAKilM,KAAKsurC,QAAQ,gBAAgBn03C,EAAEwmH,gBAAiB,EAAEhqG,GAAGlc,UAAUq1U,UAAU,WAAW,OAAO,CAAE,EAAEn5T,GAAGlc,UAAUoqG,SAAS,WAAW,OAAO,CAAE,EAAEluF,GAAGlc,UAAUsjB,OAAO,WAAW,EAAEpH,GAAGlc,UAAUoyU,QAAQ,WAAW,EAAE,IAAI/1T,GAAG,SAAS3c,EAAED,GAAGa,KAAKilM,KAAK7lM,EAAEY,KAAKww6C,IAAIpx6C,EAAE0w6C,qBAAqB9v6C,KAAKy7vB,WAAWr8vB,EAAEqnO,eAAezmO,KAAKkw6C,gBAAgB/w6C,EAAEgx6C,gBAAgB,CAAE,EAAE,SAASr05C,GAAG1c,EAAED,GAAG,IAAI,IAAIyB,EAAE,CAAC,EAAEN,EAAE,EAAEA,EAAElB,EAAEiB,OAAOC,IAAIM,EAAExB,EAAEkB,GAAGq3E,YAAYx4E,EAAEmB,GAAG,OAAOM,CAAC,CAACmb,GAAGrc,UAAUq1U,UAAU,WAAW,QAAS/0U,KAAK07vB,QAAQ,EAAE3/uB,GAAGrc,UAAUoqG,SAAS,WAAW,QAAS9pG,KAAKsizC,OAAO,EAAEvmyC,GAAGrc,UAAUsjB,OAAO,WAAWhjB,KAAK+0U,cAAc/0U,KAAK07vB,UAAS,EAAI,EAAE3/uB,GAAGrc,UAAUoyU,QAAQ,WAAW9xU,KAAK+0U,cAAc/0U,KAAK07vB,UAAS,EAAI,EAAE3/uB,GAAGrc,UAAU8t9B,UAAU,SAASpu9B,EAAED,GAAGa,KAAK+0U,aAAa31U,EAAE0jH,UAAU,IAAI1jH,EAAEs4W,SAAS92W,EAAEmr5C,cAAc/r5C,KAAKyw6C,UAAUzw6C,KAAK0w6C,SAASvx6C,EAAEa,KAAKsizC,SAAQ,EAAI,EAAEvmyC,GAAGrc,UAAUix6C,gBAAgB,SAASvx6C,EAAED,GAAG,GAAGa,KAAKsizC,QAAQ,CAAC,IAAIhizC,EAAEnB,EAAE,KAAKa,KAAK0w6C,SAASn+xC,OAAOjyI,KAAKN,KAAK4w6C,MAAMtw6C,EAAEy5V,KAAK/5V,KAAKyw6C,WAAWzw6C,KAAKkw6C,iBAAiB,CAAC,IAAInw6C,EAAEC,KAAKyw6C,UAAUzw6C,KAAK0w6C,SAASpw6C,EAAEN,KAAK4w6C,OAAO5w6C,KAAK4w6C,KAAKhw6C,EAAEV,OAAO,MAAM,mBAAmBF,KAAKy7vB,YAAYz7vB,KAAKy7vB,WAAW9rqB,UAAUxqE,IAAI,sBAAsBnlB,KAAK6w6C,WAAW,eAAezx6C,IAAI,IAAI4B,EAAE6B,KAAKgL,IAAI9N,EAAEkE,EAAE3D,EAAE2D,GAAG5E,EAAEwD,KAAK8K,IAAI5N,EAAEkE,EAAE3D,EAAE2D,GAAGnD,EAAE+B,KAAKgL,IAAI9N,EAAEiD,EAAE1C,EAAE0C,GAAGR,EAAEK,KAAK8K,IAAI5N,EAAEiD,EAAE1C,EAAE0C,GAAGpC,EAAE+nnB,aAAa3onB,KAAK4w6C,KAAK,aAAa5v6C,EAAE,MAAMF,EAAE,OAAOd,KAAK4w6C,KAAKv85C,MAAM0qB,MAAM1/B,EAAE2B,EAAE,KAAKhB,KAAK4w6C,KAAKv85C,MAAM2qB,OAAOx8B,EAAE1B,EAAE,IAAK,CAAC,CAAC,EAAEib,GAAGrc,UAAUox6C,cAAc,SAAS3x6C,EAAEmB,GAAG,IAAIP,EAAEC,KAAK,GAAGA,KAAKsizC,SAAS,IAAInjzC,EAAEu4W,OAAO,CAAC,IAAI12W,EAAEhB,KAAKyw6C,UAAUpx6C,EAAEiB,EAAE,GAAGN,KAAKihE,QAAQrgE,EAAEsr5C,gBAAgBlr5C,EAAEiD,IAAI5E,EAAE4E,GAAGjD,EAAEgC,IAAI3D,EAAE2D,EAAE,OAAOhD,KAAKilM,KAAKqurC,KAAK,IAAIl03C,EAAEuqB,MAAM,aAAa,CAACom5C,cAAc5w6C,KAAK,CAAC4x6C,gBAAgB,SAAS3x6C,GAAG,OAAOA,EAAE4x6C,qBAAqBhw6C,EAAE3B,EAAEU,EAAEklM,KAAKkuL,aAAa,CAACuolB,QAAO,GAAI,GAAG178B,KAAK6w6C,WAAW,gBAAgB1x6C,EAAG,CAAC,EAAE4c,GAAGrc,UAAUux6C,QAAQ,SAAS7x6C,GAAGY,KAAKsizC,SAAS,KAAKljzC,EAAEg1hB,UAAUp0hB,KAAKihE,QAAQjhE,KAAK6w6C,WAAW,gBAAgBzx6C,GAAI,EAAE2c,GAAGrc,UAAUulxB,KAAK,WAAWjlxB,KAAKihE,OAAQ,EAAEllD,GAAGrc,UAAUuhE,MAAM,WAAWjhE,KAAKsizC,SAAQ,EAAGtizC,KAAKy7vB,WAAW9rqB,UAAU98D,OAAO,sBAAsB7yB,KAAK4w6C,OAAOhw6C,EAAEiyB,OAAO7yB,KAAK4w6C,MAAM5w6C,KAAK4w6C,KAAK,MAAMhw6C,EAAEor5C,oBAAoBhs5C,KAAKyw6C,iBAAiBzw6C,KAAK0w6C,QAAS,EAAE305C,GAAGrc,UAAUmx6C,WAAW,SAAS1x6C,EAAEyB,GAAG,OAAOZ,KAAKilM,KAAKqurC,KAAK,IAAIl03C,EAAEuqB,MAAMxqB,EAAE,CAAC4w6C,cAAcnv6C,IAAI,EAAE,IAAIwa,GAAG,SAAShc,GAAGY,KAAKihE,QAAQjhE,KAAKkx6C,WAAW9x6C,EAAE8x6C,UAAW,EAAE915C,GAAG1b,UAAUuhE,MAAM,kBAAkBjhE,KAAKw3X,gBAAgBx3X,KAAK2gE,iBAAiB3gE,KAAKqojB,QAAQrojB,KAAKypB,SAAQ,CAAG,EAAErO,GAAG1b,UAAUuu9B,WAAW,SAAS9u9B,EAAEyB,EAAEN,IAAIN,KAAKw3X,UAAUl3X,EAAED,OAAOL,KAAKkx6C,cAAclx6C,KAAKypB,SAAQ,GAAIzpB,KAAKypB,eAAU,IAASzpB,KAAK2gE,YAAY3gE,KAAK2gE,UAAUxhE,EAAEqlD,WAAWlkD,EAAED,SAASL,KAAKkx6C,aAAalx6C,KAAKw3X,SAAS,SAASr4X,GAAG,IAAI,IAAIyB,EAAE,IAAIxB,EAAEoqC,MAAM,EAAE,GAAGlpC,EAAE,EAAEP,EAAEZ,EAAEmB,EAAEP,EAAEM,OAAOC,GAAG,EAAEM,EAAEqmI,KAAKlnI,EAAEO,IAAI,OAAOM,EAAE0uN,IAAInwN,EAAEkB,OAAO,CAAlG,CAAoGO,GAAGZ,KAAKqojB,QAAQvsiB,GAAGxb,EAAEM,IAAK,EAAEwa,GAAG1b,UAAUyu9B,UAAU,SAAS/u9B,EAAED,EAAEyB,GAAG,IAAIZ,KAAKypB,SAASzpB,KAAKw3X,SAAS,CAAC,IAAIl3X,EAAEwb,GAAGlb,EAAEzB,GAAG,IAAI,IAAIY,KAAKC,KAAKqojB,QAAQ,CAAC,IAAIrnjB,EAAEV,EAAEP,KAAKiB,GAAGA,EAAE+4V,KAAK/5V,KAAKqojB,QAAQtojB,IAAI,MAAMC,KAAKypB,SAAQ,EAAI,CAAC,CAAC,EAAErO,GAAG1b,UAAU0u9B,SAAS,SAAShv9B,EAAED,EAAEyB,GAAG,KAAKZ,KAAKw3X,UAAUp4X,EAAEolD,UAAUxkD,KAAK2gE,UAAU,OAAO3gE,KAAKypB,SAAQ,GAAI,IAAI7oB,EAAEP,OAAO,CAAC,IAAIC,GAAGN,KAAKypB,SAASzpB,KAAKw3X,SAAS,GAAGx3X,KAAKihE,QAAQ3gE,EAAE,OAAOA,CAAC,CAAC,EAAE,IAAIqc,GAAG,SAASvd,GAAGY,KAAKmx6C,UAAU,IAAI/15C,GAAGhc,GAAGY,KAAKox6C,QAAQhy6C,EAAEgy6C,QAAQpx6C,KAAKihE,OAAQ,EAAEtkD,GAAGjd,UAAUuhE,MAAM,WAAWjhE,KAAKkvV,SAAS,WAAWlvV,KAAKqx6C,QAAQrx6C,KAAKupD,MAAM,EAAEvpD,KAAKmx6C,UAAUlw2C,OAAQ,EAAEtkD,GAAGjd,UAAUuu9B,WAAW,SAAS7u9B,EAAED,EAAEyB,GAAGZ,KAAKmx6C,UAAUljd,WAAW7u9B,EAAED,EAAEyB,EAAG,EAAE+b,GAAGjd,UAAUyu9B,UAAU,SAAS/u9B,EAAED,EAAEyB,GAAGZ,KAAKmx6C,UAAUhjd,UAAU/u9B,EAAED,EAAEyB,EAAG,EAAE+b,GAAGjd,UAAU0u9B,SAAS,SAAShv9B,EAAED,EAAEyB,GAAG,IAAIN,EAAEN,KAAKmx6C,UAAU/id,SAAShv9B,EAAED,EAAEyB,GAAG,GAAGN,EAAE,CAAC,IAAIP,EAAEX,EAAEolD,UAAUxkD,KAAKkvV,SAAS,IAAIluV,GAAGhB,KAAKqx6C,SAASrx6C,KAAKqx6C,QAAQt3kC,KAAKz5V,GAAG,GAAG,GAAGP,GAAGiB,GAAGhB,KAAKihE,QAAQjhE,KAAKupD,QAAQvpD,KAAKkvV,SAAS9vV,EAAEolD,UAAUxkD,KAAKqx6C,QAAQ/w6C,EAAEN,KAAKupD,QAAQvpD,KAAKox6C,QAAQ,OAAOpx6C,KAAKihE,QAAQ3gE,CAAC,CAAC,EAAE,IAAIwa,GAAG,WAAW9a,KAAKsx6C,QAAQ,IAAI305C,GAAG,CAACu05C,WAAW,EAAEE,QAAQ,IAAIpx6C,KAAKux6C,SAAS,IAAI505C,GAAG,CAACu05C,WAAW,EAAEE,QAAQ,IAAIpx6C,KAAKihE,OAAQ,EAAEnmD,GAAGpb,UAAUuhE,MAAM,WAAWjhE,KAAKsizC,SAAQ,EAAGtizC,KAAKsx6C,QAAQrw2C,QAAQjhE,KAAKux6C,SAAStw2C,OAAQ,EAAEnmD,GAAGpb,UAAUuu9B,WAAW,SAAS7u9B,EAAED,EAAEyB,GAAGZ,KAAKsx6C,QAAQrjd,WAAW7u9B,EAAED,EAAEyB,GAAGZ,KAAKux6C,SAAStjd,WAAW7u9B,EAAED,EAAEyB,EAAG,EAAEka,GAAGpb,UAAUyu9B,UAAU,SAAS/u9B,EAAED,EAAEyB,GAAGZ,KAAKsx6C,QAAQnjd,UAAU/u9B,EAAED,EAAEyB,GAAGZ,KAAKux6C,SAASpjd,UAAU/u9B,EAAED,EAAEyB,EAAG,EAAEka,GAAGpb,UAAU0u9B,SAAS,SAAShv9B,EAAED,EAAEyB,GAAG,IAAIN,EAAEN,KAAKD,EAAEC,KAAKsx6C,QAAQljd,SAAShv9B,EAAED,EAAEyB,GAAGI,EAAEhB,KAAKux6C,SAASnjd,SAAShv9B,EAAED,EAAEyB,GAAG,OAAOb,GAAGC,KAAKsizC,SAAQ,EAAGljzC,EAAEwmH,iBAAiB//F,YAAW,WAAY,OAAOvlB,EAAE2gE,OAAQ,GAAE,GAAG,CAAC8v2C,gBAAgB,SAAS5x6C,GAAG,OAAOA,EAAEqy6C,OAAO,CAACns3C,SAAS,IAAI1lB,KAAKxgC,EAAEkhC,UAAU,EAAE4lF,OAAO9mH,EAAEuqH,UAAU3pH,IAAI,CAACgw6C,cAAc3w6C,GAAG,IAAI4B,GAAGhB,KAAKsizC,SAAQ,EAAGljzC,EAAEwmH,iBAAiB//F,YAAW,WAAY,OAAOvlB,EAAE2gE,OAAQ,GAAE,GAAG,CAAC8v2C,gBAAgB,SAAS5x6C,GAAG,OAAOA,EAAEqy6C,OAAO,CAACns3C,SAAS,IAAI1lB,KAAKxgC,EAAEkhC,UAAU,EAAE4lF,OAAO9mH,EAAEuqH,UAAU1oH,IAAI,CAAC+u6C,cAAc3w6C,GAAG,SAAI,CAAM,EAAE0b,GAAGpb,UAAU6hwC,YAAY,WAAWvhwC,KAAKihE,OAAQ,EAAEnmD,GAAGpb,UAAUsjB,OAAO,WAAWhjB,KAAK07vB,UAAS,CAAG,EAAE5gvB,GAAGpb,UAAUoyU,QAAQ,WAAW9xU,KAAK07vB,UAAS,EAAG17vB,KAAKihE,OAAQ,EAAEnmD,GAAGpb,UAAUq1U,UAAU,WAAW,OAAO/0U,KAAK07vB,QAAQ,EAAE5gvB,GAAGpb,UAAUoqG,SAAS,WAAW,OAAO9pG,KAAKsizC,OAAO,EAAE,IAAIlmyC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAGd,GAAG,SAASlc,GAAGY,KAAKihE,QAAQjhE,KAAKkw6C,gBAAgB9w6C,EAAE+w6C,gBAAgB,CAAE,EAAE705C,GAAG5b,UAAUulxB,KAAK,WAAWjlxB,KAAKihE,OAAQ,EAAE3lD,GAAG5b,UAAUuhE,MAAM,WAAWjhE,KAAKsizC,SAAQ,EAAGtizC,KAAKyx6C,QAAO,SAAUzx6C,KAAK0x6C,kBAAkB1x6C,KAAK2x6C,YAAa,EAAEr25C,GAAG5b,UAAUky6C,eAAe,SAASxy6C,EAAED,GAAG,OAAO,CAAE,EAAEmc,GAAG5b,UAAUo6H,MAAM,SAAS16H,EAAED,GAAG,MAAO,CAAC,CAAC,EAAEmc,GAAG5b,UAAU8t9B,UAAU,SAASpu9B,EAAED,GAAG,IAAIa,KAAK0x6C,WAAW,CAAC,IAAIpx6C,EAAEM,EAAEwr5C,YAAYht5C,GAAGY,KAAK4x6C,eAAexy6C,EAAEkB,KAAKN,KAAK0x6C,WAAWvy6C,EAAEa,KAAK2x6C,aAAarx6C,EAAG,CAAC,EAAEgb,GAAG5b,UAAUix6C,gBAAgB,SAASvx6C,EAAED,GAAG,IAAIyB,EAAEZ,KAAK0x6C,WAAW,GAAG9w6C,EAAE,GAAGxB,EAAEwmH,iBAAiB,SAASxmH,EAAED,GAAG,IAAIyB,EAAEwb,GAAGjd,GAAG,YAAO,IAASC,EAAEosiB,UAAUpsiB,EAAEosiB,QAAQ5qiB,KAAKA,CAAC,CAAtE,CAAwExB,EAAEY,KAAK2x6C,cAAc3x6C,KAAKihE,aAAa,GAAGjhE,KAAKyx6C,UAAUty6C,EAAE46V,KAAKn5V,GAAGZ,KAAKkw6C,iBAAiB,OAAOlw6C,KAAKyx6C,QAAO,EAAGzx6C,KAAK0x6C,WAAWvy6C,EAAEa,KAAK85H,MAAMl5H,EAAEzB,EAAE,EAAEmc,GAAG5b,UAAUox6C,cAAc,SAAS1x6C,GAAGY,KAAK0x6C,YAAY9w6C,EAAEwr5C,YAAYht5C,KAAKY,KAAK2x6C,eAAe3x6C,KAAKyx6C,QAAQ7w6C,EAAEsr5C,gBAAgBls5C,KAAKihE,QAAS,EAAE3lD,GAAG5b,UAAUsjB,OAAO,WAAWhjB,KAAK07vB,UAAS,CAAG,EAAEpgvB,GAAG5b,UAAUoyU,QAAQ,WAAW9xU,KAAK07vB,UAAS,EAAG17vB,KAAKihE,OAAQ,EAAE3lD,GAAG5b,UAAUq1U,UAAU,WAAW,OAAO/0U,KAAK07vB,QAAQ,EAAEpgvB,GAAG5b,UAAUoqG,SAAS,WAAW,OAAO9pG,KAAKsizC,OAAO,EAAE,IAAInnyC,GAAG,SAAS/b,GAAG,SAASD,IAAIC,EAAEmB,MAAMP,KAAKI,UAAW,CAAC,OAAOhB,IAAID,EAAEK,UAAUJ,IAAID,EAAEO,UAAUJ,OAAOY,OAAOd,GAAGA,EAAEM,YAAYO,YAAYd,EAAEA,EAAEO,UAAU8t9B,UAAU,SAASru9B,EAAEyB,GAAGxB,EAAEM,UAAU8t9B,UAAU5t9B,KAAKI,KAAKb,EAAEyB,GAAGZ,KAAK0x6C,aAAa1x6C,KAAKsizC,SAAQ,EAAI,EAAEnjzC,EAAEO,UAAUky6C,eAAe,SAASxy6C,EAAED,GAAG,OAAO,IAAIA,IAAIC,EAAEyjH,OAAO,EAAE1jH,EAAEO,UAAUo6H,MAAM,SAAS16H,EAAED,GAAG,MAAO,CAAC8mH,OAAO9mH,EAAEyw6C,SAASzw6C,EAAE+1B,IAAI91B,GAAG,EAAED,CAAC,CAA7X,CAA+Xmc,IAAIG,GAAG,SAASrc,GAAG,SAASD,IAAIC,EAAEmB,MAAMP,KAAKI,UAAW,CAAC,OAAOhB,IAAID,EAAEK,UAAUJ,IAAID,EAAEO,UAAUJ,OAAOY,OAAOd,GAAGA,EAAEM,YAAYO,YAAYd,EAAEA,EAAEO,UAAUky6C,eAAe,SAASxy6C,EAAED,GAAG,OAAO,IAAIA,GAAGC,EAAEyjH,SAAS,IAAI1jH,CAAC,EAAEA,EAAEO,UAAUo6H,MAAM,SAAS16H,EAAED,GAAG,IAAIyB,EAAE,IAAIzB,EAAE8E,EAAE7E,EAAE6E,GAAG,GAAGrD,EAAE,OAAOZ,KAAKsizC,SAAQ,EAAG,CAACotH,aAAa9u6C,EAAE,EAAEzB,EAAEO,UAAU4o2C,YAAY,SAASlp2C,GAAGA,EAAEwmH,gBAAiB,EAAEzmH,CAAC,CAA1W,CAA4Wmc,IAAIW,GAAG,SAAS7c,GAAG,SAASD,IAAIC,EAAEmB,MAAMP,KAAKI,UAAW,CAAC,OAAOhB,IAAID,EAAEK,UAAUJ,IAAID,EAAEO,UAAUJ,OAAOY,OAAOd,GAAGA,EAAEM,YAAYO,YAAYd,EAAEA,EAAEO,UAAUky6C,eAAe,SAASxy6C,EAAED,GAAG,OAAO,IAAIA,GAAGC,EAAEyjH,SAAS,IAAI1jH,CAAC,EAAEA,EAAEO,UAAUo6H,MAAM,SAAS16H,EAAED,GAAG,IAAIyB,GAAG,IAAIzB,EAAE6D,EAAE5D,EAAE4D,GAAG,GAAGpC,EAAE,OAAOZ,KAAKsizC,SAAQ,EAAG,CAACqtH,WAAW/u6C,EAAE,EAAEzB,EAAEO,UAAU4o2C,YAAY,SAASlp2C,GAAGA,EAAEwmH,gBAAiB,EAAEzmH,CAAC,CAAzW,CAA2Wmc,IAAIO,GAAG,SAASzc,GAAGY,KAAK6x6C,YAAY,EAAE7x6C,KAAKkw6C,gBAAgB9w6C,EAAE+w6C,gBAAgB,EAAEnw6C,KAAKihE,OAAQ,EAAEplD,GAAGnc,UAAUuhE,MAAM,WAAWjhE,KAAKsizC,SAAQ,EAAGtizC,KAAK8x6C,SAAS,CAAC,EAAE9x6C,KAAK+x6C,KAAK,IAAI3y6C,EAAEoqC,MAAM,EAAE,EAAG,EAAE3tB,GAAGnc,UAAUuu9B,WAAW,SAAS7u9B,EAAED,EAAEyB,GAAG,OAAOZ,KAAKgy6C,oBAAoB5y6C,EAAED,EAAEyB,EAAE,EAAEib,GAAGnc,UAAUyu9B,UAAU,SAAS/u9B,EAAED,EAAEyB,GAAG,GAAGZ,KAAKsizC,WAAW1hzC,EAAEP,OAAOL,KAAK6x6C,aAAa,OAAOzy6C,EAAEwmH,iBAAiB5lH,KAAKgy6C,oBAAoB5y6C,EAAED,EAAEyB,EAAE,EAAEib,GAAGnc,UAAU0u9B,SAAS,SAAShv9B,EAAED,EAAEyB,GAAGZ,KAAKgy6C,oBAAoB5y6C,EAAED,EAAEyB,GAAGZ,KAAKsizC,SAAS1hzC,EAAEP,OAAOL,KAAK6x6C,aAAa7x6C,KAAKihE,OAAQ,EAAEplD,GAAGnc,UAAU6hwC,YAAY,WAAWvhwC,KAAKihE,OAAQ,EAAEplD,GAAGnc,UAAUsy6C,oBAAoB,SAAS7y6C,EAAEyB,EAAEN,GAAGA,EAAED,OAAO,IAAIL,KAAKsizC,SAAQ,GAAI,IAAIvizC,EAAE+b,GAAGxb,EAAEM,GAAGI,EAAE,IAAI5B,EAAEoqC,MAAM,EAAE,GAAGnqC,EAAE,IAAID,EAAEoqC,MAAM,EAAE,GAAG1oC,EAAE,EAAE,IAAI,IAAI0B,KAAKzC,EAAE,CAAC,IAAIc,EAAEd,EAAEyC,GAAGH,EAAErC,KAAK8x6C,SAAStv6C,GAAGH,IAAIrB,EAAEimI,KAAKpmI,GAAGxB,EAAE4nI,KAAKpmI,EAAEq0B,IAAI7yB,IAAIvB,IAAIf,EAAEyC,GAAG3B,EAAG,CAAC,GAAGb,KAAK8x6C,SAAS/x6C,IAAIe,EAAEd,KAAK6x6C,cAAcxy6C,EAAE6mL,MAAM,CAAC,IAAItjL,EAAEvD,EAAEiwN,IAAIxuN,GAAG,GAAGd,KAAK+x6C,KAAK9qyC,KAAKrkI,KAAK5C,KAAK+x6C,KAAK7rvC,MAAMlmL,KAAKkw6C,iBAAiB,MAAO,CAACjqzC,OAAOjlH,EAAEsuN,IAAIxuN,GAAG8u6C,SAASht6C,EAAE,CAAC,EAAEiZ,GAAGnc,UAAUsjB,OAAO,WAAWhjB,KAAK07vB,UAAS,CAAG,EAAE7/uB,GAAGnc,UAAUoyU,QAAQ,WAAW9xU,KAAK07vB,UAAS,EAAG17vB,KAAKihE,OAAQ,EAAEplD,GAAGnc,UAAUq1U,UAAU,WAAW,OAAO/0U,KAAK07vB,QAAQ,EAAE7/uB,GAAGnc,UAAUoqG,SAAS,WAAW,OAAO9pG,KAAKsizC,OAAO,EAAE,IAAIpmyC,GAAG,WAAWlc,KAAKihE,OAAQ,EAAE,SAAS9kD,GAAG/c,EAAED,EAAEyB,GAAG,IAAI,IAAIN,EAAE,EAAEA,EAAElB,EAAEiB,OAAOC,IAAI,GAAGlB,EAAEkB,GAAGq3E,aAAa/2E,EAAE,OAAOzB,EAAEmB,EAAE,CAAC,SAASkc,GAAGpd,EAAED,GAAG,OAAO0D,KAAKwnB,IAAIjrB,EAAED,GAAG0D,KAAKsvN,GAAG,CAACj2M,GAAGxc,UAAUuhE,MAAM,WAAWjhE,KAAKsizC,SAAQ,SAAUtizC,KAAKiy6C,gBAAiB,EAAE/15C,GAAGxc,UAAU+2kC,OAAO,SAASr3kC,GAAG,EAAE8c,GAAGxc,UAAUo6H,MAAM,SAAS16H,EAAED,EAAEyB,GAAG,MAAO,CAAC,CAAC,EAAEsb,GAAGxc,UAAUuu9B,WAAW,SAAS7u9B,EAAED,EAAEyB,GAAGZ,KAAKiy6C,kBAAkBrx6C,EAAEP,OAAO,IAAIL,KAAKiy6C,iBAAiB,CAACrx6C,EAAE,GAAG+2E,WAAW/2E,EAAE,GAAG+2E,YAAY33E,KAAKy2kC,OAAO,CAACt3kC,EAAE,GAAGA,EAAE,KAAM,EAAE+c,GAAGxc,UAAUyu9B,UAAU,SAAS/u9B,EAAED,EAAEyB,GAAG,GAAGZ,KAAKiy6C,iBAAiB,CAAC7y6C,EAAEwmH,iBAAiB,IAAItlH,EAAEN,KAAKiy6C,iBAAiBly6C,EAAEO,EAAE,GAAGU,EAAEmb,GAAGvb,EAAEzB,EAAEmB,EAAE,IAAIjB,EAAE8c,GAAGvb,EAAEzB,EAAEY,GAAG,GAAGiB,GAAG3B,EAAE,CAAC,IAAIyB,EAAEd,KAAKky6C,cAAc,KAAKlx6C,EAAEmkB,IAAI9lB,GAAGiwN,IAAI,GAAG,OAAOtvN,KAAK85H,MAAM,CAAC94H,EAAE3B,GAAGyB,EAAE1B,EAAE,CAAC,CAAC,EAAE8c,GAAGxc,UAAU0u9B,SAAS,SAAShv9B,EAAED,EAAEmB,GAAG,GAAGN,KAAKiy6C,iBAAiB,CAAC,IAAIly6C,EAAEC,KAAKiy6C,iBAAiBjx6C,EAAEjB,EAAE,GAAGV,EAAE8c,GAAG7b,EAAEnB,EAAEY,EAAE,IAAIe,EAAEqb,GAAG7b,EAAEnB,EAAE6B,GAAG3B,GAAGyB,IAAId,KAAKsizC,SAAS1hzC,EAAEsr5C,gBAAgBls5C,KAAKihE,QAAS,CAAC,EAAE/kD,GAAGxc,UAAU6hwC,YAAY,WAAWvhwC,KAAKihE,OAAQ,EAAE/kD,GAAGxc,UAAUsjB,OAAO,SAAS5jB,GAAGY,KAAK07vB,UAAS,EAAG17vB,KAAKky6C,gBAAgB9y6C,GAAG,WAAWA,EAAE6mH,MAAO,EAAE/pG,GAAGxc,UAAUoyU,QAAQ,WAAW9xU,KAAK07vB,UAAS,EAAG17vB,KAAKihE,OAAQ,EAAE/kD,GAAGxc,UAAUq1U,UAAU,WAAW,OAAO/0U,KAAK07vB,QAAQ,EAAEx/uB,GAAGxc,UAAUoqG,SAAS,WAAW,OAAO9pG,KAAKsizC,OAAO,EAAE,IAAI1lyC,GAAG,SAASxd,GAAG,SAASD,IAAIC,EAAEmB,MAAMP,KAAKI,UAAW,CAAC,OAAOhB,IAAID,EAAEK,UAAUJ,IAAID,EAAEO,UAAUJ,OAAOY,OAAOd,GAAGA,EAAEM,YAAYO,YAAYd,EAAEA,EAAEO,UAAUuhE,MAAM,WAAW7hE,EAAEM,UAAUuhE,MAAMrhE,KAAKI,aAAaA,KAAKwqX,iBAAiBxqX,KAAKmy6C,cAAe,EAAEhz6C,EAAEO,UAAU+2kC,OAAO,SAASr3kC,GAAGY,KAAKmy6C,eAAeny6C,KAAKwqX,UAAUprX,EAAE,GAAG26V,KAAK36V,EAAE,GAAI,EAAED,EAAEO,UAAUo6H,MAAM,SAAS16H,EAAED,GAAG,IAAIyB,EAAEZ,KAAKwqX,UAAU,GAAGxqX,KAAKwqX,UAAUprX,EAAE,GAAG26V,KAAK36V,EAAE,IAAIY,KAAKsizC,WAAWz/yC,KAAKmjH,IAAIxpG,GAAGxc,KAAKwqX,UAAUxqX,KAAKmy6C,iBAAiB,IAAI,OAAOny6C,KAAKsizC,SAAQ,EAAG,CAAChpM,UAAU98lC,GAAGxc,KAAKwqX,UAAU5pX,GAAG6u6C,YAAYtw6C,EAAE,EAAEA,CAAC,CAA3iB,CAA6iB+c,IAAI,SAASjH,GAAG7V,EAAED,GAAG,OAAO,IAAIC,EAAEww3C,UAAUzw3C,GAAG0D,KAAKsmC,EAAE,CAAC,IAAIp0B,GAAG,SAAS3V,GAAG,SAASD,IAAIC,EAAEmB,MAAMP,KAAKI,UAAW,CAAC,OAAOhB,IAAID,EAAEK,UAAUJ,IAAID,EAAEO,UAAUJ,OAAOY,OAAOd,GAAGA,EAAEM,YAAYO,YAAYd,EAAEA,EAAEO,UAAUuhE,MAAM,WAAW7hE,EAAEM,UAAUuhE,MAAMrhE,KAAKI,aAAaA,KAAKoy6C,oBAAoBpy6C,KAAKqy6C,oBAAoBry6C,KAAKsy6C,OAAQ,EAAEnz6C,EAAEO,UAAU+2kC,OAAO,SAASr3kC,GAAGY,KAAKqy6C,aAAary6C,KAAKsy6C,QAAQlz6C,EAAE,GAAG81B,IAAI91B,EAAE,IAAIY,KAAKoy6C,aAAahz6C,EAAE,GAAG26V,KAAK36V,EAAE,GAAI,EAAED,EAAEO,UAAUo6H,MAAM,SAAS16H,EAAED,GAAG,IAAIyB,EAAEZ,KAAKsy6C,QAAQ,GAAGty6C,KAAKsy6C,QAAQlz6C,EAAE,GAAG81B,IAAI91B,EAAE,IAAIY,KAAKsizC,UAAUtizC,KAAKuy6C,kBAAkBvy6C,KAAKsy6C,SAAS,OAAOty6C,KAAKsizC,SAAQ,EAAG,CAACotH,aAAaz65C,GAAGjV,KAAKsy6C,QAAQ1x6C,GAAG6u6C,YAAYtw6C,EAAE,EAAEA,EAAEO,UAAU6y6C,kBAAkB,SAASnz6C,GAAGY,KAAKoy6C,aAAavv6C,KAAKgL,IAAI7N,KAAKoy6C,aAAahz6C,EAAE8mL,OAAO,IAAI/mL,EAAE,IAAI0D,KAAKsmC,GAAGnpC,KAAKoy6C,cAAc,IAAIxx6C,EAAEqU,GAAG7V,EAAEY,KAAKqy6C,cAAc,OAAOxv6C,KAAKmjH,IAAIplH,GAAGzB,CAAC,EAAEA,CAAC,CAAjwB,CAAmwB+c,IAAI,SAAS9G,GAAGhW,GAAG,OAAOyD,KAAKmjH,IAAI5mH,EAAE4D,GAAGH,KAAKmjH,IAAI5mH,EAAE6E,EAAE,CAAC,IAAIkR,GAAG,SAAS/V,GAAG,SAASD,IAAIC,EAAEmB,MAAMP,KAAKI,UAAW,CAAC,OAAOhB,IAAID,EAAEK,UAAUJ,IAAID,EAAEO,UAAUJ,OAAOY,OAAOd,GAAGA,EAAEM,YAAYO,YAAYd,EAAEA,EAAEO,UAAUuhE,MAAM,WAAW7hE,EAAEM,UAAUuhE,MAAMrhE,KAAKI,MAAMA,KAAKwy6C,YAAO,SAAcxy6C,KAAKyy6C,kBAAkBzy6C,KAAK0y6C,WAAY,EAAEvz6C,EAAEO,UAAU+2kC,OAAO,SAASr3kC,GAAGY,KAAK0y6C,YAAYtz6C,EAAEgW,GAAGhW,EAAE,GAAG81B,IAAI91B,EAAE,OAAOY,KAAKwy6C,QAAO,EAAI,EAAErz6C,EAAEO,UAAUo6H,MAAM,SAAS16H,EAAED,EAAEyB,GAAG,IAAIN,EAAElB,EAAE,GAAG81B,IAAIl1B,KAAK0y6C,YAAY,IAAI3y6C,EAAEX,EAAE,GAAG81B,IAAIl1B,KAAK0y6C,YAAY,IAAI,GAAG1y6C,KAAKwy6C,OAAOxy6C,KAAK2y6C,wBAAwBry6C,EAAEP,EAAEa,EAAE4jD,WAAWxkD,KAAKwy6C,OAAO,OAAOxy6C,KAAK0y6C,YAAYtz6C,EAAEY,KAAKsizC,SAAQ,EAAG,CAACqtH,YAAYrv6C,EAAE0C,EAAEjD,EAAEiD,GAAG,GAAG,GAAG,EAAE7D,EAAEO,UAAUiz6C,wBAAwB,SAASvz6C,EAAED,EAAEyB,GAAG,QAAG,IAASZ,KAAKwy6C,OAAO,OAAOxy6C,KAAKwy6C,OAAO,IAAIly6C,EAAElB,EAAE8mL,OAAO,EAAEnmL,EAAEZ,EAAE+mL,OAAO,EAAE,GAAG5lL,GAAGP,EAAE,CAAC,IAAIO,IAAIP,EAAE,YAAO,IAASC,KAAKyy6C,aAAazy6C,KAAKyy6C,WAAW7x6C,GAAGA,EAAEZ,KAAKyy6C,WAAW,UAAK,EAAO,IAAIzx6C,EAAE5B,EAAE4D,EAAE,GAAG7D,EAAE6D,EAAE,EAAE,OAAOoS,GAAGhW,IAAIgW,GAAGjW,IAAI6B,CAAC,CAAC,EAAE7B,CAAC,CAAp2B,CAAs2B+c,IAAIhH,GAAG,CAAC095C,QAAQ,IAAIC,YAAY,GAAGC,UAAU,IAAIx95C,GAAG,WAAW,IAAIlW,EAAE8V,GAAGlV,KAAK+y6C,SAAS3z6C,EAAEwz6C,QAAQ5y6C,KAAKgz6C,aAAa5z6C,EAAEyz6C,YAAY7y6C,KAAKiz6C,WAAW7z6C,EAAE0z6C,UAAU9y6C,KAAKkz6C,mBAAkB,CAAG,EAAE,SAASl+5C,GAAG5V,GAAG,OAAOA,GAAG,EAAEA,EAAE,CAACkW,GAAG5V,UAAUulxB,KAAK,WAAWjlxB,KAAKihE,OAAQ,EAAE3rD,GAAG5V,UAAUuhE,MAAM,WAAWjhE,KAAKsizC,SAAQ,CAAG,EAAEhtyC,GAAG5V,UAAUux6C,QAAQ,SAAS7x6C,GAAG,IAAID,EAAEa,KAAK,KAAKZ,EAAEwjH,QAAQxjH,EAAEyjH,SAASzjH,EAAEujH,SAAS,CAAC,IAAI/hH,EAAE,EAAEN,EAAE,EAAEP,EAAE,EAAEiB,EAAE,EAAE3B,EAAE,EAAE,OAAOD,EAAEg1hB,SAAS,KAAK,GAAG,KAAK,IAAI,KAAK,IAAI,KAAK,IAAIxzhB,EAAE,EAAE,MAAM,KAAK,IAAI,KAAK,IAAI,KAAK,IAAIA,GAAG,EAAE,MAAM,KAAK,GAAGxB,EAAE0jH,SAASxiH,GAAG,GAAGlB,EAAEwmH,iBAAiB5kH,GAAG,GAAG,MAAM,KAAK,GAAG5B,EAAE0jH,SAASxiH,EAAE,GAAGlB,EAAEwmH,iBAAiB5kH,EAAE,GAAG,MAAM,KAAK,GAAG5B,EAAE0jH,SAAS/iH,EAAE,GAAGX,EAAEwmH,iBAAiBvmH,GAAG,GAAG,MAAM,KAAK,GAAGD,EAAE0jH,SAAS/iH,GAAG,GAAGX,EAAEwmH,iBAAiBvmH,EAAE,GAAG,MAAM,QAAQ,OAAO,OAAOW,KAAKkz6C,oBAAoB5y6C,EAAE,EAAEP,EAAE,GAAG,CAACgx6C,gBAAgB,SAASjw6C,GAAG,IAAI0B,EAAE1B,EAAEu/B,UAAUv/B,EAAE0w6C,OAAO,CAACns3C,SAAS,IAAI8t3C,OAAO,kBAAkBtozC,OAAO71G,GAAG2qB,KAAK/+B,EAAEiC,KAAKogD,MAAMzgD,GAAG5B,GAAGxB,EAAE0jH,SAAS,EAAE,GAAGtgH,EAAEg9B,QAAQ1+B,EAAEqyX,aAAa7yX,EAAEnB,EAAE6z6C,aAAatz4C,MAAM5+B,EAAEku6C,WAAWjv6C,EAAEZ,EAAE8z6C,WAAW9w3C,OAAO,EAAEnhD,EAAE7B,EAAE4z6C,UAAU1z6C,EAAEF,EAAE4z6C,UAAU9z4C,OAAOn+B,EAAEs/B,aAAa,CAAC2v4C,cAAc3w6C,GAAI,EAAE,CAAC,EAAEkW,GAAG5V,UAAUsjB,OAAO,WAAWhjB,KAAK07vB,UAAS,CAAG,EAAEpmvB,GAAG5V,UAAUoyU,QAAQ,WAAW9xU,KAAK07vB,UAAS,EAAG17vB,KAAKihE,OAAQ,EAAE3rD,GAAG5V,UAAUq1U,UAAU,WAAW,OAAO/0U,KAAK07vB,QAAQ,EAAEpmvB,GAAG5V,UAAUoqG,SAAS,WAAW,OAAO9pG,KAAKsizC,OAAO,EAAEhtyC,GAAG5V,UAAU0z6C,gBAAgB,WAAWpz6C,KAAKkz6C,mBAAkB,CAAG,EAAE595C,GAAG5V,UAAU2z6C,eAAe,WAAWrz6C,KAAKkz6C,mBAAkB,CAAG,EAAE,IAAI395C,GAAG,SAASpW,EAAEyB,GAAGZ,KAAKilM,KAAK9lM,EAAEa,KAAKww6C,IAAIrx6C,EAAE2w6C,qBAAqB9v6C,KAAKi+X,SAASr9X,EAAEZ,KAAKsz6C,OAAO,EAAEtz6C,KAAKuz6C,iBAAiB,IAAIvz6C,KAAKwz6C,eAAe,EAAE,IAAIp06C,EAAE+0xC,QAAQ,CAAC,cAAcn0xC,KAAM,EAAEuV,GAAG7V,UAAU+z6C,YAAY,SAASr06C,GAAGY,KAAKuz6C,iBAAiBn06C,CAAE,EAAEmW,GAAG7V,UAAUg06C,iBAAiB,SAASt06C,GAAGY,KAAKwz6C,eAAep06C,CAAE,EAAEmW,GAAG7V,UAAUq1U,UAAU,WAAW,QAAS/0U,KAAK07vB,QAAQ,EAAEnmvB,GAAG7V,UAAUoqG,SAAS,WAAW,QAAS9pG,KAAKsizC,cAAS,IAAStizC,KAAK2z6C,cAAc,EAAEp+5C,GAAG7V,UAAUwmH,UAAU,WAAW,QAASlmH,KAAK4z6C,QAAQ,EAAEr+5C,GAAG7V,UAAUsjB,OAAO,SAAS5jB,GAAGY,KAAK+0U,cAAc/0U,KAAK07vB,UAAS,EAAG17vB,KAAKky6C,cAAc9y6C,GAAG,WAAWA,EAAE6mH,OAAQ,EAAE1wG,GAAG7V,UAAUoyU,QAAQ,WAAW9xU,KAAK+0U,cAAc/0U,KAAK07vB,UAAS,EAAI,EAAEnmvB,GAAG7V,UAAUqu9B,MAAM,SAAS5u9B,GAAG,GAAGa,KAAK+0U,YAAY,CAAC,IAAIn0U,EAAEzB,EAAE8gzC,YAAY7gzC,EAAE8C,OAAO89yC,WAAWG,eAAe,GAAGhhzC,EAAEwqH,OAAOxqH,EAAEwqH,OAAOrpH,EAAElB,EAAEghS,QAAQ30Q,MAAM1rB,EAAEO,GAAGN,KAAK6z6C,qBAAqB,GAAG7z6C,KAAK6z6C,oBAAoBvz6C,EAAE,IAAIM,GAAGA,EAAE,gBAAgB,EAAEZ,KAAK8z6C,MAAM,QAAQ,IAAIlz6C,GAAGiC,KAAKmjH,IAAIplH,GAAG,EAAEZ,KAAK8z6C,MAAM,WAAW/z6C,EAAE,KAAKC,KAAK8z6C,MAAM,KAAK9z6C,KAAKs1qC,WAAW10qC,EAAEZ,KAAK+z6C,SAASlu5C,WAAW7lB,KAAKg06C,WAAW,GAAG706C,IAAIa,KAAK8z6C,QAAQ9z6C,KAAK8z6C,MAAMjx6C,KAAKmjH,IAAIjmH,EAAEa,GAAG,IAAI,WAAW,QAAQZ,KAAK+z6C,WAAWrn5C,aAAa1sB,KAAK+z6C,UAAU/z6C,KAAK+z6C,SAAS,KAAKnz6C,GAAGZ,KAAKs1qC,aAAan2qC,EAAE2jH,UAAUliH,IAAIA,GAAG,GAAGZ,KAAK8z6C,QAAQ9z6C,KAAKi06C,gBAAgB906C,EAAEa,KAAKsz6C,QAAQ1y6C,EAAEZ,KAAKsizC,SAAStizC,KAAKy2kC,OAAOt3kC,IAAIA,EAAEymH,gBAAiB,CAAC,EAAErwG,GAAG7V,UAAUs06C,WAAW,SAAS506C,GAAGY,KAAK8z6C,MAAM,QAAQ9z6C,KAAKsz6C,QAAQtz6C,KAAKs1qC,WAAWt1qC,KAAKsizC,SAAStizC,KAAKy2kC,OAAOr3kC,EAAG,EAAEmW,GAAG7V,UAAU+2kC,OAAO,SAASt3kC,GAAG,GAAGa,KAAKsz6C,OAAO,CAACtz6C,KAAKk06C,WAAWl06C,KAAKk06C,SAAS,MAAMl06C,KAAKsizC,SAAQ,EAAGtizC,KAAKkmH,cAAclmH,KAAK4z6C,UAAS,GAAI5z6C,KAAK2z6C,iBAAiBjn5C,aAAa1sB,KAAK2z6C,uBAAuB3z6C,KAAK2z6C,gBAAgB,IAAIrz6C,EAAEM,EAAE8ysC,SAAS1zsC,KAAKww6C,IAAIrx6C,GAAGa,KAAKm06C,QAAQ/06C,EAAE2s3C,OAAO9vlB,QAAQj8xB,KAAKky6C,cAAcly6C,KAAKilM,KAAK7kK,YAAYpgC,KAAKilM,KAAKv7E,UAAUppH,IAAIN,KAAKo06C,aAAap06C,KAAKilM,KAAKriE,UAAUkryC,cAAc9t6C,KAAKm06C,SAASn06C,KAAKk06C,WAAWl06C,KAAKk06C,UAAS,EAAGl06C,KAAKi+X,SAASo2iC,sBAAuB,CAAC,EAAE9+5C,GAAG7V,UAAUuxT,YAAY,WAAW,IAAI9xT,EAAEa,KAAK,GAAGA,KAAKk06C,WAAWl06C,KAAKk06C,SAAS,KAAKl06C,KAAK8pG,YAAY,CAAC,IAAIlpG,EAAEZ,KAAKilM,KAAKriE,UAAU,GAAG,IAAI5iI,KAAKsz6C,OAAO,CAAC,IAAIhz6C,EAAE,UAAUN,KAAK8z6C,OAAOjx6C,KAAKmjH,IAAIhmH,KAAKsz6C,QAAQ,eAAetz6C,KAAKwz6C,eAAexz6C,KAAKuz6C,iBAAiBxz6C,EAAE,GAAG,EAAE8C,KAAKkxB,KAAKlxB,KAAKmjH,IAAIhmH,KAAKsz6C,OAAOhz6C,KAAKN,KAAKsz6C,OAAO,GAAG,IAAIvz6C,IAAIA,EAAE,EAAEA,GAAG,IAAIiB,EAAE,iBAAiBhB,KAAKs06C,YAAY1z6C,EAAE84mC,UAAU15mC,KAAKs06C,aAAa1z6C,EAAEkhG,MAAM9hG,KAAKs06C,YAAYzx6C,KAAKgL,IAAIjN,EAAEqnH,QAAQplH,KAAK8K,IAAI/M,EAAEsnH,QAAQtnH,EAAE2s6C,UAAUvs6C,EAAEjB,KAAK,UAAUC,KAAK8z6C,QAAQ9z6C,KAAKu06C,WAAW3z6C,EAAE++B,KAAK3/B,KAAKw06C,QAAQx06C,KAAKy06C,iBAAiB,MAAMz06C,KAAKsz6C,OAAO,CAAE,CAAC,IAAIj06C,EAAEyB,EAAE,iBAAiBd,KAAKs06C,YAAYt06C,KAAKs06C,YAAY1z6C,EAAE++B,KAAKn9B,EAAExC,KAAKu06C,WAAW1z6C,EAAEb,KAAKw06C,QAAQny6C,GAAE,EAAG,GAAG,UAAUrC,KAAK8z6C,OAAOtx6C,GAAG3B,EAAE,CAAC,IAAI+B,EAAEC,KAAKgL,KAAKzO,EAAEghS,QAAQ30Q,MAAMzrB,KAAK6z6C,qBAAqB,IAAI,GAAG/w6C,EAAEjC,EAAE+B,GAAGvD,EAAED,EAAE2qJ,OAAOvnJ,EAAE1B,EAAEgC,GAAGF,EAAE,EAAE5C,KAAKk06C,WAAWl06C,KAAKk06C,UAAS,GAAI7x6C,GAAE,CAAG,MAAMhD,EAAEyB,EAAEuB,GAAE,EAAG,OAAOrC,KAAKsizC,SAAQ,EAAGjgzC,IAAIrC,KAAKsizC,SAAQ,EAAGtizC,KAAK2z6C,eAAe9t5C,YAAW,WAAY1mB,EAAEy06C,UAAS,EAAGz06C,EAAE8+X,SAASo2iC,6BAA6Bl16C,EAAEm16C,mBAAmBn16C,EAAEw06C,cAAgB,GAAE,MAAM,CAACe,WAAU,EAAGC,kBAAkBty6C,EAAEi3mC,UAAUj6mC,EAAEuB,EAAE++B,KAAKsmF,OAAOjmH,KAAKo06C,aAAarE,cAAc/v6C,KAAKi06C,gBAAgB,CAAC,EAAE1+5C,GAAG7V,UAAU+06C,iBAAiB,SAASt16C,GAAG,IAAIyB,EAAExB,EAAEwl5C,KAAK,GAAG5k5C,KAAK406C,UAAU,CAAC,IAAIt06C,EAAEN,KAAK406C,UAAU706C,GAAGX,EAAEghS,QAAQ30Q,MAAMnrB,EAAEkmC,OAAOlmC,EAAE+kD,SAASrkD,EAAEV,EAAEuqH,OAAO9qH,EAAE,KAAKO,EAAEuqH,OAAO9qH,GAAGV,EAAE,IAAIwD,KAAK4yF,KAAKz0F,EAAEA,EAAE,MAAM,IAAIF,EAAE+B,KAAK4yF,KAAK,MAAMp2F,EAAEA,GAAGuB,EAAExB,EAAE0k5C,OAAOzk5C,EAAEyB,EAAE,IAAI,EAAG,CAAC,OAAOd,KAAK406C,UAAU,CAACpu4C,MAAMpnC,EAAEghS,QAAQ30Q,MAAM45B,SAASlmD,EAAE0rH,OAAOjqH,GAAGA,CAAC,EAAE2U,GAAG7V,UAAUulxB,KAAK,WAAWjlxB,KAAKihE,OAAQ,EAAE1rD,GAAG7V,UAAUuhE,MAAM,WAAWjhE,KAAKsizC,SAAQ,CAAG,EAAE,IAAI7syC,GAAG,SAASrW,EAAED,GAAGa,KAAK606C,WAAWz16C,EAAEY,KAAK806C,SAAS316C,CAAE,EAAEsW,GAAG/V,UAAUsjB,OAAO,WAAWhjB,KAAK606C,WAAW7x5C,SAAShjB,KAAK806C,SAAS9x5C,QAAS,EAAEvN,GAAG/V,UAAUoyU,QAAQ,WAAW9xU,KAAK606C,WAAW/imC,UAAU9xU,KAAK806C,SAAShjmC,SAAU,EAAEr8T,GAAG/V,UAAUq1U,UAAU,WAAW,OAAO/0U,KAAK606C,WAAW9/lC,aAAa/0U,KAAK806C,SAAS//lC,WAAW,EAAEt/T,GAAG/V,UAAUoqG,SAAS,WAAW,OAAO9pG,KAAK606C,WAAW/q0C,YAAY9pG,KAAK806C,SAAShr0C,UAAU,EAAE,IAAIz0F,GAAG,WAAWrV,KAAKihE,OAAQ,EAAE5rD,GAAG3V,UAAUuhE,MAAM,WAAWjhE,KAAKsizC,SAAQ,CAAG,EAAEjtyC,GAAG3V,UAAUulxB,KAAK,WAAWjlxB,KAAKihE,OAAQ,EAAE5rD,GAAG3V,UAAU0mO,SAAS,SAAShnO,EAAED,GAAG,OAAOC,EAAEwmH,iBAAiB,CAACmrzC,gBAAgB,SAASnw6C,GAAGA,EAAE4w6C,OAAO,CAACns3C,SAAS,IAAI1lB,KAAK/+B,EAAEy/B,WAAWjhC,EAAE0jH,UAAU,EAAE,GAAGmD,OAAOrlH,EAAE8oH,UAAUvqH,IAAI,CAAC4w6C,cAAc3w6C,GAAI,EAAE,EAAEiW,GAAG3V,UAAUsjB,OAAO,WAAWhjB,KAAK07vB,UAAS,CAAG,EAAErmvB,GAAG3V,UAAUoyU,QAAQ,WAAW9xU,KAAK07vB,UAAS,EAAG17vB,KAAKihE,OAAQ,EAAE5rD,GAAG3V,UAAUq1U,UAAU,WAAW,OAAO/0U,KAAK07vB,QAAQ,EAAErmvB,GAAG3V,UAAUoqG,SAAS,WAAW,OAAO9pG,KAAKsizC,OAAO,EAAE,IAAI9syC,GAAG,WAAWxV,KAAK+06C,KAAK,IAAIp45C,GAAG,CAACu05C,WAAW,EAAEE,QAAQ,IAAIpx6C,KAAKihE,OAAQ,EAAEzrD,GAAG9V,UAAUuhE,MAAM,WAAWjhE,KAAKsizC,SAAQ,SAAUtizC,KAAKg16C,mBAAmBh16C,KAAKi16C,mBAAmBj16C,KAAKk16C,SAASl16C,KAAK+06C,KAAK9z2C,OAAQ,EAAEzrD,GAAG9V,UAAUuu9B,WAAW,SAAS7u9B,EAAED,EAAEyB,GAAGZ,KAAKg16C,cAAch16C,KAAKk16C,UAAU916C,EAAEolD,UAAUxkD,KAAKk16C,SAAS,KAAKl16C,KAAKihE,QAAQjhE,KAAKk16C,SAASt06C,EAAEP,OAAO,IAAIL,KAAKg16C,YAAY716C,EAAE,GAAGa,KAAKi16C,YAAYr06C,EAAE,GAAG+2E,YAAY33E,KAAK+06C,KAAK9md,WAAW7u9B,EAAED,EAAEyB,GAAI,EAAE4U,GAAG9V,UAAUyu9B,UAAU,SAAS/u9B,EAAED,EAAEyB,GAAG,GAAGZ,KAAKk16C,UAAU,GAAGl16C,KAAKg16C,YAAY,CAAC,GAAGp06C,EAAE,GAAG+2E,aAAa33E,KAAKi16C,YAAY,OAAO,IAAI306C,EAAEnB,EAAE,GAAGY,EAAEO,EAAE0C,EAAEhD,KAAKg16C,YAAYhy6C,EAAE,OAAOhD,KAAKg16C,YAAY106C,EAAElB,EAAEwmH,iBAAiB5lH,KAAKsizC,SAAQ,EAAG,CAAChpM,UAAUv5mC,EAAE,IAAI,OAAOC,KAAK+06C,KAAK5md,UAAU/u9B,EAAED,EAAEyB,EAAG,EAAE4U,GAAG9V,UAAU0u9B,SAAS,SAAShv9B,EAAED,EAAEyB,GAAGZ,KAAKk16C,SAASl16C,KAAKg16C,aAAa,IAAIp06C,EAAEP,QAAQL,KAAKihE,QAAQjhE,KAAK+06C,KAAK3md,SAAShv9B,EAAED,EAAEyB,KAAKZ,KAAKk16C,SAAS916C,EAAEolD,UAAW,EAAEhvC,GAAG9V,UAAU6hwC,YAAY,WAAWvhwC,KAAKihE,OAAQ,EAAEzrD,GAAG9V,UAAUsjB,OAAO,WAAWhjB,KAAK07vB,UAAS,CAAG,EAAElmvB,GAAG9V,UAAUoyU,QAAQ,WAAW9xU,KAAK07vB,UAAS,EAAG17vB,KAAKihE,OAAQ,EAAEzrD,GAAG9V,UAAUq1U,UAAU,WAAW,OAAO/0U,KAAK07vB,QAAQ,EAAElmvB,GAAG9V,UAAUoqG,SAAS,WAAW,OAAO9pG,KAAKsizC,OAAO,EAAE,IAAI1syC,GAAG,SAASxW,EAAED,EAAEyB,GAAGZ,KAAKww6C,IAAIpx6C,EAAEY,KAAKm16C,UAAUh26C,EAAEa,KAAKo16C,UAAUx06C,CAAE,EAAEgV,GAAGlW,UAAUsjB,OAAO,SAAS5jB,GAAGY,KAAKq16C,gBAAgBj26C,GAAG,CAAC,EAAEY,KAAKm16C,UAAUny5C,SAAShjB,KAAKo16C,UAAUpy5C,SAAShjB,KAAKww6C,IAAI7g1C,UAAUxqE,IAAI,0BAA2B,EAAEvP,GAAGlW,UAAUoyU,QAAQ,WAAW9xU,KAAKm16C,UAAUrjmC,UAAU9xU,KAAKo16C,UAAUtjmC,UAAU9xU,KAAKww6C,IAAI7g1C,UAAU98D,OAAO,0BAA2B,EAAEjd,GAAGlW,UAAUq1U,UAAU,WAAW,OAAO/0U,KAAKm16C,UAAUpgmC,aAAa/0U,KAAKo16C,UAAUrgmC,WAAW,EAAEn/T,GAAGlW,UAAUoqG,SAAS,WAAW,OAAO9pG,KAAKm16C,UAAUrr0C,YAAY9pG,KAAKo16C,UAAUtr0C,UAAU,EAAE,IAAIj0F,GAAG,SAASzW,EAAED,EAAEyB,GAAGZ,KAAKs16C,iBAAiBl26C,EAAEm26C,gBAAgBv16C,KAAKw16C,aAAar26C,EAAEa,KAAKy16C,YAAY706C,CAAE,EAAEiV,GAAGnW,UAAUsjB,OAAO,WAAWhjB,KAAKw16C,aAAaxy5C,SAAShjB,KAAKs16C,kBAAkBt16C,KAAKy16C,YAAYzy5C,QAAS,EAAEnN,GAAGnW,UAAUoyU,QAAQ,WAAW9xU,KAAKw16C,aAAa1jmC,UAAU9xU,KAAKy16C,YAAY3jmC,SAAU,EAAEj8T,GAAGnW,UAAUq1U,UAAU,WAAW,OAAO/0U,KAAKw16C,aAAazgmC,eAAe/0U,KAAKs16C,kBAAkBt16C,KAAKy16C,YAAY1gmC,YAAY,EAAEl/T,GAAGnW,UAAUoqG,SAAS,WAAW,OAAO9pG,KAAKw16C,aAAa1r0C,YAAY9pG,KAAKy16C,YAAY3r0C,UAAU,EAAE,IAAIn0F,GAAG,SAASvW,EAAED,EAAEyB,EAAEN,GAAGN,KAAKww6C,IAAIpx6C,EAAEY,KAAK016C,WAAWv26C,EAAEa,KAAK216C,aAAa/06C,EAAEZ,KAAK416C,aAAat16C,EAAEN,KAAKkz6C,mBAAkB,EAAGlz6C,KAAK07vB,UAAS,CAAG,EAAE/lvB,GAAGjW,UAAUsjB,OAAO,SAAS5jB,GAAGY,KAAK016C,WAAW1y5C,OAAO5jB,GAAGY,KAAKkz6C,mBAAmBlz6C,KAAK216C,aAAa3y5C,OAAO5jB,GAAGY,KAAK416C,aAAa5y5C,SAAShjB,KAAKww6C,IAAI7g1C,UAAUxqE,IAAI,6BAA8B,EAAExP,GAAGjW,UAAUoyU,QAAQ,WAAW9xU,KAAK016C,WAAW5jmC,UAAU9xU,KAAK216C,aAAa7jmC,UAAU9xU,KAAK416C,aAAa9jmC,UAAU9xU,KAAKww6C,IAAI7g1C,UAAU98D,OAAO,6BAA8B,EAAEld,GAAGjW,UAAUq1U,UAAU,WAAW,OAAO/0U,KAAK016C,WAAW3gmC,cAAc/0U,KAAKkz6C,mBAAmBlz6C,KAAK216C,aAAa5gmC,cAAc/0U,KAAK416C,aAAa7gmC,WAAW,EAAEp/T,GAAGjW,UAAUoqG,SAAS,WAAW,OAAO9pG,KAAK016C,WAAW5r0C,YAAY9pG,KAAK216C,aAAa7r0C,YAAY9pG,KAAK416C,aAAa9r0C,UAAU,EAAEn0F,GAAGjW,UAAU0z6C,gBAAgB,WAAWpz6C,KAAKkz6C,mBAAkB,EAAGlz6C,KAAK216C,aAAa7jmC,SAAU,EAAEn8T,GAAGjW,UAAU2z6C,eAAe,WAAWrz6C,KAAKkz6C,mBAAkB,EAAGlz6C,KAAK016C,WAAW3gmC,aAAa/0U,KAAK216C,aAAa3y5C,QAAS,EAAE,IAAI1M,GAAG,SAASlX,GAAG,OAAOA,EAAEugC,MAAMvgC,EAAEy26C,MAAMz26C,EAAEsgC,OAAOtgC,EAAEqmH,MAAM,EAAE/vG,GAAG,SAAStW,GAAG,SAASD,IAAIC,EAAEmB,MAAMP,KAAKI,UAAW,CAAC,OAAOhB,IAAID,EAAEK,UAAUJ,IAAID,EAAEO,UAAUJ,OAAOY,OAAOd,GAAGA,EAAEM,YAAYO,YAAYd,EAAEA,CAAC,CAAvI,CAAyIC,EAAEuqB,OAAO,SAAS3T,GAAG5W,GAAG,OAAOA,EAAEww6C,UAAUxw6C,EAAEww6C,SAAS1pvC,OAAO9mL,EAAEk6mC,WAAWl6mC,EAAEsw6C,cAActw6C,EAAEuw6C,UAAU,CAAC,IAAIz55C,GAAG,SAAS/W,EAAEmB,GAAGN,KAAKilM,KAAK9lM,EAAEa,KAAKww6C,IAAIxw6C,KAAKilM,KAAK6quC,qBAAqB9v6C,KAAKq9oC,UAAU,GAAGr9oC,KAAK816C,cAAc,CAAC,EAAE916C,KAAK+16C,SAAS,GAAG/16C,KAAKg26C,SAAS,IAAIz65C,GAAGpc,GAAGa,KAAKi26C,aAAa316C,EAAE416C,YAAYl26C,KAAKm26C,wBAAwB,CAAC,EAAEn26C,KAAKo26C,kBAAkB,CAAC,EAAEp26C,KAAKq26C,oBAAoB/16C,GAAGlB,EAAE+0xC,QAAQ,CAAC,cAAc,qBAAqBn0xC,MAAM,IAAID,EAAEC,KAAKww6C,IAAIxw6C,KAAKoz3C,WAAW,CAAC,CAACrz3C,EAAE,aAAa,CAAC2vC,SAAQ,IAAK,CAAC3vC,EAAE,YAAY,CAAC2vC,SAAQ,IAAK,CAAC3vC,EAAE,gBAAW,GAAQ,CAACA,EAAE,mBAAc,GAAQ,CAACA,EAAE,iBAAY,GAAQ,CAACA,EAAE,iBAAY,GAAQ,CAACA,EAAE,eAAU,GAAQ,CAACX,EAAE8C,OAAOiD,SAAS,YAAY,CAACsqC,SAAQ,IAAK,CAACrwC,EAAE8C,OAAOiD,SAAS,eAAU,GAAQ,CAACpF,EAAE,iBAAY,GAAQ,CAACA,EAAE,gBAAW,GAAQ,CAACA,EAAE,gBAAW,GAAQ,CAACA,EAAE,aAAQ,GAAQ,CAACA,EAAE,UAAU,CAAC0vC,SAAQ,IAAK,CAAC1vC,EAAE,aAAQ,GAAQ,CAACA,EAAE,QAAQ,CAAC2vC,SAAQ,IAAK,CAAC3vC,EAAE,mBAAc,GAAQ,CAACX,EAAE8C,OAAO,YAAO,IAAS,IAAI,IAAIlB,EAAE,EAAE3B,EAAEW,KAAKoz3C,WAAWpy3C,EAAE3B,EAAEgB,OAAOW,GAAG,EAAE,CAAC,IAAIF,EAAEzB,EAAE2B,GAAGwB,EAAE1B,EAAE,GAAGF,EAAE+rB,iBAAiBnqB,EAAE1B,EAAE,GAAG0B,IAAIpD,EAAE8C,OAAOiD,SAASnF,KAAKs26C,kBAAkBt26C,KAAK2gH,YAAY7/G,EAAE,GAAI,CAAC,EAAEoV,GAAGxW,UAAU0+I,QAAQ,WAAW,IAAI,IAAIj/I,EAAE,EAAEmB,EAAEN,KAAKoz3C,WAAWj03C,EAAEmB,EAAED,OAAOlB,GAAG,EAAE,CAAC,IAAIY,EAAEO,EAAEnB,GAAG6B,EAAEjB,EAAE,GAAGa,EAAEyoB,oBAAoBroB,EAAEjB,EAAE,GAAGiB,IAAI5B,EAAE8C,OAAOiD,SAASnF,KAAKs26C,kBAAkBt26C,KAAK2gH,YAAY5gH,EAAE,GAAI,CAAC,EAAEmW,GAAGxW,UAAU226C,oBAAoB,SAASj36C,GAAG,IAAID,EAAEa,KAAKilM,KAAKrkM,EAAEzB,EAAE2w6C,qBAAqB9v6C,KAAKinI,KAAK,WAAW,IAAIvsH,GAAGvb,EAAEC,IAAI,IAAIkB,EAAEnB,EAAEo36C,QAAQ,IAAIx65C,GAAG5c,EAAEC,GAAGY,KAAKinI,KAAK,UAAU3mI,GAAG,IAAIP,EAAE,IAAI+a,GAAG9Z,EAAE,IAAIqU,GAAGlW,EAAEukH,gBAAgB,IAAIjuG,GAAGzU,EAAEjB,GAAGC,KAAKinI,KAAK,UAAUlnI,GAAGC,KAAKinI,KAAK,YAAYjmI,GAAG,IAAI3B,EAAE,IAAImW,GAAGxV,KAAKinI,KAAK,cAAc5nI,GAAG,IAAIyB,EAAE3B,EAAEq36C,WAAW,IAAIrh6C,GAAGnV,KAAKinI,KAAK,aAAanmI,GAAG,IAAI0B,EAAE,IAAIiZ,GAAGrc,GAAGyB,EAAE,IAAIob,GAAG7c,GAAGD,EAAEskH,WAAW,IAAI5tG,GAAGzW,EAAEoD,EAAE3B,GAAGb,KAAKinI,KAAK,cAAczkI,EAAE,CAAC,eAAexC,KAAKinI,KAAK,aAAapmI,EAAE,CAAC,gBAAgB,IAAIwB,EAAE,IAAI8Y,GAAG/b,GAAGwD,EAAE,IAAIiZ,GAAGzc,GAAGD,EAAEqkH,QAAQ,IAAI5tG,GAAGhV,EAAEyB,EAAEO,GAAG5C,KAAKinI,KAAK,WAAW5kI,GAAGrC,KAAKinI,KAAK,WAAWrkI,EAAE,CAAC,YAAY,gBAAgB,IAAIE,EAAE,IAAIiS,GAAGpS,EAAE,IAAIia,GAAGzd,EAAE+v6C,gBAAgB,IAAIv55C,GAAG/U,EAAE+B,EAAEG,EAAEzD,GAAGW,KAAKinI,KAAK,cAAcnkI,EAAE,CAAC,WAAW,cAAc9C,KAAKinI,KAAK,YAAYtkI,EAAE,CAAC,WAAW,gBAAgB,IAAIiB,EAAEzE,EAAEokH,WAAW,IAAIhuG,GAAGpW,EAAEa,MAAMA,KAAKinI,KAAK,aAAarjI,EAAE,CAAC,aAAa,IAAIlB,EAAEvD,EAAE0kH,SAAS,IAAIvuG,GAAGtV,KAAKinI,KAAK,WAAWvkI,GAAG1C,KAAKinI,KAAK,oBAAoB,IAAIrrH,GAAGzc,IAAI,IAAI,IAAIiE,EAAE,EAAEjB,EAAE,CAAC,UAAU,kBAAkB,cAAc,aAAa,aAAa,UAAU,kBAAkB,aAAa,YAAYiB,EAAEjB,EAAE9B,OAAO+C,GAAG,EAAE,CAAC,IAAIH,EAAEd,EAAEiB,GAAGhE,EAAEy72C,aAAaz72C,EAAE6D,IAAI9D,EAAE8D,GAAG+f,OAAO5jB,EAAE6D,GAAI,CAAC,EAAEiT,GAAGxW,UAAUunI,KAAK,SAAS7nI,EAAED,EAAEyB,GAAGZ,KAAKq9oC,UAAUx7oC,KAAK,CAAC406C,YAAYr36C,EAAE4wD,QAAQ7wD,EAAEq9tB,QAAQ57tB,IAAIZ,KAAK816C,cAAc126C,GAAGD,CAAE,EAAE+W,GAAGxW,UAAUqwC,KAAK,SAAS3wC,GAAG,IAAIY,KAAK026C,gBAAgB,CAAC,IAAI,IAAIv36C,EAAE,EAAEyB,EAAEZ,KAAKq9oC,UAAUl+oC,EAAEyB,EAAEP,OAAOlB,GAAG,EAAEyB,EAAEzB,GAAG6wD,QAAQiR,QAAQjhE,KAAKg26C,SAAShx5C,QAAQhlB,KAAK226C,YAAY,CAAC,EAAE,CAAC,EAAEv36C,GAAGY,KAAK+16C,SAAS,EAAG,CAAC,EAAE7/5C,GAAGxW,UAAUoqG,SAAS,WAAW,IAAI,IAAI1qG,EAAE,EAAED,EAAEa,KAAKq9oC,UAAUj+oC,EAAED,EAAEkB,OAAOjB,GAAG,EAAE,GAAGD,EAAEC,GAAG4wD,QAAQ85C,WAAW,OAAO,EAAG,OAAO,CAAE,EAAE5zF,GAAGxW,UAAUwmH,UAAU,WAAW,QAASlmH,KAAKo26C,kBAAkBz24C,MAAM3/B,KAAKilM,KAAK1hF,WAAW2C,WAAW,EAAEhwG,GAAGxW,UAAUgmH,WAAW,WAAW,QAAS1lH,KAAKo26C,kBAAkB3wzC,MAAM,EAAEvvG,GAAGxW,UAAUqxe,SAAS,WAAW,OAAO99d,QAAQqD,GAAGtW,KAAKo26C,qBAAqBp26C,KAAKkmH,WAAW,EAAEhwG,GAAGxW,UAAUk36C,iBAAiB,SAASx36C,EAAED,EAAEyB,GAAG,IAAI,IAAIN,KAAKlB,EAAE,GAAGkB,IAAIM,KAAKzB,GAAGA,EAAEqB,QAAQF,GAAG,GAAG,OAAO,EAAG,OAAO,CAAE,EAAE4V,GAAGxW,UAAU426C,kBAAkB,SAASl36C,GAAGY,KAAK2gH,YAAYvhH,EAAEA,EAAEmN,KAAK,SAAU,EAAE2J,GAAGxW,UAAUm36C,eAAe,SAASz36C,GAAG,IAAI,IAAID,EAAE,GAAGyB,EAAE,EAAEN,EAAElB,EAAEwB,EAAEN,EAAED,OAAOO,GAAG,EAAE,CAAC,IAAIb,EAAEO,EAAEM,GAAGZ,KAAKww6C,IAAI5z4C,SAAS78B,EAAE+P,SAAS3Q,EAAE0C,KAAK9B,EAAG,CAAC,OAAOZ,CAAC,EAAE+W,GAAGxW,UAAUihH,YAAY,SAASvhH,EAAED,GAAGa,KAAK026C,iBAAgB,EAAG,IAAI,IAAIp26C,EAAE,gBAAgBlB,EAAEmN,UAAK,EAAOnN,EAAEW,EAAE,CAAC406C,kBAAiB,GAAI3z6C,EAAE,CAAC,EAAE3B,EAAE,CAAC,EAAEyB,EAAE1B,EAAEipjB,QAAQrojB,KAAK626C,eAAez36C,EAAEipjB,cAAS,EAAO7ljB,EAAE1B,EAAEF,EAAEur5C,SAASns5C,KAAKww6C,IAAI1v6C,GAAGF,EAAE8ysC,SAAS1zsC,KAAKww6C,IAAIpx6C,GAAGyB,EAAE,EAAEwB,EAAErC,KAAKq9oC,UAAUx8oC,EAAEwB,EAAEhC,OAAOQ,GAAG,EAAE,CAAC,IAAI+B,EAAEP,EAAExB,GAAGiC,EAAEF,EAAE6z6C,YAAY9z6C,EAAEC,EAAEotD,QAAQpsD,EAAEhB,EAAE45tB,QAAQ,GAAG75tB,EAAEoyU,YAAY,CAAC,IAAIryU,OAAE,EAAO1C,KAAK426C,iBAAiBv36C,EAAEuE,EAAEd,GAAGH,EAAEs+D,QAAQt+D,EAAExD,GAAGC,EAAEmN,QAAQ7J,EAAEC,EAAExD,GAAGC,EAAEmN,MAAMnN,EAAEoD,EAAE1B,GAAGd,KAAK826C,mBAAmB/26C,EAAEiB,EAAE0B,EAAEI,EAAExC,GAAGoC,GAAGA,EAAEiy6C,kBAAkB306C,KAAKq06C,wBAAwB3x6C,GAAGC,EAAEmnG,cAAczqG,EAAEyD,GAAGH,EAAG,CAAC,CAAC,IAAIS,EAAE,CAAC,EAAE,IAAI,IAAIjB,KAAKnC,KAAKm26C,wBAAwB926C,EAAE8C,KAAKiB,EAAEjB,GAAG7B,GAAGN,KAAKm26C,wBAAwB926C,GAAGC,OAAOgU,KAAKlQ,GAAG/C,QAAQ2V,GAAGjW,MAAMC,KAAK+16C,SAASl06C,KAAK,CAAC9B,EAAEiB,EAAEoC,IAAIpD,KAAKq06C,wBAAwB/06C,OAAOgU,KAAKjU,GAAGgB,QAAQ2V,GAAGjW,KAAKC,KAAKilM,KAAK8xuC,OAAM,GAAI/26C,KAAK026C,iBAAgB,EAAG,IAAIzz6C,EAAElD,EAAEgx6C,gBAAgB9t6C,IAAIjD,KAAKg26C,SAAShx5C,QAAQhlB,KAAK226C,YAAY,CAAC,EAAE,CAAC,GAAE,GAAI326C,KAAK+16C,SAAS,GAAG9y6C,EAAEjD,KAAKilM,MAAO,EAAE/uL,GAAGxW,UAAUo36C,mBAAmB,SAAS336C,EAAEyB,EAAEN,EAAEP,EAAEiB,GAAG,GAAGV,EAAE,CAAClB,EAAEiqZ,OAAOlqZ,EAAEmB,GAAG,IAAIjB,EAAE,CAACo36C,YAAY126C,EAAEgw6C,cAAczv6C,EAAEyv6C,eAAe/u6C,QAAG,IAASV,EAAEg5mC,YAAY14mC,EAAE++B,KAAKtgC,QAAG,IAASiB,EAAEsv6C,WAAWhv6C,EAAEi16C,KAAKx26C,QAAG,IAASiB,EAAEqv6C,aAAa/u6C,EAAE8+B,MAAMrgC,QAAG,IAASiB,EAAEov6C,eAAe9u6C,EAAE6kH,OAAOpmH,EAAG,CAAC,EAAE6W,GAAGxW,UAAUs36C,cAAc,WAAW,IAAI,IAAI736C,EAAE,CAAC,EAAEyB,EAAE,CAAC,EAAEN,EAAE,CAAC,EAAEP,EAAE,EAAEiB,EAAEhB,KAAK+16C,SAASh26C,EAAEiB,EAAEX,OAAON,GAAG,EAAE,CAAC,IAAIV,EAAE2B,EAAEjB,GAAGe,EAAEzB,EAAE,GAAGmD,EAAEnD,EAAE,GAAGwB,EAAExB,EAAE,GAAGyB,EAAE8u6C,WAAWzw6C,EAAEyw6C,UAAUzw6C,EAAEyw6C,UAAU,IAAIxw6C,EAAEoqC,MAAM,EAAE,IAAIy9F,KAAKnmI,EAAE8u6C,WAAW9u6C,EAAEw4mC,YAAYn6mC,EAAEm6mC,WAAWn6mC,EAAEm6mC,WAAW,GAAGx4mC,EAAEw4mC,WAAWx4mC,EAAE4u6C,eAAevw6C,EAAEuw6C,cAAcvw6C,EAAEuw6C,cAAc,GAAG5u6C,EAAE4u6C,cAAc5u6C,EAAE6u6C,aAAaxw6C,EAAEww6C,YAAYxw6C,EAAEww6C,YAAY,GAAG7u6C,EAAE6u6C,iBAAY,IAAS7u6C,EAAEmlH,SAAS9mH,EAAE8mH,OAAOnlH,EAAEmlH,aAAQ,IAASnlH,EAAE2u6C,cAActw6C,EAAEsw6C,YAAY3u6C,EAAE2u6C,aAAa3u6C,EAAE4z6C,YAAYv16C,EAAEu16C,UAAU5z6C,EAAE4z6C,WAAWt16C,EAAEiqZ,OAAOzoZ,EAAE4B,GAAGpD,EAAEiqZ,OAAO/oZ,EAAEO,EAAG,CAACb,KAAKi36C,oBAAoB936C,EAAEyB,EAAEN,GAAGN,KAAK+16C,SAAS,EAAG,EAAE7/5C,GAAGxW,UAAUu36C,oBAAoB,SAAS736C,EAAED,EAAEyB,GAAG,IAAIN,EAAEN,KAAKilM,KAAKllM,EAAEO,EAAEsiI,UAAU,IAAI5sH,GAAG5W,GAAG,OAAOY,KAAK226C,YAAYx36C,EAAEyB,GAAE,GAAI,IAAII,EAAE5B,EAAEww6C,SAASvw6C,EAAED,EAAEk6mC,UAAUx4mC,EAAE1B,EAAEsw6C,aAAalt6C,EAAEpD,EAAEuw6C,WAAW9u6C,EAAEzB,EAAE6mH,OAAO5jH,EAAEjD,EAAEqw6C,iBAAY,IAASpt6C,IAAIxB,EAAEwB,GAAG/B,EAAEy26C,OAAM,GAAIl26C,EAAEA,GAAGP,EAAEsiI,UAAU4oyC,YAAY,IAAI5o6C,EAAE7C,EAAEiu6C,cAAcht6C,EAAEH,EAAEq0B,IAAIl0B,GAAGH,GAAGC,IAAIf,EAAEy/B,SAAS1+B,GAAG0B,IAAIzC,EAAE2/B,OAAOl9B,GAAGnD,IAAIU,EAAE4/B,MAAMtgC,GAAGU,EAAE4t6C,mBAAmB/q6C,EAAE/B,GAAGb,KAAKilM,KAAK3zD,UAAUlyI,EAAEs16C,WAAW106C,KAAKg26C,SAASn4Y,OAAOz+hC,GAAGY,KAAK226C,YAAYx36C,EAAEyB,GAAE,EAAI,EAAEsV,GAAGxW,UAAUi36C,YAAY,SAASx36C,EAAEyB,EAAEN,GAAG,IAAIP,EAAEC,KAAKgB,EAAEsV,GAAGtW,KAAKo26C,mBAAmB/26C,EAAEiX,GAAGnX,GAAG2B,EAAE,CAAC,EAAE,IAAI,IAAI0B,KAAKrD,EAAEa,KAAKo26C,kBAAkB5z6C,KAAK1B,EAAE0B,EAAE,SAASrD,EAAEqD,GAAGut6C,eAAe/v6C,KAAKo26C,kBAAkB5z6C,GAAGrD,EAAEqD,GAAG,IAAI,IAAI3B,KAAMG,GAAG3B,GAAGW,KAAK6w6C,WAAW,YAAYxx6C,EAAE0w6C,eAAejv6C,EAAEd,KAAK6w6C,WAAWhw6C,EAAEC,EAAED,IAAI,IAAI,IAAIwB,KAAKhD,GAAGW,KAAK6w6C,WAAW,OAAOxx6C,EAAE0w6C,eAAe5w6C,EAAEa,KAAK6w6C,WAAWxu6C,EAAElD,EAAEkD,GAAG0t6C,eAAe,IAAInt6C,EAAEE,EAAE,CAAC,EAAE,IAAI,IAAIH,KAAK3C,KAAKo26C,kBAAkB,CAAC,IAAIxy6C,EAAE5D,KAAKo26C,kBAAkBzz6C,GAAGD,EAAEkB,EAAE6y6C,YAAYrz6C,EAAEQ,EAAEms6C,cAAc/v6C,KAAK816C,cAAcpz6C,GAAGonG,oBAAoB9pG,KAAKo26C,kBAAkBzz6C,GAAGG,EAAEH,EAAE,OAAOC,EAAEhC,EAAE8B,IAAIU,EAAG,CAAC,IAAI,IAAIjB,KAAKW,EAAE9C,KAAK6w6C,WAAW1u6C,EAAEW,EAAEX,IAAI,IAAIc,EAAEqT,GAAGtW,KAAKo26C,mBAAmB,GAAG916C,IAAIU,GAAG3B,KAAK4D,EAAE,CAACjD,KAAK026C,iBAAgB,EAAG,IAAI1z6C,EAAEhD,KAAKg26C,SAASxG,WAAWxv6C,KAAKilM,KAAKzhF,QAAQ6xzC,iBAAiBpx6C,EAAE,SAAS7E,GAAG,OAAO,IAAIA,IAAIW,EAAEk26C,aAAa726C,GAAGA,EAAEW,EAAEk26C,YAAY,EAAEjz6C,GAAGiB,EAAEjB,EAAEw8B,SAASx/B,KAAKilM,KAAKkuL,gBAAgBnwX,EAAEw8B,QAAQ,GAAGx/B,KAAKilM,KAAKusuC,OAAOxu6C,EAAE,CAAC+s6C,cAAcnt6C,MAAM5C,KAAKilM,KAAKqurC,KAAK,IAAIl03C,EAAEuqB,MAAM,UAAU,CAACom5C,cAAcnt6C,KAAKqB,EAAEjE,KAAKilM,KAAKkuL,eAAenzX,KAAKilM,KAAKiyuC,cAAcl36C,KAAK026C,iBAAgB,CAAG,CAAC,EAAExg6C,GAAGxW,UAAUmx6C,WAAW,SAAS1x6C,EAAEyB,GAAGZ,KAAKilM,KAAKqurC,KAAK,IAAIl03C,EAAEuqB,MAAMxqB,EAAEyB,EAAE,CAACmv6C,cAAcnv6C,GAAG,CAAC,GAAI,EAAEsV,GAAGxW,UAAUy36C,cAAc,WAAW,IAAI/36C,EAAEY,KAAK,OAAOA,KAAKilM,KAAK+rtC,iBAAiBhx5C,KAAKilM,KAAKmyuC,iBAAiBjy5C,KAAI,SAAUhmB,UAAUC,EAAE806C,SAAS906C,EAAEuhH,YAAY,IAAIjrG,GAAG,cAAc,CAAC8uC,UAAUrlD,KAAKC,EAAE436C,eAAiB,GAAE,EAAE9g6C,GAAGxW,UAAU206C,oBAAoB,gBAAW,IAASr06C,KAAKk06C,WAAWl06C,KAAKk06C,SAASl06C,KAAKm36C,gBAAiB,EAAE,IAAIph6C,GAAG,SAAS5W,GAAG,SAASyB,EAAEA,EAAEN,GAAGnB,EAAES,KAAKI,MAAMA,KAAKq36C,SAAQ,EAAGr36C,KAAK4z6C,UAAS,EAAG5z6C,KAAK4iI,UAAUhiI,EAAEZ,KAAKi26C,aAAa316C,EAAE416C,YAAY926C,EAAE+0xC,QAAQ,CAAC,wBAAwBn0xC,KAAM,CAAC,OAAOb,IAAIyB,EAAEpB,UAAUL,IAAIyB,EAAElB,UAAUJ,OAAOY,OAAOf,GAAGA,EAAEO,YAAYO,YAAYW,EAAEA,EAAElB,UAAU0gC,UAAU,WAAW,OAAO,IAAIhhC,EAAE2s3C,OAAO/r3C,KAAK4iI,UAAU3jG,OAAOG,IAAIp/B,KAAK4iI,UAAU3jG,OAAOC,IAAI,EAAEt+B,EAAElB,UAAUshC,UAAU,SAAS5hC,EAAED,GAAG,OAAOa,KAAK082C,OAAO,CAACz90C,OAAO7/B,GAAGD,EAAE,EAAEyB,EAAElB,UAAU41Z,MAAM,SAASn2Z,EAAEyB,EAAEN,GAAG,OAAOnB,EAAEC,EAAEoqC,MAAMyyvB,QAAQ98xB,GAAG4v3C,MAAM,GAAG/u3C,KAAKq9Y,MAAMr9Y,KAAK4iI,UAAU3jG,OAAO7/B,EAAEiqZ,OAAO,CAAClnW,OAAOhjD,GAAGyB,GAAGN,EAAE,EAAEM,EAAElB,UAAU29Y,MAAM,SAASl+Y,EAAEyB,EAAEN,GAAG,OAAON,KAAKwx6C,OAAOpy6C,EAAEiqZ,OAAO,CAACpqX,OAAO9/B,GAAGyB,GAAGN,EAAE,EAAEM,EAAElB,UAAU2gC,QAAQ,WAAW,OAAOrgC,KAAK4iI,UAAUjjG,IAAI,EAAE/+B,EAAElB,UAAUyhC,QAAQ,SAAS/hC,EAAED,GAAG,OAAOa,KAAK082C,OAAO,CAAC/80C,KAAKvgC,GAAGD,GAAGa,IAAI,EAAEY,EAAElB,UAAU436C,OAAO,SAASn46C,EAAEyB,EAAEN,GAAG,OAAON,KAAKwx6C,OAAOpy6C,EAAEiqZ,OAAO,CAAC1pX,KAAKxgC,GAAGyB,GAAGN,EAAE,EAAEM,EAAElB,UAAU2nH,OAAO,SAASjoH,EAAED,GAAG,OAAOa,KAAKs36C,OAAOt36C,KAAKqgC,UAAU,EAAEjhC,EAAED,GAAGa,IAAI,EAAEY,EAAElB,UAAU0nH,QAAQ,SAAShoH,EAAED,GAAG,OAAOa,KAAKs36C,OAAOt36C,KAAKqgC,UAAU,EAAEjhC,EAAED,GAAGa,IAAI,EAAEY,EAAElB,UAAUyzX,WAAW,WAAW,OAAOnzX,KAAK4iI,UAAUpjG,OAAO,EAAE5+B,EAAElB,UAAUi35C,WAAW,SAASv35C,EAAED,GAAG,OAAOa,KAAK082C,OAAO,CAACl90C,QAAQpgC,GAAGD,GAAGa,IAAI,EAAEY,EAAElB,UAAU636C,WAAW,WAAW,OAAOv36C,KAAK4iI,UAAU1K,OAAO,EAAEt3H,EAAElB,UAAU836C,WAAW,SAASp46C,EAAED,GAAG,OAAOa,KAAK082C,OAAO,CAACxkvC,QAAQ94H,GAAGD,GAAGa,IAAI,EAAEY,EAAElB,UAAU+36C,SAAS,SAASt46C,EAAEyB,EAAEN,GAAG,OAAON,KAAKwx6C,OAAOpy6C,EAAEiqZ,OAAO,CAAC7pX,QAAQrgC,GAAGyB,GAAGN,EAAE,EAAEM,EAAElB,UAAUw36C,WAAW,SAAS/36C,EAAEyB,GAAG,OAAOZ,KAAKy36C,SAAS,EAAEr46C,EAAEiqZ,OAAO,CAAChkW,SAAS,KAAKlmD,GAAGyB,GAAGZ,IAAI,EAAEY,EAAElB,UAAUg46C,gBAAgB,SAASv46C,EAAEyB,GAAG,OAAOZ,KAAKwx6C,OAAOpy6C,EAAEiqZ,OAAO,CAAC7pX,QAAQ,EAAEE,MAAM,EAAE2lB,SAAS,KAAKlmD,GAAGyB,GAAGZ,IAAI,EAAEY,EAAElB,UAAUi46C,YAAY,SAASv46C,EAAED,GAAG,OAAO0D,KAAKmjH,IAAIhmH,KAAKmzX,cAAcnzX,KAAKi26C,aAAaj26C,KAAKk36C,WAAW936C,EAAED,GAAGa,IAAI,EAAEY,EAAElB,UAAUsv6C,SAAS,WAAW,OAAOhv6C,KAAK4iI,UAAUljG,KAAK,EAAE9+B,EAAElB,UAAUk35C,SAAS,SAASx35C,EAAED,GAAG,OAAOa,KAAK082C,OAAO,CAACh90C,MAAMtgC,GAAGD,GAAGa,IAAI,EAAEY,EAAElB,UAAUk46C,gBAAgB,SAASz46C,EAAEyB,GAAGzB,EAAEC,EAAE0i5C,aAAa7lnB,QAAQ98xB,GAAG,IAAImB,EAAEM,GAAGA,EAAE4+B,SAAS,EAAE,OAAOx/B,KAAK636C,wBAAwB146C,EAAEo74C,eAAep74C,EAAEu74C,eAAep64C,EAAEM,EAAE,EAAEA,EAAElB,UAAUm46C,wBAAwB,SAAS146C,EAAEyB,EAAEN,EAAEP,GAAG,IAAIiB,EAAE,CAAC89B,IAAI,EAAEghE,OAAO,EAAED,MAAM,EAAEhhE,KAAK,GAAG,GAAG,iBAAiB9+B,EAAEX,EAAEiqZ,OAAO,CAACnxR,QAAQl3H,EAAEmhD,OAAO,CAAC,EAAE,GAAG8lE,QAAQjoH,KAAK4iI,UAAU3a,SAASloH,IAAIm4H,QAAQ,CAAC,IAAI74H,EAAEU,EAAEm4H,QAAQn4H,EAAEm4H,QAAQ,CAACp5F,IAAIz/B,EAAEygG,OAAOzgG,EAAEwgG,MAAMxgG,EAAEw/B,KAAKx/B,EAAG,CAACU,EAAEm4H,QAAQ94H,EAAEiqZ,OAAOroZ,EAAEjB,EAAEm4H,SAAS,IAAIp3H,EAAEd,KAAK4iI,UAAUpgI,EAAE1B,EAAEo3H,QAAQr3H,EAAEC,EAAEw2H,QAAQl4H,EAAE2s3C,OAAO9vlB,QAAQ98xB,IAAIkD,EAAEvB,EAAEw2H,QAAQl4H,EAAE2s3C,OAAO9vlB,QAAQr7xB,IAAIgC,EAAE/B,EAAE4kH,QAAQnlH,EAAEuC,KAAKsmC,GAAG,KAAKrmC,EAAET,EAAEojH,QAAQnlH,EAAEuC,KAAKsmC,GAAG,KAAKxmC,EAAE,IAAIvD,EAAEoqC,MAAM3mC,KAAK8K,IAAI/K,EAAEqB,EAAEnB,EAAEmB,GAAGpB,KAAK8K,IAAI/K,EAAEI,EAAEF,EAAEE,IAAIY,EAAE,IAAIxE,EAAEoqC,MAAM3mC,KAAKgL,IAAIjL,EAAEqB,EAAEnB,EAAEmB,GAAGpB,KAAKgL,IAAIjL,EAAEI,EAAEF,EAAEE,IAAIN,EAAEC,EAAEuyB,IAAItxB,GAAGR,GAAGtC,EAAEi+B,OAAOv8B,EAAEq8B,KAAKr8B,EAAEq9F,MAAM9/F,EAAEm4H,QAAQr5F,KAAK9+B,EAAEm4H,QAAQr4B,QAAQn9F,EAAEuB,EAAE9B,GAAGrB,EAAEk+B,QAAQx8B,EAAEs8B,IAAIt8B,EAAEs9F,OAAO//F,EAAEm4H,QAAQp5F,IAAI/+B,EAAEm4H,QAAQp4B,SAASp9F,EAAEM,EAAE,KAAKb,EAAE,GAAGiB,EAAE,GAAG,CAAC,IAAIH,EAAEJ,KAAKgL,IAAI/M,EAAEys6C,UAAUzs6C,EAAEghG,MAAMj/F,KAAKgL,IAAIzK,EAAEjB,IAAIpC,EAAEkoH,SAASjlH,EAAE,iBAAiBjD,EAAEoiD,OAAOl+C,EAAE,IAAI7E,EAAEoqC,MAAMzpC,EAAEoiD,OAAOl+C,EAAElE,EAAEoiD,OAAOn/C,GAAG5D,EAAEoqC,MAAMyyvB,QAAQl8xB,EAAEoiD,QAAQl+C,EAAE,IAAI7E,EAAEoqC,OAAOzpC,EAAEm4H,QAAQr5F,KAAK9+B,EAAEm4H,QAAQr4B,OAAO,GAAG9/F,EAAEm4H,QAAQp5F,IAAI/+B,EAAEm4H,QAAQp4B,QAAQ,GAAG2lB,OAAOnlH,EAAEuC,KAAKsmC,GAAG,KAAK7lC,EAAEN,EAAEmiB,IAAIlhB,GAAG8q3C,KAAKju3C,EAAEghG,MAAMhhG,EAAE44mC,UAAUz2mC,IAAI,MAAO,CAACg8B,OAAOn+B,EAAE4oH,UAAU7oH,EAAEskB,IAAI9iB,GAAGitN,IAAI,GAAGp6L,IAAI5xB,IAAIq8B,KAAK18B,EAAEu8B,QAAQl/B,EAAE,CAAClB,EAAEive,SAAS,8EAA+E,EAAEzte,EAAElB,UAAUuqK,UAAU,SAAS7qK,EAAED,EAAEyB,GAAG,OAAOZ,KAAK836C,aAAa936C,KAAK436C,gBAAgBx46C,EAAED,GAAGA,EAAEyB,EAAE,EAAEA,EAAElB,UAAUsx6C,qBAAqB,SAAS7x6C,EAAEyB,EAAEN,EAAEP,EAAEiB,GAAG,OAAOhB,KAAK836C,aAAa936C,KAAK636C,wBAAwB736C,KAAK4iI,UAAUoryC,cAAc5u6C,EAAEoqC,MAAMyyvB,QAAQ98xB,IAAIa,KAAK4iI,UAAUoryC,cAAc5u6C,EAAEoqC,MAAMyyvB,QAAQr7xB,IAAIN,EAAEP,GAAGA,EAAEiB,EAAE,EAAEJ,EAAElB,UAAUo46C,aAAa,SAAS346C,EAAEyB,EAAEN,GAAG,OAAOnB,UAAUyB,EAAExB,EAAEiqZ,OAAOlqZ,EAAEyB,IAAIs3H,QAAQt3H,EAAE868B,OAAO178B,KAAKwx6C,OAAO5w6C,EAAEN,GAAGN,KAAK+36C,MAAMn36C,EAAEN,IAAIN,IAAI,EAAEY,EAAElB,UAAUg92C,OAAO,SAASv92C,EAAEyB,GAAGZ,KAAK+vC,OAAO,IAAIzvC,EAAEN,KAAK4iI,UAAU7iI,GAAE,EAAGiB,GAAE,EAAG3B,GAAE,EAAG,MAAO,SAASF,GAAGmB,EAAEq/B,QAAQxgC,EAAEwgC,OAAO5/B,GAAE,EAAGO,EAAEq/B,MAAMxgC,EAAEwgC,WAAM,IAASxgC,EAAE8/B,SAAS3+B,EAAE2+B,OAAO7/B,EAAE2s3C,OAAO9vlB,QAAQ98xB,EAAE8/B,SAAS,YAAY9/B,GAAGmB,EAAEk/B,WAAWrgC,EAAEqgC,UAAUx+B,GAAE,EAAGV,EAAEk/B,SAASrgC,EAAEqgC,SAAS,UAAUrgC,GAAGmB,EAAEo/B,SAASvgC,EAAEugC,QAAQrgC,GAAE,EAAGiB,EAAEo/B,OAAOvgC,EAAEugC,OAAO,MAAMvgC,EAAE+4H,SAAS53H,EAAE+s6C,eAAelu6C,EAAE+4H,WAAW53H,EAAE43H,QAAQ/4H,EAAE+4H,SAASl4H,KAAKsz3C,KAAK,IAAIl03C,EAAEuqB,MAAM,YAAY/oB,IAAI0y3C,KAAK,IAAIl03C,EAAEuqB,MAAM,OAAO/oB,IAAIb,GAAGC,KAAKsz3C,KAAK,IAAIl03C,EAAEuqB,MAAM,YAAY/oB,IAAI0y3C,KAAK,IAAIl03C,EAAEuqB,MAAM,OAAO/oB,IAAI0y3C,KAAK,IAAIl03C,EAAEuqB,MAAM,UAAU/oB,IAAII,GAAGhB,KAAKsz3C,KAAK,IAAIl03C,EAAEuqB,MAAM,cAAc/oB,IAAI0y3C,KAAK,IAAIl03C,EAAEuqB,MAAM,SAAS/oB,IAAI0y3C,KAAK,IAAIl03C,EAAEuqB,MAAM,YAAY/oB,IAAIvB,GAAGW,KAAKsz3C,KAAK,IAAIl03C,EAAEuqB,MAAM,aAAa/oB,IAAI0y3C,KAAK,IAAIl03C,EAAEuqB,MAAM,QAAQ/oB,IAAI0y3C,KAAK,IAAIl03C,EAAEuqB,MAAM,WAAW/oB,IAAIZ,KAAKsz3C,KAAK,IAAIl03C,EAAEuqB,MAAM,UAAU/oB,GAAG,EAAEA,EAAElB,UAAU8x6C,OAAO,SAASry6C,EAAEyB,GAAG,IAAIN,EAAEN,KAAKA,KAAK+26C,OAAM,EAAG536C,EAAEg06C,UAAS,KAAMh06C,EAAEC,EAAEiqZ,OAAO,CAAClnW,OAAO,CAAC,EAAE,GAAGkD,SAAS,IAAIwlE,OAAOzrH,EAAEwl5C,MAAMzl5C,IAAIqvP,UAAUrvP,EAAE646C,WAAW546C,EAAEghS,QAAQ+vlC,wBAAwBhx3C,EAAEkmD,SAAS,GAAG,IAAItlD,EAAEC,KAAK4iI,UAAU5hI,EAAEhB,KAAKqgC,UAAUhhC,EAAEW,KAAKmzX,aAAaryX,EAAEd,KAAKgv6C,WAAWxs6C,EAAExC,KAAKu36C,aAAa126C,EAAE,SAAS1B,GAAGA,EAAEwgC,KAAK3+B,EAAEqB,EAAE,YAAYlD,EAAEa,KAAKi46C,kBAAkB946C,EAAEqgC,QAAQngC,GAAGA,EAAEuD,EAAE,UAAUzD,GAAGA,EAAEugC,MAAM5+B,EAAEgC,EAAE,YAAY3D,EAAEA,EAAE+4H,QAAQn4H,EAAEm4H,QAAQv1H,EAAEvD,EAAEoqC,MAAMyyvB,QAAQ98xB,EAAEgjD,QAAQv+C,EAAE7D,EAAEyr6C,YAAYrm5C,IAAIxiB,GAAGD,EAAE3C,EAAEiu6C,cAAcpq6C,GAAGR,EAAEhE,EAAE2s3C,OAAO9vlB,QAAQ98xB,EAAE8/B,QAAQv8B,GAAG1C,KAAKk46C,iBAAiB906C,GAAG,IAAIjB,EAAEc,EAAED,EAAEjD,EAAEu3H,QAAQ50H,GAAGuB,EAAElE,EAAEu3H,QAAQl0H,GAAG8xB,IAAIlyB,GAAGM,EAAEvD,EAAE25mC,UAAU74mC,EAAEG,GAAG7B,EAAE8mH,SAAS9jH,EAAE/C,EAAE2s3C,OAAO9vlB,QAAQ98xB,EAAE8mH,QAAQhjH,EAAElD,EAAE+t6C,cAAc3r6C,IAAI,IAAIoB,EAAE,CAACwne,OAAO/qe,KAAKq36C,QAAQ5O,QAAQzo6C,KAAK4z6C,SAASpL,SAASxo6C,KAAKm46C,UAAUC,SAASp46C,KAAKq46C,WAAW,OAAOr46C,KAAK4z6C,SAAS5z6C,KAAK4z6C,UAAU/y6C,IAAIG,EAAEhB,KAAKm46C,UAAUn46C,KAAKm46C,WAAW946C,IAAIgD,EAAErC,KAAKq46C,UAAUr46C,KAAKq46C,WAAWz16C,IAAI9B,EAAEd,KAAK8qK,UAAU/qK,EAAEst6C,eAAevq6C,GAAG9C,KAAKs46C,QAAQn56C,EAAEg06C,OAAOnz6C,KAAKu46C,aAAa336C,EAAEzB,EAAE0w6C,YAAYts6C,GAAGvD,KAAKw46C,OAAM,SAAUr56C,GAAG,GAAGmB,EAAEsz6C,WAAW7z6C,EAAE4/B,KAAKvgC,EAAE2qJ,OAAO/oJ,EAAEH,EAAE1B,IAAImB,EAAE636C,YAAYp46C,EAAEy/B,QAAQpgC,EAAE2qJ,OAAO1qJ,EAAEgD,EAAElD,IAAImB,EAAE+36C,YAAYt46C,EAAE2/B,MAAMtgC,EAAE2qJ,OAAOjpJ,EAAE8B,EAAEzD,IAAImB,EAAEwqK,WAAW/qK,EAAEut6C,mBAAmB9q6C,EAAEM,EAAE3D,GAAGyE,EAAE7D,EAAEyr6C,YAAYrm5C,IAAIxiB,IAAIR,EAAEpC,EAAE4t6C,mBAAmBxr6C,EAAEc,OAAQ,CAAC,IAAIP,EAAE3C,EAAE25mC,UAAU35mC,EAAE4/B,KAAK3+B,GAAGoC,EAAEvC,EAAEG,EAAE6B,KAAKgL,IAAI,EAAEvK,GAAGT,KAAK8K,IAAI,GAAGrK,GAAGC,EAAEV,KAAK6yF,IAAItyF,EAAE,EAAEjE,GAAG+E,EAAEnE,EAAE2pH,UAAU1mH,EAAEmiB,IAAIlhB,EAAE8q3C,KAAK5v3C,EAAEoE,IAAIwr3C,KAAKrs3C,IAAI3C,EAAE4t6C,mBAAmB5t6C,EAAEgt6C,kBAAkB7o6C,EAAE0T,OAAO1T,EAAEN,EAAG,CAACtD,EAAEm46C,gBAAgB736C,EAAI,IAAE,SAAUxB,GAAGkB,EAAEo46C,WAAW936C,EAAExB,EAAI,GAAED,GAAGa,IAAI,EAAEY,EAAElB,UAAU646C,aAAa,SAASp56C,EAAEyB,EAAEN,QAAG,IAASA,IAAIA,EAAE,CAAC,GAAGN,KAAKq36C,SAAQ,EAAGz26C,GAAGN,EAAEyqe,QAAQ/qe,KAAKsz3C,KAAK,IAAIl03C,EAAEuqB,MAAM,YAAYxqB,IAAIa,KAAK4z6C,WAAWtz6C,EAAEmo6C,SAASzo6C,KAAKsz3C,KAAK,IAAIl03C,EAAEuqB,MAAM,YAAYxqB,IAAIa,KAAKm46C,YAAY736C,EAAEko6C,UAAUxo6C,KAAKsz3C,KAAK,IAAIl03C,EAAEuqB,MAAM,cAAcxqB,IAAIa,KAAKq46C,YAAY/36C,EAAE836C,UAAUp46C,KAAKsz3C,KAAK,IAAIl03C,EAAEuqB,MAAM,aAAaxqB,GAAI,EAAEyB,EAAElB,UAAU+46C,gBAAgB,SAASt56C,GAAGa,KAAKsz3C,KAAK,IAAIl03C,EAAEuqB,MAAM,OAAOxqB,IAAIa,KAAK4z6C,UAAU5z6C,KAAKsz3C,KAAK,IAAIl03C,EAAEuqB,MAAM,OAAOxqB,IAAIa,KAAKm46C,WAAWn46C,KAAKsz3C,KAAK,IAAIl03C,EAAEuqB,MAAM,SAASxqB,IAAIa,KAAKq46C,WAAWr46C,KAAKsz3C,KAAK,IAAIl03C,EAAEuqB,MAAM,QAAQxqB,GAAI,EAAEyB,EAAElB,UAAUg56C,WAAW,SAASv56C,EAAEyB,GAAG,IAAIZ,KAAKs46C,UAAU136C,GAAGZ,KAAKs46C,UAAU136C,EAAE,QAAQZ,KAAKs46C,QAAQ,IAAIh46C,EAAEN,KAAK4z6C,SAAS7z6C,EAAEC,KAAKm46C,UAAUn36C,EAAEhB,KAAKq46C,UAAUr46C,KAAKq36C,SAAQ,EAAGr36C,KAAK4z6C,UAAS,EAAG5z6C,KAAKm46C,WAAU,EAAGn46C,KAAKq46C,WAAU,EAAGr46C,KAAK8qK,UAAS,EAAGxqK,GAAGN,KAAKsz3C,KAAK,IAAIl03C,EAAEuqB,MAAM,UAAUxqB,IAAIY,GAAGC,KAAKsz3C,KAAK,IAAIl03C,EAAEuqB,MAAM,YAAYxqB,IAAI6B,GAAGhB,KAAKsz3C,KAAK,IAAIl03C,EAAEuqB,MAAM,WAAWxqB,IAAIa,KAAKsz3C,KAAK,IAAIl03C,EAAEuqB,MAAM,UAAUxqB,GAAI,CAAC,EAAEyB,EAAElB,UAAUq46C,MAAM,SAAS546C,EAAEyB,GAAG,IAAIN,EAAEN,KAAK,IAAIb,EAAE646C,WAAW546C,EAAEghS,QAAQ+vlC,qBAAqB,CAAC,IAAIpw3C,EAAEX,EAAEw5X,KAAKz5X,EAAE,CAAC,SAAS,OAAO,UAAU,QAAQ,WAAW,OAAOa,KAAK082C,OAAO382C,EAAEa,EAAE,CAACZ,KAAK+vC,OAAO5wC,EAAEC,EAAEiqZ,OAAO,CAAClnW,OAAO,CAAC,EAAE,GAAG0jE,MAAM,IAAIgW,MAAM,KAAKhR,OAAOzrH,EAAEwl5C,MAAMzl5C,GAAG,IAAI6B,EAAEhB,KAAK4iI,UAAUvjI,EAAEW,KAAKqgC,UAAUv/B,EAAEd,KAAKmzX,aAAa3wX,EAAExC,KAAKgv6C,WAAWnu6C,EAAEb,KAAKu36C,aAAal16C,EAAE,SAASlD,EAAEC,EAAEs5V,OAAOv5V,EAAEwgC,KAAK3+B,EAAEknH,QAAQlnH,EAAEinH,SAAS5oH,EAAEuD,EAAE,YAAYzD,EAAEa,KAAKi46C,kBAAkB946C,EAAEqgC,QAAQ1+B,GAAGA,EAAEgC,EAAE,UAAU3D,GAAGA,EAAEugC,MAAMl9B,EAAEG,EAAE,YAAYxD,EAAEA,EAAE+4H,QAAQl3H,EAAEk3H,QAAQt0H,EAAE5C,EAAE04mC,UAAUr3mC,EAAEhD,GAAGqD,EAAEtD,EAAEoqC,MAAMyyvB,QAAQ98xB,EAAEgjD,QAAQ/+C,EAAEpC,EAAEwq6C,YAAYrm5C,IAAIziB,GAAGP,EAAEnB,EAAEgt6C,cAAc5q6C,GAAGH,EAAE7D,EAAE2s3C,OAAO9vlB,QAAQ98xB,EAAE8/B,QAAQ98B,GAAGnC,KAAKk46C,iBAAiBj16C,GAAG,IAAID,EAAEhC,EAAEs2H,QAAQn1H,GAAG8B,EAAEjD,EAAEs2H,QAAQr0H,GAAGiyB,IAAIlyB,GAAGM,EAAEnE,EAAE08H,MAAMt4H,EAAEV,KAAK8K,IAAI3M,EAAE+9B,MAAM/9B,EAAEg+B,QAAQ96B,EAAEX,EAAEK,EAAEc,EAAET,EAAEiiL,MAAM,GAAG,YAAY/mL,EAAE,CAAC,IAAI0E,EAAEzE,EAAEs5V,MAAM71V,KAAKgL,IAAI1O,EAAE+oH,QAAQ7oH,EAAEgD,GAAGrB,EAAEknH,QAAQlnH,EAAEinH,SAASnjH,EAAEvB,EAAEvC,EAAE04mC,UAAU71mC,EAAExE,GAAGiE,EAAET,KAAK4yF,KAAK3wF,EAAEJ,EAAE,EAAG,CAAC,IAAIlB,EAAEF,EAAEA,EAAE,SAASa,EAAE/E,GAAG,IAAID,GAAG+E,EAAEA,EAAEX,EAAEA,GAAGnE,GAAG,EAAE,GAAGoE,EAAEA,EAAEkB,EAAEA,IAAI,GAAGtF,EAAE8E,EAAEX,GAAGC,EAAEkB,GAAG,OAAO7B,KAAKwnB,IAAIxnB,KAAK4yF,KAAKt2F,EAAEA,EAAE,GAAGA,EAAE,CAAC,SAASwG,EAAEvG,GAAG,OAAQyD,KAAKkxB,IAAI30B,GAAGyD,KAAKkxB,KAAK30B,IAAI,CAAC,CAAC,SAASmG,EAAEnG,GAAG,OAAQyD,KAAKkxB,IAAI30B,GAAGyD,KAAKkxB,KAAK30B,IAAI,CAAC,CAAC,IAAIyF,EAAEV,EAAE,GAAG0B,EAAE,SAASzG,GAAG,OAAOmG,EAAEV,GAAGU,EAAEV,EAAEvB,EAAElE,EAAE,EAAEiF,EAAE,SAASjF,GAAG,OAAOmE,IAAIgC,EAAEV,IAAIc,EAAExG,EAAE0F,EAAEvB,EAAElE,GAAGmG,EAAEpG,IAAIwG,EAAEd,IAAIrB,GAAGkB,EAAE,IAAIvF,CAAE,EAAEmF,GAAGH,EAAE,GAAGU,GAAGvB,EAAE,GAAGT,KAAKmjH,IAAIthH,GAAG,OAAOgjC,SAASpjC,GAAG,CAAC,GAAGzB,KAAKmjH,IAAIziH,EAAEW,GAAG,KAAK,OAAOlE,KAAKwx6C,OAAOry6C,EAAEyB,GAAG,IAAI8C,EAAEQ,EAAEX,GAAG,EAAE,EAAEe,EAAEzB,KAAKmjH,IAAInjH,KAAKwnB,IAAInmB,EAAEX,IAAID,EAAEe,EAAE,WAAW,OAAO,CAAC,EAAEwB,EAAE,SAASzG,GAAG,OAAOyD,KAAKkxB,IAAIrwB,EAAEJ,EAAElE,EAAE,CAAE,CAAC,OAAOD,EAAEkmD,SAAS,aAAalmD,GAAGA,EAAEkmD,SAAS,IAAI/gD,GAAG,gBAAgBnF,GAAGA,EAAE6vW,YAAY1rW,GAAGnE,EAAE0mH,OAAO1mH,EAAE8oF,aAAa9oF,EAAEkmD,SAASlmD,EAAE8oF,cAAc9oF,EAAEkmD,SAAS,GAAGrlD,KAAK4z6C,UAAS,EAAG5z6C,KAAKm46C,UAAUr36C,IAAI8B,EAAE5C,KAAKq46C,UAAUv16C,IAAIN,EAAExC,KAAK8qK,UAAU9pK,EAAEqs6C,eAAe1q6C,GAAG3C,KAAKu46C,aAAa336C,GAAE,GAAIZ,KAAKw46C,OAAM,SAAUr56C,GAAG,IAAIY,EAAEZ,EAAEmF,EAAEV,EAAE,EAAEiC,EAAE9F,GAAGiB,EAAE2+B,KAAK,IAAIxgC,EAAEkD,EAAEhD,EAAE2B,EAAEus6C,UAAU3p6C,GAAGtD,EAAE636C,YAAYn36C,EAAEw+B,QAAQpgC,EAAE2qJ,OAAOjpJ,EAAE8B,EAAEzD,IAAImB,EAAE+36C,YAAYr36C,EAAE0+B,MAAMtgC,EAAE2qJ,OAAOvnJ,EAAEM,EAAE3D,IAAImB,EAAEwqK,WAAW9pK,EAAEss6C,mBAAmBzs6C,EAAE8B,EAAExD,GAAGiE,EAAEpC,EAAEwq6C,YAAYrm5C,IAAIziB,IAAI,IAAIP,EAAE,IAAIhD,EAAE8D,EAAEjC,EAAE0oH,UAAU1mH,EAAEmiB,IAAIlhB,EAAE8q3C,KAAK1q3C,EAAEtE,KAAKgv3C,KAAKnr3C,IAAI5C,EAAE2s6C,mBAAmB3s6C,EAAE+r6C,kBAAkB5q6C,EAAEyV,OAAOzV,EAAEiB,GAAG9C,EAAEm46C,gBAAgB736C,EAAI,IAAE,WAAY,OAAON,EAAEo46C,WAAW936C,EAAG,GAAEzB,GAAGa,IAAI,EAAEY,EAAElB,UAAUi56C,SAAS,WAAW,QAAS346C,KAAK446C,YAAY,EAAEh46C,EAAElB,UAAUqwC,KAAK,WAAW,OAAO/vC,KAAK+26C,OAAO,EAAEn26C,EAAElB,UAAUq36C,MAAM,SAAS336C,EAAED,GAAG,GAAGa,KAAK446C,eAAe546C,KAAK646C,mBAAmB746C,KAAK446C,qBAAqB546C,KAAK446C,oBAAoB546C,KAAK846C,cAAc946C,KAAK+46C,WAAW,CAAC,IAAIn46C,EAAEZ,KAAK+46C,kBAAkB/46C,KAAK+46C,WAAWn46C,EAAEhB,KAAKI,KAAKb,EAAG,CAAC,IAAIC,EAAE,CAAC,IAAIkB,EAAEN,KAAK+sH,SAASzsH,GAAGA,EAAEyvC,MAAK,EAAI,CAAC,OAAO/vC,IAAI,EAAEY,EAAElB,UAAU846C,MAAM,SAASr56C,EAAEyB,EAAEN,IAAG,IAAKA,EAAEkuP,SAAS,IAAIluP,EAAE+kD,UAAUlmD,EAAE,GAAGyB,MAAMZ,KAAKg56C,WAAW556C,EAAEghS,QAAQ30Q,MAAMzrB,KAAKi56C,aAAa346C,EAAEN,KAAK846C,aAAa356C,EAAEa,KAAK+46C,WAAWn46C,EAAEZ,KAAK446C,aAAa546C,KAAKk56C,oBAAoBl56C,KAAKm56C,sBAAuB,EAAEv46C,EAAElB,UAAUy56C,qBAAqB,WAAW,IAAIh66C,EAAE0D,KAAKgL,KAAKzO,EAAEghS,QAAQ30Q,MAAMzrB,KAAKg56C,YAAYh56C,KAAKi56C,aAAa5z3C,SAAS,GAAGrlD,KAAK846C,aAAa946C,KAAKi56C,aAAapuzC,OAAO1rH,IAAIA,EAAE,EAAEa,KAAK446C,aAAa546C,KAAKk56C,oBAAoBl56C,KAAKm56C,sBAAsBn56C,KAAK+vC,MAAO,EAAEnvC,EAAElB,UAAUu46C,kBAAkB,SAAS946C,EAAEyB,GAAGzB,EAAEC,EAAEwY,KAAKzY,GAAG,IAAI,KAAK,IAAImB,EAAEuC,KAAKmjH,IAAI7mH,EAAEyB,GAAG,OAAOiC,KAAKmjH,IAAI7mH,EAAE,IAAIyB,GAAGN,IAAInB,GAAG,KAAK0D,KAAKmjH,IAAI7mH,EAAE,IAAIyB,GAAGN,IAAInB,GAAG,KAAKA,CAAC,EAAEyB,EAAElB,UAAUw46C,iBAAiB,SAAS946C,GAAG,IAAID,EAAEa,KAAK4iI,UAAU,GAAGzjI,EAAE4t6C,oBAAoB5t6C,EAAEiv6C,SAAS,CAAC,IAAIxt6C,EAAExB,EAAEggC,IAAIjgC,EAAE8/B,OAAOG,IAAIhgC,EAAEggC,KAAKx+B,EAAE,KAAK,IAAIA,GAAG,IAAI,IAAI,CAAE,CAAC,EAAEA,CAAC,CAAt4T,CAAw4TxB,EAAEmi5C,SAASzr4C,GAAG,SAAS3W,QAAG,IAASA,IAAIA,EAAE,CAAC,GAAGa,KAAKmpB,QAAQhqB,EAAEC,EAAE+0xC,QAAQ,CAAC,qBAAqB,kBAAkB,cAAc,kBAAkBn0xC,KAAM,EAAE8V,GAAGpW,UAAU056C,mBAAmB,WAAW,MAAO,cAAc,EAAEtj6C,GAAGpW,UAAU8oO,MAAM,SAASppO,GAAG,IAAID,EAAEa,KAAKmpB,SAASnpB,KAAKmpB,QAAQ2vuC,QAAQ,OAAO94vC,KAAKilM,KAAK7lM,EAAEY,KAAKy7vB,WAAW76vB,EAAEV,OAAO,MAAM,sCAAsCF,KAAKq56C,eAAez46C,EAAEV,OAAO,SAAS,8BAA8BF,KAAKy7vB,YAAYz7vB,KAAKq56C,eAAe1s5C,iBAAiB,QAAQ3sB,KAAKs56C,oBAAoBt56C,KAAKu56C,iBAAiBv56C,KAAKq56C,eAAe,qBAAqBr56C,KAAKop3C,gBAAgBxo3C,EAAEV,OAAO,MAAM,6BAA6BF,KAAKy7vB,YAAYz7vB,KAAKop3C,gBAAgBzs1C,aAAa,OAAO,QAAQx9B,GAAGa,KAAKy7vB,WAAW9rqB,UAAUxqE,IAAI,oBAAoBnlB,KAAKqp3C,sBAAsBrp3C,KAAKsp3C,kBAAkBtp3C,KAAKilM,KAAKr0L,GAAG,YAAY5Q,KAAKm7sC,aAAan7sC,KAAKilM,KAAKr0L,GAAG,aAAa5Q,KAAKm7sC,aAAan7sC,KAAKilM,KAAKr0L,GAAG,UAAU5Q,KAAKsp3C,sBAAiB,IAASnq3C,IAAIa,KAAKilM,KAAKr0L,GAAG,SAAS5Q,KAAKw56C,gBAAgBx56C,KAAKw56C,kBAAkBx56C,KAAKy7vB,UAAU,EAAE3lvB,GAAGpW,UAAUspO,SAAS,WAAWpoO,EAAEiyB,OAAO7yB,KAAKy7vB,YAAYz7vB,KAAKilM,KAAKj3J,IAAI,YAAYhuC,KAAKm7sC,aAAan7sC,KAAKilM,KAAKj3J,IAAI,aAAahuC,KAAKm7sC,aAAan7sC,KAAKilM,KAAKj3J,IAAI,UAAUhuC,KAAKsp3C,iBAAiBtp3C,KAAKilM,KAAKj3J,IAAI,SAAShuC,KAAKw56C,gBAAgBx56C,KAAKilM,UAAK,EAAOjlM,KAAKy56C,iBAAY,CAAO,EAAE3j6C,GAAGpW,UAAU656C,iBAAiB,SAASn66C,EAAED,GAAG,IAAIyB,EAAEZ,KAAKilM,KAAKwmrC,aAAa,sBAAsBts3C,GAAGC,EAAEiwK,MAAMzuK,EAAExB,EAAEu9B,aAAa,aAAa/7B,EAAG,EAAEkV,GAAGpW,UAAU456C,mBAAmB,WAAWt56C,KAAKy7vB,WAAW9rqB,UAAU/yD,SAAS,0BAA0B58B,KAAKy7vB,WAAW9rqB,UAAU98D,OAAO,yBAAyB7yB,KAAKq56C,eAAe184C,aAAa,eAAe,WAAW38B,KAAKy7vB,WAAW9rqB,UAAUxqE,IAAI,yBAAyBnlB,KAAKq56C,eAAe184C,aAAa,eAAe,QAAS,EAAE7mB,GAAGpW,UAAU4p3C,gBAAgB,WAAW,IAAInq3C,EAAEa,KAAK056C,UAAUv66C,IAAIA,EAAEa,KAAK056C,UAAU156C,KAAKy7vB,WAAWl6tB,cAAc,wBAAwB,IAAI3gC,EAAE,CAAC,CAACikB,IAAI,QAAQ1jB,MAAMnB,KAAK256C,YAAY,CAAC905C,IAAI,KAAK1jB,MAAMnB,KAAKgxuB,SAAS,CAACnstB,IAAI,eAAe1jB,MAAMnB,KAAKilM,KAAKkqtC,gBAAgBt+B,oBAAoBzx3C,EAAE08T,OAAO20jC,eAAe,GAAGtx3C,EAAE,CAAC,IAAImB,EAAEM,EAAE8yB,QAAO,SAAUt0B,EAAED,EAAEmB,GAAG,OAAOnB,EAAEgC,QAAQ/B,GAAGD,EAAE0lB,IAAI,IAAI1lB,EAAEgC,OAAOb,EAAEM,EAAEP,OAAO,EAAE,IAAI,KAAKjB,CAAE,GAAE,KAAKD,EAAE87B,KAAK77B,EAAE08T,OAAOy0jC,aAAa,IAAIjw3C,GAAGN,KAAKilM,KAAK20uC,MAAM556C,KAAKilM,KAAK20uC,MAAM7K,eAAc,GAAI,IAAI5v6C,EAAE066C,IAAI,oBAAoB756C,KAAKu56C,iBAAiBp66C,EAAE,cAAe,CAAC,EAAE2W,GAAGpW,UAAUy7sC,YAAY,SAAS/7sC,IAAIA,GAAG,aAAaA,EAAEkw5C,gBAAgB,eAAelw5C,EAAEkw5C,gBAAgB,UAAUlw5C,EAAE4vQ,WAAWhvQ,KAAKqp3C,sBAAsBrp3C,KAAKsp3C,kBAAmB,EAAExz2C,GAAGpW,UAAU2p3C,oBAAoB,WAAW,GAAGrp3C,KAAKilM,KAAK5wL,MAAM,CAAC,IAAIjV,EAAE,GAAG,GAAGY,KAAKmpB,QAAQ2/1C,oBAAoBrp3C,MAAMkS,QAAQ3R,KAAKmpB,QAAQ2/1C,mBAAmB1p3C,EAAEA,EAAE4C,OAAOhC,KAAKmpB,QAAQ2/1C,kBAAkBz51C,KAAI,SAAUjwB,GAAG,MAAO,iBAAiBA,EAAE,GAAGA,CAAE,KAAI,iBAAiBY,KAAKmpB,QAAQ2/1C,mBAAmB1p3C,EAAEyC,KAAK7B,KAAKmpB,QAAQ2/1C,oBAAoB9o3C,KAAKilM,KAAK5wL,MAAMyq5C,WAAW,CAAC,IAAI3/5C,EAAEa,KAAKilM,KAAK5wL,MAAMyq5C,WAAW9+5C,KAAK256C,WAAWx66C,EAAE+oC,MAAMloC,KAAKgxuB,QAAQ7xuB,EAAEosB,EAAG,CAAC,IAAI3qB,EAAEZ,KAAKilM,KAAK5wL,MAAMo74C,aAAa,IAAI,IAAInv5C,KAAKM,EAAE,CAAC,IAAIb,EAAEa,EAAEN,GAAG,GAAGP,EAAEo15C,KAAK,CAAC,IAAIn05C,EAAEjB,EAAE0rV,YAAYzqV,EAAE+jG,aAAa3lG,EAAEoB,QAAQQ,EAAE+jG,aAAa,GAAG3lG,EAAEyC,KAAKb,EAAE+jG,YAAa,CAAC,CAAC3lG,EAAEmtC,MAAK,SAAUntC,EAAED,GAAG,OAAOC,EAAEiB,OAAOlB,EAAEkB,MAAO,IAAG,IAAIhB,GAAGD,EAAEA,EAAEytB,QAAO,SAAU1tB,EAAEyB,GAAG,IAAI,IAAIN,EAAEM,EAAE,EAAEN,EAAElB,EAAEiB,OAAOC,IAAI,GAAGlB,EAAEkB,GAAGE,QAAQrB,IAAI,EAAE,OAAO,EAAG,OAAO,CAAG,KAAI0N,KAAK,OAAOxN,IAAIW,KAAKy56C,cAAcz56C,KAAKy56C,YAAYp66C,EAAED,EAAEiB,QAAQL,KAAKop3C,gBAAgBnvuC,UAAU56I,EAAEW,KAAKy7vB,WAAW9rqB,UAAU98D,OAAO,0BAA0B7yB,KAAKy7vB,WAAW9rqB,UAAUxqE,IAAI,yBAAyBnlB,KAAK056C,UAAU,KAAM,CAAC,EAAE5j6C,GAAGpW,UAAU856C,eAAe,WAAWx56C,KAAKilM,KAAK6quC,qBAAqBlv4C,aAAa,IAAI5gC,KAAKy7vB,WAAW9rqB,UAAUxqE,IAAI,oBAAoBnlB,KAAKy7vB,WAAW9rqB,UAAU98D,OAAO,mBAAmB,wBAAyB,EAAE,IAAInc,GAAG,WAAWtX,EAAE+0xC,QAAQ,CAAC,eAAen0xC,MAAMZ,EAAE+0xC,QAAQ,CAAC,kBAAkBn0xC,KAAM,EAAE0W,GAAGhX,UAAU8oO,MAAM,SAASppO,GAAGY,KAAKilM,KAAK7lM,EAAEY,KAAKy7vB,WAAW76vB,EAAEV,OAAO,MAAM,iBAAiB,IAAIf,EAAEyB,EAAEV,OAAO,IAAI,sBAAsB,OAAOf,EAAE2Q,OAAO,SAAS3Q,EAAE066C,IAAI,oBAAoB166C,EAAE87B,KAAK,0BAA0B97B,EAAEw9B,aAAa,aAAa38B,KAAKilM,KAAKwmrC,aAAa,sBAAsBts3C,EAAEw9B,aAAa,MAAM,qBAAqB38B,KAAKy7vB,WAAWlnvB,YAAYpV,GAAGa,KAAKy7vB,WAAWpnvB,MAAMC,QAAQ,OAAOtU,KAAKilM,KAAKr0L,GAAG,aAAa5Q,KAAK856C,aAAa956C,KAAK856C,cAAc956C,KAAKilM,KAAKr0L,GAAG,SAAS5Q,KAAKw56C,gBAAgBx56C,KAAKw56C,iBAAiBx56C,KAAKy7vB,UAAU,EAAE/kvB,GAAGhX,UAAUspO,SAAS,WAAWpoO,EAAEiyB,OAAO7yB,KAAKy7vB,YAAYz7vB,KAAKilM,KAAKj3J,IAAI,aAAahuC,KAAK856C,aAAa956C,KAAKilM,KAAKj3J,IAAI,SAAShuC,KAAKw56C,eAAgB,EAAE9i6C,GAAGhX,UAAU056C,mBAAmB,WAAW,MAAO,aAAa,EAAE1i6C,GAAGhX,UAAUo66C,YAAY,SAAS166C,GAAGA,GAAG,aAAaA,EAAEkw5C,iBAAiBtv5C,KAAKy7vB,WAAWpnvB,MAAMC,QAAQtU,KAAK+56C,gBAAgB,QAAQ,OAAQ,EAAErj6C,GAAGhX,UAAUq66C,cAAc,WAAW,GAAG/56C,KAAKilM,KAAK5wL,MAAM,CAAC,IAAIjV,EAAEY,KAAKilM,KAAK5wL,MAAMo74C,aAAa,IAAI,IAAItw5C,KAAKC,EAAE,GAAGA,EAAED,GAAGssV,YAAYuulC,YAAY,OAAO,EAAG,OAAO,CAAE,CAAC,EAAEtj6C,GAAGhX,UAAU856C,eAAe,WAAW,IAAIp66C,EAAEY,KAAKy7vB,WAAWz7tB,SAAS,GAAG5gC,EAAEiB,OAAO,CAAC,IAAIlB,EAAEC,EAAE,GAAGY,KAAKilM,KAAK6quC,qBAAqBlv4C,YAAY,IAAIzhC,EAAEwwF,UAAUxqE,IAAI,oBAAoBhmB,EAAEwwF,UAAU98D,OAAO,mBAAoB,CAAC,EAAE,IAAI5c,GAAG,WAAWjW,KAAKi66C,OAAO,GAAGj66C,KAAKkliC,IAAI,EAAElliC,KAAKk66C,UAAS,EAAGl66C,KAAKm66C,mBAAkB,CAAG,EAAElk6C,GAAGvW,UAAUylB,IAAI,SAAS/lB,GAAG,IAAID,IAAIa,KAAKkliC,IAAI,OAAOlliC,KAAKi66C,OAAOp46C,KAAK,CAACqnB,SAAS9pB,EAAEmsB,GAAGpsB,EAAE49yB,WAAU,IAAK59yB,CAAC,EAAE8W,GAAGvW,UAAUmzB,OAAO,SAASzzB,GAAG,IAAI,IAAID,EAAEa,KAAKm66C,kBAAkBv56C,EAAE,EAAEN,EAAEnB,EAAEa,KAAKi66C,OAAOj46C,OAAO7C,GAAGa,KAAKi66C,OAAOr56C,EAAEN,EAAED,OAAOO,GAAG,EAAE,CAAC,IAAIb,EAAEO,EAAEM,GAAG,GAAGb,EAAEwrB,KAAKnsB,EAAE,YAAYW,EAAEg9yB,WAAU,EAAG,CAAC,EAAE9myB,GAAGvW,UAAUu6F,IAAI,SAAS76F,QAAG,IAASA,IAAIA,EAAE,GAAG,IAAID,EAAEa,KAAKm66C,kBAAkBn66C,KAAKi66C,OAAOj66C,KAAKi66C,OAAO,GAAG,IAAI,IAAIr56C,EAAE,EAAEN,EAAEnB,EAAEyB,EAAEN,EAAED,OAAOO,GAAG,EAAE,CAAC,IAAIb,EAAEO,EAAEM,GAAG,IAAIb,EAAEg9yB,YAAYh9yB,EAAEmpB,SAAS9pB,GAAGY,KAAKk66C,UAAU,KAAK,CAACl66C,KAAKk66C,UAAS,EAAGl66C,KAAKm66C,mBAAkB,CAAG,EAAElk6C,GAAGvW,UAAUslB,MAAM,WAAWhlB,KAAKm66C,oBAAoBn66C,KAAKk66C,UAAS,GAAIl66C,KAAKi66C,OAAO,EAAG,EAAE,IAAI9j6C,GAAG,CAAC,uCAAuC,qBAAqB,iCAAiC,eAAe,0BAA0B,mBAAmB,yBAAyB,kBAAkB,kCAAkC,mBAAmB,wCAAwC,yBAAyB,oBAAoB,cAAc,iCAAiC,yBAAyB,2BAA2B,UAAU,4BAA4B,WAAW,oBAAoB,KAAK,sBAAsB,IAAI,0BAA0B,KAAK,qBAAqB,KAAK,6BAA6B,MAAMQ,GAAGvX,EAAE8C,OAAO6tV,iBAAiB54U,GAAG/X,EAAE8C,OAAOy8P,YAAYnoP,GAAGpX,EAAE8C,OAAOomQ,YAAY7wP,GAAG,CAACwnB,OAAO,CAAC,EAAE,GAAGU,KAAK,EAAEH,QAAQ,EAAEE,MAAM,EAAEwoF,SAAS,EAAED,QAAQ,GAAGG,SAAS,EAAED,SAAS,GAAG0yvC,aAAY,EAAGt3vC,YAAW,EAAGgzzC,SAAQ,EAAG9yzC,YAAW,EAAGD,SAAQ,EAAGK,UAAS,EAAGH,iBAAgB,EAAGwrzC,iBAAgB,EAAGsH,YAAW,EAAGN,YAAY,EAAE/F,eAAe,EAAEoF,iBAAgB,EAAG7t0C,MAAK,EAAGszwC,oBAAmB,EAAGwwC,8BAA6B,EAAGvwC,uBAAsB,EAAGmB,aAAY,EAAG2wD,mBAAkB,EAAGqN,qBAAoB,EAAGC,iBAAiB,KAAK/sB,yBAAyB,aAAalze,iBAAiB,KAAK19f,YAAY,KAAKkh9B,aAAa,IAAIy8B,uBAAsB,GAAIjk5C,GAAG,SAAS9V,GAAG,SAASP,EAAEZ,GAAG,IAAIyB,EAAEZ,KAAK,GAAG,OAAOb,EAAEC,EAAEiqZ,OAAO,CAAC,EAAE5xY,GAAGtY,IAAI+oH,SAAS,MAAM/oH,EAAE8oH,SAAS9oH,EAAE+oH,QAAQ/oH,EAAE8oH,QAAQ,MAAM,IAAIzgG,MAAM,oDAAoD,GAAG,MAAMroB,EAAEipH,UAAU,MAAMjpH,EAAEgpH,UAAUhpH,EAAEipH,SAASjpH,EAAEgpH,SAAS,MAAM,IAAI3gG,MAAM,sDAAsD,GAAG,MAAMroB,EAAEipH,UAAUjpH,EAAEipH,SAAS,EAAE,MAAM,IAAI5gG,MAAM,+CAA+C,GAAG,MAAMroB,EAAEgpH,UAAUhpH,EAAEgpH,SAAS,GAAG,MAAM,IAAI3gG,MAAM,6CAA6C,IAAIznB,EAAE,IAAI6a,GAAGzb,EAAE+oH,QAAQ/oH,EAAE8oH,QAAQ9oH,EAAEipH,SAASjpH,EAAEgpH,SAAShpH,EAAE4t6C,mBAAmB,GAAGzs6C,EAAEV,KAAKI,KAAKD,EAAEZ,GAAGa,KAAKs66C,aAAan76C,EAAE072C,YAAY762C,KAAK6z5C,kBAAkB105C,EAAEk76C,iBAAiBr66C,KAAKu66C,8BAA8Bp76C,EAAEqs5C,6BAA6Bxr5C,KAAKw66C,uBAAuBr76C,EAAE872C,sBAAsBj72C,KAAKy66C,WAAWt76C,EAAE0s5C,UAAU7r5C,KAAK066C,aAAav76C,EAAEi92C,YAAYp82C,KAAKi26C,aAAa926C,EAAE+26C,YAAYl26C,KAAK4v5C,qBAAqBzw5C,EAAEi76C,oBAAoBp66C,KAAK215C,cAAcx25C,EAAEy+3C,aAAa593C,KAAK266C,uBAAuBx76C,EAAEk75C,sBAAsBr65C,KAAK466C,mBAAmB,EAAE566C,KAAKiv5C,uBAAuB9v5C,EAAE+o5C,sBAAsBlo5C,KAAKo36C,iBAAiB,IAAInh6C,GAAGjW,KAAK666C,UAAU,GAAG766C,KAAK866C,OAAO176C,EAAEirC,WAAWrqC,KAAK0+/B,QAAQt//B,EAAEiqZ,OAAO,CAAC,EAAElzY,GAAGhX,EAAE0tc,QAAQ7sc,KAAKkw6C,gBAAgB/w6C,EAAEgx6C,eAAenw6C,KAAKmv5C,gBAAgB,IAAI/v5C,EAAEkj5C,eAAenj5C,EAAEi76B,iBAAiBj76B,EAAEu9a,aAAa,iBAAiBv9a,EAAEiiJ,WAAW,GAAGphJ,KAAKy7vB,WAAWr8vB,EAAE8C,OAAOiD,SAASipF,eAAejvF,EAAEiiJ,YAAYphJ,KAAKy7vB,WAAW,MAAM,IAAIj0uB,MAAM,cAAcroB,EAAEiiJ,UAAU,oBAAqB,CAAC,KAAKjiJ,EAAEiiJ,qBAAqBjqI,IAAI,MAAM,IAAIqQ,MAAM,8DAA8DxnB,KAAKy7vB,WAAWt8vB,EAAEiiJ,SAAU,CAAC,GAAGjiJ,EAAE476C,WAAW/66C,KAAKys6C,aAAatt6C,EAAE476C,WAAW376C,EAAE+0xC,QAAQ,CAAC,kBAAkB,kBAAkB,eAAe,eAAe,oBAAoBn0xC,MAAMA,KAAKg76C,kBAAkBh76C,KAAKi76C,qBAAgB,IAASj76C,KAAKo08B,QAAQ,MAAM,IAAI5s7B,MAAM,+BAA+BxnB,KAAK4Q,GAAG,QAAO,WAAY,OAAOhQ,EAAE0wI,SAAQ,EAAI,IAAGtxI,KAAK4Q,GAAG,WAAU,WAAY,OAAOhQ,EAAE0wI,SAAQ,EAAI,IAAGtxI,KAAK4Q,GAAG,QAAO,WAAY,OAAOhQ,EAAE0wI,SAAQ,EAAI,SAAG,IAASlyI,EAAE8C,SAAS9C,EAAE8C,OAAOyqB,iBAAiB,SAAS3sB,KAAKk76C,iBAAgB,GAAI976C,EAAE8C,OAAOyqB,iBAAiB,SAAS3sB,KAAKm76C,iBAAgB,GAAI/76C,EAAE8C,OAAOyqB,iBAAiB,oBAAoB3sB,KAAKm76C,iBAAgB,IAAKn76C,KAAK+sH,SAAS,IAAI72G,GAAGlW,KAAKb,GAAGa,KAAK456C,MAAMz66C,EAAEuoG,MAAM,IAAIjtF,GAAG,iBAAiBtb,EAAEuoG,MAAMvoG,EAAEuoG,WAAM,GAAQmn0C,MAAM7u6C,MAAMA,KAAK456C,OAAO556C,KAAK456C,MAAM9K,kBAAkB9u6C,KAAK082C,OAAO,CAACz90C,OAAO9/B,EAAE8/B,OAAOU,KAAKxgC,EAAEwgC,KAAKH,QAAQrgC,EAAEqgC,QAAQE,MAAMvgC,EAAEugC,QAAQvgC,EAAE6+H,SAASh+H,KAAK6uH,SAAS7uH,KAAKiqK,UAAU9qK,EAAE6+H,OAAO5+H,EAAEiqZ,OAAO,CAAC,EAAElqZ,EAAEur3C,iBAAiB,CAACrl0C,SAAS,OAAOrlD,KAAK6uH,SAAS7uH,KAAKo76C,0BAA0Bj86C,EAAEmu5C,yBAAyBnu5C,EAAEkV,OAAOrU,KAAKska,SAASnla,EAAEkV,MAAM,CAACi54C,yBAAyBnu5C,EAAEmu5C,2BAA2Bnu5C,EAAE672C,oBAAoBh72C,KAAKq76C,WAAW,IAAIvl6C,GAAG,CAACgz2C,kBAAkB3p3C,EAAE2p3C,qBAAqB9o3C,KAAKq76C,WAAW,IAAI3k6C,GAAGvX,EAAEm86C,cAAct76C,KAAK4Q,GAAG,cAAa,WAAYhQ,EAAEgiI,UAAUqqyC,YAAYrs6C,EAAE872C,OAAO972C,EAAEyT,MAAMyq5C,WAAa,IAAG9+5C,KAAK4Q,GAAG,QAAO,SAAUzR,GAAGyB,EAAE0wI,QAAQ,UAAUnyI,EAAE6vQ,UAAUpuQ,EAAE0y3C,KAAK,IAAIl03C,EAAEuqB,MAAMxqB,EAAE6vQ,SAAS,OAAO7vQ,GAAK,IAAGa,KAAK4Q,GAAG,eAAc,SAAUzR,GAAGyB,EAAE0y3C,KAAK,IAAIl03C,EAAEuqB,MAAMxqB,EAAE6vQ,SAAS,cAAc7vQ,GAAK,GAAG,CAACmB,IAAIP,EAAEP,UAAUc,IAAIP,EAAEL,UAAUJ,OAAOY,OAAOI,GAAGA,EAAEZ,YAAYO,YAAYF,EAAE,IAAIiB,EAAE,CAACsq6C,mBAAmB,CAACxn6C,cAAa,GAAIyn6C,YAAY,CAACzn6C,cAAa,GAAImk5C,mBAAmB,CAACnk5C,cAAa,GAAIun6C,sBAAsB,CAACvn6C,cAAa,GAAIqrZ,QAAQ,CAACrrZ,cAAa,GAAIswL,SAAS,CAACtwL,cAAa,GAAIwC,QAAQ,CAACxC,cAAa,IAAK,OAAO/D,EAAEL,UAAU2v5C,UAAU,WAAW,OAAOrv5C,KAAK866C,MAAM,EAAE/66C,EAAEL,UAAU276C,WAAW,SAASl86C,EAAEyB,GAAG,QAAG,IAASA,IAAIA,EAAEzB,EAAEi66C,mBAAmBj66C,EAAEi66C,qBAAqB,cAAcj66C,IAAIA,EAAEqpO,MAAM,OAAOxoO,KAAKsz3C,KAAK,IAAIl03C,EAAEijZ,WAAW,IAAI76X,MAAM,uGAAuG,IAAIlnB,EAAEnB,EAAEqpO,MAAMxoO,MAAMA,KAAK666C,UAAUh56C,KAAK1C,GAAG,IAAIY,EAAEC,KAAKu76C,kBAAkB366C,GAAG,OAAQ,IAAIA,EAAEJ,QAAQ,UAAUT,EAAE4hC,aAAarhC,EAAEP,EAAEoqF,YAAYpqF,EAAEwU,YAAYjU,GAAGN,IAAI,EAAED,EAAEL,UAAU876C,cAAc,SAASr86C,GAAG,IAAIA,IAAIA,EAAE6pO,SAAS,OAAOhpO,KAAKsz3C,KAAK,IAAIl03C,EAAEijZ,WAAW,IAAI76X,MAAM,0GAA0G,IAAI5mB,EAAEZ,KAAK666C,UAAUr66C,QAAQrB,GAAG,OAAOyB,GAAG,GAAGZ,KAAK666C,UAAU535C,OAAOriB,EAAE,GAAGzB,EAAE6pO,SAAShpO,MAAMA,IAAI,EAAED,EAAEL,UAAU+76C,WAAW,SAASr86C,GAAG,OAAOY,KAAK666C,UAAUr66C,QAAQpB,IAAI,CAAC,EAAEW,EAAEL,UAAUmvH,OAAO,SAAS1vH,GAAG,IAAIyB,EAAEZ,KAAK076C,uBAAuBp76C,EAAEM,EAAE,GAAGb,EAAEa,EAAE,GAAG,GAAGN,IAAIN,KAAK4iI,UAAU7jG,OAAOh/B,IAAIC,KAAK4iI,UAAU5jG,OAAO,OAAOh/B,KAAKA,KAAK276C,cAAcr76C,EAAEP,GAAGC,KAAK4iI,UAAU/T,OAAOvuH,EAAEP,GAAGC,KAAKo08B,QAAQvl1B,OAAOvuH,EAAEP,GAAG,IAAIiB,GAAGhB,KAAKq36C,QAAQ,OAAOr26C,GAAGhB,KAAKsz3C,KAAK,IAAIl03C,EAAEuqB,MAAM,YAAYxqB,IAAIm03C,KAAK,IAAIl03C,EAAEuqB,MAAM,OAAOxqB,IAAIa,KAAKsz3C,KAAK,IAAIl03C,EAAEuqB,MAAM,SAASxqB,IAAI6B,GAAGhB,KAAKsz3C,KAAK,IAAIl03C,EAAEuqB,MAAM,UAAUxqB,IAAIa,IAAI,EAAED,EAAEL,UAAUk/H,UAAU,WAAW,OAAO5+H,KAAK4iI,UAAUhE,WAAW,EAAE7+H,EAAEL,UAAUyu6C,aAAa,WAAW,OAAOnu6C,KAAK4iI,UAAUuryC,cAAc,EAAEpu6C,EAAEL,UAAU+s6C,aAAa,SAAStt6C,GAAG,OAAOa,KAAK4iI,UAAU6pyC,aAAart6C,EAAE0i5C,aAAa7lnB,QAAQ98xB,IAAIa,KAAKsxI,SAAS,EAAEvxI,EAAEL,UAAUk86C,WAAW,SAASx86C,GAAG,IAAIA,EAAE,MAAMA,GAAG,EAAEA,KAAK,GAAGA,GAAGY,KAAK4iI,UAAU3a,QAAQ,OAAOjoH,KAAK4iI,UAAU1a,QAAQ9oH,EAAEY,KAAKsxI,UAAUtxI,KAAKqgC,UAAUjhC,GAAGY,KAAKmhC,QAAQ/hC,GAAGY,KAAK,MAAM,IAAIwnB,MAAM,gEAAgE,EAAEznB,EAAEL,UAAUm86C,WAAW,WAAW,OAAO776C,KAAK4iI,UAAU1a,OAAO,EAAEnoH,EAAEL,UAAUsvZ,WAAW,SAAS5vZ,GAAG,IAAIA,EAAE,MAAMA,EAAE,GAAGA,IAAIY,KAAK4iI,UAAU1a,QAAQ,OAAOloH,KAAK4iI,UAAU3a,QAAQ7oH,EAAEY,KAAKsxI,UAAUtxI,KAAKqgC,UAAUjhC,GAAGY,KAAKmhC,QAAQ/hC,GAAGY,KAAK,MAAM,IAAIwnB,MAAM,mDAAmD,EAAEznB,EAAEL,UAAU+qZ,WAAW,WAAW,OAAOzqZ,KAAK4iI,UAAU3a,OAAO,EAAEloH,EAAEL,UAAUo86C,YAAY,SAAS186C,GAAG,IAAIA,EAAE,MAAMA,EAAE,EAAEA,GAAG,EAAE,MAAM,IAAIooB,MAAM,+CAA+C,GAAGpoB,GAAG,GAAGA,GAAGY,KAAK4iI,UAAUza,SAAS,OAAOnoH,KAAK4iI,UAAUxa,SAAShpH,EAAEY,KAAKsxI,UAAUtxI,KAAKgv6C,WAAW5v6C,GAAGY,KAAK425C,SAASx35C,GAAGY,KAAK,MAAM,IAAIwnB,MAAM,iEAAiE,EAAEznB,EAAEL,UAAUq86C,YAAY,WAAW,OAAO/76C,KAAK4iI,UAAUxa,QAAQ,EAAEroH,EAAEL,UAAUs86C,YAAY,SAAS586C,GAAG,IAAIA,EAAE,MAAMA,EAAE,GAAGA,GAAG,GAAG,MAAM,IAAIooB,MAAM,6CAA6C,GAAGpoB,GAAGY,KAAK4iI,UAAUxa,SAAS,OAAOpoH,KAAK4iI,UAAUza,SAAS/oH,EAAEY,KAAKsxI,UAAUtxI,KAAKgv6C,WAAW5v6C,GAAGY,KAAK425C,SAASx35C,GAAGY,KAAK,MAAM,IAAIwnB,MAAM,qDAAqD,EAAEznB,EAAEL,UAAUu86C,YAAY,WAAW,OAAOj86C,KAAK4iI,UAAUza,QAAQ,EAAEpoH,EAAEL,UAAUw86C,qBAAqB,WAAW,OAAOl86C,KAAK4iI,UAAUmqyC,iBAAiB,EAAEht6C,EAAEL,UAAUy86C,qBAAqB,SAAS/86C,GAAG,OAAOY,KAAK4iI,UAAUmqyC,kBAAkB3t6C,EAAEY,KAAKsxI,SAAS,EAAEvxI,EAAEL,UAAU43H,QAAQ,SAASn4H,GAAG,OAAOa,KAAK4iI,UAAUkryC,cAAc1u6C,EAAE2s3C,OAAO9vlB,QAAQ98xB,GAAG,EAAEY,EAAEL,UAAUgqH,UAAU,SAASvqH,GAAG,OAAOa,KAAK4iI,UAAUoryC,cAAc5u6C,EAAEoqC,MAAMyyvB,QAAQ98xB,GAAG,EAAEY,EAAEL,UAAUqxe,SAAS,WAAW,OAAO/we,KAAKq36C,SAASr36C,KAAK+sH,SAASgkX,UAAU,EAAEhxe,EAAEL,UAAUwmH,UAAU,WAAW,OAAOlmH,KAAK4z6C,UAAU5z6C,KAAK+sH,SAAS7G,WAAW,EAAEnmH,EAAEL,UAAUgmH,WAAW,WAAW,OAAO1lH,KAAKm46C,WAAWn46C,KAAK+sH,SAASrH,YAAY,EAAE3lH,EAAEL,UAAU086C,yBAAyB,SAASh96C,EAAED,EAAEyB,GAAG,IAAIN,EAAEP,EAAEC,KAAK,GAAG,eAAeZ,GAAG,cAAcA,EAAE,CAAC,IAAI4B,GAAE,EAAG,MAAO,CAACguH,MAAM7vH,EAAEmwC,SAAS1uC,EAAEy76C,UAAU,CAACh2sC,UAAU,SAAS/lO,GAAG,IAAIjB,EAAEU,EAAEy0kC,SAASr1kC,GAAGY,EAAEy/2C,sBAAsBl/2C,EAAE60I,MAAM,CAACr3G,OAAO,CAAC3+B,KAAK,GAAGE,EAAEgB,OAAOW,IAAIA,GAAE,EAAGJ,EAAEhB,KAAKG,EAAE,IAAImb,GAAG9b,EAAEW,EAAEO,EAAEyv6C,cAAc,CAACrk4C,SAASrsC,MAAM2B,GAAE,CAAG,EAAEslO,SAAS,WAAWtlO,GAAE,CAAG,GAAG,CAAC,GAAG,eAAe5B,GAAG,aAAaA,EAAE,CAAC,IAAIC,GAAE,EAAG,MAAO,CAAC2vH,MAAM7vH,EAAEmwC,SAAS1uC,EAAEy76C,UAAU,CAACh2sC,UAAU,SAAS/lO,IAAIP,EAAEy0kC,SAASr1kC,GAAGY,EAAEy/2C,sBAAsBl/2C,EAAE60I,MAAM,CAACr3G,OAAO,CAAC3+B,KAAK,IAAIkB,OAAOhB,GAAE,EAAGA,IAAIA,GAAE,EAAGuB,EAAEhB,KAAKG,EAAE,IAAImb,GAAG9b,EAAEW,EAAEO,EAAEyv6C,gBAAiB,EAAEzpsC,SAAS,SAASnnO,GAAGE,IAAIA,GAAE,EAAGuB,EAAEhB,KAAKG,EAAE,IAAImb,GAAG9b,EAAEW,EAAEZ,EAAE4w6C,gBAAiB,GAAG,CAAC,MAAO,CAAC/gzC,MAAM7vH,EAAEmwC,SAAS1uC,EAAEy76C,WAAW/76C,EAAE,CAAC,EAAEA,EAAElB,GAAG,SAASA,GAAG,IAAIkB,EAAEP,EAAEy0kC,SAASr1kC,GAAGY,EAAEy/2C,sBAAsBpg3C,EAAE+1I,MAAM,CAACr3G,OAAO,CAAC3+B,KAAK,GAAGmB,EAAED,SAASjB,EAAEssC,SAASprC,EAAEM,EAAEhB,KAAKG,EAAEX,UAAUA,EAAEssC,SAAU,EAAEprC,GAAG,EAAEP,EAAEL,UAAUkR,GAAG,SAASxR,EAAED,EAAEyB,GAAG,QAAG,IAASA,EAAE,OAAON,EAAEZ,UAAUkR,GAAGhR,KAAKI,KAAKZ,EAAED,GAAG,IAAIY,EAAEC,KAAKo86C,yBAAyBh96C,EAAED,EAAEyB,GAAG,IAAI,IAAII,KAAKhB,KAAKs86C,oBAAoBt86C,KAAKs86C,qBAAqB,CAAC,EAAEt86C,KAAKs86C,oBAAoBl96C,GAAGY,KAAKs86C,oBAAoBl96C,IAAI,GAAGY,KAAKs86C,oBAAoBl96C,GAAGyC,KAAK9B,GAAGA,EAAEs86C,UAAUr86C,KAAK4Q,GAAG5P,EAAEjB,EAAEs86C,UAAUr76C,IAAI,OAAOhB,IAAI,EAAED,EAAEL,UAAU0pB,KAAK,SAAShqB,EAAED,EAAEyB,GAAG,QAAG,IAASA,EAAE,OAAON,EAAEZ,UAAU0pB,KAAKxpB,KAAKI,KAAKZ,EAAED,GAAG,IAAIY,EAAEC,KAAKo86C,yBAAyBh96C,EAAED,EAAEyB,GAAG,IAAI,IAAII,KAAKjB,EAAEs86C,UAAUr86C,KAAKopB,KAAKpoB,EAAEjB,EAAEs86C,UAAUr76C,IAAI,OAAOhB,IAAI,EAAED,EAAEL,UAAUsuC,IAAI,SAAS5uC,EAAED,EAAEyB,GAAG,IAAIb,EAAEC,KAAK,YAAO,IAASY,EAAEN,EAAEZ,UAAUsuC,IAAIpuC,KAAKI,KAAKZ,EAAED,IAAIa,KAAKs86C,qBAAqBt86C,KAAKs86C,oBAAoBl96C,IAAI,SAASkB,GAAG,IAAI,IAAIU,EAAEV,EAAElB,GAAGC,EAAE,EAAEA,EAAE2B,EAAEX,OAAOhB,IAAI,CAAC,IAAIyB,EAAEE,EAAE3B,GAAG,GAAGyB,EAAEkuH,QAAQ7vH,GAAG2B,EAAEwuC,WAAW1uC,EAAE,CAAC,IAAI,IAAI4B,KAAK1B,EAAEu76C,UAAUt86C,EAAEiuC,IAAIxrC,EAAE1B,EAAEu76C,UAAU756C,IAAI,OAAOxB,EAAEiiB,OAAO5jB,EAAE,GAAGU,CAAC,CAAC,CAAC,CAAnK,CAAqKC,KAAKs86C,qBAAqBt86C,KAAK,EAAED,EAAEL,UAAU8/2C,sBAAsB,SAASrg3C,EAAEyB,GAAG,IAAIZ,KAAKqU,MAAM,MAAO,GAAG,IAAI/T,EAAE,QAAG,IAASM,QAAG,IAASzB,GAAGA,aAAaC,EAAEoqC,OAAO/pC,MAAMkS,QAAQxS,KAAKyB,EAAEzB,EAAEA,OAAE,GAAQyB,EAAEA,GAAG,CAAC,GAAGzB,EAAEA,GAAG,CAAC,CAAC,EAAE,GAAG,CAACa,KAAK4iI,UAAU7jG,MAAM/+B,KAAK4iI,UAAU5jG,oBAAoB5/B,EAAEoqC,OAAO,iBAAiBrqC,EAAE,GAAGmB,EAAE,CAAClB,EAAEoqC,MAAMyyvB,QAAQ98xB,QAAS,CAAC,IAAIY,EAAEX,EAAEoqC,MAAMyyvB,QAAQ98xB,EAAE,IAAI6B,EAAE5B,EAAEoqC,MAAMyyvB,QAAQ98xB,EAAE,IAAImB,EAAE,CAACP,EAAE,IAAIX,EAAEoqC,MAAMxoC,EAAEiD,EAAElE,EAAEiD,GAAGhC,EAAE,IAAI5B,EAAEoqC,MAAMzpC,EAAEkE,EAAEjD,EAAEgC,GAAGjD,EAAG,CAAC,OAAOC,KAAKqU,MAAMmr2C,sBAAsBl/2C,EAAEM,EAAEZ,KAAK4iI,UAAU,EAAE7iI,EAAEL,UAAUog5C,oBAAoB,SAAS1g5C,EAAED,GAAG,OAAOa,KAAKqU,MAAMyr4C,oBAAoB1g5C,EAAED,EAAE,EAAEY,EAAEL,UAAU4ka,SAAS,SAASnla,EAAEyB,GAAG,OAAO,KAAMA,EAAExB,EAAEiqZ,OAAO,CAAC,EAAE,CAACikgC,yBAAyBtt5C,KAAKo76C,2BAA2Bx66C,IAAI2niB,MAAM3niB,EAAE0s5C,2BAA2Btt5C,KAAKo76C,2BAA2Bp76C,KAAKqU,OAAOlV,GAAGa,KAAKu86C,WAAWp96C,EAAEyB,GAAGZ,OAAOA,KAAKo76C,0BAA0Bx66C,EAAE0s5C,yBAAyBtt5C,KAAKw86C,aAAar96C,EAAEyB,GAAG,EAAEb,EAAEL,UAAU+r3C,aAAa,SAASrs3C,GAAG,IAAID,EAAEa,KAAK0+/B,QAAQt//B,GAAG,GAAG,MAAMD,EAAE,MAAM,IAAIqoB,MAAM,sBAAsBpoB,EAAE,KAAK,OAAOD,CAAC,EAAEY,EAAEL,UAAU886C,aAAa,SAASp96C,EAAED,GAAG,OAAOa,KAAKqU,QAAQrU,KAAKqU,MAAMq/2C,iBAAiB,MAAM1z3C,KAAKqU,MAAMqriC,WAAWtgjC,GAAGY,KAAKqU,MAAM,IAAItL,GAAG/I,KAAKb,GAAG,CAAC,GAAGa,KAAKqU,MAAMq/2C,iBAAiB1z3C,KAAK,CAACqU,MAAMrU,KAAKqU,QAAQ,iBAAiBjV,EAAEY,KAAKqU,MAAMoq5C,QAAQr/5C,GAAGY,KAAKqU,MAAMuq5C,SAASx/5C,GAAGY,cAAcA,KAAKqU,MAAMrU,KAAK,EAAED,EAAEL,UAAU+86C,oBAAoB,WAAWz86C,KAAKqU,QAAQrU,KAAKqU,MAAM,IAAItL,GAAG/I,KAAK,CAAC,GAAGA,KAAKqU,MAAMq/2C,iBAAiB1z3C,KAAK,CAACqU,MAAMrU,KAAKqU,QAAQrU,KAAKqU,MAAMwq5C,YAAa,EAAE9+5C,EAAEL,UAAU686C,WAAW,SAASp96C,EAAEyB,GAAG,IAAIN,EAAEN,KAAK,GAAG,iBAAiBb,EAAE,CAAC,IAAIY,EAAEC,KAAKmv5C,gBAAgBh+B,kBAAkBhy3C,GAAG6B,EAAEhB,KAAKmv5C,gBAAgB/0e,iBAAiBr66B,EAAEX,EAAEoj5C,aAAa7vB,OAAOvz3C,EAAEkm5C,QAAQtk5C,GAAE,SAAU7B,EAAEY,GAAGZ,EAAEmB,EAAEgz3C,KAAK,IAAIl03C,EAAEijZ,WAAWljZ,IAAIY,GAAGO,EAAEo86C,YAAY386C,EAAEa,EAAI,GAAG,KAAM,iBAAiBzB,GAAGa,KAAK086C,YAAYv96C,EAAEyB,EAAG,EAAEb,EAAEL,UAAUg96C,YAAY,SAASv96C,EAAEyB,GAAG,IAAIZ,KAAKqU,MAAMq2H,SAASvrI,IAAIa,KAAKsxI,SAAQ,EAAI,CAAC,MAAMhxI,GAAGlB,EAAEive,SAAS,kCAAkC/te,EAAEyxB,SAASzxB,EAAEwB,OAAOxB,GAAG,yCAAyCN,KAAKw86C,aAAar96C,EAAEyB,EAAG,CAAC,EAAEb,EAAEL,UAAUy7hC,SAAS,WAAW,GAAGn7hC,KAAKqU,MAAM,OAAOrU,KAAKqU,MAAM84rB,WAAW,EAAEptsB,EAAEL,UAAUu82C,cAAc,WAAW,OAAOj82C,KAAKqU,MAAMrU,KAAKqU,MAAM8iM,SAAS/3M,EAAEive,SAAS,sCAAsC,EAAEtue,EAAEL,UAAU625C,UAAU,SAASn35C,EAAED,GAAG,OAAOa,KAAKy86C,sBAAsBz86C,KAAKqU,MAAMki5C,UAAUn35C,EAAED,GAAGa,KAAKsxI,SAAQ,EAAG,EAAEvxI,EAAEL,UAAUog6C,eAAe,SAAS3g6C,GAAG,IAAIyB,EAAEZ,KAAKqU,OAAOrU,KAAKqU,MAAMo74C,aAAatw5C,GAAG,QAAG,IAASyB,EAAE,OAAOA,EAAEu2M,SAASn3M,KAAKsz3C,KAAK,IAAIl03C,EAAEijZ,WAAW,IAAI76X,MAAM,+BAA+BroB,EAAE,MAAO,EAAEY,EAAEL,UAAUi96C,eAAe,WAAW,IAAIv96C,EAAEY,KAAKqU,OAAOrU,KAAKqU,MAAMo74C,aAAa,IAAI,IAAItw5C,KAAKC,EAAE,CAAC,IAAIwB,EAAExB,EAAED,GAAGgxL,OAAO,IAAI,IAAI7vL,KAAKM,EAAE,CAAC,IAAIb,EAAEa,EAAEN,GAAG,GAAG,WAAWP,EAAE4L,OAAO,YAAY5L,EAAE4L,MAAM,OAAO,CAAE,CAAC,CAAC,OAAO,CAAE,EAAE5L,EAAEL,UAAUwg6C,cAAc,SAAS9g6C,EAAED,EAAEyB,GAAG,OAAOZ,KAAKy86C,sBAAsBz86C,KAAKqU,MAAM6r5C,cAAc9g6C,EAAED,EAAEyB,EAAE,EAAEb,EAAEL,UAAUyq5C,aAAa,SAAS/q5C,GAAG,OAAOY,KAAKqU,MAAM814C,aAAa/q5C,GAAGY,KAAKsxI,SAAQ,EAAG,EAAEvxI,EAAEL,UAAU+rV,UAAU,SAASrsV,GAAG,OAAOY,KAAKqU,MAAMo3U,UAAUrsV,EAAE,EAAEW,EAAEL,UAAU6pR,SAAS,SAASpqR,EAAEyB,EAAEN,QAAG,IAASA,IAAIA,EAAE,CAAC,GAAG,IAAIP,EAAEO,EAAEsuH,gBAAW,IAAS7uH,IAAIA,EAAE,GAAG,IAAIiB,EAAEV,EAAEujP,SAAI,IAAS7iP,IAAIA,GAAE,GAAI,IAAI3B,EAAEiB,EAAEst4C,SAAS9s4C,EAAER,EAAEut4C,SAASrr4C,EAAElC,EAAEo4F,QAAQ,GAAG14F,KAAKy86C,sBAAsB776C,aAAa+V,IAAIH,IAAI5V,aAAa4V,GAAG,CAAC,IAAI3V,EAAEzB,EAAEghS,QAAQl6C,aAAatlP,GAAGZ,KAAKqU,MAAMk1Q,SAASpqR,EAAE,CAACqQ,KAAK,IAAIpQ,EAAEij5C,UAAU,CAACtj3C,MAAMl+B,EAAEk+B,MAAMC,OAAOn+B,EAAEm+B,QAAQn+B,EAAE2O,MAAMo/G,WAAW7uH,EAAE6t4C,SAASvu4C,EAAEwu4C,SAAS/s4C,EAAE43F,QAAQl2F,EAAEqhP,IAAI7iP,EAAEsF,QAAQ,GAAI,KAAM,CAAC,QAAG,IAAS1F,EAAEm+B,YAAO,IAASn+B,EAAEo+B,OAAO,OAAOh/B,KAAKsz3C,KAAK,IAAIl03C,EAAEijZ,WAAW,IAAI76X,MAAM,qNAAqN,IAAInlB,EAAEzB,EAAEZ,KAAKqU,MAAMk1Q,SAASpqR,EAAE,CAACqQ,KAAK,IAAIpQ,EAAEij5C,UAAU,CAACtj3C,MAAMn+B,EAAEm+B,MAAMC,OAAOp+B,EAAEo+B,QAAQ,IAAIrf,WAAW/e,EAAE4O,OAAOo/G,WAAW7uH,EAAE6t4C,SAASvu4C,EAAEwu4C,SAAS/s4C,EAAE43F,QAAQl2F,EAAEqhP,IAAI7iP,EAAEsF,QAAQ,EAAE2l5C,UAAU5p5C,IAAIA,EAAEmmO,OAAOnmO,EAAEmmO,MAAMxoO,KAAKb,EAAG,CAAC,EAAEY,EAAEL,UAAUkt5C,YAAY,SAASzt5C,EAAEyB,GAAG,IAAIN,EAAEN,KAAKqU,MAAMu3J,SAASzsK,GAAG,IAAImB,EAAE,OAAON,KAAKsz3C,KAAK,IAAIl03C,EAAEijZ,WAAW,IAAI76X,MAAM,uGAAuG,IAAIznB,EAAEa,aAAa+V,IAAIH,IAAI5V,aAAa4V,GAAGpX,EAAEghS,QAAQl6C,aAAatlP,GAAGA,EAAEI,EAAEjB,EAAEg/B,MAAM1/B,EAAEU,EAAEi/B,OAAOl+B,EAAEf,EAAEyP,KAAK,YAAO,IAASxO,QAAG,IAAS3B,EAAEW,KAAKsz3C,KAAK,IAAIl03C,EAAEijZ,WAAW,IAAI76X,MAAM,wNAAwNxmB,IAAIV,EAAEkP,KAAKuvB,OAAO1/B,IAAIiB,EAAEkP,KAAKwvB,OAAOh/B,KAAKsz3C,KAAK,IAAIl03C,EAAEijZ,WAAW,IAAI76X,MAAM,uGAAuGlnB,EAAEkP,KAAK/C,QAAQ3L,IAAIF,aAAa+V,IAAIH,IAAI5V,aAAa4V,UAAUxW,KAAKqU,MAAMu44C,YAAYzt5C,EAAEmB,GAAG,EAAEP,EAAEL,UAAUk96C,SAAS,SAASz96C,GAAG,OAAOA,IAAIa,KAAKqU,MAAMu3J,SAASzsK,IAAIa,KAAKsz3C,KAAK,IAAIl03C,EAAEijZ,WAAW,IAAI76X,MAAM,gCAA+B,EAAG,EAAEznB,EAAEL,UAAUmt5C,YAAY,SAASzt5C,GAAGY,KAAKqU,MAAMw44C,YAAYzt5C,EAAG,EAAEW,EAAEL,UAAUi6K,UAAU,SAASx6K,EAAEyB,GAAGxB,EAAEwsK,SAAS5rK,KAAKmv5C,gBAAgB/0e,iBAAiBj76B,EAAEC,EAAEoj5C,aAAa/lnC,OAAO77R,EAAG,EAAEb,EAAEL,UAAUot5C,WAAW,WAAW,OAAO9s5C,KAAKqU,MAAMy44C,YAAY,EAAE/s5C,EAAEL,UAAUgmwB,SAAS,SAAStmwB,EAAED,GAAG,OAAOa,KAAKy86C,sBAAsBz86C,KAAKqU,MAAMqxvB,SAAStmwB,EAAED,GAAGa,KAAKsxI,SAAQ,EAAG,EAAEvxI,EAAEL,UAAU6lwB,UAAU,SAASnmwB,EAAED,GAAG,OAAOa,KAAKqU,MAAMkxvB,UAAUnmwB,EAAED,GAAGa,KAAKsxI,SAAQ,EAAG,EAAEvxI,EAAEL,UAAU+lwB,YAAY,SAASrmwB,GAAG,OAAOY,KAAKqU,MAAMoxvB,YAAYrmwB,GAAGY,KAAKsxI,SAAQ,EAAG,EAAEvxI,EAAEL,UAAU80kC,SAAS,SAASp1kC,GAAG,OAAOY,KAAKqU,MAAMmgkC,SAASp1kC,EAAE,EAAEW,EAAEL,UAAU+25C,kBAAkB,SAASr35C,EAAED,EAAEyB,GAAG,OAAOZ,KAAKqU,MAAMoi5C,kBAAkBr35C,EAAED,EAAEyB,GAAGZ,KAAKsxI,SAAQ,EAAG,EAAEvxI,EAAEL,UAAU8hiB,UAAU,SAASpiiB,EAAED,EAAEyB,GAAG,YAAO,IAASA,IAAIA,EAAE,CAAC,GAAGZ,KAAKqU,MAAMmthB,UAAUpiiB,EAAED,EAAEyB,GAAGZ,KAAKsxI,SAAQ,EAAG,EAAEvxI,EAAEL,UAAUsg6C,UAAU,SAAS5g6C,GAAG,OAAOY,KAAKqU,MAAM2r5C,UAAU5g6C,EAAE,EAAEW,EAAEL,UAAU2/3C,iBAAiB,SAASjg4C,EAAED,EAAEyB,EAAEN,GAAG,YAAO,IAASA,IAAIA,EAAE,CAAC,GAAGN,KAAKqU,MAAMgr3C,iBAAiBjg4C,EAAED,EAAEyB,EAAEN,GAAGN,KAAKsxI,SAAQ,EAAG,EAAEvxI,EAAEL,UAAUig4C,iBAAiB,SAASvg4C,EAAED,GAAG,OAAOa,KAAKqU,MAAMsr3C,iBAAiBvg4C,EAAED,EAAE,EAAEY,EAAEL,UAAU4/3C,kBAAkB,SAASlg4C,EAAED,EAAEyB,EAAEN,GAAG,YAAO,IAASA,IAAIA,EAAE,CAAC,GAAGN,KAAKqU,MAAMir3C,kBAAkBlg4C,EAAED,EAAEyB,EAAEN,GAAGN,KAAKsxI,SAAQ,EAAG,EAAEvxI,EAAEL,UAAU+/3C,kBAAkB,SAASrg4C,EAAED,GAAG,OAAOa,KAAKqU,MAAMor3C,kBAAkBrg4C,EAAED,EAAE,EAAEY,EAAEL,UAAUmu5C,SAAS,SAASzu5C,EAAED,GAAG,YAAO,IAASA,IAAIA,EAAE,CAAC,GAAGa,KAAKy86C,sBAAsBz86C,KAAKqU,MAAMw54C,SAASzu5C,EAAED,GAAGa,KAAKsxI,SAAQ,EAAG,EAAEvxI,EAAEL,UAAUqu5C,SAAS,WAAW,OAAO/t5C,KAAKqU,MAAM054C,UAAU,EAAEhu5C,EAAEL,UAAU494C,gBAAgB,SAASl+4C,EAAED,GAAG,OAAOa,KAAKqU,MAAMip4C,gBAAgBl+4C,EAAED,GAAGa,KAAKsxI,SAAS,EAAEvxI,EAAEL,UAAU094C,mBAAmB,SAASh+4C,EAAED,GAAG,OAAOa,KAAKqU,MAAM+o4C,mBAAmBh+4C,EAAED,GAAGa,KAAKsxI,SAAS,EAAEvxI,EAAEL,UAAUgy5C,gBAAgB,SAASty5C,GAAG,OAAOY,KAAKqU,MAAMq94C,gBAAgBty5C,EAAE,EAAEW,EAAEL,UAAU+mO,aAAa,WAAW,OAAOzmO,KAAKy7vB,UAAU,EAAE17vB,EAAEL,UAAUow6C,mBAAmB,WAAW,OAAO9v6C,KAAK686C,gBAAgB,EAAE986C,EAAEL,UAAUw/I,UAAU,WAAW,OAAOl/I,KAAK05O,OAAO,EAAE35O,EAAEL,UAAUg86C,qBAAqB,WAAW,IAAIt86C,EAAE,EAAED,EAAE,EAAE,OAAOa,KAAKy7vB,aAAar8vB,EAAEY,KAAKy7vB,WAAWt7mB,aAAa,IAAIhhJ,EAAEa,KAAKy7vB,WAAWp7mB,cAAc,KAAK,CAACjhJ,EAAED,EAAE,EAAEY,EAAEL,UAAUo96C,kBAAkB,WAAW,uBAAuB196C,EAAE8C,OAAOyzZ,iBAAiB31Z,KAAK+86C,mBAAmBh6vB,iBAAiB,qBAAqB3jrB,EAAEive,SAAS,+NAAgO,EAAEtue,EAAEL,UAAUs76C,gBAAgB,WAAW,IAAI576C,EAAEY,KAAKy7vB,WAAWr8vB,EAAEuwF,UAAUxqE,IAAI,iBAAiBnlB,KAAK+86C,kBAAkBn86C,EAAEV,OAAO,MAAM,kBAAkBd,IAAIiV,MAAM24L,WAAW,SAAShtM,KAAK886C,oBAAoB,IAAI396C,EAAEa,KAAK686C,iBAAiBj86C,EAAEV,OAAO,MAAM,4BAA4Bd,GAAGY,KAAKs66C,cAAcn76C,EAAEwwF,UAAUxqE,IAAI,wBAAwBnlB,KAAK05O,QAAQ94O,EAAEV,OAAO,SAAS,kBAAkBf,GAAGa,KAAK05O,QAAQ/sN,iBAAiB,mBAAmB3sB,KAAKg96C,cAAa,GAAIh96C,KAAK05O,QAAQ/sN,iBAAiB,uBAAuB3sB,KAAKi96C,kBAAiB,GAAIj96C,KAAK05O,QAAQ/8M,aAAa,WAAW,KAAK38B,KAAK05O,QAAQ/8M,aAAa,aAAa,OAAO38B,KAAK05O,QAAQ/8M,aAAa,OAAO,UAAU,IAAIr8B,EAAEN,KAAK076C,uBAAuB176C,KAAK276C,cAAcr76C,EAAE,GAAGA,EAAE,IAAI,IAAIP,EAAEC,KAAKk96C,kBAAkBt86C,EAAEV,OAAO,MAAM,6BAA6Bd,GAAG4B,EAAEhB,KAAKu76C,kBAAkB,CAAC,EAAE,CAAC,WAAW,YAAY,cAAc,gBAAgBr25C,SAAQ,SAAU9lB,GAAG4B,EAAE5B,GAAGwB,EAAEV,OAAO,MAAM,iBAAiBd,EAAEW,EAAI,IAAGC,KAAKy7vB,WAAW9uuB,iBAAiB,SAAS3sB,KAAKm96C,cAAa,EAAI,EAAEp96C,EAAEL,UAAUi86C,cAAc,SAASx86C,EAAEyB,GAAG,IAAIN,EAAElB,EAAEghS,QAAQn7L,kBAAkB,EAAEjlG,KAAK05O,QAAQ36M,MAAMz+B,EAAEnB,EAAEa,KAAK05O,QAAQ16M,OAAO1+B,EAAEM,EAAEZ,KAAK05O,QAAQrlO,MAAM0qB,MAAM5/B,EAAE,KAAKa,KAAK05O,QAAQrlO,MAAM2qB,OAAOp+B,EAAE,IAAK,EAAEb,EAAEL,UAAUu76C,cAAc,WAAW,IAAIr66C,EAAExB,EAAEiqZ,OAAO,CAAC,EAAElqZ,EAAEss5C,uBAAuB,CAACD,6BAA6Bxr5C,KAAKu66C,8BAA8Bt/D,sBAAsBj72C,KAAKw66C,uBAAuB3uB,UAAU7r5C,KAAKy66C,aAAY,IAAKn66C,EAAEN,KAAK05O,QAAQ3sL,WAAW,QAAQnsD,IAAIZ,KAAK05O,QAAQ3sL,WAAW,qBAAqBnsD,GAAGN,GAAGN,KAAKo08B,QAAQ,IAAIr67B,GAAGzZ,EAAEN,KAAK4iI,WAAWxjI,EAAEyo5C,cAAcl3B,YAAYrw3C,IAAIN,KAAKsz3C,KAAK,IAAIl03C,EAAEijZ,WAAW,IAAI76X,MAAM,+BAAgC,EAAEznB,EAAEL,UAAUs96C,aAAa,SAAS796C,GAAGA,EAAEymH,iBAAiB5lH,KAAK472C,SAAS572C,KAAK472C,OAAO/4zC,SAAS7iD,KAAK472C,OAAO,MAAM572C,KAAKsz3C,KAAK,IAAIl03C,EAAEuqB,MAAM,mBAAmB,CAACom5C,cAAc5w6C,IAAK,EAAEY,EAAEL,UAAUu96C,iBAAiB,SAAS996C,GAAGa,KAAKi76C,gBAAgBj76C,KAAK6uH,SAAS7uH,KAAKsxI,UAAUtxI,KAAKsz3C,KAAK,IAAIl03C,EAAEuqB,MAAM,uBAAuB,CAACom5C,cAAc5w6C,IAAK,EAAEY,EAAEL,UAAUy96C,aAAa,SAAS/96C,GAAG,GAAGA,EAAE0Q,SAAS9P,KAAKy7vB,WAAW,OAAOz7vB,KAAKy7vB,WAAWv4pB,UAAU,EAAEljG,KAAKy7vB,WAAW7vO,WAAW,GAAE,CAAE,EAAE7rhB,EAAEL,UAAUy3M,OAAO,WAAW,OAAQn3M,KAAKo96C,cAAcp96C,KAAKq96C,iBAAiBr96C,KAAKqU,OAAOrU,KAAKqU,MAAM8iM,QAAQ,EAAEp3M,EAAEL,UAAU4xI,QAAQ,SAASlyI,GAAG,OAAOY,KAAKqU,OAAOrU,KAAKo96C,YAAYp96C,KAAKo96C,aAAah+6C,EAAEY,KAAKq96C,eAAc,EAAGr96C,KAAKgx5C,iBAAiBhx5C,MAAMA,IAAI,EAAED,EAAEL,UAAUw56C,oBAAoB,SAAS956C,GAAG,OAAOY,KAAKsxI,UAAUtxI,KAAKo36C,iBAAiBjy5C,IAAI/lB,EAAE,EAAEW,EAAEL,UAAUm56C,mBAAmB,SAASz56C,GAAGY,KAAKo36C,iBAAiBvk5C,OAAOzzB,EAAG,EAAEW,EAAEL,UAAUm82C,QAAQ,SAAS182C,GAAG,IAAIyB,EAAEN,EAAEN,KAAKD,EAAE,EAAEiB,EAAEhB,KAAKo08B,QAAQjn6B,QAAQgm3C,cAAc,GAAGnz5C,KAAKuz3C,QAAQ,sBAAsB3y3C,EAAEI,EAAE4q6C,iBAAiB5q6C,EAAE6q6C,cAAc7q6C,EAAE6kT,iBAAiBjlT,GAAGb,EAAEX,EAAEghS,QAAQ30Q,OAAOzrB,KAAKo08B,QAAQjn6B,QAAQox/B,WAAWv+hC,KAAKo08B,QAAQm2d,eAAevq6C,KAAKo36C,iBAAiBn90C,IAAI96F,IAAIa,KAAKww5C,SAAS,CAAC,IAAInx5C,GAAE,EAAG,GAAGW,KAAKqU,OAAOrU,KAAKo96C,YAAY,CAACp96C,KAAKo96C,aAAY,EAAG,IAAIt86C,EAAEd,KAAK4iI,UAAUjjG,KAAKn9B,EAAEpD,EAAEghS,QAAQ30Q,MAAMzrB,KAAKqU,MAAMwp3C,YAAYtvzC,OAAOztE,EAAE0B,GAAG,IAAI3B,EAAE,IAAIzB,EAAEki5C,qBAAqBxg5C,EAAE,CAAC2qB,IAAIjpB,EAAEo73C,aAAa593C,KAAK215C,cAAc93B,YAAY793C,KAAKqU,MAAMwp3C,YAAY/1wC,WAAW9nH,KAAKqU,MAAMoq3C,kBAAkBp83C,EAAExB,EAAEi93C,oBAAoB,IAAIz73C,GAAGA,IAAIrC,KAAK466C,qBAAqBv76C,GAAE,EAAGW,KAAK466C,mBAAmBv46C,GAAGrC,KAAKqU,MAAMk6D,OAAO1tE,EAAG,CAAC,GAAGb,KAAKqU,OAAOrU,KAAKq96C,gBAAgBr96C,KAAKq96C,eAAc,EAAGr96C,KAAKqU,MAAMis5C,eAAetg6C,KAAK4iI,YAAY5iI,KAAKs96C,gBAAgBt96C,KAAKqU,OAAOrU,KAAKqU,MAAMms5C,iBAAiBxg6C,KAAKo08B,QAAQxx0B,UAAU5iI,KAAKio5C,mBAAmBjo5C,KAAK215C,cAAc315C,KAAK266C,wBAAwB366C,KAAKo08B,QAAQ9l1B,OAAOtuH,KAAKqU,MAAM,CAACi35C,mBAAmBtr6C,KAAKsr6C,mBAAmBD,sBAAsBrr6C,KAAKkr6C,uBAAuB1C,SAASxo6C,KAAK0lH,aAAa+izC,QAAQzo6C,KAAKkmH,YAAY6kX,OAAO/qe,KAAK+we,WAAW6s5B,aAAa593C,KAAK215C,cAAc4V,YAAYvr6C,KAAKur6C,YAAYI,YAAY3r6C,KAAKuz3C,QAAQ,sBAAsBvz3C,KAAKsz3C,KAAK,IAAIl03C,EAAEuqB,MAAM,WAAW3pB,KAAKm3M,WAAWn3M,KAAK62yC,UAAU72yC,KAAK62yC,SAAQ,EAAG72yC,KAAKsz3C,KAAK,IAAIl03C,EAAEuqB,MAAM,UAAU3pB,KAAKqU,QAAQrU,KAAKqU,MAAMio5C,kBAAkBj95C,KAAKW,KAAKo96C,aAAY,GAAIp96C,KAAKqU,QAAQrU,KAAKs96C,iBAAiBt96C,KAAKqU,MAAMqs5C,0BAA0B1g6C,KAAKuz3C,QAAQ,oBAAoB,CAAC,IAAI3w3C,EAAExD,EAAEghS,QAAQ30Q,MAAM1rB,EAAEiB,EAAE8q6C,YAAY9q6C,EAAE6kT,iBAAiBjlT,GAAGilB,YAAW,WAAY,IAAI1mB,EAAE6B,EAAEir6C,kBAAkBrr6C,EAAEI,EAAE2kT,kBAAkB,IAAI3kT,EAAEkr6C,eAAetr6C,GAAGN,EAAEgz3C,KAAK,IAAIl03C,EAAEuqB,MAAM,mBAAmB,CAACuzH,QAAQt6I,EAAEo6I,QAAQ79I,IAAM,GAAE,GAAI,CAAC,GAAGa,KAAKuz3C,QAAQ,oBAAoB,CAAC,IAAIzw3C,EAAE9C,KAAKo08B,QAAQ23d,mBAAmBlm5C,YAAW,WAAY,IAAI1mB,EAAEmB,EAAE8z8B,QAAQ43d,eAAelp6C,GAAGxC,EAAEgz3C,KAAK,IAAIl03C,EAAEuqB,MAAM,mBAAmB,CAAC4z5C,WAAWp+6C,IAAM,GAAE,GAAI,CAAC,IAAIwD,EAAE3C,KAAKq96C,eAAer96C,KAAKo96C,aAAap96C,KAAKs96C,gBAAgB,OAAO366C,GAAG3C,KAAKw96C,SAASx96C,KAAKgx5C,kBAAkBhx5C,KAAK+we,YAAY/we,KAAKm3M,UAAUn3M,KAAKsz3C,KAAK,IAAIl03C,EAAEuqB,MAAM,UAAU3pB,KAAK62yC,SAAS72yC,KAAKy96C,cAAc966C,IAAI3C,KAAKy96C,cAAa,GAAIz96C,IAAI,CAAC,EAAED,EAAEL,UAAUmzB,OAAO,WAAW7yB,KAAK456C,OAAO556C,KAAK456C,MAAM/m5C,SAAS,IAAI,IAAI1zB,EAAE,EAAEyB,EAAEZ,KAAK666C,UAAU176C,EAAEyB,EAAEP,OAAOlB,GAAG,EAAEyB,EAAEzB,GAAG6pO,SAAShpO,MAAMA,KAAK666C,UAAU,GAAG766C,KAAK472C,SAAS572C,KAAK472C,OAAO/4zC,SAAS7iD,KAAK472C,OAAO,MAAM572C,KAAKo36C,iBAAiBpy5C,QAAQhlB,KAAKo08B,QAAQh2zB,UAAUp+I,KAAK+sH,SAASqxB,iBAAiBp+I,KAAK+sH,SAAS/sH,KAAKska,SAAS,WAAM,IAASlla,EAAE8C,SAAS9C,EAAE8C,OAAOmnB,oBAAoB,SAASrpB,KAAKm76C,iBAAgB,GAAI/76C,EAAE8C,OAAOmnB,oBAAoB,oBAAoBrpB,KAAKm76C,iBAAgB,GAAI/76C,EAAE8C,OAAOmnB,oBAAoB,SAASrpB,KAAKk76C,iBAAgB,IAAK,IAAI566C,EAAEN,KAAKo08B,QAAQjn6B,QAAQ8gF,GAAG6tF,aAAa,sBAAsBx7M,GAAGA,EAAEo96C,cAAc9m6C,GAAG5W,KAAK686C,kBAAkBjm6C,GAAG5W,KAAKk96C,mBAAmBtm6C,GAAG5W,KAAK+86C,mBAAmB/86C,KAAKy7vB,WAAW9rqB,UAAU98D,OAAO,gBAAgB7yB,KAAKww5C,UAAS,EAAGxw5C,KAAKsz3C,KAAK,IAAIl03C,EAAEuqB,MAAM,UAAW,EAAE5pB,EAAEL,UAAUsx5C,eAAe,WAAW,IAAI7x5C,EAAEa,KAAKA,KAAKqU,QAAQrU,KAAK472C,SAAS572C,KAAK472C,OAAOx82C,EAAEghS,QAAQtpP,OAAM,SAAU13C,GAAGD,EAAEy82C,OAAO,KAAKz82C,EAAE082C,QAAQz82C,EAAI,IAAI,EAAEW,EAAEL,UAAUw76C,gBAAgB,WAAWl76C,KAAKsxI,SAAU,EAAEvxI,EAAEL,UAAUy76C,gBAAgB,SAAS/76C,GAAGY,KAAK066C,cAAc166C,KAAK6uH,OAAO,CAACkhzC,cAAc3w6C,IAAIkyI,SAAU,EAAEtwI,EAAEsq6C,mBAAmBno6C,IAAI,WAAW,QAASnD,KAAK296C,mBAAmB,EAAE386C,EAAEsq6C,mBAAmBr/5C,IAAI,SAAS7M,GAAGY,KAAK296C,sBAAsBv+6C,IAAIY,KAAK296C,oBAAoBv+6C,EAAEY,KAAKsxI,UAAW,EAAEtwI,EAAEuq6C,YAAYpo6C,IAAI,WAAW,QAASnD,KAAK496C,YAAY,EAAE586C,EAAEuq6C,YAAYt/5C,IAAI,SAAS7M,GAAGY,KAAK496C,eAAex+6C,IAAIY,KAAK496C,aAAax+6C,EAAEY,KAAKsxI,UAAW,EAAEtwI,EAAEin5C,mBAAmB9k5C,IAAI,WAAW,QAASnD,KAAKi95C,mBAAmB,EAAEj85C,EAAEin5C,mBAAmBh84C,IAAI,SAAS7M,GAAGY,KAAKi95C,sBAAsB795C,IAAIY,KAAKi95C,oBAAoB795C,EAAEA,EAAEY,KAAKqU,MAAMks5C,0BAA0Bvg6C,KAAKsxI,UAAW,EAAEtwI,EAAEqq6C,sBAAsBlo6C,IAAI,WAAW,QAASnD,KAAKkr6C,sBAAsB,EAAElq6C,EAAEqq6C,sBAAsBp/5C,IAAI,SAAS7M,GAAGY,KAAKkr6C,yBAAyB9r6C,IAAIY,KAAKkr6C,uBAAuB9r6C,EAAEY,KAAKsxI,UAAW,EAAEtwI,EAAEmuZ,QAAQhsZ,IAAI,WAAW,QAASnD,KAAKw96C,QAAQ,EAAEx86C,EAAEmuZ,QAAQljZ,IAAI,SAAS7M,GAAGY,KAAKw96C,WAAWp+6C,IAAIY,KAAKw96C,SAASp+6C,EAAEY,KAAKgx5C,iBAAkB,EAAEhw5C,EAAEozL,SAASjxL,IAAI,WAAW,QAASnD,KAAK696C,SAAS,EAAE786C,EAAEozL,SAASnoL,IAAI,SAAS7M,GAAGY,KAAK696C,UAAUz+6C,EAAEY,KAAKsxI,SAAU,EAAEvxI,EAAEL,UAAUo+6C,gBAAgB,SAAS3+6C,EAAEyB,GAAGxB,EAAEko5C,eAAeno5C,EAAEyB,EAAG,EAAEI,EAAEsF,QAAQnD,IAAI,WAAW,OAAO/D,EAAEkH,OAAO,EAAEhH,OAAOkU,iBAAiBzT,EAAEL,UAAUsB,GAAGjB,CAAC,CAArqtB,CAAuqtBgW,IAAI,SAASa,GAAGxX,GAAGA,EAAEsiC,YAAYtiC,EAAEsiC,WAAW7E,YAAYz9B,EAAG,CAAC,IAAImZ,GAAG,CAAC+z2C,aAAY,EAAGC,UAAS,EAAGwxD,gBAAe,GAAI7l6C,GAAG,SAAS/Y,GAAG,IAAImB,EAAEN,KAAKA,KAAKmpB,QAAQ/pB,EAAEiqZ,OAAO,CAAC,EAAE9wY,GAAGpZ,GAAGa,KAAKy7vB,WAAW76vB,EAAEV,OAAO,MAAM,qCAAqCF,KAAKy7vB,WAAW9uuB,iBAAiB,eAAc,SAAUvtB,GAAG,OAAOA,EAAEwmH,gBAAiB,IAAG5lH,KAAKmpB,QAAQoj2C,WAAWnt3C,EAAE+0xC,QAAQ,CAAC,kBAAkB,sBAAsBn0xC,MAAMA,KAAKg+6C,cAAch+6C,KAAKi+6C,cAAc,yBAAwB,SAAU7+6C,GAAG,OAAOkB,EAAE2kM,KAAK59E,OAAO,CAAC,EAAE,CAAC0ozC,cAAc3w6C,GAAI,IAAGwB,EAAEV,OAAO,OAAO,qBAAqBF,KAAKg+6C,eAAerh5C,aAAa,eAAc,GAAI38B,KAAKk+6C,eAAel+6C,KAAKi+6C,cAAc,0BAAyB,SAAU7+6C,GAAG,OAAOkB,EAAE2kM,KAAK79E,QAAQ,CAAC,EAAE,CAAC2ozC,cAAc3w6C,GAAI,IAAGwB,EAAEV,OAAO,OAAO,qBAAqBF,KAAKk+6C,gBAAgBvh5C,aAAa,eAAc,IAAK38B,KAAKmpB,QAAQmj2C,cAAclt3C,EAAE+0xC,QAAQ,CAAC,uBAAuBn0xC,MAAMA,KAAKm+6C,SAASn+6C,KAAKi+6C,cAAc,yBAAwB,SAAU7+6C,GAAGkB,EAAE6oB,QAAQ405C,eAAez96C,EAAE2kM,KAAKyyuC,gBAAgB,CAAC,EAAE,CAAC3H,cAAc3w6C,IAAIkB,EAAE2kM,KAAKiyuC,WAAW,CAAC,EAAE,CAACnH,cAAc3w6C,GAAK,IAAGY,KAAKo+6C,aAAax96C,EAAEV,OAAO,OAAO,qBAAqBF,KAAKm+6C,UAAUn+6C,KAAKo+6C,aAAazh5C,aAAa,eAAc,GAAK,EAAEzkB,GAAGxY,UAAU2+6C,mBAAmB,WAAW,IAAIj/6C,EAAEY,KAAKilM,KAAK5kK,UAAUlhC,EAAEC,IAAIY,KAAKilM,KAAKwlN,aAAa7pZ,EAAExB,IAAIY,KAAKilM,KAAK42uC,aAAa776C,KAAKg+6C,cAAc1tkC,SAASnxW,EAAEa,KAAKk+6C,eAAe5tkC,SAAS1vW,EAAEZ,KAAKg+6C,cAAcrh5C,aAAa,gBAAgBx9B,EAAEoF,YAAYvE,KAAKk+6C,eAAevh5C,aAAa,gBAAgB/7B,EAAE2D,WAAY,EAAE2T,GAAGxY,UAAU4+6C,oBAAoB,WAAW,IAAIl/6C,EAAEY,KAAKmpB,QAAQ405C,eAAe,SAAS,EAAEl76C,KAAK6yF,IAAI7yF,KAAKuxH,IAAIp0H,KAAKilM,KAAKriE,UAAUljG,OAAO78B,KAAKsmC,GAAG,MAAM,IAAI,aAAanpC,KAAKilM,KAAKriE,UAAUljG,MAAM,gBAAgB1/B,KAAKilM,KAAKriE,UAAU+rG,OAAO,IAAI9rO,KAAKsmC,IAAI,OAAO,UAAUnpC,KAAKilM,KAAKriE,UAAU+rG,OAAO,IAAI9rO,KAAKsmC,IAAI,OAAOnpC,KAAKo+6C,aAAa/p6C,MAAMuuH,UAAUxjI,CAAE,EAAE8Y,GAAGxY,UAAU8oO,MAAM,SAASppO,GAAG,OAAOY,KAAKilM,KAAK7lM,EAAEY,KAAKmpB,QAAQoj2C,WAAWvs3C,KAAKu+6C,gBAAgBv+6C,KAAKg+6C,cAAc,UAAUh+6C,KAAKu+6C,gBAAgBv+6C,KAAKk+6C,eAAe,WAAWl+6C,KAAKilM,KAAKr0L,GAAG,OAAO5Q,KAAKq+6C,oBAAoBr+6C,KAAKq+6C,sBAAsBr+6C,KAAKmpB,QAAQmj2C,cAActs3C,KAAKu+6C,gBAAgBv+6C,KAAKm+6C,SAAS,gBAAgBn+6C,KAAKmpB,QAAQ405C,gBAAgB/96C,KAAKilM,KAAKr0L,GAAG,QAAQ5Q,KAAKs+6C,qBAAqBt+6C,KAAKilM,KAAKr0L,GAAG,SAAS5Q,KAAKs+6C,qBAAqBt+6C,KAAKs+6C,sBAAsBt+6C,KAAKi+X,SAAS,IAAI1mX,GAAGvX,KAAKilM,KAAKjlM,KAAKm+6C,SAASn+6C,KAAKmpB,QAAQ405C,iBAAiB/96C,KAAKy7vB,UAAU,EAAEvjvB,GAAGxY,UAAUspO,SAAS,WAAWpoO,EAAEiyB,OAAO7yB,KAAKy7vB,YAAYz7vB,KAAKmpB,QAAQoj2C,UAAUvs3C,KAAKilM,KAAKj3J,IAAI,OAAOhuC,KAAKq+6C,oBAAoBr+6C,KAAKmpB,QAAQmj2C,cAActs3C,KAAKmpB,QAAQ405C,gBAAgB/96C,KAAKilM,KAAKj3J,IAAI,QAAQhuC,KAAKs+6C,qBAAqBt+6C,KAAKilM,KAAKj3J,IAAI,SAAShuC,KAAKs+6C,qBAAqBt+6C,KAAKi+X,SAASjwV,aAAahuC,KAAKi+X,iBAAiBj+X,KAAKilM,IAAK,EAAE/sL,GAAGxY,UAAUu+6C,cAAc,SAAS7+6C,EAAED,GAAG,IAAImB,EAAEM,EAAEV,OAAO,SAASd,EAAEY,KAAKy7vB,YAAY,OAAOn7vB,EAAEiM,KAAK,SAASjM,EAAEqsB,iBAAiB,QAAQxtB,GAAGmB,CAAC,EAAE4X,GAAGxY,UAAU6+6C,gBAAgB,SAASn/6C,EAAED,GAAG,IAAIyB,EAAEZ,KAAKilM,KAAKwmrC,aAAa,qBAAqBts3C,GAAGC,EAAEiwK,MAAMzuK,EAAExB,EAAEu9B,aAAa,aAAa/7B,EAAG,EAAE,IAAI2W,GAAG,SAASpY,EAAEmB,EAAEP,QAAG,IAASA,IAAIA,GAAE,GAAIC,KAAKkw6C,gBAAgB,GAAGlw6C,KAAK+rF,QAAQzrF,EAAEN,KAAKw+6C,YAAY,IAAI/i6C,GAAG,CAAC005C,eAAehx6C,EAAEskH,WAAW+xzC,aAAatF,kBAAkBlw6C,KAAKqvB,IAAIlwB,EAAEY,IAAIC,KAAKy+6C,WAAW,IAAIxi6C,GAAG,CAACk05C,eAAehx6C,EAAEskH,WAAWgyzC,YAAYvF,mBAAmB9w6C,EAAE+0xC,QAAQ,CAAC,YAAY,YAAY,UAAU,aAAa,YAAY,WAAW,SAASn0xC,MAAMY,EAAE+rB,iBAAiBrsB,EAAE,YAAYN,KAAKwt9B,WAAW5s9B,EAAE+rB,iBAAiBrsB,EAAE,aAAaN,KAAKiu9B,WAAW,CAACv+6B,SAAQ,IAAK9uC,EAAE+rB,iBAAiBrsB,EAAE,YAAYN,KAAKmu9B,WAAWvt9B,EAAE+rB,iBAAiBrsB,EAAE,WAAWN,KAAKou9B,UAAUxt9B,EAAE+rB,iBAAiBrsB,EAAE,cAAcN,KAAKihE,MAAO,EAAE,SAASxoD,GAAGtZ,EAAEyB,EAAEN,GAAG,GAAGnB,EAAE,IAAIC,EAAE2s3C,OAAO5s3C,EAAEigC,IAAIjgC,EAAE+/B,KAAKt+B,EAAE,CAAC,IAAIb,EAAE,IAAIX,EAAE2s3C,OAAO5s3C,EAAEigC,IAAI,IAAIjgC,EAAE+/B,KAAKl+B,EAAE,IAAI5B,EAAE2s3C,OAAO5s3C,EAAEigC,IAAI,IAAIjgC,EAAE+/B,KAAK7/B,EAAEiB,EAAEwt6C,cAAc3u6C,GAAGuw3C,QAAQ9u3C,GAAGN,EAAEwt6C,cAAc/t6C,GAAG2v3C,QAAQ9u3C,GAAGvB,EAAEF,EAAEY,EAAEO,EAAEwt6C,cAAc9s6C,GAAG0u3C,QAAQ9u3C,GAAGvB,IAAIF,EAAE6B,EAAG,CAAC,KAAK6B,KAAKmjH,IAAI7mH,EAAEigC,IAAI9+B,EAAE2+B,OAAOG,KAAK,KAAK,CAAC,IAAIt+B,EAAER,EAAEwt6C,cAAc3u6C,GAAG,GAAG2B,EAAEmD,GAAG,GAAGnD,EAAEkC,GAAG,GAAGlC,EAAEmD,GAAG3D,EAAEy+B,OAAOj+B,EAAEkC,GAAG1C,EAAE0+B,OAAO,MAAM7/B,EAAEigC,IAAI9+B,EAAE2+B,OAAOG,IAAIjgC,EAAEigC,KAAK,IAAIjgC,EAAEigC,KAAK,GAAI,CAAC,OAAOjgC,CAAC,CAACoY,GAAG7X,UAAU85L,KAAK,SAASp6L,EAAED,GAAGa,KAAKw+6C,YAAYhxd,UAAUpu9B,EAAED,GAAGa,KAAKy+6C,YAAYz+6C,KAAKy+6C,WAAWjxd,UAAUpu9B,EAAED,GAAGyB,EAAEmr5C,aAAc,EAAEx04C,GAAG7X,UAAUojoB,KAAK,SAAS1joB,EAAED,GAAG,IAAIyB,EAAEZ,KAAKqvB,IAAI/uB,EAAEN,KAAKw+6C,YAAY7N,gBAAgBvx6C,EAAED,GAAG,GAAGmB,GAAGA,EAAEov6C,cAAc9u6C,EAAE+15C,WAAW/15C,EAAEuyX,aAAa7yX,EAAEov6C,cAAc1v6C,KAAKy+6C,WAAW,CAAC,IAAI1+6C,EAAEC,KAAKy+6C,WAAW9N,gBAAgBvx6C,EAAED,GAAGY,GAAGA,EAAE4v6C,YAAY/u6C,EAAEg25C,SAASh25C,EAAEou6C,WAAWjv6C,EAAE4v6C,WAAY,CAAC,EAAEp45C,GAAG7X,UAAUsuC,IAAI,WAAW,IAAI5uC,EAAEY,KAAK+rF,QAAQnrF,EAAEyoB,oBAAoBjqB,EAAE,YAAYY,KAAKwt9B,WAAW5s9B,EAAEyoB,oBAAoBjqB,EAAE,aAAaY,KAAKiu9B,WAAW,CAACv+6B,SAAQ,IAAK9uC,EAAEyoB,oBAAoBjqB,EAAE,YAAYY,KAAKmu9B,WAAWvt9B,EAAEyoB,oBAAoBjqB,EAAE,WAAWY,KAAKou9B,UAAUxt9B,EAAEyoB,oBAAoBjqB,EAAE,cAAcY,KAAKihE,OAAOjhE,KAAK0+6C,SAAU,EAAEnn6C,GAAG7X,UAAUg/6C,QAAQ,WAAW996C,EAAEor5C,aAAapr5C,EAAEyoB,oBAAoBjqB,EAAE8C,OAAO,YAAYlC,KAAKqmO,WAAWzlO,EAAEyoB,oBAAoBjqB,EAAE8C,OAAO,UAAUlC,KAAK4t9B,QAAS,EAAEr28B,GAAG7X,UAAU8t9B,UAAU,SAASru9B,GAAGa,KAAKw5L,KAAKp6L,EAAEiqZ,OAAO,CAAC,EAAElqZ,EAAE,CAAC0jH,SAAQ,EAAG+C,eAAe,WAAW,OAAOzmH,EAAEymH,gBAAgB,IAAIhlH,EAAE8ysC,SAAS1zsC,KAAK+rF,QAAQ5sF,IAAIyB,EAAE+rB,iBAAiBvtB,EAAE8C,OAAO,YAAYlC,KAAKqmO,WAAWzlO,EAAE+rB,iBAAiBvtB,EAAE8C,OAAO,UAAUlC,KAAK4t9B,QAAS,EAAEr28B,GAAG7X,UAAU2mO,UAAU,SAASjnO,GAAGY,KAAK8ioB,KAAK1joB,EAAEwB,EAAE8ysC,SAAS1zsC,KAAK+rF,QAAQ3sF,GAAI,EAAEmY,GAAG7X,UAAUku9B,QAAQ,SAASxu9B,GAAGY,KAAKw+6C,YAAY1N,cAAc1x6C,GAAGY,KAAKy+6C,YAAYz+6C,KAAKy+6C,WAAW3N,cAAc1x6C,GAAGY,KAAK0+6C,SAAU,EAAEnn6C,GAAG7X,UAAUuu9B,WAAW,SAAS7u9B,GAAG,IAAIA,EAAEox8B,cAAcnw8B,OAAOL,KAAKihE,SAASjhE,KAAKyw6C,UAAUzw6C,KAAK0w6C,SAAS9v6C,EAAEur5C,SAASns5C,KAAK+rF,QAAQ3sF,EAAEox8B,eAAe,GAAGxw8B,KAAKw5L,KAAK,CAACjtL,KAAK,YAAYmrW,OAAO,EAAE70P,SAAQ,EAAG+C,eAAe,WAAW,OAAOxmH,EAAEwmH,gBAAgB,GAAG5lH,KAAKyw6C,WAAY,EAAEl55C,GAAG7X,UAAUyu9B,UAAU,SAAS/u9B,GAAG,IAAIA,EAAEox8B,cAAcnw8B,OAAOL,KAAKihE,SAASjhE,KAAK0w6C,SAAS9v6C,EAAEur5C,SAASns5C,KAAK+rF,QAAQ3sF,EAAEox8B,eAAe,GAAGxw8B,KAAK8ioB,KAAK,CAACl9gB,eAAe,WAAW,OAAOxmH,EAAEwmH,gBAAgB,GAAG5lH,KAAK0w6C,UAAW,EAAEn55C,GAAG7X,UAAU0u9B,SAAS,SAAShv9B,GAAG,IAAIA,EAAEox8B,cAAcnw8B,QAAQL,KAAKyw6C,WAAWzw6C,KAAK0w6C,UAAU1w6C,KAAKyw6C,UAAU12kC,KAAK/5V,KAAK0w6C,UAAU1w6C,KAAKkw6C,iBAAiBlw6C,KAAK+rF,QAAQmG,QAAQlyF,KAAKihE,OAAQ,EAAE1pD,GAAG7X,UAAUuhE,MAAM,WAAWjhE,KAAKw+6C,YAAYv92C,QAAQjhE,KAAKy+6C,YAAYz+6C,KAAKy+6C,WAAWx92C,eAAejhE,KAAKyw6C,iBAAiBzw6C,KAAK0w6C,SAAS1w6C,KAAK0+6C,SAAU,EAAE,IAAI5n6C,GAAG,CAACmoB,OAAO,uBAAuBH,IAAI,oBAAoB,WAAW,iBAAiB,YAAY,qBAAqBghE,OAAO,wBAAwB,cAAc,qBAAqB,eAAe,yBAAyBjhE,KAAK,oBAAoBghE,MAAM,yBAAyB,SAAS9oF,GAAG3X,EAAED,EAAEyB,GAAG,IAAIN,EAAElB,EAAEuwF,UAAU,IAAI,IAAI5vF,KAAK+W,GAAGxW,EAAEuyB,OAAO,YAAYjyB,EAAE,WAAWb,GAAGO,EAAE6kB,IAAI,YAAYvkB,EAAE,WAAWzB,EAAG,CAAC,IAAIkX,GAAGqC,GAAG,SAASvZ,GAAG,SAASmB,EAAEA,EAAEP,GAAG,GAAGZ,EAAES,KAAKI,OAAOM,aAAalB,EAAE8C,OAAOy8P,aAAa5+P,KAAKO,EAAElB,EAAEiqZ,OAAO,CAACt9T,QAAQzrF,GAAGP,IAAIX,EAAE+0xC,QAAQ,CAAC,UAAU,UAAU,QAAQ,kBAAkB,cAAc,eAAen0xC,MAAMA,KAAK2+6C,QAAQr+6C,GAAGA,EAAE2oZ,QAAQ,SAASjpZ,KAAK4+6C,OAAOt+6C,GAAGA,EAAEitH,OAAO,UAAUvtH,KAAK+qyB,OAAOzqyB,GAAGA,EAAEwhG,OAAO,EAAE9hG,KAAK6+6C,WAAWv+6C,GAAGA,EAAEimZ,YAAW,EAAGvmZ,KAAKkw6C,gBAAgB5v6C,GAAGA,EAAE6v6C,gBAAgB,EAAEnw6C,KAAK8+6C,aAAY,EAAG9+6C,KAAKimB,OAAO,WAAWjmB,KAAK++6C,UAAUz+6C,GAAGA,EAAEimH,UAAU,EAAEvmH,KAAKg/6C,mBAAmB1+6C,GAAGA,EAAE2+6C,mBAAmB,OAAOj/6C,KAAKk/6C,gBAAgB5+6C,GAAGA,EAAE6+6C,gBAAgB,SAAS7+6C,EAAE6+6C,eAAe7+6C,EAAE6+6C,eAAen/6C,KAAKg/6C,mBAAmB1+6C,GAAGA,EAAEyrF,QAAQ/rF,KAAKo/6C,SAAS9+6C,EAAEyrF,QAAQ/rF,KAAK85J,QAAQ16J,EAAEoqC,MAAMyyvB,QAAQ37xB,GAAGA,EAAE6hD,QAAQ,CAAC,EAAE,QAAS,CAACniD,KAAKq/6C,gBAAe,EAAGr/6C,KAAKo/6C,SAASx+6C,EAAEV,OAAO,OAAOF,KAAKo/6C,SAASzi5C,aAAa,aAAa,cAAc,IAAI37B,EAAEJ,EAAEkr5C,SAAS,6BAA6B,OAAO9q5C,EAAEgglC,eAAe,KAAK,UAAU,SAAShglC,EAAEgglC,eAAe,KAAK,SAAS,QAAQhglC,EAAEgglC,eAAe,KAAK,QAAQ,QAAQhglC,EAAEgglC,eAAe,KAAK,UAAU,aAAa,IAAI3hlC,EAAEuB,EAAEkr5C,SAAS,6BAA6B,KAAKzs5C,EAAE2hlC,eAAe,KAAK,SAAS,QAAQ3hlC,EAAE2hlC,eAAe,KAAK,eAAe,KAAK3hlC,EAAE2hlC,eAAe,KAAK,OAAO,QAAQ3hlC,EAAE2hlC,eAAe,KAAK,YAAY,WAAW,IAAIlglC,EAAEF,EAAEkr5C,SAAS,6BAA6B,KAAKhr5C,EAAEkglC,eAAe,KAAK,YAAY,WAAW,IAAIx+kC,EAAE5B,EAAEkr5C,SAAS,6BAA6B,KAAKtp5C,EAAEw+kC,eAAe,KAAK,YAAY,wBAAwBx+kC,EAAEw+kC,eAAe,KAAK,OAAO,WAAW,IAAI,IAAInglC,EAAE,EAAEwB,EAAE,CAAC,CAAC66K,GAAG,OAAOC,GAAG,cAAc,CAACD,GAAG,OAAOC,GAAG,cAAc,CAACD,GAAG,MAAMC,GAAG,cAAc,CAACD,GAAG,MAAMC,GAAG,cAAc,CAACD,GAAG,MAAMC,GAAG,cAAc,CAACD,GAAG,MAAMC,GAAG,cAAc,CAACD,GAAG,MAAMC,GAAG,cAAc,CAACD,GAAG,MAAMC,GAAG,eAAet8K,EAAEwB,EAAEhC,OAAOQ,GAAG,EAAE,CAAC,IAAI+B,EAAEP,EAAExB,GAAGiC,EAAElC,EAAEkr5C,SAAS,6BAA6B,WAAWhp5C,EAAEk+kC,eAAe,KAAK,UAAU,QAAQl+kC,EAAEk+kC,eAAe,KAAK,KAAK,QAAQl+kC,EAAEk+kC,eAAe,KAAK,KAAK,cAAcl+kC,EAAEk+kC,eAAe,KAAK,KAAKp+kC,EAAEs6K,IAAIp6K,EAAEk+kC,eAAe,KAAK,KAAKp+kC,EAAEu6K,IAAI36K,EAAE+R,YAAYzR,EAAG,CAAC,IAAIH,EAAE/B,EAAEkr5C,SAAS,6BAA6B,KAAKnp5C,EAAEq+kC,eAAe,KAAK,OAAOhhlC,KAAK4+6C,QAAQ,IAAIh76C,EAAEhD,EAAEkr5C,SAAS,6BAA6B,QAAQlo5C,EAAEo9kC,eAAe,KAAK,IAAI,mOAAmOr+kC,EAAE4R,YAAY3Q,GAAG,IAAIlB,EAAE9B,EAAEkr5C,SAAS,6BAA6B,KAAKpp5C,EAAEs+kC,eAAe,KAAK,UAAU,QAAQt+kC,EAAEs+kC,eAAe,KAAK,OAAO,WAAW,IAAI59kC,EAAExC,EAAEkr5C,SAAS,6BAA6B,QAAQ1o5C,EAAE49kC,eAAe,KAAK,IAAI,wlBAAwlBt+kC,EAAE6R,YAAYnR,GAAG,IAAIjB,EAAEvB,EAAEkr5C,SAAS,6BAA6B,KAAK3p5C,EAAE6+kC,eAAe,KAAK,YAAY,uBAAuB7+kC,EAAE6+kC,eAAe,KAAK,OAAO,WAAW,IAAI/9kC,EAAErC,EAAEkr5C,SAAS,6BAA6B,KAAK7o5C,EAAE+9kC,eAAe,KAAK,YAAY,uBAAuB,IAAIh+kC,EAAEpC,EAAEkr5C,SAAS,6BAA6B,UAAU9o5C,EAAEg+kC,eAAe,KAAK,OAAO,WAAWh+kC,EAAEg+kC,eAAe,KAAK,UAAU,QAAQh+kC,EAAEg+kC,eAAe,KAAK,KAAK,OAAOh+kC,EAAEg+kC,eAAe,KAAK,KAAK,OAAOh+kC,EAAEg+kC,eAAe,KAAK,IAAI,aAAa,IAAI/8kC,EAAErD,EAAEkr5C,SAAS,6BAA6B,UAAU7n5C,EAAE+8kC,eAAe,KAAK,OAAO,WAAW/8kC,EAAE+8kC,eAAe,KAAK,KAAK,OAAO/8kC,EAAE+8kC,eAAe,KAAK,KAAK,OAAO/8kC,EAAE+8kC,eAAe,KAAK,IAAI,aAAa/9kC,EAAEsR,YAAYvR,GAAGC,EAAEsR,YAAYtQ,GAAGnD,EAAEyT,YAAY/R,GAAG1B,EAAEyT,YAAY5R,GAAG7B,EAAEyT,YAAY7R,GAAG5B,EAAEyT,YAAYpS,GAAGrB,EAAEyT,YAAYtR,GAAGjC,EAAEuT,YAAYzT,GAAGE,EAAEgglC,eAAe,KAAK,SAAS,GAAGhhlC,KAAK+qyB,OAAO,MAAM/pyB,EAAEgglC,eAAe,KAAK,QAAQ,GAAGhhlC,KAAK+qyB,OAAO,MAAM/qyB,KAAKo/6C,SAAS7q6C,YAAYvT,GAAGhB,KAAK85J,QAAQ16J,EAAEoqC,MAAMyyvB,QAAQ37xB,GAAGA,EAAE6hD,QAAQ,CAAC,GAAG,IAAK,CAACniD,KAAKo/6C,SAASzv1C,UAAUxqE,IAAI,mBAAmBnlB,KAAKo/6C,SAASzy5C,iBAAiB,aAAY,SAAUvtB,GAAGA,EAAEwmH,gBAAkB,IAAG5lH,KAAKo/6C,SAASzy5C,iBAAiB,aAAY,SAAUvtB,GAAGA,EAAEwmH,gBAAkB,IAAG7uG,GAAG/W,KAAKo/6C,SAASp/6C,KAAK2+6C,QAAQ,UAAU3+6C,KAAKs/6C,OAAO,IAAK,CAAC,OAAOng7C,IAAImB,EAAEd,UAAUL,IAAImB,EAAEZ,UAAUJ,OAAOY,OAAOf,GAAGA,EAAEO,YAAYO,YAAYK,EAAEA,EAAEZ,UAAUmv6C,MAAM,SAASzv6C,GAAG,OAAOY,KAAK6yB,SAAS7yB,KAAKilM,KAAK7lM,EAAEA,EAAE0w6C,qBAAqBv75C,YAAYvU,KAAKo/6C,UAAUhg7C,EAAEwR,GAAG,OAAO5Q,KAAKsxI,SAASlyI,EAAEwR,GAAG,UAAU5Q,KAAKsxI,SAAStxI,KAAKwmZ,aAAaxmZ,KAAK6+6C,YAAY7+6C,KAAKsxI,UAAUtxI,KAAKilM,KAAKr0L,GAAG,QAAQ5Q,KAAKu/6C,aAAav/6C,IAAI,EAAEM,EAAEZ,UAAUmzB,OAAO,WAAW,OAAO7yB,KAAKilM,OAAOjlM,KAAKilM,KAAKj3J,IAAI,QAAQhuC,KAAKu/6C,aAAav/6C,KAAKilM,KAAKj3J,IAAI,OAAOhuC,KAAKsxI,SAAStxI,KAAKilM,KAAKj3J,IAAI,UAAUhuC,KAAKsxI,SAAStxI,KAAKilM,KAAKj3J,IAAI,YAAYhuC,KAAKw/6C,iBAAiBx/6C,KAAKilM,KAAKj3J,IAAI,aAAahuC,KAAKw/6C,iBAAiBx/6C,KAAKilM,KAAKj3J,IAAI,UAAUhuC,KAAKy/6C,OAAOz/6C,KAAKilM,KAAKj3J,IAAI,WAAWhuC,KAAKy/6C,OAAOz/6C,KAAKilM,KAAKj3J,IAAI,YAAYhuC,KAAKyt3C,SAASzt3C,KAAKilM,KAAKj3J,IAAI,YAAYhuC,KAAKyt3C,gBAAgBzt3C,KAAKilM,MAAMrkM,EAAEiyB,OAAO7yB,KAAKo/6C,UAAUp/6C,KAAKs/6C,QAAQt/6C,KAAKs/6C,OAAOzs5C,SAAS7yB,IAAI,EAAEM,EAAEZ,UAAUgg7C,UAAU,WAAW,OAAO1/6C,KAAK2/6C,OAAO,EAAEr/6C,EAAEZ,UAAUkg7C,UAAU,SAASzg7C,GAAG,OAAOa,KAAK2/6C,QAAQvg7C,EAAE2s3C,OAAO9vlB,QAAQ98xB,GAAGa,KAAK24Z,KAAK,KAAK34Z,KAAKs/6C,QAAQt/6C,KAAKs/6C,OAAOM,UAAU5/6C,KAAK2/6C,SAAS3/6C,KAAKsxI,UAAUtxI,IAAI,EAAEM,EAAEZ,UAAU45V,WAAW,WAAW,OAAOt5V,KAAKo/6C,QAAQ,EAAE9+6C,EAAEZ,UAAUmg7C,SAAS,SAASzg7C,GAAG,GAAGY,KAAKs/6C,SAASt/6C,KAAKs/6C,OAAOzs5C,SAAS7yB,KAAKs/6C,OAAO,KAAKt/6C,KAAKo/6C,SAAS/15C,oBAAoB,WAAWrpB,KAAK8/6C,aAAa9/6C,KAAK+/6C,mBAAmB//6C,KAAKo/6C,SAAS985B,gBAAgB,aAAaljhB,EAAE,CAAC,KAAK,WAAWA,EAAE+pB,SAAS,CAAC,IAAIhqB,EAAE0D,KAAK4yF,KAAK5yF,KAAK6yF,IAAI,KAAK,GAAG,GAAGt2F,EAAE+pB,QAAQg5B,OAAOniD,KAAKq/6C,eAAe,CAACvg5C,IAAI,CAAC,EAAE,GAAG,WAAW,CAAC,EAAE,GAAG,YAAY,CAAC,EAAE,GAAGghE,OAAO,CAAC,GAAG,MAAM,cAAc,CAAC3gG,GAAG,GAAG,KAAKA,IAAI,eAAe,EAAEA,GAAG,GAAG,KAAKA,IAAI0/B,KAAK,CAAC,MAAM,MAAMghE,MAAM,EAAE,MAAM,OAAO7/F,KAAK85J,OAAQ,CAAC95J,KAAKs/6C,OAAOlg7C,EAAEY,KAAK2/6C,SAAS3/6C,KAAKs/6C,OAAOM,UAAU5/6C,KAAK2/6C,SAAS3/6C,KAAK+/6C,kBAAkB//6C,KAAKo/6C,SAASvz1C,aAAa,YAAY7rF,KAAK+/6C,mBAAmB//6C,KAAKo/6C,SAASzi5C,aAAa,WAAW,KAAK38B,KAAKo/6C,SAASzy5C,iBAAiB,WAAW3sB,KAAK8/6C,YAAa,CAAC,OAAO9/6C,IAAI,EAAEM,EAAEZ,UAAUog7C,YAAY,SAAS1g7C,GAAG,IAAID,EAAEC,EAAE87B,KAAKt6B,EAAExB,EAAEisP,UAAUjsP,EAAEg1hB,QAAQ,UAAUj1hB,GAAG,UAAUA,GAAG,KAAKyB,GAAG,KAAKA,GAAGZ,KAAKgg7C,aAAc,EAAE1/6C,EAAEZ,UAAU6/6C,YAAY,SAASng7C,GAAG,IAAID,EAAEC,EAAE2w6C,cAAcjg6C,OAAOlP,EAAEZ,KAAKo/6C,SAASp/6C,KAAKs/6C,SAASng7C,IAAIyB,GAAGA,EAAEg8B,SAASz9B,KAAKa,KAAKgg7C,aAAc,EAAE1/6C,EAAEZ,UAAUug7C,SAAS,WAAW,OAAOjg7C,KAAKs/6C,MAAM,EAAEh/6C,EAAEZ,UAAUsg7C,YAAY,WAAW,IAAI5g7C,EAAEY,KAAKs/6C,OAAO,OAAOlg7C,GAAGA,EAAEqg2B,SAASrg2B,EAAEyzB,SAASzzB,EAAEyv6C,MAAM7u6C,KAAKilM,MAAMjlM,MAAMA,IAAI,EAAEM,EAAEZ,UAAU4xI,QAAQ,SAASlyI,GAAG,GAAGY,KAAKilM,KAAK,CAACjlM,KAAKilM,KAAKriE,UAAUmqyC,oBAAoB/s6C,KAAK2/6C,QAAQln6C,GAAGzY,KAAK2/6C,QAAQ3/6C,KAAK24Z,KAAK34Z,KAAKilM,KAAKriE,YAAY5iI,KAAK24Z,KAAK34Z,KAAKilM,KAAK3tE,QAAQt3H,KAAK2/6C,SAAS14yC,KAAKjnI,KAAK85J,SAAS,IAAI36J,EAAE,GAAG,aAAaa,KAAKg/6C,oBAAoB,SAASh/6C,KAAKg/6C,mBAAmB7/6C,EAAE,WAAWa,KAAK++6C,UAAU,OAAO,QAAQ/+6C,KAAKg/6C,qBAAqB7/6C,EAAE,YAAYa,KAAK++6C,UAAU/+6C,KAAKilM,KAAKkuL,cAAc,QAAQ,IAAI7yX,EAAE,GAAG,aAAaN,KAAKk/6C,iBAAiB,SAASl/6C,KAAKk/6C,gBAAgB5+6C,EAAE,gBAAgB,QAAQN,KAAKk/6C,kBAAkB5+6C,EAAE,WAAWN,KAAKilM,KAAK+puC,WAAW,QAAQ5v6C,GAAG,YAAYA,EAAEmN,OAAOvM,KAAK24Z,KAAK34Z,KAAK24Z,KAAK11W,SAASriD,EAAE+nnB,aAAa3onB,KAAKo/6C,SAASto6C,GAAG9W,KAAK2+6C,SAAS,cAAc3+6C,KAAK24Z,KAAK10Z,EAAE,OAAOjE,KAAK24Z,KAAK31Z,EAAE,OAAO1C,EAAE,IAAInB,EAAG,CAAC,EAAEmB,EAAEZ,UAAU+3vB,UAAU,WAAW,OAAOz3vB,KAAK85J,OAAO,EAAEx5J,EAAEZ,UAAUwg7C,UAAU,SAAS/g7C,GAAG,OAAOa,KAAK85J,QAAQ16J,EAAEoqC,MAAMyyvB,QAAQ98xB,GAAGa,KAAKsxI,UAAUtxI,IAAI,EAAEM,EAAEZ,UAAU+t3C,QAAQ,SAAStu3C,GAAG,IAAIa,KAAK8+6C,YAAY,CAAC,IAAIl+6C,EAAEZ,KAAKkw6C,iBAAiBlw6C,KAAKilM,KAAKiruC,gBAAgBlw6C,KAAK8+6C,YAAY3/6C,EAAEg2I,MAAM4kN,KAAK/5V,KAAKmg7C,kBAAkBv/6C,CAAE,CAACZ,KAAK8+6C,cAAc9+6C,KAAK24Z,KAAKx5Z,EAAEg2I,MAAMjgH,IAAIl1B,KAAKog7C,gBAAgBpg7C,KAAK2/6C,QAAQ3/6C,KAAKilM,KAAKv7E,UAAU1pH,KAAK24Z,MAAM34Z,KAAK4/6C,UAAU5/6C,KAAK2/6C,SAAS3/6C,KAAKo/6C,SAAS/q6C,MAAMolI,cAAc,OAAO,YAAYz5I,KAAKimB,SAASjmB,KAAKimB,OAAO,SAASjmB,KAAKsz3C,KAAK,IAAIl03C,EAAEuqB,MAAM,eAAe3pB,KAAKsz3C,KAAK,IAAIl03C,EAAEuqB,MAAM,SAAU,EAAErpB,EAAEZ,UAAU+/6C,MAAM,WAAWz/6C,KAAKo/6C,SAAS/q6C,MAAMolI,cAAc,OAAOz5I,KAAKog7C,eAAe,KAAKpg7C,KAAKmg7C,gBAAgB,KAAKng7C,KAAK8+6C,aAAY,EAAG9+6C,KAAKilM,KAAKj3J,IAAI,YAAYhuC,KAAKyt3C,SAASzt3C,KAAKilM,KAAKj3J,IAAI,YAAYhuC,KAAKyt3C,SAAS,WAAWzt3C,KAAKimB,QAAQjmB,KAAKsz3C,KAAK,IAAIl03C,EAAEuqB,MAAM,YAAY3pB,KAAKimB,OAAO,UAAW,EAAE3lB,EAAEZ,UAAU8/6C,gBAAgB,SAASpg7C,GAAGY,KAAKo/6C,SAASxi5C,SAASx9B,EAAE2w6C,cAAcjg6C,UAAU1Q,EAAEwmH,iBAAiB5lH,KAAKog7C,eAAehh7C,EAAE+1I,MAAMjgH,IAAIl1B,KAAK24Z,MAAMxzY,IAAInlB,KAAK85J,SAAS95J,KAAKmg7C,gBAAgB/g7C,EAAE+1I,MAAMn1I,KAAKimB,OAAO,UAAUjmB,KAAKilM,KAAKr0L,GAAG,YAAY5Q,KAAKyt3C,SAASzt3C,KAAKilM,KAAKr0L,GAAG,YAAY5Q,KAAKyt3C,SAASzt3C,KAAKilM,KAAK77K,KAAK,UAAUppB,KAAKy/6C,OAAOz/6C,KAAKilM,KAAK77K,KAAK,WAAWppB,KAAKy/6C,OAAQ,EAAEn/6C,EAAEZ,UAAU8mZ,aAAa,SAASpnZ,GAAG,OAAOY,KAAK6+6C,aAAaz/6C,EAAEY,KAAKilM,OAAO7lM,GAAGY,KAAKilM,KAAKr0L,GAAG,YAAY5Q,KAAKw/6C,iBAAiBx/6C,KAAKilM,KAAKr0L,GAAG,aAAa5Q,KAAKw/6C,mBAAmBx/6C,KAAKilM,KAAKj3J,IAAI,YAAYhuC,KAAKw/6C,iBAAiBx/6C,KAAKilM,KAAKj3J,IAAI,aAAahuC,KAAKw/6C,mBAAmBx/6C,IAAI,EAAEM,EAAEZ,UAAU2g7C,YAAY,WAAW,OAAOrg7C,KAAK6+6C,UAAU,EAAEv+6C,EAAEZ,UAAUmtP,YAAY,SAASztP,GAAG,OAAOY,KAAK++6C,UAAU3/6C,GAAG,EAAEY,KAAKsxI,UAAUtxI,IAAI,EAAEM,EAAEZ,UAAUo9V,YAAY,WAAW,OAAO98V,KAAK++6C,SAAS,EAAEz+6C,EAAEZ,UAAU4g7C,qBAAqB,SAASlh7C,GAAG,OAAOY,KAAKg/6C,mBAAmB5/6C,GAAG,OAAOY,KAAKsxI,UAAUtxI,IAAI,EAAEM,EAAEZ,UAAU6g7C,qBAAqB,WAAW,OAAOvg7C,KAAKg/6C,kBAAkB,EAAE1+6C,EAAEZ,UAAU8g7C,kBAAkB,SAASph7C,GAAG,OAAOY,KAAKk/6C,gBAAgB9/6C,GAAG,SAASA,EAAEA,EAAEY,KAAKg/6C,mBAAmBh/6C,KAAKsxI,UAAUtxI,IAAI,EAAEM,EAAEZ,UAAU+g7C,kBAAkB,WAAW,OAAOzg7C,KAAKk/6C,eAAe,EAAE5+6C,CAAC,CAA3hT,CAA6hTlB,EAAEmi5C,SAAS9q4C,GAAG,CAACg02C,gBAAgB,CAACM,oBAAmB,EAAG21D,WAAW,EAAEtv5C,QAAQ,KAAKs51C,iBAAiB,CAACziwC,QAAQ,IAAI0iwC,mBAAkB,EAAGE,oBAAmB,EAAGD,kBAAiB,GAAIjz2C,GAAG,EAAEM,IAAG,EAAGF,GAAG,SAAS5Y,GAAG,SAASmB,EAAEM,GAAGzB,EAAES,KAAKI,MAAMA,KAAKmpB,QAAQ/pB,EAAEiqZ,OAAO,CAAC,EAAE5yY,GAAG7V,GAAGxB,EAAE+0xC,QAAQ,CAAC,aAAa,WAAW,UAAU,UAAU,WAAW,gBAAgB,iBAAiBn0xC,KAAM,CAAC,OAAOb,IAAImB,EAAEd,UAAUL,IAAImB,EAAEZ,UAAUJ,OAAOY,OAAOf,GAAGA,EAAEO,YAAYO,YAAYK,EAAEA,EAAEZ,UAAU8oO,MAAM,SAASrpO,GAAG,IAAImB,EAAE,OAAON,KAAKilM,KAAK9lM,EAAEa,KAAKy7vB,WAAW76vB,EAAEV,OAAO,MAAM,qCAAqCI,EAAEN,KAAK0r3C,cAAS,IAASr12C,GAAG/V,EAAE+V,SAAI,IAASjX,EAAE8C,OAAOm3B,UAAUiy1C,YAAYls3C,EAAE8C,OAAOm3B,UAAUiy1C,YAAYr8xC,MAAM,CAACvkF,KAAK,gBAAgBtJ,MAAK,SAAUhC,GAAGkB,EAAE+V,GAAG,WAAWjX,EAAEuM,MAAQ,IAAGrL,EAAE+V,KAAKjX,EAAE8C,OAAOm3B,UAAUky1C,aAAavr3C,KAAKy7vB,UAAU,EAAEn7vB,EAAEZ,UAAUspO,SAAS,gBAAW,IAAShpO,KAAK2g7C,sBAAsBvh7C,EAAE8C,OAAOm3B,UAAUky1C,YAAYq1D,WAAW5g7C,KAAK2g7C,qBAAqB3g7C,KAAK2g7C,yBAAoB,GAAQ3g7C,KAAKmpB,QAAQyh2C,kBAAkB5q3C,KAAK6g7C,wBAAwB7g7C,KAAK6g7C,uBAAuBhu5C,SAAS7yB,KAAKmpB,QAAQ0h2C,oBAAoB7q3C,KAAK8g7C,uBAAuB9g7C,KAAK8g7C,sBAAsBju5C,SAASjyB,EAAEiyB,OAAO7yB,KAAKy7vB,YAAYz7vB,KAAKilM,KAAKj3J,IAAI,OAAOhuC,KAAKo/nC,SAASp/nC,KAAKilM,UAAK,EAAOttL,GAAG,EAAEM,IAAG,CAAG,EAAE3X,EAAEZ,UAAUqh7C,qBAAqB,SAAS3h7C,GAAG,IAAID,EAAEa,KAAKilM,KAAKkpuC,eAAevt6C,EAAExB,EAAEu4H,OAAO,OAAOx4H,IAAIyB,EAAEy+B,UAAUlgC,EAAEq74C,WAAW554C,EAAEy+B,UAAUlgC,EAAEw74C,WAAW/54C,EAAEu+B,SAAShgC,EAAEy74C,YAAYh64C,EAAEu+B,SAAShgC,EAAEs74C,WAAW,EAAEn64C,EAAEZ,UAAUsh7C,eAAe,WAAW,OAAOhh7C,KAAK4r3C,aAAa,IAAI,iBAAiB5r3C,KAAK4r3C,YAAY,eAAe5r3C,KAAK2r3C,iBAAiBh8xC,UAAU98D,OAAO,kCAAkC7yB,KAAK2r3C,iBAAiBh8xC,UAAUxqE,IAAI,wCAAwC,MAAM,IAAI,cAAcnlB,KAAK4r3C,YAAY,eAAe5r3C,KAAK2r3C,iBAAiBh8xC,UAAU98D,OAAO,kCAAkC7yB,KAAK2r3C,iBAAiBh8xC,UAAUxqE,IAAI,wCAAwCnlB,KAAK2r3C,iBAAiBh8xC,UAAUxqE,IAAI,mCAAmC,MAAM,IAAI,aAAanlB,KAAK4r3C,YAAY,mBAAmB5r3C,KAAK2r3C,iBAAiBh8xC,UAAU98D,OAAO,sCAAsC7yB,KAAK2r3C,iBAAiBh8xC,UAAUxqE,IAAI,4CAA4CnlB,KAAK2r3C,iBAAiBh8xC,UAAUxqE,IAAI,mCAAoC,EAAE7kB,EAAEZ,UAAUuh7C,WAAW,SAAS9h7C,GAAG,GAAGa,KAAKilM,KAAK,CAAC,GAAGjlM,KAAK+g7C,qBAAqB5h7C,GAAG,OAAOa,KAAKgh7C,iBAAiBhh7C,KAAKsz3C,KAAK,IAAIl03C,EAAEuqB,MAAM,iBAAiBxqB,IAAIa,KAAKkh7C,qBAAqBlh7C,KAAKmh7C,UAAU,GAAGnh7C,KAAKmpB,QAAQwh2C,kBAAkB,OAAO3q3C,KAAKoh7C,mBAAmBji7C,EAAEa,KAAK4r3C,aAAa,IAAI,iBAAiB,IAAI,cAAc,IAAI,eAAe5r3C,KAAK4r3C,YAAY,cAAc5r3C,KAAK2r3C,iBAAiBh8xC,UAAU98D,OAAO,mCAAmC7yB,KAAK2r3C,iBAAiBh8xC,UAAU98D,OAAO,wCAAwC7yB,KAAK2r3C,iBAAiBh8xC,UAAUxqE,IAAI,kCAAkC,MAAM,IAAI,aAAa,IAAI,mBAAmBnlB,KAAK4r3C,YAAY,aAAa5r3C,KAAK2r3C,iBAAiBh8xC,UAAU98D,OAAO,mCAAmC7yB,KAAK2r3C,iBAAiBh8xC,UAAU98D,OAAO,4CAA4C7yB,KAAK2r3C,iBAAiBh8xC,UAAUxqE,IAAI,sCAAuCnlB,KAAKmpB,QAAQyh2C,kBAAkB,QAAQ5q3C,KAAK4r3C,aAAa5r3C,KAAKkh7C,cAAc/h7C,GAAGa,KAAKmpB,QAAQwh2C,mBAAmB,gBAAgB3q3C,KAAK4r3C,aAAa5r3C,KAAK8r3C,cAAc3s3C,GAAGa,KAAKmpB,QAAQyh2C,kBAAkB5q3C,KAAKqh7C,YAAY1x1C,UAAU98D,OAAO,oCAAoC7yB,KAAKsz3C,KAAK,IAAIl03C,EAAEuqB,MAAM,YAAYxqB,IAAIa,KAAKmh7C,SAAU,CAAC,EAAE7g7C,EAAEZ,UAAUos3C,cAAc,SAAS3s3C,GAAG,IAAIyB,EAAE,IAAIxB,EAAE2s3C,OAAO5s3C,EAAEw4H,OAAOt4F,UAAUlgC,EAAEw4H,OAAOx4F,UAAU7+B,EAAEnB,EAAEw4H,OAAOmjnC,SAAS/6uC,EAAEC,KAAKilM,KAAKkuL,aAAanyX,EAAE5B,EAAEiqZ,OAAO,CAAC7pX,QAAQz/B,GAAGC,KAAKmpB,QAAQuh2C,kBAAkB1q3C,KAAKilM,KAAKh7B,UAAUrpK,EAAEor3C,SAAS1r3C,GAAGU,EAAE,CAACsg7C,iBAAgB,GAAK,EAAEhh7C,EAAEZ,UAAUwh7C,cAAc,SAAS/h7C,GAAG,GAAGA,EAAE,CAAC,IAAIyB,EAAE,IAAIxB,EAAE2s3C,OAAO5s3C,EAAEw4H,OAAOt4F,UAAUlgC,EAAEw4H,OAAOx4F,UAAUn/B,KAAK8g7C,sBAAsBlB,UAAUh/6C,GAAGiu6C,MAAM7u6C,KAAKilM,MAAMjlM,KAAK6g7C,uBAAuBjB,UAAUh/6C,GAAGiu6C,MAAM7u6C,KAAKilM,MAAMjlM,KAAKuh7C,UAAUpi7C,EAAEw4H,OAAOmjnC,SAAS96uC,KAAKmpB,QAAQyh2C,kBAAkB5q3C,KAAKmpB,QAAQ0h2C,oBAAoB7q3C,KAAKwh7C,qBAAsB,MAAMxh7C,KAAK6g7C,uBAAuBhu5C,SAAS7yB,KAAK8g7C,sBAAsBju5C,QAAS,EAAEvyB,EAAEZ,UAAU8h7C,oBAAoB,WAAW,IAAIpi7C,EAAEY,KAAKilM,KAAKw2jB,WAAWp7mB,aAAa,EAAElhJ,EAAEa,KAAKilM,KAAKv7E,UAAU,CAAC,EAAEtqH,IAAIwB,EAAEZ,KAAKilM,KAAKv7E,UAAU,CAAC,EAAEtqH,IAAIkB,EAAEnB,EAAEsjL,WAAW7hL,GAAGb,EAAE8C,KAAKuK,KAAK,EAAEpN,KAAKuh7C,UAAUjh7C,GAAGN,KAAKyh7C,eAAept6C,MAAM0qB,MAAMh/B,EAAE,KAAKC,KAAKyh7C,eAAept6C,MAAM2qB,OAAOj/B,EAAE,IAAK,EAAEO,EAAEZ,UAAU0/nC,QAAQ,WAAWp/nC,KAAKmpB,QAAQyh2C,kBAAkB5q3C,KAAKmpB,QAAQ0h2C,oBAAoB7q3C,KAAKwh7C,qBAAsB,EAAElh7C,EAAEZ,UAAU0uJ,SAAS,SAASjvJ,GAAG,GAAGa,KAAKilM,KAAK,CAAC,GAAGjlM,KAAKmpB,QAAQwh2C,kBAAkB,GAAG,IAAIxr3C,EAAE+7B,KAAK,CAACl7B,KAAK4r3C,YAAY,MAAM5r3C,KAAK2r3C,iBAAiBh8xC,UAAU98D,OAAO,mCAAmC7yB,KAAK2r3C,iBAAiBh8xC,UAAU98D,OAAO,kCAAkC7yB,KAAK2r3C,iBAAiBh8xC,UAAU98D,OAAO,wCAAwC7yB,KAAK2r3C,iBAAiBh8xC,UAAU98D,OAAO,sCAAsC7yB,KAAK2r3C,iBAAiBh8xC,UAAU98D,OAAO,4CAA4C7yB,KAAK2r3C,iBAAiBr7gC,UAAS,EAAG,IAAI1vW,EAAEZ,KAAKilM,KAAKwmrC,aAAa,yCAAyCzr3C,KAAK2r3C,iBAAiBt8sC,MAAMzuK,EAAEZ,KAAK2r3C,iBAAiBhv1C,aAAa,aAAa/7B,QAAG,IAASZ,KAAK2g7C,qBAAqB3g7C,KAAKos3C,aAAc,KAAM,CAAC,GAAG,IAAIjt3C,EAAE+7B,MAAMjjB,GAAG,OAAOjY,KAAKgh7C,gBAAiB,CAAC,QAAQhh7C,KAAK4r3C,aAAa5r3C,KAAKmpB,QAAQyh2C,kBAAkB5q3C,KAAKqh7C,YAAY1x1C,UAAUxqE,IAAI,oCAAoCnlB,KAAKsz3C,KAAK,IAAIl03C,EAAEuqB,MAAM,QAAQxqB,IAAIa,KAAKmh7C,SAAU,CAAC,EAAE7g7C,EAAEZ,UAAUyh7C,QAAQ,WAAWnh7C,KAAK86K,YAAYpuJ,aAAa1sB,KAAK86K,YAAY96K,KAAK86K,gBAAW,CAAO,EAAEx6K,EAAEZ,UAAUgs3C,SAAS,SAASvs3C,GAAG,IAAImB,EAAEN,KAAK,GAAGA,KAAKy7vB,WAAW9uuB,iBAAiB,eAAc,SAAUvtB,GAAG,OAAOA,EAAEwmH,gBAAiB,IAAG5lH,KAAK2r3C,iBAAiB/q3C,EAAEV,OAAO,SAAS,0BAA0BF,KAAKy7vB,YAAY76vB,EAAEV,OAAO,OAAO,qBAAqBF,KAAK2r3C,kBAAkBhv1C,aAAa,eAAc,GAAI38B,KAAK2r3C,iBAAiBp/2C,KAAK,UAAS,IAAKpN,EAAE,CAACC,EAAEive,SAAS,kFAAkF,IAAItue,EAAEC,KAAKilM,KAAKwmrC,aAAa,yCAAyCzr3C,KAAK2r3C,iBAAiBr7gC,UAAS,EAAGtwW,KAAK2r3C,iBAAiBt8sC,MAAMtvK,EAAEC,KAAK2r3C,iBAAiBhv1C,aAAa,aAAa58B,EAAG,KAAM,CAAC,IAAIiB,EAAEhB,KAAKilM,KAAKwmrC,aAAa,mCAAmCzr3C,KAAK2r3C,iBAAiBt8sC,MAAMruK,EAAEhB,KAAK2r3C,iBAAiBhv1C,aAAa,aAAa37B,EAAG,CAAChB,KAAKmpB,QAAQwh2C,oBAAoB3q3C,KAAK2r3C,iBAAiBhv1C,aAAa,eAAe,SAAS38B,KAAK4r3C,YAAY,OAAO5r3C,KAAKmpB,QAAQyh2C,mBAAmB5q3C,KAAKqh7C,YAAYzg7C,EAAEV,OAAO,MAAM,8BAA8BF,KAAK6g7C,uBAAuB,IAAIno6C,GAAG1Y,KAAKqh7C,aAAarh7C,KAAKyh7C,eAAe7g7C,EAAEV,OAAO,MAAM,0CAA0CF,KAAK8g7C,sBAAsB,IAAIpo6C,GAAG,CAACqzE,QAAQ/rF,KAAKyh7C,eAAetC,eAAe,QAAQn/6C,KAAKmpB,QAAQwh2C,oBAAoB3q3C,KAAK4r3C,YAAY,OAAO5r3C,KAAKilM,KAAKr0L,GAAG,OAAO5Q,KAAKo/nC,UAAUp/nC,KAAK2r3C,iBAAiBh/1C,iBAAiB,QAAQ3sB,KAAK0+B,QAAQr7B,KAAKrD,OAAOA,KAAK0h7C,QAAO,EAAG1h7C,KAAKmpB,QAAQwh2C,mBAAmB3q3C,KAAKilM,KAAKr0L,GAAG,aAAY,SAAUzR,GAAGA,EAAEmi7C,iBAAiB,gBAAgBhh7C,EAAEsr3C,aAAazs3C,EAAE4w6C,eAAe,WAAW5w6C,EAAE4w6C,cAAcxj6C,OAAOjM,EAAEsr3C,YAAY,aAAatr3C,EAAEqr3C,iBAAiBh8xC,UAAUxqE,IAAI,sCAAsC7kB,EAAEqr3C,iBAAiBh8xC,UAAU98D,OAAO,kCAAkCvyB,EAAEgz3C,KAAK,IAAIl03C,EAAEuqB,MAAM,yBAA2B,GAAG,EAAErpB,EAAEZ,UAAUg/B,QAAQ,WAAW,IAAI1+B,KAAK0h7C,OAAO,OAAOti7C,EAAEive,SAAS,sDAAqD,EAAG,GAAGrue,KAAKmpB,QAAQwh2C,kBAAkB,CAAC,OAAO3q3C,KAAK4r3C,aAAa,IAAI,MAAM5r3C,KAAK4r3C,YAAY,iBAAiB5r3C,KAAKsz3C,KAAK,IAAIl03C,EAAEuqB,MAAM,2BAA2B,MAAM,IAAI,iBAAiB,IAAI,cAAc,IAAI,eAAe,IAAI,mBAAmBhS,KAAKM,IAAG,EAAGjY,KAAK4r3C,YAAY,MAAM5r3C,KAAK2r3C,iBAAiBh8xC,UAAU98D,OAAO,mCAAmC7yB,KAAK2r3C,iBAAiBh8xC,UAAU98D,OAAO,kCAAkC7yB,KAAK2r3C,iBAAiBh8xC,UAAU98D,OAAO,wCAAwC7yB,KAAK2r3C,iBAAiBh8xC,UAAU98D,OAAO,sCAAsC7yB,KAAK2r3C,iBAAiBh8xC,UAAU98D,OAAO,4CAA4C7yB,KAAKsz3C,KAAK,IAAIl03C,EAAEuqB,MAAM,yBAAyB,MAAM,IAAI,aAAa3pB,KAAK4r3C,YAAY,cAAc5r3C,KAAK2r3C,iBAAiBh8xC,UAAU98D,OAAO,sCAAsC7yB,KAAKoh7C,oBAAoBph7C,KAAK8r3C,cAAc9r3C,KAAKoh7C,oBAAoBph7C,KAAKsz3C,KAAK,IAAIl03C,EAAEuqB,MAAM,2BAA4B,OAAO3pB,KAAK4r3C,aAAa,IAAI,iBAAiB5r3C,KAAK2r3C,iBAAiBh8xC,UAAUxqE,IAAI,mCAAmCnlB,KAAK2r3C,iBAAiBh8xC,UAAUxqE,IAAI,kCAAkC,MAAM,IAAI,cAAcnlB,KAAK2r3C,iBAAiBh8xC,UAAUxqE,IAAI,kCAAkC,MAAM,IAAI,eAAenlB,KAAK2r3C,iBAAiBh8xC,UAAUxqE,IAAI,mCAAmCnlB,KAAK2r3C,iBAAiBh8xC,UAAUxqE,IAAI,wCAAwC,MAAM,IAAI,aAAanlB,KAAK2r3C,iBAAiBh8xC,UAAUxqE,IAAI,sCAAsC,MAAM,IAAI,mBAAmBnlB,KAAK2r3C,iBAAiBh8xC,UAAUxqE,IAAI,mCAAmCnlB,KAAK2r3C,iBAAiBh8xC,UAAUxqE,IAAI,4CAA6C,GAAG,QAAQnlB,KAAK4r3C,kBAAa,IAAS5r3C,KAAK2g7C,oBAAoB3g7C,KAAKos3C,mBAAmB,QAAG,IAASps3C,KAAK2g7C,oBAAoB,CAAC,IAAIxh7C,EAAEa,KAAK2r3C,iBAAiBh8xC,UAAUxqE,IAAI,mCAAmCnlB,KAAK2r3C,iBAAiBhv1C,aAAa,eAAe,UAAUhlB,GAAG,GAAGxY,EAAE,CAACuh7C,WAAW,IAAItv5C,QAAQ,GAAGnZ,IAAG,IAAK9Y,EAAEa,KAAKmpB,QAAQsh2C,gBAAgBxy2C,IAAG,GAAIjY,KAAK2g7C,oBAAoBvh7C,EAAE8C,OAAOm3B,UAAUky1C,YAAYo2D,cAAc3h7C,KAAKih7C,WAAWjh7C,KAAKouJ,SAASjvJ,EAAG,CAAC,MAAMC,EAAE8C,OAAOm3B,UAAUky1C,YAAYq2D,mBAAmB5h7C,KAAKih7C,WAAWjh7C,KAAKouJ,SAASpuJ,KAAKmpB,QAAQsh2C,iBAAiBzq3C,KAAK86K,WAAWj1J,WAAW7lB,KAAKmh7C,QAAQ,KAAK,OAAO,CAAE,EAAE7g7C,EAAEZ,UAAU0s3C,YAAY,WAAWht3C,EAAE8C,OAAOm3B,UAAUky1C,YAAYq1D,WAAW5g7C,KAAK2g7C,qBAAqB3g7C,KAAK2g7C,yBAAoB,EAAO3g7C,KAAK2r3C,iBAAiBh8xC,UAAU98D,OAAO,mCAAmC7yB,KAAK2r3C,iBAAiBhv1C,aAAa,eAAe,SAAS38B,KAAKmpB,QAAQyh2C,kBAAkB5q3C,KAAKkh7C,cAAc,KAAM,EAAE5g7C,CAAC,CAA5xT,CAA8xTlB,EAAEmi5C,SAASrq4C,GAAG,CAACg5J,SAAS,IAAIqsM,KAAK,UAAU3jW,GAAG,SAASzZ,GAAGa,KAAKmpB,QAAQ/pB,EAAEiqZ,OAAO,CAAC,EAAEnyY,GAAG/X,GAAGC,EAAE+0xC,QAAQ,CAAC,UAAU,WAAWn0xC,KAAM,EAAE,SAAS6W,GAAGzX,EAAED,EAAEyB,GAAG,IAAIN,EAAEM,GAAGA,EAAEsvK,UAAU,IAAInwK,EAAEX,EAAEq8vB,WAAWp7mB,aAAa,EAAEr/I,EAAE5B,EAAEsqH,UAAU,CAAC,EAAE3pH,IAAIV,EAAED,EAAEsqH,UAAU,CAACppH,EAAEP,IAAIe,EAAEE,EAAEyhL,WAAWpjL,GAAG,GAAGuB,GAAG,aAAaA,EAAE27W,KAAK,CAAC,IAAI/5W,EAAE,OAAO1B,EAAE0B,EAAE,KAAK8V,GAAGnZ,EAAEmB,EAAEkC,EAAE,KAAKpD,EAAEqs3C,aAAa,uBAAuBnz2C,GAAGnZ,EAAEmB,EAAEkC,EAAEpD,EAAEqs3C,aAAa,qBAAsB,MAAM7q3C,GAAG,aAAaA,EAAE27W,KAAKjkW,GAAGnZ,EAAEmB,EAAEQ,EAAE,KAAK1B,EAAEqs3C,aAAa,+BAA+B3q3C,GAAG,IAAIwX,GAAGnZ,EAAEmB,EAAEQ,EAAE,IAAI1B,EAAEqs3C,aAAa,4BAA4Bnz2C,GAAGnZ,EAAEmB,EAAEQ,EAAE1B,EAAEqs3C,aAAa,uBAAwB,CAAC,SAASnz2C,GAAGlZ,EAAED,EAAEyB,EAAEN,GAAG,IAAIP,EAAEiB,EAAE3B,EAAEyB,GAAGf,EAAEa,GAAGI,EAAE6B,KAAK6yF,IAAI,IAAI,GAAG7yF,KAAKyK,MAAMvN,IAAIM,OAAO,KAAKhB,GAAGA,EAAEU,EAAEiB,IAAI,GAAG,GAAG3B,GAAG,EAAE,EAAEA,GAAG,EAAE,EAAEA,GAAG,EAAE,EAAEA,GAAG,EAAE,EAAE,SAASD,GAAG,IAAID,EAAE0D,KAAK6yF,IAAI,GAAG7yF,KAAKuK,MAAMvK,KAAKwnB,IAAIjrB,GAAGyD,KAAK26xB,OAAO,OAAO36xB,KAAKogD,MAAM7jD,EAAED,GAAGA,CAAC,CAAzF,CAA2FE,KAAKD,EAAEiV,MAAM0qB,MAAM5/B,GAAG2B,EAAEF,GAAG,KAAKxB,EAAE66I,UAAUn5I,EAAE,SAASR,CAAE,CAACsY,GAAGlZ,UAAU056C,mBAAmB,WAAW,MAAO,aAAa,EAAExg6C,GAAGlZ,UAAU+t3C,QAAQ,WAAW522C,GAAG7W,KAAKilM,KAAKjlM,KAAKy7vB,WAAWz7vB,KAAKmpB,QAAS,EAAEvQ,GAAGlZ,UAAU8oO,MAAM,SAASppO,GAAG,OAAOY,KAAKilM,KAAK7lM,EAAEY,KAAKy7vB,WAAW76vB,EAAEV,OAAO,MAAM,oCAAoCd,EAAEqnO,gBAAgBzmO,KAAKilM,KAAKr0L,GAAG,OAAO5Q,KAAKyt3C,SAASzt3C,KAAKyt3C,UAAUzt3C,KAAKy7vB,UAAU,EAAE7ivB,GAAGlZ,UAAUspO,SAAS,WAAWpoO,EAAEiyB,OAAO7yB,KAAKy7vB,YAAYz7vB,KAAKilM,KAAKj3J,IAAI,OAAOhuC,KAAKyt3C,SAASzt3C,KAAKilM,UAAK,CAAO,EAAErsL,GAAGlZ,UAAUmi7C,QAAQ,SAASzi7C,GAAGY,KAAKmpB,QAAQozV,KAAKn9W,EAAEyX,GAAG7W,KAAKilM,KAAKjlM,KAAKy7vB,WAAWz7vB,KAAKmpB,QAAS,EAAE,IAAI7R,GAAG,SAASnY,GAAGa,KAAKqq3C,aAAY,EAAGlr3C,GAAGA,EAAEiiJ,YAAYjiJ,EAAEiiJ,qBAAqBhiJ,EAAE8C,OAAOy8P,YAAY3+P,KAAKy7vB,WAAWt8vB,EAAEiiJ,UAAUhiJ,EAAEive,SAAS,2DAA2Djve,EAAE+0xC,QAAQ,CAAC,qBAAqB,eAAen0xC,MAAM,uBAAuBZ,EAAE8C,OAAOiD,SAASnF,KAAKsq3C,kBAAkB,mBAAmB,0BAA0Blr3C,EAAE8C,OAAOiD,SAASnF,KAAKsq3C,kBAAkB,sBAAsB,6BAA6Blr3C,EAAE8C,OAAOiD,SAASnF,KAAKsq3C,kBAAkB,yBAAyB,yBAAyBlr3C,EAAE8C,OAAOiD,WAAWnF,KAAKsq3C,kBAAkB,qBAAsB,EAAEhz2C,GAAG5X,UAAU8oO,MAAM,SAASrpO,GAAG,OAAOa,KAAKilM,KAAK9lM,EAAEa,KAAKy7vB,aAAaz7vB,KAAKy7vB,WAAWz7vB,KAAKilM,KAAKwhC,gBAAgBzmO,KAAKk96C,kBAAkBt86C,EAAEV,OAAO,MAAM,qCAAqCF,KAAKmq3C,0BAA0Bnq3C,KAAK0r3C,YAAY1r3C,KAAKk96C,kBAAkB7o6C,MAAMC,QAAQ,OAAOlV,EAAEive,SAAS,kDAAkDrue,KAAKk96C,iBAAiB,EAAE5l6C,GAAG5X,UAAUspO,SAAS,WAAWpoO,EAAEiyB,OAAO7yB,KAAKk96C,mBAAmBl96C,KAAKilM,KAAK,KAAK7lM,EAAE8C,OAAOiD,SAASkkB,oBAAoBrpB,KAAKsq3C,kBAAkBtq3C,KAAK8h7C,YAAa,EAAExq6C,GAAG5X,UAAUyq3C,wBAAwB,WAAW,SAAU/q3C,EAAE8C,OAAOiD,SAAS486C,mBAAmB3i7C,EAAE8C,OAAOiD,SAAS686C,sBAAsB5i7C,EAAE8C,OAAOiD,SAAS886C,qBAAqB7i7C,EAAE8C,OAAOiD,SAAS+86C,wBAAwB,EAAE5q6C,GAAG5X,UAAUgs3C,SAAS,WAAW,IAAIvs3C,EAAEa,KAAKmi7C,kBAAkBvh7C,EAAEV,OAAO,SAAS,2BAA2BF,KAAKk96C,mBAAmBt86C,EAAEV,OAAO,OAAO,qBAAqBf,GAAGw9B,aAAa,eAAc,GAAIx9B,EAAEoN,KAAK,SAASvM,KAAKoi7C,eAAepi7C,KAAKmi7C,kBAAkBx15C,iBAAiB,QAAQ3sB,KAAKuq3C,oBAAoBnr3C,EAAE8C,OAAOiD,SAASwnB,iBAAiB3sB,KAAKsq3C,kBAAkBtq3C,KAAK8h7C,YAAa,EAAExq6C,GAAG5X,UAAU0i7C,aAAa,WAAW,IAAIhj7C,EAAEY,KAAKqi7C,YAAYri7C,KAAKmi7C,kBAAkBxl5C,aAAa,aAAav9B,GAAGY,KAAKmi7C,kBAAkB9ywC,MAAMjwK,CAAE,EAAEkY,GAAG5X,UAAU2i7C,UAAU,WAAW,OAAOri7C,KAAKilM,KAAKwmrC,aAAazr3C,KAAKsi7C,gBAAgB,yBAAyB,0BAA0B,EAAEhr6C,GAAG5X,UAAU4i7C,cAAc,WAAW,OAAOti7C,KAAKqq3C,WAAW,EAAE/y2C,GAAG5X,UAAUoi7C,YAAY,YAAY1i7C,EAAE8C,OAAOiD,SAASkwc,mBAAmBj2c,EAAE8C,OAAOiD,SAASw4c,sBAAsBv+c,EAAE8C,OAAOiD,SAASu4c,yBAAyBt+c,EAAE8C,OAAOiD,SAASy4c,uBAAuB59c,KAAKy7vB,aAAaz7vB,KAAKqq3C,cAAcrq3C,KAAKqq3C,aAAarq3C,KAAKqq3C,YAAYrq3C,KAAKmi7C,kBAAkBxy1C,UAAUo7b,OAAO,wBAAwB/qhB,KAAKmi7C,kBAAkBxy1C,UAAUo7b,OAAO,4BAA4B/qhB,KAAKoi7C,eAAgB,EAAE9q6C,GAAG5X,UAAU6q3C,mBAAmB,WAAWvq3C,KAAKsi7C,gBAAgBlj7C,EAAE8C,OAAOiD,SAASo96C,eAAenj7C,EAAE8C,OAAOiD,SAASo96C,iBAAiBnj7C,EAAE8C,OAAOiD,SAASq96C,oBAAoBpj7C,EAAE8C,OAAOiD,SAASq96C,sBAAsBpj7C,EAAE8C,OAAOiD,SAASs96C,iBAAiBrj7C,EAAE8C,OAAOiD,SAASs96C,mBAAmBrj7C,EAAE8C,OAAOiD,SAASu96C,wBAAwBtj7C,EAAE8C,OAAOiD,SAASu96C,yBAAyB1i7C,KAAKy7vB,WAAWknrB,kBAAkB3i7C,KAAKy7vB,WAAWknrB,oBAAoB3i7C,KAAKy7vB,WAAWmnrB,qBAAqB5i7C,KAAKy7vB,WAAWmnrB,uBAAuB5i7C,KAAKy7vB,WAAWonrB,oBAAoB7i7C,KAAKy7vB,WAAWonrB,sBAAsB7i7C,KAAKy7vB,WAAWqnrB,yBAAyB9i7C,KAAKy7vB,WAAWqnrB,yBAA0B,EAAE,IAAI9r6C,GAAG,CAACqhrC,aAAY,EAAGgvL,cAAa,EAAG07D,gBAAe,EAAGnz1C,UAAU,GAAGsgF,SAAS,SAASx4J,GAAG,CAAC,UAAU,kCAAkC,mDAAmD,yBAAyB,wBAAwB,yBAAyB,4BAA4B7K,KAAK,MAAMsL,GAAG,SAAShZ,GAAG,SAASmB,EAAEM,GAAGzB,EAAES,KAAKI,MAAMA,KAAKmpB,QAAQ/pB,EAAEiqZ,OAAO/pZ,OAAOY,OAAO8W,IAAIpW,GAAGxB,EAAE+0xC,QAAQ,CAAC,UAAU,WAAW,SAAS,eAAe,aAAa,WAAWn0xC,KAAM,CAAC,OAAOb,IAAImB,EAAEd,UAAUL,IAAImB,EAAEZ,UAAUJ,OAAOY,OAAOf,GAAGA,EAAEO,YAAYO,YAAYK,EAAEA,EAAEZ,UAAUmv6C,MAAM,SAAS1v6C,GAAG,OAAOa,KAAKilM,MAAMjlM,KAAK6yB,SAAS7yB,KAAKilM,KAAK9lM,EAAEa,KAAKmpB,QAAQk+1C,cAAcrn3C,KAAKilM,KAAKr0L,GAAG,QAAQ5Q,KAAKgj7C,UAAUhj7C,KAAKmpB,QAAQ855C,aAAajj7C,KAAKilM,KAAKr0L,GAAG,OAAO5Q,KAAKgj7C,UAAUhj7C,KAAKilM,KAAKr0L,GAAG,SAAS5Q,KAAK6yB,QAAQ7yB,KAAKsxI,UAAUtxI,KAAKkj7C,qBAAqBlj7C,KAAKmj7C,eAAenj7C,KAAKilM,KAAKr0L,GAAG,YAAY5Q,KAAK035B,cAAc135B,KAAKilM,KAAKr0L,GAAG,UAAU5Q,KAAKoj7C,YAAYpj7C,KAAKy7vB,YAAYz7vB,KAAKy7vB,WAAW9rqB,UAAUxqE,IAAI,gCAAgCnlB,KAAKilM,KAAK43uC,iBAAiBlt1C,UAAUxqE,IAAI,2BAA2BnlB,KAAKilM,KAAKr0L,GAAG,OAAO5Q,KAAKsxI,SAAStxI,KAAKsz3C,KAAK,IAAIl03C,EAAEuqB,MAAM,SAAS3pB,IAAI,EAAEM,EAAEZ,UAAU+/1B,OAAO,WAAW,QAASz/1B,KAAKilM,IAAI,EAAE3kM,EAAEZ,UAAUmzB,OAAO,WAAW,OAAO7yB,KAAKukJ,UAAU3jJ,EAAEiyB,OAAO7yB,KAAKukJ,UAAUvkJ,KAAKy7vB,aAAa76vB,EAAEiyB,OAAO7yB,KAAKy7vB,mBAAmBz7vB,KAAKy7vB,YAAYz7vB,KAAKilM,OAAOjlM,KAAKilM,KAAKj3J,IAAI,OAAOhuC,KAAKsxI,SAAStxI,KAAKilM,KAAKj3J,IAAI,OAAOhuC,KAAKgj7C,UAAUhj7C,KAAKilM,KAAKj3J,IAAI,QAAQhuC,KAAKgj7C,UAAUhj7C,KAAKilM,KAAKj3J,IAAI,SAAShuC,KAAK6yB,QAAQ7yB,KAAKilM,KAAKj3J,IAAI,YAAYhuC,KAAK035B,cAAc135B,KAAKilM,KAAKj3J,IAAI,UAAUhuC,KAAKoj7C,YAAYpj7C,KAAKilM,KAAKj3J,IAAI,OAAOhuC,KAAKqj7C,gBAAgBrj7C,KAAKilM,MAAMjlM,KAAKsz3C,KAAK,IAAIl03C,EAAEuqB,MAAM,UAAU3pB,IAAI,EAAEM,EAAEZ,UAAUgg7C,UAAU,WAAW,OAAO1/6C,KAAK2/6C,OAAO,EAAEr/6C,EAAEZ,UAAUkg7C,UAAU,SAASzg7C,GAAG,OAAOa,KAAK2/6C,QAAQvg7C,EAAE2s3C,OAAO9vlB,QAAQ98xB,GAAGa,KAAK24Z,KAAK,KAAK34Z,KAAKmj7C,eAAc,EAAGnj7C,KAAKsxI,UAAUtxI,KAAKilM,OAAOjlM,KAAKilM,KAAKr0L,GAAG,OAAO5Q,KAAKsxI,SAAStxI,KAAKilM,KAAKj3J,IAAI,YAAYhuC,KAAK035B,cAAc135B,KAAKy7vB,YAAYz7vB,KAAKy7vB,WAAW9rqB,UAAU98D,OAAO,gCAAgC7yB,KAAKilM,KAAK43uC,iBAAiBlt1C,UAAU98D,OAAO,2BAA2B7yB,IAAI,EAAEM,EAAEZ,UAAU4j7C,aAAa,WAAW,OAAOtj7C,KAAKmj7C,eAAc,EAAGnj7C,KAAK24Z,KAAK,KAAK34Z,KAAKsxI,UAAUtxI,KAAKilM,OAAOjlM,KAAKilM,KAAKj3J,IAAI,OAAOhuC,KAAKsxI,SAAStxI,KAAKilM,KAAKr0L,GAAG,YAAY5Q,KAAK035B,cAAc135B,KAAKilM,KAAKr0L,GAAG,OAAO5Q,KAAKqj7C,SAASrj7C,KAAKy7vB,YAAYz7vB,KAAKy7vB,WAAW9rqB,UAAUxqE,IAAI,gCAAgCnlB,KAAKilM,KAAK43uC,iBAAiBlt1C,UAAUxqE,IAAI,2BAA2BnlB,IAAI,EAAEM,EAAEZ,UAAU45V,WAAW,WAAW,OAAOt5V,KAAKy7vB,UAAU,EAAEn7vB,EAAEZ,UAAU6j7C,QAAQ,SAASpk7C,GAAG,OAAOa,KAAKwj7C,cAAcpk7C,EAAE8C,OAAOiD,SAAS81P,eAAe97P,GAAG,EAAEmB,EAAEZ,UAAU+j7C,QAAQ,SAAStk7C,GAAG,IAAIyB,EAAEN,EAAElB,EAAE8C,OAAOiD,SAASu+6C,yBAAyB3j7C,EAAEX,EAAE8C,OAAOiD,SAASmE,cAAc,QAAQ,IAAIvJ,EAAEk6I,UAAU96I,EAAEyB,EAAEb,EAAEoqF,YAAY7pF,EAAEiU,YAAY3T,GAAG,OAAOZ,KAAKwj7C,cAAclj7C,EAAE,EAAEA,EAAEZ,UAAU80e,YAAY,WAAW,OAAOx0e,KAAKy7vB,YAAYz7vB,KAAKy7vB,WAAWpnvB,MAAM67J,QAAQ,EAAE5vK,EAAEZ,UAAU+puB,YAAY,SAASrquB,GAAG,OAAOY,KAAKmpB,QAAQ+mJ,SAAS9wK,EAAEY,KAAKsxI,UAAUtxI,IAAI,EAAEM,EAAEZ,UAAU8j7C,cAAc,SAASpk7C,GAAG,GAAGY,KAAKukJ,SAAS,KAAKvkJ,KAAKukJ,SAASx6D,iBAAiB/pF,KAAKukJ,SAASp6D,YAAYnqF,KAAKukJ,SAAS1nH,YAAY78B,KAAKukJ,SAASp6D,iBAAiBnqF,KAAKukJ,SAAS3jJ,EAAEV,OAAO,MAAM,yBAAyBF,KAAKy7vB,YAAY,OAAOz7vB,KAAKukJ,SAAShwI,YAAYnV,GAAGY,KAAK2j7C,qBAAqB3j7C,KAAKsxI,UAAUtxI,KAAKkj7C,qBAAqBlj7C,IAAI,EAAEM,EAAEZ,UAAU291C,aAAa,SAASj+1C,GAAGY,KAAKy7vB,YAAYz7vB,KAAKy7vB,WAAW9rqB,UAAUxqE,IAAI/lB,EAAG,EAAEkB,EAAEZ,UAAUs+1C,gBAAgB,SAAS5+1C,GAAGY,KAAKy7vB,YAAYz7vB,KAAKy7vB,WAAW9rqB,UAAU98D,OAAOzzB,EAAG,EAAEkB,EAAEZ,UAAUwg7C,UAAU,SAAS9g7C,GAAG,OAAOY,KAAKmpB,QAAQg5B,OAAO/iD,EAAEY,KAAKsxI,UAAUtxI,IAAI,EAAEM,EAAEZ,UAAUkk7C,gBAAgB,SAASxk7C,GAAG,GAAGY,KAAKy7vB,WAAW,OAAOz7vB,KAAKy7vB,WAAW9rqB,UAAUo7b,OAAO3rhB,EAAE,EAAEkB,EAAEZ,UAAUik7C,mBAAmB,WAAW3j7C,KAAKmpB,QAAQkvqC,cAAcr4rC,KAAK6j7C,aAAajj7C,EAAEV,OAAO,SAAS,8BAA8BF,KAAKukJ,UAAUvkJ,KAAK6j7C,aAAat36C,KAAK,SAASvM,KAAK6j7C,aAAaln5C,aAAa,aAAa,eAAe38B,KAAK6j7C,aAAa5pyC,UAAU,SAASj6I,KAAK6j7C,aAAal35C,iBAAiB,QAAQ3sB,KAAKgj7C,UAAW,EAAE1i7C,EAAEZ,UAAU0j7C,WAAW,SAAShk7C,GAAGY,KAAKsxI,QAAQlyI,EAAE+1I,MAAO,EAAE70I,EAAEZ,UAAUg45B,aAAa,SAASt45B,GAAGY,KAAKsxI,QAAQlyI,EAAE+1I,MAAO,EAAE70I,EAAEZ,UAAU2j7C,QAAQ,SAASjk7C,GAAGY,KAAKsxI,QAAQlyI,EAAE+1I,MAAO,EAAE70I,EAAEZ,UAAU4xI,QAAQ,SAASnyI,GAAG,IAAImB,EAAEN,KAAK,GAAGA,KAAKilM,OAAOjlM,KAAK2/6C,SAAS3/6C,KAAKmj7C,gBAAgBnj7C,KAAKukJ,WAAWvkJ,KAAKy7vB,aAAaz7vB,KAAKy7vB,WAAW76vB,EAAEV,OAAO,MAAM,iBAAiBF,KAAKilM,KAAKwhC,gBAAgBzmO,KAAK8j7C,KAAKlj7C,EAAEV,OAAO,MAAM,qBAAqBF,KAAKy7vB,YAAYz7vB,KAAKy7vB,WAAWlnvB,YAAYvU,KAAKukJ,UAAUvkJ,KAAKmpB,QAAQymE,WAAW5vF,KAAKmpB,QAAQymE,UAAUhrF,MAAM,KAAKsgB,SAAQ,SAAU9lB,GAAG,OAAOkB,EAAEm7vB,WAAW9rqB,UAAUxqE,IAAI/lB,EAAG,IAAGY,KAAKmj7C,eAAenj7C,KAAKy7vB,WAAW9rqB,UAAUxqE,IAAI,iCAAiCnlB,KAAKmpB,QAAQ+mJ,UAAUlwK,KAAKy7vB,WAAWpnvB,MAAM67J,WAAWlwK,KAAKmpB,QAAQ+mJ,WAAWlwK,KAAKy7vB,WAAWpnvB,MAAM67J,SAASlwK,KAAKmpB,QAAQ+mJ,UAAUlwK,KAAKilM,KAAKriE,UAAUmqyC,oBAAoB/s6C,KAAKmj7C,gBAAgBnj7C,KAAK2/6C,QAAQln6C,GAAGzY,KAAK2/6C,QAAQ3/6C,KAAK24Z,KAAK34Z,KAAKilM,KAAKriE,aAAa5iI,KAAKmj7C,eAAehk7C,GAAG,CAAC,IAAIY,EAAEC,KAAK24Z,KAAK34Z,KAAKmj7C,eAAehk7C,EAAEA,EAAEa,KAAKilM,KAAK3tE,QAAQt3H,KAAK2/6C,SAAS3+6C,EAAEhB,KAAKmpB,QAAQ8/X,OAAO5pZ,EAAE,SAASF,EAAEyB,GAAG,GAAGA,EAAE,CAAC,GAAG,iBAAiBA,EAAE,CAAC,IAAIN,EAAEuC,KAAKogD,MAAMpgD,KAAK4yF,KAAK,GAAG5yF,KAAK6yF,IAAI90F,EAAE,KAAK,MAAO,CAACq+B,OAAO,IAAI7/B,EAAEoqC,MAAM,EAAE,GAAG1K,IAAI,IAAI1/B,EAAEoqC,MAAM,EAAE5oC,GAAG,WAAW,IAAIxB,EAAEoqC,MAAMlpC,EAAEA,GAAG,YAAY,IAAIlB,EAAEoqC,OAAOlpC,EAAEA,GAAGw/F,OAAO,IAAI1gG,EAAEoqC,MAAM,GAAG5oC,GAAG,cAAc,IAAIxB,EAAEoqC,MAAMlpC,GAAGA,GAAG,eAAe,IAAIlB,EAAEoqC,OAAOlpC,GAAGA,GAAGu+B,KAAK,IAAIz/B,EAAEoqC,MAAM5oC,EAAE,GAAGi/F,MAAM,IAAIzgG,EAAEoqC,OAAO5oC,EAAE,GAAG,CAAC,GAAGA,aAAaxB,EAAEoqC,OAAO/pC,MAAMkS,QAAQ/Q,GAAG,CAAC,IAAIb,EAAEX,EAAEoqC,MAAMyyvB,QAAQr7xB,GAAG,MAAO,CAACq+B,OAAOl/B,EAAE++B,IAAI/+B,EAAE,WAAWA,EAAE,YAAYA,EAAE+/F,OAAO//F,EAAE,cAAcA,EAAE,eAAeA,EAAE8+B,KAAK9+B,EAAE8/F,MAAM9/F,EAAE,CAAC,MAAO,CAACk/B,OAAO7/B,EAAEoqC,MAAMyyvB,QAAQr7xB,EAAEq+B,QAAQ,CAAC,EAAE,IAAIH,IAAI1/B,EAAEoqC,MAAMyyvB,QAAQr7xB,EAAEk+B,KAAK,CAAC,EAAE,IAAI,WAAW1/B,EAAEoqC,MAAMyyvB,QAAQr7xB,EAAE,aAAa,CAAC,EAAE,IAAI,YAAYxB,EAAEoqC,MAAMyyvB,QAAQr7xB,EAAE,cAAc,CAAC,EAAE,IAAIk/F,OAAO1gG,EAAEoqC,MAAMyyvB,QAAQr7xB,EAAEk/F,QAAQ,CAAC,EAAE,IAAI,cAAc1gG,EAAEoqC,MAAMyyvB,QAAQr7xB,EAAE,gBAAgB,CAAC,EAAE,IAAI,eAAexB,EAAEoqC,MAAMyyvB,QAAQr7xB,EAAE,iBAAiB,CAAC,EAAE,IAAIi+B,KAAKz/B,EAAEoqC,MAAMyyvB,QAAQr7xB,EAAEi+B,MAAM,CAAC,EAAE,IAAIghE,MAAMzgG,EAAEoqC,MAAMyyvB,QAAQr7xB,EAAEi/F,OAAO,CAAC,EAAE,IAAI,CAAC,OAAO1gG,EAAE,IAAIC,EAAEoqC,MAAM,EAAE,GAAG,CAAr7B,CAAu7BxpC,KAAKmpB,QAAQg5B,QAAQ,IAAInhD,EAAE,CAAC,IAAIF,EAAE0B,EAAExC,KAAKy7vB,WAAW76tB,YAAY//B,EAAEb,KAAKy7vB,WAAW96tB,aAAa7/B,EAAEf,EAAEiD,EAAE3D,EAAEygG,OAAO98F,EAAEnC,EAAE,CAAC,OAAOd,EAAEiD,EAAEhD,KAAKilM,KAAKriE,UAAU5jG,OAAOn+B,EAAE,CAAC,UAAU,GAAGd,EAAEkE,EAAEzB,EAAE,EAAE1B,EAAEe,KAAK,QAAQ9B,EAAEkE,EAAEjE,KAAKilM,KAAKriE,UAAU7jG,MAAMv8B,EAAE,GAAG1B,EAAEe,KAAK,SAASb,EAAE,IAAIF,EAAET,OAAO,SAASS,EAAE+L,KAAK,IAAK,CAAC,IAAIxK,EAAEtC,EAAEolB,IAAI9lB,EAAE2B,IAAIiiD,QAAQriD,EAAE+nnB,aAAa3onB,KAAKy7vB,WAAW3kvB,GAAG9V,GAAG,cAAcqB,EAAE4B,EAAE,MAAM5B,EAAEW,EAAE,OAAO+T,GAAG/W,KAAKy7vB,WAAWz6vB,EAAE,QAAS,CAAC,EAAEV,EAAEZ,UAAUwj7C,mBAAmB,WAAW,GAAGlj7C,KAAKmpB,QAAQ455C,gBAAgB/i7C,KAAKy7vB,WAAW,CAAC,IAAIr8vB,EAAEY,KAAKy7vB,WAAWl6tB,cAAc7pB,IAAItY,GAAGA,EAAE0xW,OAAQ,CAAC,EAAExwW,EAAEZ,UAAUsj7C,SAAS,WAAWhj7C,KAAK6yB,QAAS,EAAEvyB,CAAC,CAAlwM,CAAowMlB,EAAEmi5C,SAAS/p4C,GAAG,CAAClR,QAAQlH,EAAEkH,QAAQ6mR,UAAUhuR,EAAE2u3C,iBAAiB1u3C,EAAE0u3C,iBAAiBy3B,uBAAuBnm5C,EAAEmm5C,uBAAuB563C,IAAIvU,GAAG022C,kBAAkB502C,GAAG8y2C,iBAAiBjz2C,GAAGgx2C,mBAAmBjz2C,GAAGw32C,aAAa102C,GAAG8w2C,kBAAkBpy2C,GAAGmw2C,MAAMtv2C,GAAGuwY,OAAOhwY,GAAGi62C,MAAM5p3C,GAAGgj3C,OAAO3s3C,EAAE2s3C,OAAO+1B,aAAa1i5C,EAAE0i5C,aAAat42C,MAAMpqC,EAAEoqC,MAAMu42C,mBAAmB3i5C,EAAE2i5C,mBAAmBR,QAAQni5C,EAAEmi5C,QAAQzllC,OAAO18T,EAAE08T,OAAOionC,QAAQ,WAAWh16C,KAAK2/4C,QAAQpg5C,GAAI,EAAE016C,wBAAwB,WAAW,IAAI5k7C,EAAE+Q,GAAG/Q,IAAIA,EAAEk35C,eAAe,IAAIl35C,EAAEi35C,aAAaj35C,EAAEg/H,QAAQ9vH,IAAI6B,GAAG,MAAMkX,QAAQC,KAAK,yMAA0M,EAAE,eAAIo1Z,GAAc,OAAOt9a,EAAE08T,OAAO20jC,YAAY,EAAE,eAAI/z8B,CAAYv9a,GAAGC,EAAE08T,OAAO20jC,aAAatx3C,CAAE,EAAE,cAAIk92C,GAAa,OAAOj92C,EAAE08T,OAAOu0jC,OAAO,EAAE,cAAIhU,CAAWl92C,GAAGC,EAAE08T,OAAOu0jC,QAAQlx3C,CAAE,EAAE,eAAIi35C,GAAc,OAAO1o5C,GAAG0o5C,WAAW,EAAE,eAAIA,CAAYh35C,GAAGsO,GAAG0o5C,YAAYh35C,CAAE,EAAE,4BAAI6k7C,GAA2B,OAAO7k7C,EAAE08T,OAAO40jC,2BAA2B,EAAE,4BAAIuzD,CAAyB9k7C,GAAGC,EAAE08T,OAAO40jC,4BAA4Bvx3C,CAAE,EAAE8/nC,aAAa,SAAS9/nC,GAAGC,EAAE6k5C,eAAe9k5C,EAAG,EAAE26E,UAAU,IAAI,OAAOtiE,EAAG,IAIvlgXkk2C,CAEN,CAtC+En18B,gCCAhFjna,OAAO4D,eAAeT,EAAS,aAAc,CAC3CtB,OAAO,IAETsB,EAAQyh7C,kBAAoBzh7C,EAAQ0h7C,qBAAkBp24C,EAEtD,IAAIgmY,EAAWz0a,OAAOa,QAAU,SAAU2P,GAAU,IAAK,IAAIlP,EAAI,EAAGA,EAAIR,UAAUC,OAAQO,IAAK,CAAE,IAAIiH,EAASzH,UAAUQ,GAAI,IAAK,IAAIikB,KAAOhd,EAAcvI,OAAOI,UAAUC,eAAeC,KAAKiI,EAAQgd,KAAQ/U,EAAO+U,GAAOhd,EAAOgd,GAAU,CAAE,OAAO/U,CAAQ,EAE3Ps06C,EAAe,WAAc,SAAS5w6C,EAAiB1D,EAAQm9B,GAAS,IAAK,IAAIrsC,EAAI,EAAGA,EAAIqsC,EAAM5sC,OAAQO,IAAK,CAAE,IAAIyqD,EAAape,EAAMrsC,GAAIyqD,EAAW1nD,WAAa0nD,EAAW1nD,aAAc,EAAO0nD,EAAWvnD,cAAe,EAAU,UAAWunD,IAAYA,EAAWtnD,UAAW,GAAMzE,OAAO4D,eAAe4M,EAAQu7C,EAAWxmC,IAAKwmC,EAAa,CAAE,CAAE,OAAO,SAAUk9T,EAAaC,EAAYyI,GAAiJ,OAA9HzI,GAAYh1W,EAAiB+0W,EAAY7oX,UAAW8oX,GAAiByI,GAAaz9W,EAAiB+0W,EAAa0I,GAAqB1I,CAAa,CAAG,CAA7hB,GAEfo++B,EAAS,EAAQ,OAEjBkT,EAAUxv/B,EAAuBs8+B,GAIjC09E,EAAah6jC,EAFD,EAAQ,QAMpBi6jC,EAAcj6jC,EAFD,EAAQ,OAMrBk6jC,EAAgBl6jC,EAFD,EAAQ,QAMvBm6jC,EAQJ,SAAiCt3tC,GAAO,GAAIA,GAAOA,EAAI5qN,WAAc,OAAO4qN,EAAc,IAAIu6J,EAAS,CAAC,EAAG,GAAW,MAAPv6J,EAAe,IAAK,IAAIroM,KAAOqoM,EAAW5tN,OAAOI,UAAUC,eAAeC,KAAKstN,EAAKroM,KAAM4iW,EAAO5iW,GAAOqoM,EAAIroM,IAAgC,OAAtB4iW,EAAOllX,QAAU2qN,EAAYu6J,CAAU,CARzPE,CAFC,EAAQ,QAIxB88jC,EAAmB,EAAQ,OAE3BC,EAAoBr6jC,EAAuBo6jC,GAE3CE,EAAyB,EAAQ,OAIrC,SAASt6jC,EAAuBn9J,GAAO,OAAOA,GAAOA,EAAI5qN,WAAa4qN,EAAM,CAAE3qN,QAAS2qN,EAAO,CAI9F,SAAS47J,EAA2B1mX,EAAMxC,GAAQ,IAAKwC,EAAQ,MAAM,IAAI4mB,eAAe,6DAAgE,OAAOppB,GAAyB,iBAATA,GAAqC,mBAATA,EAA8BwC,EAAPxC,CAAa,CAI/O,IAAIuk7C,EAAkB1h7C,EAAQ0h7C,gBAAkB,mBAC5CD,EAAoBzh7C,EAAQyh7C,kBAAoB,yBAEhDU,EAAYH,EAAiBl4M,gBAAiDx+rC,IAApCs24C,EAAW9h7C,QAAQo1Z,aAE7DkthC,EAAoB,SAA2Bn66C,GACjD,OAAOvF,SAASmE,cAAcoB,EAChC,EAEIo66C,EAAkB,WACpB,OAAOF,EAAYP,EAAW9h7C,QAAQo1Z,aAAe0shC,EAAW9h7C,QAAQq21C,mCAC1E,EAEA,SAASmsF,EAAiBC,GACxB,OAAOA,GACT,CAEA,IAAIC,EAAQ,SAAUC,GAGpB,SAASD,IACP,IAAI73uC,EAEA+3uC,EAAOz43C,GA7Bf,SAAyBxhC,EAAUq9V,GAAe,KAAMr9V,aAAoBq9V,GAAgB,MAAM,IAAI1oX,UAAU,oCAAwC,CA+BpJkpX,CAAgB/oX,KAAMil7C,GAEtB,IAAK,IAAIr3rC,EAAOxtP,UAAUC,OAAQg3C,EAAO53C,MAAMmuP,GAAOlF,EAAO,EAAGA,EAAOkF,EAAMlF,IAC3ErxM,EAAKqxM,GAAQtoP,UAAUsoP,GAGzB,OAAey8rC,EAASz43C,EAAQo8T,EAA2B9oX,MAAOotM,EAAO63uC,EAAMzl7C,WAAaF,OAAO2b,eAAegq6C,IAAQrl7C,KAAKW,MAAM6sM,EAAM,CAACptM,MAAMgC,OAAOq1C,KAAiBqV,EAAM043C,aAAe,YAC5LR,GAAaP,EAAW9h7C,QAAQm21C,uBAAuBhsyC,EAAM28B,MAC9D,IAAIgI,EAAS0z1C,EAAiBr43C,EAAMzf,MAAM+34C,gBACtC3z1C,GAAUA,EAAOz0D,SAAS8vB,EAAM28B,MAClCgI,EAAOx0D,YAAY6vB,EAAM28B,MAGzBhiE,QAAQC,KAAK,iJAEjB,EAAGolC,EAAM243C,UAAY,SAAUzj5C,GAC7B8qB,EAAMk52B,OAAShk4B,CACjB,EAAG8qB,EAAM443C,aAAe,SAAUr44C,GAChC,IACI243B,EADek/gB,GACNnthC,CAAajrW,EAAOmtzC,EAAQt32C,QAAQ+G,cAAci76C,EAAchi7C,QAASwxa,EAAS,CAAEuvW,cAAe2hqB,EAAM3hqB,eAAiBr2uB,IAASyf,EAAM28B,MACtJ38B,EAAM243C,UAAUz/gB,EAClB,EAAW98iB,EAA2Bp8T,EAAnCy43C,EACL,CAkGA,OAnJF,SAAmB/8jC,EAAUC,GAAc,GAA0B,mBAAfA,GAA4C,OAAfA,EAAuB,MAAM,IAAIxoX,UAAU,kEAAoEwoX,GAAeD,EAAS1oX,UAAYJ,OAAOY,OAAOmoX,GAAcA,EAAW3oX,UAAW,CAAEO,YAAa,CAAEkB,MAAOinX,EAAUzkX,YAAY,EAAOI,UAAU,EAAMD,cAAc,KAAeukX,IAAY/oX,OAAOC,eAAiBD,OAAOC,eAAe6oX,EAAUC,GAAcD,EAAS5oX,UAAY6oX,EAAY,CAoB3eC,CAAU28jC,EAAOC,GA+BjBd,EAAaa,EAAO,CAAC,CACnBpg6C,IAAK,oBACL1jB,MAAO,WACAsj7C,EAAiBl4M,YAEjBq4M,IACH5k7C,KAAKqpF,KAAOw71C,EAAkB,QAEhC7k7C,KAAKqpF,KAAKuG,UAAY5vF,KAAKitC,MAAMk34C,gBAEpBY,EAAiB/k7C,KAAKitC,MAAM+34C,gBAClCzw6C,YAAYvU,KAAKqpF,OAEvBu71C,GAAa5k7C,KAAKsl7C,aAAatl7C,KAAKitC,OACvC,GACC,CACDpoB,IAAK,0BACL1jB,MAAO,SAAiCk4Y,GAGtC,MAAO,CAAEksiC,WAFQR,EAAiB1riC,EAAU2riC,gBAEXxlxB,WADhBulxB,EAAiB/k7C,KAAKitC,MAAM+34C,gBAE/C,GACC,CACDng6C,IAAK,qBACL1jB,MAAO,SAA4Bk4Y,EAAWz1Y,EAAGk4vB,GAC/C,GAAK2orB,EAAiBl4M,UAAtB,CACA,IAAIi5M,EAASxl7C,KAAKitC,MACdwyzB,EAAS+llB,EAAO/llB,OAChB0klB,EAAkBqB,EAAOrB,gBAGzB9qiC,EAAU8qiC,kBAAoBA,IAChCnk7C,KAAKqpF,KAAKuG,UAAYu01C,GAGxB,IAAIoB,EAAazprB,EAASyprB,WACtB/lxB,EAAas8F,EAASt8F,WAEtBA,IAAe+lxB,IACjBA,EAAW1o5C,YAAY78B,KAAKqpF,MAC5Bm2kB,EAAWjrpB,YAAYvU,KAAKqpF,QAIzBgwT,EAAUomd,QAAWA,KAEzBmllB,GAAa5k7C,KAAKsl7C,aAAatl7C,KAAKitC,MArBE,CAsBzC,GACC,CACDpoB,IAAK,uBACL1jB,MAAO,WACL,GAAKsj7C,EAAiBl4M,WAAcvsuC,KAAKqpF,MAASrpF,KAAK4l6B,OAAvD,CAEA,IAAIj65B,EAAQ3L,KAAK4l6B,OAAOj65B,MACpB8f,EAAMD,KAAKC,MACXg65C,EAAW956C,EAAM8z1B,QAAUz/1B,KAAKitC,MAAMy44C,iBAAmB/56C,EAAM856C,UAAYh65C,EAAMzrB,KAAKitC,MAAMy44C,gBAE5FD,GACG956C,EAAMg66C,aACT3l7C,KAAK4l6B,OAAOgghB,mBAGd//5C,WAAW7lB,KAAKol7C,aAAcK,EAAWh65C,IAEzCzrB,KAAKol7C,cAb8D,CAevE,GACC,CACDvg6C,IAAK,SACL1jB,MAAO,WACL,OAAKsj7C,EAAiBl4M,WAAcq4M,IAI/B5k7C,KAAKqpF,MAAQu71C,IAChB5k7C,KAAKqpF,KAAOw71C,EAAkB,QAGbC,GACZnthC,CAAaki9B,EAAQt32C,QAAQ+G,cAAci76C,EAAchi7C,QAASwxa,EAAS,CAChFnyY,IAAK5hC,KAAKql7C,UACV/hqB,cAAe2hqB,EAAM3hqB,eACpBtjxB,KAAKitC,QAASjtC,KAAKqpF,OAXb,IAYX,IACE,CAAC,CACHxkE,IAAK,gBACL1jB,MAAO,SAAuB4qF,GAC5By41C,EAAajrlC,WAAWxtQ,EAC1B,KAQKk51C,CACT,CAjIY,CAiIVt+E,EAAOj6sC,WAETu4xC,EAAMx4yC,UAAY,CAChBgztB,OAAQ6klB,EAAY/h7C,QAAQqwd,KAAKsq2B,WACjC7ozC,MAAOiw6C,EAAY/h7C,QAAQ+/N,MAAM,CAC/B5pI,QAAS4r1C,EAAY/h7C,QAAQ66C,OAC7B2oL,QAASu+sC,EAAY/h7C,QAAQ66C,SAE/B+m4C,gBAAiBG,EAAY/h7C,QAAQwa,OACrCmn6C,kBAAmBI,EAAY/h7C,QAAQwa,OACvC8o6C,kBAAmBvB,EAAY/h7C,QAAQwa,OACvC6yE,UAAW001C,EAAY/h7C,QAAQk7zC,UAAU,CAAC6mH,EAAY/h7C,QAAQwa,OAAQun6C,EAAY/h7C,QAAQ+/N,MAAM,CAC9Fj8K,KAAMi+3C,EAAY/h7C,QAAQwa,OAAOmgzC,WACjC4oH,UAAWxB,EAAY/h7C,QAAQwa,OAAOmgzC,WACtCyoH,YAAarB,EAAY/h7C,QAAQwa,OAAOmgzC,eAE1C6oH,iBAAkBzB,EAAY/h7C,QAAQk7zC,UAAU,CAAC6mH,EAAY/h7C,QAAQwa,OAAQun6C,EAAY/h7C,QAAQ+/N,MAAM,CACrGj8K,KAAMi+3C,EAAY/h7C,QAAQwa,OAAOmgzC,WACjC4oH,UAAWxB,EAAY/h7C,QAAQwa,OAAOmgzC,WACtCyoH,YAAarB,EAAY/h7C,QAAQwa,OAAOmgzC,eAE1C8oH,WAAY1B,EAAY/h7C,QAAQk7zC,UAAU,CAAC6mH,EAAY/h7C,QAAQ+6zC,WAAWonH,EAAkBni7C,SAAU+h7C,EAAY/h7C,QAAQ+6zC,WAAWmnH,EAAiBwB,oBAAqB3B,EAAY/h7C,QAAQ+6zC,WAAWmnH,EAAiByB,cAAe5B,EAAY/h7C,QAAQ86zC,QAAQinH,EAAY/h7C,QAAQ+6zC,WAAWonH,EAAkBni7C,YACvT4j7C,YAAa7B,EAAY/h7C,QAAQw9C,KACjCqm4C,eAAgB9B,EAAY/h7C,QAAQw9C,KACpC2l4C,eAAgBpB,EAAY/h7C,QAAQwnJ,OACpCs8xC,YAAa/B,EAAY/h7C,QAAQqwd,KACjC0z9B,uBAAwBhC,EAAY/h7C,QAAQqwd,KAC5C2z9B,0BAA2BjC,EAAY/h7C,QAAQqwd,KAC/C4z9B,4BAA6BlC,EAAY/h7C,QAAQqwd,KACjDg6D,cAAe035B,EAAY/h7C,QAAQqwd,KACnCoy9B,eAAgBV,EAAY/h7C,QAAQw9C,KACpCiv8B,KAAMs1b,EAAY/h7C,QAAQ66C,OAC1B5tC,KAAM806C,EAAY/h7C,QAAQ66C,OAC1Bole,KAAM8h6B,EAAY/h7C,QAAQwa,OAC1B0p6C,aAAcnC,EAAY/h7C,QAAQwa,OAClC2p6C,iBAAkBpC,EAAY/h7C,QAAQqwd,KACtC0s5B,WAAYglE,EAAY/h7C,QAAQw9C,KAChC2n0C,WAAY48D,EAAY/h7C,QAAQw9C,KAChCx0B,GAAI+45C,EAAY/h7C,QAAQwa,OACxB4p6C,eAAgBrC,EAAY/h7C,QAAQw9C,KACpC6m4C,eAAgBtC,EAAY/h7C,QAAQw9C,MAEtCkl4C,EAAM/qyC,aAAe,CACnBultB,QAAQ,EACR0klB,gBAAiBA,EACjBD,kBAAmBA,EACnB1h6B,KAAM,SACN6j6B,aAAa,EACbX,eAAgB,EAChBY,wBAAwB,EACxBI,kBAAkB,EAClBH,2BAA2B,EAC3BC,6BAA6B,EAC7B555B,eAAe,EACfo45B,eAAgB,WACd,OAAO7/6C,SAAS4rB,IAClB,EACA415C,eAAgB,SAAwB154C,EAAO454C,GAC7C,OAAOhtE,EAAQt32C,QAAQ+G,cACrB,MACA2jC,EACA454C,EAEJ,EACAD,eAAgB,SAAwB354C,EAAOjN,GAC7C,OAAO650C,EAAQt32C,QAAQ+G,cACrB,MACA2jC,EACAjN,EAEJ,GAEFil5C,EAAM3hqB,cAAgB,CACpBv9iB,QAAS,CACPpnM,SAAU,QACVG,IAAK,EACLD,KAAM,EACNghE,MAAO,EACPC,OAAQ,EACR45C,gBAAiB,6BAEnBhhD,QAAS,CACP/5D,SAAU,WACVG,IAAK,OACLD,KAAM,OACNghE,MAAO,OACPC,OAAQ,OACRmlC,OAAQ,iBACR0kH,WAAY,OACZ43H,SAAU,OACVulkC,wBAAyB,QACzBnukC,aAAc,MACdp5H,QAAS,OACTrnH,QAAS,UAKb,EAAIyszC,EAAuB154C,UAAUg64C,GAQrCxi7C,EAAA,QAAkBwi7C,gCCzSlB3l7C,OAAO4D,eAAeT,EAAS,aAAc,CAC3CtB,OAAO,IAGT,IAAI4ya,EAAWz0a,OAAOa,QAAU,SAAU2P,GAAU,IAAK,IAAIlP,EAAI,EAAGA,EAAIR,UAAUC,OAAQO,IAAK,CAAE,IAAIiH,EAASzH,UAAUQ,GAAI,IAAK,IAAIikB,KAAOhd,EAAcvI,OAAOI,UAAUC,eAAeC,KAAKiI,EAAQgd,KAAQ/U,EAAO+U,GAAOhd,EAAOgd,GAAU,CAAE,OAAO/U,CAAQ,EAE3PqzW,EAA4B,mBAAXzhX,QAAoD,iBAApBA,OAAOC,SAAwB,SAAUurN,GAAO,cAAcA,CAAK,EAAI,SAAUA,GAAO,OAAOA,GAAyB,mBAAXxrN,QAAyBwrN,EAAIjtN,cAAgByB,QAAUwrN,IAAQxrN,OAAOhC,UAAY,gBAAkBwtN,CAAK,EAEvQk3tC,EAAe,WAAc,SAAS5w6C,EAAiB1D,EAAQm9B,GAAS,IAAK,IAAIrsC,EAAI,EAAGA,EAAIqsC,EAAM5sC,OAAQO,IAAK,CAAE,IAAIyqD,EAAape,EAAMrsC,GAAIyqD,EAAW1nD,WAAa0nD,EAAW1nD,aAAc,EAAO0nD,EAAWvnD,cAAe,EAAU,UAAWunD,IAAYA,EAAWtnD,UAAW,GAAMzE,OAAO4D,eAAe4M,EAAQu7C,EAAWxmC,IAAKwmC,EAAa,CAAE,CAAE,OAAO,SAAUk9T,EAAaC,EAAYyI,GAAiJ,OAA9HzI,GAAYh1W,EAAiB+0W,EAAY7oX,UAAW8oX,GAAiByI,GAAaz9W,EAAiB+0W,EAAa0I,GAAqB1I,CAAa,CAAG,CAA7hB,GAEfo++B,EAAS,EAAQ,OAIjB29E,EAAcj6jC,EAFD,EAAQ,OAMrB08jC,EAAep/jC,EAFC,EAAQ,QAMxBq/jC,EAAa38jC,EAFD,EAAQ,QAMpBm6jC,EAAe78jC,EAFC,EAAQ,QAMxBh4R,EAAYg4R,EAFC,EAAQ,QAIrB88jC,EAAmB,EAAQ,OAE3BC,EAAoBr6jC,EAAuBo6jC,GAI3CwC,EAAwB58jC,EAFD,EAAQ,QAMnC,SAAS1C,EAAwBz6J,GAAO,GAAIA,GAAOA,EAAI5qN,WAAc,OAAO4qN,EAAc,IAAIu6J,EAAS,CAAC,EAAG,GAAW,MAAPv6J,EAAe,IAAK,IAAIroM,KAAOqoM,EAAW5tN,OAAOI,UAAUC,eAAeC,KAAKstN,EAAKroM,KAAM4iW,EAAO5iW,GAAOqoM,EAAIroM,IAAgC,OAAtB4iW,EAAOllX,QAAU2qN,EAAYu6J,CAAU,CAE5Q,SAAS4C,EAAuBn9J,GAAO,OAAOA,GAAOA,EAAI5qN,WAAa4qN,EAAM,CAAE3qN,QAAS2qN,EAAO,CAJ9F,EAAQ,OAaR,IAAIg6tC,EAAc,CAChBnhtC,QAAS,sBACTrtI,QAAS,uBAePyu1C,EAAsB,EAEtBC,EAAc,SAAUlC,GAG1B,SAASkC,EAAYn64C,IA7BvB,SAAyB/hB,EAAUq9V,GAAe,KAAMr9V,aAAoBq9V,GAAgB,MAAM,IAAI1oX,UAAU,oCAAwC,CA8BpJkpX,CAAgB/oX,KAAMon7C,GAEtB,IAAI163C,EA9BR,SAAoCtqD,EAAMxC,GAAQ,IAAKwC,EAAQ,MAAM,IAAI4mB,eAAe,6DAAgE,OAAOppB,GAAyB,iBAATA,GAAqC,mBAATA,EAA8BwC,EAAPxC,CAAa,CA8B/NkpX,CAA2B9oX,MAAOon7C,EAAY5n7C,WAAaF,OAAO2b,eAAems6C,IAAcxn7C,KAAKI,KAAMitC,IAqMtH,OAnMAyf,EAAM263C,cAAgB,SAAUthtC,GAC9Br5K,EAAMq5K,QAAUA,EAChBr5K,EAAMzf,MAAMqy0C,YAAc5yzC,EAAMzf,MAAMqy0C,WAAWv5oC,EACnD,EAEAr5K,EAAM463C,cAAgB,SAAU5u1C,GAC9BhsC,EAAMgsC,QAAUA,EAChBhsC,EAAMzf,MAAMy60C,YAAch7zC,EAAMzf,MAAMy60C,WAAWhvxC,EACnD,EAEAhsC,EAAM663C,WAAa,WACjB,IAAIh1xC,EAAc7lG,EAAMzf,MACpB+44C,EAAazzxC,EAAYyzxC,WACzBK,EAAc9zxC,EAAY8zxC,YAC1BR,EAAoBtzxC,EAAYszxC,kBAChC3B,EAAoB3xxC,EAAY2xxC,kBAChCc,EAAiBzyxC,EAAYyyxC,eAG7BwC,EAAiBxC,GAAkBA,IAAiB721C,eAAiBhpF,SAGzE++6C,GAAqBv01C,EAAU98D,OAAO205C,EAAez25C,KAAMmz5C,GAE3D2B,GAAqBl21C,EAAU98D,OAAO205C,EAAe/l5C,qBAAqB,QAAQ,GAAIok5C,GAGlFQ,GAAec,EAAsB,GAGX,IAF5BA,GAAuB,IAGrB3C,EAAavhmC,KAAK+imC,GAIlBt53C,EAAMzf,MAAMq54C,yBACV553C,EAAMzf,MAAMu54C,6BACdO,EAAaU,YAAY/63C,EAAMzf,MAAM2/e,eACrCm65B,EAAaW,uBAEbX,EAAaY,mBAIbj73C,EAAMzf,MAAM264C,cACdl73C,EAAMzf,MAAM264C,eAGdX,EAAsB1k7C,QAAQutM,WAAWpjJ,EAC3C,EAEAA,EAAMh4C,KAAO,WACXg4C,EAAMm73C,aACFn73C,EAAM/gD,MAAMm66C,WAAap53C,EAAM/gD,MAAMg66C,aACvCj55C,aAAaggC,EAAMo73C,YACnBp73C,EAAMg+E,SAAS,CAAEi7yC,aAAa,MAE1Bj53C,EAAMzf,MAAMq54C,yBACdS,EAAagB,iBAAiBr73C,EAAM28B,MACpC091C,EAAaiB,qBAGft73C,EAAMg+E,SAAS,CAAE+0tB,QAAQ,IAAQ,WAC/B/yyB,EAAMu73C,mBAAqB3x0C,uBAAsB,WAC/C5pD,EAAMg+E,SAAS,CAAEo7yC,WAAW,IAExBp53C,EAAMzf,MAAMwyzB,QAAU/yyB,EAAMzf,MAAMk54C,aACpCz53C,EAAMzf,MAAMk54C,YAAY,CACtB+B,UAAWx73C,EAAMq5K,QACjB8gtC,UAAWn63C,EAAMgsC,SAGvB,GACF,IAEJ,EAEAhsC,EAAM14C,MAAQ,WACR04C,EAAMzf,MAAMy44C,eAAiB,EAC/Bh53C,EAAMk53C,mBAENl53C,EAAMy73C,qBAEV,EAEAz73C,EAAM073C,aAAe,WACnB,OAAO173C,EAAMgsC,UAAYhsC,EAAM273C,mBAAqB373C,EAAMgsC,QAAQo4Q,MAAM,CAAE87K,eAAe,GAC3F,EAEAlge,EAAMk53C,iBAAmB,WACvB,IAAIH,EAAWj65C,KAAKC,MAAQihC,EAAMzf,MAAMy44C,eACxCh53C,EAAMg+E,SAAS,CAAEi7yC,aAAa,EAAMF,SAAUA,IAAY,WACxD/43C,EAAMo73C,WAAaji6C,WAAW6mC,EAAMy73C,oBAAqBz73C,EAAM/gD,MAAM856C,SAAWj65C,KAAKC,MACvF,GACF,EAEAihC,EAAMy73C,oBAAsB,WAC1Bz73C,EAAMg+E,SAAS,CACbi7yC,aAAa,EACblmlB,QAAQ,EACRqmlB,WAAW,EACXL,SAAU,MACT/43C,EAAM663C,WACX,EAEA763C,EAAMy2e,cAAgB,SAAU1kgB,IA1HrB,SAAkBA,GAC/B,MAAsB,QAAfA,EAAMvD,MAAoC,IAAlBuD,EAAM21f,OACvC,EAyHUk05B,CAAS7p5C,KACX,EAAIuo5C,EAAWzk7C,SAASmqD,EAAMgsC,QAASj6D,GAGrCiuB,EAAMzf,MAAMy54C,kBA5HP,SAAkBjo5C,GAC/B,MAAsB,WAAfA,EAAMvD,MAAuC,KAAlBuD,EAAM21f,OAC1C,CA0H0Cm05B,CAAS9p5C,KAC3CA,EAAM+jF,kBACN91D,EAAM873C,aAAa/p5C,GAEvB,EAEAiuB,EAAM+73C,qBAAuB,SAAUhq5C,GACX,OAAtBiuB,EAAMg83C,cACRh83C,EAAMg83C,aAAc,GAGlBh83C,EAAMg83C,aAAeh83C,EAAMzf,MAAMs54C,4BAC/B753C,EAAMi83C,oBACRj83C,EAAM873C,aAAa/p5C,GAEnBiuB,EAAM073C,gBAGV173C,EAAMg83C,YAAc,IACtB,EAEAh83C,EAAMk83C,uBAAyB,WAC7Bl83C,EAAMg83C,aAAc,CACtB,EAEAh83C,EAAMm83C,yBAA2B,SAAUpq5C,GACpCiuB,EAAMzf,MAAMs54C,2BAA6B9n5C,EAAM3uB,QAAU48C,EAAMq5K,SAClEtnM,EAAMmnF,gBAEV,EAEAl5D,EAAMo83C,qBAAuB,WAC3Bp83C,EAAMg83C,aAAc,CACtB,EAEAh83C,EAAMq83C,yBAA2B,WAC/Br83C,EAAMg83C,aAAc,CACtB,EAEAh83C,EAAM873C,aAAe,SAAU/p5C,GAC7B,OAAOiuB,EAAMi83C,qBAAuBj83C,EAAMzf,MAAMm54C,eAAe3n5C,EACjE,EAEAiuB,EAAMi83C,kBAAoB,WACxB,OAAOj83C,EAAMzf,MAAMm54C,cACrB,EAEA153C,EAAMs83C,eAAiB,WACrB,OAAQt83C,EAAM/gD,MAAM8z1B,SAAW/yyB,EAAM/gD,MAAMg66C,WAC7C,EAEAj53C,EAAM273C,gBAAkB,WACtB,OAAOlj7C,SAASsnhB,gBAAkB//d,EAAMgsC,SAAWhsC,EAAMgsC,QAAQ97D,SAASz3B,SAASsnhB,cACrF,EAEA//d,EAAMu83C,eAAiB,SAAUvojB,EAAOwojB,GACtC,IAAIrkrC,EAAyF,iBAArD,IAAfqkrC,EAA6B,YAAc/lkC,EAAQ+lkC,IAA4BA,EAAa,CACnH7i4C,KAAM6g4C,EAAYxmjB,GAClBoljB,UAAWoB,EAAYxmjB,GAAS,eAChCiljB,YAAauB,EAAYxmjB,GAAS,kBAEhC9wyB,EAAYi1K,EAAWx+M,KAO3B,OANIqG,EAAM/gD,MAAMm66C,YACdl21C,EAAYA,EAAY,IAAMi1K,EAAWihrC,WAEvCp53C,EAAM/gD,MAAMg66C,cACd/11C,EAAYA,EAAY,IAAMi1K,EAAW8grC,aAEd,iBAAfuD,GAA2BA,EAAat51C,EAAY,IAAMs51C,EAAat51C,CACvF,EAEAljC,EAAMy83C,qBAAuB,SAAU525C,EAAQmnM,GAC7C,OAAOp6N,OAAOgU,KAAKomN,GAAOhmM,QAAO,SAAU4oQ,EAAK5xR,GAE9C,OADA4xR,EAAI/pQ,EAAS,IAAM7nB,GAAQgvN,EAAMhvN,GAC1B4xR,CACT,GAAG,CAAC,EACN,EAEA5vO,EAAM/gD,MAAQ,CACZm66C,WAAW,EACXH,aAAa,GAGfj53C,EAAMg83C,YAAc,KACpBh83C,EAAM083C,yBAA2B,KAC1B183C,CACT,CAqHA,OAvVF,SAAmB07T,EAAUC,GAAc,GAA0B,mBAAfA,GAA4C,OAAfA,EAAuB,MAAM,IAAIxoX,UAAU,kEAAoEwoX,GAAeD,EAAS1oX,UAAYJ,OAAOY,OAAOmoX,GAAcA,EAAW3oX,UAAW,CAAEO,YAAa,CAAEkB,MAAOinX,EAAUzkX,YAAY,EAAOI,UAAU,EAAMD,cAAc,KAAeukX,IAAY/oX,OAAOC,eAAiBD,OAAOC,eAAe6oX,EAAUC,GAAcD,EAAS5oX,UAAY6oX,EAAY,CAuB3eC,CAAU8+jC,EAAalC,GA6MvBd,EAAagD,EAAa,CAAC,CACzBvi6C,IAAK,oBACL1jB,MAAO,WACDnB,KAAKitC,MAAMwyzB,QACbz/1B,KAAK0U,MAET,GACC,CACDmQ,IAAK,qBACL1jB,MAAO,SAA4Bk4Y,EAAWo+9B,GAYxCz32C,KAAKitC,MAAMwyzB,SAAWpmd,EAAUomd,OAClCz/1B,KAAK0U,QACK1U,KAAKitC,MAAMwyzB,QAAUpmd,EAAUomd,QACzCz/1B,KAAKgU,QAIHhU,KAAKitC,MAAMq54C,wBAA0Btm7C,KAAK2L,MAAM8z1B,SAAWg4gB,EAAUh4gB,QACvEz/1B,KAAKoo7C,cAET,GACC,CACDvj6C,IAAK,uBACL1jB,MAAO,WACDnB,KAAK2L,MAAM8z1B,QACbz/1B,KAAKun7C,aAEP765C,aAAa1sB,KAAK8n7C,YAClBrx0C,qBAAqBz2G,KAAKio7C,mBAC5B,GACC,CACDpj6C,IAAK,aACL1jB,MAAO,WACL,IAAIqk7C,EAASxl7C,KAAKitC,MACd+44C,EAAaR,EAAOQ,WACpBK,EAAcb,EAAOa,YACrBR,EAAoBL,EAAOK,kBAC3B3B,EAAoBsB,EAAOtB,kBAC3Bc,EAAiBQ,EAAOR,eAGxBwC,EAAiBxC,GAAkBA,IAAiB721C,eAAiBhpF,SAGzE++6C,GAAqBv01C,EAAUxqE,IAAIqi6C,EAAez25C,KAAMmz5C,GAExD2B,GAAqBl21C,EAAUxqE,IAAIqi6C,EAAe/l5C,qBAAqB,QAAQ,GAAIok5C,GAE/EQ,IACFc,GAAuB,EACvB3C,EAAar6hC,KAAK67hC,IAGpBiB,EAAsB1k7C,QAAQuoG,SAAS9qG,KACzC,GAIC,CACD6kB,IAAK,SACL1jB,MAAO,WACL,IAAIko7C,EAAUrp7C,KAAKitC,MACf1hB,EAAK895C,EAAQ995C,GACbqkE,EAAYy51C,EAAQz51C,UACpBm21C,EAAmBsD,EAAQtD,iBAC3BziqB,EAAgB+lqB,EAAQ/lqB,cACxBtjvB,EAAWqp5C,EAAQrp5C,SAEnBsp5C,EAAgB151C,EAAY,CAAC,EAAI0zrB,EAAc5qrB,QAC/C6w1C,EAAgBxD,EAAmB,CAAC,EAAIziqB,EAAcv9iB,QAE1D,GAAI/lO,KAAKgp7C,iBACP,OAAO,KAGT,IAAIQ,EAAe,CACjB5n5C,IAAK5hC,KAAKqn7C,cACVz31C,UAAW5vF,KAAKip7C,eAAe,UAAWlD,GAC1C1x6C,MAAO0/Z,EAAS,CAAC,EAAGw1gC,EAAevp7C,KAAKitC,MAAM54B,MAAM0xN,SACpD/nM,QAASh+B,KAAKyo7C,qBACdtuiC,YAAan6Y,KAAK6o7C,0BAGhBY,EAAe11gC,EAAS,CAC1BxoZ,GAAIA,EACJqW,IAAK5hC,KAAKsn7C,cACVjz6C,MAAO0/Z,EAAS,CAAC,EAAGu1gC,EAAetp7C,KAAKitC,MAAM54B,MAAMqkF,SACpD9I,UAAW5vF,KAAKip7C,eAAe,UAAWr51C,GAC1Cy2b,SAAU,KACV6R,UAAWl4hB,KAAKmjiB,cAChBhpJ,YAAan6Y,KAAK+o7C,yBAClB3uiC,UAAWp6Y,KAAK4o7C,uBAChB5q5C,QAASh+B,KAAK8o7C,qBACdtm6B,KAAMxihB,KAAKitC,MAAMu1e,KACjB,aAAcxihB,KAAKitC,MAAMw54C,cACxBzm7C,KAAKmp7C,qBAAqB,OAAQp1gC,EAAS,CAAEhiE,OAAO,GAAQ/xW,KAAKitC,MAAM+h9B,OAAQhv/B,KAAKmp7C,qBAAqB,OAAQnp7C,KAAKitC,MAAMz9B,MAAQ,CAAC,GAAI,CAC1I,cAAexP,KAAKitC,MAAMi1B,SAGxB0k3C,EAAiB5m7C,KAAKitC,MAAM254C,eAAe6C,EAAczp5C,GAC7D,OAAOhgC,KAAKitC,MAAM054C,eAAe6C,EAAc5C,EACjD,KAGKQ,CACT,CAlUkB,CAkUhBzgF,EAAOj6sC,WAET06xC,EAAYltyC,aAAe,CACzB7lI,MAAO,CACL0xN,QAAS,CAAC,EACVrtI,QAAS,CAAC,GAEZ4qrB,cAAe,CAAC,GAElB8jqB,EAAY36yC,UAAY,CACtBgztB,OAAQ6klB,EAAY/h7C,QAAQqwd,KAAKsq2B,WACjC55iB,cAAeghqB,EAAY/h7C,QAAQ+/N,MAAM,CACvC5pI,QAAS4r1C,EAAY/h7C,QAAQ66C,OAC7B2oL,QAASu+sC,EAAY/h7C,QAAQ66C,SAE/B/oC,MAAOiw6C,EAAY/h7C,QAAQ+/N,MAAM,CAC/B5pI,QAAS4r1C,EAAY/h7C,QAAQ66C,OAC7B2oL,QAASu+sC,EAAY/h7C,QAAQ66C,SAE/BwyC,UAAW001C,EAAY/h7C,QAAQk7zC,UAAU,CAAC6mH,EAAY/h7C,QAAQwa,OAAQun6C,EAAY/h7C,QAAQ66C,SAC1F2o4C,iBAAkBzB,EAAY/h7C,QAAQk7zC,UAAU,CAAC6mH,EAAY/h7C,QAAQwa,OAAQun6C,EAAY/h7C,QAAQ66C,SACjG4n4C,eAAgBV,EAAY/h7C,QAAQw9C,KACpCmk4C,kBAAmBI,EAAY/h7C,QAAQwa,OACvC8o6C,kBAAmBvB,EAAY/h7C,QAAQwa,OACvCsp6C,YAAa/B,EAAY/h7C,QAAQqwd,KACjCoz9B,WAAY1B,EAAY/h7C,QAAQk7zC,UAAU,CAAC6mH,EAAY/h7C,QAAQ+6zC,WAAWonH,EAAkBni7C,SAAU+h7C,EAAY/h7C,QAAQ+6zC,WAAWmnH,EAAiBwB,oBAAqB3B,EAAY/h7C,QAAQ+6zC,WAAWmnH,EAAiByB,cAAe5B,EAAY/h7C,QAAQ86zC,QAAQinH,EAAY/h7C,QAAQ+6zC,WAAWonH,EAAkBni7C,YACvT4j7C,YAAa7B,EAAY/h7C,QAAQw9C,KACjC6n4C,aAActD,EAAY/h7C,QAAQw9C,KAClCqm4C,eAAgB9B,EAAY/h7C,QAAQw9C,KACpC2l4C,eAAgBpB,EAAY/h7C,QAAQwnJ,OACpCu8xC,uBAAwBhC,EAAY/h7C,QAAQqwd,KAC5C2z9B,0BAA2BjC,EAAY/h7C,QAAQqwd,KAC/C4z9B,4BAA6BlC,EAAY/h7C,QAAQqwd,KACjDg6D,cAAe035B,EAAY/h7C,QAAQqwd,KACnC4vD,KAAM8h6B,EAAY/h7C,QAAQwa,OAC1B0p6C,aAAcnC,EAAY/h7C,QAAQwa,OAClCiy+B,KAAMs1b,EAAY/h7C,QAAQ66C,OAC1B5tC,KAAM806C,EAAY/h7C,QAAQ66C,OAC1Bpd,SAAUsk5C,EAAY/h7C,QAAQ8mF,KAC9Bq91C,iBAAkBpC,EAAY/h7C,QAAQqwd,KACtC0s5B,WAAYglE,EAAY/h7C,QAAQw9C,KAChC2n0C,WAAY48D,EAAY/h7C,QAAQw9C,KAChCx0B,GAAI+45C,EAAY/h7C,QAAQwa,OACxB4p6C,eAAgBrC,EAAY/h7C,QAAQw9C,KACpC6m4C,eAAgBtC,EAAY/h7C,QAAQw9C,KACpCmiB,OAAQoi3C,EAAY/h7C,QAAQwa,QAE9Bta,EAAA,QAAkB2k7C,EAClBtq5C,EAAOr6B,QAAUA,EAAiB,sCC1blCnD,OAAO4D,eAAeT,EAAS,aAAc,CAC3CtB,OAAO,IAETsB,EAAQin7C,WAqBR,WACMC,IACEA,EAAcrn6B,gBAChBqn6B,EAAcrn6B,gBAAgB,eACG,MAAxBqn6B,EAActp7C,OACvBsp7C,EAAczk6C,SAAQ,SAAU6mE,GAC9B,OAAOA,EAAQu2b,gBAAgB,cACjC,IAEAn9gB,SAAS+pF,iBAAiBy61C,GAAezk6C,SAAQ,SAAU6mE,GACzD,OAAOA,EAAQu2b,gBAAgB,cACjC,KAGJqn6B,EAAgB,IAClB,EAnCAln7C,EAAQ4nB,IAsCR,WAOA,EA5CA5nB,EAAQmn7C,eAAiBA,EACzBnn7C,EAAQ82V,WAoDR,SAAoBxtQ,GAClB,IAAI891C,EAAa991C,EACjB,GAA0B,iBAAf891C,GAA2BpF,EAAiBl4M,UAAW,CAChE,IAAI1ylC,EAAK10I,SAAS+pF,iBAAiB261C,GACnCD,EAAe/vyC,EAAIgwyC,GACnBA,EAAahwyC,CACf,CAEA,OADA8vyC,EAAgBE,GAAcF,CAEhC,EA5DAln7C,EAAQqn7C,gBAAkBA,EAC1Brn7C,EAAQ0nZ,KAwER,SAAc67hC,GACZ,IAAI+D,GAA4B,EAC5BC,GAAoB,EACpBC,OAAiBl84C,EAErB,IACE,IAAK,IAAgEy7U,EAA5DE,EAAYogkC,EAAgB9D,GAAYtk7C,OAAOC,cAAsBoo7C,GAA6BvgkC,EAAQE,EAAU3oX,QAAQG,MAAO6o7C,GAA4B,EAC7JvgkC,EAAMroX,MAEZw7B,aAAa,cAAe,OAEnC,CAAE,MAAO2a,GACP0y4C,GAAoB,EACpBC,EAAiB3y4C,CACnB,CAAE,QACA,KACOyy4C,GAA6BrgkC,EAAUjoX,QAC1CioX,EAAUjoX,QAEd,CAAE,QACA,GAAIuo7C,EACF,MAAMC,CAEV,CACF,CACF,EAhGAxn7C,EAAQwgV,KAkGR,SAAc+imC,GACZ,IAAIkE,GAA6B,EAC7BC,GAAqB,EACrBC,OAAkBr84C,EAEtB,IACE,IAAK,IAAiE28V,EAA7DC,EAAam/iC,EAAgB9D,GAAYtk7C,OAAOC,cAAuBuo7C,GAA8Bx/iC,EAASC,EAAW5pY,QAAQG,MAAOgp7C,GAA6B,EACnKx/iC,EAAOvpY,MAEbmhhB,gBAAgB,cAEvB,CAAE,MAAOhre,GACP6y4C,GAAqB,EACrBC,EAAkB9y4C,CACpB,CAAE,QACA,KACO4y4C,GAA8Bv/iC,EAAWlpY,QAC5CkpY,EAAWlpY,QAEf,CAAE,QACA,GAAI0o7C,EACF,MAAMC,CAEV,CACF,CACF,EA1HA3n7C,EAAQ4n7C,6BA4HR,WACEV,EAAgB,IAClB,EA5HA,IAMgCz8tC,EAJ5Bo9tC,GAI4Bp9tC,EANjB,EAAQ,SAM8BA,EAAI5qN,WAAa4qN,EAAM,CAAE3qN,QAAS2qN,GAFnFu3tC,EAAmB,EAAQ,OAI3BkF,EAAgB,KAgCpB,SAASC,EAAe775B,EAAUx9b,GAChC,IAAKw9b,IAAaA,EAAS1thB,OACzB,MAAM,IAAImnB,MAAM,oDAAsD+oE,EAAW,IAErF,CAaA,SAASu51C,EAAgB9D,GACvB,IAAInsyC,EAAKmsyC,GAAc2D,EACvB,OAAI9vyC,EACKp6I,MAAMkS,QAAQkoI,IAAOA,aAAc0wyC,gBAAkB1wyC,aAAc/7B,SAAW+7B,EAAK,CAACA,KAE3F,EAAIywyC,EAAU/n7C,UAAS,EAAO,CAAC,2CAA4C,iEAAkE,0DAA2D,mEAAoE,qCAAqCsK,KAAK,MAE/S,GAEX,gCC9EAvN,OAAO4D,eAAeT,EAAS,aAAc,CAC3CtB,OAAO,IAETsB,EAAQin7C,WAiBR,WAGE,IAFA,IAAIr+jC,EAAO,CAAC9wH,EAAQ9gN,GAEXh7B,EAAK,EAAGA,EAAK4sW,EAAKhrX,OAAQoe,IAAM,CACvC,IAAI2iC,EAAOiqU,EAAK5sW,GACX2iC,GACLA,EAAK1f,YAAc0f,EAAK1f,WAAW7E,YAAYukB,EACjD,CACAm5M,EAAS9gN,EAAQ,KACjB2mK,EAAY,EACd,EA1BA39M,EAAQ4nB,IA6BR,WACEhD,QAAQgD,IAAI,uBACZhD,QAAQgD,IAAI+1L,EAAU//M,QAEtB,IADA,IAAImq7C,EAAQ,CAACjwrC,EAAQ9gN,GACZgx4C,EAAM,EAAGA,EAAMD,EAAMnq7C,OAAQoq7C,IAAO,CAC3C,IACIjpmC,EADOgpmC,EAAMC,IACG,CAAC,EACrBpj6C,QAAQgD,IAAIm3T,EAAMx1P,SAAUw1P,EAAM5xP,UAAW4xP,EAAMj2T,GACrD,CACAlE,QAAQgD,IAAI,0BACd,EArCA,IAIgC6iM,EAF5B+5tC,GAE4B/5tC,EAJL,EAAQ,SAIkBA,EAAI5qN,WAAa4qN,EAAM,CAAE3qN,QAAS2qN,GAInFqtC,OAAS,EACT9gN,OAAQ,EACR2mK,EAAY,GA8BhB,SAASgouC,IACkB,IAArBhouC,EAAU//M,QAOd+/M,EAAUA,EAAU//M,OAAS,GAAG+n7C,cAClC,CAmCAnB,EAAsB1k7C,QAAQm5C,WAjC9B,SAAkB9N,EAAW884C,GACtBnwrC,GAAW9gN,KACd8gN,EAASp1P,SAASmE,cAAc,QACzBqzB,aAAa,6BAA8B,IAClD49N,EAAOlmP,MAAMsqB,SAAW,WACxB47N,EAAOlmP,MAAMu3H,QAAU,IACvB2uH,EAAO59N,aAAa,WAAY,KAChC49N,EAAO5tO,iBAAiB,QAASy75C,IACjC3u4C,EAAQ8gN,EAAO+oZ,aACT32nB,iBAAiB,QAASy75C,KAGlChouC,EAAYsquC,GAEErq7C,OAAS,GAEjB8E,SAAS4rB,KAAKo5D,aAAeowK,GAC/Bp1P,SAAS4rB,KAAK4Q,aAAa44N,EAAQp1P,SAAS4rB,KAAKo5D,YAE/ChlF,SAAS4rB,KAAK49f,YAAcl1e,GAC9Bt0C,SAAS4rB,KAAKxc,YAAYklC,KAIxB8gN,EAAOxtK,eACTwtK,EAAOxtK,cAAclwD,YAAY09N,GAE/B9gN,EAAMszC,eACRtzC,EAAMszC,cAAclwD,YAAY4c,GAGtC,gCCxFAn6C,OAAO4D,eAAeT,EAAS,aAAc,CAC3CtB,OAAO,IAETsB,EAAQin7C,WAYR,WACE,IAAI/v0B,EAAcx0mB,SAASs8B,qBAAqB,QAAQ,GACxD,IAAK,IAAIqnE,KAAO6h1C,EACdC,EAAYjx0B,EAAagx0B,EAAc7h1C,IAGzC,IAAI/3E,EAAO5rB,SAAS4rB,KACpB,IAAK,IAAI855C,KAAQC,EACfF,EAAY755C,EAAM+55C,EAAiBD,IAGrCF,EAAgB,CAAC,EACjBG,EAAmB,CAAC,CACtB,EAxBAro7C,EAAQ4nB,IA2BR,WAqBA,EA/CA,IAAIsg6C,EAAgB,CAAC,EACjBG,EAAmB,CAAC,EAIxB,SAASF,EAAYp/6C,EAAIs9F,GACvBt9F,EAAGmkF,UAAU98D,OAAOi2E,EACtB,CAuGUrmG,EAAQ0iB,IAAM,SAAa4mE,EAASg/1C,GAC5C,OA5BmCC,EA4BjBj/1C,EAAQ4D,UA5BuBu+N,EA4BsB,QAAlCniO,EAAQC,SAASz8E,cAA0Bo76C,EAAgBG,OAAkBC,EAAYnm7C,MAAM,KA3B5HsgB,SAAQ,SAAU0qE,IA5BH,SAA4Bs+N,EAAMt+N,GACpDs+N,EAAKt+N,KACRs+N,EAAKt+N,GAAa,GAEpBs+N,EAAKt+N,IAAc,CAErB,CAuBIq71C,CAAmB/8nC,EAAMt+N,GACzBo71C,EAAa7l6C,IAAIyqE,EACnB,IAJe,IAAoBo71C,EAAc98nC,CA6BnD,EAQazrT,EAAQowB,OAAS,SAAgBk5D,EAASg/1C,GACrD,OAxBuCC,EAwBnBj/1C,EAAQ4D,UAxByBu+N,EAwBoB,QAAlCniO,EAAQC,SAASz8E,cAA0Bo76C,EAAgBG,OAAkBC,EAAYnm7C,MAAM,KAvB9HsgB,SAAQ,SAAU0qE,IA5BH,SAA4Bs+N,EAAMt+N,GACrDs+N,EAAKt+N,KACPs+N,EAAKt+N,IAAc,EAGvB,CAwBIs71C,CAAmBh9nC,EAAMt+N,GACL,IAApBs+N,EAAKt+N,IAAoBo71C,EAAan45C,OAAO+8D,EAC/C,IAJiB,IAAsBo71C,EAAc98nC,CAyBvD,gCC/HA5uT,OAAO4D,eAAeT,EAAS,aAAc,CAC3CtB,OAAO,IAETsB,EAAQin7C,WAsBR,WACEyB,EAAqB,EACvB,EAvBA1o7C,EAAQ4nB,IA0BR,WASA,EAlCA5nB,EAAQ2o7C,WAAaA,EACrB3o7C,EAAQ4o7C,YAAcA,EACtB5o7C,EAAQul7C,kBA4DR,WACEmD,EAAmBtp7C,KAAKsD,SAASsnhB,cACnC,EA7DAhqhB,EAAQgl7C,YAgER,WACE,IAAI765B,EAAgBxshB,UAAUC,OAAS,QAAsB0tC,IAAjB3tC,UAAU,IAAmBA,UAAU,GAE/EwmqB,EAAU,KACd,IAKE,YAJkC,IAA9BukxB,EAAmB9q7C,SACrBumqB,EAAUukxB,EAAmBvp7C,OACrBkvW,MAAM,CAAE87K,cAAeA,IAGnC,CAAE,MAAOzthB,GACPkoB,QAAQC,KAAK,CAAC,+BAAgCs/oB,EAAS,oCAAoC/5pB,KAAK,KAClG,CACF,EA5EApK,EAAQkl7C,gBA+ER,WACEwD,EAAmB9q7C,OAAS,GAAK8q7C,EAAmBvp7C,KACtD,EAhFAa,EAAQsl7C,iBAkFR,SAA0Bh81C,GACxBu/1C,EAAev/1C,EAEX7pF,OAAOyqB,kBACTzqB,OAAOyqB,iBAAiB,OAAQy+5C,GAAY,GAC5Cjm7C,SAASwnB,iBAAiB,QAAS0+5C,GAAa,KAEhDnp7C,OAAOyquC,YAAY,SAAUy+M,GAC7Bjm7C,SAASwnuC,YAAY,UAAW0+M,GAEpC,EA3FA5o7C,EAAQil7C,oBA6FR,WACE4D,EAAe,KAEXpp7C,OAAOyqB,kBACTzqB,OAAOmnB,oBAAoB,OAAQ+h6C,GACnCjm7C,SAASkkB,oBAAoB,QAASgi6C,KAEtCnp7C,OAAOu/0C,YAAY,SAAU2pG,GAC7Bjm7C,SAASs80C,YAAY,UAAW4pG,GAEpC,EArGA,IAIgCn+tC,EAF5Bq+tC,GAE4Br+tC,EAJhB,EAAQ,SAI6BA,EAAI5qN,WAAa4qN,EAAM,CAAE3qN,QAAS2qN,GAEnFi+tC,EAAqB,GACrBG,EAAe,KACfE,GAAc,EAqBlB,SAASJ,IACPI,GAAc,CAChB,CAEA,SAASH,IACP,GAAIG,EAAa,CAEf,GADAA,GAAc,GACTF,EACH,OAOFzl6C,YAAW,WACLyl6C,EAAa1u5C,SAASz3B,SAASsnhB,kBAG1B,EAAI8+5B,EAAWhp7C,SAAS+o7C,GAAc,IAAMA,GAClDx6kC,OACL,GAAG,EACL,CACF,8BCjEAxxW,OAAO4D,eAAeT,EAAS,aAAc,CAC3CtB,OAAO,IAETsB,EAAQ4nB,IAyDR,WACEhD,QAAQgD,IAAI,kCACZhD,QAAQgD,IAAIoh6C,EAAoBf,cAAcrq7C,QAC9Cor7C,EAAoBf,cAAcxl6C,SAAQ,SAAUpiB,GAClD,OAAOukB,QAAQgD,IAAIvnB,EACrB,IACAukB,QAAQgD,IAAI,qCACd,EA/DA5nB,EAAQin7C,WAkER,WACE+B,EAAsB,IAAIC,CAC5B,EA9DA,IAAIA,EAAsB,SAASA,IACjC,IAAIh/3C,EAAQ1sD,MALd,SAAyBkrB,EAAUq9V,GAAe,KAAMr9V,aAAoBq9V,GAAgB,MAAM,IAAI1oX,UAAU,oCAAwC,CAOtJkpX,CAAgB/oX,KAAM0r7C,GAEtB1r7C,KAAK8qG,SAAW,SAAU6g1C,IAC2B,IAA/Cj/3C,EAAMg+3C,cAAclq7C,QAAQmr7C,KAOhCj/3C,EAAMg+3C,cAAc7o7C,KAAK8p7C,GACzBj/3C,EAAM+tX,KAAK,YACb,EAEAz6a,KAAK8vM,WAAa,SAAU67uC,GAC1B,IAAI3u6C,EAAQ0vC,EAAMg+3C,cAAclq7C,QAAQmr7C,IACzB,IAAX3u6C,IAOJ0vC,EAAMg+3C,cAAczn6C,OAAOjG,EAAO,GAClC0vC,EAAM+tX,KAAK,cACb,EAEAz6a,KAAK07C,UAAY,SAAUxyB,GACzBwjC,EAAMk/3C,YAAY/p7C,KAAKqnB,EACzB,EAEAlpB,KAAKy6a,KAAO,SAAU7sY,GACpB8e,EAAMk/3C,YAAY1m6C,SAAQ,SAAU4/H,GAClC,OAAOA,EAAWl3G,EAElB8e,EAAMg+3C,cAAc3o7C,QACtB,GACF,EAEA/B,KAAK0q7C,cAAgB,GACrB1q7C,KAAK4r7C,YAAc,EACrB,EAEIH,EAAsB,IAAIC,EAmB9Bjp7C,EAAA,QAAkBgp7C,gCC3ElBns7C,OAAO4D,eAAeT,EAAS,aAAc,CAC3CtB,OAAO,IAETsB,EAAQ8puC,UAAY9puC,EAAQyj7C,aAAezj7C,EAAQwj7C,wBAAqBl44C,EAExE,IAIgCm/K,EAE5B4+gC,IAF4B5+gC,EAJnB,EAAQ,SAIgCA,EAAI5qN,WAAa4qN,EAAM,CAAE3qN,QAAS2qN,IAEtE3qN,QAEbsp7C,EAAkB//M,EAAGS,UAAYrquC,OAAOy8P,YAAc,CAAC,EAElCl8P,EAAQwj7C,mBAAqBn6M,EAAGS,UAAYrquC,OAAOqo7C,eAAiB,CAAC,EAE3E9n7C,EAAQyj7C,aAAep6M,EAAGS,UAAYrquC,OAAO47G,SAAW,CAAC,EAE5Dr7G,EAAQ8puC,UAAYT,EAAGS,UAEvC9puC,EAAA,QAAkBop7C,gCCrBlBvs7C,OAAO4D,eAAeT,EAAS,aAAc,CAC3CtB,OAAO,IAETsB,EAAA,QAcA,SAAkB4mF,EAAM5qD,GACtB,IAAIqt5C,GAAW,EAAIP,EAAWhp7C,SAAS8mF,GAEvC,GAAKyi2C,EAASzr7C,OAAd,CAMA,IAAIyP,OAAS,EAETgzG,EAAWrkF,EAAMqkF,SACjB/7D,EAAO+k4C,EAAS,GAChBttvC,EAAOstvC,EAASA,EAASzr7C,OAAS,GAClCoshB,EAAgBs/5B,IAIpB,GAAI1i2C,IAASojc,EAAe,CAC1B,IAAK3pa,EAAU,OACfhzG,EAAS0uL,CACX,CAUA,GARIA,IAASiuV,GAAkB3pa,IAC7BhzG,EAASi3C,GAGPA,IAAS0le,GAAiB3pa,IAC5BhzG,EAAS0uL,GAGP1uL,EAGF,OAFA2uB,EAAMmnF,sBACN91G,EAAOghW,QAeT,IAAIk7kC,EAAc,4BAA4B556C,KAAKinB,UAAUC,WAK7D,GAJqC,MAAf0y5C,GAAyC,UAAlBA,EAAY,IAAoE,MAAlD,qBAAqB556C,KAAKinB,UAAUC,WAI/G,CAEA,IAAIr1B,EAAI6n7C,EAAStr7C,QAAQishB,GAUzB,GARIxohB,GAAK,IACPA,GAAK6+G,GAAY,EAAI,QAOD,KAJtBhzG,EAASg86C,EAAS7n7C,IAQhB,OAHAw6B,EAAMmnF,sBACN91G,EAASgzG,EAAW07E,EAAOz3I,GACpB+pT,QAITryU,EAAMmnF,iBAEN91G,EAAOghW,OArBqB,CA9C5B,MAFEryU,EAAMmnF,gBAsEV,EAvFA,IAIgCsnG,EAF5Bq+tC,GAE4Br+tC,EAJhB,EAAQ,SAI6BA,EAAI5qN,WAAa4qN,EAAM,CAAE3qN,QAAS2qN,GAEvF,SAAS6+tC,IACP,IAAIlyyC,EAAKz5I,UAAUC,OAAS,QAAsB0tC,IAAjB3tC,UAAU,GAAmBA,UAAU,GAAK+E,SAE7E,OAAO00I,EAAG4yY,cAAc7ic,WAAami2C,EAAiBlyyC,EAAG4yY,cAAc7ic,YAAciwD,EAAG4yY,aAC1F,CA8EA3vf,EAAOr6B,QAAUA,EAAiB,oCC7FlCnD,OAAO4D,eAAeT,EAAS,aAAc,CAC3CtB,OAAO,IAETsB,EAAA,QAuEA,SAASwp7C,EAAwBlg2C,GAI/B,MAHkB,GAAGhqF,MAAMnC,KAAKmsF,EAAQmD,iBAAiB,KAAM,GAAGx7D,QAAO,SAAUoue,EAAUjoX,GAC3F,OAAOioX,EAAS9/f,OAAQ63I,EAAGjwD,WAAoBqi2C,EAAwBpyyC,EAAGjwD,YAAlC,CAACiwD,GAC3C,GAAG,IACgBhtH,OAAOi/5C,EAC5B,EA/DA,IAAII,EAAe,OACfC,EAAmB,WAGnBC,EAAe,iDAQnB,SAASC,EAActg2C,GACrB,IAAIug2C,EAAWvg2C,EAAQnrD,aAAe,GAAKmrD,EAAQprD,cAAgB,EAGnE,GAAI2r5C,IAAavg2C,EAAQkuD,UAAW,OAAO,EAE3C,IAEE,IAAI5lI,EAAQnS,OAAOyzZ,iBAAiB5pU,GAChC8ld,EAAex9hB,EAAM0uqB,iBAAiB,WAC1C,OAAOupwB,EAAWz64B,IAAiBs64B,GAhBvC,SAA0Bpg2C,EAAS13E,GACjC,MAA8C,YAAvCA,EAAM0uqB,iBAAiB,aAE9Bh3lB,EAAQ2za,aAAe,GAAK3za,EAAQoX,cAAgB,CACtD,CAY2Dop1C,CAAiBxg2C,EAAS13E,GAASw9hB,IAAiBq64B,CAC7G,CAAE,MAAOM,GAGP,OADAnl6C,QAAQC,KAAK,oCACN,CACT,CACF,CAuBA,SAASwk6C,EAAS//1C,GAChB,IAAIs6b,EAAWt6b,EAAQF,aAAa,YACnB,OAAbw6b,IAAmBA,OAAWt4e,GAClC,IAAI0+4C,EAAgBng5C,MAAM+5e,GAC1B,OAAQom6B,GAAiBpm6B,GAAY,IAVvC,SAAmBt6b,EAAS2g2C,GAC1B,IAAI1g2C,EAAWD,EAAQC,SAASz8E,cAEhC,OADU686C,EAAa/g7C,KAAK2gF,KAAcD,EAAQukR,UAA0B,MAAbtkR,GAAmBD,EAAQ9wD,MAA2Byx5C,IAjBvH,SAAiB3g2C,GAGf,IAFA,IAAIgB,EAAgBhB,EAChBsyX,EAAWtyX,EAAQuyX,aAAevyX,EAAQuyX,cACvCvxX,GACDA,IAAkB5nF,SAAS4rB,MADX,CAMpB,GAFIstb,GAAYtxX,IAAkBsxX,IAAUtxX,EAAgBsxX,EAASxkZ,KAAKn4B,YAEtE2q5C,EAAct/1C,GAAgB,OAAO,EACzCA,EAAgBA,EAAcrrD,UAChC,CACA,OAAO,CACT,CAKgBoqG,CAAQ//C,EACxB,CAM6C2wkB,CAAU3wkB,GAAU0g2C,EACjE,CAQA3v5C,EAAOr6B,QAAUA,EAAiB,sCChFlCnD,OAAO4D,eAAeT,EAAS,aAAc,CAC3CtB,OAAO,IAGT,IAIgC+rN,EAF5By/tC,GAE4Bz/tC,EAJnB,EAAQ,QAIgCA,EAAI5qN,WAAa4qN,EAAM,CAAE3qN,QAAS2qN,GAEvFzqN,EAAA,QAAkBkq7C,EAAQpq7C,QAC1Bu6B,EAAOr6B,QAAUA,EAAiB,gCCgDlCq6B,EAAOr6B,QA3CO,WAAY,sICjBfmq7C,EAAiC,gBAAoB,MCI5Dh72C,EAJJ,SAA0B1oD,GACxBA,GACF,EAQW2j6C,EAAW,WACpB,OAAOj72C,CACT,ECuDIk72C,EAAgB,CAClBn84C,OAAQ,WAAmB,EAC3BxtC,IAAK,WACH,MAAO,EACT,GAEK,SAAS4p7C,EAAmBh+uC,EAAOi+uC,GACxC,IAAIpx4C,EACA3yB,EAAY6j6C,EAWhB,SAASG,IACH9w4C,EAAaskE,eACftkE,EAAaskE,eAEjB,CAMA,SAASys0C,IACFtx4C,IACHA,EAAcox4C,EAAYA,EAAUG,aAAaF,GAAuBl+uC,EAAMrzJ,UAAUux4C,GACxFhk6C,EAhGN,WACE,IAAI2oD,EAAQi72C,IACRno6C,EAAQ,KACRC,EAAO,KACX,MAAO,CACLK,MAAO,WACLN,EAAQ,KACRC,EAAO,IACT,EACAgsB,OAAQ,WACNihC,GAAM,WAGJ,IAFA,IAAItiC,EAAW5qB,EAER4qB,GACLA,EAASpmB,WACTomB,EAAWA,EAASvuC,IAExB,GACF,EACAoC,IAAK,WAIH,IAHA,IAAI8lB,EAAY,GACZqmB,EAAW5qB,EAER4qB,GACLrmB,EAAUpnB,KAAKytC,GACfA,EAAWA,EAASvuC,KAGtB,OAAOkoB,CACT,EACAyyB,UAAW,SAAmBxyB,GAC5B,IAAIkk6C,GAAe,EACf994C,EAAW3qB,EAAO,CACpBuE,SAAUA,EACVnoB,KAAM,KACN+nJ,KAAMnkI,GASR,OANI2qB,EAASw5G,KACXx5G,EAASw5G,KAAK/nJ,KAAOuuC,EAErB5qB,EAAQ4qB,EAGH,WACA894C,GAA0B,OAAV1o6C,IACrB0o6C,GAAe,EAEX994C,EAASvuC,KACXuuC,EAASvuC,KAAK+nJ,KAAOx5G,EAASw5G,KAE9BnkI,EAAO2qB,EAASw5G,KAGdx5G,EAASw5G,KACXx5G,EAASw5G,KAAK/nJ,KAAOuuC,EAASvuC,KAE9B2jB,EAAQ4qB,EAASvuC,KAErB,CACF,EAEJ,CAkCkBss7C,GAEhB,CAWA,IAAIlx4C,EAAe,CACjBgx4C,aApCF,SAAsB794C,GAEpB,OADA494C,IACOjk6C,EAAUyyB,UAAUpM,EAC7B,EAkCEg+4C,iBAhCF,WACErk6C,EAAU0nB,QACZ,EA+BEs84C,oBAAqBA,EACrBG,aAxBF,WACE,OAAOn66C,QAAQ2oC,EACjB,EAuBEsx4C,aAAcA,EACdK,eAfF,WACM3x4C,IACFA,IACAA,OAAc7N,EACd9kB,EAAUjE,QACViE,EAAY6j6C,EAEhB,EASE1k9B,aAAc,WACZ,OAAOn/c,CACT,GAEF,OAAOkzB,CACT,CCpHO,IAAIm3xC,EAA8C,oBAAXpx0C,aAAqD,IAApBA,OAAOiD,eAAqE,IAAlCjD,OAAOiD,SAASmE,cAAgC,EAAAqtP,gBAAkB,EAAAr1N,UC2C3L,QA9CA,SAAkB8rK,GAChB,IAAI2B,EAAQ3B,EAAK2B,MACb5hK,EAAUigK,EAAKjgK,QACfnN,EAAWotK,EAAKptK,SAChBk6N,GAAe,IAAAzrN,UAAQ,WACzB,IAAI0N,EAAe4w4C,EAAmBh+uC,GACtC,MAAO,CACLA,MAAOA,EACP5yJ,aAAcA,EAElB,GAAG,CAAC4yJ,IACA/1I,GAAgB,IAAAvqB,UAAQ,WAC1B,OAAOsgK,EAAMzqF,UACf,GAAG,CAACyqF,IACJukoC,GAA0B,WACxB,IAAIn3xC,EAAe+9M,EAAa/9M,aAQhC,OAPAA,EAAaskE,cAAgBtkE,EAAamx4C,iBAC1Cnx4C,EAAa+w4C,eAETl03C,IAAkB+1I,EAAMzqF,YAC1BnoE,EAAamx4C,mBAGR,WACLnx4C,EAAaox4C,iBACbpx4C,EAAaskE,cAAgB,IAC/B,CACF,GAAG,CAACy5I,EAAclhM,IAClB,IAAI4pa,EAAUz1b,GAAWy/4C,EACzB,OAAoB,gBAAoBhq9B,EAAQxgc,SAAU,CACxDjhC,MAAO+4P,GACNl6N,EACL,0DCpCIowU,EAAY,CAAC,iBAAkB,aAAc,kBAAmB,2BAA4B,WAAY,UAAW,aAAc,WACjI6lD,EAAa,CAAC,0BAQdhnQ,EAAc,GACdu+xC,EAAwB,CAAC,KAAM,MAUnC,SAASC,EAAyB9h7C,EAAO2/D,GACvC,IAAIoi3C,EAAc/h7C,EAAM,GACxB,MAAO,CAAC2/D,EAAOx2C,QAAS445C,EAAc,EACxC,CAEA,SAASC,EAAkCC,EAAYC,EAAY5xxC,GACjEq3qC,GAA0B,WACxB,OAAOs6G,EAAWrt7C,WAAM,EAAQst7C,EAClC,GAAG5xxC,EACL,CAEA,SAAS6xxC,EAAoBC,EAAkBC,EAAgBC,EAAmBC,EAAcC,EAAkBC,EAA2Bd,GAE3IS,EAAiBhu5C,QAAUmu5C,EAC3BF,EAAeju5C,QAAUou5C,EACzBF,EAAkBlu5C,SAAU,EAExBqu5C,EAA0Bru5C,UAC5Bqu5C,EAA0Bru5C,QAAU,KACpCut5C,IAEJ,CAEA,SAASe,EAAiBC,EAA0Bv/uC,EAAO5yJ,EAAcoy4C,EAAoBR,EAAkBC,EAAgBC,EAAmBG,EAA2Bd,EAAkBkB,GAE7L,GAAKF,EAAL,CAEA,IAAIG,GAAiB,EACjBC,EAAkB,KAElBC,EAAkB,WACpB,IAAIF,EAAJ,CAMA,IACIG,EAAe9s7C,EADf+s7C,EAAmB9/uC,EAAMzqF,WAG7B,IAGEsq0C,EAAgBL,EAAmBM,EAAkBd,EAAiBhu5C,QACxE,CAAE,MAAO5gC,GACP2C,EAAQ3C,EACRuv7C,EAAkBvv7C,CACpB,CAEK2C,IACH4s7C,EAAkB,MAIhBE,IAAkBZ,EAAeju5C,QAC9Bku5C,EAAkBlu5C,SACrBut5C,KAOFU,EAAeju5C,QAAU6u5C,EACzBR,EAA0Bru5C,QAAU6u5C,EACpCX,EAAkBlu5C,SAAU,EAE5Byu5C,EAA6B,CAC3Bji7C,KAAM,gBACNuoB,QAAS,CACPhzB,MAAOA,KAnCb,CAuCF,EAwBA,OArBAq6C,EAAaskE,cAAgBku0C,EAC7Bxy4C,EAAa+w4C,eAGbyB,IAEyB,WAKvB,GAJAF,GAAiB,EACjBty4C,EAAaox4C,iBACbpx4C,EAAaskE,cAAgB,KAEzBiu0C,EAMF,MAAMA,CAEV,CAvEqC,CA0EvC,CAEA,IAAII,EAAmB,WACrB,MAAO,CAAC,KAAM,EAChB,EAEe,SAASC,EAexBC,EACA5hvC,QACe,IAATA,IACFA,EAAO,CAAC,GAGV,IAAIymB,EAAQzmB,EACR6hvC,EAAuBp7tC,EAAMmvf,eAC7BA,OAA0C,IAAzBisuB,EAAkC,SAAUvk7C,GAC/D,MAAO,mBAAqBA,EAAO,GACrC,EAAIuk7C,EACAC,EAAmBr7tC,EAAMp/I,WACzBA,OAAkC,IAArBy62C,EAA8B,kBAAoBA,EAC/DC,EAAwBt7tC,EAAMu7tC,gBAC9BA,OAA4C,IAA1BD,OAAmCph5C,EAAYoh5C,EACjEE,EAAwBx7tC,EAAMy6tC,yBAC9BA,OAAqD,IAA1Be,GAA0CA,EACrEC,EAAiBz7tC,EAAM07tC,SACvBA,OAA8B,IAAnBD,EAA4B,QAAUA,EAGjDE,GAFgB37tC,EAAM47tC,QAEH57tC,EAAM+jC,YACzBA,OAAkC,IAArB43rC,GAAsCA,EACnDE,EAAgB77tC,EAAM1mL,QACtBA,OAA4B,IAAlBui5C,EAA2B9C,EAAoB8C,EACzDC,GAAiB,OAA8B97tC,EAAOu8I,GAkBtDwyH,EAAUz1b,EACd,OAAO,SAAyBsyN,GAK9B,IAAImwrC,EAAuBnwrC,EAAiBr3F,aAAeq3F,EAAiB/0P,MAAQ,YAChF09J,EAAc46iB,EAAe4suB,GAE7BC,GAAyB,OAAS,CAAC,EAAGF,EAAgB,CACxD3suB,eAAgBA,EAChBvuoB,WAAYA,EACZ262C,gBAAiBA,EACjBd,yBAA0BA,EAC1BiB,SAAUA,EACVnnxC,YAAaA,EACbwnxC,qBAAsBA,EACtBnwrC,iBAAkBA,IAGhB8uwB,EAAOohb,EAAephb,KAStBuhb,EAAkBvhb,EAAO,EAAA9/9B,QAAU,SAAUvlB,GAC/C,OAAOA,GACT,EAEA,SAAS6m6C,EAAgB9i5C,GACvB,IAAI+i5C,GAAW,IAAAvh5C,UAAQ,WAIrB,IAAIwh5C,EAAyBhj5C,EAAMgj5C,uBAC/B/B,GAAe,OAA8Bjh5C,EAAOgpX,GAExD,MAAO,CAAChpX,EAAME,QAAS8i5C,EAAwB/B,EACjD,GAAG,CAACjh5C,IACAij5C,EAAeF,EAAS,GACxBC,EAAyBD,EAAS,GAClC9B,EAAe8B,EAAS,GAExBG,GAAe,IAAA1h5C,UAAQ,WAGzB,OAAOyh5C,GAAgBA,EAAaE,WAAY,IAAAh3E,mBAAgC,gBAAoB82E,EAAaE,SAAU,OAASF,EAAett9B,CACrJ,GAAG,CAACst9B,EAActt9B,IAEd1oO,GAAe,IAAA4E,YAAWqxrC,GAI1BE,EAAwBp96C,QAAQg6B,EAAM8hK,QAAU97L,QAAQg6B,EAAM8hK,MAAMzqF,WAAarxG,QAAQg6B,EAAM8hK,MAAMy9N,UAC3Ev5Z,QAAQinP,IAAiBjnP,QAAQinP,EAAanrD,OAO5E,IAAIA,EAAQshvC,EAAwBpj5C,EAAM8hK,MAAQmrD,EAAanrD,MAC3Dw/uC,GAAqB,IAAA9/4C,UAAQ,WAG/B,OA/CJ,SAA6BsgK,GAC3B,OAAOigvC,EAAgBjgvC,EAAMy9N,SAAUqjhC,EACzC,CA6CWS,CAAoBvhvC,EAC7B,GAAG,CAACA,IAEAwhvC,GAAY,IAAA9h5C,UAAQ,WACtB,IAAK6/4C,EAA0B,OAAOd,EAKtC,IAAIrx4C,EAAe4w4C,EAAmBh+uC,EAAOshvC,EAAwB,KAAOn2rC,EAAa/9M,cASrFmx4C,EAAmBnx4C,EAAamx4C,iBAAiBjq7C,KAAK84C,GAC1D,MAAO,CAACA,EAAcmx4C,EACxB,GAAG,CAACv+uC,EAAOshvC,EAAuBn2rC,IAC9B/9M,EAAeo04C,EAAU,GACzBjD,EAAmBiD,EAAU,GAI7BC,GAAyB,IAAA/h5C,UAAQ,WACnC,OAAI4h5C,EAIKn2rC,GAKF,OAAS,CAAC,EAAGA,EAAc,CAChC/9M,aAAcA,GAElB,GAAG,CAACk04C,EAAuBn2rC,EAAc/9M,IAGrCs04C,GAAc,IAAAv6G,YAAWu3G,EAA0Bx+xC,EAAa6/xC,GAEhE4B,EADeD,EAAY,GACc,GACzCjC,EAA+BiC,EAAY,GAG/C,GAAIC,GAA6BA,EAA0B5u7C,MACzD,MAAM4u7C,EAA0B5u7C,MAIlC,IAAIks7C,GAAiB,IAAA1v5C,UACjByv5C,GAAmB,IAAAzv5C,QAAO4v5C,GAC1BE,GAA4B,IAAA9v5C,UAC5B2v5C,GAAoB,IAAA3v5C,SAAO,GAC3B6v5C,EAAmB2B,GAAgB,WAOrC,OAAI1B,EAA0Bru5C,SAAWmu5C,IAAiBH,EAAiBhu5C,QAClEqu5C,EAA0Bru5C,QAO5Bwu5C,EAAmBx/uC,EAAMzqF,WAAY4p0C,EAC9C,GAAG,CAACn/uC,EAAO2hvC,EAA2BxC,IAItCP,EAAkCG,EAAqB,CAACC,EAAkBC,EAAgBC,EAAmBC,EAAcC,EAAkBC,EAA2Bd,IAExKK,EAAkCU,EAAkB,CAACC,EAA0Bv/uC,EAAO5yJ,EAAcoy4C,EAAoBR,EAAkBC,EAAgBC,EAAmBG,EAA2Bd,EAAkBkB,GAA+B,CAACz/uC,EAAO5yJ,EAAcoy4C,IAG/Q,IAAIoC,GAA2B,IAAAli5C,UAAQ,WACrC,OAAoB,gBAAoBgxN,GAAkB,OAAS,CAAC,EAAG0urC,EAAkB,CACvFvs5C,IAAKqu5C,IAET,GAAG,CAACA,EAAwBxwrC,EAAkB0urC,IAe9C,OAZoB,IAAA1/4C,UAAQ,WAC1B,OAAI6/4C,EAIkB,gBAAoB6B,EAAa/t5C,SAAU,CAC7DjhC,MAAOqv7C,GACNG,GAGEA,CACT,GAAG,CAACR,EAAcQ,EAA0BH,GAE9C,CAGA,IAAII,EAAUrib,EAAO,OAAWwhb,GAAmBA,EAInD,GAHAa,EAAQnxrC,iBAAmBA,EAC3BmxrC,EAAQxoxC,YAAc2nxC,EAAgB3nxC,YAAcA,EAEhDwvF,EAAY,CACd,IAAIi5rC,EAAY,cAAiB,SAA2B5j5C,EAAOrL,GACjE,OAAoB,gBAAoBgv5C,GAAS,OAAS,CAAC,EAAG3j5C,EAAO,CACnEgj5C,uBAAwBru5C,IAE5B,IAGA,OAFAiv5C,EAAUzoxC,YAAcA,EACxByoxC,EAAUpxrC,iBAAmBA,EACtB,IAAaoxrC,EAAWpxrC,EACjC,CAEA,OAAO,IAAamxrC,EAASnxrC,EAC/B,CACF,CCxXA,SAASqtO,EAAG7oe,EAAGjB,GACb,OAAIiB,IAAMjB,EACK,IAANiB,GAAiB,IAANjB,GAAW,EAAIiB,GAAM,EAAIjB,EAEpCiB,GAAMA,GAAKjB,GAAMA,CAE5B,CAEe,SAAS8t7C,EAAaC,EAAMC,GACzC,GAAIlk9B,EAAGik9B,EAAMC,GAAO,OAAO,EAE3B,GAAoB,iBAATD,GAA8B,OAATA,GAAiC,iBAATC,GAA8B,OAATA,EAC3E,OAAO,EAGT,IAAIC,EAAQ3x7C,OAAOgU,KAAKy96C,GACpBG,EAAQ5x7C,OAAOgU,KAAK096C,GACxB,GAAIC,EAAM5w7C,SAAW6w7C,EAAM7w7C,OAAQ,OAAO,EAE1C,IAAK,IAAIO,EAAI,EAAGA,EAAIqw7C,EAAM5w7C,OAAQO,IAChC,IAAKtB,OAAOI,UAAUC,eAAeC,KAAKox7C,EAAMC,EAAMrw7C,MAAQkse,EAAGik9B,EAAKE,EAAMrw7C,IAAKow7C,EAAKC,EAAMrw7C,KAC1F,OAAO,EAIX,OAAO,CACT,CCzBO,SAASuw7C,EAAuBC,GACrC,OAAO,SAA8B5khC,EAAUrjZ,GAC7C,IAAI80G,EAAWmzzC,EAAY5khC,EAAUrjZ,GAErC,SAASko6C,IACP,OAAOpzzC,CACT,CAGA,OADAozzC,EAAiBC,mBAAoB,EAC9BD,CACT,CACF,CAQO,SAASE,EAAqBC,GACnC,OAAwC,OAAjCA,EAAWF,wBAA+Dvj5C,IAAjCyj5C,EAAWF,kBAAkCr+6C,QAAQu+6C,EAAWF,mBAA2C,IAAtBE,EAAWnx7C,MAClJ,CAaO,SAASox7C,EAAmBD,EAAY/82C,GAC7C,OAAO,SAA2B+3V,EAAUp/N,GACxBA,EAAKhlC,YAAvB,IAEIzuG,EAAQ,SAAyB+33C,EAAiBC,GACpD,OAAOh43C,EAAM233C,kBAAoB333C,EAAM633C,WAAWE,EAAiBC,GAAYh43C,EAAM633C,WAAWE,EAClG,EAoBA,OAjBA/33C,EAAM233C,mBAAoB,EAE1B333C,EAAM633C,WAAa,SAAgCE,EAAiBC,GAClEh43C,EAAM633C,WAAaA,EACnB733C,EAAM233C,kBAAoBC,EAAqBC,GAC/C,IAAIvk5C,EAAQ0sB,EAAM+33C,EAAiBC,GASnC,MAPqB,mBAAV1k5C,IACT0sB,EAAM633C,WAAavk5C,EACnB0sB,EAAM233C,kBAAoBC,EAAqBtk5C,GAC/CA,EAAQ0sB,EAAM+33C,EAAiBC,IAI1B1k5C,CACT,EAEO0sB,CACT,CACF,CC9CA,SAfO,SAA0Ci43C,GAC/C,MAAqC,mBAAvBA,EAAoCH,EAAmBG,QAA4C7j5C,CACnH,EACO,SAAyC6j5C,GAC9C,OAAQA,OAIH7j5C,EAJwBoj5C,GAAuB,SAAU3khC,GAC5D,MAAO,CACLA,SAAUA,EAEd,GACF,EACO,SAAwColhC,GAC7C,OAAOA,GAAoD,iBAAvBA,EAAkCT,GAAuB,SAAU3khC,GACrG,OCdW,SAA4B6D,EAAgB7D,GACzD,IAAIqlhC,EAAsB,CAAC,EAEvBrgoC,EAAQ,SAAe3sS,GACzB,IAAIqqZ,EAAgBmB,EAAexrZ,GAEN,mBAAlBqqZ,IACT2ihC,EAAoBht6C,GAAO,WACzB,OAAO2nZ,EAAS0C,EAAc3ua,WAAM,EAAQH,WAC9C,EAEJ,EAEA,IAAK,IAAIykB,KAAOwrZ,EACd7+G,EAAM3sS,GAGR,OAAOgt6C,CACT,CDJWC,CAAmBF,EAAoBplhC,EAChD,SAAKz+X,CACP,GEPA,GARO,SAAuCgk5C,GAC5C,MAAkC,mBAApBA,EAAiCN,EAAmBM,QAAsChk5C,CAC1G,EACO,SAAsCgk5C,GAC3C,OAAQA,OAEHhk5C,EAFqBoj5C,GAAuB,WAC/C,MAAO,CAAC,CACV,GACF,GCNO,SAASa,EAAkBC,EAAYC,EAAeP,GAC3D,OAAO,OAAS,CAAC,EAAGA,EAAUM,EAAYC,EAC5C,CA+BA,SARO,SAAkCC,GACvC,MAA6B,mBAAfA,EAvBT,SAA4BA,GACjC,OAAO,SAA6B3lhC,EAAUp/N,GAC1BA,EAAKhlC,YAAvB,IAII67F,EAHAsqwB,EAAOnh0B,EAAKmh0B,KACZ6jb,EAAsBhlvC,EAAKglvC,oBAC3BC,GAAa,EAEjB,OAAO,SAAyBJ,EAAYC,EAAeP,GACzD,IAAIW,EAAkBH,EAAWF,EAAYC,EAAeP,GAU5D,OARIU,EACG9jb,GAAS6jb,EAAoBE,EAAiBrurC,KAAcA,EAAcqurC,IAE/ED,GAAa,EACbpurC,EAAcqurC,GAITrurC,CACT,CACF,CACF,CAE4CsurC,CAAmBJ,QAAcpk5C,CAC7E,EACO,SAAiCok5C,GACtC,OAAQA,OAEJpk5C,EAFiB,WACnB,OAAOik5C,CACT,CACF,GCjCA,IAAI,EAAY,CAAC,sBAAuB,yBAA0B,kBAE3D,SAASQ,EAAgCT,EAAiBH,EAAoBO,EAAY3lhC,GAC/F,OAAO,SAAkC7ga,EAAOgm7C,GAC9C,OAAOQ,EAAWJ,EAAgBpm7C,EAAOgm7C,GAAWC,EAAmBplhC,EAAUmlhC,GAAWA,EAC9F,CACF,CACO,SAASc,EAA8BV,EAAiBH,EAAoBO,EAAY3lhC,EAAUp/N,GACvG,IAIIzhM,EACAgm7C,EACAM,EACAC,EACAjurC,EARAyurC,EAAiBtlvC,EAAKslvC,eACtBC,EAAmBvlvC,EAAKulvC,iBACxBC,EAAqBxlvC,EAAKwlvC,mBAC1BC,GAAoB,EAkDxB,OAAO,SAAgCtsuB,EAAWusuB,GAChD,OAAOD,EAZT,SAA+BtsuB,EAAWusuB,GACxC,IARIC,EACAC,EAOA/+xC,GAAgB0+xC,EAAiBG,EAAcnB,GAC/CjhyC,GAAgBgiyC,EAAensuB,EAAW56sB,GAG9C,OAFAA,EAAQ46sB,EACRoruB,EAAWmB,EACP7+xC,GAAgBvD,GA1BpBuhyC,EAAaF,EAAgBpm7C,EAAOgm7C,GAChCC,EAAmBN,oBAAmBY,EAAgBN,EAAmBplhC,EAAUmlhC,IACvF1trC,EAAckurC,EAAWF,EAAYC,EAAeP,IAyBhD19xC,GApBA89xC,EAAgBT,oBAAmBW,EAAaF,EAAgBpm7C,EAAOgm7C,IACvEC,EAAmBN,oBAAmBY,EAAgBN,EAAmBplhC,EAAUmlhC,IACvF1trC,EAAckurC,EAAWF,EAAYC,EAAeP,IAmBhDjhyC,GAdAqiyC,EAAiBhB,EAAgBpm7C,EAAOgm7C,GACxCqB,GAAqBJ,EAAmBG,EAAgBd,GAC5DA,EAAac,EACTC,IAAmB/urC,EAAckurC,EAAWF,EAAYC,EAAeP,IACpE1trC,GAWAA,CACT,CAG6BgvrC,CAAsB1suB,EAAWusuB,IAzC5Db,EAAaF,EAFbpm7C,EA2C4F46sB,EA1C5ForuB,EA0CuGmB,GAxCvGZ,EAAgBN,EAAmBplhC,EAAUmlhC,GAC7C1trC,EAAckurC,EAAWF,EAAYC,EAAeP,GACpDkB,GAAoB,EACb5urC,EAsCT,CACF,CAMe,SAASivrC,EAA0B1mhC,EAAU34M,GAC1D,IAAIs/tC,EAAsBt/tC,EAAMs/tC,oBAC5BC,EAAyBv/tC,EAAMu/tC,uBAC/BC,EAAiBx/tC,EAAMw/tC,eACvBlq6C,GAAU,OAA8B0qM,EAAO,GAE/Ck+tC,EAAkBoB,EAAoB3mhC,EAAUrjZ,GAChDyo6C,EAAqBwB,EAAuB5mhC,EAAUrjZ,GACtDgp6C,EAAakB,EAAe7mhC,EAAUrjZ,GAO1C,OADsBA,EAAQol/B,KAAOkkb,EAAgCD,GAC9CT,EAAiBH,EAAoBO,EAAY3lhC,EAAUrjZ,EACpF,CCrFA,IAAI,EAAY,CAAC,OAAQ,iBAAkB,mBAAoB,qBAAsB,uBAwBrF,SAAS1iB,EAAMywC,EAAKo84C,EAAW5o7C,GAC7B,IAAK,IAAI9J,EAAI0y7C,EAAUjz7C,OAAS,EAAGO,GAAK,EAAGA,IAAK,CAC9C,IAAI4iB,EAAS8v6C,EAAU1y7C,GAAGs2C,GAC1B,GAAI1zB,EAAQ,OAAOA,CACrB,CAEA,OAAO,SAAUgpZ,EAAUrjZ,GACzB,MAAM,IAAI3B,MAAM,gCAAkC0vB,EAAM,QAAUxsC,EAAO,uCAAyCye,EAAQym6C,qBAAuB,IACnJ,CACF,CAEA,SAAS2D,EAAYvy7C,EAAGsC,GACtB,OAAOtC,IAAMsC,CACf,CAIO,SAASkw7C,EAAcrO,GAC5B,IAAI/3uC,OAAiB,IAAV+3uC,EAAmB,CAAC,EAAIA,EAC/BsO,EAAkBrmvC,EAAKsmvC,WACvBA,OAAiC,IAApBD,EAA6B1E,EAAkB0E,EAC5DE,EAAwBvmvC,EAAKwmvC,yBAC7BA,OAAqD,IAA1BD,EAAmC,EAAkCA,EAChGE,EAAwBzmvC,EAAK0mvC,4BAC7BA,OAAwD,IAA1BD,EAAmC,EAAqCA,EACtGE,EAAwB3mvC,EAAK4mvC,oBAC7BA,OAAgD,IAA1BD,EAAmC,EAA6BA,EACtFE,EAAuB7mvC,EAAK4hvC,gBAC5BA,OAA2C,IAAzBiF,EAAkC,EAAyBA,EAEjF,OAAO,SAAiBlC,EAAiBH,EAAoBO,EAAYt+tC,QACzD,IAAVA,IACFA,EAAQ,CAAC,GAGX,IAAI66B,EAAQ76B,EACRqguC,EAAaxlsC,EAAM6/wB,KACnBA,OAAsB,IAAf2lb,GAA+BA,EACtCC,EAAuBzlsC,EAAMgksC,eAC7BA,OAA0C,IAAzByB,EAAkCZ,EAAcY,EACjEC,EAAwB1lsC,EAAMiksC,iBAC9BA,OAA6C,IAA1ByB,EAAmCtD,EAAesD,EACrEC,EAAwB3lsC,EAAMkksC,mBAC9BA,OAA+C,IAA1ByB,EAAmCvD,EAAeuD,EACvEC,EAAwB5lsC,EAAM0jsC,oBAC9BA,OAAgD,IAA1BkC,EAAmCxD,EAAewD,EACxEC,GAAe,OAA8B7lsC,EAAO,GAEpDyksC,EAAsB1s7C,EAAMsr7C,EAAiB6B,EAA0B,mBACvER,EAAyB3s7C,EAAMmr7C,EAAoBkC,EAA6B,sBAChFT,EAAiB5s7C,EAAM0r7C,EAAY6B,EAAqB,cAC5D,OAAON,EAAW1E,GAAiB,OAAS,CAE1Cv62C,WAAY,UAEZuuoB,eAAgB,SAAwBt4sB,GACtC,MAAO,WAAaA,EAAO,GAC7B,EAEA4j7C,yBAA0Br76C,QAAQ8+6C,GAElCoB,oBAAqBA,EACrBC,uBAAwBA,EACxBC,eAAgBA,EAChB9kb,KAAMA,EACNmkb,eAAgBA,EAChBC,iBAAkBA,EAClBC,mBAAoBA,EACpBR,oBAAqBA,GACpBmC,GACL,CACF,CACA,QAA4Bf,IC/ErB,SAAS,IAOd,OANmB,IAAA10rC,YAAW8trC,EAOhC,CCjBO,SAAS4H,EAAgBrn5C,QACd,IAAZA,IACFA,EAAUy/4C,GAGZ,IAAI6H,EAAkBtn5C,IAAYy/4C,EAAoB,EAAyB,WAC7E,OAAO,IAAA9trC,YAAW3xN,EACpB,EACA,OAAO,WAIL,OAHuBsn5C,IACM1lvC,KAG/B,CACF,CAiBO,IAAI,EAAwBylvC,IChC5B,SAASE,EAAmBvn5C,QACjB,IAAZA,IACFA,EAAUy/4C,GAGZ,IAAI+H,EAAWxn5C,IAAYy/4C,EAAoB,EAAkB4H,EAAgBrn5C,GACjF,OAAO,WAEL,OADYwn5C,IACCnohC,QACf,CACF,CAuBO,IAAIoohC,EAA2BF,ICpClCG,EAAc,SAAqB7z7C,EAAGsC,GACxC,OAAOtC,IAAMsC,CACf,EAyFO,SAASwx7C,EAAmB3n5C,QACjB,IAAZA,IACFA,EAAUy/4C,GAGZ,IAAI6H,EAAkBtn5C,IAAYy/4C,EAAoB,EAAyB,WAC7E,OAAO,IAAA9trC,YAAW3xN,EACpB,EACA,OAAO,SAAqBojD,EAAUwk2C,QACjB,IAAfA,IACFA,EAAaF,GAiBf,IAAIG,EAAmBP,IAInBr1iB,EAtHR,SAA6C7uzB,EAAUwk2C,EAAYhmvC,EAAOkmvC,GACxE,IAaI71iB,EAVAr5I,GAHc,IAAAmwkB,aAAW,SAAUp10C,GACrC,OAAOA,EAAI,CACb,GAAG,GAC2B,GAE1Bq7C,GAAe,IAAA1N,UAAQ,WACzB,OAAOs+4C,EAAmBh+uC,EAAOkmvC,EACnC,GAAG,CAAClmvC,EAAOkmvC,IACPC,GAAkC,IAAA525C,UAClC625C,GAAiB,IAAA725C,UACjBuw5C,GAAmB,IAAAvw5C,UACnB825C,GAAsB,IAAA925C,UACtB+25C,EAAatmvC,EAAMzqF,WAGvB,IACE,GAAI/zB,IAAa4k2C,EAAep15C,SAAWs15C,IAAexG,EAAiB9u5C,SAAWm15C,EAAgCn15C,QAAS,CAC7H,IAAIu15C,EAAmB/k2C,EAAS8k2C,GAK9Bj2iB,OAHkCrx2B,IAAhCqn5C,EAAoBr15C,SAA0Bg15C,EAAWO,EAAkBF,EAAoBr15C,SAGjFq15C,EAAoBr15C,QAFpBu15C,CAIpB,MACEl2iB,EAAgBg2iB,EAAoBr15C,OAExC,CAAE,MAAOuX,GAKP,MAJI494C,EAAgCn15C,UAClCuX,EAAIvlB,SAAW,4DAA8Dmj6C,EAAgCn15C,QAAQ4S,MAAQ,QAGzH2E,CACR,CA2CA,OAzCAg8xC,GAA0B,WACxB6hH,EAAep15C,QAAUwwD,EACzBs+1C,EAAiB9u5C,QAAUs15C,EAC3BD,EAAoBr15C,QAAUq/2B,EAC9B81iB,EAAgCn15C,aAAUgO,CAC5C,IACAulyC,GAA0B,WACxB,SAASq7G,IACP,IACE,IAAI4G,EAAgBxmvC,EAAMzqF,WAE1B,GAAIix0C,IAAkB1G,EAAiB9u5C,QACrC,OAGF,IAAIy15C,EAAoBL,EAAep15C,QAAQw15C,GAE/C,GAAIR,EAAWS,EAAmBJ,EAAoBr15C,SACpD,OAGFq15C,EAAoBr15C,QAAUy15C,EAC9B3G,EAAiB9u5C,QAAUw15C,CAC7B,CAAE,MAAOj+4C,GAKP494C,EAAgCn15C,QAAUuX,CAC5C,CAEAyutB,GACF,CAKA,OAHA5ptB,EAAaskE,cAAgBku0C,EAC7Bxy4C,EAAa+w4C,eACbyB,IACO,WACL,OAAOxy4C,EAAaox4C,gBACtB,CACF,GAAG,CAACx+uC,EAAO5yJ,IACJij2B,CACT,CAwCwBq2iB,CAAoCll2C,EAAUwk2C,EAHtDC,EAAiBjmvC,MACZimvC,EAAiB744C,cAIlC,OADA,IAAAg6xC,eAAc/2b,GACPA,CACT,CACF,CAyBO,IhBtJiCs0U,EgBsJ7BgiO,EAA2BZ,ehBtJEphO,EiBF/B,0BjBGA9hpC,EAAQ8hpC,kCkBAApwtC,EAAE,MAAMzC,EAAE,MAAM8B,EAAE,MAAMxD,EAAE,MAAMuD,EAAE,MAAMP,EAAE,MAAMS,EAAE,MAAMc,EAAE,MAAMlB,EAAE,MAAMY,EAAE,MAAM/D,EAAE,MAAMyD,EAAE,MAC3G,GAAG,mBAAoBpB,QAAQA,OAAOiH,IAAI,CAAC,IAAI1E,EAAEvC,OAAOiH,IAAIrF,EAAEW,EAAE,iBAAiBpD,EAAEoD,EAAE,gBAAgBtB,EAAEsB,EAAE,kBAAkB9E,EAAE8E,EAAE,qBAAqBvB,EAAEuB,EAAE,kBAAkB9B,EAAE8B,EAAE,kBAAkBrB,EAAEqB,EAAE,iBAAiBP,EAAEO,EAAE,qBAAqBzB,EAAEyB,EAAE,kBAAkBb,EAAEa,EAAE,uBAAuB5E,EAAE4E,EAAE,cAAcnB,EAAEmB,EAAE,cAAgBA,EAAE,eAAiBA,EAAE,sBAAwBA,EAAE,qBAAuBA,EAAE,0BAA4BA,EAAE,sBAAsB,CAEvVxB,EAAQ222C,kBAAkB,SAASp42C,GAAG,OADhJ,SAAWA,GAAG,GAAG,iBAAkBA,GAAG,OAAOA,EAAE,CAAC,IAAI5B,EAAE4B,EAAE616B,SAAS,OAAOz36B,GAAG,KAAKkE,EAAE,OAAOtC,EAAEA,EAAEuL,MAAQ,KAAK5J,EAAE,KAAKD,EAAE,KAAKvD,EAAE,KAAKqD,EAAE,KAAKY,EAAE,OAAOpC,EAAE,QAAQ,OAAOA,EAAEA,GAAGA,EAAE616B,UAAY,KAAKj06B,EAAE,KAAKc,EAAE,KAAKZ,EAAE,KAAKzD,EAAE,KAAK8C,EAAE,OAAOnB,EAAE,QAAQ,OAAO5B,GAAG,KAAKyB,EAAE,OAAOzB,EAAE,CAAC,CAC3G4D,CAAEhC,KAAK4B,CAAC,gCCR7Jk6B,EAAOr6B,QAAU,EAAjB,8GCYF,SAASsxa,IAcP,OAbAA,EAAWz0a,OAAOa,OAASb,OAAOa,OAAOkD,OAAS,SAAUyM,GAC1D,IAAK,IAAIlP,EAAI,EAAGA,EAAIR,UAAUC,OAAQO,IAAK,CACzC,IAAIiH,EAASzH,UAAUQ,GAEvB,IAAK,IAAIikB,KAAOhd,EACVvI,OAAOI,UAAUC,eAAeC,KAAKiI,EAAQgd,KAC/C/U,EAAO+U,GAAOhd,EAAOgd,GAG3B,CAEA,OAAO/U,CACT,EACOika,EAASxza,MAAMP,KAAMI,UAC9B,CAgEA,SAASu17C,EAAmBjl4C,GAK1B,YAJa,IAATA,IACFA,EAAO,IAGF,IAAIuiJ,gBAAgC,iBAATviJ,GAAqBjxD,MAAMkS,QAAQ++C,IAASA,aAAgBuiJ,gBAAkBviJ,EAAOpxD,OAAOgU,KAAKo9C,GAAMh9B,QAAO,CAAC6nX,EAAM12X,KACrJ,IAAI1jB,EAAQuvD,EAAK7rC,GACjB,OAAO02X,EAAKv5Y,OAAOvC,MAAMkS,QAAQxQ,GAASA,EAAMkuB,KAAIpsB,GAAK,CAAC4hB,EAAK5hB,KAAM,CAAC,CAAC4hB,EAAK1jB,IAAQ,GACnF,IACL,CAoFA,MAAMivW,EAAY,CAAC,UAAW,WAAY,iBAAkB,UAAW,QAAS,SAAU,KAAM,sBA+DhG,SAASwllC,EAAcxovC,GACrB,IAAI,SACF0oO,EAAQ,SACR91Y,EAAQ,OACR99B,GACEkrM,EACAyovC,EAAa,WAES,MAAtBA,EAAW915C,UACb815C,EAAW915C,SAAU,QAAqB,CACxC79B,SACAoya,UAAU,KAId,IAAI1hV,EAAUij2C,EAAW915C,SACpBp0B,EAAO++H,GAAY,WAAe,CACrCp/D,OAAQsnB,EAAQtnB,OAChBv0C,SAAU67D,EAAQ77D,WAGpB,OADA,mBAAsB,IAAM67D,EAAQ8hV,OAAOhqS,IAAW,CAAC93C,IACnC,gBAAoB,KAAQ,CAC9CkjV,SAAUA,EACV91Y,SAAUA,EACVjJ,SAAUprB,EAAMorB,SAChB++5C,eAAgBnq7C,EAAM2/D,OACtBjyC,UAAWu5D,GAEf,CAqEA,MAAMmj2C,EAAoB,cAAiB,SAAqB9lsC,EAAOruN,GACrE,IAAI,QACF5D,EAAO,SACPumB,EAAQ,eACRyx4C,EAAc,QACdvp7C,EAAO,MACPd,EAAK,OACLmE,EAAM,GACNmJ,EAAE,mBACFg96C,GACEhmsC,EACA1mB,EAtUN,SAAuC1hO,EAAQqz1C,GAC7C,GAAc,MAAVrz1C,EAAgB,MAAO,CAAC,EAC5B,IAEIgd,EAAKjkB,EAFLkP,EAAS,CAAC,EACVqr1C,EAAa771C,OAAOgU,KAAKzL,GAG7B,IAAKjH,EAAI,EAAGA,EAAIu61C,EAAW961C,OAAQO,IACjCikB,EAAMs20C,EAAWv61C,GACbs61C,EAAS161C,QAAQqkB,IAAQ,IAC7B/U,EAAO+U,GAAOhd,EAAOgd,IAGvB,OAAO/U,CACT,CAyTaowY,CAA8BjwJ,EAAOmgH,GAE5Cn1U,GAAO,QAAQhiB,EAAI,CACrBsrC,aAEE2x4C,EAmON,SAA6Bj96C,EAAIks6C,GAC/B,IAAI,OACFr16C,EACArD,QAAS0p7C,EAAW,MACpBxq7C,EAAK,mBACLsq7C,EAAkB,SAClB1x4C,QACY,IAAV4g4C,EAAmB,CAAC,EAAIA,EACxBv4wB,GAAW,UACX71oB,GAAW,UACXV,GAAO,QAAgBpd,EAAI,CAC7BsrC,aAEF,OAAO,eAAkB9lB,IACvB,GA1hBJ,SAAgCA,EAAO3uB,GACrC,QAAwB,IAAjB2uB,EAAMi5U,QACZ5nW,GAAqB,UAAXA,GANb,SAAyB2uB,GACvB,SAAUA,EAAMkkF,SAAWlkF,EAAMmkF,QAAUnkF,EAAMokF,SAAWpkF,EAAMqkF,SACpE,CAKGsz0C,CAAgB335C,GAEnB,CAqhBQ435C,CAAuB535C,EAAO3uB,GAAS,CACzC2uB,EAAMmnF,iBAGN,IAAIn5G,OAA0BshC,IAAhBoo5C,EAA4BA,GAAc,QAAWp/5C,MAAc,QAAWV,GAC5Fu2oB,EAAS3zpB,EAAI,CACXxM,UACAd,QACAsq7C,qBACA1x4C,YAEJ,IACC,CAACxtB,EAAU61oB,EAAUv2oB,EAAM8/5C,EAAaxq7C,EAAOmE,EAAQmJ,EAAIg96C,EAAoB1x4C,GACpF,CA9PwB+x4C,CAAoBr96C,EAAI,CAC5CxM,UACAd,QACAmE,SACAmm7C,qBACA1x4C,aAWF,OAGE,gBAAoB,IAAKwvX,EAAS,CAAC,EAAGxqM,EAAM,CAC1CtuM,KAAMA,EACN+C,QAASg45C,EAAiBh45C,EAb9B,SAAqBS,GACfT,GAASA,EAAQS,GAEhBA,EAAMnV,kBACT4s6C,EAAgBz35C,EAEpB,EAQImD,IAAKA,EACL9xB,OAAQA,IAGd,IAoKA,IAAIym7C,EAQAC,EA8DJ,SAASC,EAAgBC,GAEvB,IAAIC,EAAyB,SAAahB,EAAmBe,IACzD3/5C,GAAW,UACXmgJ,EAAe,WAAc,IA3gBnC,SAAoC0/wC,EAAgBC,GAClD,IAAI3/wC,EAAey+wC,EAAmBiB,GAEtC,IAAK,IAAI/x6C,KAAOgy6C,EAAoBvj7C,OAC7B4jK,EAAanrK,IAAI8Y,IACpBgy6C,EAAoBpg6C,OAAO5R,GAAKK,SAAQ/jB,IACtC+1K,EAAa9yF,OAAOv/D,EAAK1jB,EAAM,IAKrC,OAAO+1K,CACT,CA+fyC4/wC,CAA2B//5C,EAASw0B,OAAQor4C,EAAuB525C,UAAU,CAAChJ,EAASw0B,SAC1HqhnB,GAAW,UACXmqxB,EAAkB,eAAkB,CAACC,EAAUC,KACjD,MAAMC,EAAkBvB,EAAuC,mBAAbqB,EAA0BA,EAAS9/wC,GAAgB8/wC,GACrGpqxB,EAAS,IAAMsqxB,EAAiBD,EAAgB,GAC/C,CAACrqxB,EAAU11f,IACd,MAAO,CAACA,EAAc6/wC,EACxB,EA/EA,SAAWR,GACTA,EAAqC,qBAAI,uBACzCA,EAA8B,cAAI,gBAClCA,EAA2B,WAAI,YAChC,EAJD,CAIGA,IAAmBA,EAAiB,CAAC,IAIxC,SAAWC,GACTA,EAAiC,YAAI,cACrCA,EAA0C,qBAAI,sBAC/C,CAHD,CAGGA,IAAwBA,EAAsB,CAAC,2JCxiBlD,SAASzihC,IAcP,OAbAA,EAAWz0a,OAAOa,OAASb,OAAOa,OAAOkD,OAAS,SAAUyM,GAC1D,IAAK,IAAIlP,EAAI,EAAGA,EAAIR,UAAUC,OAAQO,IAAK,CACzC,IAAIiH,EAASzH,UAAUQ,GAEvB,IAAK,IAAIikB,KAAOhd,EACVvI,OAAOI,UAAUC,eAAeC,KAAKiI,EAAQgd,KAC/C/U,EAAO+U,GAAOhd,EAAOgd,GAG3B,CAEA,OAAO/U,CACT,EACOika,EAASxza,MAAMP,KAAMI,UAC9B,CAkBgC,mBAAdd,OAAOwte,IAAoBxte,OAAOwte,GAApD,MAGM,SACJh1O,EAAQ,UACRx2N,EAAS,gBACTq1N,EAAe,cACfw/kC,GACE,gBAqJmC,oBAAXj00C,aAAqD,IAApBA,OAAOiD,UAAmCjD,OAAOiD,SAASmE,eAGhB,iBAAtBkt0C,qBAGjF,MAAM2gH,EAAuC,gBAAoB,MAM3DC,EAAiC,gBAAoB,MAMrDC,EAAsC,gBAAoB,MAY1DtwH,EAAiC,gBAAoB,MAMrDuwH,EAA+B,gBAAoB,MAMnDC,EAA4B,gBAAoB,CACpDC,OAAQ,KACRvj4C,QAAS,KAOLwj4C,EAAiC,gBAAoB,MAa3D,SAASC,EAAQz+6C,EAAIks6C,GACnB,IAAI,SACF5g4C,QACY,IAAV4g4C,EAAmB,CAAC,EAAIA,EAC3BwS,MAEuE,SAAU,GAClF,IAAI,SACF7hhC,EAAQ,UACRz8Y,GACE,aAAiB0tyC,IACjB,KACFr/tC,EAAI,SACJthD,EAAQ,OACRmF,GACEqs4C,EAAgB3+6C,EAAI,CACtBsrC,aAEEsz4C,EAAiBzx4C,EASrB,MAJiB,MAAb0vX,IACF+hhC,EAA8B,MAAbzx4C,EAAmB0vX,GAAW,QAAU,CAACA,EAAU1vX,KAG/D/sB,EAAU+6Y,WAAW,CAC1BhuX,SAAUyx4C,EACVts4C,SACAm8C,QAEJ,CAOA,SAASiw1C,IACP,OAA4C,MAArC,aAAiBL,EAC1B,CAYA,SAASQ,IAIP,OAHCH,MAE2E,SAAU,GAC/E,aAAiBL,GAAiBvg6C,QAC3C,CAsCA,SAASgh6C,IACNJ,MAE2E,SAAU,GACtF,IAAI,SACF7hhC,EAAQ,UACRz8Y,GACE,aAAiB0tyC,IACjB,QACF9ywC,GACE,aAAiBsj4C,IAEnBnx4C,SAAUuyX,GACRm/gC,IACAE,EAAqB196C,KAAKb,WAAU,QAAkCw6C,GAAS5kC,KAAI5oB,GAASA,EAAMkxa,gBAClGsghC,EAAY,UAAa,GA4B7B,OA3BA,aAAgB,KACdA,EAAUl45C,SAAU,CAAI,IAEX,eAAkB,SAAU9mB,EAAIkQ,GAM7C,QALgB,IAAZA,IACFA,EAAU,CAAC,IAIR8u6C,EAAUl45C,QAAS,OAExB,GAAkB,iBAAP9mB,EAET,YADAogB,EAAUlf,GAAGlB,GAIf,IAAIod,GAAO,QAAUpd,EAAIqB,KAAKiS,MAAMyr6C,GAAqBr/gC,EAAuC,SAArBxvZ,EAAQo7B,UAKlE,MAAbuxX,IACFz/Y,EAAK+vB,SAA6B,MAAlB/vB,EAAK+vB,SAAmB0vX,GAAW,QAAU,CAACA,EAAUz/Y,EAAK+vB,aAG5Ej9B,EAAQ1c,QAAU4sB,EAAU5sB,QAAU4sB,EAAUx3B,MAAMw0B,EAAMlN,EAAQxd,MAAOwd,EAChF,GAAG,CAAC2sZ,EAAUz8Y,EAAW2+5C,EAAoBr/gC,GAE/C,CAoCA,SAASu/gC,IACP,IAAI,QACFjk4C,GACE,aAAiBsj4C,GACjBY,EAAalk4C,EAAQA,EAAQ5zD,OAAS,GAC1C,OAAO837C,EAAaA,EAAW9v5C,OAAS,CAAC,CAC3C,CAOA,SAASuv5C,EAAgB3+6C,EAAIm/6C,GAC3B,IAAI,SACF7z4C,QACa,IAAX6z4C,EAAoB,CAAC,EAAIA,GACzB,QACFnk4C,GACE,aAAiBsj4C,IAEnBnx4C,SAAUuyX,GACRm/gC,IACAE,EAAqB196C,KAAKb,WAAU,QAAkCw6C,GAAS5kC,KAAI5oB,GAASA,EAAMkxa,gBACtG,OAAO,WAAc,KAAM,QAAU1+Z,EAAIqB,KAAKiS,MAAMyr6C,GAAqBr/gC,EAA+B,SAAbp0X,IAAsB,CAACtrC,EAAI++6C,EAAoBr/gC,EAAkBp0X,GAC9J,CAyGA,SAAS8z4C,IACP,IAAIv27C,EAyQN,WACE,IAAIw27C,EAEJ,IAAIx27C,EAAQ,aAAiB217C,GACzB9r7C,EA/FN,SAA4BylG,GAC1B,IAAIzlG,EAAQ,aAAiB0r7C,GAE7B,OADC1r7C,IAAwG,SAAU,GAC5GA,CACT,CA2Fc4s7C,CAAmB/B,EAAoBgC,eAC/C/hhC,EAAQ,aAAiB8ghC,GACzBkB,EAAYhihC,EAAMxiX,QAAQwiX,EAAMxiX,QAAQ5zD,OAAS,GAGrD,OAAIyB,IAIH20a,IAAuH,SAAU,IACjIgihC,EAAUhihC,MAAMlrZ,KAAyI,SAAU,GAE3H,OAAjC+s6C,EAAgB3s7C,EAAMs/U,aAAkB,EAASqtmC,EAAcG,EAAUhihC,MAAMlrZ,IACzF,CA1Rcmt6C,GACR3m6C,GAAU,QAAqBjwB,GAASA,EAAM2jB,OAAS,IAAM3jB,EAAMmuB,WAAanuB,aAAiB0lB,MAAQ1lB,EAAMiwB,QAAUzX,KAAKb,UAAU3X,GACxI6wC,EAAQ7wC,aAAiB0lB,MAAQ1lB,EAAM6wC,MAAQ,KAC/C4/tB,EAAY,yBACZomrB,EAAY,CACdzg0C,QAAS,SACTwhB,gBAAiB64nB,GAEfqmrB,EAAa,CACf1g0C,QAAS,UACTwhB,gBAAiB64nB,GAEnB,OAAoB,gBAAoB,WAAgB,KAAmB,gBAAoB,KAAM,KAAM,2BAAyC,gBAAoB,KAAM,CAC5Kl+vB,MAAO,CACLwwO,UAAW,WAEZ9yN,GAAU4gB,EAAqB,gBAAoB,MAAO,CAC3Dt+B,MAAOsk7C,GACNhm5C,GAAS,KAAmB,gBAAoB,IAAK,KAAM,uBAAyD,gBAAoB,IAAK,KAAM,+FAAgH,gBAAoB,OAAQ,CAChSt+B,MAAOuk7C,GACN,gBAAiB,aAA8B,gBAAoB,OAAQ,CAC5Evk7C,MAAOuk7C,GACN,YACL,CAEA,MAAMC,UAA4B,YAChC,WAAA547C,CAAYgtC,GACVO,MAAMP,GACNjtC,KAAK2L,MAAQ,CACXorB,SAAUkW,EAAMlW,SAChBj1B,MAAOmrC,EAAMnrC,MAEjB,CAEA,+BAAOqnwC,CAAyBrnwC,GAC9B,MAAO,CACLA,MAAOA,EAEX,CAEA,+BAAOsnwC,CAAyBn8tC,EAAOthC,GASrC,OAAIA,EAAMorB,WAAakW,EAAMlW,SACpB,CACLj1B,MAAOmrC,EAAMnrC,MACbi1B,SAAUkW,EAAMlW,UAQb,CACLj1B,MAAOmrC,EAAMnrC,OAAS6J,EAAM7J,MAC5Bi1B,SAAUprB,EAAMorB,SAEpB,CAEA,iBAAAw2zC,CAAkBzr1C,EAAOg37C,GACvBzx6C,QAAQvlB,MAAM,wDAAyDA,EAAOg37C,EAChF,CAEA,MAAAxq0C,GACE,OAAOtuH,KAAK2L,MAAM7J,MAAqB,gBAAoB217C,EAAkBr15C,SAAU,CACrFjhC,MAAOnB,KAAK2L,MAAM7J,MAClBk+B,SAAUhgC,KAAKitC,MAAMo9G,YAClBrqJ,KAAKitC,MAAMjN,QAClB,EAIF,SAAS+45C,EAAc3rvC,GACrB,IAAI,aACF4rvC,EAAY,MACZvy7C,EAAK,SACLu5B,GACEotK,EACA6rvC,EAA0B,aAAiB9B,GAO/C,OAJI8B,GAA2Bxy7C,EAAMgwa,MAAMyihC,eACzCD,EAAwBE,2BAA6B1y7C,EAAMgwa,MAAMlrZ,IAG/C,gBAAoBgs6C,EAAan15C,SAAU,CAC7DjhC,MAAO637C,GACNh55C,EACL,CAmDA,IAAIu25C,EAMAC,EAmZA4C,EAzJJ,SAAShugC,EAAS18L,GAChB,IAAI,GACFz1O,EAAE,QACFxM,EAAO,MACPd,EAAK,SACL44C,GACEmqM,EACHipsC,MAEwE,SAAU,GAEnF,IAAI0B,EAAkB,aAAiBhC,GACnCzqxB,EAAWmrxB,IAef,OAdA,aAAgB,KAIVsB,GAAwD,SAArCA,EAAgBvrH,WAAWni0C,OAIlDihqB,EAAS3zpB,EAAI,CACXxM,UACAd,QACA44C,YACA,IAEG,IACT,CAgBA,SAAS+04C,EAAM9T,IAC2L,SAAU,EACpN,CAWA,SAAS+T,EAAOtpsC,GACd,IACE6lL,SAAU0jhC,EAAe,IAAG,SAC5Bx55C,EAAW,KACXjJ,SAAU0i6C,EAAY,eACtB3D,EAAiB,KAAOthhC,IAAG,UAC3Bn7Y,EACAqg6C,OAAQC,GAAa,GACnB1psC,EACF0nsC,MAAiM,SAAU,GAG7M,IAAI7hhC,EAAW0jhC,EAAa/s7C,QAAQ,OAAQ,KACxCmt7C,EAAoB,WAAc,KAAM,CAC1C9jhC,WACAz8Y,YACAqg6C,OAAQC,KACN,CAAC7jhC,EAAUz8Y,EAAWsg6C,IAEE,iBAAjBF,IACTA,GAAe,QAAUA,IAG3B,IAAI,SACFrz4C,EAAW,IAAG,OACdmF,EAAS,GAAE,KACXm8C,EAAO,GAAE,MACT/7F,EAAQ,KAAI,IACZkZ,EAAM,WACJ406C,EACA1i6C,EAAW,WAAc,KAC3B,IAAI8i6C,GAAmB,QAAczz4C,EAAU0vX,GAE/C,OAAwB,MAApB+jhC,EACK,KAGF,CACLzz4C,SAAUyz4C,EACVtu4C,SACAm8C,OACA/7F,QACAkZ,MACD,GACA,CAACixZ,EAAU1vX,EAAUmF,EAAQm8C,EAAM/7F,EAAOkZ,IAG7C,OAAgB,MAAZkS,EACK,KAGW,gBAAoBgwyC,EAAkB3kyC,SAAU,CAClEjhC,MAAOy47C,GACO,gBAAoBtC,EAAgBl15C,SAAU,CAC5DpC,SAAUA,EACV7+B,MAAO,CACL41B,WACA++5C,oBAGN,CAQA,SAASgE,EAAO3psC,GACd,IAAI,SACFnwN,EAAQ,SACRjJ,GACEo5N,EACA4psC,EAAoB,aAAiB3C,GAKzC,OAznBF,SAAmBxhhC,EAAQC,GACxB8hhC,MAEyE,SAAU,GACpF,IAAI,UACFt+5C,GACE,aAAiB0tyC,GACjBizH,EAAyB,aAAiB3C,IAE5Cpj4C,QAASgm4C,GACP,aAAiB1C,GACjBY,EAAa8B,EAAcA,EAAc557C,OAAS,GAClD657C,EAAe/B,EAAaA,EAAW9v5C,OAAS,CAAC,EAEjD8x5C,GADiBhC,GAAaA,EAAW/x4C,SACpB+x4C,EAAaA,EAAWxghC,aAAe,KAC9CwghC,GAAcA,EAAW1hhC,MA2B3C,IACI1/Y,EADAqj6C,EAAsBtC,IAG1B,GAAIjihC,EAAa,CACf,IAAIwkhC,EAEJ,IAAIC,EAA2C,iBAAhBzkhC,GAA2B,QAAUA,GAAeA,EAC1D,MAAvBskhC,IAAuF,OAAvDE,EAAwBC,EAAkBl04C,eAAoB,EAASi04C,EAAsBlp7C,WAAWgp7C,MAAic,SAAU,GACrlBpj6C,EAAWuj6C,CACb,MACEvj6C,EAAWqj6C,EAGb,IAAIh04C,EAAWrvB,EAASqvB,UAAY,IAChCqxX,EAA2C,MAAvB0ihC,EAA6B/z4C,EAAWA,EAASrkD,MAAMo47C,EAAmB957C,SAAW,IACzG4zD,GAAU,QAAY2hX,EAAQ,CAChCxvX,SAAUqxX,IAQR8ihC,EA+HN,SAAwBtm4C,EAASgm4C,EAAeZ,GAK9C,QAJsB,IAAlBY,IACFA,EAAgB,IAGH,MAAXhm4C,EAAiB,CACnB,GAAuB,MAAnBol4C,IAA2BA,EAAgBpumC,OAK7C,OAAO,KAFPh3R,EAAUol4C,EAAgBpl4C,OAI9B,CAEA,IAAIsm4C,EAAkBtm4C,EAElBg3R,EAA4B,MAAnBoumC,OAA0B,EAASA,EAAgBpumC,OAEhE,GAAc,MAAVA,EAAgB,CAClB,IAAIuvmC,EAAaD,EAAgBj01C,WAAUljG,GAAKA,EAAEqza,MAAMlrZ,KAAiB,MAAV0/T,OAAiB,EAASA,EAAO7nV,EAAEqza,MAAMlrZ,OACtGiv6C,GAAc,IAAqI,SAAU,GAC/JD,EAAkBA,EAAgBx47C,MAAM,EAAGc,KAAKgL,IAAI0s7C,EAAgBl67C,OAAQm67C,EAAa,GAC3F,CAEA,OAAOD,EAAgB9gK,aAAY,CAAC+9J,EAAQ/w7C,EAAOuW,KACjD,IAAIlb,EAAQ2E,EAAMgwa,MAAMlrZ,GAAe,MAAV0/T,OAAiB,EAASA,EAAOxkV,EAAMgwa,MAAMlrZ,IAAM,KAE5E2t6C,EAAeG,EAAkB5y7C,EAAMgwa,MAAMyihC,cAA6B,gBAAoBb,EAAqB,MAAQ,KAE3H/9hC,EAAc,IAAmB,gBAAoBy+hC,EAAe,CACtEty7C,MAAOA,EACPuy7C,aAAc,CACZxB,SACAvj4C,QAASgm4C,EAAcj47C,OAAOu47C,EAAgBx47C,MAAM,EAAGib,EAAQ,MAEhElb,EAAQo37C,OAAuCnr5C,IAAxBtnC,EAAMgwa,MAAM1qV,QAAwBtlF,EAAMgwa,MAAM1qV,QAAUyr2C,GAKpF,OAAO6B,IAAoB5y7C,EAAMgwa,MAAMyihC,cAA0B,IAAVl86C,GAA4B,gBAAoB676C,EAAqB,CAC1H9h6C,SAAUsi6C,EAAgBti6C,SAC1BszH,UAAW6uyC,EACXp37C,MAAOA,EACPk+B,SAAUs6X,MACPA,GAAa,GACjB,KACL,CA/KwBmgiC,CAAexm4C,GAAWA,EAAQ5kC,KAAI5oB,GAASnH,OAAOa,OAAO,CAAC,EAAGsG,EAAO,CAC5F4hC,OAAQ/oC,OAAOa,OAAO,CAAC,EAAG+57C,EAAczz7C,EAAM4hC,QAC9C+d,UAAU,QAAU,CAAC+z4C,EACrB9g6C,EAAUs7Y,eAAiBt7Y,EAAUs7Y,eAAelua,EAAM2/C,UAAUA,SAAW3/C,EAAM2/C,WACrFuxX,aAAqC,MAAvBlxa,EAAMkxa,aAAuBwihC,GAAqB,QAAU,CAACA,EAC3E9g6C,EAAUs7Y,eAAiBt7Y,EAAUs7Y,eAAelua,EAAMkxa,cAAcvxX,SAAW3/C,EAAMkxa,mBACtFsihC,EAAeD,QAA0Bjs5C,GAK9C,OAAI8nY,GAAe0khC,EACG,gBAAoBjD,EAAgBl15C,SAAU,CAChEjhC,MAAO,CACL41B,SAAUg9Y,EAAS,CACjB3tX,SAAU,IACVmF,OAAQ,GACRm8C,KAAM,GACN/7F,MAAO,KACPkZ,IAAK,WACJkS,GACH++5C,eAAgB,KAAOthhC,MAExB+lhC,GAGEA,CACT,CA4hBSG,CADMX,IAAsB/55C,EAAW+55C,EAAkBY,OAAO/khC,OAASglhC,EAAyB565C,GAChFjJ,EAC3B,CA0JA,SAAS6j6C,EAAyB565C,EAAUue,QACvB,IAAfA,IACFA,EAAa,IAGf,IAAIq3X,EAAS,GAqCb,OApCA,WAAe1wZ,QAAQ8a,GAAU,CAAC+rD,EAAS/uE,KACzC,IAAmB,iBAAqB+uE,GAGtC,OAGF,GAAIA,EAAQx/E,OAAS,WAGnB,YADAqpa,EAAO/za,KAAKtB,MAAMq1a,EAAQglhC,EAAyB7u2C,EAAQ9+C,MAAMjN,SAAUue,IAI3EwtC,EAAQx/E,OAAS+s7C,IAA4P,SAAU,GACtRvt2C,EAAQ9+C,MAAMjwB,OAAU+uE,EAAQ9+C,MAAMjN,WAAmH,SAAU,GACtK,IAAI665C,EAAW,IAAIt84C,EAAYvhC,GAC3By5Z,EAAQ,CACVlrZ,GAAIwgE,EAAQ9+C,MAAM1hB,IAAMsv6C,EAAShu7C,KAAK,KACtCm7B,cAAe+jD,EAAQ9+C,MAAMjF,cAC7B+jD,QAASA,EAAQ9+C,MAAM8+C,QACvB/uE,MAAO+uE,EAAQ9+C,MAAMjwB,MACrBqZ,KAAM01D,EAAQ9+C,MAAM5W,KACpBuuH,OAAQ74D,EAAQ9+C,MAAM23G,OACtBt5E,OAAQygB,EAAQ9+C,MAAMq+B,OACtB4t3C,aAAcnt2C,EAAQ9+C,MAAMis5C,aAC5B4B,iBAAgD,MAA9B/u2C,EAAQ9+C,MAAMis5C,aAChC6B,iBAAkBhv2C,EAAQ9+C,MAAM8t5C,iBAChC/6wC,OAAQj0F,EAAQ9+C,MAAM+yI,QAGpBj0F,EAAQ9+C,MAAMjN,WAChBy2Y,EAAMz2Y,SAAW465C,EAAyB7u2C,EAAQ9+C,MAAMjN,SAAU665C,IAGpEjlhC,EAAO/za,KAAK40a,EAAM,IAEbb,CACT,EA3kBA,SAAW2ghC,GACTA,EAA+B,eAAI,gBACpC,CAFD,CAEGA,IAAmBA,EAAiB,CAAC,IAIxC,SAAWC,GACTA,EAAmC,cAAI,gBACvCA,EAAmC,cAAI,gBACvCA,EAAmC,cAAI,gBACvCA,EAAmC,cAAI,gBACvCA,EAAwC,mBAAI,qBAC5CA,EAAgC,WAAI,aACpCA,EAAoC,eAAI,gBACzC,CARD,CAQGA,IAAwBA,EAAsB,CAAC,IA2YlD,SAAW4C,GACTA,EAAkBA,EAA2B,QAAI,GAAK,UACtDA,EAAkBA,EAA2B,QAAI,GAAK,UACtDA,EAAkBA,EAAyB,MAAI,GAAK,OACrD,CAJD,CAIGA,IAAsBA,EAAoB,CAAC,IAElB,IAAIz47C,SAAQ,SAEP,uJC9mC7ByvW,EAAY,CAAC,iBAAkB,eAAgB,cAAe,UAAW,YAAa,gBAAiB,yBCuB3G,SAR+B,IAAAx4G,aAAW,SAAU3qN,EAAOrL,GACzD,IAAIo55C,EDfN,SAAkB5tvC,GAChB,IAAI6tvC,EAAsB7tvC,EAAKukE,eAC3BuprC,OAA8C,IAAxBD,GAAyCA,EAC/DE,EAAoB/tvC,EAAKguvC,aACzBA,OAAqC,IAAtBD,GAAuCA,EACtDE,EAAmBjuvC,EAAK39C,YACxB29C,EAAKjkL,QACL,IAAImy6C,EAAiBluvC,EAAKhsB,UAC1Bm6wC,OAAoC,IAAnBD,GAAoCA,EACrDE,EAAqBpuvC,EAAKquvC,cAC1BC,EAAoBtuvC,EAAKmzV,aACzBA,OAAqC,IAAtBm75B,EAA+B,KAAOA,EACrDC,GAAkB,OAAyBvuvC,EAAMgjK,GAEjDwrlC,EAAkBD,EAAgBls8B,WAClCos8B,GAAc,IAAAv95C,aAAOyP,GACrB243B,GAAU,IAAApo4B,SAAO,GAEjBog1C,GAAY,IAAA5mnC,UAASr4P,MAAMkS,QAAQup7C,GAAuBA,OAAsBnt5C,GAChF64zC,GAAa,OAAe8X,EAAW,GACvC/smC,EAAiBi1lC,EAAW,GAC5Bt0a,EAAoBs0a,EAAW,GAE/BuY,GAAa,IAAArnnC,eAAoC,IAApB8jsC,EAAkCA,EAAkB,IACjF90F,GAAa,OAAeqY,EAAY,GACxC28E,EAAkBh1F,EAAW,GAC7Bi1F,EAAqBj1F,EAAW,GAEhCijB,GAAa,IAAAjynC,WAAiC,IAAxBojsC,GACtBlxE,GAAa,OAAeD,EAAY,GACxC3osC,EAAY4osC,EAAW,GACvBzie,EAAeyie,EAAW,GAE1BgyE,GAAa,IAAAlksC,eAAS/pN,GACtBku5C,GAAa,OAAeD,EAAY,GACxCE,EAAmBD,EAAW,GAC9BE,EAAsBF,EAAW,GAEjCG,GAAa,IAAAtksC,UAAS,IACtBuksC,GAAc,OAAeD,EAAY,GACzCE,EAAgBD,EAAY,GAC5BE,EAAmBF,EAAY,GAE/BG,GAAc,IAAA1ksC,WAAS,GACvB2ksC,GAAc,OAAeD,EAAa,GAC1CE,EAAmBD,EAAY,GAC/BE,EAAsBF,EAAY,GAElCG,GAAc,IAAA9ksC,UAAS,CAAC,GACxB+ksC,GAAc,OAAeD,EAAa,GAC1CE,EAAeD,EAAY,GAC3BE,EAAkBF,EAAY,GAE9BG,GAAc,IAAAllsC,eAAS/pN,GACvBkv5C,GAAc,OAAeD,EAAa,GAC1CE,EAAqBD,EAAY,GACjCE,EAAwBF,EAAY,GAEpCG,GAAc,IAAAtlsC,eAAS/pN,GACvBsv5C,IAAc,OAAeD,EAAa,GAC1CE,GAAmBD,GAAY,GAC/BE,GAAsBF,GAAY,GAElCjC,IAAiBkC,KACnBP,EAAgB,CAAC,GACjBQ,GAAoBnC,IAGlBF,IAAwBgC,IAC1B5qgB,EAAkB7y7B,MAAMkS,QAAQup7C,GAAuBA,OAAsBnt5C,GAC7Eov5C,EAAsBjC,KAGxB,IAAA555C,YAAU,WAER,OADAol4B,EAAQ3m4B,SAAU,EACX,WACL2m4B,EAAQ3m4B,SAAU,CACpB,CACF,GAAG,IACH,IAAI0vH,IAAc,IAAAq4wB,cAAY,SAAUr4a,EAAYvme,GAClD,IAAKmy6C,EAAkB,OAAOny6C,IAC9B,IAAI07H,EAASy2yC,EAAiB5r8B,EAAYvme,GAEtC07H,GAAiC,mBAAhBA,EAAOxjJ,MAC1BwjJ,EAAOxjJ,KAAK8nB,GAAU,WACpB,OAAOA,GACT,GAEJ,GAAG,CAACmy6C,KACJ,IAAA/55C,YAAU,YACoB,IAAxB455C,GACFzryC,GAAYqsyC,GAAiB,SAAU3y6C,GAChCu94B,EAAQ3m4B,UACbuy5B,EAAkBnp6B,GAAW,IAC7Bo+3B,IAAes0iB,EAAY975C,SAC7B,GAKJ,GAAG,IACH,IAAI075C,IAAgB,IAAA3zhB,cAAY,SAAU77wB,EAAUuxyC,GAClD,IAAI/t8B,GAAa,OAAkBxjW,EAAUuxyC,EAAYhC,GAEzD,IAAK/r8B,EAOH,OANAos8B,EAAY975C,aAAUgO,EACtBgu5C,EAAmB,IACnBI,EAAoB,IACpBI,EAAiB,IACjBh1iB,GAAa,QACbo1iB,GAAoB,GAItB,GAAIvB,GAAgB0B,EAAart8B,GAC/Bss8B,EAAmBts8B,GACnB0s8B,EAAoB1s8B,GACpB8s8B,EAAiBO,EAAart8B,IAC9B83Z,GAAa,GACbo1iB,GAAoB,OACf,CACL,IAAI533C,EAAU823C,EAAY975C,QAAU,CAAC,EACrCg85C,EAAmBts8B,GACnB83Z,GAAa,GACbo1iB,GAAqBT,GACrBzsyC,GAAYggW,GAAY,SAAUtme,GAC3Bu94B,GACD3h2B,IAAY823C,EAAY975C,UAC5B875C,EAAY975C,aAAUgO,EACtBw52B,GAAa,GACb40iB,EAAoB1s8B,GACpB8s8B,EAAiBpz6C,GAAW,IAC5Bwz6C,GAAoB,GACpBI,EAAgB5z6C,GAAU,QAAe,OAAe,CAAC,EAAG2z6C,GAAe,CAAC,GAAG,OAAgB,CAAC,EAAGrt8B,EAAYtme,IAAY2z6C,GAC7H,GACF,CACF,GAAG,CAAC1B,EAAc3ryC,GAAaysyC,EAAkBY,EAActB,IAC3Dry6C,GAAUuz6C,EAAmB,GAAKZ,GAAmBI,EAAmBI,EAAgB3qrC,GAAkB,GAC9G,OAAO,QAAe,OAAe,CAAC,EAAGgqrC,GAAkB,CAAC,EAAG,CAC7Dxy6C,QAASA,GACTi4J,UAAWA,GAAam6wC,EACxBE,cAAeA,GACfl75B,aAAcA,GAElB,CCjI0Bk95B,CAASxw5C,GAC7Byw5C,GAAc,IAAAr77C,GAAgB247C,GAClC,OAAoB,gBAAoB,EAAAx37C,GAAQ,OAAS,CACvDo+B,IAAKA,GACJ875C,GACL,oDCsdA,sHAneItwvC,EAA+C,CACjD1iM,KAAM,kBACNmrK,OAAQ,0JAQN8nxC,EAAW,SAAkB1w5C,GAC/B,OAAO,OAAI,QAAQ,OAAS,CAC1BuyN,IAAKpyD,GACJngK,GACL,EAEI2w5C,EAA0B,CAC5BC,SAAU,SAAkB5w5C,GAC1B,IAAI6w5C,EAAe7w5C,EAAM6w5C,aACrBC,EAAU9w5C,EAAM8w5C,QAChB9u5B,EAAahigB,EAAMgigB,WACnB+u5B,EAAkB/w5C,EAAM+w5C,gBAG5B,OAFc/w5C,EAAME,SAGlB,IAAK,OACH,MAAO,oCAAoCnrC,OAAOitiB,EAAa,GAAK,uDAAwD,mCAAmCjtiB,OAAOg87C,EAAkB,qDAAuD,GAAI,KAErP,IAAK,QACH,MAAO,GAAGh87C,OAAOirC,EAAM,eAAiB,SAAU,gBAAgBjrC,OAAO877C,EAAe,uBAAyB,GAAI,mCAAmC977C,OAAO+77C,EAAU,uCAAyC,IAEpN,IAAK,QACH,MAAO,6GAET,QACE,MAAO,GAEb,EACA742C,SAAU,SAAkBj4C,GAC1B,IAAIq+B,EAASr+B,EAAMq+B,OACf2y3C,EAAehx5C,EAAM5rC,MACrBA,OAAyB,IAAjB487C,EAA0B,GAAKA,EACvCrw2C,EAAS3gD,EAAM2gD,OACfqhd,EAAahigB,EAAMgigB,WAEvB,OAAQ3je,GACN,IAAK,kBACL,IAAK,YACL,IAAK,eACH,MAAO,UAAUtpE,OAAOX,EAAO,iBAEjC,IAAK,QACH,MAAO,0CAET,IAAK,sBACH,MAAO,SAASW,OAAO4rF,EAAOvtF,OAAS,EAAI,IAAM,GAAI,KAAK2B,OAAO4rF,EAAO/gF,KAAK,KAAM,eAErF,IAAK,gBACH,MAAoB,UAAU7K,OAAOX,EAA9B4tiB,EAAqC,uCAAkE,eAEhH,QACE,MAAO,GAEb,EACAmtH,QAAS,SAAiBnvnB,GACxB,IAAIE,EAAUF,EAAME,QAChBk0kB,EAAUp0kB,EAAMo0kB,QAChBl4lB,EAAU8jB,EAAM9jB,QAChB+06C,EAAgBjx5C,EAAM5rC,MACtBA,OAA0B,IAAlB687C,EAA2B,GAAKA,EACxCC,EAAclx5C,EAAMkx5C,YACpBlv5B,EAAahigB,EAAMgigB,WACnB7ggB,EAAanB,EAAMmB,WAEnBgw5C,EAAgB,SAAuB3/tC,EAAKr9K,GAC9C,OAAOq9K,GAAOA,EAAIp+N,OAAS,GAAG2B,OAAOy8N,EAAIj+N,QAAQ4gD,GAAQ,EAAG,QAAQp/C,OAAOy8N,EAAIp+N,QAAU,EAC3F,EAEA,GAAgB,UAAZ8sC,GAAuBgx5C,EACzB,MAAO,SAASn87C,OAAOX,EAAO,cAAcW,OAAOo87C,EAAcD,EAAa980B,GAAU,KAG1F,GAAgB,SAAZl0kB,EAAoB,CACtB,IAAImjU,EAAW2+L,EAAa,YAAc,GACtCxphB,EAAS,GAAGzjB,OAAOosC,EAAa,WAAa,WAAWpsC,OAAOsuW,GACnE,MAAO,UAAUtuW,OAAOX,EAAO,KAAKW,OAAOyjB,EAAQ,MAAMzjB,OAAOo87C,EAAcj16C,EAASk4lB,GAAU,IACnG,CAEA,MAAO,EACT,EACAg90B,SAAU,SAAkBpx5C,GAC1B,IAAIwid,EAAaxid,EAAMwid,WACnB6u8B,EAAiBrx5C,EAAMqx5C,eAC3B,MAAO,GAAGt87C,OAAOs87C,GAAgBt87C,OAAOytf,EAAa,oBAAsBA,EAAa,GAAI,IAC9F,GAGE8u8B,EAAa,SAAoBtx5C,GACnC,IAAIux5C,EAAgBvx5C,EAAMux5C,cACtBC,EAAgBxx5C,EAAMwx5C,cACtBC,EAAezx5C,EAAMyx5C,aACrBC,EAAmB1x5C,EAAM0x5C,iBACzB760B,EAAY72kB,EAAM62kB,UAClBq60B,EAAclx5C,EAAMkx5C,YACpBT,EAAczw5C,EAAMyw5C,YACpBny6C,EAAK0hB,EAAM1hB,GACXqz6C,EAAmBlB,EAAYkB,iBAC/BC,EAAiBnB,EAAYmB,eAC7Bpv8B,EAAaiu8B,EAAYju8B,WACzBsu8B,EAAUL,EAAYK,QACtBe,EAAmBpB,EAAYoB,iBAC/BhB,EAAeJ,EAAYI,aAC3BiB,EAAarB,EAAYqB,WACzB516C,EAAUu06C,EAAYv06C,QACtB616C,EAAqBtB,EAAYsB,mBACjChB,EAAkBN,EAAYM,gBAC9Bpk6B,EAAY8j6B,EAAY,cACxBuB,EAAWvB,EAAY,aAEvBwB,GAAW,IAAAzw5C,UAAQ,WACrB,OAAO,QAAe,OAAe,CAAC,EAAGmv5C,GAA0BgB,GAAoB,CAAC,EAC1F,GAAG,CAACA,IAEAO,GAAe,IAAA1w5C,UAAQ,WACzB,IAAI1c,EAAU,GAEd,GAAIys6C,GAAiBU,EAASh62C,SAAU,CACtC,IAAIrnB,EAAS2g4C,EAAc3g4C,OACvBuh4C,EAAkBZ,EAAcr16C,QAChCk26C,EAAeb,EAAca,aAC7BC,EAAgBd,EAAcc,cAC9Bn+7C,EAAQq97C,EAAcr97C,MAOtBkrL,EAAWgzwC,GAAgBxh4C,GALhB,SAAkB6/G,GAC/B,OAAQj+K,MAAMkS,QAAQ+rK,GAAa,KAANA,CAC/B,CAGyC6hxC,CAASp+7C,GAC9CE,EAAQgrL,EAAWwywC,EAAexywC,GAAY,GAE9CmzwC,EAAgBJ,GAAmBE,QAAiBvx5C,EACpD6/C,EAAS4x2C,EAAgBA,EAAcnw6C,IAAIwv6C,GAAkB,GAE7DY,GAAgB,OAAe,CAGjCxw5B,WAAY5iX,GAAYyywC,EAAiBzywC,EAAU8xwC,GACnD987C,MAAOA,EACPusF,OAAQA,GACP4w2C,GAEHzs6C,EAAUmt6C,EAASh62C,SAASu62C,EAC9B,CAEA,OAAO1t6C,CACT,GAAG,CAACys6C,EAAeU,EAAUJ,EAAkBX,EAAaU,IACxDa,GAAc,IAAAjx5C,UAAQ,WACxB,IAAIkx5C,EAAW,GACXt+0B,EAAUo90B,GAAiBC,EAC3Btw5C,KAAgBqw5C,GAAiBN,GAAeA,EAAY/v7C,SAASqw7C,IAEzE,GAAIp90B,GAAW690B,EAAS9iyB,QAAS,CAC/B,IAAIwjyB,EAAe,CACjBv+0B,QAASA,EACThgnB,MAAOw97C,EAAex90B,GACtBpyE,WAAY6v5B,EAAiBz90B,EAAS880B,GACtC/v5C,WAAYA,EACZjlB,QAASA,EACTgkB,QAASk0kB,IAAYo90B,EAAgB,OAAS,QAC9CN,YAAaA,GAEfwB,EAAWT,EAAS9iyB,QAAQwjyB,EAC9B,CAEA,OAAOD,CACT,GAAG,CAAClB,EAAeC,EAAcG,EAAgBC,EAAkBI,EAAU/16C,EAASg16C,IAClF0B,GAAc,IAAApx5C,UAAQ,WACxB,IAAIqx5C,EAAa,GAEjB,GAAIf,GAAc516C,EAAQ9oB,QAAU6+7C,EAASb,SAAU,CACrD,IAAIC,EAAiBU,EAAmB,CACtCz14C,MAAOo14C,EAAiBt+7C,SAE1By/7C,EAAaZ,EAASb,SAAS,CAC7B5u8B,WAAYA,EACZ6u8B,eAAgBA,GAEpB,CAEA,OAAOwB,CACT,GAAG,CAACnB,EAAkBlv8B,EAAYsv8B,EAAYG,EAAU/16C,EAAS616C,IAC7De,GAAe,IAAAtx5C,UAAQ,WACzB,IAAIux5C,EAAc,GAElB,GAAId,EAASrB,SAAU,CACrB,IAAI1w5C,EAAUux5C,EAAe,QAAUK,EAAa,OAAS,QAC7DiB,EAAcd,EAASrB,SAAS,CAC9B,aAAcjk6B,EACdzsf,QAASA,EACT8hgB,WAAYwv5B,GAAiBK,EAAiBL,EAAeN,GAC7DJ,QAASA,EACTD,aAAcA,EACdE,gBAAiBA,GAErB,CAEA,OAAOgC,CACT,GAAG,CAACpm6B,EAAW6k6B,EAAeC,EAAcX,EAASe,EAAkBhB,EAAciB,EAAYG,EAAUf,EAAaH,IACpHiC,EAAc,GAAGj+7C,OAAO097C,EAAa,KAAK197C,OAAO697C,EAAa,KAAK797C,OAAO+97C,GAC1EG,GAAmB,OAAI,EAAAvgsC,SAAU,MAAM,OAAI,OAAQ,CACrDp0O,GAAI,kBACH4z6C,IAAe,OAAI,OAAQ,CAC5B5z6C,GAAI,gBACH006C,IACCE,EAA0G,yBAAxF3B,aAAqD,EAASA,EAAclz3C,QAClG,OAAO,OAAI,EAAAq0L,SAAU,MAAM,OAAIg+rC,EAAU,CACvCpy6C,GAAIA,GACH406C,GAAkBD,IAAmB,OAAIvC,EAAU,CACpD,YAAasB,EACb,cAAe,QACf,gBAAiB,kBAChBn70B,IAAcq80B,GAAkBD,GACrC,EAEIE,EAAa,CAAC,CAChB/54C,KAAM,IACNkxzC,QAAS,sCACR,CACDlxzC,KAAM,KACNkxzC,QAAS,KACR,CACDlxzC,KAAM,KACNkxzC,QAAS,OACR,CACDlxzC,KAAM,KACNkxzC,QAAS,KACR,CACDlxzC,KAAM,KACNkxzC,QAAS,KACR,CACDlxzC,KAAM,KACNkxzC,QAAS,MACR,CACDlxzC,KAAM,KACNkxzC,QAAS,KACR,CACDlxzC,KAAM,IACNkxzC,QAAS,aACR,CACDlxzC,KAAM,IACNkxzC,QAAS,gBACR,CACDlxzC,KAAM,IACNkxzC,QAAS,kBACR,CACDlxzC,KAAM,KACNkxzC,QAAS,MACR,CACDlxzC,KAAM,KACNkxzC,QAAS,MACR,CACDlxzC,KAAM,IACNkxzC,QAAS,kCACR,CACDlxzC,KAAM,IACNkxzC,QAAS,UACR,CACDlxzC,KAAM,IACNkxzC,QAAS,mBACR,CACDlxzC,KAAM,IACNkxzC,QAAS,kBACR,CACDlxzC,KAAM,IACNkxzC,QAAS,wBACR,CACDlxzC,KAAM,IACNkxzC,QAAS,SACR,CACDlxzC,KAAM,IACNkxzC,QAAS,kBACR,CACDlxzC,KAAM,IACNkxzC,QAAS,sBACR,CACDlxzC,KAAM,KACNkxzC,QAAS,KACR,CACDlxzC,KAAM,KACNkxzC,QAAS,KACR,CACDlxzC,KAAM,IACNkxzC,QAAS,YACR,CACDlxzC,KAAM,IACNkxzC,QAAS,oBACR,CACDlxzC,KAAM,KACNkxzC,QAAS,KACR,CACDlxzC,KAAM,KACNkxzC,QAAS,KACR,CACDlxzC,KAAM,IACNkxzC,QAAS,+CACR,CACDlxzC,KAAM,KACNkxzC,QAAS,KACR,CACDlxzC,KAAM,KACNkxzC,QAAS,KACR,CACDlxzC,KAAM,KACNkxzC,QAAS,KACR,CACDlxzC,KAAM,IACNkxzC,QAAS,cACR,CACDlxzC,KAAM,IACNkxzC,QAAS,UACR,CACDlxzC,KAAM,IACNkxzC,QAAS,qBACR,CACDlxzC,KAAM,IACNkxzC,QAAS,qBACR,CACDlxzC,KAAM,IACNkxzC,QAAS,mBACR,CACDlxzC,KAAM,KACNkxzC,QAAS,KACR,CACDlxzC,KAAM,IACNkxzC,QAAS,sCACR,CACDlxzC,KAAM,IACNkxzC,QAAS,YACR,CACDlxzC,KAAM,KACNkxzC,QAAS,KACR,CACDlxzC,KAAM,IACNkxzC,QAAS,cACR,CACDlxzC,KAAM,IACNkxzC,QAAS,SACR,CACDlxzC,KAAM,IACNkxzC,QAAS,mBACR,CACDlxzC,KAAM,IACNkxzC,QAAS,kBACR,CACDlxzC,KAAM,IACNkxzC,QAAS,uCACR,CACDlxzC,KAAM,KACNkxzC,QAAS,KACR,CACDlxzC,KAAM,KACNkxzC,QAAS,OACR,CACDlxzC,KAAM,KACNkxzC,QAAS,KACR,CACDlxzC,KAAM,KACNkxzC,QAAS,KACR,CACDlxzC,KAAM,KACNkxzC,QAAS,MACR,CACDlxzC,KAAM,KACNkxzC,QAAS,KACR,CACDlxzC,KAAM,IACNkxzC,QAAS,aACR,CACDlxzC,KAAM,IACNkxzC,QAAS,iBACR,CACDlxzC,KAAM,IACNkxzC,QAAS,kBACR,CACDlxzC,KAAM,KACNkxzC,QAAS,MACR,CACDlxzC,KAAM,IACNkxzC,QAAS,mCACR,CACDlxzC,KAAM,IACNkxzC,QAAS,UACR,CACDlxzC,KAAM,IACNkxzC,QAAS,mBACR,CACDlxzC,KAAM,IACNkxzC,QAAS,mBACR,CACDlxzC,KAAM,KACNkxzC,QAAS,KACR,CACDlxzC,KAAM,IACNkxzC,QAAS,wBACR,CACDlxzC,KAAM,IACNkxzC,QAAS,UACR,CACDlxzC,KAAM,IACNkxzC,QAAS,kBACR,CACDlxzC,KAAM,IACNkxzC,QAAS,uBACR,CACDlxzC,KAAM,KACNkxzC,QAAS,KACR,CACDlxzC,KAAM,IACNkxzC,QAAS,YACR,CACDlxzC,KAAM,IACNkxzC,QAAS,qBACR,CACDlxzC,KAAM,KACNkxzC,QAAS,KACR,CACDlxzC,KAAM,IACNkxzC,QAAS,+CACR,CACDlxzC,KAAM,KACNkxzC,QAAS,KACR,CACDlxzC,KAAM,KACNkxzC,QAAS,KACR,CACDlxzC,KAAM,KACNkxzC,QAAS,KACR,CACDlxzC,KAAM,IACNkxzC,QAAS,cACR,CACDlxzC,KAAM,IACNkxzC,QAAS,UACR,CACDlxzC,KAAM,IACNkxzC,QAAS,qBACR,CACDlxzC,KAAM,IACNkxzC,QAAS,sBACR,CACDlxzC,KAAM,IACNkxzC,QAAS,oBACR,CACDlxzC,KAAM,KACNkxzC,QAAS,KACR,CACDlxzC,KAAM,IACNkxzC,QAAS,sCACR,CACDlxzC,KAAM,IACNkxzC,QAAS,YACR,CACDlxzC,KAAM,KACNkxzC,QAAS,KACR,CACDlxzC,KAAM,IACNkxzC,QAAS,eACR,CACDlxzC,KAAM,IACNkxzC,QAAS,SACR,CACDlxzC,KAAM,IACNkxzC,QAAS,oBACR,CACDlxzC,KAAM,IACNkxzC,QAAS,mBAEP8oF,EAAe,IAAIt45C,OAAO,IAAMq45C,EAAW/w6C,KAAI,SAAU1sB,GAC3D,OAAOA,EAAE402C,OACX,IAAG1q2C,KAAK,IAAM,IAAK,KACfyz7C,EAAkB,CAAC,EAEd1/7C,EAAI,EAAGA,EAAIw/7C,EAAW//7C,OAAQO,IAGrC,IAFA,IAAI2/7C,EAAYH,EAAWx/7C,GAElBwD,EAAI,EAAGA,EAAIm87C,EAAUhpF,QAAQl32C,OAAQ+D,IAC5Ck87C,EAAgBC,EAAUhpF,QAAQnz2C,IAAMm87C,EAAUl64C,KAItD,IAAIm64C,EAAkB,SAAyB7p3C,GAC7C,OAAOA,EAAIlqE,QAAQ4z7C,GAAc,SAAU557C,GACzC,OAAO657C,EAAgB757C,EACzB,GACF,EAEIg67C,GAAkC,OAAWD,GAE7CE,EAAa,SAAoB/p3C,GACnC,OAAOA,EAAIlqE,QAAQ,aAAc,GACnC,EAEIk07C,EAAmB,SAA0B9i4C,GAC/C,MAAO,GAAG77D,OAAO67D,EAAOx8D,MAAO,KAAKW,OAAO67D,EAAO18D,MACpD,EAqCIivW,EAAY,CAAC,YACjB,SAASwwlC,EAAWxzvC,GAClB,IAAIorqC,EAAWprqC,EAAKorqC,SAChBvr0C,GAAQ,OAAyBmgK,EAAMgjK,GAGvCywlC,GAAgB,IAAA9g8C,GAAYktC,EAAO,WAAY,KAAM,QAAS,OAAQ,UAC1E,OAAO,OAAI,SAAS,OAAS,CAC3BrL,IAAK420C,GACJqoF,EAAe,CAChBrhsC,KAAkB,QAAI,CACpBn+P,MAAO,aAEPsoP,WAAY,EACZ1kH,OAAQ,EAER67zC,WAAY,cACZr8sC,SAAU,UACVk5H,SAAU,gBACVp+H,QAAS,EACTrnH,QAAS,EAETn5F,MAAO,EAEPwuF,MAAO,cAEP1uF,MAAO,IACP+sG,QAAS,EACTjtG,SAAU,WACVikG,UAAW,cAC8B,GAAmE,MAElH,CAEA,IAqGIm+zC,EAAa,CAAC,YAAa,SAAU,WAAY,eAAgB,YACjEC,EAAc,CAChB1ilC,UAAW,aAEXiD,SAAU,SACV5iV,SAAU,WACVK,OAAQ,QAGV,SAASii6C,EAAiB9h8C,GACxBA,EAAEymH,gBACJ,CAEA,SAASs70C,EAAe/h8C,GACtBA,EAAEqjH,iBACJ,CAEA,SAAS2+0C,IACP,IAAIri6C,EAAM9+B,KAAKkjG,UACXk+1C,EAAcph8C,KAAKmjG,aACnBk+1C,EAAgBvi6C,EAAM9+B,KAAK2gC,aAEnB,IAAR7B,EACF9+B,KAAKkjG,UAAY,EACRm+1C,IAAkBD,IAC3Bph8C,KAAKkjG,UAAYpkE,EAAM,EAE3B,CAIA,SAASwi6C,IACP,MAAO,iBAAkBp/7C,QAAUm3B,UAAU4sf,cAC/C,CAEA,IAAIsmtB,IAAiC,oBAAXrquC,SAA0BA,OAAOiD,WAAYjD,OAAOiD,SAASmE,eACnFi47C,EAAoB,EACpBC,EAAkB,CACpB/x5C,SAAS,EACTC,SAAS,GA+FP+x5C,EAAkB,WACpB,OAAOt87C,SAASsnhB,eAAiBtnhB,SAASsnhB,cAAcw4P,MAC1D,EAEIpxjB,EAAgD,CAClDnpN,KAAM,UACNmrK,OAAQ,gDAQV,SAAS6rxC,EAAct0vC,GACrB,IAAIptK,EAAWotK,EAAKptK,SAChB2h6C,EAAcv0vC,EAAKu0vC,YACnBC,EAAsBx0vC,EAAKy0vC,eAM3BC,EA7PN,SAA0B10vC,GACxB,IAAI2nI,EAAY3nI,EAAK2nI,UACjBgtnC,EAAiB30vC,EAAK20vC,eACtBC,EAAgB50vC,EAAK40vC,cACrBC,EAAc70vC,EAAK60vC,YACnBC,EAAa90vC,EAAK80vC,WAClBl55B,GAAW,IAAA1qgB,SAAO,GAClBwpgB,GAAQ,IAAAxpgB,SAAO,GACf6phB,GAAa,IAAA7phB,QAAO,GACpB6j6C,GAAe,IAAA7j6C,QAAO,MACtB8j6C,GAAmB,IAAAt6hB,cAAY,SAAUrp4B,EAAOsnF,GAClD,GAA6B,OAAzBo80C,EAAapi6C,QAAjB,CACA,IAAIsi6C,EAAwBF,EAAapi6C,QACrCmjE,EAAYm/1C,EAAsBn/1C,UAClCC,EAAek/1C,EAAsBl/1C,aACrCk9C,EAAegizC,EAAsBhizC,aACrCvwI,EAASqy7C,EAAapi6C,QACtBui6C,EAAkBv80C,EAAQ,EAC1Bw80C,EAAkBp/1C,EAAek9C,EAAen9C,EAChDs/1C,GAAqB,EAErBD,EAAkBx80C,GAASijb,EAASjpgB,UAClCii6C,GAAeA,EAAcvj6C,GACjCuqgB,EAASjpgB,SAAU,GAGjBui6C,GAAmBx65B,EAAM/ngB,UACvBmi6C,GAAYA,EAAWzj6C,GAC3BqpgB,EAAM/ngB,SAAU,GAIdui6C,GAAmBv80C,EAAQw80C,GACzBR,IAAmB/45B,EAASjpgB,SAC9Bgi6C,EAAetj6C,GAGjB3uB,EAAOozF,UAAYC,EACnBq/1C,GAAqB,EACrBx55B,EAASjpgB,SAAU,IACTui6C,IAAoBv80C,EAAQ7iB,IAClC++1C,IAAgBn65B,EAAM/ngB,SACxBki6C,EAAYxj6C,GAGd3uB,EAAOozF,UAAY,EACnBs/1C,GAAqB,EACrB165B,EAAM/ngB,SAAU,GAIdyi6C,GAxDW,SAAsB/j6C,GACvCA,EAAMmnF,iBACNnnF,EAAM+jF,iBACR,CAsDMig1C,CAAahk6C,EAzC0B,CA2C3C,GAAG,CAACsj6C,EAAgBC,EAAeC,EAAaC,IAC5C9+4B,GAAU,IAAA0kX,cAAY,SAAUrp4B,GAClC2j6C,EAAiB3j6C,EAAOA,EAAMkrF,OAChC,GAAG,CAACy40C,IACAv64B,GAAe,IAAAigX,cAAY,SAAUrp4B,GAEvC0phB,EAAWpohB,QAAUtB,EAAMo6iB,eAAe,GAAG9kf,OAC/C,GAAG,IACC+zd,GAAc,IAAAggX,cAAY,SAAUrp4B,GACtC,IAAIkrF,EAASw+b,EAAWpohB,QAAUtB,EAAMo6iB,eAAe,GAAG9kf,QAC1Dqu2C,EAAiB3j6C,EAAOkrF,EAC1B,GAAG,CAACy40C,IACAM,GAAiB,IAAA56hB,cAAY,SAAUjuxB,GAEzC,GAAKA,EAAL,CACA,IAAI8ozC,IAAa,EAAA7h8C,GAAwB,CACvC4uC,SAAS,GAEXmqG,EAAGltH,iBAAiB,QAASy2hB,EAASu/4B,GACtC9ozC,EAAGltH,iBAAiB,aAAck7hB,EAAc864B,GAChD9ozC,EAAGltH,iBAAiB,YAAam7hB,EAAa664B,EAN/B,CAOjB,GAAG,CAAC764B,EAAaD,EAAczE,IAC3Bw/4B,GAAgB,IAAA96hB,cAAY,SAAUjuxB,GAEnCA,IACLA,EAAGxwH,oBAAoB,QAAS+5hB,GAAS,GACzCvpa,EAAGxwH,oBAAoB,aAAcw+hB,GAAc,GACnDhua,EAAGxwH,oBAAoB,YAAay+hB,GAAa,GACnD,GAAG,CAACA,EAAaD,EAAczE,IAS/B,OARA,IAAA9hhB,YAAU,WACR,GAAKyzS,EAAL,CACA,IAAIhpP,EAAUo22C,EAAapi6C,QAE3B,OADA2i6C,EAAe322C,GACR,WACL622C,EAAc722C,EAChB,CALsB,CAMxB,GAAG,CAACgpP,EAAW2tnC,EAAgBE,IACxB,SAAU722C,GACfo22C,EAAapi6C,QAAUgsD,CACzB,CACF,CA+J+B822C,CAAiB,CAC5C9tnC,eAN2C,IAAxB6snC,GAAwCA,EAO3DG,eANmB30vC,EAAK20vC,eAOxBC,cANkB50vC,EAAK40vC,cAOvBC,YANgB70vC,EAAK60vC,YAOrBC,WANe90vC,EAAK80vC,aAQlBY,EA3HN,SAAuB11vC,GACrB,IAAI2nI,EAAY3nI,EAAK2nI,UACjBgunC,EAAwB31vC,EAAK41vC,qBAC7BA,OAAiD,IAA1BD,GAA0CA,EACjEE,GAAiB,IAAA3k6C,QAAO,CAAC,GACzB6j6C,GAAe,IAAA7j6C,QAAO,MACtB4k6C,GAAgB,IAAAp7hB,cAAY,SAAUq7hB,GACxC,GAAK52N,EAAL,CACA,IAAIz8tC,EAAS3K,SAAS4rB,KAClBq88B,EAAct99B,GAAUA,EAAOuE,MAWnC,GATI2u7C,GAEFjC,EAAW776C,SAAQ,SAAUL,GAC3B,IAAI64J,EAAM0vzB,GAAeA,EAAYvo9B,GACrCo+6C,EAAelj6C,QAAQlb,GAAO64J,CAChC,IAIEslxC,GAAwBzB,EAAoB,EAAG,CACjD,IAAI6B,EAAiBzt6C,SAASst6C,EAAelj6C,QAAQkgV,aAAc,KAAO,EACtE9/N,EAAch7I,SAAS4rB,KAAO5rB,SAAS4rB,KAAKovH,YAAc,EAC1DkjzC,EAAkBnh8C,OAAO24B,WAAaslH,EAAcijzC,GAAkB,EAC1E9j8C,OAAOgU,KAAK0t7C,GAAa976C,SAAQ,SAAUL,GACzC,IAAI64J,EAAMsjxC,EAAYn86C,GAElBuo9B,IACFA,EAAYvo9B,GAAO64J,EAEvB,IAEI0vzB,IACFA,EAAYntnB,aAAe,GAAGj+W,OAAOqh8C,EAAiB,MAE1D,CAGIvz7C,GAAUwx7C,MAEZxx7C,EAAO6c,iBAAiB,YAAas06C,EAAkBO,GAEnD2B,IACFA,EAAkBx26C,iBAAiB,aAAcw06C,EAAsBK,GACvE2B,EAAkBx26C,iBAAiB,YAAau06C,EAAgBM,KAKpED,GAAqB,CA1CC,CA2CxB,GAAG,CAACyB,IACAM,GAAmB,IAAAx7hB,cAAY,SAAUq7hB,GAC3C,GAAK52N,EAAL,CACA,IAAIz8tC,EAAS3K,SAAS4rB,KAClBq88B,EAAct99B,GAAUA,EAAOuE,MAEnCkt7C,EAAoB1+7C,KAAK8K,IAAI4z7C,EAAoB,EAAG,GAEhDyB,GAAwBzB,EAAoB,GAC9CR,EAAW776C,SAAQ,SAAUL,GAC3B,IAAI64J,EAAMulxC,EAAelj6C,QAAQlb,GAE7Buo9B,IACFA,EAAYvo9B,GAAO64J,EAEvB,IAIE5tK,GAAUwx7C,MACZxx7C,EAAOuZ,oBAAoB,YAAa436C,EAAkBO,GAEtD2B,IACFA,EAAkB956C,oBAAoB,aAAc836C,EAAsBK,GAC1E2B,EAAkB956C,oBAAoB,YAAa636C,EAAgBM,IAtBjD,CAyBxB,GAAG,CAACwB,IASJ,OARA,IAAA1h6C,YAAU,WACR,GAAKyzS,EAAL,CACA,IAAIhpP,EAAUo22C,EAAapi6C,QAE3B,OADAmj6C,EAAcn32C,GACP,WACLu32C,EAAiBv32C,EACnB,CALsB,CAMxB,GAAG,CAACgpP,EAAWmunC,EAAeI,IACvB,SAAUv32C,GACfo22C,EAAapi6C,QAAUgsD,CACzB,CACF,CAkC4Bw32C,CAAc,CACtCxunC,UAAW4snC,IAQb,OAAO,OAAI,EAAAhisC,SAAU,KAAMgisC,IAAe,OAAI,MAAO,CACnD3j6C,QAASyj6C,EACTjisC,IAAK3rC,IACH7zL,GARY,SAAmB+rD,GACjC+12C,EAAuB/12C,GACvB+22C,EAAoB/22C,EACtB,IAMF,CAEA,IAaIu3rB,EAAgB,CAClBkgrB,eAAgB,IAChBpizC,UAAW,IACX22G,QAAS,IACT0rsC,kBAAmB,IACnBrooC,MAAO,EAAAj5T,EACPuh8C,aAAc,IACdC,oBAAqB,EAAA/i8C,EACrBgj8C,mBAAoB,IACpBnz4C,MAAO,IACPoz4C,iBAAkB,EAAArh8C,EAClBsh8C,eAAgB,IAChBrz6B,KAAM,IACNk0L,SAAU,IACVo/uB,WAAY,IACZC,WAAY,IACZC,gBAAiB,IACjBC,iBAAkB,IAClBC,iBAAkB,IAClBtm4C,OAAQ,IACRrM,YAAa,IACb4y4C,YAAa,IACbC,eAAgB,KAwDdthlC,EAAe,CACjBpK,aAbiB,EAcjB/kN,OAjCW,CACXtpF,QAAS,UACTg63C,UAAW,UACXC,UAAW,UACXC,UAAW,UACXC,OAAQ,UACRC,YAAa,UACbC,SAAU,mBACVC,SAAU,kBACVC,UAAW,kBACXC,UAAW,kBACXC,UAAW,kBACXC,UAAW,kBACXC,UAAW,kBACXC,UAAW,kBACXC,UAAW,kBACXC,UAAW,kBACXC,UAAW,mBAiBXtolC,QARY,CACZuolC,SANa,EAObC,cALkB,GAMlBC,WAJeF,IAYbprzC,EAAe,CACjB,YAAa,SACburzC,uBAAuB,EACvBC,mBAAmB,SACnBC,oBAAoB,SACpBC,mBAAmB,EACnBC,mBAAmB,EACnB33sC,WAAY,CAAC,EACb43sC,0BAA0B,EAC1BC,mBAAmB,EACnBxl6B,aAvcO,SAAU1ie,EAAQmo4C,GAEvB,GAAIno4C,EAAOruD,KAAKy27C,UAAW,OAAO,EAElC,IAAIC,GAAwB,OAAe,CACzC7r5C,YAAY,EACZ8r5C,eAAe,EACf1s7C,UAAWkn7C,EACXtu6C,MAAM,EACN+z6C,UAAW,YA8bDzikB,GA5bRtp1B,EAAa6r5C,EAAsB7r5C,WACnC8r5C,EAAgBD,EAAsBC,cACtC1s7C,EAAYys7C,EAAsBzs7C,UAClC4Y,EAAO6z6C,EAAsB7z6C,KAC7B+z6C,EAAYF,EAAsBE,UAElC314C,EAAQp+B,EAAOqu6C,EAAWsF,GAAYA,EACtCtl5C,EAAYruB,EAAOqu6C,EAAWjn7C,EAAUokD,IAAWpkD,EAAUokD,GAYjE,OAVIxjB,IACFoW,EAAQA,EAAMlhD,cACdmxC,EAAYA,EAAUnxC,eAGpB427C,IACF114C,EAAQgw4C,EAAgChw4C,GACxC/P,EAAY8/4C,EAAgB9/4C,IAGT,UAAd0l5C,EAAwB1l5C,EAAUjlB,OAAO,EAAGg1B,EAAMpwD,UAAYowD,EAAQ/P,EAAUlgD,QAAQiwD,IAAU,CAC3G,EAyaA414C,iBA5GqB,SAA0BjroC,GAC/C,OAAOA,EAAM/5T,KACf,EA2GEw97C,eA1GqB,SAAwBhh4C,GAC7C,OAAOA,EAAOx8D,KAChB,EAyGEil8C,eAxGqB,SAAwBzo4C,GAC7C,OAAOA,EAAO18D,KAChB,EAuGE8tiB,YAAY,EACZ7tX,WAAW,EACX28wC,SAAS,EACTj/6B,OAAO,EACPg/6B,cAAc,EACdgB,iBA3GqB,SAA0Bjh4C,GAC/C,QAASA,EAAOoxe,UAClB,EA0GE605B,eAAgB,WACd,MAAO,YACT,EACAyC,cAAe,IACfC,cAAe,IACfzH,YAAY,EACZ0H,cAAe,SACfC,aAAc,WACdC,uBAAuB,EACvBC,2BAA2B,SAC3BzC,iBAAkB,WAChB,MAAO,YACT,EACA0C,iBAAiB,EACjBC,iBAAiB,EACjB396C,QAAS,GACTitoB,SAAU,EACV5kmB,YAAa,YACbwt4C,mBAAoB,SAA4B5xvC,GAC9C,IAAI7jJ,EAAQ6jJ,EAAK7jJ,MACjB,MAAO,GAAGvnD,OAAOunD,EAAO,WAAWvnD,OAAiB,IAAVunD,EAAc,IAAM,GAAI,aACpE,EACAssH,OAAQ,CAAC,EACTwwW,SAAU,EACV236B,iBAAiB,GAGnB,SAAS+I,EAAoB955C,EAAO4wB,EAAQsg4C,EAAanh7C,GAOvD,MAAO,CACLzQ,KAAM,SACNiD,KAAMquD,EACNoxe,WATe+35B,EAAkB/55C,EAAO4wB,EAAQsg4C,GAUhD/v5C,WARe645C,EAAkBh65C,EAAO4wB,EAAQsg4C,GAShD987C,MAPUw97C,EAAe5x5C,EAAO4wB,GAQhC18D,MAPUml8C,EAAer55C,EAAO4wB,GAQhC7gD,MAAOA,EAEX,CAEA,SAASkq7C,EAAwBj65C,EAAOkx5C,GACtC,OAAOlx5C,EAAM9jB,QAAQkG,KAAI,SAAU836C,EAAeC,GAChD,GAAI,YAAaD,EAAe,CAC9B,IAAIE,EAAqBF,EAAch+6C,QAAQkG,KAAI,SAAUwuC,EAAQyp4C,GACnE,OAAOP,EAAoB955C,EAAO4wB,EAAQsg4C,EAAamJ,EACzD,IAAGz66C,QAAO,SAAU066C,GAClB,OAAO986B,EAAYx9e,EAAOs65C,EAC5B,IACA,OAAOF,EAAmBhn8C,OAAS,EAAI,CACrCkM,KAAM,QACNiD,KAAM237C,EACNh+6C,QAASk+6C,EACTrq7C,MAAOoq7C,QACLr55C,CACN,CAEA,IAAIw55C,EAAoBR,EAAoB955C,EAAOk65C,EAAehJ,EAAaiJ,GAC/E,OAAO386B,EAAYx9e,EAAOs65C,GAAqBA,OAAoBx55C,CACrE,IAAGlhB,OAAO,IACZ,CAEA,SAAS266C,EAA4CH,GACnD,OAAOA,EAAmB3z6C,QAAO,SAAU+z6C,EAAoBF,GAS7D,MAR+B,UAA3BA,EAAkBh77C,KACpBk77C,EAAmB5l8C,KAAKtB,MAAMkn8C,GAAoB,OAAmBF,EAAkBp+6C,QAAQkG,KAAI,SAAUwuC,GAC3G,OAAOA,EAAOruD,IAChB,MAEAi47C,EAAmB5l8C,KAAK0l8C,EAAkB/37C,MAGrCi47C,CACT,GAAG,GACL,CAMA,SAASh96B,EAAYx9e,EAAOs65C,GAC1B,IAAIG,EAAoBz65C,EAAMwid,WAC1BA,OAAmC,IAAtBi48B,EAA+B,GAAKA,EACjDl47C,EAAO+37C,EAAkB/37C,KACzB4+B,EAAam55C,EAAkBn55C,WAC/B/sC,EAAQkm8C,EAAkBlm8C,MAC1BF,EAAQom8C,EAAkBpm8C,MAC9B,QAASwm8C,EAA0B165C,KAAWmB,IAAew55C,EAAc365C,EAAO,CAChF5rC,MAAOA,EACPF,MAAOA,EACPqO,KAAMA,GACLigf,EACL,CA4BA,IAAIov8B,EAAiB,SAAwB5x5C,EAAOz9B,GAClD,OAAOy9B,EAAM4x5C,eAAerv7C,EAC9B,EAEI827C,EAAiB,SAAwBr55C,EAAOz9B,GAClD,OAAOy9B,EAAMq55C,eAAe927C,EAC9B,EAEA,SAASw37C,EAAkB/55C,EAAO4wB,EAAQsg4C,GACxC,MAAyC,mBAA3Blx5C,EAAM6x5C,kBAAkC7x5C,EAAM6x5C,iBAAiBjh4C,EAAQsg4C,EACvF,CAEA,SAAS8I,EAAkBh65C,EAAO4wB,EAAQsg4C,GACxC,GAAIA,EAAY397C,QAAQq9D,IAAW,EAAG,OAAO,EAE7C,GAAsC,mBAA3B5wB,EAAM465C,iBACf,OAAO565C,EAAM465C,iBAAiBhq4C,EAAQsg4C,GAGxC,IAAIz94C,EAAY4l5C,EAAer55C,EAAO4wB,GACtC,OAAOsg4C,EAAYx25C,MAAK,SAAU/mC,GAChC,OAAO0l8C,EAAer55C,EAAOrsC,KAAO8/C,CACtC,GACF,CAEA,SAASkn5C,EAAc365C,EAAO4wB,EAAQ4xb,GACpC,OAAOxid,EAAMszf,cAAetzf,EAAMszf,aAAa1ie,EAAQ4xb,EACzD,CAEA,IAAIk48B,EAA4B,SAAmC165C,GACjE,IAAI665C,EAAsB765C,EAAM665C,oBAC5B/J,EAAU9w5C,EAAM8w5C,QACpB,YAA4Bhw5C,IAAxB+55C,EAA0C/J,EACvC+J,CACT,EAEIj99B,GAAa,EAEbk99B,GAAsB,SAAU7iB,IAClC,OAAU6iB,EAAQ7iB,GAElB,IAAIx8jC,GAAS,IAAA9kX,GAAamk8C,GAS1B,SAASA,EAAOviB,GACd,IAAI943C,EAqpBJ,OAnpBA,OAAgB1sD,KAAM+n8C,IAEtBr74C,EAAQg8T,EAAO9oX,KAAKI,KAAMwl7C,IACpB756C,MAAQ,CACZ6y7C,cAAe,KACfC,cAAe,KACfC,aAAc,KACdsJ,eAAe,EACflk1B,WAAW,EACXq60B,YAAa,GACb8J,yBAAyB,EACzBC,gBAAgB,EAChBC,8BAA0Bp65C,EAC1BsrW,eAAWtrW,GAEb2e,EAAM074C,kBAAmB,EACzB174C,EAAM274C,aAAc,EACpB374C,EAAM474C,iBAAc,EACpB574C,EAAM674C,cAAgB,EACtB774C,EAAM874C,cAAgB,EACtB974C,EAAM+74C,eAAiB,GACvB/74C,EAAMg84C,gBAAiB,EACvBh84C,EAAMi84C,+BAAgC,EACtCj84C,EAAMk84C,oBAAiB,EACvBl84C,EAAMm84C,WAAa,KAEnBn84C,EAAMo84C,cAAgB,SAAUln6C,GAC9B8qB,EAAMm84C,WAAajn6C,CACrB,EAEA8qB,EAAMq84C,iBAAmB,KAEzBr84C,EAAMs84C,oBAAsB,SAAUpn6C,GACpC8qB,EAAMq84C,iBAAmBnn6C,CAC3B,EAEA8qB,EAAMu84C,YAAc,KAEpBv84C,EAAMw84C,eAAiB,SAAUtn6C,GAC/B8qB,EAAMu84C,YAAcrn6C,CACtB,EAEA8qB,EAAM02yC,SAAW,KAEjB12yC,EAAMy84C,YAAc,SAAUvn6C,GAC5B8qB,EAAM02yC,SAAWxh0C,CACnB,EAEA8qB,EAAMokT,MAAQpkT,EAAM084C,WACpB184C,EAAMu4tB,KAAOv4tB,EAAM284C,UAEnB384C,EAAMw4B,SAAW,SAAU+mE,EAAUuxyC,GACnC,IAAIjryC,EAAc7lG,EAAMzf,MACpBi4C,EAAWqtE,EAAYrtE,SACvBx6E,EAAO6nJ,EAAY7nJ,KACvB8y7C,EAAW9y7C,KAAOA,EAElBgiD,EAAM484C,aAAar9yC,EAAUuxyC,GAE7Bt42C,EAAS+mE,EAAUuxyC,EACrB,EAEA9w4C,EAAMwye,SAAW,SAAUjzY,EAAU3gF,EAAQzN,GAC3C,IAAI0xU,EAAe7iV,EAAMzf,MACrB245C,EAAoBr2jC,EAAaq2jC,kBACjC7H,EAAUxujC,EAAawujC,QACvBtu8B,EAAalgH,EAAakgH,WAE9B/ic,EAAM+u4C,cAAc,GAAI,CACtBnw3C,OAAQ,YACRi+3C,eAAgB958B,IAGdm28B,IACFl54C,EAAMg+E,SAAS,CACby9zC,0BAA2BpK,IAG7Brx4C,EAAM884C,eAIR984C,EAAMg+E,SAAS,CACbu9zC,yBAAyB,IAG3Bv74C,EAAMw4B,SAAS+mE,EAAU,CACvB3gF,OAAQA,EACRzN,OAAQA,GAEZ,EAEAnR,EAAM+84C,aAAe,SAAUx9yC,GAC7B,IAAIy9yC,EAAeh94C,EAAMzf,MACrBy45C,EAAoBgE,EAAahE,kBACjC3H,EAAU2L,EAAa3L,QACvBrz7C,EAAOg/7C,EAAah/7C,KACpByz7C,EAAczx4C,EAAM/gD,MAAMwy7C,YAE1BwL,EAAa5L,GAAWrx4C,EAAMm74C,iBAAiB57yC,EAAUkyyC,GAEzDlv5B,EAAavif,EAAMoy4C,iBAAiB7yyC,EAAUkyyC,GAElD,GAAIwL,EAAY,CACd,IAAIjp5C,EAAYgM,EAAM454C,eAAer6yC,GAErCv/F,EAAMwye,UAAS,OAAkBi/5B,EAAYtx6C,QAAO,SAAUjsB,GAC5D,OAAO8rD,EAAM454C,eAAe1l8C,KAAO8/C,CACrC,KAAK,kBAAmBurG,EAC1B,KAAO,IAAKgjZ,EAcV,YANAvif,EAAM484C,cAAa,OAAmBr9yC,GAAW,CAC/C3gF,OAAQ,gBACRzN,OAAQouF,EACRvhJ,KAAMA,IATJqz7C,EACFrx4C,EAAMwye,UAAS,OAAkB,GAAGl9hB,QAAO,OAAmBm87C,GAAc,CAAClyyC,KAAa,gBAAiBA,GAE3Gv/F,EAAMwye,UAAS,OAAmBjzY,GAAW,gBAUjD,CAEIy5yC,GACFh54C,EAAM284C,WAEV,EAEA384C,EAAMk94C,YAAc,SAAUvK,GAC5B,IAAItB,EAAUrx4C,EAAMzf,MAAM8w5C,QACtBI,EAAczx4C,EAAM/gD,MAAMwy7C,YAE1Bz94C,EAAYgM,EAAM454C,eAAejH,GAEjCnqpB,EAAgBippB,EAAYtx6C,QAAO,SAAUjsB,GAC/C,OAAO8rD,EAAM454C,eAAe1l8C,KAAO8/C,CACrC,IACIurG,GAAW,OAAa8xyC,EAAS7opB,EAAeA,EAAc,IAAM,MAExExovB,EAAMw4B,SAAS+mE,EAAU,CACvB3gF,OAAQ,eACR+z3C,aAAcA,IAGhB3y4C,EAAM084C,YACR,EAEA184C,EAAMm94C,WAAa,WACjB,IAAI1L,EAAczx4C,EAAM/gD,MAAMwy7C,YAE9Bzx4C,EAAMw4B,UAAS,OAAax4B,EAAMzf,MAAM8w5C,QAAS,GAAI,MAAO,CAC1Dzy3C,OAAQ,QACRg03C,cAAenB,GAEnB,EAEAzx4C,EAAMo94C,SAAW,WACf,IAAI/L,EAAUrx4C,EAAMzf,MAAM8w5C,QACtBI,EAAczx4C,EAAM/gD,MAAMwy7C,YAC1B4L,EAAoB5L,EAAYA,EAAY997C,OAAS,GACrD60yB,EAAgBippB,EAAYp87C,MAAM,EAAGo87C,EAAY997C,OAAS,GAC1D4rJ,GAAW,OAAa8xyC,EAAS7opB,EAAeA,EAAc,IAAM,MAExExovB,EAAMw4B,SAAS+mE,EAAU,CACvB3gF,OAAQ,YACR+z3C,aAAc0K,GAElB,EAEAr94C,EAAMwvE,SAAW,WACf,OAAOxvE,EAAM/gD,MAAMwy7C,WACrB,EAEAzx4C,EAAMg0M,GAAK,WACT,IAAK,IAAI9S,EAAOxtP,UAAUC,OAAQg3C,EAAO,IAAI53C,MAAMmuP,GAAOlF,EAAO,EAAGA,EAAOkF,EAAMlF,IAC/ErxM,EAAKqxM,GAAQtoP,UAAUsoP,GAGzB,OAAO,IAAWnoP,WAAM,EAAQ,CAACmsD,EAAMzf,MAAM+85C,iBAAiBho8C,OAAOq1C,GACvE,EAEAqV,EAAMmy4C,eAAiB,SAAUrv7C,GAC/B,OAAOqv7C,EAAeny4C,EAAMzf,MAAOz9B,EACrC,EAEAk9C,EAAM454C,eAAiB,SAAU927C,GAC/B,OAAO827C,EAAe554C,EAAMzf,MAAOz9B,EACrC,EAEAk9C,EAAM2+V,UAAY,SAAUxmY,EAAKooB,GAC/B,IAAIoZ,EAAOi9tB,EAAcz+vB,GAAKooB,GAC9BoZ,EAAKi4T,UAAY,aACjB,IAAI8rjC,EAAS192C,EAAMzf,MAAM4oI,OAAOhxJ,GAChC,OAAOul5C,EAASA,EAAO/j3C,EAAMpZ,GAASoZ,CACxC,EAEAqG,EAAMu94C,aAAe,SAAUl+2C,GAC7B,MAAO,GAAG/pF,OAAO0qD,EAAM+74C,eAAgB,KAAKzm8C,OAAO+pF,EACrD,EAEAr/B,EAAMw94C,cAAgB,WACpB,OAAO,OAAkBx94C,EAAMzf,MACjC,EAEAyf,EAAMw64C,wBAA0B,WAC9B,OAAOA,EAAwBx64C,EAAMzf,MAAOyf,EAAM/gD,MAAMwy7C,YAC1D,EAEAzx4C,EAAMy94C,sBAAwB,WAC5B,OAAOz94C,EAAMzf,MAAM8x5C,WAAary4C,EAAMw64C,0BAA4B,EACpE,EAEAx64C,EAAM094C,sBAAwB,WAC5B,OAAO5C,EAA4C964C,EAAMw64C,0BAC3D,EAEAx64C,EAAM294C,oBAAsB,WAC1B,OAAO394C,EAAMzf,MAAM8x5C,WAAary4C,EAAM094C,wBAA0B,EAClE,EAEA194C,EAAM484C,aAAe,SAAUno8C,EAAOq87C,GACpC9w4C,EAAMg+E,SAAS,CACb8zzC,eAAe,OAAe,CAC5Br97C,MAAOA,GACNq87C,IAEP,EAEA9w4C,EAAM494C,gBAAkB,SAAU7r6C,GACX,IAAjBA,EAAMi5U,SAIVj5U,EAAM+jF,kBACN/jF,EAAMmnF,iBAENl5D,EAAM084C,aACR,EAEA184C,EAAM694C,gBAAkB,SAAU9r6C,GAChCiuB,EAAM074C,kBAAmB,CAC3B,EAEA174C,EAAM894C,mBAAqB,SAAU/r6C,GAEnC,IAAIA,EAAMnV,iBAAV,CAIA,IAAIw96C,EAAkBp64C,EAAMzf,MAAM655C,gBAE7Bp64C,EAAM/gD,MAAMm4mB,UAMLp3jB,EAAMzf,MAAM8x5C,WAKO,UAAzBtg6C,EAAM3uB,OAAOmrD,SAAgD,aAAzBx8B,EAAM3uB,OAAOmrD,SACnDvO,EAAM884C,cALJ1C,GACFp64C,EAAM+94C,SAAS,UAPb3D,IACFp64C,EAAMg84C,gBAAiB,GAGzBh84C,EAAM084C,cAWqB,UAAzB3q6C,EAAM3uB,OAAOmrD,SAAgD,aAAzBx8B,EAAM3uB,OAAOmrD,SACnDx8B,EAAMmnF,gBArBR,CAuBF,EAEAl5D,EAAMg+4C,6BAA+B,SAAUjs6C,GAE7C,KAAIA,GAAwB,cAAfA,EAAMlyB,MAAyC,IAAjBkyB,EAAMi5U,QAI7ChrT,EAAMzf,MAAMgigB,YAAhB,CACA,IAAI075B,EAAej+4C,EAAMzf,MACrB8w5C,EAAU4M,EAAa5M,QACvBgB,EAAa4L,EAAa5L,WAE9Bry4C,EAAM084C,aAEFrK,GACFry4C,EAAMg+E,SAAS,CACby9zC,0BAA2BpK,IAG7Brx4C,EAAM884C,eAEN984C,EAAM+94C,SAAS,SAGjBhs6C,EAAMmnF,gBAjB4B,CAkBpC,EAEAl5D,EAAMk+4C,0BAA4B,SAAUns6C,GAEtCA,GAAwB,cAAfA,EAAMlyB,MAAyC,IAAjBkyB,EAAMi5U,SAIjDhrT,EAAMm94C,aAENpr6C,EAAMmnF,iBACNl5D,EAAMg84C,gBAAiB,EAEJ,aAAfjq6C,EAAMlyB,KACRmgD,EAAM084C,aAENvj7C,YAAW,WACT,OAAO6mC,EAAM084C,YACf,IAEJ,EAEA184C,EAAM+yzC,SAAW,SAAUhh1C,GACoB,kBAAlCiuB,EAAMzf,MAAM445C,kBACjBpn6C,EAAM3uB,kBAAkB6uP,cAAe,OAAkBlgO,EAAM3uB,SACjE48C,EAAMzf,MAAMu85C,cAEoC,mBAAlC984C,EAAMzf,MAAM445C,mBACxBn54C,EAAMzf,MAAM445C,kBAAkBpn6C,IAChCiuB,EAAMzf,MAAMu85C,aAGlB,EAEA984C,EAAMm+4C,mBAAqB,WACzBn+4C,EAAM274C,aAAc,CACtB,EAEA374C,EAAMo+4C,iBAAmB,WACvBp+4C,EAAM274C,aAAc,CACtB,EAEA374C,EAAMm7f,aAAe,SAAUh0V,GAC7B,IAAIw0V,EAAUx0V,EAAMw0V,QAChBrpX,EAAQqpX,GAAWA,EAAQjngB,KAAK,GAE/B49I,IAILtyI,EAAM674C,cAAgBvpwC,EAAMlrG,QAC5BpnC,EAAM874C,cAAgBxpwC,EAAMjrG,QAC5BrnC,EAAMk84C,gBAAiB,EACzB,EAEAl84C,EAAMo7f,YAAc,SAAUp5T,GAC5B,IAAI25T,EAAU35T,EAAM25T,QAChBrpX,EAAQqpX,GAAWA,EAAQjngB,KAAK,GAEpC,GAAK49I,EAAL,CAIA,IAAI54E,EAASvjH,KAAKmjH,IAAIg5E,EAAMlrG,QAAUpnC,EAAM674C,eACxC5+0C,EAAS9mH,KAAKmjH,IAAIg5E,EAAMjrG,QAAUrnC,EAAM874C,eAE5C974C,EAAMk84C,eAAiBxi1C,EADH,GAC6BuD,EAD7B,CAJpB,CAMF,EAEAj9D,EAAMs7f,WAAa,SAAUvphB,GACvBiuB,EAAMk84C,iBAINl84C,EAAMm84C,aAAen84C,EAAMm84C,WAAWjs6C,SAAS6B,EAAM3uB,SAAW48C,EAAMu84C,cAAgBv84C,EAAMu84C,YAAYrs6C,SAAS6B,EAAM3uB,SACzH48C,EAAM284C,YAIR384C,EAAM674C,cAAgB,EACtB774C,EAAM874C,cAAgB,EACxB,EAEA974C,EAAMq+4C,kBAAoB,SAAUts6C,GAC9BiuB,EAAMk84C,gBAEVl84C,EAAM894C,mBAAmB/r6C,EAC3B,EAEAiuB,EAAMs+4C,yBAA2B,SAAUvs6C,GACrCiuB,EAAMk84C,gBAEVl84C,EAAMk+4C,0BAA0Bns6C,EAClC,EAEAiuB,EAAMu+4C,4BAA8B,SAAUxs6C,GACxCiuB,EAAMk84C,gBAEVl84C,EAAMg+4C,6BAA6Bjs6C,EACrC,EAEAiuB,EAAMw+4C,kBAAoB,SAAUzs6C,GAClC,IAAI8q6C,EAAiB784C,EAAMzf,MAAMwid,WAC7BA,EAAahxd,EAAMsgB,cAAc59C,MAErCurD,EAAMg+E,SAAS,CACby9zC,0BAA0B,IAG5Bz74C,EAAM+u4C,cAAchs8B,EAAY,CAC9Bnkb,OAAQ,eACRi+3C,eAAgBA,IAGb784C,EAAMzf,MAAM8x5C,YACfry4C,EAAMy+4C,YAEV,EAEAz+4C,EAAM0+4C,aAAe,SAAU3s6C,GACzBiuB,EAAMzf,MAAMmvnB,SACd1vmB,EAAMzf,MAAMmvnB,QAAQ39nB,GAGtBiuB,EAAMg+E,SAAS,CACby9zC,0BAA0B,EAC1Brk1B,WAAW,KAGTp3jB,EAAMg84C,gBAAkBh84C,EAAMzf,MAAM455C,kBACtCn64C,EAAM+94C,SAAS,SAGjB/94C,EAAMg84C,gBAAiB,CACzB,EAEAh84C,EAAM2+4C,YAAc,SAAU5s6C,GAC5B,IAAI8q6C,EAAiB784C,EAAMzf,MAAMwid,WAE7B/ic,EAAMu84C,aAAev84C,EAAMu84C,YAAYrs6C,SAASz3B,SAASsnhB,eAC3D//d,EAAM02yC,SAASty/B,SAKbpkT,EAAMzf,MAAM6iyC,QACdpjxC,EAAMzf,MAAM6iyC,OAAOrxyC,GAGrBiuB,EAAM+u4C,cAAc,GAAI,CACtBnw3C,OAAQ,aACRi+3C,eAAgBA,IAGlB784C,EAAM884C,cAEN984C,EAAMg+E,SAAS,CACbg0zC,aAAc,KACd560B,WAAW,IAEf,EAEAp3jB,EAAM4+4C,cAAgB,SAAU7M,GAC1B/x4C,EAAM074C,kBAAoB174C,EAAM/gD,MAAM8y7C,gBAAkBA,GAI5D/x4C,EAAMg+E,SAAS,CACb+zzC,cAAeA,GAEnB,EAEA/x4C,EAAMi74C,0BAA4B,WAChC,OAAOA,EAA0Bj74C,EAAMzf,MACzC,EAEAyf,EAAMwre,UAAY,SAAUz5f,GAC1B,IAAI8s6C,EAAe7+4C,EAAMzf,MACrB8w5C,EAAUwN,EAAaxN,QACvB0H,EAAwB8F,EAAa9F,sBACrCM,EAAoBwF,EAAaxF,kBACjCt28B,EAAa878B,EAAa978B,WAC1B+78B,EAAcD,EAAaC,YAC3Bv85B,EAAas85B,EAAat85B,WAC1B8v5B,EAAawM,EAAaxM,WAC1B7m6B,EAAYqz6B,EAAarz6B,UACzB8l6B,EAAkBuN,EAAavN,gBAC/B6I,EAAkB0E,EAAa1E,gBAC/BztxC,EAAc1sH,EAAM/gD,MACpB8y7C,EAAgBrlxC,EAAYqlxC,cAC5BC,EAAetlxC,EAAYslxC,aAC3BP,EAAc/kxC,EAAY+kxC,YAC9B,KAAIlv5B,GAEqB,mBAAd/W,IACTA,EAAUz5f,GAENA,EAAMnV,mBAHZ,CAWA,OAFAojC,EAAM074C,kBAAmB,EAEjB3p6C,EAAM5Z,KACZ,IAAK,YACH,IAAKk56C,GAAWtu8B,EAAY,OAE5B/ic,EAAM++4C,WAAW,YAEjB,MAEF,IAAK,aACH,IAAK1N,GAAWtu8B,EAAY,OAE5B/ic,EAAM++4C,WAAW,QAEjB,MAEF,IAAK,SACL,IAAK,YACH,GAAIh88B,EAAY,OAEhB,GAAIiv8B,EACFhy4C,EAAMk94C,YAAYlL,OACb,CACL,IAAK+G,EAAuB,OAExB1H,EACFrx4C,EAAMo94C,WACG0B,GACT9+4C,EAAMm94C,YAEV,CAEA,MAEF,IAAK,MACH,GAAIn94C,EAAM274C,YAAa,OAEvB,GAAI5p6C,EAAMqkF,WAAai80C,IAAef,IAAoBS,GAE1DoI,GAAmBn64C,EAAMm74C,iBAAiBpJ,EAAeN,GACvD,OAGFzx4C,EAAM+84C,aAAahL,GAEnB,MAEF,IAAK,QACH,GAAsB,MAAlBhg6C,EAAM21f,QAGR,MAGF,GAAI2q6B,EAAY,CACd,IAAKN,EAAe,OACpB,GAAI/x4C,EAAM274C,YAAa,OAEvB374C,EAAM+84C,aAAahL,GAEnB,KACF,CAEA,OAEF,IAAK,SACCM,GACFry4C,EAAMg+E,SAAS,CACby9zC,0BAA0B,IAG5Bz74C,EAAM+u4C,cAAc,GAAI,CACtBnw3C,OAAQ,aACRi+3C,eAAgB958B,IAGlB/ic,EAAM884C,eACGgC,GAAezF,GACxBr54C,EAAMm94C,aAGR,MAEF,IAAK,IAEH,GAAIp68B,EACF,OAGF,IAAKsv8B,EAAY,CACfry4C,EAAM+94C,SAAS,SAEf,KACF,CAEA,IAAKhM,EAAe,OAEpB/x4C,EAAM+84C,aAAahL,GAEnB,MAEF,IAAK,UACCM,EACFry4C,EAAMg/4C,YAAY,MAElBh/4C,EAAM+94C,SAAS,QAGjB,MAEF,IAAK,YACC1L,EACFry4C,EAAMg/4C,YAAY,QAElBh/4C,EAAM+94C,SAAS,SAGjB,MAEF,IAAK,SACH,IAAK1L,EAAY,OAEjBry4C,EAAMg/4C,YAAY,UAElB,MAEF,IAAK,WACH,IAAK3M,EAAY,OAEjBry4C,EAAMg/4C,YAAY,YAElB,MAEF,IAAK,OACH,IAAK3M,EAAY,OAEjBry4C,EAAMg/4C,YAAY,SAElB,MAEF,IAAK,MACH,IAAK3M,EAAY,OAEjBry4C,EAAMg/4C,YAAY,QAElB,MAEF,QACE,OAGJjt6C,EAAMmnF,gBA3JN,CA4JF,EAEAl5D,EAAM+74C,eAAiB,iBAAmB/74C,EAAMzf,MAAM49b,cAAgBA,IACtEn+a,EAAM/gD,MAAMwy7C,aAAc,OAAW3Y,EAAOrk7C,OACrCurD,CACT,CA45BA,OA15BA,OAAaq74C,EAAQ,CAAC,CACpBlj7C,IAAK,oBACL1jB,MAAO,WACLnB,KAAK2r8C,4BACL3r8C,KAAK4r8C,wBAED5r8C,KAAKitC,MAAM445C,mBAAqB1g8C,UAAYA,SAASwnB,kBAEvDxnB,SAASwnB,iBAAiB,SAAU3sB,KAAKy/2C,UAAU,GAGjDz/2C,KAAKitC,MAAMojzC,WACbrw1C,KAAKop8C,YAET,GACC,CACDvk7C,IAAK,qBACL1jB,MAAO,SAA4Bk4Y,GACjC,IAAIwyjC,EAAe7r8C,KAAKitC,MACpBgigB,EAAa485B,EAAa585B,WAC1B8v5B,EAAa8M,EAAa9M,WAC1Bj70B,EAAY9jnB,KAAK2L,MAAMm4mB,WAG3BA,IAAc70E,GAAc51J,EAAU41J,YACtC60E,GAAai70B,IAAe1ljC,EAAU0ljC,aACpC/+7C,KAAKop8C,aAGHtl1B,GAAa70E,IAAe51J,EAAU41J,YAGxCjviB,KAAK0qI,SAAS,CACZo5e,WAAW,GACV9jnB,KAAKwp8C,aAINxp8C,KAAKip8C,aAAejp8C,KAAK+o8C,kBAAoB/o8C,KAAK2o8C,iCACpD,OAAe3o8C,KAAKip8C,YAAajp8C,KAAK+o8C,kBACtC/o8C,KAAK2o8C,+BAAgC,EAEzC,GACC,CACD9j7C,IAAK,uBACL1jB,MAAO,WACLnB,KAAK8r8C,2BACL9r8C,KAAK+r8C,uBACL5m8C,SAASkkB,oBAAoB,SAAUrpB,KAAKy/2C,UAAU,EACxD,GAIC,CACD561C,IAAK,aACL1jB,MAAO,WACLnB,KAAKitC,MAAMk+5C,YACb,GACC,CACDtm7C,IAAK,cACL1jB,MAAO,WACLnB,KAAKy77C,cAAc,GAAI,CACrBnw3C,OAAQ,aACRi+3C,eAAgBvp8C,KAAKitC,MAAMwid,aAE7Bzvf,KAAKitC,MAAMu85C,aACb,GACC,CACD3k7C,IAAK,gBACL1jB,MAAO,SAAuB8qJ,EAAUuxyC,GACtCx97C,KAAKitC,MAAMwu5C,cAAcxvyC,EAAUuxyC,EACrC,GAIC,CACD346C,IAAK,aACL1jB,MAAO,WACAnB,KAAKoj2C,UACVpj2C,KAAKoj2C,SAASty/B,OAChB,GACC,CACDjsV,IAAK,YACL1jB,MAAO,WACAnB,KAAKoj2C,UACVpj2C,KAAKoj2C,SAASn+kB,MAChB,GAEC,CACDpgwB,IAAK,WACL1jB,MAAO,SAAkBuq8C,GACvB,IAAIjxkC,EAASz6X,KAET4yL,EAAe5yL,KAAK2L,MACpBwy7C,EAAcvrwC,EAAaurwC,YAC3Br60B,EAAYlxb,EAAakxb,UACzB660B,EAAmB3+7C,KAAKoq8C,wBACxB4B,EAA8B,UAAhBN,EAA0B,EAAI/M,EAAiBt+7C,OAAS,EAE1E,IAAKL,KAAKitC,MAAM8w5C,QAAS,CACvB,IAAI9pkC,EAAgB0qkC,EAAiBn+7C,QAAQ297C,EAAY,IAErDlqkC,GAAiB,IACnB+3kC,EAAc/3kC,EAElB,CAGAj0X,KAAK2o8C,gCAAkC7k1B,GAAa9jnB,KAAKip8C,aACzDjp8C,KAAK0qI,SAAS,CACZy9zC,0BAA0B,EAC1BzJ,aAAc,KACdD,cAAeE,EAAiBqN,KAC/B,WACD,OAAOvxkC,EAAO0wkC,YAChB,GACF,GACC,CACDtm7C,IAAK,aACL1jB,MAAO,SAAoBwsH,GACzB,IAAIs1G,EAAejjO,KAAK2L,MACpBwy7C,EAAcl7tC,EAAak7tC,YAC3BO,EAAez7tC,EAAay7tC,aAEhC,GAAK1+7C,KAAKitC,MAAM8w5C,QAAhB,CACA/97C,KAAK0qI,SAAS,CACZ+zzC,cAAe,OAEjB,IAAIr9tB,EAAe+8tB,EAAY397C,QAAQk+7C,GAElCA,IACHt9tB,GAAgB,GAGlB,IAAI7uqB,EAAY4r4C,EAAY997C,OAAS,EACjC4r8C,GAAa,EACjB,GAAK9N,EAAY997C,OAAjB,CAEA,OAAQstH,GACN,IAAK,WAGDs+0C,EAFmB,IAAjB7quB,EAEU,GACe,IAAlBA,EAEG7uqB,EAEA6uqB,EAAe,EAG7B,MAEF,IAAK,OACCA,GAAgB,GAAKA,EAAe7uqB,IACtC054C,EAAY7quB,EAAe,GAMjCphuB,KAAK0qI,SAAS,CACZs9zC,eAA8B,IAAfiE,EACfvN,aAAcP,EAAY8N,IA1BG,CAZA,CAwCjC,GACC,CACDpn7C,IAAK,cACL1jB,MAAO,WACL,IAAIwsH,EAAYvtH,UAAUC,OAAS,QAAsB0tC,IAAjB3tC,UAAU,GAAmBA,UAAU,GAAK,QAChFg2pB,EAAWp2pB,KAAKitC,MAAMmpnB,SACtBqoyB,EAAgBz+7C,KAAK2L,MAAM8y7C,cAC3Bt16C,EAAUnpB,KAAKqq8C,sBACnB,GAAKlh7C,EAAQ9oB,OAAb,CACA,IAAI4r8C,EAAY,EAEZ7quB,EAAej4sB,EAAQ3oB,QAAQi+7C,GAE9BA,IACHr9tB,GAAgB,GAGA,OAAdzzmB,EACFs+0C,EAAY7quB,EAAe,EAAIA,EAAe,EAAIj4sB,EAAQ9oB,OAAS,EAC5C,SAAdstH,EACTs+0C,GAAa7quB,EAAe,GAAKj4sB,EAAQ9oB,OAClB,WAAdstH,GACTs+0C,EAAY7quB,EAAehrE,GACX,IAAG61yB,EAAY,GACR,aAAdt+0C,GACTs+0C,EAAY7quB,EAAehrE,GACXjtoB,EAAQ9oB,OAAS,IAAG4r8C,EAAY9i7C,EAAQ9oB,OAAS,GAC1C,SAAdstH,IACTs+0C,EAAY9i7C,EAAQ9oB,OAAS,GAG/BL,KAAK2o8C,+BAAgC,EACrC3o8C,KAAK0qI,SAAS,CACZ+zzC,cAAet16C,EAAQ8i7C,GACvBvN,aAAc,MA1BW,CA4B7B,GACC,CACD756C,IAAK,WACL1jB,MAGA,WAEE,OAAKnB,KAAKitC,MAAM8zN,MAOgB,mBAArB/gQ,KAAKitC,MAAM8zN,MACb/gQ,KAAKitC,MAAM8zN,MAAMgiH,IAKnB,QAAe,OAAe,CAAC,EAAGA,GAAe/iX,KAAKitC,MAAM8zN,OAZ1DgiH,CAaX,GACC,CACDl+V,IAAK,iBACL1jB,MAAO,WACL,IAAI0o8C,EAAa7p8C,KAAK6p8C,WAClBnpsC,EAAK1gQ,KAAK0gQ,GACV2qJ,EAAYrrZ,KAAKqrZ,UACjBnvR,EAAWl8H,KAAKk8H,SAChBut0C,EAAezp8C,KAAKyp8C,aACpBvq6B,EAAWl/hB,KAAKk/hB,SAChBjyf,EAAQjtC,KAAKitC,MACb8w5C,EAAU9w5C,EAAM8w5C,QAChBj/6B,EAAQ7xe,EAAM6xe,MACd31f,EAAU8jB,EAAM9jB,QAEpB,MAAO,CACL0g7C,WAAYA,EACZnpsC,GAAIA,EACJ2qJ,UAAWA,EACXnvR,SAAUA,EACVwzb,SANa1vjB,KAAK0vjB,WAOlBqu4B,QAASA,EACTj/6B,MAAOA,EACP31f,QAASA,EACTsg7C,aAAcA,EACd/L,YAAazw5C,EACbiyf,SAAUA,EACVn+R,MAAO/gQ,KAAKojkB,WAEhB,GACC,CACDv+iB,IAAK,WACL1jB,MAAO,WAEL,OADkBnB,KAAK2L,MAAMwy7C,YACV997C,OAAS,CAC9B,GACC,CACDwkB,IAAK,aACL1jB,MAAO,WACL,QAASnB,KAAKqq8C,sBAAsBhq8C,MACtC,GACC,CACDwkB,IAAK,cACL1jB,MAAO,WACL,IAAI+q8C,EAAels8C,KAAKitC,MACpBu+5C,EAAcU,EAAaV,YAC3BzN,EAAUmO,EAAanO,QAG3B,YAAoBhw5C,IAAhBy95C,EAAkCzN,EAC/ByN,CACT,GACC,CACD3m7C,IAAK,mBACL1jB,MAAO,SAA0B08D,EAAQsg4C,GACvC,OAAO6I,EAAkBhn8C,KAAKitC,MAAO4wB,EAAQsg4C,EAC/C,GACC,CACDt56C,IAAK,mBACL1jB,MAAO,SAA0B08D,EAAQsg4C,GACvC,OAAO8I,EAAkBjn8C,KAAKitC,MAAO4wB,EAAQsg4C,EAC/C,GACC,CACDt56C,IAAK,eACL1jB,MAAO,SAAsB08D,EAAQ4xb,GACnC,OAAOm48B,EAAc5n8C,KAAKitC,MAAO4wB,EAAQ4xb,EAC3C,GACC,CACD5qe,IAAK,oBACL1jB,MAAO,SAA2BqO,EAAM29B,GACtC,GAA4C,mBAAjCntC,KAAKitC,MAAMk/5C,kBAAkC,CACtD,IAAIC,EAAcps8C,KAAKitC,MAAMwid,WACzB488B,EAAers8C,KAAK2L,MAAMwy7C,YAC9B,OAAOn+7C,KAAKitC,MAAMk/5C,kBAAkB387C,EAAM,CACxC29B,QAASA,EACTsid,WAAY288B,EACZjO,YAAakO,GAEjB,CACE,OAAOrs8C,KAAK6+7C,eAAerv7C,EAE/B,GACC,CACDqV,IAAK,mBACL1jB,MAAO,SAA0BqO,GAC/B,OAAOxP,KAAKitC,MAAMo55C,iBAAiB727C,EACrC,GAIC,CACDqV,IAAK,4BACL1jB,MAGA,WACMgE,UAAYA,SAASwnB,mBACvBxnB,SAASwnB,iBAAiB,mBAAoB3sB,KAAK6q8C,oBAAoB,GACvE1l8C,SAASwnB,iBAAiB,iBAAkB3sB,KAAK8q8C,kBAAkB,GAEvE,GACC,CACDjm7C,IAAK,2BACL1jB,MAAO,WACDgE,UAAYA,SAASkkB,sBACvBlkB,SAASkkB,oBAAoB,mBAAoBrpB,KAAK6q8C,oBACtD1l8C,SAASkkB,oBAAoB,iBAAkBrpB,KAAK8q8C,kBAExD,GACC,CACDjm7C,IAAK,wBACL1jB,MAGA,WACMgE,UAAYA,SAASwnB,mBACvBxnB,SAASwnB,iBAAiB,aAAc3sB,KAAK6njB,cAAc,GAC3D1ijB,SAASwnB,iBAAiB,YAAa3sB,KAAK8njB,aAAa,GACzD3ijB,SAASwnB,iBAAiB,WAAY3sB,KAAKgojB,YAAY,GAE3D,GACC,CACDnjiB,IAAK,uBACL1jB,MAAO,WACDgE,UAAYA,SAASkkB,sBACvBlkB,SAASkkB,oBAAoB,aAAcrpB,KAAK6njB,cAChD1ijB,SAASkkB,oBAAoB,YAAarpB,KAAK8njB,aAC/C3ijB,SAASkkB,oBAAoB,WAAYrpB,KAAKgojB,YAElD,GACC,CACDnjiB,IAAK,cACL1jB,MAGA,WACE,IAAImr8C,EAAets8C,KAAKitC,MACpBgigB,EAAaq95B,EAAar95B,WAC1B6u5B,EAAewO,EAAaxO,aAC5ByO,EAAUD,EAAaC,QACvB988B,EAAa688B,EAAa788B,WAC1B42B,EAAWim7B,EAAajm7B,SACxBow0B,EAAO61G,EAAa71G,KACpBsoG,EAAauN,EAAavN,WAG1BvgM,EADsBx+vC,KAAKkq8C,gBACC1rM,MAE5BguM,EAAexs8C,KAAK2L,MACpBq87C,EAAgBwE,EAAaxE,cAC7BxJ,EAAgBgO,EAAahO,cAC7B8J,EAActo8C,KAAKso8C,YACnB/86C,EAAKgh7C,GAAWvs8C,KAAKiq8C,aAAa,SAElCwC,GAAiB,QAAe,QAAe,OAAe,CAChE,oBAAqB,OACrB,gBAAiB1N,EACjB,iBAAiB,EACjB,oBAAqB/+7C,KAAKitC,MAAM,qBAChC,eAAgBjtC,KAAKitC,MAAM,gBAC3B,aAAcjtC,KAAKitC,MAAM,cACzB,kBAAmBjtC,KAAKitC,MAAM,mBAC9Bu1e,KAAM,YACLu86B,GAAc,CACf,gBAAiB/+7C,KAAKiq8C,aAAa,WACnC,YAAajq8C,KAAKiq8C,aAAa,cAC5BnM,GAAgB,CACnB,iBAAiB,IACf997C,KAAK0vjB,WAAsG,yBAAxF8u4B,aAAqD,EAASA,EAAclz3C,SAAqC,CACtI,mBAAoBtrE,KAAKiq8C,aAAa,gBACpC,CACF,mBAAoBjq8C,KAAKiq8C,aAAa,iBAGxC,OAAKnM,EAgBe,gBAAoBt/L,GAAO,OAAS,CAAC,EAAG8pM,EAAa,CACvEoE,eAAgB,OAChBC,aAAc,MACdC,YAAa,MACbrh7C,GAAIA,EACJit1C,SAAUx42C,KAAKmp8C,YACfl65B,WAAYA,EACZl7I,SAAUi0iC,EACVl4H,OAAQ9v0C,KAAKqr8C,YACbnm3C,SAAUllF,KAAKkr8C,kBACf9uyB,QAASp8pB,KAAKor8C,aACdyB,WAAY,QACZxm7B,SAAUA,EACVow0B,KAAMA,EACNlq1C,KAAM,OACNpL,MAAOsuf,GACNg98B,IA9BmB,gBAAoB7L,GAAY,OAAS,CAC3Dr16C,GAAIA,EACJit1C,SAAUx42C,KAAKmp8C,YACfr5H,OAAQ9v0C,KAAKqr8C,YACbnm3C,SAAU,IACVk3kB,QAASp8pB,KAAKor8C,aACd96lC,SAAU2+L,EACV5oB,SAAUA,EACVym7B,UAAW,OACXr2G,KAAMA,EACNt11C,MAAO,IACNsr8C,GAoBP,GACC,CACD5n7C,IAAK,2BACL1jB,MAAO,WACL,IAAIuh3C,EAAS1i3C,KAET+s8C,EAAuB/s8C,KAAKkq8C,gBAC5B8C,EAAaD,EAAqBC,WAClCC,EAAsBF,EAAqBE,oBAC3CC,EAAkBH,EAAqBG,gBACvCC,EAAmBJ,EAAqBI,iBACxCC,EAAcL,EAAqBK,YACnCC,EAAcN,EAAqBM,YAEnC/E,EAActo8C,KAAKso8C,YACnBgF,EAAett8C,KAAKitC,MACpB645C,EAA2BwH,EAAaxH,yBACxC725B,EAAaq+5B,EAAar+5B,WAC1B8u5B,EAAUuP,EAAavP,QACvBtu8B,EAAa698B,EAAa798B,WAC1Bj+b,EAAc874C,EAAa974C,YAC3B+74C,EAAevt8C,KAAK2L,MACpBwy7C,EAAcoP,EAAapP,YAC3BO,EAAe6O,EAAa7O,aAC5B560B,EAAYyp1B,EAAazp1B,UAE7B,IAAK9jnB,KAAK0vjB,aAAeo24B,EACvB,OAAOr28B,EAAa,KAAoB,gBAAoB498B,GAAa,OAAS,CAAC,EAAG/E,EAAa,CACjGzj7C,IAAK,cACLoqhB,WAAYA,EACZ60E,UAAWA,EACX0p1B,WAAY,CACVji7C,GAAIvrB,KAAKiq8C,aAAa,kBAEtBz44C,GAGN,GAAIus4C,EACF,OAAOI,EAAY9u6C,KAAI,SAAU+wgB,EAAKpjhB,GACpC,IAAIyw7C,EAAkBrt6B,IAAQs+5B,EAC1B756C,EAAM,GAAG7iB,OAAO0g3C,EAAOm8E,eAAez+5B,GAAM,KAAKp+hB,OAAO0g3C,EAAO4jF,eAAelm6B,IAClF,OAAoB,gBAAoB4s6B,GAAY,OAAS,CAAC,EAAG1E,EAAa,CAC5Ep6sC,WAAY,CACVw/sC,UAAWT,EACXvlqB,MAAOwlqB,EACPS,OAAQR,GAEVrp1B,UAAW2p1B,EACXx+5B,WAAYA,EACZpqhB,IAAKA,EACL7H,MAAOA,EACP4w7C,YAAa,CACX5v6C,QAAS,WACP,OAAO0k1C,EAAOknF,YAAYxp6B,EAC5B,EACA4nB,WAAY,WACV,OAAO06zB,EAAOknF,YAAYxp6B,EAC5B,EACAjmJ,YAAa,SAAqBh7Y,GAChCA,EAAEymH,gBACJ,GAEFp2G,KAAM4whB,IACJsi1B,EAAOypF,kBAAkB/r6B,EAAK,SACpC,IAGF,GAAI3wC,EACF,OAAO,KAGT,IAAI208B,EAAcjG,EAAY,GAC9B,OAAoB,gBAAoBiP,GAAa,OAAS,CAAC,EAAG9E,EAAa,CAC7E947C,KAAM407C,EACNn15B,WAAYA,IACVjviB,KAAKms8C,kBAAkB/H,EAAa,SAC1C,GACC,CACDv/6C,IAAK,uBACL1jB,MAAO,WACL,IACI0s8C,EADuB7t8C,KAAKkq8C,gBACU2D,eAEtCvF,EAActo8C,KAAKso8C,YACnBwF,EAAgB9t8C,KAAKitC,MACrBgigB,EAAa6+5B,EAAc7+5B,WAC3B7tX,EAAY0sxC,EAAc1sxC,UAC1B0ic,EAAY9jnB,KAAK2L,MAAMm4mB,UAE3B,IAAK9jnB,KAAKwr8C,gBAAkBqC,GAAkB5+5B,IAAejviB,KAAK0vjB,YAActuY,EAC9E,OAAO,KAGT,IAAIosxC,EAAa,CACfrzjC,YAAan6Y,KAAK4q8C,0BAClB5i5B,WAAYhojB,KAAKgr8C,yBACjB,cAAe,QAEjB,OAAoB,gBAAoB6C,GAAgB,OAAS,CAAC,EAAGvF,EAAa,CAChFkF,WAAYA,EACZ1p1B,UAAWA,IAEf,GACC,CACDj/lB,IAAK,yBACL1jB,MAAO,WACL,IACI4s8C,EADuB/t8C,KAAKkq8C,gBACY6D,iBAExCzF,EAActo8C,KAAKso8C,YACnB0F,EAAgBhu8C,KAAKitC,MACrBgigB,EAAa++5B,EAAc/+5B,WAC3B7tX,EAAY4sxC,EAAc5sxC,UAC1B0ic,EAAY9jnB,KAAK2L,MAAMm4mB,UAC3B,OAAKiq1B,GAAqB3sxC,EAIN,gBAAoB2sxC,GAAkB,OAAS,CAAC,EAAGzF,EAAa,CAClFkF,WAJe,CACf,cAAe,QAIfv+5B,WAAYA,EACZ60E,UAAWA,KAP+B,IAS9C,GACC,CACDj/lB,IAAK,2BACL1jB,MAAO,WACL,IAAI8s8C,EAAuBju8C,KAAKkq8C,gBAC5BgE,EAAoBD,EAAqBC,kBACzCC,EAAqBF,EAAqBE,mBAG9C,IAAKD,IAAsBC,EAAoB,OAAO,KACtD,IAAI7F,EAActo8C,KAAKso8C,YACnBr55B,EAAajviB,KAAKitC,MAAMgigB,WACxB60E,EAAY9jnB,KAAK2L,MAAMm4mB,UAC3B,OAAoB,gBAAoBqq1B,GAAoB,OAAS,CAAC,EAAG7F,EAAa,CACpFr55B,WAAYA,EACZ60E,UAAWA,IAEf,GACC,CACDj/lB,IAAK,0BACL1jB,MAAO,WACL,IACI+s8C,EADuBlu8C,KAAKkq8C,gBACagE,kBAE7C,IAAKA,EAAmB,OAAO,KAC/B,IAAI5F,EAActo8C,KAAKso8C,YACnBr55B,EAAajviB,KAAKitC,MAAMgigB,WACxB60E,EAAY9jnB,KAAK2L,MAAMm4mB,UACvB0p1B,EAAa,CACfrzjC,YAAan6Y,KAAK0q8C,6BAClB1i5B,WAAYhojB,KAAKir8C,4BACjB,cAAe,QAEjB,OAAoB,gBAAoBiD,GAAmB,OAAS,CAAC,EAAG5F,EAAa,CACnFkF,WAAYA,EACZv+5B,WAAYA,EACZ60E,UAAWA,IAEf,GACC,CACDj/lB,IAAK,aACL1jB,MAAO,WACL,IAAIit8C,EAASpu8C,KAETqu8C,EAAuBru8C,KAAKkq8C,gBAC5B7ksB,EAAQgpsB,EAAqBhpsB,MAC7BipsB,EAAeD,EAAqBC,aACpC3uH,EAAO0uH,EAAqB1uH,KAC5B4uH,EAAWF,EAAqBE,SAChCC,EAAaH,EAAqBG,WAClCC,EAAiBJ,EAAqBI,eACtCC,EAAmBL,EAAqBK,iBACxCC,EAASN,EAAqBM,OAE9BrG,EAActo8C,KAAKso8C,YACnB7J,EAAgBz+7C,KAAK2L,MAAM8y7C,cAC3BmQ,EAAgB5u8C,KAAKitC,MACrB045C,EAAoBiJ,EAAcjJ,kBAClCl28B,EAAam/8B,EAAcn/8B,WAC3BruU,EAAYwtxC,EAAcxtxC,UAC1B0ixC,EAAiB8K,EAAc9K,eAC/B0C,EAAgBoI,EAAcpI,cAC9BD,EAAgBqI,EAAcrI,cAC9BxH,EAAa6P,EAAc7P,WAC3B0H,EAAgBmI,EAAcnI,cAC9BC,EAAekI,EAAclI,aAC7BmI,EAAmBD,EAAcC,iBACjClI,EAAwBiI,EAAcjI,sBACtCC,EAA2BgI,EAAchI,yBACzCzC,EAAmByK,EAAczK,iBACjC2K,EAAoBF,EAAcE,kBAClCC,EAAuBH,EAAcG,qBACzC,IAAKhQ,EAAY,OAAO,KAExB,IAoCIiQ,EApCA1g1C,EAAS,SAAgBrhF,EAAO1hB,GAClC,IAAIhf,EAAO0gC,EAAM1gC,KACbiD,EAAOy9B,EAAMz9B,KACby/hB,EAAahigB,EAAMgigB,WACnB7ggB,EAAanB,EAAMmB,WACnB/sC,EAAQ4rC,EAAM5rC,MACdF,EAAQ8rC,EAAM9rC,MACd2inB,EAAY260B,IAAkBjv7C,EAC9ByrI,EAAUg0Z,OAAalhgB,EAAY,WACrC,OAAOqg6C,EAAO9C,cAAc977C,EAC9B,EACI4hY,EAAW69J,OAAalhgB,EAAY,WACtC,OAAOqg6C,EAAO3E,aAAaj67C,EAC7B,EACIwy9B,EAAW,GAAGhg+B,OAAOos8C,EAAOnE,aAAa,UAAW,KAAKjo8C,OAAOupB,GAChEii7C,EAAa,CACfji7C,GAAIy28B,EACJhk8B,QAASozW,EACT4I,YAAa/+P,EACbi/P,YAAaj/P,EACborY,UAAW,GAEb,OAAoB,gBAAoBso7B,GAAQ,OAAS,CAAC,EAAGrG,EAAa,CACxEkF,WAAYA,EACZh+7C,KAAMA,EACNy/hB,WAAYA,EACZ7ggB,WAAYA,EACZvpB,IAAKm98B,EACL3g+B,MAAOA,EACPkL,KAAMA,EACNpL,MAAOA,EACP2inB,UAAWA,EACX00vB,SAAU10vB,EAAYsq1B,EAAOpF,yBAAsBj75C,IACjDqg6C,EAAOjC,kBAAkBl/5C,EAAMz9B,KAAM,QAC3C,EAIA,GAAIxP,KAAKiv8C,aACPD,EAAShv8C,KAAKmq8C,wBAAwB966C,KAAI,SAAU+xB,GAClD,GAAkB,UAAdA,EAAK70C,KAAkB,CACzB,IAAIk4I,EAAQrjG,EAAK5xC,KACb2Z,EAAUi4B,EAAKj4B,QACfw1pC,EAAav9nC,EAAKpkC,MAClB45d,EAAU,GAAG50e,OAAOos8C,EAAOnE,aAAa,SAAU,KAAKjo8C,OAAO28qC,GAC9DuwR,EAAY,GAAGlt8C,OAAO40e,EAAS,YACnC,OAAoB,gBAAoByuR,GAAO,OAAS,CAAC,EAAGijsB,EAAa,CACvEzj7C,IAAK+xd,EACLpne,KAAMi1I,EACNt7H,QAASA,EACTgm7C,QAASb,EACTc,aAAc,CACZ7j7C,GAAI2j7C,EACJ1/7C,KAAM4xC,EAAK5xC,MAEbnO,MAAO+s8C,EAAO/H,iBAAiBjl5C,EAAK5xC,QAClC4xC,EAAKj4B,QAAQkG,KAAI,SAAUwuC,GAC7B,OAAOywD,EAAOzwD,EAAQ,GAAG77D,OAAO28qC,EAAY,KAAK38qC,OAAO67D,EAAO7gD,OACjE,IACF,CAAO,GAAkB,WAAdokC,EAAK70C,KACd,OAAO+hH,EAAOltE,EAAM,GAAGp/C,OAAOo/C,EAAKpkC,OAEvC,SACK,GAAIokK,EAAW,CACpB,IAAIrvJ,EAAU+x6C,EAAe,CAC3Br08B,WAAYA,IAEd,GAAgB,OAAZ19d,EAAkB,OAAO,KAC7Bi96C,EAAsB,gBAAoBP,EAAgBnG,EAAav26C,EACzE,KAAO,CACL,IAAIs96C,EAAWlL,EAAiB,CAC9B108B,WAAYA,IAGd,GAAiB,OAAb4/8B,EAAmB,OAAO,KAC9BL,EAAsB,gBAAoBN,EAAkBpG,EAAa+G,EAC3E,CAEA,IAAIC,EAAqB,CACvB9I,cAAeA,EACfD,cAAeA,EACfE,cAAeA,EACfC,aAAcA,EACdE,yBAA0BA,GAExB2I,EAA2B,gBAAoB,EAAA1p8C,GAAY,OAAS,CAAC,EAAGyi8C,EAAagH,IAAqB,SAAUr/sC,GACtH,IAAIruN,EAAMquN,EAAMruN,IACZ4t6C,EAAoBv/sC,EAAMw/sC,YAC1Bpk8B,EAAYmk8B,EAAkBnk8B,UAC9Bl7V,EAAYq/xC,EAAkBr/xC,UAClC,OAAoB,gBAAoBwvqC,GAAM,OAAS,CAAC,EAAG2oH,EAAagH,EAAoB,CAC1F92F,SAAU520C,EACV4r6C,WAAY,CACVrzjC,YAAai0jC,EAAO9D,gBACpBtwjC,YAAao0jC,EAAO7D,gBACpBh/6C,GAAI6i7C,EAAOnE,aAAa,YAE1B7oxC,UAAWA,EACXiqV,UAAWA,IACI,gBAAoBq27B,EAAe,CAClDG,eAAgB8D,EAChB1D,YAAa6M,EACb/M,eAAgBgN,EAChBpN,YAAagF,IACZ,SAAU+I,GACX,OAAoB,gBAAoBnB,GAAU,OAAS,CAAC,EAAGjG,EAAa,CAC1E9vF,SAAU,SAAkBtt1C,GAC1Bkj7C,EAAOlF,eAAeh+6C,GAEtBwk7C,EAAgBxk7C,EAClB,EACAk2J,UAAWA,EACXjR,UAAWA,EACXsuxC,cAAeA,IACbuQ,EACN,IACF,IAIA,OAAOH,GAAqC,UAAjBnI,EAAwC,gBAAoB8H,GAAY,OAAS,CAAC,EAAGlG,EAAa,CAC3HqH,SAAUd,EACVe,eAAgB5v8C,KAAK6o8C,WACrBpC,cAAeA,EACfC,aAAcA,IACZ6I,GAAeA,CACrB,GACC,CACD1q7C,IAAK,kBACL1jB,MAAO,WACL,IAAI0u8C,EAAS7v8C,KAET8v8C,EAAgB9v8C,KAAKitC,MACrBgvN,EAAY6zsC,EAAc7zsC,UAC1BgzS,EAAa6g6B,EAAc7g6B,WAC3B8u5B,EAAU+R,EAAc/R,QACxBrz7C,EAAOol8C,EAAcpl8C,KACrByz7C,EAAcn+7C,KAAK2L,MAAMwy7C,YAC7B,GAAKzz7C,IAAQukiB,EAAb,CAEA,GAAI8u5B,EAAS,CACX,GAAI9hsC,EAAW,CACb,IAAI96P,EAAQg97C,EAAY9u6C,KAAI,SAAU+wgB,GACpC,OAAOyv6B,EAAOvJ,eAAelm6B,EAC/B,IAAGvzhB,KAAKovP,GACR,OAAoB,gBAAoB,QAAS,CAC/CvxP,KAAMA,EACN6B,KAAM,SACNpL,MAAOA,GAEX,CACE,IAAIsvD,EAAQ0t4C,EAAY997C,OAAS,EAAI897C,EAAY9u6C,KAAI,SAAU+wgB,EAAKx/hB,GAClE,OAAoB,gBAAoB,QAAS,CAC/CikB,IAAK,KAAK7iB,OAAOpB,GACjB8J,KAAMA,EACN6B,KAAM,SACNpL,MAAO0u8C,EAAOvJ,eAAelm6B,IAEjC,IAAkB,gBAAoB,QAAS,CAC7C11hB,KAAMA,EACN6B,KAAM,WAER,OAAoB,gBAAoB,MAAO,KAAMkkD,EAEzD,CACE,IAAItqC,EAASg46C,EAAY,GAAKn+7C,KAAKsm8C,eAAenI,EAAY,IAAM,GAEpE,OAAoB,gBAAoB,QAAS,CAC/Czz7C,KAAMA,EACN6B,KAAM,SACNpL,MAAOglB,GAhCoB,CAmCjC,GACC,CACDtB,IAAK,mBACL1jB,MAAO,WACL,IAAImn8C,EAActo8C,KAAKso8C,YACnByH,EAAe/v8C,KAAK2L,MACpB6y7C,EAAgBuR,EAAavR,cAC7BC,EAAgBsR,EAAatR,cAC7BC,EAAeqR,EAAarR,aAC5B560B,EAAYis1B,EAAajs1B,UACzBq60B,EAAc4R,EAAa5R,YAC3BQ,EAAmB3+7C,KAAKqq8C,sBAC5B,OAAoB,gBAAoB9L,GAAY,OAAS,CAAC,EAAG+J,EAAa,CAC5E/86C,GAAIvrB,KAAKiq8C,aAAa,eACtBzL,cAAeA,EACfC,cAAeA,EACfC,aAAcA,EACd560B,UAAWA,EACXq60B,YAAaA,EACbQ,iBAAkBA,IAEtB,GACC,CACD956C,IAAK,SACL1jB,MAAO,WACL,IAAI6u8C,EAAuBhw8C,KAAKkq8C,gBAC5BhqH,EAAU8vH,EAAqB9vH,QAC/B+vH,EAAsBD,EAAqBC,oBAC3CC,EAAkBF,EAAqBE,gBACvCC,EAAiBH,EAAqBG,eAEtCC,EAAgBpw8C,KAAKitC,MACrB2iD,EAAYwg3C,EAAcxg3C,UAC1BrkE,EAAK6k7C,EAAc7k7C,GACnB0jhB,EAAamh6B,EAAcnh6B,WAC3B8v5B,EAAaqR,EAAcrR,WAC3Bj70B,EAAY9jnB,KAAK2L,MAAMm4mB,UACvBwk1B,EAActo8C,KAAKso8C,YAActo8C,KAAKqw8C,iBAC1C,OAAoB,gBAAoBH,GAAiB,OAAS,CAAC,EAAG5H,EAAa,CACjF142C,UAAWA,EACX492C,WAAY,CACVji7C,GAAIA,EACJ2sgB,UAAWl4hB,KAAKk4hB,WAElB+W,WAAYA,EACZ60E,UAAWA,IACT9jnB,KAAKsw8C,mBAAiC,gBAAoBpwH,GAAS,OAAS,CAAC,EAAGooH,EAAa,CAC/F9vF,SAAUx42C,KAAK8o8C,cACf0E,WAAY,CACVrzjC,YAAan6Y,KAAKwq8C,mBAClBxi5B,WAAYhojB,KAAK+q8C,mBAEnB975B,WAAYA,EACZ60E,UAAWA,EACXi70B,WAAYA,IACG,gBAAoBoR,GAAgB,OAAS,CAAC,EAAG7H,EAAa,CAC7Er55B,WAAYA,IACVjviB,KAAKuw8C,2BAA4Bvw8C,KAAKww8C,eAA6B,gBAAoBP,GAAqB,OAAS,CAAC,EAAG3H,EAAa,CACxIr55B,WAAYA,IACVjviB,KAAKyw8C,uBAAwBzw8C,KAAK0w8C,yBAA0B1w8C,KAAK2w8C,2BAA4B3w8C,KAAK4w8C,4BAA6B5w8C,KAAK6w8C,aAAc7w8C,KAAK8w8C,kBAC7J,IACE,CAAC,CACHjs7C,IAAK,2BACL1jB,MAAO,SAAkC8rC,EAAOthC,GAC9C,IAAI0tY,EAAY1tY,EAAM0tY,UAClB4ujC,EAA0Bt87C,EAAMs87C,wBAChCE,EAA2Bx87C,EAAMw87C,yBACjC3J,EAAgB7y7C,EAAM6y7C,cACtB160B,EAAYn4mB,EAAMm4mB,UAClBok1B,EAAiBv87C,EAAMu87C,eACvB/+6C,EAAU8jB,EAAM9jB,QAChBhoB,EAAQ8rC,EAAM9rC,MACd497C,EAAa9x5C,EAAM8x5C,WACnBtv8B,EAAaxid,EAAMwid,WACnBsu8B,EAAU9w5C,EAAM8w5C,QAChBI,GAAc,OAAWh97C,GACzB4v8C,EAAsB,CAAC,EAE3B,GAAI13jC,IAAcl4Y,IAAUk4Y,EAAUl4Y,OAASgoB,IAAYkwX,EAAUlwX,SAAW416C,IAAe1ljC,EAAU0ljC,YAActv8B,IAAep2G,EAAUo2G,YAAa,CAC3J,IAAIkv8B,EAAmBI,EArmD/B,SAA+B9x5C,EAAOkx5C,GACpC,OAAOqJ,EAA4CN,EAAwBj65C,EAAOkx5C,GACpF,CAmmD4CiM,CAAsBn95C,EAAOkx5C,GAAe,GAC5EO,EAAeuJ,EAplD3B,SAA6Bt87C,EAAOql8C,GAClC,IAAItS,EAAe/y7C,EAAM+y7C,aAErBuS,EADkBtl8C,EAAMwy7C,YACW397C,QAAQk+7C,GAE/C,GAAIuS,GAAoB,EAAG,CAGzB,GAFuBD,EAAgBxw8C,QAAQk+7C,IAEvB,EAEtB,OAAOA,EACF,GAAIuS,EAAmBD,EAAgB3w8C,OAG5C,OAAO2w8C,EAAgBC,EAE3B,CAEA,OAAO,IACT,CAikDqDC,CAAoBvl8C,EAAOwy7C,GAAe,KACnFM,EAhkDZ,SAA8B9y7C,EAAOwd,GACnC,IAAIgo7C,EAAoBxl8C,EAAM8y7C,cAC9B,OAAO0S,GAAqBho7C,EAAQ3oB,QAAQ2w8C,IAAsB,EAAIA,EAAoBho7C,EAAQ,EACpG,CA6jD4Bio7C,CAAqBzl8C,EAAOgz7C,GAChDoS,EAAsB,CACpB5S,YAAaA,EACbM,cAAeA,EACfC,aAAcA,EACduJ,yBAAyB,EAE7B,CAGA,IAAIoJ,EAAoD,MAA5BlJ,GAAoCl75C,IAAUosW,EAAY,CACpF2ujC,cAAeG,EACfA,8BAA0Bp65C,GACxB,CAAC,EACDuj6C,EAAmB9S,EACnB+S,EAAezt1B,GAAaok1B,EAmBhC,OAjBIpk1B,IAAcyt1B,IAGhBD,EAAmB,CACjBnw8C,OAAO,OAAa487C,EAASI,EAAaA,EAAY,IAAM,MAC5Dh16C,QAASg16C,EACT7y3C,OAAQ,uBAEVim4C,GAAgBrJ,GAK2E,yBAAxF1J,aAAqD,EAASA,EAAclz3C,UAC/Egm4C,EAAmB,OAGd,QAAe,QAAe,OAAe,CAAC,EAAGP,GAAsBM,GAAwB,CAAC,EAAG,CACxGh4jC,UAAWpsW,EACXux5C,cAAe8S,EACfpJ,eAAgBqJ,GAEpB,KAGKxJ,CACT,CAhkD0B,CAgkDxB,EAAAr7yC,WAEFq7yC,GAAO7tzC,aAAeA,kgBClrFtB,SAASw1O,EAAgBxiK,EAAKroM,EAAK1jB,GAYjC,OAXI0jB,KAAOqoM,EACT5tN,OAAO4D,eAAegqN,EAAKroM,EAAK,CAC9B1jB,MAAOA,EACPwC,YAAY,EACZG,cAAc,EACdC,UAAU,IAGZmpN,EAAIroM,GAAO1jB,EAGN+rN,CACT,CAEA,SAASmoK,EAAQj4U,EAAQk4U,GACvB,IAAIhiX,EAAOhU,OAAOgU,KAAK8pC,GAEvB,GAAI99C,OAAOmB,sBAAuB,CAChC,IAAI80X,EAAUj2X,OAAOmB,sBAAsB28C,GAEvCk4U,IACFC,EAAUA,EAAQ1oW,QAAO,SAAU2oW,GACjC,OAAOl2X,OAAOmE,yBAAyB25C,EAAQo4U,GAAK7xX,UACtD,KAGF2P,EAAKzR,KAAKtB,MAAM+S,EAAMiiX,EACxB,CAEA,OAAOjiX,CACT,CAEA,SAASk+7C,EAAe1h8C,GACtB,IAAK,IAAIlP,EAAI,EAAGA,EAAIR,UAAUC,OAAQO,IAAK,CACzC,IAAIiH,EAAyB,MAAhBzH,UAAUQ,GAAaR,UAAUQ,GAAK,CAAC,EAEhDA,EAAI,EACNy0X,EAAQ/1X,OAAOuI,IAAS,GAAMqd,SAAQ,SAAUL,GAC9C6qW,EAAgB5/W,EAAQ+U,EAAKhd,EAAOgd,GACtC,IACSvlB,OAAOq+B,0BAChBr+B,OAAOkU,iBAAiB1D,EAAQxQ,OAAOq+B,0BAA0B91B,IAEjEwtX,EAAQ/1X,OAAOuI,IAASqd,SAAQ,SAAUL,GACxCvlB,OAAO4D,eAAe4M,EAAQ+U,EAAKvlB,OAAOmE,yBAAyBoE,EAAQgd,GAC7E,GAEJ,CAEA,OAAO/U,CACT,CAEA,SAASm4W,EAAgB3nX,GAIvB,OAHA2nX,EAAkB3oX,OAAOC,eAAiBD,OAAO2b,eAAiB,SAAyB3a,GACzF,OAAOA,EAAEd,WAAaF,OAAO2b,eAAe3a,EAC9C,EACO2nX,EAAgB3nX,EACzB,CA+BA,SAASmx8C,EAAahplC,GACpB,IAAIix+B,EA9BN,WACE,GAAuB,oBAAZlh1C,UAA4BA,QAAQ+Q,UAAW,OAAO,EACjE,GAAI/Q,QAAQ+Q,UAAU3iB,KAAM,OAAO,EACnC,GAAqB,mBAAV4iB,MAAsB,OAAO,EAExC,IAEE,OADAvW,QAAQvT,UAAUwJ,QAAQtJ,KAAK4Y,QAAQ+Q,UAAUtW,QAAS,IAAI,WAAa,MACpE,CACT,CAAE,MAAO9T,GACP,OAAO,CACT,CACF,CAmBkCypX,GAChC,OAAO,WACL,IACIplW,EADAmlW,EAAQV,EAAgBQ,GAG5B,GAAIix+B,EAA2B,CAC7B,IAAI7w+B,EAAYZ,EAAgBjoX,MAAMC,YACtCujB,EAAShL,QAAQ+Q,UAAUo/V,EAAOvoX,UAAWyoX,EAC/C,MACErlW,EAASmlW,EAAMpoX,MAAMP,KAAMI,WAG7B,OArBJ,SAAoCgC,EAAMxC,GACxC,OAAIA,GAAyB,iBAATA,GAAqC,mBAATA,EATlD,SAAgCwC,GAC9B,QAAa,IAATA,EACF,MAAM,IAAI4mB,eAAe,6DAG3B,OAAO5mB,CACT,CAOS4lX,CAAuB5lX,GAHrBxC,CAIX,CAeWkpX,CAA2B9oX,KAAMwjB,EAC1C,CACF,CAEA,IAAIku7C,EAAc,CAAC,YAAa,aAAc,KAAM,YAAa,WAAY,WAAY,UAAW,QAAS,UAAW,eAAgB,cAAe,WAAY,SAI/J5u5C,EAAO,WAAiB,EAc5B,SAAS6u5C,EAAkBp/6C,EAAQ7nB,GACjC,OAAKA,EAEkB,MAAZA,EAAK,GACP6nB,EAAS7nB,EAET6nB,EAAS,KAAO7nB,EAJhB6nB,CAMX,CAEA,SAASsyO,EAAWtyO,EAAQ5mB,EAAOikF,GACjC,IAAI6uI,EAAM,CAAC7uI,GAEX,GAAIjkF,GAAS4mB,EACX,IAAK,IAAI1N,KAAOlZ,EACVA,EAAMhM,eAAeklB,IAAQlZ,EAAMkZ,IACrC45M,EAAI58N,KAAK,GAAGG,OAAO2v8C,EAAkBp/6C,EAAQ1N,KAKnD,OAAO45M,EAAI5xM,QAAO,SAAUjsB,GAC1B,OAAOA,CACT,IAAGyuB,KAAI,SAAUzuB,GACf,OAAOd,OAAOc,GAAGyxB,MACnB,IAAGxlB,KAAK,IACV,CAIA,IAAI+4iB,EAAa,SAAoBzkjB,GACnC,OAwMe+1C,EAxMH/1C,EAyML1B,MAAMkS,QAAQulC,GAzMM/1C,EAAM0rB,OAAO5Z,SACjB,YAAnB,OAAQ9R,IAAiC,OAAVA,EAAuB,CAACA,GACpD,GAsMT,IAAiB+1C,CArMjB,EAII065C,EAAmB,SAA0B3k6C,GAiB/C,OAfAA,EAAM2iD,UACF3iD,EAAM485C,WACN585C,EAAMyzN,GACNzzN,EAAMo+W,UACNp+W,EAAMivF,SACNjvF,EAAMyihB,SACNzihB,EAAM8w5C,QACN9w5C,EAAM6xe,MACN7xe,EAAM9jB,QACN8jB,EAAMw85C,aACNx85C,EAAMyw5C,YACNzw5C,EAAMiyf,SACNjyf,EAAM8zN,MAGHywsC,EAAe,CAAC,GAFF,OAAyBvk6C,EAAOyk6C,GAGvD,EAIA,SAASxG,EAAkBz78B,EAAY+t8B,EAAY/B,GACjD,GAAIA,EAAe,CACjB,IAAIoW,EAAYpW,EAAchs8B,EAAY+t8B,GAE1C,GAAyB,iBAAdqU,EAAwB,OAAOA,CAC5C,CAEA,OAAOpi9B,CACT,CAIA,SAASqi9B,EAAkBj4zC,GACzB,MAAO,CAAC10I,SAASk+F,gBAAiBl+F,SAAS4rB,KAAM7uB,QAAQ1B,QAAQq5I,IAAO,CAC1E,CAYA,SAAS6zhB,EAAa7zhB,GACpB,OAAIi4zC,EAAkBj4zC,GACb33I,OAAOs/F,YAGTq4C,EAAG32C,SACZ,CACA,SAASg5f,EAASrid,EAAI/6G,GAEhBgz6C,EAAkBj4zC,GACpB33I,OAAOg6lB,SAAS,EAAGp9jB,GAIrB+6G,EAAG32C,UAAYpkE,CACjB,CAoCA,SAASiz6C,EAAiBhm3C,EAAS9yE,GACjC,IAAIosC,EAAWjlD,UAAUC,OAAS,QAAsB0tC,IAAjB3tC,UAAU,GAAmBA,UAAU,GAAK,IAC/E8oB,EAAW9oB,UAAUC,OAAS,QAAsB0tC,IAAjB3tC,UAAU,GAAmBA,UAAU,GAAK0iD,EAC/Etc,EAAQknoB,EAAa3hlB,GACrB0uZ,EAASxhe,EAAKutB,EAEdytJ,EAAc,GAElB,SAAS+9wC,IAEP,IAdkB5y8C,EAcds+K,EAAuC+8T,IAbhCr7e,GADOA,EAalB60L,GAJc,IAKqC5uI,EAb5B,GAAKjmD,EAAIA,EAAI,GAaAonC,EACpC01jB,EAASnwgB,EAAS2xF,GAEduW,EAAc5uI,EAChBnjD,OAAOo0G,sBAAsB071C,GAE7B9o7C,EAAS6iE,EAEb,CAEAim3C,EACF,CAGA,SAASC,EAAel5lB,EAAQvsV,GAC9B,IAAI0l7B,EAAWn5lB,EAAOplxB,wBAClBw+2C,EAAc3l7B,EAAU74b,wBACxBy+2C,EAAa5l7B,EAAU7rf,aAAe,EAEtCwx6C,EAAYry2C,OAASsy2C,EAAaF,EAASpy2C,OAC7Co8f,EAAS68Q,EAAQl22B,KAAKgL,IAAI2+gB,EAAUjrb,UAAYirb,EAAUnsY,aAAe04tB,EAAOp40B,aAAeyx6C,EAAYr5lB,EAAO51wB,eACzGgv2C,EAAYrz6C,IAAMsz6C,EAAaF,EAASpz6C,KACjDo9jB,EAAS68Q,EAAQl22B,KAAK8K,IAAI6+gB,EAAUjrb,UAAY6w2C,EAAY,GAEhE,CAmBA,SAASC,IACP,IAEE,OADAlt8C,SAASykB,YAAY,eACd,CACT,CAAE,MAAOzqB,GACP,OAAO,CACT,CACF,CAIA,SAASmz8C,IACP,IACE,MAAO,iEAAiEjn8C,KAAKguB,UAAUC,UACzF,CAAE,MAAOn6B,GACP,OAAO,CACT,CACF,CAKA,IAAIoz8C,GAAwB,EACxBpp7C,EAAU,CACZ,WAAIumB,GACF,OAAO6i6C,GAAwB,CACjC,GAIEhv8C,EAAsB,oBAAXrB,OAAyBA,OAAS,CAAC,EAE9CqB,EAAEopB,kBAAoBppB,EAAE8lB,sBAC1B9lB,EAAEopB,iBAAiB,IAAKm2B,EAAM35B,GAC9B5lB,EAAE8lB,oBAAoB,IAAKy5B,GAAM,IAGnC,IAAI0v5C,EAAwBD,EAC5B,SAASE,EAAWrx5C,GAClB,OAAe,MAARA,CACT,CAIA,SAASsx5C,EAAa3U,EAASiG,EAAYI,GACzC,OAAOrG,EAAUiG,EAAaI,CAChC,CACA,SAASuO,EAAmBvO,GAC1B,OAAOA,CACT,CACA,SAASwO,EAAkB5O,GACzB,OAAOA,CACT,CACA,IAAI4J,EAAc,SAAqBiF,GACrC,IAAK,IAAIjltC,EAAOxtP,UAAUC,OAAQmoC,EAAa,IAAI/oC,MAAMmuP,EAAO,EAAIA,EAAO,EAAI,GAAIlF,EAAO,EAAGA,EAAOkF,EAAMlF,IACxGlgN,EAAWkgN,EAAO,GAAKtoP,UAAUsoP,GASnC,OANeppP,OAAOmd,QAAQo27C,GAAUhm7C,QAAO,SAAUugL,GACvD,IACIvoL,GADQ,OAAeuoL,EAAM,GACjB,GAEhB,OAAQ5kK,EAAWp6B,SAASyW,EAC9B,IACgB6O,QAAO,SAAUq1F,EAAU2lI,GACzC,IAAIuB,GAAQ,OAAevB,EAAO,GAC9B7pO,EAAMorO,EAAM,GACZvyE,EAAMuyE,EAAM,GAGhB,OADAlnI,EAASlkG,GAAO64J,EACT30D,CACT,GAAG,CAAC,EACN,EAgLA,IAAI+p1C,EAAkB,SAAyBhw8C,GAC7C,MAAa,SAANA,EAAe,SAAWA,CACnC,EAEIiw8C,EAAU,SAAiBl/uC,GAC7B,IAAI66B,EAEA28Q,EAAYx3S,EAAMw3S,UAClB2n8B,EAAcn/uC,EAAMktC,MACpB43G,EAAeq6lC,EAAYr6lC,aAC3BoE,EAAUi2lC,EAAYj2lC,QACtBnpN,EAASo/yC,EAAYp/yC,OACzB,OAAO86F,EAAQ,CACbrtP,MAAO,SACN,OAAkBqtP,EAtBvB,SAAwB28Q,GAKtB,OAAOA,EAJkB,CACvBvra,OAAQ,MACRhhE,IAAK,UAE+Buse,GAAa,QACrD,CAgB8B4n8B,CAAe5n8B,GAAY,SAAS,OAAkB38Q,EAAO,kBAAmB96F,EAAO+wyC,WAAW,OAAkBj2sC,EAAO,eAAgBiqH,IAAe,OAAkBjqH,EAAO,YAAa,oEAAoE,OAAkBA,EAAO,eAAgBquH,EAAQyolC,aAAa,OAAkB92sC,EAAO,YAAaquH,EAAQyolC,aAAa,OAAkB92sC,EAAO,WAAY,aAAa,OAAkBA,EAAO,QAAS,SAAS,OAAkBA,EAAO,SAAU,GAAIA,CAC/hB,EACIwktC,GAAsC,IAAAx0sC,eAAc,CACtDy0sC,mBAAoB,OAGlBC,EAA0B,SAAUluB,IACtC,OAAUkuB,EAAYluB,GAEtB,IAAIx8jC,EAAS+olC,EAAa2B,GAE1B,SAASA,IACP,IAAI1m5C,GAEJ,OAAgB1sD,KAAMoz8C,GAEtB,IAAK,IAAIxltC,EAAOxtP,UAAUC,OAAQg3C,EAAO,IAAI53C,MAAMmuP,GAAOlF,EAAO,EAAGA,EAAOkF,EAAMlF,IAC/ErxM,EAAKqxM,GAAQtoP,UAAUsoP,GA8CzB,OA3CAh8L,EAAQg8T,EAAO9oX,KAAKW,MAAMmoX,EAAQ,CAAC1oX,MAAMgC,OAAOq1C,KAC1C1rC,MAAQ,CACZwkK,UAAWzjH,EAAMzf,MAAMs55C,cACvBl77B,UAAW,MAEb3+c,EAAMvf,aAAU,EAEhBuf,EAAM2m5C,aAAe,SAAUzx6C,GAC7B,IAAI2wH,EAAc7lG,EAAMzf,MACpBu55C,EAAgBj0yC,EAAYi0yC,cAC5BD,EAAgBh0yC,EAAYg0yC,cAC5BE,EAAgBl0yC,EAAYk0yC,cAC5BC,EAAen0yC,EAAYm0yC,aAC3BE,EAA2Br0yC,EAAYq0yC,yBACvC7lsC,EAAQxuG,EAAYwuG,MACxB,GAAKn/N,EAAL,CAEA,IAAI0x6C,EAAmC,UAAjB5M,EAElB/67C,EAnOV,SAA0ByhM,GACxB,IAAIj9B,EAAYi9B,EAAKj9B,UACjB4osB,EAAS3rqB,EAAK2rqB,OACd/1qB,EAAYoK,EAAKpK,UACjBqoU,EAAYj+T,EAAKi+T,UACjBko8B,EAAenmwC,EAAKmmwC,aACpBD,EAAkBlmwC,EAAKkmwC,gBAEvBv2lC,EADQ3vK,EAAK2zD,MACGg8G,QAChBy2lC,EAzKN,SAAyBzn3C,GACvB,IAAI13E,EAAQshZ,iBAAiB5pU,GACzB0n3C,EAAyC,aAAnBp/7C,EAAMsqB,SAC5B+06C,EAAa,gBACjB,GAAuB,UAAnBr/7C,EAAMsqB,SAAsB,OAAOx5B,SAASk+F,gBAEhD,IAAK,IAAIhS,EAAStF,EAASsF,EAASA,EAAOtE,eAGzC,GAFA14E,EAAQshZ,iBAAiBtkU,KAErBoi3C,GAA0C,WAAnBp/7C,EAAMsqB,WAI7B+06C,EAAWro8C,KAAKgJ,EAAMktW,SAAWltW,EAAMsqc,UAAYtqc,EAAMqqc,WAC3D,OAAOrtX,EAIX,OAAOlsF,SAASk+F,eAClB,CAsJqBsw2C,CAAgB56lB,GAC/B/oW,EAAe,CACjB3E,UAAW,SACXl7V,UAAWA,GAGb,IAAK4osB,IAAWA,EAAO5+mB,aAAc,OAAO61Q,EAG5C,IA7MwBn2X,EA8MpB12C,EADwBqw2C,EAAa7/2C,wBACA30D,OAErC406C,EAAwB76lB,EAAOplxB,wBAC/Bkg3C,EAAaD,EAAsB9z2C,OACnCg02C,EAAaF,EAAsB506C,OACnC+06C,EAAUH,EAAsB906C,IAGhCk16C,EADwBj7lB,EAAO5+mB,aAAaxmK,wBACP70D,IAErC+s8B,EAAayne,GAvNbxB,EADoBj4zC,EAwNiD25zC,GAAtCtx8C,OAAO64B,YAnNnC8+G,EAAGwG,aAoNNn9C,EAAYwqkB,EAAa8lyB,GACzB1ylC,EAAenrV,SAASggY,iBAAiBojd,GAAQj4f,aAAc,IAC/DF,EAAYjrV,SAASggY,iBAAiBojd,GAAQn4f,UAAW,IACzDqzlC,EAAiBD,EAAepzlC,EAChCszlC,EAAiBroe,EAAakoe,EAC9BI,EAAmBF,EAAiB/w2C,EACpCkx2C,EAAmBjx2C,EAAeD,EAAY6w2C,EAC9CM,EAAaR,EAAahoe,EAAa3o4B,EAAY49Q,EACnDwzlC,EAAWpx2C,EAAY6w2C,EAAUnzlC,EACjC2zlC,EAAiB,IAErB,OAAQlp8B,GACN,IAAK,OACL,IAAK,SAEH,GAAI6o8B,GAAkBJ,EACpB,MAAO,CACLzo8B,UAAW,SACXl7V,UAAWA,GAKf,GAAIikyC,GAAoBN,IAAeR,EAKrC,OAJIC,GACFxB,EAAiByB,EAAca,EAAYE,GAGtC,CACLlp8B,UAAW,SACXl7V,UAAWA,GAKf,IAAKmjyC,GAAmBc,GAAoBpxwC,GAAaswwC,GAAmBY,GAAkBlxwC,EAQ5F,OAPIuwwC,GACFxB,EAAiByB,EAAca,EAAYE,GAMtC,CACLlp8B,UAAW,SACXl7V,UAHsBmjyC,EAAkBY,EAAiBpzlC,EAAeszlC,EAAmBtzlC,GAS/F,GAAkB,SAAduqJ,GAAwBio8B,EAAiB,CAE3C,IAAIkB,EAAqBrkyC,EACrBskyC,EAAanB,EAAkBW,EAAiBE,EAMpD,OAJIM,GAAczxwC,IAChBwxwC,EAAqB3x8C,KAAKgL,IAAI4m8C,EAAa3zlC,EAAe/D,EAAQwolC,cAAep1xC,IAG5E,CACLk7V,UAAW,MACXl7V,UAAWqkyC,EAEf,CAGA,GAAkB,WAAdnp8B,EAKF,OAJIko8B,GACFr32B,EAASs32B,EAAca,GAGlB,CACLhp8B,UAAW,SACXl7V,UAAWA,GAIf,MAEF,IAAK,MAEH,GAAI8jyC,GAAkBH,EACpB,MAAO,CACLzo8B,UAAW,MACXl7V,UAAWA,GAKf,GAAIgkyC,GAAoBL,IAAeR,EAKrC,OAJIC,GACFxB,EAAiByB,EAAcc,EAAUC,GAGpC,CACLlp8B,UAAW,MACXl7V,UAAWA,GAKf,IAAKmjyC,GAAmBa,GAAoBnxwC,GAAaswwC,GAAmBW,GAAkBjxwC,EAAW,CACvG,IAAI0xwC,EAAsBvkyC,EAW1B,QARKmjyC,GAAmBa,GAAoBnxwC,GAAaswwC,GAAmBW,GAAkBjxwC,KAC5F0xwC,EAAsBpB,EAAkBW,EAAiBrzlC,EAAYuzlC,EAAmBvzlC,GAGtF2ylC,GACFxB,EAAiByB,EAAcc,EAAUC,GAGpC,CACLlp8B,UAAW,MACXl7V,UAAWukyC,EAEf,CAKA,MAAO,CACLrp8B,UAAW,SACXl7V,UAAWA,GAGf,QACE,MAAM,IAAI3oJ,MAAM,+BAAgCxlB,OAAOqpgB,EAAW,OAGtE,OAAO2E,CACT,CAgEkB2k8B,CAAiB,CAC3BxkyC,UAAWo2xC,EACXxtlB,OAAQn30B,EACRohK,UAAWwjwC,EACXn77B,UAAWo77B,EACX8M,aANiB3M,IAA6B0M,EAO9CA,gBAAiBA,EACjBvysC,MAAOA,IAELoysC,EAAqBzm5C,EAAMvf,QAAQgm6C,mBACnCA,GAAoBA,EAAmBxn8C,GAE3C+gD,EAAMg+E,SAAS/+H,EAhBC,CAiBlB,EAEA+gD,EAAMko5C,gBAAkB,WACtB,IAAInO,EAAgB/54C,EAAMzf,MAAMw55C,cAC5Bp77B,EAAY3+c,EAAM/gD,MAAM0/f,WAAayn8B,EAAgBrM,GACzD,OAAO+K,EAAeA,EAAe,CAAC,EAAG9k5C,EAAMzf,OAAQ,CAAC,EAAG,CACzDo+d,UAAWA,EACXl7V,UAAWzjH,EAAM/gD,MAAMwkK,WAE3B,EAEOzjH,CACT,CAaA,OAXA,OAAa0m5C,EAAY,CAAC,CACxBvu7C,IAAK,SACL1jB,MAAO,WAEL,OAAO6+B,EADQhgC,KAAKitC,MAAMjN,UACV,CACd4B,IAAK5hC,KAAKqz8C,aACV5D,YAAazv8C,KAAK408C,mBAEtB,KAGKxB,CACT,CAxE8B,CAwE5B,EAAA1mzC,WACF0mzC,EAAWnqM,YAAciqM,EAEzB,IAkBI2B,EAAc,SAAqB5ktC,GACrC,IAAI9/E,EAAY8/E,EAAM9/E,UAClBm1xC,EAAWr1sC,EAAM8Q,MAAMg8G,QAAQuolC,SACnC,MAAO,CACLn1xC,UAAWA,EACXwuS,UAAW,OACXz+F,cAAeollC,EACftllC,WAAYsllC,EACZ3m6C,SAAU,WAEVmo5C,wBAAyB,QAE7B,EAqBIguB,EAAY,SAAmB3ktC,GACjC,IAAI4ktC,EAAc5ktC,EAAM4Q,MACpBuksC,EAAWyP,EAAYh4lC,QAAQuolC,SAEnC,MAAO,CACL/30C,MAFWwn1C,EAAYnhzC,OAEToxyC,UACd9s0C,QAAS,GAAGl2H,OAAkB,EAAXsj8C,EAAc,OAAOtj8C,OAAkB,EAAXsj8C,EAAc,MAC7DtgtC,UAAW,SAEf,EAEIgwtC,EAAsBF,EACtBG,EAAoBH,EACpBpG,EAAmB,SAA0Bzh6C,GAC/C,IAAIjN,EAAWiN,EAAMjN,SACjB4vD,EAAY3iD,EAAM2iD,UAClB8wK,EAAKzzN,EAAMyzN,GACX2qJ,EAAYp+W,EAAMo+W,UAClBmijC,EAAavg6C,EAAMug6C,WACvB,OAAO,OAAI,OAAO,OAAS,CACzBhusC,IAAK6rJ,EAAU,mBAAoBp+W,GACnC2iD,UAAW8wK,EAAG,CACZ,eAAe,EACf,2BAA2B,GAC1B9wK,IACF492C,GAAaxt6C,EAClB,EACA0u6C,EAAiBx0zC,aAAe,CAC9Bl6G,SAAU,cAEZ,IAAIyu6C,EAAiB,SAAwBxh6C,GAC3C,IAAIjN,EAAWiN,EAAMjN,SACjB4vD,EAAY3iD,EAAM2iD,UAClB8wK,EAAKzzN,EAAMyzN,GACX2qJ,EAAYp+W,EAAMo+W,UAClBmijC,EAAavg6C,EAAMug6C,WACvB,OAAO,OAAI,OAAO,OAAS,CACzBhusC,IAAK6rJ,EAAU,iBAAkBp+W,GACjC2iD,UAAW8wK,EAAG,CACZ,eAAe,EACf,wBAAwB,GACvB9wK,IACF492C,GAAaxt6C,EAClB,EACAyu6C,EAAev0zC,aAAe,CAC5Bl6G,SAAU,cAKZ,IAmLIk16C,ECt7B4B/18C,EAAGC,GDmwB/B+18C,GAAgB,SAAuBjxkC,GACzC,IAAIxwS,EAAOwwS,EAAMxwS,KACbvxC,EAAS+hV,EAAM/hV,OACfxjB,EAAWulW,EAAMvlW,SACrB,MAAO,CACLE,KAAM60D,EAAK70D,KACXF,SAAUA,EACVG,IAAKqjB,EACLpjB,MAAO20D,EAAK30D,MACZH,OAAQ,EAEZ,EACI4v6C,GAA0B,SAAU4G,IACtC,OAAU5G,EAAY4G,GAEtB,IAAIC,EAAU5D,EAAajD,GAE3B,SAASA,IACP,IAAI/zkC,GAEJ,OAAgBz6X,KAAMwu8C,GAEtB,IAAK,IAAI7tsC,EAAQvgQ,UAAUC,OAAQg3C,EAAO,IAAI53C,MAAMkhQ,GAAQC,EAAQ,EAAGA,EAAQD,EAAOC,IACpFvpN,EAAKupN,GAASxgQ,UAAUwgQ,GAmB1B,OAhBA65H,EAAS46kC,EAAQz18C,KAAKW,MAAM808C,EAAS,CAACr18C,MAAMgC,OAAOq1C,KAC5C1rC,MAAQ,CACb0/f,UAAW,MAGb5wI,EAAO04kC,mBAAqB,SAAU/3gB,GACpC,IAAI/vb,EAAY+vb,EAAM/vb,UAGlBA,IAFmByn8B,EAAgBr4kC,EAAOxtV,MAAMw55C,gBAGlDhskC,EAAO/vP,SAAS,CACd2gY,UAAWA,GAGjB,EAEO5wI,CACT,CA6CA,OA3CA,OAAa+zkC,EAAY,CAAC,CACxB3p7C,IAAK,SACL1jB,MAAO,WACL,IAAIouY,EAAevvY,KAAKitC,MACpB0i6C,EAAWpgkC,EAAaogkC,SACxB3v6C,EAAWuvW,EAAavvW,SACxB4vD,EAAY2/S,EAAa3/S,UACzBgg3C,EAAiBrgkC,EAAaqgkC,eAC9BlvsC,EAAK6uI,EAAa7uI,GAClB8ssC,EAAaj+jC,EAAai+jC,WAC1B/G,EAAgBl3jC,EAAak3jC,cAC7B9n6C,EAAW4wW,EAAam3jC,aACxBr7iC,EAAY9b,EAAa8b,UACzBiqjC,EAAuB,UAAb326C,EAEd,IAAKgx6C,IAAa2F,IAAY1F,EAC5B,OAAO,KAGT,IAAIvk8B,EAAYrrgB,KAAK2L,MAAM0/f,WAAayn8B,EAAgBrM,GACpD/y2C,EA3gBV,SAA8B3H,GAC5B,IAAI2H,EAAO3H,EAAQ4H,wBACnB,MAAO,CACLmM,OAAQpM,EAAKoM,OACb9gE,OAAQ00D,EAAK10D,OACbH,KAAM60D,EAAK70D,KACXghE,MAAOnM,EAAKmM,MACZ/gE,IAAK40D,EAAK50D,IACVC,MAAO20D,EAAK30D,MAEhB,CAigBiBw26C,CAAqB3F,GAC5B4F,EAAiBF,EAAU,EAAIpz8C,OAAOs/F,YAEtC71F,EAAQ,CACVw2C,OAFWuxC,EAAK23a,GAAamq8B,EAG7B726C,SAAUA,EACV+0D,KAAMA,GAGJ+h3C,GAAc,OAAI,OAAO,OAAS,CACpCj2sC,IAAK6rJ,EAAU,aAAc1/Y,GAC7BikF,UAAW8wK,EAAG,CACZ,eAAe,GACd9wK,IACF492C,GAAaxt6C,GAChB,OAAO,OAAIkz6C,EAAuB9w6C,SAAU,CAC1CjhC,MAAO,CACLgy8C,mBAAoBnz8C,KAAKmz8C,qBAE1BxD,GAAwB,IAAAh4iC,cAAa89iC,EAAa9F,GAAY8F,EACnE,KAGKjH,CACT,CA7E8B,CA6E5B,EAAA9hzC,WAEEgpzC,GAAe,SAAsBtowC,GACvC,IAAI6hW,EAAa7hW,EAAK6hW,WAEtB,MAAO,CACL5tiB,MAAO,YACPssH,UAHUy/E,EAAK0xU,MAGI,WAAQ/we,EAC3B0rG,cAAew1Z,EAAa,YAASlhgB,EAErCpP,SAAU,WAEd,EAoBIg36C,GAAoB,SAA2B9hvC,GACjD,IAAIkpJ,EAAUlpJ,EAAMktC,MAAMg8G,QACtBghlC,EAAUlquC,EAAMkquC,QAChBru4B,EAAW77V,EAAM67V,SACjBo24B,EAA2BjyuC,EAAM6puC,YAAYoI,yBACjD,MAAO,CACLhklC,WAAY,SACZxtW,QAASyp7C,GAAWru4B,GAAYo24B,EAA2B,OAAS,OACpEnksC,KAAM,EACNigH,SAAU,OACV1pP,QAAS,GAAGl2H,OAAO+6W,EAAQuolC,SAAW,EAAG,OAAOtj8C,OAA0B,EAAnB+6W,EAAQuolC,SAAc,MAC7Exe,wBAAyB,QACzBno5C,SAAU,WACV4iV,SAAU,SAEd,EAqBIq0lC,GAAyB,WAC3B,MAAO,CACL9zlC,WAAY,SACZE,UAAW,UACX1tW,QAAS,OACTwtP,WAAY,EAEhB,EAiBI+zsC,GAAc,CAAC,QAIfhivC,GAAgD,CAClDnpN,KAAM,SACNmrK,OAAQ,2FAWNigyC,GAAM,SAAa1owC,GACrB,IAAIxoL,EAAOwoL,EAAKxoL,KACZqoB,GAAQ,OAAyBmgK,EAAMyowC,IAE3C,OAAO,OAAI,OAAO,OAAS,CACzB726C,OAAQpa,EACRma,MAAOna,EACP61lC,QAAS,YACT,cAAe,OACf/9c,UAAW,QACXl9Z,IAAK3rC,IACJ5mL,GACL,EAEI8o6C,GAAY,SAAmB9o6C,GACjC,OAAO,OAAI6o6C,IAAK,OAAS,CACvBlx7C,KAAM,IACLqoB,IAAQ,OAAI,OAAQ,CACrBtqC,EAAG,+VAEP,EACIqz8C,GAAc,SAAqB/o6C,GACrC,OAAO,OAAI6o6C,IAAK,OAAS,CACvBlx7C,KAAM,IACLqoB,IAAQ,OAAI,OAAQ,CACrBtqC,EAAG,0RAEP,EAIIsz8C,GAAU,SAAiBvntC,GAC7B,IAAIo1X,EAAYp1X,EAAMo1X,UAClBoy1B,EAAcxntC,EAAMqS,MACpBuksC,EAAW4Q,EAAYn5lC,QAAQuolC,SAC/B1xyC,EAASsizC,EAAYtizC,OACzB,MAAO,CACLvyJ,MAAO,qBACPksH,MAAOu2f,EAAYlwd,EAAOsxyC,UAAYtxyC,EAAOkxyC,UAC7Cxw7C,QAAS,OACT4jH,QAAoB,EAAXot0C,EACTx90C,WAAY,cACZ,SAAU,CACRyF,MAAOu2f,EAAYlwd,EAAOwxyC,UAAYxxyC,EAAOoxyC,WAGnD,EAEImR,GAAuBF,GAevBG,GAAoBH,GAkBpBI,GAAwB,SAA+BpmtC,GACzD,IAAIg/S,EAAah/S,EAAMg/S,WACnBqn6B,EAAcrmtC,EAAM8Q,MACpBuksC,EAAWgR,EAAYv5lC,QAAQuolC,SAC/B1xyC,EAAS0izC,EAAY1izC,OACzB,MAAO,CACLvyJ,MAAO,qBACP2gX,UAAW,UACXtoO,gBAAiBu1Z,EAAar7Y,EAAOixyC,UAAYjxyC,EAAOkxyC,UACxDhklC,aAAyB,EAAXwklC,EACd1klC,UAAsB,EAAX0klC,EACXvm6C,MAAO,EAEX,EAgBIw36C,IAAuB,QAAUrB,ICvjCL/18C,EDujCkE,CAAC,8DCtjC1FC,KAAMA,GAAID,EAAE4C,MAAM,IDsjC8Bmz8C,ECtjCzB518C,OAAOgmC,OAAOhmC,OAAOkU,iBAAiBrU,EAAG,CACrE8xK,IAAK,CACH9vK,MAAO7B,OAAOgmC,OAAOlmC,UDqjCvBo38C,GAAsB,SAA6BrmtC,GACrD,IAAI2zX,EAAY3zX,EAAM2zX,UAClBl/lB,EAAOurO,EAAMvrO,KACbmw7C,EAAc5ktC,EAAM4Q,MACpBntG,EAASmhzC,EAAYnhzC,OACrB0xyC,EAAWyP,EAAYh4lC,QAAQuolC,SACnC,MAAO,CACLjk8C,MAAO,mBACPksH,MAAOu2f,EAAYlwd,EAAOsxyC,UAAYtxyC,EAAOkxyC,UAC7Cxw7C,QAAS,OACT4jH,QAAoB,EAAXot0C,EACTx90C,WAAY,cACZk6P,UAAW,SACXv9H,SAAU7/N,EACVolO,WAAY,EACZ62H,YAAaj8V,EACbogO,UAAW,SACXmuf,cAAe,SAEnB,EAEIsjuB,GAAa,SAAoBvykC,GACnC,IAAI/iV,EAAQ+iV,EAAM/iV,MACdgB,EAAS+hV,EAAM/hV,OACnB,OAAO,OAAI,OAAQ,CACjBq9M,KAAkB,QAAM,CACtBzP,UAAW,GAAG/tP,OAAOu08C,GAAsB,oBAAoBv08C,OAAOm/C,EAAO,gBAC7Eu4F,gBAAiB,eACjBi/N,aAAc,MACdrkW,QAAS,eACTysW,WAAY5+T,EAAS,WAAQpU,EAC7B/O,OAAQ,MACRm0sB,cAAe,MACfp0sB,MAAO,OACkC,GAAmE,KAElH,EAEIgv6C,GAAmB,SAA0B9g6C,GAC/C,IAAI2iD,EAAY3iD,EAAM2iD,UAClB8wK,EAAKzzN,EAAMyzN,GACX2qJ,EAAYp+W,EAAMo+W,UAClBmijC,EAAavg6C,EAAMug6C,WACnB1u7B,EAAQ7xe,EAAM6xe,MAClB,OAAO,OAAI,OAAO,OAAS,CACzBt/Q,IAAK6rJ,EAAU,mBAAoBp+W,GACnC2iD,UAAW8wK,EAAG,CACZyy2B,WAAW,EACX,qBAAqB,GACpBvjhC,IACF492C,IAAa,OAAIiJ,GAAY,CAC9Bt15C,MAAO,EACPgB,OAAQ28d,KACN,OAAI237B,GAAY,CAClBt15C,MAAO,IACPgB,QAAQ,KACN,OAAIs05C,GAAY,CAClBt15C,MAAO,IACPgB,QAAS28d,IAEb,EACAiv7B,GAAiB7zzC,aAAe,CAC9Bt1H,KAAM,GAGR,IAAI8x7C,GAAQ,SAAatpwC,GACvB,IAAI6hW,EAAa7hW,EAAK6hW,WAClB60E,EAAY12a,EAAK02a,UACjB6y1B,EAAavpwC,EAAK2zD,MAClBntG,EAAS+izC,EAAW/izC,OACpB+kN,EAAeg+lC,EAAWh+lC,aAC1BoE,EAAU45lC,EAAW55lC,QACzB,MAAO,CACL17W,MAAO,UACPygX,WAAY,SACZpoO,gBAAiBu1Z,EAAar7Y,EAAOgxyC,SAAWhxyC,EAAO+wyC,SACvDrslC,YAAa22L,EAAar7Y,EAAOixyC,UAAY/g1B,EAAYlwd,EAAOtpF,QAAUspF,EAAOkxyC,UACjFnslC,aAAcA,EACdwp1B,YAAa,QACb3qN,YAAa,EACbr1nB,UAAW2hQ,EAAY,aAAa9hnB,OAAO4xJ,EAAOtpF,cAAWv8B,EAC7DszG,OAAQ,UACR/sI,QAAS,OACTstW,SAAU,OACVC,eAAgB,gBAChB7+K,UAAW+5K,EAAQwolC,cACnBhmtC,QAAS,eACT5gN,SAAU,WACVmpF,WAAY,YACZ,UAAW,CACTwwP,YAAawrQ,EAAYlwd,EAAOtpF,QAAUspF,EAAOmxyC,WAGvD,EAwBI5kjC,GAAc,CAAC,QACfy2jC,GAAW,SAAkBxpwC,GAC/B,IAAI2vK,EAAU3vK,EAAK2zD,MAAMg8G,QACzB,MAAO,CACLmD,cAAkC,EAAnBnD,EAAQuolC,SACvBtllC,WAA+B,EAAnBjD,EAAQuolC,SAExB,EA0BIuR,GAAkB,SAAyBhjvC,GAC7C,IAAIkpJ,EAAUlpJ,EAAMktC,MAAMg8G,QAC1B,MAAO,CACL17W,MAAO,QACPksH,MAAO,OACP8zB,OAAQ,UACR/sI,QAAS,QACTmwO,SAAU,MACVG,WAAY,IACZk8H,aAAc,SACdX,YAAgC,EAAnBpD,EAAQuolC,SACrBrllC,aAAiC,EAAnBlD,EAAQuolC,SACtBrvlC,cAAe,YAEnB,EAkBI7F,GAAY,CAAC,WAAY,aAAc,WAAY,kBACnD0mmC,GAAW,SAAkB1pwC,GAC/B,IAAI6hW,EAAa7hW,EAAK6hW,WAClB9tiB,EAAQisM,EAAKjsM,MACbw18C,EAAavpwC,EAAK2zD,MAClBg8G,EAAU45lC,EAAW55lC,QACrBnpN,EAAS+izC,EAAW/izC,OACxB,OAAO49yC,EAAe,CACpB/xlC,OAAQ1C,EAAQuolC,SAAW,EAC3BpllC,cAAenD,EAAQuolC,SAAW,EAClCtllC,WAAYjD,EAAQuolC,SAAW,EAC/Bt4vC,WAAYiiW,EAAa,SAAW,UACpC1hb,MAAOqmC,EAAOwxyC,UAGdxi0C,UAAWzhI,EAAQ,gBAAkB,IACpCw4P,GACL,EACIo9sC,GAAe,CACjBp5lC,SAAU,QACV74H,KAAM,UACNq5H,SAAU,MACVl5O,OAAQ,EACRw6O,OAAQ,EACRlgI,QAAS,EACTrnH,QAAS,GAEPyhI,GAAiB,CACnBgI,KAAM,WACNrtP,QAAS,cACTqpW,SAAU,gBACVH,oBAAqB,gBACrB,UAAWg0lC,EAAe,CACxB942C,QAAS,uBACTs0G,WAAY,SACZy0K,WAAY,OACXs1lC,KAGDv8lB,GAAa,SAAoBzmd,GACnC,OAAOy9iC,EAAe,CACpBnw8C,MAAO,QACPksH,MAAO,UACPo8H,WAAY,EACZ/9G,QAASmoR,EAAW,EAAI,EACxBh1X,MAAO,QACNg46C,GACL,EA+BIC,GAAgB,SAAuB5pwC,GACzC,IAAIupwC,EAAavpwC,EAAK2zD,MAClBg8G,EAAU45lC,EAAW55lC,QACrBpE,EAAeg+lC,EAAWh+lC,aAE9B,MAAO,CACLt3W,MAAO,aACPq4I,gBAHWi9zC,EAAW/izC,OAGEixyC,UACxBlslC,aAAcA,EAAe,EAC7BrkW,QAAS,OACTmrW,OAAQ1C,EAAQuolC,SAAW,EAC3BnnlC,SAAU,EAGd,EACI84lC,GAAqB,SAA4BpjvC,GACnD,IAAIm/uC,EAAcn/uC,EAAMktC,MACpB43G,EAAeq6lC,EAAYr6lC,aAC3B/kN,EAASo/yC,EAAYp/yC,OACrBsjzC,EAAmBrjvC,EAAMqjvC,iBAC7B,MAAO,CACLv+lC,aAAcA,EAAe,EAC7BprP,MAAOqmC,EAAOwxyC,UACd3gtC,SAAU,MACV88H,SAAU,SACVrpP,QAAS,EACTioP,YAAa,EACbqB,aAAc01lC,QAAyCnp6C,IAArBmp6C,EAAiC,gBAAanp6C,EAChF0zU,WAAY,SAEhB,EACI01lC,GAAsB,SAA6BzotC,GACrD,IAAIwntC,EAAcxntC,EAAMqS,MACpBg8G,EAAUm5lC,EAAYn5lC,QACtBpE,EAAeu9lC,EAAYv9lC,aAC3B/kN,EAASsizC,EAAYtizC,OAEzB,MAAO,CACLkuN,WAAY,SACZnJ,aAAcA,EAAe,EAC7Bj/N,gBAJcg1G,EAAMo1X,UAISlwd,EAAO8wyC,iBAAc325C,EAClDz5B,QAAS,OACT6rW,YAAapD,EAAQuolC,SACrBrllC,aAAclD,EAAQuolC,SACtB,SAAU,CACR5rzC,gBAAiBka,EAAO8wyC,YACxBn30C,MAAOqmC,EAAO6wyC,QAGpB,EACI2S,GAAoB,SAA2BnntC,GACjD,IAAIjwN,EAAWiwN,EAAMjwN,SACjBwt6C,EAAav9sC,EAAMu9sC,WACvB,OAAO,OAAI,MAAOA,EAAYxt6C,EAChC,EA4DIq36C,GAAY,SAAmBjqwC,GACjC,IAAI6hW,EAAa7hW,EAAK6hW,WAClB60E,EAAY12a,EAAK02a,UACjB11kB,EAAag/J,EAAKh/J,WAClBuo6C,EAAavpwC,EAAK2zD,MAClBg8G,EAAU45lC,EAAW55lC,QACrBnpN,EAAS+izC,EAAW/izC,OACxB,MAAO,CACLvyJ,MAAO,SACPq4I,gBAAiBtrG,EAAawlH,EAAOtpF,QAAUw5iB,EAAYlwd,EAAO4wyC,UAAY,cAC9Ej30C,MAAO0hb,EAAar7Y,EAAOkxyC,UAAY125C,EAAawlH,EAAO+wyC,SAAW,UACtEtjzC,OAAQ,UACR/sI,QAAS,QACTmwO,SAAU,UACVvsH,QAAS,GAAGl2H,OAA0B,EAAnB+6W,EAAQuolC,SAAc,OAAOtj8C,OAA0B,EAAnB+6W,EAAQuolC,SAAc,MAC7Evm6C,MAAO,OACPq7oB,WAAY,OACZk9xB,wBAAyB,mBAEzB,UAAW,CACT59zC,gBAAkBu1Z,OAA8DlhgB,EAAjDK,EAAawlH,EAAOtpF,QAAUspF,EAAO2wyC,WAG1E,EAyBIgT,GAAiB,SAAwBnqwC,GAC3C,IAAIupwC,EAAavpwC,EAAK2zD,MAClBg8G,EAAU45lC,EAAW55lC,QAEzB,MAAO,CACL17W,MAAO,cACPksH,MAHWop1C,EAAW/izC,OAGRqxyC,UACdtnlC,SAAU,gBACVoD,WAAYhE,EAAQuolC,SAAW,EAC/BzklC,YAAa9D,EAAQuolC,SAAW,EAEpC,EAgBI9lsC,GAAM,SAAapyD,GACrB,IAAI6hW,EAAa7hW,EAAK6hW,WAClB0n6B,EAAavpwC,EAAK2zD,MAClBg8G,EAAU45lC,EAAW55lC,QACrBnpN,EAAS+izC,EAAW/izC,OACxB,MAAO,CACLvyJ,MAAO,cACPksH,MAAO0hb,EAAar7Y,EAAOoxyC,UAAYpxyC,EAAOwxyC,UAC9CznlC,SAAU,gBACVoD,WAAYhE,EAAQuolC,SAAW,EAC/BzklC,YAAa9D,EAAQuolC,SAAW,EAChCp1xC,SAAU,OACVqxM,SAAU,SACVC,aAAc,WACdC,WAAY,SAEhB,EAkBIvzH,GAAa,CACf2/sC,eAnhBmB,SAAwB5g6C,GAC3C,IAAIjN,EAAWiN,EAAMjN,SACjB4vD,EAAY3iD,EAAM2iD,UAClB8wK,EAAKzzN,EAAMyzN,GACX2qJ,EAAYp+W,EAAMo+W,UAClBmijC,EAAavg6C,EAAMug6C,WACvB,OAAO,OAAI,OAAO,OAAS,CACzBhusC,IAAK6rJ,EAAU,iBAAkBp+W,GACjC2iD,UAAW8wK,EAAG,CACZyy2B,WAAW,EACX,mBAAmB,GAClBvjhC,IACF492C,GAAaxt6C,IAAY,OAAI+16C,GAAW,MAC7C,EAugBE71H,QAtYY,SAAiBjzyC,GAC7B,IAAIjN,EAAWiN,EAAMjN,SACjB0gO,EAAKzzN,EAAMyzN,GACX2qJ,EAAYp+W,EAAMo+W,UAClBz7T,EAAY3iD,EAAM2iD,UAClBq/c,EAAahigB,EAAMgigB,WACnB60E,EAAY72kB,EAAM62kB,UAClB00vB,EAAWvr0C,EAAMur0C,SACjBg1F,EAAavg6C,EAAMug6C,WACnBzO,EAAa9x5C,EAAM8x5C,WACvB,OAAO,OAAI,OAAO,OAAS,CACzBn95C,IAAK420C,EACLh5mC,IAAK6rJ,EAAU,UAAWp+W,GAC1B2iD,UAAW8wK,EAAG,CACZ3I,SAAS,EACT,uBAAwBk3S,EACxB,sBAAuB60E,EACvB,wBAAyBi70B,GACxBnv2C,IACF492C,GAAaxt6C,EAClB,EAmXEku6C,kBApiBsB,SAA2Bjh6C,GACjD,IAAIjN,EAAWiN,EAAMjN,SACjB4vD,EAAY3iD,EAAM2iD,UAClB8wK,EAAKzzN,EAAMyzN,GACX2qJ,EAAYp+W,EAAMo+W,UAClBmijC,EAAavg6C,EAAMug6C,WACvB,OAAO,OAAI,OAAO,OAAS,CACzBhusC,IAAK6rJ,EAAU,oBAAqBp+W,GACpC2iD,UAAW8wK,EAAG,CACZyy2B,WAAW,EACX,sBAAsB,GACrBvjhC,IACF492C,GAAaxt6C,IAAY,OAAIg26C,GAAa,MAC/C,EAwhBEA,YAAaA,GACbD,UAAWA,GACX1wsB,MA3WU,SAAep4tB,GACzB,IAAIjN,EAAWiN,EAAMjN,SACjB4vD,EAAY3iD,EAAM2iD,UAClB8wK,EAAKzzN,EAAMyzN,GACX2qJ,EAAYp+W,EAAMo+W,UAClB8jjC,EAAUli6C,EAAMki6C,QAChBC,EAAeni6C,EAAMmi6C,aACrB5B,EAAavg6C,EAAMug6C,WACnBns8C,EAAQ4rC,EAAM5rC,MACd0/P,EAAQ9zN,EAAM8zN,MACd28rC,EAAczw5C,EAAMyw5C,YACxB,OAAO,OAAI,OAAO,OAAS,CACzBl+rC,IAAK6rJ,EAAU,QAASp+W,GACxB2iD,UAAW8wK,EAAG,CACZ06D,OAAO,GACNxrO,IACF492C,IAAa,OAAI2B,GAAS,OAAS,CAAC,EAAGC,EAAc,CACtD1R,YAAaA,EACb38rC,MAAOA,EACPsqJ,UAAWA,EACX3qJ,GAAIA,IACFr/P,IAAQ,OAAI,MAAO,KAAM2+B,GAC/B,EAsVEsu6C,aArUiB,SAAsBrh6C,GACvC,IAAIo+W,EAAYp+W,EAAMo+W,UAClB3qJ,EAAKzzN,EAAMyzN,GACX9wK,EAAY3iD,EAAM2iD,UAElB4n3C,EAAoB5F,EAAiB3k6C,GACrCuq6C,EAAkBho8C,KAClB,IAAIg+7C,GAAa,OAAyBgK,EAAmBr3jC,IAEjE,OAAO,OAAI,OAAO,OAAS,CACzB3gJ,IAAK6rJ,EAAU,eAAgBp+W,GAC/B2iD,UAAW8wK,EAAG,CACZ,iBAAiB,GAChB9wK,IACF492C,GACL,EAuTEyC,oBA3nBwB,SAA6Bhj6C,GACrD,IAAIjN,EAAWiN,EAAMjN,SACjB4vD,EAAY3iD,EAAM2iD,UAClB8wK,EAAKzzN,EAAMyzN,GACX8ssC,EAAavg6C,EAAMug6C,WACnBnijC,EAAYp+W,EAAMo+W,UACtB,OAAO,OAAI,OAAO,OAAS,CACzB7rJ,IAAK6rJ,EAAU,sBAAuBp+W,GACtC2iD,UAAW8wK,EAAG,CACZ+2sC,YAAY,GACX7n3C,IACF492C,GAAaxt6C,EAClB,EAgnBEmu6C,mBA5fuB,SAA4Blh6C,GACnD,IAAI2iD,EAAY3iD,EAAM2iD,UAClB8wK,EAAKzzN,EAAMyzN,GACX2qJ,EAAYp+W,EAAMo+W,UAClBmijC,EAAavg6C,EAAMug6C,WACvB,OAAO,OAAI,QAAQ,OAAS,CAAC,EAAGA,EAAY,CAC1ChusC,IAAK6rJ,EAAU,qBAAsBp+W,GACrC2iD,UAAW8wK,EAAG,CACZ,uBAAuB,GACtB9wK,KAEP,EAkfE4uqC,MAtQU,SAAevxtC,GACzB,IAAI2iD,EAAY3iD,EAAM2iD,UAClB8wK,EAAKzzN,EAAMyzN,GACX2qJ,EAAYp+W,EAAMo+W,UAClBlqZ,EAAQ8rC,EAAM9rC,MAEdq28C,EAAoB5F,EAAiB3k6C,GACrCur0C,EAAWg/F,EAAkBh/F,SAC7Bvp0B,EAAauo6B,EAAkBvo6B,WAC/Bl7I,EAAWyjjC,EAAkBzjjC,SAC7B2jjC,EAAiBF,EAAkBE,eACnClK,GAAa,OAAyBgK,EAAmBpnmC,IAE7D,OAAO,OAAI,MAAO,CAChBxgR,UAAW8wK,EAAG,CACZ,mBAAmB,GAClB9wK,GACH4vK,IAAK6rJ,EAAU,QAASp+W,GACxB,aAAc9rC,GAAS,KACtB,OAAI,SAAS,OAAS,CACvByuF,UAAW8wK,EAAG,CACZjwM,OAAO,GACNin5C,GACH916C,IAAK420C,EACLnk2C,MAAOmm2B,GAAWzmd,GAClBzjD,SAAU2+L,GACTu+5B,IACL,EA4OEO,iBAAkBA,GAClBpuH,KAz4BS,SAAc1yyC,GACvB,IAAIjN,EAAWiN,EAAMjN,SACjB4vD,EAAY3iD,EAAM2iD,UAClB8wK,EAAKzzN,EAAMyzN,GACX2qJ,EAAYp+W,EAAMo+W,UAClBmt9B,EAAWvr0C,EAAMur0C,SACjBg1F,EAAavg6C,EAAMug6C,WACvB,OAAO,OAAI,OAAO,OAAS,CACzBhusC,IAAK6rJ,EAAU,OAAQp+W,GACvB2iD,UAAW8wK,EAAG,CACZ+vR,MAAM,GACL7gc,GACHhuD,IAAK420C,GACJg1F,GAAaxt6C,EAClB,EA43BEuu6C,SA32Ba,SAAkBth6C,GAC/B,IAAIjN,EAAWiN,EAAMjN,SACjB4vD,EAAY3iD,EAAM2iD,UAClB8wK,EAAKzzN,EAAMyzN,GACX2qJ,EAAYp+W,EAAMo+W,UAClBmijC,EAAavg6C,EAAMug6C,WACnBh1F,EAAWvr0C,EAAMur0C,SACjBulF,EAAU9w5C,EAAM8w5C,QACpB,OAAO,OAAI,OAAO,OAAS,CACzBv+rC,IAAK6rJ,EAAU,WAAYp+W,GAC3B2iD,UAAW8wK,EAAG,CACZ,aAAa,EACb,sBAAuBq9rC,GACtBnu2C,GACHhuD,IAAK420C,GACJg1F,GAAaxt6C,EAClB,EA41BEwu6C,WAAYA,GACZC,eAAgBA,EAChBC,iBAAkBA,EAClB1B,WA7Ke,SAAoB//5C,GACnC,IAAIjN,EAAWiN,EAAMjN,SACjB4vD,EAAY3iD,EAAM2iD,UAClBs+J,EAAajhN,EAAMihN,WACnBwS,EAAKzzN,EAAMyzN,GACXlxP,EAAOy9B,EAAMz9B,KACb67Y,EAAYp+W,EAAMo+W,UAClBmijC,EAAavg6C,EAAMug6C,WACnBv+5B,EAAahigB,EAAMgigB,WACnB2+5B,EAAc3g6C,EAAM2g6C,YACpBlQ,EAAczw5C,EAAMyw5C,YACpBgQ,EAAYx/sC,EAAWw/sC,UACvBhmqB,EAAQx5iB,EAAWw5iB,MACnBimqB,EAASz/sC,EAAWy/sC,OACxB,OAAO,OAAI,KAAY,MAAM,SAAUzpkC,GACrC,IAAI1kI,EAAM0kI,EAAM1kI,IACZm4sC,EAAYzzkC,EAAMxjI,GACtB,OAAO,OAAIgtsC,EAAW,CACpBl+7C,KAAMA,EACNg+7C,WAAYgE,EAAe,CACzB5h3C,UAAW+n3C,EAAUn4sC,EAAI6rJ,EAAU,aAAcp+W,IAASyzN,EAAG,CAC3D,eAAe,EACf,2BAA4BuuS,GAC3Br/c,KACF492C,GACH9P,YAAaA,IACZ,OAAIh2pB,EAAO,CACZl4xB,KAAMA,EACNg+7C,WAAY,CACV592C,UAAW+n3C,EAAUn4sC,EAAI6rJ,EAAU,kBAAmBp+W,IAASyzN,EAAG,CAChE,sBAAsB,GACrB9wK,KAEL8t2C,YAAaA,GACZ195C,IAAW,OAAI2t6C,EAAQ,CACxBn+7C,KAAMA,EACNg+7C,WAAYgE,EAAe,CACzB5h3C,UAAW+n3C,EAAUn4sC,EAAI6rJ,EAAU,mBAAoBp+W,IAASyzN,EAAG,CACjE,uBAAuB,GACtB9wK,IACH,aAAc,UAAU5tF,OAAOg+B,GAAY,WAC1C4t6C,GACHlQ,YAAaA,IAEjB,GACF,EAiIEuP,oBA1LwBmK,GA2LxBlK,gBA1LoBkK,GA2LpBjK,iBA1LF,SAA0Bh9sC,GACxB,IAAInwN,EAAWmwN,EAAMnwN,SACjBwt6C,EAAar9sC,EAAMq9sC,WACvB,OAAO,OAAI,OAAO,OAAS,CACzBhr7B,KAAM,UACLgr7B,GAAaxt6C,IAAY,OAAI+16C,GAAW,CACzCnx7C,KAAM,KAEV,EAmLE+p7C,OAzGW,SAAgB1h6C,GAC3B,IAAIjN,EAAWiN,EAAMjN,SACjB4vD,EAAY3iD,EAAM2iD,UAClB8wK,EAAKzzN,EAAMyzN,GACX2qJ,EAAYp+W,EAAMo+W,UAClB4jJ,EAAahigB,EAAMgigB,WACnB60E,EAAY72kB,EAAM62kB,UAClB11kB,EAAanB,EAAMmB,WACnBoq0C,EAAWvr0C,EAAMur0C,SACjBg1F,EAAavg6C,EAAMug6C,WACvB,OAAO,OAAI,OAAO,OAAS,CACzBhusC,IAAK6rJ,EAAU,SAAUp+W,GACzB2iD,UAAW8wK,EAAG,CACZ7iM,QAAQ,EACR,sBAAuBoxe,EACvB,qBAAsB60E,EACtB,sBAAuB11kB,GACtBwhD,GACHhuD,IAAK420C,EACL,gBAAiBvp0B,GAChBu+5B,GAAaxt6C,EAClB,EAqFEqt6C,YAtEgB,SAAqBpg6C,GACrC,IAAIjN,EAAWiN,EAAMjN,SACjB4vD,EAAY3iD,EAAM2iD,UAClB8wK,EAAKzzN,EAAMyzN,GACX2qJ,EAAYp+W,EAAMo+W,UAClBmijC,EAAavg6C,EAAMug6C,WACvB,OAAO,OAAI,OAAO,OAAS,CACzBhusC,IAAK6rJ,EAAU,cAAep+W,GAC9B2iD,UAAW8wK,EAAG,CACZlvM,aAAa,GACZo+B,IACF492C,GAAaxt6C,EAClB,EA2DEkw6C,gBAzsBoB,SAAyBjj6C,GAC7C,IAAIjN,EAAWiN,EAAMjN,SACjB4vD,EAAY3iD,EAAM2iD,UAClB8wK,EAAKzzN,EAAMyzN,GACX2qJ,EAAYp+W,EAAMo+W,UAClBmijC,EAAavg6C,EAAMug6C,WACnBv+5B,EAAahigB,EAAMgigB,WACnBnwB,EAAQ7xe,EAAM6xe,MAClB,OAAO,OAAI,OAAO,OAAS,CACzBt/Q,IAAK6rJ,EAAU,YAAap+W,GAC5B2iD,UAAW8wK,EAAG,CACZ,gBAAiBuuS,EACjB,WAAYnwB,GACXlvb,IACF492C,GAAaxt6C,EAClB,EA2rBEot6C,YAxCgB,SAAqBng6C,GACrC,IAAIjN,EAAWiN,EAAMjN,SACjB4vD,EAAY3iD,EAAM2iD,UAClB8wK,EAAKzzN,EAAMyzN,GACX2qJ,EAAYp+W,EAAMo+W,UAClB4jJ,EAAahigB,EAAMgigB,WACnBu+5B,EAAavg6C,EAAMug6C,WACvB,OAAO,OAAI,OAAO,OAAS,CACzBhusC,IAAK6rJ,EAAU,cAAep+W,GAC9B2iD,UAAW8wK,EAAG,CACZ,gBAAgB,EAChB,4BAA6BuuS,GAC5Br/c,IACF492C,GAAaxt6C,EAClB,EA2BEmw6C,eAxqBmB,SAAwBlj6C,GAC3C,IAAIjN,EAAWiN,EAAMjN,SACjB4vD,EAAY3iD,EAAM2iD,UAClB8wK,EAAKzzN,EAAMyzN,GACX8ssC,EAAavg6C,EAAMug6C,WACnBzP,EAAU9w5C,EAAM8w5C,QAChB1yiC,EAAYp+W,EAAMo+W,UAClBqkK,EAAWzihB,EAAMyihB,SACrB,OAAO,OAAI,OAAO,OAAS,CACzBlwT,IAAK6rJ,EAAU,iBAAkBp+W,GACjC2iD,UAAW8wK,EAAG,CACZ,mBAAmB,EACnB,4BAA6Bq9rC,EAC7B,6BAA8Bru4B,GAC7B9/d,IACF492C,GAAaxt6C,EAClB,GA0pBI436C,GAAoB,SAA2B3q6C,GACjD,OAAOuk6C,EAAeA,EAAe,CAAC,EAAGtjtC,IAAajhN,EAAMihN,WAC9D,oHEt/CA,SA3CsC,IAAA0J,aAAW,SAAU3qN,EAAOrL,GAChE,IAAIi26C,GAAkB,IAAAx18C,GAAgB4qC,GACtC,OAAoB,gBAAoB,EAAAzpC,GAAQ,OAAS,CACvDo+B,IAAKA,GACJi26C,GACL,mGCvBIznmC,EAAY,CAAC,oBAAqB,oBAAqB,eAAgB,aAAc,aAAc,WAAY,gBAAiB,cAAe,aAAc,SACjK,SAAS0nmC,EAAgB1qwC,GACvB,IAAI2qwC,EAAwB3qwC,EAAK4qwC,kBAC7BA,OAA8C,IAA1BD,EAAmC,GAAKA,EAC5DE,EAAwB7qwC,EAAK8qwC,kBAC7BA,OAA8C,IAA1BD,GAA2CA,EAC/DE,EAAoB/qwC,EAAKjwE,aACzBA,OAAqC,IAAtBg70C,EAA+B,KAAOA,EACrDvc,EAAkBxuvC,EAAKqiT,WACvB2o9B,EAAkBhrwC,EAAK2xvC,WACvBsZ,EAAgBjrwC,EAAKloH,SACrBs22C,EAAqBpuvC,EAAKquvC,cAC1B6c,EAAmBlrwC,EAAKo8vC,YACxB+O,EAAkBnrwC,EAAK+9vC,WACvBqN,EAAaprwC,EAAKjsM,MAClBw67C,GAAkB,OAAyBvuvC,EAAMgjK,GAEjDsugC,GAAY,IAAA5mnC,eAA6B/pN,IAApB6t5C,EAAgCA,EAAkBoc,GACvEpxG,GAAa,OAAe8X,EAAW,GACvCo9E,EAAkBl1F,EAAW,GAC7Bm1F,EAAqBn1F,EAAW,GAEhCuY,GAAa,IAAArnnC,eAA6B/pN,IAApBqq6C,EAAgCA,EAAkBF,GACxEpxG,GAAa,OAAeqY,EAAY,GACxCs5F,EAAkB3xG,EAAW,GAC7B4xG,EAAqB5xG,EAAW,GAEhCijB,GAAa,IAAAjynC,eAAwB/pN,IAAfyq6C,EAA2BA,EAAar70C,GAC9D6svC,GAAa,OAAeD,EAAY,GACxC4uF,EAAa3uF,EAAW,GACxB4uF,EAAgB5uF,EAAW,GAE3B9kyC,GAAW,IAAA4i1B,cAAY,SAAU3m6B,EAAOq87C,GACb,mBAAlB6a,GACTA,EAAcl38C,EAAOq87C,GAGvBob,EAAcz38C,EAChB,GAAG,CAACk38C,IACA5c,GAAgB,IAAA3zhB,cAAY,SAAU3m6B,EAAOq87C,GAC/C,IAAIvxyC,EAE8B,mBAAvBuvyC,IACTvvyC,EAAWuvyC,EAAmBr67C,EAAOq87C,IAGvCzB,OAAgChu5C,IAAbk+G,EAAyBA,EAAW9qJ,EACzD,GAAG,CAACq67C,IACA2P,GAAa,IAAArjiB,cAAY,WACI,mBAApBywiB,GACTA,IAGFG,GAAmB,EACrB,GAAG,CAACH,IACA/O,GAAc,IAAA1hiB,cAAY,WACI,mBAArBwwiB,GACTA,IAGFI,GAAmB,EACrB,GAAG,CAACJ,IACA7o9B,OAAiC1hd,IAApB6t5C,EAAgCA,EAAkBE,EAC/DiD,OAAiChx5C,IAApBqq6C,EAAgCA,EAAkBK,EAC/Dt38C,OAAuB4sC,IAAfyq6C,EAA2BA,EAAaG,EACpD,OAAO,QAAe,OAAe,CAAC,EAAGhd,GAAkB,CAAC,EAAG,CAC7Dls8B,WAAYA,EACZsv8B,WAAYA,EACZ752C,SAAUA,EACVu22C,cAAeA,EACf+N,YAAaA,EACb2B,WAAYA,EACZhq8C,MAAOA,GAEX,sCC9EA,IAAI60B,EAAYh2B,MAAQA,KAAKg2B,UAAa,WAStC,OARAA,EAAW12B,OAAOa,QAAU,SAASf,GACjC,IAAK,IAAI0B,EAAGF,EAAI,EAAGvB,EAAIe,UAAUC,OAAQO,EAAIvB,EAAGuB,IAE5C,IAAK,IAAIkC,KADThC,EAAIV,UAAUQ,GACOtB,OAAOI,UAAUC,eAAeC,KAAKkB,EAAGgC,KACzD1D,EAAE0D,GAAKhC,EAAEgC,IAEjB,OAAO1D,CACX,EACO42B,EAASz1B,MAAMP,KAAMI,UAChC,EACAd,OAAO4D,eAAeT,EAAS,aAAc,CAAEtB,OAAO,IACtDsB,EAAQo28C,oBAAiB,EACzB,IAAIC,EAAgB,EAAQ,OACxB72iB,EAAU,EAAQ,OAClB82iB,EAAsB,EAAQ,OAclCt28C,EAAQo28C,eAba,SAAUli7C,GAC3B,IAAI4k8B,EAAY5k8B,EAAG4k8B,UAAWy9e,EAAcri7C,EAAGqi7C,YAAar66C,EAAWhI,EAAGgI,SAAUs66C,EAAati7C,EAAGsi7C,WAAYlsW,EAAYp2kC,EAAGo2kC,UAAWmsW,EAAiBvi7C,EAAGui7C,eAAgBC,EAAqBxi7C,EAAGyi7C,WAAYxp3C,EAAYj5D,EAAGi5D,UAAW5vD,EAAWrJ,EAAGqJ,SAAUq56C,EAA8B1i7C,EAAGtiB,MACjSm5C,GAAK,EAAIur5C,EAAoBO,mBAAmB,CAChD/9e,UAAWA,EACXy9e,YAAaA,EACbr66C,SAAUA,EACVs66C,WAAYA,EACZlsW,UAAWA,IACXwsW,EAAsB/r5C,EAAG+r5C,oBAAqBH,EAAa5r5C,EAAG4r5C,WAC9DI,GAAuB,EAAIv3iB,EAAQxz3B,UAAS,WAAc,OAAQzY,EAASA,EAAS,CAAC,EAAGuj7C,GAAsBF,EAA+B,GAAG,CAACE,EAAqBF,IACtKI,GAAmB,EAAIx3iB,EAAQxz3B,UAAS,WAAc,OAAQzY,EAASA,EAAS,CAAC,EAAGoj7C,GAAaD,EAAsB,GAAG,CAACC,EAAYD,IAC3I,OAAQ,EAAIL,EAAc/4jC,MAAM,MAAO,CAAEnwT,UAAWA,EAAWv7E,MAAOml8C,EAAsBx56C,SAAU,EAAC,EAAI846C,EAAcl5sC,KAAK,MAAO,CAAEvrP,MAAOol8C,EAAkB7p3C,UAAWsp3C,IAAmBl56C,IAClM,qCC5BA,IAAIhK,EAAYh2B,MAAQA,KAAKg2B,UAAa,WAStC,OARAA,EAAW12B,OAAOa,QAAU,SAASf,GACjC,IAAK,IAAI0B,EAAGF,EAAI,EAAGvB,EAAIe,UAAUC,OAAQO,EAAIvB,EAAGuB,IAE5C,IAAK,IAAIkC,KADThC,EAAIV,UAAUQ,GACOtB,OAAOI,UAAUC,eAAeC,KAAKkB,EAAGgC,KACzD1D,EAAE0D,GAAKhC,EAAEgC,IAEjB,OAAO1D,CACX,EACO42B,EAASz1B,MAAMP,KAAMI,UAChC,EACAd,OAAO4D,eAAeT,EAAS,aAAc,CAAEtB,OAAO,IACtDsB,EAAQi38C,QAAUj38C,EAAQk38C,WAAal38C,EAAQo28C,eAAiBp28C,EAAQ628C,uBAAoB,EAC5F,IAAIR,EAAgB,EAAQ,OACxB72iB,EAAU,EAAQ,OAClB23iB,EAAkB,EAAQ,OAC1BC,EAAS,EAAQ,OACjBC,EAAe,EAAQ,OAC3Bx68C,OAAO4D,eAAeT,EAAS,aAAc,CAAEkB,YAAY,EAAMR,IAAK,WAAc,OAAO228C,EAAaH,UAAY,IACpH,IAAII,EAAqB,EAAQ,OAC7BC,EAAwB,EAAQ,OAChCjB,EAAsB,EAAQ,OAClCz58C,OAAO4D,eAAeT,EAAS,oBAAqB,CAAEkB,YAAY,EAAMR,IAAK,WAAc,OAAO418C,EAAoBO,iBAAmB,IACzI,IAAIW,EAAmB,EAAQ,OAC/B368C,OAAO4D,eAAeT,EAAS,iBAAkB,CAAEkB,YAAY,EAAMR,IAAK,WAAc,OAAO828C,EAAiBpB,cAAgB,IAChI,IAAIqB,EAAoB,CAAC,MAAO,OAAQ,QAAS,UAC7CC,GAAkB,EAAIl4iB,EAAQrqqB,aAAY,SAAUjhO,EAAIyj7C,GACxD,IAAI36mB,EAAS9o0B,EAAG8o0B,OAAQz/zB,EAAWrJ,EAAGqJ,SAAU04D,EAAU/hE,EAAG+hE,QAASlrC,EAAK72B,EAAG8T,UAAW4v6C,OAA2B,IAAP7s5C,EAAgB0s5C,EAAoB1s5C,EAAInoC,EAAKsR,EAAG4tvB,MAAOA,OAAe,IAAPl/vB,EAAgB,SAAWA,EAAIg2C,EAAK1kC,EAAGuhG,QAASA,OAAiB,IAAP78D,EAAgB,EAAIA,EAAI9yD,EAAKouB,EAAG2j7C,WAAYA,OAAoB,IAAP/x8C,GAAuBA,EAAI4iE,EAAKx0C,EAAGo2D,cAAeA,OAAuB,IAAP5hB,EAAgBjpE,OAAOiD,SAAS4rB,KAAOo6C,EAAI8N,EAAKtiD,EAAG4j7C,gBAAiBA,OAAyB,IAAPth4C,EAAgB8T,EAAgB9T,EAAIuh4C,EAAqB7j7C,EAAG6j7C,mBAAoB7gtC,EAAiBhjO,EAAGgjO,eAAgB/2H,EAAYjsG,EAAGisG,UAAW76B,EAAKpxE,EAAG8j7C,cAAeA,OAAuB,IAAP1y2C,EAAgB,WAAaA,EAAIC,EAAKrxE,EAAG+j7C,cAAeA,OAAuB,IAAP1y2C,EAAgB,EAAIA,EAAI2y2C,EAAiBhk7C,EAAGgk7C,eAAgB1y2C,EAAKtxE,EAAGik7C,oBAAqBA,OAA6B,IAAP3y2C,GAAwBA,EACvzBx9D,GAAY,EAAIsv6C,EAAmBc,kBAAkBp78C,MAAMkS,QAAQ0o8C,GAAqBA,EAAoB,CAACA,IAC7Gny2C,GAAK,EAAI8x2C,EAAsBc,qBAAqB,CACpDrw6C,UAAWA,EACX6v6C,WAAYA,EACZG,cAAeA,EACf730C,UAAWA,EACX230C,gBAAiBA,EACjBG,cAAeA,IACf5xzC,EAAO5gD,EAAG4gD,KAAMiyzC,EAAmB7y2C,EAAG6y2C,iBACtCC,GAAW,EAAI/4iB,EAAQ3j4B,UACvB6pE,GAAK,EAAI85zB,EAAQnqqB,UAAU,CAC3ByshB,MAAOA,EACP02rB,WAAY,EACZC,UAAW,EACXv86C,SAAU8L,EAAU,GACpBytF,QAASA,EACTqj2B,UAAWs+e,EAAOsB,WAClBnC,YAAaa,EAAOsB,WACpB3y6B,WAAYqx6B,EAAOsB,WACnBC,aAAcvB,EAAOsB,WACrBT,cAAeA,EACfW,WAAYxB,EAAOsB,WACnBG,eAAe,IACfC,EAAepz2C,EAAG,GAAIqz2C,EAAkBrz2C,EAAG,GAC3Csz2C,GAAoB,EAAIx5iB,EAAQ6F,cAAa,SAAUyziB,GAAgB,OAAOC,EAAgBD,EAAe,GAAG,IAChH/g8C,GAAK,EAAIs/7C,EAAaH,YAAY,CAClCl6mB,OAAQA,EACRu7mB,SAAUA,EACVR,mBAAoBA,EACpBzt3C,cAAeA,EACfwt3C,gBAAiBA,EACjB330C,UAAWA,EACX630C,cAAeA,EACfhw6C,UAAWA,EACX85uB,MAAOA,EACPrspB,QAASA,EACTwi1C,cAAeA,EACfJ,WAAYA,EACZmB,kBAAmBA,IACnBC,EAAkBlh8C,EAAGkh8C,gBAAiBC,EAAanh8C,EAAGmh8C,WAAYC,EAAWph8C,EAAGoh8C,UACpF,EAAI35iB,EAAQtrqB,kBAAiB,WACzB,IAAI5yJ,GAAe,EACf832C,EAAgB,WAChB,IAAIll7C,EAAI62B,EACR,GAAIiyyB,GAAU17vB,EAAc,CACxB,IAAIw33B,EAA4F,QAA/E5k8B,EAAKqk7C,aAA2C,EAASA,EAASj76C,eAA4B,IAAPpJ,OAAgB,EAASA,EAAGg9D,wBAChIql3C,EAAoG,QAArFxr5C,EAAKmu5C,aAA+C,EAASA,EAAW576C,eAA4B,IAAPytB,OAAgB,EAASA,EAAGmmC,wBAC3H,MAAb4n4B,GACe,MAAfy9e,IACE,EAAIa,EAAOiC,eAAevgf,EAAWggf,EAAahgf,YAChDy9e,EAAYj66C,QAAUw86C,EAAavC,YAAYj66C,OAC/Ci66C,EAAYh66C,SAAWu86C,EAAavC,YAAYh66C,QAChDu86C,EAAarj1C,UAAYA,GACzBqj1C,EAAah3rB,QAAUA,GACvB95uB,IAAcq+G,EAAKr+G,WACnB6v6C,IAAexxzC,EAAKwxzC,YACpBG,IAAkB3xzC,EAAK2xzC,eACvB730C,IAAckmB,EAAKlmB,WACnB230C,IAAoBzxzC,EAAKyxzC,iBACzBG,IAAkB5xzC,EAAK4xzC,eAC3BgB,IAEJX,IACIh32C,GACA7hG,OAAOo0G,sBAAsBul2C,EAErC,CACJ,EAEA,OADAA,IACO,WACH932C,GAAe,CACnB,CACJ,GAAG,CACCwgrB,EACAg2rB,EACAG,EACAj7mB,EACAvnuB,EACAyj1C,EACAJ,EAAah3rB,MACbg3rB,EAAahgf,UACbggf,EAAarj1C,QACbqj1C,EAAavC,YAAYh66C,OACzBu86C,EAAavC,YAAYj66C,MACzB286C,EACAjx6C,EACAq+G,EAAKyxzC,gBACLzxzC,EAAK4xzC,cACL5xzC,EAAKr+G,UACLq+G,EAAKwxzC,WACLxxzC,EAAKlmB,UACLkmB,EAAK2xzC,cACLH,EACA130C,EACA630C,EACAM,KAEJ,EAAI94iB,EAAQ3g4B,YAAW,WACnB,IAAIy66C,EAAiBJ,EAAW576C,QAEhC,OADAzgC,OAAOa,OAAO478C,EAAe1n8C,MAAOslP,GAC7B,WACHr6P,OAAOgU,KAAKqmP,QAAuDA,EAAiB,CAAC,GAAGz0O,SAAQ,SAAUL,GACtG,cAAck37C,EAAe1n8C,MAAMwQ,EACvC,GACJ,CACJ,GAAG,CAAC80O,EAAgB8lmB,EAAQk8mB,IAC5B,IAAIK,GAAuB,EAAI/5iB,EAAQ6F,cAAa,SAAU3o6B,GAC1D,IAAIw3B,EAAI62B,GACJiyyB,IACgC,QAA7B9o0B,EAAKgl7C,EAAW576C,eAA4B,IAAPpJ,OAAgB,EAASA,EAAGiG,SAASz9B,EAAE2Q,WACjD,QAA3B09C,EAAKwt5C,EAASj76C,eAA4B,IAAPytB,OAAgB,EAASA,EAAG5wB,SAASz9B,EAAE2Q,UAC7E6q8C,SAAgEA,EAAex78C,EAEvF,GAAG,CAACsg2B,EAAQk7mB,EAAgBgB,IACxBM,GAAqB,EAAIh6iB,EAAQ6F,cAAa,WAC1CkziB,EAASj76C,SAAW0/zB,GACpBv91B,OAAOo0G,uBAAsB,WAAc,OAAOol2C,GAAmB,GAE7E,GAAG,CAACA,EAAiBj8mB,KACrB,EAAIwiE,EAAQ3g4B,YAAW,WACnB,IAAIvQ,EAAOg8D,EAAcoB,cAAcp9D,KAIvC,OAHAA,EAAKpE,iBAAiB,QAASqv7C,EAAsBpB,GACrD7p7C,EAAKpE,iBAAiB,cAAeqv7C,EAAsBpB,GAC3D148C,OAAOyqB,iBAAiB,SAAUsv7C,GAC3B,WACHlr7C,EAAK1H,oBAAoB,QAAS2y7C,EAAsBpB,GACxD7p7C,EAAK1H,oBAAoB,cAAe2y7C,EAAsBpB,GAC9D148C,OAAOmnB,oBAAoB,SAAU4y7C,EACzC,CACJ,GAAG,CAACrB,EAAqBoB,EAAsBC,EAAoBlv3C,IACnE,IAAImv3C,GAAY,EAAIj6iB,EAAQ6F,cAAa,SAAUz+0B,GAC/C2x3C,EAASj76C,QAAUspD,EACA,MAAf+w3C,IAC2B,iBAAhBA,EACPA,EAAYr66C,QAAUspD,EAEM,mBAAhB+w3C,GACZA,EAAY/w3C,GAGxB,GAAG,CAAC+w3C,IAOJ,OAAQ,EAAItB,EAAc/4jC,MAAM+4jC,EAAcn5sC,SAAU,CAAE3/N,SAAU,EAN7B,EAAIii4B,EAAQ9qqB,cAAcn3N,EAAU,CAAE4B,IAAKs66C,IAEzEz8mB,GAEG,EAAIq5mB,EAAcl5sC,KAAKg6sC,EAAgBuC,cAAe,CAAEpw3C,QAAS4v3C,EAAW576C,QAASq86C,aAAcR,EAAS776C,QAASqhH,UAAWr0D,EAAe/sD,SAA6B,mBAAZ04D,EAAyBA,EAAQ6i3C,GAAgB7i3C,IAD9M,OAInB,IACAj2F,EAAQi38C,SAAU,EAAIz3iB,EAAQrqqB,aAAY,SAAU3qN,EAAOrL,GACvD,MAAsB,oBAAX1/B,OACA+qC,EAAMjN,UACV,EAAI846C,EAAcl5sC,KAAKu6sC,EAAiBnk7C,EAAS,CAAC,EAAGiX,EAAO,CAAErL,IAAKA,IAC9E,kCCrLAtiC,OAAO4D,eAAeT,EAAS,aAAc,CAAEtB,OAAO,IACtDsB,EAAQ058C,mBAAgB,EACxB,IAAIl6iB,EAAU,EAAQ,OAClB4C,EAAc,EAAQ,OAa1Bpi6B,EAAQ058C,cAZY,SAAUxl7C,GAC1B,IAAIyqH,EAAYzqH,EAAGyqH,UAAWr1D,EAAUp1D,EAAGo1D,QAASqw3C,EAAezl7C,EAAGyl7C,aAAcp86C,EAAWrJ,EAAGqJ,SASlG,OARA,EAAIii4B,EAAQtrqB,kBAAiB,WAGzB,OAFAv1G,EAAU7sI,YAAYw3E,GACtBq1D,EAAU7sI,YAAY6n8C,GACf,WACHh7zC,EAAUvkH,YAAYkvD,GACtBq1D,EAAUvkH,YAAYu/6C,EAC1B,CACJ,GAAG,CAACh7zC,EAAWr1D,EAASqw3C,KACjB,EAAIv3iB,EAAYltgB,cAAc33X,EAAU+rD,EACnD,sCCfA,IAAI/1D,EAAYh2B,MAAQA,KAAKg2B,UAAa,WAStC,OARAA,EAAW12B,OAAOa,QAAU,SAASf,GACjC,IAAK,IAAI0B,EAAGF,EAAI,EAAGvB,EAAIe,UAAUC,OAAQO,EAAIvB,EAAGuB,IAE5C,IAAK,IAAIkC,KADThC,EAAIV,UAAUQ,GACOtB,OAAOI,UAAUC,eAAeC,KAAKkB,EAAGgC,KACzD1D,EAAE0D,GAAKhC,EAAEgC,IAEjB,OAAO1D,CACX,EACO42B,EAASz1B,MAAMP,KAAMI,UAChC,EACAd,OAAO4D,eAAeT,EAAS,aAAc,CAAEtB,OAAO,IACtDsB,EAAQ628C,uBAAoB,EAC5B,IAAIr3iB,EAAU,EAAQ,OA+EtBx/5B,EAAQ628C,kBA9EgB,SAAU3i7C,GAC9B,IAAI4k8B,EAAY5k8B,EAAG4k8B,UAAWy9e,EAAcri7C,EAAGqi7C,YAAar66C,EAAWhI,EAAGgI,SAAUoukC,EAAYp2kC,EAAGo2kC,UAAWksW,EAAati7C,EAAGsi7C,WAwE9H,MAAO,CACHM,qBAxEsB,EAAIt3iB,EAAQxz3B,UAAS,WAC3C,MAAO,CACHypF,QAAS60+B,EAEjB,GAAG,CAACA,IAqEAqsW,YApEa,EAAIn3iB,EAAQxz3B,UAAS,WAClC,OAAQzY,EAAS,CAAE2I,SAAU,YAAc,WACvC,IAAI096C,EAAyB,EAAZtvW,EACbjukC,EAAMy87B,EAAUz87B,IAAMk66C,EAAYl66C,IAAMy87B,EAAUv87B,OAAS,EAAIq96C,EAAa,EAC5Ex96C,EAAO087B,EAAU187B,KAAOm66C,EAAYn66C,KAAO087B,EAAUx87B,MAAQ,EAAIs96C,EAAa,EAC9EC,EAAavvW,EACbwvW,EAAiBvD,EAAYj66C,MAAQgukC,EACrCyvW,EAAgBxD,EAAYh66C,OAAS+tkC,EAOzC,OALAlukC,GADAA,EAAOA,EAAOy96C,EAAaA,EAAaz96C,GAC1Bw96C,EAAaE,EAAiBA,EAAiBF,EAAax96C,EAE1EC,GADAA,EAAMA,EAAMw96C,EAAaA,EAAax96C,GAC1Bu96C,EAAaG,EAAgBA,EAAgBH,EAAav96C,EACtEA,EAAMqG,OAAOmH,MAAMxN,GAAO,EAAIA,EAC9BD,EAAOsG,OAAOmH,MAAMzN,GAAQ,EAAIA,EACxBF,GACJ,IAAK,QACD,MAAO,CACHu5U,UAAW,GAAGl2W,OAAO+qmC,EAAW,wBAChC30vB,aAAc,GAAGp2W,OAAO+qmC,EAAW,wBACnC50vB,YAAa,GAAGn2W,OAAO+qmC,EAAW,aAAa/qmC,OAAOi38C,GACtDp66C,KAAM,EACNC,IAAKA,GAEb,IAAK,OACD,MAAO,CACHo5U,UAAW,GAAGl2W,OAAO+qmC,EAAW,wBAChC30vB,aAAc,GAAGp2W,OAAO+qmC,EAAW,wBACnC10vB,WAAY,GAAGr2W,OAAO+qmC,EAAW,aAAa/qmC,OAAOi38C,GACrDp52C,MAAO,EACP/gE,IAAKA,GAEb,IAAK,SACD,MAAO,CACHu5U,WAAY,GAAGr2W,OAAO+qmC,EAAW,wBACjC50vB,YAAa,GAAGn2W,OAAO+qmC,EAAW,wBAClC30vB,aAAc,GAAGp2W,OAAO+qmC,EAAW,aAAa/qmC,OAAOi38C,GACvDn66C,IAAK,EACLD,KAAMA,GAEd,IAAK,MACD,MAAO,CACHw5U,WAAY,GAAGr2W,OAAO+qmC,EAAW,wBACjC50vB,YAAa,GAAGn2W,OAAO+qmC,EAAW,wBAClC70vB,UAAW,GAAGl2W,OAAO+qmC,EAAW,aAAa/qmC,OAAOi38C,GACpDn52C,OAAQ,EACRjhE,KAAMA,GAEd,QACI,MAAO,CACHvqB,QAAS,UAGxB,CAnD0C,GAoD/C,GAAG,CACC2k8C,EACAlsW,EACAxxI,EAAUv87B,OACVu87B,EAAU187B,KACV087B,EAAUz87B,IACVy87B,EAAUx87B,MACVi66C,EAAYh66C,OACZg66C,EAAYn66C,KACZm66C,EAAYl66C,IACZk66C,EAAYj66C,MACZJ,IAMR,+BC3FAr/B,OAAO4D,eAAeT,EAAS,aAAc,CAAEtB,OAAO,IACtDsB,EAAQg68C,mBAAgB,EACxB,IAAIx6iB,EAAU,EAAQ,OAClB43iB,EAAS,EAAQ,OAgBrBp38C,EAAQg68C,cAfY,SAAU9l7C,GAC1B,IAAI6j7C,EAAqB7j7C,EAAG6j7C,mBAAoB7gtC,EAAiBhjO,EAAGgjO,eAChE/3N,GAAM,EAAIqg4B,EAAQ3j4B,UAClBytD,GAAU,EAAIk20B,EAAQnqqB,WAAU,WAChC,OAAO,EAAI+htC,EAAO6C,iBAAiB,CAAE/itC,eAAgBA,EAAgB6gtC,mBAAoBA,GAC7F,IAAG,GAQH,OAPA,EAAIv4iB,EAAQtrqB,kBAAiB,WACzB5qK,EAAQ6D,UAAY4q3C,CACxB,GAAG,CAACA,EAAoBzu3C,KACxB,EAAIk20B,EAAQtrqB,kBAAiB,WACzBr3P,OAAOa,OAAO4rF,EAAQ13E,MAAOslP,EACjC,GAAG,CAACA,EAAgB5tK,IACpBnqD,EAAI7B,QAAUgsD,EACPnqD,CACX,gCClBAtiC,OAAO4D,eAAeT,EAAS,aAAc,CAAEtB,OAAO,IACtDsB,EAAQq48C,yBAAsB,EAC9B,IAAI74iB,EAAU,EAAQ,OAmCtBx/5B,EAAQq48C,oBAlCkB,SAAU7t6C,GAChC,IAAI0v6C,GAAgB,EAAI16iB,EAAQ3j4B,QAAQ2O,EAAMxC,WAC1Cmy6C,GAAiB,EAAI36iB,EAAQ3j4B,QAAQ2O,EAAMqt6C,YAC3CuC,GAAoB,EAAI56iB,EAAQ3j4B,QAAQ2O,EAAMwt6C,eAC9CqC,GAAgB,EAAI76iB,EAAQ3j4B,QAAQ2O,EAAM21F,WAC1Cm60C,GAAsB,EAAI96iB,EAAQ3j4B,QAAQ2O,EAAMst6C,iBAChDyC,GAAoB,EAAI/6iB,EAAQ3j4B,QAAQ2O,EAAMyt6C,eAC9CK,GAAmB,EAAI94iB,EAAQ6F,cAAa,WAC5C60iB,EAAc586C,QAAUkN,EAAMxC,UAC9Bmy6C,EAAe786C,QAAUkN,EAAMqt6C,WAC/BuC,EAAkB986C,QAAUkN,EAAMwt6C,cAClCqC,EAAc/86C,QAAUkN,EAAM21F,UAC9Bm60C,EAAoBh96C,QAAUkN,EAAMst6C,gBACpCyC,EAAkBj96C,QAAUkN,EAAMyt6C,aACtC,GAAG,CACCzt6C,EAAMst6C,gBACNtt6C,EAAMyt6C,cACNzt6C,EAAMxC,UACNwC,EAAMqt6C,WACNrt6C,EAAM21F,UACN31F,EAAMwt6C,gBAEV,MAAO,CACH3xzC,KAAM,CACFr+G,UAAWky6C,EAAc586C,QACzBu66C,WAAYsC,EAAe786C,QAC3B066C,cAAeoC,EAAkB986C,QACjC6iG,UAAWk60C,EAAc/86C,QACzBw66C,gBAAiBwC,EAAoBh96C,QACrC266C,cAAesC,EAAkBj96C,SAErCg76C,iBAAkBA,EAE1B,gCCpCAz78C,OAAO4D,eAAeT,EAAS,aAAc,CAAEtB,OAAO,IACtDsB,EAAQo48C,sBAAmB,EAC3B,IAAI54iB,EAAU,EAAQ,OAoBtBx/5B,EAAQo48C,iBAnBe,SAAUoC,GAC7B,IAAIC,GAAe,EAAIj7iB,EAAQ3j4B,QAAQ2+6C,GAgBvC,OAfY,EAAIh7iB,EAAQxz3B,UAAS,WAC7B,GAAIyu6C,EAAan96C,UAAYk96C,EACzB,OAAOC,EAAan96C,QACxB,GAAIm96C,EAAan96C,QAAQ1/B,SAAW488C,EAAc588C,OAE9C,OADA688C,EAAan96C,QAAUk96C,EAChBA,EAEX,IAAK,IAAIr88C,EAAI,EAAGA,EAAIq88C,EAAc588C,OAAQO,GAAK,EAC3C,GAAIq88C,EAAcr88C,KAAOs88C,EAAan96C,QAAQn/B,GAE1C,OADAs88C,EAAan96C,QAAUk96C,EAChBA,EAGf,OAAOC,EAAan96C,OACxB,GAAG,CAACk96C,GAER,gCCrBA398C,OAAO4D,eAAeT,EAAS,aAAc,CAAEtB,OAAO,IACtDsB,EAAQk38C,gBAAa,EACrB,IAAI13iB,EAAU,EAAQ,OAClB43iB,EAAS,EAAQ,OACjBsD,EAAkB,EAAQ,MAC1BC,EAAgB,CAChBz+6C,SAAU,QACV4iV,SAAU,UACVziV,IAAK,MACLD,KAAM,OAENw+6C,EAAc,CACd1+6C,SAAU,QACVG,IAAK,MACLD,KAAM,MACNE,MAAO,MACPC,OAAQ,MACRguK,WAAY,UAwJhBvqM,EAAQk38C,WAtJS,SAAUhj7C,GACvB,IAAI8o0B,EAAS9o0B,EAAG8o0B,OAAQu7mB,EAAWrk7C,EAAGqk7C,SAAUvw6C,EAAY9T,EAAG8T,UAAW+v6C,EAAqB7j7C,EAAG6j7C,mBAAoBzt3C,EAAgBp2D,EAAGo2D,cAAe61C,EAAYjsG,EAAGisG,UAAW630C,EAAgB9j7C,EAAG8j7C,cAAel2rB,EAAQ5tvB,EAAG4tvB,MAAOrspB,EAAUvhG,EAAGuhG,QAASoi1C,EAAa3j7C,EAAG2j7C,WAAYI,EAAgB/j7C,EAAG+j7C,cAAeH,EAAkB5j7C,EAAG4j7C,gBAAiBkB,EAAoB9k7C,EAAG8k7C,kBACnXG,GAAW,EAAIuB,EAAgBV,eAAe,CAC9CjC,mBAAoB,2BACpB7gtC,eAAgB0jtC,IAEhB1B,GAAa,EAAIwB,EAAgBV,eAAe,CAChDjC,mBAA0C,MAAtBA,GAChBA,EAAmBn68C,OAAS,GACL,iCAAvBm68C,EACE,gCAAgCx48C,OAAOw48C,GACvC,+BACN7gtC,eAAgByjtC,IAEhB1B,GAAkB,EAAIz5iB,EAAQ6F,cAAa,SAAUnx4B,GACrD,IAAI62B,EAAInoC,EACJg2C,OAAY,IAAP1kC,EAAgB,CAAC,EAAIA,EAAIpuB,EAAK8yD,EAAGqmL,cAAeA,OAAuB,IAAPn5O,EAAgB,EAAIA,EAAI4iE,EAAK9P,EAAGmte,WAAYA,OAAoB,IAAPr9d,EAAgB4hB,EAAc4G,wBAA0BxoB,EAAI8N,EAAK5d,EAAGkg6B,UAAWA,OAAmB,IAAPti5B,EAAgG,QAA/EzrB,EAAKwt5C,aAA2C,EAASA,EAASj76C,eAA4B,IAAPytB,OAAgB,EAASA,EAAGmmC,wBAA0B1a,EAAI8uB,EAAK1sC,EAAGii5C,UAAWA,OAAmB,IAAPv12C,EAAgG,QAA/E1iF,EAAKu27C,aAA2C,EAASA,EAAS776C,eAA4B,IAAP1a,OAAgB,EAASA,EAAGsuE,wBAA0BoU,EAAIC,EAAK3sC,EAAG294C,YAAaA,OAAqB,IAAPhx2C,EAAgB2z2C,EAAW576C,QAAQ4zD,wBAA0BqU,EAAIC,EAAK5sC,EAAG+/4C,aAAcA,OAAsB,IAAPnz2C,EAAgBsy2C,IAAoBxt3C,EACvuBy7c,EACA+x6B,EAAgB5m3C,wBAA0BsU,EAChD,GAAKsz3B,GAAc/yb,GAAei3T,EAAlC,CAGA,GAAI78tB,GAA+B,aAAlB630C,EAA8B,CAC3C,IAAIvy2C,EAA0B,mBAAd06B,EACVA,EAAU,CACR241B,UAAWA,EACXy9e,YAAaA,EACbxw6B,WAAYA,EACZ4y6B,aAAcA,EACdlj1C,QAASA,EACTqspB,MAAOA,EACP22rB,UAAW,EACXD,WAAY,EACZP,cAAeA,EACfW,WAAYxB,EAAOsB,WACnBG,eAAe,IAEjB140C,EAAW260C,EAAWr12C,EAAGppE,IAAK0+6C,EAAYt12C,EAAGrpE,KAC/C4+6C,EAAc568C,KAAKogD,MAAMulf,EAAW3pgB,KAAO2+6C,EAAYF,EAAUz+6C,MACjE6+6C,EAAa768C,KAAKogD,MAAMulf,EAAW1pgB,IAAMy+6C,EAAWD,EAAUx+6C,KAqBlE,OApBA686C,EAAW576C,QAAQ1rB,MAAMuuH,UAAY,aAAa5gI,OAAOy78C,EAAa,QAAQz78C,OAAO078C,EAAY,YACjGjC,EAAkB,CACdlgf,UAAWA,EACXy9e,aAAa,EAAIa,EAAO8D,YAAY,CAChC9+6C,KAAM4+6C,EACN3+6C,IAAK4+6C,EACL3+6C,MAAOi66C,EAAYj66C,MACnBC,OAAQg66C,EAAYh66C,SAExBwpgB,WAAYA,EACZ4y6B,aAAcA,EACdlj1C,QAASA,EACTqspB,MAAOA,EACP3hpB,UAAW,CAAE9jG,IAAKy+6C,EAAU1+6C,KAAM2+6C,GAClCtC,UAAW,EACXD,WAAY,EACZP,cAAeA,EACfW,WAAYxB,EAAOsB,WACnBG,eAAe,GAGvB,CACA,IAAIsC,EAAcl8tC,IAAkBj3M,EAAUpqC,OAC1Cs+B,EAAWi/6C,EAAcnz6C,EAAU,GAAKA,EAAUi3M,GAClDv5I,GAAK,EAAI0x2C,EAAOgE,mBAAmB,CACnCtif,UAAWA,EACXy9e,YAAaA,EACboC,aAAcA,EACdz86C,SAAUA,EACV4lvB,MAAOA,EACPrspB,QAASA,EACToi1C,WAAYA,GACbI,GAAgBhn3C,EAAOyU,EAAGzU,KAC7B,GADuDyU,EAAG212C,mBACjCxD,IAAesD,EACpClC,EAAgB,CACZh6tC,cAAeA,EAAgB,EAC/B65uB,UAAWA,EACXy9e,YAAaA,EACbxw6B,WAAYA,EACZ4y6B,aAAcA,QANtB,CAUA,IAAIt86C,EAAM40D,EAAK50D,IAAKD,EAAO60D,EAAK70D,KAAME,EAAQ20D,EAAK30D,MAAOC,EAAS00D,EAAK10D,OACpE++6C,EAAczD,IAAesD,EAC7Bpj8C,GAAK,EAAIq/7C,EAAOmE,sBAAsBtq3C,EAAM0n3C,EAAcV,GAAgBO,EAAazg8C,EAAGqkB,KAAMq86C,EAAY1g8C,EAAGskB,IAC/Gm/6C,EAAWn/6C,EACXo/6C,EAAYr/6C,EACZk/6C,IACAE,EAAW/C,EACXgD,EAAYjD,GAEhBgD,EAAWp78C,KAAKogD,MAAMg75C,EAAWX,EAAUx+6C,KAC3Co/6C,EAAYr78C,KAAKogD,MAAMi75C,EAAYZ,EAAUz+6C,MAC7C886C,EAAW576C,QAAQ1rB,MAAMuuH,UAAY,aAAa5gI,OAAOk88C,EAAW,QAAQl88C,OAAOi88C,EAAU,OAC7F,IAAIE,EAAsB,CACtBr/6C,IAAKs86C,EAAat86C,IAAM476C,EAAgBuD,EACxCp/6C,KAAMu86C,EAAav86C,KAAO676C,EAAgBwD,EAC1Cr+2C,MAAOq+2C,EAAYn/6C,EAAQq86C,EAAav72C,MAAQ662C,EAChD562C,OAAQm+2C,EAAWj/6C,EAASo86C,EAAat72C,OAAS462C,GAElDa,EAAe,CACfhgf,UAAWA,EACXy9e,aAAa,EAAIa,EAAO8D,YAAY,CAAE9+6C,KAAMq/6C,EAAWp/6C,IAAKm/6C,EAAUl/6C,MAAOA,EAAOC,OAAQA,IAC5FwpgB,WAAYA,EACZ4y6B,aAAcA,EACdz86C,SAAUA,EACV4lvB,MAAOA,EACPrspB,QAASA,EACTgj1C,UAAWA,EAAYp86C,EACvBm86C,WAAYA,EAAap86C,EACzB676C,cAAeA,EACfW,WAAY,CACRv86C,IAAKq/6C,EAAoBr/6C,KAAO,EAAI,EAAIq/6C,EAAoBr/6C,IAC5DD,KAAMs/6C,EAAoBt/6C,MAAQ,EAAI,EAAIs/6C,EAAoBt/6C,KAC9DghE,MAAOs+2C,EAAoBt+2C,OAAS,EAAI,EAAIs+2C,EAAoBt+2C,MAChEC,OAAQq+2C,EAAoBr+2C,QAAU,EAAI,EAAIq+2C,EAAoBr+2C,QAEtEw72C,cAAe6C,EAAoBr/6C,IAAM,GACrCq/6C,EAAoBt/6C,KAAO,GAC3Bs/6C,EAAoBt+2C,MAAQ,GAC5Bs+2C,EAAoBr+2C,OAAS,GAErC,GAAI8iC,EAAW,CACX640C,EAAkBF,GAClB,IAAInz2C,EAA0B,mBAAdw6B,EAA2BA,EAAU240C,GAAgB340C,EAAWw70C,GAAeh22C,EAAGtpE,IAAKu/6C,GAAgBj22C,EAAGvpE,KAC1H886C,EAAW576C,QAAQ1rB,MAAMuuH,UAAY,aAAa5gI,OAAOa,KAAKogD,MAAMi75C,GAAaG,SAAqDA,GAAgB,IAAK,QAAQr88C,OAAOa,KAAKogD,MAAMg75C,GAAYG,SAAmDA,GAAe,IAAK,OACxQ7C,EAAaN,YAAcoD,SAAqDA,GAAgB,EAChG9C,EAAaL,WAAakD,SAAmDA,GAAe,EAC5F7C,EAAa340C,UAAY,CAAE9jG,IAAKs/6C,GAAcv/6C,KAAMw/6C,GACxD,CACA5C,EAAkBF,EAjDlB,CA7DA,CA+GJ,GAAG,CACCxu3C,EACAiu3C,EACAY,EACAD,EACApB,EACA96mB,EACA78tB,EACA630C,EACAhw6C,EACA85uB,EACArspB,EACAoi1C,EACAI,EACAe,IAEJ,MAAO,CAAEC,gBAAiBA,EAAiBC,WAAYA,EAAYC,SAAUA,EACjF,oCCxKA,IAAI5l7C,EAAYh2B,MAAQA,KAAKg2B,UAAa,WAStC,OARAA,EAAW12B,OAAOa,QAAU,SAASf,GACjC,IAAK,IAAI0B,EAAGF,EAAI,EAAGvB,EAAIe,UAAUC,OAAQO,EAAIvB,EAAGuB,IAE5C,IAAK,IAAIkC,KADThC,EAAIV,UAAUQ,GACOtB,OAAOI,UAAUC,eAAeC,KAAKkB,EAAGgC,KACzD1D,EAAE0D,GAAKhC,EAAEgC,IAEjB,OAAO1D,CACX,EACO42B,EAASz1B,MAAMP,KAAMI,UAChC,EACAd,OAAO4D,eAAeT,EAAS,aAAc,CAAEtB,OAAO,IACtDsB,EAAQu78C,qBAAuBv78C,EAAQo78C,kBAAoBp78C,EAAQ678C,uBAAyB778C,EAAQi68C,gBAAkBj68C,EAAQq58C,cAAgBr58C,EAAQk78C,WAAal78C,EAAQ048C,gBAAa,EACxL148C,EAAQ048C,WAAa,CACjBr86C,IAAK,EACLD,KAAM,EACNghE,MAAO,EACPC,OAAQ,EACR/gE,MAAO,EACPC,OAAQ,GAaZv8B,EAAQk78C,WAXS,SAAUhn7C,GACvB,IAAImI,EAAMnI,EAAGmI,IAAKD,EAAOlI,EAAGkI,KAAME,EAAQpI,EAAGoI,MAAOC,EAASrI,EAAGqI,OAChE,MAAO,CACHF,IAAKA,EACLD,KAAMA,EACNE,MAAOA,EACPC,OAAQA,EACR6gE,MAAOhhE,EAAOE,EACd+gE,OAAQhhE,EAAME,EAEtB,EAWAv8B,EAAQq58C,cATY,SAAUt8/B,EAAOD,GACjC,OAAOC,IAAUD,IACXC,aAAqC,EAASA,EAAM1/W,WAAay/W,aAAqC,EAASA,EAAMz/W,UAClH0/W,aAAqC,EAASA,EAAMxgb,WAAaugb,aAAqC,EAASA,EAAMvgb,UACrHwgb,aAAqC,EAASA,EAAM3gb,SAAW0gb,aAAqC,EAASA,EAAM1gb,QACnH2gb,aAAqC,EAASA,EAAM3/W,UAAY0/W,aAAqC,EAASA,EAAM1/W,SACpH2/W,aAAqC,EAASA,EAAM1gb,QAAUygb,aAAqC,EAASA,EAAMzgb,OAClH0gb,aAAqC,EAASA,EAAMzgb,UAAYwgb,aAAqC,EAASA,EAAMxgb,MACjI,EAUAt8B,EAAQi68C,gBARc,SAAU/l7C,GAC5B,IAAIgjO,EAAiBhjO,EAAGgjO,eAAgB6gtC,EAAqB7j7C,EAAG6j7C,mBAC5Dp5zC,EAAYl/I,OAAOiD,SAASmE,cAAc,OAI9C,OAHIkx8C,IACAp5zC,EAAUxxD,UAAY4q3C,GAC1Bl78C,OAAOa,OAAOihJ,EAAU/sI,MAAOslP,GACxBv4G,CACX,EAoDA3+I,EAAQ678C,uBAlDqB,SAAU3/6C,EAAU487B,EAAWy9e,EAAa9g1C,EAASqspB,GAC9E,IAGIzlvB,EACAD,EAJA0/6C,EAAahjf,EAAU187B,KAAO087B,EAAUx87B,MAAQ,EAChDy/6C,EAAajjf,EAAUz87B,IAAMy87B,EAAUv87B,OAAS,EAChDD,EAAQi66C,EAAYj66C,MAAOC,EAASg66C,EAAYh66C,OAGpD,OAAQL,GACJ,IAAK,OACDG,EAAM0/6C,EAAax/6C,EAAS,EAC5BH,EAAO087B,EAAU187B,KAAOq5F,EAAUn5F,EACpB,UAAVwlvB,IACAzlvB,EAAMy87B,EAAUz87B,KAEN,QAAVylvB,IACAzlvB,EAAMy87B,EAAUz73B,OAAS9gE,GAE7B,MACJ,IAAK,SACDF,EAAMy87B,EAAUz73B,OAASo4B,EACzBr5F,EAAO0/6C,EAAax/6C,EAAQ,EACd,UAAVwlvB,IACA1lvB,EAAO087B,EAAU187B,MAEP,QAAV0lvB,IACA1lvB,EAAO087B,EAAU173B,MAAQ9gE,GAE7B,MACJ,IAAK,QACDD,EAAM0/6C,EAAax/6C,EAAS,EAC5BH,EAAO087B,EAAU173B,MAAQq4B,EACX,UAAVqspB,IACAzlvB,EAAMy87B,EAAUz87B,KAEN,QAAVylvB,IACAzlvB,EAAMy87B,EAAUz73B,OAAS9gE,GAE7B,MACJ,QACIF,EAAMy87B,EAAUz87B,IAAME,EAASk5F,EAC/Br5F,EAAO0/6C,EAAax/6C,EAAQ,EACd,UAAVwlvB,IACA1lvB,EAAO087B,EAAU187B,MAEP,QAAV0lvB,IACA1lvB,EAAO087B,EAAU173B,MAAQ9gE,GAIrC,OAAO,EAAIt8B,EAAQk78C,YAAY,CAAE9+6C,KAAMA,EAAMC,IAAKA,EAAKC,MAAOA,EAAOC,OAAQA,GACjF,EAeAv8B,EAAQo78C,kBAbgB,SAAUln7C,EAAI+j7C,GAClC,IAAI/76C,EAAWhI,EAAGgI,SAAU4lvB,EAAQ5tvB,EAAG4tvB,MAAOg3M,EAAY5k8B,EAAG4k8B,UAAWy9e,EAAcri7C,EAAGqi7C,YAAaoC,EAAezk7C,EAAGyk7C,aAAclj1C,EAAUvhG,EAAGuhG,QAASoi1C,EAAa3j7C,EAAG2j7C,WACxK5m3C,GAAO,EAAIjxF,EAAQ678C,wBAAwB3/6C,EAAU487B,EAAWy9e,EAAa9g1C,EAASqspB,GAM1F,MAAO,CACH7wrB,KAAMA,EACNoq3C,kBAPoBxD,IACL,QAAb376C,GAAsB+0D,EAAK50D,IAAMs86C,EAAat86C,IAAM476C,GACpC,SAAb/76C,GAAuB+0D,EAAK70D,KAAOu86C,EAAav86C,KAAO676C,GAC1C,UAAb/76C,GAAwB+0D,EAAKmM,MAAQu72C,EAAav72C,MAAQ662C,GAC7C,WAAb/76C,GAAyB+0D,EAAKoM,OAASs72C,EAAat72C,OAAS462C,GAK1E,EAaAj48C,EAAQu78C,qBAXmB,SAAUhF,EAAaoC,EAAcV,GAC5D,IAAI+D,EAAcrD,EAAat86C,IAAM476C,EACjCgE,EAAetD,EAAav86C,KAAO676C,EACnCiE,EAAgBvD,EAAav72C,MAAQ662C,EACrCkE,EAAiBxD,EAAat72C,OAAS462C,EACvC576C,EAAMk66C,EAAYl66C,IAAM2/6C,EAAcA,EAAczF,EAAYl66C,IACpEA,EAAMA,EAAMk66C,EAAYh66C,OAAS4/6C,EAAiBA,EAAiB5F,EAAYh66C,OAASF,EACxF,IAAID,EAAOm66C,EAAYn66C,KAAO6/6C,EAAeA,EAAe1F,EAAYn66C,KAExE,OADAA,EAAOA,EAAOm66C,EAAYj66C,MAAQ4/6C,EAAgBA,EAAgB3F,EAAYj66C,MAAQF,GAC/E,EAAIp8B,EAAQk78C,YAAY3n7C,EAASA,EAAS,CAAC,EAAGgj7C,GAAc,CAAEl66C,IAAKA,EAAKD,KAAMA,IACzF,iEChHA,IAAIgg7C,EAEFA,EADoB,oBAAX388C,OACMA,OAGU,oBAATE,KAEDA,KAEA,EAAAD,EAEjB,IAAI288C,EAAc,KACdx8zB,EAAe,KACnB,MACMy8zB,EAAiBF,EAAany7C,aAC9Bsy7C,EAAeH,EAAah57C,WAC5Bo57C,EAAyBJ,EAAapo2C,sBAAwBoo2C,EAAa9uF,yBAA2B8uF,EAAa7uF,2BACnHkvF,EAA0BL,EAAavo2C,uBAAyBuo2C,EAAarjgB,0BAA4BqjgB,EAAar8zB,4BAC9F,MAA1By8zB,GAA6D,MAA3BC,GAGpCJ,EAAcC,EACdz8zB,EAAe,SAA4Cp5nB,GACzD,OAAO817C,EAAa917C,EAVC,GAWvB,IAKA417C,EAAc,UAAsBK,EAAkB70K,IACpD20K,EAAuBE,GACvBJ,EAAez0K,EACjB,EACAhopB,EAAe,SAAqDp5nB,GAClE,MAAMi27C,EAAmBD,GAAwB,WAC/CH,EAAez0K,GACfphxC,GACF,IACMohxC,EAAY00K,GAAa,WAC7BC,EAAuBE,GACvBj27C,GACF,GA5BqB,IA6BrB,MAAO,CAACi27C,EAAkB70K,EAC5B,GA8JF,MAAM80K,UAAkB,EAAA1yzC,UACtB,WAAAzsJ,IAAeo3C,GACb7J,SAAS6J,GACTr3C,KAAK2L,MAAQ,CACXqzB,OAAQh/B,KAAKitC,MAAMi0Y,eAAiB,EACpCm+hC,aAAcr/8C,KAAKitC,MAAMi0Y,eAAiB,EAC1Co+hC,YAAat/8C,KAAKitC,MAAMiw5B,cAAgB,EACxCn+5B,MAAO/+B,KAAKitC,MAAMiw5B,cAAgB,GAEpCl97B,KAAKu/8C,WAAa,KAClBv/8C,KAAKw/8C,qBAAuB,KAC5Bx/8C,KAAKy/8C,YAAc,KACnBz/8C,KAAK0/8C,gBAAkB,KACvB1/8C,KAAK86K,WAAa,KAClB96K,KAAK2/8C,UAAY,KACf3/8C,KAAK86K,WAAa,KAClB,MAAM,cACJ8kyC,EAAa,aACbC,EAAY,SACZ5h7C,GACEj+B,KAAKitC,MACT,GAAIjtC,KAAKy/8C,YAAa,CAKpB,MAAMpr8C,EAAQnS,OAAOyzZ,iBAAiB31Z,KAAKy/8C,cAAgB,CAAC,EACtDt/lC,EAAc91M,WAAWh2J,EAAM8rW,aAAe,KAC9CF,EAAe51M,WAAWh2J,EAAM4rW,cAAgB,KAChDD,EAAa31M,WAAWh2J,EAAM2rW,YAAc,KAC5CE,EAAgB71M,WAAWh2J,EAAM6rW,eAAiB,KAClDxsR,EAAO1zF,KAAKy/8C,YAAY9r3C,wBACxB0r3C,EAAe3r3C,EAAK10D,OAASghV,EAAaE,EAC1Co/lC,EAAc5r3C,EAAK30D,MAAQohV,EAAcF,EACzCjhV,EAASh/B,KAAKy/8C,YAAY9+6C,aAAeq/U,EAAaE,EACtDnhV,EAAQ/+B,KAAKy/8C,YAAY7+6C,YAAcu/U,EAAcF,GACtD2/lC,GAAkB5/8C,KAAK2L,MAAMqzB,SAAWA,GAAUh/B,KAAK2L,MAAM0z8C,eAAiBA,KAAkBQ,GAAiB7/8C,KAAK2L,MAAMozB,QAAUA,GAAS/+B,KAAK2L,MAAM2z8C,cAAgBA,KAC7Kt/8C,KAAK0qI,SAAS,CACZ1rG,SACAD,QACAsg7C,eACAC,gBAEsB,mBAAbrh7C,GACTA,EAAS,CACPe,SACAqg7C,eACAC,cACAvg7C,UAIR,GAEF/+B,KAAK8/8C,QAAUC,IACb//8C,KAAKu/8C,WAAaQ,CAAS,CAE/B,CACA,iBAAAzikC,GACE,MAAM,MACJhoX,GACEt1B,KAAKitC,MACHvL,EAAa1hC,KAAKu/8C,WAAav/8C,KAAKu/8C,WAAW796C,WAAa,KAClE,GAAkB,MAAdA,GAAsBA,EAAWysD,eAAiBzsD,EAAWysD,cAAcsnU,aAAe/zX,aAAsBA,EAAWysD,cAAcsnU,YAAY92J,YAAa,CAIpK3+P,KAAKy/8C,YAAc/96C,EAInB,MAAMs+6C,EAAyBt+6C,EAAWysD,cAAcsnU,YAAYzyT,eACtC,MAA1Bg92C,GACFhg9C,KAAK0/8C,gBAAkB,IAAIM,GAAuB,KAIhDhg9C,KAAK86K,WAAaj1J,WAAW7lB,KAAK2/8C,UAAW,EAAE,IAEjD3/8C,KAAK0/8C,gBAAgB5u4C,QAAQpvC,KAI7B1hC,KAAKw/8C,qBA/Ob,SAAmClq7C,GACjC,IAAI2q7C,EACA3mY,EACA4mY,EACAC,EACAC,EACAC,EACAC,EACJ,MAAM3zO,EAAkC,oBAAbxnuC,UAA4BA,SAASwnuC,YAChE,IAAKA,EAAa,CAChB0zO,EAAgB,SAAUt03C,GACxB,MAAMw8C,EAAWx8C,EAAQw03C,mBACvB78xC,EAASn7C,EAAS53C,kBAClB6v3C,EAAWj40C,EAASk40C,iBACpBC,EAAch9xC,EAAO/yF,kBACvB6v3C,EAAS507B,WAAa407B,EAAS9g9B,YAC/B8g9B,EAASt92C,UAAYs92C,EAASr92C,aAC9Bu92C,EAAYrs8C,MAAM0qB,MAAQ2kJ,EAAO9iJ,YAAc,EAAI,KACnD8/6C,EAAYrs8C,MAAM2qB,OAAS0kJ,EAAO/iJ,aAAe,EAAI,KACrD+iJ,EAAOkoW,WAAaloW,EAAOg8U,YAC3Bh8U,EAAOxgF,UAAYwgF,EAAOvgF,YAC5B,EACAi92C,EAAgB,SAAUr03C,GACxB,OAAOA,EAAQnrD,cAAgBmrD,EAAQ403C,eAAe5h7C,OAASgtD,EAAQprD,eAAiBorD,EAAQ403C,eAAe3h7C,MACjH,EACAsh7C,EAAiB,SAAUnh9C,GAEzB,GAAIA,EAAE2Q,OAAO8/E,WAAmD,mBAA/BzwF,EAAE2Q,OAAO8/E,UAAUpvF,SAA0BrB,EAAE2Q,OAAO8/E,UAAUpvF,QAAQ,oBAAsB,GAAKrB,EAAE2Q,OAAO8/E,UAAUpvF,QAAQ,kBAAoB,EACjL,OAEF,MAAMurF,EAAU/rF,KAChBqg9C,EAAcrg9C,MACVA,KAAK4g9C,eACP9B,EAAY9+8C,KAAK4g9C,eAEnB5g9C,KAAK4g9C,cAAgBt+zB,GAAa,WAC5B89zB,EAAcr03C,KAChBA,EAAQ403C,eAAe5h7C,MAAQgtD,EAAQnrD,YACvCmrD,EAAQ403C,eAAe3h7C,OAAS+sD,EAAQprD,aACxCorD,EAAQ803C,oBAAoB377C,SAAQ,SAA+BhU,GACjEA,EAAGtR,KAAKmsF,EAAS5sF,EACnB,IAEJ,GACF,EAGA,IAAI4wP,GAAY,EACZ+wtC,EAAiB,GACrBZ,EAAsB,iBACtB,MAAMa,EAAc,kBAAkBn88C,MAAM,KAC5C,IAAIo88C,EAAc,uEAAuEp88C,MAAM,KAC3Fq88C,EAAM,GACV,CACE,MAAMniY,EAAM35kC,SAASmE,cAAc,eAInC,QAHgCykC,IAA5B+wiC,EAAIzqkC,MAAMilkC,gBACZvp1B,GAAY,IAEI,IAAdA,EACF,IAAK,IAAInvP,EAAI,EAAGA,EAAImg9C,EAAY1g9C,OAAQO,IACtC,QAAoDmtC,IAAhD+wiC,EAAIzqkC,MAAM0s8C,EAAYng9C,GAAK,iBAAgC,CAC7Dqg9C,EAAMF,EAAYng9C,GAClBkg9C,EAAiB,IAAMG,EAAI1x8C,cAAgB,IAC3C2w8C,EAAsBc,EAAYpg9C,GAClCmvP,GAAY,EACZ,KACF,CAGN,CACAup1B,EAAgB,aAChB2mY,EAAqB,IAAMa,EAAiB,aAAexnY,EAAgB,gDAC3E6mY,EAAiBW,EAAiB,kBAAoBxnY,EAAgB,IACxE,CA6EA,MAAO,CACL4nY,kBA1DwB,SAAUn13C,EAAS76E,GAC3C,GAAIy7tC,EACF5gpC,EAAQ4gpC,YAAY,WAAYz7tC,OAC3B,CACL,IAAK66E,EAAQw03C,mBAAoB,CAC/B,MAAM755C,EAAMqlC,EAAQoC,cACdgz3C,EAAetC,EAAalpjC,iBAAiB5pU,GAC/Co13C,GAA0C,WAA1BA,EAAaxi7C,WAC/BotD,EAAQ13E,MAAMsqB,SAAW,YA3BZ,SAAU+nB,GAC7B,IAAKA,EAAI0nC,eAAe,uBAAwB,CAE9C,MAAMoxK,GAAOygtC,GAA0C,IAAM,uBAAyBE,GAAkC,IAA5G,6VACVp55C,EAAOL,EAAIK,MAAQL,EAAIjlB,qBAAqB,QAAQ,GACpDptB,EAAQqyC,EAAIp9C,cAAc,SAC5B+K,EAAMkX,GAAK,sBACXlX,EAAM9H,KAAO,WACA,MAAT+oB,GACFjhB,EAAMsoB,aAAa,QAASrH,GAE1BjhB,EAAM0qY,WACR1qY,EAAM0qY,WAAWC,QAAUx/I,EAE3BnrP,EAAME,YAAYmyC,EAAIu0M,eAAeuE,IAEvCz4M,EAAKxyC,YAAYF,EACnB,CACF,CAWM+s8C,CAAa165C,GACbqlC,EAAQ403C,eAAiB,CAAC,EAC1B503C,EAAQ803C,oBAAsB,IAC7B903C,EAAQw03C,mBAAqB755C,EAAIp9C,cAAc,QAAQsmF,UAAY,kBACpE,MAAMyx3C,EAAgB365C,EAAIp9C,cAAc,OACxC+38C,EAAczx3C,UAAY,iBAC1Byx3C,EAAc9s8C,YAAYmyC,EAAIp9C,cAAc,QAC5C,MAAMg48C,EAAkB565C,EAAIp9C,cAAc,OAC1Cg48C,EAAgB1x3C,UAAY,mBAC5B7D,EAAQw03C,mBAAmBhs8C,YAAY8s8C,GACvCt13C,EAAQw03C,mBAAmBhs8C,YAAY+s8C,GACvCv13C,EAAQx3E,YAAYw3E,EAAQw03C,oBAC5BF,EAAct03C,GACdA,EAAQp/D,iBAAiB,SAAU2z7C,GAAgB,GAG/CJ,IACFn03C,EAAQw03C,mBAAmBgB,sBAAwB,SAA2Bpi9C,GACxEA,EAAEm6kC,gBAAkBA,GACtB+mY,EAAct03C,EAElB,EACAA,EAAQw03C,mBAAmB5z7C,iBAAiBuz7C,EAAqBn03C,EAAQw03C,mBAAmBgB,uBAEhG,CACAx13C,EAAQ803C,oBAAoBh/8C,KAAKqP,EACnC,CACF,EAsBEsw8C,qBArB2B,SAAUz13C,EAAS76E,GAC9C,GAAIy7tC,EACF5gpC,EAAQ01vC,YAAY,WAAYvw0C,QAGhC,GADA66E,EAAQ803C,oBAAoB597C,OAAO8oE,EAAQ803C,oBAAoBrg9C,QAAQ0Q,GAAK,IACvE66E,EAAQ803C,oBAAoBxg9C,OAAQ,CACvC0rF,EAAQ1iE,oBAAoB,SAAUi37C,GAAgB,GAClDv03C,EAAQw03C,mBAAmBgB,wBAC7Bx13C,EAAQw03C,mBAAmBl37C,oBAAoB627C,EAAqBn03C,EAAQw03C,mBAAmBgB,uBAC/Fx13C,EAAQw03C,mBAAmBgB,sBAAwB,MAErD,IACEx13C,EAAQw03C,oBAAsBx03C,EAAQlvD,YAAYkvD,EAAQw03C,mBAC5D,CAAE,MAAOph9C,GAET,CACF,CAEJ,EAKF,CAqFoCsi9C,CAA0Bns7C,GACtDt1B,KAAKw/8C,qBAAqB0B,kBAAkBx/6C,EAAY1hC,KAAK2/8C,YAE/D3/8C,KAAK2/8C,WACP,CACF,CACA,oBAAAlikC,GACMz9Y,KAAKy/8C,cACHz/8C,KAAKw/8C,sBACPx/8C,KAAKw/8C,qBAAqBgC,qBAAqBxh9C,KAAKy/8C,YAAaz/8C,KAAK2/8C,WAEhD,OAApB3/8C,KAAK86K,YACPpuJ,aAAa1sB,KAAK86K,YAEhB96K,KAAK0/8C,iBACP1/8C,KAAK0/8C,gBAAgB3u4C,aAG3B,CACA,MAAAu9C,GACE,MAAM,SACJtuF,EAAQ,cACRkhZ,EAAa,aACbg8gB,EAAY,cACZ0ihB,GAAgB,EAAK,aACrBC,GAAe,EAAK,4BACpB6B,GAA8B,EAAK,MACnCps7C,EAAK,SACL2I,EAAQ,MACR5pB,EAAQ,CAAC,EAAC,QACV4mD,EAAU,SACPsuK,GACDvpO,KAAKitC,OACH,OACJjO,EAAM,aACNqg7C,EAAY,YACZC,EAAW,MACXvg7C,GACE/+B,KAAK2L,MAKHg28C,EAAa,CACjBpgmC,SAAU,WAENqgmC,EAAc,CAAC,EAIrB,IAAIC,GAAoB,EAoBxB,OAnBKjC,IACY,IAAX5g7C,IACF6i7C,GAAoB,GAEtBF,EAAW3i7C,OAAS,EACpB4i7C,EAAY5i7C,OAASA,EACrB4i7C,EAAYvC,aAAeA,GAExBQ,IACW,IAAV9g7C,IACF8i7C,GAAoB,GAEtBF,EAAW5i7C,MAAQ,EACnB6i7C,EAAY7i7C,MAAQA,EACpB6i7C,EAAYtC,YAAcA,GAExBoC,IACFG,GAAoB,IAEf,IAAAv48C,eAAc2xD,EAAS,CAC5Br5B,IAAK5hC,KAAK8/8C,QACVzr8C,MAAO,IACFst8C,KACAtt8C,MAEFk1N,IACDs4uC,GAAqB7h7C,EAAS4h7C,GACpC,4GChXEn27C,EADiD,iBAAhBs5B,aAAuD,mBAApBA,YAAYt5B,IAChD,WAClC,OAAOs5B,YAAYt5B,KACrB,EAAI,WACF,OAAOD,KAAKC,KACd,EACA,SAASq27C,EAAcx3K,GACrB7zrC,qBAAqB6zrC,EAAU/+wC,GACjC,CAkBA,IAAI3G,GAAQ,EAEZ,SAASm97C,EAAiBhiF,GAKxB,QAJoB,IAAhBA,IACFA,GAAc,IAGF,IAAVn72C,GAAem72C,EAAa,CAC9B,IAAIzwqC,EAAMnqN,SAASmE,cAAc,OAC7B+K,EAAQi7M,EAAIj7M,MAChBA,EAAM0qB,MAAQ,OACd1qB,EAAM2qB,OAAS,OACf3qB,EAAMktW,SAAW,SACjBp8W,SAAS4rB,KAAKxc,YAAY+6M,GAC1B1qM,EAAO0qM,EAAI1uL,YAAc0uL,EAAInvE,YAC7Bh7I,SAAS4rB,KAAK8L,YAAYyyL,EAC5B,CAEA,OAAO1qM,CACT,CACA,IAAIo97C,EAAkB,KAOtB,SAASC,EAAiBliF,GAKxB,QAJoB,IAAhBA,IACFA,GAAc,GAGQ,OAApBiiF,GAA4BjiF,EAAa,CAC3C,IAAImiF,EAAW/88C,SAASmE,cAAc,OAClCq48C,EAAaO,EAAS7t8C,MAC1Bst8C,EAAW5i7C,MAAQ,OACnB4i7C,EAAW3i7C,OAAS,OACpB2i7C,EAAWpgmC,SAAW,SACtBogmC,EAAWh01C,UAAY,MACvB,IAAIw01C,EAAWh98C,SAASmE,cAAc,OAClC848C,EAAaD,EAAS9t8C,MAmB1B,OAlBA+t8C,EAAWrj7C,MAAQ,QACnBqj7C,EAAWpj7C,OAAS,QACpBkj7C,EAAS3t8C,YAAY4t8C,GACrBh98C,SAAS4rB,KAAKxc,YAAY2t8C,GAEtBA,EAASt27B,WAAa,EACxBo27B,EAAkB,uBAElBE,EAASt27B,WAAa,EAGpBo27B,EAD0B,IAAxBE,EAASt27B,WACO,WAEA,sBAItBzmhB,SAAS4rB,KAAK8L,YAAYql7C,GACnBF,CACT,CAEA,OAAOA,CACT,CAohBA,IA6XIK,EAAmB,SAAwBrl8C,EAAOxN,GACpD,OAAOwN,CACT,EAcA,SAASsl8C,EAAoBl1wC,GAC3B,IAAIm1wC,EAEAC,EAAgBp1wC,EAAKo1wC,cACrBC,EAAwBr1wC,EAAKq1wC,sBAC7BC,EAAct1wC,EAAKs1wC,YACnBC,EAAgCv1wC,EAAKu1wC,8BACrCC,EAAyBx1wC,EAAKw1wC,uBAC9BC,EAA4Bz1wC,EAAKy1wC,0BACjCC,EAAoB11wC,EAAK01wC,kBACzBC,EAAwC31wC,EAAK21wC,sCAC7Cp7zC,EAAgBylD,EAAKzlD,cACzB,OAAO46zC,EAAsB,SAAU78F,GAMrC,SAAS9wmC,EAAK3nO,GACZ,IAAIyf,EA0KJ,OAxKAA,EAAQg5zC,EAAe9l3C,KAAKI,KAAMitC,IAAUjtC,MACtCgj9C,eAAiBF,EAAkBp25C,EAAMzf,OAAO,OAAuByf,IAC7EA,EAAMu25C,eAAY,EAClBv25C,EAAMw25C,2BAA6B,KACnCx25C,EAAM/gD,MAAQ,CACZuf,UAAU,OAAuBwhC,GACjCy25C,aAAa,EACbC,gBAAiB,UACjBC,aAAyD,iBAApC325C,EAAMzf,MAAMq26C,oBAAmC525C,EAAMzf,MAAMq26C,oBAAsB,EACtGC,0BAA0B,GAE5B725C,EAAM825C,0BAAuB,EAC7B925C,EAAM825C,sBAAuB,QAAW,SAAUC,EAAoBC,EAAmBC,EAAmBC,GAC1G,OAAOl35C,EAAMzf,MAAM426C,gBAAgB,CACjCJ,mBAAoBA,EACpBC,kBAAmBA,EACnBC,kBAAmBA,EACnBC,iBAAkBA,GAEtB,IACAl35C,EAAMo35C,mBAAgB,EACtBp35C,EAAMo35C,eAAgB,QAAW,SAAUV,EAAiBC,EAAcE,GACxE,OAAO725C,EAAMzf,MAAMwy0C,SAAS,CAC1B2jG,gBAAiBA,EACjBC,aAAcA,EACdE,yBAA0BA,GAE9B,IACA725C,EAAMq35C,mBAAgB,EAEtBr35C,EAAMq35C,cAAgB,SAAU/m8C,GAC9B,IAOI3I,EAPAk+I,EAAc7lG,EAAMzf,MACpB0gF,EAAY4kC,EAAY5kC,UACxB0thC,EAAW9o/B,EAAY8o/B,SACvBn6gC,EAASqxB,EAAYrxB,OAErB8i1C,EAAiBt35C,EAAMu35C,mBAAmBlB,GAAyC1nU,EAAU0nU,GAAyC7h1C,EAAQ6h1C,GAAyCp11C,GAI3L,GAAIq21C,EAAerk9C,eAAeqd,GAChC3I,EAAQ2v8C,EAAehn8C,OAClB,CACL,IAAI88I,EAAU0ozC,EAAc915C,EAAMzf,MAAOjwB,EAAO0vC,EAAMs25C,gBAElDp+7C,EAAO897C,EAAYh25C,EAAMzf,MAAOjwB,EAAO0vC,EAAMs25C,gBAE7Ct56B,EAA6B,eAAd/7a,GAAyC,eAAXuT,EAC7C49Y,EAAsB,QAAdnxZ,EACRu21C,EAAmBx66B,EAAe5vY,EAAU,EAChDkqzC,EAAehn8C,GAAS3I,EAAQ,CAC9BsqB,SAAU,WACVE,KAAMigf,OAAQ/we,EAAYm26C,EAC1Brk3C,MAAOi/a,EAAQol8B,OAAmBn26C,EAClCjP,IAAM4qgB,EAAyB,EAAV5vY,EACrB96H,OAAS0qgB,EAAsB,OAAP9khB,EACxBma,MAAO2qgB,EAAe9khB,EAAO,OAEjC,CAEA,OAAOvQ,CACT,EAEAq4C,EAAMu35C,wBAAqB,EAC3Bv35C,EAAMu35C,oBAAqB,QAAW,SAAUrg9C,EAAGwnD,EAAI+45C,GACrD,MAAO,CAAC,CACV,IAEAz35C,EAAM035C,oBAAsB,SAAU3l7C,GACpC,IAAI4l7C,EAAuB5l7C,EAAMsgB,cAC7BohG,EAAckk0C,EAAqBlk0C,YACnCyrY,EAAay47B,EAAqBz47B,WAClClsB,EAAc2k9B,EAAqB3k9B,YAEvChzc,EAAMg+E,UAAS,SAAU+suC,GACvB,GAAIA,EAAU4rG,eAAiBz37B,EAI7B,OAAO,KAGT,IAAIj+Z,EAAYjhE,EAAMzf,MAAM0gF,UACxB011C,EAAez37B,EAEnB,GAAkB,QAAdj+Z,EAKF,OAAQs01C,KACN,IAAK,WACHoB,GAAgBz37B,EAChB,MAEF,IAAK,sBACHy37B,EAAe3j9B,EAAcv/W,EAAcyrY,EAOjD,OADAy37B,EAAexg9C,KAAK8K,IAAI,EAAG9K,KAAKgL,IAAIw18C,EAAc3j9B,EAAcv/W,IACzD,CACLgj0C,aAAa,EACbC,gBAAiB3rG,EAAU4rG,aAAeA,EAAe,UAAY,WACrEA,aAAcA,EACdE,0BAA0B,EAE9B,GAAG725C,EAAM435C,2BACX,EAEA535C,EAAM635C,kBAAoB,SAAU9l7C,GAClC,IAAI+l7C,EAAwB/l7C,EAAMsgB,cAC9BshG,EAAemk0C,EAAsBnk0C,aACrCl9C,EAAeqh3C,EAAsBrh3C,aACrCD,EAAYsh3C,EAAsBth3C,UAEtCx2C,EAAMg+E,UAAS,SAAU+suC,GACvB,GAAIA,EAAU4rG,eAAiBng3C,EAI7B,OAAO,KAIT,IAAImg3C,EAAexg9C,KAAK8K,IAAI,EAAG9K,KAAKgL,IAAIq1F,EAAWC,EAAek9C,IAClE,MAAO,CACL8i0C,aAAa,EACbC,gBAAiB3rG,EAAU4rG,aAAeA,EAAe,UAAY,WACrEA,aAAcA,EACdE,0BAA0B,EAE9B,GAAG725C,EAAM435C,2BACX,EAEA535C,EAAM+35C,gBAAkB,SAAU7i7C,GAChC,IAAI8i7C,EAAWh45C,EAAMzf,MAAMy36C,SAC3Bh45C,EAAMu25C,UAAYrh7C,EAEM,mBAAb8i7C,EACTA,EAAS9i7C,GACY,MAAZ8i7C,GAAwC,iBAAbA,GAAyBA,EAAS/k9C,eAAe,aACrF+k9C,EAAS3k7C,QAAU6B,EAEvB,EAEA8qB,EAAM435C,2BAA6B,WA1pCzC,IAAwBp77C,EAAUi4B,EAC5B3a,EAUA8jwC,EAgpC2C,OAArC59uC,EAAMw25C,4BACRpB,EAAcp15C,EAAMw25C,4BAGtBx25C,EAAMw25C,4BA/pCUh67C,EA+pCkCwjC,EAAMi45C,kBA/pC9Bxj6C,EA+9BK,IA99BjC3a,EAAQ/a,IAUR6+wC,EAAY,CACd/+wC,GAAI+qF,uBATN,SAASg7M,IACH7lS,IAAQ+a,GAAS2a,EACnBj4B,EAAStpB,KAAK,MAEd0qyC,EAAU/+wC,GAAK+qF,sBAAsBg7M,EAEzC,KAupCI,EAEA5kQ,EAAMi45C,kBAAoB,WACxBj45C,EAAMw25C,2BAA6B,KAEnCx25C,EAAMg+E,SAAS,CACby40C,aAAa,IACZ,WAGDz25C,EAAMu35C,oBAAoB,EAAG,KAC/B,GACF,EAEOv35C,CACT,EAjLA,OAAekoN,EAAM8wmC,GAmLrB9wmC,EAAKw0/B,yBAA2B,SAAkCl+oC,EAAWusvC,GAG3E,OAFAmtG,EAAsB151C,EAAWusvC,GACjC9vtC,EAAcz8B,GACP,IACT,EAEA,IAAI2vI,EAAS+Z,EAAKl1Q,UAwOlB,OAtOAm7P,EAAOqhW,SAAW,SAAkBmn3B,GAClCA,EAAexg9C,KAAK8K,IAAI,EAAG018C,GAC3Brj9C,KAAK0qI,UAAS,SAAU+suC,GACtB,OAAIA,EAAU4rG,eAAiBA,EACtB,KAGF,CACLD,gBAAiB3rG,EAAU4rG,aAAeA,EAAe,UAAY,WACrEA,aAAcA,EACdE,0BAA0B,EAE9B,GAAGvj9C,KAAKsk9C,2BACV,EAEAzptC,EAAOgqtC,aAAe,SAAsB7n8C,EAAOunwB,QACnC,IAAVA,IACFA,EAAQ,QAGV,IAAIh1Y,EAAevvY,KAAKitC,MACpBk1qC,EAAY5y0B,EAAa4y0B,UACzBjhlC,EAASquQ,EAAaruQ,OACtBmi1C,EAAerj9C,KAAK2L,MAAM038C,aAC9Brm8C,EAAQna,KAAK8K,IAAI,EAAG9K,KAAKgL,IAAImP,EAAOmlsC,EAAY,IAIhD,IAAI2iQ,EAAgB,EAEpB,GAAI9k9C,KAAKij9C,UAAW,CAClB,IAAIyB,EAAW1k9C,KAAKij9C,UAGlB6B,EADa,aAAX5j1C,EACcwj1C,EAAShl9B,YAAcgl9B,EAASvk0C,YAAc4h0C,IAAqB,EAEnE2C,EAASvh3C,aAAeuh3C,EAASrk0C,aAAe0h0C,IAAqB,CAEzF,CAEA/h9C,KAAKk8lB,SAASym3B,EAA8B3i9C,KAAKitC,MAAOjwB,EAAOunwB,EAAO8+rB,EAAcrj9C,KAAKgj9C,eAAgB8B,GAC3G,EAEAjqtC,EAAOyiJ,kBAAoB,WACzB,IAAIosjC,EAAe1p8C,KAAKitC,MACpB0gF,EAAY+70C,EAAa/70C,UACzB211C,EAAsB5Z,EAAa4Z,oBACnCpi1C,EAASwo0C,EAAaxo0C,OAE1B,GAAmC,iBAAxBoi1C,GAAsD,MAAlBtj9C,KAAKij9C,UAAmB,CACrE,IAAIyB,EAAW1k9C,KAAKij9C,UAEF,eAAdt11C,GAAyC,eAAXuT,EAChCwj1C,EAAS947B,WAAa037B,EAEtBoB,EAASxh3C,UAAYog3C,CAEzB,CAEAtj9C,KAAK+k9C,qBACP,EAEAlqtC,EAAO2iJ,mBAAqB,WAC1B,IAAImtjC,EAAe3q8C,KAAKitC,MACpB0gF,EAAYg90C,EAAah90C,UACzBuT,EAASyp0C,EAAazp0C,OACtBk4C,EAAcp5K,KAAK2L,MACnB038C,EAAejqyC,EAAYiqyC,aAG/B,GAF+BjqyC,EAAYmqyC,0BAEO,MAAlBvj9C,KAAKij9C,UAAmB,CACtD,IAAIyB,EAAW1k9C,KAAKij9C,UAEpB,GAAkB,eAAdt11C,GAAyC,eAAXuT,EAChC,GAAkB,QAAdvT,EAIF,OAAQs01C,KACN,IAAK,WACHyC,EAAS947B,YAAcy37B,EACvB,MAEF,IAAK,qBACHqB,EAAS947B,WAAay37B,EACtB,MAEF,QACE,IAAIlj0C,EAAcuk0C,EAASvk0C,YACvBu/W,EAAcgl9B,EAAShl9B,YAC3Bgl9B,EAAS947B,WAAalsB,EAAcv/W,EAAckj0C,OAItDqB,EAAS947B,WAAay37B,OAGxBqB,EAASxh3C,UAAYmg3C,CAEzB,CAEArj9C,KAAK+k9C,qBACP,EAEAlqtC,EAAO4iJ,qBAAuB,WACY,OAApCz9Y,KAAKkj9C,4BACPpB,EAAc9h9C,KAAKkj9C,2BAEvB,EAEArotC,EAAOvsI,OAAS,WACd,IAAIi90C,EAAevr8C,KAAKitC,MACpBjN,EAAWur6C,EAAavr6C,SACxB4vD,EAAY272C,EAAa372C,UACzB+9B,EAAY490C,EAAa590C,UACzB3uF,EAASus6C,EAAavs6C,OACtBw50C,EAAW+yF,EAAa/yF,SACxBwsG,EAAmBzZ,EAAayZ,iBAChCC,EAAe1Z,EAAa0Z,aAC5B9iQ,EAAYopP,EAAappP,UACzB+iQ,EAAW3Z,EAAa2Z,SACxBC,EAAuB5Z,EAAatokB,QACpCA,OAAmC,IAAzBkilB,EAAkC9C,EAAmB8C,EAC/Djk1C,EAASqq0C,EAAarq0C,OACtBkk1C,EAAmB7Z,EAAa6Z,iBAChCC,EAAe9Z,EAAa8Z,aAC5Bhx8C,EAAQk37C,EAAal37C,MACrBix8C,EAAiB/Z,EAAa+Z,eAC9Bvm7C,EAAQws6C,EAAaxs6C,MACrBok7C,EAAcnj9C,KAAK2L,MAAMw38C,YAEzBz56B,EAA6B,eAAd/7a,GAAyC,eAAXuT,EAC7Cu+uC,EAAW/10B,EAAe1piB,KAAKok9C,oBAAsBpk9C,KAAKuk9C,kBAE1DgB,EAAwBvl9C,KAAKwl9C,oBAC7B7l1C,EAAa4l1C,EAAsB,GACnCE,EAAYF,EAAsB,GAElC7rvC,EAAQ,GAEZ,GAAIyo/B,EAAY,EACd,IAAK,IAAI3p1B,EAAS74P,EAAY64P,GAAUitlC,EAAWjtlC,IACjD9+J,EAAM73N,MAAK,IAAAyH,eAAc02B,EAAU,CACjCxwB,KAAM018C,EACNrg8C,IAAKo+2B,EAAQzqgB,EAAQ0slC,GACrBlo8C,MAAOw7W,EACP2qlC,YAAamC,EAAiBnC,OAAcp16C,EAC5C15B,MAAOrU,KAAK+j9C,cAAcvrlC,MAOhC,IAAIktlC,EAAqBjD,EAAsBzi9C,KAAKitC,MAAOjtC,KAAKgj9C,gBAChE,OAAO,IAAA158C,eAAc878C,GAAoBC,GAAgB,MAAO,CAC9Dz13C,UAAWA,EACX6vxC,SAAUA,EACV790C,IAAK5hC,KAAKyk9C,gBACVpw8C,OAAO,OAAS,CACdsqB,SAAU,WACVK,OAAQA,EACRD,MAAOA,EACPwiV,SAAU,OACVulkC,wBAAyB,QACzBpkP,WAAY,YACZ/0kC,UAAWA,GACVt5G,KACF,IAAA/K,eAAc078C,GAAoBC,GAAgB,MAAO,CAC1Djl7C,SAAU05L,EACV93L,IAAK420C,EACLnk2C,MAAO,CACL2qB,OAAQ0qgB,EAAe,OAASg86B,EAChCjs0C,cAAe0p0C,EAAc,YAASp16C,EACtChP,MAAO2qgB,EAAeg86B,EAAqB,UAGjD,EAEA7qtC,EAAOkqtC,oBAAsB,WAC3B,GAA0C,mBAA/B/k9C,KAAKitC,MAAM426C,iBACJ7j9C,KAAKitC,MAAMk1qC,UAEX,EAAG,CACjB,IAAIwjQ,EAAyB3l9C,KAAKwl9C,oBAC9BI,EAAsBD,EAAuB,GAC7CE,EAAqBF,EAAuB,GAC5CG,EAAqBH,EAAuB,GAC5CI,EAAoBJ,EAAuB,GAE/C3l9C,KAAKwj9C,qBAAqBoC,EAAqBC,EAAoBC,EAAoBC,EACzF,CAGF,GAAmC,mBAAxB/l9C,KAAKitC,MAAMwy0C,SAAyB,CAC7C,IAAI7srC,EAAe5yL,KAAK2L,MACpBq68C,EAAmBpzxC,EAAawwxC,gBAChC6C,EAAgBrzxC,EAAaywxC,aAC7B6C,EAA4BtzxC,EAAa2wxC,yBAE7Cvj9C,KAAK8j9C,cAAckC,EAAkBC,EAAeC,EACtD,CACF,EAMArrtC,EAAO2qtC,kBAAoB,WACzB,IAAI3Z,EAAe7r8C,KAAKitC,MACpBk1qC,EAAY0pP,EAAa1pP,UACzBgkQ,EAAgBta,EAAasa,cAC7BljvC,EAAejjO,KAAK2L,MACpBw38C,EAAclgvC,EAAakgvC,YAC3BC,EAAkBngvC,EAAamgvC,gBAC/BC,EAAepgvC,EAAaogvC,aAEhC,GAAkB,IAAdlhQ,EACF,MAAO,CAAC,EAAG,EAAG,EAAG,GAGnB,IAAIxilC,EAAaij1C,EAAuB5i9C,KAAKitC,MAAOo26C,EAAcrj9C,KAAKgj9C,gBACnEyC,EAAY5C,EAA0B7i9C,KAAKitC,MAAO0yF,EAAY0j1C,EAAcrj9C,KAAKgj9C,gBAGjFoD,EAAoBjD,GAAmC,aAApBC,EAA8D,EAA7Bvg9C,KAAK8K,IAAI,EAAGw48C,GAChFE,EAAmBlD,GAAmC,YAApBC,EAA6D,EAA7Bvg9C,KAAK8K,IAAI,EAAGw48C,GAClF,MAAO,CAACtj9C,KAAK8K,IAAI,EAAGgyH,EAAaym1C,GAAmBvj9C,KAAK8K,IAAI,EAAG9K,KAAKgL,IAAIs0sC,EAAY,EAAGsjQ,EAAYY,IAAmB1m1C,EAAY8l1C,EACrI,EAEO7wsC,CACT,CAna6B,CAma3B,EAAAuoI,eAAgBolkC,EAAOro0C,aAAe,CACtCvsB,UAAW,MACXu31C,cAAUn36C,EACVmzF,OAAQ,WACRil1C,cAAe,EACfb,gBAAgB,GACf/C,CACL,CAMA,IAAIqC,EAAwB,SAA6B/wvC,EAAO66B,GAC/C76B,EAAM7zL,SACL6zL,EAAMlmG,UACTkmG,EAAM70L,OACN60L,EAAM3yF,OACA2yF,EAAMoxvC,aACNpxvC,EAAMwxvC,aACbxxvC,EAAM90L,MACH2vN,EAAMxjO,QAoDvB,EAIIo77C,EAAoB,SAAyBr56C,EAAOjwB,EAAOup8C,GAC7D,IACIlrU,EADOpumC,EACSoumC,SAChBmrU,EAAkBD,EAAcC,gBAChCC,EAAoBF,EAAcE,kBAEtC,GAAIzp8C,EAAQyp8C,EAAmB,CAC7B,IAAItk6C,EAAS,EAEb,GAAIsk6C,GAAqB,EAAG,CAC1B,IAAIC,EAAeF,EAAgBC,GACnCtk6C,EAASuk6C,EAAavk6C,OAASuk6C,EAAa9h8C,IAC9C,CAEA,IAAK,IAAIhkB,EAAI6l9C,EAAoB,EAAG7l9C,GAAKoc,EAAOpc,IAAK,CACnD,IAAIgkB,EAAOy2nC,EAASz6oC,GACpB4l9C,EAAgB5l9C,GAAK,CACnBuhD,OAAQA,EACRv9B,KAAMA,GAERu9B,GAAUv9B,CACZ,CAEA2h8C,EAAcE,kBAAoBzp8C,CACpC,CAEA,OAAOwp8C,EAAgBxp8C,EACzB,EAkBI2p8C,EAAgC,SAAqC156C,EAAOs56C,EAAe9v4C,EAAMC,EAAKv0B,GACxG,KAAOu0B,GAAOD,GAAM,CAClB,IAAIgzK,EAAS/yK,EAAM7zE,KAAKyK,OAAOmpE,EAAOC,GAAO,GACzCyoyB,EAAgBmnmB,EAAkBr56C,EAAOw8M,EAAQ88tC,GAAepk6C,OAEpE,GAAIg9zB,IAAkBh9zB,EACpB,OAAOsnM,EACE01nB,EAAgBh9zB,EACzBu0B,EAAM+yK,EAAS,EACN01nB,EAAgBh9zB,IACzBs0B,EAAOgzK,EAAS,EAEpB,CAEA,OAAI/yK,EAAM,EACDA,EAAM,EAEN,CAEX,EAcI+r4C,EAAwB,SAA+B5uvC,EAAO66B,GAChE,IAAIyz9B,EAAYtu/B,EAAMsu/B,UAClBqkQ,EAAkB93tC,EAAM83tC,gBACxBI,EAAoBl4tC,EAAMk4tC,kBAC1BH,EAAoB/3tC,EAAM+3tC,kBAC1BI,EAA2B,EAO/B,GAJIJ,GAAqBtkQ,IACvBskQ,EAAoBtkQ,EAAY,GAG9BskQ,GAAqB,EAAG,CAC1B,IAAIC,EAAeF,EAAgBC,GACnCI,EAA2BH,EAAavk6C,OAASuk6C,EAAa9h8C,IAChE,CAIA,OAAOii8C,GAFkB1kQ,EAAYskQ,EAAoB,GACHG,CAExD,EAEIE,EAAgCxE,EAAoB,CACtDE,cAAe,SAAuBv16C,EAAOjwB,EAAOup8C,GAClD,OAAOD,EAAkBr56C,EAAOjwB,EAAOup8C,GAAepk6C,MACxD,EACAug6C,YAAa,SAAqBz16C,EAAOjwB,EAAOup8C,GAC9C,OAAOA,EAAcC,gBAAgBxp8C,GAAO4H,IAC9C,EACA697C,sBAAuBA,EACvBE,8BAA+B,SAAuC116C,EAAOjwB,EAAOunwB,EAAO8+rB,EAAckD,EAAezB,GACtH,IAAIn31C,EAAY1gF,EAAM0gF,UAClB3uF,EAASiO,EAAMjO,OACfkiG,EAASj0F,EAAMi0F,OACfniG,EAAQkO,EAAMlO,MAGdna,EAD6B,eAAd+oG,GAAyC,eAAXuT,EACvBniG,EAAQC,EAC9B0n7C,EAAeJ,EAAkBr56C,EAAOjwB,EAAOup8C,GAG/Cb,EAAqBjD,EAAsBx16C,EAAOs56C,GAClDz8yC,EAAYjnK,KAAK8K,IAAI,EAAG9K,KAAKgL,IAAI638C,EAAqB9g8C,EAAM8h8C,EAAavk6C,SACzE0nH,EAAYhnK,KAAK8K,IAAI,EAAG+48C,EAAavk6C,OAASv9B,EAAO8h8C,EAAa9h8C,KAAOkg8C,GAU7E,OARc,UAAVvgsB,IAEAA,EADE8+rB,GAAgBx5yC,EAAYjlJ,GAAQy+7C,GAAgBv5yC,EAAYllJ,EAC1D,OAEA,UAIJ2/vB,GACN,IAAK,QACH,OAAOz6mB,EAET,IAAK,MACH,OAAOD,EAET,IAAK,SACH,OAAOhnK,KAAKogD,MAAM4mH,GAAaC,EAAYD,GAAa,GAG1D,QACE,OAAIw5yC,GAAgBx5yC,GAAaw5yC,GAAgBv5yC,EACxCu5yC,EACEA,EAAex5yC,EACjBA,EAEAC,EAIf,EACA84yC,uBAAwB,SAAgC316C,EAAOkV,EAAQok6C,GACrE,OA7HoB,SAAyBt56C,EAAOs56C,EAAepk6C,GACrE,IAAIqk6C,EAAkBD,EAAcC,gBAChCC,EAAoBF,EAAcE,kBAGtC,OAF6BA,EAAoB,EAAID,EAAgBC,GAAmBtk6C,OAAS,IAEnEA,EAErBwk6C,EAA8B156C,EAAOs56C,EAAeE,EAAmB,EAAGtk6C,GA8B5C,SAA0ClV,EAAOs56C,EAAevp8C,EAAOmlC,GAI9G,IAHA,IAAIggqC,EAAYl1qC,EAAMk1qC,UAClBjgvB,EAAW,EAERlld,EAAQmlsC,GAAamkQ,EAAkBr56C,EAAOjwB,EAAOup8C,GAAepk6C,OAASA,GAClFnlC,GAASkld,EACTA,GAAY,EAGd,OAAOyk/B,EAA8B156C,EAAOs56C,EAAe1j9C,KAAKgL,IAAImP,EAAOmlsC,EAAY,GAAIt/sC,KAAKyK,MAAM0P,EAAQ,GAAImlC,EACpH,CAnCW4k6C,CAAmC956C,EAAOs56C,EAAe1j9C,KAAK8K,IAAI,EAAG848C,GAAoBtk6C,EAEpG,CA+GW6k6C,CAAkB/56C,EAAOs56C,EAAepk6C,EACjD,EACA0g6C,0BAA2B,SAAmC516C,EAAO0yF,EAAY0j1C,EAAckD,GAc7F,IAbA,IAAI541C,EAAY1gF,EAAM0gF,UAClB3uF,EAASiO,EAAMjO,OACfmjrC,EAAYl1qC,EAAMk1qC,UAClBjhlC,EAASj0F,EAAMi0F,OACfniG,EAAQkO,EAAMlO,MAGdna,EAD6B,eAAd+oG,GAAyC,eAAXuT,EACvBniG,EAAQC,EAC9B0n7C,EAAeJ,EAAkBr56C,EAAO0yF,EAAY4m1C,GACpDz8yC,EAAYu5yC,EAAez+7C,EAC3Bu9B,EAASuk6C,EAAavk6C,OAASuk6C,EAAa9h8C,KAC5C6g8C,EAAY9l1C,EAET8l1C,EAAYtjQ,EAAY,GAAKhgqC,EAAS2nH,GAC3C27yC,IACAtj6C,GAAUmk6C,EAAkBr56C,EAAOw46C,EAAWc,GAAe3h8C,KAG/D,OAAO6g8C,CACT,EACA3C,kBAAmB,SAA2B716C,EAAO/hB,GACnD,IAEIq77C,EAAgB,CAClBC,gBAAiB,CAAC,EAClBI,kBAJU356C,EACkB256C,mBArLE,GAyL9BH,mBAAoB,GAoBtB,OAjBAv77C,EAAS+77C,gBAAkB,SAAUjq8C,EAAOkq8C,QAChB,IAAtBA,IACFA,GAAoB,GAGtBX,EAAcE,kBAAoB5j9C,KAAKgL,IAAI048C,EAAcE,kBAAmBzp8C,EAAQ,GAKpFkO,EAAS+47C,oBAAoB,GAEzBiD,GACFh87C,EAASiiH,aAEb,EAEOo50C,CACT,EACAxD,uCAAuC,EACvCp7zC,cAAe,SAAuBwoG,GACrBA,EAAMkr5B,QAOvB,kCC5sDW,IAAI34oC,EAAE,EAAQ,OAASgB,EAAEhC,OAAOiH,IAAI,iBAAiBnG,EAAEd,OAAOiH,IAAI,kBAAkBvF,EAAE9D,OAAOI,UAAUC,eAAeN,EAAEqD,EAAEg00C,mDAAmD+W,kBAAkB3q1C,EAAE,CAAC+hB,KAAI,EAAG+c,KAAI,EAAGul7C,QAAO,EAAGt80C,UAAS,GAChP,SAAS3kI,EAAErF,EAAEG,EAAEmB,GAAG,IAAImB,EAAEX,EAAE,CAAC,EAAExD,EAAE,KAAKyD,EAAE,KAAiF,IAAIU,UAAhF,IAASnB,IAAIhD,EAAE,GAAGgD,QAAG,IAASnB,EAAE6jB,MAAM1lB,EAAE,GAAG6B,EAAE6jB,UAAK,IAAS7jB,EAAE4gC,MAAMh/B,EAAE5B,EAAE4gC,KAAc5gC,EAAEoC,EAAExD,KAAKoB,EAAEsC,KAAKR,EAAEnD,eAAe2D,KAAKX,EAAEW,GAAGtC,EAAEsC,IAAI,GAAGzC,GAAGA,EAAEq5I,aAAa,IAAI52I,KAAKtC,EAAEH,EAAEq5I,kBAAe,IAASv3I,EAAEW,KAAKX,EAAEW,GAAGtC,EAAEsC,IAAI,MAAM,CAACuz6B,SAASnz6B,EAAE6I,KAAK1L,EAAEgkB,IAAI1lB,EAAEyiC,IAAIh/B,EAAEqqC,MAAMtqC,EAAEol1C,OAAO1o1C,EAAE0gC,QAAQ,CAACt9B,EAAQk9P,SAASn9P,EAAEC,EAAQm9P,IAAI15P,EAAEzD,EAAQs9Y,KAAK75Y,8BCD7V,IAAI1D,EAAEd,OAAOiH,IAAI,iBAAiBtJ,EAAEqC,OAAOiH,IAAI,gBAAgB7F,EAAEpB,OAAOiH,IAAI,kBAAkBzC,EAAExE,OAAOiH,IAAI,qBAAqB5I,EAAE2B,OAAOiH,IAAI,kBAAkBvJ,EAAEsC,OAAOiH,IAAI,kBAAkBtG,EAAEX,OAAOiH,IAAI,iBAAiB1F,EAAEvB,OAAOiH,IAAI,qBAAqBpF,EAAE7B,OAAOiH,IAAI,kBAAkB1E,EAAEvC,OAAOiH,IAAI,cAAc3F,EAAEtB,OAAOiH,IAAI,cAAchD,EAAEjE,OAAOC,SACrWoE,EAAE,CAACy6Y,UAAU,WAAW,OAAM,CAAE,EAAE+07B,mBAAmB,WAAW,EAAED,oBAAoB,WAAW,EAAEF,gBAAgB,WAAW,GAAGjx0C,EAAE7E,OAAOa,OAAOoF,EAAE,CAAC,EAAE,SAASb,EAAE1D,EAAEsC,EAAEnE,GAAGa,KAAKitC,MAAMjsC,EAAEhB,KAAKmtC,QAAQ7pC,EAAEtD,KAAKio1C,KAAK1i1C,EAAEvF,KAAKq/+B,QAAQlg/B,GAAG4G,CAAC,CACwI,SAASf,IAAI,CAAyB,SAASL,EAAE3D,EAAEsC,EAAEnE,GAAGa,KAAKitC,MAAMjsC,EAAEhB,KAAKmtC,QAAQ7pC,EAAEtD,KAAKio1C,KAAK1i1C,EAAEvF,KAAKq/+B,QAAQlg/B,GAAG4G,CAAC,CADxPrB,EAAEhF,UAAUk36B,iBAAiB,CAAC,EACpQly6B,EAAEhF,UAAUgrI,SAAS,SAAS1pI,EAAEsC,GAAG,GAAG,iBAAkBtC,GAAG,mBAAoBA,GAAG,MAAMA,EAAE,MAAMwmB,MAAM,yHAAyHxnB,KAAKq/+B,QAAQ+1V,gBAAgBp10C,KAAKgB,EAAEsC,EAAE,WAAW,EAAEoB,EAAEhF,UAAUytI,YAAY,SAASnsI,GAAGhB,KAAKq/+B,QAAQk2V,mBAAmBv10C,KAAKgB,EAAE,cAAc,EAAgBgE,EAAEtF,UAAUgF,EAAEhF,UAAsF,IAAI8F,EAAEb,EAAEjF,UAAU,IAAIsF,EACrfQ,EAAEvF,YAAY0E,EAAER,EAAEqB,EAAEd,EAAEhF,WAAW8F,EAAE4n1C,sBAAqB,EAAG,IAAIvp1C,EAAEpE,MAAMkS,QAAQjM,EAAEpG,OAAOI,UAAUC,eAAesF,EAAE,CAAC86B,QAAQ,MAAM17B,EAAE,CAACwgB,KAAI,EAAG+c,KAAI,EAAGul7C,QAAO,EAAGt80C,UAAS,GACtK,SAAShlI,EAAE7E,EAAEsC,EAAEnE,GAAG,IAAIwD,EAAE9B,EAAE,CAAC,EAAE6C,EAAE,KAAKd,EAAE,KAAK,GAAG,MAAMU,EAAE,IAAIX,UAAK,IAASW,EAAEs+B,MAAMh/B,EAAEU,EAAEs+B,UAAK,IAASt+B,EAAEuhB,MAAMnhB,EAAE,GAAGJ,EAAEuhB,KAAKvhB,EAAEoC,EAAE9F,KAAK0D,EAAEX,KAAK0B,EAAE1E,eAAegD,KAAK9B,EAAE8B,GAAGW,EAAEX,IAAI,IAAIR,EAAE/B,UAAUC,OAAO,EAAE,GAAG,IAAI8B,EAAEtB,EAAEm/B,SAAS7gC,OAAO,GAAG,EAAEgD,EAAE,CAAC,IAAI,IAAIO,EAAEjD,MAAM0C,GAAGiB,EAAE,EAAEA,EAAEjB,EAAEiB,IAAIV,EAAEU,GAAGhD,UAAUgD,EAAE,GAAGvC,EAAEm/B,SAASt9B,CAAC,CAAC,GAAG1B,GAAGA,EAAEk5I,aAAa,IAAIv3I,KAAKR,EAAEnB,EAAEk5I,kBAAe,IAASr5I,EAAE8B,KAAK9B,EAAE8B,GAAGR,EAAEQ,IAAI,MAAM,CAACk06B,SAASr06B,EAAE+J,KAAKvL,EAAE6jB,IAAInhB,EAAEk+B,IAAIh/B,EAAEqqC,MAAMpsC,EAAEkn1C,OAAO9i1C,EAAE86B,QAAQ,CAChV,SAAS/7B,EAAEhD,GAAG,MAAM,iBAAkBA,GAAG,OAAOA,GAAGA,EAAE616B,WAAWr06B,CAAC,CAAoG,IAAIsC,EAAE,OAAO,SAASkB,EAAEhF,EAAEsC,GAAG,MAAM,iBAAkBtC,GAAG,OAAOA,GAAG,MAAMA,EAAE6jB,IAA7K,SAAgB7jB,GAAG,IAAIsC,EAAE,CAAC,IAAI,KAAK,IAAI,MAAM,MAAM,IAAItC,EAAEyL,QAAQ,SAAQ,SAASzL,GAAG,OAAOsC,EAAEtC,EAAE,GAAE,CAA+EyuF,CAAO,GAAGzuF,EAAE6jB,KAAKvhB,EAAEiB,SAAS,GAAG,CAC/W,SAASD,EAAEtD,EAAEsC,EAAEnE,EAAEwD,EAAE9B,GAAG,IAAI6C,SAAS1C,EAAK,cAAc0C,GAAG,YAAYA,IAAE1C,EAAE,MAAK,IAAI4B,GAAE,EAAG,GAAG,OAAO5B,EAAE4B,GAAE,OAAQ,OAAOc,GAAG,IAAK,SAAS,IAAK,SAASd,GAAE,EAAG,MAAM,IAAK,SAAS,OAAO5B,EAAE616B,UAAU,KAAKr06B,EAAE,KAAKnD,EAAEuD,GAAE,GAAI,GAAGA,EAAE,OAAW/B,EAAEA,EAAN+B,EAAE5B,GAASA,EAAE,KAAK2B,EAAE,IAAIqD,EAAEpD,EAAE,GAAGD,EAAEkB,EAAEhD,IAAI1B,EAAE,GAAG,MAAM6B,IAAI7B,EAAE6B,EAAEyL,QAAQ3H,EAAE,OAAO,KAAKR,EAAEzD,EAAEyC,EAAEnE,EAAE,IAAG,SAAS6B,GAAG,OAAOA,CAAC,KAAI,MAAMH,IAAImD,EAAEnD,KAAKA,EADnW,SAAWG,EAAEsC,GAAG,MAAM,CAACuz6B,SAASr06B,EAAE+J,KAAKvL,EAAEuL,KAAKsY,IAAIvhB,EAAEs+B,IAAI5gC,EAAE4gC,IAAIqL,MAAMjsC,EAAEisC,MAAM86yC,OAAO/m1C,EAAE+m1C,OAAO,CACyQ7i1C,CAAErE,EAAE1B,IAAI0B,EAAEgkB,KAAKjiB,GAAGA,EAAEiiB,MAAMhkB,EAAEgkB,IAAI,IAAI,GAAGhkB,EAAEgkB,KAAKpY,QAAQ3H,EAAE,OAAO,KAAK9D,IAAIsC,EAAEzB,KAAKhB,IAAI,EAAyB,GAAvB+B,EAAE,EAAED,EAAE,KAAKA,EAAE,IAAIA,EAAE,IAAOkB,EAAE7C,GAAG,IAAI,IAAImB,EAAE,EAAEA,EAAEnB,EAAEX,OAAO8B,IAAI,CAC/e,IAAIO,EAAEC,EAAEqD,EADwetC,EACrf1C,EAAEmB,GAAeA,GAAGS,GAAG0B,EAAEZ,EAAEJ,EAAEnE,EAAEuD,EAAE7B,EAAE,MAAM,GAAG6B,EAPsU,SAAW1B,GAAG,OAAG,OAAOA,GAAG,iBAAkBA,EAAS,KAAsC,mBAAjCA,EAAE2E,GAAG3E,EAAE2E,IAAI3E,EAAE,eAA0CA,EAAE,IAAI,CAO5b6D,CAAE7D,GAAG,mBAAoB0B,EAAE,IAAI1B,EAAE0B,EAAE9C,KAAKoB,GAAGmB,EAAE,IAAIuB,EAAE1C,EAAED,QAAQG,MAA6B0B,GAAG0B,EAA1BZ,EAAEA,EAAEvC,MAA0BmC,EAAEnE,EAAtBuD,EAAEC,EAAEqD,EAAEtC,EAAEvB,KAAkBtB,QAAQ,GAAG,WAAW6C,EAAE,MAAMJ,EAAExD,OAAOkB,GAAGwmB,MAAM,mDAAmD,oBAAoBlkB,EAAE,qBAAqBhE,OAAOgU,KAAKtS,GAAG6L,KAAK,MAAM,IAAIvJ,GAAG,6EAA6E,OAAOV,CAAC,CACzZ,SAASY,EAAExC,EAAEsC,EAAEnE,GAAG,GAAG,MAAM6B,EAAE,OAAOA,EAAE,IAAI2B,EAAE,GAAG9B,EAAE,EAAmD,OAAjDyD,EAAEtD,EAAE2B,EAAE,GAAG,IAAG,SAAS3B,GAAG,OAAOsC,EAAE1D,KAAKT,EAAE6B,EAAEH,IAAI,IAAU8B,CAAC,CAAC,SAASuB,EAAElD,GAAG,IAAI,IAAIA,EAAEom9C,QAAQ,CAAC,IAAI9j9C,EAAEtC,EAAEqm9C,SAAQ/j9C,EAAEA,KAAMlC,MAAK,SAASkC,GAAM,IAAItC,EAAEom9C,UAAU,IAAIpm9C,EAAEom9C,UAAQpm9C,EAAEom9C,QAAQ,EAAEpm9C,EAAEqm9C,QAAQ/j9C,EAAC,IAAE,SAASA,GAAM,IAAItC,EAAEom9C,UAAU,IAAIpm9C,EAAEom9C,UAAQpm9C,EAAEom9C,QAAQ,EAAEpm9C,EAAEqm9C,QAAQ/j9C,EAAC,KAAI,IAAItC,EAAEom9C,UAAUpm9C,EAAEom9C,QAAQ,EAAEpm9C,EAAEqm9C,QAAQ/j9C,EAAE,CAAC,GAAG,IAAItC,EAAEom9C,QAAQ,OAAOpm9C,EAAEqm9C,QAAQ9k9C,QAAQ,MAAMvB,EAAEqm9C,OAAQ,CAC5Z,IAAIhi9C,EAAE,CAAC06B,QAAQ,MAAMn6B,EAAE,CAACkiH,WAAW,MAAMtjH,EAAE,CAACmy0C,uBAAuBtx0C,EAAEm40C,wBAAwB530C,EAAE6n1C,kBAAkBxo1C,GAAG,SAASF,IAAI,MAAMyiB,MAAM,2DAA4D,CACzM/kB,EAAQqmZ,SAAS,CAACz5X,IAAI7rB,EAAE0hB,QAAQ,SAASlkB,EAAEsC,EAAEnE,GAAGqE,EAAExC,GAAE,WAAWsC,EAAE/C,MAAMP,KAAKI,UAAU,GAAEjB,EAAE,EAAEoqD,MAAM,SAASvoD,GAAG,IAAIsC,EAAE,EAAuB,OAArBE,EAAExC,GAAE,WAAWsC,GAAG,IAAUA,CAAC,EAAEuqH,QAAQ,SAAS7sH,GAAG,OAAOwC,EAAExC,GAAE,SAASA,GAAG,OAAOA,CAAC,KAAI,EAAE,EAAE07W,KAAK,SAAS17W,GAAG,IAAIgD,EAAEhD,GAAG,MAAMwmB,MAAM,yEAAyE,OAAOxmB,CAAC,GAAGyB,EAAQiqJ,UAAUhoJ,EAAEjC,EAAQk9P,SAAS78P,EAAEL,EAAQ48G,SAASt/G,EAAE0C,EAAQ06Y,cAAcx4Y,EAAElC,EAAQu22C,WAAW9y2C,EAAEzD,EAAQw22C,SAAS112C,EAClcd,EAAQi00C,mDAAmDly0C,EAAE/B,EAAQ6k9C,IAAIvi9C,EACzEtC,EAAQ00P,aAAa,SAASn2P,EAAEsC,EAAEnE,GAAG,GAAG,MAAO6B,EAAc,MAAMwmB,MAAM,iFAAiFxmB,EAAE,KAAK,IAAI2B,EAAEwB,EAAE,CAAC,EAAEnD,EAAEisC,OAAOpsC,EAAEG,EAAE6jB,IAAInhB,EAAE1C,EAAE4gC,IAAIh/B,EAAE5B,EAAE+m1C,OAAO,GAAG,MAAMzk1C,EAAE,CAAoE,QAAnE,IAASA,EAAEs+B,MAAMl+B,EAAEJ,EAAEs+B,IAAIh/B,EAAEqC,EAAE86B,cAAS,IAASz8B,EAAEuhB,MAAMhkB,EAAE,GAAGyC,EAAEuhB,KAAQ7jB,EAAEuL,MAAMvL,EAAEuL,KAAK2tI,aAAa,IAAI/3I,EAAEnB,EAAEuL,KAAK2tI,aAAa,IAAIx3I,KAAKY,EAAEoC,EAAE9F,KAAK0D,EAAEZ,KAAK2B,EAAE1E,eAAe+C,KAAKC,EAAED,QAAG,IAASY,EAAEZ,SAAI,IAASP,EAAEA,EAAEO,GAAGY,EAAEZ,GAAG,CAAC,IAAIA,EAAEtC,UAAUC,OAAO,EAAE,GAAG,IAAIqC,EAAEC,EAAEq9B,SAAS7gC,OAAO,GAAG,EAAEuD,EAAE,CAACP,EAAE1C,MAAMiD,GACrf,IAAI,IAAIU,EAAE,EAAEA,EAAEV,EAAEU,IAAIjB,EAAEiB,GAAGhD,UAAUgD,EAAE,GAAGT,EAAEq9B,SAAS79B,CAAC,CAAC,MAAM,CAAC006B,SAASr06B,EAAE+J,KAAKvL,EAAEuL,KAAKsY,IAAIhkB,EAAE+gC,IAAIl+B,EAAEupC,MAAMtqC,EAAEol1C,OAAOnl1C,EAAE,EAAEH,EAAQi8P,cAAc,SAAS19P,GAAqK,OAAlKA,EAAE,CAAC616B,SAASx06B,EAAEg40C,cAAcr50C,EAAEk00C,eAAel00C,EAAEum9C,aAAa,EAAEnl7C,SAAS,KAAKgu5C,SAAS,KAAK73G,cAAc,KAAKivI,YAAY,OAAQpl7C,SAAS,CAACy04B,SAASz36B,EAAE4lJ,SAAShkJ,GAAUA,EAAEov7C,SAASpv7C,CAAC,EAAEyB,EAAQ6G,cAAczD,EAAEpD,EAAQgl9C,cAAc,SAASzm9C,GAAG,IAAIsC,EAAEuC,EAAExC,KAAK,KAAKrC,GAAY,OAATsC,EAAEiJ,KAAKvL,EAASsC,CAAC,EAAEb,EAAQyla,UAAU,WAAW,MAAM,CAACnoY,QAAQ,KAAK,EAC9dt9B,EAAQm1P,WAAW,SAAS52P,GAAG,MAAM,CAAC616B,SAAS5z6B,EAAEqrH,OAAOttH,EAAE,EAAEyB,EAAQsmZ,eAAe/kZ,EAAEvB,EAAQil9C,KAAK,SAAS1m9C,GAAG,MAAM,CAAC616B,SAAS7z6B,EAAEy+/B,SAAS,CAAC2ld,SAAS,EAAEC,QAAQrm9C,GAAGyx9B,MAAMvu9B,EAAE,EAAEzB,EAAQ84Y,KAAK,SAASv6Y,EAAEsC,GAAG,MAAM,CAACuz6B,SAAS5y6B,EAAEsI,KAAKvL,EAAEkpH,aAAQ,IAAS5mH,EAAE,KAAKA,EAAE,EAAEb,EAAQkl9C,gBAAgB,SAAS3m9C,GAAG,IAAIsC,EAAEsC,EAAEkiH,WAAWliH,EAAEkiH,WAAW,CAAC,EAAE,IAAI9mH,GAAG,CAAC,QAAQ4E,EAAEkiH,WAAWxkH,CAAC,CAAC,EAAEb,EAAQml9C,aAAa7i9C,EAAEtC,EAAQql6B,YAAY,SAAS9m6B,EAAEsC,GAAG,OAAO+B,EAAE06B,QAAQ+n4B,YAAY9m6B,EAAEsC,EAAE,EAAEb,EAAQq8P,WAAW,SAAS99P,GAAG,OAAOqE,EAAE06B,QAAQ++N,WAAW99P,EAAE,EAC3fyB,EAAQ0z0C,cAAc,WAAW,EAAE1z0C,EAAQ2z0C,iBAAiB,SAASp10C,GAAG,OAAOqE,EAAE06B,QAAQq2yC,iBAAiBp10C,EAAE,EAAEyB,EAAQ6+B,UAAU,SAAStgC,EAAEsC,GAAG,OAAO+B,EAAE06B,QAAQuB,UAAUtgC,EAAEsC,EAAE,EAAEb,EAAQoluC,MAAM,WAAW,OAAOxiuC,EAAE06B,QAAQ8nsC,OAAO,EAAEpluC,EAAQ82P,oBAAoB,SAASv4P,EAAEsC,EAAEnE,GAAG,OAAOkG,EAAE06B,QAAQw5N,oBAAoBv4P,EAAEsC,EAAEnE,EAAE,EAAEsD,EAAQu8P,mBAAmB,SAASh+P,EAAEsC,GAAG,OAAO+B,EAAE06B,QAAQi/N,mBAAmBh+P,EAAEsC,EAAE,EAAEb,EAAQk0P,gBAAgB,SAAS31P,EAAEsC,GAAG,OAAO+B,EAAE06B,QAAQ42N,gBAAgB31P,EAAEsC,EAAE,EACzdb,EAAQgsC,QAAQ,SAASztC,EAAEsC,GAAG,OAAO+B,EAAE06B,QAAQ0O,QAAQztC,EAAEsC,EAAE,EAAEb,EAAQyz0C,WAAW,SAASl10C,EAAEsC,EAAEnE,GAAG,OAAOkG,EAAE06B,QAAQm2yC,WAAWl10C,EAAEsC,EAAEnE,EAAE,EAAEsD,EAAQ67B,OAAO,SAASt9B,GAAG,OAAOqE,EAAE06B,QAAQzB,OAAOt9B,EAAE,EAAEyB,EAAQq1P,SAAS,SAAS92P,GAAG,OAAOqE,EAAE06B,QAAQ+3N,SAAS92P,EAAE,EAAEyB,EAAQ+z0C,qBAAqB,SAASx10C,EAAEsC,EAAEnE,GAAG,OAAOkG,EAAE06B,QAAQy2yC,qBAAqBx10C,EAAEsC,EAAEnE,EAAE,EAAEsD,EAAQ4z0C,cAAc,WAAW,OAAOhx0C,EAAE06B,QAAQs2yC,eAAe,EAAE5z0C,EAAQ6D,QAAQ,uCCtBlaw2B,EAAOr6B,QAAU,EAAjB,qCCAAq6B,EAAOr6B,QAAU,EAAjB,0GCMF,SAASol9C,EAAuB3s7C,GAC9B,MAAO,yBAA2BA,EAAO,4CAA8CA,EAAhF,iFACT,CAGA,IAAI4s7C,EACuB,mBAAXpm9C,QAAyBA,OAAO8uC,YAAc,eAS1DtM,EAAe,WACjB,OAAOrhC,KAAKwF,SAAS9D,SAAS,IAAI+yB,UAAU,GAAG1yB,MAAM,IAAIiI,KAAK,IAChE,EAEIk78C,EAAc,CAChBC,KAAM,eAAiB9j7C,IACvB69J,QAAS,kBAAoB79J,IAC7B+j7C,qBAAsB,WACpB,MAAO,+BAAiC/j7C,GAC1C,GAuGF,SAASy12B,EAAYtre,EAASG,EAAgB05iC,GAC5C,IAAIr0vC,EAEJ,GAA8B,mBAAnB26M,GAAqD,mBAAb05iC,GAA+C,mBAAbA,GAAmD,mBAAjB9n9C,UAAU,GAC/H,MAAM,IAAIonB,MAA8Cqg8C,EAAuB,IAQjF,GAL8B,mBAAnBr5iC,QAAqD,IAAb05iC,IACjDA,EAAW15iC,EACXA,OAAiBzgY,QAGK,IAAbm66C,EAA0B,CACnC,GAAwB,mBAAbA,EACT,MAAM,IAAI1g8C,MAA8Cqg8C,EAAuB,IAGjF,OAAOK,EAASvukB,EAATuukB,CAAsB75iC,EAASG,EACxC,CAEA,GAAuB,mBAAZH,EACT,MAAM,IAAI7mZ,MAA8Cqg8C,EAAuB,IAGjF,IAAIM,EAAiB95iC,EACjB+5iC,EAAe55iC,EACf65iC,EAAmB,GACnBC,EAAgBD,EAChBE,GAAgB,EASpB,SAASC,IACHF,IAAkBD,IACpBC,EAAgBD,EAAiBtm9C,QAErC,CAQA,SAASuiH,IACP,GAAIik2C,EACF,MAAM,IAAI/g8C,MAA8Cqg8C,EAAuB,IAGjF,OAAOO,CACT,CA0BA,SAAS1s6C,EAAUpM,GACjB,GAAwB,mBAAbA,EACT,MAAM,IAAI9nB,MAA8Cqg8C,EAAuB,IAGjF,GAAIU,EACF,MAAM,IAAI/g8C,MAA8Cqg8C,EAAuB,IAGjF,IAAIz6B,GAAe,EAGnB,OAFAo7B,IACAF,EAAczm9C,KAAKytC,GACZ,WACL,GAAK894C,EAAL,CAIA,GAAIm7B,EACF,MAAM,IAAI/g8C,MAA8Cqg8C,EAAuB,IAGjFz6B,GAAe,EACfo7B,IACA,IAAIxr8C,EAAQsr8C,EAAc9n9C,QAAQ8uC,GAClCg56C,EAAcrl8C,OAAOjG,EAAO,GAC5Bqr8C,EAAmB,IAVnB,CAWF,CACF,CA4BA,SAAS77iC,EAASlhW,GAChB,IAzOJ,SAAuB4hJ,GACrB,GAAmB,iBAARA,GAA4B,OAARA,EAAc,OAAO,EAGpD,IAFA,IAAI17M,EAAQ07M,EAE4B,OAAjC5tN,OAAO2b,eAAezJ,IAC3BA,EAAQlS,OAAO2b,eAAezJ,GAGhC,OAAOlS,OAAO2b,eAAeiyM,KAAS17M,CACxC,CAgOSswJ,CAAcx2F,GACjB,MAAM,IAAI9jD,MAA8Cqg8C,EAAuB,IAGjF,QAA2B,IAAhBv84C,EAAO/+D,KAChB,MAAM,IAAIib,MAA8Cqg8C,EAAuB,IAGjF,GAAIU,EACF,MAAM,IAAI/g8C,MAA8Cqg8C,EAAuB,IAGjF,IACEU,GAAgB,EAChBH,EAAeD,EAAeC,EAAc984C,EAC9C,CAAE,QACAi94C,GAAgB,CAClB,CAIA,IAFA,IAAIt/7C,EAAYo/7C,EAAmBC,EAE1B1n9C,EAAI,EAAGA,EAAIqoB,EAAU5oB,OAAQO,KAEpC0uC,EADermB,EAAUroB,MAI3B,OAAO0qE,CACT,CA4EA,OAHAkhW,EAAS,CACPjga,KAAMw78C,EAAYC,QAEbn0vC,EAAQ,CACb24M,SAAUA,EACV9wX,UAAWA,EACX4oE,SAAUA,EACVmk2C,eAnEF,SAAwBC,GACtB,GAA2B,mBAAhBA,EACT,MAAM,IAAIlh8C,MAA8Cqg8C,EAAuB,KAGjFM,EAAiBO,EAKjBl8iC,EAAS,CACPjga,KAAMw78C,EAAYhmxC,SAEtB,IAuDS+lxC,GA9CT,WACE,IAAI16wC,EAEAu7wC,EAAiBjt6C,EACrB,OAAO0xJ,EAAO,CASZ1xJ,UAAW,SAAmBI,GAC5B,GAAwB,iBAAbA,GAAsC,OAAbA,EAClC,MAAM,IAAIt0B,MAA8Cqg8C,EAAuB,KAGjF,SAASe,IACH9s6C,EAAS/6C,MACX+6C,EAAS/6C,KAAKujH,IAElB,CAIA,OAFAsk2C,IAEO,CACLht6C,YAFgB+s6C,EAAeC,GAInC,IACMd,GAAgB,WACtB,OAAO9n9C,IACT,EAAGotM,CACL,EAaqCymB,CACvC,CAsHA,SAASg1vC,EAAgB54iC,GAIvB,IAHA,IAAI64iC,EAAcxp9C,OAAOgU,KAAK28Z,GAC1B84iC,EAAgB,CAAC,EAEZno9C,EAAI,EAAGA,EAAIko9C,EAAYzo9C,OAAQO,IAAK,CAC3C,IAAIikB,EAAMik8C,EAAYlo9C,GAQO,mBAAlBqva,EAASprZ,KAClBkk8C,EAAclk8C,GAAOorZ,EAASprZ,GAElC,CAEA,IASImk8C,EATAC,EAAmB3p9C,OAAOgU,KAAKy18C,GAWnC,KAjEF,SAA4B94iC,GAC1B3wa,OAAOgU,KAAK28Z,GAAU/qZ,SAAQ,SAAUL,GACtC,IAAIwpZ,EAAU4B,EAASprZ,GAKvB,QAA4B,IAJTwpZ,OAAQtgY,EAAW,CACpCxhC,KAAMw78C,EAAYC,OAIlB,MAAM,IAAIxg8C,MAA8Cqg8C,EAAuB,KAGjF,QAEO,IAFIx5iC,OAAQtgY,EAAW,CAC5BxhC,KAAMw78C,EAAYE,yBAElB,MAAM,IAAIzg8C,MAA8Cqg8C,EAAuB,IAEnF,GACF,CAiDIqB,CAAmBH,EACrB,CAAE,MAAO5p9C,GACP6p9C,EAAsB7p9C,CACxB,CAEA,OAAO,SAAqBwM,EAAO2/D,GAKjC,QAJc,IAAV3/D,IACFA,EAAQ,CAAC,GAGPq98C,EACF,MAAMA,EAcR,IAX2C,IAQvCG,GAAa,EACb5iwB,EAAY,CAAC,EAER9nsB,EAAK,EAAGA,EAAKwq8C,EAAiB5o9C,OAAQoe,IAAM,CACnD,IAAIiqO,EAAOuguC,EAAiBxq8C,GACxB4vZ,EAAU06iC,EAAcrguC,GACxB0guC,EAAsBz98C,EAAM+8O,GAC5B2guC,EAAkBh7iC,EAAQ+6iC,EAAqB994C,GAEnD,QAA+B,IAApB+94C,EAET,MADiB/94C,GAAUA,EAAO/+D,KAC5B,IAAIib,MAA8Cqg8C,EAAuB,KAGjFthwB,EAAU79d,GAAQ2guC,EAClBF,EAAaA,GAAcE,IAAoBD,CACjD,CAGA,OADAD,EAAaA,GAAcF,EAAiB5o9C,SAAWf,OAAOgU,KAAK3H,GAAOtL,QACtDkmtB,EAAY56sB,CAClC,CACF,CAEA,SAAS298C,EAAkBp6iC,EAAe1C,GACxC,OAAO,WACL,OAAOA,EAAS0C,EAAc3ua,MAAMP,KAAMI,WAC5C,CACF,CAwBA,SAAS0x7C,EAAmBzhhC,EAAgB7D,GAC1C,GAA8B,mBAAnB6D,EACT,OAAOi5iC,EAAkBj5iC,EAAgB7D,GAG3C,GAA8B,iBAAnB6D,GAAkD,OAAnBA,EACxC,MAAM,IAAI7oZ,MAA8Cqg8C,EAAuB,KAGjF,IAAIh2B,EAAsB,CAAC,EAE3B,IAAK,IAAIht6C,KAAOwrZ,EAAgB,CAC9B,IAAInB,EAAgBmB,EAAexrZ,GAEN,mBAAlBqqZ,IACT2ihC,EAAoBht6C,GAAOyk8C,EAAkBp6iC,EAAe1C,GAEhE,CAEA,OAAOqlhC,CACT,CAYA,SAASrv9B,IACP,IAAK,IAAI50O,EAAOxtP,UAAUC,OAAQmhe,EAAQ,IAAI/he,MAAMmuP,GAAOlF,EAAO,EAAGA,EAAOkF,EAAMlF,IAChF84O,EAAM94O,GAAQtoP,UAAUsoP,GAG1B,OAAqB,IAAjB84O,EAAMnhe,OACD,SAAU62C,GACf,OAAOA,CACT,EAGmB,IAAjBsqb,EAAMnhe,OACDmhe,EAAM,GAGRA,EAAM9tc,QAAO,SAAU1yB,EAAGsC,GAC/B,OAAO,WACL,OAAOtC,EAAEsC,EAAE/C,WAAM,EAAQH,WAC3B,CACF,GACF,CAmBA,SAASmp9C,IACP,IAAK,IAAI37tC,EAAOxtP,UAAUC,OAAQmp9C,EAAc,IAAI/p9C,MAAMmuP,GAAOlF,EAAO,EAAGA,EAAOkF,EAAMlF,IACtF8guC,EAAY9guC,GAAQtoP,UAAUsoP,GAGhC,OAAO,SAAUixpB,GACf,OAAO,WACL,IAAI5qsB,EAAQ4qsB,EAAYp54B,WAAM,EAAQH,WAElCqp9C,EAAY,WACd,MAAM,IAAIji8C,MAA8Cqg8C,EAAuB,IACjF,EAEI6B,EAAgB,CAClBpl2C,SAAUyqF,EAAMzqF,SAChBkoT,SAAU,WACR,OAAOi9iC,EAAUlp9C,WAAM,EAAQH,UACjC,GAEEo+6B,EAAQgriB,EAAYn67C,KAAI,SAAUi/Y,GACpC,OAAOA,EAAWo7iC,EACpB,IAEA,OADAD,EAAYjn/B,EAAQjie,WAAM,EAAQi+6B,EAAtBh8c,CAA6BzzR,EAAMy9N,WACxC,QAAc,OAAc,CAAC,EAAGz9N,GAAQ,CAAC,EAAG,CACjDy9N,SAAUi9iC,GAEd,CACF,CACF,kDC5rBA,IAAIE,EAAY,YAgFLC,EAAuB,SAA8B5o9C,EAAGsC,GACjE,OAAOtC,IAAMsC,CACf,EAqBO,SAASum9C,EAAe9p6C,EAAM+p6C,GACnC,IAtG4Bv30C,EACxBv+E,EAqGA+15C,EAAoD,iBAA3BD,EAAsCA,EAAyB,CAC1FE,cAAeF,GAEbG,EAAwBF,EAAgBC,cACxCA,OAA0C,IAA1BC,EAAmCL,EAAuBK,EAC1EC,EAAwBH,EAAgB1jzC,QACxCA,OAAoC,IAA1B6jzC,EAAmC,EAAIA,EACjDC,EAAsBJ,EAAgBI,oBACtCpx+B,EA7BC,SAAkCix+B,GACvC,OAAO,SAAoClh0C,EAAM/nJ,GAC/C,GAAa,OAAT+nJ,GAA0B,OAAT/nJ,GAAiB+nJ,EAAKzoJ,SAAWU,EAAKV,OACzD,OAAO,EAMT,IAFA,IAAIA,EAASyoJ,EAAKzoJ,OAETO,EAAI,EAAGA,EAAIP,EAAQO,IAC1B,IAAKop9C,EAAclh0C,EAAKloJ,GAAIG,EAAKH,IAC/B,OAAO,EAIX,OAAO,CACT,CACF,CAYmBwp9C,CAAyBJ,GACtC927C,EAAoB,IAAZmzI,GA/GgB9zB,EA+GqBwmW,EA7G1C,CACL51e,IAAK,SAAa0hB,GAChB,OAAImvC,GAASu+E,EAAOv+E,EAAMnvC,IAAKA,GACtBmvC,EAAM7yD,MAGRwo9C,CACT,EACAzogB,IAAK,SAAar87B,EAAK1jB,GACrB6yD,EAAQ,CACNnvC,IAAKA,EACL1jB,MAAOA,EAEX,EACAklF,WAAY,WACV,OAAOryB,EAAQ,CAACA,GAAS,EAC3B,EACAhvC,MAAO,WACLgvC,OAAQjmB,CACV,IAIJ,SAAwBs4H,EAAS9zB,GAC/B,IAAI91H,EAAU,GAEd,SAAStZ,EAAI0hB,GACX,IAAIwl8C,EAAa5t8C,EAAQ6pF,WAAU,SAAUtyC,GAC3C,OAAOu+E,EAAO1tH,EAAKmvC,EAAMnvC,IAC3B,IAEA,GAAIwl8C,GAAc,EAAG,CACnB,IAAIr25C,EAAQv3C,EAAQ4t8C,GAOpB,OALIA,EAAa,IACf5t8C,EAAQwG,OAAOon8C,EAAY,GAC3B5t8C,EAAQoO,QAAQmpC,IAGXA,EAAM7yD,KACf,CAGA,OAAOwo9C,CACT,CAwBA,MAAO,CACLxm9C,IAAKA,EACL+98B,IAxBF,SAAar87B,EAAK1jB,GACZgC,EAAI0hB,KAAS8k8C,IAEflt8C,EAAQoO,QAAQ,CACdhG,IAAKA,EACL1jB,MAAOA,IAGLsb,EAAQpc,OAASgmK,GACnB5pJ,EAAQ7a,MAGd,EAaEykF,WAXF,WACE,OAAO5pE,CACT,EAUEuI,MARF,WACEvI,EAAU,EACZ,EAQF,CAmCiE6t8C,CAAejkzC,EAAS0yU,GAEvF,SAASq5yB,IACP,IAAIjxxC,EAAQ+xB,EAAM/vB,IAAI/C,WAEtB,GAAIe,IAAUwo9C,EAAW,CAIvB,GAFAxo9C,EAAQ4+C,EAAKx/C,MAAM,KAAMH,WAErB+p9C,EAAqB,CACvB,IACII,EADUr37C,EAAMmzD,aACQ3/C,MAAK,SAAUstB,GACzC,OAAOm25C,EAAoBn25C,EAAM7yD,MAAOA,EAC1C,IAEIop9C,IACFpp9C,EAAQop9C,EAAcpp9C,MAE1B,CAEA+xB,EAAMgu7B,IAAI9g9B,UAAWe,EACvB,CAEA,OAAOA,CACT,CAMA,OAJAixxC,EAASo4L,WAAa,WACpB,OAAOt37C,EAAMlO,OACf,EAEOotwC,CACT,CChIO,SAASq4L,EAAsB/j1C,GACpC,IAAK,IAAIknH,EAAOxtP,UAAUC,OAAQqq9C,EAAyB,IAAIjr9C,MAAMmuP,EAAO,EAAIA,EAAO,EAAI,GAAIlF,EAAO,EAAGA,EAAOkF,EAAMlF,IACpHgiuC,EAAuBhiuC,EAAO,GAAKtoP,UAAUsoP,GAiF/C,OA9EqB,WACnB,IAAK,IAAIiY,EAAQvgQ,UAAUC,OAAQmhe,EAAQ,IAAI/he,MAAMkhQ,GAAQC,EAAQ,EAAGA,EAAQD,EAAOC,IACrF4gO,EAAM5gO,GAASxgQ,UAAUwgQ,GAG3B,IAEI+ptC,EAFAC,EAAkB,EAOlBC,EAAwB,CAC1BC,oBAAgB/86C,GAGdg96C,EAAavp/B,EAAM5/d,MAQvB,GAN0B,iBAAfmp9C,IACTF,EAAwBE,EAExBA,EAAavp/B,EAAM5/d,OAGK,mBAAfmp9C,EACT,MAAM,IAAIvj8C,MAAM,qFAAuFuj8C,EAAa,KAKtH,IACIC,EADwBH,EACuBC,eAC/CA,OAA4C,IAA3BE,EAAoCN,EAAyBM,EAM9EC,EAAsBxr9C,MAAMkS,QAAQm58C,GAAkBA,EAAiB,CAACA,GACxE7uzC,EA3DR,SAAyBulU,GACvB,IAAIvlU,EAAex8J,MAAMkS,QAAQ6vd,EAAM,IAAMA,EAAM,GAAKA,EAExD,IAAKvlU,EAAaxzH,OAAM,SAAU2u9B,GAChC,MAAsB,mBAARA,CAChB,IAAI,CACF,IAAI8zd,EAAkBjvzC,EAAa5sI,KAAI,SAAU+n+B,GAC/C,MAAsB,mBAARA,EAAqB,aAAeA,EAAI1s/B,MAAQ,WAAa,YAAc0s/B,CAC3F,IAAGvq/B,KAAK,MACR,MAAM,IAAI2a,MAAM,kGAAoG0j8C,EAAkB,IACxI,CAEA,OAAOjvzC,CACT,CA8CuBkvzC,CAAgB3p/B,GAC/B4p/B,EAAqB1k1C,EAAQnmI,WAAM,EAAQ,CAAC,WAG9C,OAFAqq9C,IAEOG,EAAWxq9C,MAAM,KAAMH,UAChC,GAAG4B,OAAOip9C,IAEN163C,EAAWm2C,GAAQ,WAIrB,IAHA,IAAIr+F,EAAS,GACThoC,EAAS47J,EAAa57J,OAEjBO,EAAI,EAAGA,EAAIP,EAAQO,IAG1BynC,EAAOxmC,KAAKo6J,EAAar7J,GAAGL,MAAM,KAAMH,YAK1C,OADAuq9C,EAAcS,EAAmB7q9C,MAAM,KAAM8nC,EAE/C,IAeA,OAdA/oC,OAAOa,OAAOowF,EAAU,CACtBw63C,WAAYA,EACZK,mBAAoBA,EACpBnvzC,aAAcA,EACdw7V,WAAY,WACV,OAAOkz9B,CACT,EACAU,eAAgB,WACd,OAAOT,CACT,EACAU,oBAAqB,WACnB,OAAOV,EAAkB,CAC3B,IAEKr63C,CACT,CAIF,CACO,IAAIg73C,EAAgCd,EAAsBZ,kDChGjE,IAAI2B,EAAU,WACV,GAAmB,oBAAR7g8C,IACP,OAAOA,IASX,SAASkrN,EAASpX,EAAK55M,GACnB,IAAIrB,GAAU,EAQd,OAPAi7M,EAAI92L,MAAK,SAAUqsB,EAAOh3C,GACtB,OAAIg3C,EAAM,KAAOnvC,IACbrB,EAASxG,GACF,EAGf,IACOwG,CACX,CACA,OAAsB,WAClB,SAAS+uZ,IACLvya,KAAKyr9C,YAAc,EACvB,CAsEA,OArEAns9C,OAAO4D,eAAeqva,EAAQ7ya,UAAW,OAAQ,CAI7CyD,IAAK,WACD,OAAOnD,KAAKyr9C,YAAYpr9C,MAC5B,EACAsD,YAAY,EACZG,cAAc,IAMlByua,EAAQ7ya,UAAUyD,IAAM,SAAU0hB,GAC9B,IAAI7H,EAAQ64N,EAAS71O,KAAKyr9C,YAAa5m8C,GACnCmvC,EAAQh0D,KAAKyr9C,YAAYzu8C,GAC7B,OAAOg3C,GAASA,EAAM,EAC1B,EAMAu+W,EAAQ7ya,UAAUuM,IAAM,SAAU4Y,EAAK1jB,GACnC,IAAI6b,EAAQ64N,EAAS71O,KAAKyr9C,YAAa5m8C,IAClC7H,EACDhd,KAAKyr9C,YAAYzu8C,GAAO,GAAK7b,EAG7BnB,KAAKyr9C,YAAY5p9C,KAAK,CAACgjB,EAAK1jB,GAEpC,EAKAoxa,EAAQ7ya,UAAUulB,OAAS,SAAUJ,GACjC,IAAIpI,EAAUzc,KAAKyr9C,YACfzu8C,EAAQ64N,EAASp5N,EAASoI,IACzB7H,GACDP,EAAQwG,OAAOjG,EAAO,EAE9B,EAKAu1Z,EAAQ7ya,UAAUqM,IAAM,SAAU8Y,GAC9B,SAAUgxN,EAAS71O,KAAKyr9C,YAAa5m8C,EACzC,EAIA0tZ,EAAQ7ya,UAAUslB,MAAQ,WACtBhlB,KAAKyr9C,YAAYxo8C,OAAO,EAC5B,EAMAsvZ,EAAQ7ya,UAAUwlB,QAAU,SAAUgE,EAAUouN,QAChC,IAARA,IAAkBA,EAAM,MAC5B,IAAK,IAAI74N,EAAK,EAAGkY,EAAK32B,KAAKyr9C,YAAaht8C,EAAKkY,EAAGt2B,OAAQoe,IAAM,CAC1D,IAAIu1C,EAAQr9B,EAAGlY,GACfyK,EAAStpB,KAAK03O,EAAKtjL,EAAM,GAAIA,EAAM,GACvC,CACJ,EACOu+W,CACX,CA1EqB,EA2ExB,CAjGa,GAsGVpyI,EAA8B,oBAAXj+R,QAA8C,oBAAbiD,UAA4BjD,OAAOiD,WAAaA,SAGpGum9C,OACsB,IAAX,EAAAvp9C,GAA0B,EAAAA,EAAOU,OAASA,KAC1C,EAAAV,EAES,oBAATC,MAAwBA,KAAKS,OAASA,KACtCT,KAEW,oBAAXF,QAA0BA,OAAOW,OAASA,KAC1CX,OAGJa,SAAS,cAATA,GASP4o9C,EACqC,mBAA1Br12C,sBAIAA,sBAAsBjzG,KAAKqo9C,GAE/B,SAAUxi8C,GAAY,OAAOrD,YAAW,WAAc,OAAOqD,EAASsC,KAAKC,MAAQ,GAAG,IAAO,GAAK,EAwEzG0/oC,EAAiB,CAAC,MAAO,QAAS,SAAU,OAAQ,QAAS,SAAU,OAAQ,UAE/EygT,EAAwD,oBAArBnr4C,iBAInCor4C,EAA0C,WAM1C,SAASA,IAML7r9C,KAAK8r9C,YAAa,EAMlB9r9C,KAAK+r9C,sBAAuB,EAM5B/r9C,KAAKgs9C,mBAAqB,KAM1Bhs9C,KAAKis9C,WAAa,GAClBjs9C,KAAKks9C,iBAAmBls9C,KAAKks9C,iBAAiB7o9C,KAAKrD,MACnDA,KAAKmrjB,QAjGb,SAAmBjiiB,EAAUi4B,GACzB,IAAIgr6C,GAAc,EAAOC,GAAe,EAAOpgN,EAAe,EAO9D,SAASqgN,IACDF,IACAA,GAAc,EACdjj8C,KAEAkj8C,GACAzy5C,GAER,CAQA,SAAS2y5C,IACLX,EAAwBU,EAC5B,CAMA,SAAS1y5C,IACL,IAAInV,EAAYh5B,KAAKC,MACrB,GAAI0g8C,EAAa,CAEb,GAAI3n6C,EAAYwntC,EA7CN,EA8CN,OAMJogN,GAAe,CACnB,MAEID,GAAc,EACdC,GAAe,EACfvm8C,WAAWym8C,EAAiBnr6C,GAEhC6qtC,EAAexntC,CACnB,CACA,OAAOmV,CACX,CA4CuBv1B,CAASpkC,KAAKmrjB,QAAQ9njB,KAAKrD,MAzC9B,GA0ChB,CA+JA,OAxJA6r9C,EAAyBns9C,UAAU6s9C,YAAc,SAAUzw6C,IACjD97C,KAAKis9C,WAAWzr9C,QAAQs7C,IAC1B97C,KAAKis9C,WAAWpq9C,KAAKi6C,GAGpB97C,KAAK8r9C,YACN9r9C,KAAKws9C,UAEb,EAOAX,EAAyBns9C,UAAU+s9C,eAAiB,SAAU3w6C,GAC1D,IAAIL,EAAYz7C,KAAKis9C,WACjBjv8C,EAAQy+B,EAAUj7C,QAAQs7C,IAEzB9+B,GACDy+B,EAAUx4B,OAAOjG,EAAO,IAGvBy+B,EAAUp7C,QAAUL,KAAK8r9C,YAC1B9r9C,KAAK0s9C,aAEb,EAOAb,EAAyBns9C,UAAUyrjB,QAAU,WACnBnrjB,KAAK2s9C,oBAIvB3s9C,KAAKmrjB,SAEb,EASA0g6B,EAAyBns9C,UAAUit9C,iBAAmB,WAElD,IAAIC,EAAkB5s9C,KAAKis9C,WAAWp/7C,QAAO,SAAUivB,GACnD,OAAOA,EAAS+w6C,eAAgB/w6C,EAASgx6C,WAC7C,IAOA,OADAF,EAAgB1n8C,SAAQ,SAAU42B,GAAY,OAAOA,EAASix6C,iBAAmB,IAC1EH,EAAgBvs9C,OAAS,CACpC,EAOAwr9C,EAAyBns9C,UAAU8s9C,SAAW,WAGrCrsrC,IAAangS,KAAK8r9C,aAMvB3m9C,SAASwnB,iBAAiB,gBAAiB3sB,KAAKks9C,kBAChDhq9C,OAAOyqB,iBAAiB,SAAU3sB,KAAKmrjB,SACnCyg6B,GACA5r9C,KAAKgs9C,mBAAqB,IAAIvr4C,iBAAiBzgF,KAAKmrjB,SACpDnrjB,KAAKgs9C,mBAAmBl74C,QAAQ3rE,SAAU,CACtCitG,YAAY,EACZE,WAAW,EACXD,eAAe,EACfE,SAAS,MAIbptG,SAASwnB,iBAAiB,qBAAsB3sB,KAAKmrjB,SACrDnrjB,KAAK+r9C,sBAAuB,GAEhC/r9C,KAAK8r9C,YAAa,EACtB,EAOAD,EAAyBns9C,UAAUgt9C,YAAc,WAGxCvsrC,GAAcngS,KAAK8r9C,aAGxB3m9C,SAASkkB,oBAAoB,gBAAiBrpB,KAAKks9C,kBACnDhq9C,OAAOmnB,oBAAoB,SAAUrpB,KAAKmrjB,SACtCnrjB,KAAKgs9C,oBACLhs9C,KAAKgs9C,mBAAmBj74C,aAExB/wE,KAAK+r9C,sBACL5m9C,SAASkkB,oBAAoB,qBAAsBrpB,KAAKmrjB,SAE5DnrjB,KAAKgs9C,mBAAqB,KAC1Bhs9C,KAAK+r9C,sBAAuB,EAC5B/r9C,KAAK8r9C,YAAa,EACtB,EAQAD,EAAyBns9C,UAAUws9C,iBAAmB,SAAUv17C,GAC5D,IAAI62B,EAAK72B,EAAGqlL,aAAcA,OAAsB,IAAPxuJ,EAAgB,GAAKA,EAEvC29mC,EAAexjoC,MAAK,SAAU9iB,GACjD,SAAUm3L,EAAax7M,QAAQqkB,EACnC,KAEI7kB,KAAKmrjB,SAEb,EAMA0g6B,EAAyB5g8C,YAAc,WAInC,OAHKjrB,KAAKgt9C,YACNht9C,KAAKgt9C,UAAY,IAAInB,GAElB7r9C,KAAKgt9C,SAChB,EAMAnB,EAAyBmB,UAAY,KAC9BnB,CACX,CAjM6C,GA0MzCoB,EAAqB,SAAWn98C,EAAQm9B,GACxC,IAAK,IAAIxuB,EAAK,EAAGkY,EAAKr3B,OAAOgU,KAAK25B,GAAQxuB,EAAKkY,EAAGt2B,OAAQoe,IAAM,CAC5D,IAAIoG,EAAM8R,EAAGlY,GACbnf,OAAO4D,eAAe4M,EAAQ+U,EAAK,CAC/B1jB,MAAO8rC,EAAMpoB,GACblhB,YAAY,EACZI,UAAU,EACVD,cAAc,GAEtB,CACA,OAAOgM,CACV,EAQGo98C,EAAc,SAAWp98C,GAOzB,OAHkBA,GAAUA,EAAOq+E,eAAiBr+E,EAAOq+E,cAAcsnU,aAGnDi2jC,CACzB,EAGGyB,EAAYC,EAAe,EAAG,EAAG,EAAG,GAOxC,SAASC,EAAQls9C,GACb,OAAOkpK,WAAWlpK,IAAU,CAChC,CAQA,SAASms9C,EAAez3yC,GAEpB,IADA,IAAIprI,EAAY,GACPhsB,EAAK,EAAGA,EAAKre,UAAUC,OAAQoe,IACpCgsB,EAAUhsB,EAAK,GAAKre,UAAUqe,GAElC,OAAOgsB,EAAU/W,QAAO,SAAU9O,EAAM+Z,GAEpC,OAAO/Z,EAAOyo8C,EADFx3yC,EAAO,UAAYl3I,EAAW,UAE9C,GAAG,EACP,CAyGA,IAAI4u7C,EAGkC,oBAAvBC,mBACA,SAAU198C,GAAU,OAAOA,aAAkBo98C,EAAYp98C,GAAQ098C,kBAAoB,EAKzF,SAAU198C,GAAU,OAAQA,aAAkBo98C,EAAYp98C,GAAQ2q1C,YAC3C,mBAAnB3q1C,EAAOmtvB,OAAyB,EAiB/C,SAASwwtB,EAAe398C,GACpB,OAAKqwR,EAGDotrC,EAAqBz98C,GAhH7B,SAA2BA,GACvB,IAAIu7B,EAAOv7B,EAAOmtvB,UAClB,OAAOmwtB,EAAe,EAAG,EAAG/h7C,EAAKtM,MAAOsM,EAAKrM,OACjD,CA8Ge0u7C,CAAkB598C,GAvGjC,SAAmCA,GAG/B,IAAIqwI,EAAcrwI,EAAOqwI,YAAaE,EAAevwI,EAAOuwI,aAS5D,IAAKF,IAAgBE,EACjB,OAAO8s0C,EAEX,IAAIt3yC,EAASq3yC,EAAYp98C,GAAQ6lZ,iBAAiB7lZ,GAC9CmjyB,EA3CR,SAAqBp9nB,GAGjB,IAFA,IACIo9nB,EAAW,CAAC,EACPx0xB,EAAK,EAAGkv8C,EAFD,CAAC,MAAO,QAAS,SAAU,QAEDlv8C,EAAKkv8C,EAAYtt9C,OAAQoe,IAAM,CACrE,IAAIkgB,EAAWgv7C,EAAYlv8C,GACvBtd,EAAQ00K,EAAO,WAAal3I,GAChCs0wB,EAASt0wB,GAAY0u7C,EAAQls9C,EACjC,CACA,OAAO8xyB,CACX,CAkCmB26qB,CAAY/3yC,GACvBg4yC,EAAW56qB,EAASp0wB,KAAOo0wB,EAASpzsB,MACpCiu3C,EAAU76qB,EAASn0wB,IAAMm0wB,EAASnzsB,OAKlC/gE,EAAQsu7C,EAAQx3yC,EAAO92I,OAAQC,EAASqu7C,EAAQx3yC,EAAO72I,QAqB3D,GAlByB,eAArB62I,EAAOyoM,YAOHz7W,KAAKogD,MAAMlkB,EAAQ8u7C,KAAc1t0C,IACjCphH,GAASuu7C,EAAez3yC,EAAQ,OAAQ,SAAWg4yC,GAEnDhr9C,KAAKogD,MAAMjkB,EAAS8u7C,KAAazt0C,IACjCrhH,GAAUsu7C,EAAez3yC,EAAQ,MAAO,UAAYi4yC,KAoDhE,SAA2Bh+8C,GACvB,OAAOA,IAAWo98C,EAAYp98C,GAAQ3K,SAASk+F,eACnD,CA/CSyu2C,CAAkBhi8C,GAAS,CAK5B,IAAIi+8C,EAAgBlr9C,KAAKogD,MAAMlkB,EAAQ8u7C,GAAY1t0C,EAC/C6t0C,EAAiBnr9C,KAAKogD,MAAMjkB,EAAS8u7C,GAAWzt0C,EAMpB,IAA5Bx9I,KAAKmjH,IAAI+n2C,KACThv7C,GAASgv7C,GAEoB,IAA7Blr9C,KAAKmjH,IAAIgo2C,KACThv7C,GAAUgv7C,EAElB,CACA,OAAOZ,EAAen6qB,EAASp0wB,KAAMo0wB,EAASn0wB,IAAKC,EAAOC,EAC9D,CAyCWiv7C,CAA0Bn+8C,GALtBq98C,CAMf,CAiCA,SAASC,EAAenp9C,EAAGjB,EAAG+7B,EAAOC,GACjC,MAAO,CAAE/6B,EAAGA,EAAGjB,EAAGA,EAAG+7B,MAAOA,EAAOC,OAAQA,EAC/C,CAMA,IAAIkv7C,EAAmC,WAMnC,SAASA,EAAkBp+8C,GAMvB9P,KAAKmu9C,eAAiB,EAMtBnu9C,KAAKou9C,gBAAkB,EAMvBpu9C,KAAKqu9C,aAAejB,EAAe,EAAG,EAAG,EAAG,GAC5Cpt9C,KAAK8P,OAASA,CAClB,CAyBA,OAlBAo+8C,EAAkBxu9C,UAAUoqG,SAAW,WACnC,IAAIpW,EAAO+53C,EAAezt9C,KAAK8P,QAE/B,OADA9P,KAAKqu9C,aAAe363C,EACZA,EAAK30D,QAAU/+B,KAAKmu9C,gBACxBz63C,EAAK10D,SAAWh/B,KAAKou9C,eAC7B,EAOAF,EAAkBxu9C,UAAU4u9C,cAAgB,WACxC,IAAI563C,EAAO1zF,KAAKqu9C,aAGhB,OAFAru9C,KAAKmu9C,eAAiBz63C,EAAK30D,MAC3B/+B,KAAKou9C,gBAAkB163C,EAAK10D,OACrB00D,CACX,EACOw63C,CACX,CApDsC,GAsDlCK,EAOA,SAA6Bz+8C,EAAQ0+8C,GACjC,IA/FoB737C,EACpB1yB,EAAUjB,EAAU+7B,EAAkBC,EAEtCyv7C,EACA/63C,EA2FIqhX,GA9FJ9wc,GADoB0yB,EA+FiB637C,GA9F9Bvq9C,EAAGjB,EAAI2zB,EAAG3zB,EAAG+7B,EAAQpI,EAAGoI,MAAOC,EAASrI,EAAGqI,OAElDyv7C,EAAoC,oBAApBC,gBAAkCA,gBAAkBpv9C,OACpEo0F,EAAOp0F,OAAOY,OAAOuu9C,EAAO/u9C,WAEhCut9C,EAAmBv53C,EAAM,CACrBzvF,EAAGA,EAAGjB,EAAGA,EAAG+7B,MAAOA,EAAOC,OAAQA,EAClCF,IAAK97B,EACL68F,MAAO57F,EAAI86B,EACX+gE,OAAQ9gE,EAASh8B,EACjB67B,KAAM56B,IAEHyvF,GAyFHu53C,EAAmBjt9C,KAAM,CAAE8P,OAAQA,EAAQilc,YAAaA,GAC5D,EAIA45gC,EAAmC,WAWnC,SAASA,EAAkBzl8C,EAAUqnH,EAAYq+0C,GAc7C,GAPA5u9C,KAAK6u9C,oBAAsB,GAM3B7u9C,KAAK8u9C,cAAgB,IAAItD,EACD,mBAAbti8C,EACP,MAAM,IAAIrpB,UAAU,2DAExBG,KAAK+u9C,UAAY7l8C,EACjBlpB,KAAKgv9C,YAAcz+0C,EACnBvwI,KAAKiv9C,aAAeL,CACxB,CAmHA,OA5GAD,EAAkBjv9C,UAAUoxE,QAAU,SAAUhhE,GAC5C,IAAK1P,UAAUC,OACX,MAAM,IAAIR,UAAU,4CAGxB,GAAuB,oBAAZgyF,SAA6BA,mBAAmBvyF,OAA3D,CAGA,KAAMwQ,aAAkBo98C,EAAYp98C,GAAQ+hF,SACxC,MAAM,IAAIhyF,UAAU,yCAExB,IAAIqv9C,EAAelv9C,KAAK8u9C,cAEpBI,EAAanj9C,IAAI+D,KAGrBo/8C,EAAajj9C,IAAI6D,EAAQ,IAAIo+8C,EAAkBp+8C,IAC/C9P,KAAKgv9C,YAAYzC,YAAYvs9C,MAE7BA,KAAKgv9C,YAAY7j6B,UAZjB,CAaJ,EAOAwj6B,EAAkBjv9C,UAAUu7wB,UAAY,SAAUnrwB,GAC9C,IAAK1P,UAAUC,OACX,MAAM,IAAIR,UAAU,4CAGxB,GAAuB,oBAAZgyF,SAA6BA,mBAAmBvyF,OAA3D,CAGA,KAAMwQ,aAAkBo98C,EAAYp98C,GAAQ+hF,SACxC,MAAM,IAAIhyF,UAAU,yCAExB,IAAIqv9C,EAAelv9C,KAAK8u9C,cAEnBI,EAAanj9C,IAAI+D,KAGtBo/8C,EAAajq8C,OAAOnV,GACfo/8C,EAAatq8C,MACd5kB,KAAKgv9C,YAAYvC,eAAezs9C,MAXpC,CAaJ,EAMA2u9C,EAAkBjv9C,UAAUqxE,WAAa,WACrC/wE,KAAKmv9C,cACLnv9C,KAAK8u9C,cAAc9p8C,QACnBhlB,KAAKgv9C,YAAYvC,eAAezs9C,KACpC,EAOA2u9C,EAAkBjv9C,UAAUmt9C,aAAe,WACvC,IAAIng6C,EAAQ1sD,KACZA,KAAKmv9C,cACLnv9C,KAAK8u9C,cAAc5p8C,SAAQ,SAAUkq8C,GAC7BA,EAAYtl3C,YACZp9C,EAAMmi6C,oBAAoBht9C,KAAKut9C,EAEvC,GACJ,EAOAT,EAAkBjv9C,UAAUqt9C,gBAAkB,WAE1C,GAAK/s9C,KAAK8s9C,YAAV,CAGA,IAAIx1uC,EAAMt3O,KAAKiv9C,aAEXxy8C,EAAUzc,KAAK6u9C,oBAAoBx/7C,KAAI,SAAU+/7C,GACjD,OAAO,IAAIb,EAAoBa,EAAYt/8C,OAAQs/8C,EAAYd,gBACnE,IACAtu9C,KAAK+u9C,UAAUnv9C,KAAK03O,EAAK76N,EAAS66N,GAClCt3O,KAAKmv9C,aAPL,CAQJ,EAMAR,EAAkBjv9C,UAAUyv9C,YAAc,WACtCnv9C,KAAK6u9C,oBAAoB5r8C,OAAO,EACpC,EAMA0r8C,EAAkBjv9C,UAAUot9C,UAAY,WACpC,OAAO9s9C,KAAK6u9C,oBAAoBxu9C,OAAS,CAC7C,EACOsu9C,CACX,CAnJsC,GAwJlClz6C,EAA+B,oBAAZtwC,QAA0B,IAAIA,QAAY,IAAIqg9C,EAKjExo3C,EAOA,SAASA,EAAe95E,GACpB,KAAMlpB,gBAAgBgjG,GAClB,MAAM,IAAInjG,UAAU,sCAExB,IAAKO,UAAUC,OACX,MAAM,IAAIR,UAAU,4CAExB,IAAI0wI,EAAas70C,EAAyB5g8C,cACtC6wB,EAAW,IAAI6y6C,EAAkBzl8C,EAAUqnH,EAAYvwI,MAC3Dy7C,EAAUxvC,IAAIjM,KAAM87C,EACxB,EAIJ,CACI,UACA,YACA,cACF52B,SAAQ,SAAUuL,GAChBuyE,EAAetjG,UAAU+wB,GAAU,WAC/B,IAAIkG,EACJ,OAAQA,EAAK8kB,EAAUt4C,IAAInD,OAAOywB,GAAQlwB,MAAMo2B,EAAIv2B,UACxD,CACJ,IAUA,aAN2C,IAA5Bsr9C,EAAS1o3C,eACT0o3C,EAAS1o3C,eAEbA,6BCn5BE,SAAStgG,EAAE1B,EAAEsC,GAAG,IAAIzC,EAAEG,EAAEX,OAAOW,EAAEa,KAAKyB,GAAGtC,EAAE,KAAK,EAAEH,GAAG,CAAC,IAAI8B,EAAE9B,EAAE,IAAI,EAAE1B,EAAE6B,EAAE2B,GAAG,KAAG,EAAER,EAAEhD,EAAEmE,IAA0B,MAAMtC,EAA7BA,EAAE2B,GAAGW,EAAEtC,EAAEH,GAAG1B,EAAE0B,EAAE8B,CAAc,CAAC,CAAC,SAASC,EAAE5B,GAAG,OAAO,IAAIA,EAAEX,OAAO,KAAKW,EAAE,EAAE,CAAC,SAAS0C,EAAE1C,GAAG,GAAG,IAAIA,EAAEX,OAAO,OAAO,KAAK,IAAIiD,EAAEtC,EAAE,GAAGH,EAAEG,EAAEY,MAAM,GAAGf,IAAIyC,EAAE,CAACtC,EAAE,GAAGH,EAAEG,EAAE,IAAI,IAAI2B,EAAE,EAAExD,EAAE6B,EAAEX,OAAOkD,EAAEpE,IAAI,EAAEwD,EAAEY,GAAG,CAAC,IAAIH,EAAE,GAAGT,EAAE,GAAG,EAAEwB,EAAEnD,EAAEoC,GAAG/D,EAAE+D,EAAE,EAAEa,EAAEjD,EAAE3B,GAAG,GAAG,EAAE8C,EAAEgC,EAAEtD,GAAGxB,EAAEF,GAAG,EAAEgD,EAAE8B,EAAEE,IAAInD,EAAE2B,GAAGsB,EAAEjD,EAAE3B,GAAGwB,EAAE8B,EAAEtD,IAAI2B,EAAE2B,GAAGwB,EAAEnD,EAAEoC,GAAGvC,EAAE8B,EAAES,OAAQ,MAAG/D,EAAEF,GAAG,EAAEgD,EAAE8B,EAAEpD,IAA0B,MAAMG,EAA7BA,EAAE2B,GAAGsB,EAAEjD,EAAE3B,GAAGwB,EAAE8B,EAAEtD,CAAa2B,CAAC,CAAC,CAAC,OAAOsC,CAAC,CAC3c,SAASnB,EAAEnB,EAAEsC,GAAG,IAAIzC,EAAEG,EAAEyqe,UAAUnoe,EAAEmoe,UAAU,OAAO,IAAI5qe,EAAEA,EAAEG,EAAEuqB,GAAGjoB,EAAEioB,EAAE,CAAC,GAAG,iBAAkBw5B,aAAa,mBAAoBA,YAAYt5B,IAAI,CAAC,IAAIjpB,EAAEuiD,YAAYtiD,EAAQ450C,aAAa,WAAW,OAAO750C,EAAEipB,KAAK,CAAC,KAAK,CAAC,IAAI3oB,EAAE0oB,KAAKtlB,EAAEpD,EAAE2oB,MAAMhpB,EAAQ450C,aAAa,WAAW,OAAOv50C,EAAE2oB,MAAMvlB,CAAC,CAAC,CAAC,IAAInG,EAAE,GAAGX,EAAE,GAAGiD,EAAE,EAAEY,EAAE,KAAKD,EAAE,EAAE2C,GAAE,EAAGd,GAAE,EAAGkB,GAAE,EAAGR,EAAE,mBAAoBsgB,WAAWA,WAAW,KAAKnhB,EAAE,mBAAoBgoB,aAAaA,aAAa,KAAK1nB,EAAE,oBAAqBoiB,aAAaA,aAAa,KACnT,SAASziB,EAAE3D,GAAG,IAAI,IAAIsC,EAAEV,EAAExD,GAAG,OAAOkE,GAAG,CAAC,GAAG,OAAOA,EAAE4lB,SAASxlB,EAAEtE,OAAQ,MAAGkE,EAAEq9D,WAAW3/D,GAAgD,MAA9C0C,EAAEtE,GAAGkE,EAAEmoe,UAAUnoe,EAAEu74C,eAAen84C,EAAE3C,EAAEuD,EAAa,CAACA,EAAEV,EAAExD,EAAE,CAAC,CAAC,SAASoG,EAAExE,GAAa,GAAV+E,GAAE,EAAGpB,EAAE3D,IAAO6D,EAAE,GAAG,OAAOjC,EAAE7C,GAAG8E,GAAE,EAAGhB,EAAE6B,OAAO,CAAC,IAAIpC,EAAEV,EAAExD,GAAG,OAAOkE,GAAG2B,EAAEO,EAAElC,EAAEq9D,UAAU3/D,EAAE,CAAC,CACra,SAAS0E,EAAE1E,EAAEsC,GAAGuB,GAAE,EAAGkB,IAAIA,GAAE,EAAGrB,EAAEL,GAAGA,GAAG,GAAGsB,GAAE,EAAG,IAAI9E,EAAEmC,EAAE,IAAS,IAAL2B,EAAErB,GAAOL,EAAEL,EAAE7C,GAAG,OAAOkD,MAAMA,EAAE474C,eAAev74C,IAAItC,IAAI6E,MAAM,CAAC,IAAIlD,EAAEM,EAAEimB,SAAS,GAAG,mBAAoBvmB,EAAE,CAACM,EAAEimB,SAAS,KAAKlmB,EAAEC,EAAEos9C,cAAc,IAAIlw9C,EAAEwD,EAAEM,EAAE474C,gBAAgBv74C,GAAGA,EAAEb,EAAQ450C,eAAe,mBAAoBl90C,EAAE8D,EAAEimB,SAAS/pB,EAAE8D,IAAIL,EAAE7C,IAAI2D,EAAE3D,GAAG4E,EAAErB,EAAE,MAAMI,EAAE3D,GAAGkD,EAAEL,EAAE7C,EAAE,CAAC,GAAG,OAAOkD,EAAE,IAAIM,GAAE,MAAO,CAAC,IAAIH,EAAER,EAAExD,GAAG,OAAOgE,GAAG6B,EAAEO,EAAEpC,EAAEu9D,UAAUr9D,GAAGC,GAAE,CAAE,CAAC,OAAOA,CAAC,CAAC,QAAQN,EAAE,KAAKD,EAAEnC,EAAE8E,GAAE,CAAE,CAAC,CAD1a,oBAAqB0zB,gBAAW,IAASA,UAAUi27C,iBAAY,IAASj27C,UAAUi27C,WAAWC,gBAAgBl27C,UAAUi27C,WAAWC,eAAels9C,KAAKg2B,UAAUi27C,YAC2Q,IACzP9r9C,EAD6P0B,GAAE,EAAGlB,EAAE,KAAKK,GAAG,EAAES,EAAE,EAAEkB,GAAG,EACvc,SAASH,IAAI,QAAOpD,EAAQ450C,eAAer20C,EAAElB,EAAO,CAAC,SAASR,IAAI,GAAG,OAAON,EAAE,CAAC,IAAIhD,EAAEyB,EAAQ450C,eAAer20C,EAAEhF,EAAE,IAAIsC,GAAE,EAAG,IAAIA,EAAEU,GAAE,EAAGhD,EAAE,CAAC,QAAQsC,EAAEE,KAAK0B,GAAE,EAAGlB,EAAE,KAAK,CAAC,MAAMkB,GAAE,CAAE,CAAO,GAAG,mBAAoBF,EAAExB,EAAE,WAAWwB,EAAEV,EAAE,OAAO,GAAG,oBAAqBktB,eAAe,CAAC,IAAIttB,EAAE,IAAIstB,eAAensB,EAAEnB,EAAE0tB,MAAM1tB,EAAEutB,MAAMC,UAAUptB,EAAEd,EAAE,WAAW6B,EAAEssB,YAAY,KAAK,CAAC,MAAMnuB,EAAE,WAAW+B,EAAEjB,EAAE,EAAE,EAAE,SAAST,EAAE7C,GAAGgD,EAAEhD,EAAEkE,IAAIA,GAAE,EAAG1B,IAAI,CAAC,SAASyB,EAAEjE,EAAEsC,GAAGe,EAAEkB,GAAE,WAAWvE,EAAEyB,EAAQ450C,eAAe,GAAE/40C,EAAE,CAC5db,EAAQk60C,sBAAsB,EAAEl60C,EAAQ850C,2BAA2B,EAAE950C,EAAQi60C,qBAAqB,EAAEj60C,EAAQg60C,wBAAwB,EAAEh60C,EAAQ+s9C,mBAAmB,KAAK/s9C,EAAQ+50C,8BAA8B,EAAE/50C,EAAQy50C,wBAAwB,SAASl70C,GAAGA,EAAEkoB,SAAS,IAAI,EAAEzmB,EAAQgt9C,2BAA2B,WAAW5q9C,GAAGc,IAAId,GAAE,EAAGhB,EAAE6B,GAAG,EAC1UjD,EAAQit9C,wBAAwB,SAAS1u9C,GAAG,EAAEA,GAAG,IAAIA,EAAEqmB,QAAQvlB,MAAM,mHAAmHgD,EAAE,EAAE9D,EAAE6B,KAAKyK,MAAM,IAAItM,GAAG,CAAC,EAAEyB,EAAQ650C,iCAAiC,WAAW,OAAOt50C,CAAC,EAAEP,EAAQkt9C,8BAA8B,WAAW,OAAO/s9C,EAAE7C,EAAE,EAAE0C,EAAQmt9C,cAAc,SAAS5u9C,GAAG,OAAOgC,GAAG,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,IAAIM,EAAE,EAAE,MAAM,QAAQA,EAAEN,EAAE,IAAInC,EAAEmC,EAAEA,EAAEM,EAAE,IAAI,OAAOtC,GAAG,CAAC,QAAQgC,EAAEnC,CAAC,CAAC,EAAE4B,EAAQot9C,wBAAwB,WAAW,EAC9fpt9C,EAAQ250C,sBAAsB,WAAW,EAAE350C,EAAQqt9C,yBAAyB,SAAS9u9C,EAAEsC,GAAG,OAAOtC,GAAG,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,QAAQA,EAAE,EAAE,IAAIH,EAAEmC,EAAEA,EAAEhC,EAAE,IAAI,OAAOsC,GAAG,CAAC,QAAQN,EAAEnC,CAAC,CAAC,EAChM4B,EAAQw50C,0BAA0B,SAASj70C,EAAEsC,EAAEzC,GAAG,IAAI8B,EAAEF,EAAQ450C,eAA8F,OAAtCx70C,EAAzC,iBAAkBA,GAAG,OAAOA,GAAe,iBAAZA,EAAEA,EAAEsgD,QAA6B,EAAEtgD,EAAE8B,EAAE9B,EAAO8B,EAAS3B,GAAG,KAAK,EAAE,IAAI7B,GAAG,EAAE,MAAM,KAAK,EAAEA,EAAE,IAAI,MAAM,KAAK,EAAEA,EAAE,WAAW,MAAM,KAAK,EAAEA,EAAE,IAAI,MAAM,QAAQA,EAAE,IAAmN,OAAzM6B,EAAE,CAACuqB,GAAGlpB,IAAI6mB,SAAS5lB,EAAE+r9C,cAAcru9C,EAAE2/D,UAAU9/D,EAAEg+4C,eAAvD1/4C,EAAE0B,EAAE1B,EAAoEsse,WAAW,GAAG5qe,EAAE8B,GAAG3B,EAAEyqe,UAAU5qe,EAAE6B,EAAEtD,EAAE4B,GAAG,OAAO4B,EAAE7C,IAAIiB,IAAI4B,EAAExD,KAAK2G,GAAGrB,EAAEL,GAAGA,GAAG,GAAG0B,GAAE,EAAGd,EAAEO,EAAE3E,EAAE8B,MAAM3B,EAAEyqe,UAAUtse,EAAEuD,EAAE3C,EAAEiB,GAAG6D,GAAGc,IAAId,GAAE,EAAGhB,EAAE6B,KAAY1E,CAAC,EACneyB,EAAQ050C,qBAAqBt20C,EAAEpD,EAAQst9C,sBAAsB,SAAS/u9C,GAAG,IAAIsC,EAAEN,EAAE,OAAO,WAAW,IAAInC,EAAEmC,EAAEA,EAAEM,EAAE,IAAI,OAAOtC,EAAET,MAAMP,KAAKI,UAAU,CAAC,QAAQ4C,EAAEnC,CAAC,CAAC,CAAC,gCCf7Ji8B,EAAOr6B,QAAU,EAAjB,kCCDFnD,OAAO4D,eAAeT,EAAS,aAAc,CAC3CtB,OAAO,IAETsB,EAAQut9C,aAAevt9C,EAAQwt9C,eAAiBxt9C,EAAQyt9C,qBAAkB,EAO1Ezt9C,EAAQut9C,aADW,iBAGnBvt9C,EAAQyt9C,gBADc,qBAGtBzt9C,EAAQwt9C,eADa,iCCbrB3w9C,OAAO4D,eAAeT,EAAS,aAAc,CAC3CtB,OAAO,IAETsB,EAAiB,aAAI,EAmBrBA,EAAiB,QAdF,SAAkByO,GAC/B,IAAIiwC,EAAQ/gD,UAAUC,OAAS,QAAsB0tC,IAAjB3tC,UAAU,GAAmBA,UAAU,GAAK,GAC5E6iH,EAAQ,KACZ,OAAO,WAEL,IADA,IAAIv2D,EAAQ1sD,KACH4tP,EAAOxtP,UAAUC,OAAQg3C,EAAO,IAAI53C,MAAMmuP,GAAOlF,EAAO,EAAGA,EAAOkF,EAAMlF,IAC/ErxM,EAAKqxM,GAAQtoP,UAAUsoP,GAEzBh8N,aAAau2F,GACbA,EAAQp9F,YAAW,WACjB3U,EAAG3Q,MAAMmsD,EAAOrV,EAClB,GAAG8J,EACL,CACF,8BCrBA7hD,OAAO4D,eAAeT,EAAS,aAAc,CAC3CtB,OAAO,IAETsB,EAAiB,aAAI,EAMrB,IAAI8oB,EAAK,EAST9oB,EAAiB,QAHF,WACb,MAAO,GAAGT,OAAOupB,IACnB,gCCdc9oB,EAAQ,GAAQA,EAAQ,QAAO,EAC7C,IAAI0t9C,EAAc,EAAQ,OA2B1B1t9C,EAAQ,GAhBG,SAAcspF,EAASrqB,GAChC,IAAI0u5C,GAAS,EAAID,EAAYE,WAAWtk4C,GAMxC,OAHAqk4C,EAAO/s9C,KAAKq+D,GAGL,WACL0u5C,EAAOpyoC,OAAOt8Q,EAChB,CACF,EAWAj/D,EAAQ,GAJI,SAAespF,GACzB,IAAIqk4C,GAAS,EAAID,EAAYE,WAAWtk4C,IACxC,EAAIok4C,EAAYG,cAAcF,EAChC,gCCnCA9w9C,OAAO4D,eAAeT,EAAS,aAAc,CAC3CtB,OAAO,IAETsB,EAAQ6t9C,aAAe7t9C,EAAQ4t9C,UAAY5t9C,EAAQ8t9C,aAAU,EAC7D,IAGgCrjwC,EAH5Bg40B,GAG4Bh40B,EAHC,EAAQ,SAGYA,EAAI5qN,WAAa4qN,EAAM,CAAE,QAAWA,GAFrFsjwC,EAAW,EAAQ,OACnBC,EAAY,EAAQ,OAWpBF,EAAU,CAAC,EAMf,SAASvniB,EAAM0niB,GAETA,GAAYH,EAAQG,WACfH,EAAQG,EAEnB,CANAju9C,EAAQ8t9C,QAAUA,EAoClB9t9C,EAAQ4t9C,UAvBQ,SAAmBtk4C,GACjC,IAAI2k4C,EAAW3k4C,EAAQF,aAAa4k4C,EAAUT,cAG9C,GAAIU,GAAYH,EAAQG,GACtB,OAAOH,EAAQG,GAIjB,IAAIC,GAAQ,EAAIzrb,EAAa,WAC7Bn58B,EAAQpvD,aAAa8z7C,EAAUT,aAAcW,GAC7C,IAAIP,GAAS,EAAII,EAASI,cAAc7k4C,GAAS,WAC/C,OAAOi91B,EAAM2niB,EACf,IAGA,OADAJ,EAAQI,GAASP,EACVA,CACT,EAaA3t9C,EAAQ6t9C,aANW,SAAsBF,GACvC,IAAIM,EAAWN,EAAOrk4C,QAAQF,aAAa4k4C,EAAUT,cAErDI,EAAOhy0C,UACP4qyB,EAAM0niB,EACR,gCChEApx9C,OAAO4D,eAAeT,EAAS,aAAc,CAC3CtB,OAAO,IAETsB,EAAQmu9C,kBAAe,EACvB,IAAIC,EAAU,EAAQ,OAClBnR,EAAkB,EAAQ,OAU1BkR,EAAyC,oBAAnB5t3C,eAAiC082C,EAAgBkR,aAAeC,EAAQD,aAClGnu9C,EAAQmu9C,aAAeA,gCChBvBtx9C,OAAO4D,eAAeT,EAAS,aAAc,CAC3CtB,OAAO,IAETsB,EAAQmu9C,kBAAe,EACvB,IAEgC1jwC,EAF5B4jwC,GAE4B5jwC,EAFO,EAAQ,SAEMA,EAAI5qN,WAAa4qN,EAAM,CAAE,QAAWA,GADrFujwC,EAAY,EAAQ,OAkHxBhu9C,EAAQmu9C,aA3GW,SAAsB7k4C,EAASgl4C,GAChD,IAAIX,OAASri7C,EAET9kB,EAAY,GAyCZ+n8C,GAAiB,EAAIF,EAAmB,UAAG,WAE7C7n8C,EAAU/D,SAAQ,SAAUoqB,GAC1BA,EAASy8C,EACX,GACF,IAmBIqyD,EAAU,WACRgy0C,GAAUA,EAAO1u7C,aACf0u7C,EAAOa,iBAETb,EAAOa,gBAAgBx7jC,YAAYpsY,oBAAoB,SAAU2n8C,GAGnEZ,EAAO1u7C,WAAW7E,YAAYuz7C,GAE9Brk4C,EAAQu2b,gBAAgBmu8B,EAAUT,cAClCI,OAASri7C,EACT9kB,EAAY,GACZ8n8C,GAAeA,IAEnB,EAkBA,MAAO,CACLhl4C,QAASA,EACT1oF,KA/CS,SAAcq+D,GAElB0u5C,IACHA,EAjDY,WAE6B,WAAvCz6jC,iBAAiB5pU,GAASptD,WAC5BotD,EAAQ13E,MAAMsqB,SAAW,YAE3B,IAAIuuL,EAAM/nN,SAASmE,cAAc,UAwBjC,OAvBA4jN,EAAIx8L,OAAS,WACXw8L,EAAI+jwC,gBAAgBx7jC,YAAY9oY,iBAAiB,SAAUqk8C,GAE3DA,GACF,EACA9jwC,EAAI74M,MAAMC,QAAU,QACpB44M,EAAI74M,MAAMsqB,SAAW,WACrBuuL,EAAI74M,MAAMyqB,IAAM,IAChBouL,EAAI74M,MAAMwqB,KAAO,IACjBquL,EAAI74M,MAAM2qB,OAAS,OACnBkuL,EAAI74M,MAAM0qB,MAAQ,OAClBmuL,EAAI74M,MAAMktW,SAAW,SACrBr0J,EAAI74M,MAAMolI,cAAgB,OAC1ByzE,EAAI74M,MAAMuqB,OAAS,KACnBsuL,EAAI74M,MAAMu3H,QAAU,IACpBshF,EAAIvwL,aAAa,QAAS8z7C,EAAUP,iBACpChjwC,EAAIvwL,aAAa,WAAY8z7C,EAAUR,gBACvC/iwC,EAAI3gN,KAAO,YAGXw/E,EAAQx3E,YAAY24M,GAEpBA,EAAI19M,KAAO,cACJ09M,CACT,CAmBagkwC,KAEoB,IAA3Bjo8C,EAAUzoB,QAAQkhE,IACpBz4C,EAAUpnB,KAAK6/D,EAEnB,EAwCE08E,QAASA,EACT4/L,OAhBW,SAAgBt8Q,GAC3B,IAAIo5S,EAAM7xV,EAAUzoB,QAAQkhE,IACf,IAATo5S,GACF7xV,EAAUhG,OAAO63V,EAAK,GAKC,IAArB7xV,EAAU5oB,QAAgB+v9C,GAC5Bhy0C,GAEJ,EAOF,gCCtHA9+I,OAAO4D,eAAeT,EAAS,aAAc,CAC3CtB,OAAO,IAETsB,EAAQmu9C,kBAAe,EACvB,IAEgC1jwC,EAF5BujwC,EAAY,EAAQ,OACpBK,GAC4B5jwC,EADO,EAAQ,SACMA,EAAI5qN,WAAa4qN,EAAM,CAAE,QAAWA,GAkFzFzqN,EAAQmu9C,aA5EW,SAAsB7k4C,EAASgl4C,GAChD,IAAIX,OAASri7C,EAET9kB,EAAY,GAKZ+n8C,GAAiB,EAAIF,EAAmB,UAAG,WAE7C7n8C,EAAU/D,SAAQ,SAAUoqB,GAC1BA,EAASy8C,EACX,GACF,IAgCIqyD,EAAU,WACZgy0C,EAAOr/4C,aACP9nD,EAAY,GACZmn8C,OAASri7C,EACTg+C,EAAQu2b,gBAAgBmu8B,EAAUT,cAClCe,GAAeA,GACjB,EAkBA,MAAO,CACLhl4C,QAASA,EACT1oF,KAtCS,SAAcq+D,GAdT,IACV5gE,EAcCsv9C,KAdDtv9C,EAAI,IAAIkiG,eAAegu3C,IAEzBlg5C,QAAQib,GAGVil4C,IAUEZ,EATKtv9C,IAWwB,IAA3BmoB,EAAUzoB,QAAQkhE,IACpBz4C,EAAUpnB,KAAK6/D,EAEnB,EAgCE08E,QAASA,EACT4/L,OAhBW,SAAgBt8Q,GAC3B,IAAIo5S,EAAM7xV,EAAUzoB,QAAQkhE,IACf,IAATo5S,GACF7xV,EAAUhG,OAAO63V,EAAK,GAKC,IAArB7xV,EAAU5oB,QAAgB+v9C,GAC5Bhy0C,GAEJ,EAOF,wBCvFAthH,EAAOr6B,QAAU,CAACsa,EAAQgrgB,KACzB,GAAwB,iBAAXhrgB,GAA4C,iBAAdgrgB,EAC1C,MAAM,IAAIlohB,UAAU,iDAGrB,GAAkB,KAAdkohB,EACH,MAAO,CAAChrgB,GAGT,MAAMg6tC,EAAiBh6tC,EAAOvc,QAAQunhB,GAEtC,OAAwB,IAApBgvtB,EACI,CAACh6tC,GAGF,CACNA,EAAOhb,MAAM,EAAGg1uC,GAChBh6tC,EAAOhb,MAAMg1uC,EAAiBhvtB,EAAU1nhB,QACxC,0BCnBFy8B,EAAOr6B,QAAUk0E,GAAOrnD,mBAAmBqnD,GAAKlqE,QAAQ,YAAYxI,GAAK,IAAIA,EAAE8U,WAAW,GAAGxU,SAAS,IAAIqsD,6BCD1G,MAAMug6C,EAAW,wBACXC,EAAW,+EAMZjs7C,OAAOxP,UAAYzzB,OAAOyzB,WAC3BwP,OAAOxP,SAAWzzB,OAAOyzB,WAExBwP,OAAOklI,YAAcnoK,OAAOmoK,aAC7BllI,OAAOklI,WAAanoK,OAAOmoK,YAI/B,MAAMgnzC,EAAW,CACbt7xC,KAAO,EACP29iC,cAAc,EACd49O,aAAc,IACd39O,WAAW,GAwGf72sC,EAAOr6B,QApGP,SAAkBk0E,EAAKxtD,EAAU,CAAC,GAS9B,GADAA,EAAU7pB,OAAOa,OAAO,CAAC,EAAGkx9C,EAAUlo8C,IAClCwtD,GAAsB,iBAARA,EAAmB,OAAOA,EAE5C,IAAI464C,EAAc564C,EAAItkD,OAKtB,QAAwB0b,IAArB5kB,EAAQqo8C,UAA0Bro8C,EAAQqo8C,SAASnm9C,KAAKkm9C,GAAa,OAAO564C,EAC1E,GAAIxtD,EAAQ4sK,KAAOo7xC,EAAS9l9C,KAAKkm9C,GAClC,OAAOps7C,OAAOxP,SAAS477C,EAAY,IAKlC,CAED,MAAM9q9C,EAAQ2q9C,EAASh/8C,KAAKm/8C,GAC5B,GAAG9q9C,EAAM,CACL,MAAM6zL,EAAO7zL,EAAM,GACbituC,EAAejtuC,EAAM,GAC3B,IAAIgr9C,GA6DG98N,EA7D2BluvC,EAAM,MA8DV,IAAzBkuvC,EAAOn0vC,QAAQ,MAEV,OADdm0vC,EAASA,EAAOlovC,QAAQ,MAAO,KACXkovC,EAAS,IACP,MAAdA,EAAO,GAAaA,EAAS,IAAIA,EACL,MAA5BA,EAAOA,EAAOt0vC,OAAO,KAAas0vC,EAASA,EAAOl5tC,OAAO,EAAEk5tC,EAAOt0vC,OAAO,IAC1Es0vC,GAEJA,EAlEC,MAAMhhB,EAAYltuC,EAAM,IAAMA,EAAM,GACpC,IAAI0iB,EAAQuqtC,cAAgBA,EAAarzuC,OAAS,GAAKi6L,GAA0B,MAAlBi3xC,EAAW,GAAY,OAAO564C,EACxF,IAAIxtD,EAAQuqtC,cAAgBA,EAAarzuC,OAAS,IAAMi6L,GAA0B,MAAlBi3xC,EAAW,GAAY,OAAO564C,EAC/F,CACA,MAAMzzB,EAAM/d,OAAOos7C,GACb58N,EAAS,GAAKzxsC,EACpB,OAA8B,IAA3ByxsC,EAAOppsC,OAAO,SAGRoorC,EAFFxqtC,EAAQwqtC,UAAkBzwrC,EACjByzB,GAIsB,IAA7B464C,EAAW/w9C,QAAQ,KAQV,MAAXm0vC,GAAyC,KAAtB88N,GACd98N,IAAW88N,GACVn3xC,GAAQq6jC,IAAW,IAAI88N,EAFyBvu6C,EAG7CyzB,EAGb+8pC,EAKI+9O,IAAsB98N,GACjBr6jC,EAAKm3xC,IAAsB98N,EADKzxsC,EAE5ByzB,EAGb464C,IAAe58N,GACV48N,IAAej3xC,EAAKq6jC,EADKzxsC,EAO1ByzB,CACX,CAGJ,CACI,OAAOA,CAEf,CAQJ,IAAmBg+qC,CAPnB,4EClGIpmrC,EAAS,IAAI,IALH,CAEdplD,OAAiB,OACjBA,WAAoB,IAMlB,IAAK,YAAkB2T,EAAO8iwC,IAAIv4pC,WAAY,CAC5C,IA+BIqq1C,EAAY,WAEhB507C,EAAO8iwC,IAAI140B,OACT,OACA,eAnCkB,SAAuBlmd,EAAGsC,EAAGqu9C,GACnD,IAAK3w9C,GAAKsC,GAAKtC,IAAMsC,EACnB,OAAO,EAGT,IAAIR,EAEJ,IAAKA,KAAK9B,EACR,GAKIA,EAAE8B,KAAOQ,EAAER,GACb,OAAO,EAIX,IAAKA,KAAKQ,EACR,IAKKtC,EAAE8B,GACL,OAAO,EAIX,OAAO,CACT,CAMa8u9C,CAAcF,GADrB,YACgC,SAMxBA,EAAY,WAEZnj5C,EAAO,MAPLzxC,EAAO8iwC,IAAIv4pC,YAQpB,GAEL,CAEAvqG,EAAO8iwC,IAAIv6V,SAAQ,WACjB923B,GACF,IAGa,yCCjEf,IACMgtU,EAeFkukB,EAAY,WACd,IAAIlukB,EAAO,CAAC,EACZ,OAAO,SAAkBzrY,GACvB,QAA4B,IAAjByrY,EAAKzrY,GAAyB,CACvC,IAAI+h9C,EAAc1s9C,SAASo8B,cAAczxB,GAEzC,GAAI5N,OAAOmvc,mBAAqBwghC,aAAuB3v9C,OAAOmvc,kBAC5D,IAGEwghC,EAAcA,EAAYZ,gBAAgBlq6C,IAC5C,CAAE,MAAO5nD,GAEP0y9C,EAAc,IAChB,CAGFt2kC,EAAKzrY,GAAU+h9C,CACjB,CAEA,OAAOt2kC,EAAKzrY,EACd,CACF,CAtBgB,GAwBZgi9C,EAAc,GAElB,SAASC,EAAqBp64C,GAG5B,IAFA,IAAIn0D,GAAU,EAEL5iB,EAAI,EAAGA,EAAIkx9C,EAAYzx9C,OAAQO,IACtC,GAAIkx9C,EAAYlx9C,GAAG+2E,aAAeA,EAAY,CAC5Cn0D,EAAS5iB,EACT,KACF,CAGF,OAAO4iB,CACT,CAEA,SAASwu8C,EAAa774C,EAAMhtD,GAI1B,IAHA,IAAI8o8C,EAAa,CAAC,EACdC,EAAc,GAETtx9C,EAAI,EAAGA,EAAIu1E,EAAK91E,OAAQO,IAAK,CACpC,IAAIwgD,EAAO+0B,EAAKv1E,GACZ2qB,EAAKpC,EAAQk9B,KAAOjF,EAAK,GAAKj4B,EAAQk9B,KAAOjF,EAAK,GAClDmI,EAAQ0o6C,EAAW1m8C,IAAO,EAC1BosD,EAAa,GAAG31E,OAAOupB,EAAI,KAAKvpB,OAAOunD,GAC3C0o6C,EAAW1m8C,GAAMg+B,EAAQ,EACzB,IAAIvsC,EAAQ+08C,EAAqBp64C,GAC7Bu1I,EAAM,CACRsyC,IAAKp+M,EAAK,GACVsk9B,MAAOtk9B,EAAK,GACZig4B,UAAWjg4B,EAAK,KAGH,IAAXpkC,GACF808C,EAAY908C,GAAOm18C,aACnBL,EAAY908C,GAAOqi+B,QAAQnyxB,IAE3B4kwC,EAAYjw9C,KAAK,CACf81E,WAAYA,EACZ0n6B,QAAS+ye,EAASllwC,EAAK/jM,GACvBgp8C,WAAY,IAIhBD,EAAYrw9C,KAAK81E,EACnB,CAEA,OAAOu64C,CACT,CAEA,SAASG,EAAmBlp8C,GAC1B,IAAI9U,EAAQlP,SAASmE,cAAc,SAC/B8oG,EAAajpF,EAAQipF,YAAc,CAAC,EAExC,QAAgC,IAArBA,EAAW98E,MAAuB,CAC3C,IAAIA,EAAmD,KAEnDA,IACF88E,EAAW98E,MAAQA,EAEvB,CAMA,GAJAh2B,OAAOgU,KAAK8+F,GAAYltF,SAAQ,SAAUL,GACxCxQ,EAAMsoB,aAAa9X,EAAKutF,EAAWvtF,GACrC,IAE8B,mBAAnBsE,EAAQ4xO,OACjB5xO,EAAQ4xO,OAAO1mP,OACV,CACL,IAAIvE,EAAS258B,EAAUtg8B,EAAQ4xO,QAAU,QAEzC,IAAKjrP,EACH,MAAM,IAAI0X,MAAM,2GAGlB1X,EAAOyE,YAAYF,EACrB,CAEA,OAAOA,CACT,CAaA,IACMi+8C,EADFC,GACED,EAAY,GACT,SAAiBt18C,EAAO0+O,GAE7B,OADA42tC,EAAUt18C,GAAS0+O,EACZ42tC,EAAUzl8C,OAAO5Z,SAASpG,KAAK,KACxC,GAGF,SAAS2l9C,EAAoBn+8C,EAAO2I,EAAO6V,EAAQq6L,GACjD,IAAIsyC,EAAM3sO,EAAS,GAAKq6L,EAAIw4yB,MAAQ,UAAU1jgC,OAAOkrN,EAAIw4yB,MAAO,MAAM1jgC,OAAOkrN,EAAIsyC,IAAK,KAAOtyC,EAAIsyC,IAIjG,GAAInrP,EAAM0qY,WACR1qY,EAAM0qY,WAAWC,QAAUuzkC,EAAYv18C,EAAOwiP,OACzC,CACL,IAAIiztC,EAAUtt9C,SAAS81P,eAAeuE,GAClCx1K,EAAa31E,EAAM21E,WAEnBA,EAAWhtE,IACb3I,EAAMwoB,YAAYmtD,EAAWhtE,IAG3BgtE,EAAW3pF,OACbgU,EAAMstB,aAAa8w7C,EAASzo4C,EAAWhtE,IAEvC3I,EAAME,YAAYk+8C,EAEtB,CACF,CAEA,SAASC,EAAWr+8C,EAAO8U,EAAS+jM,GAClC,IAAIsyC,EAAMtyC,EAAIsyC,IACVkmwB,EAAQx4yB,EAAIw4yB,MACZrkF,EAAYn0tB,EAAIm0tB,UAepB,GAbIqkF,EACFrx/B,EAAMsoB,aAAa,QAAS+o+B,GAE5Brx/B,EAAMiugB,gBAAgB,SAGpB++Z,GAA6B,oBAATly5B,OACtBqwO,GAAO,uDAAuDx9P,OAAOmtB,KAAKkuQ,SAAS/tQ,mBAAmBhV,KAAKb,UAAU4n6B,MAAe,QAMlIht6B,EAAM0qY,WACR1qY,EAAM0qY,WAAWC,QAAUx/I,MACtB,CACL,KAAOnrP,EAAM81E,YACX91E,EAAMwoB,YAAYxoB,EAAM81E,YAG1B91E,EAAME,YAAYpP,SAAS81P,eAAeuE,GAC5C,CACF,CAEA,IAAImztC,EAAY,KACZC,EAAmB,EAEvB,SAASR,EAASllwC,EAAK/jM,GACrB,IAAI9U,EACAk6D,EACA17C,EAEJ,GAAI1J,EAAQwp8C,UAAW,CACrB,IAAIE,EAAaD,IACjBv+8C,EAAQs+8C,IAAcA,EAAYN,EAAmBlp8C,IACrDolD,EAASik5C,EAAoBnv9C,KAAK,KAAMgR,EAAOw+8C,GAAY,GAC3Dhg8C,EAAS2/7C,EAAoBnv9C,KAAK,KAAMgR,EAAOw+8C,GAAY,EAC7D,MACEx+8C,EAAQg+8C,EAAmBlp8C,GAC3BolD,EAASmk5C,EAAWrv9C,KAAK,KAAMgR,EAAO8U,GAEtC0J,EAAS,YAxFb,SAA4Bxe,GAE1B,GAAyB,OAArBA,EAAMqtB,WACR,OAAO,EAGTrtB,EAAMqtB,WAAW7E,YAAYxoB,EAC/B,CAkFMy+8C,CAAmBz+8C,EACrB,EAIF,OADAk6D,EAAO2+I,GACA,SAAqBu6J,GAC1B,GAAIA,EAAQ,CACV,GAAIA,EAAOjoH,MAAQtyC,EAAIsyC,KAAOioH,EAAOi+oB,QAAUx4yB,EAAIw4yB,OAASj+oB,EAAO45jB,YAAcn0tB,EAAIm0tB,UACnF,OAGF9y2B,EAAO2+I,EAAMu6J,EACf,MACE50V,GAEJ,CACF,CAEAiK,EAAOr6B,QAAU,SAAU0zE,EAAMhtD,IAC/BA,EAAUA,GAAW,CAAC,GAGTwp8C,WAA0C,kBAAtBxp8C,EAAQwp8C,YACvCxp8C,EAAQwp8C,gBArOY,IAATp3kC,IAMTA,EAAOtoY,QAAQ/Q,QAAUiD,UAAYA,SAASC,MAAQlD,OAAO2tB,OAGxD0rX,IAgOT,IAAIw3kC,EAAkBf,EADtB774C,EAAOA,GAAQ,GAC0BhtD,GACzC,OAAO,SAAgBgk7B,GAGrB,GAFAA,EAAUA,GAAW,GAE2B,mBAA5C7t8B,OAAOI,UAAU6E,SAAS3E,KAAKut8B,GAAnC,CAIA,IAAK,IAAIvs8B,EAAI,EAAGA,EAAImy9C,EAAgB1y9C,OAAQO,IAAK,CAC/C,IACIoc,EAAQ+08C,EADKgB,EAAgBny9C,IAEjCkx9C,EAAY908C,GAAOm18C,YACrB,CAIA,IAFA,IAAIa,EAAqBhB,EAAa7khB,EAAShk7B,GAEtC1K,EAAK,EAAGA,EAAKs08C,EAAgB1y9C,OAAQoe,IAAM,CAClD,IAEI+5W,EAASu5lC,EAFKgB,EAAgBt08C,IAIK,IAAnCqz8C,EAAYt5lC,GAAQ25lC,aACtBL,EAAYt5lC,GAAQ6mnB,UAEpByye,EAAY7u8C,OAAOu1W,EAAQ,GAE/B,CAEAu6lC,EAAkBC,CAtBlB,CAuBF,CACF,aC3QA,IAAIC,EAAMpw9C,KAAKsmC,GAAK,IAChB+p7C,EAAM,IAAMrw9C,KAAKsmC,GAErB,SAASgq7C,EAAYzxyC,GACjB,IAAIviL,EAAIi09C,EAAS1xyC,EAAK,GAAG,EAAEA,EAAK,IAIhC,MAAO,CAHC0xyC,EAAS1xyC,EAAK,GAAGA,EAAK,IACtB2xyC,EAAS3xyC,EAAK,GAAG,EAAEA,EAAK,IAEpBviL,EADJk09C,EAAS3xyC,EAAK,GAAGA,EAAK,IAElC,CAoBA,SAAS0xyC,EAASnv9C,EAAG0B,GACjB,OAAQ1B,EAAEpB,KAAK6yF,IAAI,EAAE/vF,GAAG,IAAI,GAChC,CAEA,SAAS0t9C,EAASrw9C,EAAG2C,GACjB,IAAItG,EAAEwD,KAAKsmC,GAAG,EAAEtmC,KAAKsmC,GAAGnmC,EAAEH,KAAK6yF,IAAI,EAAE/vF,GACrC,OAAQut9C,EAAIrw9C,KAAKskK,KAAK,IAAKtkK,KAAKkxB,IAAI10B,GAAGwD,KAAKkxB,KAAK10B,IACrD,CAEA,SAAS42V,EAAY4kjC,EAAK372C,EAAKv5B,GAC3B,IAAI+7K,EAAO01K,EAAoByjjC,EAAK372C,EAAKv5B,GAGzC,OAFA+7K,EAAK,GAAK7+K,KAAKyK,MAAMo0K,EAAK,IAC1BA,EAAK,GAAK7+K,KAAKyK,MAAMo0K,EAAK,IACnBA,CACX,CAEA,SAAS44O,EAAa54O,GAClB,MAAO,CACH,CAAS,EAARA,EAAK,GAAc,EAARA,EAAK,GAAMA,EAAK,GAAG,GAC/B,CAAS,EAARA,EAAK,GAAK,EAAW,EAARA,EAAK,GAAMA,EAAK,GAAI,GAClC,CAAS,EAARA,EAAK,GAAK,EAAW,EAARA,EAAK,GAAK,EAAGA,EAAK,GAAG,GACnC,CAAS,EAARA,EAAK,GAAc,EAARA,EAAK,GAAK,EAAGA,EAAK,GAAG,GAEzC,CAEA,SAAS4qT,EAAW5qT,GAEhB,OAAGA,EAAK,GAAG,GAAI,GAAKA,EAAK,GAAG,GAAI,EACrB,CAACA,EAAK,GAAG,EAAGA,EAAK,GAAG,EAAGA,EAAK,GAAG,GAGjCA,EAAK,GAAG,GAAI,IAAQA,EAAK,GAAG,GAAI,EAC9B,CAACA,EAAK,GAAG,GAAIA,EAAK,GAAG,GAAG,EAAGA,EAAK,GAAG,IAGpCA,EAAK,GAAG,GAAI,GAAOA,EAAK,GAAG,GAAI,EAC9B,EAAEA,EAAK,GAAG,GAAG,EAAIA,EAAK,GAAI,EAAGA,EAAK,GAAG,GAIrC,EAAEA,EAAK,GAAG,GAAG,GAAIA,EAAK,GAAG,GAAG,EAAGA,EAAK,GAAG,EAEtD,CAEA,SAASwnX,EAAaxnX,GAClB,OAAO44O,EAAYgyE,EAAU5qT,GACjC,CAUA,SAAS6tuC,EAAQ7k3C,EAAOg3I,GACpB,IAAK,IAAI9gL,EAAI,EAAGA,EAAI8pC,EAAMrqC,OAAQO,IAC9B,GAAI0y9C,EAAW5o7C,EAAM9pC,GAAI8gL,GAAO,OAAO,EAE3C,OAAO,CACX,CAEA,SAAS4xyC,EAAWC,EAAOC,GACvB,OACID,EAAM,KAAOC,EAAM,IACnBD,EAAM,KAAOC,EAAM,IACnBD,EAAM,KAAOC,EAAM,EAE3B,CAmEA,SAASp8nC,EAAoByjjC,EAAK372C,EAAKv5B,GACnC,IAAI8tH,EAAM5wH,KAAK4wH,IAAIv0F,EAAM+z7C,GACrBl2xC,EAAKl6L,KAAK6yF,IAAI,EAAG/vF,GAGrB,MAAO,CAFCo3L,GAAM89sC,EAAM,IAAM,IAClB99sC,GAAM,GAAM,IAAOl6L,KAAKwnB,KAAK,EAAIopG,IAAQ,EAAIA,IAAQ5wH,KAAKsmC,IACpDxjC,EAClB,CAEAm3B,EAAOr6B,QAAU,CACbkzV,cAnKJ,SAAwBj0K,GACpB,IAAIr2I,EAAO8n7C,EAAWzxyC,GActB,MAbW,CACPn1K,KAAM,UACNu4B,YACI,CACI,CACI,CAACuG,EAAK,GAAGA,EAAK,IACd,CAACA,EAAK,GAAIA,EAAK,IACf,CAACA,EAAK,GAAIA,EAAK,IACf,CAACA,EAAK,GAAIA,EAAK,IACf,CAACA,EAAK,GAAIA,EAAK,MAKnC,EAoJI8n7C,WAAYA,EACZ74jC,YAAaA,EACbgyE,UAAWA,EACX48D,YAAaA,EACbqm3B,QAASA,EACTkkE,YAvGJ,SAAqB/xyC,EAAMh3I,GAEvB,IADA,IAAI2ue,EAAW6vB,EAAYxnX,GAClB9gL,EAAI,EAAGA,EAAIy4gB,EAASh5gB,OAAQO,IACjC,IAAK2u5C,EAAQ7k3C,EAAO2ue,EAASz4gB,IAAK,OAAO,EAE7C,OAAO,CACX,EAkGI0y9C,WAAYA,EACZz7nC,cAlFJ,SAAuBn2K,GAErB,IADA,IAAI1kK,EAAQ,GACHrX,EAAI+7K,EAAK,GAAI/7K,EAAI,EAAGA,IAAK,CAC9B,IAAIrC,EAAI,EACJm8K,EAAO,GAAM95K,EAAI,EACI,IAApB+7K,EAAK,GAAKjC,IAAan8K,IACH,IAApBo+K,EAAK,GAAKjC,KAAan8K,GAAK,GACjC0Z,GAAS1Z,EAAEiB,UACf,CACA,OAAOyY,CACT,EAyEI028C,cAvEJ,SAAuBl0yC,GAKnB,IAJA,IAAIv7K,EAAI,EACJjB,EAAI,EACJ2C,EAAI65K,EAAQn/K,OAEPO,EAAI+E,EAAG/E,EAAI,EAAGA,IAAK,CACxB,IAAI6+K,EAAO,GAAM7+K,EAAI,EACrB,OAAQ4+K,EAAQ75K,EAAI/E,IAChB,IAAK,IACD,MAEJ,IAAK,IACDqD,GAAKw7K,EACL,MAEJ,IAAK,IACDz8K,GAAKy8K,EACL,MAEJ,IAAK,IACDx7K,GAAKw7K,EACLz8K,GAAKy8K,EAGjB,CACA,MAAO,CAACx7K,EAAEjB,EAAE2C,EAChB,EA8CIswV,YAAaA,EACb09nC,WA7CJ,SAAoBC,GAChB,IAAI/l9C,EAAMooV,EAAY29nC,EAAW,GAAIA,EAAW,GAAI,IAChDjm9C,EAAMsoV,EAAY29nC,EAAW,GAAIA,EAAW,GAAI,IAChDvo7C,EAAO,CAACx9B,EAAI,GAAIA,EAAI,GAAIF,EAAI,GAAIA,EAAI,IAEpChI,EAOR,SAAqB0lC,GAEjB,IADA,IACS1lC,EAAI,EAAGA,EADD,GACeA,IAAK,CAC/B,IAAI85K,EAAO,GAAM,IAAM95K,EAAI,GAC3B,IAAM0lC,EAAK,GAAKo0I,KAAUp0I,EAAK,GAAKo0I,KAC9Bp0I,EAAK,GAAKo0I,KAAUp0I,EAAK,GAAKo0I,GAChC,OAAO95K,CAEf,CAEA,OATe,EAUnB,CAlBYku9C,CAAYxo7C,GACpB,OAAU,IAAN1lC,EAAgB,CAAC,EAAE,EAAE,GAGlB,CAFC0lC,EAAK,KAAQ,GAAK1lC,EAClB0lC,EAAK,KAAQ,GAAK1lC,EACdA,EAChB,EAoCIyxV,oBAAqBA,yBC3LqI,SAASh4V,GAAG,aAAa,SAASD,IAAI,CAAC,SAASE,EAAED,GAAGY,KAAK+xB,QAAQ3yB,GAAG,EAAE,CAAC,SAASwB,EAAExB,GAAGY,KAAK+xB,QAAQ3yB,GAAG,EAAE,CAAC,SAASW,EAAEX,GAAGY,KAAK+xB,QAAQ3yB,GAAG,EAAE,CAAC,SAASkB,IAAI,CAAC,SAASQ,EAAE1B,GAAG,OAAO,OAAOA,EAAE8Q,GAAG9Q,EAAEmuH,KAAK,CAAC,SAASvsH,EAAE5B,GAAG,OAAO,OAAOA,EAAE,KAAKA,EAAEiyF,MAAM,CAAC,SAAShvF,EAAEjD,EAAED,GAAG,OAAOC,IAAIA,EAAEmuH,MAAMpuH,EAAE,CAAC,SAASqD,EAAEpD,GAAG,OAAO,OAAOA,EAAE,KAAKA,EAAEy/B,IAAI,CAAC,SAASh+B,EAAEzB,GAAG,OAAO,OAAOA,EAAE,KAAKA,EAAEygG,KAAK,CAAC,SAAS/8F,IAAI9C,KAAK8z9C,MAAM,KAAK9z9C,KAAK+z9C,MAAM,CAAC,CAAC,SAASnx9C,IAAI,CAAC,SAASF,IAAI1C,KAAKg09C,OAAO,GAAG5z9C,UAAU,aAAa0N,IAAI9N,KAAKi09C,OAAO7z9C,UAAU,GAAG,CAAC,SAAS+B,IAAI,CAAC,SAASQ,EAAEvD,GAAGY,KAAK+xB,QAAQ3yB,GAAG,EAAE,CAAC,SAAS4D,IAAIhD,KAAKg09C,OAAO,EAAE,CAAC,SAASv09C,MAAMC,WAAWJ,OAAO4D,eAAezD,MAAMC,UAAU,OAAO,CAACoE,cAAa,EAAG3C,MAAM,SAAS/B,GAAG,GAAG,MAASY,KAAkB,MAAM,IAAIH,UAAUG,KAAK,qBAAqB,IAAIb,EAAEG,OAAOU,MAAMX,EAAEwD,KAAK8K,IAAI9K,KAAKgL,IAAI1O,EAAEkB,OAAO,kBAAkB,IAAI,EAAEO,EAAE,KAAKR,WAAUu1B,SAASwP,OAAO/kC,UAAU,IAAI,KAAO,EAAEQ,EAAEA,EAAE,EAAEiC,KAAK8K,IAAItO,EAAEuB,EAAE,GAAGiC,KAAKgL,IAAIjN,EAAEvB,GAAG,IAAIU,EAAE,KAAKK,gBAAW,IAASA,UAAU,GAAGu1B,SAASwP,OAAO/kC,UAAU,IAAI,KAAK,EAAEf,EAAE,IAAIU,EAAEA,EAAE,EAAE8C,KAAK8K,IAAItO,EAAEe,UAAU,GAAG,GAAGyC,KAAKgL,IAAI9N,EAAEV,GAAGuB,EAAEb,GAAGZ,EAAEyB,GAAGxB,IAAIwB,EAAE,OAAOzB,CAAC,EAAE4E,UAAS,IAAKohC,OAAOuC,SAASvC,OAAOuC,UAAU,SAAStoC,GAAG,MAAM,iBAAiBA,GAAGsoC,SAAStoC,EAAE,EAAE+lC,OAAOglH,UAAUhlH,OAAOglH,WAAW,SAAS/qJ,GAAG,MAAM,iBAAiBA,GAAGsoC,SAAStoC,IAAIyD,KAAKyK,MAAMlO,KAAKA,CAAC,EAAE+lC,OAAOklI,WAAWllI,OAAOklI,YAAYA,WAAWllI,OAAOmH,MAAMnH,OAAOmH,OAAO,SAASltC,GAAG,OAAOA,GAAGA,CAAC,EAAEyD,KAAK2K,MAAM3K,KAAK2K,OAAO,SAASpO,GAAG,OAAOA,EAAE,EAAEyD,KAAKuK,KAAKhO,GAAGyD,KAAKyK,MAAMlO,EAAE,EAAE,IAAIwE,EAAE,WAAW,EAAEA,EAAElE,UAAUw09C,YAAY,WAAW,MAAM,EAAE,EAAEtw9C,EAAElE,UAAUon+B,SAAS,WAAW,OAAOlj+B,CAAC,EAAEA,EAAElE,UAAUy09C,oBAAoB,SAAS/09C,EAAED,EAAEE,GAAG,OAAOwD,KAAKmjH,IAAI5mH,EAAED,IAAIE,CAAC,EAAE,IAAI+D,EAAE,SAAShE,GAAG,SAASD,EAAEA,GAAGC,EAAEQ,KAAKI,KAAKb,GAAGa,KAAK0K,KAAK,2BAA2B1K,KAAK+xB,QAAQ5yB,EAAEa,KAAK2yC,OAAM,IAAKvzC,GAAGuzC,KAAK,CAAC,OAAOvzC,IAAID,EAAEK,UAAUJ,GAAGD,EAAEO,UAAUJ,OAAOY,OAAOd,GAAGA,EAAEM,WAAWP,EAAEO,UAAUO,YAAYd,EAAEA,CAAC,CAArN,CAAuNqoB,OAAOvkB,EAAE,WAAW,EAAEY,EAAE,CAACqnL,UAAU,CAACpnL,cAAa,IAAKb,EAAEqpC,MAAM,SAASltC,GAAG,OAAO+lC,OAAOmH,MAAMltC,EAAE,EAAE6D,EAAEmx9C,iBAAiB,SAASh19C,GAAG,OAAOA,CAAC,EAAE6D,EAAEox9C,iBAAiB,SAASj19C,GAAG,OAAOA,CAAC,EAAE6D,EAAE26vB,WAAW,SAASx+vB,GAAG,OAAO+lC,OAAOuC,SAAStoC,EAAE,EAAEyE,EAAEqnL,UAAU/nL,IAAI,WAAW,OAAOgiC,OAAO+lJ,SAAS,EAAE5rL,OAAOkU,iBAAiBvQ,EAAEY,GAAG,IAAIa,EAAE,WAAW,EAAET,EAAE,WAAW,EAAEiB,EAAE,WAAW,EAAEf,EAAE,SAAS/E,IAAI,GAAGY,KAAKiE,EAAE,KAAKjE,KAAKgD,EAAE,KAAKhD,KAAK2F,EAAE,KAAK,IAAIvF,UAAUC,OAAOL,KAAKiE,EAAE,EAAEjE,KAAKgD,EAAE,EAAEhD,KAAK2F,EAAEvG,EAAEk19C,mBAAmB,GAAG,IAAIl09C,UAAUC,OAAO,CAAC,IAAIlB,EAAEiB,UAAU,GAAGJ,KAAKiE,EAAE9E,EAAE8E,EAAEjE,KAAKgD,EAAE7D,EAAE6D,EAAEhD,KAAK2F,EAAExG,EAAEwG,CAAC,MAAM,IAAIvF,UAAUC,QAAQL,KAAKiE,EAAE7D,UAAU,GAAGJ,KAAKgD,EAAE5C,UAAU,GAAGJ,KAAK2F,EAAEvG,EAAEk19C,eAAe,IAAIl09C,UAAUC,SAASL,KAAKiE,EAAE7D,UAAU,GAAGJ,KAAKgD,EAAE5C,UAAU,GAAGJ,KAAK2F,EAAEvF,UAAU,GAAG,EAAEoD,EAAE,CAAC+w9C,sBAAsB,CAACzw9C,cAAa,GAAI0w9C,iBAAiB,CAAC1w9C,cAAa,GAAIww9C,cAAc,CAACxw9C,cAAa,GAAIiB,EAAE,CAACjB,cAAa,GAAI2B,EAAE,CAAC3B,cAAa,GAAIW,EAAE,CAACX,cAAa,IAAKK,EAAEzE,UAAU+09C,YAAY,SAASr19C,EAAED,GAAG,OAAOC,GAAG,KAAK+E,EAAEY,EAAE/E,KAAKiE,EAAE9E,EAAE,MAAM,KAAKgF,EAAEsB,EAAEzF,KAAKgD,EAAE7D,EAAE,MAAM,KAAKgF,EAAEM,EAAEzE,KAAK2F,EAAExG,EAAE,MAAM,QAAQ,MAAM,IAAIiE,EAAE,2BAA2BhE,GAAG,EAAE+E,EAAEzE,UAAUg19C,SAAS,WAAW,GAAG,IAAIt09C,UAAUC,OAAO,CAAC,IAAIjB,EAAEgB,UAAU,GAAG,OAAOJ,KAAKiE,IAAI7E,EAAE6E,GAAGjE,KAAKgD,IAAI5D,EAAE4D,CAAC,CAAC,GAAG,IAAI5C,UAAUC,OAAO,CAAC,IAAIlB,EAAEiB,UAAU,GAAGf,EAAEe,UAAU,GAAG,QAAQwD,EAAEuw9C,oBAAoBn09C,KAAKiE,EAAE9E,EAAE8E,EAAE5E,MAAMuE,EAAEuw9C,oBAAoBn09C,KAAKgD,EAAE7D,EAAE6D,EAAE3D,EAAE,CAAC,EAAE8E,EAAEzE,UAAUi19C,YAAY,SAASv19C,GAAG,OAAOA,GAAG,KAAK+E,EAAEY,EAAE,OAAO/E,KAAKiE,EAAE,KAAKE,EAAEsB,EAAE,OAAOzF,KAAKgD,EAAE,KAAKmB,EAAEM,EAAE,OAAOzE,KAAK2F,EAAE,MAAM,IAAIvC,EAAE,2BAA2BhE,EAAE,EAAE+E,EAAEzE,UAAUk19C,SAAS,SAASx19C,GAAG,OAAOY,KAAKiE,IAAI7E,EAAE6E,GAAGjE,KAAKgD,IAAI5D,EAAE4D,IAAIhD,KAAK2F,IAAIvG,EAAEuG,GAAG1C,EAAEqpC,MAAMtsC,KAAK2F,KAAK1C,EAAEqpC,MAAMltC,EAAEuG,EAAE,EAAExB,EAAEzE,UAAU6yI,OAAO,SAASnzI,GAAG,OAAOA,aAAa+E,GAAGnE,KAAK009C,SAASt19C,EAAE,EAAE+E,EAAEzE,UAAUm19C,SAAS,SAASz19C,EAAED,GAAG,OAAOyE,EAAEuw9C,oBAAoBn09C,KAAK2F,EAAEvG,EAAEuG,EAAExG,EAAE,EAAEgF,EAAEzE,UAAUmzQ,UAAU,SAASzzQ,GAAG,IAAID,EAAEC,EAAE,OAAOY,KAAKiE,EAAE9E,EAAE8E,GAAG,EAAEjE,KAAKiE,EAAE9E,EAAE8E,EAAE,EAAEjE,KAAKgD,EAAE7D,EAAE6D,GAAG,EAAEhD,KAAKgD,EAAE7D,EAAE6D,EAAE,EAAE,CAAC,EAAEmB,EAAEzE,UAAU6wB,MAAM,WAAW,EAAEpsB,EAAEzE,UAAUogI,KAAK,WAAW,OAAO,IAAI37H,EAAEnE,KAAK,EAAEmE,EAAEzE,UAAU6E,SAAS,WAAW,MAAM,IAAIvE,KAAKiE,EAAE,KAAKjE,KAAKgD,EAAE,KAAKhD,KAAK2F,EAAE,GAAG,EAAExB,EAAEzE,UAAUo19C,WAAW,SAAS119C,GAAG,IAAID,EAAEa,KAAKiE,EAAE7E,EAAE6E,EAAE5E,EAAEW,KAAKgD,EAAE5D,EAAE4D,EAAEpC,EAAEZ,KAAK2F,EAAEvG,EAAEuG,EAAE,OAAO9C,KAAK4yF,KAAKt2F,EAAEA,EAAEE,EAAEA,EAAEuB,EAAEA,EAAE,EAAEuD,EAAEzE,UAAUupJ,SAAS,SAAS7pJ,GAAG,IAAID,EAAEa,KAAKiE,EAAE7E,EAAE6E,EAAE5E,EAAEW,KAAKgD,EAAE5D,EAAE4D,EAAE,OAAOH,KAAK4yF,KAAKt2F,EAAEA,EAAEE,EAAEA,EAAE,EAAE8E,EAAEzE,UAAUq19C,SAAS,WAAW,IAAI319C,EAAE,GAAG,OAAmC,IAA5BA,EAAE,GAAGA,EAAE+E,EAAE4w9C,SAAS/09C,KAAKiE,IAAUE,EAAE4w9C,SAAS/09C,KAAKgD,EAAE,EAAEmB,EAAEzE,UAAUs19C,cAAc,SAAS519C,GAAGY,KAAKiE,EAAE7E,EAAE6E,EAAEjE,KAAKgD,EAAE5D,EAAE4D,EAAEhD,KAAK2F,EAAEvG,EAAEuG,CAAC,EAAExB,EAAEzE,UAAUw09C,YAAY,WAAW,MAAM,CAACxv9C,EAAET,EAAE9E,EAAE,EAAEgF,EAAEzE,UAAUon+B,SAAS,WAAW,OAAO3i+B,CAAC,EAAEA,EAAE4w9C,SAAS,WAAW,GAAG,IAAI309C,UAAUC,OAAO,CAAC,IAAmBlB,EAAE8D,EAAEmx9C,iBAAjBh09C,UAAU,IAA2B,OAAOyC,KAAK2K,OAAOrO,EAAEA,KAAK,GAAG,CAAC,EAAEqE,EAAE+w9C,sBAAsBpx9C,IAAI,WAAW,OAAOkB,CAAC,EAAEb,EAAEgx9C,iBAAiBrx9C,IAAI,WAAW,OAAO,kBAAkB,EAAEK,EAAE8w9C,cAAcnx9C,IAAI,WAAW,OAAOF,EAAE24vB,GAAG,EAAEp4vB,EAAEuB,EAAE5B,IAAI,WAAW,OAAO,CAAC,EAAEK,EAAEiC,EAAEtC,IAAI,WAAW,OAAO,CAAC,EAAEK,EAAEiB,EAAEtB,IAAI,WAAW,OAAO,CAAC,EAAE7D,OAAOkU,iBAAiBrP,EAAEX,GAAG,IAAIa,EAAE,SAASjF,GAAG,GAAGY,KAAKi19C,kBAAkB,EAAE,IAAI709C,UAAUC,aAAa,GAAG,IAAID,UAAUC,OAAO,CAAC,IAAIlB,EAAEiB,UAAU,GAAG,GAAG,IAAIjB,GAAG,IAAIA,EAAE,MAAM,IAAIiE,EAAE,2CAA2CpD,KAAKi19C,kBAAkB919C,CAAC,CAAC,EAAEkF,EAAE3E,UAAUwqH,QAAQ,SAAS9qH,EAAED,GAAG,IAAIE,EAAED,EAAEwB,EAAEzB,EAAEY,EAAEsE,EAAE6lH,QAAQ7qH,EAAE4E,EAAErD,EAAEqD,GAAG,GAAG,IAAIlE,EAAE,OAAOA,EAAE,IAAIO,EAAE+D,EAAE6lH,QAAQ7qH,EAAE2D,EAAEpC,EAAEoC,GAAG,OAAG,IAAI1C,EAASA,EAAKN,KAAKi19C,mBAAmB,EAAS,EAAS5w9C,EAAE6lH,QAAQ7qH,EAAEsG,EAAE/E,EAAE+E,EAAE,EAAEtB,EAAE3E,UAAUw09C,YAAY,WAAW,MAAM,CAAChv9C,EAAE,EAAEb,EAAE3E,UAAUon+B,SAAS,WAAW,OAAOzi+B,CAAC,EAAEA,EAAE6lH,QAAQ,SAAS9qH,EAAED,GAAG,OAAOC,EAAED,GAAG,EAAEC,EAAED,EAAE,EAAE8D,EAAEqpC,MAAMltC,GAAG6D,EAAEqpC,MAAMntC,GAAG,GAAG,EAAE8D,EAAEqpC,MAAMntC,GAAG,EAAE,CAAC,EAAE,IAAImE,EAAE,WAAW,EAAEA,EAAE5D,UAAUQ,OAAO,WAAW,EAAEoD,EAAE5D,UAAUw09C,YAAY,WAAW,MAAM,EAAE,EAAE5w9C,EAAE5D,UAAUon+B,SAAS,WAAW,OAAOxj+B,CAAC,EAAE,IAAIC,EAAE,WAAW,EAAES,EAAE,CAACkx9C,SAAS,CAACpx9C,cAAa,GAAIqx9C,SAAS,CAACrx9C,cAAa,GAAIsx9C,SAAS,CAACtx9C,cAAa,GAAI0xQ,KAAK,CAAC1xQ,cAAa,IAAKP,EAAE7D,UAAUw09C,YAAY,WAAW,MAAM,EAAE,EAAE3w9C,EAAE7D,UAAUon+B,SAAS,WAAW,OAAOvj+B,CAAC,EAAEA,EAAE8x9C,iBAAiB,SAASj29C,GAAG,OAAOA,GAAG,KAAKmE,EAAE6x9C,SAAS,MAAM,IAAI,KAAK7x9C,EAAE4x9C,SAAS,MAAM,IAAI,KAAK5x9C,EAAE2x9C,SAAS,MAAM,IAAI,KAAK3x9C,EAAEiyQ,KAAK,MAAM,IAAI,MAAM,IAAIpyQ,EAAE,2BAA2BhE,EAAE,EAAE4E,EAAEkx9C,SAAS/x9C,IAAI,WAAW,OAAO,CAAC,EAAEa,EAAEmx9C,SAAShy9C,IAAI,WAAW,OAAO,CAAC,EAAEa,EAAEox9C,SAASjy9C,IAAI,WAAW,OAAO,CAAC,EAAEa,EAAEwxQ,KAAKryQ,IAAI,WAAW,OAAO,CAAC,EAAE7D,OAAOkU,iBAAiBjQ,EAAES,GAAG,IAAIE,EAAE,SAAS9E,EAAED,GAAG,OAAOC,EAAE809C,aAAa909C,EAAE809C,cAAc1z9C,QAAQrB,IAAI,CAAC,EAAEmF,EAAE,WAAW,EAAEQ,EAAE,CAACww9C,OAAO,CAACxx9C,cAAa,IAAKQ,EAAE5E,UAAUw09C,YAAY,WAAW,MAAM,EAAE,EAAE5v9C,EAAE5E,UAAUon+B,SAAS,WAAW,OAAOxi+B,CAAC,EAAEA,EAAEm6xB,MAAM,SAASr/xB,GAAG,IAAID,EAAE0D,KAAKwnB,IAAIjrB,GAAG,OAAO6D,EAAE26vB,WAAWz+vB,IAAK8D,EAAEqpC,MAAMntC,GAAVA,EAAeA,EAAEmF,EAAEgx9C,MAAM,EAAEhx9C,EAAEuJ,IAAI,SAASzO,EAAED,EAAEE,EAAEuB,GAAG,IAAIb,EAAEX,EAAE,OAAOD,EAAEY,IAAIA,EAAEZ,GAAGE,EAAEU,IAAIA,EAAEV,GAAGuB,EAAEb,IAAIA,EAAEa,GAAGb,CAAC,EAAEuE,EAAEo0V,MAAM,WAAW,GAAG,iBAAiBt4V,UAAU,IAAI,iBAAiBA,UAAU,IAAI,iBAAiBA,UAAU,GAAG,CAAC,IAAIhB,EAAEgB,UAAU,GAAGjB,EAAEiB,UAAU,GAAGf,EAAEe,UAAU,GAAG,OAAOhB,EAAED,EAAEA,EAAEC,EAAEC,EAAEA,EAAED,CAAC,CAAC,GAAG+lC,OAAOglH,UAAU/pJ,UAAU,KAAK+kC,OAAOglH,UAAU/pJ,UAAU,KAAK+kC,OAAOglH,UAAU/pJ,UAAU,IAAI,CAAC,IAAIQ,EAAER,UAAU,GAAGL,EAAEK,UAAU,GAAGE,EAAEF,UAAU,GAAG,OAAOQ,EAAEb,EAAEA,EAAEa,EAAEN,EAAEA,EAAEM,CAAC,CAAC,EAAE0D,EAAEsT,KAAK,SAASxY,EAAED,GAAG,OAAOC,EAAE,EAAED,IAAIC,EAAED,EAAEC,EAAED,CAAC,EAAEmF,EAAEqJ,IAAI,WAAW,GAAG,IAAIvN,UAAUC,OAAO,CAAC,IAAmBlB,EAAEiB,UAAU,GAAGf,EAAEe,UAAU,GAAGQ,EAA3CR,UAAU,GAAqC,OAAOjB,EAAEyB,IAAIA,EAAEzB,GAAGE,EAAEuB,IAAIA,EAAEvB,GAAGuB,CAAC,CAAC,GAAG,IAAIR,UAAUC,OAAO,CAAC,IAAmBC,EAAEF,UAAU,GAAGU,EAAEV,UAAU,GAAGY,EAAEZ,UAAU,GAAGiC,EAA1DjC,UAAU,GAAoD,OAAOE,EAAE+B,IAAIA,EAAE/B,GAAGQ,EAAEuB,IAAIA,EAAEvB,GAAGE,EAAEqB,IAAIA,EAAErB,GAAGqB,CAAC,CAAC,EAAEiC,EAAEg0Y,QAAQ,SAASl5Y,EAAED,GAAG,OAAOC,EAAED,GAAG,CAAC,EAAE2F,EAAEww9C,OAAOny9C,IAAI,WAAW,OAAON,KAAKwnB,IAAI,GAAG,EAAE/qB,OAAOkU,iBAAiBlP,EAAEQ,GAAG,IAAIS,EAAE,SAASnG,GAAGY,KAAK22E,IAAIv3E,CAAC,EAAEmG,EAAE7F,UAAU0kF,OAAO,SAAShlF,GAAGY,KAAK22E,KAAKv3E,CAAC,EAAEmG,EAAE7F,UAAU619C,UAAU,SAASn29C,EAAED,GAAGa,KAAK22E,IAAI32E,KAAK22E,IAAIl7C,OAAO,EAAEr8B,GAAGD,EAAEa,KAAK22E,IAAIl7C,OAAOr8B,EAAE,EAAE,EAAEmG,EAAE7F,UAAU6E,SAAS,SAASnF,GAAG,OAAOY,KAAK22E,GAAG,EAAE,IAAI9wE,EAAE,SAASzG,GAAGY,KAAKmB,MAAM/B,CAAC,EAAEyG,EAAEnG,UAAU819C,SAAS,WAAW,OAAOx19C,KAAKmB,KAAK,EAAE0E,EAAEnG,UAAUmzQ,UAAU,SAASzzQ,GAAG,OAAOY,KAAKmB,MAAM/B,GAAG,EAAEY,KAAKmB,MAAM/B,EAAE,EAAE,CAAC,EAAEyG,EAAEymC,MAAM,SAASltC,GAAG,OAAO+lC,OAAOmH,MAAMltC,EAAE,EAAE,IAAIyF,EAAE,WAAW,EAAEA,EAAE4w9C,aAAa,SAASr29C,GAAG,OAAOA,GAAG,IAAIA,GAAG,GAAG,MAAMA,CAAC,EAAEyF,EAAE+rD,YAAY,SAASxxD,GAAG,OAAOA,EAAEwxD,aAAa,EAAE,IAAI5rD,EAAE,SAAS5F,IAAI,GAAGY,KAAK019C,IAAI,EAAE119C,KAAK219C,IAAI,EAAE,IAAIv19C,UAAUC,OAAOL,KAAK0wD,KAAK,QAAQ,GAAG,IAAItwD,UAAUC,OAAQ,GAAG,iBAAiBD,UAAU,GAAG,CAAC,IAAIjB,EAAEiB,UAAU,GAAGJ,KAAK0wD,KAAKvxD,EAAE,MAAM,GAAGiB,UAAU,aAAahB,EAAE,CAAC,IAAIC,EAAEe,UAAU,GAAGJ,KAAK0wD,KAAKrxD,EAAE,KAAS,iBAAiBe,UAAU,IAAuBhB,EAAEQ,KAAKI,KAAKZ,EAAEmtB,MAA3BnsB,UAAU,UAAiC,GAAG,IAAIA,UAAUC,OAAO,CAAC,IAAIN,EAAEK,UAAU,GAAGE,EAAEF,UAAU,GAAGJ,KAAK0wD,KAAK3wD,EAAEO,EAAE,CAAC,EAAEqE,EAAE,CAACwkC,GAAG,CAACrlC,cAAa,GAAIo/V,OAAO,CAACp/V,cAAa,GAAI8x9C,KAAK,CAAC9x9C,cAAa,GAAIY,EAAE,CAACZ,cAAa,GAAI83vB,IAAI,CAAC93vB,cAAa,GAAI+x9C,IAAI,CAAC/x9C,cAAa,GAAIgy9C,MAAM,CAAChy9C,cAAa,GAAIiy9C,iBAAiB,CAACjy9C,cAAa,GAAIky9C,IAAI,CAACly9C,cAAa,GAAI+qN,IAAI,CAAC/qN,cAAa,GAAImy9C,sBAAsB,CAACny9C,cAAa,GAAIoy9C,aAAa,CAACpy9C,cAAa,IAAKkB,EAAEtF,UAAU0H,GAAG,SAAShI,GAAG,OAAOY,KAAK019C,IAAIt29C,EAAEs29C,KAAK119C,KAAK019C,MAAMt29C,EAAEs29C,MAAM119C,KAAK219C,KAAKv29C,EAAEu29C,GAAG,EAAE3w9C,EAAEtF,UAAUy29C,yBAAyB,SAAS/29C,EAAED,GAAG,IAAIE,EAAEW,KAAKgmH,MAAMplH,EAAEoE,EAAEw+K,UAAUnkL,EAAEq29C,KAAK319C,EAAEiF,EAAEgx9C,IAAItg4C,IAAI90F,IAAIvB,EAAEA,EAAEwyN,OAAO9xN,IAAIsN,GAAGrI,EAAEgx9C,MAAM329C,EAAEA,EAAEwyN,OAAO7sN,EAAEgx9C,KAAKp19C,GAAG,GAAGvB,EAAEuM,GAAG5G,EAAE6pN,OAAOxvN,EAAEA,EAAEmoN,SAASxiN,EAAEgx9C,KAAKp19C,GAAG,GAAG,IAAI,IAAIN,EAAEM,EAAE,EAAEE,EAAE,IAAIyE,EAAEvE,EAAEgE,EAAE+w9C,iBAAiB,EAAE1z9C,EAAE,EAAEA,GAAGrB,EAAEqB,IAAI,CAACjD,GAAGiD,IAAI/B,GAAGQ,EAAEsjF,OAAO,KAAK,IAAI5hF,EAAEK,KAAK2K,MAAMnO,EAAEq29C,KAAK,GAAGlz9C,EAAE,EAAE,MAAM,IAAI3B,GAAE,EAAGiC,EAAE,EAAEN,EAAE,GAAG3B,GAAE,EAAGiC,EAAE,KAAKA,EAAE,IAAIN,EAAE1B,EAAEsjF,OAAOthF,GAAGzD,EAAEA,EAAE+iL,SAASp9K,EAAEkE,QAAQ1G,IAAIglN,SAASxiN,EAAEgx9C,KAAKn19C,GAAGxB,EAAE+29C,QAAQpx9C,EAAEgx9C,KAAK,IAAIpz9C,GAAE,EAAGF,EAAEsC,EAAEw+K,UAAUnkL,EAAEq29C,KAAK,GAAGhz9C,EAAE,GAAGG,KAAKmjH,IAAItjH,IAAI1B,EAAEqB,IAAIO,GAAE,IAAKA,EAAE,KAAK,CAAC,OAAOzD,EAAE,GAAGyB,EAAEE,EAAEyD,UAAU,EAAES,EAAEtF,UAAU229C,IAAI,WAAW,OAAOr29C,KAAKwnN,SAASxnN,KAAK,EAAEgF,EAAEtF,UAAU429C,YAAY,WAAW,OAAOt29C,KAAK019C,IAAI119C,KAAK219C,GAAG,EAAE3w9C,EAAEtF,UAAU0iL,SAAS,WAAW,GAAGhiL,UAAU,aAAa4E,EAAE,CAAC,IAAI5F,EAAEgB,UAAU,GAAG,OAAOJ,KAAKmlB,IAAI/lB,EAAEoyH,SAAS,CAAC,GAAG,iBAAiBpxH,UAAU,GAAG,CAAC,IAAIjB,EAAEiB,UAAU,GAAG,OAAOJ,KAAKmlB,KAAKhmB,EAAE,CAAC,EAAE6F,EAAEtF,UAAU6yI,OAAO,WAAW,GAAG,IAAInyI,UAAUC,OAAO,CAAC,IAAIjB,EAAEgB,UAAU,GAAG,OAAOJ,KAAK019C,MAAMt29C,EAAEs29C,KAAK119C,KAAK219C,MAAMv29C,EAAEu29C,GAAG,CAAC,EAAE3w9C,EAAEtF,UAAUqwM,OAAO,WAAW,OAAO,IAAI/vM,KAAK019C,KAAK,IAAI119C,KAAK219C,GAAG,EAAE3w9C,EAAEtF,UAAU629C,aAAa,WAAW,GAAGn29C,UAAU,aAAa4E,EAAE,CAAC,IAAI5F,EAAEgB,UAAU,GAAG,OAAOJ,KAAKssC,QAAQtsC,KAAKA,KAAKo29C,SAASh39C,EAAEs29C,KAAKt29C,EAAEu29C,IAAI,CAAC,GAAG,iBAAiBv19C,UAAU,GAAG,CAAC,IAAIjB,EAAEiB,UAAU,GAAG,OAAOJ,KAAKssC,QAAQtsC,KAAKA,KAAKo29C,SAASj39C,EAAE,EAAE,CAAC,EAAE6F,EAAEtF,UAAU829C,uBAAuB,WAAW,OAAOx29C,KAAK+vM,SAAS,MAAM/vM,KAAKssC,QAAQ,OAAO,IAAI,EAAEtnC,EAAEtF,UAAUmO,IAAI,SAASzO,GAAG,OAAOY,KAAKoH,GAAGhI,GAAGY,KAAKZ,CAAC,EAAE4F,EAAEtF,UAAU+29C,WAAW,WAAW,GAAG,IAAIr29C,UAAUC,OAAO,CAAC,GAAGD,UAAU,aAAa4E,EAAE,CAAC,IAAI5F,EAAEgB,UAAU,GAAG,OAAOJ,KAAKy29C,WAAWr39C,EAAEs29C,IAAIt29C,EAAEu29C,IAAI,CAAC,GAAG,iBAAiBv19C,UAAU,GAAG,CAAC,IAAIjB,EAAEiB,UAAU,GAAG,OAAOJ,KAAKy29C,WAAWt39C,EAAE,EAAE,CAAC,MAAM,GAAG,IAAIiB,UAAUC,OAAO,CAAC,IAAyCC,EAAcU,EAAOqB,EAAcxB,EAAxExB,EAAEe,UAAU,GAAGQ,EAAER,UAAU,GAAGL,EAAE,KAAYe,EAAE,KAAmB0B,EAAE,KAAYM,EAAE,KAAK,OAAOT,EAAErC,KAAK019C,IAAIr29C,EAAoEyD,GAApC/C,GAA9ByC,EAAEwC,EAAE8w9C,MAAMzz9C,IAAEtC,EAAEyC,EAAEH,KAAsCvB,GAApCgC,EAAEkC,EAAE8w9C,MAAMz29C,IAAcyB,EAAEgC,EAAEzD,KAAEwB,EAAEwB,EAAEhD,GAAsBU,GAAdiB,EAAE3B,EAAEyB,IAA5BR,EAAE+B,EAAEtC,GAAwCe,EAAER,EAAEU,EAAkC8B,EAAET,GAAlCG,GAAGxC,KAAK019C,IAAI709C,EAAEiC,EAAE9C,KAAK219C,IAAItz9C,EAAEzB,GAAGvB,GAAQW,KAAK019C,IAAI5y9C,EAAE9C,KAAK219C,IAAItz9C,EAAES,EAAEN,EAAExC,IAAI,CAAC,EAAEgF,EAAEtF,UAAUg39C,KAAK,WAAW,MAAM,MAAM129C,KAAK019C,IAAI,KAAK119C,KAAK219C,IAAI,GAAG,EAAE3w9C,EAAEtF,UAAUmyN,OAAO,WAAW,GAAGzxN,UAAU,aAAa4E,EAAE,CAAC,IAA0B3F,EAAcU,EAAOO,EAAcU,EAAzD5B,EAAEgB,UAAU,GAAGjB,EAAE,KAAYyB,EAAE,KAAmBE,EAAE,KAAYuB,EAAE,KAAoK,OAA/JhD,GAAGiB,EAAEN,KAAK019C,IAAIt29C,EAAEs29C,MAAMv29C,GAAG2B,EAAEkE,EAAE8w9C,MAAMx19C,IAAInB,EAAE2B,EAAER,IAAI+B,EAAElD,GAAGyB,GAAGyB,EAAE2C,EAAE8w9C,MAAM129C,EAAEs29C,MAAM909C,EAAEyB,EAAEjD,EAAEs29C,OAAO109C,EAAEV,EAAElB,EAAEs29C,KAAKv29C,GAAGY,EAAEX,EAAEs29C,IAAI909C,GAAGvB,EAAEuB,EAAEvB,EAAEU,EAAEe,GAAGd,KAAK019C,IAAI109C,EAAEqB,EAAErC,KAAK219C,IAAIr19C,EAAElB,EAAEu29C,KAAKv29C,EAAEs29C,IAAW,IAAI1w9C,EAAE3C,EAAE/B,EAAEQ,EAAER,EAAE+B,EAAEvB,EAAE,CAAC,GAAG,iBAAiBV,UAAU,GAAG,CAAC,IAAIoC,EAAEpC,UAAU,GAAG,OAAO6C,EAAEqpC,MAAM9pC,GAAGwC,EAAE2x9C,YAAY3x9C,EAAE86H,KAAK9/H,MAAMy29C,WAAWj09C,EAAE,EAAE,CAAC,EAAEwC,EAAEtF,UAAUuI,GAAG,SAAS7I,GAAG,OAAOY,KAAK019C,IAAIt29C,EAAEs29C,KAAK119C,KAAK019C,MAAMt29C,EAAEs29C,MAAM119C,KAAK219C,KAAKv29C,EAAEu29C,GAAG,EAAE3w9C,EAAEtF,UAAUg2F,IAAI,SAASt2F,GAAG,GAAG,IAAIA,EAAE,OAAO4F,EAAEkE,QAAQ,GAAG,IAAI/J,EAAE,IAAI6F,EAAEhF,MAAMX,EAAE2F,EAAEkE,QAAQ,GAAGtI,EAAEiC,KAAKmjH,IAAI5mH,GAAG,GAAGwB,EAAE,EAAE,KAAKA,EAAE,GAAGA,EAAE,GAAG,GAAGvB,EAAEu39C,aAAaz39C,IAAIyB,GAAG,GAAG,IAAIzB,EAAEA,EAAEk39C,YAAYh39C,EAAEF,EAAE,OAAOC,EAAE,EAAEC,EAAEw39C,aAAax39C,CAAC,EAAE2F,EAAEtF,UAAU0N,KAAK,WAAW,GAAGpN,KAAKssC,QAAQ,OAAOtnC,EAAE42vB,IAAI,IAAIx8vB,EAAEyD,KAAKuK,KAAKpN,KAAK019C,KAAKv29C,EAAE,EAAE,OAAOC,IAAIY,KAAK019C,MAAMv29C,EAAE0D,KAAKuK,KAAKpN,KAAK219C,MAAM,IAAI3w9C,EAAE5F,EAAED,EAAE,EAAE6F,EAAEtF,UAAUmzQ,UAAU,SAASzzQ,GAAG,IAAID,EAAEC,EAAE,OAAOY,KAAK019C,IAAIv29C,EAAEu29C,KAAK,EAAE119C,KAAK019C,IAAIv29C,EAAEu29C,IAAI,EAAE119C,KAAK219C,IAAIx29C,EAAEw29C,KAAK,EAAE319C,KAAK219C,IAAIx29C,EAAEw29C,IAAI,EAAE,CAAC,EAAE3w9C,EAAEtF,UAAUo39C,KAAK,WAAW,OAAG929C,KAAKssC,QAAetsC,KAAYA,KAAKmlB,IAAI,IAAI7X,OAAO,EAAEtI,EAAEtF,UAAUw/hB,SAAS,WAAW,GAAG9+hB,UAAU,aAAa4E,EAAE,CAAC,IAAI5F,EAAEgB,UAAU,GAAG,OAAOJ,KAAK0wD,KAAKtxD,GAAGY,IAAI,CAAC,GAAG,iBAAiBI,UAAU,GAAG,CAAC,IAAIjB,EAAEiB,UAAU,GAAG,OAAOJ,KAAK0wD,KAAKvxD,GAAGa,IAAI,CAAC,EAAEgF,EAAEtF,UAAUiO,IAAI,SAASvO,GAAG,OAAOY,KAAKiI,GAAG7I,GAAGY,KAAKZ,CAAC,EAAE4F,EAAEtF,UAAU+1F,KAAK,WAAW,GAAGz1F,KAAK+vM,SAAS,OAAO/qM,EAAEkE,QAAQ,GAAG,GAAGlJ,KAAKmvN,aAAa,OAAOnqN,EAAE42vB,IAAI,IAAIx8vB,EAAE,EAAEyD,KAAK4yF,KAAKz1F,KAAK019C,KAAKv29C,EAAEa,KAAK019C,IAAIt29C,EAAEC,EAAE2F,EAAEkE,QAAQ/J,GAAGyB,EAAEZ,KAAKoiL,SAAS/iL,EAAEg39C,OAAOX,KAAK,GAAGt29C,GAAG,OAAOC,EAAE8lB,IAAIvkB,EAAE,EAAEoE,EAAEtF,UAAU029C,QAAQ,WAAW,GAAG,IAAIh29C,UAAUC,OAAO,CAAC,GAAGD,UAAU,aAAa4E,EAAE,CAAC,IAAI5F,EAAEgB,UAAU,GAAG,OAAOJ,KAAKo29C,QAAQh39C,EAAEs29C,IAAIt29C,EAAEu29C,IAAI,CAAC,GAAG,iBAAiBv19C,UAAU,GAAG,CAAC,IAAmBf,EAAOuB,EAAOb,EAAce,EAAOE,EAAlD7B,EAAEiB,UAAU,GAAwBE,EAAE,KAAmB,OAAiCA,GAA1BP,EAAEC,KAAK019C,IAAIv29C,IAAE2B,EAAEf,EAAEC,KAAK019C,KAAgD909C,GAAnBI,GAAnBV,EAAEnB,EAAE2B,GAAGd,KAAK019C,IAAIp19C,IAAON,KAAK219C,MAAe519C,GAAXV,EAAEU,EAAEiB,IAAYhB,KAAK019C,IAAIr29C,EAAEuB,EAAEZ,KAAK219C,IAAI/09C,GAAGvB,EAAEW,KAAK019C,KAAK119C,IAAI,CAAC,MAAM,GAAG,IAAII,UAAUC,OAAO,CAAC,IAAkCQ,EAAOiC,EAAcJ,EAAqBM,EAAxEX,EAAEjC,UAAU,GAAGoC,EAAEpC,UAAU,GAAiBwC,EAAE,KAAYT,EAAE,KAAKQ,EAAE,KAAYD,EAAE1C,KAAK019C,IAAIrz9C,EAAES,EAAE9C,KAAK219C,IAAInz9C,EAAEL,EAAEO,GAAGC,EAAED,EAAE1C,KAAK019C,KAAK9y9C,EAAEE,GAAGE,EAAEF,EAAE9C,KAAK219C,KAAK,IAAI/x9C,GAAG/C,EAAE6B,GAAGC,GAAGR,EAAEE,EAAEM,GAAG3C,KAAK019C,IAAIvz9C,IAAIW,KAAKH,GAAGC,EAAEJ,EAAEQ,GAAGhD,KAAK219C,IAAI/y9C,KAAKD,GAAGD,EAAE7B,KAAKuC,EAAET,GAAG9B,EAAE+C,GAAG,OAAO5D,KAAK019C,IAAI9x9C,EAAE5D,KAAK219C,IAAIvy9C,EAAEpD,IAAI,CAAC,EAAEgF,EAAEtF,UAAUk39C,aAAa,WAAW,GAAG,IAAIx29C,UAAUC,OAAO,CAAC,GAAGD,UAAU,aAAa4E,EAAE,CAAC,IAAI5F,EAAEgB,UAAU,GAAG,OAAOJ,KAAK429C,aAAax39C,EAAEs29C,IAAIt29C,EAAEu29C,IAAI,CAAC,GAAG,iBAAiBv19C,UAAU,GAAG,CAAC,IAAIjB,EAAEiB,UAAU,GAAG,OAAOJ,KAAK429C,aAAaz39C,EAAE,EAAE,CAAC,MAAM,GAAG,IAAIiB,UAAUC,OAAO,CAAC,IAAyCC,EAAcU,EAAnD3B,EAAEe,UAAU,GAAGQ,EAAER,UAAU,GAAGL,EAAE,KAAYe,EAAE,KAAYuB,EAAE,KAAKG,EAAE,KAAKzC,GAAGsC,EAAE2C,EAAE8w9C,MAAM919C,KAAK019C,KAAK119C,KAAK019C,IAAIlz9C,EAAEwC,EAAE8w9C,MAAMz29C,EAAEU,EAAEsC,EAAEtC,EAAEO,EAAEN,KAAK019C,IAAI319C,EAAEe,EAAE0B,EAAEnD,EAAE,IAAIwB,GAAGwB,EAAErC,KAAK019C,IAAIr29C,IAAImD,EAAEzC,GAAGe,EAAE0B,EAAE1B,GAAGuB,EAAEtC,GAAGiB,EAAE3B,EAAEyB,GAAGR,EAAEQ,EAAER,EAAEU,GAAGhB,KAAK019C,IAAI909C,EAAEZ,KAAK219C,IAAIt29C,IAAIyD,EAAEN,GAAGzC,EAAEsC,EAAExB,GAAG,OAAOb,KAAK019C,IAAI709C,EAAEb,KAAK219C,IAAI7y9C,EAAE9C,IAAI,CAAC,EAAEgF,EAAEtF,UAAUq39C,QAAQ,WAAW,OAAO/29C,KAAK429C,aAAa529C,KAAK,EAAEgF,EAAEtF,UAAU4N,MAAM,WAAW,GAAGtN,KAAKssC,QAAQ,OAAOtnC,EAAE42vB,IAAI,IAAIx8vB,EAAEyD,KAAKyK,MAAMtN,KAAK019C,KAAKv29C,EAAE,EAAE,OAAOC,IAAIY,KAAK019C,MAAMv29C,EAAE0D,KAAKyK,MAAMtN,KAAK219C,MAAM,IAAI3w9C,EAAE5F,EAAED,EAAE,EAAE6F,EAAEtF,UAAU8xH,OAAO,WAAW,OAAOxxH,KAAKssC,QAAQtsC,KAAK,IAAIgF,GAAGhF,KAAK019C,KAAK119C,KAAK219C,IAAI,EAAE3w9C,EAAEtF,UAAU6wB,MAAM,WAAW,EAAEvrB,EAAEtF,UAAU8nN,SAAS,WAAW,GAAGpnN,UAAU,aAAa4E,EAAE,CAAC,IAAI5F,EAAEgB,UAAU,GAAG,OAAOhB,EAAEktC,QAAQtnC,EAAE2x9C,YAAY3x9C,EAAE86H,KAAK9/H,MAAM429C,aAAax39C,EAAE,CAAC,GAAG,iBAAiBgB,UAAU,GAAG,CAAC,IAAIjB,EAAEiB,UAAU,GAAG,OAAO6C,EAAEqpC,MAAMntC,GAAG6F,EAAE2x9C,YAAY3x9C,EAAE86H,KAAK9/H,MAAM429C,aAAaz39C,EAAE,EAAE,CAAC,EAAE6F,EAAEtF,UAAU4sC,MAAM,WAAW,OAAOrpC,EAAEqpC,MAAMtsC,KAAK019C,IAAI,EAAE1w9C,EAAEtF,UAAU819C,SAAS,WAAW,OAAO3y9C,KAAK2K,MAAMxN,KAAK019C,IAAI,EAAE1w9C,EAAEtF,UAAU6E,SAAS,WAAW,IAAInF,EAAE4F,EAAEw+K,UAAUxjL,KAAK019C,KAAK,OAAOt29C,IAAI,GAAGA,GAAG,GAAGY,KAAKg39C,qBAAqBh39C,KAAKi39C,eAAe,EAAEjy9C,EAAEtF,UAAUs39C,mBAAmB,WAAW,IAAI539C,EAAEY,KAAKw29C,yBAAyB,GAAG,OAAOp39C,EAAE,OAAOA,EAAE,IAAID,EAAE,IAAIM,MAAM,GAAG29H,KAAK,MAAM/9H,EAAEW,KAAKm29C,0BAAyB,EAAGh39C,GAAGyB,EAAEzB,EAAE,GAAG,EAAEY,EAAEV,EAAE,GAAG,MAAMA,EAAEwZ,OAAO,GAAG9Y,EAAE,IAAIV,OAAO,GAAGuB,EAAE,EAAEb,EAAE,KAAKiF,EAAEky9C,aAAa,KAAKt29C,GAAGvB,OAAO,IAAI,IAAIA,EAAEmB,QAAQ,KAAK,CAAC,IAAIF,EAAEM,EAAEvB,EAAEgB,OAAON,EAAEV,EAAE2F,EAAEky9C,aAAa,IAAI529C,GAAG,IAAI,CAAC,OAAON,KAAKmvN,aAAa,IAAIpvN,EAAEA,CAAC,EAAEiF,EAAEtF,UAAUm39C,WAAW,WAAW,IAAW139C,EAAcyB,EAAOb,EAAce,EAA1C1B,EAAE,KAAYC,EAAE,KAAmBiB,EAAE,KAAYU,EAAE,KAAK7B,GAAGY,EAAE,EAAEC,KAAK019C,MAAMt29C,GAAGkB,EAAE0E,EAAE8w9C,MAAM/19C,IAAIX,EAAEkB,EAAEP,IAAIV,GAAG2B,EAAEgE,EAAE8w9C,MAAM919C,KAAK019C,KAAK119C,KAAK019C,IAAI,IAAIrz9C,EAAEtC,GAAGO,GAAG,GAAGQ,EAAEf,EAAEC,KAAK019C,MAAM109C,EAAE5B,GAAGC,EAAE2B,EAAE3B,GAAGyB,EAAE1B,GAAGwB,EAAEZ,KAAK019C,IAAIr29C,GAAGF,EAAEE,EAAEF,EAAEyB,GAAGb,EAAEC,KAAK219C,KAAK319C,KAAK019C,KAAK,OAAO,IAAI1w9C,EAAE3C,EAAEtC,EAAEsC,EAAE/B,EAAE,EAAE0E,EAAEtF,UAAUu39C,cAAc,WAAW,GAAGj39C,KAAK+vM,SAAS,OAAO/qM,EAAEkx9C,aAAa,IAAI929C,EAAEY,KAAKw29C,yBAAyB,GAAG,OAAOp39C,EAAE,OAAOA,EAAE,IAAID,EAAE,IAAIM,MAAM,GAAG29H,KAAK,MAAM/9H,EAAEW,KAAKm29C,0BAAyB,EAAGh39C,GAAGyB,EAAEoE,EAAEix9C,sBAAsB929C,EAAE,GAAG,GAAG,MAAME,EAAEwZ,OAAO,GAAG,MAAM,IAAI2O,MAAM,uBAAuBnoB,GAAG,IAAIU,EAAE,GAAGV,EAAEgB,OAAO,IAAIN,EAAEV,EAAEi4B,UAAU,IAAI,IAAIh3B,EAAEjB,EAAEwZ,OAAO,GAAG,IAAI9Y,EAAE,OAAOC,KAAKmvN,aAAa,IAAI7uN,EAAEM,EAAEN,EAAEM,CAAC,EAAEoE,EAAEtF,UAAUsmH,IAAI,WAAW,OAAOhmH,KAAKssC,QAAQtnC,EAAE42vB,IAAI57vB,KAAKmvN,aAAanvN,KAAKwxH,SAAS,IAAIxsH,EAAEhF,KAAK,EAAEgF,EAAEtF,UAAUuwN,WAAW,WAAW,OAAOjwN,KAAK019C,IAAI,GAAG,IAAI119C,KAAK019C,MAAM119C,KAAK219C,IAAI,CAAC,EAAE3w9C,EAAEtF,UAAUkM,GAAG,SAASxM,GAAG,OAAOY,KAAK019C,IAAIt29C,EAAEs29C,KAAK119C,KAAK019C,MAAMt29C,EAAEs29C,MAAM119C,KAAK219C,IAAIv29C,EAAEu29C,GAAG,EAAE3w9C,EAAEtF,UAAUylB,IAAI,WAAW,GAAG/kB,UAAU,aAAa4E,EAAE,CAAC,IAAI5F,EAAEgB,UAAU,GAAG,OAAO4E,EAAE86H,KAAK9/H,MAAMo29C,QAAQh39C,EAAE,CAAC,GAAG,iBAAiBgB,UAAU,GAAG,CAAC,IAAIjB,EAAEiB,UAAU,GAAG,OAAO4E,EAAE86H,KAAK9/H,MAAMo29C,QAAQj39C,EAAE,CAAC,EAAE6F,EAAEtF,UAAUgxD,KAAK,WAAW,GAAG,IAAItwD,UAAUC,QAAQ,GAAG,iBAAiBD,UAAU,GAAG,CAAC,IAAIhB,EAAEgB,UAAU,GAAGJ,KAAK019C,IAAIt29C,EAAEY,KAAK219C,IAAI,CAAC,MAAM,GAAGv19C,UAAU,aAAa4E,EAAE,CAAC,IAAI7F,EAAEiB,UAAU,GAAGJ,KAAK019C,IAAIv29C,EAAEu29C,IAAI119C,KAAK219C,IAAIx29C,EAAEw29C,GAAG,OAAO,GAAG,IAAIv19C,UAAUC,OAAO,CAAC,IAAIhB,EAAEe,UAAU,GAAGQ,EAAER,UAAU,GAAGJ,KAAK019C,IAAIr29C,EAAEW,KAAK219C,IAAI/09C,CAAC,CAAC,EAAEoE,EAAEtF,UAAU2N,GAAG,SAASjO,GAAG,OAAOY,KAAK019C,IAAIt29C,EAAEs29C,KAAK119C,KAAK019C,MAAMt29C,EAAEs29C,MAAM119C,KAAK219C,IAAIv29C,EAAEu29C,GAAG,EAAE3w9C,EAAEtF,UAAUyvN,WAAW,WAAW,OAAOnvN,KAAK019C,IAAI,GAAG,IAAI119C,KAAK019C,MAAM119C,KAAK219C,IAAI,CAAC,EAAE3w9C,EAAEtF,UAAU8N,MAAM,WAAW,OAAOxN,KAAKssC,QAAQtnC,EAAE42vB,IAAI57vB,KAAKiwN,aAAajwN,KAAKsN,QAAQtN,KAAKoN,MAAM,EAAEpI,EAAEtF,UAAUy39C,OAAO,WAAW,OAAOn39C,KAAK019C,IAAI,EAAE,EAAE119C,KAAK019C,IAAI,GAAG,EAAE119C,KAAK219C,IAAI,EAAE,EAAE319C,KAAK219C,IAAI,GAAG,EAAE,CAAC,EAAE3w9C,EAAEtF,UAAUw09C,YAAY,WAAW,MAAM,CAAC/09C,EAAEuF,EAAET,EAAE,EAAEe,EAAEtF,UAAUon+B,SAAS,WAAW,OAAO9h+B,CAAC,EAAEA,EAAEqx9C,IAAI,SAASj39C,GAAG,OAAO4F,EAAEkE,QAAQ9J,GAAGw39C,aAAax39C,EAAE,EAAE4F,EAAEkE,QAAQ,WAAW,MAAG,iBAAiB9I,UAAU,GAA8B4E,EAAEunB,MAAtBnsB,UAAU,IAAwB,iBAAiBA,UAAU,GAA8B,IAAI4E,EAAxB5E,UAAU,SAAlD,CAAqE,EAAE4E,EAAEywF,KAAK,SAASr2F,GAAG,OAAO4F,EAAEkE,QAAQ9J,GAAGq2F,MAAM,EAAEzwF,EAAEunB,MAAM,SAASntB,GAAG,IAAI,IAAID,EAAE,EAAEE,EAAED,EAAEiB,OAAOwE,EAAE4w9C,aAAar29C,EAAEyZ,OAAO1Z,KAAKA,IAAI,IAAIyB,GAAE,EAAG,GAAGzB,EAAEE,EAAE,CAAC,IAAIU,EAAEX,EAAEyZ,OAAO1Z,GAAG,MAAMY,GAAG,MAAMA,IAAIZ,IAAI,MAAMY,IAAIa,GAAE,GAAI,CAAC,IAAI,IAAIN,EAAE,IAAI0E,EAAElE,EAAE,EAAEE,EAAE,EAAEqB,EAAE,IAAIlD,GAAGE,IAAI,CAAC,IAAImD,EAAEpD,EAAEyZ,OAAO1Z,GAAG,GAAGA,IAAI0F,EAAEuy9C,QAAQ509C,GAAG,CAAC,IAAI3B,EAAE2B,EAAE,IAAIlC,EAAEs29C,aAAa5x9C,EAAEgx9C,KAAK119C,EAAE819C,QAAQv19C,GAAGC,GAAG,KAAK,CAAC,GAAG,MAAM0B,EAAE,CAAC,GAAG,MAAMA,GAAG,MAAMA,EAAE,CAAC,IAAIM,EAAE1D,EAAEk4B,UAAUn4B,GAAG,IAAIkD,EAAEwD,EAAE8vB,SAAS7yB,EAAE,CAAC,MAAM3D,GAAG,MAAMA,aAAaqoB,MAAM,IAAIA,MAAM,oBAAoB1kB,EAAE,cAAc1D,GAAGD,CAAC,CAAC,KAAK,CAAC,MAAM,IAAIqoB,MAAM,yBAAyBhlB,EAAE,iBAAiBrD,EAAE,cAAcC,EAAE,CAAC4B,EAAEF,CAAC,CAAC,CAAC,IAAI8B,EAAEtC,EAAEoC,EAAE5B,EAAEE,EAAEqB,EAAE,GAAG,IAAIK,EAAEE,EAAEtC,OAAO,GAAGoC,EAAE,EAAE,CAAC,IAAIP,EAAE6C,EAAEgx9C,IAAItg4C,IAAIhzF,GAAGE,EAAEtC,EAAEuxN,OAAO1vN,EAAE,MAAM,GAAGO,EAAE,EAAE,CAAC,IAAIC,EAAEqC,EAAEgx9C,IAAItg4C,KAAKhzF,GAAGE,EAAEtC,EAAEknN,SAAS7kN,EAAE,CAAC,OAAO/B,EAAEgC,EAAE4uH,SAAS5uH,CAAC,EAAEoC,EAAE2x9C,UAAU,WAAW,OAAO,IAAI3x9C,EAAE/B,EAAE24vB,IAAI34vB,EAAE24vB,IAAI,EAAE52vB,EAAE86H,KAAK,SAAS1gI,GAAG,OAAO,IAAI4F,EAAE5F,EAAE,EAAE4F,EAAEw+K,UAAU,SAASpkL,GAAG,IAAID,EAAE0D,KAAKmjH,IAAI5mH,GAAGC,EAAEwD,KAAKwnB,IAAIlrB,GAAG0D,KAAKwnB,IAAI,IAAIzpB,EAAEiC,KAAK2K,MAAM3K,KAAKyK,MAAMjO,IAAI,OAAO,GAAGwD,KAAK6yF,IAAI,GAAG90F,IAAIzB,IAAIyB,GAAG,GAAGA,CAAC,EAAEoE,EAAEky9C,aAAa,SAAS939C,EAAED,GAAG,IAAI,IAAIE,EAAE,IAAIkG,EAAE3E,EAAE,EAAEA,EAAEzB,EAAEyB,IAAIvB,EAAE+kF,OAAOhlF,GAAG,OAAOC,EAAEkF,UAAU,EAAEI,EAAEwkC,GAAGhmC,IAAI,WAAW,OAAO,IAAI6B,EAAE,kBAAkB,sBAAuB,EAAEL,EAAEu+V,OAAO//V,IAAI,WAAW,OAAO,IAAI6B,EAAE,kBAAkB,sBAAuB,EAAEL,EAAEix9C,KAAKzy9C,IAAI,WAAW,OAAO,IAAI6B,EAAE,mBAAmB,qBAAsB,EAAEL,EAAED,EAAEvB,IAAI,WAAW,OAAO,IAAI6B,EAAE,kBAAkB,sBAAuB,EAAEL,EAAEi3vB,IAAIz4vB,IAAI,WAAW,OAAO,IAAI6B,EAAE/B,EAAE24vB,IAAI34vB,EAAE24vB,IAAI,EAAEj3vB,EAAEkx9C,IAAI1y9C,IAAI,WAAW,OAAO,mBAAoB,EAAEwB,EAAEmx9C,MAAM3y9C,IAAI,WAAW,OAAO,SAAS,EAAEwB,EAAEox9C,iBAAiB5y9C,IAAI,WAAW,OAAO,EAAE,EAAEwB,EAAEqx9C,IAAI7y9C,IAAI,WAAW,OAAO6B,EAAEkE,QAAQ,GAAG,EAAEvE,EAAEkqN,IAAI1rN,IAAI,WAAW,OAAO6B,EAAEkE,QAAQ,EAAE,EAAEvE,EAAEsx9C,sBAAsB9y9C,IAAI,WAAW,MAAM,GAAG,EAAEwB,EAAEux9C,aAAa/y9C,IAAI,WAAW,MAAM,OAAO,EAAE7D,OAAOkU,iBAAiBxO,EAAEL,GAAG,IAAIuB,EAAE,WAAW,EAAEH,EAAE,CAACsx9C,gBAAgB,CAACvz9C,cAAa,IAAKoC,EAAExG,UAAUw09C,YAAY,WAAW,MAAM,EAAE,EAAEhu9C,EAAExG,UAAUon+B,SAAS,WAAW,OAAO5g+B,CAAC,EAAEA,EAAEox9C,iBAAiB,SAASl49C,EAAED,EAAEE,GAAG,IAAIuB,EAAEsF,EAAEqx9C,uBAAuBn49C,EAAED,EAAEE,GAAG,GAAGuB,GAAG,EAAE,OAAOA,EAAE,IAAIb,EAAEiF,EAAEkE,QAAQ/J,EAAE8E,GAAGmy9C,SAASh39C,EAAE6E,GAAG3D,EAAE0E,EAAEkE,QAAQ/J,EAAE6D,GAAGoz9C,SAASh39C,EAAE4D,GAAGlC,EAAEkE,EAAEkE,QAAQ7J,EAAE4E,GAAGmy9C,SAASj39C,EAAE8E,GAAGjD,EAAEgE,EAAEkE,QAAQ7J,EAAE2D,GAAGoz9C,SAASj39C,EAAE6D,GAAG,OAAOjD,EAAE629C,aAAa519C,GAAGu19C,aAAaj29C,EAAEs29C,aAAa919C,IAAIq29C,QAAQ,EAAEjx9C,EAAEsx9C,aAAa,SAASp49C,EAAED,EAAEE,EAAEuB,GAAG,OAAOxB,EAAEooN,SAAS5mN,GAAG219C,aAAap39C,EAAEqoN,SAASnoN,IAAI839C,QAAQ,EAAEjx9C,EAAEg3L,aAAa,SAAS99L,EAAED,EAAEE,EAAEuB,GAAG,IAAIb,EAAEiF,EAAEkE,QAAQtI,EAAEoC,GAAGuz9C,aAAal39C,EAAE2D,GAAG4z9C,aAAa5x9C,EAAEkE,QAAQ/J,EAAE8E,GAAGsy9C,aAAan39C,EAAE6E,IAAI3D,EAAE0E,EAAEkE,QAAQtI,EAAEqD,GAAGsy9C,aAAal39C,EAAE4E,GAAG2y9C,aAAa5x9C,EAAEkE,QAAQ/J,EAAE6D,GAAGuz9C,aAAan39C,EAAE4D,IAAIlC,EAAEf,EAAEqiL,SAAS9hL,GAAGU,EAAEgE,EAAEkE,QAAQtI,EAAEqD,GAAGsy9C,aAAal39C,EAAE4E,GAAG2y9C,aAAa5x9C,EAAEkE,QAAQ9J,EAAE4D,GAAGuz9C,aAAal39C,EAAE2D,IAAIX,EAAE2C,EAAEkE,QAAQtI,EAAEoC,GAAGuz9C,aAAal39C,EAAE2D,GAAG4z9C,aAAa5x9C,EAAEkE,QAAQ9J,EAAE6E,GAAGsy9C,aAAal39C,EAAE4E,IAAIzB,EAAExB,EAAEohL,SAAS//K,GAAGo09C,WAAW319C,GAAGw19C,cAAcz19C,EAAEmE,EAAEkE,QAAQ9J,EAAE6E,GAAGmy9C,QAAQpx9C,EAAEkE,QAAQ/J,EAAE8E,GAAGsy9C,aAAan39C,EAAE6E,GAAG2y9C,aAAap09C,IAAI8z9C,cAAcxz9C,EAAEkC,EAAEkE,QAAQ/J,EAAE8E,GAAGsy9C,aAAan39C,EAAE6E,GAAG2y9C,aAAa5x9C,EAAEkE,QAAQ9J,EAAE4D,GAAGuz9C,aAAal39C,EAAE2D,IAAIJ,EAAEoC,EAAEkE,QAAQ/J,EAAE6D,GAAGuz9C,aAAan39C,EAAE4D,GAAG4z9C,aAAa5x9C,EAAEkE,QAAQ9J,EAAE6E,GAAGsy9C,aAAal39C,EAAE4E,IAAIvB,EAAEI,EAAEs/K,SAASx/K,GAAG6z9C,WAAW319C,GAAGw19C,cAAcn09C,EAAE6C,EAAEkE,QAAQ7J,EAAE2D,GAAGoz9C,QAAQpx9C,EAAEkE,QAAQtI,EAAEoC,GAAGuz9C,aAAal39C,EAAE2D,GAAG4z9C,aAAal09C,IAAI4z9C,cAAc,OAAO,IAAIny9C,EAAEtD,EAAEsB,EAAE,EAAE+D,EAAEqx9C,uBAAuB,SAASn49C,EAAED,EAAEE,GAAG,IAAIuB,EAAE,KAAKb,GAAGX,EAAE6E,EAAE5E,EAAE4E,IAAI9E,EAAE6D,EAAE3D,EAAE2D,GAAG1C,GAAGlB,EAAE4D,EAAE3D,EAAE2D,IAAI7D,EAAE8E,EAAE5E,EAAE4E,GAAGnD,EAAEf,EAAEO,EAAE,GAAGP,EAAE,EAAE,CAAC,GAAGO,GAAG,EAAE,OAAO4F,EAAEix9C,OAAOr29C,GAAGF,EAAEb,EAAEO,CAAC,KAAK,CAAC,KAAKP,EAAE,GAAG,OAAOmG,EAAEix9C,OAAOr29C,GAAG,GAAGR,GAAG,EAAE,OAAO4F,EAAEix9C,OAAOr29C,GAAGF,GAAGb,EAAEO,CAAC,CAAC,IAAIU,EAAEkF,EAAEmx9C,gBAAgBz29C,EAAE,OAAOE,GAAGE,IAAIF,GAAGE,EAAEkF,EAAEix9C,OAAOr29C,GAAG,CAAC,EAAEoF,EAAEix9C,OAAO,SAAS/39C,GAAG,OAAOA,EAAE,EAAE,EAAEA,EAAE,GAAG,EAAE,CAAC,EAAE2G,EAAEsx9C,gBAAgBl09C,IAAI,WAAW,OAAO,KAAK,EAAE7D,OAAOkU,iBAAiBtN,EAAEH,GAAG,IAAIH,EAAE,WAAW,EAAEP,EAAE,CAACN,EAAE,CAACjB,cAAa,GAAI2B,EAAE,CAAC3B,cAAa,GAAIW,EAAE,CAACX,cAAa,GAAI+B,EAAE,CAAC/B,cAAa,IAAKuB,EAAEN,EAAE5B,IAAI,WAAW,OAAO,CAAC,EAAEkC,EAAEI,EAAEtC,IAAI,WAAW,OAAO,CAAC,EAAEkC,EAAEZ,EAAEtB,IAAI,WAAW,OAAO,CAAC,EAAEkC,EAAEQ,EAAE1C,IAAI,WAAW,OAAO,CAAC,EAAEyC,EAAElG,UAAU+09C,YAAY,SAASr19C,EAAED,EAAEE,GAAG,EAAEuG,EAAElG,UAAUklB,KAAK,WAAW,EAAEhf,EAAElG,UAAUi19C,YAAY,SAASv19C,EAAED,GAAG,EAAEyG,EAAElG,UAAU+39C,cAAc,WAAW,EAAE7x9C,EAAElG,UAAUg49C,kBAAkB,SAASt49C,GAAG,EAAEwG,EAAElG,UAAUmmjC,aAAa,WAAW,EAAEjgjC,EAAElG,UAAUi49C,KAAK,SAASv49C,GAAG,EAAEwG,EAAElG,UAAU6wB,MAAM,WAAW,EAAE3qB,EAAElG,UAAUk49C,eAAe,SAASx49C,GAAG,EAAEwG,EAAElG,UAAUogI,KAAK,WAAW,EAAEl6H,EAAElG,UAAUqo0B,KAAK,SAAS3o0B,GAAG,EAAEwG,EAAElG,UAAUm49C,kBAAkB,WAAW,EAAEjy9C,EAAElG,UAAUw09C,YAAY,WAAW,MAAM,CAACjw9C,EAAE,EAAE2B,EAAElG,UAAUon+B,SAAS,WAAW,OAAOlh+B,CAAC,EAAEtG,OAAOkU,iBAAiB5N,EAAEP,GAAG,IAAIM,EAAE,WAAW,EAAEZ,EAAE,SAAS3F,GAAG,SAASD,IAAIC,EAAEQ,KAAKI,KAAK,6DAA6D,CAAC,OAAOZ,IAAID,EAAEK,UAAUJ,GAAGD,EAAEO,UAAUJ,OAAOY,OAAOd,GAAGA,EAAEM,WAAWP,EAAEO,UAAUO,YAAYd,EAAEA,EAAEO,UAAUw09C,YAAY,WAAW,MAAM,EAAE,EAAE/09C,EAAEO,UAAUon+B,SAAS,WAAW,OAAO3n+B,CAAC,EAAEA,CAAC,CAAzR,CAA2RwG,GAAGF,EAAE,WAAW,EAAEA,EAAEqy9C,UAAU,SAAS149C,EAAED,EAAEE,EAAEuB,EAAEb,GAAG,IAAI,IAAIO,EAAE,EAAEQ,EAAE3B,EAAE2B,EAAE3B,EAAEY,EAAEe,IAAIzB,EAAEuB,EAAEN,GAAGlB,EAAE0B,GAAGR,GAAG,EAAEmF,EAAEg3M,YAAY,SAASr9M,GAAG,MAAM,CAAC,iBAAiB,MAAMA,EAAE,EAAE,IAAIsE,EAAE,SAAStE,IAAI,GAAGY,KAAKiE,EAAE,KAAKjE,KAAKgD,EAAE,KAAKhD,KAAKuD,EAAE,KAAK,IAAInD,UAAUC,OAAOL,KAAKiE,EAAE,EAAEjE,KAAKgD,EAAE,EAAEhD,KAAKuD,EAAE,OAAO,GAAG,IAAInD,UAAUC,OAAO,CAAC,IAAIlB,EAAEiB,UAAU,GAAGJ,KAAKiE,EAAE9E,EAAE8E,EAAEjE,KAAKgD,EAAE7D,EAAE6D,EAAEhD,KAAKuD,EAAE,CAAC,MAAM,GAAG,IAAInD,UAAUC,QAAQ,GAAG,iBAAiBD,UAAU,IAAI,iBAAiBA,UAAU,GAAG,CAAC,IAAIf,EAAEe,UAAU,GAAGQ,EAAER,UAAU,GAAGJ,KAAKiE,EAAE5E,EAAEW,KAAKgD,EAAEpC,EAAEZ,KAAKuD,EAAE,CAAC,MAAM,GAAGnD,UAAU,aAAahB,GAAGgB,UAAU,aAAahB,EAAE,CAAC,IAAIW,EAAEK,UAAU,GAAGE,EAAEF,UAAU,GAAGJ,KAAKiE,EAAElE,EAAEiD,EAAE1C,EAAEiD,EAAEjD,EAAE0C,EAAEjD,EAAEwD,EAAEvD,KAAKgD,EAAE1C,EAAE2D,EAAElE,EAAEwD,EAAExD,EAAEkE,EAAE3D,EAAEiD,EAAEvD,KAAKuD,EAAExD,EAAEkE,EAAE3D,EAAE0C,EAAE1C,EAAE2D,EAAElE,EAAEiD,CAAC,MAAM,GAAG5C,UAAU,aAAa+D,GAAG/D,UAAU,aAAa+D,EAAE,CAAC,IAAIrD,EAAEV,UAAU,GAAGY,EAAEZ,UAAU,GAAGJ,KAAKiE,EAAEnD,EAAEkC,EAAEhC,EAAEgC,EAAEhD,KAAKgD,EAAEhC,EAAEiD,EAAEnD,EAAEmD,EAAEjE,KAAKuD,EAAEzC,EAAEmD,EAAEjD,EAAEgC,EAAEhC,EAAEiD,EAAEnD,EAAEkC,CAAC,OAAO,GAAG,IAAI5C,UAAUC,OAAO,CAAC,IAAIgC,EAAEjC,UAAU,GAAGoC,EAAEpC,UAAU,GAAGS,EAAET,UAAU,GAAGJ,KAAKiE,EAAE5B,EAAErC,KAAKgD,EAAER,EAAExC,KAAKuD,EAAE1C,CAAC,MAAM,GAAG,IAAIT,UAAUC,OAAO,CAAC,IAAIyC,EAAE1C,UAAU,GAAGwC,EAAExC,UAAU,GAAGsC,EAAEtC,UAAU,GAAG+B,EAAE/B,UAAU,GAAGuC,EAAEG,EAAEE,EAAEJ,EAAEI,EAAEA,EAAEJ,EAAEqB,EAAEnB,EAAEmB,EAAEL,EAAEd,EAAEmB,EAAErB,EAAEI,EAAEJ,EAAEqB,EAAEnB,EAAEE,EAAEI,EAAEV,EAAEM,EAAEb,EAAEa,EAAEC,EAAEd,EAAE8B,EAAEvB,EAAEuB,EAAEJ,EAAEnB,EAAEuB,EAAE9B,EAAEa,EAAEb,EAAE8B,EAAEvB,EAAEM,EAAEhD,KAAKiE,EAAEjB,EAAEa,EAAEZ,EAAEW,EAAE5D,KAAKgD,EAAEI,EAAEQ,EAAEjB,EAAEkB,EAAE7D,KAAKuD,EAAEZ,EAAEM,EAAEG,EAAEJ,CAAC,CAAC,EAAEU,EAAEhE,UAAUqo0B,KAAK,WAAW,IAAI3o0B,EAAEY,KAAKgD,EAAEhD,KAAKuD,EAAE,GAAGN,EAAEqpC,MAAMltC,IAAI6D,EAAE26vB,WAAWx+vB,GAAG,MAAM,IAAI2F,EAAE,OAAO3F,CAAC,EAAEsE,EAAEhE,UAAUi49C,KAAK,WAAW,IAAIv49C,EAAEY,KAAKiE,EAAEjE,KAAKuD,EAAE,GAAGN,EAAEqpC,MAAMltC,IAAI6D,EAAE26vB,WAAWx+vB,GAAG,MAAM,IAAI2F,EAAE,OAAO3F,CAAC,EAAEsE,EAAEhE,UAAU+39C,cAAc,WAAW,IAAIr49C,EAAE,IAAI+E,EAAE,OAAO/E,EAAE6E,EAAEjE,KAAK239C,OAAOv49C,EAAE4D,EAAEhD,KAAK+n0B,OAAO3o0B,CAAC,EAAEsE,EAAEhE,UAAUw09C,YAAY,WAAW,MAAM,EAAE,EAAExw9C,EAAEhE,UAAUon+B,SAAS,WAAW,OAAOpj+B,CAAC,EAAEA,EAAEw5L,aAAa,SAAS99L,EAAED,EAAEE,EAAEuB,GAAG,IAAIb,EAAEX,EAAE4D,EAAE7D,EAAE6D,EAAE1C,EAAEnB,EAAE8E,EAAE7E,EAAE6E,EAAEnD,EAAE1B,EAAE6E,EAAE9E,EAAE6D,EAAE7D,EAAE8E,EAAE7E,EAAE4D,EAAEhC,EAAE3B,EAAE2D,EAAEpC,EAAEoC,EAAEX,EAAEzB,EAAEqD,EAAE5E,EAAE4E,EAAEzB,EAAEnD,EAAE4E,EAAErD,EAAEoC,EAAEpC,EAAEqD,EAAE5E,EAAE2D,EAAEnC,EAAEd,EAAEsC,EAAErB,EAAEV,EAAEwC,GAAGxC,EAAEkC,EAAEH,EAAEvB,GAAGD,EAAE+B,GAAG5B,EAAEF,EAAEf,EAAEyC,GAAG3B,EAAE,GAAGoC,EAAEqpC,MAAMxpC,IAAIG,EAAE26vB,WAAW96vB,IAAIG,EAAEqpC,MAAM1pC,IAAIK,EAAE26vB,WAAWh7vB,GAAG,MAAM,IAAImC,EAAE,OAAO,IAAIZ,EAAErB,EAAEF,EAAE,EAAE,IAAIwB,EAAE,SAAShF,IAAI,GAAGY,KAAK+39C,MAAM,KAAK/39C,KAAKg49C,MAAM,KAAKh49C,KAAKi49C,MAAM,KAAKj49C,KAAKk49C,MAAM,KAAK,IAAI939C,UAAUC,OAAOL,KAAK0wD,YAAY,GAAG,IAAItwD,UAAUC,QAAQ,GAAGD,UAAU,aAAa+D,EAAE,CAAC,IAAIhF,EAAEiB,UAAU,GAAGJ,KAAK0wD,KAAKvxD,EAAE8E,EAAE9E,EAAE8E,EAAE9E,EAAE6D,EAAE7D,EAAE6D,EAAE,MAAM,GAAG5C,UAAU,aAAahB,EAAE,CAAC,IAAIC,EAAEe,UAAU,GAAGJ,KAAK0wD,KAAKrxD,EAAE,OAAO,GAAG,IAAIe,UAAUC,OAAO,CAAC,IAAIO,EAAER,UAAU,GAAGL,EAAEK,UAAU,GAAGJ,KAAK0wD,KAAK9vD,EAAEqD,EAAElE,EAAEkE,EAAErD,EAAEoC,EAAEjD,EAAEiD,EAAE,MAAM,GAAG,IAAI5C,UAAUC,OAAO,CAAC,IAAIC,EAAEF,UAAU,GAAGU,EAAEV,UAAU,GAAGY,EAAEZ,UAAU,GAAGiC,EAAEjC,UAAU,GAAGJ,KAAK0wD,KAAKpwD,EAAEQ,EAAEE,EAAEqB,EAAE,CAAC,EAAEmD,EAAE,CAACgv9C,iBAAiB,CAAC1w9C,cAAa,IAAKM,EAAE1E,UAAUorlC,QAAQ,WAAW,OAAO9qlC,KAAKmrO,WAAWnrO,KAAKg7K,WAAW,EAAE52K,EAAE1E,UAAU6yI,OAAO,SAASnzI,GAAG,KAAKA,aAAagF,GAAG,OAAM,EAAG,IAAIjF,EAAEC,EAAE,OAAOY,KAAKuzQ,SAASp0Q,EAAEo0Q,SAASvzQ,KAAKg49C,QAAQ749C,EAAEg59C,WAAWn49C,KAAKk49C,QAAQ/49C,EAAEi59C,WAAWp49C,KAAK+39C,QAAQ549C,EAAEk59C,WAAWr49C,KAAKi49C,QAAQ949C,EAAEm59C,SAAS,EAAEl09C,EAAE1E,UAAUw9L,aAAa,SAAS99L,GAAG,GAAGY,KAAKuzQ,UAAUn0Q,EAAEm0Q,WAAWvzQ,KAAKmmW,WAAW/mW,GAAG,OAAO,IAAIgF,EAAE,IAAIjF,EAAEa,KAAK+39C,MAAM349C,EAAE249C,MAAM/39C,KAAK+39C,MAAM349C,EAAE249C,MAAM149C,EAAEW,KAAKi49C,MAAM749C,EAAE649C,MAAMj49C,KAAKi49C,MAAM749C,EAAE649C,MAAMr39C,EAAEZ,KAAKg49C,MAAM549C,EAAE449C,MAAMh49C,KAAKg49C,MAAM549C,EAAE449C,MAAMj49C,EAAEC,KAAKk49C,MAAM949C,EAAE849C,MAAMl49C,KAAKk49C,MAAM949C,EAAE849C,MAAM,OAAO,IAAI9z9C,EAAEjF,EAAEyB,EAAEvB,EAAEU,EAAE,EAAEqE,EAAE1E,UAAU6zQ,OAAO,WAAW,OAAOvzQ,KAAKg49C,MAAMh49C,KAAK+39C,KAAK,EAAE3z9C,EAAE1E,UAAUy49C,QAAQ,WAAW,OAAOn49C,KAAKg49C,KAAK,EAAE5z9C,EAAE1E,UAAUwlpC,OAAO,WAAW,GAAG,IAAI9kpC,UAAUC,OAAO,CAAC,GAAGD,UAAU,aAAa+D,EAAE,CAAC,IAAI/E,EAAEgB,UAAU,GAAG,OAAOJ,KAAKklpC,OAAO9lpC,EAAE6E,EAAE7E,EAAE4D,EAAE,CAAC,GAAG5C,UAAU,aAAagE,EAAE,CAAC,IAAIjF,EAAEiB,UAAU,GAAG,OAAOJ,KAAKuzQ,WAAWp0Q,EAAEo0Q,UAAWp0Q,EAAEk59C,WAAWr49C,KAAK+39C,OAAO549C,EAAEg59C,WAAWn49C,KAAKg49C,OAAO749C,EAAEm59C,WAAWt49C,KAAKi49C,OAAO949C,EAAEi59C,WAAWp49C,KAAKk49C,KAAM,CAAC,MAAM,GAAG,IAAI939C,UAAUC,OAAO,CAAC,IAAIhB,EAAEe,UAAU,GAAGQ,EAAER,UAAU,GAAG,OAAOJ,KAAKuzQ,UAAWl0Q,GAAGW,KAAK+39C,OAAO149C,GAAGW,KAAKg49C,OAAOp39C,GAAGZ,KAAKi49C,OAAOr39C,GAAGZ,KAAKk49C,KAAM,CAAC,EAAE9z9C,EAAE1E,UAAUymW,WAAW,WAAW,GAAG,IAAI/lW,UAAUC,OAAO,CAAC,GAAGD,UAAU,aAAagE,EAAE,CAAC,IAAIhF,EAAEgB,UAAU,GAAG,OAAOJ,KAAKuzQ,WAAWn0Q,EAAEm0Q,YAAYn0Q,EAAE249C,MAAM/39C,KAAKg49C,OAAO549C,EAAE449C,MAAMh49C,KAAK+39C,OAAO349C,EAAE649C,MAAMj49C,KAAKk49C,OAAO949C,EAAE849C,MAAMl49C,KAAKi49C,MAAM,CAAC,GAAG739C,UAAU,aAAa+D,EAAE,CAAC,IAAIhF,EAAEiB,UAAU,GAAG,OAAOJ,KAAKmmW,WAAWhnW,EAAE8E,EAAE9E,EAAE6D,EAAE,CAAC,MAAM,GAAG,IAAI5C,UAAUC,OAAO,CAAC,IAAIhB,EAAEe,UAAU,GAAGQ,EAAER,UAAU,GAAG,OAAOJ,KAAKuzQ,YAAYl0Q,EAAEW,KAAKg49C,OAAO349C,EAAEW,KAAK+39C,OAAOn39C,EAAEZ,KAAKk49C,OAAOt39C,EAAEZ,KAAKi49C,MAAM,CAAC,EAAE7z9C,EAAE1E,UAAU449C,QAAQ,WAAW,OAAOt49C,KAAKi49C,KAAK,EAAE7z9C,EAAE1E,UAAU249C,QAAQ,WAAW,OAAOr49C,KAAK+39C,KAAK,EAAE3z9C,EAAE1E,UAAU649C,gBAAgB,WAAW,GAAG,IAAIn49C,UAAUC,QAAQ,GAAGD,UAAU,aAAa+D,EAAE,CAAC,IAAI/E,EAAEgB,UAAU,GAAGJ,KAAKu49C,gBAAgBn59C,EAAE6E,EAAE7E,EAAE4D,EAAE,MAAM,GAAG5C,UAAU,aAAagE,EAAE,CAAC,IAAIjF,EAAEiB,UAAU,GAAG,GAAGjB,EAAEo0Q,SAAS,OAAO,KAAKvzQ,KAAKuzQ,UAAUvzQ,KAAK+39C,MAAM549C,EAAEk59C,UAAUr49C,KAAKg49C,MAAM749C,EAAEg59C,UAAUn49C,KAAKi49C,MAAM949C,EAAEm59C,UAAUt49C,KAAKk49C,MAAM/49C,EAAEi59C,YAAYj59C,EAAE449C,MAAM/39C,KAAK+39C,QAAQ/39C,KAAK+39C,MAAM549C,EAAE449C,OAAO549C,EAAE649C,MAAMh49C,KAAKg49C,QAAQh49C,KAAKg49C,MAAM749C,EAAE649C,OAAO749C,EAAE849C,MAAMj49C,KAAKi49C,QAAQj49C,KAAKi49C,MAAM949C,EAAE849C,OAAO949C,EAAE+49C,MAAMl49C,KAAKk49C,QAAQl49C,KAAKk49C,MAAM/49C,EAAE+49C,OAAO,OAAO,GAAG,IAAI939C,UAAUC,OAAO,CAAC,IAAIhB,EAAEe,UAAU,GAAGQ,EAAER,UAAU,GAAGJ,KAAKuzQ,UAAUvzQ,KAAK+39C,MAAM149C,EAAEW,KAAKg49C,MAAM349C,EAAEW,KAAKi49C,MAAMr39C,EAAEZ,KAAKk49C,MAAMt39C,IAAIvB,EAAEW,KAAK+39C,QAAQ/39C,KAAK+39C,MAAM149C,GAAGA,EAAEW,KAAKg49C,QAAQh49C,KAAKg49C,MAAM349C,GAAGuB,EAAEZ,KAAKi49C,QAAQj49C,KAAKi49C,MAAMr39C,GAAGA,EAAEZ,KAAKk49C,QAAQl49C,KAAKk49C,MAAMt39C,GAAG,CAAC,EAAEwD,EAAE1E,UAAUytW,UAAU,WAAW,GAAGntW,KAAKuzQ,SAAS,OAAO,EAAE,IAAIn0Q,EAAEY,KAAKmrO,WAAWhsO,EAAEa,KAAKg7K,YAAY,OAAO57K,EAAED,EAAEC,EAAED,CAAC,EAAEiF,EAAE1E,UAAUyrO,SAAS,WAAW,OAAOnrO,KAAKuzQ,SAAS,EAAEvzQ,KAAKg49C,MAAMh49C,KAAK+39C,KAAK,EAAE3z9C,EAAE1E,UAAUmzQ,UAAU,SAASzzQ,GAAG,IAAID,EAAEC,EAAE,OAAOY,KAAKuzQ,SAASp0Q,EAAEo0Q,SAAS,GAAG,EAAEp0Q,EAAEo0Q,SAAS,EAAEvzQ,KAAK+39C,MAAM549C,EAAE449C,OAAO,EAAE/39C,KAAK+39C,MAAM549C,EAAE449C,MAAM,EAAE/39C,KAAKi49C,MAAM949C,EAAE849C,OAAO,EAAEj49C,KAAKi49C,MAAM949C,EAAE849C,MAAM,EAAEj49C,KAAKg49C,MAAM749C,EAAE649C,OAAO,EAAEh49C,KAAKg49C,MAAM749C,EAAE649C,MAAM,EAAEh49C,KAAKk49C,MAAM/49C,EAAE+49C,OAAO,EAAEl49C,KAAKk49C,MAAM/49C,EAAE+49C,MAAM,EAAE,CAAC,EAAE9z9C,EAAE1E,UAAU05H,UAAU,SAASh6H,EAAED,GAAG,GAAGa,KAAKuzQ,SAAS,OAAO,KAAKvzQ,KAAK0wD,KAAK1wD,KAAKq49C,UAAUj59C,EAAEY,KAAKm49C,UAAU/49C,EAAEY,KAAKs49C,UAAUn59C,EAAEa,KAAKo49C,UAAUj59C,EAAE,EAAEiF,EAAE1E,UAAU6E,SAAS,WAAW,MAAM,OAAOvE,KAAK+39C,MAAM,MAAM/39C,KAAKg49C,MAAM,KAAKh49C,KAAKi49C,MAAM,MAAMj49C,KAAKk49C,MAAM,GAAG,EAAE9z9C,EAAE1E,UAAU849C,UAAU,WAAWx49C,KAAK+39C,MAAM,EAAE/39C,KAAKg49C,OAAO,EAAEh49C,KAAKi49C,MAAM,EAAEj49C,KAAKk49C,OAAO,CAAC,EAAE9z9C,EAAE1E,UAAUs7K,UAAU,WAAW,OAAOh7K,KAAKuzQ,SAAS,EAAEvzQ,KAAKk49C,MAAMl49C,KAAKi49C,KAAK,EAAE7z9C,EAAE1E,UAAU+49C,UAAU,WAAW,GAAGz49C,KAAKuzQ,SAAS,OAAO,EAAE,IAAIn0Q,EAAEY,KAAKmrO,WAAWhsO,EAAEa,KAAKg7K,YAAY,OAAO57K,EAAED,EAAEC,EAAED,CAAC,EAAEiF,EAAE1E,UAAUg59C,SAAS,WAAW,GAAG,IAAIt49C,UAAUC,OAAO,CAAC,IAAIjB,EAAEgB,UAAU,GAAGJ,KAAK049C,SAASt59C,EAAEA,EAAE,MAAM,GAAG,IAAIgB,UAAUC,OAAO,CAAC,IAAIlB,EAAEiB,UAAU,GAAGf,EAAEe,UAAU,GAAG,GAAGJ,KAAKuzQ,SAAS,OAAO,KAAKvzQ,KAAK+39C,OAAO549C,EAAEa,KAAKg49C,OAAO749C,EAAEa,KAAKi49C,OAAO549C,EAAEW,KAAKk49C,OAAO749C,GAAGW,KAAK+39C,MAAM/39C,KAAKg49C,OAAOh49C,KAAKi49C,MAAMj49C,KAAKk49C,QAAQl49C,KAAKw49C,WAAW,CAAC,EAAEp09C,EAAE1E,UAAUk9B,SAAS,WAAW,GAAG,IAAIx8B,UAAUC,OAAO,CAAC,GAAGD,UAAU,aAAagE,EAAE,CAAC,IAAIhF,EAAEgB,UAAU,GAAG,OAAOJ,KAAKklpC,OAAO9lpC,EAAE,CAAC,GAAGgB,UAAU,aAAa+D,EAAE,CAAC,IAAIhF,EAAEiB,UAAU,GAAG,OAAOJ,KAAKklpC,OAAO/lpC,EAAE,CAAC,MAAM,GAAG,IAAIiB,UAAUC,OAAO,CAAC,IAAIhB,EAAEe,UAAU,GAAGQ,EAAER,UAAU,GAAG,OAAOJ,KAAKklpC,OAAO7lpC,EAAEuB,EAAE,CAAC,EAAEwD,EAAE1E,UAAUm06B,OAAO,WAAW,OAAO7z6B,KAAKuzQ,SAAS,KAAK,IAAIpvQ,GAAGnE,KAAKq49C,UAAUr49C,KAAKm49C,WAAW,GAAGn49C,KAAKs49C,UAAUt49C,KAAKo49C,WAAW,EAAE,EAAEh09C,EAAE1E,UAAUgxD,KAAK,WAAW,GAAG,IAAItwD,UAAUC,OAAOL,KAAKw49C,iBAAiB,GAAG,IAAIp49C,UAAUC,QAAQ,GAAGD,UAAU,aAAa+D,EAAE,CAAC,IAAI/E,EAAEgB,UAAU,GAAGJ,KAAK0wD,KAAKtxD,EAAE6E,EAAE7E,EAAE6E,EAAE7E,EAAE4D,EAAE5D,EAAE4D,EAAE,MAAM,GAAG5C,UAAU,aAAagE,EAAE,CAAC,IAAIjF,EAAEiB,UAAU,GAAGJ,KAAK+39C,MAAM549C,EAAE449C,MAAM/39C,KAAKg49C,MAAM749C,EAAE649C,MAAMh49C,KAAKi49C,MAAM949C,EAAE849C,MAAMj49C,KAAKk49C,MAAM/49C,EAAE+49C,KAAK,OAAO,GAAG,IAAI939C,UAAUC,OAAO,CAAC,IAAIhB,EAAEe,UAAU,GAAGQ,EAAER,UAAU,GAAGJ,KAAK0wD,KAAKrxD,EAAE4E,EAAErD,EAAEqD,EAAE5E,EAAE2D,EAAEpC,EAAEoC,EAAE,MAAM,GAAG,IAAI5C,UAAUC,OAAO,CAAC,IAAIN,EAAEK,UAAU,GAAGE,EAAEF,UAAU,GAAGU,EAAEV,UAAU,GAAGY,EAAEZ,UAAU,GAAGL,EAAEO,GAAGN,KAAK+39C,MAAMh49C,EAAEC,KAAKg49C,MAAM139C,IAAIN,KAAK+39C,MAAMz39C,EAAEN,KAAKg49C,MAAMj49C,GAAGe,EAAEE,GAAGhB,KAAKi49C,MAAMn39C,EAAEd,KAAKk49C,MAAMl39C,IAAIhB,KAAKi49C,MAAMj39C,EAAEhB,KAAKk49C,MAAMp39C,EAAE,CAAC,EAAEsD,EAAE1E,UAAU049C,QAAQ,WAAW,OAAOp49C,KAAKk49C,KAAK,EAAE9z9C,EAAE1E,UAAUupJ,SAAS,SAAS7pJ,GAAG,GAAGY,KAAKmmW,WAAW/mW,GAAG,OAAO,EAAE,IAAID,EAAE,EAAEa,KAAKg49C,MAAM549C,EAAE249C,MAAM549C,EAAEC,EAAE249C,MAAM/39C,KAAKg49C,MAAMh49C,KAAK+39C,MAAM349C,EAAE449C,QAAQ749C,EAAEa,KAAK+39C,MAAM349C,EAAE449C,OAAO,IAAI349C,EAAE,EAAE,OAAOW,KAAKk49C,MAAM949C,EAAE649C,MAAM549C,EAAED,EAAE649C,MAAMj49C,KAAKk49C,MAAMl49C,KAAKi49C,MAAM749C,EAAE849C,QAAQ749C,EAAEW,KAAKi49C,MAAM749C,EAAE849C,OAAO,IAAI/49C,EAAEE,EAAE,IAAIA,EAAEF,EAAE0D,KAAK4yF,KAAKt2F,EAAEA,EAAEE,EAAEA,EAAE,EAAE+E,EAAE1E,UAAUq19C,SAAS,WAAW,IAAI319C,EAAE,GAAG,OAAmG,IAAhCA,EAAE,IAAhCA,EAAE,IAAhCA,EAAE,GAAGA,EAAE+E,EAAE4w9C,SAAS/09C,KAAK+39C,QAAc5z9C,EAAE4w9C,SAAS/09C,KAAKg49C,QAAc7z9C,EAAE4w9C,SAAS/09C,KAAKi49C,QAAc9z9C,EAAE4w9C,SAAS/09C,KAAKk49C,MAAM,EAAE9z9C,EAAE1E,UAAUw09C,YAAY,WAAW,MAAM,CAACxv9C,EAAEvF,EAAE,EAAEiF,EAAE1E,UAAUon+B,SAAS,WAAW,OAAO1i+B,CAAC,EAAEA,EAAE+hW,WAAW,WAAW,GAAG,IAAI/lW,UAAUC,OAAO,CAAC,IAAIjB,EAAEgB,UAAU,GAAGjB,EAAEiB,UAAU,GAAGf,EAAEe,UAAU,GAAG,OAAOf,EAAE4E,IAAI7E,EAAE6E,EAAE9E,EAAE8E,EAAE7E,EAAE6E,EAAE9E,EAAE8E,IAAI5E,EAAE4E,IAAI7E,EAAE6E,EAAE9E,EAAE8E,EAAE7E,EAAE6E,EAAE9E,EAAE8E,IAAI5E,EAAE2D,IAAI5D,EAAE4D,EAAE7D,EAAE6D,EAAE5D,EAAE4D,EAAE7D,EAAE6D,IAAI3D,EAAE2D,IAAI5D,EAAE4D,EAAE7D,EAAE6D,EAAE5D,EAAE4D,EAAE7D,EAAE6D,EAAE,CAAC,GAAG,IAAI5C,UAAUC,OAAO,CAAC,IAAIO,EAAER,UAAU,GAAGL,EAAEK,UAAU,GAAGE,EAAEF,UAAU,GAAGU,EAAEV,UAAU,GAAGY,EAAE6B,KAAKgL,IAAIvN,EAAE2D,EAAEnD,EAAEmD,GAAG5B,EAAEQ,KAAK8K,IAAIrN,EAAE2D,EAAEnD,EAAEmD,GAAGzB,EAAEK,KAAKgL,IAAIjN,EAAEqD,EAAElE,EAAEkE,GAAGpD,EAAEgC,KAAK8K,IAAI/M,EAAEqD,EAAElE,EAAEkE,GAAG,QAAQzB,EAAEH,GAAOxB,EAAEG,IAAKA,EAAE6B,KAAKgL,IAAIvN,EAAE0C,EAAElC,EAAEkC,GAAGX,EAAEQ,KAAK8K,IAAIrN,EAAE0C,EAAElC,EAAEkC,GAAGR,EAAEK,KAAKgL,IAAIjN,EAAEoC,EAAEjD,EAAEiD,GAAGnC,EAAEgC,KAAK8K,IAAI/M,EAAEoC,EAAEjD,EAAEiD,GAAKR,EAAEH,GAAMxB,EAAEG,GAAI,CAAC,EAAEwE,EAAEgv9C,iBAAiBrx9C,IAAI,WAAW,OAAO,kBAAkB,EAAE7D,OAAOkU,iBAAiBpP,EAAEoB,GAAG,IAAIhB,EAAE,CAACsk8B,QAAQ,iCAAiC6vhB,aAAa,wBAAwBC,OAAO,MAAMC,WAAW,cAAcC,iBAAiB,wBAAwBC,WAAW,uBAAuB9z9C,EAAE,SAAS7F,GAAGY,KAAKg59C,gBAAgB559C,GAAG,IAAImJ,EAAE,EAAEtD,EAAEvF,UAAU2mE,KAAK,SAASjnE,GAAG,IAAID,EAAEE,EAAEuB,EAAExB,EAAEA,EAAEqN,QAAQ,UAAU,KAAK,IAAI1M,EAAEyE,EAAEsk8B,QAAQ127B,KAAKhT,GAAG,IAAI,IAAIA,EAAEmsD,OAAO,YAAYxrD,EAAEyE,EAAEm09C,aAAavm9C,KAAKhT,IAAI,QAAG,GAAQW,IAAIV,EAAEU,EAAE,GAAGwP,cAAc3O,EAAEb,EAAE,GAAGiG,EAAE3G,KAAKF,EAAE6G,EAAE3G,GAAGkB,MAAMP,KAAK,CAACY,WAAM,IAASzB,EAAE,MAAM,IAAIqoB,MAAM,uBAAuBpoB,GAAG,OAAOD,CAAC,EAAE8F,EAAEvF,UAAUqU,MAAM,SAAS3U,GAAG,OAAOY,KAAKi59C,gBAAgB759C,EAAE,EAAE6F,EAAEvF,UAAUu59C,gBAAgB,SAAS759C,GAAG,IAAID,EAAEC,EAAE859C,kBAAkB3p9C,cAAc,IAAI7J,EAAEvG,GAAG,OAAO,KAAK,IAAIE,EAAEF,EAAEyxD,cAAc,OAAOxxD,EAAEipE,UAAUhpE,EAAE,SAASA,EAAE,IAAIqG,EAAEvG,GAAGoB,MAAMP,KAAK,CAACZ,IAAI,GAAG,EAAE,IAAIsG,EAAE,CAACqvI,WAAW,SAAS31I,GAAG,OAAOA,EAAE6E,EAAE,IAAI7E,EAAE4D,CAAC,EAAEmyI,MAAM,SAAS/1I,GAAG,OAAOsG,EAAEqvI,WAAWn1I,KAAKI,KAAKZ,EAAE+59C,aAAaA,aAAa,GAAG,EAAEC,WAAW,SAASh69C,GAAG,IAAI,IAAID,EAAE,GAAGE,EAAE,EAAEuB,EAAExB,EAAEi69C,YAAYh59C,OAAOhB,EAAEuB,IAAIvB,EAAEF,EAAE0C,KAAK,IAAI6D,EAAEyvI,MAAM50I,MAAMP,KAAK,CAACZ,EAAEi69C,YAAYh69C,KAAK,KAAK,OAAOF,EAAE0N,KAAK,IAAI,EAAEuod,WAAW,SAASh2d,GAAG,IAAI,IAAID,EAAE,GAAGE,EAAE,EAAEuB,EAAExB,EAAE0wlC,QAAQqpY,aAAa949C,OAAOhB,EAAEuB,IAAIvB,EAAEF,EAAE0C,KAAK6D,EAAEqvI,WAAWx0I,MAAMP,KAAK,CAACZ,EAAE0wlC,QAAQqpY,aAAa959C,MAAM,OAAOF,EAAE0N,KAAK,IAAI,EAAEys9C,WAAW,SAASl69C,GAAG,IAAI,IAAID,EAAE,GAAGE,EAAE,EAAEuB,EAAExB,EAAE0wlC,QAAQqpY,aAAa949C,OAAOhB,EAAEuB,IAAIvB,EAAEF,EAAE0C,KAAK6D,EAAEqvI,WAAWx0I,MAAMP,KAAK,CAACZ,EAAE0wlC,QAAQqpY,aAAa959C,MAAM,OAAOF,EAAE0N,KAAK,IAAI,EAAE0s9C,gBAAgB,SAASn69C,GAAG,IAAI,IAAID,EAAE,GAAGE,EAAE,EAAEuB,EAAExB,EAAEi69C,YAAYh59C,OAAOhB,EAAEuB,IAAIvB,EAAEF,EAAE0C,KAAK,IAAI6D,EAAE0vd,WAAW70d,MAAMP,KAAK,CAACZ,EAAEi69C,YAAYh69C,KAAK,KAAK,OAAOF,EAAE0N,KAAK,IAAI,EAAEo4B,QAAQ,SAAS7lC,GAAG,IAAID,EAAE,GAAGA,EAAE0C,KAAK,IAAI6D,EAAE0vd,WAAW70d,MAAMP,KAAK,CAACZ,EAAEo69C,SAAS,KAAK,IAAI,IAAIn69C,EAAE,EAAEuB,EAAExB,EAAEq69C,OAAOp59C,OAAOhB,EAAEuB,IAAIvB,EAAEF,EAAE0C,KAAK,IAAI6D,EAAE0vd,WAAW70d,MAAMP,KAAK,CAACZ,EAAEq69C,OAAOp69C,KAAK,KAAK,OAAOF,EAAE0N,KAAK,IAAI,EAAE6s9C,aAAa,SAASt69C,GAAG,IAAI,IAAID,EAAE,GAAGE,EAAE,EAAEuB,EAAExB,EAAEi69C,YAAYh59C,OAAOhB,EAAEuB,IAAIvB,EAAEF,EAAE0C,KAAK,IAAI6D,EAAEu/B,QAAQ1kC,MAAMP,KAAK,CAACZ,EAAEi69C,YAAYh69C,KAAK,KAAK,OAAOF,EAAE0N,KAAK,IAAI,EAAE8s9C,mBAAmB,SAASv69C,GAAG,IAAI,IAAID,EAAE,GAAGE,EAAE,EAAEuB,EAAExB,EAAEi69C,YAAYh59C,OAAOhB,EAAEuB,IAAIvB,EAAEF,EAAE0C,KAAK7B,KAAKi59C,gBAAgB759C,EAAEi69C,YAAYh69C,KAAK,OAAOF,EAAE0N,KAAK,IAAI,GAAG7G,EAAE,CAACmvI,MAAM,SAAS/1I,GAAG,QAAG,IAASA,EAAE,OAAOY,KAAKg59C,gBAAgBY,cAAc,IAAIz69C,EAAEC,EAAEizB,OAAOztB,MAAMJ,EAAEo09C,QAAQ,OAAO549C,KAAKg59C,gBAAgBY,YAAY,IAAIz19C,EAAEghC,OAAOklI,WAAWlrK,EAAE,IAAIgmC,OAAOklI,WAAWlrK,EAAE,KAAK,EAAEi69C,WAAW,SAASh69C,GAAG,QAAG,IAASA,EAAE,OAAOY,KAAKg59C,gBAAgBa,mBAAmB,IAAI,IAAI169C,EAAEE,EAAED,EAAEizB,OAAOztB,MAAM,KAAKhE,EAAE,GAAGb,EAAE,EAAEO,EAAEjB,EAAEgB,OAAON,EAAEO,IAAIP,EAAEZ,EAAEE,EAAEU,GAAG0M,QAAQjI,EAAEu09C,WAAW,MAAMn49C,EAAEiB,KAAKmE,EAAEmvI,MAAM50I,MAAMP,KAAK,CAACb,KAAK,OAAOa,KAAKg59C,gBAAgBa,iBAAiBj59C,EAAE,EAAEw0d,WAAW,SAASh2d,GAAG,QAAG,IAASA,EAAE,OAAOY,KAAKg59C,gBAAgBc,mBAAmB,IAAI,IAAI369C,EAAEE,EAAED,EAAEizB,OAAOztB,MAAM,KAAKhE,EAAE,GAAGb,EAAE,EAAEO,EAAEjB,EAAEgB,OAAON,EAAEO,IAAIP,EAAEZ,EAAEE,EAAEU,GAAGsyB,OAAOztB,MAAMJ,EAAEo09C,QAAQh49C,EAAEiB,KAAK,IAAIsC,EAAEghC,OAAOklI,WAAWlrK,EAAE,IAAIgmC,OAAOklI,WAAWlrK,EAAE,MAAM,OAAOa,KAAKg59C,gBAAgBc,iBAAiBl59C,EAAE,EAAE049C,WAAW,SAASl69C,GAAG,QAAG,IAASA,EAAE,OAAOY,KAAKg59C,gBAAgBe,mBAAmB,IAAI,IAAI569C,EAAEE,EAAED,EAAEizB,OAAOztB,MAAM,KAAKhE,EAAE,GAAGb,EAAE,EAAEO,EAAEjB,EAAEgB,OAAON,EAAEO,IAAIP,EAAEZ,EAAEE,EAAEU,GAAGsyB,OAAOztB,MAAMJ,EAAEo09C,QAAQh49C,EAAEiB,KAAK,IAAIsC,EAAEghC,OAAOklI,WAAWlrK,EAAE,IAAIgmC,OAAOklI,WAAWlrK,EAAE,MAAM,OAAOa,KAAKg59C,gBAAgBe,iBAAiBn59C,EAAE,EAAE249C,gBAAgB,SAASn69C,GAAG,QAAG,IAASA,EAAE,OAAOY,KAAKg59C,gBAAgBgB,wBAAwB,IAAI,IAAI769C,EAAEE,EAAED,EAAEizB,OAAOztB,MAAMJ,EAAEq09C,YAAYj49C,EAAE,GAAGb,EAAE,EAAEO,EAAEjB,EAAEgB,OAAON,EAAEO,IAAIP,EAAEZ,EAAEE,EAAEU,GAAG0M,QAAQjI,EAAEu09C,WAAW,MAAMn49C,EAAEiB,KAAKmE,EAAEovd,WAAW70d,MAAMP,KAAK,CAACb,KAAK,OAAOa,KAAKg59C,gBAAgBgB,sBAAsBp59C,EAAE,EAAEqkC,QAAQ,SAAS7lC,GAAG,QAAG,IAASA,EAAE,OAAOY,KAAKg59C,gBAAgBroQ,gBAAgB,IAAI,IAAIxxtC,EAAEE,EAAEuB,EAAEb,EAAEO,EAAElB,EAAEizB,OAAOztB,MAAMJ,EAAEq09C,YAAY/39C,EAAE,GAAGE,EAAE,EAAEqB,EAAE/B,EAAED,OAAOW,EAAEqB,IAAIrB,EAAE7B,EAAEmB,EAAEU,GAAGyL,QAAQjI,EAAEu09C,WAAW,MAAM159C,EAAE2G,EAAEovd,WAAW70d,MAAMP,KAAK,CAACb,IAAIyB,EAAEZ,KAAKg59C,gBAAgBe,iBAAiB169C,EAAEywlC,SAAS,IAAI9ulC,EAAEjB,EAAEa,EAAEE,EAAEe,KAAKjB,GAAG,OAAOZ,KAAKg59C,gBAAgBroQ,cAAc5wtC,EAAEe,EAAE,EAAE449C,aAAa,SAASt69C,GAAG,QAAG,IAASA,EAAE,OAAOY,KAAKg59C,gBAAgBiB,qBAAqB,IAAI,IAAI969C,EAAEE,EAAED,EAAEizB,OAAOztB,MAAMJ,EAAEs09C,kBAAkBl49C,EAAE,GAAGb,EAAE,EAAEO,EAAEjB,EAAEgB,OAAON,EAAEO,IAAIP,EAAEZ,EAAEE,EAAEU,GAAG0M,QAAQjI,EAAEu09C,WAAW,MAAMn49C,EAAEiB,KAAKmE,EAAEi/B,QAAQ1kC,MAAMP,KAAK,CAACb,KAAK,OAAOa,KAAKg59C,gBAAgBiB,mBAAmBr59C,EAAE,EAAE+49C,mBAAmB,SAASv69C,GAAG,QAAG,IAASA,EAAE,OAAOY,KAAKg59C,gBAAgBkB,2BAA2B,IAAI,IAAI/69C,GAAGC,EAAEA,EAAEqN,QAAQ,kBAAkB,QAAQ4lB,OAAOztB,MAAM,KAAKvF,EAAE,GAAGuB,EAAE,EAAEb,EAAEZ,EAAEkB,OAAOO,EAAEb,IAAIa,EAAEvB,EAAEwC,KAAK7B,KAAKqmE,KAAKlnE,EAAEyB,KAAK,OAAOZ,KAAKg59C,gBAAgBkB,yBAAyB769C,EAAE,GAAGoF,EAAE,SAASrF,GAAGY,KAAKosK,OAAO,IAAInnK,EAAE7F,EAAE,EAAEqF,EAAE/E,UAAUqU,MAAM,SAAS3U,GAAG,OAAOY,KAAKosK,OAAOr4J,MAAM3U,EAAE,EAAEqF,EAAE019C,aAAa,SAAS/69C,EAAED,GAAG,GAAG,IAAIiB,UAAUC,OAAO,MAAM,IAAImnB,MAAM,mBAAmB,MAAM,gBAAgBpoB,EAAE6E,EAAE,IAAI7E,EAAE4D,EAAE,KAAK7D,EAAE8E,EAAE,IAAI9E,EAAE6D,EAAE,IAAI,EAAE,IAAIoD,EAAE,SAAShH,GAAG,SAASD,EAAEA,GAAGC,EAAEQ,KAAKI,KAAKb,GAAGa,KAAK0K,KAAK,mBAAmB1K,KAAK+xB,QAAQ5yB,EAAEa,KAAK2yC,OAAM,IAAKvzC,GAAGuzC,KAAK,CAAC,OAAOvzC,IAAID,EAAEK,UAAUJ,GAAGD,EAAEO,UAAUJ,OAAOY,OAAOd,GAAGA,EAAEM,WAAWP,EAAEO,UAAUO,YAAYd,EAAEA,CAAC,CAA7M,CAA+MqoB,OAAOxc,GAAG,SAAS5L,GAAG,SAASD,IAAI,GAAGC,EAAEQ,KAAKI,MAAM,IAAII,UAAUC,OAAOjB,EAAEQ,KAAKI,WAAW,GAAG,IAAII,UAAUC,OAAO,CAAC,IAAIlB,EAAEiB,UAAU,GAAGhB,EAAEQ,KAAKI,KAAKb,EAAE,CAAC,CAAC,OAAOC,IAAID,EAAEK,UAAUJ,GAAGD,EAAEO,UAAUJ,OAAOY,OAAOd,GAAGA,EAAEM,WAAWP,EAAEO,UAAUO,YAAYd,EAAEA,EAAEO,UAAUw09C,YAAY,WAAW,MAAM,EAAE,EAAE/09C,EAAEO,UAAUon+B,SAAS,WAAW,OAAO3n+B,CAAC,EAAEA,CAAC,CAAlU,CAAoUiH,GAAG2E,GAAG,WAAW,EAAEA,GAAGrL,UAAUw09C,YAAY,WAAW,MAAM,EAAE,EAAEnp9C,GAAGrL,UAAUon+B,SAAS,WAAW,OAAO/79B,EAAE,EAAEA,GAAGqv9C,qBAAqB,WAAW,GAAG,IAAIh69C,UAAUC,OAAO0K,GAAGqv9C,qBAAqB,WAAW,GAAG,IAAIh69C,UAAUC,OAAO,CAAC,IAAIjB,EAAEgB,UAAU,GAAG,MAAM,IAAI4K,GAAG,2BAA2B,OAAO5L,EAAE,KAAKA,EAAE,IAAI,CAAC,EAAE2L,GAAGiprB,OAAO,WAAW,IAAM70rB,EAAE,GAAG,IAAIiB,UAAUC,OAAsB0K,GAAGiprB,OAAhB5zrB,UAAU,GAAe,WAAW,GAAG,IAAIA,UAAUC,SAAwBlB,EAAEiB,UAAU,IAAzBA,UAAU,IAAsB,MAAM,OAAOjB,EAAE,IAAI6L,GAAG,IAAIA,GAAG7L,EAAE,EAAE4L,GAAGwnI,OAAO,WAAW,IAAInzI,EAAED,EAAEE,EAAE,GAAG,IAAIe,UAAUC,OAAqC0K,GAAGwnI,OAAjCnzI,EAAEgB,UAAU,GAAGjB,EAAEiB,UAAU,GAAiB,WAAW,GAAG,IAAIA,UAAUC,SAASjB,EAAEgB,UAAU,GAAkBf,EAAEe,UAAU,KAA3BjB,EAAEiB,UAAU,IAAqBmyI,OAAOnzI,IAAI,MAAM,IAAI4L,GAAG,YAAY5L,EAAE,oBAAoBD,GAAG,OAAOE,EAAE,KAAKA,EAAE,IAAI,EAAE,IAAI4L,GAAG,WAAWjL,KAAKqn9C,QAAQ,KAAKrn9C,KAAKq69C,YAAY569C,MAAM,GAAG29H,OAAO/tG,KAAI,WAAW,OAAO5vB,MAAM,EAAE,IAAGO,KAAKs69C,OAAO,IAAI769C,MAAM,GAAG29H,KAAK,MAAMp9H,KAAKu69C,cAAc,KAAKv69C,KAAKw69C,UAAU,KAAKx69C,KAAKy69C,IAAI,KAAKz69C,KAAK069C,IAAI,KAAK169C,KAAK269C,gBAAgB,KAAK369C,KAAKs69C,OAAO,GAAG,IAAIn29C,EAAEnE,KAAKs69C,OAAO,GAAG,IAAIn29C,EAAEnE,KAAKy69C,IAAIz69C,KAAKs69C,OAAO,GAAGt69C,KAAK069C,IAAI169C,KAAKs69C,OAAO,GAAGt69C,KAAKqn9C,QAAQ,CAAC,EAAE/78C,GAAG,CAACsv9C,eAAe,CAAC929C,cAAa,GAAI+29C,aAAa,CAAC/29C,cAAa,GAAIg39C,UAAU,CAACh39C,cAAa,GAAIi39C,gBAAgB,CAACj39C,cAAa,GAAIk39C,mBAAmB,CAACl39C,cAAa,GAAIm39C,uBAAuB,CAACn39C,cAAa,IAAKmH,GAAGvL,UAAUw79C,qBAAqB,SAAS979C,EAAED,GAAG,OAAOa,KAAKm79C,sBAAsBn79C,KAAKu69C,cAAcn79C,GAAGD,EAAE,EAAE8L,GAAGvL,UAAU079C,mBAAmB,WAAW,IAAIh89C,EAAE,IAAImG,EAAE,OAAOvF,KAAKq79C,cAAcj89C,EAAEglF,OAAO,aAAapkF,KAAKw69C,WAAWp79C,EAAEglF,OAAO,WAAWpkF,KAAKs79C,eAAel89C,EAAEglF,OAAO,cAAchlF,EAAEmF,UAAU,EAAE0G,GAAGvL,UAAU679C,oBAAoB,SAASn89C,EAAED,EAAEE,EAAEuB,GAAGZ,KAAKq69C,YAAY,GAAG,GAAGj79C,EAAEY,KAAKq69C,YAAY,GAAG,GAAGl79C,EAAEa,KAAKq69C,YAAY,GAAG,GAAGh79C,EAAEW,KAAKq69C,YAAY,GAAG,GAAGz59C,EAAEZ,KAAKqn9C,QAAQrn9C,KAAKw79C,iBAAiBp89C,EAAED,EAAEE,EAAEuB,EAAE,EAAEqK,GAAGvL,UAAU+79C,mBAAmB,WAAW,OAAOz79C,KAAKqn9C,OAAO,EAAEp88C,GAAGvL,UAAUy79C,oBAAoB,WAAW,GAAG,IAAI/69C,UAAUC,OAAO,OAAOL,KAAKu69C,gBAAgBv69C,KAAKu69C,cAAc969C,MAAM,GAAG29H,OAAO/tG,KAAI,WAAW,OAAO5vB,MAAM,EAAE,IAAGO,KAAKm79C,oBAAoB,GAAGn79C,KAAKm79C,oBAAoB,SAAS,GAAG,IAAI/69C,UAAUC,OAAO,CAAC,IAAIjB,EAAEgB,UAAU,GAAGJ,KAAK079C,gBAAgBt89C,EAAE,GAAGY,KAAK079C,gBAAgBt89C,EAAE,IAAIY,KAAKu69C,cAAcn79C,GAAG,GAAG,EAAEY,KAAKu69C,cAAcn79C,GAAG,GAAG,IAAIY,KAAKu69C,cAAcn79C,GAAG,GAAG,EAAEY,KAAKu69C,cAAcn79C,GAAG,GAAG,EAAE,CAAC,EAAE6L,GAAGvL,UAAUi89C,SAAS,WAAW,OAAO379C,KAAK479C,mBAAmB579C,KAAKw69C,SAAS,EAAEvv9C,GAAGvL,UAAUm89C,kBAAkB,SAASz89C,GAAGY,KAAK269C,gBAAgBv79C,CAAC,EAAE6L,GAAGvL,UAAUo89C,uBAAuB,WAAW,GAAG,IAAI179C,UAAUC,OAAO,QAAQL,KAAK879C,uBAAuB,MAAM979C,KAAK879C,uBAAuB,GAAG,GAAG,IAAI179C,UAAUC,OAAO,CAAC,IAAI,IAAIjB,EAAEgB,UAAU,GAAGjB,EAAE,EAAEA,EAAEa,KAAKqn9C,QAAQlo9C,IAAI,IAAIa,KAAKs69C,OAAOn79C,GAAGu19C,SAAS109C,KAAKq69C,YAAYj79C,GAAG,MAAMY,KAAKs69C,OAAOn79C,GAAGu19C,SAAS109C,KAAKq69C,YAAYj79C,GAAG,IAAI,OAAM,EAAG,OAAM,CAAE,CAAC,EAAE6L,GAAGvL,UAAUq2zC,gBAAgB,SAAS32zC,GAAG,OAAOY,KAAKs69C,OAAOl79C,EAAE,EAAE6L,GAAGvL,UAAU279C,WAAW,WAAW,OAAOr79C,KAAK479C,oBAAoB579C,KAAKw69C,SAAS,EAAEvv9C,GAAGvL,UAAUk89C,gBAAgB,WAAW,OAAO579C,KAAKqn9C,UAAUp88C,GAAG8v9C,eAAe,EAAE9v9C,GAAGvL,UAAUg89C,gBAAgB,SAASt89C,EAAED,GAAG,OAAO8L,GAAG8w9C,oBAAoB/79C,KAAKs69C,OAAOn79C,GAAGa,KAAKq69C,YAAYj79C,GAAG,GAAGY,KAAKq69C,YAAYj79C,GAAG,GAAG,EAAE6L,GAAGvL,UAAU479C,YAAY,WAAW,OAAOt79C,KAAKqn9C,UAAUp88C,GAAGgw9C,sBAAsB,EAAEhw9C,GAAGvL,UAAU6E,SAAS,WAAW,OAAOE,EAAE019C,aAAan69C,KAAKq69C,YAAY,GAAG,GAAGr69C,KAAKq69C,YAAY,GAAG,IAAI,MAAM519C,EAAE019C,aAAan69C,KAAKq69C,YAAY,GAAG,GAAGr69C,KAAKq69C,YAAY,GAAG,IAAIr69C,KAAKo79C,oBAAoB,EAAEnw9C,GAAGvL,UAAUs89C,YAAY,SAAS589C,EAAED,GAAG,OAAOa,KAAKq69C,YAAYj79C,GAAGD,EAAE,EAAE8L,GAAGvL,UAAUu89C,eAAe,SAAS789C,GAAG,IAAI,IAAID,EAAE,EAAEA,EAAEa,KAAKqn9C,QAAQlo9C,IAAI,GAAGa,KAAKs69C,OAAOn79C,GAAGu19C,SAASt19C,GAAG,OAAM,EAAG,OAAM,CAAE,EAAE6L,GAAGvL,UAAUw89C,4BAA4B,SAAS989C,EAAED,GAAG,OAAOa,KAAKm79C,sBAAsBn79C,KAAKs69C,OAAOt69C,KAAKu69C,cAAcn79C,GAAGD,GAAG,EAAE8L,GAAGvL,UAAUw09C,YAAY,WAAW,MAAM,EAAE,EAAEjp9C,GAAGvL,UAAUon+B,SAAS,WAAW,OAAO779B,EAAE,EAAEA,GAAG8w9C,oBAAoB,SAAS389C,EAAED,EAAEE,GAAG,IAAIuB,EAAEiC,KAAKmjH,IAAI3mH,EAAE4E,EAAE9E,EAAE8E,GAAGlE,EAAE8C,KAAKmjH,IAAI3mH,EAAE2D,EAAE7D,EAAE6D,GAAG1C,GAAG,EAAE,GAAGlB,EAAEmzI,OAAOpzI,GAAGmB,EAAE,OAAO,GAAGlB,EAAEmzI,OAAOlzI,GAAGiB,EAAEM,EAAEb,EAAEa,EAAEb,MAAM,CAAC,IAAIe,EAAE+B,KAAKmjH,IAAI5mH,EAAE6E,EAAE9E,EAAE8E,GAAGjD,EAAE6B,KAAKmjH,IAAI5mH,EAAE4D,EAAE7D,EAAE6D,GAAG,KAAK1C,EAAEM,EAAEb,EAAEe,EAAEE,IAAI5B,EAAEmzI,OAAOpzI,KAAKmB,EAAEuC,KAAK8K,IAAI7M,EAAEE,GAAG,CAAC,OAAO+J,GAAGiprB,SAAS,IAAI1zrB,IAAIlB,EAAEmzI,OAAOpzI,IAAI,4BAA4BmB,CAAC,EAAE2K,GAAGkx9C,6BAA6B,SAAS/89C,EAAED,EAAEE,GAAG,IAAIuB,EAAExB,EAAE6E,EAAE9E,EAAE8E,EAAElE,EAAEX,EAAE4D,EAAE7D,EAAE6D,EAAE1C,EAAEuC,KAAK4yF,KAAK70F,EAAEA,EAAEb,EAAEA,GAAG,OAAOgL,GAAGiprB,SAAS,IAAI1zrB,IAAIlB,EAAEmzI,OAAOpzI,IAAI,gCAAgCmB,CAAC,EAAEgL,GAAGsv9C,eAAez39C,IAAI,WAAW,OAAO,CAAC,EAAEmI,GAAGuv9C,aAAa139C,IAAI,WAAW,OAAO,CAAC,EAAEmI,GAAGwv9C,UAAU339C,IAAI,WAAW,OAAO,CAAC,EAAEmI,GAAGyv9C,gBAAgB539C,IAAI,WAAW,OAAO,CAAC,EAAEmI,GAAG0v9C,mBAAmB739C,IAAI,WAAW,OAAO,CAAC,EAAEmI,GAAG2v9C,uBAAuB939C,IAAI,WAAW,OAAO,CAAC,EAAE7D,OAAOkU,iBAAiBvI,GAAGK,IAAI,IAAIJ,GAAG,SAAS9L,GAAG,SAASD,IAAIC,EAAEmB,MAAMP,KAAKI,UAAU,CAAC,OAAOhB,IAAID,EAAEK,UAAUJ,GAAGD,EAAEO,UAAUJ,OAAOY,OAAOd,GAAGA,EAAEM,WAAWP,EAAEO,UAAUO,YAAYd,EAAEA,EAAEO,UAAU089C,qBAAqB,SAASh99C,GAAG,IAAID,EAAE,IAAIiF,EAAEpE,KAAKq69C,YAAY,GAAG,GAAGr69C,KAAKq69C,YAAY,GAAG,IAAIh79C,EAAE,IAAI+E,EAAEpE,KAAKq69C,YAAY,GAAG,GAAGr69C,KAAKq69C,YAAY,GAAG,IAAI,OAAOl79C,EAAEy9B,SAASx9B,IAAIC,EAAEu9B,SAASx9B,EAAE,EAAED,EAAEO,UAAU679C,oBAAoB,WAAW,GAAG,IAAIn79C,UAAUC,OAAO,OAAOjB,EAAEM,UAAU679C,oBAAoBh79C,MAAMP,KAAKI,WAAW,IAAIjB,EAAEiB,UAAU,GAAGf,EAAEe,UAAU,GAAGQ,EAAER,UAAU,GAAG,GAAGJ,KAAKw69C,WAAU,EAAGp29C,EAAE+hW,WAAW9mW,EAAEuB,EAAEzB,IAAI,IAAIqM,GAAG8r9C,iBAAiBj49C,EAAEuB,EAAEzB,IAAI,IAAIqM,GAAG8r9C,iBAAiB129C,EAAEvB,EAAEF,GAAG,OAAOa,KAAKw69C,WAAU,GAAIr79C,EAAEozI,OAAOlzI,IAAIF,EAAEozI,OAAO3xI,MAAMZ,KAAKw69C,WAAU,GAAIx69C,KAAKqn9C,QAAQjo9C,EAAE479C,mBAAmB,KAAKh79C,KAAKqn9C,QAAQjo9C,EAAE279C,eAAe,EAAE579C,EAAEO,UAAU289C,mBAAmB,SAASj99C,EAAED,EAAEE,EAAEuB,EAAEb,GAAGA,EAAEkE,EAAEjE,KAAKs89C,mBAAmBl99C,EAAE6E,EAAE9E,EAAE8E,EAAE5E,EAAE4E,EAAErD,EAAEqD,GAAGlE,EAAEiD,EAAEhD,KAAKs89C,mBAAmBl99C,EAAE4D,EAAE7D,EAAE6D,EAAE3D,EAAE2D,EAAEpC,EAAEoC,GAAG5D,EAAE6E,GAAGlE,EAAEkE,EAAE7E,EAAE4D,GAAGjD,EAAEiD,EAAE7D,EAAE8E,GAAGlE,EAAEkE,EAAE9E,EAAE6D,GAAGjD,EAAEiD,EAAE3D,EAAE4E,GAAGlE,EAAEkE,EAAE5E,EAAE2D,GAAGjD,EAAEiD,EAAEpC,EAAEqD,GAAGlE,EAAEkE,EAAErD,EAAEoC,GAAGjD,EAAEiD,CAAC,EAAE7D,EAAEO,UAAU689C,4BAA4B,SAASn99C,EAAEC,EAAEuB,EAAEb,GAAG,IAAIO,EAAE,KAAK,IAAIA,EAAEoD,EAAEw5L,aAAa99L,EAAEC,EAAEuB,EAAEb,EAAE,CAAC,MAAMe,GAAG,KAAKA,aAAaiE,GAAG,MAAMjE,EAAER,EAAEnB,EAAEq99C,gBAAgBp99C,EAAEC,EAAEuB,EAAEb,EAAE,CAAC,OAAOO,CAAC,EAAEnB,EAAEO,UAAUw9L,aAAa,SAAS99L,EAAEC,EAAEuB,EAAEb,GAAG,IAAIO,EAAEN,KAAKy89C,8BAA8Br99C,EAAEC,EAAEuB,EAAEb,GAAG,OAAOC,KAAKo89C,qBAAqB979C,KAAKA,EAAE,IAAI6D,EAAEhF,EAAEq99C,gBAAgBp99C,EAAEC,EAAEuB,EAAEb,KAAK,OAAOC,KAAK269C,iBAAiB369C,KAAK269C,gBAAgB+B,YAAYp89C,GAAGA,CAAC,EAAEnB,EAAEO,UAAU489C,mBAAmB,SAASl99C,EAAED,EAAEE,EAAEuB,GAAG,IAAIb,EAAEX,EAAEkB,EAAEuC,KAAKmjH,IAAIjmH,GAAG,OAAO8C,KAAKmjH,IAAI7mH,GAAGmB,IAAIP,EAAEZ,EAAEmB,EAAEuC,KAAKmjH,IAAI7mH,IAAI0D,KAAKmjH,IAAI3mH,GAAGiB,IAAIP,EAAEV,EAAEiB,EAAEuC,KAAKmjH,IAAI3mH,IAAIwD,KAAKmjH,IAAIplH,GAAGN,IAAIP,EAAEa,GAAGb,CAAC,EAAEZ,EAAEO,UAAUi99C,QAAQ,SAASv99C,EAAED,EAAEE,EAAEuB,EAAEb,GAAG,IAAIO,EAAE4F,EAAEg3L,aAAa99L,EAAED,EAAEE,EAAEuB,GAAGE,EAAEd,KAAKo89C,qBAAqB979C,GAAGmF,EAAEy6H,IAAI081C,QAAQ,eAAe979C,EAAE,2BAA2BR,GAAGP,EAAEkpJ,SAAS3oJ,GAAG,MAAMmF,EAAEy6H,IAAI081C,QAAQ,cAAc789C,EAAEkpJ,SAAS3oJ,GAAG,EAAEnB,EAAEO,UAAU+89C,8BAA8B,SAASr99C,EAAED,EAAEE,EAAEuB,GAAG,IAAIb,EAAE,IAAIoE,EAAE/E,GAAGkB,EAAE,IAAI6D,EAAEhF,GAAG2B,EAAE,IAAIqD,EAAE9E,GAAG2B,EAAE,IAAImD,EAAEvD,GAAGyB,EAAE,IAAI8B,EAAEnE,KAAK689C,qBAAqB989C,EAAEO,EAAEQ,EAAEE,EAAEqB,GAAG,IAAIG,EAAExC,KAAKu89C,4BAA4Bx89C,EAAEO,EAAEQ,EAAEE,GAAG,OAAOwB,EAAEyB,GAAG5B,EAAE4B,EAAEzB,EAAEQ,GAAGX,EAAEW,EAAER,CAAC,EAAErD,EAAEO,UAAUo99C,6BAA6B,SAAS399C,EAAEE,EAAEuB,EAAEb,GAAG,IAAIO,EAAE8D,EAAE+hW,WAAWhnW,EAAEE,EAAEuB,GAAGE,EAAEsD,EAAE+hW,WAAWhnW,EAAEE,EAAEU,GAAGiB,EAAEoD,EAAE+hW,WAAWvlW,EAAEb,EAAEZ,GAAGkD,EAAE+B,EAAE+hW,WAAWvlW,EAAEb,EAAEV,GAAG,OAAOiB,GAAGQ,GAAGd,KAAKs69C,OAAO,GAAG159C,EAAEZ,KAAKs69C,OAAO,GAAGv69C,EAAEX,EAAE679C,wBAAwBj69C,GAAGqB,GAAGrC,KAAKs69C,OAAO,GAAGn79C,EAAEa,KAAKs69C,OAAO,GAAGj79C,EAAED,EAAE679C,wBAAwB369C,GAAGU,GAAGhB,KAAKs69C,OAAO,GAAG159C,EAAEZ,KAAKs69C,OAAO,GAAGn79C,GAAGyB,EAAE2xI,OAAOpzI,IAAI2B,GAAGuB,EAAEjD,EAAE679C,uBAAuB779C,EAAE479C,oBAAoB169C,GAAG+B,GAAGrC,KAAKs69C,OAAO,GAAG159C,EAAEZ,KAAKs69C,OAAO,GAAGj79C,GAAGuB,EAAE2xI,OAAOlzI,IAAIyB,GAAGE,EAAE5B,EAAE679C,uBAAuB779C,EAAE479C,oBAAoBl69C,GAAGE,GAAGhB,KAAKs69C,OAAO,GAAGv69C,EAAEC,KAAKs69C,OAAO,GAAGn79C,GAAGY,EAAEwyI,OAAOpzI,IAAImB,GAAG+B,EAAEjD,EAAE679C,uBAAuB779C,EAAE479C,oBAAoBl69C,GAAGuB,GAAGrC,KAAKs69C,OAAO,GAAGv69C,EAAEC,KAAKs69C,OAAO,GAAGj79C,GAAGU,EAAEwyI,OAAOlzI,IAAIiB,GAAGU,EAAE5B,EAAE679C,uBAAuB779C,EAAE479C,oBAAoB579C,EAAE279C,eAAe,EAAE579C,EAAEO,UAAUm99C,qBAAqB,SAASz99C,EAAED,EAAEE,EAAEuB,EAAEb,GAAG,IAAIO,EAAElB,EAAE6E,EAAE9E,EAAE8E,EAAE7E,EAAE6E,EAAE9E,EAAE8E,EAAEnD,EAAE1B,EAAE4D,EAAE7D,EAAE6D,EAAE5D,EAAE4D,EAAE7D,EAAE6D,EAAEhC,EAAE5B,EAAE6E,EAAE9E,EAAE8E,EAAE7E,EAAE6E,EAAE9E,EAAE8E,EAAE5B,EAAEjD,EAAE4D,EAAE7D,EAAE6D,EAAE5D,EAAE4D,EAAE7D,EAAE6D,EAAER,EAAEnD,EAAE4E,EAAErD,EAAEqD,EAAE5E,EAAE4E,EAAErD,EAAEqD,EAAEpD,EAAExB,EAAE2D,EAAEpC,EAAEoC,EAAE3D,EAAE2D,EAAEpC,EAAEoC,EAAEF,EAAEzD,EAAE4E,EAAErD,EAAEqD,EAAE5E,EAAE4E,EAAErD,EAAEqD,EAAErB,EAAEvD,EAAE2D,EAAEpC,EAAEoC,EAAE3D,EAAE2D,EAAEpC,EAAEoC,EAAEN,IAAIpC,EAAEkC,EAAElC,EAAEkC,IAAIxB,EAAE8B,EAAE9B,EAAE8B,IAAI,EAAEX,IAAIrB,EAAED,EAAEC,EAAED,IAAIwB,EAAEO,EAAEP,EAAEO,IAAI,EAAE7C,EAAEkE,EAAEvB,EAAE3C,EAAEiD,EAAEb,EAAE/C,EAAE6E,GAAGlE,EAAEkE,EAAE7E,EAAE4D,GAAGjD,EAAEiD,EAAE7D,EAAE8E,GAAGlE,EAAEkE,EAAE9E,EAAE6D,GAAGjD,EAAEiD,EAAE3D,EAAE4E,GAAGlE,EAAEkE,EAAE5E,EAAE2D,GAAGjD,EAAEiD,EAAEpC,EAAEqD,GAAGlE,EAAEkE,EAAErD,EAAEoC,GAAGjD,EAAEiD,CAAC,EAAE7D,EAAEO,UAAU879C,iBAAiB,SAASr89C,EAAEE,EAAEuB,EAAEb,GAAG,GAAGC,KAAKw69C,WAAU,GAAIp29C,EAAE+hW,WAAWhnW,EAAEE,EAAEuB,EAAEb,GAAG,OAAOX,EAAE279C,gBAAgB,IAAIz69C,EAAEkL,GAAG8r9C,iBAAiBn49C,EAAEE,EAAEuB,GAAGE,EAAE0K,GAAG8r9C,iBAAiBn49C,EAAEE,EAAEU,GAAG,GAAGO,EAAE,GAAGQ,EAAE,GAAGR,EAAE,GAAGQ,EAAE,EAAE,OAAO1B,EAAE279C,gBAAgB,IAAI/59C,EAAEwK,GAAG8r9C,iBAAiB129C,EAAEb,EAAEZ,GAAGkD,EAAEmJ,GAAG8r9C,iBAAiB129C,EAAEb,EAAEV,GAAG,OAAG2B,EAAE,GAAGqB,EAAE,GAAGrB,EAAE,GAAGqB,EAAE,EAASjD,EAAE279C,gBAAuB,IAAIz69C,GAAG,IAAIQ,GAAG,IAAIE,GAAG,IAAIqB,EAAErC,KAAK889C,6BAA6B399C,EAAEE,EAAEuB,EAAEb,IAAI,IAAIO,GAAG,IAAIQ,GAAG,IAAIE,GAAG,IAAIqB,GAAGrC,KAAKw69C,WAAU,EAAGr79C,EAAEu19C,SAAS9z9C,IAAIzB,EAAEu19C,SAAS309C,GAAGC,KAAKs69C,OAAO,GAAGn79C,EAAEE,EAAEq19C,SAAS9z9C,IAAIvB,EAAEq19C,SAAS309C,GAAGC,KAAKs69C,OAAO,GAAGj79C,EAAE,IAAIiB,EAAEN,KAAKs69C,OAAO,GAAG,IAAIn29C,EAAEvD,GAAG,IAAIE,EAAEd,KAAKs69C,OAAO,GAAG,IAAIn29C,EAAEpE,GAAG,IAAIiB,EAAEhB,KAAKs69C,OAAO,GAAG,IAAIn29C,EAAEhF,GAAG,IAAIkD,IAAIrC,KAAKs69C,OAAO,GAAG,IAAIn29C,EAAE9E,MAAMW,KAAKw69C,WAAU,EAAGx69C,KAAKs69C,OAAO,GAAGt69C,KAAKk9L,aAAa/9L,EAAEE,EAAEuB,EAAEb,IAAIX,EAAE479C,mBAAmB,EAAE779C,EAAEO,UAAUw09C,YAAY,WAAW,MAAM,EAAE,EAAE/09C,EAAEO,UAAUon+B,SAAS,WAAW,OAAO3n+B,CAAC,EAAEA,EAAEq99C,gBAAgB,SAASp99C,EAAED,EAAEE,EAAEuB,GAAG,IAAIb,EAAEX,EAAEkB,EAAEkL,GAAGux9C,kBAAkB399C,EAAEC,EAAEuB,GAAGE,EAAE0K,GAAGux9C,kBAAkB599C,EAAEE,EAAEuB,GAAG,OAAOE,EAAER,IAAIA,EAAEQ,EAAEf,EAAEZ,IAAI2B,EAAE0K,GAAGux9C,kBAAkB199C,EAAED,EAAED,IAAImB,IAAIA,EAAEQ,EAAEf,EAAEV,IAAIyB,EAAE0K,GAAGux9C,kBAAkBn89C,EAAExB,EAAED,IAAImB,IAAIA,EAAEQ,EAAEf,EAAEa,GAAGb,CAAC,EAAEZ,CAAC,CAA3jI,CAA6jI8L,IAAIG,GAAG,WAAW,EAAEA,GAAG1L,UAAUw09C,YAAY,WAAW,MAAM,EAAE,EAAE9o9C,GAAG1L,UAAUon+B,SAAS,WAAW,OAAO179B,EAAE,EAAEA,GAAGks9C,iBAAiB,SAASl49C,EAAED,EAAEE,GAAG,IAAIuB,EAAEzB,EAAE8E,EAAE7E,EAAE6E,EAAElE,EAAEZ,EAAE6D,EAAE5D,EAAE4D,EAAE1C,EAAEjB,EAAE4E,EAAE9E,EAAE8E,EAAEnD,EAAEzB,EAAE2D,EAAE7D,EAAE6D,EAAE,OAAOoI,GAAGos9C,aAAa529C,EAAEb,EAAEO,EAAEQ,EAAE,EAAEsK,GAAGos9C,aAAa,SAASp49C,EAAED,EAAEE,EAAEuB,GAAG,IAAIb,EAAE,KAAKO,EAAE,KAAKQ,EAAE,KAAK,GAAGf,EAAE,EAAE,IAAIX,GAAG,IAAIwB,EAAE,OAAO,IAAIzB,GAAG,IAAIE,EAAE,EAAEF,EAAE,EAAEE,EAAE,GAAGU,EAAEA,EAAEV,EAAE,EAAEU,GAAGA,EAAE,GAAG,IAAIZ,GAAG,IAAIE,EAAE,OAAOuB,EAAE,EAAExB,EAAE,EAAEW,GAAGA,EAAEX,EAAE,GAAGW,EAAEA,EAAE,GAAGZ,EAAE,EAAEyB,EAAE,EAAEzB,GAAGyB,IAAIb,GAAGA,EAAEO,EAAElB,EAAEA,EAAEC,EAAEA,EAAEiB,EAAEA,EAAEnB,EAAEA,EAAEyB,EAAEA,EAAEN,GAAGnB,IAAIyB,GAAGb,GAAGA,EAAEV,GAAGA,EAAEuB,GAAGA,IAAIN,EAAElB,EAAEA,GAAGC,EAAEA,EAAEiB,EAAEA,EAAEnB,EAAEA,GAAGyB,EAAEA,EAAEN,GAAGM,EAAE,GAAGzB,GAAGyB,GAAGb,GAAGA,EAAEX,GAAGA,EAAED,GAAGA,IAAImB,GAAGlB,EAAEA,EAAEC,EAAEA,EAAEiB,EAAEA,GAAGnB,EAAEA,EAAEyB,EAAEA,EAAEN,GAAGnB,GAAGyB,GAAGxB,GAAGA,EAAED,GAAGA,EAAEE,GAAGA,EAAEuB,GAAGA,IAAIb,GAAGA,EAAEO,GAAGlB,EAAEA,GAAGC,EAAEA,EAAEiB,EAAEA,GAAGnB,EAAEA,GAAGyB,EAAEA,EAAEN,GAAGlB,EAAE,EAAE,CAAC,KAAKC,EAAE,GAAG,OAAOU,EAAE,KAAKX,GAAGC,GAAG,OAAOU,CAAC,KAAK,CAAC,GAAGV,EAAE,EAAE,OAAOU,EAAE,KAAKX,GAAGC,GAAG,OAAOU,EAAEA,GAAGA,EAAEX,GAAGA,EAAEC,GAAGA,CAAC,CAAC,OAAO,CAAC,IAA6BuB,IAA1BE,EAAE+B,KAAKyK,MAAMjO,EAAED,IAAgBD,GAAG,EAAE,OAAOY,EAAE,GAAGa,EAAEzB,EAAE,OAAOY,EAAE,GAAGX,GAA9CC,GAAGyB,EAAE1B,GAA6CC,GAAG,GAAGF,EAAEyB,EAAEA,EAAE,OAAOb,MAAM,CAAC,GAAGZ,EAAEyB,EAAEA,EAAE,OAAOb,EAAEV,EAAED,EAAEC,EAAEuB,EAAEzB,EAAEyB,EAAEb,GAAGA,CAAC,CAAC,GAAG,IAAIa,EAAE,OAAO,IAAIvB,EAAE,GAAGU,EAAE,GAAG,IAAIV,EAAE,OAAOU,EAAE,IAA6BZ,IAA1B2B,EAAE+B,KAAKyK,MAAMlO,EAAEC,IAAgBuB,GAAG,EAAE,OAAOb,EAAE,GAAGZ,EAAEyB,EAAE,OAAOb,EAAE,GAAGV,GAA9CD,GAAG0B,EAAEzB,GAA6CD,GAAG,GAAGwB,EAAEzB,EAAEA,EAAE,OAAOY,MAAM,CAAC,GAAGa,EAAEzB,EAAEA,EAAE,OAAOY,EAAEX,EAAEC,EAAED,EAAED,EAAEyB,EAAEzB,EAAEY,GAAGA,CAAC,CAAC,GAAG,IAAIZ,EAAE,OAAO,IAAIC,EAAE,EAAEW,EAAE,GAAG,IAAIX,EAAE,OAAOW,CAAC,CAAC,EAAE,IAAI0L,GAAG,WAAWzL,KAAKooG,GAAG,KAAKpoG,KAAKg99C,eAAe,EAAEh99C,KAAKi99C,mBAAkB,EAAG,IAAI799C,EAAEgB,UAAU,GAAGJ,KAAKooG,GAAGhpG,CAAC,EAAEqM,GAAG/L,UAAUw99C,aAAa,SAAS999C,EAAED,GAAG,GAAGC,EAAE6E,EAAEjE,KAAKooG,GAAGnkG,GAAG9E,EAAE8E,EAAEjE,KAAKooG,GAAGnkG,EAAE,OAAO,KAAK,GAAGjE,KAAKooG,GAAGnkG,IAAI9E,EAAE8E,GAAGjE,KAAKooG,GAAGplG,IAAI7D,EAAE6D,EAAE,OAAOhD,KAAKi99C,mBAAkB,EAAG,KAAK,GAAG799C,EAAE4D,IAAIhD,KAAKooG,GAAGplG,GAAG7D,EAAE6D,IAAIhD,KAAKooG,GAAGplG,EAAE,CAAC,IAAI3D,EAAED,EAAE6E,EAAErD,EAAEzB,EAAE8E,EAAE,OAAO5E,EAAEuB,IAAIvB,EAAEF,EAAE8E,EAAErD,EAAExB,EAAE6E,GAAGjE,KAAKooG,GAAGnkG,GAAG5E,GAAGW,KAAKooG,GAAGnkG,GAAGrD,IAAIZ,KAAKi99C,mBAAkB,GAAI,IAAI,CAAC,GAAG799C,EAAE4D,EAAEhD,KAAKooG,GAAGplG,GAAG7D,EAAE6D,GAAGhD,KAAKooG,GAAGplG,GAAG7D,EAAE6D,EAAEhD,KAAKooG,GAAGplG,GAAG5D,EAAE4D,GAAGhD,KAAKooG,GAAGplG,EAAE,CAAC,IAAIjD,EAAEX,EAAE6E,EAAEjE,KAAKooG,GAAGnkG,EAAE3D,EAAElB,EAAE4D,EAAEhD,KAAKooG,GAAGplG,EAAElC,EAAE3B,EAAE8E,EAAEjE,KAAKooG,GAAGnkG,EAAEjD,EAAE7B,EAAE6D,EAAEhD,KAAKooG,GAAGplG,EAAEX,EAAE+I,GAAGos9C,aAAaz39C,EAAEO,EAAEQ,EAAEE,GAAG,GAAG,IAAIqB,EAAE,OAAOrC,KAAKi99C,mBAAkB,EAAG,KAAKj89C,EAAEV,IAAI+B,GAAGA,GAAGA,EAAE,GAAGrC,KAAKg99C,gBAAgB,CAAC,EAAEvx9C,GAAG/L,UAAUmgY,iBAAiB,WAAW,OAAO7/X,KAAKm0a,gBAAgB5wa,EAAE6x9C,QAAQ,EAAE3p9C,GAAG/L,UAAUy0a,YAAY,WAAW,OAAOn0a,KAAKi99C,kBAAkB159C,EAAE4x9C,SAASn19C,KAAKg99C,eAAe,GAAG,EAAEz59C,EAAE2x9C,SAAS3x9C,EAAE6x9C,QAAQ,EAAE3p9C,GAAG/L,UAAUy99C,YAAY,WAAW,OAAOn99C,KAAKi99C,iBAAiB,EAAExx9C,GAAG/L,UAAUw09C,YAAY,WAAW,MAAM,EAAE,EAAEzo9C,GAAG/L,UAAUon+B,SAAS,WAAW,OAAOr79B,EAAE,EAAEA,GAAG2x9C,kBAAkB,WAAW,GAAGh99C,UAAU,aAAa+D,GAAGD,EAAE9D,UAAU,GAAGwF,GAAG,CAAC,IAAI,IAAmBzG,EAAEiB,UAAU,GAAGf,EAAE,IAAIoM,GAAlCrL,UAAU,IAA8BQ,EAAE,IAAIuD,EAAEpE,EAAE,IAAIoE,EAAE7D,EAAE,EAAEA,EAAEnB,EAAEylB,OAAOtkB,IAAI,GAAGnB,EAAEs49C,cAAcn39C,EAAEM,GAAGzB,EAAEs49C,cAAcn39C,EAAE,EAAEP,GAAGV,EAAE699C,aAAat89C,EAAEb,GAAGV,EAAE899C,cAAc,OAAO999C,EAAE80a,cAAc,OAAO90a,EAAE80a,aAAa,CAAC,GAAG/za,UAAU,aAAa+D,GAAG/D,UAAU,aAAaX,MAAM,CAAC,IAAI,IAAmBuB,EAAEZ,UAAU,GAAGiC,EAAE,IAAIoJ,GAAlCrL,UAAU,IAA8BoC,EAAE,EAAEA,EAAExB,EAAEX,OAAOmC,IAAI,CAAC,IAAI3B,EAAEG,EAAEwB,GAAGM,EAAE9B,EAAEwB,EAAE,GAAG,GAAGH,EAAE669C,aAAar89C,EAAEiC,GAAGT,EAAE869C,cAAc,OAAO969C,EAAE8xa,aAAa,CAAC,OAAO9xa,EAAE8xa,aAAa,CAAC,EAAE,IAAI3oa,GAAG,WAAW,EAAEE,GAAG,CAACk0O,UAAU,CAAC97O,cAAa,GAAIsvhB,MAAM,CAACtvhB,cAAa,GAAIu59C,iBAAiB,CAACv59C,cAAa,GAAIovhB,KAAK,CAACpvhB,cAAa,GAAIg39C,UAAU,CAACh39C,cAAa,GAAIw59C,SAAS,CAACx59C,cAAa,IAAK0H,GAAG9L,UAAUw09C,YAAY,WAAW,MAAM,EAAE,EAAE1o9C,GAAG9L,UAAUon+B,SAAS,WAAW,OAAOt79B,EAAE,EAAEA,GAAG8r9C,iBAAiB,SAASl49C,EAAED,EAAEE,GAAG,OAAO6G,EAAEox9C,iBAAiBl49C,EAAED,EAAEE,EAAE,EAAEmM,GAAGk57B,WAAW,WAAW,GAAGtk8B,UAAU,aAAaX,MAAM,CAAC,IAAIL,EAAEgB,UAAU,GAAG,GAAGhB,EAAEiB,OAAO,EAAE,OAAO,EAAE,IAAI,IAAIlB,EAAE,EAAEE,EAAED,EAAE,GAAG6E,EAAErD,EAAE,EAAEA,EAAExB,EAAEiB,OAAO,EAAEO,IAAI,CAAC,IAAIb,EAAEX,EAAEwB,GAAGqD,EAAE5E,EAAEiB,EAAElB,EAAEwB,EAAE,GAAGoC,EAAE7D,GAAGY,GAAGX,EAAEwB,EAAE,GAAGoC,EAAE1C,EAAE,CAAC,OAAOnB,EAAE,CAAC,CAAC,GAAG+E,EAAE9D,UAAU,GAAGwF,GAAG,CAAC,IAAI9E,EAAEV,UAAU,GAAGY,EAAEF,EAAE8jB,OAAO,GAAG5jB,EAAE,EAAE,OAAO,EAAE,IAAIqB,EAAE,IAAI8B,EAAE3B,EAAE,IAAI2B,EAAEtD,EAAE,IAAIsD,EAAErD,EAAE229C,cAAc,EAAEj19C,GAAG1B,EAAE229C,cAAc,EAAE529C,GAAG,IAAIiC,EAAEN,EAAEyB,EAAEpD,EAAEoD,GAAGnB,EAAE,IAAI,IAAIF,EAAE,EAAEF,EAAE,EAAEA,EAAE1B,EAAE,EAAE0B,IAAIL,EAAEW,EAAER,EAAEQ,EAAER,EAAEyB,EAAEpD,EAAEoD,EAAEzB,EAAEQ,EAAEnC,EAAEmC,EAAElC,EAAE229C,cAAc/09C,EAAE,EAAE7B,GAAGA,EAAEoD,GAAGnB,EAAEF,GAAGJ,EAAEyB,GAAG5B,EAAEW,EAAEnC,EAAEmC,GAAG,OAAOJ,EAAE,CAAC,CAAC,EAAE4I,GAAG+x9C,iBAAiB,SAASn+9C,EAAED,EAAEE,EAAEuB,GAAG,GAAGxB,EAAEmzI,OAAOpzI,GAAG,OAAOqM,GAAGux9C,kBAAkB399C,EAAEC,EAAEuB,GAAG,GAAGvB,EAAEkzI,OAAO3xI,GAAG,OAAO4K,GAAGux9C,kBAAkBn89C,EAAExB,EAAED,GAAG,IAAIY,GAAE,EAAG,GAAGqE,EAAE+hW,WAAW/mW,EAAED,EAAEE,EAAEuB,GAAG,CAAC,IAAIN,GAAGnB,EAAE8E,EAAE7E,EAAE6E,IAAIrD,EAAEoC,EAAE3D,EAAE2D,IAAI7D,EAAE6D,EAAE5D,EAAE4D,IAAIpC,EAAEqD,EAAE5E,EAAE4E,GAAG,GAAG,IAAI3D,EAAEP,GAAE,MAAO,CAAC,IAAIe,GAAG1B,EAAE4D,EAAE3D,EAAE2D,IAAIpC,EAAEqD,EAAE5E,EAAE4E,IAAI7E,EAAE6E,EAAE5E,EAAE4E,IAAIrD,EAAEoC,EAAE3D,EAAE2D,GAAGhC,IAAI5B,EAAE4D,EAAE3D,EAAE2D,IAAI7D,EAAE8E,EAAE7E,EAAE6E,IAAI7E,EAAE6E,EAAE5E,EAAE4E,IAAI9E,EAAE6D,EAAE5D,EAAE4D,IAAI1C,EAAE+B,EAAEvB,EAAER,GAAG+B,EAAE,GAAGA,EAAE,GAAGrB,EAAE,GAAGA,EAAE,KAAKjB,GAAE,EAAG,CAAC,MAAMA,GAAE,EAAG,OAAOA,EAAEuE,EAAEuJ,IAAIrC,GAAGux9C,kBAAkB399C,EAAEC,EAAEuB,GAAG4K,GAAGux9C,kBAAkB599C,EAAEE,EAAEuB,GAAG4K,GAAGux9C,kBAAkB199C,EAAED,EAAED,GAAGqM,GAAGux9C,kBAAkBn89C,EAAExB,EAAED,IAAI,CAAC,EAAEqM,GAAGgy9C,cAAc,SAASp+9C,EAAED,GAAG,OAAOqM,GAAG4x9C,kBAAkBh+9C,EAAED,KAAKoE,EAAE6x9C,QAAQ,EAAE5p9C,GAAGiy9C,cAAc,SAASr+9C,GAAG,IAAID,EAAEC,EAAEwlB,OAAO,GAAGzlB,GAAG,EAAE,OAAO,EAAE,IAAIE,EAAE,EAAEuB,EAAE,IAAIuD,EAAE/E,EAAEq49C,cAAc,EAAE729C,GAAG,IAAI,IAAIb,EAAEa,EAAEqD,EAAE3D,EAAEM,EAAEoC,EAAElC,EAAE,EAAEA,EAAE3B,EAAE2B,IAAI,CAAC1B,EAAEq49C,cAAc329C,EAAEF,GAAG,IAAII,EAAEJ,EAAEqD,EAAE5B,EAAEzB,EAAEoC,EAAER,EAAExB,EAAEjB,EAAEc,EAAEwB,EAAE/B,EAAEjB,GAAGwD,KAAK4yF,KAAKjzF,EAAEA,EAAE3B,EAAEA,GAAGd,EAAEiB,EAAEV,EAAE+B,CAAC,CAAC,OAAOhD,CAAC,EAAEmM,GAAGky9C,MAAM,SAASt+9C,GAAG,IAAID,EAAEC,EAAEiB,OAAO,EAAE,GAAGlB,EAAE,EAAE,MAAM,IAAIiE,EAAE,qEAAqE,IAAI,IAAI/D,EAAED,EAAE,GAAGwB,EAAE,EAAEb,EAAE,EAAEA,GAAGZ,EAAEY,IAAI,CAAC,IAAIO,EAAElB,EAAEW,GAAGO,EAAE0C,EAAE3D,EAAE2D,IAAI3D,EAAEiB,EAAEM,EAAEb,EAAE,CAAC,IAAIe,EAAEF,EAAE,IAAIE,GAAG,GAAG,IAAIA,EAAE3B,SAASC,EAAE0B,GAAG4z9C,SAASr19C,IAAIyB,IAAIF,GAAG,IAAII,EAAEJ,EAAE,GAAGI,GAAGA,EAAE,GAAG7B,QAAQC,EAAE4B,GAAG0z9C,SAASr19C,IAAI2B,IAAIJ,GAAG,IAAIyB,EAAEjD,EAAE0B,GAAG0B,EAAEpD,EAAE4B,GAAG,GAAGqB,EAAEqy9C,SAASr19C,IAAImD,EAAEky9C,SAASr19C,IAAIgD,EAAEqy9C,SAASly9C,GAAG,OAAM,EAAG,IAAI3B,EAAE2K,GAAGmy9C,mBAAmBt79C,EAAEhD,EAAEmD,GAAQ,OAAS,IAAI3B,EAAEwB,EAAE4B,EAAEzB,EAAEyB,EAAEpD,EAAE,CAAG,EAAE2K,GAAG4x9C,kBAAkB,SAASh+9C,EAAED,GAAG,OAAOsM,GAAG2x9C,kBAAkBh+9C,EAAED,EAAE,EAAEqM,GAAGoy9C,+BAA+B,SAASx+9C,EAAED,EAAEE,GAAG,IAAIuB,GAAGvB,EAAE4E,EAAE9E,EAAE8E,IAAI5E,EAAE4E,EAAE9E,EAAE8E,IAAI5E,EAAE2D,EAAE7D,EAAE6D,IAAI3D,EAAE2D,EAAE7D,EAAE6D,GAAGjD,IAAIZ,EAAE6D,EAAE5D,EAAE4D,IAAI3D,EAAE4E,EAAE9E,EAAE8E,IAAI9E,EAAE8E,EAAE7E,EAAE6E,IAAI5E,EAAE2D,EAAE7D,EAAE6D,IAAIpC,EAAE,OAAOiC,KAAKmjH,IAAIjmH,GAAG8C,KAAK4yF,KAAK70F,EAAE,EAAE4K,GAAGmy9C,mBAAmB,SAASv+9C,EAAED,EAAEE,GAAG,OAAOmM,GAAG8r9C,iBAAiBl49C,EAAED,EAAEE,EAAE,EAAEmM,GAAGux9C,kBAAkB,WAAW,GAAG,IAAI389C,UAAUC,OAAO,CAAC,IAAIjB,EAAEgB,UAAU,GAAGjB,EAAEiB,UAAU,GAAG,GAAG,IAAIjB,EAAEkB,OAAO,MAAM,IAAI+C,EAAE,+CAA+C,IAAI,IAAI/D,EAAED,EAAE6pJ,SAAS9pJ,EAAE,IAAIyB,EAAE,EAAEA,EAAEzB,EAAEkB,OAAO,EAAEO,IAAI,CAAC,IAAIb,EAAEyL,GAAGux9C,kBAAkB399C,EAAED,EAAEyB,GAAGzB,EAAEyB,EAAE,IAAIb,EAAEV,IAAIA,EAAEU,EAAE,CAAC,OAAOV,CAAC,CAAC,GAAG,IAAIe,UAAUC,OAAO,CAAC,IAAIC,EAAEF,UAAU,GAAGU,EAAEV,UAAU,GAAGY,EAAEZ,UAAU,GAAG,GAAGU,EAAEmD,IAAIjD,EAAEiD,GAAGnD,EAAEkC,IAAIhC,EAAEgC,EAAE,OAAO1C,EAAE2oJ,SAASnoJ,GAAG,IAAIuB,GAAGrB,EAAEiD,EAAEnD,EAAEmD,IAAIjD,EAAEiD,EAAEnD,EAAEmD,IAAIjD,EAAEgC,EAAElC,EAAEkC,IAAIhC,EAAEgC,EAAElC,EAAEkC,GAAGR,IAAIlC,EAAE2D,EAAEnD,EAAEmD,IAAIjD,EAAEiD,EAAEnD,EAAEmD,IAAI3D,EAAE0C,EAAElC,EAAEkC,IAAIhC,EAAEgC,EAAElC,EAAEkC,IAAIX,EAAE,GAAGG,GAAG,EAAE,OAAOlC,EAAE2oJ,SAASnoJ,GAAG,GAAG0B,GAAG,EAAE,OAAOlC,EAAE2oJ,SAASjoJ,GAAG,IAAIH,IAAIC,EAAEkC,EAAE1C,EAAE0C,IAAIhC,EAAEiD,EAAEnD,EAAEmD,IAAInD,EAAEmD,EAAE3D,EAAE2D,IAAIjD,EAAEgC,EAAElC,EAAEkC,IAAIX,EAAE,OAAOQ,KAAKmjH,IAAInlH,GAAGgC,KAAK4yF,KAAKpzF,EAAE,CAAC,EAAEmJ,GAAGqy9C,SAAS,SAASz+9C,EAAED,GAAG,IAAI,IAAIE,EAAE,IAAI6L,GAAGtK,EAAE,EAAEA,EAAEzB,EAAEkB,OAAOO,IAAI,CAAC,IAAIb,EAAEZ,EAAEyB,EAAE,GAAGN,EAAEnB,EAAEyB,GAAG,GAAGvB,EAAEk89C,oBAAoBn89C,EAAEW,EAAEO,GAAGjB,EAAEu89C,kBAAkB,OAAM,CAAE,CAAC,OAAM,CAAE,EAAElw9C,GAAGk0O,UAAUz8O,IAAI,WAAW,OAAO,CAAC,EAAEuI,GAAG0nhB,MAAMjwhB,IAAI,WAAW,OAAOqI,GAAGo0O,SAAS,EAAEl0O,GAAG2x9C,iBAAiBl69C,IAAI,WAAW,OAAO,CAAC,EAAEuI,GAAGwnhB,KAAK/vhB,IAAI,WAAW,OAAOqI,GAAG6x9C,gBAAgB,EAAE3x9C,GAAGov9C,UAAU339C,IAAI,WAAW,OAAO,CAAC,EAAEuI,GAAG4x9C,SAASn69C,IAAI,WAAW,OAAOqI,GAAGsv9C,SAAS,EAAEx79C,OAAOkU,iBAAiBhI,GAAGE,IAAI,IAAIE,GAAG,WAAW,EAAEA,GAAGlM,UAAUmtB,OAAO,SAASztB,GAAG,EAAEwM,GAAGlM,UAAUw09C,YAAY,WAAW,MAAM,EAAE,EAAEto9C,GAAGlM,UAAUon+B,SAAS,WAAW,OAAOl79B,EAAE,EAAE,IAAIL,GAAG,WAAW,IAAInM,EAAEgB,UAAU,GAAGJ,KAAK899C,UAAU,KAAK999C,KAAK+hxB,SAAS,KAAK/hxB,KAAK+99C,MAAM,KAAK/99C,KAAKg+9C,UAAU,KAAKh+9C,KAAK+hxB,SAAS3ixB,EAAEY,KAAK+99C,MAAM3+9C,EAAE6+9C,SAAS,EAAE9x9C,GAAG,CAACqo9C,iBAAiB,CAAC1w9C,cAAa,GAAIo69C,gBAAgB,CAACp69C,cAAa,GAAIq69C,qBAAqB,CAACr69C,cAAa,GAAIs69C,qBAAqB,CAACt69C,cAAa,GAAIu69C,qBAAqB,CAACv69C,cAAa,GAAIw69C,0BAA0B,CAACx69C,cAAa,GAAIy69C,kBAAkB,CAACz69C,cAAa,GAAI069C,uBAAuB,CAAC169C,cAAa,GAAI269C,6BAA6B,CAAC369C,cAAa,GAAI469C,sBAAsB,CAAC569C,cAAa,IAAKyH,GAAG7L,UAAUsud,qBAAqB,WAAW,OAAOhud,KAAKwxe,iBAAiBjme,GAAGkz9C,4BAA4B,EAAElz9C,GAAG7L,UAAUi/9C,WAAW,WAAW,OAAO3+9C,KAAK+hxB,QAAQ,EAAEx2wB,GAAG7L,UAAUk/9C,aAAa,SAASx/9C,GAAG,OAAOY,IAAI,EAAEuL,GAAG7L,UAAUorlC,QAAQ,WAAW,OAAO,CAAC,EAAEv/kC,GAAG7L,UAAUm/9C,YAAY,WAAW,OAAM,CAAE,EAAEtz9C,GAAG7L,UAAU6yI,OAAO,WAAW,GAAGnyI,UAAU,aAAamL,GAAG,CAAC,IAAInM,EAAEgB,UAAU,GAAG,OAAO,OAAOhB,GAAGY,KAAK8+9C,WAAW1/9C,EAAE,CAAC,GAAGgB,UAAU,aAAad,OAAO,CAAC,IAAIH,EAAEiB,UAAU,GAAG,KAAKjB,aAAaoM,IAAI,OAAM,EAAG,IAAIlM,EAAEF,EAAE,OAAOa,KAAK++9C,YAAY1/9C,EAAE,CAAC,EAAEkM,GAAG7L,UAAUq/9C,YAAY,SAAS3/9C,GAAG,OAAOY,OAAOZ,GAAGY,KAAK++9C,YAAY3/9C,EAAE,EAAE,EAAEmM,GAAG7L,UAAU++O,gBAAgB,WAAWz+O,KAAKO,MAAMgL,GAAGmz9C,sBAAsB,EAAEnz9C,GAAG7L,UAAUs/9C,sBAAsB,WAAWh/9C,KAAK899C,UAAU,IAAI,EAAEvy9C,GAAG7L,UAAUu/9C,WAAW,SAAS7/9C,GAAG,OAAO,OAAOA,GAAGY,KAAKwoL,OAAOu2yC,YAAY3/9C,EAAEopL,OAAO,EAAEj9K,GAAG7L,UAAUw/9C,UAAU,WAAW,OAAO,CAAC,EAAE3z9C,GAAG7L,UAAUy/9C,iBAAiB,WAAW,OAAO,CAAC,EAAE5z9C,GAAG7L,UAAUmzQ,UAAU,WAAW,GAAG,IAAIzyQ,UAAUC,OAAO,CAAC,IAAIjB,EAAEgB,UAAU,GAAGjB,EAAEC,EAAE,OAAOY,KAAKwxe,iBAAiBrye,EAAEqye,eAAexxe,KAAKwxe,eAAerye,EAAEqye,eAAexxe,KAAKqoE,WAAWlpE,EAAEkpE,UAAU,EAAEroE,KAAKqoE,WAAW,EAAElpE,EAAEkpE,UAAU,EAAEroE,KAAKo/9C,mBAAmBhg+C,EAAE,CAAC,GAAG,IAAIgB,UAAUC,OAAO,CAAC,IAAIhB,EAAEe,UAAU,GAAGQ,EAAER,UAAU,GAAG,OAAOJ,KAAKwxe,iBAAiBnye,EAAEmye,eAAexxe,KAAKwxe,eAAenye,EAAEmye,eAAexxe,KAAKqoE,WAAWhpE,EAAEgpE,UAAU,EAAEroE,KAAKqoE,WAAW,EAAEhpE,EAAEgpE,UAAU,EAAEroE,KAAKo/9C,mBAAmB//9C,EAAEuB,EAAE,CAAC,EAAE2K,GAAG7L,UAAU2/9C,YAAY,WAAW,OAAOr/9C,KAAKg+9C,SAAS,EAAEzy9C,GAAG7L,UAAUu+9C,QAAQ,WAAW,OAAOj+9C,KAAK+99C,KAAK,EAAExy9C,GAAG7L,UAAU4/9C,YAAY,WAAW,OAAOt/9C,KAAK2+9C,aAAaY,WAAWv/9C,KAAKw/9C,sBAAsB,EAAEj09C,GAAG7L,UAAU+/9C,2BAA2B,SAASrg+C,GAAG,GAAGA,EAAEoye,iBAAiBjme,GAAGkz9C,6BAA6B,MAAM,IAAIr79C,EAAE,4DAA4D,EAAEmI,GAAG7L,UAAUoqJ,MAAM,SAAS1qJ,EAAED,EAAEE,GAAG,OAAO,IAAIA,EAAED,EAAEmzI,OAAOpzI,GAAGC,EAAE6pJ,SAAS9pJ,IAAIE,CAAC,EAAEkM,GAAG7L,UAAU8oL,KAAK,WAAW,IAAIppL,EAAEY,KAAK8/H,OAAO,OAAO1gI,EAAEkQ,YAAYlQ,CAAC,EAAEmM,GAAG7L,UAAUgg+C,kBAAkB,WAAW,OAAO1/9C,KAAK+hxB,SAAS29sB,mBAAmB,EAAEn09C,GAAG7L,UAAU8/9C,oBAAoB,WAAW,OAAO,OAAOx/9C,KAAK899C,YAAY999C,KAAK899C,UAAU999C,KAAK2/9C,2BAA2B,IAAIv79C,EAAEpE,KAAK899C,UAAU,EAAEvy9C,GAAG7L,UAAUkg+C,QAAQ,SAASxg+C,GAAGY,KAAK+99C,MAAM3+9C,CAAC,EAAEmM,GAAG7L,UAAUmg+C,YAAY,SAASzg+C,GAAGY,KAAKg+9C,UAAU5+9C,CAAC,EAAEmM,GAAG7L,UAAUwqH,QAAQ,SAAS9qH,EAAED,GAAG,IAAI,IAAIE,EAAED,EAAEuC,WAAWf,EAAEzB,EAAEwC,WAAWtC,EAAEyg+C,WAAWl/9C,EAAEk/9C,WAAW,CAAC,IAAI//9C,EAAEV,EAAE0B,OAAOT,EAAEM,EAAEG,OAAOD,EAAEf,EAAE8yQ,UAAUvyQ,GAAG,GAAG,IAAIQ,EAAE,OAAOA,CAAC,CAAC,OAAOzB,EAAEyg+C,UAAU,EAAEl/9C,EAAEk/9C,WAAW,EAAE,CAAC,EAAEv09C,GAAG7L,UAAUq19C,SAAS,WAAW,OAAO/09C,KAAKw/9C,sBAAsBzK,UAAU,EAAExp9C,GAAG7L,UAAUqg+C,8BAA8B,WAAW,OAAO//9C,KAAKwxe,iBAAiBjme,GAAGkz9C,8BAA8Bz+9C,KAAKwxe,iBAAiBjme,GAAG4y9C,sBAAsBn+9C,KAAKwxe,iBAAiBjme,GAAG+y9C,2BAA2Bt+9C,KAAKwxe,iBAAiBjme,GAAGiz9C,sBAAsB,EAAEjz9C,GAAG7L,UAAUw09C,YAAY,WAAW,MAAM,CAACjw9C,EAAES,EAAEvF,EAAE,EAAEoM,GAAG7L,UAAUon+B,SAAS,WAAW,OAAOv79B,EAAE,EAAEA,GAAGy09C,oBAAoB,SAAS5g+C,GAAG,IAAI,IAAID,EAAE,EAAEA,EAAEC,EAAEiB,OAAOlB,IAAI,IAAIC,EAAED,GAAGkpE,UAAU,OAAM,EAAG,OAAM,CAAE,EAAE98D,GAAG009C,gBAAgB,SAAS7g+C,GAAG,IAAI,IAAID,EAAE,EAAEA,EAAEC,EAAEiB,OAAOlB,IAAI,GAAG,OAAOC,EAAED,GAAG,OAAM,EAAG,OAAM,CAAE,EAAEgN,GAAGqo9C,iBAAiBrx9C,IAAI,WAAW,OAAO,kBAAkB,EAAEgJ,GAAG+x9C,gBAAgB/69C,IAAI,WAAW,OAAO,CAAC,EAAEgJ,GAAGgy9C,qBAAqBh79C,IAAI,WAAW,OAAO,CAAC,EAAEgJ,GAAGiy9C,qBAAqBj79C,IAAI,WAAW,OAAO,CAAC,EAAEgJ,GAAGky9C,qBAAqBl79C,IAAI,WAAW,OAAO,CAAC,EAAEgJ,GAAGmy9C,0BAA0Bn79C,IAAI,WAAW,OAAO,CAAC,EAAEgJ,GAAGoy9C,kBAAkBp79C,IAAI,WAAW,OAAO,CAAC,EAAEgJ,GAAGqy9C,uBAAuBr79C,IAAI,WAAW,OAAO,CAAC,EAAEgJ,GAAGsy9C,6BAA6Bt79C,IAAI,WAAW,OAAO,CAAC,EAAEgJ,GAAGuy9C,sBAAsBv79C,IAAI,WAAW,OAAO6I,EAAE,EAAE1M,OAAOkU,iBAAiBjI,GAAGY,IAAI,IAAIH,GAAG,WAAW,EAAEA,GAAGko9C,YAAY,WAAW,MAAM,CAACto9C,GAAG,EAAEI,GAAG6gB,OAAO,SAASztB,GAAGA,EAAE4/9C,uBAAuB,EAAE,IAAInz9C,GAAG,WAAW,EAAEA,GAAGnM,UAAUmtB,OAAO,SAASztB,GAAG,EAAEyM,GAAGnM,UAAUw09C,YAAY,WAAW,MAAM,EAAE,EAAEro9C,GAAGnM,UAAUon+B,SAAS,WAAW,OAAOj79B,EAAE,EAAE,IAAIwB,GAAG,WAAW,EAAEvB,GAAG,CAACo09C,qBAAqB,CAACp89C,cAAa,GAAIq89C,yBAAyB,CAACr89C,cAAa,GAAIs89C,oCAAoC,CAACt89C,cAAa,GAAIu89C,mCAAmC,CAACv89C,cAAa,GAAIw89C,mBAAmB,CAACx89C,cAAa,GAAIy89C,uBAAuB,CAACz89C,cAAa,GAAI089C,mCAAmC,CAAC189C,cAAa,GAAI289C,kCAAkC,CAAC389C,cAAa,GAAI489C,sBAAsB,CAAC589C,cAAa,IAAKuJ,GAAG3N,UAAUih+C,aAAa,SAASvh+C,GAAG,EAAEiO,GAAG3N,UAAUw09C,YAAY,WAAW,MAAM,EAAE,EAAE7m9C,GAAG3N,UAAUon+B,SAAS,WAAW,OAAOz59B,EAAE,EAAEvB,GAAGo09C,qBAAqB/89C,IAAI,WAAW,OAAOiJ,EAAE,EAAEN,GAAGq09C,yBAAyBh99C,IAAI,WAAW,OAAOyK,EAAE,EAAE9B,GAAGs09C,oCAAoCj99C,IAAI,WAAW,OAAO2J,EAAE,EAAEhB,GAAGu09C,mCAAmCl99C,IAAI,WAAW,OAAOqJ,EAAE,EAAEV,GAAGw09C,mBAAmBn99C,IAAI,WAAW,OAAO,IAAIiJ,EAAE,EAAEN,GAAGy09C,uBAAuBp99C,IAAI,WAAW,OAAO,IAAIyK,EAAE,EAAE9B,GAAG009C,mCAAmCr99C,IAAI,WAAW,OAAO,IAAI2J,EAAE,EAAEhB,GAAG209C,kCAAkCt99C,IAAI,WAAW,OAAO,IAAIqJ,EAAE,EAAEV,GAAG409C,sBAAsBv99C,IAAI,WAAW,OAAOkK,GAAGiz9C,kBAAkB,EAAEhh+C,OAAOkU,iBAAiBnG,GAAGvB,IAAI,IAAIM,GAAG,WAAW,EAAEA,GAAG1M,UAAUih+C,aAAa,SAASvh+C,GAAG,OAAOA,EAAE,GAAG,CAAC,EAAEgN,GAAG1M,UAAUw09C,YAAY,WAAW,MAAM,CAAC7m9C,GAAG,EAAEjB,GAAG1M,UAAUon+B,SAAS,WAAW,OAAO169B,EAAE,EAAE,IAAIwB,GAAG,WAAW,EAAEA,GAAGlO,UAAUih+C,aAAa,SAASvh+C,GAAG,OAAOA,EAAE,CAAC,EAAEwO,GAAGlO,UAAUw09C,YAAY,WAAW,MAAM,CAAC7m9C,GAAG,EAAEO,GAAGlO,UAAUon+B,SAAS,WAAW,OAAOl59B,EAAE,EAAE,IAAId,GAAG,WAAW,EAAEA,GAAGpN,UAAUih+C,aAAa,SAASvh+C,GAAG,OAAOA,EAAE,CAAC,EAAE0N,GAAGpN,UAAUw09C,YAAY,WAAW,MAAM,CAAC7m9C,GAAG,EAAEP,GAAGpN,UAAUon+B,SAAS,WAAW,OAAOh69B,EAAE,EAAE,IAAIN,GAAG,WAAW,EAAEA,GAAG9M,UAAUih+C,aAAa,SAASvh+C,GAAG,OAAO,IAAIA,CAAC,EAAEoN,GAAG9M,UAAUw09C,YAAY,WAAW,MAAM,CAAC7m9C,GAAG,EAAEb,GAAG9M,UAAUon+B,SAAS,WAAW,OAAOt69B,EAAE,EAAE,IAAIsB,GAAG,WAAW,EAAEA,GAAGpO,UAAUylB,IAAI,WAAW,EAAErX,GAAGpO,UAAUu09C,OAAO,WAAW,EAAEnm9C,GAAGpO,UAAU2oE,QAAQ,WAAW,EAAEv6D,GAAGpO,UAAUiC,SAAS,WAAW,EAAEmM,GAAGpO,UAAUklB,KAAK,WAAW,EAAE9W,GAAGpO,UAAUmuH,QAAQ,WAAW,EAAE//G,GAAGpO,UAAUmzB,OAAO,WAAW,GAAGxzB,EAAEK,UAAU,IAAI8nB,OAAO9c,KAAK,4BAA4B,IAAI+D,GAAG,WAAW,EAAEA,GAAG/O,UAAUog+C,QAAQ,WAAW,EAAErx9C,GAAG/O,UAAUqB,KAAK,WAAW,EAAE0N,GAAG/O,UAAUmzB,OAAO,WAAW,EAAE,IAAI7kB,GAAG,SAAS5O,GAAG,SAASD,IAAIC,EAAEmB,MAAMP,KAAKI,UAAU,CAAC,OAAOhB,IAAID,EAAEK,UAAUJ,GAAGD,EAAEO,UAAUJ,OAAOY,OAAOd,GAAGA,EAAEM,WAAWP,EAAEO,UAAUO,YAAYd,EAAEA,EAAEO,UAAUyD,IAAI,WAAW,EAAEhE,EAAEO,UAAUuM,IAAI,WAAW,EAAE9M,EAAEO,UAAU2oE,QAAQ,WAAW,EAAElpE,CAAC,CAA3O,CAA6O2O,KAAKlN,EAAElB,UAAU,IAAI8nB,OAAO9c,KAAK,yBAAyB,IAAIuE,GAAG,SAAS7P,GAAG,SAASD,IAAIC,EAAEQ,KAAKI,MAAMA,KAAKg09C,OAAO,GAAG5z9C,UAAU,aAAa0N,IAAI9N,KAAKi09C,OAAO7z9C,UAAU,GAAG,CAAC,OAAOhB,IAAID,EAAEK,UAAUJ,GAAGD,EAAEO,UAAUJ,OAAOY,OAAOd,GAAGA,EAAEM,WAAWP,EAAEO,UAAUO,YAAYd,EAAEA,EAAEO,UAAUkh+C,eAAe,WAAW,EAAEzh+C,EAAEO,UAAUw09C,YAAY,WAAW,MAAM,CAAC909C,EAAE0O,GAAG,EAAE3O,EAAEO,UAAUylB,IAAI,SAAS/lB,GAAG,OAAO,IAAIgB,UAAUC,OAAOL,KAAKg09C,OAAOny9C,KAAKzC,GAAGY,KAAKg09C,OAAO/w8C,OAAO7iB,UAAU,GAAGA,UAAU,KAAI,CAAE,EAAEjB,EAAEO,UAAUslB,MAAM,WAAWhlB,KAAKg09C,OAAO,EAAE,EAAE709C,EAAEO,UAAUu09C,OAAO,SAAS709C,GAAG,IAAI,IAAID,EAAEC,EAAEuC,WAAWxC,EAAE2g+C,WAAW9/9C,KAAKmlB,IAAIhmB,EAAE4B,QAAQ,OAAM,CAAE,EAAE5B,EAAEO,UAAUuM,IAAI,SAAS7M,EAAED,GAAG,IAAIE,EAAEW,KAAKg09C,OAAO509C,GAAG,OAAOY,KAAKg09C,OAAO509C,GAAGD,EAAEE,CAAC,EAAEF,EAAEO,UAAUiC,SAAS,WAAW,OAAO,IAAIuM,GAAGlO,KAAK,EAAEb,EAAEO,UAAUyD,IAAI,SAAS/D,GAAG,GAAGA,EAAE,GAAGA,GAAGY,KAAK4kB,OAAO,MAAM,IAAIvlB,EAAE,OAAOW,KAAKg09C,OAAO509C,EAAE,EAAED,EAAEO,UAAU2oE,QAAQ,WAAW,OAAO,IAAIroE,KAAKg09C,OAAO3z9C,MAAM,EAAElB,EAAEO,UAAUklB,KAAK,WAAW,OAAO5kB,KAAKg09C,OAAO3z9C,MAAM,EAAElB,EAAEO,UAAUmuH,QAAQ,WAAW,IAAI,IAAIzuH,EAAE,GAAGD,EAAE,EAAEE,EAAEW,KAAKg09C,OAAO3z9C,OAAOlB,EAAEE,EAAEF,IAAIC,EAAEyC,KAAK7B,KAAKg09C,OAAO709C,IAAI,OAAOC,CAAC,EAAED,EAAEO,UAAUmzB,OAAO,SAASzzB,GAAG,IAAI,IAAID,GAAE,EAAGE,EAAE,EAAEuB,EAAEZ,KAAKg09C,OAAO3z9C,OAAOhB,EAAEuB,EAAEvB,IAAI,GAAGW,KAAKg09C,OAAO309C,KAAKD,EAAE,CAACY,KAAKg09C,OAAO/w8C,OAAO5jB,EAAE,GAAGF,GAAE,EAAG,KAAK,CAAC,OAAOA,CAAC,EAAEA,CAAC,CAA1nC,CAA4nC6O,IAAIE,GAAG,SAAS9O,GAAG,SAASD,EAAEA,GAAGC,EAAEQ,KAAKI,MAAMA,KAAK6g+C,WAAW1h+C,EAAEa,KAAK8g+C,UAAU,CAAC,CAAC,OAAO1h+C,IAAID,EAAEK,UAAUJ,GAAGD,EAAEO,UAAUJ,OAAOY,OAAOd,GAAGA,EAAEM,WAAWP,EAAEO,UAAUO,YAAYd,EAAEA,EAAEO,UAAUqB,KAAK,WAAW,GAAGf,KAAK8g+C,YAAY9g+C,KAAK6g+C,WAAWj88C,OAAO,MAAM,IAAIhkB,EAAE,OAAOZ,KAAK6g+C,WAAW199C,IAAInD,KAAK8g+C,YAAY,EAAE3h+C,EAAEO,UAAUog+C,QAAQ,WAAW,OAAO9/9C,KAAK8g+C,UAAU9g+C,KAAK6g+C,WAAWj88C,MAAM,EAAEzlB,EAAEO,UAAUuM,IAAI,SAAS7M,GAAG,OAAOY,KAAK6g+C,WAAW509C,IAAIjM,KAAK8g+C,UAAU,EAAE1h+C,EAAE,EAAED,EAAEO,UAAUmzB,OAAO,WAAW7yB,KAAK6g+C,WAAWhu8C,OAAO7yB,KAAK6g+C,WAAW199C,IAAInD,KAAK8g+C,WAAW,EAAE3h+C,CAAC,CAA9hB,CAAgiBsP,IAAIhB,GAAG,SAASrO,GAAG,SAASD,IAAI,GAAGC,EAAEQ,KAAKI,MAAM,IAAII,UAAUC,aAAa,GAAG,IAAID,UAAUC,OAAO,CAAC,IAAIlB,EAAEiB,UAAU,GAAGJ,KAAK4g+C,eAAezh+C,EAAEkB,QAAQL,KAAKmlB,IAAIhmB,GAAE,EAAG,MAAM,GAAG,IAAIiB,UAAUC,OAAO,CAAC,IAAIhB,EAAEe,UAAU,GAAGQ,EAAER,UAAU,GAAGJ,KAAK4g+C,eAAevh+C,EAAEgB,QAAQL,KAAKmlB,IAAI9lB,EAAEuB,EAAE,CAAC,CAACxB,IAAID,EAAEK,UAAUJ,IAAID,EAAEO,UAAUJ,OAAOY,OAAOd,GAAGA,EAAEM,YAAYO,YAAYd,EAAE,IAAIE,EAAE,CAAC0h+C,eAAe,CAACj99C,cAAa,IAAK,OAAOzE,EAAE0h+C,eAAe599C,IAAI,WAAW,OAAO,IAAI1D,MAAM,GAAG29H,KAAK,KAAK,EAAEj+H,EAAEO,UAAU+39C,cAAc,SAASr49C,GAAG,OAAOY,KAAKmD,IAAI/D,EAAE,EAAED,EAAEO,UAAUu09C,OAAO,WAAW,GAAG,IAAI7z9C,UAAUC,OAAO,CAAC,IAAI,IAAmBhB,EAAEe,UAAU,GAAGQ,GAAE,EAAGb,EAAjCK,UAAU,GAA2BuB,WAAW5B,EAAE+/9C,WAAW9/9C,KAAKmlB,IAAIplB,EAAEgB,OAAO1B,GAAGuB,GAAE,EAAG,OAAOA,CAAC,CAAC,OAAOxB,EAAEM,UAAUu09C,OAAO1z9C,MAAMP,KAAKI,UAAU,EAAEjB,EAAEO,UAAU6wB,MAAM,WAAW,IAAI,IAAIpxB,EAAEC,EAAEM,UAAU6wB,MAAM3wB,KAAKI,MAAMX,EAAE,EAAEA,EAAEW,KAAK4kB,OAAOvlB,IAAIF,EAAEgmB,IAAI9lB,EAAEW,KAAKmD,IAAI9D,GAAGygI,QAAQ,OAAO3gI,CAAC,EAAEA,EAAEO,UAAUm49C,kBAAkB,WAAW,OAAO739C,KAAK6tH,QAAQ1uH,EAAE4h+C,eAAe,EAAE5h+C,EAAEO,UAAUylB,IAAI,WAAW,GAAG,IAAI/kB,UAAUC,OAAO,CAAC,IAAIlB,EAAEiB,UAAU,GAAGhB,EAAEM,UAAUylB,IAAIvlB,KAAKI,KAAKb,EAAE,MAAM,GAAG,IAAIiB,UAAUC,OAAO,CAAC,GAAGD,UAAU,aAAaX,OAAO,kBAAkBW,UAAU,GAAG,CAAC,IAAIf,EAAEe,UAAU,GAAGQ,EAAER,UAAU,GAAG,OAAOJ,KAAKmlB,IAAI9lB,EAAEuB,GAAE,IAAI,CAAE,CAAC,GAAGR,UAAU,aAAa+D,GAAG,kBAAkB/D,UAAU,GAAG,CAAC,IAAIL,EAAEK,UAAU,GAAG,IAAIA,UAAU,IAAIJ,KAAK4kB,QAAQ,GAAM5kB,KAAKmD,IAAInD,KAAK4kB,OAAO,GAAG8v8C,SAAS309C,GAAG,OAAO,KAAKX,EAAEM,UAAUylB,IAAIvlB,KAAKI,KAAKD,EAAE,MAAM,GAAGK,UAAU,aAAad,QAAQ,kBAAkBc,UAAU,GAAG,CAAC,IAAIE,EAAEF,UAAU,GAAGU,EAAEV,UAAU,GAAG,OAAOJ,KAAKmlB,IAAI7kB,EAAEQ,IAAG,CAAE,CAAC,MAAM,GAAG,IAAIV,UAAUC,OAAO,CAAC,GAAG,kBAAkBD,UAAU,IAAIA,UAAU,aAAaX,OAAO,kBAAkBW,UAAU,GAAG,CAAC,IAAIY,EAAEZ,UAAU,GAAGiC,EAAEjC,UAAU,GAAG,GAAGA,UAAU,GAAG,IAAI,IAAIoC,EAAE,EAAEA,EAAExB,EAAEX,OAAOmC,IAAIxC,KAAKmlB,IAAInkB,EAAEwB,GAAGH,QAAQ,IAAI,IAAIxB,EAAEG,EAAEX,OAAO,EAAEQ,GAAG,EAAEA,IAAIb,KAAKmlB,IAAInkB,EAAEH,GAAGwB,GAAG,OAAM,CAAE,CAAC,GAAG,kBAAkBjC,UAAU,IAAI+kC,OAAOglH,UAAU/pJ,UAAU,KAAKA,UAAU,aAAa+D,EAAE,CAAC,IAAIrB,EAAE1C,UAAU,GAAGwC,EAAExC,UAAU,GAAG,IAAIA,UAAU,GAAG,CAAC,IAAIsC,EAAE1C,KAAK4kB,OAAO,GAAGliB,EAAE,EAAE,CAAC,GAAGI,EAAE,GAAM9C,KAAKmD,IAAIL,EAAE,GAAG4x9C,SAAS9x9C,GAAG,OAAO,KAAK,GAAGE,EAAEJ,GAAM1C,KAAKmD,IAAIL,GAAG4x9C,SAAS9x9C,GAAG,OAAO,IAAK,CAAC,CAACxD,EAAEM,UAAUylB,IAAIvlB,KAAKI,KAAK8C,EAAEF,EAAE,CAAC,MAAM,GAAG,IAAIxC,UAAUC,OAAO,CAAC,IAAI8B,EAAE/B,UAAU,GAAGuC,EAAEvC,UAAU,GAAG4C,EAAE5C,UAAU,GAAGwD,EAAExD,UAAU,GAAGgD,EAAE,EAAEJ,EAAEY,IAAIR,GAAG,GAAG,IAAI,IAAIH,EAAED,EAAEC,IAAIW,EAAEX,GAAGG,EAAEpD,KAAKmlB,IAAIhjB,EAAEc,GAAGN,GAAG,OAAM,CAAE,CAAC,EAAExD,EAAEO,UAAUsh+C,UAAU,WAAWhh+C,KAAK4kB,OAAO,GAAG5kB,KAAKmlB,IAAI,IAAIhhB,EAAEnE,KAAKmD,IAAI,KAAI,EAAG,EAAEhE,EAAEO,UAAUw09C,YAAY,WAAW,MAAM,EAAE,EAAE/09C,EAAEO,UAAUon+B,SAAS,WAAW,OAAO3n+B,CAAC,EAAEG,OAAOkU,iBAAiBrU,EAAEE,GAAGF,CAAC,CAAr5E,CAAu5E8P,IAAIZ,GAAG,WAAW,EAAElB,GAAG,CAAC8z9C,kBAAkB,CAACn99C,cAAa,GAAIo99C,wBAAwB,CAACp99C,cAAa,GAAIi99C,eAAe,CAACj99C,cAAa,IAAKqJ,GAAG8z9C,kBAAkB999C,IAAI,WAAW,OAAOoK,EAAE,EAAEJ,GAAG+z9C,wBAAwB/99C,IAAI,WAAW,OAAO4K,EAAE,EAAEZ,GAAG4z9C,eAAe599C,IAAI,WAAW,OAAO,IAAI1D,MAAM,GAAG29H,KAAK,KAAK,EAAE/uH,GAAG3O,UAAUw09C,YAAY,WAAW,MAAM,EAAE,EAAE7l9C,GAAG3O,UAAUon+B,SAAS,WAAW,OAAOz49B,EAAE,EAAEA,GAAG8y9C,OAAO,SAAS/h+C,GAAG,QAAQA,EAAEiB,OAAO,IAAMjB,EAAE,GAAGs19C,SAASt19C,EAAEA,EAAEiB,OAAO,IAAG,EAAEgO,GAAG+y9C,YAAY,SAAShi+C,EAAED,GAAG,IAAI,IAAIE,EAAE,EAAEA,EAAED,EAAEiB,OAAOhB,IAAI,CAAC,IAAIuB,EAAExB,EAAEC,GAAG,GAAGgP,GAAG7N,QAAQI,EAAEzB,GAAG,EAAE,OAAOyB,CAAC,CAAC,OAAO,IAAI,EAAEyN,GAAGgkF,OAAO,SAASjzF,EAAED,GAAG,IAAIE,EAAEgP,GAAG7N,QAAQrB,EAAEC,GAAG,GAAGC,EAAE,EAAE,OAAO,KAAK,IAAIuB,EAAE,IAAInB,MAAML,EAAEiB,QAAQ+8H,KAAK,MAAM33H,EAAEqy9C,UAAU149C,EAAEC,EAAEuB,EAAE,EAAExB,EAAEiB,OAAOhB,GAAGoG,EAAEqy9C,UAAU149C,EAAE,EAAEwB,EAAExB,EAAEiB,OAAOhB,EAAEA,GAAGoG,EAAEqy9C,UAAUl39C,EAAE,EAAExB,EAAE,EAAEA,EAAEiB,OAAO,EAAEgO,GAAGkkI,OAAO,WAAW,GAAG,IAAInyI,UAAUC,OAAO,CAAC,IAAIjB,EAAEgB,UAAU,GAAGjB,EAAEiB,UAAU,GAAG,GAAGhB,IAAID,EAAE,OAAM,EAAG,GAAG,OAAOC,GAAG,OAAOD,EAAE,OAAM,EAAG,GAAGC,EAAEiB,SAASlB,EAAEkB,OAAO,OAAM,EAAG,IAAI,IAAIhB,EAAE,EAAEA,EAAED,EAAEiB,OAAOhB,IAAI,IAAID,EAAEC,GAAGkzI,OAAOpzI,EAAEE,IAAI,OAAM,EAAG,OAAM,CAAE,CAAC,GAAG,IAAIe,UAAUC,OAAO,CAAC,IAAIO,EAAER,UAAU,GAAGL,EAAEK,UAAU,GAAGE,EAAEF,UAAU,GAAG,GAAGQ,IAAIb,EAAE,OAAM,EAAG,GAAG,OAAOa,GAAG,OAAOb,EAAE,OAAM,EAAG,GAAGa,EAAEP,SAASN,EAAEM,OAAO,OAAM,EAAG,IAAI,IAAIS,EAAE,EAAEA,EAAEF,EAAEP,OAAOS,IAAI,GAAG,IAAIR,EAAE4pH,QAAQtpH,EAAEE,GAAGf,EAAEe,IAAI,OAAM,EAAG,OAAM,CAAE,CAAC,EAAEuN,GAAG6uL,aAAa,SAAS99L,EAAED,GAAG,IAAI,IAAIE,EAAE,IAAIoO,GAAG7M,EAAE,EAAEA,EAAExB,EAAEiB,OAAOO,IAAIzB,EAAEgnW,WAAW/mW,EAAEwB,KAAKvB,EAAE8lB,IAAI/lB,EAAEwB,IAAG,GAAI,OAAOvB,EAAEw49C,mBAAmB,EAAExp9C,GAAGgz9C,kBAAkB,SAASji+C,GAAG,IAAI,IAAID,EAAE,EAAEA,EAAEC,EAAEiB,OAAOlB,IAAI,GAAGC,EAAED,EAAE,GAAGozI,OAAOnzI,EAAED,IAAI,OAAM,EAAG,OAAM,CAAE,EAAEkP,GAAGiz9C,qBAAqB,SAASli+C,GAAG,OAAIiP,GAAGgz9C,kBAAkBji+C,GAAmB,IAAIqO,GAAGrO,GAAE,GAAIy49C,oBAAtBz49C,CAAyC,EAAEiP,GAAGisD,QAAQ,SAASl7D,GAAG,IAAI,IAAID,EAAEC,EAAEiB,OAAO,EAAEhB,EAAEwD,KAAK2K,MAAMrO,EAAE,GAAGyB,EAAE,EAAEA,GAAGvB,EAAEuB,IAAI,CAAC,IAAIb,EAAEX,EAAEwB,GAAGxB,EAAEwB,GAAGxB,EAAED,EAAEyB,GAAGxB,EAAED,EAAEyB,GAAGb,CAAC,CAAC,EAAEsO,GAAGkz9C,WAAW,SAASni+C,GAAG,IAAI,IAAID,EAAE,EAAEE,EAAE,EAAEA,EAAED,EAAEiB,OAAOhB,IAAI,OAAOD,EAAEC,IAAIF,IAAI,IAAIyB,EAAE,IAAInB,MAAMN,GAAGi+H,KAAK,MAAM,GAAG,IAAIj+H,EAAE,OAAOyB,EAAE,IAAI,IAAIb,EAAE,EAAEO,EAAE,EAAEA,EAAElB,EAAEiB,OAAOC,IAAI,OAAOlB,EAAEkB,KAAKM,EAAEb,KAAKX,EAAEkB,IAAI,OAAOM,CAAC,EAAEyN,GAAGmz9C,SAAS,WAAW,GAAG,IAAIph+C,UAAUC,OAAO,CAAC,IAAI,IAAIjB,EAAEgB,UAAU,GAAGjB,EAAE,IAAIM,MAAML,EAAEiB,QAAQ+8H,KAAK,MAAM/9H,EAAE,EAAEA,EAAED,EAAEiB,OAAOhB,IAAIF,EAAEE,GAAG,IAAI8E,EAAE/E,EAAEC,IAAI,OAAOF,CAAC,CAAC,GAAG,IAAIiB,UAAUC,OAAO,IAAI,IAAIO,EAAER,UAAU,GAAGL,EAAEK,UAAU,GAAGE,EAAEF,UAAU,GAAGU,EAAEV,UAAU,GAAGY,EAAEZ,UAAU,GAAGiC,EAAE,EAAEA,EAAErB,EAAEqB,IAAI/B,EAAEQ,EAAEuB,GAAG,IAAI8B,EAAEvD,EAAEb,EAAEsC,GAAG,EAAEgM,GAAGoz9C,gBAAgB,SAASri+C,EAAED,GAAG,IAAI,IAAIE,EAAE,EAAEA,EAAED,EAAEiB,OAAOhB,IAAI,CAAC,IAAIuB,EAAExB,EAAEC,GAAGU,EAAEZ,EAAEC,EAAEiB,OAAOhB,EAAE,GAAG,GAAG,IAAIuB,EAAEiyQ,UAAU9yQ,GAAG,OAAM,CAAE,CAAC,OAAM,CAAE,EAAEsO,GAAGqz9C,SAAS,SAASti+C,GAAG,IAAI,IAAID,EAAE,IAAIiF,EAAE/E,EAAE,EAAEA,EAAED,EAAEiB,OAAOhB,IAAIF,EAAEo59C,gBAAgBn59C,EAAEC,IAAI,OAAOF,CAAC,EAAEkP,GAAGwp9C,kBAAkB,SAASz49C,GAAG,OAAOA,EAAEyuH,QAAQx/G,GAAG0y9C,eAAe,EAAE1y9C,GAAGsz9C,6BAA6B,SAASvi+C,EAAED,GAAG,OAAOA,EAAEkB,QAAQjB,EAAED,EAAE,EAAE,EAAEkP,GAAG7N,QAAQ,SAASpB,EAAED,GAAG,IAAI,IAAIE,EAAE,EAAEA,EAAEF,EAAEkB,OAAOhB,IAAI,GAAGD,EAAEmzI,OAAOpzI,EAAEE,IAAI,OAAOA,EAAE,OAAO,CAAC,EAAEgP,GAAGuz9C,oBAAoB,SAASxi+C,GAAG,IAAI,IAAID,EAAE,EAAEA,EAAE0D,KAAK2K,MAAMpO,EAAEiB,OAAO,GAAGlB,IAAI,CAAC,IAAIE,EAAED,EAAEiB,OAAO,EAAElB,EAAEyB,EAAExB,EAAED,GAAG0zQ,UAAUzzQ,EAAEC,IAAI,GAAG,IAAIuB,EAAE,OAAOA,CAAC,CAAC,OAAO,CAAC,EAAEyN,GAAG67G,QAAQ,SAAS9qH,EAAED,GAAG,IAAI,IAAIE,EAAE,EAAEA,EAAED,EAAEiB,QAAQhB,EAAEF,EAAEkB,QAAQ,CAAC,IAAIO,EAAExB,EAAEC,GAAGwzQ,UAAU1zQ,EAAEE,IAAI,GAAG,IAAIuB,EAAE,OAAOA,EAAEvB,GAAG,CAAC,OAAOA,EAAEF,EAAEkB,QAAQ,EAAEhB,EAAED,EAAEiB,OAAO,EAAE,CAAC,EAAEgO,GAAGwz9C,cAAc,SAASzi+C,GAAG,IAAI,IAAID,EAAE,KAAKE,EAAE,EAAEA,EAAED,EAAEiB,OAAOhB,KAAK,OAAOF,GAAGA,EAAE0zQ,UAAUzzQ,EAAEC,IAAI,KAAKF,EAAEC,EAAEC,IAAI,OAAOF,CAAC,EAAEkP,GAAG0tH,QAAQ,SAAS38H,EAAED,EAAEE,GAAGF,EAAEmF,EAAEo0V,MAAMv5V,EAAE,EAAEC,EAAEiB,QAAQ,IAAIO,GAAGvB,EAAEiF,EAAEo0V,MAAMr5V,GAAG,EAAED,EAAEiB,SAASlB,EAAE,EAAEE,EAAE,IAAIuB,EAAE,GAAGzB,GAAGC,EAAEiB,SAASO,EAAE,GAAGvB,EAAEF,IAAIyB,EAAE,GAAG,IAAIb,EAAE,IAAIN,MAAMmB,GAAGw8H,KAAK,MAAM,GAAG,IAAIx8H,EAAE,OAAOb,EAAE,IAAI,IAAIO,EAAE,EAAEQ,EAAE3B,EAAE2B,GAAGzB,EAAEyB,IAAIf,EAAEO,KAAKlB,EAAE0B,GAAG,OAAOf,CAAC,EAAET,OAAOkU,iBAAiBnF,GAAGlB,IAAI,IAAII,GAAG,WAAW,EAAEA,GAAG7N,UAAUwqH,QAAQ,SAAS9qH,EAAED,GAAG,OAAOkP,GAAG67G,QAAQ9qH,EAAED,EAAE,EAAEoO,GAAG7N,UAAUw09C,YAAY,WAAW,MAAM,CAAChv9C,EAAE,EAAEqI,GAAG7N,UAAUon+B,SAAS,WAAW,OAAOv59B,EAAE,EAAE,IAAIQ,GAAG,WAAW,EAAEA,GAAGrO,UAAUwqH,QAAQ,SAAS9qH,EAAED,GAAG,IAAIE,EAAED,EAAEwB,EAAEzB,EAAE,GAAGE,EAAEgB,OAAOO,EAAEP,OAAO,OAAO,EAAE,GAAGhB,EAAEgB,OAAOO,EAAEP,OAAO,OAAO,EAAE,GAAG,IAAIhB,EAAEgB,OAAO,OAAO,EAAE,IAAIN,EAAEsO,GAAG67G,QAAQ7qH,EAAEuB,GAAG,OAAOyN,GAAGoz9C,gBAAgBpi+C,EAAEuB,GAAG,EAAEb,CAAC,EAAEgO,GAAGrO,UAAUoi+C,WAAW,SAAS1i+C,EAAED,GAAG,IAAIE,EAAED,EAAEwB,EAAEzB,EAAE,GAAGE,EAAEgB,OAAOO,EAAEP,OAAO,OAAO,EAAE,GAAGhB,EAAEgB,OAAOO,EAAEP,OAAO,OAAO,EAAE,GAAG,IAAIhB,EAAEgB,OAAO,OAAO,EAAE,IAAI,IAAIN,EAAEsO,GAAGuz9C,oBAAoBvi+C,GAAGiB,EAAE+N,GAAGuz9C,oBAAoBhh+C,GAAGE,EAAEf,EAAE,EAAE,EAAEV,EAAEgB,OAAO,EAAEW,EAAEV,EAAE,EAAE,EAAEjB,EAAEgB,OAAO,EAAEgC,EAAE,EAAEA,EAAEhD,EAAEgB,OAAOgC,IAAI,CAAC,IAAIG,EAAEnD,EAAEyB,GAAG+xQ,UAAUjyQ,EAAEI,IAAI,GAAG,IAAIwB,EAAE,OAAOA,EAAE1B,GAAGf,EAAEiB,GAAGV,CAAC,CAAC,OAAO,CAAC,EAAEyN,GAAGrO,UAAUw09C,YAAY,WAAW,MAAM,CAAChv9C,EAAE,EAAE6I,GAAGrO,UAAUon+B,SAAS,WAAW,OAAO/49B,EAAE,EAAE,IAAIE,GAAG,WAAW,EAAEA,GAAGvO,UAAUyD,IAAI,WAAW,EAAE8K,GAAGvO,UAAUwh9B,IAAI,WAAW,EAAEjz8B,GAAGvO,UAAUklB,KAAK,WAAW,EAAE3W,GAAGvO,UAAUgd,OAAO,WAAW,EAAEzO,GAAGvO,UAAUqi+C,SAAS,WAAW,EAAE,IAAIzz9C,GAAG,SAASlP,GAAG,SAASD,IAAIC,EAAEmB,MAAMP,KAAKI,UAAU,CAAC,OAAOhB,IAAID,EAAEK,UAAUJ,GAAGD,EAAEO,UAAUJ,OAAOY,OAAOd,GAAGA,EAAEM,WAAWP,EAAEO,UAAUO,YAAYd,EAAEA,CAAC,CAAhJ,CAAkJ8O,KAAKlO,EAAEL,UAAU,IAAI8nB,OAAO9c,KAAK,yBAAyBpK,EAAEZ,UAAU,IAAIoO,IAAI8uB,SAAS,WAAW,EAAE,IAAI/tB,GAAG,SAASzP,GAAG,SAASD,IAAIC,EAAEQ,KAAKI,MAAMA,KAAKg09C,OAAO,GAAG5z9C,UAAU,aAAa0N,IAAI9N,KAAKi09C,OAAO7z9C,UAAU,GAAG,CAAC,OAAOhB,IAAID,EAAEK,UAAUJ,GAAGD,EAAEO,UAAUJ,OAAOY,OAAOd,GAAGA,EAAEM,WAAWP,EAAEO,UAAUO,YAAYd,EAAEA,EAAEO,UAAUk9B,SAAS,SAASx9B,GAAG,IAAI,IAAID,EAAE,EAAEE,EAAEW,KAAKg09C,OAAO3z9C,OAAOlB,EAAEE,EAAEF,IAAK,GAAGa,KAAKg09C,OAAO709C,KAAKC,EAAE,OAAM,EAAG,OAAM,CAAE,EAAED,EAAEO,UAAUylB,IAAI,SAAS/lB,GAAG,OAAOY,KAAK48B,SAASx9B,KAAKY,KAAKg09C,OAAOny9C,KAAKzC,IAAG,EAAG,EAAED,EAAEO,UAAUu09C,OAAO,SAAS709C,GAAG,IAAI,IAAID,EAAEC,EAAEuC,WAAWxC,EAAE2g+C,WAAW9/9C,KAAKmlB,IAAIhmB,EAAE4B,QAAQ,OAAM,CAAE,EAAE5B,EAAEO,UAAUmzB,OAAO,SAASzzB,GAAG,MAAM,IAAIooB,KAAK,EAAEroB,EAAEO,UAAUklB,KAAK,WAAW,OAAO5kB,KAAKg09C,OAAO3z9C,MAAM,EAAElB,EAAEO,UAAU2oE,QAAQ,WAAW,OAAO,IAAIroE,KAAKg09C,OAAO3z9C,MAAM,EAAElB,EAAEO,UAAUmuH,QAAQ,WAAW,IAAI,IAAIzuH,EAAE,GAAGD,EAAE,EAAEE,EAAEW,KAAKg09C,OAAO3z9C,OAAOlB,EAAEE,EAAEF,IAAIC,EAAEyC,KAAK7B,KAAKg09C,OAAO709C,IAAI,OAAOC,CAAC,EAAED,EAAEO,UAAUiC,SAAS,WAAW,OAAO,IAAIuN,GAAGlP,KAAK,EAAEb,CAAC,CAApzB,CAAszBmB,GAAG4O,GAAG,SAAS9P,GAAG,SAASD,EAAEA,GAAGC,EAAEQ,KAAKI,MAAMA,KAAKgi+C,SAAS7i+C,EAAEa,KAAK8g+C,UAAU,CAAC,CAAC,OAAO1h+C,IAAID,EAAEK,UAAUJ,GAAGD,EAAEO,UAAUJ,OAAOY,OAAOd,GAAGA,EAAEM,WAAWP,EAAEO,UAAUO,YAAYd,EAAEA,EAAEO,UAAUqB,KAAK,WAAW,GAAGf,KAAK8g+C,YAAY9g+C,KAAKgi+C,SAASp98C,OAAO,MAAM,IAAIhkB,EAAE,OAAOZ,KAAKgi+C,SAAShO,OAAOh09C,KAAK8g+C,YAAY,EAAE3h+C,EAAEO,UAAUog+C,QAAQ,WAAW,OAAO9/9C,KAAK8g+C,UAAU9g+C,KAAKgi+C,SAASp98C,MAAM,EAAEzlB,EAAEO,UAAUmzB,OAAO,WAAW,MAAM,IAAI9yB,CAAC,EAAEZ,CAAC,CAA7Z,CAA+ZsP,IAAIyB,GAAG,GAAGpN,EAAEpD,UAAU,IAAI4O,IAAInL,IAAI,SAAS/D,GAAG,IAAI,IAAID,EAAEa,KAAK8z9C,MAAM,OAAO309C,GAAG,CAAC,IAAIE,EAAED,EAAEyzQ,UAAU1zQ,EAAE0lB,KAAK,GAAGxlB,EAAE,EAAEF,EAAEA,EAAE0/B,SAAS,CAAC,KAAKx/B,EAAE,GAAG,OAAOF,EAAEgC,MAAMhC,EAAEA,EAAE0gG,KAAK,CAAC,CAAC,OAAO,IAAI,EAAE/8F,EAAEpD,UAAUwh9B,IAAI,SAAS9h9B,EAAED,GAAG,GAAG,OAAOa,KAAK8z9C,MAAM,OAAO9z9C,KAAK8z9C,MAAM,CAACjv8C,IAAIzlB,EAAE+B,MAAMhC,EAAE0/B,KAAK,KAAKghE,MAAM,KAAKxO,OAAO,KAAKk8B,MAAMr9G,GAAGgsH,SAAS,WAAW,OAAOl8H,KAAKmB,KAAK,EAAE0zV,OAAO,WAAW,OAAO70V,KAAK6kB,GAAG,GAAG7kB,KAAK+z9C,MAAM,EAAE,KAAK,IAAI109C,EAAEuB,EAAEb,EAAEC,KAAK8z9C,MAAM,GAAG,GAAGz09C,EAAEU,GAAGa,EAAExB,EAAEyzQ,UAAU9yQ,EAAE8kB,MAAM,EAAE9kB,EAAEA,EAAE8+B,SAAS,CAAC,KAAKj+B,EAAE,GAAG,CAAC,IAAIN,EAAEP,EAAEoB,MAAM,OAAOpB,EAAEoB,MAAMhC,EAAEmB,CAAC,CAACP,EAAEA,EAAE8/F,KAAK,QAAQ,OAAO9/F,GAAG,IAAIe,EAAE,CAAC+jB,IAAIzlB,EAAEy/B,KAAK,KAAKghE,MAAM,KAAK1+F,MAAMhC,EAAEkyF,OAAOhyF,EAAEkuH,MAAMr9G,GAAGgsH,SAAS,WAAW,OAAOl8H,KAAKmB,KAAK,EAAE0zV,OAAO,WAAW,OAAO70V,KAAK6kB,GAAG,GAAG,OAAOjkB,EAAE,EAAEvB,EAAEw/B,KAAK/9B,EAAEzB,EAAEwgG,MAAM/+F,EAAEd,KAAKii+C,kBAAkBnh+C,GAAGd,KAAK+z9C,QAAQ,IAAI,EAAEjx9C,EAAEpD,UAAUui+C,kBAAkB,SAAS7i+C,GAAG,IAAIA,EAAEmuH,MAAM,EAAE,MAAMnuH,GAAGA,IAAIY,KAAK8z9C,OAAO,IAAI109C,EAAEiyF,OAAOk8B,OAAO,GAAGvsH,EAAE5B,KAAKoD,EAAExB,EAAEA,EAAE5B,KAAK,CAAC,IAAID,EAAE0B,EAAEG,EAAEA,EAAE5B,KAAK,IAAI0B,EAAE3B,IAAIkD,EAAErB,EAAE5B,GAAG8Q,IAAI7N,EAAElD,EAAE+Q,IAAI7N,EAAErB,EAAEA,EAAE5B,IAAI,GAAGA,EAAE4B,EAAEA,EAAE5B,MAAMA,IAAIyB,EAAEG,EAAE5B,MAAMA,EAAE4B,EAAE5B,GAAGY,KAAKsnH,WAAWloH,IAAIiD,EAAErB,EAAE5B,GAAG8Q,IAAI7N,EAAErB,EAAEA,EAAE5B,IAAI,GAAGY,KAAKwnH,YAAYxmH,EAAEA,EAAE5B,KAAK,KAAK,CAAC,IAAIC,EAAEmD,EAAExB,EAAEA,EAAE5B,KAAK,IAAI0B,EAAEzB,IAAIgD,EAAErB,EAAE5B,GAAG8Q,IAAI7N,EAAEhD,EAAE6Q,IAAI7N,EAAErB,EAAEA,EAAE5B,IAAI,GAAGA,EAAE4B,EAAEA,EAAE5B,MAAMA,IAAIoD,EAAExB,EAAE5B,MAAMA,EAAE4B,EAAE5B,GAAGY,KAAKwnH,YAAYpoH,IAAIiD,EAAErB,EAAE5B,GAAG8Q,IAAI7N,EAAErB,EAAEA,EAAE5B,IAAI,GAAGY,KAAKsnH,WAAWtmH,EAAEA,EAAE5B,KAAK,CAACY,KAAK8z9C,MAAMvm2C,MAAMr9G,EAAE,EAAEpN,EAAEpD,UAAUgd,OAAO,WAAW,IAAItd,EAAE,IAAI6P,GAAG9P,EAAEa,KAAKki+C,gBAAgB,GAAG,OAAO/i+C,EAAE,IAAIC,EAAE+lB,IAAIhmB,EAAEgC,OAAO,QAAQhC,EAAE2D,EAAE8z/B,UAAUz3/B,KAAKC,EAAE+lB,IAAIhmB,EAAEgC,OAAO,OAAO/B,CAAC,EAAE0D,EAAEpD,UAAUqi+C,SAAS,WAAW,IAAI3i+C,EAAE,IAAIyP,GAAG1P,EAAEa,KAAKki+C,gBAAgB,GAAG,OAAO/i+C,EAAE,IAAIC,EAAE+lB,IAAIhmB,GAAG,QAAQA,EAAE2D,EAAE8z/B,UAAUz3/B,KAAKC,EAAE+lB,IAAIhmB,GAAG,OAAOC,CAAC,EAAE0D,EAAEpD,UAAU4nH,WAAW,SAASloH,GAAG,GAAG,MAAMA,EAAE,CAAC,IAAID,EAAEC,EAAEygG,MAAMzgG,EAAEygG,MAAM1gG,EAAE0/B,KAAK,MAAM1/B,EAAE0/B,OAAO1/B,EAAE0/B,KAAKwyD,OAAOjyF,GAAGD,EAAEkyF,OAAOjyF,EAAEiyF,OAAO,OAAOjyF,EAAEiyF,OAAOrxF,KAAK8z9C,MAAM309C,EAAEC,EAAEiyF,OAAOxyD,OAAOz/B,EAAEA,EAAEiyF,OAAOxyD,KAAK1/B,EAAEC,EAAEiyF,OAAOwO,MAAM1gG,EAAEA,EAAE0/B,KAAKz/B,EAAEA,EAAEiyF,OAAOlyF,CAAC,CAAC,EAAE2D,EAAEpD,UAAU8nH,YAAY,SAASpoH,GAAG,GAAG,MAAMA,EAAE,CAAC,IAAID,EAAEC,EAAEy/B,KAAKz/B,EAAEy/B,KAAK1/B,EAAE0gG,MAAM,MAAM1gG,EAAE0gG,QAAQ1gG,EAAE0gG,MAAMxO,OAAOjyF,GAAGD,EAAEkyF,OAAOjyF,EAAEiyF,OAAO,OAAOjyF,EAAEiyF,OAAOrxF,KAAK8z9C,MAAM309C,EAAEC,EAAEiyF,OAAOwO,QAAQzgG,EAAEA,EAAEiyF,OAAOwO,MAAM1gG,EAAEC,EAAEiyF,OAAOxyD,KAAK1/B,EAAEA,EAAE0gG,MAAMzgG,EAAEA,EAAEiyF,OAAOlyF,CAAC,CAAC,EAAE2D,EAAEpD,UAAUwi+C,cAAc,WAAW,IAAI9i+C,EAAEY,KAAK8z9C,MAAM,GAAG,MAAM109C,EAAE,KAAK,MAAMA,EAAEy/B,MAAMz/B,EAAEA,EAAEy/B,KAAK,OAAOz/B,CAAC,EAAE0D,EAAE8z/B,UAAU,SAASx3/B,GAAG,GAAG,OAAOA,EAAE,OAAO,KAAK,GAAG,OAAOA,EAAEygG,MAAM,CAAC,IAAI,IAAI1gG,EAAEC,EAAEygG,MAAM,OAAO1gG,EAAE0/B,MAAM1/B,EAAEA,EAAE0/B,KAAK,OAAO1/B,CAAC,CAAC,IAAI,IAAIE,EAAED,EAAEiyF,OAAOzwF,EAAExB,EAAE,OAAOC,GAAGuB,IAAIvB,EAAEwgG,OAAOj/F,EAAEvB,EAAEA,EAAEA,EAAEgyF,OAAO,OAAOhyF,CAAC,EAAEyD,EAAEpD,UAAUklB,KAAK,WAAW,OAAO5kB,KAAK+z9C,KAAK,EAAE,IAAInl9C,GAAG,WAAW,EAAEA,GAAGlP,UAAUw09C,YAAY,WAAW,MAAM,EAAE,EAAEtl9C,GAAGlP,UAAUon+B,SAAS,WAAW,OAAOl49B,EAAE,EAAEhM,EAAElD,UAAU,IAAIY,GAAGoC,EAAEhD,UAAU,IAAIkD,GAAGg6B,SAAS,SAASx9B,GAAG,IAAI,IAAID,EAAE,EAAEE,EAAEW,KAAKg09C,OAAO3z9C,OAAOlB,EAAEE,EAAEF,IAAK,GAAG,IAAIa,KAAKg09C,OAAO709C,GAAG0zQ,UAAUzzQ,GAAG,OAAM,EAAG,OAAM,CAAE,EAAEsD,EAAEhD,UAAUylB,IAAI,SAAS/lB,GAAG,GAAGY,KAAK48B,SAASx9B,GAAG,OAAM,EAAG,IAAI,IAAID,EAAE,EAAEE,EAAEW,KAAKg09C,OAAO3z9C,OAAOlB,EAAEE,EAAEF,IAAK,GAAG,IAAIa,KAAKg09C,OAAO709C,GAAG0zQ,UAAUzzQ,GAAG,OAAOY,KAAKg09C,OAAO/w8C,OAAO9jB,EAAE,EAAEC,IAAG,EAAG,OAAOY,KAAKg09C,OAAOny9C,KAAKzC,IAAG,CAAE,EAAEsD,EAAEhD,UAAUu09C,OAAO,SAAS709C,GAAG,IAAI,IAAID,EAAEC,EAAEuC,WAAWxC,EAAE2g+C,WAAW9/9C,KAAKmlB,IAAIhmB,EAAE4B,QAAQ,OAAM,CAAE,EAAE2B,EAAEhD,UAAUmzB,OAAO,SAASzzB,GAAG,MAAM,IAAIW,CAAC,EAAE2C,EAAEhD,UAAUklB,KAAK,WAAW,OAAO5kB,KAAKg09C,OAAO3z9C,MAAM,EAAEqC,EAAEhD,UAAU2oE,QAAQ,WAAW,OAAO,IAAIroE,KAAKg09C,OAAO3z9C,MAAM,EAAEqC,EAAEhD,UAAUmuH,QAAQ,WAAW,IAAI,IAAIzuH,EAAE,GAAGD,EAAE,EAAEE,EAAEW,KAAKg09C,OAAO3z9C,OAAOlB,EAAEE,EAAEF,IAAIC,EAAEyC,KAAK7B,KAAKg09C,OAAO709C,IAAI,OAAOC,CAAC,EAAEsD,EAAEhD,UAAUiC,SAAS,WAAW,OAAO,IAAIoN,GAAG/O,KAAK,EAAE,IAAI+O,GAAG,SAAS3P,GAAGY,KAAKmi+C,SAAS/i+C,EAAEY,KAAK8g+C,UAAU,CAAC,EAAE/x9C,GAAGrP,UAAUqB,KAAK,WAAW,GAAGf,KAAK8g+C,YAAY9g+C,KAAKmi+C,SAASv98C,OAAO,MAAM,IAAIhkB,EAAE,OAAOZ,KAAKmi+C,SAASnO,OAAOh09C,KAAK8g+C,YAAY,EAAE/x9C,GAAGrP,UAAUog+C,QAAQ,WAAW,OAAO9/9C,KAAK8g+C,UAAU9g+C,KAAKmi+C,SAASv98C,MAAM,EAAE7V,GAAGrP,UAAUmzB,OAAO,WAAW,MAAM,IAAI9yB,CAAC,EAAE,IAAI2O,GAAG,WAAW,EAAEA,GAAG69B,KAAK,WAAW,IAAIntC,EAAED,EAAEE,EAAEuB,EAAEb,EAAEK,UAAU,GAAG,GAAG,IAAIA,UAAUC,OAAOO,EAAE,SAASxB,EAAED,GAAG,OAAOC,EAAEyzQ,UAAU1zQ,EAAE,EAAEY,EAAEwsC,KAAK3rC,QAAQ,GAAG,IAAIR,UAAUC,OAAOhB,EAAEe,UAAU,GAAGQ,EAAE,SAASxB,EAAED,GAAG,OAAOE,EAAE6qH,QAAQ9qH,EAAED,EAAE,EAAEY,EAAEwsC,KAAK3rC,QAAQ,GAAG,IAAIR,UAAUC,OAAO,EAAElB,EAAEY,EAAEgC,MAAM3B,UAAU,GAAGA,UAAU,KAAKmsC,OAAO,IAAIjsC,EAAEP,EAAEgC,MAAM,EAAE3B,UAAU,IAAI4B,OAAO7C,EAAEY,EAAEgC,MAAM3B,UAAU,GAAGL,EAAEM,SAAS,IAAIN,EAAEkjB,OAAO,EAAEljB,EAAEM,QAAQjB,EAAE,EAAEA,EAAEkB,EAAED,OAAOjB,IAAIW,EAAE8B,KAAKvB,EAAElB,GAAG,MAAM,GAAG,IAAIgB,UAAUC,OAAO,IAAIlB,EAAEY,EAAEgC,MAAM3B,UAAU,GAAGA,UAAU,IAAIf,EAAEe,UAAU,GAAGQ,EAAE,SAASxB,EAAED,GAAG,OAAOE,EAAE6qH,QAAQ9qH,EAAED,EAAE,EAAEA,EAAEotC,KAAK3rC,GAAGN,EAAEP,EAAEgC,MAAM,EAAE3B,UAAU,IAAI4B,OAAO7C,EAAEY,EAAEgC,MAAM3B,UAAU,GAAGL,EAAEM,SAASN,EAAEkjB,OAAO,EAAEljB,EAAEM,QAAQjB,EAAE,EAAEA,EAAEkB,EAAED,OAAOjB,IAAIW,EAAE8B,KAAKvB,EAAElB,GAAG,EAAEsP,GAAG0z9C,OAAO,SAAShj+C,GAAG,IAAI,IAAID,EAAE,IAAI8P,GAAG5P,EAAE,EAAEuB,EAAExB,EAAEiB,OAAOhB,EAAEuB,EAAEvB,IAAIF,EAAEgmB,IAAI/lB,EAAEC,IAAI,OAAOF,CAAC,EAAE,IAAIkR,GAAG,WAAW,EAAEF,GAAG,CAACrL,EAAE,CAAChB,cAAa,GAAIO,EAAE,CAACP,cAAa,GAAIe,EAAE,CAACf,cAAa,GAAIu+9C,MAAM,CAACv+9C,cAAa,GAAIw+9C,KAAK,CAACx+9C,cAAa,GAAIy+9C,SAAS,CAACz+9C,cAAa,GAAI0+9C,UAAU,CAAC1+9C,cAAa,GAAI2+9C,SAAS,CAAC3+9C,cAAa,GAAI4+9C,aAAa,CAAC5+9C,cAAa,GAAI6+9C,MAAM,CAAC7+9C,cAAa,GAAI8+9C,MAAM,CAAC9+9C,cAAa,GAAI++9C,MAAM,CAAC/+9C,cAAa,IAAKqM,GAAGrL,EAAE3B,IAAI,WAAW,OAAO,CAAC,EAAEgN,GAAG9L,EAAElB,IAAI,WAAW,OAAO,CAAC,EAAEgN,GAAGtL,EAAE1B,IAAI,WAAW,OAAO,CAAC,EAAEgN,GAAGky9C,MAAMl/9C,IAAI,WAAW,OAAO,CAAC,EAAEgN,GAAGmy9C,KAAKn/9C,IAAI,WAAW,OAAO,CAAC,EAAEgN,GAAGoy9C,SAASp/9C,IAAI,WAAW,OAAO,CAAC,EAAEgN,GAAGqy9C,UAAUr/9C,IAAI,WAAW,MAAM,GAAG,EAAEgN,GAAGsy9C,SAASt/9C,IAAI,WAAW,MAAM,GAAG,EAAEgN,GAAGuy9C,aAAav/9C,IAAI,WAAW,MAAM,GAAG,EAAEgN,GAAGwy9C,MAAMx/9C,IAAI,WAAW,MAAM,GAAG,EAAEgN,GAAGyy9C,MAAMz/9C,IAAI,WAAW,MAAM,GAAG,EAAEgN,GAAG0y9C,MAAM1/9C,IAAI,WAAW,MAAM,GAAG,EAAEkN,GAAG3Q,UAAUw09C,YAAY,WAAW,MAAM,EAAE,EAAE7j9C,GAAG3Q,UAAUon+B,SAAS,WAAW,OAAOz29B,EAAE,EAAEA,GAAGyy9C,kBAAkB,SAAS1j+C,GAAG,OAAOA,GAAG,KAAKiR,GAAGgy9C,MAAM,OAAOhy9C,GAAGmy9C,UAAU,KAAKny9C,GAAGiy9C,KAAK,OAAOjy9C,GAAGoy9C,SAAS,KAAKpy9C,GAAGky9C,SAAS,OAAOly9C,GAAGqy9C,aAAa,KAAKry9C,GAAGvL,EAAE,OAAOuL,GAAGsy9C,MAAM,KAAKty9C,GAAGhM,EAAE,OAAOgM,GAAGuy9C,MAAM,KAAKvy9C,GAAGxL,EAAE,OAAOwL,GAAGwy9C,MAAM,MAAM,IAAIz/9C,EAAE,4BAA4BhE,EAAE,EAAEiR,GAAG0y9C,iBAAiB,SAAS3j+C,GAAG,OAAOyF,EAAE+rD,YAAYxxD,IAAI,KAAKiR,GAAGmy9C,UAAU,OAAOny9C,GAAGgy9C,MAAM,KAAKhy9C,GAAGoy9C,SAAS,OAAOpy9C,GAAGiy9C,KAAK,KAAKjy9C,GAAGqy9C,aAAa,OAAOry9C,GAAGky9C,SAAS,KAAKly9C,GAAGsy9C,MAAM,OAAOty9C,GAAGvL,EAAE,KAAKuL,GAAGuy9C,MAAM,OAAOvy9C,GAAGhM,EAAE,KAAKgM,GAAGwy9C,MAAM,OAAOxy9C,GAAGxL,EAAE,MAAM,IAAIzB,EAAE,6BAA6BhE,EAAE,EAAEE,OAAOkU,iBAAiBnD,GAAGF,IAAI,IAAIP,GAAG,WAAW,EAAEA,GAAGlQ,UAAUmtB,OAAO,SAASztB,GAAG,EAAEwQ,GAAGlQ,UAAUw09C,YAAY,WAAW,MAAM,EAAE,EAAEtk9C,GAAGlQ,UAAUon+B,SAAS,WAAW,OAAOl39B,EAAE,EAAE,IAAIT,GAAG,WAAW,EAAEA,GAAGzP,UAAUmtB,OAAO,SAASztB,EAAED,GAAG,EAAEgQ,GAAGzP,UAAU4gL,OAAO,WAAW,EAAEnxK,GAAGzP,UAAUsj+C,kBAAkB,WAAW,EAAE7z9C,GAAGzP,UAAUw09C,YAAY,WAAW,MAAM,EAAE,EAAE/k9C,GAAGzP,UAAUon+B,SAAS,WAAW,OAAO339B,EAAE,EAAE,IAAIU,GAAG,SAASzQ,GAAG,SAASD,EAAEA,EAAEE,GAAG,GAAGD,EAAEQ,KAAKI,KAAKX,GAAGW,KAAKq59C,YAAYl69C,GAAG,GAAGC,EAAE6g+C,gBAAgBjg+C,KAAKq59C,aAAa,MAAM,IAAIj29C,EAAE,4CAA4C,CAAChE,IAAID,EAAEK,UAAUJ,IAAID,EAAEO,UAAUJ,OAAOY,OAAOd,GAAGA,EAAEM,YAAYO,YAAYd,EAAE,IAAIE,EAAE,CAACm19C,iBAAiB,CAAC1w9C,cAAa,IAAK,OAAO3E,EAAEO,UAAUig+C,wBAAwB,WAAW,IAAI,IAAIvg+C,EAAE,IAAIgF,EAAEjF,EAAE,EAAEA,EAAEa,KAAKq59C,YAAYh59C,OAAOlB,IAAIC,EAAEm59C,gBAAgBv49C,KAAKq59C,YAAYl69C,GAAGqg+C,uBAAuB,OAAOpg+C,CAAC,EAAED,EAAEO,UAAUk/9C,aAAa,SAASx/9C,GAAG,OAAOY,KAAKq59C,YAAYj69C,EAAE,EAAED,EAAEO,UAAU8xe,aAAa,WAAW,OAAOpye,EAAEq/9C,4BAA4B,EAAEt/9C,EAAEO,UAAU80O,eAAe,WAAW,IAAI,IAAIp1O,EAAE,IAAIK,MAAMO,KAAKij+C,gBAAgB7l2C,KAAK,MAAMj+H,GAAG,EAAEE,EAAE,EAAEA,EAAEW,KAAKq59C,YAAYh59C,OAAOhB,IAAI,IAAI,IAAIuB,EAAEZ,KAAKq59C,YAAYh69C,GAAGm1O,iBAAiBz0O,EAAE,EAAEA,EAAEa,EAAEP,OAAON,IAAIX,IAAID,GAAGyB,EAAEb,GAAG,OAAOX,CAAC,EAAED,EAAEO,UAAUorlC,QAAQ,WAAW,IAAI,IAAI1rlC,EAAE,EAAED,EAAE,EAAEA,EAAEa,KAAKq59C,YAAYh59C,OAAOlB,IAAIC,GAAGY,KAAKq59C,YAAYl69C,GAAG2rlC,UAAU,OAAO1rlC,CAAC,EAAED,EAAEO,UAAUq/9C,YAAY,WAAW,GAAG,IAAI3+9C,UAAUC,OAAO,CAAC,IAAIlB,EAAEiB,UAAU,GAAGf,EAAEe,UAAU,GAAG,IAAIJ,KAAKkj+C,kBAAkB/j+C,GAAG,OAAM,EAAG,IAAIyB,EAAEzB,EAAE,GAAGa,KAAKq59C,YAAYh59C,SAASO,EAAEy49C,YAAYh59C,OAAO,OAAM,EAAG,IAAI,IAAIN,EAAE,EAAEA,EAAEC,KAAKq59C,YAAYh59C,OAAON,IAAI,IAAIC,KAAKq59C,YAAYt59C,GAAGg/9C,YAAYn+9C,EAAEy49C,YAAYt59C,GAAGV,GAAG,OAAM,EAAG,OAAM,CAAE,CAAC,OAAOD,EAAEM,UAAUq/9C,YAAYx+9C,MAAMP,KAAKI,UAAU,EAAEjB,EAAEO,UAAU4P,UAAU,WAAW,IAAI,IAAIlQ,EAAE,EAAEA,EAAEY,KAAKq59C,YAAYh59C,OAAOjB,IAAIY,KAAKq59C,YAAYj69C,GAAGkQ,YAAYZ,GAAG69B,KAAKvsC,KAAKq59C,YAAY,EAAEl69C,EAAEO,UAAU+39C,cAAc,WAAW,OAAOz39C,KAAKqoE,UAAU,KAAKroE,KAAKq59C,YAAY,GAAG5B,eAAe,EAAEt49C,EAAEO,UAAUyj+C,qBAAqB,WAAW,IAAI,IAAI/j+C,EAAEiR,GAAGgy9C,MAAMlj+C,EAAE,EAAEA,EAAEa,KAAKq59C,YAAYh59C,OAAOlB,IAAIC,EAAEyD,KAAK8K,IAAIvO,EAAEY,KAAKq59C,YAAYl69C,GAAGgk+C,wBAAwB,OAAO/j+C,CAAC,EAAED,EAAEO,UAAUmmjC,aAAa,WAAW,IAAI,IAAIzmjC,EAAEiR,GAAGgy9C,MAAMlj+C,EAAE,EAAEA,EAAEa,KAAKq59C,YAAYh59C,OAAOlB,IAAIC,EAAEyD,KAAK8K,IAAIvO,EAAEY,KAAKq59C,YAAYl69C,GAAG0mjC,gBAAgB,OAAOzmjC,CAAC,EAAED,EAAEO,UAAUw/9C,UAAU,WAAW,IAAI,IAAI9/9C,EAAE,EAAED,EAAE,EAAEA,EAAEa,KAAKq59C,YAAYh59C,OAAOlB,IAAIC,GAAGY,KAAKq59C,YAAYl69C,GAAG+/9C,YAAY,OAAO9/9C,CAAC,EAAED,EAAEO,UAAUuj+C,aAAa,WAAW,IAAI,IAAI7j+C,EAAE,EAAED,EAAE,EAAEA,EAAEa,KAAKq59C,YAAYh59C,OAAOlB,IAAIC,GAAGY,KAAKq59C,YAAYl69C,GAAG8j+C,eAAe,OAAO7j+C,CAAC,EAAED,EAAEO,UAAUy/9C,iBAAiB,WAAW,OAAOn/9C,KAAKq59C,YAAYh59C,MAAM,EAAElB,EAAEO,UAAU46D,QAAQ,WAAW,IAAI,IAAIl7D,EAAEY,KAAKq59C,YAAYh59C,OAAOlB,EAAE,IAAIM,MAAML,GAAGg+H,KAAK,MAAM/9H,EAAE,EAAEA,EAAEW,KAAKq59C,YAAYh59C,OAAOhB,IAAIF,EAAEE,GAAGW,KAAKq59C,YAAYh69C,GAAGi7D,UAAU,OAAOt6D,KAAK2+9C,aAAazE,yBAAyB/69C,EAAE,EAAEA,EAAEO,UAAU0/9C,mBAAmB,WAAW,GAAG,IAAIh/9C,UAAUC,OAAO,CAAC,IAAIjB,EAAEgB,UAAU,GAAGjB,EAAE,IAAIuD,EAAEgM,GAAG0z9C,OAAOpi+C,KAAKq59C,cAAch69C,EAAE,IAAIqD,EAAEgM,GAAG0z9C,OAAOhj+C,EAAEi69C,cAAc,OAAOr59C,KAAKkqH,QAAQ/qH,EAAEE,EAAE,CAAC,GAAG,IAAIe,UAAUC,OAAO,CAAC,IAAI,IAAmBN,EAAEK,UAAU,GAAGE,EAA5BF,UAAU,GAAsBU,EAAEd,KAAKm/9C,mBAAmBn+9C,EAAEV,EAAE6+9C,mBAAmB989C,EAAE,EAAEA,EAAEvB,GAAGuB,EAAErB,GAAG,CAAC,IAAIwB,EAAExC,KAAK4+9C,aAAav89C,GAAGxB,EAAEP,EAAEs+9C,aAAav89C,GAAGS,EAAEN,EAAE489C,mBAAmBv+9C,EAAEd,GAAG,GAAG,IAAI+C,EAAE,OAAOA,EAAET,GAAG,CAAC,OAAOA,EAAEvB,EAAE,EAAEuB,EAAErB,GAAG,EAAE,CAAC,CAAC,EAAE7B,EAAEO,UAAUa,MAAM,WAAW,GAAG2D,EAAE9D,UAAU,GAAGyL,IAAI,IAAI,IAAIzM,EAAEgB,UAAU,GAAGjB,EAAE,EAAEA,EAAEa,KAAKq59C,YAAYh59C,OAAOlB,IAAIa,KAAKq59C,YAAYl69C,GAAGoB,MAAMnB,QAAQ,GAAG8E,EAAE9D,UAAU,GAAG+O,IAAI,CAAC,IAAI9P,EAAEe,UAAU,GAAG,GAAG,IAAIJ,KAAKq59C,YAAYh59C,OAAO,OAAO,KAAK,IAAI,IAAIO,EAAE,EAAEA,EAAEZ,KAAKq59C,YAAYh59C,SAASL,KAAKq59C,YAAYz49C,GAAGL,MAAMlB,IAAIA,EAAEihL,UAAU1/K,KAAKvB,EAAE2j+C,qBAAqBhj+C,KAAKy+O,iBAAiB,MAAM,GAAGv6O,EAAE9D,UAAU,GAAGwP,IAAI,CAAC,IAAI7P,EAAEK,UAAU,GAAGL,EAAE8sB,OAAO7sB,MAAM,IAAI,IAAIM,EAAE,EAAEA,EAAEN,KAAKq59C,YAAYh59C,OAAOC,IAAIN,KAAKq59C,YAAY/49C,GAAGC,MAAMR,EAAE,MAAM,GAAGmE,EAAE9D,UAAU,GAAGwL,IAAI,CAAC,IAAI9K,EAAEV,UAAU,GAAGU,EAAE+rB,OAAO7sB,MAAM,IAAI,IAAIgB,EAAE,EAAEA,EAAEhB,KAAKq59C,YAAYh59C,OAAOW,IAAIhB,KAAKq59C,YAAYr49C,GAAGT,MAAMO,EAAE,CAAC,EAAE3B,EAAEO,UAAU0j+C,YAAY,WAAW,OAAOpj+C,KAAKy/9C,2BAA2Bz/9C,MAAM+K,GAAGqv9C,uBAAuB,IAAI,EAAEj79C,EAAEO,UAAU6wB,MAAM,WAAW,IAAIpxB,EAAEC,EAAEM,UAAU6wB,MAAM3wB,KAAKI,MAAMb,EAAEk69C,YAAY,IAAI559C,MAAMO,KAAKq59C,YAAYh59C,QAAQ+8H,KAAK,MAAM,IAAI,IAAI/9H,EAAE,EAAEA,EAAEW,KAAKq59C,YAAYh59C,OAAOhB,IAAIF,EAAEk69C,YAAYh69C,GAAGW,KAAKq59C,YAAYh69C,GAAGkxB,QAAQ,OAAOpxB,CAAC,EAAEA,EAAEO,UAAUw59C,gBAAgB,WAAW,MAAM,oBAAoB,EAAE/59C,EAAEO,UAAUogI,KAAK,WAAW,IAAI,IAAI1gI,EAAE,IAAIK,MAAMO,KAAKq59C,YAAYh59C,QAAQ+8H,KAAK,MAAM/9H,EAAE,EAAEA,EAAED,EAAEiB,OAAOhB,IAAID,EAAEC,GAAGW,KAAKq59C,YAAYh69C,GAAGygI,OAAO,OAAO,IAAI3gI,EAAEC,EAAEY,KAAK+hxB,SAAS,EAAE5ixB,EAAEO,UAAU2oE,QAAQ,WAAW,IAAI,IAAIjpE,EAAE,EAAEA,EAAEY,KAAKq59C,YAAYh59C,OAAOjB,IAAI,IAAIY,KAAKq59C,YAAYj69C,GAAGipE,UAAU,OAAM,EAAG,OAAM,CAAE,EAAElpE,EAAEO,UAAUw09C,YAAY,WAAW,MAAM,EAAE,EAAE/09C,EAAEO,UAAUon+B,SAAS,WAAW,OAAO3n+B,CAAC,EAAEE,EAAEm19C,iBAAiBrx9C,IAAI,WAAW,OAAO,kBAAkB,EAAE7D,OAAOkU,iBAAiBrU,EAAEE,GAAGF,CAAC,CAAnuI,CAAquIoM,IAAIuD,GAAG,SAAS1P,GAAG,SAASD,IAAIC,EAAEmB,MAAMP,KAAKI,UAAU,CAAChB,IAAID,EAAEK,UAAUJ,IAAID,EAAEO,UAAUJ,OAAOY,OAAOd,GAAGA,EAAEM,YAAYO,YAAYd,EAAE,IAAIE,EAAE,CAACm19C,iBAAiB,CAAC1w9C,cAAa,IAAK,OAAO3E,EAAEO,UAAU8xe,aAAa,WAAW,OAAOjme,GAAG+y9C,yBAAyB,EAAEn/9C,EAAEO,UAAUq/9C,YAAY,WAAW,GAAG,IAAI3+9C,UAAUC,OAAO,CAAC,IAAIlB,EAAEiB,UAAU,GAAGf,EAAEe,UAAU,GAAG,QAAQJ,KAAKkj+C,kBAAkB/j+C,IAAIC,EAAEM,UAAUq/9C,YAAYn/9C,KAAKI,KAAKb,EAAEE,EAAE,CAAC,OAAOD,EAAEM,UAAUq/9C,YAAYx+9C,MAAMP,KAAKI,UAAU,EAAEjB,EAAEO,UAAUyj+C,qBAAqB,WAAW,OAAOnj+C,KAAKw8O,WAAWnsO,GAAGgy9C,MAAM,CAAC,EAAElj+C,EAAEO,UAAU88O,SAAS,WAAW,GAAGx8O,KAAKqoE,UAAU,OAAM,EAAG,IAAI,IAAIjpE,EAAE,EAAEA,EAAEY,KAAKq59C,YAAYh59C,OAAOjB,IAAI,IAAIY,KAAKq59C,YAAYj69C,GAAGo9O,WAAW,OAAM,EAAG,OAAM,CAAE,EAAEr9O,EAAEO,UAAUmmjC,aAAa,WAAW,OAAO,CAAC,EAAE1mjC,EAAEO,UAAU46D,QAAQ,WAAW,IAAI,IAAIl7D,EAAEY,KAAKq59C,YAAYh59C,OAAOlB,EAAE,IAAIM,MAAML,GAAGg+H,KAAK,MAAM/9H,EAAE,EAAEA,EAAEW,KAAKq59C,YAAYh59C,OAAOhB,IAAIF,EAAEC,EAAE,EAAEC,GAAGW,KAAKq59C,YAAYh69C,GAAGi7D,UAAU,OAAOt6D,KAAK2+9C,aAAa3E,sBAAsB769C,EAAE,EAAEA,EAAEO,UAAU0j+C,YAAY,WAAW,OAAO,IAAIh09C,GAAGpP,MAAMoj+C,aAAa,EAAEjk+C,EAAEO,UAAUw59C,gBAAgB,WAAW,MAAM,iBAAiB,EAAE/59C,EAAEO,UAAUogI,KAAK,WAAW,IAAI,IAAI1gI,EAAE,IAAIK,MAAMO,KAAKq59C,YAAYh59C,QAAQ+8H,KAAK,MAAM/9H,EAAE,EAAEA,EAAED,EAAEiB,OAAOhB,IAAID,EAAEC,GAAGW,KAAKq59C,YAAYh69C,GAAGygI,OAAO,OAAO,IAAI3gI,EAAEC,EAAEY,KAAK+hxB,SAAS,EAAE5ixB,EAAEO,UAAUw09C,YAAY,WAAW,MAAM,CAACtl9C,GAAG,EAAEzP,EAAEO,UAAUon+B,SAAS,WAAW,OAAO3n+B,CAAC,EAAEE,EAAEm19C,iBAAiBrx9C,IAAI,WAAW,OAAO,kBAAkB,EAAE7D,OAAOkU,iBAAiBrU,EAAEE,GAAGF,CAAC,CAAt6C,CAAw6C0Q,IAAIT,GAAG,WAAW,GAAGpP,KAAKqj+C,MAAM,KAAKrj+C,KAAKsj+C,UAAU,KAAKtj+C,KAAKuj+C,QAAQ,KAAKvj+C,KAAKwj+C,aAAa,KAAK,IAAIpj+C,UAAUC,OAAO,CAAC,IAAIjB,EAAEgB,UAAU,GAAGjB,EAAEkO,GAAGiz9C,mBAAmBtg+C,KAAKqj+C,MAAMjk+C,EAAEY,KAAKsj+C,UAAUlk+C,EAAEu/9C,aAAa3+9C,KAAKuj+C,QAAQpk+C,CAAC,MAAM,GAAG,IAAIiB,UAAUC,OAAO,CAAC,IAAIhB,EAAEe,UAAU,GAAGQ,EAAER,UAAU,GAAGJ,KAAKqj+C,MAAMhk+C,EAAEW,KAAKsj+C,UAAUjk+C,EAAEs/9C,aAAa3+9C,KAAKuj+C,QAAQ3i+C,CAAC,CAAC,EAAEwO,GAAG1P,UAAU+j+C,wBAAwB,SAASrk+C,GAAG,GAAGY,KAAKqj+C,MAAMh75C,UAAU,OAAOroE,KAAK0j+C,qBAAqB,IAAIvk+C,EAAEa,KAAK2j+C,2BAA2Bvk+C,GAAG,OAAO,IAAID,EAAEkB,OAAOL,KAAKsj+C,UAAU1J,YAAYz69C,EAAE,IAAIa,KAAKsj+C,UAAUM,2BAA2Bzk+C,EAAE,EAAEiQ,GAAG1P,UAAU0j+C,YAAY,WAAW,OAAOpj+C,KAAKqj+C,iBAAiBr09C,GAAGhP,KAAK6j+C,mBAAmB7j+C,KAAKqj+C,OAAOrj+C,KAAKqj+C,iBAAiBv09C,GAAG9O,KAAKyj+C,wBAAwBzj+C,KAAKqj+C,OAAOrj+C,KAAKqj+C,MAAMD,aAAa,EAAEh09C,GAAG1P,UAAUmk+C,mBAAmB,SAASzk+C,GAAG,OAAGY,KAAKqj+C,MAAMh75C,UAAiBroE,KAAK0j+C,qBAAwBtk+C,EAAEo9O,WAAmBx8O,KAAKuj+C,QAAQ5C,aAAa,GAAGvh+C,EAAE0k+C,gBAAgB9j+C,KAAKsj+C,UAAUzJ,mBAA0B759C,KAAKsj+C,UAAUzJ,iBAAiB,CAACz69C,EAAE0k+C,gBAAgB1k+C,EAAE2k+C,eAAe,EAAE309C,GAAG1P,UAAUgk+C,mBAAmB,WAAW,OAAO1j+C,KAAKsj+C,UAAUzJ,kBAAkB,EAAEzq9C,GAAG1P,UAAUik+C,2BAA2B,SAASvk+C,GAAG,IAAID,EAAE,IAAI8P,GAAGjP,KAAKwj+C,aAAa,IAAI1g+C,EAAE,IAAI,IAAIzD,EAAE,EAAEA,EAAED,EAAE+/9C,mBAAmB9/9C,IAAI,CAAC,IAAIuB,EAAExB,EAAEw/9C,aAAav/9C,GAAG,IAAIuB,EAAEqi+C,iBAAiBjj+C,KAAKgk+C,YAAYpj+C,EAAEqj+C,eAAe,IAAIjk+C,KAAKgk+C,YAAYpj+C,EAAEqj+C,eAAerj+C,EAAEqi+C,eAAe,IAAI,CAAC,IAAI,IAAIlj+C,EAAEC,KAAKwj+C,aAAazB,WAAWpg+C,WAAW5B,EAAE+/9C,WAAW,CAAC,IAAIx/9C,EAAEP,EAAEgB,OAAOD,EAAER,EAAE47H,WAAW3yE,MAAMvpD,KAAKuj+C,QAAQ5C,aAAa7/9C,IAAI3B,EAAEgmB,IAAI7kB,EAAEu0V,SAAS,CAAC,OAAOxmV,GAAGwp9C,kBAAkB149C,EAAE,EAAEiQ,GAAG1P,UAAUsk+C,YAAY,SAAS5k+C,GAAG,IAAID,EAAEa,KAAKwj+C,aAAarg+C,IAAI/D,GAAG,OAAOD,IAAIA,EAAE,IAAIuO,GAAG1N,KAAKwj+C,aAAatihB,IAAI9h9B,EAAED,IAAIA,EAAEoqD,OAAO,EAAEn6C,GAAG1P,UAAUw09C,YAAY,WAAW,MAAM,EAAE,EAAE9k9C,GAAG1P,UAAUon+B,SAAS,WAAW,OAAO139B,EAAE,EAAEA,GAAGg09C,YAAY,WAAW,OAAG,IAAIhj+C,UAAUC,OAAkC,IAAI+O,GAAxBhP,UAAU,IAAoBgj+C,cAAiB,IAAIhj+C,UAAUC,OAAiD,IAAI+O,GAAvChP,UAAU,GAAKA,UAAU,IAAsBgj+C,mBAA9E,CAA4F,EAAE,IAAI119C,GAAG,WAAW1N,KAAKupD,MAAM,IAAI,EAAE77C,GAAGhO,UAAUw09C,YAAY,WAAW,MAAM,EAAE,EAAExm9C,GAAGhO,UAAUon+B,SAAS,WAAW,OAAOp59B,EAAE,EAAE,IAAIS,GAAG,WAAW,EAAEkB,GAAG,CAAC609C,QAAQ,CAACpg+C,cAAa,GAAIqg+C,uBAAuB,CAACrg+C,cAAa,IAAKqK,GAAGzO,UAAUw09C,YAAY,WAAW,MAAM,EAAE,EAAE/l9C,GAAGzO,UAAUon+B,SAAS,WAAW,OAAO349B,EAAE,EAAEA,GAAG0gxC,MAAM,SAASzvxC,EAAED,GAAG,IAAI,IAAIE,EAAE,IAAII,MAAMN,GAAGi+H,KAAK,MAAMx8H,EAAE,EAAEA,EAAEzB,EAAEyB,IAAIvB,EAAEuB,GAAGxB,EAAE,OAAOU,OAAOT,EAAE,EAAE8O,GAAGi29C,cAAc,WAAW,GAAG,IAAIhk+C,UAAUC,OAAO,CAAC,IAAIjB,EAAEgB,UAAU,GAAGjB,EAAE,IAAI,WAAW,EAAEE,EAAE,IAAI,WAAW,CAAf,CAAiBF,GAAG,OAAOC,EAAEil+C,gBAAgBhl+C,GAAGF,EAAEoF,UAAU,CAAC,GAAG,IAAInE,UAAUC,OAAO,CAAC,IAAI,IAAmBN,EAAEK,UAAU,GAAGE,EAAE,GAAGQ,EAAE,IAAI,WAAW,CAAf,CAAiB,IAAI,WAAW,CAAf,CAAiBqN,GAAGi29C,cAAxEhk+C,UAAU,MAAiFY,EAAE,EAAEA,EAAEjB,EAAEiB,IAAI,IAAIV,GAAGQ,EAAEwj+C,WAAWn29C,GAAG+19C,OAAO,CAAC,MAAM9k+C,GAAG,KAAKA,aAAa+C,GAAG,MAAM/C,EAAE2L,GAAGqv9C,sBAAsB,CAAC,OAAO959C,CAAC,CAAC,EAAE6N,GAAGvJ,MAAM,SAASxF,EAAED,GAAG,IAAI,IAAIE,EAAEF,EAAEkB,OAAOO,EAAE,IAAIqO,GAAGlP,EAAE,GAAGX,EAAEkB,EAAEP,EAAES,QAAQrB,GAAGmB,GAAG,GAAG,CAAC,IAAIQ,EAAEf,EAAEu3B,UAAU,EAAEh3B,GAAGM,EAAEukB,IAAIrkB,GAAGR,GAAGP,EAAEA,EAAEu3B,UAAUh3B,EAAEjB,IAAImB,QAAQrB,EAAE,CAACY,EAAEM,OAAO,GAAGO,EAAEukB,IAAIplB,GAAG,IAAI,IAAIiB,EAAE,IAAIvB,MAAMmB,EAAEgkB,QAAQw4G,KAAK,MAAM/6H,EAAE,EAAEA,EAAErB,EAAEX,OAAOgC,IAAIrB,EAAEqB,GAAGzB,EAAEuC,IAAId,GAAG,OAAOrB,CAAC,EAAEmN,GAAG5J,SAAS,WAAW,GAAG,IAAInE,UAAUC,OAAO,CAAC,IAAIjB,EAAEgB,UAAU,GAAG,OAAO+N,GAAGg29C,uBAAuBj/5C,OAAO9lE,EAAE,CAAC,EAAE+O,GAAGyq9C,OAAO,SAASx59C,GAAG,OAAO+O,GAAG0gxC,MAAM,IAAIzvxC,EAAE,EAAEiQ,GAAG609C,QAAQ/g+C,IAAI,WAAW,OAAOsC,EAAEg3M,YAAY,iBAAiB,EAAEptM,GAAG809C,uBAAuBhh+C,IAAI,WAAW,OAAO,IAAI,WAAW,CAAf,CAAiB,MAAM,EAAE7D,OAAOkU,iBAAiBrF,GAAGkB,IAAI,IAAId,GAAG,WAAW,EAAEA,GAAG7O,UAAUw09C,YAAY,WAAW,MAAM,EAAE,EAAE3l9C,GAAG7O,UAAUon+B,SAAS,WAAW,OAAOv49B,EAAE,EAAEA,GAAGg29C,UAAU,SAASnl+C,EAAED,EAAEE,EAAEuB,GAAG,IAAI,IAAIb,EAAE8C,KAAKgL,IAAIzO,EAAEymjC,eAAexmjC,EAAEwmjC,gBAAgBvljC,EAAE,EAAEA,EAAEP,EAAEO,IAAIjB,EAAEo19C,YAAY7z9C,EAAEN,EAAElB,EAAEu19C,YAAYx19C,EAAEmB,GAAG,EAAEiO,GAAG4y9C,OAAO,SAAS/h+C,GAAG,IAAID,EAAEC,EAAEwlB,OAAO,OAAO,IAAIzlB,KAAKA,GAAG,IAAKC,EAAEu19C,YAAY,EAAE/u9C,EAAEb,KAAK3F,EAAEu19C,YAAYx19C,EAAE,EAAEyG,EAAEb,IAAI3F,EAAEu19C,YAAY,EAAE/u9C,EAAEH,KAAKrG,EAAEu19C,YAAYx19C,EAAE,EAAEyG,EAAEH,EAAG,EAAE8I,GAAGs1J,QAAQ,SAASzkK,EAAED,GAAG,IAAIE,EAAED,EAAEwlB,OAAO,GAAGvlB,IAAIF,EAAEylB,OAAO,OAAM,EAAG,IAAI,IAAIhkB,EAAEiC,KAAKgL,IAAIzO,EAAEymjC,eAAe1mjC,EAAE0mjC,gBAAgB9ljC,EAAE,EAAEA,EAAEV,EAAEU,IAAI,IAAI,IAAIO,EAAE,EAAEA,EAAEM,EAAEN,IAAI,CAAC,IAAIQ,EAAE1B,EAAEu19C,YAAY509C,EAAEO,GAAGU,EAAE7B,EAAEw19C,YAAY509C,EAAEO,GAAG,KAAGlB,EAAEu19C,YAAY509C,EAAEO,KAAKnB,EAAEw19C,YAAY509C,EAAEO,IAAM2C,EAAEqpC,MAAMxrC,IAAKmC,EAAEqpC,MAAMtrC,IAAI,OAAM,CAAE,CAAC,OAAM,CAAE,EAAEuN,GAAG86Y,OAAO,SAASjqZ,EAAED,EAAEE,GAAG,IAAIuB,EAAExB,EAAEc,OAAOb,EAAEF,EAAE0mjC,gBAAgB9ljC,EAAEZ,EAAEylB,OAAO,GAAGrW,GAAGuxH,KAAK3gI,EAAE,EAAEyB,EAAE,EAAEb,GAAGA,EAAE,EAAE,IAAI,IAAIO,EAAEP,EAAEO,EAAEjB,EAAEiB,IAAIiO,GAAGuxH,KAAK3gI,EAAEY,EAAE,EAAEa,EAAEN,EAAE,GAAG,OAAOM,CAAC,EAAE2N,GAAG+rD,QAAQ,SAASl7D,GAAG,IAAI,IAAID,EAAEC,EAAEwlB,OAAO,EAAEvlB,EAAEwD,KAAK2K,MAAMrO,EAAE,GAAGyB,EAAE,EAAEA,GAAGvB,EAAEuB,IAAI2N,GAAGs2T,KAAKzlU,EAAEwB,EAAEzB,EAAEyB,EAAE,EAAE2N,GAAGs2T,KAAK,SAASzlU,EAAED,EAAEE,GAAG,GAAGF,IAAIE,EAAE,OAAO,KAAK,IAAI,IAAIuB,EAAE,EAAEA,EAAExB,EAAEymjC,eAAejljC,IAAI,CAAC,IAAIb,EAAEX,EAAEu19C,YAAYx19C,EAAEyB,GAAGxB,EAAEq19C,YAAYt19C,EAAEyB,EAAExB,EAAEu19C,YAAYt19C,EAAEuB,IAAIxB,EAAEq19C,YAAYp19C,EAAEuB,EAAEb,EAAE,CAAC,EAAEwO,GAAGuxH,KAAK,SAAS1gI,EAAED,EAAEE,EAAEuB,EAAEb,GAAG,IAAI,IAAIO,EAAE,EAAEA,EAAEP,EAAEO,IAAIiO,GAAGg29C,UAAUnl+C,EAAED,EAAEmB,EAAEjB,EAAEuB,EAAEN,EAAE,EAAEiO,GAAGhK,SAAS,WAAW,GAAG,IAAInE,UAAUC,OAAO,CAAC,IAAIjB,EAAEgB,UAAU,GAAGjB,EAAEC,EAAEwlB,OAAO,GAAG,IAAIzlB,EAAE,MAAM,KAAK,IAAIE,EAAED,EAAEymjC,eAAejljC,EAAE,IAAI2E,EAAE3E,EAAEwjF,OAAO,KAAK,IAAI,IAAIrkF,EAAE,EAAEA,EAAEZ,EAAEY,IAAI,CAACA,EAAE,GAAGa,EAAEwjF,OAAO,KAAK,IAAI,IAAI9jF,EAAE,EAAEA,EAAEjB,EAAEiB,IAAIA,EAAE,GAAGM,EAAEwjF,OAAO,KAAKxjF,EAAEwjF,OAAOj2E,GAAG5J,SAASnF,EAAEu19C,YAAY509C,EAAEO,IAAI,CAAC,OAAOM,EAAEwjF,OAAO,KAAKxjF,EAAE2D,UAAU,CAAC,EAAEgK,GAAGi29C,gBAAgB,SAASpl+C,EAAED,GAAG,IAAIE,EAAEF,EAAEylB,OAAO,OAAG,IAAIvlB,EAASF,EAAKE,GAAG,EAASkP,GAAGk29C,iBAAiBrl+C,EAAED,EAAE,GAAUA,EAAEw19C,YAAY,EAAE/u9C,EAAEb,KAAK5F,EAAEw19C,YAAYt19C,EAAE,EAAEuG,EAAEb,IAAI5F,EAAEw19C,YAAY,EAAE/u9C,EAAEH,KAAKtG,EAAEw19C,YAAYt19C,EAAE,EAAEuG,EAAEH,GAAGtG,EAAEoP,GAAGk29C,iBAAiBrl+C,EAAED,EAAEE,EAAE,EAAE,EAAEkP,GAAGk29C,iBAAiB,SAASrl+C,EAAED,EAAEE,GAAG,IAAIuB,EAAExB,EAAEc,OAAOb,EAAEF,EAAE0mjC,gBAAgB9ljC,EAAEZ,EAAEylB,OAAOrW,GAAGuxH,KAAK3gI,EAAE,EAAEyB,EAAE,EAAEb,GAAG,IAAI,IAAIO,EAAEP,EAAEO,EAAEjB,EAAEiB,IAAIiO,GAAGuxH,KAAK3gI,EAAE,EAAEyB,EAAEN,EAAE,GAAG,OAAOM,CAAC,EAAE,IAAIoO,GAAG,SAAS5P,GAAG,SAASD,EAAEA,EAAEE,GAAGD,EAAEQ,KAAKI,KAAKX,GAAGW,KAAK8vlC,QAAQ,KAAK9vlC,KAAK0wD,KAAKvxD,EAAE,CAACC,IAAID,EAAEK,UAAUJ,IAAID,EAAEO,UAAUJ,OAAOY,OAAOd,GAAGA,EAAEM,YAAYO,YAAYd,EAAE,IAAIE,EAAE,CAACm19C,iBAAiB,CAAC1w9C,cAAa,IAAK,OAAO3E,EAAEO,UAAUig+C,wBAAwB,WAAW,OAAO3/9C,KAAKqoE,UAAU,IAAIjkE,EAAEpE,KAAK8vlC,QAAQ8nY,eAAe,IAAIxz9C,EAAE,EAAEjF,EAAEO,UAAUyh+C,OAAO,WAAW,OAAOnh+C,KAAKw8O,YAAYx8O,KAAK+gP,UAAU,EAAE5hP,EAAEO,UAAU8xe,aAAa,WAAW,OAAOpye,EAAEg/9C,oBAAoB,EAAEj/9C,EAAEO,UAAU80O,eAAe,WAAW,OAAOx0O,KAAK8vlC,QAAQ+nY,mBAAmB,EAAE149C,EAAEO,UAAUq/9C,YAAY,WAAW,GAAG,IAAI3+9C,UAAUC,OAAO,CAAC,IAAIlB,EAAEiB,UAAU,GAAGf,EAAEe,UAAU,GAAG,IAAIJ,KAAKkj+C,kBAAkB/j+C,GAAG,OAAM,EAAG,IAAIyB,EAAEzB,EAAE,GAAGa,KAAK8vlC,QAAQlrkC,SAAShkB,EAAEkvlC,QAAQlrkC,OAAO,OAAM,EAAG,IAAI,IAAI7kB,EAAE,EAAEA,EAAEC,KAAK8vlC,QAAQlrkC,OAAO7kB,IAAI,IAAIC,KAAK8pJ,MAAM9pJ,KAAK8vlC,QAAQ2nY,cAAc139C,GAAGa,EAAEkvlC,QAAQ2nY,cAAc139C,GAAGV,GAAG,OAAM,EAAG,OAAM,CAAE,CAAC,OAAOD,EAAEM,UAAUq/9C,YAAYx+9C,MAAMP,KAAKI,UAAU,EAAEjB,EAAEO,UAAU4P,UAAU,WAAW,IAAI,IAAIlQ,EAAE,EAAEA,EAAEyD,KAAK2K,MAAMxN,KAAK8vlC,QAAQlrkC,OAAO,GAAGxlB,IAAI,CAAC,IAAID,EAAEa,KAAK8vlC,QAAQlrkC,OAAO,EAAExlB,EAAE,IAAIY,KAAK8vlC,QAAQ2nY,cAAcr49C,GAAGmzI,OAAOvyI,KAAK8vlC,QAAQ2nY,cAAct49C,IAAI,OAAOa,KAAK8vlC,QAAQ2nY,cAAcr49C,GAAGyzQ,UAAU7yQ,KAAK8vlC,QAAQ2nY,cAAct49C,IAAI,GAAGoP,GAAG+rD,QAAQt6D,KAAK8vlC,SAAS,IAAI,CAAC,EAAE3wlC,EAAEO,UAAU+39C,cAAc,WAAW,OAAOz39C,KAAKqoE,UAAU,KAAKroE,KAAK8vlC,QAAQ2nY,cAAc,EAAE,EAAEt49C,EAAEO,UAAUyj+C,qBAAqB,WAAW,OAAOnj+C,KAAKw8O,WAAWnsO,GAAGgy9C,MAAM,CAAC,EAAElj+C,EAAEO,UAAU88O,SAAS,WAAW,OAAOx8O,KAAKqoE,WAAWroE,KAAKik+C,eAAe,GAAGvP,SAAS109C,KAAKik+C,eAAejk+C,KAAKij+C,eAAe,GAAG,EAAE9j+C,EAAEO,UAAUqk+C,YAAY,WAAW,OAAO/j+C,KAAKqoE,UAAU,KAAKroE,KAAK0k+C,UAAU1k+C,KAAKij+C,eAAe,EAAE,EAAE9j+C,EAAEO,UAAUmmjC,aAAa,WAAW,OAAO,CAAC,EAAE1mjC,EAAEO,UAAUw/9C,UAAU,WAAW,OAAO1z9C,GAAGiy9C,cAAcz99C,KAAK8vlC,QAAQ,EAAE3wlC,EAAEO,UAAUuj+C,aAAa,WAAW,OAAOjj+C,KAAK8vlC,QAAQlrkC,MAAM,EAAEzlB,EAAEO,UAAU46D,QAAQ,WAAW,IAAIl7D,EAAEY,KAAK8vlC,QAAQhw9B,OAAqB,OAAdvxH,GAAG+rD,QAAQl7D,GAAUY,KAAK2+9C,aAAa7E,iBAAiB169C,EAAE,EAAED,EAAEO,UAAU0/9C,mBAAmB,WAAW,GAAG,IAAIh/9C,UAAUC,OAAO,CAAC,IAAI,IAAIjB,EAAEgB,UAAU,GAAGjB,EAAE,EAAEE,EAAE,EAAEF,EAAEa,KAAK8vlC,QAAQlrkC,QAAQvlB,EAAED,EAAE0wlC,QAAQlrkC,QAAQ,CAAC,IAAIhkB,EAAEZ,KAAK8vlC,QAAQ2nY,cAAct49C,GAAG0zQ,UAAUzzQ,EAAE0wlC,QAAQ2nY,cAAcp49C,IAAI,GAAG,IAAIuB,EAAE,OAAOA,EAAEzB,IAAIE,GAAG,CAAC,OAAOF,EAAEa,KAAK8vlC,QAAQlrkC,OAAO,EAAEvlB,EAAED,EAAE0wlC,QAAQlrkC,QAAQ,EAAE,CAAC,CAAC,GAAG,IAAIxkB,UAAUC,OAAO,CAAC,IAAIN,EAAEK,UAAU,GAAG,OAAOA,UAAU,GAAG8pH,QAAQlqH,KAAK8vlC,QAAQ/vlC,EAAE+vlC,QAAQ,CAAC,EAAE3wlC,EAAEO,UAAUa,MAAM,WAAW,GAAG2D,EAAE9D,UAAU,GAAGyL,IAAI,IAAI,IAAIzM,EAAEgB,UAAU,GAAGjB,EAAE,EAAEA,EAAEa,KAAK8vlC,QAAQlrkC,OAAOzlB,IAAIC,EAAEytB,OAAO7sB,KAAK8vlC,QAAQ2nY,cAAct49C,SAAS,GAAG+E,EAAE9D,UAAU,GAAG+O,IAAI,CAAC,IAAI9P,EAAEe,UAAU,GAAG,GAAG,IAAIJ,KAAK8vlC,QAAQlrkC,OAAO,OAAO,KAAK,IAAI,IAAIhkB,EAAE,EAAEA,EAAEZ,KAAK8vlC,QAAQlrkC,SAASvlB,EAAEwtB,OAAO7sB,KAAK8vlC,QAAQlvlC,IAAIvB,EAAEihL,UAAU1/K,KAAKvB,EAAE2j+C,qBAAqBhj+C,KAAKy+O,iBAAiB,MAASv6O,EAAE9D,UAAU,GAAGwP,KAAuC1L,EAAE9D,UAAU,GAAGwL,MAAjDxL,UAAU,GAAGysB,OAAO7sB,KAA4D,EAAEb,EAAEO,UAAU0j+C,YAAY,WAAW,OAAO,IAAIh09C,GAAGpP,MAAMoj+C,aAAa,EAAEjk+C,EAAEO,UAAUwj+C,kBAAkB,SAAS9j+C,GAAG,OAAOA,aAAaD,CAAC,EAAEA,EAAEO,UAAU6wB,MAAM,WAAW,IAAIpxB,EAAEC,EAAEM,UAAU6wB,MAAM3wB,KAAKI,MAAM,OAAOb,EAAE2wlC,QAAQ9vlC,KAAK8vlC,QAAQv/jC,QAAQpxB,CAAC,EAAEA,EAAEO,UAAUuk+C,eAAe,SAAS7k+C,GAAG,OAAOY,KAAK8vlC,QAAQ2nY,cAAcr49C,EAAE,EAAED,EAAEO,UAAUw59C,gBAAgB,WAAW,MAAM,YAAY,EAAE/59C,EAAEO,UAAUogI,KAAK,WAAW,OAAO,IAAI3gI,EAAEa,KAAK8vlC,QAAQhw9B,OAAO9/H,KAAK+hxB,SAAS,EAAE5ixB,EAAEO,UAAUil+C,sBAAsB,WAAW,OAAO3k+C,KAAK8vlC,OAAO,EAAE3wlC,EAAEO,UAAU2oE,QAAQ,WAAW,OAAO,IAAIroE,KAAK8vlC,QAAQlrkC,MAAM,EAAEzlB,EAAEO,UAAUgxD,KAAK,SAAStxD,GAAG,GAAG,OAAOA,IAAIA,EAAEY,KAAK2+9C,aAAaiG,+BAA+B1k+C,OAAO,KAAK,IAAId,EAAEwlB,OAAO,MAAM,IAAIxhB,EAAE,iDAAiDhE,EAAEwlB,OAAO,yBAAyB5kB,KAAK8vlC,QAAQ1wlC,CAAC,EAAED,EAAEO,UAAUml+C,aAAa,SAASzl+C,GAAG,IAAI,IAAID,EAAE,EAAEA,EAAEa,KAAK8vlC,QAAQlrkC,OAAOzlB,IAAI,GAAGa,KAAK8vlC,QAAQ2nY,cAAct49C,GAAGozI,OAAOnzI,GAAG,OAAM,EAAG,OAAM,CAAE,EAAED,EAAEO,UAAUok+C,cAAc,WAAW,OAAO9j+C,KAAKqoE,UAAU,KAAKroE,KAAK0k+C,UAAU,EAAE,EAAEvl+C,EAAEO,UAAUgl+C,UAAU,SAAStl+C,GAAG,OAAOY,KAAK2+9C,aAAa/E,YAAY559C,KAAK8vlC,QAAQ2nY,cAAcr49C,GAAG,EAAED,EAAEO,UAAUw09C,YAAY,WAAW,MAAM,CAACtl9C,GAAG,EAAEzP,EAAEO,UAAUon+B,SAAS,WAAW,OAAO3n+B,CAAC,EAAEE,EAAEm19C,iBAAiBrx9C,IAAI,WAAW,OAAO,kBAAkB,EAAE7D,OAAOkU,iBAAiBrU,EAAEE,GAAGF,CAAC,CAAx/H,CAA0/HoM,IAAIoE,GAAG,WAAW,EAAEA,GAAGjQ,UAAUw09C,YAAY,WAAW,MAAM,EAAE,EAAEvk9C,GAAGjQ,UAAUon+B,SAAS,WAAW,OAAOn39B,EAAE,EAAE,IAAIS,GAAG,SAAShR,GAAG,SAASD,EAAEA,EAAEE,GAAGD,EAAEQ,KAAKI,KAAKX,GAAGW,KAAKm59C,aAAah69C,GAAG,KAAKa,KAAK0wD,KAAK1wD,KAAKm59C,aAAa,CAAC/59C,IAAID,EAAEK,UAAUJ,IAAID,EAAEO,UAAUJ,OAAOY,OAAOd,GAAGA,EAAEM,YAAYO,YAAYd,EAAE,IAAIE,EAAE,CAACm19C,iBAAiB,CAAC1w9C,cAAa,IAAK,OAAO3E,EAAEO,UAAUig+C,wBAAwB,WAAW,GAAG3/9C,KAAKqoE,UAAU,OAAO,IAAIjkE,EAAE,IAAIhF,EAAE,IAAIgF,EAAE,OAAOhF,EAAEm59C,gBAAgBv49C,KAAKm59C,aAAaxB,KAAK,GAAG339C,KAAKm59C,aAAapxpB,KAAK,IAAI3o0B,CAAC,EAAED,EAAEO,UAAU8xe,aAAa,WAAW,OAAOpye,EAAE8+9C,eAAe,EAAE/+9C,EAAEO,UAAU80O,eAAe,WAAW,OAAOx0O,KAAKqoE,UAAU,GAAG,CAACroE,KAAKy39C,gBAAgB,EAAEt49C,EAAEO,UAAUq/9C,YAAY,WAAW,GAAG,IAAI3+9C,UAAUC,OAAO,CAAC,IAAIlB,EAAEiB,UAAU,GAAGf,EAAEe,UAAU,GAAG,QAAQJ,KAAKkj+C,kBAAkB/j+C,QAAQa,KAAKqoE,YAAYlpE,EAAEkpE,YAAYroE,KAAKqoE,YAAYlpE,EAAEkpE,WAAWroE,KAAK8pJ,MAAM3qJ,EAAEs49C,gBAAgBz39C,KAAKy39C,gBAAgBp49C,GAAG,CAAC,OAAOD,EAAEM,UAAUq/9C,YAAYx+9C,MAAMP,KAAKI,UAAU,EAAEjB,EAAEO,UAAU4P,UAAU,WAAW,EAAEnQ,EAAEO,UAAU+39C,cAAc,WAAW,OAAO,IAAIz39C,KAAKm59C,aAAav08C,OAAO5kB,KAAKm59C,aAAa1B,cAAc,GAAG,IAAI,EAAEt49C,EAAEO,UAAUyj+C,qBAAqB,WAAW,OAAO9y9C,GAAGgy9C,KAAK,EAAElj+C,EAAEO,UAAUmmjC,aAAa,WAAW,OAAO,CAAC,EAAE1mjC,EAAEO,UAAUuj+C,aAAa,WAAW,OAAOjj+C,KAAKqoE,UAAU,EAAE,CAAC,EAAElpE,EAAEO,UAAU46D,QAAQ,WAAW,OAAOt6D,KAAK8/H,MAAM,EAAE3gI,EAAEO,UAAUi49C,KAAK,WAAW,GAAG,OAAO339C,KAAKy39C,gBAAgB,MAAM,IAAIjw8C,MAAM,8BAA8B,OAAOxnB,KAAKy39C,gBAAgBxz9C,CAAC,EAAE9E,EAAEO,UAAU0/9C,mBAAmB,WAAW,GAAG,IAAIh/9C,UAAUC,OAAO,CAAC,IAAIjB,EAAEgB,UAAU,GAAG,OAAOJ,KAAKy39C,gBAAgB5ktC,UAAUzzQ,EAAEq49C,gBAAgB,CAAC,GAAG,IAAIr39C,UAAUC,OAAO,CAAC,IAAIlB,EAAEiB,UAAU,GAAG,OAAOA,UAAU,GAAG8pH,QAAQlqH,KAAKm59C,aAAah69C,EAAEg69C,aAAa,CAAC,EAAEh69C,EAAEO,UAAUa,MAAM,WAAW,GAAG2D,EAAE9D,UAAU,GAAGyL,IAAI,CAAC,IAAIzM,EAAEgB,UAAU,GAAG,GAAGJ,KAAKqoE,UAAU,OAAO,KAAKjpE,EAAEytB,OAAO7sB,KAAKy39C,gBAAgB,MAAM,GAAGvz9C,EAAE9D,UAAU,GAAG+O,IAAI,CAAC,IAAIhQ,EAAEiB,UAAU,GAAG,GAAGJ,KAAKqoE,UAAU,OAAO,KAAKlpE,EAAE0tB,OAAO7sB,KAAKm59C,aAAa,GAAGh69C,EAAE6j+C,qBAAqBhj+C,KAAKy+O,iBAAiB,MAASv6O,EAAE9D,UAAU,GAAGwP,KAAuC1L,EAAE9D,UAAU,GAAGwL,MAAjDxL,UAAU,GAAGysB,OAAO7sB,KAA4D,EAAEb,EAAEO,UAAU0j+C,YAAY,WAAW,OAAOpj+C,KAAK2+9C,aAAazE,yBAAyB,KAAK,EAAE/69C,EAAEO,UAAU6wB,MAAM,WAAW,IAAIpxB,EAAEC,EAAEM,UAAU6wB,MAAM3wB,KAAKI,MAAM,OAAOb,EAAEg69C,aAAan59C,KAAKm59C,aAAa5o8C,QAAQpxB,CAAC,EAAEA,EAAEO,UAAUw59C,gBAAgB,WAAW,MAAM,OAAO,EAAE/59C,EAAEO,UAAUogI,KAAK,WAAW,OAAO,IAAI3gI,EAAEa,KAAKm59C,aAAar51C,OAAO9/H,KAAK+hxB,SAAS,EAAE5ixB,EAAEO,UAAUil+C,sBAAsB,WAAW,OAAO3k+C,KAAKm59C,YAAY,EAAEh69C,EAAEO,UAAUqo0B,KAAK,WAAW,GAAG,OAAO/n0B,KAAKy39C,gBAAgB,MAAM,IAAIjw8C,MAAM,8BAA8B,OAAOxnB,KAAKy39C,gBAAgBz09C,CAAC,EAAE7D,EAAEO,UAAU2oE,QAAQ,WAAW,OAAO,IAAIroE,KAAKm59C,aAAav08C,MAAM,EAAEzlB,EAAEO,UAAUgxD,KAAK,SAAStxD,GAAG,OAAOA,IAAIA,EAAEY,KAAK2+9C,aAAaiG,+BAA+B1k+C,OAAO,KAAK6K,GAAGiprB,OAAO50rB,EAAEwlB,QAAQ,GAAG5kB,KAAKm59C,aAAa/59C,CAAC,EAAED,EAAEO,UAAUqhP,SAAS,WAAW,OAAM,CAAE,EAAE5hP,EAAEO,UAAUw09C,YAAY,WAAW,MAAM,CAACvk9C,GAAG,EAAExQ,EAAEO,UAAUon+B,SAAS,WAAW,OAAO3n+B,CAAC,EAAEE,EAAEm19C,iBAAiBrx9C,IAAI,WAAW,OAAO,kBAAkB,EAAE7D,OAAOkU,iBAAiBrU,EAAEE,GAAGF,CAAC,CAA16F,CAA46FoM,IAAIiD,GAAG,WAAW,EAAEA,GAAG9O,UAAUw09C,YAAY,WAAW,MAAM,EAAE,EAAE1l9C,GAAG9O,UAAUon+B,SAAS,WAAW,OAAOt49B,EAAE,EAAE,IAAI8B,GAAG,SAASlR,GAAG,SAASD,EAAEA,EAAEE,EAAEuB,GAAG,GAAGxB,EAAEQ,KAAKI,KAAKY,GAAGZ,KAAKw59C,OAAO,KAAKx59C,KAAKy59C,OAAO,KAAK,OAAOt69C,IAAIA,EAAEa,KAAK2+9C,aAAa5E,oBAAoB,OAAO169C,IAAIA,EAAE,IAAID,EAAE6g+C,gBAAgB5g+C,GAAG,MAAM,IAAI+D,EAAE,wCAAwC,GAAGjE,EAAEkpE,WAAWjpE,EAAE4g+C,oBAAoB3g+C,GAAG,MAAM,IAAI+D,EAAE,oCAAoCpD,KAAKw59C,OAAOr69C,EAAEa,KAAKy59C,OAAOp69C,CAAC,CAACD,IAAID,EAAEK,UAAUJ,IAAID,EAAEO,UAAUJ,OAAOY,OAAOd,GAAGA,EAAEM,YAAYO,YAAYd,EAAE,IAAIE,EAAE,CAACm19C,iBAAiB,CAAC1w9C,cAAa,IAAK,OAAO3E,EAAEO,UAAUig+C,wBAAwB,WAAW,OAAO3/9C,KAAKw59C,OAAOgG,qBAAqB,EAAErg+C,EAAEO,UAAU8xe,aAAa,WAAW,OAAOpye,EAAEm/9C,iBAAiB,EAAEp/9C,EAAEO,UAAU80O,eAAe,WAAW,GAAGx0O,KAAKqoE,UAAU,MAAM,GAAG,IAAI,IAAIjpE,EAAE,IAAIK,MAAMO,KAAKij+C,gBAAgB7l2C,KAAK,MAAMj+H,GAAG,EAAEE,EAAEW,KAAKw59C,OAAOhlvC,iBAAiB5zO,EAAE,EAAEA,EAAEvB,EAAEgB,OAAOO,IAAIxB,IAAID,GAAGE,EAAEuB,GAAG,IAAI,IAAIb,EAAE,EAAEA,EAAEC,KAAKy59C,OAAOp59C,OAAON,IAAI,IAAI,IAAIO,EAAEN,KAAKy59C,OAAO159C,GAAGy0O,iBAAiB1zO,EAAE,EAAEA,EAAER,EAAED,OAAOS,IAAI1B,IAAID,GAAGmB,EAAEQ,GAAG,OAAO1B,CAAC,EAAED,EAAEO,UAAUorlC,QAAQ,WAAW,IAAI1rlC,EAAE,EAAEA,GAAGyD,KAAKmjH,IAAIx6G,GAAGk57B,WAAW1k8B,KAAKw59C,OAAOmL,0BAA0B,IAAI,IAAIxl+C,EAAE,EAAEA,EAAEa,KAAKy59C,OAAOp59C,OAAOlB,IAAIC,GAAGyD,KAAKmjH,IAAIx6G,GAAGk57B,WAAW1k8B,KAAKy59C,OAAOt69C,GAAGwl+C,0BAA0B,OAAOvl+C,CAAC,EAAED,EAAEO,UAAUm/9C,YAAY,WAAW,GAAG,IAAI7+9C,KAAK8k+C,qBAAqB,OAAM,EAAG,GAAG,OAAO9k+C,KAAKw59C,OAAO,OAAM,EAAG,GAAG,IAAIx59C,KAAKw59C,OAAOyJ,eAAe,OAAM,EAAG,IAAI,IAAI7j+C,EAAEY,KAAKw59C,OAAOmL,wBAAwBxl+C,EAAEa,KAAKw/9C,sBAAsBng+C,EAAE,EAAEA,EAAE,EAAEA,IAAI,CAAC,IAAIuB,EAAExB,EAAEu49C,KAAKt49C,GAAG,GAAGuB,IAAIzB,EAAEk59C,WAAWz39C,IAAIzB,EAAEg59C,UAAU,OAAM,EAAG,IAAIp49C,EAAEX,EAAE2o0B,KAAK1o0B,GAAG,GAAGU,IAAIZ,EAAEm59C,WAAWv49C,IAAIZ,EAAEi59C,UAAU,OAAM,CAAE,CAAC,IAAI,IAAI939C,EAAElB,EAAEu49C,KAAK,GAAG729C,EAAE1B,EAAE2o0B,KAAK,GAAG/m0B,EAAE,EAAEA,GAAG,EAAEA,IAAI,CAAC,IAAIqB,EAAEjD,EAAEu49C,KAAK329C,GAAGwB,EAAEpD,EAAE2o0B,KAAK/m0B,GAAG,GAAGqB,IAAI/B,IAAKkC,IAAI1B,GAAG,OAAM,EAAGR,EAAE+B,EAAEvB,EAAE0B,CAAC,CAAC,OAAM,CAAE,EAAErD,EAAEO,UAAUq/9C,YAAY,WAAW,GAAG,IAAI3+9C,UAAUC,OAAO,CAAC,IAAIlB,EAAEiB,UAAU,GAAGf,EAAEe,UAAU,GAAG,IAAIJ,KAAKkj+C,kBAAkB/j+C,GAAG,OAAM,EAAG,IAAIyB,EAAEzB,EAAEY,EAAEC,KAAKw59C,OAAOl59C,EAAEM,EAAE449C,OAAO,IAAIz59C,EAAEg/9C,YAAYz+9C,EAAEjB,GAAG,OAAM,EAAG,GAAGW,KAAKy59C,OAAOp59C,SAASO,EAAE649C,OAAOp59C,OAAO,OAAM,EAAG,IAAI,IAAIS,EAAE,EAAEA,EAAEd,KAAKy59C,OAAOp59C,OAAOS,IAAI,IAAId,KAAKy59C,OAAO349C,GAAGi+9C,YAAYn+9C,EAAE649C,OAAO349C,GAAGzB,GAAG,OAAM,EAAG,OAAM,CAAE,CAAC,OAAOD,EAAEM,UAAUq/9C,YAAYx+9C,MAAMP,KAAKI,UAAU,EAAEjB,EAAEO,UAAU4P,UAAU,WAAW,GAAG,IAAIlP,UAAUC,OAAO,CAACL,KAAKsP,UAAUtP,KAAKw59C,QAAO,GAAI,IAAI,IAAIp69C,EAAE,EAAEA,EAAEY,KAAKy59C,OAAOp59C,OAAOjB,IAAIY,KAAKsP,UAAUtP,KAAKy59C,OAAOr69C,IAAG,GAAIsP,GAAG69B,KAAKvsC,KAAKy59C,OAAO,MAAM,GAAG,IAAIr59C,UAAUC,OAAO,CAAC,IAAIlB,EAAEiB,UAAU,GAAGf,EAAEe,UAAU,GAAG,GAAGjB,EAAEkpE,UAAU,OAAO,KAAK,IAAIznE,EAAE,IAAInB,MAAMN,EAAEq1O,iBAAiBn0O,OAAO,GAAG+8H,KAAK,MAAM33H,EAAEqy9C,UAAU349C,EAAEq1O,iBAAiB,EAAE5zO,EAAE,EAAEA,EAAEP,QAAQ,IAAIN,EAAEsO,GAAGwz9C,cAAc1i+C,EAAEq1O,kBAAkBnmO,GAAGgkF,OAAOzxF,EAAEb,GAAG0F,EAAEqy9C,UAAUl39C,EAAE,EAAEzB,EAAEq1O,iBAAiB,EAAE5zO,EAAEP,QAAQlB,EAAEq1O,iBAAiB5zO,EAAEP,QAAQO,EAAE,GAAG4K,GAAGky9C,MAAMv+9C,EAAEq1O,oBAAoBn1O,GAAGgP,GAAGisD,QAAQn7D,EAAEq1O,iBAAiB,CAAC,EAAEr1O,EAAEO,UAAU+39C,cAAc,WAAW,OAAOz39C,KAAKw59C,OAAO/B,eAAe,EAAEt49C,EAAEO,UAAUol+C,mBAAmB,WAAW,OAAO9k+C,KAAKy59C,OAAOp59C,MAAM,EAAElB,EAAEO,UAAUyj+C,qBAAqB,WAAW,OAAO,CAAC,EAAEhk+C,EAAEO,UAAUmmjC,aAAa,WAAW,OAAO,CAAC,EAAE1mjC,EAAEO,UAAUw/9C,UAAU,WAAW,IAAI9/9C,EAAE,EAAEA,GAAGY,KAAKw59C,OAAO0F,YAAY,IAAI,IAAI//9C,EAAE,EAAEA,EAAEa,KAAKy59C,OAAOp59C,OAAOlB,IAAIC,GAAGY,KAAKy59C,OAAOt69C,GAAG+/9C,YAAY,OAAO9/9C,CAAC,EAAED,EAAEO,UAAUuj+C,aAAa,WAAW,IAAI,IAAI7j+C,EAAEY,KAAKw59C,OAAOyJ,eAAe9j+C,EAAE,EAAEA,EAAEa,KAAKy59C,OAAOp59C,OAAOlB,IAAIC,GAAGY,KAAKy59C,OAAOt69C,GAAG8j+C,eAAe,OAAO7j+C,CAAC,EAAED,EAAEO,UAAU46D,QAAQ,WAAW,IAAIl7D,EAAEY,KAAK8/H,OAAO1gI,EAAEo69C,OAAOx59C,KAAKw59C,OAAO151C,OAAOxlE,UAAUl7D,EAAEq69C,OAAO,IAAIh69C,MAAMO,KAAKy59C,OAAOp59C,QAAQ+8H,KAAK,MAAM,IAAI,IAAIj+H,EAAE,EAAEA,EAAEa,KAAKy59C,OAAOp59C,OAAOlB,IAAIC,EAAEq69C,OAAOt69C,GAAGa,KAAKy59C,OAAOt69C,GAAG2gI,OAAOxlE,UAAU,OAAOl7D,CAAC,EAAED,EAAEO,UAAUql+C,WAAW,WAAW,OAAO/k+C,KAAKgl+C,kBAAkBD,YAAY,EAAE5l+C,EAAEO,UAAU0/9C,mBAAmB,WAAW,GAAG,IAAIh/9C,UAAUC,OAAO,CAAC,IAAIjB,EAAEgB,UAAU,GAAGjB,EAAEa,KAAKw59C,OAAOn69C,EAAED,EAAEo69C,OAAO,OAAOr69C,EAAEig+C,mBAAmB//9C,EAAE,CAAC,GAAG,IAAIe,UAAUC,OAAO,CAAC,IAAmBN,EAAEK,UAAU,GAAGE,EAA5BF,UAAU,GAAsBU,EAAEd,KAAKw59C,OAAOx49C,EAAEV,EAAEk59C,OAAOn39C,EAAEvB,EAAEs+9C,mBAAmBp+9C,EAAEjB,GAAG,GAAG,IAAIsC,EAAE,OAAOA,EAAE,IAAI,IAAIG,EAAExC,KAAK8k+C,qBAAqBjk+C,EAAEP,EAAEwk+C,qBAAqBhi+C,EAAE,EAAEA,EAAEN,GAAGM,EAAEjC,GAAG,CAAC,IAAI+B,EAAE5C,KAAKil+C,iBAAiBni+C,GAAGJ,EAAEpC,EAAE2k+C,iBAAiBni+C,GAAGX,EAAES,EAAEw89C,mBAAmB189C,EAAE3C,GAAG,GAAG,IAAIoC,EAAE,OAAOA,EAAEW,GAAG,CAAC,OAAOA,EAAEN,EAAE,EAAEM,EAAEjC,GAAG,EAAE,CAAC,CAAC,EAAE1B,EAAEO,UAAUa,MAAM,SAASnB,GAAG,GAAG8E,EAAE9E,EAAEyM,IAAI,CAAC7L,KAAKw59C,OAAOj59C,MAAMnB,GAAG,IAAI,IAAID,EAAE,EAAEA,EAAEa,KAAKy59C,OAAOp59C,OAAOlB,IAAIa,KAAKy59C,OAAOt69C,GAAGoB,MAAMnB,EAAE,MAAM,GAAG8E,EAAE9E,EAAE+P,IAAI,CAAC,GAAGnP,KAAKw59C,OAAOj59C,MAAMnB,IAAIA,EAAEkhL,SAAS,IAAI,IAAIjhL,EAAE,EAAEA,EAAEW,KAAKy59C,OAAOp59C,SAASL,KAAKy59C,OAAOp69C,GAAGkB,MAAMnB,IAAIA,EAAEkhL,UAAUjhL,KAAKD,EAAE4j+C,qBAAqBhj+C,KAAKy+O,iBAAiB,MAAM,GAAGv6O,EAAE9E,EAAEwQ,IAAIxQ,EAAEytB,OAAO7sB,WAAW,GAAGkE,EAAE9E,EAAEwM,IAAI,CAACxM,EAAEytB,OAAO7sB,MAAMA,KAAKw59C,OAAOj59C,MAAMnB,GAAG,IAAI,IAAIwB,EAAE,EAAEA,EAAEZ,KAAKy59C,OAAOp59C,OAAOO,IAAIZ,KAAKy59C,OAAO749C,GAAGL,MAAMnB,EAAE,CAAC,EAAED,EAAEO,UAAU0j+C,YAAY,WAAW,GAAGpj+C,KAAKqoE,UAAU,OAAOroE,KAAK2+9C,aAAa3E,wBAAwB,IAAI569C,EAAE,IAAIK,MAAMO,KAAKy59C,OAAOp59C,OAAO,GAAG+8H,KAAK,MAAMh+H,EAAE,GAAGY,KAAKw59C,OAAO,IAAI,IAAIr69C,EAAE,EAAEA,EAAEa,KAAKy59C,OAAOp59C,OAAOlB,IAAIC,EAAED,EAAE,GAAGa,KAAKy59C,OAAOt69C,GAAG,OAAOC,EAAEiB,QAAQ,EAAEL,KAAK2+9C,aAAa5E,iBAAiB369C,EAAE,GAAGul+C,yBAAyB3k+C,KAAK2+9C,aAAa3E,sBAAsB569C,EAAE,EAAED,EAAEO,UAAU6wB,MAAM,WAAW,IAAIpxB,EAAEC,EAAEM,UAAU6wB,MAAM3wB,KAAKI,MAAMb,EAAEq69C,OAAOx59C,KAAKw59C,OAAOjp8C,QAAQpxB,EAAEs69C,OAAO,IAAIh69C,MAAMO,KAAKy59C,OAAOp59C,QAAQ+8H,KAAK,MAAM,IAAI,IAAI/9H,EAAE,EAAEA,EAAEW,KAAKy59C,OAAOp59C,OAAOhB,IAAIF,EAAEs69C,OAAOp69C,GAAGW,KAAKy59C,OAAOp69C,GAAGkxB,QAAQ,OAAOpxB,CAAC,EAAEA,EAAEO,UAAUw59C,gBAAgB,WAAW,MAAM,SAAS,EAAE/59C,EAAEO,UAAUogI,KAAK,WAAW,IAAI,IAAI1gI,EAAEY,KAAKw59C,OAAO151C,OAAOzgI,EAAE,IAAII,MAAMO,KAAKy59C,OAAOp59C,QAAQ+8H,KAAK,MAAMx8H,EAAE,EAAEA,EAAEvB,EAAEgB,OAAOO,IAAIvB,EAAEuB,GAAGZ,KAAKy59C,OAAO749C,GAAGk/H,OAAO,OAAO,IAAI3gI,EAAEC,EAAEC,EAAEW,KAAK+hxB,SAAS,EAAE5ixB,EAAEO,UAAUsl+C,gBAAgB,WAAW,OAAOhl+C,KAAKw59C,MAAM,EAAEr69C,EAAEO,UAAU2oE,QAAQ,WAAW,OAAOroE,KAAKw59C,OAAOnx5C,SAAS,EAAElpE,EAAEO,UAAUul+C,iBAAiB,SAAS7l+C,GAAG,OAAOY,KAAKy59C,OAAOr69C,EAAE,EAAED,EAAEO,UAAUw09C,YAAY,WAAW,MAAM,CAAC1l9C,GAAG,EAAErP,EAAEO,UAAUon+B,SAAS,WAAW,OAAO3n+B,CAAC,EAAEE,EAAEm19C,iBAAiBrx9C,IAAI,WAAW,OAAO,kBAAkB,EAAE7D,OAAOkU,iBAAiBrU,EAAEE,GAAGF,CAAC,CAA96K,CAAg7KoM,IAAI7E,GAAG,SAAStH,GAAG,SAASD,IAAIC,EAAEmB,MAAMP,KAAKI,UAAU,CAAChB,IAAID,EAAEK,UAAUJ,IAAID,EAAEO,UAAUJ,OAAOY,OAAOd,GAAGA,EAAEM,YAAYO,YAAYd,EAAE,IAAIE,EAAE,CAACm19C,iBAAiB,CAAC1w9C,cAAa,IAAK,OAAO3E,EAAEO,UAAU8xe,aAAa,WAAW,OAAOjme,GAAG4y9C,oBAAoB,EAAEh/9C,EAAEO,UAAUozE,QAAQ,WAAW,OAAM,CAAE,EAAE3zE,EAAEO,UAAUq/9C,YAAY,WAAW,GAAG,IAAI3+9C,UAAUC,OAAO,CAAC,IAAIlB,EAAEiB,UAAU,GAAGf,EAAEe,UAAU,GAAG,QAAQJ,KAAKkj+C,kBAAkB/j+C,IAAIC,EAAEM,UAAUq/9C,YAAYn/9C,KAAKI,KAAKb,EAAEE,EAAE,CAAC,OAAOD,EAAEM,UAAUq/9C,YAAYx+9C,MAAMP,KAAKI,UAAU,EAAEjB,EAAEO,UAAU+39C,cAAc,WAAW,GAAG,IAAIr39C,UAAUC,OAAO,CAAC,IAAIlB,EAAEiB,UAAU,GAAG,OAAOJ,KAAKq59C,YAAYl69C,GAAGs49C,eAAe,CAAC,OAAOr49C,EAAEM,UAAU+39C,cAAcl39C,MAAMP,KAAKI,UAAU,EAAEjB,EAAEO,UAAUyj+C,qBAAqB,WAAW,OAAO9y9C,GAAGgy9C,KAAK,EAAElj+C,EAAEO,UAAUmmjC,aAAa,WAAW,OAAO,CAAC,EAAE1mjC,EAAEO,UAAU0j+C,YAAY,WAAW,OAAOpj+C,KAAK2+9C,aAAazE,yBAAyB,KAAK,EAAE/69C,EAAEO,UAAUw59C,gBAAgB,WAAW,MAAM,YAAY,EAAE/59C,EAAEO,UAAUogI,KAAK,WAAW,IAAI,IAAI1gI,EAAE,IAAIK,MAAMO,KAAKq59C,YAAYh59C,QAAQ+8H,KAAK,MAAM/9H,EAAE,EAAEA,EAAED,EAAEiB,OAAOhB,IAAID,EAAEC,GAAGW,KAAKq59C,YAAYh69C,GAAGygI,OAAO,OAAO,IAAI3gI,EAAEC,EAAEY,KAAK+hxB,SAAS,EAAE5ixB,EAAEO,UAAUw09C,YAAY,WAAW,MAAM,CAACvk9C,GAAG,EAAExQ,EAAEO,UAAUon+B,SAAS,WAAW,OAAO3n+B,CAAC,EAAEE,EAAEm19C,iBAAiBrx9C,IAAI,WAAW,OAAO,kBAAkB,EAAE7D,OAAOkU,iBAAiBrU,EAAEE,GAAGF,CAAC,CAA3wC,CAA6wC0Q,IAAItJ,GAAG,SAASnH,GAAG,SAASD,EAAEA,EAAEE,GAAGF,aAAagF,GAAG9E,aAAakJ,KAAKpJ,EAAEE,EAAEul+C,+BAA+B1k+C,OAAOf,IAAIC,EAAEQ,KAAKI,KAAKb,EAAEE,GAAGW,KAAKkl+C,sBAAsB,CAAC9l+C,IAAID,EAAEK,UAAUJ,IAAID,EAAEO,UAAUJ,OAAOY,OAAOd,GAAGA,EAAEM,YAAYO,YAAYd,EAAE,IAAIE,EAAE,CAAC8l+C,mBAAmB,CAACrh+C,cAAa,GAAI0w9C,iBAAiB,CAAC1w9C,cAAa,IAAK,OAAO3E,EAAEO,UAAU8xe,aAAa,WAAW,OAAOjme,GAAG8y9C,oBAAoB,EAAEl/9C,EAAEO,UAAUyj+C,qBAAqB,WAAW,OAAO9y9C,GAAGgy9C,KAAK,EAAElj+C,EAAEO,UAAU88O,SAAS,WAAW,QAAQx8O,KAAKqoE,WAAWjpE,EAAEM,UAAU88O,SAAS58O,KAAKI,KAAK,EAAEb,EAAEO,UAAU46D,QAAQ,WAAW,IAAIl7D,EAAEY,KAAK8vlC,QAAQhw9B,OAAqB,OAAdvxH,GAAG+rD,QAAQl7D,GAAUY,KAAK2+9C,aAAa5E,iBAAiB369C,EAAE,EAAED,EAAEO,UAAUwl+C,qBAAqB,WAAW,IAAIll+C,KAAKqoE,YAAYjpE,EAAEM,UAAU88O,SAAS58O,KAAKI,MAAM,MAAM,IAAIoD,EAAE,wDAAwD,GAAGpD,KAAK2k+C,wBAAwB//8C,QAAQ,GAAG5kB,KAAK2k+C,wBAAwB//8C,OAAOzlB,EAAEgm+C,mBAAmB,MAAM,IAAI/h+C,EAAE,iDAAiDpD,KAAK2k+C,wBAAwB//8C,OAAO,wBAAwB,EAAEzlB,EAAEO,UAAUw59C,gBAAgB,WAAW,MAAM,YAAY,EAAE/59C,EAAEO,UAAUogI,KAAK,WAAW,OAAO,IAAI3gI,EAAEa,KAAK8vlC,QAAQhw9B,OAAO9/H,KAAK+hxB,SAAS,EAAE5ixB,EAAEO,UAAUw09C,YAAY,WAAW,MAAM,EAAE,EAAE/09C,EAAEO,UAAUon+B,SAAS,WAAW,OAAO3n+B,CAAC,EAAEE,EAAE8l+C,mBAAmBhi+C,IAAI,WAAW,OAAO,CAAC,EAAE9D,EAAEm19C,iBAAiBrx9C,IAAI,WAAW,OAAO,kBAAkB,EAAE7D,OAAOkU,iBAAiBrU,EAAEE,GAAGF,CAAC,CAAx3C,CAA03C6P,IAAIrI,GAAG,SAASvH,GAAG,SAASD,IAAIC,EAAEmB,MAAMP,KAAKI,UAAU,CAAChB,IAAID,EAAEK,UAAUJ,IAAID,EAAEO,UAAUJ,OAAOY,OAAOd,GAAGA,EAAEM,YAAYO,YAAYd,EAAE,IAAIE,EAAE,CAACm19C,iBAAiB,CAAC1w9C,cAAa,IAAK,OAAO3E,EAAEO,UAAU8xe,aAAa,WAAW,OAAOjme,GAAGiz9C,sBAAsB,EAAEr/9C,EAAEO,UAAUq/9C,YAAY,WAAW,GAAG,IAAI3+9C,UAAUC,OAAO,CAAC,IAAIlB,EAAEiB,UAAU,GAAGf,EAAEe,UAAU,GAAG,QAAQJ,KAAKkj+C,kBAAkB/j+C,IAAIC,EAAEM,UAAUq/9C,YAAYn/9C,KAAKI,KAAKb,EAAEE,EAAE,CAAC,OAAOD,EAAEM,UAAUq/9C,YAAYx+9C,MAAMP,KAAKI,UAAU,EAAEjB,EAAEO,UAAUyj+C,qBAAqB,WAAW,OAAO,CAAC,EAAEhk+C,EAAEO,UAAUmmjC,aAAa,WAAW,OAAO,CAAC,EAAE1mjC,EAAEO,UAAU46D,QAAQ,WAAW,IAAI,IAAIl7D,EAAEY,KAAKq59C,YAAYh59C,OAAOlB,EAAE,IAAIM,MAAML,GAAGg+H,KAAK,MAAM/9H,EAAE,EAAEA,EAAEW,KAAKq59C,YAAYh59C,OAAOhB,IAAIF,EAAEE,GAAGW,KAAKq59C,YAAYh69C,GAAGi7D,UAAU,OAAOt6D,KAAK2+9C,aAAa1E,mBAAmB969C,EAAE,EAAEA,EAAEO,UAAU0j+C,YAAY,WAAW,GAAGpj+C,KAAKqoE,UAAU,OAAOroE,KAAK2+9C,aAAa3E,wBAAwB,IAAI,IAAI569C,EAAE,IAAI6P,GAAG9P,EAAE,EAAEA,EAAEa,KAAKq59C,YAAYh59C,OAAOlB,IAAI,IAAI,IAAIE,EAAEW,KAAKq59C,YAAYl69C,GAAGik+C,cAAcxi+C,EAAE,EAAEA,EAAEvB,EAAE8/9C,mBAAmBv+9C,IAAIxB,EAAE+lB,IAAI9lB,EAAEu/9C,aAAah+9C,IAAI,IAAIb,EAAE,IAAIN,MAAML,EAAEwlB,QAAQw4G,KAAK,MAAM,OAAOp9H,KAAK2+9C,aAAa3E,sBAAsB569C,EAAEyuH,QAAQ9tH,GAAG,EAAEZ,EAAEO,UAAUw59C,gBAAgB,WAAW,MAAM,cAAc,EAAE/59C,EAAEO,UAAUogI,KAAK,WAAW,IAAI,IAAI1gI,EAAE,IAAIK,MAAMO,KAAKq59C,YAAYh59C,QAAQ+8H,KAAK,MAAM/9H,EAAE,EAAEA,EAAED,EAAEiB,OAAOhB,IAAID,EAAEC,GAAGW,KAAKq59C,YAAYh69C,GAAGygI,OAAO,OAAO,IAAI3gI,EAAEC,EAAEY,KAAK+hxB,SAAS,EAAE5ixB,EAAEO,UAAUw09C,YAAY,WAAW,MAAM,CAAC1l9C,GAAG,EAAErP,EAAEO,UAAUon+B,SAAS,WAAW,OAAO3n+B,CAAC,EAAEE,EAAEm19C,iBAAiBrx9C,IAAI,WAAW,OAAO,iBAAiB,EAAE7D,OAAOkU,iBAAiBrU,EAAEE,GAAGF,CAAC,CAA9/C,CAAggD0Q,IAAI9I,GAAG,SAAS3H,GAAGY,KAAK+hxB,SAAS3ixB,GAAG,KAAKY,KAAKol+C,mBAAkB,CAAE,EAAEv+9C,GAAG,CAACw+9C,sBAAsB,CAACvh+C,cAAa,GAAIwh+C,oBAAoB,CAACxh+C,cAAa,GAAIyh+C,4BAA4B,CAACzh+C,cAAa,IAAKiD,GAAGrH,UAAU8l+C,gBAAgB,SAASpm+C,GAAGY,KAAKol+C,kBAAkBhm+C,CAAC,EAAE2H,GAAGrH,UAAU+l+C,KAAK,SAASrm+C,EAAED,GAAG,GAAG,OAAOC,EAAE,OAAO,KAAK,IAAIC,EAAEW,KAAK0l+C,aAAatm+C,EAAED,GAAG,OAAOa,KAAKol+C,mBAAmB/l+C,EAAEwg+C,YAAYzg+C,EAAEig+C,eAAehg+C,CAAC,EAAE0H,GAAGrH,UAAUgm+C,aAAa,SAAStm+C,EAAED,GAAG,OAAO,OAAOa,KAAK+hxB,WAAW/hxB,KAAK+hxB,SAAS3ixB,EAAEu/9C,cAAcv/9C,aAAayQ,GAAG7P,KAAK2l+C,uBAAuBvm+C,EAAED,GAAGC,aAAakR,GAAGtQ,KAAK4l+C,YAAYxm+C,EAAED,GAAGC,aAAagR,IAA2BhR,aAAa4P,GAArC7P,EAAEsm+C,KAAKrm+C,EAAEY,KAAK+hxB,WAAmDh3wB,GAAGqv9C,qBAAqB,+BAA+Bh79C,EAAE0n+B,WAAW9+oB,WAAW,KAAK,EAAEjhV,GAAGrH,UAAUim+C,uBAAuB,SAASvm+C,EAAED,GAAG,IAAI,IAAIE,EAAEF,EAAEsm+C,KAAKrm+C,EAAEY,KAAK+hxB,UAAUnhxB,EAAE,IAAIqO,GAAGlP,EAAE,EAAEA,EAAEV,EAAE8/9C,mBAAmBp/9C,IAAI,CAAC,IAAIO,EAAEN,KAAKyl+C,KAAKpm+C,EAAEu/9C,aAAa7+9C,GAAGZ,GAAG,OAAOmB,GAAGA,EAAE+nE,WAAWznE,EAAEukB,IAAI7kB,EAAE,CAAC,OAAOjB,EAAEyn+B,aAAapg+B,GAAG1G,KAAK+hxB,SAAS83sB,iBAAiBj59C,EAAEitH,QAAQ,KAAKxuH,EAAEyn+B,aAAah49B,GAAG9O,KAAK+hxB,SAASi4sB,sBAAsBp59C,EAAEitH,QAAQ,KAAKxuH,EAAEyn+B,aAAang+B,GAAG3G,KAAK+hxB,SAASk4sB,mBAAmBr59C,EAAEitH,QAAQ,KAAK7tH,KAAK+hxB,SAASm4sB,yBAAyBt59C,EAAEitH,QAAQ,IAAI,EAAE9mH,GAAGrH,UAAUkm+C,YAAY,SAASxm+C,EAAED,GAAG,IAAIE,EAAEF,EAAEsm+C,KAAKrm+C,EAAEY,KAAK+hxB,UAAU,GAAG,OAAO1ixB,IAAIA,EAAEW,KAAK+hxB,SAAS4uc,cAAc,OAAOtxtC,EAAEgpE,UAAU,OAAOhpE,EAAE,IAAIuB,EAAEZ,KAAKyl+C,KAAKpm+C,EAAE2l+C,kBAAkB7l+C,GAAG,GAAG,OAAOyB,GAAGA,EAAEynE,UAAU,OAAOroE,KAAK+hxB,SAAS4uc,gBAAgB,IAAI,IAAI5wtC,EAAE,IAAIkP,GAAG3O,EAAE,EAAEA,EAAEjB,EAAEyl+C,qBAAqBxk+C,IAAI,CAAC,IAAIQ,EAAEd,KAAKyl+C,KAAKpm+C,EAAE4l+C,iBAAiB3k+C,GAAGnB,GAAG,OAAO2B,GAAGA,EAAEunE,WAAWtoE,EAAEolB,IAAIrkB,EAAE,CAAC,OAAOd,KAAK+hxB,SAAS4uc,cAAc/vtC,EAAEb,EAAE8tH,QAAQ,IAAI,EAAE9mH,GAAGrH,UAAUw09C,YAAY,WAAW,MAAM,EAAE,EAAEnt9C,GAAGrH,UAAUon+B,SAAS,WAAW,OAAO//9B,EAAE,EAAEA,GAAG8+9C,wBAAwB,WAAW,EAAEh/9C,GAAGw+9C,sBAAsBli+C,IAAI,WAAW,OAAO2D,EAAE,EAAED,GAAGy+9C,oBAAoBni+C,IAAI,WAAW,OAAO+D,EAAE,EAAEL,GAAG0+9C,4BAA4Bpi+C,IAAI,WAAW,OAAO8D,EAAE,EAAE3H,OAAOkU,iBAAiBzM,GAAGF,IAAI,IAAIC,GAAG,WAAW,EAAEA,GAAGpH,UAAU+l+C,KAAK,SAASrm+C,EAAED,GAAG,OAAOC,CAAC,EAAE0H,GAAGpH,UAAUw09C,YAAY,WAAW,MAAM,CAACnt9C,GAAG8+9C,wBAAwB,EAAE/+9C,GAAGpH,UAAUon+B,SAAS,WAAW,OAAOhg+B,EAAE,EAAE,IAAII,GAAG,WAAW,EAAEA,GAAGxH,UAAU+l+C,KAAK,SAASrm+C,EAAED,GAAG,IAAIE,EAAEW,KAAK8l+C,gBAAgB1m+C,EAAEo1O,iBAAiBp1O,GAAG,OAAO,OAAOC,EAAED,EAAEA,aAAamH,GAAGpH,EAAE469C,iBAAiB169C,GAAGD,aAAa4P,GAAG7P,EAAE269C,iBAAiBz69C,GAAGD,aAAagR,GAAG/Q,EAAEgB,OAAO,EAAElB,EAAEy69C,YAAYv69C,EAAE,IAAIF,EAAEy69C,cAAcx69C,CAAC,EAAE8H,GAAGxH,UAAUw09C,YAAY,WAAW,MAAM,CAACnt9C,GAAG8+9C,wBAAwB,EAAE3+9C,GAAGxH,UAAUon+B,SAAS,WAAW,OAAO5/9B,EAAE,EAAE,IAAID,GAAG,WAAW,EAAEA,GAAGvH,UAAU+l+C,KAAK,SAASrm+C,EAAED,GAAG,OAAOC,aAAamH,GAAGpH,EAAE469C,iBAAiB/59C,KAAKyl+C,KAAKrm+C,EAAEul+C,wBAAwBvl+C,IAAIA,aAAa4P,GAAG7P,EAAE269C,iBAAiB959C,KAAKyl+C,KAAKrm+C,EAAEul+C,wBAAwBvl+C,IAAIA,aAAagR,GAAGjR,EAAEy69C,YAAY559C,KAAKyl+C,KAAKrm+C,EAAEul+C,wBAAwBvl+C,IAAIA,CAAC,EAAE6H,GAAGvH,UAAUw09C,YAAY,WAAW,MAAM,CAACnt9C,GAAG8+9C,wBAAwB,EAAE5+9C,GAAGvH,UAAUon+B,SAAS,WAAW,OAAO7/9B,EAAE,EAAE,IAAIE,GAAG,WAAW,GAAGnH,KAAK+l+C,WAAW,EAAE/l+C,KAAKm59C,aAAa,KAAK,IAAI/49C,UAAUC,QAAQ,GAAGD,UAAU,aAAaX,MAAMO,KAAKm59C,aAAa/49C,UAAU,GAAGJ,KAAK+l+C,WAAW,OAAO,GAAG5g8C,OAAOglH,UAAU/pJ,UAAU,IAAI,CAAC,IAAIhB,EAAEgB,UAAU,GAAGJ,KAAKm59C,aAAa,IAAI159C,MAAML,GAAGg+H,KAAK,MAAM,IAAI,IAAIj+H,EAAE,EAAEA,EAAEC,EAAED,IAAIa,KAAKm59C,aAAah69C,GAAG,IAAIgF,CAAC,MAAM,GAAGD,EAAE9D,UAAU,GAAGwF,GAAG,CAAC,IAAIvG,EAAEe,UAAU,GAAG,GAAG,OAAOf,EAAE,OAAOW,KAAKm59C,aAAa,IAAI159C,MAAM,GAAG29H,KAAK,MAAM,KAAKp9H,KAAK+l+C,WAAW1m+C,EAAEwmjC,eAAe7ljC,KAAKm59C,aAAa,IAAI159C,MAAMJ,EAAEulB,QAAQw4G,KAAK,MAAM,IAAI,IAAIx8H,EAAE,EAAEA,EAAEZ,KAAKm59C,aAAa949C,OAAOO,IAAIZ,KAAKm59C,aAAav49C,GAAGvB,EAAEq49C,kBAAkB929C,EAAE,OAAO,GAAG,IAAIR,UAAUC,OAAO,GAAGD,UAAU,aAAaX,OAAO0lC,OAAOglH,UAAU/pJ,UAAU,IAAI,CAAC,IAAIL,EAAEK,UAAU,GAAGE,EAAEF,UAAU,GAAGJ,KAAKm59C,aAAap59C,EAAEC,KAAK+l+C,WAAWzl+C,EAAE,OAAOP,IAAIC,KAAKm59C,aAAa,IAAI159C,MAAM,GAAG29H,KAAK,MAAM,MAAM,GAAGj4F,OAAOglH,UAAU/pJ,UAAU,KAAK+kC,OAAOglH,UAAU/pJ,UAAU,IAAI,CAAC,IAAIU,EAAEV,UAAU,GAAGY,EAAEZ,UAAU,GAAGJ,KAAKm59C,aAAa,IAAI159C,MAAMqB,GAAGs8H,KAAK,MAAMp9H,KAAK+l+C,WAAW/k+C,EAAE,IAAI,IAAIqB,EAAE,EAAEA,EAAEvB,EAAEuB,IAAIrC,KAAKm59C,aAAa929C,GAAG,IAAI8B,CAAC,CAAC,EAAEiD,GAAG,CAACot9C,iBAAiB,CAAC1w9C,cAAa,IAAKqD,GAAGzH,UAAU+09C,YAAY,SAASr19C,EAAED,EAAEE,GAAG,OAAOF,GAAG,KAAKyG,EAAEb,EAAE/E,KAAKm59C,aAAa/59C,GAAG6E,EAAE5E,EAAE,MAAM,KAAKuG,EAAEH,EAAEzF,KAAKm59C,aAAa/59C,GAAG4D,EAAE3D,EAAE,MAAM,KAAKuG,EAAEnB,EAAEzE,KAAKm59C,aAAa/59C,GAAGuG,EAAEtG,EAAE,MAAM,QAAQ,MAAM,IAAI+D,EAAE,yBAAyB,EAAE+D,GAAGzH,UAAUklB,KAAK,WAAW,OAAO5kB,KAAKm59C,aAAa949C,MAAM,EAAE8G,GAAGzH,UAAUi19C,YAAY,SAASv19C,EAAED,GAAG,OAAOA,GAAG,KAAKyG,EAAEb,EAAE,OAAO/E,KAAKm59C,aAAa/59C,GAAG6E,EAAE,KAAK2B,EAAEH,EAAE,OAAOzF,KAAKm59C,aAAa/59C,GAAG4D,EAAE,KAAK4C,EAAEnB,EAAE,OAAOzE,KAAKm59C,aAAa/59C,GAAGuG,EAAE,OAAO1C,EAAE24vB,GAAG,EAAEz0vB,GAAGzH,UAAU+39C,cAAc,WAAW,GAAG,IAAIr39C,UAAUC,OAAO,CAAC,IAAIjB,EAAEgB,UAAU,GAAG,OAAOJ,KAAKm59C,aAAa/59C,EAAE,CAAC,GAAG,IAAIgB,UAAUC,OAAO,CAAC,IAAIlB,EAAEiB,UAAU,GAAGf,EAAEe,UAAU,GAAGf,EAAE4E,EAAEjE,KAAKm59C,aAAah69C,GAAG8E,EAAE5E,EAAE2D,EAAEhD,KAAKm59C,aAAah69C,GAAG6D,EAAE3D,EAAEsG,EAAE3F,KAAKm59C,aAAah69C,GAAGwG,CAAC,CAAC,EAAEwB,GAAGzH,UAAUg49C,kBAAkB,SAASt49C,GAAG,OAAO,IAAI+E,EAAEnE,KAAKm59C,aAAa/59C,GAAG,EAAE+H,GAAGzH,UAAUmmjC,aAAa,WAAW,OAAO7ljC,KAAK+l+C,UAAU,EAAE5+9C,GAAGzH,UAAUi49C,KAAK,SAASv49C,GAAG,OAAOY,KAAKm59C,aAAa/59C,GAAG6E,CAAC,EAAEkD,GAAGzH,UAAU6wB,MAAM,WAAW,IAAI,IAAInxB,EAAE,IAAIK,MAAMO,KAAK4kB,QAAQw4G,KAAK,MAAMj+H,EAAE,EAAEA,EAAEa,KAAKm59C,aAAa949C,OAAOlB,IAAIC,EAAED,GAAGa,KAAKm59C,aAAah69C,GAAGoxB,QAAQ,OAAO,IAAIppB,GAAG/H,EAAEY,KAAK+l+C,WAAW,EAAE5+9C,GAAGzH,UAAUk49C,eAAe,SAASx49C,GAAG,IAAI,IAAID,EAAE,EAAEA,EAAEa,KAAKm59C,aAAa949C,OAAOlB,IAAIC,EAAEm59C,gBAAgBv49C,KAAKm59C,aAAah69C,IAAI,OAAOC,CAAC,EAAE+H,GAAGzH,UAAUogI,KAAK,WAAW,IAAI,IAAI1gI,EAAE,IAAIK,MAAMO,KAAK4kB,QAAQw4G,KAAK,MAAMj+H,EAAE,EAAEA,EAAEa,KAAKm59C,aAAa949C,OAAOlB,IAAIC,EAAED,GAAGa,KAAKm59C,aAAah69C,GAAG2gI,OAAO,OAAO,IAAI34H,GAAG/H,EAAEY,KAAK+l+C,WAAW,EAAE5+9C,GAAGzH,UAAU6E,SAAS,WAAW,GAAGvE,KAAKm59C,aAAa949C,OAAO,EAAE,CAAC,IAAIjB,EAAE,IAAImG,EAAE,GAAGvF,KAAKm59C,aAAa949C,QAAQjB,EAAEglF,OAAO,KAAKhlF,EAAEglF,OAAOpkF,KAAKm59C,aAAa,IAAI,IAAI,IAAIh69C,EAAE,EAAEA,EAAEa,KAAKm59C,aAAa949C,OAAOlB,IAAIC,EAAEglF,OAAO,MAAMhlF,EAAEglF,OAAOpkF,KAAKm59C,aAAah69C,IAAI,OAAOC,EAAEglF,OAAO,KAAKhlF,EAAEmF,UAAU,CAAC,MAAM,IAAI,EAAE4C,GAAGzH,UAAUqo0B,KAAK,SAAS3o0B,GAAG,OAAOY,KAAKm59C,aAAa/59C,GAAG4D,CAAC,EAAEmE,GAAGzH,UAAUm49C,kBAAkB,WAAW,OAAO739C,KAAKm59C,YAAY,EAAEhy9C,GAAGzH,UAAUw09C,YAAY,WAAW,MAAM,CAACtu9C,EAAEzG,EAAE,EAAEgI,GAAGzH,UAAUon+B,SAAS,WAAW,OAAO3/9B,EAAE,EAAEC,GAAGot9C,iBAAiBrx9C,IAAI,WAAW,OAAO,iBAAiB,EAAE7D,OAAOkU,iBAAiBrM,GAAGC,IAAI,IAAIJ,GAAG,WAAW,EAAEQ,GAAG,CAACgt9C,iBAAiB,CAAC1w9C,cAAa,GAAIki+C,eAAe,CAACli+C,cAAa,IAAKkD,GAAGtH,UAAUum+C,YAAY,WAAW,OAAOj/9C,GAAGkkB,UAAU,EAAElkB,GAAGtH,UAAUQ,OAAO,WAAW,GAAG,IAAIE,UAAUC,OAAO,CAAC,GAAGD,UAAU,aAAaX,MAA0B,OAAO,IAAI0H,GAAxB/G,UAAU,IAAoB,GAAG8D,EAAE9D,UAAU,GAAGwF,GAAuB,OAAO,IAAIuB,GAAxB/G,UAAU,GAAoB,MAAM,GAAG,IAAIA,UAAUC,OAAO,CAAC,IAAIhB,EAAEe,UAAU,GAAGQ,EAAER,UAAU,GAAG,OAAOQ,EAAE,IAAIA,EAAE,GAAGA,EAAE,EAAE,IAAIuG,GAAG9H,GAAG,IAAI8H,GAAG9H,EAAEuB,EAAE,CAAC,EAAEoG,GAAGtH,UAAUw09C,YAAY,WAAW,MAAM,CAAC5w9C,EAAEnE,EAAE,EAAE6H,GAAGtH,UAAUon+B,SAAS,WAAW,OAAO9/9B,EAAE,EAAEA,GAAGkkB,SAAS,WAAW,OAAOlkB,GAAGg/9C,cAAc,EAAEx+9C,GAAGgt9C,iBAAiBrx9C,IAAI,WAAW,OAAO,kBAAkB,EAAEqE,GAAGw+9C,eAAe7i+C,IAAI,WAAW,OAAO,IAAI6D,EAAE,EAAE1H,OAAOkU,iBAAiBxM,GAAGQ,IAAI,IAAID,GAAG,SAASnI,GAAG,SAASD,IAAIC,EAAEQ,KAAKI,MAAMA,KAAKkm+C,KAAK,IAAIv78C,GAAG,CAAC,OAAOvrB,IAAID,EAAEK,UAAUJ,GAAGD,EAAEO,UAAUJ,OAAOY,OAAOd,GAAGA,EAAEM,WAAWP,EAAEO,UAAUO,YAAYd,EAAEA,EAAEO,UAAUyD,IAAI,SAAS/D,GAAG,OAAOY,KAAKkm+C,KAAK/i+C,IAAI/D,IAAI,IAAI,EAAED,EAAEO,UAAUwh9B,IAAI,SAAS9h9B,EAAED,GAAG,OAAOa,KAAKkm+C,KAAKj69C,IAAI7M,EAAED,GAAGA,CAAC,EAAEA,EAAEO,UAAUgd,OAAO,WAAW,IAAI,IAAItd,EAAE,IAAI6P,GAAG9P,EAAEa,KAAKkm+C,KAAKxp9C,SAASrd,EAAEF,EAAE4B,QAAQ1B,EAAE6B,MAAM9B,EAAE+lB,IAAI9lB,EAAE8B,OAAO9B,EAAEF,EAAE4B,OAAO,OAAO3B,CAAC,EAAED,EAAEO,UAAUqi+C,SAAS,WAAW,IAAI3i+C,EAAE,IAAIyP,GAAG,OAAO7O,KAAKkm+C,KAAKzp9C,UAAUyI,SAAQ,SAAS/lB,GAAG,OAAOC,EAAE+lB,IAAIhmB,EAAE,IAAGC,CAAC,EAAED,EAAEO,UAAUklB,KAAK,WAAW,OAAO5kB,KAAKkm+C,KAAKth9C,MAAM,EAAEzlB,CAAC,CAA/iB,CAAijB8O,IAAI5G,GAAG,SAASjI,IAAI,GAAGY,KAAKmm+C,WAAW,KAAKnm+C,KAAK+qyB,OAAO,KAAK,IAAI3qyB,UAAUC,OAAOL,KAAKmm+C,WAAW/m+C,EAAEgn+C,cAAc,GAAG,IAAIhm+C,UAAUC,OAAO,GAAGD,UAAU,aAAakH,GAAG,CAAC,IAAInI,EAAEiB,UAAU,GAAGJ,KAAKmm+C,WAAWhn+C,EAAEA,IAAIC,EAAEin+C,OAAOrm+C,KAAK8sP,SAAS,EAAE,MAAM,GAAG,iBAAiB1sP,UAAU,GAAG,CAAC,IAAIf,EAAEe,UAAU,GAAGJ,KAAKmm+C,WAAW/m+C,EAAEin+C,MAAMrm+C,KAAK8sP,SAASztP,EAAE,MAAM,GAAGe,UAAU,aAAahB,EAAE,CAAC,IAAIwB,EAAER,UAAU,GAAGJ,KAAKmm+C,WAAWvl+C,EAAEul+C,WAAWnm+C,KAAK+qyB,OAAOnqyB,EAAEmqyB,MAAM,CAAC,EAAE9iyB,GAAG,CAACus9C,iBAAiB,CAAC1w9C,cAAa,GAAIwi+C,oBAAoB,CAACxi+C,cAAa,IAAKuD,GAAG3H,UAAU6yI,OAAO,SAASnzI,GAAG,KAAKA,aAAaiI,IAAI,OAAM,EAAG,IAAIlI,EAAEC,EAAE,OAAOY,KAAKmm+C,aAAahn+C,EAAEgn+C,YAAYnm+C,KAAK+qyB,SAAS5ryB,EAAE4ryB,MAAM,EAAE1jyB,GAAG3H,UAAUmzQ,UAAU,SAASzzQ,GAAG,IAAID,EAAEC,EAAEC,EAAEW,KAAKum+C,8BAA8B3l+C,EAAEzB,EAAEon+C,8BAA8B,OAAO,IAAI1g+C,EAAExG,GAAGwzQ,UAAU,IAAIhtQ,EAAEjF,GAAG,EAAEyG,GAAG3H,UAAU8tL,SAAS,WAAW,OAAOxtL,KAAK+qyB,MAAM,EAAE1jyB,GAAG3H,UAAU8m+C,WAAW,WAAW,OAAOxm+C,KAAKmm+C,aAAa9+9C,GAAG++9C,UAAUpm+C,KAAKmm+C,aAAa9+9C,GAAGo/9C,eAAe,EAAEp/9C,GAAG3H,UAAUslC,QAAQ,WAAW,OAAOhlC,KAAKmm+C,UAAU,EAAE9+9C,GAAG3H,UAAU6E,SAAS,WAAW,IAAInF,EAAE,UAAU,OAAOY,KAAKmm+C,aAAa9+9C,GAAG++9C,SAAShn+C,EAAE,WAAWY,KAAKmm+C,aAAa9+9C,GAAGo/9C,gBAAgBrn+C,EAAE,kBAAkBY,KAAKmm+C,aAAa9+9C,GAAGg/9C,QAAQjn+C,EAAE,gBAAgBY,KAAKwtL,WAAW,KAAKpuL,CAAC,EAAEiI,GAAG3H,UAAUg99C,YAAY,WAAW,GAAG,iBAAiBt89C,UAAU,GAAG,CAAC,IAAIhB,EAAEgB,UAAU,GAAG,OAAG6C,EAAEqpC,MAAMltC,IAAeY,KAAKmm+C,aAAa9+9C,GAAGo/9C,gBAA1Brn+C,EAA2DY,KAAKmm+C,aAAa9+9C,GAAGg/9C,MAAMxj+C,KAAKogD,MAAM7jD,EAAEY,KAAK+qyB,QAAQ/qyB,KAAK+qyB,OAAO3ryB,CAAC,CAAC,GAAGgB,UAAU,aAAa+D,EAAE,CAAC,IAAIhF,EAAEiB,UAAU,GAAG,GAAGJ,KAAKmm+C,aAAa9+9C,GAAG++9C,SAAS,OAAO,KAAKjn+C,EAAE8E,EAAEjE,KAAK089C,YAAYv99C,EAAE8E,GAAG9E,EAAE6D,EAAEhD,KAAK089C,YAAYv99C,EAAE6D,EAAE,CAAC,EAAEqE,GAAG3H,UAAU6m+C,4BAA4B,WAAW,IAAInn+C,EAAE,GAAG,OAAOY,KAAKmm+C,aAAa9+9C,GAAG++9C,SAAShn+C,EAAE,GAAGY,KAAKmm+C,aAAa9+9C,GAAGo/9C,gBAAgBrn+C,EAAE,EAAEY,KAAKmm+C,aAAa9+9C,GAAGg/9C,QAAQjn+C,EAAE,EAAEyD,KAAK2K,MAAM3K,KAAKuK,KAAKvK,KAAKwnB,IAAIrqB,KAAKwtL,YAAY3qL,KAAKwnB,IAAI,OAAOjrB,CAAC,EAAEiI,GAAG3H,UAAUotP,SAAS,SAAS1tP,GAAGY,KAAK+qyB,OAAOloyB,KAAKmjH,IAAI5mH,EAAE,EAAEiI,GAAG3H,UAAUw09C,YAAY,WAAW,MAAM,CAAC/09C,EAAEuF,EAAE,EAAE2C,GAAG3H,UAAUon+B,SAAS,WAAW,OAAOz/9B,EAAE,EAAEA,GAAGq/9C,YAAY,SAAStn+C,EAAED,GAAG,OAAOC,EAAEyzQ,UAAU1zQ,IAAI,EAAEC,EAAED,CAAC,EAAE8I,GAAGus9C,iBAAiBrx9C,IAAI,WAAW,OAAO,kBAAkB,EAAE8E,GAAGq+9C,oBAAoBnj+C,IAAI,WAAW,OAAO,gBAAgB,EAAE7D,OAAOkU,iBAAiBnM,GAAGY,IAAI,IAAIX,GAAG,SAASlI,EAAED,GAAGa,KAAKktd,MAAM/td,GAAG,KAAKC,EAAEun+C,cAAczlhB,IAAI/h9B,EAAEa,KAAK,EAAEyH,GAAG,CAAC+s9C,iBAAiB,CAAC1w9C,cAAa,GAAI6i+C,cAAc,CAAC7i+C,cAAa,IAAKwD,GAAG5H,UAAUum+C,YAAY,WAAW,OAAO3+9C,GAAGq/9C,cAAcxj+C,IAAInD,KAAKktd,MAAM,EAAE5ld,GAAG5H,UAAU6E,SAAS,WAAW,OAAOvE,KAAKktd,KAAK,EAAE5ld,GAAG5H,UAAUw09C,YAAY,WAAW,MAAM,CAAC/09C,EAAE,EAAEmI,GAAG5H,UAAUon+B,SAAS,WAAW,OAAOx/9B,EAAE,EAAEG,GAAG+s9C,iBAAiBrx9C,IAAI,WAAW,OAAO,iBAAiB,EAAEsE,GAAGk/9C,cAAcxj+C,IAAI,WAAW,OAAO,IAAIoE,EAAE,EAAEjI,OAAOkU,iBAAiBlM,GAAGG,IAAIJ,GAAG8+J,KAAK7+J,GAAGD,GAAGg/9C,MAAM,IAAI/+9C,GAAG,SAASD,GAAG++9C,SAAS,IAAI9+9C,GAAG,YAAYD,GAAGo/9C,gBAAgB,IAAIn/9C,GAAG,mBAAmB,IAAIiB,GAAG,SAASnJ,IAAIY,KAAK269C,gBAAgB,IAAItz9C,GAAGrH,KAAK+99C,MAAM,EAAE/99C,KAAK4m+C,2BAA2Bxn+C,EAAEyn+C,sCAAsC,IAAIzm+C,UAAUC,SAAS,IAAID,UAAUC,OAAO6D,EAAE9D,UAAU,GAAGkD,GAAGtD,KAAK4m+C,2BAA2Bxm+C,UAAU,GAAGA,UAAU,aAAaiH,KAAKrH,KAAK269C,gBAAgBv69C,UAAU,IAAI,IAAIA,UAAUC,QAAQL,KAAK269C,gBAAgBv69C,UAAU,GAAGJ,KAAK+99C,MAAM399C,UAAU,IAAI,IAAIA,UAAUC,SAASL,KAAK269C,gBAAgBv69C,UAAU,GAAGJ,KAAK+99C,MAAM399C,UAAU,GAAGJ,KAAK4m+C,2BAA2Bxm+C,UAAU,IAAI,EAAE2H,GAAG,CAACys9C,iBAAiB,CAAC1w9C,cAAa,IAAKyE,GAAG7I,UAAU6/9C,WAAW,SAASng+C,GAAG,OAAOA,EAAEm0Q,SAASvzQ,KAAK459C,YAAY,MAAMx69C,EAAEi59C,YAAYj59C,EAAE+49C,WAAW/49C,EAAEk59C,YAAYl59C,EAAEg59C,UAAUp49C,KAAK459C,YAAY,IAAIz19C,EAAE/E,EAAEi59C,UAAUj59C,EAAEk59C,YAAYl59C,EAAEi59C,YAAYj59C,EAAE+49C,WAAW/49C,EAAEk59C,YAAYl59C,EAAEg59C,UAAUp49C,KAAK859C,iBAAiB,CAAC,IAAI319C,EAAE/E,EAAEi59C,UAAUj59C,EAAEk59C,WAAW,IAAIn09C,EAAE/E,EAAE+49C,UAAU/49C,EAAEg59C,aAAap49C,KAAK2wtC,cAAc3wtC,KAAK+59C,iBAAiB,CAAC,IAAI519C,EAAE/E,EAAEi59C,UAAUj59C,EAAEk59C,WAAW,IAAIn09C,EAAE/E,EAAEi59C,UAAUj59C,EAAEg59C,WAAW,IAAIj09C,EAAE/E,EAAE+49C,UAAU/49C,EAAEg59C,WAAW,IAAIj09C,EAAE/E,EAAE+49C,UAAU/49C,EAAEk59C,WAAW,IAAIn09C,EAAE/E,EAAEi59C,UAAUj59C,EAAEk59C,aAAa,KAAK,EAAE/v9C,GAAG7I,UAAUo69C,iBAAiB,SAAS169C,GAAG,OAAOA,EAAEA,aAAaK,MAAM,IAAIuP,GAAGhP,KAAK4k+C,+BAA+B1k+C,OAAOd,GAAGY,MAAMkE,EAAE9E,EAAEwG,GAAG,IAAIoJ,GAAG5P,EAAEY,WAAM,EAAO,IAAIgP,GAAGhP,KAAK4k+C,+BAA+B1k+C,OAAO,IAAIF,KAAK,EAAEuI,GAAG7I,UAAUs69C,sBAAsB,WAAW,OAAG,IAAI559C,UAAUC,OAAc,IAAIyO,GAAG,KAAK9O,MAAS,IAAII,UAAUC,OAAkC,IAAIyO,GAAxB1O,UAAU,GAAmBJ,WAA5D,CAAkE,EAAEuI,GAAG7I,UAAUon+C,cAAc,SAAS1n+C,GAAG,IAAI,IAAID,EAAE,KAAKE,GAAE,EAAGuB,GAAE,EAAGb,EAAEX,EAAEuC,WAAW5B,EAAE+/9C,WAAW,CAAC,IAAIx/9C,EAAEP,EAAEgB,OAAOD,EAAER,EAAEwm+B,WAAW,OAAO3n+B,IAAIA,EAAE2B,GAAGA,IAAI3B,IAAIE,GAAE,GAAIiB,EAAEy/9C,kCAAkCn/9C,GAAE,EAAG,CAAC,GAAG,OAAOzB,EAAE,OAAOa,KAAKk69C,2BAA2B,GAAG769C,GAAGuB,EAAE,OAAOZ,KAAKk69C,yBAAyB3x9C,GAAGw+9C,gBAAgB3n+C,IAAI,IAAI4B,EAAE5B,EAAEuC,WAAWZ,OAAO,GAAG3B,EAAEwlB,OAAO,EAAE,CAAC,GAAG5jB,aAAasP,GAAG,OAAOtQ,KAAKi69C,mBAAmB1x9C,GAAGy+9C,eAAe5n+C,IAAI,GAAG4B,aAAagO,GAAG,OAAOhP,KAAKg69C,sBAAsBzx9C,GAAG0+9C,kBAAkB7n+C,IAAI,GAAG4B,aAAaoP,GAAG,OAAOpQ,KAAK659C,iBAAiBtx9C,GAAG2+9C,aAAa9n+C,IAAI2L,GAAGqv9C,qBAAqB,oBAAoBp59C,EAAE8l+B,WAAW9+oB,UAAU,CAAC,OAAOhnV,CAAC,EAAEuH,GAAG7I,UAAUkk+C,2BAA2B,SAASxk+C,GAAG,OAAOY,KAAK659C,iBAAiB,OAAOz69C,EAAEY,KAAK4k+C,+BAA+B1k+C,OAAOd,GAAG,KAAK,EAAEmJ,GAAG7I,UAAUk69C,YAAY,WAAW,GAAG,IAAIx59C,UAAUC,OAAO,OAAOL,KAAK459C,YAAY559C,KAAK4k+C,+BAA+B1k+C,OAAO,KAAK,GAAG,IAAIE,UAAUC,OAAO,CAAC,GAAGD,UAAU,aAAa+D,EAAE,CAAC,IAAI/E,EAAEgB,UAAU,GAAG,OAAOJ,KAAK459C,YAAY,OAAOx69C,EAAEY,KAAK4k+C,+BAA+B1k+C,OAAO,CAACd,IAAI,KAAK,CAAC,GAAG8E,EAAE9D,UAAU,GAAGwF,GAAuB,OAAO,IAAIwK,GAAxBhQ,UAAU,GAAmBJ,KAAM,CAAC,EAAEuI,GAAG7I,UAAUkl+C,6BAA6B,WAAW,OAAO5k+C,KAAK4m+C,0BAA0B,EAAEr+9C,GAAG7I,UAAUixtC,cAAc,WAAW,GAAG,IAAIvwtC,UAAUC,OAAO,OAAO,IAAIiQ,GAAG,KAAK,KAAKtQ,MAAM,GAAG,IAAII,UAAUC,OAAO,CAAC,GAAG6D,EAAE9D,UAAU,GAAGwF,GAAG,CAAC,IAAIxG,EAAEgB,UAAU,GAAG,OAAOJ,KAAK2wtC,cAAc3wtC,KAAK+59C,iBAAiB369C,GAAG,CAAC,GAAGgB,UAAU,aAAaX,MAAM,CAAC,IAAIN,EAAEiB,UAAU,GAAG,OAAOJ,KAAK2wtC,cAAc3wtC,KAAK+59C,iBAAiB569C,GAAG,CAAC,GAAGiB,UAAU,aAAamG,GAAG,CAAC,IAAIlH,EAAEe,UAAU,GAAG,OAAOJ,KAAK2wtC,cAActxtC,EAAE,KAAK,CAAC,MAAM,GAAG,IAAIe,UAAUC,OAA0C,OAAO,IAAIiQ,GAAvClQ,UAAU,GAAKA,UAAU,GAAqBJ,KAAM,EAAEuI,GAAG7I,UAAUu+9C,QAAQ,WAAW,OAAOj+9C,KAAK+99C,KAAK,EAAEx19C,GAAG7I,UAAUw69C,yBAAyB,WAAW,OAAG,IAAI959C,UAAUC,OAAc,IAAIwP,GAAG,KAAK7P,MAAS,IAAII,UAAUC,OAAkC,IAAIwP,GAAxBzP,UAAU,GAAmBJ,WAA5D,CAAkE,EAAEuI,GAAG7I,UAAUyn+C,eAAe,SAAS/n+C,GAAG,OAAO,IAAI2H,GAAG/G,MAAMyl+C,KAAKrm+C,EAAE,CAACqm+C,KAAK,WAAW,GAAG,IAAIrl+C,UAAUC,OAAO,CAAC,IAAIjB,EAAEgB,UAAU,GAAG,OAAOJ,KAAK4m+C,2BAA2B1m+C,OAAOd,EAAE,CAAC,GAAG,EAAEmJ,GAAG7I,UAAUgg+C,kBAAkB,WAAW,OAAO1/9C,KAAK269C,eAAe,EAAEpy9C,GAAG7I,UAAUq69C,iBAAiB,WAAW,GAAG,IAAI359C,UAAUC,OAAO,OAAOL,KAAK+59C,iBAAiB/59C,KAAK4k+C,+BAA+B1k+C,OAAO,KAAK,GAAG,IAAIE,UAAUC,OAAO,CAAC,GAAGD,UAAU,aAAaX,MAAM,CAAC,IAAIL,EAAEgB,UAAU,GAAG,OAAOJ,KAAK+59C,iBAAiB,OAAO369C,EAAEY,KAAK4k+C,+BAA+B1k+C,OAAOd,GAAG,KAAK,CAAC,GAAG8E,EAAE9D,UAAU,GAAGwF,GAAuB,OAAO,IAAIW,GAAxBnG,UAAU,GAAmBJ,KAAM,CAAC,EAAEuI,GAAG7I,UAAUu69C,mBAAmB,WAAW,OAAG,IAAI759C,UAAUC,OAAc,IAAIsG,GAAG,KAAK3G,MAAS,IAAII,UAAUC,OAAkC,IAAIsG,GAAxBvG,UAAU,GAAmBJ,WAA5D,CAAkE,EAAEuI,GAAG7I,UAAUm69C,iBAAiB,WAAW,GAAG,IAAIz59C,UAAUC,OAAO,OAAO,IAAIqG,GAAG,KAAK1G,MAAM,GAAG,IAAII,UAAUC,OAAO,CAAC,GAAGD,UAAU,aAAaX,MAA0B,OAAO,IAAIiH,GAAxBtG,UAAU,GAAmBJ,MAAM,GAAGI,UAAU,aAAaX,MAAM,CAAC,IAAIN,EAAEiB,UAAU,GAAG,OAAOJ,KAAK659C,iBAAiB,OAAO169C,EAAEa,KAAK4k+C,+BAA+B1k+C,OAAOf,GAAG,KAAK,CAAC,GAAG+E,EAAE9D,UAAU,GAAGwF,GAAG,CAAC,IAAIvG,EAAEe,UAAU,GAAG,GAAG,OAAOf,EAAE,OAAOW,KAAK659C,iBAAiB,IAAIp69C,MAAM,GAAG29H,KAAK,OAAO,IAAI,IAAIx8H,EAAE,IAAInB,MAAMJ,EAAEulB,QAAQw4G,KAAK,MAAMr9H,EAAE,EAAEA,EAAEV,EAAEulB,OAAO7kB,IAAI,CAAC,IAAIO,EAAEN,KAAK4k+C,+BAA+B1k+C,OAAO,EAAEb,EAAEwmjC,gBAAgBt3iC,GAAGuxH,KAAKzgI,EAAEU,EAAEO,EAAE,EAAE,GAAGM,EAAEb,GAAGC,KAAK459C,YAAYt59C,EAAE,CAAC,OAAON,KAAK659C,iBAAiBj59C,EAAE,CAAC,CAAC,EAAE2H,GAAG7I,UAAUw09C,YAAY,WAAW,MAAM,CAAC/09C,EAAE,EAAEoJ,GAAG7I,UAAUon+B,SAAS,WAAW,OAAOv+9B,EAAE,EAAEA,GAAG6+9C,oBAAoB,SAASho+C,GAAG,IAAID,EAAE,IAAIM,MAAML,EAAEwlB,QAAQw4G,KAAK,MAAM,OAAOh+H,EAAEyuH,QAAQ1uH,EAAE,EAAEoJ,GAAGw+9C,gBAAgB,SAAS3n+C,GAAG,GAAG,OAAOA,EAAE,OAAO,KAAK,IAAID,EAAE,IAAIM,MAAML,EAAEwlB,QAAQw4G,KAAK,MAAM,OAAOh+H,EAAEyuH,QAAQ1uH,EAAE,EAAEoJ,GAAGs+9C,oCAAoC,WAAW,OAAO7/9C,GAAGkkB,UAAU,EAAE3iB,GAAG8+9C,uBAAuB,SAASjo+C,GAAG,IAAID,EAAE,IAAIM,MAAML,EAAEwlB,QAAQw4G,KAAK,MAAM,OAAOh+H,EAAEyuH,QAAQ1uH,EAAE,EAAEoJ,GAAG0+9C,kBAAkB,SAAS7n+C,GAAG,IAAID,EAAE,IAAIM,MAAML,EAAEwlB,QAAQw4G,KAAK,MAAM,OAAOh+H,EAAEyuH,QAAQ1uH,EAAE,EAAEoJ,GAAG++9C,kBAAkB,SAASlo+C,GAAG,IAAID,EAAE,IAAIM,MAAML,EAAEwlB,QAAQw4G,KAAK,MAAM,OAAOh+H,EAAEyuH,QAAQ1uH,EAAE,EAAEoJ,GAAGg/9C,kBAAkB,SAASno+C,GAAG,IAAID,EAAE,IAAIM,MAAML,EAAEwlB,QAAQw4G,KAAK,MAAM,OAAOh+H,EAAEyuH,QAAQ1uH,EAAE,EAAEoJ,GAAG2+9C,aAAa,SAAS9n+C,GAAG,IAAID,EAAE,IAAIM,MAAML,EAAEwlB,QAAQw4G,KAAK,MAAM,OAAOh+H,EAAEyuH,QAAQ1uH,EAAE,EAAEoJ,GAAGy+9C,eAAe,SAAS5n+C,GAAG,IAAID,EAAE,IAAIM,MAAML,EAAEwlB,QAAQw4G,KAAK,MAAM,OAAOh+H,EAAEyuH,QAAQ1uH,EAAE,EAAEoJ,GAAGi/9C,6BAA6B,SAASpo+C,EAAED,GAAG,OAAOA,EAAEug+C,oBAAoBhD,YAAYt99C,GAAGD,EAAEw/9C,aAAa/E,YAAYx69C,EAAE,EAAE2I,GAAGys9C,iBAAiBrx9C,IAAI,WAAW,OAAO,kBAAkB,EAAE7D,OAAOkU,iBAAiBjL,GAAGR,IAAI,IAAID,GAAG,CAAC,QAAQ,aAAa,aAAa,kBAAkB,UAAU,gBAAgBU,GAAG,SAASpJ,GAAGY,KAAKg59C,gBAAgB559C,GAAG,IAAImJ,EAAE,EAAEC,GAAG9I,UAAU2mE,KAAK,SAASjnE,GAAG,IAAID,EAAEE,GAAGF,EAAE,iBAAiBC,EAAEkb,KAAKiS,MAAMntB,GAAGA,GAAGmN,KAAK,IAAIlD,GAAGhK,GAAG,MAAM,IAAImoB,MAAM,yBAAyBroB,EAAEoN,MAAM,OAAO,IAAIzE,GAAGtH,QAAQnB,GAAGgK,GAAGhK,GAAGkB,MAAMP,KAAK,CAACb,EAAE2lC,cAAc,uBAAuBzlC,EAAEgK,GAAGhK,GAAGkB,MAAMP,KAAK,CAACb,EAAE80O,aAAa5qO,GAAGhK,GAAGkB,MAAMP,KAAK,CAACb,GAAG,EAAEqJ,GAAG9I,UAAUqU,MAAM,SAAS3U,GAAG,IAAID,EAAEC,EAAE859C,kBAAkB,IAAIxw9C,GAAGvJ,GAAG,MAAM,IAAIqoB,MAAM,6BAA6B,OAAO9e,GAAGvJ,GAAGoB,MAAMP,KAAK,CAACZ,GAAG,EAAE,IAAIiK,GAAG,CAACm56B,QAAQ,SAASpj7B,GAAG,IAAID,EAAE,CAAC,EAAE,IAAI,IAAIE,KAAKD,EAAED,EAAEE,GAAGD,EAAEC,GAAG,GAAGD,EAAE2lC,SAAS,CAAC,IAAInkC,EAAExB,EAAE2lC,SAASx4B,KAAK,IAAIlD,GAAGzI,GAAG,MAAM,IAAI4mB,MAAM,yBAAyBpoB,EAAEmN,MAAMpN,EAAE4lC,SAAS/kC,KAAKqmE,KAAKjnE,EAAE2lC,SAAS,CAAC,OAAO3lC,EAAEisC,OAAOlsC,EAAEksC,KAAKhiC,GAAGgiC,KAAK9qC,MAAMP,KAAK,CAACZ,EAAEisC,QAAQlsC,CAAC,EAAEsj7B,kBAAkB,SAASrj7B,GAAG,IAAID,EAAE,CAAC,EAAE,GAAGC,EAAEssC,SAAS,CAACvsC,EAAEusC,SAAS,GAAG,IAAI,IAAIrsC,EAAE,EAAEA,EAAED,EAAEssC,SAASrrC,SAAShB,EAAEF,EAAEusC,SAAS7pC,KAAK7B,KAAKqmE,KAAKjnE,EAAEssC,SAASrsC,IAAI,CAAC,OAAOD,EAAEisC,OAAOlsC,EAAEksC,KAAKrrC,KAAKusB,MAAM8e,KAAK9qC,MAAMP,KAAK,CAACZ,EAAEisC,QAAQlsC,CAAC,EAAE2lC,YAAY,SAAS1lC,GAAG,IAAI,IAAID,EAAE,GAAGE,EAAE,EAAEA,EAAED,EAAEiB,SAAShB,EAAE,CAAC,IAAIuB,EAAExB,EAAEC,GAAGF,EAAE0C,KAAK,IAAIsC,EAAEvD,EAAE,GAAGA,EAAE,IAAI,CAAC,OAAOzB,CAAC,EAAEksC,KAAK,SAASjsC,GAAG,OAAOY,KAAKg59C,gBAAgBe,iBAAiB,CAAC,IAAI519C,EAAE/E,EAAE,GAAGA,EAAE,IAAI,IAAI+E,EAAE/E,EAAE,GAAGA,EAAE,IAAI,IAAI+E,EAAE/E,EAAE,GAAGA,EAAE,IAAI,IAAI+E,EAAE/E,EAAE,GAAGA,EAAE,IAAI,IAAI+E,EAAE/E,EAAE,GAAGA,EAAE,KAAK,EAAEoqC,MAAM,SAASpqC,GAAG,IAAID,EAAE,IAAIgF,EAAE/E,EAAE,GAAGA,EAAE,IAAI,OAAOY,KAAKg59C,gBAAgBY,YAAYz69C,EAAE,EAAEsqC,WAAW,SAASrqC,GAAG,IAAI,IAAID,EAAE,GAAGE,EAAE,EAAEA,EAAED,EAAEiB,SAAShB,EAAEF,EAAE0C,KAAKwH,GAAGmgC,MAAMjpC,MAAMP,KAAK,CAACZ,EAAEC,MAAM,OAAOW,KAAKg59C,gBAAgBa,iBAAiB169C,EAAE,EAAEuqC,WAAW,SAAStqC,GAAG,IAAID,EAAEkK,GAAGy7B,YAAYvkC,MAAMP,KAAK,CAACZ,IAAI,OAAOY,KAAKg59C,gBAAgBc,iBAAiB369C,EAAE,EAAEwqC,gBAAgB,SAASvqC,GAAG,IAAI,IAAID,EAAE,GAAGE,EAAE,EAAEA,EAAED,EAAEiB,SAAShB,EAAEF,EAAE0C,KAAKwH,GAAGqgC,WAAWnpC,MAAMP,KAAK,CAACZ,EAAEC,MAAM,OAAOW,KAAKg59C,gBAAgBgB,sBAAsB769C,EAAE,EAAEyqC,QAAQ,SAASxqC,GAAG,IAAI,IAAID,EAAEkK,GAAGy7B,YAAYvkC,MAAMP,KAAK,CAACZ,EAAE,KAAKC,EAAEW,KAAKg59C,gBAAgBe,iBAAiB569C,GAAGyB,EAAE,GAAGb,EAAE,EAAEA,EAAEX,EAAEiB,SAASN,EAAE,CAAC,IAAIO,EAAElB,EAAEW,GAAGe,EAAEuI,GAAGy7B,YAAYvkC,MAAMP,KAAK,CAACM,IAAIU,EAAEhB,KAAKg59C,gBAAgBe,iBAAiBj59C,GAAGF,EAAEiB,KAAKb,EAAE,CAAC,OAAOhB,KAAKg59C,gBAAgBroQ,cAActxtC,EAAEuB,EAAE,EAAEipC,aAAa,SAASzqC,GAAG,IAAI,IAAID,EAAE,GAAGE,EAAE,EAAEA,EAAED,EAAEiB,SAAShB,EAAE,CAAC,IAAIuB,EAAExB,EAAEC,GAAGF,EAAE0C,KAAKwH,GAAGugC,QAAQrpC,MAAMP,KAAK,CAACY,IAAI,CAAC,OAAOZ,KAAKg59C,gBAAgBiB,mBAAmB969C,EAAE,EAAE0j7B,mBAAmB,SAASzj7B,GAAG,IAAI,IAAID,EAAE,GAAGE,EAAE,EAAEA,EAAED,EAAEiB,SAAShB,EAAE,CAAC,IAAIuB,EAAExB,EAAEC,GAAGF,EAAE0C,KAAK7B,KAAKqmE,KAAKzlE,GAAG,CAAC,OAAOZ,KAAKg59C,gBAAgBkB,yBAAyB/69C,EAAE,GAAGuJ,GAAG,CAACqsI,WAAW,SAAS31I,GAAG,MAAM,CAACA,EAAE6E,EAAE7E,EAAE4D,EAAE,EAAEwmC,MAAM,SAASpqC,GAAG,MAAM,CAACmN,KAAK,QAAQu4B,YAAYp8B,GAAGqsI,WAAWx0I,MAAMP,KAAK,CAACZ,EAAEq49C,kBAAkB,EAAEhu7C,WAAW,SAASrqC,GAAG,IAAI,IAAID,EAAE,GAAGE,EAAE,EAAEA,EAAED,EAAEi69C,YAAYh59C,SAAShB,EAAE,CAAC,IAAIuB,EAAExB,EAAEi69C,YAAYh69C,GAAGU,EAAE2I,GAAG8gC,MAAMjpC,MAAMP,KAAK,CAACY,IAAIzB,EAAE0C,KAAK9B,EAAE+kC,YAAY,CAAC,MAAM,CAACv4B,KAAK,aAAau4B,YAAY3lC,EAAE,EAAEuqC,WAAW,SAAStqC,GAAG,IAAI,IAAID,EAAE,GAAGE,EAAED,EAAEo1O,iBAAiB5zO,EAAE,EAAEA,EAAEvB,EAAEgB,SAASO,EAAE,CAAC,IAAIb,EAAEV,EAAEuB,GAAGzB,EAAE0C,KAAK6G,GAAGqsI,WAAWx0I,MAAMP,KAAK,CAACD,IAAI,CAAC,MAAM,CAACwM,KAAK,aAAau4B,YAAY3lC,EAAE,EAAEwqC,gBAAgB,SAASvqC,GAAG,IAAI,IAAID,EAAE,GAAGE,EAAE,EAAEA,EAAED,EAAEi69C,YAAYh59C,SAAShB,EAAE,CAAC,IAAIuB,EAAExB,EAAEi69C,YAAYh69C,GAAGU,EAAE2I,GAAGghC,WAAWnpC,MAAMP,KAAK,CAACY,IAAIzB,EAAE0C,KAAK9B,EAAE+kC,YAAY,CAAC,MAAM,CAACv4B,KAAK,kBAAkBu4B,YAAY3lC,EAAE,EAAEyqC,QAAQ,SAASxqC,GAAG,IAAID,EAAE,GAAGE,EAAEqJ,GAAGghC,WAAWnpC,MAAMP,KAAK,CAACZ,EAAEo69C,SAASr69C,EAAE0C,KAAKxC,EAAEylC,aAAa,IAAI,IAAIlkC,EAAE,EAAEA,EAAExB,EAAEq69C,OAAOp59C,SAASO,EAAE,CAAC,IAAIb,EAAEX,EAAEq69C,OAAO749C,GAAGN,EAAEoI,GAAGghC,WAAWnpC,MAAMP,KAAK,CAACD,IAAIZ,EAAE0C,KAAKvB,EAAEwkC,YAAY,CAAC,MAAM,CAACv4B,KAAK,UAAUu4B,YAAY3lC,EAAE,EAAE0qC,aAAa,SAASzqC,GAAG,IAAI,IAAID,EAAE,GAAGE,EAAE,EAAEA,EAAED,EAAEi69C,YAAYh59C,SAAShB,EAAE,CAAC,IAAIuB,EAAExB,EAAEi69C,YAAYh69C,GAAGU,EAAE2I,GAAGkhC,QAAQrpC,MAAMP,KAAK,CAACY,IAAIzB,EAAE0C,KAAK9B,EAAE+kC,YAAY,CAAC,MAAM,CAACv4B,KAAK,eAAeu4B,YAAY3lC,EAAE,EAAE0j7B,mBAAmB,SAASzj7B,GAAG,IAAI,IAAID,EAAE,GAAGE,EAAE,EAAEA,EAAED,EAAEi69C,YAAYh59C,SAAShB,EAAE,CAAC,IAAIuB,EAAExB,EAAEi69C,YAAYh69C,GAAGU,EAAEa,EAAEs49C,kBAAkB/59C,EAAE0C,KAAK6G,GAAG3I,GAAGQ,MAAMP,KAAK,CAACY,IAAI,CAAC,MAAM,CAAC2L,KAAK,qBAAqB0nO,WAAW90O,EAAE,GAAG0K,GAAG,SAASzK,GAAGY,KAAKg59C,gBAAgB559C,GAAG,IAAImJ,GAAGvI,KAAKyn+C,eAAezn+C,KAAKg59C,gBAAgB0G,oBAAoB1/9C,KAAKosK,OAAO,IAAI5jK,GAAGxI,KAAKg59C,gBAAgB,EAAEnv9C,GAAGnK,UAAU2mE,KAAK,SAASjnE,GAAG,IAAID,EAAEa,KAAKosK,OAAO/lG,KAAKjnE,GAAG,OAAOY,KAAKyn+C,eAAezi8C,YAAY39B,GAAGg/9C,OAAOrm+C,KAAK0n+C,gBAAgBvo+C,GAAGA,CAAC,EAAE0K,GAAGnK,UAAUgo+C,gBAAgB,SAASto+C,GAAG,IAAID,EAAEE,EAAE,GAAGD,EAAE21I,WAAW/0I,KAAKyn+C,eAAe/K,YAAYt99C,EAAE21I,iBAAiB,GAAG31I,EAAEksC,OAAO,IAAInsC,EAAE,EAAEE,EAAED,EAAEksC,OAAOjrC,OAAOlB,EAAEE,EAAEF,IAAIa,KAAKyn+C,eAAe/K,YAAYt99C,EAAEksC,OAAOnsC,SAAS,GAAGC,EAAE60O,WAAW,IAAI90O,EAAE,EAAEE,EAAED,EAAE60O,WAAW5zO,OAAOlB,EAAEE,EAAEF,IAAIa,KAAK0n+C,gBAAgBto+C,EAAE60O,WAAW90O,GAAG,EAAE,IAAI2J,GAAG,WAAW9I,KAAKosK,OAAO,IAAI5jK,GAAGxI,KAAKg59C,gBAAgB,EAAElw9C,GAAGpJ,UAAUqU,MAAM,SAAS3U,GAAG,OAAOY,KAAKosK,OAAOr4J,MAAM3U,EAAE,EAAE,IAAIgJ,GAAG,WAAW,EAAEY,GAAG,CAAC2+9C,GAAG,CAAC7j+C,cAAa,GAAIovhB,KAAK,CAACpvhB,cAAa,GAAIsvhB,MAAM,CAACtvhB,cAAa,IAAKsE,GAAG1I,UAAUw09C,YAAY,WAAW,MAAM,EAAE,EAAE9r9C,GAAG1I,UAAUon+B,SAAS,WAAW,OAAO1+9B,EAAE,EAAEA,GAAGw/9C,SAAS,SAASxo+C,GAAG,OAAOA,IAAIgJ,GAAG8qhB,KAAK9qhB,GAAGgrhB,MAAMh0hB,IAAIgJ,GAAGgrhB,MAAMhrhB,GAAG8qhB,KAAK9zhB,CAAC,EAAE4J,GAAG2+9C,GAAGxk+C,IAAI,WAAW,OAAO,CAAC,EAAE6F,GAAGkqhB,KAAK/vhB,IAAI,WAAW,OAAO,CAAC,EAAE6F,GAAGoqhB,MAAMjwhB,IAAI,WAAW,OAAO,CAAC,EAAE7D,OAAOkU,iBAAiBpL,GAAGY,KAAKrG,EAAEjD,UAAU,IAAI8nB,OAAO9c,KAAK,uBAAuB1H,EAAEtD,UAAU,IAAIsO,IAAImX,IAAI,SAAS/lB,GAAG,OAAOY,KAAKg09C,OAAOny9C,KAAKzC,IAAG,CAAE,EAAE4D,EAAEtD,UAAUyD,IAAI,SAAS/D,GAAG,GAAGA,EAAE,GAAGA,GAAGY,KAAK4kB,OAAO,MAAM,IAAI4C,MAAM,OAAOxnB,KAAKg09C,OAAO509C,EAAE,EAAE4D,EAAEtD,UAAUmC,KAAK,SAASzC,GAAG,OAAOY,KAAKg09C,OAAOny9C,KAAKzC,GAAGA,CAAC,EAAE4D,EAAEtD,UAAUkC,IAAI,SAASxC,GAAG,GAAG,IAAIY,KAAKg09C,OAAO3z9C,OAAO,MAAM,IAAIsC,EAAE,OAAO3C,KAAKg09C,OAAOpy9C,KAAK,EAAEoB,EAAEtD,UAAUwlM,KAAK,WAAW,GAAG,IAAIllM,KAAKg09C,OAAO3z9C,OAAO,MAAM,IAAIsC,EAAE,OAAO3C,KAAKg09C,OAAOh09C,KAAKg09C,OAAO3z9C,OAAO,EAAE,EAAE2C,EAAEtD,UAAUgiiB,MAAM,WAAW,OAAO,IAAI1hiB,KAAKg09C,OAAO3z9C,MAAM,EAAE2C,EAAEtD,UAAU2oE,QAAQ,WAAW,OAAOroE,KAAK0hiB,OAAO,EAAE1+hB,EAAEtD,UAAU6rD,OAAO,SAASnsD,GAAG,OAAOY,KAAKg09C,OAAOxz9C,QAAQpB,EAAE,EAAE4D,EAAEtD,UAAUklB,KAAK,WAAW,OAAO5kB,KAAKg09C,OAAO3z9C,MAAM,EAAE2C,EAAEtD,UAAUmuH,QAAQ,WAAW,IAAI,IAAIzuH,EAAE,GAAGD,EAAE,EAAEE,EAAEW,KAAKg09C,OAAO3z9C,OAAOlB,EAAEE,EAAEF,IAAIC,EAAEyC,KAAK7B,KAAKg09C,OAAO709C,IAAI,OAAOC,CAAC,EAAE,IAAI4I,GAAG,WAAWhI,KAAK6n+C,WAAW,EAAE7n+C,KAAK8n+C,UAAU,KAAK9n+C,KAAK+n+C,OAAO,KAAK/n+C,KAAKgo+C,YAAY,IAAI,EAAEhg+C,GAAGtI,UAAU+39C,cAAc,WAAW,OAAOz39C,KAAK8n+C,SAAS,EAAE9/9C,GAAGtI,UAAUuo+C,iBAAiB,SAAS7o+C,EAAED,GAAG,IAAIE,EAAEW,KAAKko+C,0BAA0B9o+C,EAAED,GAAG,OAAOE,EAAE,IAAIA,EAAEW,KAAKko+C,0BAA0B9o+C,EAAED,EAAE,IAAIE,EAAE,IAAIW,KAAK8n+C,UAAU,KAAK9n+C,KAAKmo+C,4BAA4B/o+C,IAAIC,CAAC,EAAE2I,GAAGtI,UAAU0o+C,0BAA0B,WAAW,IAAIhp+C,EAAEY,KAAK+n+C,OAAOx0V,UAAU/+5B,iBAAiBzpO,GAAGiprB,OAAOh0rB,KAAK6n+C,UAAU,GAAG7n+C,KAAK6n+C,UAAUzo+C,EAAEiB,OAAO,0DAA0D,IAAIlB,EAAEC,EAAEY,KAAK6n+C,UAAU,GAAGxo+C,EAAED,EAAEY,KAAK6n+C,UAAU,GAAGjn+C,EAAE4K,GAAGmy9C,mBAAmB399C,KAAK8n+C,UAAUzo+C,EAAEF,GAAGY,GAAE,GAAGZ,EAAE6D,EAAEhD,KAAK8n+C,UAAU9k+C,GAAG3D,EAAE2D,EAAEhD,KAAK8n+C,UAAU9k+C,GAAGpC,IAAI4K,GAAG6x9C,kBAAsBl+9C,EAAE6D,EAAEhD,KAAK8n+C,UAAU9k+C,GAAG3D,EAAE2D,EAAEhD,KAAK8n+C,UAAU9k+C,GAAGpC,IAAI4K,GAAGo0O,aAAxD7/O,GAAE,GAAwEA,IAAIC,KAAK6n+C,UAAU7n+C,KAAK6n+C,UAAU,EAAE,EAAE7/9C,GAAGtI,UAAUwo+C,0BAA0B,SAAS9o+C,EAAED,GAAG,IAAIE,EAAED,EAAEm0oC,UAAU/+5B,iBAAiB,GAAGr1O,EAAE,GAAGA,EAAE,GAAGE,EAAEgB,OAAO,OAAO,EAAE,GAAGhB,EAAEF,GAAG6D,IAAI3D,EAAEF,EAAE,GAAG6D,EAAE,OAAO,EAAE,IAAIpC,EAAEwH,GAAG8qhB,KAAK,OAAO7zhB,EAAEF,GAAG6D,EAAE3D,EAAEF,EAAE,GAAG6D,IAAIpC,EAAEwH,GAAGgrhB,OAAOxyhB,CAAC,EAAEoH,GAAGtI,UAAU6zoC,QAAQ,WAAW,OAAOvzoC,KAAKgo+C,WAAW,EAAEhg+C,GAAGtI,UAAUyo+C,4BAA4B,SAAS/o+C,GAAG,IAAI,IAAID,EAAEC,EAAEm0oC,UAAU/+5B,iBAAiBn1O,EAAE,EAAEA,EAAEF,EAAEkB,OAAO,EAAEhB,KAAK,OAAOW,KAAK8n+C,WAAW3o+C,EAAEE,GAAG4E,EAAEjE,KAAK8n+C,UAAU7j+C,KAAKjE,KAAK+n+C,OAAO3o+C,EAAEY,KAAK6n+C,UAAUxo+C,EAAEW,KAAK8n+C,UAAU3o+C,EAAEE,GAAG,EAAE2I,GAAGtI,UAAU2o+C,wBAAwB,WAAW,IAAIjp+C,EAAEY,KAAK+n+C,OAAO9gtC,UAAUqhtC,WAAWto+C,KAAK+n+C,OAAO3o+C,EAAEmp+C,mBAAmBvo+C,KAAK+n+C,OAAO99V,cAAcjqoC,KAAK+n+C,OAAO/n+C,KAAK+n+C,OAAOS,SAASxo+C,KAAK6n+C,UAAU7n+C,KAAK+n+C,OAAOx0V,UAAU/+5B,iBAAiBn0O,OAAO,EAAE,EAAE2H,GAAGtI,UAAU+o+C,SAAS,SAASrp+C,GAAG,IAAI,IAAID,EAAEC,EAAEuC,WAAWxC,EAAE2g+C,WAAW,CAAC,IAAIzg+C,EAAEF,EAAE4B,OAAO1B,EAAE4qoC,aAAajqoC,KAAKmo+C,4BAA4B9o+C,EAAE,CAAC0L,GAAGiprB,OAAO,IAAIh0rB,KAAK6n+C,WAAW7n+C,KAAK8n+C,UAAUv11C,OAAOvyI,KAAK+n+C,OAAOtQ,iBAAiB,yCAAyC,IAAIz39C,KAAK6n+C,UAAU7n+C,KAAKqo+C,0BAA0Bro+C,KAAKoo+C,4BAA4Bpo+C,KAAKgo+C,YAAYho+C,KAAK+n+C,OAAO/n+C,KAAKio+C,iBAAiBjo+C,KAAK+n+C,OAAO/n+C,KAAK6n+C,aAAaz/9C,GAAG8qhB,OAAOlzhB,KAAKgo+C,YAAYho+C,KAAK+n+C,OAAOS,SAAS,EAAExg+C,GAAGtI,UAAUw09C,YAAY,WAAW,MAAM,EAAE,EAAEls9C,GAAGtI,UAAUon+B,SAAS,WAAW,OAAO9+9B,EAAE,EAAE,IAAIG,GAAG,SAAS/I,GAAG,SAASD,EAAEE,EAAEuB,GAAGxB,EAAEQ,KAAKI,KAAKb,EAAEup+C,aAAarp+C,EAAEuB,IAAIZ,KAAKmM,GAAGvL,EAAE,IAAIuD,EAAEvD,GAAG,KAAKZ,KAAK0K,KAAK,mBAAmB,CAAC,OAAOtL,IAAID,EAAEK,UAAUJ,GAAGD,EAAEO,UAAUJ,OAAOY,OAAOd,GAAGA,EAAEM,WAAWP,EAAEO,UAAUO,YAAYd,EAAEA,EAAEO,UAAU+39C,cAAc,WAAW,OAAOz39C,KAAKmM,EAAE,EAAEhN,EAAEO,UAAUw09C,YAAY,WAAW,MAAM,EAAE,EAAE/09C,EAAEO,UAAUon+B,SAAS,WAAW,OAAO3n+B,CAAC,EAAEA,EAAEup+C,aAAa,SAAStp+C,EAAED,GAAG,OAAOA,EAAEC,EAAEA,EAAE,MAAMD,EAAE,IAAI,EAAEA,CAAC,CAAtZ,CAAwZiH,GAAGqC,GAAG,WAAWzI,KAAKg09C,OAAO,EAAE,EAAEvr9C,GAAG/I,UAAUip+C,QAAQ,SAASvp+C,GAAGY,KAAKg09C,OAAOny9C,KAAKzC,EAAE,EAAEqJ,GAAG/I,UAAUkp+C,YAAY,WAAW,OAAO5o+C,KAAKg09C,OAAO716C,OAAO,EAAE11C,GAAG/I,UAAU2oE,QAAQ,WAAW,OAAO,IAAIroE,KAAKg09C,OAAO3z9C,MAAM,EAAE,IAAIuI,GAAG,WAAW5I,KAAK6o+C,QAAQ,KAAK7o+C,KAAK8o+C,aAAa,IAAI759C,GAAGjP,KAAK8hxB,OAAO,IAAI7ywB,GAAGjP,KAAK+o+C,gBAAgB,KAAK/o+C,KAAKgp+C,KAAK,KAAKhp+C,KAAK6o+C,QAAQ,IAAI7g+C,EAAE,EAAEY,GAAGlJ,UAAUup+C,kBAAkB,WAAW,IAAI,IAAI7p+C,EAAEY,KAAK8o+C,aAAann+C,WAAWvC,EAAE0g+C,WAAY1g+C,EAAE2B,OAAOmo+C,YAAW,EAAI,EAAEtg+C,GAAGlJ,UAAUyp+C,uBAAuB,WAAW,OAAOnp+C,KAAK+o+C,eAAe,EAAEng+C,GAAGlJ,UAAU0p+C,iBAAiB,SAAShq+C,GAAG,IAAI,IAAID,EAAE,KAAKE,EAAED,EAAEkp+C,WAAW3m+C,WAAWtC,EAAEyg+C,WAAW,CAAC,IAAIl/9C,EAAEvB,EAAE0B,OAAO,GAAGH,EAAEyo+C,aAAazo+C,EAAE4n+C,SAASa,YAAY,CAAClq+C,EAAEyB,EAAE,KAAK,CAAC,CAAC,GAAG,OAAOzB,EAAE,MAAM,IAAIgJ,GAAG,4CAA4C/I,EAAEq49C,iBAAiBr49C,EAAEkp+C,WAAWgB,cAAcnq+C,GAAG,IAAI,IAAIY,EAAEX,EAAEkp+C,WAAW3m+C,WAAW5B,EAAE+/9C,WAAW,CAAC,IAAIx/9C,EAAEP,EAAEgB,OAAOT,EAAE4o+C,YAAW,GAAIlp+C,KAAKup+C,cAAcjp+C,EAAE,CAAC,EAAEsI,GAAGlJ,UAAU8p+C,aAAa,SAASpq+C,GAAGY,KAAKip+C,oBAAoB,IAAI9p+C,EAAEa,KAAK6o+C,QAAQt1V,UAAUp0oC,EAAEsq+C,cAAcrh+C,GAAGgrhB,MAAMh0hB,GAAGY,KAAKup+C,cAAcpq+C,GAAGa,KAAKsp+C,cAAcnq+C,EAAE,EAAEyJ,GAAGlJ,UAAUQ,OAAO,SAASd,GAAGY,KAAK0p+C,aAAatq+C,GAAGY,KAAK6o+C,QAAQJ,SAASzo+C,KAAK8o+C,cAAc9o+C,KAAK+o+C,gBAAgB/o+C,KAAK6o+C,QAAQpR,eAAe,EAAE7u9C,GAAGlJ,UAAUiq+C,gBAAgB,WAAW,IAAI,IAAIvq+C,EAAEY,KAAK8o+C,aAAann+C,WAAWvC,EAAE0g+C,WAAW,CAAC,IAAI3g+C,EAAEC,EAAE2B,OAAO5B,EAAEyq+C,SAASxh+C,GAAGgrhB,QAAQ,GAAGj0hB,EAAEyq+C,SAASxh+C,GAAG8qhB,OAAO,IAAI/zhB,EAAE0q+C,sBAAsB1q+C,EAAE2q+C,aAAY,EAAG,CAAC,EAAElh+C,GAAGlJ,UAAU4p+C,cAAc,SAASlq+C,GAAG,IAAID,EAAE,IAAI0P,GAAGxP,EAAE,IAAIoJ,GAAG7H,EAAExB,EAAE6nR,UAAU,IAAI5nR,EAAEsp+C,QAAQ/n+C,GAAGzB,EAAEgmB,IAAIvkB,GAAGxB,EAAE8p+C,YAAW,IAAK7p+C,EAAEgpE,WAAW,CAAC,IAAItoE,EAAEV,EAAEup+C,cAAczp+C,EAAEgmB,IAAIplB,GAAGC,KAAKop+C,iBAAiBrp+C,GAAG,IAAI,IAAIO,EAAEP,EAAEuo+C,WAAW3m+C,WAAWrB,EAAEw/9C,WAAW,CAAC,IAAIh/9C,EAAER,EAAES,OAAOyn+C,SAAS,IAAI1n+C,EAAEuo+C,YAAY,CAAC,IAAIro+C,EAAEF,EAAEmmR,UAAU9nR,EAAEy9B,SAAS57B,KAAK3B,EAAEsp+C,QAAQ3n+C,GAAG7B,EAAEgmB,IAAInkB,GAAG,CAAC,CAAC,CAAC,EAAE4H,GAAGlJ,UAAUmzQ,UAAU,SAASzzQ,GAAG,IAAID,EAAEC,EAAE,OAAOY,KAAK+o+C,gBAAgB9k+C,EAAE9E,EAAE4p+C,gBAAgB9k+C,GAAG,EAAEjE,KAAK+o+C,gBAAgB9k+C,EAAE9E,EAAE4p+C,gBAAgB9k+C,EAAE,EAAE,CAAC,EAAE2E,GAAGlJ,UAAU4/9C,YAAY,WAAW,GAAG,OAAOt/9C,KAAKgp+C,KAAK,CAAC,IAAI,IAAI5p+C,EAAE,IAAIgF,EAAEjF,EAAEa,KAAK8o+C,aAAann+C,WAAWxC,EAAE2g+C,WAAW,IAAI,IAAIzg+C,EAAEF,EAAE4B,OAAOwyoC,UAAU/+5B,iBAAiB5zO,EAAE,EAAEA,EAAEvB,EAAEgB,OAAO,EAAEO,IAAIxB,EAAEm59C,gBAAgBl59C,EAAEuB,IAAIZ,KAAKgp+C,KAAK5p+C,CAAC,CAAC,OAAOY,KAAKgp+C,IAAI,EAAEpg+C,GAAGlJ,UAAUgq+C,aAAa,SAAStq+C,GAAG,IAAID,EAAE,IAAI6D,EAAE,IAAI7D,EAAEgmB,IAAI/lB,IAAID,EAAEuiiB,SAAS,CAAC,IAAIriiB,EAAEF,EAAEyC,MAAM5B,KAAKmlB,IAAI9lB,EAAEF,EAAE,CAAC,EAAEyJ,GAAGlJ,UAAU6p+C,cAAc,SAASnq+C,GAAG,IAAID,EAAEC,EAAEop+C,SAASrp+C,EAAE4q+C,SAAS3h+C,GAAG8qhB,KAAK9zhB,EAAEwq+C,SAASxh+C,GAAGgrhB,QAAQj0hB,EAAE4q+C,SAAS3h+C,GAAGgrhB,MAAMh0hB,EAAEwq+C,SAASxh+C,GAAG8qhB,MAAM,EAAEtqhB,GAAGlJ,UAAUylB,IAAI,SAAS/lB,EAAED,GAAGC,EAAE8p+C,YAAW,GAAIlp+C,KAAK8hxB,OAAO38vB,IAAI/lB,GAAG,IAAI,IAAIC,EAAED,EAAEkp+C,WAAW3m+C,WAAWtC,EAAEyg+C,WAAW,CAAC,IAAIl/9C,EAAEvB,EAAE0B,OAAOf,KAAK8o+C,aAAa3j9C,IAAIvkB,GAAG,IAAIb,EAAEa,EAAE4n+C,SAASvhtC,UAAUlnR,EAAEsp+C,aAAalq+C,EAAE0C,KAAK9B,EAAE,CAAC,EAAE6I,GAAGlJ,UAAU8t4B,SAAS,WAAW,OAAOxt4B,KAAK8hxB,MAAM,EAAEl5wB,GAAGlJ,UAAUsq+C,iBAAiB,WAAW,OAAOhq+C,KAAK8o+C,YAAY,EAAElg+C,GAAGlJ,UAAUw09C,YAAY,WAAW,MAAM,CAACxv9C,EAAE,EAAEkE,GAAGlJ,UAAUon+B,SAAS,WAAW,OAAOl+9B,EAAE,EAAE,IAAIO,GAAG,SAAS/J,IAAI,GAAGY,KAAK+2B,SAAS,KAAK,IAAI32B,UAAUC,QAAQ,GAAGD,UAAU,aAAaX,MAAM,CAAC,IAAIN,EAAEiB,UAAU,GAAGJ,KAAK0wD,KAAKvxD,EAAEkB,OAAO,MAAM,GAAG8kC,OAAOglH,UAAU/pJ,UAAU,IAAI,CAAC,IAAIf,EAAEe,UAAU,GAAGJ,KAAK0wD,KAAK,GAAG1wD,KAAK+2B,SAAS3uB,GAAGu/9C,IAAIto+C,CAAC,MAAM,GAAGe,UAAU,aAAahB,EAAE,CAAC,IAAIwB,EAAER,UAAU,GAAG,GAAGJ,KAAK0wD,KAAK9vD,EAAEm2B,SAAS12B,QAAQ,OAAOO,EAAE,IAAI,IAAIb,EAAE,EAAEA,EAAEC,KAAK+2B,SAAS12B,OAAON,IAAIC,KAAK+2B,SAASh3B,GAAGa,EAAEm2B,SAASh3B,EAAE,OAAO,GAAG,IAAIK,UAAUC,OAAO,CAAC,IAAIC,EAAEF,UAAU,GAAGU,EAAEV,UAAU,GAAGY,EAAEZ,UAAU,GAAGJ,KAAK0wD,KAAK,GAAG1wD,KAAK+2B,SAAS3uB,GAAGu/9C,IAAIrn+C,EAAEN,KAAK+2B,SAAS3uB,GAAG8qhB,MAAMpyhB,EAAEd,KAAK+2B,SAAS3uB,GAAGgrhB,OAAOpyhB,CAAC,CAAC,EAAEmI,GAAGzJ,UAAUuq+C,gBAAgB,SAAS7q+C,GAAG,IAAI,IAAID,EAAE,EAAEA,EAAEa,KAAK+2B,SAAS12B,OAAOlB,IAAIa,KAAK+2B,SAAS53B,GAAGC,CAAC,EAAE+J,GAAGzJ,UAAU6zQ,OAAO,WAAW,IAAI,IAAIn0Q,EAAE,EAAEA,EAAEY,KAAK+2B,SAAS12B,OAAOjB,IAAI,GAAGY,KAAK+2B,SAAS33B,KAAKmE,EAAEiyQ,KAAK,OAAM,EAAG,OAAM,CAAE,EAAErsQ,GAAGzJ,UAAUwq+C,sBAAsB,SAAS9q+C,GAAG,IAAI,IAAID,EAAE,EAAEA,EAAEa,KAAK+2B,SAAS12B,OAAOlB,IAAIa,KAAK+2B,SAAS53B,KAAKoE,EAAEiyQ,OAAOx1Q,KAAK+2B,SAAS53B,GAAGC,EAAE,EAAE+J,GAAGzJ,UAAUilnC,OAAO,WAAW,OAAO,IAAI3knC,KAAK+2B,SAAS12B,MAAM,EAAE8I,GAAGzJ,UAAUohQ,MAAM,SAAS1hQ,GAAG,GAAGA,EAAE23B,SAAS12B,OAAOL,KAAK+2B,SAAS12B,OAAO,CAAC,IAAIlB,EAAE,IAAIM,MAAM,GAAG29H,KAAK,MAAMj+H,EAAEiJ,GAAGu/9C,IAAI3n+C,KAAK+2B,SAAS3uB,GAAGu/9C,IAAIxo+C,EAAEiJ,GAAG8qhB,MAAM3vhB,EAAEiyQ,KAAKr2Q,EAAEiJ,GAAGgrhB,OAAO7vhB,EAAEiyQ,KAAKx1Q,KAAK+2B,SAAS53B,CAAC,CAAC,IAAI,IAAIE,EAAE,EAAEA,EAAEW,KAAK+2B,SAAS12B,OAAOhB,IAAIW,KAAK+2B,SAAS13B,KAAKkE,EAAEiyQ,MAAMn2Q,EAAED,EAAE23B,SAAS12B,SAASL,KAAK+2B,SAAS13B,GAAGD,EAAE23B,SAAS13B,GAAG,EAAE8J,GAAGzJ,UAAUyq+C,aAAa,WAAW,OAAOnq+C,KAAK+2B,QAAQ,EAAE5tB,GAAGzJ,UAAUm2xC,KAAK,WAAW,GAAG71xC,KAAK+2B,SAAS12B,QAAQ,EAAE,OAAO,KAAK,IAAIjB,EAAEY,KAAK+2B,SAAS3uB,GAAG8qhB,MAAMlzhB,KAAK+2B,SAAS3uB,GAAG8qhB,MAAMlzhB,KAAK+2B,SAAS3uB,GAAGgrhB,OAAOpzhB,KAAK+2B,SAAS3uB,GAAGgrhB,OAAOh0hB,CAAC,EAAE+J,GAAGzJ,UAAU6E,SAAS,WAAW,IAAInF,EAAE,IAAImG,EAAE,OAAOvF,KAAK+2B,SAAS12B,OAAO,GAAGjB,EAAEglF,OAAO7gF,EAAE8x9C,iBAAiBr19C,KAAK+2B,SAAS3uB,GAAG8qhB,QAAQ9zhB,EAAEglF,OAAO7gF,EAAE8x9C,iBAAiBr19C,KAAK+2B,SAAS3uB,GAAGu/9C,MAAM3n+C,KAAK+2B,SAAS12B,OAAO,GAAGjB,EAAEglF,OAAO7gF,EAAE8x9C,iBAAiBr19C,KAAK+2B,SAAS3uB,GAAGgrhB,SAASh0hB,EAAEmF,UAAU,EAAE4E,GAAGzJ,UAAU0q+C,aAAa,SAAShr+C,EAAED,EAAEE,GAAGW,KAAK+2B,SAAS3uB,GAAGu/9C,IAAIvo+C,EAAEY,KAAK+2B,SAAS3uB,GAAG8qhB,MAAM/zhB,EAAEa,KAAK+2B,SAAS3uB,GAAGgrhB,OAAO/zhB,CAAC,EAAE8J,GAAGzJ,UAAUyD,IAAI,SAAS/D,GAAG,OAAOA,EAAEY,KAAK+2B,SAAS12B,OAAOL,KAAK+2B,SAAS33B,GAAGmE,EAAEiyQ,IAAI,EAAErsQ,GAAGzJ,UAAU2q+C,OAAO,WAAW,OAAOrq+C,KAAK+2B,SAAS12B,OAAO,CAAC,EAAE8I,GAAGzJ,UAAU4q+C,UAAU,WAAW,IAAI,IAAIlr+C,EAAE,EAAEA,EAAEY,KAAK+2B,SAAS12B,OAAOjB,IAAI,GAAGY,KAAK+2B,SAAS33B,KAAKmE,EAAEiyQ,KAAK,OAAM,EAAG,OAAM,CAAE,EAAErsQ,GAAGzJ,UAAU6q+C,YAAY,WAAW,GAAG,IAAInq+C,UAAUC,OAAO,CAAC,IAAIjB,EAAEgB,UAAU,GAAGJ,KAAKuq+C,YAAYni+C,GAAGu/9C,GAAGvo+C,EAAE,MAAM,GAAG,IAAIgB,UAAUC,OAAO,CAAC,IAAIlB,EAAEiB,UAAU,GAAGf,EAAEe,UAAU,GAAGJ,KAAK+2B,SAAS53B,GAAGE,CAAC,CAAC,EAAE8J,GAAGzJ,UAAUgxD,KAAK,SAAStxD,GAAGY,KAAK+2B,SAAS,IAAIt3B,MAAML,GAAGg+H,KAAK,MAAMp9H,KAAKiq+C,gBAAgB1m+C,EAAEiyQ,KAAK,EAAErsQ,GAAGzJ,UAAU8q+C,cAAc,SAASpr+C,EAAED,GAAG,OAAOa,KAAK+2B,SAAS53B,KAAKC,EAAE23B,SAAS53B,EAAE,EAAEgK,GAAGzJ,UAAU+q+C,kBAAkB,SAASrr+C,GAAG,IAAI,IAAID,EAAE,EAAEA,EAAEa,KAAK+2B,SAAS12B,OAAOlB,IAAI,GAAGa,KAAK+2B,SAAS53B,KAAKC,EAAE,OAAM,EAAG,OAAM,CAAE,EAAE+J,GAAGzJ,UAAUw09C,YAAY,WAAW,MAAM,EAAE,EAAE/q9C,GAAGzJ,UAAUon+B,SAAS,WAAW,OAAO399B,EAAE,EAAE,IAAIM,GAAG,SAASrK,IAAI,GAAGY,KAAK0q+C,IAAI,IAAIjr+C,MAAM,GAAG29H,KAAK,MAAM,IAAIh9H,UAAUC,QAAQ,GAAG8kC,OAAOglH,UAAU/pJ,UAAU,IAAI,CAAC,IAAIjB,EAAEiB,UAAU,GAAGJ,KAAK0q+C,IAAI,GAAG,IAAIvh+C,GAAGhK,GAAGa,KAAK0q+C,IAAI,GAAG,IAAIvh+C,GAAGhK,EAAE,MAAM,GAAGiB,UAAU,aAAahB,EAAE,CAAC,IAAIC,EAAEe,UAAU,GAAGJ,KAAK0q+C,IAAI,GAAG,IAAIvh+C,GAAG9J,EAAEqr+C,IAAI,IAAI1q+C,KAAK0q+C,IAAI,GAAG,IAAIvh+C,GAAG9J,EAAEqr+C,IAAI,GAAG,OAAO,GAAG,IAAItq+C,UAAUC,OAAO,CAAC,IAAIO,EAAER,UAAU,GAAGL,EAAEK,UAAU,GAAGJ,KAAK0q+C,IAAI,GAAG,IAAIvh+C,GAAG5F,EAAEiyQ,MAAMx1Q,KAAK0q+C,IAAI,GAAG,IAAIvh+C,GAAG5F,EAAEiyQ,MAAMx1Q,KAAK0q+C,IAAI9p+C,GAAG2p+C,YAAYxq+C,EAAE,MAAM,GAAG,IAAIK,UAAUC,OAAO,CAAC,IAAIC,EAAEF,UAAU,GAAGU,EAAEV,UAAU,GAAGY,EAAEZ,UAAU,GAAGJ,KAAK0q+C,IAAI,GAAG,IAAIvh+C,GAAG7I,EAAEQ,EAAEE,GAAGhB,KAAK0q+C,IAAI,GAAG,IAAIvh+C,GAAG7I,EAAEQ,EAAEE,EAAE,MAAM,GAAG,IAAIZ,UAAUC,OAAO,CAAC,IAAIgC,EAAEjC,UAAU,GAAGoC,EAAEpC,UAAU,GAAGS,EAAET,UAAU,GAAG0C,EAAE1C,UAAU,GAAGJ,KAAK0q+C,IAAI,GAAG,IAAIvh+C,GAAG5F,EAAEiyQ,KAAKjyQ,EAAEiyQ,KAAKjyQ,EAAEiyQ,MAAMx1Q,KAAK0q+C,IAAI,GAAG,IAAIvh+C,GAAG5F,EAAEiyQ,KAAKjyQ,EAAEiyQ,KAAKjyQ,EAAEiyQ,MAAMx1Q,KAAK0q+C,IAAIro+C,GAAG+n+C,aAAa5n+C,EAAE3B,EAAEiC,EAAE,CAAC,EAAE2G,GAAG/J,UAAUir+C,iBAAiB,WAAW,IAAIvr+C,EAAE,EAAE,OAAOY,KAAK0q+C,IAAI,GAAGn3tC,UAAUn0Q,IAAIY,KAAK0q+C,IAAI,GAAGn3tC,UAAUn0Q,IAAIA,CAAC,EAAEqK,GAAG/J,UAAUuq+C,gBAAgB,SAAS7q+C,EAAED,GAAGa,KAAK0q+C,IAAItr+C,GAAG6q+C,gBAAgB9q+C,EAAE,EAAEsK,GAAG/J,UAAU6zQ,OAAO,SAASn0Q,GAAG,OAAOY,KAAK0q+C,IAAItr+C,GAAGm0Q,QAAQ,EAAE9pQ,GAAG/J,UAAUwq+C,sBAAsB,WAAW,GAAG,IAAI9p+C,UAAUC,OAAO,CAAC,IAAIjB,EAAEgB,UAAU,GAAGJ,KAAKkq+C,sBAAsB,EAAE9q+C,GAAGY,KAAKkq+C,sBAAsB,EAAE9q+C,EAAE,MAAM,GAAG,IAAIgB,UAAUC,OAAO,CAAC,IAAIlB,EAAEiB,UAAU,GAAGf,EAAEe,UAAU,GAAGJ,KAAK0q+C,IAAIvr+C,GAAG+q+C,sBAAsB7q+C,EAAE,CAAC,EAAEoK,GAAG/J,UAAUilnC,OAAO,SAASvlnC,GAAG,OAAOY,KAAK0q+C,IAAItr+C,GAAGulnC,QAAQ,EAAEl7mC,GAAG/J,UAAUohQ,MAAM,SAAS1hQ,GAAG,IAAI,IAAID,EAAE,EAAEA,EAAE,EAAEA,IAAI,OAAOa,KAAK0q+C,IAAIvr+C,IAAI,OAAOC,EAAEsr+C,IAAIvr+C,GAAGa,KAAK0q+C,IAAIvr+C,GAAG,IAAIgK,GAAG/J,EAAEsr+C,IAAIvr+C,IAAIa,KAAK0q+C,IAAIvr+C,GAAG2hQ,MAAM1hQ,EAAEsr+C,IAAIvr+C,GAAG,EAAEsK,GAAG/J,UAAUm2xC,KAAK,WAAW71xC,KAAK0q+C,IAAI,GAAG70M,OAAO71xC,KAAK0q+C,IAAI,GAAG70M,MAAM,EAAEpsxC,GAAG/J,UAAUy0a,YAAY,WAAW,GAAG,IAAI/za,UAAUC,OAAO,CAAC,IAAIjB,EAAEgB,UAAU,GAAG,OAAOJ,KAAK0q+C,IAAItr+C,GAAG+D,IAAIiF,GAAGu/9C,GAAG,CAAC,GAAG,IAAIvn+C,UAAUC,OAAO,CAAC,IAAIlB,EAAEiB,UAAU,GAAGf,EAAEe,UAAU,GAAG,OAAOJ,KAAK0q+C,IAAIvr+C,GAAGgE,IAAI9D,EAAE,CAAC,EAAEoK,GAAG/J,UAAU6E,SAAS,WAAW,IAAInF,EAAE,IAAImG,EAAE,OAAO,OAAOvF,KAAK0q+C,IAAI,KAAKtr+C,EAAEglF,OAAO,MAAMhlF,EAAEglF,OAAOpkF,KAAK0q+C,IAAI,GAAGnm+C,aAAa,OAAOvE,KAAK0q+C,IAAI,KAAKtr+C,EAAEglF,OAAO,OAAOhlF,EAAEglF,OAAOpkF,KAAK0q+C,IAAI,GAAGnm+C,aAAanF,EAAEmF,UAAU,EAAEkF,GAAG/J,UAAU2q+C,OAAO,WAAW,GAAG,IAAIjq+C,UAAUC,OAAO,OAAOL,KAAK0q+C,IAAI,GAAGL,UAAUrq+C,KAAK0q+C,IAAI,GAAGL,SAAS,GAAG,IAAIjq+C,UAAUC,OAAO,CAAC,IAAIjB,EAAEgB,UAAU,GAAG,OAAOJ,KAAK0q+C,IAAItr+C,GAAGir+C,QAAQ,CAAC,EAAE5g+C,GAAG/J,UAAU4q+C,UAAU,SAASlr+C,GAAG,OAAOY,KAAK0q+C,IAAItr+C,GAAGkr+C,WAAW,EAAE7g+C,GAAG/J,UAAU6q+C,YAAY,WAAW,GAAG,IAAInq+C,UAAUC,OAAO,CAAC,IAAIjB,EAAEgB,UAAU,GAAGjB,EAAEiB,UAAU,GAAGJ,KAAK0q+C,IAAItr+C,GAAGmr+C,YAAYni+C,GAAGu/9C,GAAGxo+C,EAAE,MAAM,GAAG,IAAIiB,UAAUC,OAAO,CAAC,IAAIhB,EAAEe,UAAU,GAAGQ,EAAER,UAAU,GAAGL,EAAEK,UAAU,GAAGJ,KAAK0q+C,IAAIrr+C,GAAGkr+C,YAAY3p+C,EAAEb,EAAE,CAAC,EAAE0J,GAAG/J,UAAU8q+C,cAAc,SAASpr+C,EAAED,GAAG,OAAOa,KAAK0q+C,IAAI,GAAGF,cAAcpr+C,EAAEsr+C,IAAI,GAAGvr+C,IAAIa,KAAK0q+C,IAAI,GAAGF,cAAcpr+C,EAAEsr+C,IAAI,GAAGvr+C,EAAE,EAAEsK,GAAG/J,UAAU+q+C,kBAAkB,SAASrr+C,EAAED,GAAG,OAAOa,KAAK0q+C,IAAItr+C,GAAGqr+C,kBAAkBtr+C,EAAE,EAAEsK,GAAG/J,UAAUkr+C,OAAO,SAASxr+C,GAAGY,KAAK0q+C,IAAItr+C,GAAGir+C,WAAWrq+C,KAAK0q+C,IAAItr+C,GAAG,IAAI+J,GAAGnJ,KAAK0q+C,IAAItr+C,GAAG23B,SAAS,IAAI,EAAEttB,GAAG/J,UAAUw09C,YAAY,WAAW,MAAM,EAAE,EAAEzq9C,GAAG/J,UAAUon+B,SAAS,WAAW,OAAOr99B,EAAE,EAAEA,GAAGoh+C,YAAY,SAASzr+C,GAAG,IAAI,IAAID,EAAE,IAAIsK,GAAGlG,EAAEiyQ,MAAMn2Q,EAAE,EAAEA,EAAE,EAAEA,IAAIF,EAAEor+C,YAAYlr+C,EAAED,EAAE+0a,YAAY90a,IAAI,OAAOF,CAAC,EAAE,IAAI4K,GAAG,WAAW/J,KAAK8q+C,SAAS,KAAK9q+C,KAAK+q+C,gBAAgB,EAAE/q+C,KAAKgr+C,OAAO,IAAI/79C,GAAGjP,KAAKir+C,KAAK,IAAIh89C,GAAGjP,KAAKkr+C,OAAO,IAAIzh+C,GAAGlG,EAAEiyQ,MAAMx1Q,KAAKmr+C,MAAM,KAAKnr+C,KAAKor+C,QAAQ,KAAKpr+C,KAAKw59C,OAAO,KAAKx59C,KAAKy59C,OAAO,IAAIxq9C,GAAGjP,KAAKqr+C,iBAAiB,KAAK,IAAIjs+C,EAAEgB,UAAU,GAAGjB,EAAEiB,UAAU,GAAGJ,KAAKqr+C,iBAAiBls+C,EAAEa,KAAKsr+C,cAAcls+C,GAAGY,KAAKur+C,aAAa,EAAExh+C,GAAGrK,UAAU6r+C,YAAY,WAAW,GAAG,OAAOvr+C,KAAKmr+C,MAAM,OAAO,KAAK,IAAI,IAAI/r+C,EAAE,IAAIK,MAAMO,KAAKir+C,KAAKrm9C,QAAQw4G,KAAK,MAAMj+H,EAAE,EAAEA,EAAEa,KAAKir+C,KAAKrm9C,OAAOzlB,IAAIC,EAAED,GAAGa,KAAKir+C,KAAK9n+C,IAAIhE,GAAGa,KAAKmr+C,MAAMnr+C,KAAKqr+C,iBAAiBtR,iBAAiB369C,GAAGY,KAAKor+C,QAAQ5/9C,GAAGky9C,MAAM199C,KAAKmr+C,MAAM32vC,iBAAiB,EAAEzqO,GAAGrK,UAAU8r+C,WAAW,WAAW,OAAO,IAAIxr+C,KAAKkr+C,OAAOP,kBAAkB,EAAE5g+C,GAAGrK,UAAU4r+C,cAAc,SAASls+C,GAAGY,KAAK8q+C,SAAS1r+C,EAAE,IAAID,EAAEC,EAAEC,GAAE,EAAG,EAAE,CAAC,GAAG,OAAOF,EAAE,MAAM,IAAIgJ,GAAG,2BAA2B,GAAGhJ,EAAEss+C,gBAAgBzr+C,KAAK,MAAM,IAAImI,GAAG,uDAAuDhJ,EAAEs49C,iBAAiBz39C,KAAKgr+C,OAAO7l9C,IAAIhmB,GAAG,IAAIyB,EAAEzB,EAAEyviB,WAAW7jiB,GAAGiprB,OAAOpzrB,EAAEyp+C,UAAUrq+C,KAAK0r+C,WAAW9q+C,GAAGZ,KAAK8krC,UAAU3lrC,EAAEo0oC,UAAUp0oC,EAAE8qoC,YAAY5qoC,GAAGA,GAAE,EAAGW,KAAK2r+C,YAAYxs+C,EAAEa,MAAMb,EAAEa,KAAKm12B,QAAQh22B,EAAE,OAAOA,IAAIa,KAAK8q+C,SAAS,EAAE/g+C,GAAGrK,UAAUks+C,cAAc,WAAW,OAAO5r+C,KAAKmr+C,KAAK,EAAEph+C,GAAGrK,UAAU+39C,cAAc,SAASr49C,GAAG,OAAOY,KAAKir+C,KAAK9n+C,IAAI/D,EAAE,EAAE2K,GAAGrK,UAAUms+C,qBAAqB,WAAW7r+C,KAAK+q+C,eAAe,EAAE,IAAI3r+C,EAAEY,KAAK8q+C,SAAS,EAAE,CAAC,IAAI3r+C,EAAEC,EAAE6nR,UAAUqhtC,WAAWwD,kBAAkB9r+C,MAAMb,EAAEa,KAAK+q+C,iBAAiB/q+C,KAAK+q+C,eAAe5r+C,GAAGC,EAAEY,KAAKm12B,QAAQ/12B,EAAE,OAAOA,IAAIY,KAAK8q+C,UAAU9q+C,KAAK+q+C,gBAAgB,CAAC,EAAEhh+C,GAAGrK,UAAUolrC,UAAU,SAAS1lrC,EAAED,EAAEE,GAAG,IAAIuB,EAAExB,EAAEo1O,iBAAiB,GAAGr1O,EAAE,CAAC,IAAIY,EAAE,EAAEV,IAAIU,EAAE,GAAG,IAAI,IAAIO,EAAEP,EAAEO,EAAEM,EAAEP,OAAOC,IAAIN,KAAKir+C,KAAK9l9C,IAAIvkB,EAAEN,GAAG,KAAK,CAAC,IAAIQ,EAAEF,EAAEP,OAAO,EAAEhB,IAAIyB,EAAEF,EAAEP,OAAO,GAAG,IAAI,IAAIW,EAAEF,EAAEE,GAAG,EAAEA,IAAIhB,KAAKir+C,KAAK9l9C,IAAIvkB,EAAEI,GAAG,CAAC,EAAE+I,GAAGrK,UAAUqs+C,OAAO,WAAW,OAAO/r+C,KAAKor+C,OAAO,EAAErh+C,GAAGrK,UAAUoq+C,YAAY,WAAW,IAAI1q+C,EAAEY,KAAK8q+C,SAAS,GAAG1r+C,EAAEm0oC,UAAUu2V,aAAY,GAAI1q+C,EAAEA,EAAE+12B,gBAAgB/12B,IAAIY,KAAK8q+C,SAAS,EAAE/g+C,GAAGrK,UAAUg+vB,cAAc,SAASt+vB,GAAG,IAAID,EAAEa,KAAK4r+C,gBAAgB,IAAIzs+C,EAAEqg+C,sBAAsB5i8C,SAASx9B,GAAG,OAAM,EAAG,IAAIoM,GAAGgy9C,cAAcp+9C,EAAED,EAAEq1O,kBAAkB,OAAM,EAAG,IAAI,IAAIn1O,EAAEW,KAAKy59C,OAAO939C,WAAWtC,EAAEyg+C,WAAY,GAAGzg+C,EAAE0B,OAAO28vB,cAAct+vB,GAAG,OAAM,EAAG,OAAM,CAAE,EAAE2K,GAAGrK,UAAUss+C,QAAQ,SAAS5s+C,GAAGY,KAAKy59C,OAAOt08C,IAAI/lB,EAAE,EAAE2K,GAAGrK,UAAUus+C,QAAQ,WAAW,OAAO,OAAOjs+C,KAAKw59C,MAAM,EAAEzv9C,GAAGrK,UAAUkviB,SAAS,WAAW,OAAO5uiB,KAAKkr+C,MAAM,EAAEnh+C,GAAGrK,UAAU4o+C,SAAS,WAAW,OAAOto+C,KAAKgr+C,MAAM,EAAEjh+C,GAAGrK,UAAUws+C,iBAAiB,WAAW,OAAOls+C,KAAK+q+C,eAAe,GAAG/q+C,KAAK6r+C,uBAAuB7r+C,KAAK+q+C,cAAc,EAAEhh+C,GAAGrK,UAAUys+C,SAAS,WAAW,OAAOns+C,KAAKw59C,MAAM,EAAEzv9C,GAAGrK,UAAUgs+C,WAAW,WAAW,GAAG,IAAItr+C,UAAUC,OAAO,CAAC,IAAIjB,EAAEgB,UAAU,GAAGJ,KAAK0r+C,WAAWts+C,EAAE,GAAGY,KAAK0r+C,WAAWts+C,EAAE,EAAE,MAAM,GAAG,IAAIgB,UAAUC,OAAO,CAAC,IAAmBhB,EAAEe,UAAU,GAAGQ,EAA5BR,UAAU,GAAsB+za,YAAY90a,EAAE+I,GAAGgrhB,OAAO,GAAGxyhB,IAAI2C,EAAEiyQ,KAAK,OAAO,KAAK,GAAGx1Q,KAAKkr+C,OAAO/2jC,YAAY90a,KAAKkE,EAAEiyQ,KAAK,OAAOx1Q,KAAKkr+C,OAAOX,YAAYlr+C,EAAEuB,GAAG,IAAI,CAAC,EAAEmJ,GAAGrK,UAAU0s+C,SAAS,SAASht+C,GAAGY,KAAKw59C,OAAOp69C,EAAE,OAAOA,GAAGA,EAAE4s+C,QAAQhs+C,KAAK,EAAE+J,GAAGrK,UAAU2s+C,UAAU,SAASjt+C,GAAG,IAAI,IAAID,EAAE,IAAIM,MAAMO,KAAKy59C,OAAO708C,QAAQw4G,KAAK,MAAM/9H,EAAE,EAAEA,EAAEW,KAAKy59C,OAAO708C,OAAOvlB,IAAIF,EAAEE,GAAGW,KAAKy59C,OAAOt29C,IAAI9D,GAAGus+C,gBAAgB,OAAOxs+C,EAAEuxtC,cAAc3wtC,KAAK4r+C,gBAAgBzs+C,EAAE,EAAE4K,GAAGrK,UAAUw09C,YAAY,WAAW,MAAM,EAAE,EAAEnq9C,GAAGrK,UAAUon+B,SAAS,WAAW,OAAO/89B,EAAE,EAAE,IAAIM,GAAG,SAASjL,GAAG,SAASD,IAAI,IAAIA,EAAEiB,UAAU,GAAGf,EAAEe,UAAU,GAAGhB,EAAEQ,KAAKI,KAAKb,EAAEE,EAAE,CAAC,OAAOD,IAAID,EAAEK,UAAUJ,GAAGD,EAAEO,UAAUJ,OAAOY,OAAOd,GAAGA,EAAEM,WAAWP,EAAEO,UAAUO,YAAYd,EAAEA,EAAEO,UAAUis+C,YAAY,SAASvs+C,EAAED,GAAGC,EAAEkt+C,eAAent+C,EAAE,EAAEA,EAAEO,UAAUy12B,QAAQ,SAAS/12B,GAAG,OAAOA,EAAEmt+C,YAAY,EAAEpt+C,EAAEO,UAAUw09C,YAAY,WAAW,MAAM,EAAE,EAAE/09C,EAAEO,UAAUon+B,SAAS,WAAW,OAAO3n+B,CAAC,EAAEA,CAAC,CAApX,CAAsX4K,IAAIP,GAAG,SAASpK,GAAG,SAASD,IAAI,IAAIA,EAAEiB,UAAU,GAAGf,EAAEe,UAAU,GAAGhB,EAAEQ,KAAKI,KAAKb,EAAEE,EAAE,CAAC,OAAOD,IAAID,EAAEK,UAAUJ,GAAGD,EAAEO,UAAUJ,OAAOY,OAAOd,GAAGA,EAAEM,WAAWP,EAAEO,UAAUO,YAAYd,EAAEA,EAAEO,UAAU8s+C,kBAAkB,WAAW,IAAIpt+C,EAAE,IAAI6P,GAAG9P,EAAEa,KAAK8q+C,SAAS,EAAE,CAAC,GAAG,OAAO3r+C,EAAEst+C,iBAAiB,CAAC,IAAIpt+C,EAAE,IAAIgL,GAAGlL,EAAEa,KAAKqr+C,kBAAkBjs+C,EAAE+lB,IAAI9lB,EAAE,CAACF,EAAEA,EAAEg22B,SAAS,OAAOh22B,IAAIa,KAAK8q+C,UAAU,OAAO1r+C,CAAC,EAAED,EAAEO,UAAUis+C,YAAY,SAASvs+C,EAAED,GAAGC,EAAEus+C,YAAYxs+C,EAAE,EAAEA,EAAEO,UAAUgt+C,qCAAqC,WAAW,IAAItt+C,EAAEY,KAAK8q+C,SAAS,GAAG1r+C,EAAE6nR,UAAUqhtC,WAAWqE,yBAAyB3s+C,MAAMZ,EAAEA,EAAE+12B,gBAAgB/12B,IAAIY,KAAK8q+C,SAAS,EAAE3r+C,EAAEO,UAAUy12B,QAAQ,SAAS/12B,GAAG,OAAOA,EAAE+12B,SAAS,EAAEh22B,EAAEO,UAAUw09C,YAAY,WAAW,MAAM,EAAE,EAAE/09C,EAAEO,UAAUon+B,SAAS,WAAW,OAAO3n+B,CAAC,EAAEA,CAAC,CAAtuB,CAAwuB4K,IAAIJ,GAAG,WAAW,GAAG3J,KAAKkr+C,OAAO,KAAKlr+C,KAAKm4zC,aAAY,EAAGn4zC,KAAK4s+C,YAAW,EAAG5s+C,KAAK6s+C,eAAc,EAAG7s+C,KAAK8s+C,YAAW,EAAG,IAAI1s+C,UAAUC,aAAa,GAAG,IAAID,UAAUC,OAAO,CAAC,IAAIjB,EAAEgB,UAAU,GAAGJ,KAAKkr+C,OAAO9r+C,CAAC,CAAC,EAAEuK,GAAGjK,UAAUwp+C,WAAW,SAAS9p+C,GAAGY,KAAK8s+C,WAAW1t+C,CAAC,EAAEuK,GAAGjK,UAAUoq+C,YAAY,SAAS1q+C,GAAGY,KAAKm4zC,YAAY/4zC,CAAC,EAAEuK,GAAGjK,UAAUqt+C,UAAU,WAAW,OAAO/s+C,KAAK4s+C,UAAU,EAAEjj+C,GAAGjK,UAAUst+C,aAAa,WAAW,OAAOht+C,KAAK6s+C,aAAa,EAAElj+C,GAAGjK,UAAUgnZ,SAAS,SAAStnZ,GAAGY,KAAKkr+C,OAAO9r+C,CAAC,EAAEuK,GAAGjK,UAAUkviB,SAAS,WAAW,OAAO5uiB,KAAKkr+C,MAAM,EAAEvh+C,GAAGjK,UAAUut+C,WAAW,SAAS7t+C,GAAGY,KAAK4s+C,WAAWxt+C,EAAEY,KAAK6s+C,eAAc,CAAE,EAAElj+C,GAAGjK,UAAUwt+C,SAAS,SAAS9t+C,GAAG2L,GAAGiprB,OAAOh0rB,KAAKkr+C,OAAOP,oBAAoB,EAAE,uBAAuB3q+C,KAAKmt+C,UAAU/t+C,EAAE,EAAEuK,GAAGjK,UAAU8zzC,WAAW,WAAW,OAAOxzzC,KAAKm4zC,WAAW,EAAExuzC,GAAGjK,UAAU2p+C,UAAU,WAAW,OAAOrp+C,KAAK8s+C,UAAU,EAAEnj+C,GAAGjK,UAAUw09C,YAAY,WAAW,MAAM,EAAE,EAAEvq9C,GAAGjK,UAAUon+B,SAAS,WAAW,OAAOn99B,EAAE,EAAE,IAAIJ,GAAG,SAASnK,GAAG,SAASD,IAAIC,EAAEQ,KAAKI,MAAMA,KAAKot+C,OAAO,KAAKpt+C,KAAKgr+C,OAAO,KAAK,IAAI7r+C,EAAEiB,UAAU,GAAGf,EAAEe,UAAU,GAAGJ,KAAKot+C,OAAOju+C,EAAEa,KAAKgr+C,OAAO3r+C,EAAEW,KAAKkr+C,OAAO,IAAIzh+C,GAAG,EAAElG,EAAEiyQ,KAAK,CAAC,OAAOp2Q,IAAID,EAAEK,UAAUJ,GAAGD,EAAEO,UAAUJ,OAAOY,OAAOd,GAAGA,EAAEM,WAAWP,EAAEO,UAAUO,YAAYd,EAAEA,EAAEO,UAAU2t+C,uBAAuB,WAAW,IAAI,IAAIju+C,EAAEY,KAAKso+C,WAAWA,WAAW3m+C,WAAWvC,EAAE0g+C,WAAY,GAAG1g+C,EAAE2B,OAAOwyoC,UAAUigL,aAAa,OAAM,EAAG,OAAM,CAAE,EAAEr0zC,EAAEO,UAAU8r+C,WAAW,WAAW,OAAO,IAAIxr+C,KAAKkr+C,OAAOP,kBAAkB,EAAExr+C,EAAEO,UAAU+39C,cAAc,WAAW,OAAOz39C,KAAKot+C,MAAM,EAAEju+C,EAAEO,UAAUo3hB,MAAM,SAAS13hB,GAAGA,EAAEw99C,QAAQ,QAAQ589C,KAAKot+C,OAAO,SAASpt+C,KAAKkr+C,OAAO,EAAE/r+C,EAAEO,UAAUyt+C,UAAU,SAAS/t+C,GAAG,EAAED,EAAEO,UAAU4t+C,sBAAsB,SAASlu+C,EAAED,GAAG,IAAIE,EAAEkE,EAAEiyQ,KAAK,GAAGn2Q,EAAEW,KAAKkr+C,OAAO/2jC,YAAYh1a,IAAIC,EAAEm0Q,OAAOp0Q,GAAG,CAAC,IAAIyB,EAAExB,EAAE+0a,YAAYh1a,GAAGE,IAAIkE,EAAE4x9C,WAAW919C,EAAEuB,EAAE,CAAC,OAAOvB,CAAC,EAAEF,EAAEO,UAAUgnZ,SAAS,WAAW,GAAG,IAAItmZ,UAAUC,OAAO,OAAOjB,EAAEM,UAAUgnZ,SAASnmZ,MAAMP,KAAKI,WAAW,IAAIjB,EAAEiB,UAAU,GAAGf,EAAEe,UAAU,GAAG,OAAOJ,KAAKkr+C,OAAOlr+C,KAAKkr+C,OAAO,IAAIzh+C,GAAGtK,EAAEE,GAAGW,KAAKkr+C,OAAOX,YAAYpr+C,EAAEE,EAAE,EAAEF,EAAEO,UAAU4o+C,SAAS,WAAW,OAAOto+C,KAAKgr+C,MAAM,EAAE7r+C,EAAEO,UAAUgs+C,WAAW,WAAW,GAAGtr+C,UAAU,aAAajB,EAAE,CAAC,IAAIC,EAAEgB,UAAU,GAAGJ,KAAK0r+C,WAAWts+C,EAAE8r+C,OAAO,MAAM,GAAG9q+C,UAAU,aAAaqJ,GAAG,IAAI,IAAIpK,EAAEe,UAAU,GAAGQ,EAAE,EAAEA,EAAE,EAAEA,IAAI,CAAC,IAAIb,EAAEC,KAAKst+C,sBAAsBju+C,EAAEuB,GAAGZ,KAAKkr+C,OAAO/2jC,YAAYvza,KAAK2C,EAAEiyQ,MAAMx1Q,KAAKkr+C,OAAOX,YAAY3p+C,EAAEb,EAAE,CAAC,EAAEZ,EAAEO,UAAUylB,IAAI,SAAS/lB,GAAGY,KAAKgr+C,OAAOjwuC,OAAO37P,GAAGA,EAAEmu+C,QAAQvt+C,KAAK,EAAEb,EAAEO,UAAU8t+C,iBAAiB,SAASpu+C,GAAG,GAAG,OAAOY,KAAKkr+C,OAAO,OAAO,KAAK,IAAI/r+C,EAAEoE,EAAEiyQ,KAAK,OAAOx1Q,KAAKkr+C,SAAS/r+C,EAAEa,KAAKkr+C,OAAO/2jC,YAAY/0a,IAAI,IAAIC,EAAE,KAAK,GAAOF,IAAQoE,EAAE4x9C,SAAS919C,EAAEkE,EAAE2x9C,cAAuC719C,EAAEkE,EAAE4x9C,SAASn19C,KAAKkr+C,OAAOX,YAAYnr+C,EAAEC,EAAE,EAAEF,EAAEO,UAAUw09C,YAAY,WAAW,MAAM,EAAE,EAAE/09C,EAAEO,UAAUon+B,SAAS,WAAW,OAAO3n+B,CAAC,EAAEA,CAAC,CAAxwD,CAA0wDwK,IAAIiB,GAAG,WAAW5K,KAAK6v4B,QAAQ,IAAI/s4B,EAAE9C,KAAKyt+C,SAAS,KAAK,IAAIru+C,EAAEgB,UAAU,GAAGJ,KAAKyt+C,SAASru+C,CAAC,EAAEwL,GAAGlL,UAAUgnC,KAAK,SAAStnC,GAAG,OAAOY,KAAK6v4B,QAAQ1s4B,IAAI/D,EAAE,EAAEwL,GAAGlL,UAAUmpR,QAAQ,WAAW,GAAGzoR,UAAU,aAAa+D,EAAE,CAAC,IAAI/E,EAAEgB,UAAU,GAAGjB,EAAEa,KAAK6v4B,QAAQ1s4B,IAAI/D,GAAG,OAAO,OAAOD,IAAIA,EAAEa,KAAKyt+C,SAASr8uC,WAAWhyP,GAAGY,KAAK6v4B,QAAQqxE,IAAI9h9B,EAAED,IAAIA,CAAC,CAAC,GAAGiB,UAAU,aAAamJ,GAAG,CAAC,IAAIlK,EAAEe,UAAU,GAAGQ,EAAEZ,KAAK6v4B,QAAQ1s4B,IAAI9D,EAAEo49C,iBAAiB,OAAO,OAAO729C,GAAGZ,KAAK6v4B,QAAQqxE,IAAI7h9B,EAAEo49C,gBAAgBp49C,GAAGA,IAAIuB,EAAE8q+C,WAAWrs+C,GAAGuB,EAAE,CAAC,EAAEgK,GAAGlL,UAAUo3hB,MAAM,SAAS13hB,GAAG,IAAI,IAAID,EAAEa,KAAK2B,WAAWxC,EAAE2g+C,WAAY3g+C,EAAE4B,OAAO+1hB,MAAM13hB,EAAG,EAAEwL,GAAGlL,UAAUiC,SAAS,WAAW,OAAO3B,KAAK6v4B,QAAQnz3B,SAAS/a,UAAU,EAAEiJ,GAAGlL,UAAUgd,OAAO,WAAW,OAAO1c,KAAK6v4B,QAAQnz3B,QAAQ,EAAE9R,GAAGlL,UAAUgu+C,iBAAiB,SAAStu+C,GAAG,IAAI,IAAID,EAAE,IAAI8P,GAAG5P,EAAEW,KAAK2B,WAAWtC,EAAEyg+C,WAAW,CAAC,IAAIl/9C,EAAEvB,EAAE0B,OAAOH,EAAEguiB,WAAWz6H,YAAY/0a,KAAKmE,EAAE4x9C,UAAUh29C,EAAEgmB,IAAIvkB,EAAE,CAAC,OAAOzB,CAAC,EAAEyL,GAAGlL,UAAUylB,IAAI,SAAS/lB,GAAG,IAAID,EAAEC,EAAEq49C,gBAAgBz39C,KAAK6oR,QAAQ1pR,GAAGgmB,IAAI/lB,EAAE,EAAEwL,GAAGlL,UAAUw09C,YAAY,WAAW,MAAM,EAAE,EAAEtp9C,GAAGlL,UAAUon+B,SAAS,WAAW,OAAOl89B,EAAE,EAAE,IAAIN,GAAG,WAAW,EAAEH,GAAG,CAACwj+C,GAAG,CAAC7p+C,cAAa,GAAI8p+C,GAAG,CAAC9p+C,cAAa,GAAI+p+C,GAAG,CAAC/p+C,cAAa,GAAIgq+C,GAAG,CAAChq+C,cAAa,IAAKwG,GAAG5K,UAAUw09C,YAAY,WAAW,MAAM,EAAE,EAAE5p9C,GAAG5K,UAAUon+B,SAAS,WAAW,OAAOx89B,EAAE,EAAEA,GAAGyj+C,WAAW,SAAS3u+C,GAAG,OAAOA,IAAIkL,GAAGqj+C,IAAIvu+C,IAAIkL,GAAGsj+C,EAAE,EAAEtj+C,GAAG0j+C,WAAW,SAAS5u+C,EAAED,GAAG,OAAGC,IAAID,GAAkB,IAAKC,EAAED,EAAE,GAAG,CAAC,EAAEmL,GAAG2j+C,gBAAgB,SAAS7u+C,EAAED,GAAG,GAAGC,IAAID,EAAE,OAAOC,EAAE,GAAG,IAAKA,EAAED,EAAE,GAAG,EAAE,OAAO,EAAE,IAAIE,EAAED,EAAED,EAAEC,EAAED,EAAE,OAAO,IAAIE,GAAG,KAAKD,EAAED,EAAEC,EAAED,GAAG,EAAEE,CAAC,EAAEiL,GAAG4j+C,cAAc,SAAS9u+C,EAAED,GAAG,OAAOA,IAAImL,GAAGwj+C,GAAG1u+C,IAAIkL,GAAGwj+C,IAAI1u+C,IAAIkL,GAAGuj+C,GAAGzu+C,IAAID,GAAGC,IAAID,EAAE,CAAC,EAAEmL,GAAG8h6C,SAAS,WAAW,GAAG,iBAAiBhs6C,UAAU,IAAI,iBAAiBA,UAAU,GAAG,CAAC,IAAIhB,EAAEgB,UAAU,GAAGjB,EAAEiB,UAAU,GAAG,GAAG,IAAIhB,GAAG,IAAID,EAAE,MAAM,IAAIiE,EAAE,2CAA2ChE,EAAE,KAAKD,EAAE,MAAM,OAAOC,GAAG,EAAED,GAAG,EAAEmL,GAAGqj+C,GAAGrj+C,GAAGwj+C,GAAG3u+C,GAAG,EAAEmL,GAAGsj+C,GAAGtj+C,GAAGuj+C,EAAE,CAAC,GAAGzt+C,UAAU,aAAa+D,GAAG/D,UAAU,aAAa+D,EAAE,CAAC,IAAI9E,EAAEe,UAAU,GAAGQ,EAAER,UAAU,GAAG,GAAGQ,EAAEqD,IAAI5E,EAAE4E,GAAGrD,EAAEoC,IAAI3D,EAAE2D,EAAE,MAAM,IAAII,EAAE,wDAAwD/D,GAAG,OAAOuB,EAAEqD,GAAG5E,EAAE4E,EAAErD,EAAEoC,GAAG3D,EAAE2D,EAAEsH,GAAGqj+C,GAAGrj+C,GAAGwj+C,GAAGlt+C,EAAEoC,GAAG3D,EAAE2D,EAAEsH,GAAGsj+C,GAAGtj+C,GAAGuj+C,EAAE,CAAC,EAAE1j+C,GAAGwj+C,GAAGxq+C,IAAI,WAAW,OAAO,CAAC,EAAEgH,GAAGyj+C,GAAGzq+C,IAAI,WAAW,OAAO,CAAC,EAAEgH,GAAG0j+C,GAAG1q+C,IAAI,WAAW,OAAO,CAAC,EAAEgH,GAAG2j+C,GAAG3q+C,IAAI,WAAW,OAAO,CAAC,EAAE7D,OAAOkU,iBAAiBlJ,GAAGH,IAAI,IAAIL,GAAG,WAAW,GAAG9J,KAAKmu+C,MAAM,KAAKnu+C,KAAKkr+C,OAAO,KAAKlr+C,KAAK4vP,MAAM,KAAK5vP,KAAKou+C,IAAI,KAAKpu+C,KAAKqu+C,IAAI,KAAKru+C,KAAKkvY,IAAI,KAAKlvY,KAAKmvY,IAAI,KAAKnvY,KAAKsu+C,UAAU,KAAK,IAAIlu+C,UAAUC,OAAO,CAAC,IAAIjB,EAAEgB,UAAU,GAAGJ,KAAKmu+C,MAAM/u+C,CAAC,MAAM,GAAG,IAAIgB,UAAUC,OAAO,CAAC,IAAIlB,EAAEiB,UAAU,GAAGf,EAAEe,UAAU,GAAGQ,EAAER,UAAU,GAAGJ,KAAKmu+C,MAAMhv+C,EAAEa,KAAK0wD,KAAKrxD,EAAEuB,GAAGZ,KAAKkr+C,OAAO,IAAI,MAAM,GAAG,IAAI9q+C,UAAUC,OAAO,CAAC,IAAIN,EAAEK,UAAU,GAAGE,EAAEF,UAAU,GAAGU,EAAEV,UAAU,GAAGY,EAAEZ,UAAU,GAAGJ,KAAKmu+C,MAAMpu+C,EAAEC,KAAK0wD,KAAKpwD,EAAEQ,GAAGd,KAAKkr+C,OAAOlq+C,CAAC,CAAC,EAAE8I,GAAGpK,UAAU6u+C,iBAAiB,SAASnv+C,GAAG,OAAOY,KAAKkvY,MAAM9vY,EAAE8vY,KAAKlvY,KAAKmvY,MAAM/vY,EAAE+vY,IAAI,EAAEnvY,KAAKsu+C,UAAUlv+C,EAAEkv+C,UAAU,EAAEtu+C,KAAKsu+C,UAAUlv+C,EAAEkv+C,WAAW,EAAE9i+C,GAAGmy9C,mBAAmBv+9C,EAAEgv+C,IAAIhv+C,EAAEiv+C,IAAIru+C,KAAKqu+C,IAAI,EAAEvk+C,GAAGpK,UAAU8u+C,MAAM,WAAW,OAAOxu+C,KAAKmvY,GAAG,EAAErlY,GAAGpK,UAAU+39C,cAAc,WAAW,OAAOz39C,KAAKou+C,GAAG,EAAEtk+C,GAAGpK,UAAU6t+C,QAAQ,SAASnu+C,GAAGY,KAAK4vP,MAAMxwP,CAAC,EAAE0K,GAAGpK,UAAUo3hB,MAAM,SAAS13hB,GAAG,IAAID,EAAE0D,KAAK0xH,MAAMv0H,KAAKmvY,IAAInvY,KAAKkvY,KAAK7vY,EAAEW,KAAK8m+B,WAAW9+oB,UAAUpnV,EAAEvB,EAAE4+K,YAAY,KAAKl+K,EAAEV,EAAEi4B,UAAU12B,EAAE,GAAGxB,EAAE03hB,MAAM,KAAK/2hB,EAAE,KAAKC,KAAKou+C,IAAI,MAAMpu+C,KAAKqu+C,IAAI,IAAIru+C,KAAKsu+C,UAAU,IAAInv+C,EAAE,MAAMa,KAAKkr+C,OAAO,EAAEph+C,GAAGpK,UAAUmzQ,UAAU,SAASzzQ,GAAG,IAAID,EAAEC,EAAE,OAAOY,KAAKuu+C,iBAAiBpv+C,EAAE,EAAE2K,GAAGpK,UAAU+u+C,sBAAsB,WAAW,OAAOzu+C,KAAKqu+C,GAAG,EAAEvk+C,GAAGpK,UAAUgv+C,MAAM,WAAW,OAAO1u+C,KAAKkvY,GAAG,EAAEplY,GAAGpK,UAAUkviB,SAAS,WAAW,OAAO5uiB,KAAKkr+C,MAAM,EAAEph+C,GAAGpK,UAAU6zoC,QAAQ,WAAW,OAAOvzoC,KAAKmu+C,KAAK,EAAErk+C,GAAGpK,UAAUiv+C,YAAY,WAAW,OAAO3u+C,KAAKsu+C,SAAS,EAAExk+C,GAAGpK,UAAUunR,QAAQ,WAAW,OAAOjnR,KAAK4vP,KAAK,EAAE9lP,GAAGpK,UAAU6E,SAAS,WAAW,IAAInF,EAAEyD,KAAK0xH,MAAMv0H,KAAKmvY,IAAInvY,KAAKkvY,KAAK/vY,EAAEa,KAAK8m+B,WAAW9+oB,UAAU3oV,EAAEF,EAAE8+K,YAAY,KAAK,MAAM,KAAK9+K,EAAEm4B,UAAUj4B,EAAE,GAAG,KAAKW,KAAKou+C,IAAI,MAAMpu+C,KAAKqu+C,IAAI,IAAIru+C,KAAKsu+C,UAAU,IAAIlv+C,EAAE,MAAMY,KAAKkr+C,MAAM,EAAEph+C,GAAGpK,UAAUkv+C,aAAa,SAASxv+C,GAAG,EAAE0K,GAAGpK,UAAUgxD,KAAK,SAAStxD,EAAED,GAAGa,KAAKou+C,IAAIhv+C,EAAEY,KAAKqu+C,IAAIlv+C,EAAEa,KAAKkvY,IAAI/vY,EAAE8E,EAAE7E,EAAE6E,EAAEjE,KAAKmvY,IAAIhwY,EAAE6D,EAAE5D,EAAE4D,EAAEhD,KAAKsu+C,UAAUhk+C,GAAG8h6C,SAASps6C,KAAKkvY,IAAIlvY,KAAKmvY,KAAKpkY,GAAGiprB,SAAS,IAAIh0rB,KAAKkvY,KAAK,IAAIlvY,KAAKmvY,KAAK,yCAAyC,EAAErlY,GAAGpK,UAAUw09C,YAAY,WAAW,MAAM,CAACxv9C,EAAE,EAAEoF,GAAGpK,UAAUon+B,SAAS,WAAW,OAAOh99B,EAAE,EAAE,IAAIM,GAAG,SAAShL,GAAG,SAASD,IAAI,IAAIA,EAAEiB,UAAU,GAAGf,EAAEe,UAAU,GAAG,GAAGhB,EAAEQ,KAAKI,KAAKb,GAAGa,KAAK6u+C,WAAW,KAAK7u+C,KAAKm4zC,aAAY,EAAGn4zC,KAAK8s+C,YAAW,EAAG9s+C,KAAK8u+C,KAAK,KAAK9u+C,KAAK69Y,MAAM,KAAK79Y,KAAK+u+C,SAAS,KAAK/u+C,KAAKgv+C,UAAU,KAAKhv+C,KAAKiv+C,aAAa,KAAKjv+C,KAAKkv+C,OAAO,CAAC,GAAG,KAAK,KAAKlv+C,KAAK6u+C,WAAWxv+C,EAAEA,EAAEW,KAAK0wD,KAAKvxD,EAAEs49C,cAAc,GAAGt49C,EAAEs49C,cAAc,QAAQ,CAAC,IAAI729C,EAAEzB,EAAE8j+C,eAAe,EAAEjj+C,KAAK0wD,KAAKvxD,EAAEs49C,cAAc729C,GAAGzB,EAAEs49C,cAAc729C,EAAE,GAAG,CAACZ,KAAKmv+C,sBAAsB,CAAC,OAAO/v+C,IAAID,EAAEK,UAAUJ,GAAGD,EAAEO,UAAUJ,OAAOY,OAAOd,GAAGA,EAAEM,WAAWP,EAAEO,UAAUO,YAAYd,EAAEA,EAAEO,UAAU6s+C,WAAW,WAAW,OAAOvs+C,KAAK+u+C,QAAQ,EAAE5v+C,EAAEO,UAAUkq+C,SAAS,SAASxq+C,GAAG,OAAOY,KAAKkv+C,OAAO9v+C,EAAE,EAAED,EAAEO,UAAUwp+C,WAAW,SAAS9p+C,GAAGY,KAAK8s+C,WAAW1t+C,CAAC,EAAED,EAAEO,UAAUyv+C,qBAAqB,WAAWnv+C,KAAKkr+C,OAAO,IAAIzh+C,GAAGzJ,KAAKmu+C,MAAMv/7B,YAAY5uiB,KAAK6u+C,YAAY7u+C,KAAKkr+C,OAAOr1M,MAAM,EAAE12xC,EAAEO,UAAUy12B,QAAQ,WAAW,OAAOn12B,KAAK69Y,KAAK,EAAE1+Y,EAAEO,UAAUqq+C,SAAS,SAAS3q+C,EAAED,GAAG,IAAI,MAAMa,KAAKkv+C,OAAO9v+C,IAAIY,KAAKkv+C,OAAO9v+C,KAAKD,EAAE,MAAM,IAAIgJ,GAAG,+BAA+BnI,KAAKy39C,iBAAiBz39C,KAAKkv+C,OAAO9v+C,GAAGD,CAAC,EAAEA,EAAEO,UAAUmq+C,mBAAmB,WAAW,IAAI,IAAIzq+C,GAAE,EAAGD,EAAE,EAAEA,EAAE,EAAEA,IAAIa,KAAKkr+C,OAAOb,OAAOlr+C,IAAIa,KAAKkr+C,OAAO/2jC,YAAYh1a,EAAEiJ,GAAG8qhB,QAAQ3vhB,EAAE2x9C,UAAUl19C,KAAKkr+C,OAAO/2jC,YAAYh1a,EAAEiJ,GAAGgrhB,SAAS7vhB,EAAE2x9C,WAAW919C,GAAE,GAAI,OAAOA,CAAC,EAAED,EAAEO,UAAU0v+C,WAAW,SAAShw+C,GAAGY,KAAK+u+C,SAAS3v+C,CAAC,EAAED,EAAEO,UAAUo3hB,MAAM,SAAS33hB,GAAGC,EAAEM,UAAUo3hB,MAAMl3hB,KAAKI,KAAKb,GAAGA,EAAE23hB,MAAM,IAAI92hB,KAAKkv+C,OAAO9m+C,GAAG8qhB,MAAM,IAAIlzhB,KAAKkv+C,OAAO9m+C,GAAGgrhB,QAAQj0hB,EAAE23hB,MAAM,KAAK92hB,KAAKqv+C,gBAAgB,KAAKrv+C,KAAKm4zC,aAAah5zC,EAAE23hB,MAAM,YAAY,EAAE33hB,EAAEO,UAAU4s+C,eAAe,SAASlt+C,GAAGY,KAAKiv+C,aAAa7v+C,CAAC,EAAED,EAAEO,UAAU4v+C,WAAW,WAAW,IAAIlw+C,EAAEY,KAAKkr+C,OAAOvmX,OAAO,IAAI3knC,KAAKkr+C,OAAOvmX,OAAO,GAAGxlnC,GAAGa,KAAKkr+C,OAAOb,OAAO,IAAIrq+C,KAAKkr+C,OAAOT,kBAAkB,EAAEln+C,EAAE6x9C,UAAU/19C,GAAGW,KAAKkr+C,OAAOb,OAAO,IAAIrq+C,KAAKkr+C,OAAOT,kBAAkB,EAAEln+C,EAAE6x9C,UAAU,OAAOh29C,GAAGD,GAAGE,CAAC,EAAEF,EAAEO,UAAUis+C,YAAY,SAASvs+C,GAAGY,KAAKgv+C,UAAU5v+C,CAAC,EAAED,EAAEO,UAAU+s+C,eAAe,WAAW,OAAOzs+C,KAAKiv+C,YAAY,EAAE9v+C,EAAEO,UAAU2v+C,cAAc,WAAW,IAAIjw+C,EAAEY,KAAKmu+C,MAAMkB,gBAAgB,OAAOrv+C,KAAK6u+C,aAAazv+C,GAAGA,GAAGA,CAAC,EAAED,EAAEO,UAAUoq+C,YAAY,SAAS1q+C,GAAGY,KAAKm4zC,YAAY/4zC,CAAC,EAAED,EAAEO,UAAU8o+C,OAAO,WAAW,OAAOxo+C,KAAK8u+C,IAAI,EAAE3v+C,EAAEO,UAAUuqoC,UAAU,WAAW,OAAOjqoC,KAAK6u+C,UAAU,EAAE1v+C,EAAEO,UAAU6zoC,QAAQ,WAAW,OAAOvzoC,KAAKmu+C,KAAK,EAAEhv+C,EAAEO,UAAU6v+C,UAAU,SAASnw+C,GAAGY,KAAK82hB,MAAM13hB,GAAGA,EAAE03hB,MAAM,KAAK92hB,KAAK6u+C,WAAW7u+C,KAAKmu+C,MAAMr38B,MAAM13hB,GAAGY,KAAKmu+C,MAAMqB,aAAapw+C,EAAE,EAAED,EAAEO,UAAU+v+C,OAAO,SAASrw+C,GAAGY,KAAK8u+C,KAAK1v+C,CAAC,EAAED,EAAEO,UAAUgw+C,eAAe,SAAStw+C,GAAGY,KAAKkp+C,WAAW9p+C,GAAGY,KAAK8u+C,KAAK5F,WAAW9p+C,EAAE,EAAED,EAAEO,UAAU+p+C,cAAc,SAASrq+C,EAAED,GAAG,IAAIE,EAAEW,KAAKuzoC,UAAU87V,gBAAgBrv+C,KAAK6u+C,aAAaxv+C,GAAGA,GAAG,IAAIuB,EAAE,EAAExB,IAAIgJ,GAAG8qhB,OAAOtyhB,GAAG,GAAG,IAAIb,EAAEqI,GAAGw/9C,SAASxo+C,GAAGkB,EAAEnB,EAAEE,EAAEuB,EAAEZ,KAAK+p+C,SAAS3q+C,EAAED,GAAGa,KAAK+p+C,SAAShq+C,EAAEO,EAAE,EAAEnB,EAAEO,UAAU+r+C,YAAY,WAAW,OAAOzr+C,KAAKgv+C,SAAS,EAAE7v+C,EAAEO,UAAU8zzC,WAAW,WAAW,OAAOxzzC,KAAKm4zC,WAAW,EAAEh5zC,EAAEO,UAAUiw+C,QAAQ,SAASvw+C,GAAGY,KAAK69Y,MAAMz+Y,CAAC,EAAED,EAAEO,UAAU2p+C,UAAU,WAAW,OAAOrp+C,KAAK8s+C,UAAU,EAAE3t+C,EAAEO,UAAUw09C,YAAY,WAAW,MAAM,EAAE,EAAE/09C,EAAEO,UAAUon+B,SAAS,WAAW,OAAO3n+B,CAAC,EAAEA,EAAEyw+C,YAAY,SAASxw+C,EAAED,GAAG,OAAOC,IAAImE,EAAE6x9C,UAAUj29C,IAAIoE,EAAE2x9C,SAAS,EAAE919C,IAAImE,EAAE2x9C,UAAU/19C,IAAIoE,EAAE6x9C,UAAU,EAAE,CAAC,EAAEj29C,CAAC,CAA7gG,CAA+gG2K,IAAIJ,GAAG,WAAW,EAAEA,GAAGhK,UAAU0xP,WAAW,SAAShyP,GAAG,OAAO,IAAImK,GAAGnK,EAAE,KAAK,EAAEsK,GAAGhK,UAAUw09C,YAAY,WAAW,MAAM,EAAE,EAAExq9C,GAAGhK,UAAUon+B,SAAS,WAAW,OAAOp99B,EAAE,EAAE,IAAIO,GAAG,WAAW,GAAGjK,KAAKgr+C,OAAO,IAAI/79C,GAAGjP,KAAK8hxB,OAAO,KAAK9hxB,KAAK6v+C,aAAa,IAAI5g+C,GAAG,IAAI7O,UAAUC,OAAOL,KAAK8hxB,OAAO,IAAIl3wB,GAAG,IAAIlB,SAAS,GAAG,IAAItJ,UAAUC,OAAO,CAAC,IAAIjB,EAAEgB,UAAU,GAAGJ,KAAK8hxB,OAAO,IAAIl3wB,GAAGxL,EAAE,CAAC,EAAE6K,GAAGvK,UAAUow+C,WAAW,SAAS1w+C,GAAGA,EAAEw99C,QAAQ,UAAU,IAAI,IAAIz99C,EAAE,EAAEA,EAAEa,KAAKgr+C,OAAOpm9C,OAAOzlB,IAAI,CAACC,EAAEw99C,QAAQ,QAAQz99C,EAAE,KAAK,IAAIE,EAAEW,KAAKgr+C,OAAO7n+C,IAAIhE,GAAGE,EAAEy3hB,MAAM13hB,GAAGC,EAAE0w+C,OAAOj58B,MAAM13hB,EAAE,CAAC,EAAE6K,GAAGvK,UAAUgnC,KAAK,SAAStnC,GAAG,OAAOY,KAAK8hxB,OAAOp7uB,KAAKtnC,EAAE,EAAE6K,GAAGvK,UAAUmpR,QAAQ,WAAW,GAAGzoR,UAAU,aAAamJ,GAAG,CAAC,IAAInK,EAAEgB,UAAU,GAAG,OAAOJ,KAAK8hxB,OAAOj5f,QAAQzpR,EAAE,CAAC,GAAGgB,UAAU,aAAa+D,EAAE,CAAC,IAAIhF,EAAEiB,UAAU,GAAG,OAAOJ,KAAK8hxB,OAAOj5f,QAAQ1pR,EAAE,CAAC,EAAE8K,GAAGvK,UAAUsw+C,gBAAgB,WAAW,OAAOhw+C,KAAK8hxB,OAAOngxB,UAAU,EAAEsI,GAAGvK,UAAUuw+C,wBAAwB,WAAW,IAAI,IAAI7w+C,EAAEY,KAAK8hxB,OAAOngxB,WAAWvC,EAAE0g+C,WAAY1g+C,EAAE2B,OAAOun+C,WAAW2H,yBAA0B,EAAEhm+C,GAAGvK,UAAUww+C,aAAa,SAAS9w+C,GAAGqG,EAAEy6H,IAAI081C,QAAQx99C,EAAE,EAAE6K,GAAGvK,UAAUyw+C,eAAe,SAAS/w+C,EAAED,GAAG,IAAIE,EAAEW,KAAK8hxB,OAAOp7uB,KAAKvnC,GAAG,GAAG,OAAOE,EAAE,OAAM,EAAG,IAAIuB,EAAEvB,EAAEuviB,WAAW,OAAO,OAAOhuiB,GAAGA,EAAEuza,YAAY/0a,KAAKmE,EAAE4x9C,QAAQ,EAAElr9C,GAAGvK,UAAU0w+C,qBAAqB,WAAW,IAAI,IAAIhx+C,EAAEY,KAAK8hxB,OAAOngxB,WAAWvC,EAAE0g+C,WAAY1g+C,EAAE2B,OAAOun+C,WAAW8H,sBAAuB,EAAEnm+C,GAAGvK,UAAU2w+C,qBAAqB,SAASjx+C,EAAED,EAAEE,EAAEuB,GAAG,QAAQxB,EAAEmzI,OAAOlzI,IAAKmM,GAAGmy9C,mBAAmBv+9C,EAAED,EAAEyB,KAAK4K,GAAGsv9C,WAAWxw9C,GAAG8h6C,SAASht6C,EAAED,KAAKmL,GAAG8h6C,SAAS/s6C,EAAEuB,EAAG,EAAEqJ,GAAGvK,UAAU4w+C,YAAY,WAAW,OAAOtw+C,KAAK6v+C,YAAY,EAAE5l+C,GAAGvK,UAAU6w+C,WAAW,SAASnx+C,GAAGqG,EAAEy6H,IAAI42Z,MAAM13hB,EAAE,EAAE6K,GAAGvK,UAAU8w+C,gBAAgB,WAAW,OAAOxw+C,KAAKgr+C,OAAOrp+C,UAAU,EAAEsI,GAAGvK,UAAU+w+C,wBAAwB,SAASrx+C,EAAED,GAAG,IAAI,IAAIE,EAAE,EAAEA,EAAEW,KAAKgr+C,OAAOpm9C,OAAOvlB,IAAI,CAAC,IAAIuB,EAAEZ,KAAKgr+C,OAAO7n+C,IAAI9D,GAAGU,EAAEa,EAAE4zO,iBAAiB,GAAGx0O,KAAKqw+C,qBAAqBjx+C,EAAED,EAAEY,EAAE,GAAGA,EAAE,IAAI,OAAOa,EAAE,GAAGZ,KAAKqw+C,qBAAqBjx+C,EAAED,EAAEY,EAAEA,EAAEM,OAAO,GAAGN,EAAEA,EAAEM,OAAO,IAAI,OAAOO,CAAC,CAAC,OAAO,IAAI,EAAEqJ,GAAGvK,UAAUgx+C,WAAW,SAAStx+C,GAAGY,KAAKgr+C,OAAO7l9C,IAAI/lB,EAAE,EAAE6K,GAAGvK,UAAUix+C,YAAY,SAASvx+C,GAAG,IAAI,IAAID,EAAEa,KAAKsw+C,cAAc3u+C,WAAWxC,EAAE2g+C,WAAW,CAAC,IAAIzg+C,EAAEF,EAAE4B,OAAO,GAAG1B,EAAEk0oC,YAAYn0oC,EAAE,OAAOC,CAAC,CAAC,OAAO,IAAI,EAAE4K,GAAGvK,UAAUkx+C,SAAS,SAASxx+C,GAAG,IAAI,IAAID,EAAEC,EAAEuC,WAAWxC,EAAE2g+C,WAAW,CAAC,IAAIzg+C,EAAEF,EAAE4B,OAAOf,KAAKgr+C,OAAO7l9C,IAAI9lB,GAAG,IAAIuB,EAAE,IAAIwJ,GAAG/K,GAAE,GAAIU,EAAE,IAAIqK,GAAG/K,GAAE,GAAIuB,EAAE6u+C,OAAO1v+C,GAAGA,EAAE0v+C,OAAO7u+C,GAAGZ,KAAKmlB,IAAIvkB,GAAGZ,KAAKmlB,IAAIplB,EAAE,CAAC,EAAEkK,GAAGvK,UAAUylB,IAAI,SAAS/lB,GAAGY,KAAK8hxB,OAAO38vB,IAAI/lB,GAAGY,KAAK6v+C,aAAa1q9C,IAAI/lB,EAAE,EAAE6K,GAAGvK,UAAU8t4B,SAAS,WAAW,OAAOxt4B,KAAK8hxB,OAAOplwB,QAAQ,EAAEzS,GAAGvK,UAAU+o+C,SAAS,SAASrp+C,EAAED,GAAG,IAAI,IAAIE,EAAE,EAAEA,EAAEW,KAAKgr+C,OAAOpm9C,OAAOvlB,IAAI,CAAC,IAAIuB,EAAEZ,KAAKgr+C,OAAO7n+C,IAAI9D,GAAGU,EAAEa,EAAE4zO,iBAAiB,GAAGp1O,EAAEmzI,OAAOxyI,EAAE,KAAKZ,EAAEozI,OAAOxyI,EAAE,IAAI,OAAOa,CAAC,CAAC,OAAO,IAAI,EAAEqJ,GAAGvK,UAAUw09C,YAAY,WAAW,MAAM,EAAE,EAAEjq9C,GAAGvK,UAAUon+B,SAAS,WAAW,OAAO789B,EAAE,EAAEA,GAAGgm+C,wBAAwB,SAAS7w+C,GAAG,IAAI,IAAID,EAAEC,EAAEuC,WAAWxC,EAAE2g+C,WAAY3g+C,EAAE4B,OAAOun+C,WAAW2H,yBAA0B,EAAE,IAAI3n+C,GAAG,WAAWtI,KAAKqr+C,iBAAiB,KAAKrr+C,KAAK6w+C,WAAW,IAAI5h+C,GAAG,IAAI7P,EAAEgB,UAAU,GAAGJ,KAAKqr+C,iBAAiBjs+C,CAAC,EAAEkJ,GAAG5I,UAAUox+C,mBAAmB,SAAS1x+C,EAAED,EAAEE,GAAG,IAAI,IAAIuB,EAAExB,EAAEuC,WAAWf,EAAEk/9C,WAAW,CAAC,IAAI//9C,EAAEa,EAAEG,OAAOhB,EAAEgs+C,SAAS1s+C,EAAE8lB,IAAIplB,GAAGZ,EAAEgmB,IAAIplB,EAAE,CAAC,EAAEuI,GAAG5I,UAAUqx+C,gBAAgB,SAAS3x+C,GAAG,IAAI,IAAID,EAAE,IAAI8P,GAAG5P,EAAED,EAAEuC,WAAWtC,EAAEyg+C,WAAW,CAAC,IAAIl/9C,EAAEvB,EAAE0B,OAAOsr+C,UAAUrs+C,KAAKqr+C,kBAAkBls+C,EAAEgmB,IAAIvkB,EAAE,CAAC,OAAOzB,CAAC,EAAEmJ,GAAG5I,UAAUsx+C,eAAe,SAAS5x+C,EAAED,GAAG,IAAI,IAAIE,EAAEF,EAAEwC,WAAWtC,EAAEyg+C,WAAW,CAAC,IAAIl/9C,EAAEvB,EAAE0B,OAAO,GAAG,OAAOH,EAAEur+C,WAAW,CAAC,IAAIps+C,EAAEC,KAAKix+C,uBAAuBrw+C,EAAExB,GAAG,GAAG,OAAOW,EAAE,MAAM,IAAIoI,GAAG,mCAAmCvH,EAAE629C,cAAc,IAAI729C,EAAEwr+C,SAASrs+C,EAAE,CAAC,CAAC,EAAEuI,GAAG5I,UAAUwx+C,sBAAsB,SAAS9x+C,EAAED,EAAEE,GAAG,IAAI,IAAIuB,EAAE,IAAIqO,GAAGlP,EAAEX,EAAEuC,WAAW5B,EAAE+/9C,WAAW,CAAC,IAAIx/9C,EAAEP,EAAEgB,OAAO,GAAGT,EAAE4r+C,mBAAmB,EAAE,CAAC5r+C,EAAEos+C,uCAAuC,IAAI5r+C,EAAER,EAAEks+C,oBAAoBxr+C,EAAEhB,KAAKmx+C,UAAUrw+C,GAAG,OAAOE,GAAGhB,KAAKox+C,kBAAkBpw+C,EAAEF,GAAG3B,EAAEgmB,IAAInkB,IAAI3B,EAAE409C,OAAOnz9C,EAAE,MAAMF,EAAEukB,IAAI7kB,EAAE,CAAC,OAAOM,CAAC,EAAE0H,GAAG5I,UAAUg+vB,cAAc,SAASt+vB,GAAG,IAAI,IAAID,EAAEa,KAAK6w+C,WAAWlv+C,WAAWxC,EAAE2g+C,WAAY,GAAG3g+C,EAAE4B,OAAO28vB,cAAct+vB,GAAG,OAAM,EAAG,OAAM,CAAE,EAAEkJ,GAAG5I,UAAU2x+C,sBAAsB,SAASjy+C,GAAG,IAAI,IAAID,EAAE,IAAI8P,GAAG5P,EAAED,EAAEuC,WAAWtC,EAAEyg+C,WAAW,CAAC,IAAIl/9C,EAAEvB,EAAE0B,OAAO,GAAGH,EAAE4yzC,cAAc5yzC,EAAEguiB,WAAWy77B,UAAU,OAAOzp+C,EAAE6q+C,cAAc,CAAC,IAAI1r+C,EAAE,IAAIyJ,GAAG5I,EAAEZ,KAAKqr+C,kBAAkBls+C,EAAEgmB,IAAIplB,GAAGA,EAAE+p+C,aAAa,CAAC,CAAC,OAAO3q+C,CAAC,EAAEmJ,GAAG5I,UAAU0x+C,kBAAkB,SAAShy+C,EAAED,GAAG,IAAI,IAAIE,EAAEF,EAAEwC,WAAWtC,EAAEyg+C,WAAW,CAAC,IAAIl/9C,EAAEvB,EAAE0B,OAAOH,EAAEmr+C,UAAUnr+C,EAAEwr+C,SAASht+C,EAAE,CAAC,EAAEkJ,GAAG5I,UAAU4x+C,YAAY,WAAW,OAAOtx+C,KAAK+w+C,gBAAgB/w+C,KAAK6w+C,WAAW,EAAEvo+C,GAAG5I,UAAUux+C,uBAAuB,SAAS7x+C,EAAED,GAAG,IAAI,IAAIE,EAAED,EAAEws+C,gBAAgBhr+C,EAAEvB,EAAEmg+C,sBAAsBz/9C,EAAEV,EAAE4k+C,eAAe,GAAG3j+C,EAAE,KAAKQ,EAAE,KAAKE,EAAE7B,EAAEwC,WAAWX,EAAE8+9C,WAAW,CAAC,IAAIz99C,EAAErB,EAAED,OAAOyB,EAAEH,EAAEup+C,gBAAgB/q+C,EAAE2B,EAAEg99C,sBAAsB,OAAOl/9C,IAAIQ,EAAER,EAAEsr+C,gBAAgBpM,uBAAuB,IAAI189C,GAAE,EAAGjC,EAAE+7B,SAASh8B,IAAI4K,GAAGgy9C,cAAcz99C,EAAEyC,EAAEgyO,oBAAoB1xO,GAAE,GAAIA,IAAI,OAAOxC,GAAGQ,EAAE87B,SAAS/7B,MAAMP,EAAE+B,EAAE,CAAC,OAAO/B,CAAC,EAAEgI,GAAG5I,UAAUyx+C,UAAU,SAAS/x+C,GAAG,IAAI,IAAID,EAAE,EAAEE,EAAE,KAAKuB,EAAExB,EAAEuC,WAAWf,EAAEk/9C,WAAW,CAAC,IAAI//9C,EAAEa,EAAEG,OAAOhB,EAAEgs+C,WAAW1s+C,EAAEU,EAAEZ,IAAI,CAAC,OAAO4L,GAAGiprB,OAAO70rB,GAAG,EAAE,4CAA4CE,CAAC,EAAEiJ,GAAG5I,UAAUylB,IAAI,WAAW,GAAG,IAAI/kB,UAAUC,OAAO,CAAC,IAAIjB,EAAEgB,UAAU,GAAGJ,KAAKmlB,IAAI/lB,EAAEkx+C,cAAclx+C,EAAEou4B,WAAW,MAAM,GAAG,IAAIpt4B,UAAUC,OAAO,CAAC,IAAIlB,EAAEiB,UAAU,GAAkB6J,GAAGgm+C,wBAAhB7v+C,UAAU,IAAiC,IAAIQ,EAAEZ,KAAKqx+C,sBAAsBly+C,GAAGY,EAAE,IAAIkP,GAAG3O,EAAEN,KAAKkx+C,sBAAsBtw+C,EAAEZ,KAAK6w+C,WAAW9w+C,GAAGC,KAAK8w+C,mBAAmBxw+C,EAAEN,KAAK6w+C,WAAW9w+C,GAAGC,KAAKgx+C,eAAehx+C,KAAK6w+C,WAAW9w+C,EAAE,CAAC,EAAEuI,GAAG5I,UAAUw09C,YAAY,WAAW,MAAM,EAAE,EAAE5r9C,GAAG5I,UAAUon+B,SAAS,WAAW,OAAOx+9B,EAAE,EAAE,IAAIS,GAAG,WAAW,EAAEA,GAAGrJ,UAAUk/H,UAAU,WAAW,EAAE71H,GAAGrJ,UAAUw09C,YAAY,WAAW,MAAM,EAAE,EAAEnr9C,GAAGrJ,UAAUon+B,SAAS,WAAW,OAAO/99B,EAAE,EAAE,IAAIiB,GAAG,WAAWhK,KAAKux+C,QAAQ,KAAKvx+C,KAAKwx+C,MAAM,KAAK,IAAIpy+C,EAAEgB,UAAU,GAAGjB,EAAEiB,UAAU,GAAGJ,KAAKux+C,QAAQny+C,EAAEY,KAAKwx+C,MAAMry+C,CAAC,EAAE6K,GAAGtK,UAAUusB,QAAQ,WAAW,OAAOjsB,KAAKwx+C,KAAK,EAAExn+C,GAAGtK,UAAUk/H,UAAU,WAAW,OAAO5+H,KAAKux+C,OAAO,EAAEvn+C,GAAGtK,UAAUw09C,YAAY,WAAW,MAAM,CAACnr9C,GAAG5J,EAAE,EAAE6K,GAAGtK,UAAUon+B,SAAS,WAAW,OAAO989B,EAAE,EAAE,IAAIf,GAAG,WAAWjJ,KAAK0mtC,MAAM,KAAK1mtC,KAAKyx+C,OAAO,KAAKzx+C,KAAK0mtC,MAAM,EAAE1mtC,KAAKyx+C,OAAO,IAAIxi+C,GAAGjP,KAAKyx+C,OAAOts9C,IAAI,KAAK,EAAElc,GAAGvJ,UAAUwuT,KAAK,WAAW,GAAGluT,KAAKqoE,UAAU,OAAO,KAAK,IAAIjpE,EAAEY,KAAKyx+C,OAAOtu+C,IAAI,GAAG,OAAOnD,KAAKyx+C,OAAOxl+C,IAAI,EAAEjM,KAAKyx+C,OAAOtu+C,IAAInD,KAAK0mtC,QAAQ1mtC,KAAK0mtC,OAAO,EAAE1mtC,KAAKquxC,QAAQ,GAAGjvxC,CAAC,EAAE6J,GAAGvJ,UAAUklB,KAAK,WAAW,OAAO5kB,KAAK0mtC,KAAK,EAAEz9sC,GAAGvJ,UAAU2uxC,QAAQ,SAASjvxC,GAAG,IAAI,IAAID,EAAE,KAAKE,EAAEW,KAAKyx+C,OAAOtu+C,IAAI/D,GAAG,EAAEA,GAAGY,KAAK0mtC,SAASvntC,EAAE,EAAEC,KAAKY,KAAK0mtC,OAAO1mtC,KAAKyx+C,OAAOtu+C,IAAIhE,EAAE,GAAG0zQ,UAAU7yQ,KAAKyx+C,OAAOtu+C,IAAIhE,IAAI,GAAGA,IAAIa,KAAKyx+C,OAAOtu+C,IAAIhE,GAAG0zQ,UAAUxzQ,GAAG,GAAGD,EAAED,EAAEa,KAAKyx+C,OAAOxl+C,IAAI7M,EAAEY,KAAKyx+C,OAAOtu+C,IAAIhE,IAAIa,KAAKyx+C,OAAOxl+C,IAAI7M,EAAEC,EAAE,EAAE4J,GAAGvJ,UAAUslB,MAAM,WAAWhlB,KAAK0mtC,MAAM,EAAE1mtC,KAAKyx+C,OAAOzs9C,OAAO,EAAE/b,GAAGvJ,UAAU2oE,QAAQ,WAAW,OAAO,IAAIroE,KAAK0mtC,KAAK,EAAEz9sC,GAAGvJ,UAAUylB,IAAI,SAAS/lB,GAAGY,KAAKyx+C,OAAOts9C,IAAI,MAAMnlB,KAAK0mtC,OAAO,EAAE,IAAIvntC,EAAEa,KAAK0mtC,MAAM,IAAI1mtC,KAAKyx+C,OAAOxl+C,IAAI,EAAE7M,GAAGA,EAAEyzQ,UAAU7yQ,KAAKyx+C,OAAOtu+C,IAAIN,KAAK2K,MAAMrO,EAAE,KAAK,EAAEA,GAAG,EAAEa,KAAKyx+C,OAAOxl+C,IAAI9M,EAAEa,KAAKyx+C,OAAOtu+C,IAAIN,KAAK2K,MAAMrO,EAAE,KAAKa,KAAKyx+C,OAAOxl+C,IAAI9M,EAAEC,EAAE,EAAE6J,GAAGvJ,UAAUw09C,YAAY,WAAW,MAAM,EAAE,EAAEjr9C,GAAGvJ,UAAUon+B,SAAS,WAAW,OAAO799B,EAAE,EAAE,IAAIW,GAAG,WAAW,EAAEA,GAAGlK,UAAUgy+C,UAAU,SAASty+C,GAAG,EAAEwK,GAAGlK,UAAUw09C,YAAY,WAAW,MAAM,EAAE,EAAEtq9C,GAAGlK,UAAUon+B,SAAS,WAAW,OAAOl99B,EAAE,EAAE,IAAIM,GAAG,WAAW,EAAEA,GAAGxK,UAAUq7P,OAAO,SAAS37P,EAAED,GAAG,EAAE+K,GAAGxK,UAAUmzB,OAAO,SAASzzB,EAAED,GAAG,EAAE+K,GAAGxK,UAAUuvF,MAAM,WAAW,EAAE/kF,GAAGxK,UAAUw09C,YAAY,WAAW,MAAM,EAAE,EAAEhq9C,GAAGxK,UAAUon+B,SAAS,WAAW,OAAO589B,EAAE,EAAE,IAAIK,GAAG,WAAW,GAAGvK,KAAK2x+C,iBAAiB,IAAI1i+C,GAAGjP,KAAKux+C,QAAQ,KAAKvx+C,KAAK4x+C,OAAO,KAAK,IAAIxx+C,UAAUC,aAAa,GAAG,IAAID,UAAUC,OAAO,CAAC,IAAIjB,EAAEgB,UAAU,GAAGJ,KAAK4x+C,OAAOxy+C,CAAC,CAAC,EAAEgK,GAAG,CAACor9C,iBAAiB,CAAC1w9C,cAAa,IAAKyG,GAAG7K,UAAUmvD,SAAS,WAAW,OAAO7uD,KAAK4x+C,MAAM,EAAErn+C,GAAG7K,UAAUklB,KAAK,WAAW,OAAO5kB,KAAK2x+C,iBAAiB/s9C,MAAM,EAAEra,GAAG7K,UAAUmy+C,mBAAmB,WAAW,OAAO7x+C,KAAK2x+C,gBAAgB,EAAEpn+C,GAAG7K,UAAUoy+C,kBAAkB,SAAS1y+C,GAAG2L,GAAGiprB,OAAO,OAAOh0rB,KAAKux+C,SAASvx+C,KAAK2x+C,iBAAiBxs9C,IAAI/lB,EAAE,EAAEmL,GAAG7K,UAAU2oE,QAAQ,WAAW,OAAOroE,KAAK2x+C,iBAAiBtp6C,SAAS,EAAE99D,GAAG7K,UAAUk/H,UAAU,WAAW,OAAO,OAAO5+H,KAAKux+C,UAAUvx+C,KAAKux+C,QAAQvx+C,KAAK+x+C,iBAAiB/x+C,KAAKux+C,OAAO,EAAEhn+C,GAAG7K,UAAUw09C,YAAY,WAAW,MAAM,CAACnr9C,GAAG5J,EAAE,EAAEoL,GAAG7K,UAAUon+B,SAAS,WAAW,OAAOv89B,EAAE,EAAEnB,GAAGor9C,iBAAiBrx9C,IAAI,WAAW,OAAO,kBAAkB,EAAE7D,OAAOkU,iBAAiBjJ,GAAGnB,IAAI,IAAI0B,GAAG,WAAW,EAAEA,GAAG2oxB,aAAa,WAAW,MAAM,CAACvpqB,QAAQ,SAAS9qH,EAAED,GAAG,OAAOA,EAAE0zQ,UAAUzzQ,EAAE,EAAE,EAAE0L,GAAG+C,IAAI,SAASzO,GAAG,OAAO0L,GAAGyhC,KAAKntC,GAAGA,EAAE+D,IAAI,EAAE,EAAE2H,GAAGyhC,KAAK,SAASntC,EAAED,GAAG,IAAIE,EAAED,EAAEyuH,UAAU1uH,EAAEuP,GAAG69B,KAAKltC,EAAEF,GAAGuP,GAAG69B,KAAKltC,GAAG,IAAI,IAAIuB,EAAExB,EAAEuC,WAAW5B,EAAE,EAAEO,EAAEjB,EAAEgB,OAAON,EAAEO,EAAEP,IAAIa,EAAEG,OAAOH,EAAEqL,IAAI5M,EAAEU,GAAG,EAAE+K,GAAGkn+C,cAAc,SAAS5y+C,GAAG,IAAID,EAAE,IAAI8P,GAAG,OAAO9P,EAAEgmB,IAAI/lB,GAAGD,CAAC,EAAE,IAAIqR,GAAG,WAAWxQ,KAAKiy+C,YAAY,KAAKjy+C,KAAKky+C,YAAY,KAAKly+C,KAAKwqX,UAAU,KAAKxqX,KAAKmy+C,cAAc,KAAK,IAAI/y+C,EAAEgB,UAAU,GAAGjB,EAAEiB,UAAU,GAAGf,EAAEe,UAAU,GAAGJ,KAAKiy+C,YAAY7y+C,EAAEY,KAAKky+C,YAAY/y+C,EAAEa,KAAKmy+C,cAAc9y+C,EAAEW,KAAKwqX,UAAUxqX,KAAKipJ,UAAU,EAAEz4I,GAAG9Q,UAAU0y+C,cAAc,SAAShz+C,EAAED,GAAG,IAAIE,EAAEmR,GAAG45H,YAAYpqI,KAAKiy+C,aAAarx+C,EAAE4P,GAAG45H,YAAYpqI,KAAKky+C,aAAa,GAAG7y+C,GAAGuB,EAAE,OAAO4P,GAAG6wO,KAAKrhP,KAAKiy+C,aAAazh+C,GAAG6wO,KAAKrhP,KAAKky+C,cAAcly+C,KAAK0jL,OAAO1jL,KAAKiy+C,YAAYjy+C,KAAKky+C,YAAY9y+C,EAAED,GAAG,OAAOa,KAAK0jL,OAAO1jL,KAAKky+C,YAAYly+C,KAAKiy+C,YAAY7y+C,EAAED,GAAG,MAAM,GAAGE,EAAE,OAAOW,KAAK0jL,OAAO1jL,KAAKiy+C,YAAYjy+C,KAAKky+C,YAAY9y+C,EAAED,GAAG,KAAK,GAAGyB,EAAE,OAAOZ,KAAK0jL,OAAO1jL,KAAKky+C,YAAYly+C,KAAKiy+C,YAAY7y+C,EAAED,GAAG,KAAK,MAAM,IAAIiE,EAAE,iCAAiC,EAAEoN,GAAG9Q,UAAU2y+C,SAAS,WAAW,QAAQ7h+C,GAAG45H,YAAYpqI,KAAKiy+C,cAAczh+C,GAAG45H,YAAYpqI,KAAKky+C,aAAa,EAAE1h+C,GAAG9Q,UAAUmzQ,UAAU,SAASzzQ,GAAG,IAAID,EAAEC,EAAE,OAAOY,KAAKwqX,UAAUrrX,EAAEqrX,WAAW,EAAExqX,KAAKwqX,UAAUrrX,EAAEqrX,UAAU,EAAE,CAAC,EAAEh6W,GAAG9Q,UAAUgkL,OAAO,SAAStkL,EAAED,EAAEE,EAAEuB,GAAG,IAAI,IAAIb,EAAEX,EAAEyy+C,qBAAqBlw+C,WAAW5B,EAAE+/9C,WAAW,CAAC,IAAIx/9C,EAAEP,EAAEgB,OAAOD,EAAE,IAAI0P,GAAGlQ,EAAEnB,EAAEa,KAAKmy+C,eAAerx+C,EAAE645B,cAAc/45B,GAAGvB,EAAE8lB,IAAIrkB,EAAE,CAAC,EAAE0P,GAAG9Q,UAAU4y+C,aAAa,SAASlz+C,GAAG,OAAO,IAAIA,EAAEY,KAAKiy+C,YAAYjy+C,KAAKky+C,WAAW,EAAE1h+C,GAAG9Q,UAAUi65B,YAAY,WAAW,OAAO355B,KAAKwqX,SAAS,EAAEh6W,GAAG9Q,UAAUupJ,SAAS,WAAW,OAAOjpJ,KAAKqy+C,WAAWry+C,KAAKmy+C,cAAclp1C,SAASjpJ,KAAKiy+C,YAAYjy+C,KAAKky+C,aAAaly+C,KAAKiy+C,YAAYrz2C,YAAYqqB,SAASjpJ,KAAKky+C,YAAYtz2C,YAAY,EAAEpuH,GAAG9Q,UAAUw09C,YAAY,WAAW,MAAM,CAACxv9C,EAAE,EAAE8L,GAAG9Q,UAAUon+B,SAAS,WAAW,OAAOt29B,EAAE,EAAEA,GAAG6wO,KAAK,SAASjiP,GAAG,OAAOA,EAAEw/H,YAAYks9B,SAAS,EAAEt6kC,GAAG45H,YAAY,SAAShrI,GAAG,OAAOA,aAAamL,EAAE,EAAE,IAAIgG,GAAG,SAASnR,IAAI,GAAGY,KAAKgowB,MAAM,KAAKhowB,KAAKuy+C,QAAO,EAAGvy+C,KAAKwy+C,gBAAgB,IAAIvj+C,GAAGjP,KAAKyy+C,cAAc,KAAK,IAAIry+C,UAAUC,OAAO,CAAC,IAAIlB,EAAEC,EAAEsz+C,sBAAsB1y+C,KAAKyy+C,cAActz+C,CAAC,MAAM,GAAG,IAAIiB,UAAUC,OAAO,CAAC,IAAIhB,EAAEe,UAAU,GAAG2K,GAAGiprB,OAAO30rB,EAAE,EAAE,wCAAwCW,KAAKyy+C,cAAcpz+C,CAAC,CAAC,EAAEqR,GAAG,CAACii+C,aAAa,CAAC7u+C,cAAa,GAAI0w9C,iBAAiB,CAAC1w9C,cAAa,GAAI4u+C,sBAAsB,CAAC5u+C,cAAa,IAAKyM,GAAG7Q,UAAUkz+C,gBAAgB,WAAW,OAAO5y+C,KAAKyy+C,aAAa,EAAEli+C,GAAG7Q,UAAU6wpB,SAAS,SAASnxpB,GAAG,OAAOA,EAAE+D,IAAI/D,EAAEwlB,OAAO,EAAE,EAAErU,GAAG7Q,UAAUklB,KAAK,WAAW,GAAG,IAAIxkB,UAAUC,OAAO,OAAOL,KAAKqoE,UAAU,GAAGroE,KAAKsqD,QAAQtqD,KAAK4kB,KAAK5kB,KAAKgowB,QAAQ,GAAG,IAAI5nwB,UAAUC,OAAO,CAAC,IAAI,IAAIjB,EAAE,EAAED,EAAEiB,UAAU,GAAGyx+C,qBAAqBlw+C,WAAWxC,EAAE2g+C,WAAW,CAAC,IAAIzg+C,EAAEF,EAAE4B,OAAO1B,aAAakL,GAAGnL,GAAGY,KAAK4kB,KAAKvlB,GAAGA,aAAa2K,KAAK5K,GAAG,EAAE,CAAC,OAAOA,CAAC,CAAC,EAAEmR,GAAG7Q,UAAUqtB,WAAW,SAAS3tB,EAAED,GAAG,IAAI,IAAIE,EAAE,KAAKuB,EAAExB,EAAEyy+C,qBAAqBlw+C,WAAWf,EAAEk/9C,WAAW,CAAC,IAAI//9C,EAAEa,EAAEG,OAAOhB,aAAaiK,IAAIjK,EAAEksB,YAAY9sB,IAAIE,EAAEU,EAAE,CAAC,OAAO,OAAOV,IAAID,EAAEyy+C,qBAAqBh/8C,OAAOxzB,IAAG,EAAG,EAAEkR,GAAG7Q,UAAUmz+C,UAAU,WAAW,GAAG,IAAIzy+C,UAAUC,OAAO,CAACL,KAAKsqD,QAAQ,IAAIlrD,EAAEY,KAAK6y+C,UAAU7y+C,KAAKgowB,OAAO,OAAO,OAAO5owB,EAAE,IAAI6P,GAAG7P,CAAC,CAAC,GAAG,IAAIgB,UAAUC,OAAO,CAAC,IAAI,IAAIlB,EAAEiB,UAAU,GAAGf,EAAE,IAAI4P,GAAGrO,EAAEzB,EAAE0y+C,qBAAqBlw+C,WAAWf,EAAEk/9C,WAAW,CAAC,IAAI//9C,EAAEa,EAAEG,OAAO,GAAGhB,aAAawK,GAAG,CAAC,IAAIjK,EAAEN,KAAK6y+C,UAAU9y+C,GAAG,OAAOO,GAAGjB,EAAE8lB,IAAI7kB,EAAE,MAAMP,aAAaiK,GAAG3K,EAAE8lB,IAAIplB,EAAEksB,WAAWlhB,GAAGqv9C,sBAAsB,CAAC,OAAO/69C,EAAEulB,QAAQ,EAAE,KAAKvlB,CAAC,CAAC,EAAEkR,GAAG7Q,UAAUq7P,OAAO,SAAS37P,EAAED,GAAG4L,GAAGiprB,QAAQh0rB,KAAKuy+C,OAAO,0EAA0Evy+C,KAAKwy+C,gBAAgBrt9C,IAAI,IAAInb,GAAG5K,EAAED,GAAG,EAAEoR,GAAG7Q,UAAUoz+C,kBAAkB,WAAW,GAAG,IAAI1y+C,UAAUC,OAAO,CAAC,IAAIjB,EAAEgB,UAAU,GAAGjB,EAAE,IAAI8P,GAAG,OAAOjP,KAAK8y+C,kBAAkB1z+C,EAAEY,KAAKgowB,MAAM7owB,GAAGA,CAAC,CAAC,GAAG,IAAIiB,UAAUC,OAAO,CAAC,IAAIhB,EAAEe,UAAU,GAAGQ,EAAER,UAAU,GAAGL,EAAEK,UAAU,GAAG,GAAG2K,GAAGiprB,OAAO30rB,GAAG,GAAGuB,EAAEiuD,aAAaxvD,EAAE,OAAOU,EAAEolB,IAAIvkB,GAAG,KAAK,IAAI,IAAIN,EAAEM,EAAEix+C,qBAAqBlw+C,WAAWrB,EAAEw/9C,WAAW,CAAC,IAAIh/9C,EAAER,EAAES,OAAOD,aAAayJ,GAAGvK,KAAK8y+C,kBAAkBzz+C,EAAEyB,EAAEf,IAAIgL,GAAGiprB,OAAOlzrB,aAAakJ,KAAK,IAAI3K,GAAGU,EAAEolB,IAAIrkB,GAAG,CAAC,OAAO,IAAI,CAAC,EAAEyP,GAAG7Q,UAAUuvF,MAAM,WAAW,GAAG,IAAI7uF,UAAUC,OAAO,CAAC,IAAIjB,EAAEgB,UAAU,GAAGJ,KAAKsqD,QAAQ,IAAInrD,EAAE,IAAI8P,GAAG,OAAOjP,KAAKqoE,WAAaroE,KAAK+y+C,kBAAkB5soC,WAAWnmW,KAAKgowB,MAAMppoB,YAAYx/H,IAAIY,KAAKivF,MAAM7vF,EAAEY,KAAKgowB,MAAM7owB,GAAxFA,CAA6F,CAAC,GAAG,IAAIiB,UAAUC,OAAO,CAAC,IAAIhB,EAAEe,UAAU,GAAGQ,EAAER,UAAU,GAAG,GAAGJ,KAAKsqD,QAAQtqD,KAAKqoE,UAAU,OAAO,KAAKroE,KAAK+y+C,kBAAkB5soC,WAAWnmW,KAAKgowB,MAAMppoB,YAAYv/H,IAAIW,KAAKivF,MAAM5vF,EAAEW,KAAKgowB,MAAMpnwB,EAAE,MAAM,GAAG,IAAIR,UAAUC,OAAO,GAAG6D,EAAE9D,UAAU,GAAGwJ,KAAKxJ,UAAU,aAAad,QAAQc,UAAU,aAAamK,GAAG,IAAI,IAAIxK,EAAEK,UAAU,GAAkBU,EAAEV,UAAU,GAAGY,EAA5BZ,UAAU,GAAsByx+C,qBAAqBxv+C,EAAE,EAAEA,EAAErB,EAAE4jB,OAAOviB,IAAI,CAAC,IAAIG,EAAExB,EAAEmC,IAAId,GAAGrC,KAAK+y+C,kBAAkB5soC,WAAW3jW,EAAEo8H,YAAY7+H,KAAKyC,aAAa+H,GAAGvK,KAAKivF,MAAMlvF,EAAEyC,EAAE1B,GAAG0B,aAAawH,GAAGlJ,EAAE4w+C,UAAUlv+C,EAAEypB,WAAWlhB,GAAGqv9C,uBAAuB,MAAM,GAAGl29C,EAAE9D,UAAU,GAAG4N,KAAK5N,UAAU,aAAad,QAAQc,UAAU,aAAamK,GAAG,IAAI,IAAI1J,EAAET,UAAU,GAAkBwC,EAAExC,UAAU,GAAGsC,EAA5BtC,UAAU,GAAsByx+C,qBAAqB1v+C,EAAE,EAAEA,EAAEO,EAAEkiB,OAAOziB,IAAI,CAAC,IAAIQ,EAAED,EAAES,IAAIhB,GAAGnC,KAAK+y+C,kBAAkB5soC,WAAWxjW,EAAEi8H,YAAY/9H,KAAK8B,aAAa4H,GAAGvK,KAAKivF,MAAMpuF,EAAE8B,EAAEC,GAAGD,aAAaqH,GAAGpH,EAAEuiB,IAAIxiB,EAAEspB,WAAWlhB,GAAGqv9C,uBAAuB,CAAC,EAAE7p9C,GAAG7Q,UAAU4qD,MAAM,WAAW,GAAGtqD,KAAKuy+C,OAAO,OAAO,KAAKvy+C,KAAKgowB,MAAMhowB,KAAKwy+C,gBAAgBnq6C,UAAUroE,KAAKoxP,WAAW,GAAGpxP,KAAKgz+C,mBAAmBhz+C,KAAKwy+C,iBAAiB,GAAGxy+C,KAAKwy+C,gBAAgB,KAAKxy+C,KAAKuy+C,QAAO,CAAE,EAAEhi+C,GAAG7Q,UAAUuz+C,QAAQ,WAAW,OAAOjz+C,KAAKsqD,QAAQtqD,KAAKgowB,KAAK,EAAEz3vB,GAAG7Q,UAAUmzB,OAAO,WAAW,GAAG,IAAIzyB,UAAUC,OAAO,CAAC,IAAIjB,EAAEgB,UAAU,GAAGjB,EAAEiB,UAAU,GAAG,OAAOJ,KAAKsqD,UAAUtqD,KAAK+y+C,kBAAkB5soC,WAAWnmW,KAAKgowB,MAAMppoB,YAAYx/H,IAAIY,KAAK6yB,OAAOzzB,EAAEY,KAAKgowB,MAAM7owB,EAAE,CAAC,GAAG,IAAIiB,UAAUC,OAAO,CAAC,IAAIhB,EAAEe,UAAU,GAAGQ,EAAER,UAAU,GAAGL,EAAEK,UAAU,GAAGE,EAAEN,KAAK+sB,WAAWnsB,EAAEb,GAAG,GAAGO,EAAE,OAAM,EAAG,IAAI,IAAIQ,EAAE,KAAKE,EAAEJ,EAAEix+C,qBAAqBlw+C,WAAWX,EAAE8+9C,WAAW,CAAC,IAAIz99C,EAAErB,EAAED,OAAO,GAAGf,KAAK+y+C,kBAAkB5soC,WAAW9jW,EAAEu8H,YAAYv/H,IAAKgD,aAAakI,KAAKjK,EAAEN,KAAK6yB,OAAOxzB,EAAEgD,EAAEtC,IAAK,CAACe,EAAEuB,EAAE,KAAK,CAAC,CAAC,OAAO,OAAOvB,GAAGA,EAAE+w+C,qBAAqBxp6C,WAAWznE,EAAEix+C,qBAAqBh/8C,OAAO/xB,GAAGR,CAAC,CAAC,EAAEiQ,GAAG7Q,UAAUsz+C,mBAAmB,SAAS5z+C,EAAED,GAAG4L,GAAGiprB,QAAQ50rB,EAAEipE,WAAW,IAAIhpE,EAAEW,KAAKkz+C,uBAAuB9z+C,EAAED,EAAE,GAAG,OAAO,IAAIE,EAAEulB,OAAOvlB,EAAE8D,IAAI,GAAGnD,KAAKgz+C,mBAAmB3z+C,EAAEF,EAAE,EAAE,EAAEoR,GAAG7Q,UAAU63I,MAAM,WAAW,GAAG,IAAIn3I,UAAUC,OAAO,OAAOL,KAAKqoE,UAAU,GAAGroE,KAAKsqD,QAAQtqD,KAAKu3I,MAAMv3I,KAAKgowB,QAAQ,GAAG,IAAI5nwB,UAAUC,OAAO,CAAC,IAAI,IAAIjB,EAAE,EAAED,EAAEiB,UAAU,GAAGyx+C,qBAAqBlw+C,WAAWxC,EAAE2g+C,WAAW,CAAC,IAAIzg+C,EAAEF,EAAE4B,OAAO,GAAG1B,aAAakL,GAAG,CAAC,IAAI3J,EAAEZ,KAAKu3I,MAAMl4I,GAAGuB,EAAExB,IAAIA,EAAEwB,EAAE,CAAC,CAAC,OAAOxB,EAAE,CAAC,CAAC,EAAEmR,GAAG7Q,UAAUwz+C,uBAAuB,SAAS9z+C,EAAED,GAAG4L,GAAGiprB,QAAQ50rB,EAAEipE,WAAW,IAAIhpE,EAAE,IAAI4P,GAAG5P,EAAE8lB,IAAInlB,KAAKoxP,WAAWjyP,IAAI,IAAIyB,EAAE,IAAIqO,GAAG7P,GAAG0L,GAAGyhC,KAAK3rC,EAAEZ,KAAK2vrB,iBAAiB,IAAI,IAAI5vrB,EAAEa,EAAEe,WAAW5B,EAAE+/9C,WAAW,CAAC,IAAIx/9C,EAAEP,EAAEgB,OAAOf,KAAKuwpB,SAASlxpB,GAAGwy+C,qBAAqBjt9C,SAAS5kB,KAAK4y+C,mBAAmBvz+C,EAAE8lB,IAAInlB,KAAKoxP,WAAWjyP,IAAIa,KAAKuwpB,SAASlxpB,GAAGyy+C,kBAAkBxx+C,EAAE,CAAC,OAAOjB,CAAC,EAAEkR,GAAG7Q,UAAU2oE,QAAQ,WAAW,OAAOroE,KAAKuy+C,OAAOvy+C,KAAKgowB,MAAM3/rB,UAAUroE,KAAKwy+C,gBAAgBnq6C,SAAS,EAAE93D,GAAG7Q,UAAUw09C,YAAY,WAAW,MAAM,CAAC/09C,EAAE,EAAEoR,GAAG7Q,UAAUon+B,SAAS,WAAW,OAAOv29B,EAAE,EAAEA,GAAG4i+C,eAAe,SAAS/z+C,EAAED,GAAG,OAAOC,EAAED,EAAE,EAAEC,EAAED,GAAG,EAAE,CAAC,EAAEuR,GAAGii+C,aAAaxv+C,IAAI,WAAW,OAAOwN,EAAE,EAAED,GAAG8j9C,iBAAiBrx9C,IAAI,WAAW,OAAO,kBAAkB,EAAEuN,GAAGgi+C,sBAAsBvv+C,IAAI,WAAW,OAAO,EAAE,EAAE7D,OAAOkU,iBAAiBjD,GAAGG,IAAI,IAAIC,GAAG,WAAW,EAAEC,GAAG,WAAW,EAAEA,GAAGlR,UAAUupJ,SAAS,SAAS7pJ,EAAED,GAAG,EAAEyR,GAAGlR,UAAUw09C,YAAY,WAAW,MAAM,EAAE,EAAEtj9C,GAAGlR,UAAUon+B,SAAS,WAAW,OAAOl29B,EAAE,EAAE,IAAIG,GAAG,SAAS3R,GAAG,SAASC,EAAEF,GAAGA,EAAEA,GAAGE,EAAEqz+C,sBAAsBtz+C,EAAEQ,KAAKI,KAAKb,EAAE,CAACC,IAAIC,EAAEG,UAAUJ,IAAIC,EAAEK,UAAUJ,OAAOY,OAAOd,GAAGA,EAAEM,YAAYO,YAAYZ,EAAE,IAAIuB,EAAE,CAACwy+C,YAAY,CAACtv+C,cAAa,GAAI0w9C,iBAAiB,CAAC1w9C,cAAa,GAAIuv+C,YAAY,CAACvv+C,cAAa,GAAIwv+C,YAAY,CAACxv+C,cAAa,GAAIyv+C,aAAa,CAACzv+C,cAAa,GAAI4u+C,sBAAsB,CAAC5u+C,cAAa,IAAK,OAAOzE,EAAEK,UAAU8z+C,yCAAyC,SAASp0+C,EAAED,GAAG4L,GAAGiprB,OAAO50rB,EAAEiB,OAAO,GAAG,IAAI,IAAIhB,EAAE,IAAI4P,GAAGrO,EAAE,EAAEA,EAAExB,EAAEiB,OAAOO,IAAIvB,EAAE409C,OAAOj09C,KAAKyz+C,wCAAwCr0+C,EAAEwB,GAAGzB,IAAI,OAAOE,CAAC,EAAEA,EAAEK,UAAU0xP,WAAW,SAAShyP,GAAG,OAAO,IAAI0R,GAAG1R,EAAE,EAAEC,EAAEK,UAAUklB,KAAK,WAAW,OAAO,IAAIxkB,UAAUC,OAAOjB,EAAEM,UAAUklB,KAAKhlB,KAAKI,MAAMZ,EAAEM,UAAUklB,KAAKrkB,MAAMP,KAAKI,UAAU,EAAEf,EAAEK,UAAUq7P,OAAO,WAAW,GAAG,IAAI36P,UAAUC,OAAO,OAAOjB,EAAEM,UAAUq7P,OAAOx6P,MAAMP,KAAKI,WAAW,IAAIjB,EAAEiB,UAAU,GAAGf,EAAEe,UAAU,GAAG,GAAGjB,EAAEo0Q,SAAS,OAAO,KAAKn0Q,EAAEM,UAAUq7P,OAAOn7P,KAAKI,KAAKb,EAAEE,EAAE,EAAEA,EAAEK,UAAUqz+C,gBAAgB,WAAW,OAAO1z+C,EAAEk0+C,YAAY,EAAEl0+C,EAAEK,UAAUg0+C,eAAe,SAASt0+C,EAAED,GAAG,IAAI,IAAIE,EAAEwD,KAAK2K,MAAM3K,KAAKuK,KAAKhO,EAAEwlB,OAAOzlB,IAAIyB,EAAE,IAAInB,MAAMN,GAAGi+H,KAAK,MAAMr9H,EAAEX,EAAEuC,WAAWrB,EAAE,EAAEA,EAAEnB,EAAEmB,IAAI,CAACM,EAAEN,GAAG,IAAI2O,GAAG,IAAI,IAAInO,EAAE,EAAEf,EAAE+/9C,WAAWh/9C,EAAEzB,GAAG,CAAC,IAAI2B,EAAEjB,EAAEgB,OAAOH,EAAEN,GAAG6kB,IAAInkB,GAAGF,GAAG,CAAC,CAAC,OAAOF,CAAC,EAAEvB,EAAEK,UAAUuvF,MAAM,WAAW,GAAG,IAAI7uF,UAAUC,OAAO,CAAC,IAAIlB,EAAEiB,UAAU,GAAG,OAAOhB,EAAEM,UAAUuvF,MAAMrvF,KAAKI,KAAKb,EAAE,CAAC,GAAG,IAAIiB,UAAUC,OAAO,CAAC,IAAIhB,EAAEe,UAAU,GAAGQ,EAAER,UAAU,GAAGhB,EAAEM,UAAUuvF,MAAMrvF,KAAKI,KAAKX,EAAEuB,EAAE,MAAM,GAAG,IAAIR,UAAUC,OAAO,GAAG6D,EAAE9D,UAAU,GAAGwJ,KAAKxJ,UAAU,aAAad,QAAQc,UAAU,aAAamK,GAAG,CAAC,IAAIxK,EAAEK,UAAU,GAAGE,EAAEF,UAAU,GAAGU,EAAEV,UAAU,GAAGhB,EAAEM,UAAUuvF,MAAMrvF,KAAKI,KAAKD,EAAEO,EAAEQ,EAAE,MAAM,GAAGoD,EAAE9D,UAAU,GAAG4N,KAAK5N,UAAU,aAAad,QAAQc,UAAU,aAAamK,GAAG,CAAC,IAAIvJ,EAAEZ,UAAU,GAAGiC,EAAEjC,UAAU,GAAGoC,EAAEpC,UAAU,GAAGhB,EAAEM,UAAUuvF,MAAMrvF,KAAKI,KAAKgB,EAAEqB,EAAEG,EAAE,CAAC,EAAEnD,EAAEK,UAAUiwrB,cAAc,WAAW,OAAOtwrB,EAAEi0+C,WAAW,EAAEj0+C,EAAEK,UAAU+z+C,wCAAwC,SAASt0+C,EAAEE,GAAG,OAAOD,EAAEM,UAAUwz+C,uBAAuBtz+C,KAAKI,KAAKb,EAAEE,EAAE,EAAEA,EAAEK,UAAUmzB,OAAO,WAAW,GAAG,IAAIzyB,UAAUC,OAAO,CAAC,IAAIlB,EAAEiB,UAAU,GAAGf,EAAEe,UAAU,GAAG,OAAOhB,EAAEM,UAAUmzB,OAAOjzB,KAAKI,KAAKb,EAAEE,EAAE,CAAC,OAAOD,EAAEM,UAAUmzB,OAAOtyB,MAAMP,KAAKI,UAAU,EAAEf,EAAEK,UAAU63I,MAAM,WAAW,OAAO,IAAIn3I,UAAUC,OAAOjB,EAAEM,UAAU63I,MAAM33I,KAAKI,MAAMZ,EAAEM,UAAU63I,MAAMh3I,MAAMP,KAAKI,UAAU,EAAEf,EAAEK,UAAUwz+C,uBAAuB,SAAS9z+C,EAAED,GAAG4L,GAAGiprB,QAAQ50rB,EAAEipE,WAAW,IAAIznE,EAAEiC,KAAK2K,MAAM3K,KAAKuK,KAAKhO,EAAEwlB,OAAO5kB,KAAK4y+C,oBAAoB7y+C,EAAE,IAAIkP,GAAG7P,GAAG0L,GAAGyhC,KAAKxsC,EAAEV,EAAEg0+C,aAAa,IAAI/y+C,EAAEN,KAAK0z+C,eAAe3z+C,EAAE8C,KAAK2K,MAAM3K,KAAKuK,KAAKvK,KAAK4yF,KAAK70F,MAAM,OAAOZ,KAAKwz+C,yCAAyClz+C,EAAEnB,EAAE,EAAEE,EAAEK,UAAUi0+C,iBAAiB,WAAW,GAAG,IAAIvz+C,UAAUC,OAAO,CAAC,GAAG6D,EAAE9D,UAAU,GAAGwQ,IAAI,CAAC,IAAIxR,EAAEgB,UAAU,GAAGjB,EAAE,IAAIqR,GAAGxQ,KAAKiz+C,UAAUjz+C,KAAKiz+C,UAAU7z+C,GAAG,OAAOY,KAAK2z+C,iBAAiBx0+C,EAAE,CAAC,GAAGiB,UAAU,aAAaoQ,GAAG,CAAC,IAAI5P,EAAER,UAAU,GAAG,OAAOJ,KAAK2z+C,iBAAiB/y+C,EAAEqC,EAAE2hF,kBAAkB,CAAC,MAAM,GAAG,IAAIxkF,UAAUC,OAAO,CAAC,GAAGD,UAAU,aAAaf,GAAG6E,EAAE9D,UAAU,GAAGwQ,IAAI,CAAC,IAAI7Q,EAAEK,UAAU,GAAGE,EAAEF,UAAU,GAAGU,EAAE,IAAI0P,GAAGxQ,KAAKiz+C,UAAUlz+C,EAAEkz+C,UAAU3y+C,GAAG,OAAON,KAAK2z+C,iBAAiB7y+C,EAAE,CAAC,GAAGV,UAAU,aAAaoQ,IAAI,iBAAiBpQ,UAAU,GAAG,CAAC,IAAIY,EAAEZ,UAAU,GAAGiC,EAAEjC,UAAU,GAAGoC,EAAE,KAAK3B,EAAE,IAAIoI,GAAG,IAAIpI,EAAEskB,IAAInkB,IAAIH,EAAEwnE,WAAWhmE,EAAE,GAAG,CAAC,IAAIS,EAAEjC,EAAEqtT,OAAOtrT,EAAEE,EAAE625B,cAAc,GAAG/25B,GAAGP,EAAE,MAAMS,EAAEuv+C,YAAYhw+C,EAAEO,EAAEJ,EAAEM,GAAGA,EAAEsv+C,cAAcvx+C,EAAEwB,EAAE,CAAC,MAAM,CAACG,EAAE8v+C,aAAa,GAAGrm9C,UAAUzpB,EAAE8v+C,aAAa,GAAGrm9C,UAAU,CAAC,MAAM,GAAG,IAAI7rB,UAAUC,OAAO,CAAC,IAAkCsC,EAAEvC,UAAU,GAAG4C,EAAE,IAAIgH,GAAjD5J,UAAU,GAAKA,UAAU,IAAgCwD,EAAE,IAAI4M,GAAGxQ,KAAKiz+C,UAAUjw+C,EAAEL,GAAG,OAAO3C,KAAK2z+C,iBAAiB/v+C,GAAG,EAAE,CAAC,EAAEvE,EAAEK,UAAUw09C,YAAY,WAAW,MAAM,CAAChq9C,GAAG/K,EAAE,EAAEE,EAAEK,UAAUon+B,SAAS,WAAW,OAAOzn+B,CAAC,EAAEA,EAAEu0+C,QAAQ,SAASx0+C,GAAG,OAAOC,EAAEw0+C,IAAIz0+C,EAAEi59C,UAAUj59C,EAAE+49C,UAAU,EAAE949C,EAAEw0+C,IAAI,SAASz0+C,EAAED,GAAG,OAAOC,EAAED,GAAG,CAAC,EAAEE,EAAEy0+C,QAAQ,SAAS10+C,GAAG,OAAOC,EAAEw0+C,IAAIz0+C,EAAEk59C,UAAUl59C,EAAEg59C,UAAU,EAAEx39C,EAAEwy+C,YAAYjw+C,IAAI,WAAW,OAAO2N,EAAE,EAAElQ,EAAE4z9C,iBAAiBrx9C,IAAI,WAAW,OAAO,iBAAiB,EAAEvC,EAAEyy+C,YAAYlw+C,IAAI,WAAW,MAAM,CAAC+w9C,YAAY,WAAW,MAAM,CAAChv9C,EAAE,EAAEglH,QAAQ,SAAS/qH,EAAEyB,GAAG,OAAOxB,EAAE+z+C,eAAe9z+C,EAAEu0+C,QAAQz0+C,EAAEy/H,aAAav/H,EAAEu0+C,QAAQhz+C,EAAEg+H,aAAa,EAAE,EAAEh+H,EAAE0y+C,YAAYnw+C,IAAI,WAAW,MAAM,CAAC+w9C,YAAY,WAAW,MAAM,CAAChv9C,EAAE,EAAEglH,QAAQ,SAAS/qH,EAAEyB,GAAG,OAAOxB,EAAE+z+C,eAAe9z+C,EAAEy0+C,QAAQ30+C,EAAEy/H,aAAav/H,EAAEy0+C,QAAQlz+C,EAAEg+H,aAAa,EAAE,EAAEh+H,EAAE2y+C,aAAapw+C,IAAI,WAAW,MAAM,CAAC+w9C,YAAY,WAAW,MAAM,CAAC909C,EAAEuz+C,aAAa,EAAExsoC,WAAW,SAAS/mW,EAAED,GAAG,OAAOC,EAAE+mW,WAAWhnW,EAAE,EAAE,EAAEyB,EAAE8x+C,sBAAsBvv+C,IAAI,WAAW,OAAO,EAAE,EAAE7D,OAAOkU,iBAAiBnU,EAAEuB,GAAGvB,CAAC,CAA9yI,CAAgzIkR,IAAIO,GAAG,SAAS1R,GAAG,SAASD,IAAI,IAAIA,EAAEiB,UAAU,GAAGhB,EAAEQ,KAAKI,KAAKb,EAAE,CAAC,OAAOC,IAAID,EAAEK,UAAUJ,GAAGD,EAAEO,UAAUJ,OAAOY,OAAOd,GAAGA,EAAEM,WAAWP,EAAEO,UAAUO,YAAYd,EAAEA,EAAEO,UAAUqy+C,cAAc,WAAW,IAAI,IAAI3y+C,EAAE,KAAKD,EAAEa,KAAK6x+C,qBAAqBlw+C,WAAWxC,EAAE2g+C,WAAW,CAAC,IAAIzg+C,EAAEF,EAAE4B,OAAO,OAAO3B,EAAEA,EAAE,IAAIgF,EAAE/E,EAAEu/H,aAAax/H,EAAEm59C,gBAAgBl59C,EAAEu/H,YAAY,CAAC,OAAOx/H,CAAC,EAAED,EAAEO,UAAUw09C,YAAY,WAAW,MAAM,EAAE,EAAE/09C,EAAEO,UAAUon+B,SAAS,WAAW,OAAO3n+B,CAAC,EAAEA,CAAC,CAApb,CAAsboL,IAAIyG,GAAG,WAAW,EAAEA,GAAGtR,UAAUw09C,YAAY,WAAW,MAAM,EAAE,EAAElj9C,GAAGtR,UAAUon+B,SAAS,WAAW,OAAO919B,EAAE,EAAEA,GAAG+i+C,aAAa,SAAS30+C,EAAED,GAAG,OAAOC,EAAED,GAAG,EAAEC,EAAED,EAAE,EAAE,CAAC,EAAE6R,GAAGk5G,QAAQ,SAAS9qH,EAAED,EAAEE,GAAG,GAAGF,EAAEu19C,SAASr19C,GAAG,OAAO,EAAE,IAAIuB,EAAEoQ,GAAG+i+C,aAAa50+C,EAAE8E,EAAE5E,EAAE4E,GAAGlE,EAAEiR,GAAG+i+C,aAAa50+C,EAAE6D,EAAE3D,EAAE2D,GAAG,OAAO5D,GAAG,KAAK,EAAE,OAAO4R,GAAGgj+C,aAAapz+C,EAAEb,GAAG,KAAK,EAAE,OAAOiR,GAAGgj+C,aAAaj0+C,EAAEa,GAAG,KAAK,EAAE,OAAOoQ,GAAGgj+C,aAAaj0+C,GAAGa,GAAG,KAAK,EAAE,OAAOoQ,GAAGgj+C,cAAcpz+C,EAAEb,GAAG,KAAK,EAAE,OAAOiR,GAAGgj+C,cAAcpz+C,GAAGb,GAAG,KAAK,EAAE,OAAOiR,GAAGgj+C,cAAcj0+C,GAAGa,GAAG,KAAK,EAAE,OAAOoQ,GAAGgj+C,cAAcj0+C,EAAEa,GAAG,KAAK,EAAE,OAAOoQ,GAAGgj+C,aAAapz+C,GAAGb,GAAG,OAAOgL,GAAGqv9C,qBAAqB,wBAAwB,CAAC,EAAEpp9C,GAAGgj+C,aAAa,SAAS50+C,EAAED,GAAG,OAAOC,EAAE,GAAG,EAAEA,EAAE,EAAE,EAAED,EAAE,GAAG,EAAEA,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI8R,GAAG,WAAWjR,KAAKi0+C,WAAW,KAAKj0+C,KAAKi/J,MAAM,KAAKj/J,KAAK6ud,aAAa,KAAK7ud,KAAKk0+C,eAAe,KAAKl0+C,KAAKm0+C,YAAY,KAAK,IAAI/0+C,EAAEgB,UAAU,GAAGjB,EAAEiB,UAAU,GAAGf,EAAEe,UAAU,GAAGQ,EAAER,UAAU,GAAGJ,KAAKi0+C,WAAW70+C,EAAEY,KAAKi/J,MAAM,IAAI96J,EAAEhF,GAAGa,KAAK6ud,aAAaxvd,EAAEW,KAAKk0+C,eAAetz+C,EAAEZ,KAAKm0+C,aAAah1+C,EAAEu19C,SAASt19C,EAAEq49C,cAAcp49C,GAAG,EAAE4R,GAAGvR,UAAU+39C,cAAc,WAAW,OAAOz39C,KAAKi/J,KAAK,EAAEhuJ,GAAGvR,UAAUo3hB,MAAM,SAAS13hB,GAAGA,EAAE03hB,MAAM92hB,KAAKi/J,OAAO7/J,EAAE03hB,MAAM,YAAY92hB,KAAK6ud,aAAa,EAAE59c,GAAGvR,UAAUmzQ,UAAU,SAASzzQ,GAAG,IAAID,EAAEC,EAAE,OAAOY,KAAK6ud,aAAa1vd,EAAE0vd,cAAc,EAAE7ud,KAAK6ud,aAAa1vd,EAAE0vd,aAAa,EAAE7ud,KAAKi/J,MAAMy1zC,SAASv19C,EAAE8/J,OAAO,EAAEjuJ,GAAGk5G,QAAQlqH,KAAKk0+C,eAAel0+C,KAAKi/J,MAAM9/J,EAAE8/J,MAAM,EAAEhuJ,GAAGvR,UAAU279C,WAAW,SAASj89C,GAAG,OAAO,IAAIY,KAAK6ud,eAAe7ud,KAAKm0+C,aAAan0+C,KAAK6ud,eAAezvd,CAAC,EAAE6R,GAAGvR,UAAU00+C,WAAW,WAAW,OAAOp0+C,KAAKm0+C,WAAW,EAAElj+C,GAAGvR,UAAUw09C,YAAY,WAAW,MAAM,CAACxv9C,EAAE,EAAEuM,GAAGvR,UAAUon+B,SAAS,WAAW,OAAO719B,EAAE,EAAE,IAAIJ,GAAG,WAAW7Q,KAAKq0+C,SAAS,IAAIvx+C,EAAE9C,KAAKmu+C,MAAM,KAAK,IAAI/u+C,EAAEgB,UAAU,GAAGJ,KAAKmu+C,MAAM/u+C,CAAC,EAAEyR,GAAGnR,UAAU40+C,oBAAoB,WAAW,IAAIl1+C,EAAE,IAAIqO,GAAGzN,KAAKu0+C,eAAe,IAAI,IAAIp1+C,EAAEa,KAAK2B,WAAWtC,EAAEF,EAAE4B,OAAO5B,EAAE2g+C,WAAW,CAAC,IAAIl/9C,EAAEzB,EAAE4B,OAAOf,KAAKw0+C,mBAAmBn1+C,EAAEuB,EAAExB,GAAGC,EAAEuB,CAAC,CAAC,OAAOxB,EAAEy49C,mBAAmB,EAAEhn9C,GAAGnR,UAAU+0+C,kBAAkB,WAAW,IAAIr1+C,EAAE,IAAI6P,GAAGjP,KAAK00+C,+BAA+Bt1+C,GAAGY,KAAK20+C,kCAAkCv1+C,GAAG,IAAI,IAAID,EAAEC,EAAEuC,WAAWxC,EAAE2g+C,WAAW,CAAC,IAAIzg+C,EAAEF,EAAE4B,OAAOy09C,WAAWx19C,KAAKmlB,IAAInlB,KAAKmu+C,MAAM1W,cAAcp49C,GAAGA,EAAE,CAAC,EAAEwR,GAAGnR,UAAUo3hB,MAAM,SAAS13hB,GAAGA,EAAEw99C,QAAQ,kBAAkB,IAAI,IAAIz99C,EAAEa,KAAK2B,WAAWxC,EAAE2g+C,WAAY3g+C,EAAE4B,OAAO+1hB,MAAM13hB,EAAG,EAAEyR,GAAGnR,UAAUi1+C,kCAAkC,SAASv1+C,GAAG,IAAI,IAAID,EAAE,EAAEA,EAAEa,KAAKmu+C,MAAMvp9C,OAAO,EAAEzlB,IAAI,CAAC,IAAIE,EAAEW,KAAKmu+C,MAAM1W,cAAct49C,GAAGyB,EAAEZ,KAAKmu+C,MAAM1W,cAAct49C,EAAE,GAAGE,EAAEq19C,SAAS9z9C,IAAIxB,EAAE+lB,IAAI,IAAItf,EAAE1G,EAAE,GAAG,CAAC,EAAE0R,GAAGnR,UAAU80+C,mBAAmB,SAASp1+C,EAAED,EAAEE,GAAG,IAAIuB,EAAEZ,KAAKmu+C,MAAM1W,cAAct49C,EAAE0vd,cAAc9ud,EAAEZ,EAAEi1+C,eAAej1+C,EAAE8/J,MAAMy1zC,SAAS9z9C,GAAGvB,EAAE8lB,IAAI,IAAIhhB,EAAE/E,EAAE6/J,QAAO,GAAI,IAAI,IAAI3+J,EAAElB,EAAEyvd,aAAa,EAAEvud,GAAGnB,EAAE0vd,aAAavud,IAAIjB,EAAE8lB,IAAInlB,KAAKmu+C,MAAM1W,cAAcn39C,IAAIP,GAAGV,EAAE8lB,IAAI,IAAIhhB,EAAEhF,EAAE8/J,OAAO,EAAEpuJ,GAAGnR,UAAUiC,SAAS,WAAW,OAAO3B,KAAKq0+C,SAAS339C,SAAS/a,UAAU,EAAEkP,GAAGnR,UAAUk1+C,cAAc,SAASx1+C,GAAGY,KAAKu0+C,eAAev0+C,KAAKy0+C,oBAAoB,IAAI,IAAIt1+C,EAAEa,KAAK2B,WAAWtC,EAAEF,EAAE4B,OAAO5B,EAAE2g+C,WAAW,CAAC,IAAIl/9C,EAAEzB,EAAE4B,OAAOhB,EAAEC,KAAK60+C,gBAAgBx1+C,EAAEuB,GAAGxB,EAAE+lB,IAAIplB,GAAGV,EAAEuB,CAAC,CAAC,EAAEiQ,GAAGnR,UAAUo1+C,kBAAkB,SAAS11+C,EAAED,EAAEE,GAAG,IAAID,EAAE6/J,MAAMy1zC,SAASv19C,EAAE8/J,OAAO,OAAM,EAAG,IAAIr+J,EAAEzB,EAAE0vd,aAAazvd,EAAEyvd,aAAa,OAAO1vd,EAAEi1+C,cAAcxz+C,IAAI,IAAIA,IAAIvB,EAAE,GAAGD,EAAEyvd,aAAa,GAAE,EAAG,EAAEh+c,GAAGnR,UAAUg1+C,+BAA+B,SAASt1+C,GAAG,IAAI,IAAID,EAAE,IAAIM,MAAM,GAAG29H,KAAK,MAAM/9H,EAAEW,KAAK2B,WAAWf,EAAEvB,EAAE0B,OAAO1B,EAAEyg+C,WAAW,CAAC,IAAI//9C,EAAEV,EAAE0B,OAAOf,KAAK80+C,kBAAkBl0+C,EAAEb,EAAEZ,IAAIC,EAAE+lB,IAAI,IAAItf,EAAE1G,EAAE,KAAKyB,EAAEb,CAAC,CAAC,EAAE8Q,GAAGnR,UAAU6zoC,QAAQ,WAAW,OAAOvzoC,KAAKmu+C,KAAK,EAAEt99C,GAAGnR,UAAU60+C,aAAa,WAAW,IAAIn1+C,EAAEY,KAAKmu+C,MAAMvp9C,OAAO,EAAE5kB,KAAKmlB,IAAInlB,KAAKmu+C,MAAM1W,cAAc,GAAG,GAAGz39C,KAAKmlB,IAAInlB,KAAKmu+C,MAAM1W,cAAcr49C,GAAGA,EAAE,EAAEyR,GAAGnR,UAAUm1+C,gBAAgB,SAASz1+C,EAAED,GAAG,IAAIE,EAAEF,EAAE0vd,aAAazvd,EAAEyvd,aAAa,EAAEjud,EAAEZ,KAAKmu+C,MAAM1W,cAAct49C,EAAE0vd,cAAc9ud,EAAEZ,EAAEi1+C,eAAej1+C,EAAE8/J,MAAMy1zC,SAAS9z9C,GAAGb,GAAGV,IAAI,IAAIiB,EAAE,IAAIb,MAAMJ,GAAG+9H,KAAK,MAAMt8H,EAAE,EAAER,EAAEQ,KAAK,IAAIqD,EAAE/E,EAAE6/J,OAAO,IAAI,IAAIj+J,EAAE5B,EAAEyvd,aAAa,EAAE7td,GAAG7B,EAAE0vd,aAAa7td,IAAIV,EAAEQ,KAAKd,KAAKmu+C,MAAM1W,cAAcz29C,GAAG,OAAOjB,IAAIO,EAAEQ,GAAG,IAAIqD,EAAEhF,EAAE8/J,QAAQ,IAAIptJ,GAAGvR,EAAEN,KAAKmu+C,MAAM3p2C,UAAU,EAAE3zH,GAAGnR,UAAUylB,IAAI,SAAS/lB,EAAED,GAAG,IAAIE,EAAE,IAAI4R,GAAGjR,KAAKmu+C,MAAM/u+C,EAAED,EAAEa,KAAKmu+C,MAAM4G,iBAAiB51+C,IAAIyB,EAAEZ,KAAKq0+C,SAASlx+C,IAAI9D,GAAG,OAAO,OAAOuB,GAAGmK,GAAGiprB,OAAOpzrB,EAAEq+J,MAAMy1zC,SAASt19C,GAAG,gDAAgDwB,IAAIZ,KAAKq0+C,SAASnzhB,IAAI7h9B,EAAEA,GAAGA,EAAE,EAAEwR,GAAGnR,UAAUs1+C,2BAA2B,SAAS51+C,GAAG,IAAID,EAAEa,KAAKmu+C,MAAM35vC,iBAAiBn1O,EAAED,EAAE+D,IAAI,GAAGs09C,cAAc,GAAG,IAAIp49C,EAAEq19C,SAASv19C,EAAE,IAAI,MAAM,IAAIiH,EAAE,iCAAiC/G,GAAG,IAAIuB,EAAExB,EAAE+D,IAAI/D,EAAEwlB,OAAO,GAAG4vN,iBAAiBz0O,EAAEa,EAAEA,EAAEP,OAAO,GAAG,IAAIN,EAAE209C,SAASv19C,EAAEA,EAAEkB,OAAO,IAAI,MAAM,IAAI+F,EAAE,+BAA+BrG,EAAE,EAAE8Q,GAAGnR,UAAUw09C,YAAY,WAAW,MAAM,EAAE,EAAErj9C,GAAGnR,UAAUon+B,SAAS,WAAW,OAAOj29B,EAAE,EAAE,IAAIS,GAAG,WAAW,EAAEA,GAAG5R,UAAUw09C,YAAY,WAAW,MAAM,EAAE,EAAE5i9C,GAAG5R,UAAUon+B,SAAS,WAAW,OAAOx19B,EAAE,EAAEA,GAAG2j+C,OAAO,WAAW,GAAG,iBAAiB70+C,UAAU,IAAI,iBAAiBA,UAAU,GAAG,CAAC,IAAIhB,EAAEgB,UAAU,GAAGjB,EAAEiB,UAAU,GAAG,GAAG,IAAIhB,GAAG,IAAID,EAAE,MAAM,IAAIiE,EAAE,yCAAyChE,EAAE,KAAKD,EAAE,MAAM,IAAIE,EAAEwD,KAAKmjH,IAAI5mH,GAAGwB,EAAEiC,KAAKmjH,IAAI7mH,GAAG,OAAOC,GAAG,EAAED,GAAG,EAAEE,GAAGuB,EAAE,EAAE,EAAEvB,GAAGuB,EAAE,EAAE,EAAEzB,GAAG,EAAEE,GAAGuB,EAAE,EAAE,EAAEvB,GAAGuB,EAAE,EAAE,CAAC,CAAC,GAAGR,UAAU,aAAa+D,GAAG/D,UAAU,aAAa+D,EAAE,CAAC,IAAIpE,EAAEK,UAAU,GAAGE,EAAEF,UAAU,GAAGU,EAAER,EAAE2D,EAAElE,EAAEkE,EAAEjD,EAAEV,EAAE0C,EAAEjD,EAAEiD,EAAE,GAAG,IAAIlC,GAAG,IAAIE,EAAE,MAAM,IAAIoC,EAAE,sDAAsDrD,GAAG,OAAOuR,GAAG2j+C,OAAOn0+C,EAAEE,EAAE,CAAC,EAAE,IAAIqQ,GAAG,WAAW,EAAEA,GAAG3R,UAAU80O,eAAe,WAAW,EAAEnjO,GAAG3R,UAAUklB,KAAK,WAAW,EAAEvT,GAAG3R,UAAU+39C,cAAc,SAASr49C,GAAG,EAAEiS,GAAG3R,UAAU88O,SAAS,WAAW,EAAEnrO,GAAG3R,UAAUo/H,QAAQ,SAAS1/H,GAAG,EAAEiS,GAAG3R,UAAU8kI,QAAQ,WAAW,EAAEnzH,GAAG3R,UAAUw09C,YAAY,WAAW,MAAM,EAAE,EAAE7i9C,GAAG3R,UAAUon+B,SAAS,WAAW,OAAOz19B,EAAE,EAAE,IAAIH,GAAG,WAAW,EAAEA,GAAGxR,UAAUw1+C,gBAAgB,SAAS91+C,EAAED,GAAG,EAAE+R,GAAGxR,UAAUw09C,YAAY,WAAW,MAAM,CAAC7i9C,GAAG,EAAEH,GAAGxR,UAAUon+B,SAAS,WAAW,OAAO519B,EAAE,EAAE,IAAIW,GAAG,WAAW7R,KAAKm1+C,UAAU,IAAItk+C,GAAG7Q,MAAMA,KAAKir+C,KAAK,KAAKjr+C,KAAKykJ,MAAM,KAAK,IAAIrlJ,EAAEgB,UAAU,GAAGjB,EAAEiB,UAAU,GAAGJ,KAAKir+C,KAAK7r+C,EAAEY,KAAKykJ,MAAMtlJ,CAAC,EAAE0S,GAAGnS,UAAU80O,eAAe,WAAW,OAAOx0O,KAAKir+C,IAAI,EAAEp59C,GAAGnS,UAAUklB,KAAK,WAAW,OAAO5kB,KAAKir+C,KAAK5q+C,MAAM,EAAEwR,GAAGnS,UAAU+39C,cAAc,SAASr49C,GAAG,OAAOY,KAAKir+C,KAAK7r+C,EAAE,EAAEyS,GAAGnS,UAAU88O,SAAS,WAAW,OAAOx8O,KAAKir+C,KAAK,GAAG141C,OAAOvyI,KAAKir+C,KAAKjr+C,KAAKir+C,KAAK5q+C,OAAO,GAAG,EAAEwR,GAAGnS,UAAUq1+C,iBAAiB,SAAS31+C,GAAG,OAAOA,IAAIY,KAAKir+C,KAAK5q+C,OAAO,GAAG,EAAEL,KAAKo1+C,WAAWp1+C,KAAKy39C,cAAcr49C,GAAGY,KAAKy39C,cAAcr49C,EAAE,GAAG,EAAEyS,GAAGnS,UAAUo/H,QAAQ,SAAS1/H,GAAGY,KAAKykJ,MAAMrlJ,CAAC,EAAEyS,GAAGnS,UAAU01+C,WAAW,SAASh2+C,EAAED,GAAG,OAAOC,EAAEs19C,SAASv19C,GAAG,EAAEmS,GAAG2j+C,OAAO71+C,EAAED,EAAE,EAAE0S,GAAGnS,UAAU8kI,QAAQ,WAAW,OAAOxkI,KAAKykJ,KAAK,EAAE5yI,GAAGnS,UAAUw1+C,gBAAgB,WAAW,GAAG,IAAI90+C,UAAUC,OAAO,CAAC,IAAIjB,EAAEgB,UAAU,GAAGjB,EAAEiB,UAAU,GAAGJ,KAAKq1+C,oBAAoBj2+C,EAAED,EAAE,MAAM,GAAG,IAAIiB,UAAUC,OAAO,CAAC,IAAmBO,EAAER,UAAU,GAAGL,EAAEK,UAAU,GAAGE,EAAE,IAAI6D,EAAjD/D,UAAU,GAA2C21zC,gBAAgBh2zC,IAAIC,KAAKk1+C,gBAAgB50+C,EAAEM,EAAE,CAAC,EAAEiR,GAAGnS,UAAU6E,SAAS,WAAW,OAAOE,EAAE019C,aAAa,IAAIhz9C,GAAGnH,KAAKir+C,MAAM,EAAEp59C,GAAGnS,UAAU41+C,YAAY,WAAW,OAAOt1+C,KAAKm1+C,SAAS,EAAEtj+C,GAAGnS,UAAU21+C,oBAAoB,SAASj2+C,EAAED,GAAG,IAAIE,EAAEF,EAAEyB,EAAEvB,EAAE,EAAE,GAAGuB,EAAEZ,KAAKir+C,KAAK5q+C,OAAO,CAAC,IAAIN,EAAEC,KAAKir+C,KAAKrq+C,GAAGxB,EAAEs19C,SAAS309C,KAAKV,EAAEuB,EAAE,CAAC,OAAOZ,KAAKm1+C,UAAUhw9C,IAAI/lB,EAAEC,EAAE,EAAEwS,GAAGnS,UAAU61+C,iBAAiB,SAASn2+C,EAAED,EAAEE,GAAG,IAAI,IAAIuB,EAAE,EAAEA,EAAExB,EAAEq89C,qBAAqB769C,IAAIZ,KAAKk1+C,gBAAgB91+C,EAAED,EAAEE,EAAEuB,EAAE,EAAEiR,GAAGnS,UAAUw09C,YAAY,WAAW,MAAM,CAAChj9C,GAAG,EAAEW,GAAGnS,UAAUon+B,SAAS,WAAW,OAAOj19B,EAAE,EAAEA,GAAG2j+C,mBAAmB,WAAW,GAAG,IAAIp1+C,UAAUC,OAAO,CAAC,IAAIjB,EAAEgB,UAAU,GAAGjB,EAAE,IAAI8P,GAAG,OAAO4C,GAAG2j+C,mBAAmBp2+C,EAAED,GAAGA,CAAC,CAAC,GAAG,IAAIiB,UAAUC,OAAO,IAAI,IAAmBO,EAAER,UAAU,GAAGL,EAA5BK,UAAU,GAAsBuB,WAAW5B,EAAE+/9C,WAAY//9C,EAAEgB,OAAOu0+C,cAAcV,cAAch0+C,EAAG,EAAE,IAAIwQ,GAAG,WAAW,GAAGpR,KAAK63H,GAAG,KAAK73H,KAAKqgP,GAAG,KAAK,IAAIjgP,UAAUC,OAAOL,KAAK63H,GAAG,IAAI1zH,EAAEnE,KAAKqgP,GAAG,IAAIl8O,OAAO,GAAG,IAAI/D,UAAUC,OAAO,CAAC,IAAIjB,EAAEgB,UAAU,GAAGJ,KAAK63H,GAAG,IAAI1zH,EAAE/E,EAAEy4H,IAAI73H,KAAKqgP,GAAG,IAAIl8O,EAAE/E,EAAEihP,GAAG,MAAM,GAAG,IAAIjgP,UAAUC,OAAOL,KAAK63H,GAAGz3H,UAAU,GAAGJ,KAAKqgP,GAAGjgP,UAAU,QAAQ,GAAG,IAAIA,UAAUC,OAAO,CAAC,IAAIlB,EAAEiB,UAAU,GAAGf,EAAEe,UAAU,GAAGQ,EAAER,UAAU,GAAGL,EAAEK,UAAU,GAAGJ,KAAK63H,GAAG,IAAI1zH,EAAEhF,EAAEE,GAAGW,KAAKqgP,GAAG,IAAIl8O,EAAEvD,EAAEb,EAAE,CAAC,EAAEwR,GAAG,CAACij9C,iBAAiB,CAAC1w9C,cAAa,IAAKsN,GAAG1R,UAAU66K,KAAK,WAAW,OAAO13K,KAAKgL,IAAI7N,KAAK63H,GAAG5zH,EAAEjE,KAAKqgP,GAAGp8O,EAAE,EAAEmN,GAAG1R,UAAU439C,iBAAiB,WAAW,GAAGl39C,UAAU,aAAagR,GAAG,CAAC,IAAIhS,EAAEgB,UAAU,GAAGjB,EAAEqM,GAAG8r9C,iBAAiBt39C,KAAK63H,GAAG73H,KAAKqgP,GAAGjhP,EAAEy4H,IAAIx4H,EAAEmM,GAAG8r9C,iBAAiBt39C,KAAK63H,GAAG73H,KAAKqgP,GAAGjhP,EAAEihP,IAAI,OAAOlhP,GAAG,GAAGE,GAAG,GAAgBF,GAAG,GAAGE,GAAG,EAAvBwD,KAAK8K,IAAIxO,EAAEE,GAA4B,CAAC,CAAC,GAAGe,UAAU,aAAa+D,EAAE,CAAC,IAAIvD,EAAER,UAAU,GAAG,OAAOoL,GAAG8r9C,iBAAiBt39C,KAAK63H,GAAG73H,KAAKqgP,GAAGz/O,EAAE,CAAC,EAAEwQ,GAAG1R,UAAU6/9C,WAAW,SAASng+C,GAAG,OAAOA,EAAE069C,iBAAiB,CAAC959C,KAAK63H,GAAG73H,KAAKqgP,IAAI,EAAEjvO,GAAG1R,UAAUiqiB,WAAW,WAAW,OAAO3piB,KAAK63H,GAAG5zH,IAAIjE,KAAKqgP,GAAGp8O,CAAC,EAAEmN,GAAG1R,UAAU6yI,OAAO,SAASnzI,GAAG,KAAKA,aAAagS,IAAI,OAAM,EAAG,IAAIjS,EAAEC,EAAE,OAAOY,KAAK63H,GAAG0a,OAAOpzI,EAAE04H,KAAK73H,KAAKqgP,GAAG9tG,OAAOpzI,EAAEkhP,GAAG,EAAEjvO,GAAG1R,UAAUw9L,aAAa,SAAS99L,GAAG,IAAID,EAAE,IAAI+L,GAAG,OAAO/L,EAAEo89C,oBAAoBv79C,KAAK63H,GAAG73H,KAAKqgP,GAAGjhP,EAAEy4H,GAAGz4H,EAAEihP,IAAIlhP,EAAEy89C,kBAAkBz89C,EAAE42zC,gBAAgB,GAAG,IAAI,EAAE3kzC,GAAG1R,UAAU43H,QAAQ,WAAW,GAAGl3H,UAAU,aAAa+D,EAAE,CAAC,IAAI/E,EAAEgB,UAAU,GAAG,GAAGhB,EAAEmzI,OAAOvyI,KAAK63H,KAAKz4H,EAAEmzI,OAAOvyI,KAAKqgP,IAAI,OAAO,IAAIl8O,EAAE/E,GAAG,IAAID,EAAEa,KAAKy1+C,iBAAiBr2+C,GAAGC,EAAE,IAAI8E,EAAE,OAAO9E,EAAE4E,EAAEjE,KAAK63H,GAAG5zH,EAAE9E,GAAGa,KAAKqgP,GAAGp8O,EAAEjE,KAAK63H,GAAG5zH,GAAG5E,EAAE2D,EAAEhD,KAAK63H,GAAG70H,EAAE7D,GAAGa,KAAKqgP,GAAGr9O,EAAEhD,KAAK63H,GAAG70H,GAAG3D,CAAC,CAAC,GAAGe,UAAU,aAAagR,GAAG,CAAC,IAAIxQ,EAAER,UAAU,GAAGL,EAAEC,KAAKy1+C,iBAAiB70+C,EAAEi3H,IAAIv3H,EAAEN,KAAKy1+C,iBAAiB70+C,EAAEy/O,IAAI,GAAGtgP,GAAG,GAAGO,GAAG,EAAE,OAAO,KAAK,GAAGP,GAAG,GAAGO,GAAG,EAAE,OAAO,KAAK,IAAIQ,EAAEd,KAAKs3H,QAAQ12H,EAAEi3H,IAAI93H,EAAE,IAAIe,EAAEd,KAAK63H,IAAI93H,EAAE,IAAIe,EAAEd,KAAKqgP,IAAI,IAAIr/O,EAAEhB,KAAKs3H,QAAQ12H,EAAEy/O,IAAI,OAAO//O,EAAE,IAAIU,EAAEhB,KAAK63H,IAAIv3H,EAAE,IAAIU,EAAEhB,KAAKqgP,IAAI,IAAIjvO,GAAGtQ,EAAEE,EAAE,CAAC,EAAEoQ,GAAG1R,UAAU4P,UAAU,WAAWtP,KAAKqgP,GAAGwyB,UAAU7yQ,KAAK63H,IAAI,GAAG73H,KAAKs6D,SAAS,EAAElpD,GAAG1R,UAAUivO,MAAM,WAAW,OAAO9rO,KAAK0xH,MAAMv0H,KAAKqgP,GAAGr9O,EAAEhD,KAAK63H,GAAG70H,EAAEhD,KAAKqgP,GAAGp8O,EAAEjE,KAAK63H,GAAG5zH,EAAE,EAAEmN,GAAG1R,UAAU+39C,cAAc,SAASr49C,GAAG,OAAO,IAAIA,EAAEY,KAAK63H,GAAG73H,KAAKqgP,EAAE,EAAEjvO,GAAG1R,UAAUg2+C,sBAAsB,SAASt2+C,GAAG,OAAOoM,GAAGoy9C,+BAA+Bx+9C,EAAEY,KAAK63H,GAAG73H,KAAKqgP,GAAG,EAAEjvO,GAAG1R,UAAU86K,KAAK,WAAW,OAAO33K,KAAKgL,IAAI7N,KAAK63H,GAAG70H,EAAEhD,KAAKqgP,GAAGr9O,EAAE,EAAEoO,GAAG1R,UAAU6/5B,SAAS,WAAW,OAAOnu5B,GAAGmu5B,SAASv/5B,KAAK63H,GAAG73H,KAAKqgP,GAAG,EAAEjvO,GAAG1R,UAAU+1+C,iBAAiB,SAASr2+C,GAAG,GAAGA,EAAEmzI,OAAOvyI,KAAK63H,IAAI,OAAO,EAAE,GAAGz4H,EAAEmzI,OAAOvyI,KAAKqgP,IAAI,OAAO,EAAE,IAAIlhP,EAAEa,KAAKqgP,GAAGp8O,EAAEjE,KAAK63H,GAAG5zH,EAAE5E,EAAEW,KAAKqgP,GAAGr9O,EAAEhD,KAAK63H,GAAG70H,EAAEpC,EAAEzB,EAAEA,EAAEE,EAAEA,EAAE,OAAGuB,GAAG,EAASqC,EAAE24vB,MAAYx8vB,EAAE6E,EAAEjE,KAAK63H,GAAG5zH,GAAG9E,GAAGC,EAAE4D,EAAEhD,KAAK63H,GAAG70H,GAAG3D,GAAGuB,CAAC,EAAEwQ,GAAG1R,UAAU+vY,cAAc,SAASrwY,GAAG,IAAID,EAAEa,KAAKk9L,aAAa99L,GAAG,GAAG,OAAOD,EAAE,MAAM,CAACA,EAAEA,GAAG,IAAIE,EAAE,IAAII,MAAM,GAAG29H,KAAK,MAAMx8H,EAAEqC,EAAEioL,UAAUnrL,EAAE,KAAKO,EAAEN,KAAKywX,aAAarxX,EAAEy4H,IAAIj3H,EAAEN,EAAE2oJ,SAAS7pJ,EAAEy4H,IAAIx4H,EAAE,GAAGiB,EAAEjB,EAAE,GAAGD,EAAEy4H,GAAG,IAAI/2H,EAAEd,KAAKywX,aAAarxX,EAAEihP,KAAKtgP,EAAEe,EAAEmoJ,SAAS7pJ,EAAEihP,KAAKz/O,IAAIA,EAAEb,EAAEV,EAAE,GAAGyB,EAAEzB,EAAE,GAAGD,EAAEihP,IAAI,IAAIr/O,EAAE5B,EAAEqxX,aAAazwX,KAAK63H,KAAK93H,EAAEiB,EAAEioJ,SAASjpJ,KAAK63H,KAAKj3H,IAAIA,EAAEb,EAAEV,EAAE,GAAGW,KAAK63H,GAAGx4H,EAAE,GAAG2B,GAAG,IAAIqB,EAAEjD,EAAEqxX,aAAazwX,KAAKqgP,IAAI,OAAOtgP,EAAEsC,EAAE4mJ,SAASjpJ,KAAKqgP,KAAKz/O,IAAIA,EAAEb,EAAEV,EAAE,GAAGW,KAAKqgP,GAAGhhP,EAAE,GAAGgD,GAAGhD,CAAC,EAAE+R,GAAG1R,UAAU+wX,aAAa,SAASrxX,GAAG,IAAID,EAAEa,KAAKy1+C,iBAAiBr2+C,GAAG,OAAGD,EAAE,GAAGA,EAAE,EAASa,KAAKs3H,QAAQl4H,GAAUY,KAAK63H,GAAGoxB,SAAS7pJ,GAAGY,KAAKqgP,GAAGp3F,SAAS7pJ,GAAGY,KAAK63H,GAAG73H,KAAKqgP,EAAE,EAAEjvO,GAAG1R,UAAU+6K,KAAK,WAAW,OAAO53K,KAAK8K,IAAI3N,KAAK63H,GAAG5zH,EAAEjE,KAAKqgP,GAAGp8O,EAAE,EAAEmN,GAAG1R,UAAUw/9C,UAAU,WAAW,OAAOl/9C,KAAK63H,GAAGoxB,SAASjpJ,KAAKqgP,GAAG,EAAEjvO,GAAG1R,UAAUmzQ,UAAU,SAASzzQ,GAAG,IAAID,EAAEC,EAAEC,EAAEW,KAAK63H,GAAGg7I,UAAU1zQ,EAAE04H,IAAI,OAAO,IAAIx4H,EAAEA,EAAEW,KAAKqgP,GAAGwyB,UAAU1zQ,EAAEkhP,GAAG,EAAEjvO,GAAG1R,UAAU46D,QAAQ,WAAW,IAAIl7D,EAAEY,KAAK63H,GAAG73H,KAAK63H,GAAG73H,KAAKqgP,GAAGrgP,KAAKqgP,GAAGjhP,CAAC,EAAEgS,GAAG1R,UAAUo/9C,WAAW,SAAS1/9C,GAAG,OAAOY,KAAK63H,GAAG0a,OAAOnzI,EAAEy4H,MAAM73H,KAAKqgP,GAAG9tG,OAAOnzI,EAAEihP,KAAKrgP,KAAK63H,GAAG0a,OAAOnzI,EAAEihP,MAAMrgP,KAAKqgP,GAAG9tG,OAAOnzI,EAAEy4H,GAAG,EAAEzmH,GAAG1R,UAAUi2+C,iBAAiB,SAASv2+C,GAAG,IAAI,OAAOsE,EAAEw5L,aAAal9L,KAAK63H,GAAG73H,KAAKqgP,GAAGjhP,EAAEy4H,GAAGz4H,EAAEihP,GAAG,CAAC,MAAMjhP,GAAG,KAAKA,aAAa2F,GAAG,MAAM3F,CAAC,CAAC,OAAO,IAAI,EAAEgS,GAAG1R,UAAUg7K,KAAK,WAAW,OAAO73K,KAAK8K,IAAI3N,KAAK63H,GAAG70H,EAAEhD,KAAKqgP,GAAGr9O,EAAE,EAAEoO,GAAG1R,UAAUk2+C,iBAAiB,SAASx2+C,EAAED,GAAG,IAAIE,EAAEW,KAAK63H,GAAG5zH,EAAE7E,GAAGY,KAAKqgP,GAAGp8O,EAAEjE,KAAK63H,GAAG5zH,GAAGrD,EAAEZ,KAAK63H,GAAG70H,EAAE5D,GAAGY,KAAKqgP,GAAGr9O,EAAEhD,KAAK63H,GAAG70H,GAAGjD,EAAEC,KAAKqgP,GAAGp8O,EAAEjE,KAAK63H,GAAG5zH,EAAE3D,EAAEN,KAAKqgP,GAAGr9O,EAAEhD,KAAK63H,GAAG70H,EAAElC,EAAE+B,KAAK4yF,KAAK11F,EAAEA,EAAEO,EAAEA,GAAGU,EAAE,EAAEqB,EAAE,EAAE,GAAG,IAAIlD,EAAE,CAAC,GAAG2B,GAAG,EAAE,MAAM,IAAI0mB,MAAM,uDAAuDxmB,EAAE7B,EAAEY,EAAEe,EAAEuB,EAAElD,EAAEmB,EAAEQ,CAAC,CAAC,OAAO,IAAIqD,EAAE9E,EAAEgD,EAAEzB,EAAEI,EAAE,EAAEoQ,GAAG1R,UAAUkx5C,eAAe,WAAW,GAAG,IAAIxw5C,UAAUC,OAAO,CAAC,IAAIjB,EAAEgB,UAAU,GAAGJ,KAAK4w5C,eAAexx5C,EAAEy4H,GAAGz4H,EAAEihP,GAAG,MAAM,GAAG,IAAIjgP,UAAUC,OAAO,CAAC,IAAIlB,EAAEiB,UAAU,GAAGf,EAAEe,UAAU,GAAGJ,KAAK63H,GAAG5zH,EAAE9E,EAAE8E,EAAEjE,KAAK63H,GAAG70H,EAAE7D,EAAE6D,EAAEhD,KAAKqgP,GAAGp8O,EAAE5E,EAAE4E,EAAEjE,KAAKqgP,GAAGr9O,EAAE3D,EAAE2D,CAAC,CAAC,EAAEoO,GAAG1R,UAAUm2+C,gBAAgB,SAASz2+C,GAAG,IAAID,EAAEa,KAAKy1+C,iBAAiBr2+C,GAAG,OAAOD,EAAE,EAAEA,EAAE,GAAGA,EAAE,GAAG8D,EAAEqpC,MAAMntC,MAAMA,EAAE,GAAGA,CAAC,EAAEiS,GAAG1R,UAAU6E,SAAS,WAAW,MAAM,eAAevE,KAAK63H,GAAG5zH,EAAE,IAAIjE,KAAK63H,GAAG70H,EAAE,KAAKhD,KAAKqgP,GAAGp8O,EAAE,IAAIjE,KAAKqgP,GAAGr9O,EAAE,GAAG,EAAEoO,GAAG1R,UAAUgqiB,aAAa,WAAW,OAAO1piB,KAAK63H,GAAG70H,IAAIhD,KAAKqgP,GAAGr9O,CAAC,EAAEoO,GAAG1R,UAAUupJ,SAAS,WAAW,GAAG7oJ,UAAU,aAAagR,GAAG,CAAC,IAAIhS,EAAEgB,UAAU,GAAG,OAAOoL,GAAG+x9C,iBAAiBv99C,KAAK63H,GAAG73H,KAAKqgP,GAAGjhP,EAAEy4H,GAAGz4H,EAAEihP,GAAG,CAAC,GAAGjgP,UAAU,aAAa+D,EAAE,CAAC,IAAIhF,EAAEiB,UAAU,GAAG,OAAOoL,GAAGux9C,kBAAkB599C,EAAEa,KAAK63H,GAAG73H,KAAKqgP,GAAG,CAAC,EAAEjvO,GAAG1R,UAAUo2+C,WAAW,SAAS12+C,GAAG,IAAID,EAAE,IAAIgF,EAAE,OAAOhF,EAAE8E,EAAEjE,KAAK63H,GAAG5zH,EAAE7E,GAAGY,KAAKqgP,GAAGp8O,EAAEjE,KAAK63H,GAAG5zH,GAAG9E,EAAE6D,EAAEhD,KAAK63H,GAAG70H,EAAE5D,GAAGY,KAAKqgP,GAAGr9O,EAAEhD,KAAK63H,GAAG70H,GAAG7D,CAAC,EAAEiS,GAAG1R,UAAUq19C,SAAS,WAAW,IAAI319C,EAAE6D,EAAEmx9C,iBAAiBp09C,KAAK63H,GAAG5zH,GAAG7E,GAAG,GAAG6D,EAAEmx9C,iBAAiBp09C,KAAK63H,GAAG70H,GAAG,IAAI7D,EAAE0D,KAAK2K,MAAMpO,GAAGyD,KAAK2K,MAAMpO,GAAG,IAAIC,EAAE4D,EAAEmx9C,iBAAiBp09C,KAAKqgP,GAAGp8O,GAAuC,OAApC5E,GAAG,GAAG4D,EAAEmx9C,iBAAiBp09C,KAAKqgP,GAAGr9O,GAAU7D,EAAG0D,KAAK2K,MAAMnO,GAAGwD,KAAK2K,MAAMnO,GAAG,GAAI,EAAE+R,GAAG1R,UAAUw09C,YAAY,WAAW,MAAM,CAACxv9C,EAAEvF,EAAE,EAAEiS,GAAG1R,UAAUon+B,SAAS,WAAW,OAAO119B,EAAE,EAAEA,GAAGmu5B,SAAS,SAASng6B,EAAED,GAAG,OAAO,IAAIgF,GAAG/E,EAAE6E,EAAE9E,EAAE8E,GAAG,GAAG7E,EAAE4D,EAAE7D,EAAE6D,GAAG,EAAE,EAAEuO,GAAGij9C,iBAAiBrx9C,IAAI,WAAW,OAAO,kBAAkB,EAAE7D,OAAOkU,iBAAiBpC,GAAGG,IAAI,IAAIU,GAAG,WAAWjS,KAAK+1+C,SAAS,IAAI3x+C,EAAEpE,KAAKg2+C,SAAS,IAAI5x+C,EAAEpE,KAAKi2+C,aAAa,IAAI7k+C,GAAGpR,KAAKk2+C,aAAa,IAAI9k+C,EAAE,EAAEa,GAAGvS,UAAU8z8B,QAAQ,WAAW,GAAG,IAAIpz8B,UAAUC,aAAa,GAAG,IAAID,UAAUC,OAAO,CAAC,IAAmBlB,EAAEiB,UAAU,GAAGf,EAAEe,UAAU,GAAGQ,EAAER,UAAU,GAAvDA,UAAU,GAAkD+1+C,eAAeh3+C,EAAEa,KAAKi2+C,cAAc52+C,EAAE82+C,eAAev1+C,EAAEZ,KAAKk2+C,cAAcl2+C,KAAKwz8B,QAAQxz8B,KAAKi2+C,aAAaj2+C,KAAKk2+C,aAAa,CAAC,EAAEjk+C,GAAGvS,UAAUw09C,YAAY,WAAW,MAAM,EAAE,EAAEji9C,GAAGvS,UAAUon+B,SAAS,WAAW,OAAO709B,EAAE,EAAE,IAAIP,GAAG,WAAW1R,KAAKir+C,KAAK,KAAKjr+C,KAAKy2kC,OAAO,KAAKz2kC,KAAKo2+C,KAAK,KAAKp2+C,KAAKgp+C,KAAK,KAAKhp+C,KAAKglJ,SAAS,KAAKhlJ,KAAKkliC,IAAI,KAAK,IAAI9liC,EAAEgB,UAAU,GAAGjB,EAAEiB,UAAU,GAAGf,EAAEe,UAAU,GAAGQ,EAAER,UAAU,GAAGJ,KAAKir+C,KAAK7r+C,EAAEY,KAAKy2kC,OAAOt3kC,EAAEa,KAAKo2+C,KAAK/2+C,EAAEW,KAAKglJ,SAASpkJ,CAAC,EAAE8Q,GAAGhS,UAAUy2+C,eAAe,SAAS/2+C,EAAED,GAAGA,EAAE04H,GAAG73H,KAAKir+C,KAAK7r+C,GAAGD,EAAEkhP,GAAGrgP,KAAKir+C,KAAK7r+C,EAAE,EAAE,EAAEsS,GAAGhS,UAAU22+C,cAAc,SAASj3+C,EAAED,EAAEE,EAAEuB,GAAG,IAAIb,EAAEC,KAAKir+C,KAAK9r+C,GAAGmB,EAAEN,KAAKir+C,KAAK5r+C,GAAG,GAAGuB,EAAEm1+C,SAASrl7C,KAAK3wD,EAAEO,GAAGjB,EAAEF,GAAG,EAAE,OAAOyB,EAAE41Q,OAAOx2Q,KAAKb,GAAG,KAAK,IAAIC,EAAE+mW,WAAWvlW,EAAEm1+C,UAAU,OAAO,KAAK,IAAIj1+C,EAAE+B,KAAK2K,OAAOrO,EAAEE,GAAG,GAAGF,EAAE2B,GAAGd,KAAKq2+C,cAAcj3+C,EAAED,EAAE2B,EAAEF,GAAGE,EAAEzB,GAAGW,KAAKq2+C,cAAcj3+C,EAAE0B,EAAEzB,EAAEuB,EAAE,EAAE8Q,GAAGhS,UAAU80O,eAAe,WAAW,IAAI,IAAIp1O,EAAE,IAAIK,MAAMO,KAAKo2+C,KAAKp2+C,KAAKy2kC,OAAO,GAAGr58B,KAAK,MAAMj+H,EAAE,EAAEE,EAAEW,KAAKy2kC,OAAOp3kC,GAAGW,KAAKo2+C,KAAK/2+C,IAAID,EAAED,KAAKa,KAAKir+C,KAAK5r+C,GAAG,OAAOD,CAAC,EAAEsS,GAAGhS,UAAU42+C,gBAAgB,SAASl3+C,EAAED,GAAGa,KAAKu2+C,wBAAwBv2+C,KAAKy2kC,OAAOz2kC,KAAKo2+C,KAAKh3+C,EAAEA,EAAEq3kC,OAAOr3kC,EAAEg3+C,KAAKj3+C,EAAE,EAAEuS,GAAGhS,UAAUk0jB,MAAM,SAASx0jB,GAAGY,KAAKkliC,IAAI9liC,CAAC,EAAEsS,GAAGhS,UAAU82Q,OAAO,SAASp3Q,EAAED,GAAGa,KAAKq2+C,cAAcj3+C,EAAEY,KAAKy2kC,OAAOz2kC,KAAKo2+C,KAAKj3+C,EAAE,EAAEuS,GAAGhS,UAAU4/9C,YAAY,WAAW,GAAG,OAAOt/9C,KAAKgp+C,KAAK,CAAC,IAAI5p+C,EAAEY,KAAKir+C,KAAKjr+C,KAAKy2kC,QAAQt3kC,EAAEa,KAAKir+C,KAAKjr+C,KAAKo2+C,MAAMp2+C,KAAKgp+C,KAAK,IAAI5k+C,EAAEhF,EAAED,EAAE,CAAC,OAAOa,KAAKgp+C,IAAI,EAAEt39C,GAAGhS,UAAU82+C,YAAY,WAAW,OAAOx2+C,KAAKo2+C,IAAI,EAAE1k+C,GAAGhS,UAAU+2+C,cAAc,WAAW,OAAOz2+C,KAAKy2kC,MAAM,EAAE/kkC,GAAGhS,UAAUqtD,WAAW,WAAW,OAAO/sD,KAAKglJ,QAAQ,EAAEtzI,GAAGhS,UAAU+ze,MAAM,WAAW,OAAOzze,KAAKkliC,GAAG,EAAExzhC,GAAGhS,UAAU62+C,wBAAwB,SAASn3+C,EAAED,EAAEE,EAAEuB,EAAEb,EAAEO,GAAG,IAAIQ,EAAEd,KAAKir+C,KAAK7r+C,GAAG4B,EAAEhB,KAAKir+C,KAAK9r+C,GAAGkD,EAAEhD,EAAE4r+C,KAAKrq+C,GAAG4B,EAAEnD,EAAE4r+C,KAAKlr+C,GAAG,GAAGZ,EAAEC,GAAG,GAAGW,EAAEa,GAAG,EAAE,OAAON,EAAEkz8B,QAAQxz8B,KAAKZ,EAAEC,EAAEuB,GAAG,KAAK,GAAGN,EAAEy1+C,SAASrl7C,KAAK5vD,EAAEE,GAAGV,EAAE01+C,SAAStl7C,KAAKruD,EAAEG,IAAIlC,EAAEy1+C,SAAS5voC,WAAW7lW,EAAE01+C,UAAU,OAAO,KAAK,IAAIn1+C,EAAEgC,KAAK2K,OAAOpO,EAAED,GAAG,GAAG2D,EAAED,KAAK2K,OAAO5M,EAAEb,GAAG,GAAGX,EAAEyB,IAAID,EAAEkC,GAAG9C,KAAKu2+C,wBAAwBn3+C,EAAEyB,EAAExB,EAAEuB,EAAEkC,EAAExC,GAAGwC,EAAE/C,GAAGC,KAAKu2+C,wBAAwBn3+C,EAAEyB,EAAExB,EAAEyD,EAAE/C,EAAEO,IAAIO,EAAE1B,IAAIyB,EAAEkC,GAAG9C,KAAKu2+C,wBAAwB11+C,EAAE1B,EAAEE,EAAEuB,EAAEkC,EAAExC,GAAGwC,EAAE/C,GAAGC,KAAKu2+C,wBAAwB11+C,EAAE1B,EAAEE,EAAEyD,EAAE/C,EAAEO,GAAG,EAAEoR,GAAGhS,UAAUw09C,YAAY,WAAW,MAAM,EAAE,EAAExi9C,GAAGhS,UAAUon+B,SAAS,WAAW,OAAOp19B,EAAE,EAAE,IAAID,GAAG,WAAW,EAAEA,GAAG/R,UAAUw09C,YAAY,WAAW,MAAM,EAAE,EAAEzi9C,GAAG/R,UAAUon+B,SAAS,WAAW,OAAOr19B,EAAE,EAAEA,GAAGil+C,qBAAqB,SAASt3+C,GAAG,IAAID,EAAE,EAAEE,EAAE,IAAI4P,GAAG5P,EAAE8lB,IAAI,IAAItf,EAAE1G,IAAI,EAAE,CAAC,IAAIyB,EAAE6Q,GAAGkl+C,aAAav3+C,EAAED,GAAGE,EAAE8lB,IAAI,IAAItf,EAAEjF,IAAIzB,EAAEyB,CAAC,OAAOzB,EAAEC,EAAEiB,OAAO,GAAG,OAAOoR,GAAGwyU,WAAW5kV,EAAE,EAAEoS,GAAGkl+C,aAAa,SAASv3+C,EAAED,GAAG,IAAI,IAAIE,EAAEF,EAAEE,EAAED,EAAEiB,OAAO,GAAGjB,EAAEC,GAAGq19C,SAASt19C,EAAEC,EAAE,KAAKA,IAAI,GAAGA,GAAGD,EAAEiB,OAAO,EAAE,OAAOjB,EAAEiB,OAAO,EAAE,IAAI,IAAIO,EAAE0J,GAAG8h6C,SAASht6C,EAAEC,GAAGD,EAAEC,EAAE,IAAIU,EAAEZ,EAAE,EAAEY,EAAEX,EAAEiB,SAAajB,EAAEW,EAAE,GAAG209C,SAASt19C,EAAEW,KAAQuK,GAAG8h6C,SAASht6C,EAAEW,EAAE,GAAGX,EAAEW,MAAMa,IAAQb,IAAI,OAAOA,EAAE,CAAC,EAAE0R,GAAGml+C,UAAU,WAAW,GAAG,IAAIx2+C,UAAUC,OAA2B,OAAOoR,GAAGml+C,UAAvBx2+C,UAAU,GAAyB,MAAM,GAAG,IAAIA,UAAUC,OAAO,CAAC,IAAI,IAAIlB,EAAEiB,UAAU,GAAGf,EAAEe,UAAU,GAAGQ,EAAE,IAAIqO,GAAGlP,EAAE0R,GAAGil+C,qBAAqBv3+C,GAAGmB,EAAE,EAAEA,EAAEP,EAAEM,OAAO,EAAEC,IAAI,CAAC,IAAIQ,EAAE,IAAI4Q,GAAGvS,EAAEY,EAAEO,GAAGP,EAAEO,EAAE,GAAGjB,GAAGuB,EAAEukB,IAAIrkB,EAAE,CAAC,OAAOF,CAAC,CAAC,EAAE6Q,GAAGwyU,WAAW,SAAS7kV,GAAG,IAAI,IAAID,EAAE,IAAIM,MAAML,EAAEwlB,QAAQw4G,KAAK,MAAM/9H,EAAE,EAAEA,EAAEF,EAAEkB,OAAOhB,IAAIF,EAAEE,GAAGD,EAAE+D,IAAI9D,GAAGm29C,WAAW,OAAOr29C,CAAC,EAAE,IAAI+S,GAAG,WAAW,EAAEA,GAAGxS,UAAUm3+C,aAAa,SAASz3+C,GAAG,EAAE8S,GAAGxS,UAAU81+C,mBAAmB,WAAW,EAAEtj+C,GAAGxS,UAAUw09C,YAAY,WAAW,MAAM,EAAE,EAAEhi9C,GAAGxS,UAAUon+B,SAAS,WAAW,OAAO509B,EAAE,EAAE,IAAIU,GAAG,WAAW,GAAG5S,KAAK82+C,QAAQ,KAAK,IAAI12+C,UAAUC,aAAa,GAAG,IAAID,UAAUC,OAAO,CAAC,IAAIjB,EAAEgB,UAAU,GAAGJ,KAAK+2+C,sBAAsB33+C,EAAE,CAAC,EAAEwT,GAAGlT,UAAUq3+C,sBAAsB,SAAS33+C,GAAGY,KAAK82+C,QAAQ13+C,CAAC,EAAEwT,GAAGlT,UAAUw09C,YAAY,WAAW,MAAM,CAAChi9C,GAAG,EAAEU,GAAGlT,UAAUon+B,SAAS,WAAW,OAAOl09B,EAAE,EAAE,IAAIP,GAAG,SAASjT,GAAG,SAASD,EAAEA,GAAGA,EAAEC,EAAEQ,KAAKI,KAAKb,GAAGC,EAAEQ,KAAKI,MAAMA,KAAKg3+C,YAAY,IAAI/n+C,GAAGjP,KAAKw4X,OAAO,IAAIznX,GAAG/Q,KAAKi3+C,WAAW,EAAEj3+C,KAAKk3+C,iBAAiB,KAAKl3+C,KAAKm3+C,WAAW,CAAC,CAAC/3+C,IAAID,EAAEK,UAAUJ,IAAID,EAAEO,UAAUJ,OAAOY,OAAOd,GAAGA,EAAEM,YAAYO,YAAYd,EAAE,IAAIE,EAAE,CAAC+3+C,qBAAqB,CAACtz+C,cAAa,IAAK,OAAO3E,EAAEO,UAAU23+C,kBAAkB,WAAW,OAAOr3+C,KAAKg3+C,WAAW,EAAE73+C,EAAEO,UAAU81+C,mBAAmB,WAAW,OAAO3j+C,GAAG2j+C,mBAAmBx1+C,KAAKk3+C,iBAAiB,EAAE/3+C,EAAEO,UAAUm2O,SAAS,WAAW,OAAO71O,KAAKw4X,MAAM,EAAEr5X,EAAEO,UAAUylB,IAAI,SAAS/lB,GAAG,IAAI,IAAID,EAAEsS,GAAGml+C,UAAUx3+C,EAAEo1O,iBAAiBp1O,GAAGuC,WAAWxC,EAAE2g+C,WAAW,CAAC,IAAIzg+C,EAAEF,EAAE4B,OAAO1B,EAAEu0jB,MAAM5zjB,KAAKi3+C,cAAcj3+C,KAAKw4X,OAAOz9H,OAAO17P,EAAEig+C,cAAcjg+C,GAAGW,KAAKg3+C,YAAY7x9C,IAAI9lB,EAAE,CAAC,EAAEF,EAAEO,UAAUm3+C,aAAa,SAASz3+C,GAAGY,KAAKk3+C,iBAAiB93+C,EAAE,IAAI,IAAID,EAAEC,EAAEuC,WAAWxC,EAAE2g+C,WAAW9/9C,KAAKmlB,IAAIhmB,EAAE4B,QAAQf,KAAKs3+C,iBAAiB,EAAEn4+C,EAAEO,UAAU43+C,gBAAgB,WAAW,IAAI,IAAIl4+C,EAAE,IAAIiU,GAAGrT,KAAK82+C,SAAS33+C,EAAEa,KAAKg3+C,YAAYr1+C,WAAWxC,EAAE2g+C,WAAW,IAAI,IAAIzg+C,EAAEF,EAAE4B,OAAOH,EAAEZ,KAAKw4X,OAAOvpS,MAAM5vF,EAAEig+C,eAAe399C,WAAWf,EAAEk/9C,WAAW,CAAC,IAAI//9C,EAAEa,EAAEG,OAAO,GAAGhB,EAAE0ze,QAAQp0e,EAAEo0e,UAAUp0e,EAAEi3+C,gBAAgBv2+C,EAAEX,GAAGY,KAAKm3+C,cAAcn3+C,KAAK82+C,QAAQx2zC,SAAS,OAAO,IAAI,CAAC,EAAEnhL,EAAEO,UAAUw09C,YAAY,WAAW,MAAM,EAAE,EAAE/09C,EAAEO,UAAUon+B,SAAS,WAAW,OAAO3n+B,CAAC,EAAEE,EAAE+3+C,qBAAqBj0+C,IAAI,WAAW,OAAOkQ,EAAE,EAAE/T,OAAOkU,iBAAiBrU,EAAEE,GAAGF,CAAC,CAAhzC,CAAkzCyT,IAAIS,GAAG,SAASjU,GAAG,SAASD,IAAIC,EAAEQ,KAAKI,MAAMA,KAAKu3+C,IAAI,KAAK,IAAIp4+C,EAAEiB,UAAU,GAAGJ,KAAKu3+C,IAAIp4+C,CAAC,CAAC,OAAOC,IAAID,EAAEK,UAAUJ,GAAGD,EAAEO,UAAUJ,OAAOY,OAAOd,GAAGA,EAAEM,WAAWP,EAAEO,UAAUO,YAAYd,EAAEA,EAAEO,UAAU8z8B,QAAQ,WAAW,GAAG,IAAIpz8B,UAAUC,OAAO,OAAOjB,EAAEM,UAAU8z8B,QAAQjz8B,MAAMP,KAAKI,WAAW,IAAmBf,EAAEe,UAAU,GAAGQ,EAAER,UAAU,GAAGL,EAAEK,UAAU,GAAGE,EAA1DF,UAAU,GAAoD2sD,aAAajsD,EAAEF,EAAEmsD,aAAa/sD,KAAKu3+C,IAAIC,qBAAqBl3+C,EAAEjB,EAAEyB,EAAEf,EAAE,EAAEZ,EAAEO,UAAUw09C,YAAY,WAAW,MAAM,EAAE,EAAE/09C,EAAEO,UAAUon+B,SAAS,WAAW,OAAO3n+B,CAAC,EAAEA,CAAC,CAA1f,CAA4f8S,IAAIM,GAAG,SAASnT,IAAI,GAAGY,KAAKy3+C,kBAAkBr4+C,EAAEs4+C,0BAA0B13+C,KAAK23+C,aAAav4+C,EAAEw4+C,UAAU53+C,KAAK63+C,WAAWz4+C,EAAE04+C,WAAW93+C,KAAK+3+C,YAAY34+C,EAAE44+C,oBAAoBh4+C,KAAKi4+C,gBAAe,EAAGj4+C,KAAKk4+C,gBAAgB94+C,EAAE+4+C,wBAAwB,IAAI/3+C,UAAUC,aAAa,GAAG,IAAID,UAAUC,OAAO,CAAC,IAAIlB,EAAEiB,UAAU,GAAGJ,KAAKo4+C,oBAAoBj5+C,EAAE,MAAM,GAAG,IAAIiB,UAAUC,OAAO,CAAC,IAAIhB,EAAEe,UAAU,GAAGQ,EAAER,UAAU,GAAGJ,KAAKo4+C,oBAAoB/4+C,GAAGW,KAAKq4+C,eAAez3+C,EAAE,MAAM,GAAG,IAAIR,UAAUC,OAAO,CAAC,IAAIN,EAAEK,UAAU,GAAGE,EAAEF,UAAU,GAAGU,EAAEV,UAAU,GAAGY,EAAEZ,UAAU,GAAGJ,KAAKo4+C,oBAAoBr4+C,GAAGC,KAAKq4+C,eAAe/3+C,GAAGN,KAAKs4+C,aAAax3+C,GAAGd,KAAKu4+C,cAAcv3+C,EAAE,CAAC,EAAE+Q,GAAG,CAAC6l+C,UAAU,CAAC9z+C,cAAa,GAAI00+C,SAAS,CAAC10+C,cAAa,GAAI20+C,WAAW,CAAC30+C,cAAa,GAAIg0+C,WAAW,CAACh0+C,cAAa,GAAI40+C,WAAW,CAAC50+C,cAAa,GAAI60+C,WAAW,CAAC70+C,cAAa,GAAI4z+C,0BAA0B,CAAC5z+C,cAAa,GAAIk0+C,oBAAoB,CAACl0+C,cAAa,GAAIq0+C,wBAAwB,CAACr0+C,cAAa,IAAKyO,GAAG7S,UAAUk5+C,eAAe,WAAW,OAAO54+C,KAAK23+C,YAAY,EAAEpl+C,GAAG7S,UAAUm5+C,cAAc,WAAW,OAAO74+C,KAAKi4+C,cAAc,EAAE1l+C,GAAG7S,UAAU04+C,oBAAoB,SAASh5+C,GAAGY,KAAKy3+C,kBAAkBr4+C,EAAE,IAAIY,KAAKy3+C,oBAAoBz3+C,KAAK63+C,WAAWtl+C,GAAGom+C,YAAY34+C,KAAKy3+C,kBAAkB,IAAIz3+C,KAAK63+C,WAAWtl+C,GAAGmm+C,WAAW14+C,KAAK+3+C,YAAYl1+C,KAAKmjH,IAAIhmH,KAAKy3+C,oBAAoBr4+C,GAAG,IAAIY,KAAKy3+C,kBAAkB,GAAGz3+C,KAAK63+C,aAAatl+C,GAAGul+C,aAAa93+C,KAAKy3+C,kBAAkBll+C,GAAGml+C,0BAA0B,EAAEnl+C,GAAG7S,UAAUo5+C,aAAa,WAAW,OAAO94+C,KAAK63+C,UAAU,EAAEtl+C,GAAG7S,UAAU44+C,aAAa,SAASl5+C,GAAGY,KAAK63+C,WAAWz4+C,CAAC,EAAEmT,GAAG7S,UAAUq5+C,kBAAkB,SAAS35+C,GAAGY,KAAKk4+C,gBAAgB94+C,EAAE,EAAE,EAAEA,CAAC,EAAEmT,GAAG7S,UAAUs5+C,kBAAkB,WAAW,OAAOh5+C,KAAKk4+C,eAAe,EAAE3l+C,GAAG7S,UAAUu5+C,oBAAoB,WAAW,OAAOj5+C,KAAKy3+C,iBAAiB,EAAEll+C,GAAG7S,UAAU24+C,eAAe,SAASj5+C,GAAGY,KAAK23+C,aAAav4+C,CAAC,EAAEmT,GAAG7S,UAAUw5+C,cAAc,WAAW,OAAOl5+C,KAAK+3+C,WAAW,EAAExl+C,GAAG7S,UAAU64+C,cAAc,SAASn5+C,GAAGY,KAAK+3+C,YAAY34+C,CAAC,EAAEmT,GAAG7S,UAAUy5+C,eAAe,SAAS/5+C,GAAGY,KAAKi4+C,eAAe74+C,CAAC,EAAEmT,GAAG7S,UAAUw09C,YAAY,WAAW,MAAM,EAAE,EAAE3h9C,GAAG7S,UAAUon+B,SAAS,WAAW,OAAOv09B,EAAE,EAAEA,GAAG6m+C,oBAAoB,SAASh6+C,GAAG,IAAID,EAAE0D,KAAKsmC,GAAG,EAAE/pC,EAAE,OAAO,EAAEyD,KAAKuxH,IAAIj1H,EAAE,EAAE,EAAE4S,GAAG6l+C,UAAUz0+C,IAAI,WAAW,OAAO,CAAC,EAAE4O,GAAGym+C,SAASr1+C,IAAI,WAAW,OAAO,CAAC,EAAE4O,GAAG0m+C,WAAWt1+C,IAAI,WAAW,OAAO,CAAC,EAAE4O,GAAG+l+C,WAAW30+C,IAAI,WAAW,OAAO,CAAC,EAAE4O,GAAG2m+C,WAAWv1+C,IAAI,WAAW,OAAO,CAAC,EAAE4O,GAAG4m+C,WAAWx1+C,IAAI,WAAW,OAAO,CAAC,EAAE4O,GAAG2l+C,0BAA0Bv0+C,IAAI,WAAW,OAAO,CAAC,EAAE4O,GAAGim+C,oBAAoB70+C,IAAI,WAAW,OAAO,CAAC,EAAE4O,GAAGom+C,wBAAwBh1+C,IAAI,WAAW,MAAM,GAAG,EAAE7D,OAAOkU,iBAAiBjB,GAAGR,IAAI,IAAIS,GAAG,SAASpT,GAAGY,KAAKq5+C,aAAa,KAAKr5+C,KAAKs5+C,WAAW,KAAKt5+C,KAAKu5+C,kBAAkB/t+C,GAAG6x9C,iBAAiBr99C,KAAKw5+C,WAAWp6+C,GAAG,IAAI,EAAEwS,GAAG,CAACo28C,KAAK,CAAClk9C,cAAa,GAAIwvhB,OAAO,CAACxvhB,cAAa,GAAIinS,KAAK,CAACjnS,cAAa,GAAI21+C,iBAAiB,CAAC31+C,cAAa,IAAK0O,GAAG9S,UAAUg6+C,YAAY,SAASt6+C,EAAED,EAAEE,EAAEuB,GAAG,IAAIb,EAAEC,KAAKw5+C,WAAWp6+C,GAAGkB,EAAEN,KAAKw5+C,WAAWr6+C,GAAG2B,EAAEd,KAAKw5+C,WAAWn6+C,GAAG,QAAQW,KAAK25+C,UAAU55+C,EAAEO,EAAEQ,MAAOd,KAAK45+C,UAAU75+C,EAAEO,EAAEQ,EAAEF,IAAIZ,KAAK65+C,iBAAiB95+C,EAAEO,EAAElB,EAAEC,EAAEuB,EAAG,EAAE4R,GAAG9S,UAAUo6+C,yBAAyB,WAAW,IAAI,IAAI16+C,EAAE,EAAED,EAAEa,KAAK+5+C,wBAAwB36+C,GAAGC,EAAEW,KAAK+5+C,wBAAwB56+C,GAAGyB,GAAE,EAAGvB,EAAEW,KAAKw5+C,WAAWn5+C,QAAQ,CAAC,IAAIN,GAAE,EAAGC,KAAK05+C,YAAYt6+C,EAAED,EAAEE,EAAEW,KAAKq5+C,gBAAgBr5+C,KAAKs5+C,WAAWn6+C,GAAGqT,GAAG8ghB,OAAOvzhB,GAAE,EAAGa,GAAE,GAAIxB,EAAEW,EAAEV,EAAEF,EAAEA,EAAEa,KAAK+5+C,wBAAwB36+C,GAAGC,EAAEW,KAAK+5+C,wBAAwB56+C,EAAE,CAAC,OAAOyB,CAAC,EAAE4R,GAAG9S,UAAUs6+C,mBAAmB,SAAS56+C,EAAED,EAAEE,EAAEuB,GAAG,OAAK4K,GAAGmy9C,mBAAmBv+9C,EAAED,EAAEE,KAAKW,KAAKu5+C,mBAAmC/t+C,GAAGux9C,kBAAkB599C,EAAEC,EAAEC,GAAGuB,CAAC,EAAE4R,GAAG9S,UAAUm6+C,iBAAiB,SAASz6+C,EAAED,EAAEE,EAAEuB,EAAEb,GAAG,IAAIO,EAAEuC,KAAK2K,OAAO5M,EAAEvB,GAAGmT,GAAGin+C,kBAAkBn5+C,GAAG,IAAIA,EAAE,GAAG,IAAI,IAAIQ,EAAEzB,EAAEyB,EAAEF,EAAEE,GAAGR,EAAE,IAAIN,KAAK45+C,UAAUx6+C,EAAED,EAAEa,KAAKw5+C,WAAW14+C,GAAGf,GAAG,OAAM,EAAG,OAAM,CAAE,EAAEyS,GAAG9S,UAAUi6+C,UAAU,SAASv6+C,EAAED,EAAEE,GAA+D,OAAtDmM,GAAGmy9C,mBAAmBv+9C,EAAED,EAAEE,KAAKW,KAAKu5+C,iBAA0B,EAAE/m+C,GAAG9S,UAAUu6+C,SAAS,SAAS76+C,GAAGY,KAAKq5+C,aAAax2+C,KAAKmjH,IAAI5mH,GAAGA,EAAE,IAAIY,KAAKu5+C,kBAAkB/t+C,GAAGo0O,WAAW5/O,KAAKs5+C,WAAW,IAAI75+C,MAAMO,KAAKw5+C,WAAWn5+C,QAAQ+8H,KAAK,MAAM,IAAIj+H,GAAE,EAAG,GAAGA,EAAEa,KAAK85+C,iCAAiC36+C,GAAG,OAAOa,KAAKk6+C,cAAc,EAAE1n+C,GAAG9S,UAAUq6+C,wBAAwB,SAAS36+C,GAAG,IAAI,IAAID,EAAEC,EAAE,EAAED,EAAEa,KAAKw5+C,WAAWn5+C,QAAQL,KAAKs5+C,WAAWn6+C,KAAKqT,GAAG8ghB,QAAQn0hB,IAAI,OAAOA,CAAC,EAAEqT,GAAG9S,UAAUk6+C,UAAU,SAASx6+C,EAAED,EAAEE,EAAEuB,GAAG,OAAO4K,GAAGux9C,kBAAkB599C,EAAEC,EAAEC,GAAGuB,CAAC,EAAE4R,GAAG9S,UAAUw6+C,aAAa,WAAW,IAAI,IAAI96+C,EAAE,IAAIqO,GAAGtO,EAAE,EAAEA,EAAEa,KAAKw5+C,WAAWn5+C,OAAOlB,IAAIa,KAAKs5+C,WAAWn6+C,KAAKqT,GAAG8ghB,QAAQl0hB,EAAE+lB,IAAInlB,KAAKw5+C,WAAWr6+C,IAAI,OAAOC,EAAEy49C,mBAAmB,EAAErl9C,GAAG9S,UAAUw09C,YAAY,WAAW,MAAM,EAAE,EAAE1h9C,GAAG9S,UAAUon+B,SAAS,WAAW,OAAOt09B,EAAE,EAAEA,GAAGyn+C,SAAS,SAAS76+C,EAAED,GAAG,OAAO,IAAIqT,GAAGpT,GAAG66+C,SAAS96+C,EAAE,EAAEyS,GAAGo28C,KAAK7k9C,IAAI,WAAW,OAAO,CAAC,EAAEyO,GAAG0hhB,OAAOnwhB,IAAI,WAAW,OAAO,CAAC,EAAEyO,GAAGm5R,KAAK5nS,IAAI,WAAW,OAAO,CAAC,EAAEyO,GAAG6n+C,iBAAiBt2+C,IAAI,WAAW,OAAO,EAAE,EAAE7D,OAAOkU,iBAAiBhB,GAAGZ,IAAI,IAAIE,GAAG,WAAW9R,KAAKm6+C,QAAQ,KAAKn6+C,KAAK269C,gBAAgB,KAAK369C,KAAKo6+C,uBAAuB,EAAEp6+C,KAAKm6+C,QAAQ,IAAIlr+C,EAAE,EAAEkD,GAAG,CAACko+C,sBAAsB,CAACv2+C,cAAa,IAAKgO,GAAGpS,UAAU80O,eAAe,WAAW,OAAOx0O,KAAKm6+C,QAAQts3C,QAAQ/7G,GAAGuo+C,sBAAsB,EAAEvo+C,GAAGpS,UAAUm89C,kBAAkB,SAASz89C,GAAGY,KAAK269C,gBAAgBv79C,CAAC,EAAE0S,GAAGpS,UAAU46+C,MAAM,SAASl7+C,GAAG,IAAID,EAAE,IAAIgF,EAAE/E,GAAG,GAAGY,KAAK269C,gBAAgB+B,YAAYv99C,GAAGa,KAAKu6+C,YAAYp7+C,GAAG,OAAO,KAAKa,KAAKm6+C,QAAQh19C,IAAIhmB,EAAE,EAAE2S,GAAGpS,UAAU86+C,OAAO,WAAW,EAAE1o+C,GAAGpS,UAAU+6+C,OAAO,SAASr7+C,EAAED,GAAG,GAAGA,EAAE,IAAI,IAAIE,EAAE,EAAEA,EAAED,EAAEiB,OAAOhB,IAAIW,KAAKs6+C,MAAMl7+C,EAAEC,SAAS,IAAI,IAAIuB,EAAExB,EAAEiB,OAAO,EAAEO,GAAG,EAAEA,IAAIZ,KAAKs6+C,MAAMl7+C,EAAEwB,GAAG,EAAEkR,GAAGpS,UAAU66+C,YAAY,SAASn7+C,GAAG,GAAGY,KAAKm6+C,QAAQv19C,OAAO,EAAE,OAAM,EAAG,IAAIzlB,EAAEa,KAAKm6+C,QAAQh3+C,IAAInD,KAAKm6+C,QAAQv19C,OAAO,GAAG,OAAOxlB,EAAE6pJ,SAAS9pJ,GAAGa,KAAKo6+C,sBAAsB,EAAEto+C,GAAGpS,UAAU6E,SAAS,WAAW,OAAM,IAAKgE,IAAIux9C,iBAAiB959C,KAAKw0O,kBAAkBjwO,UAAU,EAAEuN,GAAGpS,UAAUsh+C,UAAU,WAAW,GAAGhh+C,KAAKm6+C,QAAQv19C,OAAO,EAAE,OAAO,KAAK,IAAIxlB,EAAE,IAAI+E,EAAEnE,KAAKm6+C,QAAQh3+C,IAAI,IAAIhE,EAAEa,KAAKm6+C,QAAQh3+C,IAAInD,KAAKm6+C,QAAQv19C,OAAO,GAAG,GAAGxlB,EAAEmzI,OAAOpzI,GAAG,OAAO,KAAKa,KAAKm6+C,QAAQh19C,IAAI/lB,EAAE,EAAE0S,GAAGpS,UAAUg7+C,yBAAyB,SAASt7+C,GAAGY,KAAKo6+C,uBAAuBh7+C,CAAC,EAAE0S,GAAGpS,UAAUw09C,YAAY,WAAW,MAAM,EAAE,EAAEpi9C,GAAGpS,UAAUon+B,SAAS,WAAW,OAAOh19B,EAAE,EAAEK,GAAGko+C,sBAAsBl3+C,IAAI,WAAW,OAAO,IAAI1D,MAAM,GAAG29H,KAAK,KAAK,EAAE99H,OAAOkU,iBAAiB1B,GAAGK,IAAI,IAAIG,GAAG,WAAW,EAAEG,GAAG,CAACko+C,WAAW,CAAC72+C,cAAa,GAAI82+C,UAAU,CAAC92+C,cAAa,GAAI+2+C,UAAU,CAAC/2+C,cAAa,GAAIu59C,iBAAiB,CAACv59C,cAAa,GAAI87O,UAAU,CAAC97O,cAAa,GAAI0xQ,KAAK,CAAC1xQ,cAAa,IAAKwO,GAAG5S,UAAUw09C,YAAY,WAAW,MAAM,EAAE,EAAE5h9C,GAAG5S,UAAUon+B,SAAS,WAAW,OAAOx09B,EAAE,EAAEA,GAAG+uV,UAAU,SAASjiW,GAAG,OAAO,IAAIA,EAAEyD,KAAKsmC,EAAE,EAAE72B,GAAGhD,UAAU,SAASlQ,GAAG,KAAKA,EAAEyD,KAAKsmC,IAAI/pC,GAAGkT,GAAGqo+C,WAAW,KAAKv7+C,IAAIyD,KAAKsmC,IAAI/pC,GAAGkT,GAAGqo+C,WAAW,OAAOv7+C,CAAC,EAAEkT,GAAGq8N,MAAM,WAAW,GAAG,IAAIvuO,UAAUC,OAAO,CAAC,IAAIjB,EAAEgB,UAAU,GAAG,OAAOyC,KAAK0xH,MAAMn1H,EAAE4D,EAAE5D,EAAE6E,EAAE,CAAC,GAAG,IAAI7D,UAAUC,OAAO,CAAC,IAAIlB,EAAEiB,UAAU,GAAGf,EAAEe,UAAU,GAAGQ,EAAEvB,EAAE4E,EAAE9E,EAAE8E,EAAElE,EAAEV,EAAE2D,EAAE7D,EAAE6D,EAAE,OAAOH,KAAK0xH,MAAMx0H,EAAEa,EAAE,CAAC,EAAE0R,GAAGwo+C,QAAQ,SAAS17+C,EAAED,EAAEE,GAAG,IAAIuB,EAAExB,EAAE6E,EAAE9E,EAAE8E,EAAElE,EAAEX,EAAE4D,EAAE7D,EAAE6D,EAAE,OAAOpC,GAAGvB,EAAE4E,EAAE9E,EAAE8E,GAAGlE,GAAGV,EAAE2D,EAAE7D,EAAE6D,GAAG,CAAC,EAAEsP,GAAGyo+C,SAAS,SAAS37+C,EAAED,EAAEE,GAAG,IAAIuB,EAAExB,EAAE6E,EAAE9E,EAAE8E,EAAElE,EAAEX,EAAE4D,EAAE7D,EAAE6D,EAAE,OAAOpC,GAAGvB,EAAE4E,EAAE9E,EAAE8E,GAAGlE,GAAGV,EAAE2D,EAAE7D,EAAE6D,GAAG,CAAC,EAAEsP,GAAG0o+C,cAAc,SAAS57+C,EAAED,EAAEE,GAAG,IAAIuB,EAAE0R,GAAGq8N,MAAMxvO,EAAEC,GAAGW,EAAEuS,GAAGq8N,MAAMxvO,EAAEE,GAAG,OAAOwD,KAAKmjH,IAAIjmH,EAAEa,EAAE,EAAE0R,GAAG2o+C,kBAAkB,SAAS77+C,GAAG,GAAGA,EAAE,EAAE,CAAC,KAAKA,EAAE,GAAGA,GAAGkT,GAAGqo+C,WAAWv7+C,GAAGkT,GAAGqo+C,aAAav7+C,EAAE,EAAE,KAAK,CAAC,KAAKA,GAAGkT,GAAGqo+C,YAAYv7+C,GAAGkT,GAAGqo+C,WAAWv7+C,EAAE,IAAIA,EAAE,EAAE,CAAC,OAAOA,CAAC,EAAEkT,GAAG4o+C,aAAa,SAAS97+C,EAAED,EAAEE,GAAG,IAAIuB,EAAE0R,GAAGq8N,MAAMxvO,EAAEC,GAAGW,EAAEuS,GAAGq8N,MAAMxvO,EAAEE,GAAG,OAAOiT,GAAGi2hB,KAAK3niB,EAAEb,EAAE,EAAEuS,GAAGi2hB,KAAK,SAASnpiB,EAAED,GAAG,IAAIE,EAAE,KAAK,OAAOA,EAAED,EAAED,EAAEA,EAAEC,EAAEA,EAAED,GAAG0D,KAAKsmC,KAAK9pC,EAAE,EAAEwD,KAAKsmC,GAAG9pC,GAAGA,CAAC,EAAEiT,GAAG6uV,UAAU,SAAS/hW,GAAG,OAAOA,EAAEyD,KAAKsmC,GAAG,GAAG,EAAE72B,GAAG6o+C,QAAQ,SAAS/7+C,EAAED,GAAG,IAAIE,EAAEwD,KAAK4wH,IAAIt0H,EAAEC,GAAG,OAAOC,EAAE,EAAEiT,GAAG+q9C,iBAAiBh+9C,EAAE,EAAEiT,GAAGstO,UAAUttO,GAAGkjQ,IAAI,EAAEljQ,GAAG8o+C,qBAAqB,SAASh8+C,EAAED,EAAEE,GAAG,IAAIuB,EAAE0R,GAAGq8N,MAAMxvO,EAAEC,GAAGW,EAAEuS,GAAGq8N,MAAMxvO,EAAEE,GAAGuB,EAAE,OAAOb,IAAI8C,KAAKsmC,GAAGppC,EAAEuS,GAAGqo+C,WAAW56+C,EAAE8C,KAAKsmC,GAAGppC,EAAEuS,GAAGqo+C,WAAW56+C,CAAC,EAAE0S,GAAGko+C,WAAWx3+C,IAAI,WAAW,OAAO,EAAEN,KAAKsmC,EAAE,EAAE12B,GAAGmo+C,UAAUz3+C,IAAI,WAAW,OAAON,KAAKsmC,GAAG,CAAC,EAAE12B,GAAGoo+C,UAAU13+C,IAAI,WAAW,OAAON,KAAKsmC,GAAG,CAAC,EAAE12B,GAAG4q9C,iBAAiBl69C,IAAI,WAAW,OAAOqI,GAAG6x9C,gBAAgB,EAAE5q9C,GAAGmtO,UAAUz8O,IAAI,WAAW,OAAOqI,GAAGo0O,SAAS,EAAEntO,GAAG+iQ,KAAKryQ,IAAI,WAAW,OAAOqI,GAAGsv9C,SAAS,EAAEx79C,OAAOkU,iBAAiBlB,GAAGG,IAAI,IAAIM,GAAG,SAAS3T,IAAIY,KAAKq7+C,sBAAsB,EAAEr7+C,KAAKs7+C,oBAAoB,KAAKt7+C,KAAKu7+C,wBAAwB,EAAEv7+C,KAAKw7+C,SAAS,KAAKx7+C,KAAKwqX,UAAU,EAAExqX,KAAK269C,gBAAgB,KAAK369C,KAAKy7+C,WAAW,KAAKz7+C,KAAK07+C,IAAI,KAAK17+C,KAAK27+C,IAAI,KAAK37+C,KAAK47+C,IAAI,KAAK57+C,KAAK67+C,IAAI,KAAK77+C,KAAK87+C,MAAM,IAAI1q+C,GAAGpR,KAAK+7+C,MAAM,IAAI3q+C,GAAGpR,KAAKg8+C,SAAS,IAAI5q+C,GAAGpR,KAAKi8+C,SAAS,IAAI7q+C,GAAGpR,KAAKk8+C,MAAM,EAAEl8+C,KAAKm8+C,wBAAuB,EAAG,IAAIh9+C,EAAEiB,UAAU,GAAGf,EAAEe,UAAU,GAAGQ,EAAER,UAAU,GAAGJ,KAAK269C,gBAAgBx79C,EAAEa,KAAKy7+C,WAAWp8+C,EAAEW,KAAK07+C,IAAI,IAAIxw+C,GAAGlL,KAAKs7+C,oBAAoBz4+C,KAAKsmC,GAAG,EAAE9pC,EAAE45+C,sBAAsB55+C,EAAE45+C,uBAAuB,GAAG55+C,EAAEy5+C,iBAAiBvm+C,GAAGul+C,aAAa93+C,KAAKu7+C,wBAAwBn8+C,EAAEg9+C,4BAA4Bp8+C,KAAK0wD,KAAK9vD,EAAE,EAAE6S,GAAG,CAAC4o+C,iCAAiC,CAACv4+C,cAAa,GAAIw4+C,wCAAwC,CAACx4+C,cAAa,GAAIy4+C,kCAAkC,CAACz4+C,cAAa,GAAIs4+C,2BAA2B,CAACt4+C,cAAa,IAAKiP,GAAGrT,UAAU88+C,eAAe,SAASp9+C,EAAED,GAAG,GAAGa,KAAK27+C,IAAI37+C,KAAK47+C,IAAI57+C,KAAK47+C,IAAI57+C,KAAK67+C,IAAI77+C,KAAK67+C,IAAIz8+C,EAAEY,KAAK87+C,MAAMlrF,eAAe5w5C,KAAK27+C,IAAI37+C,KAAK47+C,KAAK57+C,KAAKy8+C,qBAAqBz8+C,KAAK87+C,MAAM97+C,KAAKk8+C,MAAMl8+C,KAAKwqX,UAAUxqX,KAAKg8+C,UAAUh8+C,KAAK+7+C,MAAMnrF,eAAe5w5C,KAAK47+C,IAAI57+C,KAAK67+C,KAAK77+C,KAAKy8+C,qBAAqBz8+C,KAAK+7+C,MAAM/7+C,KAAKk8+C,MAAMl8+C,KAAKwqX,UAAUxqX,KAAKi8+C,UAAUj8+C,KAAK47+C,IAAIrp2C,OAAOvyI,KAAK67+C,KAAK,OAAO,KAAK,IAAIx8+C,EAAEmM,GAAGmy9C,mBAAmB399C,KAAK27+C,IAAI37+C,KAAK47+C,IAAI57+C,KAAK67+C,KAAKj7+C,EAAEvB,IAAImM,GAAGo0O,WAAW5/O,KAAKk8+C,QAAQ9z+C,GAAG8qhB,MAAM7zhB,IAAImM,GAAG6x9C,kBAAkBr99C,KAAKk8+C,QAAQ9z+C,GAAGgrhB,MAAM,IAAI/zhB,EAAEW,KAAK08+C,aAAav9+C,GAAGyB,EAAEZ,KAAK28+C,eAAet9+C,EAAEF,GAAGa,KAAK48+C,cAAcv9+C,EAAEF,EAAE,EAAE4T,GAAGrT,UAAUm9+C,cAAc,SAASz9+C,EAAED,GAAG,IAAIE,EAAE,IAAI+R,GAAGhS,EAAED,GAAGyB,EAAE,IAAIwQ,GAAGpR,KAAKy8+C,qBAAqBp9+C,EAAE+I,GAAG8qhB,KAAKlzhB,KAAKwqX,UAAU5pX,GAAG,IAAIb,EAAE,IAAIqR,GAAGpR,KAAKy8+C,qBAAqBp9+C,EAAE+I,GAAGgrhB,MAAMpzhB,KAAKwqX,UAAUzqX,GAAG,IAAIO,EAAEnB,EAAE8E,EAAE7E,EAAE6E,EAAEnD,EAAE3B,EAAE6D,EAAE5D,EAAE4D,EAAEhC,EAAE6B,KAAK0xH,MAAMzzH,EAAER,GAAG,OAAON,KAAKy7+C,WAAW7C,kBAAkB,KAAKrm+C,GAAGql+C,UAAU53+C,KAAKw7+C,SAASlB,MAAM15+C,EAAEy/O,IAAIrgP,KAAK88+C,aAAa39+C,EAAE6B,EAAE6B,KAAKsmC,GAAG,EAAEnoC,EAAE6B,KAAKsmC,GAAG,EAAE39B,GAAGo0O,UAAU5/O,KAAKwqX,WAAWxqX,KAAKw7+C,SAASlB,MAAMv6+C,EAAEsgP,IAAI,MAAM,KAAK9tO,GAAGim+C,SAASx4+C,KAAKw7+C,SAASlB,MAAM15+C,EAAEy/O,IAAIrgP,KAAKw7+C,SAASlB,MAAMv6+C,EAAEsgP,IAAI,MAAM,KAAK9tO,GAAGkm+C,WAAW,IAAIp2+C,EAAE,IAAI8B,EAAE9B,EAAE4B,EAAEpB,KAAKmjH,IAAIhmH,KAAKwqX,WAAW3nX,KAAKuxH,IAAIpzH,GAAGqB,EAAEW,EAAEH,KAAKmjH,IAAIhmH,KAAKwqX,WAAW3nX,KAAK4wH,IAAIzyH,GAAG,IAAIwB,EAAE,IAAI2B,EAAEvD,EAAEy/O,GAAGp8O,EAAE5B,EAAE4B,EAAErD,EAAEy/O,GAAGr9O,EAAEX,EAAEW,GAAGnC,EAAE,IAAIsD,EAAEpE,EAAEsgP,GAAGp8O,EAAE5B,EAAE4B,EAAElE,EAAEsgP,GAAGr9O,EAAEX,EAAEW,GAAGhD,KAAKw7+C,SAASlB,MAAM93+C,GAAGxC,KAAKw7+C,SAASlB,MAAMz5+C,GAAG,EAAEkS,GAAGrT,UAAU80O,eAAe,WAAW,OAAOx0O,KAAKw7+C,SAAShnwC,gBAAgB,EAAEzhO,GAAGrT,UAAUq9+C,aAAa,SAAS39+C,EAAED,EAAEE,EAAEuB,GAAG,IAAIb,GAAE,EAAGO,EAAE,KAAK,IAAIA,EAAEoD,EAAEw5L,aAAa/9L,EAAE04H,GAAG14H,EAAEkhP,GAAGhhP,EAAEw4H,GAAGx4H,EAAEghP,KAAKz/O,GAAG,EAAE,EAAEN,EAAE2oJ,SAAS7pJ,GAAGyD,KAAKmjH,IAAIplH,IAAIZ,KAAKy7+C,WAAWvC,kBAAkBn5+C,GAAE,EAAG,CAAC,MAAMX,GAAG,KAAKA,aAAa2F,GAAG,MAAM3F,EAAEkB,EAAE,IAAI6D,EAAE,EAAE,GAAGpE,GAAE,CAAE,CAACA,EAAEC,KAAKw7+C,SAASlB,MAAMh6+C,GAAGN,KAAKg9+C,oBAAoB79+C,EAAEE,EAAEuB,EAAEZ,KAAKy7+C,WAAWvC,gBAAgB,EAAEnm+C,GAAGrT,UAAUu9+C,gBAAgB,SAAS79+C,EAAED,EAAEE,EAAEuB,EAAEb,GAAG,IAAIO,EAAEnB,EAAE8E,EAAE7E,EAAE6E,EAAEnD,EAAE3B,EAAE6D,EAAE5D,EAAE4D,EAAEhC,EAAE6B,KAAK0xH,MAAMzzH,EAAER,GAAG+B,EAAEhD,EAAE4E,EAAE7E,EAAE6E,EAAEzB,EAAEnD,EAAE2D,EAAE5D,EAAE4D,EAAEnC,EAAEgC,KAAK0xH,MAAM/xH,EAAEH,GAAGzB,IAAI4K,GAAGo0O,UAAU5+O,GAAGH,IAAIG,GAAG,EAAE6B,KAAKsmC,IAAInoC,GAAGH,IAAIG,GAAG,EAAE6B,KAAKsmC,IAAInpC,KAAKw7+C,SAASlB,MAAMn7+C,GAAGa,KAAK88+C,aAAa19+C,EAAE4B,EAAEH,EAAED,EAAEb,GAAGC,KAAKw7+C,SAASlB,MAAMj7+C,EAAE,EAAE0T,GAAGrT,UAAUi9+C,eAAe,SAASv9+C,EAAED,GAAG,GAAGa,KAAKg8+C,SAAS37vC,GAAGp3F,SAASjpJ,KAAKi8+C,SAASpk3C,IAAI73H,KAAKwqX,UAAUz3W,GAAGsp+C,iCAAiC,OAAOr8+C,KAAKw7+C,SAASlB,MAAMt6+C,KAAKg8+C,SAAS37vC,IAAI,KAAKrgP,KAAKy7+C,WAAW3C,iBAAiBvm+C,GAAGmm+C,WAAW14+C,KAAK+8+C,aAAa/8+C,KAAK47+C,IAAI57+C,KAAKg8+C,SAASh8+C,KAAKi8+C,SAASj8+C,KAAKwqX,WAAWxqX,KAAKy7+C,WAAW3C,iBAAiBvm+C,GAAGom+C,WAAW34+C,KAAKk9+C,aAAal9+C,KAAKg8+C,SAASh8+C,KAAKi8+C,WAAW98+C,GAAGa,KAAKw7+C,SAASlB,MAAMt6+C,KAAKg8+C,SAAS37vC,IAAIrgP,KAAKi9+C,gBAAgBj9+C,KAAK47+C,IAAI57+C,KAAKg8+C,SAAS37vC,GAAGrgP,KAAKi8+C,SAASpk3C,GAAGz4H,EAAEY,KAAKwqX,WAAWxqX,KAAKw7+C,SAASlB,MAAMt6+C,KAAKi8+C,SAASpk3C,IAAI,EAAE9kH,GAAGrT,UAAUy9+C,aAAa,SAAS/9+C,GAAGY,KAAKw7+C,SAASlB,MAAM,IAAIn2+C,EAAE/E,EAAE6E,EAAEjE,KAAKwqX,UAAUprX,EAAE4D,EAAEhD,KAAKwqX,YAAYxqX,KAAKw7+C,SAASlB,MAAM,IAAIn2+C,EAAE/E,EAAE6E,EAAEjE,KAAKwqX,UAAUprX,EAAE4D,EAAEhD,KAAKwqX,YAAYxqX,KAAKw7+C,SAASlB,MAAM,IAAIn2+C,EAAE/E,EAAE6E,EAAEjE,KAAKwqX,UAAUprX,EAAE4D,EAAEhD,KAAKwqX,YAAYxqX,KAAKw7+C,SAASlB,MAAM,IAAIn2+C,EAAE/E,EAAE6E,EAAEjE,KAAKwqX,UAAUprX,EAAE4D,EAAEhD,KAAKwqX,YAAYxqX,KAAKw7+C,SAASxa,WAAW,EAAEju9C,GAAGrT,UAAU09+C,YAAY,SAASh++C,EAAED,GAAGa,KAAKw7+C,SAASf,OAAOr7+C,EAAED,EAAE,EAAE4T,GAAGrT,UAAU29+C,gBAAgB,WAAWr9+C,KAAKw7+C,SAASlB,MAAMt6+C,KAAKi8+C,SAASpk3C,GAAG,EAAE9kH,GAAGrT,UAAU49+C,eAAe,WAAWt9+C,KAAKw7+C,SAASlB,MAAMt6+C,KAAKi8+C,SAAS57vC,GAAG,EAAEttO,GAAGrT,UAAU69+C,iBAAiB,SAASn++C,EAAED,EAAEE,GAAGW,KAAK47+C,IAAIx8+C,EAAEY,KAAK67+C,IAAI18+C,EAAEa,KAAKk8+C,MAAM78+C,EAAEW,KAAK+7+C,MAAMnrF,eAAexx5C,EAAED,GAAGa,KAAKy8+C,qBAAqBz8+C,KAAK+7+C,MAAM18+C,EAAEW,KAAKwqX,UAAUxqX,KAAKi8+C,SAAS,EAAElp+C,GAAGrT,UAAUs9+C,oBAAoB,SAAS59+C,EAAED,EAAEE,EAAEuB,GAAG,IAAIb,EAAEC,KAAK87+C,MAAMz7vC,GAAG//O,EAAEgS,GAAGq8N,MAAM5uO,EAAEC,KAAK87+C,MAAMjk3C,IAAI/2H,EAAEwR,GAAG8o+C,qBAAqBp7+C,KAAK87+C,MAAMjk3C,GAAG93H,EAAEC,KAAK+7+C,MAAM17vC,IAAI,EAAEr/O,EAAEsR,GAAGhD,UAAUhP,EAAEQ,GAAGuB,EAAEiQ,GAAGhD,UAAUtO,EAAE6B,KAAKsmC,IAAI3mC,EAAE5B,EAAEvB,EAAEwB,EAAExB,EAAEmD,EAAEK,KAAKmjH,IAAInjH,KAAK4wH,IAAI3yH,IAAIgC,EAAE/C,EAAEkE,EAAEzB,EAAEK,KAAKuxH,IAAI/xH,GAAGO,EAAE7C,EAAEiD,EAAER,EAAEK,KAAK4wH,IAAIpxH,GAAGK,EAAE,IAAIyB,EAAErB,EAAEF,GAAGT,EAAE,IAAIiP,GAAGrR,EAAE2C,GAAGC,EAAER,EAAEyz+C,iBAAiB,EAAE/0+C,GAAGmC,EAAEb,EAAEyz+C,iBAAiB,GAAG/0+C,GAAGb,KAAKk8+C,QAAQ9z+C,GAAG8qhB,MAAMlzhB,KAAKw7+C,SAASlB,MAAM33+C,GAAG3C,KAAKw7+C,SAASlB,MAAMt3+C,KAAKhD,KAAKw7+C,SAASlB,MAAMt3+C,GAAGhD,KAAKw7+C,SAASlB,MAAM33+C,GAAG,EAAEoQ,GAAGrT,UAAU+8+C,qBAAqB,SAASr9+C,EAAED,EAAEE,EAAEuB,GAAG,IAAIb,EAAEZ,IAAIiJ,GAAG8qhB,KAAK,GAAG,EAAE5yhB,EAAElB,EAAEihP,GAAGp8O,EAAE7E,EAAEy4H,GAAG5zH,EAAEnD,EAAE1B,EAAEihP,GAAGr9O,EAAE5D,EAAEy4H,GAAG70H,EAAEhC,EAAE6B,KAAK4yF,KAAKn1F,EAAEA,EAAEQ,EAAEA,GAAGuB,EAAEtC,EAAEV,EAAEiB,EAAEU,EAAEwB,EAAEzC,EAAEV,EAAEyB,EAAEE,EAAEJ,EAAEi3H,GAAG5zH,EAAE7E,EAAEy4H,GAAG5zH,EAAEzB,EAAE5B,EAAEi3H,GAAG70H,EAAE5D,EAAEy4H,GAAG70H,EAAEX,EAAEzB,EAAEy/O,GAAGp8O,EAAE7E,EAAEihP,GAAGp8O,EAAEzB,EAAE5B,EAAEy/O,GAAGr9O,EAAE5D,EAAEihP,GAAGr9O,EAAEX,CAAC,EAAE0Q,GAAGrT,UAAUo9+C,aAAa,SAAS19+C,EAAED,EAAEE,EAAEuB,EAAEb,GAAG,IAAIO,EAAEM,IAAI4K,GAAGo0O,WAAW,EAAE,EAAE9+O,EAAE+B,KAAKmjH,IAAI7mH,EAAEE,GAAG2B,EAAE6B,KAAK2K,MAAM1M,EAAEd,KAAKs7+C,oBAAoB,IAAI,GAAGt6+C,EAAE,EAAE,OAAO,KAAK,IAAI,IAAIqB,EAAEvB,EAAEE,EAAEwB,EAAE,EAAE3B,EAAE,IAAIsD,EAAE3B,EAAE1B,GAAG,CAAC,IAAIgC,EAAE3D,EAAEmB,EAAEkC,EAAE3B,EAAEoD,EAAE7E,EAAE6E,EAAElE,EAAE8C,KAAKuxH,IAAItxH,GAAGjC,EAAEmC,EAAE5D,EAAE4D,EAAEjD,EAAE8C,KAAK4wH,IAAI3wH,GAAG9C,KAAKw7+C,SAASlB,MAAMz5+C,GAAG2B,GAAGH,CAAC,CAAC,EAAE0Q,GAAGrT,UAAUk9+C,cAAc,SAASx9+C,EAAED,GAAG,GAAGa,KAAK07+C,IAAIngB,oBAAoBv79C,KAAKg8+C,SAASnk3C,GAAG73H,KAAKg8+C,SAAS37vC,GAAGrgP,KAAKi8+C,SAASpk3C,GAAG73H,KAAKi8+C,SAAS57vC,IAAIrgP,KAAK07+C,IAAI9f,kBAAkB579C,KAAKw7+C,SAASlB,MAAMt6+C,KAAK07+C,IAAI3lL,gBAAgB,SAAS,GAAG/1zC,KAAKm8+C,wBAAuB,EAAGn8+C,KAAKg8+C,SAAS37vC,GAAGp3F,SAASjpJ,KAAKi8+C,SAASpk3C,IAAI73H,KAAKwqX,UAAUz3W,GAAGup+C,wCAAwCt8+C,KAAKw7+C,SAASlB,MAAMt6+C,KAAKg8+C,SAAS37vC,QAAQ,CAAC,GAAGrgP,KAAKw7+C,SAASlB,MAAMt6+C,KAAKg8+C,SAAS37vC,IAAIrgP,KAAKu7+C,wBAAwB,EAAE,CAAC,IAAIl8+C,EAAE,IAAI8E,GAAGnE,KAAKu7+C,wBAAwBv7+C,KAAKg8+C,SAAS37vC,GAAGp8O,EAAEjE,KAAK47+C,IAAI33+C,IAAIjE,KAAKu7+C,wBAAwB,IAAIv7+C,KAAKu7+C,wBAAwBv7+C,KAAKg8+C,SAAS37vC,GAAGr9O,EAAEhD,KAAK47+C,IAAI54+C,IAAIhD,KAAKu7+C,wBAAwB,IAAIv7+C,KAAKw7+C,SAASlB,MAAMj7+C,GAAG,IAAIuB,EAAE,IAAIuD,GAAGnE,KAAKu7+C,wBAAwBv7+C,KAAKi8+C,SAASpk3C,GAAG5zH,EAAEjE,KAAK47+C,IAAI33+C,IAAIjE,KAAKu7+C,wBAAwB,IAAIv7+C,KAAKu7+C,wBAAwBv7+C,KAAKi8+C,SAASpk3C,GAAG70H,EAAEhD,KAAK47+C,IAAI54+C,IAAIhD,KAAKu7+C,wBAAwB,IAAIv7+C,KAAKw7+C,SAASlB,MAAM15+C,EAAE,MAAMZ,KAAKw7+C,SAASlB,MAAMt6+C,KAAK47+C,KAAK57+C,KAAKw7+C,SAASlB,MAAMt6+C,KAAKi8+C,SAASpk3C,GAAG,CAAC,EAAE9kH,GAAGrT,UAAU89+C,aAAa,SAASp++C,GAAG,IAAID,EAAE,IAAIgF,EAAE/E,EAAE6E,EAAEjE,KAAKwqX,UAAUprX,EAAE4D,GAAGhD,KAAKw7+C,SAASlB,MAAMn7+C,GAAGa,KAAK88+C,aAAa19+C,EAAE,EAAE,EAAEyD,KAAKsmC,IAAI,EAAEnpC,KAAKwqX,WAAWxqX,KAAKw7+C,SAASxa,WAAW,EAAEju9C,GAAGrT,UAAUw9+C,aAAa,SAAS99+C,EAAED,GAAGa,KAAKw7+C,SAASlB,MAAMl7+C,EAAEihP,IAAIrgP,KAAKw7+C,SAASlB,MAAMn7+C,EAAE04H,GAAG,EAAE9kH,GAAGrT,UAAUgxD,KAAK,SAAStxD,GAAGY,KAAKwqX,UAAUprX,EAAEY,KAAKq7+C,sBAAsBj8+C,GAAG,EAAEyD,KAAKuxH,IAAIp0H,KAAKs7+C,oBAAoB,IAAIt7+C,KAAKw7+C,SAAS,IAAI1p+C,GAAG9R,KAAKw7+C,SAAS3f,kBAAkB779C,KAAK269C,iBAAiB369C,KAAKw7+C,SAASd,yBAAyBt7+C,EAAE2T,GAAGwp+C,kCAAkC,EAAExp+C,GAAGrT,UAAUg9+C,aAAa,SAASt9+C,GAAGY,KAAK07+C,IAAIngB,oBAAoBv79C,KAAK27+C,IAAI37+C,KAAK47+C,IAAI57+C,KAAK47+C,IAAI57+C,KAAK67+C,KAAK77+C,KAAK07+C,IAAIjgB,sBAAsB,IAAIz79C,KAAKy7+C,WAAW3C,iBAAiBvm+C,GAAGom+C,YAAY34+C,KAAKy7+C,WAAW3C,iBAAiBvm+C,GAAGmm+C,YAAYt5+C,GAAGY,KAAKw7+C,SAASlB,MAAMt6+C,KAAKg8+C,SAAS37vC,IAAIrgP,KAAKw7+C,SAASlB,MAAMt6+C,KAAKi8+C,SAASpk3C,KAAK73H,KAAKi9+C,gBAAgBj9+C,KAAK47+C,IAAI57+C,KAAKg8+C,SAAS37vC,GAAGrgP,KAAKi8+C,SAASpk3C,GAAGrsH,GAAGo0O,UAAU5/O,KAAKwqX,WAAW,EAAEz3W,GAAGrT,UAAUsh+C,UAAU,WAAWhh+C,KAAKw7+C,SAASxa,WAAW,EAAEju9C,GAAGrT,UAAU+9+C,sBAAsB,WAAW,OAAOz9+C,KAAKm8+C,sBAAsB,EAAEpp+C,GAAGrT,UAAUw09C,YAAY,WAAW,MAAM,EAAE,EAAEnh9C,GAAGrT,UAAUon+B,SAAS,WAAW,OAAO/z9B,EAAE,EAAEU,GAAG4o+C,iCAAiCl5+C,IAAI,WAAW,MAAM,IAAI,EAAEsQ,GAAG6o+C,wCAAwCn5+C,IAAI,WAAW,MAAM,IAAI,EAAEsQ,GAAG8o+C,kCAAkCp5+C,IAAI,WAAW,OAAO,IAAI,EAAEsQ,GAAG2o+C,2BAA2Bj5+C,IAAI,WAAW,OAAO,EAAE,EAAE7D,OAAOkU,iBAAiBT,GAAGU,IAAI,IAAIS,GAAG,WAAWlU,KAAKwqX,UAAU,EAAExqX,KAAK269C,gBAAgB,KAAK369C,KAAKy7+C,WAAW,KAAK,IAAIr8+C,EAAEgB,UAAU,GAAGjB,EAAEiB,UAAU,GAAGJ,KAAK269C,gBAAgBv79C,EAAEY,KAAKy7+C,WAAWt8+C,CAAC,EAAE+U,GAAGxU,UAAUg++C,eAAe,SAASt++C,EAAED,GAAG,GAAGa,KAAKwqX,UAAUrrX,EAAE,IAAIA,EAAE,OAAO,KAAK,IAAIE,EAAEF,EAAE,EAAEyB,EAAEiC,KAAKmjH,IAAI7mH,GAAGY,EAAEC,KAAK29+C,UAAU/8+C,GAAGxB,EAAEiB,QAAQ,EAAEL,KAAK49+C,kBAAkBx++C,EAAE,GAAGW,GAAGC,KAAK69+C,mBAAmBz++C,EAAEC,EAAEU,GAAG,IAAIO,EAAEP,EAAEy0O,iBAAiB,OAAOn1O,GAAGgP,GAAGisD,QAAQh6D,GAAGA,CAAC,EAAE4T,GAAGxU,UAAUo++C,8BAA8B,SAAS1++C,EAAED,EAAEE,GAAG,IAAIuB,EAAEZ,KAAK+9+C,kBAAkB/9+C,KAAKwqX,WAAW,GAAGrrX,EAAE,CAACE,EAAE+9+C,YAAYh++C,GAAE,GAAI,IAAIW,EAAEyS,GAAGyn+C,SAAS76+C,GAAGwB,GAAGN,EAAEP,EAAEM,OAAO,EAAEhB,EAAEk++C,iBAAiBx9+C,EAAEO,GAAGP,EAAEO,EAAE,GAAG8H,GAAG8qhB,MAAM7zhB,EAAEg++C,kBAAkB,IAAI,IAAIv8+C,EAAER,EAAE,EAAEQ,GAAG,EAAEA,IAAIzB,EAAEm9+C,eAAez8+C,EAAEe,IAAG,EAAG,KAAK,CAACzB,EAAE+9+C,YAAYh++C,GAAE,GAAI,IAAI4B,EAAEwR,GAAGyn+C,SAAS76+C,EAAEwB,GAAGyB,EAAErB,EAAEX,OAAO,EAAEhB,EAAEk++C,iBAAiBv8+C,EAAE,GAAGA,EAAE,GAAGoH,GAAG8qhB,MAAM7zhB,EAAEg++C,kBAAkB,IAAI,IAAI76+C,EAAE,EAAEA,GAAGH,EAAEG,IAAInD,EAAEm9+C,eAAex7+C,EAAEwB,IAAG,EAAG,CAACnD,EAAEi++C,iBAAiBj++C,EAAE2h+C,WAAW,EAAE9s9C,GAAGxU,UAAUs++C,uBAAuB,SAAS5++C,EAAED,EAAEE,GAAG,IAAIuB,EAAEZ,KAAK+9+C,kBAAkB/9+C,KAAKwqX,WAAWrrX,IAAIiJ,GAAGgrhB,QAAQxyhB,GAAGA,GAAG,IAAIb,EAAEyS,GAAGyn+C,SAAS76+C,EAAEwB,GAAGN,EAAEP,EAAEM,OAAO,EAAEhB,EAAEk++C,iBAAiBx9+C,EAAEO,EAAE,GAAGP,EAAE,GAAGZ,GAAG,IAAI,IAAI2B,EAAE,EAAEA,GAAGR,EAAEQ,IAAI,CAAC,IAAIE,EAAE,IAAIF,EAAEzB,EAAEm9+C,eAAez8+C,EAAEe,GAAGE,EAAE,CAAC3B,EAAE2h+C,WAAW,EAAE9s9C,GAAGxU,UAAUu++C,uBAAuB,SAAS7++C,EAAED,GAAG,IAAIE,EAAEW,KAAK+9+C,kBAAkB/9+C,KAAKwqX,WAAW5pX,EAAE4R,GAAGyn+C,SAAS76+C,EAAEC,GAAGU,EAAEa,EAAEP,OAAO,EAAElB,EAAEo++C,iBAAiB38+C,EAAE,GAAGA,EAAE,GAAGwH,GAAG8qhB,MAAM,IAAI,IAAI5yhB,EAAE,EAAEA,GAAGP,EAAEO,IAAInB,EAAEq9+C,eAAe57+C,EAAEN,IAAG,GAAInB,EAAEm++C,iBAAiBn++C,EAAE09+C,cAAcj8+C,EAAEb,EAAE,GAAGa,EAAEb,IAAI,IAAIe,EAAE0R,GAAGyn+C,SAAS76+C,GAAGC,GAAG2B,EAAEF,EAAET,OAAO,EAAElB,EAAEo++C,iBAAiBz8+C,EAAEE,GAAGF,EAAEE,EAAE,GAAGoH,GAAG8qhB,MAAM,IAAI,IAAI7whB,EAAErB,EAAE,EAAEqB,GAAG,EAAEA,IAAIlD,EAAEq9+C,eAAe17+C,EAAEuB,IAAG,GAAIlD,EAAEm++C,iBAAiBn++C,EAAE09+C,cAAc/7+C,EAAE,GAAGA,EAAE,IAAI3B,EAAE6h+C,WAAW,EAAE9s9C,GAAGxU,UAAUk++C,kBAAkB,SAASx++C,EAAED,GAAG,OAAOa,KAAKy7+C,WAAW7C,kBAAkB,KAAKrm+C,GAAGql+C,UAAUz4+C,EAAEq++C,aAAap++C,GAAG,MAAM,KAAKmT,GAAGkm+C,WAAWt5+C,EAAEg++C,aAAa/9+C,GAAG,EAAE8U,GAAGxU,UAAUw++C,aAAa,SAAS9++C,EAAED,GAAG,GAAGa,KAAKwqX,UAAUrrX,EAAEA,EAAE,IAAIa,KAAKy7+C,WAAW5C,gBAAgB,OAAO,KAAK,GAAG,IAAI15+C,EAAE,OAAO,KAAK,IAAIE,EAAEwD,KAAKmjH,IAAI7mH,GAAGyB,EAAEZ,KAAK29+C,UAAUt++C,GAAG,GAAGD,EAAEiB,QAAQ,EAAEL,KAAK49+C,kBAAkBx++C,EAAE,GAAGwB,QAAQ,GAAGZ,KAAKy7+C,WAAW5C,gBAAgB,CAAC,IAAI94+C,EAAEZ,EAAE,EAAEa,KAAK89+C,8BAA8B1++C,EAAEW,EAAEa,EAAE,MAAMZ,KAAKi++C,uBAAuB7++C,EAAEwB,GAAG,OAAOA,EAAE4zO,gBAAgB,EAAEtgO,GAAGxU,UAAUy++C,oBAAoB,WAAW,OAAOn++C,KAAKy7+C,UAAU,EAAEvn+C,GAAGxU,UAAUq++C,kBAAkB,SAAS3++C,GAAG,OAAOA,EAAEY,KAAKy7+C,WAAWzC,mBAAmB,EAAE9k+C,GAAGxU,UAAU0++C,aAAa,SAASh/+C,EAAED,EAAEE,GAAG,GAAGW,KAAKwqX,UAAUnrX,EAAED,EAAEiB,QAAQ,EAAE,OAAOL,KAAKk++C,aAAa9++C,EAAEC,GAAG,GAAG,IAAIA,EAAE,OAAO6U,GAAGmq+C,gBAAgBj/+C,GAAG,IAAIwB,EAAEZ,KAAK29+C,UAAUt++C,GAAG,OAAOW,KAAKg++C,uBAAuB5++C,EAAED,EAAEyB,GAAGA,EAAE4zO,gBAAgB,EAAEtgO,GAAGxU,UAAUm++C,mBAAmB,SAASz++C,EAAED,EAAEE,GAAG,IAAIuB,EAAEZ,KAAK+9+C,kBAAkB/9+C,KAAKwqX,WAAW,GAAGrrX,EAAE,CAAC,IAAIY,EAAEyS,GAAGyn+C,SAAS76+C,GAAGwB,GAAGN,EAAEP,EAAEM,OAAO,EAAEhB,EAAEk++C,iBAAiBx9+C,EAAEO,GAAGP,EAAEO,EAAE,GAAG8H,GAAG8qhB,MAAM7zhB,EAAEg++C,kBAAkB,IAAI,IAAIv8+C,EAAER,EAAE,EAAEQ,GAAG,EAAEA,IAAIzB,EAAEm9+C,eAAez8+C,EAAEe,IAAG,EAAG,KAAK,CAAC,IAAIE,EAAEwR,GAAGyn+C,SAAS76+C,EAAEwB,GAAGyB,EAAErB,EAAEX,OAAO,EAAEhB,EAAEk++C,iBAAiBv8+C,EAAE,GAAGA,EAAE,GAAGoH,GAAG8qhB,MAAM7zhB,EAAEg++C,kBAAkB,IAAI,IAAI76+C,EAAE,EAAEA,GAAGH,EAAEG,IAAInD,EAAEm9+C,eAAex7+C,EAAEwB,IAAG,EAAG,CAACnD,EAAEi++C,gBAAgB,EAAEpp+C,GAAGxU,UAAUi++C,UAAU,SAASv++C,GAAG,OAAO,IAAI2T,GAAG/S,KAAK269C,gBAAgB369C,KAAKy7+C,WAAWr8+C,EAAE,EAAE8U,GAAGxU,UAAUw09C,YAAY,WAAW,MAAM,EAAE,EAAEhg9C,GAAGxU,UAAUon+B,SAAS,WAAW,OAAO5y9B,EAAE,EAAEA,GAAGmq+C,gBAAgB,SAASj/+C,GAAG,IAAI,IAAID,EAAE,IAAIM,MAAML,EAAEiB,QAAQ+8H,KAAK,MAAM/9H,EAAE,EAAEA,EAAEF,EAAEkB,OAAOhB,IAAIF,EAAEE,GAAG,IAAI8E,EAAE/E,EAAEC,IAAI,OAAOF,CAAC,EAAE,IAAI2T,GAAG,WAAW9S,KAAKs++C,WAAW,KAAKt++C,KAAKu++C,KAAK,IAAInt+C,GAAGpR,KAAKw++C,KAAK,IAAIhz+C,GAAG,IAAIpM,EAAEgB,UAAU,GAAGJ,KAAKs++C,WAAWl/+C,CAAC,EAAE+T,GAAG,CAACsr+C,aAAa,CAAC36+C,cAAa,IAAKgP,GAAGpT,UAAUg/+C,oBAAoB,WAAW,GAAG,IAAIt++C,UAAUC,OAAO,CAAC,IAAI,IAAIjB,EAAEgB,UAAU,GAAGjB,EAAE,IAAI8P,GAAG5P,EAAEW,KAAKs++C,WAAW38+C,WAAWtC,EAAEyg+C,WAAW,CAAC,IAAIl/9C,EAAEvB,EAAE0B,OAAOhB,EAAEa,EAAE0+9C,cAAclg+C,EAAE4D,EAAEjD,EAAEu49C,WAAWl59C,EAAE4D,EAAEjD,EAAEq49C,WAAWp49C,KAAK0++C,oBAAoBt/+C,EAAEwB,EAAEop+C,mBAAmB7q+C,EAAE,CAAC,OAAOA,CAAC,CAAC,GAAG,IAAIiB,UAAUC,OAAO,GAAG6D,EAAE9D,UAAU,GAAG4N,KAAK5N,UAAU,aAAa+D,GAAG/D,UAAU,aAAagK,IAAG,IAAI,IAAI9J,EAAEF,UAAU,GAAGU,EAAEV,UAAU,GAAGY,EAAEZ,UAAU,GAAGiC,EAAEvB,EAAEyyoC,UAAU/+5B,iBAAiBhyO,EAAE,EAAEA,EAAEH,EAAEhC,OAAO,EAAEmC,IAA8F,GAAzFxC,KAAKu++C,KAAK1m3C,GAAGx1H,EAAEG,GAAGxC,KAAKu++C,KAAKl+vC,GAAGh+O,EAAEG,EAAE,GAAGxC,KAAKu++C,KAAK1m3C,GAAG70H,EAAEhD,KAAKu++C,KAAKl+vC,GAAGr9O,GAAGhD,KAAKu++C,KAAKjk7C,YAAez3D,KAAK8K,IAAI3N,KAAKu++C,KAAK1m3C,GAAG5zH,EAAEjE,KAAKu++C,KAAKl+vC,GAAGp8O,GAAG3D,EAAE2D,GAAMjE,KAAKu++C,KAAK708B,gBAAgBppiB,EAAE0C,EAAEhD,KAAKu++C,KAAK1m3C,GAAG70H,GAAG1C,EAAE0C,EAAEhD,KAAKu++C,KAAKl+vC,GAAGr9O,GAAGwI,GAAGmy9C,mBAAmB399C,KAAKu++C,KAAK1m3C,GAAG73H,KAAKu++C,KAAKl+vC,GAAG//O,KAAKkL,GAAG4nhB,OAAO,CAAC,IAAIvyhB,EAAEC,EAAE8o+C,SAASxh+C,GAAG8qhB,MAAMlzhB,KAAKu++C,KAAK1m3C,GAAG0a,OAAOlwI,EAAEG,MAAM3B,EAAEC,EAAE8o+C,SAASxh+C,GAAGgrhB,QAAQ,IAAItwhB,EAAE,IAAI+P,GAAG7S,KAAKu++C,KAAK19+C,GAAGG,EAAEmkB,IAAIriB,EAAE,OAAO,GAAGoB,EAAE9D,UAAU,GAAG4N,KAAK5N,UAAU,aAAa+D,GAAGD,EAAE9D,UAAU,GAAG4N,IAAI,IAAI,IAAIpL,EAAExC,UAAU,GAAkB+B,EAAE/B,UAAU,GAAGuC,EAA5BvC,UAAU,GAAsBuB,WAAWgB,EAAEm99C,WAAW,CAAC,IAAI989C,EAAEL,EAAE5B,OAAOiC,EAAEinoC,aAAajqoC,KAAK0++C,oBAAoB97+C,EAAEI,EAAEb,EAAE,CAAC,EAAE2Q,GAAGpT,UAAUkq+C,SAAS,SAASxq+C,GAAG,IAAID,EAAEa,KAAK0++C,oBAAoBt/+C,GAAG,OAAG,IAAID,EAAEylB,OAAc,EAAS9Z,GAAG+C,IAAI1O,GAAGw/+C,UAAU,EAAE7r+C,GAAGpT,UAAUw09C,YAAY,WAAW,MAAM,EAAE,EAAEph9C,GAAGpT,UAAUon+B,SAAS,WAAW,OAAOh09B,EAAE,EAAEK,GAAGsr+C,aAAat7+C,IAAI,WAAW,OAAO0P,EAAE,EAAEvT,OAAOkU,iBAAiBV,GAAGK,IAAI,IAAIN,GAAG,WAAW7S,KAAK4++C,WAAW,KAAK5++C,KAAK2++C,WAAW,KAAK,IAAIv/+C,EAAEgB,UAAU,GAAGjB,EAAEiB,UAAU,GAAGJ,KAAK4++C,WAAW,IAAIxt+C,GAAGhS,GAAGY,KAAK2++C,WAAWx/+C,CAAC,EAAE0T,GAAGnT,UAAUmzQ,UAAU,SAASzzQ,GAAG,IAAID,EAAEC,EAAE,GAAGY,KAAK4++C,WAAWrk0C,QAAQp7K,EAAEy/+C,WAAWnk0C,OAAO,OAAO,EAAE,GAAGz6K,KAAK4++C,WAAWnk0C,QAAQt7K,EAAEy/+C,WAAWrk0C,OAAO,OAAO,EAAE,IAAIl7K,EAAEW,KAAK4++C,WAAWtnB,iBAAiBn49C,EAAEy/+C,YAAY,OAAO,IAAIv/+C,GAAI,IAAIA,GAAG,EAAEF,EAAEy/+C,WAAWtnB,iBAAiBt39C,KAAK4++C,aAA9Cv/+C,EAA6DW,KAAK4++C,WAAW/ruC,UAAU1zQ,EAAEy/+C,WAAW,EAAE/r+C,GAAGnT,UAAU6kW,SAAS,SAASnlW,EAAED,GAAG,IAAIE,EAAED,EAAEy4H,GAAGg7I,UAAU1zQ,EAAE04H,IAAI,OAAO,IAAIx4H,EAAEA,EAAED,EAAEihP,GAAGwyB,UAAU1zQ,EAAEkhP,GAAG,EAAExtO,GAAGnT,UAAU6E,SAAS,WAAW,OAAOvE,KAAK4++C,WAAWr6+C,UAAU,EAAEsO,GAAGnT,UAAUw09C,YAAY,WAAW,MAAM,CAACxv9C,EAAE,EAAEmO,GAAGnT,UAAUon+B,SAAS,WAAW,OAAOj09B,EAAE,EAAE,IAAIgC,GAAG,SAASzV,EAAED,EAAEE,GAAGW,KAAK63H,GAAGz4H,GAAG,KAAKY,KAAKqgP,GAAGlhP,GAAG,KAAKa,KAAK+jQ,GAAG1kQ,GAAG,IAAI,EAAEwV,GAAGnV,UAAU2hP,KAAK,WAAW,OAAOxsO,GAAGwsO,KAAKrhP,KAAK63H,GAAG73H,KAAKqgP,GAAGrgP,KAAK+jQ,GAAG,EAAElvP,GAAGnV,UAAUgl8B,WAAW,WAAW,OAAO7v7B,GAAG6v7B,WAAW1k8B,KAAK63H,GAAG73H,KAAKqgP,GAAGrgP,KAAK+jQ,GAAG,EAAElvP,GAAGnV,UAAUm/+C,aAAa,SAASz/+C,GAAG,GAAG,OAAOA,EAAE,MAAM,IAAIgE,EAAE,2BAA2B,OAAOyR,GAAGgq+C,aAAaz/+C,EAAEY,KAAK63H,GAAG73H,KAAKqgP,GAAGrgP,KAAK+jQ,GAAG,EAAElvP,GAAGnV,UAAUo/+C,kBAAkB,WAAW,OAAOjq+C,GAAGiq+C,kBAAkB9++C,KAAK63H,GAAG73H,KAAKqgP,GAAGrgP,KAAK+jQ,GAAG,EAAElvP,GAAGnV,UAAUo7+C,QAAQ,WAAW,OAAOjm+C,GAAGim+C,QAAQ96+C,KAAK63H,GAAG73H,KAAKqgP,GAAGrgP,KAAK+jQ,GAAG,EAAElvP,GAAGnV,UAAUq/+C,aAAa,WAAW,OAAOlq+C,GAAGkq+C,aAAa/++C,KAAK63H,GAAG73H,KAAKqgP,GAAGrgP,KAAK+jQ,GAAG,EAAElvP,GAAGnV,UAAUs/+C,OAAO,WAAW,OAAOnq+C,GAAGmq+C,OAAOh/+C,KAAK63H,GAAG73H,KAAKqgP,GAAGrgP,KAAK+jQ,GAAG,EAAElvP,GAAGnV,UAAU83X,SAAS,WAAW,OAAO3iX,GAAG2iX,SAASx3X,KAAK63H,GAAG73H,KAAKqgP,GAAGrgP,KAAK+jQ,GAAG,EAAElvP,GAAGnV,UAAUu/+C,SAAS,WAAW,OAAOpq+C,GAAGoq+C,SAASj/+C,KAAK63H,GAAG73H,KAAKqgP,GAAGrgP,KAAK+jQ,GAAG,EAAElvP,GAAGnV,UAAUw09C,YAAY,WAAW,MAAM,EAAE,EAAEr/8C,GAAGnV,UAAUon+B,SAAS,WAAW,OAAOjy9B,EAAE,EAAEA,GAAGwsO,KAAK,SAASjiP,EAAED,EAAEE,GAAG,OAAOwD,KAAKmjH,MAAM3mH,EAAE4E,EAAE7E,EAAE6E,IAAI9E,EAAE6D,EAAE5D,EAAE4D,IAAI7D,EAAE8E,EAAE7E,EAAE6E,IAAI5E,EAAE2D,EAAE5D,EAAE4D,IAAI,EAAE,EAAE6R,GAAG6v7B,WAAW,SAAStl8B,EAAED,EAAEE,GAAG,QAAQA,EAAE4E,EAAE7E,EAAE6E,IAAI9E,EAAE6D,EAAE5D,EAAE4D,IAAI7D,EAAE8E,EAAE7E,EAAE6E,IAAI5E,EAAE2D,EAAE5D,EAAE4D,IAAI,CAAC,EAAE6R,GAAGu57B,IAAI,SAAShv8B,EAAED,EAAEE,EAAEuB,GAAG,OAAOxB,EAAEwB,EAAEzB,EAAEE,CAAC,EAAEwV,GAAGgq+C,aAAa,SAASz/+C,EAAED,EAAEE,EAAEuB,GAAG,IAAIb,EAAEZ,EAAE8E,EAAE3D,EAAEnB,EAAE6D,EAAElC,EAAEzB,EAAE4E,EAAElE,EAAEiB,EAAEJ,EAAEqD,EAAElE,EAAEsC,EAAEhD,EAAE2D,EAAE1C,EAAEkC,EAAE5B,EAAEoC,EAAE1C,EAAEO,EAAEC,EAAE0B,EAAExB,EAAEqB,EAAES,EAAE1D,EAAE6E,EAAElE,EAAE6C,EAAExD,EAAE4D,EAAE1C,EAAEoC,GAAGF,EAAEM,EAAE9B,EAAE4B,GAAG/B,EAAEsB,IAAIE,EAAES,EAAEhC,EAAE8B,GAAG/B,EAAE,OAAO1B,EAAEwG,EAAEjD,GAAGrD,EAAEsG,EAAExG,EAAEwG,GAAGxD,GAAGvB,EAAE+E,EAAExG,EAAEwG,EAAE,EAAEkP,GAAGiq+C,kBAAkB,SAAS1/+C,EAAED,EAAEE,GAAG,IAAIuB,EAAExB,EAAE6pJ,SAAS9pJ,GAAGY,EAAEZ,EAAE8pJ,SAAS5pJ,GAAGiB,EAAEjB,EAAE4pJ,SAAS7pJ,GAAG0B,EAAEF,EAAE,OAAOb,EAAEe,IAAIA,EAAEf,GAAGO,EAAEQ,IAAIA,EAAER,GAAGQ,CAAC,EAAE+T,GAAGim+C,QAAQ,SAAS17+C,EAAED,EAAEE,GAAG,QAAQiT,GAAGwo+C,QAAQ17+C,EAAED,EAAEE,MAAOiT,GAAGwo+C,QAAQ37+C,EAAEE,EAAED,MAAMkT,GAAGwo+C,QAAQz7+C,EAAED,EAAED,EAAG,EAAE0V,GAAGkq+C,aAAa,SAAS3/+C,EAAED,EAAEE,GAAG,IAAIuB,EAAEvB,EAAE4E,EAAElE,EAAEV,EAAE2D,EAAE1C,EAAElB,EAAE6E,EAAErD,EAAEE,EAAE1B,EAAE4D,EAAEjD,EAAEiB,EAAE7B,EAAE8E,EAAErD,EAAEyB,EAAElD,EAAE6D,EAAEjD,EAAEyC,EAAE,EAAEqS,GAAGu57B,IAAI9t8B,EAAEQ,EAAEE,EAAEqB,GAAGxB,EAAEgU,GAAGu57B,IAAItt8B,EAAER,EAAEA,EAAEQ,EAAEA,EAAEuB,EAAErB,EAAEA,EAAEqB,EAAEA,GAAGS,EAAE+R,GAAGu57B,IAAI9t8B,EAAEA,EAAEA,EAAEQ,EAAEA,EAAEE,EAAEA,EAAEA,EAAEqB,EAAEA,GAAG,OAAO,IAAI8B,EAAEvD,EAAEC,EAAE2B,EAAEzC,EAAE+C,EAAEN,EAAE,EAAEqS,GAAGqq+C,sBAAsB,SAAS9/+C,EAAED,GAAG,IAAIE,EAAEF,EAAE8E,EAAE7E,EAAE6E,EAAErD,EAAEzB,EAAE6D,EAAE5D,EAAE4D,EAAEjD,EAAE,IAAI2D,EAAEtE,EAAE6E,EAAE5E,EAAE,EAAED,EAAE4D,EAAEpC,EAAE,EAAE,GAAGN,EAAE,IAAIoD,EAAEtE,EAAE6E,EAAErD,EAAEvB,EAAE,EAAED,EAAE4D,EAAE3D,EAAEuB,EAAE,EAAE,GAAG,OAAO,IAAI8C,EAAE3D,EAAEO,EAAE,EAAEuU,GAAGsq+C,cAAc,SAAS//+C,EAAED,EAAEE,GAAG,IAAIuB,EAAEzB,EAAE8pJ,SAAS7pJ,GAAGW,EAAEa,GAAGA,EAAEzB,EAAE8pJ,SAAS5pJ,IAAIiB,EAAEjB,EAAE4E,EAAE7E,EAAE6E,EAAEnD,EAAEzB,EAAE2D,EAAE5D,EAAE4D,EAAE,OAAO,IAAImB,EAAE/E,EAAE6E,EAAElE,EAAEO,EAAElB,EAAE4D,EAAEjD,EAAEe,EAAE,EAAE+T,GAAGmq+C,OAAO,SAAS5/+C,EAAED,EAAEE,GAAG,IAAIuB,EAAEzB,EAAE8E,EAAE7E,EAAE6E,EAAElE,EAAEZ,EAAE6D,EAAE5D,EAAE4D,EAAE1C,EAAEnB,EAAEwG,EAAEvG,EAAEuG,EAAE7E,EAAEzB,EAAE4E,EAAE7E,EAAE6E,EAAEjD,EAAE3B,EAAE2D,EAAE5D,EAAE4D,EAAEX,EAAEhD,EAAEsG,EAAEvG,EAAEuG,EAAEnD,EAAEzC,EAAEsC,EAAE/B,EAAEU,EAAEH,EAAEP,EAAEQ,EAAEF,EAAEyB,EAAES,EAAElC,EAAEI,EAAEjB,EAAEe,EAAE8B,EAAEJ,EAAEA,EAAE3B,EAAEA,EAAEiC,EAAEA,EAAmB,OAAfD,KAAK4yF,KAAK7yF,GAAG,CAAU,EAAEiS,GAAG2iX,SAAS,SAASp4X,EAAED,EAAEE,GAAG,IAAIuB,GAAGxB,EAAE6E,EAAE9E,EAAE8E,EAAE5E,EAAE4E,GAAG,EAAElE,GAAGX,EAAE4D,EAAE7D,EAAE6D,EAAE3D,EAAE2D,GAAG,EAAE,OAAO,IAAImB,EAAEvD,EAAEb,EAAE,EAAE8U,GAAGoq+C,SAAS,SAAS7/+C,EAAED,EAAEE,GAAG,IAAIuB,EAAEzB,EAAE8pJ,SAAS5pJ,GAAGU,EAAEX,EAAE6pJ,SAAS5pJ,GAAGiB,EAAElB,EAAE6pJ,SAAS9pJ,GAAG2B,EAAEF,EAAEb,EAAEO,EAAEU,GAAGJ,EAAExB,EAAE6E,EAAElE,EAAEZ,EAAE8E,EAAE3D,EAAEjB,EAAE4E,GAAGnD,EAAEuB,GAAGzB,EAAExB,EAAE4D,EAAEjD,EAAEZ,EAAE6D,EAAE1C,EAAEjB,EAAE2D,GAAGlC,EAAE,OAAO,IAAIqD,EAAEnD,EAAEqB,EAAE,EAAE,IAAIsS,GAAG,WAAW3U,KAAKo/+C,WAAW,KAAKp/+C,KAAKwqX,UAAU,KAAKxqX,KAAKq/+C,cAAc,KAAKr/+C,KAAKs/+C,WAAW,IAAIrw+C,GAAG,IAAI7P,EAAEgB,UAAU,GAAGjB,EAAEiB,UAAU,GAAGf,EAAEe,UAAU,GAAGJ,KAAKo/+C,WAAWhg/C,EAAEY,KAAKwqX,UAAUrrX,EAAEa,KAAKq/+C,cAAchg/C,CAAC,EAAEsV,GAAGjV,UAAU6/+C,SAAS,SAASng/C,GAAG,GAAGY,KAAKwqX,WAAW,EAAE,OAAO,KAAK,IAAIrrX,EAAEC,EAAEo1O,iBAAiBn1O,EAAEW,KAAKq/+C,cAAcnB,aAAa/++C,EAAEa,KAAKwqX,WAAWxqX,KAAKw/+C,SAASng/C,EAAEkE,EAAE6x9C,SAAS7x9C,EAAE2x9C,SAAS,EAAEvg9C,GAAGjV,UAAU+/+C,WAAW,SAASrg/C,GAAG,IAAID,EAAEa,KAAKwqX,UAAUnrX,EAAE+I,GAAG8qhB,KAAKlzhB,KAAKwqX,UAAU,IAAIrrX,GAAGa,KAAKwqX,UAAUnrX,EAAE+I,GAAGgrhB,OAAO,IAAIxyhB,EAAExB,EAAE4l+C,kBAAkBjl+C,EAAEsO,GAAGiz9C,qBAAqB1g+C,EAAE4zO,kBAAkB,GAAGx0O,KAAKwqX,UAAU,GAAGxqX,KAAK0/+C,mBAAmB9++C,EAAEZ,KAAKwqX,WAAW,OAAO,KAAK,GAAGxqX,KAAKwqX,WAAW,GAAGzqX,EAAEM,OAAO,EAAE,OAAO,KAAKL,KAAK2/+C,eAAe5/+C,EAAEZ,EAAEE,EAAEkE,EAAE6x9C,SAAS7x9C,EAAE2x9C,UAAU,IAAI,IAAI509C,EAAE,EAAEA,EAAElB,EAAE0l+C,qBAAqBxk+C,IAAI,CAAC,IAAIQ,EAAE1B,EAAE6l+C,iBAAiB3k+C,GAAGU,EAAEqN,GAAGiz9C,qBAAqBxg+C,EAAE0zO,kBAAkBx0O,KAAKwqX,UAAU,GAAGxqX,KAAK0/+C,mBAAmB5++C,GAAGd,KAAKwqX,YAAYxqX,KAAK2/+C,eAAe3++C,EAAE7B,EAAEiJ,GAAGw/9C,SAASvo+C,GAAGkE,EAAE2x9C,SAAS3x9C,EAAE6x9C,SAAS,CAAC,EAAEzg9C,GAAGjV,UAAUkg/C,2BAA2B,SAASxg/C,EAAED,GAAG,IAAIE,EAAE,IAAIwV,GAAGzV,EAAE,GAAGA,EAAE,GAAGA,EAAE,IAAIwB,EAAEvB,EAAE4/+C,WAAW,OAAOzz+C,GAAGux9C,kBAAkBn89C,EAAEvB,EAAEw4H,GAAGx4H,EAAEghP,IAAIx9O,KAAKmjH,IAAI7mH,EAAE,EAAEwV,GAAGjV,UAAUmg/C,cAAc,SAASzg/C,GAAG,GAAGY,KAAKwqX,WAAW,IAAIxqX,KAAKq/+C,cAAclB,sBAAsBtF,gBAAgB,OAAO,KAAK,IAAI15+C,EAAEkP,GAAGiz9C,qBAAqBli+C,EAAEo1O,kBAAkBn1O,EAAEW,KAAKq/+C,cAAcnB,aAAa/++C,EAAEa,KAAKwqX,WAAWxqX,KAAKw/+C,SAASng/C,EAAEkE,EAAE6x9C,SAAS7x9C,EAAE2x9C,SAAS,EAAEvg9C,GAAGjV,UAAU8/+C,SAAS,SAASpg/C,EAAED,EAAEE,GAAG,GAAG,OAAOD,GAAGA,EAAEiB,OAAO,EAAE,OAAO,KAAK,IAAIO,EAAE,IAAIiR,GAAGzS,EAAE,IAAIqK,GAAG,EAAElG,EAAE4x9C,SAASh29C,EAAEE,IAAIW,KAAKs/+C,WAAWn69C,IAAIvkB,EAAE,EAAE+T,GAAGjV,UAAUog/C,UAAU,WAAW,OAAO9/+C,KAAKmlB,IAAInlB,KAAKo/+C,YAAYp/+C,KAAKs/+C,UAAU,EAAE3q+C,GAAGjV,UAAUig/C,eAAe,SAASvg/C,EAAED,EAAEE,EAAEuB,EAAEb,GAAG,GAAG,IAAIZ,GAAGC,EAAEiB,OAAOkG,GAAG4+9C,mBAAmB,OAAO,KAAK,IAAI7k+C,EAAEM,EAAEE,EAAEf,EAAEX,EAAEiB,QAAQkG,GAAG4+9C,oBAAoB359C,GAAGky9C,MAAMt+9C,KAAKkB,EAAEP,EAAEe,EAAEF,EAAEvB,EAAE+I,GAAGw/9C,SAASvo+C,IAAI,IAAI2B,EAAEhB,KAAKq/+C,cAAcjB,aAAah/+C,EAAEC,EAAEF,GAAGa,KAAKw/+C,SAASx++C,EAAEV,EAAEQ,EAAE,EAAE6T,GAAGjV,UAAUylB,IAAI,SAAS/lB,GAAG,GAAGA,EAAEipE,UAAU,OAAO,KAAKjpE,aAAakR,GAAGtQ,KAAKy/+C,WAAWrg/C,GAAGA,aAAa4P,GAAGhP,KAAK6/+C,cAAczg/C,GAAGA,aAAagR,GAAGpQ,KAAKu/+C,SAASng/C,IAAGA,aAAasH,IAAyBtH,aAAa0P,IAAyB1P,aAAauH,IAAyBvH,aAAayQ,KAA/G7P,KAAK+/+C,cAAc3g/C,EAAqH,EAAEuV,GAAGjV,UAAUgg/C,mBAAmB,SAAStg/C,EAAED,GAAG,IAAIE,EAAED,EAAEo1O,iBAAiB,GAAGn1O,EAAEgB,OAAO,EAAE,OAAOlB,EAAE,EAAE,GAAG,IAAIE,EAAEgB,OAAO,OAAOL,KAAK4/+C,2BAA2Bvg/C,EAAEF,GAAG,IAAIyB,EAAExB,EAAEog+C,sBAAsBz/9C,EAAE8C,KAAKgL,IAAIjN,EAAEo6K,YAAYp6K,EAAEuqO,YAAY,OAAOhsO,EAAE,GAAG,EAAE0D,KAAKmjH,IAAI7mH,GAAGY,CAAC,EAAE4U,GAAGjV,UAAUqg/C,cAAc,SAAS3g/C,GAAG,IAAI,IAAID,EAAE,EAAEA,EAAEC,EAAE+/9C,mBAAmBhg+C,IAAI,CAAC,IAAIE,EAAED,EAAEw/9C,aAAaz/9C,GAAGa,KAAKmlB,IAAI9lB,EAAE,CAAC,EAAEsV,GAAGjV,UAAUw09C,YAAY,WAAW,MAAM,EAAE,EAAEv/8C,GAAGjV,UAAUon+B,SAAS,WAAW,OAAOny9B,EAAE,EAAE,IAAId,GAAG,WAAW,EAAEA,GAAGnU,UAAUsg/C,OAAO,SAAS5g/C,GAAG,EAAEyU,GAAGnU,UAAUw09C,YAAY,WAAW,MAAM,EAAE,EAAErg9C,GAAGnU,UAAUon+B,SAAS,WAAW,OAAOjz9B,EAAE,EAAE,IAAIN,GAAG,WAAWvT,KAAK6iwB,QAAQ,KAAK7iwB,KAAKig/C,SAAS,KAAKjg/C,KAAK0wyB,KAAK,KAAK1wyB,KAAKw4X,OAAO,KAAKx4X,KAAKkg/C,uBAAuB,KAAK,IAAI9g/C,EAAEgB,UAAU,GAAGJ,KAAK6iwB,QAAQzjwB,EAAEY,KAAKig/C,UAAS,EAAGjg/C,KAAKw4X,OAAO,EAAEx4X,KAAK0wyB,KAAKtxyB,EAAE+/9C,kBAAkB,EAAE5r9C,GAAG7T,UAAUqB,KAAK,WAAW,GAAGf,KAAKig/C,SAAS,OAAOjg/C,KAAKig/C,UAAS,EAAG1s+C,GAAG4s+C,SAASng/C,KAAK6iwB,UAAU7iwB,KAAKw4X,SAASx4X,KAAK6iwB,QAAQ,GAAG,OAAO7iwB,KAAKkg/C,uBAAuB,CAAC,GAAGlg/C,KAAKkg/C,uBAAuBpgB,UAAU,OAAO9/9C,KAAKkg/C,uBAAuBn/+C,OAAOf,KAAKkg/C,uBAAuB,IAAI,CAAC,GAAGlg/C,KAAKw4X,QAAQx4X,KAAK0wyB,KAAK,MAAM,IAAI9vyB,EAAE,IAAIxB,EAAEY,KAAK6iwB,QAAQ+7tB,aAAa5+9C,KAAKw4X,UAAU,OAAOp5X,aAAayQ,IAAI7P,KAAKkg/C,uBAAuB,IAAI3s+C,GAAGnU,GAAGY,KAAKkg/C,uBAAuBn/+C,QAAQ3B,CAAC,EAAEmU,GAAG7T,UAAUmzB,OAAO,WAAW,MAAM,IAAIrL,MAAMxnB,KAAK8m+B,WAAW9+oB,UAAU,EAAEz0U,GAAG7T,UAAUog+C,QAAQ,WAAW,GAAG9/9C,KAAKig/C,SAAS,OAAM,EAAG,GAAG,OAAOjg/C,KAAKkg/C,uBAAuB,CAAC,GAAGlg/C,KAAKkg/C,uBAAuBpgB,UAAU,OAAM,EAAG9/9C,KAAKkg/C,uBAAuB,IAAI,CAAC,QAAQlg/C,KAAKw4X,QAAQx4X,KAAK0wyB,KAAK,EAAEn9xB,GAAG7T,UAAUw09C,YAAY,WAAW,MAAM,CAACzl9C,GAAG,EAAE8E,GAAG7T,UAAUon+B,SAAS,WAAW,OAAOvz9B,EAAE,EAAEA,GAAG4s+C,SAAS,SAAS/g/C,GAAG,QAAQA,aAAayQ,GAAG,EAAE,IAAIiE,GAAG,WAAW9T,KAAKqj+C,MAAM,KAAK,IAAIjk+C,EAAEgB,UAAU,GAAGJ,KAAKqj+C,MAAMjk+C,CAAC,EAAE0U,GAAGpU,UAAUsg/C,OAAO,SAAS5g/C,GAAG,OAAO0U,GAAGks+C,OAAO5g/C,EAAEY,KAAKqj+C,MAAM,EAAEvv9C,GAAGpU,UAAUw09C,YAAY,WAAW,MAAM,CAACrg9C,GAAG,EAAEC,GAAGpU,UAAUon+B,SAAS,WAAW,OAAOhz9B,EAAE,EAAEA,GAAG0p9C,cAAc,SAASp+9C,EAAED,GAAG,QAAQA,EAAEqg+C,sBAAsBr5nC,WAAW/mW,IAAIoM,GAAGgy9C,cAAcp+9C,EAAED,EAAEq1O,iBAAiB,EAAE1gO,GAAGss+C,uBAAuB,SAAShh/C,EAAED,GAAG,GAAGA,EAAEkpE,UAAU,OAAM,EAAG,IAAIhpE,EAAEF,EAAE6l+C,kBAAkB,IAAIlx9C,GAAG0p9C,cAAcp+9C,EAAEC,GAAG,OAAM,EAAG,IAAI,IAAIuB,EAAE,EAAEA,EAAEzB,EAAE2l+C,qBAAqBlk+C,IAAI,CAAC,IAAIb,EAAEZ,EAAE8l+C,iBAAiBrk+C,GAAG,GAAGkT,GAAG0p9C,cAAcp+9C,EAAEW,GAAG,OAAM,CAAE,CAAC,OAAM,CAAE,EAAE+T,GAAG4pvB,cAAc,SAASt+vB,EAAED,GAAG,GAAGA,aAAamR,GAAG,OAAOwD,GAAGss+C,uBAAuBhh/C,EAAED,GAAG,GAAGA,aAAa0Q,GAAG,IAAI,IAAIxQ,EAAE,IAAIkU,GAAGpU,GAAGE,EAAEyg+C,WAAW,CAAC,IAAIl/9C,EAAEvB,EAAE0B,OAAO,GAAGH,IAAIzB,GAAG2U,GAAG4pvB,cAAct+vB,EAAEwB,GAAG,OAAM,CAAE,CAAC,OAAM,CAAE,EAAEkT,GAAGks+C,OAAO,SAAS5g/C,EAAED,GAAG,OAAOA,EAAEkpE,UAAU9kE,EAAE6x9C,SAASth9C,GAAG4pvB,cAAct+vB,EAAED,GAAGoE,EAAE2x9C,SAAS3x9C,EAAE6x9C,QAAQ,EAAE,IAAIli9C,GAAG,WAAWlT,KAAKqg/C,SAAS,IAAIv9+C,EAAE9C,KAAKsg/C,UAAU,KAAKtg/C,KAAKug/C,kBAAkB,CAACh9+C,EAAEiyQ,KAAKjyQ,EAAEiyQ,KAAK,EAAEtiQ,GAAGxT,UAAU8g/C,UAAU,SAASph/C,GAAGY,KAAKso+C,WAAW,IAAInp+C,EAAEa,KAAKsg/C,UAAU9/+C,QAAQpB,GAAGC,EAAEF,EAAE,EAAE,OAAO,IAAIA,IAAIE,EAAEW,KAAKsg/C,UAAU179C,OAAO,GAAG5kB,KAAKsg/C,UAAUn9+C,IAAI9D,EAAE,EAAE6T,GAAGxT,UAAU+g/C,oBAAoB,SAASrh/C,GAAG,IAAI,IAAID,EAAEoE,EAAEiyQ,KAAKn2Q,EAAEW,KAAK2B,WAAWtC,EAAEyg+C,WAAW,CAAC,IAAIl/9C,EAAEvB,EAAE0B,OAAO6tiB,WAAWhuiB,EAAEyp+C,OAAOjr+C,IAAIwB,EAAEuza,YAAY/0a,EAAEgJ,GAAG8qhB,QAAQ3vhB,EAAEiyQ,OAAOr2Q,EAAEyB,EAAEuza,YAAY/0a,EAAEgJ,GAAG8qhB,MAAM,CAAC,GAAG/zhB,IAAIoE,EAAEiyQ,KAAK,OAAO,KAAK,IAAI,IAAIz1Q,EAAEZ,EAAEmB,EAAEN,KAAK2B,WAAWrB,EAAEw/9C,WAAW,CAAC,IAAIh/9C,EAAER,EAAES,OAAOC,EAAEF,EAAE8tiB,WAAW,GAAG5tiB,EAAEmza,YAAY/0a,EAAEgJ,GAAGu/9C,MAAMpk+C,EAAEiyQ,MAAMx0Q,EAAEup+C,YAAYnr+C,EAAEgJ,GAAGu/9C,GAAG5n+C,GAAGiB,EAAEqp+C,OAAOjr+C,GAAG,CAAC,IAAIiD,EAAErB,EAAEmza,YAAY/0a,EAAEgJ,GAAG8qhB,MAAM1whB,EAAExB,EAAEmza,YAAY/0a,EAAEgJ,GAAGgrhB,OAAO,GAAG5whB,IAAIe,EAAEiyQ,KAAK,CAAC,GAAGhzQ,IAAIzC,EAAE,MAAM,IAAIoI,GAAG,yBAAyBrH,EAAE229C,iBAAiBp19C,IAAIkB,EAAEiyQ,MAAMzqQ,GAAGqv9C,qBAAqB,8BAA8Bt59C,EAAE229C,gBAAgB,KAAK139C,EAAEsC,CAAC,MAAM0I,GAAGiprB,OAAOhzrB,EAAEmza,YAAY/0a,EAAEgJ,GAAG8qhB,QAAQ3vhB,EAAEiyQ,KAAK,0BAA0Bx0Q,EAAEup+C,YAAYnr+C,EAAEgJ,GAAGgrhB,MAAMrzhB,GAAGiB,EAAEup+C,YAAYnr+C,EAAEgJ,GAAG8qhB,KAAKnzhB,EAAE,CAAC,CAAC,EAAEmT,GAAGxT,UAAU+39C,cAAc,WAAW,IAAIr49C,EAAEY,KAAK2B,WAAW,OAAIvC,EAAE0g+C,UAA6B1g+C,EAAE2B,OAAO029C,gBAArB,IAAoC,EAAEvk9C,GAAGxT,UAAUo3hB,MAAM,SAAS13hB,GAAGqG,EAAEy6H,IAAI081C,QAAQ,kBAAkB589C,KAAKy39C,iBAAiB,IAAI,IAAIt49C,EAAEa,KAAK2B,WAAWxC,EAAE2g+C,WAAY3g+C,EAAE4B,OAAO+1hB,MAAM13hB,EAAG,EAAE8T,GAAGxT,UAAUgh/C,uBAAuB,SAASth/C,GAAG,OAAOY,KAAK2g/C,qBAAqBvh/C,EAAEwh/C,uBAAuB5g/C,KAAK6g/C,0BAA0B,EAAE,EAAE3t+C,GAAGxT,UAAUmh/C,0BAA0B,SAASzh/C,GAAG,IAAID,EAAEa,KAAKso+C,WAAW,GAAGnp+C,EAAEylB,QAAQ,EAAE,OAAM,EAAG,IAAIvlB,EAAEF,EAAEylB,OAAO,EAAEhkB,EAAEzB,EAAEgE,IAAI9D,GAAGuviB,WAAWz6H,YAAY/0a,EAAEgJ,GAAG8qhB,MAAMnohB,GAAGiprB,OAAOpzrB,IAAI2C,EAAEiyQ,KAAK,8BAA8B,IAAI,IAAIz1Q,EAAEa,EAAEN,EAAEN,KAAK2B,WAAWrB,EAAEw/9C,WAAW,CAAC,IAAIh/9C,EAAER,EAAES,OAAO6tiB,WAAW7jiB,GAAGiprB,OAAOlzrB,EAAEup+C,OAAOjr+C,GAAG,uBAAuB,IAAI4B,EAAEF,EAAEqza,YAAY/0a,EAAEgJ,GAAG8qhB,MAAM7whB,EAAEvB,EAAEqza,YAAY/0a,EAAEgJ,GAAGgrhB,OAAO,GAAGpyhB,IAAIqB,EAAE,OAAM,EAAG,GAAGA,IAAItC,EAAE,OAAM,EAAGA,EAAEiB,CAAC,CAAC,OAAM,CAAE,EAAEkS,GAAGxT,UAAU4mG,UAAU,SAASlnG,GAAGY,KAAK2B,WAAW,IAAI,IAAIxC,EAAE,EAAEA,EAAEa,KAAKsg/C,UAAU179C,OAAOzlB,IAAK,GAAGa,KAAKsg/C,UAAUn9+C,IAAIhE,KAAKC,EAAE,OAAOD,EAAE,OAAO,CAAC,EAAE+T,GAAGxT,UAAUiC,SAAS,WAAW,OAAO3B,KAAKso+C,WAAW3m+C,UAAU,EAAEuR,GAAGxT,UAAU4o+C,SAAS,WAAW,OAAO,OAAOto+C,KAAKsg/C,YAAYtg/C,KAAKsg/C,UAAU,IAAIrx+C,GAAGjP,KAAKqg/C,SAAS3j+C,WAAW1c,KAAKsg/C,SAAS,EAAEpt+C,GAAGxT,UAAUy0a,YAAY,SAAS/0a,EAAED,EAAEE,GAAG,OAAOW,KAAKug/C,kBAAkBnh/C,KAAKmE,EAAEiyQ,OAAOx1Q,KAAKug/C,kBAAkBnh/C,GAAG0U,GAAGks+C,OAAO7g/C,EAAEE,EAAED,GAAGmlK,gBAAgBvkK,KAAKug/C,kBAAkBnh/C,EAAE,EAAE8T,GAAGxT,UAAU6E,SAAS,WAAW,IAAInF,EAAE,IAAImG,EAAEnG,EAAEglF,OAAO,kBAAkBpkF,KAAKy39C,iBAAiBr49C,EAAEglF,OAAO,MAAM,IAAI,IAAIjlF,EAAEa,KAAK2B,WAAWxC,EAAE2g+C,WAAW,CAAC,IAAIzg+C,EAAEF,EAAE4B,OAAO3B,EAAEglF,OAAO/kF,GAAGD,EAAEglF,OAAO,KAAK,CAAC,OAAOhlF,EAAEmF,UAAU,EAAE2O,GAAGxT,UAAUih/C,qBAAqB,SAASvh/C,GAAG,IAAI,IAAID,EAAEa,KAAK2B,WAAWxC,EAAE2g+C,WAAY3g+C,EAAE4B,OAAO6t+C,aAAaxv+C,EAAG,EAAE8T,GAAGxT,UAAUoh/C,iBAAiB,SAAS1h/C,GAAGY,KAAK2g/C,qBAAqBvh/C,EAAE,GAAGwh/C,uBAAuB5g/C,KAAKyg/C,oBAAoB,GAAGzg/C,KAAKyg/C,oBAAoB,GAAG,IAAI,IAAIth/C,EAAE,EAAC,GAAG,GAAIE,EAAEW,KAAK2B,WAAWtC,EAAEyg+C,WAAW,IAAI,IAAIl/9C,EAAEvB,EAAE0B,OAAO6tiB,WAAW7uiB,EAAE,EAAEA,EAAE,EAAEA,IAAIa,EAAE+jnC,OAAO5knC,IAAIa,EAAEuza,YAAYp0a,KAAKwD,EAAE4x9C,WAAWh29C,EAAEY,IAAG,GAAI,IAAI,IAAIO,EAAEN,KAAK2B,WAAWrB,EAAEw/9C,WAAW,IAAI,IAAIh/9C,EAAER,EAAES,OAAOC,EAAEF,EAAE8tiB,WAAWvsiB,EAAE,EAAEA,EAAE,EAAEA,IAAI,GAAGrB,EAAEsp+C,UAAUjo+C,GAAG,CAAC,IAAIG,EAAEe,EAAEiyQ,KAAK,GAAGr2Q,EAAEkD,GAAGG,EAAEe,EAAE6x9C,aAAa,CAAC,IAAIv09C,EAAEC,EAAE229C,gBAAgBj19C,EAAExC,KAAKm0a,YAAY9xa,EAAExB,EAAEzB,EAAE,CAAC4B,EAAEkp+C,sBAAsB7n+C,EAAEG,EAAE,CAAC,EAAE0Q,GAAGxT,UAAUqh/C,UAAU,WAAW,OAAO/g/C,KAAKqg/C,SAASz79C,MAAM,EAAE1R,GAAGxT,UAAUsh/C,cAAc,SAAS5h/C,EAAED,GAAGa,KAAKqg/C,SAASn/hB,IAAI9h9B,EAAED,GAAGa,KAAKsg/C,UAAU,IAAI,EAAEpt+C,GAAGxT,UAAUw09C,YAAY,WAAW,MAAM,EAAE,EAAEhh9C,GAAGxT,UAAUon+B,SAAS,WAAW,OAAO5z9B,EAAE,EAAE,IAAIS,GAAG,SAASvU,GAAG,SAASD,IAAIC,EAAEQ,KAAKI,MAAMA,KAAKih/C,oBAAoB,KAAKjh/C,KAAKkr+C,OAAO,KAAKlr+C,KAAKkh/C,uBAAuB,EAAElh/C,KAAKmh/C,qBAAqB,CAAC,CAAC,OAAO/h/C,IAAID,EAAEK,UAAUJ,GAAGD,EAAEO,UAAUJ,OAAOY,OAAOd,GAAGA,EAAEM,WAAWP,EAAEO,UAAUO,YAAYd,EAAEA,EAAEO,UAAUuw+C,wBAAwB,WAAWjw+C,KAAKoh/C,qBAAqB,IAAI,IAAIhi/C,EAAE,KAAKD,EAAE,KAAKE,EAAEW,KAAKkh/C,uBAAuBtg/C,EAAE,EAAEA,EAAEZ,KAAKih/C,oBAAoBr89C,OAAOhkB,IAAI,CAAC,IAAIb,EAAEC,KAAKih/C,oBAAoB99+C,IAAIvC,GAAGN,EAAEP,EAAEyo+C,SAAS,GAAGzo+C,EAAE6uiB,WAAWy77B,SAAS,OAAO,OAAOjr+C,GAAGW,EAAEyzzC,eAAep0zC,EAAEW,GAAGV,GAAG,KAAKW,KAAKkh/C,uBAAuB,IAAI5g/C,EAAEkzzC,aAAa,SAASr0zC,EAAEmB,EAAEjB,EAAEW,KAAKmh/C,qBAAqB,MAAM,KAAKnh/C,KAAKmh/C,qBAAqB,IAAIph/C,EAAEyzzC,aAAa,SAASr0zC,EAAEww+C,QAAQ5v+C,GAAGV,EAAEW,KAAKkh/C,uBAAuB,CAAC,GAAG7h/C,IAAIW,KAAKmh/C,qBAAqB,CAAC,GAAG,OAAO/h/C,EAAE,MAAM,IAAI+I,GAAG,4BAA4BnI,KAAKy39C,iBAAiB1s9C,GAAGiprB,OAAO50rB,EAAEo0zC,aAAa,wCAAwCr0zC,EAAEww+C,QAAQvw+C,EAAE,CAAC,EAAED,EAAEO,UAAUq7P,OAAO,SAAS37P,GAAG,IAAID,EAAEC,EAAEY,KAAKgh/C,cAAc7h/C,EAAEA,EAAE,EAAEA,EAAEO,UAAU6o+C,iBAAiB,WAAW,IAAInp+C,EAAEY,KAAKso+C,WAAWnp+C,EAAEC,EAAEwlB,OAAO,GAAGzlB,EAAE,EAAE,OAAO,KAAK,IAAIE,EAAED,EAAE+D,IAAI,GAAG,GAAG,IAAIhE,EAAE,OAAOE,EAAE,IAAIuB,EAAExB,EAAE+D,IAAIhE,EAAE,GAAGY,EAAEV,EAAEsv+C,cAAcru+C,EAAEM,EAAE+t+C,cAAc,OAAOrk+C,GAAGyj+C,WAAWhu+C,IAAIuK,GAAGyj+C,WAAWzt+C,GAAGjB,EAAEiL,GAAGyj+C,WAAWhu+C,IAAIuK,GAAGyj+C,WAAWzt+C,GAAG,IAAIjB,EAAEmv+C,QAAQnv+C,EAAE,IAAIuB,EAAE4t+C,QAAQ5t+C,GAAGmK,GAAGqv9C,qBAAqB,+CAA+C,MAAMx59C,CAAC,EAAEzB,EAAEO,UAAUo3hB,MAAM,SAAS13hB,GAAGqG,EAAEy6H,IAAI081C,QAAQ,qBAAqB589C,KAAKy39C,iBAAiB,IAAI,IAAIt49C,EAAEa,KAAK2B,WAAWxC,EAAE2g+C,WAAW,CAAC,IAAIzg+C,EAAEF,EAAE4B,OAAO3B,EAAE03hB,MAAM,QAAQz3hB,EAAEy3hB,MAAM13hB,GAAGA,EAAEw99C,UAAUx99C,EAAE03hB,MAAM,OAAOz3hB,EAAEmp+C,SAAS1x8B,MAAM13hB,GAAGA,EAAEw99C,SAAS,CAAC,EAAEz99C,EAAEO,UAAU0h/C,mBAAmB,WAAW,GAAG,OAAOph/C,KAAKih/C,oBAAoB,OAAOjh/C,KAAKih/C,oBAAoBjh/C,KAAKih/C,oBAAoB,IAAIhy+C,GAAG,IAAI,IAAI7P,EAAEY,KAAK2B,WAAWvC,EAAE0g+C,WAAW,CAAC,IAAI3g+C,EAAEC,EAAE2B,QAAQ5B,EAAEq0zC,cAAcr0zC,EAAEqp+C,SAASh1K,eAAexzzC,KAAKih/C,oBAAoB979C,IAAIhmB,EAAE,CAAC,OAAOa,KAAKih/C,mBAAmB,EAAE9h/C,EAAEO,UAAU2h/C,gBAAgB,SAASji/C,GAAG,IAAI,IAAID,EAAEa,KAAK2B,WAAWxC,EAAE2g+C,WAAW,CAAC,IAAIzg+C,EAAEF,EAAE4B,OAAO6tiB,WAAWvviB,EAAE6q+C,sBAAsB,EAAE9q+C,EAAE+0a,YAAY,IAAI90a,EAAE6q+C,sBAAsB,EAAE9q+C,EAAE+0a,YAAY,GAAG,CAAC,EAAEh1a,EAAEO,UAAU0w+C,qBAAqB,WAAWpw+C,KAAKso+C,WAAW,IAAI,IAAIlp+C,EAAE,KAAKD,EAAE,KAAKE,EAAEW,KAAKsg/C,UAAU179C,OAAO,EAAEvlB,GAAG,EAAEA,IAAI,CAAC,IAAIuB,EAAEZ,KAAKsg/C,UAAUn9+C,IAAI9D,GAAGU,EAAEa,EAAE4n+C,SAAS,OAAOrp+C,IAAIA,EAAEY,GAAG,OAAOX,GAAGW,EAAE4v+C,QAAQvw+C,GAAGA,EAAEwB,CAAC,CAACzB,EAAEww+C,QAAQvw+C,EAAE,EAAED,EAAEO,UAAU4p+C,cAAc,WAAW,GAAG,IAAIlp+C,UAAUC,OAAO,CAAC,IAAIjB,EAAEgB,UAAU,GAAGjB,EAAEa,KAAKsmG,UAAUlnG,GAAGC,EAAED,EAAEwq+C,SAASxh+C,GAAG8qhB,MAAMtyhB,EAAExB,EAAEwq+C,SAASxh+C,GAAGgrhB,OAAOrzhB,EAAEC,KAAKsp+C,cAAcnq+C,EAAE,EAAEa,KAAKsg/C,UAAU179C,OAAOvlB,GAAG,GAAGW,KAAKsp+C,cAAc,EAAEnq+C,EAAEY,KAAKa,EAAE,MAAM,IAAIuH,GAAG,qBAAqB/I,EAAEq49C,gBAAgB,MAAM,GAAG,IAAIr39C,UAAUC,OAAO,CAAC,IAAI,IAAmBS,EAAEV,UAAU,GAAGY,EAAEZ,UAAU,GAAGiC,EAA3CjC,UAAU,GAAqCiC,EAAEvB,EAAEuB,IAAI,CAAC,IAAIG,EAAExC,KAAKsg/C,UAAUn9+C,IAAId,GAAGG,EAAEin+C,cAAcrh+C,GAAGgrhB,MAAMpyhB,GAAGA,EAAEwB,EAAEon+C,SAASxh+C,GAAG8qhB,KAAK,CAAC,OAAOlyhB,CAAC,CAAC,EAAE7B,EAAEO,UAAU4h/C,eAAe,WAAW,IAAI,IAAIli/C,EAAEY,KAAK2B,WAAWvC,EAAE0g+C,WAAW,CAAC,IAAI3g+C,EAAEC,EAAE2B,OAAO5B,EAAEyviB,WAAW9tS,MAAM3hQ,EAAEqp+C,SAAS557B,WAAW,CAAC,EAAEzviB,EAAEO,UAAUit+C,yBAAyB,SAASvt+C,GAAG,IAAI,IAAID,EAAE,KAAKE,EAAE,KAAKuB,EAAEZ,KAAKkh/C,uBAAuBnh/C,EAAEC,KAAKih/C,oBAAoBr89C,OAAO,EAAE7kB,GAAG,EAAEA,IAAI,CAAC,IAAIO,EAAEN,KAAKih/C,oBAAoB99+C,IAAIpD,GAAGe,EAAER,EAAEko+C,SAAS,OAAO,OAAOrp+C,GAAGmB,EAAEmr+C,gBAAgBrs+C,IAAID,EAAEmB,GAAGM,GAAG,KAAKZ,KAAKkh/C,uBAAuB,GAAGpg/C,EAAE2q+C,gBAAgBrs+C,EAAE,SAASC,EAAEyB,EAAEF,EAAEZ,KAAKmh/C,qBAAqB,MAAM,KAAKnh/C,KAAKmh/C,qBAAqB,GAAG7g/C,EAAEmr+C,gBAAgBrs+C,EAAE,SAASC,EAAE+v+C,WAAW9u+C,GAAGM,EAAEZ,KAAKkh/C,uBAAuB,CAACtg/C,IAAIZ,KAAKmh/C,uBAAuBp2+C,GAAGiprB,OAAO,OAAO70rB,EAAE,yCAAyC4L,GAAGiprB,OAAO70rB,EAAEss+C,gBAAgBrs+C,EAAE,wCAAwCC,EAAE+v+C,WAAWjw+C,GAAG,EAAEA,EAAEO,UAAUos+C,kBAAkB,WAAW,GAAG,IAAI1r+C,UAAUC,OAAO,CAAC,IAAI,IAAIjB,EAAE,EAAED,EAAEa,KAAK2B,WAAWxC,EAAE2g+C,WAAY3g+C,EAAE4B,OAAOyyzC,cAAcp0zC,IAAI,OAAOA,CAAC,CAAC,GAAG,IAAIgB,UAAUC,OAAO,CAAC,IAAI,IAAIhB,EAAEe,UAAU,GAAGQ,EAAE,EAAEb,EAAEC,KAAK2B,WAAW5B,EAAE+/9C,WAAY//9C,EAAEgB,OAAO0q+C,gBAAgBps+C,GAAGuB,IAAI,OAAOA,CAAC,CAAC,EAAEzB,EAAEO,UAAUkviB,SAAS,WAAW,OAAO5uiB,KAAKkr+C,MAAM,EAAE/r+C,EAAEO,UAAU6h/C,qBAAqB,WAAW,IAAI,IAAIni/C,EAAEmE,EAAEiyQ,KAAKr2Q,EAAEa,KAAK2B,WAAWxC,EAAE2g+C,WAAW,CAAC,IAAIzg+C,EAAEF,EAAE4B,OAAOH,EAAEvB,EAAEmp+C,SAAS,IAAInp+C,EAAEiw+C,aAAa,CAAC,GAAGjw+C,EAAEm0zC,aAAa,CAACp0zC,EAAEmE,EAAE2x9C,SAAS,KAAK,CAAC,GAAGt09C,EAAE4yzC,aAAa,CAACp0zC,EAAEmE,EAAE6x9C,SAAS,KAAK,CAAC,CAAC,CAAC,GAAGh29C,IAAImE,EAAEiyQ,KAAK,OAAO,KAAK,IAAI,IAAIz1Q,EAAEX,EAAEkB,EAAEN,KAAK2B,WAAWrB,EAAEw/9C,WAAW,CAAC,IAAIh/9C,EAAER,EAAES,OAAOC,EAAEF,EAAE0n+C,SAAS1n+C,EAAEwu+C,aAAaxu+C,EAAEyyoC,UAAU05V,WAAWlt+C,IAAIwD,EAAE2x9C,WAAWp09C,EAAE0yzC,eAAezzzC,EAAEwD,EAAE6x9C,UAAUp09C,EAAEwyzC,eAAezzzC,EAAEwD,EAAE2x9C,UAAU,CAAC,EAAE/19C,EAAEO,UAAUoh/C,iBAAiB,SAAS3h/C,GAAGC,EAAEM,UAAUoh/C,iBAAiBlh/C,KAAKI,KAAKb,GAAGa,KAAKkr+C,OAAO,IAAIzh+C,GAAGlG,EAAEiyQ,MAAM,IAAI,IAAIn2Q,EAAEW,KAAK2B,WAAWtC,EAAEyg+C,WAAW,IAAI,IAAIl/9C,EAAEvB,EAAE0B,OAAOwyoC,UAAU3kmB,WAAW7uiB,EAAE,EAAEA,EAAE,EAAEA,IAAI,CAAC,IAAIO,EAAEM,EAAEuza,YAAYp0a,GAAGO,IAAIiD,EAAE2x9C,UAAU509C,IAAIiD,EAAE4x9C,UAAUn19C,KAAKkr+C,OAAOX,YAAYxq+C,EAAEwD,EAAE2x9C,SAAS,CAAC,EAAE/19C,EAAEO,UAAUw09C,YAAY,WAAW,MAAM,EAAE,EAAE/09C,EAAEO,UAAUon+B,SAAS,WAAW,OAAO3n+B,CAAC,EAAEA,CAAC,CAA3kJ,CAA6kJ+T,IAAIlB,GAAG,SAAS5S,GAAG,SAASD,IAAIC,EAAEmB,MAAMP,KAAKI,UAAU,CAAC,OAAOhB,IAAID,EAAEK,UAAUJ,GAAGD,EAAEO,UAAUJ,OAAOY,OAAOd,GAAGA,EAAEM,WAAWP,EAAEO,UAAUO,YAAYd,EAAEA,EAAEO,UAAU0xP,WAAW,SAAShyP,GAAG,OAAO,IAAImK,GAAGnK,EAAE,IAAIuU,GAAG,EAAExU,EAAEO,UAAUw09C,YAAY,WAAW,MAAM,EAAE,EAAE/09C,EAAEO,UAAUon+B,SAAS,WAAW,OAAO3n+B,CAAC,EAAEA,CAAC,CAAnS,CAAqSuK,IAAI+y3C,GAAG,SAASr93C,IAAIY,KAAKir+C,KAAK,KAAKjr+C,KAAK0wxB,aAAa,KAAK,IAAIvxxB,EAAEiB,UAAU,GAAGJ,KAAKir+C,KAAK9r+C,EAAEa,KAAK0wxB,aAAatxxB,EAAEg2P,YAAYj2P,EAAE,EAAEs93C,GAAG/83C,UAAUmzQ,UAAU,SAASzzQ,GAAG,IAAID,EAAEC,EAAE,OAAOq93C,GAAG+kH,gBAAgBxh/C,KAAKir+C,KAAKjr+C,KAAK0wxB,aAAavxxB,EAAE8r+C,KAAK9r+C,EAAEuxxB,aAAa,EAAE+rmB,GAAG/83C,UAAUw09C,YAAY,WAAW,MAAM,CAACxv9C,EAAE,EAAE+33C,GAAG/83C,UAAUon+B,SAAS,WAAW,OAAO21Z,EAAE,EAAEA,GAAGrnoC,YAAY,SAASh2P,GAAG,OAAO,IAAIiP,GAAGuz9C,oBAAoBxi+C,EAAE,EAAEq93C,GAAG+kH,gBAAgB,SAASpi/C,EAAED,EAAEE,EAAEuB,GAAG,IAAI,IAAIb,EAAEZ,EAAE,GAAG,EAAEmB,EAAEM,EAAE,GAAG,EAAEE,EAAE3B,EAAEC,EAAEiB,QAAQ,EAAEW,EAAEJ,EAAEvB,EAAEgB,QAAQ,EAAEgC,EAAElD,EAAE,EAAEC,EAAEiB,OAAO,EAAEmC,EAAE5B,EAAE,EAAEvB,EAAEgB,OAAO,IAAI,CAAC,IAAIQ,EAAEzB,EAAEiD,GAAGwwQ,UAAUxzQ,EAAEmD,IAAI,GAAG,IAAI3B,EAAE,OAAOA,EAAE,IAAIiC,GAAGT,GAAGtC,KAAKe,EAAE8B,GAAGJ,GAAGlC,KAAKU,EAAE,GAAG8B,IAAIF,EAAE,OAAO,EAAE,IAAIE,GAAGF,EAAE,OAAO,EAAE,GAAGE,GAAGF,EAAE,OAAO,CAAC,CAAC,EAAE,IAAI8Q,GAAG,WAAW1T,KAAKgr+C,OAAO,IAAI/79C,GAAGjP,KAAKyh/C,QAAQ,IAAI3++C,CAAC,EAAE4Q,GAAGhU,UAAUo3hB,MAAM,SAAS13hB,GAAGA,EAAE03hB,MAAM,sBAAsB,IAAI,IAAI33hB,EAAE,EAAEA,EAAEa,KAAKgr+C,OAAOpm9C,OAAOzlB,IAAI,CAAC,IAAIE,EAAEW,KAAKgr+C,OAAO7n+C,IAAIhE,GAAGA,EAAE,GAAGC,EAAE03hB,MAAM,KAAK13hB,EAAE03hB,MAAM,KAAK,IAAI,IAAIl2hB,EAAEvB,EAAEm1O,iBAAiBz0O,EAAE,EAAEA,EAAEa,EAAEP,OAAON,IAAIA,EAAE,GAAGX,EAAE03hB,MAAM,KAAK13hB,EAAE03hB,MAAMl2hB,EAAEb,GAAGkE,EAAE,IAAIrD,EAAEb,GAAGiD,GAAG5D,EAAEw99C,QAAQ,IAAI,CAACx99C,EAAE03hB,MAAM,MAAM,EAAEpjhB,GAAGhU,UAAUu09C,OAAO,SAAS709C,GAAG,IAAI,IAAID,EAAEC,EAAEuC,WAAWxC,EAAE2g+C,WAAW9/9C,KAAKmlB,IAAIhmB,EAAE4B,OAAO,EAAE2S,GAAGhU,UAAUgi/C,cAAc,SAASti/C,GAAG,IAAI,IAAID,EAAE,EAAEA,EAAEa,KAAKgr+C,OAAOpm9C,OAAOzlB,IAAI,GAAGa,KAAKgr+C,OAAO7n+C,IAAIhE,GAAGozI,OAAOnzI,GAAG,OAAOD,EAAE,OAAO,CAAC,EAAEuU,GAAGhU,UAAUiC,SAAS,WAAW,OAAO3B,KAAKgr+C,OAAOrp+C,UAAU,EAAE+R,GAAGhU,UAAU4o+C,SAAS,WAAW,OAAOto+C,KAAKgr+C,MAAM,EAAEt39C,GAAGhU,UAAUyD,IAAI,SAAS/D,GAAG,OAAOY,KAAKgr+C,OAAO7n+C,IAAI/D,EAAE,EAAEsU,GAAGhU,UAAUii/C,cAAc,SAASvi/C,GAAG,IAAID,EAAE,IAAIs93C,GAAGr93C,EAAEo1O,kBAAkB,OAAOx0O,KAAKyh/C,QAAQt++C,IAAIhE,EAAE,EAAEuU,GAAGhU,UAAUylB,IAAI,SAAS/lB,GAAGY,KAAKgr+C,OAAO7l9C,IAAI/lB,GAAG,IAAID,EAAE,IAAIs93C,GAAGr93C,EAAEo1O,kBAAkBx0O,KAAKyh/C,QAAQvgiB,IAAI/h9B,EAAEC,EAAE,EAAEsU,GAAGhU,UAAUw09C,YAAY,WAAW,MAAM,EAAE,EAAExg9C,GAAGhU,UAAUon+B,SAAS,WAAW,OAAOpz9B,EAAE,EAAE,IAAIhB,GAAG,WAAW,EAAEA,GAAGhT,UAAU83+C,qBAAqB,SAASp4+C,EAAED,EAAEE,EAAEuB,GAAG,EAAE8R,GAAGhT,UAAU4gL,OAAO,WAAW,EAAE5tK,GAAGhT,UAAUw09C,YAAY,WAAW,MAAM,EAAE,EAAExh9C,GAAGhT,UAAUon+B,SAAS,WAAW,OAAOp09B,EAAE,EAAE,IAAIU,GAAG,WAAWpT,KAAK4h/C,kBAAiB,EAAG5h/C,KAAK6h/C,YAAW,EAAG7h/C,KAAK8h/C,oBAAmB,EAAG9h/C,KAAK+h/C,cAAa,EAAG/h/C,KAAKgi/C,yBAAyB,KAAKhi/C,KAAK07+C,IAAI,KAAK17+C,KAAKii/C,oBAAoB,KAAKji/C,KAAKki/C,iBAAiB,EAAEli/C,KAAKmi/C,yBAAyB,EAAEni/C,KAAKoi/C,uBAAuB,EAAEpi/C,KAAKqi/C,SAAS,EAAE,IAAIjj/C,EAAEgB,UAAU,GAAGJ,KAAK07+C,IAAIt8+C,CAAC,EAAEgU,GAAG1T,UAAU4i/C,sBAAsB,SAASlj/C,EAAED,EAAEE,EAAEuB,GAAG,GAAGxB,IAAIC,GAAG,IAAIW,KAAK07+C,IAAIjgB,qBAAqB,CAAC,GAAGro9C,GAAGmv+C,mBAAmBpj/C,EAAEyB,GAAG,OAAM,EAAG,GAAGxB,EAAEo9O,WAAW,CAAC,IAAIz8O,EAAEX,EAAEwlB,OAAO,EAAE,GAAG,IAAIzlB,GAAGyB,IAAIb,GAAG,IAAIa,GAAGzB,IAAIY,EAAE,OAAM,CAAE,CAAC,CAAC,OAAM,CAAE,EAAEqT,GAAG1T,UAAU8i/C,2BAA2B,WAAW,OAAOxi/C,KAAKgi/C,wBAAwB,EAAE5u+C,GAAG1T,UAAU+i/C,8BAA8B,WAAW,OAAOzi/C,KAAK8h/C,kBAAkB,EAAE1u+C,GAAG1T,UAAUgj/C,mBAAmB,WAAW,OAAO1i/C,KAAK07+C,GAAG,EAAEto+C,GAAG1T,UAAUij/C,sBAAsB,WAAW,OAAO3i/C,KAAK6h/C,UAAU,EAAEzu+C,GAAG1T,UAAU83+C,qBAAqB,SAASp4+C,EAAED,EAAEE,EAAEuB,GAAG,GAAGxB,IAAIC,GAAGF,IAAIyB,EAAE,OAAO,KAAKZ,KAAKqi/C,WAAW,IAAIti/C,EAAEX,EAAEo1O,iBAAiBr1O,GAAGmB,EAAElB,EAAEo1O,iBAAiBr1O,EAAE,GAAG2B,EAAEzB,EAAEm1O,iBAAiB5zO,GAAGI,EAAE3B,EAAEm1O,iBAAiB5zO,EAAE,GAAGZ,KAAK07+C,IAAIngB,oBAAoBx79C,EAAEO,EAAEQ,EAAEE,GAAGhB,KAAK07+C,IAAI9f,oBAAoB579C,KAAKki/C,mBAAmBli/C,KAAK07+C,IAAI5f,2BAA2B979C,KAAKmi/C,2BAA2Bni/C,KAAK+h/C,cAAa,GAAI/h/C,KAAKsi/C,sBAAsBlj/C,EAAED,EAAEE,EAAEuB,KAAKZ,KAAK4h/C,kBAAiB,EAAGxi/C,EAAEm2+C,iBAAiBv1+C,KAAK07+C,IAAIv8+C,EAAE,GAAGE,EAAEk2+C,iBAAiBv1+C,KAAK07+C,IAAI96+C,EAAE,GAAGZ,KAAK07+C,IAAI/f,aAAa379C,KAAKoi/C,yBAAyBpi/C,KAAK6h/C,YAAW,EAAG7h/C,KAAK8h/C,oBAAmB,IAAK,EAAE1u+C,GAAG1T,UAAUk89C,gBAAgB,WAAW,OAAO579C,KAAK4h/C,gBAAgB,EAAExu+C,GAAG1T,UAAU4gL,OAAO,WAAW,OAAM,CAAE,EAAEltK,GAAG1T,UAAUkj/C,wBAAwB,WAAW,OAAO5i/C,KAAK+h/C,YAAY,EAAE3u+C,GAAG1T,UAAUw09C,YAAY,WAAW,MAAM,CAACxh9C,GAAG,EAAEU,GAAG1T,UAAUon+B,SAAS,WAAW,OAAO1z9B,EAAE,EAAEA,GAAGmv+C,mBAAmB,SAASnj/C,EAAED,GAAG,OAAO,IAAI0D,KAAKmjH,IAAI5mH,EAAED,EAAE,EAAE,IAAIyU,GAAG,WAAW5T,KAAKi/J,MAAM,KAAKj/J,KAAK6ud,aAAa,KAAK7ud,KAAK+5V,KAAK,KAAK,IAAI36V,EAAEgB,UAAU,GAAGjB,EAAEiB,UAAU,GAAGf,EAAEe,UAAU,GAAGJ,KAAKi/J,MAAM,IAAI96J,EAAE/E,GAAGY,KAAK6ud,aAAa1vd,EAAEa,KAAK+5V,KAAK16V,CAAC,EAAEuU,GAAGlU,UAAUmj/C,gBAAgB,WAAW,OAAO7i/C,KAAK6ud,YAAY,EAAEj7c,GAAGlU,UAAU+39C,cAAc,WAAW,OAAOz39C,KAAKi/J,KAAK,EAAErrJ,GAAGlU,UAAUo3hB,MAAM,SAAS13hB,GAAGA,EAAE03hB,MAAM92hB,KAAKi/J,OAAO7/J,EAAE03hB,MAAM,YAAY92hB,KAAK6ud,cAAczvd,EAAEw99C,QAAQ,WAAW589C,KAAK+5V,KAAK,EAAEnmV,GAAGlU,UAAUmzQ,UAAU,SAASzzQ,GAAG,IAAID,EAAEC,EAAE,OAAOY,KAAKkqH,QAAQ/qH,EAAE0vd,aAAa1vd,EAAE46V,KAAK,EAAEnmV,GAAGlU,UAAU279C,WAAW,SAASj89C,GAAG,OAAO,IAAIY,KAAK6ud,cAAc,IAAI7ud,KAAK+5V,MAAM/5V,KAAK6ud,eAAezvd,CAAC,EAAEwU,GAAGlU,UAAU6E,SAAS,WAAW,OAAOvE,KAAKi/J,MAAM,YAAYj/J,KAAK6ud,aAAa,WAAW7ud,KAAK+5V,IAAI,EAAEnmV,GAAGlU,UAAUi65B,YAAY,WAAW,OAAO355B,KAAK+5V,IAAI,EAAEnmV,GAAGlU,UAAUwqH,QAAQ,SAAS9qH,EAAED,GAAG,OAAOa,KAAK6ud,aAAazvd,GAAG,EAAEY,KAAK6ud,aAAazvd,EAAE,EAAEY,KAAK+5V,KAAK56V,GAAG,EAAEa,KAAK+5V,KAAK56V,EAAE,EAAE,CAAC,EAAEyU,GAAGlU,UAAUw09C,YAAY,WAAW,MAAM,CAACxv9C,EAAE,EAAEkP,GAAGlU,UAAUon+B,SAAS,WAAW,OAAOlz9B,EAAE,EAAE,IAAIgB,GAAG,WAAW5U,KAAKq0+C,SAAS,IAAIvx+C,EAAE9C,KAAK6nW,KAAK,KAAK,IAAIzoW,EAAEgB,UAAU,GAAGJ,KAAK6nW,KAAKzoW,CAAC,EAAEwV,GAAGlV,UAAUo3hB,MAAM,SAAS13hB,GAAGA,EAAEw99C,QAAQ,kBAAkB,IAAI,IAAIz99C,EAAEa,KAAK2B,WAAWxC,EAAE2g+C,WAAY3g+C,EAAE4B,OAAO+1hB,MAAM13hB,EAAG,EAAEwV,GAAGlV,UAAUiC,SAAS,WAAW,OAAO3B,KAAKq0+C,SAAS339C,SAAS/a,UAAU,EAAEiT,GAAGlV,UAAUk1+C,cAAc,SAASx1+C,GAAGY,KAAKu0+C,eAAe,IAAI,IAAIp1+C,EAAEa,KAAK2B,WAAWtC,EAAEF,EAAE4B,OAAO5B,EAAE2g+C,WAAW,CAAC,IAAIl/9C,EAAEzB,EAAE4B,OAAOhB,EAAEC,KAAK60+C,gBAAgBx1+C,EAAEuB,GAAGxB,EAAE+lB,IAAIplB,GAAGV,EAAEuB,CAAC,CAAC,EAAEgU,GAAGlV,UAAU60+C,aAAa,WAAW,IAAIn1+C,EAAEY,KAAK6nW,KAAK2oyB,IAAInwoC,OAAO,EAAEL,KAAKmlB,IAAInlB,KAAK6nW,KAAK2oyB,IAAI,GAAG,EAAE,GAAGxwoC,KAAKmlB,IAAInlB,KAAK6nW,KAAK2oyB,IAAIpxoC,GAAGA,EAAE,EAAE,EAAEwV,GAAGlV,UAAUm1+C,gBAAgB,SAASz1+C,EAAED,GAAG,IAAIE,EAAEF,EAAE0vd,aAAazvd,EAAEyvd,aAAa,EAAEjud,EAAEZ,KAAK6nW,KAAK2oyB,IAAIrxoC,EAAE0vd,cAAc9ud,EAAEZ,EAAE46V,KAAK,IAAI56V,EAAE8/J,MAAMy1zC,SAAS9z9C,GAAGb,GAAGV,IAAI,IAAIiB,EAAE,IAAIb,MAAMJ,GAAG+9H,KAAK,MAAMt8H,EAAE,EAAER,EAAEQ,KAAK,IAAIqD,EAAE/E,EAAE6/J,OAAO,IAAI,IAAIj+J,EAAE5B,EAAEyvd,aAAa,EAAE7td,GAAG7B,EAAE0vd,aAAa7td,IAAIV,EAAEQ,KAAKd,KAAK6nW,KAAK2oyB,IAAIxvoC,GAAG,OAAOjB,IAAIO,EAAEQ,GAAG3B,EAAE8/J,OAAO,IAAIhiJ,GAAG3c,EAAE,IAAImJ,GAAGzJ,KAAK6nW,KAAKqjoC,QAAQ,EAAEt29C,GAAGlV,UAAUylB,IAAI,SAAS/lB,EAAED,EAAEE,GAAG,IAAIuB,EAAE,IAAIgT,GAAGxU,EAAED,EAAEE,GAAGU,EAAEC,KAAKq0+C,SAASlx+C,IAAIvC,GAAG,OAAO,OAAOb,EAAEA,GAAGC,KAAKq0+C,SAASnzhB,IAAItg9B,EAAEA,GAAGA,EAAE,EAAEgU,GAAGlV,UAAUu89C,eAAe,SAAS789C,GAAG,IAAI,IAAID,EAAEa,KAAK2B,WAAWxC,EAAE2g+C,WAAY,GAAG3g+C,EAAE4B,OAAOk+J,MAAM1sB,OAAOnzI,GAAG,OAAM,EAAG,OAAM,CAAE,EAAEwV,GAAGlV,UAAUw09C,YAAY,WAAW,MAAM,EAAE,EAAEt/8C,GAAGlV,UAAUon+B,SAAS,WAAW,OAAOly9B,EAAE,EAAE,IAAIjC,GAAG,WAAW,EAAEA,GAAGjT,UAAUg3+C,qBAAqB,SAASt3+C,GAAG,IAAID,EAAE,EAAEE,EAAE,IAAI4P,GAAG5P,EAAE8lB,IAAI,IAAItf,EAAE1G,IAAI,EAAE,CAAC,IAAIyB,EAAEZ,KAAK22+C,aAAav3+C,EAAED,GAAGE,EAAE8lB,IAAI,IAAItf,EAAEjF,IAAIzB,EAAEyB,CAAC,OAAOzB,EAAEC,EAAEiB,OAAO,GAAG,OAAOsS,GAAGsxU,WAAW5kV,EAAE,EAAEsT,GAAGjT,UAAUi3+C,aAAa,SAASv3+C,EAAED,GAAG,IAAI,IAAIE,EAAEiL,GAAG8h6C,SAASht6C,EAAED,GAAGC,EAAED,EAAE,IAAIyB,EAAEzB,EAAE,EAAEyB,EAAExB,EAAEiB,QAAYiK,GAAG8h6C,SAASht6C,EAAEwB,EAAE,GAAGxB,EAAEwB,MAAMvB,GAAQuB,IAAI,OAAOA,EAAE,CAAC,EAAE+R,GAAGjT,UAAUw09C,YAAY,WAAW,MAAM,EAAE,EAAEvh9C,GAAGjT,UAAUon+B,SAAS,WAAW,OAAOn09B,EAAE,EAAEA,GAAGsxU,WAAW,SAAS7kV,GAAG,IAAI,IAAID,EAAE,IAAIM,MAAML,EAAEwlB,QAAQw4G,KAAK,MAAM/9H,EAAE,EAAEA,EAAEF,EAAEkB,OAAOhB,IAAIF,EAAEE,GAAGD,EAAE+D,IAAI9D,GAAGm29C,WAAW,OAAOr29C,CAAC,EAAE,IAAI2V,GAAG,WAAW9U,KAAKb,EAAE,KAAKa,KAAKwwoC,IAAI,KAAKxwoC,KAAK2/H,WAAW,KAAK3/H,KAAK8i/C,KAAK,IAAI1++C,EAAEpE,KAAK+i/C,KAAK,IAAI3++C,EAAE,IAAIhF,EAAEgB,UAAU,GAAGJ,KAAKb,EAAEC,EAAEY,KAAKwwoC,IAAIpxoC,EAAEo1O,iBAAiB,IAAIr1O,EAAE,IAAIwT,GAAG3S,KAAK2/H,WAAWxgI,EAAEu3+C,qBAAqB12+C,KAAKwwoC,IAAI,EAAE17nC,GAAGpV,UAAU80O,eAAe,WAAW,OAAOx0O,KAAKwwoC,GAAG,EAAE17nC,GAAGpV,UAAUy49C,QAAQ,SAAS/49C,GAAG,IAAID,EAAEa,KAAKwwoC,IAAIxwoC,KAAK2/H,WAAWvgI,IAAI6E,EAAE5E,EAAEW,KAAKwwoC,IAAIxwoC,KAAK2/H,WAAWvgI,EAAE,IAAI6E,EAAE,OAAO9E,EAAEE,EAAEF,EAAEE,CAAC,EAAEyV,GAAGpV,UAAU249C,QAAQ,SAASj59C,GAAG,IAAID,EAAEa,KAAKwwoC,IAAIxwoC,KAAK2/H,WAAWvgI,IAAI6E,EAAE5E,EAAEW,KAAKwwoC,IAAIxwoC,KAAK2/H,WAAWvgI,EAAE,IAAI6E,EAAE,OAAO9E,EAAEE,EAAEF,EAAEE,CAAC,EAAEyV,GAAGpV,UAAUsj/C,0BAA0B,WAAW,GAAG,IAAI5i/C,UAAUC,OAAO,CAAC,IAAIjB,EAAEgB,UAAU,GAAGjB,EAAEiB,UAAU,GAAGf,EAAEe,UAAU,GAAGQ,EAAER,UAAU,GAAGJ,KAAKgj/C,0BAA0Bhj/C,KAAK2/H,WAAWvgI,GAAGY,KAAK2/H,WAAWvgI,EAAE,GAAGD,EAAEA,EAAEwgI,WAAWtgI,GAAGF,EAAEwgI,WAAWtgI,EAAE,GAAGuB,EAAE,MAAM,GAAG,IAAIR,UAAUC,OAAO,CAAC,IAAIN,EAAEK,UAAU,GAAGE,EAAEF,UAAU,GAAGU,EAAEV,UAAU,GAAGY,EAAEZ,UAAU,GAAGiC,EAAEjC,UAAU,GAAGoC,EAAEpC,UAAU,GAAGS,EAAEb,KAAKwwoC,IAAIzwoC,GAAG+C,EAAE9C,KAAKwwoC,IAAIlwoC,GAAGsC,EAAE9B,EAAE0voC,IAAIxvoC,GAAG0B,EAAE5B,EAAE0voC,IAAInuoC,GAAG,GAAG/B,EAAEP,GAAG,GAAGsC,EAAErB,GAAG,EAAE,OAAOwB,EAAE+y+C,iBAAiBv1+C,KAAKb,EAAEY,EAAEe,EAAE3B,EAAE6B,GAAG,KAAK,GAAGhB,KAAK8i/C,KAAKpy7C,KAAK7vD,EAAEiC,GAAG9C,KAAK+i/C,KAAKry7C,KAAK9tD,EAAEF,IAAI1C,KAAK8i/C,KAAK38oC,WAAWnmW,KAAK+i/C,MAAM,OAAO,KAAK,IAAI5g/C,EAAEU,KAAK2K,OAAOzN,EAAEO,GAAG,GAAGqC,EAAEE,KAAK2K,OAAOxM,EAAEqB,GAAG,GAAGtC,EAAEoC,IAAInB,EAAE2B,GAAG3C,KAAKgj/C,0BAA0Bjj/C,EAAEoC,EAAErB,EAAEE,EAAE2B,EAAEH,GAAGG,EAAEN,GAAGrC,KAAKgj/C,0BAA0Bjj/C,EAAEoC,EAAErB,EAAE6B,EAAEN,EAAEG,IAAIL,EAAE7B,IAAIU,EAAE2B,GAAG3C,KAAKgj/C,0BAA0B7g/C,EAAE7B,EAAEQ,EAAEE,EAAE2B,EAAEH,GAAGG,EAAEN,GAAGrC,KAAKgj/C,0BAA0B7g/C,EAAE7B,EAAEQ,EAAE6B,EAAEN,EAAEG,GAAG,CAAC,EAAEsS,GAAGpV,UAAUuj/C,gBAAgB,WAAW,OAAOjj/C,KAAK2/H,UAAU,EAAE7qH,GAAGpV,UAAUwj/C,kBAAkB,SAAS9j/C,EAAED,GAAG,IAAI,IAAIE,EAAE,EAAEA,EAAEW,KAAK2/H,WAAWt/H,OAAO,EAAEhB,IAAI,IAAI,IAAIuB,EAAE,EAAEA,EAAExB,EAAEugI,WAAWt/H,OAAO,EAAEO,IAAIZ,KAAKgj/C,0BAA0B3j/C,EAAED,EAAEwB,EAAEzB,EAAE,EAAE2V,GAAGpV,UAAUw09C,YAAY,WAAW,MAAM,EAAE,EAAEp/8C,GAAGpV,UAAUon+B,SAAS,WAAW,OAAOhy9B,EAAE,EAAE,IAAIgI,GAAG,SAAS1d,IAAIY,KAAKkv+C,OAAOzv+C,MAAM,GAAG29H,OAAO/tG,KAAI,WAAW,OAAO5vB,MAAM,EAAE,IAAG,IAAI,IAAIN,EAAE,EAAEA,EAAE,EAAEA,IAAI,IAAI,IAAIE,EAAE,EAAEA,EAAE,EAAEA,IAAIW,KAAKkv+C,OAAO/v+C,GAAGE,GAAGD,EAAE+j/C,UAAU,EAAEtm+C,GAAG,CAACsm+C,WAAW,CAACr/+C,cAAa,IAAKgZ,GAAGpd,UAAUkq+C,SAAS,SAASxq+C,EAAED,GAAG,OAAOa,KAAKkv+C,OAAO9v+C,GAAGD,EAAE,EAAE2d,GAAGpd,UAAUqq+C,SAAS,SAAS3q+C,EAAED,EAAEE,GAAGW,KAAKkv+C,OAAO9v+C,GAAGD,GAAGE,CAAC,EAAEyd,GAAGpd,UAAU6zQ,OAAO,WAAW,GAAG,IAAInzQ,UAAUC,OAAO,CAAC,IAAI,IAAIjB,EAAE,EAAEA,EAAE,EAAEA,IAAI,IAAI,IAAID,EAAE,EAAEA,EAAE,EAAEA,IAAI,GAAGa,KAAKkv+C,OAAO9v+C,GAAGD,KAAK2d,GAAGqm+C,WAAW,OAAM,EAAG,OAAM,CAAE,CAAC,GAAG,IAAI/i/C,UAAUC,OAAO,CAAC,IAAIhB,EAAEe,UAAU,GAAG,OAAOJ,KAAKkv+C,OAAO7v+C,GAAG,KAAKyd,GAAGqm+C,UAAU,CAAC,GAAG,IAAI/i/C,UAAUC,OAAO,CAAC,IAAIO,EAAER,UAAU,GAAGL,EAAEK,UAAU,GAAG,OAAOJ,KAAKkv+C,OAAOtu+C,GAAGb,KAAK+c,GAAGqm+C,UAAU,CAAC,EAAErm+C,GAAGpd,UAAU4P,UAAU,WAAW,IAAI,IAAIlQ,EAAE,EAAEA,EAAE,EAAEA,IAAI,IAAIY,KAAKuzQ,OAAOn0Q,GAAG,CAAC,IAAID,EAAEa,KAAKkv+C,OAAO9v+C,GAAG,GAAGY,KAAKkv+C,OAAO9v+C,GAAG,GAAGD,IAAIA,EAAEa,KAAKkv+C,OAAO9v+C,GAAG,IAAID,EAAE,IAAIA,EAAE,GAAG,IAAI,IAAIE,EAAE,EAAEA,EAAE,EAAEA,IAAI,CAAC,IAAIuB,EAAE,EAAEZ,KAAKkv+C,OAAO9v+C,GAAGC,GAAGF,IAAIyB,EAAE,GAAGZ,KAAKkv+C,OAAO9v+C,GAAGC,GAAGuB,CAAC,CAAC,CAAC,EAAEkc,GAAGpd,UAAUi2Y,SAAS,SAASv2Y,GAAG,OAAOY,KAAKkv+C,OAAO9v+C,GAAGgJ,GAAGgrhB,OAAOpzhB,KAAKkv+C,OAAO9v+C,GAAGgJ,GAAG8qhB,KAAK,EAAEp2gB,GAAGpd,UAAUy0a,YAAY,SAAS/0a,EAAED,GAAG,OAAOa,KAAKkv+C,OAAO9v+C,GAAGD,IAAI,EAAEoE,EAAE6x9C,SAAS7x9C,EAAE2x9C,QAAQ,EAAEp48C,GAAGpd,UAAU6E,SAAS,WAAW,MAAM,MAAMvE,KAAKkv+C,OAAO,GAAG,GAAG,IAAIlv+C,KAAKkv+C,OAAO,GAAG,GAAG,OAAOlv+C,KAAKkv+C,OAAO,GAAG,GAAG,IAAIlv+C,KAAKkv+C,OAAO,GAAG,EAAE,EAAEpy9C,GAAGpd,UAAUylB,IAAI,WAAW,GAAG,IAAI/kB,UAAUC,OAAO,IAAI,IAAIjB,EAAEgB,UAAU,GAAGjB,EAAE,EAAEA,EAAE,EAAEA,IAAI,IAAI,IAAIE,EAAE,EAAEA,EAAE,EAAEA,IAAI,CAAC,IAAIuB,EAAExB,EAAE+0a,YAAYh1a,EAAEE,GAAGuB,IAAI2C,EAAE6x9C,UAAUx09C,IAAI2C,EAAE2x9C,WAAWl19C,KAAKuzQ,OAAOp0Q,EAAEE,GAAGW,KAAKkv+C,OAAO/v+C,GAAGE,GAAGyd,GAAGsm+C,gBAAgBxi/C,GAAGZ,KAAKkv+C,OAAO/v+C,GAAGE,IAAIyd,GAAGsm+C,gBAAgBxi/C,GAAG,MAAM,GAAG,IAAIR,UAAUC,OAAO,CAAC,IAAIN,EAAEK,UAAU,GAAGE,EAAEF,UAAU,GAAGA,UAAU,KAAKmD,EAAE2x9C,UAAUl19C,KAAKkv+C,OAAOnv+C,GAAGO,IAAI,CAAC,EAAEwc,GAAGpd,UAAUw09C,YAAY,WAAW,MAAM,EAAE,EAAEp38C,GAAGpd,UAAUon+B,SAAS,WAAW,OAAOhq9B,EAAE,EAAEA,GAAGsm+C,gBAAgB,SAAShk/C,GAAG,OAAOA,IAAImE,EAAE6x9C,SAAS,EAAEh29C,IAAImE,EAAE2x9C,SAAS,EAAEp48C,GAAGqm+C,UAAU,EAAEtm+C,GAAGsm+C,WAAWhg/C,IAAI,WAAW,OAAO,CAAC,EAAE7D,OAAOkU,iBAAiBsJ,GAAGD,IAAI,IAAII,GAAG,SAAS7d,GAAG,SAASD,IAAI,GAAGC,EAAEQ,KAAKI,MAAMA,KAAKwwoC,IAAI,KAAKxwoC,KAAKgp+C,KAAK,KAAKhp+C,KAAK+v+C,OAAO,IAAIn79C,GAAG5U,MAAMA,KAAKktd,MAAM,KAAKltd,KAAKqj/C,KAAK,KAAKrj/C,KAAKsj/C,aAAY,EAAGtj/C,KAAKkv+C,OAAO,IAAIpy9C,GAAG9c,KAAKuj/C,YAAY,EAAE,IAAInj/C,UAAUC,OAAO,CAAC,IAAIhB,EAAEe,UAAU,GAAGjB,EAAES,KAAKI,KAAKX,EAAE,KAAK,MAAM,GAAG,IAAIe,UAAUC,OAAO,CAAC,IAAIO,EAAER,UAAU,GAAGL,EAAEK,UAAU,GAAGJ,KAAKwwoC,IAAI5voC,EAAEZ,KAAKkr+C,OAAOnr+C,CAAC,CAAC,CAAC,OAAOX,IAAID,EAAEK,UAAUJ,GAAGD,EAAEO,UAAUJ,OAAOY,OAAOd,GAAGA,EAAEM,WAAWP,EAAEO,UAAUO,YAAYd,EAAEA,EAAEO,UAAUkq+C,SAAS,WAAW,OAAO5p+C,KAAKkv+C,MAAM,EAAE/v+C,EAAEO,UAAU8j/C,iBAAiB,WAAW,IAAIpk/C,EAAE,IAAIK,MAAM,GAAG29H,KAAK,MAAwC,OAAlCh+H,EAAE,GAAGY,KAAKwwoC,IAAI,GAAGpxoC,EAAE,GAAGY,KAAKwwoC,IAAI,GAAU,IAAIrxoC,EAAEC,EAAEqK,GAAGoh+C,YAAY7q+C,KAAKkr+C,QAAQ,EAAE/r+C,EAAEO,UAAU8r+C,WAAW,WAAW,OAAOxr+C,KAAKsj/C,WAAW,EAAEnk/C,EAAEO,UAAU80O,eAAe,WAAW,OAAOx0O,KAAKwwoC,GAAG,EAAErxoC,EAAEO,UAAU+j/C,YAAY,SAASrk/C,GAAGY,KAAKsj/C,YAAYlk/C,CAAC,EAAED,EAAEO,UAAU80iB,QAAQ,SAASp1iB,GAAGY,KAAKktd,MAAM9td,CAAC,EAAED,EAAEO,UAAU6yI,OAAO,SAASnzI,GAAG,KAAKA,aAAaD,GAAG,OAAM,EAAG,IAAIE,EAAED,EAAE,GAAGY,KAAKwwoC,IAAInwoC,SAAShB,EAAEmxoC,IAAInwoC,OAAO,OAAM,EAAG,IAAI,IAAIO,GAAE,EAAGb,GAAE,EAAGO,EAAEN,KAAKwwoC,IAAInwoC,OAAOS,EAAE,EAAEA,EAAEd,KAAKwwoC,IAAInwoC,OAAOS,IAAI,GAAGd,KAAKwwoC,IAAI1voC,GAAG4z9C,SAASr19C,EAAEmxoC,IAAI1voC,MAAMF,GAAE,GAAIZ,KAAKwwoC,IAAI1voC,GAAG4z9C,SAASr19C,EAAEmxoC,MAAMlwoC,MAAMP,GAAE,IAAKa,IAAIb,EAAE,OAAM,EAAG,OAAM,CAAE,EAAEZ,EAAEO,UAAU+39C,cAAc,WAAW,GAAG,IAAIr39C,UAAUC,OAAO,OAAOL,KAAKwwoC,IAAInwoC,OAAO,EAAEL,KAAKwwoC,IAAI,GAAG,KAAK,GAAG,IAAIpwoC,UAAUC,OAAO,CAAC,IAAIjB,EAAEgB,UAAU,GAAG,OAAOJ,KAAKwwoC,IAAIpxoC,EAAE,CAAC,EAAED,EAAEO,UAAUo3hB,MAAM,SAAS13hB,GAAGA,EAAE03hB,MAAM,QAAQ92hB,KAAKktd,MAAM,MAAM9td,EAAE03hB,MAAM,gBAAgB,IAAI,IAAI33hB,EAAE,EAAEA,EAAEa,KAAKwwoC,IAAInwoC,OAAOlB,IAAIA,EAAE,GAAGC,EAAE03hB,MAAM,KAAK13hB,EAAE03hB,MAAM92hB,KAAKwwoC,IAAIrxoC,GAAG8E,EAAE,IAAIjE,KAAKwwoC,IAAIrxoC,GAAG6D,GAAG5D,EAAE03hB,MAAM,MAAM92hB,KAAKkr+C,OAAO,IAAIlr+C,KAAKuj/C,YAAY,EAAEpk/C,EAAEO,UAAUyt+C,UAAU,SAAS/t+C,GAAGD,EAAE+t+C,SAASlt+C,KAAKkr+C,OAAO9r+C,EAAE,EAAED,EAAEO,UAAUiyF,YAAY,WAAW,QAAQ3xF,KAAKkr+C,OAAOb,UAAW,IAAIrq+C,KAAKwwoC,IAAInwoC,UAAUL,KAAKwwoC,IAAI,GAAGj+/B,OAAOvyI,KAAKwwoC,IAAI,GAAI,EAAErxoC,EAAEO,UAAU88O,SAAS,WAAW,OAAOx8O,KAAKwwoC,IAAI,GAAGj+/B,OAAOvyI,KAAKwwoC,IAAIxwoC,KAAKwwoC,IAAInwoC,OAAO,GAAG,EAAElB,EAAEO,UAAUgk/C,uBAAuB,WAAW,OAAO1j/C,KAAKwwoC,IAAInwoC,OAAO,CAAC,EAAElB,EAAEO,UAAU2v+C,cAAc,WAAW,OAAOrv+C,KAAKuj/C,WAAW,EAAEpk/C,EAAEO,UAAUuj+C,aAAa,WAAW,OAAOjj+C,KAAKwwoC,IAAInwoC,MAAM,EAAElB,EAAEO,UAAU8v+C,aAAa,SAASpw+C,GAAGA,EAAE03hB,MAAM,QAAQ92hB,KAAKktd,MAAM,MAAM,IAAI,IAAI/td,EAAEa,KAAKwwoC,IAAInwoC,OAAO,EAAElB,GAAG,EAAEA,IAAIC,EAAE03hB,MAAM92hB,KAAKwwoC,IAAIrxoC,GAAG,KAAKC,EAAEw99C,QAAQ,GAAG,EAAEz99C,EAAEO,UAAUik/C,qBAAqB,WAAW,OAAO,OAAO3j/C,KAAKqj/C,OAAOrj/C,KAAKqj/C,KAAK,IAAIvu+C,GAAG9U,OAAOA,KAAKqj/C,IAAI,EAAElk/C,EAAEO,UAAU4/9C,YAAY,WAAW,GAAG,OAAOt/9C,KAAKgp+C,KAAK,CAAChp+C,KAAKgp+C,KAAK,IAAI5k+C,EAAE,IAAI,IAAIhF,EAAE,EAAEA,EAAEY,KAAKwwoC,IAAInwoC,OAAOjB,IAAIY,KAAKgp+C,KAAKzQ,gBAAgBv49C,KAAKwwoC,IAAIpxoC,GAAG,CAAC,OAAOY,KAAKgp+C,IAAI,EAAE7p+C,EAAEO,UAAUw1+C,gBAAgB,SAAS91+C,EAAED,EAAEE,EAAEuB,GAAG,IAAIb,EAAE,IAAIoE,EAAE/E,EAAE22zC,gBAAgBn1zC,IAAIN,EAAEnB,EAAE2B,EAAE1B,EAAEs89C,gBAAgBr89C,EAAEuB,GAAGI,EAAEV,EAAE,EAAE,GAAGU,EAAEhB,KAAKwwoC,IAAInwoC,OAAO,CAAC,IAAIgC,EAAErC,KAAKwwoC,IAAIxvoC,GAAGjB,EAAE209C,SAASry9C,KAAK/B,EAAEU,EAAEF,EAAE,EAAE,CAACd,KAAK+v+C,OAAO5q9C,IAAIplB,EAAEO,EAAEQ,EAAE,EAAE3B,EAAEO,UAAU6E,SAAS,WAAW,IAAInF,EAAE,IAAImG,EAAEnG,EAAEglF,OAAO,QAAQpkF,KAAKktd,MAAM,MAAM9td,EAAEglF,OAAO,gBAAgB,IAAI,IAAIjlF,EAAE,EAAEA,EAAEa,KAAKwwoC,IAAInwoC,OAAOlB,IAAIA,EAAE,GAAGC,EAAEglF,OAAO,KAAKhlF,EAAEglF,OAAOpkF,KAAKwwoC,IAAIrxoC,GAAG8E,EAAE,IAAIjE,KAAKwwoC,IAAIrxoC,GAAG6D,GAAG,OAAO5D,EAAEglF,OAAO,MAAMpkF,KAAKkr+C,OAAO,IAAIlr+C,KAAKuj/C,aAAank/C,EAAEmF,UAAU,EAAEpF,EAAEO,UAAUkk/C,iBAAiB,SAASxk/C,GAAG,GAAGY,KAAKwwoC,IAAInwoC,SAASjB,EAAEoxoC,IAAInwoC,OAAO,OAAM,EAAG,IAAI,IAAIlB,EAAE,EAAEA,EAAEa,KAAKwwoC,IAAInwoC,OAAOlB,IAAI,IAAIa,KAAKwwoC,IAAIrxoC,GAAGu19C,SAASt19C,EAAEoxoC,IAAIrxoC,IAAI,OAAM,EAAG,OAAM,CAAE,EAAEA,EAAEO,UAAUmk/C,cAAc,SAASzk/C,GAAGY,KAAKuj/C,YAAYnk/C,CAAC,EAAED,EAAEO,UAAUok/C,wBAAwB,WAAW,OAAO9j/C,KAAK+v+C,MAAM,EAAE5w+C,EAAEO,UAAU61+C,iBAAiB,SAASn2+C,EAAED,EAAEE,GAAG,IAAI,IAAIuB,EAAE,EAAEA,EAAExB,EAAEq89C,qBAAqB769C,IAAIZ,KAAKk1+C,gBAAgB91+C,EAAED,EAAEE,EAAEuB,EAAE,EAAEzB,EAAEO,UAAUw09C,YAAY,WAAW,MAAM,EAAE,EAAE/09C,EAAEO,UAAUon+B,SAAS,WAAW,OAAO3n+B,CAAC,EAAEA,EAAE+t+C,SAAS,WAAW,GAAG,IAAI9s+C,UAAUC,OAAO,OAAOjB,EAAEM,UAAUwt+C,SAAS3s+C,MAAMP,KAAKI,WAAW,IAAIjB,EAAEiB,UAAU,GAAGf,EAAEe,UAAU,GAAGf,EAAE0k/C,kBAAkB5k/C,EAAEg1a,YAAY,EAAE/ra,GAAGu/9C,IAAIxo+C,EAAEg1a,YAAY,EAAE/ra,GAAGu/9C,IAAI,GAAGxo+C,EAAEkr+C,WAAWhr+C,EAAE0k/C,kBAAkB5k/C,EAAEg1a,YAAY,EAAE/ra,GAAG8qhB,MAAM/zhB,EAAEg1a,YAAY,EAAE/ra,GAAG8qhB,MAAM,GAAG7zhB,EAAE0k/C,kBAAkB5k/C,EAAEg1a,YAAY,EAAE/ra,GAAGgrhB,OAAOj0hB,EAAEg1a,YAAY,EAAE/ra,GAAGgrhB,OAAO,GAAG,EAAEj0hB,CAAC,CAA/pH,CAAiqHwK,IAAIyT,GAAG,SAAShe,GAAGY,KAAKgk/C,uBAAuB,KAAKhk/C,KAAKik/C,cAAc,KAAKjk/C,KAAKsj+C,UAAU,KAAKtj+C,KAAKkk/C,OAAO,KAAKlk/C,KAAKsg/C,UAAU,IAAI5s+C,GAAG1T,KAAKy7+C,WAAWr8+C,GAAG,IAAI,EAAEge,GAAG1d,UAAUyk/C,yBAAyB,SAAS/k/C,GAAGY,KAAKgk/C,uBAAuB5k/C,CAAC,EAAEge,GAAG1d,UAAU0k/C,iBAAiB,SAAShl/C,GAAG,IAAID,EAAEa,KAAKsg/C,UAAUqB,cAAcvi/C,GAAG,GAAG,OAAOD,EAAE,CAAC,IAAIE,EAAEF,EAAEyviB,WAAWhuiB,EAAExB,EAAEwviB,WAAWzviB,EAAEyk/C,iBAAiBxk/C,KAAKwB,EAAE,IAAI6I,GAAGrK,EAAEwviB,aAAainvB,OAAOx2xC,EAAEyhQ,MAAMlgQ,GAAG,IAAIb,EAAEqd,GAAGin+C,WAAWzj/C,GAAGN,EAAEnB,EAAEkw+C,gBAAgBtv+C,EAAEZ,EAAE0k/C,cAAcvj/C,EAAE,MAAMN,KAAKsg/C,UAAUn79C,IAAI/lB,GAAGA,EAAEyk/C,cAAczm+C,GAAGin+C,WAAWjl/C,EAAEwviB,YAAY,EAAExxhB,GAAG1d,UAAU4k/C,eAAe,SAASll/C,EAAED,GAAG,IAAI,IAAIE,EAAE,IAAI4P,GAAGrO,EAAExB,EAAEuC,WAAWf,EAAEk/9C,WAAW,CAAC,IAAI//9C,EAAEa,EAAEG,OAAOT,EAAEP,EAAEop+C,yBAAyBro+C,EAAE,IAAIgS,GAAGzT,GAAGuq+C,SAAStp+C,GAAGP,EAAEyp+C,aAAa1o+C,GAAGf,EAAE4p+C,kBAAkBtq+C,EAAE8lB,IAAIplB,GAAGZ,EAAEgmB,IAAIplB,EAAEiq+C,mBAAmBjq+C,EAAEyt4B,WAAW,CAAC,EAAEpw3B,GAAG1d,UAAU6k/C,gBAAgB,SAASnl/C,GAAG,IAAI,IAAID,EAAE,IAAI8P,GAAG5P,EAAED,EAAEou4B,WAAW7r4B,WAAWtC,EAAEyg+C,WAAW,CAAC,IAAIl/9C,EAAEvB,EAAE0B,OAAO,IAAIH,EAAEyo+C,YAAY,CAAC,IAAItp+C,EAAE,IAAI6I,GAAG7I,EAAEG,OAAOU,GAAGzB,EAAEgmB,IAAIplB,EAAE,CAAC,CAAC,OAAO+K,GAAGyhC,KAAKptC,EAAE2L,GAAG2oxB,gBAAgBt0xB,CAAC,EAAEie,GAAG1d,UAAU8k/C,0BAA0B,WAAW,OAAOxk/C,KAAKsj+C,UAAU3yQ,eAAe,EAAEvzsC,GAAG1d,UAAU+k/C,SAAS,SAASrl/C,GAAG,GAAG,OAAOY,KAAKik/C,cAAc,OAAOjk/C,KAAKik/C,cAAc,IAAI9k/C,EAAE,IAAIkT,GAAGhT,EAAE,IAAI6L,GAAG,OAAO7L,EAAEw89C,kBAAkBz89C,GAAGD,EAAE43+C,sBAAsB,IAAI3j+C,GAAG/T,IAAIF,CAAC,EAAEie,GAAG1d,UAAUwoB,OAAO,SAAS9oB,EAAED,GAAG,IAAIE,EAAEW,KAAKgk/C,uBAAuB,OAAO3k/C,IAAIA,EAAED,EAAEsg+C,qBAAqB1/9C,KAAKsj+C,UAAUlk+C,EAAEu/9C,aAAa,IAAI/99C,EAAE,IAAIsT,GAAG7U,EAAEW,KAAKy7+C,YAAY17+C,EAAE,IAAI4U,GAAGvV,EAAED,EAAEyB,GAAGk/+C,YAAY,GAAG//+C,EAAE6kB,QAAQ,EAAE,OAAO5kB,KAAKwk/C,4BAA4Bxk/C,KAAK0k/C,kBAAkB3k/C,EAAEV,GAAGW,KAAKkk/C,OAAO,IAAIj6+C,GAAG,IAAI+H,IAAIhS,KAAKkk/C,OAAOtT,SAAS5w+C,KAAKsg/C,UAAUhY,YAAY,IAAIho+C,EAAEN,KAAKuk/C,gBAAgBvk/C,KAAKkk/C,QAAQpj/C,EAAE,IAAIwH,GAAGtI,KAAKsj+C,WAAWtj+C,KAAKsk/C,eAAehk/C,EAAEQ,GAAG,IAAIE,EAAEF,EAAEww+C,cAAc,OAAGtw+C,EAAE4jB,QAAQ,EAAS5kB,KAAKwk/C,4BAAmCxk/C,KAAKsj+C,UAAUwD,cAAc9l+C,EAAE,EAAEoc,GAAG1d,UAAUgl/C,kBAAkB,SAAStl/C,EAAED,GAAG,IAAIE,EAAEW,KAAKyk/C,SAAStl/C,GAAGE,EAAEw3+C,aAAaz3+C,GAAG,IAAI,IAAIwB,EAAEvB,EAAEm2+C,qBAAqB7z+C,WAAWf,EAAEk/9C,WAAW,CAAC,IAAI//9C,EAAEa,EAAEG,OAAOT,EAAEP,EAAEy0O,iBAAiB,GAAG,IAAIl0O,EAAED,SAASC,EAAE,GAAGo09C,SAASp09C,EAAE,IAAI,CAAC,IAAIQ,EAAEf,EAAEykI,UAAUxjI,EAAE,IAAIic,GAAGld,EAAEy0O,iBAAiB,IAAI/qO,GAAG3I,IAAId,KAAKok/C,iBAAiBpj/C,EAAE,CAAC,CAAC,EAAEoc,GAAG1d,UAAUil/C,SAAS,SAASvl/C,GAAGY,KAAKik/C,cAAc7k/C,CAAC,EAAEge,GAAG1d,UAAUw09C,YAAY,WAAW,MAAM,EAAE,EAAE928C,GAAG1d,UAAUon+B,SAAS,WAAW,OAAO1p9B,EAAE,EAAEA,GAAGin+C,WAAW,SAASjl/C,GAAG,IAAID,EAAEC,EAAE+0a,YAAY,EAAE/ra,GAAG8qhB,MAAM7zhB,EAAED,EAAE+0a,YAAY,EAAE/ra,GAAGgrhB,OAAO,OAAOj0hB,IAAIoE,EAAE2x9C,UAAU719C,IAAIkE,EAAE6x9C,SAAS,EAAEj29C,IAAIoE,EAAE6x9C,UAAU/19C,IAAIkE,EAAE2x9C,UAAU,EAAE,CAAC,EAAE938C,GAAGwn+C,kBAAkB,SAASxl/C,GAAG,IAAI,IAAID,EAAE,IAAIoJ,GAAGlJ,EAAE,IAAI4P,GAAG7P,EAAE0g+C,WAAW,CAAC,IAAIl/9C,EAAExB,EAAE2B,OAAOhB,EAAEZ,EAAE269C,iBAAiBl59C,EAAE4zO,kBAAkBn1O,EAAE8lB,IAAIplB,EAAE,CAAC,OAAOZ,EAAE2n+C,cAAczn+C,EAAE,EAAE,IAAI6d,GAAG,WAAW,GAAGld,KAAK6k/C,OAAO,KAAK7k/C,KAAK8k/C,aAAa,KAAK9k/C,KAAK+k/C,SAAS,KAAK/k/C,KAAKgl/C,SAAS,KAAKhl/C,KAAKil/C,WAAU,EAAG,IAAI7k/C,UAAUC,OAAO,CAAC,IAAIjB,EAAEgB,UAAU,GAAGjB,EAAEiB,UAAU,GAAGJ,KAAK6k/C,OAAOzl/C,EAAEY,KAAK8k/C,aAAa3l/C,EAAEa,KAAK+k/C,SAAS,EAAE/k/C,KAAKgl/C,SAAS,EAAEhl/C,KAAKil/C,WAAWjl/C,KAAKkl/C,oBAAoB,MAAM,GAAG,IAAI9k/C,UAAUC,OAAO,CAAC,IAAIhB,EAAEe,UAAU,GAAGQ,EAAER,UAAU,GAAGL,EAAEK,UAAU,GAAGE,EAAEF,UAAU,GAAGJ,KAAK6k/C,OAAOxl/C,EAAEW,KAAK8k/C,aAAalk/C,EAAEZ,KAAK+k/C,SAAShl/C,EAAEC,KAAKgl/C,SAAS1k/C,EAAEN,KAAKil/C,WAAWjl/C,KAAKkl/C,oBAAoB,CAAC,EAAEho+C,GAAGxd,UAAUyl/C,QAAQ,WAAW,GAAGjh/C,EAAE9D,UAAU,GAAG0N,IAAI,IAAI,IAAI1O,EAAEgB,UAAU,GAAGuB,WAAWvC,EAAE0g+C,WAAW,CAAC,IAAI3g+C,EAAEC,EAAE2B,OAAOf,KAAKml/C,QAAQhm/C,EAAEq1O,iBAAiB,MAAM,GAAGp0O,UAAU,aAAaX,MAAM,CAAC,IAAI,IAAIJ,EAAEe,UAAU,GAAGQ,EAAE,EAAEA,EAAEvB,EAAEgB,OAAOO,IAAIvB,EAAEuB,GAAGqD,EAAE5E,EAAEuB,GAAGqD,EAAEjE,KAAK8k/C,aAAa9k/C,KAAK+k/C,SAAS1l/C,EAAEuB,GAAGoC,EAAE3D,EAAEuB,GAAGoC,EAAEhD,KAAK8k/C,aAAa9k/C,KAAKgl/C,SAAS,IAAI3l/C,EAAEgB,QAAQhB,EAAE,GAAGq19C,SAASr19C,EAAE,KAAKoG,EAAEy6H,IAAI081C,QAAQv99C,EAAE,CAAC,EAAE6d,GAAGxd,UAAUoiG,MAAM,WAAW,GAAG59F,EAAE9D,UAAU,GAAG0N,IAAI,CAAC,IAAI,IAAI1O,EAAEgB,UAAU,GAAGjB,EAAE,IAAI8P,GAAG5P,EAAED,EAAEuC,WAAWtC,EAAEyg+C,WAAW,CAAC,IAAIl/9C,EAAEvB,EAAE0B,OAAO5B,EAAEgmB,IAAI,IAAItT,GAAG7R,KAAK8hG,MAAMlhG,EAAE4zO,kBAAkB5zO,EAAE4jI,WAAW,CAAC,OAAOrlI,CAAC,CAAC,GAAGiB,UAAU,aAAaX,MAAM,CAAC,IAAI,IAAIM,EAAEK,UAAU,GAAGE,EAAE,IAAIb,MAAMM,EAAEM,QAAQ+8H,KAAK,MAAMt8H,EAAE,EAAEA,EAAEf,EAAEM,OAAOS,IAAIR,EAAEQ,GAAG,IAAIqD,EAAEtB,KAAKogD,OAAOljD,EAAEe,GAAGmD,EAAEjE,KAAK+k/C,UAAU/k/C,KAAK8k/C,cAAcji/C,KAAKogD,OAAOljD,EAAEe,GAAGkC,EAAEhD,KAAKgl/C,UAAUhl/C,KAAK8k/C,cAAc/k/C,EAAEe,GAAG6E,GAAG,OAAO0I,GAAGiz9C,qBAAqBhh+C,EAAE,CAAC,EAAE4c,GAAGxd,UAAUwl/C,mBAAmB,WAAW,OAAO,IAAIll/C,KAAK8k/C,YAAY,EAAE5n+C,GAAGxd,UAAU81+C,mBAAmB,WAAW,IAAIp2+C,EAAEY,KAAK6k/C,OAAOrP,qBAAqB,OAAOx1+C,KAAKil/C,WAAWjl/C,KAAKml/C,QAAQ/l/C,GAAGA,CAAC,EAAE8d,GAAGxd,UAAUm3+C,aAAa,SAASz3+C,GAAG,IAAID,EAAEC,EAAEY,KAAKil/C,YAAY9l/C,EAAEa,KAAK8hG,MAAM1iG,IAAIY,KAAK6k/C,OAAOhO,aAAa13+C,EAAE,EAAE+d,GAAGxd,UAAUw09C,YAAY,WAAW,MAAM,CAAChi9C,GAAG,EAAEgL,GAAGxd,UAAUon+B,SAAS,WAAW,OAAO5p9B,EAAE,EAAE,IAAIC,GAAG,WAAWnd,KAAK07+C,IAAI,IAAIxw+C,GAAGlL,KAAKol/C,YAAY,KAAK,IAAIhm/C,EAAEgB,UAAU,GAAGJ,KAAKol/C,YAAYhm/C,CAAC,EAAEme,GAAG,CAAC8n+C,KAAK,CAACvh/C,cAAa,IAAKqZ,GAAGzd,UAAU4l/C,8BAA8B,WAAW,GAAG,IAAIll/C,UAAUC,OAAO,IAAI,IAAIjB,EAAEY,KAAKol/C,YAAYzj/C,WAAWvC,EAAE0g+C,WAAW,CAAC,IAAI3g+C,EAAEC,EAAE2B,OAAOyzO,iBAAiBx0O,KAAKsl/C,8BAA8Bnm/C,EAAE,GAAGa,KAAKol/C,aAAapl/C,KAAKsl/C,8BAA8Bnm/C,EAAEA,EAAEkB,OAAO,GAAGL,KAAKol/C,YAAY,MAAM,GAAG,IAAIhl/C,UAAUC,OAAO,IAAI,IAAIhB,EAAEe,UAAU,GAAGQ,EAAER,UAAU,GAAGuB,WAAWf,EAAEk/9C,WAAW,IAAI,IAAI//9C,EAAEa,EAAEG,OAAOyzO,iBAAiBl0O,EAAE,EAAEA,EAAEP,EAAEM,OAAO,EAAEC,IAAI,GAAGP,EAAEO,GAAGiyI,OAAOlzI,GAAG,MAAM,IAAI+G,EAAE,iDAAiD9F,EAAE,QAAQjB,EAAE,EAAE8d,GAAGzd,UAAU6l/C,2BAA2B,WAAW,GAAG,IAAInl/C,UAAUC,OAAO,IAAI,IAAIjB,EAAEY,KAAKol/C,YAAYzj/C,WAAWvC,EAAE0g+C,WAAW,IAAI,IAAI3g+C,EAAEC,EAAE2B,OAAO1B,EAAEW,KAAKol/C,YAAYzj/C,WAAWtC,EAAEyg+C,WAAW,CAAC,IAAIl/9C,EAAEvB,EAAE0B,OAAOf,KAAKul/C,2BAA2Bpm/C,EAAEyB,EAAE,MAAM,GAAG,IAAIR,UAAUC,OAAO,IAAI,IAAIN,EAAEK,UAAU,GAAGE,EAAEF,UAAU,GAAGU,EAAEf,EAAEy0O,iBAAiBxzO,EAAEV,EAAEk0O,iBAAiBnyO,EAAE,EAAEA,EAAEvB,EAAET,OAAO,EAAEgC,IAAI,IAAI,IAAIG,EAAE,EAAEA,EAAExB,EAAEX,OAAO,EAAEmC,IAAIxC,KAAKul/C,2BAA2Bxl/C,EAAEsC,EAAE/B,EAAEkC,QAAQ,GAAG,IAAIpC,UAAUC,OAAO,CAAC,IAAIQ,EAAET,UAAU,GAAG0C,EAAE1C,UAAU,GAAGwC,EAAExC,UAAU,GAAGsC,EAAEtC,UAAU,GAAG,GAAGS,IAAI+B,GAAGE,IAAIJ,EAAE,OAAO,KAAK,IAAIP,EAAEtB,EAAE2zO,iBAAiB1xO,GAAGH,EAAE9B,EAAE2zO,iBAAiB1xO,EAAE,GAAGE,EAAEJ,EAAE4xO,iBAAiB9xO,GAAGkB,EAAEhB,EAAE4xO,iBAAiB9xO,EAAE,GAAG,GAAG1C,KAAK07+C,IAAIngB,oBAAoBp59C,EAAEQ,EAAEK,EAAEY,GAAG5D,KAAK07+C,IAAI9f,oBAAoB579C,KAAK07+C,IAAI/f,YAAY379C,KAAK4i/C,wBAAwB5i/C,KAAK07+C,IAAIv5+C,EAAEQ,IAAI3C,KAAK4i/C,wBAAwB5i/C,KAAK07+C,IAAI14+C,EAAEY,IAAI,MAAM,IAAIwC,EAAE,mCAAmCjE,EAAE,IAAIQ,EAAE,QAAQK,EAAE,IAAIY,EAAE,CAAC,EAAEuZ,GAAGzd,UAAU8l/C,WAAW,WAAWxl/C,KAAKsl/C,gCAAgCtl/C,KAAKul/C,6BAA6Bvl/C,KAAKyl/C,gBAAgB,EAAEto+C,GAAGzd,UAAU+l/C,eAAe,WAAW,GAAG,IAAIrl/C,UAAUC,OAAO,IAAI,IAAIjB,EAAEY,KAAKol/C,YAAYzj/C,WAAWvC,EAAE0g+C,WAAW,CAAC,IAAI3g+C,EAAEC,EAAE2B,OAAOf,KAAKyl/C,eAAetm/C,EAAE,MAAM,GAAG,IAAIiB,UAAUC,OAAO,IAAI,IAAIhB,EAAEe,UAAU,GAAGo0O,iBAAiB5zO,EAAE,EAAEA,EAAEvB,EAAEgB,OAAO,EAAEO,IAAIZ,KAAK0l/C,cAAcrm/C,EAAEuB,GAAGvB,EAAEuB,EAAE,GAAGvB,EAAEuB,EAAE,GAAG,EAAEuc,GAAGzd,UAAUkj/C,wBAAwB,SAASxj/C,EAAED,EAAEE,GAAG,IAAI,IAAIuB,EAAE,EAAEA,EAAExB,EAAEq89C,qBAAqB769C,IAAI,CAAC,IAAIb,EAAEX,EAAE22zC,gBAAgBn1zC,GAAG,IAAIb,EAAEwyI,OAAOpzI,KAAKY,EAAEwyI,OAAOlzI,GAAG,OAAM,CAAE,CAAC,OAAM,CAAE,EAAE8d,GAAGzd,UAAUgm/C,cAAc,SAAStm/C,EAAED,EAAEE,GAAG,GAAGD,EAAEmzI,OAAOlzI,GAAG,MAAM,IAAI+G,EAAE,+BAA+B+W,GAAGko+C,KAAKvrB,iBAAiB,CAAC169C,EAAED,EAAEE,IAAI,EAAE8d,GAAGzd,UAAUw09C,YAAY,WAAW,MAAM,EAAE,EAAE/28C,GAAGzd,UAAUon+B,SAAS,WAAW,OAAO3p9B,EAAE,EAAEI,GAAG8n+C,KAAKli/C,IAAI,WAAW,OAAO,IAAIoF,EAAE,EAAEjJ,OAAOkU,iBAAiB2J,GAAGI,IAAI,IAAID,GAAG,WAAWtd,KAAK07+C,IAAI,KAAK17+C,KAAK2l/C,IAAI,KAAK3l/C,KAAK4l/C,YAAY,KAAK5l/C,KAAK6l/C,UAAU,KAAK7l/C,KAAK8l/C,UAAU,KAAK9l/C,KAAK+l/C,UAAU,KAAK/l/C,KAAK8k/C,aAAa,KAAK9k/C,KAAK+39C,MAAM,KAAK/39C,KAAKg49C,MAAM,KAAKh49C,KAAKi49C,MAAM,KAAKj49C,KAAKk49C,MAAM,KAAKl49C,KAAKgm/C,QAAQ,IAAIvm/C,MAAM,GAAG29H,KAAK,MAAMp9H,KAAKim/C,SAAS,KAAK,IAAI7m/C,EAAEgB,UAAU,GAAGjB,EAAEiB,UAAU,GAAGf,EAAEe,UAAU,GAAG,GAAGJ,KAAK4l/C,YAAYxm/C,EAAEY,KAAK2l/C,IAAIvm/C,EAAEY,KAAK8k/C,aAAa3l/C,EAAEa,KAAK07+C,IAAIr8+C,EAAEF,GAAG,EAAE,MAAM,IAAIiE,EAAE,iCAAiC,IAAIjE,IAAIa,KAAK2l/C,IAAI,IAAIxh/C,EAAEnE,KAAK8hG,MAAM1iG,EAAE6E,GAAGjE,KAAK8hG,MAAM1iG,EAAE4D,IAAIhD,KAAK8l/C,UAAU,IAAI3h/C,EAAEnE,KAAK+l/C,UAAU,IAAI5h/C,GAAGnE,KAAKkm/C,YAAYlm/C,KAAK2l/C,IAAI,EAAEno+C,GAAG,CAAC2o+C,0BAA0B,CAACri/C,cAAa,IAAKwZ,GAAG5d,UAAU0m/C,iBAAiB,SAAShn/C,EAAED,GAAG,IAAIE,EAAEwD,KAAKgL,IAAIzO,EAAE6E,EAAE9E,EAAE8E,GAAGrD,EAAEiC,KAAK8K,IAAIvO,EAAE6E,EAAE9E,EAAE8E,GAAGlE,EAAE8C,KAAKgL,IAAIzO,EAAE4D,EAAE7D,EAAE6D,GAAG1C,EAAEuC,KAAK8K,IAAIvO,EAAE4D,EAAE7D,EAAE6D,GAAGlC,EAAEd,KAAKg49C,MAAM349C,GAAGW,KAAK+39C,MAAMn39C,GAAGZ,KAAKk49C,MAAMn49C,GAAGC,KAAKi49C,MAAM339C,EAAE,GAAGQ,EAAE,OAAM,EAAG,IAAIE,EAAEhB,KAAKqm/C,0BAA0Bjn/C,EAAED,GAAG,OAAO4L,GAAGiprB,SAASlzrB,GAAGE,GAAG,2BAA2BA,CAAC,EAAEsc,GAAG5d,UAAUwm/C,YAAY,SAAS9m/C,GAAGY,KAAK+39C,MAAM349C,EAAE6E,EAAE,GAAGjE,KAAKg49C,MAAM549C,EAAE6E,EAAE,GAAGjE,KAAKi49C,MAAM749C,EAAE4D,EAAE,GAAGhD,KAAKk49C,MAAM949C,EAAE4D,EAAE,GAAGhD,KAAKgm/C,QAAQ,GAAG,IAAI7h/C,EAAEnE,KAAKg49C,MAAMh49C,KAAKk49C,OAAOl49C,KAAKgm/C,QAAQ,GAAG,IAAI7h/C,EAAEnE,KAAK+39C,MAAM/39C,KAAKk49C,OAAOl49C,KAAKgm/C,QAAQ,GAAG,IAAI7h/C,EAAEnE,KAAK+39C,MAAM/39C,KAAKi49C,OAAOj49C,KAAKgm/C,QAAQ,GAAG,IAAI7h/C,EAAEnE,KAAKg49C,MAAMh49C,KAAKi49C,MAAM,EAAE368C,GAAG5d,UAAUymW,WAAW,SAAS/mW,EAAED,GAAG,OAAO,IAAIa,KAAK8k/C,aAAa9k/C,KAAKom/C,iBAAiBhn/C,EAAED,IAAIa,KAAKsm/C,WAAWln/C,EAAEY,KAAK8l/C,WAAW9l/C,KAAKsm/C,WAAWnn/C,EAAEa,KAAK+l/C,WAAW/l/C,KAAKom/C,iBAAiBpm/C,KAAK8l/C,UAAU9l/C,KAAK+l/C,WAAW,EAAEzo+C,GAAG5d,UAAUoiG,MAAM,SAAS1iG,GAAG,OAAOyD,KAAKogD,MAAM7jD,EAAEY,KAAK8k/C,aAAa,EAAExn+C,GAAG5d,UAAU+39C,cAAc,WAAW,OAAOz39C,KAAK4l/C,WAAW,EAAEto+C,GAAG5d,UAAU4m/C,WAAW,SAASln/C,EAAED,GAAGA,EAAE8E,EAAEjE,KAAK8hG,MAAM1iG,EAAE6E,GAAG9E,EAAE6D,EAAEhD,KAAK8hG,MAAM1iG,EAAE4D,EAAE,EAAEsa,GAAG5d,UAAU6m/C,gBAAgB,WAAW,GAAG,OAAOvm/C,KAAKim/C,SAAS,CAAC,IAAI7m/C,EAAEke,GAAG6o+C,0BAA0Bnm/C,KAAK8k/C,aAAa9k/C,KAAKim/C,SAAS,IAAI7h/C,EAAEpE,KAAK4l/C,YAAY3h/C,EAAE7E,EAAEY,KAAK4l/C,YAAY3h/C,EAAE7E,EAAEY,KAAK4l/C,YAAY5i/C,EAAE5D,EAAEY,KAAK4l/C,YAAY5i/C,EAAE5D,EAAE,CAAC,OAAOY,KAAKim/C,QAAQ,EAAE3o+C,GAAG5d,UAAU8m/C,uBAAuB,SAASpn/C,EAAED,GAAG,OAAOa,KAAK07+C,IAAIngB,oBAAoBn89C,EAAED,EAAEa,KAAKgm/C,QAAQ,GAAGhm/C,KAAKgm/C,QAAQ,OAAMhm/C,KAAK07+C,IAAI9f,oBAAoB579C,KAAK07+C,IAAIngB,oBAAoBn89C,EAAED,EAAEa,KAAKgm/C,QAAQ,GAAGhm/C,KAAKgm/C,QAAQ,IAAMhm/C,KAAK07+C,IAAI9f,oBAAoB579C,KAAK07+C,IAAIngB,oBAAoBn89C,EAAED,EAAEa,KAAKgm/C,QAAQ,GAAGhm/C,KAAKgm/C,QAAQ,IAAMhm/C,KAAK07+C,IAAI9f,oBAAoB579C,KAAK07+C,IAAIngB,oBAAoBn89C,EAAED,EAAEa,KAAKgm/C,QAAQ,GAAGhm/C,KAAKgm/C,QAAQ,IAAMhm/C,KAAK07+C,IAAI9f,qBAAoB,EAAEt+8C,GAAG5d,UAAU2m/C,0BAA0B,SAASjn/C,EAAED,GAAG,IAAIE,GAAE,EAAGuB,GAAE,EAAG,OAAOZ,KAAK07+C,IAAIngB,oBAAoBn89C,EAAED,EAAEa,KAAKgm/C,QAAQ,GAAGhm/C,KAAKgm/C,QAAQ,OAAMhm/C,KAAK07+C,IAAI/f,aAAa379C,KAAK07+C,IAAIngB,oBAAoBn89C,EAAED,EAAEa,KAAKgm/C,QAAQ,GAAGhm/C,KAAKgm/C,QAAQ,IAAMhm/C,KAAK07+C,IAAI/f,aAAa379C,KAAK07+C,IAAI9f,oBAAoBv89C,GAAE,GAAIW,KAAK07+C,IAAIngB,oBAAoBn89C,EAAED,EAAEa,KAAKgm/C,QAAQ,GAAGhm/C,KAAKgm/C,QAAQ,IAAMhm/C,KAAK07+C,IAAI/f,aAAa379C,KAAK07+C,IAAI9f,oBAAoBh79C,GAAE,GAAIZ,KAAK07+C,IAAIngB,oBAAoBn89C,EAAED,EAAEa,KAAKgm/C,QAAQ,GAAGhm/C,KAAKgm/C,QAAQ,IAAMhm/C,KAAK07+C,IAAI/f,YAAgBt89C,GAAIuB,GAAOxB,EAAEmzI,OAAOvyI,KAAK2l/C,MAAQxm/C,EAAEozI,OAAOvyI,KAAK2l/C,QAAS,EAAEro+C,GAAG5d,UAAU+m/C,eAAe,SAASrn/C,EAAED,GAAG,IAAIE,EAAED,EAAEq49C,cAAct49C,GAAGyB,EAAExB,EAAEq49C,cAAct49C,EAAE,GAAG,QAAQa,KAAKmmW,WAAW9mW,EAAEuB,KAAKxB,EAAE81+C,gBAAgBl1+C,KAAKy39C,gBAAgBt49C,IAAG,EAAG,EAAEme,GAAG5d,UAAUw09C,YAAY,WAAW,MAAM,EAAE,EAAE528C,GAAG5d,UAAUon+B,SAAS,WAAW,OAAOxp9B,EAAE,EAAEE,GAAG2o+C,0BAA0Bhj/C,IAAI,WAAW,MAAM,GAAG,EAAE7D,OAAOkU,iBAAiB8J,GAAGE,IAAI,IAAIC,GAAG,WAAWzd,KAAK+1+C,SAAS,IAAI3x+C,EAAEpE,KAAK0m/C,gBAAgB,IAAIt1+C,EAAE,EAAEqM,GAAG/d,UAAU82Q,OAAO,WAAW,GAAG,IAAIp2Q,UAAUC,aAAa,GAAG,IAAID,UAAUC,OAAO,CAAC,IAAmBlB,EAAEiB,UAAU,GAAzBA,UAAU,GAAoB+1+C,eAAeh3+C,EAAEa,KAAK0m/C,iBAAiB1m/C,KAAKw2Q,OAAOx2Q,KAAK0m/C,gBAAgB,CAAC,EAAEjp+C,GAAG/d,UAAUw09C,YAAY,WAAW,MAAM,EAAE,EAAEz28C,GAAG/d,UAAUon+B,SAAS,WAAW,OAAOrp9B,EAAE,EAAE,IAAIJ,GAAG,WAAWrd,KAAKw4X,OAAO,KAAK,IAAIp5X,EAAEgB,UAAU,GAAGJ,KAAKw4X,OAAOp5X,CAAC,EAAEye,GAAG,CAAC8o+C,mBAAmB,CAAC7i/C,cAAa,IAAKuZ,GAAG3d,UAAUooW,KAAK,WAAW,GAAG,IAAI1nW,UAAUC,OAAO,CAAC,IAAIjB,EAAEgB,UAAU,GAAG,OAAOJ,KAAK8nW,KAAK1oW,EAAE,MAAM,EAAE,CAAC,GAAG,IAAIgB,UAAUC,OAAO,CAAC,IAAIlB,EAAEiB,UAAU,GAAGf,EAAEe,UAAU,GAAGQ,EAAER,UAAU,GAAGL,EAAEZ,EAAEon/C,kBAAkBjm/C,EAAE,IAAIsd,GAAGze,EAAEE,EAAEuB,GAAG,OAAOZ,KAAKw4X,OAAOvpS,MAAMlvF,EAAE,CAACm09C,YAAY,WAAW,MAAM,CAACtq9C,GAAG,EAAE8n+C,UAAU,SAASty+C,GAAGA,EAAEo3Q,OAAOz2Q,EAAEO,EAAE,IAAIA,EAAEsm/C,aAAa,CAAC,EAAEvp+C,GAAG3d,UAAUw09C,YAAY,WAAW,MAAM,EAAE,EAAE728C,GAAG3d,UAAUon+B,SAAS,WAAW,OAAOzp9B,EAAE,EAAEQ,GAAG8o+C,mBAAmBxj/C,IAAI,WAAW,OAAOya,EAAE,EAAEte,OAAOkU,iBAAiB6J,GAAGQ,IAAI,IAAID,GAAG,SAASxe,GAAG,SAASD,IAAIC,EAAEQ,KAAKI,MAAMA,KAAK6m/C,UAAU,KAAK7m/C,KAAK8m/C,YAAY,KAAK9m/C,KAAK+m/C,qBAAqB,KAAK/m/C,KAAKgn/C,cAAa,EAAG,IAAI7n/C,EAAEiB,UAAU,GAAGf,EAAEe,UAAU,GAAGQ,EAAER,UAAU,GAAGJ,KAAK6m/C,UAAU1n/C,EAAEa,KAAK8m/C,YAAYzn/C,EAAEW,KAAK+m/C,qBAAqBnm/C,CAAC,CAAC,OAAOxB,IAAID,EAAEK,UAAUJ,GAAGD,EAAEO,UAAUJ,OAAOY,OAAOd,GAAGA,EAAEM,WAAWP,EAAEO,UAAUO,YAAYd,EAAEA,EAAEO,UAAUkn/C,YAAY,WAAW,OAAO5m/C,KAAKgn/C,YAAY,EAAE7n/C,EAAEO,UAAU82Q,OAAO,WAAW,GAAG,IAAIp2Q,UAAUC,OAAO,OAAOjB,EAAEM,UAAU82Q,OAAOj2Q,MAAMP,KAAKI,WAAW,IAAmBf,EAAEe,UAAU,GAAGQ,EAA5BR,UAAU,GAAsB2sD,aAAa,GAAG,OAAO/sD,KAAK8m/C,aAAalm/C,IAAIZ,KAAK8m/C,aAAazn/C,IAAIW,KAAK+m/C,qBAAqB,OAAO,KAAK/m/C,KAAKgn/C,aAAahn/C,KAAK6m/C,UAAUJ,eAAe7l/C,EAAEvB,EAAE,EAAEF,EAAEO,UAAUw09C,YAAY,WAAW,MAAM,EAAE,EAAE/09C,EAAEO,UAAUon+B,SAAS,WAAW,OAAO3n+B,CAAC,EAAEA,CAAC,CAAnxB,CAAqxBse,IAAIC,GAAG,WAAW1d,KAAK07+C,IAAI,KAAK17+C,KAAKin/C,uBAAuB,KAAK,IAAI7n/C,EAAEgB,UAAU,GAAGJ,KAAK07+C,IAAIt8+C,EAAEY,KAAKin/C,uBAAuB,IAAIh4+C,EAAE,EAAEyO,GAAGhe,UAAU83+C,qBAAqB,SAASp4+C,EAAED,EAAEE,EAAEuB,GAAG,GAAGxB,IAAIC,GAAGF,IAAIyB,EAAE,OAAO,KAAK,IAAIb,EAAEX,EAAEo1O,iBAAiBr1O,GAAGmB,EAAElB,EAAEo1O,iBAAiBr1O,EAAE,GAAG2B,EAAEzB,EAAEm1O,iBAAiB5zO,GAAGI,EAAE3B,EAAEm1O,iBAAiB5zO,EAAE,GAAG,GAAGZ,KAAK07+C,IAAIngB,oBAAoBx79C,EAAEO,EAAEQ,EAAEE,GAAGhB,KAAK07+C,IAAI9f,mBAAmB579C,KAAK07+C,IAAI5f,yBAAyB,CAAC,IAAI,IAAIz59C,EAAE,EAAEA,EAAErC,KAAK07+C,IAAIjgB,qBAAqBp59C,IAAIrC,KAAKin/C,uBAAuB9h+C,IAAInlB,KAAK07+C,IAAI3lL,gBAAgB1zzC,IAAIjD,EAAEm2+C,iBAAiBv1+C,KAAK07+C,IAAIv8+C,EAAE,GAAGE,EAAEk2+C,iBAAiBv1+C,KAAK07+C,IAAI96+C,EAAE,EAAE,CAAC,EAAE8c,GAAGhe,UAAU4gL,OAAO,WAAW,OAAM,CAAE,EAAE5iK,GAAGhe,UAAUwn/C,yBAAyB,WAAW,OAAOln/C,KAAKin/C,sBAAsB,EAAEvp+C,GAAGhe,UAAUw09C,YAAY,WAAW,MAAM,CAACxh9C,GAAG,EAAEgL,GAAGhe,UAAUon+B,SAAS,WAAW,OAAOpp9B,EAAE,EAAE,IAAIS,GAAG,WAAWne,KAAKmn/C,IAAI,KAAKnn/C,KAAK07+C,IAAI,KAAK17+C,KAAK8k/C,aAAa,KAAK9k/C,KAAK6k/C,OAAO,KAAK7k/C,KAAKon/C,cAAc,KAAKpn/C,KAAKk3+C,iBAAiB,KAAK,IAAI93+C,EAAEgB,UAAU,GAAGJ,KAAKmn/C,IAAI/n/C,EAAEY,KAAK07+C,IAAI,IAAIxw+C,GAAGlL,KAAK07+C,IAAI7f,kBAAkBz89C,GAAGY,KAAK8k/C,aAAa1l/C,EAAEouL,UAAU,EAAErvK,GAAGze,UAAU2n/C,iBAAiB,SAASjo/C,GAAG,IAAID,EAAE0S,GAAG2j+C,mBAAmBp2+C,GAAGC,EAAE,IAAI8d,GAAGhe,GAAG,IAAIE,EAAEmm/C,YAAY,CAAC,MAAMpm/C,GAAG,KAAKA,aAAauG,GAAG,MAAMvG,EAAEA,EAAEil+C,iBAAiB,CAAC,EAAElm9C,GAAGze,UAAU81+C,mBAAmB,WAAW,OAAO3j+C,GAAG2j+C,mBAAmBx1+C,KAAKk3+C,iBAAiB,EAAE/49C,GAAGze,UAAU4n/C,UAAU,SAASlo/C,EAAED,GAAG,IAAIE,EAAEW,KAAKun/C,0BAA0Bno/C,EAAED,GAAGa,KAAKwn/C,yBAAyBno/C,GAAGW,KAAKyn/C,mBAAmBro/C,EAAE,EAAE+e,GAAGze,UAAU6n/C,0BAA0B,SAASno/C,EAAED,GAAG,IAAIE,EAAE,IAAIqe,GAAGve,GAAG,OAAOa,KAAK6k/C,OAAO9N,sBAAsB13+C,GAAGW,KAAK6k/C,OAAOhO,aAAaz3+C,GAAGC,EAAE6n/C,0BAA0B,EAAE/o+C,GAAGze,UAAU+n/C,mBAAmB,WAAW,GAAGvj/C,EAAE9D,UAAU,GAAG0N,IAAI,IAAI,IAAI1O,EAAEgB,UAAU,GAAGuB,WAAWvC,EAAE0g+C,WAAW,CAAC,IAAI3g+C,EAAEC,EAAE2B,OAAOf,KAAKyn/C,mBAAmBto/C,EAAE,MAAM,GAAGiB,UAAU,aAAayR,GAAG,IAAI,IAAIxS,EAAEe,UAAU,GAAGQ,EAAEvB,EAAEm1O,iBAAiBz0O,EAAE,EAAEA,EAAEa,EAAEP,OAAON,IAAI,CAAC,IAAIO,EAAE,IAAIgd,GAAG1c,EAAEb,GAAGC,KAAK8k/C,aAAa9k/C,KAAK07+C,KAAK17+C,KAAKon/C,cAAct/oC,KAAKxnW,EAAEjB,EAAEU,IAAIV,EAAE61+C,gBAAgBt0+C,EAAEb,GAAGA,EAAE,CAAC,EAAEoe,GAAGze,UAAUm3+C,aAAa,SAASz3+C,GAAGY,KAAKk3+C,iBAAiB93+C,EAAEY,KAAK6k/C,OAAO,IAAIxy+C,GAAGrS,KAAKon/C,cAAc,IAAI/p+C,GAAGrd,KAAK6k/C,OAAOhvwC,YAAY71O,KAAKsn/C,UAAUlo/C,EAAEY,KAAK07+C,IAAI,EAAEv99C,GAAGze,UAAU8n/C,yBAAyB,SAASpo/C,GAAG,IAAI,IAAID,EAAEC,EAAEuC,WAAWxC,EAAE2g+C,WAAW,CAAC,IAAIzg+C,EAAEF,EAAE4B,OAAOH,EAAE,IAAI0c,GAAGje,EAAEW,KAAK8k/C,aAAa9k/C,KAAK07+C,KAAK17+C,KAAKon/C,cAAct/oC,KAAKlnW,EAAE,CAAC,EAAEud,GAAGze,UAAUw09C,YAAY,WAAW,MAAM,CAAChi9C,GAAG,EAAEiM,GAAGze,UAAUon+B,SAAS,WAAW,OAAO3o9B,EAAE,EAAE,IAAIR,GAAG,WAAW,GAAG3d,KAAK0n/C,SAAS,KAAK1n/C,KAAKwqX,UAAU,KAAKxqX,KAAKy7+C,WAAW,IAAIlp+C,GAAGvS,KAAK2n/C,gBAAgB,KAAK3n/C,KAAK4n/C,eAAe,KAAK,IAAIxn/C,UAAUC,OAAO,CAAC,IAAIjB,EAAEgB,UAAU,GAAGJ,KAAK0n/C,SAASto/C,CAAC,MAAM,GAAG,IAAIgB,UAAUC,OAAO,CAAC,IAAIlB,EAAEiB,UAAU,GAAGf,EAAEe,UAAU,GAAGJ,KAAK0n/C,SAASvo/C,EAAEa,KAAKy7+C,WAAWp8+C,CAAC,CAAC,EAAEye,GAAG,CAAC859C,UAAU,CAAC9z+C,cAAa,GAAI+j/C,SAAS,CAAC/j/C,cAAa,GAAI00+C,SAAS,CAAC10+C,cAAa,GAAI20+C,WAAW,CAAC30+C,cAAa,GAAIgk/C,qBAAqB,CAAChk/C,cAAa,IAAK6Z,GAAGje,UAAUqo/C,qBAAqB,SAAS3o/C,GAAG,IAAID,EAAE,IAAI+d,GAAG,IAAIiB,GAAG,IAAI9W,GAAG,IAAIjI,EAAEouL,YAAYnuL,EAAE,IAAI+d,GAAGpd,KAAKy7+C,YAAYp8+C,EAAE8k/C,yBAAyB/k/C,GAAGC,EAAEsl/C,SAASxl/C,GAAGa,KAAK2n/C,gBAAgBto/C,EAAE6oB,OAAOloB,KAAK0n/C,SAAS1n/C,KAAKwqX,UAAU,EAAE7sW,GAAGje,UAAUso/C,uBAAuB,WAAW,IAAI5o/C,EAAEY,KAAK,GAAG,IAAII,UAAUC,OAAO,CAAC,IAAI,IAAIlB,EAAEwe,GAAGmq+C,qBAAqB3o/C,GAAG,EAAEA,IAAI,CAAC,IAAIC,EAAE4o/C,uBAAuB7o/C,EAAE,CAAC,MAAMA,GAAG,KAAKA,aAAagJ,IAAI,MAAMhJ,EAAEC,EAAEwo/C,eAAezo/C,CAAC,CAAC,GAAG,OAAOC,EAAEuo/C,gBAAgB,OAAO,IAAI,CAAC,MAAM3n/C,KAAK4n/C,cAAc,CAAC,GAAG,IAAIxn/C,UAAUC,OAAO,CAAC,IAAIhB,EAAEe,UAAU,GAAGQ,EAAE+c,GAAGsq+C,qBAAqBjo/C,KAAK0n/C,SAAS1n/C,KAAKwqX,UAAUnrX,GAAGU,EAAE,IAAIsH,GAAGzG,GAAGZ,KAAK+n/C,qBAAqBho/C,EAAE,CAAC,EAAE4d,GAAGje,UAAUwo/C,gBAAgB,WAAW,GAAGlo/C,KAAKmo/C,0BAA0B,OAAOno/C,KAAK2n/C,gBAAgB,OAAO,KAAK,IAAIvo/C,EAAEY,KAAK0n/C,SAAS/oB,aAAae,oBAAoBtg+C,EAAE4lC,YAAY39B,GAAGg/9C,MAAMrm+C,KAAK+n/C,qBAAqB3o/C,GAAGY,KAAKgo/C,wBAAwB,EAAErq+C,GAAGje,UAAU04+C,oBAAoB,SAASh5+C,GAAGY,KAAKy7+C,WAAWrD,oBAAoBh5+C,EAAE,EAAEue,GAAGje,UAAUyo/C,wBAAwB,WAAW,IAAI,IAAI/o/C,EAAE,IAAIge,GAAGpd,KAAKy7+C,YAAYz7+C,KAAK2n/C,gBAAgBvo/C,EAAE8oB,OAAOloB,KAAK0n/C,SAAS1n/C,KAAKwqX,UAAU,CAAC,MAAMprX,GAAG,KAAKA,aAAagH,GAAG,MAAMhH,EAAEY,KAAK4n/C,eAAexo/C,CAAC,CAAC,EAAEue,GAAGje,UAAU0o/C,kBAAkB,SAAShp/C,GAAG,OAAOY,KAAKwqX,UAAUprX,EAAEY,KAAKko/C,kBAAkBlo/C,KAAK2n/C,eAAe,EAAEhq+C,GAAGje,UAAU24+C,eAAe,SAASj5+C,GAAGY,KAAKy7+C,WAAWpD,eAAej5+C,EAAE,EAAEue,GAAGje,UAAUw09C,YAAY,WAAW,MAAM,EAAE,EAAEv28C,GAAGje,UAAUon+B,SAAS,WAAW,OAAOnp9B,EAAE,EAAEA,GAAG04c,SAAS,WAAW,GAAG,IAAIj2d,UAAUC,OAAO,CAAC,IAAmBlB,EAAEiB,UAAU,GAAG,OAAO,IAAIud,GAAvCvd,UAAU,IAAmCgo/C,kBAAkBjp/C,EAAE,CAAC,GAAG,IAAIiB,UAAUC,OAAO,CAAC,GAAG8kC,OAAOglH,UAAU/pJ,UAAU,KAAKA,UAAU,aAAamL,IAAI,iBAAiBnL,UAAU,GAAG,CAAC,IAAmBQ,EAAER,UAAU,GAAGL,EAAEK,UAAU,GAAGE,EAAE,IAAIqd,GAAjDvd,UAAU,IAAsE,OAAzBE,EAAE83+C,oBAAoBr4+C,GAAUO,EAAE8n/C,kBAAkBxn/C,EAAE,CAAC,GAAGR,UAAU,aAAamS,IAAInS,UAAU,aAAamL,IAAI,iBAAiBnL,UAAU,GAAG,CAAC,IAAmBY,EAAEZ,UAAU,GAAkB,OAAO,IAAIud,GAAtDvd,UAAU,GAAoBA,UAAU,IAAsBgo/C,kBAAkBpn/C,EAAE,CAAC,MAAM,GAAG,IAAIZ,UAAUC,OAAO,CAAC,IAAmBQ,EAAET,UAAU,GAAG0C,EAAE1C,UAAU,GAAGwC,EAAExC,UAAU,GAAGsC,EAAE,IAAIib,GAAhEvd,UAAU,IAAyG,OAA7CsC,EAAE01+C,oBAAoBt1+C,GAAGJ,EAAE21+C,eAAez1+C,GAAUF,EAAE0l/C,kBAAkBvn/C,EAAE,CAAC,EAAE8c,GAAGsq+C,qBAAqB,SAAS7o/C,EAAED,EAAEE,GAAG,IAAIuB,EAAExB,EAAEog+C,sBAAsBz/9C,EAAEuE,EAAEqJ,IAAI9K,KAAKmjH,IAAIplH,EAAEu39C,WAAWt19C,KAAKmjH,IAAIplH,EAAEw39C,WAAWv19C,KAAKmjH,IAAIplH,EAAEy39C,WAAWx19C,KAAKmjH,IAAIplH,EAAE039C,YAAY,GAAGn59C,EAAE,EAAEA,EAAE,GAAGmB,EAAEjB,EAAEwD,KAAK2K,MAAM3K,KAAKwnB,IAAItqB,GAAG8C,KAAKwnB,IAAI,IAAI,GAAG,OAAOxnB,KAAK6yF,IAAI,GAAGp1F,EAAE,EAAEwd,GAAG859C,UAAUz0+C,IAAI,WAAW,OAAOoP,GAAGql+C,SAAS,EAAE959C,GAAG+p+C,SAAS1k/C,IAAI,WAAW,OAAOoP,GAAGim+C,QAAQ,EAAE169C,GAAG069C,SAASr1+C,IAAI,WAAW,OAAOoP,GAAGim+C,QAAQ,EAAE169C,GAAG269C,WAAWt1+C,IAAI,WAAW,OAAOoP,GAAGkm+C,UAAU,EAAE369C,GAAGgq+C,qBAAqB3k/C,IAAI,WAAW,OAAO,EAAE,EAAE7D,OAAOkU,iBAAiBmK,GAAGG,IAAI,IAAIW,GAAG,WAAWze,KAAK2l/C,IAAI,CAAC,IAAIxh/C,EAAE,IAAIA,GAAGnE,KAAKwqX,UAAUvnX,EAAE24vB,IAAI57vB,KAAKqo/C,SAAQ,CAAE,EAAE5p+C,GAAG/e,UAAU80O,eAAe,WAAW,OAAOx0O,KAAK2l/C,GAAG,EAAEln+C,GAAG/e,UAAU+39C,cAAc,SAASr49C,GAAG,OAAOY,KAAK2l/C,IAAIvm/C,EAAE,EAAEqf,GAAG/e,UAAUi1e,WAAW,WAAW,GAAG,IAAIv0e,UAAUC,OAAO,CAAC,IAAIjB,EAAEgB,UAAU,GAAGJ,KAAK20e,WAAWv1e,EAAEum/C,IAAI,GAAGvm/C,EAAEum/C,IAAI,GAAG,MAAM,GAAG,IAAIvl/C,UAAUC,OAAO,CAAC,IAAIlB,EAAEiB,UAAU,GAAGf,EAAEe,UAAU,GAAG,GAAGJ,KAAKqo/C,QAAQ,OAAOro/C,KAAKkmK,WAAW/mK,EAAEE,GAAG,KAAK,IAAIuB,EAAEzB,EAAE8pJ,SAAS5pJ,GAAGuB,EAAEZ,KAAKwqX,WAAWxqX,KAAKkmK,WAAW/mK,EAAEE,EAAEuB,EAAE,CAAC,EAAE6d,GAAG/e,UAAUwmK,WAAW,WAAW,GAAG,IAAI9lK,UAAUC,OAAOL,KAAKqo/C,SAAQ,OAAQ,GAAG,IAAIjo/C,UAAUC,OAAO,CAAC,IAAIjB,EAAEgB,UAAU,GAAGjB,EAAEiB,UAAU,GAAGJ,KAAK2l/C,IAAI,GAAG3wB,cAAc519C,GAAGY,KAAK2l/C,IAAI,GAAG3wB,cAAc719C,GAAGa,KAAKwqX,UAAUprX,EAAE6pJ,SAAS9pJ,GAAGa,KAAKqo/C,SAAQ,CAAE,MAAM,GAAG,IAAIjo/C,UAAUC,OAAO,CAAC,IAAIhB,EAAEe,UAAU,GAAGQ,EAAER,UAAU,GAAGL,EAAEK,UAAU,GAAGJ,KAAK2l/C,IAAI,GAAG3wB,cAAc319C,GAAGW,KAAK2l/C,IAAI,GAAG3wB,cAAcp09C,GAAGZ,KAAKwqX,UAAUzqX,EAAEC,KAAKqo/C,SAAQ,CAAE,CAAC,EAAE5p+C,GAAG/e,UAAUi65B,YAAY,WAAW,OAAO355B,KAAKwqX,SAAS,EAAE/rW,GAAG/e,UAAU4o/C,WAAW,WAAW,GAAG,IAAIlo/C,UAAUC,OAAO,CAAC,IAAIjB,EAAEgB,UAAU,GAAGJ,KAAKso/C,WAAWlp/C,EAAEum/C,IAAI,GAAGvm/C,EAAEum/C,IAAI,GAAG,MAAM,GAAG,IAAIvl/C,UAAUC,OAAO,CAAC,IAAIlB,EAAEiB,UAAU,GAAGf,EAAEe,UAAU,GAAG,GAAGJ,KAAKqo/C,QAAQ,OAAOro/C,KAAKkmK,WAAW/mK,EAAEE,GAAG,KAAK,IAAIuB,EAAEzB,EAAE8pJ,SAAS5pJ,GAAGuB,EAAEZ,KAAKwqX,WAAWxqX,KAAKkmK,WAAW/mK,EAAEE,EAAEuB,EAAE,CAAC,EAAE6d,GAAG/e,UAAUw09C,YAAY,WAAW,MAAM,EAAE,EAAEz18C,GAAG/e,UAAUon+B,SAAS,WAAW,OAAOro9B,EAAE,EAAE,IAAIR,GAAG,WAAW,EAAEA,GAAGve,UAAUw09C,YAAY,WAAW,MAAM,EAAE,EAAEj28C,GAAGve,UAAUon+B,SAAS,WAAW,OAAO7o9B,EAAE,EAAEA,GAAGsq+C,gBAAgB,WAAW,GAAGno/C,UAAU,aAAaqe,IAAIre,UAAU,aAAa4O,IAAI5O,UAAU,aAAa+D,EAAE,IAAI,IAAmBhF,EAAEiB,UAAU,GAAGf,EAAEe,UAAU,GAAGQ,EAA3CR,UAAU,GAAqCo0O,iBAAiBz0O,EAAE,IAAIqR,GAAG9Q,EAAE,EAAEA,EAAEM,EAAEP,OAAO,EAAEC,IAAI,CAACP,EAAE6w5C,eAAehw5C,EAAEN,GAAGM,EAAEN,EAAE,IAAI,IAAIQ,EAAEf,EAAE0wX,aAAatxX,GAAGE,EAAEs1e,WAAW7ze,EAAE3B,EAAE,MAAM,GAAGiB,UAAU,aAAaqe,IAAIre,UAAU,aAAakQ,IAAIlQ,UAAU,aAAa+D,EAAE,CAAC,IAAInD,EAAEZ,UAAU,GAAGiC,EAAEjC,UAAU,GAAGoC,EAAEpC,UAAU,GAAG6d,GAAGsq+C,gBAAgBvn/C,EAAEgk+C,kBAAkB3i+C,EAAEG,GAAG,IAAI,IAAI3B,EAAE,EAAEA,EAAEG,EAAE8j+C,qBAAqBjk+C,IAAIod,GAAGsq+C,gBAAgBvn/C,EAAEik+C,iBAAiBpk+C,GAAGwB,EAAEG,EAAE,MAAM,GAAGpC,UAAU,aAAaqe,IAAIre,UAAU,aAAamL,IAAInL,UAAU,aAAa+D,EAAE,CAAC,IAAIrB,EAAE1C,UAAU,GAAGwC,EAAExC,UAAU,GAAGsC,EAAEtC,UAAU,GAAG,GAAG0C,aAAakM,GAAGiP,GAAGsq+C,gBAAgBzl/C,EAAEF,EAAEF,QAAQ,GAAGI,aAAawN,GAAG2N,GAAGsq+C,gBAAgBzl/C,EAAEF,EAAEF,QAAQ,GAAGI,aAAa+M,GAAG,IAAI,IAAI1N,EAAEW,EAAEH,EAAE,EAAEA,EAAER,EAAEg99C,mBAAmBx89C,IAAI,CAAC,IAAIK,EAAEb,EAAEy89C,aAAaj89C,GAAGsb,GAAGsq+C,gBAAgBvl/C,EAAEJ,EAAEF,EAAE,MAAMA,EAAEiye,WAAW7xe,EAAE209C,gBAAgB709C,EAAE,MAAM,GAAGxC,UAAU,aAAaqe,IAAIre,UAAU,aAAagR,IAAIhR,UAAU,aAAa+D,EAAE,CAAC,IAAmBf,EAAEhD,UAAU,GAAG6C,EAAE7C,UAAU,GAAGyD,EAA3CzD,UAAU,GAAqCqwX,aAAartX,GAAGH,EAAE0xe,WAAW9we,EAAET,EAAE,CAAC,EAAE,IAAI4a,GAAG,SAAS5e,GAAGY,KAAKwo/C,WAAW,IAAI/p+C,GAAGze,KAAKo/+C,WAAWhg/C,GAAG,IAAI,EAAEsf,GAAG,CAAC+p+C,uBAAuB,CAAC3k/C,cAAa,GAAI4k/C,0BAA0B,CAAC5k/C,cAAa,IAAKka,GAAGte,UAAUip/C,2BAA2B,SAASvp/C,GAAG,IAAID,EAAE,IAAI0f,GAAG7e,KAAKo/+C,YAAYhg/C,EAAEmB,MAAMpB,GAAGa,KAAKwo/C,WAAWF,WAAWnp/C,EAAEyp/C,sBAAsB,EAAE5q+C,GAAGte,UAAUmp/C,yBAAyB,SAASzp/C,GAAG,IAAID,EAAE,IAAImgB,GAAGtf,KAAKo/+C,YAAYhg/C,EAAEmB,MAAMpB,GAAGa,KAAKwo/C,WAAWF,WAAWnp/C,EAAEyp/C,sBAAsB,EAAE5q+C,GAAGte,UAAUop/C,aAAa,SAAS1p/C,GAAG,OAAOY,KAAK6o/C,yBAAyBzp/C,GAAGY,KAAK2o/C,2BAA2Bvp/C,GAAGY,KAAKwo/C,WAAW7ulB,aAAa,EAAE374B,GAAGte,UAAUqp/C,kBAAkB,WAAW,OAAO/o/C,KAAKwo/C,UAAU,EAAExq+C,GAAGte,UAAUw09C,YAAY,WAAW,MAAM,EAAE,EAAEl28C,GAAGte,UAAUon+B,SAAS,WAAW,OAAO9o9B,EAAE,EAAEU,GAAG+p+C,uBAAuBtl/C,IAAI,WAAW,OAAOmc,EAAE,EAAEZ,GAAGgq+C,0BAA0Bvl/C,IAAI,WAAW,OAAO0b,EAAE,EAAEvf,OAAOkU,iBAAiBwK,GAAGU,IAAI,IAAIY,GAAG,SAASlgB,GAAGY,KAAKwo/C,WAAW,IAAI/p+C,GAAGze,KAAKgp/C,WAAW,IAAIvq+C,GAAGze,KAAKqj+C,MAAMjk+C,GAAG,IAAI,EAAEkgB,GAAG5f,UAAUmtB,OAAO,SAASztB,GAAGY,KAAKgp/C,WAAW9i1C,aAAajoJ,GAAGsq+C,gBAAgBvo/C,KAAKqj+C,MAAMjk+C,EAAEY,KAAKgp/C,YAAYhp/C,KAAKwo/C,WAAWF,WAAWto/C,KAAKgp/C,WAAW,EAAE1p+C,GAAG5f,UAAUkp/C,oBAAoB,WAAW,OAAO5o/C,KAAKwo/C,UAAU,EAAElp+C,GAAG5f,UAAUw09C,YAAY,WAAW,MAAM,CAACro9C,GAAG,EAAEyT,GAAG5f,UAAUon+B,SAAS,WAAW,OAAOxn9B,EAAE,EAAE,IAAIT,GAAG,SAASzf,GAAGY,KAAKwo/C,WAAW,IAAI/p+C,GAAGze,KAAKgp/C,WAAW,IAAIvq+C,GAAGze,KAAKqj+C,MAAMjk+C,GAAG,IAAI,EAAEyf,GAAGnf,UAAUmtB,OAAO,SAASztB,EAAED,GAAG,GAAG,IAAIA,EAAE,OAAO,KAAK,IAAIE,EAAED,EAAEq49C,cAAct49C,EAAE,GAAGyB,EAAExB,EAAEq49C,cAAct49C,GAAGY,EAAE,IAAIoE,GAAG9E,EAAE4E,EAAErD,EAAEqD,GAAG,GAAG5E,EAAE2D,EAAEpC,EAAEoC,GAAG,GAAGhD,KAAKgp/C,WAAW9i1C,aAAajoJ,GAAGsq+C,gBAAgBvo/C,KAAKqj+C,MAAMtj+C,EAAEC,KAAKgp/C,YAAYhp/C,KAAKwo/C,WAAWF,WAAWto/C,KAAKgp/C,WAAW,EAAEnq+C,GAAGnf,UAAU4gL,OAAO,WAAW,OAAM,CAAE,EAAEzhK,GAAGnf,UAAUsj+C,kBAAkB,WAAW,OAAM,CAAE,EAAEnk9C,GAAGnf,UAAUkp/C,oBAAoB,WAAW,OAAO5o/C,KAAKwo/C,UAAU,EAAE3p+C,GAAGnf,UAAUw09C,YAAY,WAAW,MAAM,CAAC/k9C,GAAG,EAAE0P,GAAGnf,UAAUon+B,SAAS,WAAW,OAAOjo9B,EAAE,EAAE,IAAI2B,GAAG,SAASphB,GAAGY,KAAKip/C,OAAO7p/C,GAAG,IAAI,EAAEohB,GAAG9gB,UAAUmtB,OAAO,SAASztB,GAAGA,aAAakR,IAAItQ,KAAKip/C,OAAO9j+C,IAAI/lB,EAAE,EAAEohB,GAAG9gB,UAAUw09C,YAAY,WAAW,MAAM,CAACtk9C,GAAG,EAAE4Q,GAAG9gB,UAAUon+B,SAAS,WAAW,OAAOtm9B,EAAE,EAAEA,GAAG8w9C,YAAY,WAAW,GAAG,IAAIlx+C,UAAUC,OAA2B,OAAOmgB,GAAG8w9C,YAAvBlx+C,UAAU,GAA2B,IAAI6O,IAAI,GAAG,IAAI7O,UAAUC,OAAO,CAAC,IAAIlB,EAAEiB,UAAU,GAAGf,EAAEe,UAAU,GAAG,OAAOjB,aAAamR,GAAGjR,EAAE8lB,IAAIhmB,GAAGA,aAAa0Q,IAAI1Q,EAAEoB,MAAM,IAAIigB,GAAGnhB,IAAIA,CAAC,CAAC,EAAE,IAAI2f,GAAG,WAAW,GAAGhf,KAAKkp/C,OAAO,KAAKlp/C,KAAKmp/C,uBAAsB,EAAG,IAAI/o/C,UAAUC,OAAO,CAAC,IAAIjB,EAAEgB,UAAU,GAAGJ,KAAKkp/C,OAAO9p/C,CAAC,MAAM,GAAG,IAAIgB,UAAUC,OAAO,CAAC,IAAIlB,EAAEiB,UAAU,GAAGf,EAAEe,UAAU,GAAGJ,KAAKkp/C,OAAO/p/C,EAAEa,KAAKmp/C,sBAAsB9p/C,CAAC,CAAC,EAAE2f,GAAGtf,UAAUmtB,OAAO,SAASztB,GAAG,GAAGY,KAAKmp/C,uBAAuB/p/C,aAAamH,GAAG,CAAC,IAAIpH,EAAEC,EAAEu/9C,aAAa7E,iBAAiB169C,EAAEul+C,yBAAyB,OAAO3k+C,KAAKkp/C,OAAO/j+C,IAAIhmB,GAAG,IAAI,CAACC,aAAa4P,IAAIhP,KAAKkp/C,OAAO/j+C,IAAI/lB,EAAE,EAAE4f,GAAGtf,UAAU0p/C,qBAAqB,SAAShq/C,GAAGY,KAAKmp/C,sBAAsB/p/C,CAAC,EAAE4f,GAAGtf,UAAUw09C,YAAY,WAAW,MAAM,CAACto9C,GAAG,EAAEoT,GAAGtf,UAAUon+B,SAAS,WAAW,OAAO9n9B,EAAE,EAAEA,GAAGulJ,YAAY,WAAW,GAAG,IAAInkK,UAAUC,OAAO,CAAC,IAAIjB,EAAEgB,UAAU,GAAG,OAAOhB,EAAEu/9C,aAAamI,cAAc9n9C,GAAGqq+C,SAASjq/C,GAAG,CAAC,GAAG,IAAIgB,UAAUC,OAAO,CAAC,IAAIlB,EAAEiB,UAAU,GAAGf,EAAEe,UAAU,GAAG,OAAOjB,EAAEw/9C,aAAamI,cAAc9n9C,GAAGqq+C,SAASlq/C,EAAEE,GAAG,CAAC,EAAE2f,GAAGqq+C,SAAS,WAAW,GAAG,IAAIjp/C,UAAUC,OAA2B,OAAO2e,GAAGqq+C,SAAvBjp/C,UAAU,IAAwB,GAAI,GAAG,IAAIA,UAAUC,OAAO,CAAC,GAAG6D,EAAE9D,UAAU,GAAG0N,KAAK5J,EAAE9D,UAAU,GAAG0N,IAAI,CAAC,IAAI,IAAmBzO,EAAEe,UAAU,GAAGQ,EAA5BR,UAAU,GAAsBuB,WAAWf,EAAEk/9C,WAAW,CAAC,IAAI//9C,EAAEa,EAAEG,OAAOie,GAAGqq+C,SAAStp/C,EAAEV,EAAE,CAAC,OAAOA,CAAC,CAAC,GAAGe,UAAU,aAAamL,IAAI,kBAAkBnL,UAAU,GAAG,CAAC,IAAIE,EAAEF,UAAU,GAAGU,EAAEV,UAAU,GAAGY,EAAE,IAAIiO,GAAG,OAAO3O,EAAEC,MAAM,IAAIye,GAAGhe,EAAEF,IAAIE,CAAC,CAAC,GAAGZ,UAAU,aAAamL,IAAIrH,EAAE9D,UAAU,GAAG0N,IAAI,CAAC,IAAIzL,EAAEjC,UAAU,GAAGoC,EAAEpC,UAAU,GAAG,OAAOiC,aAAa2M,GAAGxM,EAAE2iB,IAAI9iB,GAAGA,EAAE9B,MAAM,IAAIye,GAAGxc,IAAIA,CAAC,CAAC,MAAM,GAAG,IAAIpC,UAAUC,OAAO,CAAC,GAAG,kBAAkBD,UAAU,IAAI8D,EAAE9D,UAAU,GAAG0N,KAAK5J,EAAE9D,UAAU,GAAG0N,IAAI,CAAC,IAAI,IAAmBhL,EAAE1C,UAAU,GAAGwC,EAAExC,UAAU,GAAGsC,EAA3CtC,UAAU,GAAqCuB,WAAWe,EAAEo99C,WAAW,CAAC,IAAI399C,EAAEO,EAAE3B,OAAOie,GAAGqq+C,SAASln/C,EAAEW,EAAEF,EAAE,CAAC,OAAOE,CAAC,CAAC,GAAG,kBAAkB1C,UAAU,IAAIA,UAAU,aAAamL,IAAIrH,EAAE9D,UAAU,GAAG0N,IAAI,CAAC,IAAmB9K,EAAE5C,UAAU,GAAGwD,EAAExD,UAAU,GAAG,OAA3CA,UAAU,GAA0CG,MAAM,IAAIye,GAAGhc,EAAEY,IAAIZ,CAAC,CAAC,CAAC,EAAE,IAAIqb,GAAG,WAAW,GAAGre,KAAKsp/C,cAAcj8+C,GAAGqz9C,sBAAsB1g+C,KAAKup/C,MAAM,KAAKvp/C,KAAKwp/C,eAAe,KAAK,IAAIpp/C,UAAUC,aAAa,GAAG,IAAID,UAAUC,OAAO,CAAC,IAAIjB,EAAEgB,UAAU,GAAG,GAAG,OAAOhB,EAAE,MAAM,IAAIgE,EAAE,yBAAyBpD,KAAKsp/C,cAAclq/C,CAAC,CAAC,EAAEif,GAAG3e,UAAU+p/C,eAAe,WAAW,GAAGrp/C,UAAU,aAAa+D,GAAG/D,UAAU,aAAakQ,GAAG,CAAC,IAAIlR,EAAEgB,UAAU,GAAGjB,EAAEiB,UAAU,GAAG,GAAGjB,EAAEkpE,UAAU,OAAO9kE,EAAE6x9C,SAAS,IAAI/19C,EAAEF,EAAE6l+C,kBAAkBpk+C,EAAEZ,KAAK0p/C,oBAAoBtq/C,EAAEC,GAAG,GAAGuB,IAAI2C,EAAE6x9C,SAAS,OAAO7x9C,EAAE6x9C,SAAS,GAAGx09C,IAAI2C,EAAE4x9C,SAAS,OAAO5x9C,EAAE4x9C,SAAS,IAAI,IAAIp19C,EAAE,EAAEA,EAAEZ,EAAE2l+C,qBAAqB/k+C,IAAI,CAAC,IAAIO,EAAEnB,EAAE8l+C,iBAAiBll+C,GAAGe,EAAEd,KAAK0p/C,oBAAoBtq/C,EAAEkB,GAAG,GAAGQ,IAAIyC,EAAE2x9C,SAAS,OAAO3x9C,EAAE6x9C,SAAS,GAAGt09C,IAAIyC,EAAE4x9C,SAAS,OAAO5x9C,EAAE4x9C,QAAQ,CAAC,OAAO5x9C,EAAE2x9C,QAAQ,CAAC,GAAG909C,UAAU,aAAa+D,GAAG/D,UAAU,aAAa4O,GAAG,CAAC,IAAIhO,EAAEZ,UAAU,GAAGiC,EAAEjC,UAAU,GAAG,IAAIiC,EAAEm99C,sBAAsBr5nC,WAAWnlW,GAAG,OAAOuC,EAAE6x9C,SAAS,IAAI5y9C,EAAEH,EAAEmyO,iBAAiB,OAAOnyO,EAAEm6O,aAAax7O,EAAEuxI,OAAO/vI,EAAE,MAAMxB,EAAEuxI,OAAO/vI,EAAEA,EAAEnC,OAAO,IAAImL,GAAGqy9C,SAAS789C,EAAEwB,GAAGe,EAAE2x9C,SAAS3x9C,EAAE6x9C,SAAS7x9C,EAAE4x9C,QAAQ,CAAC,GAAG/09C,UAAU,aAAa+D,GAAG/D,UAAU,aAAagQ,GAAG,CAAC,IAAIvP,EAAET,UAAU,GAAG,OAAOA,UAAU,GAAGq39C,gBAAgB/C,SAAS7z9C,GAAG0C,EAAE2x9C,SAAS3x9C,EAAE6x9C,QAAQ,CAAC,EAAE/28C,GAAG3e,UAAUgq/C,oBAAoB,SAAStq/C,EAAED,GAAG,OAAOA,EAAEqg+C,sBAAsBr5nC,WAAW/mW,GAAGoM,GAAG4x9C,kBAAkBh+9C,EAAED,EAAEq1O,kBAAkBjxO,EAAE6x9C,QAAQ,EAAE/28C,GAAG3e,UAAUymW,WAAW,SAAS/mW,EAAED,GAAG,OAAOa,KAAKgg/C,OAAO5g/C,EAAED,KAAKoE,EAAE6x9C,QAAQ,EAAE/28C,GAAG3e,UAAUiq/C,mBAAmB,SAASvq/C,GAAGA,IAAImE,EAAE2x9C,WAAWl19C,KAAKup/C,OAAM,GAAInq/C,IAAImE,EAAE4x9C,UAAUn19C,KAAKwp/C,gBAAgB,EAAEnr+C,GAAG3e,UAAUkq/C,gBAAgB,SAASxq/C,EAAED,GAAG,GAAGA,aAAaiR,IAAIpQ,KAAK2p/C,mBAAmB3p/C,KAAKyp/C,eAAerq/C,EAAED,IAAIA,aAAa6P,GAAGhP,KAAK2p/C,mBAAmB3p/C,KAAKyp/C,eAAerq/C,EAAED,SAAS,GAAGA,aAAamR,GAAGtQ,KAAK2p/C,mBAAmB3p/C,KAAKyp/C,eAAerq/C,EAAED,SAAS,GAAGA,aAAa2P,GAAG,IAAI,IAAIzP,EAAEF,EAAEyB,EAAE,EAAEA,EAAEvB,EAAE8/9C,mBAAmBv+9C,IAAI,CAAC,IAAIb,EAAEV,EAAEu/9C,aAAah+9C,GAAGZ,KAAK2p/C,mBAAmB3p/C,KAAKyp/C,eAAerq/C,EAAEW,GAAG,MAAM,GAAGZ,aAAawH,GAAG,IAAI,IAAIrG,EAAEnB,EAAE2B,EAAE,EAAEA,EAAER,EAAE6+9C,mBAAmBr+9C,IAAI,CAAC,IAAIE,EAAEV,EAAEs+9C,aAAa999C,GAAGd,KAAK2p/C,mBAAmB3p/C,KAAKyp/C,eAAerq/C,EAAE4B,GAAG,MAAM,GAAG7B,aAAa0Q,GAAG,IAAI,IAAIxN,EAAE,IAAIkR,GAAGpU,GAAGkD,EAAEy99C,WAAW,CAAC,IAAIt99C,EAAEH,EAAEtB,OAAOyB,IAAIrD,GAAGa,KAAK4p/C,gBAAgBxq/C,EAAEoD,EAAE,CAAC,EAAE6b,GAAG3e,UAAUsg/C,OAAO,SAAS5g/C,EAAED,GAAG,OAAOA,EAAEkpE,UAAU9kE,EAAE6x9C,SAASj29C,aAAa6P,IAA4B7P,aAAamR,GAAtCtQ,KAAKyp/C,eAAerq/C,EAAED,IAA6Ca,KAAKup/C,OAAM,EAAGvp/C,KAAKwp/C,eAAe,EAAExp/C,KAAK4p/C,gBAAgBxq/C,EAAED,GAAGa,KAAKsp/C,cAAc3oB,aAAa3g+C,KAAKwp/C,gBAAgBjm/C,EAAE4x9C,SAASn19C,KAAKwp/C,eAAe,GAAGxp/C,KAAKup/C,MAAMhm/C,EAAE2x9C,SAAS3x9C,EAAE6x9C,SAAS,EAAE/28C,GAAG3e,UAAUw09C,YAAY,WAAW,MAAM,EAAE,EAAE718C,GAAG3e,UAAUon+B,SAAS,WAAW,OAAOzo9B,EAAE,EAAE,IAAIa,GAAG,SAAS9f,IAAI,GAAGY,KAAK6p/C,WAAW,KAAK7p/C,KAAK8p/C,UAAU,KAAK9p/C,KAAK2l/C,IAAI,KAAK,IAAIvl/C,UAAUC,OAA0CjB,EAAEQ,KAAKI,KAAnCI,UAAU,GAAgChB,EAAE2q/C,YAA7B3p/C,UAAU,SAAuC,GAAG,IAAIA,UAAUC,OAAO,CAAC,IAAIO,EAAER,UAAU,GAAGL,EAAEK,UAAU,GAAGE,EAAEF,UAAU,GAAGJ,KAAK6p/C,WAAWjp/C,EAAEZ,KAAK8p/C,UAAU/p/C,EAAEC,KAAK2l/C,IAAIrl/C,CAAC,CAAC,EAAE4d,GAAG,CAAC6r+C,YAAY,CAACjm/C,cAAa,IAAKob,GAAGxf,UAAUsq/C,aAAa,WAAW,OAAOhq/C,KAAK8p/C,YAAY5q+C,GAAG6q+C,WAAW,EAAE7q+C,GAAGxf,UAAU+39C,cAAc,WAAW,OAAOz39C,KAAK2l/C,GAAG,EAAEzm+C,GAAGxf,UAAUuq/C,qBAAqB,WAAW,OAAOjq/C,KAAK6p/C,UAAU,EAAE3q+C,GAAGxf,UAAUmj/C,gBAAgB,WAAW,OAAO7i/C,KAAK8p/C,SAAS,EAAE5q+C,GAAGxf,UAAUw09C,YAAY,WAAW,MAAM,EAAE,EAAEh18C,GAAGxf,UAAUon+B,SAAS,WAAW,OAAO5n9B,EAAE,EAAEhB,GAAG6r+C,YAAY5m/C,IAAI,WAAW,OAAO,CAAC,EAAE7D,OAAOkU,iBAAiB0L,GAAGhB,IAAI,IAAIE,GAAG,SAAShf,GAAGY,KAAKir+C,KAAK7r+C,GAAG,IAAI,EAAEgf,GAAG1e,UAAUmtB,OAAO,SAASztB,GAAGA,aAAagR,IAAIpQ,KAAKir+C,KAAK9l9C,IAAI/lB,EAAE,EAAEgf,GAAG1e,UAAUw09C,YAAY,WAAW,MAAM,CAACtk9C,GAAG,EAAEwO,GAAG1e,UAAUon+B,SAAS,WAAW,OAAO1o9B,EAAE,EAAEA,GAAG0iN,UAAU,WAAW,GAAG,IAAI1gO,UAAUC,OAAO,CAAC,IAAIjB,EAAEgB,UAAU,GAAG,OAAOhB,aAAagR,GAAGtF,GAAGkn+C,cAAc5y+C,GAAGgf,GAAG0iN,UAAU1hO,EAAE,IAAI6P,GAAG,CAAC,GAAG,IAAI7O,UAAUC,OAAO,CAAC,IAAIlB,EAAEiB,UAAU,GAAGf,EAAEe,UAAU,GAAG,OAAOjB,aAAaiR,GAAG/Q,EAAE8lB,IAAIhmB,GAAGA,aAAa0Q,IAAI1Q,EAAEoB,MAAM,IAAI6d,GAAG/e,IAAIA,CAAC,CAAC,EAAE,IAAIsf,GAAG,WAAW3e,KAAKkq/C,WAAW,KAAK,IAAI9q/C,EAAEgB,UAAU,GAAGJ,KAAKkq/C,WAAW9q/C,CAAC,EAAEuf,GAAGjf,UAAUmtB,OAAO,SAASztB,IAAIA,aAAagR,IAAIhR,aAAa4P,IAAI5P,aAAakR,KAAKtQ,KAAKkq/C,WAAW/k+C,IAAI,IAAIjG,GAAG9f,EAAE,EAAEA,EAAEq49C,iBAAiB,EAAE948C,GAAGjf,UAAUw09C,YAAY,WAAW,MAAM,CAACtk9C,GAAG,EAAE+O,GAAGjf,UAAUon+B,SAAS,WAAW,OAAOno9B,EAAE,EAAEA,GAAGwr9C,aAAa,SAAS/q+C,GAAG,IAAID,EAAE,IAAI8P,GAAG,OAAO7P,EAAEmB,MAAM,IAAIoe,GAAGxf,IAAIA,CAAC,EAAE,IAAI2f,GAAG,WAAW,GAAG9e,KAAKqj+C,MAAM,KAAKrj+C,KAAKmq/C,mBAAmB,EAAEnq/C,KAAKoq/C,WAAW,IAAI/r+C,GAAGre,KAAKqq/C,qBAAqB,KAAKrq/C,KAAKsq/C,aAAarn/C,EAAEioL,UAAU,IAAI9qL,UAAUC,OAAO,CAAC,IAAIjB,EAAEgB,UAAU,GAAGjB,EAAEiB,UAAU,GAAGJ,KAAKqj+C,MAAM,CAACjk+C,EAAED,GAAGa,KAAKmq/C,mBAAmB,CAAC,MAAM,GAAG,IAAI/p/C,UAAUC,OAAO,CAAC,IAAIhB,EAAEe,UAAU,GAAGQ,EAAER,UAAU,GAAGL,EAAEK,UAAU,GAAGJ,KAAKqj+C,MAAM,IAAI5j+C,MAAM,GAAG29H,KAAK,MAAMp9H,KAAKqj+C,MAAM,GAAGhk+C,EAAEW,KAAKqj+C,MAAM,GAAGzi+C,EAAEZ,KAAKmq/C,mBAAmBpq/C,CAAC,CAAC,EAAE+e,GAAGpf,UAAU6q/C,2BAA2B,WAAW,GAAG,IAAInq/C,UAAUC,OAAO,CAAC,IAAIjB,EAAE,IAAIK,MAAM,GAAG29H,KAAK,MAAM,GAAGp9H,KAAKuq/C,2BAA2B,EAAEnr/C,GAAGY,KAAKsq/C,cAActq/C,KAAKmq/C,mBAAmB,OAAO,KAAKnq/C,KAAKuq/C,2BAA2B,EAAEnr/C,EAAE,MAAM,GAAG,IAAIgB,UAAUC,OAAO,CAAC,IAAIlB,EAAEiB,UAAU,GAAGf,EAAEe,UAAU,GAAGQ,EAAE,EAAEzB,EAAEY,EAAEygB,GAAG8w9C,YAAYtx+C,KAAKqj+C,MAAMlk+C,IAAI,GAAGY,EAAE6kB,OAAO,EAAE,CAAC,IAAItkB,EAAEqe,GAAGwr9C,aAAanq+C,KAAKqj+C,MAAMzi+C,IAAI,GAAGZ,KAAKuq/C,2BAA2Bjq/C,EAAEP,EAAEV,GAAGW,KAAKsq/C,cAActq/C,KAAKmq/C,mBAAmB,OAAOnq/C,KAAKqq/C,qBAAqBzp/C,GAAGvB,EAAE,GAAGW,KAAKqq/C,qBAAqBlr/C,GAAGE,EAAE,GAAG,IAAI,CAAC,MAAM,GAAG,IAAIe,UAAUC,OAAO,GAAGD,UAAU,aAAaX,OAAOyE,EAAE9D,UAAU,GAAG4N,KAAK9J,EAAE9D,UAAU,GAAG4N,KAAK,IAAI,IAAIlN,EAAEV,UAAU,GAAGY,EAAEZ,UAAU,GAAGiC,EAAEjC,UAAU,GAAGoC,EAAE,EAAEA,EAAE1B,EAAE8jB,OAAOpiB,IAAI,IAAI,IAAI3B,EAAEC,EAAEqC,IAAIX,GAAGM,EAAE,EAAEA,EAAE9B,EAAE4jB,OAAO9hB,IAAI,GAAG9C,KAAKuq/C,2BAA2B1p/C,EAAEG,EAAEmC,IAAIL,GAAGT,GAAGrC,KAAKsq/C,cAActq/C,KAAKmq/C,mBAAmB,OAAO,UAAU,GAAG/p/C,UAAU,aAAaX,OAAOW,UAAU,aAAa8e,IAAI9e,UAAU,aAAakQ,GAAG,CAAC,IAAI1N,EAAExC,UAAU,GAAGsC,EAAEtC,UAAU,GAAG+B,EAAE/B,UAAU,GAAGuC,EAAEC,EAAE609C,gBAAgB,GAAGl09C,EAAE6x9C,WAAWp19C,KAAKoq/C,WAAWpK,OAAOr9+C,EAAED,GAAG,OAAO1C,KAAKsq/C,aAAa,EAAEno/C,EAAE,GAAGS,EAAET,EAAE,GAAG,IAAI+c,GAAGxc,EAAEC,GAAG,IAAI,CAAC,EAAEmc,GAAGpf,UAAU8q/C,8BAA8B,SAASpr/C,EAAED,EAAEE,GAAG,IAAI,IAAIuB,EAAE,EAAEA,EAAExB,EAAEwlB,OAAOhkB,IAAI,IAAI,IAAIb,EAAEX,EAAE+D,IAAIvC,GAAGN,EAAE,EAAEA,EAAEnB,EAAEylB,OAAOtkB,IAAI,CAAC,IAAIQ,EAAE3B,EAAEgE,IAAI7C,GAAG,GAAGN,KAAKyq/C,mBAAmB1q/C,EAAEe,EAAEzB,GAAGW,KAAKsq/C,cAActq/C,KAAKmq/C,mBAAmB,OAAO,IAAI,CAAC,EAAErr+C,GAAGpf,UAAUgr/C,qBAAqB,WAAW,IAAItr/C,EAAE,IAAIK,MAAM,GAAG29H,KAAK,MAAMj+H,EAAE6f,GAAGqq+C,SAASrp/C,KAAKqj+C,MAAM,IAAIhk+C,EAAE2f,GAAGqq+C,SAASrp/C,KAAKqj+C,MAAM,IAAIzi+C,EAAEwd,GAAG0iN,UAAU9gO,KAAKqj+C,MAAM,IAAItj+C,EAAEqe,GAAG0iN,UAAU9gO,KAAKqj+C,MAAM,IAAI,OAAOrj+C,KAAK2q/C,wBAAwBxr/C,EAAEE,EAAED,GAAGY,KAAK4q/C,kBAAkBxr/C,GAAE,GAAIY,KAAKsq/C,cAActq/C,KAAKmq/C,mBAAmB,MAAM/q/C,EAAE,GAAG,KAAKA,EAAE,GAAG,KAAKY,KAAKwq/C,8BAA8Brr/C,EAAEY,EAAEX,GAAGY,KAAK4q/C,kBAAkBxr/C,GAAE,GAAIY,KAAKsq/C,cAActq/C,KAAKmq/C,mBAAmB,MAAM/q/C,EAAE,GAAG,KAAKA,EAAE,GAAG,KAAKY,KAAKwq/C,8BAA8Bnr/C,EAAEuB,EAAExB,GAAGY,KAAK4q/C,kBAAkBxr/C,GAAE,GAAIY,KAAKsq/C,cAActq/C,KAAKmq/C,mBAAmB,MAAM/q/C,EAAE,GAAG,KAAKA,EAAE,GAAG,KAAKY,KAAK6q/C,yBAAyBjq/C,EAAEb,EAAEX,QAAQY,KAAK4q/C,kBAAkBxr/C,GAAE,KAAM,EAAE0f,GAAGpf,UAAUor/C,iBAAiB,WAAW,OAAO9q/C,KAAKyq/C,qBAAqBzq/C,KAAKqq/C,oBAAoB,EAAEvr+C,GAAGpf,UAAUkr/C,kBAAkB,SAASxr/C,EAAED,GAAG,GAAG,OAAOC,EAAE,GAAG,OAAO,KAAKD,GAAGa,KAAKqq/C,qBAAqB,GAAGjr/C,EAAE,GAAGY,KAAKqq/C,qBAAqB,GAAGjr/C,EAAE,KAAKY,KAAKqq/C,qBAAqB,GAAGjr/C,EAAE,GAAGY,KAAKqq/C,qBAAqB,GAAGjr/C,EAAE,GAAG,EAAE0f,GAAGpf,UAAUqr/C,cAAc,WAAqC,OAA1B/q/C,KAAKyq/C,qBAA2B,CAACzq/C,KAAKqq/C,qBAAqB,GAAG5yB,gBAAgBz39C,KAAKqq/C,qBAAqB,GAAG5yB,gBAAgB,EAAE348C,GAAGpf,UAAU+q/C,mBAAmB,WAAW,GAAG,IAAIrq/C,UAAUC,OAAO,CAAC,GAAG,OAAOL,KAAKqq/C,qBAAqB,OAAO,KAAK,GAAGrq/C,KAAKqq/C,qBAAqB,IAAI5q/C,MAAM,GAAG29H,KAAK,MAAMp9H,KAAKuq/C,6BAA6Bvq/C,KAAKsq/C,cAActq/C,KAAKmq/C,mBAAmB,OAAO,KAAKnq/C,KAAK0q/C,sBAAsB,MAAM,GAAG,IAAItq/C,UAAUC,OAAO,GAAGD,UAAU,aAAaX,OAAOW,UAAU,aAAa4O,IAAI5O,UAAU,aAAagQ,GAAG,CAAC,IAAIhR,EAAEgB,UAAU,GAAGjB,EAAEiB,UAAU,GAAGf,EAAEe,UAAU,GAAG,GAAGhB,EAAEog+C,sBAAsBv20C,SAAS9pJ,EAAEqg+C,uBAAuBx/9C,KAAKsq/C,aAAa,OAAO,KAAK,IAAI,IAAI1p/C,EAAExB,EAAEo1O,iBAAiBz0O,EAAEZ,EAAEs49C,gBAAgBn39C,EAAE,EAAEA,EAAEM,EAAEP,OAAO,EAAEC,IAAI,CAAC,IAAIQ,EAAE0K,GAAGux9C,kBAAkBh99C,EAAEa,EAAEN,GAAGM,EAAEN,EAAE,IAAI,GAAGQ,EAAEd,KAAKsq/C,aAAa,CAACtq/C,KAAKsq/C,aAAaxp/C,EAAE,IAAIE,EAAE,IAAIoQ,GAAGxQ,EAAEN,GAAGM,EAAEN,EAAE,IAAImwX,aAAa1wX,GAAGV,EAAE,GAAG,IAAI6f,GAAG9f,EAAEkB,EAAEU,GAAG3B,EAAE,GAAG,IAAI6f,GAAG/f,EAAE,EAAEY,EAAE,CAAC,GAAGC,KAAKsq/C,cAActq/C,KAAKmq/C,mBAAmB,OAAO,IAAI,CAAC,MAAM,GAAG/p/C,UAAU,aAAaX,OAAOW,UAAU,aAAa4O,IAAI5O,UAAU,aAAa4O,GAAG,CAAC,IAAI3M,EAAEjC,UAAU,GAAGoC,EAAEpC,UAAU,GAAGS,EAAET,UAAU,GAAG,GAAGiC,EAAEm99C,sBAAsBv20C,SAASzmJ,EAAEg99C,uBAAuBx/9C,KAAKsq/C,aAAa,OAAO,KAAK,IAAI,IAAIxn/C,EAAET,EAAEmyO,iBAAiB5xO,EAAEJ,EAAEgyO,iBAAiB9xO,EAAE,EAAEA,EAAEI,EAAEzC,OAAO,EAAEqC,IAAI,IAAI,IAAIP,EAAE,EAAEA,EAAES,EAAEvC,OAAO,EAAE8B,IAAI,CAAC,IAAIQ,EAAE6I,GAAG+x9C,iBAAiBz69C,EAAEJ,GAAGI,EAAEJ,EAAE,GAAGE,EAAET,GAAGS,EAAET,EAAE,IAAI,GAAGQ,EAAE3C,KAAKsq/C,aAAa,CAACtq/C,KAAKsq/C,aAAa3n/C,EAAE,IAAIK,EAAE,IAAIoO,GAAGtO,EAAEJ,GAAGI,EAAEJ,EAAE,IAAIkB,EAAE,IAAIwN,GAAGxO,EAAET,GAAGS,EAAET,EAAE,IAAIiB,EAAEJ,EAAEysY,cAAc7rY,GAAG/C,EAAE,GAAG,IAAIqe,GAAG7c,EAAEK,EAAEU,EAAE,IAAIvC,EAAE,GAAG,IAAIqe,GAAG1c,EAAEL,EAAEiB,EAAE,GAAG,CAAC,GAAGpD,KAAKsq/C,cAActq/C,KAAKmq/C,mBAAmB,OAAO,IAAI,CAAC,CAAC,EAAErr+C,GAAGpf,UAAUmr/C,yBAAyB,SAASzr/C,EAAED,EAAEE,GAAG,IAAI,IAAIuB,EAAE,EAAEA,EAAExB,EAAEwlB,OAAOhkB,IAAI,IAAI,IAAIb,EAAEX,EAAE+D,IAAIvC,GAAGN,EAAE,EAAEA,EAAEnB,EAAEylB,OAAOtkB,IAAI,CAAC,IAAIQ,EAAE3B,EAAEgE,IAAI7C,GAAGU,EAAEjB,EAAE039C,gBAAgBxu0C,SAASnoJ,EAAE229C,iBAAiB,GAAGz29C,EAAEhB,KAAKsq/C,eAAetq/C,KAAKsq/C,aAAatp/C,EAAE3B,EAAE,GAAG,IAAI6f,GAAGnf,EAAE,EAAEA,EAAE039C,iBAAiBp49C,EAAE,GAAG,IAAI6f,GAAGpe,EAAE,EAAEA,EAAE229C,kBAAkBz39C,KAAKsq/C,cAActq/C,KAAKmq/C,mBAAmB,OAAO,IAAI,CAAC,EAAErr+C,GAAGpf,UAAUupJ,SAAS,WAAW,GAAG,OAAOjpJ,KAAKqj+C,MAAM,IAAI,OAAOrj+C,KAAKqj+C,MAAM,GAAG,MAAM,IAAIjg+C,EAAE,qCAAqC,OAAOpD,KAAKqj+C,MAAM,GAAGh75C,WAAWroE,KAAKqj+C,MAAM,GAAGh75C,UAAU,GAAGroE,KAAKyq/C,qBAAqBzq/C,KAAKsq/C,aAAa,EAAExr+C,GAAGpf,UAAUir/C,wBAAwB,SAASvr/C,EAAED,EAAEE,GAAG,IAAI,IAAIuB,EAAE,EAAEA,EAAExB,EAAEwlB,OAAOhkB,IAAI,IAAI,IAAIb,EAAEX,EAAE+D,IAAIvC,GAAGN,EAAE,EAAEA,EAAEnB,EAAEylB,OAAOtkB,IAAI,CAAC,IAAIQ,EAAE3B,EAAEgE,IAAI7C,GAAG,GAAGN,KAAKyq/C,mBAAmB1q/C,EAAEe,EAAEzB,GAAGW,KAAKsq/C,cAActq/C,KAAKmq/C,mBAAmB,OAAO,IAAI,CAAC,EAAErr+C,GAAGpf,UAAUw09C,YAAY,WAAW,MAAM,EAAE,EAAEp18C,GAAGpf,UAAUon+B,SAAS,WAAW,OAAOho9B,EAAE,EAAEA,GAAGmqI,SAAS,SAAS7pJ,EAAED,GAAG,OAAO,IAAI2f,GAAG1f,EAAED,GAAG8pJ,UAAU,EAAEnqI,GAAGks+C,iBAAiB,SAAS5r/C,EAAED,EAAEE,GAAG,OAAO,IAAIyf,GAAG1f,EAAED,EAAEE,GAAG4pJ,YAAY5pJ,CAAC,EAAEyf,GAAGis+C,cAAc,SAAS3r/C,EAAED,GAAG,OAAO,IAAI2f,GAAG1f,EAAED,GAAG4r/C,eAAe,EAAE,IAAI5r+C,GAAG,WAAWnf,KAAK2l/C,IAAI,CAAC,IAAIxh/C,EAAE,IAAIA,GAAGnE,KAAKwqX,UAAUvnX,EAAE24vB,IAAI57vB,KAAKqo/C,SAAQ,CAAE,EAAElp+C,GAAGzf,UAAU80O,eAAe,WAAW,OAAOx0O,KAAK2l/C,GAAG,EAAExm+C,GAAGzf,UAAU+39C,cAAc,SAASr49C,GAAG,OAAOY,KAAK2l/C,IAAIvm/C,EAAE,EAAE+f,GAAGzf,UAAUi1e,WAAW,WAAW,GAAG,IAAIv0e,UAAUC,OAAO,CAAC,IAAIjB,EAAEgB,UAAU,GAAGJ,KAAK20e,WAAWv1e,EAAEum/C,IAAI,GAAGvm/C,EAAEum/C,IAAI,GAAG,MAAM,GAAG,IAAIvl/C,UAAUC,OAAO,CAAC,IAAIlB,EAAEiB,UAAU,GAAGf,EAAEe,UAAU,GAAG,GAAGJ,KAAKqo/C,QAAQ,OAAOro/C,KAAKkmK,WAAW/mK,EAAEE,GAAG,KAAK,IAAIuB,EAAEzB,EAAE8pJ,SAAS5pJ,GAAGuB,EAAEZ,KAAKwqX,WAAWxqX,KAAKkmK,WAAW/mK,EAAEE,EAAEuB,EAAE,CAAC,EAAEue,GAAGzf,UAAUwmK,WAAW,WAAW,GAAG,IAAI9lK,UAAUC,OAAOL,KAAKqo/C,SAAQ,OAAQ,GAAG,IAAIjo/C,UAAUC,OAAO,CAAC,IAAIjB,EAAEgB,UAAU,GAAGjB,EAAEiB,UAAU,GAAGJ,KAAK2l/C,IAAI,GAAG3wB,cAAc519C,GAAGY,KAAK2l/C,IAAI,GAAG3wB,cAAc719C,GAAGa,KAAKwqX,UAAUprX,EAAE6pJ,SAAS9pJ,GAAGa,KAAKqo/C,SAAQ,CAAE,MAAM,GAAG,IAAIjo/C,UAAUC,OAAO,CAAC,IAAIhB,EAAEe,UAAU,GAAGQ,EAAER,UAAU,GAAGL,EAAEK,UAAU,GAAGJ,KAAK2l/C,IAAI,GAAG3wB,cAAc319C,GAAGW,KAAK2l/C,IAAI,GAAG3wB,cAAcp09C,GAAGZ,KAAKwqX,UAAUzqX,EAAEC,KAAKqo/C,SAAQ,CAAE,CAAC,EAAElp+C,GAAGzf,UAAU6E,SAAS,WAAW,OAAOE,EAAE019C,aAAan69C,KAAK2l/C,IAAI,GAAG3l/C,KAAK2l/C,IAAI,GAAG,EAAExm+C,GAAGzf,UAAUi65B,YAAY,WAAW,OAAO355B,KAAKwqX,SAAS,EAAErrW,GAAGzf,UAAU4o/C,WAAW,WAAW,GAAG,IAAIlo/C,UAAUC,OAAO,CAAC,IAAIjB,EAAEgB,UAAU,GAAGJ,KAAKso/C,WAAWlp/C,EAAEum/C,IAAI,GAAGvm/C,EAAEum/C,IAAI,GAAG,MAAM,GAAG,IAAIvl/C,UAAUC,OAAO,CAAC,IAAIlB,EAAEiB,UAAU,GAAGf,EAAEe,UAAU,GAAG,GAAGJ,KAAKqo/C,QAAQ,OAAOro/C,KAAKkmK,WAAW/mK,EAAEE,GAAG,KAAK,IAAIuB,EAAEzB,EAAE8pJ,SAAS5pJ,GAAGuB,EAAEZ,KAAKwqX,WAAWxqX,KAAKkmK,WAAW/mK,EAAEE,EAAEuB,EAAE,CAAC,EAAEue,GAAGzf,UAAUw09C,YAAY,WAAW,MAAM,EAAE,EAAE/08C,GAAGzf,UAAUon+B,SAAS,WAAW,OAAO3n9B,EAAE,EAAE,IAAIO,GAAG,WAAW,EAAEA,GAAGhgB,UAAUw09C,YAAY,WAAW,MAAM,EAAE,EAAEx08C,GAAGhgB,UAAUon+B,SAAS,WAAW,OAAOpn9B,EAAE,EAAEA,GAAG6o+C,gBAAgB,WAAW,GAAGno/C,UAAU,aAAa+e,IAAI/e,UAAU,aAAa4O,IAAI5O,UAAU,aAAa+D,EAAE,IAAI,IAAI/E,EAAEgB,UAAU,GAAGjB,EAAEiB,UAAU,GAAGf,EAAEe,UAAU,GAAGQ,EAAE,IAAIwQ,GAAGrR,EAAEX,EAAEo1O,iBAAiBl0O,EAAE,EAAEA,EAAEP,EAAEM,OAAO,EAAEC,IAAI,CAACM,EAAEgw5C,eAAe7w5C,EAAEO,GAAGP,EAAEO,EAAE,IAAI,IAAIQ,EAAEF,EAAE6vX,aAAatxX,GAAGE,EAAEs1e,WAAW7ze,EAAE3B,EAAE,MAAM,GAAGiB,UAAU,aAAa+e,IAAI/e,UAAU,aAAakQ,IAAIlQ,UAAU,aAAa+D,EAAE,CAAC,IAAInD,EAAEZ,UAAU,GAAGiC,EAAEjC,UAAU,GAAGoC,EAAEpC,UAAU,GAAGsf,GAAG6o+C,gBAAgBvn/C,EAAEgk+C,kBAAkB3i+C,EAAEG,GAAG,IAAI,IAAI3B,EAAE,EAAEA,EAAEG,EAAE8j+C,qBAAqBjk+C,IAAI6e,GAAG6o+C,gBAAgBvn/C,EAAEik+C,iBAAiBpk+C,GAAGwB,EAAEG,EAAE,MAAM,GAAGpC,UAAU,aAAa+e,IAAI/e,UAAU,aAAamL,IAAInL,UAAU,aAAa+D,EAAE,CAAC,IAAIrB,EAAE1C,UAAU,GAAGwC,EAAExC,UAAU,GAAGsC,EAAEtC,UAAU,GAAG,GAAG0C,aAAakM,GAAG0Q,GAAG6o+C,gBAAgBzl/C,EAAEF,EAAEF,QAAQ,GAAGI,aAAawN,GAAGoP,GAAG6o+C,gBAAgBzl/C,EAAEF,EAAEF,QAAQ,GAAGI,aAAa+M,GAAG,IAAI,IAAI1N,EAAEW,EAAEH,EAAE,EAAEA,EAAER,EAAEg99C,mBAAmBx89C,IAAI,CAAC,IAAIK,EAAEb,EAAEy89C,aAAaj89C,GAAG+c,GAAG6o+C,gBAAgBvl/C,EAAEJ,EAAEF,EAAE,MAAMA,EAAEiye,WAAW7xe,EAAE209C,gBAAgB709C,EAAE,MAAM,GAAGxC,UAAU,aAAa+e,IAAI/e,UAAU,aAAagR,IAAIhR,UAAU,aAAa+D,EAAE,CAAC,IAAmBf,EAAEhD,UAAU,GAAG6C,EAAE7C,UAAU,GAAGyD,EAA3CzD,UAAU,GAAqCqwX,aAAartX,GAAGH,EAAE0xe,WAAW9we,EAAET,EAAE,CAAC,EAAE,IAAIie,GAAG,WAAWrhB,KAAKir/C,IAAI,KAAKjr/C,KAAKkr/C,IAAI,KAAKlr/C,KAAKmr/C,QAAQ,IAAIhs+C,GAAGnf,KAAKor/C,aAAa,EAAE,IAAIhs/C,EAAEgB,UAAU,GAAGjB,EAAEiB,UAAU,GAAGJ,KAAKir/C,IAAI7r/C,EAAEY,KAAKkr/C,IAAI/r/C,CAAC,EAAEwiB,GAAG,CAAC8m+C,uBAAuB,CAAC3k/C,cAAa,GAAIun/C,qCAAqC,CAACvn/C,cAAa,IAAKud,GAAG3hB,UAAU80O,eAAe,WAAW,OAAOx0O,KAAKmr/C,QAAQ32wC,gBAAgB,EAAEnzN,GAAG3hB,UAAU4r/C,mBAAmB,SAASls/C,GAAG,GAAGA,EAAE,GAAGA,GAAG,EAAE,MAAM,IAAIgE,EAAE,wCAAwCpD,KAAKor/C,aAAahs/C,CAAC,EAAEiiB,GAAG3hB,UAAUokK,QAAQ,SAAS1kK,EAAED,GAAGa,KAAKur/C,wBAAwBns/C,EAAED,EAAEa,KAAKmr/C,SAASnr/C,KAAKur/C,wBAAwBps/C,EAAEC,EAAEY,KAAKmr/C,QAAQ,EAAE9p+C,GAAG3hB,UAAUupJ,SAAS,WAAW,OAAOjpJ,KAAK8jK,QAAQ9jK,KAAKir/C,IAAIjr/C,KAAKkr/C,KAAKlr/C,KAAKmr/C,QAAQxxlB,aAAa,EAAEt44B,GAAG3hB,UAAU6r/C,wBAAwB,SAASns/C,EAAED,EAAEE,GAAG,IAAIuB,EAAE,IAAI6e,GAAGtgB,GAAG,GAAGC,EAAEmB,MAAMK,GAAGvB,EAAEip/C,WAAW1n/C,EAAEgo/C,uBAAuB5o/C,KAAKor/C,aAAa,EAAE,CAAC,IAAIrr/C,EAAE,IAAIsgB,GAAGlhB,EAAEa,KAAKor/C,cAAchs/C,EAAEmB,MAAMR,GAAGV,EAAEip/C,WAAWvo/C,EAAE6o/C,sBAAsB,CAAC,EAAEvn+C,GAAG3hB,UAAU8r/C,iBAAiB,WAAW,OAAOxr/C,KAAKur/C,wBAAwBvr/C,KAAKir/C,IAAIjr/C,KAAKkr/C,IAAIlr/C,KAAKmr/C,SAASnr/C,KAAKmr/C,QAAQxxlB,aAAa,EAAEt44B,GAAG3hB,UAAUw09C,YAAY,WAAW,MAAM,EAAE,EAAE7y8C,GAAG3hB,UAAUon+B,SAAS,WAAW,OAAOzl9B,EAAE,EAAEA,GAAG4nI,SAAS,WAAW,GAAG,IAAI7oJ,UAAUC,OAA0C,OAAO,IAAIghB,GAAvCjhB,UAAU,GAAKA,UAAU,IAAsB6oJ,WAAW,GAAG,IAAI7oJ,UAAUC,OAAO,CAAC,IAAkCN,EAAEK,UAAU,GAAGE,EAAE,IAAI+gB,GAAjDjhB,UAAU,GAAKA,UAAU,IAAgC,OAAOE,EAAEgr/C,mBAAmBvr/C,GAAGO,EAAE2oJ,UAAU,CAAC,EAAEtnI,GAAG8m+C,uBAAuBtl/C,IAAI,WAAW,OAAOsc,EAAE,EAAEkC,GAAG0p+C,qCAAqClo/C,IAAI,WAAW,OAAOkd,EAAE,EAAE/gB,OAAOkU,iBAAiB6N,GAAGM,IAAI,IAAIlC,GAAG,WAAWzf,KAAKwo/C,WAAW,IAAIrp+C,GAAGnf,KAAKgp/C,WAAW,IAAI7p+C,GAAGnf,KAAKyr/C,eAAe,IAAI/r+C,GAAG1f,KAAKqj+C,MAAM,KAAK,IAAIjk+C,EAAEgB,UAAU,GAAGJ,KAAKqj+C,MAAMjk+C,CAAC,EAAEqgB,GAAG/f,UAAUmtB,OAAO,SAASztB,GAAGY,KAAKgp/C,WAAW9i1C,aAAaxmJ,GAAG6o+C,gBAAgBvo/C,KAAKqj+C,MAAMjk+C,EAAEY,KAAKgp/C,YAAYhp/C,KAAKwo/C,WAAWF,WAAWto/C,KAAKgp/C,WAAW,EAAEvp+C,GAAG/f,UAAUkp/C,oBAAoB,WAAW,OAAO5o/C,KAAKwo/C,UAAU,EAAE/o+C,GAAG/f,UAAUw09C,YAAY,WAAW,MAAM,CAACro9C,GAAG,EAAE4T,GAAG/f,UAAUon+B,SAAS,WAAW,OAAOrn9B,EAAE,EAAE,IAAIY,GAAG,WAAWrgB,KAAKwo/C,WAAW,IAAIrp+C,GAAGnf,KAAKgp/C,WAAW,IAAI7p+C,GAAGnf,KAAKqj+C,MAAM,KAAKrj+C,KAAK0r/C,YAAY,EAAE,IAAIts/C,EAAEgB,UAAU,GAAGjB,EAAEiB,UAAU,GAAGJ,KAAKqj+C,MAAMjk+C,EAAEY,KAAK0r/C,YAAY7o/C,KAAK2K,MAAM3K,KAAKogD,MAAM,EAAE9jD,GAAG,EAAEkhB,GAAG3gB,UAAUmtB,OAAO,SAASztB,EAAED,GAAG,GAAG,IAAIA,EAAE,OAAO,KAAK,IAAI,IAAIE,EAAED,EAAEq49C,cAAct49C,EAAE,GAAGyB,EAAExB,EAAEq49C,cAAct49C,GAAGY,GAAGa,EAAEqD,EAAE5E,EAAE4E,GAAGjE,KAAK0r/C,YAAYpr/C,GAAGM,EAAEoC,EAAE3D,EAAE2D,GAAGhD,KAAK0r/C,YAAY5q/C,EAAE,EAAEA,EAAEd,KAAK0r/C,YAAY5q/C,IAAI,CAAC,IAAIE,EAAE3B,EAAE4E,EAAEnD,EAAEf,EAAEsC,EAAEhD,EAAE2D,EAAElC,EAAER,EAAEkC,EAAE,IAAI2B,EAAEnD,EAAEqB,GAAGrC,KAAKgp/C,WAAW9i1C,aAAaxmJ,GAAG6o+C,gBAAgBvo/C,KAAKqj+C,MAAM7g+C,EAAExC,KAAKgp/C,YAAYhp/C,KAAKwo/C,WAAWF,WAAWto/C,KAAKgp/C,WAAW,CAAC,EAAE3o+C,GAAG3gB,UAAU4gL,OAAO,WAAW,OAAM,CAAE,EAAEjgK,GAAG3gB,UAAUsj+C,kBAAkB,WAAW,OAAM,CAAE,EAAE3i9C,GAAG3gB,UAAUkp/C,oBAAoB,WAAW,OAAO5o/C,KAAKwo/C,UAAU,EAAEno+C,GAAG3gB,UAAUw09C,YAAY,WAAW,MAAM,CAAC/k9C,GAAG,EAAEkR,GAAG3gB,UAAUon+B,SAAS,WAAW,OAAOzm9B,EAAE,EAAE,IAAId,GAAG,SAASngB,EAAED,EAAEE,GAAGW,KAAK2r/C,kBAAkB,KAAK3r/C,KAAK4r/C,kBAAkB,KAAK5r/C,KAAK6r/C,kBAAkB,KAAK7r/C,KAAK8r/C,kBAAkB,KAAK9r/C,KAAK+r/C,UAAS,EAAG/r/C,KAAKgs/C,QAAQ,KAAKhs/C,KAAKis/C,eAAe,KAAKjs/C,KAAKks/C,gBAAgB,KAAKls/C,KAAKqlwC,OAAOjmwC,GAAG,KAAKY,KAAKms/C,aAAaht/C,GAAG,KAAKa,KAAKqn9C,QAAQho9C,GAAG,IAAI,EAAEyiB,GAAG,CAACsq+C,QAAQ,CAACto/C,cAAa,GAAIuo/C,uBAAuB,CAACvo/C,cAAa,IAAKyb,GAAG7f,UAAU4s/C,qBAAqB,SAASlt/C,EAAED,EAAEE,GAAG,IAAIuB,EAAE,IAAIygB,GAAGliB,EAAEC,GAAG,GAAGwB,EAAE0q/C,mBAAmB,KAAKtr/C,KAAK8r/C,kBAAkBlr/C,EAAE4q/C,mBAAmBxr/C,KAAK8r/C,kBAAkBzs/C,EAAE,CAACW,KAAK+r/C,UAAS,EAAG,IAAIhs/C,EAAEa,EAAE4zO,iBAAiBx0O,KAAKis/C,eAAels/C,EAAE,GAAGC,KAAKks/C,gBAAgB9s/C,EAAEu/9C,aAAa7E,iBAAiB/59C,GAAGC,KAAKgs/C,QAAQ,yDAAyDhs/C,KAAK8r/C,kBAAkB,OAAOrn/C,EAAE019C,aAAap69C,EAAE,GAAGA,EAAE,IAAI,GAAG,CAAC,EAAEwf,GAAG7f,UAAUozE,QAAQ,WAAW,IAAI1zE,EAAEyD,KAAKmjH,IAAIhmH,KAAKms/C,cAAcht/C,EAAEogB,GAAG8s+C,uBAAuBjt/C,EAAE,OAAOY,KAAK2r/C,kBAAkBvs/C,EAAED,EAAEa,KAAK4r/C,kBAAkBxs/C,EAAED,KAAKa,KAAKqlwC,OAAOh9rC,YAAYroE,KAAKqn9C,QAAQh/4C,aAAaroE,KAAKms/C,aAAa,EAAEns/C,KAAKus/C,qBAAqBvs/C,KAAKws/C,qBAAqBjt+C,GAAG6s+C,SAAS3m/C,EAAEy6H,IAAI081C,QAAQ,aAAa589C,KAAK6r/C,kBAAkB,WAAW,EAAE7r/C,KAAK6r/C,kBAAkB7r/C,KAAKms/C,cAAc,eAAens/C,KAAK8r/C,kBAAkB,WAAW9r/C,KAAK8r/C,kBAAkB9r/C,KAAKms/C,aAAa,IAAIns/C,KAAK+r/C,SAAS,EAAExs+C,GAAG7f,UAAU8s/C,mBAAmB,WAAW,KAAKxs/C,KAAKqlwC,kBAAkB/0vC,IAAItQ,KAAKqlwC,kBAAkB1+vC,IAAI3G,KAAKqlwC,kBAAkBx1vC,IAAI,OAAO,KAAK,IAAIzQ,EAAEY,KAAKys/C,gBAAgBzs/C,KAAKqlwC,QAAQ,GAAGrlwC,KAAK0s/C,qBAAqBtt/C,EAAEY,KAAKqn9C,QAAQrn9C,KAAK2r/C,oBAAoB3r/C,KAAK+r/C,SAAS,OAAO,KAAK/r/C,KAAKss/C,qBAAqBlt/C,EAAEY,KAAKqn9C,QAAQrn9C,KAAK4r/C,kBAAkB,EAAErs+C,GAAG7f,UAAUit/C,kBAAkB,WAAW,OAAO3s/C,KAAKks/C,eAAe,EAAE3s+C,GAAG7f,UAAUgt/C,qBAAqB,SAAStt/C,EAAED,EAAEE,GAAG,IAAIuB,EAAE,IAAIke,GAAG1f,EAAED,EAAEE,GAAG,GAAGW,KAAK6r/C,kBAAkBjr/C,EAAEqoJ,WAAWjpJ,KAAK6r/C,kBAAkBxs/C,EAAE,CAACW,KAAK+r/C,UAAS,EAAG,IAAIhs/C,EAAEa,EAAEmq/C,gBAAgB/q/C,KAAKis/C,eAAerr/C,EAAEmq/C,gBAAgB,GAAG/q/C,KAAKks/C,gBAAgB9s/C,EAAEu/9C,aAAa7E,iBAAiB/59C,GAAGC,KAAKgs/C,QAAQ,yDAAyDhs/C,KAAK6r/C,kBAAkB,OAAOpn/C,EAAE019C,aAAap69C,EAAE,GAAGA,EAAE,IAAI,IAAI,CAAC,EAAEwf,GAAG7f,UAAU6s/C,mBAAmB,WAAW,IAAInt/C,EAAEY,KAAKqn9C,QAAQ+b,cAAc,GAAGpj+C,KAAK0s/C,qBAAqB1s/C,KAAKqlwC,OAAOjmwC,EAAEY,KAAK2r/C,oBAAoB3r/C,KAAK+r/C,SAAS,OAAO,KAAK/r/C,KAAKss/C,qBAAqBts/C,KAAKqlwC,OAAOjmwC,EAAEY,KAAK4r/C,kBAAkB,EAAErs+C,GAAG7f,UAAUkt/C,iBAAiB,WAAW,OAAO5s/C,KAAKis/C,cAAc,EAAE1s+C,GAAG7f,UAAU+s/C,gBAAgB,SAASrt/C,GAAG,IAAI,IAAID,EAAE,IAAI8P,GAAG5P,EAAE,IAAI2f,GAAG7f,GAAGyB,EAAE4f,GAAG8w9C,YAAYly+C,GAAGuC,WAAWf,EAAEk/9C,WAAYl/9C,EAAEG,OAAOR,MAAMlB,GAAG,OAAOD,EAAEu/9C,aAAamI,cAAc3n+C,EAAE,EAAEogB,GAAG7f,UAAUmt/C,gBAAgB,WAAW,OAAO7s/C,KAAKgs/C,OAAO,EAAEzs+C,GAAG7f,UAAUw09C,YAAY,WAAW,MAAM,EAAE,EAAE308C,GAAG7f,UAAUon+B,SAAS,WAAW,OAAOvn9B,EAAE,EAAEuC,GAAGsq+C,QAAQjp/C,IAAI,WAAW,OAAM,CAAE,EAAE2e,GAAGuq+C,uBAAuBlp/C,IAAI,WAAW,MAAM,IAAI,EAAE7D,OAAOkU,iBAAiB+L,GAAGuC,IAAI,IAAIF,GAAG,SAASxiB,EAAED,EAAEE,GAAGW,KAAK+r/C,UAAS,EAAG/r/C,KAAK8s/C,UAAU,KAAK9s/C,KAAKis/C,eAAe,KAAKjs/C,KAAKks/C,gBAAgB,KAAKls/C,KAAKqlwC,OAAOjmwC,GAAG,KAAKY,KAAKwqX,UAAUrrX,GAAG,KAAKa,KAAKqn9C,QAAQho9C,GAAG,IAAI,EAAEmiB,GAAG,CAAC4q+C,QAAQ,CAACto/C,cAAa,GAAIip/C,kBAAkB,CAACjp/C,cAAa,IAAK8d,GAAGliB,UAAUozE,QAAQ,WAAW,OAAO9yE,KAAKgt/C,iBAAiBht/C,KAAK+r/C,UAAU/r/C,KAAKit/C,qBAAqBjt/C,KAAK+r/C,UAAU/r/C,KAAKkt/C,gBAAgBlt/C,KAAK+r/C,UAAU/r/C,KAAKmt/C,YAAYnt/C,KAAK+r/C,UAAU/r/C,KAAKot/C,gBAAgBpt/C,KAAK+r/C,UAAU/r/C,KAAK+r/C,UAAU/r/C,KAAK+r/C,UAAU/r/C,KAAK+r/C,UAAU/r/C,KAAK+r/C,QAAQ,EAAEnq+C,GAAGliB,UAAUwt/C,cAAc,WAAW,GAAGlt/C,KAAKwqX,UAAU,EAAE,OAAO,KAAK,IAAIprX,EAAEY,KAAKwqX,UAAU5oW,GAAGmr+C,kBAAkB,IAAI3t/C,IAAIA,EAAE,MAAM,IAAID,EAAE,IAAIiF,EAAEpE,KAAKqlwC,OAAOm6N,uBAAuBrg+C,EAAEu59C,SAAS149C,KAAKwqX,WAAW,IAAInrX,EAAE,IAAI+E,EAAEpE,KAAKqn9C,QAAQmY,uBAAuBng+C,EAAEq59C,SAASt59C,GAAGC,EAAEu9B,SAASz9B,KAAKa,KAAK+r/C,UAAS,EAAG/r/C,KAAK8s/C,UAAU,+BAA+B9s/C,KAAKks/C,gBAAgBls/C,KAAKqlwC,OAAOs5N,aAAaY,WAAWlg+C,IAAIW,KAAK0wE,OAAO,WAAW,EAAE9uD,GAAGliB,UAAU0t/C,cAAc,WAAW,IAAIhu/C,EAAE,IAAImgB,GAAGvf,KAAKqlwC,OAAOrlwC,KAAKwqX,UAAUxqX,KAAKqn9C,SAASjo9C,EAAE0zE,YAAY9yE,KAAK+r/C,UAAS,EAAG/r/C,KAAK8s/C,UAAU1t/C,EAAEyt/C,kBAAkB7s/C,KAAKis/C,eAAe7s/C,EAAEwt/C,mBAAmB5s/C,KAAKks/C,gBAAgB9s/C,EAAEut/C,qBAAqB3s/C,KAAK0wE,OAAO,WAAW,EAAE9uD,GAAGliB,UAAUyt/C,UAAU,WAAW,IAAI/t/C,EAAEY,KAAKqlwC,OAAOv6K,UAAU3rlC,EAAEa,KAAKqn9C,QAAQv8X,UAAU9qlC,KAAKwqX,UAAU,GAAGprX,EAAED,IAAIa,KAAK+r/C,UAAS,EAAG/r/C,KAAK8s/C,UAAU,gDAAgD9s/C,KAAKks/C,gBAAgBls/C,KAAKqn9C,SAASrn9C,KAAKwqX,UAAU,GAAGprX,EAAED,IAAIa,KAAK+r/C,UAAS,EAAG/r/C,KAAK8s/C,UAAU,+CAA+C9s/C,KAAKks/C,gBAAgBls/C,KAAKqn9C,SAASrn9C,KAAK0wE,OAAO,OAAO,EAAE9uD,GAAGliB,UAAUst/C,eAAe,WAAWht/C,KAAKqn9C,mBAAmB/28C,IAAItQ,KAAKqn9C,mBAAmB1g9C,KAAK3G,KAAK+r/C,UAAS,GAAI/r/C,KAAK8s/C,UAAU,0BAA0B9s/C,KAAKks/C,gBAAgBls/C,KAAKqn9C,QAAQrn9C,KAAK0wE,OAAO,YAAY,EAAE9uD,GAAGliB,UAAUit/C,kBAAkB,WAAW,OAAO3s/C,KAAKks/C,eAAe,EAAEtq+C,GAAGliB,UAAUkt/C,iBAAiB,WAAW,OAAO5s/C,KAAKis/C,cAAc,EAAErq+C,GAAGliB,UAAUut/C,mBAAmB,WAAW,OAAOjt/C,KAAKqlwC,OAAOx/M,gBAAgB,GAAO7ljC,KAAKwqX,UAAU,EAApB,MAA4BxqX,KAAKqn9C,QAAQh/4C,YAAYroE,KAAK+r/C,UAAS,EAAG/r/C,KAAK8s/C,UAAU,sBAAsB9s/C,KAAKks/C,gBAAgBls/C,KAAKqn9C,cAAcrn9C,KAAK0wE,OAAO,iBAAiB,EAAE9uD,GAAGliB,UAAUgxE,OAAO,SAAStxE,GAAG,IAAIwiB,GAAGwq+C,QAAQ,OAAO,KAAK3m/C,EAAEy6H,IAAI081C,QAAQ,SAASx99C,EAAE,MAAMY,KAAK+r/C,SAAS,SAAS,UAAU,EAAEnq+C,GAAGliB,UAAUmt/C,gBAAgB,WAAW,OAAO7s/C,KAAK8s/C,SAAS,EAAElr+C,GAAGliB,UAAUw09C,YAAY,WAAW,MAAM,EAAE,EAAEty8C,GAAGliB,UAAUon+B,SAAS,WAAW,OAAOll9B,EAAE,EAAEA,GAAGyr+C,WAAW,SAASju/C,EAAED,EAAEE,GAAG,IAAIuB,EAAE,IAAIghB,GAAGxiB,EAAED,EAAEE,GAAG,OAAOuB,EAAEkyE,UAAU,KAAKlyE,EAAEis/C,iBAAiB,EAAEjr+C,GAAGkxD,QAAQ,SAAS1zE,EAAED,EAAEE,GAAG,QAAQ,IAAIuiB,GAAGxiB,EAAED,EAAEE,GAAGyzE,SAAS,EAAEtxD,GAAG4q+C,QAAQjp/C,IAAI,WAAW,OAAM,CAAE,EAAEqe,GAAGur+C,kBAAkB5p/C,IAAI,WAAW,MAAM,IAAI,EAAE7D,OAAOkU,iBAAiBoO,GAAGJ,IAAI,IAAIJ,GAAG,WAAWphB,KAAKir+C,KAAK,KAAKjr+C,KAAKykJ,MAAM,KAAK,IAAIrlJ,EAAEgB,UAAU,GAAGjB,EAAEiB,UAAU,GAAGJ,KAAKir+C,KAAK7r+C,EAAEY,KAAKykJ,MAAMtlJ,CAAC,EAAEiiB,GAAG1hB,UAAU80O,eAAe,WAAW,OAAOx0O,KAAKir+C,IAAI,EAAE7p9C,GAAG1hB,UAAUklB,KAAK,WAAW,OAAO5kB,KAAKir+C,KAAK5q+C,MAAM,EAAE+gB,GAAG1hB,UAAU+39C,cAAc,SAASr49C,GAAG,OAAOY,KAAKir+C,KAAK7r+C,EAAE,EAAEgiB,GAAG1hB,UAAU88O,SAAS,WAAW,OAAOx8O,KAAKir+C,KAAK,GAAG141C,OAAOvyI,KAAKir+C,KAAKjr+C,KAAKir+C,KAAK5q+C,OAAO,GAAG,EAAE+gB,GAAG1hB,UAAUq1+C,iBAAiB,SAAS31+C,GAAG,OAAOA,IAAIY,KAAKir+C,KAAK5q+C,OAAO,GAAG,EAAEiR,GAAG2j+C,OAAOj1+C,KAAKy39C,cAAcr49C,GAAGY,KAAKy39C,cAAcr49C,EAAE,GAAG,EAAEgiB,GAAG1hB,UAAUo/H,QAAQ,SAAS1/H,GAAGY,KAAKykJ,MAAMrlJ,CAAC,EAAEgiB,GAAG1hB,UAAU8kI,QAAQ,WAAW,OAAOxkI,KAAKykJ,KAAK,EAAErjI,GAAG1hB,UAAU6E,SAAS,WAAW,OAAOE,EAAE019C,aAAa,IAAIhz9C,GAAGnH,KAAKir+C,MAAM,EAAE7p9C,GAAG1hB,UAAUw09C,YAAY,WAAW,MAAM,CAAC7i9C,GAAG,EAAE+P,GAAG1hB,UAAUon+B,SAAS,WAAW,OAAO1l9B,EAAE,EAAE,IAAIM,GAAG,WAAW1hB,KAAKst/C,uBAAsB,EAAGtt/C,KAAKut/C,yBAAwB,EAAGvt/C,KAAK07+C,IAAI,KAAK17+C,KAAKwt/C,sBAAsB,KAAKxt/C,KAAKyt/C,aAAa,KAAKzt/C,KAAK0t/C,eAAe,IAAIz++C,GAAGjP,KAAK2t/C,mBAAmB,EAAE3t/C,KAAK4t/C,oBAAmB,EAAG,IAAIxu/C,EAAEgB,UAAU,GAAGJ,KAAK07+C,IAAIt8+C,EAAEY,KAAKwt/C,sBAAsB,IAAI,EAAE9r+C,GAAGhiB,UAAUmu/C,wBAAwB,WAAW,OAAO7t/C,KAAKwt/C,qBAAqB,EAAE9r+C,GAAGhiB,UAAUou/C,wBAAwB,SAAS1u/C,GAAGY,KAAKut/C,wBAAwBnu/C,CAAC,EAAEsiB,GAAGhiB,UAAUqu/C,wBAAwB,WAAW,OAAO/t/C,KAAKyt/C,YAAY,EAAE/r+C,GAAGhiB,UAAU6pD,MAAM,WAAW,OAAOvpD,KAAK2t/C,kBAAkB,EAAEjs+C,GAAGhiB,UAAUsu/C,iBAAiB,WAAW,OAAOhu/C,KAAK0t/C,cAAc,EAAEhs+C,GAAGhiB,UAAUuu/C,wBAAwB,SAAS7u/C,GAAGY,KAAKst/C,sBAAsBlu/C,CAAC,EAAEsiB,GAAGhiB,UAAUwu/C,qBAAqB,SAAS9u/C,GAAGY,KAAK4t/C,mBAAmBxu/C,CAAC,EAAEsiB,GAAGhiB,UAAU83+C,qBAAqB,SAASp4+C,EAAED,EAAEE,EAAEuB,GAAG,IAAIZ,KAAKst/C,uBAAuBtt/C,KAAK479C,kBAAkB,OAAO,KAAK,GAAGx89C,IAAIC,GAAGF,IAAIyB,EAAE,OAAO,KAAK,GAAGZ,KAAKut/C,0BAA8Bvt/C,KAAKmu/C,aAAa/u/C,EAAED,KAAIa,KAAKmu/C,aAAa9u/C,EAAEuB,GAAI,OAAO,KAAK,IAAIb,EAAEX,EAAEo1O,iBAAiBr1O,GAAGmB,EAAElB,EAAEo1O,iBAAiBr1O,EAAE,GAAG2B,EAAEzB,EAAEm1O,iBAAiB5zO,GAAGI,EAAE3B,EAAEm1O,iBAAiB5zO,EAAE,GAAGZ,KAAK07+C,IAAIngB,oBAAoBx79C,EAAEO,EAAEQ,EAAEE,GAAGhB,KAAK07+C,IAAI9f,mBAAmB579C,KAAK07+C,IAAI5f,2BAA2B979C,KAAKyt/C,aAAa,IAAIhu/C,MAAM,GAAG29H,KAAK,MAAMp9H,KAAKyt/C,aAAa,GAAG1t/C,EAAEC,KAAKyt/C,aAAa,GAAGnt/C,EAAEN,KAAKyt/C,aAAa,GAAG3s/C,EAAEd,KAAKyt/C,aAAa,GAAGzs/C,EAAEhB,KAAKwt/C,sBAAsBxt/C,KAAK07+C,IAAI3lL,gBAAgB,GAAG/1zC,KAAK4t/C,oBAAoB5t/C,KAAK0t/C,eAAevo+C,IAAInlB,KAAKwt/C,uBAAuBxt/C,KAAK2t/C,qBAAqB,EAAEjs+C,GAAGhiB,UAAUyu/C,aAAa,SAAS/u/C,EAAED,GAAG,OAAO,IAAIA,GAAGA,GAAGC,EAAEwlB,OAAO,CAAC,EAAElD,GAAGhiB,UAAUk89C,gBAAgB,WAAW,OAAO,OAAO579C,KAAKwt/C,qBAAqB,EAAE9r+C,GAAGhiB,UAAU4gL,OAAO,WAAW,OAAOtgL,KAAKst/C,uBAAuB,OAAOtt/C,KAAKwt/C,qBAAqB,EAAE9r+C,GAAGhiB,UAAUw09C,YAAY,WAAW,MAAM,CAACxh9C,GAAG,EAAEgP,GAAGhiB,UAAUon+B,SAAS,WAAW,OAAOpl9B,EAAE,EAAEA,GAAG0s+C,6BAA6B,SAAShv/C,GAAG,IAAID,EAAE,IAAIuiB,GAAGtiB,GAAG,OAAOD,EAAE8u/C,yBAAwB,GAAI9u/C,CAAC,EAAEuiB,GAAG2s+C,4BAA4B,SAASjv/C,GAAG,OAAO,IAAIsiB,GAAGtiB,EAAE,EAAEsiB,GAAG4s+C,0BAA0B,SAASlv/C,GAAG,IAAID,EAAE,IAAIuiB,GAAGtiB,GAAG,OAAOD,EAAE8u/C,yBAAwB,GAAI9u/C,EAAE+u/C,sBAAqB,GAAI/u/C,CAAC,EAAE,IAAI+gB,GAAG,WAAWlgB,KAAK07+C,IAAI,IAAIxw+C,GAAGlL,KAAKol/C,YAAY,KAAKpl/C,KAAKst/C,uBAAsB,EAAGtt/C,KAAK82+C,QAAQ,KAAK92+C,KAAK+r/C,UAAS,EAAG,IAAI3s/C,EAAEgB,UAAU,GAAGJ,KAAKol/C,YAAYhm/C,CAAC,EAAE8gB,GAAGxgB,UAAUqiZ,QAAQ,WAAW,GAAG,OAAO/hZ,KAAK82+C,QAAQ,OAAO,KAAK92+C,KAAKul/C,4BAA4B,EAAErl+C,GAAGxgB,UAAUsu/C,iBAAiB,WAAW,OAAOhu/C,KAAK82+C,QAAQkX,kBAAkB,EAAE9t+C,GAAGxgB,UAAUozE,QAAQ,WAAW,OAAO9yE,KAAK+hZ,UAAU/hZ,KAAK+r/C,QAAQ,EAAE7r+C,GAAGxgB,UAAUuu/C,wBAAwB,SAAS7u/C,GAAGY,KAAKst/C,sBAAsBlu/C,CAAC,EAAE8gB,GAAGxgB,UAAU6l/C,2BAA2B,WAAWvl/C,KAAK+r/C,UAAS,EAAG/r/C,KAAK82+C,QAAQ,IAAIp19C,GAAG1hB,KAAK07+C,KAAK17+C,KAAK82+C,QAAQmX,wBAAwBju/C,KAAKst/C,uBAAuB,IAAIlu/C,EAAE,IAAIiT,GAAG,GAAGjT,EAAE23+C,sBAAsB/2+C,KAAK82+C,SAAS13+C,EAAEy3+C,aAAa72+C,KAAKol/C,aAAapl/C,KAAK82+C,QAAQlb,kBAAkB,OAAO579C,KAAK+r/C,UAAS,EAAG,IAAI,EAAE7r+C,GAAGxgB,UAAU8l/C,WAAW,WAAW,GAAGxl/C,KAAK+hZ,WAAW/hZ,KAAK+r/C,SAAS,MAAM,IAAI5j/C,GAAGnI,KAAK6s/C,kBAAkB7s/C,KAAK82+C,QAAQ+W,0BAA0B,EAAE3t+C,GAAGxgB,UAAUmt/C,gBAAgB,WAAW,GAAG7s/C,KAAK+r/C,SAAS,MAAM,yBAAyB,IAAI3s/C,EAAEY,KAAK82+C,QAAQiX,0BAA0B,MAAM,wCAAwCtp/C,EAAE019C,aAAa/69C,EAAE,GAAGA,EAAE,IAAI,QAAQqF,EAAE019C,aAAa/69C,EAAE,GAAGA,EAAE,GAAG,EAAE8gB,GAAGxgB,UAAUw09C,YAAY,WAAW,MAAM,EAAE,EAAEh08C,GAAGxgB,UAAUon+B,SAAS,WAAW,OAAO5m9B,EAAE,EAAEA,GAAGqu+C,qBAAqB,SAASnv/C,GAAG,IAAID,EAAE,IAAI+gB,GAAG9gB,GAAG,OAAOD,EAAE8u/C,yBAAwB,GAAI9u/C,EAAE2zE,UAAU3zE,EAAE6u/C,kBAAkB,EAAE,IAAI1s+C,GAAG,SAASliB,IAAIY,KAAKwu/C,IAAI,KAAK,IAAIrv/C,EAAEiB,UAAU,GAAGJ,KAAKwu/C,IAAI,IAAItu+C,GAAG9gB,EAAEqv/C,iBAAiBtv/C,GAAG,EAAEmiB,GAAG5hB,UAAU8l/C,WAAW,WAAWxl/C,KAAKwu/C,IAAIhJ,YAAY,EAAElk+C,GAAG5hB,UAAUw09C,YAAY,WAAW,MAAM,EAAE,EAAE5y8C,GAAG5hB,UAAUon+B,SAAS,WAAW,OAAOxl9B,EAAE,EAAEA,GAAGmt+C,iBAAiB,SAASrv/C,GAAG,IAAI,IAAID,EAAE,IAAI8P,GAAG5P,EAAED,EAAEuC,WAAWtC,EAAEyg+C,WAAW,CAAC,IAAIl/9C,EAAEvB,EAAE0B,OAAO5B,EAAEgmB,IAAI,IAAI/D,GAAGxgB,EAAE4zO,iBAAiB5zO,GAAG,CAAC,OAAOzB,CAAC,EAAEmiB,GAAGkk+C,WAAW,SAASpm/C,GAAG,IAAIkiB,GAAGliB,GAAGom/C,YAAY,EAAE,IAAIhn+C,GAAG,SAASpf,GAAGY,KAAK0u/C,OAAOtv/C,CAAC,EAAEof,GAAG9e,UAAU2vB,IAAI,SAASjwB,GAAG,IAAI,IAAID,EAAE,IAAI8P,GAAG5P,EAAE,EAAEA,EAAED,EAAE+/9C,mBAAmB9/9C,IAAI,CAAC,IAAIuB,EAAEZ,KAAK0u/C,OAAOr/9C,IAAIjwB,EAAEw/9C,aAAav/9C,IAAIuB,EAAEynE,WAAWlpE,EAAEgmB,IAAIvkB,EAAE,CAAC,OAAOxB,EAAEu/9C,aAAazE,yBAAyB3x9C,GAAGw+9C,gBAAgB5n+C,GAAG,EAAEqf,GAAG9e,UAAUw09C,YAAY,WAAW,MAAM,EAAE,EAAE118C,GAAG9e,UAAUon+B,SAAS,WAAW,OAAOto9B,EAAE,EAAEA,GAAG6Q,IAAI,SAASjwB,EAAED,GAAG,OAAO,IAAIqf,GAAGrf,GAAGkwB,IAAIjwB,EAAE,EAAE,IAAI6f,GAAG,WAAWjf,KAAK2u/C,IAAI,KAAK3u/C,KAAKqr+C,iBAAiB,KAAKrr+C,KAAKoq/C,WAAW,KAAKpq/C,KAAK4u/C,eAAe,IAAI3/+C,GAAGjP,KAAK6u/C,gBAAgB,IAAI5/+C,GAAG,IAAI7P,EAAEgB,UAAU,GAAGjB,EAAEiB,UAAU,GAAGf,EAAEe,UAAU,GAAGJ,KAAK2u/C,IAAIvv/C,EAAEY,KAAKqr+C,iBAAiBls+C,EAAEa,KAAKoq/C,WAAW/q/C,CAAC,EAAE4f,GAAGvf,UAAUov/C,aAAa,SAAS1v/C,GAAG,IAAI,IAAID,EAAEa,KAAK2u/C,IAAI9mX,WAAWyoW,cAAc3u+C,WAAWxC,EAAE2g+C,WAAW,CAAC,IAAIzg+C,EAAEF,EAAE4B,OAAOf,KAAK+u/C,gBAAgB1v/C,EAAED,EAAEY,KAAK4u/C,gBAAgB5u/C,KAAKgv/C,yBAAyB3v/C,EAAED,EAAEY,KAAK4u/C,eAAe,CAAC,EAAE3v+C,GAAGvf,UAAUuv/C,kBAAkB,SAAS7v/C,EAAED,GAAG,IAAIE,EAAEW,KAAKoq/C,WAAWpK,OAAO5g/C,EAAEq49C,gBAAgBz39C,KAAK2u/C,IAAIO,eAAe/v/C,IAAIC,EAAEwviB,WAAW277B,YAAYpr+C,EAAEE,EAAE,EAAE4f,GAAGvf,UAAU4qD,MAAM,SAASlrD,GAAG,OAAOY,KAAKuh/C,uBAAuBvh/C,KAAK8u/C,aAAa1v/C,GAAGY,KAAKmv/C,WAAW/v/C,GAAGY,KAAK6u/C,eAAe,EAAE5v+C,GAAGvf,UAAUqv/C,gBAAgB,SAAS3v/C,EAAED,EAAEE,GAAG,IAAIuB,EAAExB,EAAEwviB,WAAW7uiB,EAAEX,EAAEm0oC,UAAUn0oC,EAAEkw+C,eAAelw+C,EAAEiq+C,cAAcvy9C,GAAGs4+C,aAAaxu/C,EAAEzB,IAAIY,EAAEgt+C,cAAc1t+C,EAAE8lB,IAAIplB,GAAGX,EAAEsw+C,gBAAe,IAAK,EAAEzw9C,GAAGvf,UAAU6h/C,qBAAqB,WAAW,IAAI,IAAIni/C,EAAEY,KAAK2u/C,IAAI9mX,WAAWr6P,WAAW7r4B,WAAWvC,EAAE0g+C,WAAY1g+C,EAAE2B,OAAOun+C,WAAWiZ,uBAAuB,IAAI,IAAIpi/C,EAAEa,KAAK2u/C,IAAI9mX,WAAWyoW,cAAc3u+C,WAAWxC,EAAE2g+C,WAAW,CAAC,IAAIzg+C,EAAEF,EAAE4B,OAAOH,EAAEvB,EAAEk0oC,UAAU,GAAGl0oC,EAAEiw+C,eAAe1u+C,EAAEos+C,eAAe,CAAC,IAAIjt+C,EAAEC,KAAK2u/C,IAAIU,aAAahw/C,EAAEo49C,iBAAiB729C,EAAEqs+C,WAAWlt+C,EAAE,CAAC,CAAC,EAAEkf,GAAGvf,UAAU4v/C,mBAAmB,SAASlw/C,GAAG,IAAI,IAAID,EAAEC,EAAEuC,WAAWxC,EAAE2g+C,WAAW,CAAC,IAAIzg+C,EAAEF,EAAE4B,OAAOH,EAAEvB,EAAEuviB,WAAWvviB,EAAEms+C,eAAe5q+C,EAAE2yQ,OAAO,GAAGvzQ,KAAKiv/C,kBAAkB5v/C,EAAE,GAAGW,KAAKiv/C,kBAAkB5v/C,EAAE,GAAG,CAAC,EAAE4f,GAAGvf,UAAUyv/C,WAAW,SAAS/v/C,GAAG,IAAI,IAAID,EAAEa,KAAK4u/C,eAAejt/C,WAAWxC,EAAE2g+C,WAAW,CAAC,IAAIzg+C,EAAEF,EAAE4B,OAAOH,EAAEZ,KAAKqr+C,iBAAiBvR,iBAAiBz69C,EAAEm1O,kBAAkBx0O,KAAK6u/C,gBAAgB1p+C,IAAIvkB,GAAGvB,EAAEyq+C,aAAY,EAAG,CAAC,EAAE7q9C,GAAGvf,UAAUsv/C,yBAAyB,SAAS5v/C,EAAED,EAAEE,GAAG,IAAIuB,EAAExB,EAAEwviB,WAAW,OAAOxviB,EAAEkw+C,cAAkBlw+C,EAAEiq+C,aAAiBjq+C,EAAEyq+C,sBAA0Bzq+C,EAAEm0oC,UAAUigL,aAAhE,MAAmFzozC,GAAGiprB,SAAS50rB,EAAEo0zC,cAAcp0zC,EAAEop+C,SAASh1K,gBAAgBp0zC,EAAEm0oC,UAAUigL,mBAAmB18yC,GAAGs4+C,aAAaxu/C,EAAEzB,IAAIA,IAAI2X,GAAGirK,eAAe1iL,EAAE8lB,IAAI/lB,EAAEm0oC,WAAWn0oC,EAAEsw+C,gBAAe,KAAM,EAAEzw9C,GAAGvf,UAAUw09C,YAAY,WAAW,MAAM,EAAE,EAAEj18C,GAAGvf,UAAUon+B,SAAS,WAAW,OAAO7n9B,EAAE,EAAE,IAAIwC,GAAG,WAAWzhB,KAAK2u/C,IAAI,KAAK3u/C,KAAKqr+C,iBAAiB,KAAKrr+C,KAAKuv/C,iBAAiB,IAAItg/C,GAAG,IAAI7P,EAAEgB,UAAU,GAAGjB,EAAEiB,UAAU,GAAGJ,KAAK2u/C,IAAIvv/C,EAAEY,KAAKqr+C,iBAAiBls+C,CAAC,EAAEsiB,GAAG/hB,UAAU8v/C,yBAAyB,SAASpw/C,GAAG,IAAID,EAAEC,EAAEq49C,gBAAgB,IAAIz39C,KAAK2u/C,IAAIc,cAActw/C,GAAG,CAAC,IAAIE,EAAEW,KAAKqr+C,iBAAiBzR,YAAYz69C,GAAGa,KAAKuv/C,iBAAiBpq+C,IAAI9lB,EAAE,CAAC,EAAEoiB,GAAG/hB,UAAUgw/C,6BAA6B,SAAStw/C,GAAG,IAAI,IAAID,EAAEa,KAAK2u/C,IAAI9mX,WAAWr6P,WAAW7r4B,WAAWxC,EAAE2g+C,WAAW,CAAC,IAAIzg+C,EAAEF,EAAE4B,OAAO,KAAI1B,EAAEm0zC,cAAgBn0zC,EAAEgu+C,0BAA2B,IAAIhu+C,EAAEip+C,WAAWyY,aAAa3h/C,IAAI0X,GAAGirK,cAAe,CAAC,IAAInhL,EAAEvB,EAAEuviB,WAAW93hB,GAAGs4+C,aAAaxu/C,EAAExB,IAAIY,KAAKwv/C,yBAAyBnw/C,EAAE,CAAC,CAAC,EAAEoiB,GAAG/hB,UAAU4qD,MAAM,SAASlrD,GAAG,OAAOY,KAAK0v/C,6BAA6Btw/C,GAAGY,KAAKuv/C,gBAAgB,EAAE9t+C,GAAG/hB,UAAUw09C,YAAY,WAAW,MAAM,EAAE,EAAEzy8C,GAAG/hB,UAAUon+B,SAAS,WAAW,OAAOrl9B,EAAE,EAAE,IAAIrC,GAAG,WAAWpf,KAAKo/+C,WAAW,KAAKp/+C,KAAK+hxB,SAAS,KAAK/hxB,KAAK2v/C,qBAAoB,EAAG3v/C,KAAK4v/C,iCAAgC,EAAG5v/C,KAAK6v/C,sBAAqB,EAAG7v/C,KAAK8v/C,eAAc,CAAE,EAAE1w+C,GAAG1f,UAAU29V,eAAe,SAASj+V,EAAED,GAAG,OAAOa,KAAK+hxB,SAAS63sB,YAAY559C,KAAK+v/C,qBAAqB3w/C,EAAEul+C,wBAAwBvl+C,GAAG,EAAEggB,GAAG1f,UAAUsw/C,iBAAiB,SAAS5w/C,EAAED,GAAG,IAAIE,GAAE,EAAGuB,EAAEZ,KAAKiw/C,oBAAoB7w/C,EAAE4l+C,kBAAkB5l+C,GAAG,OAAOwB,GAAGA,aAAa2F,KAAK3F,EAAEynE,YAAYhpE,GAAE,GAAI,IAAI,IAAIU,EAAE,IAAIkP,GAAG3O,EAAE,EAAEA,EAAElB,EAAE0l+C,qBAAqBxk+C,IAAI,CAAC,IAAIQ,EAAEd,KAAKiw/C,oBAAoB7w/C,EAAE6l+C,iBAAiB3k+C,GAAGlB,GAAG,OAAO0B,GAAGA,EAAEunE,YAAYvnE,aAAayF,KAAKlH,GAAE,GAAIU,EAAEolB,IAAIrkB,GAAG,CAAC,GAAGzB,EAAE,OAAOW,KAAK+hxB,SAAS4uc,cAAc/vtC,EAAEb,EAAE8tH,QAAQ,KAAK,IAAI7sH,EAAE,IAAIiO,GAAG,OAAO,OAAOrO,GAAGI,EAAEmkB,IAAIvkB,GAAGI,EAAEiz9C,OAAOl09C,GAAGC,KAAK+hxB,SAAS+ktB,cAAc9l+C,EAAE,EAAEoe,GAAG1f,UAAUww/C,yBAAyB,SAAS9w/C,GAAG,OAAOY,KAAK+hxB,SAAS6itB,+BAA+B1k+C,OAAOd,EAAE,EAAEggB,GAAG1f,UAAUyw/C,iBAAiB,WAAW,OAAOnw/C,KAAKo/+C,UAAU,EAAEhg+C,GAAG1f,UAAU0w/C,yBAAyB,SAAShx/C,EAAED,GAAG,IAAI,IAAIE,EAAE,IAAI4P,GAAGrO,EAAE,EAAEA,EAAExB,EAAE+/9C,mBAAmBv+9C,IAAI,CAAC,IAAIb,EAAEC,KAAKqw/C,oBAAoBjx/C,EAAEw/9C,aAAah+9C,GAAGxB,GAAG,OAAOW,IAAIA,EAAEsoE,WAAWhpE,EAAE8lB,IAAIplB,GAAG,CAAC,OAAOC,KAAK+hxB,SAAS+ktB,cAAczn+C,EAAE,EAAE+f,GAAG1f,UAAUqw/C,qBAAqB,SAAS3w/C,EAAED,GAAG,OAAOa,KAAK8/H,KAAK1gI,EAAE,EAAEggB,GAAG1f,UAAU2w/C,oBAAoB,SAASjx/C,EAAED,GAAG,OAAOa,KAAK+hxB,SAAS+3sB,iBAAiB959C,KAAK+v/C,qBAAqB3w/C,EAAEul+C,wBAAwBvl+C,GAAG,EAAEggB,GAAG1f,UAAU4w/C,oBAAoB,SAASlx/C,EAAED,GAAG,IAAI,IAAIE,EAAE,IAAI4P,GAAGrO,EAAE,EAAEA,EAAExB,EAAE+/9C,mBAAmBv+9C,IAAI,CAAC,IAAIb,EAAEC,KAAKq9V,eAAej+V,EAAEw/9C,aAAah+9C,GAAGxB,GAAG,OAAOW,IAAIA,EAAEsoE,WAAWhpE,EAAE8lB,IAAIplB,GAAG,CAAC,OAAOC,KAAK+hxB,SAAS+ktB,cAAczn+C,EAAE,EAAE+f,GAAG1f,UAAU6w/C,sBAAsB,SAASnx/C,EAAED,GAAG,IAAI,IAAIE,EAAE,IAAI4P,GAAGrO,EAAE,EAAEA,EAAExB,EAAE+/9C,mBAAmBv+9C,IAAI,CAAC,IAAIb,EAAEC,KAAKgw/C,iBAAiB5w/C,EAAEw/9C,aAAah+9C,GAAGxB,GAAG,OAAOW,IAAIA,EAAEsoE,WAAWhpE,EAAE8lB,IAAIplB,GAAG,CAAC,OAAOC,KAAK+hxB,SAAS+ktB,cAAczn+C,EAAE,EAAE+f,GAAG1f,UAAUogI,KAAK,SAAS1gI,GAAG,OAAOA,EAAE0gI,MAAM,EAAE1gH,GAAG1f,UAAU8w/C,4BAA4B,SAASpx/C,EAAED,GAAG,IAAI,IAAIE,EAAE,IAAI4P,GAAGrO,EAAE,EAAEA,EAAExB,EAAE+/9C,mBAAmBv+9C,IAAI,CAAC,IAAIb,EAAEC,KAAK4iI,UAAUxjI,EAAEw/9C,aAAah+9C,IAAI,OAAOb,IAAIC,KAAK2v/C,qBAAqB5v/C,EAAEsoE,WAAWhpE,EAAE8lB,IAAIplB,GAAG,CAAC,OAAOC,KAAK4v/C,gCAAgC5v/C,KAAK+hxB,SAASm4sB,yBAAyB3x9C,GAAGw+9C,gBAAgB1n+C,IAAIW,KAAK+hxB,SAAS+ktB,cAAczn+C,EAAE,EAAE+f,GAAG1f,UAAUkjI,UAAU,SAASxjI,GAAG,GAAGY,KAAKo/+C,WAAWhg/C,EAAEY,KAAK+hxB,SAAS3ixB,EAAEu/9C,aAAav/9C,aAAagR,GAAG,OAAOpQ,KAAKq9V,eAAej+V,EAAE,MAAM,GAAGA,aAAasH,GAAG,OAAO1G,KAAKsw/C,oBAAoBlx/C,EAAE,MAAM,GAAGA,aAAamH,GAAG,OAAOvG,KAAKiw/C,oBAAoB7w/C,EAAE,MAAM,GAAGA,aAAa4P,GAAG,OAAOhP,KAAKqw/C,oBAAoBjx/C,EAAE,MAAM,GAAGA,aAAa0P,GAAG,OAAO9O,KAAKow/C,yBAAyBhx/C,EAAE,MAAM,GAAGA,aAAakR,GAAG,OAAOtQ,KAAKgw/C,iBAAiB5w/C,EAAE,MAAM,GAAGA,aAAauH,GAAG,OAAO3G,KAAKuw/C,sBAAsBnx/C,EAAE,MAAM,GAAGA,aAAayQ,GAAG,OAAO7P,KAAKww/C,4BAA4Bpx/C,EAAE,MAAM,MAAM,IAAIgE,EAAE,6BAA6BhE,EAAE0n+B,WAAW9+oB,UAAU,EAAE5oU,GAAG1f,UAAUuw/C,oBAAoB,SAAS7w/C,EAAED,GAAG,IAAIE,EAAEW,KAAK+v/C,qBAAqB3w/C,EAAEul+C,wBAAwBvl+C,GAAG,GAAG,OAAOC,EAAE,OAAOW,KAAK+hxB,SAASg4sB,iBAAiB,MAAM,IAAIn59C,EAAEvB,EAAEulB,OAAO,OAAOhkB,EAAE,GAAGA,EAAE,IAAIZ,KAAK8v/C,cAAc9v/C,KAAK+hxB,SAAS+3sB,iBAAiBz69C,GAAGW,KAAK+hxB,SAASg4sB,iBAAiB169C,EAAE,EAAE+f,GAAG1f,UAAUw09C,YAAY,WAAW,MAAM,EAAE,EAAE908C,GAAG1f,UAAUon+B,SAAS,WAAW,OAAO1n9B,EAAE,EAAE,IAAImB,GAAG,SAASnhB,IAAI,GAAGY,KAAKyw/C,eAAe,EAAEzw/C,KAAK0w/C,QAAQ,KAAK1w/C,KAAKu++C,KAAK,IAAInt+C,GAAGpR,KAAK2w/C,gCAA+B,EAAG3w/C,KAAK4w/C,WAAU,EAAGxw/C,UAAU,aAAa4O,IAAI,iBAAiB5O,UAAU,GAAG,CAAC,IAAmBf,EAAEe,UAAU,GAAGhB,EAAEQ,KAAKI,KAAnCI,UAAU,GAAgCo0O,iBAAiBn1O,EAAE,MAAM,GAAGe,UAAU,aAAaX,OAAO,iBAAiBW,UAAU,GAAG,CAAC,IAAIQ,EAAER,UAAU,GAAGL,EAAEK,UAAU,GAAGJ,KAAK0w/C,QAAQ9v/C,EAAEZ,KAAK4w/C,UAAUxx/C,EAAEo9O,SAAS57O,GAAGZ,KAAKyw/C,eAAe1w/C,CAAC,CAAC,EAAEwgB,GAAG7gB,UAAUmx/C,aAAa,SAASzx/C,EAAED,GAAG,IAAI,IAAIE,EAAEW,KAAK4w/C,UAAUxx/C,EAAEwlB,OAAO,EAAExlB,EAAEwlB,OAAOhkB,EAAE,EAAEA,EAAEvB,EAAEuB,IAAI,CAAC,IAAIb,EAAEX,EAAE+D,IAAIvC,GAAGN,EAAEN,KAAK8w/C,kBAAkB/w/C,EAAEZ,GAAG,OAAOmB,IAAIlB,EAAE6M,IAAIrL,EAAE,IAAIuD,EAAE7D,IAAI,IAAIM,GAAGZ,KAAK4w/C,WAAWxx/C,EAAE6M,IAAI7M,EAAEwlB,OAAO,EAAE,IAAIzgB,EAAE7D,IAAI,CAAC,EAAEigB,GAAG7gB,UAAUox/C,kBAAkB,SAAS1x/C,EAAED,GAAG,IAAI,IAAIE,EAAE,EAAEA,EAAEF,EAAEkB,OAAOhB,IAAI,CAAC,GAAGD,EAAEs19C,SAASv19C,EAAEE,IAAI,OAAO,KAAK,GAAGD,EAAE6pJ,SAAS9pJ,EAAEE,IAAIW,KAAKyw/C,eAAe,OAAOtx/C,EAAEE,EAAE,CAAC,OAAO,IAAI,EAAEkhB,GAAG7gB,UAAUg4vB,OAAO,SAASt4vB,GAAG,IAAID,EAAE,IAAIsO,GAAGzN,KAAK0w/C,SAAuD,OAA9C1w/C,KAAK6w/C,aAAa1x/C,EAAEC,GAAGY,KAAK+w/C,aAAa5x/C,EAAEC,GAAUD,EAAE049C,mBAAmB,EAAEt38C,GAAG7gB,UAAUqx/C,aAAa,SAAS3x/C,EAAED,GAAG,GAAG,IAAIA,EAAEkB,OAAO,OAAO,KAAK,IAAIhB,EAAEF,EAAEkB,OAAOlB,EAAE,GAAGu19C,SAASv19C,EAAEA,EAAEkB,OAAO,MAAMhB,EAAEF,EAAEkB,OAAO,GAAG,IAAI,IAAIO,EAAE,EAAEA,EAAEvB,EAAEuB,IAAI,CAAC,IAAIb,EAAEZ,EAAEyB,GAAGN,EAAEN,KAAKgx/C,uBAAuBjx/C,EAAEX,GAAGkB,GAAG,GAAGlB,EAAE+lB,IAAI7kB,EAAE,EAAE,IAAI6D,EAAEpE,IAAG,EAAG,CAAC,EAAEwgB,GAAG7gB,UAAUsx/C,uBAAuB,SAAS5x/C,EAAED,GAAG,IAAI,IAAIE,EAAE4D,EAAEioL,UAAUtqL,GAAG,EAAEb,EAAE,EAAEA,EAAEZ,EAAEylB,OAAO,EAAE7kB,IAAI,CAAC,GAAGC,KAAKu++C,KAAK1m3C,GAAG14H,EAAEgE,IAAIpD,GAAGC,KAAKu++C,KAAKl+vC,GAAGlhP,EAAEgE,IAAIpD,EAAE,GAAGC,KAAKu++C,KAAK1m3C,GAAG681C,SAASt19C,IAAIY,KAAKu++C,KAAKl+vC,GAAGq0uC,SAASt19C,GAAG,CAAC,GAAGY,KAAK2w/C,+BAA+B,SAAS,OAAO,CAAC,CAAC,IAAIrw/C,EAAEN,KAAKu++C,KAAKt11C,SAAS7pJ,GAAGkB,EAAEN,KAAKyw/C,gBAAgBnw/C,EAAEjB,IAAIA,EAAEiB,EAAEM,EAAEb,EAAE,CAAC,OAAOa,CAAC,EAAE2f,GAAG7gB,UAAUux/C,iCAAiC,SAAS7x/C,GAAGY,KAAK2w/C,+BAA+Bvx/C,CAAC,EAAEmhB,GAAG7gB,UAAUw09C,YAAY,WAAW,MAAM,EAAE,EAAE3z8C,GAAG7gB,UAAUon+B,SAAS,WAAW,OAAOvm9B,EAAE,EAAEA,GAAGi8N,SAAS,SAASp9O,GAAG,QAAQA,EAAEiB,QAAQ,IAAIjB,EAAE,GAAGs19C,SAASt19C,EAAEA,EAAEiB,OAAO,GAAG,EAAE,IAAIkhB,GAAG,SAASniB,GAAGY,KAAKkx/C,SAAS9x/C,GAAG,IAAI,EAAEyiB,GAAG,CAACsv+C,sBAAsB,CAACrt/C,cAAa,IAAKyd,GAAG7hB,UAAUg4vB,OAAO,SAASt4vB,EAAED,GAAG,IAAIE,EAAEW,KAAKox/C,yBAAyBhy/C,GAAG,OAAO,IAAIigB,GAAGlgB,EAAEE,GAAGujI,UAAU5iI,KAAKkx/C,SAAS,EAAE3v+C,GAAG7hB,UAAU2x/C,WAAW,SAASjy/C,EAAED,GAAG,IAAIE,EAAEW,KAAKox/C,yBAAyBpx/C,KAAKkx/C,UAAUtw/C,EAAE,IAAIye,GAAGjgB,EAAEC,GAAE,GAAIujI,UAAU5iI,KAAKkx/C,UAAUnx/C,EAAEa,EAAE,OAAOzB,GAAG+E,EAAEnE,EAAEyO,MAAMzO,EAAEa,EAAEsnB,OAAO,IAAInoB,CAAC,EAAEwhB,GAAG7hB,UAAU4x/C,qBAAqB,SAASly/C,GAAG,OAAOY,KAAKux/C,4BAA4Bny/C,GAAG,EAAE,EAAEmiB,GAAG7hB,UAAU0x/C,yBAAyB,SAAShy/C,GAAG,IAAI,IAAID,EAAE,IAAIuD,EAAErD,EAAED,EAAEo1O,iBAAiB5zO,EAAE,EAAEA,EAAEvB,EAAEgB,OAAOO,IAAIzB,EAAEgmB,IAAI9lB,EAAEuB,IAAI,OAAOzB,EAAE0uH,QAAQ,IAAIpuH,MAAM,GAAG29H,KAAK,MAAM,EAAE77G,GAAG7hB,UAAU6x/C,4BAA4B,SAASny/C,GAAG,IAAI,IAAID,EAAE8D,EAAEioL,UAAU7rL,EAAE,EAAEA,EAAED,EAAEiB,OAAO,EAAEhB,IAAI,CAAC,IAAIuB,EAAExB,EAAEC,GAAG4pJ,SAAS7pJ,EAAEC,EAAE,IAAIuB,EAAEzB,IAAIA,EAAEyB,EAAE,CAAC,OAAOzB,CAAC,EAAEoiB,GAAG7hB,UAAUw09C,YAAY,WAAW,MAAM,EAAE,EAAE3y8C,GAAG7hB,UAAUon+B,SAAS,WAAW,OAAOvl9B,EAAE,EAAEA,GAAGumV,KAAK,SAAS1oW,EAAED,EAAEE,GAAG,IAAIuB,EAAE,IAAInB,MAAM,GAAG29H,KAAK,MAAMr9H,EAAE,IAAIwhB,GAAGniB,GAAGwB,EAAE,GAAGb,EAAE23vB,OAAOv4vB,EAAEE,GAAG,IAAIiB,EAAE,IAAIihB,GAAGpiB,GAAG,OAAOyB,EAAE,GAAGN,EAAEo3vB,OAAO92vB,EAAE,GAAGvB,GAAGuB,CAAC,EAAE2gB,GAAGiw+C,4BAA4B,WAAW,GAAG,IAAIpx/C,UAAUC,OAAO,CAAC,IAAIjB,EAAEgB,UAAU,GAAGjB,EAAEoiB,GAAGkw+C,8BAA8Bry/C,GAAGC,EAAED,EAAEsg+C,oBAAoB,GAAGrg+C,EAAE2lC,YAAY39B,GAAGg/9C,MAAM,CAAC,IAAIzl+C,EAAE,EAAEvB,EAAEmuL,WAAW,EAAE,MAAM5sL,EAAEzB,IAAIA,EAAEyB,EAAE,CAAC,OAAOzB,CAAC,CAAC,GAAG,IAAIiB,UAAUC,OAAO,CAAC,IAAIN,EAAEK,UAAU,GAAGE,EAAEF,UAAU,GAAG,OAAOyC,KAAKgL,IAAI0T,GAAGiw+C,4BAA4Bzx/C,GAAGwhB,GAAGiw+C,4BAA4Blx/C,GAAG,CAAC,EAAEihB,GAAGkw+C,8BAA8B,SAASry/C,GAAG,IAAID,EAAEC,EAAEog+C,sBAAsB,OAAO389C,KAAKgL,IAAI1O,EAAE67K,YAAY77K,EAAEgsO,YAAY5pN,GAAG4v+C,qBAAqB,EAAE5v+C,GAAG8v+C,WAAW,SAASjy/C,EAAED,EAAEE,GAAG,OAAO,IAAIkiB,GAAGniB,GAAGiy/C,WAAWly/C,EAAEE,EAAE,EAAEwiB,GAAGsv+C,sBAAsBhu/C,IAAI,WAAW,OAAO,IAAI,EAAE7D,OAAOkU,iBAAiB+N,GAAGM,IAAI,IAAIxC,GAAG,SAASjgB,GAAG,SAASD,EAAEA,EAAEE,EAAEuB,GAAGxB,EAAEQ,KAAKI,MAAMA,KAAKyw/C,eAAetx/C,GAAG,KAAKa,KAAK0x/C,SAASry/C,GAAG,KAAKW,KAAK2x/C,iBAAY,IAAS/w/C,GAAGA,CAAC,CAAC,OAAOxB,IAAID,EAAEK,UAAUJ,GAAGD,EAAEO,UAAUJ,OAAOY,OAAOd,GAAGA,EAAEM,WAAWP,EAAEO,UAAUO,YAAYd,EAAEA,EAAEO,UAAUky/C,SAAS,SAASxy/C,EAAED,GAAG,IAAIE,EAAE,IAAIkhB,GAAGnhB,EAAEY,KAAKyw/C,gBAAgB,OAAOpx/C,EAAE4x/C,iCAAiCjx/C,KAAK2x/C,aAAaty/C,EAAEq4vB,OAAOv4vB,EAAE,EAAEA,EAAEO,UAAUqw/C,qBAAqB,SAAS3w/C,EAAED,GAAG,IAAIE,EAAED,EAAEy49C,oBAAoBj39C,EAAEZ,KAAK4x/C,SAASvy/C,EAAEW,KAAK0x/C,UAAU,OAAO1x/C,KAAK+hxB,SAAS6itB,+BAA+B1k+C,OAAOU,EAAE,EAAEzB,EAAEO,UAAUw09C,YAAY,WAAW,MAAM,EAAE,EAAE/09C,EAAEO,UAAUon+B,SAAS,WAAW,OAAO3n+B,CAAC,EAAEA,CAAC,CAA7mB,CAA+mBigB,IAAI2C,GAAG,WAAW/hB,KAAK6x/C,UAAS,EAAG7x/C,KAAK8x/C,yBAAyB,GAAG9x/C,KAAK+x/C,YAAY,EAAE/x/C,KAAKgy/C,eAAe,IAAI,EAAEjw+C,GAAGriB,UAAUuy/C,UAAU,WAAW,OAAOhv/C,EAAEox9C,iBAAiBr09C,KAAK+x/C,YAAY,EAAEhw+C,GAAGriB,UAAUylB,IAAI,SAAS/lB,GAAG,IAAID,EAAE8D,EAAEmx9C,iBAAiBh19C,GAAG,OAAGY,KAAK6x/C,UAAgB7x/C,KAAK+x/C,YAAY5y/C,EAAEa,KAAKgy/C,eAAejw+C,GAAGmw+C,YAAYly/C,KAAK+x/C,aAAa/x/C,KAAK6x/C,UAAS,EAAG,MAAQ9v+C,GAAGmw+C,YAAY/y/C,KAAKa,KAAKgy/C,gBAAsBhy/C,KAAK+x/C,YAAY,EAAE,OAAK/x/C,KAAK8x/C,yBAAyB/v+C,GAAGow+C,6BAA6Bny/C,KAAK+x/C,YAAY5y/C,QAAGa,KAAK+x/C,YAAYhw+C,GAAGqw+C,cAAcpy/C,KAAK+x/C,YAAY,IAAI,GAAG/x/C,KAAK8x/C,4BAA0B,EAAE/v+C,GAAGriB,UAAU6E,SAAS,WAAW,GAAG,IAAInE,UAAUC,OAAO,CAAC,IAAIjB,EAAEgB,UAAU,GAAGjB,EAAE8D,EAAEox9C,iBAAiBj19C,GAAGC,EAAE,mEAAmE4D,EAAEov/C,eAAejz/C,GAAGwB,EAAEvB,EAAEi4B,UAAUj4B,EAAEgB,OAAO,IAAI,OAAOO,EAAE02B,UAAU,EAAE,GAAG,KAAK12B,EAAE02B,UAAU,EAAE,IAAI,SAAS12B,EAAE02B,UAAU,IAAI,MAAMn4B,EAAE,IAAI,CAAC,EAAE4iB,GAAGriB,UAAUw09C,YAAY,WAAW,MAAM,EAAE,EAAEny8C,GAAGriB,UAAUon+B,SAAS,WAAW,OAAO/k9B,EAAE,EAAEA,GAAGuw+C,OAAO,SAASlz/C,EAAED,GAAG,OAAO,IAAIC,EAAE,GAAGD,GAAG,EAAE,CAAC,EAAE4iB,GAAGmw+C,YAAY,SAAS9y/C,GAAG,OAAOA,GAAG,EAAE,EAAE2iB,GAAGqw+C,cAAc,SAAShz/C,EAAED,GAAG,OAAOC,KAAK,GAAGD,GAAG,EAAE,EAAE4iB,GAAGow+C,6BAA6B,SAAS/y/C,EAAED,GAAG,IAAI,IAAIE,EAAE,EAAEuB,EAAE,GAAGA,GAAG,EAAEA,IAAI,CAAC,GAAGmhB,GAAGuw+C,OAAOlz/C,EAAEwB,KAAKmhB,GAAGuw+C,OAAOnz/C,EAAEyB,GAAG,OAAOvB,EAAEA,GAAG,CAAC,OAAO,EAAE,EAAE,IAAI4V,GAAG,WAAWjV,KAAKuy/C,aAAa,KAAKvy/C,KAAKwy/C,UAAU,IAAIx9+C,EAAE,EAAED,GAAG,CAAC09+C,uBAAuB,CAAC3u/C,cAAa,GAAI4u/C,WAAW,CAAC5u/C,cAAa,IAAKmR,GAAGvV,UAAUiz/C,cAAc,SAASvz/C,GAAG,IAAID,EAAE,IAAIiW,GAAGpV,KAAKuy/C,cAAcnz/C,EAAEmB,MAAMpB,GAAGC,EAAEq/O,iBAAiB,EAAExpO,GAAGvV,UAAUkz/C,iBAAiB,SAASxz/C,GAAG,GAAG,IAAIY,KAAKuy/C,aAAatu/C,GAAG,IAAIjE,KAAKuy/C,aAAavv/C,EAAE,OAAO5D,EAAE,IAAID,EAAE,IAAIgF,EAAEnE,KAAKuy/C,cAAcpz/C,EAAE8E,GAAG9E,EAAE8E,EAAE9E,EAAE6D,GAAG7D,EAAE6D,EAAE,IAAI3D,EAAE,IAAI+V,GAAGjW,GAAG,OAAOC,EAAEmB,MAAMlB,GAAGD,EAAEq/O,kBAAkBr/O,CAAC,EAAE6V,GAAGvV,UAAUmz/C,oBAAoB,WAAW,OAAO7y/C,KAAKuy/C,YAAY,EAAEt9+C,GAAGvV,UAAUylB,IAAI,SAAS/lB,GAAGA,EAAEmB,MAAMP,KAAKwy/C,WAAWxy/C,KAAKuy/C,aAAavy/C,KAAKwy/C,UAAUK,qBAAqB,EAAE59+C,GAAGvV,UAAUw09C,YAAY,WAAW,MAAM,EAAE,EAAEj/8C,GAAGvV,UAAUon+B,SAAS,WAAW,OAAO7x9B,EAAE,EAAEF,GAAG09+C,uBAAuBtv/C,IAAI,WAAW,OAAO6R,EAAE,EAAED,GAAG29+C,WAAWvv/C,IAAI,WAAW,OAAOiS,EAAE,EAAE9V,OAAOkU,iBAAiByB,GAAGF,IAAI,IAAIC,GAAG,WAAWhV,KAAK8y/C,aAAa,IAAI/w+C,GAAG/hB,KAAK+y/C,aAAa,IAAIhx+C,EAAE,EAAE/M,GAAGtV,UAAUmtB,OAAO,SAASztB,GAAGY,KAAK8y/C,aAAa3t+C,IAAI/lB,EAAE6E,GAAGjE,KAAK+y/C,aAAa5t+C,IAAI/lB,EAAE4D,EAAE,EAAEgS,GAAGtV,UAAUmz/C,oBAAoB,WAAW,OAAO,IAAI1u/C,EAAEnE,KAAK8y/C,aAAab,YAAYjy/C,KAAK+y/C,aAAad,YAAY,EAAEj9+C,GAAGtV,UAAUw09C,YAAY,WAAW,MAAM,CAACro9C,GAAG,EAAEmJ,GAAGtV,UAAUon+B,SAAS,WAAW,OAAO9x9B,EAAE,EAAE,IAAII,GAAG,WAAWpV,KAAKo3qC,MAAM,KAAK,IAAIh4qC,EAAEgB,UAAU,GAAGJ,KAAKo3qC,MAAMh4qC,CAAC,EAAEgW,GAAG1V,UAAUmtB,OAAO,SAASztB,EAAED,GAAG,IAAIE,EAAED,EAAEu19C,YAAYx19C,EAAE,GAAGa,KAAKo3qC,MAAMnzqC,EAAErD,EAAExB,EAAEu19C,YAAYx19C,EAAE,GAAGa,KAAKo3qC,MAAMp0qC,EAAE5D,EAAEq19C,YAAYt19C,EAAE,EAAEE,GAAGD,EAAEq19C,YAAYt19C,EAAE,EAAEyB,EAAE,EAAEwU,GAAG1V,UAAU4gL,OAAO,WAAW,OAAM,CAAE,EAAElrK,GAAG1V,UAAUsj+C,kBAAkB,WAAW,OAAM,CAAE,EAAE5t9C,GAAG1V,UAAUw09C,YAAY,WAAW,MAAM,CAAC/k9C,GAAG,EAAEiG,GAAG1V,UAAUon+B,SAAS,WAAW,OAAO1x9B,EAAE,EAAE,IAAIF,GAAG,SAAS9V,EAAED,GAAGa,KAAKqj+C,MAAM,IAAI5j+C,MAAM,GAAG29H,KAAK,MAAMp9H,KAAKyw/C,eAAe,KAAKzw/C,KAAKgz/C,KAAK,KAAKhz/C,KAAKqj+C,MAAM,GAAGjk+C,EAAEY,KAAKqj+C,MAAM,GAAGlk+C,EAAEa,KAAKsx/C,sBAAsB,EAAEp8+C,GAAGxV,UAAUuz/C,SAAS,SAAS7z/C,GAAG,OAAO,IAAImiB,GAAGniB,GAAGs4vB,OAAOt4vB,EAAEY,KAAKyw/C,eAAe,EAAEv7+C,GAAGxV,UAAUkz/C,iBAAiB,SAASxz/C,GAAGY,KAAKgz/C,KAAK,IAAI/9+C,GAAGjV,KAAKgz/C,KAAK7t+C,IAAI/lB,EAAE,IAAIY,KAAKgz/C,KAAK7t+C,IAAI/lB,EAAE,IAAI,IAAID,EAAE,IAAIM,MAAM,GAAG29H,KAAK,MAAM,OAAOj+H,EAAE,GAAGa,KAAKgz/C,KAAKJ,iBAAiBxz/C,EAAE,GAAG0gI,QAAQ3gI,EAAE,GAAGa,KAAKgz/C,KAAKJ,iBAAiBxz/C,EAAE,GAAG0gI,QAAQ3gI,CAAC,EAAE+V,GAAGxV,UAAUqi+B,cAAc,SAAS3i+B,GAAG,OAAOY,KAAKgz/C,KAAKL,cAAcvz/C,GAAGA,CAAC,EAAE8V,GAAGxV,UAAU0o/C,kBAAkB,SAAShp/C,GAAG,IAAID,EAAEa,KAAK8nW,KAAK9nW,KAAKqj+C,OAAOhk+C,EAAEyX,GAAGo8+C,UAAU/z/C,EAAE,GAAGA,EAAE,GAAGC,GAAG,OAAOY,KAAK+h+B,cAAc1i+B,EAAE,EAAE6V,GAAGxV,UAAU8l/C,WAAW,SAASpm/C,GAAGA,EAAE0zE,WAAWrtE,EAAEy6H,IAAI081C,QAAQ,8BAA8B,EAAE1n9C,GAAGxV,UAAU4x/C,qBAAqB,WAAWtx/C,KAAKyw/C,eAAelv+C,GAAGiw+C,4BAA4Bxx/C,KAAKqj+C,MAAM,GAAGrj+C,KAAKqj+C,MAAM,GAAG,EAAEnu9C,GAAGxV,UAAUooW,KAAK,SAAS1oW,GAAG,IAAID,EAAEa,KAAK4y/C,iBAAiBxz/C,GAAG,OAAOmiB,GAAGumV,KAAK3oW,EAAE,GAAGA,EAAE,GAAGa,KAAKyw/C,eAAe,EAAEv7+C,GAAGxV,UAAUw09C,YAAY,WAAW,MAAM,EAAE,EAAEh/8C,GAAGxV,UAAUon+B,SAAS,WAAW,OAAO5x9B,EAAE,EAAEA,GAAGg++C,UAAU,SAAS9z/C,EAAED,EAAEE,GAAG,OAAO,IAAI6V,GAAG9V,EAAED,GAAGip/C,kBAAkB/o/C,EAAE,EAAE6V,GAAG8tK,MAAM,SAAS5jL,EAAED,GAAG,OAAO+V,GAAGg++C,UAAU9z/C,EAAED,EAAE2X,GAAGq8+C,MAAM,EAAEj++C,GAAGgoL,aAAa,SAAS99L,EAAED,GAAG,OAAO+V,GAAGg++C,UAAU9z/C,EAAED,EAAE2X,GAAGirK,aAAa,EAAE7sK,GAAGk++C,cAAc,SAASh0/C,EAAED,GAAG,OAAO+V,GAAGg++C,UAAU9z/C,EAAED,EAAE2X,GAAGu8+C,cAAc,EAAEn++C,GAAGiid,WAAW,SAAS/3d,EAAED,GAAG,OAAO+V,GAAGg++C,UAAU9z/C,EAAED,EAAE2X,GAAGw8+C,WAAW,EAAE,IAAIn++C,GAAG,SAAS/V,EAAED,GAAGa,KAAKqj+C,MAAM,IAAI5j+C,MAAM,GAAG29H,KAAK,MAAMp9H,KAAKqj+C,MAAM,GAAGjk+C,EAAEY,KAAKqj+C,MAAM,GAAGlk+C,CAAC,EAAEgW,GAAGzV,UAAU0o/C,kBAAkB,SAAShp/C,GAAG,IAAID,EAAE,KAAKE,GAAE,EAAGuB,EAAE,KAAK,IAAIzB,EAAE2X,GAAGo8+C,UAAUlz/C,KAAKqj+C,MAAM,GAAGrj+C,KAAKqj+C,MAAM,GAAGjk+C,GAAGC,GAAE,CAAE,CAAC,MAAMD,GAAG,KAAKA,aAAagH,GAAG,MAAMhH,EAAEwB,EAAExB,CAAC,CAAC,IAAIC,EAAE,IAAIF,EAAE+V,GAAGg++C,UAAUlz/C,KAAKqj+C,MAAM,GAAGrj+C,KAAKqj+C,MAAM,GAAGjk+C,EAAE,CAAC,MAAMA,GAAG,MAAMA,aAAagH,EAAExF,EAAExB,CAAC,CAAC,OAAOD,CAAC,EAAEgW,GAAGzV,UAAUw09C,YAAY,WAAW,MAAM,EAAE,EAAE/+8C,GAAGzV,UAAUon+B,SAAS,WAAW,OAAO3x9B,EAAE,EAAEA,GAAG+9+C,UAAU,SAAS9z/C,EAAED,EAAEE,GAAG,OAAO,IAAI8V,GAAG/V,EAAED,GAAGip/C,kBAAkB/o/C,EAAE,EAAE8V,GAAG6tK,MAAM,SAAS5jL,EAAED,GAAG,OAAOgW,GAAG+9+C,UAAU9z/C,EAAED,EAAE2X,GAAGq8+C,MAAM,EAAEh++C,GAAG+nL,aAAa,SAAS99L,EAAED,GAAG,OAAOgW,GAAG+9+C,UAAU9z/C,EAAED,EAAE2X,GAAGirK,aAAa,EAAE5sK,GAAGi++C,cAAc,SAASh0/C,EAAED,GAAG,OAAOgW,GAAG+9+C,UAAU9z/C,EAAED,EAAE2X,GAAGu8+C,cAAc,EAAEl++C,GAAGgid,WAAW,SAAS/3d,EAAED,GAAG,OAAOgW,GAAG+9+C,UAAU9z/C,EAAED,EAAE2X,GAAGw8+C,WAAW,EAAE,IAAI/9+C,GAAG,WAAWvV,KAAKuz/C,IAAI,KAAKvz/C,KAAKwz/C,WAAW,KAAK,IAAIp0/C,EAAEgB,UAAU,GAAGjB,EAAEiB,UAAU,GAAGJ,KAAKuz/C,IAAIn0/C,EAAEY,KAAKwz/C,WAAWr0/C,CAAC,EAAEoW,GAAG7V,UAAU6u/C,qBAAqB,SAASnv/C,EAAED,GAAGa,KAAKuz/C,IAAIvQ,0BAA0Bhj/C,KAAKwz/C,WAAWp0/C,EAAEm0/C,IAAIn0/C,EAAEo0/C,WAAWr0/C,EAAE,EAAEoW,GAAG7V,UAAUw09C,YAAY,WAAW,MAAM,EAAE,EAAE3+8C,GAAG7V,UAAUon+B,SAAS,WAAW,OAAOvx9B,EAAE,EAAE,IAAID,GAAG,SAASlW,IAAI,GAAGY,KAAKkr+C,OAAO,KAAKlr+C,KAAKyz/C,QAAQ,KAAKzz/C,KAAKsnc,WAAW,KAAKtnc,KAAK0z/C,aAAa,KAAK1z/C,KAAK2z/C,kBAAkB,KAAK3z/C,KAAK4z/C,KAAK,KAAK,IAAIxz/C,UAAUC,OAAO,CAAC,IAAIlB,EAAEiB,UAAU,GAAGf,EAAEe,UAAU,GAAGJ,KAAKsnc,WAAWloc,EAAEk0hB,OAAOtzhB,KAAKyz/C,QAAQt0/C,EAAEa,KAAK0z/C,aAAar0/C,CAAC,MAAM,GAAG,IAAIe,UAAUC,OAAO,CAAC,IAAIO,EAAER,UAAU,GAAGL,EAAEK,UAAU,GAAGE,EAAEF,UAAU,GAAGJ,KAAKsnc,WAAWloc,EAAEy0/C,OAAO7z/C,KAAKkr+C,OAAOtq+C,EAAEZ,KAAKyz/C,QAAQ1z/C,EAAEC,KAAK4z/C,KAAKtz/C,CAAC,CAAC,EAAEkV,GAAG,CAACq++C,OAAO,CAAC/v/C,cAAa,GAAIwvhB,OAAO,CAACxvhB,cAAa,IAAKwR,GAAG5V,UAAUo0/C,SAAS,WAAW,OAAO9z/C,KAAKsnc,aAAahyb,GAAGg+gB,MAAM,EAAEh+gB,GAAG5V,UAAUq0/C,oBAAoB,SAAS30/C,GAAGY,KAAK2z/C,kBAAkBv0/C,CAAC,EAAEkW,GAAG5V,UAAUsnR,UAAU,WAAW,OAAOhnR,KAAK4z/C,IAAI,EAAEt++C,GAAG5V,UAAUmzQ,UAAU,SAASzzQ,GAAG,IAAID,EAAEC,EAAE,OAAOY,KAAKyz/C,QAAQt0/C,EAAEs0/C,SAAS,EAAEzz/C,KAAKyz/C,QAAQt0/C,EAAEs0/C,QAAQ,EAAEzz/C,KAAKsnc,WAAWnoc,EAAEmoc,YAAY,EAAEtnc,KAAKsnc,WAAWnoc,EAAEmoc,WAAW,EAAE,CAAC,EAAEhyb,GAAG5V,UAAUs0/C,eAAe,WAAW,OAAOh0/C,KAAK0z/C,YAAY,EAAEp++C,GAAG5V,UAAUu0/C,SAAS,WAAW,OAAOj0/C,KAAKsnc,aAAahyb,GAAGu++C,MAAM,EAAEv++C,GAAG5V,UAAUw0/C,YAAY,SAAS90/C,GAAG,OAAO,OAAOY,KAAKkr+C,QAAQlr+C,KAAKkr+C,SAAS9r+C,EAAE8r+C,MAAM,EAAE519C,GAAG5V,UAAUy0/C,oBAAoB,WAAW,OAAOn0/C,KAAK2z/C,iBAAiB,EAAEr++C,GAAG5V,UAAUw09C,YAAY,WAAW,MAAM,CAACxv9C,EAAE,EAAE4Q,GAAG5V,UAAUon+B,SAAS,WAAW,OAAOxx9B,EAAE,EAAEE,GAAGq++C,OAAO1w/C,IAAI,WAAW,OAAO,CAAC,EAAEqS,GAAG89gB,OAAOnwhB,IAAI,WAAW,OAAO,CAAC,EAAE7D,OAAOkU,iBAAiB8B,GAAGE,IAAI,IAAIC,GAAG,WAAW,EAAEA,GAAG/V,UAAUw09C,YAAY,WAAW,MAAM,EAAE,EAAEz+8C,GAAG/V,UAAUon+B,SAAS,WAAW,OAAOrx9B,EAAE,EAAE,IAAIJ,GAAG,WAAWrV,KAAK4h/C,kBAAiB,EAAG5h/C,KAAK6h/C,YAAW,EAAG7h/C,KAAK8h/C,oBAAmB,EAAG9h/C,KAAKgi/C,yBAAyB,KAAKhi/C,KAAK07+C,IAAI,KAAK17+C,KAAKo0/C,eAAe,KAAKp0/C,KAAKq0/C,gBAAgB,KAAKr0/C,KAAKii/C,oBAAoB,KAAKji/C,KAAKs0/C,kBAAkB,EAAEt0/C,KAAKqi/C,SAAS,EAAEri/C,KAAKu0/C,UAAU,KAAKv0/C,KAAKw0/C,SAAQ,EAAGx0/C,KAAKy0/C,sBAAqB,EAAG,IAAIr1/C,EAAEgB,UAAU,GAAGjB,EAAEiB,UAAU,GAAGf,EAAEe,UAAU,GAAGJ,KAAK07+C,IAAIt8+C,EAAEY,KAAKo0/C,eAAej1/C,EAAEa,KAAKq0/C,gBAAgBh1/C,CAAC,EAAEgW,GAAG3V,UAAU4i/C,sBAAsB,SAASlj/C,EAAED,EAAEE,EAAEuB,GAAG,GAAGxB,IAAIC,GAAG,IAAIW,KAAK07+C,IAAIjgB,qBAAqB,CAAC,GAAGpm9C,GAAGkt+C,mBAAmBpj/C,EAAEyB,GAAG,OAAM,EAAG,GAAGxB,EAAEo9O,WAAW,CAAC,IAAIz8O,EAAEX,EAAE6j+C,eAAe,EAAE,GAAG,IAAI9j+C,GAAGyB,IAAIb,GAAG,IAAIa,GAAGzB,IAAIY,EAAE,OAAM,CAAE,CAAC,CAAC,OAAM,CAAE,EAAEsV,GAAG3V,UAAU8i/C,2BAA2B,WAAW,OAAOxi/C,KAAKgi/C,wBAAwB,EAAE3s+C,GAAG3V,UAAUg1/C,qBAAqB,SAASt1/C,GAAGY,KAAKy0/C,qBAAqBr1/C,CAAC,EAAEiW,GAAG3V,UAAU+i/C,8BAA8B,WAAW,OAAOzi/C,KAAK8h/C,kBAAkB,EAAEzs+C,GAAG3V,UAAUi1/C,wBAAwB,SAASv1/C,EAAED,GAAG,IAAI,IAAIE,EAAEF,EAAEwC,WAAWtC,EAAEyg+C,WAAW,CAAC,IAAIl/9C,EAAEvB,EAAE0B,OAAO029C,gBAAgB,GAAGr49C,EAAE689C,eAAer79C,GAAG,OAAM,CAAE,CAAC,OAAM,CAAE,EAAEyU,GAAG3V,UAAUij/C,sBAAsB,WAAW,OAAO3i/C,KAAK6h/C,UAAU,EAAExs+C,GAAG3V,UAAUk89C,gBAAgB,WAAW,OAAO579C,KAAK4h/C,gBAAgB,EAAEvs+C,GAAG3V,UAAU4gL,OAAO,WAAW,OAAOtgL,KAAKw0/C,OAAO,EAAEn/+C,GAAG3V,UAAUk1/C,gBAAgB,SAASx1/C,EAAED,GAAG,QAAO,OAAOA,IAAMa,KAAK20/C,wBAAwBv1/C,EAAED,EAAE,MAAOa,KAAK20/C,wBAAwBv1/C,EAAED,EAAE,IAAI,EAAEkW,GAAG3V,UAAUm1/C,iBAAiB,SAASz1/C,EAAED,GAAGa,KAAKu0/C,UAAU,IAAI90/C,MAAM,GAAG29H,KAAK,MAAMp9H,KAAKu0/C,UAAU,GAAGn1/C,EAAEY,KAAKu0/C,UAAU,GAAGp1/C,CAAC,EAAEkW,GAAG3V,UAAU61+C,iBAAiB,SAASn2+C,EAAED,EAAEE,EAAEuB,GAAG,GAAGxB,IAAIC,GAAGF,IAAIyB,EAAE,OAAO,KAAKZ,KAAKqi/C,WAAW,IAAIti/C,EAAEX,EAAEo1O,iBAAiBr1O,GAAGmB,EAAElB,EAAEo1O,iBAAiBr1O,EAAE,GAAG2B,EAAEzB,EAAEm1O,iBAAiB5zO,GAAGI,EAAE3B,EAAEm1O,iBAAiB5zO,EAAE,GAAGZ,KAAK07+C,IAAIngB,oBAAoBx79C,EAAEO,EAAEQ,EAAEE,GAAGhB,KAAK07+C,IAAI9f,oBAAoB579C,KAAKq0/C,kBAAkBj1/C,EAAEqk/C,aAAY,GAAIpk/C,EAAEok/C,aAAY,IAAKzj/C,KAAKs0/C,oBAAoBt0/C,KAAKsi/C,sBAAsBlj/C,EAAED,EAAEE,EAAEuB,KAAKZ,KAAK4h/C,kBAAiB,GAAI5h/C,KAAKo0/C,gBAAgBp0/C,KAAK07+C,IAAI/f,aAAav89C,EAAEm2+C,iBAAiBv1+C,KAAK07+C,IAAIv8+C,EAAE,GAAGE,EAAEk2+C,iBAAiBv1+C,KAAK07+C,IAAI96+C,EAAE,IAAIZ,KAAK07+C,IAAI/f,aAAa379C,KAAKgi/C,yBAAyBhi/C,KAAK07+C,IAAI3lL,gBAAgB,GAAGj2rC,OAAO9/H,KAAK6h/C,YAAW,EAAG7h/C,KAAKy0/C,uBAAuBz0/C,KAAKw0/C,SAAQ,GAAIx0/C,KAAK40/C,gBAAgB50/C,KAAK07+C,IAAI17+C,KAAKu0/C,aAAav0/C,KAAK8h/C,oBAAmB,KAAM,EAAEzs+C,GAAG3V,UAAUw09C,YAAY,WAAW,MAAM,EAAE,EAAE7+8C,GAAG3V,UAAUon+B,SAAS,WAAW,OAAOzx9B,EAAE,EAAEA,GAAGkt+C,mBAAmB,SAASnj/C,EAAED,GAAG,OAAO,IAAI0D,KAAKmjH,IAAI5mH,EAAED,EAAE,EAAE,IAAI0W,GAAG,SAASzW,GAAG,SAASD,IAAIC,EAAEQ,KAAKI,MAAMA,KAAK62F,OAAO,IAAI5nF,GAAGjP,KAAK80/C,UAAU,IAAI,CAAC,OAAO11/C,IAAID,EAAEK,UAAUJ,GAAGD,EAAEO,UAAUJ,OAAOY,OAAOd,GAAGA,EAAEM,WAAWP,EAAEO,UAAUO,YAAYd,EAAEA,EAAEO,UAAUq1/C,cAAc,WAAWjq/C,GAAGyhC,KAAKvsC,KAAK62F,QAAQ,IAAI,IAAIz3F,EAAE,EAAEA,EAAEY,KAAK62F,OAAOjyE,OAAOxlB,IAAI,CAAC,IAAID,EAAEa,KAAK62F,OAAO1zF,IAAI/D,GAAGD,EAAE20/C,YAAY30/C,EAAE60/C,iBAAiBD,oBAAoB30/C,EAAE,CAAC,EAAED,EAAEO,UAAU6u/C,qBAAqB,WAAW,GAAG,IAAInu/C,UAAUC,OAAO,CAAC,IAAIjB,EAAEgB,UAAU,GAAGJ,KAAK80/C,UAAU,EAAE90/C,KAAK+0/C,gBAAgB,IAAI,IAAI51/C,EAAE,EAAEA,EAAEa,KAAK62F,OAAOjyE,OAAOzlB,IAAI,CAAC,IAAIE,EAAEW,KAAK62F,OAAO1zF,IAAIhE,GAAG,GAAGE,EAAE40/C,YAAYj0/C,KAAKg1/C,gBAAgB71/C,EAAEE,EAAE80/C,sBAAsB90/C,EAAED,GAAGA,EAAEkhL,SAAS,KAAK,CAAC,MAAM,GAAG,IAAIlgL,UAAUC,OAAO,GAAGD,UAAU,aAAaiV,IAAInR,EAAE9D,UAAU,GAAG4N,KAAK9J,EAAE9D,UAAU,GAAG4N,IAAI,CAAC,IAAIpN,EAAER,UAAU,GAAGL,EAAEK,UAAU,GAAGE,EAAEF,UAAU,GAAGJ,KAAK4w+C,SAAShw+C,EAAEA,GAAGZ,KAAK4w+C,SAAS7w+C,EAAEA,GAAGC,KAAKuu/C,qBAAqBju/C,EAAE,MAAM,GAAG,kBAAkBF,UAAU,IAAI8D,EAAE9D,UAAU,GAAG4N,KAAK5N,UAAU,aAAaiV,GAAG,CAAC,IAAIvU,EAAEV,UAAU,GAAGY,EAAEZ,UAAU,GAAGA,UAAU,GAAGJ,KAAK4w+C,SAAS9v+C,EAAE,MAAMd,KAAK4w+C,SAAS9v+C,GAAGd,KAAKuu/C,qBAAqBvt/C,EAAE,CAAC,EAAE7B,EAAEO,UAAUyzoC,QAAQ,SAAS/zoC,EAAED,GAAG,IAAI,IAAIE,EAAED,EAAEuk/C,uBAAuB/i/C,EAAEvB,EAAE4j/C,kBAAkBlj/C,EAAE,EAAEA,EAAEa,EAAEP,OAAO,EAAEN,IAAI,CAAC,IAAIO,EAAE,IAAIiV,GAAGlW,EAAEU,GAAGe,EAAE,IAAIwU,GAAGnW,EAAEE,EAAEg59C,QAAQt49C,GAAGO,GAAGN,KAAK62F,OAAO1xE,IAAIrkB,GAAGd,KAAK62F,OAAO1xE,IAAI,IAAI7P,GAAGjW,EAAE849C,QAAQp49C,GAAGe,GAAG,CAAC,EAAE3B,EAAEO,UAAUs1/C,gBAAgB,SAAS51/C,EAAED,EAAEE,EAAEuB,GAAG,IAAI,IAAIb,EAAEV,EAAE2nR,YAAY1mR,EAAElB,EAAEkB,EAAEnB,EAAEmB,IAAI,CAAC,IAAIQ,EAAEd,KAAK62F,OAAO1zF,IAAI7C,GAAG,GAAGQ,EAAEmz/C,WAAW,CAAC,IAAIjz/C,EAAEF,EAAEkmR,YAAY3nR,EAAE60/C,YAAYpz/C,KAAKf,EAAEwu/C,qBAAqBvt/C,EAAEJ,GAAGZ,KAAK80/C,YAAY,CAAC,CAAC,EAAE31/C,EAAEO,UAAUkx+C,SAAS,WAAW,GAAG,IAAIxw+C,UAAUC,OAAO,IAAI,IAAIjB,EAAEgB,UAAU,GAAGuB,WAAWvC,EAAE0g+C,WAAW,CAAC,IAAI3g+C,EAAEC,EAAE2B,OAAOf,KAAKmzoC,QAAQh0oC,EAAEA,EAAE,MAAM,GAAG,IAAIiB,UAAUC,OAAO,IAAI,IAAmBO,EAAER,UAAU,GAAGL,EAA5BK,UAAU,GAAsBuB,WAAW5B,EAAE+/9C,WAAW,CAAC,IAAIx/9C,EAAEP,EAAEgB,OAAOf,KAAKmzoC,QAAQ7yoC,EAAEM,EAAE,CAAC,EAAEzB,EAAEO,UAAUw09C,YAAY,WAAW,MAAM,EAAE,EAAE/09C,EAAEO,UAAUon+B,SAAS,WAAW,OAAO3n+B,CAAC,EAAEA,CAAC,CAAzyD,CAA2yDsW,IAAIG,GAAG,WAAW5V,KAAKw8zB,KAAKv5zB,EAAE2hF,kBAAkB5kF,KAAK0wyB,KAAKztyB,EAAE+iL,iBAAiB,EAAEtwK,GAAG,CAACu/+C,eAAe,CAACnx/C,cAAa,IAAK8R,GAAGlW,UAAUw1/C,OAAO,WAAW,OAAOl1/C,KAAKw8zB,IAAI,EAAE5mzB,GAAGlW,UAAUymW,WAAW,SAAS/mW,EAAED,GAAG,QAAQa,KAAKw8zB,KAAKr9zB,GAAGa,KAAK0wyB,KAAKtxyB,EAAE,EAAEwW,GAAGlW,UAAUy1/C,OAAO,WAAW,OAAOn1/C,KAAK0wyB,IAAI,EAAE96xB,GAAGlW,UAAU6E,SAAS,WAAW,OAAOE,EAAE019C,aAAa,IAAIh29C,EAAEnE,KAAKw8zB,KAAK,GAAG,IAAIr4zB,EAAEnE,KAAK0wyB,KAAK,GAAG,EAAE96xB,GAAGlW,UAAUw09C,YAAY,WAAW,MAAM,EAAE,EAAEt+8C,GAAGlW,UAAUon+B,SAAS,WAAW,OAAOlx9B,EAAE,EAAEF,GAAGu/+C,eAAe9x/C,IAAI,WAAW,OAAO+S,EAAE,EAAE5W,OAAOkU,iBAAiBoC,GAAGF,IAAI,IAAIQ,GAAG,WAAW,EAAEA,GAAGxW,UAAUwqH,QAAQ,SAAS9qH,EAAED,GAAG,IAAIE,EAAED,EAAEwB,EAAEzB,EAAEY,GAAGV,EAAEm9zB,KAAKn9zB,EAAEqxyB,MAAM,EAAEpwyB,GAAGM,EAAE47zB,KAAK57zB,EAAE8vyB,MAAM,EAAE,OAAO3wyB,EAAEO,GAAG,EAAEP,EAAEO,EAAE,EAAE,CAAC,EAAE4V,GAAGxW,UAAUw09C,YAAY,WAAW,MAAM,CAAChv9C,EAAE,EAAEgR,GAAGxW,UAAUon+B,SAAS,WAAW,OAAO5w9B,EAAE,EAAE,IAAIP,GAAG,SAASvW,GAAG,SAASD,IAAIC,EAAEQ,KAAKI,MAAMA,KAAKwx+C,MAAM,KAAK,IAAIry+C,EAAEiB,UAAU,GAAGf,EAAEe,UAAU,GAAGQ,EAAER,UAAU,GAAGJ,KAAKw8zB,KAAKr9zB,EAAEa,KAAK0wyB,KAAKrxyB,EAAEW,KAAKwx+C,MAAM5w+C,CAAC,CAAC,OAAOxB,IAAID,EAAEK,UAAUJ,GAAGD,EAAEO,UAAUJ,OAAOY,OAAOd,GAAGA,EAAEM,WAAWP,EAAEO,UAAUO,YAAYd,EAAEA,EAAEO,UAAUuvF,MAAM,SAAS7vF,EAAED,EAAEE,GAAG,IAAIW,KAAKmmW,WAAW/mW,EAAED,GAAG,OAAO,KAAKE,EAAEqy+C,UAAU1x+C,KAAKwx+C,MAAM,EAAEry+C,EAAEO,UAAUw09C,YAAY,WAAW,MAAM,EAAE,EAAE/09C,EAAEO,UAAUon+B,SAAS,WAAW,OAAO3n+B,CAAC,EAAEA,CAAC,CAAla,CAAoayW,IAAIE,GAAG,SAAS1W,GAAG,SAASD,IAAIC,EAAEQ,KAAKI,MAAMA,KAAKo1/C,OAAO,KAAKp1/C,KAAKq1/C,OAAO,KAAK,IAAIl2/C,EAAEiB,UAAU,GAAGf,EAAEe,UAAU,GAAGJ,KAAKo1/C,OAAOj2/C,EAAEa,KAAKq1/C,OAAOh2/C,EAAEW,KAAKs1/C,YAAYt1/C,KAAKo1/C,OAAOp1/C,KAAKq1/C,OAAO,CAAC,OAAOj2/C,IAAID,EAAEK,UAAUJ,GAAGD,EAAEO,UAAUJ,OAAOY,OAAOd,GAAGA,EAAEM,WAAWP,EAAEO,UAAUO,YAAYd,EAAEA,EAAEO,UAAU41/C,YAAY,SAASl2/C,EAAED,GAAGa,KAAKw8zB,KAAK35zB,KAAKgL,IAAIzO,EAAEo9zB,KAAKr9zB,EAAEq9zB,MAAMx8zB,KAAK0wyB,KAAK7tyB,KAAK8K,IAAIvO,EAAEsxyB,KAAKvxyB,EAAEuxyB,KAAK,EAAEvxyB,EAAEO,UAAUuvF,MAAM,SAAS7vF,EAAED,EAAEE,GAAG,IAAIW,KAAKmmW,WAAW/mW,EAAED,GAAG,OAAO,KAAK,OAAOa,KAAKo1/C,QAAQp1/C,KAAKo1/C,OAAOnm6C,MAAM7vF,EAAED,EAAEE,GAAG,OAAOW,KAAKq1/C,QAAQr1/C,KAAKq1/C,OAAOpm6C,MAAM7vF,EAAED,EAAEE,EAAE,EAAEF,EAAEO,UAAUw09C,YAAY,WAAW,MAAM,EAAE,EAAE/09C,EAAEO,UAAUon+B,SAAS,WAAW,OAAO3n+B,CAAC,EAAEA,CAAC,CAAnnB,CAAqnByW,IAAIU,GAAG,WAAWtW,KAAKu1/C,QAAQ,IAAItm/C,GAAGjP,KAAKgowB,MAAM,KAAKhowB,KAAK4x+C,OAAO,CAAC,EAAEt79C,GAAG5W,UAAUypwB,UAAU,WAAWr+vB,GAAGyhC,KAAKvsC,KAAKu1/C,QAAQ,IAAI3/+C,GAAGq/+C,gBAAgB,IAAI,IAAI71/C,EAAEY,KAAKu1/C,QAAQp2/C,EAAE,KAAKE,EAAE,IAAI4P,KAAK,CAAC,GAAGjP,KAAKw1/C,WAAWp2/C,EAAEC,GAAG,IAAIA,EAAEulB,OAAO,OAAOvlB,EAAE8D,IAAI,GAAGhE,EAAEC,EAAEA,EAAEC,EAAEA,EAAEF,CAAC,CAAC,EAAEmX,GAAG5W,UAAUq7P,OAAO,SAAS37P,EAAED,EAAEE,GAAG,GAAG,OAAOW,KAAKgowB,MAAM,MAAM,IAAIxgvB,MAAM,qDAAqDxnB,KAAKu1/C,QAAQpw+C,IAAI,IAAIxP,GAAGvW,EAAED,EAAEE,GAAG,EAAEiX,GAAG5W,UAAUuvF,MAAM,SAAS7vF,EAAED,EAAEE,GAAGW,KAAK0wD,OAAO1wD,KAAKgowB,MAAM/4qB,MAAM7vF,EAAED,EAAEE,EAAE,EAAEiX,GAAG5W,UAAU+1/C,UAAU,WAAW,GAAG,OAAOz1/C,KAAKgowB,MAAM,OAAO,KAAKhowB,KAAKgowB,MAAMhowB,KAAKmpwB,WAAW,EAAE7yvB,GAAG5W,UAAUouzC,UAAU,SAAS1uzC,GAAGqG,EAAEy6H,IAAI081C,QAAQn49C,EAAE019C,aAAa,IAAIh29C,EAAE/E,EAAEo9zB,KAAKx8zB,KAAK4x+C,QAAQ,IAAIzt+C,EAAE/E,EAAEsxyB,KAAK1wyB,KAAK4x+C,SAAS,EAAEt79C,GAAG5W,UAAUgxD,KAAK,WAAW,GAAG,OAAO1wD,KAAKgowB,MAAM,OAAO,KAAKhowB,KAAKy1/C,WAAW,EAAEn/+C,GAAG5W,UAAU81/C,WAAW,SAASp2/C,EAAED,GAAGa,KAAK4x+C,SAASzy+C,EAAE6lB,QAAQ,IAAI,IAAI3lB,EAAE,EAAEA,EAAED,EAAEwlB,OAAOvlB,GAAG,EAAE,CAAC,IAAIuB,EAAExB,EAAE+D,IAAI9D,GAAG,GAAG,QAAQA,EAAE,EAAED,EAAEwlB,OAAOxlB,EAAE+D,IAAI9D,GAAG,MAAMF,EAAEgmB,IAAIvkB,OAAO,CAAC,IAAIb,EAAE,IAAI+V,GAAG1W,EAAE+D,IAAI9D,GAAGD,EAAE+D,IAAI9D,EAAE,IAAIF,EAAEgmB,IAAIplB,EAAE,CAAC,CAAC,EAAEuW,GAAG5W,UAAUw09C,YAAY,WAAW,MAAM,EAAE,EAAE598C,GAAG5W,UAAUon+B,SAAS,WAAW,OAAOxw9B,EAAE,EAAE,IAAIN,GAAG,WAAWhW,KAAKyx+C,OAAO,IAAIxi+C,EAAE,EAAE+G,GAAGtW,UAAUgy+C,UAAU,SAASty+C,GAAGY,KAAKyx+C,OAAOts9C,IAAI/lB,EAAE,EAAE4W,GAAGtW,UAAUg2/C,SAAS,WAAW,OAAO11/C,KAAKyx+C,MAAM,EAAEz79C,GAAGtW,UAAUw09C,YAAY,WAAW,MAAM,CAACtq9C,GAAG,EAAEoM,GAAGtW,UAAUon+B,SAAS,WAAW,OAAO9w9B,EAAE,EAAE,IAAID,GAAG,WAAW/V,KAAKw4X,OAAO,KAAK,IAAIp5X,EAAEgB,UAAU,GAAG,IAAI8D,EAAE9E,EAAEoP,IAAI,MAAM,IAAIpL,EAAE,8BAA8BpD,KAAKw4X,OAAO,IAAI9hX,GAAGtX,EAAE,EAAEoX,GAAG,CAACm/+C,eAAe,CAAC7x/C,cAAa,GAAI8x/C,wBAAwB,CAAC9x/C,cAAa,IAAKiS,GAAGrW,UAAUsg/C,OAAO,SAAS5g/C,GAAG,IAAID,EAAE,IAAIsM,GAAGrM,GAAGC,EAAE,IAAI8X,GAAGhY,GAAG,OAAOa,KAAKw4X,OAAOvpS,MAAM7vF,EAAE4D,EAAE5D,EAAE4D,EAAE3D,GAAGF,EAAEg1a,aAAa,EAAEp+Z,GAAGrW,UAAUw09C,YAAY,WAAW,MAAM,CAACrg9C,GAAG,EAAEkC,GAAGrW,UAAUon+B,SAAS,WAAW,OAAO/w9B,EAAE,EAAES,GAAGm/+C,eAAexy/C,IAAI,WAAW,OAAOgU,EAAE,EAAEX,GAAGo/+C,wBAAwBzy/C,IAAI,WAAW,OAAOuT,EAAE,EAAEpX,OAAOkU,iBAAiBuC,GAAGS,IAAI,IAAIW,GAAG,WAAWnX,KAAK61/C,SAAS,KAAK,IAAIz2/C,EAAEgB,UAAU,GAAGJ,KAAK61/C,SAASz2/C,CAAC,EAAE+X,GAAGzX,UAAUgy+C,UAAU,SAASty+C,GAAG,IAAID,EAAEC,EAAEY,KAAK61/C,SAAS34B,aAAa/99C,EAAEs49C,cAAc,GAAGt49C,EAAEs49C,cAAc,GAAG,EAAEtg9C,GAAGzX,UAAUw09C,YAAY,WAAW,MAAM,CAACtq9C,GAAG,EAAEuN,GAAGzX,UAAUon+B,SAAS,WAAW,OAAO3v9B,EAAE,EAAE,IAAIT,GAAG,WAAW1W,KAAKw4X,OAAO,IAAIliX,GAAG,IAAIlX,EAAEgB,UAAU,GAAGJ,KAAK0wD,KAAKtxD,EAAE,EAAEsX,GAAGhX,UAAUgxD,KAAK,SAAStxD,GAAG,IAAI,IAAID,EAAE6f,GAAGqq+C,SAASjq/C,GAAGuC,WAAWxC,EAAE2g+C,WAAW,CAAC,IAAIzg+C,EAAEF,EAAE4B,OAAOyzO,iBAAiBx0O,KAAKg8tC,QAAQ38tC,EAAE,CAAC,EAAEqX,GAAGhX,UAAUs8tC,QAAQ,SAAS58tC,GAAG,IAAI,IAAID,EAAE,EAAEA,EAAEC,EAAEiB,OAAOlB,IAAI,CAAC,IAAIE,EAAE,IAAI+R,GAAGhS,EAAED,EAAE,GAAGC,EAAED,IAAIyB,EAAEiC,KAAKgL,IAAIxO,EAAEw4H,GAAG70H,EAAE3D,EAAEghP,GAAGr9O,GAAGjD,EAAE8C,KAAK8K,IAAItO,EAAEw4H,GAAG70H,EAAE3D,EAAEghP,GAAGr9O,GAAGhD,KAAKw4X,OAAOz9H,OAAOn6P,EAAEb,EAAEV,EAAE,CAAC,EAAEqX,GAAGhX,UAAUuvF,MAAM,WAAW,GAAG,IAAI7uF,UAAUC,OAAO,CAAC,IAAIjB,EAAEgB,UAAU,GAAGjB,EAAEiB,UAAU,GAAGf,EAAE,IAAI2W,GAAG,OAAOhW,KAAKw4X,OAAOvpS,MAAM7vF,EAAED,EAAEE,GAAGA,EAAEq2/C,UAAU,CAAC,GAAG,IAAIt1/C,UAAUC,OAAO,CAAC,IAAIO,EAAER,UAAU,GAAGL,EAAEK,UAAU,GAAGE,EAAEF,UAAU,GAAGJ,KAAKw4X,OAAOvpS,MAAMruF,EAAEb,EAAEO,EAAE,CAAC,EAAEoW,GAAGhX,UAAUw09C,YAAY,WAAW,MAAM,EAAE,EAAEx98C,GAAGhX,UAAUon+B,SAAS,WAAW,OAAOpw9B,EAAE,EAAE,IAAIqB,GAAG,SAAS3Y,GAAG,SAASD,IAAI,GAAGC,EAAEQ,KAAKI,MAAMA,KAAK81/C,YAAY,KAAK91/C,KAAK+1/C,aAAa,IAAIxu/C,GAAGvH,KAAKg2/C,kBAAkB,KAAKh2/C,KAAKi2/C,+BAA8B,EAAGj2/C,KAAKk2/C,UAAU,KAAKl2/C,KAAKm2/C,eAAe,KAAKn2/C,KAAKo2/C,kBAAiB,EAAGp2/C,KAAKq2/C,cAAc,KAAKr2/C,KAAKs2/C,eAAe,KAAKt2/C,KAAKoq/C,WAAW,IAAI/r+C,GAAG,IAAIje,UAAUC,OAAO,CAAC,IAAIlB,EAAEiB,UAAU,GAAGf,EAAEe,UAAU,GAAGQ,EAAEyM,GAAGqz9C,sBAAsB1g+C,KAAKk2/C,UAAU/2/C,EAAEa,KAAK81/C,YAAYz2/C,EAAEW,KAAKg2/C,kBAAkBp1/C,EAAE,OAAOvB,GAAGW,KAAKmlB,IAAI9lB,EAAE,MAAM,GAAG,IAAIe,UAAUC,OAAO,CAAC,IAAIN,EAAEK,UAAU,GAAGE,EAAEF,UAAU,GAAGU,EAAEV,UAAU,GAAGJ,KAAKk2/C,UAAUn2/C,EAAEC,KAAK81/C,YAAYx1/C,EAAEN,KAAKg2/C,kBAAkBl1/C,EAAE,OAAOR,GAAGN,KAAKmlB,IAAI7kB,EAAE,CAAC,CAAC,OAAOlB,IAAID,EAAEK,UAAUJ,GAAGD,EAAEO,UAAUJ,OAAOY,OAAOd,GAAGA,EAAEM,WAAWP,EAAEO,UAAUO,YAAYd,EAAEA,EAAEO,UAAU62/C,oBAAoB,SAASn3/C,EAAEC,GAAG,IAAIuB,EAAEZ,KAAK8hxB,OAAOj5f,QAAQxpR,GAAGuviB,WAAW7uiB,EAAE,EAASa,EAAEuza,YAAY/0a,EAAEgJ,GAAGu/9C,MAAMpk+C,EAAE4x9C,UAAUp19C,IAAI,IAAIO,EAAEnB,EAAEq3/C,kBAAkBx2/C,KAAKg2/C,kBAAkBj2/C,GAAGa,EAAE2p+C,YAAYnr+C,EAAEkB,EAAE,EAAEnB,EAAEO,UAAU+2/C,iBAAiB,WAAW,GAAG,IAAIr2/C,UAAUC,OAAO,CAAC,IAAIjB,EAAEgB,UAAU,GAAGjB,EAAEiB,UAAU,GAAG,OAAOJ,KAAKy2/C,iBAAiBr3/C,EAAED,GAAE,EAAG,CAAC,GAAG,IAAIiB,UAAUC,OAAO,CAAC,IAAmBO,EAAER,UAAU,GAAGL,EAAEK,UAAU,GAAGE,EAAE,IAAI+U,GAAjDjV,UAAU,IAA4C,GAAG,GAAIE,EAAEo0/C,qBAAqB30/C,GAAG,IAAIe,EAAEd,KAAK02/C,2BAA2B11/C,EAAEhB,KAAK81/C,uBAAuBvv/C,IAAIvG,KAAK81/C,uBAAuBxl/C,IAAItQ,KAAK81/C,uBAAuBnv/C,GAAGtE,EAAEzB,IAAII,EAAE,OAAOF,EAAEyt/C,qBAAqBvu/C,KAAKgr+C,OAAO1q+C,EAAE+B,GAAGrC,KAAK22/C,yBAAyB32/C,KAAKk2/C,WAAW51/C,CAAC,CAAC,EAAEnB,EAAEO,UAAUk3/C,kBAAkB,SAASx3/C,GAAG,IAAI,IAAID,EAAEa,KAAKgr+C,OAAOrp+C,WAAWxC,EAAE2g+C,WAAY3g+C,EAAE4B,OAAOgv+C,OAAO6E,cAAcx1+C,EAAG,EAAED,EAAEO,UAAUm3/C,yBAAyB,SAASz3/C,EAAED,EAAEE,GAAG,IAAIuB,EAAE,IAAIyU,GAAGlW,EAAEE,GAAE,GAAqE,OAAjEuB,EAAEi0/C,iBAAiB70/C,KAAK0t+C,mBAAmBtu+C,EAAEsu+C,oBAA2B1t+C,KAAK02/C,2BAA2BnI,qBAAqBvu/C,KAAKgr+C,OAAO5r+C,EAAE4r+C,OAAOpq+C,GAAGA,CAAC,EAAEzB,EAAEO,UAAU6kK,YAAY,WAAW,OAAOvkK,KAAK81/C,WAAW,EAAE32/C,EAAEO,UAAUkh/C,oBAAoB,WAAW,OAAO5g/C,KAAKg2/C,iBAAiB,EAAE72/C,EAAEO,UAAUo3/C,gBAAgB,WAAW,OAAO92/C,KAAKo2/C,gBAAgB,EAAEj3/C,EAAEO,UAAU6/+C,SAAS,WAAW,GAAGn/+C,UAAU,aAAagQ,GAAG,CAAC,IAAIhR,EAAEgB,UAAU,GAAGq39C,gBAAgBz39C,KAAK+2/C,YAAY/2/C,KAAKk2/C,UAAU92/C,EAAEmE,EAAE2x9C,SAAS,MAAM,GAAG909C,UAAU,aAAa+D,EAAE,CAAC,IAAIhF,EAAEiB,UAAU,GAAGJ,KAAK+2/C,YAAY/2/C,KAAKk2/C,UAAU/2/C,EAAEoE,EAAE2x9C,SAAS,CAAC,EAAE/19C,EAAEO,UAAU+/+C,WAAW,SAASrg/C,GAAGY,KAAK2/+C,eAAevg/C,EAAE4l+C,kBAAkBzh+C,EAAE6x9C,SAAS7x9C,EAAE2x9C,UAAU,IAAI,IAAI/19C,EAAE,EAAEA,EAAEC,EAAE0l+C,qBAAqB3l+C,IAAI,CAAC,IAAIE,EAAED,EAAE6l+C,iBAAiB9l+C,GAAGa,KAAK2/+C,eAAetg/C,EAAEkE,EAAE2x9C,SAAS3x9C,EAAE6x9C,SAAS,CAAC,EAAEj29C,EAAEO,UAAUyzoC,QAAQ,SAAS/zoC,GAAGY,KAAK0w+C,WAAWtx+C,GAAG,IAAID,EAAEC,EAAEo1O,iBAAiBx0O,KAAK+2/C,YAAY/2/C,KAAKk2/C,UAAU/2/C,EAAE,GAAGoE,EAAE4x9C,UAAUn19C,KAAK+2/C,YAAY/2/C,KAAKk2/C,UAAU/2/C,EAAEA,EAAEkB,OAAO,GAAGkD,EAAE4x9C,SAAS,EAAEh29C,EAAEO,UAAUmg/C,cAAc,SAASzg/C,GAAG,IAAID,EAAEkP,GAAGiz9C,qBAAqBli+C,EAAEo1O,kBAAkB,GAAGr1O,EAAEkB,OAAO,EAAE,OAAOL,KAAKo2/C,kBAAiB,EAAGp2/C,KAAKq2/C,cAAcl3/C,EAAE,GAAG,KAAK,IAAIE,EAAE,IAAI4d,GAAG9d,EAAE,IAAIsK,GAAGzJ,KAAKk2/C,UAAU3y/C,EAAE2x9C,WAAWl19C,KAAK+1/C,aAAa70iB,IAAI9h9B,EAAEC,GAAGW,KAAK0w+C,WAAWrx+C,GAAG0L,GAAGiprB,OAAO70rB,EAAEkB,QAAQ,EAAE,sCAAsCL,KAAKu2/C,oBAAoBv2/C,KAAKk2/C,UAAU/2/C,EAAE,IAAIa,KAAKu2/C,oBAAoBv2/C,KAAKk2/C,UAAU/2/C,EAAEA,EAAEkB,OAAO,GAAG,EAAElB,EAAEO,UAAUs3/C,gBAAgB,WAAW,OAAOh3/C,KAAKq2/C,aAAa,EAAEl3/C,EAAEO,UAAUu3/C,kBAAkB,WAAW,IAAI,IAAI73/C,EAAEY,KAAK0t+C,mBAAmBvu+C,EAAE,IAAIM,MAAML,EAAEwlB,QAAQw4G,KAAK,MAAM/9H,EAAE,EAAEuB,EAAExB,EAAEuC,WAAWf,EAAEk/9C,WAAW,CAAC,IAAI//9C,EAAEa,EAAEG,OAAO5B,EAAEE,KAAKU,EAAE039C,gBAAgB331C,MAAM,CAAC,OAAO3gI,CAAC,EAAEA,EAAEO,UAAUgu+C,iBAAiB,WAAW,OAAO,OAAO1t+C,KAAKm2/C,iBAAiBn2/C,KAAKm2/C,eAAen2/C,KAAK8hxB,OAAO4rtB,iBAAiB1t+C,KAAKk2/C,YAAYl2/C,KAAKm2/C,cAAc,EAAEh3/C,EAAEO,UAAUw3/C,wBAAwB,SAAS93/C,EAAED,EAAEE,GAAG,GAAGW,KAAKmw+C,eAAe/w+C,EAAED,GAAG,OAAO,KAAKE,IAAIkE,EAAE4x9C,UAAUn19C,KAAKi2/C,8BAA8Bj2/C,KAAKu2/C,oBAAoBn3/C,EAAED,GAAGa,KAAK+2/C,YAAY33/C,EAAED,EAAEE,EAAE,EAAEF,EAAEO,UAAUig/C,eAAe,SAASvg/C,EAAED,EAAEE,GAAG,GAAGD,EAAEipE,UAAU,OAAO,KAAK,IAAIznE,EAAEyN,GAAGiz9C,qBAAqBli+C,EAAEo1O,kBAAkB,GAAG5zO,EAAEP,OAAO,EAAE,OAAOL,KAAKo2/C,kBAAiB,EAAGp2/C,KAAKq2/C,cAAcz1/C,EAAE,GAAG,KAAK,IAAIb,EAAEZ,EAAEmB,EAAEjB,EAAEmM,GAAGky9C,MAAM989C,KAAKb,EAAEV,EAAEiB,EAAEnB,GAAG,IAAI2B,EAAE,IAAImc,GAAGrc,EAAE,IAAI6I,GAAGzJ,KAAKk2/C,UAAU3y/C,EAAE4x9C,SAASp19C,EAAEO,IAAIN,KAAK+1/C,aAAa70iB,IAAI9h9B,EAAE0B,GAAGd,KAAK0w+C,WAAW5v+C,GAAGd,KAAK+2/C,YAAY/2/C,KAAKk2/C,UAAUt1/C,EAAE,GAAG2C,EAAE4x9C,SAAS,EAAEh29C,EAAEO,UAAUq3/C,YAAY,SAAS33/C,EAAED,EAAEE,GAAG,IAAIuB,EAAEZ,KAAK8hxB,OAAOj5f,QAAQ1pR,GAAGY,EAAEa,EAAEguiB,WAAW,OAAO7uiB,EAAEa,EAAEsq+C,OAAO,IAAIzh+C,GAAGrK,EAAEC,GAAGU,EAAEwq+C,YAAYnr+C,EAAEC,EAAE,EAAEF,EAAEO,UAAUg3/C,yBAAyB,WAAW,OAAO,IAAI7g/C,EAAE,EAAE1W,EAAEO,UAAUi3/C,yBAAyB,SAASv3/C,GAAG,IAAI,IAAID,EAAEa,KAAKgr+C,OAAOrp+C,WAAWxC,EAAE2g+C,WAAW,IAAI,IAAIzg+C,EAAEF,EAAE4B,OAAOH,EAAEvB,EAAEuviB,WAAWz6H,YAAY/0a,GAAGW,EAAEV,EAAE0w+C,OAAOpu+C,WAAW5B,EAAE+/9C,WAAW,CAAC,IAAIx/9C,EAAEP,EAAEgB,OAAOf,KAAKk3/C,wBAAwB93/C,EAAEkB,EAAE2+J,MAAMr+J,EAAE,CAAC,EAAEzB,EAAEO,UAAUylB,IAAI,WAAW,GAAG,IAAI/kB,UAAUC,OAAO,OAAOjB,EAAEM,UAAUylB,IAAI5kB,MAAMP,KAAKI,WAAW,IAAIjB,EAAEiB,UAAU,GAAG,GAAGjB,EAAEkpE,UAAU,OAAO,KAAK,GAAGlpE,aAAawH,KAAK3G,KAAKi2/C,+BAA8B,GAAI92/C,aAAamR,GAAGtQ,KAAKy/+C,WAAWtg/C,QAAQ,GAAGA,aAAa6P,GAAGhP,KAAK6/+C,cAAc1g/C,QAAQ,GAAGA,aAAaiR,GAAGpQ,KAAKu/+C,SAASpg/C,QAAQ,GAAGA,aAAauH,GAAG1G,KAAK+/+C,cAAc5g/C,QAAQ,GAAGA,aAAa2P,GAAG9O,KAAK+/+C,cAAc5g/C,QAAQ,GAAGA,aAAawH,GAAG3G,KAAK+/+C,cAAc5g/C,OAAO,CAAC,KAAKA,aAAa0Q,IAAI,MAAM,IAAI2X,MAAMroB,EAAE2n+B,WAAW9+oB,WAAWhoV,KAAK+/+C,cAAc5g/C,EAAE,CAAC,EAAEA,EAAEO,UAAUqg/C,cAAc,SAAS3g/C,GAAG,IAAI,IAAID,EAAE,EAAEA,EAAEC,EAAE+/9C,mBAAmBhg+C,IAAI,CAAC,IAAIE,EAAED,EAAEw/9C,aAAaz/9C,GAAGa,KAAKmlB,IAAI9lB,EAAE,CAAC,EAAEF,EAAEO,UAAUsg/C,OAAO,SAAS5g/C,GAAG,OAAO8E,EAAElE,KAAK81/C,YAAYtn/C,KAAKxO,KAAK81/C,YAAY32B,mBAAmB,IAAI,OAAOn/9C,KAAKs2/C,iBAAiBt2/C,KAAKs2/C,eAAe,IAAIvg/C,GAAG/V,KAAK81/C,cAAc91/C,KAAKs2/C,eAAetW,OAAO5g/C,IAAIY,KAAKoq/C,WAAWpK,OAAO5g/C,EAAEY,KAAK81/C,YAAY,EAAE32/C,EAAEO,UAAU+o+C,SAAS,WAAW,GAAG,IAAIro+C,UAAUC,OAAO,CAAC,IAAIlB,EAAEiB,UAAU,GAAG,OAAOJ,KAAK+1/C,aAAa5y/C,IAAIhE,EAAE,CAAC,OAAOC,EAAEM,UAAU+o+C,SAASlo+C,MAAMP,KAAKI,UAAU,EAAEjB,EAAEO,UAAUw09C,YAAY,WAAW,MAAM,EAAE,EAAE/09C,EAAEO,UAAUon+B,SAAS,WAAW,OAAO3n+B,CAAC,EAAEA,EAAEq3/C,kBAAkB,SAASp3/C,EAAED,GAAG,OAAOC,EAAEuh+C,aAAaxh+C,GAAGoE,EAAE4x9C,SAAS5x9C,EAAE2x9C,QAAQ,EAAE/19C,CAAC,CAAnmL,CAAqmL8K,IAAI2M,GAAG,WAAW,GAAG5W,KAAK07+C,IAAI,IAAIxw+C,GAAGlL,KAAKm3/C,sBAAsB,KAAKn3/C,KAAKo3/C,KAAK,KAAK,IAAIh3/C,UAAUC,OAAO,CAAC,IAAIjB,EAAEgB,UAAU,GAAGJ,KAAKq3/C,wBAAwBj4/C,EAAEsg+C,qBAAqB1/9C,KAAKo3/C,KAAK,IAAI33/C,MAAM,GAAG29H,KAAK,MAAMp9H,KAAKo3/C,KAAK,GAAG,IAAIr/+C,GAAG,EAAE3Y,EAAE,MAAM,GAAG,IAAIgB,UAAUC,OAAO,CAAC,IAAIlB,EAAEiB,UAAU,GAAGf,EAAEe,UAAU,GAAGQ,EAAEyM,GAAGqz9C,sBAAsBvh+C,EAAEug+C,oBAAoB7stC,UAAUxzQ,EAAEqg+C,sBAAsB,EAAE1/9C,KAAKq3/C,wBAAwBl4/C,EAAEug+C,qBAAqB1/9C,KAAKq3/C,wBAAwBh4/C,EAAEqg+C,qBAAqB1/9C,KAAKo3/C,KAAK,IAAI33/C,MAAM,GAAG29H,KAAK,MAAMp9H,KAAKo3/C,KAAK,GAAG,IAAIr/+C,GAAG,EAAE5Y,EAAEyB,GAAGZ,KAAKo3/C,KAAK,GAAG,IAAIr/+C,GAAG,EAAE1Y,EAAEuB,EAAE,MAAM,GAAG,IAAIR,UAAUC,OAAO,CAAC,IAAIN,EAAEK,UAAU,GAAGE,EAAEF,UAAU,GAAGU,EAAEV,UAAU,GAAGL,EAAE2/9C,oBAAoB7stC,UAAUvyQ,EAAEo/9C,sBAAsB,EAAE1/9C,KAAKq3/C,wBAAwBt3/C,EAAE2/9C,qBAAqB1/9C,KAAKq3/C,wBAAwB/2/C,EAAEo/9C,qBAAqB1/9C,KAAKo3/C,KAAK,IAAI33/C,MAAM,GAAG29H,KAAK,MAAMp9H,KAAKo3/C,KAAK,GAAG,IAAIr/+C,GAAG,EAAEhY,EAAEe,GAAGd,KAAKo3/C,KAAK,GAAG,IAAIr/+C,GAAG,EAAEzX,EAAEQ,EAAE,CAAC,EAAE8V,GAAGlX,UAAUwv/C,eAAe,SAAS9v/C,GAAG,OAAOY,KAAKo3/C,KAAKh4/C,GAAGmlK,aAAa,EAAE3tJ,GAAGlX,UAAU23/C,wBAAwB,SAASj4/C,GAAGY,KAAKm3/C,sBAAsB/3/C,EAAEY,KAAK07+C,IAAI7f,kBAAkB779C,KAAKm3/C,sBAAsB,EAAEvg/C,GAAGlX,UAAUw09C,YAAY,WAAW,MAAM,EAAE,EAAEt98C,GAAGlX,UAAUon+B,SAAS,WAAW,OAAOlw9B,EAAE,EAAE,IAAIR,GAAG,WAAW,EAAEA,GAAG1W,UAAUw09C,YAAY,WAAW,MAAM,EAAE,EAAE998C,GAAG1W,UAAUon+B,SAAS,WAAW,OAAO1w9B,EAAE,EAAEA,GAAGiZ,IAAI,WAAW,GAAGjvB,UAAU,aAAamL,IAAIrH,EAAE9D,UAAU,GAAGgW,GAAGkh/C,OAAO,CAAC,IAAI,IAAIl4/C,EAAEgB,UAAU,GAAGjB,EAAEiB,UAAU,GAAGf,EAAE,IAAI4P,GAAGrO,EAAE,EAAEA,EAAExB,EAAE+/9C,mBAAmBv+9C,IAAI,CAAC,IAAIb,EAAEZ,EAAEkwB,IAAIjwB,EAAEw/9C,aAAah+9C,IAAI,OAAOb,GAAGV,EAAE8lB,IAAIplB,EAAE,CAAC,OAAOX,EAAEu/9C,aAAamI,cAAczn+C,EAAE,CAAC,GAAG6E,EAAE9D,UAAU,GAAG0N,KAAK5J,EAAE9D,UAAU,GAAGgW,GAAGkh/C,OAAO,CAAC,IAAI,IAAIh3/C,EAAEF,UAAU,GAAGU,EAAEV,UAAU,GAAGY,EAAE,IAAIiO,GAAG5M,EAAE/B,EAAEqB,WAAWU,EAAEy99C,WAAW,CAAC,IAAIt99C,EAAEH,EAAEtB,OAAOF,EAAEC,EAAEuuB,IAAI7sB,GAAG,OAAO3B,GAAGG,EAAEmkB,IAAItkB,EAAE,CAAC,OAAOG,CAAC,CAAC,EAAEoV,GAAGkh/C,MAAM,WAAW,EAAE,IAAIxg/C,GAAG,SAAS1X,GAAG,SAASD,IAAI,IAAIA,EAAEiB,UAAU,GAAGf,EAAEe,UAAU,GAAGhB,EAAEQ,KAAKI,KAAKb,EAAEE,GAAGW,KAAKoq/C,WAAW,IAAI/r+C,GAAGre,KAAKsj+C,UAAU,KAAKtj+C,KAAKu3/C,YAAY,KAAKv3/C,KAAKkk/C,OAAO,KAAKlk/C,KAAKsg/C,UAAU,IAAI5s+C,GAAG1T,KAAKw3/C,gBAAgB,IAAIvo/C,GAAGjP,KAAK6u/C,gBAAgB,IAAI5/+C,GAAGjP,KAAKuv/C,iBAAiB,IAAItg/C,GAAGjP,KAAKkk/C,OAAO,IAAIj6+C,GAAG,IAAI+H,IAAIhS,KAAKsj+C,UAAUnk+C,EAAEw/9C,YAAY,CAAC,OAAOv/9C,IAAID,EAAEK,UAAUJ,GAAGD,EAAEO,UAAUJ,OAAOY,OAAOd,GAAGA,EAAEM,WAAWP,EAAEO,UAAUO,YAAYd,EAAEA,EAAEO,UAAU0k/C,iBAAiB,SAAShl/C,GAAG,IAAID,EAAEa,KAAKsg/C,UAAUqB,cAAcvi/C,GAAG,GAAG,OAAOD,EAAE,CAAC,IAAIE,EAAEF,EAAEyviB,WAAWhuiB,EAAExB,EAAEwviB,WAAWzviB,EAAEyk/C,iBAAiBxk/C,KAAKwB,EAAE,IAAI6I,GAAGrK,EAAEwviB,aAAainvB,OAAO,IAAI91xC,EAAEZ,EAAEyq+C,WAAW7p+C,EAAEwzQ,UAAUxzQ,EAAEolB,IAAI9lB,GAAGU,EAAEolB,IAAIvkB,GAAGvB,EAAEyhQ,MAAMlgQ,EAAE,MAAMZ,KAAKsg/C,UAAUn79C,IAAI/lB,EAAE,EAAED,EAAEO,UAAUmooC,SAAS,WAAW,OAAO7noC,KAAKkk/C,MAAM,EAAE/k/C,EAAEO,UAAU+3/C,2BAA2B,WAAW,IAAI,IAAIr4/C,EAAEY,KAAKkk/C,OAAO5T,cAAc3u+C,WAAWvC,EAAE0g+C,WAAW,CAAC,IAAI3g+C,EAAEC,EAAE2B,OAAO1B,EAAEF,EAAEqp+C,SAASrp+C,EAAEq0zC,cAAcn0zC,EAAEm0zC,eAAer0zC,EAAE2q+C,aAAY,GAAIzq+C,EAAEyq+C,aAAY,GAAI,CAAC,EAAE3q+C,EAAEO,UAAU+v/C,cAAc,SAASrw/C,GAAG,QAAQY,KAAK+s+C,UAAU3t+C,EAAEY,KAAK6u/C,oBAAoB7u/C,KAAK+s+C,UAAU3t+C,EAAEY,KAAKw3/C,gBAAgB,EAAEr4/C,EAAEO,UAAUwo/C,gBAAgB,SAAS9o/C,EAAEC,EAAEuB,EAAEb,GAAG,IAAIO,EAAE,IAAI2O,GAAG,OAAO3O,EAAE2z9C,OAAO709C,GAAGkB,EAAE2z9C,OAAO509C,GAAGiB,EAAE2z9C,OAAOrz9C,GAAGN,EAAE+nE,UAAUlpE,EAAEu4/C,kBAAkB33/C,EAAEC,KAAKo3/C,KAAK,GAAG7y1C,cAAcvkK,KAAKo3/C,KAAK,GAAG7y1C,cAAcvkK,KAAKsj+C,WAAWtj+C,KAAKsj+C,UAAUwD,cAAcxm+C,EAAE,EAAEnB,EAAEO,UAAU4h/C,eAAe,WAAW,IAAI,IAAIli/C,EAAEY,KAAKkk/C,OAAO12mB,WAAW7r4B,WAAWvC,EAAE0g+C,WAAY1g+C,EAAE2B,OAAOun+C,WAAWgZ,gBAAiB,EAAEni/C,EAAEO,UAAUqt+C,UAAU,SAAS3t+C,EAAED,GAAG,IAAI,IAAIE,EAAEF,EAAEwC,WAAWtC,EAAEyg+C,WAAW,CAAC,IAAIl/9C,EAAEvB,EAAE0B,OAAO,GAAGf,KAAKoq/C,WAAWpK,OAAO5g/C,EAAEwB,KAAK2C,EAAE6x9C,SAAS,OAAM,CAAE,CAAC,OAAM,CAAE,EAAEj29C,EAAEO,UAAUi4/C,sBAAsB,WAAW,IAAI,IAAIv4/C,EAAE,IAAI6P,GAAG9P,EAAEa,KAAKsg/C,UAAU3++C,WAAWxC,EAAE2g+C,WAAW,CAAC,IAAIzg+C,EAAEF,EAAE4B,OAAO1B,EAAEsyF,gBAAgBxyF,EAAE0zB,SAASzzB,EAAE+lB,IAAI9lB,EAAEmk/C,oBAAoB,CAACxj/C,KAAKsg/C,UAAUrsB,OAAO709C,EAAE,EAAED,EAAEO,UAAUk4/C,oBAAoB,WAAW,IAAI,IAAIx4/C,EAAEY,KAAKkk/C,OAAO12mB,WAAW7r4B,WAAWvC,EAAE0g+C,WAAW,CAAC,IAAI3g+C,EAAEC,EAAE2B,OAAO1B,EAAEF,EAAEmp+C,WAAW157B,WAAWzviB,EAAEyviB,WAAW9tS,MAAMzhQ,EAAE,CAAC,EAAEF,EAAEO,UAAU0o/C,kBAAkB,SAAShp/C,GAAG,OAAOY,KAAK63/C,eAAez4/C,GAAGY,KAAKu3/C,WAAW,EAAEp4/C,EAAEO,UAAUo4/C,kBAAkB,SAAS14/C,GAAG,IAAI,IAAID,EAAEC,EAAEuC,WAAWxC,EAAE2g+C,WAAW,CAAC,IAAIzg+C,EAAEF,EAAE4B,OAAOf,KAAKok/C,iBAAiB/k/C,EAAE,CAAC,EAAEF,EAAEO,UAAUm4/C,eAAe,SAASz4/C,GAAGY,KAAK+3/C,WAAW,GAAG/3/C,KAAK+3/C,WAAW,GAAG/3/C,KAAKo3/C,KAAK,GAAGX,iBAAiBz2/C,KAAK07+C,KAAI,GAAI17+C,KAAKo3/C,KAAK,GAAGX,iBAAiBz2/C,KAAK07+C,KAAI,GAAI17+C,KAAKo3/C,KAAK,GAAGP,yBAAyB72/C,KAAKo3/C,KAAK,GAAGp3/C,KAAK07+C,KAAI,GAAI,IAAIv8+C,EAAE,IAAI8P,GAAGjP,KAAKo3/C,KAAK,GAAGR,kBAAkBz3/C,GAAGa,KAAKo3/C,KAAK,GAAGR,kBAAkBz3/C,GAAGa,KAAK83/C,kBAAkB34/C,GAAGa,KAAKg4/C,0BAA0Bh4/C,KAAK23/C,wBAAwBr2+C,GAAGkk+C,WAAWxl/C,KAAKsg/C,UAAUhY,YAAYto+C,KAAKkk/C,OAAOtT,SAAS5w+C,KAAKsg/C,UAAUhY,YAAYto+C,KAAK8g/C,mBAAmB9g/C,KAAKi4/C,uBAAuBj4/C,KAAKk4/C,oBAAoB94/C,GAAGY,KAAKy3/C,6BAA6B,IAAIp4/C,EAAE,IAAIiJ,GAAGtI,KAAKsj+C,WAAWjk+C,EAAE8lB,IAAInlB,KAAKkk/C,QAAQlk/C,KAAKw3/C,gBAAgBn4/C,EAAEiy+C,cAAc,IAAI1w+C,EAAE,IAAIqe,GAAGjf,KAAKA,KAAKsj+C,UAAUtj+C,KAAKoq/C,YAAYpq/C,KAAK6u/C,gBAAgBju/C,EAAE0pD,MAAMlrD,GAAG,IAAIW,EAAE,IAAI0hB,GAAGzhB,KAAKA,KAAKsj+C,UAAUtj+C,KAAKoq/C,YAAYpq/C,KAAKuv/C,iBAAiBxv/C,EAAEuqD,MAAMlrD,GAAGY,KAAKu3/C,YAAYv3/C,KAAKko/C,gBAAgBlo/C,KAAKuv/C,iBAAiBvv/C,KAAK6u/C,gBAAgB7u/C,KAAKw3/C,gBAAgBp4/C,EAAE,EAAED,EAAEO,UAAUy4/C,oBAAoB,SAAS/4/C,EAAED,GAAG,IAAIE,EAAEW,KAAKoq/C,WAAWpK,OAAO5g/C,EAAEq49C,gBAAgBz39C,KAAKo3/C,KAAKj4/C,GAAGolK,eAAenlK,EAAEwviB,WAAW277B,YAAYpr+C,EAAEE,EAAE,EAAEF,EAAEO,UAAUq4/C,WAAW,SAAS34/C,GAAG,IAAI,IAAID,EAAEa,KAAKo3/C,KAAKh4/C,GAAG4w+C,kBAAkB7w+C,EAAE2g+C,WAAW,CAAC,IAAIzg+C,EAAEF,EAAE4B,OAAOf,KAAKkk/C,OAAOr7tC,QAAQxpR,EAAEo49C,iBAAiB/wkC,SAAStnZ,EAAEC,EAAEuviB,WAAWz6H,YAAY/0a,GAAG,CAAC,EAAED,EAAEO,UAAUw4/C,oBAAoB,SAAS94/C,GAAG,IAAI,IAAIC,EAAEW,KAAKkk/C,OAAO5T,cAAc3u+C,WAAWtC,EAAEyg+C,WAAW,CAAC,IAAIl/9C,EAAEvB,EAAE0B,OAAOhB,EAAEa,EAAEguiB,WAAW7uiB,EAAEsq+C,WAAWzp+C,EAAEip+C,sBAAsB1q+C,EAAEiw/C,aAAarv/C,EAAEo0a,YAAY,EAAE/ra,GAAGgrhB,OAAOrzhB,EAAEo0a,YAAY,EAAE/ra,GAAGgrhB,OAAOh0hB,IAAIwB,EAAEkp+C,aAAY,EAAG,CAAC,EAAE3q+C,EAAEO,UAAUs4/C,wBAAwB,WAAW,IAAI,IAAI54/C,EAAEY,KAAKsg/C,UAAU3++C,WAAWvC,EAAE0g+C,WAAW,CAAC,IAAI3g+C,EAAEC,EAAE2B,OAAO1B,EAAEF,EAAEyviB,WAAWhuiB,EAAEzB,EAAEyq+C,WAAW,IAAIhp+C,EAAE2yQ,SAAS,CAAC3yQ,EAAE0O,YAAY,IAAI,IAAIvP,EAAE,EAAEA,EAAE,EAAEA,IAAIV,EAAEk0Q,OAAOxzQ,KAAKV,EAAEgr+C,UAAUzp+C,EAAE2yQ,OAAOxzQ,KAAK,IAAIa,EAAE+0Y,SAAS51Y,GAAGV,EAAEur+C,OAAO7q+C,IAAIgL,GAAGiprB,QAAQpzrB,EAAE2yQ,OAAOxzQ,EAAEqI,GAAG8qhB,MAAM,+CAA+C7zhB,EAAEkr+C,YAAYxq+C,EAAEqI,GAAG8qhB,KAAKtyhB,EAAEuza,YAAYp0a,EAAEqI,GAAG8qhB,OAAOnohB,GAAGiprB,QAAQpzrB,EAAE2yQ,OAAOxzQ,EAAEqI,GAAGgrhB,OAAO,gDAAgD/zhB,EAAEkr+C,YAAYxq+C,EAAEqI,GAAGgrhB,MAAMxyhB,EAAEuza,YAAYp0a,EAAEqI,GAAGgrhB,SAAS,CAAC,CAAC,EAAEj0hB,EAAEO,UAAUoh/C,iBAAiB,WAAW,IAAI,IAAI1h/C,EAAEY,KAAKkk/C,OAAO12mB,WAAW7r4B,WAAWvC,EAAE0g+C,WAAY1g+C,EAAE2B,OAAOun+C,WAAWwY,iBAAiB9g/C,KAAKo3/C,MAAMp3/C,KAAKsh/C,iBAAiBth/C,KAAK43/C,qBAAqB,EAAEz4/C,EAAEO,UAAUu4/C,qBAAqB,WAAW,IAAI,IAAI74/C,EAAEY,KAAKkk/C,OAAO12mB,WAAW7r4B,WAAWvC,EAAE0g+C,WAAW,CAAC,IAAI3g+C,EAAEC,EAAE2B,OAAO1B,EAAEF,EAAEyviB,WAAWzviB,EAAEqs+C,eAAens+C,EAAEk0Q,OAAO,GAAGvzQ,KAAKm4/C,oBAAoBh5/C,EAAE,GAAGa,KAAKm4/C,oBAAoBh5/C,EAAE,IAAIA,EAAEmp+C,WAAW+Y,gBAAgBhi/C,EAAE,CAAC,EAAEF,EAAEO,UAAU2v/C,aAAa,SAASjw/C,GAAG,QAAQY,KAAK+s+C,UAAU3t+C,EAAEY,KAAKw3/C,gBAAgB,EAAEr4/C,EAAEO,UAAUw09C,YAAY,WAAW,MAAM,EAAE,EAAE/09C,EAAEO,UAAUon+B,SAAS,WAAW,OAAO3n+B,CAAC,EAAEA,CAAC,CAAxxJ,CAA0xJyX,IAAIE,GAAGo8+C,UAAU,SAAS9z/C,EAAED,EAAEE,GAAG,OAAO,IAAIyX,GAAG1X,EAAED,GAAGip/C,kBAAkB/o/C,EAAE,EAAEyX,GAAGomL,aAAa,SAAS99L,EAAED,GAAG,GAAGC,EAAEipE,WAAWlpE,EAAEkpE,UAAU,OAAOvxD,GAAG4g/C,kBAAkB5g/C,GAAGirK,aAAa3iL,EAAED,EAAEC,EAAEu/9C,cAAc,GAAGv/9C,EAAE4ud,uBAAuB,CAAC,IAAI3ud,EAAEF,EAAE,OAAOqf,GAAG6Q,IAAIjwB,EAAE,CAAC809C,YAAY,WAAW,MAAM,CAAC998C,GAAGkh/C,MAAM,EAAEjo+C,IAAI,SAASjwB,GAAG,OAAOA,EAAE89L,aAAa79L,EAAE,GAAG,CAAC,OAAOD,EAAEqg+C,2BAA2Brg+C,GAAGA,EAAEqg+C,2BAA2Btg+C,GAAGgW,GAAG+9+C,UAAU9z/C,EAAED,EAAE2X,GAAGirK,aAAa,EAAEjrK,GAAGs8+C,cAAc,SAASh0/C,EAAED,GAAG,GAAGC,EAAEipE,WAAWlpE,EAAEkpE,UAAU,CAAC,GAAGjpE,EAAEipE,WAAWlpE,EAAEkpE,UAAU,OAAOvxD,GAAG4g/C,kBAAkB5g/C,GAAGu8+C,cAAcj0/C,EAAED,EAAEC,EAAEu/9C,cAAc,GAAGv/9C,EAAEipE,UAAU,OAAOlpE,EAAE2gI,OAAO,GAAG3gI,EAAEkpE,UAAU,OAAOjpE,EAAE0gI,MAAM,CAAC,OAAO1gI,EAAEqg+C,2BAA2Brg+C,GAAGA,EAAEqg+C,2BAA2Btg+C,GAAGgW,GAAG+9+C,UAAU9z/C,EAAED,EAAE2X,GAAGu8+C,cAAc,EAAEv8+C,GAAGsh/C,gBAAgB,SAASh5/C,EAAED,EAAEE,GAAG,IAAIuB,EAAEzB,EAAE0mjC,eAAe9ljC,EAAEV,EAAEwmjC,eAAevljC,GAAG,EAAE,OAAOlB,GAAG,KAAK0X,GAAGirK,aAAazhL,EAAEuC,KAAKgL,IAAIjN,EAAEb,GAAG,MAAM,KAAK+W,GAAGq8+C,MAAM7y/C,EAAEuC,KAAK8K,IAAI/M,EAAEb,GAAG,MAAM,KAAK+W,GAAGw8+C,WAAWhz/C,EAAEM,EAAE,MAAM,KAAKkW,GAAGu8+C,cAAc/y/C,EAAEuC,KAAK8K,IAAI/M,EAAEb,GAAG,OAAOO,CAAC,EAAEwW,GAAG4g/C,kBAAkB,SAASt4/C,EAAED,EAAEE,EAAEuB,GAAG,IAAIb,EAAE,KAAK,OAAO+W,GAAGsh/C,gBAAgBh5/C,EAAED,EAAEE,IAAI,KAAK,EAAEU,EAAEa,EAAEs59C,yBAAyB,IAAIz69C,MAAM,GAAG29H,KAAK,OAAO,MAAM,KAAK,EAAEr9H,EAAEa,EAAEg59C,cAAc,MAAM,KAAK,EAAE759C,EAAEa,EAAEk59C,mBAAmB,MAAM,KAAK,EAAE/59C,EAAEa,EAAE+vtC,gBAAgB,OAAO5wtC,CAAC,EAAE+W,GAAGqgd,WAAW,SAAS/3d,EAAED,GAAG,OAAOC,EAAEipE,UAAUvxD,GAAG4g/C,kBAAkB5g/C,GAAGw8+C,WAAWl0/C,EAAED,EAAEC,EAAEu/9C,cAAcx/9C,EAAEkpE,UAAUjpE,EAAE0gI,QAAQ1gI,EAAEqg+C,2BAA2Brg+C,GAAGA,EAAEqg+C,2BAA2Btg+C,GAAGgW,GAAG+9+C,UAAU9z/C,EAAED,EAAE2X,GAAGw8+C,YAAY,EAAEx8+C,GAAGs4+C,aAAa,WAAW,GAAG,IAAIhv/C,UAAUC,OAAO,CAAC,IAAIjB,EAAEgB,UAAU,GAAGjB,EAAEiB,UAAU,GAAGf,EAAED,EAAE+0a,YAAY,GAAGvza,EAAExB,EAAE+0a,YAAY,GAAG,OAAOr9Z,GAAGs4+C,aAAa/v/C,EAAEuB,EAAEzB,EAAE,CAAC,GAAG,IAAIiB,UAAUC,OAAO,CAAC,IAAIN,EAAEK,UAAU,GAAGE,EAAEF,UAAU,GAAkB,OAAOL,IAAIwD,EAAE4x9C,WAAWp19C,EAAEwD,EAAE2x9C,UAAU509C,IAAIiD,EAAE4x9C,WAAW709C,EAAEiD,EAAE2x9C,UAAxE909C,UAAU,IAA2E,KAAK0W,GAAGirK,aAAa,OAAOhiL,IAAIwD,EAAE2x9C,UAAU509C,IAAIiD,EAAE2x9C,SAAS,KAAKp+8C,GAAGq8+C,MAAM,OAAOpz/C,IAAIwD,EAAE2x9C,UAAU509C,IAAIiD,EAAE2x9C,SAAS,KAAKp+8C,GAAGw8+C,WAAW,OAAOvz/C,IAAIwD,EAAE2x9C,UAAU509C,IAAIiD,EAAE2x9C,SAAS,KAAKp+8C,GAAGu8+C,cAAc,OAAOtz/C,IAAIwD,EAAE2x9C,UAAU509C,IAAIiD,EAAE2x9C,UAAUn19C,IAAIwD,EAAE2x9C,UAAU509C,IAAIiD,EAAE2x9C,SAAS,OAAM,CAAE,CAAC,EAAEp+8C,GAAGirK,aAAa,EAAEjrK,GAAGq8+C,MAAM,EAAEr8+C,GAAGw8+C,WAAW,EAAEx8+C,GAAGu8+C,cAAc,EAAE,IAAIp9+C,GAAG,WAAWjW,KAAKi5E,GAAG,KAAKj5E,KAAKq4/C,2BAA2B,KAAKr4/C,KAAKs4/C,UAAU,KAAKt4/C,KAAKoq/C,WAAW,IAAI/r+C,GAAGre,KAAKu++C,KAAK,IAAInt+C,GAAG,IAAIhS,EAAEgB,UAAU,GAAGjB,EAAEiB,UAAU,GAAGJ,KAAKi5E,GAAG75E,EAAEY,KAAKq4/C,2BAA2Bl5/C,EAAEa,KAAKs4/C,UAAUt4/C,KAAKu4/C,gBAAgBn5/C,EAAE,EAAE6W,GAAGvW,UAAU84/C,4BAA4B,SAASp5/C,GAAG,IAAI,IAAID,EAAE,EAAEA,EAAEa,KAAKs4/C,UAAUn5B,mBAAmBhg+C,IAAI,IAAI,IAAIE,EAAEW,KAAKs4/C,UAAU15B,aAAaz/9C,GAAGwl+C,wBAAwB/j+C,EAAE,EAAEA,EAAEvB,EAAEulB,OAAO,EAAEhkB,IAAuE,GAAlEvB,EAAEo49C,cAAc729C,EAAEZ,KAAKu++C,KAAK1m3C,IAAIx4H,EAAEo49C,cAAc729C,EAAE,EAAEZ,KAAKu++C,KAAKl+vC,IAAOrgP,KAAKu++C,KAAKt11C,SAAS7pJ,IAAIY,KAAKq4/C,2BAA2B,OAAM,EAAG,OAAM,CAAE,EAAEpi/C,GAAGvW,UAAUy0a,YAAY,SAAS/0a,GAAG,OAAOY,KAAKw4/C,4BAA4Bp5/C,GAAGmE,EAAE4x9C,SAASn19C,KAAKoq/C,WAAWpK,OAAO5g/C,EAAEY,KAAKi5E,GAAG,EAAEhjE,GAAGvW,UAAU64/C,gBAAgB,SAASn5/C,GAAG,IAAID,EAAE,IAAIgX,GAAG/W,EAAEmB,MAAMpB,GAAG,IAAIE,EAAEF,EAAEs5/C,cAAc73/C,EAAE2H,GAAG0+9C,kBAAkB5n+C,GAAG,OAAOD,EAAEu/9C,aAAa3E,sBAAsBp59C,EAAE,EAAEqV,GAAGvW,UAAUw09C,YAAY,WAAW,MAAM,EAAE,EAAEj+8C,GAAGvW,UAAUon+B,SAAS,WAAW,OAAO7w9B,EAAE,EAAE,IAAIE,GAAG,WAAWnW,KAAKs4/C,UAAU,KAAKt4/C,KAAKs4/C,UAAU,IAAIrp/C,EAAE,EAAEkH,GAAGzW,UAAU+4/C,YAAY,WAAW,OAAOz4/C,KAAKs4/C,SAAS,EAAEni/C,GAAGzW,UAAUmtB,OAAO,SAASztB,GAAG,GAAGA,aAAakR,GAAG,CAAC,IAAInR,EAAEC,EAAEY,KAAKs4/C,UAAUnz+C,IAAIhmB,EAAE6l+C,mBAAmB,IAAI,IAAI3l+C,EAAE,EAAEA,EAAEF,EAAE2l+C,qBAAqBzl+C,IAAIW,KAAKs4/C,UAAUnz+C,IAAIhmB,EAAE8l+C,iBAAiB5l+C,GAAG,CAAC,EAAE8W,GAAGzW,UAAUw09C,YAAY,WAAW,MAAM,CAACtk9C,GAAG,EAAEuG,GAAGzW,UAAUon+B,SAAS,WAAW,OAAO3w9B,EAAE,EAAE,IAAIM,GAAG,WAAWzW,KAAKi5E,GAAG,KAAKj5E,KAAK04/C,SAAQ,EAAG14/C,KAAK24/C,UAAS,EAAG,IAAIv5/C,EAAEgB,UAAU,GAAGJ,KAAKi5E,GAAG75E,CAAC,EAAEqX,GAAG/W,UAAUk5/C,cAAc,SAASx5/C,EAAED,EAAEE,GAAG,IAAI,IAAIuB,EAAExB,EAAEo1O,iBAAiBz0O,EAAE,EAAEA,EAAEa,EAAEP,OAAO,EAAEN,IAAIC,KAAK64/C,oBAAoBj4/C,EAAEb,GAAGa,EAAEb,EAAE,GAAGZ,EAAEE,EAAE,EAAEoX,GAAG/W,UAAUo5/C,mBAAmB,SAAS15/C,EAAED,GAAGa,KAAK04/C,QAAQt5/C,EAAEY,KAAK24/C,SAASx5/C,CAAC,EAAEsX,GAAG/W,UAAUohO,UAAU,SAAS1hO,GAAG,IAAI,IAAID,EAAE,IAAI8P,GAAG5P,EAAE2f,GAAGqq+C,SAASrp/C,KAAKi5E,IAAIt3E,WAAWtC,EAAEyg+C,WAAW,CAAC,IAAIl/9C,EAAEvB,EAAE0B,OAAOf,KAAK44/C,cAAch4/C,EAAExB,EAAED,EAAE,CAAC,OAAOA,CAAC,EAAEsX,GAAG/W,UAAUm5/C,oBAAoB,SAASz5/C,EAAED,EAAEE,EAAEuB,GAAG,IAAIb,EAAEZ,EAAE8E,EAAE7E,EAAE6E,EAAE3D,EAAEnB,EAAE6D,EAAE5D,EAAE4D,EAAElC,EAAE+B,KAAK4yF,KAAK11F,EAAEA,EAAEO,EAAEA,GAAGU,EAAE3B,EAAEU,EAAEe,EAAEuB,EAAEhD,EAAEiB,EAAEQ,EAAE0B,GAAGrD,EAAE8E,EAAE7E,EAAE6E,GAAG,EAAEpD,GAAG1B,EAAE6D,EAAE5D,EAAE4D,GAAG,EAAE,GAAGhD,KAAK04/C,QAAQ,CAAC,IAAI51/C,EAAE,IAAIqB,EAAE3B,EAAEH,EAAExB,EAAEG,GAAGJ,EAAEukB,IAAIriB,EAAE,CAAC,GAAG9C,KAAK24/C,SAAS,CAAC,IAAI/1/C,EAAE,IAAIuB,EAAE3B,EAAEH,EAAExB,EAAEG,GAAGJ,EAAEukB,IAAIviB,EAAE,CAAC,EAAE6T,GAAG/W,UAAUw09C,YAAY,WAAW,MAAM,EAAE,EAAEz98C,GAAG/W,UAAUon+B,SAAS,WAAW,OAAOrw9B,EAAE,EAAE,IAAIE,GAAG,SAASvX,IAAIY,KAAKqj+C,MAAM,KAAKrj+C,KAAK+4/C,WAAW,KAAK/4/C,KAAKymtC,UAAU,IAAIhntC,MAAM,GAAG29H,KAAK,MAAMp9H,KAAKg5/C,iBAAiB,KAAKh5/C,KAAKq4/C,2BAA2Bj5/C,EAAE65/C,UAAUj5/C,KAAKk5/C,YAAY,IAAIjq/C,GAAG,IAAI9P,EAAEiB,UAAU,GAAGf,EAAEe,UAAU,GAAGQ,EAAER,UAAU,GAAGJ,KAAKq4/C,2BAA2Bj5/C,EAAE+5/C,iCAAiCh6/C,EAAEE,GAAGW,KAAKqj+C,MAAM,CAAClk+C,EAAEE,EAAEuB,GAAGZ,KAAK+4/C,WAAW,CAAC,IAAI9i/C,GAAGjW,KAAKqj+C,MAAM,GAAGrj+C,KAAKq4/C,4BAA4B,IAAIpi/C,GAAGjW,KAAKqj+C,MAAM,GAAGrj+C,KAAKq4/C,4BAA4B,IAAIpi/C,GAAGjW,KAAKqj+C,MAAM,GAAGrj+C,KAAKq4/C,4BAA4B,EAAEth/C,GAAG,CAACki/C,UAAU,CAACn1/C,cAAa,IAAK6S,GAAGjX,UAAU05/C,aAAa,SAASh6/C,EAAED,EAAEE,GAAGoG,EAAEy6H,IAAI081C,QAAQ,8BAA8Br59C,EAAE8x9C,iBAAiBl29C,EAAE,IAAI,MAAMoE,EAAE8x9C,iBAAiBl29C,EAAE,IAAI,cAAcE,EAAE,IAAI,KAAK,WAAWkE,EAAE8x9C,iBAAiBl29C,EAAE,IAAI,EAAEwX,GAAGjX,UAAUozE,QAAQ,SAAS1zE,GAA0F,OAAvFY,KAAKq5/C,WAAWr5/C,KAAKqj+C,MAAM,IAAIrj+C,KAAKq5/C,WAAWr5/C,KAAKqj+C,MAAM,IAAUrj+C,KAAKwl/C,WAAWpm/C,EAAW,EAAEuX,GAAGjX,UAAU8l/C,WAAW,WAAW,GAAG,IAAIpl/C,UAAUC,OAAO,CAAC,IAAI,IAAIjB,EAAEgB,UAAU,GAAGjB,EAAE,EAAEA,EAAEa,KAAKk5/C,YAAYt0+C,OAAOzlB,IAAI,CAAC,IAAIE,EAAEW,KAAKk5/C,YAAY/1/C,IAAIhE,GAAG,IAAIa,KAAKwl/C,WAAWpm/C,EAAEC,GAAG,OAAOW,KAAKg5/C,iBAAiB35/C,GAAE,CAAE,CAAC,OAAM,CAAE,CAAC,GAAG,IAAIe,UAAUC,OAAO,CAAC,IAAIO,EAAER,UAAU,GAAGL,EAAEK,UAAU,GAAG,OAAOJ,KAAKymtC,UAAU,GAAGzmtC,KAAK+4/C,WAAW,GAAG5klC,YAAYp0a,GAAGC,KAAKymtC,UAAU,GAAGzmtC,KAAK+4/C,WAAW,GAAG5klC,YAAYp0a,GAAGC,KAAKymtC,UAAU,GAAGzmtC,KAAK+4/C,WAAW,GAAG5klC,YAAYp0a,KAAK4W,GAAG2i/C,YAAYt5/C,KAAKymtC,UAAUljtC,EAAE4x9C,WAAWn19C,KAAKu5/C,cAAc34/C,EAAEZ,KAAKymtC,UAAU,CAAC,EAAE9vsC,GAAGjX,UAAU25/C,WAAW,SAASj6/C,GAAG,IAAID,EAAE,IAAIsX,GAAGrX,GAAGY,KAAKk5/C,YAAYjlC,OAAO909C,EAAE2hO,UAAU,EAAE9gO,KAAKq4/C,4BAA4B,EAAE1h/C,GAAGjX,UAAU65/C,cAAc,SAASn6/C,EAAED,GAAG,IAAIE,EAAEyX,GAAGs4+C,aAAajw/C,EAAE,GAAGA,EAAE,GAAGC,GAAGwB,IAAIvB,EAAEF,EAAE,KAAKoE,EAAE2x9C,UAAU,OAAOt09C,GAAGZ,KAAKo5/C,aAAah6/C,EAAED,EAAEE,GAAGuB,CAAC,EAAE+V,GAAGjX,UAAU85/C,mBAAmB,WAAW,OAAOx5/C,KAAKg5/C,gBAAgB,EAAEri/C,GAAGjX,UAAUw09C,YAAY,WAAW,MAAM,EAAE,EAAEv98C,GAAGjX,UAAUon+B,SAAS,WAAW,OAAOnw9B,EAAE,EAAEA,GAAG2i/C,YAAY,SAASl6/C,EAAED,GAAG,IAAI,IAAIE,EAAE,EAAEA,EAAE,EAAEA,IAAI,GAAGD,EAAEC,KAAKF,EAAE,OAAM,EAAG,OAAM,CAAE,EAAEwX,GAAGwi/C,iCAAiC,SAAS/5/C,EAAED,GAAG,OAAO0D,KAAKgL,IAAI0T,GAAGkw+C,8BAA8Bry/C,GAAGmiB,GAAGkw+C,8BAA8Bty/C,GAAG,EAAEwX,GAAGm8D,QAAQ,SAAS1zE,EAAED,EAAEE,EAAEuB,GAAG,OAAO,IAAI+V,GAAGvX,EAAED,EAAEyB,GAAGkyE,QAAQzzE,EAAE,EAAE0X,GAAGki/C,UAAU91/C,IAAI,WAAW,OAAO,IAAI,EAAE7D,OAAOkU,iBAAiBmD,GAAGI,IAAI,IAAIU,GAAG,SAASrY,EAAED,GAAGa,KAAKy5/C,aAAa,KAAKz5/C,KAAK05/C,YAAW,EAAG15/C,KAAK25/C,YAAY,KAAK35/C,KAAKy5/C,aAAar6/C,EAAEw6/C,eAAez6/C,GAAGa,KAAK25/C,YAAYx6/C,CAAC,EAAEsY,GAAG/X,UAAUm6/C,gBAAgB,SAASz6/C,EAAED,GAAG,GAAG,OAAOC,EAAE,OAAO,KAAK,IAAI,IAAIC,EAAE,EAAEA,EAAED,EAAE+/9C,mBAAmB9/9C,IAAI,CAAC,IAAIuB,EAAExB,EAAEw/9C,aAAav/9C,GAAGW,KAAK05/C,YAAY94/C,EAAEynE,WAAWlpE,EAAEgmB,IAAIvkB,EAAE,CAAC,EAAE6W,GAAG/X,UAAUi7C,QAAQ,WAAW,IAAI,IAAIv7C,EAAE,IAAI6P,GAAG9P,EAAEa,KAAK25/C,YAAYh4/C,WAAWxC,EAAE2g+C,WAAW,CAAC,IAAIzg+C,EAAEF,EAAE4B,OAAOf,KAAK65/C,gBAAgBx6/C,EAAED,EAAE,CAAC,OAAO,IAAIA,EAAEwlB,OAAO,OAAO5kB,KAAKy5/C,aAAaz5/C,KAAKy5/C,aAAav/B,yBAAyB,MAAM,KAAKl69C,KAAKy5/C,aAAa3yB,cAAc1n+C,EAAE,EAAEqY,GAAG/X,UAAUw09C,YAAY,WAAW,MAAM,EAAE,EAAEz88C,GAAG/X,UAAUon+B,SAAS,WAAW,OAAOrv9B,EAAE,EAAEA,GAAGkjC,QAAQ,WAAW,OAAG,IAAIv6C,UAAUC,OAAkC,IAAIoX,GAAxBrX,UAAU,IAAoBu6C,UAAa,IAAIv6C,UAAUC,OAAiD,IAAIoX,GAAGA,GAAGspjC,WAA7C3gkC,UAAU,GAAKA,UAAU,KAAqCu6C,UAAa,IAAIv6C,UAAUC,OAAgE,IAAIoX,GAAGA,GAAGspjC,WAA5D3gkC,UAAU,GAAKA,UAAU,GAAKA,UAAU,KAAuCu6C,eAA9G,CAAwH,EAAEljC,GAAGmi/C,eAAe,SAASx6/C,GAAG,OAAOA,EAAEipE,UAAU,KAAKjpE,EAAEuC,WAAWZ,OAAO499C,YAAY,EAAEln9C,GAAGspjC,WAAW,WAAW,GAAG,IAAI3gkC,UAAUC,OAAO,CAAC,IAAIjB,EAAEgB,UAAU,GAAGjB,EAAEiB,UAAU,GAAGf,EAAE,IAAI4P,GAAG,OAAO5P,EAAE8lB,IAAI/lB,GAAGC,EAAE8lB,IAAIhmB,GAAGE,CAAC,CAAC,GAAG,IAAIe,UAAUC,OAAO,CAAC,IAAIO,EAAER,UAAU,GAAGL,EAAEK,UAAU,GAAGE,EAAEF,UAAU,GAAGU,EAAE,IAAImO,GAAG,OAAOnO,EAAEqkB,IAAIvkB,GAAGE,EAAEqkB,IAAIplB,GAAGe,EAAEqkB,IAAI7kB,GAAGQ,CAAC,CAAC,EAAE,IAAIoX,GAAG,WAAWlY,KAAK85/C,YAAY,KAAK95/C,KAAKy5/C,aAAa,KAAK,IAAIr6/C,EAAEgB,UAAU,GAAGJ,KAAK85/C,YAAY16/C,EAAE,OAAOY,KAAK85/C,cAAc95/C,KAAK85/C,YAAY,IAAI7q/C,GAAG,EAAEwJ,GAAG,CAACsh/C,sBAAsB,CAACj2/C,cAAa,IAAKoU,GAAGxY,UAAUs6/C,mBAAmB,SAAS56/C,GAAG,IAAI,IAAID,EAAE,IAAI8P,GAAG5P,EAAED,EAAEuC,WAAWtC,EAAEyg+C,WAAW,CAAC,IAAIl/9C,EAAEvB,EAAE0B,OAAOhB,EAAE,KAAKmE,EAAEtD,EAAEoN,IAAIjO,EAAEC,KAAKi6/C,UAAUr5/C,GAAGA,aAAa2K,KAAKxL,EAAEa,GAAGzB,EAAEgmB,IAAIplB,EAAE,CAAC,OAAOZ,CAAC,EAAE+Y,GAAGxY,UAAUw6/C,kBAAkB,SAAS96/C,EAAED,EAAEE,GAAG,IAAI,IAAIuB,EAAE,IAAIqO,GAAGlP,EAAE,EAAEA,EAAEZ,EAAEgg+C,mBAAmBp/9C,IAAI,CAAC,IAAIO,EAAEnB,EAAEy/9C,aAAa7+9C,GAAGO,EAAEk/9C,sBAAsBr5nC,WAAW/mW,GAAGwB,EAAEukB,IAAI7kB,GAAGjB,EAAE8lB,IAAI7kB,EAAE,CAAC,OAAON,KAAKy5/C,aAAa3yB,cAAclm+C,EAAE,EAAEsX,GAAGxY,UAAUy6/C,eAAe,SAAS/6/C,EAAED,GAAG,IAAIE,EAAED,EAAEog+C,sBAAsB5+9C,EAAEzB,EAAEqg+C,sBAAsB,IAAIng+C,EAAE8mW,WAAWvlW,GAAI,OAAO6W,GAAGkjC,QAAQv7C,EAAED,GAAG,GAAGC,EAAE+/9C,oBAAoB,GAAGhg+C,EAAEgg+C,oBAAoB,EAAE,OAAOn/9C,KAAKo6/C,YAAYh7/C,EAAED,GAAG,IAAIY,EAAEV,EAAE69L,aAAat8L,GAAG,OAAOZ,KAAKq6/C,+BAA+Bj7/C,EAAED,EAAEY,EAAE,EAAEmY,GAAGxY,UAAUsjL,MAAM,WAAW,GAAG,OAAOhjL,KAAK85/C,YAAY,MAAM,IAAIty+C,MAAM,yCAAyC,GAAGxnB,KAAK85/C,YAAYzx7C,UAAU,OAAO,KAAKroE,KAAKy5/C,aAAaz5/C,KAAK85/C,YAAYn4/C,WAAWZ,OAAO499C,aAAa,IAAI,IAAIv/9C,EAAE,IAAI2R,GAAGmH,GAAG6h/C,uBAAuB56/C,EAAEa,KAAK85/C,YAAYn4/C,WAAWxC,EAAE2g+C,WAAW,CAAC,IAAIzg+C,EAAEF,EAAE4B,OAAO3B,EAAE27P,OAAO17P,EAAEmg+C,sBAAsBng+C,EAAE,CAACW,KAAK85/C,YAAY,KAAK,IAAIl5/C,EAAExB,EAAEyz+C,YAAY,OAAO7y+C,KAAKi6/C,UAAUr5/C,EAAE,EAAEsX,GAAGxY,UAAU46/C,YAAY,WAAW,GAAG,IAAIl6/C,UAAUC,OAAO,CAAC,IAAIjB,EAAEgB,UAAU,GAAG,OAAOJ,KAAKs6/C,YAAYl7/C,EAAE,EAAEA,EAAEwlB,OAAO,CAAC,GAAG,IAAIxkB,UAAUC,OAAO,CAAC,IAAIlB,EAAEiB,UAAU,GAAGf,EAAEe,UAAU,GAAGQ,EAAER,UAAU,GAAG,GAAGQ,EAAEvB,GAAG,EAAE,CAAC,IAAIU,EAAEmY,GAAGqsJ,YAAYplK,EAAEE,GAAG,OAAOW,KAAKu6/C,UAAUx6/C,EAAE,KAAK,CAAC,GAAGa,EAAEvB,GAAG,EAAE,OAAOW,KAAKu6/C,UAAUri/C,GAAGqsJ,YAAYplK,EAAEE,GAAG6Y,GAAGqsJ,YAAYplK,EAAEE,EAAE,IAAI,IAAIiB,EAAEuC,KAAK2K,OAAO5M,EAAEvB,GAAG,GAAGyB,EAAEd,KAAKs6/C,YAAYn7/C,EAAEE,EAAEiB,GAAGU,EAAEhB,KAAKs6/C,YAAYn7/C,EAAEmB,EAAEM,GAAG,OAAOZ,KAAKu6/C,UAAUz5/C,EAAEE,EAAE,CAAC,EAAEkX,GAAGxY,UAAU86/C,cAAc,SAASp7/C,GAAG,IAAI,IAAID,EAAE,KAAKE,EAAED,EAAEuC,WAAWtC,EAAEyg+C,WAAW,CAAC,IAAIl/9C,EAAEvB,EAAE0B,OAAO5B,EAAE,OAAOA,EAAEyB,EAAEk/H,OAAO3gI,EAAE6jL,MAAMpiL,EAAE,CAAC,OAAOzB,CAAC,EAAE+Y,GAAGxY,UAAU66/C,UAAU,SAASn7/C,EAAED,GAAG,OAAO,OAAOC,GAAG,OAAOD,EAAE,KAAK,OAAOC,EAAED,EAAE2gI,OAAO,OAAO3gI,EAAEC,EAAE0gI,OAAO9/H,KAAKm6/C,eAAe/6/C,EAAED,EAAE,EAAE+Y,GAAGxY,UAAU06/C,YAAY,SAASh7/C,EAAED,GAAG,OAAO+Y,GAAGui/C,mBAAmBr7/C,EAAE4jL,MAAM7jL,GAAG,EAAE+Y,GAAGxY,UAAUu6/C,UAAU,SAAS76/C,GAAG,IAAID,EAAEa,KAAKg6/C,mBAAmB56/C,GAAG,OAAOY,KAAKs6/C,YAAYn7/C,EAAE,EAAE+Y,GAAGxY,UAAU26/C,+BAA+B,SAASj7/C,EAAED,EAAEE,GAAG,IAAIuB,EAAE,IAAIqO,GAAGlP,EAAEC,KAAKk6/C,kBAAkB76/C,EAAED,EAAEwB,GAAGN,EAAEN,KAAKk6/C,kBAAkB76/C,EAAEF,EAAEyB,GAAGE,EAAEd,KAAKo6/C,YAAYr6/C,EAAEO,GAAY,OAATM,EAAEukB,IAAIrkB,GAAU2W,GAAGkjC,QAAQ/5C,EAAE,EAAEsX,GAAGxY,UAAUg7/C,YAAY,WAAW,GAAG,IAAIt6/C,UAAUC,OAAO,CAAC,IAAIjB,EAAEgB,UAAU,GAAG,OAAOhB,EAAE+D,IAAI,GAAGw79C,aAAamI,cAAc1n+C,GAAG8oB,OAAO,EAAE,CAAC,GAAG,IAAI9nB,UAAUC,OAAO,CAAC,IAAIlB,EAAEiB,UAAU,GAAGf,EAAEe,UAAU,GAAG,OAAOjB,EAAEw/9C,aAAazE,yBAAyB,CAAC/69C,EAAEE,IAAI6oB,OAAO,EAAE,CAAC,EAAEhQ,GAAGxY,UAAUw09C,YAAY,WAAW,MAAM,EAAE,EAAEh88C,GAAGxY,UAAUon+B,SAAS,WAAW,OAAO5u9B,EAAE,EAAEA,GAAGui/C,mBAAmB,SAASr7/C,GAAG,GAAG8E,EAAE9E,EAAEoP,IAAI,OAAOpP,EAAE,IAAID,EAAEqhB,GAAG8w9C,YAAYly+C,GAAG,OAAO,IAAID,EAAEylB,OAAOzlB,EAAEgE,IAAI,GAAG/D,EAAEu/9C,aAAa1E,mBAAmB1x9C,GAAGy+9C,eAAe7n+C,GAAG,EAAE+Y,GAAGqsJ,YAAY,SAASnlK,EAAED,GAAG,OAAOA,GAAGC,EAAEwlB,OAAO,KAAKxlB,EAAE+D,IAAIhE,EAAE,EAAE+Y,GAAG8qK,MAAM,SAAS5jL,GAAG,OAAO,IAAI8Y,GAAG9Y,GAAG4jL,OAAO,EAAEvqK,GAAGsh/C,sBAAsB52/C,IAAI,WAAW,OAAO,CAAC,EAAE7D,OAAOkU,iBAAiB0E,GAAGO,IAAI,IAAIlB,GAAG,WAAW,EAAEA,GAAG7X,UAAUw09C,YAAY,WAAW,MAAM,EAAE,EAAE388C,GAAG7X,UAAUon+B,SAAS,WAAW,OAAOvv9B,EAAE,EAAEA,GAAGyrK,MAAM,SAAS5jL,EAAED,GAAG,GAAGC,EAAEipE,WAAWlpE,EAAEkpE,UAAU,CAAC,GAAGjpE,EAAEipE,WAAWlpE,EAAEkpE,UAAU,OAAOvxD,GAAG4g/C,kBAAkB5g/C,GAAGq8+C,MAAM/z/C,EAAED,EAAEC,EAAEu/9C,cAAc,GAAGv/9C,EAAEipE,UAAU,OAAOlpE,EAAE2gI,OAAO,GAAG3gI,EAAEkpE,UAAU,OAAOjpE,EAAE0gI,MAAM,CAAC,OAAO1gI,EAAEqg+C,2BAA2Brg+C,GAAGA,EAAEqg+C,2BAA2Btg+C,GAAGgW,GAAG+9+C,UAAU9z/C,EAAED,EAAE2X,GAAGq8+C,MAAM,EAAE/z/C,EAAE+2d,cAActsd,GAAGzK,EAAEm3d,cAAcztd,GAAG1J,EAAEu7/C,UAAU7j/C,GAAG1X,EAAEw7/C,QAAQrj/C,GAAGnY,EAAEg3d,SAASz4c,GAAGre,OAAO4D,eAAe9D,EAAE,aAAa,CAAC+B,OAAM,GAAI,CAA91yUhC,CAAEsD,iEC4EtE,SAASo4/C,EAAY7m8C,EAAO8m8C,EAASC,GACnC,OAAK/m8C,EAAM8m8C,GAcJ9m8C,EAAM8m8C,GAAS,GAAK9m8C,EAAM8m8C,GAAS,GAAGC,GAG7C/m8C,EAAM8m8C,GAASC,GAhBG,mBAAZD,EAMK9m8C,EAAM+gZ,YAAyB,eAAbgmjC,EAA4B,QAAU,eAGjE,CAQJ,CAEA,SAASC,EAAkB3+8C,QACZ,IAATA,IACFA,EAAO,CAAC,GAMV,IAAIpe,EAAWoe,EAAKpe,SAChBg99C,GAAc,IAAA389C,aAAOyP,GACzBkt9C,EAAYl79C,QAAU9B,EACtB,IAAIglB,EAAQ5G,EAAK4G,OAASpgD,KAAKogD,MAE3Bi48C,GAAoB,IAAA589C,UAEpBog1C,GAAY,IAAA5mnC,UAAS,CACvB/4N,WAAOgP,EACP/O,YAAQ+O,IAENnpB,EAAO851C,EAAU,GACjB3X,EAAU2X,EAAU,GAIpBy8I,GAAa,IAAA789C,SAAO,IACxB,IAAAgD,YAAU,WAER,OADA659C,EAAWp79C,SAAU,EACd,WACLo79C,EAAWp79C,SAAU,CACvB,CACF,GAAG,IAEH,IAAIjb,GAAW,IAAAwZ,QAAO,CACpBS,WAAOgP,EACP/O,YAAQ+O,IAKNqt9C,EApIN,SAA4Bt22C,EAAYu22C,GACtC,IAAIC,GAAgB,IAAAh99C,QAAO,MACvBi99C,GAAkB,IAAAj99C,QAAO,MAC7Bi99C,EAAgBx79C,QAAUs79C,EAC1B,IAAIG,GAAe,IAAAl99C,QAAO,OAG1B,IAAAgD,YAAU,WACRm69C,GACF,IACA,IAAIA,GAAuB,IAAA3zlB,cAAY,WACrC,IAAI4zlB,EAAYF,EAAaz79C,QACzBs79C,EAAeE,EAAgBx79C,QAE/BgsD,EAAU2v6C,IAAwBL,EAAeA,aAAwBxp6C,QAAUwp6C,EAAeA,EAAat79C,QAAU,MAEzHu79C,EAAcv79C,SAAWu79C,EAAcv79C,QAAQgsD,UAAYA,GAAWuv6C,EAAcv79C,QAAQ+kH,aAAeA,IAI3Gw22C,EAAcv79C,SAAWu79C,EAAcv79C,QAAQkxF,SACjDqq4C,EAAcv79C,QAAQkxF,UAGxBqq4C,EAAcv79C,QAAU,CACtBgsD,QAASA,EACT+4D,WAAYA,EAGZ7zB,QAASllC,EAAU+4D,EAAW/4D,QAAWh+C,GAE7C,GAAG,CAAC+2G,IAUJ,OARA,IAAAxjH,YAAU,WACR,OAAO,WACDg69C,EAAcv79C,SAAWu79C,EAAcv79C,QAAQkxF,UACjDqq4C,EAAcv79C,QAAQkxF,UACtBqq4C,EAAcv79C,QAAU,KAE5B,CACF,GAAG,KACI,IAAA+n4B,cAAY,SAAU/70B,GAC3Byv6C,EAAaz79C,QAAUgsD,EACvB0v6C,GACF,GAAG,CAACA,GACN,CAuFoBE,EAAmB,IAAA7zlB,cAAY,SAAU/70B,GAsCzD,OAnCKmv6C,EAAkBn79C,SAAWm79C,EAAkBn79C,QAAQ6iK,MAAQvmJ,EAAKumJ,KAAOs4zC,EAAkBn79C,QAAQkjB,QAAUA,IAClHi48C,EAAkBn79C,QAAU,CAC1B6iK,IAAKvmJ,EAAKumJ,IACV3/I,MAAOA,EACP/3B,SAAU,IAAI83E,gBAAe,SAAUvmF,GACrC,IAAIu3C,EAAQv3C,EAAQ,GAChBq++C,EAAuB,eAAbz+8C,EAAKumJ,IAAuB,gBAA+B,6BAAbvmJ,EAAKumJ,IAAqC,4BAA8B,iBAChIg5zC,EAAgBf,EAAY7m8C,EAAO8m8C,EAAS,cAC5Ce,EAAiBhB,EAAY7m8C,EAAO8m8C,EAAS,aAC7C562C,EAAW072C,EAAgB348C,EAAM248C,QAAiB7t9C,EAClDqyG,EAAYy72C,EAAiB548C,EAAM448C,QAAkB9t9C,EAEzD,GAAIjpB,EAASib,QAAQhB,QAAUmhH,GAAYp7H,EAASib,QAAQf,SAAWohH,EAAW,CAChF,IAAIgmB,EAAU,CACZrnI,MAAOmhH,EACPlhH,OAAQohH,GAEVt7H,EAASib,QAAQhB,MAAQmhH,EACzBp7H,EAASib,QAAQf,OAASohH,EAEtB662C,EAAYl79C,QACdk79C,EAAYl79C,QAAQqmI,GAEf+01C,EAAWp79C,SACdgn0C,EAAQ3gsC,EAGd,CACF,MAIJ801C,EAAkBn79C,QAAQ7U,SAAS4lD,QAAQib,EAAS,CAClD62G,IAAKvmJ,EAAKumJ,MAEL,WACDs4zC,EAAkBn79C,SACpBm79C,EAAkBn79C,QAAQ7U,SAAS+vvB,UAAUlvrB,EAEjD,CACF,GAAG,CAAC1vC,EAAKumJ,IAAK3/I,IAAS5G,EAAKza,KAC5B,OAAO,IAAA6M,UAAQ,WACb,MAAO,CACL7M,IAAKw59C,EACLr89C,MAAOna,EAAKma,MACZC,OAAQpa,EAAKoa,OAEjB,GAAG,CAACo89C,EAAax2+C,EAAKma,MAAOna,EAAKoa,QACpC,iDC3LA,MACA,GACE889C,WAFmC,oBAAXnt+C,QAA0BA,OAAOmt+C,YAAcnt+C,OAAOmt+C,WAAWz4/C,KAAKsrB,SCGhG,IAAIM,EACJ,MAAM8s+C,EAAQ,IAAIp8+C,WAAW,IACd,SAASq8+C,IAEtB,IAAK/s+C,IAEHA,EAAoC,oBAAXN,QAA0BA,OAAOM,iBAAmBN,OAAOM,gBAAgB5rB,KAAKsrB,SAEpGM,GACH,MAAM,IAAIzH,MAAM,4GAIpB,OAAOyH,EAAgB8s+C,EACzB,CCXA,MAAME,EAAY,GAElB,IAAK,IAAIr7/C,EAAI,EAAGA,EAAI,MAAOA,EACzBq7/C,EAAUp6/C,MAAMjB,EAAI,KAAO2D,SAAS,IAAIxC,MAAM,ICmBhD,QAxBA,SAAYonB,EAASm9tC,EAAKnksC,GACxB,GAAI,EAAO258C,aAAex1Q,IAAQn9tC,EAChC,OAAO,EAAO2y+C,aAIhB,MAAMI,GADN/y+C,EAAUA,GAAW,CAAC,GACD9gB,SAAW8gB,EAAQ6y+C,KAAOA,KAK/C,GAHAE,EAAK,GAAe,GAAVA,EAAK,GAAY,GAC3BA,EAAK,GAAe,GAAVA,EAAK,GAAY,IAEvB51Q,EAAK,CACPnksC,EAASA,GAAU,EAEnB,IAAK,IAAIvhD,EAAI,EAAGA,EAAI,KAAMA,EACxB0lvC,EAAInksC,EAASvhD,GAAKs7/C,EAAKt7/C,GAGzB,OAAO0lvC,CACT,CAEA,ODbK,SAAyB7nhC,EAAKt8K,EAAS,GAG5C,OAAO858C,EAAUx9xC,EAAIt8K,EAAS,IAAM858C,EAAUx9xC,EAAIt8K,EAAS,IAAM858C,EAAUx9xC,EAAIt8K,EAAS,IAAM858C,EAAUx9xC,EAAIt8K,EAAS,IAAM,IAAM858C,EAAUx9xC,EAAIt8K,EAAS,IAAM858C,EAAUx9xC,EAAIt8K,EAAS,IAAM,IAAM858C,EAAUx9xC,EAAIt8K,EAAS,IAAM858C,EAAUx9xC,EAAIt8K,EAAS,IAAM,IAAM858C,EAAUx9xC,EAAIt8K,EAAS,IAAM858C,EAAUx9xC,EAAIt8K,EAAS,IAAM,IAAM858C,EAAUx9xC,EAAIt8K,EAAS,KAAO858C,EAAUx9xC,EAAIt8K,EAAS,KAAO858C,EAAUx9xC,EAAIt8K,EAAS,KAAO858C,EAAUx9xC,EAAIt8K,EAAS,KAAO858C,EAAUx9xC,EAAIt8K,EAAS,KAAO858C,EAAUx9xC,EAAIt8K,EAAS,IAChf,CCSSg68C,CAAgBD,EACzB,mnBCrBAp/9C,EAAOr6B,QALP,SAAgCtD,GAC9B,OAAOA,GAAKA,EAAEmD,WAAanD,EAAI,CAC7B,QAAWA,EAEf,EACyC29B,EAAOr6B,QAAQH,YAAa,EAAMw6B,EAAOr6B,QAAiB,QAAIq6B,EAAOr6B,mBCL9G,SAAS0gX,EAAQ7iX,GAGf,OAAOw8B,EAAOr6B,QAAU0gX,EAAU,mBAAqBzhX,QAAU,iBAAmBA,OAAOC,SAAW,SAAUrB,GAC9G,cAAcA,CAChB,EAAI,SAAUA,GACZ,OAAOA,GAAK,mBAAqBoB,QAAUpB,EAAEL,cAAgByB,QAAUpB,IAAMoB,OAAOhC,UAAY,gBAAkBY,CACpH,EAAGw8B,EAAOr6B,QAAQH,YAAa,EAAMw6B,EAAOr6B,QAAiB,QAAIq6B,EAAOr6B,QAAS0gX,EAAQ7iX,EAC3F,CACAw8B,EAAOr6B,QAAU0gX,EAASrmV,EAAOr6B,QAAQH,YAAa,EAAMw6B,EAAOr6B,QAAiB,QAAIq6B,EAAOr6B,sCCR/F,IAAI25/C,EAAa,EAAQ,OACrBC,EAAc,EAAQ,OAEtBC,EAAaz8/C,UAGjBi9B,EAAOr6B,QAAU,SAAU6xW,GACzB,GAAI8npC,EAAW9npC,GAAW,OAAOA,EACjC,MAAM,IAAIgopC,EAAWD,EAAY/npC,GAAY,qBAC/C,gCCTA,IAAIrvG,EAAW,EAAQ,OAEnBs3vC,EAAUz8/C,OACVw8/C,EAAaz8/C,UAGjBi9B,EAAOr6B,QAAU,SAAU6xW,GACzB,GAAIrvG,EAASqvG,GAAW,OAAOA,EAC/B,MAAM,IAAIgopC,EAAWC,EAAQjopC,GAAY,oBAC3C,gCCTA,IAAIkopC,EAAkB,EAAQ,OAC1BC,EAAkB,EAAQ,OAC1BC,EAAoB,EAAQ,OAG5B9j0B,EAAe,SAAU+j0B,GAC3B,OAAO,SAAUC,EAAO/i3C,EAAIywX,GAC1B,IAAItmgB,EAAIw4/C,EAAgBI,GACpBv8/C,EAASq8/C,EAAkB14/C,GAC/B,GAAe,IAAX3D,EAAc,OAAQs8/C,IAAgB,EAC1C,IACIx7/C,EADA6b,EAAQy/+C,EAAgBny/B,EAAWjqgB,GAIvC,GAAIs8/C,GAAe9i3C,GAAOA,GAAI,KAAOx5I,EAAS2c,GAG5C,IAFA7b,EAAQ6C,EAAEgZ,OAEI7b,EAAO,OAAO,OAEvB,KAAMd,EAAS2c,EAAOA,IAC3B,IAAK2/+C,GAAe3/+C,KAAShZ,IAAMA,EAAEgZ,KAAW68H,EAAI,OAAO8i3C,GAAe3/+C,GAAS,EACnF,OAAQ2/+C,IAAgB,CAC5B,CACF,EAEA7/9C,EAAOr6B,QAAU,CAGf2L,SAAUwqrB,GAAa,GAGvBp4rB,QAASo4rB,GAAa,kCC/BxB,IAAIik0B,EAAc,EAAQ,OAE1B//9C,EAAOr6B,QAAUo6/C,EAAY,GAAG96/C,qCCFhC,IAAI86/C,EAAc,EAAQ,OAEtBt4/C,EAAWs4/C,EAAY,CAAC,EAAEt4/C,UAC1Bu4/C,EAAcD,EAAY,GAAG96/C,OAEjC+6B,EAAOr6B,QAAU,SAAU6I,GACzB,OAAOwx/C,EAAYv4/C,EAAS+G,GAAK,GAAI,EACvC,gCCPA,IAAIpD,EAAS,EAAQ,OACjBmtX,EAAU,EAAQ,OAClB0noC,EAAiC,EAAQ,OACzCC,EAAuB,EAAQ,OAEnClg+C,EAAOr6B,QAAU,SAAUqN,EAAQjI,EAAQ0oK,GAIzC,IAHA,IAAIj9J,EAAO+hX,EAAQxtX,GACf3E,EAAiB85/C,EAAqBt6/C,EACtCe,EAA2Bs5/C,EAA+Br6/C,EACrD9B,EAAI,EAAGA,EAAI0S,EAAKjT,OAAQO,IAAK,CACpC,IAAIikB,EAAMvR,EAAK1S,GACVsH,EAAO4H,EAAQ+U,IAAU0rJ,GAAcroK,EAAOqoK,EAAY1rJ,IAC7D3hB,EAAe4M,EAAQ+U,EAAKphB,EAAyBoE,EAAQgd,GAEjE,CACF,gCCfA,IAAIo4+C,EAAc,EAAQ,OACtBD,EAAuB,EAAQ,OAC/BE,EAA2B,EAAQ,MAEvCpg+C,EAAOr6B,QAAUw6/C,EAAc,SAAU7/8C,EAAQv4B,EAAK1jB,GACpD,OAAO67/C,EAAqBt6/C,EAAE06C,EAAQv4B,EAAKq4+C,EAAyB,EAAG/7/C,GACzE,EAAI,SAAUi8C,EAAQv4B,EAAK1jB,GAEzB,OADAi8C,EAAOv4B,GAAO1jB,EACPi8C,CACT,yBCTAtgB,EAAOr6B,QAAU,SAAUyqO,EAAQ/rO,GACjC,MAAO,CACLwC,aAAuB,EAATupO,GACdppO,eAAyB,EAATopO,GAChBnpO,WAAqB,EAATmpO,GACZ/rO,MAAOA,EAEX,gCCPA,IAAIg8/C,EAAc,EAAQ,OACtBj6/C,EAAiB,EAAQ,OAE7B45B,EAAOr6B,QAAU,SAAUqN,EAAQpF,EAAM2gD,GAGvC,OAFIA,EAAWloD,KAAKg6/C,EAAY9x8C,EAAWloD,IAAKuH,EAAM,CAAEgC,QAAQ,IAC5D2+C,EAAWp/C,KAAKkx/C,EAAY9x8C,EAAWp/C,IAAKvB,EAAM,CAAEiC,QAAQ,IACzDzJ,EAAeR,EAAEoN,EAAQpF,EAAM2gD,EACxC,gCCPA,IAAI+w8C,EAAa,EAAQ,OACrBY,EAAuB,EAAQ,OAC/BG,EAAc,EAAQ,OACtBC,EAAuB,EAAQ,OAEnCtg+C,EAAOr6B,QAAU,SAAUuB,EAAG6gB,EAAK1jB,EAAOgoB,GACnCA,IAASA,EAAU,CAAC,GACzB,IAAIk0+C,EAASl0+C,EAAQxlB,WACjB+G,OAAwBqjC,IAAjB5kB,EAAQze,KAAqBye,EAAQze,KAAOma,EAEvD,GADIu3+C,EAAWj7/C,IAAQg8/C,EAAYh8/C,EAAOuJ,EAAMye,GAC5CA,EAAQpc,OACNsw/C,EAAQr5/C,EAAE6gB,GAAO1jB,EAChBi8/C,EAAqBv4+C,EAAK1jB,OAC1B,CACL,IACOgoB,EAAQnc,OACJhJ,EAAE6gB,KAAMw4+C,GAAS,UADEr5/C,EAAE6gB,EAEhC,CAAE,MAAO/iB,GAAqB,CAC1Bu7/C,EAAQr5/C,EAAE6gB,GAAO1jB,EAChB67/C,EAAqBt6/C,EAAEsB,EAAG6gB,EAAK,CAClC1jB,MAAOA,EACPwC,YAAY,EACZG,cAAeqlB,EAAQlc,gBACvBlJ,UAAWolB,EAAQjc,aAEvB,CAAE,OAAOlJ,CACX,gCC1BA,IAAI/B,EAAa,EAAQ,OAGrBiB,EAAiB5D,OAAO4D,eAE5B45B,EAAOr6B,QAAU,SAAUoiB,EAAK1jB,GAC9B,IACE+B,EAAejB,EAAY4iB,EAAK,CAAE1jB,MAAOA,EAAO2C,cAAc,EAAMC,UAAU,GAChF,CAAE,MAAOjC,GACPG,EAAW4iB,GAAO1jB,CACpB,CAAE,OAAOA,CACX,gCCXA,IAAIm8/C,EAAQ,EAAQ,OAGpBxg+C,EAAOr6B,SAAW66/C,GAAM,WAEtB,OAA+E,IAAxEh+/C,OAAO4D,eAAe,CAAC,EAAG,EAAG,CAAEC,IAAK,WAAc,OAAO,CAAG,IAAK,EAC1E,iCCNA,IAAIlB,EAAa,EAAQ,OACrBgjQ,EAAW,EAAQ,OAEnB9/P,EAAWlD,EAAWkD,SAEtBqF,EAASy6P,EAAS9/P,IAAa8/P,EAAS9/P,EAASmE,eAErDwzB,EAAOr6B,QAAU,SAAU6I,GACzB,OAAOd,EAASrF,EAASmE,cAAcgC,GAAM,CAAC,CAChD,0BCRAwxB,EAAOr6B,QAAU,CACf,cACA,iBACA,gBACA,uBACA,iBACA,WACA,yCCRF,IAAI62B,EAAY,EAAQ,OAGxBwD,EAAOr6B,QAAU,qCAAqC4I,KAAKiuB,iCCH3D,IAAIik+C,EAAc,EAAQ,OAE1Bzg+C,EAAOr6B,QAA0B,SAAhB86/C,gCCFjB,IAEIlk+C,EAFa,EAAQ,OAEEA,UACvBC,EAAYD,GAAaA,EAAUC,UAEvCwD,EAAOr6B,QAAU62B,EAAYx5B,OAAOw5B,GAAa,iCCLjD,IAOI7yB,EAAOH,EAPPrE,EAAa,EAAQ,OACrBq3B,EAAY,EAAQ,OAEpBrzB,EAAUhE,EAAWgE,QACrBE,EAAOlE,EAAWkE,KAClBE,EAAWJ,GAAWA,EAAQI,UAAYF,GAAQA,EAAKG,QACvDE,EAAKH,GAAYA,EAASG,GAG1BA,IAIFF,GAHAG,EAAQD,EAAG5B,MAAM,MAGD,GAAK,GAAK6B,EAAM,GAAK,EAAI,IAAMA,EAAM,GAAKA,EAAM,MAK7DH,GAAWgzB,MACd7yB,EAAQ6yB,EAAU7yB,MAAM,iBACVA,EAAM,IAAM,MACxBA,EAAQ6yB,EAAU7yB,MAAM,oBACbH,GAAWG,EAAM,IAIhCq2B,EAAOr6B,QAAU6D,gCCzBjB,IAAIrE,EAAa,EAAQ,OACrBq3B,EAAY,EAAQ,OACpBkk+C,EAAU,EAAQ,OAElBC,EAAsB,SAAU1g/C,GAClC,OAAOuc,EAAUv3B,MAAM,EAAGgb,EAAO1c,UAAY0c,CAC/C,EAEA+f,EAAOr6B,QACDg7/C,EAAoB,QAAgB,MACpCA,EAAoB,sBAA8B,aAClDA,EAAoB,SAAiB,OACrCA,EAAoB,YAAoB,OACxCx7/C,EAAWy7/C,KAA6B,iBAAfA,IAAIp3/C,QAA4B,MACzDrE,EAAWkE,MAA+B,iBAAhBA,KAAKG,QAA4B,OAC3B,YAAhCk3/C,EAAQv7/C,EAAWgE,SAA+B,OAClDhE,EAAWC,QAAUD,EAAWkD,SAAiB,UAC9C,qCClBT,IAAIlD,EAAa,EAAQ,OACrBwB,EAA2B,WAC3Bk6/C,EAA8B,EAAQ,OACtCC,EAAgB,EAAQ,OACxBR,EAAuB,EAAQ,OAC/BS,EAA4B,EAAQ,OACpCC,EAAW,EAAQ,OAiBvBhh+C,EAAOr6B,QAAU,SAAU0mB,EAASthB,GAClC,IAGYiI,EAAQ+U,EAAKk5+C,EAAgBC,EAAgB3y8C,EAHrD4y8C,EAAS90+C,EAAQrZ,OACjBy/hC,EAASpmhC,EAAQpc,OACjBmx/C,EAAS/0+C,EAAQpZ,KASrB,GANED,EADEy/hC,EACOttiC,EACAi8/C,EACAj8/C,EAAWg8/C,IAAWb,EAAqBa,EAAQ,CAAC,GAEpDh8/C,EAAWg8/C,IAAWh8/C,EAAWg8/C,GAAQv+/C,UAExC,IAAKmlB,KAAOhd,EAAQ,CAQ9B,GAPAm2/C,EAAiBn2/C,EAAOgd,GAGtBk5+C,EAFE50+C,EAAQnZ,gBACVq7C,EAAa5nD,EAAyBqM,EAAQ+U,KACfwmC,EAAWlqD,MACpB2O,EAAO+U,IACtBi5+C,EAASvud,EAAS1qhC,EAAMo5+C,GAAUC,EAAS,IAAM,KAAOr5+C,EAAKsE,EAAQlZ,cAE5C89B,IAAnBgw9C,EAA8B,CAC3C,UAAWC,UAAyBD,EAAgB,SACpDF,EAA0BG,EAAgBD,EAC5C,EAEI50+C,EAAQviB,MAASm3/C,GAAkBA,EAAen3/C,OACpD+2/C,EAA4BK,EAAgB,QAAQ,GAEtDJ,EAAc9t/C,EAAQ+U,EAAKm5+C,EAAgB70+C,EAC7C,CACF,0BCrDA2T,EAAOr6B,QAAU,SAAU2P,GACzB,IACE,QAASA,GACX,CAAE,MAAOtQ,GACP,OAAO,CACT,CACF,gCCNA,IAAIq8/C,EAAc,EAAQ,OAEtBC,EAAoBr7/C,SAASrD,UAC7Ba,EAAQ69/C,EAAkB79/C,MAC1BX,EAAOw+/C,EAAkBx+/C,KAG7Bk9B,EAAOr6B,QAA4B,iBAAX+V,SAAuBA,QAAQjY,QAAU49/C,EAAcv+/C,EAAKyD,KAAK9C,GAAS,WAChG,OAAOX,EAAKW,MAAMA,EAAOH,UAC3B,iCCTA,IAAIy8/C,EAAc,EAAQ,OACtBwB,EAAY,EAAQ,OACpBF,EAAc,EAAQ,OAEtB96/C,EAAOw5/C,EAAYA,EAAYx5/C,MAGnCy5B,EAAOr6B,QAAU,SAAUyO,EAAIyS,GAE7B,OADA06+C,EAAUnt/C,QACM68B,IAATpqB,EAAqBzS,EAAKit/C,EAAc96/C,EAAK6N,EAAIyS,GAAQ,WAC9D,OAAOzS,EAAG3Q,MAAMojB,EAAMvjB,UACxB,CACF,gCCZA,IAAIk9/C,EAAQ,EAAQ,OAEpBxg+C,EAAOr6B,SAAW66/C,GAAM,WAEtB,IAAIjy/C,EAAO,WAA4B,EAAEhI,OAEzC,MAAsB,mBAARgI,GAAsBA,EAAK1L,eAAe,YAC1D,kCCPA,IAAIw+/C,EAAc,EAAQ,OAEtBv+/C,EAAOmD,SAASrD,UAAUE,KAE9Bk9B,EAAOr6B,QAAU07/C,EAAcv+/C,EAAKyD,KAAKzD,GAAQ,WAC/C,OAAOA,EAAKW,MAAMX,EAAMQ,UAC1B,gCCNA,IAAI68/C,EAAc,EAAQ,OACtB/0/C,EAAS,EAAQ,OAEjBk2/C,EAAoBr7/C,SAASrD,UAE7B4+/C,EAAgBrB,GAAe39/C,OAAOmE,yBAEtC+G,EAAStC,EAAOk2/C,EAAmB,QAEnC3z/C,EAASD,GAA0D,cAAhD,WAAqC,EAAEE,KAC1DC,EAAeH,KAAYyy/C,GAAgBA,GAAeqB,EAAcF,EAAmB,QAAQt6/C,cAEvGg5B,EAAOr6B,QAAU,CACf+H,OAAQA,EACRC,OAAQA,EACRE,aAAcA,iCCfhB,IAAI4z/C,EAAa,EAAQ,OACrB1B,EAAc,EAAQ,OAE1B//9C,EAAOr6B,QAAU,SAAUyO,GAIzB,GAAuB,aAAnBqt/C,EAAWrt/C,GAAoB,OAAO2r/C,EAAY3r/C,EACxD,gCCRA,IAAIit/C,EAAc,EAAQ,OAEtBC,EAAoBr7/C,SAASrD,UAC7BE,EAAOw+/C,EAAkBx+/C,KACzB4+/C,EAAsBL,GAAeC,EAAkB/6/C,KAAKA,KAAKzD,EAAMA,GAE3Ek9B,EAAOr6B,QAAU07/C,EAAcK,EAAsB,SAAUtt/C,GAC7D,OAAO,WACL,OAAOtR,EAAKW,MAAM2Q,EAAI9Q,UACxB,CACF,gCCVA,IAAI6B,EAAa,EAAQ,OACrBm6/C,EAAa,EAAQ,OAMzBt/9C,EAAOr6B,QAAU,SAAUg8/C,EAAWhu+C,GACpC,OAAOrwB,UAAUC,OAAS,GALFi0W,EAKgBryW,EAAWw8/C,GAJ5CrC,EAAW9npC,GAAYA,OAAWvmU,GAIwB9rC,EAAWw8/C,IAAcx8/C,EAAWw8/C,GAAWhu+C,GALlG,IAAU6jV,CAM1B,gCCTA,IAAI+ppC,EAAY,EAAQ,OACpBK,EAAoB,EAAQ,OAIhC5h+C,EAAOr6B,QAAU,SAAUmD,EAAGd,GAC5B,IAAIi7C,EAAOn6C,EAAEd,GACb,OAAO45/C,EAAkB3+8C,QAAQhS,EAAYsw9C,EAAUt+8C,EACzD,sCCRA,IAAIyhS,EAAQ,SAAUl2U,GACpB,OAAOA,GAAMA,EAAGzI,OAASA,MAAQyI,CACnC,EAGAwxB,EAAOr6B,QAEL++U,EAA2B,iBAAdv/U,YAA0BA,aACvCu/U,EAAuB,iBAAVt/U,QAAsBA,SAEnCs/U,EAAqB,iBAARp/U,MAAoBA,OACjCo/U,EAAuB,iBAAV,EAAAr/U,GAAsB,EAAAA,IACnCq/U,EAAqB,iBAARxhV,MAAoBA,OAEjC,WAAe,OAAOA,IAAO,CAA7B,IAAoC+C,SAAS,cAATA,iCCdtC,IAAI85/C,EAAc,EAAQ,OACtBzkqC,EAAW,EAAQ,OAEnBz4V,EAAiBk9/C,EAAY,CAAC,EAAEl9/C,gBAKpCm9B,EAAOr6B,QAAUnD,OAAO4I,QAAU,SAAgBoD,EAAIuZ,GACpD,OAAOllB,EAAey4V,EAAS9sV,GAAKuZ,EACtC,0BCVAiY,EAAOr6B,QAAU,CAAC,gCCAlB,IAAIk8/C,EAAa,EAAQ,OAEzB7h+C,EAAOr6B,QAAUk8/C,EAAW,WAAY,iDCFxC,IAAI1B,EAAc,EAAQ,OACtBK,EAAQ,EAAQ,OAChBh0/C,EAAgB,EAAQ,MAG5BwzB,EAAOr6B,SAAWw6/C,IAAgBK,GAAM,WAEtC,OAES,IAFFh+/C,OAAO4D,eAAeoG,EAAc,OAAQ,IAAK,CACtDnG,IAAK,WAAc,OAAO,CAAG,IAC5BnC,CACL,kCCVA,IAAI67/C,EAAc,EAAQ,OACtBS,EAAQ,EAAQ,OAChBE,EAAU,EAAQ,OAElBoB,EAAUt//C,OACVsF,EAAQi4/C,EAAY,GAAGj4/C,OAG3Bk4B,EAAOr6B,QAAU66/C,GAAM,WAGrB,OAAQsB,EAAQ,KAAKl+/C,qBAAqB,EAC5C,IAAK,SAAU4K,GACb,MAAuB,WAAhBky/C,EAAQly/C,GAAmB1G,EAAM0G,EAAI,IAAMsz/C,EAAQtz/C,EAC5D,EAAIsz/C,gCCdJ,IAAI/B,EAAc,EAAQ,OACtBT,EAAa,EAAQ,OACrBrtzC,EAAQ,EAAQ,OAEhB8vzC,EAAmBhC,EAAY95/C,SAASwB,UAGvC63/C,EAAWrtzC,EAAMlkM,iBACpBkkM,EAAMlkM,cAAgB,SAAUS,GAC9B,OAAOuz/C,EAAiBvz/C,EAC1B,GAGFwxB,EAAOr6B,QAAUssM,EAAMlkM,4CCbvB,IAYIoB,EAAK9I,EAAK4I,EAZV+y/C,EAAkB,EAAQ,OAC1B78/C,EAAa,EAAQ,OACrBgjQ,EAAW,EAAQ,OACnB04vC,EAA8B,EAAQ,OACtCz1/C,EAAS,EAAQ,OACjB8h1C,EAAS,EAAQ,OACjB+0K,EAAY,EAAQ,OACpBC,EAAa,EAAQ,OAErBC,EAA6B,6BAC7Bp//C,EAAYoC,EAAWpC,UACvBsL,EAAUlJ,EAAWkJ,QAgBzB,GAAI2z/C,GAAmB90K,EAAOr+0C,MAAO,CACnC,IAAIojM,EAAQi7oC,EAAOr+0C,QAAUq+0C,EAAOr+0C,MAAQ,IAAIR,GAEhD4jM,EAAM5rM,IAAM4rM,EAAM5rM,IAClB4rM,EAAMhjM,IAAMgjM,EAAMhjM,IAClBgjM,EAAM9iM,IAAM8iM,EAAM9iM,IAElBA,EAAM,SAAUX,EAAI2sK,GAClB,GAAI82B,EAAMhjM,IAAIT,GAAK,MAAM,IAAIzL,EAAUo//C,GAGvC,OAFAhn1C,EAAS/rK,OAASZ,EAClByjM,EAAM9iM,IAAIX,EAAI2sK,GACPA,CACT,EACA90K,EAAM,SAAUmI,GACd,OAAOyjM,EAAM5rM,IAAImI,IAAO,CAAC,CAC3B,EACAS,EAAM,SAAUT,GACd,OAAOyjM,EAAMhjM,IAAIT,EACnB,CACF,KAAO,CACL,IAAI4z/C,EAAQH,EAAU,SACtBC,EAAWE,IAAS,EACpBjz/C,EAAM,SAAUX,EAAI2sK,GAClB,GAAI/vK,EAAOoD,EAAI4z/C,GAAQ,MAAM,IAAIr//C,EAAUo//C,GAG3C,OAFAhn1C,EAAS/rK,OAASZ,EAClBqy/C,EAA4Bry/C,EAAI4z/C,EAAOjn1C,GAChCA,CACT,EACA90K,EAAM,SAAUmI,GACd,OAAOpD,EAAOoD,EAAI4z/C,GAAS5z/C,EAAG4z/C,GAAS,CAAC,CAC1C,EACAnz/C,EAAM,SAAUT,GACd,OAAOpD,EAAOoD,EAAI4z/C,EACpB,CACF,CAEApi+C,EAAOr6B,QAAU,CACfwJ,IAAKA,EACL9I,IAAKA,EACL4I,IAAKA,EACLM,QArDY,SAAUf,GACtB,OAAOS,EAAIT,GAAMnI,EAAImI,GAAMW,EAAIX,EAAI,CAAC,EACtC,EAoDEgB,UAlDc,SAAU6y/C,GACxB,OAAO,SAAU7z/C,GACf,IAAIK,EACJ,IAAKs5P,EAAS35P,KAAQK,EAAQxI,EAAImI,IAAKiB,OAAS4y/C,EAC9C,MAAM,IAAIt//C,EAAU,0BAA4Bs//C,EAAO,aACvD,OAAOxz/C,CACX,CACF,2BCxBA,IAAIyz/C,EAAiC,iBAAZj6/C,UAAwBA,SAASC,IAK1D03B,EAAOr6B,aAAgC,IAAf28/C,QAA8Crx9C,IAAhBqx9C,EAA4B,SAAU9qpC,GAC1F,MAA0B,mBAAZA,GAA0BA,IAAa8qpC,CACvD,EAAI,SAAU9qpC,GACZ,MAA0B,mBAAZA,CAChB,gCCVA,IAAIgppC,EAAQ,EAAQ,OAChBlB,EAAa,EAAQ,OAErB1gwC,EAAc,kBAEdoiwC,EAAW,SAAU3r7C,EAASkt7C,GAChC,IAAIl+/C,EAAQqO,EAAKF,EAAU6iE,IAC3B,OAAOhxE,IAAUuO,GACbvO,IAAUsO,IACV2s/C,EAAWiD,GAAa/B,EAAM+B,KAC5BA,EACR,EAEI/v/C,EAAYwu/C,EAASxu/C,UAAY,SAAUyN,GAC7C,OAAOjd,OAAOid,GAAQtQ,QAAQivP,EAAa,KAAKnsP,aAClD,EAEIC,EAAOsu/C,EAAStu/C,KAAO,CAAC,EACxBC,EAASqu/C,EAASru/C,OAAS,IAC3BC,EAAWou/C,EAASpu/C,SAAW,IAEnCotB,EAAOr6B,QAAUq7/C,0BCnBjBhh+C,EAAOr6B,QAAU,SAAU6I,GACzB,OAAOA,OACT,gCCJA,IAAI8w/C,EAAa,EAAQ,OAEzBt/9C,EAAOr6B,QAAU,SAAU6I,GACzB,MAAoB,iBAANA,EAAwB,OAAPA,EAAc8w/C,EAAW9w/C,EAC1D,0BCJAwxB,EAAOr6B,SAAU,gCCAjB,IAAIk8/C,EAAa,EAAQ,OACrBvC,EAAa,EAAQ,OACrBt2/C,EAAgB,EAAQ,MACxBw5/C,EAAoB,EAAQ,MAE5BV,EAAUt//C,OAEdw9B,EAAOr6B,QAAU68/C,EAAoB,SAAUh0/C,GAC7C,MAAoB,iBAANA,CAChB,EAAI,SAAUA,GACZ,IAAIi0/C,EAAUZ,EAAW,UACzB,OAAOvC,EAAWmD,IAAYz5/C,EAAcy5/C,EAAQ7//C,UAAWk//C,EAAQtz/C,GACzE,gCCZA,IAAIi+H,EAAW,EAAQ,OAIvBzsG,EAAOr6B,QAAU,SAAUyqN,GACzB,OAAO3jF,EAAS2jF,EAAI7sN,OACtB,gCCNA,IAAIw8/C,EAAc,EAAQ,OACtBS,EAAQ,EAAQ,OAChBlB,EAAa,EAAQ,OACrBl0/C,EAAS,EAAQ,OACjB+0/C,EAAc,EAAQ,OACtBuC,EAA6B,sBAC7B30/C,EAAgB,EAAQ,OACxB40/C,EAAsB,EAAQ,OAE9BC,EAAuBD,EAAoBpz/C,QAC3Csz/C,EAAmBF,EAAoBt8/C,IACvCo5/C,EAAUz8/C,OAEVoD,EAAiB5D,OAAO4D,eACxB45/C,EAAcD,EAAY,GAAG96/C,OAC7B0K,EAAUow/C,EAAY,GAAGpw/C,SACzBI,EAAOgw/C,EAAY,GAAGhw/C,MAEtB+y/C,EAAsB3C,IAAgBK,GAAM,WAC9C,OAAsF,IAA/Ep6/C,GAAe,WAA0B,GAAG,SAAU,CAAE/B,MAAO,IAAKd,MAC7E,IAEI8ojB,EAAWrpjB,OAAOA,QAAQ8E,MAAM,UAEhCu4/C,EAAcrg+C,EAAOr6B,QAAU,SAAUtB,EAAOuJ,EAAMye,GACf,YAArC2z+C,EAAYP,EAAQ7x/C,GAAO,EAAG,KAChCA,EAAO,IAAM+B,EAAQ8v/C,EAAQ7x/C,GAAO,wBAAyB,MAAQ,KAEnEye,GAAWA,EAAQzc,SAAQhC,EAAO,OAASA,GAC3Cye,GAAWA,EAAQxc,SAAQjC,EAAO,OAASA,KAC1CxC,EAAO/G,EAAO,SAAYq+/C,GAA8Br+/C,EAAMuJ,OAASA,KACtEuy/C,EAAa/5/C,EAAe/B,EAAO,OAAQ,CAAEA,MAAOuJ,EAAM5G,cAAc,IACvE3C,EAAMuJ,KAAOA,GAEhBk1/C,GAAuBz2+C,GAAWjhB,EAAOihB,EAAS,UAAYhoB,EAAMd,SAAW8oB,EAAQvc,OACzF1J,EAAe/B,EAAO,SAAU,CAAEA,MAAOgoB,EAAQvc,QAEnD,IACMuc,GAAWjhB,EAAOihB,EAAS,gBAAkBA,EAAQlpB,YACnDg9/C,GAAa/5/C,EAAe/B,EAAO,YAAa,CAAE4C,UAAU,IAEvD5C,EAAMzB,YAAWyB,EAAMzB,eAAYquC,EAChD,CAAE,MAAOjsC,GAAqB,CAC9B,IAAI6J,EAAQ+z/C,EAAqBv+/C,GAG/B,OAFG+G,EAAOyD,EAAO,YACjBA,EAAM9D,OAASgF,EAAKs8iB,EAAyB,iBAARz+iB,EAAmBA,EAAO,KACxDvJ,CACX,EAIA4B,SAASrD,UAAU6E,SAAW44/C,GAAY,WACxC,OAAOf,EAAWp8/C,OAAS2//C,EAAiB3//C,MAAM6H,QAAUgD,EAAc7K,KAC5E,GAAG,oCCrDH,IAAIoN,EAAOvK,KAAKuK,KACZE,EAAQzK,KAAKyK,MAKjBwvB,EAAOr6B,QAAUI,KAAK2K,OAAS,SAAevJ,GAC5C,IAAI5E,GAAK4E,EACT,OAAQ5E,EAAI,EAAIiO,EAAQF,GAAM/N,EAChC,gCCTA,IAAI49/C,EAAc,EAAQ,OACtB4C,EAAiB,EAAQ,OACzBC,EAA0B,EAAQ,OAClCC,EAAW,EAAQ,OACnBrnnC,EAAgB,EAAQ,OAExB4jnC,EAAaz8/C,UAEbmggD,EAAkB1ggD,OAAO4D,eAEzB+8/C,EAA4B3ggD,OAAOmE,yBACnCy8/C,EAAa,aACbv1/C,EAAe,eACfw1/C,EAAW,WAIf19/C,EAAQC,EAAIu6/C,EAAc6C,EAA0B,SAAwB97/C,EAAGc,EAAGs7/C,GAIhF,GAHAL,EAAS/7/C,GACTc,EAAI4zY,EAAc5zY,GAClBi7/C,EAASK,GACQ,mBAANp8/C,GAA0B,cAANc,GAAqB,UAAWs7/C,GAAcD,KAAYC,IAAeA,EAAWD,GAAW,CAC5H,IAAIpg+C,EAAUkg+C,EAA0Bj8/C,EAAGc,GACvCi7B,GAAWA,EAAQog+C,KACrBn8/C,EAAEc,GAAKs7/C,EAAWj//C,MAClBi//C,EAAa,CACXt8/C,aAAc6G,KAAgBy1/C,EAAaA,EAAWz1/C,GAAgBo1B,EAAQp1B,GAC9EhH,WAAYu8/C,KAAcE,EAAaA,EAAWF,GAAcng+C,EAAQmg+C,GACxEn8/C,UAAU,GAGhB,CAAE,OAAOi8/C,EAAgBh8/C,EAAGc,EAAGs7/C,EACjC,EAAIJ,EAAkB,SAAwBh8/C,EAAGc,EAAGs7/C,GAIlD,GAHAL,EAAS/7/C,GACTc,EAAI4zY,EAAc5zY,GAClBi7/C,EAASK,GACLP,EAAgB,IAClB,OAAOG,EAAgBh8/C,EAAGc,EAAGs7/C,EAC/B,CAAE,MAAOt+/C,GAAqB,CAC9B,GAAI,QAASs+/C,GAAc,QAASA,EAAY,MAAM,IAAI9D,EAAW,2BAErE,MADI,UAAW8D,IAAYp8/C,EAAEc,GAAKs7/C,EAAWj//C,OACtC6C,CACT,gCC1CA,IAAIi5/C,EAAc,EAAQ,OACtBr9/C,EAAO,EAAQ,OACfyggD,EAA6B,EAAQ,OACrCnD,EAA2B,EAAQ,MACnCV,EAAkB,EAAQ,OAC1B9jnC,EAAgB,EAAQ,OACxBxwY,EAAS,EAAQ,OACjB23/C,EAAiB,EAAQ,OAGzBI,EAA4B3ggD,OAAOmE,yBAIvChB,EAAQC,EAAIu6/C,EAAcgD,EAA4B,SAAkCj8/C,EAAGc,GAGzF,GAFAd,EAAIw4/C,EAAgBx4/C,GACpBc,EAAI4zY,EAAc5zY,GACd+6/C,EAAgB,IAClB,OAAOI,EAA0Bj8/C,EAAGc,EACtC,CAAE,MAAOhD,GAAqB,CAC9B,GAAIoG,EAAOlE,EAAGc,GAAI,OAAOo4/C,GAA0Bt9/C,EAAKyggD,EAA2B39/C,EAAGsB,EAAGc,GAAId,EAAEc,GACjG,gCCrBA,IAAIw7/C,EAAqB,EAAQ,OAG7BtB,EAFc,EAAQ,OAEGh9/C,OAAO,SAAU,aAK9CS,EAAQC,EAAIpD,OAAOqP,qBAAuB,SAA6B3K,GACrE,OAAOs8/C,EAAmBt8/C,EAAGg7/C,EAC/B,8BCTAv8/C,EAAQC,EAAIpD,OAAOmB,mDCDnB,IAAIo8/C,EAAc,EAAQ,OAE1B//9C,EAAOr6B,QAAUo6/C,EAAY,CAAC,EAAE/2/C,6CCFhC,IAAI+2/C,EAAc,EAAQ,OACtB30/C,EAAS,EAAQ,OACjBs0/C,EAAkB,EAAQ,OAC1Bh8/C,EAAU,iBACVw+/C,EAAa,EAAQ,OAErBn9/C,EAAOg7/C,EAAY,GAAGh7/C,MAE1Bi7B,EAAOr6B,QAAU,SAAU26C,EAAQ4zkB,GACjC,IAGInsmB,EAHA7gB,EAAIw4/C,EAAgBp/8C,GACpBx8C,EAAI,EACJ4iB,EAAS,GAEb,IAAKqB,KAAO7gB,GAAIkE,EAAO82/C,EAAYn6+C,IAAQ3c,EAAOlE,EAAG6gB,IAAQhjB,EAAK2hB,EAAQqB,GAE1E,KAAOmsmB,EAAM3wnB,OAASO,GAAOsH,EAAOlE,EAAG6gB,EAAMmsmB,EAAMpwnB,SAChDJ,EAAQgjB,EAAQqB,IAAQhjB,EAAK2hB,EAAQqB,IAExC,OAAOrB,CACT,8BCnBA,IAAI+8+C,EAAwB,CAAC,EAAE7//C,qBAE3B+C,EAA2BnE,OAAOmE,yBAGlC+8/C,EAAc/8/C,IAA6B88/C,EAAsB3ggD,KAAK,CAAE,EAAG,GAAK,GAIpF6C,EAAQC,EAAI89/C,EAAc,SAA8B56/C,GACtD,IAAIylD,EAAa5nD,EAAyBzD,KAAM4F,GAChD,QAASylD,GAAcA,EAAW1nD,UACpC,EAAI48/C,gCCZJ,IAAI3ggD,EAAO,EAAQ,OACfw8/C,EAAa,EAAQ,OACrBn3vC,EAAW,EAAQ,OAEnBq3vC,EAAaz8/C,UAIjBi9B,EAAOr6B,QAAU,SAAUguD,EAAOgw8C,GAChC,IAAIvv/C,EAAIwsK,EACR,GAAa,WAAT+i1C,GAAqBrE,EAAWlr/C,EAAKu/C,EAAMlsD,YAAc0gQ,EAASvnF,EAAM99K,EAAKsR,EAAIu/C,IAAS,OAAOitH,EACrG,GAAI0+0C,EAAWlr/C,EAAKu/C,EAAMvnD,WAAa+7P,EAASvnF,EAAM99K,EAAKsR,EAAIu/C,IAAS,OAAOitH,EAC/E,GAAa,WAAT+i1C,GAAqBrE,EAAWlr/C,EAAKu/C,EAAMlsD,YAAc0gQ,EAASvnF,EAAM99K,EAAKsR,EAAIu/C,IAAS,OAAOitH,EACrG,MAAM,IAAI4+0C,EAAW,0CACvB,gCCdA,IAAIqC,EAAa,EAAQ,OACrB9B,EAAc,EAAQ,OACtB6D,EAA4B,EAAQ,OACpCC,EAA8B,EAAQ,OACtCZ,EAAW,EAAQ,OAEnB/9/C,EAAS66/C,EAAY,GAAG76/C,QAG5B86B,EAAOr6B,QAAUk8/C,EAAW,UAAW,YAAc,SAAiBrz/C,GACpE,IAAIgI,EAAOot/C,EAA0Bh+/C,EAAEq9/C,EAASz0/C,IAC5C7K,EAAwBkggD,EAA4Bj+/C,EACxD,OAAOjC,EAAwBuB,EAAOsR,EAAM7S,EAAsB6K,IAAOgI,CAC3E,gCCbA,IAAIys/C,EAAW,EAAQ,OAIvBjj+C,EAAOr6B,QAAU,WACf,IAAIkhB,EAAOo8+C,EAAS///C,MAChBwjB,EAAS,GASb,OARIG,EAAKi9+C,aAAYp9+C,GAAU,KAC3BG,EAAK5W,SAAQyW,GAAU,KACvBG,EAAK02B,aAAY72B,GAAU,KAC3BG,EAAK22B,YAAW92B,GAAU,KAC1BG,EAAKk9+C,SAAQr9+C,GAAU,KACvBG,EAAK62B,UAASh3B,GAAU,KACxBG,EAAKm9+C,cAAat9+C,GAAU,KAC5BG,EAAK42B,SAAQ/2B,GAAU,KACpBA,CACT,gCChBA,IAAIk7+C,EAAoB,EAAQ,OAE5BpC,EAAaz8/C,UAIjBi9B,EAAOr6B,QAAU,SAAU6I,GACzB,GAAIoz/C,EAAkBpz/C,GAAK,MAAM,IAAIgx/C,EAAW,wBAA0Bhx/C,GAC1E,OAAOA,CACT,gCCTA,IAWMhF,EAXFrE,EAAa,EAAQ,OACrB1B,EAAQ,EAAQ,OAChB67/C,EAAa,EAAQ,OACrBmB,EAAc,EAAQ,OACtBwD,EAAa,EAAQ,OACrB77iB,EAAa,EAAQ,OACrB87iB,EAA0B,EAAQ,OAElCj+/C,EAAWd,EAAWc,SAEtBk+/C,EAAO,WAAW51/C,KAAK01/C,IAA+B,QAAhBxD,KACpCj3/C,EAAUrE,EAAWy7/C,IAAIp3/C,QAAQ1B,MAAM,MAC5BvE,OAAS,GAAoB,MAAfiG,EAAQ,KAAeA,EAAQ,GAAK,GAAoB,MAAfA,EAAQ,IAA6B,MAAfA,EAAQ,KAMtGw2B,EAAOr6B,QAAU,SAAU0ohC,EAAW+1e,GACpC,IAAIC,EAAkBD,EAAa,EAAI,EACvC,OAAOD,EAAO,SAAUjx8C,EAAS5+B,GAC/B,IAAIgw+C,EAAYJ,EAAwB5ggD,UAAUC,OAAQ,GAAK8ggD,EAC3Djw/C,EAAKkr/C,EAAWps8C,GAAWA,EAAUjtD,EAASitD,GAC9C3nB,EAAS+49C,EAAYl8iB,EAAW9k9B,UAAW+ggD,GAAmB,GAC9Dj4+C,EAAWk4+C,EAAY,WACzB7ggD,EAAM2Q,EAAIlR,KAAMqoC,EAClB,EAAIn3B,EACJ,OAAOgw/C,EAAa/1e,EAAUjigC,EAAUkI,GAAW+5/B,EAAUjigC,EAC/D,EAAIiigC,CACN,gCC7BA,IAAI6+T,EAAS,EAAQ,OACjB52/B,EAAM,EAAQ,OAEd9/U,EAAO020C,EAAO,QAElBltzC,EAAOr6B,QAAU,SAAUoiB,GACzB,OAAOvR,EAAKuR,KAASvR,EAAKuR,GAAOuuU,EAAIvuU,GACvC,gCCPA,IAAIw8+C,EAAU,EAAQ,OAClBp//C,EAAa,EAAQ,OACrBm7/C,EAAuB,EAAQ,OAE/BkE,EAAS,qBACTvyzC,EAAQjyK,EAAOr6B,QAAUR,EAAWq//C,IAAWlE,EAAqBkE,EAAQ,CAAC,IAEhFvyzC,EAAM1oM,WAAa0oM,EAAM1oM,SAAW,KAAKxE,KAAK,CAC7CyE,QAAS,SACToB,KAAM25/C,EAAU,OAAS,SACzB15/C,UAAW,4CACXC,QAAS,2DACTC,OAAQ,sECZV,IAAIknM,EAAQ,EAAQ,OAEpBjyK,EAAOr6B,QAAU,SAAUoiB,EAAK1jB,GAC9B,OAAO4tM,EAAMlqL,KAASkqL,EAAMlqL,GAAO1jB,GAAS,CAAC,EAC/C,+BCHA,IAAIoggD,EAAa,EAAQ,OACrBjE,EAAQ,EAAQ,OAGhBf,EAFa,EAAQ,OAEAz8/C,OAGzBg9B,EAAOr6B,UAAYnD,OAAOmB,wBAA0B68/C,GAAM,WACxD,IAAIpjgC,EAASx4f,OAAO,oBAKpB,OAAQ66/C,EAAQrigC,MAAa56f,OAAO46f,aAAmBx4f,UAEpDA,OAAOkF,MAAQ26/C,GAAcA,EAAa,EAC/C,kCCjBA,IAuBIC,EAAWrvO,EAAOxm+B,EAASi1nB,EAvB3B3+6B,EAAa,EAAQ,OACrB1B,EAAQ,EAAQ,OAChB8C,EAAO,EAAQ,OACf+4/C,EAAa,EAAQ,OACrBl0/C,EAAS,EAAQ,OACjBo1/C,EAAQ,EAAQ,OAChBtj3C,EAAO,EAAQ,OACfkr0B,EAAa,EAAQ,OACrB578B,EAAgB,EAAQ,MACxB03/C,EAA0B,EAAQ,OAClCS,EAAS,EAAQ,OACjBC,EAAU,EAAQ,OAElBz1/C,EAAMhK,EAAWmlB,aACjBpC,EAAQ/iB,EAAW0//C,eACnB17/C,EAAUhE,EAAWgE,QACrB27/C,EAAW3//C,EAAW2//C,SACtB7+/C,EAAWd,EAAWc,SACtByuB,EAAiBvvB,EAAWuvB,eAC5B1xB,EAASmC,EAAWnC,OACpB2sJ,EAAU,EACVjuG,EAAQ,CAAC,EACTqj9C,EAAqB,qBAGzBvE,GAAM,WAEJkE,EAAYv//C,EAAW80B,QACzB,IAEA,IAAIkjE,EAAM,SAAU1uE,GAClB,GAAIrjB,EAAOs2C,EAAOjzB,GAAK,CACrB,IAAIra,EAAKstC,EAAMjzB,UACRizB,EAAMjzB,GACbra,GACF,CACF,EAEI4w/C,EAAS,SAAUv2+C,GACrB,OAAO,WACL0uE,EAAI1uE,EACN,CACF,EAEIm4E,EAAgB,SAAUjlE,GAC5Bw7D,EAAIx7D,EAAMjvB,KACZ,EAEIuy/C,EAAyB,SAAUx2+C,GAErCtpB,EAAW0vB,YAAY7xB,EAAOyrB,GAAKi2+C,EAAUxq+C,SAAW,KAAOwq+C,EAAU3n8C,KAC3E,EAGK5tD,GAAQ+Y,IACX/Y,EAAM,SAAsB+jD,GAC1Bgx8C,EAAwB5ggD,UAAUC,OAAQ,GAC1C,IAAI6Q,EAAKkr/C,EAAWps8C,GAAWA,EAAUjtD,EAASitD,GAC9C3Y,EAAO6t6B,EAAW9k9B,UAAW,GAKjC,OAJAo+C,IAAQiuG,GAAW,WACjBlsJ,EAAM2Q,OAAI68B,EAAWsJ,EACvB,EACA86uC,EAAM1loC,GACCA,CACT,EACAznI,EAAQ,SAAwBuG,UACvBizB,EAAMjzB,EACf,EAEIm2+C,EACFvvO,EAAQ,SAAU5mwC,GAChBtlB,EAAQ656B,SAASgilB,EAAOv2+C,GAC1B,EAESq2+C,GAAYA,EAASn2+C,IAC9B0mwC,EAAQ,SAAU5mwC,GAChBq2+C,EAASn2+C,IAAIq2+C,EAAOv2+C,GACtB,EAGSiG,IAAmBiw+C,GAE5B7glB,GADAj1nB,EAAU,IAAIn6R,GACCI,MACf+5R,EAAQl6R,MAAMC,UAAYgyE,EAC1ByurC,EAAQ9uxC,EAAKu96B,EAAKjv5B,YAAaiv5B,IAI/B3+6B,EAAW0qB,kBACXyv+C,EAAWn6/C,EAAW0vB,eACrB1vB,EAAW0+R,eACZ6guC,GAAoC,UAAvBA,EAAUxq+C,WACtBsm+C,EAAMyE,IAEP5vO,EAAQ4vO,EACR9//C,EAAW0qB,iBAAiB,UAAW+2E,GAAe,IAGtDyurC,EADS0vO,KAAsBv4/C,EAAc,UACrC,SAAUiiB,GAChByuH,EAAKzlI,YAAYjL,EAAc,WAAWu4/C,GAAsB,WAC9D7n3C,EAAKn9G,YAAY78B,MACjBi6F,EAAI1uE,EACN,CACF,EAGQ,SAAUA,GAChB1F,WAAWi8+C,EAAOv2+C,GAAK,EACzB,GAIJuR,EAAOr6B,QAAU,CACfwJ,IAAKA,EACL+Y,MAAOA,iCClHT,IAAIg9+C,EAAsB,EAAQ,OAE9Br0/C,EAAM9K,KAAK8K,IACXE,EAAMhL,KAAKgL,IAKfivB,EAAOr6B,QAAU,SAAUua,EAAO3c,GAChC,IAAIyyT,EAAUkvsC,EAAoBhl/C,GAClC,OAAO81S,EAAU,EAAInlT,EAAImlT,EAAUzyT,EAAQ,GAAKwN,EAAIilT,EAASzyT,EAC/D,gCCVA,IAAI4hgD,EAAgB,EAAQ,OACxBC,EAAyB,EAAQ,OAErCpl+C,EAAOr6B,QAAU,SAAU6I,GACzB,OAAO22/C,EAAcC,EAAuB52/C,GAC9C,gCCNA,IAAIkC,EAAQ,EAAQ,OAIpBsvB,EAAOr6B,QAAU,SAAU6xW,GACzB,IAAIvqN,GAAUuqN,EAEd,OAAOvqN,GAAWA,GAAqB,IAAXA,EAAe,EAAIv8I,EAAMu8I,EACvD,gCCRA,IAAIi42C,EAAsB,EAAQ,OAE9Bn0/C,EAAMhL,KAAKgL,IAIfivB,EAAOr6B,QAAU,SAAU6xW,GACzB,IAAIz1O,EAAMmj4C,EAAoB1tpC,GAC9B,OAAOz1O,EAAM,EAAIhxH,EAAIgxH,EAAK,kBAAoB,CAChD,gCCTA,IAAIqj4C,EAAyB,EAAQ,OAEjCtD,EAAUt//C,OAIdw9B,EAAOr6B,QAAU,SAAU6xW,GACzB,OAAOsqpC,EAAQsD,EAAuB5tpC,GACxC,gCCRA,IAAI10W,EAAO,EAAQ,OACfqlQ,EAAW,EAAQ,OACnB2mgC,EAAW,EAAQ,OACnBu2P,EAAY,EAAQ,OACpBC,EAAsB,EAAQ,OAC9BC,EAAkB,EAAQ,OAE1B/F,EAAaz8/C,UACbyigD,EAAeD,EAAgB,eAInCvl+C,EAAOr6B,QAAU,SAAUguD,EAAOgw8C,GAChC,IAAKx7vC,EAASx0M,IAAUm7sC,EAASn7sC,GAAQ,OAAOA,EAChD,IACIjtC,EADA+++C,EAAeJ,EAAU1x8C,EAAO6x8C,GAEpC,GAAIC,EAAc,CAGhB,QAFax09C,IAAT0y9C,IAAoBA,EAAO,WAC/Bj9+C,EAAS5jB,EAAK2igD,EAAc9x8C,EAAOgw8C,IAC9Bx7vC,EAASzhP,IAAWoovC,EAASpovC,GAAS,OAAOA,EAClD,MAAM,IAAI84+C,EAAW,0CACvB,CAEA,YADavu9C,IAAT0y9C,IAAoBA,EAAO,UACxB2B,EAAoB3x8C,EAAOgw8C,EACpC,gCCxBA,IAAI1j+C,EAAc,EAAQ,OACtB6uuC,EAAW,EAAQ,OAIvB9uuC,EAAOr6B,QAAU,SAAU6xW,GACzB,IAAIzvV,EAAMkY,EAAYu3U,EAAU,UAChC,OAAOs35B,EAAS/mvC,GAAOA,EAAMA,EAAM,EACrC,0BCRA,IAAI03+C,EAAUz8/C,OAEdg9B,EAAOr6B,QAAU,SAAU6xW,GACzB,IACE,OAAOiopC,EAAQjopC,EACjB,CAAE,MAAOxyW,GACP,MAAO,QACT,CACF,gCCRA,IAAI+6/C,EAAc,EAAQ,OAEtBtx+C,EAAK,EACLi3+C,EAAU3//C,KAAKwF,SACf9D,EAAWs4/C,EAAY,GAAIt4/C,UAE/Bu4B,EAAOr6B,QAAU,SAAUoiB,GACzB,MAAO,gBAAqBkpB,IAARlpB,EAAoB,GAAKA,GAAO,KAAOtgB,IAAWgnB,EAAKi3+C,EAAS,GACtF,+BCPA,IAAIC,EAAgB,EAAQ,MAE5B3l+C,EAAOr6B,QAAUgggD,IACd/ggD,OAAOkF,MACkB,iBAAnBlF,OAAOC,uCCLhB,IAAIs7/C,EAAc,EAAQ,OACtBK,EAAQ,EAAQ,OAIpBxg+C,EAAOr6B,QAAUw6/C,GAAeK,GAAM,WAEpC,OAGiB,KAHVh+/C,OAAO4D,gBAAe,WAA0B,GAAG,YAAa,CACrE/B,MAAO,GACP4C,UAAU,IACTrE,SACL,4BCXA,IAAI48/C,EAAaz8/C,UAEjBi9B,EAAOr6B,QAAU,SAAUiggD,EAAQzn7C,GACjC,GAAIyn7C,EAASzn7C,EAAU,MAAM,IAAIqh7C,EAAW,wBAC5C,OAAOoG,CACT,gCCLA,IAAIzggD,EAAa,EAAQ,OACrBm6/C,EAAa,EAAQ,OAErBjx/C,EAAUlJ,EAAWkJ,QAEzB2xB,EAAOr6B,QAAU25/C,EAAWjx/C,IAAY,cAAcE,KAAKvL,OAAOqL,kCCLlE,IAAIlJ,EAAa,EAAQ,OACrB+n1C,EAAS,EAAQ,OACjB9h1C,EAAS,EAAQ,OACjBkrV,EAAM,EAAQ,OACdqvqC,EAAgB,EAAQ,MACxBnD,EAAoB,EAAQ,MAE5B59/C,EAASO,EAAWP,OACpBihgD,EAAwB34K,EAAO,OAC/B44K,EAAwBtD,EAAoB59/C,EAAY,KAAKA,EAASA,GAAUA,EAAOmH,eAAiBuqV,EAE5Gt2T,EAAOr6B,QAAU,SAAUiI,GAKvB,OAJGxC,EAAOy6/C,EAAuBj4/C,KACjCi4/C,EAAsBj4/C,GAAQ+3/C,GAAiBv6/C,EAAOxG,EAAQgJ,GAC1DhJ,EAAOgJ,GACPk4/C,EAAsB,UAAYl4/C,IAC/Bi4/C,EAAsBj4/C,EACjC,gCCjBA,IAAIzI,EAAa,EAAQ,OACrBg7/C,EAAc,EAAQ,OACtB4F,EAAwB,EAAQ,OAChCC,EAAc,EAAQ,OACtBxF,EAAQ,EAAQ,OAGhBv19C,EAAS9lC,EAAW8lC,OACpBg79C,EAAkBh79C,EAAOroC,UAEhBu9/C,GAAeK,GAAM,WAChC,IAAI0F,GAAkB,EACtB,IACEj79C,EAAO,IAAK,IACd,CAAE,MAAOjmC,GACPkhgD,GAAkB,CACpB,CAEA,IAAIh//C,EAAI,CAAC,EAEL60yC,EAAQ,GACRoqN,EAAWD,EAAkB,SAAW,QAExCE,EAAY,SAAUr++C,EAAK40e,GAE7Bn6f,OAAO4D,eAAec,EAAG6gB,EAAK,CAAE1hB,IAAK,WAEnC,OADA01yC,GAASp/yB,GACF,CACT,GACF,EAEIwjxB,EAAQ,CACV4jP,OAAQ,IACR9z/C,OAAQ,IACRstC,WAAY,IACZC,UAAW,IACXC,OAAQ,KAKV,IAAK,IAAI11B,KAFLm++C,IAAiB/lP,EAAM2jP,WAAa,KAExB3jP,EAAOimP,EAAUr++C,EAAKo4vC,EAAMp4vC,IAK5C,OAFavlB,OAAOmE,yBAAyBs//C,EAAiB,SAAS5//C,IAAIvD,KAAKoE,KAE9Di//C,GAAYpqN,IAAUoqN,CAC1C,KAIYJ,EAAsBE,EAAiB,QAAS,CAC1Dj//C,cAAc,EACdX,IAAK2//C,kCCrDP,IAAI18/C,EAAI,EAAQ,OACZnE,EAAa,EAAQ,OACrB0//C,EAAiB,eAIrBv7/C,EAAE,CAAE2G,QAAQ,EAAM1J,MAAM,EAAMM,YAAY,EAAMsM,OAAQhO,EAAW0//C,iBAAmBA,GAAkB,CACtGA,eAAgBA,kCCNlB,EAAQ,OACR,EAAQ,qCCFR,IAAIv7/C,EAAI,EAAQ,OACZnE,EAAa,EAAQ,OACrBkhgD,EAAU,aACVC,EAAgB,EAAQ,OAGxBh8+C,EAAenlB,EAAWmlB,aAAeg8+C,EAAcD,GAAS,GAASA,EAI7E/8/C,EAAE,CAAE2G,QAAQ,EAAM1J,MAAM,EAAMM,YAAY,EAAMsM,OAAQhO,EAAWmlB,eAAiBA,GAAgB,CAClGA,aAAcA,kCCZH9nB,OAAO4D,eAAeT,EAAtB,cAA4CtB,OAAM,IAAOsB,EAAQ4ggD,YAAY5ggD,EAAQ6ggD,KAAK7ggD,EAAQ8ggD,yBAAyB9ggD,EAAQ+ggD,gBAAgB/ggD,EAAQghgD,mBAAmBhhgD,EAAQ8kX,WAAM,EAAO,MAAMm8oC,EAAO,EAAQ,MAAQpkgD,OAAO4D,eAAeT,EAAtB,SAAuCkB,YAAW,EAAKR,IAAI,WAAW,OAAOuggD,EAAOn8oC,KAAK,IAAqf9kX,EAAQghgD,mBAAhe,CAAC/q6C,EAAQl/C,KAAY,MAAMmq9C,EAAwB,CAACjr6C,EAAQlwD,KAAc,MAAMrnC,EAAMu3F,EAAQlwD,EAAW,IAAI,OAAuB,IAApBA,EAAWnoC,OAAmBc,QAA6BA,EAAM,GAAMA,SAAgD,iBAARA,GAAiC,kBAARA,GAAkC,iBAARA,GAAkBA,aAAiBqqB,KAAY,GAAUm4+C,EAAwBxigD,EAAMqnC,EAAWzmC,MAAM,GAAE,EAASymC,EAAWgR,EAAS50C,MAAM,KAAK,OAAO++/C,EAAwBjr6C,EAAQlwD,EAAU,EAA6U/lC,EAAQ+ggD,gBAA9Q,CAAC9q6C,EAAQm/I,KAAW,MAAM+rxC,EAAa,CAAC,EAAyM,OAAvM/rxC,EAAQ3yN,SAAQ46B,IAAkC,mBAAfA,EAAO3+C,MAAoByigD,EAAa9j9C,EAAOz+C,OAAOy+C,EAAO3+C,MAAMu3F,GAAckr6C,EAAa9j9C,EAAOz+C,QAAO,EAAGoB,EAAQghgD,oBAAoB/q6C,EAAQ54C,EAAO3+C,MAAM,IAAWyigD,GAAsD,MAAkdC,EAAsBxxkC,IAAY,IAAI17Z,EAAG,MAAMmt+C,EAAYJ,EAAOn8oC,MAAMw8oC,aAAsC,QAAxBpt+C,EAAG07Z,EAAU,eAAsB,IAAL17Z,EAAYA,EAAG,IAAUysb,EAAU,GAAG,IAAI,IAAIj/c,EAAE2//C,EAAYhjgD,EAAED,EAAEsD,GAAG2//C,EAAY3kgD,EAAE0B,EAAEsD,IAAI,CAAC,MAAM6//C,EAAQN,EAAOn8oC,MAAM08oC,WAAW9//C,GAAGi/c,EAAUvhd,KAAKmigD,EAAQ,CAAC,OAAO5gjC,GAAq5B3gd,EAAQ8ggD,yBAAvlB,CAAClxkC,EAAU6xkC,EAAY,IAAyBL,EAAsBxxkC,GAAgChja,KAAIywB,IAAic,CAAC/gB,MAAvaz/B,OAAOgU,KAAK++a,GAAWxla,QAAO07U,GAAcA,EAAK97V,QAAQ,SAAS,MAAMqzC,IAAwCpsB,QAAO,CAACw8I,EAAS6jD,KAAU,MAAMw0I,EAAK8pF,EAAUt+N,GAAcowyC,EAA5jB,iBAA5B/m9C,EAA0nBmrT,EAAKtlW,GAAllBm6C,EAAO/8C,OAA0B,iBAAT+8C,EAA0BA,EAAO74C,WAAWlE,OAA0B,kBAAT+8C,EAA2BA,EAAO,EAAc,EAAkBA,aAAkB5xB,KAAa4xB,EAAO74C,WAAWlE,OAAc,EAAnQ+8C,MAAkoB,IAAImrT,EAAK5iW,EAAG,OAAO9C,KAAK8K,IAAIuiK,EAASi01C,GAAmB,MAAMC,EAAiB77pC,EAAK5iW,EAAEtF,OAAagkgD,EAAaxhgD,KAAK8K,IAAIw2/C,EAAkBC,GAAkB,OAAOvhgD,KAAK8K,IAAIuiK,EAASm01C,EAAY,GAAG,GAA6BH,MAAg+DzhgD,EAAQ6ggD,KAA7c,CAACgB,EAAW754C,EAAS,CAAC,EAAE854C,EAAiB,YAAU,GAAuB,IAApBD,EAAWjkgD,OAAW,OAAO,MAAMswuB,EAAS+yxB,EAAOn8oC,MAAMi9oC,WAA6S,OAAlSF,EAAWp/+C,SAAQ,CAACu/+C,EAAYC,KAAe,IAAI/t+C,EAAG,MAAM07Z,EAApnD,EAACsykC,EAAUl64C,KAAY,IAAIm64C,EAA6CA,EAA5BD,EAAUjs6C,QAAQr4F,OAAO,EAAiBskgD,EAAUjs6C,QAAQrpE,KAAIw1+C,IAAoB,EAAGpigD,EAAQ+ggD,iBAAiBqB,EAAYF,EAAU9sxC,WAA8B8sxC,EAAU9sxC,QAAQxoN,KAAIywB,IAAQ,CAAE,CAACA,EAAOz+C,OAAO,OAAM,MAAMgxb,EAAUqxkC,EAAOn8oC,MAAMu9oC,cAAcF,GAAoX,MAAp1E,EAACvykC,EAAU+wB,EAAU2hjC,KAAiB,IAAIpu+C,EAAG,IAAI,IAAI/1B,EAAE,EAAEA,EAAEwid,EAAU/id,OAAOO,GAAG,EAAE,CAAC,MAAMokgD,EAAaD,EAAcnkgD,GAAG,IAAIokgD,EAAc,SAAS,MAAMll9C,EAAO4j9C,EAAOn8oC,MAAM09oC,WAAW7hjC,EAAUxid,IAAUmhI,EAAM2h4C,EAAOn8oC,MAAMw8oC,aAAsC,QAAxBpt+C,EAAG07Z,EAAU,eAAsB,IAAL17Z,EAAYA,EAAG,IAAI,IAAI,IAAIqsG,EAAIjB,EAAMjhI,EAAEf,EAAE,EAAEijI,GAAKjB,EAAM5iI,EAAEY,IAAIijI,EAAI,CAAC,MAAMphG,EAAI8h+C,EAAOn8oC,MAAM29oC,YAAY,CAACnlgD,EAAEijI,EAAIniI,EAAEi/C,IAAYuyY,EAAUzwZ,KAAMywZ,EAAUzwZ,GAAKj8B,EAAEq//C,EAAa,CAAC,GAAowDG,CAAkB9ykC,EAA/LwxkC,EAAsBxxkC,GAAwCsykC,EAAU9sxC,QAAQxoN,KAAI+1+C,IAAkB,IAAIzu+C,EAAG,OAAoC,QAA7BA,EAAGyu+C,EAAgBlg8C,cAAqB,IAALvuC,EAAYA,EAAG,SAA8E07Z,EAAU,UAAS,EAAG5vb,EAAQ8ggD,0BAA0BlxkC,EAAU5nU,EAASy54C,aAAoB7xkC,GAAm9BgzkC,CAAaZ,EAAYh64C,GAAgB664C,EAAuC,QAAxB3u+C,EAAG8t+C,EAAYtpwC,aAAoB,IAALxkO,EAAYA,EAAG,SAAS+t+C,EAAY,IAAIhB,EAAOn8oC,MAAMg+oC,kBAAkB50xB,EAASt+S,EAAUizkC,EAAa,IAAIf,EAAiB5zxB,GAAtoC,EAACA,EAASlmnB,EAAS,CAAC,KAAK,IAAI9zF,EAAG62B,EAAGnoC,EAAGg2C,EAAO9yD,EAAG,MAAMi9/C,EAAIvy/C,QAAQw3G,EAAS+64C,KAA8B,QAAxB7u+C,EAAGg6sB,EAAS80xB,gBAAuB,IAAL9u+C,IAAeg6sB,EAAS80xB,SAAS,CAAC,GAAsC,QAAnCj48C,GAAIjlD,EAAGoouB,EAAS80xB,UAAUC,aAAoB,IAALl48C,IAAejlD,EAAGm9/C,MAAM,CAAC,CAAC,IAAG/0xB,EAAS80xB,SAASC,MAAMxg/C,SAAQqiC,IAAOA,EAAKi+8C,IAAIA,KAAM,MAAMh+vC,EAAS,GAA4B,QAAxBniP,EAAGolG,EAASoilB,gBAAuB,IAALxnrB,EAAYA,EAAG,qBAA2Bsg/C,EAA0C,QAA5Btq8C,EAAGovD,EAASk74C,oBAA2B,IAALtq8C,EAAYA,EAAG,CAAC,EAAE,MAAwB,UAArBovD,EAASm74C,WAA2B,EAAGlC,EAAO3v/C,OAAO48tB,EAASg1xB,GAA2C,cAArBl74C,EAASm74C,WAA+B,EAAGlC,EAAOmC,WAAWl1xB,EAASnpe,EAASm+vC,GAA8C,WAApBA,EAAap5/C,MAAgB,EAAGm3/C,EAAO3v/C,OAAO48tB,EAASg1xB,IAAc,EAAGjC,EAAOmC,WAAWl1xB,EAASnpe,EAASm+vC,EAAa,EAAibG,CAAcn1xB,EAASlmnB,EAAQ,EAAqBhoH,EAAA,QAAgBA,EAAQ6ggD,KAAK7ggD,EAAQ4ggD,YAAY,eAAevm+C,EAAOr6B,QAAQA,EAAQ6ggD,KAAKxm+C,EAAOr6B,QAAQghgD,mBAAmBhhgD,EAAQghgD,mBAAmB3m+C,EAAOr6B,QAAQ+ggD,gBAAgB/ggD,EAAQ+ggD,gBAAgB1m+C,EAAOr6B,QAAQ8ggD,yBAAyB9ggD,EAAQ8ggD,yBAAyBzm+C,EAAOr6B,QAAQ8kX,MAAMm8oC,EAAOn8oC,oCCA/jK,SAASO,EAAkB/nX,EAAGiB,IAC3B,MAAQA,GAAKA,EAAIjB,EAAEM,UAAYW,EAAIjB,EAAEM,QACtC,IAAK,IAAIlB,EAAI,EAAGE,EAAII,MAAMuB,GAAI7B,EAAI6B,EAAG7B,IAAKE,EAAEF,GAAKY,EAAEZ,GACnD,OAAOE,CACT,+CCJA,SAAS2oX,EAAuB7oX,GAC9B,QAAI,IAAWA,EAAG,MAAM,IAAI6pB,eAAe,6DAC3C,OAAO7pB,CACT,gDCHA,SAAS4pX,EAAgB/nX,EAAG3B,GAC1B,KAAM2B,aAAa3B,GAAI,MAAM,IAAIQ,UAAU,oCAC7C,gFCDA,SAASkoX,EAAkB5oX,EAAGY,GAC5B,IAAK,IAAIX,EAAI,EAAGA,EAAIW,EAAEM,OAAQjB,IAAK,CACjC,IAAIkB,EAAIP,EAAEX,GACVkB,EAAEqD,WAAarD,EAAEqD,aAAc,EAAIrD,EAAEwD,cAAe,EAAI,UAAWxD,IAAMA,EAAEyD,UAAW,GAAKzE,OAAO4D,eAAe/D,GAAG,OAAcmB,EAAEukB,KAAMvkB,EAC5I,CACF,CACA,SAAS8j7C,EAAajl7C,EAAGY,EAAGX,GAC1B,OAAOW,GAAKgoX,EAAkB5oX,EAAEO,UAAWK,GAAIX,GAAK2oX,EAAkB5oX,EAAGC,GAAIE,OAAO4D,eAAe/D,EAAG,YAAa,CACjH4E,UAAU,IACR5E,CACN,gECVA,SAASuwX,EAAgBvwX,EAAGY,EAAGX,GAC7B,OAAQW,GAAI,OAAcA,MAAOZ,EAAIG,OAAO4D,eAAe/D,EAAGY,EAAG,CAC/DoB,MAAO/B,EACPuE,YAAY,EACZG,cAAc,EACdC,UAAU,IACP5E,EAAEY,GAAKX,EAAGD,CACjB,gCCRA,SAAS40a,IACP,OAAOA,EAAWz0a,OAAOa,OAASb,OAAOa,OAAOkD,OAAS,SAAUhE,GACjE,IAAK,IAAIF,EAAI,EAAGA,EAAIiB,UAAUC,OAAQlB,IAAK,CACzC,IAAIC,EAAIgB,UAAUjB,GAClB,IAAK,IAAIY,KAAKX,GAAG,CAAG,GAAEO,eAAeC,KAAKR,EAAGW,KAAOV,EAAEU,GAAKX,EAAEW,GAC/D,CACA,OAAOV,CACT,EAAG00a,EAASxza,MAAM,KAAMH,UAC1B,gFCPA,SAASkoX,EAAUlpX,EAAGD,GACpB,GAAI,mBAAqBA,GAAK,OAASA,EAAG,MAAM,IAAIU,UAAU,sDAC9DT,EAAEM,UAAYJ,OAAOY,OAAOf,GAAKA,EAAEO,UAAW,CAC5CO,YAAa,CACXkB,MAAO/B,EACP2E,UAAU,EACVD,cAAc,KAEdxE,OAAO4D,eAAe9D,EAAG,YAAa,CACxC2E,UAAU,IACR5E,IAAK,OAAeC,EAAGD,EAC7B,gECXA,SAAS4mgD,EAAe3mgD,EAAGkB,GACzBlB,EAAEM,UAAYJ,OAAOY,OAAOI,EAAEZ,WAAYN,EAAEM,UAAUO,YAAcb,GAAG,OAAeA,EAAGkB,EAC3F,gECFA,SAAS+0X,EAAQl2X,EAAGY,GAClB,IAAIX,EAAIE,OAAOgU,KAAKnU,GACpB,GAAIG,OAAOmB,sBAAuB,CAChC,IAAIH,EAAIhB,OAAOmB,sBAAsBtB,GACrCY,IAAMO,EAAIA,EAAEusB,QAAO,SAAU9sB,GAC3B,OAAOT,OAAOmE,yBAAyBtE,EAAGY,GAAG4D,UAC/C,KAAKvE,EAAEyC,KAAKtB,MAAMnB,EAAGkB,EACvB,CACA,OAAOlB,CACT,CACA,SAASoy8C,EAAery8C,GACtB,IAAK,IAAIY,EAAI,EAAGA,EAAIK,UAAUC,OAAQN,IAAK,CACzC,IAAIX,EAAI,MAAQgB,UAAUL,GAAKK,UAAUL,GAAK,CAAC,EAC/CA,EAAI,EAAIs1X,EAAQ/1X,OAAOF,IAAI,GAAI8lB,SAAQ,SAAUnlB,IAC/C,OAAeZ,EAAGY,EAAGX,EAAEW,GACzB,IAAKT,OAAOq+B,0BAA4Br+B,OAAOkU,iBAAiBrU,EAAGG,OAAOq+B,0BAA0Bv+B,IAAMi2X,EAAQ/1X,OAAOF,IAAI8lB,SAAQ,SAAUnlB,GAC7IT,OAAO4D,eAAe/D,EAAGY,EAAGT,OAAOmE,yBAAyBrE,EAAGW,GACjE,GACF,CACA,OAAOZ,CACT,gECpBA,SAAS8gZ,EAAyB9gZ,EAAGC,GACnC,GAAI,MAAQD,EAAG,MAAO,CAAC,EACvB,IAAImB,EACFP,EACAa,GAAI,OAA6BzB,EAAGC,GACtC,GAAIE,OAAOmB,sBAAuB,CAChC,IAAIK,EAAIxB,OAAOmB,sBAAsBtB,GACrC,IAAKY,EAAI,EAAGA,EAAIe,EAAET,OAAQN,IAAKO,EAAIQ,EAAEf,GAAIX,EAAEgP,SAAS9N,IAAM,CAAC,EAAEI,qBAAqBd,KAAKT,EAAGmB,KAAOM,EAAEN,GAAKnB,EAAEmB,GAC5G,CACA,OAAOM,CACT,gCCXA,SAASs/Y,EAA8BngZ,EAAGZ,GACxC,GAAI,MAAQY,EAAG,MAAO,CAAC,EACvB,IAAIX,EAAI,CAAC,EACT,IAAK,IAAIC,KAAKU,EAAG,GAAI,CAAC,EAAEJ,eAAeC,KAAKG,EAAGV,GAAI,CACjD,GAAIF,EAAEiP,SAAS/O,GAAI,SACnBD,EAAEC,GAAKU,EAAEV,EACX,CACA,OAAOD,CACT,gDCRA,SAAS8oX,EAAgB9oX,EAAGD,GAC1B,OAAO+oX,EAAkB5oX,OAAOC,eAAiBD,OAAOC,eAAe8D,OAAS,SAAUjE,EAAGD,GAC3F,OAAOC,EAAEI,UAAYL,EAAGC,CAC1B,EAAG8oX,EAAgB9oX,EAAGD,EACxB,gFCAA,SAAS+yX,EAAenyX,EAAGZ,GACzB,OCLF,SAAyBY,GACvB,GAAIN,MAAMkS,QAAQ5R,GAAI,OAAOA,CAC/B,CDGS,CAAeA,IELxB,SAA+BA,EAAGyC,GAChC,IAAIpD,EAAI,MAAQW,EAAI,KAAO,oBAAsB2B,QAAU3B,EAAE2B,OAAOC,WAAa5B,EAAE,cACnF,GAAI,MAAQX,EAAG,CACb,IAAID,EACFE,EACAuB,EACAyB,EACArB,EAAI,GACJ0B,GAAI,EACJpC,GAAI,EACN,IACE,GAAIM,GAAKxB,EAAIA,EAAEQ,KAAKG,IAAIgB,KAAM,IAAMyB,EAAG,CACrC,GAAIlD,OAAOF,KAAOA,EAAG,OACrBsD,GAAI,CACN,MAAO,OAASA,GAAKvD,EAAIyB,EAAEhB,KAAKR,IAAI8B,QAAUF,EAAEa,KAAK1C,EAAEgC,OAAQH,EAAEX,SAAWmC,GAAIE,GAAI,GACtF,CAAE,MAAO3C,GACPO,GAAI,EAAIjB,EAAIU,CACd,CAAE,QACA,IACE,IAAK2C,GAAK,MAAQtD,EAAU,SAAMiD,EAAIjD,EAAU,SAAKE,OAAO+C,KAAOA,GAAI,MACzE,CAAE,QACA,GAAI/B,EAAG,MAAMjB,CACf,CACF,CACA,OAAO2B,CACT,CACF,CFrB8B,CAAqBjB,EAAGZ,KAAM,EAAA6mgD,EAAA,GAA2BjmgD,EAAGZ,IGL1F,WACE,MAAM,IAAIU,UAAU,4IACtB,CHGgG,EAChG,2EIFA,SAAS8qX,EAAmB5qX,GAC1B,OCJF,SAA4BA,GAC1B,GAAIN,MAAMkS,QAAQ5R,GAAI,OAAO,EAAAkmgD,EAAA,GAAiBlmgD,EAChD,CDES,CAAkBA,IEL3B,SAA0BA,GACxB,GAAI,oBAAsB2B,QAAU,MAAQ3B,EAAE2B,OAAOC,WAAa,MAAQ5B,EAAE,cAAe,OAAON,MAAMse,KAAKhe,EAC/G,CFGiC,CAAgBA,KAAM,EAAAimgD,EAAA,GAA2BjmgD,IGLlF,WACE,MAAM,IAAIF,UAAU,uIACtB,CHGwF,EACxF,gEIJA,SAAS64Y,EAAct5Y,GACrB,IAAIwB,ECFN,SAAqBxB,EAAGW,GACtB,GAAI,WAAY,OAAQX,KAAOA,EAAG,OAAOA,EACzC,IAAID,EAAIC,EAAEsC,OAAOq7B,aACjB,QAAI,IAAW59B,EAAG,CAChB,IAAIyB,EAAIzB,EAAES,KAAKR,EAAGW,UAClB,GAAI,WAAY,OAAQa,GAAI,OAAOA,EACnC,MAAM,IAAIf,UAAU,+CACtB,CACA,OAAyBC,OAAiBV,EAC5C,CDPU29B,CAAY39B,GACpB,MAAO,WAAY,OAAQwB,GAAKA,EAAIA,EAAI,EAC1C,gCELA,SAASuiX,EAAQ7iX,GAGf,OAAO6iX,EAAU,mBAAqBzhX,QAAU,iBAAmBA,OAAOC,SAAW,SAAUrB,GAC7F,cAAcA,CAChB,EAAI,SAAUA,GACZ,OAAOA,GAAK,mBAAqBoB,QAAUpB,EAAEL,cAAgByB,QAAUpB,IAAMoB,OAAOhC,UAAY,gBAAkBY,CACpH,EAAG6iX,EAAQ7iX,EACb,gFCPA,SAASsnX,EAA4B7nX,EAAGiB,GACtC,GAAIjB,EAAG,CACL,GAAI,iBAAmBA,EAAG,OAAO,OAAiBA,EAAGiB,GACrD,IAAI5B,EAAI,CAAC,EAAEmF,SAAS3E,KAAKG,GAAGgC,MAAM,GAAI,GACtC,MAAO,WAAa3C,GAAKW,EAAEE,cAAgBb,EAAIW,EAAEE,YAAYyK,MAAO,QAAUtL,GAAK,QAAUA,EAAIK,MAAMse,KAAKhe,GAAK,cAAgBX,GAAK,2CAA2CiM,KAAKjM,IAAK,OAAiBW,EAAGiB,QAAK,CACtN,CACF,6DCPA,MAAM,oBAAE2N,EAAmB,sBAAElO,GAA0BnB,QAE/CK,eAAc,GAAKL,OAAOI,UAIlC,SAASwmgD,EAAmBC,EAAaC,GACrC,OAAO,SAAiBplgD,EAAGsC,EAAGqI,GAC1B,OAAOw6/C,EAAYnlgD,EAAGsC,EAAGqI,IAAUy6/C,EAAYplgD,EAAGsC,EAAGqI,EACzD,CACJ,CAMA,SAAS06/C,EAAiBC,GACtB,OAAO,SAAoBtlgD,EAAGsC,EAAGqI,GAC7B,IAAK3K,IAAMsC,GAAkB,iBAANtC,GAA+B,iBAANsC,EAC5C,OAAOgjgD,EAActlgD,EAAGsC,EAAGqI,GAE/B,MAAM,MAAEunB,GAAUvnB,EACZ46/C,EAAUrz+C,EAAM/vB,IAAInC,GACpBwlgD,EAAUtz+C,EAAM/vB,IAAIG,GAC1B,GAAIijgD,GAAWC,EACX,OAAOD,IAAYjjgD,GAAKkjgD,IAAYxlgD,EAExCkyB,EAAMjnB,IAAIjL,EAAGsC,GACb4vB,EAAMjnB,IAAI3I,EAAGtC,GACb,MAAMwiB,EAAS8i/C,EAActlgD,EAAGsC,EAAGqI,GAGnC,OAFAunB,EAAMjO,OAAOjkB,GACbkyB,EAAMjO,OAAO3hB,GACNkgB,CACX,CACJ,CAWA,SAASij/C,EAAoBrp9C,GACzB,OAAOzuC,EAAoByuC,GAAQp7C,OAAOvB,EAAsB28C,GACpE,CAIA,MAAMl1C,EAEN5I,OAAO4I,QAAU,EAAEk1C,EAAQ5D,IAAa,EAAe55C,KAAKw9C,EAAQ5D,IAIpE,SAASkt9C,EAAmB1lgD,EAAGsC,GAC3B,OAAOtC,IAAMsC,IAAOtC,IAAMsC,GAAKtC,GAAMA,GAAKsC,GAAMA,CACpD,CAEA,MAAMqjgD,EAAe,MACfC,EAAe,MACfC,EAAc,UACd,yBAAEpjgD,EAAwB,KAAE6P,GAAShU,OAI3C,SAASwngD,EAAqB9lgD,EAAGsC,GAC7B,OAAOtC,EAAEonB,aAAe9kB,EAAE8kB,YAAc2++C,EAAoB,IAAIpn/C,WAAW3e,GAAI,IAAI2e,WAAWrc,GAClG,CAIA,SAAS0jgD,EAAehmgD,EAAGsC,EAAGqI,GAC1B,IAAIqR,EAAQhc,EAAEX,OACd,GAAIiD,EAAEjD,SAAW2c,EACb,OAAO,EAEX,KAAOA,KAAU,GACb,IAAKrR,EAAM4mI,OAAOvxI,EAAEgc,GAAQ1Z,EAAE0Z,GAAQA,EAAOA,EAAOhc,EAAGsC,EAAGqI,GACtD,OAAO,EAGf,OAAO,CACX,CAIA,SAASs7/C,EAAkBjmgD,EAAGsC,GAC1B,OAAQtC,EAAEonB,aAAe9kB,EAAE8kB,YACpB2++C,EAAoB,IAAIpn/C,WAAW3e,EAAEknB,OAAQlnB,EAAEmnB,WAAYnnB,EAAEonB,YAAa,IAAIzI,WAAWrc,EAAE4kB,OAAQ5kB,EAAE6kB,WAAY7kB,EAAE8kB,YAC9H,CAIA,SAAS8++C,EAAclmgD,EAAGsC,GACtB,OAAOojgD,EAAmB1lgD,EAAEymC,UAAWnkC,EAAEmkC,UAC7C,CAIA,SAAS0/9C,EAAenmgD,EAAGsC,GACvB,OAAOtC,EAAE0J,OAASpH,EAAEoH,MAAQ1J,EAAE+wB,UAAYzuB,EAAEyuB,SAAW/wB,EAAEsyC,QAAUhwC,EAAEgwC,OAAStyC,EAAE2xC,QAAUrvC,EAAEqvC,KAChG,CAIA,SAASy09C,EAAkBpmgD,EAAGsC,GAC1B,OAAOtC,IAAMsC,CACjB,CAIA,SAAS+jgD,EAAarmgD,EAAGsC,EAAGqI,GACxB,MAAMiZ,EAAO5jB,EAAE4jB,KACf,GAAIA,IAASthB,EAAEshB,KACX,OAAO,EAEX,IAAKA,EACD,OAAO,EAEX,MAAM0i/C,EAAiB,IAAI7ngD,MAAMmlB,GAC3B2i/C,EAAYvmgD,EAAEyb,UACpB,IAAI+q/C,EACAC,EACAzq/C,EAAQ,EAEZ,MAAQwq/C,EAAUD,EAAUxmgD,UACpBymgD,EAAQtmgD,MADqB,CAIjC,MAAMwmgD,EAAYpkgD,EAAEmZ,UACpB,IAAIkr/C,GAAW,EACXlxnB,EAAa,EAEjB,MAAQgxnB,EAAUC,EAAU3mgD,UACpB0mgD,EAAQvmgD,MADqB,CAIjC,GAAIomgD,EAAe7wnB,GAAa,CAC5BA,IACA,QACJ,CACA,MAAMmxnB,EAASJ,EAAQrmgD,MACjB0mgD,EAASJ,EAAQtmgD,MACvB,GAAIwK,EAAM4mI,OAAOq13C,EAAO,GAAIC,EAAO,GAAI7q/C,EAAOy53B,EAAYz14B,EAAGsC,EAAGqI,IACzDA,EAAM4mI,OAAOq13C,EAAO,GAAIC,EAAO,GAAID,EAAO,GAAIC,EAAO,GAAI7mgD,EAAGsC,EAAGqI,GAAQ,CAC1Eg8/C,EAAWL,EAAe7wnB,IAAc,EACxC,KACJ,CACAA,GACJ,CACA,IAAKkxnB,EACD,OAAO,EAEX3q/C,GACJ,CACA,OAAO,CACX,CAIA,MAAM8q/C,EAAkBpB,EAIxB,SAASqB,EAAgB/mgD,EAAGsC,EAAGqI,GAC3B,MAAM68B,EAAal1B,EAAKtS,GACxB,IAAIgc,EAAQwrB,EAAWnoC,OACvB,GAAIiT,EAAKhQ,GAAGjD,SAAW2c,EACnB,OAAO,EAMX,KAAOA,KAAU,GACb,IAAKgr/C,EAAgBhngD,EAAGsC,EAAGqI,EAAO68B,EAAWxrB,IACzC,OAAO,EAGf,OAAO,CACX,CAIA,SAASir/C,EAAsBjngD,EAAGsC,EAAGqI,GACjC,MAAM68B,EAAai+9C,EAAoBzlgD,GACvC,IAIIw4C,EACA0u9C,EACAC,EANAnr/C,EAAQwrB,EAAWnoC,OACvB,GAAIomgD,EAAoBnjgD,GAAGjD,SAAW2c,EAClC,OAAO,EASX,KAAOA,KAAU,GAAG,CAEhB,GADAw8B,EAAWhR,EAAWxrB,IACjBgr/C,EAAgBhngD,EAAGsC,EAAGqI,EAAO6tC,GAC9B,OAAO,EAIX,GAFA0u9C,EAAczkgD,EAAyBzC,EAAGw4C,GAC1C2u9C,EAAc1kgD,EAAyBH,EAAGk2C,IACrC0u9C,GAAeC,MACXD,IACGC,GACDD,EAAYpkgD,eAAiBqkgD,EAAYrkgD,cACzCokgD,EAAYvkgD,aAAewkgD,EAAYxkgD,YACvCukgD,EAAYnkgD,WAAaokgD,EAAYpkgD,UAC5C,OAAO,CAEf,CACA,OAAO,CACX,CAIA,SAASqkgD,EAA0BpngD,EAAGsC,GAClC,OAAOojgD,EAAmB1lgD,EAAEkI,UAAW5F,EAAE4F,UAC7C,CAIA,SAASm//C,EAAgBrngD,EAAGsC,GACxB,OAAOtC,EAAE6G,SAAWvE,EAAEuE,QAAU7G,EAAEo5C,QAAU92C,EAAE82C,KAClD,CAIA,SAASku9C,EAAatngD,EAAGsC,EAAGqI,GACxB,MAAMiZ,EAAO5jB,EAAE4jB,KACf,GAAIA,IAASthB,EAAEshB,KACX,OAAO,EAEX,IAAKA,EACD,OAAO,EAEX,MAAM0i/C,EAAiB,IAAI7ngD,MAAMmlB,GAC3B2i/C,EAAYvmgD,EAAE0b,SACpB,IAAI8q/C,EACAC,EAEJ,MAAQD,EAAUD,EAAUxmgD,UACpBymgD,EAAQtmgD,MADqB,CAIjC,MAAMwmgD,EAAYpkgD,EAAEoZ,SACpB,IAAIir/C,GAAW,EACXlxnB,EAAa,EAEjB,MAAQgxnB,EAAUC,EAAU3mgD,UACpB0mgD,EAAQvmgD,MADqB,CAIjC,IAAKomgD,EAAe7wnB,IACb9q4B,EAAM4mI,OAAOi13C,EAAQrmgD,MAAOsmgD,EAAQtmgD,MAAOqmgD,EAAQrmgD,MAAOsmgD,EAAQtmgD,MAAOH,EAAGsC,EAAGqI,GAAQ,CAC1Fg8/C,EAAWL,EAAe7wnB,IAAc,EACxC,KACJ,CACAA,GACJ,CACA,IAAKkxnB,EACD,OAAO,CAEf,CACA,OAAO,CACX,CAIA,SAASZ,EAAoB/lgD,EAAGsC,GAC5B,IAAI0Z,EAAQhc,EAAEonB,WACd,GAAI9kB,EAAE8kB,aAAepL,GAAShc,EAAEmnB,aAAe7kB,EAAE6kB,WAC7C,OAAO,EAEX,KAAOnL,KAAU,GACb,GAAIhc,EAAEgc,KAAW1Z,EAAE0Z,GACf,OAAO,EAGf,OAAO,CACX,CAIA,SAASur/C,EAAavngD,EAAGsC,GACrB,OAAQtC,EAAE6mD,WAAavkD,EAAEukD,UAClB7mD,EAAEolD,WAAa9iD,EAAE8iD,UACjBplD,EAAEg2B,WAAa1zB,EAAE0zB,UACjBh2B,EAAE4/6B,OAASt96B,EAAEs96B,MACb5/6B,EAAE0mG,OAASpkG,EAAEokG,MACb1mG,EAAEi9a,WAAa36a,EAAE26a,UACjBj9a,EAAE49a,WAAat7a,EAAEs7a,QAC5B,CACA,SAASoplC,EAAgBhngD,EAAGsC,EAAGqI,EAAO6tC,GAClC,QAAKA,IAAaqt9C,GAAert9C,IAAaot9C,GAAgBpt9C,IAAamt9C,IACnE3lgD,EAAE616B,WAAYvz6B,EAAEuz6B,WAGjB3u6B,EAAO5E,EAAGk2C,IAAa7tC,EAAM4mI,OAAOvxI,EAAEw4C,GAAWl2C,EAAEk2C,GAAWA,EAAUA,EAAUx4C,EAAGsC,EAAGqI,EACnG,CAEA,MAAM68/C,EAAmB,uBACnBC,EAAgB,qBAChBC,EAAc,mBACdC,EAAgB,oBAChBC,EAAW,gBACXC,EAAY,iBACZC,EAAU,eACVC,EAAa,kBACbC,EAAa,kBACbC,EAAc,kBACdC,EAAU,eACVC,EAAa,kBACbC,EAAmB,CACrB,sBAAsB,EACtB,uBAAuB,EACvB,8BAA8B,EAC9B,uBAAuB,EACvB,wBAAwB,EACxB,uBAAuB,EACvB,wBAAwB,EACxB,yBAAyB,EACzB,yBAAyB,EACzB,yBAAyB,EACzB,0BAA0B,EAC1B,2BAA2B,GAEzBC,EAAU,eAEV,EAAW/pgD,OAAOI,UAAU6E,SAkPlC,MAAMw9J,EAAYun2C,IAsDlB,SAASA,EAAkBng/C,EAAU,CAAC,GAClC,MAAM,SAAEwsnC,GAAW,EAAO4zX,yBAA0BC,EAA8B,YAAEC,EAAW,OAAEnvuC,GAAS,GAAWnxQ,EAC/G2yS,EA7IV,UAAwC,SAAE650B,EAAQ,mBAAE+zX,EAAkB,OAAEpvuC,IACpE,IAAIwhC,EAAS,CACTgrsC,uBACAE,eAAgB1suC,EAAS2tuC,EAAwBjB,EACjDC,oBACAC,cAAeA,EACfC,eAAgBA,EAChBC,kBAAmBA,EACnBC,aAAc/suC,EAAS4ruC,EAAmBmB,EAAcY,GAAyBZ,EACjFS,gBAAiBA,EACjBC,gBAAiBztuC,EAAS2tuC,EAAwBF,EAClDK,0BAA2BA,EAC3BC,gBAAiBA,EACjBC,aAAchuuC,EAAS4ruC,EAAmBoC,EAAcL,GAAyBK,EACjFvB,oBAAqBzsuC,EACf4ruC,EAAmBa,EAAqBkB,GACxClB,EACNwB,aAAcA,EACdoB,2BAAuB579C,GAK3B,GAHI279C,IACA5tsC,EAASx8T,OAAOa,OAAO,CAAC,EAAG27T,EAAQ4tsC,EAAmB5tsC,KAEtD650B,EAAU,CACV,MAAMqxX,EAAiBX,EAAiBvqsC,EAAOkrsC,gBACzCK,EAAehB,EAAiBvqsC,EAAOursC,cACvCU,EAAkB1B,EAAiBvqsC,EAAOissC,iBAC1CO,EAAejC,EAAiBvqsC,EAAOwssC,cAC7CxssC,EAASx8T,OAAOa,OAAO,CAAC,EAAG27T,EAAQ,CAC/BkrsC,iBACAK,eACAU,kBACAO,gBAER,CACA,OAAOxssC,CACX,CAyGmB8tsC,CAA+Bzg/C,GACxC4vd,EAvSV,UAAkC,qBAAE+thC,EAAoB,eAAEE,EAAc,kBAAEC,EAAiB,cAAEC,EAAa,eAAEC,EAAc,kBAAEC,EAAiB,aAAEC,EAAY,gBAAES,EAAe,gBAAEC,EAAe,0BAAEK,EAAyB,gBAAEC,EAAe,aAAEC,EAAY,oBAAEvB,EAAmB,aAAEwB,EAAY,sBAAEoB,IAIxR,OAAO,SAAoB3ogD,EAAGsC,EAAGqI,GAE7B,GAAI3K,IAAMsC,EACN,OAAO,EAIX,GAAS,MAALtC,GAAkB,MAALsC,EACb,OAAO,EAEX,MAAMiJ,SAAcvL,EACpB,GAAIuL,WAAgBjJ,EAChB,OAAO,EAEX,GAAa,WAATiJ,EACA,MAAa,WAATA,EACOu7/C,EAAgB9mgD,EAAGsC,EAAGqI,GAEpB,aAATY,GACO66/C,EAAkBpmgD,EAAGsC,EAAGqI,GAKvC,MAAM1L,EAAce,EAAEf,YAWtB,GAAIA,IAAgBqD,EAAErD,YAClB,OAAO,EAKX,GAAIA,IAAgBX,OAChB,OAAOyogD,EAAgB/mgD,EAAGsC,EAAGqI,GAIjC,GAAIlM,MAAMkS,QAAQ3Q,GACd,OAAOgmgD,EAAehmgD,EAAGsC,EAAGqI,GAOhC,GAAI1L,IAAgBurB,KAChB,OAAO07+C,EAAclmgD,EAAGsC,EAAGqI,GAE/B,GAAI1L,IAAgB8nC,OAChB,OAAOsg+C,EAAgBrngD,EAAGsC,EAAGqI,GAEjC,GAAI1L,IAAgB0qB,IAChB,OAAO08+C,EAAarmgD,EAAGsC,EAAGqI,GAE9B,GAAI1L,IAAgB0lB,IAChB,OAAO2i/C,EAAatngD,EAAGsC,EAAGqI,GAI9B,MAAMyL,EAAM,EAASxX,KAAKoB,GAC1B,GAAIoW,IAAQwx/C,EACR,OAAO1B,EAAclmgD,EAAGsC,EAAGqI,GAI/B,GAAIyL,IAAQ6x/C,EACR,OAAOZ,EAAgBrngD,EAAGsC,EAAGqI,GAEjC,GAAIyL,IAAQ0x/C,EACR,OAAOzB,EAAarmgD,EAAGsC,EAAGqI,GAE9B,GAAIyL,IAAQ8x/C,EACR,OAAOZ,EAAatngD,EAAGsC,EAAGqI,GAE9B,GAAIyL,IAAQ4x/C,EAIR,MAAyB,mBAAXhogD,EAAEI,MAAyC,mBAAXkC,EAAElC,MAAuB2mgD,EAAgB/mgD,EAAGsC,EAAGqI,GAIjG,GAAIyL,IAAQiy/C,EACR,OAAOd,EAAavngD,EAAGsC,EAAGqI,GAI9B,GAAIyL,IAAQyx/C,EACR,OAAO1B,EAAenmgD,EAAGsC,EAAGqI,GAGhC,GAAIyL,IAAQqx/C,EACR,OAAOV,EAAgB/mgD,EAAGsC,EAAGqI,GAEjC,GAAIy9/C,EAAiBhy/C,GACjB,OAAO2v/C,EAAoB/lgD,EAAGsC,EAAGqI,GAErC,GAAIyL,IAAQox/C,EACR,OAAO1B,EAAqB9lgD,EAAGsC,EAAGqI,GAEtC,GAAIyL,IAAQux/C,EACR,OAAO1B,EAAkBjmgD,EAAGsC,EAAGqI,GAKnC,GAAIyL,IAAQsx/C,GAAetx/C,IAAQ2x/C,GAAc3x/C,IAAQ+x/C,EACrD,OAAOf,EAA0BpngD,EAAGsC,EAAGqI,GAE3C,GAAIg+/C,EAAuB,CACvB,IAAIE,EAAuBF,EAAsBvy/C,GACjD,IAAKyy/C,EAAsB,CACvB,MAAMC,EAxaF,OADC3ogD,EAyawBH,GAxalBG,EAAMO,OAAOyoB,kBAAe4jB,EAyanC+79C,IACAD,EAAuBF,EAAsBG,GAErD,CAGA,GAAID,EACA,OAAOA,EAAqB7ogD,EAAGsC,EAAGqI,EAE1C,CAnbR,IAAqBxK,EA+bb,OAAO,CACX,CACJ,CAkJuB4ogD,CAAyBjusC,GArGhD,IAA0C5xM,EAyGtC,OAjGJ,UAAuB,SAAEyrhC,EAAQ,WAAE58pB,EAAU,YAAE0whC,EAAW,OAAEl33C,EAAM,OAAE+nJ,IAChE,GAAImvuC,EACA,OAAO,SAAiBzogD,EAAGsC,GACvB,MAAM,MAAE4vB,GAAQyinC,EAAW,IAAIxqoC,aAAY4iC,GAAS,KAAE8hS,GAAS45rC,IAC/D,OAAO1whC,EAAW/3e,EAAGsC,EAAG,CACpB4vB,QACAq/G,SACAs9L,OACAv1C,UAER,EAEJ,GAAIq72B,EACA,OAAO,SAAiB30oC,EAAGsC,GACvB,OAAOy1e,EAAW/3e,EAAGsC,EAAG,CACpB4vB,MAAO,IAAI/nB,QACXonI,SACAs9L,UAAM9hS,EACNusP,UAER,EAEJ,MAAM3uR,EAAQ,CACVunB,WAAO6a,EACPwkG,SACAs9L,UAAM9hS,EACNusP,UAEJ,OAAO,SAAiBt5R,EAAGsC,GACvB,OAAOy1e,EAAW/3e,EAAGsC,EAAGqI,EAC5B,CACJ,CAkEWq+/C,CAAc,CAAEr0X,WAAU58pB,aAAY0whC,cAAal33C,OAH3Ci33C,EACTA,EAA+BzwhC,IAvGC7uX,EAwGC6uX,EAvGhC,SAAU/3e,EAAGsC,EAAG2mgD,EAAcC,EAAcC,EAAUC,EAAUz+/C,GACnE,OAAOu+G,EAAQlpH,EAAGsC,EAAGqI,EACzB,GAsGkE2uR,UACtE,CA1DwBgvuC,EAAkB,CAAEhvuC,QAAQ,IAI1BgvuC,EAAkB,CAAE3zX,UAAU,IAKxB2zX,EAAkB,CAC9C3zX,UAAU,EACVr72B,QAAQ,IAKSgvuC,EAAkB,CACnCC,yBAA0B,IAAM7C,IAKT4C,EAAkB,CACzChvuC,QAAQ,EACRivuC,yBAA0B,IAAM7C,IAKP4C,EAAkB,CAC3C3zX,UAAU,EACV4zX,yBAA0B,IAAM7C,IAMD4C,EAAkB,CACjD3zX,UAAU,EACV4zX,yBAA0B,IAAM7C,EAChCpsuC,QAAQ,mBCxlBZ,SAAS2iI,EAAOn8Z,EAAG3B,GACf,IAAIC,EAAI,CAAC,EACT,IAAK,IAAI0D,KAAKhC,EAAOxB,OAAOI,UAAUC,eAAeC,KAAKkB,EAAGgC,IAAM3D,EAAEqB,QAAQsC,GAAK,IAC9E1D,EAAE0D,GAAKhC,EAAEgC,IACb,GAAS,MAALhC,GAAqD,mBAAjCxB,OAAOmB,sBACtB,KAAIG,EAAI,EAAb,IAAgBkC,EAAIxD,OAAOmB,sBAAsBK,GAAIF,EAAIkC,EAAEzC,OAAQO,IAC3DzB,EAAEqB,QAAQsC,EAAElC,IAAM,GAAKtB,OAAOI,UAAUgB,qBAAqBd,KAAKkB,EAAGgC,EAAElC,MACvExB,EAAE0D,EAAElC,IAAME,EAAEgC,EAAElC,IAF4B,CAItD,OAAOxB,CACX,CAE2B,mBAApB0hZ,iBAAiCA,gBAwBxC,MAAMyb,EACF,gCAAOC,CAA0BntY,GAC7B,OAAQkP,OAAOC,KAAK2/K,SACwC,IAAxD9uL,EAAIotY,qBAAqBC,0BACjC,CACA,uBAAOC,CAAiBx+M,GACpB,OAAQ5/K,OAAOC,KAAK2/K,QAChBA,aAAkB5/K,OAAOC,KAAK2/K,OAAOy+M,qBAC7C,CACA,aAAO77X,CAAOo9K,EAAQ9uL,GACdrvB,KAAK28Z,iBAAiBx+M,GACtBA,EAAO9uL,IAAMA,EAGb8uL,EAAOp9K,OAAO1R,EAEtB,CACA,kBAAOi7I,CAAY6zC,GAEf,GAAIn+M,KAAK28Z,iBAAiBx+M,GAAS,CAC/B,GAAIA,EAAOx/K,SAAU,CACjB,GAAIw/K,EAAOx/K,oBAAoBJ,OAAOC,KAAKurM,OACvC,OAAO5rB,EAAOx/K,SAGlB,GAAIwG,OAAOuC,SAASy2K,EAAOx/K,SAASO,MAChCiG,OAAOuC,SAASy2K,EAAOx/K,SAASS,KAChC,OAAO,IAAIb,OAAOC,KAAKurM,OAAO5rB,EAAOx/K,SAASO,IAAKi/K,EAAOx/K,SAASS,IAE3E,CAEA,OAAO,IAAIb,OAAOC,KAAKurM,OAAO,KAClC,CACA,OAAO5rB,EAAO7zC,aAClB,CACA,iBAAOmnP,CAAWtzM,GACd,QAAIn+M,KAAK28Z,iBAAiBx+M,IAUnBA,EAAOszM,YAClB,EAkBJ,MAAMjG,EACF,WAAAvrZ,EAAY,QAAEitY,EAAO,SAAEvuW,IACnB3+B,KAAKktY,QAAU,GACXA,IACAltY,KAAKktY,QAAUA,GACfvuW,IACIA,aAAoBJ,OAAOC,KAAKurM,OAChC/pO,KAAKw3Z,UAAY74X,EAGjB3+B,KAAKw3Z,UAAY,IAAIj5X,OAAOC,KAAKurM,OAAOprM,GAGpD,CACA,UAAIq/F,GACA,GAA4B,IAAxBh+H,KAAKktY,QAAQ7sY,SAAiBL,KAAKw3Z,UACnC,OAEJ,MAAMx5R,EAAS,IAAIz/F,OAAOC,KAAK6tX,aAAarsZ,KAAKw3Z,UAAWx3Z,KAAKw3Z,WACjE,IAAK,MAAMr5M,KAAUn+M,KAAKktY,QACtBlvQ,EAAOqrR,OAAOkT,EAAYjyP,YAAY6zC,IAE1C,OAAOngF,CACX,CACA,YAAIr/F,GAEA,OAAO3+B,KAAKw3Z,WAAax3Z,KAAKg+H,OAAO59F,WACzC,CAIA,SAAImpB,GACA,OAAOvpD,KAAKktY,QAAQrgX,QAAQzpB,GAAMm5Z,EAAY9K,WAAWruZ,KAAI/C,MACjE,CAIA,IAAAwB,CAAKs8M,GACDn+M,KAAKktY,QAAQrrY,KAAKs8M,EACtB,CAIA,SACQn+M,KAAKm+M,SACLo+M,EAAYx7X,OAAO/gC,KAAKm+M,OAAQ,MAChCn+M,KAAKm+M,YAASpwK,GAElB/tC,KAAKktY,QAAQ7sY,OAAS,CAC1B,EAyBJ,SAASgqgD,EAAclpgD,EAAO4wB,EAAU,oBACpC,GAAI5wB,QACA,MAAMqmB,MAAMuK,EAEpB,CA0BA,MAAMu4+C,GAAgC,CAACj7+C,EAAK2vY,EAAqB9xB,EAASq9nC,KACtE,MAAMvs4C,EAAS3uG,EAAIuvG,YACnByr4C,EAAcrs4C,GACd,MAAMuzR,EAAoBi5mC,GAA6Bxs4C,EAAQghS,EAAqBurmC,GACpF,OAAOr9nC,EAAQrgX,QAAQsxL,GAAWozM,EAAkB30X,SAAS2/X,EAAYjyP,YAAY6zC,KAAS,EAK5FqszC,GAA+B,CAACxs4C,EAAQwmE,EAAYim0C,KACtD,MAAM,UAAEC,EAAS,UAAEC,GAAcC,GAA0B5s4C,EAAQwmE,GAC7Dqm0C,EAAsBC,GAAkB,CAAEJ,YAAWC,aAAaF,GACxE,OAAOM,GAA0BF,EAAqBrm0C,EAAW,EAgB/DwsN,GAAwB,CAAC3wK,EAAI0jB,KAC/B,MACMktJ,GAASltJ,EAAG7kO,IAAMmhN,EAAGnhN,KAAOr8B,KAAKsmC,GAAM,IACvC+nX,GAASntJ,EAAG3kO,IAAMihN,EAAGjhN,KAAOv8B,KAAKsmC,GAAM,IACvC6h+C,EAAUnogD,KAAK4wH,IAAIw9R,EAAO,GAC1Bg6mC,EAAUpogD,KAAK4wH,IAAIy9R,EAAO,GAC1BlwZ,EAAIgqgD,EAAUA,EAChBnogD,KAAKuxH,IAAKisH,EAAGnhN,IAAMr8B,KAAKsmC,GAAM,KAC1BtmC,KAAKuxH,IAAK2vI,EAAG7kO,IAAMr8B,KAAKsmC,GAAM,KAC9B8h+C,EACAA,EAER,OADU,EAAIpogD,KAAK0xH,MAAM1xH,KAAK4yF,KAAKz0F,GAAI6B,KAAK4yF,KAAK,EAAIz0F,IAV3C,IAWE,EAOV4pgD,GAA4B,CAAC5s4C,EAAQwmE,KACvC,MAAMkm0C,EAAYlm0C,EAAWolC,qBAAqB5rG,EAAOyrG,gBACnDkhyC,EAAYnm0C,EAAWolC,qBAAqB5rG,EAAO2rG,gBAGzD,OAFA0gyC,EAAcK,GACdL,EAAcM,GACP,CAAED,YAAWC,YAAW,EAO7BG,GAAoB,EAAGJ,YAAWC,aAAaF,KACjDC,EAAUzmgD,GAAKwmgD,EACfC,EAAU1ngD,GAAKyngD,EACfE,EAAU1mgD,GAAKwmgD,EACfE,EAAU3ngD,GAAKyngD,EACR,CAAEC,YAAWC,cAKlBI,GAA4B,EAAGL,YAAWC,aAAanm0C,KACzD,MAAMklC,EAAKllC,EAAWyrN,qBAAqB06mC,GACrChkgD,EAAK69L,EAAWyrN,qBAAqBy6mC,GAC3C,OAAO,IAAIns+C,OAAOC,KAAK6tX,aAAa3iL,EAAI/iO,EAAG,EAqB/C,MAAMk2Z,GACF,WAAA58Z,EAAY,QAAEgoH,EAAU,KACpBjoH,KAAKioH,QAAUA,CACnB,CAaA,IAAAnlE,EAAK,QAAEoqV,IACH,OAAOpqV,GAAKoqV,EAChB,EAQJ,MAAMg+nC,WAAkCrumC,GACpC,WAAA58Z,CAAY02B,GACR,IAAI,gBAAEw0+C,EAAkB,IAAOx0+C,EAC/B6W,MAD6CyvX,EAAOtmY,EAAI,CAAC,qBAEzD32B,KAAKmrgD,gBAAkB,GACvBnrgD,KAAKmrgD,gBAAkBA,CAC3B,CACA,SAAAhumC,EAAU,QAAEjwB,EAAO,IAAE79W,EAAG,oBAAE2vY,IACtB,MAAMr/X,EAAOtQ,EAAIgR,UAEjB,OADAgq+C,EAAc1q+C,GACVA,GAAQ3/B,KAAKioH,QACN,CACHmnS,SAAUpvZ,KAAK8iD,KAAK,CAChBoqV,YAEJ7oR,SAAS,GAGV,CACH+qS,SAAUpvZ,KAAKmpZ,QAAQ,CACnBjc,QAASo9nC,GAA8Bj7+C,EAAK2vY,EAAqB9xB,EAASltY,KAAKmrgD,iBAC/E97+C,MACA2vY,wBAGZ,EAKJ,MAAMl8W,GAAQoqV,GACOA,EAAQ79W,KAAK8uL,GAAW,IAAIqtM,EAAQ,CACjD7sX,SAAU49X,EAAYjyP,YAAY6zC,GAClC+uL,QAAS,CAAC/uL,OA2BlB,MAAMitzC,WAAsBF,GACxB,WAAAjrgD,CAAY02B,GACR,IAAI,YAAE4xxB,EAAc,IAAK,SAAElikB,EAAW,IAAO1vN,EAC7C6W,MAD2DyvX,EAAOtmY,EAAI,CAAC,cAAe,cAEtF32B,KAAKovZ,SAAW,GAChBpvZ,KAAK2L,MAAQ,CAAEg0B,MAAO,GACtB3/B,KAAKuozB,YAAcA,EACnBvozB,KAAKqmP,SAAWA,CACpB,CACA,SAAA82K,EAAU,QAAEjwB,EAAO,IAAE79W,EAAG,oBAAE2vY,IACtB,MAAMr/X,EAAOtQ,EAAIgR,UACjBgq+C,EAAc1q+C,GACd,MAAMs5B,EAAW,CAAEt5B,QACnB,IAAI0kF,GAAU,EAMd,OALIrkH,KAAK2L,MAAMg0B,MAAQ3/B,KAAKioH,SAAWhvD,EAASt5B,MAAQ3/B,KAAKioH,UAEzD5D,GAAW09C,EAAU/hK,KAAK2L,MAAOstD,IAErCj5D,KAAK2L,MAAQstD,EACTt5B,GAAQ3/B,KAAKioH,QACN,CACHmnS,SAAUpvZ,KAAK8iD,KAAK,CAAEoqV,YACtB7oR,WAGD,CACH+qS,SAAUpvZ,KAAKmpZ,QAAQ,CACnBjc,QAASo9nC,GAA8Bj7+C,EAAK2vY,EAAqB9xB,EAASltY,KAAKmrgD,iBAC/E97+C,MACA2vY,wBAGZ,CACA,OAAA7V,EAAQ,QAAEjc,EAAO,IAAE79W,EAAG,oBAAE2vY,IAKpB,OAJAh/Z,KAAKovZ,SAAW,GAChBliB,EAAQhoX,SAASi5L,IACbn+M,KAAKstZ,oBAAoBnvM,EAAQ9uL,EAAK2vY,EAAoB,IAEvDh/Z,KAAKovZ,QAChB,CACA,mBAAA9B,CAAoBnvM,EAAQ9uL,EAAKm1K,GAC7B,IAAI+jnB,EAAcvozB,KAAKuozB,YACnBp/Z,EAAU,KACd,IAAK,IAAIvoZ,EAAI,EAAGA,EAAIZ,KAAKovZ,SAAS/uZ,OAAQO,IAAK,CAC3C,MAAM8/C,EAAY1gD,KAAKovZ,SAASxuZ,GAChCypgD,EAAc3p9C,EAAUs9E,QACxB,MAAMirB,EAAW+nQ,GAAsBtwW,EAAUs9E,OAAO59F,YAAYkd,SAAUi/W,EAAYjyP,YAAY6zC,GAAQ7gK,UAC1G2rG,EAAWs/pB,IACXA,EAAct/pB,EACdkgQ,EAAUzoW,EAElB,CACA,GAAIyoW,EAEA,GADAkhnC,EAAclhnC,EAAQnrR,QAClBws4C,GAA6BrhnC,EAAQnrR,OAAQwmE,EAAYxkM,KAAKqmP,UAAUzpN,SAAS2/X,EAAYjyP,YAAY6zC,IACzGgrM,EAAQtnZ,KAAKs8M,OAEZ,CACD,MAAMgrM,EAAU,IAAIqC,EAAQ,CAAEte,QAAS,CAAC/uL,KACxCn+M,KAAKovZ,SAASvtZ,KAAKsnZ,EACvB,KAEC,CACD,MAAMA,EAAU,IAAIqC,EAAQ,CAAEte,QAAS,CAAC/uL,KACxCn+M,KAAKovZ,SAASvtZ,KAAKsnZ,EACvB,CACJ,EAyDJ,MAAM6T,WAA8BH,GAChC,WAAA58Z,CAAY02B,GACR,IAAI,QAAEsxF,EAAO,OAAEqvB,EAAS,IAAO3gH,EAAIxN,EAAU8zY,EAAOtmY,EAAI,CAAC,UAAW,WACpE6W,MAAM,CAAEy6E,YACRjoH,KAAKktY,QAAU,GACfltY,KAAKovZ,SAAW,GAChBpvZ,KAAK2L,MAAQ,CAAEg0B,MAAO,GACtB3/B,KAAKk9Z,aAAe,IAAI,IAAa59Z,OAAOa,OAAO,CAAE8nH,QAASjoH,KAAKioH,QAASqvB,UAAUnuH,GAC1F,CACA,SAAAg0Y,CAAU1sW,GACN,IAAI4zD,GAAU,EACV1kF,EAAO8wB,EAAMphC,IAAIgR,UACrBgq+C,EAAc1q+C,GACdA,EAAO98B,KAAKogD,MAAMtjB,GAClB,MAAMh0B,EAAQ,CAAEg0B,KAAMA,GACtB,IAAKoiI,EAAUtxG,EAAMy8U,QAASltY,KAAKktY,SAAU,CACzC7oR,GAAU,EAEVrkH,KAAKktY,QAAU,IAAIz8U,EAAMy8U,SACzB,MAAM5hW,EAAStrC,KAAKktY,QAAQ79W,KAAK8uL,IAC7B,MAAMx/K,EAAW49X,EAAYjyP,YAAY6zC,GAEzC,MAAO,CACH5xM,KAAM,UACNw4B,SAAU,CAAEx4B,KAAM,QAASu4B,YAHX,CAACnG,EAASS,MAAOT,EAASO,QAI1CsJ,WAAY,CAAE21K,UACjB,IAELn+M,KAAKk9Z,aAAar4Q,KAAKv5G,EAC3B,CAQA,OAPK+4E,IACGrkH,KAAK2L,MAAMg0B,MAAQ3/B,KAAKioH,SAAWt8G,EAAMg0B,MAAQ3/B,KAAKioH,WACtD5D,GAAW09C,EAAU/hK,KAAK2L,MAAOA,IAGzC3L,KAAK2L,MAAQA,EAEgB,IAAzB8kD,EAAMy8U,QAAQ7sY,QACdL,KAAKovZ,SAAW,GACT,CAAEA,SAAUpvZ,KAAKovZ,SAAU/qS,aAElCA,IACArkH,KAAKovZ,SAAWpvZ,KAAKmpZ,QAAQ14V,IAE1B,CAAE2+V,SAAUpvZ,KAAKovZ,SAAU/qS,WACtC,CACA,OAAA8kS,EAAQ,IAAE95X,IACN,MAAMsQ,EAAOtQ,EAAIgR,UAEjB,OADAgq+C,EAAc1q+C,GACP3/B,KAAKk9Z,aACPnO,YAAY,EAAE,KAAM,GAAI,IAAK,IAAKlsZ,KAAKogD,MAAMtjB,IAC7CtQ,KAAK8iD,GAAYnyE,KAAKq9Z,iBAAiBlrV,IAChD,CACA,gBAAAkrV,EAAmBt4X,UAAYD,aAAc1F,EAAKF,IAAO,WAAEsJ,IACvD,GAAIA,EAAW2gX,QACX,OAAO,IAAIqC,EAAQ,CACfte,QAASltY,KAAKk9Z,aACTtC,UAAUpyX,EAAW2yX,WAAYp7V,KACjC1wC,KAAKkuY,GAASA,EAAK/0X,WAAW21K,SACnCx/K,SAAU,CAAEO,MAAKE,SAGzB,MAAM++K,EAAS31K,EAAW21K,OAC1B,OAAO,IAAIqtM,EAAQ,CACfte,QAAS,CAAC/uL,GACVx/K,SAAU49X,EAAYjyP,YAAY6zC,IAE1C,EA+GJ,MAAMq/M,GACF,WAAAv9Z,CAAYitY,EAASkiB,GACjBpvZ,KAAKktY,QAAU,CAAEp+R,IAAKo+R,EAAQ7sY,QAC9B,MAAMo9Z,EAAsBrO,EAAS//X,KAAKruB,GAAMA,EAAEuoD,QAC5Cm0W,EAAmBD,EAAoB/pY,QAAO,CAAC1yB,EAAGsC,IAAMtC,EAAIsC,GAAG,GACrEtD,KAAKovZ,SAAW,CACZ7lW,MAAO6lW,EAAS/uZ,OAChB6sY,QAAS,CACLywB,KAAMD,EAAmBtO,EAAS/uZ,OAClCyuG,IAAK4uT,EACL7vZ,IAAKhL,KAAKgL,OAAO4vZ,GACjB9vZ,IAAK9K,KAAK8K,OAAO8vZ,IAG7B,EAEJ,MAAMG,GAuCF,MAAAtvS,EAAO,MAAE/kE,EAAK,SAAE5qB,GAAY8nG,EAAOp3G,GAE/B,MAEMyuY,EAAM,cAFEv0W,EAAQ1mD,KAAK8K,IAAI,GAAI84H,EAAM2oR,SAASliB,QAAQywB,MAAQ,UAAY,oYAMyDp0W,mBAEjI8lH,EAAQ,cAAc9lH,YAE5B3qB,EAASuG,OAAO5G,OAAOC,KAAKkqX,OAAOqV,YAAcx0W,EACjD,GAAIgzW,EAAYC,0BAA0BntY,GAAM,CAE5C,MACM2uY,GADS,IAAIC,WACEC,gBAAgBJ,EAAK,iBAAiBz6T,gBAC3D26T,EAAMrhY,aAAa,YAAa,mBAChC,MAAMyhY,EAAiB,CACnB/uY,MACAsP,WACAC,SACAywI,QACA32E,QAASslU,GAEb,OAAO,IAAIz/X,OAAOC,KAAK2/K,OAAOy+M,sBAAsBwB,EACxD,CACA,MAAMA,EAAiB,CACnBz/X,WACAC,SACAywI,QACAohE,KAAM,CACFvgN,IAAK,6BAA6Bf,KAAK2uY,KACvC7U,OAAQ,IAAI1qX,OAAOC,KAAKgL,MAAM,GAAI,MAG1C,OAAO,IAAIjL,OAAOC,KAAKkqX,OAAO0V,EAClC,EAqCJ,MAAMC,GACF,WAAAp+Z,IAZJ,SAAgBq+Z,EAAOC,GAGnB,IAAK,IAAI/kX,KAAY+kX,EAAM7+Z,UACvB4+Z,EAAM5+Z,UAAU85C,GAAY+kX,EAAM7+Z,UAAU85C,EAEpD,CAYQ6vW,CAAOgV,GAAiB9/X,OAAOC,KAAK+pM,YACxC,EAkBJ,IAAIw0L,IACJ,SAAWA,GACPA,EAAwC,iBAAI,kBAC5CA,EAAsC,eAAI,gBAC1CA,EAAqC,cAAI,QACzCA,EAAiC,UAAI,WACxC,CALD,CAKGA,KAA0BA,GAAwB,CAAC,IACtD,MAAMyB,GAA+B,CAAC56Z,EAAGulZ,EAAS95X,KAC1C85X,EAAQnrR,QACR3uG,EAAI46I,UAAUk/O,EAAQnrR,OAAO,EAOrC,MAAMygS,WAAwBJ,GAC1B,WAAAp+Z,EAAY,IAAEovB,EAAG,QAAE69W,EAAU,GAAE,iBAAEyxB,EAAmB,CAAC,EAAC,UAAEC,EAAY,IAAI5B,GAAsB2B,GAAiB,SAAEz+F,EAAW,IAAI09F,GAAiB,eAAEiB,EAAiBL,KAChKhxX,QAEAxtC,KAAKqvB,IAAM,KACXrvB,KAAKs/Z,aAAe,KACpBt/Z,KAAKktY,QAAU,IAAIA,GACnBltY,KAAKovZ,SAAW,GAChBpvZ,KAAK4+Z,UAAYA,EACjB5+Z,KAAKkgU,SAAWA,EAChBlgU,KAAK6+Z,eAAiBA,EAClBxvY,GACArvB,KAAK+gC,OAAO1R,EAEpB,CACA,SAAAs5X,CAAUxqM,EAAQ2gN,GACV9+Z,KAAKktY,QAAQ9+X,SAAS+vM,KAG1Bn+M,KAAKktY,QAAQrrY,KAAKs8M,GACb2gN,GACD9+Z,KAAKsuH,SAEb,CACA,UAAA2gS,CAAW/hB,EAAS4xB,GAChB5xB,EAAQhoX,SAASi5L,IACbn+M,KAAK2oZ,UAAUxqM,GAAQ,EAAK,IAE3B2gN,GACD9+Z,KAAKsuH,QAEb,CACA,YAAAs6R,CAAazqM,EAAQ2gN,GACjB,MAAM9hZ,EAAQhd,KAAKktY,QAAQ1sY,QAAQ29M,GACnC,OAAe,IAAXnhM,IAIJu/Y,EAAYx7X,OAAOo9K,EAAQ,MAC3Bn+M,KAAKktY,QAAQjqX,OAAOjG,EAAO,GACtB8hZ,GACD9+Z,KAAKsuH,UAEF,EACX,CACA,aAAAigS,CAAcrhB,EAAS4xB,GACnB,IAAI/5Y,GAAU,EAOd,OANAmoX,EAAQhoX,SAASi5L,IACbp5L,EAAU/kB,KAAK4oZ,aAAazqM,GAAQ,IAASp5L,CAAO,IAEpDA,IAAY+5Y,GACZ9+Z,KAAKsuH,SAEFvpG,CACX,CACA,YAAA6pY,CAAakQ,GACT9+Z,KAAKktY,QAAQ7sY,OAAS,EACjBy+Z,GACD9+Z,KAAKsuH,QAEb,CAIA,MAAAA,GACI,MAAMj/F,EAAMrvB,KAAKm2K,SACjB,GAAI9mJ,aAAekP,OAAOC,KAAK7T,KAAO0E,EAAIm6M,gBAAiB,CACvDjrM,OAAOC,KAAKC,MAAMC,QAAQ1+B,KAAM+8Z,GAAsBgC,iBAAkB/+Z,MACxE,MAAM,SAAEovZ,EAAQ,QAAE/qS,GAAYrkH,KAAK4+Z,UAAUzB,UAAU,CACnDjwB,QAASltY,KAAKktY,QACd79W,MACA2vY,oBAAqBh/Z,KAAKwpO,kBAG9B,GAAInlH,GAAsBt2E,MAAXs2E,EAAsB,CAIjC,MAAM46S,EAAe,IAAIt5Y,IACzB,IAAK,MAAMwjY,KAAWiG,EACY,GAA1BjG,EAAQjc,QAAQ7sY,QAChB4+Z,EAAa95Y,IAAIgkY,EAAQjc,QAAQ,IAGzC,MAAMgyB,EAAe,GAErB,IAAK,MAAM/V,KAAWnpZ,KAAKovZ,SACD,MAAlBjG,EAAQhrM,SAGkB,GAA1BgrM,EAAQjc,QAAQ7sY,OACX4+Z,EAAalzZ,IAAIo9Y,EAAQhrM,SAI1Bo+M,EAAYx7X,OAAOooX,EAAQhrM,OAAQ,MAKvC+gN,EAAar9Z,KAAKsnZ,EAAQhrM,SAGlCn+M,KAAKovZ,SAAWA,EAChBpvZ,KAAKo/Z,iBAEL9oT,uBAAsB,IAAM4oT,EAAah6Y,SAASi5L,GAAWo+M,EAAYx7X,OAAOo9K,EAAQ,SAC5F,CACA5/K,OAAOC,KAAKC,MAAMC,QAAQ1+B,KAAM+8Z,GAAsBsC,eAAgBr/Z,KAC1E,CACJ,CACA,KAAAwoO,GACI,MAAMn5M,EAAMrvB,KAAKm2K,SACjBk01C,EAAch7+C,GACdrvB,KAAKs/Z,aAAejwY,EAAIoR,YAAY,OAAQzgC,KAAKsuH,OAAOjrH,KAAKrD,OAC7DA,KAAKsuH,QACT,CACA,QAAA06G,GACQhpO,KAAKs/Z,cACL/gY,OAAOC,KAAKC,MAAMo0E,eAAe7yG,KAAKs/Z,cAC1Ct/Z,KAAKihE,OACT,CACA,KAAAA,GACIjhE,KAAKktY,QAAQhoX,SAASi5L,GAAWo+M,EAAYx7X,OAAOo9K,EAAQ,QAC5Dn+M,KAAKovZ,SAASlqY,SAASikY,GAAYA,EAAQlkY,WAC3CjlB,KAAKovZ,SAAW,EACpB,CACA,cAAAgQ,GAEI,MAAM34R,EAAQ,IAAI+2R,GAAax9Z,KAAKktY,QAASltY,KAAKovZ,UAC5C//X,EAAMrvB,KAAKm2K,SACjBn2K,KAAKovZ,SAASlqY,SAASikY,IACnB,GAA+B,IAA3BA,EAAQjc,QAAQ7sY,OAChB8oZ,EAAQhrM,OAASgrM,EAAQjc,QAAQ,QAOjC,GAHAic,EAAQhrM,OAASn+M,KAAKkgU,SAAS5xM,OAAO66R,EAAS1iR,EAAOp3G,GAEtD85X,EAAQjc,QAAQhoX,SAASi5L,GAAWo+M,EAAYx7X,OAAOo9K,EAAQ,QAC3Dn+M,KAAK6+Z,eAAgB,CAErB,MAAMwsmC,EAAuB9umC,EAAYI,iBAAiBxT,EAAQhrM,QAC5D4+M,GAAsBuumC,UACtBvumC,GAAsBwC,cAC5BpW,EAAQhrM,OAAO19K,YAAY4q+C,GAE1B5s+C,IACGF,OAAOC,KAAKC,MAAMC,QAAQ1+B,KAAM+8Z,GAAsBwC,cAAepW,GACrEnpZ,KAAK6+Z,eAAepgY,EAAO0qX,EAAS95X,EAAI,GAEhD,CAEJktY,EAAYx7X,OAAOooX,EAAQhrM,OAAQ9uL,EAAI,GAE/C,kEClgCJ,MAAM,MACJ0u5B,EAAK,WACLwtlB,EAAU,cACVC,EAAa,SACbrtlB,EAAQ,YACRL,EAAW,QACX36xB,EAAO,IACP/9I,EAAG,OACHw26B,EAAM,aACN0E,EAAY,OACZlC,EAAM,WACNqtlB,EAAU,aACVC,EAAY,eACZC,EAAc,WACdC,EAAU,WACVC,EAAU,YACV7tlB,GACE,6DCpBW,SAAS366B,EAAK6N,EAAI+wY,GAC/B,OAAO,WACL,OAAO/wY,EAAG3Q,MAAM0hZ,EAAS7hZ,UAC3B,CACF,wICAA,MAAOmE,SAAQ,GAAIjF,OAAOI,WACpB,eAACub,GAAkB3b,QACnB,SAACqC,EAAQ,YAAEwoB,GAAezoB,OAE1BoqgD,GAAU54+C,EAGb5zB,OAAOY,OAAO,MAHQ6rgD,IACrB,MAAMp17C,EAAM,EAAS/2E,KAAKmsgD,GAC1B,OAAO74+C,EAAMyjD,KAASzjD,EAAMyjD,GAAOA,EAAI50E,MAAM,GAAI,GAAGwN,cAAc,GAFvD,IAAC2jB,EAKhB,MAAM84+C,EAAcz//C,IAClBA,EAAOA,EAAKgD,cACJw8/C,GAAUD,EAAOC,KAAWx//C,GAGhC0//C,EAAa1//C,GAAQw//C,UAAgBA,IAAUx//C,GAS/C,QAACoF,GAAWlS,MASZ07c,EAAc8wjC,EAAW,aAqBzB3/vC,EAAgB0/vC,EAAW,eA2B3Bhx8C,EAAWix8C,EAAW,UAQtBjnwC,EAAainwC,EAAW,YASxB3o9C,EAAW2o9C,EAAW,UAStBhnwC,EAAY8mwC,GAAoB,OAAVA,GAAmC,iBAAVA,EAiB/Cjq2C,EAAiB4b,IACrB,GAAoB,WAAhBou1C,EAAOpu1C,GACT,OAAO,EAGT,MAAMh+K,EAAYub,EAAeyiK,GACjC,QAAsB,OAAdh+K,GAAsBA,IAAcJ,OAAOI,WAAkD,OAArCJ,OAAO2b,eAAevb,IAA0ByqB,KAAeuzJ,GAAU/7K,KAAY+7K,EAAI,EAUrJ22F,EAAS23vC,EAAW,QASpB1ylB,EAAS0ylB,EAAW,QASpB1mwC,EAAS0mwC,EAAW,QASpBE,EAAaF,EAAW,YAsCxBxylB,EAAoBwylB,EAAW,oBAE9BxmwC,EAAkB2mwC,EAAW/mwC,EAAYgnwC,GAAa,CAAC,iBAAkB,UAAW,WAAY,WAAW/8+C,IAAI28+C,GA2BtH,SAAS9m/C,EAAQgoM,EAAKh8M,GAAI,WAACm7/C,GAAa,GAAS,CAAC,GAEhD,GAAIn/yC,QACF,OAGF,IAAItsN,EACA4B,EAQJ,GALmB,iBAAR0qN,IAETA,EAAM,CAACA,IAGLv7M,EAAQu7M,GAEV,IAAKtsN,EAAI,EAAG4B,EAAI0qN,EAAI7sN,OAAQO,EAAI4B,EAAG5B,IACjCsQ,EAAGtR,KAAK,KAAMstN,EAAItsN,GAAIA,EAAGssN,OAEtB,CAEL,MAAM55M,EAAO+4/C,EAAa/sgD,OAAOqP,oBAAoBu+M,GAAO5tN,OAAOgU,KAAK45M,GAClEruF,EAAMvrH,EAAKjT,OACjB,IAAIwkB,EAEJ,IAAKjkB,EAAI,EAAGA,EAAIi+H,EAAKj+H,IACnBikB,EAAMvR,EAAK1S,GACXsQ,EAAGtR,KAAK,KAAMstN,EAAIroM,GAAMA,EAAKqoM,EAEjC,CACF,CAEA,SAAS2zuB,EAAQ3zuB,EAAKroM,GACpBA,EAAMA,EAAItV,cACV,MAAM+D,EAAOhU,OAAOgU,KAAK45M,GACzB,IACIw7B,EADA9nP,EAAI0S,EAAKjT,OAEb,KAAOO,KAAM,GAEX,GADA8nP,EAAOp1O,EAAK1S,GACRikB,IAAQ6jO,EAAKn5O,cACf,OAAOm5O,EAGX,OAAO,IACT,CAEA,MAAM4jxC,EAEsB,oBAAfrqgD,WAAmCA,WACvB,oBAATG,KAAuBA,KAA0B,oBAAXF,OAAyBA,OAAS6K,OAGlFw//C,EAAoBp/9C,IAAagua,EAAYhua,IAAYA,IAAYm/9C,EAkLrErr/C,GAAgBC,EAKG,oBAAfvB,YAA8B1E,EAAe0E,YAH9Cos/C,GACE7q/C,GAAc6q/C,aAAiB7q/C,GAHrB,IAACA,EAetB,MAiCMsr/C,EAAaR,EAAW,mBAWxB,EAAiB,GAAGrsgD,oBAAoB,CAACutN,EAAK1gE,IAAS7sJ,EAAeC,KAAKstN,EAAK1gE,GAA/D,CAAsEltJ,OAAOI,WAS9F0q8B,EAAW4hkB,EAAW,UAEtBS,EAAoB,CAACv/yC,EAAKmhN,KAC9B,MAAMviR,EAAcxsJ,OAAOq+B,0BAA0BuvL,GAC/Cw/yC,EAAqB,CAAC,EAE5Bxn/C,EAAQ4mI,GAAa,CAACzgG,EAAY3gD,KAChC,IAAIu1d,GAC2C,KAA1CA,EAAM5xD,EAAQhjX,EAAY3gD,EAAMwiN,MACnCw/yC,EAAmBhigD,GAAQu1d,GAAO50a,EACpC,IAGF/rD,OAAOkU,iBAAiB05M,EAAKw/yC,EAAmB,EAgG5CC,EAAYX,EAAW,iBAQvBY,GAAkBC,EAkBE,mBAAjBzl/C,aAlBsC0l/C,EAmB7C9nwC,EAAWsnwC,EAAQ36+C,aAlBfk7+C,EACKzl/C,aAGF0l/C,GAAyBzv1C,EAW7B,SAASx6K,KAAKwF,WAXsB8+D,EAWV,GAV3Bml8C,EAAQ3/+C,iBAAiB,WAAW,EAAE9kB,SAAQ2H,WACxC3H,IAAWykgD,GAAW98/C,IAAS6tK,GACjCl2G,EAAU9mE,QAAU8mE,EAAUhpB,OAAVgpB,EACtB,IACC,GAEKzF,IACNyF,EAAUtlE,KAAK6/D,GACf4q8C,EAAQ36+C,YAAY0rJ,EAAO,IAAI,GAEC37G,GAAO77C,WAAW67C,IAhBlC,IAAEmr8C,EAAuBC,EAKbzv1C,EAAOl2G,EAiBzC,MAAM4l8C,EAAiC,oBAAnBj5lC,eAClBA,eAAezwa,KAAKipgD,GAAgC,oBAAZrmgD,SAA2BA,QAAQ656B,UAAY8slB,EAQzF,GACEj7/C,UACA26P,gBACA/G,SAloBF,SAAkB7nF,GAChB,OAAe,OAARA,IAAiBy9R,EAAYz9R,IAA4B,OAApBA,EAAIz9K,cAAyBk7c,EAAYz9R,EAAIz9K,cACpF+kQ,EAAWtnF,EAAIz9K,YAAYslQ,WAAa7nF,EAAIz9K,YAAYslQ,SAAS7nF,EACxE,EAgoBEy7vB,WApfkB4ylB,IAClB,IAAI3p/C,EACJ,OAAO2p/C,IACgB,mBAAb3ylB,UAA2B2ylB,aAAiB3ylB,UAClDp0qB,EAAW+mwC,EAAM3n7C,UACY,cAA1BhiE,EAAO0p/C,EAAOC,KAEL,WAAT3p/C,GAAqB4iP,EAAW+mwC,EAAMxngD,WAAkC,sBAArBwngD,EAAMxngD,YAGhE,EA2eA806B,kBA9mBF,SAA2B37vB,GACzB,IAAIl6J,EAMJ,OAJEA,EAD0B,oBAAhBlF,aAAiCA,YAAkB,OACpDA,YAAY0C,OAAO08J,GAEnB,GAAUA,EAAU,QAAM4uF,EAAc5uF,EAAIx1J,QAEhD1E,CACT,EAumBEw3C,WACA1X,WACAuiN,UA9jBgBkmwC,IAAmB,IAAVA,IAA4B,IAAVA,EA+jB3C9mwC,WACAnjG,gBACA0jG,mBACA2mwC,YACA/mwC,aACAgnwC,YACAjxjC,cACA9mM,SACAilqB,SACAh0qB,SACA8ksB,WACAplsB,aACAu0qB,SA9gBgB77vB,GAAQunF,EAASvnF,IAAQsnF,EAAWtnF,EAAIkoF,MA+gBxD4zqB,oBACAv45B,eACAir/C,aACAhn/C,UACA47O,MAhZF,SAASA,IACP,MAAM,SAACkswC,GAAYT,EAAiBvsgD,OAASA,MAAQ,CAAC,EAChDwjB,EAAS,CAAC,EACVk25B,EAAc,CAACh8vB,EAAK74J,KACxB,MAAM4uN,EAAYu5xC,GAAYnskB,EAAQr96B,EAAQqB,IAAQA,EAClDi9I,EAAct+I,EAAOiwN,KAAe3xE,EAAc4b,GACpDl6J,EAAOiwN,GAAaqtB,EAAMt9O,EAAOiwN,GAAY/1D,GACpC5b,EAAc4b,GACvBl6J,EAAOiwN,GAAaqtB,EAAM,CAAC,EAAGpjF,GACrB/rK,EAAQ+rK,GACjBl6J,EAAOiwN,GAAa/1D,EAAI37K,QAExByhB,EAAOiwN,GAAa/1D,CACtB,EAGF,IAAK,IAAI98K,EAAI,EAAG4B,EAAIpC,UAAUC,OAAQO,EAAI4B,EAAG5B,IAC3CR,UAAUQ,IAAMskB,EAAQ9kB,UAAUQ,GAAI846B,GAExC,OAAOl25B,CACT,EA6XE6lY,OAjXa,CAACroZ,EAAGsC,EAAG2+Y,GAAUoqnC,cAAa,CAAC,KAC5Cnn/C,EAAQ5hB,GAAG,CAACo6K,EAAK74J,KACXo9X,GAAWj9I,EAAWtnF,GACxB18K,EAAE6jB,GAAOxhB,EAAKq6K,EAAKukO,GAEnBjhZ,EAAE6jB,GAAO64J,CACX,GACC,CAAC2u1C,eACGrrgD,GA0WPqxB,KA7eYskD,GAAQA,EAAItkD,KACxBskD,EAAItkD,OAASskD,EAAIlqE,QAAQ,qCAAsC,IA6e/DwggD,SAjWgBv06C,IACc,QAA1BA,EAAQ3/E,WAAW,KACrB2/E,EAAUA,EAAQ32F,MAAM,IAEnB22F,GA8VP+w2B,SAlVe,CAACxp8B,EAAaitgD,EAAkBjg+C,EAAO6+G,KACtD7rJ,EAAYP,UAAYJ,OAAOY,OAAOgtgD,EAAiBxtgD,UAAWosJ,GAClE7rJ,EAAYP,UAAUO,YAAcA,EACpCX,OAAO4D,eAAejD,EAAa,QAAS,CAC1CkB,MAAO+rgD,EAAiBxtgD,YAE1ButC,GAAS3tC,OAAOa,OAAOF,EAAYP,UAAWutC,EAAM,EA6UpDkg+C,aAjUmB,CAACC,EAAWC,EAASxg/C,EAAQyg/C,KAChD,IAAIrg+C,EACArsC,EACA4rJ,EACJ,MAAM/xG,EAAS,CAAC,EAIhB,GAFA4y9C,EAAUA,GAAW,CAAC,EAEL,MAAbD,EAAmB,OAAOC,EAE9B,EAAG,CAGD,IAFApg+C,EAAQ3tC,OAAOqP,oBAAoBy+/C,GACnCxsgD,EAAIqsC,EAAM5sC,OACHO,KAAM,GACX4rJ,EAAOv/G,EAAMrsC,GACP0sgD,IAAcA,EAAW9g3C,EAAM4g3C,EAAWC,IAAc5y9C,EAAO+xG,KACnE6g3C,EAAQ7g3C,GAAQ4g3C,EAAU5g3C,GAC1B/xG,EAAO+xG,IAAQ,GAGnB4g3C,GAAuB,IAAXvg/C,GAAoB5R,EAAemy/C,EACjD,OAASA,KAAevg/C,GAAUA,EAAOug/C,EAAWC,KAAaD,IAAc9tgD,OAAOI,WAEtF,OAAO2tgD,CAAO,EA2SdvB,SACAE,aACAjk9C,SAjSe,CAAC4uB,EAAKwvzB,EAAcxn2B,KACnCg4C,EAAM72E,OAAO62E,SACI5oC,IAAbpP,GAA0BA,EAAWg4C,EAAIt2E,UAC3Cs+B,EAAWg4C,EAAIt2E,QAEjBs+B,GAAYwn2B,EAAa9l4B,OACzB,MAAMkyD,EAAYokB,EAAIn2E,QAAQ2l4B,EAAcxn2B,GAC5C,OAAsB,IAAf4zB,GAAoBA,IAAc5zB,CAAQ,EA2RjDkvF,QAhRek+4C,IACf,IAAKA,EAAO,OAAO,KACnB,GAAIp6/C,EAAQo6/C,GAAQ,OAAOA,EAC3B,IAAInrgD,EAAImrgD,EAAM1rgD,OACd,IAAKijD,EAAS1iD,GAAI,OAAO,KACzB,MAAM69N,EAAM,IAAIh/N,MAAMmB,GACtB,KAAOA,KAAM,GACX69N,EAAI79N,GAAKmrgD,EAAMnrgD,GAEjB,OAAO69N,CAAG,EAwQV8uyC,aA7OmB,CAACrgzC,EAAKh8M,KACzB,MAEMw4W,GAFYx8J,GAAOA,EAAIvrN,IAED/B,KAAKstN,GAEjC,IAAI1pM,EAEJ,MAAQA,EAASkmW,EAAU3oX,UAAYyiB,EAAOtiB,MAAM,CAClD,MAAMs5f,EAAOh3e,EAAOriB,MACpB+P,EAAGtR,KAAKstN,EAAKstS,EAAK,GAAIA,EAAK,GAC7B,GAoOAgzgC,SAzNe,CAACC,EAAQ927C,KACxB,IAAI1iB,EACJ,MAAMwqK,EAAM,GAEZ,KAAwC,QAAhCxqK,EAAUw58C,EAAOr7/C,KAAKukE,KAC5B8nJ,EAAI58N,KAAKoyD,GAGX,OAAOwqK,CAAG,EAkNV+tyC,aACA7sgD,eAAc,EACd+tgD,WAAY,EACZjB,oBACAkB,cAzKqBzgzC,IACrBu/yC,EAAkBv/yC,GAAK,CAAC7hK,EAAY3gD,KAElC,GAAIs6P,EAAW93C,KAA6D,IAArD,CAAC,YAAa,SAAU,UAAU1sN,QAAQkK,GAC/D,OAAO,EAGT,MAAMvJ,EAAQ+rN,EAAIxiN,GAEbs6P,EAAW7jQ,KAEhBkqD,EAAW1nD,YAAa,EAEpB,aAAc0nD,EAChBA,EAAWtnD,UAAW,EAInBsnD,EAAWp/C,MACdo/C,EAAWp/C,IAAM,KACf,MAAMub,MAAM,qCAAwC9c,EAAO,IAAK,GAEpE,GACA,EAmJFkjgD,YAhJkB,CAACC,EAAe5xwC,KAClC,MAAM/uC,EAAM,CAAC,EAEP0zG,EAAUniG,IACdA,EAAIv5M,SAAQ/jB,IACV+rN,EAAI/rN,IAAS,CAAI,GACjB,EAKJ,OAFAwQ,EAAQk8/C,GAAiBjtsC,EAAOitsC,GAAiBjtsC,EAAO9gU,OAAO+tgD,GAAejpgD,MAAMq3P,IAE7E/uC,CAAG,EAsIVwkyB,YAlNkB/66B,GACXA,EAAIpnE,cAAc9C,QAAQ,yBAC/B,SAAkBrJ,EAAGi9O,EAAI0jB,GACvB,OAAO1jB,EAAGzvL,cAAgBmzM,CAC5B,IA+MFjhN,KApIW,OAqIXgr9C,eAnIqB,CAAC3sgD,EAAOg8H,IACb,MAATh8H,GAAiBgkC,OAAOuC,SAASvmC,GAASA,GAASA,EAAQg8H,EAmIlE0j0B,UACA9z7B,OAAQu//C,EACRC,mBACAwB,oBA5HF,SAA6BhC,GAC3B,SAAUA,GAAS/mwC,EAAW+mwC,EAAM3n7C,SAAkC,aAAvB2n7C,EAAM5h/C,IAA+B4h/C,EAAMpqgD,GAC5F,EA2HEqsgD,aAzHoB9gzC,IACpB,MAAMv6K,EAAQ,IAAIlzC,MAAM,IAElB21yB,EAAQ,CAACvtyB,EAAQjH,KAErB,GAAIqkQ,EAASp9P,GAAS,CACpB,GAAI8qC,EAAMnyC,QAAQqH,IAAW,EAC3B,OAGF,KAAK,WAAYA,GAAS,CACxB8qC,EAAM/xC,GAAKiH,EACX,MAAMiI,EAAS6B,EAAQ9J,GAAU,GAAK,CAAC,EASvC,OAPAqd,EAAQrd,GAAQ,CAAC1G,EAAO0jB,KACtB,MAAMop/C,EAAe74tB,EAAMj0yB,EAAOP,EAAI,IACrCu6c,EAAY8yjC,KAAkBn+/C,EAAO+U,GAAOop/C,EAAa,IAG5Dt79C,EAAM/xC,QAAKmtC,EAEJj+B,CACT,CACF,CAEA,OAAOjI,CAAM,EAGf,OAAOutyB,EAAMlolB,EAAK,EAAE,EA8FpBy/yC,YACAuB,WA1FkBnC,GAClBA,IAAU9mwC,EAAS8mwC,IAAU/mwC,EAAW+mwC,KAAW/mwC,EAAW+mwC,EAAM3qgD,OAAS4jQ,EAAW+mwC,EAAM/k/C,OA0F9FI,aAAcwl/C,EACdG,OACA5nwC,WA3DkB4mwC,GAAmB,MAATA,GAAiB/mwC,EAAW+mwC,EAAMpqgD,KC5pBhE,SAAS4pgD,EAAWx5+C,EAASmJ,EAAM4gS,EAAQ/2P,EAASt2C,GAClDjH,MAAM5nB,KAAKI,MAEPwnB,MAAM2m/C,kBACR3m/C,MAAM2m/C,kBAAkBnugD,KAAMA,KAAKC,aAEnCD,KAAK2yC,OAAQ,IAAKnrB,OAASmrB,MAG7B3yC,KAAK+xB,QAAUA,EACf/xB,KAAK0K,KAAO,aACZwwB,IAASl7B,KAAKk7B,KAAOA,GACrB4gS,IAAW97T,KAAK87T,OAASA,GACzB/2P,IAAY/kE,KAAK+kE,QAAUA,GACvBt2C,IACFzuB,KAAKyuB,SAAWA,EAChBzuB,KAAKylB,OAASgJ,EAAShJ,OAASgJ,EAAShJ,OAAS,KAEtD,CAEA8hW,EAAMkilB,SAAS8hkB,EAAY/j/C,MAAO,CAChC81B,OAAQ,WACN,MAAO,CAELvrB,QAAS/xB,KAAK+xB,QACdrnB,KAAM1K,KAAK0K,KAEX2M,YAAarX,KAAKqX,YAClB0yI,OAAQ/pJ,KAAK+pJ,OAEb8ijB,SAAU7ssB,KAAK6ssB,SACfpvoB,WAAYz9D,KAAKy9D,WACjBC,aAAc19D,KAAK09D,aACnB/qB,MAAO3yC,KAAK2yC,MAEZmpR,OAAQyrD,EAAMympC,aAAahugD,KAAK87T,QAChC5gS,KAAMl7B,KAAKk7B,KACXzV,OAAQzlB,KAAKylB,OAEjB,IAGF,MAAM,EAAY8l/C,EAAW7rgD,UACvBosJ,EAAc,CAAC,EAErB,CACE,uBACA,iBACA,eACA,YACA,cACA,4BACA,iBACA,mBACA,kBACA,eACA,kBACA,mBAEA5mI,SAAQgW,IACR4wH,EAAY5wH,GAAQ,CAAC/5B,MAAO+5B,EAAK,IAGnC57B,OAAOkU,iBAAiB+3/C,EAAYz/2C,GACpCxsJ,OAAO4D,eAAe,EAAW,eAAgB,CAAC/B,OAAO,IAGzDoqgD,EAAWxt/C,KAAO,CAACjc,EAAOo5B,EAAM4gS,EAAQ/2P,EAASt2C,EAAU2/+C,KACzD,MAAMC,EAAa/ugD,OAAOY,OAAO,GAgBjC,OAdAqnX,EAAM4lpC,aAAarrgD,EAAOusgD,GAAY,SAAgBnhzC,GACpD,OAAOA,IAAQ1lM,MAAM9nB,SACvB,IAAG8sJ,GACe,iBAATA,IAGT++2C,EAAW3rgD,KAAKyugD,EAAYvsgD,EAAMiwB,QAASmJ,EAAM4gS,EAAQ/2P,EAASt2C,GAElE4/+C,EAAW/69C,MAAQxxC,EAEnBusgD,EAAW3jgD,KAAO5I,EAAM4I,KAExB0jgD,GAAe9ugD,OAAOa,OAAOkugD,EAAYD,GAElCC,CAAU,EAGnB,UCxFA,SAASC,EAAYvC,GACnB,OAAOxkpC,EAAMzlN,cAAciq2C,IAAUxkpC,EAAM51W,QAAQo6/C,EACrD,CASA,SAASwC,EAAe1p/C,GACtB,OAAO0iW,EAAMx/T,SAASljC,EAAK,MAAQA,EAAI9iB,MAAM,GAAI,GAAK8iB,CACxD,CAWA,SAAS0k5B,GAAUlz4B,EAAMxR,EAAK2p/C,GAC5B,OAAKn4+C,EACEA,EAAKr0B,OAAO6iB,GAAKwK,KAAI,SAAcguJ,EAAOz8K,GAG/C,OADAy8K,EAAQkx1C,EAAelx1C,IACfmx1C,GAAQ5tgD,EAAI,IAAMy8K,EAAQ,IAAMA,CAC1C,IAAGxwK,KAAK2hgD,EAAO,IAAM,IALH3p/C,CAMpB,CAaA,MAAMwyvB,GAAa9vZ,EAAM4lpC,aAAa5lpC,EAAO,CAAC,EAAG,MAAM,SAAgB/6N,GACrE,MAAO,WAAWnhJ,KAAKmhJ,EACzB,IAkKA,GAzIA,SAAoB0gE,EAAKuhzC,EAAUtl/C,GACjC,IAAKo+V,EAAMtiH,SAAS/3C,GAClB,MAAM,IAAIrtN,UAAU,4BAItB4ugD,EAAWA,GAAY,IAAyBr1lB,SAYhD,MAAMs1lB,GATNvl/C,EAAUo+V,EAAM4lpC,aAAahk/C,EAAS,CACpCul/C,YAAY,EACZF,MAAM,EACN52qC,SAAS,IACR,GAAO,SAAiB/5R,EAAQh2D,GAEjC,OAAQ0/W,EAAM4zF,YAAYtzc,EAAOg2D,GACnC,KAE2B6w8C,WAErBzp2C,EAAU97I,EAAQ87I,SAAW0p2C,EAC7BH,EAAOrl/C,EAAQql/C,KACf52qC,EAAUzuU,EAAQyuU,QAElBg3qC,GADQzl/C,EAAQpB,MAAwB,oBAATA,MAAwBA,OACpCw/V,EAAMwmpC,oBAAoBU,GAEnD,IAAKlnpC,EAAMviH,WAAW//F,GACpB,MAAM,IAAIplK,UAAU,8BAGtB,SAASy2gC,EAAan1gC,GACpB,GAAc,OAAVA,EAAgB,MAAO,GAE3B,GAAIomX,EAAMlzG,OAAOlzQ,GACf,OAAOA,EAAMinC,cAGf,GAAIm/U,EAAM1hH,UAAU1kQ,GAClB,OAAOA,EAAMoD,WAGf,IAAKqqgD,GAAWrnpC,EAAMjiH,OAAOnkQ,GAC3B,MAAM,IAAI,EAAW,gDAGvB,OAAIomX,EAAMj7G,cAAcnrQ,IAAUomX,EAAMtmW,aAAa9f,GAC5CytgD,GAA2B,mBAAT7m/C,KAAsB,IAAIA,KAAK,CAAC5mB,IAAUwmB,OAAO5J,KAAK5c,GAG1EA,CACT,CAYA,SAASwtgD,EAAextgD,EAAO0jB,EAAKwR,GAClC,IAAIooM,EAAMt9N,EAEV,GAAIA,IAAUk1B,GAAyB,iBAAVl1B,EAC3B,GAAIomX,EAAMx/T,SAASljC,EAAK,MAEtBA,EAAM6p/C,EAAa7p/C,EAAMA,EAAI9iB,MAAM,GAAI,GAEvCZ,EAAQmZ,KAAKb,UAAUtY,QAClB,GACJomX,EAAM51W,QAAQxQ,IAvGvB,SAAqBs9N,GACnB,OAAO8oJ,EAAM51W,QAAQ8sN,KAASA,EAAI92L,KAAK2m+C,EACzC,CAqGiCO,CAAY1tgD,KACnComX,EAAM2kpC,WAAW/qgD,IAAUomX,EAAMx/T,SAASljC,EAAK,SAAW45M,EAAM8oJ,EAAM15P,QAAQ1sH,IAYhF,OATA0jB,EAAM0p/C,EAAe1p/C,GAErB45M,EAAIv5M,SAAQ,SAAc20H,EAAI78H,IAC1BuqW,EAAM4zF,YAAYthU,IAAc,OAAPA,GAAgB403C,EAASrq7C,QAEtC,IAAZwzQ,EAAmB2xkB,GAAU,CAAC1k5B,GAAM7H,EAAOwx/C,GAAqB,OAAZ52qC,EAAmB/yU,EAAMA,EAAM,KACnFyx/B,EAAaz83B,GAEjB,KACO,EAIX,QAAIy03C,EAAYntgD,KAIhBstgD,EAASrq7C,OAAOml1B,GAAUlz4B,EAAMxR,EAAK2p/C,GAAOl4f,EAAan1gC,KAElD,EACT,CAEA,MAAMwxC,EAAQ,GAERm89C,EAAiBxvgD,OAAOa,OAAOk3wB,GAAY,CAC/Cs3vB,iBACAr4f,eACAg4f,gBAyBF,IAAK/mpC,EAAMtiH,SAAS/3C,GAClB,MAAM,IAAIrtN,UAAU,0BAKtB,OA5BA,SAASyqD,EAAMnpD,EAAOk1B,GACpB,IAAIkxV,EAAM4zF,YAAYh6c,GAAtB,CAEA,IAA8B,IAA1BwxC,EAAMnyC,QAAQW,GAChB,MAAMqmB,MAAM,kCAAoC6O,EAAKxpB,KAAK,MAG5D8lC,EAAM9wC,KAAKV,GAEXomX,EAAMriW,QAAQ/jB,GAAO,SAAc04I,EAAIh1H,IAKtB,OAJE0iW,EAAM4zF,YAAYthU,IAAc,OAAPA,IAAgBorB,EAAQrlK,KAChE6ugD,EAAU503C,EAAI0tO,EAAMvsT,SAASn2C,GAAOA,EAAIwN,OAASxN,EAAKwR,EAAMy4+C,KAI5Dxk9C,EAAMuvF,EAAIxjH,EAAOA,EAAKr0B,OAAO6iB,GAAO,CAACA,GAEzC,IAEA8tB,EAAM/wC,KAlB8B,CAmBtC,CAMA0oD,CAAM4iK,GAECuhzC,CACT,EChNA,SAAS5m/C,GAAO8uD,GACd,MAAMo47C,EAAU,CACd,IAAK,MACL,IAAK,MACL,IAAK,MACL,IAAK,MACL,IAAK,MACL,MAAO,IACP,MAAO,MAET,OAAOz/+C,mBAAmBqnD,GAAKlqE,QAAQ,oBAAoB,SAAkBhG,GAC3E,OAAOsogD,EAAQtogD,EACjB,GACF,CAUA,SAASuogD,GAAqB3m+C,EAAQlf,GACpCnpB,KAAKivgD,OAAS,GAEd5m+C,GAAU,GAAWA,EAAQroC,KAAMmpB,EACrC,CAEA,MAAM,GAAY6l/C,GAAqBtvgD,UAEvC,GAAU0kF,OAAS,SAAgB15E,EAAMvJ,GACvCnB,KAAKivgD,OAAOptgD,KAAK,CAAC6I,EAAMvJ,GAC1B,EAEA,GAAUoD,SAAW,SAAkBgjE,GACrC,MAAM6vrB,EAAU7vrB,EAAU,SAASpmE,GACjC,OAAOomE,EAAQ3nE,KAAKI,KAAMmB,EAAO0mB,GACnC,EAAIA,GAEJ,OAAO7nB,KAAKivgD,OAAO5/+C,KAAI,SAAcmre,GACnC,OAAO48P,EAAQ58P,EAAK,IAAM,IAAM48P,EAAQ58P,EAAK,GAC/C,GAAG,IAAI3tf,KAAK,IACd,EAEA,YC5CA,SAAS,GAAO6wK,GACd,OAAOpuJ,mBAAmBouJ,GACxBjxK,QAAQ,QAAS,KACjBA,QAAQ,OAAQ,KAChBA,QAAQ,QAAS,KACjBA,QAAQ,OAAQ,KAChBA,QAAQ,QAAS,KACjBA,QAAQ,QAAS,IACrB,CAWe,SAASku6B,GAASzq5B,EAAKmY,EAAQlf,GAE5C,IAAKkf,EACH,OAAOnY,EAGT,MAAMknuB,EAAUjuuB,GAAWA,EAAQtB,QAAU,GAEzC0/V,EAAMviH,WAAW77O,KACnBA,EAAU,CACRgkrB,UAAWhkrB,IAIf,MAAM+l/C,EAAc/l/C,GAAWA,EAAQgkrB,UAEvC,IAAI0sO,EAUJ,GAPEA,EADEq1lB,EACiBA,EAAY7m+C,EAAQlf,GAEpBo+V,EAAMiyjB,kBAAkBnx4B,GACzCA,EAAO9jC,WACP,IAAI,GAAqB8jC,EAAQlf,GAAS5kB,SAAS6yvB,GAGnDyiL,EAAkB,CACpB,MAAMC,EAAgB5p5B,EAAI1vB,QAAQ,MAEX,IAAnBs56B,IACF5p5B,EAAMA,EAAInuB,MAAM,EAAG+36B,IAErB5p5B,KAA8B,IAAtBA,EAAI1vB,QAAQ,KAAc,IAAM,KAAOq56B,CACjD,CAEA,OAAO3p5B,CACT,CCEA,SAlEA,MACE,WAAAjwB,GACED,KAAK+sH,SAAW,EAClB,CAUA,GAAA4xzB,CAAIz8hB,EAAWC,EAAUh5X,GAOvB,OANAnpB,KAAK+sH,SAASlrH,KAAK,CACjBqgZ,YACAC,WACAgtnC,cAAahm/C,GAAUA,EAAQgm/C,YAC/BC,QAASjm/C,EAAUA,EAAQim/C,QAAU,OAEhCpvgD,KAAK+sH,SAAS1sH,OAAS,CAChC,CASA,KAAAu+6B,CAAMrz5B,GACAvrB,KAAK+sH,SAASxhG,KAChBvrB,KAAK+sH,SAASxhG,GAAM,KAExB,CAOA,KAAAvG,GACMhlB,KAAK+sH,WACP/sH,KAAK+sH,SAAW,GAEpB,CAYA,OAAA7nG,CAAQhU,GACNq2W,EAAMriW,QAAQllB,KAAK+sH,UAAU,SAAwBnqH,GACzC,OAANA,GACFsO,EAAGtO,EAEP,GACF,GCjEF,IACEysgD,mBAAmB,EACnBC,mBAAmB,EACnBC,qBAAqB,GCDvB,IACEpvuC,WAAW,EACXvgF,QAAS,CACP3M,gBCJsC,oBAApBA,gBAAkCA,gBAAkB,GDKtEmmuB,SEN+B,oBAAbA,SAA2BA,SAAW,KFOxDrx5B,KGP2B,oBAATA,KAAuBA,KAAO,MHSlDyn/C,UAAW,CAAC,OAAQ,QAAS,OAAQ,OAAQ,MAAO,SIXhDC,GAAkC,oBAAXvtgD,QAA8C,oBAAbiD,SAExDuqgD,GAAkC,iBAAdr2+C,WAA0BA,gBAAa0U,EAmB3D4h+C,GAAwBF,MAC1BC,IAAc,CAAC,cAAe,eAAgB,MAAMlvgD,QAAQkvgD,GAAW11qC,SAAW,GAWhF41qC,GAE2B,oBAAtB9/I,mBAEP1t3C,gBAAgB0t3C,mBACc,mBAAvB1t3C,KAAKu+R,cAIV3lQ,GAASy0+C,IAAiBvtgD,OAAO60B,SAASkE,MAAQ,mBCvCxD,OACK,KACA,ICyFL,GA9CA,SAAwBwz+C,GACtB,SAAS/6hB,EAAUr98B,EAAMl1B,EAAO2O,EAAQkN,GACtC,IAAItS,EAAO2rB,EAAKrZ,KAEhB,GAAa,cAATtS,EAAsB,OAAO,EAEjC,MAAMmlgD,EAAe1q+C,OAAOuC,UAAUh9B,GAChC++hC,EAASzshC,GAASqZ,EAAKh2B,OAG7B,OAFAqK,GAAQA,GAAQ68W,EAAM51W,QAAQ7B,GAAUA,EAAOzP,OAASqK,EAEpD++hC,GACElirB,EAAMmmpC,WAAW59/C,EAAQpF,GAC3BoF,EAAOpF,GAAQ,CAACoF,EAAOpF,GAAOvJ,GAE9B2O,EAAOpF,GAAQvJ,GAGT0ugD,IAGL///C,EAAOpF,IAAU68W,EAAMtiH,SAASn1P,EAAOpF,MAC1CoF,EAAOpF,GAAQ,IAGFgp+B,EAAUr98B,EAAMl1B,EAAO2O,EAAOpF,GAAOsS,IAEtCuqW,EAAM51W,QAAQ7B,EAAOpF,MACjCoF,EAAOpF,GA/Cb,SAAuB+zN,GACrB,MAAMvR,EAAM,CAAC,EACP55M,EAAOhU,OAAOgU,KAAKmrN,GACzB,IAAI79N,EACJ,MAAMi+H,EAAMvrH,EAAKjT,OACjB,IAAIwkB,EACJ,IAAKjkB,EAAI,EAAGA,EAAIi+H,EAAKj+H,IACnBikB,EAAMvR,EAAK1S,GACXssN,EAAIroM,GAAO45M,EAAI55M,GAEjB,OAAOqoM,CACT,CAoCqB4izC,CAAchggD,EAAOpF,MAG9BmlgD,EACV,CAEA,GAAItopC,EAAM4xjB,WAAWs1lB,IAAalnpC,EAAMviH,WAAWypwC,EAAShy/C,SAAU,CACpE,MAAMywM,EAAM,CAAC,EAMb,OAJAq6J,EAAMgmpC,aAAakB,GAAU,CAAC/jgD,EAAMvJ,KAClCuy+B,EA1EN,SAAuBhp+B,GAKrB,OAAO68W,EAAMimpC,SAAS,gBAAiB9igD,GAAM2kB,KAAI5oB,GAC3B,OAAbA,EAAM,GAAc,GAAKA,EAAM,IAAMA,EAAM,IAEtD,CAkEgBspgD,CAAcrlgD,GAAOvJ,EAAO+rN,EAAK,EAAE,IAGxCA,CACT,CAEA,OAAO,IACT,ECzDM8jH,GAAW,CAEfg/rC,aAAc,GAEd71lB,QAAS,CAAC,MAAO,OAAQ,SAEzBC,iBAAkB,CAAC,SAA0B5q6B,EAAMghB,GACjD,MAAMonJ,EAAcpnJ,EAAQy/+C,kBAAoB,GAC1CC,EAAqBt41C,EAAYp3K,QAAQ,qBAAuB,EAChE2vgD,EAAkB5opC,EAAMtiH,SAASz1P,GAQvC,GANI2ggD,GAAmB5opC,EAAMilpC,WAAWh9/C,KACtCA,EAAO,IAAI4p6B,SAAS5p6B,IAGH+3W,EAAM4xjB,WAAW3p6B,GAGlC,OAAO0ggD,EAAqB51/C,KAAKb,UAAU,GAAejK,IAASA,EAGrE,GAAI+3W,EAAMj7G,cAAc98P,IACtB+3W,EAAMhiH,SAAS/1P,IACf+3W,EAAMgyjB,SAAS/p6B,IACf+3W,EAAM+xjB,OAAO9p6B,IACb+3W,EAAMjiH,OAAO91P,IACb+3W,EAAM/hH,iBAAiBh2P,GAEvB,OAAOA,EAET,GAAI+3W,EAAM8xjB,kBAAkB7p6B,GAC1B,OAAOA,EAAK0Y,OAEd,GAAIq/V,EAAMiyjB,kBAAkBhq6B,GAE1B,OADAghB,EAAQ4/+C,eAAe,mDAAmD,GACnE5ggD,EAAKjL,WAGd,IAAI2ngD,EAEJ,GAAIiE,EAAiB,CACnB,GAAIv41C,EAAYp3K,QAAQ,sCAAwC,EAC9D,OCvEO,SAA0BgP,EAAM2Z,GAC7C,OAAO,GAAW3Z,EAAM,IAAIu2gB,GAASnmU,QAAQ3M,gBAAmB3zM,OAAOa,OAAO,CAC5E8kK,QAAS,SAAS9jK,EAAO0jB,EAAKwR,EAAMu3b,GAClC,OAAIm4D,GAASsq/B,QAAU9opC,EAAMhiH,SAASpkQ,IACpCnB,KAAKokF,OAAOv/D,EAAK1jB,EAAMoD,SAAS,YACzB,GAGFqpd,EAAQ+gjC,eAAepugD,MAAMP,KAAMI,UAC5C,GACC+oB,GACL,CD4Demn/C,CAAiB9ggD,EAAMxP,KAAKuwgD,gBAAgBhsgD,WAGrD,IAAK2ngD,EAAa3kpC,EAAM2kpC,WAAW18/C,KAAUooK,EAAYp3K,QAAQ,wBAA0B,EAAG,CAC5F,MAAMgwgD,EAAYxwgD,KAAKu7D,KAAOv7D,KAAKu7D,IAAI692B,SAEvC,OAAO,GACL8ylB,EAAa,CAAC,UAAW18/C,GAAQA,EACjCghgD,GAAa,IAAIA,EACjBxwgD,KAAKuwgD,eAET,CACF,CAEA,OAAIJ,GAAmBD,GACrB1/+C,EAAQ4/+C,eAAe,oBAAoB,GAxEjD,SAAyBz18C,EAAUyxG,EAAQ7kG,GACzC,GAAIggT,EAAMvsT,SAASL,GACjB,IAEE,OADA,EAAWrgD,KAAKiS,OAAOouC,GAChB4sT,EAAMl1V,KAAKsoC,EACpB,CAAE,MAAOx7D,GACP,GAAe,gBAAXA,EAAEuL,KACJ,MAAMvL,CAEV,CAGF,OAAO,EAAYmb,KAAKb,WAAWkhD,EACrC,CA4Da818C,CAAgBjhgD,IAGlBA,CACT,GAEA6q6B,kBAAmB,CAAC,SAA2B7q6B,GAC7C,MAAMwggD,EAAehwgD,KAAKgwgD,cAAgBh/rC,GAASg/rC,aAC7CV,EAAoBU,GAAgBA,EAAaV,kBACjDoB,EAAsC,SAAtB1wgD,KAAKixD,aAE3B,GAAIs2T,EAAMniH,WAAW51P,IAAS+3W,EAAM/hH,iBAAiBh2P,GACnD,OAAOA,EAGT,GAAIA,GAAQ+3W,EAAMvsT,SAASxrD,KAAW8//C,IAAsBtvgD,KAAKixD,cAAiBy/8C,GAAgB,CAChG,MACMC,IADoBX,GAAgBA,EAAaX,oBACPqB,EAEhD,IACE,OAAOp2/C,KAAKiS,MAAM/c,EACpB,CAAE,MAAOrQ,GACP,GAAIwxgD,EAAmB,CACrB,GAAe,gBAAXxxgD,EAAEuL,KACJ,MAAM,EAAWqT,KAAK5e,EAAG,EAAWyxgD,iBAAkB5wgD,KAAM,KAAMA,KAAKyuB,UAEzE,MAAMtvB,CACR,CACF,CACF,CAEA,OAAOqQ,CACT,GAMA4hB,QAAS,EAETkp5B,eAAgB,aAChBC,eAAgB,eAEhBC,kBAAmB,EACnBq2lB,eAAgB,EAEhBt18C,IAAK,CACH692B,SAAUrzZ,GAASnmU,QAAQw5tB,SAC3Brx5B,KAAMg+f,GAASnmU,QAAQ73L,MAGzB0y5B,eAAgB,SAAwBh15B,GACtC,OAAOA,GAAU,KAAOA,EAAS,GACnC,EAEA+K,QAAS,CACPy9G,OAAQ,CACN,OAAU,oCACV,oBAAgBlgG,KAKtBw5U,EAAMriW,QAAQ,CAAC,SAAU,MAAO,OAAQ,OAAQ,MAAO,UAAWuL,IAChEugT,GAASxgT,QAAQC,GAAU,CAAC,CAAC,IAG/B,YE1JM8v5B,GAAoBh5jB,EAAMqmpC,YAAY,CAC1C,MAAO,gBAAiB,iBAAkB,eAAgB,OAC1D,UAAW,OAAQ,OAAQ,oBAAqB,sBAChD,gBAAiB,WAAY,eAAgB,sBAC7C,UAAW,cAAe,eCLtBkD,GAAapvgD,OAAO,aAE1B,SAASqvgD,GAAgBl8+C,GACvB,OAAOA,GAAU/0B,OAAO+0B,GAAQxC,OAAO9iB,aACzC,CAEA,SAAS4ziB,GAAehijB,GACtB,OAAc,IAAVA,GAA4B,MAATA,EACdA,EAGFomX,EAAM51W,QAAQxQ,GAASA,EAAMkuB,IAAI8zhB,IAAkBrjjB,OAAOqB,EACnE,CAgBA,SAAS6vgD,GAAiB7j+C,EAAShsC,EAAO0zB,EAAQhI,EAAQok/C,GACxD,OAAI1ppC,EAAMviH,WAAWn4O,GACZA,EAAOjtB,KAAKI,KAAMmB,EAAO0zB,IAG9Bo8+C,IACF9vgD,EAAQ0zB,GAGL0yV,EAAMvsT,SAAS75D,GAEhBomX,EAAMvsT,SAASnuC,IACiB,IAA3B1rB,EAAMX,QAAQqsB,GAGnB06V,EAAM6ilB,SAASv96B,GACVA,EAAOxhB,KAAKlK,QADrB,OANA,EASF,CAsBA,MAAMuqgD,GACJ,WAAAzrgD,CAAYuwB,GACVA,GAAWxwB,KAAKiM,IAAIukB,EACtB,CAEA,GAAAvkB,CAAI4oB,EAAQq8+C,EAAgBC,GAC1B,MAAM/ugD,EAAOpC,KAEb,SAASoxgD,EAAUjr/C,EAAQkr/C,EAASC,GAClC,MAAMC,EAAUR,GAAgBM,GAEhC,IAAKE,EACH,MAAM,IAAI/p/C,MAAM,0CAGlB,MAAM3C,EAAM0iW,EAAMs5kB,QAAQz+7B,EAAMmvgD,KAE5B1s/C,QAAqBkpB,IAAd3rC,EAAKyiB,KAAmC,IAAbys/C,QAAmCvj+C,IAAbuj+C,IAAwC,IAAdlvgD,EAAKyiB,MACzFziB,EAAKyiB,GAAOws/C,GAAWlu9B,GAAeh9hB,GAE1C,CAEA,MAAMqr/C,EAAa,CAAChh/C,EAAS8g/C,IAC3B/ppC,EAAMriW,QAAQsL,GAAS,CAACrK,EAAQkr/C,IAAYD,EAAUjr/C,EAAQkr/C,EAASC,KAEzE,GAAI/ppC,EAAMzlN,cAAcjtI,IAAWA,aAAkB70B,KAAKC,YACxDuxgD,EAAW38+C,EAAQq8+C,QACd,GAAG3ppC,EAAMvsT,SAASnmC,KAAYA,EAASA,EAAOxC,UArEtB,iCAAiChnB,KAqEmBwpB,EArEVxC,QAsEvEm/+C,ED1EN,CAAeC,IACb,MAAMn0wC,EAAS,CAAC,EAChB,IAAIz4O,EACA64J,EACA98K,EAsBJ,OApBA6wgD,GAAcA,EAAW7sgD,MAAM,MAAMsgB,SAAQ,SAAgBo6B,GAC3D1+C,EAAI0+C,EAAK9+C,QAAQ,KACjBqkB,EAAMy6B,EAAKhoB,UAAU,EAAG12B,GAAGyxB,OAAO9iB,cAClCmuK,EAAMp+H,EAAKhoB,UAAU12B,EAAI,GAAGyxB,QAEvBxN,GAAQy4O,EAAOz4O,IAAQ075B,GAAkB175B,KAIlC,eAARA,EACEy4O,EAAOz4O,GACTy4O,EAAOz4O,GAAKhjB,KAAK67K,GAEjB4/E,EAAOz4O,GAAO,CAAC64J,GAGjB4/E,EAAOz4O,GAAOy4O,EAAOz4O,GAAOy4O,EAAOz4O,GAAO,KAAO64J,EAAMA,EAE3D,IAEO4/E,CACR,EC+CgBs9qB,CAAa/l5B,GAASq8+C,QAC5B,GAAI3ppC,EAAMtiH,SAASpwO,IAAW0yV,EAAMpiH,WAAWtwO,GAAS,CAC7D,IAAcm0H,EAAMnkI,EAAhBqoM,EAAM,CAAC,EACX,IAAK,MAAMl5J,KAASn/B,EAAQ,CAC1B,IAAK0yV,EAAM51W,QAAQqiD,GACjB,MAAMn0D,UAAU,gDAGlBqtN,EAAIroM,EAAMmvC,EAAM,KAAOg1F,EAAOkkE,EAAIroM,IAC/B0iW,EAAM51W,QAAQq3I,GAAQ,IAAIA,EAAMh1F,EAAM,IAAM,CAACg1F,EAAMh1F,EAAM,IAAOA,EAAM,EAC3E,CAEAw98C,EAAWtkzC,EAAKgkzC,EAClB,MACY,MAAVr8+C,GAAkBu8+C,EAAUF,EAAgBr8+C,EAAQs8+C,GAGtD,OAAOnxgD,IACT,CAEA,GAAAmD,CAAI0xB,EAAQu3I,GAGV,GAFAv3I,EAASk8+C,GAAgBl8+C,GAEb,CACV,MAAMhQ,EAAM0iW,EAAMs5kB,QAAQ7g8B,KAAM60B,GAEhC,GAAIhQ,EAAK,CACP,MAAM1jB,EAAQnB,KAAK6kB,GAEnB,IAAKunJ,EACH,OAAOjrK,EAGT,IAAe,IAAXirK,EACF,OApHV,SAAqBz1F,GACnB,MAAM2t3B,EAAShl8B,OAAOY,OAAO,MACvBwxgD,EAAW,mCACjB,IAAIjrgD,EAEJ,KAAQA,EAAQirgD,EAASt//C,KAAKukE,IAC5B2t3B,EAAO797B,EAAM,IAAMA,EAAM,GAG3B,OAAO697B,CACT,CA0GiBqtkB,CAAYxwgD,GAGrB,GAAIomX,EAAMviH,WAAW54F,GACnB,OAAOA,EAAOxsK,KAAKI,KAAMmB,EAAO0jB,GAGlC,GAAI0iW,EAAM6ilB,SAASh+xB,GACjB,OAAOA,EAAOh6J,KAAKjR,GAGrB,MAAM,IAAItB,UAAU,yCACtB,CACF,CACF,CAEA,GAAAkM,CAAI8oB,EAAQ+6Y,GAGV,GAFA/6Y,EAASk8+C,GAAgBl8+C,GAEb,CACV,MAAMhQ,EAAM0iW,EAAMs5kB,QAAQ7g8B,KAAM60B,GAEhC,SAAUhQ,QAAqBkpB,IAAd/tC,KAAK6kB,IAAwB+qZ,IAAWohmC,GAAiBhxgD,EAAMA,KAAK6kB,GAAMA,EAAK+qZ,GAClG,CAEA,OAAO,CACT,CAEA,OAAO/6Y,EAAQ+6Y,GACb,MAAMxta,EAAOpC,KACb,IAAI4xgD,GAAU,EAEd,SAASC,EAAaR,GAGpB,GAFAA,EAAUN,GAAgBM,GAEb,CACX,MAAMxs/C,EAAM0iW,EAAMs5kB,QAAQz+7B,EAAMivgD,IAE5Bxs/C,GAAS+qZ,IAAWohmC,GAAiB5ugD,EAAMA,EAAKyiB,GAAMA,EAAK+qZ,YACtDxta,EAAKyiB,GAEZ+s/C,GAAU,EAEd,CACF,CAQA,OANIrqpC,EAAM51W,QAAQkjB,GAChBA,EAAO3P,QAAQ2s/C,GAEfA,EAAah9+C,GAGR+8+C,CACT,CAEA,KAAA5s/C,CAAM4qZ,GACJ,MAAMt8Z,EAAOhU,OAAOgU,KAAKtT,MACzB,IAAIY,EAAI0S,EAAKjT,OACTuxgD,GAAU,EAEd,KAAOhxgD,KAAK,CACV,MAAMikB,EAAMvR,EAAK1S,GACbgva,IAAWohmC,GAAiBhxgD,EAAMA,KAAK6kB,GAAMA,EAAK+qZ,GAAS,YACtD5va,KAAK6kB,GACZ+s/C,GAAU,EAEd,CAEA,OAAOA,CACT,CAEA,SAAAtigD,CAAU41D,GACR,MAAM9iE,EAAOpC,KACPwwB,EAAU,CAAC,EAsBjB,OApBA+2V,EAAMriW,QAAQllB,MAAM,CAACmB,EAAO0zB,KAC1B,MAAMhQ,EAAM0iW,EAAMs5kB,QAAQrw6B,EAASqE,GAEnC,GAAIhQ,EAGF,OAFAziB,EAAKyiB,GAAOs+hB,GAAehijB,eACpBiB,EAAKyyB,GAId,MAAMmqG,EAAa95D,EAtKzB,SAAsBrwC,GACpB,OAAOA,EAAOxC,OACX9iB,cAAc9C,QAAQ,mBAAmB,CAAClJ,EAAG6hP,EAAMzuK,IAC3CyuK,EAAKx0L,cAAgB+lB,GAElC,CAiKkCm77C,CAAaj9+C,GAAU/0B,OAAO+0B,GAAQxC,OAE9D2sG,IAAenqG,UACVzyB,EAAKyyB,GAGdzyB,EAAK48H,GAAcmkb,GAAehijB,GAElCqvB,EAAQwuG,IAAc,CAAI,IAGrBh/H,IACT,CAEA,MAAAgC,IAAU2i2C,GACR,OAAO3k2C,KAAKC,YAAY+B,OAAOhC,QAAS2k2C,EAC1C,CAEA,MAAArnzC,CAAOy09C,GACL,MAAM7kzC,EAAM5tN,OAAOY,OAAO,MAM1B,OAJAqnX,EAAMriW,QAAQllB,MAAM,CAACmB,EAAO0zB,KACjB,MAAT1zB,IAA2B,IAAVA,IAAoB+rN,EAAIr4L,GAAUk9+C,GAAaxqpC,EAAM51W,QAAQxQ,GAASA,EAAM0L,KAAK,MAAQ1L,EAAM,IAG3G+rN,CACT,CAEA,CAACxrN,OAAOC,YACN,OAAOrC,OAAOmd,QAAQzc,KAAKs9C,UAAU57C,OAAOC,WAC9C,CAEA,QAAA4C,GACE,OAAOjF,OAAOmd,QAAQzc,KAAKs9C,UAAUjuB,KAAI,EAAEwF,EAAQ1zB,KAAW0zB,EAAS,KAAO1zB,IAAO0L,KAAK,KAC5F,CAEA,YAAAmlgD,GACE,OAAOhygD,KAAKmD,IAAI,eAAiB,EACnC,CAEA,IAAKzB,OAAOyoB,eACV,MAAO,cACT,CAEA,WAAOpM,CAAKgu/C,GACV,OAAOA,aAAiB/rgD,KAAO+rgD,EAAQ,IAAI/rgD,KAAK+rgD,EAClD,CAEA,aAAO/pgD,CAAO0iB,KAAUig1C,GACtB,MAAMtzF,EAAW,IAAIrxwC,KAAK0kB,GAI1B,OAFAig1C,EAAQz/0C,SAASpV,GAAWuhwC,EAASplwC,IAAI6D,KAElCuhwC,CACT,CAEA,eAAOj1oC,CAASvnG,GACd,MAIMq7N,GAJYlwP,KAAK8wgD,IAAe9wgD,KAAK8wgD,IAAc,CACvD5gxC,UAAW,CAAC,IAGcA,UACtBxwP,EAAYM,KAAKN,UAEvB,SAASuygD,EAAeZ,GACtB,MAAME,EAAUR,GAAgBM,GAE3BnhxC,EAAUqhxC,KAlOrB,SAAwBrkzC,EAAKr4L,GAC3B,MAAM8yG,EAAe4/O,EAAMmqoB,YAAY,IAAM789B,GAE7C,CAAC,MAAO,MAAO,OAAO3P,SAAQuvD,IAC5Bn1E,OAAO4D,eAAegqN,EAAKz4I,EAAakzD,EAAc,CACpDxmI,MAAO,SAAS6rH,EAAMC,EAAMC,GAC1B,OAAOltH,KAAKy0E,GAAY70E,KAAKI,KAAM60B,EAAQm4F,EAAMC,EAAMC,EACzD,EACAppH,cAAc,GACd,GAEN,CAwNQougD,CAAexygD,EAAW2xgD,GAC1BnhxC,EAAUqhxC,IAAW,EAEzB,CAIA,OAFAhqpC,EAAM51W,QAAQkjB,GAAUA,EAAO3P,QAAQ+s/C,GAAkBA,EAAep9+C,GAEjE70B,IACT,EAGF0rgD,GAAatv4C,SAAS,CAAC,eAAgB,iBAAkB,SAAU,kBAAmB,aAAc,kBAGpGmrP,EAAMklpC,kBAAkBf,GAAahsgD,WAAW,EAAEyB,SAAQ0jB,KACxD,IAAIo6vC,EAASp6vC,EAAI,GAAG+rC,cAAgB/rC,EAAI9iB,MAAM,GAC9C,MAAO,CACLoB,IAAK,IAAMhC,EACX,GAAA8K,CAAIusyC,GACFx4yC,KAAKi/wC,GAAUu5B,CACjB,EACF,IAGFjx7B,EAAMompC,cAAcjC,IAEpB,YC3Se,SAAS/vpB,GAAcl5Y,EAAKh0c,GACzC,MAAMqtS,EAAS97T,MAAQ,GACjBmtC,EAAU1e,GAAYqtS,EACtBtrS,EAAU,GAAazS,KAAKovB,EAAQ3c,SAC1C,IAAIhhB,EAAO29B,EAAQ39B,KAQnB,OANA+3W,EAAMriW,QAAQu9c,GAAK,SAAmBvxd,GACpC1B,EAAO0B,EAAGtR,KAAKk8T,EAAQtsT,EAAMghB,EAAQlhB,YAAamf,EAAWA,EAAShJ,YAASsoB,EACjF,IAEAvd,EAAQlhB,YAEDE,CACT,CCzBe,SAAS2u6B,GAASh96B,GAC/B,SAAUA,IAASA,EAAM446B,WAC3B,CCUA,SAASyxlB,GAAcz5+C,EAAS+pS,EAAQ/2P,GAEtC,EAAWnlE,KAAKI,KAAiB,MAAX+xB,EAAkB,WAAaA,EAAS,EAAWog/C,aAAcr2sC,EAAQ/2P,GAC/F/kE,KAAK0K,KAAO,eACd,CAEA68W,EAAMkilB,SAAS+hkB,GAAe,EAAY,CACxCzxlB,YAAY,IAGd,YCXe,SAASW,GAAOp15B,EAASC,EAAQkJ,GAC9C,MAAMgs5B,EAAiBhs5B,EAASqtS,OAAO2+mB,eAClChs5B,EAAShJ,QAAWg15B,IAAkBA,EAAehs5B,EAAShJ,QAGjEF,EAAO,IAAI,EACT,mCAAqCkJ,EAAShJ,OAC9C,CAAC,EAAW2s/C,gBAAiB,EAAWxB,kBAAkB/tgD,KAAKyK,MAAMmhB,EAAShJ,OAAS,KAAO,GAC9FgJ,EAASqtS,OACTrtS,EAASs2C,QACTt2C,IAPFnJ,EAAQmJ,EAUZ,CC4BA,MClDa4j/C,GAAuB,CAAC/i+C,EAAUgj+C,EAAkBC,EAAO,KACtE,IAAIC,EAAgB,EACpB,MAAMC,EDER,SAAqBC,EAAc7kgD,GACjC6kgD,EAAeA,GAAgB,GAC/B,MAAM5s8C,EAAQ,IAAIrmE,MAAMizgD,GAClB9+0C,EAAa,IAAIn0L,MAAMizgD,GAC7B,IAEIC,EAFA5r9C,EAAO,EACPy3I,EAAO,EAKX,OAFA3wL,OAAckgC,IAARlgC,EAAoBA,EAAM,IAEzB,SAAc8+P,GACnB,MAAMlhP,EAAMD,KAAKC,MAEXmn/C,EAAYh/0C,EAAW4K,GAExBm00C,IACHA,EAAgBln/C,GAGlBq6C,EAAM/e,GAAQ4lN,EACd/4E,EAAW7sI,GAAQt7B,EAEnB,IAAI7qB,EAAI49L,EACJ30I,EAAa,EAEjB,KAAOjpD,IAAMmmD,GACX8C,GAAcic,EAAMllE,KACpBA,GAAQ8xgD,EASV,GANA3r9C,GAAQA,EAAO,GAAK2r9C,EAEhB3r9C,IAASy3I,IACXA,GAAQA,EAAO,GAAKk00C,GAGlBjn/C,EAAMkn/C,EAAgB9kgD,EACxB,OAGF,MAAM60/C,EAASkQ,GAAann/C,EAAMmn/C,EAElC,OAAOlQ,EAAS7//C,KAAKogD,MAAmB,IAAb4G,EAAoB648C,QAAU309C,CAC3D,CACF,CC9CuB,CAAY,GAAI,KAErC,OCFF,SAAkB78B,EAAIqhgD,GACpB,IAEI1mQ,EACA5opC,EAHAt9D,EAAY,EACZ3C,EAAY,IAAOuv9C,EAIvB,MAAMp/O,EAAS,CAAC97uC,EAAM5rB,EAAMD,KAAKC,SAC/Bk6B,EAAYl6B,EACZogvC,EAAW,KACP5opC,IACFv2F,aAAau2F,GACbA,EAAQ,MAEV/xG,EAAG3Q,MAAM,KAAM82C,EAAK,EAqBtB,MAAO,CAlBW,IAAIA,KACpB,MAAM5rB,EAAMD,KAAKC,MACXi3+C,EAASj3+C,EAAMk6B,EAChB+88C,GAAU1/8C,EACbmwuC,EAAO97uC,EAAM5rB,IAEbogvC,EAAWx0tC,EACN4rE,IACHA,EAAQp9F,YAAW,KACjBo9F,EAAQ,KACRkwqC,EAAOtnB,EAAQ,GACd7otC,EAAY0/8C,IAEnB,EAGY,IAAM72P,GAAYsnB,EAAOtnB,GAGzC,CDjCS,EAAS1swC,IACd,MAAMg4M,EAASh4M,EAAEg4M,OACXj1J,EAAQ/iD,EAAE0zgD,iBAAmB1zgD,EAAE+iD,WAAQnU,EACvC+k+C,EAAgB37zC,EAASq7zC,EACzB9mtC,EAAO+mtC,EAAaK,GAG1BN,EAAgBr7zC,EAchB7nK,EAZa,CACX6nK,SACAj1J,QACA+w9B,SAAU/w9B,EAASi1J,EAASj1J,OAASnU,EACrC+3B,MAAOgt8C,EACPpntC,KAAMA,QAAc39Q,EACpBsohB,UAAW3qQ,GAAQxpQ,GAVLi1J,GAAUj1J,GAUeA,EAAQi1J,GAAUu0G,OAAO39Q,EAChEtP,MAAOt/B,EACP0zgD,iBAA2B,MAAT3w9C,EAClB,CAACow9C,EAAmB,WAAa,WAAW,GAGhC,GACbC,EAAK,EAGGQ,GAAyB,CAAC7w9C,EAAOU,KAC5C,MAAMiw9C,EAA4B,MAAT3w9C,EAEzB,MAAO,CAAEi1J,GAAWv0J,EAAU,GAAG,CAC/Biw9C,mBACA3w9C,QACAi1J,WACEv0J,EAAU,GAAG,EAGNow9C,GAAkB9hgD,GAAO,IAAImmC,IAASkwU,EAAMwlpC,MAAK,IAAM77/C,KAAMmmC,KEzC1E,GAAe0ue,GAAS4p/B,sBAAwB,EAAE30+C,EAAQuiS,IAAYrtS,IACpEA,EAAM,IAAIlI,IAAIkI,EAAK61f,GAAS/qf,QAG1BA,EAAOhE,WAAa9G,EAAI8G,UACxBgE,EAAO6+B,OAAS3pC,EAAI2pC,OACnB0jQ,GAAUviS,EAAO4l5B,OAAS1w5B,EAAI0w5B,OANa,CAS9C,IAAI545B,IAAI+9f,GAAS/qf,QACjB+qf,GAAS1sf,WAAa,kBAAkBhuB,KAAK06gB,GAAS1sf,UAAUC,YAC9D,KAAM,ECVV,GAAeysf,GAAS4p/B,sBAGtB,CACE,KAAA57/C,CAAMrJ,EAAMvJ,EAAO80B,EAASI,EAAMjiB,EAAQkiB,GACxC,MAAME,EAAS,CAAC9rB,EAAO,IAAM4kB,mBAAmBnuB,IAEhDomX,EAAMjkU,SAASrtB,IAAYO,EAAO30B,KAAK,WAAa,IAAI2pB,KAAKyK,GAAS6q5B,eAEtEv5jB,EAAMvsT,SAAS3kC,IAASG,EAAO30B,KAAK,QAAUw0B,GAE9CkxV,EAAMvsT,SAAS5mD,IAAWoiB,EAAO30B,KAAK,UAAYuS,IAEvC,IAAXkiB,GAAmBE,EAAO30B,KAAK,UAE/BsD,SAASqxB,OAASA,EAAO3pB,KAAK,KAChC,EAEA,IAAAw5D,CAAK37D,GACH,MAAMjE,EAAQtB,SAASqxB,OAAO/vB,MAAM,IAAIshC,OAAO,aAAer9B,EAAO,cACrE,OAAQjE,EAAQmpB,mBAAmBnpB,EAAM,IAAM,IACjD,EAEA,MAAAosB,CAAOnoB,GACL1K,KAAK+T,MAAMrJ,EAAM,GAAI8gB,KAAKC,MAAQ,MACpC,GAMF,CACE,KAAA1X,GAAS,EACTsyD,KAAI,IACK,KAET,MAAAxzC,GAAU,GCxBC,SAASog/C,GAAch0lB,EAASi0lB,EAAcC,GAC3D,IAAIC,GCHG,8BAA8B/ngD,KDGF6ngD,GACnC,OAAIj0lB,IAAYm0lB,GAAsC,GAArBD,GEPpB,SAAqBl0lB,EAAS8B,GAC3C,OAAOA,EACH9B,EAAQxy6B,QAAQ,SAAU,IAAM,IAAMs06B,EAAYt06B,QAAQ,OAAQ,IAClEwy6B,CACN,CFIWH,CAAYG,EAASi0lB,GAEvBA,CACT,CGhBA,MAAMG,GAAmBtH,GAAUA,aAAiB,GAAe,IAAKA,GAAUA,EAWnE,SAAS/tlB,GAAYtC,EAASC,GAE3CA,EAAUA,GAAW,CAAC,EACtB,MAAM7/mB,EAAS,CAAC,EAEhB,SAASw3sC,EAAexjgD,EAAQjI,EAAQ2kJ,EAAMwg3C,GAC5C,OAAIzlpC,EAAMzlN,cAAchyJ,IAAWy3W,EAAMzlN,cAAcj6J,GAC9C0/W,EAAMzmH,MAAMlhQ,KAAK,CAACotgD,YAAWl9/C,EAAQjI,GACnC0/W,EAAMzlN,cAAcj6J,GACtB0/W,EAAMzmH,MAAM,CAAC,EAAGj5P,GACd0/W,EAAM51W,QAAQ9J,GAChBA,EAAO9F,QAET8F,CACT,CAGA,SAAS0rgD,EAAoBvygD,EAAGsC,EAAGkpJ,EAAOwg3C,GACxC,OAAKzlpC,EAAM4zF,YAAY73c,GAEXikX,EAAM4zF,YAAYn6c,QAAvB,EACEsygD,OAAevl+C,EAAW/sC,EAAGwrJ,EAAOwg3C,GAFpCsG,EAAetygD,EAAGsC,EAAGkpJ,EAAOwg3C,EAIvC,CAGA,SAASwG,EAAiBxygD,EAAGsC,GAC3B,IAAKikX,EAAM4zF,YAAY73c,GACrB,OAAOgwgD,OAAevl+C,EAAWzqC,EAErC,CAGA,SAASmwgD,EAAiBzygD,EAAGsC,GAC3B,OAAKikX,EAAM4zF,YAAY73c,GAEXikX,EAAM4zF,YAAYn6c,QAAvB,EACEsygD,OAAevl+C,EAAW/sC,GAF1BsygD,OAAevl+C,EAAWzqC,EAIrC,CAGA,SAASowgD,EAAgB1ygD,EAAGsC,EAAGkpJ,GAC7B,OAAIA,KAAQmvxB,EACH23lB,EAAetygD,EAAGsC,GAChBkpJ,KAAQkvxB,EACV43lB,OAAevl+C,EAAW/sC,QAD5B,CAGT,CAEA,MAAM4ovB,EAAW,CACf15tB,IAAKsj/C,EACL/i/C,OAAQ+i/C,EACRhkgD,KAAMgkgD,EACNv0lB,QAASw0lB,EACTr5lB,iBAAkBq5lB,EAClBp5lB,kBAAmBo5lB,EACnB75lB,iBAAkB65lB,EAClBri/C,QAASqi/C,EACTxxiC,eAAgBwxiC,EAChB7i/C,gBAAiB6i/C,EACjBE,cAAeF,EACft5lB,QAASs5lB,EACTxi9C,aAAcwi9C,EACdn5lB,eAAgBm5lB,EAChBl5lB,eAAgBk5lB,EAChBn4lB,iBAAkBm4lB,EAClBp4lB,mBAAoBo4lB,EACpB73uC,WAAY63uC,EACZj5lB,iBAAkBi5lB,EAClB5C,cAAe4C,EACfG,eAAgBH,EAChB7nO,UAAW6nO,EACXI,UAAWJ,EACXK,WAAYL,EACZj4lB,YAAai4lB,EACbM,WAAYN,EACZO,iBAAkBP,EAClBh5lB,eAAgBi5lB,EAChBlj/C,QAAS,CAACxvB,EAAGsC,EAAIkpJ,IAAS+m3C,EAAoBF,GAAgBrygD,GAAIqygD,GAAgB/vgD,GAAGkpJ,GAAM,IAS7F,OANA+6N,EAAMriW,QAAQ5lB,OAAOgU,KAAKhU,OAAOa,OAAO,CAAC,EAAGu76B,EAASC,KAAW,SAA4BnvxB,GAC1F,MAAMs0G,EAAQ8of,EAASp9lB,IAAS+m3C,EAC1BU,EAAcnzwC,EAAM46qB,EAAQlvxB,GAAOmvxB,EAAQnvxB,GAAOA,GACvD+6N,EAAM4zF,YAAY84jC,IAAgBnzwC,IAAU4ywC,IAAqB53sC,EAAOtvK,GAAQyn3C,EACnF,IAEOn4sC,CACT,CChGA,SAAgBA,IACd,MAAM+xH,EAAYmwf,GAAY,CAAC,EAAGlinB,GAElC,IAaIlkJ,GAbA,KAACpoK,EAAI,cAAEmkgD,EAAa,eAAEp5lB,EAAc,eAAED,EAAc,QAAE9p5B,EAAO,KAAEW,GAAQ08Z,EAe3E,GAbAA,EAAUr9Z,QAAUA,EAAU,GAAazS,KAAKyS,GAEhDq9Z,EAAU39Z,IAAMyq5B,GAASs4lB,GAAcpllC,EAAUoxf,QAASpxf,EAAU39Z,IAAK29Z,EAAUsllC,mBAAoBr3sC,EAAOzzR,OAAQyzR,EAAO89mB,kBAGzHzo5B,GACFX,EAAQvkB,IAAI,gBAAiB,SAC3BkjB,MAAMgC,EAAK8sZ,UAAY,IAAM,KAAO9sZ,EAAKytZ,SAAWvhJ,SAAS/tQ,mBAAmB6B,EAAKytZ,WAAa,MAMlGr3D,EAAM4xjB,WAAW3p6B,GACnB,GAAIu2gB,GAAS4p/B,uBAAyB5p/B,GAAS6p/B,+BAC7Cp/+C,EAAQ4/+C,oBAAeri+C,QAClB,IAAiD,KAA5C6pI,EAAcpnJ,EAAQy/+C,kBAA6B,CAE7D,MAAO1jgD,KAAS+37B,GAAU1sxB,EAAcA,EAAYhzK,MAAM,KAAKyqB,KAAIguJ,GAASA,EAAMhrJ,SAAQxF,OAAO5Z,SAAW,GAC5Gud,EAAQ4/+C,eAAe,CAAC7jgD,GAAQ,yBAA0B+37B,GAAQz37B,KAAK,MACzE,CAOF,GAAIk5gB,GAAS4p/B,wBACXgE,GAAiBpspC,EAAMviH,WAAW2uwC,KAAmBA,EAAgBA,EAAc9llC,IAE/E8llC,IAAoC,IAAlBA,GAA2B94lB,GAAgBhtf,EAAU39Z,MAAO,CAEhF,MAAMkr5B,EAAYb,GAAkBD,GAAkBa,GAAQ902B,KAAKi02B,GAE/Dc,GACF5q5B,EAAQvkB,IAAIsu6B,EAAgBa,EAEhC,CAGF,OAAOvtf,CACR,EC1CD,GAFwD,oBAAnBxla,gBAEG,SAAUyzS,GAChD,OAAO,IAAIn7T,SAAQ,SAA4B2kB,EAASC,GACtD,MAAMghyC,EAAU2tN,GAAcp4sC,GAC9B,IAAIi/mB,EAAcwrY,EAAQ/2yC,KAC1B,MAAMwr6B,EAAiB,GAAaj95B,KAAKwoyC,EAAQ/1xC,SAASlhB,YAC1D,IACI6kgD,EACAC,EAAiBC,EACjBC,EAAaC,GAHb,aAACtj9C,EAAY,iBAAEqq3B,EAAgB,mBAAED,GAAsBkrY,EAK3D,SAASrlzC,IACPozgD,GAAeA,IACfC,GAAiBA,IAEjBhuN,EAAQ/qY,aAAe+qY,EAAQ/qY,YAAY5/3B,YAAYu49C,GAEvD5tN,EAAQt8xC,QAAUs8xC,EAAQt8xC,OAAOZ,oBAAoB,QAAS8q/C,EAChE,CAEA,IAAIpv8C,EAAU,IAAI18C,eAOlB,SAASms/C,IACP,IAAKzv8C,EACH,OAGF,MAAMk22B,EAAkB,GAAal95B,KACnC,0BAA2BgnD,GAAWA,EAAQp0C,yBAahD+p5B,IAAO,SAAkBv56B,GACvBmkB,EAAQnkB,GACRD,GACF,IAAG,SAAiBo2C,GAClB/xB,EAAO+xB,GACPp2C,GACF,GAfiB,CACfsO,KAHoByhD,GAAiC,SAAjBA,GAA4C,SAAjBA,EACxC8T,EAAQt2C,SAA/Bs2C,EAAQx8C,aAGR9C,OAAQs/C,EAAQt/C,OAChBwK,WAAY80C,EAAQ90C,WACpBO,QAASyq5B,EACTn/mB,SACA/2P,YAYFA,EAAU,IACZ,CAlCAA,EAAQrwD,KAAK6xyC,EAAQ91xC,OAAOmgC,cAAe21vC,EAAQr2xC,KAAK,GAGxD60C,EAAQ3zC,QAAUm1xC,EAAQn1xC,QAiCtB,cAAe2zC,EAEjBA,EAAQyv8C,UAAYA,EAGpBzv8C,EAAQ06kB,mBAAqB,WACtB16kB,GAAkC,IAAvBA,EAAQ/zB,aAQD,IAAnB+zB,EAAQt/C,QAAkBs/C,EAAQ50C,aAAwD,IAAzC40C,EAAQ50C,YAAY3vB,QAAQ,WAKjFqlB,WAAW2u/C,EACb,EAIFzv8C,EAAQr7C,QAAU,WACXq7C,IAILx/C,EAAO,IAAI,EAAW,kBAAmB,EAAWkv/C,aAAc34sC,EAAQ/2P,IAG1EA,EAAU,KACZ,EAGAA,EAAQr1C,QAAU,WAGhBnK,EAAO,IAAI,EAAW,gBAAiB,EAAWmv/C,YAAa54sC,EAAQ/2P,IAGvEA,EAAU,IACZ,EAGAA,EAAQm22B,UAAY,WAClB,IAAIy5lB,EAAsBpuN,EAAQn1xC,QAAU,cAAgBm1xC,EAAQn1xC,QAAU,cAAgB,mBAC9F,MAAM4++C,EAAezpN,EAAQypN,cAAgB,GACzCzpN,EAAQouN,sBACVA,EAAsBpuN,EAAQouN,qBAEhCpv/C,EAAO,IAAI,EACTov/C,EACA3E,EAAaT,oBAAsB,EAAWqF,UAAY,EAAWH,aACrE34sC,EACA/2P,IAGFA,EAAU,IACZ,OAGgBh3B,IAAhBgt4B,GAA6BC,EAAeo1lB,eAAe,MAGvD,qBAAsBrr8C,GACxBwiT,EAAMriW,QAAQ815B,EAAe193B,UAAU,SAA0BogI,EAAK74J,GACpEkgD,EAAQj0C,iBAAiBjM,EAAK64J,EAChC,IAIG6pM,EAAM4zF,YAAYor2B,EAAQ31xC,mBAC7Bm0C,EAAQn0C,kBAAoB21xC,EAAQ31xC,iBAIlCqgC,GAAiC,SAAjBA,IAClB8T,EAAQ9T,aAAes1vC,EAAQt1vC,cAI7Boq3B,KACAg5lB,EAAmBE,GAAiBlC,GAAqBh3lB,GAAoB,GAC/Et22B,EAAQp4C,iBAAiB,WAAY0n/C,IAInC/4lB,GAAoBv22B,EAAQw22B,UAC5B64lB,EAAiBE,GAAejC,GAAqB/2lB,GAEvDv22B,EAAQw22B,OAAO5u5B,iBAAiB,WAAYyn/C,GAE5Crv8C,EAAQw22B,OAAO5u5B,iBAAiB,UAAW2n/C,KAGzC/tN,EAAQ/qY,aAAe+qY,EAAQt8xC,UAGjCkq/C,EAAatx9C,IACNkiB,IAGLx/C,GAAQs9B,GAAUA,EAAOt2C,KAAO,IAAI,GAAc,KAAMuvT,EAAQ/2P,GAAWliB,GAC3EkiB,EAAQ9zC,QACR8zC,EAAU,KAAI,EAGhBwhvC,EAAQ/qY,aAAe+qY,EAAQ/qY,YAAY9/3B,UAAUy49C,GACjD5tN,EAAQt8xC,SACVs8xC,EAAQt8xC,OAAOR,QAAU0q/C,IAAe5tN,EAAQt8xC,OAAO0C,iBAAiB,QAASwn/C,KAIrF,MAAMn9+C,ECvLK,SAAuB9G,GACpC,MAAMzpB,EAAQ,4BAA4B2L,KAAK8d,GAC/C,OAAOzpB,GAASA,EAAM,IAAM,EAC9B,CDoLqBougD,CAActuN,EAAQr2xC,KAEnC8G,IAAsD,IAA1C+uf,GAASyp/B,UAAUhvgD,QAAQw2B,GACzCzR,EAAO,IAAI,EAAW,wBAA0ByR,EAAW,IAAK,EAAWo7+C,gBAAiBt2sC,IAM9F/2P,EAAQz8C,KAAKyy5B,GAAe,KAC9B,GACF,EErJA,GA3CuB,CAAC+5lB,EAAS1j/C,KAC/B,MAAM,OAAC/wB,GAAWy0gD,EAAUA,EAAUA,EAAQjo/C,OAAO5Z,SAAW,GAEhE,GAAIme,GAAW/wB,EAAQ,CACrB,IAEIopB,EAFA8mH,EAAa,IAAIhmH,gBAIrB,MAAMb,EAAU,SAAUhE,GACxB,IAAK+D,EAAS,CACZA,GAAU,EACVmyB,IACA,MAAMtE,EAAM5xB,aAAkB8B,MAAQ9B,EAAS1lB,KAAK0lB,OACpD6qH,EAAWt/G,MAAMqmB,aAAe,EAAaA,EAAM,IAAI,GAAcA,aAAe9vB,MAAQ8vB,EAAIvlB,QAAUulB,GAC5G,CACF,EAEA,IAAI2rE,EAAQ7xF,GAAWvL,YAAW,KAChCo9F,EAAQ,KACRv5F,EAAQ,IAAI,EAAW,WAAW0H,mBAA0B,EAAWwj/C,WAAU,GAChFxj/C,GAEH,MAAMwqB,EAAc,KACdk59C,IACF7x5C,GAASv2F,aAAau2F,GACtBA,EAAQ,KACR6x5C,EAAQ5v/C,SAAQ+E,IACdA,EAAO2xB,YAAc3xB,EAAO2xB,YAAYlyB,GAAWO,EAAOZ,oBAAoB,QAASK,EAAQ,IAEjGor/C,EAAU,KACZ,EAGFA,EAAQ5v/C,SAAS+E,GAAWA,EAAO0C,iBAAiB,QAASjD,KAE7D,MAAM,OAACO,GAAUsmH,EAIjB,OAFAtmH,EAAO2xB,YAAc,IAAM2rU,EAAMwlpC,KAAKnx9C,GAE/B3xB,CACT,GC3CW8q/C,GAAc,UAAW5u8C,EAAOsmM,GAC3C,IAAI5tI,EAAM14D,EAAM/9C,WAEhB,IAAKqkP,GAAa5tI,EAAM4tI,EAEtB,kBADMtmM,GAIR,IACI1/B,EADA47E,EAAM,EAGV,KAAOA,EAAMwc,GACXp4F,EAAM47E,EAAMoqJ,QACNtmM,EAAMpkE,MAAMsgH,EAAK57E,GACvB47E,EAAM57E,CAEV,EA4Bauu+C,GAAc,CAAClt/C,EAAQ2kP,EAAWwowC,EAAYC,KACzD,MAAMvzgD,EA3BiB6/B,gBAAiB4hG,EAAUqpI,GAClD,UAAW,MAAMtmM,KAKA3kC,gBAAiB1Z,GAClC,GAAIA,EAAOpmB,OAAO+gK,eAEhB,kBADO36I,GAIT,MAAM29C,EAAS39C,EAAO49C,YACtB,IACE,OAAS,CACP,MAAM,KAACxkE,EAAI,MAAEC,SAAeskE,EAAOY,OACnC,GAAInlE,EACF,YAEIC,CACR,CACF,CAAE,cACMskE,EAAO5iB,QACf,CACF,CAvB4Bsy9C,CAAW/x4C,SAC5B2x4C,GAAY5u8C,EAAOsmM,EAE9B,CAuBmBk/iC,CAAU7jyC,EAAQ2kP,GAEnC,IACIvrQ,EADA4kE,EAAQ,EAERsv8C,EAAaj2gD,IACV+B,IACHA,GAAO,EACPg0gD,GAAYA,EAAS/1gD,GACvB,EAGF,OAAO,IAAIsmQ,eAAe,CACxB,UAAMqrhC,CAAKvgpC,GACT,IACE,MAAM,KAACrvI,EAAI,MAAEC,SAAeQ,EAASZ,OAErC,GAAIG,EAGF,OAFDk0gD,SACC7k4C,EAAWv8H,QAIb,IAAI6qH,EAAM19H,EAAMinB,WAChB,GAAI6s/C,EAAY,CACd,IAAII,EAAcvv8C,GAAS+4D,EAC3Bo24C,EAAWI,EACb,CACA9k4C,EAAWvnF,QAAQ,IAAIrpC,WAAWxe,GACpC,CAAE,MAAOm2C,GAEP,MADA899C,EAAU999C,GACJA,CACR,CACF,EACAuL,OAAOn9B,IACL0v/C,EAAU1v/C,GACH/jB,EAASF,WAEjB,CACDm50C,cAAe,GAChB,EC3EG06L,GAAoC,mBAAV/q9C,OAA2C,mBAAZjgC,SAA8C,mBAAb+6O,SAC1FkwwC,GAA4BD,IAA8C,mBAAnB7vwC,eAGvD+vwC,GAAaF,KAA4C,mBAAhBxs/C,aACzCy+C,GAA0C,IAAIz+C,YAAjC6tD,GAAQpP,GAAQ1/C,OAAO8uD,IACtCn1C,MAAOm1C,GAAQ,IAAIh3D,iBAAiB,IAAI0lP,SAAS1uL,GAAKq1F,gBADtD,IAAEzkG,GAIN,MAAMl8D,GAAO,CAAC6F,KAAOmmC,KACnB,IACE,QAASnmC,KAAMmmC,EACjB,CAAE,MAAOl4C,GACP,OAAO,CACT,GAGIs2gD,GAAwBF,IAA6BlqgD,IAAK,KAC9D,IAAIqqgD,GAAiB,EAErB,MAAMC,EAAiB,IAAIrr/C,QAAQy7f,GAAS/qf,OAAQ,CAClDjK,KAAM,IAAI00O,eACVh1O,OAAQ,OACR,UAAIml/C,GAEF,OADAF,GAAiB,EACV,MACT,IACCll/C,QAAQzkB,IAAI,gBAEf,OAAO2pgD,IAAmBC,CAAc,IAKpCE,GAAyBN,IAC7BlqgD,IAAK,IAAMk8W,EAAM/hH,iBAAiB,IAAIH,SAAS,IAAIt0O,QAG/C2oI,GAAY,CAChB5xI,OAAQ+t/C,IAA0B,CAAExw3C,GAAQA,EAAIt0H,OAG7B,IAAEs0H,GAAvBiw3C,KAAuBjw3C,GAOpB,IAAIggH,SANL,CAAC,OAAQ,cAAe,OAAQ,WAAY,UAAUngP,SAAQ3Y,KAC3DmtJ,GAAUntJ,KAAUmtJ,GAAUntJ,GAAQg7W,EAAMviH,WAAW3/G,GAAI94I,IAAU84I,GAAQA,EAAI94I,KAChF,CAAC3I,EAAGk4T,KACF,MAAM,IAAI,EAAW,kBAAkBvvT,sBAA0B,EAAWupgD,gBAAiBh6sC,EAAO,EACrG,KAIP,MCvDMi6sC,GAAgB,CACpB5w8C,KCNF,KDOEtB,IAAKA,GACLtZ,MDwFa+q9C,IAAoB,OAAQx5sC,IACzC,IAAI,IACF5rS,EAAG,OACHO,EAAM,KACNjhB,EAAI,OACJya,EAAM,YACNux5B,EAAW,QACXpq5B,EAAO,mBACPiq5B,EAAkB,iBAClBC,EAAgB,aAChBrq3B,EAAY,QACZzgC,EAAO,gBACPI,EAAkB,cAAa,aAC/BU,GACE4i/C,GAAcp4sC,GAElB7qQ,EAAeA,GAAgBA,EAAe,IAAI1hD,cAAgB,OAElE,IAEIw1D,EAFAix8C,EAAiB,GAAe,CAAC/r/C,EAAQux5B,GAAeA,EAAYy6lB,iBAAkB7k/C,GAI1F,MAAMwqB,EAAco69C,GAAkBA,EAAep69C,aAAe,MAChEo69C,EAAep69C,aAClB,GAED,IAAIs69C,EAEJ,IACE,GACE56lB,GAAoBm6lB,IAAoC,QAAXhl/C,GAA+B,SAAXA,GACG,KAAnEyl/C,OArCmB10+C,OAAOhR,EAASO,KACxC,MAAM1wB,EAASknX,EAAMumpC,eAAet9+C,EAAQ2l/C,oBAE5C,OAAiB,MAAV91gD,EAjCamhC,OAAOzQ,IAC3B,GAAY,MAARA,EACF,OAAO,EAGT,GAAGw2V,EAAMjiH,OAAOv0O,GACd,OAAOA,EAAKnM,KAGd,GAAG2iW,EAAMwmpC,oBAAoBh9+C,GAAO,CAClC,MAAM2t4C,EAAW,IAAIp04C,QAAQy7f,GAAS/qf,OAAQ,CAC5CvK,OAAQ,OACRM,SAEF,aAAc2t4C,EAAS1yvC,eAAe5jJ,UACxC,CAEA,OAAGm/V,EAAM8xjB,kBAAkBto5B,IAASw2V,EAAMj7G,cAAcv7O,GAC/CA,EAAK3I,YAGXm/V,EAAMiyjB,kBAAkBzo5B,KACzBA,GAAc,IAGbw2V,EAAMvsT,SAASjqC,UACFyk/C,GAAWzk/C,IAAO3I,gBADlC,EAEA,EAMwBgu/C,CAAcrl/C,GAAQ1wB,CAAM,EAkClBg2gD,CAAkB7l/C,EAAShhB,IACzD,CACA,IAMIi3P,EANAi4pC,EAAW,IAAIp04C,QAAQ4F,EAAK,CAC9BO,OAAQ,OACRM,KAAMvhB,EACNomgD,OAAQ,SASV,GAJIrupC,EAAM4xjB,WAAW3p6B,KAAUi3P,EAAoBi4pC,EAASlu4C,QAAQrtB,IAAI,kBACtEqtB,EAAQ4/+C,eAAe3pwC,GAGrBi4pC,EAAS3t4C,KAAM,CACjB,MAAOkk/C,EAAY1s8C,GAASwq8C,GAC1BmD,EACA7D,GAAqBW,GAAe13lB,KAGtC9r6B,EAAOwlgD,GAAYt2G,EAAS3t4C,KA1GT,MA0GmCkk/C,EAAY1s8C,EACpE,CACF,CAEKg/S,EAAMvsT,SAASpqC,KAClBA,EAAkBA,EAAkB,UAAY,QAKlD,MAAM0l/C,EAAyB,gBAAiBhs/C,QAAQ5qB,UACxDqlE,EAAU,IAAIz6C,QAAQ4F,EAAK,IACtBoB,EACHrH,OAAQ+r/C,EACRvl/C,OAAQA,EAAOmgC,cACfpgC,QAASA,EAAQlhB,YAAYguC,SAC7BvsB,KAAMvhB,EACNomgD,OAAQ,OACR/k/C,YAAayl/C,EAAyB1l/C,OAAkBmd,IAG1D,IAAItf,QAAiB87B,MAAMwa,EAASzzC,GAEpC,MAAMil/C,EAAmBV,KAA4C,WAAjB5k9C,GAA8C,aAAjBA,GAEjF,GAAI4k9C,KAA2Bx6lB,GAAuBk7lB,GAAoB369C,GAAe,CACvF,MAAMzyB,EAAU,CAAC,EAEjB,CAAC,SAAU,aAAc,WAAWjE,SAAQsnI,IAC1CrjI,EAAQqjI,GAAQ/9H,EAAS+9H,EAAK,IAGhC,MAAMgq3C,EAAwBjvpC,EAAMumpC,eAAer/+C,EAAS+B,QAAQrtB,IAAI,oBAEjE8xgD,EAAY1s8C,GAAS8y2B,GAAsB03lB,GAChDyD,EACAnE,GAAqBW,GAAe33lB,IAAqB,KACtD,GAEL5s5B,EAAW,IAAI42O,SACb2vwC,GAAYvm/C,EAASsC,KAlJF,MAkJ4Bkk/C,GAAY,KACzD1s8C,GAASA,IACT3sB,GAAeA,GAAa,IAE9BzyB,EAEJ,CAEA8nC,EAAeA,GAAgB,OAE/B,IAAIgU,QAAqBy0F,GAAU6tN,EAAMs5kB,QAAQnnyB,GAAWzoG,IAAiB,QAAQxiC,EAAUqtS,GAI/F,OAFCy6sC,GAAoB369C,GAAeA,UAEvB,IAAIj7C,SAAQ,CAAC2kB,EAASC,KACjCm15B,GAAOp15B,EAASC,EAAQ,CACtB/V,KAAMy1D,EACNz0C,QAAS,GAAazS,KAAK0Q,EAAS+B,SACpC/K,OAAQgJ,EAAShJ,OACjBwK,WAAYxB,EAASwB,WACrB6rS,SACA/2P,WACD,GAEL,CAAE,MAAOztB,GAGP,GAFAsE,GAAeA,IAEXtE,GAAoB,cAAbA,EAAI5sC,MAAwB,qBAAqBW,KAAKisC,EAAIvlB,SACnE,MAAMzyB,OAAOa,OACX,IAAI,EAAW,gBAAiB,EAAWu0gD,YAAa54sC,EAAQ/2P,GAChE,CACEzxB,MAAOgE,EAAIhE,OAASgE,IAK1B,MAAM,EAAWv5B,KAAKu5B,EAAKA,GAAOA,EAAIpc,KAAM4gS,EAAQ/2P,EACtD,CACD,ICtNDwiT,EAAMriW,QAAQ6w/C,IAAe,CAAC7kgD,EAAI/P,KAChC,GAAI+P,EAAI,CACN,IACE5R,OAAO4D,eAAegO,EAAI,OAAQ,CAAC/P,SACrC,CAAE,MAAOhC,GAET,CACAG,OAAO4D,eAAegO,EAAI,cAAe,CAAC/P,SAC5C,KAGF,MAAMs1gD,GAAgB/w/C,GAAW,KAAKA,IAEhCgx/C,GAAoBv8lB,GAAY5yjB,EAAMviH,WAAWm1qB,IAAwB,OAAZA,IAAgC,IAAZA,EAEvF,GACew8lB,IACXA,EAAWpvpC,EAAM51W,QAAQglgD,GAAYA,EAAW,CAACA,GAEjD,MAAM,OAACt2gD,GAAUs2gD,EACjB,IAAIC,EACAz8lB,EAEJ,MAAM08lB,EAAkB,CAAC,EAEzB,IAAK,IAAIj2gD,EAAI,EAAGA,EAAIP,EAAQO,IAAK,CAE/B,IAAI2qB,EAIJ,GALAqr/C,EAAgBD,EAAS/1gD,GAGzBu56B,EAAUy8lB,GAELF,GAAiBE,KACpBz8lB,EAAU47lB,IAAexq/C,EAAKzrB,OAAO82gD,IAAgBrngD,oBAErCw+B,IAAZos4B,GACF,MAAM,IAAI,EAAW,oBAAoB5u5B,MAI7C,GAAI4u5B,EACF,MAGF08lB,EAAgBtr/C,GAAM,IAAM3qB,GAAKu56B,CACnC,CAEA,IAAKA,EAAS,CAEZ,MAAM28lB,EAAUx3gD,OAAOmd,QAAQo6/C,GAC5Bxn/C,KAAI,EAAE9D,EAAI5f,KAAW,WAAW4f,OACpB,IAAV5f,EAAkB,sCAAwC,mCAG/D,IAAI7K,EAAIT,EACLy2gD,EAAQz2gD,OAAS,EAAI,YAAcy2gD,EAAQzn/C,IAAIon/C,IAAc5pgD,KAAK,MAAQ,IAAM4pgD,GAAaK,EAAQ,IACtG,0BAEF,MAAM,IAAI,EACR,wDAA0Dh2gD,EAC1D,kBAEJ,CAEA,OAAOq56B,CAAO,EE3DlB,SAAS4E,GAA6BjjnB,GAKpC,GAJIA,EAAO0/mB,aACT1/mB,EAAO0/mB,YAAYwD,mBAGjBljnB,EAAO7xS,QAAU6xS,EAAO7xS,OAAOR,QACjC,MAAM,IAAI,GAAc,KAAMqyS,EAElC,CASe,SAASwinB,GAAgBxinB,GAiBtC,OAhBAijnB,GAA6BjjnB,GAE7BA,EAAOtrS,QAAU,GAAazS,KAAK+9S,EAAOtrS,SAG1CsrS,EAAOtsT,KAAOms2B,GAAc/72B,KAC1Bk8T,EACAA,EAAOs+mB,mBAGgD,IAArD,CAAC,OAAQ,MAAO,SAAS556B,QAAQs7T,EAAOrrS,SAC1CqrS,EAAOtrS,QAAQ4/+C,eAAe,qCAAqC,GAGrDuG,GAAoB76sC,EAAOq+mB,SAAW,GAASA,QAExDA,CAAQr+mB,GAAQ16T,MAAK,SAA6BqtB,GAYvD,OAXAsw5B,GAA6BjjnB,GAG7BrtS,EAASjf,KAAOms2B,GAAc/72B,KAC5Bk8T,EACAA,EAAOu+mB,kBACP5r5B,GAGFA,EAAS+B,QAAU,GAAazS,KAAK0Q,EAAS+B,SAEvC/B,CACT,IAAG,SAA4B/I,GAe7B,OAdKy45B,GAASz45B,KACZq55B,GAA6BjjnB,GAGzBp2S,GAAUA,EAAO+I,WACnB/I,EAAO+I,SAASjf,KAAOms2B,GAAc/72B,KACnCk8T,EACAA,EAAOu+mB,kBACP305B,EAAO+I,UAET/I,EAAO+I,SAAS+B,QAAU,GAAazS,KAAK2H,EAAO+I,SAAS+B,WAIzD7vB,QAAQ4kB,OAAOG,EACxB,GACF,CChFO,MAAMy9H,GAAU,SCKjB69wB,GAAa,CAAC,EAGpB,CAAC,SAAU,UAAW,SAAU,WAAY,SAAU,UAAU974B,SAAQ,CAAC3Y,EAAM3L,KAC7Eog6B,GAAWz05B,GAAQ,SAAmBw//C,GACpC,cAAcA,IAAUx//C,GAAQ,KAAO3L,EAAI,EAAI,KAAO,KAAO2L,CAC/D,CAAC,IAGH,MAAMwqgD,GAAqB,CAAC,EAW5B/1mB,GAAWgvmB,aAAe,SAAsB/umB,EAAW365B,EAASyrB,GAClE,SAASil/C,EAAc52+B,EAAKjwe,GAC1B,MAAO,WAAagzF,GAAU,0BAA6Bi9Y,EAAM,IAAOjwe,GAAQp+B,EAAU,KAAOA,EAAU,GAC7G,CAGA,MAAO,CAAC5wB,EAAOi/hB,EAAK/jf,KAClB,IAAkB,IAAd4k3B,EACF,MAAM,IAAI,EACR+1mB,EAAc52+B,EAAK,qBAAuB95hB,EAAU,OAASA,EAAU,KACvE,EAAW2wgD,gBAef,OAXI3wgD,IAAYywgD,GAAmB32+B,KACjC22+B,GAAmB32+B,IAAO,EAE1B/4gB,QAAQC,KACN0v/C,EACE52+B,EACA,+BAAiC95hB,EAAU,8CAK1C265B,GAAYA,EAAU9/5B,EAAOi/hB,EAAK/jf,EAAY,CAEzD,EAEA2k3B,GAAWk2mB,SAAW,SAAkBC,GACtC,MAAO,CAACh2gD,EAAOi/hB,KAEb/4gB,QAAQC,KAAK,GAAG84gB,gCAAkC+2+B,MAC3C,EAEX,EAmCA,UACEC,cAxBF,SAAuBju/C,EAASkwP,EAAQg+vC,GACtC,GAAuB,iBAAZlu/C,EACT,MAAM,IAAI,EAAW,4BAA6B,EAAWmu/C,sBAE/D,MAAMhkgD,EAAOhU,OAAOgU,KAAK6V,GACzB,IAAIvoB,EAAI0S,EAAKjT,OACb,KAAOO,KAAM,GAAG,CACd,MAAMw/hB,EAAM9shB,EAAK1S,GACXqg6B,EAAY5npB,EAAO+mR,GACzB,GAAI6gY,EAAJ,CACE,MAAM9/5B,EAAQgoB,EAAQi3gB,GAChB58gB,OAAmBuqB,IAAV5sC,GAAuB8/5B,EAAU9/5B,EAAOi/hB,EAAKj3gB,GAC5D,IAAe,IAAX3F,EACF,MAAM,IAAI,EAAW,UAAY48gB,EAAM,YAAc58gB,EAAQ,EAAW8z/C,qBAG5E,MACA,IAAqB,IAAjBD,EACF,MAAM,IAAI,EAAW,kBAAoBj3+B,EAAK,EAAWm3+B,eAE7D,CACF,EAIEv2mB,eCtFI,GAAaC,GAAUD,WAS7B,MAAM+c,GACJ,WAAA996B,CAAYi+6B,GACVl+6B,KAAKgxU,SAAWktmB,GAAkB,CAAC,EACnCl+6B,KAAKu+6B,aAAe,CAClBx52B,QAAS,IAAI,GACbt2C,SAAU,IAAI,GAElB,CAUA,aAAMs2C,CAAQyy8C,EAAa17sC,GACzB,IACE,aAAa97T,KAAK0+5C,SAAS84G,EAAa17sC,EAC1C,CAAE,MAAOxkR,GACP,GAAIA,aAAe9vB,MAAO,CACxB,IAAIiw/C,EAAQ,CAAC,EAEbjw/C,MAAM2m/C,kBAAoB3m/C,MAAM2m/C,kBAAkBsJ,GAAUA,EAAQ,IAAIjw/C,MAGxE,MAAMmrB,EAAQ8k+C,EAAM9k+C,MAAQ8k+C,EAAM9k+C,MAAMlmC,QAAQ,QAAS,IAAM,GAC/D,IACO6qC,EAAI3E,MAGEA,IAAU7yC,OAAOw3C,EAAI3E,OAAOoV,SAASpV,EAAMlmC,QAAQ,YAAa,OACzE6qC,EAAI3E,OAAS,KAAOA,GAHpB2E,EAAI3E,MAAQA,CAKhB,CAAE,MAAOxzC,GAET,CACF,CAEA,MAAMm4C,CACR,CACF,CAEA,QAAAon3C,CAAS84G,EAAa17sC,GAGO,iBAAhB07sC,GACT17sC,EAASA,GAAU,CAAC,GACb5rS,IAAMsn/C,EAEb17sC,EAAS07sC,GAAe,CAAC,EAG3B17sC,EAASkinB,GAAYh+6B,KAAKgxU,SAAUlV,GAEpC,MAAM,aAACk0sC,EAAY,iBAAEp2lB,EAAgB,QAAEpp5B,GAAWsrS,OAE7B/tR,IAAjBii+C,GACF/umB,GAAUm2mB,cAAcpH,EAAc,CACpCX,kBAAmB,GAAWW,aAAa,GAAWnm3C,SACtDyl3C,kBAAmB,GAAWU,aAAa,GAAWnm3C,SACtD0l3C,oBAAqB,GAAWS,aAAa,GAAWnm3C,WACvD,GAGmB,MAApB+vxB,IACEryjB,EAAMviH,WAAW40qB,GACnB99mB,EAAO89mB,iBAAmB,CACxBzsO,UAAWysO,GAGb3Y,GAAUm2mB,cAAcx9lB,EAAkB,CACxC/x5B,OAAQ,GAAWuiI,SACnB+ijB,UAAW,GAAW/ijB,WACrB,SAK0Br8G,IAA7B+tR,EAAOq3sC,yBAEoCpl+C,IAApC/tC,KAAKgxU,SAASmisC,kBACvBr3sC,EAAOq3sC,kBAAoBnzgD,KAAKgxU,SAASmisC,kBAEzCr3sC,EAAOq3sC,mBAAoB,GAG7BlymB,GAAUm2mB,cAAct7sC,EAAQ,CAC9B7pS,QAAS,GAAWil/C,SAAS,WAC7BQ,cAAe,GAAWR,SAAS,mBAClC,GAGHp7sC,EAAOrrS,QAAUqrS,EAAOrrS,QAAUzwB,KAAKgxU,SAASvgT,QAAU,OAAOlhB,cAGjE,IAAIoogD,EAAiBnn/C,GAAW+2V,EAAMzmH,MACpCtwO,EAAQy9G,OACRz9G,EAAQsrS,EAAOrrS,SAGjBD,GAAW+2V,EAAMriW,QACf,CAAC,SAAU,MAAO,OAAQ,OAAQ,MAAO,QAAS,WACjDuL,WACQD,EAAQC,EAAO,IAI1BqrS,EAAOtrS,QAAU,GAAaxuB,OAAO21gD,EAAgBnn/C,GAGrD,MAAMon/C,EAA0B,GAChC,IAAIC,GAAiC,EACrC73gD,KAAKu+6B,aAAax52B,QAAQ7/C,SAAQ,SAAoCu55B,GACjC,mBAAxBA,EAAY2wlB,UAA0D,IAAhC3wlB,EAAY2wlB,QAAQtzsC,KAIrE+7sC,EAAiCA,GAAkCp5lB,EAAY0wlB,YAE/EyI,EAAwB/s/C,QAAQ4z5B,EAAYv8hB,UAAWu8hB,EAAYt8hB,UACrE,IAEA,MAAM21nC,EAA2B,GAKjC,IAAInx/C,EAJJ3mB,KAAKu+6B,aAAa9v5B,SAASvJ,SAAQ,SAAkCu55B,GACnEq5lB,EAAyBj2gD,KAAK486B,EAAYv8hB,UAAWu8hB,EAAYt8hB,SACnE,IAGA,IACItjR,EADAj+H,EAAI,EAGR,IAAKi3gD,EAAgC,CACnC,MAAMr5lB,EAAQ,CAACF,GAAgBj76B,KAAKrD,WAAO+tC,GAO3C,IANAyw4B,EAAM3z5B,QAAQtqB,MAAMi+6B,EAAOo5lB,GAC3Bp5lB,EAAM386B,KAAKtB,MAAMi+6B,EAAOs5lB,GACxBj54C,EAAM2/yB,EAAMn+6B,OAEZsmB,EAAUhmB,QAAQ2kB,QAAQw2S,GAEnBl7T,EAAIi+H,GACTl4G,EAAUA,EAAQvlB,KAAKo96B,EAAM596B,KAAM496B,EAAM596B,MAG3C,OAAO+lB,CACT,CAEAk4G,EAAM+44C,EAAwBv3gD,OAE9B,IAAIwtb,EAAY/xH,EAIhB,IAFAl7T,EAAI,EAEGA,EAAIi+H,GAAK,CACd,MAAMr4G,EAAcox/C,EAAwBh3gD,KACtC6lB,EAAamx/C,EAAwBh3gD,KAC3C,IACEitb,EAAYrna,EAAYqna,EAC1B,CAAE,MAAO/rb,GACP2kB,EAAW7mB,KAAKI,KAAM8B,GACtB,KACF,CACF,CAEA,IACE6kB,EAAU235B,GAAgB1+6B,KAAKI,KAAM6tb,EACvC,CAAE,MAAO/rb,GACP,OAAOnB,QAAQ4kB,OAAOzjB,EACxB,CAKA,IAHAlB,EAAI,EACJi+H,EAAMi54C,EAAyBz3gD,OAExBO,EAAIi+H,GACTl4G,EAAUA,EAAQvlB,KAAK02gD,EAAyBl3gD,KAAMk3gD,EAAyBl3gD,MAGjF,OAAO+lB,CACT,CAEA,MAAA+35B,CAAO5inB,GAGL,OAAO6+mB,GADUs4lB,IADjBn3sC,EAASkinB,GAAYh+6B,KAAKgxU,SAAUlV,IACEmjnB,QAASnjnB,EAAO5rS,IAAK4rS,EAAOq3sC,mBACxCr3sC,EAAOzzR,OAAQyzR,EAAO89mB,iBAClD,EAIFryjB,EAAMriW,QAAQ,CAAC,SAAU,MAAO,OAAQ,YAAY,SAA6BuL,GAE/Est5B,GAAMr+6B,UAAU+wB,GAAU,SAASP,EAAK4rS,GACtC,OAAO97T,KAAK+kE,QAAQi52B,GAAYlinB,GAAU,CAAC,EAAG,CAC5CrrS,SACAP,MACA1gB,MAAOssT,GAAU,CAAC,GAAGtsT,OAEzB,CACF,IAEA+3W,EAAMriW,QAAQ,CAAC,OAAQ,MAAO,UAAU,SAA+BuL,GAGrE,SAASsn/C,EAAmBC,GAC1B,OAAO,SAAoB9n/C,EAAK1gB,EAAMssT,GACpC,OAAO97T,KAAK+kE,QAAQi52B,GAAYlinB,GAAU,CAAC,EAAG,CAC5CrrS,SACAD,QAASwn/C,EAAS,CAChB,eAAgB,uBACd,CAAC,EACL9n/C,MACA1gB,SAEJ,CACF,CAEAuu6B,GAAMr+6B,UAAU+wB,GAAUsn/C,IAE1Bh6lB,GAAMr+6B,UAAU+wB,EAAS,QAAUsn/C,GAAmB,EACxD,IAEA,YCtOA,MAAMj6lB,GACJ,WAAA796B,CAAY+g7B,GACV,GAAwB,mBAAbA,EACT,MAAM,IAAInh7B,UAAU,gCAGtB,IAAIoh7B,EAEJjh7B,KAAK2mB,QAAU,IAAIhmB,SAAQ,SAAyB2kB,GAClD275B,EAAiB375B,CACnB,IAEA,MAAM+3J,EAAQr9K,KAGdA,KAAK2mB,QAAQvlB,MAAKyhD,IAChB,IAAKw6H,EAAM+1sC,WAAY,OAEvB,IAAIxy3C,EAAIy8K,EAAM+1sC,WAAW/y3C,OAEzB,KAAOO,KAAM,GACXy8K,EAAM+1sC,WAAWxy3C,GAAGiiD,GAEtBw6H,EAAM+1sC,WAAa,IAAI,IAIzBpz3C,KAAK2mB,QAAQvlB,KAAO62gD,IAClB,IAAItuwC,EAEJ,MAAMhjP,EAAU,IAAIhmB,SAAQ2kB,IAC1B+3J,EAAM3hI,UAAUp2B,GAChBqkP,EAAWrkP,CAAO,IACjBlkB,KAAK62gD,GAMR,OAJAtx/C,EAAQk8B,OAAS,WACfw6H,EAAMzhI,YAAY+tN,EACpB,EAEOhjP,CAAO,EAGhBq65B,GAAS,SAAgBjv5B,EAAS+pS,EAAQ/2P,GACpCs4G,EAAM33J,SAKV23J,EAAM33J,OAAS,IAAI,GAAcqM,EAAS+pS,EAAQ/2P,GAClDk82B,EAAe5jwB,EAAM33J,QACvB,GACF,CAKA,gBAAAs55B,GACE,GAAIh/6B,KAAK0lB,OACP,MAAM1lB,KAAK0lB,MAEf,CAMA,SAAAg2B,CAAUpM,GACJtvC,KAAK0lB,OACP4pB,EAAStvC,KAAK0lB,QAIZ1lB,KAAKoz3C,WACPpz3C,KAAKoz3C,WAAWvx3C,KAAKytC,GAErBtvC,KAAKoz3C,WAAa,CAAC9j1C,EAEvB,CAMA,WAAAsM,CAAYtM,GACV,IAAKtvC,KAAKoz3C,WACR,OAEF,MAAMp22C,EAAQhd,KAAKoz3C,WAAW5y3C,QAAQ8uC,IACvB,IAAXtyB,GACFhd,KAAKoz3C,WAAWnw2C,OAAOjG,EAAO,EAElC,CAEA,aAAAi5/C,GACE,MAAM1l4C,EAAa,IAAIhmH,gBAEjB0G,EAASqmB,IACbi5F,EAAWt/G,MAAMqmB,EAAI,EAOvB,OAJAt3C,KAAK07C,UAAUzqB,GAEfs/G,EAAWtmH,OAAO2xB,YAAc,IAAM57C,KAAK47C,YAAY3qB,GAEhDs/G,EAAWtmH,MACpB,CAMA,aAAOpiB,GACL,IAAIg7C,EAIJ,MAAO,CACLw6H,MAJY,IAAIygwB,IAAY,SAAkBj96B,GAC9CgiD,EAAShiD,CACX,IAGEgiD,SAEJ,EAGF,YCtIM8o9C,GAAiB,CACrBuM,SAAU,IACVC,mBAAoB,IACpBC,WAAY,IACZC,WAAY,IACZ7jL,GAAI,IACJ8jL,QAAS,IACTC,SAAU,IACVC,4BAA6B,IAC7BC,UAAW,IACXC,aAAc,IACdC,eAAgB,IAChBC,YAAa,IACbC,gBAAiB,IACjBC,OAAQ,IACRC,gBAAiB,IACjBC,iBAAkB,IAClBC,MAAO,IACPC,SAAU,IACVC,YAAa,IACbC,SAAU,IACVC,OAAQ,IACRC,kBAAmB,IACnBC,kBAAmB,IACnBC,WAAY,IACZC,aAAc,IACdC,gBAAiB,IACjBC,UAAW,IACXC,SAAU,IACVC,iBAAkB,IAClBC,cAAe,IACfC,4BAA6B,IAC7BC,eAAgB,IAChBC,SAAU,IACVC,KAAM,IACNC,eAAgB,IAChBC,mBAAoB,IACpBC,gBAAiB,IACjBC,WAAY,IACZC,qBAAsB,IACtBC,oBAAqB,IACrBC,kBAAmB,IACnBC,UAAW,IACXC,mBAAoB,IACpBC,oBAAqB,IACrBC,OAAQ,IACRC,iBAAkB,IAClBC,SAAU,IACVC,gBAAiB,IACjBC,qBAAsB,IACtBC,gBAAiB,IACjBC,4BAA6B,IAC7BC,2BAA4B,IAC5BC,oBAAqB,IACrBC,eAAgB,IAChBC,WAAY,IACZC,mBAAoB,IACpBC,eAAgB,IAChBC,wBAAyB,IACzBC,sBAAuB,IACvBC,oBAAqB,IACrBC,aAAc,IACdC,YAAa,IACbC,8BAA+B,KAGjCz8gD,OAAOmd,QAAQkv/C,IAAgBzm/C,SAAQ,EAAEL,EAAK1jB,MAC5CwqgD,GAAexqgD,GAAS0jB,CAAG,IAG7B,YCxBMo55B,GAnBN,SAASr6J,EAAe7vY,GACtB,MAAM5mW,EAAU,IAAI,GAAM4mW,GACpB7oX,EAAW7nB,EAAK,GAAM3D,UAAUqlE,QAAS53B,GAa/C,OAVAo6U,EAAM8hC,OAAOn+X,EAAU,GAAMxrB,UAAWytC,EAAS,CAACk/9C,YAAY,IAG9D9kpC,EAAM8hC,OAAOn+X,EAAUiiB,EAAS,KAAM,CAACk/9C,YAAY,IAGnDnh/C,EAAShrB,OAAS,SAAgBg+6B,GAChC,OAAOt6J,EAAeo6J,GAAYjqiB,EAAemqiB,GACnD,EAEOhz5B,CACT,CAGc04vB,CAAe,IAG7Bq6J,GAAMF,MAAQ,GAGdE,GAAMutlB,cAAgB,GACtBvtlB,GAAMH,YAAc,GACpBG,GAAME,SAAWA,GACjBF,GAAM96xB,QAAUA,GAChB86xB,GAAMwtlB,WAAa,GAGnBxtlB,GAAMstlB,WAAa,EAGnBttlB,GAAMrC,OAASqC,GAAMutlB,cAGrBvtlB,GAAM746B,IAAM,SAAagnR,GACvB,OAAOzrR,QAAQyE,IAAIgnR,EACrB,EAEA6xpB,GAAMG,OC9CS,SAAgBl15B,GAC7B,OAAO,SAAcu1M,GACnB,OAAOv1M,EAAS3oB,MAAM,KAAMk+N,EAC9B,CACF,ED6CAw/sB,GAAMqC,aE7DS,SAAsBxr5B,GACnC,OAAOyyV,EAAMtiH,SAASnwO,KAAsC,IAAzBA,EAAQwr5B,YAC7C,EF8DArC,GAAMD,YAAcA,GAEpBC,GAAMytlB,aAAe,GAErBztlB,GAAM2tlB,WAAaG,GAAS,GAAexkpC,EAAMilpC,WAAWT,GAAS,IAAI3ylB,SAAS2ylB,GAASA,GAE3F9tlB,GAAM4tlB,WAAa8K,GAEnB14lB,GAAM0tlB,eAAiB,GAEvB1tlB,GAAM176B,QAAU076B,GAGhB,0CGjFe,SAAS+9lB,EAAWxz/B,EAAUkB,EAAOC,EAAKqvO,EAAMH,EAAQrjqB,EAAQsiqB,GAC7E,IAAIk9L,EAAU,IAAIxp6B,KAAK,GAGvB,OAFAwp6B,EAAQ/5L,eAAezyO,EAAUkB,EAAOC,GACxCqra,EAAQp6L,YAAY5B,EAAMH,EAAQrjqB,EAAQsiqB,GACnCk9L,CACT,iECHA,IAAIinlB,EAAY,CACdxy/B,KAAM,EACNC,MAAO,EACPC,IAAK,EACLqvO,KAAM,EACNH,OAAQ,EACRrjqB,OAAQ,GAkCN0m7C,EAAW,CAAC,aC9CZjllB,EAAuB,KACvBkllB,EAAyB,IAEzB36kB,EAAW,CACbxhK,SAAU,aACVo8uB,UAAW,QACXC,WAAY,gBACZC,aAAc,4BAID,SAASC,EAAgBv5kB,EAAgB3t5B,EAAMmn+C,GAC5D,IAAIn/1C,EACAo/1C,EAaA7y/B,EAVJ,IAAKo5a,EACH,OAAO,EAKT,GADA3lxB,EAAQmkxB,EAAS46kB,UAAUhqgD,KAAK4w7B,GAE9B,OAAO,EAOT,GADA3lxB,EAAQmkxB,EAAS66kB,WAAWjqgD,KAAK4w7B,GAI/B,OAAKG,EAFLv5a,EAAQj0f,SAAS0nJ,EAAM,GAAI,MAMlBusW,EAAQqta,EAHRr7L,IAQX,GADAv+kB,EAAQmkxB,EAAS86kB,aAAalqgD,KAAK4w7B,GACxB,CACTp5a,EAAQj0f,SAAS0nJ,EAAM,GAAI,IAC3B,IAAIwsW,EAAUl0f,SAAS0nJ,EAAM,GAAI,IAEjC,OAAK8lxB,EAAiBv5a,EAAOC,IAI7B4y/B,EAAiB55gD,KAAKmjH,IAAI4ja,GAASqta,EAAuBpta,EAAUsy/B,EAChD,MAAb9+1C,EAAM,IAAco/1C,EAAiBA,GAJnC7gxB,GAKX,CAGA,GA8EF,SAAmC8gxB,GACjC,GAAIC,EAAuBD,GAAiB,OAAO,EACnD,IAGE,OAFA,IAAInlnB,KAAKC,oBAAezp3B,EAAW,CAAE6u+C,SAAUF,IAC/CC,EAAuBD,IAAkB,GAClC,CACT,CAAE,MAAO56gD,GACP,OAAO,CACT,CACF,CAvFM+6gD,CAA0B75kB,GAAiB,CAC7C3t5B,EAAO,IAAI7pB,KAAK6pB,GAAQ7pB,KAAKC,OAC7B,IAAIup6B,EAAUwnlB,EAAYnn+C,EAY9B,SAAmBA,GACjB,OAAO,EAAA2m+C,EAAA,GACL3m+C,EAAK4ye,cACL5ye,EAAK6ye,WACL7ye,EAAK7Q,UACL6Q,EAAK8ye,WACL9ye,EAAK+ye,aACL/ye,EAAKgze,aACLhze,EAAKlf,kBAET,CAtBqC2m/C,CAAUzn+C,GAEvC8M,EAAS469C,EAAW/nlB,EAASgO,GAE7Bg6kB,EAAcR,EAAYr69C,EAwClC,SAAmB9M,EAAM8M,EAAQ6g5B,GAC/B,IAGIi6kB,EAHU5n+C,EAAK5N,UAGM0a,EAGrBqlT,EAAKu1qC,EAAW,IAAIvx/C,KAAKyx/C,GAAWj6kB,GAGxC,GAAI7g5B,IAAWqlT,EACb,OAAOrlT,EAIT869C,GAAYz1qC,EAAKrlT,EAGjB,IAAIslT,EAAKs1qC,EAAW,IAAIvx/C,KAAKyx/C,GAAWj6kB,GACxC,OAAIx7lB,IAAOC,EACFD,EAIF3kW,KAAK8K,IAAI65V,EAAIC,EACtB,CAjE2Cy1qC,CAAU7n+C,EAAM8M,EAAQ6g5B,GAE/D,OAAQg6kB,CACV,CAEA,OAAOphxB,GACT,CAcA,SAASmhxB,EAAW1n+C,EAAM2t5B,GACxB,IAAIsB,EDjFS,SAAwBjv5B,EAAMun+C,GAC3C,IAAIO,EA6CN,SAA2BP,GACzB,IAAKV,EAASU,GAAW,CAEvB,IAAIQ,EAAoB,IAAI7lnB,KAAKC,eAAe,QAAS,CACvD6lnB,UAAW,MACXT,SAAU,mBACVnz/B,KAAM,UACNC,MAAO,UACPC,IAAK,UACLqvO,KAAM,UACNH,OAAQ,UACRrjqB,OAAQ,YACPtwB,OAAO,IAAI15C,KAAK,6BACf8x/C,EACoB,yBAAtBF,GACsB,mCAAtBA,EAEFlB,EAASU,GAAYU,EACjB,IAAI/lnB,KAAKC,eAAe,QAAS,CAC/B6lnB,UAAW,MACXT,SAAUA,EACVnz/B,KAAM,UACNC,MAAO,UACPC,IAAK,UACLqvO,KAAM,UACNH,OAAQ,UACRrjqB,OAAQ,YAEV,IAAI+h0B,KAAKC,eAAe,QAAS,CAC/BC,QAAQ,EACRmlnB,SAAUA,EACVnz/B,KAAM,UACNC,MAAO,UACPC,IAAK,UACLqvO,KAAM,UACNH,OAAQ,UACRrjqB,OAAQ,WAEhB,CACA,OAAO0m7C,EAASU,EAClB,CArFYW,CAAkBX,GAC5B,OAAOO,EAAIK,cAYb,SAAqBL,EAAK9n+C,GACxB,IAGE,IAFA,IAAI0hW,EAAYomoC,EAAIK,cAAcno+C,GAC9BkmI,EAAS,GACJ36K,EAAI,EAAGA,EAAIm2Y,EAAU12Y,OAAQO,IAAK,CACzC,IAAIyhH,EAAM455C,EAAUlloC,EAAUn2Y,GAAG2L,MAE7B81G,GAAO,IACTk5D,EAAOl5D,GAAO1sF,SAASohX,EAAUn2Y,GAAGO,MAAO,IAE/C,CACA,OAAOo6K,CACT,CAAE,MAAOz5K,GACP,GAAIA,aAAiB6mB,WACnB,MAAO,CAACizuB,KAEV,MAAM95vB,CACR,CACF,CA9B6B27gD,CAAYN,EAAK9n+C,GAgC9C,SAAqB8n+C,EAAK9n+C,GACxB,IAAI0hW,EAAYomoC,EAAIj48C,OAAO7vB,GACvBioN,EAAS,0CAA0ClrP,KAAK2kY,GAG5D,MAAO,CAACz5I,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAIA,EAAO,GACxE,CAtCsDogxC,CAAYP,EAAK9n+C,EACvE,CC8Eeso+C,CAAeto+C,EAAM2t5B,GAG9B46kB,GAAQ,EAAA5B,EAAA,GACV13kB,EAAO,GACPA,EAAO,GAAK,EACZA,EAAO,GACPA,EAAO,GAAK,GACZA,EAAO,GACPA,EAAO,GACP,GACA785B,UAEEo2+C,EAAOxo+C,EAAK5N,UACZ8svC,EAAOspP,EAAO,IAElB,OAAOD,GADPC,GAAQtpP,GAAQ,EAAIA,EAAO,IAAOA,GAEpC,CA6BA,SAASpxV,EAAiBv5a,EAAOC,GAC/B,OAAQ,IAAMD,GAASA,GAAS,KAAkB,MAAXC,GAAoB,GAAKA,GAAWA,GAAW,GACxF,CAEA,IAAI8y/B,EAAyB,CAAC,iDCpI9B,QAFgB,wICID,SAASmB,EAAmBz9gD,EAAQg1C,EAAMlsB,GACvD,IAAIg0/C,EAsBN,SAAgB98gD,EAAQu8gD,EAAU/vkC,GAChC,GAAIA,IAAWA,EAAO3xa,KACpB,MAAM,IAAI1T,MACR,2HAGJ,OAAO,IAAI+v4B,KAAKC,eAAe3qd,EAAS,CAACA,EAAO3xa,KAAM,cAAW6S,EAAW,CAC1E6u+C,SAAUA,EACVmB,aAAc19gD,GAElB,CAhCY29gD,CAAO39gD,EAAQ8oB,EAAQyz/C,SAAUzz/C,EAAQ0jb,QACnD,OAAOswkC,EAAIK,cAGb,SAAuBL,EAAK9n+C,GAG1B,IAFA,IAAI0hW,EAAYomoC,EAAIK,cAAcno+C,GAEzBz0C,EAAIm2Y,EAAU12Y,OAAS,EAAGO,GAAK,IAAKA,EAC3C,GAA0B,iBAAtBm2Y,EAAUn2Y,GAAG2L,KACf,OAAOwqY,EAAUn2Y,GAAGO,KAG1B,CAX6B88gD,CAAcd,EAAK9n+C,GAahD,SAAuB8n+C,EAAK9n+C,GAC1B,IAAI0hW,EAAYomoC,EAAIj48C,OAAO7vB,GAAM5oC,QAAQ,UAAW,IAChDyxgD,EAAc,aAAa9rgD,KAAK2kY,GACpC,OAAOmnoC,EAAcA,EAAY,GAAGzi/C,OAAO,GAAK,EAClD,CAjBwD0i/C,CAAchB,EAAK9n+C,EAC3E,gBCuFA,SAAS+o+C,EAAkBxB,EAAUtolB,GACnC,IAAI+plB,EAAiBzB,GACjB,EAAAL,EAAA,GAAgBK,EAAUtolB,GAAc,GA9FjB,IA+FvBA,EAAa/7L,oBACjB,GAAIpztB,OAAOmH,MAAM+x+C,GACf,MAAM,IAAI11/C,WAAW,gCAAkCi0/C,GAEzD,OAAOyB,CACT,CAEA,SAAShklB,EAAgBtwyB,EAAQrhB,GAG/B,IAFA,IAAI4xD,EAAOvwC,EAAS,EAAI,IAAM,GAC1B3gF,EAASvmE,KAAKmjH,IAAI+jC,GAAQxlJ,WACvB6kE,EAAO/oE,OAASqoI,GACrBt/D,EAAS,IAAMA,EAEjB,OAAOkxH,EAAOlxH,CAChB,CAEA,SAAS6p3B,EAAe9w4B,EAAQm89C,GAC9B,IAAIC,EAAYD,GAAkB,GAC9Bhk1C,EAAOn4I,EAAS,EAAI,IAAM,IAC1B4w4B,EAAYlw7B,KAAKmjH,IAAI7jE,GAGzB,OAAOm4I,EAFK+/vB,EAAgBx37B,KAAKyK,MAAMyl7B,EAAY,IAAK,GAElCwrlB,EADRlklB,EAAgBx37B,KAAKyK,MAAMyl7B,EAAY,IAAK,EAE5D,CAEA,SAASC,EAAkC7w4B,EAAQm89C,GACjD,OAAIn89C,EAAS,IAAO,GACPA,EAAS,EAAI,IAAM,KAChBk44B,EAAgBx37B,KAAKmjH,IAAI7jE,GAAU,GAAI,GAEhD8w4B,EAAe9w4B,EAAQm89C,EAChC,CAcA,QA1IiB,CAEfv5gD,EAAG,SAAUswC,EAAMgoI,EAAO61wB,EAAU/p6B,GAClC,IAAIir6B,EAAiBgqlB,EAAkBj1/C,EAAQyz/C,SAAUvn+C,GAEzD,GAAuB,IAAnB++4B,EACF,MAAO,IAGT,OAAQ/2wB,GAEN,IAAK,IACH,OAAO21wB,EAAkCoB,GAK3C,IAAK,OACL,IAAK,KACH,OAAOnB,EAAemB,GAOxB,QACE,OAAOnB,EAAemB,EAAgB,KAE5C,EAGAnw7B,EAAG,SAAUoxC,EAAMgoI,EAAO61wB,EAAU/p6B,GAClC,IAAIir6B,EAAiBgqlB,EAAkBj1/C,EAAQyz/C,SAAUvn+C,GAEzD,OAAQgoI,GAEN,IAAK,IACH,OAAO21wB,EAAkCoB,GAK3C,IAAK,OACL,IAAK,KACH,OAAOnB,EAAemB,GAOxB,QACE,OAAOnB,EAAemB,EAAgB,KAE5C,EAGApw7B,EAAG,SAAUqxC,EAAMgoI,EAAO61wB,EAAU/p6B,GAClC,IAAIir6B,EAAiBgqlB,EAAkBj1/C,EAAQyz/C,SAAUvn+C,GAEzD,OAAQgoI,GAEN,IAAK,IACL,IAAK,KACL,IAAK,MACH,MAAO,MA4Df,SAA6Bl7H,EAAQ2w4B,GACnC,IAAIx4vB,EAAOn4I,EAAS,EAAI,IAAM,IAC1B4w4B,EAAYlw7B,KAAKmjH,IAAI7jE,GACrByne,EAAQ/mhB,KAAKyK,MAAMyl7B,EAAY,IAC/Blpa,EAAUkpa,EAAY,GAC1B,GAAgB,IAAZlpa,EACF,OAAOvvV,EAAOx6L,OAAO8phB,GAGvB,OAAOtvV,EAAOx6L,OAAO8phB,GArEoC,IAqEfywa,EAAgBxwa,EAAS,EACrE,CAtEuBgpa,CAAoBuB,GAGrC,QACE,MAAO,MAAQnB,EAAemB,EAAgB,KAEpD,EAGAzu7B,EAAG,SAAU0vC,EAAMgoI,EAAO61wB,EAAU/p6B,GAClC,OAAQk0J,GAEN,IAAK,IACL,IAAK,KACL,IAAK,MACH,OAAOyg2C,EAAmB,QAASzo+C,EAAMlsB,GAG3C,QACE,OAAO20/C,EAAmB,OAAQzo+C,EAAMlsB,GAE9C,kBCxFEq1/C,EAA2B,iCA0ThB,SAAS,EAAOvplB,EAAWgG,EAAgBwjlB,GACxD,IAAIhjlB,EAAY377B,OAAOm77B,GACnB9x6B,EAAUs1/C,GAAgB,CAAC,EAE3Bxq9C,EAAUwn4B,EAAUh17B,MAAM+3gD,GAC9B,GAAIvq9C,EAAS,CACX,IAAI5e,GAAO,EAAAwj5B,EAAA,GAAO1v6B,EAAQmr6B,cAAgBW,EAAW9r6B,GAGrDsy6B,EAAYxn4B,EAAQvgC,QAAO,SAAUlQ,EAAQ65J,GAC3C,GAAiB,MAAbA,EAAM,GACR,OAAO75J,EAET,IAAI6+F,EAAM7+F,EAAOhjB,QAAQ68K,GACrBqh2C,EAA8C,MAApBl7/C,EAAO6+F,EAAM,GACvCs85C,EAAWn7/C,EAAO/W,QACpB4wK,EACA,IAAM,EAAWA,EAAM,IAAIhoI,EAAMgoI,EAAO,KAAMl0J,GAAW,KAI3D,OAAOu1/C,EACHC,EAASrn/C,UAAU,EAAG+qF,EAAM,GAAKs85C,EAASrn/C,UAAU+qF,EAAM,GAC1Ds85C,CACN,GAAGljlB,EACL,CAEA,OAAO,EAAcxG,EAAWwG,EAAWty6B,EAC7C,+FCrVI8t6B,EAAuB,KACvBkllB,EAAyB,IACzByC,EAA4B,EAE5Bp9kB,EAAW,CACbq9kB,gBAAiB,wBACjB/plB,YAAa,mBACbgqlB,UAAW,IAGXl2/B,GAAI,YACJm2/B,IAAK,CACH,gBACA,gBACA,iBAEFp2/B,KAAM,WACNq2/B,MAAO,CACL,eACA,eACA,gBAIFj2/B,GAAI,aACJk2/B,IAAK,cACLC,KAAM,uBACNC,IAAK,eACLC,KAAM,wBAENC,GAAI,sBACJC,KAAM,+BACNC,OAAQ,wCAGR3C,SAAU,KA4CG,SAAS/jlB,EAAOvklB,EAAUmqqC,GACvC,GAAIr+gD,UAAUC,OAAS,EACrB,MAAM,IAAIR,UAAU,iCAAmCO,UAAUC,OAAS,YAG5E,GAAiB,OAAbi0W,EACF,OAAO,IAAI9oV,KAAKowuB,KAGlB,IAAIzyuB,EAAUs1/C,GAAgB,CAAC,EAE3Br9kB,EAC0B,MAA5Bj46B,EAAQi46B,iBACJw9kB,EACA,EAAUz1/C,EAAQi46B,kBACxB,GAAyB,IAArBA,GAA+C,IAArBA,GAA+C,IAArBA,EACtD,MAAM,IAAIz46B,WAAW,sCAIvB,GACE2rV,aAAoB9oV,MACC,iBAAb8oV,GAAsE,kBAA7Ch1W,OAAOI,UAAU6E,SAAS3E,KAAK00W,GAGhE,OAAO,IAAI9oV,KAAK8oV,EAAS7sU,WACpB,GACe,iBAAb6sU,GACsC,oBAA7Ch1W,OAAOI,UAAU6E,SAAS3E,KAAK00W,GAE/B,OAAO,IAAI9oV,KAAK8oV,GACX,GAEiB,iBAAbA,GAAsE,oBAA7Ch1W,OAAOI,UAAU6E,SAAS3E,KAAK00W,GAGjE,OAAO,IAAI9oV,KAAKowuB,KAGlB,IAAIylM,EA0CN,SAAyBC,GACvB,IAEIC,EAFAF,EAAc,CAAC,EACf7h5B,EAAQgi5B,EAASq9kB,gBAAgBzsgD,KAAKkv7B,GAiB1C,GAdK9h5B,GAUH6h5B,EAAYhs5B,KAAOmK,EAAM,GACzB+h5B,EAAa/h5B,EAAM,KAVnBA,EAAQgi5B,EAAS1M,YAAY1i7B,KAAKkv7B,KAEhCD,EAAYhs5B,KAAOmK,EAAM,GACzB+h5B,EAAa/h5B,EAAM,KAEnB6h5B,EAAYhs5B,KAAO,KACnBks5B,EAAaD,GAObC,EAAY,CACd,IAAIlkxB,EAAQmkxB,EAASo7kB,SAASxqgD,KAAKmv7B,GAC/BlkxB,GACFgkxB,EAAYx74B,KAAO074B,EAAW907B,QAAQ4wK,EAAM,GAAI,IAChDgkxB,EAAYu7kB,SAAWv/1C,EAAM,GAAGhrJ,QAEhCgv6B,EAAYx74B,KAAO074B,CAEvB,CAEA,OAAOF,CACT,CAxEoBM,CAAgBrtlB,GAE9BstlB,EAwEN,SAAmBN,EAAYF,GAC7B,IAGI/jxB,EAHAmi2C,EAAah+kB,EAASu9kB,IAAI39kB,GAC1Bq+kB,EAAej+kB,EAASw9kB,MAAM59kB,GAMlC,GADA/jxB,EAAQmkxB,EAAS74a,KAAKv2gB,KAAKkv7B,IAAem+kB,EAAartgD,KAAKkv7B,GACjD,CACT,IAAIo+kB,EAAari2C,EAAM,GACvB,MAAO,CACLosW,KAAM9zf,SAAS+p/C,EAAY,IAC3B59kB,eAAgBR,EAAWv/7B,MAAM29gD,EAAWr/gD,QAEhD,CAIA,GADAg9K,EAAQmkxB,EAAS54a,GAAGx2gB,KAAKkv7B,IAAek+kB,EAAWptgD,KAAKkv7B,GAC7C,CACT,IAAIq+kB,EAAgBti2C,EAAM,GAC1B,MAAO,CACLosW,KAAoC,IAA9B9zf,SAASgq/C,EAAe,IAC9B79kB,eAAgBR,EAAWv/7B,MAAM49gD,EAAct/gD,QAEnD,CAGA,MAAO,CACLophB,KAAM,KAEV,CAtGwBu4a,CAAUX,EAAYhs5B,KAAM+r5B,GAC9C33a,EAAOm4a,EAAgBn4a,KAGvBp0e,EAoGN,SAAmBis5B,EAAY73a,GAE7B,GAAa,OAATA,EACF,OAAO,KAGT,IAAIpsW,EACAhoI,EACAq0e,EACAu4Q,EAGJ,GAA0B,IAAtBq/J,EAAWjh8B,OAGb,OAFAg1C,EAAO,IAAI7pB,KAAK,IACXyvuB,eAAexxO,GACbp0e,EAKT,GADAgoI,EAAQmkxB,EAASz4a,GAAG32gB,KAAKkv7B,GAKvB,OAHAjs5B,EAAO,IAAI7pB,KAAK,GAGXi36B,EAAah5a,EAFlBC,EAAQ/zf,SAAS0nJ,EAAM,GAAI,IAAM,IAMjChoI,EAAK4ltB,eAAexxO,EAAMC,GACnBr0e,GAJE,IAAI7pB,KAAKowuB,KASpB,GADAv+kB,EAAQmkxB,EAASy9kB,IAAI7sgD,KAAKkv7B,GACf,CACTjs5B,EAAO,IAAI7pB,KAAK,GAChB,IAAI6zwB,EAAY1pwB,SAAS0nJ,EAAM,GAAI,IAEnC,OA8IJ,SAA+BosW,EAAM41Q,GACnC,GAAIA,EAAY,EACd,OAAO,EAGT,IAAIugvB,EAAap9kB,EAAgB/4a,GACjC,QAAIm2/B,GAAcvgvB,EAAY,SAGzBugvB,GAAcvgvB,EAAY,IAKjC,CA5JSqjK,CAAsBj5a,EAAM41Q,IAIjChqvB,EAAK4ltB,eAAexxO,EAAM,EAAG41Q,GACtBhqvB,GAJE,IAAI7pB,KAAKowuB,IAKpB,CAIA,GADAv+kB,EAAQmkxB,EAAS09kB,KAAK9sgD,KAAKkv7B,GAChB,CACTjs5B,EAAO,IAAI7pB,KAAK,GAChBk+f,EAAQ/zf,SAAS0nJ,EAAM,GAAI,IAAM,EACjC,IAAIssW,EAAMh0f,SAAS0nJ,EAAM,GAAI,IAE7B,OAAKolxB,EAAah5a,EAAMC,EAAOC,IAI/Bt0e,EAAK4ltB,eAAexxO,EAAMC,EAAOC,GAC1Bt0e,GAJE,IAAI7pB,KAAKowuB,IAKpB,CAIA,GADAv+kB,EAAQmkxB,EAAS29kB,IAAI/sgD,KAAKkv7B,GAIxB,OAAKe,EAAiB54a,EAFtBw4Q,EAAOtswB,SAAS0nJ,EAAM,GAAI,IAAM,GAMzBilxB,EAAiB74a,EAAMw4Q,GAHrB,IAAIz2wB,KAAKowuB,KAQpB,GADAv+kB,EAAQmkxB,EAAS49kB,KAAKhtgD,KAAKkv7B,GAChB,CACTr/J,EAAOtswB,SAAS0nJ,EAAM,GAAI,IAAM,EAChC,IAAIu2wB,EAAYj+5B,SAAS0nJ,EAAM,GAAI,IAAM,EAEzC,OAAKglxB,EAAiB54a,EAAMw4Q,EAAM2xJ,GAI3B0O,EAAiB74a,EAAMw4Q,EAAM2xJ,GAH3B,IAAIpo6B,KAAKowuB,IAIpB,CAGA,OAAO,IACT,CA5La+mM,CAFUf,EAAgBE,eAEAr4a,GAErC,GAAIn9e,MAAM+I,GACR,OAAO,IAAI7pB,KAAKowuB,KAGlB,GAAIvmtB,EAAM,CACR,IAEI8M,EAFAwD,EAAYtQ,EAAK5N,UACjBoe,EAAO,EAGX,GAAIw74B,EAAYx74B,OACdA,EAkLN,SAAmB074B,GACjB,IAAIlkxB,EACAusW,EACAC,EAIJ,GADAxsW,EAAQmkxB,EAAS69kB,GAAGjtgD,KAAKmv7B,GAIvB,OAAKuB,EAFLl5a,EAAQv/W,WAAWgT,EAAM,GAAG5wK,QAAQ,IAAK,OAMjCm9gB,EAAQ,GAAMqta,EAHbr7L,IAQX,GADAv+kB,EAAQmkxB,EAAS89kB,KAAKltgD,KAAKmv7B,GAKzB,OAAKuB,EAHLl5a,EAAQj0f,SAAS0nJ,EAAM,GAAI,IAC3BwsW,EAAUx/W,WAAWgT,EAAM,GAAG5wK,QAAQ,IAAK,OAMnCm9gB,EAAQ,GAAMqta,EAAuBpta,EAAUsy/B,EAH9CvgxB,IAQX,GADAv+kB,EAAQmkxB,EAAS+9kB,OAAOntgD,KAAKmv7B,GAClB,CACT33a,EAAQj0f,SAAS0nJ,EAAM,GAAI,IAC3BwsW,EAAUl0f,SAAS0nJ,EAAM,GAAI,IAC7B,IAAIysW,EAAUz/W,WAAWgT,EAAM,GAAG5wK,QAAQ,IAAK,MAE/C,OAAKq27B,EAAal5a,EAAOC,EAASC,GAI1BF,EAAQ,GAAMqta,EAAuBpta,EAAUsy/B,EAAmC,IAAVry/B,EAHvE8xO,GAIX,CAGA,OAAO,IACT,CAhOamnM,CAAU1B,EAAYx74B,MAEzBvZ,MAAMuZ,IACR,OAAO,IAAIr6B,KAAKowuB,KAIpB,GAAIylM,EAAYu7kB,UAAYzz/C,EAAQyz/C,UAElC,GADAz69C,GAAS,OAAgBk/4B,EAAYu7kB,UAAYzz/C,EAAQyz/C,SAAU,IAAIpx/C,KAAKm6B,EAAYE,IACpFvZ,MAAM6V,GACR,OAAO,IAAI32B,KAAKowuB,UAIlBz5sB,EAAS,EAAgC,IAAI32B,KAAKm6B,EAAYE,IAC9D1D,EAAS,EAAgC,IAAI32B,KAAKm6B,EAAYE,EAAO1D,IAGvE,OAAO,IAAI32B,KAAKm6B,EAAYE,EAAO1D,EACrC,CACE,OAAO,IAAI32B,KAAKowuB,IAEpB,CA4MA,SAAS0mM,EAAiB7O,EAAaxxJ,EAAMt4Q,GAC3Cs4Q,EAAOA,GAAQ,EACft4Q,EAAMA,GAAO,EACb,IAAIt0e,EAAO,IAAI7pB,KAAK,GACpB6pB,EAAK4ltB,eAAew4L,EAAa,EAAG,GACpC,IACIlrZ,EAAc,EAAP05P,EAAWt4Q,EAAM,GADHt0e,EAAKw+4B,aAAe,GAG7C,OADAx+4B,EAAKsltB,WAAWtltB,EAAKxQ,aAAe0jgB,GAC7Blzf,CACT,CAIA,IAAIwq+C,EAAgB,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAC7DC,EAA0B,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAE3E,SAASt9kB,EAAgB/4a,GACvB,OAAOA,EAAO,KAAQ,GAAMA,EAAO,GAAM,GAAKA,EAAO,KAAQ,CAC/D,CAEA,SAASg5a,EAAah5a,EAAMC,EAAOr0e,GACjC,GAAIq0e,EAAQ,GAAKA,EAAQ,GACvB,OAAO,EAGT,GAAY,MAARr0e,EAAc,CAChB,GAAIA,EAAO,EACT,OAAO,EAGT,IAAIuq+C,EAAap9kB,EAAgB/4a,GACjC,GAAIm2/B,GAAcvq+C,EAAOyq+C,EAAwBp2/B,GAC/C,OAAO,EAET,IAAKk2/B,GAAcvq+C,EAAOwq+C,EAAcn2/B,GACtC,OAAO,CAEX,CAEA,OAAO,CACT,CAkBA,SAAS24a,EAAiB54a,EAAMw4Q,EAAMt4Q,GACpC,QAAIs4Q,EAAO,GAAKA,EAAO,IAIZ,MAAPt4Q,IAAgBA,EAAM,GAAKA,EAAM,GAKvC,CAEA,SAASm5a,EAAal5a,EAAOC,EAASC,GACpC,QAAa,MAATF,IAAkBA,EAAQ,GAAKA,GAAS,KAI7B,MAAXC,IAAoBA,EAAU,GAAKA,GAAW,KAInC,MAAXC,IAAoBA,EAAU,GAAKA,GAAW,IAKpD,2ECxae,SAASi2/B,EAAe9qlB,EAAW2nlB,EAAUzz/C,GAC1D,IAAIksB,GAAO,OAAO4/4B,EAAW9r6B,GAEzB62/C,GAAqB,OAAgBpD,EAAUvn+C,GAAM,GAErD1yC,EAAI,IAAI6oB,KAAK6pB,EAAK5N,UAAYu4+C,GAE9BC,EAAa,IAAIz0/C,KAAK,GAM1B,OAJAy0/C,EAAWhmxB,YAAYt3vB,EAAEgiC,iBAAkBhiC,EAAEiiC,cAAejiC,EAAEkiC,cAE9Do7+C,EAAWl2/B,SAASpnhB,EAAEupC,cAAevpC,EAAEwpC,gBAAiBxpC,EAAEypC,gBAAiBzpC,EAAE4x7B,sBAEtE0rlB,CACT,0GCXe,SAASC,EAAe7q+C,EAAMun+C,EAAUzz/C,GACrD,GAAoB,iBAATksB,IAAsBA,EAAK5uC,MAAM,KAAY,CACtD,IAAI05gD,EAAkB,EAAYh3/C,GAElC,OADAg3/C,EAAgBvD,SAAWA,GACpB,OAAOvn+C,EAAM8q+C,EACtB,CAEA,IAAIx9gD,GAAI,OAAO0yC,EAAMlsB,GAEjB+vuB,GAAM,OACRv2vB,EAAEslhB,cACFtlhB,EAAEulhB,WACFvlhB,EAAE6hC,UACF7hC,EAAEwlhB,WACFxlhB,EAAEylhB,aACFzlhB,EAAE0lhB,aACF1lhB,EAAEwzB,mBACFsR,UAEEu4+C,GAAqB,OAAgBpD,EAAU,IAAIpx/C,KAAK0tuB,IAE5D,OAAO,IAAI1tuB,KAAK0tuB,EAAM8mxB,EACxB,gCCpDA,SAAS3ghD,EAAEA,GAAG,IAAI,IAAIU,EAAEK,UAAUC,OAAOjB,EAAEK,MAAMM,EAAE,EAAEA,EAAE,EAAE,GAAGZ,EAAE,EAAEA,EAAEY,EAAEZ,IAAIC,EAAED,EAAE,GAAGiB,UAAUjB,GAAkJ,MAAMqoB,MAAM,8BAA8BnoB,GAAGD,EAAEiB,OAAO,IAAIjB,EAAEiwB,KAAI,SAAUhwB,GAAG,MAAM,IAAIA,EAAE,GAAI,IAAGwN,KAAK,KAAK,IAAI,mDAAmD,CAAC,SAAS9M,EAAEV,GAAG,QAAQA,KAAKA,EAAE2G,EAAE,CAAC,SAAS5G,EAAEC,GAAG,IAAIU,EAAE,QAAQV,IAAI,SAASA,GAAG,IAAIA,GAAG,iBAAiBA,EAAE,OAAM,EAAG,IAAIU,EAAET,OAAO2b,eAAe5b,GAAG,GAAG,OAAOU,EAAE,OAAM,EAAG,IAAIX,EAAEE,OAAOK,eAAeC,KAAKG,EAAE,gBAAgBA,EAAEE,YAAY,OAAOb,IAAIE,QAAQ,mBAAmBF,GAAG2D,SAASwB,SAAS3E,KAAKR,KAAKqF,CAAC,CAA1O,CAA4OpF,IAAII,MAAMkS,QAAQtS,MAAMA,EAAEgF,OAAO,QAAQtE,EAAEV,EAAEY,mBAAc,IAASF,OAAE,EAAOA,EAAEsE,KAAKvD,EAAEzB,IAAI4D,EAAE5D,GAAG,CAA2C,SAASuB,EAAEvB,EAAEU,EAAEX,QAAG,IAASA,IAAIA,GAAE,GAAI,IAAIkB,EAAEjB,IAAID,EAAEE,OAAOgU,KAAK5C,GAAIrR,GAAG6lB,SAAQ,SAAU/lB,GAAGC,GAAG,iBAAiBD,GAAGY,EAAEZ,EAAEE,EAAEF,GAAGE,EAAG,IAAGA,EAAE6lB,SAAQ,SAAU9lB,EAAED,GAAG,OAAOY,EAAEZ,EAAEC,EAAEC,EAAG,GAAE,CAAC,SAASiB,EAAEjB,GAAG,IAAIU,EAAEV,EAAE2G,GAAG,OAAOjG,EAAEA,EAAEa,EAAE,EAAEb,EAAEa,EAAE,EAAEb,EAAEa,EAAEnB,MAAMkS,QAAQtS,GAAG,EAAEyB,EAAEzB,GAAG,EAAE4D,EAAE5D,GAAG,EAAE,CAAC,CAAC,SAASgD,EAAEhD,EAAEU,GAAG,OAAO,IAAIO,EAAEjB,GAAGA,EAAE0M,IAAIhM,GAAGT,OAAOI,UAAUC,eAAeC,KAAKP,EAAEU,EAAE,CAA+C,SAAS2C,EAAErD,EAAEU,EAAEX,GAAG,IAAID,EAAEmB,EAAEjB,GAAG,IAAIF,EAAEE,EAAE4M,IAAIlM,EAAEX,GAAG,IAAID,EAAEE,EAAE8lB,IAAI/lB,GAAGC,EAAEU,GAAGX,CAAC,CAAC,SAASyB,EAAExB,EAAEU,GAAG,OAAOV,IAAIU,EAAE,IAAIV,GAAG,EAAEA,GAAG,EAAEU,EAAEV,GAAGA,GAAGU,GAAGA,CAAC,CAAC,SAASe,EAAEzB,GAAG,OAAO0F,GAAG1F,aAAasrB,GAAG,CAAC,SAAS1nB,EAAE5D,GAAG,OAAO6G,GAAG7G,aAAasmB,GAAG,CAAC,SAAS7iB,EAAEzD,GAAG,OAAOA,EAAEiB,GAAGjB,EAAED,CAAC,CAAC,SAASoD,EAAEnD,GAAG,GAAGI,MAAMkS,QAAQtS,GAAG,OAAOI,MAAMC,UAAUqC,MAAMnC,KAAKP,GAAG,IAAIU,EAAE4Q,EAAGtR,UAAUU,EAAEiG,GAAG,IAAI,IAAI5G,EAAEsR,EAAG3Q,GAAGZ,EAAE,EAAEA,EAAEC,EAAEiB,OAAOlB,IAAI,CAAC,IAAIyB,EAAExB,EAAED,GAAGmB,EAAEP,EAAEa,IAAG,IAAKN,EAAEyD,WAAWzD,EAAEyD,UAAS,EAAGzD,EAAEwD,cAAa,IAAKxD,EAAE6C,KAAK7C,EAAE2L,OAAOlM,EAAEa,GAAG,CAACkD,cAAa,EAAGC,UAAS,EAAGJ,WAAWrD,EAAEqD,WAAWxC,MAAM9B,EAAEuB,IAAI,CAAC,OAAOtB,OAAOY,OAAOZ,OAAO2b,eAAe5b,GAAGU,EAAE,CAAC,SAAS4C,EAAEtD,EAAEF,GAAG,YAAO,IAASA,IAAIA,GAAE,GAAI6D,EAAE3D,IAAIU,EAAEV,KAAKD,EAAEC,KAAKiB,EAAEjB,GAAG,IAAIA,EAAE4M,IAAI5M,EAAE8lB,IAAI9lB,EAAE2lB,MAAM3lB,EAAE4lB,OAAOriB,GAAGtD,OAAOgmC,OAAOjmC,GAAGF,GAAGyB,EAAEvB,GAAE,SAAUA,EAAEU,GAAG,OAAO4C,EAAE5C,GAAE,EAAI,IAAE,IAAKV,CAAC,CAAC,SAASuD,IAAIvD,EAAE,EAAE,CAAC,SAAS2D,EAAE3D,GAAG,OAAO,MAAMA,GAAG,iBAAiBA,GAAGC,OAAOis5C,SAASls5C,EAAE,CAAC,SAASiE,EAAEvD,GAAG,IAAIX,EAAEoR,EAAGzQ,GAAG,OAAOX,GAAGC,EAAE,GAAGU,GAAGX,CAAC,CAAkC,SAASwE,IAAI,OAAmDyB,CAAC,CAAC,SAASjB,EAAE/E,EAAEU,GAAGA,IAAIuD,EAAE,WAAWjE,EAAEgD,EAAE,GAAGhD,EAAEyB,EAAE,GAAGzB,EAAE4D,EAAElD,EAAE,CAAC,SAASiE,EAAE3E,GAAG8C,EAAE9C,GAAGA,EAAEyD,EAAEoiB,QAAQ1hB,GAAGnE,EAAEyD,EAAE,IAAI,CAAC,SAASX,EAAE9C,GAAGA,IAAIgG,IAAIA,EAAEhG,EAAEmD,EAAE,CAAC,SAASe,EAAElE,GAAG,OAAOgG,EAAE,CAACvC,EAAE,GAAGN,EAAE6C,EAAEzC,EAAEvD,EAAE+D,GAAE,EAAGQ,EAAE,EAAE,CAAC,SAASJ,EAAEnE,GAAG,IAAIU,EAAEV,EAAE2G,GAAG,IAAIjG,EAAEa,GAAG,IAAIb,EAAEa,EAAEb,EAAEqE,IAAIrE,EAAEiE,GAAE,CAAE,CAAC,SAASc,EAAE/E,EAAEZ,GAAGA,EAAEyE,EAAEzE,EAAE2D,EAAEzC,OAAO,IAAIO,EAAEzB,EAAE2D,EAAE,GAAGxC,OAAE,IAASP,GAAGA,IAAIa,EAAE,OAAOzB,EAAEyD,EAAET,GAAGmB,EAAE,OAAOE,EAAErE,EAAEY,EAAEO,GAAGA,GAAGM,EAAEoF,GAAGlB,IAAId,EAAE7E,GAAGE,EAAE,IAAID,EAAEW,KAAKA,EAAE8F,EAAE1G,EAAEY,GAAGZ,EAAEqD,GAAGyB,EAAE9E,EAAEY,IAAIZ,EAAEkD,GAAGiB,EAAE,WAAWuC,EAAEjF,EAAEoF,GAAG5G,EAAEW,EAAEZ,EAAEkD,EAAElD,EAAE2B,IAAIf,EAAE8F,EAAE1G,EAAEyB,EAAE,IAAIoD,EAAE7E,GAAGA,EAAEkD,GAAGlD,EAAE8D,EAAE9D,EAAEkD,EAAElD,EAAE2B,GAAGf,IAAIyF,EAAEzF,OAAE,CAAM,CAAC,SAAS8F,EAAExG,EAAEU,EAAEX,GAAG,GAAG4D,EAAEjD,GAAG,OAAOA,EAAE,IAAIZ,EAAEY,EAAEiG,GAAG,IAAI7G,EAAE,OAAOyB,EAAEb,GAAE,SAAUa,EAAEN,GAAG,OAAOuE,EAAExF,EAAEF,EAAEY,EAAEa,EAAEN,EAAElB,EAAG,IAAE,GAAIW,EAAE,GAAGZ,EAAE0F,IAAIxF,EAAE,OAAOU,EAAE,IAAIZ,EAAE2F,EAAE,OAAOb,EAAE5E,EAAEF,EAAEC,GAAE,GAAID,EAAEC,EAAE,IAAID,EAAE0E,EAAE,CAAC1E,EAAE0E,GAAE,EAAG1E,EAAE0F,EAAEjB,IAAI,IAAItD,EAAE,IAAInB,EAAEyB,GAAG,IAAIzB,EAAEyB,EAAEzB,EAAEmB,EAAEkC,EAAErD,EAAEuE,GAAGvE,EAAEmB,EAAE+B,EAAE/B,EAAEU,GAAE,EAAG,IAAI7B,EAAEyB,IAAIyB,EAAE,IAAIsjB,IAAIrlB,GAAGA,EAAE0kB,QAAQhkB,GAAE,GAAIJ,EAAEyB,GAAE,SAAUtC,EAAEa,GAAG,OAAOiE,EAAExF,EAAEF,EAAEmB,EAAEP,EAAEa,EAAExB,EAAE4B,EAAG,IAAGiD,EAAE5E,EAAEiB,GAAE,GAAIlB,GAAGC,EAAEgD,GAAGiB,EAAE,WAAW4B,EAAE/F,EAAEC,EAAEC,EAAEgD,EAAEhD,EAAEyB,EAAE,CAAC,OAAO3B,EAAEmB,CAAC,CAAC,SAASuE,EAAE1F,EAAEyB,EAAEN,EAAEU,EAAEH,EAAEC,EAAEmC,GAAG,GAAoDlD,EAAEc,GAAG,CAAC,IAAIiC,EAAE+C,EAAE1G,EAAE0B,EAAEC,GAAGF,GAAG,IAAIA,EAAEA,IAAIyB,EAAEzB,EAAE0D,EAAEtD,GAAGF,EAAEkB,OAAOhB,QAAG,GAAQ,GAAG0B,EAAEpC,EAAEU,EAAE8B,IAAI/C,EAAE+C,GAAG,OAAO3D,EAAEiE,GAAE,CAAE,MAAMH,GAAG3C,EAAE6kB,IAAItkB,GAAG,GAAGzB,EAAEyB,KAAKmC,EAAEnC,GAAG,CAAC,IAAI1B,EAAEyD,EAAE2C,GAAGpG,EAAEyE,EAAE,EAAE,OAAOiC,EAAE1G,EAAE0B,GAAGD,GAAGA,EAAEiE,EAAErC,GAAGyB,EAAE9E,EAAE0B,EAAE,CAAC,CAAC,SAASoD,EAAE5E,EAAEU,EAAEX,QAAG,IAASA,IAAIA,GAAE,IAAKC,EAAEmD,GAAGnD,EAAEuD,EAAE2C,GAAGlG,EAAE+D,GAAGT,EAAE5C,EAAEX,EAAE,CAAC,SAASuG,EAAEtG,EAAEU,GAAG,IAAIX,EAAEC,EAAE2G,GAAG,OAAO5G,EAAE0D,EAAE1D,GAAGC,GAAGU,EAAE,CAAC,SAAS8D,EAAExE,EAAEU,GAAG,GAAGA,KAAKV,EAAE,IAAI,IAAID,EAAEE,OAAO2b,eAAe5b,GAAGD,GAAG,CAAC,IAAID,EAAEG,OAAOmE,yBAAyBrE,EAAEW,GAAG,GAAGZ,EAAE,OAAOA,EAAEC,EAAEE,OAAO2b,eAAe7b,EAAE,CAAC,CAAC,SAASsE,EAAErE,GAAGA,EAAEyF,IAAIzF,EAAEyF,GAAE,EAAGzF,EAAEmD,GAAGkB,EAAErE,EAAEmD,GAAG,CAAC,SAASkC,EAAErF,GAAGA,EAAEiB,IAAIjB,EAAEiB,EAAEkC,EAAEnD,EAAED,GAAG,CAAC,SAAS8F,EAAE7F,EAAEU,EAAEX,GAAG,IAAID,EAAE2B,EAAEf,GAAGuD,EAAE,UAAU0B,EAAEjF,EAAEX,GAAG6D,EAAElD,GAAGuD,EAAE,UAAUY,EAAEnE,EAAEX,GAAGC,EAAE8C,EAAE,SAAS9C,EAAEU,GAAG,IAAIX,EAAEK,MAAMkS,QAAQtS,GAAGF,EAAE,CAACyB,EAAExB,EAAE,EAAE,EAAEyF,EAAE9E,EAAEA,EAAE8E,EAAEjB,IAAIkB,GAAE,EAAGjB,GAAE,EAAGS,EAAE,CAAC,EAAE9B,EAAEzC,EAAEX,EAAEC,EAAEqE,EAAE,KAAKpD,EAAE,KAAK8D,EAAE,KAAKD,GAAE,GAAIvD,EAAEzB,EAAEmB,EAAEiQ,EAAGnR,IAAIwB,EAAE,CAACzB,GAAGmB,EAAEsQ,GAAI,IAAIvO,EAAEmnB,MAAM42/C,UAAUx/gD,EAAEN,GAAGU,EAAEqB,EAAEg+gD,OAAO39gD,EAAEL,EAAEs3D,MAAM,OAAOx6D,EAAEuE,EAAEhB,EAAEvD,EAAEiF,EAAEpD,EAAE0B,CAAC,CAA3M,CAA6M3C,EAAEX,GAAGkE,EAAE,OAAOoC,EAAE3F,EAAEX,GAAG,OAAOA,EAAEA,EAAEyF,EAAEjB,KAAKd,EAAEjB,KAAK1C,GAAGA,CAAC,CAAC,SAASmF,EAAEnF,GAAG,OAAOY,EAAEZ,IAAIE,EAAE,GAAGF,GAAG,SAASE,EAAEU,GAAG,IAAIX,EAAEW,GAAG,OAAOA,EAAE,IAAIZ,EAAEkD,EAAEtC,EAAEiG,GAAGnF,EAAEP,EAAEP,GAAG,GAAGsC,EAAE,CAAC,IAAIA,EAAEyC,IAAIzC,EAAEzB,EAAE,IAAI0C,EAAE,OAAO2B,EAAE5C,IAAI,OAAOA,EAAEjD,EAAEiD,EAAEwB,GAAE,EAAG1E,EAAEoG,EAAExF,EAAEc,GAAGwB,EAAEwB,GAAE,CAAE,MAAM1E,EAAEoG,EAAExF,EAAEc,GAAG,OAAOD,EAAEzB,GAAE,SAAUY,EAAEX,GAAGiD,GAA55F,SAAWhD,EAAEU,GAAG,OAAO,IAAIO,EAAEjB,GAAGA,EAAE8D,IAAIpD,GAAGV,EAAEU,EAAE,CAAk3FiB,CAAEqB,EAAEjD,EAAEW,KAAKX,GAAGsD,EAAEvD,EAAEY,EAAEV,EAAED,GAAI,IAAG,IAAIyB,EAAE,IAAI8kB,IAAIxmB,GAAGA,CAAC,CAAvN,CAAyNA,EAAE,CAAC,SAASoG,EAAElG,EAAEU,GAAG,OAAOA,GAAG,KAAK,EAAE,OAAO,IAAI4qB,IAAItrB,GAAG,KAAK,EAAE,OAAOI,MAAMse,KAAK1e,GAAG,OAAOmD,EAAEnD,EAAE,CAAC,SAAS2F,IAAI,SAAS5F,EAAEC,EAAEU,GAAG,IAAIX,EAAE0B,EAAEzB,GAAG,OAAOD,EAAEA,EAAEuE,WAAW5D,EAAEe,EAAEzB,GAAGD,EAAE,CAAC0E,cAAa,EAAGH,WAAW5D,EAAEoD,IAAI,WAAW,IAAIpD,EAAEC,KAAKgG,GAAG,OAAgDuK,EAAGpN,IAAIpD,EAAEV,EAAE,EAAE4M,IAAI,SAASlM,GAAG,IAAIX,EAAEY,KAAKgG,GAA6CuK,EAAGtE,IAAI7M,EAAEC,EAAEU,EAAE,GAAGX,CAAC,CAAC,SAASD,EAAEE,GAAG,IAAI,IAAIU,EAAEV,EAAEgB,OAAO,EAAEN,GAAG,EAAEA,IAAI,CAAC,IAAIX,EAAEC,EAAEU,GAAGiG,GAAG,IAAI5G,EAAE0F,EAAE,OAAO1F,EAAEwB,GAAG,KAAK,EAAEI,EAAE5B,IAAIsE,EAAEtE,GAAG,MAAM,KAAK,EAAEkB,EAAElB,IAAIsE,EAAEtE,GAAG,CAAC,CAAC,SAASkB,EAAEjB,GAAG,IAAI,IAAIU,EAAEV,EAAED,EAAEA,EAAEC,EAAEqE,EAAEvE,EAAEuR,EAAGtR,GAAGwB,EAAEzB,EAAEkB,OAAO,EAAEO,GAAG,EAAEA,IAAI,CAAC,IAAIN,EAAEnB,EAAEyB,GAAG,GAAGN,IAAI0F,EAAE,CAAC,IAAIhF,EAAEjB,EAAEO,GAAG,QAAG,IAASU,IAAIqB,EAAEtC,EAAEO,GAAG,OAAM,EAAG,IAAIoC,EAAEtD,EAAEkB,GAAGQ,EAAE4B,GAAGA,EAAEsD,GAAG,GAAGlF,EAAEA,EAAE1B,IAAI4B,GAAGH,EAAE6B,EAAE1B,GAAG,OAAM,CAAE,CAAC,CAAC,IAAIiC,IAAIlD,EAAEiG,GAAG,OAAO7G,EAAEkB,SAASqQ,EAAG3Q,GAAGM,QAAQ4C,EAAE,EAAE,EAAE,CAAC,SAASjC,EAAE3B,GAAG,IAAIU,EAAEV,EAAEqE,EAAE,GAAG3D,EAAEM,SAAShB,EAAED,EAAEiB,OAAO,OAAM,EAAG,IAAIjB,EAAEE,OAAOmE,yBAAyB1D,EAAEA,EAAEM,OAAO,GAAG,GAAGjB,IAAIA,EAAE+D,IAAI,OAAM,EAAG,IAAI,IAAIhE,EAAE,EAAEA,EAAEY,EAAEM,OAAOlB,IAAI,IAAIY,EAAEJ,eAAeR,GAAG,OAAM,EAAG,OAAM,CAAE,CAA8C,IAAI2B,EAAE,CAAC,GAAlhG,SAAWzB,EAAEU,GAAGyQ,EAAGnR,KAAKmR,EAAGnR,GAAGU,EAAE,CAAo/FqD,CAAE,MAAM,CAACsC,EAAE,SAASrG,EAAEU,GAAG,IAAIZ,EAAEM,MAAMkS,QAAQtS,GAAGuB,EAAE,SAASvB,EAAEU,GAAG,GAAGV,EAAE,CAAC,IAAI,IAAIF,EAAEM,MAAMM,EAAEM,QAAQO,EAAE,EAAEA,EAAEb,EAAEM,OAAOO,IAAItB,OAAO4D,eAAe/D,EAAE,GAAGyB,EAAExB,EAAEwB,GAAE,IAAK,OAAOzB,CAAC,CAAC,IAAImB,EAAEqQ,EAAG5Q,UAAUO,EAAE0F,GAAG,IAAI,IAAI3D,EAAEqO,EAAGpQ,GAAGU,EAAE,EAAEA,EAAEqB,EAAEhC,OAAOW,IAAI,CAAC,IAAI0B,EAAEL,EAAErB,GAAGV,EAAEoC,GAAGtD,EAAEsD,EAAErD,KAAKiB,EAAEoC,GAAGiB,WAAW,CAAC,OAAOrE,OAAOY,OAAOZ,OAAO2b,eAAelb,GAAGO,EAAE,CAAtQ,CAAwQnB,EAAEE,GAAGiB,EAAE,CAACM,EAAEzB,EAAE,EAAE,EAAE0F,EAAE9E,EAAEA,EAAE8E,EAAEjB,IAAIkB,GAAE,EAAGjB,GAAE,EAAGS,EAAE,CAAC,EAAE9B,EAAEzC,EAAEX,EAAIsE,EAAE9C,EAAEN,EAAE,KAAK0D,GAAE,EAAGG,GAAE,GAAI,OAAO7E,OAAO4D,eAAetC,EAAEoF,EAAE,CAAC7E,MAAMb,EAAEyD,UAAS,IAAKnD,CAAC,EAAE4C,EAAE,SAASnE,EAAED,EAAEkB,GAAGA,EAAEP,EAAEX,IAAIA,EAAE4G,GAAGnB,IAAIxF,GAAGF,EAAEE,EAAEyD,IAAIzD,EAAEgD,GAAG,SAAShD,EAAEU,GAAG,GAAGA,GAAG,iBAAiBA,EAAE,CAAC,IAAIX,EAAEW,EAAEiG,GAAG,GAAG5G,EAAE,CAAC,IAAID,EAAEC,EAAEA,EAAEkB,EAAElB,EAAEsE,EAAEhB,EAAEtD,EAAEkF,EAAEzD,EAAEzB,EAAEwB,EAAE,GAAG,IAAIC,EAAED,EAAEN,GAAE,SAAUP,GAAGA,IAAIiG,SAAI,IAAS7G,EAAEY,IAAIsC,EAAElD,EAAEY,GAAG2C,EAAE3C,IAAIV,EAAEiB,EAAEP,KAAK2C,EAAE3C,IAAG,EAAG2D,EAAEtE,IAAK,IAAGwB,EAAEzB,GAAE,SAAUE,QAAG,IAASiB,EAAEjB,IAAIgD,EAAE/B,EAAEjB,KAAKqD,EAAErD,IAAG,EAAGqE,EAAEtE,GAAI,SAAQ,GAAG,IAAIyB,EAAE,CAAC,GAAGG,EAAE5B,KAAKsE,EAAEtE,GAAGsD,EAAErC,QAAO,GAAIC,EAAED,OAAOlB,EAAEkB,OAAO,IAAI,IAAIS,EAAER,EAAED,OAAOS,EAAE3B,EAAEkB,OAAOS,IAAI4B,EAAE5B,IAAG,OAAQ,IAAI,IAAImC,EAAE9D,EAAEkB,OAAO4C,EAAE3C,EAAED,OAAO4C,IAAIP,EAAEO,IAAG,EAAG,IAAI,IAAIH,EAAED,KAAKgL,IAAIvN,EAAED,OAAOlB,EAAEkB,QAAQmC,EAAE,EAAEA,EAAEM,EAAEN,IAAIlC,EAAEX,eAAe6C,KAAKE,EAAEF,IAAG,QAAI,IAASE,EAAEF,IAAInD,EAAEiB,EAAEkC,GAAG,CAAC,CAAC,CAAC,CAAxe,CAA0enD,EAAEyD,EAAE,IAAI3D,EAAEE,EAAEyD,GAAG,EAAEmC,EAAE,SAAS5F,GAAG,OAAO,IAAIA,EAAEuB,EAAEN,EAAEjB,GAAG2B,EAAE3B,EAAE,GAAG,wDAA4xK,IAAIsF,EAAEU,EAAEb,EAAE,oBAAoB9C,QAAQ,iBAAiBA,OAAO,KAAKqD,EAAE,oBAAoB4lB,IAAIzkB,EAAE,oBAAoByf,IAAI5f,EAAE,oBAAoByjB,YAAO,IAASA,MAAM42/C,WAAW,oBAAoB5ngD,QAAQhT,EAAEhB,EAAE9C,OAAOiH,IAAI,mBAAmBhE,EAAE,CAAC,GAAG,kBAAiB,EAAGA,GAAGN,EAAEG,EAAE9C,OAAOiH,IAAI,mBAAmB,qBAAqB3C,EAAExB,EAAE9C,OAAOiH,IAAI,eAAe,iBAAy2DlE,GAAt1D,oBAAoB/C,QAAQA,OAAOC,SAAqzD,GAAGrC,OAAOI,UAAUO,aAAYyQ,EAAG,oBAAoB8H,SAASA,QAAQ68W,QAAQ78W,QAAQ68W,aAAQ,IAAS/1X,OAAOmB,sBAAsB,SAASpB,GAAG,OAAOC,OAAOqP,oBAAoBtP,GAAG2C,OAAO1C,OAAOmB,sBAAsBpB,GAAG,EAAEC,OAAOqP,oBAAoBgC,EAAGrR,OAAOq+B,2BAA2B,SAASt+B,GAAG,IAAIU,EAAE,CAAC,EAAE,OAAO2Q,EAAGrR,GAAG6lB,SAAQ,SAAU9lB,GAAGW,EAAEX,GAAGE,OAAOmE,yBAAyBpE,EAAED,EAAG,IAAGW,CAAC,EAAEyQ,EAAG,CAAC,EAAED,EAAG,CAACpN,IAAI,SAAS9D,EAAEU,GAAG,GAAGA,IAAIiG,EAAE,OAAO3G,EAAE,IAAIF,EAAE2D,EAAEzD,GAAG,IAAIgD,EAAElD,EAAEY,GAAG,OAAO,SAASV,EAAEU,EAAEX,GAAG,IAAID,EAAEyB,EAAEiD,EAAE9D,EAAEX,GAAG,OAAOwB,EAAE,UAAUA,EAAEA,EAAEO,MAAM,QAAQhC,EAAEyB,EAAEuC,WAAM,IAAShE,OAAE,EAAOA,EAAES,KAAKP,EAAEqE,QAAG,CAAM,CAAlH,CAAoHrE,EAAEF,EAAEY,GAAG,IAAIa,EAAEzB,EAAEY,GAAG,OAAOV,EAAEwE,IAAIzE,EAAEwB,GAAGA,EAAEA,IAAI+E,EAAEtG,EAAED,EAAEW,IAAI2E,EAAErF,GAAGA,EAAEiB,EAAEP,GAAGmF,EAAE7F,EAAEwF,EAAEjC,EAAEhC,EAAEvB,IAAIuB,CAAC,EAAEmL,IAAI,SAAS1M,EAAEU,GAAG,OAAOA,KAAK+C,EAAEzD,EAAE,EAAEg2X,QAAQ,SAASh2X,GAAG,OAAOmZ,QAAQ68W,QAAQvyX,EAAEzD,GAAG,EAAE4M,IAAI,SAAS5M,EAAEU,EAAEX,GAAG,IAAID,EAAE0E,EAAEf,EAAEzD,GAAGU,GAAG,GAAG,MAAMZ,OAAE,EAAOA,EAAE8M,IAAI,OAAO9M,EAAE8M,IAAIrM,KAAKP,EAAEqE,EAAEtE,IAAG,EAAG,IAAIC,EAAEyF,EAAE,CAAC,IAAIlE,EAAE+E,EAAE7C,EAAEzD,GAAGU,GAAGO,EAAE,MAAMM,OAAE,EAAOA,EAAEoF,GAAG,GAAG1F,GAAGA,EAAElB,IAAIA,EAAE,OAAOC,EAAEiB,EAAEP,GAAGX,EAAEC,EAAEiF,EAAEvE,IAAG,GAAG,EAAG,GAAGc,EAAEzB,EAAEwB,UAAK,IAASxB,GAAGiD,EAAEhD,EAAED,EAAEW,IAAI,OAAM,EAAG2E,EAAErF,GAAGqE,EAAErE,EAAE,CAAC,OAAOA,EAAEiB,EAAEP,KAAKX,SAAI,IAASA,GAAGW,KAAKV,EAAEiB,IAAI6kC,OAAOmH,MAAMltC,IAAI+lC,OAAOmH,MAAMjtC,EAAEiB,EAAEP,MAAMV,EAAEiB,EAAEP,GAAGX,EAAEC,EAAEiF,EAAEvE,IAAG,IAAI,CAAE,EAAEughD,eAAe,SAASjhhD,EAAEU,GAAG,YAAO,IAAS4F,EAAEtG,EAAED,EAAEW,IAAIA,KAAKV,EAAED,GAAGC,EAAEiF,EAAEvE,IAAG,EAAG2E,EAAErF,GAAGqE,EAAErE,WAAWA,EAAEiF,EAAEvE,GAAGV,EAAEiB,UAAUjB,EAAEiB,EAAEP,IAAG,CAAE,EAAE0D,yBAAyB,SAASpE,EAAEU,GAAG,IAAIX,EAAE0D,EAAEzD,GAAGF,EAAEqZ,QAAQ/U,yBAAyBrE,EAAEW,GAAG,OAAOZ,EAAE,CAAC4E,UAAS,EAAGD,aAAa,IAAIzE,EAAEuB,GAAG,WAAWb,EAAE4D,WAAWxE,EAAEwE,WAAWxC,MAAM/B,EAAEW,IAAIZ,CAAC,EAAE+D,eAAe,WAAW7D,EAAE,GAAG,EAAE4b,eAAe,SAAS5b,GAAG,OAAOC,OAAO2b,eAAe5b,EAAED,EAAE,EAAEG,eAAe,WAAWF,EAAE,GAAG,GAAGuR,EAAG,CAAC,EAAEhQ,EAAE2P,GAAG,SAAUlR,EAAEU,GAAG6Q,EAAGvR,GAAG,WAAW,OAAOe,UAAU,GAAGA,UAAU,GAAG,GAAGL,EAAEQ,MAAMP,KAAKI,UAAU,CAAE,IAAGwQ,EAAG0vgD,eAAe,SAASvghD,EAAEX,GAAG,OAAqEwR,EAAG3E,IAAIrM,KAAKI,KAAKD,EAAEX,OAAE,EAAO,EAAEwR,EAAG3E,IAAI,SAASlM,EAAEX,EAAED,GAAG,OAAmFoR,EAAGtE,IAAIrM,KAAKI,KAAKD,EAAE,GAAGX,EAAED,EAAEY,EAAE,GAAG,EAAE,IAAIiR,EAAG,WAAW,SAAS7R,EAAEY,GAAG,IAAIZ,EAAEa,KAAKA,KAAKmC,EAAE4D,EAAE/F,KAAKuF,GAAE,EAAGvF,KAAKughD,QAAQ,SAASxghD,EAAEa,EAAEN,GAAG,GAAG,mBAAmBP,GAAG,mBAAmBa,EAAE,CAAC,IAAIyB,EAAEzB,EAAEA,EAAEb,EAAE,IAAIiB,EAAE7B,EAAE,OAAO,SAASE,GAAG,IAAIU,EAAEC,UAAK,IAASX,IAAIA,EAAEgD,GAAG,IAAI,IAAIjD,EAAEgB,UAAUC,OAAOlB,EAAEM,MAAML,EAAE,EAAEA,EAAE,EAAE,GAAGkB,EAAE,EAAEA,EAAElB,EAAEkB,IAAInB,EAAEmB,EAAE,GAAGF,UAAUE,GAAG,OAAOU,EAAEu/gD,QAAQlhhD,GAAE,SAAUA,GAAG,IAAID,EAAE,OAAOA,EAAEwB,GAAGhB,KAAKW,MAAMnB,EAAE,CAACW,EAAEV,GAAG2C,OAAO7C,GAAI,GAAE,CAAC,CAAC,IAAIuD,EAAE,GAAG,mBAAmB9B,GAAGvB,EAAE,QAAG,IAASiB,GAAG,mBAAmBA,GAAGjB,EAAE,GAAGD,EAAEW,GAAG,CAAC,IAAIc,EAAE0C,EAAEpE,GAAG2B,EAAEoE,EAAE/F,EAAEY,OAAE,GAAQkD,GAAE,EAAG,IAAIP,EAAE9B,EAAEE,GAAGmC,GAAE,CAAE,CAAC,QAAQA,EAAEe,EAAEnD,GAAGsB,EAAEtB,EAAE,CAAC,MAAM,oBAAoBF,SAAS+B,aAAa/B,QAAQ+B,EAAEtB,MAAK,SAAU/B,GAAG,OAAO+E,EAAEvD,EAAEP,GAAGwE,EAAEzF,EAAEwB,EAAG,IAAE,SAAUxB,GAAG,MAAM2E,EAAEnD,GAAGxB,CAAE,KAAI+E,EAAEvD,EAAEP,GAAGwE,EAAEpC,EAAE7B,GAAG,CAAC,IAAId,GAAG,iBAAiBA,EAAE,CAAC,QAAG,KAAU2C,EAAE9B,EAAEb,MAAM2C,EAAE3C,GAAG2C,IAAI8C,IAAI9C,OAAE,GAAQvD,EAAEoG,GAAG5C,EAAED,GAAE,GAAIpC,EAAE,CAAC,IAAIwC,EAAE,GAAGN,EAAE,GAAGc,EAAE,WAAWuC,EAAE9F,EAAE2C,EAAEI,EAAEN,GAAGlC,EAAEwC,EAAEN,EAAE,CAAC,OAAOE,CAAC,CAACrD,EAAE,GAAGU,EAAE,EAAEC,KAAKwghD,mBAAmB,SAASnhhD,EAAEU,GAAG,GAAG,mBAAmBV,EAAE,OAAO,SAASU,GAAG,IAAI,IAAIX,EAAEgB,UAAUC,OAAOO,EAAEnB,MAAML,EAAE,EAAEA,EAAE,EAAE,GAAGkB,EAAE,EAAEA,EAAElB,EAAEkB,IAAIM,EAAEN,EAAE,GAAGF,UAAUE,GAAG,OAAOnB,EAAEqhhD,mBAAmBzghD,GAAE,SAAUA,GAAG,OAAOV,EAAEkB,WAAM,EAAO,CAACR,GAAGiC,OAAOpB,GAAI,GAAE,EAAE,IAAIxB,EAAEwB,EAAEN,EAAEnB,EAAEohhD,QAAQlhhD,EAAEU,GAAE,SAAUV,EAAEU,GAAGX,EAAEC,EAAEuB,EAAEb,CAAE,IAAG,MAAM,oBAAoBY,SAASL,aAAaK,QAAQL,EAAEc,MAAK,SAAU/B,GAAG,MAAM,CAACA,EAAED,EAAEwB,EAAG,IAAG,CAACN,EAAElB,EAAEwB,EAAE,EAAE,kBAAkB,MAAMb,OAAE,EAAOA,EAAE0ghD,aAAazghD,KAAK0ghD,cAAc3ghD,EAAE0ghD,YAAY,kBAAkB,MAAM1ghD,OAAE,EAAOA,EAAE4ghD,aAAa3ghD,KAAK4ghD,cAAc7ghD,EAAE4ghD,WAAW,CAAC,IAAI//gD,EAAEzB,EAAEO,UAAU,OAAOkB,EAAEighD,YAAY,SAAS1hhD,GAAGC,EAAED,IAAIE,EAAE,GAAGU,EAAEZ,KAAKA,EAAEmF,EAAEnF,IAAI,IAAIyB,EAAE2C,EAAEvD,MAAMM,EAAE4E,EAAElF,KAAKb,OAAE,GAAQ,OAAOmB,EAAE0F,GAAG7B,GAAE,EAAGhC,EAAEvB,GAAGN,CAAC,EAAEM,EAAEkghD,YAAY,SAAS/ghD,EAAEX,GAAG,IAAiFwB,GAA3Eb,GAAGA,EAAEiG,IAA0EnB,EAAE,OAAOT,EAAExD,EAAExB,GAAG0F,OAAE,EAAOlE,EAAE,EAAEA,EAAEgghD,cAAc,SAASvhhD,GAAGW,KAAKuF,EAAElG,CAAC,EAAEuB,EAAE8/gD,cAAc,SAAS3ghD,GAAGA,IAAIgG,GAAG1G,EAAE,IAAIW,KAAKmC,EAAEpC,CAAC,EAAEa,EAAEmghD,aAAa,SAAS1hhD,EAAED,GAAG,IAAID,EAAE,IAAIA,EAAEC,EAAEiB,OAAO,EAAElB,GAAG,EAAEA,IAAI,CAAC,IAAIyB,EAAExB,EAAED,GAAG,GAAG,IAAIyB,EAAEy1B,KAAKh2B,QAAQ,YAAYO,EAAEyya,GAAG,CAACh0a,EAAEuB,EAAEO,MAAM,KAAK,CAAC,CAAChC,GAAG,IAAIC,EAAEA,EAAE2C,MAAM5C,EAAE,IAAI,IAAImB,EAAEgD,EAAE,WAAW8C,EAAE,OAAOrG,EAAEV,GAAGiB,EAAEjB,EAAED,GAAGY,KAAKughD,QAAQlhhD,GAAE,SAAUA,GAAG,OAAOiB,EAAEjB,EAAED,EAAG,GAAE,EAAED,CAAC,CAAj7D,GAAq7D2R,EAAG,IAAIE,EAAGE,GAAGJ,EAAGyvgD,QAAWzvgD,EAAG0vgD,mBAAmBn9gD,KAAKyN,GAAOA,EAAG8vgD,cAAcv9gD,KAAKyN,GAAOA,EAAG4vgD,cAAcr9gD,KAAKyN,GAAOA,EAAGiwgD,aAAa19gD,KAAKyN,GAAOA,EAAG+vgD,YAAYx9gD,KAAKyN,GAAOA,EAAGgwgD,YAAYz9gD,KAAKyN,GAAI,2DCC1ijB,MAAMknZ,EAAc,CAChBp5Y,UAAWe,WAAYZ,kBAAmBa,WAAYC,YACtDC,WAAYC,YAAaC,aAAcC,cAQ5B,MAAMg4Y,EAMjB,WAAOl6Y,CAAKvO,GACR,KAAMA,aAAgB8O,aAClB,MAAM,IAAIkJ,MAAM,4CAEpB,MAAOi7L,EAAOy1M,GAAkB,IAAIv4Y,WAAWnQ,EAAM,EAAG,GACxD,GAAc,MAAVizM,EACA,MAAM,IAAIj7L,MAAM,kDAEpB,MAAMlhB,EAAU4xZ,GAAkB,EAClC,GAlBQ,IAkBJ5xZ,EACA,MAAM,IAAIkhB,MAAM,QAAQlhB,4BAE5B,MAAM05H,EAAYg4R,EAA6B,GAAjBE,GAC9B,IAAKl4R,EACD,MAAM,IAAIx4G,MAAM,4BAEpB,MAAO2wY,GAAY,IAAIt4Y,YAAYrQ,EAAM,EAAG,IACrC4oZ,GAAY,IAAIr4Y,YAAYvQ,EAAM,EAAG,GAE5C,OAAO,IAAIyoZ,EAAOG,EAAUD,EAAUn4R,EAAWxwH,EACrD,CASA,WAAAvP,CAAYm4Z,EAAUD,EAAW,GAAIn4R,EAAY//G,aAAczQ,GAC3D,GAAI88B,MAAM8rX,IAAaA,EAAW,EAAG,MAAM,IAAI5wY,MAAM,+BAA+B4wY,MAEpFp4Z,KAAKo4Z,UAAYA,EACjBp4Z,KAAKm4Z,SAAWt1Z,KAAKgL,IAAIhL,KAAK8K,KAAKwqZ,EAAU,GAAI,OACjDn4Z,KAAKggI,UAAYA,EACjBhgI,KAAKq4Z,eAAiBD,EAAW,MAAQv4Y,YAAcE,YAEvD,MAAMu4Y,EAAiBN,EAAYx3Z,QAAQR,KAAKggI,WAC1Cu4R,EAA4B,EAAXH,EAAep4Z,KAAKggI,UAAUrC,kBAC/C66R,EAAcJ,EAAWp4Z,KAAKq4Z,eAAe16R,kBAC7C86R,GAAa,EAAID,EAAc,GAAK,EAE1C,GAAIF,EAAiB,EACjB,MAAM,IAAI9wY,MAAM,iCAAiCw4G,MAGjDxwH,GAASA,aAAgB8O,aACzBte,KAAKwP,KAAOA,EACZxP,KAAK04Z,IAAM,IAAI14Z,KAAKq4Z,eAAer4Z,KAAKwP,KAxDhC,EAwDmD4oZ,GAC3Dp4Z,KAAK23H,OAAS,IAAI33H,KAAKggI,UAAUhgI,KAAKwP,KAzD9B,EAyDkDgpZ,EAAcC,EAAsB,EAAXL,GACnFp4Z,KAAK24Z,KAAkB,EAAXP,EACZp4Z,KAAK44Z,WAAY,IAEjB54Z,KAAKwP,KAAO,IAAI8O,YA7DR,EA6DkCi6Y,EAAiBC,EAAcC,GACzEz4Z,KAAK04Z,IAAM,IAAI14Z,KAAKq4Z,eAAer4Z,KAAKwP,KA9DhC,EA8DmD4oZ,GAC3Dp4Z,KAAK23H,OAAS,IAAI33H,KAAKggI,UAAUhgI,KAAKwP,KA/D9B,EA+DkDgpZ,EAAcC,EAAsB,EAAXL,GACnFp4Z,KAAK24Z,KAAO,EACZ34Z,KAAK44Z,WAAY,EAGjB,IAAIj5Y,WAAW3f,KAAKwP,KAAM,EAAG,GAAGvD,IAAI,CAAC,IAAM,GAAiBqsZ,IAC5D,IAAIz4Y,YAAY7f,KAAKwP,KAAM,EAAG,GAAG,GAAK2oZ,EACtC,IAAIp4Y,YAAY/f,KAAKwP,KAAM,EAAG,GAAG,GAAK4oZ,EAE9C,CAQA,GAAAjzY,CAAIlhB,EAAGjB,GACH,MAAMga,EAAQhd,KAAK24Z,MAAQ,EAI3B,OAHA34Z,KAAK04Z,IAAI17Y,GAASA,EAClBhd,KAAK23H,OAAO33H,KAAK24Z,QAAU10Z,EAC3BjE,KAAK23H,OAAO33H,KAAK24Z,QAAU31Z,EACpBga,CACX,CAKA,MAAAsrD,GACI,MAAMuwV,EAAW74Z,KAAK24Z,MAAQ,EAC9B,GAAIE,IAAa74Z,KAAKo4Z,SAClB,MAAM,IAAI5wY,MAAM,SAASqxY,yBAAgC74Z,KAAKo4Z,aAMlE,OAHA7rX,EAAKvsC,KAAK04Z,IAAK14Z,KAAK23H,OAAQ33H,KAAKm4Z,SAAU,EAAGn4Z,KAAKo4Z,SAAW,EAAG,GAEjEp4Z,KAAK44Z,WAAY,EACV54Z,IACX,CAUA,KAAA+hI,CAAMw4C,EAAMC,EAAMC,EAAMC,GACpB,IAAK16K,KAAK44Z,UAAW,MAAM,IAAIpxY,MAAM,+CAErC,MAAM,IAACkxY,EAAG,OAAE/gS,EAAM,SAAEwgS,GAAYn4Z,KAC1B2yC,EAAQ,CAAC,EAAG+lX,EAAIr4Z,OAAS,EAAG,GAC5BmjB,EAAS,GAGf,KAAOmvB,EAAMtyC,QAAQ,CACjB,MAAMoqM,EAAO93J,EAAM/wC,OAAS,EACtBi+F,EAAQltD,EAAM/wC,OAAS,EACvBi9B,EAAO8T,EAAM/wC,OAAS,EAG5B,GAAIi+F,EAAQhhE,GAAQs5X,EAAU,CAC1B,IAAK,IAAIv3Z,EAAIi+B,EAAMj+B,GAAKi/F,EAAOj/F,IAAK,CAChC,MAAMqD,EAAI0zH,EAAO,EAAI/2H,GACfoC,EAAI20H,EAAO,EAAI/2H,EAAI,GACrBqD,GAAKs2K,GAAQt2K,GAAKw2K,GAAQz3K,GAAKw3K,GAAQx3K,GAAK03K,GAAMl3J,EAAO3hB,KAAK62Z,EAAI93Z,GAC1E,CACA,QACJ,CAGA,MAAMwC,EAAKy7B,EAAOghE,GAAU,EAGtB57F,EAAI0zH,EAAO,EAAIv0H,GACfJ,EAAI20H,EAAO,EAAIv0H,EAAI,GACrBa,GAAKs2K,GAAQt2K,GAAKw2K,GAAQz3K,GAAKw3K,GAAQx3K,GAAK03K,GAAMl3J,EAAO3hB,KAAK62Z,EAAIt1Z,KAGzD,IAATqnM,EAAalwB,GAAQt2K,EAAIu2K,GAAQx3K,KACjC2vC,EAAM9wC,KAAKg9B,GACX8T,EAAM9wC,KAAKuB,EAAI,GACfuvC,EAAM9wC,KAAK,EAAI4oM,KAEN,IAATA,EAAahwB,GAAQx2K,EAAIy2K,GAAQ13K,KACjC2vC,EAAM9wC,KAAKuB,EAAI,GACfuvC,EAAM9wC,KAAKg+F,GACXltD,EAAM9wC,KAAK,EAAI4oM,GAEvB,CAEA,OAAOjnL,CACX,CASA,MAAAs1Y,CAAOpyD,EAAIqyD,EAAIh5Z,GACX,IAAKC,KAAK44Z,UAAW,MAAM,IAAIpxY,MAAM,+CAErC,MAAM,IAACkxY,EAAG,OAAE/gS,EAAM,SAAEwgS,GAAYn4Z,KAC1B2yC,EAAQ,CAAC,EAAG+lX,EAAIr4Z,OAAS,EAAG,GAC5BmjB,EAAS,GACTw1Y,EAAKj5Z,EAAIA,EAGf,KAAO4yC,EAAMtyC,QAAQ,CACjB,MAAMoqM,EAAO93J,EAAM/wC,OAAS,EACtBi+F,EAAQltD,EAAM/wC,OAAS,EACvBi9B,EAAO8T,EAAM/wC,OAAS,EAG5B,GAAIi+F,EAAQhhE,GAAQs5X,EAAU,CAC1B,IAAK,IAAIv3Z,EAAIi+B,EAAMj+B,GAAKi/F,EAAOj/F,IACvBq4Z,EAAOthS,EAAO,EAAI/2H,GAAI+2H,EAAO,EAAI/2H,EAAI,GAAI8lW,EAAIqyD,IAAOC,GAAIx1Y,EAAO3hB,KAAK62Z,EAAI93Z,IAEhF,QACJ,CAGA,MAAMwC,EAAKy7B,EAAOghE,GAAU,EAGtB57F,EAAI0zH,EAAO,EAAIv0H,GACfJ,EAAI20H,EAAO,EAAIv0H,EAAI,GACrB61Z,EAAOh1Z,EAAGjB,EAAG0jW,EAAIqyD,IAAOC,GAAIx1Y,EAAO3hB,KAAK62Z,EAAIt1Z,KAGnC,IAATqnM,EAAai8J,EAAK3mW,GAAKkE,EAAI80Z,EAAKh5Z,GAAKiD,KACrC2vC,EAAM9wC,KAAKg9B,GACX8T,EAAM9wC,KAAKuB,EAAI,GACfuvC,EAAM9wC,KAAK,EAAI4oM,KAEN,IAATA,EAAai8J,EAAK3mW,GAAKkE,EAAI80Z,EAAKh5Z,GAAKiD,KACrC2vC,EAAM9wC,KAAKuB,EAAI,GACfuvC,EAAM9wC,KAAKg+F,GACXltD,EAAM9wC,KAAK,EAAI4oM,GAEvB,CAEA,OAAOjnL,CACX,EAWJ,SAAS+oB,EAAKmsX,EAAK/gS,EAAQwgS,EAAUt5X,EAAMghE,EAAO4qG,GAC9C,GAAI5qG,EAAQhhE,GAAQs5X,EAAU,OAE9B,MAAM/0Z,EAAKy7B,EAAOghE,GAAU,EAI5B22K,EAAOkiJ,EAAK/gS,EAAQv0H,EAAGy7B,EAAMghE,EAAO4qG,GAGpCl+J,EAAKmsX,EAAK/gS,EAAQwgS,EAAUt5X,EAAMz7B,EAAI,EAAG,EAAIqnM,GAC7Cl+J,EAAKmsX,EAAK/gS,EAAQwgS,EAAU/0Z,EAAI,EAAGy8F,EAAO,EAAI4qG,EAClD,CAYA,SAAS+rE,EAAOkiJ,EAAK/gS,EAAQj0H,EAAGm7B,EAAMghE,EAAO4qG,GAEzC,KAAO5qG,EAAQhhE,GAAM,CACjB,GAAIghE,EAAQhhE,EAAO,IAAK,CACpB,MAAMx/B,EAAIwgG,EAAQhhE,EAAO,EACnBz7B,EAAIM,EAAIm7B,EAAO,EACfl5B,EAAI9C,KAAKwnB,IAAIhrB,GACbyB,EAAI,GAAM+B,KAAKkxB,IAAI,EAAIpuB,EAAI,GAC3BuzZ,EAAK,GAAMr2Z,KAAK4yF,KAAK9vF,EAAI7E,GAAKzB,EAAIyB,GAAKzB,IAAM+D,EAAI/D,EAAI,EAAI,GAAK,EAAI,GAGxEm3Q,EAAOkiJ,EAAK/gS,EAAQj0H,EAFJb,KAAK8K,IAAIkxB,EAAMh8B,KAAKyK,MAAM5J,EAAIN,EAAItC,EAAIzB,EAAI65Z,IACzCr2Z,KAAKgL,IAAIgyF,EAAOh9F,KAAKyK,MAAM5J,GAAKrE,EAAI+D,GAAKtC,EAAIzB,EAAI65Z,IACxBzuN,EAC9C,CAEA,MAAMrrM,EAAIu4H,EAAO,EAAIj0H,EAAI+mM,GACzB,IAAI7pM,EAAIi+B,EACJz6B,EAAIy7F,EAKR,IAHAs5T,EAAST,EAAK/gS,EAAQ94F,EAAMn7B,GACxBi0H,EAAO,EAAI93B,EAAQ4qG,GAAQrrM,GAAG+5Z,EAAST,EAAK/gS,EAAQ94F,EAAMghE,GAEvDj/F,EAAIwD,GAAG,CAIV,IAHA+0Z,EAAST,EAAK/gS,EAAQ/2H,EAAGwD,GACzBxD,IACAwD,IACOuzH,EAAO,EAAI/2H,EAAI6pM,GAAQrrM,GAAGwB,IACjC,KAAO+2H,EAAO,EAAIvzH,EAAIqmM,GAAQrrM,GAAGgF,GACrC,CAEIuzH,EAAO,EAAI94F,EAAO4rK,KAAUrrM,EAAG+5Z,EAAST,EAAK/gS,EAAQ94F,EAAMz6B,IAE3DA,IACA+0Z,EAAST,EAAK/gS,EAAQvzH,EAAGy7F,IAGzBz7F,GAAKV,IAAGm7B,EAAOz6B,EAAI,GACnBV,GAAKU,IAAGy7F,EAAQz7F,EAAI,EAC5B,CACJ,CAQA,SAAS+0Z,EAAST,EAAK/gS,EAAQ/2H,EAAGwD,GAC9BygU,EAAK6zF,EAAK93Z,EAAGwD,GACbygU,EAAKltM,EAAQ,EAAI/2H,EAAG,EAAIwD,GACxBygU,EAAKltM,EAAQ,EAAI/2H,EAAI,EAAG,EAAIwD,EAAI,EACpC,CAOA,SAASygU,EAAKpmG,EAAK79N,EAAGwD,GAClB,MAAMw/V,EAAMnlI,EAAI79N,GAChB69N,EAAI79N,GAAK69N,EAAIr6N,GACbq6N,EAAIr6N,GAAKw/V,CACb,CAQA,SAASq1D,EAAOr7D,EAAIC,EAAIG,EAAIC,GACxB,MAAMzpN,EAAKopN,EAAKI,EACV3pN,EAAKwpN,EAAKI,EAChB,OAAOzpN,EAAKA,EAAKH,EAAKA,CAC1B,iDCs6CA,QA5tDA,SAAS2s4C,EAAUlltC,GACf,KAAM97T,gBAAgBghhD,GAClB,MAAM,IAAIx5/C,MAAM,0DAGpB,GAAsB,iBAAXs0S,IAAwB72D,EAAS62D,GACxC,MAAM,IAAIt0S,MAAM,mHAGpB,GAAIy9O,EAAS62D,GAAS,CAClB,MAAMmltC,EAAqB,iBAAkBnltC,EACvC,CAAC,YACD,CAAC,MAAO,QAAS,YAEvB,IAAK,MAAMtiR,KAAYyn+C,EACnB,IAAKnltC,EAAOtiR,GACR,MAAM,IAAIhyB,MAAM,qDAAqDgyB,eAGjF,CAEA,IACI2g4B,EAEA+mmB,EAHA18/C,EAAKxkB,KAELmhhD,EAAe,GAGfC,EAAc,CACdp+/C,QAAQ,EACRq1pB,aAAc,GACdn2M,SAAU,GAGd19c,EAAG68/C,eAAgB,EAEnB,IAAIC,GAAW,EACXjpsC,EAAU5lQ,EAAaprD,QAAQmwB,MAC/B+p+C,EAAU9u8C,EAAaprD,QAAQC,MAkpBnC,SAASk6/C,IACL,YAAgC,IAArBh9/C,EAAGi9/C,cACkD,KAAxDj9/C,EAAGi9/C,cAAc5ogD,OAAO2L,EAAGi9/C,cAAcphhD,OAAS,GAC3CmkB,EAAGi9/C,cAAgB,UAAYny/C,mBAAmB9K,EAAGk9/C,OAErDl9/C,EAAGi9/C,cAAgB,WAAany/C,mBAAmB9K,EAAGk9/C,YAGjE,CAER,CAUA,SAASC,EAAgBC,EAAOj7/C,GAC5B,IAAIuU,EAAO0m/C,EAAM1m/C,KACbp5B,EAAQ8/gD,EAAM9/gD,MACd26B,EAASml/C,EAAMnl/C,OAEfol/C,GAAY,IAAIr2/C,MAAOic,UAM3B,GAJIm6+C,EAAwB,kBACxBp9/C,EAAGs9/C,gBAAkBt9/C,EAAGs9/C,eAAeF,EAAwB,iBAAGA,EAAiB,WAGnF9/gD,EACA,GAAc,QAAV26B,EACA,GAAIml/C,EAAMr0/C,mBAAiD,2BAA5Bq0/C,EAAMr0/C,kBACjC/I,EAAGu9/C,MAAMH,EAAMI,kBACZ,CACH,IAAIC,EAAY,CAAEnghD,MAAOA,EAAOyrB,kBAAmBq0/C,EAAMr0/C,mBACzD/I,EAAG09/C,aAAe19/C,EAAG09/C,YAAYD,GACjCt7/C,GAAWA,EAAQw7/C,SAASF,EAChC,MAEAt7/C,GAAWA,EAAQy7/C,kBAO3B,GAJuB,YAAX59/C,EAAG4vwC,OAAwBwtP,EAAM7l/C,cAAgB6l/C,EAAMlt/C,WAC/D+pZ,EAAYmjmC,EAAM7l/C,aAAc,KAAM6l/C,EAAMlt/C,UAAU,GAG1C,YAAXlQ,EAAG4vwC,MAAuBl5vC,EAAM,CACjC,IAAImN,EAAS,QAAUnN,EAAO,iCAC1BhL,EAAM1L,EAAG69/C,UAAUhl2C,QAEnBu7R,EAAM,IAAIvwb,eACduwb,EAAIlkc,KAAK,OAAQwb,GAAK,GACtB0ob,EAAI9nb,iBAAiB,eAAgB,qCAErCuX,GAAU,cAAgB/Y,mBAAmB9K,EAAG0P,UAChDmU,GAAU,iBAAmBu5+C,EAAMU,YAE/BV,EAAMW,mBACNl6+C,GAAU,kBAAoBu5+C,EAAMW,kBAGxC3pkC,EAAIhob,iBAAkB,EAEtBgob,EAAI6mM,mBAAqB,WACrB,GAAsB,GAAlB7mM,EAAI5na,WACJ,GAAkB,KAAd4na,EAAInzb,OAAe,CAEnB,IAAI+8/C,EAAgBlogD,KAAKiS,MAAMqsb,EAAIrwb,cACnCk2Z,EAAY+jmC,EAA4B,aAAGA,EAA6B,cAAGA,EAAwB,SAAe,aAAZh+/C,EAAG4vwC,MACzGquP,GACJ,MACIj+/C,EAAG09/C,aAAe19/C,EAAG09/C,cACrBv7/C,GAAWA,EAAQw7/C,UAG/B,EAEAvpkC,EAAItwb,KAAK+f,EACb,CAEA,SAASo2Y,EAAY/B,EAAagmmC,EAAcC,EAASC,GAGrDC,EAASnmmC,EAAagmmC,EAAcC,EAFpCd,GAAaA,GAAY,IAAIr2/C,MAAOic,WAAa,GAI7C65+C,GAAa98/C,EAAGs+/C,eAAiBt+/C,EAAGs+/C,cAAcxt/C,OAASss/C,EAAMmB,aACjE1qsC,EAAQ,4CACR7zT,EAAGw+/C,aACHr8/C,GAAWA,EAAQw7/C,YAEfS,IACAp+/C,EAAGy+/C,eAAiBz+/C,EAAGy+/C,gBACvBt8/C,GAAWA,EAAQy7/C,aAG/B,CAEJ,CAsIA,SAASc,EAAWr/8C,GAChB,OAAqB,GAAdA,EAAIp+C,QAAeo+C,EAAIt7C,cAAgBs7C,EAAI1zC,YAAYhf,WAAW,QAC7E,CAEA,SAAS0xgD,EAASxl2C,EAAOql2C,EAAcC,EAASd,GAsB5C,GArBIr9/C,EAAG2+/C,qBACHz2/C,aAAalI,EAAG2+/C,oBAChB3+/C,EAAG2+/C,mBAAqB,MAGxBT,GACAl+/C,EAAGk+/C,aAAeA,EAClBl+/C,EAAG4+/C,mBAAqBC,EAAYX,YAE7Bl+/C,EAAGk+/C,oBACHl+/C,EAAG4+/C,oBAGVT,GACAn+/C,EAAGm+/C,QAAUA,EACbn+/C,EAAGs+/C,cAAgBO,EAAYV,YAExBn+/C,EAAGm+/C,eACHn+/C,EAAGs+/C,eAGVzl2C,GAaA,GAZA74J,EAAG64J,MAAQA,EACX74J,EAAG8+/C,YAAcD,EAAYhm2C,GAC7B74J,EAAGgzD,UAAYhzD,EAAG8+/C,YAAYC,IAC9B/+/C,EAAGg//C,eAAgB,EACnBh//C,EAAG0j6B,QAAU1j6B,EAAG8+/C,YAAYpu/C,IAC5B1Q,EAAGi//C,YAAcj//C,EAAG8+/C,YAAYI,aAChCl//C,EAAGm//C,eAAiBn//C,EAAG8+/C,YAAYM,gBAE/B/B,IACAr9/C,EAAGq//C,SAAWhhhD,KAAKyK,MAAMu0gD,EAAY,KAAQr9/C,EAAG8+/C,YAAYn3/C,KAG7C,MAAf3H,EAAGq//C,WACHxrsC,EAAQ,sEAAwE7zT,EAAGq//C,SAAW,YAE1Fr//C,EAAGs//C,gBAAgB,CACnB,IAAIC,EAAoF,KAAvEv//C,EAAG8+/C,YAAiB,KAAK,IAAI93/C,MAAOic,UAAY,IAAQjjB,EAAGq//C,UAC5ExrsC,EAAQ,+BAAiCx1U,KAAKogD,MAAM8g+C,EAAY,KAAQ,MACpEA,GAAa,EACbv//C,EAAGs//C,iBAEHt//C,EAAG2+/C,mBAAqBt9/C,WAAWrB,EAAGs//C,eAAgBC,EAE9D,cAGGv//C,EAAG64J,aACH74J,EAAG8+/C,mBACH9+/C,EAAG0j6B,eACH1j6B,EAAGi//C,mBACHj//C,EAAGm//C,eAEVn//C,EAAGg//C,eAAgB,CAE3B,CAEA,SAASQ,IACL,GAAsB,oBAAXr1/C,aAAuD,IAAtBA,OAAOmt+C,WAC/C,MAAM,IAAIt0+C,MAAM,oCAGpB,OAAOmH,OAAOmt+C,YAClB,CAEA,SAASmoB,EAAc/z/C,GACnB,IAAI0x/C,EAmBR,SAA0B1x/C,GACtB,IAAIg0/C,EACJ,OAAQ1//C,EAAG4vwC,MACP,IAAK,WACD8vP,EAAkB,CAAC,OAAQ,QAAS,gBAAiB,mBAAoB,YAAa,OACtF,MACJ,IAAK,WACDA,EAAkB,CAAC,eAAgB,aAAc,WAAY,QAAS,gBAAiB,aAAc,mBAAoB,YAAa,OACtI,MACJ,IAAK,SACDA,EAAkB,CAAC,eAAgB,aAAc,WAAY,OAAQ,QAAS,gBAAiB,aAAc,mBAAoB,YAAa,OAItJA,EAAgBrihD,KAAK,SACrBqihD,EAAgBrihD,KAAK,qBACrBqihD,EAAgBrihD,KAAK,aAErB,IAGIsihD,EACA7mxC,EAJA8mxC,EAAal0/C,EAAI1vB,QAAQ,KACzB6jhD,EAAgBn0/C,EAAI1vB,QAAQ,KAsBhC,GAjBwB,UAApBgkB,EAAG8//C,eAA4C,IAAhBF,GAC/BD,EAASj0/C,EAAIoH,UAAU,EAAG8s/C,GAEE,MAD5B9mxC,EAASinxC,EAAoBr0/C,EAAIoH,UAAU8s/C,EAAa,GAAsB,IAAnBC,EAAuBA,EAAgBn0/C,EAAI7vB,QAAS6jhD,IACpGM,eACPL,GAAU,IAAM7mxC,EAAOknxC,eAEJ,IAAnBH,IACAF,GAAUj0/C,EAAIoH,UAAU+s/C,KAED,aAApB7//C,EAAG8//C,eAAkD,IAAnBD,IACzCF,EAASj0/C,EAAIoH,UAAU,EAAG+s/C,GAEE,MAD5B/mxC,EAASinxC,EAAoBr0/C,EAAIoH,UAAU+s/C,EAAgB,GAAIH,IACpDM,eACPL,GAAU,IAAM7mxC,EAAOknxC,eAI3BlnxC,GAAUA,EAAOmnxC,YACjB,GAAgB,aAAZjggD,EAAG4vwC,MAAmC,WAAZ5vwC,EAAG4vwC,MAC7B,IAAK92hC,EAAOmnxC,YAAYvp/C,MAAQoiO,EAAOmnxC,YAAY3ihD,QAAUw7P,EAAOmnxC,YAAY94gD,MAE5E,OADA2xP,EAAOmnxC,YAAYN,OAASA,EACrB7mxC,EAAOmnxC,iBAEf,GAAgB,aAAZjggD,EAAG4vwC,OACL92hC,EAAOmnxC,YAAY1o/C,cAAgBuhO,EAAOmnxC,YAAY3ihD,QAAUw7P,EAAOmnxC,YAAY94gD,MAEpF,OADA2xP,EAAOmnxC,YAAYN,OAASA,EACrB7mxC,EAAOmnxC,WAI9B,CAzEgBC,CAAiBx0/C,GAC7B,GAAK0x/C,EAAL,CAIA,IAAI+C,EAAazD,EAAgB/9gD,IAAIy+gD,EAAMj2gD,OAW3C,OATIg5gD,IACA/C,EAAMp+4C,OAAQ,EACdo+4C,EAAMU,YAAcqC,EAAWrC,YAC/BV,EAAMmB,YAAc4B,EAAWrv/C,MAC/Bss/C,EAAMnl/C,OAASko/C,EAAWlo/C,OAC1Bml/C,EAAMW,iBAAmBoC,EAAWpC,iBACpCX,EAAMI,aAAe2C,EAAW3C,cAG7BJ,CAbP,CAcJ,CA0DA,SAAS2C,EAAoBC,EAAcN,GAMvC,IALA,IAAIphhD,EAAI0hhD,EAAa5/gD,MAAM,KACvB4e,EAAS,CACTghgD,aAAc,GACdC,YAAa,CAAC,GAET7jhD,EAAI,EAAGA,EAAIkC,EAAEzC,OAAQO,IAAK,CAC/B,IAAIgE,EAAQ9B,EAAElC,GAAGJ,QAAQ,KACrBqkB,EAAM/hB,EAAElC,GAAGmB,MAAM,EAAG6C,IACc,IAAlCs/gD,EAAgB1jhD,QAAQqkB,GACxBrB,EAAOihgD,YAAY5//C,GAAO/hB,EAAElC,GAAGmB,MAAM6C,EAAQ,IAEjB,KAAxB4e,EAAOghgD,eACPhhgD,EAAOghgD,cAAgB,KAE3BhhgD,EAAOghgD,cAAgB1hhD,EAAElC,GAEjC,CACA,OAAO4iB,CACX,CAEA,SAASohgD,IAGL,IAAI9hhD,EAAI,CACJs/gD,WAAY,SAAS5+/C,GACjB1gB,EAAEwiB,QAAQ9B,EACd,EAEA2+/C,SAAU,SAAS3+/C,GACf1gB,EAAEyiB,OAAO/B,EACb,GAOJ,OALA1gB,EAAE6jB,QAAU,IAAIhmB,SAAQ,SAAS2kB,EAASC,GACtCziB,EAAEwiB,QAAUA,EACZxiB,EAAEyiB,OAASA,CACf,IAEOziB,CACX,CAgBA,SAAS+hhD,IACL,IAAIl+/C,EAAUi+/C,IAEd,IAAKxD,EAAYp+/C,OAEb,OADA2D,EAAQy7/C,aACDz7/C,EAAQA,QAGnB,GAAIy6/C,EAAYtjkC,OAEZ,OADAn3b,EAAQy7/C,aACDz7/C,EAAQA,QAGnB,IAAIm3b,EAAS34c,SAASmE,cAAc,UACpC83gD,EAAYtjkC,OAASA,EAErBA,EAAOptb,OAAS,WACZ,IAAIo0/C,EAAUtggD,EAAG69/C,UAAU0C,YACD,MAAtBD,EAAQjsgD,OAAO,GACfuogD,EAAY4D,aAzbf9ihD,OAAO60B,SAASiE,OAGV94B,OAAO60B,SAASiE,OAFhB94B,OAAO60B,SAASC,SAAW,KAAO90B,OAAO60B,SAAS8wB,UAAY3lD,OAAO60B,SAAS6p5B,KAAO,IAAM1+6B,OAAO60B,SAAS6p5B,KAAM,IA0bpHwgmB,EAAY4D,aAAeF,EAAQxt/C,UAAU,EAAGwt/C,EAAQtkhD,QAAQ,IAAK,IAEzEmmB,EAAQy7/C,YACZ,EAEA,IAAI5tgD,EAAMgQ,EAAG69/C,UAAU4C,qBAmCvB,OAlCAnnkC,EAAOnhb,aAAa,MAAOnoB,GAC3Bspc,EAAOnhb,aAAa,UAAW,2EAC/Bmhb,EAAOnhb,aAAa,QAAS,2BAC7Bmhb,EAAOzpc,MAAMC,QAAU,OACvBnP,SAAS4rB,KAAKxc,YAAYupc,GA4B1B57c,OAAOyqB,iBAAiB,WA1BF,SAAS8R,GAC3B,GAAKA,EAAMzD,SAAWom/C,EAAY4D,cAAkB5D,EAAYtjkC,OAAOrpc,gBAAkBgqB,EAAM52B,SAI3E,aAAd42B,EAAMjvB,MAAqC,WAAdivB,EAAMjvB,MAAmC,SAAdivB,EAAMjvB,MAApE,CAKkB,aAAdivB,EAAMjvB,MACNgV,EAAGw+/C,aAKP,IAFA,IAAI778C,EAAYi68C,EAAY/o2B,aAAap1pB,OAAO,EAAGm+/C,EAAY/o2B,aAAah4qB,QAEnEO,EAAIumE,EAAU9mE,OAAS,EAAGO,GAAK,IAAKA,EAAG,CAC5C,IAAI+lB,EAAUwgD,EAAUvmE,GACN,SAAd69B,EAAMjvB,KACNmX,EAAQw7/C,WAERx7/C,EAAQy7/C,WAAyB,aAAd3j/C,EAAMjvB,KAEjC,CAhBA,CAiBJ,IAEoD,GAE7CmX,EAAQA,OACnB,CAEA,SAAS87/C,IACDrB,EAAYp+/C,QACRwB,EAAG64J,OACHx3J,YAAW,WACPq//C,IAAmB9jhD,MAAK,SAASqsyB,GACzBA,GACAg1uB,GAER,GACJ,GAA0B,IAAvBrB,EAAYl/iC,SAG3B,CAEA,SAASgjjC,IACL,IAAIv+/C,EAAUi+/C,IAEd,GAAIxD,EAAYtjkC,QAAUsjkC,EAAY4D,aAAe,CACjD,IAAIh2sC,EAAMxqT,EAAG0P,SAAW,KAAO1P,EAAGgzD,UAAYhzD,EAAGgzD,UAAY,IAC7D4p8C,EAAY/o2B,aAAax2qB,KAAK8kB,GAC9B,IAAIqU,EAASom/C,EAAY4D,aACc,GAAnC5D,EAAY/o2B,aAAah4qB,QACzB+ghD,EAAYtjkC,OAAOrpc,cAAckd,YAAYq9S,EAAKh0S,EAE1D,MACIrU,EAAQy7/C,aAGZ,OAAOz7/C,EAAQA,OACnB,CA+CA,SAASw+/C,EAAY54gD,GACjB,IAAKA,GAAgB,WAARA,EACT,MAAO,CACHw1gD,MAAOvg/C,eAAerY,GAElB,OADAjnB,OAAO60B,SAAS52B,aAAaqkB,EAAG4ggD,eAAej8/C,IACxCy7/C,IAAgBj+/C,OAC3B,EAEA4V,OAAQiF,eAAerY,GAGnB,GAAqB,SADAA,GAASk8/C,cAAgB7ggD,EAAG6ggD,cAG7C,YADAnjhD,OAAO60B,SAAStqB,QAAQ+X,EAAG8ggD,gBAAgBn8/C,IAK/C,MAAMst0C,EAAOtx1C,SAASmE,cAAc,QAEpCmt1C,EAAK95zC,aAAa,SAAU,QAC5B85zC,EAAK95zC,aAAa,SAAUnY,EAAG8ggD,gBAAgBn8/C,IAC/Cst0C,EAAKpi1C,MAAMC,QAAU,OAGrB,MAAM9E,EAAO,CACT+1gD,cAAe/ggD,EAAGm+/C,QAClBnw/C,UAAWhO,EAAG0P,SACdsx/C,yBAA0BrrmB,EAAQmomB,YAAYn5/C,GAAS,IAG3D,IAAK,MAAOze,EAAMvJ,KAAU7B,OAAOmd,QAAQjN,GAAO,CAC9C,MAAMihD,EAAQtrD,SAASmE,cAAc,SAErCmnD,EAAM9zB,aAAa,OAAQ,UAC3B8zB,EAAM9zB,aAAa,OAAQjyB,GAC3B+lD,EAAM9zB,aAAa,QAASx7B,GAE5Bs11C,EAAKli1C,YAAYk8C,EACrB,CAGAtrD,SAAS4rB,KAAKxc,YAAYki1C,GAC1BA,EAAK/72B,QACT,EAEA5vY,SAAUtpE,eAAerY,GAErB,OADAjnB,OAAO60B,SAAS52B,aAAaqkB,EAAGihgD,kBAAkBt8/C,IAC3Cy7/C,IAAgBj+/C,OAC3B,EAEA++/C,kBAAoB,WAChB,IAAIC,EAAanhgD,EAAGohgD,mBACpB,QAA0B,IAAfD,EAGP,KAAM,mCAEV,OAJIzjhD,OAAO60B,SAASkE,KAAO0q/C,EAIpBf,IAAgBj+/C,OAC3B,EAEA27/C,YAAa,SAASn5/C,EAAS08/C,GAK3B,OAJwB,GAApBzlhD,UAAUC,SACVwlhD,GAAa,GAGb18/C,GAAWA,EAAQm5/C,YACZn5/C,EAAQm5/C,YACR99/C,EAAG89/C,YACH99/C,EAAG89/C,YAEHvr/C,SAASkE,IAExB,GAIR,GAAY,WAAR1uB,EAAmB,CACnB60gD,EAAYp+/C,QAAS,EACrB,IAAI8igD,EAA2B,SAASC,EAAUj2gD,EAAQqZ,GACtD,OAAIjnB,OAAO8jhD,SAAW9jhD,OAAO8jhD,QAAQC,aAE1B/jhD,OAAO8jhD,QAAQC,aAAavxgD,KAAKqxgD,EAAUj2gD,EAAQqZ,GAEnDjnB,OAAOwS,KAAKqxgD,EAAUj2gD,EAAQqZ,EAE7C,EAoBI+8/C,EAAuB,SAAUhjuB,GACjC,IAAIijuB,EAnByB,SAAUjjuB,GACvC,OAAIA,GAAeA,EAAYijuB,eACpB7mhD,OAAOgU,KAAK4vyB,EAAYijuB,gBAAgBzy/C,QAAO,SAAUvK,EAASi9/C,GAErE,OADAj9/C,EAAQi9/C,GAAcljuB,EAAYijuB,eAAeC,GAC1Cj9/C,CACX,GAAG,CAAC,GAEG,CAAC,CAEhB,CAUyBk9/C,CAA2BnjuB,GAKhD,OAJAijuB,EAAepv/C,SAAW,KACtBmsxB,GAAqC,QAAtBA,EAAYzmxB,SAC3B0p/C,EAAe7igC,OAAS,OAXL,SAAU6igC,GACjC,OAAO7mhD,OAAOgU,KAAK6ygD,GAAgBzy/C,QAAO,SAAUvK,EAASi9/C,GAEzD,OADAj9/C,EAAQtnB,KAAKukhD,EAAW,IAAID,EAAeC,IACpCj9/C,CACX,GAAG,IAAItc,KAAK,IAChB,CAQWy5gD,CAAqBH,EAChC,EAEII,EAAwB,WACxB,OAAO/hgD,EAAG89/C,aAAe,kBAC7B,EAEA,MAAO,CACHP,MAAOvg/C,eAAerY,GAClB,IAAIxC,EAAUi+/C,IAEVuB,EAAiBD,EAAqB/8/C,GACtC48/C,QAAiBvhgD,EAAG4ggD,eAAej8/C,GACnCyY,EAAMkk/C,EAAyBC,EAAU,SAAUI,GACnDK,GAAY,EAEZj4/C,GAAS,EACTk4/C,EAAe,WACfl4/C,GAAS,EACTqT,EAAI5tB,OACR,EAiCA,OA/BA4tB,EAAIjV,iBAAiB,aAAa,SAAS8R,GACW,GAA9CA,EAAMvO,IAAI1vB,QAAQ+lhD,OAElB5E,EADesC,EAAcxl/C,EAAMvO,KACTvJ,GAC1B8//C,IACAD,GAAY,EAEpB,IAEA5k/C,EAAIjV,iBAAiB,aAAa,SAAS8R,GAClC+n/C,IACiD,GAA9C/n/C,EAAMvO,IAAI1vB,QAAQ+lhD,MAElB5E,EADesC,EAAcxl/C,EAAMvO,KACTvJ,GAC1B8//C,IACAD,GAAY,IAEZ7//C,EAAQw7/C,WACRsE,KAGZ,IAEA7k/C,EAAIjV,iBAAiB,QAAQ,SAAS8R,GAC7BlQ,GACD5H,EAAQw7/C,SAAS,CACbz8/C,OAAQ,kBAGpB,IAEOiB,EAAQA,OACnB,EAEA4V,OAAQ,SAASpT,GACb,IAKIrnB,EALA6kB,EAAUi+/C,IAEV8B,EAAYligD,EAAG8ggD,gBAAgBn8/C,GAC/ByY,EAAMkk/C,EAAyBY,EAAW,SAAU,yCA4BxD,OAxBA9k/C,EAAIjV,iBAAiB,aAAa,SAAS8R,GACW,GAA9CA,EAAMvO,IAAI1vB,QAAQ+lhD,MAClB3k/C,EAAI5tB,OAEZ,IAEA4tB,EAAIjV,iBAAiB,aAAa,SAAS8R,GACW,GAA9CA,EAAMvO,IAAI1vB,QAAQ+lhD,OAGlBzkhD,GAAQ,GAFR8/B,EAAI5tB,OAKZ,IAEA4tB,EAAIjV,iBAAiB,QAAQ,SAAS8R,GAC9B38B,EACA6kB,EAAQw7/C,YAER39/C,EAAGw+/C,aACHr8/C,EAAQy7/C,aAEhB,IAEOz7/C,EAAQA,OACnB,EAEAmkF,SAAWtpE,eAAerY,GACtB,IAAIxC,EAAUi+/C,IACV+B,QAAoBnigD,EAAGihgD,oBACvBU,EAAiBD,EAAqB/8/C,GACtCyY,EAAMkk/C,EAAyBa,EAAa,SAAUR,GAQ1D,OAPAvk/C,EAAIjV,iBAAiB,aAAa,SAAS8R,GACW,GAA9CA,EAAMvO,IAAI1vB,QAAQ+lhD,OAClB3k/C,EAAI5tB,QAEJ2tgD,EADYsC,EAAcxl/C,EAAMvO,KACTvJ,GAE/B,IACOA,EAAQA,OACnB,EAEA++/C,kBAAoB,WAChB,IAAIC,EAAanhgD,EAAGohgD,mBACpB,QAA0B,IAAfD,EAQP,KAAM,mCAPN,IAAI/j/C,EAAMkk/C,EAAyBH,EAAY,SAAU,eACzD/j/C,EAAIjV,iBAAiB,aAAa,SAAS8R,GACW,GAA9CA,EAAMvO,IAAI1vB,QAAQ+lhD,MAClB3k/C,EAAI5tB,OAEZ,GAIR,EAEAsugD,YAAa,SAASn5/C,GAClB,OAAOo9/C,GACX,EAER,CAEA,GAAY,kBAARh6gD,EAGA,OAFA60gD,EAAYp+/C,QAAS,EAEd,CACH++/C,MAAOvg/C,eAAerY,GAClB,IAAIxC,EAAUi+/C,IACVmB,QAAiBvhgD,EAAG4ggD,eAAej8/C,GAUvC,OARAy9/C,eAAelr+C,UAAU,YAAY,SAASjd,GAC1Cmo/C,eAAehr+C,YAAY,YAC3B15C,OAAO8jhD,QAAQxx8C,QAAQqy8C,WAAW7ygD,QAElC2tgD,EADYsC,EAAcxl/C,EAAMvO,KACTvJ,EAC3B,IAEAzkB,OAAO8jhD,QAAQxx8C,QAAQqy8C,WAAWC,QAAQf,GACnCp//C,EAAQA,OACnB,EAEA4V,OAAQ,SAASpT,GACb,IAAIxC,EAAUi+/C,IACV8B,EAAYligD,EAAG8ggD,gBAAgBn8/C,GAUnC,OARAy9/C,eAAelr+C,UAAU,YAAY,SAASjd,GAC1Cmo/C,eAAehr+C,YAAY,YAC3B15C,OAAO8jhD,QAAQxx8C,QAAQqy8C,WAAW7ygD,QAClCwQ,EAAGw+/C,aACHr8/C,EAAQy7/C,YACZ,IAEAlghD,OAAO8jhD,QAAQxx8C,QAAQqy8C,WAAWC,QAAQJ,GACnC///C,EAAQA,OACnB,EAEAmkF,SAAWtpE,eAAerY,GACtB,IAAIxC,EAAUi+/C,IACV+B,QAAoBnigD,EAAGihgD,kBAAkBt8/C,GAQ7C,OAPAy9/C,eAAelr+C,UAAU,YAAa,SAASjd,GAC3Cmo/C,eAAehr+C,YAAY,YAC3B15C,OAAO8jhD,QAAQxx8C,QAAQqy8C,WAAW7ygD,QAElC2tgD,EADYsC,EAAcxl/C,EAAMvO,KACTvJ,EAC3B,IACAzkB,OAAO8jhD,QAAQxx8C,QAAQqy8C,WAAWC,QAAQH,GACnChggD,EAAQA,OAEnB,EAEA++/C,kBAAoB,WAChB,IAAIC,EAAanhgD,EAAGohgD,mBACpB,QAA0B,IAAfD,EAGP,KAAM,mCAFNzjhD,OAAO8jhD,QAAQxx8C,QAAQqy8C,WAAWC,QAAQnB,EAIlD,EAEArD,YAAa,SAASn5/C,GAClB,OAAIA,GAAWA,EAAQm5/C,YACZn5/C,EAAQm5/C,YACR99/C,EAAG89/C,YACH99/C,EAAG89/C,YAEH,kBAEf,GAIR,KAAM,yBAA2B/1gD,CACrC,CAlgDKtK,WAAWuh2C,iBACZ+9K,EACI,kVAMR/8/C,EAAGksC,KAAO,SAAUq29C,EAAc,CAAC,GAC/B,GAAIvigD,EAAG68/C,cACH,MAAM,IAAI75/C,MAAM,uDAsCpB,GAnCAhD,EAAG68/C,eAAgB,EAEnB78/C,EAAGg//C,eAAgB,EAEnBtC,EAmpDJ,WACI,IACI,OAAO,IAAIptoC,CACf,CAAE,MAAOx8V,GACT,CAEA,OAAO,IAAI0v+C,CACf,CA1pDsBC,GAId9smB,EAHW,CAAC,UAAW,UAAW,kBAEzB356B,QAAQumhD,EAAY5smB,UAAY,EAC/BgrmB,EAAY4B,EAAY5smB,SACI,iBAAxB4smB,EAAY5smB,QAChB4smB,EAAY5smB,QAElBj46B,OAAOglhD,SAAWhlhD,OAAO8jhD,QACfb,EAAY,WAEZA,SAIkB,IAAzB4B,EAAYzF,WACnBA,EAAWyF,EAAYzF,eAGiB,IAAjCyF,EAAY7B,mBACnB9D,EAAYp+/C,OAAS+jgD,EAAY7B,kBAGjC6B,EAAYI,2BACZ/F,EAAYl/iC,SAAW6kjC,EAAYI,0BAGZ,mBAAvBJ,EAAY/r4C,SACZx2H,EAAG4igD,eAAgB,GAGnBL,EAAYzC,aAAc,CAC1B,GAAiC,UAA7ByC,EAAYzC,cAAyD,aAA7ByC,EAAYzC,aAGpD,KAAM,iCAFN9//C,EAAG8//C,aAAeyC,EAAYzC,YAItC,CAEA,GAAIyC,EAAY3yP,KAAM,CAClB,OAAQ2yP,EAAY3yP,MAChB,IAAK,WACD5vwC,EAAGysC,aAAe,OAClB,MACJ,IAAK,WACDzsC,EAAGysC,aAAe,iBAClB,MACJ,IAAK,SACDzsC,EAAGysC,aAAe,sBAClB,MACJ,QACI,KAAM,yBAEdzsC,EAAG4vwC,KAAO2yP,EAAY3yP,IAC1B,CAoBA,GAlB4B,MAAxB2yP,EAAYlD,WACZr//C,EAAGq//C,SAAWkD,EAAYlD,UAG3BkD,EAAYzE,cACX99/C,EAAG89/C,YAAcyE,EAAYzE,aAG7ByE,EAAYM,4BACZ7igD,EAAG6igD,0BAA4BN,EAAYM,2BAGG,kBAAvCN,EAAYO,uBACnB9igD,EAAG8igD,uBAAyBP,EAAYO,uBAExC9igD,EAAG8igD,wBAAyB,OAGM,IAA3BP,EAAYQ,WAA4B,CAC/C,GAA+B,SAA3BR,EAAYQ,aAAoD,IAA3BR,EAAYQ,WACjD,MAAM,IAAI1nhD,UAAU,mEAAmEknhD,EAAYQ,eAGvG/igD,EAAG+igD,WAAaR,EAAYQ,UAChC,MACI/igD,EAAG+igD,WAAa,OAGqB,kBAA9BR,EAAYS,cACnBhjgD,EAAGgjgD,cAAgBT,EAAYS,cAE/BhjgD,EAAGgjgD,eAAgB,EAGU,SAA7BT,EAAY1B,aACZ7ggD,EAAG6ggD,aAAe,OAElB7ggD,EAAG6ggD,aAAe,MAGW,iBAAtB0B,EAAY34/C,QACnB5J,EAAG4J,MAAQ24/C,EAAY34/C,OAGU,iBAA1B24/C,EAAYU,YACnBjjgD,EAAGijgD,UAAYV,EAAYU,WAGkB,iBAAtCV,EAAYW,uBAAsCX,EAAYW,sBAAwB,EAC7FljgD,EAAGkjgD,sBAAwBX,EAAYW,sBAEvCljgD,EAAGkjgD,sBAAwB,IAG1BljgD,EAAG8//C,eACJ9//C,EAAG8//C,aAAe,YAEjB9//C,EAAGysC,eACJzsC,EAAGysC,aAAe,OAClBzsC,EAAG4vwC,KAAO,YAGd,IAAIztwC,EAAUi+/C,IAEV53lC,EAAc43lC,IAClB53lC,EAAYrma,QAAQvlB,MAAK,WACrBojB,EAAGuqB,SAAWvqB,EAAGuqB,QAAQvqB,EAAGg//C,eAC5B78/C,EAAQy7/C,WAAW59/C,EAAGg//C,cAC1B,IAAGx8/C,OAAM,SAASllB,GACd6kB,EAAQw7/C,SAASrghD,EACrB,IAEA,IAAI6lhD,EAomBR,WACI,IACIC,EADAjhgD,EAAUi+/C,IAOd,SAASiD,EAAkBC,GA0BnBtjgD,EAAG69/C,UAzBDyF,EAyBa,CACX/C,UAAW,WACP,OAAO+C,EAAkBC,sBAC7B,EACA1q2C,MAAO,WACH,OAAOyq2C,EAAkBE,cAC7B,EACAzr/C,OAAQ,WACJ,IAAKur/C,EAAkBG,qBACnB,KAAM,mCAEV,OAAOH,EAAkBG,oBAC7B,EACAhD,mBAAoB,WAChB,IAAK6C,EAAkBI,qBACnB,KAAM,mCAEV,OAAOJ,EAAkBI,oBAC7B,EACAp96C,SAAU,WACN,KAAM,yEACV,EACAq96C,SAAU,WACN,IAAKL,EAAkBM,kBACnB,KAAM,mCAEV,OAAON,EAAkBM,iBAC7B,GAnDW,CACXrD,UAAW,WACP,OAAOvD,IAAgB,+BAC3B,EACAnk2C,MAAO,WACH,OAAOmk2C,IAAgB,gCAC3B,EACAjl/C,OAAQ,WACJ,OAAOil/C,IAAgB,iCAC3B,EACAyD,mBAAoB,WAChB,OAAOzD,IAAgB,mDAC3B,EACA6G,wBAAyB,WACrB,OAAO7G,IAAgB,gDAC3B,EACA126C,SAAU,WACN,OAAO026C,IAAgB,wCAC3B,EACA2G,SAAU,WACN,OAAO3G,IAAgB,mCAC3B,EAiCZ,CAEA,GA9DsB,iBAAX1ltC,IACP8rtC,EAAY9rtC,GA6DZ8rtC,GACIhvkC,EAAM,IAAIvwb,gBACV3T,KAAK,MAAOkzgD,GAAW,GAC3BhvkC,EAAI9nb,iBAAiB,SAAU,oBAE/B8nb,EAAI6mM,mBAAqB,WACrB,GAAsB,GAAlB7mM,EAAI5na,WACJ,GAAkB,KAAd4na,EAAInzb,QAAiBy9/C,EAAWtqkC,GAAM,CACtC,IAAI98I,EAASxhT,KAAKiS,MAAMqsb,EAAIrwb,cAE5B/D,EAAGi9/C,cAAgB3ltC,EAAO,mBAC1Bt3S,EAAGk9/C,MAAQ5ltC,EAAc,MACzBt3S,EAAG0P,SAAW4nS,EAAiB,SAC/B+rtC,EAAkB,MAClBlhgD,EAAQy7/C,YACZ,MACIz7/C,EAAQw7/C,UAGpB,EAEAvpkC,EAAItwb,WACD,CACH9D,EAAG0P,SAAW4nS,EAAO5nS,SAErB,IAQYo0/C,EAMA1vkC,EAdR2vkC,EAAezstC,EAAqB,aACnCystC,EAM2B,iBAAjBA,GAGHD,EADgD,KAAhDC,EAAa1vgD,OAAO0vgD,EAAalohD,OAAS,GAClBkohD,EAAe,mCAEfA,EAAe,qCAEvC3vkC,EAAM,IAAIvwb,gBACV3T,KAAK,MAAO4zgD,GAAuB,GACvC1vkC,EAAI9nb,iBAAiB,SAAU,oBAE/B8nb,EAAI6mM,mBAAqB,WACC,GAAlB7mM,EAAI5na,aACc,KAAd4na,EAAInzb,QAAiBy9/C,EAAWtqkC,IAEhCivkC,EADyBvtgD,KAAKiS,MAAMqsb,EAAIrwb,eAExC5B,EAAQy7/C,cAERz7/C,EAAQw7/C,WAGpB,EAEAvpkC,EAAItwb,SAEJu//C,EAAkBU,GAClB5hgD,EAAQy7/C,eA/BZ59/C,EAAGi9/C,cAAgB3ltC,EAAO5rS,IAC1B1L,EAAGk9/C,MAAQ5ltC,EAAO4ltC,MAClBmG,EAAkB,MAClBlhgD,EAAQy7/C,aA+BhB,CAEA,OAAOz7/C,EAAQA,OACnB,CAtuBwB6hgD,GAEpB,SAASxt4C,IACL,IAAIyt4C,EAAU,SAAShs/C,GACdA,IACDtT,EAAQsT,OAAS,QAGjBsq/C,EAAYl6kC,SACZ1jb,EAAQ0jb,OAASk6kC,EAAYl6kC,QAEjCrob,EAAGu9/C,MAAM54/C,GAAS/nB,MAAK,WACnB4rb,EAAYo1lC,YAChB,IAAGp7/C,OAAM,SAAUllB,GACfkrb,EAAYm1lC,SAASrghD,EACzB,GACJ,EAEI4mhD,EAAmBln/C,iBACnB,IAAImn/C,EAAOxjhD,SAASmE,cAAc,UAC9BkL,QAAYgQ,EAAG4ggD,eAAe,CAAC3o/C,OAAQ,OAAQ6l/C,YAAa99/C,EAAG6igD,4BACnEsB,EAAKhs/C,aAAa,MAAOnoB,GACzBm0gD,EAAKhs/C,aAAa,UAAW,2EAC7Bgs/C,EAAKhs/C,aAAa,QAAS,6BAC3Bgs/C,EAAKt0gD,MAAMC,QAAU,OACrBnP,SAAS4rB,KAAKxc,YAAYo0gD,GAE1B,IAAIC,EAAkB,SAASnq/C,GACvBA,EAAMzD,SAAW94B,OAAO60B,SAASiE,QAAU2t/C,EAAKl0gD,gBAAkBgqB,EAAM52B,SAK5E85gD,EADYsC,EAAcxl/C,EAAMjvB,MACTw9a,GAEvB7nb,SAAS4rB,KAAK8L,YAAY8r/C,GAC1BzmhD,OAAOmnB,oBAAoB,UAAWu//C,GAC1C,EAEA1mhD,OAAOyqB,iBAAiB,UAAWi8/C,EACvC,EAEIz//C,EAAU,CAAC,EACf,OAAQ49/C,EAAY/r4C,QAChB,IAAK,YACGom4C,EAAYp+/C,OACZ6hgD,IAAwBzjhD,MAAK,WACzB8jhD,IAAmB9jhD,MAAK,SAAUqsyB,GACzBA,EAGDzgX,EAAYo1lC,aAFZ59/C,EAAG6igD,0BAA4BqB,IAAqBD,GAAQ,EAIpE,IAAGzhgD,OAAM,SAAUllB,GACfkrb,EAAYm1lC,SAASrghD,EACzB,GACJ,IAEA0iB,EAAG6igD,0BAA4BqB,IAAqBD,GAAQ,GAEhE,MACJ,IAAK,iBACDA,GAAQ,GACR,MACJ,QACI,KAAM,2BAElB,CAEA,SAASI,IACL,IAAI3//C,EAAW+6/C,EAAc/hhD,OAAO60B,SAASkE,MAM7C,GAJI/R,GACAhnB,OAAO0wF,QAAQwiV,aAAalza,OAAO0wF,QAAQjnF,MAAO,KAAMud,EAASi7/C,QAGjEj7/C,GAAYA,EAASs6G,MACrB,OAAOqh5C,IAAwBzjhD,MAAK,WAChCughD,EAAgBz4/C,EAAU8ja,EAC9B,IAAGhma,OAAM,SAAUllB,GACfkrb,EAAYm1lC,SAASrghD,EACzB,IAGAilhD,EAAY1p2C,OAAS0p2C,EAAYrE,cACjCG,EAASkE,EAAY1p2C,MAAO0p2C,EAAYrE,aAAcqE,EAAYpE,SAE9DvB,EAAYp+/C,OACZ6hgD,IAAwBzjhD,MAAK,WACzB8jhD,IAAmB9jhD,MAAK,SAAUqsyB,GAC1BA,GACAjpxB,EAAGy+/C,eAAiBz+/C,EAAGy+/C,gBACvBj2lC,EAAYo1lC,aACZK,KAEAz1lC,EAAYo1lC,YAEpB,IAAGp7/C,OAAM,SAAUllB,GACfkrb,EAAYm1lC,SAASrghD,EACzB,GACJ,IAEA0iB,EAAGskgD,aAAa,GAAG1nhD,MAAK,WACpBojB,EAAGy+/C,eAAiBz+/C,EAAGy+/C,gBACvBj2lC,EAAYo1lC,YAChB,IAAGp7/C,OAAM,SAASllB,GACd0iB,EAAG09/C,aAAe19/C,EAAG09/C,cACjB6E,EAAY/r4C,OACZA,IAEAgyS,EAAYm1lC,SAASrghD,EAE7B,KAEGilhD,EAAY/r4C,OACnBA,IAEAgyS,EAAYo1lC,YAEpB,CAaA,OAXAuF,EAAcvmhD,MAAK,YAw5BvB,WACI,IAAIulB,EAAUi+/C,IAEd,IAAKxD,EAAYp+/C,QAAUwB,EAAG6igD,4BAA8E,mBAAzC7igD,EAAG69/C,UAAUgG,wBAAwC,CACpH,IAAIvqkC,EAAS34c,SAASmE,cAAc,UACpCw0c,EAAOnhb,aAAa,MAAOnY,EAAG69/C,UAAUgG,2BACxCvqkC,EAAOnhb,aAAa,UAAW,2EAC/Bmhb,EAAOnhb,aAAa,QAAS,4BAC7Bmhb,EAAOzpc,MAAMC,QAAU,OACvBnP,SAAS4rB,KAAKxc,YAAYupc,GAE1B,IAAI8qkC,EAAkB,SAASnq/C,GACvBq/a,EAAOrpc,gBAAkBgqB,EAAM52B,SAIhB,cAAf42B,EAAMjvB,MAAuC,gBAAfivB,EAAMjvB,OAEd,gBAAfivB,EAAMjvB,OACb+xgD,EACI,0bAMJH,EAAYp+/C,QAAS,EACjBwB,EAAG8igD,yBACH9igD,EAAG6igD,2BAA4B,IAIvClihD,SAAS4rB,KAAK8L,YAAYihb,GAC1B57c,OAAOmnB,oBAAoB,UAAWu//C,GACtCjigD,EAAQy7/C,cACZ,EAEAlghD,OAAOyqB,iBAAiB,UAAWi8/C,GAAiB,EACxD,MACIjigD,EAAQy7/C,aAGZ,OAtJJ,SAA+Bz7/C,EAASyK,EAASumT,GAC7C,IAAIi9gC,EAAgB,KAChBm0L,EAAiB,IAAIpohD,SAAQ,SAAU2kB,EAASC,GAChDqv0C,EAAgB/u0C,YAAW,WACvBN,EAAO,CAAE,MAkJuD,4DAjJpE,GAAG6L,EACP,IAEA,OAAOzwB,QAAQwmB,KAAK,CAACR,EAASoigD,IAAiB9hgD,SAAQ,WACnDyF,aAAako0C,EACjB,GACJ,CA2IWo0L,CAAsBrigD,EAAQA,QAASnC,EAAGkjgD,sBACrD,EAl8BQuB,GACK7nhD,KAAKynhD,GACL7hgD,OAAM,SAAUllB,GACb6kB,EAAQw7/C,SAASrghD,EACrB,GACR,IACA6lhD,EAAc3ggD,OAAM,SAAUllB,GAC1B6kB,EAAQw7/C,SAASrghD,EACrB,IAEO6kB,EAAQA,OACnB,EAEAnC,EAAGu9/C,MAAQ,SAAU54/C,GACjB,OAAOgx5B,EAAQ4nmB,MAAM54/C,EACzB,EA+CA3E,EAAG4ggD,eAAiB5j/C,eAAerY,GAC/B,IAgBI8I,EAhBAtmB,EAAQq4gD,IACR1u/C,EAAQ0u/C,IAER1B,EAAcnomB,EAAQmomB,YAAYn5/C,GAElC+//C,EAAgB,CAChBv9gD,MAAOA,EACP2pB,MAAOA,EACPgt/C,YAAahz/C,mBAAmBgz/C,GAChCN,aAAc74/C,GAGdA,GAAWA,EAAQsT,SACnBys/C,EAAczs/C,OAAStT,EAAQsT,QAK/BxK,EADA9I,GAA6B,YAAlBA,EAAQmiD,OACT9mD,EAAG69/C,UAAUv36C,WAEbtmF,EAAG69/C,UAAU0C,YAG3B,IAAI32/C,EAAQjF,GAAWA,EAAQiF,OAAS5J,EAAG4J,MACtCA,GAGmC,IAA7BA,EAAM5tB,QAAQ,YAErB4tB,EAAQ,UAAYA,GAHpBA,EAAQ,SAMZ,IAzCI0F,EAyCA5D,EAAM+B,EACJ,cAAgB3C,mBAAmB9K,EAAG0P,UACtC,iBAAmB5E,mBAAmBgz/C,GACtC,UAAYhz/C,mBAAmB3jB,GAC/B,kBAAoB2jB,mBAAmB9K,EAAG8//C,cAC1C,kBAAoBh1/C,mBAAmB9K,EAAGysC,cAC1C,UAAY3hC,mBAAmBlB,GA6BrC,GA5BIkz/C,IACApx/C,EAAMA,EAAM,UAAYZ,mBAAmBgG,IAG3CnM,GAAWA,EAAQsT,SACnBvM,GAAO,WAAaZ,mBAAmBnG,EAAQsT,SAG/CtT,GAAqC,iBAAnBA,EAAQgggD,SAC1Bj5/C,GAAO,YAAcZ,mBAAmBnG,EAAQgggD,SAGhDhggD,GAAWA,EAAQiggD,YACnBl5/C,GAAO,eAAiBZ,mBAAmBnG,EAAQiggD,YAGnDjggD,GAAWA,EAAQkggD,UACnBn5/C,GAAO,gBAAkBZ,mBAAmBnG,EAAQkggD,UAGpDlggD,GAAWA,EAAQmiD,QAA4B,YAAlBniD,EAAQmiD,SACrCp7C,GAAO,cAAgBZ,mBAAmBnG,EAAQmiD,SAGlDniD,GAAWA,EAAQ0jb,SACnB38a,GAAO,eAAiBZ,mBAAmBnG,EAAQ0jb,SAGnD1jb,GAAWA,EAAQmggD,IAAK,CACxB,IAAIC,GA7EJz1/C,EAAS,CACTY,SAAU,CACN40/C,IA2EuCnggD,EAAQmggD,MAxEhDhvgD,KAAKb,UAAUqa,IAyElB5D,GAAO,WAAaZ,mBAAmBi6/C,EAC3C,CAMA,IAJKpggD,GAAWA,EAAQs+/C,WAAcjjgD,EAAGijgD,aACrCv3/C,GAAO,eAAiBZ,mBAAmBnG,EAAQs+/C,WAAajjgD,EAAGijgD,YAGnEjjgD,EAAG+igD,WACH,IACI,MAAMiC,EAhHlB,SAA8B3q5C,EAAKu8mC,GAG/B,IAFA,IAAIquS,EAbR,SAA4B5q5C,GACxB,GAAsB,oBAAXlwG,aAA4D,IAA3BA,OAAOM,gBAC/C,MAAM,IAAIzH,MAAM,oCAGpB,OAAOmH,OAAOM,gBAAgB,IAAItP,WAAWk/G,GACjD,CAOqB6q5C,CAAmB7q5C,GAChCgwpC,EAAQ,IAAIpvxC,MAAMo/H,GACbj+H,EAAI,EAAGA,EAAIi+H,EAAKj+H,IACrBiuxC,EAAMjuxC,GAAKw6uC,EAASriuC,WAAW0wgD,EAAW7ohD,GAAKw6uC,IAEnD,OAAOt7uC,OAAO4nB,aAAannB,MAAM,KAAMsuxC,EAC3C,CAVW86P,CAmH2C,GAnHjB,kEAoHnBC,QAxGlBpo/C,eAAqC+l/C,EAAYiC,GAC7C,GAAmB,SAAfjC,EACA,MAAM,IAAI1nhD,UAAU,4DAA4D0nhD,OAUpF,OA+3CR,SAAuBzh9C,GACnB,MAAM+j9C,EAAY/phD,OAAOsrP,iBAAiBtlL,GAC1C,OAAO32C,KAAK06/C,EAChB,CAv4C4BC,CADF,IAAInqgD,iBA84C9B6hB,eAA4BzP,GACxB,MACMviB,GADU,IAAIsZ,aACCjB,OAAOkK,GAE5B,GAAsB,oBAAXpD,aAAmD,IAAlBA,OAAOG,OAC/C,MAAM,IAAItH,MAAM,oCAGpB,aAAamH,OAAOG,OAAOU,OAAO,UAAWhgB,EACjD,CAv5C+Cu6gD,CAAaP,KAE/C/8gD,QAAQ,MAAO,KACfA,QAAQ,MAAO,KACfA,QAAQ,MAAO,GAGxB,CA2FwCu9gD,CAAsBxlgD,EAAG+igD,WAAYiC,GAEjEN,EAAc3G,iBAAmBiH,EAEjCt5/C,GAAO,mBAAqB05/C,EAC5B15/C,GAAO,0BAA4B1L,EAAG+igD,UAC1C,CAAE,MAAOzlhD,GACL,MAAM,IAAI0lB,MAAM,qCAAsC,CAAE8rB,MAAOxxC,GACnE,CAKJ,OAFAo/gD,EAAgB/7/C,IAAI+jgD,GAEbh5/C,CACX,EAEA1L,EAAG+X,OAAS,SAASpT,GACjB,OAAOgx5B,EAAQ594B,OAAOpT,EAC1B,EAEA3E,EAAG8ggD,gBAAkB,SAASn8/C,GAG1B,GAAqB,UADAA,GAASk8/C,cAAgB7ggD,EAAG6ggD,cAE7C,OAAO7ggD,EAAG69/C,UAAU9l/C,SAGxB,IAAIrM,EAAM1L,EAAG69/C,UAAU9l/C,SACjB,cAAgBjN,mBAAmB9K,EAAG0P,UACtC,6BAA+B5E,mBAAmB6q5B,EAAQmomB,YAAYn5/C,GAAS,IAMrF,OAJI3E,EAAGm+/C,UACHzy/C,GAAO,kBAAoBZ,mBAAmB9K,EAAGm+/C,UAG9Czy/C,CACX,EAEA1L,EAAGsmF,SAAW,SAAU3hF,GACpB,OAAOgx5B,EAAQrv0B,SAAS3hF,EAC5B,EAEA3E,EAAGihgD,kBAAoBjk/C,eAAerY,GAKlC,OAJKA,IACDA,EAAU,CAAC,GAEfA,EAAQmiD,OAAS,iBACJ9mD,EAAG4ggD,eAAej8/C,EACnC,EAEA3E,EAAGohgD,iBAAmB,SAASz8/C,GAC3B,IAAIu4/C,EAAQF,IACRtx/C,OAAM6d,EAOV,YANqB,IAAV2z+C,IACPxx/C,EAAMwx/C,uBAEWpy/C,mBAAmB9K,EAAG0P,UACrC,iBAAmB5E,mBAAmB6q5B,EAAQmomB,YAAYn5/C,KAEzD+G,CACX,EAEA1L,EAAGkhgD,kBAAoB,WACnB,OAAOvrmB,EAAQurmB,mBACnB,EAEAlhgD,EAAGylgD,aAAe,SAAUzngC,GACxB,IAAI0ngC,EAAS1lgD,EAAGi//C,YAChB,QAASyG,GAAUA,EAAOC,MAAM3phD,QAAQgihB,IAAS,CACrD,EAEAh+f,EAAG4lgD,gBAAkB,SAAS5ngC,EAAMrrb,GAChC,IAAK3yE,EAAGm//C,eACJ,OAAO,EAGX,IAAIuG,EAAS1lgD,EAAGm//C,eAAexs7C,GAAY3yE,EAAG0P,UAC9C,QAASg2/C,GAAUA,EAAOC,MAAM3phD,QAAQgihB,IAAS,CACrD,EAEAh+f,EAAG6lgD,gBAAkB,WACjB,IAAIn6/C,EAAMsx/C,IAAgB,WACtB5okC,EAAM,IAAIvwb,eACduwb,EAAIlkc,KAAK,MAAOwb,GAAK,GACrB0ob,EAAI9nb,iBAAiB,SAAU,oBAC/B8nb,EAAI9nb,iBAAiB,gBAAiB,UAAYtM,EAAG64J,OAErD,IAAI12J,EAAUi+/C,IAed,OAbAhskC,EAAI6mM,mBAAqB,WACC,GAAlB7mM,EAAI5na,aACc,KAAd4na,EAAInzb,QACJjB,EAAG8lgD,QAAUhwgD,KAAKiS,MAAMqsb,EAAIrwb,cAC5B5B,EAAQy7/C,WAAW59/C,EAAG8lgD,UAEtB3jgD,EAAQw7/C,WAGpB,EAEAvpkC,EAAItwb,OAEG3B,EAAQA,OACnB,EAEAnC,EAAG+lgD,aAAe,WACd,IAAIr6/C,EAAM1L,EAAG69/C,UAAU8F,WACnBvvkC,EAAM,IAAIvwb,eACduwb,EAAIlkc,KAAK,MAAOwb,GAAK,GACrB0ob,EAAI9nb,iBAAiB,SAAU,oBAC/B8nb,EAAI9nb,iBAAiB,gBAAiB,UAAYtM,EAAG64J,OAErD,IAAI12J,EAAUi+/C,IAed,OAbAhskC,EAAI6mM,mBAAqB,WACC,GAAlB7mM,EAAI5na,aACc,KAAd4na,EAAInzb,QACJjB,EAAGgmgD,SAAWlwgD,KAAKiS,MAAMqsb,EAAIrwb,cAC7B5B,EAAQy7/C,WAAW59/C,EAAGgmgD,WAEtB7jgD,EAAQw7/C,WAGpB,EAEAvpkC,EAAItwb,OAEG3B,EAAQA,OACnB,EAEAnC,EAAGimgD,eAAiB,SAASC,GACzB,IAAKlmgD,EAAG8+/C,cAAiB9+/C,EAAGk+/C,cAA2B,YAAXl+/C,EAAG4vwC,KAC3C,KAAM,oBAGV,GAAmB,MAAf5vwC,EAAGq//C,SAEH,OADAxrsC,EAAQ,8EACD,EAGX,IAAI0rsC,EAAYv//C,EAAG8+/C,YAAiB,IAAIzghD,KAAKuK,MAAK,IAAIoe,MAAOic,UAAY,KAAQjjB,EAAGq//C,SACpF,GAAI6G,EAAa,CACb,GAAIp++C,MAAMo++C,GACN,KAAM,sBAEV3G,GAAa2G,CACjB,CACA,OAAO3G,EAAY,CACvB,EAEAv//C,EAAGskgD,YAAc,SAAS4B,GACtB,IAAI/jgD,EAAUi+/C,IAEd,IAAKpggD,EAAGk+/C,aAEJ,OADA/7/C,EAAQw7/C,WACDx7/C,EAAQA,QAGnB+jgD,EAAcA,GAAe,EAE7B,IAAIt4gD,EAAO,WACP,IAAIswgD,GAAe,EASnB,IARoB,GAAhBgI,GACAhI,GAAe,EACfrqsC,EAAQ,gDACA7zT,EAAG8+/C,cAAe9+/C,EAAGimgD,eAAeC,KAC5ChI,GAAe,EACfrqsC,EAAQ,+CAGPqqsC,EAEE,CACH,IAAIr6+C,EAAS,0CAAiD7jB,EAAGk+/C,aAC7Dxy/C,EAAM1L,EAAG69/C,UAAUhl2C,QAIvB,GAFA8j2C,EAAat/gD,KAAK8kB,GAES,GAAvBw6/C,EAAa9ghD,OAAa,CAC1B,IAAIu4c,EAAM,IAAIvwb,eACduwb,EAAIlkc,KAAK,OAAQwb,GAAK,GACtB0ob,EAAI9nb,iBAAiB,eAAgB,qCACrC8nb,EAAIhob,iBAAkB,EAEtByX,GAAU,cAAgB/Y,mBAAmB9K,EAAG0P,UAEhD,IAAI2t/C,GAAY,IAAIr2/C,MAAOic,UAE3Bmxa,EAAI6mM,mBAAqB,WACrB,GAAsB,GAAlB7mM,EAAI5na,WACJ,GAAkB,KAAd4na,EAAInzb,OAAe,CACnB4yT,EAAQ,8BAERwpsC,GAAaA,GAAY,IAAIr2/C,MAAOic,WAAa,EAEjD,IAAI+6+C,EAAgBlogD,KAAKiS,MAAMqsb,EAAIrwb,cAEnCs6/C,EAASL,EAA4B,aAAGA,EAA6B,cAAGA,EAAwB,SAAGX,GAEnGr9/C,EAAGmmgD,sBAAwBnmgD,EAAGmmgD,uBAC9B,IAAK,IAAI7nhD,EAAIq+gD,EAAav/gD,MAAY,MAALkB,EAAWA,EAAIq+gD,EAAav/gD,MACzDkB,EAAEs/gD,YAAW,EAErB,MAQI,IAPAb,EAAQ,sCAEU,KAAd3okC,EAAInzb,QACJjB,EAAGw+/C,aAGPx+/C,EAAGomgD,oBAAsBpmgD,EAAGomgD,qBACnB9nhD,EAAIq+gD,EAAav/gD,MAAY,MAALkB,EAAWA,EAAIq+gD,EAAav/gD,MACzDkB,EAAEq/gD,SAAS,oGAI3B,EAEAvpkC,EAAItwb,KAAK+f,EACb,CACJ,MAjDI1hB,EAAQy7/C,YAAW,EAkD3B,EAaA,OAXIhB,EAAYp+/C,OACQkigD,IACN9jhD,MAAK,WACfgR,GACJ,IAAG4U,OAAM,SAASllB,GACd6kB,EAAQw7/C,SAASrghD,EACrB,IAEAsQ,IAGGuU,EAAQA,OACnB,EAEAnC,EAAGw+/C,WAAa,WACRx+/C,EAAG64J,QACHwl2C,EAAS,KAAM,KAAM,MACrBr+/C,EAAGqmgD,cAAgBrmgD,EAAGqmgD,eAClBrmgD,EAAG4igD,eACH5igD,EAAGu9/C,QAGf,EAs3BA,MAAM+I,EAAqB,eAE3B,IAAIh3oC,EAAe,WACf,KAAM9zY,gBAAgB8zY,GAClB,OAAO,IAAIA,EAWf,SAASi3oC,IACL,MAAM921C,EAAczoK,KAAKC,MAEzB,IAAK,MAAO5G,EAAK1jB,KAAU6phD,IAAoB,CAE3C,MAAMvy0B,EAASwy0B,EAAY9phD,IAGZ,OAAXs3sB,GAAmBA,EAASxkhB,IAC5BjoK,aAAae,WAAWlI,EAEhC,CACJ,CAeA,SAASmmgD,IACL,OAAO1rhD,OAAOmd,QAAQuP,cAAca,QAAO,EAAEhI,KAASA,EAAI1T,WAAW25gD,IACzE,CAOA,SAASG,EAAY9phD,GACjB,IAAI+phD,EAGJ,IACIA,EAAc5wgD,KAAKiS,MAAMprB,EAC7B,CAAE,MAAOW,GACL,OAAO,IACX,CAGA,OAAImjQ,EAASimxC,IAAgB,YAAaA,GAA8C,iBAAxBA,EAAYj1/C,QACjEi1/C,EAAYj1/C,QAGhB,IACX,CA5DAjK,aAAaE,QAAQ,UAAW,QAChCF,aAAae,WAAW,WAEf/sB,KA2DNmD,IAAM,SAASwI,GACd,GAAKA,EAAL,CAIA,IAAIkZ,EAAMimgD,EAAqBn/gD,EAC3BxK,EAAQ6qB,aAAaC,QAAQpH,GAOjC,OANI1jB,IACA6qB,aAAae,WAAWlI,GACxB1jB,EAAQmZ,KAAKiS,MAAMprB,IAGvB4phD,IACO5phD,CAVP,CAWJ,EAzESnB,KA2ENmlB,IAAM,SAASxZ,GACdo/gD,IAEA,MAAMlmgD,EAAMimgD,EAAqBn/gD,EAAMA,MACjCxK,EAAQmZ,KAAKb,UAAU,IACtB9N,EAEHsqB,QAASzK,KAAKC,MAAQ,OAG1B,IACIO,aAAaE,QAAQrH,EAAK1jB,EAC9B,CAAE,MAAOW,IAjEb,WACI,IAAK,MAAO+iB,KAAQmmgD,IAChBh//C,aAAae,WAAWlI,EAEhC,CA+DQsmgD,GACAn//C,aAAaE,QAAQrH,EAAK1jB,EAC9B,CACJ,CACJ,EAEI6lhD,EAAgB,WAChB,KAAMhnhD,gBAAgBgnhD,GAClB,OAAO,IAAIA,EAGf,IAAIj1gC,EAAK/xgB,KAET+xgB,EAAG5ugB,IAAM,SAASwI,GACd,GAAKA,EAAL,CAIA,IAAIxK,EAAQkxD,EAAUy49C,EAAqBn/gD,GAE3C,OADAqmD,EAAU849C,EAAqBn/gD,EAAO,GAAI2hyC,GAAkB,MACxDnsyC,EACOmZ,KAAKiS,MAAMprB,QADtB,CAJA,CAOJ,EAEA4wgB,EAAG5sf,IAAM,SAASxZ,GACdqmD,EAAU849C,EAAqBn/gD,EAAMA,MAAO2O,KAAKb,UAAU9N,GAAQ2hyC,EAAiB,IACxF,EAEAv7xB,EAAGhlf,WAAa,SAASlI,GACrBmtC,EAAUntC,EAAK,GAAIyoxC,GAAkB,KACzC,EAEA,IAAIA,EAAmB,SAAUzjxB,GAC7B,IAAI91f,EAAM,IAAIvI,KAEd,OADAuI,EAAIm+B,QAAQn+B,EAAI0T,UAAqB,GAARoif,EAAW,KACjC91f,CACX,EAEIs+B,EAAY,SAAUxtC,GAGtB,IAFA,IAAIna,EAAOma,EAAM,IACbkL,EAAK5qB,SAASqxB,OAAO5xB,MAAM,KACtBhE,EAAI,EAAGA,EAAImvB,EAAG1vB,OAAQO,IAAK,CAEhC,IADA,IAAIC,EAAIkvB,EAAGnvB,GACW,KAAfC,EAAEgY,OAAO,IACZhY,EAAIA,EAAEy2B,UAAU,GAEpB,GAAuB,GAAnBz2B,EAAEL,QAAQkK,GACV,OAAO7J,EAAEy2B,UAAU5sB,EAAKrK,OAAQQ,EAAER,OAE1C,CACA,MAAO,EACX,EAEI2xD,EAAY,SAAUntC,EAAK1jB,EAAOiqhD,GAClC,IAAI50/C,EAAS3R,EAAM,IAAM1jB,EAAZ0jB,aACMumgD,EAAeh1/C,cAAgB,KAClDjxB,SAASqxB,OAASA,CACtB,CACJ,EAWA,SAASi8C,EAAavhE,GAClB,OAAO,WACCsT,EAAGgjgD,eACHt2gD,EAAG3Q,MAAM8mB,QAAS5nB,MAAMC,UAAUqC,MAAMnC,KAAKQ,WAErD,CACJ,CACJ,EA+BA,SAASijhD,EAAYhm2C,GACjB,MAAOxoJ,EAAQC,GAAWuoJ,EAAMz4K,MAAM,KAEtC,GAAuB,iBAAZkwB,EACP,MAAM,IAAItN,MAAM,8CAGpB,IAAI+guC,EAEJ,IACIA,EAeR,SAAyB93rC,GACrB,IAAI2Y,EAAS3Y,EACR469C,WAAW,IAAK,KAChBA,WAAW,IAAK,KAErB,OAAQji9C,EAAO/oE,OAAS,GACpB,KAAK,EACD,MACJ,KAAK,EACD+oE,GAAU,KACV,MACJ,KAAK,EACDA,GAAU,IACV,MACJ,QACI,MAAM,IAAI5hD,MAAM,uCAGxB,IACI,OASR,SAA0BipC,GACtB,OAAO7gC,mBAAmBC,KAAK4gC,GAAOhkD,QAAQ,QAAQ,CAACrJ,EAAGN,KACtD,IAAIo4B,EAAOp4B,EAAEiW,WAAW,GAAGxU,SAAS,IAAIqsD,cAMxC,OAJI11B,EAAK76B,OAAS,IACd66B,EAAO,IAAMA,GAGV,IAAMA,CAAI,IAEzB,CAnBeow/C,CAAiBli9C,EAC5B,CAAE,MAAOtnE,GACL,OAAO+tB,KAAKu5C,EAChB,CACJ,CAtCkBmi9C,CAAgBz2/C,EAC9B,CAAE,MAAOhzB,GACL,MAAM,IAAI0lB,MAAM,kEAAmE,CAAE8rB,MAAOxxC,GAChG,CAEA,IACI,OAAOwY,KAAKiS,MAAMg8tC,EACtB,CAAE,MAAOzmvC,GACL,MAAM,IAAI0lB,MAAM,6DAA8D,CAAE8rB,MAAOxxC,GAC3F,CACJ,CAiDA,SAASmjQ,EAASx0M,GACd,MAAwB,iBAAVA,GAAgC,OAAVA,CACxC,kDCh1DA,MAGM+69C,EAAQ,CAACC,EAAWtp+C,EAAQsne,KAChC,MAAOC,EAAOngT,GAAQkizC,EAAU7mhD,MAAM,MAC/B+khB,EAAKqvO,GAAQzvhB,EAAK3kO,MAAM,KAC/B,OAAO4mB,KAAKkZ,IAAI+kf,EAAMC,EAAQ,EAAGC,EAAKqvO,GANnB,KAM2B72sB,CAASup+C,EAYzD,EARqB,CAACC,EAAOnl/C,EAAOC,EAAKml/C,EAAcC,KACrD,MAAMpigC,EAAO,IAAIj+f,KAAKmggD,GAAOhn/C,iBACvBmn/C,EAAWN,EAAMhl/C,EAAOql/C,EAAcpigC,GACtCsigC,EAASP,EAAM/k/C,EAAKml/C,EAAcnigC,GAExC,OAAOkigC,GAASG,GAAYH,EAAQI,GCftC,GACE,MAAO,oBACP,MAAO,8EACP,2BAA4B,gDAC5B,QAAS,mBACT,yBAA0B,WAC1B,MAAO,iFACP,MAAO,kLACP,SAAU,UACV,MAAO,iCACP,MAAO,4IACP,MAAO,YACP,MAAO,kHACP,QAAS,6BACT,MAAO,wBACP,MAAO,iIACP,SAAU,yBACV,QAAS,iCACT,MAAO,YACP,MAAO,oIACP,QAAS,UACT,MAAO,0BACP,yBAA0B,kBAC1B,yBAA0B,2JAC1B,yBAA0B,wBAC1B,yBAA0B,WAC1B,yBAA0B,gCAC1B,MAAO,uQACP,QAAS,gBACT,yBAA0B,WAC1B,MAAO,uFACP,yBAA0B,gBAC1B,yBAA0B,oXAC1B,MAAO,2EACP,MAAO,+CACP,yBAA0B,0IAC1B,yBAA0B,0BAC1B,MAAO,qGACP,OAAQ,gBACR,OAAQ,uBACR,OAAQ,oCACR,0BAA2B,0CAC3B,OAAQ,UACR,OAAQ,yHACR,6BAA8B,qBAC9B,0BAA2B,eAC3B,OAAQ,kBACR,OAAQ,wFACR,4BAA6B,aAC7B,0BAA2B,sFAC3B,OAAQ,uEACR,OAAQ,qEACR,4BAA6B,oBAC7B,yBAA0B,0BAC1B,MAAO,0TACP,0BAA2B,4BAC3B,OAAQ,aACR,SAAU,eACV,0BAA2B,uEAC3B,OAAQ,cACR,0BAA2B,iHAC3B,OAAQ,mIACR,0BAA2B,2BAC3B,0BAA2B,uJAC3B,OAAQ,8NACR,OAAQ,0CACR,0BAA2B,gPAC3B,OAAQ,8GACR,0BAA2B,2BAC3B,0BAA2B,aAC3B,OAAQ,mDACR,0BAA2B,kZAC3B,0BAA2B,gBAC3B,OAAQ,mVACR,OAAQ,mdACR,0BAA2B,2EAC3B,OAAQ,kFACR,0BAA2B,mBAC3B,0BAA2B,aAC3B,OAAQ,wCACR,4BAA6B,4BAC7B,OAAQ,eACR,QAAS,mDACT,QAAS,gEClFX,GACE,SACA,UACA,OACA,WACA,YACA,SACA,SACA,QACA,SACA,SACA,SACA,UACA,aACA,OCZF,IAAI,EAAM,CAAC,EACXzshD,OAAOgU,KAAK,GAAM4R,SAASxhB,IACzB,IAAIkB,EAAQlB,EAAEkB,MAAM,KAChBsoN,EAAM,CACR/qK,OAAQhd,OAAOvgC,EAAM,IACrBonhD,IAAKpnhD,EAAM,IAETA,EAAM,KACRsoN,EAAImnH,IAAMzvU,EAAM,IAEN,EAAKlB,GAAGkB,MAAM,KACpBsgB,SAASyxD,IACbA,EAAMA,EAAIlqE,QAAQ,eAAe,CAAC8tP,EAAQr3M,KACxCA,EAAM/d,OAAO+d,GACN,EAASA,GAAO,OAEzB,EAAIyzB,GAAOu2I,IACZ,IAGH,EAAIgsiB,IAAM,CACR/2sB,OAAQ,EACR6p+C,IAAK,KAIP,IAAK,IAAIprhD,GAAK,GAAIA,GAAK,GAAIA,GAAK,GAAK,CACnC,IAAIsiD,EAAMtiD,EACNsiD,EAAM,IACRA,EAAM,IAAMA,GAEd,IAAIx4C,EAAO,UAAYw4C,EACvB,EAAIx4C,GAAQ,CACVy3C,QAAa,EAALvhD,EACRorhD,IAAK,KAEPthhD,EAAO,UAAYw4C,EACnB,EAAIx4C,GAAQ,CACVy3C,QAAa,EAALvhD,EACRorhD,IAAK,IAET,CAEA,UC9CMC,EAAW,qBACX3o+C,EAAW,cACX4o+C,EAAY,qBACZC,EAAY,qBAEZC,EAAS,SAAUlp+C,GAEvB,OADAA,EAAM/d,OAAO+d,MACD,IAAMA,GAAO,GAGhB,WADPA,IADAA,IAAa,GACA,EAAI,IAAM,IAAMA,GAGxB,IACT,ECTA,IAAI4v6B,ECiBY,MACd,IAAI9yL,EAhBW,MACf,GAAoB,oBAATu3H,WAAuD,IAAxBA,KAAKC,eAC7C,OAAO,KAET,IAAIty1B,EAASqy1B,KAAKC,iBAClB,QAAsB,IAAXty1B,QAA4D,IAA3BA,EAAOu5D,gBACjD,OAAO,KAET,IAAIuhqB,EAAW96tB,EAAOu5D,kBAAkBm+4C,SACxC,OAAK58uB,EAGEA,EAASzwxB,cAFP,IAEmB,EAIb88gD,GACf,OAAiB,OAAbrsvB,EApBa,MAuBVA,GDtBG,GAGZ,MAAMssvB,EAAShthD,OAAOgU,KAAK,GAAKogB,QAAO,CAAC9wB,EAAGc,KACzC,IAAI6ohD,EAAO7ohD,EAAEkB,MAAM,KAAK,IAAM,GAG9B,OAFA2nhD,EAAOA,EAAK9/gD,QAAQ,KAAM,KAC1B7J,EAAE2phD,GAAQ7ohD,EACHd,IACN,CAAC,GAyDJ,EA3CiB,CAAC+zE,EAAKgrf,KACrB,IAAKhrf,EAMH,OAJKgrf,EAAMhikB,eAAemz9B,KACxBzr8B,QAAQC,KAAK,yBAAyBwr8B,mCACtCA,EAAQ,OAEHA,EAEU,iBAARn84B,GACTtvD,QAAQvlB,MAAM,0CAA2C60E,EAAK,OAEhE,IAAI618C,EAAK718C,EAAItkD,OAOb,GADAm6/C,EAAKA,EAAGj9gD,eACyB,IAA7BoyjB,EAAMhikB,eAAe6shD,GACvB,OAAOA,EAIT,GADAA,EAlCgB,CAACA,IAKjBA,GADAA,GADAA,GADAA,GADAA,EAAKA,EAAG//gD,QAAQ,SAAU,KAClBA,QAAQ,+BAAgC,KACxCA,QAAQ,gCAAiC,OACzCA,QAAQ,iCAAkC,OAC1CA,QAAQ,cAAe,WACvBA,QAAQ,YAAa,UA4BxB6C,CAAUk9gD,IACkB,IAA7B7q9B,EAAMhikB,eAAe6shD,GACvB,OAAOA,EAGT,IAAkC,IAA9BF,EAAO3shD,eAAe6shD,GACxB,OAAOF,EAAOE,GAGhB,IAAyB,IAArB,QAAQnhhD,KAAKmhhD,GAAc,CAC7B,IAAIjhgD,ED5CY,SAAUihgD,GAE5B,IAAIpphD,EAAIophD,EAAG/lhD,MAAMwlhD,GACjB,GAAU,OAAN7ohD,EACF,OAAOgphD,EAAOhphD,EAAE,IAIlB,GADAA,EAAIophD,EAAG/lhD,MAAMylhD,GACH,OAAN9ohD,EACF,OAAOgphD,EAAOhphD,EAAE,IAIlB,GADAA,EAAIophD,EAAG/lhD,MAAM0lhD,GACH,OAAN/ohD,EAAY,CACd,IAAI8/C,GAAsB,EAAhB/d,OAAO/hC,EAAE,IACnB,OAAOgphD,EAAOlp+C,EAChB,CAGA,OADA9/C,EAAIophD,EAAG/lhD,MAAM68C,GACH,OAANlgD,EACKgphD,EAAOhphD,EAAE,IAEX,IACT,CCqBa,CAAYophD,GACrB,GAAIjhgD,EACF,OAAOA,CAEX,CAEA,MAAM,IAAI/D,MACR,2CAA6CmvD,EAAM,uCACrD,EElEK,SAASip8C,EAAWn2/B,GAAQ,OAAQA,EAAO,GAAM,GAAKA,EAAO,KAAQ,GAAMA,EAAO,KAAQ,CAAE,CAE5F,SAASp1Q,EAAO1xQ,GAAK,MAA6C,kBAAtCrD,OAAOI,UAAU6E,SAAS3E,KAAK+C,KAA2B2pC,MAAM3pC,EAAEuG,UAAW,CAEzG,SAAS+7P,EAASx0M,GAAS,MAAiD,oBAA1CnxD,OAAOI,UAAU6E,SAAS3E,KAAK6wD,EAA6B,CAG9F,SAAS8jsC,EAAQ59qC,EAAKkoD,EAAM,GAGjC,OADAloD,GAAY,IACDt2E,QAAUw+H,EAAMloD,EAAM,IAAIl3E,MAAMo/H,EAAMloD,EAAIt2E,OAAS,GAAGwM,KAFvD,KAEmE8pE,CAC/E,CASO,SAAS8q+B,EAAQ7gjC,GACtB,IAAIwD,EAAIxD,EAAI,GACR8C,EAAI9C,EAAI,IACZ,OAAU,IAANwD,GAAiB,KAANV,EACN9C,EAAI,KAEH,IAANwD,GAAiB,KAANV,EACN9C,EAAI,KAEH,IAANwD,GAAiB,KAANV,EACN9C,EAAI,KAENA,EAAI,IACb,CAGO,SAAS6rhD,EAAW918C,GAGzB,OADAA,GADAA,EAAM72E,OAAO62E,IACHlqE,QAAQ,yBAA0B,MACrCkpB,SAASghD,EAAK,GACvB,CAGO,SAAS,EAAUA,EAAM,IAK9B,MAAY,SADZA,GADAA,GADAA,GADAA,EAAMA,EAAIpnE,cAAc8iB,QACd5lB,QAAQ,OAAQ,MAChBA,QAAQ,KAAM,KACdA,QAAQ,KAAM,MACK,SAARkqE,EACZ,OAEG,QAARA,GAAyB,SAARA,EACZ,SAEFA,CACT,CAEO,SAAS+18C,EAAS9orC,GAEvB,MAAmB,iBAARA,EACFA,EAGLvvF,EAAOuvF,GACFA,EAAIn8T,UAETm8T,EAAI+nrC,MACC/nrC,EAAI+nrC,MAEN,IACT,CAGO,SAASgB,EAAQhqhD,EAAG7B,GACzB,OAAoB,IAAhBmkQ,EAAStiQ,GACJ7B,EAAEyvB,QAAQtkB,IAAItJ,GAEhBA,CACT,CAEO,SAASsw7B,EAAe9w4B,EAAQ85M,EAAY,IACjD,MAAM3hE,EAAOn4I,EAAS,EAAI,IAAM,IAC1B4w4B,EAAYlw7B,KAAKmjH,IAAI7jE,GAG3B,MAAO,GAAGm4I,IAFIi6jC,EAAQ5+tC,SAAS,GAAKo95B,EAAW,OAEtB92rB,IADTs4/B,EAASxhU,EAAY,EAAK,KAE5C,CCvFA,MAAM/hnB,EAAW,CACfy4M,MAAM,IAAIj+f,MAAOy8f,cACjByB,MAAO,EACPr0e,KAAM,GAsDR,GACEu3+C,WAnDiB,CAAC9rhD,EAAG29N,EAAKsguB,KAC1B,GAAmB,IAAftguB,EAAIp+N,OACN,OAAOS,EAET,IAAImyI,EAAQ,CAAC,OAAQ,QAAS,OAAQ,OAAQ,SAAU,SAAU,eAClE,IAAK,IAAIryI,EAAI,EAAGA,EAAIqyI,EAAM5yI,OAAQO,IAAK,CACrC,IAAIsiD,EAAMu7K,EAAI79N,IAAMm+7B,EAAM9rzB,EAAMryI,KAAOowU,EAAS/9L,EAAMryI,KAAO,EAC7DE,EAAIA,EAAEmyI,EAAMryI,IAAIsiD,EAClB,CACA,OAAOpiD,GA2CP+rhD,YAvCkB,CAAC/rhD,EAAGosN,EAAK6xuB,KAE3B,GAAgC,IAA5Bz/7B,OAAOgU,KAAK45M,GAAK7sN,OACnB,OAAOS,EAETosN,EAAM5tN,OAAOa,OAAO,CAAC,EAAG6wU,EAAU+tnB,EAAO7xuB,GACzC,IAAI55M,EAAOhU,OAAOgU,KAAK45M,GACvB,IAAK,IAAItsN,EAAI,EAAGA,EAAI0S,EAAKjT,OAAQO,IAAK,CACpC,IAAI27W,EAAOjpW,EAAK1S,GAEhB,QAAgBmtC,IAAZjtC,EAAEy7W,IAA0C,mBAAZz7W,EAAEy7W,GACpC,SAGF,GAAkB,OAAdrvJ,EAAIqvJ,SAAgCxuU,IAAdm/K,EAAIqvJ,IAAqC,KAAdrvJ,EAAIqvJ,GACvD,SAEF,IAAIr5T,EAAMgqK,EAAIqvJ,IAASwilB,EAAMxilB,IAASvrC,EAASurC,IAAS,EACxDz7W,EAAIA,EAAEy7W,GAAMr5T,EACd,CACA,OAAOpiD,GAoBPgshD,YAfkB,SAAUhshD,EAAG2vD,GAS/B,OALIA,EAAQ,GAAKA,EAHI,OAGiC,IAAb3vD,EAAEsze,SACzC/sd,QAAQC,KAAK,0DACbD,QAAQC,KAAK,0DAEfxmB,EAAE6qhD,MAAQl79C,EACH3vD,CACT,GCtDMishD,EAAS,SAAUjshD,GAOvB,OANAA,EAAE6qhD,MAAQnggD,KAAKC,MACfnsB,OAAOgU,KAAKxS,EAAEkshD,QAAU,CAAC,GAAG9ngD,SAASxhB,IACf,mBAAT5C,EAAE4C,KACX5C,EAAIA,EAAE4C,GAAG5C,EAAEkshD,OAAOtphD,IACpB,IAEK5C,CACT,EAEMyyH,EAAQ,CACZ9nG,IAAM3qB,GACGishD,EAAOjshD,GAEhBi+7B,MAAQj+7B,GACCishD,EAAOjshD,GAEhBmshD,QAAUnshD,IACRA,EAAIishD,EAAOjshD,IACLk4vB,KAAK,IAGbgmM,SAAWl+7B,IAETA,GADAA,EAAIishD,EAAOjshD,IACLqkB,IAAI,EAAG,QACP+ngD,QAAQ,OAGhBpulB,UAAYh+7B,IAEVA,GADAA,EAAIishD,EAAOjshD,IACLshL,SAAS,EAAG,QACZ8q2C,QAAQ,OAGhBC,UAAYrshD,IACV,IAAI2ohB,EAAOsjgC,EAAOjshD,GAAG2ohB,OAErB,OADI3ohB,EAAEmL,IAAI,CAACw9gB,EAAM,GAAI,GAAI,GAAI,EAAG,GACzB3ohB,EAET,YAAcA,IACZ,IAAI2ohB,EAAOsjgC,EAAOjshD,GAAG2ohB,OAErB,OADI3ohB,EAAEmL,IAAI,CAACw9gB,EAAM,GAAI,GAAI,GAAI,EAAG,GACzB3ohB,GAGXyyH,EAAM,iBAAmBA,EAAM,aAC/B,UC/CA,IAAIjzH,EAAI,CACNw3vB,YAAa,EAEfx3vB,OAAW,IACXA,OAAW,IACXA,KAAS,KACTA,IAAQ,OACRA,EAAE+0C,KAAO/0C,EAAEqphB,IACXrphB,EAAEophB,MAAQ,QACVpphB,EAAE2hyB,KAAO,OACT3hyB,EAAEmphB,KAAO,OAETnqhB,OAAOgU,KAAKhT,GAAG4kB,SAAQxhB,IACrBpD,EAAEoD,EAAI,KAAOpD,EAAEoD,EAAC,IAElB,UCZM0phD,EAAO,CAACtshD,EAAGzB,EAAG6R,EAAIqrW,EAAMz3V,KAC5B,IAAIib,EAAUj/B,EAAE6B,EAAEuO,KAClB,GAAI6uB,IAAY1gC,EACd,OAEF,IAAIguhD,EAAyB,OAAbvogD,EAAoB,KAAOhkB,EAAE6B,EAAEmiB,KAC3C8zB,EAAW93C,EAAE6qhD,MAEbpj/B,EAAOlpiB,EAAI0gC,EACfj/B,EAAE6qhD,OAAS,EAAGpvqC,GAAQgsL,EAGT,QAAThsL,GAGE15W,KAAKmjH,IAAIuib,GAAQ,IAAMlpiB,EAAI,KAC7ByB,EAAE6qhD,OAAS,EAAG3yxB,MAID,OAAbl0uB,GAAqBuogD,IAAcvshD,EAAE6B,EAAEmiB,OAEzChkB,EAAE6qhD,MAAQ/y+C,GAKZ,MAAM00+C,EAAW,EAAG/wqC,GAAQ,EAC5B,KAAOz7W,EAAE6B,EAAEuO,KAAQ7R,GACjByB,EAAE6qhD,OAAS2B,EAGb,KAAOxshD,EAAE6B,EAAEuO,KAAQ7R,GACjByB,EAAE6qhD,OAAS2B,EAGI,OAAbxogD,GAAqBuogD,IAAcvshD,EAAE6B,EAAEmiB,OAEzChkB,EAAE6qhD,MAAQ/y+C,EACZ,EAGIy6H,EAAQ,CACZo2W,KAAM,CACJjmZ,MAAQnkI,GAAMA,GAAK,KAAQA,EAAI,IAC/BkuhD,OAAQ,CAACzshD,EAAGzB,IAAM+thD,EAAKtshD,EAAGzB,EAAG,cAAe,OAAQ,OAEtDqqhB,MAAO,CACLlmZ,MAAQnkI,GAAMA,GAAK,GAAKA,GAAK,GAC7BkuhD,OAAQ,CAACzshD,EAAGzB,KACV,IAAIsD,EAAI7B,EAAE6B,EACNo9B,EAAUp9B,EAAEulhB,WACZtve,EAAW93C,EAAE6qhD,MACb0B,EAAY1qhD,EAAEslhB,cAClB,GAAIlof,IAAY1gC,EACd,OAGF,IAAIkpiB,EAAOlpiB,EAAI0gC,EAOf,IANAj/B,EAAE6qhD,OAAS,EAAGhigC,KAAc,GAAP4e,GAEjB8k/B,IAAcvshD,EAAE6B,EAAEslhB,gBACpBnnhB,EAAE6qhD,MAAQ/y+C,GAGL93C,EAAE6B,EAAEulhB,WAAa7ohB,GACtByB,EAAE6qhD,OAAS,EAAGhigC,IAEhB,KAAO7ohB,EAAE6B,EAAEulhB,WAAa7ohB,GACtByB,EAAE6qhD,OAAS,EAAGhigC,GAChB,GAGJt0e,KAAM,CACJmuF,MAAQnkI,GAAMA,EAAI,GAAKA,GAAK,GAC5BkuhD,OAAQ,CAACzshD,EAAGzB,IAAM+thD,EAAKtshD,EAAGzB,EAAG,UAAW,MAAO,aAEjD25vB,KAAM,CACJx1nB,MAAQnkI,GAAMA,GAAK,GAAKA,EAAI,GAC5BkuhD,OAAQ,CAACzshD,EAAGzB,IAAM+thD,EAAKtshD,EAAGzB,EAAG,WAAY,OAAQ,YAEnDw5vB,OAAQ,CACNr1nB,MAAQnkI,GAAMA,GAAK,GAAKA,EAAI,GAC5BkuhD,OAAQ,CAACzshD,EAAGzB,IAAM+thD,EAAKtshD,EAAGzB,EAAG,aAAc,SAAU,aAEvDm2F,OAAQ,CACNguC,MAAQnkI,GAAMA,GAAK,GAAKA,EAAI,GAC5BkuhD,OAAQ,CAACzshD,EAAGzB,KAEVyB,EAAE6qhD,MAAQ7qhD,EAAEgphB,QAAQzqhB,GAAGsshD,QAG3B7zxB,YAAa,CACXt0nB,MAAQnkI,GAAMA,GAAK,GAAKA,EAAI,IAC5BkuhD,OAAQ,CAACzshD,EAAGzB,KAEVyB,EAAE6qhD,MAAQ7qhD,EAAE00W,aAAan2W,GAAGsshD,SA8BlC,EAzBe,CAAC7qhD,EAAG0shD,KACjB,IAAIl6gD,EAAOhU,OAAOgU,KAAK+/J,GACnBymK,EAAMh5U,EAAEyvB,QACZ,IAAK,IAAI3vB,EAAI,EAAGA,EAAI0S,EAAKjT,OAAQO,IAAK,CACpC,IAAI8C,EAAI4P,EAAK1S,GACTvB,EAAImuhD,EAAM9phD,GAQd,QAPUqqC,IAAN1uC,IACFA,EAAIy6U,EAAIp2U,MAEO,iBAANrE,IACTA,EAAIs2B,SAASt2B,EAAG,MAGbg0K,EAAM3vK,GAAG8/H,MAAMnkI,GAKlB,OAJAyB,EAAE6qhD,MAAQ,WACO,IAAb7qhD,EAAEsze,QACJ/sd,QAAQC,KAAK,WAAa5jB,EAAI,KAAOrE,IAIzCg0K,EAAM3vK,GAAG6phD,OAAOzshD,EAAGzB,EACrB,CACA,EChHF,EAdqB,CACnB,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,ICZF,IAAI+/xB,EAAc,CAChB,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,OAEEquvB,EAAa,CACf,UACA,WACA,QACA,QACA,MACA,OACA,OACA,SACA,YACA,UACA,WACA,YAgBK,SAAS,IAAU,OAAOruvB,CAAY,CAEtC,SAAS7rjB,IAAY,OAf5B,WACE,MAAMrmB,EAAM,CACVwg0C,IAAK,GAEP,IAAK,IAAI9shD,EAAI,EAAGA,EAAIw+xB,EAAY/+xB,OAAQO,IACtCssN,EAAIkykB,EAAYx+xB,IAAMA,EAExB,IAAK,IAAIA,EAAI,EAAGA,EAAI6shD,EAAWpthD,OAAQO,IACrCssN,EAAIug0C,EAAW7shD,IAAMA,EAEvB,OAAOssN,CACT,CAImC6rB,EAAe,CCzClD,IAAI0vS,EAASl1S,IAMb,MAAMr9I,EAAYg3H,IAEhB,IAA+C,IAA3C,EAAavtN,eAAeutN,EAAIw8T,OAClC,OAAO,EAGT,GAAkB,IAAdx8T,EAAIw8T,MACN,SAAIk2/B,EAAW1yzC,EAAIu8T,OAASv8T,EAAI73K,MAAQ,KAG/B63K,EAAI73K,MAAQ,GAIvB,IAAI1nC,EAAM,EAAau/M,EAAIw8T,QAAU,EACrC,OAAIx8T,EAAI73K,MAAQ1nC,CAGT,EAGHq07B,EAAY,CAACrr3B,EAAM,GAAIoo3B,KAG3B,GAFApo3B,EAAMA,EAAItkD,QAEwB,IAA9B,gBAAgBhnB,KAAKsrE,GAAe,CACtC,IAAIzzB,EAAM/d,OAAOwxC,EAAIlqE,QAAQ,IAAK,KAClC,OAAIy2C,EAAM,GACD,KAAOA,EAET,IAAOA,CAChB,CACA,IAAIume,EAAO9zf,SAASghD,EAAK,IAOzB,OALK8yc,GAAQs1a,IACXt1a,EAAOs1a,EAAMt1a,MAGfA,EAAOA,IAAQ,IAAIj+f,MAAOy8f,cACnBwB,GAGHkkgC,EAAa,SAAUh38C,GAE3B,MAAY,UADZA,EAAMA,EAAIpnE,cAAc8iB,QAEfo2f,EAAOilgC,IAETjlgC,EAAO9xc,EAChB,ECOA,EA7CkB,CAAC71E,EAAG61E,EAAM,MAI1B,IAAI8nJ,GAFJ9nJ,EAAMA,EAAIlqE,QAAQ,OAAQ,IAAI8C,eAEhB9I,MAAM,+DACpB,GAAY,OAARg4N,EAAc,CAEhB,IAAI77N,EAAIuiC,OAAOs5L,EAAI,IACnB,GAAI77N,EAAI,GAAKA,EAAI,GACf,OAAO9B,EAAEoshD,QAAQ,OAEnB,IAAI9phD,EAAI+hC,OAAOs5L,EAAI,IACnB,GAAIA,EAAI,GAAGp+N,OAAS,GAAK+C,EAAI,GAAKA,EAAI,GACpC,OAAOtC,EAAEoshD,QAAQ,OAKnBpshD,GADAA,GADAA,GADAA,EAAIA,EAAEk4vB,KAAKp2vB,IACLi2vB,OAAOz1vB,IACP0mhB,QAAQrrT,EAAI,IAAM,IAClBq5hB,YAnCM,SAAUnhrB,EAAM,IAc9B,OAbAA,EAAM72E,OAAO62E,IAGLt2E,OAAS,EACfs2E,EAAMA,EAAIl7C,OAAO,EAAG,GACI,IAAfk7C,EAAIt2E,OAIbs2E,GAAY,KACY,IAAfA,EAAIt2E,SACbs2E,GAAY,KAEPxxC,OAAOwxC,IAAQ,CACxB,CAoBsBi38C,CAAQnvzC,EAAI,KAE9B,IAAIovzC,EAAOl38C,EAAIlwE,MAAM,sBAIrB,OAHa,OAATonhD,GAAiBA,EAAK,KACxB/shD,EAAIA,EAAE+shD,KAAKA,EAAK,KAEX/shD,CACT,CAIA,GADA29N,EAAM9nJ,EAAIlwE,MAAM,qBACJ,OAARg4N,GAAgBA,EAAI,GAAI,CAC1B,IAAI77N,EAAIuiC,OAAOs5L,EAAI,IAEnB,OAAI77N,EAAI,IAAMA,EAAI,EACT9B,EAAEoshD,QAAQ,OAInBpshD,GADAA,GADAA,EAAIA,EAAEk4vB,KAAKv6hB,EAAI,IAAM,IACfovzC,KAAKpvzC,EAAI,KACTyuzC,QAAQ,OAEhB,CAIA,OADIpshD,EAAEoshD,QAAQ,MACPpshD,ECxDT,EAAe,GAAGkB,OCDlB,CAKE,CACE2grB,IAAK,kFACLp2pB,MAAO,CAACzrB,EAAGsC,KACT,IAAI8pN,EAAM,CACRu8T,KAAMrmhB,EAAE,GACRsmhB,MAAO/zf,SAASvyB,EAAE,GAAI,IAAM,EAC5BiyC,KAAMjyC,EAAE,IAEV,OAAsB,IAAlB8yF,EAASg3H,IACXpsN,EAAE6qhD,MAAQ,KACH7qhD,IClBK,EAACA,EAAGqhD,KACtB,IAAKA,EACH,OAAOrhD,EAKT,IAAIoiD,EAAM,EAyBV,GAtBI,4BAA4B73C,KAAK82C,MAER,IAAvB,MAAM92C,KAAK82C,KACbA,EAASA,EAAO11C,QAAQ,MAAO,MAGN,IAAvB,MAAMpB,KAAK82C,KACbA,EAASA,EAAO11C,QAAQ,MAAO,QAK/B,mBAAmBpB,KAAK82C,KAC1BA,EAASA,EAAO11C,QAAQ,MAAO,OAEjCy2C,EAAMmnH,WAAWloH,GAGbt/C,KAAKmjH,IAAI9iE,GAAO,MAClBA,GAAY,KAGF,IAARA,GAAwB,MAAXf,GAA6B,MAAXA,EAEjC,OADArhD,EAAE0rhD,GAAK,UACA1rhD,EAKToiD,IAAQ,EAEJA,GAAO,IACTA,EAAM,IAAMA,GAEd,IAAIsp+C,EAAK,UAAYtp+C,EACTpiD,EAAEgthD,UAEJtB,KAGR1rhD,EAAE0rhD,GAAKA,EAEF1rhD,EDhCH,CAAYA,EAAGsC,EAAE,IACjB,EAAOtC,EAAGosN,GACVpsN,EAAI,EAAUA,EAAGsC,EAAE,IACZtC,GAIX,CACE6hrB,IAAK,8GACLp2pB,MAAO,CAACzrB,EAAGsC,KACT,IAAI8pN,EAAM,CACRu8T,KAAMrmhB,EAAE,GACRsmhB,MAAO/zf,SAASvyB,EAAE,GAAI,IAAM,EAC5BiyC,KAAM1f,SAASvyB,EAAE,GAAI,KAOvB,OALI8pN,EAAIw8T,OAAS,KAEfx8T,EAAI73K,KAAO1f,SAASvyB,EAAE,GAAI,IAC1B8pN,EAAIw8T,MAAQ/zf,SAASvyB,EAAE,GAAI,IAAM,IAEb,IAAlB8yF,EAASg3H,IACXpsN,EAAE6qhD,MAAQ,KACH7qhD,IAET,EAAOA,EAAGosN,GACVpsN,EAAI,EAAUA,EAAGsC,EAAE,IACZtC,GAKX,CACE6hrB,IAAK,0GACLp2pB,MAAO,CAACzrB,EAAGsC,KACT,IAAI8pN,EAAM,CACRu8T,KAAMu4a,EAAU5+7B,EAAE,GAAItC,EAAEkshD,QACxBtjgC,MAAOikgC,EAAWvqhD,EAAE,IACpBiyC,KAAMo3+C,EAAWrphD,EAAE,IAAM,KAE3B,OAAsB,IAAlB8yF,EAASg3H,IACXpsN,EAAE6qhD,MAAQ,KACH7qhD,IAET,EAAOA,EAAGosN,GACVpsN,EAAI,EAAUA,EAAGsC,EAAE,IACZtC,IE9Db,CAKE,CACE6hrB,IAAK,yGACLp2pB,MAAO,CAACzrB,EAAG29N,KACT,IAAIirT,EAAQ/zf,SAAS8oM,EAAI,GAAI,IAAM,EAC/BppL,EAAO1f,SAAS8oM,EAAI,GAAI,KAExB39N,EAAEithD,SAAWrkgC,GAAS,MACxBr0e,EAAO1f,SAAS8oM,EAAI,GAAI,IACxBirT,EAAQ/zf,SAAS8oM,EAAI,GAAI,IAAM,GAEjC,IAAIvR,EAAM,CACR73K,OACAq0e,QACAD,KAAMu4a,EAAUvjuB,EAAI,GAAI39N,EAAEkshD,UAAW,IAAIxhgD,MAAOy8f,eAElD,OAAsB,IAAlB/xb,EAASg3H,IACXpsN,EAAE6qhD,MAAQ,KACH7qhD,IAET,EAAOA,EAAGosN,GACVpsN,EAAI,EAAUA,EAAG29N,EAAI,IACd39N,GAIX,CACE6hrB,IAAK,sHACLp2pB,MAAO,CAACzrB,EAAG29N,KACT,IAAIvR,EAAM,CACRu8T,KAAMu4a,EAAUvjuB,EAAI,GAAI39N,EAAEkshD,QAC1BtjgC,MAAOikgC,EAAWlvzC,EAAI,IACtBppL,KAAMo3+C,EAAWhuzC,EAAI,IAAM,KAE7B,OAAsB,IAAlBvoI,EAASg3H,IACXpsN,EAAE6qhD,MAAQ,KACH7qhD,IAET,EAAOA,EAAGosN,GACVpsN,EAAI,EAAUA,EAAG29N,EAAI,IACd39N,GAMX,CACE6hrB,IAAK,sEACLp2pB,MAAO,CAACzrB,EAAG29N,KACT,IAAIvR,EAAM,CACRu8T,KAAMu4a,EAAUvjuB,EAAI,GAAI39N,EAAEkshD,QAC1BtjgC,MAAOikgC,EAAWlvzC,EAAI,IACtBppL,KAAMo3+C,EAAWhuzC,EAAI,IAAM,KAE7B,OAAsB,IAAlBvoI,EAASg3H,IACXpsN,EAAE6qhD,MAAQ,KACH7qhD,IAET,EAAOA,EAAGosN,GACVpsN,EAAI,EAAUA,EAAG29N,EAAI,IACd39N,GAIX,CACE6hrB,IAAK,gEACLp2pB,MAAO,CAACzrB,EAAG29N,KACT,IAAIvR,EAAM,CACRu8T,KAAMu4a,EAAUvjuB,EAAI,GAAI39N,EAAEkshD,QAC1BtjgC,MAAOikgC,EAAWlvzC,EAAI,IACtBppL,KAAMo3+C,EAAWhuzC,EAAI,IAAM,KAE7B,OAAsB,IAAlBvoI,EAASg3H,IACXpsN,EAAE6qhD,MAAQ,KACH7qhD,IAET,EAAOA,EAAGosN,GACVpsN,EAAI,EAAUA,EAAG29N,EAAI,IACd39N,IClFb,CAKE,CACE6hrB,IAAK,kDACLp2pB,MAAO,CAACzrB,EAAGsC,KACT,IAAI8pN,EAAM,CACRu8T,KAAMu4a,EAAU5+7B,EAAE,GAAItC,EAAEkshD,QACxBtjgC,MAAOikgC,EAAWvqhD,EAAE,IACpBiyC,KAAMo3+C,EAAWrphD,EAAE,IAAM,KAE3B,OAAsB,IAAlB8yF,EAASg3H,IACXpsN,EAAE6qhD,MAAQ,KACH7qhD,IAET,EAAOA,EAAGosN,GACVpsN,EAAI,EAAUA,EAAGsC,EAAE,IACZtC,GAIX,CACE6hrB,IAAK,oGACLp2pB,MAAO,CAACzrB,EAAGsC,KACT,IAAI8pN,EAAM,CACRu8T,KAAMu4a,EAAU5+7B,EAAE,GAAItC,EAAEkshD,QACxBtjgC,MAAOikgC,EAAWvqhD,EAAE,IACpBiyC,KAAMo3+C,EAAWrphD,EAAE,KAErB,OAAK8pN,EAAIw8T,QAA2B,IAAlBxzb,EAASg3H,IAI3B,EAAOpsN,EAAGosN,GACVpsN,EAAI,EAAUA,EAAGsC,EAAE,MAJjBtC,EAAE6qhD,MAAQ,KACH7qhD,EAIFA,GAIX,CACE6hrB,IAAK,uGACLp2pB,MAAO,CAACzrB,EAAGsC,KACT,IAAI8pN,EAAM,CACR73K,KAAMlQ,OAAO/hC,EAAE,IACfsmhB,MAAOikgC,EAAWvqhD,EAAE,IACpBqmhB,KAAMtkf,OAAO/hC,EAAE,KAEjB,OAAsB,IAAlB8yF,EAASg3H,IACXpsN,EAAE6qhD,MAAQ,KACH7qhD,IAET,EAAOA,EAAGosN,GACVpsN,EAAIA,EAAEoshD,QAAQ,OACdpshD,EAAI,EAAUA,EAAGsC,EAAE,IACZtC,ICzDb,CAME,CACE6hrB,IAAK,gCACLp2pB,MAAO,CAACzrB,EAAGsC,KACT,IAAI8pN,EAAM,CACRu8T,KAAMrmhB,EAAE,GACRsmhB,MAAO/zf,SAASvyB,EAAE,GAAI,IAAM,EAC5BiyC,KAAM,GAER,OAAsB,IAAlB6gD,EAASg3H,IACXpsN,EAAE6qhD,MAAQ,KACH7qhD,IAET,EAAOA,EAAGosN,GACVpsN,EAAI,EAAUA,EAAGsC,EAAE,IACZtC,GAKX,CACE6hrB,IAAK,yBACLp2pB,MAAO,CAACzrB,EAAG29N,KACT,IAAIvR,EAAM,CACRu8T,KAAMu4a,EAAUvjuB,EAAI,GAAI39N,EAAEkshD,QAC1BtjgC,MAAOikgC,EAAWlvzC,EAAI,IACtBppL,KAAMv0C,EAAEkshD,OAAO33+C,MAAQ,GAEzB,OAAsB,IAAlB6gD,EAASg3H,IACXpsN,EAAE6qhD,MAAQ,KACH7qhD,IAET,EAAOA,EAAGosN,GACVpsN,EAAI,EAAUA,EAAG29N,EAAI,IACd39N,GAIX,CAEE6hrB,IAAK,+BACLp2pB,MAAO,CAACzrB,EAAG29N,KACT,IAAIi1tB,EAAUj1tB,EAAI,IAAM,GACxB39N,EAAIA,EAAE4y7B,QAAQA,GACd,IAAIjqa,EAAOhrT,EAAI,IAAM,GAKrB,OAJIgrT,IACFA,EAAOA,EAAKp3f,OACZvxB,EAAIA,EAAE2ohB,KAAKA,IAEN3ohB,IAGX,CAEE6hrB,IAAK,yDACLp2pB,MAAO,CAACzrB,EAAG29N,KACT,IAAIuvzC,EAASvvzC,EAAI,IAAM,GACvB39N,EAAIA,EAAEkthD,OAAOA,GACb,IAAIvkgC,EAAOhrT,EAAI,IAAM,GAKrB,OAJIgrT,IACFA,EAAOA,EAAKp3f,OACZvxB,EAAIA,EAAE2ohB,KAAKA,IAEN3ohB,IAGX,CAEE6hrB,IAAK,uBACLp2pB,MAAO,CAACzrB,EAAG29N,KACT,IAAI9nJ,EAAM8nJ,EAAI,IAAM,GAEpB9nJ,EAAMA,EAAIlqE,QAAQ,yBAA0B,OAC5C,IAAI9J,EAAI,IAAI6oB,KACR0hM,EAAM,CACRu8T,KAAM9zf,SAASghD,EAAItkD,OAAQ,IAC3Bq3f,MAAO/mhB,EAAEulhB,WACT7ye,KAAM1yC,EAAE6hC,WAEV,OAAsB,IAAlB0xD,EAASg3H,IACXpsN,EAAE6qhD,MAAQ,KACH7qhD,IAET,EAAOA,EAAGosN,GACVpsN,EAAI,EAAUA,GACPA,GAGX,CAEE6hrB,IAAK,kCACLp2pB,MAAO,CAACzrB,EAAG29N,KACT,IAAI9nJ,EAAM8nJ,EAAI,IAAM,GAEpB9nJ,EAAMA,EAAIlqE,QAAQ,KAAM,IACxB,IAAI9J,EAAI,IAAI6oB,KACR0hM,EAAM,CACRu8T,KAAM9zf,SAASghD,EAAItkD,OAAQ,IAC3Bq3f,MAAO/mhB,EAAEulhB,WACT7ye,KAAM1yC,EAAE6hC,WAEV,OAAsB,IAAlB0xD,EAASg3H,IACXpsN,EAAE6qhD,MAAQ,KACH7qhD,IAET,EAAOA,EAAGosN,GACVpsN,EAAI,EAAUA,GACPA,GAGX,CAEE6hrB,IAAK,2BACLp2pB,MAAO,CAACzrB,EAAG29N,KACT,IAAIsguB,EAAQj+7B,EAAEkshD,OAEVjulB,EAAMr1a,QAAUq1a,EAAM1p5B,OACxB0p5B,EAAM1p5B,KAAO,GAEf,IAAI1yC,EAAI,IAAI6oB,KACR0hM,EAAM,CACRu8T,KAAMu4a,EAAUvjuB,EAAI,GAAIsguB,GACxBr1a,MAAOq1a,EAAMr1a,OAAS/mhB,EAAEulhB,WACxB7ye,KAAM0p5B,EAAM1p5B,MAAQ1yC,EAAE6hC,WAExB,OAAsB,IAAlB0xD,EAASg3H,IACXpsN,EAAE6qhD,MAAQ,KACH7qhD,IAET,EAAOA,EAAGosN,GACVpsN,EAAI,EAAUA,GACPA,MCzIL8rhD,WAAU,cAAa,cAAa,GAAK,EAa3C,EAAW,CACfnjgC,MAAM,IAAIj+f,MAAOy8f,cACjByB,MAAO,EACPr0e,KAAM,GA0DR,EAtDmB,CAACv0C,EAAG2vD,KACrB,IAAIsu4B,EAAQj+7B,EAAEkshD,QAAU,EAExB,GAAqB,iBAAVv89C,EACT,OAAO,EAAY3vD,EAAG2vD,GAKxB,GAFA3vD,EAAE6qhD,MAAQnggD,KAAKC,MAEX3qB,EAAEkshD,QAAU/nxC,EAASnkQ,EAAEkshD,SAAW1thD,OAAOgU,KAAKxS,EAAEkshD,QAAQ3shD,OAAS,EAAG,CACtE,IAAIglJ,EAAM,EAAYvkJ,EAAGi+7B,EAAO,GAC5B15yB,EAAIvyE,YACNhyE,EAAE6qhD,MAAQtm4C,EAAIsm4C,MAElB,CAEA,OAAIl79C,SAAmD,KAAVA,EACpC3vD,GAGa,IAAlBuzQ,EAAO5jN,IACT3vD,EAAE6qhD,MAAQl79C,EAAMhpB,UACT3mC,IAGc,If3ClB,SAAiB2vD,GAAS,MAAiD,mBAA1CnxD,OAAOI,UAAU6E,SAAS3E,KAAK6wD,EAA4B,Ce2C7F9+C,CAAQ8+C,GACV3vD,EAAI,EAAWA,EAAG2vD,EAAOsu4B,IAIH,IAApB95rB,EAASx0M,GAEPA,EAAMk79C,OACR7qhD,EAAE6qhD,MAAQl79C,EAAMk79C,MAChB7qhD,EAAE0rhD,GAAK/79C,EAAM+79C,GACN1rhD,GAETA,EAAI,EAAYA,EAAG2vD,EAAOsu4B,GAIP,iBAAVtu4B,EACF3vD,GAGT2vD,EAAkBA,EChERhkD,QAAQ,8DAA+D,IAEvEA,QAAQ,uBAAwB,MAChCA,QAAQ,KAAM,IACdA,QAAQ,MAAO,KAAK4lB,QD8DW,IAArC,EAAW1yB,eAAe8wD,GAC5B3vD,EAAI,EAAW2vD,GAAO3vD,GEpEN,SAAUA,EAAG2vD,EAAOw99C,GAGtC,IAAK,IAAIrthD,EAAI,EAAGA,EAAI,EAAQP,OAAQO,IAAK,CACvC,IAAIwC,EAAIqtD,EAAMhqD,MAAM,EAAQ7F,GAAG+hrB,KAC/B,GAAIv/qB,EAAG,CAEL,IAAIiiJ,EAAM,EAAQzkJ,GAAG2rB,MAAMzrB,EAAGsC,EAAG6qhD,GACjC,GAAY,OAAR5o4C,GAAgBA,EAAIvyE,UACtB,OAAOuyE,CAEX,CACF,CAKA,OAJiB,IAAbvkJ,EAAEsze,QACJ/sd,QAAQC,KAAK,yCAA2CmpC,EAAQ,KAElE3vD,EAAE6qhD,MAAQ,KACH7qhD,CACT,CFsDSyrB,CAAYzrB,EAAG2vD,GAAK,EG1E7B,IAAI0uuB,EAAY,CAAC,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,OACvD+uvB,GAAW,CAAC,SAAU,SAAU,UAAW,YAAa,WAAY,SAAU,YAE3E,SAAS,KAAU,OAAO/uvB,CAAU,CACpC,SAAS,KAAS,OAAO+uvB,EAAS,CAKlC,MAAM1vqC,GAAU,CACrBvkW,GAAI,EACJwy3C,GAAI,EACJtk4C,GAAI,EACJsi1C,GAAI,EACJ/00C,GAAI,EACJwb,GAAI,EACJ872C,GAAI,EACJmhJ,KAAM,EACNC,KAAM,EACNC,KAAM,EACNC,KAAM,EACNC,MAAO,GCrBT,IAAIC,IAAmB,ECKvB,MAKA,GALkB1thD,IAChB,IAAIqhD,EAASrhD,EAAEk/xB,WAAWjgwB,QAAQoiB,OAClC,OAAQA,EAAe8w4B,EAAe9w4B,EAAQ,KAA7B,GAAgC,ECD7Css+C,GAAmB938C,GFHhB638C,GnBWF,SAAmB738C,GACxB,OAAKA,EAGEA,EAAI,GAAG/lB,cAAgB+lB,EAAIl7C,OAAO,GAFhC,EAGX,CqBXWiz/C,CAAU/38C,GAEZA,EAaHzR,GAAS,CACbykd,IAAM7ohB,GAAM2thD,GAAgB3thD,EAAE6thD,WAC9B,YAAc7thD,GAAM2thD,GAAgB,KAAS3thD,EAAE6ohB,QAC/C,aAAe7ohB,GAAMA,EAAE6ohB,MACvB,cAAgB7ohB,GAAM2gjC,EAAQ3gjC,EAAE6ohB,OAChC,UAAY7ohB,GAAMyzvC,EAAQzzvC,EAAE6ohB,OAE5Bt0e,KAAOv0C,GAAMA,EAAEu0C,OACf,eAAiBv0C,GAAM2gjC,EAAQ3gjC,EAAEu0C,QACjC,WAAav0C,GAAMyzvC,EAAQzzvC,EAAEu0C,QAE7Bq0e,MAAQ5ohB,GAAM2thD,GAAgB3thD,EAAE8thD,aAChC,cAAgB9thD,GAAM2thD,GAAgB,IAAQ3thD,EAAE4ohB,UAChD,eAAiB5ohB,GAAMA,EAAE4ohB,QACzB,gBAAkB5ohB,GAAM2gjC,EAAQ3gjC,EAAE4ohB,SAClC,YAAc5ohB,GAAMyzvC,EAAQzzvC,EAAE4ohB,SAC9B,YAAc5ohB,GAAMyzvC,EAAQzzvC,EAAE4ohB,QAAU,GAExCD,KAAO3ohB,IACL,IAAI2ohB,EAAO3ohB,EAAE2ohB,OACb,OAAIA,EAAO,EACFA,GAETA,EAAO5mhB,KAAKmjH,IAAIyja,GACTA,EAAO,QAEhB,aAAe3ohB,IACb,IAAI2ohB,EAAO3ohB,EAAE2ohB,OACb,OAAIA,EAAO,EACF,IAAI3phB,OAAOgB,EAAE2ohB,QAAQhuf,OAAO,EAAG,MAExCguf,EAAO5mhB,KAAKmjH,IAAIyja,GACTA,EAAO,QAEhB,WAAa3ohB,IACX,IAAI2ohB,EAAO3ohB,EAAE2ohB,OACTt6T,EAAas6T,EAAO,EACpB9yc,EAAM49qC,EAAQ1xvC,KAAKmjH,IAAIyja,GAAO,GAMlC,OALIt6T,IAEFx4I,EAAM49qC,EAAQ59qC,EAAK,GACnBA,EAAM,IAAMA,GAEPA,GAGT9wB,KAAO/kD,GAAMA,EAAE+kD,OACf,UAAY/kD,GAAM,GAAGA,EAAE+thD,YAAYt6R,EAAQzzvC,EAAE+3vB,YAE7CG,KAAOl4vB,GAAMA,EAAE225B,SACf,WAAa325B,GAAMyzvC,EAAQzzvC,EAAE225B,UAC7B,UAAY325B,GAAMA,EAAE+thD,SACpB,cAAgB/thD,GAAMyzvC,EAAQzzvC,EAAE+thD,UAEhCh2xB,OAAS/3vB,GAAMA,EAAE+3vB,SACjB,aAAe/3vB,GAAMyzvC,EAAQzzvC,EAAE+3vB,UAC/BrjqB,OAAS10F,GAAMA,EAAE00F,SACjB,aAAe10F,GAAMyzvC,EAAQzzvC,EAAE00F,UAC/BsiqB,YAAch3vB,GAAMA,EAAEg3vB,cACtB,kBAAoBh3vB,GAAMyzvC,EAAQzzvC,EAAEg3vB,cAAe,GAEnD+1xB,KAAO/shD,GAAMA,EAAE+shD,OACfiB,KAAOhuhD,GAAMA,EAAE+shD,OAAOj99C,cACtB8i4B,QAAU5y7B,GAAM,IAAMA,EAAE4y7B,UACxBs6lB,OAASlthD,GAAMA,EAAEkthD,SACjB76lB,IAAMry7B,GAAMA,EAAEqy7B,MACd9i6B,KAAOvvB,GAAMA,EAAEuvB,OACf2vwB,SAAWl/xB,GAAMA,EAAEk/xB,WAAWt1xB,KAC9By3C,OAASrhD,GAAM,GAAUA,GAEzBiuhD,QAAUjuhD,GAAM,GAAGA,EAAE2ohB,UAAU8quB,EAAQzzvC,EAAE4ohB,QAAU,MAAM6quB,EAAQzzvC,EAAEu0C,UACnE,aAAev0C,GAAM,GAAGyzvC,EAAQzzvC,EAAE4ohB,QAAU,MAAM6quB,EAAQzzvC,EAAEu0C,WAAWv0C,EAAE2ohB,SACzE,aAAe3ohB,GAAM,GAAGyzvC,EAAQzzvC,EAAEu0C,WAAWk/sC,EAAQzzvC,EAAE4ohB,QAAU,MAAM5ohB,EAAE2ohB,SACzE,QAAU3ohB,GAAM,GAAGyzvC,EAAQzzvC,EAAE4ohB,QAAU,MAAM6quB,EAAQzzvC,EAAEu0C,UAGvD25+C,IAAMluhD,GASG,GARIA,EAAEokE,OAAO,eACRqvrC,EAAQzzvC,EAAE4ohB,QAAU,MACrB6quB,EAAQzzvC,EAAEu0C,WACVk/sC,EAAQzzvC,EAAEmuhD,UACR16R,EAAQzzvC,EAAE+3vB,aACV07f,EAAQzzvC,EAAE00F,aACd++pC,EAAQzzvC,EAAEg3vB,cAAe,KACrB,GAAUh3vB,KAGzB,YAAcA,IACZ,IAAI4ohB,EAAQ6quB,EAAQzzvC,EAAE4ohB,QAAU,GAC5Br0e,EAAOk/sC,EAAQzzvC,EAAEu0C,QAlGT,IAAC6N,EAoGb,MAAO,IApGMA,EAmGMpiD,EAAE2ohB,SAlGZ,EACF8quB,EAAQrxsC,EAAK,GAGb,IAAMqxsC,EADbrxsC,EAAMrgD,KAAKmjH,IAAI9iE,GACW,MA+FRwme,KAASr0e,GAAI,EAEjC,UAAYv0C,GACH,IAAI0qB,KAAK1qB,EAAE6qhD,OAAOvj/C,cAI3BmzvB,KAAOz6xB,GAAM,GAAG,IAAQA,EAAE4ohB,YAAY+3hB,EAAQ3gjC,EAAEu0C,YAAYv0C,EAAE+kD,SAC9D,UAAY/kD,GACV,GAAG,IAAQA,EAAE4ohB,YAAY+3hB,EAAQ3gjC,EAAEu0C,YAAYv0C,EAAE+thD,YAAYt6R,EAC3DzzvC,EAAE+3vB,YAEN,YAAc/3vB,GAAM,GAAG,IAAQA,EAAE4ohB,YAAY+3hB,EAAQ3gjC,EAAEu0C,YAAYv0C,EAAE2ohB,SACrE,WAAa3ohB,GACX,GAAG,KAASA,EAAE6ohB,UAAU8kgC,GAAgB,IAAQ3thD,EAAE4ohB,aAAa+3hB,EAC7D3gjC,EAAEu0C,UAEN,YAAcv0C,GACZ,GAAGA,EAAE6thD,aAAaF,GAAgB3thD,EAAE8thD,gBAAgBnte,EAAQ3gjC,EAAEu0C,YAAYv0C,EAAE+kD,SAC9E,eAAiB/kD,GACf,GAAGA,EAAE6thD,aAAaF,GAAgB3thD,EAAE8thD,gBAAgBnte,EAClD3gjC,EAAEu0C,YACEv0C,EAAE+thD,YAAYt6R,EAAQzzvC,EAAE+3vB,aAG5B,GAAU,CACd,WAAY,MACZ,aAAc,QACd,WAAY,MACZ,WAAY,UACZ,UAAW,OACX,WAAY,OACZ2zxB,GAAI,WACJ,UAAW,aACX,YAAa,eACb,YAAa,YACb,WAAY,WACZ,aAAc,OACd,gBAAiB,UACjB0C,IAAK,aACLC,IAAK,aACLC,IAAK,UACL,aAAc,UACd,aAAc,aACd,aAAc,aACd,gBAAiB,aACjB,aAAc,UACd,WAAY,YAEd9vhD,OAAOgU,KAAK,IAAS4R,SAASxhB,GAAOwhE,GAAOxhE,GAAKwhE,GAAO,GAAQxhE,MAEhE,MAmCA,GAnCoB,CAAC5C,EAAG61E,EAAM,MAE5B,IAAoB,IAAhB71E,EAAEgyE,UACJ,MAAO,GAGT,GAAI5N,GAAOvlE,eAAeg3E,GAAM,CAC9B,IAAIupD,EAAMh7D,GAAOyR,GAAK71E,IAAM,GAO5B,MANY,SAAR61E,IACFupD,EAAMpgI,OAAOogI,GACa,SAAtBvpD,EAAIpnE,gBACN2wH,EAAMuu5C,GAAgBvu5C,KAGnBA,CACT,CAEA,IAA0B,IAAtBvpD,EAAIn2E,QAAQ,KAAa,CAC3B,IAAI+23C,EAAW,aAYf,OAXA5gzC,EAAMA,EAAIlqE,QAAQ8q3C,GAAU,CAAC3z3C,EAAG82oC,KAE9B,GADAA,EAAMA,EAAInroC,cAAc8iB,OACpB6yC,GAAOvlE,eAAe+6oC,GAAM,CAC9B,IAAIx6gC,EAAMpgI,OAAOolE,GAAOw1kC,GAAK55oC,IAC7B,MAA0B,SAAtB45oC,EAAInroC,cACCk/gD,GAAgBvu5C,GAElBA,CACT,CACA,MAAO,MAEFvpD,CACT,CAEA,OAAO71E,EAAEokE,OAAO,YAAW,EChMvB,GAAU,CACdvgE,EAAI7D,GAAMA,EAAEqy7B,MACZk8lB,GAAKvuhD,GAAMA,EAAEqy7B,MACbzwqB,IAAM5hR,GAAMA,EAAEqy7B,MACdm8lB,KAAOxuhD,GAAmB,OAAZA,EAAEqy7B,MAAiB,cAAgB,gBAEjDnw7B,EAAIlC,GAAMA,EAAE2ohB,OACZm1O,GAAK99vB,GAEI,EAAIqkC,OAAOrlC,OAAOgB,EAAE2ohB,QAAQhuf,OAAO,EAAG,KAE/C8z/C,IAAMzuhD,GAAMA,EAAE2ohB,OACdu8pB,KAAOllrC,GAAMA,EAAE2ohB,OACf+lgC,MAAQ1uhD,GAAM,IAAMA,EAAE2ohB,OAItBzjhB,EAAIlF,GAAMA,EAAE4y7B,UACZ+7lB,GAAK3uhD,GAAMA,EAAE4y7B,UACbg8lB,IAAM5uhD,GAAMA,EAAE4y7B,UACdi8lB,KAAO7uhD,GAAMA,EAAE4y7B,UAGf7t7B,EAAI/E,GAAMA,EAAE4ohB,QAAU,EACtBX,GAAKjohB,GAAM,EAAIA,EAAE4ohB,QAAU,GAC3BZ,IAAMhohB,GAAMA,EAAEokE,OAAO,eACrB2jd,KAAO/nhB,GAAMA,EAAEokE,OAAO,SAGtB3hE,EAAIzC,GAAMA,EAAEmhyB,OACZ2tvB,GAAK9uhD,GAAM,EAAIA,EAAEmhyB,QAKjBt/xB,EAAI7B,GAAMA,EAAEu0C,OACZ8ze,GAAKrohB,GAAM,EAAIA,EAAEu0C,QAEjB9vC,EAAIzE,GAAMA,EAAEu+xB,YACZr2Q,GAAKlohB,GAAM,EAAIA,EAAEu+xB,aACjB4/uB,IAAMn+gD,GAAM,EAAIA,EAAEu+xB,YAAa,GAM/B36xB,EAAI5D,GAAMA,EAAEokE,OAAO,aACnB4mqC,GAAKhruC,GAAMA,EAAEokE,OAAO,aACpB2q9C,IAAM/uhD,GAAMA,EAAEokE,OAAO,aACrB4q9C,KAAOhvhD,GAAMA,EAAEokE,OAAO,OACtB6q9C,MAAQjvhD,GAAMA,EAAEokE,OAAO,OAAO,GAC9B/lE,EAAI2B,GAAMA,EAAE6ohB,MACZpjhB,GAAKzF,GAAMA,EAAE6ohB,MACbqmgC,IAAMlvhD,GAAMA,EAAEokE,OAAO,aACrB+q9C,KAAOnvhD,GAAMA,EAAEokE,OAAO,OACtBgr9C,MAAQpvhD,GAAMA,EAAEokE,OAAO,OAAO,GAG9BlkE,EAAIF,GAAMA,EAAE+shD,OAAOj99C,cACnB5/B,GAAKlwB,GAAMA,EAAE+shD,OAAOj99C,cACpBu/9C,IAAMrvhD,GAAMA,EAAE+shD,OAAOj99C,cACrBw/9C,KAAOtvhD,GAAMA,EAAE+shD,OAAOj99C,cAGtBhuD,EAAI9B,GAAMA,EAAEuvhD,MACZ150B,GAAK71sB,GAAM,EAAIA,EAAEuvhD,OACjB7qhD,EAAI1E,GAAMA,EAAEk4vB,OACZqmxB,GAAKv+gD,GAAM,EAAIA,EAAEk4vB,QAGjB51vB,EAAItC,GAAMA,EAAE+3vB,SACZune,GAAKt/tC,GAAM,EAAIA,EAAE+3vB,UACjB/3vB,EAAIA,GAAMA,EAAE00F,SACZo7oB,GAAK9vuB,GAAM,EAAIA,EAAE00F,UAGjB867C,IAAMxvhD,GAAM,EAAIA,EAAEg3vB,cAAe,GAEjCjzvB,EAAI/D,GAAMA,EAAE6qhD,MAAQ7qhD,EAAEoshD,QAAQ,OAAOvB,MAErChmhD,EAAI7E,GAAMA,EAAEk/xB,WAAWt1xB,KACvBo2uC,GAAKhgvC,GAAMA,EAAEk/xB,WAAWt1xB,KACxB6lhD,IAAMzvhD,GAAMA,EAAEk/xB,WAAWt1xB,KACzB8lhD,KAAO1vhD,GAAMA,EAAEk/xB,WAAWt1xB,KAC1BjG,EAAI3D,GAAMmy7B,EAAeny7B,EAAEk/xB,WAAWjgwB,QAAQoiB,QAC9Csu+C,GAAK3vhD,GAAMmy7B,EAAeny7B,EAAEk/xB,WAAWjgwB,QAAQoiB,QAC/Cuu+C,IAAM5vhD,GAAMmy7B,EAAeny7B,EAAEk/xB,WAAWjgwB,QAAQoiB,QAChDwu+C,KAAO7vhD,GAAMmy7B,EAAeny7B,EAAEk/xB,WAAWjgwB,QAAQoiB,OAAQ,MAGrDyu+C,GAAW,CAACxryC,EAAMnsO,EAAI5Z,KAC1B,IAAIqL,EAAO06O,EACP416B,EAAS/hpC,EACb,IAAK,IAAIrY,EAAI,EAAGA,EAAIvB,EAAGuB,GAAK,EAC1B,GAAQ8J,GAAQ,GAAQswpC,GACxBtwpC,GAAQ06O,EACR416B,GAAU/hpC,CACZ,EAEF23gD,GAAS,IAAK,IAAK,GACnBA,GAAS,IAAK,IAAK,GACnBA,GAAS,IAAK,IAAK,GACnBA,GAAS,IAAK,IAAK,GACnBA,GAAS,IAAK,IAAK,GACnBA,GAAS,IAAK,IAAK,GACnBA,GAAS,IAAK,IAAK,GACnBA,GAAS,IAAK,IAAK,GACnBA,GAAS,IAAK,IAAK,GAGnB,MCnHM,GAAQ,CAAC,OAAQ,SAAU,UAAW,QAAS,OAAQ,MAAO,cAAe,OAAQ,UAErFC,GAAS,SAAU/vhD,EAAG4C,GAC1B,IAAI8iC,EAAQ1lC,EAAEyvB,QAAQ28/C,QAAQxphD,GAE1B2hD,EADMvkD,EAAEyvB,QAAQuggD,MAAMpthD,GACPiohD,MAAQnl/C,EAAMml/C,MAC7BlrkB,GAAW3/8B,EAAE6qhD,MAAQnl/C,EAAMml/C,OAAStm+C,EACxC,OAAOglH,WAAWo2yB,EAAQr95B,QAAQ,GACpC,ECRM2t+C,GAAQ,CAAC/vhD,EAAGsC,EAAGi5W,KACnB,IAAI37W,EAAI,EAER,IADAI,EAAIA,EAAEuvB,QACCvvB,EAAEqotB,SAAS/ltB,IAEhBtC,EAAIA,EAAEmkB,IAAI,EAAGo3V,GACb37W,GAAK,EAMP,OAHII,EAAEu77B,QAAQj57B,EAAGi5W,KACf37W,GAAK,GAEAA,GAaT,GARgB,CAACI,EAAGsC,EAAGi5W,IACjBv7W,EAAEqotB,SAAS/ltB,GACNythD,GAAM/vhD,EAAGsC,EAAGi5W,IAES,EAArBw0qC,GAAMzthD,EAAGtC,EAAGu7W,GCqBvB,GA9Ba,SAAUv7W,EAAGsC,EAAGi5W,GAC3Bj5W,EAAIqphD,EAAQrphD,EAAGtC,GAEf,IAAIonrC,GAAW,EACf,GAAIpnrC,EAAEu77B,QAAQj57B,GAAI,CAChB,IAAIsgW,EAAM5iW,EACVA,EAAIsC,EACJA,EAAIsgW,EACJwk1B,GAAW,CACb,CAEA,IAAIl79B,ECNO,SAAUlsN,EAAGsC,GAGxB,IAAI0thD,EAAS1thD,EAAEqohD,MAAQ3qhD,EAAE2qhD,MACrBz+zC,EAAM,CACRsoJ,aAAcw7qC,EACdlngC,QAASn0f,SAASq7/C,EAAS,IAAM,KAEnC9j0C,EAAI28T,QAAUl0f,SAASu3L,EAAI48T,QAAU,GAAI,IACzC58T,EAAI08T,MAAQj0f,SAASu3L,EAAI28T,QAAU,GAAI,IAGvC,IAAIjmL,EAAM5iW,EAAEuvB,QAwBZ,OAvBA28L,EAAI45mC,MA1BW,EAAC9l0C,EAAGsC,KACnB,IAAIwj0C,EAAQxj0C,EAAEmmhB,OAASzohB,EAAEyohB,OAMzB,OAJAzohB,EAAIA,EAAEyohB,KAAKnmhB,EAAEmmhB,SACP8ya,QAAQj57B,KACZwj0C,GAAS,GAEJA,GAmBKmqN,CAASrtrC,EAAKtgW,GAC1BsgW,EAAM5iW,EAAEmkB,IAAI+nM,EAAI45mC,MAAO,QAGvB55mC,EAAIu7T,OAAqB,GAAZv7T,EAAI45mC,MACjBlj+B,EAAM5iW,EAAEmkB,IAAI+nM,EAAIu7T,OAAQ,SACxBv7T,EAAIu7T,QAAU,GAAQ7kL,EAAKtgW,EAAG,SAG9B4pN,EAAIgk0C,SAAuB,EAAZhk0C,EAAI45mC,MACnB55mC,EAAIgk0C,UAAYv7/C,SAAUu3L,EAAIu7T,OAAS,GAAM,EAAG,IAIhDv7T,EAAI6suB,MAAoB,GAAZ7suB,EAAI45mC,MAChBlj+B,EAAM5iW,EAAEmkB,IAAI+nM,EAAI6suB,MAAO,QACvB7suB,EAAI6suB,OAAS,GAAQn2lB,EAAKtgW,EAAG,QAG7B4pN,EAAIw7T,KAAmB,EAAZx7T,EAAI6suB,MACfn2lB,EAAM5iW,EAAEmkB,IAAI+nM,EAAIw7T,KAAM,OACtBx7T,EAAIw7T,MAAQ,GAAQ9kL,EAAKtgW,EAAG,OAErB4pN,CACT,CD/BYik0C,CAAUnwhD,EAAGsC,GAKvB,OAJI8krC,IACFl79B,EAvBgB,SAAUA,GAI5B,OAHA5tN,OAAOgU,KAAK45M,GAAKhoM,SAASxhB,IACxBwpN,EAAIxpN,KAAO,KAENwpN,CACT,CAkBUkk0C,CAAYlk0C,IAGhBqvJ,GAEFA,EAAO,EAAUA,IACO,IAApB,KAAKlxW,KAAKkxW,KACZA,GAAQ,KAEG,UAATA,IACFA,EAAO,QAEFrvJ,EAAIqvJ,IAENrvJ,CACT,EE1BMwt7B,GAAOr7oC,GAAMwD,KAAKmjH,IAAI3mH,IAAM,ECd5BwkU,GAAa,CACjB4kN,OAAQ,CACN4ogC,OAAQ,GACR98P,KAAM,GAER7rwB,KAAM,CACJ2ogC,OAAQ,GACR98P,KAAM,IAER3qwB,MAAO,CACLyngC,OAAQ,GACR98P,KAAM,GAER1qwB,QAAS,CACPwngC,OAAQ,GACR98P,KAAM,IAERzqwB,QAAS,CACPungC,OAAQ,GACR98P,KAAM,KAKV,SAAS+8P,GAAUnwhD,EAAOo7W,GAIxB,OAHc,IAAVp7W,IACFo7W,EAAOA,EAAKx6W,MAAM,GAAI,IAEjBZ,EAAQ,IAAMo7W,CACvB,CAEA,MCsBA,GA/Cc,CAAC/1U,EAAOC,KAEpB,MAAM8hgB,ECPR,SAAiBvniB,EAAGsC,GAClB,MAAM+ltB,EAAWrotB,EAAEqotB,SAAS/ltB,GACtBiuhD,EAAQlo0B,EAAW/ltB,EAAItC,EAC7B,IAAIwwhD,EAAUno0B,EAAWrotB,EAAIsC,EAC7BkuhD,EAAUA,EAAQjhgD,QAClB,MAAMg4gB,EAAO,CACXu+xB,MAAO,EACPr+yB,OAAQ,EACRC,KAAM,EACNkB,MAAO,EACPC,QAAS,EACTC,QAAS,GAkBX,OAhBAxqhB,OAAOgU,KAAKi1hB,GAAMrjhB,SAASq3V,IACzB,GAAIi1qC,EAAQp4d,OAAOm4d,EAAOh1qC,GACxB,OAEF,IAAI5uW,EAAM6jhD,EAAQjp/B,KAAKgp/B,EAAOh1qC,GAC9Bi1qC,EAAUA,EAAQrsgD,IAAIxX,EAAK4uW,GAC3BgsL,EAAKhsL,GAAQ5uW,KAGX07sB,GACF/ptB,OAAOgU,KAAKi1hB,GAAMrjhB,SAAS7iB,IACT,IAAZkmiB,EAAKlmiB,KACPkmiB,EAAKlmiB,KAAO,EACd,IAGGkmiB,CACT,CDvBe,CAAQ/hgB,EADrBC,EAAMkm/C,EAAQlm/C,EAAKD,IAGnB,IAAc,IADAlnC,OAAOgU,KAAKi1hB,GAAM9/f,OAAOpmC,IAAOkmiB,EAAKlmiB,KAEjD,MAAO,CACLkmiB,OACArrT,QAAS,MACTu0yC,UAAW,MACXC,QAAS,MACT9xlB,YAAa,GACbovlB,IAAK,iBACLrh6C,UAAW,WAGf,IAAI+j6C,EACA/j6C,EAAY,UAEZ,QAAEuvH,EAAO,UAAEu0yC,EAAS,cAAEE,EAAa,YAAE/xlB,GDO5B,SAAUr3Z,GACvB,IAAIrrT,EAAU,KACVu0yC,EAAY,KACZ7xlB,EAAc,GACd+xlB,EAAgB,GA0BpB,OAxBAryhD,OAAOgU,KAAKi1hB,GAAMrjhB,SAAQ,CAACq3V,EAAM37W,EAAGyyK,KAClC,MAAMlyK,EAAQ0B,KAAKmjH,IAAIuib,EAAKhsL,IAC5B,GAAc,IAAVp7W,EACF,OAEFy+7B,EAAY/97B,KAAKV,EAAQo7W,EAAK,IAC9B,MAAMq1qC,EAAeN,GAAUnwhD,EAAOo7W,GAEtC,GADAo1qC,EAAc9vhD,KAAK+vhD,IACd10yC,EAAS,CAEZ,GADAA,EAAUu0yC,EAAYG,EAClBhxhD,EAAI,EACN,OAGF,MAAMixhD,EAAWx+2C,EAAMzyK,EAAI,GACrB0oJ,EAAYzmJ,KAAKmjH,IAAIuib,EAAKsp/B,IAC5Bvo4C,EAAYu6K,GAAWgutC,GAAUR,QACnCn0yC,EAAUo0yC,GAAUnwhD,EAAQ,EAAGo7W,GAC/Bk1qC,EAAY,UAAYv0yC,GACf5zF,EAAYu6K,GAAWgutC,GAAUt9P,OAC1Ck9P,EAAY,QAAUG,EAE1B,KAEK,CAAEH,YAAWv0yC,UAAS0itB,cAAa+xlB,gBAC5C,CCtC2DG,CAAOvp/B,GAGhEmp/B,EAAUC,EAAc1ugD,OAAO,EAAG,GAAGpW,KAAK,OAEf,IAAvB25B,EAAM+15B,QAAQ915B,IAChBy2M,GAAW,OACXu0yC,GAAa,OACbC,GAAW,OACX/j6C,EAAY,SAEZuvH,EAAU,MAAQA,EAClBu0yC,EAAY,MAAQA,EACpBC,EAAU,MAAQA,GAIpB,IAAI1C,EFzBQ,SAAUzm/B,GACtB,IAAIym/B,EAAM,IAOV,OANAA,GAAOt0Y,GAAInymB,EAAKu+xB,OAAS,IACzBkoN,GAAOt0Y,GAAInymB,EAAK9f,QAAU,IAC1BumgC,GAAOt0Y,GAAInymB,EAAK7f,MAAQ,KACxBsmgC,GAAOt0Y,GAAInymB,EAAK3e,OAAS,IACzBolgC,GAAOt0Y,GAAInymB,EAAK1e,SAAW,IAC3BmlgC,GAAOt0Y,GAAInymB,EAAKze,SAAW,IACpBklgC,CACT,CEgBY,CAAMzm/B,GAChB,MAAO,CACLA,OACArrT,UACAu0yC,YACAC,UACA9xlB,cACAovlB,MACArh6C,YACF,EE/BF,IAAiBtkF,MAfH,CACZ,CAAC,SAAU,EAAG,GACd,CAAC,SAAU,EAAG,GACd,CAAC,OAAQ,EAAG,GACZ,CAAC,SAAU,EAAG,GACd,CAAC,SAAU,GAAI,IAUOE,MARV,CACZ,CAAC,OAAQ,EAAG,GACZ,CAAC,SAAU,EAAG,GACd,CAAC,SAAU,EAAG,GACd,CAAC,SAAU,EAAG,GACd,CAAC,SAAU,GAAI,KCjBjB,IACE,KACA,CAAC,EAAG,GACJ,CAAC,EAAG,GACJ,CAAC,EAAG,GACJ,CAAC,EAAG,ICAA,GAAQ,CACZisD,OAAS10F,IACP,EAAOA,EAAG,CACRg3vB,YAAa,IAERh3vB,GAET+3vB,OAAS/3vB,IACP,EAAOA,EAAG,CACR00F,OAAQ,EACRsiqB,YAAa,IAERh3vB,GAETixhD,YAAcjxhD,IACZ,IAAI+3vB,EAAS/3vB,EAAE+ohB,UAcf,OAZE/ohB,EADE+3vB,GAAU,GACR/3vB,EAAE+ohB,QAAQ,IACLgvO,GAAU,GACf/3vB,EAAE+ohB,QAAQ,IACLgvO,GAAU,GACf/3vB,EAAE+ohB,QAAQ,IAEV/ohB,EAAE+ohB,QAAQ,GAEhB,EAAO/ohB,EAAG,CACR00F,OAAQ,EACRsiqB,YAAa,IAERh3vB,GAETk4vB,KAAOl4vB,IACL,EAAOA,EAAG,CACR+3vB,OAAQ,EACRrjqB,OAAQ,EACRsiqB,YAAa,IAERh3vB,GAET6ohB,IAAM7ohB,IACJ,EAAOA,EAAG,CACRk4vB,KAAM,EACNH,OAAQ,EACRrjqB,OAAQ,EACRsiqB,YAAa,IAERh3vB,GAETmhyB,KAAOnhyB,IACL,IAAI83C,EAAW93C,EAAEyvB,QAWjB,OAVAzvB,EAAIA,EAAE6ohB,IAAI7ohB,EAAEkxhD,aACNz1lB,QAAQ3j5B,KACZ93C,EAAIA,EAAEshL,SAAS,EAAG,SAEpB,EAAOthL,EAAG,CACRk4vB,KAAM,EACNH,OAAQ,EACRrjqB,OAAQ,EACRsiqB,YAAa,IAERh3vB,GAET4ohB,MAAQ5ohB,IACN,EAAOA,EAAG,CACRu0C,KAAM,EACN2jtB,KAAM,EACNH,OAAQ,EACRrjqB,OAAQ,EACRsiqB,YAAa,IAERh3vB,GAET4y7B,QAAU5y7B,IACR,IAAIoF,EAAIpF,EAAE4y7B,UAWV,OAVIw9lB,GAAShrhD,IACX,EAAOpF,EAAG,CACR4ohB,MAAOwngC,GAAShrhD,GAAG,GACnBmvC,KAAM67+C,GAAShrhD,GAAG,GAClB8yvB,KAAM,EACNH,OAAQ,EACRrjqB,OAAQ,EACRsiqB,YAAa,IAGVh3vB,GAETkthD,OAASlthD,IACP,IAAIi/B,EAAUj/B,EAAEkthD,SACZhC,EAAM,QACa,UAAnBlrhD,EAAEmxhD,eACJjG,EAAM,SAER,IAAK,IAAIprhD,EAAI,EAAGA,EAAIsxhD,GAAQlG,GAAK3rhD,OAAQO,IACvC,GAAIsxhD,GAAQlG,GAAKprhD,GAAG,KAAOm/B,EAAS,CAElC,IAAI0pf,EAAO3ohB,EAAE2ohB,OAab,MAZgB,WAAZ1pf,GAAwBj/B,EAAE4ohB,QAAU,IACtCD,GAAQ,GAEV,EAAO3ohB,EAAG,CACR2ohB,OACAC,MAAOwogC,GAAQlG,GAAKprhD,GAAG,GACvBy0C,KAAM68+C,GAAQlG,GAAKprhD,GAAG,GACtBo4vB,KAAM,EACNH,OAAQ,EACRrjqB,OAAQ,EACRsiqB,YAAa,IAERh3vB,CACT,CAEF,OAAOA,GAET2ohB,KAAO3ohB,IACL,EAAOA,EAAG,CACR4ohB,MAAO,EACPr0e,KAAM,EACN2jtB,KAAM,EACNH,OAAQ,EACRrjqB,OAAQ,EACRsiqB,YAAa,IAERh3vB,GAETqxhD,OAASrxhD,IAEP,IAAI2ohB,GADJ3ohB,EAAIA,EAAEoshD,QAAQ,SACDzjgC,OACT0ogC,EAAmC,GAA1Bx8/C,SAAS8zf,EAAO,GAAI,IAEjC,OADI3ohB,EAAE2ohB,KAAK0ogC,EACJrxhD,EAETih8B,QAAUjh8B,IAER,IAAI2ohB,GADJ3ohB,EAAIA,EAAEoshD,QAAQ,SACDzjgC,OAET0ogC,EAAoC,IAA3Bx8/C,SAAS8zf,EAAO,IAAK,IAElC,OADI3ohB,EAAE2ohB,KAAK0ogC,EACJrxhD,GAGX,GAAMu0C,KAAO,GAAMs0e,IAEnB,MC7DA,GA7DiB7ohB,IACf,IAAI6gkB,EAAQ7gkB,EAAEgthD,UACVtB,EAAK1rhD,EAAE0rhD,GAIX,IAHiC,IAA7B7q9B,EAAMhikB,eAAe6shD,KACvBA,EAAK9l/C,EAAO5lC,EAAE0rhD,GAAI7q9B,IAET,OAAP6q9B,EAIF,OAHiB,IAAb1rhD,EAAEsze,QACJ/sd,QAAQC,KAAK,mDAAqDxmB,EAAE0rhD,GAAK,KAEpE,CACLzs/C,QAAS,CACPqy/C,WAAY,IAIlB,IAAItnwC,EAAQ62S,EAAM6q9B,GACdhpgD,EAAS,CACX9Y,MAhCcisE,EAgCE618C,EAvBlB718C,GADAA,GADAA,GADAA,GADAA,GAHAA,GADAA,EAAMA,EAAI,GAAG/lB,cAAgB+lB,EAAIl7C,OAAO,IAC9BhvB,QAAQ,mBAAmB3L,GAC5BA,EAAE8vD,iBAEDnkD,QAAQ,cAAe3L,GAAMA,EAAEyO,iBAC/B9C,QAAQ,SAAU,SAClBA,QAAQ,qBAAsB,oBAC9BA,QAAQ,cAAe,aACvBA,QAAQ,qBAAsB,oBAwBtC4lhD,OAAQp/gD,QAAQ63Q,EAAMupD,KACtBi+sC,eAAgBxnwC,EAAM3oO,OAEtB8v+C,WAA0B,MAAdnnwC,EAAMkhwC,IAAc,QAAU,QAC1Cjs/C,QAAS,CAAC,GArCI42C,MARD09P,EAgDf,GAAI7wT,EAAO6ugD,OAAQ,CACjB,IAAI5zzC,GAjDS41G,EAiDMvpD,EAAMupD,KA7CpBA,EAAIzvU,MAAM,MAFR,GAgDP4e,EAAOi3d,OAAS,CACdj0c,MAAOi4L,EAAI,GACXsvxB,KAAMtvxB,EAAI,GAEd,CAGA,IAAI8zzC,EAASznwC,EAAM3oO,OACfqw+C,EAASD,EAuBb,OAtBsB,IAAlB/ugD,EAAO6ugD,SAEPG,EADwB,UAAtBhvgD,EAAOyugD,WACAM,EAAS,EAGTznwC,EAAM3oO,OAAS,IAMN,IAAlB3+B,EAAO6ugD,QACT7ugD,EAAOuc,QAAQoiB,OAASow+C,EACxB/ugD,EAAOuc,QAAQ0y/C,OAAQ,IACqE,IAAnF,EAAa3xhD,EAAE6qhD,MAAOnogD,EAAOi3d,OAAOj0c,MAAOhjB,EAAOi3d,OAAOszgB,KAAMwkiB,EAAQC,IAChFhvgD,EAAOuc,QAAQoiB,OAASow+C,EACxB/ugD,EAAOuc,QAAQ0y/C,MAA8B,UAAtBjvgD,EAAOyugD,aAG9BzugD,EAAOuc,QAAQoiB,OAASqw+C,EACxBhvgD,EAAOuc,QAAQ0y/C,MAA8B,UAAtBjvgD,EAAOyugD,YAEzBzugD,GCvEH,GAAQ,CACZ,UACA,SACA,OACA,QACA,OACA,MACA,OACA,SACA,SACA,eAIImid,GAAU,CACd15d,IAAK,SAAUwkD,EAAO+79C,GACpB,IAAI1rhD,EAAId,KAAKuwB,QAKb,OAJAzvB,EAAI,EAAYA,EAAG2vD,GACf+79C,IACFxshD,KAAKwshD,GAAK9l/C,EAAO8l/C,IAEZ1rhD,CACT,EACAk/xB,SAAU,WACR,OAAO,GAAShgyB,KAClB,EACAyyhD,MAAO,WACL,OAAO,GAASzyhD,MAAM+/B,QAAQ0y/C,KAChC,EACAC,OAAQ,WACN,OAAO,GAAS1yhD,MAAMqyhD,MACxB,EACAlw+C,OAAQ,WACN,OAAuC,GAAhC,GAASniD,MAAM+/B,QAAQoiB,MAChC,EACA8v+C,WAAY,WACV,OAAO,GAASjyhD,MAAMiyhD,UACxB,EACA/s9C,OAAQ,SAAUw1kC,GAChB,OAAO,GAAO16oC,KAAM06oC,EACtB,EACAi4Y,QAAS,SAAUj4Y,GACjB,MbyGY,EAAC55oC,EAAG61E,KAClB,IAAI8nJ,EAAM9nJ,EAAI/xE,MAAM,IAKpB,OAHA65N,EA/CkB,SAAUA,GAC5B,IAAK,IAAI79N,EAAI,EAAGA,EAAI69N,EAAIp+N,OAAQO,GAAK,EACnC,GAAe,MAAX69N,EAAI79N,GAEN,IAAK,IAAIN,EAAIM,EAAI,EAAGN,EAAIm+N,EAAIp+N,OAAQC,GAAK,EAAG,CAI1C,GAHIm+N,EAAIn+N,KACNm+N,EAAI79N,IAAM69N,EAAIn+N,IAED,MAAXm+N,EAAIn+N,GAAY,CAClBm+N,EAAIn+N,GAAK,KACT,KACF,CACAm+N,EAAIn+N,GAAK,IACX,CAGJ,OAAOm+N,EAAI5xM,QAAQ0/P,GAAOA,GAC5B,CA8BQqmwC,CAAYn0zC,GAElBA,EA7BsB,SAAUA,GAChC,IAAK,IAAI79N,EAAI,EAAGA,EAAI69N,EAAIp+N,OAAQO,GAAK,EAAG,CACtC,IAAIC,EAAI49N,EAAI79N,GAEZ,IAAK,IAAIN,EAAIM,EAAI,EAAGN,EAAIm+N,EAAIp+N,QACtBo+N,EAAIn+N,KAAOO,EADmBP,GAAK,EAErCm+N,EAAI79N,IAAM69N,EAAIn+N,GACdm+N,EAAIn+N,GAAK,IAKf,CASA,OAPAm+N,EAAMA,EAAI5xM,QAAQ0/P,GAAOA,KACfl9P,KAAKsnD,IACD,OAARA,IACFA,EAAM,KAEDA,IAGX,CAOQk88C,CAAgBp0zC,GACfA,EAAI/qM,QAAO,CAACo//C,EAAKjyhD,UACHktC,IAAf,GAAQltC,GACViyhD,GAAO,GAAQjyhD,GAAGC,IAAM,IAGpB,YAAYuK,KAAKxK,KACnBA,EAAIA,EAAE4L,QAAQ,KAAM,KAEtBqmhD,GAAOjyhD,GAEFiyhD,IACN,GAAE,Ea1HI,CAAQ9yhD,KAAM06oC,EACvB,EACAwyY,QAAS,SAAU3wqC,GACjB,MFyFY,EAACv7W,EAAGu7W,KAClB,IAAIz7W,EE1Fcd,KF0FRuwB,QAEV,OADAgsV,EAAO,EAAUA,GACb,GAAMA,GACD,GAAMA,GAAMz7W,GAER,WAATy7W,GAA8B,WAATA,GACvBz7W,EAAIA,EAAEkthD,OAAOzxqC,GACN,GAAMyxqC,OAAOlthD,IAEfA,GEnGE,CAASd,EAAMu8W,EACxB,EACAu0qC,MAAO,SAAUv0qC,GACf,MFoGU,EAACv7W,EAAGu7W,KAChB,IAAIz7W,EErGYd,KFqGNuwB,QAEV,OADAgsV,EAAO,EAAUA,GACb,GAAMA,IAERz7W,EAAI,GAAMy7W,GAAMz7W,GAChBA,EAAIA,EAAEqkB,IAAI,EAAGo3V,GACbz7W,EAAIA,EAAEshL,SAAS,EAAG,eACXthL,GAEFA,GE9GE,CAAOd,EAAMu8W,EACtB,EACAw2qC,SAAU,WAER,OAAOnT,EADI5/gD,KAAKyphB,OAElB,EACAwpf,SAAU,SAAU12pB,GAClB,MZxDa,EAACz7W,EAAGy7W,KACnB,GAAIA,EAEF,OADAA,EAAO,EAAUA,GACVs0qC,GAAO/vhD,EAAGy7W,GAEnB,IAAIrvJ,EAAM,CAAC,EAIX,OAHA,GAAMhoM,SAAQxhB,IACZwpN,EAAIxpN,GAAKmthD,GAAO/vhD,EAAG4C,EAAC,IAEfwpN,GY+CE,CAASltN,KAAMu8W,EACxB,EACAi4uB,QAAS,SAAUj4uB,GACjB,MCpEY,EAACz7W,EAAGy7W,KAElB,IAAIy2qC,EAAOlyhD,EAAEmygC,WAgBb,MAba,iBAFb12pB,EAAO,EAAUA,MAGfA,EAAO,oBAEUxuU,IAAfil/C,EAAKz2qC,IAEHy2qC,EAAKz2qC,GAAQ,KACfz7W,EAAIA,EAAEqkB,IAAI,EAAGo3V,IAGfz7W,EAAIA,EAAEoshD,QAAQ3wqC,KACQ,IAAbz7W,EAAEsze,QACX/sd,QAAQC,KAAK,kBAAoBi1V,EAAO,KAEnCz7W,GDkDE,CAAQd,KAAMu8W,EACvB,EACAgsL,KAAM,SAAU5liB,EAAG45W,GACjB,OAAO,GAAKv8W,KAAM2C,EAAG45W,EACvB,EACA02qC,MAAO,SAAUtwhD,GAIf,OAHKA,IACHA,EAAI3C,KAAKuwB,QAAQtkB,OAEZ,GAAMjM,KAAM2C,EACrB,EACA5B,KAAM,SAAUw7W,GAEd,OADQv8W,KAAKmlB,IAAI,EAAGo3V,GACX2wqC,QAAQ3wqC,EACnB,EAEA53V,KAAM,SAAU43V,GAEd,OADQv8W,KAAKoiL,SAAS,EAAGm6L,GAChB2wqC,QAAQ3wqC,EACnB,EACAzpS,QAAS,WAEP,SAAK9yE,KAAK2rhD,OAAwB,IAAf3rhD,KAAK2rhD,OAGhBr/+C,MAAMtsC,KAAK2C,EAAE8kC,WACvB,EAEAyr/C,KAAM,SAAU1G,GACd,IAAI1rhD,EAAId,KAAKuwB,QAEb,OADAzvB,EAAE0rhD,GAAK9l/C,EAAO8l/C,EAAI1rhD,EAAEgthD,WACbhthD,CACT,EAEA2nC,MAAO,SAAU8zU,EAAMtjW,GAErB,GAAoB,iBAATsjW,GAAmC,iBAAPtjW,EAAiB,CACtD,IAAI2qV,EAAM3qV,EACVA,EAAKsjW,EACLA,EAAO3Y,CACT,CACA,OEhGU,SAAUp9T,EAAO+1U,EAAM91U,GACnC,IAAK81U,IAAS91U,EACZ,MAAO,GAOT,GAJA81U,EAAO,EAAUA,GAEjB91U,EAAMD,EAAMjW,QAAQtkB,IAAIw6B,GAEpBD,EAAM+15B,QAAQ915B,GAAM,CACtB,IAAIm9T,EAAMp9T,EACVA,EAAQC,EACRA,EAAMm9T,CACR,CAGA,IAAIjhW,EAAI6jC,EAAMjW,SA5BF,SAAUgsV,GACtB,QAAI,KAAQ71U,MAAM5lC,GAAMA,IAAMy7W,OAG1B,KAAO71U,MAAM5lC,GAAMA,IAAMy7W,GAI/B,CAqBMw0oB,CAAMx0oB,GAII55W,EAAEuqhD,QAAQ3wqC,GACZ8sW,SAAS7irB,KACjB7jC,EAAIA,EAAE5B,KAAKw7W,KALb55W,EAAIA,EAAE5B,KAAKw7W,GACXA,EAAO,QAQT,IAAI/4V,EAAS,GACb,KAAO7gB,EAAE0mtB,SAAS5irB,IAChBjjB,EAAO3hB,KAAKc,GACZA,EAAIA,EAAEwiB,IAAI,EAAGo3V,GAEf,OAAO/4V,CACT,CF+DW,CAAMxjB,KAAMu8W,EAAMtjW,EAC3B,EACAk6gD,QAAS,WACP,IAAIn6xB,EAAOh5vB,KAAKg5vB,OAEhB,QAAIA,EAAO,GAAKA,EAAO,GAIzB,EACAo6xB,SAAU,WACR,OAAQpzhD,KAAKmzhD,SACf,EACAj4d,YAAa,WACX,OAAQl7jC,KAAK0phB,SACX,KAAK,EAIL,KAAK,EAIL,KAAK,EAIL,KAAK,EAEL,KAAK,EAIL,KAAK,EAIL,KAAK,GACH,OAAO,GArBT,KAAK,EACH,OAAO1phB,KAAK+yhD,WAAa,GAAK,GAGhC,KAAK,EAIL,KAAK,EAML,KAAK,EAIL,KAAK,GACH,OAAO,GAGT,QACE,MAAM,IAAIvrgD,MAAM,wBAEtB,EAEA6C,IAAK,WAGH,OAFAhD,QAAQgD,IAAI,IACZhD,QAAQgD,IAAI,GAAOrqB,KAAM,eAClBA,IACT,EACAqzhD,QAAS,WAGP,OAFAhsgD,QAAQgD,IAAI,IACZhD,QAAQgD,IAAI,GAAOrqB,KAAM,eAClBA,IACT,EACAqwB,KAAM,WACJ,OAAO,GAAMqD,QAAO,CAAC9wB,EAAG25W,KACtB35W,EAAE25W,GAAQv8W,KAAKu8W,KACR35W,IACN,CAAC,EACN,EACA4zC,MAAO,WACL,IAAIg2+C,EAAKxshD,KAAKggyB,WACV3qvB,EAAOr1C,KAAKklE,OAAO,MAAQ,IAAMllE,KAAKklE,OAAO,gBAAkB,IAAMllE,KAAKyphB,OAG9E,OAFAp0e,GAAQ,YAAcr1C,KAAKklE,OAAO,QAClC79C,QAAQgD,IAAI,OAAQgrB,EAAO,YAAcm3+C,EAAG9hhD,KAAO,KAAO8hhD,EAAGzs/C,QAAQoiB,OAAS,KACvEniD,IACT,EAEA+d,KAAM,SAAUpb,GAEd,OADAA,EAAI3C,KAAKuwB,QAAQtkB,IAAItJ,IACZswhD,MAAMjzhD,KACjB,EACAszhD,QAAS,WAEP,OADQtzhD,KAAKuwB,QAAQtkB,IAAIuf,KAAKC,OACrBwngD,MAAMjzhD,KACjB,EACAuzhD,UAAW,SAAU9i+C,GAEnB,GAAqB,iBAAVA,EAET,OADAzwD,KAAKgyhD,WAAavh+C,EACXzwD,KAET,GAAqB,iBAAVywD,EAAoB,CAE7BA,EAAQA,EAAMlhD,cAAc8iB,OAC5B,IAAI6wB,EAAM,KAAQ1iD,QAAQiwD,IACb,IAATvN,IACFA,EAAM,KAAO1iD,QAAQiwD,KAEV,IAATvN,IACFA,EAAM,GAERljD,KAAKgyhD,WAAa9u+C,CACpB,MACE77B,QAAQC,KAAK,yDAA0DmpC,GAEzE,OAAOzwD,IACT,GAGF2le,GAAQ6tjC,MAAQ7tjC,GAAQ8sjC,MACxB9sjC,GAAQ1ib,MAAQ0ib,GAAQ6unB,QACxB7unB,GAAQq8S,KAAOr8S,GAAQl9b,MACvB,YG/MM,GAAYppC,IAEC,iBAANA,IACTA,EAAIs2B,SAASt2B,EAAG,KAEXA,GAGH4zI,GAAQ,CAAC,OAAQ,QAAS,OAAQ,OAAQ,SAAU,SAAU,eAG9D,GAAU,CAACnyI,EAAG8iW,EAAK2Y,KACvB,IAAIl9W,EAAI4zI,GAAMzyI,QAAQ+7W,GAClB99I,EAAMxrF,GAAMlxI,MAAM1C,EAAG4zI,GAAM5yI,QAC/B,IAAK,IAAIO,EAAI,EAAGA,EAAI69N,EAAIp+N,OAAQO,IAAK,CACnC,IAAI6yhD,EAAO7vrC,EAAInlI,EAAI79N,MACnBE,EAAE29N,EAAI79N,IAAI6yhD,EACZ,CACA,OAAO3yhD,GAIH4yhD,GAAU,SAAU5yhD,EAAGg5U,EAAK65sC,EAAOp3qC,GAMvC,OALc,IAAVo3qC,GAAkB7yhD,EAAEuotB,SAASvvY,GAC/Bh5U,EAAIA,EAAEqkB,IAAI,EAAGo3V,IACM,IAAVo3qC,GAAmB7yhD,EAAEy77B,QAAQzinB,KACtCh5U,EAAIA,EAAE8yhD,MAAM,EAAGr3qC,IAEVz7W,CACT,EAmBM+ohB,GAAU,SAAU/ohB,EAAGzB,EAAGs0hD,GAC9Bt0hD,EAAI,GAASA,GACb,IAAIy6U,EAAMh5U,EAAEyvB,QAER4tB,GADOr9C,EAAE+3vB,SAAWx5vB,GACL,EAAGw5vB,OAItB,OAHA/3vB,EAAE6qhD,OAASxt+C,EACX,GAAQr9C,EAAGg5U,EAAK,WAChBh5U,EAAI4yhD,GAAQ5yhD,EAAGg5U,EAAK65sC,EAAO,SAClBhI,KACX,EAEM/hgC,GAAQ,SAAU9ohB,EAAGzB,EAAGs0hD,IAC5Bt0hD,EAAI,GAASA,KACJ,GACPA,EAAI,GACKA,EAAI,IACbA,EAAI,GAEN,IAAIy6U,EAAMh5U,EAAEyvB,QACRg4gB,EAAOzniB,EAAEk4vB,OAAS35vB,EAClB8+C,EAAQoqf,EAAO,EAAGywN,KAmBtB,OAlBAl4vB,EAAE6qhD,OAASxt+C,EAEPr9C,EAAEu0C,SAAWykS,EAAIzkS,SACnBv0C,EAAIg5U,EAAIvpT,QACJg4gB,EAAO,IACTA,GAAQ,GAENA,EAAO,IACTA,GAAQ,GAEVpqf,EAAQoqf,EAAO,EAAGywN,KAClBl4vB,EAAE6qhD,OAASxt+C,GAEb,EAAOr9C,EAAG,CACRk4vB,KAAM35vB,IAER,GAAQyB,EAAGg5U,EAAK,WAChBh5U,EAAI4yhD,GAAQ5yhD,EAAGg5U,EAAK65sC,EAAO,QAClBhI,KACX,EAuGM,GAAO,SAAU7qhD,EAAGzB,GAkBxB,MAhBiB,iBAANA,GAAkB,cAAcgM,KAAKhM,KAC9CA,EAAIA,EAAEoN,QAAQ,IAAK,IAAI4lB,OAKrBhzB,GAJFA,EAAI8lC,OAAO9lC,IAEH,GAEF,KAAOA,EAGP,IAAOA,GAGfA,EAAI,GAASA,GACb,EAAOyB,EAAG,CACR2ohB,KAAMpqhB,IAEDyB,EAAE6qhD,KACX,EC1NA,IAAIzrlB,GAAU,KACVE,GAAU,KCGd,MAyKA,GAzKgB,CACdtoM,YAAa,SAAU50sB,GACrB,QAAYnV,IAARmV,EAAmB,CACrB,IAAIpiD,EAAId,KAAKuwB,QAEb,OADAzvB,EAAE6qhD,MF+Ba,SAAU7qhD,EAAGzB,GAChCA,EAAI,GAASA,GACb,IACIkpiB,EADUzniB,EAAEg3vB,cACKz4vB,EACrB,OAAOyB,EAAE6qhD,MAAQpj/B,CACnB,CEpCgB,CAAazniB,EAAGoiD,GACnBpiD,CACT,CACA,OAAOd,KAAK2C,EAAEwzB,iBAChB,EACAq/D,OAAQ,SAAUtyC,EAAKyw+C,GACrB,QAAY5l/C,IAARmV,EAAmB,CACrB,IAAIpiD,EAAId,KAAKuwB,QAEb,OADAzvB,EAAE6qhD,MF8BQ,SAAU7qhD,EAAGzB,EAAGs0hD,GAC9Bt0hD,EAAI,GAASA,GACb,IAAIy6U,EAAMh5U,EAAEyvB,QAER4tB,GADOr9C,EAAE00F,SAAWn2F,GACL,EAAGm2F,OAGtB,OAFA10F,EAAE6qhD,MAAQ7qhD,EAAE6qhD,MAAQxt+C,GACpBr9C,EAAI4yhD,GAAQ5yhD,EAAGg5U,EAAK65sC,EAAO,WAClBhI,KACX,CEtCgB7hgC,CAAQhphB,EAAGoiD,EAAKyw+C,GACnB7yhD,CACT,CACA,OAAOd,KAAK2C,EAAE0lhB,YAChB,EACAwwO,OAAQ,SAAU31sB,EAAKyw+C,GACrB,QAAY5l/C,IAARmV,EAAmB,CACrB,IAAIpiD,EAAId,KAAKuwB,QAEb,OADAzvB,EAAE6qhD,MAAQ9hgC,GAAQ/ohB,EAAGoiD,EAAKyw+C,GACnB7yhD,CACT,CACA,OAAOd,KAAK2C,EAAEylhB,YAChB,EACA4wO,KAAM,SAAU91sB,EAAKyw+C,GACnB,IAAIhxhD,EAAI3C,KAAK2C,EACb,QAAYorC,IAARmV,EAAmB,CACrB,IAAIpiD,EAAId,KAAKuwB,QAEb,OADAzvB,EAAE6qhD,MAAQ/hgC,GAAM9ohB,EAAGoiD,EAAKyw+C,GACjB7yhD,CACT,CACA,OAAO6B,EAAEwlhB,UACX,EAGA0rgC,UAAW,SAAU3w+C,EAAKyw+C,GACxB,QAAY5l/C,IAARmV,EAAmB,CACrB,IAAIpiD,EAAId,KAAKuwB,QACTsouB,EAAS31sB,EAAM,EACnB21sB,GAAkB,GAClB,IAAIG,EAAOrjuB,SAASutB,EAAK,IAGzB,OAFApiD,EAAE6qhD,MAAQ/hgC,GAAM9ohB,EAAGk4vB,EAAM26xB,GACzB7yhD,EAAE6qhD,MAAQ9hgC,GAAQ/ohB,EAAG+3vB,EAAQ86xB,GACtB7yhD,CACT,CACA,IAAI6B,EAAI3C,KAAK2C,EACTq2vB,EAAOr2vB,EAAEwlhB,WACT0wO,EAASl2vB,EAAEylhB,aAEf,OADAywO,GAAkB,GACXG,EAAOH,CAChB,EAGA4+J,OAAQ,SAAU9g1B,EAAKg98C,GACrB,IAAIhxhD,EAAI3C,KAAK2C,EACb,QAAYorC,IAAR4oC,EAAmB,CACrB,IAAI71E,EAAId,KAAKuwB,QAETntB,GADJuzE,EAAM,GAAKA,GACClwE,MAAM,qBAClB,GAAIrD,EAAG,CACL,IAAI41vB,EAAOrjuB,SAASvyB,EAAE,GAAI,IACb,OAATA,EAAE,KACJ41vB,GAAQ,IAEVl4vB,EAAE6qhD,MAAQ/hgC,GAAM9ohB,EAAGk4vB,EAAM26xB,EAC3B,CACA,OAAO7yhD,CACT,CAEA,IAAI225B,EAAS905B,EAAEwlhB,WAOf,OANIsvY,EAAS,KACXA,GAAkB,IAEL,IAAXA,IACFA,EAAS,IAEJA,CACT,EAGA5x2B,KAAM,SAAU8wB,EAAKg98C,GACnB,QAAY5l/C,IAAR4oC,EAAmB,CACrB,IAAI71E,EAAId,KAAKuwB,QAGb,OAFAomD,EAAMA,EAAIpnE,cAAc8iB,OACxBvxB,EAAE6qhD,MFSK,SAAU7qhD,EAAG61E,EAAKg98C,GAC7B,IAAIvwhD,EAAIuzE,EAAIlwE,MAAM,wDAClB,IAAKrD,EAAG,CAGN,GADAA,EAAIuzE,EAAIlwE,MAAM,0BACTrD,EACH,OAAOtC,EAAE6qhD,MAEXvohD,EAAE6f,OAAO,EAAG,EAAG,KACf7f,EAAE6f,OAAO,EAAG,EAAG,GACjB,CACA,IAAIgsgD,GAAM,EACNj2xB,EAAOrjuB,SAASvyB,EAAE,GAAI,IACtBy1vB,EAASljuB,SAASvyB,EAAE,GAAI,IACxBy1vB,GAAU,KACZA,EAAS,IAEPG,EAAO,KACTi2xB,GAAM,IAGI,IAARA,IACW,OAAT7rhD,EAAE,IAAwB,KAAT41vB,IAEnBA,EAAO,GAEI,OAAT51vB,EAAE,IAAe41vB,EAAO,KAE1BA,GAAQ,KAIZ51vB,EAAE,GAAKA,EAAE,IAAM,GACfA,EAAE,GAAKA,EAAE,GAAGqJ,QAAQ,IAAK,IACzB,IAAIqnhD,EAAMn+/C,SAASvyB,EAAE,GAAI,KAAO,EAC5B02U,EAAMh5U,EAAEyvB,QAMZ,OAFAzvB,GADAA,GADAA,GADAA,EAAIA,EAAEk4vB,KAAKA,IACLH,OAAOA,IACPrjqB,OAAOs+7C,IACPh8xB,YAAY,IAClBh3vB,EAAI4yhD,GAAQ5yhD,EAAGg5U,EAAK65sC,EAAO,QAClBhI,KACX,CEnDgB,CAAM7qhD,EAAG61E,EAAKg98C,GACjB7yhD,CACT,CACA,MAAO,GAAGd,KAAKqwhD,SAAS97R,EAAQv0vC,KAAK64vB,YAAY74vB,KAAK6thD,QACxD,EAGAA,KAAM,SAAUp99C,EAAOkj+C,GAErB,IAAIjzpB,ED/FsBw/D,GCgGtBlnM,EAAOh5vB,KAAKg5vB,OAKhB,GAJIA,GAAQ,KAEV0nI,EDlGwB0/D,ICoGL,iBAAV3v4B,EACT,OAAOiw0B,EAGT,IAAI5/3B,EAAId,KAAKuwB,QAIb,OAHAkgC,EAAQA,EAAMlhD,cAAc8iB,OAGxB2muB,GAAQ,IAAgB,OAAVvosB,GAEhBuosB,GAAQ,GACDl4vB,EAAEk4vB,KAAKA,EAAM26xB,IAElB36xB,EAAO,IAAgB,OAAVvosB,GACfuosB,GAAQ,GACDl4vB,EAAEk4vB,KAAKA,EAAM26xB,IAEf7yhD,CACT,EAGAizhD,QAAS,SAAUp98C,EAAKg98C,GACtB,QAAY5l/C,IAAR4oC,EAAmB,CACrB,MAAMgslC,EAAQ,CACZziO,QAAS,OACT8zlB,UAAW,OACX/zlB,KAAM,QACNg0lB,MAAO,QACP9zlB,UAAW,QACXC,QAAS,QACT8zlB,OAAQ,QACR7zlB,MAAO,QACPL,SAAU,SAEZ,IAAIl/7B,EAAId,KAAKuwB,QAMb,OAJAomD,GADAA,EAAMA,GAAO,IACHpnE,eACwB,IAA9BozpC,EAAMhjqC,eAAeg3E,KACvB71E,EAAIA,EAAE+kD,KAAK88mC,EAAMhslC,GAAMg98C,IAElB7yhD,CACT,CACA,IAAI8B,EAAI5C,KAAKg5vB,OACb,OAAIp2vB,EAAI,EACC,QAELA,EAAI,GAEC,UAELA,EAAI,GAEC,YAELA,EAAI,GAEC,UAEF,OACT,EAGAoshD,IAAK,SAAU9r+C,GACb,YAAYnV,IAARmV,EACKljD,KAAKiM,IAAIi3C,GAEXljD,KAAKklE,OAAO,MACrB,GCzGF,GA9DgB,CAEd7vB,KAAM,SAAU6N,EAAKyw+C,GACnB,QAAY5l/C,IAARmV,EAAmB,CACrB,IAAIpiD,EAAId,KAAKuwB,QAKb,OAJA2yB,EAAMvtB,SAASutB,EAAK,OAElBpiD,EAAE6qhD,MHmIG,SAAU7qhD,EAAGzB,EAAGs0hD,GAG3B,IAFAt0hD,EAAI,GAASA,IAEL,GAAI,CACV,IAAIqqhB,EAAQ5ohB,EAAE4ohB,QACV/7gB,EAAM,EAAY+7gB,GAER,IAAVA,GAAqB,KAANrqhB,GAAYughD,EAAW9+gD,EAAE2ohB,UAC1C97gB,EAAM,IAEJtO,EAAIsO,IACNtO,EAAIsO,EAER,CAEItO,GAAK,IACPA,EAAI,GAEN,IAAIy6U,EAAMh5U,EAAEyvB,QAKZ,OAJA,EAAOzvB,EAAG,CACRu0C,KAAMh2C,KAERyB,EAAI4yhD,GAAQ5yhD,EAAGg5U,EAAK65sC,EAAO,UAClBhI,KACX,CG3JkB,CAAM7qhD,EAAGoiD,EAAKyw+C,IAEnB7yhD,CACT,CACA,OAAOd,KAAK2C,EAAE6hC,SAChB,EAGAmlf,IAAK,SAAUl5d,EAAOkj+C,GACpB,QAAc5l/C,IAAV0iB,EACF,OAAOzwD,KAAK2C,EAAE4hC,SAEhB,IAAIqU,EAAW54C,KAAKuwB,QAChBkjgD,EAAOhj+C,EAEU,iBAAVA,IACTA,EAAQA,EAAMlhD,cACVivW,GAAQ7+W,eAAe8wD,GACzBgj+C,EAAOj1qC,GAAQ/tT,IAEfgj+C,EAAO,KAAQjzhD,QAAQiwD,IACT,IAAVgj+C,IACFA,EAAO,KAAOjzhD,QAAQiwD,MAK5B,IACI83e,EADMvoiB,KAAK2C,EAAE4hC,SACAkv/C,GACH,IAAVE,GAAkBpr/B,EAAO,IAC3BA,GAAc,IAEF,IAAVor/B,GAAmBpr/B,EAAO,IAC5BA,GAAc,GAEhB,IAAIzniB,EAAId,KAAKoiL,SAASmmX,EAAM,QAO5B,OALA,EAAOzniB,EAAG,CACRk4vB,KAAMpgtB,EAASogtB,OACfH,OAAQjgtB,EAASigtB,SACjBrjqB,OAAQ58C,EAAS48C,WAEZ10F,CACT,EAGA6thD,QAAS,SAAUl+9C,EAAOkj+C,GACxB,QAAc5l/C,IAAV0iB,EACF,OAAO,KAAOzwD,KAAK2phB,OAErB,IAAI7ohB,EAAId,KAAKuwB,QAEb,OADAzvB,EAAIA,EAAE6ohB,IAAIl5d,EAAOkj+C,GACV7yhD,CACT,GC1DIqzhD,GAAgBrzhD,IAEpBA,GADAA,EAAIA,EAAE+3vB,OAAO,IACPrjqB,OAAO,IACPsiqB,YAAY,GA4QpB,GAxQgB,CAEdunC,UAAW,SAAUn8uB,EAAKyw+C,GACxB,QAAY5l/C,IAARmV,EAAmB,CACrB,IAAIpiD,EAAId,KAAKuwB,QAEb,OADAzvB,EAAE6qhD,MJ4NU,SAAU7qhD,EAAGzB,EAAGs0hD,GAChCt0hD,EAAI,GAASA,GACb,IAAIy6U,EAAMh5U,EAAEyvB,QAeZ,OAdAlxB,GAAK,IACI,EACPA,EAAI,EACKA,GAAK,MAEZA,EADEughD,EAAW9+gD,EAAE2ohB,QACX,IAEA,KAIR3ohB,GADAA,EAAIA,EAAEoshD,QAAQ,SACR/ngD,IAAI9lB,EAAG,OACb,GAAQyB,EAAGg5U,EAAK,SAChBh5U,EAAI4yhD,GAAQ5yhD,EAAGg5U,EAAK65sC,EAAO,SAClBhI,KACX,CI9OgB,CAAW7qhD,EAAGoiD,EAAKyw+C,GACtB7yhD,CACT,CAEA,IAEI8iW,EAFA90P,EAAM,EACN46a,EAAQ1phB,KAAK2C,EAAEulhB,WAGnB,IAAK,IAAItnhB,EAAI,EAAGA,GAAK8ohB,EAAO9ohB,IAC1BgjW,EAAM,IAAIp4U,KACVo4U,EAAIn/T,QAAQ,GACZm/T,EAAIq2Z,YAAYj6vB,KAAK2C,EAAEslhB,eACvBrkL,EAAImmL,SAAS,GACbnmL,EAAIomL,WAAW,GACfpmL,EAAIs2Z,SAASt5vB,GACbgjW,EAAImmL,UAAU,GACdj7a,GAAO80P,EAAIp/T,UAEb,OAAOsqE,EAAM9uG,KAAK2C,EAAE6hC,SACtB,EAGAy9vB,KAAM,SAAU/+uB,EAAKyw+C,GAEnB,QAAY5l/C,IAARmV,EAAmB,CACrB,IAAIpiD,EAAId,KAAKuwB,QAGb,OAFAzvB,EAAE6qhD,MJgLK,SAAU7qhD,EAAGzB,EAAGs0hD,GAC3B,IAAI75sC,EAAMh5U,EAAEyvB,QAcZ,OAbAlxB,EAAI,GAASA,GAOS,cAJtByB,GADAA,GADAA,EAAIA,EAAE4ohB,MAAM,IACNr0e,KAAK,IACLs0e,IAAI,WAIJilgC,aAA8B9thD,EAAEu0C,QAAU,KAC9Cv0C,EAAIA,EAAEqkB,IAAI,EAAG,SAEf9lB,GAAK,EACLyB,EAAIA,EAAEqkB,IAAI9lB,EAAG,UACbyB,EAAI4yhD,GAAQ5yhD,EAAGg5U,EAAK65sC,EAAO,SAClBhI,KACX,CIhMgB,CAAM3rhD,KAAMkjD,EAAKyw+C,GAC3B7yhD,EAAIqzhD,GAAarzhD,GACVA,CACT,CAEA,IAAI8iW,EAAM5jW,KAAKuwB,QACfqzU,EAAMA,EAAI8lL,MAAM,GAChB9lL,EAAMA,EAAIvuT,KAAK,GACfuuT,EAAMuwrC,GAAavwrC,GACnBA,EAAMA,EAAI+lL,IAAI,UAEM,KAAhB/lL,EAAI8lL,SAAkB9lL,EAAIvuT,QAAU,KACtCuuT,EAAMA,EAAIz+U,IAAI,EAAG,SAInB,IAAIo7O,EAAQ,EACO,IAAfqjG,EAAIvuT,SACNkrN,EAAQ,GAEVqjG,EAAMA,EAAIgwrC,MAAM,EAAG,UACnB,MAAMQ,EAAUp0hD,KAAK2rhD,MAErB,GAAI/nrC,EAAI+nrC,MAAQyI,EACd,OAAO,EAGT,IAAIxzhD,EAAI,EACJyzhD,EAA2B,EAAfr0hD,KAAK0phB,QAIrB,IAFA9lL,EAAI+nrC,OAAS,EAAG1pvB,KAAOoyvB,EACvBzzhD,GAAKyzhD,EACEzzhD,GAAK,GAAIA,IAAK,CACnB,GAAIgjW,EAAI+nrC,MAAQyI,EACd,OAAOxzhD,EAAI2/P,EAEbqjG,EAAMA,EAAIz+U,IAAI,EAAG,OACnB,CACA,OAAO,EACT,EAEAukgB,MAAO,SAAUj5d,EAAOkj+C,GACtB,QAAc5l/C,IAAV0iB,EAAqB,CACvB,IAAI3vD,EAAId,KAAKuwB,QAEb,OADAzvB,EAAE6qhD,MJgFM,SAAU7qhD,EAAGzB,EAAGs0hD,GACX,iBAANt0hD,IACC,SAANA,IACFA,EAAI,OAENA,EAAIk0O,IAAUl0O,EAAEkQ,iBAElBlQ,EAAI,GAASA,KAEJ,KACPA,EAAI,IAEFA,GAAK,IACPA,EAAI,GAGN,IAAIsD,EAAI7B,EAAEu0C,OAEN1yC,EAAI,EAAYtD,KAElBsD,EAAI,EAAYtD,IAElB,IAAIy6U,EAAMh5U,EAAEyvB,QAMZ,OALA,EAAOzvB,EAAG,CACR4ohB,MAAOrqhB,EACPsD,OAEF7B,EAAI4yhD,GAAQ5yhD,EAAGg5U,EAAK65sC,EAAO,SAClBhI,KACX,CI7GgB,CAAO7qhD,EAAG2vD,EAAOkj+C,GACpB7yhD,CACT,CACA,OAAOd,KAAK2C,EAAEulhB,UAChB,EAEA0mgC,UAAW,SAAUn+9C,EAAOkj+C,GAC1B,QAAc5l/C,IAAV0iB,EAAqB,CACvB,IAAI3vD,EAAId,KAAKuwB,QAEb,OADAzvB,EAAIA,EAAE4ohB,MAAMj5d,EAAOkj+C,GACZ7yhD,CACT,CACA,OpCzD4B2shD,EoCyDdzthD,KAAK0phB,QACrB,EAGAgqa,QAAS,SAAUxw4B,EAAKyw+C,GACtB,QAAY5l/C,IAARmV,IACiB,iBAARA,IACTA,EAAMA,EAAIz2C,QAAQ,MAAO,IACzBy2C,EAAMvtB,SAASutB,EAAK,KAElBgu+C,GAAShu+C,IAAM,CACjB,IAAIpiD,EAAId,KAAKuwB,QACTm5f,EAAQwngC,GAAShu+C,GAAK,GAI1B,OAHApiD,EAAIA,EAAE4ohB,MAAMA,EAAOiqgC,GACnB7yhD,EAAIA,EAAEu0C,KAAK,EAAGs++C,GACd7yhD,EAAIA,EAAEoshD,QAAQ,OACPpshD,CACT,CAEF,IAAI4ohB,EAAQ1phB,KAAK2C,EAAEulhB,WACnB,IAAK,IAAItnhB,EAAI,EAAGA,EAAIswhD,GAAS7whD,OAAQO,IACnC,GAAI8ohB,EAAQwngC,GAAStwhD,GAAG,GACtB,OAAOA,EAAI,EAGf,OAAO,CACT,EAGAothD,OAAQ,SAAUv99C,EAAOkj+C,GACvB,IAAI3H,EAAM,QAIV,GAH0B,UAAtBhshD,KAAKiyhD,eACPjG,EAAM,cAEMj++C,IAAV0iB,EAAqB,CACvB,IAAI3vD,EAAId,KAAKuwB,QACb,IAAK,IAAI3vB,EAAI,EAAGA,EAAIsxhD,GAAQlG,GAAK3rhD,OAAQO,IACnC6vD,IAAUyh+C,GAAQlG,GAAKprhD,GAAG,KAC5BE,EAAIA,EAAE4ohB,MAAMwogC,GAAQlG,GAAKprhD,GAAG,GAAI+yhD,GAChC7yhD,EAAIA,EAAEu0C,KAAK,GACXv0C,EAAIA,EAAEoshD,QAAQ,QAGlB,OAAOpshD,CACT,CACA,IAAI4ohB,EAAQ1phB,KAAK2C,EAAEulhB,WACnB,IAAK,IAAItnhB,EAAI,EAAGA,EAAIsxhD,GAAQlG,GAAK3rhD,OAAS,EAAGO,IAC3C,GAAI8ohB,GAASwogC,GAAQlG,GAAKprhD,GAAG,IAAM8ohB,EAAQwogC,GAAQlG,GAAKprhD,EAAI,GAAG,GAC7D,OAAOsxhD,GAAQlG,GAAKprhD,GAAG,GAG3B,MAAe,UAARorhD,EAAkB,SAAW,QACtC,EAGAvigC,KAAM,SAAUvme,GACd,QAAYnV,IAARmV,EAAmB,CACrB,IAAIpiD,EAAId,KAAKuwB,QAEb,OADAzvB,EAAE6qhD,MAAQ,GAAM7qhD,EAAGoiD,GACZpiD,CACT,CACA,OAAOd,KAAK2C,EAAEslhB,aAChB,EAGAkra,IAAK,SAAUx82B,GACb,QAAY5oC,IAAR4oC,EAAmB,CACrB,IAAI71E,EAAId,KAAKuwB,QACbomD,EAAMA,EAAIpnE,cAEV,IAAIk6gB,EAAO3ohB,EAAE6B,EAAEslhB,cASf,MAPY,OAARtxc,GAAgB8yc,EAAO,IACzB3ohB,EAAE6qhD,MAAQ,GAAM7qhD,GAAW,EAAR2ohB,IAGT,OAAR9yc,GAAgB8yc,EAAO,IACzB3ohB,EAAE6qhD,MAAQ,GAAM7qhD,GAAW,EAAR2ohB,IAEd3ohB,CACT,CACA,OAAId,KAAK2C,EAAEslhB,cAAgB,EAClB,KAEF,IACT,EAGAkqgC,OAAQ,SAAU1h+C,GAChB,QAAc1iB,IAAV0iB,EAAqB,CAIvB,KADAA,GADAA,GADAA,EAAQ3wD,OAAO2wD,IACDhkD,QAAQ,cAAe,OACvBA,QAAQ,uBAAwB,OAG5C,OADA4a,QAAQC,KAAK,mCACNtnB,KAGY,IAAjBywD,EAAMpwD,QAAgB,aAAagL,KAAKolD,KAC1CA,EAAQ,KAAOA,GAEjB,IAAIg5d,EAAOtkf,OAAOsrB,GAClB,OAAInkB,MAAMm9e,GACDzphB,MAGTyphB,EAA+B,GAAxB5mhB,KAAKyK,MAAMm8gB,EAAO,IAClBzphB,KAAKyphB,KAAKA,GACnB,CACA,OAAOzphB,KAAKkthD,QAAQ,UAAUzjgC,MAChC,EAEAs4a,QAAS,SAAUtx4B,GACjB,QAAc1iB,IAAV0iB,EAAqB,CACF,iBAAVA,IAQTA,GANAA,GADAA,EAAQA,EAAMhkD,QAAQ,uBAAwB,OAChCA,QAAQ,kCAAkC,CAACzL,EAAGsC,EAAGzC,KACzDA,EAAE4F,MAAM,eACVnD,EAAI,IAAMA,GAELA,MAEKmJ,QAAQ,KAAM,KAE9B,IAAIg9gB,EAAOtkf,OAAOsrB,GAClB,OAAInkB,MAAMmkB,IACRppC,QAAQC,KAAK,oCACNtnB,OAGI,IAATyphB,IACFA,EAAO,GAGPA,EADEA,GAAQ,EACU,KAAZA,EAAO,GAEK,KAAZA,EAAO,GAEVzphB,KAAKyphB,KAAKA,GACnB,CAEA,IAAIvme,EAAMljD,KAAKkthD,QAAQ,WAAWzjgC,OAElC,OADAvme,EAAMrgD,KAAKyK,MAAM41C,EAAM,KACnBA,EAAM,EACDA,EAAM,EAERA,EAAM,CACf,EAEAox+C,UAAW,SAAU7j+C,GACnB,QAAc1iB,IAAV0iB,EAAqB,CACvB,GAAqB,iBAAVA,IACTA,EAAQA,EAAMhkD,QAAQ,uBAAwB,MAC9CgkD,EAAQtrB,OAAOsrB,GACXnkB,MAAMmkB,IAER,OADAppC,QAAQC,KAAK,sCACNtnB,KAGPywD,EAAQ,IACVA,GAAS,GAEX,IAAIg5d,EAAe,IAARh5d,EAKX,OAHa,IAATg5d,IACFA,EAAO,GAEFzphB,KAAKyphB,KAAKA,EACnB,CAEA,IAAIvme,EAAMrgD,KAAKyK,MAAMtN,KAAKyphB,OAAS,KAInC,OAHIvme,GAAO,IACTA,GAAO,GAEFA,CACT,GC/QI,GAAU5jD,OAAOa,OAAO,CAAC,EAAG,GAAS,GAAS,IAGpD,GAAQq1W,aAAe,GAAQsiZ,YAC/B,GAAQhuO,QAAU,GAAQt0b,OAC1B,GAAQq0b,QAAU,GAAQgvO,OAC1B,GAAQjvO,MAAQ,GAAQovO,KACxB,GAAQ61xB,OAAS,GAAQ71xB,KACzB,GAAQq3xB,IAAM,GAAQ54nB,OACtB,GAAQw3nB,IAAM,GAAQJ,OACtB,GAAQnmgC,KAAO,GAAQiB,IAEvB,MCbM4qgC,GAAiB,SAAU7qgC,EAAOD,GACtC,OAAc,IAAVC,GAAek2/B,EAAWn2/B,GACrB,GAEF,EAAYC,EACrB,ECGM,GAAQ,CAAC,cAAe,SAAU,SAAU,OAAQ,OAAQ,SAClE,IAAImke,GAAO,CACTr45B,OAAQ,GAAMzzF,MAAM,EAAG,GACvB82vB,OAAQ,GAAM92vB,MAAM,EAAG,GACvBgwhD,YAAa,GAAMhwhD,MAAM,EAAG,GAC5Bi3vB,KAAM,GAAMj3vB,MAAM,EAAG,GACrBszC,KAAM,GAAMtzC,MAAM,EAAG,GACrB2nhB,MAAO,GAAM3nhB,MAAM,EAAG,GACtB2x7B,QAAS,GAAM3x7B,MAAM,EAAG,GACxBishD,OAAQ,GAAMjshD,MAAM,EAAG,GACvB0nhB,KAAM,GACN0ogC,OAAQ,GACRpwlB,QAAS,IAEX8rD,GAAK5rN,KAAO4rN,GAAK70P,KACjB60P,GAAKmgiB,OAASngiB,GAAKx48B,KACnBw48B,GAAKn6D,QAAUm6D,GAAKx48B,KAGpB,MAAMm/+C,GAAgB,CACpB/qgC,MAAM,EACNiqa,SAAS,EACTs6lB,QAAQ,EACRtkgC,OAAO,EACPu4Q,MAAM,EACN5svB,MAAM,GAGFo/+C,GAAW,CACf/qgC,OAAO,EACPgqa,SAAS,EACTs6lB,QAAQ,EACRvkgC,MAAM,GC1CFqN,GAAQ,CACZghO,YAAch3vB,GACLA,EAAE6qhD,MAEXn27C,OAAS10F,GACA,CAACA,EAAE2ohB,OAAQ3ohB,EAAE4ohB,QAAS5ohB,EAAEu0C,OAAQv0C,EAAEk4vB,OAAQl4vB,EAAE+3vB,SAAU/3vB,EAAE00F,UAAU3oF,KAAK,KAEhFgsvB,OAAS/3vB,GACA,CAACA,EAAE2ohB,OAAQ3ohB,EAAE4ohB,QAAS5ohB,EAAEu0C,OAAQv0C,EAAEk4vB,OAAQl4vB,EAAE+3vB,UAAUhsvB,KAAK,KAEpEmsvB,KAAOl4vB,GACE,CAACA,EAAE2ohB,OAAQ3ohB,EAAE4ohB,QAAS5ohB,EAAEu0C,OAAQv0C,EAAEk4vB,QAAQnsvB,KAAK,KAExD88gB,IAAM7ohB,GACG,CAACA,EAAE2ohB,OAAQ3ohB,EAAE4ohB,QAAS5ohB,EAAEu0C,QAAQxoC,KAAK,KAE9Co1xB,KAAOnhyB,GACE,CAACA,EAAE2ohB,OAAQ3ohB,EAAEmhyB,QAAQp1xB,KAAK,KAEnC68gB,MAAQ5ohB,GACC,CAACA,EAAE2ohB,OAAQ3ohB,EAAE4ohB,SAAS78gB,KAAK,KAEpC6m7B,QAAU5y7B,GACD,CAACA,EAAE2ohB,OAAQ3ohB,EAAE4y7B,WAAW7m7B,KAAK,KAEtC48gB,KAAO3ohB,GACEA,EAAE2ohB,QAGbqN,GAAMzhf,KAAOyhf,GAAMnN,ICnBnB,IAAImkgC,GAAY,EAEhB,MAAM4G,GAAY,SAAUjk+C,EAAO+79C,EAAIrjgD,EAAU,CAAC,GAEhDnpB,KAAK2rhD,MAAQ,KAEb3rhD,KAAKwshD,GAAK9l/C,EAAO8l/C,EAAIsB,IAErB9thD,KAAKo0e,YAAmC,IAAnBjrd,EAAQird,QAAyBjrd,EAAQird,OAE9Dp0e,KAAK+thD,QAAU5kgD,EAAQgmgD,KAAOhmgD,EAAQ4kgD,QAGtC/thD,KAAKgyhD,WAAa,OACQjk/C,IAAtB5kB,EAAQoqgD,YACVvzhD,KAAKgyhD,WAAa7ogD,EAAQoqgD,WAG5BvzhD,KAAKgthD,OAAS,CAAC,OACOj/+C,IAAlB5kB,EAAQ416B,QACV/+7B,KAAKgthD,OAAS7jgD,EAAQ416B,OASxBz/7B,OAAO4D,eAAelD,KAAM,IAAK,CAE/BmD,IAAK,WACH,IAAIg/C,ECvCUrhD,KAClB,IACIosN,EADQpsN,EAAEgthD,UACEhthD,EAAE0rhD,IAClB,QAAYz++C,IAARm/K,EAEF,OADA7lM,QAAQC,KAAK,mCAAqCxmB,EAAE0rhD,IAC7C,EAET,QAAgBz++C,IAAZm/K,EAAImnH,IACN,OAAOnnH,EAAI/qK,OAIb,IAAIwy+C,EAAMzn0C,EAAI/qK,OACVyy+C,EAAM1n0C,EAAI/qK,OAAS,EACP,MAAZ+qK,EAAI8+zC,MACN4I,EAAMD,EAAM,GAEd,IAAI/vhD,EAAQsoN,EAAImnH,IAAIzvU,MAAM,MAE1B,OAAiB,IADF,EAAS9D,EAAE6qhD,MAAO/mhD,EAAM,GAAIA,EAAM,GAAI+vhD,EAAKC,GAEjDD,EAEFC,GDiBUC,CAAY70hD,MAIrBm+C,GAFO,IAAI3yB,KAAKxrB,KAAK2rhD,OAAOpzxB,qBAAuB,GAE3B,GAATp2sB,EACnBhE,EAAgB,GAARA,EAAa,IAErB,IAAIwt+C,EAAQ3rhD,KAAK2rhD,MAAQxt+C,EAEzB,OADQ,IAAI3yB,KAAKmggD,EAEnB,IAGFrshD,OAAO4D,eAAelD,KAAM,YAAa,CACvCmD,IAAK,IAAM2qhD,GACX7hhD,IAAMihN,IACJ4g0C,GAAY5g0C,EACLA,KAIX,IAAI02I,EAAM,EAAY5jW,KAAMywD,GAC5BzwD,KAAK2rhD,MAAQ/nrC,EAAI+nrC,KACnB,EJlDmBmJ,OIqDnBx1hD,OAAOgU,KAAK,IAAS4R,SAASxhB,IAC5BgxhD,GAAUh1hD,UAAUgE,GAAK,GAAQA,EAAC,IAIpCgxhD,GAAUh1hD,UAAU6wB,MAAQ,WAC1B,OAAO,IAAImkgD,GAAU10hD,KAAK2rhD,MAAO3rhD,KAAKwshD,GAAI,CACxCp4iC,OAAQp0e,KAAKo0e,OACbm/iC,UAAWvzhD,KAAKgyhD,WAChBjzlB,MAAO/+7B,KAAKgthD,OACZ+H,QAAS/0hD,KAAK+0hD,SAElB,EAMAL,GAAUh1hD,UAAUs1hD,YAAc,WAChC,OAAOh1hD,KAAKi1hD,cACd,EAKAP,GAAUh1hD,UAAUu1hD,aAAe,WACjC,OAAO,IAAIzpgD,KAAKxrB,KAAK2rhD,MACvB,EJhFmBmJ,GImFVJ,GJjFPp1hD,OAAOgU,KAAK,IAAS4R,SAAQxhB,IAC3BoxhD,GAAMp1hD,UAAUgE,GAAK,GAAQA,EAAC,IE2Bf,CAACgxhD,IAClBA,EAAUh1hD,UAAUylB,IAAM,SAAU+9B,EAAKq5T,GACvC,IAAIz7W,EAAId,KAAKuwB,QAEb,IAAKgsV,GAAgB,IAARr5T,EACX,OAAOpiD,EAET,IAAIg5U,EAAM95U,KAAKuwB,QAEf,GAAa,iBADbgsV,EAAO,EAAUA,IAGf,OADAz7W,EAAE6qhD,OAASzo+C,EACJpiD,EAGI,cAATy7W,IACFr5T,GAAO,EACPq5T,EAAO,QAGL,EAAGA,GACLz7W,EAAE6qhD,OAAS,EAAGpvqC,GAAQr5T,EACJ,SAATq5T,GAA4B,YAATA,EAC5Bz7W,EAAE6qhD,OAAS,EAAGhigC,KAAa,EAANzme,GACH,YAATq5T,GAA+B,WAATA,EAC/Bz7W,EAAE6qhD,OAAS,EAAGjigC,OAAe,EAANxme,GACL,gBAATq5T,IACTz7W,EAAE6qhD,OAAqB,GAAZ,EAAG9yxB,OAAc31sB,GAG9B,IAAIuw+C,EAAO,CAAC,EAOZ,GANI5liB,GAAKtxoB,IACPsxoB,GAAKtxoB,GAAMr3V,SAAS7iB,IAClBoxhD,EAAKpxhD,GAAKy3U,EAAIz3U,IAAG,IAIjBmyhD,GAAcj4qC,GAAO,CACvB,MAAMgsL,EAAOzuN,EAAIkmd,WAAWjgwB,QAAQoiB,OAASrhD,EAAEk/xB,WAAWjgwB,QAAQoiB,OAClErhD,EAAE6qhD,OAAgB,KAAPpj/B,EAAc,GAC3B,CASA,GANa,UAAThsL,IACFk3qC,EAAK/pgC,MAAQ5vM,EAAI4vM,QAAUxme,EAE3Buw+C,ED/EY,EAACA,EAAM35sC,KAEvB,GAAI25sC,EAAK/pgC,MAAQ,EAAG,CAClB,IAAIo9yB,EAAQnxyC,SAAS89/C,EAAK/pgC,MAAQ,GAAI,IACtC+pgC,EAAKhqgC,KAAO3vM,EAAI2vM,OAASq9yB,EACzB2sN,EAAK/pgC,MAAQ+pgC,EAAK/pgC,MAAQ,EAC5B,MAAO,GAAI+pgC,EAAK/pgC,MAAQ,EAAG,CACzB,IAAItmhB,EAAIP,KAAKmjH,IAAIyt6C,EAAK/pgC,OAClBo9yB,EAAQnxyC,SAASvyB,EAAI,GAAI,IACzBA,EAAI,IAAO,IACb0j0C,GAAS,GAEX2sN,EAAKhqgC,KAAO3vM,EAAI2vM,OAASq9yB,EAEzB2sN,EAAK/pgC,MAAQ+pgC,EAAK/pgC,MAAQ,GAC1B+pgC,EAAK/pgC,MAAQ+pgC,EAAK/pgC,MAAQ,GACP,KAAf+pgC,EAAK/pgC,QACP+pgC,EAAK/pgC,MAAQ,EAEjB,CACA,OAAO+pgC,GC2DI,CAAOA,EAAM35sC,IAGT,SAATyiC,EAAiB,CACnB,IAAIztQ,EAAMgrO,EAAIzkS,OAAe,EAAN6N,EACnB4rD,GAAO,IAAMA,EAAM,IACrB2k7C,EAAKp++C,KAAOy5D,EAEhB,CACA,GAAa,YAATytQ,GAAsC,aAAhBz7W,EAAE6thD,UAC1B7thD,EAAIA,EAAE6ohB,IAAI,YAAY,QAGnB,GAAa,SAATptK,EAAiB,CACxB,GAAIr5T,EAAM,EACRuw+C,EDtEa,EAACA,EAAM35sC,EAAKhrO,KAC/B2k7C,EAAKhqgC,KAAO3vM,EAAI2vM,OAChBgqgC,EAAK/pgC,MAAQ5vM,EAAI4vM,QACjB,IAAIr0e,EAAOykS,EAAIzkS,OAEf,IADAo++C,EAAKp++C,KAAOA,EAAOxyC,KAAKmjH,IAAIlX,GACrB2k7C,EAAKp++C,KAAO,GAAG,CACpBo++C,EAAK/pgC,OAAS,EACV+pgC,EAAK/pgC,MAAQ,IACf+pgC,EAAK/pgC,MAAQ,GACb+pgC,EAAKhqgC,MAAQ,GAEf,IAAI97gB,EAAM4mhD,GAAed,EAAK/pgC,MAAO+pgC,EAAKhqgC,MAC1CgqgC,EAAKp++C,MAAQ1nC,CACf,CACA,OAAO8lhD,GCwDMyB,CAASzB,EAAM35sC,EAAK52R,OACtB,CAEL,IAAI4rD,EAAMgrO,EAAIzkS,OAAS6N,EAEvBuw+C,EDzDW,EAACA,EAAM35sC,EAAKhrO,KAC7B,IAAI26a,EAAO3vM,EAAI2vM,OACXC,EAAQ5vM,EAAI4vM,QACZ/7gB,EAAM4mhD,GAAe7qgC,EAAOD,GAChC,KAAO36a,EAAMnhG,GACXmhG,GAAOnhG,EACP+7gB,GAAS,EACLA,GAAS,KACXA,GAAS,GACTD,GAAQ,GAEV97gB,EAAM4mhD,GAAe7qgC,EAAOD,GAI9B,OAFAgqgC,EAAK/pgC,MAAQA,EACb+pgC,EAAKp++C,KAAOy5D,EACL2k7C,GC0CM/qgC,CAAK+qgC,EAAM35sC,EAAKhrO,EACzB,CAEY,IAAR5rD,GAAa42R,EAAIs/uB,OAAOt4jC,EAAG,SAC7B2yhD,EAAKp++C,KAAOykS,EAAIzkS,OAAS6N,EAE7B,MAEK,GAAa,YAATq5T,EAAoB,CAI3B,GAHAk3qC,EAAK/pgC,MAAQ5vM,EAAI4vM,QAAgB,EAANxme,EAC3Buw+C,EAAKhqgC,KAAO3vM,EAAI2vM,OAEZgqgC,EAAK/pgC,MAAQ,EAAG,CAClB,IAAIo9yB,EAAQjk0C,KAAKyK,MAAMmmhD,EAAK/pgC,MAAQ,IAChCi3b,EAAY8ykB,EAAK/pgC,MAA0B,GAAlB7mhB,KAAKmjH,IAAI8gtC,GACtC2sN,EAAK/pgC,MAAQi3b,EACb8ykB,EAAKhqgC,MAAQq9yB,CACf,MAAO,GAAI2sN,EAAK/pgC,OAAS,GAAI,CAC3B,IAAIo9yB,EAAQjk0C,KAAKyK,MAAMmmhD,EAAK/pgC,MAAQ,IACpC+pgC,EAAK/pgC,MAAQ+pgC,EAAK/pgC,MAAQ,GAC1B+pgC,EAAKhqgC,MAAQq9yB,CACf,CACA2sN,EAAKp++C,KAAOykS,EAAIzkS,MAClB,MAEK,GAAa,SAATknU,EAAiB,CACxB,IAAI44qC,EAAWr7sC,EAAI2vM,OAASvme,EACxBky+C,EAAWt0hD,EAAE2ohB,OACjB,GAAI2rgC,EAAWD,EAAU,CACvB,IAAI50xC,EAAQ19P,KAAKyK,MAAM41C,EAAM,IAAM,EACnCpiD,EAAE6qhD,OAAS9ohD,KAAKmjH,IAAI,EAAG2ja,IAAMppR,EAC/B,MAAO,GAAI60xC,EAAWD,EAAU,CAC9B,IAAI50xC,EAAQ19P,KAAKyK,MAAM41C,EAAM,IAAM,EACnCpiD,EAAE6qhD,OAAS,EAAGhigC,IAAMppR,CACtB,CACF,KAEkB,WAATg8G,EACPk3qC,EAAKhqgC,KAAO3ohB,EAAE2ohB,OAAS,GACL,YAATltK,IACTk3qC,EAAKhqgC,KAAO3ohB,EAAE2ohB,OAAS,KAGzB,GAAIgrgC,GAASl4qC,GAAO,CAClB,IAAI5uW,EAAM,EAAY8lhD,EAAK/pgC,OAC3B+pgC,EAAKp++C,KAAOykS,EAAIzkS,OACZo++C,EAAKp++C,KAAO1nC,IACd8lhD,EAAKp++C,KAAO1nC,EAEhB,CAIA,OAHIrO,OAAOgU,KAAKmghD,GAAMpzhD,OAAS,GAC7B,EAAOS,EAAG2yhD,GAEL3yhD,CACT,EAGA4zhD,EAAUh1hD,UAAU0iL,SAAW,SAAUl/H,EAAKq5T,GAE5C,OADQv8W,KAAKuwB,QACJpL,KAAW,EAAP+9B,EAAUq5T,EACzB,EAEAm4qC,EAAUh1hD,UAAUk0hD,MAAQc,EAAUh1hD,UAAU0iL,SAChDsy2C,EAAUh1hD,UAAU21hD,KAAOX,EAAUh1hD,UAAUylB,KE1EjDA,CAAOuvgD,IDpEY,CAACA,IAClBA,EAAUh1hD,UAAU05jC,OAAS,SAAU91jC,EAAGi5W,EAAM+4qC,GAAU,GACxD,IAAIt0hD,EAAIhB,KACR,IAAKu8W,EACH,OAAO,KAGT,GAAiB,iBAANj5W,GAAkC,iBAATi5W,EAAmB,CACrD,IAAI3Y,EAAMtgW,EACVA,EAAIi5W,EACJA,EAAO3Y,CACT,CAYA,MAXiB,iBAANtgW,GAA+B,iBAANA,IAClCA,EAAI,IAAIoxhD,EAAUpxhD,EAAGtD,KAAKggyB,SAASt1xB,OAGrC6xW,EAAOA,EAAK9vW,QAAQ,KAAM,KAGV,IAAZ6ohD,GAAoBt0hD,EAAEwrhD,KAAOlphD,EAAEkphD,MACjClphD,EAAIA,EAAEitB,SACJi8/C,GAAKxrhD,EAAEwrhD,IAEP11/B,GAAMv6K,GACDu6K,GAAMv6K,GAAMv7W,KAAO81hB,GAAMv6K,GAAMj5W,GAEjC,IACT,GC0CFiyhD,CAAQb,IEnGWA,KACjB,MAAM/ujC,EAAU,CACd42d,QAAS,SAAU557B,GAEjB,IAAIgphD,EAAQe,EADZ/phD,EAAIgqhD,EAAQhqhD,EAAG3C,OAEf,OAAc,OAAV2rhD,EACK,KAEF3rhD,KAAK2rhD,MAAQA,CACtB,EACAti0B,SAAU,SAAU1mtB,GAElB,IAAIgphD,EAAQe,EADZ/phD,EAAIgqhD,EAAQhqhD,EAAG3C,OAEf,OAAc,OAAV2rhD,EACK,KAEF3rhD,KAAK2rhD,MAAQA,CACtB,EACA9n3C,QAAS,SAAUlhK,GAEjB,IAAIgphD,EAAQe,EADZ/phD,EAAIgqhD,EAAQhqhD,EAAG3C,OAEf,OAAc,OAAV2rhD,EACK,KAEF3rhD,KAAK2rhD,QAAUA,CACxB,EACA/w7C,UAAW,SAAUp0D,EAAOC,EAAK+u/C,GAAc,GAC7Chv/C,EAAQmm/C,EAAQnm/C,EAAOxmC,MACvBymC,EAAMkm/C,EAAQlm/C,EAAKzmC,MACnB,IAAIuld,EAAamnkC,EAASlm/C,GAC1B,GAAmB,OAAf++a,EACF,OAAO,KAET,IAAIC,EAAWknkC,EAASjm/C,GACxB,OAAiB,OAAb++a,EACK,KAELgwkC,EACKx1hD,KAAK46F,UAAUp0D,EAAOC,IAAQzmC,KAAK6jK,QAAQr9H,IAAUxmC,KAAK6jK,QAAQp9H,GAEpE8+a,EAAavld,KAAK2rhD,OAAS3rhD,KAAK2rhD,MAAQnmkC,CACjD,GAIFlmd,OAAOgU,KAAKqyd,GAASzgd,SAAQxhB,IAC3BgxhD,EAAUh1hD,UAAUgE,GAAKiie,EAAQjie,EAAC,GACnC,EFqDHwmH,CAAWwq6C,IG/FQA,KACjB,MAAM/ujC,EAAU,CACd8vjC,KAAM,SAAUjmhD,GlDHb,IAAmBihD,EkDsBpB,OAjBIw0M,EAASz1P,EAAKk5gB,OhCNjB,SAAa+sgC,GAClBt2vB,EAAYs2vB,EAAKvgrC,OAASiqb,EAC1B+uvB,GAAWuH,EAAKr4lB,MAAQ8wlB,EAC1B,CgCIQ,CAAK1+gD,EAAKk5gB,MAGRzjR,EAASz1P,EAAKi5gB,S5C8BjB,SAAagtgC,GAClBr2vB,EAAcq2vB,EAAKvgrC,OAASkqb,EAC5BquvB,EAAagI,EAAKr4lB,MAAQqwlB,CAC5B,C4ChCQxhhD,CAAKuD,EAAKi5gB,QlDVQh4d,EkDcNjhD,EAAKkmhD,alDd2D,qBAA1Cp2hD,OAAOI,UAAU6E,SAAS3E,KAAK6wD,ImBAlE,SAAaitH,GAClB8w2C,GAAmB9w2C,CACrB,C+BaQ,CAAOluK,EAAKkmhD,cAIVzwxC,EAASz1P,EAAKq+gD,OXpBjB,SAAa4H,GAChBv1lB,GAAUu1lB,EAAK31lB,IAAMI,GACrBE,GAAUq1lB,EAAK11lB,IAAMK,EACzB,CWkBQ,CAAQ5w7B,EAAKq+gD,MAER7thD,IACT,GAIFV,OAAOgU,KAAKqyd,GAASzgd,SAAQxhB,IAC3BgxhD,EAAUh1hD,UAAUgE,GAAKiie,EAAQjie,EAAC,GACnC,EHoEH+xhD,CAAQf,IAER,YIrGM,GAAO,CAACjk+C,EAAO+79C,EAAIrjgD,IAAY,IAAI,GAAUsnC,EAAO+79C,EAAIrjgD,GAGxDwsgD,GAAW,SAAU70hD,GACzB,IAAIi+7B,EAAQj+7B,EAAEkshD,QAAU,CAAC,EAIzB,OAHA1thD,OAAOgU,KAAKyr7B,GAAO756B,SAASxhB,IAC1B5C,EAAIA,EAAE4C,GAAGq77B,EAAMr77B,GAAE,IAEZ5C,CACT,EAGA,GAAK2qB,IAAM,CAAC+ggD,EAAIrjgD,KACd,IAAIroB,EAAI,IAAI,IAAU,IAAI0qB,MAAOic,UAAW+k/C,EAAIrjgD,GAEhD,OADAroB,EAAI60hD,GAAS70hD,GACNA,GAET,GAAKi+7B,MAAQ,CAACytlB,EAAIrjgD,KAChB,IAAIroB,EAAI,IAAI,IAAU,IAAI0qB,MAAOic,UAAW+k/C,EAAIrjgD,GAEhD,OADAroB,EAAI60hD,GAAS70hD,GACNA,EAAEoshD,QAAQ,MAAK,EAExB,GAAKlulB,SAAW,CAACwtlB,EAAIrjgD,KACnB,IAAIroB,EAAI,IAAI,IAAU,IAAI0qB,MAAOic,UAAW+k/C,EAAIrjgD,GAEhD,OADAroB,EAAI60hD,GAAS70hD,GACNA,EAAEqkB,IAAI,EAAG,OAAO+ngD,QAAQ,MAAK,EAEtC,GAAKpulB,UAAY,CAAC0tlB,EAAIrjgD,KACpB,IAAIroB,EAAI,IAAI,IAAU,IAAI0qB,MAAOic,UAAW+k/C,EAAIrjgD,GAEhD,OADAroB,EAAI60hD,GAAS70hD,GACNA,EAAEshL,SAAS,EAAG,OAAO8q2C,QAAQ,MAAK,EAE3C,GAAK7joC,OAAS,SAAUn8L,EAAM,CAAC,GAI7B,OAHA5tN,OAAOgU,KAAK45M,GAAKhoM,SAASxhB,IACxB,GAAUhE,UAAUgE,GAAKwpN,EAAIxpN,EAAC,IAEzB1D,IACT,EACA,GAAK8thD,UAAY,WAEf,OADQ,IAAI,IACHA,SACX,EACA,GAAKnghD,IAAM,SAAU6+gD,EAAIrjgD,GACvB,IAAIroB,EAAI,IAAI,GAAU,KAAM0rhD,EAAIrjgD,GAEhC,OADAroB,EAAE6qhD,MAAQ,OACH7qhD,CACT,EACA,GAAK+M,IAAM,SAAU2+gD,EAAIrjgD,GACvB,IAAIroB,EAAI,IAAI,GAAU,KAAM0rhD,EAAIrjgD,GAEhC,OADAroB,EAAE6qhD,OAAS,OACJ7qhD,CACT,EAGA,GAAK80hD,SCvDY,CAAC50hD,EAAGsC,KACnB,IAAIkjC,EAAQ,IAAI,GAAU,MACtBC,EAAM,IAAI,GAAU,MACxBD,EAAQA,EAAMqf,KAAK7kD,GAGjBylC,EADEnjC,EACImjC,EAAIof,KAAKviD,GAETkjC,EAAMrhB,IAAI,GAAI,WAGtB,IAAI0wgD,EAAYrv/C,EAAMwytB,OAClB88xB,EAAUrv/C,EAAIuytB,OAoBlB,OAnBU15vB,OAAOgU,KAAKkzB,EAAMsn/C,WAAWjhgD,QAAQ2//C,IAC7C,IAAyB,IAArBA,EAAGhshD,QAAQ,KACb,OAAO,EAET,IAAI4C,EAAI,IAAI,GAAU,KAAMophD,GACxBxzxB,EAAO51vB,EAAE41vB,OAEb,OAAIA,GAAQ68xB,GAAa78xB,GAAQ88xB,KAE3B98xB,IAAS68xB,GAAazyhD,EAAEy1vB,SAAWrytB,EAAMqytB,aAGzCG,IAAS88xB,GAAW1yhD,EAAEy1vB,SAAWpytB,EAAIoytB,SAKpC,GAEFk9xB,EDwBT,GAAKzvhD,QE3DL,QF8DA,GAAKquE,OAAS,GAAK00U,OACnB,0EG5DA,MAAM13I,EAAiB,CACnBzpJ,QAAS,EACTD,QAAS,GACToxS,UAAW,EACX/hR,OAAQ,GACRizB,OAAQ,IACR4tP,SAAU,GACV9tY,KAAK,EAGLivY,YAAY,EAGZ5lY,OAAQ,KAGRrE,IAAK4d,GAASA,GAGZuxH,EAAS37J,KAAK27J,SAAWolM,EAAiD,IAAI5jV,aAAa,GAAzD/b,IAAQ2/V,EAAI,IAAM3/V,EAAU2/V,EAAI,KAA1C,IAACA,EAE/B,MACM21D,EAAY,EAEZC,EAAa,EACbC,EAAc,EAEL,MAAMC,EACjB,WAAAz5Z,CAAYkpB,GACRnpB,KAAKmpB,QAAU7pB,OAAOa,OAAOb,OAAOY,OAAOyxQ,GAAiBxoP,GAC5DnpB,KAAK25Z,MAAQ,IAAIl6Z,MAAMO,KAAKmpB,QAAQ8+F,QAAU,GAC9CjoH,KAAKy8H,OAASz8H,KAAKmpB,QAAQuK,OAAS,EAAI,EACxC1zB,KAAK45Z,aAAe,EACxB,CAEA,IAAA/0Q,CAAKv5G,GACD,MAAM,IAACjhB,EAAG,QAAE69F,EAAO,QAAED,GAAWjoH,KAAKmpB,QAEjCkB,GAAKhD,QAAQw+B,KAAK,cAEtB,MAAMsrQ,EAAU,WAAa7lR,EAAOjrC,gBAChCgqB,GAAKhD,QAAQw+B,KAAKsrQ,GAEtBnxT,KAAKsrC,OAASA,EAGd,MAAM97B,EAAO,GAEb,IAAK,IAAI5O,EAAI,EAAGA,EAAI0qC,EAAOjrC,OAAQO,IAAK,CACpC,MAAMkC,EAAIwoC,EAAO1qC,GACjB,IAAKkC,EAAEiiC,SAAU,SAEjB,MAAO3F,EAAKF,GAAOp8B,EAAEiiC,SAASD,YACxB7gC,EAAIu6J,EAAOq7P,EAAKz6X,IAChBp8B,EAAIw7J,EAAOs7P,EAAK56X,IAEtB1vB,EAAK3N,KACDoC,EAAGjB,EACH+8D,IACAn/D,GACC,EACD,GAEAZ,KAAKmpB,QAAQuK,QAAQlkB,EAAK3N,KAAK,EACvC,CACA,IAAIk4Z,EAAO/5Z,KAAK25Z,MAAM1xS,EAAU,GAAKjoH,KAAKg6Z,YAAYxqZ,GAElD6a,GAAKhD,QAAQugH,QAAQupL,GAIzB,IAAK,IAAIxrT,EAAIsiH,EAAStiH,GAAKuiH,EAASviH,IAAK,CACrC,MAAM8lB,GAAOD,KAAKC,MAGlBsuY,EAAO/5Z,KAAK25Z,MAAMh0Z,GAAK3F,KAAKg6Z,YAAYh6Z,KAAKi6Z,SAASF,EAAMp0Z,IAExD0kB,GAAKhD,QAAQgD,IAAI,2BAA4B1kB,EAAGo0Z,EAAK3B,UAAW5sY,KAAKC,MAAQA,EACrF,CAIA,OAFIpB,GAAKhD,QAAQugH,QAAQ,cAElB5nI,IACX,CAEA,WAAA+uZ,CAAY1jX,EAAM1L,GACd,IAAIuuJ,IAAW7iJ,EAAK,GAAK,KAAO,IAAM,KAAO,IAAM,IACnD,MAAM8iJ,EAAStrL,KAAK8K,KAAK,GAAI9K,KAAKgL,IAAI,GAAIw9B,EAAK,KAC/C,IAAI+iJ,EAAqB,MAAZ/iJ,EAAK,GAAa,MAAQA,EAAK,GAAK,KAAO,IAAM,KAAO,IAAM,IAC3E,MAAMgjJ,EAASxrL,KAAK8K,KAAK,GAAI9K,KAAKgL,IAAI,GAAIw9B,EAAK,KAE/C,GAAIA,EAAK,GAAKA,EAAK,IAAM,IACrB6iJ,GAAU,IACVE,EAAS,SACN,GAAIF,EAASE,EAAQ,CACxB,MAAM8rO,EAAal6Z,KAAK+uZ,YAAY,CAAC7gO,EAAQC,EAAQ,IAAKE,GAAS1uJ,GAC7Dw6X,EAAan6Z,KAAK+uZ,YAAY,EAAE,IAAK5gO,EAAQC,EAAQC,GAAS1uJ,GACpE,OAAOu6X,EAAWl4Z,OAAOm4Z,EAC7B,CAEA,MAAMJ,EAAO/5Z,KAAK25Z,MAAM35Z,KAAKo6Z,WAAWz6X,IAClC+4X,EAAMqB,EAAKh4R,MAAM83R,EAAK3rO,GAAS4rO,EAAKzrO,GAASwrO,EAAKzrO,GAAS0rO,EAAK3rO,IAChE3+K,EAAOuqZ,EAAKvqZ,KACZ4/Y,EAAW,GACjB,IAAK,MAAM7jY,KAAMmtY,EAAK,CAClB,MAAMh1Z,EAAI1D,KAAKy8H,OAASlxG,EACxB6jY,EAASvtZ,KAAK2N,EAAK9L,EAAI81Z,GAAc,EAAIa,EAAe7qZ,EAAM9L,EAAG1D,KAAK45Z,cAAgB55Z,KAAKsrC,OAAO97B,EAAK9L,EAAI61Z,IAC/G,CACA,OAAOnK,CACX,CAEA,WAAAkL,CAAYC,GACR,MAAMC,EAAWx6Z,KAAKy6Z,aAAaF,GAC7BG,EAAa16Z,KAAK26Z,eAAeJ,GACjCnjX,EAAW,oCAEX2iX,EAAO/5Z,KAAK25Z,MAAMe,GACxB,IAAKX,EAAM,MAAM,IAAIvyY,MAAM4vB,GAE3B,MAAM5nC,EAAOuqZ,EAAKvqZ,KAClB,GAAIgrZ,EAAWx6Z,KAAKy8H,QAAUjtH,EAAKnP,OAAQ,MAAM,IAAImnB,MAAM4vB,GAE3D,MAAMr3C,EAAIC,KAAKmpB,QAAQmuH,QAAUt3I,KAAKmpB,QAAQohJ,OAAS1nK,KAAK6yF,IAAI,EAAGglU,EAAa,IAC1Ez2Z,EAAIuL,EAAKgrZ,EAAWx6Z,KAAKy8H,QACzBz5H,EAAIwM,EAAKgrZ,EAAWx6Z,KAAKy8H,OAAS,GAClCi8R,EAAMqB,EAAKjB,OAAO70Z,EAAGjB,EAAGjD,GACxBigC,EAAW,GACjB,IAAK,MAAMzU,KAAMmtY,EAAK,CAClB,MAAMh1Z,EAAI6nB,EAAKvrB,KAAKy8H,OAChBjtH,EAAK9L,EA1GC,KA0GsB62Z,GAC5Bv6X,EAASn+B,KAAK2N,EAAK9L,EAAI81Z,GAAc,EAAIa,EAAe7qZ,EAAM9L,EAAG1D,KAAK45Z,cAAgB55Z,KAAKsrC,OAAO97B,EAAK9L,EAAI61Z,IAEnH,CAEA,GAAwB,IAApBv5X,EAAS3/B,OAAc,MAAM,IAAImnB,MAAM4vB,GAE3C,OAAOpX,CACX,CAEA,SAAA46X,CAAUL,EAAW33V,EAAOzgB,GACxBygB,EAAQA,GAAS,GACjBzgB,EAASA,GAAU,EAEnB,MAAM04W,EAAS,GAGf,OAFA76Z,KAAK86Z,cAAcD,EAAQN,EAAW33V,EAAOzgB,EAAQ,GAE9C04W,CACX,CAEA,OAAAE,CAAQp1Z,EAAG1B,EAAGjB,GACV,MAAM+2Z,EAAO/5Z,KAAK25Z,MAAM35Z,KAAKo6Z,WAAWz0Z,IAClCo3L,EAAKl6L,KAAK6yF,IAAI,EAAG/vF,IACjB,OAAC4kK,EAAM,OAAEjzB,GAAUt3I,KAAKmpB,QACxBrmB,EAAIw0I,EAASizB,EACbzrI,GAAO97B,EAAIF,GAAKi6L,EAChBj9F,GAAU98F,EAAI,EAAIF,GAAKi6L,EAEvBrb,EAAO,CACTh2I,SAAU,IAkBd,OAfA1rC,KAAKg7Z,iBACDjB,EAAKh4R,OAAO99H,EAAInB,GAAKi6L,EAAIj+J,GAAM76B,EAAI,EAAInB,GAAKi6L,EAAIj9F,GAChDi6T,EAAKvqZ,KAAMvL,EAAGjB,EAAG+5L,EAAIrb,GAEf,IAANz9K,GACAjE,KAAKg7Z,iBACDjB,EAAKh4R,MAAM,EAAIj/H,EAAIi6L,EAAIj+J,EAAK,EAAGghE,GAC/Bi6T,EAAKvqZ,KAAMutL,EAAI/5L,EAAG+5L,EAAIrb,GAE1Bz9K,IAAM84L,EAAK,GACX/8L,KAAKg7Z,iBACDjB,EAAKh4R,MAAM,EAAGjjG,EAAKh8B,EAAIi6L,EAAIj9F,GAC3Bi6T,EAAKvqZ,MAAO,EAAGxM,EAAG+5L,EAAIrb,GAGvBA,EAAKh2I,SAASrrC,OAASqhL,EAAO,IACzC,CAEA,uBAAAu5O,CAAwBV,GACpB,IAAIW,EAAgBl7Z,KAAK26Z,eAAeJ,GAAa,EACrD,KAAOW,GAAiBl7Z,KAAKmpB,QAAQ8+F,SAAS,CAC1C,MAAMjoF,EAAWhgC,KAAKs6Z,YAAYC,GAElC,GADAW,IACwB,IAApBl7X,EAAS3/B,OAAc,MAC3Bk6Z,EAAYv6X,EAAS,GAAGwI,WAAW2yX,UACvC,CACA,OAAOD,CACX,CAEA,aAAAJ,CAAct3Y,EAAQ+2Y,EAAW33V,EAAOzgB,EAAQi5W,GAC5C,MAAMp7X,EAAWhgC,KAAKs6Z,YAAYC,GAElC,IAAK,MAAMrwU,KAASlqD,EAAU,CAC1B,MAAMiN,EAAQi9C,EAAM1hD,WAkBpB,GAhBIyE,GAASA,EAAMk8W,QACXiS,EAAUnuX,EAAMouX,aAAel5W,EAE/Bi5W,GAAWnuX,EAAMouX,YAGjBD,EAAUp7Z,KAAK86Z,cAAct3Y,EAAQypB,EAAMkuX,WAAYv4V,EAAOzgB,EAAQi5W,GAGnEA,EAAUj5W,EAEjBi5W,IAGA53Y,EAAO3hB,KAAKqoF,GAEZ1mE,EAAOnjB,SAAWuiE,EAAO,KACjC,CAEA,OAAOw4V,CACX,CAEA,WAAApB,CAAYxqZ,GACR,MAAMuqZ,EAAO,IAAI,IAAOvqZ,EAAKnP,OAASL,KAAKy8H,OAAS,EAAGz8H,KAAKmpB,QAAQgvY,SAAUn4Y,cAC9E,IAAK,IAAIpf,EAAI,EAAGA,EAAI4O,EAAKnP,OAAQO,GAAKZ,KAAKy8H,OAAQs9R,EAAK50Y,IAAI3V,EAAK5O,GAAI4O,EAAK5O,EAAI,IAG9E,OAFAm5Z,EAAKzxV,SACLyxV,EAAKvqZ,KAAOA,EACLuqZ,CACX,CAEA,gBAAAiB,CAAiBtC,EAAKlpZ,EAAMvL,EAAGjB,EAAG+5L,EAAIrb,GAClC,IAAK,MAAM9gL,KAAK83Z,EAAK,CACjB,MAAMh1Z,EAAI9C,EAAIZ,KAAKy8H,OACb6+R,EAAY9rZ,EAAK9L,EAAI81Z,GAAc,EAEzC,IAAIn/V,EAAM6sS,EAAIC,EACd,GAAIm0D,EACAjhW,EAAOkhW,EAAqB/rZ,EAAM9L,EAAG1D,KAAK45Z,cAC1C1yD,EAAK13V,EAAK9L,GACVyjW,EAAK33V,EAAK9L,EAAI,OACX,CACH,MAAMZ,EAAI9C,KAAKsrC,OAAO97B,EAAK9L,EAAI61Z,IAC/Bl/V,EAAOv3D,EAAE0lC,WACT,MAAOpJ,EAAKF,GAAOp8B,EAAEiiC,SAASD,YAC9BoiU,EAAK2yD,EAAKz6X,GACV+nU,EAAK2yD,EAAK56X,EACd,CAEA,MAAMx8B,EAAI,CACN6J,KAAM,EACNw4B,SAAU,CAAC,CACPliC,KAAKogD,MAAMjjD,KAAKmpB,QAAQohJ,QAAU28L,EAAKnqK,EAAK94L,IAC5CpB,KAAKogD,MAAMjjD,KAAKmpB,QAAQohJ,QAAU48L,EAAKpqK,EAAK/5L,MAEhDq3D,QAIJ,IAAI9uC,EAGAA,EAFA+vY,GAAat7Z,KAAKmpB,QAAQmwY,WAErB9pZ,EAAK9L,EAAI61Z,GAGTv5Z,KAAKsrC,OAAO97B,EAAK9L,EAAI61Z,IAAYhuY,QAG/BwiB,IAAPxiB,IAAkB7oB,EAAE6oB,GAAKA,GAE7Bm2J,EAAKh2I,SAAS7pC,KAAKa,EACvB,CACJ,CAEA,UAAA03Z,CAAWz0Z,GACP,OAAO9C,KAAK8K,IAAI3N,KAAKmpB,QAAQ++F,QAASrlH,KAAKgL,IAAIhL,KAAKyK,OAAO3H,GAAI3F,KAAKmpB,QAAQ8+F,QAAU,GAC1F,CAEA,QAAAgyS,CAASF,EAAMp6X,GACX,MAAM,OAAC23G,EAAM,OAAEizB,EAAM,OAAE72I,EAAM,UAAE2lY,GAAar5Z,KAAKmpB,QAC3CppB,EAAIu3I,GAAUizB,EAAS1nK,KAAK6yF,IAAI,EAAG/1D,IACnCnwB,EAAOuqZ,EAAKvqZ,KACZgsZ,EAAW,GACX/+R,EAASz8H,KAAKy8H,OAGpB,IAAK,IAAI77H,EAAI,EAAGA,EAAI4O,EAAKnP,OAAQO,GAAK67H,EAAQ,CAE1C,GAAIjtH,EAAK5O,EAtQD,IAsQqB++B,EAAM,SACnCnwB,EAAK5O,EAvQG,GAuQgB++B,EAGxB,MAAM17B,EAAIuL,EAAK5O,GACToC,EAAIwM,EAAK5O,EAAI,GACb66Z,EAAc1B,EAAKjB,OAAOtpZ,EAAK5O,GAAI4O,EAAK5O,EAAI,GAAIb,GAEhD27Z,EAAkBlsZ,EAAK5O,EAAI44Z,GACjC,IAAIl9K,EAAYo/K,EAGhB,IAAK,MAAMC,KAAcF,EAAa,CAClC,MAAM/3Z,EAAIi4Z,EAAal/R,EAEnBjtH,EAAK9L,EArRL,GAqRwBi8B,IAAM28M,GAAa9sO,EAAK9L,EAAI81Z,GAC5D,CAGA,GAAIl9K,EAAYo/K,GAAmBp/K,GAAa+8K,EAAW,CACvD,IAGIyC,EAHAF,EAAK33Z,EAAIy3Z,EACTG,EAAK74Z,EAAI04Z,EAGTK,GAAoB,EAGxB,MAAMxwY,IAAO3qB,EAAI67H,EAAS,IAAM,IAAM98F,EAAO,GAAK3/B,KAAKsrC,OAAOjrC,OAE9D,IAAK,MAAMs7Z,KAAcF,EAAa,CAClC,MAAM/3Z,EAAIi4Z,EAAal/R,EAEvB,GAAIjtH,EAAK9L,EAtST,IAsS6Bi8B,EAAM,SACnCnwB,EAAK9L,EAvSL,GAuSwBi8B,EAExB,MAAMs8X,EAAazsZ,EAAK9L,EAAI81Z,GAC5BoC,GAAMpsZ,EAAK9L,GAAKu4Z,EAChBJ,GAAMrsZ,EAAK9L,EAAI,GAAKu4Z,EAEpBzsZ,EAAK9L,EA3SH,GA2SwB6nB,EAEtBmI,IACKooY,IACDA,EAAoB97Z,KAAKilM,KAAKz1L,EAAM5O,GAAG,GACvCm7Z,EAAmB/7Z,KAAK45Z,aAAav5Z,OACrCL,KAAK45Z,aAAa/3Z,KAAKi6Z,IAE3BpoY,EAAOooY,EAAmB97Z,KAAKilM,KAAKz1L,EAAM9L,IAElD,CAEA8L,EAAK5O,EAvTC,GAuToB2qB,EAC1BiwY,EAAS35Z,KAAK+5Z,EAAKt/K,EAAWu/K,EAAKv/K,EAAWv8K,IAAUx0C,GAAK,EAAG+wN,GAC5D5oN,GAAQ8nY,EAAS35Z,KAAKk6Z,EAE9B,KAAO,CACH,IAAK,IAAI33Z,EAAI,EAAGA,EAAIq4H,EAAQr4H,IAAKo3Z,EAAS35Z,KAAK2N,EAAK5O,EAAIwD,IAExD,GAAIk4O,EAAY,EACZ,IAAK,MAAMq/K,KAAcF,EAAa,CAClC,MAAM/3Z,EAAIi4Z,EAAal/R,EACvB,KAAIjtH,EAAK9L,EAnUb,IAmUiCi8B,GAA7B,CACAnwB,EAAK9L,EApUT,GAoU4Bi8B,EACxB,IAAK,IAAIv7B,EAAI,EAAGA,EAAIq4H,EAAQr4H,IAAKo3Z,EAAS35Z,KAAK2N,EAAK9L,EAAIU,GAFb,CAG/C,CAER,CACJ,CAEA,OAAOo3Z,CACX,CAGA,YAAAf,CAAaF,GACT,OAAQA,EAAYv6Z,KAAKsrC,OAAOjrC,QAAW,CAC/C,CAGA,cAAAs6Z,CAAeJ,GACX,OAAQA,EAAYv6Z,KAAKsrC,OAAOjrC,QAAU,EAC9C,CAEA,IAAA4kM,CAAKz1L,EAAM5O,EAAG2vB,GACV,GAAI/gB,EAAK5O,EAAI44Z,GAAc,EAAG,CAC1B,MAAMvsX,EAAQjtC,KAAK45Z,aAAapqZ,EAAK5O,EAAI64Z,IACzC,OAAOlpY,EAAQjxB,OAAOa,OAAO,CAAC,EAAG8sC,GAASA,CAC9C,CACA,MAAM2L,EAAW54C,KAAKsrC,OAAO97B,EAAK5O,EAAI24Z,IAAY/wX,WAC5ChlB,EAASxjB,KAAKmpB,QAAQkG,IAAIupB,GAChC,OAAOroB,GAAS/M,IAAWo1B,EAAWt5C,OAAOa,OAAO,CAAC,EAAGqjB,GAAUA,CACtE,EAGJ,SAAS62Y,EAAe7qZ,EAAM5O,EAAGg5Z,GAC7B,MAAO,CACHrtZ,KAAM,UACNgf,GAAI/b,EAAK5O,EAAI24Z,GACb/wX,WAAY+yX,EAAqB/rZ,EAAM5O,EAAGg5Z,GAC1C70X,SAAU,CACNx4B,KAAM,QACNu4B,YAAa,EA+BX7gC,EA/BiBuL,EAAK5O,GAgCb,KAAXqD,EAAI,KAhCyB+xhD,EAAKxmhD,EAAK5O,EAAI,OA+BvD,IAAcqD,CA5Bd,CAEA,SAASs3Z,EAAqB/rZ,EAAM5O,EAAGg5Z,GACnC,MAAMrwW,EAAQ/5C,EAAK5O,EAAI44Z,GACjB4C,EACF7yW,GAAS,IAAQ,GAAG1mD,KAAKogD,MAAMsG,EAAQ,QACvCA,GAAS,IAAU1mD,KAAKogD,MAAMsG,EAAQ,KAAO,GAA7B,IAAuCA,EACrD8yW,EAAY7sZ,EAAK5O,EAAI64Z,GACrBjxX,GAA4B,IAAf6zX,EAAmB,CAAC,EAAI/8Z,OAAOa,OAAO,CAAC,EAAGy5Z,EAAayC,IAC1E,OAAO/8Z,OAAOa,OAAOqoC,EAAY,CAC7B2gX,SAAS,EACTgS,WAAY3rZ,EAAK5O,EAAI24Z,GACrB8B,YAAa9xW,EACb+yW,wBAAyBF,GAEjC,CAGA,SAASvC,EAAKz6X,GACV,OAAOA,EAAM,IAAM,EACvB,CACA,SAAS06X,EAAK56X,GACV,MAAMu0F,EAAM5wH,KAAK4wH,IAAIv0F,EAAMr8B,KAAKsmC,GAAK,KAC/BnmC,EAAK,GAAM,IAAOH,KAAKwnB,KAAK,EAAIopG,IAAQ,EAAIA,IAAQ5wH,KAAKsmC,GAC/D,OAAOnmC,EAAI,EAAI,EAAIA,EAAI,EAAI,EAAIA,CACnC,CAMA,SAASgzhD,EAAKhzhD,GACV,MAAMy0H,GAAM,IAAU,IAAJz0H,GAAWH,KAAKsmC,GAAK,IACvC,OAAO,IAAMtmC,KAAKskK,KAAKtkK,KAAKkxB,IAAI0jG,IAAO50H,KAAKsmC,GAAK,EACrD,mVCnaA,IAAI8s/C,EAAO,CACXA,QAAe,UACXC,EAAmB,KAAMC,EAAe,KAExCC,EAAa,CAAE,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAE9FC,EAAQ,CACJ,EAAa,KACb,EAAY,MACZ,EAAY,MACZ,GAAY,IACZ,IAAc,IACd,IAAc,IACd,IAAa,KACb,IAAc,IACd,IAAc,IACd,IAAa,KACb,IAAa,KACb,IAAa,KACb,IAAa,KACb,IAAa,KACb,IAAa,KACb,IAAa,KACb,IAAc,IACd,IAAa,KACb,IAAa,KACb,GAAa,MAGjBC,EAAW,SAAS9gyC,IAA+C,GAA3B4gyC,EAAW51hD,QAAQg1P,KAAmB2gyC,EAAeE,EAAM,GAAK7gyC,EAAI,EAG5G+gyC,EAAS,SAAS/gyC,GAAiB0gyC,EAAmB1gyC,EAAI8gyC,EAAS9gyC,EAAK,EAC5E,SAASghyC,IAAaD,EAAO,MAHLD,EAAS,KAGiB,CAElD,SAASG,EAAWjnhD,GAAmE,IAA9B,IAAIlP,EAAsB,GAAYM,EAAI,EAAGi+H,EAAMrvH,EAAKnP,OAAQO,EAAIi+H,IAAOj+H,EAAGN,EAAEM,GAAK4O,EAAKuJ,WAAWnY,GAAI,OAAON,CAAG,CAO5K,SAASo2hD,EAAYlnhD,GAEpB,IADA,IAAIlP,EAAsB,GAClBM,EAAI,EAAGA,EAAK4O,EAAKnP,QAAQ,IAAMO,EAAGN,EAAEM,GAAKd,OAAO4nB,aAAalY,EAAKuJ,WAAW,EAAEnY,EAAE,IAAM4O,EAAKuJ,WAAW,EAAEnY,IAAI,IACrH,OAAON,EAAEuM,KAAK,GACf,CAEA,IAWI8phD,EAXAC,EAAQ,SAASpnhD,GACpB,IAAIgrd,EAAKhrd,EAAKuJ,WAAW,GAAI0hd,EAAKjrd,EAAKuJ,WAAW,GAClD,OAAS,KAANyhd,GAAoB,KAANC,EAblB,SAAqBjrd,GAEpB,IADA,IAAIlP,EAAsB,GAClBM,EAAI,EAAGA,EAAK4O,EAAKnP,QAAQ,IAAMO,EAAGN,EAAEM,GAAKd,OAAO4nB,aAAalY,EAAKuJ,WAAW,EAAEnY,IAAM4O,EAAKuJ,WAAW,EAAEnY,EAAE,IAAI,IACrH,OAAON,EAAEuM,KAAK,GACf,CASqCgqhD,CAAYrnhD,EAAKzN,MAAM,IAClD,KAANy4d,GAAoB,KAANC,EAAmBi8jC,EAAYlnhD,EAAKzN,MAAM,IAClD,OAANy4d,EAAqBhrd,EAAKzN,MAAM,GAC5ByN,CACR,EAEIsnhD,EAAW,SAAc7yhD,GAA2B,OAAOnE,OAAO4nB,aAAazjB,EAAI,EACnF8yhD,EAAW,SAAc9yhD,GAA2B,OAAOnE,OAAO4nB,aAAazjB,EAAI,EAGvF,SAAS+yhD,EAAYC,GACpBN,EAAWM,EACXV,EAAS,SAAS/gyC,GAAiB0gyC,EAAmB1gyC,EAAI8gyC,EAAS9gyC,EAAK,EACxEohyC,EAAQ,SAASpnhD,GAChB,OAA0B,MAAvBA,EAAKuJ,WAAW,IAAsC,MAAvBvJ,EAAKuJ,WAAW,GAAsB49gD,EAASpvqC,MAAM1+V,OAAO,KAAM4tgD,EAAWjnhD,EAAKzN,MAAM,KACnHyN,CACR,EACAsnhD,EAAW,SAAc7yhD,GACxB,OAAwB,OAArBiyhD,EAAkCp2hD,OAAO4nB,aAAazjB,GAClD0yhD,EAASpvqC,MAAM1+V,OAAOqtgD,EAAkB,CAAG,IAAFjyhD,EAAMA,GAAG,IAAI,EAC9D,EACA8yhD,EAAW,SAAc9yhD,GACxB,OAAO0yhD,EAASpvqC,MAAM1+V,OAAOstgD,EAAc,CAAClyhD,IAAI,EACjD,EACAizhD,IACD,CAEA,IAAIC,EAAQ,KAERC,EAAa,oEACjB,SAASC,EAAc5m+C,GAGrB,IAFA,IAAInwD,EAAI,GACJk6d,EAAK,EAAGC,EAAK,EAAG68jC,EAAK,EAAG7igC,EAAK,EAAG1hZ,EAAK,EAAGwk5C,EAAK,EAAGC,EAAK,EAChD52hD,EAAI,EAAGA,EAAI6vD,EAAMpwD,QAExBo0hB,GADAj6D,EAAK/pa,EAAM13C,WAAWnY,OACX,EAEXmyI,GAAW,EAALynV,IAAW,GADjBC,EAAKhqa,EAAM13C,WAAWnY,OACK,EAE3B22hD,GAAW,GAAL98jC,IAAY,GADlB68jC,EAAK7m+C,EAAM13C,WAAWnY,OACM,EAC5B42hD,EAAU,GAALF,EACDhr/C,MAAMmub,GACR88jC,EAAKC,EAAK,GACDlr/C,MAAMgr/C,KACfE,EAAK,IAEPl3hD,GAAK82hD,EAAWv+gD,OAAO47gB,GAAM2igC,EAAWv+gD,OAAOk6H,GAAMqk5C,EAAWv+gD,OAAO0+gD,GAAMH,EAAWv+gD,OAAO2+gD,GAEjG,OAAOl3hD,CACT,CACA,SAASm3hD,EAAchn+C,GACrB,IAAInwD,EAAI,GACJk6d,EAAK,EAAGC,EAAK,EAAG68jC,EAAK,EAAWvk5C,EAAK,EAAGwk5C,EAAK,EAAGC,EAAK,EACzD/m+C,EAAQA,EAAMhkD,QAAQ,eAAgB,IACtC,IAAK,IAAI7L,EAAI,EAAGA,EAAI6vD,EAAMpwD,QAGxBm6d,EAFK48jC,EAAW52hD,QAAQiwD,EAAM53C,OAAOjY,OAE1B,GADXmyI,EAAKqk5C,EAAW52hD,QAAQiwD,EAAM53C,OAAOjY,QAChB,EACrBN,GAAKR,OAAO4nB,aAAa8yc,GAEzBC,GAAW,GAAL1nV,IAAY,GADlBwk5C,EAAKH,EAAW52hD,QAAQiwD,EAAM53C,OAAOjY,QACT,EACjB,KAAP22hD,IACFj3hD,GAAKR,OAAO4nB,aAAa+yc,IAG3B68jC,GAAW,EAALC,IAAW,GADjBC,EAAKJ,EAAW52hD,QAAQiwD,EAAM53C,OAAOjY,OAE1B,KAAP42hD,IACFl3hD,GAAKR,OAAO4nB,aAAa4vgD,IAG7B,OAAOh3hD,CACT,CACA,IAAIo3hD,EAAuB,WAAc,MAAyB,oBAAX/vgD,QAA6C,oBAAZ1hB,cAAuD,IAArBA,QAAQI,YAA8BJ,QAAQI,SAASgjF,IAAO,CAA7J,GAEvBsu8C,EAA2B,WAC9B,GAAqB,oBAAXhwgD,OAAwB,CACjC,IAAIiwgD,GAAQjwgD,OAAO5J,KACnB,IAAI65gD,EAAM,IAAMjwgD,OAAO5J,KAAK,MAAO,OAAS,CAAE,MAAM5e,GAAKy4hD,GAAO,CAAM,CACtE,OAAOA,EAAO,SAAStxS,EAAKq7C,GAAO,OAAO,EAAQ,IAAIh6wC,OAAO2+tC,EAAKq7C,GAAO,IAAIh6wC,OAAO2+tC,EAAM,EAAI3+tC,OAAO5J,KAAK1a,KAAKskB,OAChH,CACA,OAAO,WAAY,CACnB,CAP8B,GAU/B,SAASkwgD,EAAYh55C,GAEpB,OAAG645C,EAAgB/vgD,OAAOm0O,MAAQn0O,OAAOm0O,MAAMj9H,GAAO,IAAIl3G,OAAOk3G,GACrC,oBAAdl/G,WAA4B,IAAIA,WAAWk/G,GAAO,IAAIp/H,MAAMo/H,EAE3E,CAEA,SAASi55C,EAAej55C,GAEvB,OAAG645C,EAAgB/vgD,OAAO+vvC,YAAc/vvC,OAAO+vvC,YAAY74oC,GAAO,IAAIl3G,OAAOk3G,GACjD,oBAAdl/G,WAA4B,IAAIA,WAAWk/G,GAAO,IAAIp/H,MAAMo/H,EAE3E,CAEA,IAAIk55C,EAAM,SAAaj3hD,GACtB,OAAG42hD,EAAgBC,EAAY72hD,EAAG,UAC3BA,EAAE8D,MAAM,IAAIyqB,KAAI,SAASprB,GAA0B,OAAyB,IAAlBA,EAAE8U,WAAW,EAAW,GAC1F,EAEA,SAASi/gD,EAAKl3hD,GACb,GAA0B,oBAAhBwd,YAA6B,OAAOy5gD,EAAIj3hD,GAElD,IADA,IAAIwlvC,EAAM,IAAIhouC,YAAYxd,EAAET,QAASknD,EAAO,IAAI5nC,WAAW2muC,GAClD1lvC,EAAE,EAAGA,GAAGE,EAAET,SAAUO,EAAG2mD,EAAK3mD,GAAuB,IAAlBE,EAAEiY,WAAWnY,GACvD,OAAO0lvC,CACR,CAEA,SAAS2xS,EAAIzohD,GACZ,GAAG/P,MAAMkS,QAAQnC,GAAO,OAAOA,EAAK6f,KAAI,SAASxuB,GAAK,OAAOf,OAAO4nB,aAAa7mB,EAAI,IAAGgM,KAAK,IAC/D,IAA9B,IAAIvM,EAAsB,GAAYM,EAAI,EAAGA,EAAI4O,EAAKnP,SAAUO,EAAGN,EAAEM,GAAKd,OAAO4nB,aAAalY,EAAK5O,IAAK,OAAON,EAAEuM,KAAK,GACvH,CAOA,SAASqrhD,EAAK1ohD,GACb,GAAyB,oBAAf8O,YAA4B,MAAM,IAAIkJ,MAAM,eACtD,GAAGhY,aAAgB8O,YAAa,OAAO45gD,EAAK,IAAIv4gD,WAAWnQ,IAG3D,IADA,IAAIlP,EAAI,IAAIb,MAAM+P,EAAKnP,QACfO,EAAI,EAAGA,EAAI4O,EAAKnP,SAAUO,EAAGN,EAAEM,GAAK4O,EAAK5O,GACjD,OAAON,CACR,CAEA,IAAI63hD,EAAUT,EAAU,SAASU,GAAQ,OAAOzwgD,OAAO3lB,OAAOo2hD,EAAK/ogD,KAAI,SAASi3tC,GAAO,OAAO3+tC,OAAO49O,SAAS+g/B,GAAOA,EAAMqxS,EAAYrxS,EAAM,IAAK,EAAI,SAAS8xS,GAC9J,GAAyB,oBAAfz4gD,WAA4B,CACrC,IAAI/e,EAAI,EAAGolyC,EAAS,EACpB,IAAIplyC,EAAI,EAAGA,EAAIw3hD,EAAK/3hD,SAAUO,EAAGolyC,GAAUoyP,EAAKx3hD,GAAGP,OACnD,IAAIC,EAAI,IAAIqf,WAAWqmxC,GACnBnnqC,EAAM,EACV,IAAIj+H,EAAI,EAAGolyC,EAAS,EAAGplyC,EAAIw3hD,EAAK/3hD,OAAQ2lyC,GAAUnnqC,IAAOj+H,EAExD,GADAi+H,EAAMu55C,EAAKx3hD,GAAGP,OACX+3hD,EAAKx3hD,aAAc+e,WAAYrf,EAAE2L,IAAImshD,EAAKx3hD,GAAIolyC,OAC5C,IAAqB,iBAAXoyP,EAAKx3hD,GAAkB,KAAM,MACvCN,EAAE2L,IAAI,IAAI0T,WAAWy4gD,EAAKx3hD,IAAKolyC,EAAO,CAE5C,OAAO1lyC,CACR,CACA,MAAO,GAAG0B,OAAOzB,MAAM,GAAI63hD,EAAK/ogD,KAAI,SAASi3tC,GAAO,OAAO7mvC,MAAMkS,QAAQ20uC,GAAOA,EAAM,GAAGvkvC,MAAMnC,KAAK0mvC,EAAM,IAC3G,EAkCI+xS,EAAO,UAAWpwS,EAAO,mBAqB7B,SAASqwS,EAAQr0hD,GAAuD,IAA5B,IAAI3D,EAAI,GAAIM,EAAIqD,EAAE5D,OAAO,EAASO,GAAG,GAAGN,GAAK2D,EAAE4U,OAAOjY,KAAM,OAAON,CAAG,CAClH,SAASi4hD,EAAKt1hD,EAAUN,GAAyB,IAAIvD,EAAE,GAAG6D,EAAG,OAAO7D,EAAEiB,QAAQsC,EAAEvD,EAAEg+H,GAAK,IAAIz6H,EAAEvD,EAAEiB,QAAQjB,CAAE,CACzG,SAASo5hD,EAAKv1hD,EAAUN,GAAyB,IAAIvD,EAAE,GAAG6D,EAAE,OAAO7D,EAAEiB,QAAQsC,EAAEvD,EAAEg+H,GAAK,IAAIz6H,EAAEvD,EAAEiB,QAAQjB,CAAE,CACxG,SAASq5hD,EAAMx1hD,EAAUN,GAAyB,IAAIvD,EAAE,GAAG6D,EAAG,OAAO7D,EAAEiB,QAAQsC,EAAEvD,EAAEA,EAAEg+H,GAAK,IAAIz6H,EAAEvD,EAAEiB,OAAQ,CAG1G,IAAIq4hD,EAAqB71hD,KAAK6yF,IAAI,EAAE,IACpC,SAASij8C,EAAM11hD,EAAUN,GAAyB,OAAGM,EAAEy1hD,GAAOz1hD,GAAGy1hD,EAHjE,SAAgBz1hD,EAAUN,GAAyB,IAAIvD,EAAE,GAAGyD,KAAKogD,MAAMhgD,GAAI,OAAO7D,EAAEiB,QAAQsC,EAAEvD,EAAEg+H,GAAK,IAAIz6H,EAAEvD,EAAEiB,QAAQjB,CAAE,CAGxCw5hD,CAAO31hD,EAAEN,GAFxF,SAAgBM,EAAUN,GAAyB,IAAIvD,EAAE,GAAG6D,EAAG,OAAO7D,EAAEiB,QAAQsC,EAAEvD,EAAEg+H,GAAK,IAAIz6H,EAAEvD,EAAEiB,QAAQjB,CAAE,CAEey5hD,CAAtBh2hD,KAAKogD,MAAMhgD,GAAoBN,EAAI,CAEvI,SAASm2hD,EAAch4hD,EAAcF,GAAyC,OAAZA,EAAIA,GAAK,EAAUE,EAAET,QAAU,EAAIO,GAA8B,MAAR,GAAhBE,EAAEiY,WAAWnY,KAA6C,MAAR,GAAlBE,EAAEiY,WAAWnY,EAAE,KAA6C,MAAR,GAAlBE,EAAEiY,WAAWnY,EAAE,KAA6C,MAAR,GAAlBE,EAAEiY,WAAWnY,EAAE,KAA6C,MAAR,GAAlBE,EAAEiY,WAAWnY,EAAE,KAA6C,KAAR,GAAlBE,EAAEiY,WAAWnY,EAAE,KAA4C,MAAR,GAAlBE,EAAEiY,WAAWnY,EAAE,GAAgB,CACnV,IAAI8nhB,EAAiC,CACpC,CAAC,MAAO,UACR,CAAC,MAAO,UACR,CAAC,MAAO,WACR,CAAC,MAAO,aACR,CAAC,MAAO,YACR,CAAC,MAAO,UACR,CAAC,MAAO,aAELD,EAAmC,CACtC,CAAC,IAAK,MAAO,WACb,CAAC,IAAK,MAAO,YACb,CAAC,IAAK,MAAO,SACb,CAAC,IAAK,MAAO,SACb,CAAC,IAAK,MAAO,OACb,CAAC,IAAK,MAAO,QACb,CAAC,IAAK,MAAO,QACb,CAAC,IAAK,MAAO,UACb,CAAC,IAAK,MAAO,aACb,CAAC,IAAK,MAAO,WACb,CAAC,IAAK,MAAO,YACb,CAAC,IAAK,MAAO,aAoCVswgC,EAAY,CACf,EAAI,UACJ,EAAI,IACJ,EAAI,OACJ,EAAI,QACJ,EAAI,WACJ,EAAI,KACJ,GAAI,QACJ,GAAI,WACJ,GAAI,QACJ,GAAI,UACJ,GAAI,SACJ,GAAI,WACJ,GAAI,QACJ,GAAI,SACJ,GAAI,aACJ,GAAI,gBACJ,GAAI,OACJ,GAAI,UACJ,GAAI,cACJ,GAAI,iBACJ,GAAI,sBACJ,GAAI,sBACJ,GAAI,2BACJ,GAAI,QACJ,GAAI,YACJ,GAAI,SACJ,GAAI,WACJ,GAAI,IACJ,GAAI,4BAMDC,EAAkB,CACrB,EAAI,GAAI,EAAI,GAAI,EAAI,GAAI,EAAI,GAE5B,GAAK,EAAG,GAAK,EAAG,GAAK,EAAG,GAAK,EAE7B,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAEpC,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GACpC,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5B,GAAK,EAAG,GAAK,EAAG,GAAK,EAAG,GAAK,EAE7B,GAAK,EAAG,GAAI,GACZ,GAAI,GAAI,GAAI,GAAI,GAAI,GACpB,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5B,GAAI,GAAI,GAAI,GAAI,GAAI,GACpB,GAAI,GAAI,GAAI,GAAI,GAAI,GACpB,GAAI,GAKDC,EAAkB,CAErB,EAAI,4BACJ,GAAI,4BAGJ,EAAI,iCACJ,GAAI,iCAGJ,EAAI,kCACJ,GAAI,kCAGJ,EAAI,uCACJ,GAAI,uCAGJ,GAAI,8CAGJ,GAAI,uDAGJ,GAAI,sDAGJ,GAAI,gEAGL,SAASC,EAASj1hD,EAAcsB,EAAc4zhD,GAM7C,IALA,IAAIC,EAAMn1hD,EAAI,GAAK,EAAI,EACnB8B,EAAI9B,EAAIm1hD,EACRC,EAAM,EAAGC,EAAM,EAAGx0hD,EAAI,EACtBy0hD,EAAM,EAAGC,EAAM,EAAGxzhD,EAAI,EACtBnB,EAAIhC,KAAKyK,MAAMvH,GACbyzhD,EAAMj0hD,IAEXT,GADAD,EAAIhC,KAAKyK,MAAMvH,IACPuzhD,EAAMD,EACdrzhD,EAAInB,EAAI20hD,EAAMD,IACVxzhD,EAAIlB,EAAK,QACbkB,EAAI,GAAKA,EAAIlB,GACbw0hD,EAAMC,EAAKA,EAAMx0hD,EACjBy0hD,EAAMC,EAAKA,EAAMxzhD,EAGlB,GADGA,EAAIT,IAAQi0hD,EAAMj0hD,GAAKS,EAAIuzhD,EAAKz0hD,EAAIu0hD,IAAcrzhD,EAAIwzhD,EAAK10hD,EAAIw0hD,KAC9DH,EAAO,MAAO,CAAC,EAAGC,EAAMt0hD,EAAGkB,GAC/B,IAAIE,EAAIrD,KAAKyK,MAAM8rhD,EAAMt0hD,EAAEkB,GAC3B,MAAO,CAACE,EAAGkzhD,EAAIt0hD,EAAIoB,EAAEF,EAAGA,EACzB,CACA,SAASyzhD,EAAoBx2hD,EAAao5C,EAAcsnT,GACvD,GAAG1gW,EAAI,SAAWA,EAAI,EAAG,OAAO,KAChC,IAAIoyC,EAAU,EAAFpyC,EAAM4iD,EAAOhjD,KAAKyK,MAAM,OAASrK,EAAIoyC,IAAQqk/C,EAAI,EACzDC,EAAK,GACLz55C,EAAI,CAAC36H,EAAE8vC,EAAMnxC,EAAE2hD,EAAMxjD,EAAE,OAAOY,EAAEoyC,GAAMwQ,EAAK7iD,EAAE,EAAEI,EAAE,EAAET,EAAE,EAAE6C,EAAE,EAAEK,EAAE,EAAErC,EAAE,EAAE0C,EAAE,GAOzE,GANGrD,KAAKmjH,IAAIka,EAAI79H,GAAK,OAAM69H,EAAI79H,EAAI,GAChCg6C,GAAQA,EAAKu9+C,WAAUvk/C,GAAQ,MAC/B6qF,EAAI79H,EAAI,QACV69H,EAAI79H,EAAI,EACK,SAARwjD,IAAiBq6E,EAAIh8H,EAAI2hD,EAAO,IAAKxQ,IAAQ6qF,EAAI36H,IAE3C,KAAT8vC,EAAcsk/C,EAAOh2rC,EAAK,CAAC,KAAK,GAAG,IAAM,CAAC,KAAK,EAAE,IAAK+1rC,EAAI,OACxD,GAAY,IAATrk/C,EAAask/C,EAAOh2rC,EAAK,CAAC,KAAK,EAAE,IAAM,CAAC,KAAK,EAAE,GAAI+1rC,EAAI,MAC1D,CACDrk/C,EAAO,MAAMA,EAEhB,IAAI1yC,EAAI,IAAI6oB,KAAK,KAAM,EAAG,GAC1B7oB,EAAE8hC,QAAQ9hC,EAAE6hC,UAAY6Q,EAAO,GAC/Bsk/C,EAAO,CAACh3hD,EAAEslhB,cAAetlhB,EAAEulhB,WAAW,EAAEvlhB,EAAE6hC,WAC1Ck1/C,EAAM/2hD,EAAE4hC,SACL8Q,EAAO,KAAIqk/C,GAAOA,EAAM,GAAK,GAC7B/1rC,IAAI+1rC,EAgFT,SAAuBrk/C,EAAe/0C,GAEpCA,EAAE,IAAM,IACR,IAAIo5hD,EAAMrk/C,EAAK9Q,SAEf,OADG8Q,EAAO,KAAIqk/C,GAAOA,EAAM,GAAK,GACzBA,CACT,CAtFeG,CAAcl3hD,EAAGg3hD,GAC/B,CAMA,OALAz55C,EAAIl9H,EAAI22hD,EAAK,GAAIz55C,EAAI98H,EAAIu2hD,EAAK,GAAIz55C,EAAIv9H,EAAIg3hD,EAAK,GAC/Cz55C,EAAI18H,EAAIqiD,EAAO,GAAIA,EAAOhjD,KAAKyK,MAAMu4C,EAAO,IAC5Cq6E,EAAIr6H,EAAIggD,EAAO,GAAIA,EAAOhjD,KAAKyK,MAAMu4C,EAAO,IAC5Cq6E,EAAI16H,EAAIqgD,EACRq6E,EAAIh6H,EAAIwzhD,EACDx55C,CACR,CACA,IAAI455C,EAA2B,IAAItugD,KAAK,KAAM,GAAI,GAAI,EAAG,EAAG,GACxDuugD,EAA2BD,EAAYry/C,UACvCuy/C,EAA2B,IAAIxugD,KAAK,KAAM,EAAG,EAAG,EAAG,EAAG,GAC1D,SAASyugD,EAAch3hD,EAAY22hD,GAClC,IAAIjO,EAAqB1ohD,EAAEwkC,UAG3B,OAFGmy/C,EAAUjO,GAAS,UACd1ohD,GAAK+2hD,IAAarO,GAAS,QAC3BA,GAASoO,EAAoG,KAAxE92hD,EAAEs1vB,oBAAmCuhyB,EAAYvhyB,uBAAiC,KAChI,CAIA,SAAS2hyB,EAAkB55hD,GAC1B,OAA2B,GAAnBA,EAAEE,QAAQ,KAAcF,EAAIA,EAAEmM,QAAQ,2BAA4B,KAC3E,CAsBA,SAAS0thD,EAAgBl3hD,GACxB,IAAuD3C,EAAnDsF,EAAI/C,KAAKyK,MAAMzK,KAAKwnB,IAAIxnB,KAAKmjH,IAAI/iH,IAAIJ,KAAKu3hD,QAO9C,OALuB95hD,EAApBsF,IAAM,GAAKA,IAAM,EAAO3C,EAAEs0T,YAAY,GAAG3xT,GACpC/C,KAAKmjH,IAAIpgH,IAAM,EAjBxB,SAAuB3C,GACtB,IAAIM,EAAKN,EAAE,EAAE,GAAG,GACZ3C,EAAI45hD,EAAkBj3hD,EAAEmgD,QAAQ,KAAM,OAAG9iD,EAAED,QAAUkD,IACzDjD,EAAI2C,EAAEs0T,YAAY,KAAUl3T,QAAUkD,EAD6BjD,EAE5D2C,EAAE+7xB,cAAc,EACxB,CAY+Bq7vB,CAAcp3hD,GAC9B,KAAN2C,EAAc3C,EAAEmgD,QAAQ,IAAI3nB,OAAO,EAAE,IAV9C,SAAuBx4B,GACtB,IAAI3C,EAAI45hD,EAAkBj3hD,EAAEmgD,QAAQ,KACpC,OAAQ9iD,EAAED,QAAU4C,EAAE,EAAE,GAAG,KAAa,MAAN3C,GAAmB,OAANA,EAAc2C,EAAEs0T,YAAY,GAAKj3T,CACjF,CAQUg6hD,CAAcr3hD,GAEhBi3hD,EA3BR,SAA2B55hD,GAC1B,OAAsB,GAAnBA,EAAEE,QAAQ,KAAmBF,EACzBA,EAAEmM,QAAQ,8BAA8B,OAAOA,QAAQ,eAAe,QAC9E,CAwB0B8thD,CAAkBj6hD,EAAEswD,eAC9C,CAaA,SAAS4p+C,GAAYv3hD,EAAWo5C,GAC/B,cAAcp5C,GACb,IAAK,SAAU,OAAOA,EACtB,IAAK,UAAW,OAAOA,EAAI,OAAS,QACpC,IAAK,SAAU,OAAU,EAAFA,KAASA,EAAIA,EAAEsB,SAAS,IAAM41hD,EAAgBl3hD,GACrE,IAAK,YAAa,MAAO,GACzB,IAAK,SACJ,GAAQ,MAALA,EAAW,MAAO,GACrB,GAAGA,aAAauoB,KAAM,OAAOivgD,GAAW,GAAIR,EAAch3hD,EAAGo5C,GAAQA,EAAKu9+C,UAAWv9+C,GAEvF,MAAM,IAAI70B,MAAM,wCAA0CvkB,EAC3D,CAUA,SAASy3hD,GAAenuhD,EAAiBmuoC,EAAgBh99B,EAAKi92C,GAC7D,IAAiCz65C,EAA7B5/H,EAAE,GAAIswuB,EAAG,EAAG5luB,EAAG,EAAGhI,EAAI06K,EAAI16K,EAAQ43hD,EAAO,EAC7C,OAAOruhD,GACN,KAAK,GACJvJ,EAAI06K,EAAI16K,EAAI,IAEb,KAAK,IACL,OAAO03oC,EAAIr6oC,QACV,KAAK,EAAG,KAAK,EAAG6/H,EAAMl9H,EAAI,IAAK43hD,EAAO,EAAG,MACzC,QAAS165C,EAAMl9H,EAAI,IAAO43hD,EAAO,EAChC,MACF,KAAK,IACL,OAAOlgZ,EAAIr6oC,QACV,KAAK,EAAG,KAAK,EAAG6/H,EAAMw9C,EAAIt6K,EAAGw3hD,EAAOlgZ,EAAIr6oC,OAAQ,MAChD,KAAK,EAAG,OAAOoohB,EAAO/qW,EAAIt6K,EAAE,GAAG,GAC/B,KAAK,EAAG,OAAOqlhB,EAAO/qW,EAAIt6K,EAAE,GAAG,GAC/B,QAAS,OAAOqlhB,EAAO/qW,EAAIt6K,EAAE,GAAG,GAC/B,MACF,KAAK,IACL,OAAOs3oC,EAAIr6oC,QACV,KAAK,EAAG,KAAK,EAAG6/H,EAAMw9C,EAAI/6K,EAAGi4hD,EAAOlgZ,EAAIr6oC,OAAQ,MAChD,KAAK,EAAG,OAAOqohB,EAAKhrW,EAAIx3K,GAAG,GAC3B,QAAS,OAAOwihB,EAAKhrW,EAAIx3K,GAAG,GAC3B,MACF,KAAK,IACL,OAAOw0oC,EAAIr6oC,QACV,KAAK,EAAG,KAAK,EAAG6/H,EAAM,GAAGw9C,EAAIl4K,EAAE,IAAI,GAAIo1hD,EAAOlgZ,EAAIr6oC,OAAQ,MAC1D,QAAS,KAAM,oBAAsBq6oC,EACpC,MACF,KAAK,GACL,OAAOA,EAAIr6oC,QACV,KAAK,EAAG,KAAK,EAAG6/H,EAAMw9C,EAAIl4K,EAAGo1hD,EAAOlgZ,EAAIr6oC,OAAQ,MAChD,QAAS,KAAM,oBAAsBq6oC,EACpC,MACF,KAAK,GACL,OAAOA,EAAIr6oC,QACV,KAAK,EAAG,KAAK,EAAG6/H,EAAMw9C,EAAI73K,EAAG+0hD,EAAOlgZ,EAAIr6oC,OAAQ,MAChD,QAAS,KAAM,sBAAwBq6oC,EACtC,MACF,KAAK,IACJ,GAAU,KAAPA,GAAqB,MAAPA,GAAsB,MAAPA,GAAsB,OAAPA,GAAuB,QAAPA,EAAe,KAAM,sBAAwBA,EAC5G,OAAa,IAAVh99B,EAAIr7K,GAAmB,KAAPq4oC,GAAqB,MAAPA,GAEpB1voC,EAAV2vhD,GAAO,EAAgB,IAARA,EAAY,IAAO,IACnB,IAARA,EAAY,GAAK,GAC3B/pzB,EAAK/tuB,KAAKogD,MAAM,GAAMy6H,EAAIl6K,EAAIk6K,EAAIr7K,MACzB,GAAG2I,IAAI4luB,EAAK,GACV,MAAR8pa,EAA2B,IAAP9pa,EAAW,IAAM,GAAGA,EAAG5luB,GAC9C1K,EAAIi4hD,EAAK3nzB,EAAG,EAAI+pzB,GACL,OAARjgZ,EAAqBp6oC,EAAEm7B,OAAO,EAAE,GAC5B,IAAMn7B,EAAEm7B,OAAO,EAAEi/mC,EAAIr6oC,OAAO,KATmBk4hD,EAAK762C,EAAIl6K,EAAGk3oC,EAAIr6oC,QAUvE,KAAK,GACL,OAAOq6oC,GACN,IAAK,MAAO,IAAK,OAAQx6gC,EAAY,GAANw9C,EAAIn4K,EAAKm4K,EAAIl4K,EAAG,MAC/C,IAAK,MAAO,IAAK,OAAQ06H,EAAuB,IAAV,GAANw9C,EAAIn4K,EAAKm4K,EAAIl4K,GAAMk4K,EAAI73K,EAAG,MAC1D,IAAK,MAAO,IAAK,OAAQq6H,EAAkC,IAAV,IAAV,GAANw9C,EAAIn4K,EAAKm4K,EAAIl4K,GAAMk4K,EAAI73K,GAAMhD,KAAKogD,MAAMy6H,EAAIl6K,EAAEk6K,EAAIr7K,GAAI,MACvF,QAAS,KAAM,uBAAyBq4oC,EACvCkgZ,EAAsB,IAAflgZ,EAAIr6oC,OAAe,EAAI,EAAG,MACnC,KAAK,IACJ6/H,EAAMl9H,EAAG43hD,EAAO,EAGlB,OADaA,EAAO,EAAIrC,EAAKr45C,EAAK065C,GAAQ,EAE3C,CAKA,SAASC,GAAS/5hD,GAEjB,GAAGA,EAAET,QADG,EACU,OAAOS,EAEzB,IADA,IAAIsD,EAAKtD,EAAET,OAFH,EAEgBC,EAAIQ,EAAE26B,OAAO,EAAEr3B,GACjCA,GAAGtD,EAAET,OAAQ+D,GAHX,EAGiB9D,IAAIA,EAAED,OAAS,EAAI,IAAM,IAAMS,EAAE26B,OAAOr3B,EAHzD,GAIR,OAAO9D,CACR,CACA,IAAIw6hD,GAAO,KAYX,SAASC,GAAcrgZ,EAAgBh99B,GACtC,IAAIp9K,EACAw6W,EAAM4/xB,EAAIl6oC,QAAQ,KAAOk6oC,EAAIl6oC,QAAQ,KAAO,EAChD,GAAGk6oC,EAAIj0oC,MAAM,eAAgB,CAC5B,GAAU,GAAPi3K,EAAU,MAAO,SACf,GAAGA,EAAM,EAAG,MAAO,IAAMq92C,GAAcrgZ,GAAMh99B,GAClD,IAAIs5+B,EAAStc,EAAIl6oC,QAAQ,MAAqB,IAAZw2pC,IAAeA,EAAOtc,EAAIl6oC,QAAQ,MACpE,IAAI+F,EAAK1D,KAAKyK,MAAMzK,KAAKwnB,IAAIqzJ,GAAK76K,KAAKu3hD,QAAQpjY,EAG/C,GAFGzwpC,EAAK,IAAGA,GAAMywpC,IAEM,KADvB12pC,GAAKo9K,EAAI76K,KAAK6yF,IAAI,GAAGnvF,IAAKgxT,YAAYujD,EAAI,GAAGk8yB,EAAOzwpC,GAAIywpC,IACnDx2pC,QAAQ,KAAa,CACzB,IAAIw6hD,EAAQn4hD,KAAKyK,MAAMzK,KAAKwnB,IAAIqzJ,GAAK76K,KAAKu3hD,QAG1C,KAFuB,IAApB95hD,EAAEE,QAAQ,KAAaF,EAAIA,EAAEuY,OAAO,GAAK,IAAMvY,EAAEm7B,OAAO,GAAK,MAAQu//C,EAAQ16hD,EAAED,OAAOkG,GACpFjG,GAAK,MAAQ06hD,EAAQz0hD,GACF,OAAlBjG,EAAEm7B,OAAO,EAAE,IAEhBn7B,GADAA,EAAIA,EAAEuY,OAAO,GAAKvY,EAAEm7B,OAAO,EAAEu7nC,GAAU,IAAM12pC,EAAEm7B,OAAO,EAAEu7nC,IAClDvqpC,QAAQ,aAAa,MAAMA,QAAQ,QAAQ,MAElDnM,EAAIA,EAAEmM,QAAQ,MAAM,IACrB,CACAnM,EAAIA,EAAEmM,QAAQ,4BAA2B,SAASwuhD,EAAG7zL,EAAG8zL,EAAGC,GAAM,OAAO/zL,EAAK8zL,EAAKC,EAAG1//C,OAAO,GAAGu7nC,EAAOzwpC,GAAIywpC,GAAU,IAAMmkY,EAAG1//C,OAAOl1B,GAAM,GAAK,GAChJ,MAAOjG,EAAIo9K,EAAIshnB,cAAclkb,GAG7B,OAFG4/xB,EAAIj0oC,MAAM,WAAanG,EAAEmG,MAAM,cAAanG,EAAIA,EAAEm7B,OAAO,EAAEn7B,EAAED,OAAO,GAAK,IAAMC,EAAEuY,OAAOvY,EAAED,OAAO,IACjGq6oC,EAAIj0oC,MAAM,QAAUnG,EAAEmG,MAAM,SAAQnG,EAAIA,EAAEmM,QAAQ,MAAM,MACpDnM,EAAEmM,QAAQ,IAAI,IACtB,CACA,IAAI2uhD,GAAQ,yBASRC,GAAO,iBACPC,GAAa,WACbC,GAAQ,sBACZ,SAASC,GAAM7k9C,GAEd,IADA,IAAYl0D,EAARniB,EAAI,GACAM,EAAI,EAAGA,GAAK+1E,EAAIt2E,SAAUO,EAAG,OAAQ6hB,EAAGk0D,EAAI59D,WAAWnY,IAC9D,KAAK,GAAI,MACT,KAAK,GAAIN,GAAI,IAAK,MAClB,KAAK,GAAIA,GAAI,IAAK,MAClB,QAASA,GAAIR,OAAO4nB,aAAajF,GAElC,OAAOniB,CACR,CACA,SAASm7hD,GAAI/92C,EAAgB/6K,GAA2B,IAAIwmhB,EAAKtmhB,KAAK6yF,IAAI,GAAG/yF,GAAI,MAAO,GAAIE,KAAKogD,MAAMy6H,EAAMyrW,GAAIA,CAAK,CACtH,SAASyrgC,GAAIl32C,EAAgB/6K,GAC5B,IAAI+4hD,EAAQh+2C,EAAM76K,KAAKyK,MAAMowK,GAAMyrW,EAAKtmhB,KAAK6yF,IAAI,GAAG/yF,GACpD,OAAIA,GAAK,GAAKE,KAAKogD,MAAMy4+C,EAAQvygC,IAAK9ohB,OAAe,EAC9CwC,KAAKogD,MAAMy4+C,EAAQvygC,EAC3B,CAWA,SAASwygC,GAAcpvhD,EAAiBmuoC,EAAgBh99B,GACvD,GAA0B,KAAvBnxK,EAAKwM,WAAW,KAAc2hoC,EAAIj0oC,MAAM60hD,IAAa,CACvD,IAAIM,EAAOlhZ,EAAIjuoC,QAAQ,OAAO,IAAIA,QAAQ,MAAM,IAAIA,QAAQ,KAAK,IACjE,OAAGixK,GAAO,EAAUi+2C,GAAc,IAAKC,EAAMl+2C,GACtC,IAAMi+2C,GAAc,IAAKC,GAAOl+2C,GAAO,GAC/C,CACA,GAAsC,KAAnCg99B,EAAI3hoC,WAAW2hoC,EAAIr6oC,OAAS,GAAW,OA5E3C,SAAsBkM,EAAiBmuoC,EAAgBh99B,GAEtD,IADA,IAAIo9L,EAAM4/xB,EAAIr6oC,OAAS,EACS,KAA1Bq6oC,EAAI3hoC,WAAW+hW,EAAI,MAAaA,EACtC,OAAO+grC,GAAUtvhD,EAAMmuoC,EAAIj/mC,OAAO,EAAEq/U,GAAMp9L,EAAM76K,KAAK6yF,IAAI,GAAG,GAAGgljC,EAAIr6oC,OAAOy6W,IAC3E,CAwEkDghrC,CAAavvhD,EAAMmuoC,EAAKh99B,GACzE,IAAyB,IAAtBg99B,EAAIl6oC,QAAQ,KAAa,OAlF7B,SAAuB+L,EAAiBmuoC,EAAgBh99B,GACvD,IAAIq+2C,EAAOrhZ,EAAIjuoC,QAAQquhD,GAAK,IAAKps0C,EAAMgs7B,EAAIr6oC,OAAS07hD,EAAK17hD,OACzD,OAAOw7hD,GAAUtvhD,EAAMwvhD,EAAMr+2C,EAAM76K,KAAK6yF,IAAI,GAAG,EAAEg5H,IAAQtxF,GAAK,IAAIsxF,EACnE,CA+EoCst0C,CAAczvhD,EAAMmuoC,EAAKh99B,GAC5D,IAAyB,IAAtBg99B,EAAIl6oC,QAAQ,KAAa,OAAOu6hD,GAAcrgZ,EAAKh99B,GACtD,GAAyB,KAAtBg99B,EAAI3hoC,WAAW,GAAW,MAAO,IAAI4ihD,GAAcpvhD,EAAKmuoC,EAAIj/mC,OAAsB,KAAfi/mC,EAAI7hoC,OAAO,GAAQ,EAAE,GAAG6kK,GAC9F,IAAIp9K,EACAP,EAAsBmd,EAAIu5rB,EAAIwl1B,EAAOp5hD,KAAKmjH,IAAI03D,GAAM4c,EAAO5c,EAAM,EAAI,IAAM,GAC/E,GAAGg99B,EAAIj0oC,MAAM,SAAU,OAAO6zL,EAAOq+1C,EAAMsD,EAAKvhZ,EAAIr6oC,QACpD,GAAGq6oC,EAAIj0oC,MAAM,WAEZ,MAD2B,OAA3BnG,EAAIq4hD,EAAMj72C,EAAI,MAAkBp9K,EAAI,IAC7BA,EAAED,OAASq6oC,EAAIr6oC,OAASC,EAAIk7hD,GAAM9gZ,EAAIj/mC,OAAO,EAAEi/mC,EAAIr6oC,OAAOC,EAAED,SAAWC,EAE/E,GAAIP,EAAI26oC,EAAIj0oC,MAAM20hD,IAAS,OAtD5B,SAAsBr7hD,EAAqBk8hD,EAAiB3h2C,GAC3D,IAAI4h2C,EAAMvmgD,SAAS51B,EAAE,GAAG,IAAKmV,EAAKrS,KAAKogD,MAAMg5+C,EAAOC,GAAM71+C,EAAOxjD,KAAKyK,MAAM4H,EAAGgnhD,GAC3EC,EAAOjnhD,EAAKmxC,EAAK61+C,EAAME,EAAMF,EACjC,OAAO5h2C,GAAiB,IAATj0I,EAAa,GAAK,GAAGA,GAAQ,KAAe,IAAR81+C,EAAY/+5C,GAAK,IAAKr9H,EAAE,GAAGM,OAAS,EAAIN,EAAE,GAAGM,QAAUm4hD,EAAK2D,EAAIp8hD,EAAE,GAAGM,QAAUN,EAAE,GAAK,IAAMA,EAAE,GAAKw4hD,EAAK6D,EAAIr8hD,EAAE,GAAGM,QACrK,CAkDmCg8hD,CAAat8hD,EAAGk8hD,EAAM3h2C,GACxD,GAAGog9B,EAAIj0oC,MAAM,UAAW,OAAO6zL,EAAOq+1C,EAAMsD,EAAKvhZ,EAAIr6oC,OAASq6oC,EAAIl6oC,QAAQ,MAC1E,GAAIT,EAAI26oC,EAAIj0oC,MAAM40hD,IAEjB,OADA/6hD,EAAIm7hD,GAAI/92C,EAAK39K,EAAE,GAAGM,QAAQoM,QAAQ,aAAa,MAAM+uhD,GAAMz7hD,EAAE,KAAK0M,QAAQ,MAAM,IAAI+uhD,GAAMz7hD,EAAE,KAAK0M,QAAQ,YAAW,SAASwuhD,EAAI7zL,GAAM,MAAO,IAAMA,EAAKhquC,GAAK,IAAKo+5C,GAAaz7hD,EAAe,IAAIM,OAAO+m2C,EAAG/m2C,OAAS,KACxL,IAAvBq6oC,EAAIl6oC,QAAQ,MAAeF,EAAIA,EAAEmM,QAAQ,OAAO,KAGxD,GADAiuoC,EAAMA,EAAIjuoC,QAAQ,YAAa,MAC3B1M,EAAI26oC,EAAIj0oC,MAAM,gBACjB,OAAO6zL,EAAOmh2C,GAAIQ,EAAMl8hD,EAAE,GAAGM,QAAQoM,QAAQ,kBAAkB,OAAOA,QAAQ,YAAY,OAAOA,QAAQ,OAAO1M,EAAE,GAAGM,OAAO,KAAK,KAElI,GAAIN,EAAI26oC,EAAIj0oC,MAAM,qBAAuB,OAAO6zL,EAAOug2C,GAASlC,EAAMsD,EAAK,IAC3E,GAAIl8hD,EAAI26oC,EAAIj0oC,MAAM,qBACjB,OAAOi3K,EAAM,EAAI,IAAMi+2C,GAAcpvhD,EAAMmuoC,GAAMh99B,GAAOm92C,GAAS,IAAIh4hD,KAAKyK,MAAMowK,GAvClF,SAAeA,EAAgB/6K,GAC9B,OAAIA,GAAK,GAAKE,KAAKogD,OAAOy6H,EAAI76K,KAAKyK,MAAMowK,IAAM76K,KAAK6yF,IAAI,GAAG/yF,KAAKtC,OACxD,EAED,CACR,CAkCyFi8hD,CAAM5+2C,EAAK39K,EAAE,GAAGM,UAAY,IAAMk4hD,EAAK3D,GAAIl32C,EAAK39K,EAAE,GAAGM,QAAQN,EAAE,GAAGM,QAE1J,GAAIN,EAAI26oC,EAAIj0oC,MAAM,YAAc,OAAOk1hD,GAAcpvhD,EAAKmuoC,EAAIjuoC,QAAQ,SAAS,IAAIixK,GACnF,GAAI39K,EAAI26oC,EAAIj0oC,MAAM,2BAGjB,OAFAnG,EAAIg4hD,EAAQqD,GAAcpvhD,EAAMmuoC,EAAIjuoC,QAAQ,SAAS,IAAKixK,IAC1DxgK,EAAK,EACEo7gD,EAAQA,EAAQ59Y,EAAIjuoC,QAAQ,MAAM,KAAKA,QAAQ,SAAQ,SAASxI,GAAG,OAAOiZ,EAAG5c,EAAED,OAAOC,EAAEuY,OAAOqE,KAAU,MAAJjZ,EAAQ,IAAI,EAAG,KAE5H,GAAGy2oC,EAAIj0oC,MAAM80hD,IAEZ,MAAO,KADPj7hD,EAAIq7hD,GAAcpvhD,EAAM,aAAcmxK,IACvBjiJ,OAAO,EAAE,GAAK,KAAOn7B,EAAEm7B,OAAO,EAAG,GAAK,IAAMn7B,EAAEm7B,OAAO,GAErE,IAAI3L,EAAK,GACT,GAAI/vB,EAAI26oC,EAAIj0oC,MAAM,+BAUjB,OATAyW,EAAKra,KAAKgL,IAAiB9N,EAAE,GAAUM,OAAO,GAC9Co2sB,EAAKyi1B,EAAS+C,EAAMp5hD,KAAK6yF,IAAI,GAAGx4E,GAAI,GAAG,GACvC5c,EAAI,GAAKg6L,EAEoB,MAD7BxqK,EAAK+rgD,GAAU,IAAkB97hD,EAAE,GAAW02sB,EAAG,KAC3C59rB,OAAOiX,EAAGzvB,OAAO,KAAWyvB,EAAKA,EAAG2L,OAAO,EAAE3L,EAAGzvB,OAAO,GAAK,KAClEC,GAAKwvB,EAAkB/vB,EAAE,GAAY,IAAmBA,EAAE,IAC1D+vB,EAAK2ogD,EAAMhi1B,EAAG,GAAGv5rB,IACX7c,OAASN,EAAE,GAAGM,SAAQyvB,EAAK0rgD,GAAMz7hD,EAAE,GAAG07B,OAAO17B,EAAE,GAAGM,OAAOyvB,EAAGzvB,SAAWyvB,GAC7ExvB,GAAKwvB,EAGN,GAAI/vB,EAAI26oC,EAAIj0oC,MAAM,iCAGjB,OAFAyW,EAAKra,KAAKgL,IAAIhL,KAAK8K,IAAI5N,EAAE,GAAGM,OAAQN,EAAE,GAAGM,QAAQ,GAE1Ci6L,IADPm8gB,EAAKyi1B,EAAS+C,EAAMp5hD,KAAK6yF,IAAI,GAAGx4E,GAAI,GAAG,IACrB,KAAKu5rB,EAAG,GAAK,GAAK,MAAQ,KAAOA,EAAG,GAAK+h1B,EAAK/h1B,EAAG,GAAGv5rB,GAAMnd,EAAE,GAAK,IAAMA,EAAE,GAAK04hD,EAAMhi1B,EAAG,GAAGv5rB,GAAKkgH,GAAK,IAAK,EAAElgH,EAAG,EAAInd,EAAE,GAAGM,OAASN,EAAE,GAAGM,SAExJ,GAAIN,EAAI26oC,EAAIj0oC,MAAM,YAEjB,OADAnG,EAAIq4hD,EAAMj72C,EAAK,GACZg99B,EAAIr6oC,QAAUC,EAAED,OAAeC,EAC3Bk7hD,GAAM9gZ,EAAIj/mC,OAAO,EAAEi/mC,EAAIr6oC,OAAOC,EAAED,SAAWC,EAEnD,GAAIP,EAAI26oC,EAAIj0oC,MAAM,uBAAyB,CAC1CnG,EAAI,GAAKo9K,EAAIt6H,QAAQvgD,KAAKgL,IAAI9N,EAAE,GAAGM,OAAO,KAAKoM,QAAQ,YAAY,MACnEyQ,EAAK5c,EAAEE,QAAQ,KACf,IAAI+7hD,EAAO7hZ,EAAIl6oC,QAAQ,KAAO0c,EAAIs/gD,EAAO9hZ,EAAIr6oC,OAASC,EAAED,OAASk8hD,EACjE,OAAOf,GAAM9gZ,EAAIj/mC,OAAO,EAAE8ggD,GAAQj8hD,EAAIo6oC,EAAIj/mC,OAAOi/mC,EAAIr6oC,OAAOm8hD,GAC7D,CACA,GAAIz8hD,EAAI26oC,EAAIj0oC,MAAM,sBAEjB,OADAyW,EAAK03gD,GAAIl32C,EAAK39K,EAAE,GAAGM,QACZq9K,EAAM,EAAI,IAAMi+2C,GAAcpvhD,EAAMmuoC,GAAMh99B,GAAOm92C,GA5E1D,SAAan92C,GACZ,OAAGA,EAAM,YAAcA,GAAO,WAAmB,IAAIA,GAAO,EAAS,EAAJA,EAAUA,EAAI,EAAE,GAC1E,GAAG76K,KAAKyK,MAAMowK,EACtB,CAyEmE++2C,CAAI/+2C,IAAMjxK,QAAQ,aAAa,OAAOA,QAAQ,SAAQ,SAASwuhD,GAAM,MAAO,OAASA,EAAG56hD,OAAS,EAAIk4hD,EAAK,EAAE,EAAE0C,EAAG56hD,QAAU,IAAM46hD,CAAI,IAAK,IAAM1C,EAAKr7gD,EAAGnd,EAAE,GAAGM,QAE/N,OAAOq6oC,GACN,IAAK,aAAc,OAAOihZ,GAAcpvhD,EAAM,WAAYmxK,GAC1D,IAAK,UACL,IAAK,SACL,IAAK,QAAS,IAAIz5K,EAAI42hD,GAASlC,EAAMsD,EAAK,IAAK,MAAa,MAANh4hD,EAAYq2L,EAAOr2L,EAAI,GAC7E,IAAK,aAAc,OAAO03hD,GAAcpvhD,EAAM,aAAamxK,GAAKjxK,QAAQ,OAAO,KAC/E,IAAK,WAAY,OAAOkvhD,GAAcpvhD,EAAM,WAAWmxK,GAAKjxK,QAAQ,OAAO,KAG5E,MAAM,IAAI+a,MAAM,uBAAyBkznC,EAAM,IAChD,CAUA,SAASgiZ,GAAehiZ,EAAgBh99B,GACvC,IAAIp9K,EACAw6W,EAAM4/xB,EAAIl6oC,QAAQ,KAAOk6oC,EAAIl6oC,QAAQ,KAAO,EAChD,GAAGk6oC,EAAIj0oC,MAAM,eAAgB,CAC5B,GAAU,GAAPi3K,EAAU,MAAO,SACf,GAAGA,EAAM,EAAG,MAAO,IAAMg/2C,GAAehiZ,GAAMh99B,GACnD,IAAIs5+B,EAAStc,EAAIl6oC,QAAQ,MAAqB,IAAZw2pC,IAAeA,EAAOtc,EAAIl6oC,QAAQ,MACpE,IAAI+F,EAAK1D,KAAKyK,MAAMzK,KAAKwnB,IAAIqzJ,GAAK76K,KAAKu3hD,QAAQpjY,EAG/C,GAFGzwpC,EAAK,IAAGA,GAAMywpC,KACjB12pC,GAAKo9K,EAAI76K,KAAK6yF,IAAI,GAAGnvF,IAAKgxT,YAAYujD,EAAI,GAAGk8yB,EAAOzwpC,GAAIywpC,IAClDvwpC,MAAM,QAAS,CACpB,IAAIu0hD,EAAQn4hD,KAAKyK,MAAMzK,KAAKwnB,IAAIqzJ,GAAK76K,KAAKu3hD,SACnB,IAApB95hD,EAAEE,QAAQ,KAAaF,EAAIA,EAAEuY,OAAO,GAAK,IAAMvY,EAAEm7B,OAAO,GAAK,MAAQu//C,EAAQ16hD,EAAED,OAAOkG,GACpFjG,GAAK,MAAQ06hD,EAAQz0hD,GAC1BjG,EAAIA,EAAEmM,QAAQ,MAAM,IACrB,CACAnM,EAAIA,EAAEmM,QAAQ,4BAA2B,SAASwuhD,EAAG7zL,EAAG8zL,EAAGC,GAAM,OAAO/zL,EAAK8zL,EAAKC,EAAG1//C,OAAO,GAAGu7nC,EAAOzwpC,GAAIywpC,GAAU,IAAMmkY,EAAG1//C,OAAOl1B,GAAM,GAAK,GAChJ,MAAOjG,EAAIo9K,EAAIshnB,cAAclkb,GAG7B,OAFG4/xB,EAAIj0oC,MAAM,WAAanG,EAAEmG,MAAM,cAAanG,EAAIA,EAAEm7B,OAAO,EAAEn7B,EAAED,OAAO,GAAK,IAAMC,EAAEuY,OAAOvY,EAAED,OAAO,IACjGq6oC,EAAIj0oC,MAAM,QAAUnG,EAAEmG,MAAM,SAAQnG,EAAIA,EAAEmM,QAAQ,MAAM,MACpDnM,EAAEmM,QAAQ,IAAI,IACtB,CACA,SAASkwhD,GAAcpwhD,EAAiBmuoC,EAAgBh99B,GACvD,GAA0B,KAAvBnxK,EAAKwM,WAAW,KAAc2hoC,EAAIj0oC,MAAM60hD,IAAa,CACvD,IAAIM,EAAOlhZ,EAAIjuoC,QAAQ,OAAO,IAAIA,QAAQ,MAAM,IAAIA,QAAQ,KAAK,IACjE,OAAGixK,GAAO,EAAUi/2C,GAAc,IAAKf,EAAMl+2C,GACtC,IAAMi/2C,GAAc,IAAKf,GAAOl+2C,GAAO,GAC/C,CACA,GAAsC,KAAnCg99B,EAAI3hoC,WAAW2hoC,EAAIr6oC,OAAS,GAAW,OArC3C,SAAuBkM,EAAiBmuoC,EAAgBh99B,GAEvD,IADA,IAAIo9L,EAAM4/xB,EAAIr6oC,OAAS,EACS,KAA1Bq6oC,EAAI3hoC,WAAW+hW,EAAI,MAAaA,EACtC,OAAO+grC,GAAUtvhD,EAAMmuoC,EAAIj/mC,OAAO,EAAEq/U,GAAMp9L,EAAM76K,KAAK6yF,IAAI,GAAG,GAAGgljC,EAAIr6oC,OAAOy6W,IAC3E,CAiCkD8hrC,CAAcrwhD,EAAMmuoC,EAAKh99B,GAC1E,IAAyB,IAAtBg99B,EAAIl6oC,QAAQ,KAAa,OAjC7B,SAAwB+L,EAAiBmuoC,EAAgBh99B,GACxD,IAAIq+2C,EAAOrhZ,EAAIjuoC,QAAQquhD,GAAK,IAAKps0C,EAAMgs7B,EAAIr6oC,OAAS07hD,EAAK17hD,OACzD,OAAOw7hD,GAAUtvhD,EAAMwvhD,EAAMr+2C,EAAM76K,KAAK6yF,IAAI,GAAG,EAAEg5H,IAAQtxF,GAAK,IAAIsxF,EACnE,CA8BoCmu0C,CAAetwhD,EAAMmuoC,EAAKh99B,GAC7D,IAAyB,IAAtBg99B,EAAIl6oC,QAAQ,KAAa,OAAOk8hD,GAAehiZ,EAAKh99B,GACvD,GAAyB,KAAtBg99B,EAAI3hoC,WAAW,GAAW,MAAO,IAAI4jhD,GAAcpwhD,EAAKmuoC,EAAIj/mC,OAAsB,KAAfi/mC,EAAI7hoC,OAAO,GAAQ,EAAE,GAAG6kK,GAC9F,IAAIp9K,EACAP,EAAsBmd,EAAIu5rB,EAAIwl1B,EAAOp5hD,KAAKmjH,IAAI03D,GAAM4c,EAAO5c,EAAM,EAAI,IAAM,GAC/E,GAAGg99B,EAAIj0oC,MAAM,SAAU,OAAO6zL,EAAOi+1C,EAAK0D,EAAKvhZ,EAAIr6oC,QACnD,GAAGq6oC,EAAIj0oC,MAAM,WAEZ,OADAnG,EAAK,GAAGo9K,EAAiB,IAARA,IAAWp9K,EAAI,IACzBA,EAAED,OAASq6oC,EAAIr6oC,OAASC,EAAIk7hD,GAAM9gZ,EAAIj/mC,OAAO,EAAEi/mC,EAAIr6oC,OAAOC,EAAED,SAAWC,EAE/E,GAAIP,EAAI26oC,EAAIj0oC,MAAM20hD,IAAS,OArK5B,SAAsBr7hD,EAAqBk8hD,EAAiB3h2C,GAC3D,OAAOA,GAAiB,IAAT2h2C,EAAa,GAAK,GAAGA,GAAQ7+5C,GAAK,IAAKr9H,EAAE,GAAGM,OAAS,EAAIN,EAAE,GAAGM,OAC9E,CAmKmCy8hD,CAAa/8hD,EAAGk8hD,EAAM3h2C,GACxD,GAAGog9B,EAAIj0oC,MAAM,UAAW,OAAO6zL,EAAOi+1C,EAAK0D,EAAKvhZ,EAAIr6oC,OAASq6oC,EAAIl6oC,QAAQ,MACzE,GAAIT,EAAI26oC,EAAIj0oC,MAAM40hD,IAMjB,OAHA/6hD,GADAA,GAAK,GAAGo9K,GAAKjxK,QAAQ,aAAa,MAAM+uhD,GAAMz7hD,EAAE,KAAK0M,QAAQ,MAAM,IAAI+uhD,GAAMz7hD,EAAE,MACzE0M,QAAQ,YAAW,SAASwuhD,EAAI7zL,GAErC,MAAO,IAAMA,EAAKhquC,GAAK,IAAKo+5C,GAAMz7hD,EAAE,IAAIM,OAAO+m2C,EAAG/m2C,OAAS,KAC9B,IAAvBq6oC,EAAIl6oC,QAAQ,MAAeF,EAAIA,EAAEmM,QAAQ,OAAO,KAGxD,GADAiuoC,EAAMA,EAAIjuoC,QAAQ,YAAa,MAC3B1M,EAAI26oC,EAAIj0oC,MAAM,gBACjB,OAAO6zL,GAAQ,GAAG2h2C,GAAMxvhD,QAAQ,kBAAkB,OAAOA,QAAQ,YAAY,OAAOA,QAAQ,OAAO1M,EAAE,GAAGM,OAAO,KAAK,KAErH,GAAIN,EAAI26oC,EAAIj0oC,MAAM,qBAAuB,OAAO6zL,EAAOug2C,GAAU,GAAGoB,GACpE,GAAIl8hD,EAAI26oC,EAAIj0oC,MAAM,qBACjB,OAAOi3K,EAAM,EAAI,IAAMi/2C,GAAcpwhD,EAAMmuoC,GAAMh99B,GAAOm92C,GAAU,GAAGn92C,GAAQ,IAAMtgD,GAAK,IAAIr9H,EAAE,GAAGM,QAElG,GAAIN,EAAI26oC,EAAIj0oC,MAAM,YAAc,OAAOk2hD,GAAcpwhD,EAAKmuoC,EAAIjuoC,QAAQ,SAAS,IAAIixK,GACnF,GAAI39K,EAAI26oC,EAAIj0oC,MAAM,2BAGjB,OAFAnG,EAAIg4hD,EAAQqE,GAAcpwhD,EAAMmuoC,EAAIjuoC,QAAQ,SAAS,IAAKixK,IAC1DxgK,EAAK,EACEo7gD,EAAQA,EAAQ59Y,EAAIjuoC,QAAQ,MAAM,KAAKA,QAAQ,SAAQ,SAASxI,GAAG,OAAOiZ,EAAG5c,EAAED,OAAOC,EAAEuY,OAAOqE,KAAU,MAAJjZ,EAAQ,IAAI,EAAG,KAE5H,GAAGy2oC,EAAIj0oC,MAAM80hD,IAEZ,MAAO,KADPj7hD,EAAIq8hD,GAAcpwhD,EAAM,aAAcmxK,IACvBjiJ,OAAO,EAAE,GAAK,KAAOn7B,EAAEm7B,OAAO,EAAG,GAAK,IAAMn7B,EAAEm7B,OAAO,GAErE,IAAI3L,EAAK,GACT,GAAI/vB,EAAI26oC,EAAIj0oC,MAAM,+BAUjB,OATAyW,EAAKra,KAAKgL,IAAiB9N,EAAE,GAAUM,OAAO,GAC9Co2sB,EAAKyi1B,EAAS+C,EAAMp5hD,KAAK6yF,IAAI,GAAGx4E,GAAI,GAAG,GACvC5c,EAAI,GAAKg6L,EAEoB,MAD7BxqK,EAAK+rgD,GAAU,IAAkB97hD,EAAE,GAAW02sB,EAAG,KAC3C59rB,OAAOiX,EAAGzvB,OAAO,KAAWyvB,EAAKA,EAAG2L,OAAO,EAAE3L,EAAGzvB,OAAO,GAAK,KAClEC,GAAKwvB,EAAkB/vB,EAAE,GAAY,IAAmBA,EAAE,IAC1D+vB,EAAK2ogD,EAAMhi1B,EAAG,GAAGv5rB,IACX7c,OAASN,EAAE,GAAGM,SAAQyvB,EAAK0rgD,GAAMz7hD,EAAE,GAAG07B,OAAO17B,EAAE,GAAGM,OAAOyvB,EAAGzvB,SAAWyvB,GAC7ExvB,GAAKwvB,EAGN,GAAI/vB,EAAI26oC,EAAIj0oC,MAAM,iCAGjB,OAFAyW,EAAKra,KAAKgL,IAAIhL,KAAK8K,IAAI5N,EAAE,GAAGM,OAAQN,EAAE,GAAGM,QAAQ,GAE1Ci6L,IADPm8gB,EAAKyi1B,EAAS+C,EAAMp5hD,KAAK6yF,IAAI,GAAGx4E,GAAI,GAAG,IACrB,KAAKu5rB,EAAG,GAAK,GAAK,MAAQ,KAAOA,EAAG,GAAK+h1B,EAAK/h1B,EAAG,GAAGv5rB,GAAMnd,EAAE,GAAK,IAAMA,EAAE,GAAK04hD,EAAMhi1B,EAAG,GAAGv5rB,GAAKkgH,GAAK,IAAK,EAAElgH,EAAG,EAAInd,EAAE,GAAGM,OAASN,EAAE,GAAGM,SAExJ,GAAIN,EAAI26oC,EAAIj0oC,MAAM,YAEjB,OADAnG,EAAI,GAAKo9K,EACNg99B,EAAIr6oC,QAAUC,EAAED,OAAeC,EAC3Bk7hD,GAAM9gZ,EAAIj/mC,OAAO,EAAEi/mC,EAAIr6oC,OAAOC,EAAED,SAAWC,EAEnD,GAAIP,EAAI26oC,EAAIj0oC,MAAM,sBAAwB,CACzCnG,EAAI,GAAKo9K,EAAIt6H,QAAQvgD,KAAKgL,IAAI9N,EAAE,GAAGM,OAAO,KAAKoM,QAAQ,YAAY,MACnEyQ,EAAK5c,EAAEE,QAAQ,KACf,IAAI+7hD,EAAO7hZ,EAAIl6oC,QAAQ,KAAO0c,EAAIs/gD,EAAO9hZ,EAAIr6oC,OAASC,EAAED,OAASk8hD,EACjE,OAAOf,GAAM9gZ,EAAIj/mC,OAAO,EAAE8ggD,GAAQj8hD,EAAIo6oC,EAAIj/mC,OAAOi/mC,EAAIr6oC,OAAOm8hD,GAC7D,CACA,GAAIz8hD,EAAI26oC,EAAIj0oC,MAAM,sBACjB,OAAOi3K,EAAM,EAAI,IAAMi/2C,GAAcpwhD,EAAMmuoC,GAAMh99B,GAAOm92C,GAAS,GAAGn92C,GAAKjxK,QAAQ,aAAa,OAAOA,QAAQ,SAAQ,SAASwuhD,GAAM,MAAO,OAASA,EAAG56hD,OAAS,EAAIk4hD,EAAK,EAAE,EAAE0C,EAAG56hD,QAAU,IAAM46hD,CAAI,IAAK,IAAM1C,EAAK,EAAEx4hD,EAAE,GAAGM,QAE5N,OAAOq6oC,GACN,IAAK,UACL,IAAK,SACL,IAAK,QAAS,IAAIz2oC,EAAI42hD,GAAS,GAAGoB,GAAO,MAAa,MAANh4hD,EAAYq2L,EAAOr2L,EAAI,GACvE,QACC,GAAGy2oC,EAAIj0oC,MAAM,aAAc,OAAOk2hD,GAAcpwhD,EAAMmuoC,EAAI34oC,MAAM,EAAE24oC,EAAIz89B,YAAY,MAAOP,GAAO892C,GAAM9gZ,EAAI34oC,MAAM24oC,EAAIz89B,YAAY,OAElI,MAAM,IAAIz2J,MAAM,uBAAyBkznC,EAAM,IAChD,CACA,SAASmhZ,GAAUtvhD,EAAiBmuoC,EAAgBh99B,GACnD,OAAY,EAAJA,KAAWA,EAAMi/2C,GAAcpwhD,EAAMmuoC,EAAKh99B,GAAOi+2C,GAAcpvhD,EAAMmuoC,EAAKh99B,EACnF,CAkBA,IAAIq/2C,GAAc,kCAClB,SAASC,GAAYtiZ,GAEpB,IADA,IAAI95oC,EAAI,EAAeC,EAAI,GAAIP,EAAI,GAC7BM,EAAI85oC,EAAIr6oC,QACb,OAAQQ,EAAI65oC,EAAI7hoC,OAAOjY,IACtB,IAAK,IAAQk4hD,EAAcp+Y,EAAK95oC,KAAIA,GAAI,GAAGA,IAAK,MAChD,IAAK,IAAK,KAAsC,KAAzB85oC,EAAI3hoC,aAAanY,IAAcA,EAAI85oC,EAAIr6oC,WAAsBO,EAAG,MACvF,IAAK,KACL,IAAK,IAAKA,GAAG,EAAG,MAChB,IAAK,MAAOA,EAAG,MACf,IAAK,IAAK,IAAK,IACd,GAAuB,MAApB85oC,EAAI7hoC,OAAOjY,EAAE,IAAkC,MAApB85oC,EAAI7hoC,OAAOjY,EAAE,GAAY,OAAO,EAE/D,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAEvD,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,OAAO,EAC7E,IAAK,IAAK,IAAK,IAAK,IAAK,IACxB,GAAsC,QAAnC85oC,EAAIj/mC,OAAO76B,EAAG,GAAGgwD,cAAyB,OAAO,EACpD,GAAsC,UAAnC8plC,EAAIj/mC,OAAO76B,EAAG,GAAGgwD,cAA2B,OAAO,EACtD,GAAsC,UAAnC8plC,EAAIj/mC,OAAO76B,EAAG,GAAGgwD,cAA2B,OAAO,IACpDhwD,EAAG,MACN,IAAK,IAEJ,IADAN,EAAIO,EACsB,MAApB65oC,EAAI7hoC,OAAOjY,MAAgBA,EAAI85oC,EAAIr6oC,QAAQC,GAAKo6oC,EAAI7hoC,OAAOjY,GACjE,GAAGN,EAAEmG,MAAMs2hD,IAAc,OAAO,EAChC,MACD,IAAK,IAEL,IAAK,IAAK,IAAK,IACd,KAAMn8hD,EAAI85oC,EAAIr6oC,SAAW,YAAYG,QAAQK,EAAE65oC,EAAI7hoC,SAASjY,KAAO,GAAS,MAAHC,GAA8B,KAAnB65oC,EAAI7hoC,OAAOjY,EAAE,IAAa,KAAKJ,QAAQk6oC,EAAI7hoC,OAAOjY,EAAE,KAAK,KAC7I,MACD,IAAK,IAAK,KAAM85oC,EAAI7hoC,SAASjY,KAAOC,IAAgB,MACpD,IAAK,MAAOD,EAAuB,KAAjB85oC,EAAI7hoC,OAAOjY,IAA8B,KAAjB85oC,EAAI7hoC,OAAOjY,MAAaA,EAAG,MACrE,IAAK,IAAK,IAAK,MAAOA,EAAG,MACzB,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACpF,KAAMA,EAAI85oC,EAAIr6oC,QAAU,aAAaG,QAAQk6oC,EAAI7hoC,SAASjY,KAAO,IAAgB,MAElF,UAAWA,EAGb,OAAO,CACR,CAkNA,IAAIq8hD,GAAW,wCACf,SAASC,GAAQj6hD,EAAGiS,GACnB,GAAS,MAANA,EAAY,OAAO,EACtB,IAAIiohD,EAAS9y3C,WAAWn1J,EAAG,IAC3B,OAAOA,EAAG,IACT,IAAK,IAAM,GAAGjS,GAAKk6hD,EAAQ,OAAO,EAAM,MACxC,IAAK,IAAM,GAAGl6hD,EAAKk6hD,EAAQ,OAAO,EAAM,MACxC,IAAK,IAAM,GAAGl6hD,EAAKk6hD,EAAQ,OAAO,EAAM,MACxC,IAAK,KAAM,GAAGl6hD,GAAKk6hD,EAAQ,OAAO,EAAM,MACxC,IAAK,KAAM,GAAGl6hD,GAAKk6hD,EAAQ,OAAO,EAAM,MACxC,IAAK,KAAM,GAAGl6hD,GAAKk6hD,EAAQ,OAAO,EAEnC,OAAO,CACR,CAsBA,SAAS1C,GAAW//Y,EAAsBz3oC,EAAU3C,GAC3C,MAALA,IAAWA,EAAI,CAAC,GACnB,IAAIy7hD,EAAO,GACX,cAAcrhZ,GACb,IAAK,SAC4BqhZ,EAAtB,UAAPrhZ,GAAmBp6oC,EAAE88hD,OAAe98hD,EAAE88hD,OAC7B1iZ,EACZ,MACD,IAAK,SAGO,OAFeqhZ,EAAhB,IAAPrhZ,GAAap6oC,EAAE88hD,OAAe98hD,EAAE88hD,QACX,MAAX98hD,EAAEiiJ,MAAiBjiJ,EAAe,MAAIy4hD,GAAWr+Y,MAC7CqhZ,EAAQz7hD,EAAEiiJ,OAASjiJ,EAAEiiJ,MAAMy24C,EAAgBt+Y,KAAUq+Y,EAAUC,EAAgBt+Y,KACrF,MAARqhZ,IAAcA,EAAO9C,EAAgBv+Y,IAAQ,WAGlD,GAAGo+Y,EAAciD,EAAK,GAAI,OAAOvB,GAAYv3hD,EAAG3C,GAC7C2C,aAAauoB,OAAMvoB,EAAIg3hD,EAAch3hD,EAAG3C,EAAEs5hD,WAC7C,IAAIl3hD,EAtCL,SAAoBA,EAAcO,GACjC,IAAIy3oC,EA3RL,SAAuBA,GAGtB,IAFA,IAAIx6gC,EAAwB,GACxBm95C,GAAS,EACLz8hD,EAAI,EAAGwD,EAAI,EAAGxD,EAAI85oC,EAAIr6oC,SAAUO,EAAG,OAAe85oC,EAAI3hoC,WAAWnY,IACxE,KAAK,GACJy8hD,GAAUA,EAAQ,MACnB,KAAK,GAAI,KAAK,GAAI,KAAK,KACpBz8hD,EAAG,MACN,KAAK,GACJs/H,EAAIA,EAAI7/H,QAAUq6oC,EAAIj/mC,OAAOr3B,EAAExD,EAAEwD,GACjCA,EAAIxD,EAAE,EAGR,GADAs/H,EAAIA,EAAI7/H,QAAUq6oC,EAAIj/mC,OAAOr3B,IACf,IAAXi5hD,EAAiB,MAAM,IAAI71gD,MAAM,WAAakznC,EAAM,0BACvD,OAAOx6gC,CACR,CA4QWo95C,CAAc56hD,GACpBF,EAAIk4oC,EAAIr6oC,OAAQ6+B,EAAMw7mC,EAAIl4oC,EAAE,GAAGhC,QAAQ,KAE3C,GADGgC,EAAE,GAAK08B,GAAK,KAAK18B,EACjBk4oC,EAAIr6oC,OAAS,EAAG,MAAM,IAAImnB,MAAM,iCAAmCkznC,EAAI7toC,KAAK,KAAO,KACtF,GAAgB,iBAAN5J,EAAgB,MAAO,CAAC,EAAkB,IAAfy3oC,EAAIr6oC,QAAgB6+B,GAAK,EAAEw7mC,EAAIA,EAAIr6oC,OAAO,GAAG,KAClF,OAAOq6oC,EAAIr6oC,QACV,KAAK,EAAGq6oC,EAAMx7mC,GAAK,EAAI,CAAC,UAAW,UAAW,UAAWw7mC,EAAI,IAAM,CAACA,EAAI,GAAIA,EAAI,GAAIA,EAAI,GAAI,KAAM,MAClG,KAAK,EAAGA,EAAMx7mC,GAAK,EAAI,CAACw7mC,EAAI,GAAIA,EAAI,GAAIA,EAAI,GAAIA,EAAI,IAAM,CAACA,EAAI,GAAIA,EAAI,GAAIA,EAAI,GAAI,KAAM,MACzF,KAAK,EAAGA,EAAMx7mC,GAAK,EAAI,CAACw7mC,EAAI,GAAIA,EAAI,GAAIA,EAAI,GAAIA,EAAI,IAAM,CAACA,EAAI,GAAIA,EAAI,GAAIA,EAAI,GAAI,KAGpF,IAAIjkc,EAAKxzsB,EAAI,EAAIy3oC,EAAI,GAAKz3oC,EAAI,EAAIy3oC,EAAI,GAAKA,EAAI,GAC/C,IAA4B,IAAzBA,EAAI,GAAGl6oC,QAAQ,OAAwC,IAAzBk6oC,EAAI,GAAGl6oC,QAAQ,KAAa,MAAO,CAACgC,EAAGi0sB,GACxE,GAA8B,MAA3Bikc,EAAI,GAAGj0oC,MAAM,YAAiD,MAA3Bi0oC,EAAI,GAAGj0oC,MAAM,WAAoB,CACtE,IAAI8oP,EAAKmr5B,EAAI,GAAGj0oC,MAAMw2hD,IAClB9lxC,EAAKuj4B,EAAI,GAAGj0oC,MAAMw2hD,IACtB,OAAOC,GAAQj6hD,EAAGssP,GAAM,CAAC/sP,EAAGk4oC,EAAI,IAAMwiZ,GAAQj6hD,EAAGk0Q,GAAM,CAAC30Q,EAAGk4oC,EAAI,IAAM,CAACl4oC,EAAGk4oC,EAAU,MAANnr5B,GAAoB,MAAN4nB,EAAa,EAAI,GAC7G,CACA,MAAO,CAAC30Q,EAAGi0sB,EACZ,CAkBS8m1B,CAAWxB,EAAM94hD,GACzB,GAAG61hD,EAAcp2hD,EAAE,IAAK,OAAO83hD,GAAYv3hD,EAAG3C,GAC9C,IAAS,IAAN2C,EAAYA,EAAI,YAAa,IAAS,IAANA,EAAaA,EAAI,aAC/C,GAAS,KAANA,GAAiB,MAALA,EAAW,MAAO,GACtC,OAxQD,SAAkBy3oC,EAAgBz3oC,EAAWo5C,EAAcmzwC,GAI1D,IAHA,IAA8C1jzC,EAAI1H,EAAGqe,EAAjDy9G,EAAM,GAAI5/H,EAAI,GAAIM,EAAI,EAAGC,EAAI,GAAI28hD,EAAI,IACrC5nhD,EAAG,IAEDhV,EAAI85oC,EAAIr6oC,QACb,OAAQQ,EAAI65oC,EAAI7hoC,OAAOjY,IACtB,IAAK,IACJ,IAAIk4hD,EAAcp+Y,EAAK95oC,GAAI,MAAM,IAAI4mB,MAAM,0BAA4B3mB,EAAI,OAAQ65oC,GACnFx6gC,EAAIA,EAAI7/H,QAAU,CAACjB,EAAE,IAAK6D,EAAE,WAAYrC,GAAG,EAAG,MAC/C,IAAK,IACJ,IAAIN,EAAE,GAAgC,MAA5BmiB,EAAGi4nC,EAAI3hoC,aAAanY,KAAcA,EAAI85oC,EAAIr6oC,QAASC,GAAKR,OAAO4nB,aAAajF,GACtFy9G,EAAIA,EAAI7/H,QAAU,CAACjB,EAAE,IAAK6D,EAAE3C,KAAMM,EAAG,MACtC,IAAK,KAAM,IAAI2C,EAAIm3oC,EAAI7hoC,SAASjY,GAAIxB,EAAW,MAANmE,GAAmB,MAANA,EAAaA,EAAI,IACtE28H,EAAIA,EAAI7/H,QAAU,CAACjB,EAAEA,EAAG6D,EAAEM,KAAM3C,EAAG,MACpC,IAAK,IAAKs/H,EAAIA,EAAI7/H,QAAU,CAACjB,EAAE,IAAK6D,EAAE,KAAMrC,GAAG,EAAG,MAClD,IAAK,IACJs/H,EAAIA,EAAI7/H,QAAU,CAACjB,EAAE,IAAK6D,EAAEA,KAAMrC,EAAG,MACtC,IAAK,IAAK,IAAK,IACd,GAAuB,MAApB85oC,EAAI7hoC,OAAOjY,EAAE,IAAkC,MAApB85oC,EAAI7hoC,OAAOjY,EAAE,GAAY,CACtD,GAAO,MAAJkL,GAA6E,OAAjEA,EAAG2thD,EAAoBx2hD,EAAGo5C,EAA0B,MAApBq+lC,EAAI7hoC,OAAOjY,EAAE,KAA0B,MAAO,GAC7Fs/H,EAAIA,EAAI7/H,QAAU,CAACjB,EAAE,IAAK6D,EAAEy3oC,EAAIj/mC,OAAO76B,EAAE,IAAK48hD,EAAM38hD,EAAGD,GAAG,EAAG,KAC9D,CAED,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACtDC,EAAIA,EAAE0O,cAEP,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAChE,GAAGtM,EAAI,EAAG,MAAO,GACjB,GAAO,MAAJ6I,GAAoD,OAAxCA,EAAG2thD,EAAoBx2hD,EAAGo5C,IAAoB,MAAO,GAC7D,IAAP/7C,EAAIO,IAAWD,EAAI85oC,EAAIr6oC,QAAUq6oC,EAAI7hoC,OAAOjY,GAAG2O,gBAAkB1O,GAAGP,GAAGO,EAC9D,MAANA,GAAmC,MAAtB28hD,EAAIjuhD,gBAAuB1O,EAAI,KACtC,MAANA,IAAWA,EAAI+U,GAClBsqH,EAAIA,EAAI7/H,QAAU,CAACjB,EAAEyB,EAAGoC,EAAE3C,GAAIk9hD,EAAM38hD,EAAG,MACxC,IAAK,IAAK,IAAK,IAAK,IAAK,IACxB,IAAIqF,EAAE,CAAC9G,EAAEyB,EAAGoC,EAAEpC,GAMd,GALO,MAAJiL,IAAUA,EAAG2thD,EAAoBx2hD,EAAGo5C,IACD,QAAnCq+lC,EAAIj/mC,OAAO76B,EAAG,GAAGgwD,eAAkC,MAAJ9kD,IAAU5F,EAAEjD,EAAI6I,EAAGtG,GAAK,GAAK,IAAM,KAAKU,EAAE9G,EAAI,IAAKwW,EAAG,IAAIhV,GAAG,GACrE,UAAlC85oC,EAAIj/mC,OAAO76B,EAAE,GAAGgwD,eAAoC,MAAJ9kD,IAAU5F,EAAEjD,EAAI6I,EAAGtG,GAAK,GAAK,KAAO,MAAMU,EAAE9G,EAAI,IAAKwB,GAAG,EAAGgV,EAAG,KAC5E,UAAlC8koC,EAAIj/mC,OAAO76B,EAAE,GAAGgwD,eAAoC,MAAJ9kD,IAAU5F,EAAEjD,EAAI6I,EAAGtG,GAAK,GAAK,KAAO,MAAMU,EAAE9G,EAAI,IAAKwB,GAAG,EAAGgV,EAAG,MAC/G1P,EAAE9G,EAAI,MAAOwB,GACb,MAAJkL,GAAoB,MAAR5F,EAAE9G,EAAW,MAAO,GACnC8gI,EAAIA,EAAI7/H,QAAU6F,EAAGs3hD,EAAM38hD,EAAG,MAC/B,IAAK,IAEJ,IADAP,EAAIO,EACsB,MAApB65oC,EAAI7hoC,OAAOjY,MAAgBA,EAAI85oC,EAAIr6oC,QAAQC,GAAKo6oC,EAAI7hoC,OAAOjY,GACjE,GAAmB,MAAhBN,EAAEyB,OAAO,GAAY,KAAM,4BAA8BzB,EAAI,IAChE,GAAGA,EAAEmG,MAAMs2hD,IAAc,CACxB,GAAO,MAAJjxhD,GAAoD,OAAxCA,EAAG2thD,EAAoBx2hD,EAAGo5C,IAAoB,MAAO,GACpE6jF,EAAIA,EAAI7/H,QAAU,CAACjB,EAAE,IAAK6D,EAAE3C,EAAEiP,eAC9BiuhD,EAAMl9hD,EAAEuY,OAAO,EAChB,MAAUvY,EAAEE,QAAQ,MAAQ,IAC3BF,GAAKA,EAAEmG,MAAM,kBAAkB,IAAI,IAAI,IACnCu2hD,GAAYtiZ,KAAMx6gC,EAAIA,EAAI7/H,QAAU,CAACjB,EAAE,IAAI6D,EAAE3C,KAElD,MAED,IAAK,IACJ,GAAS,MAANwL,EAAY,CACP,IAAPxL,EAAIO,IAAWD,EAAI85oC,EAAIr6oC,QAAgC,OAArBQ,EAAE65oC,EAAI7hoC,OAAOjY,KAAaN,GAAKO,EACjEq/H,EAAIA,EAAI7/H,QAAU,CAACjB,EAAE,IAAK6D,EAAE3C,GAAI,KACjC,CAED,IAAK,IAAK,IAAK,IACP,IAAPA,EAAIO,IAAWD,EAAI85oC,EAAIr6oC,QAAU,YAAYG,QAAQK,EAAE65oC,EAAI7hoC,OAAOjY,KAAO,GAAGN,GAAKO,EACjFq/H,EAAIA,EAAI7/H,QAAU,CAACjB,EAAE,IAAK6D,EAAE3C,GAAI,MACjC,IAAK,IACG,IAAPA,EAAIO,EAAS65oC,EAAI7hoC,SAASjY,KAAOC,GAAGP,GAAGO,EACvCq/H,EAAIA,EAAI7/H,QAAU,CAACjB,EAAEyB,EAAGoC,EAAE3C,GAAIk9hD,EAAM38hD,EAAG,MACxC,IAAK,MAAOD,EAAuB,KAAjB85oC,EAAI7hoC,OAAOjY,IAA8B,KAAjB85oC,EAAI7hoC,OAAOjY,MAAaA,EAAG,MACrE,IAAK,IAAK,IAAK,IAAKs/H,EAAIA,EAAI7/H,QAAU,CAACjB,EAAU,IAAPowzC,EAAS,IAAI3uzC,EAAIoC,EAAEpC,KAAMD,EAAG,MACtE,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC7E,IAAPN,EAAIO,EAASD,EAAI85oC,EAAIr6oC,QAAU,aAAaG,QAAQk6oC,EAAI7hoC,SAASjY,KAAO,GAAGN,GAAGo6oC,EAAI7hoC,OAAOjY,GACzFs/H,EAAIA,EAAI7/H,QAAU,CAACjB,EAAE,IAAK6D,EAAE3C,GAAI,MACjC,IAAK,IAAK4/H,EAAIA,EAAI7/H,QAAU,CAACjB,EAAEyB,EAAGoC,EAAEpC,KAAMD,EAAG,MAC7C,IAAK,IAAKs/H,EAAIA,EAAI7/H,QAAU,CAACjB,EAAE,IAAK6D,EAAE,OAAQrC,EAAG,MACjD,QACC,IAA2D,IAAxD,wCAAwCJ,QAAQK,GAAW,MAAM,IAAI2mB,MAAM,0BAA4B3mB,EAAI,OAAS65oC,GACvHx6gC,EAAIA,EAAI7/H,QAAU,CAACjB,EAAE,IAAK6D,EAAEpC,KAAMD,EAKrC,IAAqB68hD,EAAjBtwhD,EAAK,EAAGwthD,EAAM,EAClB,IAAI/5hD,EAAEs/H,EAAI7/H,OAAO,EAAGm9hD,EAAI,IAAK58hD,GAAK,IAAKA,EACtC,OAAOs/H,EAAIt/H,GAAGxB,GACb,IAAK,IAAK,IAAK,IAAK8gI,EAAIt/H,GAAGxB,EAAIwW,EAAI4nhD,EAAI,IAAQrwhD,EAAK,IAAGA,EAAK,GAAG,MAC/D,IAAK,KACAswhD,EAAIv95C,EAAIt/H,GAAGqC,EAAEwD,MAAM,YAAWk0hD,EAAI93hD,KAAK8K,IAAIgthD,EAAI8C,EAAI,GAAGp9hD,OAAO,IAC9D8M,EAAK,IAAGA,EAAK,GAEjB,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAKqwhD,EAAIt95C,EAAIt/H,GAAGxB,EAAG,MACtD,IAAK,IAAgB,MAARo+hD,IAAet95C,EAAIt/H,GAAGxB,EAAI,IAAQ+N,EAAK,IAAGA,EAAK,IAAK,MACjE,IAAK,IACJ,MACD,IAAK,IACDA,EAAK,GAAK+yH,EAAIt/H,GAAGqC,EAAEwD,MAAM,UAAS0G,EAAK,GACvCA,EAAK,GAAK+yH,EAAIt/H,GAAGqC,EAAEwD,MAAM,UAAS0G,EAAK,GACvCA,EAAK,GAAK+yH,EAAIt/H,GAAGqC,EAAEwD,MAAM,UAAS0G,EAAK,GAI7C,OAAOA,GACN,KAAK,EAAG,MACR,KAAK,EAEDrB,EAAGzJ,GAAK,KAAOyJ,EAAGzJ,EAAI,IAAKyJ,EAAGtI,GAC9BsI,EAAGtI,GAAM,KAAMsI,EAAGtI,EAAI,IAAKsI,EAAGjG,GAC9BiG,EAAGjG,GAAM,KAAMiG,EAAGjG,EAAI,IAAKiG,EAAGtG,GACjC,MACD,KAAK,EAEDsG,EAAGzJ,GAAK,KAAOyJ,EAAGzJ,EAAI,IAAKyJ,EAAGtI,GAC9BsI,EAAGtI,GAAM,KAAMsI,EAAGtI,EAAI,IAAKsI,EAAGjG,GAKnC,IAAeyo1C,EAAXovM,EAAO,GACX,IAAI98hD,EAAE,EAAGA,EAAIs/H,EAAI7/H,SAAUO,EAC1B,OAAOs/H,EAAIt/H,GAAGxB,GACb,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MACxC,IAAK,IAAK8gI,EAAIt/H,GAAGqC,EAAI,GAAIi9H,EAAIt/H,GAAGxB,EAAI,IAAK,MACzC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAE9F8gI,EAAIt/H,GAAGqC,EAAIy3hD,GAAex65C,EAAIt/H,GAAGxB,EAAE2Z,WAAW,GAAImnH,EAAIt/H,GAAGqC,EAAG6I,EAAI6uhD,GAChEz65C,EAAIt/H,GAAGxB,EAAI,IAAK,MACjB,IAAK,IAAK,IAAK,IAEd,IADAkv1C,EAAK1t1C,EAAE,EACU,MAAXs/H,EAAIoutC,KACS,OAAjBzt1C,EAAEq/H,EAAIoutC,GAAIlv1C,IAAoB,MAANyB,IACjB,MAANA,GAAmB,MAANA,IAA2B,MAAbq/H,EAAIoutC,EAAG,KAA+B,MAAhBputC,EAAIoutC,EAAG,GAAGlv1C,GAA6B,MAAhB8gI,EAAIoutC,EAAG,GAAGlv1C,GAA6B,MAAhB8gI,EAAIoutC,EAAG,GAAGrr1C,IAC7F,MAAbi9H,EAAIt/H,GAAGxB,IAAoB,MAANyB,GAAmB,MAANA,GAAmB,MAANA,IACzC,MAANA,IAA4B,MAAdq/H,EAAIoutC,GAAIrr1C,GAA2B,MAAdi9H,EAAIoutC,GAAIrr1C,GAA0B,MAAbi9H,EAAIoutC,EAAG,IAA6B,KAAfputC,EAAIoutC,EAAG,GAAGlv1C,KAExF8gI,EAAIt/H,GAAGqC,GAAKi9H,EAAIoutC,GAAIrr1C,EACpBi9H,EAAIoutC,GAAM,CAACrr1C,EAAE,GAAI7D,EAAE,OAAQkv1C,EAE5BovM,GAAQx95C,EAAIt/H,GAAGqC,EACfrC,EAAI0t1C,EAAG,EAAG,MACX,IAAK,IAAKputC,EAAIt/H,GAAGxB,EAAI,IAAK8gI,EAAIt/H,GAAGqC,EAAIu3hD,GAAYv3hD,EAAEo5C,GAGrD,IAAash/C,EAAKC,EAAdC,EAAK,GACT,GAAGH,EAAKr9hD,OAAS,EAAG,CACM,IAAtBq9hD,EAAK3khD,WAAW,IAClB4khD,EAAO16hD,EAAE,GAA0B,KAAvBy6hD,EAAK3khD,WAAW,IAAa9V,EAAIA,EAC7C26hD,EAAO/B,GAAU,IAAK6B,EAAMC,KAG5BC,EAAO/B,GAAU,IAAK6B,EADtBC,EAAO16hD,EAAE,GAAKuszC,EAAO,GAAKvszC,EAAIA,GAE3B06hD,EAAM,GAAKz95C,EAAI,IAAkB,KAAZA,EAAI,GAAG9gI,IAC9Bw+hD,EAAOA,EAAKnigD,OAAO,GACnBykG,EAAI,GAAGj9H,EAAI,IAAMi9H,EAAI,GAAGj9H,IAG1Bqr1C,EAAGsvM,EAAKv9hD,OAAO,EACf,IAAIy9hD,EAAQ595C,EAAI7/H,OAChB,IAAIO,EAAE,EAAGA,EAAIs/H,EAAI7/H,SAAUO,EAAG,GAAa,MAAVs/H,EAAIt/H,IAA0B,KAAZs/H,EAAIt/H,GAAGxB,GAAY8gI,EAAIt/H,GAAGqC,EAAEzC,QAAQ,MAAQ,EAAG,CAAEs9hD,EAAQl9hD,EAAG,KAAO,CACtH,IAAIm9hD,EAAM795C,EAAI7/H,OACd,GAAGy9hD,IAAU595C,EAAI7/H,SAAiC,IAAvBu9hD,EAAKp9hD,QAAQ,KAAa,CACpD,IAAII,EAAEs/H,EAAI7/H,OAAO,EAAGO,GAAI,IAAIA,EACd,MAAVs/H,EAAIt/H,KAA0C,IAA5B,KAAKJ,QAAQ0/H,EAAIt/H,GAAGxB,KACtCkv1C,GAAIputC,EAAIt/H,GAAGqC,EAAE5C,OAAO,GAAKiu1C,GAAMputC,EAAIt/H,GAAGqC,EAAE5C,OAAQ6/H,EAAIt/H,GAAGqC,EAAI26hD,EAAKnigD,OAAO6yzC,EAAG,EAAGputC,EAAIt/H,GAAGqC,EAAE5C,SACjFiu1C,EAAK,EAAGputC,EAAIt/H,GAAGqC,EAAI,IACpBi9H,EAAIt/H,GAAGqC,EAAI26hD,EAAKnigD,OAAO,EAAG6yzC,EAAG,GAAIA,GAAM,GAC9CputC,EAAIt/H,GAAGxB,EAAI,IACX2+hD,EAAQn9hD,GAEN0t1C,GAAI,GAAKyvM,EAAM795C,EAAI7/H,SAAQ6/H,EAAI695C,GAAO96hD,EAAI26hD,EAAKnigD,OAAO,EAAE6yzC,EAAG,GAAKputC,EAAI695C,GAAO96hD,EAC/E,MACK,GAAG66hD,IAAU595C,EAAI7/H,SAAiC,IAAvBu9hD,EAAKp9hD,QAAQ,KAAa,CAEzD,IADA8t1C,EAAKsvM,EAAKp9hD,QAAQ,KAAK,EACnBI,EAAEk9hD,EAAOl9hD,GAAI,IAAKA,EACrB,GAAa,MAAVs/H,EAAIt/H,KAA0C,IAA5B,KAAKJ,QAAQ0/H,EAAIt/H,GAAGxB,GAAzC,CAGA,IAFAgF,EAAE87H,EAAIt/H,GAAGqC,EAAEzC,QAAQ,MAAM,GAAGI,IAAIk9hD,EAAM595C,EAAIt/H,GAAGqC,EAAEzC,QAAQ,KAAK,EAAE0/H,EAAIt/H,GAAGqC,EAAE5C,OAAO,EAC9Ew9hD,EAAK395C,EAAIt/H,GAAGqC,EAAEw4B,OAAOr3B,EAAE,GACjBA,GAAG,IAAKA,EACVkq1C,GAAI,IAA6B,MAAvBputC,EAAIt/H,GAAGqC,EAAE4V,OAAOzU,IAAqC,MAAvB87H,EAAIt/H,GAAGqC,EAAE4V,OAAOzU,MAAay5hD,EAAKD,EAAK/khD,OAAOy10C,KAAQuvM,GAElG395C,EAAIt/H,GAAGqC,EAAI46hD,EACX395C,EAAIt/H,GAAGxB,EAAI,IACX2+hD,EAAQn9hD,CARoD,CAY7D,IAFG0t1C,GAAI,GAAKyvM,EAAM795C,EAAI7/H,SAAQ6/H,EAAI695C,GAAO96hD,EAAI26hD,EAAKnigD,OAAO,EAAE6yzC,EAAG,GAAKputC,EAAI695C,GAAO96hD,GAC9Eqr1C,EAAKsvM,EAAKp9hD,QAAQ,KAAK,EACnBI,EAAEk9hD,EAAOl9hD,EAAEs/H,EAAI7/H,SAAUO,EAC5B,GAAa,MAAVs/H,EAAIt/H,MAA4C,IAA7B,MAAMJ,QAAQ0/H,EAAIt/H,GAAGxB,IAAawB,IAAMk9hD,GAA9D,CAGA,IAFA15hD,EAAE87H,EAAIt/H,GAAGqC,EAAEzC,QAAQ,MAAM,GAAGI,IAAIk9hD,EAAM595C,EAAIt/H,GAAGqC,EAAEzC,QAAQ,KAAK,EAAE,EAC9Dq9hD,EAAK395C,EAAIt/H,GAAGqC,EAAEw4B,OAAO,EAAEr3B,GACjBA,EAAE87H,EAAIt/H,GAAGqC,EAAE5C,SAAU+D,EACvBkq1C,EAAGsvM,EAAKv9hD,SAAQw9hD,GAAMD,EAAK/khD,OAAOy10C,MAEtCputC,EAAIt/H,GAAGqC,EAAI46hD,EACX395C,EAAIt/H,GAAGxB,EAAI,IACX2+hD,EAAQn9hD,CARsE,CAUhF,CACD,CACA,IAAIA,EAAE,EAAGA,EAAEs/H,EAAI7/H,SAAUO,EAAgB,MAAVs/H,EAAIt/H,IAAc,KAAKJ,QAAQ0/H,EAAIt/H,GAAGxB,IAAI,IACxEu+hD,EAAOnuO,EAAM,GAAKvszC,EAAI,GAAKrC,EAAE,GAAoB,MAAfs/H,EAAIt/H,EAAE,GAAGqC,GAAaA,EAAEA,EAC1Di9H,EAAIt/H,GAAGqC,EAAI44hD,GAAU375C,EAAIt/H,GAAGxB,EAAG8gI,EAAIt/H,GAAGqC,EAAG06hD,GACzCz95C,EAAIt/H,GAAGxB,EAAI,KAEZ,IAAI4+hD,EAAS,GACb,IAAIp9hD,EAAE,EAAGA,IAAMs/H,EAAI7/H,SAAUO,EAAgB,MAAVs/H,EAAIt/H,KAAYo9hD,GAAU995C,EAAIt/H,GAAGqC,GACpE,OAAO+6hD,CACR,CA0DQC,CAASv7hD,EAAE,GAAIO,EAAG3C,EAAGoC,EAAE,GAC/B,CACA,SAASw7hD,GAASxjZ,EAAgB5/xB,GACjC,GAAiB,iBAAPA,EAAiB,CAC1BA,GAAOA,IAAQ,EAEf,IAAI,IAAIl6W,EAAI,EAAGA,EAAI,MAAUA,EAE5B,GAAmBmtC,MAAhBgr/C,EAAUn4hD,IACb,GAAGm4hD,EAAUn4hD,IAAM85oC,EAAK,CAAE5/xB,EAAMl6W,EAAG,KAAO,OADPk6W,EAAM,IAAGA,EAAMl6W,GAIhDk6W,EAAM,IAAGA,EAAM,IACnB,CAGA,OADAi+qC,EAAUj+qC,GAAO4/xB,EACV5/xB,CACR,CACA,SAASqjrC,GAAeC,GACvB,IAAI,IAAIx9hD,EAAE,EAAM,KAAHA,IAAaA,OACXmtC,IAAXqw/C,EAAIx9hD,IAAkBs9hD,GAASE,EAAIx9hD,GAAIA,EAC5C,CAEA,SAASy9hD,KAx7BT,IAAwBj/hD,EACnBA,IAAGA,EAAI,CAAC,GACZA,EAAE,GAAK,UACPA,EAAE,GAAK,IACPA,EAAE,GAAK,OACPA,EAAE,GAAK,QACPA,EAAE,GAAK,WACPA,EAAE,GAAK,KACPA,EAAE,IAAK,QACPA,EAAE,IAAK,WACPA,EAAE,IAAK,QACPA,EAAE,IAAK,UACPA,EAAE,IAAK,SACPA,EAAE,IAAK,WACPA,EAAE,IAAK,QACPA,EAAE,IAAK,SACPA,EAAE,IAAK,aACPA,EAAE,IAAK,gBACPA,EAAE,IAAK,OACPA,EAAE,IAAK,UACPA,EAAE,IAAK,cACPA,EAAE,IAAK,iBACPA,EAAE,IAAK,sBACPA,EAAE,IAAK,sBACPA,EAAE,IAAK,2BACPA,EAAE,IAAK,QACPA,EAAE,IAAK,YACPA,EAAE,IAAK,SACPA,EAAE,IAAK,WACPA,EAAE,IAAK,IACPA,EAAE,IAAK,2BA25BP25hD,EA15BO35hD,CA25BR,CAEA,IAAIk/hD,GAAM,CACTp59C,OAAQu19C,GACR514C,KAAMq54C,GACNK,OAAQxF,EACRyF,WAAYL,GACZM,gBAAiBhF,EACjBiF,QAAS1B,GACT2B,UAAW,WAAuB,OAAOL,GAAIC,OAASxF,CAAW,GAG9D6F,GAAmC,CACtC,EAAK,4BACL,EAAK,iCACL,EAAK,kCACL,EAAK,uCACL,GAAM,UAAW,GAAM,UAAW,GAAM,UAAW,GAAM,UACzD,GAAM,SAAU,GAAM,SAAU,GAAM,SAAU,GAAM,SAAU,GAAM,SACtE,GAAM,UAAW,GAAM,UAAW,GAAM,UAAW,GAAM,UACzD,GAAM,SACN,GAAM,0CACN,GAAM,mDACN,GAAM,kDACN,GAAM,2DACN,GAAM,SAAU,GAAM,SAAU,GAAM,SAAU,GAAM,SAAU,GAAM,SACtE,GAAM,SAAU,GAAM,SAAU,GAAM,SAAU,GAAM,SACtD,GAAM,IACN,GAAM,OACN,GAAM,QACN,GAAM,WACN,GAAM,4BACN,GAAM,iCACN,GAAM,kCACN,GAAM,uCACN,GAAM,KACN,GAAM,QACN,GAAM,QACN,GAAM,UACN,GAAM,SACN,GAAM,SACN,GAAM,WACN,GAAM,QACN,GAAM,SACN,GAAM,OACN,GAAM,UACN,GAAM,cACN,GAAM,QACN,GAAM,YACN,GAAM,UAIHC,GAAc,mCAmEdC,GAAqB,WACzB,IAAIA,EAAQ,CACZA,QAAgB,SAsBZC,EAnBJ,WAGC,IAFA,IAAIl+hD,EAAI,EAAG0hJ,EAA0B,IAAI9iJ,MAAM,KAEvCJ,EAAG,EAAQ,KAALA,IAAYA,EASzBwB,EAAQ,GADRA,EAAQ,GADRA,EAAQ,GADRA,EAAQ,GADRA,EAAQ,GADRA,EAAQ,GADRA,EAAQ,GADRA,EAAQ,GADRA,EAAIxB,IACW,UAAawB,IAAM,EAAOA,IAAM,IAChC,UAAaA,IAAM,EAAOA,IAAM,IAChC,UAAaA,IAAM,EAAOA,IAAM,IAChC,UAAaA,IAAM,EAAOA,IAAM,IAChC,UAAaA,IAAM,EAAOA,IAAM,IAChC,UAAaA,IAAM,EAAOA,IAAM,IAChC,UAAaA,IAAM,EAAOA,IAAM,IAChC,UAAaA,IAAM,EAAOA,IAAM,EAC/C0hJ,EAAMljJ,GAAKwB,EAGZ,MAA6B,oBAAfif,WAA6B,IAAIA,WAAWyiI,GAASA,CACpE,CAESy84C,GAaLC,EAZJ,SAA4B/6hD,GAC3B,IAAIrD,EAAI,EAAGoC,EAAI,EAAG5D,EAAI,EAAGkjJ,EAAgD,oBAAfziI,WAA6B,IAAIA,WAAW,MAAQ,IAAIrgB,MAAM,MAExH,IAAIJ,EAAI,EAAQ,KAALA,IAAYA,EAAGkjJ,EAAMljJ,GAAK6E,EAAE7E,GACvC,IAAIA,EAAI,EAAQ,KAALA,IAAYA,EAEtB,IADA4D,EAAIiB,EAAE7E,GACFwB,EAAI,IAAMxB,EAAGwB,EAAI,KAAMA,GAAK,IAAKoC,EAAIs/I,EAAM1hJ,GAAMoC,IAAM,EAAKiB,EAAM,IAAJjB,GAEnE,IAAIi9H,EAAM,GACV,IAAI7gI,EAAI,EAAQ,IAALA,IAAWA,EAAG6gI,EAAI7gI,EAAI,GAA2B,oBAAfygB,WAA6ByiI,EAAM96H,SAAa,IAAJpoB,EAAa,IAAJA,EAAU,KAAOkjJ,EAAMxgJ,MAAU,IAAJ1C,EAAa,IAAJA,EAAU,KAClJ,OAAO6gI,CACR,CACSg/5C,CAAmBH,GACxBI,EAAKF,EAAG,GAAKG,EAAKH,EAAG,GAAKI,EAAKJ,EAAG,GAAKK,EAAKL,EAAG,GAAKM,EAAKN,EAAG,GAC5DO,EAAKP,EAAG,GAAKQ,EAAKR,EAAG,GAAKS,EAAKT,EAAG,GAAKU,EAAKV,EAAG,GAAK/ngD,EAAK+ngD,EAAG,GAC5D7zS,EAAK6zS,EAAG,IAAKl5gD,EAAKk5gD,EAAG,IAAKz+M,EAAKy+M,EAAG,IAAKr2hD,EAAKq2hD,EAAG,IAAKl6M,EAAKk6M,EAAG,IAiDhE,OAJAH,EAAMv84C,MAAQw84C,EACdD,EAAMnoW,KA7CN,SAAoBA,EAAiB/+f,GAEpC,IADA,IAAIzzrB,GAA2B,EAAvByzrB,EACAh3rB,EAAI,EAAGyD,EAAIsyrC,EAAKt2rC,OAAQO,EAAIyD,GAAIF,EAAKA,IAAI,EAAK46hD,EAA4B,KAAxB56hD,EAAEwyrC,EAAK59qC,WAAWnY,OAC5E,OAAQuD,CACT,EA0CA26hD,EAAMx4S,IAxCN,SAAmBvgvC,EAAgC6xrB,GAElD,IADA,IAAIzzrB,GAA2B,EAAvByzrB,EAA0BvzrB,EAAI0B,EAAE1F,OAAS,GAAIO,EAAI,EACnDA,EAAIyD,GAAIF,EACb4g1C,EAAGh/0C,EAAEnF,KAAY,IAAJuD,GACbyE,EAAG7C,EAAEnF,KAASuD,GAAK,EAAK,KACxBq80C,EAAGz60C,EAAEnF,KAASuD,GAAK,GAAM,KACzB4hB,EAAGhgB,EAAEnF,KAAQuD,IAAM,IACnBinvC,EAAGrlvC,EAAEnF,MAAQs2B,EAAGnxB,EAAEnF,MAAQ++hD,EAAG55hD,EAAEnF,MAAQ8+hD,EAAG35hD,EAAEnF,MAC5C6+hD,EAAG15hD,EAAEnF,MAAQ4+hD,EAAGz5hD,EAAEnF,MAAQ2+hD,EAAGx5hD,EAAEnF,MAAQ0+hD,EAAGv5hD,EAAEnF,MAC5Cy+hD,EAAGt5hD,EAAEnF,MAAQw+hD,EAAGr5hD,EAAEnF,MAAQu+hD,EAAGp5hD,EAAEnF,MAAQm+hD,EAAGh5hD,EAAEnF,MAE7C,IADAyD,GAAK,GACCzD,EAAIyD,GAAGF,EAAKA,IAAI,EAAK46hD,EAAc,KAAV56hD,EAAE4B,EAAEnF,OACnC,OAAQuD,CACT,EA4BA26hD,EAAMno9C,IA1BN,SAAmBA,EAAgBihnB,GAElC,IADA,IAAIzzrB,GAAY,EAARyzrB,EACAh3rB,EAAI,EAAGyD,EAAIsyE,EAAIt2E,OAAQQ,EAAI,EAAG8B,EAAI,EAAG/B,EAAIyD,IAChDxD,EAAI81E,EAAI59D,WAAWnY,MACZ,IACNuD,EAAKA,IAAI,EAAK46hD,EAAS,KAAL56hD,EAAEtD,IACXA,EAAI,KAEbsD,GADAA,EAAKA,IAAI,EAAK46hD,EAA2B,KAAvB56hD,GAAK,IAAMtD,GAAG,EAAG,SAC1B,EAAKk+hD,EAAsB,KAAlB56hD,GAAK,IAAO,GAAFtD,KACnBA,GAAK,OAAUA,EAAI,OAC5BA,EAAa,IAAN,KAAFA,GAAY8B,EAAwB,KAApBg0E,EAAI59D,WAAWnY,KAIpCuD,GADAA,GADAA,GADAA,EAAKA,IAAI,EAAK46hD,EAA0B,KAAtB56hD,GAAK,IAAMtD,GAAG,EAAG,QAC1B,EAAKk+hD,EAA2B,KAAvB56hD,GAAK,IAAMtD,GAAG,EAAG,SAC1B,EAAKk+hD,EAAsC,KAAlC56hD,GAAK,IAAMxB,GAAG,EAAG,IAAQ,EAAF9B,IAAM,QACtC,EAAKk+hD,EAAsB,KAAlB56hD,GAAK,IAAO,GAAFxB,MAI5BwB,GADAA,GADAA,EAAKA,IAAI,EAAK46hD,EAA4B,KAAxB56hD,GAAK,IAAMtD,GAAG,GAAI,SAC3B,EAAKk+hD,EAA2B,KAAvB56hD,GAAK,IAAMtD,GAAG,EAAG,SAC1B,EAAKk+hD,EAAsB,KAAlB56hD,GAAK,IAAO,GAAFtD,KAG9B,OAAQsD,CACT,EAKO26hD,CACN,CA1FwB,GA4FrBc,GAAmB,WACvB,IAuFI9q6C,EAvFAryH,EAAU,CAAC,EAWf,SAAS69R,EAAQx9R,GAChB,GAA6B,KAA1BA,EAAE+V,OAAO/V,EAAEzC,OAAS,GAAW,OAAwC,IAAhCyC,EAAEf,MAAM,GAAG,GAAGvB,QAAQ,KAAesC,EAAIw9R,EAAQx9R,EAAEf,MAAM,GAAI,IACvG,IAAIlB,EAAIiC,EAAEm7K,YAAY,KACtB,OAAe,IAAPp9K,EAAYiC,EAAIA,EAAEf,MAAM,EAAGlB,EAAE,EACtC,CAEA,SAAS2mQ,EAAS1kQ,GACjB,GAA6B,KAA1BA,EAAE+V,OAAO/V,EAAEzC,OAAS,GAAW,OAAOmnQ,EAAS1kQ,EAAEf,MAAM,GAAI,IAC9D,IAAIlB,EAAIiC,EAAEm7K,YAAY,KACtB,OAAe,IAAPp9K,EAAYiC,EAAIA,EAAEf,MAAMlB,EAAE,EACnC,CASA,SAASg/hD,EAAev5S,EAAgBjxsC,GACpB,iBAATA,IAAmBA,EAAO,IAAI7pB,KAAK6pB,IAC7C,IAAIyq/C,EAAiBzq/C,EAAK8ye,WAE1B23gC,GADAA,EAAMA,GAAO,EAAIzq/C,EAAK+ye,eACT,EAAK/ye,EAAKgze,eAAe,EACtCi+tB,EAAIy5S,YAAY,EAAGD,GACnB,IAAI1Q,EAAkB/5+C,EAAK4ye,cAAgB,KAE3CmngC,GADAA,EAAMA,GAAO,EAAK/5+C,EAAK6ye,WAAW,IACrB,EAAI7ye,EAAK7Q,UACtB8htC,EAAIy5S,YAAY,EAAG3Q,EACpB,CAoBA,SAAS4Q,EAAkB1vgD,GAC1B2vgD,GAAU3vgD,EAAM,GAGhB,IAFA,IAAIhwB,EAAW,CAAC,EACZ85C,EAAQ,EACN9pB,EAAK9tB,GAAK8tB,EAAKjwB,OAAS,GAAG,CAChC,IAAIkM,EAAO+jB,EAAK4vgD,WAAW,GACvBC,EAAK7vgD,EAAK4vgD,WAAW,GAAIE,EAAM9vgD,EAAK9tB,EAAI29hD,EACxCr9hD,EAAI,CAAC,EAGH,QAFCyJ,IAIM,GADX6tC,EAAQ9pB,EAAK4vgD,WAAW,MACVp9hD,EAAEu9hD,MAAQ/vgD,EAAK4vgD,WAAW,IAErCC,EAAK,IACI,EAAR/l/C,IAAWt3C,EAAEw9hD,MAAQhwgD,EAAK4vgD,WAAW,IAC7B,EAAR9l/C,IAAWt3C,EAAEy9hD,MAAQjwgD,EAAK4vgD,WAAW,KAEtCp9hD,EAAEu9hD,QAAOv9hD,EAAEgK,GAAK,IAAI0e,KAAa,IAAR1oB,EAAEu9hD,SAIhC/vgD,EAAK9tB,EAAI49hD,EACT9/hD,EAAEiM,GAAQzJ,CACX,CACA,OAAOxC,CACR,CAEA,SAASkgiD,IAAW,OAAO1r6C,IAAOA,EAAK,CAAC,EAAI,CAC5C,SAASvoG,EAAMss5B,EAAmB1v5B,GAClC,GAAc,IAAX0v5B,EAAK,IAAyB,IAAXA,EAAK,GAAY,OAAO4nnB,GAAU5nnB,EAAM1v5B,GAC9D,GAAuB,MAAT,GAAV0v5B,EAAK,KAAwC,MAAT,GAARA,EAAK,IAAkB,OAy6CvD,SAAmBA,EAAmB1v5B,GACrC,GAA0C,iBAAvC8ugD,EAAIp/mB,EAAK926B,MAAM,EAAE,KAAKwN,cAAkC,MAAM,IAAIiY,MAAM,0BAC3E,IAAI2oI,EAAQhnI,GAAWA,EAAQgnI,MAAQ,GAEnC3gJ,GAAQkohD,GAAW/vgD,OAAO49O,SAASszqB,GAAQA,EAAKt06B,SAAS,UAAY0zhD,EAAIp/mB,IAAOj06B,MAAM,QACtF+Y,EAAK,EAAGqlH,EAAM,GAGlB,IAAIrlH,EAAK,EAAGA,EAAKnO,EAAKnP,SAAUsd,EAE/B,GADAqlH,EAAMxzH,EAAKmO,GACP,sBAAsBtS,KAAK23H,KAC/BA,EAAMA,EAAIjhI,MAAMihI,EAAIxiI,QAAQ,SACxB2vJ,IAAMA,EAAOntB,EAAIjhI,MAAM,EAAGihI,EAAIi7C,YAAY,KAAO,IAClDj7C,EAAIjhI,MAAM,EAAGouJ,EAAK9vJ,SAAW8vJ,GAChC,KAAMA,EAAK9vJ,OAAS,IAEnB8vJ,GADAA,EAAOA,EAAKpuJ,MAAM,EAAGouJ,EAAK9vJ,OAAS,IACvB0B,MAAM,EAAGouJ,EAAK8tB,YAAY,KAAO,GAC1Cj7C,EAAIjhI,MAAM,EAAEouJ,EAAK9vJ,SAAW8vJ,KAIjC,IAAIuw4C,GAAalxhD,EAAK,IAAM,IAAI/I,MAAM,oBACtC,IAAIi6hD,EAAW,MAAM,IAAIl5gD,MAAM,4BAC/B,IAAI+vzC,EAAW,MAAQmpN,EAAU,IAAM,IAGnCpgiD,EAAI,CACPqgiD,UAFgC,GAGhCC,UAHkE,IAKnEC,EAASvgiD,GACT,IAAIwgiD,EAAUC,EAAO,EACrB,IAAIpjhD,EAAK,EAAGA,EAAKnO,EAAKnP,SAAUsd,EAAI,CACnC,IAAI2hC,EAAO9vC,EAAKmO,GACb2hC,IAASi4xC,GAAYj4xC,IAASi4xC,EAAW,OACzCwpN,KAAQC,GAAW1giD,EAAGkP,EAAKzN,MAAM++hD,EAAUnjhD,GAAKwyI,GACnD2w4C,EAAWnjhD,EACZ,CACA,OAAOrd,CACR,CAh9C8D2giD,CAAUponB,EAAM1v5B,GAC9E,GAAG0v5B,EAAKx46B,OAAS,IAAK,MAAM,IAAImnB,MAAM,iBAAmBqx5B,EAAKx46B,OAAS,UACvE,IAAI6giD,EAEAC,EACAC,EACAC,EACAC,EACAC,EALAC,EAAM,IAONC,EAA8B,GAG9BnxgD,EAAyBuo5B,EAAK926B,MAAM,EAAE,KAC1Ck+hD,GAAU3vgD,EAAM,GAGhB,IAAIoxgD,EAmFJ,SAAwBpxgD,GACvB,GAAmB,IAAhBA,EAAKA,EAAK9tB,IAAkC,IAApB8tB,EAAKA,EAAK9tB,EAAI,GAAY,MAAO,CAAC,EAAG,GAEhE8tB,EAAKqxgD,IAAIC,EAAkB,sBAI3BtxgD,EAAK9tB,GAAK,GAGV,IAAI0+hD,EAAkB5wgD,EAAK4vgD,WAAW,EAAG,KAEzC,MAAO,CAAC5vgD,EAAK4vgD,WAAW,EAAE,KAAMgB,EACjC,CAhGSW,CAAevxgD,GAExB,OADA4wgD,EAAOQ,EAAG,IAET,KAAK,EAAGF,EAAM,IAAK,MAAO,KAAK,EAAGA,EAAM,KAAM,MAC9C,KAAK,EAAG,GAAY,GAATE,EAAG,GAAS,OAAOjB,GAAU5nnB,EAAM1v5B,GAE9C,QAAS,MAAM,IAAI3B,MAAM,sCAAwC05gD,GAIvD,MAARM,GAA4DvB,GAA7C3vgD,EAAcuo5B,EAAK926B,MAAM,EAAEy/hD,GAAkC,IAE/E,IAAI3sgD,EAAsBgk5B,EAAK926B,MAAM,EAAEy/hD,IAqFvC,SAAsBlxgD,EAAiB4wgD,GACtC,IAAI/i/C,EAOJ,OAHA7tB,EAAK9tB,GAAK,EAGF27C,EAAQ7tB,EAAK4vgD,WAAW,IAC/B,KAAK,EAAM,GAAW,GAARgB,EAAW,MAAM,IAAI15gD,MAAM,gCAAkC22B,GAAQ,MACnF,KAAK,GAAM,GAAW,GAAR+i/C,EAAW,MAAM,IAAI15gD,MAAM,iCAAmC22B,GAAQ,MACpF,QAAS,MAAM,IAAI32B,MAAM,sCAAwC22B,GAIlE7tB,EAAKqxgD,IAAI,OAAQ,uBAGjBrxgD,EAAKqxgD,IAAI,eAAgB,aAC1B,CAtGAG,CAAaxxgD,EAAM4wgD,GAGnB,IAAIa,EAAqBzxgD,EAAK4vgD,WAAW,EAAG,KAC5C,GAAY,IAATgB,GAA0B,IAAZa,EAAe,MAAM,IAAIv6gD,MAAM,uCAAyCu6gD,GAGzFzxgD,EAAK9tB,GAAK,EAGV6+hD,EAAY/wgD,EAAK4vgD,WAAW,EAAG,KAG/B5vgD,EAAK9tB,GAAK,EAGV8tB,EAAKqxgD,IAAI,WAAY,6BAGrBL,EAAgBhxgD,EAAK4vgD,WAAW,EAAG,KAGnCiB,EAAO7wgD,EAAK4vgD,WAAW,EAAG,KAG1BqB,EAAcjxgD,EAAK4vgD,WAAW,EAAG,KAGjCkB,EAAgB9wgD,EAAK4vgD,WAAW,EAAG,KAGnC,IAAI,IAAIh6hD,GAAK,EAAG9B,EAAI,EAAGA,EAAI,QAC1B8B,EAAIoqB,EAAK4vgD,WAAW,EAAG,MAClB,KAF4B97hD,EAGjCq9hD,EAAUr9hD,GAAK8B,EAIhB,IAAIqv0B,EAmEJ,SAAmBsjG,EAAmB2onB,GAGrC,IAFA,IAAIQ,EAAWn/hD,KAAKuK,KAAKyr6B,EAAKx46B,OAAOmhiD,GAAK,EACtCjstB,EAA8B,GAC1B300B,EAAE,EAAGA,EAAIohiD,IAAYphiD,EAAG200B,EAAQ300B,EAAE,GAAKi46B,EAAK926B,MAAMnB,EAAE4giD,GAAK5giD,EAAE,GAAG4giD,GAEtE,OADAjstB,EAAQystB,EAAS,GAAKnpnB,EAAK926B,MAAMigiD,EAASR,GACnCjstB,CACR,CAzEkC0stB,CAAUppnB,EAAM2onB,GAElDU,EAAWX,EAAaH,EAAe7rtB,EAASistB,EAAKC,GAGrD,IAAIU,EA+JJ,SAA0B5stB,EAA6B8rtB,EAAsBI,EAA6BD,GACzG,IAAI9qM,EAAKnhhB,EAAQl10B,OAAQ8hiD,EAA6B,GAClDC,EAA0B,GAAI97S,EAAwB,GAAI+7S,EAAgC,GAC1Ft/3C,EAAUy+3C,EAAM,EAAG5giD,EAAE,EAAGwD,EAAE,EAAGV,EAAE,EAAG4q1C,EAAG,EACzC,IAAI1t1C,EAAE,EAAGA,EAAI811C,IAAM911C,EAGlB,GAFA0lvC,EAAM,IACN5ivC,EAAK9C,EAAIygiD,IAAoB3qM,IAAIhz1C,GAAGgz1C,IACjC0rM,EAAK1+hD,GAAR,CACA2+hD,EAAY,GACZ,IAAI1luC,EAAO,GACX,IAAIv4T,EAAEV,EAAGU,GAAG,GAAI,CACfu4T,EAAKv4T,IAAK,EACVg+hD,EAAKh+hD,IAAK,EACVkivC,EAAIA,EAAIjmvC,QAAU+D,EAClBi+hD,EAAUxgiD,KAAK0z0B,EAAQnx0B,IACvB,IAAIk+hD,EAAkBb,EAAU5+hD,KAAKyK,MAAQ,EAAFlJ,EAAIo9hD,IAE/C,GAAGA,EAAM,GADTlzM,EAAS,EAAFlq1C,EAAO2+J,GACG,MAAM,IAAIv7I,MAAM,yBAA2BpjB,EAAI,MAAMo9hD,GACtE,IAAIjstB,EAAQ+stB,GAAO,MAEnB,GAAG3luC,EADHv4T,EAAIm+hD,GAAchttB,EAAQ+stB,GAAOh0M,IACrB,KACb,CACA6zM,EAAYz+hD,GAAK,CAAE0sP,MAAOk2/B,EAAK92uC,KAAKgzhD,GAAW,CAACH,IAf5B,CAiBrB,OAAOF,CACR,CAxLiCM,CAAiBlttB,EAAS8rtB,EAAWI,EAAWD,GAEjFW,EAAYd,GAAW32hD,KAAO,aAC3By2hD,EAAO,GAAKG,IAAkBoB,IAAYP,EAAYb,GAAe52hD,KAAO,YAC/Ey3hD,EAAYV,EAAU,IAAI/2hD,KAAO,OACjCy3hD,EAAYV,UAAYA,EACxBU,EAAYX,IAAMA,EAGlB,IAA6BmB,EAA0B,GAAIhC,EAA6B,GAAIC,EAA8B,IAkL1H,SAAwBS,EAAsBc,EAA4B5stB,EAA6BottB,EAAyBxB,EAAMht1B,EAAOws1B,EAAWiC,GAIvJ,IAHA,IAEwBl4hD,EAFpBm4hD,EAAgB,EAAG9irC,EAAM4irC,EAAMtiiD,OAAO,EAAE,EACxCos0B,EAAS01tB,EAAYd,GAAW7xhD,KAChC5O,EAAI,EAAGkiiD,EAAU,EACfliiD,EAAI6r0B,EAAOps0B,OAAQO,GAAI,IAAK,CACjC,IAAI0vB,EAAyBm8yB,EAAO1q0B,MAAMnB,EAAGA,EAAE,KAC/Cq/hD,GAAU3vgD,EAAM,IAChBwygD,EAAUxygD,EAAK4vgD,WAAW,GAC1Bx1hD,EAAOq4hD,GAAUzygD,EAAK,EAAEwygD,EAAQ/irC,GAChC4irC,EAAM9giD,KAAK6I,GACX,IAAIpK,EAAiB,CACpBoK,KAAOA,EACP6B,KAAO+jB,EAAK4vgD,WAAW,GACvB3y6C,MAAOj9F,EAAK4vgD,WAAW,GACvB77hD,EAAOisB,EAAK4vgD,WAAW,EAAG,KAC1B57hD,EAAOgsB,EAAK4vgD,WAAW,EAAG,KAC1B/7hD,EAAOmsB,EAAK4vgD,WAAW,EAAG,KAC1B8C,MAAO1ygD,EAAK4vgD,WAAW,IACvBv0hD,MAAO2kB,EAAK4vgD,WAAW,EAAG,KAC1B15/C,MAAO,EACP5hB,KAAM,GAGM,IADU0L,EAAK4vgD,WAAW,GAAK5vgD,EAAK4vgD,WAAW,GAAK5vgD,EAAK4vgD,WAAW,GAAK5vgD,EAAK4vgD,WAAW,KACtF5/hD,EAAEiL,GAAK03hD,EAAU3ygD,EAAMA,EAAK9tB,EAAE,IAEjC,IADU8tB,EAAK4vgD,WAAW,GAAK5vgD,EAAK4vgD,WAAW,GAAK5vgD,EAAK4vgD,WAAW,GAAK5vgD,EAAK4vgD,WAAW,KACtF5/hD,EAAEwM,GAAKm2hD,EAAU3ygD,EAAMA,EAAK9tB,EAAE,IAC9ClC,EAAEkmC,MAAQlW,EAAK4vgD,WAAW,EAAG,KAC7B5/hD,EAAEskB,KAAO0L,EAAK4vgD,WAAW,EAAG,KACzB5/hD,EAAEskB,KAAO,GAAKtkB,EAAEkmC,MAAQ,IAAKlmC,EAAEskB,KAAOtkB,EAAEiM,KAAO,EAAGjM,EAAEkmC,MAAQk8/C,EAAYpiiD,EAAEoK,KAAO,IACtE,IAAXpK,EAAEiM,MACJs2hD,EAAgBviiD,EAAEkmC,MACf26/C,EAAO,GAAK0B,IAAkBH,IAAYP,EAAYU,GAAen4hD,KAAO,gBAEtEpK,EAAEskB,MAAQ,MACnBtkB,EAAE2zB,QAAU,WACgB8Z,IAAzBo0/C,EAAY7hiD,EAAEkmC,SAAsB27/C,EAAY7hiD,EAAEkmC,OAAS08/C,EAAgB3ttB,EAASj10B,EAAEkmC,MAAO27/C,EAAYV,UAAWU,EAAYX,MACnIW,EAAY7hiD,EAAEkmC,OAAO97B,KAAOpK,EAAEoK,KAC9BpK,EAAEo4F,QAAWyp8C,EAAY7hiD,EAAEkmC,OAAOh3B,KAAKzN,MAAM,EAAEzB,EAAEskB,QAEjDtkB,EAAE2zB,QAAU,UACT3zB,EAAEskB,KAAO,EAAGtkB,EAAEskB,KAAO,EAChBi+gD,IAAkBH,GAAcpiiD,EAAEkmC,QAAUk8/C,GAAcP,EAAYU,KAC7EviiD,EAAEo4F,QAAUyq8C,EAAe7iiD,EAAG6hiD,EAAYU,GAAerzhD,MAAO2yhD,EAAYS,IAAO,CAAC,GAAGpzhD,QAGtFlP,EAAEo4F,SAASun8C,GAAU3/hD,EAAEo4F,QAAS,GACnCy7mB,EAAMzpsB,GAAQpK,EACdqgiD,EAAU9+hD,KAAKvB,EAChB,CACD,CAlOA8iiD,CAAe/B,EAAWc,EAAa5stB,EAASottB,EAAOxB,EAD9B,CAAC,EAC0CR,EAAWW,GA6D/E,SAA0B+B,EAAqBC,EAAsBX,GAIpE,IAHA,IAAI/hiD,EAAI,EAAGyD,EAAI,EAAGC,EAAI,EAAGH,EAAI,EAAGC,EAAI,EAAG27W,EAAK4irC,EAAMtiiD,OAC9CkjiD,EAAwB,GAAIr9hD,EAAsB,GAEhDtF,EAAIm/W,IAAMn/W,EAAK2iiD,EAAI3iiD,GAAGsF,EAAEtF,GAAGA,EAAG0iiD,EAAG1iiD,GAAG+hiD,EAAM/hiD,GAEhD,KAAMwD,EAAI8B,EAAE7F,SAAU+D,EAErBC,EAAIg/hD,EADJziiD,EAAIsF,EAAE9B,IACIC,EAAGC,EAAI++hD,EAAGziiD,GAAG0D,EAAGH,EAAIk/hD,EAAGziiD,GAAGuD,EACjCo/hD,EAAI3iiD,KAAOA,KACH,IAAPyD,GAAyBk/hD,EAAIl/hD,KAAOA,IAAGk/hD,EAAI3iiD,GAAK2iiD,EAAIl/hD,KAC7C,IAAPC,GAAYi/hD,EAAIj/hD,KAAOA,IAAGi/hD,EAAI3iiD,GAAK2iiD,EAAIj/hD,MAEjC,IAAPH,IAAuBo/hD,EAAIp/hD,GAAKvD,IACzB,IAAPyD,GAAYzD,GAAK2iiD,EAAI3iiD,KAAM2iiD,EAAIl/hD,GAAKk/hD,EAAI3iiD,GAAOsF,EAAE+3K,YAAY55K,GAAKD,GAAG8B,EAAErE,KAAKwC,KACrE,IAAPC,GAAY1D,GAAK2iiD,EAAI3iiD,KAAM2iiD,EAAIj/hD,GAAKi/hD,EAAI3iiD,GAAOsF,EAAE+3K,YAAY35K,GAAKF,GAAG8B,EAAErE,KAAKyC,IAEhF,IAAI1D,EAAE,EAAGA,EAAIm/W,IAAMn/W,EAAM2iiD,EAAI3iiD,KAAOA,KACzB,IAAP0D,GAAyBi/hD,EAAIj/hD,KAAOA,EAAGi/hD,EAAI3iiD,GAAK2iiD,EAAIj/hD,IACxC,IAAPD,GAAYk/hD,EAAIl/hD,KAAOA,IAAGk/hD,EAAI3iiD,GAAK2iiD,EAAIl/hD,KAGhD,IAAIzD,EAAE,EAAGA,EAAIm/W,IAAMn/W,EAClB,GAAkB,IAAfyiiD,EAAGziiD,GAAG2L,KAAT,CAEA,IADAnI,EAAIxD,IACI2iiD,EAAIn/hD,GAAI,GACfA,EAAIm/hD,EAAIn/hD,GACRk/hD,EAAG1iiD,GAAK0iiD,EAAGl/hD,GAAK,IAAMk/hD,EAAG1iiD,SACX,IAANwD,IAAY,IAAMm/hD,EAAIn/hD,IAAMA,GAAKm/hD,EAAIn/hD,IAC9Cm/hD,EAAI3iiD,IAAM,CANiC,CAU5C,IADA0iiD,EAAG,IAAM,IACL1iiD,EAAE,EAAGA,EAAIm/W,IAAMn/W,EACA,IAAfyiiD,EAAGziiD,GAAG2L,OAAyB+2hD,EAAG1iiD,IAAM,IAE7C,CA/FA4iiD,CAAiB7C,EAAWC,EAAW+B,GACvCA,EAAMxk/C,QAEN,IAAI79C,EAAI,CACPqgiD,UAAWA,EACXC,UAAWA,GAKZ,OADGz3gD,GAAWA,EAAQ8nJ,MAAK3wK,EAAE2wK,IAAM,CAACp8I,OAAQA,EAAQ0gzB,QAASA,IACtDj10B,CACP,CAsFA,SAAS6iiD,EAAenv+C,EAAoBl/B,EAAsB8tgD,GAKjE,IAJA,IAAIp8/C,EAAQwtB,EAAMxtB,MAAO5hB,EAAOovC,EAAMpvC,KAElCtkB,EAAI,GACJw6W,EAAMt0U,EACJo8/C,GAAQh+gD,EAAO,GAAKk2V,GAAO,GAChCx6W,EAAEuB,KAAKizB,EAAQ/yB,MAAM+4W,EAAM2orC,EAAM3orC,EAAM2orC,EAAOA,IAC9C7+gD,GAAQ6+gD,EACR3orC,EAAMynrC,GAAcK,EAAY,EAAN9nrC,GAE3B,OAAgB,IAAbx6W,EAAED,OAAsBqjiD,GAAQ,GAC3BvL,EAAQ73hD,GAAGyB,MAAM,EAAGiyD,EAAMpvC,KACnC,CAIA,SAASs9gD,EAAWpnrC,EAAgBs5sB,EAAgB7+O,EAA6BistB,EAAgBC,GAChG,IAAIv7hD,EAAew8hD,EACnB,GAAG5nrC,IAAQ4nrC,GACV,GAAW,IAARtue,EAAW,MAAM,IAAI5siC,MAAM,0CACxB,IAAY,IAATszV,EAAyB,CAClC,IAAI2xd,EAAS8I,EAAQz6d,GAAM13W,GAAKo+hD,IAAM,GAAG,EACzC,IAAI/0tB,EAAQ,OACZ,IAAI,IAAI7r0B,EAAI,EAAGA,EAAIwC,IACd8C,EAAIq8hD,GAAc91tB,EAAS,EAAF7r0B,MAAU8hiD,IADhB9hiD,EAEvB6giD,EAAU5/hD,KAAKqE,GAEhBg8hD,EAAWK,GAAc91tB,EAAO+0tB,EAAI,GAAGpte,EAAM,EAAG7+O,EAASistB,EAAKC,EAC/D,CACD,CAGA,SAASyB,EAAgB3ttB,EAA6B/uyB,EAAkBi7/C,EAA6BD,EAAgBY,GACpH,IAAI97S,EAAwB,GAAI+7S,EAA2B,GACvDD,IAAMA,EAAO,IACjB,IAAIr/3C,EAAUy+3C,EAAM,EAAGp9hD,EAAI,EAAGkq1C,EAAK,EACnC,IAAIlq1C,EAAEoiC,EAAOpiC,GAAG,GAAI,CACnBg+hD,EAAKh+hD,IAAK,EACVkivC,EAAIA,EAAIjmvC,QAAU+D,EAClBi+hD,EAAUxgiD,KAAK0z0B,EAAQnx0B,IACvB,IAAIk+hD,EAAOb,EAAU5+hD,KAAKyK,MAAQ,EAAFlJ,EAAIo9hD,IAEpC,GAAGA,EAAM,GADTlzM,EAAS,EAAFlq1C,EAAO2+J,GACG,MAAM,IAAIv7I,MAAM,yBAA2BpjB,EAAI,MAAMo9hD,GACtE,IAAIjstB,EAAQ+stB,GAAO,MACnBl+hD,EAAIm+hD,GAAchttB,EAAQ+stB,GAAOh0M,EAClC,CACA,MAAO,CAACl+lC,MAAOk2/B,EAAK92uC,KAAKgzhD,GAAW,CAACH,IACtC,CAkFA,SAASY,EAAU3ygD,EAA0B6xB,GAC5C,OAAO,IAAI32B,KAA6G,KAAnGm4gD,GAAerzgD,EAAK6xB,EAAO,GAAG,IAAKt/C,KAAK6yF,IAAI,EAAE,IAAIiu8C,GAAerzgD,EAAK6xB,GAAQ,IAAQ,aAC5G,CAoBA,SAAS0++C,EAAS+C,EAAsBvn/C,GACvC,IAAI/7C,EAAI+7C,GAAQ,CAAC,EAAG8zG,EAAO7vJ,EAAE6vJ,MAAQ,aAGrC,GAFIyz4C,EAAIhD,YAAWgD,EAAIhD,UAAY,IAC/BgD,EAAIjD,YAAWiD,EAAIjD,UAAY,IAChCiD,EAAIhD,UAAUvgiD,SAAWujiD,EAAIjD,UAAUtgiD,OAAQ,MAAM,IAAImnB,MAAM,8BACtC,IAAzBo8gD,EAAIhD,UAAUvgiD,SAChBujiD,EAAIhD,UAAU,GAAKzw4C,EAAO,IAC1Byz4C,EAAIjD,UAAU,GAAK,CAAGj2hD,KAAMylJ,EAAM5jJ,KAAM,IAEtCjM,EAAEujiD,QAAOD,EAAIjD,UAAU,GAAGqC,MAAQ1iiD,EAAEujiD,OAGxC,SAAkBD,GACjB,IAAIh3kB,EAAK,WACT,IAAGgzkB,GAAIl5/C,KAAKk9/C,EAAK,IAAMh3kB,GAAvB,CACA,IAAI9p9B,EAAI4giD,GAAQ,GAAI5giD,EAAE,GAAK,GAAIA,EAAE,GAAKA,EAAE,GAAK,GAAIA,EAAE,GAAK,GACxD8giD,EAAIjD,UAAU9+hD,KAAK,CAAG6I,KAAMki9B,EAAIrg9B,KAAM,EAAGmsF,QAAQ51F,EAAG8hB,KAAK,EAAGvgB,EAAE,GAAIC,EAAE,GAAIH,EAAE,KAC1Ey/hD,EAAIhD,UAAU/+hD,KAAK+hiD,EAAIhD,UAAU,GAAKh0kB,GACtCk3kB,EAAYF,EAJsB,CAKnC,CATCG,CAASH,EACV,CASA,SAASE,EAAYF,EAAsBlhiD,GAC1Cm+hD,EAAS+C,GAET,IADA,IAAIv/gD,GAAK,EAAOvjB,GAAI,EACZF,EAAIgjiD,EAAIhD,UAAUvgiD,OAAS,EAAGO,GAAK,IAAKA,EAAG,CAClD,IAAIojiD,EAAQJ,EAAIjD,UAAU//hD,GAC1B,OAAOojiD,EAAMz3hD,MACZ,KAAK,EACDzL,EAAGujB,GAAK,GACJu/gD,EAAIjD,UAAU/+hD,MAAOgiiD,EAAIhD,UAAUh/hD,OAC1C,MACD,KAAK,EAAG,KAAK,EAAG,KAAK,EACpBd,GAAI,EACDwrC,MAAM03/C,EAAM1/hD,EAAI0/hD,EAAM3/hD,EAAI2/hD,EAAM7/hD,KAAIkgB,GAAK,GACzC2/gD,EAAM1/hD,GAAK,GAAK0/hD,EAAM3/hD,GAAK,GAAK2/hD,EAAM1/hD,GAAK0/hD,EAAM3/hD,IAAGggB,GAAK,GAC5D,MACD,QAASA,GAAK,EAEhB,CACA,GAAIA,GAAO3hB,EAAX,CAEA,IAAI+oB,EAAM,IAAID,KAAK,KAAM,EAAG,IAAKpnB,EAAI,EAEjC6/hD,EAAY3kiD,OAAOY,OAASZ,OAAOY,OAAO,MAAQ,CAAC,EACnDsP,EAAqC,GACzC,IAAI5O,EAAI,EAAGA,EAAIgjiD,EAAIhD,UAAUvgiD,SAAUO,EACtCqjiD,EAAUL,EAAIhD,UAAUhgiD,KAAM,EACD,IAA1BgjiD,EAAIjD,UAAU//hD,GAAG2L,MACpBiD,EAAK3N,KAAK,CAAC+hiD,EAAIhD,UAAUhgiD,GAAIgjiD,EAAIjD,UAAU//hD,KAE5C,IAAIA,EAAI,EAAGA,EAAI4O,EAAKnP,SAAUO,EAAG,CAChC,IAAI2iiD,EAAMjjwC,EAAQ9wR,EAAK5O,GAAG,KAC1BE,EAAImjiD,EAAUV,MAEb/zhD,EAAK3N,KAAK,CAAC0hiD,EAAK,CACf74hD,KAAM88P,EAAS+7xC,GAAK92hD,QAAQ,IAAI,IAChCF,KAAM,EACNy2hD,MAAOkB,EACP34hD,GAAIkgB,EAAK3e,GAAI2e,EACbitE,QAAS,QAGVur8C,EAAUV,IAAO,EAEnB,CAIA,IAFA/zhD,EAAK+8B,MAAK,SAAStoC,EAAEjB,GAAK,OAve3B,SAAiBR,EAAczC,GAE9B,IADA,IAAIsE,EAAI7B,EAAEoC,MAAM,KAAMN,EAAIvE,EAAE6E,MAAM,KAC1BhE,EAAI,EAAGC,EAAI,EAAG4D,EAAI5B,KAAKgL,IAAIxJ,EAAEhE,OAAQiE,EAAEjE,QAASO,EAAI6D,IAAK7D,EAAG,CACnE,GAAIC,EAAIwD,EAAEzD,GAAGP,OAASiE,EAAE1D,GAAGP,OAAS,OAAOQ,EAC3C,GAAGwD,EAAEzD,IAAM0D,EAAE1D,GAAI,OAAOyD,EAAEzD,GAAK0D,EAAE1D,IAAM,EAAI,CAC5C,CACA,OAAOyD,EAAEhE,OAASiE,EAAEjE,MACrB,CAgekC8jiD,CAAQlgiD,EAAE,GAAIjB,EAAE,GAAK,IACtD4giD,EAAIhD,UAAY,GAAIgD,EAAIjD,UAAY,GAChC//hD,EAAI,EAAGA,EAAI4O,EAAKnP,SAAUO,EAAKgjiD,EAAIhD,UAAUhgiD,GAAK4O,EAAK5O,GAAG,GAAIgjiD,EAAIjD,UAAU//hD,GAAK4O,EAAK5O,GAAG,GAC7F,IAAIA,EAAI,EAAGA,EAAI4O,EAAKnP,SAAUO,EAAG,CAChC,IAAI8p+C,EAAMk5D,EAAIjD,UAAU//hD,GACpBgs9B,EAAKg3kB,EAAIhD,UAAUhgiD,GAOvB,GALA8p+C,EAAIhg+C,KAAQ88P,EAASoltB,GAAIng9B,QAAQ,IAAI,IACrCi+9C,EAAIrm+C,EAAIqm+C,EAAIpm+C,EAAIom+C,EAAIvm+C,IAAMum+C,EAAIn92C,MAAQ,GACtCm92C,EAAI9l9C,KAAO8l9C,EAAIhy4C,QAAUgy4C,EAAIhy4C,QAAQr4F,OAAS,EAC9Cqq+C,EAAIlk8C,MAAQ,EACZkk8C,EAAIs4D,MAASt4D,EAAIs4D,OAASkB,EACjB,IAANtjiD,EACF8p+C,EAAIvm+C,EAAIqL,EAAKnP,OAAS,EAAI,GAAK,EAC/Bqq+C,EAAI9l9C,KAAO,EACX8l9C,EAAIn+9C,KAAO,OACL,GAAmB,KAAhBqg9B,EAAG7q9B,OAAO,GAAW,CAC9B,IAAIqC,EAAExD,EAAE,EAAEwD,EAAIoL,EAAKnP,QAAgBigS,EAAQsjwC,EAAIhD,UAAUx8hD,KAAKwo9B,IAAjCxo9B,GAE7B,IADAsm+C,EAAIvm+C,EAAIC,GAAKoL,EAAKnP,QAAU,EAAI+D,EAC5BA,EAAExD,EAAE,EAAEwD,EAAIoL,EAAKnP,QAAgBigS,EAAQsjwC,EAAIhD,UAAUx8hD,KAAKk8R,EAAQssrB,KAAzCxo9B,GAC7Bsm+C,EAAIpm+C,EAAIF,GAAKoL,EAAKnP,QAAU,EAAI+D,EAChCsm+C,EAAIn+9C,KAAO,CACZ,MACI+zR,EAAQsjwC,EAAIhD,UAAUhgiD,EAAE,IAAI,KAAO0/R,EAAQssrB,KAAK89gB,EAAIpm+C,EAAI1D,EAAI,GAC/D8p+C,EAAIn+9C,KAAO,CAEb,CArDoB,CAuDrB,CAEA,SAAS63hD,EAAOR,EAAsBz6gD,GACrC,IAAIw4uB,EAAQx4uB,GAAW,CAAC,EAExB,GAAqB,OAAlBw4uB,EAAMw1mB,SAAmB,OAkiC7B,SAAmBysL,EAAsBz6gD,GAcxC,IAbA,IAAIkzB,EAAOlzB,GAAW,CAAC,EACnBouzC,EAAWl7xC,EAAKk7xC,UAAY,UAG5Br3sC,EAAM,CACT,oBACA,+CAJDq3sC,EAAW,UAAYA,GAImCx10C,MAAM,GAAK,IACpE,GACA,GACA,IAGGouJ,EAAOyz4C,EAAIhD,UAAU,GAAIyD,EAAKl04C,EAAMzyI,EAAKkmhD,EAAIjD,UAAU,GACnD//hD,EAAI,EAAGA,EAAIgjiD,EAAIhD,UAAUvgiD,SAAUO,EAG1C,GAFAyjiD,EAAKT,EAAIhD,UAAUhgiD,GAAGmB,MAAMouJ,EAAK9vJ,SACjCqd,EAAKkmhD,EAAIjD,UAAU//hD,IACZgkB,MAASlH,EAAGg7E,SAAiB,YAAN2r8C,EAA9B,CAGAA,EAAKA,EAAG53hD,QAAQ,0CAA0C,SAAS5L,GAClE,MAAO,KAAOA,EAAEkY,WAAW,GAAGxU,SAAS,IAAM,GAC9C,IAAGkI,QAAQ,oBAAoB,SAASpK,GACvC,MAAO,KAAOA,EAAE0W,WAAW,GAAGxU,SAAS,IAAM,GAC9C,IASA,IANA,IAAIwrB,EAAKrS,EAAGg7E,QAER4r8C,EAAO5M,GAAW/vgD,OAAO49O,SAASx1O,GAAMA,EAAGxrB,SAAS,UAAY0zhD,EAAIlogD,GAGpEw0gD,EAAU,EAAGlgiD,EAAIxB,KAAKgL,IAAI,KAAMy2hD,EAAKjkiD,QAASoiB,EAAK,EAC/C+hhD,EAAM,EAAGA,GAAOngiD,IAAKmgiD,GAAS/hhD,EAAG6hhD,EAAKvrhD,WAAWyrhD,KAAS,IAAQ/hhD,EAAK,OAAQ8hhD,EACvF,IAAIzplC,EAAKyplC,GAAe,EAAJlgiD,EAAQ,EAE5B67H,EAAIr+H,KAAK010C,GACTr3sC,EAAIr+H,KAAK,sBAAwBw6C,EAAK8zG,MAAQ,uBAAyBk04C,GACvEnk6C,EAAIr+H,KAAK,+BAAiCi5c,EAAK,mBAAqB,WACpE56U,EAAIr+H,KAAK,iBAAmB4iiD,GAAiB/mhD,EAAI2mhD,IACjDnk6C,EAAIr+H,KAAK,IAETq+H,EAAIr+H,KAAKi5c,EAAK4plC,GAAuBJ,GAAQK,GAAgBL,GAzBA,CA4B9D,OADApk6C,EAAIr+H,KAAK010C,EAAW,UACbr3sC,EAAIrzH,KAAK,OACjB,CAhlCoC+3hD,CAAUhB,EAAKjiyB,GAElD,GADAmiyB,EAAYF,GAEN,QADCjiyB,EAAMw1mB,SACA,OAuxBd,SAAmBysL,EAAsBz6gD,GACxC,IAtiBwB2L,EAsiBpB6suB,EAAQx4uB,GAAW,CAAC,EACpB+2G,EAAM,GAAI2k6C,EAAQ,GAClBvkiD,EAAeojiD,GAAQ,GACvBjzgD,EAAUkxuB,EAAMmjyB,YAAc,EAAI,EAGlClkiD,EAAI,EAAGwD,EAAI,EAEX2giD,EAAW,EAAGhE,EAAO,EACrB5w4C,EAAOyz4C,EAAIhD,UAAU,GAAIyD,EAAKl04C,EAAMzyI,EAAKkmhD,EAAIjD,UAAU,GACvDqE,EAAO,GACPC,EAAQ,EAEZ,IAAIrkiD,EAAI,EAAGA,EAAIgjiD,EAAIhD,UAAUvgiD,SAAUO,EAEtC,GADAyjiD,EAAKT,EAAIhD,UAAUhgiD,GAAGmB,MAAMouJ,EAAK9vJ,SAASqd,EAAKkmhD,EAAIjD,UAAU//hD,IACtDgkB,MAASlH,EAAGg7E,SAAiB,YAAN2r8C,EAA9B,CACA,IAAI79/C,EAAQu+/C,EAGRG,EAAUxB,GAAQW,EAAGhkiD,QACzB,IAAI+D,EAAI,EAAGA,EAAIigiD,EAAGhkiD,SAAU+D,EAAG8giD,EAAQnF,YAAY,EAAsB,IAAnBsE,EAAGtrhD,WAAW3U,IACpE8giD,EAAUA,EAAQnjiD,MAAM,EAAGmjiD,EAAQ1iiD,GACnCwiiD,EAAKjE,GAAQjC,GAAMx4S,IAAY5ouC,EAAGg7E,QAAyB,GAE3D,IAAIys8C,EAASznhD,EAAGg7E,QACH,GAAVjoE,IA/jBoBqE,EA+jBkBqwgD,EAAzBA,EA9jBVC,EAAQA,EAAMC,eAAevwgD,GAAWwwgD,GAASxwgD,KAikBvDx0B,EAAIojiD,GAAQ,KACV3D,YAAY,EAAG,UACjBz/hD,EAAEy/hD,YAAY,EAAG,IACjBz/hD,EAAEy/hD,YAAY,EA5BmC,GA6BjDz/hD,EAAEy/hD,YAAY,EAAGtvgD,GAEd/S,EAAG5Q,GAAI+yhD,EAAev/hD,EAAGod,EAAG5Q,IAC1BxM,EAAEy/hD,YAAY,EAAG,GACtBz/hD,EAAEy/hD,aAAa,EAAqBiF,EAAKjE,IACzCzgiD,EAAEy/hD,YAAY,EAAsBoF,EAAO9kiD,QAC3CC,EAAEy/hD,YAAY,EAA6BrihD,EAAGg7E,QAAmBr4F,QACjEC,EAAEy/hD,YAAY,EAAGmF,EAAQ7kiD,QACzBC,EAAEy/hD,YAAY,EAAG,GAEjBgF,GAAYzkiD,EAAED,OACd6/H,EAAIr+H,KAAKvB,GACTykiD,GAAYG,EAAQ7kiD,OACpB6/H,EAAIr+H,KAAKqjiD,GAMTH,GAAYI,EAAO9kiD,OACnB6/H,EAAIr+H,KAAKsjiD,IAaT7kiD,EAAIojiD,GAAQ,KACV3D,YAAY,EAAG,UACjBz/hD,EAAEy/hD,YAAY,EAAG,GACjBz/hD,EAAEy/hD,YAAY,EAAG,IACjBz/hD,EAAEy/hD,YAAY,EAlEmC,GAmEjDz/hD,EAAEy/hD,YAAY,EAAGtvgD,GACjBnwB,EAAEy/hD,YAAY,EAAG,GACjBz/hD,EAAEy/hD,aAAa,EAAGiF,EAAKjE,IAEvBzgiD,EAAEy/hD,YAAY,EAAGoF,EAAO9kiD,QACxBC,EAAEy/hD,YAAY,EAAUrihD,EAAGg7E,QAAmBr4F,QAC9CC,EAAEy/hD,YAAY,EAAGmF,EAAQ7kiD,QACzBC,EAAEy/hD,YAAY,EAAG,GACjBz/hD,EAAEy/hD,YAAY,EAAG,GACjBz/hD,EAAEy/hD,YAAY,EAAG,GACjBz/hD,EAAEy/hD,YAAY,EAAG,GACjBz/hD,EAAEy/hD,YAAY,EAAG,GACjBz/hD,EAAEy/hD,YAAY,EAAGv5/C,GAEjBy+/C,GAAS3kiD,EAAEkC,EACXqiiD,EAAMhjiD,KAAKvB,GACX2kiD,GAASC,EAAQ7kiD,OACjBwkiD,EAAMhjiD,KAAKqjiD,KACTnE,CAzE2D,CAuF9D,OAVAzgiD,EAAIojiD,GAAQ,KACV3D,YAAY,EAAG,WACjBz/hD,EAAEy/hD,YAAY,EAAG,GACjBz/hD,EAAEy/hD,YAAY,EAAG,GACjBz/hD,EAAEy/hD,YAAY,EAAGgB,GACjBzgiD,EAAEy/hD,YAAY,EAAGgB,GACjBzgiD,EAAEy/hD,YAAY,EAAGkF,GACjB3kiD,EAAEy/hD,YAAY,EAAGgF,GACjBzkiD,EAAEy/hD,YAAY,EAAG,GAEV5H,EAAQ,CAAEA,EAAQ,GAAgBA,EAAQ0M,GAAQvkiD,GAC1D,CA/3BqBiliD,CAAU3B,EAAKjiyB,GAGnC,IAAIt9vB,EAAI,SAAUu/hD,GAEjB,IADA,IAAI4B,EAAY,EAAGC,EAAW,EACtB7kiD,EAAI,EAAGA,EAAIgjiD,EAAIjD,UAAUtgiD,SAAUO,EAAG,CAC7C,IAAIi46B,EAAO+qnB,EAAIjD,UAAU//hD,GACzB,GAAIi46B,EAAKng1B,QAAT,CAEA,IAAI82tC,EAAO32Y,EAAKng1B,QAAQr4F,OACrBmvzC,EAAO,IACNA,EAAO,KAAQg2O,GAAch2O,EAAO,IAAS,EAC3Ci2O,GAAaj2O,EAAO,KAAW,EALX,CAO3B,CAOA,IANA,IAAIuyO,EAAW6B,EAAIhD,UAAUvgiD,OAAQ,GAAM,EAEvCqliD,EAAYF,EAAY,KAAS,EACjCG,GAFYH,EAAY,GAAM,GAERC,EAAW1D,EAAU2D,EAC3CE,EAAWD,EAAW,KAAS,EAC/BE,EAAYD,GAAW,IAAM,EAAI/iiD,KAAKuK,MAAMw4hD,EAAQ,KAAK,KACrDD,EAAWC,EAAUC,EAAY,KAAS,EAAKD,GAASC,IAAcD,GAAW,IAAM,EAAI/iiD,KAAKuK,MAAMw4hD,EAAQ,KAAK,KAC3H,IAAIvhiD,EAAK,CAAC,EAAGwhiD,EAAWD,EAASF,EAAU3D,EAAS0D,EAAUD,EAAW,GAGzE,OAFA5B,EAAIjD,UAAU,GAAG/7gD,KAAO4ghD,GAAa,EACrCnhiD,EAAE,IAAMu/hD,EAAIjD,UAAU,GAAGn6/C,MAAMniC,EAAE,GAAGA,EAAE,GAAGA,EAAE,GAAGA,EAAE,GAAGA,EAAE,GAAGA,EAAE,KAAMA,EAAE,GAAG,GAAM,GACpEA,CACP,CAvBO,CAuBLu/hD,GACCtjiD,EAAIojiD,GAAQr/hD,EAAE,IAAM,GACpBzD,EAAI,EAAGsD,EAAI,EAEd,IAAItD,EAAI,EAAGA,EAAI,IAAKA,EAAGN,EAAEy/hD,YAAY,EAAG+F,EAAWlliD,IACnD,IAAIA,EAAI,EAAGA,EAAI,IAAKA,EAAGN,EAAEy/hD,YAAY,EAAG,GAMxC,IALAz/hD,EAAEy/hD,YAAY,EAAG,IACjBz/hD,EAAEy/hD,YAAY,EAAG,GACjBz/hD,EAAEy/hD,YAAY,EAAG,OACjBz/hD,EAAEy/hD,YAAY,EAAG,GACjBz/hD,EAAEy/hD,YAAY,EAAG,GACbn/hD,EAAI,EAAGA,EAAI,IAAKA,EAAGN,EAAEy/hD,YAAY,EAAG,GAUxC,IATAz/hD,EAAEy/hD,YAAY,EAAG,GACjBz/hD,EAAEy/hD,YAAY,EAAG17hD,EAAE,IACnB/D,EAAEy/hD,YAAY,EAAG17hD,EAAE,GAAKA,EAAE,GAAKA,EAAE,GAAKA,EAAE,GAAK,GAC7C/D,EAAEy/hD,YAAY,EAAG,GACjBz/hD,EAAEy/hD,YAAY,EAAG,MACjBz/hD,EAAEy/hD,YAAY,EAAG17hD,EAAE,GAAKA,EAAE,GAAKA,EAAE,GAAKA,EAAE,GAAK,EAAGq+hD,GAChDpiiD,EAAEy/hD,YAAY,EAAG17hD,EAAE,IACnB/D,EAAEy/hD,aAAa,EAAG17hD,EAAE,GAAKA,EAAE,GAAK,EAAGq+hD,GACnCpiiD,EAAEy/hD,YAAY,EAAG17hD,EAAE,IACfzD,EAAI,EAAGA,EAAI,MAAOA,EAAGN,EAAEy/hD,aAAa,EAAGn/hD,EAAIyD,EAAE,GAAKA,EAAE,GAAKzD,GAAK,GAEnE,GAAGyD,EAAE,GACJ,IAAIH,EAAI,EAAGA,EAAIG,EAAE,KAAMH,EAAG,CACzB,KAAMtD,EAAI,IAAU,IAAJsD,IAAWtD,EAAGN,EAAEy/hD,aAAa,EAAGn/hD,EAAIyD,EAAE,GAAKA,EAAE,GAAKzD,GAAK,GACvEN,EAAEy/hD,aAAa,EAAG77hD,IAAMG,EAAE,GAAK,EAAIq+hD,EAAax+hD,EAAI,EACrD,CAED,IAAI6hiD,EAAU,SAASxiiD,GACtB,IAAIW,GAAKX,EAAG3C,EAAEsD,EAAE,IAAKtD,EAAGN,EAAEy/hD,aAAa,EAAGn/hD,EAAE,GACzC2C,MAAO3C,EAAGN,EAAEy/hD,aAAa,EAAG2C,GAChC,EAEA,IADAx+hD,EAAItD,EAAI,EACJsD,GAAGG,EAAE,GAAIzD,EAAEsD,IAAKtD,EAAGN,EAAEy/hD,aAAa,EAAGiG,EAAOC,SAChD,IAAI/hiD,GAAGG,EAAE,GAAIzD,EAAEsD,IAAKtD,EAAGN,EAAEy/hD,aAAa,EAAGiG,EAAOE,SAChDH,EAAQ1hiD,EAAE,IACV0hiD,EAAQ1hiD,EAAE,IAGV,IAFA,IAAID,EAAe,EAAGorzC,EAAkB,EACpC32Y,EAAoB+qnB,EAAIjD,UAAU,GAChCv8hD,EAAIw/hD,EAAIjD,UAAUtgiD,SAAU+D,GACjCy06B,EAAO+qnB,EAAIjD,UAAUv8hD,IACZs0F,WAET82tC,EAAO32Y,EAAKng1B,QAAQr4F,QACV,OACVw46B,EAAKry4B,MAAQtiC,EACb6hiD,EAASv2O,EAAO,KAAW,KAG5B,IADAu2O,EAAS1hiD,EAAE,GAAK,GAAM,GACV,IAAN/D,EAAEkC,GAAWlC,EAAEy/hD,aAAa,EAAGiG,EAAOtD,YAE5C,IADAx+hD,EAAItD,EAAI,EACJwD,EAAI,EAAGA,EAAIw/hD,EAAIjD,UAAUtgiD,SAAU+D,GACtCy06B,EAAO+qnB,EAAIjD,UAAUv8hD,IACZs0F,YAET82tC,EAAO32Y,EAAKng1B,QAAQr4F,SACRmvzC,GAAQ,OACpB32Y,EAAKry4B,MAAQtiC,EACb6hiD,EAASv2O,EAAO,IAAS,KAE1B,KAAY,IAANlvzC,EAAEkC,GAAWlC,EAAEy/hD,aAAa,EAAGiG,EAAOtD,YAC5C,IAAI9hiD,EAAI,EAAGA,EAAIyD,EAAE,IAAI,IAAKzD,EAAG,CAC5B,IAAIgs9B,EAAKg3kB,EAAIhD,UAAUhgiD,GACvB,GAAIgs9B,GAAoB,IAAdA,EAAGvs9B,OAAb,CAMAw46B,EAAO+qnB,EAAIjD,UAAU//hD,GACZ,IAANA,IAASi46B,EAAKry4B,MAAQqy4B,EAAKj05B,KAAOi05B,EAAKry4B,MAAQ,EAAIk8/C,GACtD,IAAIyD,EAAwB,IAANvliD,GAAW+gwB,EAAMxxmB,MAAS0oxB,EAAKnu6B,KASrD,GARA8kzC,EAAO,GAAG22O,EAAI9liD,OAAO,GACrBC,EAAEy/hD,YAAY,GAAIoG,EAAK,WACvB7liD,EAAEy/hD,YAAY,EAAGvwO,GACjBlvzC,EAAEy/hD,YAAY,EAAGlnnB,EAAKts6B,MACtBjM,EAAEy/hD,YAAY,EAAGlnnB,EAAKtrzB,OACtBjtH,EAAEy/hD,aAAa,EAAGlnnB,EAAKx06B,GACvB/D,EAAEy/hD,aAAa,EAAGlnnB,EAAKv06B,GACvBhE,EAAEy/hD,aAAa,EAAGlnnB,EAAK106B,GACnB006B,EAAKmqnB,MACJ1iiD,EAAEy/hD,YAAY,GAAIlnnB,EAAKmqnB,MAAO,YADnB,IAAI5+hD,EAAI,EAAGA,EAAI,IAAKA,EAAG9D,EAAEy/hD,YAAY,EAAG,GAExDz/hD,EAAEy/hD,YAAY,EAAGlnnB,EAAKlt6B,OAAS,GAC/BrL,EAAEy/hD,YAAY,EAAG,GAAIz/hD,EAAEy/hD,YAAY,EAAG,GACtCz/hD,EAAEy/hD,YAAY,EAAG,GAAIz/hD,EAAEy/hD,YAAY,EAAG,GACtCz/hD,EAAEy/hD,YAAY,EAAGlnnB,EAAKry4B,OACtBlmC,EAAEy/hD,YAAY,EAAGlnnB,EAAKj05B,MAAOtkB,EAAEy/hD,YAAY,EAAG,EAlB9C,KALA,CACC,IAAI37hD,EAAI,EAAGA,EAAI,KAAMA,EAAG9D,EAAEy/hD,YAAY,EAAG,GACzC,IAAI37hD,EAAI,EAAGA,EAAI,IAAKA,EAAG9D,EAAEy/hD,YAAY,GAAI,GACzC,IAAI37hD,EAAI,EAAGA,EAAI,KAAMA,EAAG9D,EAAEy/hD,YAAY,EAAG,EAE1C,CAmBD,CACA,IAAIn/hD,EAAI,EAAGA,EAAIgjiD,EAAIjD,UAAUtgiD,SAAUO,EAGtC,IAFAi46B,EAAO+qnB,EAAIjD,UAAU//hD,IAEbgkB,MAAQ,KAEf,GADAtkB,EAAEkC,EAAKq26B,EAAKry4B,MAAM,GAAM,EACpBkx/C,GAAW/vgD,OAAO49O,SAASszqB,EAAKng1B,SACnCmg1B,EAAKng1B,QAAQonC,KAAKx/H,EAAGA,EAAEkC,EAAG,EAAGq26B,EAAKj05B,MAElCtkB,EAAEkC,GAAMq26B,EAAKj05B,KAAO,KAAQ,QACtB,CACN,IAAIxgB,EAAI,EAAGA,EAAIy06B,EAAKj05B,OAAQxgB,EAAG9D,EAAEy/hD,YAAY,EAAGlnnB,EAAKng1B,QAAQt0F,IAC7D,KAAU,IAAJA,IAAaA,EAAG9D,EAAEy/hD,YAAY,EAAG,EACxC,CAGF,IAAIn/hD,EAAI,EAAGA,EAAIgjiD,EAAIjD,UAAUtgiD,SAAUO,EAGtC,IAFAi46B,EAAO+qnB,EAAIjD,UAAU//hD,IAEbgkB,KAAO,GAAKi05B,EAAKj05B,KAAO,KAC/B,GAAI8ygD,GAAW/vgD,OAAO49O,SAASszqB,EAAKng1B,SACnCmg1B,EAAKng1B,QAAQonC,KAAKx/H,EAAGA,EAAEkC,EAAG,EAAGq26B,EAAKj05B,MAElCtkB,EAAEkC,GAAMq26B,EAAKj05B,KAAO,IAAO,OACrB,CACN,IAAIxgB,EAAI,EAAGA,EAAIy06B,EAAKj05B,OAAQxgB,EAAG9D,EAAEy/hD,YAAY,EAAGlnnB,EAAKng1B,QAAQt0F,IAC7D,KAAU,GAAJA,IAAYA,EAAG9D,EAAEy/hD,YAAY,EAAG,EACvC,CAGF,GAAIrI,EACHp3hD,EAAEkC,EAAIlC,EAAED,YAGR,KAAMC,EAAEkC,EAAIlC,EAAED,QAAQC,EAAEy/hD,YAAY,EAAG,GAExC,OAAOz/hD,CACR,CApqBAmC,EAAQ6D,QAAU,QA0rBlB,IAmDI8+hD,EAnDA3B,EAAO,GAGPf,GAAc,EAEdd,EAAmB,mBACnBkE,EAAa,CAAC,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,GAAM,KACxD5B,EAAe,mCACf8B,EAAS,CAEZI,YAAa,EACbH,SAAU,EACVC,SAAU,EACVxD,WAAYA,EACZ2D,UAAW,EAEXzE,iBAAkBA,EAClB0E,qBAAsB,OACtBC,WAAY,EACZC,UAAW,EACXtC,aAAcA,EAEduC,WAAY,CAAC,UAAU,UAAU,SAAS,YAAY,WAAW,SAUlE,SAASxO,EAAI33hD,GAEZ,IADA,IAAI4/H,EAAM,IAAIzgI,MAAMa,EAAED,QACdO,EAAI,EAAGA,EAAIN,EAAED,SAAUO,EAAGs/H,EAAIt/H,GAAKd,OAAO4nB,aAAapnB,EAAEM,IACjE,OAAOs/H,EAAIrzH,KAAK,GACjB,CAiDA,IAbA,IAQoBxN,EAASD,EARzBsniD,EAAa,CAAE,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,IAG7EC,EAAS,CAAI,EAAK,EAAK,EAAK,EAAK,EAAK,EAAK,EAAI,GAAK,GAAK,GAAK,GAAK,GAAK,GAAK,GAAK,GAAK,GAAK,GAAK,GAAK,GAAK,GAAK,GAAK,GAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,KAGvJC,EAAS,CAAG,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,MAAO,OAIzJC,EAAyC,oBAAflnhD,WAE1BmnhD,EAAWD,EAAmB,IAAIlnhD,WAAW,KAAQ,GACjDzZ,EAAI,EAAGA,EAAI,MAAUA,EAAG4giD,EAAS5giD,SALZ9G,EAAkG,MAAlGA,EAA0B,SAAnCC,EAKqC6G,IALhB,EAAI7G,GAAG,IAAsC,QAAjBA,GAAG,EAAIA,GAAG,MAA+B,GAAOD,GAAG,EAAIA,IAO5H,SAAS2niD,EAAW1niD,EAAGiE,GACtB,IAAI0jiD,EAAMF,EAAa,IAAJzniD,GACnB,OAAGiE,GAAK,EAAU0jiD,IAAS,EAAE1jiD,GAC7B0jiD,EAAOA,GAAO,EAAKF,EAAUzniD,GAAG,EAAG,KAChCiE,GAAK,GAAW0jiD,IAAS,GAAG1jiD,GAC/B0jiD,EAAOA,GAAO,EAAKF,EAAUzniD,GAAG,GAAI,QACpB,GAAGiE,EACpB,CAGA,SAAS2jiD,EAAY3gT,EAAKx+D,GAAM,IAAIvkrC,EAAQ,EAAHukrC,EAAOllrC,EAAKklrC,IAAK,EAAI,OAASw+D,EAAI1jvC,IAAIW,GAAK,EAAI,EAAI+ivC,EAAI1jvC,EAAE,IAAI,MAAMW,EAAI,CAAM,CACtH,SAAS2jiD,EAAY5gT,EAAKx+D,GAAM,IAAIvkrC,EAAQ,EAAHukrC,EAAOllrC,EAAKklrC,IAAK,EAAI,OAASw+D,EAAI1jvC,IAAIW,GAAK,EAAI,EAAI+ivC,EAAI1jvC,EAAE,IAAI,MAAMW,EAAI,CAAM,CAEtH,SAAS4jiD,EAAY7gT,EAAKx+D,GAAM,IAAIvkrC,EAAQ,EAAHukrC,EAAOllrC,EAAKklrC,IAAK,EAAI,OAASw+D,EAAI1jvC,IAAIW,GAAK,EAAI,EAAI+ivC,EAAI1jvC,EAAE,IAAI,MAAMW,EAAI,EAAM,CACtH,SAAS6jiD,EAAY9gT,EAAKx+D,GAAM,IAAIvkrC,EAAQ,EAAHukrC,EAAOllrC,EAAKklrC,IAAK,EAAI,OAASw+D,EAAI1jvC,IAAIW,GAAK,EAAI,EAAI+ivC,EAAI1jvC,EAAE,IAAI,MAAMW,EAAI,GAAM,CAGtH,SAAS8jiD,EAAY/gT,EAAKx+D,EAAIzorC,GAC7B,IAAIkE,EAAQ,EAAHukrC,EAAOllrC,EAAKklrC,IAAK,EAAIplrC,GAAM,GAAGrD,GAAG,EACtC4D,EAAIqjvC,EAAI1jvC,KAAOW,EACnB,OAAGlE,EAAI,EAAIkE,EAAUN,EAAIP,GACzBO,GAAKqjvC,EAAI1jvC,EAAE,IAAK,EAAEW,EACflE,EAAI,GAAKkE,EAAUN,EAAIP,GAC1BO,GAAKqjvC,EAAI1jvC,EAAE,IAAK,GAAGW,EAChBlE,EAAI,GAAKkE,EAAUN,EAAIP,GAC1BO,GAAKqjvC,EAAI1jvC,EAAE,IAAK,GAAGW,GACRb,GACZ,CAGA,SAAS4kiD,EAAahhT,EAAKx+D,EAAI7krC,GAAK,IAAIM,EAAS,EAALukrC,EAAQllrC,EAAIklrC,IAAO,EAM9D,OALGvkrC,GAAK,EAAG+ivC,EAAI1jvC,KAAW,EAAJK,IAAUM,GAE/B+ivC,EAAI1jvC,IAAOK,GAAKM,EAAK,IACrB+ivC,EAAI1jvC,EAAE,IAAQ,EAAFK,IAAS,EAAEM,GAEjBukrC,EAAK,CACb,CAEA,SAASy/W,EAAajhT,EAAKx+D,EAAI7krC,GAI9B,OAFAA,GAAO,EAAFA,KADQ,EAAL6krC,GAERw+D,EAFoBx+D,IAAO,IAEjB7krC,EACH6krC,EAAK,CACb,CACA,SAAS0/W,EAAalhT,EAAKx+D,EAAI7krC,GAC9B,IAAgBL,EAAIklrC,IAAO,EAI3B,OAHA7krC,IADa,EAAL6krC,EAERw+D,EAAI1jvC,IAAW,IAAJK,EAAUA,KAAO,EAC5BqjvC,EAAI1jvC,EAAE,GAAKK,EACJ6krC,EAAK,CACb,CACA,SAAS2/W,EAAcnhT,EAAKx+D,EAAI7krC,GAC/B,IAAgBL,EAAIklrC,IAAO,EAK3B,OAJA7krC,IADa,EAAL6krC,EAERw+D,EAAI1jvC,IAAW,IAAJK,EAAUA,KAAO,EAC5BqjvC,EAAI1jvC,EAAE,GAAS,IAAJK,EACXqjvC,EAAI1jvC,EAAE,GAAKK,IAAM,EACV6krC,EAAK,EACb,CAGA,SAASshI,EAAQ9lzC,EAAG68hD,GACnB,IAAI97hD,EAAIf,EAAEjD,OAAQwF,EAAI,EAAExB,EAAI87hD,EAAK,EAAE97hD,EAAI87hD,EAAK,EAAGv/hD,EAAI,EACnD,GAAGyD,GAAK87hD,EAAI,OAAO78hD,EACnB,GAAGo0hD,EAAS,CACX,IAAIp3hD,EAAIw3hD,EAAejyhD,GAEvB,GAAGvC,EAAEw8H,KAAMx8H,EAAEw8H,KAAKx/H,QACb,KAAMM,EAAI0C,EAAEjD,SAAUO,EAAGN,EAAEM,GAAK0C,EAAE1C,GACvC,OAAON,CACR,CAAO,GAAGumiD,EAAkB,CAC3B,IAAI7liD,EAAI,IAAI2e,WAAW9Z,GACvB,GAAG7E,EAAEiL,IAAKjL,EAAEiL,IAAI3I,QACX,KAAM1C,EAAIyD,IAAKzD,EAAGI,EAAEJ,GAAK0C,EAAE1C,GAChC,OAAOI,CACR,CAEA,OADAsC,EAAEjD,OAASwF,EACJvC,CACR,CAGA,SAASokiD,EAAgBroiD,GAExB,IADA,IAAIiB,EAAI,IAAIb,MAAMJ,GACVuB,EAAI,EAAGA,EAAIvB,IAAKuB,EAAGN,EAAEM,GAAK,EAClC,OAAON,CACR,CAGA,SAASqniD,EAAWC,EAAOC,EAAM9hgD,GAChC,IAAIigwC,EAAS,EAAGziyC,EAAI,EAAG3C,EAAI,EAAGwD,EAAI,EAAG0jiD,EAAQ,EAAGzjiD,EAAIujiD,EAAMvniD,OAEtD0niD,EAAYlB,EAAmB,IAAIhnhD,YAAY,IAAM6nhD,EAAgB,IACzE,IAAI9miD,EAAI,EAAGA,EAAI,KAAMA,EAAGmniD,EAASnniD,GAAK,EAEtC,IAAIA,EAAIyD,EAAGzD,EAAImlC,IAAOnlC,EAAGgniD,EAAMhniD,GAAK,EACpCyD,EAAIujiD,EAAMvniD,OAEV,IAAI2niD,EAAQnB,EAAmB,IAAIhnhD,YAAYxb,GAAKqjiD,EAAgBrjiD,GAGpE,IAAIzD,EAAI,EAAGA,EAAIyD,IAAKzD,EACnBmniD,EAAUxkiD,EAAIqkiD,EAAMhniD,MACjBolyC,EAASziyC,IAAGyiyC,EAASziyC,GACxBykiD,EAAMpniD,GAAK,EAGZ,IADAmniD,EAAS,GAAK,EACVnniD,EAAI,EAAGA,GAAKolyC,IAAUplyC,EAAGmniD,EAASnniD,EAAE,IAAOkniD,EAASA,EAAQC,EAASnniD,EAAE,IAAK,EAChF,IAAIA,EAAI,EAAGA,EAAIyD,IAAKzD,EAEP,IADZkniD,EAAQF,EAAMhniD,MACConiD,EAAMpniD,GAAKmniD,EAASD,EAAM,OAI1C,IAAIG,EAAQ,EACZ,IAAIrniD,EAAI,EAAGA,EAAIyD,IAAKzD,EAEnB,GAAY,IADZqniD,EAAQL,EAAMhniD,IAGb,IADAkniD,EAAQf,EAAWiB,EAAMpniD,GAAIolyC,IAAUA,EAAOiiQ,EAC1C7jiD,GAAK,GAAI4hyC,EAAS,EAAIiiQ,GAAU,EAAG7jiD,GAAG,IAAKA,EAC9CyjiD,EAAKC,EAAO1jiD,GAAG6jiD,GAAiB,GAANA,EAAarniD,GAAG,EAG7C,OAAOolyC,CACR,CAGA,IAAIkiQ,GAAWrB,EAAmB,IAAIhnhD,YAAY,KAAO6nhD,EAAgB,KACrES,GAAWtB,EAAmB,IAAIhnhD,YAAY,IAAO6nhD,EAAgB,IACzE,IAAIb,EAAkB,CACrB,IAAI,IAAIjmiD,GAAI,EAAGA,GAAI,MAAOA,GAAGsniD,GAAStniD,IAAK,EAC3C,IAAIA,GAAI,EAAGA,GAAI,KAAMA,GAAGuniD,GAASvniD,IAAK,CACvC,EACA,WAGC,IAFA,IAAIwniD,EAA0B,GAC1BxniD,EAAI,EACHA,EAAE,GAAIA,IAAKwniD,EAAMvmiD,KAAK,GAC3B8liD,EAAWS,EAAOD,GAAU,IAE5B,IAAIP,EAA0B,GAE9B,IADAhniD,EAAI,EACEA,GAAG,IAAKA,IAAKgniD,EAAM/liD,KAAK,GAC9B,KAAMjB,GAAG,IAAKA,IAAKgniD,EAAM/liD,KAAK,GAC9B,KAAMjB,GAAG,IAAKA,IAAKgniD,EAAM/liD,KAAK,GAC9B,KAAMjB,GAAG,IAAKA,IAAKgniD,EAAM/liD,KAAK,GAC9B8liD,EAAWC,EAAOM,GAAU,IAC5B,CAbD,GAaK,IAAIG,GAA2B,WAGnC,IAFA,IAAIC,EAAYzB,EAAmB,IAAIlnhD,WAAW,OAAU,GACxDvb,EAAI,EAAGV,EAAI,EACTU,EAAIwiiD,EAAOvmiD,OAAS,IAAK+D,EAC9B,KAAMV,EAAIkjiD,EAAOxiiD,EAAE,KAAMV,EAAG4kiD,EAAU5kiD,GAAKU,EAE5C,KAAKV,EAAI,QAASA,EAAG4kiD,EAAU5kiD,GAAK,GAEpC,IAAI6kiD,EAAY1B,EAAmB,IAAIlnhD,WAAW,KAAS,GAC3D,IAAIvb,EAAI,EAAGV,EAAI,EAAGU,EAAIuiiD,EAAOtmiD,OAAS,IAAK+D,EAC1C,KAAMV,EAAIijiD,EAAOviiD,EAAE,KAAMV,EAAG6kiD,EAAU7kiD,GAAKU,EAgG5C,OAAO,SAAqBoL,EAAM0wH,GACjC,OAAG1wH,EAAKnP,OAAS,EA9FlB,SAAsBmP,EAAM0wH,GAE3B,IADA,IAAIso6C,EAAO,EACLA,EAAOh5hD,EAAKnP,QAAQ,CACzB,IAAIgE,EAAIxB,KAAKgL,IAAI,MAAQ2B,EAAKnP,OAASmoiD,GACnC5liD,EAAI4liD,EAAOnkiD,GAAKmL,EAAKnP,OAIzB,IAHA6/H,EAAI6/5C,YAAY,GAAIn9hD,GACpBs9H,EAAI6/5C,YAAY,EAAG17hD,GACnB67H,EAAI6/5C,YAAY,EAAU,OAAL17hD,GACfA,KAAM,GAAG67H,EAAIA,EAAI19H,KAAOgN,EAAKg5hD,IACpC,CACA,OAAOto6C,EAAI19H,CACZ,CAmF4BimiD,CAAaj5hD,EAAM0wH,GAhF/C,SAA0B1wH,EAAM0wH,GAI/B,IAHA,IAAI4njC,EAAK,EACL0gX,EAAO,EACPE,EAAQ7B,EAAmB,IAAIhnhD,YAAY,OAAU,GACnD2ohD,EAAOh5hD,EAAKnP,QAAQ,CACzB,IAAIgE,EAA8BxB,KAAKgL,IAAI,MAAQ2B,EAAKnP,OAASmoiD,GAGjE,GAAGnkiD,EAAI,GAAP,CAMC,IAJQ,GADRyjrC,EAAKw/W,EAAapn6C,EAAK4njC,KAAQ0gX,EAAOnkiD,GAAKmL,EAAKnP,YACrCynrC,GAAM,GAAU,EAALA,IACtB5njC,EAAI19H,EAAKslrC,EAAK,EAAK,EACnB5njC,EAAI6/5C,YAAY,EAAG17hD,GACnB67H,EAAI6/5C,YAAY,EAAU,OAAL17hD,GACfA,KAAM,GAAG67H,EAAIA,EAAI19H,KAAOgN,EAAKg5hD,KACnC1gX,EAAa,EAAR5njC,EAAI19H,CAEV,KATA,CAWAslrC,EAAKw/W,EAAapn6C,EAAK4njC,KAAQ0gX,EAAOnkiD,GAAKmL,EAAKnP,QAAU,GAE1D,IADA,IAAIqnG,EAAO,EACLrjG,KAAM,GAAG,CACd,IAAI1B,EAAI6M,EAAKg5hD,GAGT/hiD,GAAS,EAAGkiiD,EAAO,EAEvB,IAAIliiD,EAAQiiiD,EAJZhh8C,EAA2B,OAAlBA,GAAQ,EAAK/kG,QAKrB8D,IAAgB,MAAP+hiD,GACEA,IAAM/hiD,GAAS,OACvBA,EAAQ+hiD,GAAM,KAAMh5hD,EAAK/I,EAAQkiiD,IAASn5hD,EAAKg5hD,EAAOG,IAASA,EAAO,OAAOA,EAGjF,GAAGA,EAAO,EAAG,EAEZhmiD,EAAI4liD,EAAUI,KACN,GAAI7gX,EAAK0/W,EAAatn6C,EAAK4njC,EAAIg/W,EAASnkiD,EAAE,IAAI,GAAK,GAE1D6kiD,EAAatn6C,EAAK4njC,EAAI,GAEtB0/W,EAAatn6C,EADb4njC,GAAM,EACgBg/W,EAASnkiD,EAAE,KAAK,GACtCmlrC,GAAM,GAEP,IAAI8gX,EAAUjmiD,EAAI,EAAK,EAAMA,EAAI,GAAI,EAClCimiD,EAAS,IACXnB,EAAcvn6C,EAAK4njC,EAAI6gX,EAAOhC,EAAOhkiD,IACrCmlrC,GAAM8gX,GAGPjmiD,EAAI2liD,EAAUE,EAAO/hiD,GACrBqhrC,EAAK0/W,EAAatn6C,EAAK4njC,EAAIg/W,EAASnkiD,IAAI,GACxCmlrC,GAAM,EAEN,IAAI+gX,EAASlmiD,EAAI,EAAI,EAAKA,EAAE,GAAI,EAC7BkmiD,EAAS,IACXpB,EAAcvn6C,EAAK4njC,EAAI0gX,EAAO/hiD,EAAQmgiD,EAAOjkiD,IAC7CmlrC,GAAM+gX,GAEP,IAAI,IAAI3iiD,EAAI,EAAGA,EAAIyiiD,IAAQziiD,EAC1BwiiD,EAAMhh8C,GAAe,MAAP8g8C,EACd9g8C,EAAoC,OAA3BA,GAAQ,EAAKl4F,EAAKg5hD,MACzBA,EAEHnkiD,GAAIskiD,EAAO,CACZ,MAEIhmiD,GAAK,IAAKA,GAAQ,GAChBmlrC,EAAKy/W,EAAarn6C,EAAK4njC,EAAI,GAChCA,EAAK0/W,EAAatn6C,EAAK4njC,EAAIg/W,EAASnkiD,IACpC+liD,EAAMhh8C,GAAe,MAAP8g8C,IACZA,CAEJ,CAEA1gX,EAAK0/W,EAAatn6C,EAAK4njC,EAAI,GAAK,CAzDhC,CA0DD,CAEA,OADA5njC,EAAI19H,GAAMslrC,EAAK,GAAG,EAAG,EACd5njC,EAAI19H,CACZ,CAGQsmiD,CAAiBt5hD,EAAM0wH,EAC/B,CACA,CA9GmC,GAgHpC,SAASol6C,GAAS91hD,GACjB,IAAI82uC,EAAMo9S,GAAQ,GAAG7giD,KAAKyK,MAAkB,IAAZkC,EAAKnP,SACjC2tC,EAAMq6/C,GAAY74hD,EAAM82uC,GAC5B,OAAOA,EAAIvkvC,MAAM,EAAGisC,EACrB,CAGA,IAAI+6/C,GAAWlC,EAAmB,IAAIhnhD,YAAY,OAAS6nhD,EAAgB,OACvEsB,GAAWnC,EAAmB,IAAIhnhD,YAAY,OAAS6nhD,EAAgB,OACvEuB,GAAWpC,EAAmB,IAAIhnhD,YAAY,KAAS6nhD,EAAgB,KACvEwB,GAAY,EAAGC,GAAY,EAG/B,SAASC,GAAI55hD,EAAMg5hD,GAElB,IAAIa,EAAQlC,EAAY33hD,EAAMg5hD,GAAQ,IAClCc,EAASnC,EAAY33hD,EADkBg5hD,GAAQ,GACZ,EACnCe,EAvQL,SAAqBjjT,EAAKx+D,GAAM,IAAIvkrC,EAAQ,EAAHukrC,EAAOllrC,EAAKklrC,IAAK,EAAI,OAASw+D,EAAI1jvC,IAAIW,GAAK,EAAI,EAAI+ivC,EAAI1jvC,EAAE,IAAI,MAAMW,EAAI,EAAM,CAuQxGimiD,CAAYh6hD,EADiBg5hD,GAAQ,GACX,EAAGA,GAAQ,EAUlD,IATA,IAAIjliD,EAAI,EAGJqkiD,EAAQf,EAAmB,IAAIlnhD,WAAW,IAAM+nhD,EAAgB,IAChEM,EAAQ,CAAE,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAChEhiQ,EAAS,EACT+hQ,EAAYlB,EAAmB,IAAIlnhD,WAAW,GAAK+nhD,EAAgB,GACnE+B,EAAY5C,EAAmB,IAAIlnhD,WAAW,GAAK+nhD,EAAgB,GACnErjiD,EAAIujiD,EAAMvniD,OACNO,EAAI,EAAGA,EAAI2oiD,IAAU3oiD,EAC5BgniD,EAAMlB,EAAW9liD,IAAM2C,EAAI2jiD,EAAY13hD,EAAMg5hD,GAC1CxiQ,EAASziyC,IAAGyiyC,EAASziyC,GACxBwkiD,EAASxkiD,KACTiliD,GAAQ,EAIT,IAAIV,EAAQ,EAEZ,IADAC,EAAS,GAAK,EACVnniD,EAAI,EAAGA,GAAKolyC,IAAUplyC,EAAG6oiD,EAAU7oiD,GAAKkniD,EAASA,EAAQC,EAASnniD,EAAE,IAAK,EAC7E,IAAIA,EAAI,EAAGA,EAAIyD,IAAKzD,EAA4B,IAArBkniD,EAAQF,EAAMhniD,MAAUoniD,EAAMpniD,GAAK6oiD,EAAU3B,MAExE,IAAIG,EAAQ,EACZ,IAAIrniD,EAAI,EAAGA,EAAIyD,IAAKzD,EAEnB,GAAY,IADZqniD,EAAQL,EAAMhniD,IACC,CACdkniD,EAAQhB,EAASkB,EAAMpniD,KAAM,EAAEqniD,EAC/B,IAAI,IAAI7jiD,GAAK,GAAI,EAAE6jiD,GAAQ,EAAG7jiD,GAAG,IAAKA,EAAG6kiD,GAASnB,EAAO1jiD,GAAG6jiD,GAAiB,EAANA,EAAYrniD,GAAG,CACvF,CAID,IAAI8oiD,EAA2B,GAE/B,IADA1jQ,EAAS,EACH0jQ,EAAOrpiD,OAASgpiD,EAAQC,GAG7B,OADAd,GAAgB,GADhBV,EAAQmB,GAAS7B,EAAY53hD,EAAMg5hD,KAE3BV,KAAW,GAClB,KAAK,GAGJ,IAFAvkiD,EAAI,EAAI0jiD,EAAYz3hD,EAAMg5hD,GAAOA,GAAQ,EACzCV,EAAQ4B,EAAOA,EAAOrpiD,OAAS,GACzBkD,KAAM,GAAGmmiD,EAAO7niD,KAAKimiD,GAC3B,MACD,KAAK,GAEJ,IADAvkiD,EAAI,EAAI2jiD,EAAY13hD,EAAMg5hD,GAAOA,GAAQ,EACnCjliD,KAAM,GAAGmmiD,EAAO7niD,KAAK,GAC3B,MACD,KAAK,GAEJ,IADA0B,EAAI,GAAK6jiD,EAAY53hD,EAAMg5hD,GAAOA,GAAQ,EACpCjliD,KAAO,GAAGmmiD,EAAO7niD,KAAK,GAC5B,MACD,QACC6niD,EAAO7niD,KAAKimiD,GACT9hQ,EAAS8hQ,IAAO9hQ,EAAS8hQ,GAM/B,IAAI9wrC,EAAK0yrC,EAAO3niD,MAAM,EAAGsniD,GAAQpyrC,EAAKyyrC,EAAO3niD,MAAMsniD,GACnD,IAAIzoiD,EAAIyoiD,EAAOzoiD,EAAI,MAAOA,EAAGo2W,EAAGp2W,GAAK,EACrC,IAAIA,EAAI0oiD,EAAQ1oiD,EAAI,KAAMA,EAAGq2W,EAAGr2W,GAAK,EAGrC,OAFAsoiD,GAAYvB,EAAW3wrC,EAAI+xrC,GAAU,KACrCI,GAAYxB,EAAW1wrC,EAAI+xrC,GAAU,IAC9BR,CACR,CAiFA,SAASmB,GAAS70gD,EAAS80gD,GAC1B,IACI1p6C,EAhFL,SAAiB1wH,EAAMo6hD,GAEtB,GAAc,GAAXp6hD,EAAK,MAAuB,EAAVA,EAAK,IAAa,MAAO,CAACqohD,EAAY+R,GAAM,GAajE,IAVA,IAAIpB,EAAO,EAGP3zgD,EAAS,EAETswgD,EAASrN,EAAe8R,GAAa,GAAG,IACxCC,EAAO,EACPC,EAAK3E,EAAO9kiD,SAAS,EACrB0piD,EAAY,EAAGC,EAAY,EAEX,IAAN,EAAPn1gD,IAEN,GADAA,EAASqygD,EAAY13hD,EAAMg5hD,GAAOA,GAAQ,EACtC3zgD,IAAW,GAAM,EAoBrB,IARWA,GAAU,GAAM,GAE1Bk1gD,EAAY,EAAGC,EAAY,IAG3BxB,EAAOY,GAAI55hD,EAAMg5hD,GACjBuB,EAAYb,GAAWc,EAAYb,MAE5B,EACHS,GAAQE,EAAKD,EAAO,QAAkDC,GAAxC3E,EAAS/7O,EAAQ+7O,EAAQ0E,EAAO,QAAoBxpiD,QAEtF,IAAIk2E,EAAO8w9C,EAAY73hD,EAAMg5hD,EAAMuB,GAC/B7ugD,EAAQrG,IAAS,GAAM,EAAIqzgD,GAAS3x9C,GAAQwy9C,GAASxy9C,GAGzD,GAFAiy9C,GAAe,GAAPttgD,EAEiB,KAFNA,KAAU,KAEjB,EAAG,KAAaiqgD,EAAO0E,KAAU3ugD,MACxC,IAAW,KAARA,EAAa,MAGpB,IAAI0tgD,GADJ1tgD,GAAQ,KACa,EAAK,EAAMA,EAAK,GAAI,EAAO0tgD,EAAS,IAAGA,EAAS,GACrE,IAAIxI,EAAMyJ,EAAOlD,EAAOzrgD,GAErB0tgD,EAAS,IACXxI,GAAOiH,EAAY73hD,EAAMg5hD,EAAMI,GAC/BJ,GAAQI,GAITry9C,EAAO8w9C,EAAY73hD,EAAMg5hD,EAAMwB,GAE/BxB,GAAe,IADfttgD,EAAQrG,IAAS,GAAM,EAAIszgD,GAAS5x9C,GAAQyy9C,GAASzy9C,IAErD,IAAIsy9C,GADe3tgD,KAAU,GACR,EAAI,EAAKA,EAAK,GAAI,EACnCm5S,EAAMuytC,EAAO1rgD,GASjB,IAPG2tgD,EAAS,IACXx0tC,GAAOgztC,EAAY73hD,EAAMg5hD,EAAMK,GAC/BL,GAAQK,IAILe,GAAOE,EAAK1J,IAA4C0J,GAArC3E,EAAS/7O,EAAQ+7O,EAAQ/E,EAAM,MAAkB//hD,QAClEwpiD,EAAOzJ,GAAO+E,EAAO0E,GAAQ1E,EAAO0E,EAAOx1tC,KAAQw1tC,CAC1D,CACD,KAvDA,CAEW,EAAPrB,IAAUA,GAAQ,GAAU,EAALA,IAE1B,IAAIrI,EAAK3whD,EAAKg5hD,IAAO,GAAKh5hD,EAAgB,GAAVg5hD,IAAO,KAAO,EAG9C,GAFAA,GAAQ,GAELrI,EAAK,EAEP,KADIyJ,GAAOE,EAAKD,EAAO1J,IAA2C2J,GAArC3E,EAAS/7O,EAAQ+7O,EAAQ0E,EAAO1J,IAAiB9/hD,QACxE8/hD,KAAO,GAAKgF,EAAO0E,KAAUr6hD,EAAKg5hD,IAAO,GAAIA,GAAQ,CAU7D,CAsCD,OAAGoB,EAAY,CAACzE,EAASqD,EAAK,IAAK,GAC5B,CAACrD,EAAOpjiD,MAAM,EAAG8niD,GAAQrB,EAAK,IAAK,EAC3C,CAIWyB,CADCn1gD,EAAQ/yB,MAAM+yB,EAAQtyB,GAAG,GACZoniD,GAExB,OADA90gD,EAAQtyB,GAAK09H,EAAI,GACVA,EAAI,EACZ,CAEA,SAASgq6C,GAAcC,EAAKn7tC,GAC3B,IAAGm7tC,EACE,MAAM,IAAI3ihD,MAAMwnT,GADW,oBAAZ3nT,SAAyBA,QAAQvlB,MAAMktU,EAE5D,CAEA,SAASyxtC,GAAU5nnB,EAAmB1v5B,GACrC,IAAImH,EAAyBuo5B,EAC7BonnB,GAAU3vgD,EAAM,GAEhB,IACIhwB,EAAI,CACPqgiD,UAFgC,GAGhCC,UAHkE,IAKnEC,EAASvgiD,EAAG,CAAE6vJ,KAAMhnI,EAAQgnI,OAI5B,IADA,IAAIvvJ,EAAI0vB,EAAKjwB,OAAS,GACJ,IAAXiwB,EAAK1vB,IAA2B,IAAb0vB,EAAK1vB,EAAE,IAA2B,GAAb0vB,EAAK1vB,EAAE,IAA2B,GAAb0vB,EAAK1vB,EAAE,KAAeA,GAAK,KAAKA,EACpG0vB,EAAK9tB,EAAI5B,EAAI,EAGb0vB,EAAK9tB,GAAK,EACV,IAAIu+hD,EAAOzwgD,EAAK4vgD,WAAW,GAC3B5vgD,EAAK9tB,GAAK,EACV,IAAIuiiD,EAAWz0gD,EAAK4vgD,WAAW,GAK/B,IAFA5vgD,EAAK9tB,EAAIuiiD,EAELnkiD,EAAI,EAAGA,EAAImgiD,IAAQngiD,EAAG,CAEzB0vB,EAAK9tB,GAAK,GACV,IAAI4niD,EAAM95gD,EAAK4vgD,WAAW,GACtB0J,EAAMt5gD,EAAK4vgD,WAAW,GACtB4C,EAAUxygD,EAAK4vgD,WAAW,GAC1BmK,EAAO/5gD,EAAK4vgD,WAAW,GACvBoK,EAAOh6gD,EAAK4vgD,WAAW,GAC3B5vgD,EAAK9tB,GAAK,EACV,IAAI2/C,EAAS7xB,EAAK4vgD,WAAW,GACzBqK,EAAKvK,EAAyB1vgD,EAAKvuB,MAAMuuB,EAAK9tB,EAAEsgiD,EAASxygD,EAAK9tB,EAAEsgiD,EAAQuH,IAC5E/5gD,EAAK9tB,GAAKsgiD,EAAUuH,EAAOC,EAE3B,IAAIjmiD,EAAIisB,EAAK9tB,EACb8tB,EAAK9tB,EAAI2/C,EAAS,EAClBqo/C,GAAiBl6gD,EAAM85gD,EAAKR,EAAKtpiD,EAAGiqiD,GACpCj6gD,EAAK9tB,EAAI6B,CACV,CACA,OAAO/D,CACR,CAIA,SAASkqiD,GAAiBl6gD,EAAiB85gD,EAAgBR,EAAgBtpiD,EAAoBiqiD,GAE9Fj6gD,EAAK9tB,GAAK,EACV,IAAI43C,EAAQ9pB,EAAK4vgD,WAAW,GACxBuK,EAAOn6gD,EAAK4vgD,WAAW,GACvB7q/C,EA9sCL,SAAwBixsC,GACvB,IAAIw5S,EAA0B,MAApBx5S,EAAI45S,WAAW,GACrB9Q,EAA0B,MAApB9oS,EAAI45S,WAAW,GACrBxi3C,EAAM,IAAIlyJ,KACV7oB,EAAU,GAANyshD,EACJhshD,EAAU,IADMgshD,KAAS,GACTA,KAAS,EAC7B1x2C,EAAIxnJ,gBAAgB,GACpBwnJ,EAAIu8kB,YAAYm1xB,EAAM,MACtB1x2C,EAAIw8kB,SAAS92vB,EAAE,GACfs6K,EAAIj5I,QAAQ9hC,GACZ,IAAIa,EAAU,GAANs8hD,EACJj6hD,EAAU,IADMi6hD,KAAS,GAK7B,OAJoBA,KAAS,EAC7Bpi3C,EAAIqsW,SAAS+1gC,GACbpi3C,EAAIssW,WAAWnkhB,GACf63K,EAAIusW,WAAWzmhB,GAAG,GACXk6K,CACR,CA8rCYgt3C,CAAep6gD,GAE1B,GAAW,KAAR8pB,EAAgB,MAAM,IAAI5yB,MAAM,8BACvB8I,EAAK4vgD,WAAW,GAQb,IARf,IACIyK,EAAOr6gD,EAAK4vgD,WAAW,GACvB0K,EAAOt6gD,EAAK4vgD,WAAW,GAEvB4C,EAAUxygD,EAAK4vgD,WAAW,GAC1BmK,EAAO/5gD,EAAK4vgD,WAAW,GAGvBx1hD,EAAO,GAAY9J,EAAI,EAAGA,EAAIkiiD,IAAWliiD,EAAG8J,GAAQ5K,OAAO4nB,aAAa4I,EAAKA,EAAK9tB,MACtF,GAAG6niD,EAAM,CACR,IAAIznN,EAAKo9M,EAAyB1vgD,EAAKvuB,MAAMuuB,EAAK9tB,EAAG8tB,EAAK9tB,EAAI6niD,KAC1DznN,EAAG,QAAS,CAAC,GAAG910C,KAAIuoC,EAAOutyC,EAAG,OAAQ910C,MACrCy9hD,GAAI,CAAC,GAAG,QAAS,CAAC,GAAGz9hD,KAAIuoC,EAAOk1/C,EAAG,OAAQz9hD,GACjD,CACAwjB,EAAK9tB,GAAK6niD,EAKV,IAAI76hD,EAAO8gB,EAAKvuB,MAAMuuB,EAAK9tB,EAAG8tB,EAAK9tB,EAAImoiD,GACvC,OAAOF,GACN,KAAK,EAAGj7hD,EA1hBV,SAAyBslB,EAAS80gD,GACjC,IAAIxE,EAAO,OAAOuE,GAAS70gD,EAAS80gD,GACpC,IACIiB,EAAU,IAAIC,EADD1F,EAAM0F,YAEnB5q6C,EAAM2q6C,EAAQE,cAAcj2gD,EAAQ/yB,MAAM+yB,EAAQtyB,GAAIqoiD,EAAQG,kBAElE,OADAl2gD,EAAQtyB,GAAKqoiD,EAAQI,UACd/q6C,CACR,CAmhBiBgr6C,CAAgB56gD,EAAMs6gD,GAAO,MAC5C,KAAK,EAAG,MACR,QAAS,MAAM,IAAIpjhD,MAAM,sCAAwCijhD,GAIlE,IAAIN,GAAM,EACC,EAAR/v/C,IAEU,WADJ9pB,EAAK4vgD,WAAW,KACU5vgD,EAAK4vgD,WAAW,GAAIiK,GAAM,GAC5DQ,EAAOr6gD,EAAK4vgD,WAAW,GACvB0K,EAAOt6gD,EAAK4vgD,WAAW,IAGrByK,GAAQP,GAAKF,GAAcC,EAAK,wBAA0BC,EAAM,OAASO,GACzEC,GAAQhB,GAAKM,GAAcC,EAAK,0BAA4BP,EAAM,OAASgB,GAG9EO,GAAQ7qiD,EAAGoK,EAAM8E,EAAM,CAACxC,QAAQ,EAAMF,GAAIuoC,GAC3C,CA0GA,IAAI+1/C,GAAiB,CACpB,IAAO,YACP,IAAO,WAEP,IAAO,YACP,IAAO,aACP,IAAO,YAEP,IAAO,oBACP,KAAQ,iCACR,QAAW,4BAGZ,SAAS3G,GAAiB/mhD,EAAiB2mhD,GAC1C,GAAG3mhD,EAAG2thD,MAAO,OAAO3thD,EAAG2thD,MAEvB,IAAI/ixC,EAAM5qQ,EAAGhT,MAAQ,GAAItH,EAAIklR,EAAI7hR,MAAM,eACvC,OAAGrD,GAAKgoiD,GAAehoiD,EAAE,KAEtBihiD,IACFjhiD,GAAKklR,EAAM+7wC,GAAI59hD,MAAM,uBACb2kiD,GAAehoiD,EAAE,IAJWgoiD,GAAehoiD,EAAE,IAO/C,0BACR,CAGA,SAASuhiD,GAAgBhuW,GAGxB,IAFA,IAAInnrC,EAAO6nhD,EAAc1gW,GACrBr2rC,EAAI,GACAM,EAAI,EAAGA,EAAI4O,EAAKnP,OAAQO,GAAI,GAAIN,EAAEuB,KAAK2N,EAAKzN,MAAMnB,EAAGA,EAAE,KAC/D,OAAON,EAAEuM,KAAK,QAAU,MACzB,CAgBA,SAAS63hD,GAAuBt0gD,GAC/B,IAAIwE,EAAUxE,EAAK3jB,QAAQ,2CAA2C,SAAS5L,GAC9E,IAAI0C,EAAI1C,EAAEkY,WAAW,GAAGxU,SAAS,IAAIqsD,cACrC,MAAO,KAAmB,GAAZrtD,EAAElD,OAAc,IAAMkD,EAAIA,EACzC,IAIwB,OAFxBqxB,EAAUA,EAAQnoB,QAAQ,OAAQ,OAAOA,QAAQ,QAAS,QAE/CoM,OAAO,KAAY+b,EAAU,MAAQA,EAAQ7yB,MAAM,IAI9D,IADA,IAAIzB,EAAsB,GAAIsE,GAF9BgwB,EAAUA,EAAQnoB,QAAQ,aAAc,OAAOA,QAAQ,SAAU,SAASA,QAAQ,gBAAiB,UAErD7H,MAAM,QAC5C2Y,EAAK,EAAGA,EAAK3Y,EAAMvE,SAAUkd,EAAI,CACxC,IAAIo5D,EAAM/xE,EAAM2Y,GAChB,GAAiB,GAAdo5D,EAAIt2E,OACP,IAAI,IAAIO,EAAI,EAAGA,EAAI+1E,EAAIt2E,QAAS,CAC/B,IAAIomC,EAAM,GACNm9T,EAAMjtR,EAAI50E,MAAMnB,EAAGA,EAAI6lC,GACD,KAAvBm9T,EAAI/qV,OAAO4tB,EAAM,GAAWA,IACA,KAAvBm9T,EAAI/qV,OAAO4tB,EAAM,GAAWA,GAAO,EACZ,KAAvBm9T,EAAI/qV,OAAO4tB,EAAM,KAAWA,GAAO,GAC3Cm9T,EAAMjtR,EAAI50E,MAAMnB,EAAGA,EAAI6lC,IACvB7lC,GAAK6lC,GACEkwC,EAAIt2E,SAAQujW,GAAO,KAC1BtjW,EAAEuB,KAAK+hW,EACR,MAXsBtjW,EAAEuB,KAAK,GAY9B,CAEA,OAAOvB,EAAEuM,KAAK,OACf,CAiBA,SAASm0hD,GAAW4C,EAAsBp0hD,EAAwB2gJ,GAGjE,IAFA,IAAsCm74C,EAAlChplB,EAAQ,GAAIiplB,EAAM,GAAIF,EAAQ,GAC9B1thD,EAAK,EACJA,EAAK,KAAMA,EAAI,CACnB,IAAI2hC,EAAO9vC,EAAKmO,GAChB,IAAI2hC,GAAQA,EAAK74C,MAAM,SAAU,MACjC,IAAIrD,EAAIk8C,EAAK74C,MAAM,wBACnB,GAAGrD,EAAG,OAAOA,EAAE,GAAGmM,eACjB,IAAK,mBAAoB+y8B,EAAQl/8B,EAAE,GAAGivB,OAAQ,MAC9C,IAAK,eAAgBg5gD,EAAQjoiD,EAAE,GAAGivB,OAAQ,MAC1C,IAAK,4BAA6Bk5gD,EAAMnoiD,EAAE,GAAGivB,OAE/C,CAEA,SADE1U,EACK4thD,EAAIh8hD,eACV,IAAK,SAAU+7hD,EAAQvT,EAAIN,EAAcjohD,EAAKzN,MAAM4b,GAAI9Q,KAAK,MAAO,MACpE,IAAK,mBAAoBy+hD,EAhC3B,SAAgC97hD,GAI/B,IAHA,IAAIlP,EAAI,GAGAqd,EAAK,EAAGA,EAAKnO,EAAKnP,SAAUsd,EAAI,CAEvC,IADA,IAAI2hC,EAAO9vC,EAAKmO,GACVA,GAAMnO,EAAKnP,QAA0C,KAAhCi/C,EAAKzmC,OAAOymC,EAAKj/C,OAAS,IAAWi/C,EAAOA,EAAKv9C,MAAM,EAAGu9C,EAAKj/C,OAAS,GAAKmP,IAAOmO,GAC/Grd,EAAEuB,KAAKy9C,EACR,CAGA,IAAI,IAAIniC,EAAK,EAAGA,EAAK7c,EAAED,SAAU8c,EAAI7c,EAAE6c,GAAM7c,EAAE6c,GAAI1Q,QAAQ,sBAAsB,SAASwuhD,GAAM,OAAOn7hD,OAAO4nB,aAAaiO,SAASslgD,EAAGl5hD,MAAM,GAAI,IAAM,IACvJ,OAAOg2hD,EAAIz3hD,EAAEuM,KAAK,QACnB,CAmBmC2+hD,CAAuBh8hD,EAAKzN,MAAM4b,IAAM,MACzE,QAAS,MAAM,IAAI6J,MAAM,yCAA2C+jhD,GAErE,IAAI1ynB,EAAOsynB,GAAQvH,EAAKthlB,EAAMvg9B,MAAMouJ,EAAK9vJ,QAASiriD,EAAO,CAACt+hD,QAAQ,IAC/Dq+hD,IAAOxynB,EAAKwynB,MAAQA,EACxB,CAgGA,SAASF,GAAQvH,EAAsBl5hD,EAAiBguF,EAAuBr8C,GAC9E,IAAIrvC,EAASqvC,GAAQA,EAAKrvC,OACtBA,GAAQ6zhD,EAAS+C,GACrB,IAAI/qnB,GAAQ7r6B,GAAU4yhD,GAAIl5/C,KAAKk9/C,EAAKl5hD,GACpC,IAAImu6B,EAAM,CACT,IAAI4ynB,EAAmB7H,EAAIhD,UAAU,GAClCl2hD,EAAK3I,MAAM,EAAG0piD,EAAMpriD,SAAWoriD,EAAOA,EAAQ/giD,GAE1B,KAAnB+giD,EAAM1piD,OAAO,KAAW0piD,GAAS,KACpCA,GAASA,EAAQ/giD,GAAM+B,QAAQ,KAAK,MAErCos6B,EAAO,CAAEnu6B,KAAM88P,EAAS98P,GAAO6B,KAAM,GACrCq3hD,EAAIjD,UAAU9+hD,KAAKg36B,GACnB+qnB,EAAIhD,UAAU/+hD,KAAK4piD,GACfz+hD,GAAQ4yhD,GAAIr4qC,MAAMmkrC,OAAO9H,EAC9B,CASA,OAPA/qnB,EAAKng1B,QAAU,EACfmg1B,EAAKj05B,KAAO8zE,EAAUA,EAAQr4F,OAAS,EACpCg8C,IACCA,EAAKwn/C,QAAOhrnB,EAAKmqnB,MAAQ3m/C,EAAKwn/C,OAC9Bxn/C,EAAKvvC,KAAI+r6B,EAAK/r6B,GAAKuvC,EAAKvvC,IACxBuvC,EAAK9wC,KAAIst6B,EAAKtt6B,GAAK8wC,EAAK9wC,KAErBst6B,CACR,CA+CA,OArBAp26B,EAAQikC,KA9+BR,SAAck9/C,EAAsBvtgD,GACnC,IAAIs1gD,EAAgC/H,EAAIhD,UAAUvxgD,KAAI,SAASprB,GAAK,OAAOA,EAAE2sD,aAAe,IACxFg7+C,EAA4BD,EAAYt8gD,KAAI,SAASprB,GAAK,IAAIjB,EAAIiB,EAAEW,MAAM,KAAM,OAAO5B,EAAEA,EAAE3C,QAAyB,KAAf4D,EAAElC,OAAO,GAAY,EAAI,GAAK,IACnI2B,GAAgB,EACM,KAAvB2yB,EAAKtd,WAAW,IAAuBrV,GAAI,EAAM2yB,EAAOs1gD,EAAY,GAAG5piD,MAAM,GAAI,GAAKs0B,GACpF3yB,GAA2B,IAAvB2yB,EAAK71B,QAAQ,KACtB,IAAIqriD,EAAoBx1gD,EAAKu6B,cACzBrtD,GAAqB,IAANG,EAAaioiD,EAAYnriD,QAAQqriD,GAAUD,EAAQpriD,QAAQqriD,GAC9E,IAAU,IAAPtoiD,EAAU,OAAOqgiD,EAAIjD,UAAUp9hD,GAElC,IAAIH,GAAKyoiD,EAAOpliD,MAAMwhvC,GAGtB,IAFA4jT,EAASA,EAAOp/hD,QAAQ4rhD,EAAK,IAC1Bj1hD,IAAGyoiD,EAASA,EAAOp/hD,QAAQw7uC,EAAK,MAC/B1kvC,EAAI,EAAGA,EAAIooiD,EAAYtriD,SAAUkD,EAAG,CACvC,IAAIH,EAAIuoiD,EAAYpoiD,GAAGkJ,QAAQw7uC,EAAK,KAAO0jT,EAAYpoiD,IAAIkJ,QAAQ4rhD,EAAK,KAAOwT,EAAQ,OAAOjI,EAAIjD,UAAUp9hD,GAC5G,IAAIH,EAAIwoiD,EAAQroiD,GAAGkJ,QAAQw7uC,EAAK,KAAO2jT,EAAQroiD,IAAIkJ,QAAQ4rhD,EAAK,KAAOwT,EAAQ,OAAOjI,EAAIjD,UAAUp9hD,EACrG,CACA,OAAO,IACR,EA69BAd,EAAQ4jE,KA1vCR,SAAc/1C,EAA0BnH,GACvC,IAAI5c,EAAO4c,GAAWA,EAAQ5c,KAI9B,OAHIA,GACAmrhD,GAAW/vgD,OAAO49O,SAASj1O,KAAO/jB,EAAO,UAEtCA,GAAQ,UACd,IAAK,OAA2F,OAXlG,SAAmBi7P,EAAqBr+O,GAEvC,OADAq3gD,IACOj0gD,EAAMuoG,EAAGg36C,aAAatkyC,GAAWr+O,EACzC,CAQyG4ihD,CAAUz7gD,EAAMnH,GACvH,IAAK,SAAiH,OAAOoD,EAAMwrgD,EAAIN,EAAcnngD,IAAQnH,GAC7J,IAAK,SAAkG,OAAOoD,EAAMwrgD,EAAIzngD,GAAOnH,GAEhI,OAAOoD,EAAkE+D,EAAMnH,EAChF,EAgvCA1mB,EAAQ8pB,MAAQA,EAChB9pB,EAAQsR,MAv7BR,SAAe6vhD,EAAsBz6gD,GACpC,IAAI7oB,EAAI8jiD,EAAOR,EAAKz6gD,GACpB,OAAOA,GAAWA,EAAQ5c,MAAQ,UACjC,IAAK,OAAmE,OAA3Di0hD,IAAU1r6C,EAAGk36C,cAAc7ihD,EAAQq+O,SAAU,GAAqBlnQ,EAC/E,IAAK,SAAU,MAAmB,iBAALA,EAAgBA,EAAI23hD,EAAI33hD,GACrD,IAAK,SAAU,OAAO+2hD,EAA0B,iBAAL/2hD,EAAgBA,EAAI23hD,EAAI33hD,IACnE,IAAK,SAAU,GAAGo3hD,EAAS,OAAO/vgD,OAAO49O,SAASjlQ,GAAKA,EAAIq3hD,EAAYr3hD,GAEvE,IAAK,QAAS,MAAmB,iBAALA,EAAgBy3hD,EAAIz3hD,GAAKA,EAEtD,OAAOA,CACR,EA66BAmC,EAAQojgD,UAr8BR,SAAoB+9B,EAAsBp8xC,EAAqBr+O,GAC9Dq3gD,IACA,IAAIlgiD,EAAI8jiD,EAAOR,EAAKz6gD,GAEpB2rG,EAAGk36C,cAAcxkyC,EAAUlnQ,EAC5B,EAi8BAmC,EAAQ8kX,MAAQ,CACf0krC,QA/DD,SAAiB5v/C,GAChB,IAAI/7C,EAAqB,CAAW,EAEpC,OADAugiD,EAASvgiD,EAAG+7C,GACL/7C,CACR,EA4DC6qiD,QAASA,GACTe,QAhCD,SAAiBtI,EAAsBl5hD,GACtCm2hD,EAAS+C,GACT,IAAI/qnB,EAAO+mnB,GAAIl5/C,KAAKk9/C,EAAKl5hD,GACzB,GAAGmu6B,EAAM,IAAI,IAAIz06B,EAAI,EAAGA,EAAIw/hD,EAAIjD,UAAUtgiD,SAAU+D,EAAG,GAAGw/hD,EAAIjD,UAAUv8hD,IAAMy06B,EAG7E,OAFA+qnB,EAAIjD,UAAU19gD,OAAO7e,EAAG,GACxBw/hD,EAAIhD,UAAU39gD,OAAO7e,EAAG,IACjB,EAER,OAAO,CACR,EAwBC+niD,QAtBD,SAAiBvI,EAAsBwI,EAAqBC,GAC3DxL,EAAS+C,GACT,IAAI/qnB,EAAO+mnB,GAAIl5/C,KAAKk9/C,EAAKwI,GACzB,GAAGvznB,EAAM,IAAI,IAAIz06B,EAAI,EAAGA,EAAIw/hD,EAAIjD,UAAUtgiD,SAAU+D,EAAG,GAAGw/hD,EAAIjD,UAAUv8hD,IAAMy06B,EAG7E,OAFA+qnB,EAAIjD,UAAUv8hD,GAAGsG,KAAO88P,EAAS6kyC,GACjCzI,EAAIhD,UAAUx8hD,GAAKioiD,GACZ,EAER,OAAO,CACR,EAcCX,OAZD,SAAgB9H,GAAiCE,EAAYF,GAAK,EAAO,EAaxE0I,UAAWA,GACXC,WAAYA,GACZtM,UAAWA,GACX9H,QAASA,EACTqU,SAr7BD,SAAkBC,GAAQ,IACzB,IACI5B,EAAU,IAAIC,EADD2B,EAAK3B,YAGtB,GADAD,EAAQE,cAAc,IAAIprhD,WAAW,CAAC,EAAG,IAAKkrhD,EAAQG,mBACnDH,EAAQI,UACN,MAAM,IAAIzjhD,MAAM,kCADC49gD,EAAQqH,CAE/B,CAAE,MAAMttiD,GAAIkoB,QAAQvlB,MAAM,4BAA8B3C,EAAE4yB,SAAW5yB,GAAK,CAAE,EAg7B3EkpiD,YAAa/C,GACboH,YAAa/C,GACb3D,OAAQA,GAGFvjiD,CACN,CA5qDsB,GA8qDvB,IAAIonU,GACJ,SAAS8iuC,GAAO736C,GAAM+0M,GAAM/0M,CAAI,CAIhC,SAAS836C,GAAQp9hD,GAChB,MAAmB,iBAATA,EAA0BwohD,EAAKxohD,GACtC/P,MAAMkS,QAAQnC,GAx7FlB,SAAaA,GACZ,GAAyB,oBAAfmQ,WAA4B,MAAM,IAAI6H,MAAM,eACtD,OAAO,IAAI7H,WAAWnQ,EACvB,CAq7FgCq9hD,CAAIr9hD,GAC5BA,CACR,CAEA,SAASs9hD,GAASxqlB,EAAkBxt7B,EAAiB6swC,GAEpD,QAAkB,IAAR939B,IAAuBA,GAAImiuC,cAAe,OAAOrqQ,EAAM939B,GAAImiuC,cAAc1plB,EAAOxt7B,EAAS6swC,GAAO939B,GAAImiuC,cAAc1plB,EAAOxt7B,GACnI,GAAmB,oBAAT3uB,KAAsB,CAE/B,GAAGw7xC,GAAyB,iBAAX7swC,EAAqB,OAAO6swC,GAC5C,IAAK,OAAQ7swC,EAAU,IAAIhM,YAAY64wC,GAAK95wC,OAAOiN,GAAU,MAC7D,IAAK,SAAUA,EAAUkjgD,EAAKljgD,GAAU,MAExC,QAAS,MAAM,IAAItN,MAAM,wBAA0Bm6wC,GAEpD,OAAOx7xC,KAAK6liD,cAAc1plB,EAAOxt7B,EAClC,CACA,IAAItlB,EAAe,QAAPmyxC,EAAiBorQ,GAAUj4gD,GAAWA,EAElD,GAA0B,oBAAhBk4gD,YAA6B,OAAOA,YAAYx9hD,EAAM8y8B,GAChE,GAAmB,oBAATv67B,KAAsB,CAC/B,IAAIuI,EAAO,IAAIvI,KAAK,CAAC6khD,GAAQp9hD,IAAQ,CAACjD,KAAK,6BAE3C,GAAwB,oBAAd8sB,WAA6BA,UAAUyxuC,WAAY,OAAOzxuC,UAAUyxuC,WAAWx6uC,EAAMgy7B,GAE/F,GAAqB,oBAAX2qlB,OAAwB,OAAOA,OAAO38gD,EAAMgy7B,GACtD,GAAkB,oBAARt67B,KAA2C,oBAAb7iB,UAA4BA,SAASmE,eAAiB0e,IAAIC,gBAAiB,CAClH,IAAIiI,EAAMlI,IAAIC,gBAAgBqI,GAE9B,GAAqB,iBAAXmxB,QAAiE,mBAAlCA,OAAOyr/C,WAAW,CAAC,GAAG7q9C,SAE9D,OADGr6D,IAAIQ,iBAAyC,oBAAf3C,YAA4BA,YAAW,WAAamC,IAAIQ,gBAAgB0H,EAAM,GAAG,KAC3GuxB,OAAOyr/C,UAAU7q9C,SAAS,CAAEnyD,IAAKA,EAAKs3O,SAAU86sB,EAAO2qlB,QAAQ,IAEvE,IAAIjsiD,EAAImE,SAASmE,cAAc,KAC/B,GAAiB,MAAdtI,EAAEqhF,SAKJ,OAHArhF,EAAEqhF,SAAWig4B,EAAOth9B,EAAEi6B,KAAO/K,EAAK/qB,SAAS4rB,KAAKxc,YAAYvT,GAAIA,EAAEkxF,QACA/sF,SAAS4rB,KAAK8L,YAAY77B,GACzFgnB,IAAIQ,iBAAyC,oBAAf3C,YAA4BA,YAAW,WAAamC,IAAIQ,gBAAgB0H,EAAM,GAAG,KAC3GA,CAET,CACD,CAEA,GAAgB,oBAAN9pB,GAAqC,oBAATo+yC,MAA0C,oBAAX2oP,OAAwB,IAE5F,IAAIjt6C,EAAMskrC,KAAKliW,GAEkB,OAFVpi1B,EAAIxrH,KAAK,KAAMwrH,EAAIt4G,SAAW,SAClDnoB,MAAMkS,QAAQmjB,KAAUA,EAAUmjgD,EAAInjgD,IACzCorG,EAAInsH,MAAM+gB,GAAUorG,EAAIlsH,QAAgB8gB,CACzC,CAAE,MAAM31B,GAAK,IAAIA,EAAE4yB,UAAY5yB,EAAE4yB,QAAQtrB,MAAM,YAAa,MAAMtH,CAAG,CACrE,MAAM,IAAIqoB,MAAM,oBAAsB867B,EACvC,CAeA,SAAShv8B,GAAKhT,GAEb,IADA,IAAIqp4C,EAAKrq4C,OAAOgU,KAAKhT,GAAIknW,EAAK,GACtB5mW,EAAI,EAAGA,EAAI+o4C,EAAGtp4C,SAAUO,EAAMtB,OAAOI,UAAUC,eAAeC,KAAKU,EAAGqp4C,EAAG/o4C,KAAK4mW,EAAG3lW,KAAK8n4C,EAAG/o4C,IACjG,OAAO4mW,CACR,CAEA,SAAS4lsC,GAAUlg1C,EAAaroM,GAE/B,IADA,IAAIvkB,EAAI,GAAc2E,EAAIqO,GAAK45M,GACvBtsN,EAAI,EAAGA,IAAMqE,EAAE5E,SAAUO,EAA2B,MAArBN,EAAE4sN,EAAIjoN,EAAErE,IAAIikB,MAAevkB,EAAE4sN,EAAIjoN,EAAErE,IAAIikB,IAAQ5f,EAAErE,IACxF,OAAON,CACR,CAEA,SAAS+siD,GAAMng1C,GAEd,IADA,IAAI5sN,EAAI,GAAc2E,EAAIqO,GAAK45M,GACvBtsN,EAAI,EAAGA,IAAMqE,EAAE5E,SAAUO,EAAGN,EAAE4sN,EAAIjoN,EAAErE,KAAOqE,EAAErE,GACrD,OAAON,CACR,CAEA,SAASgtiD,GAAUpg1C,GAElB,IADA,IAAI5sN,EAAI,GAAc2E,EAAIqO,GAAK45M,GACvBtsN,EAAI,EAAGA,IAAMqE,EAAE5E,SAAUO,EAAGN,EAAE4sN,EAAIjoN,EAAErE,KAAO+0B,SAAS1wB,EAAErE,GAAG,IACjE,OAAON,CACR,CAWA,IAAIitiD,GAAwB,IAAI/hhD,KAAK,KAAM,GAAI,GAAI,EAAG,EAAG,GACzD,SAASgihD,GAAQvqiD,EAAY22hD,GAC5B,IAAIjO,EAAqB1ohD,EAAEwkC,UAG3B,OAFGmy/C,IAAUjO,GAAS,YAEdA,GADoB4hB,GAAS9lgD,UAA+F,KAArExkC,EAAEs1vB,oBAAmCg1yB,GAASh1yB,uBACjF,KAC7B,CACA,IAAIk1yB,GAAuB,IAAIjihD,KAC3BkihD,GAAwBH,GAAS9lgD,UAAqG,KAA3EgmgD,GAAQl1yB,oBAAmCg1yB,GAASh1yB,qBAC/Go1yB,GAAyBF,GAAQl1yB,oBACrC,SAASq1yB,GAAQ3qiD,GAChB,IAAIi9H,EAAM,IAAI10G,KAKd,OAJA00G,EAAIhuE,QAAY,GAAJjvD,EAAS,GAAK,GAAK,IAAOyqiD,IAClCxt6C,EAAIq4nB,sBAAwBo1yB,IAC/Bzt6C,EAAIhuE,QAAQguE,EAAIz4F,UAAoD,KAAvCy4F,EAAIq4nB,oBAAsBo1yB,KAEjDzt6C,CACR,CAGA,SAAS2t6C,GAAa/siD,GACrB,IAAIgzhD,EAAM,EAAGhnhD,EAAK,EAAG+4C,GAAO,EACxBziD,EAAItC,EAAE2F,MAAM,8EAChB,IAAIrD,EAAG,MAAM,IAAIokB,MAAM,IAAM1mB,EAAI,gCACjC,IAAI,IAAIF,EAAI,EAAGA,GAAKwC,EAAE/C,SAAUO,EAC/B,GAAIwC,EAAExC,GAAN,CAGA,OAFAkM,EAAK,EACFlM,EAAI,IAAGilD,GAAO,GACVziD,EAAExC,GAAGmB,MAAMqB,EAAExC,GAAGP,OAAO,IAC7B,IAAK,IACJ,MAAM,IAAImnB,MAAM,mCAAqCpkB,EAAExC,GAAGmB,MAAMqB,EAAExC,GAAGP,OAAO,IAC7E,IAAK,IAAKyM,GAAM,GAEhB,IAAK,IAAKA,GAAM,GAEhB,IAAK,IACJ,IAAI+4C,EAAM,MAAM,IAAIr+B,MAAM,qCACrB1a,GAAM,GAIbgnhD,GAAOhnhD,EAAK6oB,SAASvyB,EAAExC,GAAI,GAhBT,CAkBnB,OAAOkzhD,CACR,CAEA,IAAIga,GAA8B,IAAItihD,KAAK,4BACvCuihD,GAA4BzhgD,MAAmBwhgD,GAAe7lhC,eAA8B,IAAIz8f,KAAK,WAAasihD,GAClHE,GAAqD,MAA9BD,GAAa9lhC,cAExC,SAAS06a,GAAUhs3B,EAAqBs39C,GACvC,IAAItriD,EAAI,IAAI6oB,KAAKmrD,GACjB,GAAGq39C,GAIF,OAFGC,EAAU,EAAGtriD,EAAEuvD,QAAQvvD,EAAE8kC,UAAoC,GAAxB9kC,EAAE41vB,oBAA2B,KAC7D01yB,EAAU,GAAGtriD,EAAEuvD,QAAQvvD,EAAE8kC,UAAoC,GAAxB9kC,EAAE41vB,oBAA2B,KACnE51vB,EAER,GAAGg0E,aAAenrD,KAAM,OAAOmrD,EAC/B,GAAiC,MAA9Bo39C,GAAa9lhC,gBAA0B37e,MAAM3pC,EAAEslhB,eAAgB,CACjE,IAAInnhB,EAAI6B,EAAEslhB,cACV,OAAGtxc,EAAIn2E,QAAQ,GAAKM,IAAM,GAC1B6B,EAAEs3vB,YAAYt3vB,EAAEslhB,cAAgB,KADItlhB,CAErC,CACA,IAAItD,EAAIs3E,EAAIlwE,MAAM,SAAS,CAAC,OAAO,IAAI,KAAK,IAAI,IAAI,KAChDy5H,EAAM,IAAI10G,MAAMnsB,EAAE,IAAKA,EAAE,GAAK,GAAIA,EAAE,IAAMA,EAAE,IAAI,GAAMA,EAAE,IAAI,GAAMA,EAAE,IAAI,GAE5E,OADGs3E,EAAIn2E,QAAQ,MAAQ,IAAG0/H,EAAM,IAAI10G,KAAK00G,EAAIz4F,UAAsC,GAA1By4F,EAAIq4nB,oBAA2B,MACjFr4nB,CACR,CAEA,SAASgu6C,GAAOzv0C,EAAuB0v0C,GACtC,GAAGzW,GAAW/vgD,OAAO49O,SAAS9mC,GAAM,CACnC,GAAG0v0C,EAAS,CACX,GAAa,KAAV1v0C,EAAI,IAAwB,KAAVA,EAAI,GAAY,OAAOsu0C,GAAUtu0C,EAAI18N,MAAM,GAAGwC,SAAS,YAC5E,GAAa,KAAVk6N,EAAI,IAAwB,KAAVA,EAAI,GAAY,OAAOsu0C,GAAUrW,EAAYj4zC,EAAI18N,MAAM,GAAGwC,SAAS,WACzF,CACA,OAAOk6N,EAAIl6N,SAAS,SACrB,CAEA,GAA0B,oBAAhBwkB,YAA6B,IACtC,GAAGolhD,EAAS,CACX,GAAa,KAAV1v0C,EAAI,IAAwB,KAAVA,EAAI,GAAY,OAAOsu0C,GAAU,IAAIhkhD,YAAY,YAAYF,OAAO41M,EAAI18N,MAAM,KACnG,GAAa,KAAV08N,EAAI,IAAwB,KAAVA,EAAI,GAAY,OAAOsu0C,GAAU,IAAIhkhD,YAAY,YAAYF,OAAO41M,EAAI18N,MAAM,IACpG,CACA,IAAIiliD,EAAM,CACT,IAAU,IAAQ,IAAU,IAAQ,EAAU,IAAQ,IAAU,IAChE,IAAU,IAAQ,IAAU,IAAQ,IAAU,IAAQ,EAAU,IAChE,IAAU,IAAQ,EAAU,IAAQ,IAAU,IAAQ,EAAU,IAChE,EAAU,IAAQ,IAAU,IAAQ,IAAU,IAAQ,IAAU,IAChE,IAAU,IAAQ,IAAU,IAAQ,IAAU,IAAQ,IAAU,IAChE,IAAU,IAAQ,IAAU,IAAQ,EAAU,IAAQ,IAAU,IAChE,EAAU,IAAQ,EAAU,IAAQ,EAAU,KAG/C,OADGvniD,MAAMkS,QAAQ8sN,KAAMA,EAAM,IAAI9+M,WAAW8+M,IACrC,IAAI11M,YAAY,UAAUF,OAAO41M,GAAKhyN,QAAQ,kCAAkC,SAAS5L,GAAK,OAAOmmiD,EAAInmiD,IAAMA,CAAG,GAC1H,CAAE,MAAM1B,GAAI,CAGZ,IADA,IAAImB,EAAI,GACAM,EAAI,EAAGA,GAAK69N,EAAIp+N,SAAUO,EAAGN,EAAEuB,KAAK/B,OAAO4nB,aAAa+2M,EAAI79N,KACpE,OAAON,EAAEuM,KAAK,GACf,CAEA,SAASuhiD,GAAI9tiD,GACZ,GAAkB,oBAARga,OAAwB7a,MAAMkS,QAAQrR,GAAI,OAAOga,KAAKiS,MAAMjS,KAAKb,UAAUnZ,IACrF,GAAe,iBAALA,GAAsB,MAALA,EAAW,OAAOA,EAC7C,GAAGA,aAAakrB,KAAM,OAAO,IAAIA,KAAKlrB,EAAEmnC,WACxC,IAAIy4F,EAAM,CAAC,EACX,IAAI,IAAIx8H,KAAKpD,EAAMhB,OAAOI,UAAUC,eAAeC,KAAKU,EAAGoD,KAAIw8H,EAAIx8H,GAAK0qiD,GAAI9tiD,EAAEoD,KAC9E,OAAOw8H,CACR,CAEA,SAAS9C,GAAKv8H,EAAa2B,GAAuC,IAAZ,IAAIlC,EAAI,GAAUA,EAAED,OAASmC,GAAGlC,GAAGO,EAAG,OAAOP,CAAG,CAGtG,SAAS+tiD,GAASvtiD,GACjB,IAAImC,EAAekiC,OAAOrkC,GAC1B,IAAIwrC,MAAMrpC,GAAI,OAAOykC,SAASzkC,GAAKA,EAAI24vB,IACvC,IAAI,KAAKvwvB,KAAKvK,GAAI,OAAOmC,EACzB,IAAIsK,EAAK,EACLqjuB,EAAK9vuB,EAAE2L,QAAQ,iBAAiB,QAAQA,QAAQ,OAAO,IAAIA,QAAQ,QAAQ,WAAwB,OAAXc,GAAM,IAAY,EAAG,IACjH,OAAI++B,MAAMrpC,EAAIkiC,OAAOyrsB,KACrBA,EAAKA,EAAGnkuB,QAAQ,cAAa,SAASwuhD,EAAI7zL,GAAgB,OAAV751C,GAAMA,EAAW651C,CAAG,IAChE96zC,MAAMrpC,EAAIkiC,OAAOyrsB,IACd3tuB,EAD2BA,EAAIsK,GAFJtK,EAAIsK,CAIvC,CACA,IAAI+giD,GAAe,CAAC,UAAW,WAAY,QAAS,QAAS,MAAO,OAAQ,OAAQ,SAAU,YAAa,UAAW,WAAY,YAClI,SAASC,GAAUztiD,GAClB,IAAIR,EAAI,IAAIkrB,KAAK1qB,GAAIzB,EAAI,IAAImsB,KAAKowuB,KAC9B54vB,EAAI1C,EAAEkuiD,UAAWpriD,EAAI9C,EAAE4nhB,WAAYvlhB,EAAIrC,EAAEkkC,UAC7C,GAAG8H,MAAM3pC,GAAI,OAAOtD,EACpB,IAAIo1vC,EAAQ3zvC,EAAEyO,cACd,GAAGklvC,EAAMhuvC,MAAM,oDAEd,IADAguvC,EAAQA,EAAMhovC,QAAQ,UAAU,IAAIA,QAAQ,6BAA6B,KAChEpM,OAAS,IAAqC,GAAhCiuiD,GAAa9tiD,QAAQi0vC,GAAc,OAAOp1vC,OAC3D,GAAGo1vC,EAAMhuvC,MAAM,SAAU,OAAOpH,EACvC,OAAG2D,EAAI,GAAKA,EAAI,KAAa3D,GACzB+D,EAAI,GAAKT,EAAI,IAAW,KAALK,EAAiB1C,EACrCQ,EAAE2F,MAAM,iBAAyBpH,EAC7BiB,CACR,CAEA,IAAImuiD,GAA2B,WAC9B,IAAIC,EAAuD,GAApC,UAAU9piD,MAAM,UAAUvE,OACjD,OAAO,SAAqBs2E,EAAgB9vE,EAAIk+J,GAC/C,GAAG2p4C,GAAiC,iBAAN7niD,EAAgB,OAAO8vE,EAAI/xE,MAAMiC,GAE/D,IADA,IAAI/D,EAAI6zE,EAAI/xE,MAAMiC,GAAKvG,EAAI,CAACwC,EAAE,IACtBlC,EAAI,EAAGA,EAAIkC,EAAEzC,SAAUO,EAAKN,EAAEuB,KAAKkjK,GAAMzkK,EAAEuB,KAAKiB,EAAElC,IAC1D,OAAON,CACR,CACA,CAR8B,GAS/B,SAASquiD,GAAWn/hD,GACnB,OAAIA,EACDA,EAAKkpF,SAAWlpF,EAAKjD,KAAa2hiD,GAAO1+hD,EAAKkpF,SAAS,GACvDlpF,EAAKA,KAAaonhD,EAAMpnhD,EAAKA,MAC7BA,EAAKo/hD,cAAgBlX,EAAgBd,EAAMpnhD,EAAKo/hD,eAAerqiD,SAAS,WACxEiL,EAAKq/hD,SAAiBjY,EAAMpnhD,EAAKq/hD,YACjCr/hD,EAAKi1I,OAASj1I,EAAKi1I,MAAM2uQ,WAAmBwjoC,EAAMsX,GAAOzuiD,MAAMC,UAAUqC,MAAMnC,KAAK4P,EAAKi1I,MAAM2uQ,aAAa,KACxG,KANU,IAOlB,CAEA,SAAS07oC,GAAWt/hD,GACnB,IAAIA,EAAM,OAAO,KACjB,GAAGA,EAAKA,KAAM,OAAOinhD,EAAWjnhD,EAAKA,MACrC,GAAGA,EAAKo/hD,cAAgBlX,EAAS,OAAOlohD,EAAKo/hD,eAC7C,GAAGp/hD,EAAKi1I,OAASj1I,EAAKi1I,MAAM2uQ,WAAY,CACvC,IAAI9yZ,EAAIkP,EAAKi1I,MAAM2uQ,aACnB,MAAe,iBAAL9yZ,EAAsBm2hD,EAAWn2hD,GACpCb,MAAMC,UAAUqC,MAAMnC,KAAKU,EACnC,CACA,OAAGkP,EAAKkpF,SAAWlpF,EAAKjD,KAAaiD,EAAKkpF,QACnC,IACR,CAMA,SAASq28C,GAAev9Q,EAAK34W,GAG5B,IAFA,IAAIn16B,EAAI8txC,EAAIovQ,WAAatthD,GAAKk+wC,EAAIr9kB,OAC9BzxsB,EAAIm26B,EAAKtp6B,cAAc9C,QAAQ,QAAS,MAAOtK,EAAIO,EAAE+J,QAAQ,MAAM,KAC/D7L,EAAE,EAAGA,EAAE8C,EAAErD,SAAUO,EAAG,CAC7B,IAAIvB,EAAIqE,EAAE9C,GAAG6L,QAAQ,kBAAkB,IAAI8C,cAC3C,GAAG7M,GAAKrD,GAAK8C,GAAK9C,EAAG,OAAOmyxC,EAAIr9kB,MAAQq9kB,EAAIr9kB,MAAMzwsB,EAAE9C,IAAM4wxC,EAAImvQ,UAAU//hD,EACzE,CACA,OAAO,IACR,CAEA,SAASouiD,GAAWx9Q,EAAK34W,GACxB,IAAIv46B,EAAIyuiD,GAAev9Q,EAAK34W,GAC5B,GAAQ,MAALv46B,EAAW,MAAM,IAAIknB,MAAM,oBAAsBqx5B,EAAO,WAC3D,OAAOv46B,CACR,CAEA,SAAS2uiD,GAAWz9Q,EAAK34W,EAAiBq2nB,GACzC,IAAIA,EAAM,OArBM1/hD,EAqBSw/hD,GAAWx9Q,EAAK34W,KArBuB,SAAxBrp6B,EAAK9E,KAAK3I,OAAO,GAAiB+siD,GAAWt/hD,GAAQm/hD,GAAWn/hD,GAAzG,IAAiBA,EAsBhB,IAAIqp6B,EAAM,OAAO,KACjB,IAAM,OAAOo2nB,GAAWz9Q,EAAK34W,EAAO,CAAE,MAAM156B,GAAK,OAAO,IAAM,CAC/D,CAEA,SAASgwiD,GAAU39Q,EAAK34W,EAAiBq2nB,GACxC,IAAIA,EAAM,OAAOP,GAAWK,GAAWx9Q,EAAK34W,IAC5C,IAAIA,EAAM,OAAO,KACjB,IAAM,OAAOs2nB,GAAU39Q,EAAK34W,EAAO,CAAE,MAAM156B,GAAK,OAAO,IAAM,CAC9D,CAEA,SAASiwiD,GAAU59Q,EAAK34W,EAAiBq2nB,GACxC,IAAIA,EAAM,OAAOJ,GAAWE,GAAWx9Q,EAAK34W,IAC5C,IAAIA,EAAM,OAAO,KACjB,IAAM,OAAOu2nB,GAAU59Q,EAAK34W,EAAO,CAAE,MAAM156B,GAAK,OAAO,IAAM,CAC9D,CAEA,SAASkwiD,GAAW79Q,GAEnB,IADA,IAAI9txC,EAAI8txC,EAAIovQ,WAAatthD,GAAKk+wC,EAAIr9kB,OAAQ7zsB,EAAI,GACtCM,EAAI,EAAGA,EAAI8C,EAAErD,SAAUO,EAAwB,KAAlB8C,EAAE9C,GAAGmB,OAAO,IAAWzB,EAAEuB,KAAK6B,EAAE9C,GAAG6L,QAAQ,kBAAmB,KACnG,OAAOnM,EAAEisC,MACV,CAEA,SAAS+igD,GAAa99Q,EAAKn7vC,EAAMqiE,GAChC,GAAG84rC,EAAIovQ,UAAW,CAEhB,IAAIv74C,EADL,GAAqB,iBAAX3sD,EAMT,OAJY2sD,EAATqy4C,EAAeC,EAAYj/7C,GAztGjC,SAAoBA,GAGnB,IAFA,IAAIwnC,EAAM,GAAIqv6C,EAAO,EAAGlriD,EAAIq0F,EAAQr4F,OAAS,IACzCC,EAAIu3hD,EAAYn/7C,EAAQr4F,OAAS,KAC7BmviD,EAAO,EAAGA,EAAO928C,EAAQr4F,SAAUmviD,EAAM,CAChD,IAAI3uiD,EAAI63F,EAAQ3/E,WAAWy2hD,GAC3B,GAAG3uiD,EAAI,IAAMP,EAAEiviD,KAAU1uiD,OACpB,GAAGA,EAAI,KACXP,EAAEiviD,KAAW,IAAM1uiD,GAAG,EAAG,GACzBP,EAAEiviD,KAAW,IAAO,GAAF1uiD,OACZ,GAAGA,GAAK,OAAUA,EAAI,MAAQ,CACpCA,EAAa,IAAN,KAAFA,GACL,IAAI8B,EAA+B,KAA3B+1F,EAAQ3/E,aAAay2hD,GAC7BlviD,EAAEiviD,KAAW,IAAM1uiD,GAAG,EAAG,EACzBP,EAAEiviD,KAAW,IAAM1uiD,GAAG,EAAG,GACzBP,EAAEiviD,KAAW,IAAM5siD,GAAG,EAAG,IAAQ,EAAF9B,IAAM,EACrCP,EAAEiviD,KAAW,IAAO,GAAF5siD,CACnB,MACCrC,EAAEiviD,KAAW,IAAM1uiD,GAAG,GAAI,GAC1BP,EAAEiviD,KAAW,IAAM1uiD,GAAG,EAAG,GACzBP,EAAEiviD,KAAW,IAAO,GAAF1uiD,EAEhB0uiD,EAAOlriD,IACT67H,EAAIr+H,KAAKvB,EAAEyB,MAAM,EAAGwtiD,IACpBA,EAAO,EACPjviD,EAAIu3hD,EAAY,OAChBxzhD,EAAI,MAEN,CAEA,OADA67H,EAAIr+H,KAAKvB,EAAEyB,MAAM,EAAGwtiD,IACbpX,EAAQj45C,EAChB,CA8rGcuv6C,CAAW/28C,GACfkn8C,GAAIr4qC,MAAM4jrC,QAAQ35Q,EAAKn7vC,EAAMgvH,GAErCu64C,GAAIr4qC,MAAM4jrC,QAAQ35Q,EAAKn7vC,EAAMqiE,EAC9B,MACK84rC,EAAI34W,KAAKxi5B,EAAMqiE,EACrB,CAEA,SAASg38C,KAAY,OAAO9P,GAAIr4qC,MAAM0krC,SAAW,CAEjD,SAAS0D,GAAShtiD,EAAGrC,GACpB,OAAOA,EAAEiM,MACR,IAAK,SAAU,OAAOqzhD,GAAIv59C,KAAK1jE,EAAG,CAAE4J,KAAM,WAC1C,IAAK,SAAU,OAAOqzhD,GAAIv59C,KAAK1jE,EAAG,CAAE4J,KAAM,WAC1C,IAAK,SAAU,IAAK,QAAS,OAAOqzhD,GAAIv59C,KAAK1jE,EAAG,CAAE4J,KAAM,WAEzD,MAAM,IAAIib,MAAM,qBAAuBlnB,EAAEiM,KAC1C,CAEA,SAASqjiD,GAAav5gD,EAAiBgwB,GACtC,GAAqB,KAAlBhwB,EAAKxd,OAAO,GAAW,OAAOwd,EAAKt0B,MAAM,GAC5C,IAAIyhB,EAAS6iC,EAAKzhD,MAAM,KACH,KAAlByhD,EAAKtkD,OAAO,IAAWyhB,EAAO5hB,MAEjC,IADA,IAAIkO,EAASumB,EAAKzxB,MAAM,KACC,IAAlBkL,EAAOzP,QAAc,CAC3B,IAAIquW,EAAO5+V,EAAOquC,QACL,OAATuwT,EAAelrV,EAAO5hB,MACR,MAAT8sW,GAAclrV,EAAO3hB,KAAK6sW,EACpC,CACA,OAAOlrV,EAAO3W,KAAK,IACpB,CACA,IAAIgjiD,GAAa,8DACbC,GAAU,yEACVC,GAAU,+FACVC,GAAwBH,GAAWppiD,MAAMspiD,IAAaA,GADgE,WAEtHE,GAAQ,QAASC,GAAW,aAChC,SAASC,GAAY/4hD,EAAgBg5hD,EAAwBC,GAG5D,IAFA,IAAI1qiD,EAAI,CAAW,EACfypN,EAAK,EAAGvuN,EAAI,EACVuuN,IAAOh4M,EAAI/W,QAA8C,MAA5BQ,EAAIuW,EAAI2B,WAAWq2M,KAAqB,KAANvuN,GAAkB,KAANA,IAAtDuuN,GAE3B,GADIgh1C,IAAWzqiD,EAAE,GAAKyR,EAAIrV,MAAM,EAAGqtN,IAChCA,IAAOh4M,EAAI/W,OAAQ,OAAOsF,EAC7B,IAAIvC,EAAIgU,EAAI3Q,MAAMqpiD,IAAY1riD,EAAE,EAAGnB,EAAE,GAAIrC,EAAE,EAAGsF,EAAE,GAAIuc,EAAG,GAAI6thD,EAAO,EAClE,GAAGltiD,EAAG,IAAIxC,EAAI,EAAGA,GAAKwC,EAAE/C,SAAUO,EAAG,CAEpC,IADA6hB,EAAKrf,EAAExC,GACHC,EAAE,EAAGA,GAAK4hB,EAAGpiB,QAAqC,KAArBoiB,EAAG1J,WAAWlY,KAApBA,GAE3B,IADAqF,EAAIuc,EAAG1gB,MAAM,EAAElB,GAAGwxB,OACU,IAAtB5P,EAAG1J,WAAWlY,EAAE,MAAYA,EAGlC,IAFAyviD,EAAmC,KAA1Blh1C,EAAG3sM,EAAG1J,WAAWlY,EAAE,KAAmB,IAANuuN,EAAY,EAAI,EACzDnsN,EAAIwf,EAAG1gB,MAAMlB,EAAE,EAAEyviD,EAAM7thD,EAAGpiB,OAAOiwiD,GAC7BlsiD,EAAE,EAAEA,GAAG8B,EAAE7F,QAAmC,KAApB6F,EAAE6S,WAAW3U,KAAnBA,GACtB,GAAGA,IAAI8B,EAAE7F,OACL6F,EAAE1F,QAAQ,KAAO,IAAG0F,EAAIA,EAAEnE,MAAM,EAAGmE,EAAE1F,QAAQ,OAChDmF,EAAEO,GAAKjD,EACHotiD,IAAS1qiD,EAAEO,EAAEqJ,eAAiBtM,OAE9B,CACJ,IAAIS,GAAS,IAAJU,GAAwB,UAAf8B,EAAEnE,MAAM,EAAE,GAAa,QAAQ,IAAImE,EAAEnE,MAAMqC,EAAE,GAC/D,GAAGuB,EAAEjC,IAAwB,OAAlBwC,EAAEnE,MAAMqC,EAAE,EAAEA,GAAa,SACpCuB,EAAEjC,GAAKT,EACHotiD,IAAS1qiD,EAAEjC,EAAE6L,eAAiBtM,EACnC,CACD,CACA,OAAO0C,CACR,CACA,SAAS4qiD,GAAStsiD,GAA2B,OAAOA,EAAEwI,QAAQyjiD,GAAU,MAAQ,CAEhF,IAAIM,GAAY,CACf,SAAU,IACV,SAAU,IACV,OAAQ,IACR,OAAQ,IACR,QAAS,KAENC,GAAyBpD,GAAMmD,IAI/BE,GAA0C,WAE7C,IAAIC,EAAW,+CAAgDC,EAAY,uBAC3E,OAAO,SAASF,EAAYtghD,GAC3B,IAAItvB,EAAIsvB,EAAO,GAAIxvB,EAAIE,EAAEN,QAAQ,aACjC,IAAS,GAANI,EAAS,OAAOE,EAAE2L,QAAQkkiD,GAAU,SAAS1V,EAAI7zL,GAAM,OAAOopM,GAAUvV,IAAKn7hD,OAAO4nB,aAAaiO,SAASyx0C,EAAG6zL,EAAGz6hD,QAAQ,MAAM,EAAE,GAAG,MAAMy6hD,CAAI,IAAGxuhD,QAAQmkiD,GAAU,SAASxtiD,EAAEvC,GAAI,OAAOf,OAAO4nB,aAAaiO,SAAS90B,EAAE,IAAK,IAC/N,IAAIuD,EAAItD,EAAEN,QAAQ,OAClB,OAAOkwiD,EAAY5viD,EAAEiB,MAAM,EAAGnB,IAAME,EAAEiB,MAAMnB,EAAE,EAAEwD,GAAKssiD,EAAY5viD,EAAEiB,MAAMqC,EAAE,GAC5E,CACA,CAT6C,GAW1CysiD,GAAS,WAAYC,GAAW,gCACpC,SAASC,GAAU3ghD,GAElB,OADQA,EAAO,IACN3jB,QAAQokiD,IAAU,SAAS7tiD,GAAK,OAAOytiD,GAAUztiD,EAAI,IAAGyJ,QAAQqkiD,IAAS,SAAShwiD,GAAK,MAAO,MAAQ,MAAMA,EAAEiY,WAAW,GAAGxU,SAAS,KAAKxC,OAAO,GAAK,GAAI,GACpK,CACA,SAASiviD,GAAa5ghD,GAA6B,OAAO2ghD,GAAU3ghD,GAAM3jB,QAAQ,KAAK,UAAY,CAEnG,IAAIwkiD,GAAe,mBACnB,SAASC,GAAW9ghD,GAEnB,OADQA,EAAO,IACN3jB,QAAQokiD,IAAU,SAAS7tiD,GAAK,OAAOytiD,GAAUztiD,EAAI,IAAGyJ,QAAQ,MAAO,SAASA,QAAQwkiD,IAAa,SAASnwiD,GAAK,MAAO,OAAS,MAAMA,EAAEiY,WAAW,GAAGxU,SAAS,KAAKxC,OAAO,GAAK,GAAK,GAClM,CAQA,IAAIoviD,GAA0C,WAC7C,IAAIC,EAAW,YACf,SAASC,EAAQpW,EAAc7zL,GAA4B,OAAOtn2C,OAAO4nB,aAAaiO,SAASyx0C,EAAG,IAAM,CACxG,OAAO,SAAqBzwxC,GAA6B,OAAOA,EAAIlqE,QAAQ2kiD,EAASC,EAAU,CAC/F,CAJ6C,GAO9C,SAASC,GAAanwiD,GACrB,OAAOA,GACN,KAAK,EAAG,KAAK,EAAM,IAAK,IAAK,IAAK,OAAQ,IAAK,OAAQ,OAAO,EAE9D,QAAS,OAAO,EAElB,CAEA,SAASowiD,GAAUC,GAElB,IADA,IAAItx6C,EAAM,GAAIt/H,EAAI,EAAGC,EAAI,EAAG8B,EAAI,EAAGxD,EAAI,EAAGuD,EAAI,EAAGa,EAAI,EAC9C3C,EAAI4wiD,EAAKnxiD,SACfQ,EAAI2wiD,EAAKz4hD,WAAWnY,MACZ,IAAOs/H,GAAOpgI,OAAO4nB,aAAa7mB,IAC1C8B,EAAI6uiD,EAAKz4hD,WAAWnY,KAChBC,EAAE,KAAOA,EAAE,KAAO6B,GAAU,GAAJ7B,IAAW,EAAI6B,GAAU,GAAJC,EAASu9H,GAAOpgI,OAAO4nB,aAAahlB,KACrFvD,EAAIqyiD,EAAKz4hD,WAAWnY,KAChBC,EAAI,IAAOq/H,GAAOpgI,OAAO4nB,cAAmB,GAAJ7mB,IAAW,IAAY,GAAJ8B,IAAW,EAAU,GAAJxD,IAEhFoE,IAAW,EAAJ1C,IAAU,IAAY,GAAJ8B,IAAW,IAAY,GAAJxD,IAAW,EAAU,IADjEuD,EAAI8uiD,EAAKz4hD,WAAWnY,OACkD,MACtEs/H,GAAOpgI,OAAO4nB,aAAa,OAAWnkB,IAAI,GAAI,OAC9C28H,GAAOpgI,OAAO4nB,aAAa,OAAY,KAAFnkB,OAEtC,OAAO28H,CACR,CAEA,SAASux6C,GAAUjiiD,GAClB,IAAsCjM,EAAG3C,EAAuBC,EAA5Dq/H,EAAM235C,EAAY,EAAErohD,EAAKnP,QAAe+D,EAAI,EAAGV,EAAI,EAAGkshD,EAAG,EAC7D,IAAIhvhD,EAAI,EAAGA,EAAI4O,EAAKnP,OAAQO,GAAGwD,EAC9BA,EAAI,GACAvD,EAAE2O,EAAKuJ,WAAWnY,IAAM,IAAK2C,EAAI1C,EAC7BA,EAAI,KAAO0C,EAAW,IAAJ,GAAF1C,IAA+B,GAArB2O,EAAKuJ,WAAWnY,EAAE,IAAQwD,EAAE,GACtDvD,EAAI,KAAO0C,EAAS,MAAJ,GAAF1C,GAAqC,IAAJ,GAArB2O,EAAKuJ,WAAWnY,EAAE,KAAgC,GAArB4O,EAAKuJ,WAAWnY,EAAE,IAAQwD,EAAE,IACpFA,EAAI,EACVb,EAAY,QAAH,EAAJ1C,GAAwC,MAAJ,GAArB2O,EAAKuJ,WAAWnY,EAAE,IAAsC,IAAJ,GAArB4O,EAAKuJ,WAAWnY,EAAE,KAAgC,GAArB4O,EAAKuJ,WAAWnY,EAAE,IACtFgvhD,EAAK,QAAjBrshD,GAAK,SAA2B,GAAI,MAAOA,EAAI,OAAY,KAAFA,IAEhD,IAAPqshD,IAAY1v5C,EAAIx8H,KAAU,IAAHkshD,EAAQ1v5C,EAAIx8H,KAAOkshD,IAAK,EAAGA,EAAK,GAC1D1v5C,EAAIx8H,KAAOH,EAAE,IAAK28H,EAAIx8H,KAAOH,IAAI,EAElC,OAAO28H,EAAIn+H,MAAM,EAAE2B,GAAGa,SAAS,OAChC,CAEA,SAASmtiD,GAAUliiD,GAAQ,OAAOmohD,EAAYnohD,EAAM,UAAUjL,SAAS,OAAS,CAEhF,IAAIotiD,GAAa,qBACbC,GAAWla,IAAyBga,GAAUC,KAA4BJ,GAAUI,KAAeD,IAA0BD,GAAUE,KAA4BJ,GAAUI,KAAeF,KAAcF,GAE1MxE,GAA2BrV,EAAU,SAASlohD,GAAQ,OAAOmohD,EAAYnohD,EAAM,QAAQjL,SAAS,SAAW,EAAI,SAASitiD,GAE3H,IADA,IAAItx6C,EAAwB,GAAIt/H,EAAI,EAAGC,EAAI,EAAG8B,EAAI,EAC5C/B,EAAI4wiD,EAAKnxiD,QAEd,OADAQ,EAAI2wiD,EAAKz4hD,WAAWnY,MACb,GACN,KAAKC,EAAI,IAAKq/H,EAAIr+H,KAAK/B,OAAO4nB,aAAa7mB,IAAK,MAChD,KAAKA,EAAI,KACRq/H,EAAIr+H,KAAK/B,OAAO4nB,aAAa,KAAO7mB,GAAK,KACzCq/H,EAAIr+H,KAAK/B,OAAO4nB,aAAa,KAAW,GAAJ7mB,KACpC,MACD,KAAKA,GAAK,OAASA,EAAI,MACtBA,GAAK,MAAO8B,EAAI6uiD,EAAKz4hD,WAAWnY,KAAO,OAASC,GAAG,IACnDq/H,EAAIr+H,KAAK/B,OAAO4nB,aAAa,KAAQ/kB,GAAI,GAAM,KAC/Cu9H,EAAIr+H,KAAK/B,OAAO4nB,aAAa,KAAQ/kB,GAAI,GAAM,MAC/Cu9H,EAAIr+H,KAAK/B,OAAO4nB,aAAa,KAAQ/kB,GAAK,EAAK,MAC/Cu9H,EAAIr+H,KAAK/B,OAAO4nB,aAAa,KAAW,GAAJ/kB,KACpC,MACD,QACCu9H,EAAIr+H,KAAK/B,OAAO4nB,aAAa,KAAO7mB,GAAK,MACzCq/H,EAAIr+H,KAAK/B,OAAO4nB,aAAa,KAAQ7mB,GAAK,EAAK,MAC/Cq/H,EAAIr+H,KAAK/B,OAAO4nB,aAAa,KAAW,GAAJ7mB,KAGvC,OAAOq/H,EAAIrzH,KAAK,GACjB,EAGIgliD,GAAwB,WAC3B,IAAIC,EAAkC,CAAW,EACjD,OAAO,SAAkBpviD,EAAaP,GACrC,IAAI/C,EAAIsD,EAAE,KAAKP,GAAG,IAClB,OAAG2viD,EAAQ1yiD,GAAW0yiD,EAAQ1yiD,GACtB0yiD,EAAQ1yiD,GAAK,IAAI2oC,OAAO,cAAcrlC,EAAE,+DAA+DA,EAAE,IAAMP,GAAG,GAC3H,CACA,CAP2B,GASxB4viD,GAAkD,WACrD,IAAI7hU,EAAuC,CAC1C,CAAC,OAAQ,KAAM,CAAC,SAAU,KAC1B,CAAC,OAAQ,KAAM,CAAC,OAAQ,KAAM,CAAC,KAAQ,KAAM,CAAC,KAAQ,KAAM,CAAC,MAAQ,MACpE7gtC,KAAI,SAASprB,GAA0B,MAAO,CAAC,IAAI8jC,OAAO,IAAM9jC,EAAE,GAAK,IAAK,MAAOA,EAAE,GAAK,IAC5F,OAAO,SAAoB0yE,GAc1B,IAbA,IAAIr2E,EAAIq2E,EAELlqE,QAAQ,cAAe,IAEvBA,QAAQ,cAAc,IAEtBA,QAAQ,QAAQ,KAAKA,QAAQ,QAAQ,KAErCA,QAAQ,cAAe,KAEvBA,QAAQ,uBAAuB,MAE/BA,QAAQ,WAAW,IACd7L,EAAI,EAAGA,EAAIsvuC,EAAS7vuC,SAAUO,EAAGN,EAAIA,EAAEmM,QAAQyjuC,EAAStvuC,GAAG,GAAIsvuC,EAAStvuC,GAAG,IACnF,OAAON,CACR,CACA,CAtBqD,GAwBlD0xiD,GAAuB,WAAa,IAAIC,EAAW,CAAC,EACvD,OAAO,SAAkB9kiD,GACxB,YAAoB4gC,IAAjBkkgD,EAAS9kiD,GAA0B8kiD,EAAS9kiD,GACvC8kiD,EAAS9kiD,GAAM,IAAI46B,OAAO,YAAc56B,EAAK,0BAA4BA,EAAK,IAAK,IAC7F,CAAG,CAJwB,GAKvB+kiD,GAAW,wBAAyBC,GAAW,6BACnD,SAASC,GAAY5iiD,EAAiB6sC,GACrC,IAAIz5C,EAAIutiD,GAAY3giD,GAEhBykD,EAA4BzkD,EAAK/I,MAAMuriD,GAAQpviD,EAAEyviD,YAAY,GAC7Dht5C,EAAqB,GACzB,GAAGpxF,EAAQ5zD,QAAUuC,EAAEgiB,KAAM,CAC5B,GAAGy3B,EAAKi2/C,IAAK,MAAM,IAAI9qhD,MAAM,4BAA8BysC,EAAQ5zD,OAAS,OAASuC,EAAEgiB,MACvF,OAAOygI,CACR,CAKA,OAJApxF,EAAQ/uC,SAAQ,SAASjhB,GACxB,IAAIhB,EAAIgB,EAAEwI,QAAQyliD,GAAS,IAAIzriD,MAAM0riD,IAClClviD,GAAGoiJ,EAAIxjJ,KAAK,CAACoB,EAAE2uiD,GAAS3uiD,EAAE,IAAK7D,EAAE6D,EAAE,IACvC,IACOoiJ,CACR,CAEA,IAAIkt5C,GAAU,eACd,SAASC,GAAS9viD,EAAaP,GAA2B,MAAO,IAAMO,GAAKP,EAAEsE,MAAM8riD,IAAS,wBAA0B,IAAM,IAAMpwiD,EAAI,KAAOO,EAAI,GAAK,CAEvJ,SAAS+viD,GAAW7viD,GAAgB,OAAO0Q,GAAK1Q,GAAGysB,KAAI,SAAS3rB,GAAK,MAAO,IAAMA,EAAI,KAAOd,EAAEc,GAAK,GAAI,IAAGmJ,KAAK,GAAK,CACrH,SAAS6liD,GAAUhwiD,EAAaP,EAAcS,GAAK,MAAO,IAAMF,GAAW,MAALE,EAAa6viD,GAAW7viD,GAAK,KAAa,MAALT,GAAcA,EAAEsE,MAAM8riD,IAAS,wBAA0B,IAAM,IAAMpwiD,EAAI,KAAOO,EAAI,KAAO,GAAI,CAE1M,SAASiwiD,GAAahwiD,EAAYvD,GAA6B,IAAM,OAAOuD,EAAEylC,cAAc37B,QAAQ,QAAQ,GAAK,CAAE,MAAMtN,GAAK,GAAGC,EAAG,MAAMD,CAAG,CAAE,MAAO,EAAI,CAe1J,SAASyziD,GAAejwiD,GACvB,GAAG+0hD,GAAqF/vgD,OAAO49O,SAAS5iQ,GAAI,OAAOA,EAAE4B,SAAS,QAC9H,GAAgB,iBAAN5B,EAAgB,OAAOA,EAEjC,GAAyB,oBAAfgd,YAA8Bhd,aAAagd,WAAY,OAAOiyhD,GAAS3Z,EAAIC,EAAKv1hD,KAC1F,MAAM,IAAI6kB,MAAM,8CACjB,CAEA,IAAIqrhD,GAAY,6DAGZt7d,GAAQ,CACXu7d,WAAY,0EACZC,WAAY,0EACZC,UAAW,4EACXC,GAAI,+DACJC,KAAM,+DACNC,MAAO,0EACP,GAAM,mCACN,QAAW,4BACX,SAAY,+BACZ,GAAM,0DACN,EAAK,sEACL,IAAO,yEACP,GAAM,uEACN,IAAO,4CACP,IAAO,oCAGJC,GAAa,CAChB,4DACA,gDACA,sDACA,oDAGGC,GAAS,CACZ,EAAQ,0CACR,EAAQ,yCACR,GAAQ,+CACR,GAAQ,4CACR,GAAQ,yBACR,EAAQ,gCACR,KAAQ,mCA6BLC,GAAc,SAASlb,GAAmE,IAAlB,IAAIn0hD,EAAE,GAAoBrD,EAAE,EAAEA,EAAEw3hD,EAAK,GAAG/3hD,SAASO,EAAG,GAAGw3hD,EAAK,GAAGx3hD,GAAI,IAAI,IAAIwD,EAAE,EAAEC,EAAE+zhD,EAAK,GAAGx3hD,GAAGP,OAAO+D,EAAEC,EAAED,GAA5F,MAAkGH,EAAEpC,KAAKtB,MAAM0D,EAAGm0hD,EAAK,GAAGx3hD,GAAGmB,MAAMqC,EAAEA,EAArI,QAA4I,OAAOH,CAAG,EACzOu+hD,GAAa9K,EAAU,SAASU,GAAQ,OAAQA,EAAK,GAAG/3hD,OAAS,GAAKsnB,OAAO49O,SAAS6yxC,EAAK,GAAG,IAAOzwgD,OAAO3lB,OAAOo2hD,EAAK,GAAG/ogD,KAAI,SAASprB,GAAK,OAAO0jB,OAAO49O,SAASthQ,GAAKA,EAAI0zhD,EAAY1zhD,EAAI,KAAMqviD,GAAYlb,EAAM,EAAIkb,GAEzNC,GAAa,SAASjwiD,EAAsBxC,EAAa3B,GAAwD,IAA7B,IAAIyxuB,EAAqB,GAAYhwuB,EAAEE,EAAGF,EAAEzB,EAAGyB,GAAG,EAAGgwuB,EAAG/uuB,KAAK/B,OAAO4nB,aAAa8rhD,GAAelwiD,EAAE1C,KAAM,OAAOgwuB,EAAG/juB,KAAK,IAAIJ,QAAQ4rhD,EAAK,GAAK,EACjO0K,GAAYrL,EAAU,SAASp0hD,EAAsBxC,EAAa3B,GAA2B,OAAIwoB,OAAO49O,SAASjiQ,GAAqEA,EAAEiB,SAAS,UAAUzD,EAAE3B,GAAGsN,QAAQ4rhD,EAAK,IAAjEkb,GAAWjwiD,EAAExC,EAAE3B,EAA6E,EAAIo0iD,GAE5PE,GAAa,SAASnwiD,EAAsBxC,EAAa0B,GAAwD,IAA7B,IAAIouuB,EAAqB,GAAYhwuB,EAAEE,EAAGF,EAAEE,EAAE0B,IAAK5B,EAAGgwuB,EAAG/uuB,MAAM,IAAMyB,EAAE1C,GAAG2D,SAAS,KAAKxC,OAAO,IAAK,OAAO6uuB,EAAG/juB,KAAK,GAAK,EAC5M6miD,GAAYhc,EAAU,SAASp0hD,EAAsBxC,EAAa0B,GAA2B,OAAOmlB,OAAO49O,SAASjiQ,GAAkCA,EAAEiB,SAAS,MAAMzD,EAAEA,EAAE0B,GAAKixiD,GAAWnwiD,EAAExC,EAAE0B,EAAI,EAAIixiD,GAEvME,GAAU,SAASrwiD,EAAsBxC,EAAa3B,GAA2B,IAAX,IAAIyxuB,EAAG,GAAYhwuB,EAAEE,EAAGF,EAAEzB,EAAGyB,IAAKgwuB,EAAG/uuB,KAAK/B,OAAO4nB,aAAakshD,GAAYtwiD,EAAE1C,KAAM,OAAOgwuB,EAAG/juB,KAAK,GAAK,EAC5KgniD,GAASnc,EAAU,SAAgBp0hD,EAAuBxC,EAAc3B,GAAgB,OAAQwoB,OAAO49O,SAASjiQ,GAAqCA,EAAEiB,SAAS,OAAOzD,EAAE3B,GAAKw0iD,GAAQrwiD,EAAExC,EAAE3B,EAAI,EAAIw0iD,GAElMG,GAAW,SAASxwiD,EAAsB1C,GAAgB,IAAIi+H,EAAM8k6C,GAAergiD,EAAE1C,GAAI,OAAOi+H,EAAM,EAAIg16C,GAAOvwiD,EAAG1C,EAAE,EAAEA,EAAE,EAAEi+H,EAAI,GAAK,EAAG,EACxIk16C,GAAUD,GAEVE,GAAW,SAAS1wiD,EAAsB1C,GAAgB,IAAIi+H,EAAM8k6C,GAAergiD,EAAE1C,GAAI,OAAOi+H,EAAM,EAAIg16C,GAAOvwiD,EAAG1C,EAAE,EAAEA,EAAE,EAAEi+H,EAAI,GAAK,EAAG,EACxIo16C,GAAUD,GAEVE,GAAY,SAAS5wiD,EAAsB1C,GAAgB,IAAIi+H,EAAM,EAAE8k6C,GAAergiD,EAAE1C,GAAI,OAAOi+H,EAAM,EAAIg16C,GAAOvwiD,EAAG1C,EAAE,EAAEA,EAAE,EAAEi+H,EAAI,GAAK,EAAG,EAC3Is16C,GAAWD,GAEXE,GAAU,SAAe9wiD,EAAsB1C,GAAgB,IAAIi+H,EAAM8k6C,GAAergiD,EAAE1C,GAAI,OAAOi+H,EAAM,EAAIkk6C,GAAUz/hD,EAAG1C,EAAE,EAAEA,EAAE,EAAEi+H,GAAO,EAAG,EAC9Iw16C,GAASD,GAETE,GAAW,SAAShxiD,EAAsB1C,GAAgB,IAAIi+H,EAAM8k6C,GAAergiD,EAAE1C,GAAI,OAAOi+H,EAAM,EAAIg16C,GAAOvwiD,EAAG1C,EAAE,EAAEA,EAAE,EAAEi+H,GAAO,EAAG,EACtI016C,GAAUD,GAEVE,GAAY,SAASlxiD,EAAuBw3W,GAAkB,OAtDlE,SAAwBx3W,EAAuBw3W,GAI9C,IAHA,IAAIh6W,EAAI,EAAI,GAAKwC,EAAEw3W,EAAM,KAAO,GAC5B37W,IAAmB,IAAbmE,EAAEw3W,EAAM,KAAc,IAAOx3W,EAAEw3W,EAAM,KAAO,EAAK,IACvD13W,EAAc,GAATE,EAAEw3W,EAAI,GACPl6W,EAAI,EAAGA,GAAK,IAAKA,EAAGwC,EAAQ,IAAJA,EAAUE,EAAEw3W,EAAMl6W,GAClD,OAAQ,MAALzB,EAAwB,GAALiE,EAAUtC,GAAIi/D,KAAY67rB,KACxC,GAALz8vB,EAAQA,GAAK,MACTA,GAAK,KAAMiE,GAAKP,KAAK6yF,IAAI,EAAE,KAC3B50F,EAAI+B,KAAK6yF,IAAI,EAAGv2F,EAAI,IAAMiE,EAClC,CA6CyEqxiD,CAAenxiD,EAAGw3W,EAAK,EAC5F45rC,GAAWF,GAEXG,GAAS,SAAkB3ziD,GAAK,OAAOvB,MAAMkS,QAAQ3Q,IAA6B,oBAAf2e,YAA8B3e,aAAa2e,UAAa,EAa/H,SAASu3gD,KACR6L,GAAY,SAASz/hD,EAAsBxC,EAAa3B,GAAgB,OAAOw3hD,EAASpvqC,MAAM1+V,OAAO,KAAMvlB,EAAEvB,MAAMjB,EAAE3B,IAAIsN,QAAQ4rhD,EAAM,GAAK,EAC5Iwb,GAAS,SAASvwiD,EAAsBxC,EAAa3B,GAAgB,OAAOw3hD,EAASpvqC,MAAM1+V,OAAO,MAAOvlB,EAAEvB,MAAMjB,EAAE3B,GAAK,EACxH40iD,GAAU,SAASzwiD,EAAsB1C,GAAgB,IAAIi+H,EAAM8k6C,GAAergiD,EAAE1C,GAAI,OAAOi+H,EAAM,EAAI835C,EAASpvqC,MAAM1+V,OAAOstgD,EAAc7yhD,EAAEvB,MAAMnB,EAAE,EAAGA,EAAE,EAAEi+H,EAAI,IAAM,EAAG,EAC3Ko16C,GAAU,SAAS3wiD,EAAsB1C,GAAgB,IAAIi+H,EAAM8k6C,GAAergiD,EAAE1C,GAAI,OAAOi+H,EAAM,EAAI835C,EAASpvqC,MAAM1+V,OAAOqtgD,EAAkB5yhD,EAAEvB,MAAMnB,EAAE,EAAGA,EAAE,EAAEi+H,EAAI,IAAM,EAAG,EAC/Ks16C,GAAW,SAAS7wiD,EAAsB1C,GAAgB,IAAIi+H,EAAM,EAAE8k6C,GAAergiD,EAAE1C,GAAI,OAAOi+H,EAAM,EAAI835C,EAASpvqC,MAAM1+V,OAAO,KAAMvlB,EAAEvB,MAAMnB,EAAE,EAAEA,EAAE,EAAEi+H,EAAI,IAAM,EAAG,EACrKw16C,GAAS,SAAS/wiD,EAAsB1C,GAAgB,IAAIi+H,EAAM8k6C,GAAergiD,EAAE1C,GAAI,OAAOi+H,EAAM,EAAI835C,EAASpvqC,MAAM1+V,OAAO,KAAMvlB,EAAEvB,MAAMnB,EAAE,EAAEA,EAAE,EAAEi+H,IAAQ,EAAG,EAC/J016C,GAAU,SAASjxiD,EAAsB1C,GAAgB,IAAIi+H,EAAM8k6C,GAAergiD,EAAE1C,GAAI,OAAOi+H,EAAM,EAAI835C,EAASpvqC,MAAM1+V,OAAO,MAAOvlB,EAAEvB,MAAMnB,EAAE,EAAEA,EAAE,EAAEi+H,IAAQ,EAAG,CAClK,CAnBG645C,IACFqc,GAAU,SAAiBzwiD,EAAuB1C,GAAgB,IAAI+mB,OAAO49O,SAASjiQ,GAAoC,OAAOwwiD,GAASxwiD,EAAG1C,GAAI,IAAIi+H,EAAMv7H,EAAEsxiD,aAAah0iD,GAAI,OAAOi+H,EAAM,EAAIv7H,EAAEiB,SAAS,OAAO3D,EAAE,EAAEA,EAAE,EAAEi+H,EAAI,GAAK,EAAG,EACrOo16C,GAAU,SAAiB3wiD,EAAuB1C,GAAgB,IAAI+mB,OAAO49O,SAASjiQ,GAAoC,OAAO0wiD,GAAS1wiD,EAAG1C,GAAI,IAAIi+H,EAAMv7H,EAAEsxiD,aAAah0iD,GAAI,OAAOi+H,EAAM,EAAIv7H,EAAEiB,SAAS,OAAO3D,EAAE,EAAEA,EAAE,EAAEi+H,EAAI,GAAK,EAAG,EACrOs16C,GAAW,SAAkB7wiD,EAAuB1C,GAAgB,IAAI+mB,OAAO49O,SAASjiQ,GAAoC,OAAO4wiD,GAAU5wiD,EAAG1C,GAAI,IAAIi+H,EAAM,EAAEv7H,EAAEsxiD,aAAah0iD,GAAI,OAAO0C,EAAEiB,SAAS,UAAU3D,EAAE,EAAEA,EAAE,EAAEi+H,EAAI,EAAG,EAC9Nw16C,GAAS,SAAgB/wiD,EAAuB1C,GAAgB,IAAI+mB,OAAO49O,SAASjiQ,GAAoC,OAAO8wiD,GAAQ9wiD,EAAG1C,GAAI,IAAIi+H,EAAMv7H,EAAEsxiD,aAAah0iD,GAAI,OAAO0C,EAAEiB,SAAS,UAAU3D,EAAE,EAAEA,EAAE,EAAEi+H,EAAK,EACpN016C,GAAU,SAAiBjxiD,EAAuB1C,GAAgB,IAAI+mB,OAAO49O,SAASjiQ,GAAoC,OAAOgxiD,GAAShxiD,EAAG1C,GAAI,IAAIi+H,EAAMv7H,EAAEsxiD,aAAah0iD,GAAI,OAAO0C,EAAEiB,SAAS,OAAO3D,EAAE,EAAEA,EAAE,EAAEi+H,EAAK,EACpN616C,GAAW,SAAiBpxiD,EAAuB1C,GAAgB,OAAG+mB,OAAO49O,SAASjiQ,GAAuCA,EAAEuxiD,aAAaj0iD,GAAW4ziD,GAAUlxiD,EAAE1C,EAAI,EACvK+ziD,GAAS,SAAkB3ziD,GAAK,OAAO2mB,OAAO49O,SAASvkQ,IAAMvB,MAAMkS,QAAQ3Q,IAA6B,oBAAf2e,YAA8B3e,aAAa2e,UAAa,QAa3H,IAAbg3gD,GAA0BO,KAEpC,IAAI0c,GAAc,SAAStwiD,EAAuBw3W,GAA6B,OAAOx3W,EAAEw3W,EAAM,EAC1F04rC,GAAiB,SAASlwiD,EAAuBw3W,GAA6B,OAAiB,IAATx3W,EAAEw3W,EAAI,GAAWx3W,EAAEw3W,EAAM,EAC/Gg6rC,GAAgB,SAASxxiD,EAAuBw3W,GAA6B,IAAIz4W,EAAc,IAATiB,EAAEw3W,EAAI,GAAWx3W,EAAEw3W,GAAM,OAAQz4W,EAAI,MAAUA,GAAyB,GAAnB,MAASA,EAAI,EAAU,EAClKshiD,GAAiB,SAASrgiD,EAAuBw3W,GAA6B,OAAOx3W,EAAEw3W,EAAI,IAAI,GAAG,KAAKx3W,EAAEw3W,EAAI,IAAI,KAAKx3W,EAAEw3W,EAAI,IAAI,GAAGx3W,EAAEw3W,EAAM,EAC3IynrC,GAAgB,SAASj/hD,EAAuBw3W,GAA6B,OAAQx3W,EAAEw3W,EAAI,IAAI,GAAKx3W,EAAEw3W,EAAI,IAAI,GAAKx3W,EAAEw3W,EAAI,IAAI,EAAGx3W,EAAEw3W,EAAM,EACxIi6rC,GAAgB,SAASzxiD,EAAuBw3W,GAA6B,OAAQx3W,EAAEw3W,IAAM,GAAKx3W,EAAEw3W,EAAI,IAAI,GAAKx3W,EAAEw3W,EAAI,IAAI,EAAGx3W,EAAEw3W,EAAI,EAAI,EAE5I,SAASwxrC,GAAU1nhD,EAAiBxlB,GACnC,IAAU41iD,EAAsBC,EAAW1xiD,EAAGs6hD,EAAIj9hD,EAAGu76B,EAAjD776B,EAAE,GAA8B8Y,EAAG,GACvC,OAAOha,GACN,IAAK,OAEJ,GADA+86B,EAAMn86B,KAAKwC,EACRk1hD,GAAW/vgD,OAAO49O,SAASvlQ,MAAOM,EAAIN,KAAK+B,MAAM/B,KAAKwC,EAAGxC,KAAKwC,EAAE,EAAEoiB,GAAMrgB,SAAS,gBAC/E,IAAI3D,EAAI,EAAGA,EAAIgkB,IAAQhkB,EAAKN,GAAGR,OAAO4nB,aAAa8rhD,GAAexziD,KAAMm86B,IAAOA,GAAK,EACzFv35B,GAAQ,EACR,MAED,IAAK,OAAQtkB,EAAIuziD,GAAO7ziD,KAAMA,KAAKwC,EAAGxC,KAAKwC,EAAIoiB,GAAO,MACtD,IAAK,UAAWA,GAAQ,EAAGtkB,EAAIyiiD,GAAU/iiD,KAAMA,KAAKwC,EAAGxC,KAAKwC,EAAIoiB,GAAO,MAEvE,IAAK,OACJ,QAAuB,IAAb+xgD,EACL,OAAO2V,GAAU1siD,KAAKI,KAAM4kB,EAAM,QADHtkB,EAAIq2hD,EAASpvqC,MAAM1+V,OAAOqtgD,EAAkBl2hD,KAAK+B,MAAM/B,KAAKwC,EAAGxC,KAAKwC,EAAE,EAAEoiB,IAE5GA,GAAO,EAAU,MAGlB,IAAK,aAActkB,EAAIyziD,GAAQ/ziD,KAAMA,KAAKwC,GAAIoiB,EAAO,EAAI++gD,GAAe3jiD,KAAMA,KAAKwC,GAAI,MACvF,IAAK,WAAYlC,EAAI2ziD,GAAQj0iD,KAAMA,KAAKwC,GAAIoiB,EAAO,EAAI++gD,GAAe3jiD,KAAMA,KAAKwC,GAAI,MAErF,IAAK,SAAUlC,EAAI6ziD,GAASn0iD,KAAMA,KAAKwC,GAAIoiB,EAAO,EAAI,EAAI++gD,GAAe3jiD,KAAMA,KAAKwC,GAAI,MAExF,IAAK,OAAQoiB,EAAO,EAAK++gD,GAAe3jiD,KAAMA,KAAKwC,GAAIlC,EAAI+ziD,GAAOr0iD,KAAMA,KAAKwC,GAAc,EAAPoiB,IAAaA,GAAQ,GAAG,MAE5G,IAAK,QAASA,EAAO,EAAK++gD,GAAe3jiD,KAAMA,KAAKwC,GAAIlC,EAAIi0iD,GAAQv0iD,KAAMA,KAAKwC,GAAc,EAAPoiB,IAAaA,GAAQ,GAAY,EAAPA,IAAc,MAE9H,IAAK,OACJ,IADYA,EAAO,EAAGtkB,EAAI,GACqB,KAAxCiD,EAAEqwiD,GAAY5ziD,KAAMA,KAAKwC,EAAIoiB,OAAcxL,EAAGvX,KAAKi1hD,EAASvzhD,IACnEjD,EAAI8Y,EAAGvM,KAAK,IAAK,MAClB,IAAK,QACJ,IADa+X,EAAO,EAAGtkB,EAAI,GACmB,KAAvCiD,EAAEiwiD,GAAexziD,KAAKA,KAAKwC,EAAGoiB,KAAYxL,EAAGvX,KAAKi1hD,EAASvzhD,IAAIqhB,GAAM,EAC5EA,GAAM,EAAGtkB,EAAI8Y,EAAGvM,KAAK,IAAK,MAG3B,IAAK,YACJ,IADiBvM,EAAI,GAAI676B,EAAMn86B,KAAKwC,EAChC5B,EAAI,EAAGA,EAAIgkB,IAAQhkB,EAAG,CACzB,GAAGZ,KAAKk1iD,OAAoC,IAA5Bl1iD,KAAKk1iD,KAAK10iD,QAAQ276B,GAIjC,OAHA546B,EAAIqwiD,GAAY5ziD,KAAMm86B,GACtBn86B,KAAKwC,EAAI256B,EAAM,EACf0hnB,EAAKyO,GAAU1siD,KAAKI,KAAM4kB,EAAKhkB,EAAG2C,EAAI,YAAc,aAC7C6V,EAAGvM,KAAK,IAAMgxhD,EAEtBzkhD,EAAGvX,KAAKi1hD,EAAS0c,GAAexziD,KAAMm86B,KACtCA,GAAK,CACN,CAAE776B,EAAI8Y,EAAGvM,KAAK,IAAK+X,GAAQ,EAAG,MAE/B,IAAK,QACJ,QAAuB,IAAb+xgD,EAA0B,CACnCr2hD,EAAIq2hD,EAASpvqC,MAAM1+V,OAAOqtgD,EAAkBl2hD,KAAK+B,MAAM/B,KAAKwC,EAAGxC,KAAKwC,EAAIoiB,IACxE,KACD,CAED,IAAK,YACJ,IADiBtkB,EAAI,GAAI676B,EAAMn86B,KAAKwC,EAChC5B,EAAI,EAAGA,GAAKgkB,IAAQhkB,EAAG,CAC1B,GAAGZ,KAAKk1iD,OAAoC,IAA5Bl1iD,KAAKk1iD,KAAK10iD,QAAQ276B,GAIjC,OAHA546B,EAAIqwiD,GAAY5ziD,KAAMm86B,GACtBn86B,KAAKwC,EAAI256B,EAAM,EACf0hnB,EAAKyO,GAAU1siD,KAAKI,KAAM4kB,EAAKhkB,EAAG2C,EAAI,YAAc,aAC7C6V,EAAGvM,KAAK,IAAMgxhD,EAEtBzkhD,EAAGvX,KAAKi1hD,EAAS8c,GAAY5ziD,KAAMm86B,KACnCA,GAAK,CACN,CAAE776B,EAAI8Y,EAAGvM,KAAK,IAAK,MAEpB,QACD,OAAO+X,GACN,KAAK,EAA6C,OAA1CowhD,EAAKpB,GAAY5ziD,KAAMA,KAAKwC,GAAIxC,KAAKwC,IAAYwyiD,EACzD,KAAK,EAAiF,OAA9EA,GAAY,MAAN51iD,EAAY01iD,GAAgBtB,IAAgBxziD,KAAMA,KAAKwC,GAAIxC,KAAKwC,GAAK,EAAUwyiD,EAC7F,KAAK,EAAG,KAAM,EACb,MAAS,MAAN51iD,GAAwC,IAAR,IAAjBY,KAAKA,KAAKwC,EAAE,KAAmBwyiD,GAAOpwhD,EAAO,EAAK29gD,GAAgBwS,IAAe/0iD,KAAMA,KAAKwC,GAAIxC,KAAKwC,GAAK,EAAUwyiD,IAC/HC,EAAKtR,GAAe3jiD,KAAMA,KAAKwC,GAAIxC,KAAKwC,GAAK,EAAYyyiD,GACjE,KAAK,EAAG,KAAM,EACb,GAAS,MAAN71iD,EAGW,OAFC61iD,EAAH,GAARrwhD,EAAgB8vhD,GAAS10iD,KAAMA,KAAKwC,GAC7BkyiD,GAAS,CAAC10iD,KAAKA,KAAKwC,EAAE,GAAGxC,KAAKA,KAAKwC,EAAE,GAAGxC,KAAKA,KAAKwC,EAAE,GAAGxC,KAAKA,KAAKwC,EAAE,GAAGxC,KAAKA,KAAKwC,EAAE,GAAGxC,KAAKA,KAAKwC,EAAE,GAAGxC,KAAKA,KAAKwC,EAAE,GAAGxC,KAAKA,KAAKwC,EAAE,IAAK,GAC9IxC,KAAKwC,GAAK,EAAUyyiD,EACdrwhD,EAAO,EAEf,KAAK,GAAItkB,EAAIoziD,GAAU1ziD,KAAMA,KAAKwC,EAAGoiB,IAExB,OAAd5kB,KAAKwC,GAAGoiB,EAAatkB,CACtB,CAEA,IAAI60iD,GAAkB,SAAS7xiD,EAAuBo6K,EAAgBo9L,GAA2Bx3W,EAAEw3W,GAAc,IAANp9L,EAAap6K,EAAEw3W,EAAI,GAAOp9L,IAAQ,EAAK,IAAOp6K,EAAEw3W,EAAI,GAAOp9L,IAAQ,GAAM,IAAOp6K,EAAEw3W,EAAI,GAAOp9L,IAAQ,GAAM,GAAO,EACzN033C,GAAkB,SAAS9xiD,EAAuBo6K,EAAgBo9L,GAA2Bx3W,EAAEw3W,GAAc,IAANp9L,EAAap6K,EAAEw3W,EAAI,GAAOp9L,GAAO,EAAK,IAAOp6K,EAAEw3W,EAAI,GAAOp9L,GAAO,GAAM,IAAOp6K,EAAEw3W,EAAI,GAAOp9L,GAAO,GAAM,GAAO,EACtN233C,GAAkB,SAAS/xiD,EAAuBo6K,EAAgBo9L,GAA2Bx3W,EAAEw3W,GAAc,IAANp9L,EAAap6K,EAAEw3W,EAAI,GAAOp9L,IAAQ,EAAK,GAAO,EAEzJ,SAAS433C,GAAWl2iD,EAAcs+K,EAAuBh7K,GACxD,IAAIkiB,EAAO,EAAGhkB,EAAI,EAClB,GAAS,SAAN8B,EAAc,CAEhB,IAAI9B,EAAI,EAAGA,GAAK88K,EAAIr9K,SAAUO,EAAGy0iD,GAAgBr1iD,KAAM09K,EAAI3kK,WAAWnY,GAAIZ,KAAKwC,EAAI,EAAI5B,GACvFgkB,EAAO,EAAI84J,EAAIr9K,MAChB,MAAO,GAAS,SAANqC,EAAc,CACvB,QAAuB,IAAbi0hD,GAA4C,KAAhBR,EAGrC,IAAIv1hD,EAAI,EAAGA,GAAK88K,EAAIr9K,SAAUO,EAAG,CAChC,IAAI20iD,EAAY5e,EAASpvqC,MAAM1/V,OAAOsugD,EAAcz42C,EAAI7kK,OAAOjY,IAC/DZ,KAAKA,KAAKwC,EAAI5B,GAAK20iD,EAAU,EAC9B,MAKA,IAFA733C,EAAMA,EAAIjxK,QAAQ,gBAAiB,KAE/B7L,EAAI,EAAGA,GAAK88K,EAAIr9K,SAAUO,EAAGZ,KAAKA,KAAKwC,EAAI5B,GAA0B,IAApB88K,EAAI3kK,WAAWnY,GAErEgkB,EAAO84J,EAAIr9K,MACZ,KAAO,IAAS,QAANqC,EAAa,CACtB,KAAM9B,EAAIxB,IAAKwB,EAEdZ,KAAKA,KAAKwC,KAAQmzB,SAAS+nJ,EAAI37K,MAAM,EAAEnB,EAAG,EAAEA,EAAE,GAAI,KAAK,EACtD,OAAOZ,IACV,CAAO,GAAS,YAAN0C,EAAiB,CAEzB,IAAI+jC,EAAiB5jC,KAAKgL,IAAI7N,KAAKwC,EAAIpD,EAAGY,KAAKK,QAC/C,IAAIO,EAAI,EAAGA,EAAIiC,KAAKgL,IAAI6vK,EAAIr9K,OAAQjB,KAAMwB,EAAG,CAC5C,IAAI6hB,EAAKi7J,EAAI3kK,WAAWnY,GACxBZ,KAAKA,KAAKwC,KAAa,IAALigB,EAClBziB,KAAKA,KAAKwC,KAAQigB,GAAM,CACzB,CACA,KAAMziB,KAAKwC,EAAIikC,GAAKzmC,KAAKA,KAAKwC,KAAO,EACrC,OAAOxC,IACT,CAA2C,OAAOZ,GACjD,KAAM,EAAGwlB,EAAO,EAAG5kB,KAAKA,KAAKwC,GAAS,IAAJk7K,EAAU,MAC5C,KAAM,EAAG94J,EAAO,EAAG5kB,KAAKA,KAAKwC,GAAS,IAAJk7K,EAAUA,KAAS,EAAG19K,KAAKA,KAAKwC,EAAE,GAAS,IAAJk7K,EAAU,MACnF,KAAM,EAAG94J,EAAO,EAAG5kB,KAAKA,KAAKwC,GAAS,IAAJk7K,EAAUA,KAAS,EAAG19K,KAAKA,KAAKwC,EAAE,GAAS,IAAJk7K,EAAUA,KAAS,EAAG19K,KAAKA,KAAKwC,EAAE,GAAS,IAAJk7K,EAAU,MAC1H,KAAM,EAAG94J,EAAO,EAAGuwhD,GAAgBn1iD,KAAM09K,EAAK19K,KAAKwC,GAAI,MACvD,KAAM,EAAa,GAAVoiB,EAAO,EAAY,MAANliB,EAAW,EA/MnC,SAAyBY,EAAuBL,EAAc63W,GAC7D,IAAIuuhC,GAASpm4C,EAAI,GAAO,EAAEA,IAAK,IAAc,EAAI,IAAM,EAAI9D,EAAI,EAAGiE,EAAI,EAClE6+6B,EAAKond,GAAOpm4C,EAAKA,EACjBykC,SAASu64B,GACC,GAANA,EAAS9i7B,EAAIiE,EAAI,GAExBjE,EAAI0D,KAAKyK,MAAMzK,KAAKwnB,IAAI435B,GAAMp/6B,KAAKsvN,KACnC/uN,EAAI6+6B,EAAKp/6B,KAAK6yF,IAAI,EAAG,GAAKv2F,GACtBA,IAAM,QAAWuoC,SAAStkC,IAAOA,EAAIP,KAAK6yF,IAAI,EAAE,KAASv2F,GAAK,MAC3DiE,GAAKP,KAAK6yF,IAAI,EAAE,IAAKv2F,GAAG,QANZA,EAAI,KAAOiE,EAAIkpC,MAAMrpC,GAAK,MAAS,GAQvD,IAAI,IAAIrC,EAAI,EAAGA,GAAK,IAAKA,EAAGwC,GAAG,IAAKE,EAAEw3W,EAAMl6W,GAAS,IAAJwC,EACjDE,EAAEw3W,EAAM,IAAW,GAAJ37W,IAAa,EAAU,GAAJiE,EAClCE,EAAEw3W,EAAM,GAAM37W,GAAK,EAAKkq4C,CACzB,CAiMqCmsK,CAAgBx1iD,KAAM09K,EAAK19K,KAAKwC,GAAI,KAAO,CAE9E,KAAK,GAAI,MACT,KAAM,EAAGoiB,EAAO,EAAGwwhD,GAAep1iD,KAAM09K,EAAK19K,KAAKwC,GACnD,CACgB,OAAhBxC,KAAKwC,GAAKoiB,EAAa5kB,IACxB,CAEA,SAASusiD,GAAWkJ,EAAmBC,GACtC,IAAItyiD,EAAIswiD,GAAU1ziD,KAAKA,KAAKwC,EAAEiziD,EAAOp1iD,QAAQ,GAC7C,GAAG+C,IAAMqyiD,EAAQ,MAAM,IAAIjuhD,MAAMkuhD,EAAM,YAAcD,EAAS,QAAUryiD,GACxEpD,KAAKwC,GAAKiziD,EAAOp1iD,QAAQ,CAC1B,CAEA,SAAS4/hD,GAAU3vgD,EAAM+xF,GACxB/xF,EAAK9tB,EAAI6/G,EACT/xF,EAAK4vgD,WAAoBoM,GACzBh8gD,EAAKqxgD,IAAM4K,GACXj8gD,EAAKyvgD,YAAcuV,EACpB,CAEA,SAASK,GAAUrlhD,EAAMjwB,GAAoCiwB,EAAK9tB,GAAKnC,CAAQ,CAE/E,SAASqjiD,GAAQvD,GAChB,IAAI7/hD,EAAIu3hD,EAAYsI,GAEpB,OADAF,GAAU3/hD,EAAG,GACNA,CACR,CAGA,SAASs1iD,GAAapmiD,EAAMkyD,EAAuBrlB,GAClD,GAAI7sC,EAAJ,CACA,IAAIqmiD,EAASC,EAASz1iD,EACtB4/hD,GAAUzwhD,EAAMA,EAAKhN,GAAK,GAE1B,IADA,IAAI6B,EAAImL,EAAKnP,OAAQ01iD,EAAK,EAAG3V,EAAM,EAC7B5whD,EAAKhN,EAAI6B,GAAG,CAET,KADR0xiD,EAAKvmiD,EAAK0whD,WAAW,MACP6V,GAAW,IAALA,KAAoC,IAArBvmiD,EAAK0whD,WAAW,KAAY,IAC/D,IAAI57hD,EAAI0xiD,GAAeD,IAAOC,GAAe,OAG7C,IADA31iD,EAAmB,KADnBw1iD,EAAUrmiD,EAAK0whD,WAAW,IAEtB4V,EAAU,EAAGA,EAAS,GAAgB,IAAVD,IAAmBC,EAASz1iD,IAA4C,KAAhCw1iD,EAAUrmiD,EAAK0whD,WAAW,MAAc,EAAE4V,EAClH1V,EAAM5whD,EAAKhN,EAAInC,EACf,IAAIsC,EAAI2B,EAAE5B,GAAK4B,EAAE5B,EAAE8M,EAAMnP,EAAQg8C,GAEjC,GADA7sC,EAAKhN,EAAI49hD,EACN1+9C,EAAG/+D,EAAG2B,EAAGyxiD,GAAK,MAClB,CAfgB,CAgBjB,CAGA,SAASE,KACR,IAAI7d,EAAwB,GAAI8d,EAAQxe,EAAU,IAAM,KACpDye,EAAS,SAAmBhW,GAC/B,IAAI7/hD,EAAeojiD,GAAQvD,GAE3B,OADAF,GAAU3/hD,EAAG,GACNA,CACR,EAEI81iD,EAAmBD,EAAOD,GAE1BG,EAAS,WACRD,IACDA,EAAO/1iD,OAAS+1iD,EAAO5ziD,KAAK4ziD,EAASA,EAAOr0iD,MAAM,EAAGq0iD,EAAO5ziD,IAAWA,EAAI4ziD,EAAO/1iD,QAClF+1iD,EAAO/1iD,OAAS,GAAG+3hD,EAAKv2hD,KAAKu0iD,GAChCA,EAAS,KACV,EAEIr1iD,EAAO,SAAiBo/hD,GAC3B,OAAGiW,GAAWjW,EAAMiW,EAAO/1iD,OAAS+1iD,EAAO5ziD,EAAY4ziD,GACvDC,IACQD,EAASD,EAAOtziD,KAAK8K,IAAIwyhD,EAAG,EAAG+V,IACxC,EASA,MAAO,CAAGn1iD,KAAKA,EAAMc,KAFV,SAAiBykvC,GAAO+vT,IAAuC,OAA7BD,EAAS9vT,GAAe9jvC,IAAW4ziD,EAAO5ziD,EAAI4ziD,EAAO/1iD,QAAQU,EAAKm1iD,EAAQ,EAEvFzvgD,IAPtB,WAET,OADA4vgD,IACOle,EAAQC,EAChB,EAIyCke,MAAMle,EAChD,CAEA,SAASme,GAAavihD,EAAiBznB,EAAiBuoB,EAASz0B,GAChE,IAA0BmC,EAAtBpD,GAAgBmN,EACpB,IAAG+/B,MAAMltC,GAAT,CACIiB,IAAQA,EAAS21iD,GAAe52iD,GAAG0D,IAAMgyB,GAAS,IAAIz0B,QAAU,GACpEmC,EAAI,GAAKpD,GAAK,IAAO,EAAI,GAAK,EAC3BiB,GAAU,OAAQmC,EAAMnC,GAAU,SAAUmC,EAAMnC,GAAU,WAAYmC,EAC3E,IAAIlC,EAAI0zB,EAAGjzB,KAAKyB,GACbpD,GAAK,IAAMkB,EAAEy/hD,YAAY,EAAG3giD,IAE9BkB,EAAEy/hD,YAAY,EAAgB,KAAR,IAAJ3giD,IAClBkB,EAAEy/hD,YAAY,EAAI3giD,GAAK,IAExB,IAAI,IAAIwB,EAAI,EAAQ,GAALA,IAAUA,EAAG,CAC3B,KAAGP,GAAU,KACR,CAAEC,EAAEy/hD,YAAY,EAAG1/hD,GAAS,KAAO,CADnBC,EAAEy/hD,YAAY,EAAmB,KAAN,IAAT1/hD,IAAsBA,IAAW,CAEzE,CAC2BA,EAAS,GAAKs0iD,GAAO7/gD,IAAUd,EAAGnyB,KAAKizB,EAd/C,CAepB,CAEA,SAAS0hhD,GAAejusC,EAAsB63rC,EAAa/j/C,GAC1D,IAAI6jF,EAAMku6C,GAAI7lsC,GAQd,GAPG63rC,EAAIt/hD,GACHo/H,EAAIu26C,OAAMv26C,EAAIr/H,GAAKu/hD,EAAIt/hD,EAAED,GACzBq/H,EAAIw26C,OAAMx26C,EAAIngI,GAAKqgiD,EAAIt/hD,EAAEf,KAEzBmgI,EAAIu26C,OAAMv26C,EAAIr/H,GAAKu/hD,EAAIv/hD,GACvBq/H,EAAIw26C,OAAMx26C,EAAIngI,GAAKqgiD,EAAIrgiD,KAEvBs8C,GAAQA,EAAKs6/C,KAAO,GAAI,CAC3B,KAAMz26C,EAAIr/H,GAAK,KAAOq/H,EAAIr/H,GAAK,IAC/B,KAAMq/H,EAAIngI,GAAK,OAASmgI,EAAIngI,GAAK,KAClC,CACA,OAAOmgI,CACR,CAEA,SAAS026C,GAAgBrusC,EAAMxmO,EAAO1lF,GACrC,IAAI6jF,EAAMku6C,GAAI7lsC,GAGd,OAFAroO,EAAIp/H,EAAI01iD,GAAet26C,EAAIp/H,EAAGihI,EAAMjhI,EAAGu7C,GACvC6jF,EAAI/gI,EAAIq3iD,GAAet26C,EAAI/gI,EAAG4iI,EAAMjhI,EAAGu7C,GAChC6jF,CACR,CAEA,SAAS226C,GAAgBh2iD,EAAmB81iD,GAC3C,GAAG91iD,EAAE41iD,MAAQ51iD,EAAEA,EAAI,EAAiB,IAAZA,EAAIutiD,GAAIvtiD,GAAUA,EAAEA,EAAI,GAAGA,EAAEA,GAAM81iD,EAAO,EAAK,MAAS,IAChF,GAAG91iD,EAAE61iD,MAAQ71iD,EAAEd,EAAI,EAAiB,IAAZc,EAAIutiD,GAAIvtiD,GAAUA,EAAEd,EAAI,GAAGc,EAAEd,GAAM42iD,EAAO,EAAK,QAAaA,EAAO,EAAK,MAAU,MAC1G,IAAI71iD,EAAIokgD,GAAYrkgD,GAGpB,OAFIA,EAAE41iD,MAAkB,MAAV51iD,EAAE41iD,OAAc31iD,EAAYA,EAyBgB2L,QAAQ,WAAW,SAxBzE5L,EAAE61iD,MAAkB,MAAV71iD,EAAE61iD,OAAc51iD,EAAYA,EAmBgB2L,QAAQ,kBAAkB,WAlB7E3L,CACR,CAEA,SAASg2iD,GAAiB/2iD,EAAGs8C,GAC5B,OAAY,GAATt8C,EAAEe,EAAEf,GAAWA,EAAEe,EAAE41iD,MAClB32iD,EAAEZ,EAAEY,IAAMs8C,EAAKs6/C,MAAQ,GAAK,QAAWt6/C,EAAKs6/C,MAAQ,EAAI,MAAU,QAAa52iD,EAAEZ,EAAEu3iD,KAI3E,GAAT32iD,EAAEe,EAAED,GAAWd,EAAEe,EAAE21iD,MAClB12iD,EAAEZ,EAAE0B,IAAMw7C,EAAKs6/C,MAAQ,GAAK,MAAS,MAAU52iD,EAAEZ,EAAEs3iD,KAIhDI,GAAgB92iD,EAAEe,EAAGu7C,EAAKs6/C,MAAQ,IAAME,GAAgB92iD,EAAEZ,EAAGk9C,EAAKs6/C,OAH/D52iD,EAAEe,EAAE41iD,KAAO,GAAK,KAAOK,GAAWh3iD,EAAEe,EAAEf,GAAK,KAAOA,EAAEZ,EAAEu3iD,KAAO,GAAK,KAAOK,GAAWh3iD,EAAEZ,EAAEY,IALxFA,EAAEe,EAAE21iD,KAAO,GAAK,KAAOxyC,GAAWlkgD,EAAEe,EAAED,GAAK,KAAOd,EAAEZ,EAAEs3iD,KAAO,GAAK,KAAOxyC,GAAWlkgD,EAAEZ,EAAE0B,EASnG,CACA,SAASm2iD,GAAWC,GAAgC,OAAOthhD,SAAmBshhD,EAGjBxqiD,QAAQ,WAAW,MAHM,IAAM,CAAG,CAC/F,SAASsqiD,GAAW/z6C,GAA6B,MAAO,IAAMA,EAAM,EAAI,CAIxE,SAASii4C,GAAWiyC,GAAyE,IAAzC,IAAIr2iD,EAAcq2iD,EAGTzqiD,QAAQ,aAAa,MAHH9J,EAAI,EAAG/B,EAAI,EAASA,IAAMC,EAAER,SAAUO,EAAG+B,EAAI,GAAGA,EAAI9B,EAAEkY,WAAWnY,GAAK,GAAI,OAAO+B,EAAI,CAAG,CACvK,SAASshgD,GAAW1v3C,GAA6B,GAAGA,EAAM,EAAG,MAAM,IAAI/sH,MAAM,kBAAoB+sH,GAAM,IAAIzzI,EAAE,GAAI,MAAMyzI,EAAKA,EAAKA,EAAI1xI,KAAKyK,OAAOinI,EAAI,GAAG,IAAKzzI,EAAIhB,OAAO4nB,cAAe6sH,EAAI,GAAG,GAAM,IAAMzzI,EAAG,OAAOA,CAAG,CAMvN,SAASq2iD,GAAY7S,GAEpB,IADA,IAAIhgiD,EAAI,EAAGH,EAAI,EACPvD,EAAI,EAAGA,EAAI0jiD,EAAKjkiD,SAAUO,EAAG,CACpC,IAAI6hB,EAAK6hhD,EAAKvrhD,WAAWnY,GACtB6hB,GAAM,IAAMA,GAAM,GAAIne,EAAI,GAAKA,GAAKme,EAAK,IACpCA,GAAM,IAAMA,GAAM,KAAIte,EAAI,GAAKA,GAAKse,EAAK,IAClD,CACA,MAAO,CAAE5hB,EAAGsD,EAAI,EAAGpE,EAAEuE,EAAI,EAC1B,CAEA,SAAS4ggD,GAAY38pC,GAGpB,IAFA,IAAIh0N,EAAMg0N,EAAK1nW,EAAI,EACfC,EAAE,GACAyzI,EAAKA,GAAMA,EAAI,GAAG,GAAI,EAAGzzI,EAAIhB,OAAO4nB,cAAe6sH,EAAI,GAAG,GAAM,IAAMzzI,EAC5E,OAAOA,GAAKynW,EAAKxoW,EAAI,EACtB,CACA,SAASgkgD,GAAahi4C,GACrB,IAAI+4O,EAAM/4O,EAAMvhI,QAAQ,KACxB,OAAW,GAARs6W,EAAkB,CAAEh6W,EAAGq2iD,GAAYp16C,GAAQ5iI,EAAGg4iD,GAAYp16C,IACtD,CAAEjhI,EAAGq2iD,GAAYp16C,EAAMhgI,MAAM,EAAG+4W,IAAO37W,EAAGg4iD,GAAYp16C,EAAMhgI,MAAM+4W,EAAM,IAChF,CAEA,SAASs8rC,GAAarliC,EAA0B/qgB,GAC/C,YAAiB,IAAPA,GAAoC,iBAAPA,EAE/BowiD,GAAarliC,EAAGjxgB,EAAGixgB,EAAG5ygB,IAGb,iBAAP4ygB,IAAiBA,EAAKmz/B,GAAY,IAC3B,iBAAPl+/C,IAAiBA,EAAKk+/C,GAAY,IAGrCnz/B,GAAM/qgB,EAAK+qgB,EAAKA,EAAK,IAAM/qgB,EACnC,CAEA,SAASqwiD,GAAkBt16C,GAC1B,IAAIzhI,EAAI,CAACQ,EAAE,CAACD,EAAE,EAAEd,EAAE,GAAGZ,EAAE,CAAC0B,EAAE,EAAEd,EAAE,IAC1B+6W,EAAM,EAAGl6W,EAAI,EAAG6hB,EAAK,EACrBo8G,EAAMkD,EAAM1hI,OAChB,IAAIy6W,EAAM,EAAGl6W,EAAIi+H,MACZp8G,EAAGs/G,EAAMhpH,WAAWnY,GAAG,IAAM,GAAK6hB,EAAK,MADpB7hB,EAEvBk6W,EAAM,GAAGA,EAAMr4V,EAIhB,IAFAniB,EAAEQ,EAAED,IAAMi6W,EAENA,EAAM,EAAGl6W,EAAIi+H,MACZp8G,EAAGs/G,EAAMhpH,WAAWnY,GAAG,IAAM,GAAK6hB,EAAK,KADpB7hB,EAEvBk6W,EAAM,GAAGA,EAAMr4V,EAIhB,GAFAniB,EAAEQ,EAAEf,IAAM+6W,EAEPl6W,IAAMi+H,GAAa,IAANp8G,EAAsC,OAA1BniB,EAAEnB,EAAE0B,EAAEP,EAAEQ,EAAED,EAAGP,EAAEnB,EAAEY,EAAEO,EAAEQ,EAAEf,EAAUO,EAG7D,MAFEM,EAEEk6W,EAAM,EAAGl6W,GAAKi+H,MACbp8G,EAAGs/G,EAAMhpH,WAAWnY,GAAG,IAAM,GAAK6hB,EAAK,MADnB7hB,EAExBk6W,EAAM,GAAGA,EAAMr4V,EAIhB,IAFAniB,EAAEnB,EAAE0B,IAAMi6W,EAENA,EAAM,EAAGl6W,GAAKi+H,MACbp8G,EAAGs/G,EAAMhpH,WAAWnY,GAAG,IAAM,GAAK6hB,EAAK,KADnB7hB,EAExBk6W,EAAM,GAAGA,EAAMr4V,EAGhB,OADAniB,EAAEnB,EAAEY,IAAM+6W,EACHx6W,CACR,CAQA,SAASg3iD,GAAY/usC,EAAetlW,EAAW3C,GAC9C,OAAW,MAARioW,GAA0B,MAAVA,EAAKnpW,GAAuB,KAAVmpW,EAAKnpW,EAAiB,QAC7C2uC,IAAXw6T,EAAKhlW,EAAwBglW,EAAKhlW,GACxB,KAAVglW,EAAKnpW,IAAampW,EAAK5iW,GAAKrF,GAAKA,EAAE88hD,SAAQ70rC,EAAK5iW,EAAIrF,EAAE88hD,QAC5C,KAAV70rC,EAAKnpW,EAAiBm4iD,GAAKhvsC,EAAKtlW,IAAMslW,EAAKtlW,EAV/C,SAA0BslW,EAAetlW,GACxC,IAAIiD,EAAe,KAAVqiW,EAAKnpW,GAAY6D,aAAauoB,KACvC,GAAa,MAAV+8U,EAAK5iW,EAAW,IAAM,OAAQ4iW,EAAKhlW,EAAIk3hD,GAAWlyrC,EAAK5iW,EAAGO,EAAIsniD,GAAQvqiD,GAAKA,EAAK,CAAE,MAAM9D,GAAK,CAChG,IAAM,OAAQopW,EAAKhlW,EAAIk3hD,IAAYlyrC,EAAKivsC,IAAI,CAAC,GAAG93zB,WAAWx5uB,EAAI,GAAK,GAAKA,EAAIsniD,GAAQvqiD,GAAKA,EAAK,CAAE,MAAM9D,GAAK,MAAO,GAAG8D,CAAG,CAC1H,CAO2Bw0iD,CAAiBlvsC,EAAnCx6T,MAAL9qC,EAA8CslW,EAAKtlW,EACxBA,GAC/B,CAEA,SAASy0iD,GAAkBv8yC,EAAqB9+M,GAC/C,IAAIh9C,EAAIg9C,GAAQA,EAAK8+M,MAAQ9+M,EAAK8+M,MAAQ,SACtCw8yC,EAAS,CAAC,EACd,OADiBA,EAAOt4iD,GAAK87P,EACtB,CAAEy8yC,WAAY,CAACv4iD,GAAIw4iD,OAAQF,EACnC,CAEA,SAASG,GAAcC,EAAoBvoiD,EAAc6sC,GACxD,IAAI/7C,EAAI+7C,GAAQ,CAAC,EACb27/C,EAAQD,EAAMt4iD,MAAMkS,QAAQomiD,GAAOz3iD,EAAE03iD,MAC7B,MAAT7gB,GAA0B,MAAT6gB,IAAeA,EAAQ7gB,GAC3C,IAAIhmzB,EAAmB4m0B,IAAQC,EAAQ,GAAe,CAAW,GAC7DC,EAAK,EAAGC,EAAK,EACjB,GAAG/m0B,GAAkB,MAAZ7wuB,EAAE06B,OAAgB,CAC1B,GAAsB,iBAAZ16B,EAAE06B,OAAoBi9gD,EAAK33iD,EAAE06B,WAClC,CACJ,IAAI44/B,EAA6C,iBAAZtzhC,EAAE06B,OAAqBm8gD,GAAY72iD,EAAE06B,QAAU16B,EAAE06B,OACtFi9gD,EAAKrkhB,EAAQ7zhC,EAAGm4iD,EAAKtkhB,EAAQ/yhC,CAC9B,CACIswuB,EAAG,UAASA,EAAG,QAAU,QAC9B,CACA,IAAIpvmB,EAAkB,CAAEjhI,EAAG,CAACD,EAAE,IAAUd,EAAE,KAAWZ,EAAG,CAAC0B,EAAE,EAAGd,EAAE,IAChE,GAAGoxuB,EAAG,QAAS,CACd,IAAI+lG,EAASmguB,GAAkBlm0B,EAAG,SAClCpvmB,EAAMjhI,EAAED,EAAIq20B,EAAOp20B,EAAED,EACrBkhI,EAAMjhI,EAAEf,EAAIm30B,EAAOp20B,EAAEf,EACrBgiI,EAAM5iI,EAAE0B,EAAIgC,KAAK8K,IAAIo0H,EAAM5iI,EAAE0B,EAAGq20B,EAAO/30B,EAAE0B,GACzCkhI,EAAM5iI,EAAEY,EAAI8C,KAAK8K,IAAIo0H,EAAM5iI,EAAEY,EAAGm30B,EAAO/30B,EAAEY,IAC/B,GAAPk4iD,IAAUl26C,EAAM5iI,EAAEY,EAAIk4iD,EAAK/guB,EAAO/30B,EAAEY,EAAI,EAC5C,CACA,IAAI,IAAIuE,EAAI,EAAGA,GAAKkL,EAAKnP,SAAUiE,EAClC,GAAIkL,EAAKlL,GAAT,CACA,IAAI7E,MAAMkS,QAAQnC,EAAKlL,IAAK,MAAM,IAAIkjB,MAAM,2CAC5C,IAAI,IAAIrjB,EAAI,EAAGA,GAAKqL,EAAKlL,GAAGjE,SAAU8D,EACrC,QAAyB,IAAfqL,EAAKlL,GAAGH,GAAlB,CACA,IAAIokW,EAAgB,CAAEtlW,EAAGuM,EAAKlL,GAAGH,IAC7Bg0iD,EAAMF,EAAK3ziD,EAAG8ziD,EAAMF,EAAK/ziD,EAK7B,GAJG49H,EAAMjhI,EAAEf,EAAIo4iD,IAAKp26C,EAAMjhI,EAAEf,EAAIo4iD,GAC7Bp26C,EAAMjhI,EAAED,EAAIu3iD,IAAKr26C,EAAMjhI,EAAED,EAAIu3iD,GAC7Br26C,EAAM5iI,EAAEY,EAAIo4iD,IAAKp26C,EAAM5iI,EAAEY,EAAIo4iD,GAC7Bp26C,EAAM5iI,EAAE0B,EAAIu3iD,IAAKr26C,EAAM5iI,EAAE0B,EAAIu3iD,IAC7B5oiD,EAAKlL,GAAGH,IAA4B,iBAAfqL,EAAKlL,GAAGH,IAAoB1E,MAAMkS,QAAQnC,EAAKlL,GAAGH,KAASqL,EAAKlL,GAAGH,aAAcqnB,KAGxG,GADG/rB,MAAMkS,QAAQ42V,EAAKtlW,KAAMslW,EAAK7lW,EAAI8M,EAAKlL,GAAGH,GAAG,GAAIokW,EAAKtlW,EAAIslW,EAAKtlW,EAAE,IACtD,OAAXslW,EAAKtlW,EACP,GAAGslW,EAAK7lW,EAAG6lW,EAAKnpW,EAAI,SACf,GAAGkB,EAAE+3iD,UAAa9vsC,EAAKnpW,EAAI,IAAKmpW,EAAKtlW,EAAI,MACzC,KAAI3C,EAAEg4iD,WAAY,SAClB/vsC,EAAKnpW,EAAI,GAAG,KAEQ,iBAAXmpW,EAAKtlW,EAAgBslW,EAAKnpW,EAAI,IACnB,kBAAXmpW,EAAKtlW,EAAiBslW,EAAKnpW,EAAI,IACtCmpW,EAAKtlW,aAAauoB,MACzB+8U,EAAK5iW,EAAIrF,EAAE88hD,QAAUrE,EAAU,IAC5Bz4hD,EAAEi4iD,WAAahwsC,EAAKnpW,EAAI,IAAKmpW,EAAKhlW,EAAIk3hD,GAAWlyrC,EAAK5iW,EAAG6niD,GAAQjlsC,EAAKtlW,MAClEslW,EAAKnpW,EAAI,IAAKmpW,EAAKtlW,EAAIuqiD,GAAQjlsC,EAAKtlW,GAAIslW,EAAKhlW,EAAIk3hD,GAAWlyrC,EAAK5iW,EAAG4iW,EAAKtlW,KAE5EslW,EAAKnpW,EAAI,SAhBiGmpW,EAAO/4V,EAAKlL,GAAGH,GAkB/H,GAAG6ziD,EACE7m0B,EAAGgn0B,KAAMhn0B,EAAGgn0B,GAAO,IACpBhn0B,EAAGgn0B,GAAKC,IAAQjn0B,EAAGgn0B,GAAKC,GAAKzyiD,IAAG4iW,EAAK5iW,EAAIwruB,EAAGgn0B,GAAKC,GAAKzyiD,GACzDwruB,EAAGgn0B,GAAKC,GAAO7vsC,MACT,CACN,IAAIiwsC,EAAWtzC,GAAY,CAAErkgD,EAAEu3iD,EAAIr4iD,EAAEo4iD,IAClChn0B,EAAGqn0B,IAAarn0B,EAAGqn0B,GAAU7yiD,IAAG4iW,EAAK5iW,EAAIwruB,EAAGqn0B,GAAU7yiD,GACzDwruB,EAAGqn0B,GAAYjwsC,CAChB,CAjC8C,CAH1B,CAwCtB,OADGxmO,EAAMjhI,EAAED,EAAI,MAAUswuB,EAAG,QAAUim0B,GAAar16C,IAC5CovmB,CACR,CACA,SAASsn0B,GAAajpiD,EAAc6sC,GAA+B,OAAOy7/C,GAAc,KAAMtoiD,EAAM6sC,EAAO,CAK3G,SAASq8/C,GAAez0iD,EAAc3D,GAGrC,OAFKA,IAAGA,EAAIojiD,GAAQ,IACpBpjiD,EAAEy/hD,YAAY,EAAG97hD,GACV3D,CACR,CAGA,SAASq4iD,GAAmBnpiD,GAC3B,IAAIopiD,EAAgBppiD,EAAK0whD,WAAW,GACpC,OAAyB,IAAlB0Y,EAAsB,GAAKppiD,EAAK0whD,WAAW0Y,EAAe,OAClE,CACA,SAASC,GAAmBrpiD,EAAiBlP,GAC5C,IAAIw4iD,GAAQ,EAGZ,OAH4B,MAALx4iD,IAAaw4iD,GAAQ,EAAMx4iD,EAAIojiD,GAAQ,EAAI,EAAIl0hD,EAAKnP,SAC3EC,EAAEy/hD,YAAY,EAAGvwhD,EAAKnP,QAClBmP,EAAKnP,OAAS,GAAGC,EAAEy/hD,YAAY,EAAGvwhD,EAAM,QACrCspiD,EAAQx4iD,EAAEyB,MAAM,EAAGzB,EAAEkC,GAAKlC,CAClC,CASA,SAASy4iD,GAAavpiD,GACrB,MAAO,CAAEwpiD,IAAKxpiD,EAAK0whD,WAAW,GAAI+Y,KAAMzpiD,EAAK0whD,WAAW,GACzD,CASA,SAASgZ,GAAc1piD,EAAMnP,GAC5B,IAAImmC,EAAQh3B,EAAKhN,EACb43C,EAAQ5qC,EAAK0whD,WAAW,GACxBvp9C,EAAMgi+C,GAAmBnpiD,GACzB2piD,EAAY,GACZxziD,EAAI,CAAGvG,EAAGu3E,EAAK/zE,EAAG+zE,GACtB,GAAoB,IAAP,EAARv8B,GAAkB,CAGtB,IADA,IAAIg//C,EAAe5piD,EAAK0whD,WAAW,GAC1Bt/hD,EAAI,EAAGA,GAAKw4iD,IAAgBx4iD,EAAGu4iD,EAAUt3iD,KAAKk3iD,GAAavpiD,IACpE7J,EAAE5F,EAAIo5iD,CACP,MACKxziD,EAAE5F,EAAI,CAAC,CAAEi5iD,IAAK,EAAGC,KAAM,IAK5B,OADAzpiD,EAAKhN,EAAIgkC,EAAQnmC,EACVsF,CACR,CASA,IAAI0ziD,GAAuBH,GAY3B,SAASI,GAAe9piD,GACvB,IAAI+kI,EAAM/kI,EAAK0whD,WAAW,GACtBqZ,EAAY/piD,EAAK0whD,WAAW,GAGhC,OAFAqZ,GAAa/piD,EAAK0whD,WAAW,IAAM,GACnC1whD,EAAKhN,IACE,CAAE3B,EAAG0zI,EAAKgl6C,UAAWA,EAC7B,CACA,SAASC,GAAejxsC,EAAcjoW,GAKrC,OAJS,MAALA,IAAWA,EAAIojiD,GAAQ,IAC3BpjiD,EAAEy/hD,aAAa,EAAGx3rC,EAAK1nW,GACvBP,EAAEy/hD,YAAY,EAAGx3rC,EAAKgxsC,WAAahxsC,EAAKznW,GACxCR,EAAEy/hD,YAAY,EAAG,GACVz/hD,CACR,CAGA,SAASm5iD,GAAoBjqiD,GAC5B,IAAI+piD,EAAY/piD,EAAK0whD,WAAW,GAGhC,OAFAqZ,GAAa/piD,EAAK0whD,WAAW,IAAK,GAClC1whD,EAAKhN,IACE,CAAE3B,GAAG,EAAG04iD,UAAWA,EAC3B,CACA,SAASG,GAAoBnxsC,EAAcjoW,GAI1C,OAHQ,MAALA,IAAWA,EAAIojiD,GAAQ,IAC1BpjiD,EAAEy/hD,YAAY,EAAGx3rC,EAAKgxsC,WAAahxsC,EAAKznW,GACxCR,EAAEy/hD,YAAY,EAAG,GACVz/hD,CACR,CAGA,IAAIq5iD,GAAqBhB,GACrBiB,GAAqBf,GAGzB,SAASgB,GAA2BrqiD,GACnC,IAAIopiD,EAAgBppiD,EAAK0whD,WAAW,GACpC,OAAyB,IAAlB0Y,GAAyC,aAAlBA,EAA+B,GAAKppiD,EAAK0whD,WAAW0Y,EAAe,OAClG,CACA,SAASkB,GAA2BtqiD,EAAiBlP,GACpD,IAAIw4iD,GAAQ,EAGZ,OAH4B,MAALx4iD,IAAaw4iD,GAAQ,EAAMx4iD,EAAIojiD,GAAQ,MAC9DpjiD,EAAEy/hD,YAAY,EAAGvwhD,EAAKnP,OAAS,EAAImP,EAAKnP,OAAS,YAC7CmP,EAAKnP,OAAS,GAAGC,EAAEy/hD,YAAY,EAAGvwhD,EAAM,QACrCspiD,EAAQx4iD,EAAEyB,MAAM,EAAGzB,EAAEkC,GAAKlC,CAClC,CAGA,IAAIy5iD,GAAyBpB,GAIzBqB,GAAcH,GACdI,GAAcH,GAIlB,SAASI,GAAe1qiD,GACvB,IAAIlM,EAAIkM,EAAKzN,MAAMyN,EAAKhN,EAAGgN,EAAKhN,EAAI,GAChC23iD,EAAgB,EAAP72iD,EAAE,GAAS82iD,EAAe,EAAP92iD,EAAE,GAClCkM,EAAKhN,GAAK,EACV,IAAI63iD,EAAc,IAATD,EAAa1F,GAAS,CAAC,EAAG,EAAG,EAAG,EAAW,IAAPpxiD,EAAE,GAAYA,EAAE,GAAIA,EAAE,GAAIA,EAAE,IAAK,GAAKi/hD,GAAcj/hD,EAAG,IAAM,EAC1G,OAAO62iD,EAASE,EAAK,IAAOA,CAC7B,CACA,SAASC,GAAe9qiD,EAAiBlP,GAC/B,MAALA,IAAWA,EAAIojiD,GAAQ,IAC3B,IAAIyW,EAAQ,EAAGC,EAAO,EAAGG,EAAc,IAAP/qiD,EAGhC,GAFKA,IAAgB,EAAPA,IAAeA,KAAU,GAAK,KAASA,EAAQ,GAAK,GAAQ4qiD,EAAO,EACvEG,IAAgB,EAAPA,IAAeA,KAAU,GAAK,KAASA,EAAQ,GAAK,KAAQH,EAAO,EAAGD,EAAQ,IAC7FC,EACC,MAAM,IAAI5yhD,MAAM,wBAA0BhY,GADrClP,EAAEy/hD,aAAa,IAAKoa,EAAQI,EAAO/qiD,IAAS,IAAM2qiD,EAAQ,GAErE,CAIA,SAASK,GAAUhriD,GAClB,IAAI+4V,EAAiB,CAAGznW,EAAG,CAAC,EAAG3B,EAAG,CAAC,GAKnC,OAJAopW,EAAKznW,EAAEf,EAAIyP,EAAK0whD,WAAW,GAC3B33rC,EAAKppW,EAAEY,EAAIyP,EAAK0whD,WAAW,GAC3B33rC,EAAKznW,EAAED,EAAI2O,EAAK0whD,WAAW,GAC3B33rC,EAAKppW,EAAE0B,EAAI2O,EAAK0whD,WAAW,GACpB33rC,CACR,CAWA,IAAIkysC,GAAqBD,GACrBE,GAXJ,SAAmB36iD,EAAaO,GAM/B,OALKA,IAAGA,EAAIojiD,GAAQ,KACpBpjiD,EAAEy/hD,YAAY,EAAGhgiD,EAAEe,EAAEf,GACrBO,EAAEy/hD,YAAY,EAAGhgiD,EAAEZ,EAAEY,GACrBO,EAAEy/hD,YAAY,EAAGhgiD,EAAEe,EAAED,GACrBP,EAAEy/hD,YAAY,EAAGhgiD,EAAEZ,EAAE0B,GACdP,CACR,EA4BA,SAASq6iD,GAAWnriD,GACnB,GAAGA,EAAKnP,OAASmP,EAAKhN,EAAI,EAAG,KAAM,4BACnC,OAAOgN,EAAK0whD,WAAW,EAAG,IAC3B,CACA,SAAS0a,GAAWpriD,EAAMlP,GAAK,OAAQA,GAAKojiD,GAAQ,IAAI3D,YAAY,EAAGvwhD,EAAM,IAAM,CAmCnF,SAASqriD,GAAett7C,EAAOjtH,GAE9B,GADKA,IAAGA,EAAIojiD,GAAQ,KACfn26C,GAASA,EAAMmgmC,KAAkD,OAA1CpttC,EAAEy/hD,YAAY,EAAG,GAAIz/hD,EAAEy/hD,YAAY,EAAG,GAAWz/hD,EAC1D,MAAfitH,EAAMvwG,OACT1c,EAAEy/hD,YAAY,EAAG,GACjBz/hD,EAAEy/hD,YAAY,EAAGxy6C,EAAMvwG,QACE,MAAfuwG,EAAMwzI,OAChBzgQ,EAAEy/hD,YAAY,EAAG,GACjBz/hD,EAAEy/hD,YAAY,EAAGxy6C,EAAMwzI,SAEvBzgQ,EAAEy/hD,YAAY,EAAG,GACjBz/hD,EAAEy/hD,YAAY,EAAG,IAElB,IAAI+a,EAAMvt7C,EAAM+tnB,MAAQ,EAIxB,GAHIw/zB,EAAM,EAAGA,GAAO,MACXA,EAAM,IAAGA,GAAO,OACzBx6iD,EAAEy/hD,YAAY,EAAG+a,GACZvt7C,EAAM6tP,KAAsB,MAAf7tP,EAAMwzI,MAIjB,CACN,IAAIq6G,EAAO7tP,EAAM6tP,KAAO,SACN,iBAAPA,IAAiBA,GAAO,SAAWA,EAAI72W,SAAS,KAAKxC,OAAO,IACvEzB,EAAEy/hD,YAAY,EAAGpqgD,SAASylV,EAAIr5W,MAAM,EAAG,GAAI,KAC3CzB,EAAEy/hD,YAAY,EAAGpqgD,SAASylV,EAAIr5W,MAAM,EAAG,GAAI,KAC3CzB,EAAEy/hD,YAAY,EAAGpqgD,SAASylV,EAAIr5W,MAAM,EAAG,GAAI,KAC3CzB,EAAEy/hD,YAAY,EAAG,IAClB,MAVCz/hD,EAAEy/hD,YAAY,EAAG,GACjBz/hD,EAAEy/hD,YAAY,EAAG,GACjBz/hD,EAAEy/hD,YAAY,EAAG,GASlB,OAAOz/hD,CACR,CAiCA,SAASy6iD,GAA8Bz6iD,EAAGiD,GAEzC,IACIH,EAAe9C,EAAE4/hD,WAAW,GAChC,OAAQ98hD,GACP,KAAK,EAAY,MAAO,GACxB,KAAK,WAAY,KAAK,WAAY,MAJrB,CAAE,EAAG,SAAU,EAAG,eAAgB,EAAG,MAAO,GAAI,eAIZ9C,EAAE4/hD,WAAW,KAAO,GAEtE,GAAI98hD,EAAI,IAAO,MAAM,IAAIokB,MAAM,0BAA4BpkB,EAAEmB,SAAS,KAEtE,OADAjE,EAAEkC,GAAK,EACAlC,EAAE4/hD,WAAW,EAAQ,GAAL38hD,EAAS,QAAU,SAC3C,CAQA,IAAIy3iD,GAAc,EACdC,GAAc,EAQdC,GAAc,GA2BdC,GAAc,GACdC,GAAc,GACdC,GAAc,CAACF,GAAWC,IAG1BE,GAAmB,CACf,EAAa,CAAEj8iD,EAAG,WAAYD,EAAG47iD,IACjC,EAAa,CAAE37iD,EAAG,WAAYD,EAAG+7iD,IACjC,EAAa,CAAE97iD,EAAG,qBAAsBD,EAAG+7iD,IAC3C,EAAa,CAAE97iD,EAAG,YAAaD,EAAG67iD,IAClC,EAAa,CAAE57iD,EAAG,YAAaD,EAAG67iD,IAClC,EAAa,CAAE57iD,EAAG,iBAAkBD,EAAG67iD,IACvC,EAAa,CAAE57iD,EAAG,aAAcD,EAAG67iD,IACnC,EAAa,CAAE57iD,EAAG,YAAaD,EAAG67iD,IAClC,EAAa,CAAE57iD,EAAG,cAAeD,EAAG67iD,IACpC,GAAa,CAAE57iD,EAAG,sBAAuBD,EAAG67iD,IAC5C,GAAa,CAAE57iD,EAAG,YAAaD,EA5CrB,IA6CV,GAAa,CAAEC,EAAG,eAAgBD,EArBlB,MAsBhB,GAAa,CAAEC,EAAG,gBAAiBD,EArBnB,MAsBhB,GAAa,CAAEC,EAAG,UAAWD,EAAG+7iD,IAChC,GAAa,CAAE97iD,EAAG,UAAWD,EAAG+7iD,IAChC,GAAa,CAAE97iD,EAAG,gBAAiBD,EAjDzB,IAkDV,GAAa,CAAEC,EAAG,iBAAkBD,EAAG67iD,IACvC,GAAa,CAAE57iD,EAAG,YAAaD,EAnDrB,IAoDV,GAAa,CAAEC,EAAG,oBAAqBD,EApD7B,IAqDV,GAAa,CAAEC,EAAG,aAAcD,EAAG67iD,GAAOn4iD,EAAG,WAC7C,GAAa,CAAEzD,EAAG,SAAUD,EAxClB,IAyCV,GAAa,CAAEC,EAAG,cAAeD,EAAG+7iD,IACpC,GAAa,CAAE97iD,EAAG,gBAAiBD,EAAG+7iD,IACtC,GAAa,CAAE97iD,EAAG,WAAYD,EAAG+7iD,IACjC,GAAa,CAAE97iD,EAAG,UAAWD,EAAG+7iD,IAChC,IAAa,CAAC,EAEd,WAAmB,CAAE97iD,EAAG,SAAUD,EAvDxB,IAwDV,WAAmB,CAAEC,EAAG,WAAYD,EAxD1B,IAyDV,WAAmB,CAAC,GAIxBm8iD,GAAe,CACX,EAAa,CAAEl8iD,EAAG,WAAYD,EAAG47iD,IACjC,EAAa,CAAE37iD,EAAG,QAASD,EAAG+7iD,IAC9B,EAAa,CAAE97iD,EAAG,UAAWD,EAAG+7iD,IAChC,EAAa,CAAE97iD,EAAG,SAAUD,EAAG+7iD,IAC/B,EAAa,CAAE97iD,EAAG,WAAYD,EAAG+7iD,IACjC,EAAa,CAAE97iD,EAAG,WAAYD,EAAG+7iD,IACjC,EAAa,CAAE97iD,EAAG,WAAYD,EAAG+7iD,IACjC,EAAa,CAAE97iD,EAAG,aAAcD,EAAG+7iD,IACnC,EAAa,CAAE97iD,EAAG,YAAaD,EAAG+7iD,IAClC,GAAa,CAAE97iD,EAAG,WAAYD,EAhEpB,IAiEV,GAAa,CAAEC,EAAG,cAAeD,EAjEvB,IAkEV,GAAa,CAAEC,EAAG,cAAeD,EAlEvB,IAmEV,GAAa,CAAEC,EAAG,eAAgBD,EAnExB,IAoEV,GAAa,CAAEC,EAAG,YAAaD,EAAG67iD,IAClC,GAAa,CAAE57iD,EAAG,YAAaD,EAAG67iD,IAClC,GAAa,CAAE57iD,EAAG,YAAaD,EAAG67iD,IAClC,GAAa,CAAE57iD,EAAG,YAAaD,EAhErB,IAiEV,GAAa,CAAEC,EAAG,cAAeD,EAAG+7iD,IACpC,GAAa,CAAE97iD,EAAG,cAAeD,EAAG67iD,IACpC,IAAa,CAAC,EAEd,WAAmB,CAAE57iD,EAAG,SAAUD,EAnFxB,IAoFV,WAAmB,CAAEC,EAAG,WAAYD,EApF1B,IAqFV,WAAmB,CAAC,GAIxBo8iD,GAAc,CACV,EAAe,KACf,EAAe,KACf,EAAe,GACf,EAAe,KACf,GAAe,KACf,GAAe,KACf,GAAe,KACf,GAAe,KACf,GAAe,KACf,GAAe,KACf,GAAe,KACf,GAAe,KACf,GAAe,KACf,GAAe,KACf,GAAe,KACf,GAAe,KACf,GAAe,KACf,GAAe,KACf,GAAe,KACf,GAAe,KACf,GAAe,KACf,GAAe,KACf,GAAe,KACf,GAAe,KACf,GAAe,KACf,GAAe,KACf,GAAe,KACf,GAAe,KACf,GAAe,KACf,GAAe,KACf,IAAe,KACf,IAAe,KACf,IAAe,KACf,IAAe,KACf,IAAe,KACf,IAAe,KACf,IAAe,KACf,IAAe,KACf,IAAe,KACf,IAAe,KACf,IAAe,KACf,IAAe,KACf,IAAe,KACf,IAAe,KACf,IAAe,KACf,IAAe,KACf,IAAe,KACf,IAAe,KACf,IAAe,KACf,MAAe,MAInBC,GAAiB,CACpB,KACA,QACA,aACA,WACA,YACA,iBACA,eACA,WACA,SACA,WACA,cACA,kBACA,gBACA,YACA,UACA,YACA,eACA,UACA,YAGD,SAASC,GAAOj90C,GAA6D,OAAOA,EAAIpvM,KAAI,SAASprB,GAAK,MAAO,CAAEA,GAAG,GAAI,IAAKA,GAAG,EAAG,IAAM,IAAFA,EAAQ,GAAI,CAIrJ,IA4FI03iD,GAAsBvN,GA5FEsN,GAAO,CAElC,EACA,SACA,SACA,MACA,IACA,SACA,SACA,MAGA,EACA,SACA,SACA,MACA,IACA,SACA,SACA,MAEA,QACA,MACA,IACA,QACA,QACA,MACA,SACA,QACA,SACA,SACA,SACA,SACA,QACA,SACA,MACA,SAEA,IACA,SACA,SACA,MACA,QACA,QACA,MACA,IACA,MACA,SACA,SACA,SACA,SACA,SACA,SACA,SAEA,QACA,QACA,SACA,SACA,SACA,SACA,QACA,QACA,MACA,QACA,MACA,QACA,SACA,SACA,QACA,QAGA,SACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,KAKGnE,GAAO,CACH,EAAa,SACb,EAAa,UACb,GAAa,UACb,GAAa,QACb,GAAa,SACb,GAAa,QACb,GAAa,OACb,GAAa,gBACb,IAAa,SAGjBqE,GAAQ,CACX,SAAiB,EACjB,UAAiB,EACjB,UAAiB,GACjB,QAAiB,GACjB,SAAiB,GACjB,QAAiB,GACjB,OAAiB,GACjB,gBAAiB,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CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,cAAeqD,EAAEoyjD,GACpC,IAAe,CAAEz1jD,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,MACn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,kBACL,IAAK,YACL,IAAK,iBACL,IAAK,cACL,IAAK,eACL,IAAK,eACL,IAAK,YACL,IAAK,QACL,IAAK,YACL,IAAK,UACL,IAAK,gBACL,IAAK,UACL,IAAK,aACL,IAAK,aACL,IAAK,gBACL,IAAK,YACL,IAAK,aACL,IAAK,UACL,IAAK,OACL,IAAK,cACL,IAAK,UACL,IAAK,YACL,IAAK,iBACL,IAAK,cACL,IAAK,oBACL,IAAK,gBACL,IAAK,eACL,IAAK,iBACL,IAAK,kBACL,IAAK,cACL,IAAK,qBACL,IAAK,SACL,IAAK,cACL,IAAK,WACL,IAAK,WACL,IAAK,eACL,IAAK,eACL,IAAK,iBACL,IAAK,eACL,IAAK,kBACL,IAAK,qBACL,IAAK,aACL,IAAK,YACL,IAAK,YACL,IAAK,gBACL,IAAK,cACL,IAAK,eACL,IAAK,kBACL,IAAK,oBACL,IAAK,kBACL,IAAK,iBACL,IAAK,UACL,IAAK,YACL,IAAK,YACL,IAAK,aACL,IAAK,cACL,IAAK,UACL,IAAK,SACL,IAAK,cACL,IAAK,UACL,IAAK,oBACL,IAAK,kBACL,IAAK,QACL,IAAK,aACL,IAAK,YACL,IAAK,cACL,IAAK,mBACL,IAAK,oBACL,IAAK,cACL,IAAK,cACL,IAAK,mBACL,IAAK,eACL,IAAK,aACL,IAAK,eACL,IAAK,gBACL,IAAK,aACL,IAAK,cACL,IAAK,cACL,IAAK,iBACL,IAAK,YACL,IAAK,cACL,IAAK,eACL,IAAK,aACL,IAAK,aACL,IAAK,gBACL,IAAK,eACL,IAAK,kBACL,IAAK,gBACL,IAAK,qBACL,IAAK,WACL,IAAK,OACL,IAAK,gBACL,IAAK,kBACL,IAAK,aACL,IAAK,aACL,IAAK,eACL,IAAK,iBACL,IAAK,cACL,IAAK,iBACL,IAAK,qBACL,IAAK,YACL,IAAK,oBACL,IAAK,WACL,IAAK,cACL,IAAK,iBACL,IAAK,WACL,IAAK,eACL,IAAK,gBACL,IAAK,gBACL,IAAK,mBACL,IAAK,iBACL,IAAK,eACL,IAAK,cACL,IAAK,YACL,IAAK,kBACL,IAAK,oBACL,IAAK,iBACL,IAAK,YACL,IAAK,aACL,IAAK,oBACL,IAAK,aACL,IAAK,eACL,IAAK,iBACL,IAAK,kBACL,IAAK,eACL,IAAK,gBACL,IAAK,gBACL,IAAK,qBACL,IAAK,mBACL,IAAK,qBACL,IAAK,yBACL,IAAK,cACL,IAAK,aACL,IAAK,mBACL,IAAK,sBACL,IAAK,eACL,IAAK,eACL,IAAK,gBACL,IAAK,cACL,IAAK,kBACL,IAAK,cACL,IAAK,gBACL,IAAK,kBACL,IAAK,2BACL,IAAK,eACL,IAAK,iBACL,IAAK,aACL,IAAK,iBACL,IAAK,YACL,IAAK,mBACL,IAAK,cACL,IAAK,wBACL,IAAK,kBACL,IAAK,qBACL,IAAK,kBACL,IAAK,kBACL,IAAK,kBACL,IAAK,qBACL,IAAK,aACL,IAAK,iBACL,IAAK,eACL,IAAK,mBACL,IAAK,aACL,IAAK,eACL,IAAK,kBACL,IAAK,gBACL,IAAK,gBACL,IAAK,kBACL,IAAK,kBACL,IAAK,gBACL,IAAK,iBACL,IAAK,uBACL,IAAK,0BACL,IAAK,iBACL,IAAK,eACL,IAAK,YACL,IAAK,cACL,IAAK,aACL,IAAK,iBACL,IAAK,kBACL,IAAK,kBACL,IAAK,gBACL,IAAK,kBACL,IAAK,gBACL,IAAK,gBACL,IAAK,qBACL,IAAK,cACL,IAAK,mBACL,IAAK,uBACL,IAAK,mBACL,IAAK,kBACL,IAAK,mBACL,IAAK,cACL,IAAK,iBACL,IAAK,kBACL,IAAK,eACL,IAAK,eACL,IAAK,oBACL,IAAK,sBACL,IAAK,sBACL,IAAK,mBACL,IAAK,qBACL,IAAK,qBACL,IAAK,gBACL,IAAK,aACL,IAAK,YACL,IAAK,cACL,IAAK,mBACL,IAAK,gBACL,IAAK,wBACL,IAAK,qBACL,IAAK,SACL,IAAK,kBACL,IAAK,gBACL,IAAK,kBACL,IAAK,gBACL,IAAK,gBACL,IAAK,mBACL,IAAK,mBACL,IAAK,oBACL,IAAK,eACL,IAAK,oBACL,IAAK,uBACL,IAAK,cACL,IAAK,WACL,IAAK,WACL,IAAK,aACL,IAAK,aACL,IAAK,eA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K,WACL,IAAK,YACL,IAAK,WACL,IAAK,OACL,IAAK,SACL,IAAK,OACL,IAAK,UACL,IAAK,QACL,IAAK,QACL,IAAK,YACL,IAAK,UACL,IAAK,aACL,IAAK,aACL,IAAK,WACL,IAAK,QACL,IAAK,UACL,IAAK,WACL,IAAK,QACL,IAAK,SACL,IAAK,OACL,IAAK,OACL,IAAK,UACL,IAAK,YACL,IAAK,MACL,IAAK,OACL,IAAK,OACL,IAAK,UACL,IAAK,UACL,IAAK,QACL,IAAK,MACL,IAAK,OACL,IAAK,UACL,IAAK,SACL,IAAK,WACL,IAAK,SACL,IAAK,aACL,IAAK,OACL,IAAK,OACL,IAAK,OACL,IAAK,QACL,IAAK,QACL,IAAK,QACL,IAAK,OACL,IAAK,gBACL,IAAK,WACL,IAAK,aACL,IAAK,cACL,IAAK,gBACL,IAAK,kBACL,IAAK,gBACL,IAAK,WACL,IAAK,OACL,IAAK,QACL,IAAK,aACL,IAAK,KACL,IAAK,QACL,IAAK,SACL,IAAK,YACL,IAAK,cACL,IAAK,iBACL,IAAK,OACL,IAAK,gBACL,IAAK,WACL,IAAK,cACL,IAAK,WACL,IAAK,iBACL,IAAK,aACL,IAAK,YACL,IAAK,eACL,IAAK,eACL,IAAK,cACL,IAAK,aACL,IAAK,cACL,IAAK,eACL,IAAK,SACL,IAAK,WACL,IAAK,UACL,IAAK,UACL,IAAK,YACL,IAAK,UACL,IAAK,SACL,IAAK,SACL,IAAK,aACL,IAAK,YACL,IAAK,OACL,IAAK,YACL,IAAK,QACL,IAAK,OACL,IAAK,SACL,IAAK,YACL,IAAK,QACL,IAAK,YACL,IAAK,WACL,IAAK,UACL,IAAK,cACL,IAAK,cACL,IAAK,SACL,IAAK,eACL,IAAK,WACL,IAAK,YACL,IAAK,UACL,IAAK,WACL,IAAK,cACL,IAAK,MACL,IAAK,SACL,IAAK,UACL,IAAK,QACL,IAAK,UACL,IAAK,UACL,IAAK,WACL,IAAK,WACL,IAAK,UACL,IAAK,SACL,IAAK,QACL,IAAK,WACL,IAAK,QACL,IAAK,YACL,IAAK,UACL,IAAK,MACL,IAAK,QACL,IAAK,QACL,IAAK,QACL,IAAK,OACL,IAAK,QACL,IAAK,UACL,IAAK,UACL,IAAK,QACL,IAAK,OACL,IAAK,OACL,IAAK,QACL,IAAK,QACL,IAAK,QACL,IAAK,WACL,IAAK,aACL,IAAK,cACL,IAAK,OACL,IAAK,WACL,IAAK,OACL,IAAK,gBACL,IAAK,YACL,IAAK,cACL,IAAK,QACL,IAAK,iBACL,IAAK,kBACL,IAAK,kBACL,IAAK,iBACL,IAAK,UACL,IAAK,UACL,IAAK,WACL,IAAK,QACL,IAAK,UACL,IAAK,aACL,IAAK,eACL,IAAK,oBACL,IAAK,QACL,IAAK,UACL,IAAK,aACL,IAAK,eACL,IAAK,QACL,IAAK,cACL,IAAK,cACL,IAAK,WACL,IAAK,eACL,IAAK,YACL,IAAK,WACL,IAAK,WACL,IAAK,OACL,IAAK,OACL,IAAK,UACL,IAAK,QACL,IAAK,SACL,IAAK,OACL,IAAK,WACL,IAAK,gBACL,IAAK,YACL,IAAK,kBACL,IAAK,eACL,IAAK,gBACL,IAAK,mBACL,IAAK,cACL,IAAK,gBACL,IAAK,cACL,IAAK,WACL,IAAK,MACL,IAAK,YACL,IAAK,aACL,IAAK,qBACL,IAAK,mBACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,QACL,IAAK,QACL,IAAK,UACL,IAAK,QACL,IAAK,SACL,IAAK,OACL,IAAK,SACL,IAAK,UACL,IAAK,QACL,IAAK,QACL,IAAK,QACL,IAAK,aACL,IAAK,cACL,IAAK,YACL,IAAK,SACL,IAAK,UACL,IAAK,QACL,IAAK,YACL,IAAK,YACL,IAAK,aACL,IAAK,SACL,IAAK,WACL,IAAK,QACL,IAAK,SACL,IAAK,SACL,IAAK,QACL,IAAK,SACL,IAAK,MACL,IAAK,OACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,OACL,IAAK,OACL,IAAK,WACL,IAAK,WACL,IAAK,UACL,IAAK,WACL,IAAK,OACL,IAAK,YACL,IAAK,YACL,IAAK,UACL,IAAK,aACL,IAAK,aACL,IAAK,QACL,IAAK,QACL,IAAK,WACL,IAAK,WACL,IAAK,UACL,IAAK,SACL,IAAK,WACL,IAAK,UACL,IAAK,QACL,IAAK,UACL,IAAK,WACL,IAAK,YACL,IAAK,WACL,IAAK,aACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,WACL,IAAK,YACL,IAAK,YACL,IAAK,YACL,IAAK,YACL,IAAK,YACL,IAAK,cACL,IAAK,UACL,IAAK,YACL,IAAK,WACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,WACL,IAAK,UACL,IAAK,cACL,IAAK,MACL,IAAK,cACL,IAAK,MACL,IAAK,aACL,IAAK,gBACL,IAAK,UACL,IAAK,eACL,IAAK,UACL,IAAK,WACL,IAAK,SACL,IAAK,YACL,IAAK,cAEHD,GAAW,CACb,EAAG,EACH,EAAG,EACH,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,I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","sources":["webpack://viooh-exchange-ui/./node_modules/@auth0/auth0-spa-js/dist/auth0-spa-js.production.esm.js","webpack://viooh-exchange-ui/./node_modules/@carto/react-basemaps/dist/index.js","webpack://viooh-exchange-ui/./node_modules/@carto/react-core/dist/index.js","webpack://viooh-exchange-ui/./node_modules/@carto/react-widgets/src/layers/EditableCartoGeoJsonLayer.js","webpack://viooh-exchange-ui/./node_modules/@carto/react-widgets/src/layers/useEventManager.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-core/esm/boot/init.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-core/esm/browser/addEventListener.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-core/esm/browser/pageMayExitObservable.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-core/esm/browser/runOnReadyState.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-core/esm/domain/configuration/intakeSites.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-core/esm/domain/connectivity/connectivity.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-core/esm/domain/error/error.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-core/esm/domain/error/error.types.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-core/esm/domain/telemetry/rawTelemetryEvent.types.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-core/esm/domain/telemetry/telemetry.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-core/esm/tools/boundedBuffer.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-core/esm/tools/catchUserErrors.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-core/esm/tools/display.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-core/esm/tools/experimentalFeatures.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-core/esm/tools/getGlobalObject.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-core/esm/tools/getZoneJsOriginalValue.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-core/esm/tools/instrumentMethod.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-core/esm/tools/mergeInto.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-core/esm/tools/monitor.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-core/esm/tools/observable.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-core/esm/tools/requestIdleCallback.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-core/esm/tools/sendToExtension.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-core/esm/tools/serialisation/jsonStringify.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-core/esm/tools/serialisation/sanitize.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-core/esm/tools/stackTrace/computeStackTrace.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-core/esm/tools/stackTrace/handlingStack.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-core/esm/tools/timer.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-core/esm/tools/utils/arrayUtils.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-core/esm/tools/utils/browserDetection.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-core/esm/tools/utils/byteUtils.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-core/esm/tools/utils/functionUtils.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-core/esm/tools/utils/numberUtils.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-core/esm/tools/utils/objectUtils.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-core/esm/tools/utils/polyfills.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-core/esm/tools/utils/responseUtils.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-core/esm/tools/utils/timeUtils.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-core/esm/tools/utils/typeUtils.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-core/esm/tools/utils/urlPolyfill.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-core/esm/transport/eventBridge.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-core/esm/transport/sendWithRetryStrategy.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-core/esm/transport/httpRequest.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-logs/node_modules/@datadog/browser-core/esm/tools/display.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-logs/node_modules/@datadog/browser-core/esm/tools/catchUserErrors.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-logs/node_modules/@datadog/browser-core/esm/tools/monitor.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-logs/node_modules/@datadog/browser-core/esm/tools/utils/polyfills.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-logs/node_modules/@datadog/browser-core/esm/tools/getGlobalObject.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-logs/node_modules/@datadog/browser-core/esm/tools/utils/byteUtils.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-logs/node_modules/@datadog/browser-core/esm/tools/getZoneJsOriginalValue.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-logs/node_modules/@datadog/browser-core/esm/tools/timer.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-logs/node_modules/@datadog/browser-core/esm/tools/utils/functionUtils.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-logs/node_modules/@datadog/browser-core/esm/tools/serialisation/jsonStringify.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-logs/node_modules/@datadog/browser-core/esm/tools/utils/objectUtils.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-logs/node_modules/@datadog/browser-core/esm/domain/context/customerDataTracker.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-logs/node_modules/@datadog/browser-core/esm/tools/utils/typeUtils.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-logs/node_modules/@datadog/browser-core/esm/tools/mergeInto.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-logs/node_modules/@datadog/browser-core/esm/tools/serialisation/sanitize.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-logs/node_modules/@datadog/browser-core/esm/tools/observable.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-logs/node_modules/@datadog/browser-core/esm/domain/context/contextManager.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-logs/node_modules/@datadog/browser-core/esm/domain/trackingConsent.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-logs/node_modules/@datadog/browser-core/esm/browser/addEventListener.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-logs/node_modules/@datadog/browser-core/esm/domain/context/storeContextManager.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-logs/node_modules/@datadog/browser-core/esm/tools/stackTrace/computeStackTrace.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-logs/node_modules/@datadog/browser-core/esm/tools/stackTrace/handlingStack.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-logs/node_modules/@datadog/browser-core/esm/domain/error/error.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-logs/node_modules/@datadog/browser-core/esm/tools/experimentalFeatures.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-logs/node_modules/@datadog/browser-core/esm/domain/configuration/intakeSites.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-logs/node_modules/@datadog/browser-core/esm/tools/utils/timeUtils.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-logs/node_modules/@datadog/browser-core/esm/tools/sendToExtension.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-logs/node_modules/@datadog/browser-core/esm/tools/utils/numberUtils.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-logs/node_modules/@datadog/browser-core/esm/domain/connectivity/connectivity.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-logs/node_modules/@datadog/browser-core/esm/tools/utils/arrayUtils.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-logs/node_modules/@datadog/browser-core/esm/tools/boundedBuffer.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-logs/node_modules/@datadog/browser-core/esm/domain/telemetry/rawTelemetryEvent.types.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-logs/node_modules/@datadog/browser-core/esm/domain/telemetry/telemetry.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-logs/node_modules/@datadog/browser-core/esm/domain/user/user.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-logs/node_modules/@datadog/browser-core/esm/boot/displayAlreadyInitializedError.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-logs/node_modules/@datadog/browser-core/esm/domain/error/error.types.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-logs/esm/domain/logger/isAuthorized.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-logs/esm/domain/createErrorFieldFromRawError.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-logs/esm/domain/logger.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-logs/node_modules/@datadog/browser-core/esm/transport/eventBridge.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-logs/node_modules/@datadog/browser-core/esm/tools/instrumentMethod.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-logs/node_modules/@datadog/browser-core/esm/tools/utils/urlPolyfill.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-logs/node_modules/@datadog/browser-core/esm/browser/fetchObservable.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-logs/node_modules/@datadog/browser-core/esm/tools/utils/stringUtils.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-logs/node_modules/@datadog/browser-core/esm/tools/utils/browserDetection.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-logs/node_modules/@datadog/browser-core/esm/browser/cookie.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-logs/node_modules/@datadog/browser-core/esm/domain/session/storeStrategies/sessionStoreStrategy.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-logs/node_modules/@datadog/browser-core/esm/domain/session/sessionConstants.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-logs/node_modules/@datadog/browser-core/esm/domain/session/sessionState.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-logs/node_modules/@datadog/browser-core/esm/domain/session/oldCookiesMigration.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-logs/node_modules/@datadog/browser-core/esm/domain/session/storeStrategies/sessionInCookie.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-logs/node_modules/@datadog/browser-core/esm/domain/session/storeStrategies/sessionInLocalStorage.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-logs/node_modules/@datadog/browser-core/esm/domain/session/sessionStoreOperations.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-logs/node_modules/@datadog/browser-core/esm/domain/session/sessionStore.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-logs/node_modules/@datadog/browser-core/esm/domain/configuration/endpointBuilder.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-logs/node_modules/@datadog/browser-core/esm/domain/configuration/tags.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-logs/node_modules/@datadog/browser-core/esm/domain/configuration/configuration.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-logs/node_modules/@datadog/browser-core/esm/domain/configuration/transportConfiguration.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-logs/node_modules/@datadog/browser-core/esm/domain/report/reportObservable.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-logs/esm/domain/configuration.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-logs/esm/boot/preStartLogs.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-logs/esm/boot/logsPublicApi.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-logs/node_modules/@datadog/browser-core/esm/browser/pageExitObservable.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-logs/node_modules/@datadog/browser-core/esm/domain/synthetics/syntheticsWorkerValues.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-logs/node_modules/@datadog/browser-core/esm/tools/valueHistory.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-logs/node_modules/@datadog/browser-core/esm/domain/session/sessionManager.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-logs/esm/domain/logsSessionManager.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-logs/esm/domain/contexts/rumInternalContext.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-logs/esm/domain/assembly.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-logs/node_modules/@datadog/browser-core/esm/domain/eventRateLimiter/createEventRateLimiter.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-logs/node_modules/@datadog/browser-core/esm/domain/console/consoleObservable.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-logs/esm/domain/console/consoleCollection.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-logs/node_modules/@datadog/browser-core/esm/browser/xhrObservable.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-logs/node_modules/@datadog/browser-core/esm/tools/utils/responseUtils.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-logs/esm/domain/networkError/networkErrorCollection.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-logs/node_modules/@datadog/browser-core/esm/tools/readBytesFromStream.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-logs/node_modules/@datadog/browser-core/esm/domain/error/trackRuntimeError.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-logs/node_modules/@datadog/browser-core/esm/tools/abstractLifeCycle.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-logs/esm/domain/logger/loggerCollection.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-logs/esm/domain/lifeCycle.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-logs/node_modules/@datadog/browser-core/esm/transport/batch.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-logs/node_modules/@datadog/browser-core/esm/transport/sendWithRetryStrategy.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-logs/node_modules/@datadog/browser-core/esm/transport/httpRequest.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-logs/node_modules/@datadog/browser-core/esm/transport/flushController.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-logs/node_modules/@datadog/browser-core/esm/transport/startBatchWithReplica.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-logs/node_modules/@datadog/browser-core/esm/tools/encoder.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-logs/esm/domain/logsTelemetry.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-logs/esm/entries/main.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-logs/esm/domain/contexts/commonContext.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-logs/node_modules/@datadog/browser-core/esm/boot/init.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-logs/esm/boot/startLogs.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-logs/esm/domain/reportError.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-logs/esm/domain/runtimeError/runtimeErrorCollection.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-logs/esm/domain/report/reportCollection.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-logs/esm/domain/contexts/internalContext.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-logs/esm/transport/startLogsBridge.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-logs/esm/transport/startLogsBatch.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-core/esm/domain/trackingConsent.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-core/esm/tools/encoder.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-core/esm/domain/context/contextConstants.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-core/esm/boot/displayAlreadyInitializedError.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-core/esm/tools/utils/stringUtils.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-rum-core/esm/domain/vital/vitalCollection.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-rum-core/esm/domain/plugins.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-core/esm/browser/fetchObservable.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-core/esm/browser/cookie.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-core/esm/domain/synthetics/syntheticsWorkerValues.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-core/esm/domain/session/storeStrategies/sessionStoreStrategy.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-core/esm/domain/session/sessionConstants.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-core/esm/domain/session/sessionStateValidation.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-core/esm/domain/session/sessionState.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-core/esm/domain/session/oldCookiesMigration.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-core/esm/domain/session/storeStrategies/sessionInCookie.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-core/esm/domain/session/storeStrategies/sessionInLocalStorage.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-core/esm/domain/session/sessionStoreOperations.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-core/esm/domain/session/sessionStore.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-core/esm/domain/configuration/endpointBuilder.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-core/esm/domain/configuration/tags.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-core/esm/domain/configuration/transportConfiguration.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-core/esm/domain/configuration/configuration.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-core/esm/tools/matchOption.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-rum-core/esm/domain/tracing/identifier.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-rum-core/esm/domain/tracing/sampler.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-rum-core/esm/domain/tracing/tracer.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-rum-core/esm/domain/configuration/configuration.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-rum-core/esm/domain/configuration/remoteConfiguration.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-core/esm/domain/context/storeContextManager.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-core/esm/domain/context/contextManager.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-core/esm/domain/context/contextUtils.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-rum-core/esm/domain/contexts/globalContext.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-rum-core/esm/domain/contexts/userContext.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-rum-core/esm/domain/contexts/accountContext.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-rum-core/esm/boot/preStartRum.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-rum-core/esm/boot/rumPublicApi.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-rum-core/esm/browser/domMutationObservable.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-rum-core/esm/domain/lifeCycle.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-core/esm/tools/abstractLifeCycle.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-core/esm/tools/valueHistory.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-rum-core/esm/domain/contexts/viewHistory.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-core/esm/browser/xhrObservable.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-rum-core/esm/domain/resource/resourceUtils.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-rum-core/esm/domain/requestCollection.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-core/esm/tools/readBytesFromStream.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-rum-core/esm/domain/discardNegativeDuration.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-rum-core/esm/domain/trackEventCounts.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-rum-core/esm/browser/performanceObservable.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-rum-core/esm/browser/firstInputPolyfill.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-rum-core/esm/domain/waitPageActivityEnd.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-rum-core/esm/browser/htmlDomUtils.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-rum-core/esm/domain/privacy.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-rum-core/esm/domain/action/getActionNameFromElement.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-rum-core/esm/domain/getSelectorFromElement.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-rum-core/esm/domain/action/clickChain.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-rum-core/esm/domain/action/listenActionEvents.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-rum-core/esm/domain/action/computeFrustration.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-rum-core/esm/domain/action/interactionSelectorCache.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-rum-core/esm/domain/action/trackClickActions.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-rum-core/esm/domain/action/actionCollection.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-core/esm/domain/console/consoleObservable.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-core/esm/domain/report/reportObservable.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-rum-core/esm/domain/error/errorCollection.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-rum-core/esm/domain/error/trackConsoleError.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-core/esm/domain/error/trackRuntimeError.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-rum-core/esm/domain/error/trackReportError.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-core/esm/tools/taskQueue.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-rum-core/esm/domain/resource/matchRequestResourceEntry.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-rum-core/esm/domain/tracing/getDocumentTraceId.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-rum-core/esm/browser/performanceUtils.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-rum-core/esm/domain/resource/retrieveInitialDocumentResourceTiming.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-rum-core/esm/domain/resource/resourceCollection.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-rum-core/esm/hooks.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-rum-core/esm/domain/view/viewMetrics/trackFirstContentfulPaint.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-rum-core/esm/domain/view/viewMetrics/trackLargestContentfulPaint.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-rum-core/esm/domain/view/viewMetrics/trackFirstHidden.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-rum-core/esm/domain/view/viewMetrics/trackInitialViewMetrics.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-rum-core/esm/domain/view/viewMetrics/trackNavigationTimings.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-rum-core/esm/domain/view/viewMetrics/trackFirstInput.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-rum-core/esm/domain/view/viewMetrics/getClsAttributionImpactedArea.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-rum-core/esm/domain/view/viewMetrics/trackCumulativeLayoutShift.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-rum-core/esm/domain/view/viewMetrics/interactionCountPolyfill.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-rum-core/esm/domain/view/viewMetrics/trackInteractionToNextPaint.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-rum-core/esm/browser/scroll.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-rum-core/esm/browser/viewportObservable.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-rum-core/esm/domain/view/viewMetrics/trackScrollMetrics.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-rum-core/esm/domain/view/viewMetrics/trackCommonViewMetrics.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-rum-core/esm/domain/view/viewMetrics/trackLoadingTime.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-rum-core/esm/domain/view/trackViews.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-rum-core/esm/domain/view/viewCollection.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-rum-core/esm/domain/view/trackViewEventCounts.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-core/esm/domain/session/sessionManager.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-rum-core/esm/domain/rumSessionManager.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-core/esm/transport/batch.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-core/esm/transport/flushController.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-rum-core/esm/transport/startRumBatch.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-core/esm/transport/startBatchWithReplica.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-rum-core/esm/domain/contexts/urlContexts.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-rum-core/esm/browser/locationChangeObservable.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-rum-core/esm/domain/contexts/featureFlagContext.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-rum-core/esm/domain/startCustomerDataTelemetry.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-rum-core/esm/domain/contexts/pageStateHistory.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-rum-core/esm/browser/cookieObservable.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-rum-core/esm/domain/contexts/ciVisibilityContext.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-core/esm/domain/eventRateLimiter/createEventRateLimiter.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-rum-core/esm/domain/limitModification.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-rum-core/esm/domain/assembly.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-rum-core/esm/boot/startRum.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-rum-core/esm/transport/startRumEventBridge.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-rum-core/esm/browser/windowOpenObservable.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-rum-core/esm/domain/contexts/sessionContext.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-rum-core/esm/domain/contexts/connectivityContext.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-rum-core/esm/domain/contexts/displayContext.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-rum-core/esm/domain/contexts/syntheticsContext.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-rum-core/esm/domain/longAnimationFrame/longAnimationFrameCollection.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-rum-core/esm/domain/longTask/longTaskCollection.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-rum-core/esm/domain/contexts/internalContext.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-rum-core/esm/domain/getSessionReplayUrl.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-rum/esm/domain/replayStats.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-rum/esm/domain/deflate/deflateEncoder.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-rum/esm/domain/scriptLoadingError.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-rum/esm/domain/deflate/deflateWorker.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-rum/esm/boot/isBrowserSupported.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-rum/esm/boot/postStartStrategy.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-rum/esm/domain/getSessionReplayLink.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-rum/esm/boot/lazyLoadRecorder.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-rum/esm/boot/lazyLoadProfiler.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-rum/esm/entries/main.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-rum/esm/boot/recorderApi.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-rum/esm/boot/preStartStrategy.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-rum/esm/boot/profilerApi.js","webpack://viooh-exchange-ui/./node_modules/@datadog/browser-rum/esm/domain/profiling/profilingSupported.js","webpack://viooh-exchange-ui/./node_modules/@deck.gl/carto/dist/esm/api/maps-api-common.js","webpack://viooh-exchange-ui/./node_modules/@deck.gl/core/dist/esm/controllers/controller.js","webpack://viooh-exchange-ui/./node_modules/@deck.gl/core/dist/esm/controllers/map-controller.js","webpack://viooh-exchange-ui/./node_modules/@deck.gl/core/dist/esm/controllers/transition-manager.js","webpack://viooh-exchange-ui/./node_modules/@deck.gl/core/dist/esm/controllers/view-state.js","webpack://viooh-exchange-ui/./node_modules/@deck.gl/core/dist/esm/debug/index.js","webpack://viooh-exchange-ui/./node_modules/@deck.gl/core/dist/esm/effects/lighting/ambient-light.js","webpack://viooh-exchange-ui/./node_modules/@deck.gl/core/dist/esm/effects/lighting/directional-light.js","webpack://viooh-exchange-ui/./node_modules/@deck.gl/core/dist/esm/passes/shadow-pass.js","webpack://viooh-exchange-ui/./node_modules/@deck.gl/core/dist/esm/effects/lighting/lighting-effect.js","webpack://viooh-exchange-ui/./node_modules/@deck.gl/core/dist/esm/effects/lighting/point-light.js","webpack://viooh-exchange-ui/./node_modules/@deck.gl/core/dist/esm/effects/lighting/camera-light.js","webpack://viooh-exchange-ui/./node_modules/@math.gl/sun/dist/esm/suncalc.js","webpack://viooh-exchange-ui/./node_modules/@deck.gl/core/dist/esm/effects/lighting/sun-light.js","webpack://viooh-exchange-ui/./node_modules/@deck.gl/core/dist/esm/passes/screen-pass.js","webpack://viooh-exchange-ui/./node_modules/@deck.gl/core/dist/esm/effects/post-process-effect.js","webpack://viooh-exchange-ui/./node_modules/@deck.gl/core/dist/esm/viewports/orbit-viewport.js","webpack://viooh-exchange-ui/./node_modules/@deck.gl/core/dist/esm/viewports/orthographic-viewport.js","webpack://viooh-exchange-ui/./node_modules/@deck.gl/core/dist/esm/viewports/first-person-viewport.js","webpack://viooh-exchange-ui/./node_modules/@deck.gl/core/dist/esm/controllers/first-person-controller.js","webpack://viooh-exchange-ui/./node_modules/@deck.gl/core/dist/esm/views/first-person-view.js","webpack://viooh-exchange-ui/./node_modules/@deck.gl/core/dist/esm/controllers/orbit-controller.js","webpack://viooh-exchange-ui/./node_modules/@deck.gl/core/dist/esm/views/orbit-view.js","webpack://viooh-exchange-ui/./node_modules/@deck.gl/core/dist/esm/controllers/orthographic-controller.js","webpack://viooh-exchange-ui/./node_modules/@deck.gl/core/dist/esm/views/orthographic-view.js","webpack://viooh-exchange-ui/./node_modules/@deck.gl/core/dist/esm/controllers/globe-controller.js","webpack://viooh-exchange-ui/./node_modules/@deck.gl/core/dist/esm/views/globe-view.js","webpack://viooh-exchange-ui/./node_modules/@deck.gl/core/dist/esm/transitions/fly-to-interpolator.js","webpack://viooh-exchange-ui/./node_modules/@deck.gl/core/dist/esm/lib/attribute/shader-attribute.js","webpack://viooh-exchange-ui/./node_modules/@deck.gl/core/dist/esm/lib/attribute/data-column.js","webpack://viooh-exchange-ui/./node_modules/@deck.gl/core/dist/esm/lib/attribute/gl-utils.js","webpack://viooh-exchange-ui/./node_modules/@deck.gl/core/dist/esm/utils/range.js","webpack://viooh-exchange-ui/./node_modules/@deck.gl/core/dist/esm/lib/attribute/attribute.js","webpack://viooh-exchange-ui/./node_modules/@deck.gl/core/dist/esm/lib/attribute/attribute-transition-manager.js","webpack://viooh-exchange-ui/./node_modules/@deck.gl/core/dist/esm/transitions/gpu-interpolation-transition.js","webpack://viooh-exchange-ui/./node_modules/@deck.gl/core/dist/esm/transitions/gpu-spring-transition.js","webpack://viooh-exchange-ui/./node_modules/@deck.gl/core/dist/esm/lib/attribute/attribute-manager.js","webpack://viooh-exchange-ui/./node_modules/@deck.gl/core/dist/esm/utils/array-utils.js","webpack://viooh-exchange-ui/./node_modules/@deck.gl/core/dist/esm/lib/attribute/attribute-transition-utils.js","webpack://viooh-exchange-ui/./node_modules/@deck.gl/core/dist/esm/lib/composite-layer.js","webpack://viooh-exchange-ui/./node_modules/@deck.gl/core/dist/esm/lib/constants.js","webpack://viooh-exchange-ui/./node_modules/@deck.gl/core/dist/esm/passes/draw-layers-pass.js","webpack://viooh-exchange-ui/./node_modules/@deck.gl/core/dist/esm/lib/deck-renderer.js","webpack://viooh-exchange-ui/./node_modules/@deck.gl/core/dist/esm/lib/view-manager.js","webpack://viooh-exchange-ui/./node_modules/@deck.gl/core/dist/esm/lib/effect-manager.js","webpack://viooh-exchange-ui/./node_modules/@deck.gl/core/dist/esm/lib/picking/query-object.js","webpack://viooh-exchange-ui/./node_modules/@deck.gl/core/dist/esm/lib/picking/pick-info.js","webpack://viooh-exchange-ui/./node_modules/@deck.gl/core/dist/esm/lib/deck-picker.js","webpack://viooh-exchange-ui/./node_modules/@deck.gl/core/dist/esm/lib/tooltip.js","webpack://viooh-exchange-ui/./node_modules/@deck.gl/core/dist/esm/lib/deck.js","webpack://viooh-exchange-ui/./node_modules/@deck.gl/core/dist/esm/utils/json-loader.js","webpack://viooh-exchange-ui/./node_modules/@deck.gl/core/dist/esm/lib/init.js","webpack://viooh-exchange-ui/./node_modules/@deck.gl/core/dist/esm/lib/layer-extension.js","webpack://viooh-exchange-ui/./node_modules/@deck.gl/core/dist/esm/lib/resource/resource.js","webpack://viooh-exchange-ui/./node_modules/@deck.gl/core/dist/esm/lib/resource/resource-manager.js","webpack://viooh-exchange-ui/./node_modules/@deck.gl/core/dist/esm/shaderlib/index.js","webpack://viooh-exchange-ui/./node_modules/@deck.gl/core/dist/esm/lib/layer-manager.js","webpack://viooh-exchange-ui/./node_modules/@deck.gl/core/dist/esm/transitions/cpu-interpolation-transition.js","webpack://viooh-exchange-ui/./node_modules/@deck.gl/core/dist/esm/transitions/cpu-spring-transition.js","webpack://viooh-exchange-ui/./node_modules/@deck.gl/core/dist/esm/lib/uniform-transition-manager.js","webpack://viooh-exchange-ui/./node_modules/@deck.gl/core/dist/esm/utils/texture.js","webpack://viooh-exchange-ui/./node_modules/@deck.gl/core/dist/esm/lifecycle/prop-types.js","webpack://viooh-exchange-ui/./node_modules/@deck.gl/core/dist/esm/lifecycle/create-props.js","webpack://viooh-exchange-ui/./node_modules/@deck.gl/core/dist/esm/lifecycle/component.js","webpack://viooh-exchange-ui/./node_modules/@deck.gl/core/dist/esm/lifecycle/component-state.js","webpack://viooh-exchange-ui/./node_modules/@deck.gl/core/dist/esm/lib/layer-state.js","webpack://viooh-exchange-ui/./node_modules/@deck.gl/core/dist/esm/lib/layer.js","webpack://viooh-exchange-ui/./node_modules/@deck.gl/core/dist/esm/lifecycle/constants.js","webpack://viooh-exchange-ui/./node_modules/@deck.gl/core/dist/esm/lifecycle/props.js","webpack://viooh-exchange-ui/./node_modules/@deck.gl/core/dist/esm/passes/layers-pass.js","webpack://viooh-exchange-ui/./node_modules/@deck.gl/core/dist/esm/passes/pass.js","webpack://viooh-exchange-ui/./node_modules/@deck.gl/core/dist/esm/passes/pick-layers-pass.js","webpack://viooh-exchange-ui/./node_modules/@deck.gl/core/dist/esm/shaderlib/picking/picking.js","webpack://viooh-exchange-ui/./node_modules/@deck.gl/core/dist/esm/shaderlib/project/project-functions.js","webpack://viooh-exchange-ui/./node_modules/@deck.gl/core/dist/esm/shaderlib/misc/geometry.js","webpack://viooh-exchange-ui/./node_modules/@deck.gl/core/dist/esm/shaderlib/project/project.glsl.js","webpack://viooh-exchange-ui/./node_modules/@deck.gl/core/dist/esm/shaderlib/project/project.js","webpack://viooh-exchange-ui/./node_modules/@deck.gl/core/dist/esm/shaderlib/project/viewport-uniforms.js","webpack://viooh-exchange-ui/./node_modules/@deck.gl/core/dist/esm/shaderlib/project32/project32.js","webpack://viooh-exchange-ui/./node_modules/@deck.gl/core/dist/esm/shaderlib/shadow/shadow.js","webpack://viooh-exchange-ui/./node_modules/@deck.gl/core/dist/esm/transitions/linear-interpolator.js","webpack://viooh-exchange-ui/./node_modules/@deck.gl/core/dist/esm/transitions/transition-interpolator.js","webpack://viooh-exchange-ui/./node_modules/@deck.gl/core/dist/esm/transitions/transition.js","webpack://viooh-exchange-ui/./node_modules/@deck.gl/core/dist/esm/utils/assert.js","webpack://viooh-exchange-ui/./node_modules/@deck.gl/core/dist/esm/utils/count.js","webpack://viooh-exchange-ui/./node_modules/@deck.gl/core/dist/esm/utils/deep-equal.js","webpack://viooh-exchange-ui/./node_modules/@deck.gl/core/dist/esm/utils/flatten.js","webpack://viooh-exchange-ui/./node_modules/@deck.gl/core/dist/esm/utils/iterable-utils.js","webpack://viooh-exchange-ui/./node_modules/@deck.gl/core/dist/esm/utils/log.js","webpack://viooh-exchange-ui/./node_modules/@deck.gl/core/dist/esm/utils/math-utils.js","webpack://viooh-exchange-ui/./node_modules/@deck.gl/core/dist/esm/utils/memoize.js","webpack://viooh-exchange-ui/./node_modules/@deck.gl/core/dist/esm/utils/shader.js","webpack://viooh-exchange-ui/./node_modules/@deck.gl/core/dist/esm/utils/tesselator.js","webpack://viooh-exchange-ui/./node_modules/@deck.gl/core/dist/esm/utils/typed-array-manager.js","webpack://viooh-exchange-ui/./node_modules/@deck.gl/core/dist/esm/viewports/globe-viewport.js","webpack://viooh-exchange-ui/./node_modules/@deck.gl/core/dist/esm/viewports/viewport.js","webpack://viooh-exchange-ui/./node_modules/@deck.gl/core/dist/esm/viewports/web-mercator-viewport.js","webpack://viooh-exchange-ui/./node_modules/@deck.gl/core/dist/esm/views/map-view.js","webpack://viooh-exchange-ui/./node_modules/@deck.gl/core/dist/esm/utils/positions.js","webpack://viooh-exchange-ui/./node_modules/@deck.gl/core/dist/esm/views/view.js","webpack://viooh-exchange-ui/./node_modules/@loaders.gl/wms/dist/esm/lib/sources/data-source.js","webpack://viooh-exchange-ui/./node_modules/@loaders.gl/wms/dist/esm/lib/sources/image-source.js","webpack://viooh-exchange-ui/./node_modules/@loaders.gl/wms/dist/esm/lib/services/generic/image-service.js","webpack://viooh-exchange-ui/./node_modules/@loaders.gl/xml/dist/esm/lib/xml-utils/uncapitalize.js","webpack://viooh-exchange-ui/./node_modules/@loaders.gl/xml/dist/esm/xml-loader.js","webpack://viooh-exchange-ui/./node_modules/@loaders.gl/xml/dist/esm/lib/parsers/parse-xml.js","webpack://viooh-exchange-ui/./node_modules/@loaders.gl/wms/dist/esm/lib/parsers/xml/parse-xml-helpers.js","webpack://viooh-exchange-ui/./node_modules/@loaders.gl/wms/dist/esm/lib/parsers/wms/parse-wms-capabilities.js","webpack://viooh-exchange-ui/./node_modules/@loaders.gl/wms/dist/esm/wms-capabilities-loader.js","webpack://viooh-exchange-ui/./node_modules/@loaders.gl/wms/dist/esm/lib/parsers/wms/parse-wms-features.js","webpack://viooh-exchange-ui/./node_modules/@loaders.gl/wms/dist/esm/wip/wms-feature-info-loader.js","webpack://viooh-exchange-ui/./node_modules/@loaders.gl/wms/dist/esm/lib/parsers/wms/parse-wms-layer-description.js","webpack://viooh-exchange-ui/./node_modules/@loaders.gl/wms/dist/esm/wip/wms-layer-description-loader.js","webpack://viooh-exchange-ui/./node_modules/@loaders.gl/wms/dist/esm/wms-error-loader.js","webpack://viooh-exchange-ui/./node_modules/@loaders.gl/wms/dist/esm/lib/parsers/wms/parse-wms-error.js","webpack://viooh-exchange-ui/./node_modules/@loaders.gl/wms/dist/esm/lib/services/ogc/wms-service.js","webpack://viooh-exchange-ui/./node_modules/@loaders.gl/loader-utils/dist/esm/lib/option-utils/merge-loader-options.js","webpack://viooh-exchange-ui/./node_modules/@loaders.gl/wms/dist/esm/lib/services/arcgis/arcgis-image-service.js","webpack://viooh-exchange-ui/./node_modules/@loaders.gl/wms/dist/esm/lib/create-image-source.js","webpack://viooh-exchange-ui/./node_modules/@deck.gl/geo-layers/dist/esm/wms-layer/utils.js","webpack://viooh-exchange-ui/./node_modules/@deck.gl/geo-layers/dist/esm/wms-layer/wms-layer.js","webpack://viooh-exchange-ui/./node_modules/@deck.gl/geo-layers/dist/esm/great-circle-layer/great-circle-layer.js","webpack://viooh-exchange-ui/./node_modules/@deck.gl/geo-layers/dist/esm/geo-cell-layer/GeoCellLayer.js","webpack://viooh-exchange-ui/./node_modules/@deck.gl/geo-layers/dist/esm/s2-layer/s2-geometry.js","webpack://viooh-exchange-ui/./node_modules/@deck.gl/geo-layers/dist/esm/s2-layer/s2-utils.js","webpack://viooh-exchange-ui/./node_modules/@deck.gl/geo-layers/dist/esm/s2-layer/s2-layer.js","webpack://viooh-exchange-ui/./node_modules/@deck.gl/geo-layers/dist/esm/quadkey-layer/quadkey-layer.js","webpack://viooh-exchange-ui/./node_modules/@deck.gl/geo-layers/dist/esm/quadkey-layer/quadkey-utils.js","webpack://viooh-exchange-ui/./node_modules/@loaders.gl/loader-utils/dist/esm/lib/request-utils/request-scheduler.js","webpack://viooh-exchange-ui/./node_modules/@deck.gl/geo-layers/dist/esm/tileset-2d/tile-2d-header.js","webpack://viooh-exchange-ui/./node_modules/@math.gl/culling/dist/esm/constants.js","webpack://viooh-exchange-ui/./node_modules/@math.gl/culling/dist/esm/lib/bounding-volumes/axis-aligned-bounding-box.js","webpack://viooh-exchange-ui/./node_modules/@math.gl/culling/dist/esm/lib/bounding-volumes/bounding-sphere.js","webpack://viooh-exchange-ui/./node_modules/@math.gl/culling/dist/esm/lib/bounding-volumes/oriented-bounding-box.js","webpack://viooh-exchange-ui/./node_modules/@math.gl/culling/dist/esm/lib/plane.js","webpack://viooh-exchange-ui/./node_modules/@math.gl/culling/dist/esm/lib/culling-volume.js","webpack://viooh-exchange-ui/./node_modules/@math.gl/culling/dist/esm/lib/perspective-off-center-frustum.js","webpack://viooh-exchange-ui/./node_modules/@math.gl/culling/dist/esm/lib/algorithms/bounding-sphere-from-points.js","webpack://viooh-exchange-ui/./node_modules/@math.gl/culling/dist/esm/lib/algorithms/compute-eigen-decomposition.js","webpack://viooh-exchange-ui/./node_modules/@math.gl/culling/dist/esm/lib/algorithms/bounding-box-from-points.js","webpack://viooh-exchange-ui/./node_modules/@deck.gl/geo-layers/dist/esm/tileset-2d/tile-2d-traversal.js","webpack://viooh-exchange-ui/./node_modules/@deck.gl/geo-layers/dist/esm/tileset-2d/utils.js","webpack://viooh-exchange-ui/./node_modules/@deck.gl/geo-layers/dist/esm/tileset-2d/memoize.js","webpack://viooh-exchange-ui/./node_modules/@deck.gl/geo-layers/dist/esm/tileset-2d/tileset-2d.js","webpack://viooh-exchange-ui/./node_modules/@deck.gl/geo-layers/dist/esm/tile-layer/tile-layer.js","webpack://viooh-exchange-ui/./node_modules/@deck.gl/geo-layers/dist/esm/trips-layer/trips-layer.js","webpack://viooh-exchange-ui/./node_modules/@deck.gl/geo-layers/dist/esm/h3-layers/h3-hexagon-layer.js","webpack://viooh-exchange-ui/./node_modules/@deck.gl/geo-layers/dist/esm/h3-layers/h3-cluster-layer.js","webpack://viooh-exchange-ui/./node_modules/@deck.gl/geo-layers/dist/esm/mesh-layer/mesh-layer.js","webpack://viooh-exchange-ui/./node_modules/@deck.gl/geo-layers/dist/esm/mesh-layer/mesh-layer-vertex.glsl.js","webpack://viooh-exchange-ui/./node_modules/@deck.gl/geo-layers/dist/esm/mesh-layer/mesh-layer-fragment.glsl.js","webpack://viooh-exchange-ui/./node_modules/@math.gl/geospatial/dist/esm/constants.js","webpack://viooh-exchange-ui/./node_modules/@math.gl/geospatial/dist/esm/type-utils.js","webpack://viooh-exchange-ui/./node_modules/@math.gl/geospatial/dist/esm/ellipsoid/helpers/scale-to-geodetic-surface.js","webpack://viooh-exchange-ui/./node_modules/@math.gl/geospatial/dist/esm/ellipsoid/helpers/ellipsoid-transform.js","webpack://viooh-exchange-ui/./node_modules/@math.gl/geospatial/dist/esm/ellipsoid/ellipsoid.js","webpack://viooh-exchange-ui/./node_modules/@loaders.gl/tiles/dist/esm/utils/doubly-linked-list-node.js","webpack://viooh-exchange-ui/./node_modules/@loaders.gl/tiles/dist/esm/utils/doubly-linked-list.js","webpack://viooh-exchange-ui/./node_modules/@loaders.gl/tiles/dist/esm/tileset/tileset-cache.js","webpack://viooh-exchange-ui/./node_modules/@loaders.gl/tiles/dist/esm/tileset/helpers/frame-state.js","webpack://viooh-exchange-ui/./node_modules/@loaders.gl/tiles/dist/esm/tileset/helpers/zoom.js","webpack://viooh-exchange-ui/./node_modules/@loaders.gl/tiles/dist/esm/constants.js","webpack://viooh-exchange-ui/./node_modules/@loaders.gl/tiles/dist/esm/tileset/helpers/bounding-volume.js","webpack://viooh-exchange-ui/./node_modules/@loaders.gl/tiles/dist/esm/tileset/helpers/tiles-3d-lod.js","webpack://viooh-exchange-ui/./node_modules/@loaders.gl/tiles/dist/esm/tileset/helpers/i3s-lod.js","webpack://viooh-exchange-ui/./node_modules/@loaders.gl/tiles/dist/esm/utils/managed-array.js","webpack://viooh-exchange-ui/./node_modules/@loaders.gl/tiles/dist/esm/tileset/tileset-traverser.js","webpack://viooh-exchange-ui/./node_modules/@loaders.gl/tiles/dist/esm/tileset/tile-3d.js","webpack://viooh-exchange-ui/./node_modules/@loaders.gl/tiles/dist/esm/tileset/helpers/3d-tiles-options.js","webpack://viooh-exchange-ui/./node_modules/@loaders.gl/tiles/dist/esm/tileset/format-3d-tiles/tileset-3d-traverser.js","webpack://viooh-exchange-ui/./node_modules/@loaders.gl/tiles/dist/esm/tileset/format-i3s/i3s-pending-tiles-register.js","webpack://viooh-exchange-ui/./node_modules/@loaders.gl/tiles/dist/esm/tileset/format-i3s/i3s-tile-manager.js","webpack://viooh-exchange-ui/./node_modules/@loaders.gl/tiles/dist/esm/tileset/format-i3s/i3s-tileset-traverser.js","webpack://viooh-exchange-ui/./node_modules/@loaders.gl/tiles/dist/esm/tileset/tileset-3d.js","webpack://viooh-exchange-ui/./node_modules/@loaders.gl/tiles/dist/esm/tileset/helpers/transform-utils.js","webpack://viooh-exchange-ui/./node_modules/@loaders.gl/3d-tiles/dist/esm/lib/utils/version.js","webpack://viooh-exchange-ui/./node_modules/@loaders.gl/3d-tiles/dist/esm/lib/constants.js","webpack://viooh-exchange-ui/./node_modules/@loaders.gl/3d-tiles/dist/esm/lib/parsers/helpers/parse-utils.js","webpack://viooh-exchange-ui/./node_modules/@loaders.gl/math/dist/esm/geometry/constants.js","webpack://viooh-exchange-ui/./node_modules/@loaders.gl/math/dist/esm/geometry/gl/gl-type.js","webpack://viooh-exchange-ui/./node_modules/@loaders.gl/3d-tiles/dist/esm/lib/classes/tile-3d-feature-table.js","webpack://viooh-exchange-ui/./node_modules/@loaders.gl/3d-tiles/dist/esm/lib/classes/helpers/tile-3d-accessor-utils.js","webpack://viooh-exchange-ui/./node_modules/@loaders.gl/3d-tiles/dist/esm/lib/classes/tile-3d-batch-table-hierarchy.js","webpack://viooh-exchange-ui/./node_modules/@loaders.gl/3d-tiles/dist/esm/lib/classes/tile-3d-batch-table.js","webpack://viooh-exchange-ui/./node_modules/@loaders.gl/3d-tiles/dist/esm/lib/parsers/helpers/parse-3d-tile-header.js","webpack://viooh-exchange-ui/./node_modules/@loaders.gl/3d-tiles/dist/esm/lib/parsers/helpers/parse-3d-tile-tables.js","webpack://viooh-exchange-ui/./node_modules/@loaders.gl/math/dist/esm/geometry/colors/rgb565.js","webpack://viooh-exchange-ui/./node_modules/@loaders.gl/3d-tiles/dist/esm/lib/parsers/helpers/normalize-3d-tile-colors.js","webpack://viooh-exchange-ui/./node_modules/@loaders.gl/math/dist/esm/geometry/compression/attribute-compression.js","webpack://viooh-exchange-ui/./node_modules/@loaders.gl/math/dist/esm/geometry/utils/assert.js","webpack://viooh-exchange-ui/./node_modules/@loaders.gl/3d-tiles/dist/esm/lib/parsers/helpers/normalize-3d-tile-normals.js","webpack://viooh-exchange-ui/./node_modules/@loaders.gl/3d-tiles/dist/esm/lib/parsers/parse-3d-tile-point-cloud.js","webpack://viooh-exchange-ui/./node_modules/@loaders.gl/3d-tiles/dist/esm/lib/parsers/helpers/normalize-3d-tile-positions.js","webpack://viooh-exchange-ui/./node_modules/@loaders.gl/3d-tiles/dist/esm/lib/parsers/helpers/parse-3d-tile-gltf-view.js","webpack://viooh-exchange-ui/./node_modules/@loaders.gl/3d-tiles/dist/esm/lib/parsers/parse-3d-tile.js","webpack://viooh-exchange-ui/./node_modules/@loaders.gl/3d-tiles/dist/esm/lib/parsers/parse-3d-tile-composite.js","webpack://viooh-exchange-ui/./node_modules/@loaders.gl/3d-tiles/dist/esm/lib/parsers/parse-3d-tile-batched-model.js","webpack://viooh-exchange-ui/./node_modules/@loaders.gl/3d-tiles/dist/esm/lib/parsers/parse-3d-tile-gltf.js","webpack://viooh-exchange-ui/./node_modules/@loaders.gl/3d-tiles/dist/esm/lib/parsers/parse-3d-tile-instanced-model.js","webpack://viooh-exchange-ui/./node_modules/@loaders.gl/3d-tiles/dist/esm/lib/parsers/helpers/parse-3d-tile-subtree.js","webpack://viooh-exchange-ui/./node_modules/@loaders.gl/3d-tiles/dist/esm/tile-3d-subtree-loader.js","webpack://viooh-exchange-ui/./node_modules/@loaders.gl/3d-tiles/node_modules/long/index.js","webpack://viooh-exchange-ui/./node_modules/@loaders.gl/3d-tiles/dist/esm/lib/utils/s2/s2-token-functions.js","webpack://viooh-exchange-ui/./node_modules/@loaders.gl/3d-tiles/dist/esm/lib/utils/s2/s2geometry/s2-geometry.js","webpack://viooh-exchange-ui/./node_modules/@loaders.gl/3d-tiles/dist/esm/lib/utils/s2/s2geometry/s2-cell-utils.js","webpack://viooh-exchange-ui/./node_modules/@loaders.gl/3d-tiles/dist/esm/lib/utils/s2/converters/s2-to-boundary.js","webpack://viooh-exchange-ui/./node_modules/@loaders.gl/3d-tiles/dist/esm/lib/utils/s2/converters/s2-to-region.js","webpack://viooh-exchange-ui/./node_modules/@loaders.gl/3d-tiles/dist/esm/lib/utils/obb/s2-corners-to-obb.js","webpack://viooh-exchange-ui/./node_modules/@loaders.gl/3d-tiles/dist/esm/lib/utils/s2/converters/s2-to-obb-points.js","webpack://viooh-exchange-ui/./node_modules/@loaders.gl/3d-tiles/dist/esm/lib/utils/s2/s2-geometry-functions.js","webpack://viooh-exchange-ui/./node_modules/@loaders.gl/3d-tiles/dist/esm/lib/parsers/helpers/parse-3d-implicit-tiles.js","webpack://viooh-exchange-ui/./node_modules/@loaders.gl/3d-tiles/dist/esm/lib/parsers/parse-3d-tile-header.js","webpack://viooh-exchange-ui/./node_modules/@loaders.gl/3d-tiles/dist/esm/tiles-3d-loader.js","webpack://viooh-exchange-ui/./node_modules/@deck.gl/geo-layers/dist/esm/tile-3d-layer/tile-3d-layer.js","webpack://viooh-exchange-ui/./node_modules/@loaders.gl/terrain/dist/esm/lib/utils/version.js","webpack://viooh-exchange-ui/./node_modules/@deck.gl/geo-layers/dist/esm/terrain-layer/terrain-layer.js","webpack://viooh-exchange-ui/./node_modules/@loaders.gl/terrain/dist/esm/terrain-loader.js","webpack://viooh-exchange-ui/./node_modules/@deck.gl/extensions/dist/esm/clip/clip-extension.js","webpack://viooh-exchange-ui/./node_modules/@loaders.gl/gis/dist/esm/lib/binary-to-geojson.js","webpack://viooh-exchange-ui/./node_modules/@deck.gl/geo-layers/dist/esm/mvt-layer/coordinate-transform.js","webpack://viooh-exchange-ui/./node_modules/@deck.gl/geo-layers/dist/esm/mvt-layer/find-index-binary.js","webpack://viooh-exchange-ui/./node_modules/@deck.gl/geo-layers/dist/esm/mvt-layer/mvt-layer.js","webpack://viooh-exchange-ui/./node_modules/@loaders.gl/mvt/dist/esm/mvt-loader.js","webpack://viooh-exchange-ui/./node_modules/@deck.gl/geo-layers/dist/esm/geohash-layer/geohash-utils.js","webpack://viooh-exchange-ui/./node_modules/@deck.gl/geo-layers/dist/esm/geohash-layer/geohash-layer.js","webpack://viooh-exchange-ui/./node_modules/@deck.gl/google-maps/dist/esm/utils.js","webpack://viooh-exchange-ui/./node_modules/@deck.gl/google-maps/dist/esm/google-maps-overlay.js","webpack://viooh-exchange-ui/./node_modules/@deck.gl/layers/dist/esm/arc-layer/arc-layer-vertex.glsl.js","webpack://viooh-exchange-ui/./node_modules/@deck.gl/layers/dist/esm/arc-layer/arc-layer.js","webpack://viooh-exchange-ui/./node_modules/@deck.gl/layers/dist/esm/arc-layer/arc-layer-fragment.glsl.js","webpack://viooh-exchange-ui/./node_modules/@deck.gl/layers/dist/esm/bitmap-layer/create-mesh.js","webpack://viooh-exchange-ui/./node_modules/@deck.gl/layers/dist/esm/bitmap-layer/bitmap-layer-vertex.js","webpack://viooh-exchange-ui/./node_modules/@deck.gl/layers/dist/esm/bitmap-layer/bitmap-layer-fragment.js","webpack://viooh-exchange-ui/./node_modules/@deck.gl/layers/dist/esm/bitmap-layer/bitmap-layer.js","webpack://viooh-exchange-ui/./node_modules/@deck.gl/layers/dist/esm/column-layer/column-geometry.js","webpack://viooh-exchange-ui/./node_modules/@deck.gl/layers/dist/esm/column-layer/column-layer-vertex.glsl.js","webpack://viooh-exchange-ui/./node_modules/@deck.gl/layers/dist/esm/column-layer/column-layer.js","webpack://viooh-exchange-ui/./node_modules/@deck.gl/layers/dist/esm/column-layer/column-layer-fragment.glsl.js","webpack://viooh-exchange-ui/./node_modules/@deck.gl/layers/dist/esm/geojson-layer/sub-layer-map.js","webpack://viooh-exchange-ui/./node_modules/@deck.gl/layers/dist/esm/geojson-layer/geojson.js","webpack://viooh-exchange-ui/./node_modules/@deck.gl/layers/dist/esm/geojson-layer/geojson-layer-props.js","webpack://viooh-exchange-ui/./node_modules/@deck.gl/layers/dist/esm/geojson-layer/geojson-layer.js","webpack://viooh-exchange-ui/./node_modules/@deck.gl/layers/dist/esm/geojson-layer/geojson-binary.js","webpack://viooh-exchange-ui/./node_modules/@deck.gl/layers/dist/esm/icon-layer/icon-manager.js","webpack://viooh-exchange-ui/./node_modules/@deck.gl/layers/dist/esm/icon-layer/icon-layer.js","webpack://viooh-exchange-ui/./node_modules/@deck.gl/layers/dist/esm/icon-layer/icon-layer-vertex.glsl.js","webpack://viooh-exchange-ui/./node_modules/@deck.gl/layers/dist/esm/icon-layer/icon-layer-fragment.glsl.js","webpack://viooh-exchange-ui/./node_modules/@deck.gl/layers/dist/esm/line-layer/line-layer-vertex.glsl.js","webpack://viooh-exchange-ui/./node_modules/@deck.gl/layers/dist/esm/line-layer/line-layer.js","webpack://viooh-exchange-ui/./node_modules/@deck.gl/layers/dist/esm/line-layer/line-layer-fragment.glsl.js","webpack://viooh-exchange-ui/./node_modules/@deck.gl/layers/dist/esm/column-layer/grid-cell-layer.js","webpack://viooh-exchange-ui/./node_modules/@deck.gl/layers/dist/esm/path-layer/path-tesselator.js","webpack://viooh-exchange-ui/./node_modules/@deck.gl/layers/dist/esm/path-layer/path.js","webpack://viooh-exchange-ui/./node_modules/@deck.gl/layers/dist/esm/path-layer/path-layer-vertex.glsl.js","webpack://viooh-exchange-ui/./node_modules/@deck.gl/layers/dist/esm/path-layer/path-layer.js","webpack://viooh-exchange-ui/./node_modules/@deck.gl/layers/dist/esm/path-layer/path-layer-fragment.glsl.js","webpack://viooh-exchange-ui/./node_modules/@deck.gl/layers/dist/esm/point-cloud-layer/point-cloud-layer-vertex.glsl.js","webpack://viooh-exchange-ui/./node_modules/@deck.gl/layers/dist/esm/point-cloud-layer/point-cloud-layer.js","webpack://viooh-exchange-ui/./node_modules/@deck.gl/layers/dist/esm/point-cloud-layer/point-cloud-layer-fragment.glsl.js","webpack://viooh-exchange-ui/./node_modules/@deck.gl/layers/dist/esm/polygon-layer/polygon-layer.js","webpack://viooh-exchange-ui/./node_modules/@deck.gl/layers/dist/esm/scatterplot-layer/scatterplot-layer-vertex.glsl.js","webpack://viooh-exchange-ui/./node_modules/@deck.gl/layers/dist/esm/scatterplot-layer/scatterplot-layer.js","webpack://viooh-exchange-ui/./node_modules/@deck.gl/layers/dist/esm/scatterplot-layer/scatterplot-layer-fragment.glsl.js","webpack://viooh-exchange-ui/./node_modules/@deck.gl/layers/dist/esm/solid-polygon-layer/polygon.js","webpack://viooh-exchange-ui/./node_modules/@deck.gl/layers/dist/esm/solid-polygon-layer/polygon-tesselator.js","webpack://viooh-exchange-ui/./node_modules/@deck.gl/layers/dist/esm/solid-polygon-layer/solid-polygon-layer-vertex-main.glsl.js","webpack://viooh-exchange-ui/./node_modules/@deck.gl/layers/dist/esm/solid-polygon-layer/solid-polygon-layer-vertex-top.glsl.js","webpack://viooh-exchange-ui/./node_modules/@deck.gl/layers/dist/esm/solid-polygon-layer/solid-polygon-layer-vertex-side.glsl.js","webpack://viooh-exchange-ui/./node_modules/@deck.gl/layers/dist/esm/solid-polygon-layer/solid-polygon-layer.js","webpack://viooh-exchange-ui/./node_modules/@deck.gl/layers/dist/esm/solid-polygon-layer/solid-polygon-layer-fragment.glsl.js","webpack://viooh-exchange-ui/./node_modules/@deck.gl/layers/dist/esm/text-layer/multi-icon-layer/multi-icon-layer-fragment.glsl.js","webpack://viooh-exchange-ui/./node_modules/@deck.gl/layers/dist/esm/text-layer/multi-icon-layer/multi-icon-layer.js","webpack://viooh-exchange-ui/./node_modules/@deck.gl/layers/dist/esm/text-layer/text-background-layer/text-background-layer-vertex.glsl.js","webpack://viooh-exchange-ui/./node_modules/@deck.gl/layers/dist/esm/text-layer/text-background-layer/text-background-layer.js","webpack://viooh-exchange-ui/./node_modules/@deck.gl/layers/dist/esm/text-layer/text-background-layer/text-background-layer-fragment.glsl.js","webpack://viooh-exchange-ui/./node_modules/@mapbox/tiny-sdf/index.js","webpack://viooh-exchange-ui/./node_modules/@deck.gl/layers/dist/esm/text-layer/utils.js","webpack://viooh-exchange-ui/./node_modules/@deck.gl/layers/dist/esm/text-layer/lru-cache.js","webpack://viooh-exchange-ui/./node_modules/@deck.gl/layers/dist/esm/text-layer/font-atlas-manager.js","webpack://viooh-exchange-ui/./node_modules/@deck.gl/layers/dist/esm/text-layer/text-layer.js","webpack://viooh-exchange-ui/./node_modules/@deck.gl/layers/dist/esm/utils.js","webpack://viooh-exchange-ui/./node_modules/@luma.gl/experimental/dist/esm/scenegraph/scenegraph-node.js","webpack://viooh-exchange-ui/./node_modules/@luma.gl/experimental/dist/esm/scenegraph/group-node.js","webpack://viooh-exchange-ui/./node_modules/@luma.gl/experimental/dist/esm/gltf/gltf-animator.js","webpack://viooh-exchange-ui/./node_modules/@luma.gl/experimental/dist/esm/scenegraph/model-node.js","webpack://viooh-exchange-ui/./node_modules/@luma.gl/experimental/dist/esm/gltf/create-gltf-model.js","webpack://viooh-exchange-ui/./node_modules/@luma.gl/experimental/dist/esm/gltf/gltf-instantiator.js","webpack://viooh-exchange-ui/./node_modules/@deck.gl/mesh-layers/dist/esm/scenegraph-layer/scenegraph-layer-vertex.glsl.js","webpack://viooh-exchange-ui/./node_modules/@deck.gl/mesh-layers/dist/esm/scenegraph-layer/scenegraph-layer.js","webpack://viooh-exchange-ui/./node_modules/@deck.gl/mesh-layers/dist/esm/scenegraph-layer/scenegraph-layer-fragment.glsl.js","webpack://viooh-exchange-ui/./node_modules/@luma.gl/experimental/dist/esm/gltf/create-gltf-objects.js","webpack://viooh-exchange-ui/./node_modules/@deck.gl/mesh-layers/dist/esm/scenegraph-layer/gltf-utils.js","webpack://viooh-exchange-ui/./node_modules/@deck.gl/mesh-layers/dist/esm/simple-mesh-layer/simple-mesh-layer.js","webpack://viooh-exchange-ui/./node_modules/@deck.gl/mesh-layers/dist/esm/simple-mesh-layer/simple-mesh-layer-vertex.glsl.js","webpack://viooh-exchange-ui/./node_modules/@deck.gl/mesh-layers/dist/esm/simple-mesh-layer/simple-mesh-layer-fragment.glsl.js","webpack://viooh-exchange-ui/./node_modules/@deck.gl/mesh-layers/dist/esm/utils/matrix.js","webpack://viooh-exchange-ui/./node_modules/@deck.gl/react/dist/esm/utils/use-isomorphic-layout-effect.js","webpack://viooh-exchange-ui/./node_modules/@deck.gl/react/dist/esm/utils/inherits-from.js","webpack://viooh-exchange-ui/./node_modules/@deck.gl/react/dist/esm/utils/evaluate-children.js","webpack://viooh-exchange-ui/./node_modules/@deck.gl/react/dist/esm/utils/extract-jsx-layers.js","webpack://viooh-exchange-ui/./node_modules/@deck.gl/react/dist/esm/utils/extract-styles.js","webpack://viooh-exchange-ui/./node_modules/@deck.gl/react/dist/esm/deckgl.js","webpack://viooh-exchange-ui/./node_modules/@deck.gl/react/dist/esm/utils/position-children-under-views.js","webpack://viooh-exchange-ui/./node_modules/@emotion/sheet/dist/emotion-sheet.browser.esm.js","webpack://viooh-exchange-ui/./node_modules/stylis/src/Utility.js","webpack://viooh-exchange-ui/./node_modules/stylis/src/Tokenizer.js","webpack://viooh-exchange-ui/./node_modules/stylis/src/Enum.js","webpack://viooh-exchange-ui/./node_modules/stylis/src/Serializer.js","webpack://viooh-exchange-ui/./node_modules/stylis/src/Parser.js","webpack://viooh-exchange-ui/./node_modules/@emotion/cache/dist/emotion-cache.browser.esm.js","webpack://viooh-exchange-ui/./node_modules/stylis/src/Middleware.js","webpack://viooh-exchange-ui/./node_modules/@emotion/memoize/dist/emotion-memoize.esm.js","webpack://viooh-exchange-ui/./node_modules/@emotion/react/dist/emotion-element-cbed451f.browser.esm.js","webpack://viooh-exchange-ui/./node_modules/@emotion/react/dist/emotion-react.browser.esm.js","webpack://viooh-exchange-ui/./node_modules/@emotion/unitless/dist/emotion-unitless.esm.js","webpack://viooh-exchange-ui/./node_modules/@emotion/serialize/dist/emotion-serialize.browser.esm.js","webpack://viooh-exchange-ui/./node_modules/@emotion/hash/dist/emotion-hash.esm.js","webpack://viooh-exchange-ui/./node_modules/@emotion/utils/dist/emotion-utils.browser.esm.js","webpack://viooh-exchange-ui/./node_modules/@loaders.gl/core/dist/esm/javascript-utils/is-type.js","webpack://viooh-exchange-ui/./node_modules/@loaders.gl/loader-utils/dist/esm/lib/path-utils/file-aliases.js","webpack://viooh-exchange-ui/./node_modules/@loaders.gl/core/dist/esm/lib/utils/mime-type-utils.js","webpack://viooh-exchange-ui/./node_modules/@loaders.gl/core/dist/esm/lib/utils/url-utils.js","webpack://viooh-exchange-ui/./node_modules/@loaders.gl/core/dist/esm/lib/utils/resource-utils.js","webpack://viooh-exchange-ui/./node_modules/@loaders.gl/core/dist/esm/lib/utils/response-utils.js","webpack://viooh-exchange-ui/./node_modules/@loaders.gl/core/dist/esm/lib/fetch/fetch-file.js","webpack://viooh-exchange-ui/./node_modules/@loaders.gl/core/dist/esm/lib/loader-utils/get-fetch-function.js","webpack://viooh-exchange-ui/./node_modules/@loaders.gl/worker-utils/dist/esm/lib/node/worker_threads-browser.js","webpack://viooh-exchange-ui/./node_modules/@loaders.gl/worker-utils/dist/esm/lib/worker-utils/get-loadable-worker-url.js","webpack://viooh-exchange-ui/./node_modules/@loaders.gl/worker-utils/dist/esm/lib/worker-utils/get-transfer-list.js","webpack://viooh-exchange-ui/./node_modules/@loaders.gl/worker-utils/dist/esm/lib/worker-farm/worker-thread.js","webpack://viooh-exchange-ui/./node_modules/@loaders.gl/worker-utils/dist/esm/lib/worker-farm/worker-job.js","webpack://viooh-exchange-ui/./node_modules/@loaders.gl/worker-utils/dist/esm/lib/worker-farm/worker-pool.js","webpack://viooh-exchange-ui/./node_modules/@loaders.gl/worker-utils/dist/esm/lib/worker-farm/worker-farm.js","webpack://viooh-exchange-ui/./node_modules/@loaders.gl/worker-utils/dist/esm/lib/worker-api/get-worker-url.js","webpack://viooh-exchange-ui/./node_modules/@loaders.gl/loader-utils/dist/esm/lib/worker-loader-utils/parse-with-worker.js","webpack://viooh-exchange-ui/./node_modules/@loaders.gl/core/dist/esm/iterators/make-iterator/make-string-iterator.js","webpack://viooh-exchange-ui/./node_modules/@loaders.gl/core/dist/esm/iterators/make-iterator/make-array-buffer-iterator.js","webpack://viooh-exchange-ui/./node_modules/@loaders.gl/core/dist/esm/iterators/make-iterator/make-blob-iterator.js","webpack://viooh-exchange-ui/./node_modules/@loaders.gl/loader-utils/dist/esm/lib/binary-utils/memory-conversion-utils.js","webpack://viooh-exchange-ui/./node_modules/@loaders.gl/core/dist/esm/iterators/make-iterator/make-stream-iterator.js","webpack://viooh-exchange-ui/./node_modules/@loaders.gl/core/dist/esm/lib/loader-utils/get-data.js","webpack://viooh-exchange-ui/./node_modules/@loaders.gl/core/dist/esm/iterators/make-iterator/make-iterator.js","webpack://viooh-exchange-ui/./node_modules/@loaders.gl/loader-utils/dist/esm/lib/iterators/async-iteration.js","webpack://viooh-exchange-ui/./node_modules/@loaders.gl/core/dist/esm/lib/utils/log.js","webpack://viooh-exchange-ui/./node_modules/@loaders.gl/core/dist/esm/lib/api/select-loader.js","webpack://viooh-exchange-ui/./node_modules/@loaders.gl/core/dist/esm/lib/api/parse.js","webpack://viooh-exchange-ui/./node_modules/@loaders.gl/core/dist/esm/lib/loader-utils/loader-context.js","webpack://viooh-exchange-ui/./node_modules/@loaders.gl/worker-utils/dist/esm/lib/worker-api/validate-worker-version.js","webpack://viooh-exchange-ui/./node_modules/@loaders.gl/core/dist/esm/lib/api/load.js","webpack://viooh-exchange-ui/./node_modules/@loaders.gl/core/dist/esm/lib/api/register-loaders.js","webpack://viooh-exchange-ui/./node_modules/@loaders.gl/core/dist/esm/lib/loader-utils/normalize-loader.js","webpack://viooh-exchange-ui/./node_modules/@loaders.gl/core/dist/esm/lib/loader-utils/loggers.js","webpack://viooh-exchange-ui/./node_modules/@loaders.gl/core/dist/esm/lib/loader-utils/option-defaults.js","webpack://viooh-exchange-ui/./node_modules/@loaders.gl/core/dist/esm/lib/loader-utils/option-utils.js","webpack://viooh-exchange-ui/./node_modules/@loaders.gl/draco/dist/esm/lib/utils/version.js","webpack://viooh-exchange-ui/./node_modules/@loaders.gl/draco/dist/esm/draco-loader.js","webpack://viooh-exchange-ui/./node_modules/@loaders.gl/schema/dist/esm/lib/schema/impl/field.js","webpack://viooh-exchange-ui/./node_modules/@loaders.gl/schema/dist/esm/lib/schema/impl/enum.js","webpack://viooh-exchange-ui/./node_modules/@loaders.gl/schema/dist/esm/lib/schema/impl/type.js","webpack://viooh-exchange-ui/./node_modules/@loaders.gl/schema/dist/esm/lib/schema/impl/schema.js","webpack://viooh-exchange-ui/./node_modules/@loaders.gl/schema/dist/esm/lib/utils/assert.js","webpack://viooh-exchange-ui/./node_modules/@loaders.gl/draco/dist/esm/lib/utils/get-draco-schema.js","webpack://viooh-exchange-ui/./node_modules/@loaders.gl/schema/dist/esm/category/mesh/deduce-mesh-schema.js","webpack://viooh-exchange-ui/./node_modules/@loaders.gl/schema/dist/esm/lib/arrow/arrow-like-type-utils.js","webpack://viooh-exchange-ui/./node_modules/@loaders.gl/draco/dist/esm/lib/draco-parser.js","webpack://viooh-exchange-ui/./node_modules/@loaders.gl/draco/dist/esm/lib/draco-module-loader.js","webpack://viooh-exchange-ui/./node_modules/@loaders.gl/draco/dist/esm/index.js","webpack://viooh-exchange-ui/./node_modules/@loaders.gl/textures/dist/esm/lib/parsers/basis-module-loader.js","webpack://viooh-exchange-ui/./node_modules/@loaders.gl/textures/dist/esm/lib/gl-extensions.js","webpack://viooh-exchange-ui/./node_modules/@loaders.gl/textures/dist/esm/lib/utils/texture-formats.js","webpack://viooh-exchange-ui/./node_modules/ktx-parse/dist/ktx-parse.modern.js","webpack://viooh-exchange-ui/./node_modules/@loaders.gl/textures/dist/esm/lib/parsers/parse-ktx.js","webpack://viooh-exchange-ui/./node_modules/@loaders.gl/textures/dist/esm/lib/parsers/parse-basis.js","webpack://viooh-exchange-ui/./node_modules/@loaders.gl/textures/dist/esm/basis-loader.js","webpack://viooh-exchange-ui/./node_modules/@loaders.gl/textures/dist/esm/lib/utils/version.js","webpack://viooh-exchange-ui/./node_modules/@loaders.gl/loader-utils/dist/esm/lib/binary-utils/get-first-characters.js","webpack://viooh-exchange-ui/./node_modules/@loaders.gl/gltf/dist/esm/lib/gltf-utils/resolve-url.js","webpack://viooh-exchange-ui/./node_modules/@loaders.gl/loader-utils/dist/esm/lib/binary-utils/memory-copy-utils.js","webpack://viooh-exchange-ui/./node_modules/@loaders.gl/gltf/dist/esm/lib/api/gltf-scenegraph.js","webpack://viooh-exchange-ui/./node_modules/@loaders.gl/gltf/dist/esm/meshopt/meshopt-decoder.js","webpack://viooh-exchange-ui/./node_modules/@loaders.gl/gltf/dist/esm/lib/extensions/EXT_meshopt_compression.js","webpack://viooh-exchange-ui/./node_modules/@loaders.gl/images/dist/esm/lib/category-api/image-format.js","webpack://viooh-exchange-ui/./node_modules/@loaders.gl/gltf/dist/esm/lib/extensions/EXT_texture_webp.js","webpack://viooh-exchange-ui/./node_modules/@loaders.gl/gltf/dist/esm/lib/extensions/KHR_texture_basisu.js","webpack://viooh-exchange-ui/./node_modules/@loaders.gl/gltf/dist/esm/lib/gltf-utils/gltf-attribute-utils.js","webpack://viooh-exchange-ui/./node_modules/@loaders.gl/gltf/dist/esm/lib/extensions/KHR_draco_mesh_compression.js","webpack://viooh-exchange-ui/./node_modules/@loaders.gl/gltf/dist/esm/lib/gltf-utils/gltf-constants.js","webpack://viooh-exchange-ui/./node_modules/@loaders.gl/gltf/dist/esm/lib/extensions/KHR_texture_transform.js","webpack://viooh-exchange-ui/./node_modules/@loaders.gl/gltf/dist/esm/lib/extensions/deprecated/KHR_lights_punctual.js","webpack://viooh-exchange-ui/./node_modules/@loaders.gl/gltf/dist/esm/lib/extensions/deprecated/KHR_materials_unlit.js","webpack://viooh-exchange-ui/./node_modules/@loaders.gl/gltf/dist/esm/lib/extensions/deprecated/KHR_techniques_webgl.js","webpack://viooh-exchange-ui/./node_modules/@loaders.gl/gltf/dist/esm/lib/extensions/deprecated/EXT_feature_metadata.js","webpack://viooh-exchange-ui/./node_modules/@loaders.gl/gltf/dist/esm/lib/api/gltf-extensions.js","webpack://viooh-exchange-ui/./node_modules/@loaders.gl/gltf/dist/esm/lib/extensions/KHR_binary_gltf.js","webpack://viooh-exchange-ui/./node_modules/@loaders.gl/gltf/dist/esm/lib/api/normalize-gltf-v1.js","webpack://viooh-exchange-ui/./node_modules/@loaders.gl/gltf/dist/esm/lib/api/post-process-gltf.js","webpack://viooh-exchange-ui/./node_modules/@loaders.gl/gltf/dist/esm/lib/parsers/parse-glb.js","webpack://viooh-exchange-ui/./node_modules/@loaders.gl/gltf/dist/esm/lib/parsers/parse-gltf.js","webpack://viooh-exchange-ui/./node_modules/@loaders.gl/loader-utils/dist/esm/lib/parser-utils/parse-json.js","webpack://viooh-exchange-ui/./node_modules/@loaders.gl/gltf/dist/esm/lib/gltf-utils/get-typed-array.js","webpack://viooh-exchange-ui/./node_modules/@loaders.gl/gltf/dist/esm/gltf-loader.js","webpack://viooh-exchange-ui/./node_modules/@loaders.gl/gltf/dist/esm/lib/utils/version.js","webpack://viooh-exchange-ui/./node_modules/@loaders.gl/gltf/dist/esm/lib/gltf-utils/gltf-utils.js","webpack://viooh-exchange-ui/./node_modules/@loaders.gl/gltf/dist/esm/lib/utils/assert.js","webpack://viooh-exchange-ui/./node_modules/@loaders.gl/images/dist/esm/lib/category-api/image-type.js","webpack://viooh-exchange-ui/./node_modules/@loaders.gl/images/dist/esm/lib/category-api/parsed-image-api.js","webpack://viooh-exchange-ui/./node_modules/@loaders.gl/images/dist/esm/lib/parsers/svg-utils.js","webpack://viooh-exchange-ui/./node_modules/@loaders.gl/images/dist/esm/lib/parsers/parse-to-image.js","webpack://viooh-exchange-ui/./node_modules/@loaders.gl/images/dist/esm/lib/parsers/parse-to-image-bitmap.js","webpack://viooh-exchange-ui/./node_modules/@loaders.gl/images/dist/esm/image-loader.js","webpack://viooh-exchange-ui/./node_modules/@loaders.gl/images/dist/esm/lib/utils/version.js","webpack://viooh-exchange-ui/./node_modules/@loaders.gl/images/dist/esm/lib/parsers/parse-image.js","webpack://viooh-exchange-ui/./node_modules/@loaders.gl/images/dist/esm/lib/parsers/parse-to-node-image.js","webpack://viooh-exchange-ui/./node_modules/@loaders.gl/images/dist/esm/lib/category-api/binary-image-api.js","webpack://viooh-exchange-ui/./node_modules/@loaders.gl/images/dist/esm/lib/category-api/parse-isobmff-binary.js","webpack://viooh-exchange-ui/./node_modules/@loaders.gl/loader-utils/dist/esm/lib/binary-utils/array-buffer-utils.js","webpack://viooh-exchange-ui/./node_modules/@loaders.gl/loader-utils/dist/esm/lib/env-utils/assert.js","webpack://viooh-exchange-ui/./node_modules/@loaders.gl/loader-utils/dist/esm/lib/env-utils/globals.js","webpack://viooh-exchange-ui/./node_modules/@loaders.gl/loader-utils/dist/esm/lib/path-utils/path.js","webpack://viooh-exchange-ui/./node_modules/@loaders.gl/schema/dist/esm/category/mesh/mesh-utils.js","webpack://viooh-exchange-ui/./node_modules/@loaders.gl/worker-utils/dist/esm/lib/env-utils/assert.js","webpack://viooh-exchange-ui/./node_modules/@loaders.gl/worker-utils/dist/esm/lib/env-utils/globals.js","webpack://viooh-exchange-ui/./node_modules/@loaders.gl/worker-utils/dist/esm/lib/node/require-utils.browser.js","webpack://viooh-exchange-ui/./node_modules/@loaders.gl/worker-utils/dist/esm/lib/library-utils/library-utils.js","webpack://viooh-exchange-ui/./node_modules/@luma.gl/constants/dist/esm/index.js","webpack://viooh-exchange-ui/./node_modules/@luma.gl/engine/dist/esm/geometries/truncated-cone-geometry.js","webpack://viooh-exchange-ui/./node_modules/@luma.gl/engine/dist/esm/geometries/cone-geometry.js","webpack://viooh-exchange-ui/./node_modules/@luma.gl/engine/dist/esm/geometries/cylinder-geometry.js","webpack://viooh-exchange-ui/./node_modules/@luma.gl/engine/dist/esm/geometries/ico-sphere-geometry.js","webpack://viooh-exchange-ui/./node_modules/@luma.gl/engine/dist/esm/geometries/plane-geometry.js","webpack://viooh-exchange-ui/./node_modules/@luma.gl/engine/dist/esm/geometry/geometry-utils.js","webpack://viooh-exchange-ui/./node_modules/@luma.gl/engine/dist/esm/geometries/sphere-geometry.js","webpack://viooh-exchange-ui/./node_modules/@luma.gl/shadertools/dist/esm/modules/fp64/fp64-utils.js","webpack://viooh-exchange-ui/./node_modules/@luma.gl/shadertools/dist/esm/modules/fp64/fp64-arithmetic.glsl.js","webpack://viooh-exchange-ui/./node_modules/@luma.gl/shadertools/dist/esm/modules/fp64/fp64.js","webpack://viooh-exchange-ui/./node_modules/@luma.gl/shadertools/dist/esm/modules/fp64/fp64-functions.glsl.js","webpack://viooh-exchange-ui/./node_modules/@luma.gl/shadertools/dist/esm/modules/project/project.js","webpack://viooh-exchange-ui/./node_modules/@luma.gl/shadertools/dist/esm/modules/dirlight/dirlight.js","webpack://viooh-exchange-ui/./node_modules/@luma.gl/engine/dist/esm/animation/timeline.js","webpack://viooh-exchange-ui/./node_modules/@luma.gl/engine/dist/esm/geometries/cube-geometry.js","webpack://viooh-exchange-ui/./node_modules/@luma.gl/engine/dist/esm/geometry/geometry.js","webpack://viooh-exchange-ui/./node_modules/@luma.gl/webgl/dist/esm/classes/query.js","webpack://viooh-exchange-ui/./node_modules/@luma.gl/engine/dist/esm/lib/animation-loop.js","webpack://viooh-exchange-ui/./node_modules/@luma.gl/webgl/dist/esm/webgl-utils/request-animation-frame.js","webpack://viooh-exchange-ui/./node_modules/@luma.gl/webgl/dist/esm/utils/array-utils-flat.js","webpack://viooh-exchange-ui/./node_modules/@luma.gl/webgl/dist/esm/classes/vertex-array-object.js","webpack://viooh-exchange-ui/./node_modules/@luma.gl/webgl/dist/esm/classes/vertex-array.js","webpack://viooh-exchange-ui/./node_modules/@luma.gl/webgl/dist/esm/utils/format-value.js","webpack://viooh-exchange-ui/./node_modules/@luma.gl/webgl/dist/esm/debug/debug-vertex-array.js","webpack://viooh-exchange-ui/./node_modules/@luma.gl/webgl/dist/esm/debug/debug-uniforms.js","webpack://viooh-exchange-ui/./node_modules/@luma.gl/webgl/dist/esm/debug/debug-program-configuration.js","webpack://viooh-exchange-ui/./node_modules/@luma.gl/engine/dist/esm/lib/model-utils.js","webpack://viooh-exchange-ui/./node_modules/@luma.gl/engine/dist/esm/lib/model.js","webpack://viooh-exchange-ui/./node_modules/@luma.gl/shadertools/dist/esm/lib/resolve-modules.js","webpack://viooh-exchange-ui/./node_modules/@luma.gl/shadertools/dist/esm/utils/webgl-info.js","webpack://viooh-exchange-ui/./node_modules/@luma.gl/shadertools/dist/esm/utils/is-old-ie.js","webpack://viooh-exchange-ui/./node_modules/@luma.gl/shadertools/dist/esm/lib/transpile-shader.js","webpack://viooh-exchange-ui/./node_modules/@luma.gl/shadertools/dist/esm/lib/assemble-shaders.js","webpack://viooh-exchange-ui/./node_modules/@luma.gl/shadertools/dist/esm/lib/platform-defines.js","webpack://viooh-exchange-ui/./node_modules/@luma.gl/engine/dist/esm/lib/program-manager.js","webpack://viooh-exchange-ui/./node_modules/@luma.gl/shadertools/dist/esm/utils/shader-utils.js","webpack://viooh-exchange-ui/./node_modules/@luma.gl/engine/dist/esm/transform/buffer-transform.js","webpack://viooh-exchange-ui/./node_modules/@luma.gl/webgl/dist/esm/glsl-utils/get-shader-version.js","webpack://viooh-exchange-ui/./node_modules/@luma.gl/shadertools/dist/esm/modules/transform/transform.js","webpack://viooh-exchange-ui/./node_modules/@luma.gl/engine/dist/esm/transform/transform-shader-utils.js","webpack://viooh-exchange-ui/./node_modules/@luma.gl/engine/dist/esm/transform/texture-transform.js","webpack://viooh-exchange-ui/./node_modules/@luma.gl/engine/dist/esm/transform/transform.js","webpack://viooh-exchange-ui/./node_modules/@luma.gl/engine/dist/esm/utils/clip-space.js","webpack://viooh-exchange-ui/./node_modules/@luma.gl/experimental/dist/esm/gltf/gltf-material-parser.js","webpack://viooh-exchange-ui/./node_modules/@luma.gl/gltools/dist/esm/utils/log.js","webpack://viooh-exchange-ui/./node_modules/@luma.gl/gltools/dist/esm/utils/assert.js","webpack://viooh-exchange-ui/./node_modules/@luma.gl/gltools/dist/esm/utils/webgl-checks.js","webpack://viooh-exchange-ui/./node_modules/@luma.gl/gltools/dist/esm/polyfill/polyfill-vertex-array-object.js","webpack://viooh-exchange-ui/./node_modules/@luma.gl/gltools/dist/esm/polyfill/get-parameter-polyfill.js","webpack://viooh-exchange-ui/./node_modules/@luma.gl/gltools/dist/esm/polyfill/polyfill-table.js","webpack://viooh-exchange-ui/./node_modules/@luma.gl/gltools/dist/esm/polyfill/polyfill-context.js","webpack://viooh-exchange-ui/./node_modules/@luma.gl/gltools/dist/esm/state-tracker/webgl-parameter-tables.js","webpack://viooh-exchange-ui/./node_modules/@luma.gl/gltools/dist/esm/utils/utils.js","webpack://viooh-exchange-ui/./node_modules/@luma.gl/gltools/dist/esm/state-tracker/track-context-state.js","webpack://viooh-exchange-ui/./node_modules/@luma.gl/gltools/dist/esm/state-tracker/unified-parameter-api.js","webpack://viooh-exchange-ui/./node_modules/@luma.gl/gltools/dist/esm/utils/device-pixels.js","webpack://viooh-exchange-ui/./node_modules/@luma.gl/gltools/dist/esm/context/context.js","webpack://viooh-exchange-ui/./node_modules/@luma.gl/shadertools/dist/esm/lib/constants.js","webpack://viooh-exchange-ui/./node_modules/@luma.gl/shadertools/dist/esm/lib/inject-shader.js","webpack://viooh-exchange-ui/./node_modules/@luma.gl/shadertools/dist/esm/modules/module-injectors.js","webpack://viooh-exchange-ui/./node_modules/@luma.gl/shadertools/dist/esm/lib/filters/prop-types.js","webpack://viooh-exchange-ui/./node_modules/@luma.gl/shadertools/dist/esm/lib/shader-module.js","webpack://viooh-exchange-ui/./node_modules/@luma.gl/shadertools/dist/esm/modules/fp32/fp32.js","webpack://viooh-exchange-ui/./node_modules/@luma.gl/shadertools/dist/esm/modules/lights/lights.glsl.js","webpack://viooh-exchange-ui/./node_modules/@luma.gl/shadertools/dist/esm/modules/lights/lights.js","webpack://viooh-exchange-ui/./node_modules/@luma.gl/shadertools/dist/esm/modules/pbr/pbr-vertex.glsl.js","webpack://viooh-exchange-ui/./node_modules/@luma.gl/shadertools/dist/esm/modules/pbr/pbr.js","webpack://viooh-exchange-ui/./node_modules/@luma.gl/shadertools/dist/esm/modules/pbr/pbr-fragment.glsl.js","webpack://viooh-exchange-ui/./node_modules/@luma.gl/shadertools/dist/esm/modules/phong-lighting/phong-lighting.glsl.js","webpack://viooh-exchange-ui/./node_modules/@luma.gl/shadertools/dist/esm/modules/phong-lighting/phong-lighting.js","webpack://viooh-exchange-ui/./node_modules/@luma.gl/shadertools/dist/esm/modules/picking/picking.js","webpack://viooh-exchange-ui/./node_modules/@luma.gl/shadertools/dist/esm/utils/assert.js","webpack://viooh-exchange-ui/./node_modules/@luma.gl/webgl/dist/esm/classes/accessor.js","webpack://viooh-exchange-ui/./node_modules/@luma.gl/webgl/dist/esm/classes/buffer.js","webpack://viooh-exchange-ui/./node_modules/@luma.gl/webgl/dist/esm/classes/clear.js","webpack://viooh-exchange-ui/./node_modules/@luma.gl/webgl/dist/esm/webgl-utils/format-utils.js","webpack://viooh-exchange-ui/./node_modules/@luma.gl/webgl/dist/esm/classes/copy-and-blit.js","webpack://viooh-exchange-ui/./node_modules/@luma.gl/webgl/dist/esm/classes/framebuffer.js","webpack://viooh-exchange-ui/./node_modules/@luma.gl/webgl/dist/esm/classes/uniforms.js","webpack://viooh-exchange-ui/./node_modules/@luma.gl/webgl/dist/esm/classes/program-configuration.js","webpack://viooh-exchange-ui/./node_modules/@luma.gl/webgl/dist/esm/classes/program.js","webpack://viooh-exchange-ui/./node_modules/@luma.gl/webgl/dist/esm/classes/renderbuffer-formats.js","webpack://viooh-exchange-ui/./node_modules/@luma.gl/webgl/dist/esm/classes/renderbuffer.js","webpack://viooh-exchange-ui/./node_modules/@luma.gl/webgl/dist/esm/classes/resource.js","webpack://viooh-exchange-ui/./node_modules/@luma.gl/webgl/dist/esm/glsl-utils/get-shader-name.js","webpack://viooh-exchange-ui/./node_modules/@luma.gl/webgl/dist/esm/glsl-utils/format-glsl-error.js","webpack://viooh-exchange-ui/./node_modules/@luma.gl/webgl/dist/esm/classes/shader.js","webpack://viooh-exchange-ui/./node_modules/@luma.gl/webgl/dist/esm/glsl-utils/get-shader-type-name.js","webpack://viooh-exchange-ui/./node_modules/@luma.gl/webgl/dist/esm/classes/texture-2d.js","webpack://viooh-exchange-ui/./node_modules/@luma.gl/webgl/dist/esm/utils/load-file.js","webpack://viooh-exchange-ui/./node_modules/@luma.gl/webgl/dist/esm/classes/texture-3d.js","webpack://viooh-exchange-ui/./node_modules/@luma.gl/webgl/dist/esm/classes/texture-cube.js","webpack://viooh-exchange-ui/./node_modules/@luma.gl/webgl/dist/esm/classes/texture-formats.js","webpack://viooh-exchange-ui/./node_modules/@luma.gl/webgl/dist/esm/classes/texture.js","webpack://viooh-exchange-ui/./node_modules/@luma.gl/webgl/dist/esm/classes/transform-feedback.js","webpack://viooh-exchange-ui/./node_modules/@luma.gl/webgl/dist/esm/features/features.js","webpack://viooh-exchange-ui/./node_modules/@luma.gl/webgl/dist/esm/features/webgl-features-table.js","webpack://viooh-exchange-ui/./node_modules/@luma.gl/webgl/dist/esm/init.js","webpack://viooh-exchange-ui/./node_modules/@luma.gl/webgl/dist/esm/utils/assert.js","webpack://viooh-exchange-ui/./node_modules/@luma.gl/webgl/dist/esm/utils/check-props.js","webpack://viooh-exchange-ui/./node_modules/@luma.gl/webgl/dist/esm/utils/stub-methods.js","webpack://viooh-exchange-ui/./node_modules/@luma.gl/webgl/dist/esm/utils/utils.js","webpack://viooh-exchange-ui/./node_modules/@luma.gl/webgl/dist/esm/webgl-utils/attribute-utils.js","webpack://viooh-exchange-ui/./node_modules/@luma.gl/webgl/dist/esm/webgl-utils/constants-to-keys.js","webpack://viooh-exchange-ui/./node_modules/@luma.gl/webgl/dist/esm/webgl-utils/texture-utils.js","webpack://viooh-exchange-ui/./node_modules/@luma.gl/webgl/dist/esm/webgl-utils/typed-array-utils.js","webpack://viooh-exchange-ui/./node_modules/@mapbox/tile-cover/index.js","webpack://viooh-exchange-ui/./node_modules/@math.gl/core/dist/esm/classes/base/math-array.js","webpack://viooh-exchange-ui/./node_modules/@math.gl/core/dist/esm/classes/base/matrix.js","webpack://viooh-exchange-ui/./node_modules/@math.gl/core/dist/esm/classes/base/vector.js","webpack://viooh-exchange-ui/./node_modules/@math.gl/core/dist/esm/classes/matrix3.js","webpack://viooh-exchange-ui/./node_modules/@math.gl/core/dist/esm/classes/matrix4.js","webpack://viooh-exchange-ui/./node_modules/gl-matrix/esm/quat.js","webpack://viooh-exchange-ui/./node_modules/@math.gl/core/dist/esm/classes/quaternion.js","webpack://viooh-exchange-ui/./node_modules/@math.gl/core/dist/esm/classes/spherical-coordinates.js","webpack://viooh-exchange-ui/./node_modules/@math.gl/core/dist/esm/classes/vector2.js","webpack://viooh-exchange-ui/./node_modules/@math.gl/core/dist/esm/classes/vector3.js","webpack://viooh-exchange-ui/./node_modules/@math.gl/core/dist/esm/classes/vector4.js","webpack://viooh-exchange-ui/./node_modules/@math.gl/core/dist/esm/lib/assert.js","webpack://viooh-exchange-ui/./node_modules/@math.gl/core/dist/esm/lib/common.js","webpack://viooh-exchange-ui/./node_modules/@math.gl/core/dist/esm/lib/gl-matrix-extras.js","webpack://viooh-exchange-ui/./node_modules/@math.gl/core/dist/esm/lib/math-utils.js","webpack://viooh-exchange-ui/./node_modules/@math.gl/core/dist/esm/lib/validators.js","webpack://viooh-exchange-ui/./node_modules/@math.gl/polygon/dist/esm/polygon-utils.js","webpack://viooh-exchange-ui/./node_modules/@math.gl/polygon/dist/esm/earcut.js","webpack://viooh-exchange-ui/./node_modules/@math.gl/polygon/dist/esm/lineclip.js","webpack://viooh-exchange-ui/./node_modules/@math.gl/polygon/dist/esm/utils.js","webpack://viooh-exchange-ui/./node_modules/@math.gl/polygon/dist/esm/cut-by-grid.js","webpack://viooh-exchange-ui/./node_modules/@math.gl/polygon/dist/esm/cut-by-mercator-bounds.js","webpack://viooh-exchange-ui/./node_modules/@math.gl/web-mercator/dist/esm/math-utils.js","webpack://viooh-exchange-ui/./node_modules/@math.gl/web-mercator/dist/esm/assert.js","webpack://viooh-exchange-ui/./node_modules/@math.gl/web-mercator/dist/esm/web-mercator-utils.js","webpack://viooh-exchange-ui/./node_modules/@math.gl/web-mercator/dist/esm/fit-bounds.js","webpack://viooh-exchange-ui/./node_modules/@math.gl/web-mercator/dist/esm/get-bounds.js","webpack://viooh-exchange-ui/./node_modules/@math.gl/web-mercator/dist/esm/web-mercator-viewport.js","webpack://viooh-exchange-ui/./node_modules/@math.gl/web-mercator/dist/esm/normalize-viewport-props.js","webpack://viooh-exchange-ui/./node_modules/@math.gl/web-mercator/dist/esm/fly-to-viewport.js","webpack://viooh-exchange-ui/./node_modules/@mui/material/colors/blue.js","webpack://viooh-exchange-ui/./node_modules/@mui/material/colors/common.js","webpack://viooh-exchange-ui/./node_modules/@mui/material/colors/green.js","webpack://viooh-exchange-ui/./node_modules/@mui/material/colors/grey.js","webpack://viooh-exchange-ui/./node_modules/@mui/material/colors/lightBlue.js","webpack://viooh-exchange-ui/./node_modules/@mui/material/colors/orange.js","webpack://viooh-exchange-ui/./node_modules/@mui/material/colors/purple.js","webpack://viooh-exchange-ui/./node_modules/@mui/material/colors/red.js","webpack://viooh-exchange-ui/./node_modules/@mui/material/styles/createMixins.js","webpack://viooh-exchange-ui/./node_modules/@mui/material/styles/createPalette.js","webpack://viooh-exchange-ui/./node_modules/@mui/material/styles/shadows.js","webpack://viooh-exchange-ui/./node_modules/@mui/material/styles/zIndex.js","webpack://viooh-exchange-ui/./node_modules/@mui/material/styles/createTheme.js","webpack://viooh-exchange-ui/./node_modules/@mui/material/styles/createTransitions.js","webpack://viooh-exchange-ui/./node_modules/@mui/material/styles/createTypography.js","webpack://viooh-exchange-ui/./node_modules/@mui/material/styles/defaultTheme.js","webpack://viooh-exchange-ui/./node_modules/@mui/material/styles/identifier.js","webpack://viooh-exchange-ui/./node_modules/@mui/material/styles/useTheme.js","webpack://viooh-exchange-ui/./node_modules/@mui/system/esm/borders.js","webpack://viooh-exchange-ui/./node_modules/@mui/system/esm/breakpoints.js","webpack://viooh-exchange-ui/./node_modules/@mui/system/esm/colorManipulator.js","webpack://viooh-exchange-ui/./node_modules/@mui/system/esm/compose.js","webpack://viooh-exchange-ui/./node_modules/@mui/system/esm/createTheme/createBreakpoints.js","webpack://viooh-exchange-ui/./node_modules/@mui/system/esm/createTheme/createSpacing.js","webpack://viooh-exchange-ui/./node_modules/@mui/system/esm/createTheme/createTheme.js","webpack://viooh-exchange-ui/./node_modules/@mui/system/esm/createTheme/shape.js","webpack://viooh-exchange-ui/./node_modules/@mui/system/esm/cssGrid.js","webpack://viooh-exchange-ui/./node_modules/@mui/system/esm/merge.js","webpack://viooh-exchange-ui/./node_modules/@mui/system/esm/palette.js","webpack://viooh-exchange-ui/./node_modules/@mui/system/esm/sizing.js","webpack://viooh-exchange-ui/./node_modules/@mui/system/esm/spacing.js","webpack://viooh-exchange-ui/./node_modules/@mui/system/esm/memoize.js","webpack://viooh-exchange-ui/./node_modules/@mui/system/esm/style.js","webpack://viooh-exchange-ui/./node_modules/@mui/system/esm/styleFunctionSx/defaultSxConfig.js","webpack://viooh-exchange-ui/./node_modules/@mui/system/esm/styleFunctionSx/styleFunctionSx.js","webpack://viooh-exchange-ui/./node_modules/@mui/system/esm/useTheme.js","webpack://viooh-exchange-ui/./node_modules/@mui/system/esm/useThemeWithoutDefault.js","webpack://viooh-exchange-ui/./node_modules/@mui/utils/esm/capitalize/capitalize.js","webpack://viooh-exchange-ui/./node_modules/@mui/utils/esm/deepmerge.js","webpack://viooh-exchange-ui/./node_modules/@mui/utils/esm/formatMuiErrorMessage/formatMuiErrorMessage.js","webpack://viooh-exchange-ui/./node_modules/@nebula.gl/edit-modes/dist-es6/index.js","webpack://viooh-exchange-ui/./node_modules/@nebula.gl/edit-modes/dist-es6/lib/composite-mode.js","webpack://viooh-exchange-ui/./node_modules/@nebula.gl/edit-modes/dist-es6/lib/draw-90degree-polygon-mode.js","webpack://viooh-exchange-ui/./node_modules/@nebula.gl/edit-modes/dist-es6/lib/draw-circle-by-diameter-mode.js","webpack://viooh-exchange-ui/./node_modules/@nebula.gl/edit-modes/dist-es6/lib/draw-circle-from-center-mode.js","webpack://viooh-exchange-ui/./node_modules/@nebula.gl/edit-modes/dist-es6/lib/draw-ellipse-by-bounding-box-mode.js","webpack://viooh-exchange-ui/./node_modules/@nebula.gl/edit-modes/dist-es6/lib/draw-ellipse-using-three-points-mode.js","webpack://viooh-exchange-ui/./node_modules/@nebula.gl/edit-modes/dist-es6/lib/draw-line-string-mode.js","webpack://viooh-exchange-ui/./node_modules/@nebula.gl/edit-modes/dist-es6/lib/draw-point-mode.js","webpack://viooh-exchange-ui/./node_modules/@nebula.gl/edit-modes/dist-es6/lib/draw-polygon-by-dragging-mode.js","webpack://viooh-exchange-ui/./node_modules/@nebula.gl/edit-modes/dist-es6/lib/draw-polygon-mode.js","webpack://viooh-exchange-ui/./node_modules/@nebula.gl/edit-modes/dist-es6/lib/draw-rectangle-from-center-mode.js","webpack://viooh-exchange-ui/./node_modules/@nebula.gl/edit-modes/dist-es6/lib/draw-rectangle-mode.js","webpack://viooh-exchange-ui/./node_modules/@nebula.gl/edit-modes/dist-es6/lib/draw-rectangle-using-three-points-mode.js","webpack://viooh-exchange-ui/./node_modules/@nebula.gl/edit-modes/dist-es6/lib/draw-square-from-center-mode.js","webpack://viooh-exchange-ui/./node_modules/@nebula.gl/edit-modes/dist-es6/lib/draw-square-mode.js","webpack://viooh-exchange-ui/./node_modules/@nebula.gl/edit-modes/dist-es6/lib/duplicate-mode.js","webpack://viooh-exchange-ui/./node_modules/@nebula.gl/edit-modes/dist-es6/lib/elevation-mode.js","webpack://viooh-exchange-ui/./node_modules/@nebula.gl/edit-modes/dist-es6/lib/extend-line-string-mode.js","webpack://viooh-exchange-ui/./node_modules/@nebula.gl/edit-modes/dist-es6/lib/extrude-mode.js","webpack://viooh-exchange-ui/./node_modules/@nebula.gl/edit-modes/dist-es6/lib/geojson-edit-mode.js","webpack://viooh-exchange-ui/./node_modules/@nebula.gl/edit-modes/dist-es6/lib/immutable-feature-collection.js","webpack://viooh-exchange-ui/./node_modules/@nebula.gl/edit-modes/dist-es6/lib/measure-angle-mode.js","webpack://viooh-exchange-ui/./node_modules/@nebula.gl/edit-modes/dist-es6/lib/measure-area-mode.js","webpack://viooh-exchange-ui/./node_modules/@nebula.gl/edit-modes/dist-es6/lib/measure-distance-mode.js","webpack://viooh-exchange-ui/./node_modules/@nebula.gl/edit-modes/dist-es6/lib/modify-mode.js","webpack://viooh-exchange-ui/./node_modules/@nebula.gl/edit-modes/dist-es6/lib/resize-circle-mode.js","webpack://viooh-exchange-ui/./node_modules/@nebula.gl/edit-modes/dist-es6/lib/rotate-mode.js","webpack://viooh-exchange-ui/./node_modules/@nebula.gl/edit-modes/dist-es6/lib/scale-mode.js","webpack://viooh-exchange-ui/./node_modules/@nebula.gl/edit-modes/dist-es6/lib/snappable-mode.js","webpack://viooh-exchange-ui/./node_modules/@nebula.gl/edit-modes/dist-es6/lib/split-polygon-mode.js","webpack://viooh-exchange-ui/./node_modules/@nebula.gl/edit-modes/dist-es6/lib/three-click-polygon-mode.js","webpack://viooh-exchange-ui/./node_modules/@nebula.gl/edit-modes/dist-es6/lib/transform-mode.js","webpack://viooh-exchange-ui/./node_modules/@nebula.gl/edit-modes/dist-es6/lib/translate-mode.js","webpack://viooh-exchange-ui/./node_modules/@nebula.gl/edit-modes/dist-es6/lib/two-click-polygon-mode.js","webpack://viooh-exchange-ui/./node_modules/@nebula.gl/edit-modes/dist-es6/lib/view-mode.js","webpack://viooh-exchange-ui/./node_modules/@nebula.gl/edit-modes/dist-es6/memoize.js","webpack://viooh-exchange-ui/./node_modules/@nebula.gl/edit-modes/dist-es6/utils.js","webpack://viooh-exchange-ui/./node_modules/@nebula.gl/layers/dist-es6/constants.js","webpack://viooh-exchange-ui/./node_modules/@nebula.gl/layers/dist-es6/index.js","webpack://viooh-exchange-ui/./node_modules/@nebula.gl/layers/dist-es6/layers/editable-geojson-layer.js","webpack://viooh-exchange-ui/./node_modules/@nebula.gl/layers/dist-es6/layers/editable-h3-cluster-layer.js","webpack://viooh-exchange-ui/./node_modules/@nebula.gl/layers/dist-es6/layers/editable-layer.js","webpack://viooh-exchange-ui/./node_modules/@nebula.gl/layers/dist-es6/layers/editable-path-layer.js","webpack://viooh-exchange-ui/./node_modules/@nebula.gl/layers/dist-es6/layers/elevated-edit-handle-layer.js","webpack://viooh-exchange-ui/./node_modules/@nebula.gl/layers/dist-es6/layers/junction-scatterplot-layer.js","webpack://viooh-exchange-ui/./node_modules/@nebula.gl/layers/dist-es6/layers/path-marker-layer/arrow-2d-geometry.js","webpack://viooh-exchange-ui/./node_modules/@nebula.gl/layers/dist-es6/layers/path-marker-layer/create-path-markers.js","webpack://viooh-exchange-ui/./node_modules/@nebula.gl/layers/dist-es6/layers/path-marker-layer/path-marker-layer.js","webpack://viooh-exchange-ui/./node_modules/@nebula.gl/layers/dist-es6/layers/path-marker-layer/polyline.js","webpack://viooh-exchange-ui/./node_modules/@nebula.gl/layers/dist-es6/layers/path-outline-layer/path-outline-layer.js","webpack://viooh-exchange-ui/./node_modules/@nebula.gl/layers/dist-es6/layers/selection-layer.js","webpack://viooh-exchange-ui/./node_modules/@nebula.gl/layers/dist-es6/shaderlib/outline/outline.js","webpack://viooh-exchange-ui/./node_modules/@nebula.gl/layers/dist-es6/style.js","webpack://viooh-exchange-ui/./node_modules/@nebula.gl/layers/dist-es6/utils.js","webpack://viooh-exchange-ui/./node_modules/@probe.gl/env/dist/esm/lib/get-browser.js","webpack://viooh-exchange-ui/./node_modules/@probe.gl/env/dist/esm/lib/is-browser.js","webpack://viooh-exchange-ui/./node_modules/@probe.gl/env/dist/esm/lib/is-electron.js","webpack://viooh-exchange-ui/./node_modules/@probe.gl/env/dist/esm/utils/globals.js","webpack://viooh-exchange-ui/./node_modules/@probe.gl/log/dist/esm/utils/local-storage.js","webpack://viooh-exchange-ui/./node_modules/@probe.gl/log/dist/esm/utils/formatters.js","webpack://viooh-exchange-ui/./node_modules/@probe.gl/log/dist/esm/utils/color.js","webpack://viooh-exchange-ui/./node_modules/@probe.gl/log/dist/esm/utils/assert.js","webpack://viooh-exchange-ui/./node_modules/@probe.gl/env/dist/esm/lib/globals.js","webpack://viooh-exchange-ui/./node_modules/@probe.gl/log/dist/esm/utils/hi-res-timestamp.js","webpack://viooh-exchange-ui/./node_modules/@probe.gl/log/dist/esm/log.js","webpack://viooh-exchange-ui/./node_modules/@probe.gl/log/dist/esm/utils/autobind.js","webpack://viooh-exchange-ui/./node_modules/@probe.gl/stats/dist/esm/utils/hi-res-timestamp.js","webpack://viooh-exchange-ui/./node_modules/@probe.gl/stats/dist/esm/lib/stat.js","webpack://viooh-exchange-ui/./node_modules/@probe.gl/stats/dist/esm/lib/stats.js","webpack://viooh-exchange-ui/./node_modules/@react-google-maps/api/dist/esm.js","webpack://viooh-exchange-ui/./node_modules/redux-thunk/es/index.js","webpack://viooh-exchange-ui/./node_modules/@reduxjs/toolkit/dist/redux-toolkit.esm.js","webpack://viooh-exchange-ui/./node_modules/@remix-run/router/dist/router.js","webpack://viooh-exchange-ui/./node_modules/@thoughtspot/visual-embed-sdk/lib/src/auth.js","webpack://viooh-exchange-ui/./node_modules/@thoughtspot/visual-embed-sdk/lib/src/authToken.js","webpack://viooh-exchange-ui/./node_modules/@thoughtspot/visual-embed-sdk/lib/src/config.js","webpack://viooh-exchange-ui/./node_modules/@thoughtspot/visual-embed-sdk/lib/src/embed/app.js","webpack://viooh-exchange-ui/./node_modules/@thoughtspot/visual-embed-sdk/lib/src/utils/reporting.js","webpack://viooh-exchange-ui/./node_modules/@thoughtspot/visual-embed-sdk/lib/src/embed/base.js","webpack://viooh-exchange-ui/./node_modules/@thoughtspot/visual-embed-sdk/lib/src/embed/bodyless-conversation.js","webpack://viooh-exchange-ui/./node_modules/@thoughtspot/visual-embed-sdk/lib/src/embed/conversation.js","webpack://viooh-exchange-ui/./node_modules/@thoughtspot/visual-embed-sdk/lib/src/embed/embedConfig.js","webpack://viooh-exchange-ui/./node_modules/@thoughtspot/visual-embed-sdk/lib/src/embed/hostEventClient/contracts.js","webpack://viooh-exchange-ui/./node_modules/@thoughtspot/visual-embed-sdk/lib/src/embed/liveboard.js","webpack://viooh-exchange-ui/./node_modules/@thoughtspot/visual-embed-sdk/lib/src/utils/graphql/preview-service.js","webpack://viooh-exchange-ui/./node_modules/@thoughtspot/visual-embed-sdk/lib/src/utils/global-styles.js","webpack://viooh-exchange-ui/./node_modules/@thoughtspot/visual-embed-sdk/lib/src/embed/search-bar.js","webpack://viooh-exchange-ui/./node_modules/@thoughtspot/visual-embed-sdk/lib/src/embed/search.js","webpack://viooh-exchange-ui/./node_modules/@thoughtspot/visual-embed-sdk/lib/src/embed/spotter-utils.js","webpack://viooh-exchange-ui/./node_modules/@thoughtspot/visual-embed-sdk/lib/src/embed/spotter-viz-utils.js","webpack://viooh-exchange-ui/./node_modules/@thoughtspot/visual-embed-sdk/lib/src/utils/custom-actions.js","webpack://viooh-exchange-ui/./node_modules/@thoughtspot/visual-embed-sdk/lib/src/utils/processData.js","webpack://viooh-exchange-ui/./node_modules/@thoughtspot/visual-embed-sdk/lib/src/embed/hostEventClient/utils.js","webpack://viooh-exchange-ui/./node_modules/@thoughtspot/visual-embed-sdk/lib/src/embed/hostEventClient/host-event-client.js","webpack://viooh-exchange-ui/./node_modules/@thoughtspot/visual-embed-sdk/lib/src/api-intercept.js","webpack://viooh-exchange-ui/./node_modules/@thoughtspot/visual-embed-sdk/lib/src/embed/ts-embed.js","webpack://viooh-exchange-ui/./node_modules/@thoughtspot/visual-embed-sdk/lib/src/errors.js","webpack://viooh-exchange-ui/./node_modules/@thoughtspot/visual-embed-sdk/lib/src/embed/auto-frame-renderer.js","webpack://viooh-exchange-ui/./node_modules/@thoughtspot/visual-embed-sdk/lib/src/mixpanel-service.js","webpack://viooh-exchange-ui/./node_modules/dequal/dist/index.mjs","webpack://viooh-exchange-ui/./node_modules/@thoughtspot/visual-embed-sdk/lib/src/react/index.js","webpack://viooh-exchange-ui/./node_modules/@thoughtspot/visual-embed-sdk/lib/src/react/util.js","webpack://viooh-exchange-ui/./node_modules/@thoughtspot/visual-embed-sdk/node_modules/use-deep-compare-effect/dist/use-deep-compare-effect.esm.js","webpack://viooh-exchange-ui/./node_modules/@thoughtspot/visual-embed-sdk/lib/src/tokenizedFetch.js","webpack://viooh-exchange-ui/./node_modules/@thoughtspot/visual-embed-sdk/lib/src/types.js","webpack://viooh-exchange-ui/./node_modules/ts-deepmerge/esm/index.js","webpack://viooh-exchange-ui/./node_modules/@thoughtspot/visual-embed-sdk/lib/src/utils.js","webpack://viooh-exchange-ui/./node_modules/@thoughtspot/visual-embed-sdk/lib/src/utils/authService/authService.js","webpack://viooh-exchange-ui/./node_modules/@thoughtspot/visual-embed-sdk/lib/src/utils/authService/tokenizedAuthService.js","webpack://viooh-exchange-ui/./node_modules/@thoughtspot/visual-embed-sdk/lib/src/utils/graphql/sourceService.js","webpack://viooh-exchange-ui/./node_modules/@thoughtspot/visual-embed-sdk/lib/src/utils/graphql/answerService/answer-queries.js","webpack://viooh-exchange-ui/./node_modules/@thoughtspot/visual-embed-sdk/lib/src/utils/graphql/answerService/answerService.js","webpack://viooh-exchange-ui/./node_modules/@thoughtspot/visual-embed-sdk/lib/src/utils/graphql/graphql-request.js","webpack://viooh-exchange-ui/./node_modules/@thoughtspot/visual-embed-sdk/lib/src/utils/logger.js","webpack://viooh-exchange-ui/./node_modules/@thoughtspot/visual-embed-sdk/lib/src/utils/processTrigger.js","webpack://viooh-exchange-ui/./node_modules/@thoughtspot/visual-embed-sdk/lib/src/utils/resetServices.js","webpack://viooh-exchange-ui/./node_modules/@thoughtspot/visual-embed-sdk/lib/src/utils/sdk-version.js","webpack://viooh-exchange-ui/./node_modules/@thoughtspot/visual-embed-sdk/lib/src/utils/sessionInfoService.js","webpack://viooh-exchange-ui/./node_modules/@thoughtspot/visual-embed-sdk/lib/src/utils/with-resolvers-polyfill.js","webpack://viooh-exchange-ui/./node_modules/@turf/along/dist/js/index.js","webpack://viooh-exchange-ui/./node_modules/@turf/along/node_modules/@turf/helpers/dist/js/index.js","webpack://viooh-exchange-ui/./node_modules/@turf/along/node_modules/@turf/invariant/dist/js/index.js","webpack://viooh-exchange-ui/./node_modules/@turf/area/dist/js/index.js","webpack://viooh-exchange-ui/./node_modules/@turf/area/node_modules/@turf/helpers/dist/js/index.js","webpack://viooh-exchange-ui/./node_modules/@turf/area/node_modules/@turf/meta/dist/js/index.js","webpack://viooh-exchange-ui/./node_modules/@turf/bbox-clip/dist/js/index.js","webpack://viooh-exchange-ui/./node_modules/@turf/bbox-clip/dist/js/lib/lineclip.js","webpack://viooh-exchange-ui/./node_modules/@turf/bbox-clip/node_modules/@turf/helpers/dist/js/index.js","webpack://viooh-exchange-ui/./node_modules/@turf/bbox-clip/node_modules/@turf/invariant/dist/js/index.js","webpack://viooh-exchange-ui/./node_modules/@turf/bbox-polygon/dist/js/index.js","webpack://viooh-exchange-ui/./node_modules/@turf/bbox-polygon/node_modules/@turf/helpers/dist/js/index.js","webpack://viooh-exchange-ui/./node_modules/@turf/bbox/dist/js/index.js","webpack://viooh-exchange-ui/./node_modules/@turf/bbox/node_modules/@turf/helpers/dist/js/index.js","webpack://viooh-exchange-ui/./node_modules/@turf/bbox/node_modules/@turf/meta/dist/js/index.js","webpack://viooh-exchange-ui/./node_modules/@turf/bearing/dist/js/index.js","webpack://viooh-exchange-ui/./node_modules/@turf/bearing/node_modules/@turf/helpers/dist/js/index.js","webpack://viooh-exchange-ui/./node_modules/@turf/bearing/node_modules/@turf/invariant/dist/js/index.js","webpack://viooh-exchange-ui/./node_modules/@turf/boolean-disjoint/dist/js/index.js","webpack://viooh-exchange-ui/./node_modules/@turf/boolean-disjoint/node_modules/@turf/helpers/dist/js/index.js","webpack://viooh-exchange-ui/./node_modules/@turf/boolean-disjoint/node_modules/@turf/meta/dist/js/index.js","webpack://viooh-exchange-ui/./node_modules/@turf/boolean-intersects/dist/js/index.js","webpack://viooh-exchange-ui/./node_modules/@turf/boolean-intersects/node_modules/@turf/helpers/dist/js/index.js","webpack://viooh-exchange-ui/./node_modules/@turf/boolean-intersects/node_modules/@turf/meta/dist/js/index.js","webpack://viooh-exchange-ui/./node_modules/@turf/boolean-point-in-polygon/dist/js/index.js","webpack://viooh-exchange-ui/./node_modules/@turf/boolean-point-in-polygon/node_modules/@turf/helpers/dist/js/index.js","webpack://viooh-exchange-ui/./node_modules/@turf/boolean-point-in-polygon/node_modules/@turf/invariant/dist/js/index.js","webpack://viooh-exchange-ui/./node_modules/@turf/boolean-point-on-line/dist/js/index.js","webpack://viooh-exchange-ui/./node_modules/@turf/boolean-point-on-line/node_modules/@turf/helpers/dist/js/index.js","webpack://viooh-exchange-ui/./node_modules/@turf/boolean-point-on-line/node_modules/@turf/invariant/dist/js/index.js","webpack://viooh-exchange-ui/./node_modules/@turf/boolean-within/dist/js/index.js","webpack://viooh-exchange-ui/./node_modules/@turf/boolean-within/node_modules/@turf/helpers/dist/js/index.js","webpack://viooh-exchange-ui/./node_modules/@turf/boolean-within/node_modules/@turf/invariant/dist/js/index.js","webpack://viooh-exchange-ui/./node_modules/@turf/buffer/dist/js/index.js","webpack://viooh-exchange-ui/./node_modules/@turf/buffer/node_modules/@turf/helpers/dist/js/index.js","webpack://viooh-exchange-ui/./node_modules/@turf/buffer/node_modules/@turf/meta/dist/js/index.js","webpack://viooh-exchange-ui/./node_modules/@turf/center/dist/js/index.js","webpack://viooh-exchange-ui/./node_modules/@turf/center/node_modules/@turf/helpers/dist/js/index.js","webpack://viooh-exchange-ui/./node_modules/@turf/centroid/dist/js/index.js","webpack://viooh-exchange-ui/./node_modules/@turf/centroid/node_modules/@turf/helpers/dist/js/index.js","webpack://viooh-exchange-ui/./node_modules/@turf/centroid/node_modules/@turf/meta/dist/js/index.js","webpack://viooh-exchange-ui/./node_modules/@turf/circle/dist/js/index.js","webpack://viooh-exchange-ui/./node_modules/@turf/circle/node_modules/@turf/helpers/dist/js/index.js","webpack://viooh-exchange-ui/./node_modules/@turf/destination/dist/js/index.js","webpack://viooh-exchange-ui/./node_modules/@turf/destination/node_modules/@turf/helpers/dist/js/index.js","webpack://viooh-exchange-ui/./node_modules/@turf/destination/node_modules/@turf/invariant/dist/js/index.js","webpack://viooh-exchange-ui/./node_modules/@turf/difference/dist/js/index.js","webpack://viooh-exchange-ui/./node_modules/@turf/difference/node_modules/@turf/helpers/dist/js/index.js","webpack://viooh-exchange-ui/./node_modules/@turf/difference/node_modules/@turf/invariant/dist/js/index.js","webpack://viooh-exchange-ui/./node_modules/@turf/distance/dist/js/index.js","webpack://viooh-exchange-ui/./node_modules/@turf/distance/node_modules/@turf/helpers/dist/js/index.js","webpack://viooh-exchange-ui/./node_modules/@turf/distance/node_modules/@turf/invariant/dist/js/index.js","webpack://viooh-exchange-ui/./node_modules/@turf/ellipse/dist/js/index.js","webpack://viooh-exchange-ui/./node_modules/@turf/ellipse/node_modules/@turf/helpers/dist/js/index.js","webpack://viooh-exchange-ui/./node_modules/@turf/ellipse/node_modules/@turf/invariant/dist/js/index.js","webpack://viooh-exchange-ui/./node_modules/@turf/helpers/main.es.js","webpack://viooh-exchange-ui/./node_modules/@turf/intersect/dist/js/index.js","webpack://viooh-exchange-ui/./node_modules/@turf/intersect/node_modules/@turf/helpers/dist/js/index.js","webpack://viooh-exchange-ui/./node_modules/@turf/intersect/node_modules/@turf/invariant/dist/js/index.js","webpack://viooh-exchange-ui/./node_modules/@turf/invariant/main.es.js","webpack://viooh-exchange-ui/./node_modules/@turf/line-intersect/dist/js/index.js","webpack://viooh-exchange-ui/./node_modules/@turf/line-intersect/node_modules/@turf/helpers/dist/js/index.js","webpack://viooh-exchange-ui/./node_modules/@turf/line-intersect/node_modules/@turf/invariant/dist/js/index.js","webpack://viooh-exchange-ui/./node_modules/@turf/line-intersect/node_modules/@turf/meta/dist/js/index.js","webpack://viooh-exchange-ui/./node_modules/@turf/line-segment/dist/js/index.js","webpack://viooh-exchange-ui/./node_modules/@turf/line-segment/node_modules/@turf/helpers/dist/js/index.js","webpack://viooh-exchange-ui/./node_modules/@turf/line-segment/node_modules/@turf/invariant/dist/js/index.js","webpack://viooh-exchange-ui/./node_modules/@turf/line-segment/node_modules/@turf/meta/dist/js/index.js","webpack://viooh-exchange-ui/./node_modules/@turf/meta/main.es.js","webpack://viooh-exchange-ui/./node_modules/@turf/midpoint/dist/js/index.js","webpack://viooh-exchange-ui/./node_modules/@turf/nearest-point-on-line/dist/js/index.js","webpack://viooh-exchange-ui/./node_modules/@turf/nearest-point-on-line/node_modules/@turf/helpers/dist/js/index.js","webpack://viooh-exchange-ui/./node_modules/@turf/nearest-point-on-line/node_modules/@turf/invariant/dist/js/index.js","webpack://viooh-exchange-ui/./node_modules/@turf/nearest-point-on-line/node_modules/@turf/meta/dist/js/index.js","webpack://viooh-exchange-ui/./node_modules/@turf/point-to-line-distance/dist/js/index.js","webpack://viooh-exchange-ui/./node_modules/@turf/point-to-line-distance/node_modules/@turf/helpers/dist/js/index.js","webpack://viooh-exchange-ui/./node_modules/@turf/point-to-line-distance/node_modules/@turf/invariant/dist/js/index.js","webpack://viooh-exchange-ui/./node_modules/@turf/point-to-line-distance/node_modules/@turf/meta/dist/js/index.js","webpack://viooh-exchange-ui/./node_modules/@turf/polygon-to-line/dist/js/index.js","webpack://viooh-exchange-ui/./node_modules/@turf/polygon-to-line/node_modules/@turf/helpers/dist/js/index.js","webpack://viooh-exchange-ui/./node_modules/@turf/polygon-to-line/node_modules/@turf/invariant/dist/js/index.js","webpack://viooh-exchange-ui/./node_modules/@turf/clone/main.es.js","webpack://viooh-exchange-ui/./node_modules/@turf/boolean-clockwise/main.es.js","webpack://viooh-exchange-ui/./node_modules/@turf/rewind/main.es.js","webpack://viooh-exchange-ui/./node_modules/@turf/rhumb-bearing/dist/js/index.js","webpack://viooh-exchange-ui/./node_modules/@turf/rhumb-bearing/node_modules/@turf/helpers/dist/js/index.js","webpack://viooh-exchange-ui/./node_modules/@turf/rhumb-bearing/node_modules/@turf/invariant/dist/js/index.js","webpack://viooh-exchange-ui/./node_modules/@turf/rhumb-destination/dist/js/index.js","webpack://viooh-exchange-ui/./node_modules/@turf/rhumb-destination/node_modules/@turf/helpers/dist/js/index.js","webpack://viooh-exchange-ui/./node_modules/@turf/rhumb-destination/node_modules/@turf/invariant/dist/js/index.js","webpack://viooh-exchange-ui/./node_modules/@turf/rhumb-distance/dist/js/index.js","webpack://viooh-exchange-ui/./node_modules/@turf/rhumb-distance/node_modules/@turf/helpers/dist/js/index.js","webpack://viooh-exchange-ui/./node_modules/@turf/rhumb-distance/node_modules/@turf/invariant/dist/js/index.js","webpack://viooh-exchange-ui/./node_modules/@turf/transform-rotate/dist/js/index.js","webpack://viooh-exchange-ui/./node_modules/@turf/transform-rotate/node_modules/@turf/clone/dist/js/index.js","webpack://viooh-exchange-ui/./node_modules/@turf/transform-rotate/node_modules/@turf/helpers/dist/js/index.js","webpack://viooh-exchange-ui/./node_modules/@turf/transform-rotate/node_modules/@turf/invariant/dist/js/index.js","webpack://viooh-exchange-ui/./node_modules/@turf/transform-rotate/node_modules/@turf/meta/dist/js/index.js","webpack://viooh-exchange-ui/./node_modules/@turf/transform-scale/dist/js/index.js","webpack://viooh-exchange-ui/./node_modules/@turf/transform-scale/node_modules/@turf/clone/dist/js/index.js","webpack://viooh-exchange-ui/./node_modules/@turf/transform-scale/node_modules/@turf/helpers/dist/js/index.js","webpack://viooh-exchange-ui/./node_modules/@turf/transform-scale/node_modules/@turf/invariant/dist/js/index.js","webpack://viooh-exchange-ui/./node_modules/@turf/transform-scale/node_modules/@turf/meta/dist/js/index.js","webpack://viooh-exchange-ui/./node_modules/@turf/transform-translate/dist/js/index.js","webpack://viooh-exchange-ui/./node_modules/@turf/transform-translate/node_modules/@turf/clone/dist/js/index.js","webpack://viooh-exchange-ui/./node_modules/@turf/transform-translate/node_modules/@turf/helpers/dist/js/index.js","webpack://viooh-exchange-ui/./node_modules/@turf/transform-translate/node_modules/@turf/invariant/dist/js/index.js","webpack://viooh-exchange-ui/./node_modules/@turf/transform-translate/node_modules/@turf/meta/dist/js/index.js","webpack://viooh-exchange-ui/./node_modules/@turf/union/dist/js/index.js","webpack://viooh-exchange-ui/./node_modules/@turf/union/node_modules/@turf/helpers/dist/js/index.js","webpack://viooh-exchange-ui/./node_modules/@turf/union/node_modules/@turf/invariant/dist/js/index.js","webpack://viooh-exchange-ui/./node_modules/ag-grid-community/dist/ag-grid-community.auto.esm.js","webpack://viooh-exchange-ui/./node_modules/ag-grid-enterprise/dist/ag-grid-enterprise.auto.esm.js","webpack://viooh-exchange-ui/./node_modules/ag-grid-react/lib/agGridReact.js","webpack://viooh-exchange-ui/./node_modules/ag-grid-react/lib/legacy/agGridReactLegacy.js","webpack://viooh-exchange-ui/./node_modules/ag-grid-react/lib/legacy/legacyReactComponent.js","webpack://viooh-exchange-ui/./node_modules/ag-grid-react/lib/reactUi/agGridReactUi.js","webpack://viooh-exchange-ui/./node_modules/ag-grid-react/lib/reactUi/beansContext.js","webpack://viooh-exchange-ui/./node_modules/ag-grid-react/lib/reactUi/cellRenderer/detailCellRenderer.js","webpack://viooh-exchange-ui/./node_modules/ag-grid-react/lib/reactUi/cellRenderer/groupCellRenderer.js","webpack://viooh-exchange-ui/./node_modules/ag-grid-react/lib/reactUi/cells/cellComp.js","webpack://viooh-exchange-ui/./node_modules/ag-grid-react/lib/reactUi/cells/popupEditorComp.js","webpack://viooh-exchange-ui/./node_modules/ag-grid-react/lib/reactUi/cells/showJsRenderer.js","webpack://viooh-exchange-ui/./node_modules/ag-grid-react/lib/reactUi/gridBodyComp.js","webpack://viooh-exchange-ui/./node_modules/ag-grid-react/lib/reactUi/gridComp.js","webpack://viooh-exchange-ui/./node_modules/ag-grid-react/lib/reactUi/header/gridHeaderComp.js","webpack://viooh-exchange-ui/./node_modules/ag-grid-react/lib/reactUi/header/headerCellComp.js","webpack://viooh-exchange-ui/./node_modules/ag-grid-react/lib/reactUi/header/headerFilterCellComp.js","webpack://viooh-exchange-ui/./node_modules/ag-grid-react/lib/reactUi/header/headerGroupCellComp.js","webpack://viooh-exchange-ui/./node_modules/ag-grid-react/lib/reactUi/header/headerRowComp.js","webpack://viooh-exchange-ui/./node_modules/ag-grid-react/lib/reactUi/header/headerRowContainerComp.js","webpack://viooh-exchange-ui/./node_modules/ag-grid-react/lib/reactUi/jsComp.js","webpack://viooh-exchange-ui/./node_modules/ag-grid-react/lib/reactUi/reactComment.js","webpack://viooh-exchange-ui/./node_modules/ag-grid-react/lib/reactUi/rows/rowComp.js","webpack://viooh-exchange-ui/./node_modules/ag-grid-react/lib/reactUi/rows/rowContainerComp.js","webpack://viooh-exchange-ui/./node_modules/ag-grid-react/lib/reactUi/tabGuardComp.js","webpack://viooh-exchange-ui/./node_modules/ag-grid-react/lib/reactUi/useEffectOnce.js","webpack://viooh-exchange-ui/./node_modules/ag-grid-react/lib/reactUi/utils.js","webpack://viooh-exchange-ui/./node_modules/ag-grid-react/lib/shared/interfaces.js","webpack://viooh-exchange-ui/./node_modules/ag-grid-react/lib/shared/keyGenerator.js","webpack://viooh-exchange-ui/./node_modules/ag-grid-react/lib/shared/newReactComponent.js","webpack://viooh-exchange-ui/./node_modules/ag-grid-react/lib/shared/portalManager.js","webpack://viooh-exchange-ui/./node_modules/ag-grid-react/lib/shared/reactComponent.js","webpack://viooh-exchange-ui/./node_modules/ag-grid-react/lib/shared/reactFrameworkOverrides.js","webpack://viooh-exchange-ui/./node_modules/ag-grid-react/main.js","webpack://viooh-exchange-ui/./node_modules/attr-accept/dist/es/index.js","webpack://viooh-exchange-ui/./node_modules/axios-request-handler/dist/axios-request.js","webpack://viooh-exchange-ui/./node_modules/classnames/bind.js","webpack://viooh-exchange-ui/./node_modules/classnames/index.js","webpack://viooh-exchange-ui/./node_modules/normalize.css/normalize.css","webpack://viooh-exchange-ui/./node_modules/css-loader/dist/runtime/api.js","webpack://viooh-exchange-ui/./node_modules/d3-geo/src/adder.js","webpack://viooh-exchange-ui/./node_modules/d3-geo/src/math.js","webpack://viooh-exchange-ui/./node_modules/d3-geo/src/noop.js","webpack://viooh-exchange-ui/./node_modules/d3-geo/src/stream.js","webpack://viooh-exchange-ui/./node_modules/d3-geo/src/area.js","webpack://viooh-exchange-ui/./node_modules/d3-geo/src/cartesian.js","webpack://viooh-exchange-ui/./node_modules/d3-geo/src/bounds.js","webpack://viooh-exchange-ui/./node_modules/d3-geo/src/centroid.js","webpack://viooh-exchange-ui/./node_modules/d3-geo/node_modules/d3-array/src/bisector.js","webpack://viooh-exchange-ui/./node_modules/d3-geo/src/constant.js","webpack://viooh-exchange-ui/./node_modules/d3-geo/src/compose.js","webpack://viooh-exchange-ui/./node_modules/d3-geo/src/rotation.js","webpack://viooh-exchange-ui/./node_modules/d3-geo/src/circle.js","webpack://viooh-exchange-ui/./node_modules/d3-geo/src/clip/buffer.js","webpack://viooh-exchange-ui/./node_modules/d3-geo/src/pointEqual.js","webpack://viooh-exchange-ui/./node_modules/d3-geo/src/clip/polygon.js","webpack://viooh-exchange-ui/./node_modules/d3-geo/node_modules/d3-array/src/ascending.js","webpack://viooh-exchange-ui/./node_modules/d3-geo/node_modules/d3-array/src/bisect.js","webpack://viooh-exchange-ui/./node_modules/d3-geo/node_modules/d3-array/src/array.js","webpack://viooh-exchange-ui/./node_modules/d3-geo/node_modules/d3-array/src/merge.js","webpack://viooh-exchange-ui/./node_modules/d3-geo/node_modules/d3-array/src/range.js","webpack://viooh-exchange-ui/./node_modules/d3-geo/node_modules/d3-array/src/ticks.js","webpack://viooh-exchange-ui/./node_modules/d3-geo/src/clip/extent.js","webpack://viooh-exchange-ui/./node_modules/d3-geo/src/clip/line.js","webpack://viooh-exchange-ui/./node_modules/d3-geo/src/polygonContains.js","webpack://viooh-exchange-ui/./node_modules/d3-geo/src/length.js","webpack://viooh-exchange-ui/./node_modules/d3-geo/src/distance.js","webpack://viooh-exchange-ui/./node_modules/d3-geo/src/contains.js","webpack://viooh-exchange-ui/./node_modules/d3-geo/src/graticule.js","webpack://viooh-exchange-ui/./node_modules/d3-geo/src/interpolate.js","webpack://viooh-exchange-ui/./node_modules/d3-geo/src/identity.js","webpack://viooh-exchange-ui/./node_modules/d3-geo/src/path/area.js","webpack://viooh-exchange-ui/./node_modules/d3-geo/src/path/bounds.js","webpack://viooh-exchange-ui/./node_modules/d3-geo/src/path/centroid.js","webpack://viooh-exchange-ui/./node_modules/d3-geo/src/path/context.js","webpack://viooh-exchange-ui/./node_modules/d3-geo/src/path/measure.js","webpack://viooh-exchange-ui/./node_modules/d3-geo/src/path/string.js","webpack://viooh-exchange-ui/./node_modules/d3-geo/src/path/index.js","webpack://viooh-exchange-ui/./node_modules/d3-geo/src/clip/index.js","webpack://viooh-exchange-ui/./node_modules/d3-geo/src/clip/antimeridian.js","webpack://viooh-exchange-ui/./node_modules/d3-geo/src/transform.js","webpack://viooh-exchange-ui/./node_modules/d3-geo/src/projection/fit.js","webpack://viooh-exchange-ui/./node_modules/d3-geo/src/projection/resample.js","webpack://viooh-exchange-ui/./node_modules/d3-geo/src/projection/index.js","webpack://viooh-exchange-ui/./node_modules/d3-geo/src/clip/circle.js","webpack://viooh-exchange-ui/./node_modules/d3-geo/src/projection/conic.js","webpack://viooh-exchange-ui/./node_modules/d3-geo/src/projection/conicEqualArea.js","webpack://viooh-exchange-ui/./node_modules/d3-geo/src/projection/cylindricalEqualArea.js","webpack://viooh-exchange-ui/./node_modules/d3-geo/src/projection/albers.js","webpack://viooh-exchange-ui/./node_modules/d3-geo/src/projection/albersUsa.js","webpack://viooh-exchange-ui/./node_modules/d3-geo/src/projection/azimuthal.js","webpack://viooh-exchange-ui/./node_modules/d3-geo/src/projection/azimuthalEqualArea.js","webpack://viooh-exchange-ui/./node_modules/d3-geo/src/projection/azimuthalEquidistant.js","webpack://viooh-exchange-ui/./node_modules/d3-geo/src/projection/mercator.js","webpack://viooh-exchange-ui/./node_modules/d3-geo/src/projection/conicConformal.js","webpack://viooh-exchange-ui/./node_modules/d3-geo/src/projection/equirectangular.js","webpack://viooh-exchange-ui/./node_modules/d3-geo/src/projection/conicEquidistant.js","webpack://viooh-exchange-ui/./node_modules/d3-geo/src/projection/gnomonic.js","webpack://viooh-exchange-ui/./node_modules/d3-geo/src/projection/identity.js","webpack://viooh-exchange-ui/./node_modules/d3-geo/src/projection/naturalEarth1.js","webpack://viooh-exchange-ui/./node_modules/d3-geo/src/projection/orthographic.js","webpack://viooh-exchange-ui/./node_modules/d3-geo/src/projection/stereographic.js","webpack://viooh-exchange-ui/./node_modules/d3-geo/src/projection/transverseMercator.js","webpack://viooh-exchange-ui/./node_modules/date-fns/_lib/addLeadingZeros/index.js","webpack://viooh-exchange-ui/./node_modules/date-fns/_lib/assign/index.js","webpack://viooh-exchange-ui/./node_modules/date-fns/_lib/cloneObject/index.js","webpack://viooh-exchange-ui/./node_modules/date-fns/_lib/defaultLocale/index.js","webpack://viooh-exchange-ui/./node_modules/date-fns/_lib/defaultOptions/index.js","webpack://viooh-exchange-ui/./node_modules/date-fns/_lib/format/formatters/index.js","webpack://viooh-exchange-ui/./node_modules/date-fns/_lib/format/lightFormatters/index.js","webpack://viooh-exchange-ui/./node_modules/date-fns/_lib/format/longFormatters/index.js","webpack://viooh-exchange-ui/./node_modules/date-fns/_lib/getTimezoneOffsetInMilliseconds/index.js","webpack://viooh-exchange-ui/./node_modules/date-fns/_lib/getUTCDayOfYear/index.js","webpack://viooh-exchange-ui/./node_modules/date-fns/_lib/getUTCISOWeek/index.js","webpack://viooh-exchange-ui/./node_modules/date-fns/_lib/getUTCISOWeekYear/index.js","webpack://viooh-exchange-ui/./node_modules/date-fns/_lib/getUTCWeek/index.js","webpack://viooh-exchange-ui/./node_modules/date-fns/_lib/getUTCWeekYear/index.js","webpack://viooh-exchange-ui/./node_modules/date-fns/_lib/protectedTokens/index.js","webpack://viooh-exchange-ui/./node_modules/date-fns/_lib/requiredArgs/index.js","webpack://viooh-exchange-ui/./node_modules/date-fns/_lib/startOfUTCISOWeek/index.js","webpack://viooh-exchange-ui/./node_modules/date-fns/_lib/startOfUTCISOWeekYear/index.js","webpack://viooh-exchange-ui/./node_modules/date-fns/_lib/startOfUTCWeek/index.js","webpack://viooh-exchange-ui/./node_modules/date-fns/_lib/startOfUTCWeekYear/index.js","webpack://viooh-exchange-ui/./node_modules/date-fns/_lib/toInteger/index.js","webpack://viooh-exchange-ui/./node_modules/date-fns/addMilliseconds/index.js","webpack://viooh-exchange-ui/./node_modules/date-fns/esm/_lib/defaultOptions/index.js","webpack://viooh-exchange-ui/./node_modules/date-fns/esm/_lib/getTimezoneOffsetInMilliseconds/index.js","webpack://viooh-exchange-ui/./node_modules/date-fns/esm/_lib/requiredArgs/index.js","webpack://viooh-exchange-ui/./node_modules/date-fns/esm/_lib/roundingMethods/index.js","webpack://viooh-exchange-ui/./node_modules/date-fns/esm/_lib/toInteger/index.js","webpack://viooh-exchange-ui/./node_modules/date-fns/esm/addDays/index.js","webpack://viooh-exchange-ui/./node_modules/date-fns/esm/addHours/index.js","webpack://viooh-exchange-ui/./node_modules/date-fns/esm/addMilliseconds/index.js","webpack://viooh-exchange-ui/./node_modules/date-fns/esm/addMonths/index.js","webpack://viooh-exchange-ui/./node_modules/date-fns/esm/addWeeks/index.js","webpack://viooh-exchange-ui/./node_modules/date-fns/esm/addYears/index.js","webpack://viooh-exchange-ui/./node_modules/date-fns/esm/compareAsc/index.js","webpack://viooh-exchange-ui/./node_modules/date-fns/esm/constants/index.js","webpack://viooh-exchange-ui/./node_modules/date-fns/esm/differenceInCalendarDays/index.js","webpack://viooh-exchange-ui/./node_modules/date-fns/esm/differenceInCalendarMonths/index.js","webpack://viooh-exchange-ui/./node_modules/date-fns/esm/differenceInDays/index.js","webpack://viooh-exchange-ui/./node_modules/date-fns/esm/differenceInHours/index.js","webpack://viooh-exchange-ui/./node_modules/date-fns/esm/differenceInMilliseconds/index.js","webpack://viooh-exchange-ui/./node_modules/date-fns/esm/differenceInMinutes/index.js","webpack://viooh-exchange-ui/./node_modules/date-fns/esm/differenceInMonths/index.js","webpack://viooh-exchange-ui/./node_modules/date-fns/esm/isLastDayOfMonth/index.js","webpack://viooh-exchange-ui/./node_modules/date-fns/esm/differenceInSeconds/index.js","webpack://viooh-exchange-ui/./node_modules/date-fns/esm/differenceInYears/index.js","webpack://viooh-exchange-ui/./node_modules/date-fns/esm/differenceInCalendarYears/index.js","webpack://viooh-exchange-ui/./node_modules/date-fns/esm/eachDayOfInterval/index.js","webpack://viooh-exchange-ui/./node_modules/date-fns/esm/eachWeekOfInterval/index.js","webpack://viooh-exchange-ui/./node_modules/date-fns/esm/endOfDay/index.js","webpack://viooh-exchange-ui/./node_modules/date-fns/esm/endOfMonth/index.js","webpack://viooh-exchange-ui/./node_modules/date-fns/esm/_lib/startOfUTCISOWeek/index.js","webpack://viooh-exchange-ui/./node_modules/date-fns/esm/_lib/getUTCISOWeekYear/index.js","webpack://viooh-exchange-ui/./node_modules/date-fns/esm/_lib/startOfUTCWeek/index.js","webpack://viooh-exchange-ui/./node_modules/date-fns/esm/_lib/getUTCWeekYear/index.js","webpack://viooh-exchange-ui/./node_modules/date-fns/esm/_lib/addLeadingZeros/index.js","webpack://viooh-exchange-ui/./node_modules/date-fns/esm/_lib/format/lightFormatters/index.js","webpack://viooh-exchange-ui/./node_modules/date-fns/esm/_lib/format/formatters/index.js","webpack://viooh-exchange-ui/./node_modules/date-fns/esm/_lib/getUTCWeek/index.js","webpack://viooh-exchange-ui/./node_modules/date-fns/esm/_lib/startOfUTCWeekYear/index.js","webpack://viooh-exchange-ui/./node_modules/date-fns/esm/_lib/getUTCISOWeek/index.js","webpack://viooh-exchange-ui/./node_modules/date-fns/esm/_lib/startOfUTCISOWeekYear/index.js","webpack://viooh-exchange-ui/./node_modules/date-fns/esm/_lib/getUTCDayOfYear/index.js","webpack://viooh-exchange-ui/./node_modules/date-fns/esm/_lib/format/longFormatters/index.js","webpack://viooh-exchange-ui/./node_modules/date-fns/esm/_lib/protectedTokens/index.js","webpack://viooh-exchange-ui/./node_modules/date-fns/esm/_lib/defaultLocale/index.js","webpack://viooh-exchange-ui/./node_modules/date-fns/esm/format/index.js","webpack://viooh-exchange-ui/./node_modules/date-fns/esm/subMilliseconds/index.js","webpack://viooh-exchange-ui/./node_modules/date-fns/esm/getDay/index.js","webpack://viooh-exchange-ui/./node_modules/date-fns/esm/getHours/index.js","webpack://viooh-exchange-ui/./node_modules/date-fns/esm/getISOWeeksInYear/index.js","webpack://viooh-exchange-ui/./node_modules/date-fns/esm/getMilliseconds/index.js","webpack://viooh-exchange-ui/./node_modules/date-fns/esm/getMinutes/index.js","webpack://viooh-exchange-ui/./node_modules/date-fns/esm/getSeconds/index.js","webpack://viooh-exchange-ui/./node_modules/date-fns/esm/getWeek/index.js","webpack://viooh-exchange-ui/./node_modules/date-fns/esm/startOfWeekYear/index.js","webpack://viooh-exchange-ui/./node_modules/date-fns/esm/getWeekYear/index.js","webpack://viooh-exchange-ui/./node_modules/date-fns/esm/isAfter/index.js","webpack://viooh-exchange-ui/./node_modules/date-fns/esm/isBefore/index.js","webpack://viooh-exchange-ui/./node_modules/date-fns/esm/isDate/index.js","webpack://viooh-exchange-ui/./node_modules/date-fns/esm/isEqual/index.js","webpack://viooh-exchange-ui/./node_modules/date-fns/esm/isSameDay/index.js","webpack://viooh-exchange-ui/./node_modules/date-fns/esm/isToday/index.js","webpack://viooh-exchange-ui/./node_modules/date-fns/esm/isValid/index.js","webpack://viooh-exchange-ui/./node_modules/date-fns/esm/lastDayOfWeek/index.js","webpack://viooh-exchange-ui/./node_modules/date-fns/esm/locale/_lib/buildFormatLongFn/index.js","webpack://viooh-exchange-ui/./node_modules/date-fns/esm/locale/en-GB/_lib/formatLong/index.js","webpack://viooh-exchange-ui/./node_modules/date-fns/esm/locale/en-GB/index.js","webpack://viooh-exchange-ui/./node_modules/date-fns/esm/locale/en-US/_lib/formatDistance/index.js","webpack://viooh-exchange-ui/./node_modules/date-fns/esm/locale/en-US/_lib/formatRelative/index.js","webpack://viooh-exchange-ui/./node_modules/date-fns/esm/locale/_lib/buildLocalizeFn/index.js","webpack://viooh-exchange-ui/./node_modules/date-fns/esm/locale/en-US/_lib/localize/index.js","webpack://viooh-exchange-ui/./node_modules/date-fns/esm/locale/_lib/buildMatchFn/index.js","webpack://viooh-exchange-ui/./node_modules/date-fns/esm/locale/en-US/_lib/match/index.js","webpack://viooh-exchange-ui/./node_modules/date-fns/esm/locale/_lib/buildMatchPatternFn/index.js","webpack://viooh-exchange-ui/./node_modules/date-fns/esm/locale/en-US/_lib/formatLong/index.js","webpack://viooh-exchange-ui/./node_modules/date-fns/esm/locale/en-US/index.js","webpack://viooh-exchange-ui/./node_modules/date-fns/esm/parseISO/index.js","webpack://viooh-exchange-ui/./node_modules/date-fns/esm/startOfDay/index.js","webpack://viooh-exchange-ui/./node_modules/date-fns/esm/startOfISOWeek/index.js","webpack://viooh-exchange-ui/./node_modules/date-fns/esm/startOfISOWeekYear/index.js","webpack://viooh-exchange-ui/./node_modules/date-fns/esm/getISOWeekYear/index.js","webpack://viooh-exchange-ui/./node_modules/date-fns/esm/startOfTomorrow/index.js","webpack://viooh-exchange-ui/./node_modules/date-fns/esm/startOfWeek/index.js","webpack://viooh-exchange-ui/./node_modules/date-fns/esm/subDays/index.js","webpack://viooh-exchange-ui/./node_modules/date-fns/esm/subHours/index.js","webpack://viooh-exchange-ui/./node_modules/date-fns/esm/subYears/index.js","webpack://viooh-exchange-ui/./node_modules/date-fns/esm/toDate/index.js","webpack://viooh-exchange-ui/./node_modules/date-fns/format/index.js","webpack://viooh-exchange-ui/./node_modules/date-fns/isDate/index.js","webpack://viooh-exchange-ui/./node_modules/date-fns/isValid/index.js","webpack://viooh-exchange-ui/./node_modules/date-fns/locale/_lib/buildFormatLongFn/index.js","webpack://viooh-exchange-ui/./node_modules/date-fns/locale/_lib/buildLocalizeFn/index.js","webpack://viooh-exchange-ui/./node_modules/date-fns/locale/_lib/buildMatchFn/index.js","webpack://viooh-exchange-ui/./node_modules/date-fns/locale/_lib/buildMatchPatternFn/index.js","webpack://viooh-exchange-ui/./node_modules/date-fns/locale/en-US/_lib/formatDistance/index.js","webpack://viooh-exchange-ui/./node_modules/date-fns/locale/en-US/_lib/formatLong/index.js","webpack://viooh-exchange-ui/./node_modules/date-fns/locale/en-US/_lib/formatRelative/index.js","webpack://viooh-exchange-ui/./node_modules/date-fns/locale/en-US/_lib/localize/index.js","webpack://viooh-exchange-ui/./node_modules/date-fns/locale/en-US/_lib/match/index.js","webpack://viooh-exchange-ui/./node_modules/date-fns/locale/en-US/index.js","webpack://viooh-exchange-ui/./node_modules/date-fns/subMilliseconds/index.js","webpack://viooh-exchange-ui/./node_modules/date-fns/toDate/index.js","webpack://viooh-exchange-ui/./node_modules/decode-uri-component/index.js","webpack://viooh-exchange-ui/./node_modules/earcut/src/earcut.js","webpack://viooh-exchange-ui/./node_modules/tslib/tslib.es6.js","webpack://viooh-exchange-ui/./node_modules/echarts-for-react/esm/helper/pick.js","webpack://viooh-exchange-ui/./node_modules/echarts-for-react/esm/helper/is-function.js","webpack://viooh-exchange-ui/./node_modules/echarts-for-react/esm/index.js","webpack://viooh-exchange-ui/./node_modules/echarts-for-react/esm/core.js","webpack://viooh-exchange-ui/./node_modules/echarts-for-react/esm/helper/is-string.js","webpack://viooh-exchange-ui/./node_modules/echarts/node_modules/tslib/tslib.es6.js","webpack://viooh-exchange-ui/./node_modules/zrender/lib/core/env.js","webpack://viooh-exchange-ui/./node_modules/zrender/lib/core/platform.js","webpack://viooh-exchange-ui/./node_modules/zrender/lib/core/util.js","webpack://viooh-exchange-ui/./node_modules/zrender/node_modules/tslib/tslib.es6.js","webpack://viooh-exchange-ui/./node_modules/zrender/lib/core/vector.js","webpack://viooh-exchange-ui/./node_modules/zrender/lib/mixin/Draggable.js","webpack://viooh-exchange-ui/./node_modules/zrender/lib/core/Eventful.js","webpack://viooh-exchange-ui/./node_modules/zrender/lib/core/fourPointsTransform.js","webpack://viooh-exchange-ui/./node_modules/zrender/lib/core/dom.js","webpack://viooh-exchange-ui/./node_modules/zrender/lib/core/event.js","webpack://viooh-exchange-ui/./node_modules/zrender/lib/core/GestureMgr.js","webpack://viooh-exchange-ui/./node_modules/zrender/lib/core/matrix.js","webpack://viooh-exchange-ui/./node_modules/zrender/lib/core/Point.js","webpack://viooh-exchange-ui/./node_modules/zrender/lib/core/BoundingRect.js","webpack://viooh-exchange-ui/./node_modules/zrender/lib/Handler.js","webpack://viooh-exchange-ui/./node_modules/zrender/lib/core/timsort.js","webpack://viooh-exchange-ui/./node_modules/zrender/lib/graphic/constants.js","webpack://viooh-exchange-ui/./node_modules/zrender/lib/Storage.js","webpack://viooh-exchange-ui/./node_modules/zrender/lib/animation/requestAnimationFrame.js","webpack://viooh-exchange-ui/./node_modules/zrender/lib/animation/easing.js","webpack://viooh-exchange-ui/./node_modules/zrender/lib/core/curve.js","webpack://viooh-exchange-ui/./node_modules/zrender/lib/animation/cubicEasing.js","webpack://viooh-exchange-ui/./node_modules/zrender/lib/animation/Clip.js","webpack://viooh-exchange-ui/./node_modules/zrender/lib/core/LRU.js","webpack://viooh-exchange-ui/./node_modules/zrender/lib/tool/color.js","webpack://viooh-exchange-ui/./node_modules/zrender/lib/svg/helper.js","webpack://viooh-exchange-ui/./node_modules/zrender/lib/animation/Animator.js","webpack://viooh-exchange-ui/./node_modules/zrender/lib/animation/Animation.js","webpack://viooh-exchange-ui/./node_modules/zrender/lib/dom/HandlerProxy.js","webpack://viooh-exchange-ui/./node_modules/zrender/lib/config.js","webpack://viooh-exchange-ui/./node_modules/zrender/lib/core/Transformable.js","webpack://viooh-exchange-ui/./node_modules/zrender/lib/contain/text.js","webpack://viooh-exchange-ui/./node_modules/zrender/lib/Element.js","webpack://viooh-exchange-ui/./node_modules/zrender/lib/graphic/Group.js","webpack://viooh-exchange-ui/./node_modules/zrender/lib/zrender.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/util/number.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/util/model.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/util/clazz.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/model/mixin/makeStyleMapper.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/model/mixin/areaStyle.js","webpack://viooh-exchange-ui/./node_modules/zrender/lib/graphic/helper/image.js","webpack://viooh-exchange-ui/./node_modules/zrender/lib/graphic/helper/parseText.js","webpack://viooh-exchange-ui/./node_modules/zrender/lib/graphic/Displayable.js","webpack://viooh-exchange-ui/./node_modules/zrender/lib/core/bbox.js","webpack://viooh-exchange-ui/./node_modules/zrender/lib/core/PathProxy.js","webpack://viooh-exchange-ui/./node_modules/zrender/lib/contain/line.js","webpack://viooh-exchange-ui/./node_modules/zrender/lib/contain/cubic.js","webpack://viooh-exchange-ui/./node_modules/zrender/lib/contain/quadratic.js","webpack://viooh-exchange-ui/./node_modules/zrender/lib/contain/util.js","webpack://viooh-exchange-ui/./node_modules/zrender/lib/contain/arc.js","webpack://viooh-exchange-ui/./node_modules/zrender/lib/contain/windingLine.js","webpack://viooh-exchange-ui/./node_modules/zrender/lib/contain/path.js","webpack://viooh-exchange-ui/./node_modules/zrender/lib/graphic/Path.js","webpack://viooh-exchange-ui/./node_modules/zrender/lib/graphic/TSpan.js","webpack://viooh-exchange-ui/./node_modules/zrender/lib/graphic/Image.js","webpack://viooh-exchange-ui/./node_modules/zrender/lib/graphic/helper/subPixelOptimize.js","webpack://viooh-exchange-ui/./node_modules/zrender/lib/graphic/shape/Rect.js","webpack://viooh-exchange-ui/./node_modules/zrender/lib/graphic/helper/roundRect.js","webpack://viooh-exchange-ui/./node_modules/zrender/lib/graphic/Text.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/util/innerStore.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/util/states.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/animation/basicTransition.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/label/labelStyle.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/model/mixin/textStyle.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/model/mixin/lineStyle.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/model/mixin/itemStyle.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/model/Model.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/util/component.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/core/locale.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/i18n/langEN.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/i18n/langZH.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/util/time.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/util/format.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/util/layout.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/model/Component.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/model/globalDefault.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/util/types.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/data/helper/sourceHelper.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/model/internalComponentCreator.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/model/Global.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/model/mixin/palette.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/core/ExtensionAPI.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/core/CoordinateSystem.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/model/OptionManager.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/preprocessor/helper/compatStyle.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/preprocessor/backwardCompat.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/processor/dataStack.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/data/Source.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/data/helper/dataProvider.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/model/mixin/dataFormat.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/core/task.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/util/log.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/data/helper/dataValueHelper.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/data/helper/transform.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/data/DataStore.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/data/helper/sourceManager.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/component/tooltip/tooltipMarkup.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/component/tooltip/seriesFormatTooltip.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/model/Series.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/view/Component.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/chart/helper/createRenderPlanner.js","webpack://viooh-exchange-ui/./node_modules/zrender/lib/tool/transformPath.js","webpack://viooh-exchange-ui/./node_modules/zrender/lib/tool/path.js","webpack://viooh-exchange-ui/./node_modules/zrender/lib/graphic/shape/Circle.js","webpack://viooh-exchange-ui/./node_modules/zrender/lib/graphic/shape/Ellipse.js","webpack://viooh-exchange-ui/./node_modules/zrender/lib/graphic/helper/roundSector.js","webpack://viooh-exchange-ui/./node_modules/zrender/lib/graphic/shape/Sector.js","webpack://viooh-exchange-ui/./node_modules/zrender/lib/graphic/shape/Ring.js","webpack://viooh-exchange-ui/./node_modules/zrender/lib/graphic/helper/poly.js","webpack://viooh-exchange-ui/./node_modules/zrender/lib/graphic/helper/smoothBezier.js","webpack://viooh-exchange-ui/./node_modules/zrender/lib/graphic/shape/Polygon.js","webpack://viooh-exchange-ui/./node_modules/zrender/lib/graphic/shape/Polyline.js","webpack://viooh-exchange-ui/./node_modules/zrender/lib/graphic/shape/Line.js","webpack://viooh-exchange-ui/./node_modules/zrender/lib/graphic/shape/BezierCurve.js","webpack://viooh-exchange-ui/./node_modules/zrender/lib/graphic/shape/Arc.js","webpack://viooh-exchange-ui/./node_modules/zrender/lib/graphic/CompoundPath.js","webpack://viooh-exchange-ui/./node_modules/zrender/lib/graphic/Gradient.js","webpack://viooh-exchange-ui/./node_modules/zrender/lib/graphic/LinearGradient.js","webpack://viooh-exchange-ui/./node_modules/zrender/lib/graphic/RadialGradient.js","webpack://viooh-exchange-ui/./node_modules/zrender/lib/core/OrientedBoundingRect.js","webpack://viooh-exchange-ui/./node_modules/zrender/lib/graphic/IncrementalDisplayable.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/util/graphic.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/view/Chart.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/util/throttle.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/visual/style.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/loading/default.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/core/Scheduler.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/theme/light.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/theme/dark.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/util/ECEventProcessor.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/visual/symbol.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/visual/helper.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/legacy/dataSelectAction.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/util/event.js","webpack://viooh-exchange-ui/./node_modules/zrender/lib/core/WeakMap.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/util/symbol.js","webpack://viooh-exchange-ui/./node_modules/zrender/lib/canvas/helper.js","webpack://viooh-exchange-ui/./node_modules/zrender/lib/canvas/dashStyle.js","webpack://viooh-exchange-ui/./node_modules/zrender/lib/canvas/graphic.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/util/decal.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/core/lifecycle.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/core/impl.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/core/echarts.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/visual/decal.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/extension.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/data/DataDiffer.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/data/helper/dimensionHelper.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/data/SeriesDimensionDefine.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/data/helper/SeriesDataSchema.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/data/SeriesData.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/data/helper/createDimensions.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/model/referHelper.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/data/helper/dataStackHelper.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/chart/helper/createSeriesData.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/scale/Scale.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/data/OrdinalMeta.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/scale/helper.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/scale/Ordinal.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/scale/Interval.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/util/vendor.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/layout/barGrid.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/scale/Time.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/scale/Log.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/coord/scaleRawExtentInfo.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/coord/axisHelper.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/coord/axisModelCommonMixin.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/export/api/helper.js","webpack://viooh-exchange-ui/./node_modules/zrender/lib/contain/polygon.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/coord/geo/Region.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/coord/geo/parseGeoJson.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/legacy/getTextRect.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/coord/axisTickLabelBuilder.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/coord/Axis.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/export/api.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/label/labelGuideHelper.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/label/labelLayoutHelper.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/label/LabelManager.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/label/installLabelLayout.js","webpack://viooh-exchange-ui/./node_modules/zrender/lib/canvas/Layer.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/export/core.js","webpack://viooh-exchange-ui/./node_modules/zrender/lib/canvas/Painter.js","webpack://viooh-exchange-ui/./node_modules/zrender/lib/svg/SVGPathRebuilder.js","webpack://viooh-exchange-ui/./node_modules/zrender/lib/svg/mapStyleToAttrs.js","webpack://viooh-exchange-ui/./node_modules/zrender/lib/svg/core.js","webpack://viooh-exchange-ui/./node_modules/zrender/lib/svg/cssAnimation.js","webpack://viooh-exchange-ui/./node_modules/zrender/lib/svg/graphic.js","webpack://viooh-exchange-ui/./node_modules/zrender/lib/svg/domapi.js","webpack://viooh-exchange-ui/./node_modules/zrender/lib/svg/patch.js","webpack://viooh-exchange-ui/./node_modules/zrender/lib/svg/Painter.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/chart/line/LineSeries.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/chart/helper/labelHelper.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/chart/helper/Symbol.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/chart/helper/SymbolDraw.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/chart/line/helper.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/chart/line/poly.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/chart/helper/createClipPathFromCoordSys.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/coord/CoordinateSystem.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/chart/line/LineView.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/chart/line/lineAnimationDiff.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/layout/points.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/processor/dataSample.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/chart/bar/BaseBarSeries.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/chart/bar/BarSeries.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/util/shape/sausage.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/label/sectorLabel.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/chart/helper/sectorHelper.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/chart/bar/BarView.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/chart/pie/pieLayout.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/processor/dataFilter.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/chart/pie/labelLayout.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/chart/pie/PieView.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/chart/helper/createSeriesDataSimply.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/visual/LegendVisualProvider.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/chart/pie/PieSeries.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/chart/scatter/ScatterSeries.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/chart/helper/LargeSymbolDraw.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/chart/scatter/ScatterView.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/coord/cartesian/GridModel.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/coord/cartesian/AxisModel.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/coord/axisDefault.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/coord/axisCommonTypes.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/coord/axisModelCreator.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/coord/cartesian/Cartesian.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/coord/cartesian/Cartesian2D.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/coord/cartesian/Axis2D.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/coord/cartesian/cartesianAxisHelper.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/coord/axisAlignTicks.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/coord/cartesian/Grid.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/component/axis/AxisBuilder.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/component/axisPointer/modelHelper.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/component/axis/AxisView.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/component/axis/axisSplitHelper.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/component/axis/CartesianAxisView.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/component/grid/installSimple.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/chart/radar/radarLayout.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/chart/radar/backwardCompat.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/chart/radar/RadarView.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/chart/radar/RadarSeries.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/coord/radar/RadarModel.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/component/radar/RadarView.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/coord/radar/IndicatorAxis.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/coord/radar/Radar.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/component/radar/install.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/component/helper/interactionMutex.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/component/helper/RoamController.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/component/helper/roamHelper.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/component/helper/cursorHelper.js","webpack://viooh-exchange-ui/./node_modules/zrender/lib/tool/parseSVG.js","webpack://viooh-exchange-ui/./node_modules/zrender/lib/tool/parseXML.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/coord/geo/fix/nanhai.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/coord/geo/GeoSVGResource.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/coord/geo/fix/textCoord.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/coord/geo/fix/diaoyuIsland.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/coord/geo/GeoJSONResource.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/coord/geo/geoSourceManager.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/component/helper/MapDraw.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/chart/map/MapView.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/chart/map/MapSeries.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/chart/map/mapDataStatistic.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/chart/map/mapSymbolLayout.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/coord/View.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/coord/geo/Geo.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/coord/geo/geoCreator.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/coord/geo/GeoModel.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/action/roamHelper.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/component/geo/GeoView.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/component/geo/install.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/chart/tree/layoutHelper.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/chart/tree/TreeView.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/data/helper/linkSeriesData.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/data/Tree.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/chart/helper/treeHelper.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/chart/tree/TreeSeries.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/chart/tree/traversalHelper.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/chart/tree/treeLayout.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/chart/tree/treeVisual.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/chart/treemap/treemapAction.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/chart/helper/enableAriaDecalForTree.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/chart/treemap/TreemapSeries.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/chart/treemap/Breadcrumb.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/util/animation.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/chart/treemap/TreemapView.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/visual/VisualMapping.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/chart/treemap/treemapVisual.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/chart/treemap/treemapLayout.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/chart/graph/categoryFilter.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/chart/graph/categoryVisual.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/chart/graph/edgeVisual.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/chart/helper/multipleGraphEdgeHelper.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/chart/graph/simpleLayoutHelper.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/chart/graph/simpleLayout.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/chart/graph/graphHelper.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/chart/graph/circularLayoutHelper.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/chart/graph/circularLayout.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/chart/graph/forceHelper.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/chart/graph/forceLayout.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/chart/graph/createView.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/chart/helper/LinePath.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/chart/helper/Line.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/chart/helper/LineDraw.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/chart/graph/adjustEdge.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/chart/graph/GraphView.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/data/Graph.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/chart/helper/createGraphFromNodeEdge.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/chart/graph/GraphSeries.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/chart/graph/install.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/chart/gauge/PointerPath.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/chart/gauge/GaugeView.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/chart/gauge/GaugeSeries.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/chart/funnel/FunnelView.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/chart/funnel/FunnelSeries.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/chart/funnel/funnelLayout.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/chart/parallel/ParallelView.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/chart/parallel/ParallelSeries.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/chart/parallel/parallelVisual.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/coord/parallel/parallelPreprocessor.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/component/parallel/ParallelView.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/coord/parallel/ParallelModel.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/coord/parallel/ParallelAxis.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/component/helper/sliderMove.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/coord/parallel/Parallel.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/coord/parallel/parallelCreator.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/coord/parallel/AxisModel.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/component/helper/BrushController.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/component/helper/brushHelper.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/component/axis/ParallelAxisView.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/component/axis/parallelAxisAction.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/component/parallel/install.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/chart/sankey/SankeyView.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/chart/sankey/SankeySeries.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/chart/sankey/sankeyLayout.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/chart/sankey/sankeyVisual.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/chart/helper/whiskerBoxCommon.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/chart/boxplot/BoxplotSeries.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/chart/boxplot/BoxplotView.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/chart/boxplot/boxplotLayout.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/chart/boxplot/boxplotTransform.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/chart/boxplot/prepareBoxplotData.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/chart/candlestick/CandlestickView.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/chart/candlestick/CandlestickSeries.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/chart/candlestick/preprocessor.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/chart/candlestick/candlestickVisual.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/chart/candlestick/candlestickLayout.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/chart/helper/EffectSymbol.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/chart/effectScatter/EffectScatterView.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/chart/effectScatter/EffectScatterSeries.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/chart/helper/EffectLine.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/chart/helper/Polyline.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/chart/helper/EffectPolyline.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/chart/helper/LargeLineDraw.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/chart/lines/linesLayout.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/chart/lines/LinesView.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/chart/lines/LinesSeries.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/chart/lines/linesVisual.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/chart/heatmap/HeatmapLayer.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/chart/heatmap/HeatmapView.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/chart/heatmap/HeatmapSeries.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/chart/bar/PictorialBarView.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/chart/bar/PictorialBarSeries.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/chart/themeRiver/ThemeRiverView.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/chart/themeRiver/ThemeRiverSeries.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/chart/themeRiver/themeRiverLayout.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/chart/sunburst/SunburstPiece.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/chart/sunburst/sunburstAction.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/chart/sunburst/SunburstView.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/chart/sunburst/SunburstSeries.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/chart/sunburst/sunburstLayout.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/chart/sunburst/sunburstVisual.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/chart/custom/CustomSeries.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/coord/cartesian/prepareCustom.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/coord/geo/prepareCustom.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/coord/single/prepareCustom.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/coord/polar/prepareCustom.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/util/styleCompat.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/animation/customGraphicTransition.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/animation/customGraphicKeyframeAnimation.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/chart/custom/CustomView.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/coord/calendar/prepareCustom.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/component/axisPointer/BaseAxisPointer.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/component/axisPointer/viewHelper.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/component/axisPointer/CartesianAxisPointer.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/component/axisPointer/AxisPointerModel.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/component/axisPointer/globalListener.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/component/axisPointer/AxisPointerView.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/component/axisPointer/findPointFromSeries.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/component/axisPointer/axisTrigger.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/component/axisPointer/install.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/component/axisPointer/PolarAxisPointer.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/coord/polar/PolarModel.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/coord/polar/AxisModel.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/coord/polar/RadiusAxis.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/coord/polar/AngleAxis.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/coord/polar/Polar.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/coord/polar/polarCreator.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/component/axis/AngleAxisView.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/component/axis/RadiusAxisView.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/layout/barPolar.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/component/polar/install.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/coord/single/singleAxisHelper.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/component/axis/SingleAxisView.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/coord/single/AxisModel.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/coord/single/SingleAxis.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/coord/single/Single.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/coord/single/singleCreator.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/component/axisPointer/SingleAxisPointer.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/component/singleAxis/install.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/coord/calendar/CalendarModel.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/component/calendar/CalendarView.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/coord/calendar/Calendar.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/component/graphic/GraphicModel.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/component/graphic/GraphicView.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/component/dataZoom/helper.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/component/dataZoom/DataZoomModel.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/component/dataZoom/SelectZoomModel.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/component/dataZoom/DataZoomView.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/component/dataZoom/SelectZoomView.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/component/dataZoom/AxisProxy.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/component/dataZoom/dataZoomProcessor.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/component/dataZoom/installCommon.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/component/dataZoom/dataZoomAction.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/component/dataZoom/installDataZoomSelect.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/component/toolbox/featureManager.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/component/toolbox/ToolboxModel.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/component/helper/listComponent.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/component/toolbox/ToolboxView.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/component/toolbox/feature/SaveAsImage.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/component/toolbox/feature/MagicType.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/component/toolbox/feature/DataView.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/component/dataZoom/history.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/component/toolbox/feature/Restore.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/component/helper/BrushTargetManager.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/component/toolbox/feature/DataZoom.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/component/tooltip/TooltipModel.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/component/tooltip/helper.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/component/tooltip/TooltipHTMLContent.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/component/tooltip/TooltipRichContent.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/component/tooltip/TooltipView.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/component/brush/preprocessor.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/visual/visualSolution.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/component/brush/selector.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/component/brush/visualEncoding.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/component/brush/BrushView.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/component/brush/BrushModel.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/component/toolbox/feature/Brush.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/component/title/install.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/component/timeline/TimelineModel.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/component/timeline/SliderTimelineModel.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/component/timeline/TimelineView.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/component/timeline/TimelineAxis.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/component/timeline/SliderTimelineView.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/component/timeline/preprocessor.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/component/marker/checkMarkerInSeries.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/component/marker/MarkerModel.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/component/marker/MarkPointModel.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/component/marker/markerHelper.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/component/marker/MarkerView.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/component/marker/MarkPointView.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/component/marker/MarkLineModel.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/component/marker/MarkLineView.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/component/marker/MarkAreaModel.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/component/marker/MarkAreaView.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/component/legend/LegendModel.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/component/legend/LegendView.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/component/legend/legendFilter.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/component/legend/legendAction.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/component/legend/installLegendPlain.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/component/legend/ScrollableLegendModel.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/component/legend/ScrollableLegendView.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/component/legend/installLegendScroll.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/component/legend/scrollableLegendAction.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/component/dataZoom/InsideZoomModel.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/component/dataZoom/roams.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/component/dataZoom/InsideZoomView.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/component/dataZoom/installDataZoomInside.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/component/dataZoom/SliderZoomModel.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/component/dataZoom/SliderZoomView.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/component/dataZoom/installDataZoomSlider.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/visual/visualDefault.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/component/visualMap/VisualMapModel.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/component/visualMap/ContinuousModel.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/component/visualMap/VisualMapView.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/component/visualMap/helper.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/component/visualMap/ContinuousView.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/component/visualMap/visualMapAction.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/component/visualMap/visualEncoding.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/component/visualMap/preprocessor.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/component/visualMap/installCommon.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/component/visualMap/installVisualMapContinuous.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/component/visualMap/PiecewiseModel.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/component/visualMap/PiecewiseView.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/component/visualMap/installVisualMapPiecewise.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/visual/aria.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/component/aria/preprocessor.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/util/conditionalExpression.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/component/transform/filterTransform.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/component/transform/sortTransform.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/component/dataset/install.js","webpack://viooh-exchange-ui/./node_modules/zrender/lib/tool/convertPath.js","webpack://viooh-exchange-ui/./node_modules/zrender/lib/tool/dividePath.js","webpack://viooh-exchange-ui/./node_modules/zrender/lib/tool/morphPath.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/animation/morphTransitionHelper.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/animation/universalTransition.js","webpack://viooh-exchange-ui/./node_modules/echarts/index.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/renderer/installCanvasRenderer.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/renderer/installSVGRenderer.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/chart/line/install.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/chart/bar/install.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/chart/pie/install.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/processor/negativeDataFilter.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/chart/scatter/install.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/chart/radar/install.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/chart/map/install.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/chart/tree/install.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/chart/tree/treeAction.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/chart/treemap/install.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/chart/gauge/install.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/chart/funnel/install.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/chart/parallel/install.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/chart/sankey/install.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/chart/boxplot/install.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/chart/candlestick/install.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/chart/effectScatter/install.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/chart/lines/install.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/chart/heatmap/install.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/chart/bar/installPictorialBar.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/chart/themeRiver/install.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/chart/sunburst/install.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/chart/custom/install.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/component/grid/install.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/component/calendar/install.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/component/graphic/install.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/component/toolbox/install.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/component/tooltip/install.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/component/brush/install.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/component/timeline/install.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/component/timeline/timelineAction.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/component/marker/installMarkPoint.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/component/marker/installMarkLine.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/component/marker/installMarkArea.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/component/legend/install.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/component/dataZoom/install.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/component/visualMap/install.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/component/aria/install.js","webpack://viooh-exchange-ui/./node_modules/echarts/lib/component/transform/install.js","webpack://viooh-exchange-ui/./node_modules/eventemitter3/index.js","webpack://viooh-exchange-ui/./node_modules/exenv/index.js","webpack://viooh-exchange-ui/./node_modules/fast-deep-equal/index.js","webpack://viooh-exchange-ui/./node_modules/fast-xml-parser/src/fxp.js","webpack://viooh-exchange-ui/./node_modules/fast-xml-parser/src/util.js","webpack://viooh-exchange-ui/./node_modules/fast-xml-parser/src/validator.js","webpack://viooh-exchange-ui/./node_modules/fast-xml-parser/src/xmlbuilder/json2xml.js","webpack://viooh-exchange-ui/./node_modules/fast-xml-parser/src/xmlbuilder/orderedJs2Xml.js","webpack://viooh-exchange-ui/./node_modules/fast-xml-parser/src/xmlparser/DocTypeReader.js","webpack://viooh-exchange-ui/./node_modules/fast-xml-parser/src/xmlparser/OptionsBuilder.js","webpack://viooh-exchange-ui/./node_modules/fast-xml-parser/src/xmlparser/OrderedObjParser.js","webpack://viooh-exchange-ui/./node_modules/fast-xml-parser/src/xmlparser/XMLParser.js","webpack://viooh-exchange-ui/./node_modules/fast-xml-parser/src/xmlparser/node2json.js","webpack://viooh-exchange-ui/./node_modules/fast-xml-parser/src/xmlparser/xmlNode.js","webpack://viooh-exchange-ui/./node_modules/filter-obj/index.js","webpack://viooh-exchange-ui/./node_modules/fuse.js/dist/fuse.esm.js","webpack://viooh-exchange-ui/./node_modules/geojson-rbush/index.js","webpack://viooh-exchange-ui/./node_modules/geojson-rbush/node_modules/@turf/helpers/dist/js/index.js","webpack://viooh-exchange-ui/./node_modules/geojson-rbush/node_modules/@turf/meta/dist/js/index.js","webpack://viooh-exchange-ui/./node_modules/gl-matrix/esm/common.js","webpack://viooh-exchange-ui/./node_modules/gl-matrix/esm/mat3.js","webpack://viooh-exchange-ui/./node_modules/gl-matrix/esm/mat4.js","webpack://viooh-exchange-ui/./node_modules/gl-matrix/esm/vec2.js","webpack://viooh-exchange-ui/./node_modules/gl-matrix/esm/vec3.js","webpack://viooh-exchange-ui/./node_modules/gl-matrix/esm/vec4.js","webpack://viooh-exchange-ui/./node_modules/h3-js/dist/browser/h3-js.es.js","webpack://viooh-exchange-ui/./node_modules/hammerjs/hammer.js","webpack://viooh-exchange-ui/./node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js","webpack://viooh-exchange-ui/./node_modules/ieee754/index.js","webpack://viooh-exchange-ui/./node_modules/json-to-csv-export/dist/index.js","webpack://viooh-exchange-ui/./node_modules/lodash.throttle/index.js","webpack://viooh-exchange-ui/./node_modules/lodash/_DataView.js","webpack://viooh-exchange-ui/./node_modules/lodash/_Hash.js","webpack://viooh-exchange-ui/./node_modules/lodash/_ListCache.js","webpack://viooh-exchange-ui/./node_modules/lodash/_Map.js","webpack://viooh-exchange-ui/./node_modules/lodash/_MapCache.js","webpack://viooh-exchange-ui/./node_modules/lodash/_Promise.js","webpack://viooh-exchange-ui/./node_modules/lodash/_Set.js","webpack://viooh-exchange-ui/./node_modules/lodash/_SetCache.js","webpack://viooh-exchange-ui/./node_modules/lodash/_Stack.js","webpack://viooh-exchange-ui/./node_modules/lodash/_Symbol.js","webpack://viooh-exchange-ui/./node_modules/lodash/_Uint8Array.js","webpack://viooh-exchange-ui/./node_modules/lodash/_WeakMap.js","webpack://viooh-exchange-ui/./node_modules/lodash/_apply.js","webpack://viooh-exchange-ui/./node_modules/lodash/_arrayEach.js","webpack://viooh-exchange-ui/./node_modules/lodash/_arrayFilter.js","webpack://viooh-exchange-ui/./node_modules/lodash/_arrayIncludes.js","webpack://viooh-exchange-ui/./node_modules/lodash/_arrayIncludesWith.js","webpack://viooh-exchange-ui/./node_modules/lodash/_arrayLikeKeys.js","webpack://viooh-exchange-ui/./node_modules/lodash/_arrayMap.js","webpack://viooh-exchange-ui/./node_modules/lodash/_arrayPush.js","webpack://viooh-exchange-ui/./node_modules/lodash/_arraySome.js","webpack://viooh-exchange-ui/./node_modules/lodash/_asciiToArray.js","webpack://viooh-exchange-ui/./node_modules/lodash/_assignMergeValue.js","webpack://viooh-exchange-ui/./node_modules/lodash/_assignValue.js","webpack://viooh-exchange-ui/./node_modules/lodash/_assocIndexOf.js","webpack://viooh-exchange-ui/./node_modules/lodash/_baseAssign.js","webpack://viooh-exchange-ui/./node_modules/lodash/_baseAssignIn.js","webpack://viooh-exchange-ui/./node_modules/lodash/_baseAssignValue.js","webpack://viooh-exchange-ui/./node_modules/lodash/_baseClone.js","webpack://viooh-exchange-ui/./node_modules/lodash/_baseCreate.js","webpack://viooh-exchange-ui/./node_modules/lodash/_baseDifference.js","webpack://viooh-exchange-ui/./node_modules/lodash/_baseEach.js","webpack://viooh-exchange-ui/./node_modules/lodash/_baseFindIndex.js","webpack://viooh-exchange-ui/./node_modules/lodash/_baseFlatten.js","webpack://viooh-exchange-ui/./node_modules/lodash/_baseFor.js","webpack://viooh-exchange-ui/./node_modules/lodash/_baseForOwn.js","webpack://viooh-exchange-ui/./node_modules/lodash/_baseGet.js","webpack://viooh-exchange-ui/./node_modules/lodash/_baseGetAllKeys.js","webpack://viooh-exchange-ui/./node_modules/lodash/_baseGetTag.js","webpack://viooh-exchange-ui/./node_modules/lodash/_baseHasIn.js","webpack://viooh-exchange-ui/./node_modules/lodash/_baseIndexOf.js","webpack://viooh-exchange-ui/./node_modules/lodash/_baseIntersection.js","webpack://viooh-exchange-ui/./node_modules/lodash/_baseIsArguments.js","webpack://viooh-exchange-ui/./node_modules/lodash/_baseIsEqual.js","webpack://viooh-exchange-ui/./node_modules/lodash/_baseIsEqualDeep.js","webpack://viooh-exchange-ui/./node_modules/lodash/_baseIsMap.js","webpack://viooh-exchange-ui/./node_modules/lodash/_baseIsMatch.js","webpack://viooh-exchange-ui/./node_modules/lodash/_baseIsNaN.js","webpack://viooh-exchange-ui/./node_modules/lodash/_baseIsNative.js","webpack://viooh-exchange-ui/./node_modules/lodash/_baseIsSet.js","webpack://viooh-exchange-ui/./node_modules/lodash/_baseIsTypedArray.js","webpack://viooh-exchange-ui/./node_modules/lodash/_baseIteratee.js","webpack://viooh-exchange-ui/./node_modules/lodash/_baseKeys.js","webpack://viooh-exchange-ui/./node_modules/lodash/_baseKeysIn.js","webpack://viooh-exchange-ui/./node_modules/lodash/_baseMap.js","webpack://viooh-exchange-ui/./node_modules/lodash/_baseMatches.js","webpack://viooh-exchange-ui/./node_modules/lodash/_baseMatchesProperty.js","webpack://viooh-exchange-ui/./node_modules/lodash/_baseMerge.js","webpack://viooh-exchange-ui/./node_modules/lodash/_baseMergeDeep.js","webpack://viooh-exchange-ui/./node_modules/lodash/_baseOrderBy.js","webpack://viooh-exchange-ui/./node_modules/lodash/_basePick.js","webpack://viooh-exchange-ui/./node_modules/lodash/_basePickBy.js","webpack://viooh-exchange-ui/./node_modules/lodash/_baseProperty.js","webpack://viooh-exchange-ui/./node_modules/lodash/_basePropertyDeep.js","webpack://viooh-exchange-ui/./node_modules/lodash/_baseRest.js","webpack://viooh-exchange-ui/./node_modules/lodash/_baseSet.js","webpack://viooh-exchange-ui/./node_modules/lodash/_baseSetToString.js","webpack://viooh-exchange-ui/./node_modules/lodash/_baseSlice.js","webpack://viooh-exchange-ui/./node_modules/lodash/_baseSortBy.js","webpack://viooh-exchange-ui/./node_modules/lodash/_baseTimes.js","webpack://viooh-exchange-ui/./node_modules/lodash/_baseToString.js","webpack://viooh-exchange-ui/./node_modules/lodash/_baseTrim.js","webpack://viooh-exchange-ui/./node_modules/lodash/_baseUnary.js","webpack://viooh-exchange-ui/./node_modules/lodash/_baseUniq.js","webpack://viooh-exchange-ui/./node_modules/lodash/_cacheHas.js","webpack://viooh-exchange-ui/./node_modules/lodash/_castArrayLikeObject.js","webpack://viooh-exchange-ui/./node_modules/lodash/_castPath.js","webpack://viooh-exchange-ui/./node_modules/lodash/_castSlice.js","webpack://viooh-exchange-ui/./node_modules/lodash/_cloneArrayBuffer.js","webpack://viooh-exchange-ui/./node_modules/lodash/_cloneBuffer.js","webpack://viooh-exchange-ui/./node_modules/lodash/_cloneDataView.js","webpack://viooh-exchange-ui/./node_modules/lodash/_cloneRegExp.js","webpack://viooh-exchange-ui/./node_modules/lodash/_cloneSymbol.js","webpack://viooh-exchange-ui/./node_modules/lodash/_cloneTypedArray.js","webpack://viooh-exchange-ui/./node_modules/lodash/_compareAscending.js","webpack://viooh-exchange-ui/./node_modules/lodash/_compareMultiple.js","webpack://viooh-exchange-ui/./node_modules/lodash/_copyArray.js","webpack://viooh-exchange-ui/./node_modules/lodash/_copyObject.js","webpack://viooh-exchange-ui/./node_modules/lodash/_copySymbols.js","webpack://viooh-exchange-ui/./node_modules/lodash/_copySymbolsIn.js","webpack://viooh-exchange-ui/./node_modules/lodash/_coreJsData.js","webpack://viooh-exchange-ui/./node_modules/lodash/_createAssigner.js","webpack://viooh-exchange-ui/./node_modules/lodash/_createBaseEach.js","webpack://viooh-exchange-ui/./node_modules/lodash/_createBaseFor.js","webpack://viooh-exchange-ui/./node_modules/lodash/_createCaseFirst.js","webpack://viooh-exchange-ui/./node_modules/lodash/_createRound.js","webpack://viooh-exchange-ui/./node_modules/lodash/_createSet.js","webpack://viooh-exchange-ui/./node_modules/lodash/_defineProperty.js","webpack://viooh-exchange-ui/./node_modules/lodash/_equalArrays.js","webpack://viooh-exchange-ui/./node_modules/lodash/_equalByTag.js","webpack://viooh-exchange-ui/./node_modules/lodash/_equalObjects.js","webpack://viooh-exchange-ui/./node_modules/lodash/_flatRest.js","webpack://viooh-exchange-ui/./node_modules/lodash/_freeGlobal.js","webpack://viooh-exchange-ui/./node_modules/lodash/_getAllKeys.js","webpack://viooh-exchange-ui/./node_modules/lodash/_getAllKeysIn.js","webpack://viooh-exchange-ui/./node_modules/lodash/_getMapData.js","webpack://viooh-exchange-ui/./node_modules/lodash/_getMatchData.js","webpack://viooh-exchange-ui/./node_modules/lodash/_getNative.js","webpack://viooh-exchange-ui/./node_modules/lodash/_getPrototype.js","webpack://viooh-exchange-ui/./node_modules/lodash/_getRawTag.js","webpack://viooh-exchange-ui/./node_modules/lodash/_getSymbols.js","webpack://viooh-exchange-ui/./node_modules/lodash/_getSymbolsIn.js","webpack://viooh-exchange-ui/./node_modules/lodash/_getTag.js","webpack://viooh-exchange-ui/./node_modules/lodash/_getValue.js","webpack://viooh-exchange-ui/./node_modules/lodash/_hasPath.js","webpack://viooh-exchange-ui/./node_modules/lodash/_hasUnicode.js","webpack://viooh-exchange-ui/./node_modules/lodash/_hashClear.js","webpack://viooh-exchange-ui/./node_modules/lodash/_hashDelete.js","webpack://viooh-exchange-ui/./node_modules/lodash/_hashGet.js","webpack://viooh-exchange-ui/./node_modules/lodash/_hashHas.js","webpack://viooh-exchange-ui/./node_modules/lodash/_hashSet.js","webpack://viooh-exchange-ui/./node_modules/lodash/_initCloneArray.js","webpack://viooh-exchange-ui/./node_modules/lodash/_initCloneByTag.js","webpack://viooh-exchange-ui/./node_modules/lodash/_initCloneObject.js","webpack://viooh-exchange-ui/./node_modules/lodash/_isFlattenable.js","webpack://viooh-exchange-ui/./node_modules/lodash/_isIndex.js","webpack://viooh-exchange-ui/./node_modules/lodash/_isIterateeCall.js","webpack://viooh-exchange-ui/./node_modules/lodash/_isKey.js","webpack://viooh-exchange-ui/./node_modules/lodash/_isKeyable.js","webpack://viooh-exchange-ui/./node_modules/lodash/_isMasked.js","webpack://viooh-exchange-ui/./node_modules/lodash/_isPrototype.js","webpack://viooh-exchange-ui/./node_modules/lodash/_isStrictComparable.js","webpack://viooh-exchange-ui/./node_modules/lodash/_listCacheClear.js","webpack://viooh-exchange-ui/./node_modules/lodash/_listCacheDelete.js","webpack://viooh-exchange-ui/./node_modules/lodash/_listCacheGet.js","webpack://viooh-exchange-ui/./node_modules/lodash/_listCacheHas.js","webpack://viooh-exchange-ui/./node_modules/lodash/_listCacheSet.js","webpack://viooh-exchange-ui/./node_modules/lodash/_mapCacheClear.js","webpack://viooh-exchange-ui/./node_modules/lodash/_mapCacheDelete.js","webpack://viooh-exchange-ui/./node_modules/lodash/_mapCacheGet.js","webpack://viooh-exchange-ui/./node_modules/lodash/_mapCacheHas.js","webpack://viooh-exchange-ui/./node_modules/lodash/_mapCacheSet.js","webpack://viooh-exchange-ui/./node_modules/lodash/_mapToArray.js","webpack://viooh-exchange-ui/./node_modules/lodash/_matchesStrictComparable.js","webpack://viooh-exchange-ui/./node_modules/lodash/_memoizeCapped.js","webpack://viooh-exchange-ui/./node_modules/lodash/_nativeCreate.js","webpack://viooh-exchange-ui/./node_modules/lodash/_nativeKeys.js","webpack://viooh-exchange-ui/./node_modules/lodash/_nativeKeysIn.js","webpack://viooh-exchange-ui/./node_modules/lodash/_nodeUtil.js","webpack://viooh-exchange-ui/./node_modules/lodash/_objectToString.js","webpack://viooh-exchange-ui/./node_modules/lodash/_overArg.js","webpack://viooh-exchange-ui/./node_modules/lodash/_overRest.js","webpack://viooh-exchange-ui/./node_modules/lodash/_root.js","webpack://viooh-exchange-ui/./node_modules/lodash/_safeGet.js","webpack://viooh-exchange-ui/./node_modules/lodash/_setCacheAdd.js","webpack://viooh-exchange-ui/./node_modules/lodash/_setCacheHas.js","webpack://viooh-exchange-ui/./node_modules/lodash/_setToArray.js","webpack://viooh-exchange-ui/./node_modules/lodash/_setToString.js","webpack://viooh-exchange-ui/./node_modules/lodash/_shortOut.js","webpack://viooh-exchange-ui/./node_modules/lodash/_stackClear.js","webpack://viooh-exchange-ui/./node_modules/lodash/_stackDelete.js","webpack://viooh-exchange-ui/./node_modules/lodash/_stackGet.js","webpack://viooh-exchange-ui/./node_modules/lodash/_stackHas.js","webpack://viooh-exchange-ui/./node_modules/lodash/_stackSet.js","webpack://viooh-exchange-ui/./node_modules/lodash/_strictIndexOf.js","webpack://viooh-exchange-ui/./node_modules/lodash/_stringToArray.js","webpack://viooh-exchange-ui/./node_modules/lodash/_stringToPath.js","webpack://viooh-exchange-ui/./node_modules/lodash/_toKey.js","webpack://viooh-exchange-ui/./node_modules/lodash/_toSource.js","webpack://viooh-exchange-ui/./node_modules/lodash/_trimmedEndIndex.js","webpack://viooh-exchange-ui/./node_modules/lodash/_unicodeToArray.js","webpack://viooh-exchange-ui/./node_modules/lodash/capitalize.js","webpack://viooh-exchange-ui/./node_modules/lodash/chunk.js","webpack://viooh-exchange-ui/./node_modules/lodash/cloneDeep.js","webpack://viooh-exchange-ui/./node_modules/lodash/constant.js","webpack://viooh-exchange-ui/./node_modules/lodash/debounce.js","webpack://viooh-exchange-ui/./node_modules/lodash/differenceBy.js","webpack://viooh-exchange-ui/./node_modules/lodash/eq.js","webpack://viooh-exchange-ui/./node_modules/lodash/flatten.js","webpack://viooh-exchange-ui/./node_modules/lodash/get.js","webpack://viooh-exchange-ui/./node_modules/lodash/hasIn.js","webpack://viooh-exchange-ui/./node_modules/lodash/identity.js","webpack://viooh-exchange-ui/./node_modules/lodash/intersection.js","webpack://viooh-exchange-ui/./node_modules/lodash/isArguments.js","webpack://viooh-exchange-ui/./node_modules/lodash/isArray.js","webpack://viooh-exchange-ui/./node_modules/lodash/isArrayLike.js","webpack://viooh-exchange-ui/./node_modules/lodash/isArrayLikeObject.js","webpack://viooh-exchange-ui/./node_modules/lodash/isBuffer.js","webpack://viooh-exchange-ui/./node_modules/lodash/isEmpty.js","webpack://viooh-exchange-ui/./node_modules/lodash/isEqual.js","webpack://viooh-exchange-ui/./node_modules/lodash/isFunction.js","webpack://viooh-exchange-ui/./node_modules/lodash/isLength.js","webpack://viooh-exchange-ui/./node_modules/lodash/isMap.js","webpack://viooh-exchange-ui/./node_modules/lodash/isObject.js","webpack://viooh-exchange-ui/./node_modules/lodash/isObjectLike.js","webpack://viooh-exchange-ui/./node_modules/lodash/isPlainObject.js","webpack://viooh-exchange-ui/./node_modules/lodash/isSet.js","webpack://viooh-exchange-ui/./node_modules/lodash/isSymbol.js","webpack://viooh-exchange-ui/./node_modules/lodash/isTypedArray.js","webpack://viooh-exchange-ui/./node_modules/lodash/keys.js","webpack://viooh-exchange-ui/./node_modules/lodash/keysIn.js","webpack://viooh-exchange-ui/./node_modules/lodash/last.js","webpack://viooh-exchange-ui/./node_modules/lodash/lodash.js","webpack://viooh-exchange-ui/./node_modules/lodash/memoize.js","webpack://viooh-exchange-ui/./node_modules/lodash/merge.js","webpack://viooh-exchange-ui/./node_modules/lodash/noop.js","webpack://viooh-exchange-ui/./node_modules/lodash/now.js","webpack://viooh-exchange-ui/./node_modules/lodash/pick.js","webpack://viooh-exchange-ui/./node_modules/lodash/property.js","webpack://viooh-exchange-ui/./node_modules/lodash/round.js","webpack://viooh-exchange-ui/./node_modules/lodash/sortBy.js","webpack://viooh-exchange-ui/./node_modules/lodash/stubArray.js","webpack://viooh-exchange-ui/./node_modules/lodash/stubFalse.js","webpack://viooh-exchange-ui/./node_modules/lodash/toFinite.js","webpack://viooh-exchange-ui/./node_modules/lodash/toInteger.js","webpack://viooh-exchange-ui/./node_modules/lodash/toNumber.js","webpack://viooh-exchange-ui/./node_modules/lodash/toPlainObject.js","webpack://viooh-exchange-ui/./node_modules/lodash/toString.js","webpack://viooh-exchange-ui/./node_modules/lodash/uniq.js","webpack://viooh-exchange-ui/./node_modules/lodash/uniqBy.js","webpack://viooh-exchange-ui/./node_modules/lodash/uniqueId.js","webpack://viooh-exchange-ui/./node_modules/lodash/upperFirst.js","webpack://viooh-exchange-ui/./node_modules/long/dist/long.js","webpack://viooh-exchange-ui/./node_modules/@math.gl/core/dist/esm/classes/euler.js","webpack://viooh-exchange-ui/./node_modules/@math.gl/core/dist/esm/classes/pose.js","webpack://viooh-exchange-ui/./node_modules/memoize-one/dist/memoize-one.esm.js","webpack://viooh-exchange-ui/./node_modules/mini-css-extract-plugin/dist/hmr/hotModuleReplacement.js","webpack://viooh-exchange-ui/./node_modules/mini-css-extract-plugin/dist/hmr/normalize-url.js","webpack://viooh-exchange-ui/./node_modules/ag-grid-community/styles/ag-grid.css","webpack://viooh-exchange-ui/./node_modules/ag-grid-community/styles/ag-theme-alpine.css","webpack://viooh-exchange-ui/./node_modules/ag-grid-community/styles/ag-theme-material.css","webpack://viooh-exchange-ui/./node_modules/mapbox-gl/dist/mapbox-gl.css","webpack://viooh-exchange-ui/./node_modules/react-day-picker/dist/style.css","webpack://viooh-exchange-ui/./node_modules/mixpanel-browser/dist/mixpanel.cjs.js","webpack://viooh-exchange-ui/./node_modules/mjolnir.js/dist/esm/utils/hammer-overrides.js","webpack://viooh-exchange-ui/./node_modules/mjolnir.js/dist/esm/utils/hammer.browser.js","webpack://viooh-exchange-ui/./node_modules/mjolnir.js/dist/esm/inputs/input.js","webpack://viooh-exchange-ui/./node_modules/mjolnir.js/dist/esm/constants.js","webpack://viooh-exchange-ui/./node_modules/mjolnir.js/dist/esm/utils/globals.js","webpack://viooh-exchange-ui/./node_modules/mjolnir.js/dist/esm/inputs/wheel-input.js","webpack://viooh-exchange-ui/./node_modules/mjolnir.js/dist/esm/inputs/move-input.js","webpack://viooh-exchange-ui/./node_modules/mjolnir.js/dist/esm/inputs/key-input.js","webpack://viooh-exchange-ui/./node_modules/mjolnir.js/dist/esm/inputs/contextmenu-input.js","webpack://viooh-exchange-ui/./node_modules/mjolnir.js/dist/esm/utils/event-utils.js","webpack://viooh-exchange-ui/./node_modules/mjolnir.js/dist/esm/utils/event-registrar.js","webpack://viooh-exchange-ui/./node_modules/mjolnir.js/dist/esm/event-manager.js","webpack://viooh-exchange-ui/./node_modules/papaparse/papaparse.min.js","webpack://viooh-exchange-ui/./node_modules/pbf/index.js","webpack://viooh-exchange-ui/./node_modules/polygon-clipping/dist/polygon-clipping.umd.js","webpack://viooh-exchange-ui/./node_modules/prop-types/factoryWithThrowingShims.js","webpack://viooh-exchange-ui/./node_modules/prop-types/index.js","webpack://viooh-exchange-ui/./node_modules/prop-types/lib/ReactPropTypesSecret.js","webpack://viooh-exchange-ui/./node_modules/quadbin/dist/cjs/index.js","webpack://viooh-exchange-ui/./node_modules/query-string/index.js","webpack://viooh-exchange-ui/./node_modules/rbush/rbush.min.js","webpack://viooh-exchange-ui/./node_modules/date-fns/esm/startOfMonth/index.js","webpack://viooh-exchange-ui/./node_modules/date-fns/esm/isSameYear/index.js","webpack://viooh-exchange-ui/./node_modules/date-fns/esm/setMonth/index.js","webpack://viooh-exchange-ui/./node_modules/date-fns/esm/getDaysInMonth/index.js","webpack://viooh-exchange-ui/./node_modules/date-fns/esm/setYear/index.js","webpack://viooh-exchange-ui/./node_modules/date-fns/esm/startOfYear/index.js","webpack://viooh-exchange-ui/./node_modules/date-fns/esm/isSameMonth/index.js","webpack://viooh-exchange-ui/./node_modules/date-fns/esm/endOfWeek/index.js","webpack://viooh-exchange-ui/./node_modules/date-fns/esm/endOfISOWeek/index.js","webpack://viooh-exchange-ui/./node_modules/date-fns/esm/max/index.js","webpack://viooh-exchange-ui/./node_modules/date-fns/esm/min/index.js","webpack://viooh-exchange-ui/./node_modules/date-fns/esm/getISOWeek/index.js","webpack://viooh-exchange-ui/./node_modules/date-fns/esm/differenceInCalendarWeeks/index.js","webpack://viooh-exchange-ui/./node_modules/date-fns/esm/getWeeksInMonth/index.js","webpack://viooh-exchange-ui/./node_modules/date-fns/esm/lastDayOfMonth/index.js","webpack://viooh-exchange-ui/./node_modules/react-day-picker/dist/index.esm.js","webpack://viooh-exchange-ui/./node_modules/date-fns/esm/getUnixTime/index.js","webpack://viooh-exchange-ui/./node_modules/date-fns/esm/getTime/index.js","webpack://viooh-exchange-ui/./node_modules/react-dom/cjs/react-dom-server-legacy.browser.production.min.js","webpack://viooh-exchange-ui/./node_modules/react-dom/cjs/react-dom-server.browser.production.min.js","webpack://viooh-exchange-ui/./node_modules/react-dom/cjs/react-dom.production.min.js","webpack://viooh-exchange-ui/./node_modules/react-dom/client.js","webpack://viooh-exchange-ui/./node_modules/react-dom/index.js","webpack://viooh-exchange-ui/./node_modules/react-dom/server.browser.js","webpack://viooh-exchange-ui/./node_modules/react-draggable/build/cjs/Draggable.js","webpack://viooh-exchange-ui/./node_modules/react-draggable/build/cjs/DraggableCore.js","webpack://viooh-exchange-ui/./node_modules/react-draggable/build/cjs/cjs.js","webpack://viooh-exchange-ui/./node_modules/react-draggable/build/cjs/utils/domFns.js","webpack://viooh-exchange-ui/./node_modules/react-draggable/build/cjs/utils/getPrefix.js","webpack://viooh-exchange-ui/./node_modules/react-draggable/build/cjs/utils/log.js","webpack://viooh-exchange-ui/./node_modules/react-draggable/build/cjs/utils/positionFns.js","webpack://viooh-exchange-ui/./node_modules/react-draggable/build/cjs/utils/shims.js","webpack://viooh-exchange-ui/./node_modules/react-draggable/node_modules/clsx/dist/clsx.m.js","webpack://viooh-exchange-ui/./node_modules/file-selector/node_modules/tslib/tslib.es6.mjs","webpack://viooh-exchange-ui/./node_modules/file-selector/dist/es5/file.js","webpack://viooh-exchange-ui/./node_modules/file-selector/dist/es5/file-selector.js","webpack://viooh-exchange-ui/./node_modules/react-dropzone/dist/es/utils/index.js","webpack://viooh-exchange-ui/./node_modules/react-dropzone/dist/es/index.js","webpack://viooh-exchange-ui/./node_modules/react-hook-size/dist/index.js","webpack://viooh-exchange-ui/./node_modules/react-from-dom/esm/helpers.js","webpack://viooh-exchange-ui/./node_modules/react-from-dom/esm/index.js","webpack://viooh-exchange-ui/./node_modules/react-inlinesvg/esm/helpers.js","webpack://viooh-exchange-ui/./node_modules/react-inlinesvg/esm/index.js","webpack://viooh-exchange-ui/./node_modules/react-is/cjs/react-is.production.min.js","webpack://viooh-exchange-ui/./node_modules/react-is/index.js","webpack://viooh-exchange-ui/./node_modules/react-json-to-csv/dist/index.js","webpack://viooh-exchange-ui/./node_modules/react-lifecycles-compat/react-lifecycles-compat.es.js","webpack://viooh-exchange-ui/./node_modules/react-map-gl/dist/esm/utils/globals.js","webpack://viooh-exchange-ui/./node_modules/react-map-gl/dist/esm/utils/style-utils.js","webpack://viooh-exchange-ui/./node_modules/react-map-gl/dist/esm/mapbox/mapbox.js","webpack://viooh-exchange-ui/./node_modules/react-map-gl/dist/esm/utils/math-utils.js","webpack://viooh-exchange-ui/./node_modules/react-map-gl/dist/esm/utils/assert.js","webpack://viooh-exchange-ui/./node_modules/react-map-gl/dist/esm/utils/map-state.js","webpack://viooh-exchange-ui/./node_modules/react-map-gl/dist/esm/components/map-context.js","webpack://viooh-exchange-ui/./node_modules/react-map-gl/dist/esm/utils/use-isomorphic-layout-effect.js","webpack://viooh-exchange-ui/./node_modules/react-map-gl/dist/esm/components/static-map.js","webpack://viooh-exchange-ui/./node_modules/react-map-gl/dist/esm/utils/map-constraints.js","webpack://viooh-exchange-ui/./node_modules/react-map-gl/dist/esm/utils/transition/transition-interpolator.js","webpack://viooh-exchange-ui/./node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js","webpack://viooh-exchange-ui/./node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js","webpack://viooh-exchange-ui/./node_modules/react-map-gl/dist/esm/utils/transition/transition-utils.js","webpack://viooh-exchange-ui/./node_modules/react-map-gl/dist/esm/utils/transition/viewport-fly-to-interpolator.js","webpack://viooh-exchange-ui/./node_modules/react-map-gl/dist/esm/utils/transition/linear-interpolator.js","webpack://viooh-exchange-ui/./node_modules/react-map-gl/dist/esm/utils/transition-manager.js","webpack://viooh-exchange-ui/./node_modules/react-map-gl/dist/esm/utils/map-controller.js","webpack://viooh-exchange-ui/./node_modules/react-map-gl/dist/esm/components/interactive-map.js","webpack://viooh-exchange-ui/./node_modules/react-map-gl/dist/esm/components/source.js","webpack://viooh-exchange-ui/./node_modules/react-map-gl/dist/esm/components/layer.js","webpack://viooh-exchange-ui/./node_modules/react-map-gl/dist/esm/components/use-map-control.js","webpack://viooh-exchange-ui/./node_modules/react-map-gl/dist/esm/components/base-control.js","webpack://viooh-exchange-ui/./node_modules/react-map-gl/dist/esm/components/draggable-control.js","webpack://viooh-exchange-ui/./node_modules/react-map-gl/dist/esm/utils/crisp-pixel.js","webpack://viooh-exchange-ui/./node_modules/react-map-gl/dist/esm/components/marker.js","webpack://viooh-exchange-ui/./node_modules/react-map-gl/dist/esm/utils/dynamic-position.js","webpack://viooh-exchange-ui/./node_modules/react-map-gl/dist/esm/components/popup.js","webpack://viooh-exchange-ui/./node_modules/react-map-gl/dist/esm/components/attribution-control.js","webpack://viooh-exchange-ui/./node_modules/react-map-gl/dist/esm/components/fullscreen-control.js","webpack://viooh-exchange-ui/./node_modules/react-map-gl/dist/esm/utils/geolocate-utils.js","webpack://viooh-exchange-ui/./node_modules/react-map-gl/dist/esm/components/geolocate-control.js","webpack://viooh-exchange-ui/./node_modules/react-map-gl/dist/esm/components/navigation-control.js","webpack://viooh-exchange-ui/./node_modules/react-map-gl/dist/esm/utils/version.js","webpack://viooh-exchange-ui/./node_modules/react-map-gl/dist/esm/components/scale-control.js","webpack://viooh-exchange-ui/./node_modules/react-map-gl/dist/esm/overlays/canvas-overlay.js","webpack://viooh-exchange-ui/./node_modules/react-map-gl/dist/esm/overlays/html-overlay.js","webpack://viooh-exchange-ui/./node_modules/react-map-gl/dist/esm/overlays/svg-overlay.js","webpack://viooh-exchange-ui/./node_modules/react-map-gl/dist/esm/utils/set-rtl-text-plugin.js","webpack://viooh-exchange-ui/./node_modules/react-map-gl/node_modules/mapbox-gl/dist/mapbox-gl.js","webpack://viooh-exchange-ui/./node_modules/react-modal/lib/components/Modal.js","webpack://viooh-exchange-ui/./node_modules/react-modal/lib/components/ModalPortal.js","webpack://viooh-exchange-ui/./node_modules/react-modal/lib/helpers/ariaAppHider.js","webpack://viooh-exchange-ui/./node_modules/react-modal/lib/helpers/bodyTrap.js","webpack://viooh-exchange-ui/./node_modules/react-modal/lib/helpers/classList.js","webpack://viooh-exchange-ui/./node_modules/react-modal/lib/helpers/focusManager.js","webpack://viooh-exchange-ui/./node_modules/react-modal/lib/helpers/portalOpenInstances.js","webpack://viooh-exchange-ui/./node_modules/react-modal/lib/helpers/safeHTMLElement.js","webpack://viooh-exchange-ui/./node_modules/react-modal/lib/helpers/scopeTab.js","webpack://viooh-exchange-ui/./node_modules/react-modal/lib/helpers/tabbable.js","webpack://viooh-exchange-ui/./node_modules/react-modal/lib/index.js","webpack://viooh-exchange-ui/./node_modules/react-modal/node_modules/warning/warning.js","webpack://viooh-exchange-ui/./node_modules/react-redux/es/components/Context.js","webpack://viooh-exchange-ui/./node_modules/react-redux/es/utils/batch.js","webpack://viooh-exchange-ui/./node_modules/react-redux/es/utils/Subscription.js","webpack://viooh-exchange-ui/./node_modules/react-redux/es/utils/useIsomorphicLayoutEffect.js","webpack://viooh-exchange-ui/./node_modules/react-redux/es/components/Provider.js","webpack://viooh-exchange-ui/./node_modules/react-redux/es/components/connectAdvanced.js","webpack://viooh-exchange-ui/./node_modules/react-redux/es/utils/shallowEqual.js","webpack://viooh-exchange-ui/./node_modules/react-redux/es/connect/wrapMapToProps.js","webpack://viooh-exchange-ui/./node_modules/react-redux/es/connect/mapDispatchToProps.js","webpack://viooh-exchange-ui/./node_modules/react-redux/es/utils/bindActionCreators.js","webpack://viooh-exchange-ui/./node_modules/react-redux/es/connect/mapStateToProps.js","webpack://viooh-exchange-ui/./node_modules/react-redux/es/connect/mergeProps.js","webpack://viooh-exchange-ui/./node_modules/react-redux/es/connect/selectorFactory.js","webpack://viooh-exchange-ui/./node_modules/react-redux/es/connect/connect.js","webpack://viooh-exchange-ui/./node_modules/react-redux/es/hooks/useReduxContext.js","webpack://viooh-exchange-ui/./node_modules/react-redux/es/hooks/useStore.js","webpack://viooh-exchange-ui/./node_modules/react-redux/es/hooks/useDispatch.js","webpack://viooh-exchange-ui/./node_modules/react-redux/es/hooks/useSelector.js","webpack://viooh-exchange-ui/./node_modules/react-redux/es/index.js","webpack://viooh-exchange-ui/./node_modules/react-redux/node_modules/react-is/cjs/react-is.production.min.js","webpack://viooh-exchange-ui/./node_modules/react-redux/node_modules/react-is/index.js","webpack://viooh-exchange-ui/./node_modules/react-router-dom/dist/index.js","webpack://viooh-exchange-ui/./node_modules/react-router/dist/index.js","webpack://viooh-exchange-ui/./node_modules/react-select/dist/useAsync-9deee0fa.esm.js","webpack://viooh-exchange-ui/./node_modules/react-select/async/dist/react-select.esm.js","webpack://viooh-exchange-ui/./node_modules/react-select/dist/Select-54ac8379.esm.js","webpack://viooh-exchange-ui/./node_modules/react-select/dist/index-a7690a33.esm.js","webpack://viooh-exchange-ui/./node_modules/@babel/runtime/helpers/esm/taggedTemplateLiteral.js","webpack://viooh-exchange-ui/./node_modules/react-select/dist/react-select.esm.js","webpack://viooh-exchange-ui/./node_modules/react-select/dist/useStateManager-68425271.esm.js","webpack://viooh-exchange-ui/./node_modules/react-tiny-popover/dist/ArrowContainer.js","webpack://viooh-exchange-ui/./node_modules/react-tiny-popover/dist/Popover.js","webpack://viooh-exchange-ui/./node_modules/react-tiny-popover/dist/PopoverPortal.js","webpack://viooh-exchange-ui/./node_modules/react-tiny-popover/dist/useArrowContainer.js","webpack://viooh-exchange-ui/./node_modules/react-tiny-popover/dist/useElementRef.js","webpack://viooh-exchange-ui/./node_modules/react-tiny-popover/dist/useHandlePrevValues.js","webpack://viooh-exchange-ui/./node_modules/react-tiny-popover/dist/useMemoizedArray.js","webpack://viooh-exchange-ui/./node_modules/react-tiny-popover/dist/usePopover.js","webpack://viooh-exchange-ui/./node_modules/react-tiny-popover/dist/util.js","webpack://viooh-exchange-ui/./node_modules/react-virtualized-auto-sizer/dist/react-virtualized-auto-sizer.esm.js","webpack://viooh-exchange-ui/./node_modules/react-window/dist/index.esm.js","webpack://viooh-exchange-ui/./node_modules/react/cjs/react-jsx-runtime.production.min.js","webpack://viooh-exchange-ui/./node_modules/react/cjs/react.production.min.js","webpack://viooh-exchange-ui/./node_modules/react/index.js","webpack://viooh-exchange-ui/./node_modules/react/jsx-runtime.js","webpack://viooh-exchange-ui/./node_modules/redux/es/redux.js","webpack://viooh-exchange-ui/./node_modules/reselect/es/defaultMemoize.js","webpack://viooh-exchange-ui/./node_modules/reselect/es/index.js","webpack://viooh-exchange-ui/./node_modules/resize-observer-polyfill/dist/ResizeObserver.es.js","webpack://viooh-exchange-ui/./node_modules/scheduler/cjs/scheduler.production.min.js","webpack://viooh-exchange-ui/./node_modules/scheduler/index.js","webpack://viooh-exchange-ui/./node_modules/size-sensor/lib/constant.js","webpack://viooh-exchange-ui/./node_modules/size-sensor/lib/debounce.js","webpack://viooh-exchange-ui/./node_modules/size-sensor/lib/id.js","webpack://viooh-exchange-ui/./node_modules/size-sensor/lib/index.js","webpack://viooh-exchange-ui/./node_modules/size-sensor/lib/sensorPool.js","webpack://viooh-exchange-ui/./node_modules/size-sensor/lib/sensors/index.js","webpack://viooh-exchange-ui/./node_modules/size-sensor/lib/sensors/object.js","webpack://viooh-exchange-ui/./node_modules/size-sensor/lib/sensors/resizeObserver.js","webpack://viooh-exchange-ui/./node_modules/split-on-first/index.js","webpack://viooh-exchange-ui/./node_modules/strict-uri-encode/index.js","webpack://viooh-exchange-ui/./node_modules/strnum/strnum.js","webpack://viooh-exchange-ui/./node_modules/normalize.css/normalize.css?342f","webpack://viooh-exchange-ui/./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js","webpack://viooh-exchange-ui/./node_modules/tilebelt/index.js","webpack://viooh-exchange-ui/./node_modules/turf-jsts/jsts.min.js","webpack://viooh-exchange-ui/./node_modules/use-resize-observer/dist/bundle.esm.js","webpack://viooh-exchange-ui/./node_modules/uuid/dist/esm-browser/native.js","webpack://viooh-exchange-ui/./node_modules/uuid/dist/esm-browser/rng.js","webpack://viooh-exchange-ui/./node_modules/uuid/dist/esm-browser/stringify.js","webpack://viooh-exchange-ui/./node_modules/uuid/dist/esm-browser/v4.js","webpack://viooh-exchange-ui/./node_modules/@babel/runtime/helpers/interopRequireDefault.js","webpack://viooh-exchange-ui/./node_modules/@babel/runtime/helpers/typeof.js","webpack://viooh-exchange-ui/./node_modules/core-js/internals/a-callable.js","webpack://viooh-exchange-ui/./node_modules/core-js/internals/an-object.js","webpack://viooh-exchange-ui/./node_modules/core-js/internals/array-includes.js","webpack://viooh-exchange-ui/./node_modules/core-js/internals/array-slice.js","webpack://viooh-exchange-ui/./node_modules/core-js/internals/classof-raw.js","webpack://viooh-exchange-ui/./node_modules/core-js/internals/copy-constructor-properties.js","webpack://viooh-exchange-ui/./node_modules/core-js/internals/create-non-enumerable-property.js","webpack://viooh-exchange-ui/./node_modules/core-js/internals/create-property-descriptor.js","webpack://viooh-exchange-ui/./node_modules/core-js/internals/define-built-in-accessor.js","webpack://viooh-exchange-ui/./node_modules/core-js/internals/define-built-in.js","webpack://viooh-exchange-ui/./node_modules/core-js/internals/define-global-property.js","webpack://viooh-exchange-ui/./node_modules/core-js/internals/descriptors.js","webpack://viooh-exchange-ui/./node_modules/core-js/internals/document-create-element.js","webpack://viooh-exchange-ui/./node_modules/core-js/internals/enum-bug-keys.js","webpack://viooh-exchange-ui/./node_modules/core-js/internals/environment-is-ios.js","webpack://viooh-exchange-ui/./node_modules/core-js/internals/environment-is-node.js","webpack://viooh-exchange-ui/./node_modules/core-js/internals/environment-user-agent.js","webpack://viooh-exchange-ui/./node_modules/core-js/internals/environment-v8-version.js","webpack://viooh-exchange-ui/./node_modules/core-js/internals/environment.js","webpack://viooh-exchange-ui/./node_modules/core-js/internals/export.js","webpack://viooh-exchange-ui/./node_modules/core-js/internals/fails.js","webpack://viooh-exchange-ui/./node_modules/core-js/internals/function-apply.js","webpack://viooh-exchange-ui/./node_modules/core-js/internals/function-bind-context.js","webpack://viooh-exchange-ui/./node_modules/core-js/internals/function-bind-native.js","webpack://viooh-exchange-ui/./node_modules/core-js/internals/function-call.js","webpack://viooh-exchange-ui/./node_modules/core-js/internals/function-name.js","webpack://viooh-exchange-ui/./node_modules/core-js/internals/function-uncurry-this-clause.js","webpack://viooh-exchange-ui/./node_modules/core-js/internals/function-uncurry-this.js","webpack://viooh-exchange-ui/./node_modules/core-js/internals/get-built-in.js","webpack://viooh-exchange-ui/./node_modules/core-js/internals/get-method.js","webpack://viooh-exchange-ui/./node_modules/core-js/internals/global-this.js","webpack://viooh-exchange-ui/./node_modules/core-js/internals/has-own-property.js","webpack://viooh-exchange-ui/./node_modules/core-js/internals/hidden-keys.js","webpack://viooh-exchange-ui/./node_modules/core-js/internals/html.js","webpack://viooh-exchange-ui/./node_modules/core-js/internals/ie8-dom-define.js","webpack://viooh-exchange-ui/./node_modules/core-js/internals/indexed-object.js","webpack://viooh-exchange-ui/./node_modules/core-js/internals/inspect-source.js","webpack://viooh-exchange-ui/./node_modules/core-js/internals/internal-state.js","webpack://viooh-exchange-ui/./node_modules/core-js/internals/is-callable.js","webpack://viooh-exchange-ui/./node_modules/core-js/internals/is-forced.js","webpack://viooh-exchange-ui/./node_modules/core-js/internals/is-null-or-undefined.js","webpack://viooh-exchange-ui/./node_modules/core-js/internals/is-object.js","webpack://viooh-exchange-ui/./node_modules/core-js/internals/is-pure.js","webpack://viooh-exchange-ui/./node_modules/core-js/internals/is-symbol.js","webpack://viooh-exchange-ui/./node_modules/core-js/internals/length-of-array-like.js","webpack://viooh-exchange-ui/./node_modules/core-js/internals/make-built-in.js","webpack://viooh-exchange-ui/./node_modules/core-js/internals/math-trunc.js","webpack://viooh-exchange-ui/./node_modules/core-js/internals/object-define-property.js","webpack://viooh-exchange-ui/./node_modules/core-js/internals/object-get-own-property-descriptor.js","webpack://viooh-exchange-ui/./node_modules/core-js/internals/object-get-own-property-names.js","webpack://viooh-exchange-ui/./node_modules/core-js/internals/object-get-own-property-symbols.js","webpack://viooh-exchange-ui/./node_modules/core-js/internals/object-is-prototype-of.js","webpack://viooh-exchange-ui/./node_modules/core-js/internals/object-keys-internal.js","webpack://viooh-exchange-ui/./node_modules/core-js/internals/object-property-is-enumerable.js","webpack://viooh-exchange-ui/./node_modules/core-js/internals/ordinary-to-primitive.js","webpack://viooh-exchange-ui/./node_modules/core-js/internals/own-keys.js","webpack://viooh-exchange-ui/./node_modules/core-js/internals/regexp-flags.js","webpack://viooh-exchange-ui/./node_modules/core-js/internals/require-object-coercible.js","webpack://viooh-exchange-ui/./node_modules/core-js/internals/schedulers-fix.js","webpack://viooh-exchange-ui/./node_modules/core-js/internals/shared-key.js","webpack://viooh-exchange-ui/./node_modules/core-js/internals/shared-store.js","webpack://viooh-exchange-ui/./node_modules/core-js/internals/shared.js","webpack://viooh-exchange-ui/./node_modules/core-js/internals/symbol-constructor-detection.js","webpack://viooh-exchange-ui/./node_modules/core-js/internals/task.js","webpack://viooh-exchange-ui/./node_modules/core-js/internals/to-absolute-index.js","webpack://viooh-exchange-ui/./node_modules/core-js/internals/to-indexed-object.js","webpack://viooh-exchange-ui/./node_modules/core-js/internals/to-integer-or-infinity.js","webpack://viooh-exchange-ui/./node_modules/core-js/internals/to-length.js","webpack://viooh-exchange-ui/./node_modules/core-js/internals/to-object.js","webpack://viooh-exchange-ui/./node_modules/core-js/internals/to-primitive.js","webpack://viooh-exchange-ui/./node_modules/core-js/internals/to-property-key.js","webpack://viooh-exchange-ui/./node_modules/core-js/internals/try-to-string.js","webpack://viooh-exchange-ui/./node_modules/core-js/internals/uid.js","webpack://viooh-exchange-ui/./node_modules/core-js/internals/use-symbol-as-uid.js","webpack://viooh-exchange-ui/./node_modules/core-js/internals/v8-prototype-define-bug.js","webpack://viooh-exchange-ui/./node_modules/core-js/internals/validate-arguments-length.js","webpack://viooh-exchange-ui/./node_modules/core-js/internals/weak-map-basic-detection.js","webpack://viooh-exchange-ui/./node_modules/core-js/internals/well-known-symbol.js","webpack://viooh-exchange-ui/./node_modules/core-js/modules/es.regexp.flags.js","webpack://viooh-exchange-ui/./node_modules/core-js/modules/web.clear-immediate.js","webpack://viooh-exchange-ui/./node_modules/core-js/modules/web.immediate.js","webpack://viooh-exchange-ui/./node_modules/core-js/modules/web.set-immediate.js","webpack://viooh-exchange-ui/./node_modules/json-as-xlsx/dist/index.js","webpack://viooh-exchange-ui/./node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js","webpack://viooh-exchange-ui/./node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","webpack://viooh-exchange-ui/./node_modules/@babel/runtime/helpers/esm/classCallCheck.js","webpack://viooh-exchange-ui/./node_modules/@babel/runtime/helpers/esm/createClass.js","webpack://viooh-exchange-ui/./node_modules/@babel/runtime/helpers/esm/defineProperty.js","webpack://viooh-exchange-ui/./node_modules/@babel/runtime/helpers/esm/extends.js","webpack://viooh-exchange-ui/./node_modules/@babel/runtime/helpers/esm/inherits.js","webpack://viooh-exchange-ui/./node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","webpack://viooh-exchange-ui/./node_modules/@babel/runtime/helpers/esm/objectSpread2.js","webpack://viooh-exchange-ui/./node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js","webpack://viooh-exchange-ui/./node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","webpack://viooh-exchange-ui/./node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","webpack://viooh-exchange-ui/./node_modules/@babel/runtime/helpers/esm/slicedToArray.js","webpack://viooh-exchange-ui/./node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js","webpack://viooh-exchange-ui/./node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js","webpack://viooh-exchange-ui/./node_modules/@babel/runtime/helpers/esm/nonIterableRest.js","webpack://viooh-exchange-ui/./node_modules/@babel/runtime/helpers/esm/toConsumableArray.js","webpack://viooh-exchange-ui/./node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js","webpack://viooh-exchange-ui/./node_modules/@babel/runtime/helpers/esm/iterableToArray.js","webpack://viooh-exchange-ui/./node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js","webpack://viooh-exchange-ui/./node_modules/@babel/runtime/helpers/esm/toPropertyKey.js","webpack://viooh-exchange-ui/./node_modules/@babel/runtime/helpers/esm/toPrimitive.js","webpack://viooh-exchange-ui/./node_modules/@babel/runtime/helpers/esm/typeof.js","webpack://viooh-exchange-ui/./node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js","webpack://viooh-exchange-ui/./node_modules/fast-equals/dist/es/index.mjs","webpack://viooh-exchange-ui/./node_modules/@googlemaps/markerclusterer/dist/index.esm.mjs","webpack://viooh-exchange-ui/./node_modules/axios/index.js","webpack://viooh-exchange-ui/./node_modules/axios/lib/helpers/bind.js","webpack://viooh-exchange-ui/./node_modules/axios/lib/utils.js","webpack://viooh-exchange-ui/./node_modules/axios/lib/core/AxiosError.js","webpack://viooh-exchange-ui/./node_modules/axios/lib/helpers/toFormData.js","webpack://viooh-exchange-ui/./node_modules/axios/lib/helpers/AxiosURLSearchParams.js","webpack://viooh-exchange-ui/./node_modules/axios/lib/helpers/buildURL.js","webpack://viooh-exchange-ui/./node_modules/axios/lib/core/InterceptorManager.js","webpack://viooh-exchange-ui/./node_modules/axios/lib/defaults/transitional.js","webpack://viooh-exchange-ui/./node_modules/axios/lib/platform/browser/index.js","webpack://viooh-exchange-ui/./node_modules/axios/lib/platform/browser/classes/URLSearchParams.js","webpack://viooh-exchange-ui/./node_modules/axios/lib/platform/browser/classes/FormData.js","webpack://viooh-exchange-ui/./node_modules/axios/lib/platform/browser/classes/Blob.js","webpack://viooh-exchange-ui/./node_modules/axios/lib/platform/common/utils.js","webpack://viooh-exchange-ui/./node_modules/axios/lib/platform/index.js","webpack://viooh-exchange-ui/./node_modules/axios/lib/helpers/formDataToJSON.js","webpack://viooh-exchange-ui/./node_modules/axios/lib/defaults/index.js","webpack://viooh-exchange-ui/./node_modules/axios/lib/helpers/toURLEncodedForm.js","webpack://viooh-exchange-ui/./node_modules/axios/lib/helpers/parseHeaders.js","webpack://viooh-exchange-ui/./node_modules/axios/lib/core/AxiosHeaders.js","webpack://viooh-exchange-ui/./node_modules/axios/lib/core/transformData.js","webpack://viooh-exchange-ui/./node_modules/axios/lib/cancel/isCancel.js","webpack://viooh-exchange-ui/./node_modules/axios/lib/cancel/CanceledError.js","webpack://viooh-exchange-ui/./node_modules/axios/lib/core/settle.js","webpack://viooh-exchange-ui/./node_modules/axios/lib/helpers/speedometer.js","webpack://viooh-exchange-ui/./node_modules/axios/lib/helpers/progressEventReducer.js","webpack://viooh-exchange-ui/./node_modules/axios/lib/helpers/throttle.js","webpack://viooh-exchange-ui/./node_modules/axios/lib/helpers/isURLSameOrigin.js","webpack://viooh-exchange-ui/./node_modules/axios/lib/helpers/cookies.js","webpack://viooh-exchange-ui/./node_modules/axios/lib/core/buildFullPath.js","webpack://viooh-exchange-ui/./node_modules/axios/lib/helpers/isAbsoluteURL.js","webpack://viooh-exchange-ui/./node_modules/axios/lib/helpers/combineURLs.js","webpack://viooh-exchange-ui/./node_modules/axios/lib/core/mergeConfig.js","webpack://viooh-exchange-ui/./node_modules/axios/lib/helpers/resolveConfig.js","webpack://viooh-exchange-ui/./node_modules/axios/lib/adapters/xhr.js","webpack://viooh-exchange-ui/./node_modules/axios/lib/helpers/parseProtocol.js","webpack://viooh-exchange-ui/./node_modules/axios/lib/helpers/composeSignals.js","webpack://viooh-exchange-ui/./node_modules/axios/lib/helpers/trackStream.js","webpack://viooh-exchange-ui/./node_modules/axios/lib/adapters/fetch.js","webpack://viooh-exchange-ui/./node_modules/axios/lib/adapters/adapters.js","webpack://viooh-exchange-ui/./node_modules/axios/lib/helpers/null.js","webpack://viooh-exchange-ui/./node_modules/axios/lib/core/dispatchRequest.js","webpack://viooh-exchange-ui/./node_modules/axios/lib/env/data.js","webpack://viooh-exchange-ui/./node_modules/axios/lib/helpers/validator.js","webpack://viooh-exchange-ui/./node_modules/axios/lib/core/Axios.js","webpack://viooh-exchange-ui/./node_modules/axios/lib/cancel/CancelToken.js","webpack://viooh-exchange-ui/./node_modules/axios/lib/helpers/HttpStatusCode.js","webpack://viooh-exchange-ui/./node_modules/axios/lib/axios.js","webpack://viooh-exchange-ui/./node_modules/axios/lib/helpers/spread.js","webpack://viooh-exchange-ui/./node_modules/axios/lib/helpers/isAxiosError.js","webpack://viooh-exchange-ui/./node_modules/date-fns-tz/esm/_lib/newDateUTC/index.js","webpack://viooh-exchange-ui/./node_modules/date-fns-tz/esm/_lib/tzTokenizeDate/index.js","webpack://viooh-exchange-ui/./node_modules/date-fns-tz/esm/_lib/tzParseTimezone/index.js","webpack://viooh-exchange-ui/./node_modules/date-fns-tz/esm/_lib/tzPattern/index.js","webpack://viooh-exchange-ui/./node_modules/date-fns-tz/esm/_lib/tzIntlTimeZoneName/index.js","webpack://viooh-exchange-ui/./node_modules/date-fns-tz/esm/format/formatters/index.js","webpack://viooh-exchange-ui/./node_modules/date-fns-tz/esm/format/index.js","webpack://viooh-exchange-ui/./node_modules/date-fns-tz/esm/toDate/index.js","webpack://viooh-exchange-ui/./node_modules/date-fns-tz/esm/utcToZonedTime/index.js","webpack://viooh-exchange-ui/./node_modules/date-fns-tz/esm/zonedTimeToUtc/index.js","webpack://viooh-exchange-ui/./node_modules/immer/dist/immer.esm.mjs","webpack://viooh-exchange-ui/./node_modules/kdbush/index.js","webpack://viooh-exchange-ui/./node_modules/keycloak-js/lib/keycloak.js","webpack://viooh-exchange-ui/./node_modules/spacetime/src/timezone/summerTime.js","webpack://viooh-exchange-ui/./node_modules/spacetime/zonefile/_build.js","webpack://viooh-exchange-ui/./node_modules/spacetime/zonefile/_prefixes.js","webpack://viooh-exchange-ui/./node_modules/spacetime/zonefile/unpack.js","webpack://viooh-exchange-ui/./node_modules/spacetime/src/timezone/parseOffset.js","webpack://viooh-exchange-ui/./node_modules/spacetime/src/timezone/find.js","webpack://viooh-exchange-ui/./node_modules/spacetime/src/timezone/guessTz.js","webpack://viooh-exchange-ui/./node_modules/spacetime/src/fns.js","webpack://viooh-exchange-ui/./node_modules/spacetime/src/input/helpers.js","webpack://viooh-exchange-ui/./node_modules/spacetime/src/input/named-dates.js","webpack://viooh-exchange-ui/./node_modules/spacetime/src/data/milliseconds.js","webpack://viooh-exchange-ui/./node_modules/spacetime/src/methods/set/walk.js","webpack://viooh-exchange-ui/./node_modules/spacetime/src/data/monthLengths.js","webpack://viooh-exchange-ui/./node_modules/spacetime/src/data/months.js","webpack://viooh-exchange-ui/./node_modules/spacetime/src/input/formats/_parsers.js","webpack://viooh-exchange-ui/./node_modules/spacetime/src/input/formats/parseTime.js","webpack://viooh-exchange-ui/./node_modules/spacetime/src/input/formats/index.js","webpack://viooh-exchange-ui/./node_modules/spacetime/src/input/formats/01-ymd.js","webpack://viooh-exchange-ui/./node_modules/spacetime/src/input/formats/parseOffset.js","webpack://viooh-exchange-ui/./node_modules/spacetime/src/input/formats/02-mdy.js","webpack://viooh-exchange-ui/./node_modules/spacetime/src/input/formats/03-dmy.js","webpack://viooh-exchange-ui/./node_modules/spacetime/src/input/formats/04-misc.js","webpack://viooh-exchange-ui/./node_modules/spacetime/src/input/index.js","webpack://viooh-exchange-ui/./node_modules/spacetime/src/input/normalize.js","webpack://viooh-exchange-ui/./node_modules/spacetime/src/input/parse.js","webpack://viooh-exchange-ui/./node_modules/spacetime/src/data/days.js","webpack://viooh-exchange-ui/./node_modules/spacetime/src/data/caseFormat.js","webpack://viooh-exchange-ui/./node_modules/spacetime/src/methods/format/_offset.js","webpack://viooh-exchange-ui/./node_modules/spacetime/src/methods/format/index.js","webpack://viooh-exchange-ui/./node_modules/spacetime/src/methods/format/unixFmt.js","webpack://viooh-exchange-ui/./node_modules/spacetime/src/methods/progress.js","webpack://viooh-exchange-ui/./node_modules/spacetime/src/methods/diff/one.js","webpack://viooh-exchange-ui/./node_modules/spacetime/src/methods/diff/index.js","webpack://viooh-exchange-ui/./node_modules/spacetime/src/methods/diff/waterfall.js","webpack://viooh-exchange-ui/./node_modules/spacetime/src/methods/since/_iso.js","webpack://viooh-exchange-ui/./node_modules/spacetime/src/methods/since/soften.js","webpack://viooh-exchange-ui/./node_modules/spacetime/src/methods/since/index.js","webpack://viooh-exchange-ui/./node_modules/spacetime/src/methods/since/getDiff.js","webpack://viooh-exchange-ui/./node_modules/spacetime/src/data/seasons.js","webpack://viooh-exchange-ui/./node_modules/spacetime/src/data/quarters.js","webpack://viooh-exchange-ui/./node_modules/spacetime/src/methods/startOf.js","webpack://viooh-exchange-ui/./node_modules/spacetime/src/timezone/index.js","webpack://viooh-exchange-ui/./node_modules/spacetime/src/methods.js","webpack://viooh-exchange-ui/./node_modules/spacetime/src/methods/nearest.js","webpack://viooh-exchange-ui/./node_modules/spacetime/src/methods/every.js","webpack://viooh-exchange-ui/./node_modules/spacetime/src/methods/set/set.js","webpack://viooh-exchange-ui/./node_modules/spacetime/src/data/ampm.js","webpack://viooh-exchange-ui/./node_modules/spacetime/src/methods/query/01-time.js","webpack://viooh-exchange-ui/./node_modules/spacetime/src/methods/query/02-date.js","webpack://viooh-exchange-ui/./node_modules/spacetime/src/methods/query/03-year.js","webpack://viooh-exchange-ui/./node_modules/spacetime/src/methods/query/index.js","webpack://viooh-exchange-ui/./node_modules/spacetime/src/methods/set/_model.js","webpack://viooh-exchange-ui/./node_modules/spacetime/src/methods/add.js","webpack://viooh-exchange-ui/./node_modules/spacetime/src/methods/same.js","webpack://viooh-exchange-ui/./node_modules/spacetime/src/spacetime.js","webpack://viooh-exchange-ui/./node_modules/spacetime/src/timezone/quick.js","webpack://viooh-exchange-ui/./node_modules/spacetime/src/methods/compare.js","webpack://viooh-exchange-ui/./node_modules/spacetime/src/methods/i18n.js","webpack://viooh-exchange-ui/./node_modules/spacetime/src/index.js","webpack://viooh-exchange-ui/./node_modules/spacetime/src/whereIts.js","webpack://viooh-exchange-ui/./node_modules/spacetime/src/_version.js","webpack://viooh-exchange-ui/./node_modules/supercluster/index.js","webpack://viooh-exchange-ui/./node_modules/xlsx/xlsx.mjs"],"sourcesContent":["var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},e(t,n)};function t(t,n){if(\"function\"!=typeof n&&null!==n)throw new TypeError(\"Class extends value \"+String(n)+\" is not a constructor or null\");function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}var n=function(){return n=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++)for(var o in t=arguments[n])Object.prototype.hasOwnProperty.call(t,o)&&(e[o]=t[o]);return e},n.apply(this,arguments)};function r(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(null!=e&&\"function\"==typeof Object.getOwnPropertySymbols){var o=0;for(r=Object.getOwnPropertySymbols(e);o<r.length;o++)t.indexOf(r[o])<0&&Object.prototype.propertyIsEnumerable.call(e,r[o])&&(n[r[o]]=e[r[o]])}return n}function o(e,t,n,r){return new(n||(n=Promise))((function(o,i){function c(e){try{s(r.next(e))}catch(e){i(e)}}function a(e){try{s(r.throw(e))}catch(e){i(e)}}function s(e){var t;e.done?o(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(c,a)}s((r=r.apply(e,t||[])).next())}))}function i(e,t){var n,r,o,i,c={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:a(0),throw:a(1),return:a(2)},\"function\"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function a(i){return function(a){return function(i){if(n)throw new TypeError(\"Generator is already executing.\");for(;c;)try{if(n=1,r&&(o=2&i[0]?r.return:i[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,i[1])).done)return o;switch(r=0,o&&(i=[2&i[0],o.value]),i[0]){case 0:case 1:o=i;break;case 4:return c.label++,{value:i[1],done:!1};case 5:c.label++,r=i[1],i=[0];continue;case 7:i=c.ops.pop(),c.trys.pop();continue;default:if(!(o=c.trys,(o=o.length>0&&o[o.length-1])||6!==i[0]&&2!==i[0])){c=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]<o[3])){c.label=i[1];break}if(6===i[0]&&c.label<o[1]){c.label=o[1],o=i;break}if(o&&c.label<o[2]){c.label=o[2],c.ops.push(i);break}o[2]&&c.ops.pop(),c.trys.pop();continue}i=t.call(e,c)}catch(e){i=[6,e],r=0}finally{n=o=0}if(5&i[0])throw i[1];return{value:i[0]?i[1]:void 0,done:!0}}([i,a])}}}function c(e,t){var n=\"function\"==typeof Symbol&&e[Symbol.iterator];if(!n)return e;var r,o,i=n.call(e),c=[];try{for(;(void 0===t||t-- >0)&&!(r=i.next()).done;)c.push(r.value)}catch(e){o={error:e}}finally{try{r&&!r.done&&(n=i.return)&&n.call(i)}finally{if(o)throw o.error}}return c}function a(e,t,n){if(n||2===arguments.length)for(var r,o=0,i=t.length;o<i;o++)!r&&o in t||(r||(r=Array.prototype.slice.call(t,0,o)),r[o]=t[o]);return e.concat(r||Array.prototype.slice.call(t))}var s=\"undefined\"!=typeof globalThis?globalThis:\"undefined\"!=typeof window?window:\"undefined\"!=typeof global?global:\"undefined\"!=typeof self?self:{};function u(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,\"default\")?e.default:e}function l(e,t){return e(t={exports:{}},t.exports),t.exports}var f,d,h=function(e){return e&&e.Math==Math&&e},p=h(\"object\"==typeof globalThis&&globalThis)||h(\"object\"==typeof window&&window)||h(\"object\"==typeof self&&self)||h(\"object\"==typeof s&&s)||function(){return this}()||Function(\"return this\")(),y=function(e){try{return!!e()}catch(e){return!0}},v=!y((function(){return 7!=Object.defineProperty({},1,{get:function(){return 7}})[1]})),m=!y((function(){var e=function(){}.bind();return\"function\"!=typeof e||e.hasOwnProperty(\"prototype\")})),b=Function.prototype.call,g=m?b.bind(b):function(){return b.apply(b,arguments)},w={}.propertyIsEnumerable,S=Object.getOwnPropertyDescriptor,k=S&&!w.call({1:2},1)?function(e){var t=S(this,e);return!!t&&t.enumerable}:w,_={f:k},I=function(e,t){return{enumerable:!(1&e),configurable:!(2&e),writable:!(4&e),value:t}},O=Function,x=O.prototype,T=x.bind,C=x.call,j=m&&T.bind(C,C),L=function(e){return e instanceof O?m?j(e):function(){return C.apply(e,arguments)}:void 0},R=L({}.toString),W=L(\"\".slice),Z=function(e){return W(R(e),8,-1)},E=Object,G=L(\"\".split),A=y((function(){return!E(\"z\").propertyIsEnumerable(0)}))?function(e){return\"String\"==Z(e)?G(e,\"\"):E(e)}:E,P=function(e){return null==e},X=TypeError,F=function(e){if(P(e))throw X(\"Can't call method on \"+e);return e},K=function(e){return A(F(e))},N=\"object\"==typeof document&&document.all,U={all:N,IS_HTMLDDA:void 0===N&&void 0!==N},D=U.all,H=U.IS_HTMLDDA?function(e){return\"function\"==typeof e||e===D}:function(e){return\"function\"==typeof e},Y=U.all,J=U.IS_HTMLDDA?function(e){return\"object\"==typeof e?null!==e:H(e)||e===Y}:function(e){return\"object\"==typeof e?null!==e:H(e)},V=function(e){return H(e)?e:void 0},z=function(e,t){return arguments.length<2?V(p[e]):p[e]&&p[e][t]},M=L({}.isPrototypeOf),B=z(\"navigator\",\"userAgent\")||\"\",Q=p.process,q=p.Deno,$=Q&&Q.versions||q&&q.version,ee=$&&$.v8;ee&&(d=(f=ee.split(\".\"))[0]>0&&f[0]<4?1:+(f[0]+f[1])),!d&&B&&(!(f=B.match(/Edge\\/(\\d+)/))||f[1]>=74)&&(f=B.match(/Chrome\\/(\\d+)/))&&(d=+f[1]);var te=d,ne=!!Object.getOwnPropertySymbols&&!y((function(){var e=Symbol();return!String(e)||!(Object(e)instanceof Symbol)||!Symbol.sham&&te&&te<41})),re=ne&&!Symbol.sham&&\"symbol\"==typeof Symbol.iterator,oe=Object,ie=re?function(e){return\"symbol\"==typeof e}:function(e){var t=z(\"Symbol\");return H(t)&&M(t.prototype,oe(e))},ce=String,ae=function(e){try{return ce(e)}catch(e){return\"Object\"}},se=TypeError,ue=function(e){if(H(e))return e;throw se(ae(e)+\" is not a function\")},le=function(e,t){var n=e[t];return P(n)?void 0:ue(n)},fe=TypeError,de=Object.defineProperty,he=function(e,t){try{de(p,e,{value:t,configurable:!0,writable:!0})}catch(n){p[e]=t}return t},pe=p[\"__core-js_shared__\"]||he(\"__core-js_shared__\",{}),ye=l((function(e){(e.exports=function(e,t){return pe[e]||(pe[e]=void 0!==t?t:{})})(\"versions\",[]).push({version:\"3.25.4\",mode:\"global\",copyright:\"© 2014-2022 Denis Pushkarev (zloirock.ru)\",license:\"https://github.com/zloirock/core-js/blob/v3.25.4/LICENSE\",source:\"https://github.com/zloirock/core-js\"})})),ve=Object,me=function(e){return ve(F(e))},be=L({}.hasOwnProperty),ge=Object.hasOwn||function(e,t){return be(me(e),t)},we=0,Se=Math.random(),ke=L(1..toString),_e=function(e){return\"Symbol(\"+(void 0===e?\"\":e)+\")_\"+ke(++we+Se,36)},Ie=ye(\"wks\"),Oe=p.Symbol,xe=Oe&&Oe.for,Te=re?Oe:Oe&&Oe.withoutSetter||_e,Ce=function(e){if(!ge(Ie,e)||!ne&&\"string\"!=typeof Ie[e]){var t=\"Symbol.\"+e;ne&&ge(Oe,e)?Ie[e]=Oe[e]:Ie[e]=re&&xe?xe(t):Te(t)}return Ie[e]},je=TypeError,Le=Ce(\"toPrimitive\"),Re=function(e,t){if(!J(e)||ie(e))return e;var n,r=le(e,Le);if(r){if(void 0===t&&(t=\"default\"),n=g(r,e,t),!J(n)||ie(n))return n;throw je(\"Can't convert object to primitive value\")}return void 0===t&&(t=\"number\"),function(e,t){var n,r;if(\"string\"===t&&H(n=e.toString)&&!J(r=g(n,e)))return r;if(H(n=e.valueOf)&&!J(r=g(n,e)))return r;if(\"string\"!==t&&H(n=e.toString)&&!J(r=g(n,e)))return r;throw fe(\"Can't convert object to primitive value\")}(e,t)},We=function(e){var t=Re(e,\"string\");return ie(t)?t:t+\"\"},Ze=p.document,Ee=J(Ze)&&J(Ze.createElement),Ge=function(e){return Ee?Ze.createElement(e):{}},Ae=!v&&!y((function(){return 7!=Object.defineProperty(Ge(\"div\"),\"a\",{get:function(){return 7}}).a})),Pe=Object.getOwnPropertyDescriptor,Xe={f:v?Pe:function(e,t){if(e=K(e),t=We(t),Ae)try{return Pe(e,t)}catch(e){}if(ge(e,t))return I(!g(_.f,e,t),e[t])}},Fe=v&&y((function(){return 42!=Object.defineProperty((function(){}),\"prototype\",{value:42,writable:!1}).prototype})),Ke=String,Ne=TypeError,Ue=function(e){if(J(e))return e;throw Ne(Ke(e)+\" is not an object\")},De=TypeError,He=Object.defineProperty,Ye=Object.getOwnPropertyDescriptor,Je={f:v?Fe?function(e,t,n){if(Ue(e),t=We(t),Ue(n),\"function\"==typeof e&&\"prototype\"===t&&\"value\"in n&&\"writable\"in n&&!n.writable){var r=Ye(e,t);r&&r.writable&&(e[t]=n.value,n={configurable:\"configurable\"in n?n.configurable:r.configurable,enumerable:\"enumerable\"in n?n.enumerable:r.enumerable,writable:!1})}return He(e,t,n)}:He:function(e,t,n){if(Ue(e),t=We(t),Ue(n),Ae)try{return He(e,t,n)}catch(e){}if(\"get\"in n||\"set\"in n)throw De(\"Accessors not supported\");return\"value\"in n&&(e[t]=n.value),e}},Ve=v?function(e,t,n){return Je.f(e,t,I(1,n))}:function(e,t,n){return e[t]=n,e},ze=Function.prototype,Me=v&&Object.getOwnPropertyDescriptor,Be=ge(ze,\"name\"),Qe={EXISTS:Be,PROPER:Be&&\"something\"===function(){}.name,CONFIGURABLE:Be&&(!v||v&&Me(ze,\"name\").configurable)},qe=L(Function.toString);H(pe.inspectSource)||(pe.inspectSource=function(e){return qe(e)});var $e,et,tt,nt=pe.inspectSource,rt=p.WeakMap,ot=H(rt)&&/native code/.test(String(rt)),it=ye(\"keys\"),ct=function(e){return it[e]||(it[e]=_e(e))},at={},st=p.TypeError,ut=p.WeakMap;if(ot||pe.state){var lt=pe.state||(pe.state=new ut),ft=L(lt.get),dt=L(lt.has),ht=L(lt.set);$e=function(e,t){if(dt(lt,e))throw st(\"Object already initialized\");return t.facade=e,ht(lt,e,t),t},et=function(e){return ft(lt,e)||{}},tt=function(e){return dt(lt,e)}}else{var pt=ct(\"state\");at[pt]=!0,$e=function(e,t){if(ge(e,pt))throw st(\"Object already initialized\");return t.facade=e,Ve(e,pt,t),t},et=function(e){return ge(e,pt)?e[pt]:{}},tt=function(e){return ge(e,pt)}}var yt={set:$e,get:et,has:tt,enforce:function(e){return tt(e)?et(e):$e(e,{})},getterFor:function(e){return function(t){var n;if(!J(t)||(n=et(t)).type!==e)throw st(\"Incompatible receiver, \"+e+\" required\");return n}}},vt=l((function(e){var t=Qe.CONFIGURABLE,n=yt.enforce,r=yt.get,o=Object.defineProperty,i=v&&!y((function(){return 8!==o((function(){}),\"length\",{value:8}).length})),c=String(String).split(\"String\"),a=e.exports=function(e,r,a){\"Symbol(\"===String(r).slice(0,7)&&(r=\"[\"+String(r).replace(/^Symbol\\(([^)]*)\\)/,\"$1\")+\"]\"),a&&a.getter&&(r=\"get \"+r),a&&a.setter&&(r=\"set \"+r),(!ge(e,\"name\")||t&&e.name!==r)&&(v?o(e,\"name\",{value:r,configurable:!0}):e.name=r),i&&a&&ge(a,\"arity\")&&e.length!==a.arity&&o(e,\"length\",{value:a.arity});try{a&&ge(a,\"constructor\")&&a.constructor?v&&o(e,\"prototype\",{writable:!1}):e.prototype&&(e.prototype=void 0)}catch(e){}var s=n(e);return ge(s,\"source\")||(s.source=c.join(\"string\"==typeof r?r:\"\")),e};Function.prototype.toString=a((function(){return H(this)&&r(this).source||nt(this)}),\"toString\")})),mt=function(e,t,n,r){r||(r={});var o=r.enumerable,i=void 0!==r.name?r.name:t;if(H(n)&&vt(n,i,r),r.global)o?e[t]=n:he(t,n);else{try{r.unsafe?e[t]&&(o=!0):delete e[t]}catch(e){}o?e[t]=n:Je.f(e,t,{value:n,enumerable:!1,configurable:!r.nonConfigurable,writable:!r.nonWritable})}return e},bt=Math.ceil,gt=Math.floor,wt=Math.trunc||function(e){var t=+e;return(t>0?gt:bt)(t)},St=function(e){var t=+e;return t!=t||0===t?0:wt(t)},kt=Math.max,_t=Math.min,It=function(e,t){var n=St(e);return n<0?kt(n+t,0):_t(n,t)},Ot=Math.min,xt=function(e){return e>0?Ot(St(e),9007199254740991):0},Tt=function(e){return xt(e.length)},Ct=function(e){return function(t,n,r){var o,i=K(t),c=Tt(i),a=It(r,c);if(e&&n!=n){for(;c>a;)if((o=i[a++])!=o)return!0}else for(;c>a;a++)if((e||a in i)&&i[a]===n)return e||a||0;return!e&&-1}},jt={includes:Ct(!0),indexOf:Ct(!1)},Lt=jt.indexOf,Rt=L([].push),Wt=function(e,t){var n,r=K(e),o=0,i=[];for(n in r)!ge(at,n)&&ge(r,n)&&Rt(i,n);for(;t.length>o;)ge(r,n=t[o++])&&(~Lt(i,n)||Rt(i,n));return i},Zt=[\"constructor\",\"hasOwnProperty\",\"isPrototypeOf\",\"propertyIsEnumerable\",\"toLocaleString\",\"toString\",\"valueOf\"],Et=Zt.concat(\"length\",\"prototype\"),Gt={f:Object.getOwnPropertyNames||function(e){return Wt(e,Et)}},At={f:Object.getOwnPropertySymbols},Pt=L([].concat),Xt=z(\"Reflect\",\"ownKeys\")||function(e){var t=Gt.f(Ue(e)),n=At.f;return n?Pt(t,n(e)):t},Ft=function(e,t,n){for(var r=Xt(t),o=Je.f,i=Xe.f,c=0;c<r.length;c++){var a=r[c];ge(e,a)||n&&ge(n,a)||o(e,a,i(t,a))}},Kt=/#|\\.prototype\\./,Nt=function(e,t){var n=Dt[Ut(e)];return n==Yt||n!=Ht&&(H(t)?y(t):!!t)},Ut=Nt.normalize=function(e){return String(e).replace(Kt,\".\").toLowerCase()},Dt=Nt.data={},Ht=Nt.NATIVE=\"N\",Yt=Nt.POLYFILL=\"P\",Jt=Nt,Vt=Xe.f,zt=function(e,t){var n,r,o,i,c,a=e.target,s=e.global,u=e.stat;if(n=s?p:u?p[a]||he(a,{}):(p[a]||{}).prototype)for(r in t){if(i=t[r],o=e.dontCallGetSet?(c=Vt(n,r))&&c.value:n[r],!Jt(s?r:a+(u?\".\":\"#\")+r,e.forced)&&void 0!==o){if(typeof i==typeof o)continue;Ft(i,o)}(e.sham||o&&o.sham)&&Ve(i,\"sham\",!0),mt(n,r,i,e)}},Mt={};Mt[Ce(\"toStringTag\")]=\"z\";var Bt,Qt=\"[object z]\"===String(Mt),qt=Ce(\"toStringTag\"),$t=Object,en=\"Arguments\"==Z(function(){return arguments}()),tn=Qt?Z:function(e){var t,n,r;return void 0===e?\"Undefined\":null===e?\"Null\":\"string\"==typeof(n=function(e,t){try{return e[t]}catch(e){}}(t=$t(e),qt))?n:en?Z(t):\"Object\"==(r=Z(t))&&H(t.callee)?\"Arguments\":r},nn=String,rn=function(e){if(\"Symbol\"===tn(e))throw TypeError(\"Cannot convert a Symbol value to a string\");return nn(e)},on=Ce(\"match\"),cn=TypeError,an=function(e){if(function(e){var t;return J(e)&&(void 0!==(t=e[on])?!!t:\"RegExp\"==Z(e))}(e))throw cn(\"The method doesn't accept regular expressions\");return e},sn=Ce(\"match\"),un=function(e){var t=/./;try{\"/./\"[e](t)}catch(n){try{return t[sn]=!1,\"/./\"[e](t)}catch(e){}}return!1},ln=Xe.f,fn=L(\"\".startsWith),dn=L(\"\".slice),hn=Math.min,pn=un(\"startsWith\"),yn=!(pn||(Bt=ln(String.prototype,\"startsWith\"),!Bt||Bt.writable));zt({target:\"String\",proto:!0,forced:!yn&&!pn},{startsWith:function(e){var t=rn(F(this));an(e);var n=xt(hn(arguments.length>1?arguments[1]:void 0,t.length)),r=rn(e);return fn?fn(t,r,n):dn(t,n,n+r.length)===r}});var vn=function(e,t){return L(p[e].prototype[t])};vn(\"String\",\"startsWith\");var mn=Array.isArray||function(e){return\"Array\"==Z(e)},bn=TypeError,gn=function(e){if(e>9007199254740991)throw bn(\"Maximum allowed index exceeded\");return e},wn=function(e,t,n){var r=We(t);r in e?Je.f(e,r,I(0,n)):e[r]=n},Sn=function(){},kn=[],_n=z(\"Reflect\",\"construct\"),In=/^\\s*(?:class|function)\\b/,On=L(In.exec),xn=!In.exec(Sn),Tn=function(e){if(!H(e))return!1;try{return _n(Sn,kn,e),!0}catch(e){return!1}},Cn=function(e){if(!H(e))return!1;switch(tn(e)){case\"AsyncFunction\":case\"GeneratorFunction\":case\"AsyncGeneratorFunction\":return!1}try{return xn||!!On(In,nt(e))}catch(e){return!0}};Cn.sham=!0;var jn,Ln=!_n||y((function(){var e;return Tn(Tn.call)||!Tn(Object)||!Tn((function(){e=!0}))||e}))?Cn:Tn,Rn=Ce(\"species\"),Wn=Array,Zn=function(e,t){return new(function(e){var t;return mn(e)&&(t=e.constructor,(Ln(t)&&(t===Wn||mn(t.prototype))||J(t)&&null===(t=t[Rn]))&&(t=void 0)),void 0===t?Wn:t}(e))(0===t?0:t)},En=Ce(\"species\"),Gn=Ce(\"isConcatSpreadable\"),An=te>=51||!y((function(){var e=[];return e[Gn]=!1,e.concat()[0]!==e})),Pn=(jn=\"concat\",te>=51||!y((function(){var e=[];return(e.constructor={})[En]=function(){return{foo:1}},1!==e[jn](Boolean).foo}))),Xn=function(e){if(!J(e))return!1;var t=e[Gn];return void 0!==t?!!t:mn(e)};zt({target:\"Array\",proto:!0,arity:1,forced:!An||!Pn},{concat:function(e){var t,n,r,o,i,c=me(this),a=Zn(c,0),s=0;for(t=-1,r=arguments.length;t<r;t++)if(Xn(i=-1===t?c:arguments[t]))for(o=Tt(i),gn(s+o),n=0;n<o;n++,s++)n in i&&wn(a,s,i[n]);else gn(s+1),wn(a,s++,i);return a.length=s,a}});var Fn=Qt?{}.toString:function(){return\"[object \"+tn(this)+\"]\"};Qt||mt(Object.prototype,\"toString\",Fn,{unsafe:!0});var Kn,Nn=Object.keys||function(e){return Wt(e,Zt)},Un=v&&!Fe?Object.defineProperties:function(e,t){Ue(e);for(var n,r=K(t),o=Nn(t),i=o.length,c=0;i>c;)Je.f(e,n=o[c++],r[n]);return e},Dn={f:Un},Hn=z(\"document\",\"documentElement\"),Yn=ct(\"IE_PROTO\"),Jn=function(){},Vn=function(e){return\"<script>\"+e+\"<\\/script>\"},zn=function(e){e.write(Vn(\"\")),e.close();var t=e.parentWindow.Object;return e=null,t},Mn=function(){try{Kn=new ActiveXObject(\"htmlfile\")}catch(e){}var e,t;Mn=\"undefined\"!=typeof document?document.domain&&Kn?zn(Kn):((t=Ge(\"iframe\")).style.display=\"none\",Hn.appendChild(t),t.src=String(\"javascript:\"),(e=t.contentWindow.document).open(),e.write(Vn(\"document.F=Object\")),e.close(),e.F):zn(Kn);for(var n=Zt.length;n--;)delete Mn.prototype[Zt[n]];return Mn()};at[Yn]=!0;var Bn=Object.create||function(e,t){var n;return null!==e?(Jn.prototype=Ue(e),n=new Jn,Jn.prototype=null,n[Yn]=e):n=Mn(),void 0===t?n:Dn.f(n,t)},Qn=Array,qn=Math.max,$n=Gt.f,er=\"object\"==typeof window&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[],tr=function(e){try{return $n(e)}catch(e){return function(e,t,n){for(var r=Tt(e),o=It(t,r),i=It(void 0===n?r:n,r),c=Qn(qn(i-o,0)),a=0;o<i;o++,a++)wn(c,a,e[o]);return c.length=a,c}(er)}},nr={f:function(e){return er&&\"Window\"==Z(e)?tr(e):$n(K(e))}},rr={f:Ce},or=p,ir=Je.f,cr=function(e){var t=or.Symbol||(or.Symbol={});ge(t,e)||ir(t,e,{value:rr.f(e)})},ar=function(){var e=z(\"Symbol\"),t=e&&e.prototype,n=t&&t.valueOf,r=Ce(\"toPrimitive\");t&&!t[r]&&mt(t,r,(function(e){return g(n,this)}),{arity:1})},sr=Je.f,ur=Ce(\"toStringTag\"),lr=function(e,t,n){e&&!n&&(e=e.prototype),e&&!ge(e,ur)&&sr(e,ur,{configurable:!0,value:t})},fr=L(L.bind),dr=function(e,t){return ue(e),void 0===t?e:m?fr(e,t):function(){return e.apply(t,arguments)}},hr=L([].push),pr=function(e){var t=1==e,n=2==e,r=3==e,o=4==e,i=6==e,c=7==e,a=5==e||i;return function(s,u,l,f){for(var d,h,p=me(s),y=A(p),v=dr(u,l),m=Tt(y),b=0,g=f||Zn,w=t?g(s,m):n||c?g(s,0):void 0;m>b;b++)if((a||b in y)&&(h=v(d=y[b],b,p),e))if(t)w[b]=h;else if(h)switch(e){case 3:return!0;case 5:return d;case 6:return b;case 2:hr(w,d)}else switch(e){case 4:return!1;case 7:hr(w,d)}return i?-1:r||o?o:w}},yr={forEach:pr(0),map:pr(1),filter:pr(2),some:pr(3),every:pr(4),find:pr(5),findIndex:pr(6),filterReject:pr(7)}.forEach,vr=ct(\"hidden\"),mr=yt.set,br=yt.getterFor(\"Symbol\"),gr=Object.prototype,wr=p.Symbol,Sr=wr&&wr.prototype,kr=p.TypeError,_r=p.QObject,Ir=Xe.f,Or=Je.f,xr=nr.f,Tr=_.f,Cr=L([].push),jr=ye(\"symbols\"),Lr=ye(\"op-symbols\"),Rr=ye(\"wks\"),Wr=!_r||!_r.prototype||!_r.prototype.findChild,Zr=v&&y((function(){return 7!=Bn(Or({},\"a\",{get:function(){return Or(this,\"a\",{value:7}).a}})).a}))?function(e,t,n){var r=Ir(gr,t);r&&delete gr[t],Or(e,t,n),r&&e!==gr&&Or(gr,t,r)}:Or,Er=function(e,t){var n=jr[e]=Bn(Sr);return mr(n,{type:\"Symbol\",tag:e,description:t}),v||(n.description=t),n},Gr=function(e,t,n){e===gr&&Gr(Lr,t,n),Ue(e);var r=We(t);return Ue(n),ge(jr,r)?(n.enumerable?(ge(e,vr)&&e[vr][r]&&(e[vr][r]=!1),n=Bn(n,{enumerable:I(0,!1)})):(ge(e,vr)||Or(e,vr,I(1,{})),e[vr][r]=!0),Zr(e,r,n)):Or(e,r,n)},Ar=function(e,t){Ue(e);var n=K(t),r=Nn(n).concat(Kr(n));return yr(r,(function(t){v&&!g(Pr,n,t)||Gr(e,t,n[t])})),e},Pr=function(e){var t=We(e),n=g(Tr,this,t);return!(this===gr&&ge(jr,t)&&!ge(Lr,t))&&(!(n||!ge(this,t)||!ge(jr,t)||ge(this,vr)&&this[vr][t])||n)},Xr=function(e,t){var n=K(e),r=We(t);if(n!==gr||!ge(jr,r)||ge(Lr,r)){var o=Ir(n,r);return!o||!ge(jr,r)||ge(n,vr)&&n[vr][r]||(o.enumerable=!0),o}},Fr=function(e){var t=xr(K(e)),n=[];return yr(t,(function(e){ge(jr,e)||ge(at,e)||Cr(n,e)})),n},Kr=function(e){var t=e===gr,n=xr(t?Lr:K(e)),r=[];return yr(n,(function(e){!ge(jr,e)||t&&!ge(gr,e)||Cr(r,jr[e])})),r};ne||(Sr=(wr=function(){if(M(Sr,this))throw kr(\"Symbol is not a constructor\");var e=arguments.length&&void 0!==arguments[0]?rn(arguments[0]):void 0,t=_e(e),n=function(e){this===gr&&g(n,Lr,e),ge(this,vr)&&ge(this[vr],t)&&(this[vr][t]=!1),Zr(this,t,I(1,e))};return v&&Wr&&Zr(gr,t,{configurable:!0,set:n}),Er(t,e)}).prototype,mt(Sr,\"toString\",(function(){return br(this).tag})),mt(wr,\"withoutSetter\",(function(e){return Er(_e(e),e)})),_.f=Pr,Je.f=Gr,Dn.f=Ar,Xe.f=Xr,Gt.f=nr.f=Fr,At.f=Kr,rr.f=function(e){return Er(Ce(e),e)},v&&(Or(Sr,\"description\",{configurable:!0,get:function(){return br(this).description}}),mt(gr,\"propertyIsEnumerable\",Pr,{unsafe:!0}))),zt({global:!0,constructor:!0,wrap:!0,forced:!ne,sham:!ne},{Symbol:wr}),yr(Nn(Rr),(function(e){cr(e)})),zt({target:\"Symbol\",stat:!0,forced:!ne},{useSetter:function(){Wr=!0},useSimple:function(){Wr=!1}}),zt({target:\"Object\",stat:!0,forced:!ne,sham:!v},{create:function(e,t){return void 0===t?Bn(e):Ar(Bn(e),t)},defineProperty:Gr,defineProperties:Ar,getOwnPropertyDescriptor:Xr}),zt({target:\"Object\",stat:!0,forced:!ne},{getOwnPropertyNames:Fr}),ar(),lr(wr,\"Symbol\"),at[vr]=!0;var Nr=ne&&!!Symbol.for&&!!Symbol.keyFor,Ur=ye(\"string-to-symbol-registry\"),Dr=ye(\"symbol-to-string-registry\");zt({target:\"Symbol\",stat:!0,forced:!Nr},{for:function(e){var t=rn(e);if(ge(Ur,t))return Ur[t];var n=z(\"Symbol\")(t);return Ur[t]=n,Dr[n]=t,n}});var Hr=ye(\"symbol-to-string-registry\");zt({target:\"Symbol\",stat:!0,forced:!Nr},{keyFor:function(e){if(!ie(e))throw TypeError(ae(e)+\" is not a symbol\");if(ge(Hr,e))return Hr[e]}});var Yr=Function.prototype,Jr=Yr.apply,Vr=Yr.call,zr=\"object\"==typeof Reflect&&Reflect.apply||(m?Vr.bind(Jr):function(){return Vr.apply(Jr,arguments)}),Mr=L([].slice),Br=z(\"JSON\",\"stringify\"),Qr=L(/./.exec),qr=L(\"\".charAt),$r=L(\"\".charCodeAt),eo=L(\"\".replace),to=L(1..toString),no=/[\\uD800-\\uDFFF]/g,ro=/^[\\uD800-\\uDBFF]$/,oo=/^[\\uDC00-\\uDFFF]$/,io=!ne||y((function(){var e=z(\"Symbol\")();return\"[null]\"!=Br([e])||\"{}\"!=Br({a:e})||\"{}\"!=Br(Object(e))})),co=y((function(){return'\"\\\\udf06\\\\ud834\"'!==Br(\"\\udf06\\ud834\")||'\"\\\\udead\"'!==Br(\"\\udead\")})),ao=function(e,t){var n=Mr(arguments),r=t;if((J(t)||void 0!==e)&&!ie(e))return mn(t)||(t=function(e,t){if(H(r)&&(t=g(r,this,e,t)),!ie(t))return t}),n[1]=t,zr(Br,null,n)},so=function(e,t,n){var r=qr(n,t-1),o=qr(n,t+1);return Qr(ro,e)&&!Qr(oo,o)||Qr(oo,e)&&!Qr(ro,r)?\"\\\\u\"+to($r(e,0),16):e};Br&&zt({target:\"JSON\",stat:!0,arity:3,forced:io||co},{stringify:function(e,t,n){var r=Mr(arguments),o=zr(io?ao:Br,null,r);return co&&\"string\"==typeof o?eo(o,no,so):o}});var uo=!ne||y((function(){At.f(1)}));zt({target:\"Object\",stat:!0,forced:uo},{getOwnPropertySymbols:function(e){var t=At.f;return t?t(me(e)):[]}}),cr(\"asyncIterator\");var lo=Je.f,fo=p.Symbol,ho=fo&&fo.prototype;if(v&&H(fo)&&(!(\"description\"in ho)||void 0!==fo().description)){var po={},yo=function(){var e=arguments.length<1||void 0===arguments[0]?void 0:rn(arguments[0]),t=M(ho,this)?new fo(e):void 0===e?fo():fo(e);return\"\"===e&&(po[t]=!0),t};Ft(yo,fo),yo.prototype=ho,ho.constructor=yo;var vo=\"Symbol(test)\"==String(fo(\"test\")),mo=L(ho.valueOf),bo=L(ho.toString),go=/^Symbol\\((.*)\\)[^)]+$/,wo=L(\"\".replace),So=L(\"\".slice);lo(ho,\"description\",{configurable:!0,get:function(){var e=mo(this);if(ge(po,e))return\"\";var t=bo(e),n=vo?So(t,7,-1):wo(t,go,\"$1\");return\"\"===n?void 0:n}}),zt({global:!0,constructor:!0,forced:!0},{Symbol:yo})}cr(\"hasInstance\"),cr(\"isConcatSpreadable\"),cr(\"iterator\"),cr(\"match\"),cr(\"matchAll\"),cr(\"replace\"),cr(\"search\"),cr(\"species\"),cr(\"split\"),cr(\"toPrimitive\"),ar(),cr(\"toStringTag\"),lr(z(\"Symbol\"),\"Symbol\"),cr(\"unscopables\"),lr(p.JSON,\"JSON\",!0),lr(Math,\"Math\",!0),zt({global:!0},{Reflect:{}}),lr(p.Reflect,\"Reflect\",!0),or.Symbol;var ko,_o,Io,Oo=L(\"\".charAt),xo=L(\"\".charCodeAt),To=L(\"\".slice),Co=function(e){return function(t,n){var r,o,i=rn(F(t)),c=St(n),a=i.length;return c<0||c>=a?e?\"\":void 0:(r=xo(i,c))<55296||r>56319||c+1===a||(o=xo(i,c+1))<56320||o>57343?e?Oo(i,c):r:e?To(i,c,c+2):o-56320+(r-55296<<10)+65536}},jo={codeAt:Co(!1),charAt:Co(!0)},Lo=!y((function(){function e(){}return e.prototype.constructor=null,Object.getPrototypeOf(new e)!==e.prototype})),Ro=ct(\"IE_PROTO\"),Wo=Object,Zo=Wo.prototype,Eo=Lo?Wo.getPrototypeOf:function(e){var t=me(e);if(ge(t,Ro))return t[Ro];var n=t.constructor;return H(n)&&t instanceof n?n.prototype:t instanceof Wo?Zo:null},Go=Ce(\"iterator\"),Ao=!1;[].keys&&(\"next\"in(Io=[].keys())?(_o=Eo(Eo(Io)))!==Object.prototype&&(ko=_o):Ao=!0);var Po=!J(ko)||y((function(){var e={};return ko[Go].call(e)!==e}));Po&&(ko={}),H(ko[Go])||mt(ko,Go,(function(){return this}));var Xo={IteratorPrototype:ko,BUGGY_SAFARI_ITERATORS:Ao},Fo={},Ko=Xo.IteratorPrototype,No=function(){return this},Uo=String,Do=TypeError,Ho=Object.setPrototypeOf||(\"__proto__\"in{}?function(){var e,t=!1,n={};try{(e=L(Object.getOwnPropertyDescriptor(Object.prototype,\"__proto__\").set))(n,[]),t=n instanceof Array}catch(e){}return function(n,r){return Ue(n),function(e){if(\"object\"==typeof e||H(e))return e;throw Do(\"Can't set \"+Uo(e)+\" as a prototype\")}(r),t?e(n,r):n.__proto__=r,n}}():void 0),Yo=Qe.PROPER,Jo=Qe.CONFIGURABLE,Vo=Xo.IteratorPrototype,zo=Xo.BUGGY_SAFARI_ITERATORS,Mo=Ce(\"iterator\"),Bo=function(){return this},Qo=function(e,t,n,r,o,i,c){!function(e,t,n,r){var o=t+\" Iterator\";e.prototype=Bn(Ko,{next:I(+!r,n)}),lr(e,o,!1),Fo[o]=No}(n,t,r);var a,s,u,l=function(e){if(e===o&&y)return y;if(!zo&&e in h)return h[e];switch(e){case\"keys\":case\"values\":case\"entries\":return function(){return new n(this,e)}}return function(){return new n(this)}},f=t+\" Iterator\",d=!1,h=e.prototype,p=h[Mo]||h[\"@@iterator\"]||o&&h[o],y=!zo&&p||l(o),v=\"Array\"==t&&h.entries||p;if(v&&(a=Eo(v.call(new e)))!==Object.prototype&&a.next&&(Eo(a)!==Vo&&(Ho?Ho(a,Vo):H(a[Mo])||mt(a,Mo,Bo)),lr(a,f,!0)),Yo&&\"values\"==o&&p&&\"values\"!==p.name&&(Jo?Ve(h,\"name\",\"values\"):(d=!0,y=function(){return g(p,this)})),o)if(s={values:l(\"values\"),keys:i?y:l(\"keys\"),entries:l(\"entries\")},c)for(u in s)(zo||d||!(u in h))&&mt(h,u,s[u]);else zt({target:t,proto:!0,forced:zo||d},s);return h[Mo]!==y&&mt(h,Mo,y,{name:o}),Fo[t]=y,s},qo=function(e,t){return{value:e,done:t}},$o=jo.charAt,ei=yt.set,ti=yt.getterFor(\"String Iterator\");Qo(String,\"String\",(function(e){ei(this,{type:\"String Iterator\",string:rn(e),index:0})}),(function(){var e,t=ti(this),n=t.string,r=t.index;return r>=n.length?qo(void 0,!0):(e=$o(n,r),t.index+=e.length,qo(e,!1))}));var ni=function(e,t,n){var r,o;Ue(e);try{if(!(r=le(e,\"return\"))){if(\"throw\"===t)throw n;return n}r=g(r,e)}catch(e){o=!0,r=e}if(\"throw\"===t)throw n;if(o)throw r;return Ue(r),n},ri=function(e,t,n,r){try{return r?t(Ue(n)[0],n[1]):t(n)}catch(t){ni(e,\"throw\",t)}},oi=Ce(\"iterator\"),ii=Array.prototype,ci=function(e){return void 0!==e&&(Fo.Array===e||ii[oi]===e)},ai=Ce(\"iterator\"),si=function(e){if(!P(e))return le(e,ai)||le(e,\"@@iterator\")||Fo[tn(e)]},ui=TypeError,li=function(e,t){var n=arguments.length<2?si(e):t;if(ue(n))return Ue(g(n,e));throw ui(ae(e)+\" is not iterable\")},fi=Array,di=Ce(\"iterator\"),hi=!1;try{var pi=0,yi={next:function(){return{done:!!pi++}},return:function(){hi=!0}};yi[di]=function(){return this},Array.from(yi,(function(){throw 2}))}catch(e){}var vi=function(e,t){if(!t&&!hi)return!1;var n=!1;try{var r={};r[di]=function(){return{next:function(){return{done:n=!0}}}},e(r)}catch(e){}return n},mi=!vi((function(e){Array.from(e)}));zt({target:\"Array\",stat:!0,forced:mi},{from:function(e){var t=me(e),n=Ln(this),r=arguments.length,o=r>1?arguments[1]:void 0,i=void 0!==o;i&&(o=dr(o,r>2?arguments[2]:void 0));var c,a,s,u,l,f,d=si(t),h=0;if(!d||this===fi&&ci(d))for(c=Tt(t),a=n?new this(c):fi(c);c>h;h++)f=i?o(t[h],h):t[h],wn(a,h,f);else for(l=(u=li(t,d)).next,a=n?new this:[];!(s=g(l,u)).done;h++)f=i?ri(u,o,[s.value,h],!0):s.value,wn(a,h,f);return a.length=h,a}}),or.Array.from;var bi,gi,wi,Si=\"undefined\"!=typeof ArrayBuffer&&\"undefined\"!=typeof DataView,ki=Je.f,_i=yt.enforce,Ii=yt.get,Oi=p.Int8Array,xi=Oi&&Oi.prototype,Ti=p.Uint8ClampedArray,Ci=Ti&&Ti.prototype,ji=Oi&&Eo(Oi),Li=xi&&Eo(xi),Ri=Object.prototype,Wi=p.TypeError,Zi=Ce(\"toStringTag\"),Ei=_e(\"TYPED_ARRAY_TAG\"),Gi=Si&&!!Ho&&\"Opera\"!==tn(p.opera),Ai=!1,Pi={Int8Array:1,Uint8Array:1,Uint8ClampedArray:1,Int16Array:2,Uint16Array:2,Int32Array:4,Uint32Array:4,Float32Array:4,Float64Array:8},Xi={BigInt64Array:8,BigUint64Array:8},Fi=function(e){var t=Eo(e);if(J(t)){var n=Ii(t);return n&&ge(n,\"TypedArrayConstructor\")?n.TypedArrayConstructor:Fi(t)}},Ki=function(e){if(!J(e))return!1;var t=tn(e);return ge(Pi,t)||ge(Xi,t)};for(bi in Pi)(wi=(gi=p[bi])&&gi.prototype)?_i(wi).TypedArrayConstructor=gi:Gi=!1;for(bi in Xi)(wi=(gi=p[bi])&&gi.prototype)&&(_i(wi).TypedArrayConstructor=gi);if((!Gi||!H(ji)||ji===Function.prototype)&&(ji=function(){throw Wi(\"Incorrect invocation\")},Gi))for(bi in Pi)p[bi]&&Ho(p[bi],ji);if((!Gi||!Li||Li===Ri)&&(Li=ji.prototype,Gi))for(bi in Pi)p[bi]&&Ho(p[bi].prototype,Li);if(Gi&&Eo(Ci)!==Li&&Ho(Ci,Li),v&&!ge(Li,Zi))for(bi in Ai=!0,ki(Li,Zi,{get:function(){return J(this)?this[Ei]:void 0}}),Pi)p[bi]&&Ve(p[bi],Ei,bi);var Ni={NATIVE_ARRAY_BUFFER_VIEWS:Gi,TYPED_ARRAY_TAG:Ai&&Ei,aTypedArray:function(e){if(Ki(e))return e;throw Wi(\"Target is not a typed array\")},aTypedArrayConstructor:function(e){if(H(e)&&(!Ho||M(ji,e)))return e;throw Wi(ae(e)+\" is not a typed array constructor\")},exportTypedArrayMethod:function(e,t,n,r){if(v){if(n)for(var o in Pi){var i=p[o];if(i&&ge(i.prototype,e))try{delete i.prototype[e]}catch(n){try{i.prototype[e]=t}catch(e){}}}Li[e]&&!n||mt(Li,e,n?t:Gi&&xi[e]||t,r)}},exportTypedArrayStaticMethod:function(e,t,n){var r,o;if(v){if(Ho){if(n)for(r in Pi)if((o=p[r])&&ge(o,e))try{delete o[e]}catch(e){}if(ji[e]&&!n)return;try{return mt(ji,e,n?t:Gi&&ji[e]||t)}catch(e){}}for(r in Pi)!(o=p[r])||o[e]&&!n||mt(o,e,t)}},getTypedArrayConstructor:Fi,isView:function(e){if(!J(e))return!1;var t=tn(e);return\"DataView\"===t||ge(Pi,t)||ge(Xi,t)},isTypedArray:Ki,TypedArray:ji,TypedArrayPrototype:Li},Ui=TypeError,Di=Ce(\"species\"),Hi=function(e,t){var n,r=Ue(e).constructor;return void 0===r||P(n=Ue(r)[Di])?t:function(e){if(Ln(e))return e;throw Ui(ae(e)+\" is not a constructor\")}(n)},Yi=Ni.aTypedArrayConstructor,Ji=Ni.getTypedArrayConstructor,Vi=Ni.aTypedArray;(0,Ni.exportTypedArrayMethod)(\"slice\",(function(e,t){for(var n,r=Mr(Vi(this),e,t),o=Yi(Hi(n=this,Ji(n))),i=0,c=r.length,a=new o(c);c>i;)a[i]=r[i++];return a}),y((function(){new Int8Array(1).slice()})));var zi=Je.f,Mi=Ce(\"unscopables\"),Bi=Array.prototype;null==Bi[Mi]&&zi(Bi,Mi,{configurable:!0,value:Bn(null)});var Qi=function(e){Bi[Mi][e]=!0},qi=jt.includes,$i=y((function(){return!Array(1).includes()}));zt({target:\"Array\",proto:!0,forced:$i},{includes:function(e){return qi(this,e,arguments.length>1?arguments[1]:void 0)}}),Qi(\"includes\"),vn(\"Array\",\"includes\");var ec=L(\"\".indexOf);zt({target:\"String\",proto:!0,forced:!un(\"includes\")},{includes:function(e){return!!~ec(rn(F(this)),rn(an(e)),arguments.length>1?arguments[1]:void 0)}}),vn(\"String\",\"includes\");var tc=Je.f,nc=yt.set,rc=yt.getterFor(\"Array Iterator\");Qo(Array,\"Array\",(function(e,t){nc(this,{type:\"Array Iterator\",target:K(e),index:0,kind:t})}),(function(){var e=rc(this),t=e.target,n=e.kind,r=e.index++;return!t||r>=t.length?(e.target=void 0,qo(void 0,!0)):qo(\"keys\"==n?r:\"values\"==n?t[r]:[r,t[r]],!1)}),\"values\");var oc=Fo.Arguments=Fo.Array;if(Qi(\"keys\"),Qi(\"values\"),Qi(\"entries\"),v&&\"values\"!==oc.name)try{tc(oc,\"name\",{value:\"values\"})}catch(e){}var ic=y((function(){if(\"function\"==typeof ArrayBuffer){var e=new ArrayBuffer(8);Object.isExtensible(e)&&Object.defineProperty(e,\"a\",{value:8})}})),cc=Object.isExtensible,ac=y((function(){cc(1)}))||ic?function(e){return!!J(e)&&((!ic||\"ArrayBuffer\"!=Z(e))&&(!cc||cc(e)))}:cc,sc=!y((function(){return Object.isExtensible(Object.preventExtensions({}))})),uc=l((function(e){var t=Je.f,n=!1,r=_e(\"meta\"),o=0,i=function(e){t(e,r,{value:{objectID:\"O\"+o++,weakData:{}}})},c=e.exports={enable:function(){c.enable=function(){},n=!0;var e=Gt.f,t=L([].splice),o={};o[r]=1,e(o).length&&(Gt.f=function(n){for(var o=e(n),i=0,c=o.length;i<c;i++)if(o[i]===r){t(o,i,1);break}return o},zt({target:\"Object\",stat:!0,forced:!0},{getOwnPropertyNames:nr.f}))},fastKey:function(e,t){if(!J(e))return\"symbol\"==typeof e?e:(\"string\"==typeof e?\"S\":\"P\")+e;if(!ge(e,r)){if(!ac(e))return\"F\";if(!t)return\"E\";i(e)}return e[r].objectID},getWeakData:function(e,t){if(!ge(e,r)){if(!ac(e))return!0;if(!t)return!1;i(e)}return e[r].weakData},onFreeze:function(e){return sc&&n&&ac(e)&&!ge(e,r)&&i(e),e}};at[r]=!0}));uc.enable,uc.fastKey,uc.getWeakData,uc.onFreeze;var lc=TypeError,fc=function(e,t){this.stopped=e,this.result=t},dc=fc.prototype,hc=function(e,t,n){var r,o,i,c,a,s,u,l=n&&n.that,f=!(!n||!n.AS_ENTRIES),d=!(!n||!n.IS_RECORD),h=!(!n||!n.IS_ITERATOR),p=!(!n||!n.INTERRUPTED),y=dr(t,l),v=function(e){return r&&ni(r,\"normal\",e),new fc(!0,e)},m=function(e){return f?(Ue(e),p?y(e[0],e[1],v):y(e[0],e[1])):p?y(e,v):y(e)};if(d)r=e.iterator;else if(h)r=e;else{if(!(o=si(e)))throw lc(ae(e)+\" is not iterable\");if(ci(o)){for(i=0,c=Tt(e);c>i;i++)if((a=m(e[i]))&&M(dc,a))return a;return new fc(!1)}r=li(e,o)}for(s=d?e.next:r.next;!(u=g(s,r)).done;){try{a=m(u.value)}catch(e){ni(r,\"throw\",e)}if(\"object\"==typeof a&&a&&M(dc,a))return a}return new fc(!1)},pc=TypeError,yc=function(e,t){if(M(t,e))return e;throw pc(\"Incorrect invocation\")},vc=function(e,t,n){for(var r in t)mt(e,r,t[r],n);return e},mc=Ce(\"species\"),bc=Je.f,gc=uc.fastKey,wc=yt.set,Sc=yt.getterFor,kc={getConstructor:function(e,t,n,r){var o=e((function(e,o){yc(e,i),wc(e,{type:t,index:Bn(null),first:void 0,last:void 0,size:0}),v||(e.size=0),P(o)||hc(o,e[r],{that:e,AS_ENTRIES:n})})),i=o.prototype,c=Sc(t),a=function(e,t,n){var r,o,i=c(e),a=s(e,t);return a?a.value=n:(i.last=a={index:o=gc(t,!0),key:t,value:n,previous:r=i.last,next:void 0,removed:!1},i.first||(i.first=a),r&&(r.next=a),v?i.size++:e.size++,\"F\"!==o&&(i.index[o]=a)),e},s=function(e,t){var n,r=c(e),o=gc(t);if(\"F\"!==o)return r.index[o];for(n=r.first;n;n=n.next)if(n.key==t)return n};return vc(i,{clear:function(){for(var e=c(this),t=e.index,n=e.first;n;)n.removed=!0,n.previous&&(n.previous=n.previous.next=void 0),delete t[n.index],n=n.next;e.first=e.last=void 0,v?e.size=0:this.size=0},delete:function(e){var t=this,n=c(t),r=s(t,e);if(r){var o=r.next,i=r.previous;delete n.index[r.index],r.removed=!0,i&&(i.next=o),o&&(o.previous=i),n.first==r&&(n.first=o),n.last==r&&(n.last=i),v?n.size--:t.size--}return!!r},forEach:function(e){for(var t,n=c(this),r=dr(e,arguments.length>1?arguments[1]:void 0);t=t?t.next:n.first;)for(r(t.value,t.key,this);t&&t.removed;)t=t.previous},has:function(e){return!!s(this,e)}}),vc(i,n?{get:function(e){var t=s(this,e);return t&&t.value},set:function(e,t){return a(this,0===e?0:e,t)}}:{add:function(e){return a(this,e=0===e?0:e,e)}}),v&&bc(i,\"size\",{get:function(){return c(this).size}}),o},setStrong:function(e,t,n){var r=t+\" Iterator\",o=Sc(t),i=Sc(r);Qo(e,t,(function(e,t){wc(this,{type:r,target:e,state:o(e),kind:t,last:void 0})}),(function(){for(var e=i(this),t=e.kind,n=e.last;n&&n.removed;)n=n.previous;return e.target&&(e.last=n=n?n.next:e.state.first)?qo(\"keys\"==t?n.key:\"values\"==t?n.value:[n.key,n.value],!1):(e.target=void 0,qo(void 0,!0))}),n?\"entries\":\"values\",!n,!0),function(e){var t=z(e),n=Je.f;v&&t&&!t[mc]&&n(t,mc,{configurable:!0,get:function(){return this}})}(t)}};function _c(e){var t=this.constructor;return this.then((function(n){return t.resolve(e()).then((function(){return n}))}),(function(n){return t.resolve(e()).then((function(){return t.reject(n)}))}))}function Ic(e){return new this((function(t,n){if(!e||void 0===e.length)return n(new TypeError(typeof e+\" \"+e+\" is not iterable(cannot read property Symbol(Symbol.iterator))\"));var r=Array.prototype.slice.call(e);if(0===r.length)return t([]);var o=r.length;function i(e,n){if(n&&(\"object\"==typeof n||\"function\"==typeof n)){var c=n.then;if(\"function\"==typeof c)return void c.call(n,(function(t){i(e,t)}),(function(n){r[e]={status:\"rejected\",reason:n},0==--o&&t(r)}))}r[e]={status:\"fulfilled\",value:n},0==--o&&t(r)}for(var c=0;c<r.length;c++)i(c,r[c])}))}!function(e,t,n){var r=-1!==e.indexOf(\"Map\"),o=-1!==e.indexOf(\"Weak\"),i=r?\"set\":\"add\",c=p[e],a=c&&c.prototype,s=c,u={},l=function(e){var t=L(a[e]);mt(a,e,\"add\"==e?function(e){return t(this,0===e?0:e),this}:\"delete\"==e?function(e){return!(o&&!J(e))&&t(this,0===e?0:e)}:\"get\"==e?function(e){return o&&!J(e)?void 0:t(this,0===e?0:e)}:\"has\"==e?function(e){return!(o&&!J(e))&&t(this,0===e?0:e)}:function(e,n){return t(this,0===e?0:e,n),this})};if(Jt(e,!H(c)||!(o||a.forEach&&!y((function(){(new c).entries().next()})))))s=n.getConstructor(t,e,r,i),uc.enable();else if(Jt(e,!0)){var f=new s,d=f[i](o?{}:-0,1)!=f,h=y((function(){f.has(1)})),v=vi((function(e){new c(e)})),m=!o&&y((function(){for(var e=new c,t=5;t--;)e[i](t,t);return!e.has(-0)}));v||((s=t((function(e,t){yc(e,a);var n=function(e,t,n){var r,o;return Ho&&H(r=t.constructor)&&r!==n&&J(o=r.prototype)&&o!==n.prototype&&Ho(e,o),e}(new c,e,s);return P(t)||hc(t,n[i],{that:n,AS_ENTRIES:r}),n}))).prototype=a,a.constructor=s),(h||m)&&(l(\"delete\"),l(\"has\"),r&&l(\"get\")),(m||d)&&l(i),o&&a.clear&&delete a.clear}u[e]=s,zt({global:!0,constructor:!0,forced:s!=c},u),lr(s,e),o||n.setStrong(s,e,r)}(\"Set\",(function(e){return function(){return e(this,arguments.length?arguments[0]:void 0)}}),kc),or.Set;var Oc=setTimeout;function xc(e){return Boolean(e&&void 0!==e.length)}function Tc(){}function Cc(e){if(!(this instanceof Cc))throw new TypeError(\"Promises must be constructed via new\");if(\"function\"!=typeof e)throw new TypeError(\"not a function\");this._state=0,this._handled=!1,this._value=void 0,this._deferreds=[],Ec(e,this)}function jc(e,t){for(;3===e._state;)e=e._value;0!==e._state?(e._handled=!0,Cc._immediateFn((function(){var n=1===e._state?t.onFulfilled:t.onRejected;if(null!==n){var r;try{r=n(e._value)}catch(e){return void Rc(t.promise,e)}Lc(t.promise,r)}else(1===e._state?Lc:Rc)(t.promise,e._value)}))):e._deferreds.push(t)}function Lc(e,t){try{if(t===e)throw new TypeError(\"A promise cannot be resolved with itself.\");if(t&&(\"object\"==typeof t||\"function\"==typeof t)){var n=t.then;if(t instanceof Cc)return e._state=3,e._value=t,void Wc(e);if(\"function\"==typeof n)return void Ec((r=n,o=t,function(){r.apply(o,arguments)}),e)}e._state=1,e._value=t,Wc(e)}catch(t){Rc(e,t)}var r,o}function Rc(e,t){e._state=2,e._value=t,Wc(e)}function Wc(e){2===e._state&&0===e._deferreds.length&&Cc._immediateFn((function(){e._handled||Cc._unhandledRejectionFn(e._value)}));for(var t=0,n=e._deferreds.length;t<n;t++)jc(e,e._deferreds[t]);e._deferreds=null}function Zc(e,t,n){this.onFulfilled=\"function\"==typeof e?e:null,this.onRejected=\"function\"==typeof t?t:null,this.promise=n}function Ec(e,t){var n=!1;try{e((function(e){n||(n=!0,Lc(t,e))}),(function(e){n||(n=!0,Rc(t,e))}))}catch(e){if(n)return;n=!0,Rc(t,e)}}Cc.prototype.catch=function(e){return this.then(null,e)},Cc.prototype.then=function(e,t){var n=new this.constructor(Tc);return jc(this,new Zc(e,t,n)),n},Cc.prototype.finally=_c,Cc.all=function(e){return new Cc((function(t,n){if(!xc(e))return n(new TypeError(\"Promise.all accepts an array\"));var r=Array.prototype.slice.call(e);if(0===r.length)return t([]);var o=r.length;function i(e,c){try{if(c&&(\"object\"==typeof c||\"function\"==typeof c)){var a=c.then;if(\"function\"==typeof a)return void a.call(c,(function(t){i(e,t)}),n)}r[e]=c,0==--o&&t(r)}catch(e){n(e)}}for(var c=0;c<r.length;c++)i(c,r[c])}))},Cc.allSettled=Ic,Cc.resolve=function(e){return e&&\"object\"==typeof e&&e.constructor===Cc?e:new Cc((function(t){t(e)}))},Cc.reject=function(e){return new Cc((function(t,n){n(e)}))},Cc.race=function(e){return new Cc((function(t,n){if(!xc(e))return n(new TypeError(\"Promise.race accepts an array\"));for(var r=0,o=e.length;r<o;r++)Cc.resolve(e[r]).then(t,n)}))},Cc._immediateFn=\"function\"==typeof setImmediate&&function(e){setImmediate(e)}||function(e){Oc(e,0)},Cc._unhandledRejectionFn=function(e){\"undefined\"!=typeof console&&console&&console.warn(\"Possible Unhandled Promise Rejection:\",e)};var Gc=function(){if(\"undefined\"!=typeof self)return self;if(\"undefined\"!=typeof window)return window;if(\"undefined\"!=typeof global)return global;throw new Error(\"unable to locate global object\")}();\"function\"!=typeof Gc.Promise?Gc.Promise=Cc:(Gc.Promise.prototype.finally||(Gc.Promise.prototype.finally=_c),Gc.Promise.allSettled||(Gc.Promise.allSettled=Ic)),function(e){function t(e){for(var t=0,n=Math.min(65536,e.length+1),r=new Uint16Array(n),o=[],i=0;;){var c=t<e.length;if(!c||i>=n-1){var a=r.subarray(0,i);if(o.push(String.fromCharCode.apply(null,a)),!c)return o.join(\"\");e=e.subarray(t),t=0,i=0}var s=e[t++];if(0==(128&s))r[i++]=s;else if(192==(224&s)){var u=63&e[t++];r[i++]=(31&s)<<6|u}else if(224==(240&s)){u=63&e[t++];var l=63&e[t++];r[i++]=(31&s)<<12|u<<6|l}else if(240==(248&s)){var f=(7&s)<<18|(u=63&e[t++])<<12|(l=63&e[t++])<<6|63&e[t++];f>65535&&(f-=65536,r[i++]=f>>>10&1023|55296,f=56320|1023&f),r[i++]=f}}}var n=\"Failed to \",r=function(e,t,r){if(e)throw new Error(\"\".concat(n).concat(t,\": the '\").concat(r,\"' option is unsupported.\"))},o=\"function\"==typeof Buffer&&Buffer.from,i=o?function(e){return Buffer.from(e)}:function(e){for(var t=0,n=e.length,r=0,o=Math.max(32,n+(n>>>1)+7),i=new Uint8Array(o>>>3<<3);t<n;){var c=e.charCodeAt(t++);if(c>=55296&&c<=56319){if(t<n){var a=e.charCodeAt(t);56320==(64512&a)&&(++t,c=((1023&c)<<10)+(1023&a)+65536)}if(c>=55296&&c<=56319)continue}if(r+4>i.length){o+=8,o=(o*=1+t/e.length*2)>>>3<<3;var s=new Uint8Array(o);s.set(i),i=s}if(0!=(4294967168&c)){if(0==(4294965248&c))i[r++]=c>>>6&31|192;else if(0==(4294901760&c))i[r++]=c>>>12&15|224,i[r++]=c>>>6&63|128;else{if(0!=(4292870144&c))continue;i[r++]=c>>>18&7|240,i[r++]=c>>>12&63|128,i[r++]=c>>>6&63|128}i[r++]=63&c|128}else i[r++]=c}return i.slice?i.slice(0,r):i.subarray(0,r)};function c(){this.encoding=\"utf-8\"}c.prototype.encode=function(e,t){return r(t&&t.stream,\"encode\",\"stream\"),i(e)};var a=!o&&\"function\"==typeof Blob&&\"function\"==typeof URL&&\"function\"==typeof URL.createObjectURL,s=[\"utf-8\",\"utf8\",\"unicode-1-1-utf-8\"],u=t;o?u=function(e,t){return(e instanceof Buffer?e:Buffer.from(e.buffer,e.byteOffset,e.byteLength)).toString(t)}:a&&(u=function(e){try{return function(e){var t;try{var n=new Blob([e],{type:\"text/plain;charset=UTF-8\"});t=URL.createObjectURL(n);var r=new XMLHttpRequest;return r.open(\"GET\",t,!1),r.send(),r.responseText}finally{t&&URL.revokeObjectURL(t)}}(e)}catch(n){return t(e)}});var l=\"construct 'TextDecoder'\",f=\"\".concat(n,\" \").concat(l,\": the \");function d(e,t){if(r(t&&t.fatal,l,\"fatal\"),e=e||\"utf-8\",!(o?Buffer.isEncoding(e):-1!==s.indexOf(e.toLowerCase())))throw new RangeError(\"\".concat(f,\" encoding label provided ('\").concat(e,\"') is invalid.\"));this.encoding=e,this.fatal=!1,this.ignoreBOM=!1}d.prototype.decode=function(e,t){var n;return r(t&&t.stream,\"decode\",\"stream\"),n=e instanceof Uint8Array?e:e.buffer instanceof ArrayBuffer?new Uint8Array(e.buffer):new Uint8Array(e),u(n,this.encoding)},e.TextEncoder=e.TextEncoder||c,e.TextDecoder=e.TextDecoder||d}(\"undefined\"!=typeof window?window:s),function(){function e(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}function t(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,\"value\"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function n(e,n,r){return n&&t(e.prototype,n),r&&t(e,r),e}function r(e,t){if(\"function\"!=typeof t&&null!==t)throw new TypeError(\"Super expression must either be null or a function\");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&i(e,t)}function o(e){return o=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)},o(e)}function i(e,t){return i=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e},i(e,t)}function c(){if(\"undefined\"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if(\"function\"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}function a(e){if(void 0===e)throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");return e}function u(e,t){return!t||\"object\"!=typeof t&&\"function\"!=typeof t?a(e):t}function l(e){var t=c();return function(){var n,r=o(e);if(t){var i=o(this).constructor;n=Reflect.construct(r,arguments,i)}else n=r.apply(this,arguments);return u(this,n)}}function f(e,t){for(;!Object.prototype.hasOwnProperty.call(e,t)&&null!==(e=o(e)););return e}function d(e,t,n){return d=\"undefined\"!=typeof Reflect&&Reflect.get?Reflect.get:function(e,t,n){var r=f(e,t);if(r){var o=Object.getOwnPropertyDescriptor(r,t);return o.get?o.get.call(n):o.value}},d(e,t,n||e)}var h=function(){function t(){e(this,t),Object.defineProperty(this,\"listeners\",{value:{},writable:!0,configurable:!0})}return n(t,[{key:\"addEventListener\",value:function(e,t,n){e in this.listeners||(this.listeners[e]=[]),this.listeners[e].push({callback:t,options:n})}},{key:\"removeEventListener\",value:function(e,t){if(e in this.listeners)for(var n=this.listeners[e],r=0,o=n.length;r<o;r++)if(n[r].callback===t)return void n.splice(r,1)}},{key:\"dispatchEvent\",value:function(e){if(e.type in this.listeners){for(var t=this.listeners[e.type].slice(),n=0,r=t.length;n<r;n++){var o=t[n];try{o.callback.call(this,e)}catch(e){Promise.resolve().then((function(){throw e}))}o.options&&o.options.once&&this.removeEventListener(e.type,o.callback)}return!e.defaultPrevented}}}]),t}(),p=function(t){r(c,t);var i=l(c);function c(){var t;return e(this,c),(t=i.call(this)).listeners||h.call(a(t)),Object.defineProperty(a(t),\"aborted\",{value:!1,writable:!0,configurable:!0}),Object.defineProperty(a(t),\"onabort\",{value:null,writable:!0,configurable:!0}),t}return n(c,[{key:\"toString\",value:function(){return\"[object AbortSignal]\"}},{key:\"dispatchEvent\",value:function(e){\"abort\"===e.type&&(this.aborted=!0,\"function\"==typeof this.onabort&&this.onabort.call(this,e)),d(o(c.prototype),\"dispatchEvent\",this).call(this,e)}}]),c}(h),y=function(){function t(){e(this,t),Object.defineProperty(this,\"signal\",{value:new p,writable:!0,configurable:!0})}return n(t,[{key:\"abort\",value:function(){var e;try{e=new Event(\"abort\")}catch(t){\"undefined\"!=typeof document?document.createEvent?(e=document.createEvent(\"Event\")).initEvent(\"abort\",!1,!1):(e=document.createEventObject()).type=\"abort\":e={type:\"abort\",bubbles:!1,cancelable:!1}}this.signal.dispatchEvent(e)}},{key:\"toString\",value:function(){return\"[object AbortController]\"}}]),t}();function v(e){return e.__FORCE_INSTALL_ABORTCONTROLLER_POLYFILL?(console.log(\"__FORCE_INSTALL_ABORTCONTROLLER_POLYFILL=true is set, will force install polyfill\"),!0):\"function\"==typeof e.Request&&!e.Request.prototype.hasOwnProperty(\"signal\")||!e.AbortController}\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&(y.prototype[Symbol.toStringTag]=\"AbortController\",p.prototype[Symbol.toStringTag]=\"AbortSignal\"),function(e){v(e)&&(e.AbortController=y,e.AbortSignal=p)}(\"undefined\"!=typeof self?self:s)}();var Ac=l((function(e,t){Object.defineProperty(t,\"__esModule\",{value:!0});var n=function(){function e(){var e=this;this.locked=new Map,this.addToLocked=function(t,n){var r=e.locked.get(t);void 0===r?void 0===n?e.locked.set(t,[]):e.locked.set(t,[n]):void 0!==n&&(r.unshift(n),e.locked.set(t,r))},this.isLocked=function(t){return e.locked.has(t)},this.lock=function(t){return new Promise((function(n,r){e.isLocked(t)?e.addToLocked(t,n):(e.addToLocked(t),n())}))},this.unlock=function(t){var n=e.locked.get(t);if(void 0!==n&&0!==n.length){var r=n.pop();e.locked.set(t,n),void 0!==r&&setTimeout(r,0)}else e.locked.delete(t)}}return e.getInstance=function(){return void 0===e.instance&&(e.instance=new e),e.instance},e}();t.default=function(){return n.getInstance()}}));u(Ac);var Pc=l((function(e,t){var n=s&&s.__awaiter||function(e,t,n,r){return new(n||(n=Promise))((function(o,i){function c(e){try{s(r.next(e))}catch(e){i(e)}}function a(e){try{s(r.throw(e))}catch(e){i(e)}}function s(e){e.done?o(e.value):new n((function(t){t(e.value)})).then(c,a)}s((r=r.apply(e,t||[])).next())}))},r=s&&s.__generator||function(e,t){var n,r,o,i,c={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:a(0),throw:a(1),return:a(2)},\"function\"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function a(i){return function(a){return function(i){if(n)throw new TypeError(\"Generator is already executing.\");for(;c;)try{if(n=1,r&&(o=2&i[0]?r.return:i[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,i[1])).done)return o;switch(r=0,o&&(i=[2&i[0],o.value]),i[0]){case 0:case 1:o=i;break;case 4:return c.label++,{value:i[1],done:!1};case 5:c.label++,r=i[1],i=[0];continue;case 7:i=c.ops.pop(),c.trys.pop();continue;default:if(!(o=c.trys,(o=o.length>0&&o[o.length-1])||6!==i[0]&&2!==i[0])){c=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]<o[3])){c.label=i[1];break}if(6===i[0]&&c.label<o[1]){c.label=o[1],o=i;break}if(o&&c.label<o[2]){c.label=o[2],c.ops.push(i);break}o[2]&&c.ops.pop(),c.trys.pop();continue}i=t.call(e,c)}catch(e){i=[6,e],r=0}finally{n=o=0}if(5&i[0])throw i[1];return{value:i[0]?i[1]:void 0,done:!0}}([i,a])}}};Object.defineProperty(t,\"__esModule\",{value:!0});var o=\"browser-tabs-lock-key\";function i(e){return new Promise((function(t){return setTimeout(t,e)}))}function c(e){for(var t=\"0123456789ABCDEFGHIJKLMNOPQRSTUVWXTZabcdefghiklmnopqrstuvwxyz\",n=\"\",r=0;r<e;r++){n+=t[Math.floor(Math.random()*t.length)]}return n}var a=function(){function e(){this.acquiredIatSet=new Set,this.id=Date.now().toString()+c(15),this.acquireLock=this.acquireLock.bind(this),this.releaseLock=this.releaseLock.bind(this),this.releaseLock__private__=this.releaseLock__private__.bind(this),this.waitForSomethingToChange=this.waitForSomethingToChange.bind(this),this.refreshLockWhileAcquired=this.refreshLockWhileAcquired.bind(this),void 0===e.waiters&&(e.waiters=[])}return e.prototype.acquireLock=function(t,a){return void 0===a&&(a=5e3),n(this,void 0,void 0,(function(){var n,s,u,l,f,d;return r(this,(function(r){switch(r.label){case 0:n=Date.now()+c(4),s=Date.now()+a,u=o+\"-\"+t,l=window.localStorage,r.label=1;case 1:return Date.now()<s?[4,i(30)]:[3,8];case 2:return r.sent(),null!==l.getItem(u)?[3,5]:(f=this.id+\"-\"+t+\"-\"+n,[4,i(Math.floor(25*Math.random()))]);case 3:return r.sent(),l.setItem(u,JSON.stringify({id:this.id,iat:n,timeoutKey:f,timeAcquired:Date.now(),timeRefreshed:Date.now()})),[4,i(30)];case 4:return r.sent(),null!==(d=l.getItem(u))&&(d=JSON.parse(d)).id===this.id&&d.iat===n?(this.acquiredIatSet.add(n),this.refreshLockWhileAcquired(u,n),[2,!0]):[3,7];case 5:return e.lockCorrector(),[4,this.waitForSomethingToChange(s)];case 6:r.sent(),r.label=7;case 7:return n=Date.now()+c(4),[3,1];case 8:return[2,!1]}}))}))},e.prototype.refreshLockWhileAcquired=function(e,t){return n(this,void 0,void 0,(function(){var o=this;return r(this,(function(i){return setTimeout((function(){return n(o,void 0,void 0,(function(){var n,o;return r(this,(function(r){switch(r.label){case 0:return[4,Ac.default().lock(t)];case 1:return r.sent(),this.acquiredIatSet.has(t)?(n=window.localStorage,null===(o=n.getItem(e))?(Ac.default().unlock(t),[2]):((o=JSON.parse(o)).timeRefreshed=Date.now(),n.setItem(e,JSON.stringify(o)),Ac.default().unlock(t),this.refreshLockWhileAcquired(e,t),[2])):(Ac.default().unlock(t),[2])}}))}))}),1e3),[2]}))}))},e.prototype.waitForSomethingToChange=function(t){return n(this,void 0,void 0,(function(){return r(this,(function(n){switch(n.label){case 0:return[4,new Promise((function(n){var r=!1,o=Date.now(),i=!1;function c(){if(i||(window.removeEventListener(\"storage\",c),e.removeFromWaiting(c),clearTimeout(a),i=!0),!r){r=!0;var t=50-(Date.now()-o);t>0?setTimeout(n,t):n()}}window.addEventListener(\"storage\",c),e.addToWaiting(c);var a=setTimeout(c,Math.max(0,t-Date.now()))}))];case 1:return n.sent(),[2]}}))}))},e.addToWaiting=function(t){this.removeFromWaiting(t),void 0!==e.waiters&&e.waiters.push(t)},e.removeFromWaiting=function(t){void 0!==e.waiters&&(e.waiters=e.waiters.filter((function(e){return e!==t})))},e.notifyWaiters=function(){void 0!==e.waiters&&e.waiters.slice().forEach((function(e){return e()}))},e.prototype.releaseLock=function(e){return n(this,void 0,void 0,(function(){return r(this,(function(t){switch(t.label){case 0:return[4,this.releaseLock__private__(e)];case 1:return[2,t.sent()]}}))}))},e.prototype.releaseLock__private__=function(t){return n(this,void 0,void 0,(function(){var n,i,c;return r(this,(function(r){switch(r.label){case 0:return n=window.localStorage,i=o+\"-\"+t,null===(c=n.getItem(i))?[2]:(c=JSON.parse(c)).id!==this.id?[3,2]:[4,Ac.default().lock(c.iat)];case 1:r.sent(),this.acquiredIatSet.delete(c.iat),n.removeItem(i),Ac.default().unlock(c.iat),e.notifyWaiters(),r.label=2;case 2:return[2]}}))}))},e.lockCorrector=function(){for(var t=Date.now()-5e3,n=window.localStorage,r=Object.keys(n),i=!1,c=0;c<r.length;c++){var a=r[c];if(a.includes(o)){var s=n.getItem(a);null!==s&&(void 0===(s=JSON.parse(s)).timeRefreshed&&s.timeAcquired<t||void 0!==s.timeRefreshed&&s.timeRefreshed<t)&&(n.removeItem(a),i=!0)}}i&&e.notifyWaiters()},e.waiters=void 0,e}();t.default=a})),Xc=u(Pc),Fc={timeoutInSeconds:60},Kc=[\"login_required\",\"consent_required\",\"interaction_required\",\"account_selection_required\",\"access_denied\"],Nc={name:\"auth0-spa-js\",version:\"1.22.6\"},Uc=function(){return Date.now()},Dc=function(e){function n(t,r){var o=e.call(this,r)||this;return o.error=t,o.error_description=r,Object.setPrototypeOf(o,n.prototype),o}return t(n,e),n.fromPayload=function(e){return new n(e.error,e.error_description)},n}(Error),Hc=function(e){function n(t,r,o,i){void 0===i&&(i=null);var c=e.call(this,t,r)||this;return c.state=o,c.appState=i,Object.setPrototypeOf(c,n.prototype),c}return t(n,e),n}(Dc),Yc=function(e){function n(){var t=e.call(this,\"timeout\",\"Timeout\")||this;return Object.setPrototypeOf(t,n.prototype),t}return t(n,e),n}(Dc),Jc=function(e){function n(t){var r=e.call(this)||this;return r.popup=t,Object.setPrototypeOf(r,n.prototype),r}return t(n,e),n}(Yc),Vc=function(e){function n(t){var r=e.call(this,\"cancelled\",\"Popup closed\")||this;return r.popup=t,Object.setPrototypeOf(r,n.prototype),r}return t(n,e),n}(Dc),zc=function(e){function n(t,r,o){var i=e.call(this,t,r)||this;return i.mfa_token=o,Object.setPrototypeOf(i,n.prototype),i}return t(n,e),n}(Dc),Mc=function(e){function n(t,r){var o=e.call(this,\"missing_refresh_token\",\"Missing Refresh Token (audience: '\".concat(ia(t,[\"default\"]),\"', scope: '\").concat(ia(r),\"')\"))||this;return o.audience=t,o.scope=r,Object.setPrototypeOf(o,n.prototype),o}return t(n,e),n}(Dc),Bc=function(e){return new Promise((function(t,n){var r,o=setInterval((function(){e.popup&&e.popup.closed&&(clearInterval(o),clearTimeout(i),window.removeEventListener(\"message\",r,!1),n(new Vc(e.popup)))}),1e3),i=setTimeout((function(){clearInterval(o),n(new Jc(e.popup)),window.removeEventListener(\"message\",r,!1)}),1e3*(e.timeoutInSeconds||60));r=function(c){if(c.data&&\"authorization_response\"===c.data.type){if(clearTimeout(i),clearInterval(o),window.removeEventListener(\"message\",r,!1),e.popup.close(),c.data.response.error)return n(Dc.fromPayload(c.data.response));t(c.data.response)}},window.addEventListener(\"message\",r)}))},Qc=function(){return window.crypto||window.msCrypto},qc=function(){var e=Qc();return e.subtle||e.webkitSubtle},$c=function(){var e=\"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-_~.\",t=\"\";return Array.from(Qc().getRandomValues(new Uint8Array(43))).forEach((function(n){return t+=e[n%e.length]})),t},ea=function(e){return btoa(e)},ta=function(e){return Object.keys(e).filter((function(t){return void 0!==e[t]})).map((function(t){return encodeURIComponent(t)+\"=\"+encodeURIComponent(e[t])})).join(\"&\")},na=function(e){return o(void 0,void 0,void 0,(function(){var t;return i(this,(function(n){switch(n.label){case 0:return t=qc().digest({name:\"SHA-256\"},(new TextEncoder).encode(e)),window.msCrypto?[2,new Promise((function(e,n){t.oncomplete=function(t){e(t.target.result)},t.onerror=function(e){n(e.error)},t.onabort=function(){n(\"The digest operation was aborted\")}}))]:[4,t];case 1:return[2,n.sent()]}}))}))},ra=function(e){return function(e){return decodeURIComponent(atob(e).split(\"\").map((function(e){return\"%\"+(\"00\"+e.charCodeAt(0).toString(16)).slice(-2)})).join(\"\"))}(e.replace(/_/g,\"/\").replace(/-/g,\"+\"))},oa=function(e){var t=new Uint8Array(e);return function(e){var t={\"+\":\"-\",\"/\":\"_\",\"=\":\"\"};return e.replace(/[+/=]/g,(function(e){return t[e]}))}(window.btoa(String.fromCharCode.apply(String,a([],c(Array.from(t)),!1))))};function ia(e,t){return void 0===t&&(t=[]),e&&!t.includes(e)?e:\"\"}var ca=function(e,t){return o(void 0,void 0,void 0,(function(){var n,r;return i(this,(function(o){switch(o.label){case 0:return[4,(i=e,c=t,c=c||{},new Promise((function(e,t){var n=new XMLHttpRequest,r=[],o=[],a={},s=function(){return{ok:2==(n.status/100|0),statusText:n.statusText,status:n.status,url:n.responseURL,text:function(){return Promise.resolve(n.responseText)},json:function(){return Promise.resolve(n.responseText).then(JSON.parse)},blob:function(){return Promise.resolve(new Blob([n.response]))},clone:s,headers:{keys:function(){return r},entries:function(){return o},get:function(e){return a[e.toLowerCase()]},has:function(e){return e.toLowerCase()in a}}}};for(var u in n.open(c.method||\"get\",i,!0),n.onload=function(){n.getAllResponseHeaders().replace(/^(.*?):[^\\S\\n]*([\\s\\S]*?)$/gm,(function(e,t,n){r.push(t=t.toLowerCase()),o.push([t,n]),a[t]=a[t]?a[t]+\",\"+n:n})),e(s())},n.onerror=t,n.withCredentials=\"include\"==c.credentials,c.headers)n.setRequestHeader(u,c.headers[u]);n.send(c.body||null)})))];case 1:return n=o.sent(),r={ok:n.ok},[4,n.json()];case 2:return[2,(r.json=o.sent(),r)]}var i,c}))}))},aa=function(e,t,n){return o(void 0,void 0,void 0,(function(){var r,o;return i(this,(function(i){return r=new AbortController,t.signal=r.signal,[2,Promise.race([ca(e,t),new Promise((function(e,t){o=setTimeout((function(){r.abort(),t(new Error(\"Timeout when executing 'fetch'\"))}),n)}))]).finally((function(){clearTimeout(o)}))]}))}))},sa=function(e,t,n,r,c,a,s){return o(void 0,void 0,void 0,(function(){return i(this,(function(o){return[2,(i={auth:{audience:t,scope:n},timeout:c,fetchUrl:e,fetchOptions:r,useFormData:s},u=a,new Promise((function(e,t){var n=new MessageChannel;n.port1.onmessage=function(r){r.data.error?t(new Error(r.data.error)):e(r.data),n.port1.close()},u.postMessage(i,[n.port2])})))];var i,u}))}))},ua=function(e,t,n,r,c,a,s){return void 0===s&&(s=1e4),o(void 0,void 0,void 0,(function(){return i(this,(function(o){return c?[2,sa(e,t,n,r,s,c,a)]:[2,aa(e,r,s)]}))}))};function la(e,t,n,c,a,s,u){return o(this,void 0,void 0,(function(){var o,l,f,d,h,p,y,v,m;return i(this,(function(i){switch(i.label){case 0:o=null,f=0,i.label=1;case 1:if(!(f<3))return[3,6];i.label=2;case 2:return i.trys.push([2,4,,5]),[4,ua(e,n,c,a,s,u,t)];case 3:return l=i.sent(),o=null,[3,6];case 4:return d=i.sent(),o=d,[3,5];case 5:return f++,[3,1];case 6:if(o)throw o.message=o.message||\"Failed to fetch\",o;if(h=l.json,p=h.error,y=h.error_description,v=r(h,[\"error\",\"error_description\"]),!l.ok){if(m=y||\"HTTP error. Unable to fetch \".concat(e),\"mfa_required\"===p)throw new zc(p,m,v.mfa_token);throw new Dc(p||\"request_error\",m)}return[2,v]}}))}))}function fa(e,t){var n=e.baseUrl,c=e.timeout,a=e.audience,s=e.scope,u=e.auth0Client,l=e.useFormData,f=r(e,[\"baseUrl\",\"timeout\",\"audience\",\"scope\",\"auth0Client\",\"useFormData\"]);return o(this,void 0,void 0,(function(){var e;return i(this,(function(r){switch(r.label){case 0:return e=l?ta(f):JSON.stringify(f),[4,la(\"\".concat(n,\"/oauth/token\"),c,a||\"default\",s,{method:\"POST\",body:e,headers:{\"Content-Type\":l?\"application/x-www-form-urlencoded\":\"application/json\",\"Auth0-Client\":btoa(JSON.stringify(u||Nc))}},t,l)];case 1:return[2,r.sent()]}}))}))}var da=function(e){return Array.from(new Set(e))},ha=function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];return da(e.join(\" \").trim().split(/\\s+/)).join(\" \")},pa=function(){function e(e,t){void 0===t&&(t=\"@@auth0spajs@@\"),this.prefix=t,this.client_id=e.client_id,this.scope=e.scope,this.audience=e.audience}return e.prototype.toKey=function(){return\"\".concat(this.prefix,\"::\").concat(this.client_id,\"::\").concat(this.audience,\"::\").concat(this.scope)},e.fromKey=function(t){var n=c(t.split(\"::\"),4),r=n[0],o=n[1],i=n[2];return new e({client_id:o,scope:n[3],audience:i},r)},e.fromCacheEntry=function(t){return new e({scope:t.scope,audience:t.audience,client_id:t.client_id})},e}(),ya=function(){function e(){}return e.prototype.set=function(e,t){localStorage.setItem(e,JSON.stringify(t))},e.prototype.get=function(e){var t=window.localStorage.getItem(e);if(t)try{return JSON.parse(t)}catch(e){return}},e.prototype.remove=function(e){localStorage.removeItem(e)},e.prototype.allKeys=function(){return Object.keys(window.localStorage).filter((function(e){return e.startsWith(\"@@auth0spajs@@\")}))},e}(),va=function(){var e;this.enclosedCache=(e={},{set:function(t,n){e[t]=n},get:function(t){var n=e[t];if(n)return n},remove:function(t){delete e[t]},allKeys:function(){return Object.keys(e)}})},ma=function(){function e(e,t,n){this.cache=e,this.keyManifest=t,this.nowProvider=n,this.nowProvider=this.nowProvider||Uc}return e.prototype.get=function(e,t){var n;return void 0===t&&(t=0),o(this,void 0,void 0,(function(){var r,o,c,a,s;return i(this,(function(i){switch(i.label){case 0:return[4,this.cache.get(e.toKey())];case 1:return(r=i.sent())?[3,4]:[4,this.getCacheKeys()];case 2:return(o=i.sent())?(c=this.matchExistingCacheKey(e,o))?[4,this.cache.get(c)]:[3,4]:[2];case 3:r=i.sent(),i.label=4;case 4:return r?[4,this.nowProvider()]:[2];case 5:return a=i.sent(),s=Math.floor(a/1e3),r.expiresAt-t<s?r.body.refresh_token?(r.body={refresh_token:r.body.refresh_token},[4,this.cache.set(e.toKey(),r)]):[3,7]:[3,10];case 6:return i.sent(),[2,r.body];case 7:return[4,this.cache.remove(e.toKey())];case 8:return i.sent(),[4,null===(n=this.keyManifest)||void 0===n?void 0:n.remove(e.toKey())];case 9:return i.sent(),[2];case 10:return[2,r.body]}}))}))},e.prototype.set=function(e){var t;return o(this,void 0,void 0,(function(){var n,r;return i(this,(function(o){switch(o.label){case 0:return n=new pa({client_id:e.client_id,scope:e.scope,audience:e.audience}),[4,this.wrapCacheEntry(e)];case 1:return r=o.sent(),[4,this.cache.set(n.toKey(),r)];case 2:return o.sent(),[4,null===(t=this.keyManifest)||void 0===t?void 0:t.add(n.toKey())];case 3:return o.sent(),[2]}}))}))},e.prototype.clear=function(e){var t;return o(this,void 0,void 0,(function(){var n,r=this;return i(this,(function(c){switch(c.label){case 0:return[4,this.getCacheKeys()];case 1:return(n=c.sent())?[4,n.filter((function(t){return!e||t.includes(e)})).reduce((function(e,t){return o(r,void 0,void 0,(function(){return i(this,(function(n){switch(n.label){case 0:return[4,e];case 1:return n.sent(),[4,this.cache.remove(t)];case 2:return n.sent(),[2]}}))}))}),Promise.resolve())]:[2];case 2:return c.sent(),[4,null===(t=this.keyManifest)||void 0===t?void 0:t.clear()];case 3:return c.sent(),[2]}}))}))},e.prototype.clearSync=function(e){var t=this,n=this.cache.allKeys();n&&n.filter((function(t){return!e||t.includes(e)})).forEach((function(e){t.cache.remove(e)}))},e.prototype.wrapCacheEntry=function(e){return o(this,void 0,void 0,(function(){var t,n,r;return i(this,(function(o){switch(o.label){case 0:return[4,this.nowProvider()];case 1:return t=o.sent(),n=Math.floor(t/1e3)+e.expires_in,r=Math.min(n,e.decodedToken.claims.exp),[2,{body:e,expiresAt:r}]}}))}))},e.prototype.getCacheKeys=function(){var e;return o(this,void 0,void 0,(function(){var t;return i(this,(function(n){switch(n.label){case 0:return this.keyManifest?[4,this.keyManifest.get()]:[3,2];case 1:return t=null===(e=n.sent())||void 0===e?void 0:e.keys,[3,4];case 2:return[4,this.cache.allKeys()];case 3:t=n.sent(),n.label=4;case 4:return[2,t]}}))}))},e.prototype.matchExistingCacheKey=function(e,t){return t.filter((function(t){var n=pa.fromKey(t),r=new Set(n.scope&&n.scope.split(\" \")),o=e.scope.split(\" \"),i=n.scope&&o.reduce((function(e,t){return e&&r.has(t)}),!0);return\"@@auth0spajs@@\"===n.prefix&&n.client_id===e.client_id&&n.audience===e.audience&&i}))[0]},e}(),ba=function(){function e(e,t){this.storage=e,this.clientId=t,this.storageKey=\"\".concat(\"a0.spajs.txs\",\".\").concat(this.clientId),this.transaction=this.storage.get(this.storageKey)}return e.prototype.create=function(e){this.transaction=e,this.storage.save(this.storageKey,e,{daysUntilExpire:1})},e.prototype.get=function(){return this.transaction},e.prototype.remove=function(){delete this.transaction,this.storage.remove(this.storageKey)},e}(),ga=function(e){return\"number\"==typeof e},wa=[\"iss\",\"aud\",\"exp\",\"nbf\",\"iat\",\"jti\",\"azp\",\"nonce\",\"auth_time\",\"at_hash\",\"c_hash\",\"acr\",\"amr\",\"sub_jwk\",\"cnf\",\"sip_from_tag\",\"sip_date\",\"sip_callid\",\"sip_cseq_num\",\"sip_via_branch\",\"orig\",\"dest\",\"mky\",\"events\",\"toe\",\"txn\",\"rph\",\"sid\",\"vot\",\"vtm\"],Sa=function(e){if(!e.id_token)throw new Error(\"ID token is required but missing\");var t=function(e){var t=e.split(\".\"),n=c(t,3),r=n[0],o=n[1],i=n[2];if(3!==t.length||!r||!o||!i)throw new Error(\"ID token could not be decoded\");var a=JSON.parse(ra(o)),s={__raw:e},u={};return Object.keys(a).forEach((function(e){s[e]=a[e],wa.includes(e)||(u[e]=a[e])})),{encoded:{header:r,payload:o,signature:i},header:JSON.parse(ra(r)),claims:s,user:u}}(e.id_token);if(!t.claims.iss)throw new Error(\"Issuer (iss) claim must be a string present in the ID token\");if(t.claims.iss!==e.iss)throw new Error('Issuer (iss) claim mismatch in the ID token; expected \"'.concat(e.iss,'\", found \"').concat(t.claims.iss,'\"'));if(!t.user.sub)throw new Error(\"Subject (sub) claim must be a string present in the ID token\");if(\"RS256\"!==t.header.alg)throw new Error('Signature algorithm of \"'.concat(t.header.alg,'\" is not supported. Expected the ID token to be signed with \"RS256\".'));if(!t.claims.aud||\"string\"!=typeof t.claims.aud&&!Array.isArray(t.claims.aud))throw new Error(\"Audience (aud) claim must be a string or array of strings present in the ID token\");if(Array.isArray(t.claims.aud)){if(!t.claims.aud.includes(e.aud))throw new Error('Audience (aud) claim mismatch in the ID token; expected \"'.concat(e.aud,'\" but was not one of \"').concat(t.claims.aud.join(\", \"),'\"'));if(t.claims.aud.length>1){if(!t.claims.azp)throw new Error(\"Authorized Party (azp) claim must be a string present in the ID token when Audience (aud) claim has multiple values\");if(t.claims.azp!==e.aud)throw new Error('Authorized Party (azp) claim mismatch in the ID token; expected \"'.concat(e.aud,'\", found \"').concat(t.claims.azp,'\"'))}}else if(t.claims.aud!==e.aud)throw new Error('Audience (aud) claim mismatch in the ID token; expected \"'.concat(e.aud,'\" but found \"').concat(t.claims.aud,'\"'));if(e.nonce){if(!t.claims.nonce)throw new Error(\"Nonce (nonce) claim must be a string present in the ID token\");if(t.claims.nonce!==e.nonce)throw new Error('Nonce (nonce) claim mismatch in the ID token; expected \"'.concat(e.nonce,'\", found \"').concat(t.claims.nonce,'\"'))}if(e.max_age&&!ga(t.claims.auth_time))throw new Error(\"Authentication Time (auth_time) claim must be a number present in the ID token when Max Age (max_age) is specified\");if(!ga(t.claims.exp))throw new Error(\"Expiration Time (exp) claim must be a number present in the ID token\");if(!ga(t.claims.iat))throw new Error(\"Issued At (iat) claim must be a number present in the ID token\");var n=e.leeway||60,r=new Date(e.now||Date.now()),o=new Date(0),i=new Date(0),a=new Date(0);if(a.setUTCSeconds(parseInt(t.claims.auth_time)+e.max_age+n),o.setUTCSeconds(t.claims.exp+n),i.setUTCSeconds(t.claims.nbf-n),r>o)throw new Error(\"Expiration Time (exp) claim error in the ID token; current time (\".concat(r,\") is after expiration time (\").concat(o,\")\"));if(ga(t.claims.nbf)&&r<i)throw new Error(\"Not Before time (nbf) claim in the ID token indicates that this token can't be used just yet. Currrent time (\".concat(r,\") is before \").concat(i));if(ga(t.claims.auth_time)&&r>a)throw new Error(\"Authentication Time (auth_time) claim in the ID token indicates that too much time has passed since the last end-user authentication. Currrent time (\".concat(r,\") is after last auth at \").concat(a));if(e.organizationId){if(!t.claims.org_id)throw new Error(\"Organization ID (org_id) claim must be a string present in the ID token\");if(e.organizationId!==t.claims.org_id)throw new Error('Organization ID (org_id) claim mismatch in the ID token; expected \"'.concat(e.organizationId,'\", found \"').concat(t.claims.org_id,'\"'))}return t},ka=l((function(e,t){var n=s&&s.__assign||function(){return n=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++)for(var o in t=arguments[n])Object.prototype.hasOwnProperty.call(t,o)&&(e[o]=t[o]);return e},n.apply(this,arguments)};function r(e,t){if(!t)return\"\";var n=\"; \"+e;return!0===t?n:n+\"=\"+t}function o(e,t,n){return encodeURIComponent(e).replace(/%(23|24|26|2B|5E|60|7C)/g,decodeURIComponent).replace(/\\(/g,\"%28\").replace(/\\)/g,\"%29\")+\"=\"+encodeURIComponent(t).replace(/%(23|24|26|2B|3A|3C|3E|3D|2F|3F|40|5B|5D|5E|60|7B|7D|7C)/g,decodeURIComponent)+function(e){if(\"number\"==typeof e.expires){var t=new Date;t.setMilliseconds(t.getMilliseconds()+864e5*e.expires),e.expires=t}return r(\"Expires\",e.expires?e.expires.toUTCString():\"\")+r(\"Domain\",e.domain)+r(\"Path\",e.path)+r(\"Secure\",e.secure)+r(\"SameSite\",e.sameSite)}(n)}function i(e){for(var t={},n=e?e.split(\"; \"):[],r=/(%[\\dA-F]{2})+/gi,o=0;o<n.length;o++){var i=n[o].split(\"=\"),c=i.slice(1).join(\"=\");'\"'===c.charAt(0)&&(c=c.slice(1,-1));try{t[i[0].replace(r,decodeURIComponent)]=c.replace(r,decodeURIComponent)}catch(e){}}return t}function c(){return i(document.cookie)}function a(e,t,r){document.cookie=o(e,t,n({path:\"/\"},r))}t.__esModule=!0,t.encode=o,t.parse=i,t.getAll=c,t.get=function(e){return c()[e]},t.set=a,t.remove=function(e,t){a(e,\"\",n(n({},t),{expires:-1}))}}));u(ka),ka.encode,ka.parse,ka.getAll;var _a=ka.get,Ia=ka.set,Oa=ka.remove,xa={get:function(e){var t=_a(e);if(void 0!==t)return JSON.parse(t)},save:function(e,t,n){var r={};\"https:\"===window.location.protocol&&(r={secure:!0,sameSite:\"none\"}),(null==n?void 0:n.daysUntilExpire)&&(r.expires=n.daysUntilExpire),(null==n?void 0:n.cookieDomain)&&(r.domain=n.cookieDomain),Ia(e,JSON.stringify(t),r)},remove:function(e,t){var n={};(null==t?void 0:t.cookieDomain)&&(n.domain=t.cookieDomain),Oa(e,n)}},Ta={get:function(e){var t=xa.get(e);return t||xa.get(\"\".concat(\"_legacy_\").concat(e))},save:function(e,t,n){var r={};\"https:\"===window.location.protocol&&(r={secure:!0}),(null==n?void 0:n.daysUntilExpire)&&(r.expires=n.daysUntilExpire),Ia(\"\".concat(\"_legacy_\").concat(e),JSON.stringify(t),r),xa.save(e,t,n)},remove:function(e,t){var n={};(null==t?void 0:t.cookieDomain)&&(n.domain=t.cookieDomain),Oa(e,n),xa.remove(e,t),xa.remove(\"\".concat(\"_legacy_\").concat(e),t)}},Ca={get:function(e){if(\"undefined\"!=typeof sessionStorage){var t=sessionStorage.getItem(e);if(void 0!==t)return JSON.parse(t)}},save:function(e,t){sessionStorage.setItem(e,JSON.stringify(t))},remove:function(e){sessionStorage.removeItem(e)}};function ja(e,t,n){var r=void 0===t?null:t,o=function(e,t){var n=atob(e);if(t){for(var r=new Uint8Array(n.length),o=0,i=n.length;o<i;++o)r[o]=n.charCodeAt(o);return String.fromCharCode.apply(null,new Uint16Array(r.buffer))}return n}(e,void 0!==n&&n),i=o.indexOf(\"\\n\",10)+1,c=o.substring(i)+(r?\"//# sourceMappingURL=\"+r:\"\"),a=new Blob([c],{type:\"application/javascript\"});return URL.createObjectURL(a)}var La,Ra,Wa,Za,Ea=(La=\"Lyogcm9sbHVwLXBsdWdpbi13ZWItd29ya2VyLWxvYWRlciAqLwohZnVuY3Rpb24oKXsidXNlIHN0cmljdCI7dmFyIHQ9ZnVuY3Rpb24oZSxyKXtyZXR1cm4gdD1PYmplY3Quc2V0UHJvdG90eXBlT2Z8fHtfX3Byb3RvX186W119aW5zdGFuY2VvZiBBcnJheSYmZnVuY3Rpb24odCxlKXt0Ll9fcHJvdG9fXz1lfXx8ZnVuY3Rpb24odCxlKXtmb3IodmFyIHIgaW4gZSlPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSxyKSYmKHRbcl09ZVtyXSl9LHQoZSxyKX07ZnVuY3Rpb24gZShlLHIpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiByJiZudWxsIT09cil0aHJvdyBuZXcgVHlwZUVycm9yKCJDbGFzcyBleHRlbmRzIHZhbHVlICIrU3RyaW5nKHIpKyIgaXMgbm90IGEgY29uc3RydWN0b3Igb3IgbnVsbCIpO2Z1bmN0aW9uIG4oKXt0aGlzLmNvbnN0cnVjdG9yPWV9dChlLHIpLGUucHJvdG90eXBlPW51bGw9PT1yP09iamVjdC5jcmVhdGUocik6KG4ucHJvdG90eXBlPXIucHJvdG90eXBlLG5ldyBuKX12YXIgcj1mdW5jdGlvbigpe3JldHVybiByPU9iamVjdC5hc3NpZ258fGZ1bmN0aW9uKHQpe2Zvcih2YXIgZSxyPTEsbj1hcmd1bWVudHMubGVuZ3RoO3I8bjtyKyspZm9yKHZhciBvIGluIGU9YXJndW1lbnRzW3JdKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLG8pJiYodFtvXT1lW29dKTtyZXR1cm4gdH0sci5hcHBseSh0aGlzLGFyZ3VtZW50cyl9O2Z1bmN0aW9uIG4odCxlLHIsbil7cmV0dXJuIG5ldyhyfHwocj1Qcm9taXNlKSkoKGZ1bmN0aW9uKG8sYyl7ZnVuY3Rpb24gaSh0KXt0cnl7cyhuLm5leHQodCkpfWNhdGNoKHQpe2ModCl9fWZ1bmN0aW9uIGEodCl7dHJ5e3Mobi50aHJvdyh0KSl9Y2F0Y2godCl7Yyh0KX19ZnVuY3Rpb24gcyh0KXt2YXIgZTt0LmRvbmU/byh0LnZhbHVlKTooZT10LnZhbHVlLGUgaW5zdGFuY2VvZiByP2U6bmV3IHIoKGZ1bmN0aW9uKHQpe3QoZSl9KSkpLnRoZW4oaSxhKX1zKChuPW4uYXBwbHkodCxlfHxbXSkpLm5leHQoKSl9KSl9ZnVuY3Rpb24gbyh0LGUpe3ZhciByLG4sbyxjLGk9e2xhYmVsOjAsc2VudDpmdW5jdGlvbigpe2lmKDEmb1swXSl0aHJvdyBvWzFdO3JldHVybiBvWzFdfSx0cnlzOltdLG9wczpbXX07cmV0dXJuIGM9e25leHQ6YSgwKSx0aHJvdzphKDEpLHJldHVybjphKDIpfSwiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYoY1tTeW1ib2wuaXRlcmF0b3JdPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9KSxjO2Z1bmN0aW9uIGEoYyl7cmV0dXJuIGZ1bmN0aW9uKGEpe3JldHVybiBmdW5jdGlvbihjKXtpZihyKXRocm93IG5ldyBUeXBlRXJyb3IoIkdlbmVyYXRvciBpcyBhbHJlYWR5IGV4ZWN1dGluZy4iKTtmb3IoO2k7KXRyeXtpZihyPTEsbiYmKG89MiZjWzBdP24ucmV0dXJuOmNbMF0/bi50aHJvd3x8KChvPW4ucmV0dXJuKSYmby5jYWxsKG4pLDApOm4ubmV4dCkmJiEobz1vLmNhbGwobixjWzFdKSkuZG9uZSlyZXR1cm4gbztzd2l0Y2gobj0wLG8mJihjPVsyJmNbMF0sby52YWx1ZV0pLGNbMF0pe2Nhc2UgMDpjYXNlIDE6bz1jO2JyZWFrO2Nhc2UgNDpyZXR1cm4gaS5sYWJlbCsrLHt2YWx1ZTpjWzFdLGRvbmU6ITF9O2Nhc2UgNTppLmxhYmVsKyssbj1jWzFdLGM9WzBdO2NvbnRpbnVlO2Nhc2UgNzpjPWkub3BzLnBvcCgpLGkudHJ5cy5wb3AoKTtjb250aW51ZTtkZWZhdWx0OmlmKCEobz1pLnRyeXMsKG89by5sZW5ndGg+MCYmb1tvLmxlbmd0aC0xXSl8fDYhPT1jWzBdJiYyIT09Y1swXSkpe2k9MDtjb250aW51ZX1pZigzPT09Y1swXSYmKCFvfHxjWzFdPm9bMF0mJmNbMV08b1szXSkpe2kubGFiZWw9Y1sxXTticmVha31pZig2PT09Y1swXSYmaS5sYWJlbDxvWzFdKXtpLmxhYmVsPW9bMV0sbz1jO2JyZWFrfWlmKG8mJmkubGFiZWw8b1syXSl7aS5sYWJlbD1vWzJdLGkub3BzLnB1c2goYyk7YnJlYWt9b1syXSYmaS5vcHMucG9wKCksaS50cnlzLnBvcCgpO2NvbnRpbnVlfWM9ZS5jYWxsKHQsaSl9Y2F0Y2godCl7Yz1bNix0XSxuPTB9ZmluYWxseXtyPW89MH1pZig1JmNbMF0pdGhyb3cgY1sxXTtyZXR1cm57dmFsdWU6Y1swXT9jWzFdOnZvaWQgMCxkb25lOiEwfX0oW2MsYV0pfX19ZnVuY3Rpb24gYyh0LGUpe3JldHVybiB2b2lkIDA9PT1lJiYoZT1bXSksdCYmIWUuaW5jbHVkZXModCk/dDoiIn12YXIgaT1mdW5jdGlvbih0KXtmdW5jdGlvbiByKGUsbil7dmFyIG89dC5jYWxsKHRoaXMsbil8fHRoaXM7cmV0dXJuIG8uZXJyb3I9ZSxvLmVycm9yX2Rlc2NyaXB0aW9uPW4sT2JqZWN0LnNldFByb3RvdHlwZU9mKG8sci5wcm90b3R5cGUpLG99cmV0dXJuIGUocix0KSxyLmZyb21QYXlsb2FkPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcgcih0LmVycm9yLHQuZXJyb3JfZGVzY3JpcHRpb24pfSxyfShFcnJvcik7IWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIHIoZSxuLG8sYyl7dm9pZCAwPT09YyYmKGM9bnVsbCk7dmFyIGk9dC5jYWxsKHRoaXMsZSxuKXx8dGhpcztyZXR1cm4gaS5zdGF0ZT1vLGkuYXBwU3RhdGU9YyxPYmplY3Quc2V0UHJvdG90eXBlT2YoaSxyLnByb3RvdHlwZSksaX1lKHIsdCl9KGkpLGZ1bmN0aW9uKHQpe2Z1bmN0aW9uIHIoZSl7dmFyIG49dC5jYWxsKHRoaXMpfHx0aGlzO3JldHVybiBuLnBvcHVwPWUsT2JqZWN0LnNldFByb3RvdHlwZU9mKG4sci5wcm90b3R5cGUpLG59ZShyLHQpfShmdW5jdGlvbih0KXtmdW5jdGlvbiByKCl7dmFyIGU9dC5jYWxsKHRoaXMsInRpbWVvdXQiLCJUaW1lb3V0Iil8fHRoaXM7cmV0dXJuIE9iamVjdC5zZXRQcm90b3R5cGVPZihlLHIucHJvdG90eXBlKSxlfXJldHVybiBlKHIsdCkscn0oaSkpLGZ1bmN0aW9uKHQpe2Z1bmN0aW9uIHIoZSl7dmFyIG49dC5jYWxsKHRoaXMsImNhbmNlbGxlZCIsIlBvcHVwIGNsb3NlZCIpfHx0aGlzO3JldHVybiBuLnBvcHVwPWUsT2JqZWN0LnNldFByb3RvdHlwZU9mKG4sci5wcm90b3R5cGUpLG59ZShyLHQpfShpKSxmdW5jdGlvbih0KXtmdW5jdGlvbiByKGUsbixvKXt2YXIgYz10LmNhbGwodGhpcyxlLG4pfHx0aGlzO3JldHVybiBjLm1mYV90b2tlbj1vLE9iamVjdC5zZXRQcm90b3R5cGVPZihjLHIucHJvdG90eXBlKSxjfWUocix0KX0oaSk7dmFyIGE9ZnVuY3Rpb24odCl7ZnVuY3Rpb24gcihlLG4pe3ZhciBvPXQuY2FsbCh0aGlzLCJtaXNzaW5nX3JlZnJlc2hfdG9rZW4iLCJNaXNzaW5nIFJlZnJlc2ggVG9rZW4gKGF1ZGllbmNlOiAnIi5jb25jYXQoYyhlLFsiZGVmYXVsdCJdKSwiJywgc2NvcGU6ICciKS5jb25jYXQoYyhuKSwiJykiKSl8fHRoaXM7cmV0dXJuIG8uYXVkaWVuY2U9ZSxvLnNjb3BlPW4sT2JqZWN0LnNldFByb3RvdHlwZU9mKG8sci5wcm90b3R5cGUpLG99cmV0dXJuIGUocix0KSxyfShpKSxzPXt9LHU9ZnVuY3Rpb24odCxlKXtyZXR1cm4iIi5jb25jYXQodCwifCIpLmNvbmNhdChlKX07YWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsKGZ1bmN0aW9uKHQpe3ZhciBlPXQuZGF0YSxjPWUudGltZW91dCxpPWUuYXV0aCxmPWUuZmV0Y2hVcmwsbD1lLmZldGNoT3B0aW9ucyxwPWUudXNlRm9ybURhdGEsaD1mdW5jdGlvbih0LGUpe3ZhciByPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJnRbU3ltYm9sLml0ZXJhdG9yXTtpZighcilyZXR1cm4gdDt2YXIgbixvLGM9ci5jYWxsKHQpLGk9W107dHJ5e2Zvcig7KHZvaWQgMD09PWV8fGUtLSA+MCkmJiEobj1jLm5leHQoKSkuZG9uZTspaS5wdXNoKG4udmFsdWUpfWNhdGNoKHQpe289e2Vycm9yOnR9fWZpbmFsbHl7dHJ5e24mJiFuLmRvbmUmJihyPWMucmV0dXJuKSYmci5jYWxsKGMpfWZpbmFsbHl7aWYobyl0aHJvdyBvLmVycm9yfX1yZXR1cm4gaX0odC5wb3J0cywxKVswXTtyZXR1cm4gbih2b2lkIDAsdm9pZCAwLHZvaWQgMCwoZnVuY3Rpb24oKXt2YXIgdCxlLG4seSx2LGIsZCx3LE8sXztyZXR1cm4gbyh0aGlzLChmdW5jdGlvbihvKXtzd2l0Y2goby5sYWJlbCl7Y2FzZSAwOm49KGU9aXx8e30pLmF1ZGllbmNlLHk9ZS5zY29wZSxvLmxhYmVsPTE7Y2FzZSAxOmlmKG8udHJ5cy5wdXNoKFsxLDcsLDhdKSwhKHY9cD8obT1sLmJvZHksaz1uZXcgVVJMU2VhcmNoUGFyYW1zKG0pLFA9e30say5mb3JFYWNoKChmdW5jdGlvbih0LGUpe1BbZV09dH0pKSxQKTpKU09OLnBhcnNlKGwuYm9keSkpLnJlZnJlc2hfdG9rZW4mJiJyZWZyZXNoX3Rva2VuIj09PXYuZ3JhbnRfdHlwZSl7aWYoYj1mdW5jdGlvbih0LGUpe3JldHVybiBzW3UodCxlKV19KG4seSksIWIpdGhyb3cgbmV3IGEobix5KTtsLmJvZHk9cD9uZXcgVVJMU2VhcmNoUGFyYW1zKHIocih7fSx2KSx7cmVmcmVzaF90b2tlbjpifSkpLnRvU3RyaW5nKCk6SlNPTi5zdHJpbmdpZnkocihyKHt9LHYpLHtyZWZyZXNoX3Rva2VuOmJ9KSl9ZD12b2lkIDAsImZ1bmN0aW9uIj09dHlwZW9mIEFib3J0Q29udHJvbGxlciYmKGQ9bmV3IEFib3J0Q29udHJvbGxlcixsLnNpZ25hbD1kLnNpZ25hbCksdz12b2lkIDAsby5sYWJlbD0yO2Nhc2UgMjpyZXR1cm4gby50cnlzLnB1c2goWzIsNCwsNV0pLFs0LFByb21pc2UucmFjZShbKGc9YyxuZXcgUHJvbWlzZSgoZnVuY3Rpb24odCl7cmV0dXJuIHNldFRpbWVvdXQodCxnKX0pKSksZmV0Y2goZixyKHt9LGwpKV0pXTtjYXNlIDM6cmV0dXJuIHc9by5zZW50KCksWzMsNV07Y2FzZSA0OnJldHVybiBPPW8uc2VudCgpLGgucG9zdE1lc3NhZ2Uoe2Vycm9yOk8ubWVzc2FnZX0pLFsyXTtjYXNlIDU6cmV0dXJuIHc/WzQsdy5qc29uKCldOihkJiZkLmFib3J0KCksaC5wb3N0TWVzc2FnZSh7ZXJyb3I6IlRpbWVvdXQgd2hlbiBleGVjdXRpbmcgJ2ZldGNoJyJ9KSxbMl0pO2Nhc2UgNjpyZXR1cm4odD1vLnNlbnQoKSkucmVmcmVzaF90b2tlbj8oZnVuY3Rpb24odCxlLHIpe3NbdShlLHIpXT10fSh0LnJlZnJlc2hfdG9rZW4sbix5KSxkZWxldGUgdC5yZWZyZXNoX3Rva2VuKTpmdW5jdGlvbih0LGUpe2RlbGV0ZSBzW3UodCxlKV19KG4seSksaC5wb3N0TWVzc2FnZSh7b2s6dy5vayxqc29uOnR9KSxbMyw4XTtjYXNlIDc6cmV0dXJuIF89by5zZW50KCksaC5wb3N0TWVzc2FnZSh7b2s6ITEsanNvbjp7ZXJyb3JfZGVzY3JpcHRpb246Xy5tZXNzYWdlfX0pLFszLDhdO2Nhc2UgODpyZXR1cm5bMl19dmFyIGcsbSxrLFB9KSl9KSl9KSl9KCk7Cgo=\",Ra=null,Wa=!1,function(e){return Za=Za||ja(La,Ra,Wa),new Worker(Za,e)}),Ga={},Aa=function(){function e(e,t){this.cache=e,this.clientId=t,this.manifestKey=this.createManifestKeyFrom(this.clientId)}return e.prototype.add=function(e){var t;return o(this,void 0,void 0,(function(){var n,r;return i(this,(function(o){switch(o.label){case 0:return r=Set.bind,[4,this.cache.get(this.manifestKey)];case 1:return(n=new(r.apply(Set,[void 0,(null===(t=o.sent())||void 0===t?void 0:t.keys)||[]]))).add(e),[4,this.cache.set(this.manifestKey,{keys:a([],c(n),!1)})];case 2:return o.sent(),[2]}}))}))},e.prototype.remove=function(e){return o(this,void 0,void 0,(function(){var t,n;return i(this,(function(r){switch(r.label){case 0:return[4,this.cache.get(this.manifestKey)];case 1:return(t=r.sent())?((n=new Set(t.keys)).delete(e),n.size>0?[4,this.cache.set(this.manifestKey,{keys:a([],c(n),!1)})]:[3,3]):[3,5];case 2:case 4:return[2,r.sent()];case 3:return[4,this.cache.remove(this.manifestKey)];case 5:return[2]}}))}))},e.prototype.get=function(){return this.cache.get(this.manifestKey)},e.prototype.clear=function(){return this.cache.remove(this.manifestKey)},e.prototype.createManifestKeyFrom=function(e){return\"\".concat(\"@@auth0spajs@@\",\"::\").concat(e)},e}(),Pa=new Xc,Xa={memory:function(){return(new va).enclosedCache},localstorage:function(){return new ya}},Fa=function(e){return Xa[e]},Ka=function(){return!/Trident.*rv:11\\.0/.test(navigator.userAgent)},Na=function(){function e(e){var t,n,c,a,s=this;if(this.options=e,this._releaseLockOnPageHide=function(){return o(s,void 0,void 0,(function(){return i(this,(function(e){switch(e.label){case 0:return[4,Pa.releaseLock(\"auth0.lock.getTokenSilently\")];case 1:return e.sent(),window.removeEventListener(\"pagehide\",this._releaseLockOnPageHide),[2]}}))}))},\"undefined\"!=typeof window&&function(){if(!Qc())throw new Error(\"For security reasons, `window.crypto` is required to run `auth0-spa-js`.\");if(void 0===qc())throw new Error(\"\\n      auth0-spa-js must run on a secure origin. See https://github.com/auth0/auth0-spa-js/blob/master/FAQ.md#why-do-i-get-auth0-spa-js-must-run-on-a-secure-origin for more information.\\n    \")}(),e.cache&&e.cacheLocation&&console.warn(\"Both `cache` and `cacheLocation` options have been specified in the Auth0Client configuration; ignoring `cacheLocation` and using `cache`.\"),e.cache)c=e.cache;else{if(this.cacheLocation=e.cacheLocation||\"memory\",!Fa(this.cacheLocation))throw new Error('Invalid cache location \"'.concat(this.cacheLocation,'\"'));c=Fa(this.cacheLocation)()}this.httpTimeoutMs=e.httpTimeoutInSeconds?1e3*e.httpTimeoutInSeconds:1e4,this.cookieStorage=!1===e.legacySameSiteCookie?xa:Ta,this.orgHintCookieName=(a=this.options.client_id,\"auth0.\".concat(a,\".organization_hint\")),this.isAuthenticatedCookieName=function(e){return\"auth0.\".concat(e,\".is.authenticated\")}(this.options.client_id),this.sessionCheckExpiryDays=e.sessionCheckExpiryDays||1;var u,l=e.useCookiesForTransactions?this.cookieStorage:Ca;this.scope=this.options.scope,this.transactionManager=new ba(l,this.options.client_id),this.nowProvider=this.options.nowProvider||Uc,this.cacheManager=new ma(c,c.allKeys?null:new Aa(c,this.options.client_id),this.nowProvider),this.domainUrl=(u=this.options.domain,/^https?:\\/\\//.test(u)?u:\"https://\".concat(u)),this.tokenIssuer=function(e,t){return e?e.startsWith(\"https://\")?e:\"https://\".concat(e,\"/\"):\"\".concat(t,\"/\")}(this.options.issuer,this.domainUrl),this.defaultScope=ha(\"openid\",void 0!==(null===(n=null===(t=this.options)||void 0===t?void 0:t.advancedOptions)||void 0===n?void 0:n.defaultScope)?this.options.advancedOptions.defaultScope:\"openid profile email\"),this.options.useRefreshTokens&&(this.scope=ha(this.scope,\"offline_access\")),\"undefined\"!=typeof window&&window.Worker&&this.options.useRefreshTokens&&\"memory\"===this.cacheLocation&&Ka()&&(this.worker=new Ea),this.customOptions=function(e){return e.advancedOptions,e.audience,e.auth0Client,e.authorizeTimeoutInSeconds,e.cacheLocation,e.cache,e.client_id,e.domain,e.issuer,e.leeway,e.max_age,e.nowProvider,e.redirect_uri,e.scope,e.useRefreshTokens,e.useRefreshTokensFallback,e.useCookiesForTransactions,e.useFormData,r(e,[\"advancedOptions\",\"audience\",\"auth0Client\",\"authorizeTimeoutInSeconds\",\"cacheLocation\",\"cache\",\"client_id\",\"domain\",\"issuer\",\"leeway\",\"max_age\",\"nowProvider\",\"redirect_uri\",\"scope\",\"useRefreshTokens\",\"useRefreshTokensFallback\",\"useCookiesForTransactions\",\"useFormData\"])}(e),this.useRefreshTokensFallback=!1!==this.options.useRefreshTokensFallback}return e.prototype._url=function(e){var t=encodeURIComponent(btoa(JSON.stringify(this.options.auth0Client||Nc)));return\"\".concat(this.domainUrl).concat(e,\"&auth0Client=\").concat(t)},e.prototype._getParams=function(e,t,o,i,c){var a=this.options;a.useRefreshTokens,a.useCookiesForTransactions,a.useFormData,a.auth0Client,a.cacheLocation,a.advancedOptions,a.detailedResponse,a.nowProvider,a.authorizeTimeoutInSeconds,a.legacySameSiteCookie,a.sessionCheckExpiryDays,a.domain,a.leeway,a.httpTimeoutInSeconds;var s=r(a,[\"useRefreshTokens\",\"useCookiesForTransactions\",\"useFormData\",\"auth0Client\",\"cacheLocation\",\"advancedOptions\",\"detailedResponse\",\"nowProvider\",\"authorizeTimeoutInSeconds\",\"legacySameSiteCookie\",\"sessionCheckExpiryDays\",\"domain\",\"leeway\",\"httpTimeoutInSeconds\"]);return n(n(n({},s),e),{scope:ha(this.defaultScope,this.scope,e.scope),response_type:\"code\",response_mode:\"query\",state:t,nonce:o,redirect_uri:c||this.options.redirect_uri,code_challenge:i,code_challenge_method:\"S256\"})},e.prototype._authorizeUrl=function(e){return this._url(\"/authorize?\".concat(ta(e)))},e.prototype._verifyIdToken=function(e,t,n){return o(this,void 0,void 0,(function(){var r;return i(this,(function(o){switch(o.label){case 0:return[4,this.nowProvider()];case 1:return r=o.sent(),[2,Sa({iss:this.tokenIssuer,aud:this.options.client_id,id_token:e,nonce:t,organizationId:n,leeway:this.options.leeway,max_age:this._parseNumber(this.options.max_age),now:r})]}}))}))},e.prototype._parseNumber=function(e){return\"string\"!=typeof e?e:parseInt(e,10)||void 0},e.prototype._processOrgIdHint=function(e){e?this.cookieStorage.save(this.orgHintCookieName,e,{daysUntilExpire:this.sessionCheckExpiryDays,cookieDomain:this.options.cookieDomain}):this.cookieStorage.remove(this.orgHintCookieName,{cookieDomain:this.options.cookieDomain})},e.prototype.buildAuthorizeUrl=function(e){return void 0===e&&(e={}),o(this,void 0,void 0,(function(){var t,o,c,a,s,u,l,f,d,h,p,y;return i(this,(function(i){switch(i.label){case 0:return t=e.redirect_uri,o=e.appState,c=r(e,[\"redirect_uri\",\"appState\"]),a=ea($c()),s=ea($c()),u=$c(),[4,na(u)];case 1:return l=i.sent(),f=oa(l),d=e.fragment?\"#\".concat(e.fragment):\"\",h=this._getParams(c,a,s,f,t),p=this._authorizeUrl(h),y=e.organization||this.options.organization,this.transactionManager.create(n({nonce:s,code_verifier:u,appState:o,scope:h.scope,audience:h.audience||\"default\",redirect_uri:h.redirect_uri,state:a},y&&{organizationId:y})),[2,p+d]}}))}))},e.prototype.loginWithPopup=function(e,t){return o(this,void 0,void 0,(function(){var o,c,a,s,u,l,f,d,h,p,y,v,m;return i(this,(function(i){switch(i.label){case 0:if(e=e||{},!(t=t||{}).popup&&(t.popup=function(e){var t=window.screenX+(window.innerWidth-400)/2,n=window.screenY+(window.innerHeight-600)/2;return window.open(e,\"auth0:authorize:popup\",\"left=\".concat(t,\",top=\").concat(n,\",width=\").concat(400,\",height=\").concat(600,\",resizable,scrollbars=yes,status=1\"))}(\"\"),!t.popup))throw new Error(\"Unable to open a popup for loginWithPopup - window.open returned `null`\");return o=r(e,[]),c=ea($c()),a=ea($c()),s=$c(),[4,na(s)];case 1:return u=i.sent(),l=oa(u),f=this._getParams(o,c,a,l,this.options.redirect_uri||window.location.origin),d=this._authorizeUrl(n(n({},f),{response_mode:\"web_message\"})),t.popup.location.href=d,[4,Bc(n(n({},t),{timeoutInSeconds:t.timeoutInSeconds||this.options.authorizeTimeoutInSeconds||60}))];case 2:if(h=i.sent(),c!==h.state)throw new Error(\"Invalid state\");return[4,fa({audience:f.audience,scope:f.scope,baseUrl:this.domainUrl,client_id:this.options.client_id,code_verifier:s,code:h.code,grant_type:\"authorization_code\",redirect_uri:f.redirect_uri,auth0Client:this.options.auth0Client,useFormData:this.options.useFormData,timeout:this.httpTimeoutMs},this.worker)];case 3:return p=i.sent(),y=e.organization||this.options.organization,[4,this._verifyIdToken(p.id_token,a,y)];case 4:return v=i.sent(),m=n(n({},p),{decodedToken:v,scope:f.scope,audience:f.audience||\"default\",client_id:this.options.client_id}),[4,this.cacheManager.set(m)];case 5:return i.sent(),this.cookieStorage.save(this.isAuthenticatedCookieName,!0,{daysUntilExpire:this.sessionCheckExpiryDays,cookieDomain:this.options.cookieDomain}),this._processOrgIdHint(v.claims.org_id),[2]}}))}))},e.prototype.getUser=function(e){return void 0===e&&(e={}),o(this,void 0,void 0,(function(){var t,n,r;return i(this,(function(o){switch(o.label){case 0:return t=e.audience||this.options.audience||\"default\",n=ha(this.defaultScope,this.scope,e.scope),[4,this.cacheManager.get(new pa({client_id:this.options.client_id,audience:t,scope:n}))];case 1:return[2,(r=o.sent())&&r.decodedToken&&r.decodedToken.user]}}))}))},e.prototype.getIdTokenClaims=function(e){return void 0===e&&(e={}),o(this,void 0,void 0,(function(){var t,n,r;return i(this,(function(o){switch(o.label){case 0:return t=e.audience||this.options.audience||\"default\",n=ha(this.defaultScope,this.scope,e.scope),[4,this.cacheManager.get(new pa({client_id:this.options.client_id,audience:t,scope:n}))];case 1:return[2,(r=o.sent())&&r.decodedToken&&r.decodedToken.claims]}}))}))},e.prototype.loginWithRedirect=function(e){return void 0===e&&(e={}),o(this,void 0,void 0,(function(){var t,n,o;return i(this,(function(i){switch(i.label){case 0:return t=e.redirectMethod,n=r(e,[\"redirectMethod\"]),[4,this.buildAuthorizeUrl(n)];case 1:return o=i.sent(),window.location[t||\"assign\"](o),[2]}}))}))},e.prototype.handleRedirectCallback=function(e){return void 0===e&&(e=window.location.href),o(this,void 0,void 0,(function(){var t,r,o,a,s,u,l,f,d,h;return i(this,(function(i){switch(i.label){case 0:if(0===(t=e.split(\"?\").slice(1)).length)throw new Error(\"There are no query params available for parsing.\");if(r=function(e){e.indexOf(\"#\")>-1&&(e=e.substr(0,e.indexOf(\"#\")));var t=e.split(\"&\"),n={};return t.forEach((function(e){var t=c(e.split(\"=\"),2),r=t[0],o=t[1];n[r]=decodeURIComponent(o)})),n.expires_in&&(n.expires_in=parseInt(n.expires_in)),n}(t.join(\"\")),o=r.state,a=r.code,s=r.error,u=r.error_description,!(l=this.transactionManager.get()))throw new Error(\"Invalid state\");if(this.transactionManager.remove(),s)throw new Hc(s,u,o,l.appState);if(!l.code_verifier||l.state&&l.state!==o)throw new Error(\"Invalid state\");return f={audience:l.audience,scope:l.scope,baseUrl:this.domainUrl,client_id:this.options.client_id,code_verifier:l.code_verifier,grant_type:\"authorization_code\",code:a,auth0Client:this.options.auth0Client,useFormData:this.options.useFormData,timeout:this.httpTimeoutMs},void 0!==l.redirect_uri&&(f.redirect_uri=l.redirect_uri),[4,fa(f,this.worker)];case 1:return d=i.sent(),[4,this._verifyIdToken(d.id_token,l.nonce,l.organizationId)];case 2:return h=i.sent(),[4,this.cacheManager.set(n(n(n(n({},d),{decodedToken:h,audience:l.audience,scope:l.scope}),d.scope?{oauthTokenScope:d.scope}:null),{client_id:this.options.client_id}))];case 3:return i.sent(),this.cookieStorage.save(this.isAuthenticatedCookieName,!0,{daysUntilExpire:this.sessionCheckExpiryDays,cookieDomain:this.options.cookieDomain}),this._processOrgIdHint(h.claims.org_id),[2,{appState:l.appState}]}}))}))},e.prototype.checkSession=function(e){return o(this,void 0,void 0,(function(){var t;return i(this,(function(n){switch(n.label){case 0:if(!this.cookieStorage.get(this.isAuthenticatedCookieName)){if(!this.cookieStorage.get(\"auth0.is.authenticated\"))return[2];this.cookieStorage.save(this.isAuthenticatedCookieName,!0,{daysUntilExpire:this.sessionCheckExpiryDays,cookieDomain:this.options.cookieDomain}),this.cookieStorage.remove(\"auth0.is.authenticated\")}n.label=1;case 1:return n.trys.push([1,3,,4]),[4,this.getTokenSilently(e)];case 2:return n.sent(),[3,4];case 3:if(t=n.sent(),!Kc.includes(t.error))throw t;return[3,4];case 4:return[2]}}))}))},e.prototype.getTokenSilently=function(e){return void 0===e&&(e={}),o(this,void 0,void 0,(function(){var t,o,c,a,s=this;return i(this,(function(i){switch(i.label){case 0:return t=n(n({audience:this.options.audience,ignoreCache:!1},e),{scope:ha(this.defaultScope,this.scope,e.scope)}),o=t.ignoreCache,c=r(t,[\"ignoreCache\"]),[4,(u=function(){return s._getTokenSilently(n({ignoreCache:o},c))},l=\"\".concat(this.options.client_id,\"::\").concat(c.audience,\"::\").concat(c.scope),f=Ga[l],f||(f=u().finally((function(){delete Ga[l],f=null})),Ga[l]=f),f)];case 1:return a=i.sent(),[2,e.detailedResponse?a:a.access_token]}var u,l,f}))}))},e.prototype._getTokenSilently=function(e){return void 0===e&&(e={}),o(this,void 0,void 0,(function(){var t,c,a,s,u,l,f,d,h;return i(this,(function(p){switch(p.label){case 0:return t=e.ignoreCache,c=r(e,[\"ignoreCache\"]),t?[3,2]:[4,this._getEntryFromCache({scope:c.scope,audience:c.audience||\"default\",client_id:this.options.client_id})];case 1:if(a=p.sent())return[2,a];p.label=2;case 2:return[4,(y=function(){return Pa.acquireLock(\"auth0.lock.getTokenSilently\",5e3)},v=10,void 0===v&&(v=3),o(void 0,void 0,void 0,(function(){var e;return i(this,(function(t){switch(t.label){case 0:e=0,t.label=1;case 1:return e<v?[4,y()]:[3,4];case 2:if(t.sent())return[2,!0];t.label=3;case 3:return e++,[3,1];case 4:return[2,!1]}}))})))];case 3:if(!p.sent())return[3,15];p.label=4;case 4:return p.trys.push([4,,12,14]),window.addEventListener(\"pagehide\",this._releaseLockOnPageHide),t?[3,6]:[4,this._getEntryFromCache({scope:c.scope,audience:c.audience||\"default\",client_id:this.options.client_id})];case 5:if(a=p.sent())return[2,a];p.label=6;case 6:return this.options.useRefreshTokens?[4,this._getTokenUsingRefreshToken(c)]:[3,8];case 7:return u=p.sent(),[3,10];case 8:return[4,this._getTokenFromIFrame(c)];case 9:u=p.sent(),p.label=10;case 10:return s=u,[4,this.cacheManager.set(n({client_id:this.options.client_id},s))];case 11:return p.sent(),this.cookieStorage.save(this.isAuthenticatedCookieName,!0,{daysUntilExpire:this.sessionCheckExpiryDays,cookieDomain:this.options.cookieDomain}),l=s.id_token,f=s.access_token,d=s.oauthTokenScope,h=s.expires_in,[2,n(n({id_token:l,access_token:f},d?{scope:d}:null),{expires_in:h})];case 12:return[4,Pa.releaseLock(\"auth0.lock.getTokenSilently\")];case 13:return p.sent(),window.removeEventListener(\"pagehide\",this._releaseLockOnPageHide),[7];case 14:return[3,16];case 15:throw new Yc;case 16:return[2]}var y,v}))}))},e.prototype.getTokenWithPopup=function(e,t){return void 0===e&&(e={}),void 0===t&&(t={}),o(this,void 0,void 0,(function(){return i(this,(function(r){switch(r.label){case 0:return e.audience=e.audience||this.options.audience,e.scope=ha(this.defaultScope,this.scope,e.scope),t=n(n({},Fc),t),[4,this.loginWithPopup(e,t)];case 1:return r.sent(),[4,this.cacheManager.get(new pa({scope:e.scope,audience:e.audience||\"default\",client_id:this.options.client_id}))];case 2:return[2,r.sent().access_token]}}))}))},e.prototype.isAuthenticated=function(){return o(this,void 0,void 0,(function(){return i(this,(function(e){switch(e.label){case 0:return[4,this.getUser()];case 1:return[2,!!e.sent()]}}))}))},e.prototype.buildLogoutUrl=function(e){void 0===e&&(e={}),null!==e.client_id?e.client_id=e.client_id||this.options.client_id:delete e.client_id;var t=e.federated,n=r(e,[\"federated\"]),o=t?\"&federated\":\"\";return this._url(\"/v2/logout?\".concat(ta(n)))+o},e.prototype.logout=function(e){var t=this;void 0===e&&(e={});var n=e.localOnly,o=r(e,[\"localOnly\"]);if(n&&o.federated)throw new Error(\"It is invalid to set both the `federated` and `localOnly` options to `true`\");var i=function(){if(t.cookieStorage.remove(t.orgHintCookieName,{cookieDomain:t.options.cookieDomain}),t.cookieStorage.remove(t.isAuthenticatedCookieName,{cookieDomain:t.options.cookieDomain}),!n){var e=t.buildLogoutUrl(o);window.location.assign(e)}};if(this.options.cache)return this.cacheManager.clear().then((function(){return i()}));this.cacheManager.clearSync(),i()},e.prototype._getTokenFromIFrame=function(e){return o(this,void 0,void 0,(function(){var t,o,c,a,s,u,l,f,d,h,p,y,v,m,b,g,w;return i(this,(function(i){switch(i.label){case 0:return t=ea($c()),o=ea($c()),c=$c(),[4,na(c)];case 1:a=i.sent(),s=oa(a),u=r(e,[\"detailedResponse\"]),l=this._getParams(u,t,o,s,e.redirect_uri||this.options.redirect_uri||window.location.origin),(f=this.cookieStorage.get(this.orgHintCookieName))&&!l.organization&&(l.organization=f),d=this._authorizeUrl(n(n({},l),{prompt:\"none\",response_mode:\"web_message\"})),i.label=2;case 2:if(i.trys.push([2,6,,7]),window.crossOriginIsolated)throw new Dc(\"login_required\",\"The application is running in a Cross-Origin Isolated context, silently retrieving a token without refresh token is not possible.\");return h=e.timeoutInSeconds||this.options.authorizeTimeoutInSeconds,[4,(S=d,k=this.domainUrl,_=h,void 0===_&&(_=60),new Promise((function(e,t){var n=window.document.createElement(\"iframe\");n.setAttribute(\"width\",\"0\"),n.setAttribute(\"height\",\"0\"),n.style.display=\"none\";var r,o=function(){window.document.body.contains(n)&&(window.document.body.removeChild(n),window.removeEventListener(\"message\",r,!1))},i=setTimeout((function(){t(new Yc),o()}),1e3*_);r=function(n){if(n.origin==k&&n.data&&\"authorization_response\"===n.data.type){var c=n.source;c&&c.close(),n.data.response.error?t(Dc.fromPayload(n.data.response)):e(n.data.response),clearTimeout(i),window.removeEventListener(\"message\",r,!1),setTimeout(o,2e3)}},window.addEventListener(\"message\",r,!1),window.document.body.appendChild(n),n.setAttribute(\"src\",S)})))];case 3:if(p=i.sent(),t!==p.state)throw new Error(\"Invalid state\");return y=e.scope,v=e.audience,m=r(e,[\"scope\",\"audience\",\"redirect_uri\",\"ignoreCache\",\"timeoutInSeconds\",\"detailedResponse\"]),[4,fa(n(n(n({},this.customOptions),m),{scope:y,audience:v,baseUrl:this.domainUrl,client_id:this.options.client_id,code_verifier:c,code:p.code,grant_type:\"authorization_code\",redirect_uri:l.redirect_uri,auth0Client:this.options.auth0Client,useFormData:this.options.useFormData,timeout:m.timeout||this.httpTimeoutMs}),this.worker)];case 4:return b=i.sent(),[4,this._verifyIdToken(b.id_token,o)];case 5:return g=i.sent(),this._processOrgIdHint(g.claims.org_id),[2,n(n({},b),{decodedToken:g,scope:l.scope,oauthTokenScope:b.scope,audience:l.audience||\"default\"})];case 6:throw\"login_required\"===(w=i.sent()).error&&this.logout({localOnly:!0}),w;case 7:return[2]}var S,k,_}))}))},e.prototype._getTokenUsingRefreshToken=function(e){return o(this,void 0,void 0,(function(){var t,o,c,a,s,u,l,f,d;return i(this,(function(i){switch(i.label){case 0:return e.scope=ha(this.defaultScope,this.options.scope,e.scope),[4,this.cacheManager.get(new pa({scope:e.scope,audience:e.audience||\"default\",client_id:this.options.client_id}))];case 1:return(t=i.sent())&&t.refresh_token||this.worker?[3,4]:this.useRefreshTokensFallback?[4,this._getTokenFromIFrame(e)]:[3,3];case 2:return[2,i.sent()];case 3:throw new Mc(e.audience||\"default\",e.scope);case 4:o=e.redirect_uri||this.options.redirect_uri||window.location.origin,a=e.scope,s=e.audience,u=r(e,[\"scope\",\"audience\",\"ignoreCache\",\"timeoutInSeconds\",\"detailedResponse\"]),l=\"number\"==typeof e.timeoutInSeconds?1e3*e.timeoutInSeconds:null,i.label=5;case 5:return i.trys.push([5,7,,10]),[4,fa(n(n(n(n(n({},this.customOptions),u),{audience:s,scope:a,baseUrl:this.domainUrl,client_id:this.options.client_id,grant_type:\"refresh_token\",refresh_token:t&&t.refresh_token,redirect_uri:o}),l&&{timeout:l}),{auth0Client:this.options.auth0Client,useFormData:this.options.useFormData,timeout:this.httpTimeoutMs}),this.worker)];case 6:return c=i.sent(),[3,10];case 7:return((f=i.sent()).message.indexOf(\"Missing Refresh Token\")>-1||f.message&&f.message.indexOf(\"invalid refresh token\")>-1)&&this.useRefreshTokensFallback?[4,this._getTokenFromIFrame(e)]:[3,9];case 8:return[2,i.sent()];case 9:throw f;case 10:return[4,this._verifyIdToken(c.id_token)];case 11:return d=i.sent(),[2,n(n({},c),{decodedToken:d,scope:e.scope,oauthTokenScope:c.scope,audience:e.audience||\"default\"})]}}))}))},e.prototype._getEntryFromCache=function(e){var t=e.scope,r=e.audience,c=e.client_id;return o(this,void 0,void 0,(function(){var e,o,a,s,u;return i(this,(function(i){switch(i.label){case 0:return[4,this.cacheManager.get(new pa({scope:t,audience:r,client_id:c}),60)];case 1:return(e=i.sent())&&e.access_token?(o=e.id_token,a=e.access_token,s=e.oauthTokenScope,u=e.expires_in,[2,n(n({id_token:o,access_token:a},s?{scope:s}:null),{expires_in:u})]):[2]}}))}))},e}(),Ua=function(){};function Da(e){return o(this,void 0,void 0,(function(){var t;return i(this,(function(n){switch(n.label){case 0:return[4,(t=new Na(e)).checkSession()];case 1:return n.sent(),[2,t]}}))}))}export{Na as Auth0Client,Hc as AuthenticationError,Dc as GenericError,va as InMemoryCache,ya as LocalStorageCache,zc as MfaRequiredError,Vc as PopupCancelledError,Jc as PopupTimeoutError,Yc as TimeoutError,Ua as User,Da as default};\n//# sourceMappingURL=auth0-spa-js.production.esm.js.map\n","!function(e,t){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=t(require(\"react\"),require(\"@deck.gl/google-maps/typed\"),require(\"@carto/react-core\")):\"function\"==typeof define&&define.amd?define([\"react\",\"@deck.gl/google-maps/typed\",\"@carto/react-core\"],t):\"object\"==typeof exports?exports.cartoReactBasemaps=t(require(\"react\"),require(\"@deck.gl/google-maps/typed\"),require(\"@carto/react-core\")):e.cartoReactBasemaps=t(e.react,e[\"@deck.gl/google-maps/typed\"],e[\"@carto/react-core\"])}(self,((e,t,o)=>(()=>{\"use strict\";var r={485:e=>{e.exports=o},168:e=>{e.exports=t},156:t=>{t.exports=e}},n={};function a(e){var t=n[e];if(void 0!==t)return t.exports;var o=n[e]={exports:{}};return r[e](o,o.exports,a),o.exports}a.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return a.d(t,{a:t}),t},a.d=(e,t)=>{for(var o in t)a.o(t,o)&&!a.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:t[o]})},a.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),a.r=e=>{\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(e,\"__esModule\",{value:!0})};var i={};return(()=>{function e(t){return e=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e},e(t)}function t(t,o,r){return(o=function(t){var o=function(t,o){if(\"object\"!==e(t)||null===t)return t;var r=t[Symbol.toPrimitive];if(void 0!==r){var n=r.call(t,\"string\");if(\"object\"!==e(n))return n;throw new TypeError(\"@@toPrimitive must return a primitive value.\")}return String(t)}(t);return\"symbol\"===e(o)?o:String(o)}(o))in t?Object.defineProperty(t,o,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[o]=r,t}var o;a.r(i),a.d(i,{BASEMAPS:()=>u,DARK_MATTER:()=>c,GOOGLE_CUSTOM:()=>d,GOOGLE_HYBRID:()=>l,GOOGLE_ROADMAP:()=>p,GOOGLE_SATELLITE:()=>s,GoogleMap:()=>v,POSITRON:()=>r,VOYAGER:()=>n});var r=\"positron\",n=\"voyager\",c=\"dark-matter\",p=\"roadmap\",s=\"satellite\",l=\"hybrid\",d=\"custom\",u=(t(o={},r,{type:\"mapbox\",options:{mapStyle:\"https://basemaps.cartocdn.com/gl/\".concat(r,\"-gl-style/style.json\")}}),t(o,n,{type:\"mapbox\",options:{mapStyle:\"https://basemaps.cartocdn.com/gl/\".concat(n,\"-gl-style/style.json\")}}),t(o,c,{type:\"mapbox\",options:{mapStyle:\"https://basemaps.cartocdn.com/gl/\".concat(c,\"-gl-style/style.json\")}}),t(o,p,{type:\"gmaps\",options:{mapTypeId:\"roadmap\"}}),t(o,s,{type:\"gmaps\",options:{mapTypeId:s}}),t(o,l,{type:\"gmaps\",options:{mapTypeId:\"hybrid\"}}),t(o,d,{type:\"gmaps\",options:{}}),o);var g=a(156),m=a.n(g),y=a(168),f=a(485),w=[\"center\",\"heading\",\"tilt\",\"zoom\"];function b(e,t){var o=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),o.push.apply(o,r)}return o}function O(e){for(var o=1;o<arguments.length;o++){var r=null!=arguments[o]?arguments[o]:{};o%2?b(Object(r),!0).forEach((function(o){t(e,o,r[o])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):b(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function v(e){var t=e.basemap,o=e.viewState,r=e.layers,n=e.getTooltip,a=e.onClick,i=e.onResize,c=e.onViewStateChange,p=e.apiKey,s=e.mapId,l=e.customVersion,d=void 0===l?\"\":l,u=(0,g.useRef)(),b=function(e){window.google.maps.event.trigger(e,\"resize\")},v=e.style||{},S=O({position:\"absolute\",zIndex:0,left:0,top:0,width:e.width||\"100%\",height:e.height||\"100%\"},v),h=function(){var r=O({center:{lat:o.latitude,lng:o.longitude},mapTypeControl:!1,heading:o.bearing,tilt:o.pitch,zoom:o.zoom+1,fullscreenControl:!1,zoomControl:!1,streetViewControl:!1,mapId:s},t.options),p=0===u.current.children.length;if(!window.cartoGmap||p){var l=new window.google.maps.Map(u.current,r),d=new y.GoogleMapsOverlay({getTooltip:n}),g=(0,f.debounce)((function(){var t=l.getCenter(),o={longitude:t.lng(),latitude:t.lat(),zoom:Math.max(l.getZoom()-1,1),pitch:l.getTilt(),bearing:l.getHeading()};JSON.stringify(window.cartoViewState)!==JSON.stringify(o)&&(window.cartoViewState=o,c&&e.onViewStateChange({viewState:o}))}),200);l.addListener(\"bounds_changed\",g),a&&l.addListener(\"click\",a),l.addListener(\"resize\",(function(){i&&i({height:l.getDiv().offsetHeight,width:l.getDiv().offsetWidth})})),window.onresize=function(){b(l)},b(l),window.cartoGmap=l,window.cartoDeck=d,window.cartoDeck.setMap(window.cartoGmap)}else{var m=r.center,v=r.heading,S=r.tilt,h=r.zoom,j=function(e,t){if(null==e)return{};var o,r,n=function(e,t){if(null==e)return{};var o,r,n={},a=Object.keys(e);for(r=0;r<a.length;r++)o=a[r],t.indexOf(o)>=0||(n[o]=e[o]);return n}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)o=a[r],t.indexOf(o)>=0||Object.prototype.propertyIsEnumerable.call(e,o)&&(n[o]=e[o])}return n}(r,w),P={longitude:m.lng,latitude:m.lat,zoom:h-1,pitch:S,bearing:v};JSON.stringify(window.cartoViewState)!==JSON.stringify(P)&&(window.cartoGmap.setCenter(m),window.cartoGmap.setHeading(v),window.cartoGmap.setTilt(S),window.cartoGmap.setZoom(h)),window.cartoGmap.setOptions(j),window.cartoDeck.setProps({getTooltip:n})}};return window.cartoDeck&&window.cartoDeck.setProps({layers:r}),(0,g.useEffect)((function(){if(document.querySelector(\"#gmaps\"))document.querySelector(\"#gmaps\")&&window.google&&h();else{var e=document.createElement(\"script\");e.id=\"gmaps\",e.async=!0,e.type=\"text/javascript\";var t=\"https://maps.google.com/maps/api/js?key=\".concat(p,\"&callback=Function.prototype\");d&&(t=\"\".concat(t,\"&v=\").concat(d)),e.src=t;var o=document.getElementsByTagName(\"script\")[0];o.parentNode.insertBefore(e,o),e.addEventListener(\"load\",h)}})),m().createElement(\"div\",{ref:u,style:S})}})(),i})()));\n//# sourceMappingURL=index.js.map","!function(t,e){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=e(require(\"@turf/bbox-clip\"),require(\"@turf/bbox-polygon\"),require(\"@turf/union\"),require(\"@turf/invariant\"),require(\"@turf/helpers\"),require(\"@turf/boolean-intersects\"),require(\"@turf/boolean-within\"),require(\"@turf/intersect\"),require(\"quadbin\"),require(\"h3-js\")):\"function\"==typeof define&&define.amd?define([\"@turf/bbox-clip\",\"@turf/bbox-polygon\",\"@turf/union\",\"@turf/invariant\",\"@turf/helpers\",\"@turf/boolean-intersects\",\"@turf/boolean-within\",\"@turf/intersect\",\"quadbin\",\"h3-js\"],e):\"object\"==typeof exports?exports.cartoReactCore=e(require(\"@turf/bbox-clip\"),require(\"@turf/bbox-polygon\"),require(\"@turf/union\"),require(\"@turf/invariant\"),require(\"@turf/helpers\"),require(\"@turf/boolean-intersects\"),require(\"@turf/boolean-within\"),require(\"@turf/intersect\"),require(\"quadbin\"),require(\"h3-js\")):t.cartoReactCore=e(t[\"@turf/bbox-clip\"],t[\"@turf/bbox-polygon\"],t[\"@turf/union\"],t[\"@turf/invariant\"],t[\"@turf/helpers\"],t[\"@turf/boolean-intersects\"],t[\"@turf/boolean-within\"],t[\"@turf/intersect\"],t.quadbin,t[\"h3-js\"])}(self,((t,e,r,n,u,o,i,a,c,l)=>(()=>{\"use strict\";var f={72:e=>{e.exports=t},855:t=>{t.exports=e},97:t=>{t.exports=o},55:t=>{t.exports=i},830:t=>{t.exports=u},956:t=>{t.exports=a},764:t=>{t.exports=n},28:t=>{t.exports=r},502:t=>{t.exports=l},835:t=>{t.exports=c}},s={};function p(t){var e=s[t];if(void 0!==e)return e.exports;var r=s[t]={exports:{}};return f[t](r,r.exports,p),r.exports}p.n=t=>{var e=t&&t.__esModule?()=>t.default:()=>t;return p.d(e,{a:e}),e},p.d=(t,e)=>{for(var r in e)p.o(e,r)&&!p.o(t,r)&&Object.defineProperty(t,r,{enumerable:!0,get:e[r]})},p.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),p.r=t=>{\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(t,\"__esModule\",{value:!0})};var y={};return(()=>{function t(e){return t=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&\"function\"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":typeof t},t(e)}function e(e){var r=function(e,r){if(\"object\"!==t(e)||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var u=n.call(e,\"string\");if(\"object\"!==t(u))return u;throw new TypeError(\"@@toPrimitive must return a primitive value.\")}return String(e)}(e);return\"symbol\"===t(r)?r:String(r)}function r(t,r,n){return(r=e(r))in t?Object.defineProperty(t,r,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[r]=n,t}function n(t,e){if(null==t)return{};var r,n,u=function(t,e){if(null==t)return{};var r,n,u={},o=Object.keys(t);for(n=0;n<o.length;n++)r=o[n],e.indexOf(r)>=0||(u[r]=t[r]);return u}(t,e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(t);for(n=0;n<o.length;n++)r=o[n],e.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(t,r)&&(u[r]=t[r])}return u}p.r(y),p.d(y,{AggregationTypes:()=>K,EDIT_MODES:()=>we,FEATURE_SELECTION_MODES:()=>Ce,FiltersLogicalOperators:()=>X,GroupDateTypes:()=>Oe,InvalidColumnError:()=>E,MASK_ID:()=>je,Provider:()=>yt,REQUEST_GET_MAX_URL_LENGTH:()=>c,SpatialIndex:()=>W,_FeatureFlags:()=>Se,_FilterTypes:()=>vt,_applyFilters:()=>Pt,_assert:()=>j,_buildFeatureFilter:()=>St,_clearFeatureFlags:()=>Ie,_filtersToSQL:()=>Ct,_getApplicableFilters:()=>Et,_getClient:()=>Ne,_hasFeatureFlag:()=>Be,_setClient:()=>xe,_setFeatureFlags:()=>Te,aggregationFunctions:()=>et,debounce:()=>A,encodeParameter:()=>s,geojsonFeatures:()=>he,getColumnNameFromGeoColumn:()=>Q,getGeometryToIntersect:()=>q,getMonday:()=>v,getRequest:()=>l,getSpatialIndexFromGeoColumn:()=>$,groupValuesByColumn:()=>lt,groupValuesByDateColumn:()=>Ae,histogram:()=>ft,isGlobalViewport:()=>k,makeIntervalComplete:()=>Y,normalizeGeometry:()=>V,postRequest:()=>f,randomString:()=>w,scatterPlot:()=>st,throttle:()=>C,tileFeatures:()=>me});var u=[\"headers\"],o=[\"headers\"];function i(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),r.push.apply(r,n)}return r}function a(t){for(var e=1;e<arguments.length;e++){var n=null!=arguments[e]?arguments[e]:{};e%2?i(Object(n),!0).forEach((function(e){r(t,e,n[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):i(Object(n)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(n,e))}))}return t}var c=2048;function l(t,e){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},o=e.headers,i=n(e,u);return new Request(t,a({method:\"GET\",headers:a(a({Accept:\"application/json\"},r),o)},i))}function f(t,e,r){var u=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{},i=r.headers,c=n(r,o);return new Request(t,a({method:\"POST\",headers:a(a({Accept:\"application/json\",\"Content-Type\":\"application/json\"},u),i),body:JSON.stringify(e)},c))}function s(t,e){return\"\".concat(t,\"=\").concat(encodeURIComponent(e))}function v(t){var e=new Date(t),r=e.getDay(),n=e.getDate()-r+(r?1:-6);return e.setDate(n),Date.UTC(e.getUTCFullYear(),e.getUTCMonth(),e.getUTCDate())}function g(t,r){for(var n=0;n<r.length;n++){var u=r[n];u.enumerable=u.enumerable||!1,u.configurable=!0,\"value\"in u&&(u.writable=!0),Object.defineProperty(t,e(u.key),u)}}function d(t,e){return d=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},d(t,e)}function D(t){return D=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)},D(t)}function m(t,e,r){return m=function(){if(\"undefined\"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if(\"function\"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(t){return!1}}()?Reflect.construct.bind():function(t,e,r){var n=[null];n.push.apply(n,e);var u=new(Function.bind.apply(t,n));return r&&d(u,r.prototype),u},m.apply(null,arguments)}function b(t){var e=\"function\"==typeof Map?new Map:void 0;return b=function(t){if(null===t||(r=t,-1===Function.toString.call(r).indexOf(\"[native code]\")))return t;var r;if(\"function\"!=typeof t)throw new TypeError(\"Super expression must either be null or a function\");if(void 0!==e){if(e.has(t))return e.get(t);e.set(t,n)}function n(){return m(t,arguments,D(this).constructor)}return n.prototype=Object.create(t.prototype,{constructor:{value:n,enumerable:!1,writable:!0,configurable:!0}}),d(n,t)},b(t)}function h(e){var r=function(){if(\"undefined\"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if(\"function\"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(t){return!1}}();return function(){var n,u=D(e);if(r){var o=D(this).constructor;n=Reflect.construct(u,arguments,o)}else n=u.apply(this,arguments);return function(e,r){if(r&&(\"object\"===t(r)||\"function\"==typeof r))return r;if(void 0!==r)throw new TypeError(\"Derived constructors may only return object or undefined\");return function(t){if(void 0===t)throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");return t}(e)}(this,n)}}var F=\"InvalidColumnError\",O=\"\".concat(F,\": \"),E=function(t){!function(t,e){if(\"function\"!=typeof e&&null!==e)throw new TypeError(\"Super expression must either be null or a function\");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,\"prototype\",{writable:!1}),e&&d(t,e)}(u,t);var e,r,n=h(u);function u(t){var e;return function(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}(this,u),(e=n.call(this,\"\".concat(O).concat(t))).name=F,e}return e=u,r=[{key:\"is\",value:function(t){var e;return t instanceof u||(null===(e=t.message)||void 0===e?void 0:e.includes(O))}}],null&&g(e.prototype,null),r&&g(e,r),Object.defineProperty(e,\"prototype\",{writable:!1}),u}(b(Error));function A(t,e){var r,n=this;return function(){for(var u=arguments.length,o=new Array(u),i=0;i<u;i++)o[i]=arguments[i];return clearTimeout(r),r=setTimeout((function(){r=null,t.apply(n,o)}),e)}}function C(t,e){var r=0;return function(){var n=new Date;n-r>=e&&(t(),r=n)}}function w(t){for(var e=\"\",r=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\",n=0;n<t;n++)e+=r.charAt(Math.floor(Math.random()*r.length));return e}function j(t,e){if(!t)throw new Error(e)}function S(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=new Array(e);r<e;r++)n[r]=t[r];return n}function P(t,e){if(t){if(\"string\"==typeof t)return S(t,e);var r=Object.prototype.toString.call(t).slice(8,-1);return\"Object\"===r&&t.constructor&&(r=t.constructor.name),\"Map\"===r||\"Set\"===r?Array.from(t):\"Arguments\"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?S(t,e):void 0}}function T(t,e){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){var r=null==t?null:\"undefined\"!=typeof Symbol&&t[Symbol.iterator]||t[\"@@iterator\"];if(null!=r){var n,u,o,i,a=[],c=!0,l=!1;try{if(o=(r=r.call(t)).next,0===e){if(Object(r)!==r)return;c=!1}else for(;!(c=(n=o.call(r)).done)&&(a.push(n.value),a.length!==e);c=!0);}catch(t){l=!0,u=t}finally{try{if(!c&&null!=r.return&&(i=r.return(),Object(i)!==i))return}finally{if(l)throw u}}return a}}(t,e)||P(t,e)||function(){throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}()}var I=p(72),B=p.n(I),M=p(855),N=p.n(M),x=p(28),U=p.n(x),_=p(764),R=p(830);function q(t,e){return e&&e.coordinates?e:Array.isArray(t)&&4===t.length?N()(t).geometry:null}function k(t){if(t){var e=T(t,4),r=e[0],n=e[1],u=e[2],o=e[3];return u-r>359&&o-n>170.1}return!1}function G(t){var e=t.filter((function(t){return t.length>0}));return e.length>0?e:null}function L(t){if(t){if(\"Polygon\"===(0,_.getType)(t)){var e=G(t.coordinates);return e?(0,R.polygon)(e).geometry:null}if(\"MultiPolygon\"===(0,_.getType)(t)){var r=function(t){var e=t.map(G).filter((function(t){return t}));return e.length>0?e:null}(t.coordinates);return r?(0,R.multiPolygon)(r).geometry:null}return null}return null}function z(t,e){return t.map((function(t){return function(t,e){return t.map((function(t){return[t[0]+e,t[1]]}))}(t,e)}))}function H(t,e){if(t&&\"Polygon\"===(0,_.getType)(t)){var r=z(t.coordinates,e);return(0,R.polygon)(r).geometry}if(t&&\"MultiPolygon\"===(0,_.getType)(t)){var n=function(t,e){return t.map((function(t){return z(t,e)}))}(t.coordinates,e);return(0,R.multiPolygon)(n).geometry}return null}function V(t){var e=null;if(t){var r=[-180,-90,180,90],n=L(B()(t,r).geometry),u=H(t,360),o=H(t,-360);if((e=n)&&u){var i,a=L(B()(u,r).geometry);a&&(e=L(null===(i=U()(e,a))||void 0===i?void 0:i.geometry))}if(e&&o){var c,l=L(B()(o,r).geometry);l&&(e=L(null===(c=U()(e,l))||void 0===c?void 0:c.geometry))}}return e}function Y(t){return t.map((function(t){return void 0===t[0]||null===t[0]?[Number.MIN_SAFE_INTEGER,t[1]]:void 0===t[1]||null===t[1]?[t[0],Number.MAX_SAFE_INTEGER]:t}))}var W=Object.freeze({H3:\"h3\",S2:\"s2\",QUADBIN:\"quadbin\"});function Q(t){var e=t.split(\":\");return 1===e.length?e[0]:2===e.length?e[1]:null}function $(t){var e=t.split(\":\");return 1!==e.length&&2!==e.length||!Object.values(W).includes(e[0].toLowerCase())?null:e[0].toLowerCase()}var J,X=Object.freeze({AND:\"and\",OR:\"or\"}),K=Object.freeze({COUNT:\"count\",AVG:\"avg\",MIN:\"min\",MAX:\"max\",SUM:\"sum\",CUSTOM:\"custom\"});function Z(t){return function(t){if(Array.isArray(t))return S(t)}(t)||function(t){if(\"undefined\"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t[\"@@iterator\"])return Array.from(t)}(t)||P(t)||function(){throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}()}var tt=function(t){for(var e=arguments.length,r=new Array(e>1?e-1:0),n=1;n<e;n++)r[n-1]=arguments[n];var u=r[0],o=r[1],i=r[2],a=ct(o),c=((null==a?void 0:a.length)||0)<=1?function(t,e){var r=function(t){return null!=t};return null!=e&&e.length?t.filter((function(t){return r(t[e[0]])})):t.filter(r)}(u,a):u;return t(c,o,i)},et=(r(J={},K.COUNT,(function(t){return t.length})),r(J,K.MIN,(function(){for(var t=arguments.length,e=new Array(t),r=0;r<t;r++)e[r]=arguments[r];return tt.apply(void 0,[it].concat(e))})),r(J,K.MAX,(function(){for(var t=arguments.length,e=new Array(t),r=0;r<t;r++)e[r]=arguments[r];return tt.apply(void 0,[at].concat(e))})),r(J,K.SUM,(function(){for(var t=arguments.length,e=new Array(t),r=0;r<t;r++)e[r]=arguments[r];return tt.apply(void 0,[ot].concat(e))})),r(J,K.AVG,(function(){for(var t=arguments.length,e=new Array(t),r=0;r<t;r++)e[r]=arguments[r];return tt.apply(void 0,[ut].concat(e))})),J);function rt(t){return\"string\"==typeof t&&t.trim().length>0}function nt(t,e,r){if(null==e||!e.length)throw new Error(\"Cannot aggregate a feature without having keys\");if(1===e.length){var n=t[e[0]];return rt(n)?Number(n):n}var u=et[r];if(!u)throw new Error(\"\".concat(r,\" isn't a valid aggregation function\"));return u(e.map((function(e){var r=t[e];return rt(r)?Number(r):r})))}function ut(t){for(var e=arguments.length,r=new Array(e>1?e-1:0),n=1;n<e;n++)r[n-1]=arguments[n];return ot.apply(void 0,[t].concat(r))/(t.length||1)}function ot(t,e,r){var n=ct(e),u=function(t,e){return t+e};return n&&(u=function(t,e){return t+nt(e,n,r)}),t.reduce(u,0)}function it(t,e,r){var n=ct(e);return n?t.reduce((function(t,e){return Math.min(t,nt(e,n,r))}),1/0):Math.min.apply(Math,Z(t))}function at(t,e,r){var n=ct(e);return n?t.reduce((function(t,e){return Math.max(t,nt(e,n,r))}),-1/0):Math.max.apply(Math,Z(t))}function ct(t){return Array.isArray(t)?t:\"string\"==typeof t?[t]:void 0}function lt(t){var e=t.data,r=t.valuesColumns,n=t.joinOperation,u=t.keysColumn,o=t.operation;if(Array.isArray(e)&&0===e.length)return null;var i=e.reduce((function(t,e){var i=e[u],a=t.get(i)||[];t.set(i,a);var c=nt(e,r,n);return(o===K.COUNT||null!==c)&&void 0!==c&&(a.push(c),t.set(i,a)),t}),new Map),a=et[o];return a?Array.from(i).map((function(t){var e=T(t,2),r=e[0],n=e[1];return{name:r,value:a(n)}})):[]}function ft(t){var e=t.data,r=t.valuesColumns,n=t.joinOperation,u=t.ticks,o=t.operation;if(Array.isArray(e)&&0===e.length)return[];var i=[Number.MIN_SAFE_INTEGER].concat(Z(u)).map((function(t,e,r){return{bin:e,start:t,end:e===r.length-1?Number.MAX_SAFE_INTEGER:r[e+1],values:[]}}));e.forEach((function(t){var e=nt(t,r,n);if(null!=e){var u=i.find((function(t){return t.start<=e&&t.end>e}));u&&u.values.push(e)}}));var a=et[o];return a?i.map((function(t){return t.values})).map((function(t){return t.length?a(t):0})):[]}function st(t){var e=t.data,r=t.xAxisColumns,n=t.xAxisJoinOperation,u=t.yAxisColumns,o=t.yAxisJoinOperation;return e.reduce((function(t,e){var i=nt(e,r,n),a=null!=i,c=nt(e,u,o);return a&&null!=c&&t.push([i,c]),t}),[])}var pt,yt=Object.freeze({BigQuery:\"bigquery\",Redshift:\"redshift\",Postgres:\"postgres\",Snowflake:\"snowflake\",Databricks:\"databricks\"}),vt=Object.freeze({IN:\"in\",BETWEEN:\"between\",CLOSED_OPEN:\"closed_open\",TIME:\"time\",STRING_SEARCH:\"stringSearch\"}),gt=(r(pt={},vt.IN,(function(t,e){return t.includes(e)})),r(pt,vt.BETWEEN,dt),r(pt,vt.TIME,(function(t,e){var r=new Date(e).getTime();if(isFinite(r))return dt(t,r);throw new Error(\"Column used to filter by time isn't well formatted.\")})),r(pt,vt.CLOSED_OPEN,(function(t,e){return Y(t).some((function(t){var r=T(t,2),n=r[0],u=r[1];return e>=n&&e<u}))})),r(pt,vt.STRING_SEARCH,(function(t,e){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},n=ht(e,r),u=r.useRegExp?t:t.map((function(t){var e=ht(t,r).replace(mt,\"\\\\$&\");return r.mustStart&&(e=\"^\".concat(e)),r.mustEnd&&(e=\"\".concat(e,\"$\")),e})),o=new RegExp(u.join(\"|\"),r.caseSensitive?\"g\":\"gi\");return!!n.match(o)})),pt);function dt(t,e){return Y(t).some((function(t){var r=T(t,2),n=r[0],u=r[1];return e>=n&&e<=u}))}var Dt,mt=/[.*+?^${}()|[\\]\\\\]/g,bt=/(?:[\\^`\\xA8\\xAF\\xB4\\xB7\\xB8\\u02B0-\\u034E\\u0350-\\u0357\\u035D-\\u0362\\u0374\\u0375\\u037A\\u0384\\u0385\\u0483-\\u0487\\u0559\\u0591-\\u05A1\\u05A3-\\u05BD\\u05BF\\u05C1\\u05C2\\u05C4\\u064B-\\u0652\\u0657\\u0658\\u06DF\\u06E0\\u06E5\\u06E6\\u06EA-\\u06EC\\u0730-\\u074A\\u07A6-\\u07B0\\u07EB-\\u07F5\\u0818\\u0819\\u0898-\\u089F\\u08C9-\\u08D2\\u08E3-\\u08FE\\u093C\\u094D\\u0951-\\u0954\\u0971\\u09BC\\u09CD\\u0A3C\\u0A4D\\u0ABC\\u0ACD\\u0AFD-\\u0AFF\\u0B3C\\u0B4D\\u0B55\\u0BCD\\u0C3C\\u0C4D\\u0CBC\\u0CCD\\u0D3B\\u0D3C\\u0D4D\\u0DCA\\u0E47-\\u0E4C\\u0E4E\\u0EBA\\u0EC8-\\u0ECC\\u0F18\\u0F19\\u0F35\\u0F37\\u0F39\\u0F3E\\u0F3F\\u0F82-\\u0F84\\u0F86\\u0F87\\u0FC6\\u1037\\u1039\\u103A\\u1063\\u1064\\u1069-\\u106D\\u1087-\\u108D\\u108F\\u109A\\u109B\\u135D-\\u135F\\u1714\\u1715\\u17C9-\\u17D3\\u17DD\\u1939-\\u193B\\u1A75-\\u1A7C\\u1A7F\\u1AB0-\\u1ABE\\u1AC1-\\u1ACB\\u1B34\\u1B44\\u1B6B-\\u1B73\\u1BAA\\u1BAB\\u1C36\\u1C37\\u1C78-\\u1C7D\\u1CD0-\\u1CE8\\u1CED\\u1CF4\\u1CF7-\\u1CF9\\u1D2C-\\u1D6A\\u1DC4-\\u1DCF\\u1DF5-\\u1DFF\\u1FBD\\u1FBF-\\u1FC1\\u1FCD-\\u1FCF\\u1FDD-\\u1FDF\\u1FED-\\u1FEF\\u1FFD\\u1FFE\\u2CEF-\\u2CF1\\u2E2F\\u302A-\\u302F\\u3099-\\u309C\\u30FC\\uA66F\\uA67C\\uA67D\\uA67F\\uA69C\\uA69D\\uA6F0\\uA6F1\\uA700-\\uA721\\uA788-\\uA78A\\uA7F8\\uA7F9\\uA8C4\\uA8E0-\\uA8F1\\uA92B-\\uA92E\\uA953\\uA9B3\\uA9C0\\uA9E5\\uAA7B-\\uAA7D\\uAABF-\\uAAC2\\uAAF6\\uAB5B-\\uAB5F\\uAB69-\\uAB6B\\uABEC\\uABED\\uFB1E\\uFE20-\\uFE2F\\uFF3E\\uFF40\\uFF70\\uFF9E\\uFF9F\\uFFE3]|\\uD800\\uDEE0|\\uD801[\\uDF80-\\uDF85\\uDF87-\\uDFB0\\uDFB2-\\uDFBA]|\\uD802[\\uDEE5\\uDEE6]|\\uD803[\\uDD22-\\uDD27\\uDEFD-\\uDEFF\\uDF46-\\uDF50\\uDF82-\\uDF85]|\\uD804[\\uDC46\\uDC70\\uDCB9\\uDCBA\\uDD33\\uDD34\\uDD73\\uDDC0\\uDDCA-\\uDDCC\\uDE35\\uDE36\\uDEE9\\uDEEA\\uDF3C\\uDF4D\\uDF66-\\uDF6C\\uDF70-\\uDF74]|\\uD805[\\uDC42\\uDC46\\uDCC2\\uDCC3\\uDDBF\\uDDC0\\uDE3F\\uDEB6\\uDEB7\\uDF2B]|\\uD806[\\uDC39\\uDC3A\\uDD3D\\uDD3E\\uDD43\\uDDE0\\uDE34\\uDE47\\uDE99]|\\uD807[\\uDC3F\\uDD42\\uDD44\\uDD45\\uDD97]|\\uD80D[\\uDC47-\\uDC55]|\\uD81A[\\uDEF0-\\uDEF4\\uDF30-\\uDF36]|\\uD81B[\\uDF8F-\\uDF9F\\uDFF0\\uDFF1]|\\uD82B[\\uDFF0-\\uDFF3\\uDFF5-\\uDFFB\\uDFFD\\uDFFE]|\\uD833[\\uDF00-\\uDF2D\\uDF30-\\uDF46]|\\uD834[\\uDD67-\\uDD69\\uDD6D-\\uDD72\\uDD7B-\\uDD82\\uDD85-\\uDD8B\\uDDAA-\\uDDAD]|\\uD838[\\uDC30-\\uDC6D\\uDD30-\\uDD36\\uDEAE\\uDEEC-\\uDEEF]|\\uD83A[\\uDCD0-\\uDCD6\\uDD44-\\uDD46\\uDD48-\\uDD4A])/g;function ht(t,e){var r=String(t);return e.keepSpecialCharacters||(r=r.normalize(\"NFD\").replace(bt,\"\")),r}function Ft(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),r.push.apply(r,n)}return r}var Ot,Et=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=arguments.length>1?arguments[1]:void 0,n={};return Object.entries(t).forEach((function(t){var u=T(t,2),o=u[0],i=u[1],a={};Object.keys(i).filter((function(t){return i[t].owner!==e&&!i[t].ignore})).forEach((function(t){return a[t]=function(t){for(var e=1;e<arguments.length;e++){var n=null!=arguments[e]?arguments[e]:{};e%2?Ft(Object(n),!0).forEach((function(e){r(t,e,n[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):Ft(Object(n)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(n,e))}))}return t}({},i[t])})),Object.keys(a).length&&(n[o]=a)})),n},At=(r(Dt={},vt.IN,(function(t,e){var r=e.map((function(t){return isFinite(t)?t:\"'\".concat(t,\"'\")}));return\"\".concat(t,\" in(\").concat(r,\")\")})),r(Dt,vt.BETWEEN,(function(t,e){return wt(e.map((function(e){var r=T(e,2),n=r[0],u=r[1],o=isFinite(n),i=isFinite(u),a=\"\";return o&&(a+=\"\".concat(t,\" >= \").concat(n)),o&&i&&(a+=\" and \"),i&&(a+=\"\".concat(t,\" <= \").concat(u)),a})))})),r(Dt,vt.TIME,(function(t,e){var r=\"cast(\".concat(t,\" as timestamp)\");return wt(e.map((function(t){var e=T(t,2),n=e[0],u=e[1],o=isFinite(n),i=isFinite(u),a=\"\";return o&&(a+=\"\".concat(r,\" >= cast('\").concat(new Date(n).toISOString(),\"' as timestamp)\")),o&&i&&(a+=\" and \"),i&&(a+=\"\".concat(r,\" <= cast('\").concat(new Date(u).toISOString(),\"' as timestamp)\")),a})))})),r(Dt,vt.CLOSED_OPEN,(function(t,e){return wt(e.map((function(e){var r=T(e,2),n=r[0],u=r[1],o=isFinite(n),i=isFinite(u),a=\"\";return o&&(a+=\"\".concat(t,\" >= \").concat(n)),o&&i&&(a+=\" and \"),i&&(a+=\"\".concat(t,\" < \").concat(u)),a})))})),Dt),Ct=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:X.AND,r=[];return Object.entries(t).forEach((function(t){var e=T(t,2),n=e[0],u=e[1];Object.entries(u).forEach((function(t){var e=T(t,2),u=e[0],o=e[1],i=At[u];if(!i)throw new Error(\"Filter \".concat(u,\" is not defined.\"));r.push(i(n,o.values,o.params))}))})),r.length?\"WHERE \".concat(wt(r,e)):\"\"};function wt(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:X.OR;return t.map((function(t){return\"(\".concat(t,\")\")})).join(\" \".concat(e,\" \"))}var jt=(r(Ot={},X.AND,\"every\"),r(Ot,X.OR,\"some\"),Ot);function St(t){var e=t.filters,r=void 0===e?{}:e,n=t.type,u=void 0===n?\"boolean\":n,o=t.filtersLogicalOperator,i=void 0===o?X.AND:o,a=Object.keys(r);return a.length?function(t){var e=t.properties||t,n=function(t,e,r,n){return t[jt[n]]((function(t){var n=e[t],u=Object.keys(n);return!(!r||null===r[t]||void 0===r[t])&&u.every((function(e){var u=gt[e];if(!u)throw new Error('\"'.concat(e,'\" filter is not implemented.'));return u(n[e].values,r[t],n[e].params)}))}))}(a,r,e,i);return\"number\"===u?Number(n):n}:function(){return\"number\"!==u||1}}function Pt(t,e,r){return Object.keys(e).length?t.filter(St({filters:e,filtersLogicalOperator:r})):t}const Tt=\"{user}\",It=(\"https://\".concat(Tt,\".carto.com/api/v1/map\"),\"https://maps-api-v2.\".concat(\"{region}\",\".carto.com/user/\").concat(Tt),{MVT:\"mvt\",JSON:\"json\",GEOJSON:\"geojson\",BINARY:\"binary\"});let Bt;!function(t){t.Number=\"number\",t.Bigint=\"bigint\",t.String=\"string\",t.Geometry=\"geometry\",t.Timestamp=\"timestamp\",t.Object=\"object\",t.Boolean=\"boolean\",t.Variant=\"variant\",t.Unknown=\"unknown\"}(Bt||(Bt={}));var Mt=p(97),Nt=p.n(Mt),xt=p(55),Ut=p.n(xt),_t=p(956),Rt=p.n(_t);function qt(t,e){if(!t)throw new Error(e||\"@math.gl/web-mercator: assertion failed.\")}Math.log2;const kt=Math.PI,Gt=kt/4,Lt=kt/180,zt=512;function Ht(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),r.push.apply(r,n)}return r}function Vt(t){for(var e=1;e<arguments.length;e++){var n=null!=arguments[e]?arguments[e]:{};e%2?Ht(Object(n),!0).forEach((function(e){r(t,e,n[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):Ht(Object(n)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(n,e))}))}return t}function Yt(t,e){var r=[Kt([e.west,e.north]),Kt([e.east,e.south])],n=Wt[t.type];if(!n)throw new Error(\"Unrecognized geometry type \".concat(t.type));return Vt(Vt({},t),{},{coordinates:n(t.coordinates,r)})}Math.PI;var Wt={Point:Qt,MultiPoint:function(t,e){return $t(t,e)},LineString:Jt,MultiLineString:function(t,e){return t.map((function(t){return Jt(t,e)}))},Polygon:Xt,MultiPolygon:function(t,e){return t.map((function(t){return Xt(t,e)}))}};function Qt(t,e){var r=T(t,2),n=r[0],u=r[1],o=T(e,2),i=o[0],a=o[1];return[Zt(i[0],a[0],n),Zt(i[1],a[1],u)]}function $t(t,e){return t.map((function(t){return Qt(Kt(t),e)}))}function Jt(t,e){return $t(t,e)}function Xt(t,e){return t.map((function(t){return $t(t,e)}))}function Kt(t){return function(t){const[e,r]=t;qt(Number.isFinite(e)),qt(Number.isFinite(r)&&r>=-90&&r<=90,\"invalid latitude\");const n=r*Lt;return[zt*(e*Lt+kt)/(2*kt),zt*(kt+Math.log(Math.tan(Gt+.5*n)))/(2*kt)]}(t)}function Zt(t,e,r){return(r-t)/(e-t)}function te(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=new Array(e);r<e;r++)n[r]=t[r];return n}var ee=Object.freeze({Point:0,LineString:1,Polygon:2});function re(t){return(t.primitivePolygonIndices||t.pathIndices||t.pointIndices).value}function ne(t,e){var r,n=function(t,e){return t.featureIds.value[e]}(t,e),u=t.properties,o=t.numericProps,i=t.fields,a={uniqueId:null==i||null===(r=i[n])||void 0===r?void 0:r.id,properties:u[n],numericProps:{}};for(var c in o)a.numericProps[c]=o[c].value[e];return a}function ue(t){var e=t.properties,r=t.numericProps;return Object.assign({},e,r)}function oe(t,e,r){if(e)return ie(t,e);if(t.uniqueId)return t.uniqueId;var n=r.size+1;return ie(t,\"cartodb_id\")||ie(t,\"geoid\")||n}function ie(t,e){var r=t.properties;return t.numericProps[e]||r[e]}function ae(t,e){switch(e){case ee.Polygon:return{type:\"Polygon\",coordinates:[t]};case ee.LineString:return{type:\"LineString\",coordinates:t};case ee.Point:return{type:\"Point\",coordinates:t[0]};default:throw new Error(\"Invalid geometry type\")}}function ce(t,e,r){for(var n=[],u=t;u<e;u++)n.push(Array.from(r.value.subarray(u*r.size,(u+1)*r.size)));return n}function le(t){var e=t.map,r=t.tileIsFullyVisible,n=t.geometryIntersection,u=t.data,o=t.type,i=t.uniqueIdProperty;null!=u&&u.properties.length&&(r?function(t){for(var e=t.map,r=t.data,n=t.uniqueIdProperty,u=re(r),o=0;o<u.length-1;o++){var i=ne(r,u[o]),a=oe(i,n,e);a&&!e.has(a)&&e.set(a,ue(i))}}({map:e,data:u,uniqueIdProperty:i}):function(t){for(var e=t.map,r=t.data,n=t.geometryIntersection,u=t.type,o=t.uniqueIdProperty,i=re(r),a=r.positions,c=0;c<i.length-1;c++){var l=i[c],f=i[c+1],s=ne(r,l),p=oe(s,o,e);if(p&&!e.has(p)){var y=ce(l,f,a);Nt()(ae(y,u),n)&&e.set(p,ue(s))}}}({map:e,data:u,geometryIntersection:n,type:o,uniqueIdProperty:i}))}var fe=p(835),se=p(502);function pe(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),r.push.apply(r,n)}return r}function ye(t){for(var e=1;e<arguments.length;e++){var n=null!=arguments[e]?arguments[e]:{};e%2?pe(Object(n),!0).forEach((function(e){r(t,e,n[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):pe(Object(n)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(n,e))}))}return t}function ve(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=new Array(e);r<e;r++)n[r]=t[r];return n}function ge(t){var e=t.tiles,n=t.geometryToIntersect,u=t.geoColumName,o=t.spatialIndex,i=new Map,a=function(t,e){var r,n=null===(r=t.find((function(t){var e;return null===(e=t.data)||void 0===e?void 0:e.length})))||void 0===r?void 0:r.data;if(n)return e===W.QUADBIN?Number((0,fe.getResolution)(n[0].id)):e===W.H3?(0,se.h3GetResolution)(n[0].id):void 0}(e,o),c=u||o;if(!a)return[];var l=function(t,e,r){return e===W.QUADBIN?(0,fe.geometryToCells)(t,r):e===W.H3?(0,se.polyfill)(B()(t,de).geometry.coordinates,r,!0).concat((0,se.polyfill)(B()(t,De).geometry.coordinates,r,!0)):void 0}(n,o,a);if(null==l||!l.length)return[];var f,s=l.reduce((function(t,e){return t[e]={},t}),{}),p=function(t,e){var r=\"undefined\"!=typeof Symbol&&t[Symbol.iterator]||t[\"@@iterator\"];if(!r){if(Array.isArray(t)||(r=function(t,e){if(t){if(\"string\"==typeof t)return ve(t,e);var r=Object.prototype.toString.call(t).slice(8,-1);return\"Object\"===r&&t.constructor&&(r=t.constructor.name),\"Map\"===r||\"Set\"===r?Array.from(t):\"Arguments\"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?ve(t,e):void 0}}(t))||e&&t&&\"number\"==typeof t.length){r&&(t=r);var n=0,u=function(){};return{s:u,n:function(){return n>=t.length?{done:!0}:{done:!1,value:t[n++]}},e:function(t){throw t},f:u}}throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}var o,i=!0,a=!1;return{s:function(){r=r.call(t)},n:function(){var t=r.next();return i=t.done,t},e:function(t){a=!0,o=t},f:function(){try{i||null==r.return||r.return()}finally{if(a)throw o}}}}(e);try{for(p.s();!(f=p.n()).done;){var y=f.value;!1!==y.isVisible&&y.data&&y.data.forEach((function(t){t.id in s&&i.set(t.id,ye(ye({},t.properties),{},r({},c,t.id)))}))}}catch(t){p.e(t)}finally{p.f()}return Array.from(i.values())}var de=[-180,-90,0,90],De=[0,-90,180,90];function me(t){var e=t.tiles,r=t.viewport,n=t.geometry,u=t.uniqueIdProperty,o=t.tileFormat,i=t.geoColumName,a=t.spatialIndex,c=q(r,n);return c?a?ge({tiles:e,geometryToIntersect:c,geoColumName:i,spatialIndex:a}):function(t){var e,r,n,u,o=t.tiles,i=t.tileFormat,a=t.geometryToIntersect,c=t.uniqueIdProperty,l=new Map,f=function(t,e){var r=\"undefined\"!=typeof Symbol&&t[Symbol.iterator]||t[\"@@iterator\"];if(!r){if(Array.isArray(t)||(r=function(t,e){if(t){if(\"string\"==typeof t)return te(t,e);var r=Object.prototype.toString.call(t).slice(8,-1);return\"Object\"===r&&t.constructor&&(r=t.constructor.name),\"Map\"===r||\"Set\"===r?Array.from(t):\"Arguments\"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?te(t,e):void 0}}(t))||e&&t&&\"number\"==typeof t.length){r&&(t=r);var n=0,u=function(){};return{s:u,n:function(){return n>=t.length?{done:!0}:{done:!1,value:t[n++]}},e:function(t){throw t},f:u}}throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}var o,i=!0,a=!1;return{s:function(){r=r.call(t)},n:function(){var t=r.next();return i=t.done,t},e:function(t){a=!0,o=t},f:function(){try{i||null==r.return||r.return()}finally{if(a)throw o}}}}(o);try{for(f.s();!(e=f.n()).done;){var s=e.value;if(!1!==s.isVisible&&s.data){var p=s.bbox,y=N()([p.west,p.south,p.east,p.north]),v=Ut()(y,a),g=Rt()(y,a);if(g){var d={type:\"Feature\",geometry:i===It.MVT?Yt(g.geometry,p):g.geometry};r=s.data.points,n=void 0,void 0,u=(n=r.featureIds.value)[n.length-1],r.pointIndices={value:new n.constructor(n.length+1),size:1},r.pointIndices.value.set(n),r.pointIndices.value.set([u+1],n.length),le({map:l,tileIsFullyVisible:v,geometryIntersection:d,data:s.data.points,type:ee.Point,uniqueIdProperty:c}),le({map:l,tileIsFullyVisible:v,geometryIntersection:d,data:s.data.lines,type:ee.LineString,uniqueIdProperty:c}),le({map:l,tileIsFullyVisible:v,geometryIntersection:d,data:s.data.polygons,type:ee.Polygon,uniqueIdProperty:c})}}}}catch(t){f.e(t)}finally{f.f()}return Array.from(l.values())}({tiles:e,tileFormat:o,geometryToIntersect:c,uniqueIdProperty:u}):[]}function be(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=new Array(e);r<e;r++)n[r]=t[r];return n}function he(t){var e=t.geojson,r=t.viewport,n=t.geometry,u=t.uniqueIdProperty,o=0,i=new Map,a=q(r,n);if(!a)return[];var c,l=function(t,e){var r=\"undefined\"!=typeof Symbol&&t[Symbol.iterator]||t[\"@@iterator\"];if(!r){if(Array.isArray(t)||(r=function(t,e){if(t){if(\"string\"==typeof t)return be(t,e);var r=Object.prototype.toString.call(t).slice(8,-1);return\"Object\"===r&&t.constructor&&(r=t.constructor.name),\"Map\"===r||\"Set\"===r?Array.from(t):\"Arguments\"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?be(t,e):void 0}}(t))||e&&t&&\"number\"==typeof t.length){r&&(t=r);var n=0,u=function(){};return{s:u,n:function(){return n>=t.length?{done:!0}:{done:!1,value:t[n++]}},e:function(t){throw t},f:u}}throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}var o,i=!0,a=!1;return{s:function(){r=r.call(t)},n:function(){var t=r.next();return i=t.done,t},e:function(t){a=!0,o=t},f:function(){try{i||null==r.return||r.return()}finally{if(a)throw o}}}}(e.features);try{for(l.s();!(c=l.n()).done;){var f=c.value,s=u?f.properties[u]:++o;!i.has(s)&&Nt()(a,f)&&i.set(s,f.properties)}}catch(t){l.e(t)}finally{l.f()}return Array.from(i.values())}var Fe,Oe=Object.freeze({YEARS:\"year\",MONTHS:\"month\",WEEKS:\"week\",DAYS:\"day\",HOURS:\"hour\",MINUTES:\"minute\",SECONDS:\"second\"}),Ee=(r(Fe={},Oe.YEARS,(function(t){return Date.UTC(t.getUTCFullYear())})),r(Fe,Oe.MONTHS,(function(t){return Date.UTC(t.getUTCFullYear(),t.getUTCMonth())})),r(Fe,Oe.WEEKS,(function(t){return v(t)})),r(Fe,Oe.DAYS,(function(t){return Date.UTC(t.getUTCFullYear(),t.getUTCMonth(),t.getUTCDate())})),r(Fe,Oe.HOURS,(function(t){return Date.UTC(t.getUTCFullYear(),t.getUTCMonth(),t.getUTCDate(),t.getUTCHours())})),r(Fe,Oe.MINUTES,(function(t){return Date.UTC(t.getUTCFullYear(),t.getUTCMonth(),t.getUTCDate(),t.getUTCHours(),t.getUTCMinutes())})),r(Fe,Oe.SECONDS,(function(t){return Date.UTC(t.getUTCFullYear(),t.getUTCMonth(),t.getUTCDate(),t.getUTCHours(),t.getUTCMinutes(),t.getUTCSeconds())})),Fe);function Ae(t){var e=t.data,r=t.valuesColumns,n=t.joinOperation,u=t.keysColumn,o=t.groupType,i=t.operation;if(Array.isArray(e)&&0===e.length)return null;var a=Ee[o];if(!a)return null;var c=e.reduce((function(t,e){var o=e[u],i=new Date(o),c=a(i);if(!isNaN(c)){var l=t.get(c);l||(l=[],t.set(c,l));var f=nt(e,r,n);null!=f&&(l.push(f),t.set(c,l))}return t}),new Map),l=et[i];return l?Z(c.entries()).map((function(t){var e=T(t,2),r=e[0],n=e[1];return{name:r,value:l(n)}})).sort((function(t,e){return t.name-e.name})):[]}var Ce=Object.freeze({POLYGON:\"DrawPolygonMode\",RECTANGLE:\"DrawRectangleMode\",CIRCLE:\"DrawCircleFromCenterMode\",LASSO_TOOL:\"DrawPolygonByDraggingMode\"}),we=Object.freeze({EDIT:\"edit\"}),je=\"feature_selection_mask\",Se=Object.freeze({REMOTE_WIDGETS:\"2023-remote-widgets\"}),Pe=[Se.REMOTE_WIDGETS];function Te(e){var r=function(t){return\"string\"==typeof t&&t};if(Array.isArray(e)&&e.every(r))Pe=e;else{if(Array.isArray(e)||\"object\"!==t(e)||!Object.keys(e).every(r))throw new Error(\"Invalid feature flags: \".concat(e));Pe=[];for(var n=0,u=Object.entries(e);n<u.length;n++){var o=T(u[n],2),i=o[0];o[1]&&Pe.push(i)}}}function Ie(){Pe=[]}function Be(t){return Pe.includes(t)}var Me=\"c4react\";function Ne(){return Me}function xe(t){Me=t}})(),y})()));\n//# sourceMappingURL=index.js.map","import { EditableGeoJsonLayer } from '@nebula.gl/layers';\n\n// EditableGeoJsonLayer extends EditableLayer and it's its code https://github.com/uber/nebula.gl/blob/master/modules/layers/src/layers/editable-layer.ts#L75\n// We've overwritten _addEventHandlers and _removeEventHandlers to be able to use an eventManager sent it as a property instead of use\n// the default (this.context.deck.eventManager). We need to do this to get the compatibility with Google maps because GoogleMapsOverlay\n// uses its own event system\n\nconst EVENT_TYPES = ['anyclick', 'pointermove', 'panstart', 'panmove', 'panend', 'keyup'];\n\nexport default class EditableCartoGeoJsonLayer extends EditableGeoJsonLayer {\n  updateState({ props, oldProps, context, changeFlags }) {\n    if (props.eventManager !== oldProps.eventManager) {\n      this._removeEventHandlers(props.eventManager);\n      this._removeEventHandlers(oldProps.eventManager);\n      this._addEventHandlers();\n    }\n    super.updateState({ props, oldProps, context, changeFlags });\n  }\n\n  _addEventHandlers() {\n    const eventManager = this._getEventManager();\n    const { eventHandler } = this.state._editableLayerState;\n\n    for (const eventType of EVENT_TYPES) {\n      eventManager.on(eventType, eventHandler, {\n        // give nebula a higher priority so that it can stop propagation to deck.gl's map panning handlers\n        priority: 100\n      });\n    }\n  }\n\n  _removeEventHandlers(_eventManager = undefined) {\n    const eventManager = _eventManager || this._getEventManager();\n    const { eventHandler } = this.state._editableLayerState;\n\n    for (const eventType of EVENT_TYPES) {\n      eventManager.off(eventType, eventHandler);\n    }\n  }\n\n  _getEventManager() {\n    return this.props.eventManager || this.context.deck.eventManager;\n  }\n}\n","import { EventManager } from 'mjolnir.js';\nimport { useEffect, useMemo } from 'react';\nimport { useSelector } from 'react-redux';\nimport { BASEMAPS } from '@carto/react-basemaps/';\nimport { FEATURE_SELECTION_MODES } from '@carto/react-core/';\n\n// When we're using Google as a base map, Nebula layer doesn't work becase Nebula uses the Deck Gl eventManager\n// so in this case we're defining a new EventManager with the Google maps div. On the other hand, in Builder\n// we don't use the c4r GoogleMap component so we need to send a EventManager as parameter\nexport default function useEventManager({\n  eventManager,\n  isEdit,\n  isSelected,\n  selectedMode\n}) {\n  const isGmaps = useSelector((state) => BASEMAPS[state.carto.basemap].type === 'gmaps');\n  const cartoGmap = window.cartoGmap;\n\n  const customEventManager = useMemo(() => {\n    if (eventManager) {\n      return eventManager;\n    }\n\n    if (isGmaps && cartoGmap) {\n      return new EventManager(cartoGmap.getDiv());\n    }\n    // If Google is not the base map we use the default Nebula EventManager\n    return undefined;\n  }, [cartoGmap, eventManager, isGmaps]);\n\n  // Disable the map interactivity if we're using Google as a base map and we're editing\n  // the geometry or drawing a lasso. Nebula does it automatically when the base map is not Google\n  useEffect(() => {\n    if (isGmaps && cartoGmap) {\n      const disableDragAndDrop =\n        (isEdit && isSelected) || selectedMode === FEATURE_SELECTION_MODES.LASSO_TOOL;\n      cartoGmap.setOptions({ gestureHandling: disableDragAndDrop ? 'none' : 'auto' });\n    }\n  }, [cartoGmap, isEdit, isGmaps, isSelected, selectedMode]);\n\n  return customEventManager;\n}\n","import { catchUserErrors } from '../tools/catchUserErrors';\nimport { setDebugMode } from '../tools/monitor';\nimport { display } from '../tools/display';\nexport function makePublicApi(stub) {\n    const publicApi = {\n        version: \"6.6.4\",\n        // This API method is intentionally not monitored, since the only thing executed is the\n        // user-provided 'callback'.  All SDK usages executed in the callback should be monitored, and\n        // we don't want to interfere with the user uncaught exceptions.\n        onReady(callback) {\n            callback();\n        },\n        ...stub,\n    };\n    // Add a \"hidden\" property to set debug mode. We define it that way to hide it\n    // as much as possible but of course it's not a real protection.\n    Object.defineProperty(publicApi, '_setDebug', {\n        get() {\n            return setDebugMode;\n        },\n        enumerable: false,\n    });\n    return publicApi;\n}\nexport function defineGlobal(global, name, api) {\n    const existingGlobalVariable = global[name];\n    if (existingGlobalVariable && !existingGlobalVariable.q && existingGlobalVariable.version) {\n        display.warn('SDK is loaded more than once. This is unsupported and might have unexpected behavior.');\n    }\n    global[name] = api;\n    if (existingGlobalVariable && existingGlobalVariable.q) {\n        existingGlobalVariable.q.forEach((fn) => catchUserErrors(fn, 'onReady callback threw an error:')());\n    }\n}\n//# sourceMappingURL=init.js.map","import { monitor } from '../tools/monitor';\nimport { getZoneJsOriginalValue } from '../tools/getZoneJsOriginalValue';\n/**\n * Add an event listener to an event target object (Window, Element, mock object...).  This provides\n * a few conveniences compared to using `element.addEventListener` directly:\n *\n * * supports IE11 by: using an option object only if needed and emulating the `once` option\n *\n * * wraps the listener with a `monitor` function\n *\n * * returns a `stop` function to remove the listener\n */\nexport function addEventListener(configuration, eventTarget, eventName, listener, options) {\n    return addEventListeners(configuration, eventTarget, [eventName], listener, options);\n}\n/**\n * Add event listeners to an event target object (Window, Element, mock object...).  This provides\n * a few conveniences compared to using `element.addEventListener` directly:\n *\n * * supports IE11 by: using an option object only if needed and emulating the `once` option\n *\n * * wraps the listener with a `monitor` function\n *\n * * returns a `stop` function to remove the listener\n *\n * * with `once: true`, the listener will be called at most once, even if different events are listened\n */\nexport function addEventListeners(configuration, eventTarget, eventNames, listener, { once, capture, passive } = {}) {\n    const listenerWithMonitor = monitor((event) => {\n        if (!event.isTrusted && !event.__ddIsTrusted && !configuration.allowUntrustedEvents) {\n            return;\n        }\n        if (once) {\n            stop();\n        }\n        listener(event);\n    });\n    const options = passive ? { capture, passive } : capture;\n    // Use the window.EventTarget.prototype when possible to avoid wrong overrides (e.g: https://github.com/salesforce/lwc/issues/1824)\n    const listenerTarget = window.EventTarget && eventTarget instanceof EventTarget ? window.EventTarget.prototype : eventTarget;\n    const add = getZoneJsOriginalValue(listenerTarget, 'addEventListener');\n    eventNames.forEach((eventName) => add.call(eventTarget, eventName, listenerWithMonitor, options));\n    function stop() {\n        const remove = getZoneJsOriginalValue(listenerTarget, 'removeEventListener');\n        eventNames.forEach((eventName) => remove.call(eventTarget, eventName, listenerWithMonitor, options));\n    }\n    return {\n        stop,\n    };\n}\n//# sourceMappingURL=addEventListener.js.map","import { Observable } from '../tools/observable';\nimport { objectValues } from '../tools/utils/polyfills';\nimport { addEventListeners, addEventListener } from './addEventListener';\nexport const PageExitReason = {\n    HIDDEN: 'visibility_hidden',\n    UNLOADING: 'before_unload',\n    PAGEHIDE: 'page_hide',\n    FROZEN: 'page_frozen',\n};\nexport function createPageMayExitObservable(configuration) {\n    return new Observable((observable) => {\n        const { stop: stopListeners } = addEventListeners(configuration, window, [\"visibilitychange\" /* DOM_EVENT.VISIBILITY_CHANGE */, \"freeze\" /* DOM_EVENT.FREEZE */], (event) => {\n            if (event.type === \"visibilitychange\" /* DOM_EVENT.VISIBILITY_CHANGE */ && document.visibilityState === 'hidden') {\n                /**\n                 * Only event that guarantee to fire on mobile devices when the page transitions to background state\n                 * (e.g. when user switches to a different application, goes to homescreen, etc), or is being unloaded.\n                 */\n                observable.notify({ reason: PageExitReason.HIDDEN });\n            }\n            else if (event.type === \"freeze\" /* DOM_EVENT.FREEZE */) {\n                /**\n                 * After transitioning in background a tab can be freezed to preserve resources. (cf: https://developer.chrome.com/blog/page-lifecycle-api)\n                 * Allow to collect events happening between hidden and frozen state.\n                 */\n                observable.notify({ reason: PageExitReason.FROZEN });\n            }\n        }, { capture: true });\n        const stopBeforeUnloadListener = addEventListener(configuration, window, \"beforeunload\" /* DOM_EVENT.BEFORE_UNLOAD */, () => {\n            observable.notify({ reason: PageExitReason.UNLOADING });\n        }).stop;\n        return () => {\n            stopListeners();\n            stopBeforeUnloadListener();\n        };\n    });\n}\nexport function isPageExitReason(reason) {\n    return objectValues(PageExitReason).includes(reason);\n}\n//# sourceMappingURL=pageMayExitObservable.js.map","import { noop } from '../tools/utils/functionUtils';\nimport { addEventListener } from './addEventListener';\nexport function runOnReadyState(configuration, expectedReadyState, callback) {\n    if (document.readyState === expectedReadyState || document.readyState === 'complete') {\n        callback();\n        return { stop: noop };\n    }\n    const eventName = expectedReadyState === 'complete' ? \"load\" /* DOM_EVENT.LOAD */ : \"DOMContentLoaded\" /* DOM_EVENT.DOM_CONTENT_LOADED */;\n    return addEventListener(configuration, window, eventName, callback, { once: true });\n}\nexport function asyncRunOnReadyState(configuration, expectedReadyState) {\n    return new Promise((resolve) => {\n        runOnReadyState(configuration, expectedReadyState, resolve);\n    });\n}\n//# sourceMappingURL=runOnReadyState.js.map","export const INTAKE_SITE_STAGING = 'datad0g.com';\nexport const INTAKE_SITE_FED_STAGING = 'dd0g-gov.com';\nexport const INTAKE_SITE_US1 = 'datadoghq.com';\nexport const INTAKE_SITE_EU1 = 'datadoghq.eu';\nexport const INTAKE_SITE_US1_FED = 'ddog-gov.com';\nexport const PCI_INTAKE_HOST_US1 = 'pci.browser-intake-datadoghq.com';\nexport const INTAKE_URL_PARAMETERS = ['ddsource', 'ddtags'];\n//# sourceMappingURL=intakeSites.js.map","export function getConnectivity() {\n    var _a;\n    const navigator = window.navigator;\n    return {\n        status: navigator.onLine ? 'connected' : 'not_connected',\n        interfaces: navigator.connection && navigator.connection.type ? [navigator.connection.type] : undefined,\n        effective_type: (_a = navigator.connection) === null || _a === void 0 ? void 0 : _a.effectiveType,\n    };\n}\n//# sourceMappingURL=connectivity.js.map","import { sanitize } from '../../tools/serialisation/sanitize';\nimport { jsonStringify } from '../../tools/serialisation/jsonStringify';\nimport { computeStackTrace } from '../../tools/stackTrace/computeStackTrace';\nimport { toStackTraceString } from '../../tools/stackTrace/handlingStack';\nexport const NO_ERROR_STACK_PRESENT_MESSAGE = 'No stack, consider using an instance of Error';\nexport function computeRawError({ stackTrace, originalError, handlingStack, componentStack, startClocks, nonErrorPrefix, source, handling, }) {\n    const isErrorInstance = isError(originalError);\n    const message = computeMessage(stackTrace, isErrorInstance, nonErrorPrefix, originalError);\n    const stack = hasUsableStack(isErrorInstance, stackTrace)\n        ? toStackTraceString(stackTrace)\n        : NO_ERROR_STACK_PRESENT_MESSAGE;\n    const causes = isErrorInstance ? flattenErrorCauses(originalError, source) : undefined;\n    const type = stackTrace ? stackTrace.name : undefined;\n    const fingerprint = tryToGetFingerprint(originalError);\n    const context = tryToGetErrorContext(originalError);\n    return {\n        startClocks,\n        source,\n        handling,\n        handlingStack,\n        componentStack,\n        originalError,\n        type,\n        message,\n        stack,\n        causes,\n        fingerprint,\n        context,\n    };\n}\nfunction computeMessage(stackTrace, isErrorInstance, nonErrorPrefix, originalError) {\n    // Favor stackTrace message only if tracekit has really been able to extract something meaningful (message + name)\n    // TODO rework tracekit integration to avoid scattering error building logic\n    return (stackTrace === null || stackTrace === void 0 ? void 0 : stackTrace.message) && (stackTrace === null || stackTrace === void 0 ? void 0 : stackTrace.name)\n        ? stackTrace.message\n        : !isErrorInstance\n            ? `${nonErrorPrefix} ${jsonStringify(sanitize(originalError))}`\n            : 'Empty message';\n}\nfunction hasUsableStack(isErrorInstance, stackTrace) {\n    if (stackTrace === undefined) {\n        return false;\n    }\n    if (isErrorInstance) {\n        return true;\n    }\n    // handle cases where tracekit return stack = [] or stack = [{url: undefined, line: undefined, column: undefined}]\n    // TODO rework tracekit integration to avoid generating those unusable stack\n    return stackTrace.stack.length > 0 && (stackTrace.stack.length > 1 || stackTrace.stack[0].url !== undefined);\n}\nexport function tryToGetFingerprint(originalError) {\n    return isError(originalError) && 'dd_fingerprint' in originalError ? String(originalError.dd_fingerprint) : undefined;\n}\nexport function tryToGetErrorContext(originalError) {\n    if (originalError !== null && typeof originalError === 'object' && 'dd_context' in originalError) {\n        return originalError.dd_context;\n    }\n}\nexport function getFileFromStackTraceString(stack) {\n    var _a;\n    return (_a = /@ (.+)/.exec(stack)) === null || _a === void 0 ? void 0 : _a[1];\n}\nexport function isError(error) {\n    return error instanceof Error || Object.prototype.toString.call(error) === '[object Error]';\n}\nexport function flattenErrorCauses(error, parentSource) {\n    let currentError = error;\n    const causes = [];\n    while (isError(currentError === null || currentError === void 0 ? void 0 : currentError.cause) && causes.length < 10) {\n        const stackTrace = computeStackTrace(currentError.cause);\n        causes.push({\n            message: currentError.cause.message,\n            source: parentSource,\n            type: stackTrace === null || stackTrace === void 0 ? void 0 : stackTrace.name,\n            stack: stackTrace && toStackTraceString(stackTrace),\n        });\n        currentError = currentError.cause;\n    }\n    return causes.length ? causes : undefined;\n}\n//# sourceMappingURL=error.js.map","export const ErrorSource = {\n    AGENT: 'agent',\n    CONSOLE: 'console',\n    CUSTOM: 'custom',\n    LOGGER: 'logger',\n    NETWORK: 'network',\n    SOURCE: 'source',\n    REPORT: 'report',\n};\n//# sourceMappingURL=error.types.js.map","export const TelemetryType = {\n    log: 'log',\n    configuration: 'configuration',\n    usage: 'usage',\n};\n//# sourceMappingURL=rawTelemetryEvent.types.js.map","import { ConsoleApiName } from '../../tools/display';\nimport { NO_ERROR_STACK_PRESENT_MESSAGE, isError } from '../error/error';\nimport { toStackTraceString } from '../../tools/stackTrace/handlingStack';\nimport { getExperimentalFeatures } from '../../tools/experimentalFeatures';\nimport { INTAKE_SITE_STAGING, INTAKE_SITE_US1_FED } from '../configuration';\nimport { Observable } from '../../tools/observable';\nimport { timeStampNow } from '../../tools/utils/timeUtils';\nimport { displayIfDebugEnabled, startMonitorErrorCollection } from '../../tools/monitor';\nimport { sendToExtension } from '../../tools/sendToExtension';\nimport { performDraw } from '../../tools/utils/numberUtils';\nimport { jsonStringify } from '../../tools/serialisation/jsonStringify';\nimport { combine } from '../../tools/mergeInto';\nimport { computeStackTrace } from '../../tools/stackTrace/computeStackTrace';\nimport { getConnectivity } from '../connectivity';\nimport { createBoundedBuffer } from '../../tools/boundedBuffer';\nimport { TelemetryType } from './rawTelemetryEvent.types';\nconst ALLOWED_FRAME_URLS = [\n    'https://www.datadoghq-browser-agent.com',\n    'https://www.datad0g-browser-agent.com',\n    'https://d3uc069fcn7uxw.cloudfront.net',\n    'https://d20xtzwzcl0ceb.cloudfront.net',\n    'http://localhost',\n    '<anonymous>',\n];\nconst TELEMETRY_EXCLUDED_SITES = [INTAKE_SITE_US1_FED];\n// eslint-disable-next-line local-rules/disallow-side-effects\nlet preStartTelemetryBuffer = createBoundedBuffer();\nlet onRawTelemetryEventCollected = (event) => {\n    preStartTelemetryBuffer.add(() => onRawTelemetryEventCollected(event));\n};\nexport function startTelemetry(telemetryService, configuration) {\n    let contextProvider;\n    const observable = new Observable();\n    const alreadySentEvents = new Set();\n    const telemetryEnabled = !TELEMETRY_EXCLUDED_SITES.includes(configuration.site) && performDraw(configuration.telemetrySampleRate);\n    const telemetryEnabledPerType = {\n        [TelemetryType.log]: telemetryEnabled,\n        [TelemetryType.configuration]: telemetryEnabled && performDraw(configuration.telemetryConfigurationSampleRate),\n        [TelemetryType.usage]: telemetryEnabled && performDraw(configuration.telemetryUsageSampleRate),\n    };\n    const runtimeEnvInfo = getRuntimeEnvInfo();\n    onRawTelemetryEventCollected = (rawEvent) => {\n        const stringifiedEvent = jsonStringify(rawEvent);\n        if (telemetryEnabledPerType[rawEvent.type] &&\n            alreadySentEvents.size < configuration.maxTelemetryEventsPerPage &&\n            !alreadySentEvents.has(stringifiedEvent)) {\n            const event = toTelemetryEvent(telemetryService, rawEvent, runtimeEnvInfo);\n            observable.notify(event);\n            sendToExtension('telemetry', event);\n            alreadySentEvents.add(stringifiedEvent);\n        }\n    };\n    startMonitorErrorCollection(addTelemetryError);\n    function toTelemetryEvent(telemetryService, event, runtimeEnvInfo) {\n        return combine({\n            type: 'telemetry',\n            date: timeStampNow(),\n            service: telemetryService,\n            version: \"6.6.4\",\n            source: 'browser',\n            _dd: {\n                format_version: 2,\n            },\n            telemetry: combine(event, {\n                runtime_env: runtimeEnvInfo,\n                connectivity: getConnectivity(),\n                sdk_setup: \"npm\",\n            }),\n            experimental_features: Array.from(getExperimentalFeatures()),\n        }, contextProvider !== undefined ? contextProvider() : {});\n    }\n    return {\n        setContextProvider: (provider) => {\n            contextProvider = provider;\n        },\n        observable,\n        enabled: telemetryEnabled,\n    };\n}\nfunction getRuntimeEnvInfo() {\n    return {\n        is_local_file: window.location.protocol === 'file:',\n        is_worker: 'WorkerGlobalScope' in self,\n    };\n}\nexport function startFakeTelemetry() {\n    const events = [];\n    onRawTelemetryEventCollected = (event) => {\n        events.push(event);\n    };\n    return events;\n}\n// need to be called after telemetry context is provided and observers are registered\nexport function drainPreStartTelemetry() {\n    preStartTelemetryBuffer.drain();\n}\nexport function resetTelemetry() {\n    preStartTelemetryBuffer = createBoundedBuffer();\n    onRawTelemetryEventCollected = (event) => {\n        preStartTelemetryBuffer.add(() => onRawTelemetryEventCollected(event));\n    };\n}\n/**\n * Avoid mixing telemetry events from different data centers\n * but keep replicating staging events for reliability\n */\nexport function isTelemetryReplicationAllowed(configuration) {\n    return configuration.site === INTAKE_SITE_STAGING;\n}\nexport function addTelemetryDebug(message, context) {\n    displayIfDebugEnabled(ConsoleApiName.debug, message, context);\n    onRawTelemetryEventCollected({\n        type: TelemetryType.log,\n        message,\n        status: \"debug\" /* StatusType.debug */,\n        ...context,\n    });\n}\nexport function addTelemetryError(e, context) {\n    onRawTelemetryEventCollected({\n        type: TelemetryType.log,\n        status: \"error\" /* StatusType.error */,\n        ...formatError(e),\n        ...context,\n    });\n}\nexport function addTelemetryConfiguration(configuration) {\n    onRawTelemetryEventCollected({\n        type: TelemetryType.configuration,\n        configuration,\n    });\n}\nexport function addTelemetryUsage(usage) {\n    onRawTelemetryEventCollected({\n        type: TelemetryType.usage,\n        usage,\n    });\n}\nexport function formatError(e) {\n    if (isError(e)) {\n        const stackTrace = computeStackTrace(e);\n        return {\n            error: {\n                kind: stackTrace.name,\n                stack: toStackTraceString(scrubCustomerFrames(stackTrace)),\n            },\n            message: stackTrace.message,\n        };\n    }\n    return {\n        error: {\n            stack: NO_ERROR_STACK_PRESENT_MESSAGE,\n        },\n        message: `${\"Uncaught\" /* NonErrorPrefix.UNCAUGHT */} ${jsonStringify(e)}`,\n    };\n}\nexport function scrubCustomerFrames(stackTrace) {\n    stackTrace.stack = stackTrace.stack.filter((frame) => !frame.url || ALLOWED_FRAME_URLS.some((allowedFrameUrl) => frame.url.startsWith(allowedFrameUrl)));\n    return stackTrace;\n}\n//# sourceMappingURL=telemetry.js.map","import { removeItem } from './utils/arrayUtils';\nconst BUFFER_LIMIT = 500;\nexport function createBoundedBuffer() {\n    const buffer = [];\n    const add = (callback) => {\n        const length = buffer.push(callback);\n        if (length > BUFFER_LIMIT) {\n            buffer.splice(0, 1);\n        }\n    };\n    const remove = (callback) => {\n        removeItem(buffer, callback);\n    };\n    const drain = (arg) => {\n        buffer.forEach((callback) => callback(arg));\n        buffer.length = 0;\n    };\n    return {\n        add,\n        remove,\n        drain,\n    };\n}\n//# sourceMappingURL=boundedBuffer.js.map","import { display } from './display';\nexport function catchUserErrors(fn, errorMsg) {\n    return (...args) => {\n        try {\n            return fn(...args);\n        }\n        catch (err) {\n            display.error(errorMsg, err);\n        }\n    };\n}\n//# sourceMappingURL=catchUserErrors.js.map","/* eslint-disable local-rules/disallow-side-effects */\n/**\n * Keep references on console methods to avoid triggering patched behaviors\n *\n * NB: in some setup, console could already be patched by another SDK.\n * In this case, some display messages can be sent by the other SDK\n * but we should be safe from infinite loop nonetheless.\n */\nexport const ConsoleApiName = {\n    log: 'log',\n    debug: 'debug',\n    info: 'info',\n    warn: 'warn',\n    error: 'error',\n};\n/**\n * When building JS bundles, some users might use a plugin[1] or configuration[2] to remove\n * \"console.*\" references. This causes some issue as we expect `console.*` to be defined.\n * As a workaround, let's use a variable alias, so those expressions won't be taken into account by\n * simple static analysis.\n *\n * [1]: https://babeljs.io/docs/babel-plugin-transform-remove-console/\n * [2]: https://github.com/terser/terser#compress-options (look for drop_console)\n */\nexport const globalConsole = console;\nexport const originalConsoleMethods = {};\nObject.keys(ConsoleApiName).forEach((name) => {\n    originalConsoleMethods[name] = globalConsole[name];\n});\nconst PREFIX = 'Datadog Browser SDK:';\nexport const display = {\n    debug: originalConsoleMethods.debug.bind(globalConsole, PREFIX),\n    log: originalConsoleMethods.log.bind(globalConsole, PREFIX),\n    info: originalConsoleMethods.info.bind(globalConsole, PREFIX),\n    warn: originalConsoleMethods.warn.bind(globalConsole, PREFIX),\n    error: originalConsoleMethods.error.bind(globalConsole, PREFIX),\n};\nexport const DOCS_ORIGIN = 'https://docs.datadoghq.com';\nexport const DOCS_TROUBLESHOOTING = `${DOCS_ORIGIN}/real_user_monitoring/browser/troubleshooting`;\nexport const MORE_DETAILS = 'More details:';\n//# sourceMappingURL=display.js.map","/**\n * LIMITATION:\n * For NPM setup, this feature flag singleton is shared between RUM and Logs product.\n * This means that an experimental flag set on the RUM product will be set on the Logs product.\n * So keep in mind that in certain configurations, your experimental feature flag may affect other products.\n *\n * FORMAT:\n * All feature flags should be snake_cased\n */\n// We want to use a real enum (i.e. not a const enum) here, to be able to check whether an arbitrary\n// string is an expected feature flag\nimport { objectHasValue } from './utils/objectUtils';\n// eslint-disable-next-line no-restricted-syntax\nexport var ExperimentalFeature;\n(function (ExperimentalFeature) {\n    ExperimentalFeature[\"WRITABLE_RESOURCE_GRAPHQL\"] = \"writable_resource_graphql\";\n    ExperimentalFeature[\"USER_ACCOUNT_TRACE_HEADER\"] = \"user_account_trace_header\";\n    ExperimentalFeature[\"PROFILING\"] = \"profiling\";\n})(ExperimentalFeature || (ExperimentalFeature = {}));\nconst enabledExperimentalFeatures = new Set();\nexport function initFeatureFlags(enableExperimentalFeatures) {\n    if (Array.isArray(enableExperimentalFeatures)) {\n        addExperimentalFeatures(enableExperimentalFeatures.filter((flag) => objectHasValue(ExperimentalFeature, flag)));\n    }\n}\nexport function addExperimentalFeatures(enabledFeatures) {\n    enabledFeatures.forEach((flag) => {\n        enabledExperimentalFeatures.add(flag);\n    });\n}\nexport function isExperimentalFeatureEnabled(featureName) {\n    return enabledExperimentalFeatures.has(featureName);\n}\nexport function resetExperimentalFeatures() {\n    enabledExperimentalFeatures.clear();\n}\nexport function getExperimentalFeatures() {\n    return enabledExperimentalFeatures;\n}\n//# sourceMappingURL=experimentalFeatures.js.map","/**\n * inspired by https://mathiasbynens.be/notes/globalthis\n */\nexport function getGlobalObject() {\n    if (typeof globalThis === 'object') {\n        return globalThis;\n    }\n    Object.defineProperty(Object.prototype, '_dd_temp_', {\n        get() {\n            return this;\n        },\n        configurable: true,\n    });\n    // @ts-ignore _dd_temp is defined using defineProperty\n    let globalObject = _dd_temp_;\n    // @ts-ignore _dd_temp is defined using defineProperty\n    delete Object.prototype._dd_temp_;\n    if (typeof globalObject !== 'object') {\n        // on safari _dd_temp_ is available on window but not globally\n        // fallback on other browser globals check\n        if (typeof self === 'object') {\n            globalObject = self;\n        }\n        else if (typeof window === 'object') {\n            globalObject = window;\n        }\n        else {\n            globalObject = {};\n        }\n    }\n    return globalObject;\n}\n//# sourceMappingURL=getGlobalObject.js.map","import { getGlobalObject } from './getGlobalObject';\n/**\n * Gets the original value for a DOM API that was potentially patched by Zone.js.\n *\n * Zone.js[1] is a library that patches a bunch of JS and DOM APIs. It usually stores the original\n * value of the patched functions/constructors/methods in a hidden property prefixed by\n * __zone_symbol__.\n *\n * In multiple occasions, we observed that Zone.js is the culprit of important issues leading to\n * browser resource exhaustion (memory leak, high CPU usage). This method is used as a workaround to\n * use the original DOM API instead of the one patched by Zone.js.\n *\n * [1]: https://github.com/angular/angular/tree/main/packages/zone.js\n */\nexport function getZoneJsOriginalValue(target, name) {\n    const browserWindow = getGlobalObject();\n    let original;\n    if (browserWindow.Zone && typeof browserWindow.Zone.__symbol__ === 'function') {\n        original = target[browserWindow.Zone.__symbol__(name)];\n    }\n    if (!original) {\n        original = target[name];\n    }\n    return original;\n}\n//# sourceMappingURL=getZoneJsOriginalValue.js.map","import { setTimeout } from './timer';\nimport { callMonitored } from './monitor';\nimport { noop } from './utils/functionUtils';\nimport { createHandlingStack } from './stackTrace/handlingStack';\n/**\n * Instruments a method on a object, calling the given callback before the original method is\n * invoked. The callback receives an object with information about the method call.\n *\n * This function makes sure that we are \"good citizens\" regarding third party instrumentations: when\n * removing the instrumentation, the original method is usually restored, but if a third party\n * instrumentation was set after ours, we keep it in place and just replace our instrumentation with\n * a noop.\n *\n * Note: it is generally better to instrument methods that are \"owned\" by the object instead of ones\n * that are inherited from the prototype chain. Example:\n * * do:    `instrumentMethod(Array.prototype, 'push', ...)`\n * * don't: `instrumentMethod([], 'push', ...)`\n *\n * This method is also used to set event handler properties (ex: window.onerror = ...), as it has\n * the same requirements as instrumenting a method:\n * * if the event handler is already set by a third party, we need to call it and not just blindly\n * override it.\n * * if the event handler is set by a third party after us, we need to keep it in place when\n * removing ours.\n *\n * @example\n *\n *  instrumentMethod(window, 'fetch', ({ target, parameters, onPostCall }) => {\n *    console.log('Before calling fetch on', target, 'with parameters', parameters)\n *\n *    onPostCall((result) => {\n *      console.log('After fetch calling on', target, 'with parameters', parameters, 'and result', result)\n *    })\n *  })\n */\nexport function instrumentMethod(targetPrototype, method, onPreCall, { computeHandlingStack } = {}) {\n    let original = targetPrototype[method];\n    if (typeof original !== 'function') {\n        if (method in targetPrototype && method.startsWith('on')) {\n            original = noop;\n        }\n        else {\n            return { stop: noop };\n        }\n    }\n    let stopped = false;\n    const instrumentation = function () {\n        if (stopped) {\n            // eslint-disable-next-line @typescript-eslint/no-unsafe-return, @typescript-eslint/no-unsafe-call\n            return original.apply(this, arguments);\n        }\n        const parameters = Array.from(arguments);\n        let postCallCallback;\n        callMonitored(onPreCall, null, [\n            {\n                target: this,\n                parameters,\n                onPostCall: (callback) => {\n                    postCallCallback = callback;\n                },\n                handlingStack: computeHandlingStack ? createHandlingStack('instrumented method') : undefined,\n            },\n        ]);\n        // eslint-disable-next-line @typescript-eslint/no-unsafe-call\n        const result = original.apply(this, parameters);\n        if (postCallCallback) {\n            callMonitored(postCallCallback, null, [result]);\n        }\n        // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n        return result;\n    };\n    targetPrototype[method] = instrumentation;\n    return {\n        stop: () => {\n            stopped = true;\n            // If the instrumentation has been removed by a third party, keep the last one\n            if (targetPrototype[method] === instrumentation) {\n                targetPrototype[method] = original;\n            }\n        },\n    };\n}\nexport function instrumentSetter(targetPrototype, property, after) {\n    const originalDescriptor = Object.getOwnPropertyDescriptor(targetPrototype, property);\n    if (!originalDescriptor || !originalDescriptor.set || !originalDescriptor.configurable) {\n        return { stop: noop };\n    }\n    const stoppedInstrumentation = noop;\n    let instrumentation = (target, value) => {\n        // put hooked setter into event loop to avoid of set latency\n        setTimeout(() => {\n            if (instrumentation !== stoppedInstrumentation) {\n                after(target, value);\n            }\n        }, 0);\n    };\n    const instrumentationWrapper = function (value) {\n        originalDescriptor.set.call(this, value);\n        instrumentation(this, value);\n    };\n    Object.defineProperty(targetPrototype, property, {\n        set: instrumentationWrapper,\n    });\n    return {\n        stop: () => {\n            var _a;\n            if (((_a = Object.getOwnPropertyDescriptor(targetPrototype, property)) === null || _a === void 0 ? void 0 : _a.set) === instrumentationWrapper) {\n                Object.defineProperty(targetPrototype, property, originalDescriptor);\n            }\n            instrumentation = stoppedInstrumentation;\n        },\n    };\n}\n//# sourceMappingURL=instrumentMethod.js.map","import { getType } from './utils/typeUtils';\n/**\n * Iterate over source and affect its sub values into destination, recursively.\n * If the source and destination can't be merged, return source.\n */\nexport function mergeInto(destination, source, circularReferenceChecker = createCircularReferenceChecker()) {\n    // ignore the source if it is undefined\n    if (source === undefined) {\n        return destination;\n    }\n    if (typeof source !== 'object' || source === null) {\n        // primitive values - just return source\n        return source;\n    }\n    else if (source instanceof Date) {\n        return new Date(source.getTime());\n    }\n    else if (source instanceof RegExp) {\n        const flags = source.flags ||\n            // old browsers compatibility\n            [\n                source.global ? 'g' : '',\n                source.ignoreCase ? 'i' : '',\n                source.multiline ? 'm' : '',\n                source.sticky ? 'y' : '',\n                source.unicode ? 'u' : '',\n            ].join('');\n        return new RegExp(source.source, flags);\n    }\n    if (circularReferenceChecker.hasAlreadyBeenSeen(source)) {\n        // remove circular references\n        return undefined;\n    }\n    else if (Array.isArray(source)) {\n        const merged = Array.isArray(destination) ? destination : [];\n        for (let i = 0; i < source.length; ++i) {\n            merged[i] = mergeInto(merged[i], source[i], circularReferenceChecker);\n        }\n        return merged;\n    }\n    const merged = getType(destination) === 'object' ? destination : {};\n    for (const key in source) {\n        if (Object.prototype.hasOwnProperty.call(source, key)) {\n            merged[key] = mergeInto(merged[key], source[key], circularReferenceChecker);\n        }\n    }\n    return merged;\n}\n/**\n * A simplistic implementation of a deep clone algorithm.\n * Caveats:\n * - It doesn't maintain prototype chains - don't use with instances of custom classes.\n * - It doesn't handle Map and Set\n */\nexport function deepClone(value) {\n    return mergeInto(undefined, value);\n}\nexport function combine(...sources) {\n    let destination;\n    for (const source of sources) {\n        // Ignore any undefined or null sources.\n        if (source === undefined || source === null) {\n            continue;\n        }\n        destination = mergeInto(destination, source);\n    }\n    return destination;\n}\nfunction createCircularReferenceChecker() {\n    if (typeof WeakSet !== 'undefined') {\n        const set = new WeakSet();\n        return {\n            hasAlreadyBeenSeen(value) {\n                const has = set.has(value);\n                if (!has) {\n                    set.add(value);\n                }\n                return has;\n            },\n        };\n    }\n    const array = [];\n    return {\n        hasAlreadyBeenSeen(value) {\n            const has = array.indexOf(value) >= 0;\n            if (!has) {\n                array.push(value);\n            }\n            return has;\n        },\n    };\n}\n//# sourceMappingURL=mergeInto.js.map","import { display } from './display';\nlet onMonitorErrorCollected;\nlet debugMode = false;\nexport function startMonitorErrorCollection(newOnMonitorErrorCollected) {\n    onMonitorErrorCollected = newOnMonitorErrorCollected;\n}\nexport function setDebugMode(newDebugMode) {\n    debugMode = newDebugMode;\n}\nexport function resetMonitor() {\n    onMonitorErrorCollected = undefined;\n    debugMode = false;\n}\nexport function monitored(_, __, descriptor) {\n    const originalMethod = descriptor.value;\n    descriptor.value = function (...args) {\n        const decorated = onMonitorErrorCollected ? monitor(originalMethod) : originalMethod;\n        return decorated.apply(this, args);\n    };\n}\nexport function monitor(fn) {\n    return function () {\n        // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n        return callMonitored(fn, this, arguments);\n    }; // consider output type has input type\n}\nexport function callMonitored(fn, context, args) {\n    try {\n        // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n        return fn.apply(context, args);\n    }\n    catch (e) {\n        monitorError(e);\n    }\n}\nexport function monitorError(e) {\n    displayIfDebugEnabled(e);\n    if (onMonitorErrorCollected) {\n        try {\n            onMonitorErrorCollected(e);\n        }\n        catch (e) {\n            displayIfDebugEnabled(e);\n        }\n    }\n}\nexport function displayIfDebugEnabled(...args) {\n    if (debugMode) {\n        display.error('[MONITOR]', ...args);\n    }\n}\n//# sourceMappingURL=monitor.js.map","// eslint-disable-next-line no-restricted-syntax\nexport class Observable {\n    constructor(onFirstSubscribe) {\n        this.onFirstSubscribe = onFirstSubscribe;\n        this.observers = [];\n    }\n    subscribe(f) {\n        this.observers.push(f);\n        if (this.observers.length === 1 && this.onFirstSubscribe) {\n            this.onLastUnsubscribe = this.onFirstSubscribe(this) || undefined;\n        }\n        return {\n            unsubscribe: () => {\n                this.observers = this.observers.filter((other) => f !== other);\n                if (!this.observers.length && this.onLastUnsubscribe) {\n                    this.onLastUnsubscribe();\n                }\n            },\n        };\n    }\n    notify(data) {\n        this.observers.forEach((observer) => observer(data));\n    }\n}\nexport function mergeObservables(...observables) {\n    return new Observable((globalObservable) => {\n        const subscriptions = observables.map((observable) => observable.subscribe((data) => globalObservable.notify(data)));\n        return () => subscriptions.forEach((subscription) => subscription.unsubscribe());\n    });\n}\n//# sourceMappingURL=observable.js.map","import { setTimeout, clearTimeout } from './timer';\nimport { monitor } from './monitor';\nimport { dateNow } from './utils/timeUtils';\n/**\n * 'requestIdleCallback' with a shim.\n */\nexport function requestIdleCallback(callback, opts) {\n    // Note: check both 'requestIdleCallback' and 'cancelIdleCallback' existence because some polyfills only implement 'requestIdleCallback'.\n    if (window.requestIdleCallback && window.cancelIdleCallback) {\n        const id = window.requestIdleCallback(monitor(callback), opts);\n        return () => window.cancelIdleCallback(id);\n    }\n    return requestIdleCallbackShim(callback);\n}\nexport const MAX_TASK_TIME = 50;\n/*\n * Shim from https://developer.chrome.com/blog/using-requestidlecallback#checking_for_requestidlecallback\n * Note: there is no simple way to support the \"timeout\" option, so we ignore it.\n */\nexport function requestIdleCallbackShim(callback) {\n    const start = dateNow();\n    const timeoutId = setTimeout(() => {\n        callback({\n            didTimeout: false,\n            timeRemaining: () => Math.max(0, MAX_TASK_TIME - (dateNow() - start)),\n        });\n    }, 0);\n    return () => clearTimeout(timeoutId);\n}\n//# sourceMappingURL=requestIdleCallback.js.map","export function sendToExtension(type, payload) {\n    const callback = window.__ddBrowserSdkExtensionCallback;\n    if (callback) {\n        callback({ type, payload });\n    }\n}\n//# sourceMappingURL=sendToExtension.js.map","import { noop } from '../utils/functionUtils';\n/**\n * Custom implementation of JSON.stringify that ignores some toJSON methods. We need to do that\n * because some sites badly override toJSON on certain objects. Removing all toJSON methods from\n * nested values would be too costly, so we just detach them from the root value, and native classes\n * used to build JSON values (Array and Object).\n *\n * Note: this still assumes that JSON.stringify is correct.\n */\nexport function jsonStringify(value, replacer, space) {\n    if (typeof value !== 'object' || value === null) {\n        return JSON.stringify(value);\n    }\n    // Note: The order matter here. We need to detach toJSON methods on parent classes before their\n    // subclasses.\n    const restoreObjectPrototypeToJson = detachToJsonMethod(Object.prototype);\n    const restoreArrayPrototypeToJson = detachToJsonMethod(Array.prototype);\n    const restoreValuePrototypeToJson = detachToJsonMethod(Object.getPrototypeOf(value));\n    const restoreValueToJson = detachToJsonMethod(value);\n    try {\n        return JSON.stringify(value, replacer, space);\n    }\n    catch (_a) {\n        return '<error: unable to serialize object>';\n    }\n    finally {\n        restoreObjectPrototypeToJson();\n        restoreArrayPrototypeToJson();\n        restoreValuePrototypeToJson();\n        restoreValueToJson();\n    }\n}\nexport function detachToJsonMethod(value) {\n    const object = value;\n    const objectToJson = object.toJSON;\n    if (objectToJson) {\n        delete object.toJSON;\n        return () => {\n            object.toJSON = objectToJson;\n        };\n    }\n    return noop;\n}\n//# sourceMappingURL=jsonStringify.js.map","import { display } from '../display';\nimport { ONE_KIBI_BYTE } from '../utils/byteUtils';\nimport { detachToJsonMethod } from './jsonStringify';\n// The maximum size of a single event is 256KiB. By default, we ensure that user-provided data\n// going through sanitize fits inside our events, while leaving room for other contexts, metadata, ...\nconst SANITIZE_DEFAULT_MAX_CHARACTER_COUNT = 220 * ONE_KIBI_BYTE;\n// Symbol for the root element of the JSONPath used for visited objects\nconst JSON_PATH_ROOT_ELEMENT = '$';\n// When serializing (using JSON.stringify) a key of an object, { key: 42 } gets wrapped in quotes as \"key\".\n// With the separator (:), we need to add 3 characters to the count.\nconst KEY_DECORATION_LENGTH = 3;\nexport function sanitize(source, maxCharacterCount = SANITIZE_DEFAULT_MAX_CHARACTER_COUNT) {\n    // Unbind any toJSON function we may have on [] or {} prototypes\n    const restoreObjectPrototypeToJson = detachToJsonMethod(Object.prototype);\n    const restoreArrayPrototypeToJson = detachToJsonMethod(Array.prototype);\n    // Initial call to sanitizeProcessor - will populate containerQueue if source is an Array or a plain Object\n    const containerQueue = [];\n    const visitedObjectsWithPath = new WeakMap();\n    const sanitizedData = sanitizeProcessor(source, JSON_PATH_ROOT_ELEMENT, undefined, containerQueue, visitedObjectsWithPath);\n    const serializedSanitizedData = JSON.stringify(sanitizedData);\n    let accumulatedCharacterCount = serializedSanitizedData ? serializedSanitizedData.length : 0;\n    if (accumulatedCharacterCount > maxCharacterCount) {\n        warnOverCharacterLimit(maxCharacterCount, 'discarded', source);\n        return undefined;\n    }\n    while (containerQueue.length > 0 && accumulatedCharacterCount < maxCharacterCount) {\n        const containerToProcess = containerQueue.shift();\n        let separatorLength = 0; // 0 for the first element, 1 for subsequent elements\n        // Arrays and Objects have to be handled distinctly to ensure\n        // we do not pick up non-numerical properties from Arrays\n        if (Array.isArray(containerToProcess.source)) {\n            for (let key = 0; key < containerToProcess.source.length; key++) {\n                const targetData = sanitizeProcessor(containerToProcess.source[key], containerToProcess.path, key, containerQueue, visitedObjectsWithPath);\n                if (targetData !== undefined) {\n                    accumulatedCharacterCount += JSON.stringify(targetData).length;\n                }\n                else {\n                    // When an element of an Array (targetData) is undefined, it is serialized as null:\n                    // JSON.stringify([undefined]) => '[null]' - This accounts for 4 characters\n                    accumulatedCharacterCount += 4;\n                }\n                accumulatedCharacterCount += separatorLength;\n                separatorLength = 1;\n                if (accumulatedCharacterCount > maxCharacterCount) {\n                    warnOverCharacterLimit(maxCharacterCount, 'truncated', source);\n                    break;\n                }\n                ;\n                containerToProcess.target[key] = targetData;\n            }\n        }\n        else {\n            for (const key in containerToProcess.source) {\n                if (Object.prototype.hasOwnProperty.call(containerToProcess.source, key)) {\n                    const targetData = sanitizeProcessor(containerToProcess.source[key], containerToProcess.path, key, containerQueue, visitedObjectsWithPath);\n                    // When a property of an object has an undefined value, it will be dropped during serialization:\n                    // JSON.stringify({a:undefined}) => '{}'\n                    if (targetData !== undefined) {\n                        accumulatedCharacterCount +=\n                            JSON.stringify(targetData).length + separatorLength + key.length + KEY_DECORATION_LENGTH;\n                        separatorLength = 1;\n                    }\n                    if (accumulatedCharacterCount > maxCharacterCount) {\n                        warnOverCharacterLimit(maxCharacterCount, 'truncated', source);\n                        break;\n                    }\n                    ;\n                    containerToProcess.target[key] = targetData;\n                }\n            }\n        }\n    }\n    // Rebind detached toJSON functions\n    restoreObjectPrototypeToJson();\n    restoreArrayPrototypeToJson();\n    return sanitizedData;\n}\n/**\n * Internal function to factorize the process common to the\n * initial call to sanitize, and iterations for Arrays and Objects\n *\n */\nfunction sanitizeProcessor(source, parentPath, key, queue, visitedObjectsWithPath) {\n    // Start by handling toJSON, as we want to sanitize its output\n    const sourceToSanitize = tryToApplyToJSON(source);\n    if (!sourceToSanitize || typeof sourceToSanitize !== 'object') {\n        return sanitizePrimitivesAndFunctions(sourceToSanitize);\n    }\n    const sanitizedSource = sanitizeObjects(sourceToSanitize);\n    if (sanitizedSource !== '[Object]' && sanitizedSource !== '[Array]' && sanitizedSource !== '[Error]') {\n        return sanitizedSource;\n    }\n    // Handle potential cyclic references\n    // We need to use source as sourceToSanitize could be a reference to a new object\n    // At this stage, we know the source is an object type\n    const sourceAsObject = source;\n    if (visitedObjectsWithPath.has(sourceAsObject)) {\n        return `[Reference seen at ${visitedObjectsWithPath.get(sourceAsObject)}]`;\n    }\n    // Add processed source to queue\n    const currentPath = key !== undefined ? `${parentPath}.${key}` : parentPath;\n    const target = Array.isArray(sourceToSanitize) ? [] : {};\n    visitedObjectsWithPath.set(sourceAsObject, currentPath);\n    queue.push({ source: sourceToSanitize, target, path: currentPath });\n    return target;\n}\n/**\n * Handles sanitization of simple, non-object types\n *\n */\nfunction sanitizePrimitivesAndFunctions(value) {\n    // BigInt cannot be serialized by JSON.stringify(), convert it to a string representation\n    if (typeof value === 'bigint') {\n        return `[BigInt] ${value.toString()}`;\n    }\n    // Functions cannot be serialized by JSON.stringify(). Moreover, if a faulty toJSON is present, it needs to be converted\n    // so it won't prevent stringify from serializing later\n    if (typeof value === 'function') {\n        return `[Function] ${value.name || 'unknown'}`;\n    }\n    // JSON.stringify() does not serialize symbols.\n    if (typeof value === 'symbol') {\n        return `[Symbol] ${value.description || value.toString()}`;\n    }\n    return value;\n}\n/**\n * Handles sanitization of object types\n *\n * LIMITATIONS\n * - If a class defines a toStringTag Symbol, it will fall in the catch-all method and prevent enumeration of properties.\n * To avoid this, a toJSON method can be defined.\n */\nfunction sanitizeObjects(value) {\n    try {\n        if (value instanceof Event) {\n            return sanitizeEvent(value);\n        }\n        if (value instanceof RegExp) {\n            return `[RegExp] ${value.toString()}`;\n        }\n        // Handle all remaining object types in a generic way\n        const result = Object.prototype.toString.call(value);\n        const match = result.match(/\\[object (.*)\\]/);\n        if (match && match[1]) {\n            return `[${match[1]}]`;\n        }\n    }\n    catch (_a) {\n        // If the previous serialization attempts failed, and we cannot convert using\n        // Object.prototype.toString, declare the value unserializable\n    }\n    return '[Unserializable]';\n}\nfunction sanitizeEvent(event) {\n    return {\n        type: event.type,\n        isTrusted: event.isTrusted,\n        currentTarget: event.currentTarget ? sanitizeObjects(event.currentTarget) : null,\n        target: event.target ? sanitizeObjects(event.target) : null,\n    };\n}\n/**\n * Checks if a toJSON function exists and tries to execute it\n *\n */\nfunction tryToApplyToJSON(value) {\n    const object = value;\n    if (object && typeof object.toJSON === 'function') {\n        try {\n            return object.toJSON();\n        }\n        catch (_a) {\n            // If toJSON fails, we continue by trying to serialize the value manually\n        }\n    }\n    return value;\n}\n/**\n * Helper function to display the warning when the accumulated character count is over the limit\n */\nfunction warnOverCharacterLimit(maxCharacterCount, changeType, source) {\n    display.warn(`The data provided has been ${changeType} as it is over the limit of ${maxCharacterCount} characters:`, source);\n}\n//# sourceMappingURL=sanitize.js.map","/**\n * Cross-browser stack trace computation.\n *\n * Reference implementation: https://github.com/csnover/TraceKit/blob/04530298073c3823de72deb0b97e7b38ca7bcb59/tracekit.js\n */\nconst UNKNOWN_FUNCTION = '?';\nexport function computeStackTrace(ex) {\n    const stack = [];\n    let stackProperty = tryToGetString(ex, 'stack');\n    const exString = String(ex);\n    if (stackProperty && stackProperty.startsWith(exString)) {\n        stackProperty = stackProperty.slice(exString.length);\n    }\n    if (stackProperty) {\n        stackProperty.split('\\n').forEach((line) => {\n            const stackFrame = parseChromeLine(line) || parseChromeAnonymousLine(line) || parseWinLine(line) || parseGeckoLine(line);\n            if (stackFrame) {\n                if (!stackFrame.func && stackFrame.line) {\n                    stackFrame.func = UNKNOWN_FUNCTION;\n                }\n                stack.push(stackFrame);\n            }\n        });\n    }\n    return {\n        message: tryToGetString(ex, 'message'),\n        name: tryToGetString(ex, 'name'),\n        stack,\n    };\n}\nconst fileUrl = '((?:file|https?|blob|chrome-extension|electron|native|eval|webpack|snippet|<anonymous>|\\\\w+\\\\.|\\\\/).*?)';\nconst filePosition = '(?::(\\\\d+))';\nconst CHROME_LINE_RE = new RegExp(`^\\\\s*at (.*?) ?\\\\(${fileUrl}${filePosition}?${filePosition}?\\\\)?\\\\s*$`, 'i');\nconst CHROME_EVAL_RE = new RegExp(`\\\\((\\\\S*)${filePosition}${filePosition}\\\\)`);\nfunction parseChromeLine(line) {\n    const parts = CHROME_LINE_RE.exec(line);\n    if (!parts) {\n        return;\n    }\n    const isNative = parts[2] && parts[2].indexOf('native') === 0; // start of line\n    const isEval = parts[2] && parts[2].indexOf('eval') === 0; // start of line\n    const submatch = CHROME_EVAL_RE.exec(parts[2]);\n    if (isEval && submatch) {\n        // throw out eval line/column and use top-most line/column number\n        parts[2] = submatch[1]; // url\n        parts[3] = submatch[2]; // line\n        parts[4] = submatch[3]; // column\n    }\n    return {\n        args: isNative ? [parts[2]] : [],\n        column: parts[4] ? +parts[4] : undefined,\n        func: parts[1] || UNKNOWN_FUNCTION,\n        line: parts[3] ? +parts[3] : undefined,\n        url: !isNative ? parts[2] : undefined,\n    };\n}\nconst CHROME_ANONYMOUS_FUNCTION_RE = new RegExp(`^\\\\s*at ?${fileUrl}${filePosition}?${filePosition}??\\\\s*$`, 'i');\nfunction parseChromeAnonymousLine(line) {\n    const parts = CHROME_ANONYMOUS_FUNCTION_RE.exec(line);\n    if (!parts) {\n        return;\n    }\n    return {\n        args: [],\n        column: parts[3] ? +parts[3] : undefined,\n        func: UNKNOWN_FUNCTION,\n        line: parts[2] ? +parts[2] : undefined,\n        url: parts[1],\n    };\n}\nconst WINJS_LINE_RE = /^\\s*at (?:((?:\\[object object\\])?.+) )?\\(?((?:file|ms-appx|https?|webpack|blob):.*?):(\\d+)(?::(\\d+))?\\)?\\s*$/i;\nfunction parseWinLine(line) {\n    const parts = WINJS_LINE_RE.exec(line);\n    if (!parts) {\n        return;\n    }\n    return {\n        args: [],\n        column: parts[4] ? +parts[4] : undefined,\n        func: parts[1] || UNKNOWN_FUNCTION,\n        line: +parts[3],\n        url: parts[2],\n    };\n}\nconst GECKO_LINE_RE = /^\\s*(.*?)(?:\\((.*?)\\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|capacitor|\\[native).*?|[^@]*bundle|\\[wasm code\\])(?::(\\d+))?(?::(\\d+))?\\s*$/i;\nconst GECKO_EVAL_RE = /(\\S+) line (\\d+)(?: > eval line \\d+)* > eval/i;\nfunction parseGeckoLine(line) {\n    const parts = GECKO_LINE_RE.exec(line);\n    if (!parts) {\n        return;\n    }\n    const isEval = parts[3] && parts[3].indexOf(' > eval') > -1;\n    const submatch = GECKO_EVAL_RE.exec(parts[3]);\n    if (isEval && submatch) {\n        // throw out eval line/column and use top-most line number\n        parts[3] = submatch[1];\n        parts[4] = submatch[2];\n        parts[5] = undefined; // no column when eval\n    }\n    return {\n        args: parts[2] ? parts[2].split(',') : [],\n        column: parts[5] ? +parts[5] : undefined,\n        func: parts[1] || UNKNOWN_FUNCTION,\n        line: parts[4] ? +parts[4] : undefined,\n        url: parts[3],\n    };\n}\nfunction tryToGetString(candidate, property) {\n    if (typeof candidate !== 'object' || !candidate || !(property in candidate)) {\n        return undefined;\n    }\n    const value = candidate[property];\n    return typeof value === 'string' ? value : undefined;\n}\nexport function computeStackTraceFromOnErrorMessage(messageObj, url, line, column) {\n    const stack = [{ url, column, line }];\n    const { name, message } = tryToParseMessage(messageObj);\n    return {\n        name,\n        message,\n        stack,\n    };\n}\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error#Error_types\nconst ERROR_TYPES_RE = /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?([\\s\\S]*)$/;\nfunction tryToParseMessage(messageObj) {\n    let name;\n    let message;\n    if ({}.toString.call(messageObj) === '[object String]') {\n        ;\n        [, name, message] = ERROR_TYPES_RE.exec(messageObj);\n    }\n    return { name, message };\n}\n//# sourceMappingURL=computeStackTrace.js.map","import { callMonitored } from '../monitor';\nimport { computeStackTrace } from './computeStackTrace';\n/**\n * Creates a stacktrace without SDK internal frames.\n * Constraints:\n * - Has to be called at the utmost position of the call stack.\n * - No monitored function should encapsulate it, that is why we need to use callMonitored inside it.\n */\nexport function createHandlingStack(type) {\n    /**\n     * Skip the two internal frames:\n     * - SDK API (console.error, ...)\n     * - this function\n     * in order to keep only the user calls\n     */\n    const internalFramesToSkip = 2;\n    const error = new Error(type);\n    error.name = 'HandlingStack';\n    let formattedStack;\n    callMonitored(() => {\n        const stackTrace = computeStackTrace(error);\n        stackTrace.stack = stackTrace.stack.slice(internalFramesToSkip);\n        formattedStack = toStackTraceString(stackTrace);\n    });\n    return formattedStack;\n}\nexport function toStackTraceString(stack) {\n    let result = formatErrorMessage(stack);\n    stack.stack.forEach((frame) => {\n        const func = frame.func === '?' ? '<anonymous>' : frame.func;\n        const args = frame.args && frame.args.length > 0 ? `(${frame.args.join(', ')})` : '';\n        const line = frame.line ? `:${frame.line}` : '';\n        const column = frame.line && frame.column ? `:${frame.column}` : '';\n        result += `\\n  at ${func}${args} @ ${frame.url}${line}${column}`;\n    });\n    return result;\n}\nexport function formatErrorMessage(stack) {\n    return `${stack.name || 'Error'}: ${stack.message}`;\n}\n//# sourceMappingURL=handlingStack.js.map","import { getZoneJsOriginalValue } from './getZoneJsOriginalValue';\nimport { monitor } from './monitor';\nimport { getGlobalObject } from './getGlobalObject';\nexport function setTimeout(callback, delay) {\n    return getZoneJsOriginalValue(getGlobalObject(), 'setTimeout')(monitor(callback), delay);\n}\nexport function clearTimeout(timeoutId) {\n    getZoneJsOriginalValue(getGlobalObject(), 'clearTimeout')(timeoutId);\n}\nexport function setInterval(callback, delay) {\n    return getZoneJsOriginalValue(getGlobalObject(), 'setInterval')(monitor(callback), delay);\n}\nexport function clearInterval(timeoutId) {\n    getZoneJsOriginalValue(getGlobalObject(), 'clearInterval')(timeoutId);\n}\n//# sourceMappingURL=timer.js.map","export function removeDuplicates(array) {\n    const set = new Set();\n    array.forEach((item) => set.add(item));\n    return Array.from(set);\n}\nexport function removeItem(array, item) {\n    const index = array.indexOf(item);\n    if (index >= 0) {\n        array.splice(index, 1);\n    }\n}\n//# sourceMappingURL=arrayUtils.js.map","export function isChromium() {\n    return detectBrowserCached() === 0 /* Browser.CHROMIUM */;\n}\nexport function isSafari() {\n    return detectBrowserCached() === 1 /* Browser.SAFARI */;\n}\nlet browserCache;\nfunction detectBrowserCached() {\n    return browserCache !== null && browserCache !== void 0 ? browserCache : (browserCache = detectBrowser());\n}\n// Exported only for tests\nexport function detectBrowser(browserWindow = window) {\n    var _a;\n    const userAgent = browserWindow.navigator.userAgent;\n    if (browserWindow.chrome || /HeadlessChrome/.test(userAgent)) {\n        return 0 /* Browser.CHROMIUM */;\n    }\n    if (\n    // navigator.vendor is deprecated, but it is the most resilient way we found to detect\n    // \"Apple maintained browsers\" (AKA Safari). If one day it gets removed, we still have the\n    // useragent test as a semi-working fallback.\n    ((_a = browserWindow.navigator.vendor) === null || _a === void 0 ? void 0 : _a.indexOf('Apple')) === 0 ||\n        (/safari/i.test(userAgent) && !/chrome|android/i.test(userAgent))) {\n        return 1 /* Browser.SAFARI */;\n    }\n    return 2 /* Browser.OTHER */;\n}\n//# sourceMappingURL=browserDetection.js.map","export const ONE_KIBI_BYTE = 1024;\nexport const ONE_MEBI_BYTE = 1024 * ONE_KIBI_BYTE;\n// eslint-disable-next-line no-control-regex\nconst HAS_MULTI_BYTES_CHARACTERS = /[^\\u0000-\\u007F]/;\nexport function computeBytesCount(candidate) {\n    // Accurate bytes count computations can degrade performances when there is a lot of events to process\n    if (!HAS_MULTI_BYTES_CHARACTERS.test(candidate)) {\n        return candidate.length;\n    }\n    if (window.TextEncoder !== undefined) {\n        return new TextEncoder().encode(candidate).length;\n    }\n    return new Blob([candidate]).size;\n}\nexport function concatBuffers(buffers) {\n    const length = buffers.reduce((total, buffer) => total + buffer.length, 0);\n    const result = new Uint8Array(length);\n    let offset = 0;\n    for (const buffer of buffers) {\n        result.set(buffer, offset);\n        offset += buffer.length;\n    }\n    return result;\n}\n//# sourceMappingURL=byteUtils.js.map","import { setTimeout, clearTimeout } from '../timer';\n// use lodash API\nexport function throttle(fn, wait, options) {\n    const needLeadingExecution = options && options.leading !== undefined ? options.leading : true;\n    const needTrailingExecution = options && options.trailing !== undefined ? options.trailing : true;\n    let inWaitPeriod = false;\n    let pendingExecutionWithParameters;\n    let pendingTimeoutId;\n    return {\n        throttled: (...parameters) => {\n            if (inWaitPeriod) {\n                pendingExecutionWithParameters = parameters;\n                return;\n            }\n            if (needLeadingExecution) {\n                fn(...parameters);\n            }\n            else {\n                pendingExecutionWithParameters = parameters;\n            }\n            inWaitPeriod = true;\n            pendingTimeoutId = setTimeout(() => {\n                if (needTrailingExecution && pendingExecutionWithParameters) {\n                    fn(...pendingExecutionWithParameters);\n                }\n                inWaitPeriod = false;\n                pendingExecutionWithParameters = undefined;\n            }, wait);\n        },\n        cancel: () => {\n            clearTimeout(pendingTimeoutId);\n            inWaitPeriod = false;\n            pendingExecutionWithParameters = undefined;\n        },\n    };\n}\n// eslint-disable-next-line @typescript-eslint/no-empty-function\nexport function noop() { }\n//# sourceMappingURL=functionUtils.js.map","/**\n * Return true if the draw is successful\n * @param threshold between 0 and 100\n */\nexport function performDraw(threshold) {\n    return threshold !== 0 && Math.random() * 100 <= threshold;\n}\nexport function round(num, decimals) {\n    return +num.toFixed(decimals);\n}\nexport function isPercentage(value) {\n    return isNumber(value) && value >= 0 && value <= 100;\n}\nexport function isNumber(value) {\n    return typeof value === 'number';\n}\n//# sourceMappingURL=numberUtils.js.map","export function shallowClone(object) {\n    return { ...object };\n}\nexport function objectHasValue(object, value) {\n    return Object.keys(object).some((key) => object[key] === value);\n}\nexport function isEmptyObject(object) {\n    return Object.keys(object).length === 0;\n}\nexport function mapValues(object, fn) {\n    const newObject = {};\n    for (const key of Object.keys(object)) {\n        newObject[key] = fn(object[key]);\n    }\n    return newObject;\n}\n//# sourceMappingURL=objectUtils.js.map","export function findLast(array, predicate) {\n    for (let i = array.length - 1; i >= 0; i -= 1) {\n        const item = array[i];\n        if (predicate(item, i, array)) {\n            return item;\n        }\n    }\n    return undefined;\n}\n// Keep the following wrapper functions as it can be mangled and will result in smaller bundle size that using\n// the native Object.values and Object.entries directly\nexport function objectValues(object) {\n    return Object.values(object);\n}\nexport function objectEntries(object) {\n    return Object.entries(object);\n}\n//# sourceMappingURL=polyfills.js.map","export function isServerError(status) {\n    return status >= 500;\n}\nexport function tryToClone(response) {\n    try {\n        return response.clone();\n    }\n    catch (_a) {\n        // clone can throw if the response has already been used by another instrumentation or is disturbed\n        return;\n    }\n}\n//# sourceMappingURL=responseUtils.js.map","import { isNumber, round } from './numberUtils';\nexport const ONE_SECOND = 1000;\nexport const ONE_MINUTE = 60 * ONE_SECOND;\nexport const ONE_HOUR = 60 * ONE_MINUTE;\nexport const ONE_DAY = 24 * ONE_HOUR;\nexport const ONE_YEAR = 365 * ONE_DAY;\nexport function relativeToClocks(relative) {\n    return { relative, timeStamp: getCorrectedTimeStamp(relative) };\n}\nexport function timeStampToClocks(timeStamp) {\n    return { relative: getRelativeTime(timeStamp), timeStamp };\n}\nfunction getCorrectedTimeStamp(relativeTime) {\n    const correctedOrigin = (dateNow() - performance.now());\n    // apply correction only for positive drift\n    if (correctedOrigin > getNavigationStart()) {\n        return Math.round(addDuration(correctedOrigin, relativeTime));\n    }\n    return getTimeStamp(relativeTime);\n}\nexport function currentDrift() {\n    return Math.round(dateNow() - addDuration(getNavigationStart(), performance.now()));\n}\nexport function toServerDuration(duration) {\n    if (!isNumber(duration)) {\n        return duration;\n    }\n    return round(duration * 1e6, 0);\n}\nexport function dateNow() {\n    // Do not use `Date.now` because sometimes websites are wrongly \"polyfilling\" it. For example, we\n    // had some users using a very old version of `datejs`, which patched `Date.now` to return a Date\n    // instance instead of a timestamp[1]. Those users are unlikely to fix this, so let's handle this\n    // case ourselves.\n    // [1]: https://github.com/datejs/Datejs/blob/97f5c7c58c5bc5accdab8aa7602b6ac56462d778/src/core-debug.js#L14-L16\n    return new Date().getTime();\n}\nexport function timeStampNow() {\n    return dateNow();\n}\nexport function relativeNow() {\n    return performance.now();\n}\nexport function clocksNow() {\n    return { relative: relativeNow(), timeStamp: timeStampNow() };\n}\nexport function clocksOrigin() {\n    return { relative: 0, timeStamp: getNavigationStart() };\n}\nexport function elapsed(start, end) {\n    return (end - start);\n}\nexport function addDuration(a, b) {\n    return a + b;\n}\n// Get the time since the navigation was started.\nexport function getRelativeTime(timestamp) {\n    return (timestamp - getNavigationStart());\n}\nexport function getTimeStamp(relativeTime) {\n    return Math.round(addDuration(getNavigationStart(), relativeTime));\n}\nexport function looksLikeRelativeTime(time) {\n    return time < ONE_YEAR;\n}\n/**\n * Navigation start slightly change on some rare cases\n */\nlet navigationStart;\n/**\n * Notes: this does not use `performance.timeOrigin` because:\n * - It doesn't seem to reflect the actual time on which the navigation has started: it may be much farther in the past,\n * at least in Firefox 71. (see: https://bugzilla.mozilla.org/show_bug.cgi?id=1429926)\n * - It is not supported in Safari <15\n */\nfunction getNavigationStart() {\n    if (navigationStart === undefined) {\n        navigationStart = performance.timing.navigationStart;\n    }\n    return navigationStart;\n}\n//# sourceMappingURL=timeUtils.js.map","/**\n * Similar to `typeof`, but distinguish plain objects from `null` and arrays\n */\nexport function getType(value) {\n    if (value === null) {\n        return 'null';\n    }\n    if (Array.isArray(value)) {\n        return 'array';\n    }\n    return typeof value;\n}\n//# sourceMappingURL=typeUtils.js.map","import { jsonStringify } from '../serialisation/jsonStringify';\nexport function normalizeUrl(url) {\n    return buildUrl(url, location.href).href;\n}\nexport function isValidUrl(url) {\n    try {\n        return !!buildUrl(url);\n    }\n    catch (_a) {\n        return false;\n    }\n}\nexport function getPathName(url) {\n    const pathname = buildUrl(url).pathname;\n    return pathname[0] === '/' ? pathname : `/${pathname}`;\n}\nexport function buildUrl(url, base) {\n    const supportedURL = getSupportedUrl();\n    if (supportedURL) {\n        try {\n            return base !== undefined ? new supportedURL(url, base) : new supportedURL(url);\n        }\n        catch (error) {\n            throw new Error(`Failed to construct URL: ${String(error)} ${jsonStringify({ url, base })}`);\n        }\n    }\n    if (base === undefined && !/:/.test(url)) {\n        throw new Error(`Invalid URL: '${url}'`);\n    }\n    let doc = document;\n    const anchorElement = doc.createElement('a');\n    if (base !== undefined) {\n        doc = document.implementation.createHTMLDocument('');\n        const baseElement = doc.createElement('base');\n        baseElement.href = base;\n        doc.head.appendChild(baseElement);\n        doc.body.appendChild(anchorElement);\n    }\n    anchorElement.href = url;\n    return anchorElement;\n}\nconst originalURL = URL;\nlet isURLSupported;\nfunction getSupportedUrl() {\n    if (isURLSupported === undefined) {\n        try {\n            const url = new originalURL('http://test/path');\n            isURLSupported = url.href === 'http://test/path';\n        }\n        catch (_a) {\n            isURLSupported = false;\n        }\n    }\n    return isURLSupported ? originalURL : undefined;\n}\n//# sourceMappingURL=urlPolyfill.js.map","import { getGlobalObject } from '../tools/getGlobalObject';\nexport function getEventBridge() {\n    const eventBridgeGlobal = getEventBridgeGlobal();\n    if (!eventBridgeGlobal) {\n        return;\n    }\n    return {\n        getCapabilities() {\n            var _a;\n            return JSON.parse(((_a = eventBridgeGlobal.getCapabilities) === null || _a === void 0 ? void 0 : _a.call(eventBridgeGlobal)) || '[]');\n        },\n        getPrivacyLevel() {\n            var _a;\n            return (_a = eventBridgeGlobal.getPrivacyLevel) === null || _a === void 0 ? void 0 : _a.call(eventBridgeGlobal);\n        },\n        getAllowedWebViewHosts() {\n            return JSON.parse(eventBridgeGlobal.getAllowedWebViewHosts());\n        },\n        send(eventType, event, viewId) {\n            const view = viewId ? { id: viewId } : undefined;\n            eventBridgeGlobal.send(JSON.stringify({ eventType, event, view }));\n        },\n    };\n}\nexport function bridgeSupports(capability) {\n    const bridge = getEventBridge();\n    return !!bridge && bridge.getCapabilities().includes(capability);\n}\nexport function canUseEventBridge(currentHost) {\n    var _a;\n    if (currentHost === void 0) { currentHost = (_a = getGlobalObject().location) === null || _a === void 0 ? void 0 : _a.hostname; }\n    const bridge = getEventBridge();\n    return (!!bridge &&\n        bridge\n            .getAllowedWebViewHosts()\n            .some((allowedHost) => currentHost === allowedHost || currentHost.endsWith(`.${allowedHost}`)));\n}\nfunction getEventBridgeGlobal() {\n    return getGlobalObject().DatadogEventBridge;\n}\n//# sourceMappingURL=eventBridge.js.map","import { setTimeout } from '../tools/timer';\nimport { clocksNow, ONE_MINUTE, ONE_SECOND } from '../tools/utils/timeUtils';\nimport { ONE_MEBI_BYTE, ONE_KIBI_BYTE } from '../tools/utils/byteUtils';\nimport { isServerError } from '../tools/utils/responseUtils';\nimport { ErrorSource } from '../domain/error/error.types';\nexport const MAX_ONGOING_BYTES_COUNT = 80 * ONE_KIBI_BYTE;\nexport const MAX_ONGOING_REQUESTS = 32;\nexport const MAX_QUEUE_BYTES_COUNT = 3 * ONE_MEBI_BYTE;\nexport const MAX_BACKOFF_TIME = ONE_MINUTE;\nexport const INITIAL_BACKOFF_TIME = ONE_SECOND;\nexport function sendWithRetryStrategy(payload, state, sendStrategy, trackType, reportError) {\n    if (state.transportStatus === 0 /* TransportStatus.UP */ &&\n        state.queuedPayloads.size() === 0 &&\n        state.bandwidthMonitor.canHandle(payload)) {\n        send(payload, state, sendStrategy, {\n            onSuccess: () => retryQueuedPayloads(0 /* RetryReason.AFTER_SUCCESS */, state, sendStrategy, trackType, reportError),\n            onFailure: () => {\n                state.queuedPayloads.enqueue(payload);\n                scheduleRetry(state, sendStrategy, trackType, reportError);\n            },\n        });\n    }\n    else {\n        state.queuedPayloads.enqueue(payload);\n    }\n}\nfunction scheduleRetry(state, sendStrategy, trackType, reportError) {\n    if (state.transportStatus !== 2 /* TransportStatus.DOWN */) {\n        return;\n    }\n    setTimeout(() => {\n        const payload = state.queuedPayloads.first();\n        send(payload, state, sendStrategy, {\n            onSuccess: () => {\n                state.queuedPayloads.dequeue();\n                state.currentBackoffTime = INITIAL_BACKOFF_TIME;\n                retryQueuedPayloads(1 /* RetryReason.AFTER_RESUME */, state, sendStrategy, trackType, reportError);\n            },\n            onFailure: () => {\n                state.currentBackoffTime = Math.min(MAX_BACKOFF_TIME, state.currentBackoffTime * 2);\n                scheduleRetry(state, sendStrategy, trackType, reportError);\n            },\n        });\n    }, state.currentBackoffTime);\n}\nfunction send(payload, state, sendStrategy, { onSuccess, onFailure }) {\n    state.bandwidthMonitor.add(payload);\n    sendStrategy(payload, (response) => {\n        state.bandwidthMonitor.remove(payload);\n        if (!shouldRetryRequest(response)) {\n            state.transportStatus = 0 /* TransportStatus.UP */;\n            onSuccess();\n        }\n        else {\n            // do not consider transport down if another ongoing request could succeed\n            state.transportStatus =\n                state.bandwidthMonitor.ongoingRequestCount > 0 ? 1 /* TransportStatus.FAILURE_DETECTED */ : 2 /* TransportStatus.DOWN */;\n            payload.retry = {\n                count: payload.retry ? payload.retry.count + 1 : 1,\n                lastFailureStatus: response.status,\n            };\n            onFailure();\n        }\n    });\n}\nfunction retryQueuedPayloads(reason, state, sendStrategy, trackType, reportError) {\n    if (reason === 0 /* RetryReason.AFTER_SUCCESS */ && state.queuedPayloads.isFull() && !state.queueFullReported) {\n        reportError({\n            message: `Reached max ${trackType} events size queued for upload: ${MAX_QUEUE_BYTES_COUNT / ONE_MEBI_BYTE}MiB`,\n            source: ErrorSource.AGENT,\n            startClocks: clocksNow(),\n        });\n        state.queueFullReported = true;\n    }\n    const previousQueue = state.queuedPayloads;\n    state.queuedPayloads = newPayloadQueue();\n    while (previousQueue.size() > 0) {\n        sendWithRetryStrategy(previousQueue.dequeue(), state, sendStrategy, trackType, reportError);\n    }\n}\nfunction shouldRetryRequest(response) {\n    return (response.type !== 'opaque' &&\n        ((response.status === 0 && !navigator.onLine) ||\n            response.status === 408 ||\n            response.status === 429 ||\n            isServerError(response.status)));\n}\nexport function newRetryState() {\n    return {\n        transportStatus: 0 /* TransportStatus.UP */,\n        currentBackoffTime: INITIAL_BACKOFF_TIME,\n        bandwidthMonitor: newBandwidthMonitor(),\n        queuedPayloads: newPayloadQueue(),\n        queueFullReported: false,\n    };\n}\nfunction newPayloadQueue() {\n    const queue = [];\n    return {\n        bytesCount: 0,\n        enqueue(payload) {\n            if (this.isFull()) {\n                return;\n            }\n            queue.push(payload);\n            this.bytesCount += payload.bytesCount;\n        },\n        first() {\n            return queue[0];\n        },\n        dequeue() {\n            const payload = queue.shift();\n            if (payload) {\n                this.bytesCount -= payload.bytesCount;\n            }\n            return payload;\n        },\n        size() {\n            return queue.length;\n        },\n        isFull() {\n            return this.bytesCount >= MAX_QUEUE_BYTES_COUNT;\n        },\n    };\n}\nfunction newBandwidthMonitor() {\n    return {\n        ongoingRequestCount: 0,\n        ongoingByteCount: 0,\n        canHandle(payload) {\n            return (this.ongoingRequestCount === 0 ||\n                (this.ongoingByteCount + payload.bytesCount <= MAX_ONGOING_BYTES_COUNT &&\n                    this.ongoingRequestCount < MAX_ONGOING_REQUESTS));\n        },\n        add(payload) {\n            this.ongoingRequestCount += 1;\n            this.ongoingByteCount += payload.bytesCount;\n        },\n        remove(payload) {\n            this.ongoingRequestCount -= 1;\n            this.ongoingByteCount -= payload.bytesCount;\n        },\n    };\n}\n//# sourceMappingURL=sendWithRetryStrategy.js.map","import { monitor, monitorError } from '../tools/monitor';\nimport { newRetryState, sendWithRetryStrategy } from './sendWithRetryStrategy';\nexport function createHttpRequest(endpointBuilder, bytesLimit, reportError) {\n    const retryState = newRetryState();\n    const sendStrategyForRetry = (payload, onResponse) => fetchKeepAliveStrategy(endpointBuilder, bytesLimit, payload, onResponse);\n    return {\n        send: (payload) => {\n            sendWithRetryStrategy(payload, retryState, sendStrategyForRetry, endpointBuilder.trackType, reportError);\n        },\n        /**\n         * Since fetch keepalive behaves like regular fetch on Firefox,\n         * keep using sendBeaconStrategy on exit\n         */\n        sendOnExit: (payload) => {\n            sendBeaconStrategy(endpointBuilder, bytesLimit, payload);\n        },\n    };\n}\nfunction sendBeaconStrategy(endpointBuilder, bytesLimit, payload) {\n    const canUseBeacon = !!navigator.sendBeacon && payload.bytesCount < bytesLimit;\n    if (canUseBeacon) {\n        try {\n            const beaconUrl = endpointBuilder.build('beacon', payload);\n            const isQueued = navigator.sendBeacon(beaconUrl, payload.data);\n            if (isQueued) {\n                return;\n            }\n        }\n        catch (e) {\n            reportBeaconError(e);\n        }\n    }\n    fetchStrategy(endpointBuilder, payload);\n}\nlet hasReportedBeaconError = false;\nfunction reportBeaconError(e) {\n    if (!hasReportedBeaconError) {\n        hasReportedBeaconError = true;\n        monitorError(e);\n    }\n}\nexport function fetchKeepAliveStrategy(endpointBuilder, bytesLimit, payload, onResponse) {\n    const canUseKeepAlive = isKeepAliveSupported() && payload.bytesCount < bytesLimit;\n    if (canUseKeepAlive) {\n        const fetchUrl = endpointBuilder.build('fetch-keepalive', payload);\n        fetch(fetchUrl, { method: 'POST', body: payload.data, keepalive: true, mode: 'cors' })\n            .then(monitor((response) => onResponse === null || onResponse === void 0 ? void 0 : onResponse({ status: response.status, type: response.type })))\n            .catch(monitor(() => fetchStrategy(endpointBuilder, payload, onResponse)));\n    }\n    else {\n        fetchStrategy(endpointBuilder, payload, onResponse);\n    }\n}\nexport function fetchStrategy(endpointBuilder, payload, onResponse) {\n    const fetchUrl = endpointBuilder.build('fetch', payload);\n    fetch(fetchUrl, { method: 'POST', body: payload.data, mode: 'cors' })\n        .then(monitor((response) => onResponse === null || onResponse === void 0 ? void 0 : onResponse({ status: response.status, type: response.type })))\n        .catch(monitor(() => onResponse === null || onResponse === void 0 ? void 0 : onResponse({ status: 0 })));\n}\nfunction isKeepAliveSupported() {\n    // Request can throw, cf https://developer.mozilla.org/en-US/docs/Web/API/Request/Request#errors\n    try {\n        return window.Request && 'keepalive' in new Request('http://a');\n    }\n    catch (_a) {\n        return false;\n    }\n}\n//# sourceMappingURL=httpRequest.js.map","/* eslint-disable local-rules/disallow-side-effects */\n/**\n * Keep references on console methods to avoid triggering patched behaviors\n *\n * NB: in some setup, console could already be patched by another SDK.\n * In this case, some display messages can be sent by the other SDK\n * but we should be safe from infinite loop nonetheless.\n */\nexport var ConsoleApiName = {\n    log: 'log',\n    debug: 'debug',\n    info: 'info',\n    warn: 'warn',\n    error: 'error',\n};\n/**\n * When building JS bundles, some users might use a plugin[1] or configuration[2] to remove\n * \"console.*\" references. This causes some issue as we expect `console.*` to be defined.\n * As a workaround, let's use a variable alias, so those expressions won't be taken into account by\n * simple static analysis.\n *\n * [1]: https://babeljs.io/docs/babel-plugin-transform-remove-console/\n * [2]: https://github.com/terser/terser#compress-options (look for drop_console)\n */\nexport var globalConsole = console;\nexport var originalConsoleMethods = {};\nObject.keys(ConsoleApiName).forEach(function (name) {\n    originalConsoleMethods[name] = globalConsole[name];\n});\nvar PREFIX = 'Datadog Browser SDK:';\nexport var display = {\n    debug: originalConsoleMethods.debug.bind(globalConsole, PREFIX),\n    log: originalConsoleMethods.log.bind(globalConsole, PREFIX),\n    info: originalConsoleMethods.info.bind(globalConsole, PREFIX),\n    warn: originalConsoleMethods.warn.bind(globalConsole, PREFIX),\n    error: originalConsoleMethods.error.bind(globalConsole, PREFIX),\n};\nexport var DOCS_ORIGIN = 'https://docs.datadoghq.com';\nexport var DOCS_TROUBLESHOOTING = \"\".concat(DOCS_ORIGIN, \"/real_user_monitoring/browser/troubleshooting\");\nexport var MORE_DETAILS = 'More details:';\n//# sourceMappingURL=display.js.map","import { display } from './display';\nexport function catchUserErrors(fn, errorMsg) {\n    return function () {\n        var args = [];\n        for (var _i = 0; _i < arguments.length; _i++) {\n            args[_i] = arguments[_i];\n        }\n        try {\n            return fn.apply(void 0, args);\n        }\n        catch (err) {\n            display.error(errorMsg, err);\n        }\n    };\n}\n//# sourceMappingURL=catchUserErrors.js.map","var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {\n    if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n        if (ar || !(i in from)) {\n            if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n            ar[i] = from[i];\n        }\n    }\n    return to.concat(ar || Array.prototype.slice.call(from));\n};\nimport { display } from './display';\nvar onMonitorErrorCollected;\nvar debugMode = false;\nexport function startMonitorErrorCollection(newOnMonitorErrorCollected) {\n    onMonitorErrorCollected = newOnMonitorErrorCollected;\n}\nexport function setDebugMode(newDebugMode) {\n    debugMode = newDebugMode;\n}\nexport function resetMonitor() {\n    onMonitorErrorCollected = undefined;\n    debugMode = false;\n}\nexport function monitored(_, __, descriptor) {\n    var originalMethod = descriptor.value;\n    descriptor.value = function () {\n        var args = [];\n        for (var _i = 0; _i < arguments.length; _i++) {\n            args[_i] = arguments[_i];\n        }\n        var decorated = onMonitorErrorCollected ? monitor(originalMethod) : originalMethod;\n        return decorated.apply(this, args);\n    };\n}\nexport function monitor(fn) {\n    return function () {\n        // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n        return callMonitored(fn, this, arguments);\n    }; // consider output type has input type\n}\nexport function callMonitored(fn, context, args) {\n    try {\n        // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n        return fn.apply(context, args);\n    }\n    catch (e) {\n        displayIfDebugEnabled(e);\n        if (onMonitorErrorCollected) {\n            try {\n                onMonitorErrorCollected(e);\n            }\n            catch (e) {\n                displayIfDebugEnabled(e);\n            }\n        }\n    }\n}\nexport function displayIfDebugEnabled() {\n    var args = [];\n    for (var _i = 0; _i < arguments.length; _i++) {\n        args[_i] = arguments[_i];\n    }\n    if (debugMode) {\n        display.error.apply(display, __spreadArray(['[MONITOR]'], args, false));\n    }\n}\n//# sourceMappingURL=monitor.js.map","export function includes(candidate, search) {\n    return candidate.indexOf(search) !== -1;\n}\nexport function arrayFrom(arrayLike) {\n    if (Array.from) {\n        return Array.from(arrayLike);\n    }\n    var array = [];\n    if (arrayLike instanceof Set) {\n        arrayLike.forEach(function (item) { return array.push(item); });\n    }\n    else {\n        for (var i = 0; i < arrayLike.length; i++) {\n            array.push(arrayLike[i]);\n        }\n    }\n    return array;\n}\nexport function find(array, predicate) {\n    for (var i = 0; i < array.length; i += 1) {\n        var item = array[i];\n        if (predicate(item, i)) {\n            return item;\n        }\n    }\n    return undefined;\n}\nexport function findLast(array, predicate) {\n    for (var i = array.length - 1; i >= 0; i -= 1) {\n        var item = array[i];\n        if (predicate(item, i, array)) {\n            return item;\n        }\n    }\n    return undefined;\n}\nexport function forEach(list, callback) {\n    Array.prototype.forEach.call(list, callback);\n}\nexport function objectValues(object) {\n    return Object.keys(object).map(function (key) { return object[key]; });\n}\nexport function objectEntries(object) {\n    return Object.keys(object).map(function (key) { return [key, object[key]]; });\n}\nexport function startsWith(candidate, search) {\n    return candidate.slice(0, search.length) === search;\n}\nexport function endsWith(candidate, search) {\n    return candidate.slice(-search.length) === search;\n}\nexport function assign(target) {\n    var toAssign = [];\n    for (var _i = 1; _i < arguments.length; _i++) {\n        toAssign[_i - 1] = arguments[_i];\n    }\n    toAssign.forEach(function (source) {\n        for (var key in source) {\n            if (Object.prototype.hasOwnProperty.call(source, key)) {\n                target[key] = source[key];\n            }\n        }\n    });\n    return target;\n}\n//# sourceMappingURL=polyfills.js.map","/**\n * inspired by https://mathiasbynens.be/notes/globalthis\n */\nexport function getGlobalObject() {\n    if (typeof globalThis === 'object') {\n        return globalThis;\n    }\n    Object.defineProperty(Object.prototype, '_dd_temp_', {\n        get: function () {\n            return this;\n        },\n        configurable: true,\n    });\n    // @ts-ignore _dd_temp is defined using defineProperty\n    var globalObject = _dd_temp_;\n    // @ts-ignore _dd_temp is defined using defineProperty\n    delete Object.prototype._dd_temp_;\n    if (typeof globalObject !== 'object') {\n        // on safari _dd_temp_ is available on window but not globally\n        // fallback on other browser globals check\n        if (typeof self === 'object') {\n            globalObject = self;\n        }\n        else if (typeof window === 'object') {\n            globalObject = window;\n        }\n        else {\n            globalObject = {};\n        }\n    }\n    return globalObject;\n}\n//# sourceMappingURL=getGlobalObject.js.map","export var ONE_KIBI_BYTE = 1024;\nexport var ONE_MEBI_BYTE = 1024 * ONE_KIBI_BYTE;\n// eslint-disable-next-line no-control-regex\nvar HAS_MULTI_BYTES_CHARACTERS = /[^\\u0000-\\u007F]/;\nexport function computeBytesCount(candidate) {\n    // Accurate bytes count computations can degrade performances when there is a lot of events to process\n    if (!HAS_MULTI_BYTES_CHARACTERS.test(candidate)) {\n        return candidate.length;\n    }\n    if (window.TextEncoder !== undefined) {\n        return new TextEncoder().encode(candidate).length;\n    }\n    return new Blob([candidate]).size;\n}\nexport function concatBuffers(buffers) {\n    var length = buffers.reduce(function (total, buffer) { return total + buffer.length; }, 0);\n    var result = new Uint8Array(length);\n    var offset = 0;\n    for (var _i = 0, buffers_1 = buffers; _i < buffers_1.length; _i++) {\n        var buffer = buffers_1[_i];\n        result.set(buffer, offset);\n        offset += buffer.length;\n    }\n    return result;\n}\n//# sourceMappingURL=byteUtils.js.map","import { getGlobalObject } from './getGlobalObject';\n/**\n * Gets the original value for a DOM API that was potentially patched by Zone.js.\n *\n * Zone.js[1] is a library that patches a bunch of JS and DOM APIs. It usually stores the original\n * value of the patched functions/constructors/methods in a hidden property prefixed by\n * __zone_symbol__.\n *\n * In multiple occasions, we observed that Zone.js is the culprit of important issues leading to\n * browser resource exhaustion (memory leak, high CPU usage). This method is used as a workaround to\n * use the original DOM API instead of the one patched by Zone.js.\n *\n * [1]: https://github.com/angular/angular/tree/main/packages/zone.js\n */\nexport function getZoneJsOriginalValue(target, name) {\n    var browserWindow = getGlobalObject();\n    var original;\n    if (browserWindow.Zone && typeof browserWindow.Zone.__symbol__ === 'function') {\n        original = target[browserWindow.Zone.__symbol__(name)];\n    }\n    if (!original) {\n        original = target[name];\n    }\n    return original;\n}\n//# sourceMappingURL=getZoneJsOriginalValue.js.map","import { getZoneJsOriginalValue } from './getZoneJsOriginalValue';\nimport { monitor } from './monitor';\nimport { getGlobalObject } from './getGlobalObject';\nexport function setTimeout(callback, delay) {\n    return getZoneJsOriginalValue(getGlobalObject(), 'setTimeout')(monitor(callback), delay);\n}\nexport function clearTimeout(timeoutId) {\n    getZoneJsOriginalValue(getGlobalObject(), 'clearTimeout')(timeoutId);\n}\nexport function setInterval(callback, delay) {\n    return getZoneJsOriginalValue(getGlobalObject(), 'setInterval')(monitor(callback), delay);\n}\nexport function clearInterval(timeoutId) {\n    getZoneJsOriginalValue(getGlobalObject(), 'clearInterval')(timeoutId);\n}\n//# sourceMappingURL=timer.js.map","import { setTimeout, clearTimeout } from '../timer';\n// use lodash API\nexport function throttle(fn, wait, options) {\n    var needLeadingExecution = options && options.leading !== undefined ? options.leading : true;\n    var needTrailingExecution = options && options.trailing !== undefined ? options.trailing : true;\n    var inWaitPeriod = false;\n    var pendingExecutionWithParameters;\n    var pendingTimeoutId;\n    return {\n        throttled: function () {\n            var parameters = [];\n            for (var _i = 0; _i < arguments.length; _i++) {\n                parameters[_i] = arguments[_i];\n            }\n            if (inWaitPeriod) {\n                pendingExecutionWithParameters = parameters;\n                return;\n            }\n            if (needLeadingExecution) {\n                fn.apply(void 0, parameters);\n            }\n            else {\n                pendingExecutionWithParameters = parameters;\n            }\n            inWaitPeriod = true;\n            pendingTimeoutId = setTimeout(function () {\n                if (needTrailingExecution && pendingExecutionWithParameters) {\n                    fn.apply(void 0, pendingExecutionWithParameters);\n                }\n                inWaitPeriod = false;\n                pendingExecutionWithParameters = undefined;\n            }, wait);\n        },\n        cancel: function () {\n            clearTimeout(pendingTimeoutId);\n            inWaitPeriod = false;\n            pendingExecutionWithParameters = undefined;\n        },\n    };\n}\n// eslint-disable-next-line @typescript-eslint/no-empty-function\nexport function noop() { }\n//# sourceMappingURL=functionUtils.js.map","import { noop } from '../utils/functionUtils';\n/**\n * Custom implementation of JSON.stringify that ignores some toJSON methods. We need to do that\n * because some sites badly override toJSON on certain objects. Removing all toJSON methods from\n * nested values would be too costly, so we just detach them from the root value, and native classes\n * used to build JSON values (Array and Object).\n *\n * Note: this still assumes that JSON.stringify is correct.\n */\nexport function jsonStringify(value, replacer, space) {\n    if (typeof value !== 'object' || value === null) {\n        return JSON.stringify(value);\n    }\n    // Note: The order matter here. We need to detach toJSON methods on parent classes before their\n    // subclasses.\n    var restoreObjectPrototypeToJson = detachToJsonMethod(Object.prototype);\n    var restoreArrayPrototypeToJson = detachToJsonMethod(Array.prototype);\n    var restoreValuePrototypeToJson = detachToJsonMethod(Object.getPrototypeOf(value));\n    var restoreValueToJson = detachToJsonMethod(value);\n    try {\n        return JSON.stringify(value, replacer, space);\n    }\n    catch (_a) {\n        return '<error: unable to serialize object>';\n    }\n    finally {\n        restoreObjectPrototypeToJson();\n        restoreArrayPrototypeToJson();\n        restoreValuePrototypeToJson();\n        restoreValueToJson();\n    }\n}\nexport function detachToJsonMethod(value) {\n    var object = value;\n    var objectToJson = object.toJSON;\n    if (objectToJson) {\n        delete object.toJSON;\n        return function () {\n            object.toJSON = objectToJson;\n        };\n    }\n    return noop;\n}\n//# sourceMappingURL=jsonStringify.js.map","import { assign } from './polyfills';\nexport function shallowClone(object) {\n    return assign({}, object);\n}\nexport function objectHasValue(object, value) {\n    return Object.keys(object).some(function (key) { return object[key] === value; });\n}\nexport function isEmptyObject(object) {\n    return Object.keys(object).length === 0;\n}\nexport function mapValues(object, fn) {\n    var newObject = {};\n    for (var _i = 0, _a = Object.keys(object); _i < _a.length; _i++) {\n        var key = _a[_i];\n        newObject[key] = fn(object[key]);\n    }\n    return newObject;\n}\n//# sourceMappingURL=objectUtils.js.map","import { ONE_KIBI_BYTE, computeBytesCount } from '../../tools/utils/byteUtils';\nimport { throttle } from '../../tools/utils/functionUtils';\nimport { jsonStringify } from '../../tools/serialisation/jsonStringify';\nimport { DOCS_TROUBLESHOOTING, MORE_DETAILS, display } from '../../tools/display';\nimport { isEmptyObject } from '../../tools/utils/objectUtils';\n// RUM and logs batch bytes limit is 16KB\n// ensure that we leave room for other event attributes and maintain a decent amount of event per batch\n// (3KB (customer data) + 1KB (other attributes)) * 4 (events per batch) = 16KB\nexport var CUSTOMER_DATA_BYTES_LIMIT = 3 * ONE_KIBI_BYTE;\n// We observed that the compression ratio is around 8 in general, but we also want to keep a margin\n// because some data might not be compressed (ex: last view update on page exit). We chose 16KiB\n// because it is also the limit of the 'batchBytesCount' that we use for RUM and Logs data, but this\n// is a bit arbitrary.\nexport var CUSTOMER_COMPRESSED_DATA_BYTES_LIMIT = 16 * ONE_KIBI_BYTE;\nexport var BYTES_COMPUTATION_THROTTLING_DELAY = 200;\nexport function createCustomerDataTrackerManager(compressionStatus) {\n    if (compressionStatus === void 0) { compressionStatus = 2 /* CustomerDataCompressionStatus.Disabled */; }\n    var customerDataTrackers = new Map();\n    var alreadyWarned = false;\n    function checkCustomerDataLimit(initialBytesCount) {\n        if (initialBytesCount === void 0) { initialBytesCount = 0; }\n        if (alreadyWarned || compressionStatus === 0 /* CustomerDataCompressionStatus.Unknown */) {\n            return;\n        }\n        var bytesCountLimit = compressionStatus === 2 /* CustomerDataCompressionStatus.Disabled */\n            ? CUSTOMER_DATA_BYTES_LIMIT\n            : CUSTOMER_COMPRESSED_DATA_BYTES_LIMIT;\n        var bytesCount = initialBytesCount;\n        customerDataTrackers.forEach(function (tracker) {\n            bytesCount += tracker.getBytesCount();\n        });\n        if (bytesCount > bytesCountLimit) {\n            displayCustomerDataLimitReachedWarning(bytesCountLimit);\n            alreadyWarned = true;\n        }\n    }\n    return {\n        /**\n         * Creates a detached tracker. The manager will not store a reference to that tracker, and the\n         * bytes count will be counted independently from other detached trackers.\n         *\n         * This is particularly useful when we don't know when the tracker will be unused, so we don't\n         * leak memory (ex: when used in Logger instances).\n         */\n        createDetachedTracker: function () {\n            var tracker = createCustomerDataTracker(function () { return checkCustomerDataLimit(tracker.getBytesCount()); });\n            return tracker;\n        },\n        /**\n         * Creates a tracker if it doesn't exist, and returns it.\n         */\n        getOrCreateTracker: function (type) {\n            if (!customerDataTrackers.has(type)) {\n                customerDataTrackers.set(type, createCustomerDataTracker(checkCustomerDataLimit));\n            }\n            return customerDataTrackers.get(type);\n        },\n        setCompressionStatus: function (newCompressionStatus) {\n            if (compressionStatus === 0 /* CustomerDataCompressionStatus.Unknown */) {\n                compressionStatus = newCompressionStatus;\n                checkCustomerDataLimit();\n            }\n        },\n        getCompressionStatus: function () { return compressionStatus; },\n        stop: function () {\n            customerDataTrackers.forEach(function (tracker) { return tracker.stop(); });\n            customerDataTrackers.clear();\n        },\n    };\n}\nexport function createCustomerDataTracker(checkCustomerDataLimit) {\n    var bytesCountCache = 0;\n    // Throttle the bytes computation to minimize the impact on performance.\n    // Especially useful if the user call context APIs synchronously multiple times in a row\n    var _a = throttle(function (context) {\n        bytesCountCache = computeBytesCount(jsonStringify(context));\n        checkCustomerDataLimit();\n    }, BYTES_COMPUTATION_THROTTLING_DELAY), computeBytesCountThrottled = _a.throttled, cancelComputeBytesCount = _a.cancel;\n    var resetBytesCount = function () {\n        cancelComputeBytesCount();\n        bytesCountCache = 0;\n    };\n    return {\n        updateCustomerData: function (context) {\n            if (isEmptyObject(context)) {\n                resetBytesCount();\n            }\n            else {\n                computeBytesCountThrottled(context);\n            }\n        },\n        resetCustomerData: resetBytesCount,\n        getBytesCount: function () { return bytesCountCache; },\n        stop: function () {\n            cancelComputeBytesCount();\n        },\n    };\n}\nfunction displayCustomerDataLimitReachedWarning(bytesCountLimit) {\n    display.warn(\"Customer data exceeds the recommended \".concat(bytesCountLimit / ONE_KIBI_BYTE, \"KiB threshold. \").concat(MORE_DETAILS, \" \").concat(DOCS_TROUBLESHOOTING, \"/#customer-data-exceeds-the-recommended-threshold-warning\"));\n}\n//# sourceMappingURL=customerDataTracker.js.map","/**\n * Similar to `typeof`, but distinguish plain objects from `null` and arrays\n */\nexport function getType(value) {\n    if (value === null) {\n        return 'null';\n    }\n    if (Array.isArray(value)) {\n        return 'array';\n    }\n    return typeof value;\n}\n//# sourceMappingURL=typeUtils.js.map","import { getType } from './utils/typeUtils';\n/**\n * Iterate over source and affect its sub values into destination, recursively.\n * If the source and destination can't be merged, return source.\n */\nexport function mergeInto(destination, source, circularReferenceChecker) {\n    if (circularReferenceChecker === void 0) { circularReferenceChecker = createCircularReferenceChecker(); }\n    // ignore the source if it is undefined\n    if (source === undefined) {\n        return destination;\n    }\n    if (typeof source !== 'object' || source === null) {\n        // primitive values - just return source\n        return source;\n    }\n    else if (source instanceof Date) {\n        return new Date(source.getTime());\n    }\n    else if (source instanceof RegExp) {\n        var flags = source.flags ||\n            // old browsers compatibility\n            [\n                source.global ? 'g' : '',\n                source.ignoreCase ? 'i' : '',\n                source.multiline ? 'm' : '',\n                source.sticky ? 'y' : '',\n                source.unicode ? 'u' : '',\n            ].join('');\n        return new RegExp(source.source, flags);\n    }\n    if (circularReferenceChecker.hasAlreadyBeenSeen(source)) {\n        // remove circular references\n        return undefined;\n    }\n    else if (Array.isArray(source)) {\n        var merged_1 = Array.isArray(destination) ? destination : [];\n        for (var i = 0; i < source.length; ++i) {\n            merged_1[i] = mergeInto(merged_1[i], source[i], circularReferenceChecker);\n        }\n        return merged_1;\n    }\n    var merged = getType(destination) === 'object' ? destination : {};\n    for (var key in source) {\n        if (Object.prototype.hasOwnProperty.call(source, key)) {\n            merged[key] = mergeInto(merged[key], source[key], circularReferenceChecker);\n        }\n    }\n    return merged;\n}\n/**\n * A simplistic implementation of a deep clone algorithm.\n * Caveats:\n * - It doesn't maintain prototype chains - don't use with instances of custom classes.\n * - It doesn't handle Map and Set\n */\nexport function deepClone(value) {\n    return mergeInto(undefined, value);\n}\nexport function combine() {\n    var sources = [];\n    for (var _i = 0; _i < arguments.length; _i++) {\n        sources[_i] = arguments[_i];\n    }\n    var destination;\n    for (var _a = 0, sources_1 = sources; _a < sources_1.length; _a++) {\n        var source = sources_1[_a];\n        // Ignore any undefined or null sources.\n        if (source === undefined || source === null) {\n            continue;\n        }\n        destination = mergeInto(destination, source);\n    }\n    return destination;\n}\nfunction createCircularReferenceChecker() {\n    if (typeof WeakSet !== 'undefined') {\n        var set_1 = new WeakSet();\n        return {\n            hasAlreadyBeenSeen: function (value) {\n                var has = set_1.has(value);\n                if (!has) {\n                    set_1.add(value);\n                }\n                return has;\n            },\n        };\n    }\n    var array = [];\n    return {\n        hasAlreadyBeenSeen: function (value) {\n            var has = array.indexOf(value) >= 0;\n            if (!has) {\n                array.push(value);\n            }\n            return has;\n        },\n    };\n}\n//# sourceMappingURL=mergeInto.js.map","import { display } from '../display';\nimport { ONE_KIBI_BYTE } from '../utils/byteUtils';\nimport { detachToJsonMethod } from './jsonStringify';\n// The maximum size of a single event is 256KiB. By default, we ensure that user-provided data\n// going through sanitize fits inside our events, while leaving room for other contexts, metadata, ...\nvar SANITIZE_DEFAULT_MAX_CHARACTER_COUNT = 220 * ONE_KIBI_BYTE;\n// Symbol for the root element of the JSONPath used for visited objects\nvar JSON_PATH_ROOT_ELEMENT = '$';\n// When serializing (using JSON.stringify) a key of an object, { key: 42 } gets wrapped in quotes as \"key\".\n// With the separator (:), we need to add 3 characters to the count.\nvar KEY_DECORATION_LENGTH = 3;\nexport function sanitize(source, maxCharacterCount) {\n    if (maxCharacterCount === void 0) { maxCharacterCount = SANITIZE_DEFAULT_MAX_CHARACTER_COUNT; }\n    // Unbind any toJSON function we may have on [] or {} prototypes\n    var restoreObjectPrototypeToJson = detachToJsonMethod(Object.prototype);\n    var restoreArrayPrototypeToJson = detachToJsonMethod(Array.prototype);\n    // Initial call to sanitizeProcessor - will populate containerQueue if source is an Array or a plain Object\n    var containerQueue = [];\n    var visitedObjectsWithPath = new WeakMap();\n    var sanitizedData = sanitizeProcessor(source, JSON_PATH_ROOT_ELEMENT, undefined, containerQueue, visitedObjectsWithPath);\n    var serializedSanitizedData = JSON.stringify(sanitizedData);\n    var accumulatedCharacterCount = serializedSanitizedData ? serializedSanitizedData.length : 0;\n    if (accumulatedCharacterCount > maxCharacterCount) {\n        warnOverCharacterLimit(maxCharacterCount, 'discarded', source);\n        return undefined;\n    }\n    while (containerQueue.length > 0 && accumulatedCharacterCount < maxCharacterCount) {\n        var containerToProcess = containerQueue.shift();\n        var separatorLength = 0; // 0 for the first element, 1 for subsequent elements\n        // Arrays and Objects have to be handled distinctly to ensure\n        // we do not pick up non-numerical properties from Arrays\n        if (Array.isArray(containerToProcess.source)) {\n            for (var key = 0; key < containerToProcess.source.length; key++) {\n                var targetData = sanitizeProcessor(containerToProcess.source[key], containerToProcess.path, key, containerQueue, visitedObjectsWithPath);\n                if (targetData !== undefined) {\n                    accumulatedCharacterCount += JSON.stringify(targetData).length;\n                }\n                else {\n                    // When an element of an Array (targetData) is undefined, it is serialized as null:\n                    // JSON.stringify([undefined]) => '[null]' - This accounts for 4 characters\n                    accumulatedCharacterCount += 4;\n                }\n                accumulatedCharacterCount += separatorLength;\n                separatorLength = 1;\n                if (accumulatedCharacterCount > maxCharacterCount) {\n                    warnOverCharacterLimit(maxCharacterCount, 'truncated', source);\n                    break;\n                }\n                ;\n                containerToProcess.target[key] = targetData;\n            }\n        }\n        else {\n            for (var key in containerToProcess.source) {\n                if (Object.prototype.hasOwnProperty.call(containerToProcess.source, key)) {\n                    var targetData = sanitizeProcessor(containerToProcess.source[key], containerToProcess.path, key, containerQueue, visitedObjectsWithPath);\n                    // When a property of an object has an undefined value, it will be dropped during serialization:\n                    // JSON.stringify({a:undefined}) => '{}'\n                    if (targetData !== undefined) {\n                        accumulatedCharacterCount +=\n                            JSON.stringify(targetData).length + separatorLength + key.length + KEY_DECORATION_LENGTH;\n                        separatorLength = 1;\n                    }\n                    if (accumulatedCharacterCount > maxCharacterCount) {\n                        warnOverCharacterLimit(maxCharacterCount, 'truncated', source);\n                        break;\n                    }\n                    ;\n                    containerToProcess.target[key] = targetData;\n                }\n            }\n        }\n    }\n    // Rebind detached toJSON functions\n    restoreObjectPrototypeToJson();\n    restoreArrayPrototypeToJson();\n    return sanitizedData;\n}\n/**\n * Internal function to factorize the process common to the\n * initial call to sanitize, and iterations for Arrays and Objects\n *\n */\nfunction sanitizeProcessor(source, parentPath, key, queue, visitedObjectsWithPath) {\n    // Start by handling toJSON, as we want to sanitize its output\n    var sourceToSanitize = tryToApplyToJSON(source);\n    if (!sourceToSanitize || typeof sourceToSanitize !== 'object') {\n        return sanitizePrimitivesAndFunctions(sourceToSanitize);\n    }\n    var sanitizedSource = sanitizeObjects(sourceToSanitize);\n    if (sanitizedSource !== '[Object]' && sanitizedSource !== '[Array]' && sanitizedSource !== '[Error]') {\n        return sanitizedSource;\n    }\n    // Handle potential cyclic references\n    // We need to use source as sourceToSanitize could be a reference to a new object\n    // At this stage, we know the source is an object type\n    var sourceAsObject = source;\n    if (visitedObjectsWithPath.has(sourceAsObject)) {\n        return \"[Reference seen at \".concat(visitedObjectsWithPath.get(sourceAsObject), \"]\");\n    }\n    // Add processed source to queue\n    var currentPath = key !== undefined ? \"\".concat(parentPath, \".\").concat(key) : parentPath;\n    var target = Array.isArray(sourceToSanitize) ? [] : {};\n    visitedObjectsWithPath.set(sourceAsObject, currentPath);\n    queue.push({ source: sourceToSanitize, target: target, path: currentPath });\n    return target;\n}\n/**\n * Handles sanitization of simple, non-object types\n *\n */\nfunction sanitizePrimitivesAndFunctions(value) {\n    // BigInt cannot be serialized by JSON.stringify(), convert it to a string representation\n    if (typeof value === 'bigint') {\n        return \"[BigInt] \".concat(value.toString());\n    }\n    // Functions cannot be serialized by JSON.stringify(). Moreover, if a faulty toJSON is present, it needs to be converted\n    // so it won't prevent stringify from serializing later\n    if (typeof value === 'function') {\n        return \"[Function] \".concat(value.name || 'unknown');\n    }\n    // JSON.stringify() does not serialize symbols.\n    if (typeof value === 'symbol') {\n        return \"[Symbol] \".concat(value.description || value.toString());\n    }\n    return value;\n}\n/**\n * Handles sanitization of object types\n *\n * LIMITATIONS\n * - If a class defines a toStringTag Symbol, it will fall in the catch-all method and prevent enumeration of properties.\n * To avoid this, a toJSON method can be defined.\n * - IE11 does not return a distinct type for objects such as Map, WeakMap, ... These objects will pass through and their\n * properties enumerated if any.\n *\n */\nfunction sanitizeObjects(value) {\n    try {\n        // Handle events - Keep a simple implementation to avoid breaking changes\n        if (value instanceof Event) {\n            return {\n                isTrusted: value.isTrusted,\n            };\n        }\n        // Handle all remaining object types in a generic way\n        var result = Object.prototype.toString.call(value);\n        var match = result.match(/\\[object (.*)\\]/);\n        if (match && match[1]) {\n            return \"[\".concat(match[1], \"]\");\n        }\n    }\n    catch (_a) {\n        // If the previous serialization attempts failed, and we cannot convert using\n        // Object.prototype.toString, declare the value unserializable\n    }\n    return '[Unserializable]';\n}\n/**\n * Checks if a toJSON function exists and tries to execute it\n *\n */\nfunction tryToApplyToJSON(value) {\n    var object = value;\n    if (object && typeof object.toJSON === 'function') {\n        try {\n            return object.toJSON();\n        }\n        catch (_a) {\n            // If toJSON fails, we continue by trying to serialize the value manually\n        }\n    }\n    return value;\n}\n/**\n * Helper function to display the warning when the accumulated character count is over the limit\n */\nfunction warnOverCharacterLimit(maxCharacterCount, changeType, source) {\n    display.warn(\"The data provided has been \".concat(changeType, \" as it is over the limit of \").concat(maxCharacterCount, \" characters:\"), source);\n}\n//# sourceMappingURL=sanitize.js.map","// eslint-disable-next-line no-restricted-syntax\nvar Observable = /** @class */ (function () {\n    function Observable(onFirstSubscribe) {\n        this.onFirstSubscribe = onFirstSubscribe;\n        this.observers = [];\n    }\n    Observable.prototype.subscribe = function (f) {\n        var _this = this;\n        this.observers.push(f);\n        if (this.observers.length === 1 && this.onFirstSubscribe) {\n            this.onLastUnsubscribe = this.onFirstSubscribe(this) || undefined;\n        }\n        return {\n            unsubscribe: function () {\n                _this.observers = _this.observers.filter(function (other) { return f !== other; });\n                if (!_this.observers.length && _this.onLastUnsubscribe) {\n                    _this.onLastUnsubscribe();\n                }\n            },\n        };\n    };\n    Observable.prototype.notify = function (data) {\n        this.observers.forEach(function (observer) { return observer(data); });\n    };\n    return Observable;\n}());\nexport { Observable };\nexport function mergeObservables() {\n    var observables = [];\n    for (var _i = 0; _i < arguments.length; _i++) {\n        observables[_i] = arguments[_i];\n    }\n    return new Observable(function (globalObservable) {\n        var subscriptions = observables.map(function (observable) {\n            return observable.subscribe(function (data) { return globalObservable.notify(data); });\n        });\n        return function () { return subscriptions.forEach(function (subscription) { return subscription.unsubscribe(); }); };\n    });\n}\n//# sourceMappingURL=observable.js.map","import { deepClone } from '../../tools/mergeInto';\nimport { getType } from '../../tools/utils/typeUtils';\nimport { sanitize } from '../../tools/serialisation/sanitize';\nimport { Observable } from '../../tools/observable';\nexport function createContextManager(customerDataTracker) {\n    var context = {};\n    var changeObservable = new Observable();\n    var contextManager = {\n        getContext: function () { return deepClone(context); },\n        setContext: function (newContext) {\n            if (getType(newContext) === 'object') {\n                context = sanitize(newContext);\n                customerDataTracker && customerDataTracker.updateCustomerData(context);\n            }\n            else {\n                contextManager.clearContext();\n            }\n            changeObservable.notify();\n        },\n        setContextProperty: function (key, property) {\n            context[key] = sanitize(property);\n            customerDataTracker && customerDataTracker.updateCustomerData(context);\n            changeObservable.notify();\n        },\n        removeContextProperty: function (key) {\n            delete context[key];\n            customerDataTracker && customerDataTracker.updateCustomerData(context);\n            changeObservable.notify();\n        },\n        clearContext: function () {\n            context = {};\n            customerDataTracker && customerDataTracker.resetCustomerData();\n            changeObservable.notify();\n        },\n        changeObservable: changeObservable,\n    };\n    return contextManager;\n}\n//# sourceMappingURL=contextManager.js.map","import { Observable } from '../tools/observable';\nexport var TrackingConsent = {\n    GRANTED: 'granted',\n    NOT_GRANTED: 'not-granted',\n};\nexport function createTrackingConsentState(currentConsent) {\n    var observable = new Observable();\n    return {\n        tryToInit: function (trackingConsent) {\n            if (!currentConsent) {\n                currentConsent = trackingConsent;\n            }\n        },\n        update: function (trackingConsent) {\n            currentConsent = trackingConsent;\n            observable.notify();\n        },\n        isGranted: function () {\n            return currentConsent === TrackingConsent.GRANTED;\n        },\n        observable: observable,\n    };\n}\n//# sourceMappingURL=trackingConsent.js.map","import { monitor } from '../tools/monitor';\nimport { getZoneJsOriginalValue } from '../tools/getZoneJsOriginalValue';\n/**\n * Add an event listener to an event target object (Window, Element, mock object...).  This provides\n * a few conveniences compared to using `element.addEventListener` directly:\n *\n * * supports IE11 by: using an option object only if needed and emulating the `once` option\n *\n * * wraps the listener with a `monitor` function\n *\n * * returns a `stop` function to remove the listener\n */\nexport function addEventListener(configuration, eventTarget, eventName, listener, options) {\n    return addEventListeners(configuration, eventTarget, [eventName], listener, options);\n}\n/**\n * Add event listeners to an event target object (Window, Element, mock object...).  This provides\n * a few conveniences compared to using `element.addEventListener` directly:\n *\n * * supports IE11 by: using an option object only if needed and emulating the `once` option\n *\n * * wraps the listener with a `monitor` function\n *\n * * returns a `stop` function to remove the listener\n *\n * * with `once: true`, the listener will be called at most once, even if different events are listened\n */\nexport function addEventListeners(configuration, eventTarget, eventNames, listener, _a) {\n    var _b = _a === void 0 ? {} : _a, once = _b.once, capture = _b.capture, passive = _b.passive;\n    var listenerWithMonitor = monitor(function (event) {\n        if (!event.isTrusted && !event.__ddIsTrusted && !configuration.allowUntrustedEvents) {\n            return;\n        }\n        if (once) {\n            stop();\n        }\n        listener(event);\n    });\n    var options = passive ? { capture: capture, passive: passive } : capture;\n    var add = getZoneJsOriginalValue(eventTarget, 'addEventListener');\n    eventNames.forEach(function (eventName) { return add.call(eventTarget, eventName, listenerWithMonitor, options); });\n    function stop() {\n        var remove = getZoneJsOriginalValue(eventTarget, 'removeEventListener');\n        eventNames.forEach(function (eventName) { return remove.call(eventTarget, eventName, listenerWithMonitor, options); });\n    }\n    return {\n        stop: stop,\n    };\n}\n//# sourceMappingURL=addEventListener.js.map","import { addEventListener } from '../../browser/addEventListener';\nimport { combine } from '../../tools/mergeInto';\nvar CONTEXT_STORE_KEY_PREFIX = '_dd_c';\nvar storageListeners = [];\nexport function storeContextManager(configuration, contextManager, productKey, customerDataType) {\n    var storageKey = buildStorageKey(productKey, customerDataType);\n    storageListeners.push(addEventListener(configuration, window, \"storage\" /* DOM_EVENT.STORAGE */, function (_a) {\n        var key = _a.key;\n        if (storageKey === key) {\n            synchronizeWithStorage();\n        }\n    }));\n    contextManager.changeObservable.subscribe(dumpToStorage);\n    contextManager.setContext(combine(getFromStorage(), contextManager.getContext()));\n    function synchronizeWithStorage() {\n        contextManager.setContext(getFromStorage());\n    }\n    function dumpToStorage() {\n        localStorage.setItem(storageKey, JSON.stringify(contextManager.getContext()));\n    }\n    function getFromStorage() {\n        var rawContext = localStorage.getItem(storageKey);\n        return rawContext !== null ? JSON.parse(rawContext) : {};\n    }\n}\nexport function buildStorageKey(productKey, customerDataType) {\n    return \"\".concat(CONTEXT_STORE_KEY_PREFIX, \"_\").concat(productKey, \"_\").concat(customerDataType);\n}\nexport function removeStorageListeners() {\n    storageListeners.map(function (listener) { return listener.stop(); });\n}\n//# sourceMappingURL=storeContextManager.js.map","/**\n * Cross-browser stack trace computation.\n *\n * Reference implementation: https://github.com/csnover/TraceKit/blob/04530298073c3823de72deb0b97e7b38ca7bcb59/tracekit.js\n */\nimport { startsWith } from '../utils/polyfills';\nvar UNKNOWN_FUNCTION = '?';\nexport function computeStackTrace(ex) {\n    var stack = [];\n    var stackProperty = tryToGetString(ex, 'stack');\n    var exString = String(ex);\n    if (stackProperty && startsWith(stackProperty, exString)) {\n        stackProperty = stackProperty.slice(exString.length);\n    }\n    if (stackProperty) {\n        stackProperty.split('\\n').forEach(function (line) {\n            var stackFrame = parseChromeLine(line) || parseChromeAnonymousLine(line) || parseWinLine(line) || parseGeckoLine(line);\n            if (stackFrame) {\n                if (!stackFrame.func && stackFrame.line) {\n                    stackFrame.func = UNKNOWN_FUNCTION;\n                }\n                stack.push(stackFrame);\n            }\n        });\n    }\n    return {\n        message: tryToGetString(ex, 'message'),\n        name: tryToGetString(ex, 'name'),\n        stack: stack,\n    };\n}\nvar fileUrl = '((?:file|https?|blob|chrome-extension|native|eval|webpack|snippet|<anonymous>|\\\\w+\\\\.|\\\\/).*?)';\nvar filePosition = '(?::(\\\\d+))';\nvar CHROME_LINE_RE = new RegExp(\"^\\\\s*at (.*?) ?\\\\(\".concat(fileUrl).concat(filePosition, \"?\").concat(filePosition, \"?\\\\)?\\\\s*$\"), 'i');\nvar CHROME_EVAL_RE = new RegExp(\"\\\\((\\\\S*)\".concat(filePosition).concat(filePosition, \"\\\\)\"));\nfunction parseChromeLine(line) {\n    var parts = CHROME_LINE_RE.exec(line);\n    if (!parts) {\n        return;\n    }\n    var isNative = parts[2] && parts[2].indexOf('native') === 0; // start of line\n    var isEval = parts[2] && parts[2].indexOf('eval') === 0; // start of line\n    var submatch = CHROME_EVAL_RE.exec(parts[2]);\n    if (isEval && submatch) {\n        // throw out eval line/column and use top-most line/column number\n        parts[2] = submatch[1]; // url\n        parts[3] = submatch[2]; // line\n        parts[4] = submatch[3]; // column\n    }\n    return {\n        args: isNative ? [parts[2]] : [],\n        column: parts[4] ? +parts[4] : undefined,\n        func: parts[1] || UNKNOWN_FUNCTION,\n        line: parts[3] ? +parts[3] : undefined,\n        url: !isNative ? parts[2] : undefined,\n    };\n}\nvar CHROME_ANONYMOUS_FUNCTION_RE = new RegExp(\"^\\\\s*at ?\".concat(fileUrl).concat(filePosition, \"?\").concat(filePosition, \"??\\\\s*$\"), 'i');\nfunction parseChromeAnonymousLine(line) {\n    var parts = CHROME_ANONYMOUS_FUNCTION_RE.exec(line);\n    if (!parts) {\n        return;\n    }\n    return {\n        args: [],\n        column: parts[3] ? +parts[3] : undefined,\n        func: UNKNOWN_FUNCTION,\n        line: parts[2] ? +parts[2] : undefined,\n        url: parts[1],\n    };\n}\nvar WINJS_LINE_RE = /^\\s*at (?:((?:\\[object object\\])?.+) )?\\(?((?:file|ms-appx|https?|webpack|blob):.*?):(\\d+)(?::(\\d+))?\\)?\\s*$/i;\nfunction parseWinLine(line) {\n    var parts = WINJS_LINE_RE.exec(line);\n    if (!parts) {\n        return;\n    }\n    return {\n        args: [],\n        column: parts[4] ? +parts[4] : undefined,\n        func: parts[1] || UNKNOWN_FUNCTION,\n        line: +parts[3],\n        url: parts[2],\n    };\n}\nvar GECKO_LINE_RE = /^\\s*(.*?)(?:\\((.*?)\\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|capacitor|\\[native).*?|[^@]*bundle)(?::(\\d+))?(?::(\\d+))?\\s*$/i;\nvar GECKO_EVAL_RE = /(\\S+) line (\\d+)(?: > eval line \\d+)* > eval/i;\nfunction parseGeckoLine(line) {\n    var parts = GECKO_LINE_RE.exec(line);\n    if (!parts) {\n        return;\n    }\n    var isEval = parts[3] && parts[3].indexOf(' > eval') > -1;\n    var submatch = GECKO_EVAL_RE.exec(parts[3]);\n    if (isEval && submatch) {\n        // throw out eval line/column and use top-most line number\n        parts[3] = submatch[1];\n        parts[4] = submatch[2];\n        parts[5] = undefined; // no column when eval\n    }\n    return {\n        args: parts[2] ? parts[2].split(',') : [],\n        column: parts[5] ? +parts[5] : undefined,\n        func: parts[1] || UNKNOWN_FUNCTION,\n        line: parts[4] ? +parts[4] : undefined,\n        url: parts[3],\n    };\n}\nfunction tryToGetString(candidate, property) {\n    if (typeof candidate !== 'object' || !candidate || !(property in candidate)) {\n        return undefined;\n    }\n    var value = candidate[property];\n    return typeof value === 'string' ? value : undefined;\n}\nexport function computeStackTraceFromOnErrorMessage(messageObj, url, line, column) {\n    var stack = [{ url: url, column: column, line: line }];\n    var _a = tryToParseMessage(messageObj), name = _a.name, message = _a.message;\n    return {\n        name: name,\n        message: message,\n        stack: stack,\n    };\n}\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error#Error_types\nvar ERROR_TYPES_RE = /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?([\\s\\S]*)$/;\nfunction tryToParseMessage(messageObj) {\n    var _a;\n    var name;\n    var message;\n    if ({}.toString.call(messageObj) === '[object String]') {\n        ;\n        _a = ERROR_TYPES_RE.exec(messageObj), name = _a[1], message = _a[2];\n    }\n    return { name: name, message: message };\n}\n//# sourceMappingURL=computeStackTrace.js.map","import { callMonitored } from '../monitor';\nimport { noop } from '../utils/functionUtils';\nimport { computeStackTrace } from './computeStackTrace';\n/**\n * Creates a stacktrace without SDK internal frames.\n * Constraints:\n * - Has to be called at the utmost position of the call stack.\n * - No monitored function should encapsulate it, that is why we need to use callMonitored inside it.\n */\nexport function createHandlingStack() {\n    /**\n     * Skip the two internal frames:\n     * - SDK API (console.error, ...)\n     * - this function\n     * in order to keep only the user calls\n     */\n    var internalFramesToSkip = 2;\n    var error = new Error();\n    var formattedStack;\n    // IE needs to throw the error to fill in the stack trace\n    if (!error.stack) {\n        try {\n            throw error;\n        }\n        catch (e) {\n            noop();\n        }\n    }\n    callMonitored(function () {\n        var stackTrace = computeStackTrace(error);\n        stackTrace.stack = stackTrace.stack.slice(internalFramesToSkip);\n        formattedStack = toStackTraceString(stackTrace);\n    });\n    return formattedStack;\n}\nexport function toStackTraceString(stack) {\n    var result = formatErrorMessage(stack);\n    stack.stack.forEach(function (frame) {\n        var func = frame.func === '?' ? '<anonymous>' : frame.func;\n        var args = frame.args && frame.args.length > 0 ? \"(\".concat(frame.args.join(', '), \")\") : '';\n        var line = frame.line ? \":\".concat(frame.line) : '';\n        var column = frame.line && frame.column ? \":\".concat(frame.column) : '';\n        result += \"\\n  at \".concat(func).concat(args, \" @ \").concat(frame.url).concat(line).concat(column);\n    });\n    return result;\n}\nexport function formatErrorMessage(stack) {\n    return \"\".concat(stack.name || 'Error', \": \").concat(stack.message);\n}\n//# sourceMappingURL=handlingStack.js.map","import { sanitize } from '../../tools/serialisation/sanitize';\nimport { jsonStringify } from '../../tools/serialisation/jsonStringify';\nimport { computeStackTrace } from '../../tools/stackTrace/computeStackTrace';\nimport { toStackTraceString } from '../../tools/stackTrace/handlingStack';\nexport var NO_ERROR_STACK_PRESENT_MESSAGE = 'No stack, consider using an instance of Error';\nexport function computeRawError(_a) {\n    var stackTrace = _a.stackTrace, originalError = _a.originalError, handlingStack = _a.handlingStack, startClocks = _a.startClocks, nonErrorPrefix = _a.nonErrorPrefix, source = _a.source, handling = _a.handling;\n    var isErrorInstance = originalError instanceof Error;\n    var message = computeMessage(stackTrace, isErrorInstance, nonErrorPrefix, originalError);\n    var stack = hasUsableStack(isErrorInstance, stackTrace)\n        ? toStackTraceString(stackTrace)\n        : NO_ERROR_STACK_PRESENT_MESSAGE;\n    var causes = isErrorInstance ? flattenErrorCauses(originalError, source) : undefined;\n    var type = stackTrace ? stackTrace.name : undefined;\n    var fingerprint = tryToGetFingerprint(originalError);\n    return {\n        startClocks: startClocks,\n        source: source,\n        handling: handling,\n        handlingStack: handlingStack,\n        originalError: originalError,\n        type: type,\n        message: message,\n        stack: stack,\n        causes: causes,\n        fingerprint: fingerprint,\n    };\n}\nfunction computeMessage(stackTrace, isErrorInstance, nonErrorPrefix, originalError) {\n    // Favor stackTrace message only if tracekit has really been able to extract something meaningful (message + name)\n    // TODO rework tracekit integration to avoid scattering error building logic\n    return (stackTrace === null || stackTrace === void 0 ? void 0 : stackTrace.message) && (stackTrace === null || stackTrace === void 0 ? void 0 : stackTrace.name)\n        ? stackTrace.message\n        : !isErrorInstance\n            ? \"\".concat(nonErrorPrefix, \" \").concat(jsonStringify(sanitize(originalError)))\n            : 'Empty message';\n}\nfunction hasUsableStack(isErrorInstance, stackTrace) {\n    if (stackTrace === undefined) {\n        return false;\n    }\n    if (isErrorInstance) {\n        return true;\n    }\n    // handle cases where tracekit return stack = [] or stack = [{url: undefined, line: undefined, column: undefined}]\n    // TODO rework tracekit integration to avoid generating those unusable stack\n    return stackTrace.stack.length > 0 && (stackTrace.stack.length > 1 || stackTrace.stack[0].url !== undefined);\n}\nexport function tryToGetFingerprint(originalError) {\n    return originalError instanceof Error && 'dd_fingerprint' in originalError\n        ? String(originalError.dd_fingerprint)\n        : undefined;\n}\nexport function getFileFromStackTraceString(stack) {\n    var _a;\n    return (_a = /@ (.+)/.exec(stack)) === null || _a === void 0 ? void 0 : _a[1];\n}\nexport function flattenErrorCauses(error, parentSource) {\n    var currentError = error;\n    var causes = [];\n    while ((currentError === null || currentError === void 0 ? void 0 : currentError.cause) instanceof Error && causes.length < 10) {\n        var stackTrace = computeStackTrace(currentError.cause);\n        causes.push({\n            message: currentError.cause.message,\n            source: parentSource,\n            type: stackTrace === null || stackTrace === void 0 ? void 0 : stackTrace.name,\n            stack: stackTrace && toStackTraceString(stackTrace),\n        });\n        currentError = currentError.cause;\n    }\n    return causes.length ? causes : undefined;\n}\n//# sourceMappingURL=error.js.map","/**\n * LIMITATION:\n * For NPM setup, this feature flag singleton is shared between RUM and Logs product.\n * This means that an experimental flag set on the RUM product will be set on the Logs product.\n * So keep in mind that in certain configurations, your experimental feature flag may affect other products.\n *\n * FORMAT:\n * All feature flags should be snake_cased\n */\n// We want to use a real enum (i.e. not a const enum) here, to be able to check whether an arbitrary\n// string is an expected feature flag\nimport { objectHasValue } from './utils/objectUtils';\n// eslint-disable-next-line no-restricted-syntax\nexport var ExperimentalFeature;\n(function (ExperimentalFeature) {\n    ExperimentalFeature[\"WRITABLE_RESOURCE_GRAPHQL\"] = \"writable_resource_graphql\";\n    ExperimentalFeature[\"REMOTE_CONFIGURATION\"] = \"remote_configuration\";\n    ExperimentalFeature[\"UPDATE_VIEW_NAME\"] = \"update_view_name\";\n    ExperimentalFeature[\"LONG_ANIMATION_FRAME\"] = \"long_animation_frame\";\n    ExperimentalFeature[\"VIEW_SPECIFIC_CONTEXT\"] = \"view_specific_context\";\n})(ExperimentalFeature || (ExperimentalFeature = {}));\nvar enabledExperimentalFeatures = new Set();\nexport function initFeatureFlags(enableExperimentalFeatures) {\n    if (Array.isArray(enableExperimentalFeatures)) {\n        addExperimentalFeatures(enableExperimentalFeatures.filter(function (flag) {\n            return objectHasValue(ExperimentalFeature, flag);\n        }));\n    }\n}\nexport function addExperimentalFeatures(enabledFeatures) {\n    enabledFeatures.forEach(function (flag) {\n        enabledExperimentalFeatures.add(flag);\n    });\n}\nexport function isExperimentalFeatureEnabled(featureName) {\n    return enabledExperimentalFeatures.has(featureName);\n}\nexport function resetExperimentalFeatures() {\n    enabledExperimentalFeatures.clear();\n}\nexport function getExperimentalFeatures() {\n    return enabledExperimentalFeatures;\n}\n//# sourceMappingURL=experimentalFeatures.js.map","export var INTAKE_SITE_STAGING = 'datad0g.com';\nexport var INTAKE_SITE_FED_STAGING = 'dd0g-gov.com';\nexport var INTAKE_SITE_US1 = 'datadoghq.com';\nexport var INTAKE_SITE_EU1 = 'datadoghq.eu';\nexport var INTAKE_SITE_US1_FED = 'ddog-gov.com';\nexport var PCI_INTAKE_HOST_US1 = 'pci.browser-intake-datadoghq.com';\n//# sourceMappingURL=intakeSites.js.map","import { isNumber, round } from './numberUtils';\nexport var ONE_SECOND = 1000;\nexport var ONE_MINUTE = 60 * ONE_SECOND;\nexport var ONE_HOUR = 60 * ONE_MINUTE;\nexport var ONE_DAY = 24 * ONE_HOUR;\nexport var ONE_YEAR = 365 * ONE_DAY;\nexport function relativeToClocks(relative) {\n    return { relative: relative, timeStamp: getCorrectedTimeStamp(relative) };\n}\nexport function timeStampToClocks(timeStamp) {\n    return { relative: getRelativeTime(timeStamp), timeStamp: timeStamp };\n}\nfunction getCorrectedTimeStamp(relativeTime) {\n    var correctedOrigin = (dateNow() - performance.now());\n    // apply correction only for positive drift\n    if (correctedOrigin > getNavigationStart()) {\n        return Math.round(addDuration(correctedOrigin, relativeTime));\n    }\n    return getTimeStamp(relativeTime);\n}\nexport function currentDrift() {\n    return Math.round(dateNow() - addDuration(getNavigationStart(), performance.now()));\n}\nexport function toServerDuration(duration) {\n    if (!isNumber(duration)) {\n        return duration;\n    }\n    return round(duration * 1e6, 0);\n}\nexport function dateNow() {\n    // Do not use `Date.now` because sometimes websites are wrongly \"polyfilling\" it. For example, we\n    // had some users using a very old version of `datejs`, which patched `Date.now` to return a Date\n    // instance instead of a timestamp[1]. Those users are unlikely to fix this, so let's handle this\n    // case ourselves.\n    // [1]: https://github.com/datejs/Datejs/blob/97f5c7c58c5bc5accdab8aa7602b6ac56462d778/src/core-debug.js#L14-L16\n    return new Date().getTime();\n}\nexport function timeStampNow() {\n    return dateNow();\n}\nexport function relativeNow() {\n    return performance.now();\n}\nexport function clocksNow() {\n    return { relative: relativeNow(), timeStamp: timeStampNow() };\n}\nexport function clocksOrigin() {\n    return { relative: 0, timeStamp: getNavigationStart() };\n}\nexport function elapsed(start, end) {\n    return (end - start);\n}\nexport function addDuration(a, b) {\n    return a + b;\n}\n/**\n * Get the time since the navigation was started.\n *\n * Note: this does not use `performance.timeOrigin` because it doesn't seem to reflect the actual\n * time on which the navigation has started: it may be much farther in the past, at least in Firefox 71.\n * Related issue in Firefox: https://bugzilla.mozilla.org/show_bug.cgi?id=1429926\n */\nexport function getRelativeTime(timestamp) {\n    return (timestamp - getNavigationStart());\n}\nexport function getTimeStamp(relativeTime) {\n    return Math.round(addDuration(getNavigationStart(), relativeTime));\n}\nexport function looksLikeRelativeTime(time) {\n    return time < ONE_YEAR;\n}\n/**\n * Navigation start slightly change on some rare cases\n */\nvar navigationStart;\nfunction getNavigationStart() {\n    if (navigationStart === undefined) {\n        navigationStart = performance.timing.navigationStart;\n    }\n    return navigationStart;\n}\n//# sourceMappingURL=timeUtils.js.map","export function sendToExtension(type, payload) {\n    var callback = window.__ddBrowserSdkExtensionCallback;\n    if (callback) {\n        callback({ type: type, payload: payload });\n    }\n}\n//# sourceMappingURL=sendToExtension.js.map","/**\n * Return true if the draw is successful\n * @param threshold between 0 and 100\n */\nexport function performDraw(threshold) {\n    return threshold !== 0 && Math.random() * 100 <= threshold;\n}\nexport function round(num, decimals) {\n    return +num.toFixed(decimals);\n}\nexport function isPercentage(value) {\n    return isNumber(value) && value >= 0 && value <= 100;\n}\nexport function isNumber(value) {\n    return typeof value === 'number';\n}\n//# sourceMappingURL=numberUtils.js.map","export function getConnectivity() {\n    var _a;\n    var navigator = window.navigator;\n    return {\n        status: navigator.onLine ? 'connected' : 'not_connected',\n        interfaces: navigator.connection && navigator.connection.type ? [navigator.connection.type] : undefined,\n        effective_type: (_a = navigator.connection) === null || _a === void 0 ? void 0 : _a.effectiveType,\n    };\n}\n//# sourceMappingURL=connectivity.js.map","import { arrayFrom } from './polyfills';\nexport function removeDuplicates(array) {\n    var set = new Set();\n    array.forEach(function (item) { return set.add(item); });\n    return arrayFrom(set);\n}\nexport function removeItem(array, item) {\n    var index = array.indexOf(item);\n    if (index >= 0) {\n        array.splice(index, 1);\n    }\n}\n//# sourceMappingURL=arrayUtils.js.map","import { removeItem } from './utils/arrayUtils';\nvar BUFFER_LIMIT = 500;\nexport function createBoundedBuffer() {\n    var buffer = [];\n    var add = function (callback) {\n        var length = buffer.push(callback);\n        if (length > BUFFER_LIMIT) {\n            buffer.splice(0, 1);\n        }\n    };\n    var remove = function (callback) {\n        removeItem(buffer, callback);\n    };\n    var drain = function (arg) {\n        buffer.forEach(function (callback) { return callback(arg); });\n        buffer.length = 0;\n    };\n    return {\n        add: add,\n        remove: remove,\n        drain: drain,\n    };\n}\n//# sourceMappingURL=boundedBuffer.js.map","export var TelemetryType = {\n    log: 'log',\n    configuration: 'configuration',\n    usage: 'usage',\n};\n//# sourceMappingURL=rawTelemetryEvent.types.js.map","import { ConsoleApiName } from '../../tools/display';\nimport { NO_ERROR_STACK_PRESENT_MESSAGE } from '../error/error';\nimport { toStackTraceString } from '../../tools/stackTrace/handlingStack';\nimport { getExperimentalFeatures } from '../../tools/experimentalFeatures';\nimport { INTAKE_SITE_STAGING, INTAKE_SITE_US1_FED } from '../configuration';\nimport { Observable } from '../../tools/observable';\nimport { timeStampNow } from '../../tools/utils/timeUtils';\nimport { displayIfDebugEnabled, startMonitorErrorCollection } from '../../tools/monitor';\nimport { sendToExtension } from '../../tools/sendToExtension';\nimport { startsWith, arrayFrom, includes, assign } from '../../tools/utils/polyfills';\nimport { performDraw } from '../../tools/utils/numberUtils';\nimport { jsonStringify } from '../../tools/serialisation/jsonStringify';\nimport { combine } from '../../tools/mergeInto';\nimport { computeStackTrace } from '../../tools/stackTrace/computeStackTrace';\nimport { getConnectivity } from '../connectivity';\nimport { createBoundedBuffer } from '../../tools/boundedBuffer';\nimport { TelemetryType } from './rawTelemetryEvent.types';\nvar ALLOWED_FRAME_URLS = [\n    'https://www.datadoghq-browser-agent.com',\n    'https://www.datad0g-browser-agent.com',\n    'https://d3uc069fcn7uxw.cloudfront.net',\n    'https://d20xtzwzcl0ceb.cloudfront.net',\n    'http://localhost',\n    '<anonymous>',\n];\nvar TELEMETRY_EXCLUDED_SITES = [INTAKE_SITE_US1_FED];\n// eslint-disable-next-line local-rules/disallow-side-effects\nvar preStartTelemetryBuffer = createBoundedBuffer();\nvar onRawTelemetryEventCollected = function (event) {\n    preStartTelemetryBuffer.add(function () { return onRawTelemetryEventCollected(event); });\n};\nexport function startTelemetry(telemetryService, configuration) {\n    var _a;\n    var contextProvider;\n    var observable = new Observable();\n    var alreadySentEvents = new Set();\n    var telemetryEnabled = !includes(TELEMETRY_EXCLUDED_SITES, configuration.site) && performDraw(configuration.telemetrySampleRate);\n    var telemetryEnabledPerType = (_a = {},\n        _a[TelemetryType.log] = telemetryEnabled,\n        _a[TelemetryType.configuration] = telemetryEnabled && performDraw(configuration.telemetryConfigurationSampleRate),\n        _a[TelemetryType.usage] = telemetryEnabled && performDraw(configuration.telemetryUsageSampleRate),\n        _a);\n    var runtimeEnvInfo = getRuntimeEnvInfo();\n    onRawTelemetryEventCollected = function (rawEvent) {\n        var stringifiedEvent = jsonStringify(rawEvent);\n        if (telemetryEnabledPerType[rawEvent.type] &&\n            alreadySentEvents.size < configuration.maxTelemetryEventsPerPage &&\n            !alreadySentEvents.has(stringifiedEvent)) {\n            var event_1 = toTelemetryEvent(telemetryService, rawEvent, runtimeEnvInfo);\n            observable.notify(event_1);\n            sendToExtension('telemetry', event_1);\n            alreadySentEvents.add(stringifiedEvent);\n        }\n    };\n    startMonitorErrorCollection(addTelemetryError);\n    function toTelemetryEvent(telemetryService, event, runtimeEnvInfo) {\n        return combine({\n            type: 'telemetry',\n            date: timeStampNow(),\n            service: telemetryService,\n            version: \"5.27.0\",\n            source: 'browser',\n            _dd: {\n                format_version: 2,\n            },\n            telemetry: combine(event, {\n                runtime_env: runtimeEnvInfo,\n                connectivity: getConnectivity(),\n            }),\n            experimental_features: arrayFrom(getExperimentalFeatures()),\n        }, contextProvider !== undefined ? contextProvider() : {});\n    }\n    return {\n        setContextProvider: function (provider) {\n            contextProvider = provider;\n        },\n        observable: observable,\n        enabled: telemetryEnabled,\n    };\n}\nfunction getRuntimeEnvInfo() {\n    return {\n        is_local_file: window.location.protocol === 'file:',\n        is_worker: 'WorkerGlobalScope' in self,\n    };\n}\nexport function startFakeTelemetry() {\n    var events = [];\n    onRawTelemetryEventCollected = function (event) {\n        events.push(event);\n    };\n    return events;\n}\n// need to be called after telemetry context is provided and observers are registered\nexport function drainPreStartTelemetry() {\n    preStartTelemetryBuffer.drain();\n}\nexport function resetTelemetry() {\n    preStartTelemetryBuffer = createBoundedBuffer();\n    onRawTelemetryEventCollected = function (event) {\n        preStartTelemetryBuffer.add(function () { return onRawTelemetryEventCollected(event); });\n    };\n}\n/**\n * Avoid mixing telemetry events from different data centers\n * but keep replicating staging events for reliability\n */\nexport function isTelemetryReplicationAllowed(configuration) {\n    return configuration.site === INTAKE_SITE_STAGING;\n}\nexport function addTelemetryDebug(message, context) {\n    displayIfDebugEnabled(ConsoleApiName.debug, message, context);\n    onRawTelemetryEventCollected(assign({\n        type: TelemetryType.log,\n        message: message,\n        status: \"debug\" /* StatusType.debug */,\n    }, context));\n}\nexport function addTelemetryError(e, context) {\n    onRawTelemetryEventCollected(assign({\n        type: TelemetryType.log,\n        status: \"error\" /* StatusType.error */,\n    }, formatError(e), context));\n}\nexport function addTelemetryConfiguration(configuration) {\n    onRawTelemetryEventCollected({\n        type: TelemetryType.configuration,\n        configuration: configuration,\n    });\n}\nexport function addTelemetryUsage(usage) {\n    onRawTelemetryEventCollected({\n        type: TelemetryType.usage,\n        usage: usage,\n    });\n}\nexport function formatError(e) {\n    if (e instanceof Error) {\n        var stackTrace = computeStackTrace(e);\n        return {\n            error: {\n                kind: stackTrace.name,\n                stack: toStackTraceString(scrubCustomerFrames(stackTrace)),\n            },\n            message: stackTrace.message,\n        };\n    }\n    return {\n        error: {\n            stack: NO_ERROR_STACK_PRESENT_MESSAGE,\n        },\n        message: \"\".concat(\"Uncaught\" /* NonErrorPrefix.UNCAUGHT */, \" \").concat(jsonStringify(e)),\n    };\n}\nexport function scrubCustomerFrames(stackTrace) {\n    stackTrace.stack = stackTrace.stack.filter(function (frame) { return !frame.url || ALLOWED_FRAME_URLS.some(function (allowedFrameUrl) { return startsWith(frame.url, allowedFrameUrl); }); });\n    return stackTrace;\n}\n//# sourceMappingURL=telemetry.js.map","import { display } from '../../tools/display';\nimport { getType } from '../../tools/utils/typeUtils';\nimport { assign } from '../../tools/utils/polyfills';\n/**\n * Clone input data and ensure known user properties (id, name, email)\n * are strings, as defined here:\n * https://docs.datadoghq.com/logs/log_configuration/attributes_naming_convention/#user-related-attributes\n */\nexport function sanitizeUser(newUser) {\n    // We shallow clone only to prevent mutation of user data.\n    var user = assign({}, newUser);\n    var keys = ['id', 'name', 'email'];\n    keys.forEach(function (key) {\n        if (key in user) {\n            user[key] = String(user[key]);\n        }\n    });\n    return user;\n}\n/**\n * Simple check to ensure user is valid\n */\nexport function checkUser(newUser) {\n    var isValid = getType(newUser) === 'object';\n    if (!isValid) {\n        display.error('Unsupported user:', newUser);\n    }\n    return isValid;\n}\n//# sourceMappingURL=user.js.map","import { display } from '../tools/display';\nexport function displayAlreadyInitializedError(sdkName, initConfiguration) {\n    if (!initConfiguration.silentMultipleInit) {\n        display.error(\"\".concat(sdkName, \" is already initialized.\"));\n    }\n}\n//# sourceMappingURL=displayAlreadyInitializedError.js.map","export var ErrorSource = {\n    AGENT: 'agent',\n    CONSOLE: 'console',\n    CUSTOM: 'custom',\n    LOGGER: 'logger',\n    NETWORK: 'network',\n    SOURCE: 'source',\n    REPORT: 'report',\n};\n//# sourceMappingURL=error.types.js.map","var _a;\nimport { includes } from '@datadog/browser-core';\nexport function isAuthorized(status, handlerType, logger) {\n    var loggerHandler = logger.getHandler();\n    var sanitizedHandlerType = Array.isArray(loggerHandler) ? loggerHandler : [loggerHandler];\n    return (STATUS_PRIORITIES[status] >= STATUS_PRIORITIES[logger.getLevel()] && includes(sanitizedHandlerType, handlerType));\n}\nexport var StatusType = {\n    ok: 'ok',\n    debug: 'debug',\n    info: 'info',\n    notice: 'notice',\n    warn: 'warn',\n    error: 'error',\n    critical: 'critical',\n    alert: 'alert',\n    emerg: 'emerg',\n};\nexport var STATUS_PRIORITIES = (_a = {},\n    _a[StatusType.ok] = 0,\n    _a[StatusType.debug] = 1,\n    _a[StatusType.info] = 2,\n    _a[StatusType.notice] = 4,\n    _a[StatusType.warn] = 5,\n    _a[StatusType.error] = 6,\n    _a[StatusType.critical] = 7,\n    _a[StatusType.alert] = 8,\n    _a[StatusType.emerg] = 9,\n    _a);\n//# sourceMappingURL=isAuthorized.js.map","export function createErrorFieldFromRawError(rawError, _a) {\n    var _b = _a === void 0 ? {} : _a, \n    /**\n     * Set this to `true` to include the error message in the error field. In most cases, the error\n     * message is already included in the log message, so we don't need to include it again.\n     */\n    _c = _b.includeMessage, \n    /**\n     * Set this to `true` to include the error message in the error field. In most cases, the error\n     * message is already included in the log message, so we don't need to include it again.\n     */\n    includeMessage = _c === void 0 ? false : _c;\n    return {\n        stack: rawError.stack,\n        kind: rawError.type,\n        message: includeMessage ? rawError.message : undefined,\n        causes: rawError.causes,\n        fingerprint: rawError.fingerprint,\n        handling: rawError.handling,\n    };\n}\n//# sourceMappingURL=createErrorFieldFromRawError.js.map","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { clocksNow, computeRawError, computeStackTrace, combine, createContextManager, ErrorSource, monitored, sanitize, createHandlingStack, } from '@datadog/browser-core';\nimport { isAuthorized, StatusType } from './logger/isAuthorized';\nimport { createErrorFieldFromRawError } from './createErrorFieldFromRawError';\nexport var HandlerType = {\n    console: 'console',\n    http: 'http',\n    silent: 'silent',\n};\nexport var STATUSES = Object.keys(StatusType);\n// note: it is safe to merge declarations as long as the methods are actually defined on the prototype\n// eslint-disable-next-line @typescript-eslint/no-unsafe-declaration-merging, no-restricted-syntax\nvar Logger = /** @class */ (function () {\n    function Logger(handleLogStrategy, customerDataTracker, name, handlerType, level, loggerContext) {\n        if (handlerType === void 0) { handlerType = HandlerType.http; }\n        if (level === void 0) { level = StatusType.debug; }\n        if (loggerContext === void 0) { loggerContext = {}; }\n        this.handleLogStrategy = handleLogStrategy;\n        this.handlerType = handlerType;\n        this.level = level;\n        this.contextManager = createContextManager(customerDataTracker);\n        this.contextManager.setContext(loggerContext);\n        if (name) {\n            this.contextManager.setContextProperty('logger', { name: name });\n        }\n    }\n    Logger.prototype.logImplementation = function (message, messageContext, status, error, handlingStack) {\n        if (status === void 0) { status = StatusType.info; }\n        var sanitizedMessageContext = sanitize(messageContext);\n        var context;\n        if (error !== undefined && error !== null) {\n            var rawError = computeRawError({\n                stackTrace: error instanceof Error ? computeStackTrace(error) : undefined,\n                originalError: error,\n                nonErrorPrefix: \"Provided\" /* NonErrorPrefix.PROVIDED */,\n                source: ErrorSource.LOGGER,\n                handling: \"handled\" /* ErrorHandling.HANDLED */,\n                startClocks: clocksNow(),\n            });\n            context = combine({\n                error: createErrorFieldFromRawError(rawError, { includeMessage: true }),\n            }, sanitizedMessageContext);\n        }\n        else {\n            context = sanitizedMessageContext;\n        }\n        this.handleLogStrategy({\n            message: sanitize(message),\n            context: context,\n            status: status,\n        }, this, handlingStack);\n    };\n    Logger.prototype.log = function (message, messageContext, status, error) {\n        if (status === void 0) { status = StatusType.info; }\n        var handlingStack;\n        if (isAuthorized(status, HandlerType.http, this)) {\n            handlingStack = createHandlingStack();\n        }\n        this.logImplementation(message, messageContext, status, error, handlingStack);\n    };\n    Logger.prototype.setContext = function (context) {\n        this.contextManager.setContext(context);\n    };\n    Logger.prototype.getContext = function () {\n        return this.contextManager.getContext();\n    };\n    Logger.prototype.setContextProperty = function (key, value) {\n        this.contextManager.setContextProperty(key, value);\n    };\n    Logger.prototype.removeContextProperty = function (key) {\n        this.contextManager.removeContextProperty(key);\n    };\n    Logger.prototype.clearContext = function () {\n        this.contextManager.clearContext();\n    };\n    Logger.prototype.setHandler = function (handler) {\n        this.handlerType = handler;\n    };\n    Logger.prototype.getHandler = function () {\n        return this.handlerType;\n    };\n    Logger.prototype.setLevel = function (level) {\n        this.level = level;\n    };\n    Logger.prototype.getLevel = function () {\n        return this.level;\n    };\n    __decorate([\n        monitored\n    ], Logger.prototype, \"logImplementation\", null);\n    return Logger;\n}());\nexport { Logger };\n/* eslint-disable local-rules/disallow-side-effects */\nLogger.prototype.ok = createLoggerMethod(StatusType.ok);\nLogger.prototype.debug = createLoggerMethod(StatusType.debug);\nLogger.prototype.info = createLoggerMethod(StatusType.info);\nLogger.prototype.notice = createLoggerMethod(StatusType.notice);\nLogger.prototype.warn = createLoggerMethod(StatusType.warn);\nLogger.prototype.error = createLoggerMethod(StatusType.error);\nLogger.prototype.critical = createLoggerMethod(StatusType.critical);\nLogger.prototype.alert = createLoggerMethod(StatusType.alert);\nLogger.prototype.emerg = createLoggerMethod(StatusType.emerg);\nfunction createLoggerMethod(status) {\n    return function (message, messageContext, error) {\n        var handlingStack;\n        if (isAuthorized(status, HandlerType.http, this)) {\n            handlingStack = createHandlingStack();\n        }\n        this.logImplementation(message, messageContext, status, error, handlingStack);\n    };\n}\n//# sourceMappingURL=logger.js.map","import { endsWith, includes } from '../tools/utils/polyfills';\nimport { getGlobalObject } from '../tools/getGlobalObject';\nexport function getEventBridge() {\n    var eventBridgeGlobal = getEventBridgeGlobal();\n    if (!eventBridgeGlobal) {\n        return;\n    }\n    return {\n        getCapabilities: function () {\n            var _a;\n            return JSON.parse(((_a = eventBridgeGlobal.getCapabilities) === null || _a === void 0 ? void 0 : _a.call(eventBridgeGlobal)) || '[]');\n        },\n        getPrivacyLevel: function () {\n            var _a;\n            return (_a = eventBridgeGlobal.getPrivacyLevel) === null || _a === void 0 ? void 0 : _a.call(eventBridgeGlobal);\n        },\n        getAllowedWebViewHosts: function () {\n            return JSON.parse(eventBridgeGlobal.getAllowedWebViewHosts());\n        },\n        send: function (eventType, event, viewId) {\n            var view = viewId ? { id: viewId } : undefined;\n            eventBridgeGlobal.send(JSON.stringify({ eventType: eventType, event: event, view: view }));\n        },\n    };\n}\nexport function bridgeSupports(capability) {\n    var bridge = getEventBridge();\n    return !!bridge && includes(bridge.getCapabilities(), capability);\n}\nexport function canUseEventBridge(currentHost) {\n    var _a;\n    if (currentHost === void 0) { currentHost = (_a = getGlobalObject().location) === null || _a === void 0 ? void 0 : _a.hostname; }\n    var bridge = getEventBridge();\n    return (!!bridge &&\n        bridge\n            .getAllowedWebViewHosts()\n            .some(function (allowedHost) { return currentHost === allowedHost || endsWith(currentHost, \".\".concat(allowedHost)); }));\n}\nfunction getEventBridgeGlobal() {\n    return getGlobalObject().DatadogEventBridge;\n}\n//# sourceMappingURL=eventBridge.js.map","import { setTimeout } from './timer';\nimport { callMonitored } from './monitor';\nimport { noop } from './utils/functionUtils';\nimport { arrayFrom, startsWith } from './utils/polyfills';\nimport { createHandlingStack } from './stackTrace/handlingStack';\n/**\n * Instruments a method on a object, calling the given callback before the original method is\n * invoked. The callback receives an object with information about the method call.\n *\n * This function makes sure that we are \"good citizens\" regarding third party instrumentations: when\n * removing the instrumentation, the original method is usually restored, but if a third party\n * instrumentation was set after ours, we keep it in place and just replace our instrumentation with\n * a noop.\n *\n * Note: it is generally better to instrument methods that are \"owned\" by the object instead of ones\n * that are inherited from the prototype chain. Example:\n * * do:    `instrumentMethod(Array.prototype, 'push', ...)`\n * * don't: `instrumentMethod([], 'push', ...)`\n *\n * This method is also used to set event handler properties (ex: window.onerror = ...), as it has\n * the same requirements as instrumenting a method:\n * * if the event handler is already set by a third party, we need to call it and not just blindly\n * override it.\n * * if the event handler is set by a third party after us, we need to keep it in place when\n * removing ours.\n *\n * @example\n *\n *  instrumentMethod(window, 'fetch', ({ target, parameters, onPostCall }) => {\n *    console.log('Before calling fetch on', target, 'with parameters', parameters)\n *\n *    onPostCall((result) => {\n *      console.log('After fetch calling on', target, 'with parameters', parameters, 'and result', result)\n *    })\n *  })\n */\nexport function instrumentMethod(targetPrototype, method, onPreCall, _a) {\n    var _b = _a === void 0 ? {} : _a, computeHandlingStack = _b.computeHandlingStack;\n    var original = targetPrototype[method];\n    if (typeof original !== 'function') {\n        if (method in targetPrototype && startsWith(method, 'on')) {\n            original = noop;\n        }\n        else {\n            return { stop: noop };\n        }\n    }\n    var stopped = false;\n    var instrumentation = function () {\n        if (stopped) {\n            // eslint-disable-next-line @typescript-eslint/no-unsafe-return, @typescript-eslint/no-unsafe-call\n            return original.apply(this, arguments);\n        }\n        var parameters = arrayFrom(arguments);\n        var postCallCallback;\n        callMonitored(onPreCall, null, [\n            {\n                target: this,\n                parameters: parameters,\n                onPostCall: function (callback) {\n                    postCallCallback = callback;\n                },\n                handlingStack: computeHandlingStack ? createHandlingStack() : undefined,\n            },\n        ]);\n        // eslint-disable-next-line @typescript-eslint/no-unsafe-call\n        var result = original.apply(this, parameters);\n        if (postCallCallback) {\n            callMonitored(postCallCallback, null, [result]);\n        }\n        // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n        return result;\n    };\n    targetPrototype[method] = instrumentation;\n    return {\n        stop: function () {\n            stopped = true;\n            // If the instrumentation has been removed by a third party, keep the last one\n            if (targetPrototype[method] === instrumentation) {\n                targetPrototype[method] = original;\n            }\n        },\n    };\n}\nexport function instrumentSetter(targetPrototype, property, after) {\n    var originalDescriptor = Object.getOwnPropertyDescriptor(targetPrototype, property);\n    if (!originalDescriptor || !originalDescriptor.set || !originalDescriptor.configurable) {\n        return { stop: noop };\n    }\n    var stoppedInstrumentation = noop;\n    var instrumentation = function (target, value) {\n        // put hooked setter into event loop to avoid of set latency\n        setTimeout(function () {\n            if (instrumentation !== stoppedInstrumentation) {\n                after(target, value);\n            }\n        }, 0);\n    };\n    var instrumentationWrapper = function (value) {\n        originalDescriptor.set.call(this, value);\n        instrumentation(this, value);\n    };\n    Object.defineProperty(targetPrototype, property, {\n        set: instrumentationWrapper,\n    });\n    return {\n        stop: function () {\n            var _a;\n            if (((_a = Object.getOwnPropertyDescriptor(targetPrototype, property)) === null || _a === void 0 ? void 0 : _a.set) === instrumentationWrapper) {\n                Object.defineProperty(targetPrototype, property, originalDescriptor);\n            }\n            instrumentation = stoppedInstrumentation;\n        },\n    };\n}\n//# sourceMappingURL=instrumentMethod.js.map","import { jsonStringify } from '../serialisation/jsonStringify';\nexport function normalizeUrl(url) {\n    return buildUrl(url, location.href).href;\n}\nexport function isValidUrl(url) {\n    try {\n        return !!buildUrl(url);\n    }\n    catch (_a) {\n        return false;\n    }\n}\nexport function getPathName(url) {\n    var pathname = buildUrl(url).pathname;\n    return pathname[0] === '/' ? pathname : \"/\".concat(pathname);\n}\nexport function buildUrl(url, base) {\n    var supportedURL = getSupportedUrl();\n    if (supportedURL) {\n        try {\n            return base !== undefined ? new supportedURL(url, base) : new supportedURL(url);\n        }\n        catch (error) {\n            throw new Error(\"Failed to construct URL: \".concat(String(error), \" \").concat(jsonStringify({ url: url, base: base })));\n        }\n    }\n    if (base === undefined && !/:/.test(url)) {\n        throw new Error(\"Invalid URL: '\".concat(url, \"'\"));\n    }\n    var doc = document;\n    var anchorElement = doc.createElement('a');\n    if (base !== undefined) {\n        doc = document.implementation.createHTMLDocument('');\n        var baseElement = doc.createElement('base');\n        baseElement.href = base;\n        doc.head.appendChild(baseElement);\n        doc.body.appendChild(anchorElement);\n    }\n    anchorElement.href = url;\n    return anchorElement;\n}\nvar originalURL = URL;\nvar isURLSupported;\nfunction getSupportedUrl() {\n    if (isURLSupported === undefined) {\n        try {\n            var url = new originalURL('http://test/path');\n            isURLSupported = url.href === 'http://test/path';\n        }\n        catch (_a) {\n            isURLSupported = false;\n        }\n    }\n    return isURLSupported ? originalURL : undefined;\n}\n//# sourceMappingURL=urlPolyfill.js.map","import { instrumentMethod } from '../tools/instrumentMethod';\nimport { monitor } from '../tools/monitor';\nimport { Observable } from '../tools/observable';\nimport { assign } from '../tools/utils/polyfills';\nimport { clocksNow } from '../tools/utils/timeUtils';\nimport { normalizeUrl } from '../tools/utils/urlPolyfill';\nvar fetchObservable;\nexport function initFetchObservable() {\n    if (!fetchObservable) {\n        fetchObservable = createFetchObservable();\n    }\n    return fetchObservable;\n}\nexport function resetFetchObservable() {\n    fetchObservable = undefined;\n}\nfunction createFetchObservable() {\n    return new Observable(function (observable) {\n        if (!window.fetch) {\n            return;\n        }\n        var stop = instrumentMethod(window, 'fetch', function (call) { return beforeSend(call, observable); }, {\n            computeHandlingStack: true,\n        }).stop;\n        return stop;\n    });\n}\nfunction beforeSend(_a, observable) {\n    var parameters = _a.parameters, onPostCall = _a.onPostCall, handlingStack = _a.handlingStack;\n    var input = parameters[0], init = parameters[1];\n    var methodFromParams = init && init.method;\n    if (methodFromParams === undefined && input instanceof Request) {\n        methodFromParams = input.method;\n    }\n    var method = methodFromParams !== undefined ? String(methodFromParams).toUpperCase() : 'GET';\n    var url = input instanceof Request ? input.url : normalizeUrl(String(input));\n    var startClocks = clocksNow();\n    var context = {\n        state: 'start',\n        init: init,\n        input: input,\n        method: method,\n        startClocks: startClocks,\n        url: url,\n        handlingStack: handlingStack,\n    };\n    observable.notify(context);\n    // Those properties can be changed by observable subscribers\n    parameters[0] = context.input;\n    parameters[1] = context.init;\n    onPostCall(function (responsePromise) { return afterSend(observable, responsePromise, context); });\n}\nfunction afterSend(observable, responsePromise, startContext) {\n    var context = startContext;\n    function reportFetch(partialContext) {\n        context.state = 'resolve';\n        assign(context, partialContext);\n        observable.notify(context);\n    }\n    responsePromise.then(monitor(function (response) {\n        reportFetch({\n            response: response,\n            responseType: response.type,\n            status: response.status,\n            isAborted: false,\n        });\n    }), monitor(function (error) {\n        var _a, _b;\n        reportFetch({\n            status: 0,\n            isAborted: ((_b = (_a = context.init) === null || _a === void 0 ? void 0 : _a.signal) === null || _b === void 0 ? void 0 : _b.aborted) || (error instanceof DOMException && error.code === DOMException.ABORT_ERR),\n            error: error,\n        });\n    }));\n}\n//# sourceMappingURL=fetchObservable.js.map","/**\n * UUID v4\n * from https://gist.github.com/jed/982883\n */\nexport function generateUUID(placeholder) {\n    return placeholder\n        ? // eslint-disable-next-line  no-bitwise\n            (parseInt(placeholder, 10) ^ ((Math.random() * 16) >> (parseInt(placeholder, 10) / 4))).toString(16)\n        : \"\".concat(1e7, \"-\").concat(1e3, \"-\").concat(4e3, \"-\").concat(8e3, \"-\").concat(1e11).replace(/[018]/g, generateUUID);\n}\nvar COMMA_SEPARATED_KEY_VALUE = /([\\w-]+)\\s*=\\s*([^;]+)/g;\nexport function findCommaSeparatedValue(rawString, name) {\n    COMMA_SEPARATED_KEY_VALUE.lastIndex = 0;\n    // eslint-disable-next-line no-constant-condition\n    while (true) {\n        var match = COMMA_SEPARATED_KEY_VALUE.exec(rawString);\n        if (match) {\n            if (match[1] === name) {\n                return match[2];\n            }\n        }\n        else {\n            break;\n        }\n    }\n}\nexport function findCommaSeparatedValues(rawString) {\n    var result = new Map();\n    COMMA_SEPARATED_KEY_VALUE.lastIndex = 0;\n    // eslint-disable-next-line no-constant-condition\n    while (true) {\n        var match = COMMA_SEPARATED_KEY_VALUE.exec(rawString);\n        if (match) {\n            result.set(match[1], match[2]);\n        }\n        else {\n            break;\n        }\n    }\n    return result;\n}\nexport function safeTruncate(candidate, length, suffix) {\n    if (suffix === void 0) { suffix = ''; }\n    var lastChar = candidate.charCodeAt(length - 1);\n    var isLastCharSurrogatePair = lastChar >= 0xd800 && lastChar <= 0xdbff;\n    var correctedLength = isLastCharSurrogatePair ? length + 1 : length;\n    if (candidate.length <= correctedLength) {\n        return candidate;\n    }\n    return \"\".concat(candidate.slice(0, correctedLength)).concat(suffix);\n}\n//# sourceMappingURL=stringUtils.js.map","export function isIE() {\n    return detectBrowserCached() === 0 /* Browser.IE */;\n}\nexport function isChromium() {\n    return detectBrowserCached() === 1 /* Browser.CHROMIUM */;\n}\nexport function isSafari() {\n    return detectBrowserCached() === 2 /* Browser.SAFARI */;\n}\nvar browserCache;\nfunction detectBrowserCached() {\n    return browserCache !== null && browserCache !== void 0 ? browserCache : (browserCache = detectBrowser());\n}\n// Exported only for tests\nexport function detectBrowser(browserWindow) {\n    var _a;\n    if (browserWindow === void 0) { browserWindow = window; }\n    var userAgent = browserWindow.navigator.userAgent;\n    if (browserWindow.chrome || /HeadlessChrome/.test(userAgent)) {\n        return 1 /* Browser.CHROMIUM */;\n    }\n    if (\n    // navigator.vendor is deprecated, but it is the most resilient way we found to detect\n    // \"Apple maintained browsers\" (AKA Safari). If one day it gets removed, we still have the\n    // useragent test as a semi-working fallback.\n    ((_a = browserWindow.navigator.vendor) === null || _a === void 0 ? void 0 : _a.indexOf('Apple')) === 0 ||\n        (/safari/i.test(userAgent) && !/chrome|android/i.test(userAgent))) {\n        return 2 /* Browser.SAFARI */;\n    }\n    if (browserWindow.document.documentMode) {\n        return 0 /* Browser.IE */;\n    }\n    return 3 /* Browser.OTHER */;\n}\n//# sourceMappingURL=browserDetection.js.map","import { display } from '../tools/display';\nimport { ONE_MINUTE, ONE_SECOND } from '../tools/utils/timeUtils';\nimport { findCommaSeparatedValue, findCommaSeparatedValues, generateUUID } from '../tools/utils/stringUtils';\nexport function setCookie(name, value, expireDelay, options) {\n    var date = new Date();\n    date.setTime(date.getTime() + expireDelay);\n    var expires = \"expires=\".concat(date.toUTCString());\n    var sameSite = options && options.crossSite ? 'none' : 'strict';\n    var domain = options && options.domain ? \";domain=\".concat(options.domain) : '';\n    var secure = options && options.secure ? ';secure' : '';\n    var partitioned = options && options.partitioned ? ';partitioned' : '';\n    document.cookie = \"\".concat(name, \"=\").concat(value, \";\").concat(expires, \";path=/;samesite=\").concat(sameSite).concat(domain).concat(secure).concat(partitioned);\n}\nexport function getCookie(name) {\n    return findCommaSeparatedValue(document.cookie, name);\n}\nvar initCookieParsed;\n/**\n * Returns a cached value of the cookie. Use this during SDK initialization (and whenever possible)\n * to avoid accessing document.cookie multiple times.\n */\nexport function getInitCookie(name) {\n    if (!initCookieParsed) {\n        initCookieParsed = findCommaSeparatedValues(document.cookie);\n    }\n    return initCookieParsed.get(name);\n}\nexport function resetInitCookies() {\n    initCookieParsed = undefined;\n}\nexport function deleteCookie(name, options) {\n    setCookie(name, '', 0, options);\n}\nexport function areCookiesAuthorized(options) {\n    if (document.cookie === undefined || document.cookie === null) {\n        return false;\n    }\n    try {\n        // Use a unique cookie name to avoid issues when the SDK is initialized multiple times during\n        // the test cookie lifetime\n        var testCookieName = \"dd_cookie_test_\".concat(generateUUID());\n        var testCookieValue = 'test';\n        setCookie(testCookieName, testCookieValue, ONE_MINUTE, options);\n        var isCookieCorrectlySet = getCookie(testCookieName) === testCookieValue;\n        deleteCookie(testCookieName, options);\n        return isCookieCorrectlySet;\n    }\n    catch (error) {\n        display.error(error);\n        return false;\n    }\n}\n/**\n * No API to retrieve it, number of levels for subdomain and suffix are unknown\n * strategy: find the minimal domain on which cookies are allowed to be set\n * https://web.dev/same-site-same-origin/#site\n */\nvar getCurrentSiteCache;\nexport function getCurrentSite() {\n    if (getCurrentSiteCache === undefined) {\n        // Use a unique cookie name to avoid issues when the SDK is initialized multiple times during\n        // the test cookie lifetime\n        var testCookieName = \"dd_site_test_\".concat(generateUUID());\n        var testCookieValue = 'test';\n        var domainLevels = window.location.hostname.split('.');\n        var candidateDomain = domainLevels.pop();\n        while (domainLevels.length && !getCookie(testCookieName)) {\n            candidateDomain = \"\".concat(domainLevels.pop(), \".\").concat(candidateDomain);\n            setCookie(testCookieName, testCookieValue, ONE_SECOND, { domain: candidateDomain });\n        }\n        deleteCookie(testCookieName, { domain: candidateDomain });\n        getCurrentSiteCache = candidateDomain;\n    }\n    return getCurrentSiteCache;\n}\n//# sourceMappingURL=cookie.js.map","export var SESSION_STORE_KEY = '_dd_s';\n//# sourceMappingURL=sessionStoreStrategy.js.map","import { ONE_HOUR, ONE_MINUTE } from '../../tools/utils/timeUtils';\nexport var SESSION_TIME_OUT_DELAY = 4 * ONE_HOUR;\nexport var SESSION_EXPIRATION_DELAY = 15 * ONE_MINUTE;\n//# sourceMappingURL=sessionConstants.js.map","import { isEmptyObject } from '../../tools/utils/objectUtils';\nimport { objectEntries } from '../../tools/utils/polyfills';\nimport { dateNow } from '../../tools/utils/timeUtils';\nimport { SESSION_EXPIRATION_DELAY, SESSION_TIME_OUT_DELAY } from './sessionConstants';\nvar SESSION_ENTRY_REGEXP = /^([a-zA-Z]+)=([a-z0-9-]+)$/;\nvar SESSION_ENTRY_SEPARATOR = '&';\nexport var EXPIRED = '1';\nexport function getExpiredSessionState() {\n    return {\n        isExpired: EXPIRED,\n    };\n}\nexport function isSessionInNotStartedState(session) {\n    return isEmptyObject(session);\n}\nexport function isSessionStarted(session) {\n    return !isSessionInNotStartedState(session);\n}\nexport function isSessionInExpiredState(session) {\n    return session.isExpired !== undefined || !isActiveSession(session);\n}\n// An active session is a session in either `Tracked` or `NotTracked` state\nfunction isActiveSession(sessionState) {\n    // created and expire can be undefined for versions which was not storing them\n    // these checks could be removed when older versions will not be available/live anymore\n    return ((sessionState.created === undefined || dateNow() - Number(sessionState.created) < SESSION_TIME_OUT_DELAY) &&\n        (sessionState.expire === undefined || dateNow() < Number(sessionState.expire)));\n}\nexport function expandSessionState(session) {\n    session.expire = String(dateNow() + SESSION_EXPIRATION_DELAY);\n}\nexport function toSessionString(session) {\n    return objectEntries(session)\n        .map(function (_a) {\n        var key = _a[0], value = _a[1];\n        return \"\".concat(key, \"=\").concat(value);\n    })\n        .join(SESSION_ENTRY_SEPARATOR);\n}\nexport function toSessionState(sessionString) {\n    var session = {};\n    if (isValidSessionString(sessionString)) {\n        sessionString.split(SESSION_ENTRY_SEPARATOR).forEach(function (entry) {\n            var matches = SESSION_ENTRY_REGEXP.exec(entry);\n            if (matches !== null) {\n                var key = matches[1], value = matches[2];\n                session[key] = value;\n            }\n        });\n    }\n    return session;\n}\nfunction isValidSessionString(sessionString) {\n    return (!!sessionString &&\n        (sessionString.indexOf(SESSION_ENTRY_SEPARATOR) !== -1 || SESSION_ENTRY_REGEXP.test(sessionString)));\n}\n//# sourceMappingURL=sessionState.js.map","import { getInitCookie } from '../../browser/cookie';\nimport { SESSION_STORE_KEY } from './storeStrategies/sessionStoreStrategy';\nimport { expandSessionState, isSessionStarted } from './sessionState';\nexport var OLD_SESSION_COOKIE_NAME = '_dd';\nexport var OLD_RUM_COOKIE_NAME = '_dd_r';\nexport var OLD_LOGS_COOKIE_NAME = '_dd_l';\n// duplicate values to avoid dependency issues\nexport var RUM_SESSION_KEY = 'rum';\nexport var LOGS_SESSION_KEY = 'logs';\n/**\n * This migration should remain in the codebase as long as older versions are available/live\n * to allow older sdk versions to be upgraded to newer versions without compatibility issues.\n */\nexport function tryOldCookiesMigration(cookieStoreStrategy) {\n    var sessionString = getInitCookie(SESSION_STORE_KEY);\n    if (!sessionString) {\n        var oldSessionId = getInitCookie(OLD_SESSION_COOKIE_NAME);\n        var oldRumType = getInitCookie(OLD_RUM_COOKIE_NAME);\n        var oldLogsType = getInitCookie(OLD_LOGS_COOKIE_NAME);\n        var session = {};\n        if (oldSessionId) {\n            session.id = oldSessionId;\n        }\n        if (oldLogsType && /^[01]$/.test(oldLogsType)) {\n            session[LOGS_SESSION_KEY] = oldLogsType;\n        }\n        if (oldRumType && /^[012]$/.test(oldRumType)) {\n            session[RUM_SESSION_KEY] = oldRumType;\n        }\n        if (isSessionStarted(session)) {\n            expandSessionState(session);\n            cookieStoreStrategy.persistSession(session);\n        }\n    }\n}\n//# sourceMappingURL=oldCookiesMigration.js.map","import { isChromium } from '../../../tools/utils/browserDetection';\nimport { getCurrentSite, areCookiesAuthorized, getCookie, setCookie } from '../../../browser/cookie';\nimport { tryOldCookiesMigration } from '../oldCookiesMigration';\nimport { SESSION_EXPIRATION_DELAY, SESSION_TIME_OUT_DELAY } from '../sessionConstants';\nimport { toSessionString, toSessionState, getExpiredSessionState } from '../sessionState';\nimport { SESSION_STORE_KEY } from './sessionStoreStrategy';\nexport function selectCookieStrategy(initConfiguration) {\n    var cookieOptions = buildCookieOptions(initConfiguration);\n    return areCookiesAuthorized(cookieOptions) ? { type: 'Cookie', cookieOptions: cookieOptions } : undefined;\n}\nexport function initCookieStrategy(cookieOptions) {\n    var cookieStore = {\n        /**\n         * Lock strategy allows mitigating issues due to concurrent access to cookie.\n         * This issue concerns only chromium browsers and enabling this on firefox increases cookie write failures.\n         */\n        isLockEnabled: isChromium(),\n        persistSession: persistSessionCookie(cookieOptions),\n        retrieveSession: retrieveSessionCookie,\n        expireSession: function () { return expireSessionCookie(cookieOptions); },\n    };\n    tryOldCookiesMigration(cookieStore);\n    return cookieStore;\n}\nfunction persistSessionCookie(options) {\n    return function (session) {\n        setCookie(SESSION_STORE_KEY, toSessionString(session), SESSION_EXPIRATION_DELAY, options);\n    };\n}\nfunction expireSessionCookie(options) {\n    setCookie(SESSION_STORE_KEY, toSessionString(getExpiredSessionState()), SESSION_TIME_OUT_DELAY, options);\n}\nfunction retrieveSessionCookie() {\n    var sessionString = getCookie(SESSION_STORE_KEY);\n    return toSessionState(sessionString);\n}\nexport function buildCookieOptions(initConfiguration) {\n    var cookieOptions = {};\n    cookieOptions.secure =\n        !!initConfiguration.useSecureSessionCookie ||\n            !!initConfiguration.usePartitionedCrossSiteSessionCookie ||\n            !!initConfiguration.useCrossSiteSessionCookie;\n    cookieOptions.crossSite =\n        !!initConfiguration.usePartitionedCrossSiteSessionCookie || !!initConfiguration.useCrossSiteSessionCookie;\n    cookieOptions.partitioned = !!initConfiguration.usePartitionedCrossSiteSessionCookie;\n    if (initConfiguration.trackSessionAcrossSubdomains) {\n        cookieOptions.domain = getCurrentSite();\n    }\n    return cookieOptions;\n}\n//# sourceMappingURL=sessionInCookie.js.map","import { generateUUID } from '../../../tools/utils/stringUtils';\nimport { toSessionString, toSessionState, getExpiredSessionState } from '../sessionState';\nimport { SESSION_STORE_KEY } from './sessionStoreStrategy';\nvar LOCAL_STORAGE_TEST_KEY = '_dd_test_';\nexport function selectLocalStorageStrategy() {\n    try {\n        var id = generateUUID();\n        var testKey = \"\".concat(LOCAL_STORAGE_TEST_KEY).concat(id);\n        localStorage.setItem(testKey, id);\n        var retrievedId = localStorage.getItem(testKey);\n        localStorage.removeItem(testKey);\n        return id === retrievedId ? { type: 'LocalStorage' } : undefined;\n    }\n    catch (e) {\n        return undefined;\n    }\n}\nexport function initLocalStorageStrategy() {\n    return {\n        isLockEnabled: false,\n        persistSession: persistInLocalStorage,\n        retrieveSession: retrieveSessionFromLocalStorage,\n        expireSession: expireSessionFromLocalStorage,\n    };\n}\nfunction persistInLocalStorage(sessionState) {\n    localStorage.setItem(SESSION_STORE_KEY, toSessionString(sessionState));\n}\nfunction retrieveSessionFromLocalStorage() {\n    var sessionString = localStorage.getItem(SESSION_STORE_KEY);\n    return toSessionState(sessionString);\n}\nfunction expireSessionFromLocalStorage() {\n    persistInLocalStorage(getExpiredSessionState());\n}\n//# sourceMappingURL=sessionInLocalStorage.js.map","import { setTimeout } from '../../tools/timer';\nimport { generateUUID } from '../../tools/utils/stringUtils';\nimport { assign } from '../../tools/utils/polyfills';\nimport { expandSessionState, isSessionInExpiredState } from './sessionState';\nexport var LOCK_RETRY_DELAY = 10;\nexport var LOCK_MAX_TRIES = 100;\nvar bufferedOperations = [];\nvar ongoingOperations;\nexport function processSessionStoreOperations(operations, sessionStoreStrategy, numberOfRetries) {\n    var _a;\n    if (numberOfRetries === void 0) { numberOfRetries = 0; }\n    var isLockEnabled = sessionStoreStrategy.isLockEnabled, persistSession = sessionStoreStrategy.persistSession, expireSession = sessionStoreStrategy.expireSession;\n    var persistWithLock = function (session) { return persistSession(assign({}, session, { lock: currentLock })); };\n    var retrieveStore = function () {\n        var session = sessionStoreStrategy.retrieveSession();\n        var lock = session.lock;\n        if (session.lock) {\n            delete session.lock;\n        }\n        return {\n            session: session,\n            lock: lock,\n        };\n    };\n    if (!ongoingOperations) {\n        ongoingOperations = operations;\n    }\n    if (operations !== ongoingOperations) {\n        bufferedOperations.push(operations);\n        return;\n    }\n    if (isLockEnabled && numberOfRetries >= LOCK_MAX_TRIES) {\n        next(sessionStoreStrategy);\n        return;\n    }\n    var currentLock;\n    var currentStore = retrieveStore();\n    if (isLockEnabled) {\n        // if someone has lock, retry later\n        if (currentStore.lock) {\n            retryLater(operations, sessionStoreStrategy, numberOfRetries);\n            return;\n        }\n        // acquire lock\n        currentLock = generateUUID();\n        persistWithLock(currentStore.session);\n        // if lock is not acquired, retry later\n        currentStore = retrieveStore();\n        if (currentStore.lock !== currentLock) {\n            retryLater(operations, sessionStoreStrategy, numberOfRetries);\n            return;\n        }\n    }\n    var processedSession = operations.process(currentStore.session);\n    if (isLockEnabled) {\n        // if lock corrupted after process, retry later\n        currentStore = retrieveStore();\n        if (currentStore.lock !== currentLock) {\n            retryLater(operations, sessionStoreStrategy, numberOfRetries);\n            return;\n        }\n    }\n    if (processedSession) {\n        if (isSessionInExpiredState(processedSession)) {\n            expireSession();\n        }\n        else {\n            expandSessionState(processedSession);\n            isLockEnabled ? persistWithLock(processedSession) : persistSession(processedSession);\n        }\n    }\n    if (isLockEnabled) {\n        // correctly handle lock around expiration would require to handle this case properly at several levels\n        // since we don't have evidence of lock issues around expiration, let's just not do the corruption check for it\n        if (!(processedSession && isSessionInExpiredState(processedSession))) {\n            // if lock corrupted after persist, retry later\n            currentStore = retrieveStore();\n            if (currentStore.lock !== currentLock) {\n                retryLater(operations, sessionStoreStrategy, numberOfRetries);\n                return;\n            }\n            persistSession(currentStore.session);\n            processedSession = currentStore.session;\n        }\n    }\n    // call after even if session is not persisted in order to perform operations on\n    // up-to-date session state value => the value could have been modified by another tab\n    (_a = operations.after) === null || _a === void 0 ? void 0 : _a.call(operations, processedSession || currentStore.session);\n    next(sessionStoreStrategy);\n}\nfunction retryLater(operations, sessionStore, currentNumberOfRetries) {\n    setTimeout(function () {\n        processSessionStoreOperations(operations, sessionStore, currentNumberOfRetries + 1);\n    }, LOCK_RETRY_DELAY);\n}\nfunction next(sessionStore) {\n    ongoingOperations = undefined;\n    var nextOperations = bufferedOperations.shift();\n    if (nextOperations) {\n        processSessionStoreOperations(nextOperations, sessionStore);\n    }\n}\n//# sourceMappingURL=sessionStoreOperations.js.map","import { clearInterval, setInterval } from '../../tools/timer';\nimport { Observable } from '../../tools/observable';\nimport { ONE_SECOND, dateNow } from '../../tools/utils/timeUtils';\nimport { throttle } from '../../tools/utils/functionUtils';\nimport { generateUUID } from '../../tools/utils/stringUtils';\nimport { assign } from '../../tools/utils/polyfills';\nimport { selectCookieStrategy, initCookieStrategy } from './storeStrategies/sessionInCookie';\nimport { getExpiredSessionState, isSessionInExpiredState, isSessionInNotStartedState, isSessionStarted, } from './sessionState';\nimport { initLocalStorageStrategy, selectLocalStorageStrategy } from './storeStrategies/sessionInLocalStorage';\nimport { processSessionStoreOperations } from './sessionStoreOperations';\n/**\n * Every second, the storage will be polled to check for any change that can occur\n * to the session state in another browser tab, or another window.\n * This value has been determined from our previous cookie-only implementation.\n */\nexport var STORAGE_POLL_DELAY = ONE_SECOND;\n/**\n * Checks if cookies are available as the preferred storage\n * Else, checks if LocalStorage is allowed and available\n */\nexport function selectSessionStoreStrategyType(initConfiguration) {\n    var sessionStoreStrategyType = selectCookieStrategy(initConfiguration);\n    if (!sessionStoreStrategyType && initConfiguration.allowFallbackToLocalStorage) {\n        sessionStoreStrategyType = selectLocalStorageStrategy();\n    }\n    return sessionStoreStrategyType;\n}\n/**\n * Different session concepts:\n * - tracked, the session has an id and is updated along the user navigation\n * - not tracked, the session does not have an id but it is updated along the user navigation\n * - inactive, no session in store or session expired, waiting for a renew session\n */\nexport function startSessionStore(sessionStoreStrategyType, productKey, computeSessionState) {\n    var renewObservable = new Observable();\n    var expireObservable = new Observable();\n    var sessionStateUpdateObservable = new Observable();\n    var sessionStoreStrategy = sessionStoreStrategyType.type === 'Cookie'\n        ? initCookieStrategy(sessionStoreStrategyType.cookieOptions)\n        : initLocalStorageStrategy();\n    var expireSession = sessionStoreStrategy.expireSession;\n    var watchSessionTimeoutId = setInterval(watchSession, STORAGE_POLL_DELAY);\n    var sessionCache;\n    startSession();\n    var _a = throttle(function () {\n        processSessionStoreOperations({\n            process: function (sessionState) {\n                if (isSessionInNotStartedState(sessionState)) {\n                    return;\n                }\n                var synchronizedSession = synchronizeSession(sessionState);\n                expandOrRenewSessionState(synchronizedSession);\n                return synchronizedSession;\n            },\n            after: function (sessionState) {\n                if (isSessionStarted(sessionState) && !hasSessionInCache()) {\n                    renewSessionInCache(sessionState);\n                }\n                sessionCache = sessionState;\n            },\n        }, sessionStoreStrategy);\n    }, STORAGE_POLL_DELAY), throttledExpandOrRenewSession = _a.throttled, cancelExpandOrRenewSession = _a.cancel;\n    function expandSession() {\n        processSessionStoreOperations({\n            process: function (sessionState) { return (hasSessionInCache() ? synchronizeSession(sessionState) : undefined); },\n        }, sessionStoreStrategy);\n    }\n    /**\n     * allows two behaviors:\n     * - if the session is active, synchronize the session cache without updating the session store\n     * - if the session is not active, clear the session store and expire the session cache\n     */\n    function watchSession() {\n        processSessionStoreOperations({\n            process: function (sessionState) { return (isSessionInExpiredState(sessionState) ? getExpiredSessionState() : undefined); },\n            after: synchronizeSession,\n        }, sessionStoreStrategy);\n    }\n    function synchronizeSession(sessionState) {\n        if (isSessionInExpiredState(sessionState)) {\n            sessionState = getExpiredSessionState();\n        }\n        if (hasSessionInCache()) {\n            if (isSessionInCacheOutdated(sessionState)) {\n                expireSessionInCache();\n            }\n            else {\n                sessionStateUpdateObservable.notify({ previousState: sessionCache, newState: sessionState });\n                sessionCache = sessionState;\n            }\n        }\n        return sessionState;\n    }\n    function startSession() {\n        processSessionStoreOperations({\n            process: function (sessionState) {\n                if (isSessionInNotStartedState(sessionState)) {\n                    return getExpiredSessionState();\n                }\n            },\n            after: function (sessionState) {\n                sessionCache = sessionState;\n            },\n        }, sessionStoreStrategy);\n    }\n    function expandOrRenewSessionState(sessionState) {\n        if (isSessionInNotStartedState(sessionState)) {\n            return false;\n        }\n        var _a = computeSessionState(sessionState[productKey]), trackingType = _a.trackingType, isTracked = _a.isTracked;\n        sessionState[productKey] = trackingType;\n        delete sessionState.isExpired;\n        if (isTracked && !sessionState.id) {\n            sessionState.id = generateUUID();\n            sessionState.created = String(dateNow());\n        }\n    }\n    function hasSessionInCache() {\n        return sessionCache[productKey] !== undefined;\n    }\n    function isSessionInCacheOutdated(sessionState) {\n        return sessionCache.id !== sessionState.id || sessionCache[productKey] !== sessionState[productKey];\n    }\n    function expireSessionInCache() {\n        sessionCache = getExpiredSessionState();\n        expireObservable.notify();\n    }\n    function renewSessionInCache(sessionState) {\n        sessionCache = sessionState;\n        renewObservable.notify();\n    }\n    function updateSessionState(partialSessionState) {\n        processSessionStoreOperations({\n            process: function (sessionState) { return assign({}, sessionState, partialSessionState); },\n            after: synchronizeSession,\n        }, sessionStoreStrategy);\n    }\n    return {\n        expandOrRenewSession: throttledExpandOrRenewSession,\n        expandSession: expandSession,\n        getSession: function () { return sessionCache; },\n        renewObservable: renewObservable,\n        expireObservable: expireObservable,\n        sessionStateUpdateObservable: sessionStateUpdateObservable,\n        restartSession: startSession,\n        expire: function () {\n            cancelExpandOrRenewSession();\n            expireSession();\n            synchronizeSession(getExpiredSessionState());\n        },\n        stop: function () {\n            clearInterval(watchSessionTimeoutId);\n        },\n        updateSessionState: updateSessionState,\n    };\n}\n//# sourceMappingURL=sessionStore.js.map","import { timeStampNow } from '../../tools/utils/timeUtils';\nimport { normalizeUrl } from '../../tools/utils/urlPolyfill';\nimport { generateUUID } from '../../tools/utils/stringUtils';\nimport { INTAKE_SITE_US1, INTAKE_SITE_FED_STAGING, PCI_INTAKE_HOST_US1 } from './intakeSites';\nexport function createEndpointBuilder(initConfiguration, trackType, configurationTags) {\n    var buildUrlWithParameters = createEndpointUrlWithParametersBuilder(initConfiguration, trackType);\n    return {\n        build: function (api, payload) {\n            var parameters = buildEndpointParameters(initConfiguration, trackType, configurationTags, api, payload);\n            return buildUrlWithParameters(parameters);\n        },\n        urlPrefix: buildUrlWithParameters(''),\n        trackType: trackType,\n    };\n}\n/**\n * Create a function used to build a full endpoint url from provided parameters. The goal of this\n * function is to pre-compute some parts of the URL to avoid re-computing everything on every\n * request, as only parameters are changing.\n */\nfunction createEndpointUrlWithParametersBuilder(initConfiguration, trackType) {\n    var path = \"/api/v2/\".concat(trackType);\n    var proxy = initConfiguration.proxy;\n    if (typeof proxy === 'string') {\n        var normalizedProxyUrl_1 = normalizeUrl(proxy);\n        return function (parameters) { return \"\".concat(normalizedProxyUrl_1, \"?ddforward=\").concat(encodeURIComponent(\"\".concat(path, \"?\").concat(parameters))); };\n    }\n    if (typeof proxy === 'function') {\n        return function (parameters) { return proxy({ path: path, parameters: parameters }); };\n    }\n    var host = buildEndpointHost(trackType, initConfiguration);\n    return function (parameters) { return \"https://\".concat(host).concat(path, \"?\").concat(parameters); };\n}\nfunction buildEndpointHost(trackType, initConfiguration) {\n    var _a = initConfiguration.site, site = _a === void 0 ? INTAKE_SITE_US1 : _a, internalAnalyticsSubdomain = initConfiguration.internalAnalyticsSubdomain;\n    if (trackType === 'logs' && initConfiguration.usePciIntake && site === INTAKE_SITE_US1) {\n        return PCI_INTAKE_HOST_US1;\n    }\n    if (internalAnalyticsSubdomain && site === INTAKE_SITE_US1) {\n        return \"\".concat(internalAnalyticsSubdomain, \".\").concat(INTAKE_SITE_US1);\n    }\n    if (site === INTAKE_SITE_FED_STAGING) {\n        return \"http-intake.logs.\".concat(site);\n    }\n    var domainParts = site.split('.');\n    var extension = domainParts.pop();\n    return \"browser-intake-\".concat(domainParts.join('-'), \".\").concat(extension);\n}\n/**\n * Build parameters to be used for an intake request. Parameters should be re-built for each\n * request, as they change randomly.\n */\nfunction buildEndpointParameters(_a, trackType, configurationTags, api, _b) {\n    var clientToken = _a.clientToken, internalAnalyticsSubdomain = _a.internalAnalyticsSubdomain;\n    var retry = _b.retry, encoding = _b.encoding;\n    var tags = [\"sdk_version:\".concat(\"5.27.0\"), \"api:\".concat(api)].concat(configurationTags);\n    if (retry) {\n        tags.push(\"retry_count:\".concat(retry.count), \"retry_after:\".concat(retry.lastFailureStatus));\n    }\n    var parameters = [\n        'ddsource=browser',\n        \"ddtags=\".concat(encodeURIComponent(tags.join(','))),\n        \"dd-api-key=\".concat(clientToken),\n        \"dd-evp-origin-version=\".concat(encodeURIComponent(\"5.27.0\")),\n        'dd-evp-origin=browser',\n        \"dd-request-id=\".concat(generateUUID()),\n    ];\n    if (encoding) {\n        parameters.push(\"dd-evp-encoding=\".concat(encoding));\n    }\n    if (trackType === 'rum') {\n        parameters.push(\"batch_time=\".concat(timeStampNow()));\n    }\n    if (internalAnalyticsSubdomain) {\n        parameters.reverse();\n    }\n    return parameters.join('&');\n}\n//# sourceMappingURL=endpointBuilder.js.map","import { DOCS_ORIGIN, MORE_DETAILS, display } from '../../tools/display';\nexport var TAG_SIZE_LIMIT = 200;\nexport function buildTags(configuration) {\n    var env = configuration.env, service = configuration.service, version = configuration.version, datacenter = configuration.datacenter;\n    var tags = [];\n    if (env) {\n        tags.push(buildTag('env', env));\n    }\n    if (service) {\n        tags.push(buildTag('service', service));\n    }\n    if (version) {\n        tags.push(buildTag('version', version));\n    }\n    if (datacenter) {\n        tags.push(buildTag('datacenter', datacenter));\n    }\n    return tags;\n}\nexport function buildTag(key, rawValue) {\n    // See https://docs.datadoghq.com/getting_started/tagging/#defining-tags for tags syntax. Note\n    // that the backend may not follow the exact same rules, so we only want to display an informal\n    // warning.\n    var valueSizeLimit = TAG_SIZE_LIMIT - key.length - 1;\n    if (rawValue.length > valueSizeLimit || hasForbiddenCharacters(rawValue)) {\n        display.warn(\"\".concat(key, \" value doesn't meet tag requirements and will be sanitized. \").concat(MORE_DETAILS, \" \").concat(DOCS_ORIGIN, \"/getting_started/tagging/#defining-tags\"));\n    }\n    // Let the backend do most of the sanitization, but still make sure multiple tags can't be crafted\n    // by forging a value containing commas.\n    var sanitizedValue = rawValue.replace(/,/g, '_');\n    return \"\".concat(key, \":\").concat(sanitizedValue);\n}\nfunction hasForbiddenCharacters(rawValue) {\n    // Unicode property escapes is not supported in all browsers, so we use a try/catch.\n    // Todo: Remove the try/catch when dropping IE11.\n    if (!supportUnicodePropertyEscapes()) {\n        return false;\n    }\n    // We use the Unicode property escapes to match any character that is a letter including other languages like Chinese, Japanese, etc.\n    // p{Ll} matches a lowercase letter.\n    // p{Lo} matches a letter that is neither uppercase nor lowercase (ex: Japanese characters).\n    // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Regular_expressions/Unicode_character_class_escape#unicode_property_escapes_vs._character_classes\n    return new RegExp('[^\\\\p{Ll}\\\\p{Lo}0-9_:./-]', 'u').test(rawValue);\n}\nexport function supportUnicodePropertyEscapes() {\n    try {\n        new RegExp('[\\\\p{Ll}]', 'u');\n        return true;\n    }\n    catch (_a) {\n        return false;\n    }\n}\n//# sourceMappingURL=tags.js.map","import { catchUserErrors } from '../../tools/catchUserErrors';\nimport { DOCS_ORIGIN, MORE_DETAILS, display } from '../../tools/display';\nimport { ONE_SECOND } from '../../tools/utils/timeUtils';\nimport { isPercentage } from '../../tools/utils/numberUtils';\nimport { ONE_KIBI_BYTE } from '../../tools/utils/byteUtils';\nimport { objectHasValue } from '../../tools/utils/objectUtils';\nimport { assign } from '../../tools/utils/polyfills';\nimport { selectSessionStoreStrategyType } from '../session/sessionStore';\nimport { TrackingConsent } from '../trackingConsent';\nimport { computeTransportConfiguration } from './transportConfiguration';\nexport var DefaultPrivacyLevel = {\n    ALLOW: 'allow',\n    MASK: 'mask',\n    MASK_USER_INPUT: 'mask-user-input',\n};\nexport var TraceContextInjection = {\n    ALL: 'all',\n    SAMPLED: 'sampled',\n};\nfunction isString(tag, tagName) {\n    if (tag !== undefined && tag !== null && typeof tag !== 'string') {\n        display.error(\"\".concat(tagName, \" must be defined as a string\"));\n        return false;\n    }\n    return true;\n}\nfunction isDatadogSite(site) {\n    if (site && typeof site === 'string' && !/(datadog|ddog|datad0g|dd0g)/.test(site)) {\n        display.error(\"Site should be a valid Datadog site. \".concat(MORE_DETAILS, \" \").concat(DOCS_ORIGIN, \"/getting_started/site/.\"));\n        return false;\n    }\n    return true;\n}\nexport function isSampleRate(sampleRate, name) {\n    if (sampleRate !== undefined && !isPercentage(sampleRate)) {\n        display.error(\"\".concat(name, \" Sample Rate should be a number between 0 and 100\"));\n        return false;\n    }\n    return true;\n}\nexport function validateAndBuildConfiguration(initConfiguration) {\n    var _a, _b, _c, _d, _e;\n    if (!initConfiguration || !initConfiguration.clientToken) {\n        display.error('Client Token is not configured, we will not send any data.');\n        return;\n    }\n    if (!isDatadogSite(initConfiguration.site) ||\n        !isSampleRate(initConfiguration.sessionSampleRate, 'Session') ||\n        !isSampleRate(initConfiguration.telemetrySampleRate, 'Telemetry') ||\n        !isSampleRate(initConfiguration.telemetryConfigurationSampleRate, 'Telemetry Configuration') ||\n        !isSampleRate(initConfiguration.telemetryUsageSampleRate, 'Telemetry Usage') ||\n        !isString(initConfiguration.version, 'Version') ||\n        !isString(initConfiguration.env, 'Env') ||\n        !isString(initConfiguration.service, 'Service')) {\n        return;\n    }\n    if (initConfiguration.trackingConsent !== undefined &&\n        !objectHasValue(TrackingConsent, initConfiguration.trackingConsent)) {\n        display.error('Tracking Consent should be either \"granted\" or \"not-granted\"');\n        return;\n    }\n    return assign({\n        beforeSend: initConfiguration.beforeSend && catchUserErrors(initConfiguration.beforeSend, 'beforeSend threw an error:'),\n        sessionStoreStrategyType: selectSessionStoreStrategyType(initConfiguration),\n        sessionSampleRate: (_a = initConfiguration.sessionSampleRate) !== null && _a !== void 0 ? _a : 100,\n        telemetrySampleRate: (_b = initConfiguration.telemetrySampleRate) !== null && _b !== void 0 ? _b : 20,\n        telemetryConfigurationSampleRate: (_c = initConfiguration.telemetryConfigurationSampleRate) !== null && _c !== void 0 ? _c : 5,\n        telemetryUsageSampleRate: (_d = initConfiguration.telemetryUsageSampleRate) !== null && _d !== void 0 ? _d : 5,\n        service: initConfiguration.service || undefined,\n        silentMultipleInit: !!initConfiguration.silentMultipleInit,\n        allowUntrustedEvents: !!initConfiguration.allowUntrustedEvents,\n        trackingConsent: (_e = initConfiguration.trackingConsent) !== null && _e !== void 0 ? _e : TrackingConsent.GRANTED,\n        storeContextsAcrossPages: !!initConfiguration.storeContextsAcrossPages,\n        /**\n         * beacon payload max queue size implementation is 64kb\n         * ensure that we leave room for logs, rum and potential other users\n         */\n        batchBytesLimit: 16 * ONE_KIBI_BYTE,\n        eventRateLimiterThreshold: 3000,\n        maxTelemetryEventsPerPage: 15,\n        /**\n         * flush automatically, aim to be lower than ALB connection timeout\n         * to maximize connection reuse.\n         */\n        flushTimeout: (30 * ONE_SECOND),\n        /**\n         * Logs intake limit\n         */\n        batchMessagesLimit: 50,\n        messageBytesLimit: 256 * ONE_KIBI_BYTE,\n    }, computeTransportConfiguration(initConfiguration));\n}\nexport function serializeConfiguration(initConfiguration) {\n    return {\n        session_sample_rate: initConfiguration.sessionSampleRate,\n        telemetry_sample_rate: initConfiguration.telemetrySampleRate,\n        telemetry_configuration_sample_rate: initConfiguration.telemetryConfigurationSampleRate,\n        telemetry_usage_sample_rate: initConfiguration.telemetryUsageSampleRate,\n        use_before_send: !!initConfiguration.beforeSend,\n        use_cross_site_session_cookie: initConfiguration.useCrossSiteSessionCookie,\n        use_partitioned_cross_site_session_cookie: initConfiguration.usePartitionedCrossSiteSessionCookie,\n        use_secure_session_cookie: initConfiguration.useSecureSessionCookie,\n        use_proxy: !!initConfiguration.proxy,\n        silent_multiple_init: initConfiguration.silentMultipleInit,\n        track_session_across_subdomains: initConfiguration.trackSessionAcrossSubdomains,\n        allow_fallback_to_local_storage: !!initConfiguration.allowFallbackToLocalStorage,\n        store_contexts_across_pages: !!initConfiguration.storeContextsAcrossPages,\n        allow_untrusted_events: !!initConfiguration.allowUntrustedEvents,\n        tracking_consent: initConfiguration.trackingConsent,\n    };\n}\n//# sourceMappingURL=configuration.js.map","import { objectValues, assign } from '../../tools/utils/polyfills';\nimport { createEndpointBuilder } from './endpointBuilder';\nimport { buildTags } from './tags';\nimport { INTAKE_SITE_US1, PCI_INTAKE_HOST_US1 } from './intakeSites';\nexport function computeTransportConfiguration(initConfiguration) {\n    var site = initConfiguration.site || INTAKE_SITE_US1;\n    var tags = buildTags(initConfiguration);\n    var endpointBuilders = computeEndpointBuilders(initConfiguration, tags);\n    var intakeUrlPrefixes = computeIntakeUrlPrefixes(endpointBuilders, site);\n    var replicaConfiguration = computeReplicaConfiguration(initConfiguration, intakeUrlPrefixes, tags);\n    return assign({\n        isIntakeUrl: function (url) { return intakeUrlPrefixes.some(function (intakeEndpoint) { return url.indexOf(intakeEndpoint) === 0; }); },\n        replica: replicaConfiguration,\n        site: site,\n    }, endpointBuilders);\n}\nfunction computeEndpointBuilders(initConfiguration, tags) {\n    return {\n        logsEndpointBuilder: createEndpointBuilder(initConfiguration, 'logs', tags),\n        rumEndpointBuilder: createEndpointBuilder(initConfiguration, 'rum', tags),\n        sessionReplayEndpointBuilder: createEndpointBuilder(initConfiguration, 'replay', tags),\n    };\n}\nfunction computeReplicaConfiguration(initConfiguration, intakeUrlPrefixes, tags) {\n    if (!initConfiguration.replica) {\n        return;\n    }\n    var replicaConfiguration = assign({}, initConfiguration, {\n        site: INTAKE_SITE_US1,\n        clientToken: initConfiguration.replica.clientToken,\n    });\n    var replicaEndpointBuilders = {\n        logsEndpointBuilder: createEndpointBuilder(replicaConfiguration, 'logs', tags),\n        rumEndpointBuilder: createEndpointBuilder(replicaConfiguration, 'rum', tags),\n    };\n    intakeUrlPrefixes.push.apply(intakeUrlPrefixes, objectValues(replicaEndpointBuilders).map(function (builder) { return builder.urlPrefix; }));\n    return assign({ applicationId: initConfiguration.replica.applicationId }, replicaEndpointBuilders);\n}\nfunction computeIntakeUrlPrefixes(endpointBuilders, site) {\n    var intakeUrlPrefixes = objectValues(endpointBuilders).map(function (builder) { return builder.urlPrefix; });\n    if (site === INTAKE_SITE_US1) {\n        intakeUrlPrefixes.push(\"https://\".concat(PCI_INTAKE_HOST_US1, \"/\"));\n    }\n    return intakeUrlPrefixes;\n}\n//# sourceMappingURL=transportConfiguration.js.map","import { toStackTraceString } from '../../tools/stackTrace/handlingStack';\nimport { monitor } from '../../tools/monitor';\nimport { mergeObservables, Observable } from '../../tools/observable';\nimport { addEventListener } from '../../browser/addEventListener';\nimport { assign, includes } from '../../tools/utils/polyfills';\nimport { safeTruncate } from '../../tools/utils/stringUtils';\nimport { ErrorSource } from '../error/error.types';\nimport { clocksNow } from '../../tools/utils/timeUtils';\nexport var RawReportType = {\n    intervention: 'intervention',\n    deprecation: 'deprecation',\n    cspViolation: 'csp_violation',\n};\nexport function initReportObservable(configuration, apis) {\n    var observables = [];\n    if (includes(apis, RawReportType.cspViolation)) {\n        observables.push(createCspViolationReportObservable(configuration));\n    }\n    var reportTypes = apis.filter(function (api) { return api !== RawReportType.cspViolation; });\n    if (reportTypes.length) {\n        observables.push(createReportObservable(reportTypes));\n    }\n    return mergeObservables.apply(void 0, observables);\n}\nfunction createReportObservable(reportTypes) {\n    return new Observable(function (observable) {\n        if (!window.ReportingObserver) {\n            return;\n        }\n        var handleReports = monitor(function (reports, _) {\n            return reports.forEach(function (report) { return observable.notify(buildRawReportErrorFromReport(report)); });\n        });\n        var observer = new window.ReportingObserver(handleReports, {\n            types: reportTypes,\n            buffered: true,\n        });\n        observer.observe();\n        return function () {\n            observer.disconnect();\n        };\n    });\n}\nfunction createCspViolationReportObservable(configuration) {\n    return new Observable(function (observable) {\n        var stop = addEventListener(configuration, document, \"securitypolicyviolation\" /* DOM_EVENT.SECURITY_POLICY_VIOLATION */, function (event) {\n            observable.notify(buildRawReportErrorFromCspViolation(event));\n        }).stop;\n        return stop;\n    });\n}\nfunction buildRawReportErrorFromReport(report) {\n    var type = report.type, body = report.body;\n    return buildRawReportError({\n        type: body.id,\n        message: \"\".concat(type, \": \").concat(body.message),\n        originalError: report,\n        stack: buildStack(body.id, body.message, body.sourceFile, body.lineNumber, body.columnNumber),\n    });\n}\nfunction buildRawReportErrorFromCspViolation(event) {\n    var message = \"'\".concat(event.blockedURI, \"' blocked by '\").concat(event.effectiveDirective, \"' directive\");\n    return buildRawReportError({\n        type: event.effectiveDirective,\n        message: \"\".concat(RawReportType.cspViolation, \": \").concat(message),\n        originalError: event,\n        csp: {\n            disposition: event.disposition,\n        },\n        stack: buildStack(event.effectiveDirective, event.originalPolicy\n            ? \"\".concat(message, \" of the policy \\\"\").concat(safeTruncate(event.originalPolicy, 100, '...'), \"\\\"\")\n            : 'no policy', event.sourceFile, event.lineNumber, event.columnNumber),\n    });\n}\nfunction buildRawReportError(partial) {\n    return assign({\n        startClocks: clocksNow(),\n        source: ErrorSource.REPORT,\n        handling: \"unhandled\" /* ErrorHandling.UNHANDLED */,\n    }, partial);\n}\nfunction buildStack(name, message, sourceFile, lineNumber, columnNumber) {\n    return sourceFile\n        ? toStackTraceString({\n            name: name,\n            message: message,\n            stack: [\n                {\n                    func: '?',\n                    url: sourceFile,\n                    line: lineNumber !== null && lineNumber !== void 0 ? lineNumber : undefined,\n                    column: columnNumber !== null && columnNumber !== void 0 ? columnNumber : undefined,\n                },\n            ],\n        })\n        : undefined;\n}\n//# sourceMappingURL=reportObservable.js.map","import { serializeConfiguration, assign, ONE_KIBI_BYTE, validateAndBuildConfiguration, display, removeDuplicates, ConsoleApiName, RawReportType, includes, objectValues, } from '@datadog/browser-core';\n/**\n * arbitrary value, byte precision not needed\n */\nexport var DEFAULT_REQUEST_ERROR_RESPONSE_LENGTH_LIMIT = 32 * ONE_KIBI_BYTE;\nexport function validateAndBuildLogsConfiguration(initConfiguration) {\n    if (initConfiguration.usePciIntake === true && initConfiguration.site && initConfiguration.site !== 'datadoghq.com') {\n        display.warn('PCI compliance for Logs is only available for Datadog organizations in the US1 site. Default intake will be used.');\n    }\n    var baseConfiguration = validateAndBuildConfiguration(initConfiguration);\n    var forwardConsoleLogs = validateAndBuildForwardOption(initConfiguration.forwardConsoleLogs, objectValues(ConsoleApiName), 'Forward Console Logs');\n    var forwardReports = validateAndBuildForwardOption(initConfiguration.forwardReports, objectValues(RawReportType), 'Forward Reports');\n    if (!baseConfiguration || !forwardConsoleLogs || !forwardReports) {\n        return;\n    }\n    if (initConfiguration.forwardErrorsToLogs && !includes(forwardConsoleLogs, ConsoleApiName.error)) {\n        forwardConsoleLogs.push(ConsoleApiName.error);\n    }\n    return assign({\n        forwardErrorsToLogs: initConfiguration.forwardErrorsToLogs !== false,\n        forwardConsoleLogs: forwardConsoleLogs,\n        forwardReports: forwardReports,\n        requestErrorResponseLengthLimit: DEFAULT_REQUEST_ERROR_RESPONSE_LENGTH_LIMIT,\n        sendLogsAfterSessionExpiration: !!initConfiguration.sendLogsAfterSessionExpiration,\n    }, baseConfiguration);\n}\nexport function validateAndBuildForwardOption(option, allowedValues, label) {\n    if (option === undefined) {\n        return [];\n    }\n    if (!(option === 'all' || (Array.isArray(option) && option.every(function (api) { return includes(allowedValues, api); })))) {\n        display.error(\"\".concat(label, \" should be \\\"all\\\" or an array with allowed values \\\"\").concat(allowedValues.join('\", \"'), \"\\\"\"));\n        return;\n    }\n    return option === 'all' ? allowedValues : removeDuplicates(option);\n}\nexport function serializeLogsConfiguration(configuration) {\n    var baseSerializedInitConfiguration = serializeConfiguration(configuration);\n    return assign({\n        forward_errors_to_logs: configuration.forwardErrorsToLogs,\n        forward_console_logs: configuration.forwardConsoleLogs,\n        forward_reports: configuration.forwardReports,\n        use_pci_intake: configuration.usePciIntake,\n        send_logs_after_session_expiration: configuration.sendLogsAfterSessionExpiration,\n    }, baseSerializedInitConfiguration);\n}\n//# sourceMappingURL=configuration.js.map","import { createBoundedBuffer, assign, canUseEventBridge, display, displayAlreadyInitializedError, initFeatureFlags, initFetchObservable, noop, timeStampNow, } from '@datadog/browser-core';\nimport { validateAndBuildLogsConfiguration, } from '../domain/configuration';\nexport function createPreStartStrategy(getCommonContext, trackingConsentState, doStartLogs) {\n    var bufferApiCalls = createBoundedBuffer();\n    var cachedInitConfiguration;\n    var cachedConfiguration;\n    var trackingConsentStateSubscription = trackingConsentState.observable.subscribe(tryStartLogs);\n    function tryStartLogs() {\n        if (!cachedConfiguration || !cachedInitConfiguration || !trackingConsentState.isGranted()) {\n            return;\n        }\n        trackingConsentStateSubscription.unsubscribe();\n        var startLogsResult = doStartLogs(cachedInitConfiguration, cachedConfiguration);\n        bufferApiCalls.drain(startLogsResult);\n    }\n    return {\n        init: function (initConfiguration) {\n            if (!initConfiguration) {\n                display.error('Missing configuration');\n                return;\n            }\n            // Set the experimental feature flags as early as possible, so we can use them in most places\n            initFeatureFlags(initConfiguration.enableExperimentalFeatures);\n            if (canUseEventBridge()) {\n                initConfiguration = overrideInitConfigurationForBridge(initConfiguration);\n            }\n            // Expose the initial configuration regardless of initialization success.\n            cachedInitConfiguration = initConfiguration;\n            if (cachedConfiguration) {\n                displayAlreadyInitializedError('DD_LOGS', initConfiguration);\n                return;\n            }\n            var configuration = validateAndBuildLogsConfiguration(initConfiguration);\n            if (!configuration) {\n                return;\n            }\n            cachedConfiguration = configuration;\n            // Instrumuent fetch to track network requests\n            // This is needed in case the consent is not granted and some cutsomer\n            // library (Apollo Client) is storing uninstrumented fetch to be used later\n            // The subscrption is needed so that the instrumentation process is completed\n            initFetchObservable().subscribe(noop);\n            trackingConsentState.tryToInit(configuration.trackingConsent);\n            tryStartLogs();\n        },\n        get initConfiguration() {\n            return cachedInitConfiguration;\n        },\n        getInternalContext: noop,\n        handleLog: function (message, statusType, handlingStack, context, date) {\n            if (context === void 0) { context = getCommonContext(); }\n            if (date === void 0) { date = timeStampNow(); }\n            bufferApiCalls.add(function (startLogsResult) {\n                return startLogsResult.handleLog(message, statusType, handlingStack, context, date);\n            });\n        },\n    };\n}\nfunction overrideInitConfigurationForBridge(initConfiguration) {\n    return assign({}, initConfiguration, { clientToken: 'empty' });\n}\n//# sourceMappingURL=preStartLogs.js.map","import { addTelemetryUsage, assign, createContextManager, makePublicApi, monitor, checkUser, sanitizeUser, sanitize, createCustomerDataTrackerManager, storeContextManager, displayAlreadyInitializedError, deepClone, createTrackingConsentState, } from '@datadog/browser-core';\nimport { Logger } from '../domain/logger';\nimport { buildCommonContext } from '../domain/contexts/commonContext';\nimport { createPreStartStrategy } from './preStartLogs';\nvar LOGS_STORAGE_KEY = 'logs';\nexport function makeLogsPublicApi(startLogsImpl) {\n    var customerDataTrackerManager = createCustomerDataTrackerManager();\n    var globalContextManager = createContextManager(customerDataTrackerManager.getOrCreateTracker(2 /* CustomerDataType.GlobalContext */));\n    var userContextManager = createContextManager(customerDataTrackerManager.getOrCreateTracker(1 /* CustomerDataType.User */));\n    var trackingConsentState = createTrackingConsentState();\n    function getCommonContext() {\n        return buildCommonContext(globalContextManager, userContextManager);\n    }\n    var strategy = createPreStartStrategy(getCommonContext, trackingConsentState, function (initConfiguration, configuration) {\n        if (initConfiguration.storeContextsAcrossPages) {\n            storeContextManager(configuration, globalContextManager, LOGS_STORAGE_KEY, 2 /* CustomerDataType.GlobalContext */);\n            storeContextManager(configuration, userContextManager, LOGS_STORAGE_KEY, 1 /* CustomerDataType.User */);\n        }\n        var startLogsResult = startLogsImpl(initConfiguration, configuration, getCommonContext, trackingConsentState);\n        strategy = createPostStartStrategy(initConfiguration, startLogsResult);\n        return startLogsResult;\n    });\n    var customLoggers = {};\n    var mainLogger = new Logger(function () {\n        var params = [];\n        for (var _i = 0; _i < arguments.length; _i++) {\n            params[_i] = arguments[_i];\n        }\n        return strategy.handleLog.apply(strategy, params);\n    }, customerDataTrackerManager.createDetachedTracker());\n    return makePublicApi({\n        logger: mainLogger,\n        init: monitor(function (initConfiguration) { return strategy.init(initConfiguration); }),\n        setTrackingConsent: monitor(function (trackingConsent) {\n            trackingConsentState.update(trackingConsent);\n            addTelemetryUsage({ feature: 'set-tracking-consent', tracking_consent: trackingConsent });\n        }),\n        getGlobalContext: monitor(function () { return globalContextManager.getContext(); }),\n        setGlobalContext: monitor(function (context) { return globalContextManager.setContext(context); }),\n        setGlobalContextProperty: monitor(function (key, value) { return globalContextManager.setContextProperty(key, value); }),\n        removeGlobalContextProperty: monitor(function (key) { return globalContextManager.removeContextProperty(key); }),\n        clearGlobalContext: monitor(function () { return globalContextManager.clearContext(); }),\n        createLogger: monitor(function (name, conf) {\n            if (conf === void 0) { conf = {}; }\n            customLoggers[name] = new Logger(function () {\n                var params = [];\n                for (var _i = 0; _i < arguments.length; _i++) {\n                    params[_i] = arguments[_i];\n                }\n                return strategy.handleLog.apply(strategy, params);\n            }, customerDataTrackerManager.createDetachedTracker(), sanitize(name), conf.handler, conf.level, sanitize(conf.context));\n            return customLoggers[name];\n        }),\n        getLogger: monitor(function (name) { return customLoggers[name]; }),\n        getInitConfiguration: monitor(function () { return deepClone(strategy.initConfiguration); }),\n        getInternalContext: monitor(function (startTime) { return strategy.getInternalContext(startTime); }),\n        setUser: monitor(function (newUser) {\n            if (checkUser(newUser)) {\n                userContextManager.setContext(sanitizeUser(newUser));\n            }\n        }),\n        getUser: monitor(function () { return userContextManager.getContext(); }),\n        setUserProperty: monitor(function (key, property) {\n            var _a;\n            var sanitizedProperty = sanitizeUser((_a = {}, _a[key] = property, _a))[key];\n            userContextManager.setContextProperty(key, sanitizedProperty);\n        }),\n        removeUserProperty: monitor(function (key) { return userContextManager.removeContextProperty(key); }),\n        clearUser: monitor(function () { return userContextManager.clearContext(); }),\n    });\n}\nfunction createPostStartStrategy(initConfiguration, startLogsResult) {\n    return assign({\n        init: function (initConfiguration) {\n            displayAlreadyInitializedError('DD_LOGS', initConfiguration);\n        },\n        initConfiguration: initConfiguration,\n    }, startLogsResult);\n}\n//# sourceMappingURL=logsPublicApi.js.map","import { Observable } from '../tools/observable';\nimport { objectValues, includes } from '../tools/utils/polyfills';\nimport { addEventListeners, addEventListener } from './addEventListener';\nexport var PageExitReason = {\n    HIDDEN: 'visibility_hidden',\n    UNLOADING: 'before_unload',\n    PAGEHIDE: 'page_hide',\n    FROZEN: 'page_frozen',\n};\nexport function createPageExitObservable(configuration) {\n    return new Observable(function (observable) {\n        var stopListeners = addEventListeners(configuration, window, [\"visibilitychange\" /* DOM_EVENT.VISIBILITY_CHANGE */, \"freeze\" /* DOM_EVENT.FREEZE */], function (event) {\n            if (event.type === \"visibilitychange\" /* DOM_EVENT.VISIBILITY_CHANGE */ && document.visibilityState === 'hidden') {\n                /**\n                 * Only event that guarantee to fire on mobile devices when the page transitions to background state\n                 * (e.g. when user switches to a different application, goes to homescreen, etc), or is being unloaded.\n                 */\n                observable.notify({ reason: PageExitReason.HIDDEN });\n            }\n            else if (event.type === \"freeze\" /* DOM_EVENT.FREEZE */) {\n                /**\n                 * After transitioning in background a tab can be freezed to preserve resources. (cf: https://developer.chrome.com/blog/page-lifecycle-api)\n                 * Allow to collect events happening between hidden and frozen state.\n                 */\n                observable.notify({ reason: PageExitReason.FROZEN });\n            }\n        }, { capture: true }).stop;\n        var stopBeforeUnloadListener = addEventListener(configuration, window, \"beforeunload\" /* DOM_EVENT.BEFORE_UNLOAD */, function () {\n            observable.notify({ reason: PageExitReason.UNLOADING });\n        }).stop;\n        return function () {\n            stopListeners();\n            stopBeforeUnloadListener();\n        };\n    });\n}\nexport function isPageExitReason(reason) {\n    return includes(objectValues(PageExitReason), reason);\n}\n//# sourceMappingURL=pageExitObservable.js.map","import { getInitCookie } from '../../browser/cookie';\nexport var SYNTHETICS_TEST_ID_COOKIE_NAME = 'datadog-synthetics-public-id';\nexport var SYNTHETICS_RESULT_ID_COOKIE_NAME = 'datadog-synthetics-result-id';\nexport var SYNTHETICS_INJECTS_RUM_COOKIE_NAME = 'datadog-synthetics-injects-rum';\nexport function willSyntheticsInjectRum() {\n    return Boolean(window._DATADOG_SYNTHETICS_INJECTS_RUM || getInitCookie(SYNTHETICS_INJECTS_RUM_COOKIE_NAME));\n}\nexport function getSyntheticsTestId() {\n    var value = window._DATADOG_SYNTHETICS_PUBLIC_ID || getInitCookie(SYNTHETICS_TEST_ID_COOKIE_NAME);\n    return typeof value === 'string' ? value : undefined;\n}\nexport function getSyntheticsResultId() {\n    var value = window._DATADOG_SYNTHETICS_RESULT_ID || getInitCookie(SYNTHETICS_RESULT_ID_COOKIE_NAME);\n    return typeof value === 'string' ? value : undefined;\n}\n//# sourceMappingURL=syntheticsWorkerValues.js.map","import { setInterval, clearInterval } from './timer';\nimport { removeItem } from './utils/arrayUtils';\nimport { addDuration, relativeNow, ONE_MINUTE } from './utils/timeUtils';\nvar END_OF_TIMES = Infinity;\nexport var CLEAR_OLD_VALUES_INTERVAL = ONE_MINUTE;\nexport function createValueHistory(_a) {\n    var expireDelay = _a.expireDelay, maxEntries = _a.maxEntries;\n    var entries = [];\n    var clearOldValuesInterval = setInterval(function () { return clearOldValues(); }, CLEAR_OLD_VALUES_INTERVAL);\n    function clearOldValues() {\n        var oldTimeThreshold = relativeNow() - expireDelay;\n        while (entries.length > 0 && entries[entries.length - 1].endTime < oldTimeThreshold) {\n            entries.pop();\n        }\n    }\n    /**\n     * Add a value to the history associated with a start time. Returns a reference to this newly\n     * added entry that can be removed or closed.\n     */\n    function add(value, startTime) {\n        var entry = {\n            value: value,\n            startTime: startTime,\n            endTime: END_OF_TIMES,\n            remove: function () {\n                removeItem(entries, entry);\n            },\n            close: function (endTime) {\n                entry.endTime = endTime;\n            },\n        };\n        if (maxEntries && entries.length >= maxEntries) {\n            entries.pop();\n        }\n        entries.unshift(entry);\n        return entry;\n    }\n    /**\n     * Return the latest value that was active during `startTime`, or the currently active value\n     * if no `startTime` is provided. This method assumes that entries are not overlapping.\n     *\n     * If `option.returnInactive` is true, returns the value at `startTime` (active or not).\n     */\n    function find(startTime, options) {\n        if (startTime === void 0) { startTime = END_OF_TIMES; }\n        if (options === void 0) { options = { returnInactive: false }; }\n        for (var _i = 0, entries_1 = entries; _i < entries_1.length; _i++) {\n            var entry = entries_1[_i];\n            if (entry.startTime <= startTime) {\n                if (options.returnInactive || startTime <= entry.endTime) {\n                    return entry.value;\n                }\n                break;\n            }\n        }\n    }\n    /**\n     * Helper function to close the currently active value, if any. This method assumes that entries\n     * are not overlapping.\n     */\n    function closeActive(endTime) {\n        var latestEntry = entries[0];\n        if (latestEntry && latestEntry.endTime === END_OF_TIMES) {\n            latestEntry.close(endTime);\n        }\n    }\n    /**\n     * Return all values with an active period overlapping with the duration,\n     * or all values that were active during `startTime` if no duration is provided,\n     * or all currently active values if no `startTime` is provided.\n     */\n    function findAll(startTime, duration) {\n        if (startTime === void 0) { startTime = END_OF_TIMES; }\n        if (duration === void 0) { duration = 0; }\n        var endTime = addDuration(startTime, duration);\n        return entries\n            .filter(function (entry) { return entry.startTime <= endTime && startTime <= entry.endTime; })\n            .map(function (entry) { return entry.value; });\n    }\n    /**\n     * Remove all entries from this collection.\n     */\n    function reset() {\n        entries = [];\n    }\n    /**\n     * Stop internal garbage collection of past entries.\n     */\n    function stop() {\n        clearInterval(clearOldValuesInterval);\n    }\n    return { add: add, find: find, closeActive: closeActive, findAll: findAll, reset: reset, stop: stop };\n}\n//# sourceMappingURL=valueHistory.js.map","import { Observable } from '../../tools/observable';\nimport { createValueHistory } from '../../tools/valueHistory';\nimport { relativeNow, clocksOrigin, ONE_MINUTE } from '../../tools/utils/timeUtils';\nimport { addEventListener, addEventListeners } from '../../browser/addEventListener';\nimport { clearInterval, setInterval } from '../../tools/timer';\nimport { SESSION_TIME_OUT_DELAY } from './sessionConstants';\nimport { startSessionStore } from './sessionStore';\nexport var VISIBILITY_CHECK_DELAY = ONE_MINUTE;\nvar SESSION_CONTEXT_TIMEOUT_DELAY = SESSION_TIME_OUT_DELAY;\nvar stopCallbacks = [];\nexport function startSessionManager(configuration, productKey, computeSessionState, trackingConsentState) {\n    var renewObservable = new Observable();\n    var expireObservable = new Observable();\n    // TODO - Improve configuration type and remove assertion\n    var sessionStore = startSessionStore(configuration.sessionStoreStrategyType, productKey, computeSessionState);\n    stopCallbacks.push(function () { return sessionStore.stop(); });\n    var sessionContextHistory = createValueHistory({\n        expireDelay: SESSION_CONTEXT_TIMEOUT_DELAY,\n    });\n    stopCallbacks.push(function () { return sessionContextHistory.stop(); });\n    sessionStore.renewObservable.subscribe(function () {\n        sessionContextHistory.add(buildSessionContext(), relativeNow());\n        renewObservable.notify();\n    });\n    sessionStore.expireObservable.subscribe(function () {\n        expireObservable.notify();\n        sessionContextHistory.closeActive(relativeNow());\n    });\n    // We expand/renew session unconditionally as tracking consent is always granted when the session\n    // manager is started.\n    sessionStore.expandOrRenewSession();\n    sessionContextHistory.add(buildSessionContext(), clocksOrigin().relative);\n    trackingConsentState.observable.subscribe(function () {\n        if (trackingConsentState.isGranted()) {\n            sessionStore.expandOrRenewSession();\n        }\n        else {\n            sessionStore.expire();\n        }\n    });\n    trackActivity(configuration, function () {\n        if (trackingConsentState.isGranted()) {\n            sessionStore.expandOrRenewSession();\n        }\n    });\n    trackVisibility(configuration, function () { return sessionStore.expandSession(); });\n    trackResume(configuration, function () { return sessionStore.restartSession(); });\n    function buildSessionContext() {\n        return {\n            id: sessionStore.getSession().id,\n            trackingType: sessionStore.getSession()[productKey],\n            isReplayForced: !!sessionStore.getSession().forcedReplay,\n        };\n    }\n    return {\n        findSession: function (startTime, options) { return sessionContextHistory.find(startTime, options); },\n        renewObservable: renewObservable,\n        expireObservable: expireObservable,\n        sessionStateUpdateObservable: sessionStore.sessionStateUpdateObservable,\n        expire: sessionStore.expire,\n        updateSessionState: sessionStore.updateSessionState,\n    };\n}\nexport function stopSessionManager() {\n    stopCallbacks.forEach(function (e) { return e(); });\n    stopCallbacks = [];\n}\nfunction trackActivity(configuration, expandOrRenewSession) {\n    var stop = addEventListeners(configuration, window, [\"click\" /* DOM_EVENT.CLICK */, \"touchstart\" /* DOM_EVENT.TOUCH_START */, \"keydown\" /* DOM_EVENT.KEY_DOWN */, \"scroll\" /* DOM_EVENT.SCROLL */], expandOrRenewSession, { capture: true, passive: true }).stop;\n    stopCallbacks.push(stop);\n}\nfunction trackVisibility(configuration, expandSession) {\n    var expandSessionWhenVisible = function () {\n        if (document.visibilityState === 'visible') {\n            expandSession();\n        }\n    };\n    var stop = addEventListener(configuration, document, \"visibilitychange\" /* DOM_EVENT.VISIBILITY_CHANGE */, expandSessionWhenVisible).stop;\n    stopCallbacks.push(stop);\n    var visibilityCheckInterval = setInterval(expandSessionWhenVisible, VISIBILITY_CHECK_DELAY);\n    stopCallbacks.push(function () {\n        clearInterval(visibilityCheckInterval);\n    });\n}\nfunction trackResume(configuration, cb) {\n    var stop = addEventListener(configuration, window, \"resume\" /* DOM_EVENT.RESUME */, cb, { capture: true }).stop;\n    stopCallbacks.push(stop);\n}\n//# sourceMappingURL=sessionManager.js.map","import { Observable, performDraw, startSessionManager } from '@datadog/browser-core';\nexport var LOGS_SESSION_KEY = 'logs';\nexport function startLogsSessionManager(configuration, trackingConsentState) {\n    var sessionManager = startSessionManager(configuration, LOGS_SESSION_KEY, function (rawTrackingType) { return computeSessionState(configuration, rawTrackingType); }, trackingConsentState);\n    return {\n        findTrackedSession: function (startTime, options) {\n            if (options === void 0) { options = { returnInactive: false }; }\n            var session = sessionManager.findSession(startTime, options);\n            return session && session.trackingType === \"1\" /* LoggerTrackingType.TRACKED */\n                ? {\n                    id: session.id,\n                }\n                : undefined;\n        },\n        expireObservable: sessionManager.expireObservable,\n    };\n}\nexport function startLogsSessionManagerStub(configuration) {\n    var isTracked = computeTrackingType(configuration) === \"1\" /* LoggerTrackingType.TRACKED */;\n    var session = isTracked ? {} : undefined;\n    return {\n        findTrackedSession: function () { return session; },\n        expireObservable: new Observable(),\n    };\n}\nfunction computeTrackingType(configuration) {\n    if (!performDraw(configuration.sessionSampleRate)) {\n        return \"0\" /* LoggerTrackingType.NOT_TRACKED */;\n    }\n    return \"1\" /* LoggerTrackingType.TRACKED */;\n}\nfunction computeSessionState(configuration, rawSessionType) {\n    var trackingType = hasValidLoggerSession(rawSessionType) ? rawSessionType : computeTrackingType(configuration);\n    return {\n        trackingType: trackingType,\n        isTracked: trackingType === \"1\" /* LoggerTrackingType.TRACKED */,\n    };\n}\nfunction hasValidLoggerSession(trackingType) {\n    return trackingType === \"0\" /* LoggerTrackingType.NOT_TRACKED */ || trackingType === \"1\" /* LoggerTrackingType.TRACKED */;\n}\n//# sourceMappingURL=logsSessionManager.js.map","import { willSyntheticsInjectRum, addTelemetryDebug, getSyntheticsTestId, getSyntheticsResultId, } from '@datadog/browser-core';\nvar logsSentBeforeRumInjectionTelemetryAdded = false;\nexport function getRUMInternalContext(startTime) {\n    var browserWindow = window;\n    if (willSyntheticsInjectRum()) {\n        var context = getInternalContextFromRumGlobal(browserWindow.DD_RUM_SYNTHETICS);\n        if (!context && !logsSentBeforeRumInjectionTelemetryAdded) {\n            logsSentBeforeRumInjectionTelemetryAdded = true;\n            addTelemetryDebug('Logs sent before RUM is injected by the synthetics worker', {\n                testId: getSyntheticsTestId(),\n                resultId: getSyntheticsResultId(),\n            });\n        }\n        return context;\n    }\n    return getInternalContextFromRumGlobal(browserWindow.DD_RUM);\n    function getInternalContextFromRumGlobal(rumGlobal) {\n        if (rumGlobal && rumGlobal.getInternalContext) {\n            return rumGlobal.getInternalContext(startTime);\n        }\n    }\n}\nexport function resetRUMInternalContext() {\n    logsSentBeforeRumInjectionTelemetryAdded = false;\n}\n//# sourceMappingURL=rumInternalContext.js.map","import { ErrorSource, combine, createEventRateLimiter, getRelativeTime, isEmptyObject } from '@datadog/browser-core';\nimport { STATUSES } from './logger';\nimport { getRUMInternalContext } from './contexts/rumInternalContext';\nexport function startLogsAssembly(sessionManager, configuration, lifeCycle, getCommonContext, reportError) {\n    var statusWithCustom = STATUSES.concat(['custom']);\n    var logRateLimiters = {};\n    statusWithCustom.forEach(function (status) {\n        logRateLimiters[status] = createEventRateLimiter(status, configuration.eventRateLimiterThreshold, reportError);\n    });\n    lifeCycle.subscribe(0 /* LifeCycleEventType.RAW_LOG_COLLECTED */, function (_a) {\n        var _b, _c;\n        var rawLogsEvent = _a.rawLogsEvent, _d = _a.messageContext, messageContext = _d === void 0 ? undefined : _d, _e = _a.savedCommonContext, savedCommonContext = _e === void 0 ? undefined : _e, domainContext = _a.domainContext;\n        var startTime = getRelativeTime(rawLogsEvent.date);\n        var session = sessionManager.findTrackedSession(startTime);\n        if (!session &&\n            (!configuration.sendLogsAfterSessionExpiration ||\n                !sessionManager.findTrackedSession(startTime, { returnInactive: true }))) {\n            return;\n        }\n        var commonContext = savedCommonContext || getCommonContext();\n        var log = combine({\n            service: configuration.service,\n            session_id: session ? session.id : undefined,\n            // Insert user first to allow overrides from global context\n            usr: !isEmptyObject(commonContext.user) ? commonContext.user : undefined,\n            view: commonContext.view,\n        }, commonContext.context, getRUMInternalContext(startTime), rawLogsEvent, messageContext);\n        if (((_b = configuration.beforeSend) === null || _b === void 0 ? void 0 : _b.call(configuration, log, domainContext)) === false ||\n            (log.origin !== ErrorSource.AGENT &&\n                ((_c = logRateLimiters[log.status]) !== null && _c !== void 0 ? _c : logRateLimiters['custom']).isLimitReached())) {\n            return;\n        }\n        lifeCycle.notify(1 /* LifeCycleEventType.LOG_COLLECTED */, log);\n    });\n}\n//# sourceMappingURL=assembly.js.map","import { setTimeout } from '../../tools/timer';\nimport { clocksNow, ONE_MINUTE } from '../../tools/utils/timeUtils';\nimport { ErrorSource } from '../error/error.types';\nexport function createEventRateLimiter(eventType, limit, onLimitReached) {\n    var eventCount = 0;\n    var allowNextEvent = false;\n    return {\n        isLimitReached: function () {\n            if (eventCount === 0) {\n                setTimeout(function () {\n                    eventCount = 0;\n                }, ONE_MINUTE);\n            }\n            eventCount += 1;\n            if (eventCount <= limit || allowNextEvent) {\n                allowNextEvent = false;\n                return false;\n            }\n            if (eventCount === limit + 1) {\n                allowNextEvent = true;\n                try {\n                    onLimitReached({\n                        message: \"Reached max number of \".concat(eventType, \"s by minute: \").concat(limit),\n                        source: ErrorSource.AGENT,\n                        startClocks: clocksNow(),\n                    });\n                }\n                finally {\n                    allowNextEvent = false;\n                }\n            }\n            return true;\n        },\n    };\n}\n//# sourceMappingURL=createEventRateLimiter.js.map","import { flattenErrorCauses, tryToGetFingerprint } from '../error/error';\nimport { mergeObservables, Observable } from '../../tools/observable';\nimport { ConsoleApiName, globalConsole } from '../../tools/display';\nimport { callMonitored } from '../../tools/monitor';\nimport { sanitize } from '../../tools/serialisation/sanitize';\nimport { find } from '../../tools/utils/polyfills';\nimport { jsonStringify } from '../../tools/serialisation/jsonStringify';\nimport { ErrorSource } from '../error/error.types';\nimport { computeStackTrace } from '../../tools/stackTrace/computeStackTrace';\nimport { createHandlingStack, toStackTraceString, formatErrorMessage } from '../../tools/stackTrace/handlingStack';\nimport { clocksNow } from '../../tools/utils/timeUtils';\nvar consoleObservablesByApi = {};\nexport function initConsoleObservable(apis) {\n    var consoleObservables = apis.map(function (api) {\n        if (!consoleObservablesByApi[api]) {\n            consoleObservablesByApi[api] = createConsoleObservable(api); // we are sure that the observable created for this api will yield the expected ConsoleLog type\n        }\n        return consoleObservablesByApi[api];\n    });\n    return mergeObservables.apply(void 0, consoleObservables);\n}\nexport function resetConsoleObservable() {\n    consoleObservablesByApi = {};\n}\nfunction createConsoleObservable(api) {\n    return new Observable(function (observable) {\n        var originalConsoleApi = globalConsole[api];\n        globalConsole[api] = function () {\n            var params = [];\n            for (var _i = 0; _i < arguments.length; _i++) {\n                params[_i] = arguments[_i];\n            }\n            originalConsoleApi.apply(console, params);\n            var handlingStack = createHandlingStack();\n            callMonitored(function () {\n                observable.notify(buildConsoleLog(params, api, handlingStack));\n            });\n        };\n        return function () {\n            globalConsole[api] = originalConsoleApi;\n        };\n    });\n}\nfunction buildConsoleLog(params, api, handlingStack) {\n    var message = params.map(function (param) { return formatConsoleParameters(param); }).join(' ');\n    var error;\n    if (api === ConsoleApiName.error) {\n        var firstErrorParam = find(params, function (param) { return param instanceof Error; });\n        error = {\n            stack: firstErrorParam ? toStackTraceString(computeStackTrace(firstErrorParam)) : undefined,\n            fingerprint: tryToGetFingerprint(firstErrorParam),\n            causes: firstErrorParam ? flattenErrorCauses(firstErrorParam, 'console') : undefined,\n            startClocks: clocksNow(),\n            message: message,\n            source: ErrorSource.CONSOLE,\n            handling: \"handled\" /* ErrorHandling.HANDLED */,\n            handlingStack: handlingStack,\n        };\n    }\n    return {\n        api: api,\n        message: message,\n        error: error,\n        handlingStack: handlingStack,\n    };\n}\nfunction formatConsoleParameters(param) {\n    if (typeof param === 'string') {\n        return sanitize(param);\n    }\n    if (param instanceof Error) {\n        return formatErrorMessage(computeStackTrace(param));\n    }\n    return jsonStringify(sanitize(param), undefined, 2);\n}\n//# sourceMappingURL=consoleObservable.js.map","var _a;\nimport { timeStampNow, ConsoleApiName, ErrorSource, initConsoleObservable } from '@datadog/browser-core';\nimport { StatusType } from '../logger/isAuthorized';\nimport { createErrorFieldFromRawError } from '../createErrorFieldFromRawError';\nexport var LogStatusForApi = (_a = {},\n    _a[ConsoleApiName.log] = StatusType.info,\n    _a[ConsoleApiName.debug] = StatusType.debug,\n    _a[ConsoleApiName.info] = StatusType.info,\n    _a[ConsoleApiName.warn] = StatusType.warn,\n    _a[ConsoleApiName.error] = StatusType.error,\n    _a);\nexport function startConsoleCollection(configuration, lifeCycle) {\n    var consoleSubscription = initConsoleObservable(configuration.forwardConsoleLogs).subscribe(function (log) {\n        var collectedData = {\n            rawLogsEvent: {\n                date: timeStampNow(),\n                message: log.message,\n                origin: ErrorSource.CONSOLE,\n                error: log.error && createErrorFieldFromRawError(log.error),\n                status: LogStatusForApi[log.api],\n            },\n            domainContext: {\n                handlingStack: log.handlingStack,\n            },\n        };\n        lifeCycle.notify(0 /* LifeCycleEventType.RAW_LOG_COLLECTED */, collectedData);\n    });\n    return {\n        stop: function () {\n            consoleSubscription.unsubscribe();\n        },\n    };\n}\n//# sourceMappingURL=consoleCollection.js.map","import { instrumentMethod } from '../tools/instrumentMethod';\nimport { Observable } from '../tools/observable';\nimport { elapsed, clocksNow, timeStampNow } from '../tools/utils/timeUtils';\nimport { normalizeUrl } from '../tools/utils/urlPolyfill';\nimport { shallowClone } from '../tools/utils/objectUtils';\nimport { addEventListener } from './addEventListener';\nvar xhrObservable;\nvar xhrContexts = new WeakMap();\nexport function initXhrObservable(configuration) {\n    if (!xhrObservable) {\n        xhrObservable = createXhrObservable(configuration);\n    }\n    return xhrObservable;\n}\nfunction createXhrObservable(configuration) {\n    return new Observable(function (observable) {\n        var stopInstrumentingStart = instrumentMethod(XMLHttpRequest.prototype, 'open', openXhr).stop;\n        var stopInstrumentingSend = instrumentMethod(XMLHttpRequest.prototype, 'send', function (call) {\n            sendXhr(call, configuration, observable);\n        }, { computeHandlingStack: true }).stop;\n        var stopInstrumentingAbort = instrumentMethod(XMLHttpRequest.prototype, 'abort', abortXhr).stop;\n        return function () {\n            stopInstrumentingStart();\n            stopInstrumentingSend();\n            stopInstrumentingAbort();\n        };\n    });\n}\nfunction openXhr(_a) {\n    var xhr = _a.target, _b = _a.parameters, method = _b[0], url = _b[1];\n    xhrContexts.set(xhr, {\n        state: 'open',\n        method: String(method).toUpperCase(),\n        url: normalizeUrl(String(url)),\n    });\n}\nfunction sendXhr(_a, configuration, observable) {\n    var xhr = _a.target, handlingStack = _a.handlingStack;\n    var context = xhrContexts.get(xhr);\n    if (!context) {\n        return;\n    }\n    var startContext = context;\n    startContext.state = 'start';\n    startContext.startClocks = clocksNow();\n    startContext.isAborted = false;\n    startContext.xhr = xhr;\n    startContext.handlingStack = handlingStack;\n    var hasBeenReported = false;\n    var stopInstrumentingOnReadyStateChange = instrumentMethod(xhr, 'onreadystatechange', function () {\n        if (xhr.readyState === XMLHttpRequest.DONE) {\n            // Try to report the XHR as soon as possible, because the XHR may be mutated by the\n            // application during a future event. For example, Angular is calling .abort() on\n            // completed requests during an onreadystatechange event, so the status becomes '0'\n            // before the request is collected.\n            onEnd();\n        }\n    }).stop;\n    var onEnd = function () {\n        unsubscribeLoadEndListener();\n        stopInstrumentingOnReadyStateChange();\n        if (hasBeenReported) {\n            return;\n        }\n        hasBeenReported = true;\n        var completeContext = context;\n        completeContext.state = 'complete';\n        completeContext.duration = elapsed(startContext.startClocks.timeStamp, timeStampNow());\n        completeContext.status = xhr.status;\n        observable.notify(shallowClone(completeContext));\n    };\n    var unsubscribeLoadEndListener = addEventListener(configuration, xhr, 'loadend', onEnd).stop;\n    observable.notify(startContext);\n}\nfunction abortXhr(_a) {\n    var xhr = _a.target;\n    var context = xhrContexts.get(xhr);\n    if (context) {\n        context.isAborted = true;\n    }\n}\n//# sourceMappingURL=xhrObservable.js.map","export function isServerError(status) {\n    return status >= 500;\n}\nexport function tryToClone(response) {\n    try {\n        return response.clone();\n    }\n    catch (e) {\n        // clone can throw if the response has already been used by another instrumentation or is disturbed\n        return;\n    }\n}\n//# sourceMappingURL=responseUtils.js.map","import { ErrorSource, initXhrObservable, initFetchObservable, computeStackTrace, toStackTraceString, monitor, noop, readBytesFromStream, tryToClone, isServerError, } from '@datadog/browser-core';\nimport { StatusType } from '../logger/isAuthorized';\nexport function startNetworkErrorCollection(configuration, lifeCycle) {\n    if (!configuration.forwardErrorsToLogs) {\n        return { stop: noop };\n    }\n    var xhrSubscription = initXhrObservable(configuration).subscribe(function (context) {\n        if (context.state === 'complete') {\n            handleResponse(\"xhr\" /* RequestType.XHR */, context);\n        }\n    });\n    var fetchSubscription = initFetchObservable().subscribe(function (context) {\n        if (context.state === 'resolve') {\n            handleResponse(\"fetch\" /* RequestType.FETCH */, context);\n        }\n    });\n    function handleResponse(type, request) {\n        if (!configuration.isIntakeUrl(request.url) && (isRejected(request) || isServerError(request.status))) {\n            if ('xhr' in request) {\n                computeXhrResponseData(request.xhr, configuration, onResponseDataAvailable);\n            }\n            else if (request.response) {\n                computeFetchResponseText(request.response, configuration, onResponseDataAvailable);\n            }\n            else if (request.error) {\n                computeFetchErrorText(request.error, configuration, onResponseDataAvailable);\n            }\n        }\n        function onResponseDataAvailable(responseData) {\n            var domainContext = {\n                isAborted: request.isAborted,\n                handlingStack: request.handlingStack,\n            };\n            lifeCycle.notify(0 /* LifeCycleEventType.RAW_LOG_COLLECTED */, {\n                rawLogsEvent: {\n                    message: \"\".concat(format(type), \" error \").concat(request.method, \" \").concat(request.url),\n                    date: request.startClocks.timeStamp,\n                    error: {\n                        stack: responseData || 'Failed to load',\n                        // We don't know if the error was handled or not, so we set it to undefined\n                        handling: undefined,\n                    },\n                    http: {\n                        method: request.method, // Cast resource method because of case mismatch cf issue RUMF-1152\n                        status_code: request.status,\n                        url: request.url,\n                    },\n                    status: StatusType.error,\n                    origin: ErrorSource.NETWORK,\n                },\n                domainContext: domainContext,\n            });\n        }\n    }\n    return {\n        stop: function () {\n            xhrSubscription.unsubscribe();\n            fetchSubscription.unsubscribe();\n        },\n    };\n}\n// TODO: ideally, computeXhrResponseData should always call the callback with a string instead of\n// `unknown`. But to keep backward compatibility, in the case of XHR with a `responseType` different\n// than \"text\", the response data should be whatever `xhr.response` is. This is a bit confusing as\n// Logs event 'stack' is expected to be a string. This should be changed in a future major version\n// as it could be a breaking change.\nexport function computeXhrResponseData(xhr, configuration, callback) {\n    if (typeof xhr.response === 'string') {\n        callback(truncateResponseText(xhr.response, configuration));\n    }\n    else {\n        callback(xhr.response);\n    }\n}\nexport function computeFetchErrorText(error, configuration, callback) {\n    callback(truncateResponseText(toStackTraceString(computeStackTrace(error)), configuration));\n}\nexport function computeFetchResponseText(response, configuration, callback) {\n    var clonedResponse = tryToClone(response);\n    if (!clonedResponse || !clonedResponse.body) {\n        // if the clone failed or if the body is null, let's not try to read it.\n        callback();\n    }\n    else if (!window.TextDecoder) {\n        // If the browser doesn't support TextDecoder, let's read the whole response then truncate it.\n        //\n        // This should only be the case on early versions of Edge (before they migrated to Chromium).\n        // Even if it could be possible to implement a workaround for the missing TextDecoder API (using\n        // a Blob and FileReader), we found another issue preventing us from reading only the first\n        // bytes from the response: contrary to other browsers, when reading from the cloned response,\n        // if the original response gets canceled, the cloned response is also canceled and we can't\n        // know about it.  In the following illustration, the promise returned by `reader.read()` may\n        // never be fulfilled:\n        //\n        // fetch('/').then((response) => {\n        //   const reader = response.clone().body.getReader()\n        //   readMore()\n        //   function readMore() {\n        //     reader.read().then(\n        //       (result) => {\n        //         if (result.done) {\n        //           console.log('done')\n        //         } else {\n        //           readMore()\n        //         }\n        //       },\n        //       () => console.log('error')\n        //     )\n        //   }\n        //   response.body.getReader().cancel()\n        // })\n        clonedResponse.text().then(monitor(function (text) { return callback(truncateResponseText(text, configuration)); }), monitor(function (error) { return callback(\"Unable to retrieve response: \".concat(error)); }));\n    }\n    else {\n        truncateResponseStream(clonedResponse.body, configuration.requestErrorResponseLengthLimit, function (error, responseText) {\n            if (error) {\n                callback(\"Unable to retrieve response: \".concat(error));\n            }\n            else {\n                callback(responseText);\n            }\n        });\n    }\n}\nfunction isRejected(request) {\n    return request.status === 0 && request.responseType !== 'opaque';\n}\nfunction truncateResponseText(responseText, configuration) {\n    if (responseText.length > configuration.requestErrorResponseLengthLimit) {\n        return \"\".concat(responseText.substring(0, configuration.requestErrorResponseLengthLimit), \"...\");\n    }\n    return responseText;\n}\nfunction format(type) {\n    if (\"xhr\" /* RequestType.XHR */ === type) {\n        return 'XHR';\n    }\n    return 'Fetch';\n}\nfunction truncateResponseStream(stream, bytesLimit, callback) {\n    readBytesFromStream(stream, function (error, bytes, limitExceeded) {\n        if (error) {\n            callback(error);\n        }\n        else {\n            var responseText = new TextDecoder().decode(bytes);\n            if (limitExceeded) {\n                responseText += '...';\n            }\n            callback(undefined, responseText);\n        }\n    }, {\n        bytesLimit: bytesLimit,\n        collectStreamBody: true,\n    });\n}\n//# sourceMappingURL=networkErrorCollection.js.map","import { monitor } from './monitor';\nimport { noop } from './utils/functionUtils';\n/**\n * Read bytes from a ReadableStream until at least `limit` bytes have been read (or until the end of\n * the stream). The callback is invoked with the at most `limit` bytes, and indicates that the limit\n * has been exceeded if more bytes were available.\n */\nexport function readBytesFromStream(stream, callback, options) {\n    var reader = stream.getReader();\n    var chunks = [];\n    var readBytesCount = 0;\n    readMore();\n    function readMore() {\n        reader.read().then(monitor(function (result) {\n            if (result.done) {\n                onDone();\n                return;\n            }\n            if (options.collectStreamBody) {\n                chunks.push(result.value);\n            }\n            readBytesCount += result.value.length;\n            if (readBytesCount > options.bytesLimit) {\n                onDone();\n            }\n            else {\n                readMore();\n            }\n        }), monitor(function (error) { return callback(error); }));\n    }\n    function onDone() {\n        reader.cancel().catch(\n        // we don't care if cancel fails, but we still need to catch the error to avoid reporting it\n        // as an unhandled rejection\n        noop);\n        var bytes;\n        var limitExceeded;\n        if (options.collectStreamBody) {\n            var completeBuffer_1;\n            if (chunks.length === 1) {\n                // optimization: if the response is small enough to fit in a single buffer (provided by the browser), just\n                // use it directly.\n                completeBuffer_1 = chunks[0];\n            }\n            else {\n                // else, we need to copy buffers into a larger buffer to concatenate them.\n                completeBuffer_1 = new Uint8Array(readBytesCount);\n                var offset_1 = 0;\n                chunks.forEach(function (chunk) {\n                    completeBuffer_1.set(chunk, offset_1);\n                    offset_1 += chunk.length;\n                });\n            }\n            bytes = completeBuffer_1.slice(0, options.bytesLimit);\n            limitExceeded = completeBuffer_1.length > options.bytesLimit;\n        }\n        callback(undefined, bytes, limitExceeded);\n    }\n}\n//# sourceMappingURL=readBytesFromStream.js.map","import { instrumentMethod } from '../../tools/instrumentMethod';\nimport { clocksNow } from '../../tools/utils/timeUtils';\nimport { computeStackTrace, computeStackTraceFromOnErrorMessage } from '../../tools/stackTrace/computeStackTrace';\nimport { computeRawError } from './error';\nimport { ErrorSource } from './error.types';\nexport function trackRuntimeError(errorObservable) {\n    var handleRuntimeError = function (stackTrace, originalError) {\n        var rawError = computeRawError({\n            stackTrace: stackTrace,\n            originalError: originalError,\n            startClocks: clocksNow(),\n            nonErrorPrefix: \"Uncaught\" /* NonErrorPrefix.UNCAUGHT */,\n            source: ErrorSource.SOURCE,\n            handling: \"unhandled\" /* ErrorHandling.UNHANDLED */,\n        });\n        errorObservable.notify(rawError);\n    };\n    var stopInstrumentingOnError = instrumentOnError(handleRuntimeError).stop;\n    var stopInstrumentingOnUnhandledRejection = instrumentUnhandledRejection(handleRuntimeError).stop;\n    return {\n        stop: function () {\n            stopInstrumentingOnError();\n            stopInstrumentingOnUnhandledRejection();\n        },\n    };\n}\nexport function instrumentOnError(callback) {\n    return instrumentMethod(window, 'onerror', function (_a) {\n        var _b = _a.parameters, messageObj = _b[0], url = _b[1], line = _b[2], column = _b[3], errorObj = _b[4];\n        var stackTrace;\n        if (errorObj instanceof Error) {\n            stackTrace = computeStackTrace(errorObj);\n        }\n        else {\n            stackTrace = computeStackTraceFromOnErrorMessage(messageObj, url, line, column);\n        }\n        callback(stackTrace, errorObj !== null && errorObj !== void 0 ? errorObj : messageObj);\n    });\n}\nexport function instrumentUnhandledRejection(callback) {\n    return instrumentMethod(window, 'onunhandledrejection', function (_a) {\n        var e = _a.parameters[0];\n        var reason = e.reason || 'Empty reason';\n        var stack = computeStackTrace(reason);\n        callback(stack, reason);\n    });\n}\n//# sourceMappingURL=trackRuntimeError.js.map","// eslint-disable-next-line no-restricted-syntax\nvar AbstractLifeCycle = /** @class */ (function () {\n    function AbstractLifeCycle() {\n        this.callbacks = {};\n    }\n    AbstractLifeCycle.prototype.notify = function (eventType, data) {\n        var eventCallbacks = this.callbacks[eventType];\n        if (eventCallbacks) {\n            eventCallbacks.forEach(function (callback) { return callback(data); });\n        }\n    };\n    AbstractLifeCycle.prototype.subscribe = function (eventType, callback) {\n        var _this = this;\n        if (!this.callbacks[eventType]) {\n            this.callbacks[eventType] = [];\n        }\n        this.callbacks[eventType].push(callback);\n        return {\n            unsubscribe: function () {\n                _this.callbacks[eventType] = _this.callbacks[eventType].filter(function (other) { return callback !== other; });\n            },\n        };\n    };\n    return AbstractLifeCycle;\n}());\nexport { AbstractLifeCycle };\n//# sourceMappingURL=abstractLifeCycle.js.map","var _a;\nimport { combine, ErrorSource, timeStampNow, originalConsoleMethods, globalConsole, ConsoleApiName, } from '@datadog/browser-core';\nimport { HandlerType } from '../logger';\nimport { isAuthorized, StatusType } from './isAuthorized';\nexport function startLoggerCollection(lifeCycle) {\n    function handleLog(logsMessage, logger, handlingStack, savedCommonContext, savedDate) {\n        var messageContext = combine(logger.getContext(), logsMessage.context);\n        if (isAuthorized(logsMessage.status, HandlerType.console, logger)) {\n            displayInConsole(logsMessage, messageContext);\n        }\n        if (isAuthorized(logsMessage.status, HandlerType.http, logger)) {\n            var rawLogEventData = {\n                rawLogsEvent: {\n                    date: savedDate || timeStampNow(),\n                    message: logsMessage.message,\n                    status: logsMessage.status,\n                    origin: ErrorSource.LOGGER,\n                },\n                messageContext: messageContext,\n                savedCommonContext: savedCommonContext,\n            };\n            if (handlingStack) {\n                rawLogEventData.domainContext = { handlingStack: handlingStack };\n            }\n            lifeCycle.notify(0 /* LifeCycleEventType.RAW_LOG_COLLECTED */, rawLogEventData);\n        }\n    }\n    return {\n        handleLog: handleLog,\n    };\n}\nvar loggerToConsoleApiName = (_a = {},\n    _a[StatusType.ok] = ConsoleApiName.debug,\n    _a[StatusType.debug] = ConsoleApiName.debug,\n    _a[StatusType.info] = ConsoleApiName.info,\n    _a[StatusType.notice] = ConsoleApiName.info,\n    _a[StatusType.warn] = ConsoleApiName.warn,\n    _a[StatusType.error] = ConsoleApiName.error,\n    _a[StatusType.critical] = ConsoleApiName.error,\n    _a[StatusType.alert] = ConsoleApiName.error,\n    _a[StatusType.emerg] = ConsoleApiName.error,\n    _a);\nfunction displayInConsole(_a, messageContext) {\n    var status = _a.status, message = _a.message;\n    originalConsoleMethods[loggerToConsoleApiName[status]].call(globalConsole, message, messageContext);\n}\n//# sourceMappingURL=loggerCollection.js.map","import { AbstractLifeCycle } from '@datadog/browser-core';\nexport var LifeCycle = (AbstractLifeCycle);\n//# sourceMappingURL=lifeCycle.js.map","import { DOCS_TROUBLESHOOTING, MORE_DETAILS, display } from '../tools/display';\nimport { objectValues } from '../tools/utils/polyfills';\nimport { isPageExitReason } from '../browser/pageExitObservable';\nimport { jsonStringify } from '../tools/serialisation/jsonStringify';\nimport { computeBytesCount } from '../tools/utils/byteUtils';\nexport function createBatch(_a) {\n    var encoder = _a.encoder, request = _a.request, flushController = _a.flushController, messageBytesLimit = _a.messageBytesLimit;\n    var upsertBuffer = {};\n    var flushSubscription = flushController.flushObservable.subscribe(function (event) { return flush(event); });\n    function push(serializedMessage, estimatedMessageBytesCount, key) {\n        flushController.notifyBeforeAddMessage(estimatedMessageBytesCount);\n        if (key !== undefined) {\n            upsertBuffer[key] = serializedMessage;\n            flushController.notifyAfterAddMessage();\n        }\n        else {\n            encoder.write(encoder.isEmpty ? serializedMessage : \"\\n\".concat(serializedMessage), function (realMessageBytesCount) {\n                flushController.notifyAfterAddMessage(realMessageBytesCount - estimatedMessageBytesCount);\n            });\n        }\n    }\n    function hasMessageFor(key) {\n        return key !== undefined && upsertBuffer[key] !== undefined;\n    }\n    function remove(key) {\n        var removedMessage = upsertBuffer[key];\n        delete upsertBuffer[key];\n        var messageBytesCount = encoder.estimateEncodedBytesCount(removedMessage);\n        flushController.notifyAfterRemoveMessage(messageBytesCount);\n    }\n    function addOrUpdate(message, key) {\n        var serializedMessage = jsonStringify(message);\n        var estimatedMessageBytesCount = encoder.estimateEncodedBytesCount(serializedMessage);\n        if (estimatedMessageBytesCount >= messageBytesLimit) {\n            display.warn(\"Discarded a message whose size was bigger than the maximum allowed size \".concat(messageBytesLimit, \"KB. \").concat(MORE_DETAILS, \" \").concat(DOCS_TROUBLESHOOTING, \"/#technical-limitations\"));\n            return;\n        }\n        if (hasMessageFor(key)) {\n            remove(key);\n        }\n        push(serializedMessage, estimatedMessageBytesCount, key);\n    }\n    function flush(event) {\n        var upsertMessages = objectValues(upsertBuffer).join('\\n');\n        upsertBuffer = {};\n        var isPageExit = isPageExitReason(event.reason);\n        var send = isPageExit ? request.sendOnExit : request.send;\n        if (isPageExit &&\n            // Note: checking that the encoder is async is not strictly needed, but it's an optimization:\n            // if the encoder is async we need to send two requests in some cases (one for encoded data\n            // and the other for non-encoded data). But if it's not async, we don't have to worry about\n            // it and always send a single request.\n            encoder.isAsync) {\n            var encoderResult = encoder.finishSync();\n            // Send encoded messages\n            if (encoderResult.outputBytesCount) {\n                send(formatPayloadFromEncoder(encoderResult));\n            }\n            // Send messages that are not yet encoded at this point\n            var pendingMessages = [encoderResult.pendingData, upsertMessages].filter(Boolean).join('\\n');\n            if (pendingMessages) {\n                send({\n                    data: pendingMessages,\n                    bytesCount: computeBytesCount(pendingMessages),\n                });\n            }\n        }\n        else {\n            if (upsertMessages) {\n                encoder.write(encoder.isEmpty ? upsertMessages : \"\\n\".concat(upsertMessages));\n            }\n            encoder.finish(function (encoderResult) {\n                send(formatPayloadFromEncoder(encoderResult));\n            });\n        }\n    }\n    return {\n        flushController: flushController,\n        add: addOrUpdate,\n        upsert: addOrUpdate,\n        stop: flushSubscription.unsubscribe,\n    };\n}\nfunction formatPayloadFromEncoder(encoderResult) {\n    var data;\n    if (typeof encoderResult.output === 'string') {\n        data = encoderResult.output;\n    }\n    else {\n        data = new Blob([encoderResult.output], {\n            // This will set the 'Content-Type: text/plain' header. Reasoning:\n            // * The intake rejects the request if there is no content type.\n            // * The browser will issue CORS preflight requests if we set it to 'application/json', which\n            // could induce higher intake load (and maybe has other impacts).\n            // * Also it's not quite JSON, since we are concatenating multiple JSON objects separated by\n            // new lines.\n            type: 'text/plain',\n        });\n    }\n    return {\n        data: data,\n        bytesCount: encoderResult.outputBytesCount,\n        encoding: encoderResult.encoding,\n    };\n}\n//# sourceMappingURL=batch.js.map","import { setTimeout } from '../tools/timer';\nimport { clocksNow, ONE_MINUTE, ONE_SECOND } from '../tools/utils/timeUtils';\nimport { ONE_MEBI_BYTE, ONE_KIBI_BYTE } from '../tools/utils/byteUtils';\nimport { isServerError } from '../tools/utils/responseUtils';\nimport { ErrorSource } from '../domain/error/error.types';\nexport var MAX_ONGOING_BYTES_COUNT = 80 * ONE_KIBI_BYTE;\nexport var MAX_ONGOING_REQUESTS = 32;\nexport var MAX_QUEUE_BYTES_COUNT = 3 * ONE_MEBI_BYTE;\nexport var MAX_BACKOFF_TIME = ONE_MINUTE;\nexport var INITIAL_BACKOFF_TIME = ONE_SECOND;\nexport function sendWithRetryStrategy(payload, state, sendStrategy, trackType, reportError) {\n    if (state.transportStatus === 0 /* TransportStatus.UP */ &&\n        state.queuedPayloads.size() === 0 &&\n        state.bandwidthMonitor.canHandle(payload)) {\n        send(payload, state, sendStrategy, {\n            onSuccess: function () { return retryQueuedPayloads(0 /* RetryReason.AFTER_SUCCESS */, state, sendStrategy, trackType, reportError); },\n            onFailure: function () {\n                state.queuedPayloads.enqueue(payload);\n                scheduleRetry(state, sendStrategy, trackType, reportError);\n            },\n        });\n    }\n    else {\n        state.queuedPayloads.enqueue(payload);\n    }\n}\nfunction scheduleRetry(state, sendStrategy, trackType, reportError) {\n    if (state.transportStatus !== 2 /* TransportStatus.DOWN */) {\n        return;\n    }\n    setTimeout(function () {\n        var payload = state.queuedPayloads.first();\n        send(payload, state, sendStrategy, {\n            onSuccess: function () {\n                state.queuedPayloads.dequeue();\n                state.currentBackoffTime = INITIAL_BACKOFF_TIME;\n                retryQueuedPayloads(1 /* RetryReason.AFTER_RESUME */, state, sendStrategy, trackType, reportError);\n            },\n            onFailure: function () {\n                state.currentBackoffTime = Math.min(MAX_BACKOFF_TIME, state.currentBackoffTime * 2);\n                scheduleRetry(state, sendStrategy, trackType, reportError);\n            },\n        });\n    }, state.currentBackoffTime);\n}\nfunction send(payload, state, sendStrategy, _a) {\n    var onSuccess = _a.onSuccess, onFailure = _a.onFailure;\n    state.bandwidthMonitor.add(payload);\n    sendStrategy(payload, function (response) {\n        state.bandwidthMonitor.remove(payload);\n        if (!shouldRetryRequest(response)) {\n            state.transportStatus = 0 /* TransportStatus.UP */;\n            onSuccess();\n        }\n        else {\n            // do not consider transport down if another ongoing request could succeed\n            state.transportStatus =\n                state.bandwidthMonitor.ongoingRequestCount > 0 ? 1 /* TransportStatus.FAILURE_DETECTED */ : 2 /* TransportStatus.DOWN */;\n            payload.retry = {\n                count: payload.retry ? payload.retry.count + 1 : 1,\n                lastFailureStatus: response.status,\n            };\n            onFailure();\n        }\n    });\n}\nfunction retryQueuedPayloads(reason, state, sendStrategy, trackType, reportError) {\n    if (reason === 0 /* RetryReason.AFTER_SUCCESS */ && state.queuedPayloads.isFull() && !state.queueFullReported) {\n        reportError({\n            message: \"Reached max \".concat(trackType, \" events size queued for upload: \").concat(MAX_QUEUE_BYTES_COUNT / ONE_MEBI_BYTE, \"MiB\"),\n            source: ErrorSource.AGENT,\n            startClocks: clocksNow(),\n        });\n        state.queueFullReported = true;\n    }\n    var previousQueue = state.queuedPayloads;\n    state.queuedPayloads = newPayloadQueue();\n    while (previousQueue.size() > 0) {\n        sendWithRetryStrategy(previousQueue.dequeue(), state, sendStrategy, trackType, reportError);\n    }\n}\nfunction shouldRetryRequest(response) {\n    return (response.type !== 'opaque' &&\n        ((response.status === 0 && !navigator.onLine) ||\n            response.status === 408 ||\n            response.status === 429 ||\n            isServerError(response.status)));\n}\nexport function newRetryState() {\n    return {\n        transportStatus: 0 /* TransportStatus.UP */,\n        currentBackoffTime: INITIAL_BACKOFF_TIME,\n        bandwidthMonitor: newBandwidthMonitor(),\n        queuedPayloads: newPayloadQueue(),\n        queueFullReported: false,\n    };\n}\nfunction newPayloadQueue() {\n    var queue = [];\n    return {\n        bytesCount: 0,\n        enqueue: function (payload) {\n            if (this.isFull()) {\n                return;\n            }\n            queue.push(payload);\n            this.bytesCount += payload.bytesCount;\n        },\n        first: function () {\n            return queue[0];\n        },\n        dequeue: function () {\n            var payload = queue.shift();\n            if (payload) {\n                this.bytesCount -= payload.bytesCount;\n            }\n            return payload;\n        },\n        size: function () {\n            return queue.length;\n        },\n        isFull: function () {\n            return this.bytesCount >= MAX_QUEUE_BYTES_COUNT;\n        },\n    };\n}\nfunction newBandwidthMonitor() {\n    return {\n        ongoingRequestCount: 0,\n        ongoingByteCount: 0,\n        canHandle: function (payload) {\n            return (this.ongoingRequestCount === 0 ||\n                (this.ongoingByteCount + payload.bytesCount <= MAX_ONGOING_BYTES_COUNT &&\n                    this.ongoingRequestCount < MAX_ONGOING_REQUESTS));\n        },\n        add: function (payload) {\n            this.ongoingRequestCount += 1;\n            this.ongoingByteCount += payload.bytesCount;\n        },\n        remove: function (payload) {\n            this.ongoingRequestCount -= 1;\n            this.ongoingByteCount -= payload.bytesCount;\n        },\n    };\n}\n//# sourceMappingURL=sendWithRetryStrategy.js.map","import { addTelemetryError } from '../domain/telemetry';\nimport { monitor } from '../tools/monitor';\nimport { addEventListener } from '../browser/addEventListener';\nimport { newRetryState, sendWithRetryStrategy } from './sendWithRetryStrategy';\nexport function createHttpRequest(configuration, endpointBuilder, bytesLimit, reportError) {\n    var retryState = newRetryState();\n    var sendStrategyForRetry = function (payload, onResponse) {\n        return fetchKeepAliveStrategy(configuration, endpointBuilder, bytesLimit, payload, onResponse);\n    };\n    return {\n        send: function (payload) {\n            sendWithRetryStrategy(payload, retryState, sendStrategyForRetry, endpointBuilder.trackType, reportError);\n        },\n        /**\n         * Since fetch keepalive behaves like regular fetch on Firefox,\n         * keep using sendBeaconStrategy on exit\n         */\n        sendOnExit: function (payload) {\n            sendBeaconStrategy(configuration, endpointBuilder, bytesLimit, payload);\n        },\n    };\n}\nfunction sendBeaconStrategy(configuration, endpointBuilder, bytesLimit, payload) {\n    var canUseBeacon = !!navigator.sendBeacon && payload.bytesCount < bytesLimit;\n    if (canUseBeacon) {\n        try {\n            var beaconUrl = endpointBuilder.build('beacon', payload);\n            var isQueued = navigator.sendBeacon(beaconUrl, payload.data);\n            if (isQueued) {\n                return;\n            }\n        }\n        catch (e) {\n            reportBeaconError(e);\n        }\n    }\n    var xhrUrl = endpointBuilder.build('xhr', payload);\n    sendXHR(configuration, xhrUrl, payload.data);\n}\nvar hasReportedBeaconError = false;\nfunction reportBeaconError(e) {\n    if (!hasReportedBeaconError) {\n        hasReportedBeaconError = true;\n        addTelemetryError(e);\n    }\n}\nexport function fetchKeepAliveStrategy(configuration, endpointBuilder, bytesLimit, payload, onResponse) {\n    var canUseKeepAlive = isKeepAliveSupported() && payload.bytesCount < bytesLimit;\n    if (canUseKeepAlive) {\n        var fetchUrl = endpointBuilder.build('fetch', payload);\n        fetch(fetchUrl, { method: 'POST', body: payload.data, keepalive: true, mode: 'cors' }).then(monitor(function (response) { return onResponse === null || onResponse === void 0 ? void 0 : onResponse({ status: response.status, type: response.type }); }), monitor(function () {\n            var xhrUrl = endpointBuilder.build('xhr', payload);\n            // failed to queue the request\n            sendXHR(configuration, xhrUrl, payload.data, onResponse);\n        }));\n    }\n    else {\n        var xhrUrl = endpointBuilder.build('xhr', payload);\n        sendXHR(configuration, xhrUrl, payload.data, onResponse);\n    }\n}\nfunction isKeepAliveSupported() {\n    // Request can throw, cf https://developer.mozilla.org/en-US/docs/Web/API/Request/Request#errors\n    try {\n        return window.Request && 'keepalive' in new Request('http://a');\n    }\n    catch (_a) {\n        return false;\n    }\n}\nexport function sendXHR(configuration, url, data, onResponse) {\n    var request = new XMLHttpRequest();\n    request.open('POST', url, true);\n    if (data instanceof Blob) {\n        // When using a Blob instance, IE does not use its 'type' to define the 'Content-Type' header\n        // automatically, so the intake request ends up being rejected with an HTTP status 415\n        // Defining the header manually fixes this issue.\n        request.setRequestHeader('Content-Type', data.type);\n    }\n    addEventListener(configuration, request, 'loadend', function () {\n        onResponse === null || onResponse === void 0 ? void 0 : onResponse({ status: request.status });\n    }, {\n        // prevent multiple onResponse callbacks\n        // if the xhr instance is reused by a third party\n        once: true,\n    });\n    request.send(data);\n}\n//# sourceMappingURL=httpRequest.js.map","import { Observable } from '../tools/observable';\nimport { clearTimeout, setTimeout } from '../tools/timer';\n/**\n * Returns a \"flush controller\", responsible of notifying when flushing a pool of pending data needs\n * to happen. The implementation is designed to support both synchronous and asynchronous usages,\n * but relies on invariants described in each method documentation to keep a coherent state.\n */\nexport function createFlushController(_a) {\n    var messagesLimit = _a.messagesLimit, bytesLimit = _a.bytesLimit, durationLimit = _a.durationLimit, pageExitObservable = _a.pageExitObservable, sessionExpireObservable = _a.sessionExpireObservable;\n    var pageExitSubscription = pageExitObservable.subscribe(function (event) { return flush(event.reason); });\n    var sessionExpireSubscription = sessionExpireObservable.subscribe(function () { return flush('session_expire'); });\n    var flushObservable = new Observable(function () { return function () {\n        pageExitSubscription.unsubscribe();\n        sessionExpireSubscription.unsubscribe();\n    }; });\n    var currentBytesCount = 0;\n    var currentMessagesCount = 0;\n    function flush(flushReason) {\n        if (currentMessagesCount === 0) {\n            return;\n        }\n        var messagesCount = currentMessagesCount;\n        var bytesCount = currentBytesCount;\n        currentMessagesCount = 0;\n        currentBytesCount = 0;\n        cancelDurationLimitTimeout();\n        flushObservable.notify({\n            reason: flushReason,\n            messagesCount: messagesCount,\n            bytesCount: bytesCount,\n        });\n    }\n    var durationLimitTimeoutId;\n    function scheduleDurationLimitTimeout() {\n        if (durationLimitTimeoutId === undefined) {\n            durationLimitTimeoutId = setTimeout(function () {\n                flush('duration_limit');\n            }, durationLimit);\n        }\n    }\n    function cancelDurationLimitTimeout() {\n        clearTimeout(durationLimitTimeoutId);\n        durationLimitTimeoutId = undefined;\n    }\n    return {\n        flushObservable: flushObservable,\n        get messagesCount() {\n            return currentMessagesCount;\n        },\n        /**\n         * Notifies that a message will be added to a pool of pending messages waiting to be flushed.\n         *\n         * This function needs to be called synchronously, right before adding the message, so no flush\n         * event can happen after `notifyBeforeAddMessage` and before adding the message.\n         *\n         * @param estimatedMessageBytesCount: an estimation of the message bytes count once it is\n         * actually added.\n         */\n        notifyBeforeAddMessage: function (estimatedMessageBytesCount) {\n            if (currentBytesCount + estimatedMessageBytesCount >= bytesLimit) {\n                flush('bytes_limit');\n            }\n            // Consider the message to be added now rather than in `notifyAfterAddMessage`, because if no\n            // message was added yet and `notifyAfterAddMessage` is called asynchronously, we still want\n            // to notify when a flush is needed (for example on page exit).\n            currentMessagesCount += 1;\n            currentBytesCount += estimatedMessageBytesCount;\n            scheduleDurationLimitTimeout();\n        },\n        /**\n         * Notifies that a message *was* added to a pool of pending messages waiting to be flushed.\n         *\n         * This function can be called asynchronously after the message was added, but in this case it\n         * should not be called if a flush event occurred in between.\n         *\n         * @param messageBytesCountDiff: the difference between the estimated message bytes count and\n         * its actual bytes count once added to the pool.\n         */\n        notifyAfterAddMessage: function (messageBytesCountDiff) {\n            if (messageBytesCountDiff === void 0) { messageBytesCountDiff = 0; }\n            currentBytesCount += messageBytesCountDiff;\n            if (currentMessagesCount >= messagesLimit) {\n                flush('messages_limit');\n            }\n            else if (currentBytesCount >= bytesLimit) {\n                flush('bytes_limit');\n            }\n        },\n        /**\n         * Notifies that a message was removed from a pool of pending messages waiting to be flushed.\n         *\n         * This function needs to be called synchronously, right after removing the message, so no flush\n         * event can happen after removing the message and before `notifyAfterRemoveMessage`.\n         *\n         * @param messageBytesCount: the message bytes count that was added to the pool. Should\n         * correspond to the sum of bytes counts passed to `notifyBeforeAddMessage` and\n         * `notifyAfterAddMessage`.\n         */\n        notifyAfterRemoveMessage: function (messageBytesCount) {\n            currentBytesCount -= messageBytesCount;\n            currentMessagesCount -= 1;\n            if (currentMessagesCount === 0) {\n                cancelDurationLimitTimeout();\n            }\n        },\n    };\n}\n//# sourceMappingURL=flushController.js.map","import { createBatch } from './batch';\nimport { createHttpRequest } from './httpRequest';\nimport { createFlushController } from './flushController';\nexport function startBatchWithReplica(configuration, primary, replica, reportError, pageExitObservable, sessionExpireObservable, batchFactoryImp) {\n    if (batchFactoryImp === void 0) { batchFactoryImp = createBatch; }\n    var primaryBatch = createBatchFromConfig(configuration, primary);\n    var replicaBatch = replica && createBatchFromConfig(configuration, replica);\n    function createBatchFromConfig(configuration, _a) {\n        var endpoint = _a.endpoint, encoder = _a.encoder;\n        return batchFactoryImp({\n            encoder: encoder,\n            request: createHttpRequest(configuration, endpoint, configuration.batchBytesLimit, reportError),\n            flushController: createFlushController({\n                messagesLimit: configuration.batchMessagesLimit,\n                bytesLimit: configuration.batchBytesLimit,\n                durationLimit: configuration.flushTimeout,\n                pageExitObservable: pageExitObservable,\n                sessionExpireObservable: sessionExpireObservable,\n            }),\n            messageBytesLimit: configuration.messageBytesLimit,\n        });\n    }\n    return {\n        flushObservable: primaryBatch.flushController.flushObservable,\n        add: function (message, replicated) {\n            if (replicated === void 0) { replicated = true; }\n            primaryBatch.add(message);\n            if (replicaBatch && replicated) {\n                replicaBatch.add(replica.transformMessage ? replica.transformMessage(message) : message);\n            }\n        },\n        upsert: function (message, key) {\n            primaryBatch.upsert(message, key);\n            if (replicaBatch) {\n                replicaBatch.upsert(replica.transformMessage ? replica.transformMessage(message) : message, key);\n            }\n        },\n        stop: function () {\n            primaryBatch.stop();\n            if (replicaBatch) {\n                replicaBatch.stop();\n            }\n        },\n    };\n}\n//# sourceMappingURL=startBatchWithReplica.js.map","import { computeBytesCount } from './utils/byteUtils';\nexport function createIdentityEncoder() {\n    var output = '';\n    var outputBytesCount = 0;\n    return {\n        isAsync: false,\n        get isEmpty() {\n            return !output;\n        },\n        write: function (data, callback) {\n            var additionalEncodedBytesCount = computeBytesCount(data);\n            outputBytesCount += additionalEncodedBytesCount;\n            output += data;\n            if (callback) {\n                callback(additionalEncodedBytesCount);\n            }\n        },\n        finish: function (callback) {\n            callback(this.finishSync());\n        },\n        finishSync: function () {\n            var result = {\n                output: output,\n                outputBytesCount: outputBytesCount,\n                rawBytesCount: outputBytesCount,\n                pendingData: '',\n            };\n            output = '';\n            outputBytesCount = 0;\n            return result;\n        },\n        estimateEncodedBytesCount: function (data) {\n            return data.length;\n        },\n    };\n}\n//# sourceMappingURL=encoder.js.map","import { startTelemetry, canUseEventBridge, getEventBridge, startBatchWithReplica, createIdentityEncoder, isTelemetryReplicationAllowed, addTelemetryConfiguration, drainPreStartTelemetry, } from '@datadog/browser-core';\nimport { getRUMInternalContext } from './contexts/rumInternalContext';\nimport { serializeLogsConfiguration } from './configuration';\nexport function startLogsTelemetry(initConfiguration, configuration, reportError, pageExitObservable, session) {\n    var telemetry = startTelemetry(\"browser-logs-sdk\" /* TelemetryService.LOGS */, configuration);\n    telemetry.setContextProvider(function () {\n        var _a, _b, _c, _d, _e, _f;\n        return ({\n            application: {\n                id: (_a = getRUMInternalContext()) === null || _a === void 0 ? void 0 : _a.application_id,\n            },\n            session: {\n                id: (_b = session.findTrackedSession()) === null || _b === void 0 ? void 0 : _b.id,\n            },\n            view: {\n                id: (_d = (_c = getRUMInternalContext()) === null || _c === void 0 ? void 0 : _c.view) === null || _d === void 0 ? void 0 : _d.id,\n            },\n            action: {\n                id: (_f = (_e = getRUMInternalContext()) === null || _e === void 0 ? void 0 : _e.user_action) === null || _f === void 0 ? void 0 : _f.id,\n            },\n        });\n    });\n    var cleanupTasks = [];\n    if (canUseEventBridge()) {\n        var bridge_1 = getEventBridge();\n        var telemetrySubscription_1 = telemetry.observable.subscribe(function (event) { return bridge_1.send('internal_telemetry', event); });\n        cleanupTasks.push(function () { return telemetrySubscription_1.unsubscribe(); });\n    }\n    else {\n        var telemetryBatch_1 = startBatchWithReplica(configuration, {\n            endpoint: configuration.rumEndpointBuilder,\n            encoder: createIdentityEncoder(),\n        }, configuration.replica && {\n            endpoint: configuration.replica.rumEndpointBuilder,\n            encoder: createIdentityEncoder(),\n        }, reportError, pageExitObservable, session.expireObservable);\n        cleanupTasks.push(function () { return telemetryBatch_1.stop(); });\n        var telemetrySubscription_2 = telemetry.observable.subscribe(function (event) {\n            return telemetryBatch_1.add(event, isTelemetryReplicationAllowed(configuration));\n        });\n        cleanupTasks.push(function () { return telemetrySubscription_2.unsubscribe(); });\n    }\n    drainPreStartTelemetry();\n    addTelemetryConfiguration(serializeLogsConfiguration(initConfiguration));\n    return {\n        telemetry: telemetry,\n        stop: function () {\n            cleanupTasks.forEach(function (task) { return task(); });\n        },\n    };\n}\n//# sourceMappingURL=logsTelemetry.js.map","import { defineGlobal, getGlobalObject } from '@datadog/browser-core';\nimport { makeLogsPublicApi } from '../boot/logsPublicApi';\nimport { startLogs } from '../boot/startLogs';\nexport { Logger, HandlerType } from '../domain/logger';\nexport { StatusType } from '../domain/logger/isAuthorized';\nexport var datadogLogs = makeLogsPublicApi(startLogs);\ndefineGlobal(getGlobalObject(), 'DD_LOGS', datadogLogs);\n//# sourceMappingURL=main.js.map","export function buildCommonContext(globalContextManager, userContextManager) {\n    return {\n        view: {\n            referrer: document.referrer,\n            url: window.location.href,\n        },\n        context: globalContextManager.getContext(),\n        user: userContextManager.getContext(),\n    };\n}\n//# sourceMappingURL=commonContext.js.map","import { catchUserErrors } from '../tools/catchUserErrors';\nimport { setDebugMode } from '../tools/monitor';\nimport { assign } from '../tools/utils/polyfills';\nimport { display } from '../tools/display';\nexport function makePublicApi(stub) {\n    var publicApi = assign({\n        version: \"5.27.0\",\n        // This API method is intentionally not monitored, since the only thing executed is the\n        // user-provided 'callback'.  All SDK usages executed in the callback should be monitored, and\n        // we don't want to interfere with the user uncaught exceptions.\n        onReady: function (callback) {\n            callback();\n        },\n    }, stub);\n    // Add a \"hidden\" property to set debug mode. We define it that way to hide it\n    // as much as possible but of course it's not a real protection.\n    Object.defineProperty(publicApi, '_setDebug', {\n        get: function () {\n            return setDebugMode;\n        },\n        enumerable: false,\n    });\n    return publicApi;\n}\nexport function defineGlobal(global, name, api) {\n    var existingGlobalVariable = global[name];\n    if (existingGlobalVariable && !existingGlobalVariable.q && existingGlobalVariable.version) {\n        display.warn('SDK is loaded more than once. This is unsupported and might have unexpected behavior.');\n    }\n    global[name] = api;\n    if (existingGlobalVariable && existingGlobalVariable.q) {\n        existingGlobalVariable.q.forEach(function (fn) { return catchUserErrors(fn, 'onReady callback threw an error:')(); });\n    }\n}\n//# sourceMappingURL=init.js.map","import { sendToExtension, createPageExitObservable, willSyntheticsInjectRum, canUseEventBridge, } from '@datadog/browser-core';\nimport { startLogsSessionManager, startLogsSessionManagerStub } from '../domain/logsSessionManager';\nimport { startLogsAssembly } from '../domain/assembly';\nimport { startConsoleCollection } from '../domain/console/consoleCollection';\nimport { startReportCollection } from '../domain/report/reportCollection';\nimport { startNetworkErrorCollection } from '../domain/networkError/networkErrorCollection';\nimport { startRuntimeErrorCollection } from '../domain/runtimeError/runtimeErrorCollection';\nimport { LifeCycle } from '../domain/lifeCycle';\nimport { startLoggerCollection } from '../domain/logger/loggerCollection';\nimport { startLogsBatch } from '../transport/startLogsBatch';\nimport { startLogsBridge } from '../transport/startLogsBridge';\nimport { startInternalContext } from '../domain/contexts/internalContext';\nimport { startReportError } from '../domain/reportError';\nimport { startLogsTelemetry } from '../domain/logsTelemetry';\nexport function startLogs(initConfiguration, configuration, getCommonContext, \n// `startLogs` and its subcomponents assume tracking consent is granted initially and starts\n// collecting logs unconditionally. As such, `startLogs` should be called with a\n// `trackingConsentState` set to \"granted\".\ntrackingConsentState) {\n    var lifeCycle = new LifeCycle();\n    var cleanupTasks = [];\n    lifeCycle.subscribe(1 /* LifeCycleEventType.LOG_COLLECTED */, function (log) { return sendToExtension('logs', log); });\n    var reportError = startReportError(lifeCycle);\n    var pageExitObservable = createPageExitObservable(configuration);\n    var session = configuration.sessionStoreStrategyType && !canUseEventBridge() && !willSyntheticsInjectRum()\n        ? startLogsSessionManager(configuration, trackingConsentState)\n        : startLogsSessionManagerStub(configuration);\n    var stopLogsTelemetry = startLogsTelemetry(initConfiguration, configuration, reportError, pageExitObservable, session).stop;\n    cleanupTasks.push(function () { return stopLogsTelemetry(); });\n    startNetworkErrorCollection(configuration, lifeCycle);\n    startRuntimeErrorCollection(configuration, lifeCycle);\n    startConsoleCollection(configuration, lifeCycle);\n    startReportCollection(configuration, lifeCycle);\n    var handleLog = startLoggerCollection(lifeCycle).handleLog;\n    startLogsAssembly(session, configuration, lifeCycle, getCommonContext, reportError);\n    if (!canUseEventBridge()) {\n        var stopLogsBatch_1 = startLogsBatch(configuration, lifeCycle, reportError, pageExitObservable, session).stop;\n        cleanupTasks.push(function () { return stopLogsBatch_1(); });\n    }\n    else {\n        startLogsBridge(lifeCycle);\n    }\n    var internalContext = startInternalContext(session);\n    return {\n        handleLog: handleLog,\n        getInternalContext: internalContext.get,\n        stop: function () {\n            cleanupTasks.forEach(function (task) { return task(); });\n        },\n    };\n}\n//# sourceMappingURL=startLogs.js.map","import { ErrorSource, addTelemetryDebug } from '@datadog/browser-core';\nimport { StatusType } from './logger/isAuthorized';\nexport function startReportError(lifeCycle) {\n    return function (error) {\n        lifeCycle.notify(0 /* LifeCycleEventType.RAW_LOG_COLLECTED */, {\n            rawLogsEvent: {\n                message: error.message,\n                date: error.startClocks.timeStamp,\n                origin: ErrorSource.AGENT,\n                status: StatusType.error,\n            },\n        });\n        addTelemetryDebug('Error reported to customer', { 'error.message': error.message });\n    };\n}\n//# sourceMappingURL=reportError.js.map","import { noop, ErrorSource, trackRuntimeError, Observable } from '@datadog/browser-core';\nimport { StatusType } from '../logger/isAuthorized';\nimport { createErrorFieldFromRawError } from '../createErrorFieldFromRawError';\nexport function startRuntimeErrorCollection(configuration, lifeCycle) {\n    if (!configuration.forwardErrorsToLogs) {\n        return { stop: noop };\n    }\n    var rawErrorObservable = new Observable();\n    var stopRuntimeErrorTracking = trackRuntimeError(rawErrorObservable).stop;\n    var rawErrorSubscription = rawErrorObservable.subscribe(function (rawError) {\n        lifeCycle.notify(0 /* LifeCycleEventType.RAW_LOG_COLLECTED */, {\n            rawLogsEvent: {\n                message: rawError.message,\n                date: rawError.startClocks.timeStamp,\n                error: createErrorFieldFromRawError(rawError),\n                origin: ErrorSource.SOURCE,\n                status: StatusType.error,\n            },\n        });\n    });\n    return {\n        stop: function () {\n            stopRuntimeErrorTracking();\n            rawErrorSubscription.unsubscribe();\n        },\n    };\n}\n//# sourceMappingURL=runtimeErrorCollection.js.map","import { timeStampNow, ErrorSource, getFileFromStackTraceString, initReportObservable } from '@datadog/browser-core';\nimport { StatusType } from '../logger/isAuthorized';\nimport { createErrorFieldFromRawError } from '../createErrorFieldFromRawError';\nexport function startReportCollection(configuration, lifeCycle) {\n    var reportSubscription = initReportObservable(configuration, configuration.forwardReports).subscribe(function (rawError) {\n        var message = rawError.message;\n        var error;\n        var status = rawError.originalError.type === 'deprecation' ? StatusType.warn : StatusType.error;\n        if (status === StatusType.error) {\n            error = createErrorFieldFromRawError(rawError);\n        }\n        else if (rawError.stack) {\n            message += \" Found in \".concat(getFileFromStackTraceString(rawError.stack));\n        }\n        lifeCycle.notify(0 /* LifeCycleEventType.RAW_LOG_COLLECTED */, {\n            rawLogsEvent: {\n                date: timeStampNow(),\n                message: message,\n                origin: ErrorSource.REPORT,\n                error: error,\n                status: status,\n            },\n        });\n    });\n    return {\n        stop: function () {\n            reportSubscription.unsubscribe();\n        },\n    };\n}\n//# sourceMappingURL=reportCollection.js.map","export function startInternalContext(sessionManager) {\n    return {\n        get: function (startTime) {\n            var trackedSession = sessionManager.findTrackedSession(startTime);\n            if (trackedSession) {\n                return {\n                    session_id: trackedSession.id,\n                };\n            }\n        },\n    };\n}\n//# sourceMappingURL=internalContext.js.map","import { getEventBridge } from '@datadog/browser-core';\nexport function startLogsBridge(lifeCycle) {\n    var bridge = getEventBridge();\n    lifeCycle.subscribe(1 /* LifeCycleEventType.LOG_COLLECTED */, function (serverLogsEvent) {\n        bridge.send('log', serverLogsEvent);\n    });\n}\n//# sourceMappingURL=startLogsBridge.js.map","import { createIdentityEncoder, startBatchWithReplica } from '@datadog/browser-core';\nexport function startLogsBatch(configuration, lifeCycle, reportError, pageExitObservable, session) {\n    var batch = startBatchWithReplica(configuration, {\n        endpoint: configuration.logsEndpointBuilder,\n        encoder: createIdentityEncoder(),\n    }, configuration.replica && {\n        endpoint: configuration.replica.logsEndpointBuilder,\n        encoder: createIdentityEncoder(),\n    }, reportError, pageExitObservable, session.expireObservable);\n    lifeCycle.subscribe(1 /* LifeCycleEventType.LOG_COLLECTED */, function (serverLogsEvent) {\n        batch.add(serverLogsEvent);\n    });\n    return batch;\n}\n//# sourceMappingURL=startLogsBatch.js.map","import { Observable } from '../tools/observable';\nexport const TrackingConsent = {\n    GRANTED: 'granted',\n    NOT_GRANTED: 'not-granted',\n};\nexport function createTrackingConsentState(currentConsent) {\n    const observable = new Observable();\n    return {\n        tryToInit(trackingConsent) {\n            if (!currentConsent) {\n                currentConsent = trackingConsent;\n            }\n        },\n        update(trackingConsent) {\n            currentConsent = trackingConsent;\n            observable.notify();\n        },\n        isGranted() {\n            return currentConsent === TrackingConsent.GRANTED;\n        },\n        observable,\n    };\n}\n//# sourceMappingURL=trackingConsent.js.map","import { computeBytesCount } from './utils/byteUtils';\nexport function createIdentityEncoder() {\n    let output = '';\n    let outputBytesCount = 0;\n    return {\n        isAsync: false,\n        get isEmpty() {\n            return !output;\n        },\n        write(data, callback) {\n            const additionalEncodedBytesCount = computeBytesCount(data);\n            outputBytesCount += additionalEncodedBytesCount;\n            output += data;\n            if (callback) {\n                callback(additionalEncodedBytesCount);\n            }\n        },\n        finish(callback) {\n            callback(this.finishSync());\n        },\n        finishSync() {\n            const result = {\n                output,\n                outputBytesCount,\n                rawBytesCount: outputBytesCount,\n                pendingData: '',\n            };\n            output = '';\n            outputBytesCount = 0;\n            return result;\n        },\n        estimateEncodedBytesCount(data) {\n            return data.length;\n        },\n    };\n}\n//# sourceMappingURL=encoder.js.map","// Use a const instead of const enum to avoid inlining the enum values in the bundle and save bytes\nexport const CustomerContextKey = {\n    userContext: 'userContext',\n    globalContext: 'globalContext',\n    accountContext: 'accountContext',\n};\n// Use a const instead of const enum to avoid inlining the enum values in the bundle and save bytes\nexport const ContextManagerMethod = {\n    getContext: 'getContext',\n    setContext: 'setContext',\n    setContextProperty: 'setContextProperty',\n    removeContextProperty: 'removeContextProperty',\n    clearContext: 'clearContext',\n};\n//# sourceMappingURL=contextConstants.js.map","import { display } from '../tools/display';\nexport function displayAlreadyInitializedError(sdkName, initConfiguration) {\n    if (!initConfiguration.silentMultipleInit) {\n        display.error(`${sdkName} is already initialized.`);\n    }\n}\n//# sourceMappingURL=displayAlreadyInitializedError.js.map","/**\n * UUID v4\n * from https://gist.github.com/jed/982883\n */\nexport function generateUUID(placeholder) {\n    return placeholder\n        ? // eslint-disable-next-line  no-bitwise\n            (parseInt(placeholder, 10) ^ ((Math.random() * 16) >> (parseInt(placeholder, 10) / 4))).toString(16)\n        : `${1e7}-${1e3}-${4e3}-${8e3}-${1e11}`.replace(/[018]/g, generateUUID);\n}\nconst COMMA_SEPARATED_KEY_VALUE = /([\\w-]+)\\s*=\\s*([^;]+)/g;\nexport function findCommaSeparatedValue(rawString, name) {\n    COMMA_SEPARATED_KEY_VALUE.lastIndex = 0;\n    while (true) {\n        const match = COMMA_SEPARATED_KEY_VALUE.exec(rawString);\n        if (match) {\n            if (match[1] === name) {\n                return match[2];\n            }\n        }\n        else {\n            break;\n        }\n    }\n}\nexport function findCommaSeparatedValues(rawString) {\n    const result = new Map();\n    COMMA_SEPARATED_KEY_VALUE.lastIndex = 0;\n    while (true) {\n        const match = COMMA_SEPARATED_KEY_VALUE.exec(rawString);\n        if (match) {\n            result.set(match[1], match[2]);\n        }\n        else {\n            break;\n        }\n    }\n    return result;\n}\nexport function safeTruncate(candidate, length, suffix = '') {\n    const lastChar = candidate.charCodeAt(length - 1);\n    const isLastCharSurrogatePair = lastChar >= 0xd800 && lastChar <= 0xdbff;\n    const correctedLength = isLastCharSurrogatePair ? length + 1 : length;\n    if (candidate.length <= correctedLength) {\n        return candidate;\n    }\n    return `${candidate.slice(0, correctedLength)}${suffix}`;\n}\n//# sourceMappingURL=stringUtils.js.map","import { clocksNow, combine, elapsed, generateUUID, toServerDuration } from '@datadog/browser-core';\nexport function createCustomVitalsState() {\n    const vitalsByName = new Map();\n    const vitalsByReference = new WeakMap();\n    return { vitalsByName, vitalsByReference };\n}\nexport function startVitalCollection(lifeCycle, pageStateHistory, customVitalsState) {\n    function isValid(vital) {\n        return !pageStateHistory.wasInPageStateDuringPeriod(\"frozen\" /* PageState.FROZEN */, vital.startClocks.relative, vital.duration);\n    }\n    function addDurationVital(vital) {\n        if (isValid(vital)) {\n            lifeCycle.notify(12 /* LifeCycleEventType.RAW_RUM_EVENT_COLLECTED */, processVital(vital, true));\n        }\n    }\n    return {\n        addDurationVital,\n        startDurationVital: (name, options = {}) => startDurationVital(customVitalsState, name, options),\n        stopDurationVital: (nameOrRef, options = {}) => {\n            stopDurationVital(addDurationVital, customVitalsState, nameOrRef, options);\n        },\n    };\n}\nexport function startDurationVital({ vitalsByName, vitalsByReference }, name, options = {}) {\n    const vital = {\n        name,\n        startClocks: clocksNow(),\n        context: options.context,\n        description: options.description,\n    };\n    // To avoid leaking implementation details of the vital, we return a reference to it.\n    const reference = { __dd_vital_reference: true };\n    vitalsByName.set(name, vital);\n    // To avoid memory leaks caused by the creation of numerous references (e.g., from improper useEffect implementations), we use a WeakMap.\n    vitalsByReference.set(reference, vital);\n    return reference;\n}\nexport function stopDurationVital(stopCallback, { vitalsByName, vitalsByReference }, nameOrRef, options = {}) {\n    const vitalStart = typeof nameOrRef === 'string' ? vitalsByName.get(nameOrRef) : vitalsByReference.get(nameOrRef);\n    if (!vitalStart) {\n        return;\n    }\n    stopCallback(buildDurationVital(vitalStart, vitalStart.startClocks, options, clocksNow()));\n    if (typeof nameOrRef === 'string') {\n        vitalsByName.delete(nameOrRef);\n    }\n    else {\n        vitalsByReference.delete(nameOrRef);\n    }\n}\nfunction buildDurationVital(vitalStart, startClocks, stopOptions, stopClocks) {\n    var _a;\n    return {\n        name: vitalStart.name,\n        type: \"duration\" /* VitalType.DURATION */,\n        startClocks,\n        duration: elapsed(startClocks.timeStamp, stopClocks.timeStamp),\n        context: combine(vitalStart.context, stopOptions.context),\n        description: (_a = stopOptions.description) !== null && _a !== void 0 ? _a : vitalStart.description,\n    };\n}\nfunction processVital(vital, valueComputedBySdk) {\n    const rawRumEvent = {\n        date: vital.startClocks.timeStamp,\n        vital: {\n            id: generateUUID(),\n            type: vital.type,\n            name: vital.name,\n            duration: toServerDuration(vital.duration),\n            description: vital.description,\n        },\n        type: \"vital\" /* RumEventType.VITAL */,\n    };\n    if (valueComputedBySdk) {\n        rawRumEvent._dd = {\n            vital: {\n                computed_value: true,\n            },\n        };\n    }\n    return {\n        rawRumEvent,\n        startTime: vital.startClocks.relative,\n        duration: vital.duration,\n        customerContext: vital.context,\n        domainContext: {},\n    };\n}\n//# sourceMappingURL=vitalCollection.js.map","export function callPluginsMethod(plugins, methodName, parameter) {\n    if (!plugins) {\n        return;\n    }\n    for (const plugin of plugins) {\n        const method = plugin[methodName];\n        if (method) {\n            method(parameter);\n        }\n    }\n}\n//# sourceMappingURL=plugins.js.map","import { instrumentMethod } from '../tools/instrumentMethod';\nimport { monitor } from '../tools/monitor';\nimport { Observable } from '../tools/observable';\nimport { clocksNow } from '../tools/utils/timeUtils';\nimport { normalizeUrl } from '../tools/utils/urlPolyfill';\nlet fetchObservable;\nexport function initFetchObservable() {\n    if (!fetchObservable) {\n        fetchObservable = createFetchObservable();\n    }\n    return fetchObservable;\n}\nexport function resetFetchObservable() {\n    fetchObservable = undefined;\n}\nfunction createFetchObservable() {\n    return new Observable((observable) => {\n        if (!window.fetch) {\n            return;\n        }\n        const { stop } = instrumentMethod(window, 'fetch', (call) => beforeSend(call, observable), {\n            computeHandlingStack: true,\n        });\n        return stop;\n    });\n}\nfunction beforeSend({ parameters, onPostCall, handlingStack }, observable) {\n    const [input, init] = parameters;\n    let methodFromParams = init && init.method;\n    if (methodFromParams === undefined && input instanceof Request) {\n        methodFromParams = input.method;\n    }\n    const method = methodFromParams !== undefined ? String(methodFromParams).toUpperCase() : 'GET';\n    const url = input instanceof Request ? input.url : normalizeUrl(String(input));\n    const startClocks = clocksNow();\n    const context = {\n        state: 'start',\n        init,\n        input,\n        method,\n        startClocks,\n        url,\n        handlingStack,\n    };\n    observable.notify(context);\n    // Those properties can be changed by observable subscribers\n    parameters[0] = context.input;\n    parameters[1] = context.init;\n    onPostCall((responsePromise) => afterSend(observable, responsePromise, context));\n}\nfunction afterSend(observable, responsePromise, startContext) {\n    const context = startContext;\n    function reportFetch(partialContext) {\n        context.state = 'resolve';\n        Object.assign(context, partialContext);\n        observable.notify(context);\n    }\n    responsePromise.then(monitor((response) => {\n        reportFetch({\n            response,\n            responseType: response.type,\n            status: response.status,\n            isAborted: false,\n        });\n    }), monitor((error) => {\n        var _a, _b;\n        reportFetch({\n            status: 0,\n            isAborted: ((_b = (_a = context.init) === null || _a === void 0 ? void 0 : _a.signal) === null || _b === void 0 ? void 0 : _b.aborted) || (error instanceof DOMException && error.code === DOMException.ABORT_ERR),\n            error,\n        });\n    }));\n}\n//# sourceMappingURL=fetchObservable.js.map","import { display } from '../tools/display';\nimport { ONE_MINUTE, ONE_SECOND } from '../tools/utils/timeUtils';\nimport { findCommaSeparatedValue, findCommaSeparatedValues, generateUUID } from '../tools/utils/stringUtils';\nexport function setCookie(name, value, expireDelay = 0, options) {\n    const date = new Date();\n    date.setTime(date.getTime() + expireDelay);\n    const expires = `expires=${date.toUTCString()}`;\n    const sameSite = options && options.crossSite ? 'none' : 'strict';\n    const domain = options && options.domain ? `;domain=${options.domain}` : '';\n    const secure = options && options.secure ? ';secure' : '';\n    const partitioned = options && options.partitioned ? ';partitioned' : '';\n    document.cookie = `${name}=${value};${expires};path=/;samesite=${sameSite}${domain}${secure}${partitioned}`;\n}\nexport function getCookie(name) {\n    return findCommaSeparatedValue(document.cookie, name);\n}\nlet initCookieParsed;\n/**\n * Returns a cached value of the cookie. Use this during SDK initialization (and whenever possible)\n * to avoid accessing document.cookie multiple times.\n */\nexport function getInitCookie(name) {\n    if (!initCookieParsed) {\n        initCookieParsed = findCommaSeparatedValues(document.cookie);\n    }\n    return initCookieParsed.get(name);\n}\nexport function resetInitCookies() {\n    initCookieParsed = undefined;\n}\nexport function deleteCookie(name, options) {\n    setCookie(name, '', 0, options);\n}\nexport function areCookiesAuthorized(options) {\n    if (document.cookie === undefined || document.cookie === null) {\n        return false;\n    }\n    try {\n        // Use a unique cookie name to avoid issues when the SDK is initialized multiple times during\n        // the test cookie lifetime\n        const testCookieName = `dd_cookie_test_${generateUUID()}`;\n        const testCookieValue = 'test';\n        setCookie(testCookieName, testCookieValue, ONE_MINUTE, options);\n        const isCookieCorrectlySet = getCookie(testCookieName) === testCookieValue;\n        deleteCookie(testCookieName, options);\n        return isCookieCorrectlySet;\n    }\n    catch (error) {\n        display.error(error);\n        return false;\n    }\n}\n/**\n * No API to retrieve it, number of levels for subdomain and suffix are unknown\n * strategy: find the minimal domain on which cookies are allowed to be set\n * https://web.dev/same-site-same-origin/#site\n */\nlet getCurrentSiteCache;\nexport function getCurrentSite() {\n    if (getCurrentSiteCache === undefined) {\n        // Use a unique cookie name to avoid issues when the SDK is initialized multiple times during\n        // the test cookie lifetime\n        const testCookieName = `dd_site_test_${generateUUID()}`;\n        const testCookieValue = 'test';\n        const domainLevels = window.location.hostname.split('.');\n        let candidateDomain = domainLevels.pop();\n        while (domainLevels.length && !getCookie(testCookieName)) {\n            candidateDomain = `${domainLevels.pop()}.${candidateDomain}`;\n            setCookie(testCookieName, testCookieValue, ONE_SECOND, { domain: candidateDomain });\n        }\n        deleteCookie(testCookieName, { domain: candidateDomain });\n        getCurrentSiteCache = candidateDomain;\n    }\n    return getCurrentSiteCache;\n}\n//# sourceMappingURL=cookie.js.map","import { getInitCookie } from '../../browser/cookie';\nexport const SYNTHETICS_TEST_ID_COOKIE_NAME = 'datadog-synthetics-public-id';\nexport const SYNTHETICS_RESULT_ID_COOKIE_NAME = 'datadog-synthetics-result-id';\nexport const SYNTHETICS_INJECTS_RUM_COOKIE_NAME = 'datadog-synthetics-injects-rum';\nexport function willSyntheticsInjectRum() {\n    return Boolean(window._DATADOG_SYNTHETICS_INJECTS_RUM || getInitCookie(SYNTHETICS_INJECTS_RUM_COOKIE_NAME));\n}\nexport function getSyntheticsTestId() {\n    const value = window._DATADOG_SYNTHETICS_PUBLIC_ID || getInitCookie(SYNTHETICS_TEST_ID_COOKIE_NAME);\n    return typeof value === 'string' ? value : undefined;\n}\nexport function getSyntheticsResultId() {\n    const value = window._DATADOG_SYNTHETICS_RESULT_ID || getInitCookie(SYNTHETICS_RESULT_ID_COOKIE_NAME);\n    return typeof value === 'string' ? value : undefined;\n}\n//# sourceMappingURL=syntheticsWorkerValues.js.map","export const SESSION_STORE_KEY = '_dd_s';\n//# sourceMappingURL=sessionStoreStrategy.js.map","import { ONE_HOUR, ONE_MINUTE, ONE_YEAR } from '../../tools/utils/timeUtils';\nexport const SESSION_TIME_OUT_DELAY = 4 * ONE_HOUR;\nexport const SESSION_EXPIRATION_DELAY = 15 * ONE_MINUTE;\nexport const SESSION_COOKIE_EXPIRATION_DELAY = ONE_YEAR;\nexport const SessionPersistence = {\n    COOKIE: 'cookie',\n    LOCAL_STORAGE: 'local-storage',\n};\n//# sourceMappingURL=sessionConstants.js.map","export const SESSION_ENTRY_REGEXP = /^([a-zA-Z]+)=([a-z0-9-]+)$/;\nexport const SESSION_ENTRY_SEPARATOR = '&';\nexport function isValidSessionString(sessionString) {\n    return (!!sessionString &&\n        (sessionString.indexOf(SESSION_ENTRY_SEPARATOR) !== -1 || SESSION_ENTRY_REGEXP.test(sessionString)));\n}\n//# sourceMappingURL=sessionStateValidation.js.map","import { isEmptyObject } from '../../tools/utils/objectUtils';\nimport { objectEntries } from '../../tools/utils/polyfills';\nimport { dateNow } from '../../tools/utils/timeUtils';\nimport { generateUUID } from '../../tools/utils/stringUtils';\nimport { SESSION_EXPIRATION_DELAY, SESSION_TIME_OUT_DELAY } from './sessionConstants';\nimport { isValidSessionString, SESSION_ENTRY_REGEXP, SESSION_ENTRY_SEPARATOR } from './sessionStateValidation';\nexport const EXPIRED = '1';\nexport function getExpiredSessionState(previousSessionState, configuration) {\n    const expiredSessionState = {\n        isExpired: EXPIRED,\n    };\n    if (configuration.trackAnonymousUser) {\n        if (previousSessionState === null || previousSessionState === void 0 ? void 0 : previousSessionState.anonymousId) {\n            expiredSessionState.anonymousId = previousSessionState === null || previousSessionState === void 0 ? void 0 : previousSessionState.anonymousId;\n        }\n        else {\n            expiredSessionState.anonymousId = generateUUID();\n        }\n    }\n    return expiredSessionState;\n}\nexport function isSessionInNotStartedState(session) {\n    return isEmptyObject(session);\n}\nexport function isSessionStarted(session) {\n    return !isSessionInNotStartedState(session);\n}\nexport function isSessionInExpiredState(session) {\n    return session.isExpired !== undefined || !isActiveSession(session);\n}\n// An active session is a session in either `Tracked` or `NotTracked` state\nfunction isActiveSession(sessionState) {\n    // created and expire can be undefined for versions which was not storing them\n    // these checks could be removed when older versions will not be available/live anymore\n    return ((sessionState.created === undefined || dateNow() - Number(sessionState.created) < SESSION_TIME_OUT_DELAY) &&\n        (sessionState.expire === undefined || dateNow() < Number(sessionState.expire)));\n}\nexport function expandSessionState(session) {\n    session.expire = String(dateNow() + SESSION_EXPIRATION_DELAY);\n}\nexport function toSessionString(session) {\n    return (objectEntries(session)\n        // we use `aid` as a key for anonymousId\n        .map(([key, value]) => (key === 'anonymousId' ? `aid=${value}` : `${key}=${value}`))\n        .join(SESSION_ENTRY_SEPARATOR));\n}\nexport function toSessionState(sessionString) {\n    const session = {};\n    if (isValidSessionString(sessionString)) {\n        sessionString.split(SESSION_ENTRY_SEPARATOR).forEach((entry) => {\n            const matches = SESSION_ENTRY_REGEXP.exec(entry);\n            if (matches !== null) {\n                const [, key, value] = matches;\n                if (key === 'aid') {\n                    // we use `aid` as a key for anonymousId\n                    session.anonymousId = value;\n                }\n                else {\n                    session[key] = value;\n                }\n            }\n        });\n    }\n    return session;\n}\n//# sourceMappingURL=sessionState.js.map","import { getInitCookie } from '../../browser/cookie';\nimport { SESSION_STORE_KEY } from './storeStrategies/sessionStoreStrategy';\nimport { expandSessionState, isSessionStarted } from './sessionState';\nexport const OLD_SESSION_COOKIE_NAME = '_dd';\nexport const OLD_RUM_COOKIE_NAME = '_dd_r';\nexport const OLD_LOGS_COOKIE_NAME = '_dd_l';\n// duplicate values to avoid dependency issues\nexport const RUM_SESSION_KEY = 'rum';\nexport const LOGS_SESSION_KEY = 'logs';\n/**\n * This migration should remain in the codebase as long as older versions are available/live\n * to allow older sdk versions to be upgraded to newer versions without compatibility issues.\n */\nexport function tryOldCookiesMigration(cookieStoreStrategy) {\n    const sessionString = getInitCookie(SESSION_STORE_KEY);\n    if (!sessionString) {\n        const oldSessionId = getInitCookie(OLD_SESSION_COOKIE_NAME);\n        const oldRumType = getInitCookie(OLD_RUM_COOKIE_NAME);\n        const oldLogsType = getInitCookie(OLD_LOGS_COOKIE_NAME);\n        const session = {};\n        if (oldSessionId) {\n            session.id = oldSessionId;\n        }\n        if (oldLogsType && /^[01]$/.test(oldLogsType)) {\n            session[LOGS_SESSION_KEY] = oldLogsType;\n        }\n        if (oldRumType && /^[012]$/.test(oldRumType)) {\n            session[RUM_SESSION_KEY] = oldRumType;\n        }\n        if (isSessionStarted(session)) {\n            expandSessionState(session);\n            cookieStoreStrategy.persistSession(session);\n        }\n    }\n}\n//# sourceMappingURL=oldCookiesMigration.js.map","import { isChromium } from '../../../tools/utils/browserDetection';\nimport { getCurrentSite, areCookiesAuthorized, getCookie, setCookie } from '../../../browser/cookie';\nimport { tryOldCookiesMigration } from '../oldCookiesMigration';\nimport { SESSION_COOKIE_EXPIRATION_DELAY, SESSION_EXPIRATION_DELAY, SESSION_TIME_OUT_DELAY, SessionPersistence, } from '../sessionConstants';\nimport { toSessionString, toSessionState, getExpiredSessionState } from '../sessionState';\nimport { SESSION_STORE_KEY } from './sessionStoreStrategy';\nexport function selectCookieStrategy(initConfiguration) {\n    const cookieOptions = buildCookieOptions(initConfiguration);\n    return areCookiesAuthorized(cookieOptions) ? { type: SessionPersistence.COOKIE, cookieOptions } : undefined;\n}\nexport function initCookieStrategy(configuration, cookieOptions) {\n    const cookieStore = {\n        /**\n         * Lock strategy allows mitigating issues due to concurrent access to cookie.\n         * This issue concerns only chromium browsers and enabling this on firefox increases cookie write failures.\n         */\n        isLockEnabled: isChromium(),\n        persistSession: persistSessionCookie(cookieOptions),\n        retrieveSession: retrieveSessionCookie,\n        expireSession: (sessionState) => expireSessionCookie(cookieOptions, sessionState, configuration),\n    };\n    tryOldCookiesMigration(cookieStore);\n    return cookieStore;\n}\nfunction persistSessionCookie(options) {\n    return (session) => {\n        setCookie(SESSION_STORE_KEY, toSessionString(session), SESSION_EXPIRATION_DELAY, options);\n    };\n}\nfunction expireSessionCookie(options, sessionState, configuration) {\n    const expiredSessionState = getExpiredSessionState(sessionState, configuration);\n    // we do not extend cookie expiration date\n    setCookie(SESSION_STORE_KEY, toSessionString(expiredSessionState), configuration.trackAnonymousUser ? SESSION_COOKIE_EXPIRATION_DELAY : SESSION_TIME_OUT_DELAY, options);\n}\nfunction retrieveSessionCookie() {\n    const sessionString = getCookie(SESSION_STORE_KEY);\n    const sessionState = toSessionState(sessionString);\n    return sessionState;\n}\nexport function buildCookieOptions(initConfiguration) {\n    const cookieOptions = {};\n    cookieOptions.secure =\n        !!initConfiguration.useSecureSessionCookie || !!initConfiguration.usePartitionedCrossSiteSessionCookie;\n    cookieOptions.crossSite = !!initConfiguration.usePartitionedCrossSiteSessionCookie;\n    cookieOptions.partitioned = !!initConfiguration.usePartitionedCrossSiteSessionCookie;\n    if (initConfiguration.trackSessionAcrossSubdomains) {\n        cookieOptions.domain = getCurrentSite();\n    }\n    return cookieOptions;\n}\n//# sourceMappingURL=sessionInCookie.js.map","import { generateUUID } from '../../../tools/utils/stringUtils';\nimport { SessionPersistence } from '../sessionConstants';\nimport { toSessionString, toSessionState, getExpiredSessionState } from '../sessionState';\nimport { SESSION_STORE_KEY } from './sessionStoreStrategy';\nconst LOCAL_STORAGE_TEST_KEY = '_dd_test_';\nexport function selectLocalStorageStrategy() {\n    try {\n        const id = generateUUID();\n        const testKey = `${LOCAL_STORAGE_TEST_KEY}${id}`;\n        localStorage.setItem(testKey, id);\n        const retrievedId = localStorage.getItem(testKey);\n        localStorage.removeItem(testKey);\n        return id === retrievedId ? { type: SessionPersistence.LOCAL_STORAGE } : undefined;\n    }\n    catch (_a) {\n        return undefined;\n    }\n}\nexport function initLocalStorageStrategy(configuration) {\n    return {\n        isLockEnabled: false,\n        persistSession: persistInLocalStorage,\n        retrieveSession: retrieveSessionFromLocalStorage,\n        expireSession: (sessionState) => expireSessionFromLocalStorage(sessionState, configuration),\n    };\n}\nfunction persistInLocalStorage(sessionState) {\n    localStorage.setItem(SESSION_STORE_KEY, toSessionString(sessionState));\n}\nfunction retrieveSessionFromLocalStorage() {\n    const sessionString = localStorage.getItem(SESSION_STORE_KEY);\n    return toSessionState(sessionString);\n}\nfunction expireSessionFromLocalStorage(previousSessionState, configuration) {\n    persistInLocalStorage(getExpiredSessionState(previousSessionState, configuration));\n}\n//# sourceMappingURL=sessionInLocalStorage.js.map","import { setTimeout } from '../../tools/timer';\nimport { generateUUID } from '../../tools/utils/stringUtils';\nimport { expandSessionState, isSessionInExpiredState } from './sessionState';\nexport const LOCK_RETRY_DELAY = 10;\nexport const LOCK_MAX_TRIES = 100;\nconst bufferedOperations = [];\nlet ongoingOperations;\nexport function processSessionStoreOperations(operations, sessionStoreStrategy, numberOfRetries = 0) {\n    var _a;\n    const { isLockEnabled, persistSession, expireSession } = sessionStoreStrategy;\n    const persistWithLock = (session) => persistSession({ ...session, lock: currentLock });\n    const retrieveStore = () => {\n        const session = sessionStoreStrategy.retrieveSession();\n        const lock = session.lock;\n        if (session.lock) {\n            delete session.lock;\n        }\n        return {\n            session,\n            lock,\n        };\n    };\n    if (!ongoingOperations) {\n        ongoingOperations = operations;\n    }\n    if (operations !== ongoingOperations) {\n        bufferedOperations.push(operations);\n        return;\n    }\n    if (isLockEnabled && numberOfRetries >= LOCK_MAX_TRIES) {\n        next(sessionStoreStrategy);\n        return;\n    }\n    let currentLock;\n    let currentStore = retrieveStore();\n    if (isLockEnabled) {\n        // if someone has lock, retry later\n        if (currentStore.lock) {\n            retryLater(operations, sessionStoreStrategy, numberOfRetries);\n            return;\n        }\n        // acquire lock\n        currentLock = generateUUID();\n        persistWithLock(currentStore.session);\n        // if lock is not acquired, retry later\n        currentStore = retrieveStore();\n        if (currentStore.lock !== currentLock) {\n            retryLater(operations, sessionStoreStrategy, numberOfRetries);\n            return;\n        }\n    }\n    let processedSession = operations.process(currentStore.session);\n    if (isLockEnabled) {\n        // if lock corrupted after process, retry later\n        currentStore = retrieveStore();\n        if (currentStore.lock !== currentLock) {\n            retryLater(operations, sessionStoreStrategy, numberOfRetries);\n            return;\n        }\n    }\n    if (processedSession) {\n        if (isSessionInExpiredState(processedSession)) {\n            expireSession(processedSession);\n        }\n        else {\n            expandSessionState(processedSession);\n            if (isLockEnabled) {\n                persistWithLock(processedSession);\n            }\n            else {\n                persistSession(processedSession);\n            }\n        }\n    }\n    if (isLockEnabled) {\n        // correctly handle lock around expiration would require to handle this case properly at several levels\n        // since we don't have evidence of lock issues around expiration, let's just not do the corruption check for it\n        if (!(processedSession && isSessionInExpiredState(processedSession))) {\n            // if lock corrupted after persist, retry later\n            currentStore = retrieveStore();\n            if (currentStore.lock !== currentLock) {\n                retryLater(operations, sessionStoreStrategy, numberOfRetries);\n                return;\n            }\n            persistSession(currentStore.session);\n            processedSession = currentStore.session;\n        }\n    }\n    // call after even if session is not persisted in order to perform operations on\n    // up-to-date session state value => the value could have been modified by another tab\n    (_a = operations.after) === null || _a === void 0 ? void 0 : _a.call(operations, processedSession || currentStore.session);\n    next(sessionStoreStrategy);\n}\nfunction retryLater(operations, sessionStore, currentNumberOfRetries) {\n    setTimeout(() => {\n        processSessionStoreOperations(operations, sessionStore, currentNumberOfRetries + 1);\n    }, LOCK_RETRY_DELAY);\n}\nfunction next(sessionStore) {\n    ongoingOperations = undefined;\n    const nextOperations = bufferedOperations.shift();\n    if (nextOperations) {\n        processSessionStoreOperations(nextOperations, sessionStore);\n    }\n}\n//# sourceMappingURL=sessionStoreOperations.js.map","import { clearInterval, setInterval } from '../../tools/timer';\nimport { Observable } from '../../tools/observable';\nimport { ONE_SECOND, dateNow } from '../../tools/utils/timeUtils';\nimport { throttle } from '../../tools/utils/functionUtils';\nimport { generateUUID } from '../../tools/utils/stringUtils';\nimport { display } from '../../tools/display';\nimport { selectCookieStrategy, initCookieStrategy } from './storeStrategies/sessionInCookie';\nimport { getExpiredSessionState, isSessionInExpiredState, isSessionInNotStartedState, isSessionStarted, } from './sessionState';\nimport { initLocalStorageStrategy, selectLocalStorageStrategy } from './storeStrategies/sessionInLocalStorage';\nimport { processSessionStoreOperations } from './sessionStoreOperations';\nimport { SessionPersistence } from './sessionConstants';\n/**\n * Every second, the storage will be polled to check for any change that can occur\n * to the session state in another browser tab, or another window.\n * This value has been determined from our previous cookie-only implementation.\n */\nexport const STORAGE_POLL_DELAY = ONE_SECOND;\n/**\n * Selects the correct session store strategy type based on the configuration and storage\n * availability.\n */\nexport function selectSessionStoreStrategyType(initConfiguration) {\n    switch (initConfiguration.sessionPersistence) {\n        case SessionPersistence.COOKIE:\n            return selectCookieStrategy(initConfiguration);\n        case SessionPersistence.LOCAL_STORAGE:\n            return selectLocalStorageStrategy();\n        case undefined: {\n            let sessionStoreStrategyType = selectCookieStrategy(initConfiguration);\n            if (!sessionStoreStrategyType && initConfiguration.allowFallbackToLocalStorage) {\n                sessionStoreStrategyType = selectLocalStorageStrategy();\n            }\n            return sessionStoreStrategyType;\n        }\n        default:\n            display.error(`Invalid session persistence '${String(initConfiguration.sessionPersistence)}'`);\n    }\n}\n/**\n * Different session concepts:\n * - tracked, the session has an id and is updated along the user navigation\n * - not tracked, the session does not have an id but it is updated along the user navigation\n * - inactive, no session in store or session expired, waiting for a renew session\n */\nexport function startSessionStore(sessionStoreStrategyType, configuration, productKey, computeSessionState) {\n    const renewObservable = new Observable();\n    const expireObservable = new Observable();\n    const sessionStateUpdateObservable = new Observable();\n    const sessionStoreStrategy = sessionStoreStrategyType.type === SessionPersistence.COOKIE\n        ? initCookieStrategy(configuration, sessionStoreStrategyType.cookieOptions)\n        : initLocalStorageStrategy(configuration);\n    const { expireSession } = sessionStoreStrategy;\n    const watchSessionTimeoutId = setInterval(watchSession, STORAGE_POLL_DELAY);\n    let sessionCache;\n    startSession();\n    const { throttled: throttledExpandOrRenewSession, cancel: cancelExpandOrRenewSession } = throttle(() => {\n        processSessionStoreOperations({\n            process: (sessionState) => {\n                if (isSessionInNotStartedState(sessionState)) {\n                    return;\n                }\n                const synchronizedSession = synchronizeSession(sessionState);\n                expandOrRenewSessionState(synchronizedSession);\n                return synchronizedSession;\n            },\n            after: (sessionState) => {\n                if (isSessionStarted(sessionState) && !hasSessionInCache()) {\n                    renewSessionInCache(sessionState);\n                }\n                sessionCache = sessionState;\n            },\n        }, sessionStoreStrategy);\n    }, STORAGE_POLL_DELAY);\n    function expandSession() {\n        processSessionStoreOperations({\n            process: (sessionState) => (hasSessionInCache() ? synchronizeSession(sessionState) : undefined),\n        }, sessionStoreStrategy);\n    }\n    /**\n     * allows two behaviors:\n     * - if the session is active, synchronize the session cache without updating the session store\n     * - if the session is not active, clear the session store and expire the session cache\n     */\n    function watchSession() {\n        processSessionStoreOperations({\n            process: (sessionState) => isSessionInExpiredState(sessionState) ? getExpiredSessionState(sessionState, configuration) : undefined,\n            after: synchronizeSession,\n        }, sessionStoreStrategy);\n    }\n    function synchronizeSession(sessionState) {\n        if (isSessionInExpiredState(sessionState)) {\n            sessionState = getExpiredSessionState(sessionState, configuration);\n        }\n        if (hasSessionInCache()) {\n            if (isSessionInCacheOutdated(sessionState)) {\n                expireSessionInCache();\n            }\n            else {\n                sessionStateUpdateObservable.notify({ previousState: sessionCache, newState: sessionState });\n                sessionCache = sessionState;\n            }\n        }\n        return sessionState;\n    }\n    function startSession() {\n        processSessionStoreOperations({\n            process: (sessionState) => {\n                if (isSessionInNotStartedState(sessionState)) {\n                    return getExpiredSessionState(sessionState, configuration);\n                }\n            },\n            after: (sessionState) => {\n                sessionCache = sessionState;\n            },\n        }, sessionStoreStrategy);\n    }\n    function expandOrRenewSessionState(sessionState) {\n        if (isSessionInNotStartedState(sessionState)) {\n            return false;\n        }\n        const { trackingType, isTracked } = computeSessionState(sessionState[productKey]);\n        sessionState[productKey] = trackingType;\n        delete sessionState.isExpired;\n        if (isTracked && !sessionState.id) {\n            sessionState.id = generateUUID();\n            sessionState.created = String(dateNow());\n        }\n    }\n    function hasSessionInCache() {\n        return sessionCache[productKey] !== undefined;\n    }\n    function isSessionInCacheOutdated(sessionState) {\n        return sessionCache.id !== sessionState.id || sessionCache[productKey] !== sessionState[productKey];\n    }\n    function expireSessionInCache() {\n        sessionCache = getExpiredSessionState(sessionCache, configuration);\n        expireObservable.notify();\n    }\n    function renewSessionInCache(sessionState) {\n        sessionCache = sessionState;\n        renewObservable.notify();\n    }\n    function updateSessionState(partialSessionState) {\n        processSessionStoreOperations({\n            process: (sessionState) => ({ ...sessionState, ...partialSessionState }),\n            after: synchronizeSession,\n        }, sessionStoreStrategy);\n    }\n    return {\n        expandOrRenewSession: throttledExpandOrRenewSession,\n        expandSession,\n        getSession: () => sessionCache,\n        renewObservable,\n        expireObservable,\n        sessionStateUpdateObservable,\n        restartSession: startSession,\n        expire: () => {\n            cancelExpandOrRenewSession();\n            expireSession(sessionCache);\n            synchronizeSession(getExpiredSessionState(sessionCache, configuration));\n        },\n        stop: () => {\n            clearInterval(watchSessionTimeoutId);\n        },\n        updateSessionState,\n    };\n}\n//# sourceMappingURL=sessionStore.js.map","import { timeStampNow } from '../../tools/utils/timeUtils';\nimport { normalizeUrl } from '../../tools/utils/urlPolyfill';\nimport { generateUUID } from '../../tools/utils/stringUtils';\nimport { INTAKE_SITE_US1, INTAKE_SITE_FED_STAGING, PCI_INTAKE_HOST_US1 } from './intakeSites';\nexport function createEndpointBuilder(initConfiguration, trackType, configurationTags) {\n    const buildUrlWithParameters = createEndpointUrlWithParametersBuilder(initConfiguration, trackType);\n    return {\n        build(api, payload) {\n            const parameters = buildEndpointParameters(initConfiguration, trackType, configurationTags, api, payload);\n            return buildUrlWithParameters(parameters);\n        },\n        tags: configurationTags,\n        urlPrefix: buildUrlWithParameters(''),\n        trackType,\n    };\n}\n/**\n * Create a function used to build a full endpoint url from provided parameters. The goal of this\n * function is to pre-compute some parts of the URL to avoid re-computing everything on every\n * request, as only parameters are changing.\n */\nfunction createEndpointUrlWithParametersBuilder(initConfiguration, trackType) {\n    const path = `/api/v2/${trackType}`;\n    const proxy = initConfiguration.proxy;\n    if (typeof proxy === 'string') {\n        const normalizedProxyUrl = normalizeUrl(proxy);\n        return (parameters) => `${normalizedProxyUrl}?ddforward=${encodeURIComponent(`${path}?${parameters}`)}`;\n    }\n    if (typeof proxy === 'function') {\n        return (parameters) => proxy({ path, parameters });\n    }\n    const host = buildEndpointHost(trackType, initConfiguration);\n    return (parameters) => `https://${host}${path}?${parameters}`;\n}\nexport function buildEndpointHost(trackType, initConfiguration) {\n    const { site = INTAKE_SITE_US1, internalAnalyticsSubdomain } = initConfiguration;\n    if (trackType === 'logs' && initConfiguration.usePciIntake && site === INTAKE_SITE_US1) {\n        return PCI_INTAKE_HOST_US1;\n    }\n    if (internalAnalyticsSubdomain && site === INTAKE_SITE_US1) {\n        return `${internalAnalyticsSubdomain}.${INTAKE_SITE_US1}`;\n    }\n    if (site === INTAKE_SITE_FED_STAGING) {\n        return `http-intake.logs.${site}`;\n    }\n    const domainParts = site.split('.');\n    const extension = domainParts.pop();\n    return `browser-intake-${domainParts.join('-')}.${extension}`;\n}\n/**\n * Build parameters to be used for an intake request. Parameters should be re-built for each\n * request, as they change randomly.\n */\nfunction buildEndpointParameters({ clientToken, internalAnalyticsSubdomain }, trackType, configurationTags, api, { retry, encoding }) {\n    const tags = [`sdk_version:${\"6.6.4\"}`, `api:${api}`].concat(configurationTags);\n    if (retry) {\n        tags.push(`retry_count:${retry.count}`, `retry_after:${retry.lastFailureStatus}`);\n    }\n    const parameters = [\n        'ddsource=browser',\n        `ddtags=${encodeURIComponent(tags.join(','))}`,\n        `dd-api-key=${clientToken}`,\n        `dd-evp-origin-version=${encodeURIComponent(\"6.6.4\")}`,\n        'dd-evp-origin=browser',\n        `dd-request-id=${generateUUID()}`,\n    ];\n    if (encoding) {\n        parameters.push(`dd-evp-encoding=${encoding}`);\n    }\n    if (trackType === 'rum') {\n        parameters.push(`batch_time=${timeStampNow()}`);\n    }\n    if (internalAnalyticsSubdomain) {\n        parameters.reverse();\n    }\n    return parameters.join('&');\n}\n//# sourceMappingURL=endpointBuilder.js.map","import { DOCS_ORIGIN, MORE_DETAILS, display } from '../../tools/display';\nexport const TAG_SIZE_LIMIT = 200;\nexport function buildTags(configuration) {\n    const { env, service, version, datacenter } = configuration;\n    const tags = [];\n    if (env) {\n        tags.push(buildTag('env', env));\n    }\n    if (service) {\n        tags.push(buildTag('service', service));\n    }\n    if (version) {\n        tags.push(buildTag('version', version));\n    }\n    if (datacenter) {\n        tags.push(buildTag('datacenter', datacenter));\n    }\n    return tags;\n}\nexport function buildTag(key, rawValue) {\n    // See https://docs.datadoghq.com/getting_started/tagging/#defining-tags for tags syntax. Note\n    // that the backend may not follow the exact same rules, so we only want to display an informal\n    // warning.\n    const valueSizeLimit = TAG_SIZE_LIMIT - key.length - 1;\n    if (rawValue.length > valueSizeLimit || hasForbiddenCharacters(rawValue)) {\n        display.warn(`${key} value doesn't meet tag requirements and will be sanitized. ${MORE_DETAILS} ${DOCS_ORIGIN}/getting_started/tagging/#defining-tags`);\n    }\n    // Let the backend do most of the sanitization, but still make sure multiple tags can't be crafted\n    // by forging a value containing commas.\n    const sanitizedValue = rawValue.replace(/,/g, '_');\n    return `${key}:${sanitizedValue}`;\n}\nfunction hasForbiddenCharacters(rawValue) {\n    // Unicode property escapes is not supported in all browsers, so we use a try/catch.\n    // Todo: Remove the try/catch when dropping support for Chrome 63 and Firefox 67\n    // see: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Regular_expressions/Unicode_character_class_escape#browser_compatibility\n    if (!supportUnicodePropertyEscapes()) {\n        return false;\n    }\n    // We use the Unicode property escapes to match any character that is a letter including other languages like Chinese, Japanese, etc.\n    // p{Ll} matches a lowercase letter.\n    // p{Lo} matches a letter that is neither uppercase nor lowercase (ex: Japanese characters).\n    // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Regular_expressions/Unicode_character_class_escape#unicode_property_escapes_vs._character_classes\n    return new RegExp('[^\\\\p{Ll}\\\\p{Lo}0-9_:./-]', 'u').test(rawValue);\n}\nexport function supportUnicodePropertyEscapes() {\n    try {\n        new RegExp('[\\\\p{Ll}]', 'u');\n        return true;\n    }\n    catch (_a) {\n        return false;\n    }\n}\n//# sourceMappingURL=tags.js.map","import { createEndpointBuilder } from './endpointBuilder';\nimport { buildTags } from './tags';\nimport { INTAKE_SITE_US1, INTAKE_URL_PARAMETERS } from './intakeSites';\nexport function computeTransportConfiguration(initConfiguration) {\n    const site = initConfiguration.site || INTAKE_SITE_US1;\n    const tags = buildTags(initConfiguration);\n    const endpointBuilders = computeEndpointBuilders(initConfiguration, tags);\n    const replicaConfiguration = computeReplicaConfiguration(initConfiguration, tags);\n    return {\n        replica: replicaConfiguration,\n        site,\n        ...endpointBuilders,\n    };\n}\nfunction computeEndpointBuilders(initConfiguration, tags) {\n    return {\n        logsEndpointBuilder: createEndpointBuilder(initConfiguration, 'logs', tags),\n        rumEndpointBuilder: createEndpointBuilder(initConfiguration, 'rum', tags),\n        profilingEndpointBuilder: createEndpointBuilder(initConfiguration, 'profile', tags),\n        sessionReplayEndpointBuilder: createEndpointBuilder(initConfiguration, 'replay', tags),\n    };\n}\nfunction computeReplicaConfiguration(initConfiguration, tags) {\n    if (!initConfiguration.replica) {\n        return;\n    }\n    const replicaConfiguration = {\n        ...initConfiguration,\n        site: INTAKE_SITE_US1,\n        clientToken: initConfiguration.replica.clientToken,\n    };\n    const replicaEndpointBuilders = {\n        logsEndpointBuilder: createEndpointBuilder(replicaConfiguration, 'logs', tags),\n        rumEndpointBuilder: createEndpointBuilder(replicaConfiguration, 'rum', tags),\n    };\n    return { applicationId: initConfiguration.replica.applicationId, ...replicaEndpointBuilders };\n}\nexport function isIntakeUrl(url) {\n    // check if tags is present in the query string\n    return INTAKE_URL_PARAMETERS.every((param) => url.includes(param));\n}\n//# sourceMappingURL=transportConfiguration.js.map","import { catchUserErrors } from '../../tools/catchUserErrors';\nimport { DOCS_ORIGIN, MORE_DETAILS, display } from '../../tools/display';\nimport { ONE_SECOND } from '../../tools/utils/timeUtils';\nimport { isPercentage } from '../../tools/utils/numberUtils';\nimport { ONE_KIBI_BYTE } from '../../tools/utils/byteUtils';\nimport { objectHasValue } from '../../tools/utils/objectUtils';\nimport { selectSessionStoreStrategyType } from '../session/sessionStore';\nimport { TrackingConsent } from '../trackingConsent';\nimport { computeTransportConfiguration } from './transportConfiguration';\nexport const DefaultPrivacyLevel = {\n    ALLOW: 'allow',\n    MASK: 'mask',\n    MASK_USER_INPUT: 'mask-user-input',\n};\nexport const TraceContextInjection = {\n    ALL: 'all',\n    SAMPLED: 'sampled',\n};\nfunction isString(tag, tagName) {\n    if (tag !== undefined && tag !== null && typeof tag !== 'string') {\n        display.error(`${tagName} must be defined as a string`);\n        return false;\n    }\n    return true;\n}\nfunction isDatadogSite(site) {\n    if (site && typeof site === 'string' && !/(datadog|ddog|datad0g|dd0g)/.test(site)) {\n        display.error(`Site should be a valid Datadog site. ${MORE_DETAILS} ${DOCS_ORIGIN}/getting_started/site/.`);\n        return false;\n    }\n    return true;\n}\nexport function isSampleRate(sampleRate, name) {\n    if (sampleRate !== undefined && !isPercentage(sampleRate)) {\n        display.error(`${name} Sample Rate should be a number between 0 and 100`);\n        return false;\n    }\n    return true;\n}\nexport function validateAndBuildConfiguration(initConfiguration) {\n    var _a, _b, _c, _d, _e, _f;\n    if (!initConfiguration || !initConfiguration.clientToken) {\n        display.error('Client Token is not configured, we will not send any data.');\n        return;\n    }\n    if (!isDatadogSite(initConfiguration.site) ||\n        !isSampleRate(initConfiguration.sessionSampleRate, 'Session') ||\n        !isSampleRate(initConfiguration.telemetrySampleRate, 'Telemetry') ||\n        !isSampleRate(initConfiguration.telemetryConfigurationSampleRate, 'Telemetry Configuration') ||\n        !isSampleRate(initConfiguration.telemetryUsageSampleRate, 'Telemetry Usage') ||\n        !isString(initConfiguration.version, 'Version') ||\n        !isString(initConfiguration.env, 'Env') ||\n        !isString(initConfiguration.service, 'Service')) {\n        return;\n    }\n    if (initConfiguration.trackingConsent !== undefined &&\n        !objectHasValue(TrackingConsent, initConfiguration.trackingConsent)) {\n        display.error('Tracking Consent should be either \"granted\" or \"not-granted\"');\n        return;\n    }\n    return {\n        beforeSend: initConfiguration.beforeSend && catchUserErrors(initConfiguration.beforeSend, 'beforeSend threw an error:'),\n        sessionStoreStrategyType: selectSessionStoreStrategyType(initConfiguration),\n        sessionSampleRate: (_a = initConfiguration.sessionSampleRate) !== null && _a !== void 0 ? _a : 100,\n        telemetrySampleRate: (_b = initConfiguration.telemetrySampleRate) !== null && _b !== void 0 ? _b : 20,\n        telemetryConfigurationSampleRate: (_c = initConfiguration.telemetryConfigurationSampleRate) !== null && _c !== void 0 ? _c : 5,\n        telemetryUsageSampleRate: (_d = initConfiguration.telemetryUsageSampleRate) !== null && _d !== void 0 ? _d : 5,\n        service: initConfiguration.service || undefined,\n        silentMultipleInit: !!initConfiguration.silentMultipleInit,\n        allowUntrustedEvents: !!initConfiguration.allowUntrustedEvents,\n        trackingConsent: (_e = initConfiguration.trackingConsent) !== null && _e !== void 0 ? _e : TrackingConsent.GRANTED,\n        trackAnonymousUser: (_f = initConfiguration.trackAnonymousUser) !== null && _f !== void 0 ? _f : true,\n        storeContextsAcrossPages: !!initConfiguration.storeContextsAcrossPages,\n        /**\n         * beacon payload max queue size implementation is 64kb\n         * ensure that we leave room for logs, rum and potential other users\n         */\n        batchBytesLimit: 16 * ONE_KIBI_BYTE,\n        eventRateLimiterThreshold: 3000,\n        maxTelemetryEventsPerPage: 15,\n        /**\n         * flush automatically, aim to be lower than ALB connection timeout\n         * to maximize connection reuse.\n         */\n        flushTimeout: (30 * ONE_SECOND),\n        /**\n         * Logs intake limit\n         */\n        batchMessagesLimit: 50,\n        messageBytesLimit: 256 * ONE_KIBI_BYTE,\n        ...computeTransportConfiguration(initConfiguration),\n    };\n}\nexport function serializeConfiguration(initConfiguration) {\n    return {\n        session_sample_rate: initConfiguration.sessionSampleRate,\n        telemetry_sample_rate: initConfiguration.telemetrySampleRate,\n        telemetry_configuration_sample_rate: initConfiguration.telemetryConfigurationSampleRate,\n        telemetry_usage_sample_rate: initConfiguration.telemetryUsageSampleRate,\n        use_before_send: !!initConfiguration.beforeSend,\n        use_partitioned_cross_site_session_cookie: initConfiguration.usePartitionedCrossSiteSessionCookie,\n        use_secure_session_cookie: initConfiguration.useSecureSessionCookie,\n        use_proxy: !!initConfiguration.proxy,\n        silent_multiple_init: initConfiguration.silentMultipleInit,\n        track_session_across_subdomains: initConfiguration.trackSessionAcrossSubdomains,\n        track_anonymous_user: initConfiguration.trackAnonymousUser,\n        session_persistence: initConfiguration.sessionPersistence,\n        allow_fallback_to_local_storage: !!initConfiguration.allowFallbackToLocalStorage,\n        store_contexts_across_pages: !!initConfiguration.storeContextsAcrossPages,\n        allow_untrusted_events: !!initConfiguration.allowUntrustedEvents,\n        tracking_consent: initConfiguration.trackingConsent,\n    };\n}\n//# sourceMappingURL=configuration.js.map","import { display } from './display';\nimport { getType } from './utils/typeUtils';\nexport function isMatchOption(item) {\n    const itemType = getType(item);\n    return itemType === 'string' || itemType === 'function' || item instanceof RegExp;\n}\n/**\n * Returns true if value can be matched by at least one of the provided MatchOptions.\n * When comparing strings, setting useStartsWith to true will compare the value with the start of\n * the option, instead of requiring an exact match.\n */\nexport function matchList(list, value, useStartsWith = false) {\n    return list.some((item) => {\n        try {\n            if (typeof item === 'function') {\n                return item(value);\n            }\n            else if (item instanceof RegExp) {\n                return item.test(value);\n            }\n            else if (typeof item === 'string') {\n                return useStartsWith ? value.startsWith(item) : item === value;\n            }\n        }\n        catch (e) {\n            display.error(e);\n        }\n        return false;\n    });\n}\n//# sourceMappingURL=matchOption.js.map","export function createTraceIdentifier() {\n    return createIdentifier(64);\n}\nexport function createSpanIdentifier() {\n    return createIdentifier(63);\n}\nfunction createIdentifier(bits) {\n    const buffer = crypto.getRandomValues(new Uint32Array(2));\n    if (bits === 63) {\n        // eslint-disable-next-line no-bitwise\n        buffer[buffer.length - 1] >>>= 1; // force 63-bit\n    }\n    // The `.toString` function is intentionally similar to Number and BigInt `.toString` method.\n    //\n    // JavaScript numbers can represent integers up to 48 bits, this is why we need two of them to\n    // represent a 64 bits identifier. But BigInts don't have this limitation and can represent larger\n    // integer values.\n    //\n    // In the future, when we drop browsers without BigInts support, we could use BigInts directly\n    // represent identifiers by simply returning a BigInt from this function (as all we need is a\n    // value with a `.toString` method).\n    //\n    // Examples:\n    //   const buffer = getCrypto().getRandomValues(new Uint32Array(2))\n    //   return BigInt(buffer[0]) + BigInt(buffer[1]) << 32n\n    //\n    //   // Alternative with BigUint64Array (different Browser support than plain bigints!):\n    //   return crypto.getRandomValues(new BigUint64Array(1))[0]\n    //\n    // For now, let's keep using two plain numbers as having two different implementations (one for\n    // browsers with BigInt support and one for older browsers) don't bring much value.\n    return {\n        toString(radix = 10) {\n            let high = buffer[1];\n            let low = buffer[0];\n            let str = '';\n            do {\n                const mod = (high % radix) * 4294967296 + low;\n                high = Math.floor(high / radix);\n                low = Math.floor(mod / radix);\n                str = (mod % radix).toString(radix) + str;\n            } while (high || low);\n            return str;\n        },\n    };\n}\nexport function toPaddedHexadecimalString(id) {\n    return id.toString(16).padStart(16, '0');\n}\n//# sourceMappingURL=identifier.js.map","import { performDraw } from '@datadog/browser-core';\nlet sampleDecisionCache;\nexport function isTraceSampled(sessionId, sampleRate) {\n    // Shortcuts for common cases. This is not strictly necessary, but it makes the code faster for\n    // customers willing to ingest all traces.\n    if (sampleRate === 100) {\n        return true;\n    }\n    if (sampleRate === 0) {\n        return false;\n    }\n    if (sampleDecisionCache && sessionId === sampleDecisionCache.sessionId) {\n        return sampleDecisionCache.decision;\n    }\n    let decision;\n    // @ts-expect-error BigInt might not be defined in every browser we support\n    if (window.BigInt) {\n        decision = sampleUsingKnuthFactor(BigInt(`0x${sessionId.split('-')[4]}`), sampleRate);\n    }\n    else {\n        // For simplicity, we don't use consistent sampling for browser without BigInt support\n        // TODO: remove this when all browser we support have BigInt support\n        decision = performDraw(sampleRate);\n    }\n    sampleDecisionCache = { sessionId, decision };\n    return decision;\n}\n// Exported for tests\nexport function resetSampleDecisionCache() {\n    sampleDecisionCache = undefined;\n}\n/**\n * Perform sampling using the Knuth factor method. This method offer consistent sampling result\n * based on the provided identifier.\n *\n * @param identifier The identifier to use for sampling.\n * @param sampleRate The sample rate in percentage between 0 and 100.\n */\nexport function sampleUsingKnuthFactor(identifier, sampleRate) {\n    // The formula is:\n    //\n    //   (identifier * knuthFactor) % 2^64 < sampleRate * 2^64\n    //\n    // Because JavaScript numbers are 64-bit floats, we can't represent 64-bit integers, and the\n    // modulo would be incorrect. Thus, we are using BigInts here.\n    //\n    // Implementation in other languages:\n    // * Go     https://github.com/DataDog/dd-trace-go/blob/ec6fbb1f2d517b7b8e69961052adf7136f3af773/ddtrace/tracer/sampler.go#L86-L91\n    // * Python https://github.com/DataDog/dd-trace-py/blob/0cee2f066fb6e79aa15947c1514c0f406dea47c5/ddtrace/sampling_rule.py#L197\n    // * Ruby   https://github.com/DataDog/dd-trace-rb/blob/1a6e255cdcb7e7e22235ea5955f90f6dfa91045d/lib/datadog/tracing/sampling/rate_sampler.rb#L42\n    // * C++    https://github.com/DataDog/dd-trace-cpp/blob/159629edc438ae45f2bb318eb7bd51abd05e94b5/src/datadog/trace_sampler.cpp#L58\n    // * Java   https://github.com/DataDog/dd-trace-java/blob/896dd6b380533216e0bdee59614606c8272d313e/dd-trace-core/src/main/java/datadog/trace/common/sampling/DeterministicSampler.java#L48\n    //\n    // Note: All implementations have slight variations. Some of them use '<=' instead of '<', and\n    // use `sampleRate * 2^64 - 1` instead of `sampleRate * 2^64`. The following implementation\n    // should adhere to the spec and is a bit simpler than using a 2^64-1 limit as there are less\n    // BigInt arithmetic to write. In practice this does not matter, as we are using floating point\n    // numbers in the end, and Number(2n**64n-1n) === Number(2n**64n).\n    const knuthFactor = BigInt('1111111111111111111');\n    const twoPow64 = BigInt('0x10000000000000000'); // 2n ** 64n\n    const hash = (identifier * knuthFactor) % twoPow64;\n    return Number(hash) <= (sampleRate / 100) * Number(twoPow64);\n}\n//# sourceMappingURL=sampler.js.map","import { objectEntries, shallowClone, getType, isMatchOption, matchList, TraceContextInjection, isExperimentalFeatureEnabled, ExperimentalFeature, } from '@datadog/browser-core';\nimport { createSpanIdentifier, createTraceIdentifier, toPaddedHexadecimalString } from './identifier';\nimport { isTraceSampled } from './sampler';\nexport function isTracingOption(item) {\n    const expectedItem = item;\n    return (getType(expectedItem) === 'object' &&\n        isMatchOption(expectedItem.match) &&\n        Array.isArray(expectedItem.propagatorTypes));\n}\n/**\n * Clear tracing information to avoid incomplete traces. Ideally, we should do it when the\n * request did not reach the server, but the browser does not expose this. So, we clear tracing\n * information if the request ended with status 0 without being aborted by the application.\n *\n * Reasoning:\n *\n * * Applications are usually aborting requests after a bit of time, for example when the user is\n * typing (autocompletion) or navigating away (in a SPA). With a performant device and good\n * network conditions, the request is likely to reach the server before being canceled.\n *\n * * Requests aborted otherwise (ex: lack of internet, CORS issue, blocked by a privacy extension)\n * are likely to finish quickly and without reaching the server.\n *\n * Of course, it might not be the case every time, but it should limit having incomplete traces a\n * bit.\n * */\nexport function clearTracingIfNeeded(context) {\n    if (context.status === 0 && !context.isAborted) {\n        context.traceId = undefined;\n        context.spanId = undefined;\n        context.traceSampled = undefined;\n    }\n}\nexport function startTracer(configuration, sessionManager, userContext, accountContext) {\n    return {\n        clearTracingIfNeeded,\n        traceFetch: (context) => injectHeadersIfTracingAllowed(configuration, context, sessionManager, userContext, accountContext, (tracingHeaders) => {\n            var _a;\n            if (context.input instanceof Request && !((_a = context.init) === null || _a === void 0 ? void 0 : _a.headers)) {\n                context.input = new Request(context.input);\n                Object.keys(tracingHeaders).forEach((key) => {\n                    ;\n                    context.input.headers.append(key, tracingHeaders[key]);\n                });\n            }\n            else {\n                context.init = shallowClone(context.init);\n                const headers = [];\n                if (context.init.headers instanceof Headers) {\n                    context.init.headers.forEach((value, key) => {\n                        headers.push([key, value]);\n                    });\n                }\n                else if (Array.isArray(context.init.headers)) {\n                    context.init.headers.forEach((header) => {\n                        headers.push(header);\n                    });\n                }\n                else if (context.init.headers) {\n                    Object.keys(context.init.headers).forEach((key) => {\n                        headers.push([key, context.init.headers[key]]);\n                    });\n                }\n                context.init.headers = headers.concat(objectEntries(tracingHeaders));\n            }\n        }),\n        traceXhr: (context, xhr) => injectHeadersIfTracingAllowed(configuration, context, sessionManager, userContext, accountContext, (tracingHeaders) => {\n            Object.keys(tracingHeaders).forEach((name) => {\n                xhr.setRequestHeader(name, tracingHeaders[name]);\n            });\n        }),\n    };\n}\nfunction injectHeadersIfTracingAllowed(configuration, context, sessionManager, userContext, accountContext, inject) {\n    const session = sessionManager.findTrackedSession();\n    if (!session) {\n        return;\n    }\n    const tracingOption = configuration.allowedTracingUrls.find((tracingOption) => matchList([tracingOption.match], context.url, true));\n    if (!tracingOption) {\n        return;\n    }\n    const traceSampled = isTraceSampled(session.id, configuration.traceSampleRate);\n    const shouldInjectHeaders = traceSampled || configuration.traceContextInjection === TraceContextInjection.ALL;\n    if (!shouldInjectHeaders) {\n        return;\n    }\n    context.traceSampled = traceSampled;\n    context.traceId = createTraceIdentifier();\n    context.spanId = createSpanIdentifier();\n    inject(makeTracingHeaders(context.traceId, context.spanId, context.traceSampled, session.id, tracingOption.propagatorTypes, userContext, accountContext, configuration));\n}\n/**\n * When trace is not sampled, set priority to '0' instead of not adding the tracing headers\n * to prepare the implementation for sampling delegation.\n */\nfunction makeTracingHeaders(traceId, spanId, traceSampled, sessionId, propagatorTypes, userContext, accountContext, configuration) {\n    const tracingHeaders = {};\n    propagatorTypes.forEach((propagatorType) => {\n        switch (propagatorType) {\n            case 'datadog': {\n                Object.assign(tracingHeaders, {\n                    'x-datadog-origin': 'rum',\n                    'x-datadog-parent-id': spanId.toString(),\n                    'x-datadog-sampling-priority': traceSampled ? '1' : '0',\n                    'x-datadog-trace-id': traceId.toString(),\n                });\n                break;\n            }\n            // https://www.w3.org/TR/trace-context/\n            case 'tracecontext': {\n                Object.assign(tracingHeaders, {\n                    traceparent: `00-0000000000000000${toPaddedHexadecimalString(traceId)}-${toPaddedHexadecimalString(spanId)}-0${traceSampled ? '1' : '0'}`,\n                    tracestate: `dd=s:${traceSampled ? '1' : '0'};o:rum`,\n                });\n                break;\n            }\n            // https://github.com/openzipkin/b3-propagation\n            case 'b3': {\n                Object.assign(tracingHeaders, {\n                    b3: `${toPaddedHexadecimalString(traceId)}-${toPaddedHexadecimalString(spanId)}-${traceSampled ? '1' : '0'}`,\n                });\n                break;\n            }\n            case 'b3multi': {\n                Object.assign(tracingHeaders, {\n                    'X-B3-TraceId': toPaddedHexadecimalString(traceId),\n                    'X-B3-SpanId': toPaddedHexadecimalString(spanId),\n                    'X-B3-Sampled': traceSampled ? '1' : '0',\n                });\n                break;\n            }\n        }\n    });\n    if (isExperimentalFeatureEnabled(ExperimentalFeature.USER_ACCOUNT_TRACE_HEADER) &&\n        configuration.propagateTraceBaggage) {\n        const baggageItems = {\n            'session.id': sessionId,\n        };\n        const userId = userContext.getContext().id;\n        if (typeof userId === 'string') {\n            baggageItems['user.id'] = userId;\n        }\n        const accountId = accountContext.getContext().id;\n        if (typeof accountId === 'string') {\n            baggageItems['account.id'] = accountId;\n        }\n        const baggageHeader = Object.entries(baggageItems)\n            .map(([key, value]) => `${key}=${encodeURIComponent(value)}`)\n            .join(',');\n        if (baggageHeader) {\n            tracingHeaders['baggage'] = baggageHeader;\n        }\n    }\n    return tracingHeaders;\n}\n//# sourceMappingURL=tracer.js.map","import { getType, isMatchOption, serializeConfiguration, DefaultPrivacyLevel, TraceContextInjection, display, objectHasValue, validateAndBuildConfiguration, isSampleRate, isNumber, isExperimentalFeatureEnabled, ExperimentalFeature, } from '@datadog/browser-core';\nimport { isTracingOption } from '../tracing/tracer';\nexport const DEFAULT_PROPAGATOR_TYPES = ['tracecontext', 'datadog'];\nexport function validateAndBuildRumConfiguration(initConfiguration) {\n    var _a, _b, _c, _d, _e, _f, _g;\n    if (initConfiguration.trackFeatureFlagsForEvents !== undefined &&\n        !Array.isArray(initConfiguration.trackFeatureFlagsForEvents)) {\n        display.warn('trackFeatureFlagsForEvents should be an array');\n    }\n    if (!initConfiguration.applicationId) {\n        display.error('Application ID is not configured, no RUM data will be collected.');\n        return;\n    }\n    if (!isSampleRate(initConfiguration.sessionReplaySampleRate, 'Session Replay') ||\n        !isSampleRate(initConfiguration.traceSampleRate, 'Trace')) {\n        return;\n    }\n    if (initConfiguration.excludedActivityUrls !== undefined && !Array.isArray(initConfiguration.excludedActivityUrls)) {\n        display.error('Excluded Activity Urls should be an array');\n        return;\n    }\n    const allowedTracingUrls = validateAndBuildTracingOptions(initConfiguration);\n    if (!allowedTracingUrls) {\n        return;\n    }\n    const baseConfiguration = validateAndBuildConfiguration(initConfiguration);\n    if (!baseConfiguration) {\n        return;\n    }\n    const profilingEnabled = isExperimentalFeatureEnabled(ExperimentalFeature.PROFILING);\n    const sessionReplaySampleRate = (_a = initConfiguration.sessionReplaySampleRate) !== null && _a !== void 0 ? _a : 0;\n    return {\n        applicationId: initConfiguration.applicationId,\n        version: initConfiguration.version || undefined,\n        actionNameAttribute: initConfiguration.actionNameAttribute,\n        sessionReplaySampleRate,\n        startSessionReplayRecordingManually: initConfiguration.startSessionReplayRecordingManually !== undefined\n            ? !!initConfiguration.startSessionReplayRecordingManually\n            : sessionReplaySampleRate === 0,\n        traceSampleRate: (_b = initConfiguration.traceSampleRate) !== null && _b !== void 0 ? _b : 100,\n        rulePsr: isNumber(initConfiguration.traceSampleRate) ? initConfiguration.traceSampleRate / 100 : undefined,\n        allowedTracingUrls,\n        excludedActivityUrls: (_c = initConfiguration.excludedActivityUrls) !== null && _c !== void 0 ? _c : [],\n        workerUrl: initConfiguration.workerUrl,\n        compressIntakeRequests: !!initConfiguration.compressIntakeRequests,\n        trackUserInteractions: !!((_d = initConfiguration.trackUserInteractions) !== null && _d !== void 0 ? _d : true),\n        trackViewsManually: !!initConfiguration.trackViewsManually,\n        trackResources: !!((_e = initConfiguration.trackResources) !== null && _e !== void 0 ? _e : true),\n        trackLongTasks: !!((_f = initConfiguration.trackLongTasks) !== null && _f !== void 0 ? _f : true),\n        subdomain: initConfiguration.subdomain,\n        defaultPrivacyLevel: objectHasValue(DefaultPrivacyLevel, initConfiguration.defaultPrivacyLevel)\n            ? initConfiguration.defaultPrivacyLevel\n            : DefaultPrivacyLevel.MASK,\n        enablePrivacyForActionName: !!initConfiguration.enablePrivacyForActionName,\n        customerDataTelemetrySampleRate: 1,\n        traceContextInjection: objectHasValue(TraceContextInjection, initConfiguration.traceContextInjection)\n            ? initConfiguration.traceContextInjection\n            : TraceContextInjection.SAMPLED,\n        plugins: initConfiguration.plugins || [],\n        trackFeatureFlagsForEvents: initConfiguration.trackFeatureFlagsForEvents || [],\n        profilingSampleRate: profilingEnabled ? ((_g = initConfiguration.profilingSampleRate) !== null && _g !== void 0 ? _g : 0) : 0, // Enforce 0 if profiling is not enabled, and set 0 as default when not set.\n        propagateTraceBaggage: !!initConfiguration.propagateTraceBaggage,\n        ...baseConfiguration,\n    };\n}\n/**\n * Validates allowedTracingUrls and converts match options to tracing options\n */\nfunction validateAndBuildTracingOptions(initConfiguration) {\n    if (initConfiguration.allowedTracingUrls === undefined) {\n        return [];\n    }\n    if (!Array.isArray(initConfiguration.allowedTracingUrls)) {\n        display.error('Allowed Tracing URLs should be an array');\n        return;\n    }\n    if (initConfiguration.allowedTracingUrls.length !== 0 && initConfiguration.service === undefined) {\n        display.error('Service needs to be configured when tracing is enabled');\n        return;\n    }\n    // Convert from (MatchOption | TracingOption) to TracingOption, remove unknown properties\n    const tracingOptions = [];\n    initConfiguration.allowedTracingUrls.forEach((option) => {\n        if (isMatchOption(option)) {\n            tracingOptions.push({ match: option, propagatorTypes: DEFAULT_PROPAGATOR_TYPES });\n        }\n        else if (isTracingOption(option)) {\n            tracingOptions.push(option);\n        }\n        else {\n            display.warn('Allowed Tracing Urls parameters should be a string, RegExp, function, or an object. Ignoring parameter', option);\n        }\n    });\n    return tracingOptions;\n}\n/**\n * Combines the selected tracing propagators from the different options in allowedTracingUrls\n */\nfunction getSelectedTracingPropagators(configuration) {\n    const usedTracingPropagators = new Set();\n    if (Array.isArray(configuration.allowedTracingUrls) && configuration.allowedTracingUrls.length > 0) {\n        configuration.allowedTracingUrls.forEach((option) => {\n            if (isMatchOption(option)) {\n                DEFAULT_PROPAGATOR_TYPES.forEach((propagatorType) => usedTracingPropagators.add(propagatorType));\n            }\n            else if (getType(option) === 'object' && Array.isArray(option.propagatorTypes)) {\n                // Ensure we have an array, as we cannot rely on types yet (configuration is provided by users)\n                option.propagatorTypes.forEach((propagatorType) => usedTracingPropagators.add(propagatorType));\n            }\n        });\n    }\n    return Array.from(usedTracingPropagators);\n}\nexport function serializeRumConfiguration(configuration) {\n    var _a;\n    const baseSerializedConfiguration = serializeConfiguration(configuration);\n    return {\n        session_replay_sample_rate: configuration.sessionReplaySampleRate,\n        start_session_replay_recording_manually: configuration.startSessionReplayRecordingManually,\n        trace_sample_rate: configuration.traceSampleRate,\n        trace_context_injection: configuration.traceContextInjection,\n        action_name_attribute: configuration.actionNameAttribute,\n        use_allowed_tracing_urls: Array.isArray(configuration.allowedTracingUrls) && configuration.allowedTracingUrls.length > 0,\n        selected_tracing_propagators: getSelectedTracingPropagators(configuration),\n        default_privacy_level: configuration.defaultPrivacyLevel,\n        enable_privacy_for_action_name: configuration.enablePrivacyForActionName,\n        use_excluded_activity_urls: Array.isArray(configuration.excludedActivityUrls) && configuration.excludedActivityUrls.length > 0,\n        use_worker_url: !!configuration.workerUrl,\n        compress_intake_requests: configuration.compressIntakeRequests,\n        track_views_manually: configuration.trackViewsManually,\n        track_user_interactions: configuration.trackUserInteractions,\n        track_resources: configuration.trackResources,\n        track_long_task: configuration.trackLongTasks,\n        plugins: (_a = configuration.plugins) === null || _a === void 0 ? void 0 : _a.map((plugin) => {\n            var _a;\n            return ({\n                name: plugin.name,\n                ...(_a = plugin.getConfigurationTelemetry) === null || _a === void 0 ? void 0 : _a.call(plugin),\n            });\n        }),\n        track_feature_flags_for_events: configuration.trackFeatureFlagsForEvents,\n        ...baseSerializedConfiguration,\n    };\n}\n//# sourceMappingURL=configuration.js.map","import { display, addEventListener, buildEndpointHost } from '@datadog/browser-core';\nconst REMOTE_CONFIGURATION_VERSION = 'v1';\nexport function fetchAndApplyRemoteConfiguration(initConfiguration, callback) {\n    fetchRemoteConfiguration(initConfiguration, (remoteInitConfiguration) => {\n        callback(applyRemoteConfiguration(initConfiguration, remoteInitConfiguration));\n    });\n}\nexport function applyRemoteConfiguration(initConfiguration, remoteInitConfiguration) {\n    return { ...initConfiguration, ...remoteInitConfiguration };\n}\nexport function fetchRemoteConfiguration(configuration, callback) {\n    const xhr = new XMLHttpRequest();\n    addEventListener(configuration, xhr, 'load', function () {\n        if (xhr.status === 200) {\n            const remoteConfiguration = JSON.parse(xhr.responseText);\n            callback(remoteConfiguration.rum);\n        }\n        else {\n            displayRemoteConfigurationFetchingError();\n        }\n    });\n    addEventListener(configuration, xhr, 'error', function () {\n        displayRemoteConfigurationFetchingError();\n    });\n    xhr.open('GET', buildEndpoint(configuration));\n    xhr.send();\n}\nexport function buildEndpoint(configuration) {\n    return `https://sdk-configuration.${buildEndpointHost('rum', configuration)}/${REMOTE_CONFIGURATION_VERSION}/${encodeURIComponent(configuration.remoteConfigurationId)}.json`;\n}\nfunction displayRemoteConfigurationFetchingError() {\n    display.error('Error fetching the remote configuration.');\n}\n//# sourceMappingURL=remoteConfiguration.js.map","import { addEventListener } from '../../browser/addEventListener';\nimport { combine } from '../../tools/mergeInto';\nimport { isEmptyObject } from '../../tools/utils/objectUtils';\nconst CONTEXT_STORE_KEY_PREFIX = '_dd_c';\nconst storageListeners = [];\nexport function storeContextManager(configuration, contextManager, productKey, customerDataType) {\n    const storageKey = buildStorageKey(productKey, customerDataType);\n    storageListeners.push(addEventListener(configuration, window, \"storage\" /* DOM_EVENT.STORAGE */, ({ key }) => {\n        if (storageKey === key) {\n            synchronizeWithStorage();\n        }\n    }));\n    contextManager.changeObservable.subscribe(dumpToStorage);\n    const contextFromStorage = combine(getFromStorage(), contextManager.getContext());\n    if (!isEmptyObject(contextFromStorage)) {\n        contextManager.setContext(contextFromStorage);\n    }\n    function synchronizeWithStorage() {\n        contextManager.setContext(getFromStorage());\n    }\n    function dumpToStorage() {\n        localStorage.setItem(storageKey, JSON.stringify(contextManager.getContext()));\n    }\n    function getFromStorage() {\n        const rawContext = localStorage.getItem(storageKey);\n        return rawContext ? JSON.parse(rawContext) : {};\n    }\n}\nexport function buildStorageKey(productKey, customerDataType) {\n    return `${CONTEXT_STORE_KEY_PREFIX}_${productKey}_${customerDataType}`;\n}\nexport function removeStorageListeners() {\n    storageListeners.map((listener) => listener.stop());\n}\n//# sourceMappingURL=storeContextManager.js.map","import { deepClone } from '../../tools/mergeInto';\nimport { sanitize } from '../../tools/serialisation/sanitize';\nimport { Observable } from '../../tools/observable';\nimport { display } from '../../tools/display';\nimport { checkContext } from './contextUtils';\nfunction ensureProperties(context, propertiesConfig, name) {\n    const newContext = { ...context };\n    for (const [key, { required, type }] of Object.entries(propertiesConfig)) {\n        /**\n         * Ensure specified properties are strings as defined here:\n         * https://docs.datadoghq.com/logs/log_configuration/attributes_naming_convention/#user-related-attributes\n         */\n        if (type === 'string' && !isDefined(newContext[key])) {\n            /* eslint-disable @typescript-eslint/no-base-to-string */\n            newContext[key] = String(newContext[key]);\n        }\n        if (required && isDefined(newContext[key])) {\n            display.warn(`The property ${key} of ${name} is required; context will not be sent to the intake.`);\n        }\n    }\n    return newContext;\n}\nfunction isDefined(value) {\n    return value === undefined || value === null || value === '';\n}\nexport function createContextManager(name = '', { propertiesConfig = {}, } = {}) {\n    let context = {};\n    const changeObservable = new Observable();\n    const contextManager = {\n        getContext: () => deepClone(context),\n        setContext: (newContext) => {\n            if (checkContext(newContext)) {\n                context = sanitize(ensureProperties(newContext, propertiesConfig, name));\n            }\n            else {\n                contextManager.clearContext();\n            }\n            changeObservable.notify();\n        },\n        setContextProperty: (key, property) => {\n            context = sanitize(ensureProperties({ ...context, [key]: property }, propertiesConfig, name));\n            changeObservable.notify();\n        },\n        removeContextProperty: (key) => {\n            delete context[key];\n            ensureProperties(context, propertiesConfig, name);\n            changeObservable.notify();\n        },\n        clearContext: () => {\n            context = {};\n            changeObservable.notify();\n        },\n        changeObservable,\n    };\n    return contextManager;\n}\n//# sourceMappingURL=contextManager.js.map","import { display } from '../../tools/display';\nimport { getType } from '../../tools/utils/typeUtils';\n/**\n * Simple check to ensure an object is a valid context\n */\nexport function checkContext(maybeContext) {\n    const isValid = getType(maybeContext) === 'object';\n    if (!isValid) {\n        display.error('Unsupported context:', maybeContext);\n    }\n    return isValid;\n}\n//# sourceMappingURL=contextUtils.js.map","import { createContextManager, storeContextManager } from '@datadog/browser-core';\nexport function startGlobalContext(hooks, configuration) {\n    const globalContextManager = buildGlobalContextManager();\n    if (configuration.storeContextsAcrossPages) {\n        storeContextManager(configuration, globalContextManager, 'rum', 2 /* CustomerDataType.GlobalContext */);\n    }\n    hooks.register(0 /* HookNames.Assemble */, ({ eventType }) => ({\n        type: eventType,\n        context: globalContextManager.getContext(),\n    }));\n    return globalContextManager;\n}\nexport function buildGlobalContextManager() {\n    return createContextManager('global context');\n}\n//# sourceMappingURL=globalContext.js.map","import { createContextManager, isEmptyObject, storeContextManager } from '@datadog/browser-core';\nexport function startUserContext(hooks, configuration, sessionManager) {\n    const userContextManager = buildUserContextManager();\n    if (configuration.storeContextsAcrossPages) {\n        storeContextManager(configuration, userContextManager, 'rum', 1 /* CustomerDataType.User */);\n    }\n    hooks.register(0 /* HookNames.Assemble */, ({ eventType, startTime }) => {\n        const user = userContextManager.getContext();\n        const session = sessionManager.findTrackedSession(startTime);\n        if (session && session.anonymousId && !user.anonymous_id && !!configuration.trackAnonymousUser) {\n            user.anonymous_id = session.anonymousId;\n        }\n        if (isEmptyObject(user)) {\n            return;\n        }\n        return {\n            type: eventType,\n            usr: user,\n        };\n    });\n    return userContextManager;\n}\nexport function buildUserContextManager() {\n    return createContextManager('user', {\n        propertiesConfig: {\n            id: { type: 'string' },\n            name: { type: 'string' },\n            email: { type: 'string' },\n        },\n    });\n}\n//# sourceMappingURL=userContext.js.map","import { createContextManager, isEmptyObject, storeContextManager } from '@datadog/browser-core';\nexport function startAccountContext(hooks, configuration) {\n    const accountContextManager = buildAccountContextManager();\n    if (configuration.storeContextsAcrossPages) {\n        storeContextManager(configuration, accountContextManager, 'rum', 4 /* CustomerDataType.Account */);\n    }\n    hooks.register(0 /* HookNames.Assemble */, ({ eventType }) => {\n        const account = accountContextManager.getContext();\n        if (isEmptyObject(account) || !account.id) {\n            return;\n        }\n        return {\n            type: eventType,\n            account,\n        };\n    });\n    return accountContextManager;\n}\nexport function buildAccountContextManager() {\n    return createContextManager('account', {\n        propertiesConfig: {\n            id: { type: 'string', required: true },\n            name: { type: 'string' },\n        },\n    });\n}\n//# sourceMappingURL=accountContext.js.map","import { createBoundedBuffer, display, canUseEventBridge, displayAlreadyInitializedError, willSyntheticsInjectRum, noop, timeStampNow, clocksNow, getEventBridge, initFeatureFlags, addTelemetryConfiguration, initFetchObservable, CustomerContextKey, } from '@datadog/browser-core';\nimport { validateAndBuildRumConfiguration, } from '../domain/configuration';\nimport { startDurationVital, stopDurationVital } from '../domain/vital/vitalCollection';\nimport { fetchAndApplyRemoteConfiguration, serializeRumConfiguration } from '../domain/configuration';\nimport { callPluginsMethod } from '../domain/plugins';\nimport { buildGlobalContextManager } from '../domain/contexts/globalContext';\nimport { buildUserContextManager } from '../domain/contexts/userContext';\nimport { buildAccountContextManager } from '../domain/contexts/accountContext';\nexport function createPreStartStrategy({ ignoreInitIfSyntheticsWillInjectRum, startDeflateWorker }, trackingConsentState, customVitalsState, doStartRum) {\n    const bufferApiCalls = createBoundedBuffer();\n    // TODO next major: remove the globalContextManager, userContextManager and accountContextManager from preStartStrategy and use an empty context instead\n    const globalContext = buildGlobalContextManager();\n    bufferContextCalls(globalContext, CustomerContextKey.globalContext, bufferApiCalls);\n    const userContext = buildUserContextManager();\n    bufferContextCalls(userContext, CustomerContextKey.userContext, bufferApiCalls);\n    const accountContext = buildAccountContextManager();\n    bufferContextCalls(accountContext, CustomerContextKey.accountContext, bufferApiCalls);\n    let firstStartViewCall;\n    let deflateWorker;\n    let cachedInitConfiguration;\n    let cachedConfiguration;\n    const trackingConsentStateSubscription = trackingConsentState.observable.subscribe(tryStartRum);\n    const emptyContext = {};\n    function tryStartRum() {\n        if (!cachedInitConfiguration || !cachedConfiguration || !trackingConsentState.isGranted()) {\n            return;\n        }\n        trackingConsentStateSubscription.unsubscribe();\n        let initialViewOptions;\n        if (cachedConfiguration.trackViewsManually) {\n            if (!firstStartViewCall) {\n                return;\n            }\n            // An initial view is always created when starting RUM.\n            // When tracking views automatically, any startView call before RUM start creates an extra\n            // view.\n            // When tracking views manually, we use the ViewOptions from the first startView call as the\n            // initial view options, and we remove the actual startView call so we don't create an extra\n            // view.\n            bufferApiCalls.remove(firstStartViewCall.callback);\n            initialViewOptions = firstStartViewCall.options;\n        }\n        const startRumResult = doStartRum(cachedConfiguration, deflateWorker, initialViewOptions);\n        bufferApiCalls.drain(startRumResult);\n    }\n    function doInit(initConfiguration) {\n        const eventBridgeAvailable = canUseEventBridge();\n        if (eventBridgeAvailable) {\n            initConfiguration = overrideInitConfigurationForBridge(initConfiguration);\n        }\n        // Update the exposed initConfiguration to reflect the bridge and remote configuration overrides\n        cachedInitConfiguration = initConfiguration;\n        addTelemetryConfiguration(serializeRumConfiguration(initConfiguration));\n        if (cachedConfiguration) {\n            displayAlreadyInitializedError('DD_RUM', initConfiguration);\n            return;\n        }\n        const configuration = validateAndBuildRumConfiguration(initConfiguration);\n        if (!configuration) {\n            return;\n        }\n        if (!eventBridgeAvailable && !configuration.sessionStoreStrategyType) {\n            display.warn('No storage available for session. We will not send any data.');\n            return;\n        }\n        if (configuration.compressIntakeRequests && !eventBridgeAvailable && startDeflateWorker) {\n            deflateWorker = startDeflateWorker(configuration, 'Datadog RUM', \n            // Worker initialization can fail asynchronously, especially in Firefox where even CSP\n            // issues are reported asynchronously. For now, the SDK will continue its execution even if\n            // data won't be sent to Datadog. We could improve this behavior in the future.\n            noop);\n            if (!deflateWorker) {\n                // `startDeflateWorker` should have logged an error message explaining the issue\n                return;\n            }\n        }\n        cachedConfiguration = configuration;\n        // Instrument fetch to track network requests\n        // This is needed in case the consent is not granted and some customer\n        // library (Apollo Client) is storing uninstrumented fetch to be used later\n        // The subscription is needed so that the instrumentation process is completed\n        initFetchObservable().subscribe(noop);\n        trackingConsentState.tryToInit(configuration.trackingConsent);\n        tryStartRum();\n    }\n    const addDurationVital = (vital) => {\n        bufferApiCalls.add((startRumResult) => startRumResult.addDurationVital(vital));\n    };\n    const strategy = {\n        init(initConfiguration, publicApi) {\n            if (!initConfiguration) {\n                display.error('Missing configuration');\n                return;\n            }\n            // Set the experimental feature flags as early as possible, so we can use them in most places\n            initFeatureFlags(initConfiguration.enableExperimentalFeatures);\n            // Expose the initial configuration regardless of initialization success.\n            cachedInitConfiguration = initConfiguration;\n            // If we are in a Synthetics test configured to automatically inject a RUM instance, we want\n            // to completely discard the customer application RUM instance by ignoring their init() call.\n            // But, we should not ignore the init() call from the Synthetics-injected RUM instance, so the\n            // internal `ignoreInitIfSyntheticsWillInjectRum` option is here to bypass this condition.\n            if (ignoreInitIfSyntheticsWillInjectRum && willSyntheticsInjectRum()) {\n                return;\n            }\n            callPluginsMethod(initConfiguration.plugins, 'onInit', { initConfiguration, publicApi });\n            if (initConfiguration.remoteConfigurationId) {\n                fetchAndApplyRemoteConfiguration(initConfiguration, doInit);\n            }\n            else {\n                doInit(initConfiguration);\n            }\n        },\n        get initConfiguration() {\n            return cachedInitConfiguration;\n        },\n        getInternalContext: noop,\n        stopSession: noop,\n        addTiming(name, time = timeStampNow()) {\n            bufferApiCalls.add((startRumResult) => startRumResult.addTiming(name, time));\n        },\n        startView(options, startClocks = clocksNow()) {\n            const callback = (startRumResult) => {\n                startRumResult.startView(options, startClocks);\n            };\n            bufferApiCalls.add(callback);\n            if (!firstStartViewCall) {\n                firstStartViewCall = { options, callback };\n                tryStartRum();\n            }\n        },\n        setViewName(name) {\n            bufferApiCalls.add((startRumResult) => startRumResult.setViewName(name));\n        },\n        // View context APIs\n        setViewContext(context) {\n            bufferApiCalls.add((startRumResult) => startRumResult.setViewContext(context));\n        },\n        setViewContextProperty(key, value) {\n            bufferApiCalls.add((startRumResult) => startRumResult.setViewContextProperty(key, value));\n        },\n        getViewContext: () => emptyContext,\n        globalContext,\n        userContext,\n        accountContext,\n        addAction(action) {\n            bufferApiCalls.add((startRumResult) => startRumResult.addAction(action));\n        },\n        addError(providedError) {\n            bufferApiCalls.add((startRumResult) => startRumResult.addError(providedError));\n        },\n        addFeatureFlagEvaluation(key, value) {\n            bufferApiCalls.add((startRumResult) => startRumResult.addFeatureFlagEvaluation(key, value));\n        },\n        startDurationVital(name, options) {\n            return startDurationVital(customVitalsState, name, options);\n        },\n        stopDurationVital(name, options) {\n            stopDurationVital(addDurationVital, customVitalsState, name, options);\n        },\n        addDurationVital,\n    };\n    return strategy;\n}\nfunction overrideInitConfigurationForBridge(initConfiguration) {\n    var _a, _b;\n    return {\n        ...initConfiguration,\n        applicationId: '00000000-aaaa-0000-aaaa-000000000000',\n        clientToken: 'empty',\n        sessionSampleRate: 100,\n        defaultPrivacyLevel: (_a = initConfiguration.defaultPrivacyLevel) !== null && _a !== void 0 ? _a : (_b = getEventBridge()) === null || _b === void 0 ? void 0 : _b.getPrivacyLevel(),\n    };\n}\nfunction bufferContextCalls(preStartContextManager, name, bufferApiCalls) {\n    preStartContextManager.changeObservable.subscribe(() => {\n        const context = preStartContextManager.getContext();\n        bufferApiCalls.add((startRumResult) => startRumResult[name].setContext(context));\n    });\n}\n//# sourceMappingURL=preStartRum.js.map","import { ContextManagerMethod, addTelemetryUsage, deepClone, makePublicApi, monitor, clocksNow, callMonitored, createHandlingStack, sanitize, createIdentityEncoder, displayAlreadyInitializedError, createTrackingConsentState, timeStampToClocks, CustomerContextKey, } from '@datadog/browser-core';\nimport { createCustomVitalsState } from '../domain/vital/vitalCollection';\nimport { callPluginsMethod } from '../domain/plugins';\nimport { createPreStartStrategy } from './preStartRum';\nexport function makeRumPublicApi(startRumImpl, recorderApi, profilerApi, options = {}) {\n    const trackingConsentState = createTrackingConsentState();\n    const customVitalsState = createCustomVitalsState();\n    let strategy = createPreStartStrategy(options, trackingConsentState, customVitalsState, (configuration, deflateWorker, initialViewOptions) => {\n        const startRumResult = startRumImpl(configuration, recorderApi, profilerApi, initialViewOptions, deflateWorker && options.createDeflateEncoder\n            ? (streamId) => options.createDeflateEncoder(configuration, deflateWorker, streamId)\n            : createIdentityEncoder, trackingConsentState, customVitalsState);\n        recorderApi.onRumStart(startRumResult.lifeCycle, configuration, startRumResult.session, startRumResult.viewHistory, deflateWorker);\n        profilerApi.onRumStart(startRumResult.lifeCycle, configuration, startRumResult.session, startRumResult.viewHistory);\n        strategy = createPostStartStrategy(strategy, startRumResult);\n        callPluginsMethod(configuration.plugins, 'onRumStart', { strategy });\n        return startRumResult;\n    });\n    const startView = monitor((options) => {\n        const sanitizedOptions = typeof options === 'object' ? options : { name: options };\n        strategy.startView(sanitizedOptions);\n        addTelemetryUsage({ feature: 'start-view' });\n    });\n    function defineContextMethod(contextName, methodName, usage) {\n        return monitor((...args) => {\n            addTelemetryUsage({ feature: usage });\n            return strategy[contextName][methodName](...args);\n        });\n    }\n    const rumPublicApi = makePublicApi({\n        init: monitor((initConfiguration) => {\n            strategy.init(initConfiguration, rumPublicApi);\n        }),\n        setTrackingConsent: monitor((trackingConsent) => {\n            trackingConsentState.update(trackingConsent);\n            addTelemetryUsage({ feature: 'set-tracking-consent', tracking_consent: trackingConsent });\n        }),\n        setViewName: monitor((name) => {\n            strategy.setViewName(name);\n            addTelemetryUsage({ feature: 'set-view-name' });\n        }),\n        setViewContext: monitor((context) => {\n            strategy.setViewContext(context);\n            addTelemetryUsage({ feature: 'set-view-context' });\n        }),\n        setViewContextProperty: monitor((key, value) => {\n            strategy.setViewContextProperty(key, value);\n            addTelemetryUsage({ feature: 'set-view-context-property' });\n        }),\n        getViewContext: monitor(() => {\n            addTelemetryUsage({ feature: 'set-view-context-property' });\n            return strategy.getViewContext();\n        }),\n        getInternalContext: monitor((startTime) => strategy.getInternalContext(startTime)),\n        getInitConfiguration: monitor(() => deepClone(strategy.initConfiguration)),\n        addAction: (name, context) => {\n            const handlingStack = createHandlingStack('action');\n            callMonitored(() => {\n                strategy.addAction({\n                    name: sanitize(name),\n                    context: sanitize(context),\n                    startClocks: clocksNow(),\n                    type: \"custom\" /* ActionType.CUSTOM */,\n                    handlingStack,\n                });\n                addTelemetryUsage({ feature: 'add-action' });\n            });\n        },\n        addError: (error, context) => {\n            const handlingStack = createHandlingStack('error');\n            callMonitored(() => {\n                strategy.addError({\n                    error, // Do not sanitize error here, it is needed unserialized by computeRawError()\n                    handlingStack,\n                    context: sanitize(context),\n                    startClocks: clocksNow(),\n                });\n                addTelemetryUsage({ feature: 'add-error' });\n            });\n        },\n        addTiming: monitor((name, time) => {\n            // TODO: next major decide to drop relative time support or update its behaviour\n            strategy.addTiming(sanitize(name), time);\n        }),\n        setGlobalContext: defineContextMethod(CustomerContextKey.globalContext, ContextManagerMethod.setContext, 'set-global-context'),\n        getGlobalContext: defineContextMethod(CustomerContextKey.globalContext, ContextManagerMethod.getContext, 'get-global-context'),\n        setGlobalContextProperty: defineContextMethod(CustomerContextKey.globalContext, ContextManagerMethod.setContextProperty, 'set-global-context-property'),\n        removeGlobalContextProperty: defineContextMethod(CustomerContextKey.globalContext, ContextManagerMethod.removeContextProperty, 'remove-global-context-property'),\n        clearGlobalContext: defineContextMethod(CustomerContextKey.globalContext, ContextManagerMethod.clearContext, 'clear-global-context'),\n        setUser: defineContextMethod(CustomerContextKey.userContext, ContextManagerMethod.setContext, 'set-user'),\n        getUser: defineContextMethod(CustomerContextKey.userContext, ContextManagerMethod.getContext, 'get-user'),\n        setUserProperty: defineContextMethod(CustomerContextKey.userContext, ContextManagerMethod.setContextProperty, 'set-user-property'),\n        removeUserProperty: defineContextMethod(CustomerContextKey.userContext, ContextManagerMethod.removeContextProperty, 'remove-user-property'),\n        clearUser: defineContextMethod(CustomerContextKey.userContext, ContextManagerMethod.clearContext, 'clear-user'),\n        setAccount: defineContextMethod(CustomerContextKey.accountContext, ContextManagerMethod.setContext, 'set-account'),\n        getAccount: defineContextMethod(CustomerContextKey.accountContext, ContextManagerMethod.getContext, 'get-account'),\n        setAccountProperty: defineContextMethod(CustomerContextKey.accountContext, ContextManagerMethod.setContextProperty, 'set-account-property'),\n        removeAccountProperty: defineContextMethod(CustomerContextKey.accountContext, ContextManagerMethod.removeContextProperty, 'remove-account-property'),\n        clearAccount: defineContextMethod(CustomerContextKey.accountContext, ContextManagerMethod.clearContext, 'clear-account'),\n        startView,\n        stopSession: monitor(() => {\n            strategy.stopSession();\n            addTelemetryUsage({ feature: 'stop-session' });\n        }),\n        addFeatureFlagEvaluation: monitor((key, value) => {\n            strategy.addFeatureFlagEvaluation(sanitize(key), sanitize(value));\n            addTelemetryUsage({ feature: 'add-feature-flag-evaluation' });\n        }),\n        getSessionReplayLink: monitor(() => recorderApi.getSessionReplayLink()),\n        startSessionReplayRecording: monitor((options) => {\n            recorderApi.start(options);\n            addTelemetryUsage({ feature: 'start-session-replay-recording', force: options && options.force });\n        }),\n        stopSessionReplayRecording: monitor(() => recorderApi.stop()),\n        addDurationVital: monitor((name, options) => {\n            addTelemetryUsage({ feature: 'add-duration-vital' });\n            strategy.addDurationVital({\n                name: sanitize(name),\n                type: \"duration\" /* VitalType.DURATION */,\n                startClocks: timeStampToClocks(options.startTime),\n                duration: options.duration,\n                context: sanitize(options && options.context),\n                description: sanitize(options && options.description),\n            });\n        }),\n        startDurationVital: monitor((name, options) => {\n            addTelemetryUsage({ feature: 'start-duration-vital' });\n            return strategy.startDurationVital(sanitize(name), {\n                context: sanitize(options && options.context),\n                description: sanitize(options && options.description),\n            });\n        }),\n        stopDurationVital: monitor((nameOrRef, options) => {\n            addTelemetryUsage({ feature: 'stop-duration-vital' });\n            strategy.stopDurationVital(typeof nameOrRef === 'string' ? sanitize(nameOrRef) : nameOrRef, {\n                context: sanitize(options && options.context),\n                description: sanitize(options && options.description),\n            });\n        }),\n    });\n    return rumPublicApi;\n}\nfunction createPostStartStrategy(preStartStrategy, startRumResult) {\n    return {\n        init: (initConfiguration) => {\n            displayAlreadyInitializedError('DD_RUM', initConfiguration);\n        },\n        initConfiguration: preStartStrategy.initConfiguration,\n        ...startRumResult,\n    };\n}\n//# sourceMappingURL=rumPublicApi.js.map","import { monitor, noop, Observable, getZoneJsOriginalValue } from '@datadog/browser-core';\nexport function createDOMMutationObservable() {\n    const MutationObserver = getMutationObserverConstructor();\n    return new Observable((observable) => {\n        if (!MutationObserver) {\n            return;\n        }\n        const observer = new MutationObserver(monitor(() => observable.notify()));\n        observer.observe(document, {\n            attributes: true,\n            characterData: true,\n            childList: true,\n            subtree: true,\n        });\n        return () => observer.disconnect();\n    });\n}\nexport function getMutationObserverConstructor() {\n    let constructor;\n    const browserWindow = window;\n    // Angular uses Zone.js to provide a context persisting across async tasks.  Zone.js replaces the\n    // global MutationObserver constructor with a patched version to support the context propagation.\n    // There is an ongoing issue[1][2] with this setup when using a MutationObserver within a Angular\n    // component: on some occasions, the callback is being called in an infinite loop, causing the\n    // page to freeze (even if the callback is completely empty).\n    //\n    // To work around this issue, we try to get the original MutationObserver constructor stored by\n    // Zone.js.\n    //\n    // [1] https://github.com/angular/angular/issues/26948\n    // [2] https://github.com/angular/angular/issues/31712\n    if (browserWindow.Zone) {\n        // Zone.js 0.8.6+ is storing original class constructors into the browser 'window' object[3].\n        //\n        // [3] https://github.com/angular/angular/blob/6375fa79875c0fe7b815efc45940a6e6f5c9c9eb/packages/zone.js/lib/common/utils.ts#L288\n        constructor = getZoneJsOriginalValue(browserWindow, 'MutationObserver');\n        if (browserWindow.MutationObserver && constructor === browserWindow.MutationObserver) {\n            // Anterior Zone.js versions (used in Angular 2) does not expose the original MutationObserver\n            // in the 'window' object. Luckily, the patched MutationObserver class is storing an original\n            // instance in its properties[4]. Let's get the original MutationObserver constructor from\n            // there.\n            //\n            // [4] https://github.com/angular/zone.js/blob/v0.8.5/lib/common/utils.ts#L412\n            const patchedInstance = new browserWindow.MutationObserver(noop);\n            const originalInstance = getZoneJsOriginalValue(patchedInstance, 'originalInstance');\n            constructor = originalInstance && originalInstance.constructor;\n        }\n    }\n    if (!constructor) {\n        constructor = browserWindow.MutationObserver;\n    }\n    return constructor;\n}\n//# sourceMappingURL=domMutationObservable.js.map","import { AbstractLifeCycle } from '@datadog/browser-core';\nexport const LifeCycle = (AbstractLifeCycle);\n//# sourceMappingURL=lifeCycle.js.map","// eslint-disable-next-line no-restricted-syntax\nexport class AbstractLifeCycle {\n    constructor() {\n        this.callbacks = {};\n    }\n    notify(eventType, data) {\n        const eventCallbacks = this.callbacks[eventType];\n        if (eventCallbacks) {\n            eventCallbacks.forEach((callback) => callback(data));\n        }\n    }\n    subscribe(eventType, callback) {\n        if (!this.callbacks[eventType]) {\n            this.callbacks[eventType] = [];\n        }\n        this.callbacks[eventType].push(callback);\n        return {\n            unsubscribe: () => {\n                this.callbacks[eventType] = this.callbacks[eventType].filter((other) => callback !== other);\n            },\n        };\n    }\n}\n//# sourceMappingURL=abstractLifeCycle.js.map","import { setInterval, clearInterval } from './timer';\nimport { removeItem } from './utils/arrayUtils';\nimport { addDuration, relativeNow, ONE_MINUTE } from './utils/timeUtils';\nconst END_OF_TIMES = Infinity;\nexport const CLEAR_OLD_VALUES_INTERVAL = ONE_MINUTE;\nlet cleanupHistoriesInterval = null;\nconst cleanupTasks = new Set();\nfunction cleanupHistories() {\n    cleanupTasks.forEach((task) => task());\n}\nexport function createValueHistory({ expireDelay, maxEntries, }) {\n    let entries = [];\n    if (!cleanupHistoriesInterval) {\n        cleanupHistoriesInterval = setInterval(() => cleanupHistories(), CLEAR_OLD_VALUES_INTERVAL);\n    }\n    const clearExpiredValues = () => {\n        const oldTimeThreshold = relativeNow() - expireDelay;\n        while (entries.length > 0 && entries[entries.length - 1].endTime < oldTimeThreshold) {\n            entries.pop();\n        }\n    };\n    cleanupTasks.add(clearExpiredValues);\n    /**\n     * Add a value to the history associated with a start time. Returns a reference to this newly\n     * added entry that can be removed or closed.\n     */\n    function add(value, startTime) {\n        const entry = {\n            value,\n            startTime,\n            endTime: END_OF_TIMES,\n            remove: () => {\n                removeItem(entries, entry);\n            },\n            close: (endTime) => {\n                entry.endTime = endTime;\n            },\n        };\n        if (maxEntries && entries.length >= maxEntries) {\n            entries.pop();\n        }\n        entries.unshift(entry);\n        return entry;\n    }\n    /**\n     * Return the latest value that was active during `startTime`, or the currently active value\n     * if no `startTime` is provided. This method assumes that entries are not overlapping.\n     *\n     * If `option.returnInactive` is true, returns the value at `startTime` (active or not).\n     */\n    function find(startTime = END_OF_TIMES, options = { returnInactive: false }) {\n        for (const entry of entries) {\n            if (entry.startTime <= startTime) {\n                if (options.returnInactive || startTime <= entry.endTime) {\n                    return entry.value;\n                }\n                break;\n            }\n        }\n    }\n    /**\n     * Helper function to close the currently active value, if any. This method assumes that entries\n     * are not overlapping.\n     */\n    function closeActive(endTime) {\n        const latestEntry = entries[0];\n        if (latestEntry && latestEntry.endTime === END_OF_TIMES) {\n            latestEntry.close(endTime);\n        }\n    }\n    /**\n     * Return all values with an active period overlapping with the duration,\n     * or all values that were active during `startTime` if no duration is provided,\n     * or all currently active values if no `startTime` is provided.\n     */\n    function findAll(startTime = END_OF_TIMES, duration = 0) {\n        const endTime = addDuration(startTime, duration);\n        return entries\n            .filter((entry) => entry.startTime <= endTime && startTime <= entry.endTime)\n            .map((entry) => entry.value);\n    }\n    /**\n     * Remove all entries from this collection.\n     */\n    function reset() {\n        entries = [];\n    }\n    /**\n     * Stop internal garbage collection of past entries.\n     */\n    function stop() {\n        cleanupTasks.delete(clearExpiredValues);\n        if (cleanupTasks.size === 0 && cleanupHistoriesInterval) {\n            clearInterval(cleanupHistoriesInterval);\n            cleanupHistoriesInterval = null;\n        }\n    }\n    return { add, find, closeActive, findAll, reset, stop };\n}\n//# sourceMappingURL=valueHistory.js.map","import { SESSION_TIME_OUT_DELAY, createValueHistory } from '@datadog/browser-core';\nexport const VIEW_CONTEXT_TIME_OUT_DELAY = SESSION_TIME_OUT_DELAY;\nexport function startViewHistory(lifeCycle) {\n    const viewValueHistory = createValueHistory({ expireDelay: VIEW_CONTEXT_TIME_OUT_DELAY });\n    lifeCycle.subscribe(1 /* LifeCycleEventType.BEFORE_VIEW_CREATED */, (view) => {\n        viewValueHistory.add(buildViewHistoryEntry(view), view.startClocks.relative);\n    });\n    lifeCycle.subscribe(6 /* LifeCycleEventType.AFTER_VIEW_ENDED */, ({ endClocks }) => {\n        viewValueHistory.closeActive(endClocks.relative);\n    });\n    lifeCycle.subscribe(3 /* LifeCycleEventType.BEFORE_VIEW_UPDATED */, (viewUpdate) => {\n        const currentView = viewValueHistory.find(viewUpdate.startClocks.relative);\n        if (!currentView) {\n            return;\n        }\n        if (viewUpdate.name) {\n            currentView.name = viewUpdate.name;\n        }\n        if (viewUpdate.context) {\n            currentView.context = viewUpdate.context;\n        }\n        currentView.sessionIsActive = viewUpdate.sessionIsActive;\n    });\n    lifeCycle.subscribe(10 /* LifeCycleEventType.SESSION_RENEWED */, () => {\n        viewValueHistory.reset();\n    });\n    function buildViewHistoryEntry(view) {\n        return {\n            service: view.service,\n            version: view.version,\n            context: view.context,\n            id: view.id,\n            name: view.name,\n            startClocks: view.startClocks,\n        };\n    }\n    return {\n        findView: (startTime) => viewValueHistory.find(startTime),\n        stop: () => {\n            viewValueHistory.stop();\n        },\n    };\n}\n//# sourceMappingURL=viewHistory.js.map","import { instrumentMethod } from '../tools/instrumentMethod';\nimport { Observable } from '../tools/observable';\nimport { elapsed, clocksNow, timeStampNow } from '../tools/utils/timeUtils';\nimport { normalizeUrl } from '../tools/utils/urlPolyfill';\nimport { shallowClone } from '../tools/utils/objectUtils';\nimport { addEventListener } from './addEventListener';\nlet xhrObservable;\nconst xhrContexts = new WeakMap();\nexport function initXhrObservable(configuration) {\n    if (!xhrObservable) {\n        xhrObservable = createXhrObservable(configuration);\n    }\n    return xhrObservable;\n}\nfunction createXhrObservable(configuration) {\n    return new Observable((observable) => {\n        const { stop: stopInstrumentingStart } = instrumentMethod(XMLHttpRequest.prototype, 'open', openXhr);\n        const { stop: stopInstrumentingSend } = instrumentMethod(XMLHttpRequest.prototype, 'send', (call) => {\n            sendXhr(call, configuration, observable);\n        }, { computeHandlingStack: true });\n        const { stop: stopInstrumentingAbort } = instrumentMethod(XMLHttpRequest.prototype, 'abort', abortXhr);\n        return () => {\n            stopInstrumentingStart();\n            stopInstrumentingSend();\n            stopInstrumentingAbort();\n        };\n    });\n}\nfunction openXhr({ target: xhr, parameters: [method, url] }) {\n    xhrContexts.set(xhr, {\n        state: 'open',\n        method: String(method).toUpperCase(),\n        url: normalizeUrl(String(url)),\n    });\n}\nfunction sendXhr({ target: xhr, handlingStack }, configuration, observable) {\n    const context = xhrContexts.get(xhr);\n    if (!context) {\n        return;\n    }\n    const startContext = context;\n    startContext.state = 'start';\n    startContext.startClocks = clocksNow();\n    startContext.isAborted = false;\n    startContext.xhr = xhr;\n    startContext.handlingStack = handlingStack;\n    let hasBeenReported = false;\n    const { stop: stopInstrumentingOnReadyStateChange } = instrumentMethod(xhr, 'onreadystatechange', () => {\n        if (xhr.readyState === XMLHttpRequest.DONE) {\n            // Try to report the XHR as soon as possible, because the XHR may be mutated by the\n            // application during a future event. For example, Angular is calling .abort() on\n            // completed requests during an onreadystatechange event, so the status becomes '0'\n            // before the request is collected.\n            onEnd();\n        }\n    });\n    const onEnd = () => {\n        unsubscribeLoadEndListener();\n        stopInstrumentingOnReadyStateChange();\n        if (hasBeenReported) {\n            return;\n        }\n        hasBeenReported = true;\n        const completeContext = context;\n        completeContext.state = 'complete';\n        completeContext.duration = elapsed(startContext.startClocks.timeStamp, timeStampNow());\n        completeContext.status = xhr.status;\n        observable.notify(shallowClone(completeContext));\n    };\n    const { stop: unsubscribeLoadEndListener } = addEventListener(configuration, xhr, 'loadend', onEnd);\n    observable.notify(startContext);\n}\nfunction abortXhr({ target: xhr }) {\n    const context = xhrContexts.get(xhr);\n    if (context) {\n        context.isAborted = true;\n    }\n}\n//# sourceMappingURL=xhrObservable.js.map","import { addTelemetryDebug, elapsed, getPathName, isValidUrl, toServerDuration, isIntakeUrl, } from '@datadog/browser-core';\nexport const FAKE_INITIAL_DOCUMENT = 'initial_document';\nconst RESOURCE_TYPES = [\n    [\"document\" /* ResourceType.DOCUMENT */, (initiatorType) => FAKE_INITIAL_DOCUMENT === initiatorType],\n    [\"xhr\" /* ResourceType.XHR */, (initiatorType) => 'xmlhttprequest' === initiatorType],\n    [\"fetch\" /* ResourceType.FETCH */, (initiatorType) => 'fetch' === initiatorType],\n    [\"beacon\" /* ResourceType.BEACON */, (initiatorType) => 'beacon' === initiatorType],\n    [\"css\" /* ResourceType.CSS */, (_, path) => /\\.css$/i.test(path)],\n    [\"js\" /* ResourceType.JS */, (_, path) => /\\.js$/i.test(path)],\n    [\n        \"image\" /* ResourceType.IMAGE */,\n        (initiatorType, path) => ['image', 'img', 'icon'].includes(initiatorType) || /\\.(gif|jpg|jpeg|tiff|png|svg|ico)$/i.exec(path) !== null,\n    ],\n    [\"font\" /* ResourceType.FONT */, (_, path) => /\\.(woff|eot|woff2|ttf)$/i.exec(path) !== null],\n    [\n        \"media\" /* ResourceType.MEDIA */,\n        (initiatorType, path) => ['audio', 'video'].includes(initiatorType) || /\\.(mp3|mp4)$/i.exec(path) !== null,\n    ],\n];\nexport function computeResourceEntryType(entry) {\n    const url = entry.name;\n    if (!isValidUrl(url)) {\n        addTelemetryDebug(`Failed to construct URL for \"${entry.name}\"`);\n        return \"other\" /* ResourceType.OTHER */;\n    }\n    const path = getPathName(url);\n    for (const [type, isType] of RESOURCE_TYPES) {\n        if (isType(entry.initiatorType, path)) {\n            return type;\n        }\n    }\n    return \"other\" /* ResourceType.OTHER */;\n}\nfunction areInOrder(...numbers) {\n    for (let i = 1; i < numbers.length; i += 1) {\n        if (numbers[i - 1] > numbers[i]) {\n            return false;\n        }\n    }\n    return true;\n}\nexport function isResourceEntryRequestType(entry) {\n    return entry.initiatorType === 'xmlhttprequest' || entry.initiatorType === 'fetch';\n}\nexport function computeResourceEntryDuration(entry) {\n    const { duration, startTime, responseEnd } = entry;\n    // Safari duration is always 0 on timings blocked by cross origin policies.\n    if (duration === 0 && startTime < responseEnd) {\n        return elapsed(startTime, responseEnd);\n    }\n    return duration;\n}\nexport function computeResourceEntryDetails(entry) {\n    if (!hasValidResourceEntryTimings(entry)) {\n        return undefined;\n    }\n    const { startTime, fetchStart, workerStart, redirectStart, redirectEnd, domainLookupStart, domainLookupEnd, connectStart, secureConnectionStart, connectEnd, requestStart, responseStart, responseEnd, } = entry;\n    const details = {\n        download: formatTiming(startTime, responseStart, responseEnd),\n        first_byte: formatTiming(startTime, requestStart, responseStart),\n    };\n    // Make sure a worker processing time is recorded\n    if (0 < workerStart && workerStart < fetchStart) {\n        details.worker = formatTiming(startTime, workerStart, fetchStart);\n    }\n    // Make sure a connection occurred\n    if (fetchStart < connectEnd) {\n        details.connect = formatTiming(startTime, connectStart, connectEnd);\n        // Make sure a secure connection occurred\n        if (connectStart <= secureConnectionStart && secureConnectionStart <= connectEnd) {\n            details.ssl = formatTiming(startTime, secureConnectionStart, connectEnd);\n        }\n    }\n    // Make sure a domain lookup occurred\n    if (fetchStart < domainLookupEnd) {\n        details.dns = formatTiming(startTime, domainLookupStart, domainLookupEnd);\n    }\n    // Make sure a redirection occurred\n    if (startTime < redirectEnd) {\n        details.redirect = formatTiming(startTime, redirectStart, redirectEnd);\n    }\n    return details;\n}\n/**\n * Entries with negative duration are unexpected and should be dismissed. The intake will ignore RUM\n * Resource events with negative durations anyway.\n * Since Chromium 128, more entries have unexpected negative durations, see\n * https://issues.chromium.org/issues/363031537\n */\nexport function hasValidResourceEntryDuration(entry) {\n    return entry.duration >= 0;\n}\nexport function hasValidResourceEntryTimings(entry) {\n    // Ensure timings are in the right order. On top of filtering out potential invalid\n    // RumPerformanceResourceTiming, it will ignore entries from requests where timings cannot be\n    // collected, for example cross origin requests without a \"Timing-Allow-Origin\" header allowing\n    // it.\n    const areCommonTimingsInOrder = areInOrder(entry.startTime, entry.fetchStart, entry.domainLookupStart, entry.domainLookupEnd, entry.connectStart, entry.connectEnd, entry.requestStart, entry.responseStart, entry.responseEnd);\n    const areRedirectionTimingsInOrder = hasRedirection(entry)\n        ? areInOrder(entry.startTime, entry.redirectStart, entry.redirectEnd, entry.fetchStart)\n        : true;\n    return areCommonTimingsInOrder && areRedirectionTimingsInOrder;\n}\nfunction hasRedirection(entry) {\n    return entry.redirectEnd > entry.startTime;\n}\nfunction formatTiming(origin, start, end) {\n    if (origin <= start && start <= end) {\n        return {\n            duration: toServerDuration(elapsed(start, end)),\n            start: toServerDuration(elapsed(origin, start)),\n        };\n    }\n}\n/**\n * The 'nextHopProtocol' is an empty string for cross-origin resources without CORS headers,\n * meaning the protocol is unknown, and we shouldn't report it.\n * https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming/nextHopProtocol#cross-origin_resources\n */\nexport function computeResourceEntryProtocol(entry) {\n    return entry.nextHopProtocol === '' ? undefined : entry.nextHopProtocol;\n}\n/**\n * Handles the 'deliveryType' property to distinguish between supported values ('cache', 'navigational-prefetch'),\n * undefined (unsupported in some browsers), and other cases ('other' for unknown or unrecognized values).\n * see: https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming/deliveryType\n */\nexport function computeResourceEntryDeliveryType(entry) {\n    return entry.deliveryType === '' ? 'other' : entry.deliveryType;\n}\nexport function computeResourceEntrySize(entry) {\n    // Make sure a request actually occurred\n    if (entry.startTime < entry.responseStart) {\n        const { encodedBodySize, decodedBodySize, transferSize } = entry;\n        return {\n            size: decodedBodySize,\n            encoded_body_size: encodedBodySize,\n            decoded_body_size: decodedBodySize,\n            transfer_size: transferSize,\n        };\n    }\n    return {\n        size: undefined,\n        encoded_body_size: undefined,\n        decoded_body_size: undefined,\n        transfer_size: undefined,\n    };\n}\nexport function isAllowedRequestUrl(url) {\n    return url && !isIntakeUrl(url);\n}\nconst DATA_URL_REGEX = /data:(.+)?(;base64)?,/g;\nexport const MAX_ATTRIBUTE_VALUE_CHAR_LENGTH = 24000;\nexport function isLongDataUrl(url) {\n    if (url.length <= MAX_ATTRIBUTE_VALUE_CHAR_LENGTH) {\n        return false;\n    }\n    else if (url.substring(0, 5) === 'data:') {\n        // Avoid String.match RangeError: Maximum call stack size exceeded\n        url = url.substring(0, MAX_ATTRIBUTE_VALUE_CHAR_LENGTH);\n        return true;\n    }\n    return false;\n}\nexport function sanitizeDataUrl(url) {\n    return `${url.match(DATA_URL_REGEX)[0]}[...]`;\n}\n//# sourceMappingURL=resourceUtils.js.map","import { initFetchObservable, initXhrObservable, readBytesFromStream, elapsed, timeStampNow, tryToClone, } from '@datadog/browser-core';\nimport { isAllowedRequestUrl } from './resource/resourceUtils';\nimport { startTracer } from './tracing/tracer';\nlet nextRequestIndex = 1;\nexport function startRequestCollection(lifeCycle, configuration, sessionManager, userContext, accountContext) {\n    const tracer = startTracer(configuration, sessionManager, userContext, accountContext);\n    trackXhr(lifeCycle, configuration, tracer);\n    trackFetch(lifeCycle, tracer);\n}\nexport function trackXhr(lifeCycle, configuration, tracer) {\n    const subscription = initXhrObservable(configuration).subscribe((rawContext) => {\n        const context = rawContext;\n        if (!isAllowedRequestUrl(context.url)) {\n            return;\n        }\n        switch (context.state) {\n            case 'start':\n                tracer.traceXhr(context, context.xhr);\n                context.requestIndex = getNextRequestIndex();\n                lifeCycle.notify(7 /* LifeCycleEventType.REQUEST_STARTED */, {\n                    requestIndex: context.requestIndex,\n                    url: context.url,\n                });\n                break;\n            case 'complete':\n                tracer.clearTracingIfNeeded(context);\n                lifeCycle.notify(8 /* LifeCycleEventType.REQUEST_COMPLETED */, {\n                    duration: context.duration,\n                    method: context.method,\n                    requestIndex: context.requestIndex,\n                    spanId: context.spanId,\n                    startClocks: context.startClocks,\n                    status: context.status,\n                    traceId: context.traceId,\n                    traceSampled: context.traceSampled,\n                    type: \"xhr\" /* RequestType.XHR */,\n                    url: context.url,\n                    xhr: context.xhr,\n                    isAborted: context.isAborted,\n                    handlingStack: context.handlingStack,\n                });\n                break;\n        }\n    });\n    return { stop: () => subscription.unsubscribe() };\n}\nexport function trackFetch(lifeCycle, tracer) {\n    const subscription = initFetchObservable().subscribe((rawContext) => {\n        const context = rawContext;\n        if (!isAllowedRequestUrl(context.url)) {\n            return;\n        }\n        switch (context.state) {\n            case 'start':\n                tracer.traceFetch(context);\n                context.requestIndex = getNextRequestIndex();\n                lifeCycle.notify(7 /* LifeCycleEventType.REQUEST_STARTED */, {\n                    requestIndex: context.requestIndex,\n                    url: context.url,\n                });\n                break;\n            case 'resolve':\n                waitForResponseToComplete(context, (duration) => {\n                    tracer.clearTracingIfNeeded(context);\n                    lifeCycle.notify(8 /* LifeCycleEventType.REQUEST_COMPLETED */, {\n                        duration,\n                        method: context.method,\n                        requestIndex: context.requestIndex,\n                        responseType: context.responseType,\n                        spanId: context.spanId,\n                        startClocks: context.startClocks,\n                        status: context.status,\n                        traceId: context.traceId,\n                        traceSampled: context.traceSampled,\n                        type: \"fetch\" /* RequestType.FETCH */,\n                        url: context.url,\n                        response: context.response,\n                        init: context.init,\n                        input: context.input,\n                        isAborted: context.isAborted,\n                        handlingStack: context.handlingStack,\n                    });\n                });\n                break;\n        }\n    });\n    return { stop: () => subscription.unsubscribe() };\n}\nfunction getNextRequestIndex() {\n    const result = nextRequestIndex;\n    nextRequestIndex += 1;\n    return result;\n}\nfunction waitForResponseToComplete(context, callback) {\n    const clonedResponse = context.response && tryToClone(context.response);\n    if (!clonedResponse || !clonedResponse.body) {\n        // do not try to wait for the response if the clone failed, fetch error or null body\n        callback(elapsed(context.startClocks.timeStamp, timeStampNow()));\n    }\n    else {\n        readBytesFromStream(clonedResponse.body, () => {\n            callback(elapsed(context.startClocks.timeStamp, timeStampNow()));\n        }, {\n            bytesLimit: Number.POSITIVE_INFINITY,\n            collectStreamBody: false,\n        });\n    }\n}\n//# sourceMappingURL=requestCollection.js.map","import { monitor } from './monitor';\nimport { noop } from './utils/functionUtils';\n/**\n * Read bytes from a ReadableStream until at least `limit` bytes have been read (or until the end of\n * the stream). The callback is invoked with the at most `limit` bytes, and indicates that the limit\n * has been exceeded if more bytes were available.\n */\nexport function readBytesFromStream(stream, callback, options) {\n    const reader = stream.getReader();\n    const chunks = [];\n    let readBytesCount = 0;\n    readMore();\n    function readMore() {\n        reader.read().then(monitor((result) => {\n            if (result.done) {\n                onDone();\n                return;\n            }\n            if (options.collectStreamBody) {\n                chunks.push(result.value);\n            }\n            readBytesCount += result.value.length;\n            if (readBytesCount > options.bytesLimit) {\n                onDone();\n            }\n            else {\n                readMore();\n            }\n        }), monitor((error) => callback(error)));\n    }\n    function onDone() {\n        reader.cancel().catch(\n        // we don't care if cancel fails, but we still need to catch the error to avoid reporting it\n        // as an unhandled rejection\n        noop);\n        let bytes;\n        let limitExceeded;\n        if (options.collectStreamBody) {\n            let completeBuffer;\n            if (chunks.length === 1) {\n                // optimization: if the response is small enough to fit in a single buffer (provided by the browser), just\n                // use it directly.\n                completeBuffer = chunks[0];\n            }\n            else {\n                // else, we need to copy buffers into a larger buffer to concatenate them.\n                completeBuffer = new Uint8Array(readBytesCount);\n                let offset = 0;\n                chunks.forEach((chunk) => {\n                    completeBuffer.set(chunk, offset);\n                    offset += chunk.length;\n                });\n            }\n            bytes = completeBuffer.slice(0, options.bytesLimit);\n            limitExceeded = completeBuffer.length > options.bytesLimit;\n        }\n        callback(undefined, bytes, limitExceeded);\n    }\n}\n//# sourceMappingURL=readBytesFromStream.js.map","import { isNumber } from '@datadog/browser-core';\nexport function discardNegativeDuration(duration) {\n    return isNumber(duration) && duration < 0 ? undefined : duration;\n}\n//# sourceMappingURL=discardNegativeDuration.js.map","import { noop } from '@datadog/browser-core';\nexport function trackEventCounts({ lifeCycle, isChildEvent, onChange: callback = noop, }) {\n    const eventCounts = {\n        errorCount: 0,\n        longTaskCount: 0,\n        resourceCount: 0,\n        actionCount: 0,\n        frustrationCount: 0,\n    };\n    const subscription = lifeCycle.subscribe(13 /* LifeCycleEventType.RUM_EVENT_COLLECTED */, (event) => {\n        var _a;\n        if (event.type === 'view' || event.type === 'vital' || !isChildEvent(event)) {\n            return;\n        }\n        switch (event.type) {\n            case \"error\" /* RumEventType.ERROR */:\n                eventCounts.errorCount += 1;\n                callback();\n                break;\n            case \"action\" /* RumEventType.ACTION */:\n                eventCounts.actionCount += 1;\n                if (event.action.frustration) {\n                    eventCounts.frustrationCount += event.action.frustration.type.length;\n                }\n                callback();\n                break;\n            case \"long_task\" /* RumEventType.LONG_TASK */:\n                eventCounts.longTaskCount += 1;\n                callback();\n                break;\n            case \"resource\" /* RumEventType.RESOURCE */:\n                if (!((_a = event._dd) === null || _a === void 0 ? void 0 : _a.discarded)) {\n                    eventCounts.resourceCount += 1;\n                    callback();\n                }\n                break;\n        }\n    });\n    return {\n        stop: () => {\n            subscription.unsubscribe();\n        },\n        eventCounts,\n    };\n}\n//# sourceMappingURL=trackEventCounts.js.map","import { addEventListener, Observable, setTimeout, clearTimeout, monitor } from '@datadog/browser-core';\nimport { hasValidResourceEntryDuration, isAllowedRequestUrl } from '../domain/resource/resourceUtils';\nimport { retrieveFirstInputTiming } from './firstInputPolyfill';\n// We want to use a real enum (i.e. not a const enum) here, to be able to check whether an arbitrary\n// string is an expected performance entry\n// eslint-disable-next-line no-restricted-syntax\nexport var RumPerformanceEntryType;\n(function (RumPerformanceEntryType) {\n    RumPerformanceEntryType[\"EVENT\"] = \"event\";\n    RumPerformanceEntryType[\"FIRST_INPUT\"] = \"first-input\";\n    RumPerformanceEntryType[\"LARGEST_CONTENTFUL_PAINT\"] = \"largest-contentful-paint\";\n    RumPerformanceEntryType[\"LAYOUT_SHIFT\"] = \"layout-shift\";\n    RumPerformanceEntryType[\"LONG_TASK\"] = \"longtask\";\n    RumPerformanceEntryType[\"LONG_ANIMATION_FRAME\"] = \"long-animation-frame\";\n    RumPerformanceEntryType[\"NAVIGATION\"] = \"navigation\";\n    RumPerformanceEntryType[\"PAINT\"] = \"paint\";\n    RumPerformanceEntryType[\"RESOURCE\"] = \"resource\";\n    RumPerformanceEntryType[\"VISIBILITY_STATE\"] = \"visibility-state\";\n})(RumPerformanceEntryType || (RumPerformanceEntryType = {}));\nexport function createPerformanceObservable(configuration, options) {\n    return new Observable((observable) => {\n        if (!window.PerformanceObserver) {\n            return;\n        }\n        const handlePerformanceEntries = (entries) => {\n            const rumPerformanceEntries = filterRumPerformanceEntries(entries);\n            if (rumPerformanceEntries.length > 0) {\n                observable.notify(rumPerformanceEntries);\n            }\n        };\n        let timeoutId;\n        let isObserverInitializing = true;\n        const observer = new PerformanceObserver(monitor((entries) => {\n            // In Safari the performance observer callback is synchronous.\n            // Because the buffered performance entry list can be quite large we delay the computation to prevent the SDK from blocking the main thread on init\n            if (isObserverInitializing) {\n                timeoutId = setTimeout(() => handlePerformanceEntries(entries.getEntries()));\n            }\n            else {\n                handlePerformanceEntries(entries.getEntries());\n            }\n        }));\n        try {\n            observer.observe(options);\n        }\n        catch (_a) {\n            // Some old browser versions (<= chrome 74 ) don't support the PerformanceObserver type and buffered options\n            // In these cases, fallback to getEntriesByType and PerformanceObserver with entryTypes\n            // TODO: remove this fallback in the next major version\n            const fallbackSupportedEntryTypes = [\n                RumPerformanceEntryType.RESOURCE,\n                RumPerformanceEntryType.NAVIGATION,\n                RumPerformanceEntryType.LONG_TASK,\n                RumPerformanceEntryType.PAINT,\n            ];\n            if (fallbackSupportedEntryTypes.includes(options.type)) {\n                if (options.buffered) {\n                    timeoutId = setTimeout(() => handlePerformanceEntries(performance.getEntriesByType(options.type)));\n                }\n                try {\n                    observer.observe({ entryTypes: [options.type] });\n                }\n                catch (_b) {\n                    // Old versions of Safari are throwing \"entryTypes contained only unsupported types\"\n                    // errors when observing only unsupported entry types.\n                    //\n                    // We could use `supportPerformanceTimingEvent` to make sure we don't invoke\n                    // `observer.observe` with an unsupported entry type, but Safari 11 and 12 don't support\n                    // `Performance.supportedEntryTypes`, so doing so would lose support for these versions\n                    // even if they do support the entry type.\n                    return;\n                }\n            }\n        }\n        isObserverInitializing = false;\n        manageResourceTimingBufferFull(configuration);\n        let stopFirstInputTiming;\n        if (!supportPerformanceTimingEvent(RumPerformanceEntryType.FIRST_INPUT) &&\n            options.type === RumPerformanceEntryType.FIRST_INPUT) {\n            ;\n            ({ stop: stopFirstInputTiming } = retrieveFirstInputTiming(configuration, (timing) => {\n                handlePerformanceEntries([timing]);\n            }));\n        }\n        return () => {\n            observer.disconnect();\n            if (stopFirstInputTiming) {\n                stopFirstInputTiming();\n            }\n            clearTimeout(timeoutId);\n        };\n    });\n}\nlet resourceTimingBufferFullListener;\nfunction manageResourceTimingBufferFull(configuration) {\n    if (!resourceTimingBufferFullListener && supportPerformanceObject() && 'addEventListener' in performance) {\n        // https://bugzilla.mozilla.org/show_bug.cgi?id=1559377\n        resourceTimingBufferFullListener = addEventListener(configuration, performance, 'resourcetimingbufferfull', () => {\n            performance.clearResourceTimings();\n        });\n    }\n    return () => {\n        resourceTimingBufferFullListener === null || resourceTimingBufferFullListener === void 0 ? void 0 : resourceTimingBufferFullListener.stop();\n    };\n}\nfunction supportPerformanceObject() {\n    return window.performance !== undefined && 'getEntries' in performance;\n}\nexport function supportPerformanceTimingEvent(entryType) {\n    return (window.PerformanceObserver &&\n        PerformanceObserver.supportedEntryTypes !== undefined &&\n        PerformanceObserver.supportedEntryTypes.includes(entryType));\n}\nfunction filterRumPerformanceEntries(entries) {\n    return entries.filter((entry) => !isForbiddenResource(entry));\n}\nfunction isForbiddenResource(entry) {\n    return (entry.entryType === RumPerformanceEntryType.RESOURCE &&\n        (!isAllowedRequestUrl(entry.name) || !hasValidResourceEntryDuration(entry)));\n}\n//# sourceMappingURL=performanceObservable.js.map","import { addEventListeners, dateNow, relativeNow } from '@datadog/browser-core';\n/**\n * first-input timing entry polyfill based on\n * https://github.com/GoogleChrome/web-vitals/blob/master/src/lib/polyfills/firstInputPolyfill.ts\n */\nexport function retrieveFirstInputTiming(configuration, callback) {\n    const startTimeStamp = dateNow();\n    let timingSent = false;\n    const { stop: removeEventListeners } = addEventListeners(configuration, window, [\"click\" /* DOM_EVENT.CLICK */, \"mousedown\" /* DOM_EVENT.MOUSE_DOWN */, \"keydown\" /* DOM_EVENT.KEY_DOWN */, \"touchstart\" /* DOM_EVENT.TOUCH_START */, \"pointerdown\" /* DOM_EVENT.POINTER_DOWN */], (evt) => {\n        // Only count cancelable events, which should trigger behavior important to the user.\n        if (!evt.cancelable) {\n            return;\n        }\n        // This timing will be used to compute the \"first Input delay\", which is the delta between\n        // when the system received the event (e.g. evt.timeStamp) and when it could run the callback\n        // (e.g. performance.now()).\n        const timing = {\n            entryType: 'first-input',\n            processingStart: relativeNow(),\n            processingEnd: relativeNow(),\n            startTime: evt.timeStamp,\n            duration: 0, // arbitrary value to avoid nullable duration and simplify INP logic\n            name: '',\n            cancelable: false,\n            target: null,\n            toJSON: () => ({}),\n        };\n        if (evt.type === \"pointerdown\" /* DOM_EVENT.POINTER_DOWN */) {\n            sendTimingIfPointerIsNotCancelled(configuration, timing);\n        }\n        else {\n            sendTiming(timing);\n        }\n    }, { passive: true, capture: true });\n    return { stop: removeEventListeners };\n    /**\n     * Pointer events are a special case, because they can trigger main or compositor thread behavior.\n     * We differentiate these cases based on whether or not we see a pointercancel event, which are\n     * fired when we scroll. If we're scrolling we don't need to report input delay since FID excludes\n     * scrolling and pinch/zooming.\n     */\n    function sendTimingIfPointerIsNotCancelled(configuration, timing) {\n        addEventListeners(configuration, window, [\"pointerup\" /* DOM_EVENT.POINTER_UP */, \"pointercancel\" /* DOM_EVENT.POINTER_CANCEL */], (event) => {\n            if (event.type === \"pointerup\" /* DOM_EVENT.POINTER_UP */) {\n                sendTiming(timing);\n            }\n        }, { once: true });\n    }\n    function sendTiming(timing) {\n        if (!timingSent) {\n            timingSent = true;\n            removeEventListeners();\n            // In some cases the recorded delay is clearly wrong, e.g. it's negative or it's larger than\n            // the time between now and when the page was loaded.\n            // - https://github.com/GoogleChromeLabs/first-input-delay/issues/4\n            // - https://github.com/GoogleChromeLabs/first-input-delay/issues/6\n            // - https://github.com/GoogleChromeLabs/first-input-delay/issues/7\n            const delay = timing.processingStart - timing.startTime;\n            if (delay >= 0 && delay < dateNow() - startTimeStamp) {\n                callback(timing);\n            }\n        }\n    }\n}\n//# sourceMappingURL=firstInputPolyfill.js.map","import { matchList, monitor, Observable, timeStampNow, setTimeout, clearTimeout } from '@datadog/browser-core';\nimport { createPerformanceObservable, RumPerformanceEntryType } from '../browser/performanceObservable';\n// Delay to wait for a page activity to validate the tracking process\nexport const PAGE_ACTIVITY_VALIDATION_DELAY = 100;\n// Delay to wait after a page activity to end the tracking process\nexport const PAGE_ACTIVITY_END_DELAY = 100;\n/**\n * Wait for the page activity end\n *\n * Detection lifecycle:\n * ```\n *                        Wait page activity end\n *              .-------------------'--------------------.\n *              v                                        v\n *     [Wait for a page activity ]          [Wait for a maximum duration]\n *     [timeout: VALIDATION_DELAY]          [  timeout: maxDuration     ]\n *          /                  \\                           |\n *         v                    v                          |\n *  [No page activity]   [Page activity]                   |\n *         |                   |,----------------------.   |\n *         v                   v                       |   |\n *     (Discard)     [Wait for a page activity]        |   |\n *                   [   timeout: END_DELAY   ]        |   |\n *                       /                \\            |   |\n *                      v                  v           |   |\n *             [No page activity]    [Page activity]   |   |\n *                      |                 |            |   |\n *                      |                 '------------'   |\n *                      '-----------. ,--------------------'\n *                                   v\n *                                 (End)\n * ```\n *\n * Note: by assuming that maxDuration is greater than VALIDATION_DELAY, we are sure that if the\n * process is still alive after maxDuration, it has been validated.\n */\nexport function waitPageActivityEnd(lifeCycle, domMutationObservable, windowOpenObservable, configuration, pageActivityEndCallback, maxDuration) {\n    const pageActivityObservable = createPageActivityObservable(lifeCycle, domMutationObservable, windowOpenObservable, configuration);\n    return doWaitPageActivityEnd(pageActivityObservable, pageActivityEndCallback, maxDuration);\n}\nexport function doWaitPageActivityEnd(pageActivityObservable, pageActivityEndCallback, maxDuration) {\n    let pageActivityEndTimeoutId;\n    let hasCompleted = false;\n    const validationTimeoutId = setTimeout(monitor(() => complete({ hadActivity: false })), PAGE_ACTIVITY_VALIDATION_DELAY);\n    const maxDurationTimeoutId = maxDuration !== undefined\n        ? setTimeout(monitor(() => complete({ hadActivity: true, end: timeStampNow() })), maxDuration)\n        : undefined;\n    const pageActivitySubscription = pageActivityObservable.subscribe(({ isBusy }) => {\n        clearTimeout(validationTimeoutId);\n        clearTimeout(pageActivityEndTimeoutId);\n        const lastChangeTime = timeStampNow();\n        if (!isBusy) {\n            pageActivityEndTimeoutId = setTimeout(monitor(() => complete({ hadActivity: true, end: lastChangeTime })), PAGE_ACTIVITY_END_DELAY);\n        }\n    });\n    const stop = () => {\n        hasCompleted = true;\n        clearTimeout(validationTimeoutId);\n        clearTimeout(pageActivityEndTimeoutId);\n        clearTimeout(maxDurationTimeoutId);\n        pageActivitySubscription.unsubscribe();\n    };\n    function complete(event) {\n        if (hasCompleted) {\n            return;\n        }\n        stop();\n        pageActivityEndCallback(event);\n    }\n    return { stop };\n}\nexport function createPageActivityObservable(lifeCycle, domMutationObservable, windowOpenObservable, configuration) {\n    return new Observable((observable) => {\n        const subscriptions = [];\n        let firstRequestIndex;\n        let pendingRequestsCount = 0;\n        subscriptions.push(domMutationObservable.subscribe(notifyPageActivity), windowOpenObservable.subscribe(notifyPageActivity), createPerformanceObservable(configuration, { type: RumPerformanceEntryType.RESOURCE }).subscribe((entries) => {\n            if (entries.some((entry) => !isExcludedUrl(configuration, entry.name))) {\n                notifyPageActivity();\n            }\n        }), lifeCycle.subscribe(7 /* LifeCycleEventType.REQUEST_STARTED */, (startEvent) => {\n            if (isExcludedUrl(configuration, startEvent.url)) {\n                return;\n            }\n            if (firstRequestIndex === undefined) {\n                firstRequestIndex = startEvent.requestIndex;\n            }\n            pendingRequestsCount += 1;\n            notifyPageActivity();\n        }), lifeCycle.subscribe(8 /* LifeCycleEventType.REQUEST_COMPLETED */, (request) => {\n            if (isExcludedUrl(configuration, request.url) ||\n                firstRequestIndex === undefined ||\n                // If the request started before the tracking start, ignore it\n                request.requestIndex < firstRequestIndex) {\n                return;\n            }\n            pendingRequestsCount -= 1;\n            notifyPageActivity();\n        }));\n        return () => {\n            subscriptions.forEach((s) => s.unsubscribe());\n        };\n        function notifyPageActivity() {\n            observable.notify({ isBusy: pendingRequestsCount > 0 });\n        }\n    });\n}\nfunction isExcludedUrl(configuration, requestUrl) {\n    return matchList(configuration.excludedActivityUrls, requestUrl);\n}\n//# sourceMappingURL=waitPageActivityEnd.js.map","export function isTextNode(node) {\n    return node.nodeType === Node.TEXT_NODE;\n}\nexport function isCommentNode(node) {\n    return node.nodeType === Node.COMMENT_NODE;\n}\nexport function isElementNode(node) {\n    return node.nodeType === Node.ELEMENT_NODE;\n}\nexport function isNodeShadowHost(node) {\n    return isElementNode(node) && Boolean(node.shadowRoot);\n}\nexport function isNodeShadowRoot(node) {\n    const shadowRoot = node;\n    return !!shadowRoot.host && shadowRoot.nodeType === Node.DOCUMENT_FRAGMENT_NODE && isElementNode(shadowRoot.host);\n}\nexport function hasChildNodes(node) {\n    return node.childNodes.length > 0 || isNodeShadowHost(node);\n}\nexport function forEachChildNodes(node, callback) {\n    let child = node.firstChild;\n    while (child) {\n        callback(child);\n        child = child.nextSibling;\n    }\n    if (isNodeShadowHost(node)) {\n        callback(node.shadowRoot);\n    }\n}\n/**\n * Return `host` in case if the current node is a shadow root otherwise will return the `parentNode`\n */\nexport function getParentNode(node) {\n    return isNodeShadowRoot(node) ? node.host : node.parentNode;\n}\n//# sourceMappingURL=htmlDomUtils.js.map","import { DefaultPrivacyLevel } from '@datadog/browser-core';\nimport { isElementNode, getParentNode, isTextNode } from '../browser/htmlDomUtils';\nexport const NodePrivacyLevel = {\n    IGNORE: 'ignore',\n    HIDDEN: 'hidden',\n    ALLOW: DefaultPrivacyLevel.ALLOW,\n    MASK: DefaultPrivacyLevel.MASK,\n    MASK_USER_INPUT: DefaultPrivacyLevel.MASK_USER_INPUT,\n};\nexport const PRIVACY_ATTR_NAME = 'data-dd-privacy';\n// Privacy Attrs\nexport const PRIVACY_ATTR_VALUE_ALLOW = 'allow';\nexport const PRIVACY_ATTR_VALUE_MASK = 'mask';\nexport const PRIVACY_ATTR_VALUE_MASK_USER_INPUT = 'mask-user-input';\nexport const PRIVACY_ATTR_VALUE_HIDDEN = 'hidden';\n// Privacy Classes - not all customers can set plain HTML attributes, so support classes too\nexport const PRIVACY_CLASS_PREFIX = 'dd-privacy-';\n// Private Replacement Templates\nexport const CENSORED_STRING_MARK = '***';\nexport const CENSORED_IMG_MARK = 'data:image/gif;base64,R0lGODlhAQABAIAAAMLCwgAAACH5BAAAAAAALAAAAAABAAEAAAICRAEAOw==';\nexport const FORM_PRIVATE_TAG_NAMES = {\n    INPUT: true,\n    OUTPUT: true,\n    TEXTAREA: true,\n    SELECT: true,\n    OPTION: true,\n    DATALIST: true,\n    OPTGROUP: true,\n};\nconst TEXT_MASKING_CHAR = 'x';\n/**\n * Get node privacy level by iterating over its ancestors. When the direct parent privacy level is\n * know, it is best to use something like:\n *\n * derivePrivacyLevelGivenParent(getNodeSelfPrivacyLevel(node), parentNodePrivacyLevel)\n */\nexport function getNodePrivacyLevel(node, defaultPrivacyLevel, cache) {\n    if (cache && cache.has(node)) {\n        return cache.get(node);\n    }\n    const parentNode = getParentNode(node);\n    const parentNodePrivacyLevel = parentNode\n        ? getNodePrivacyLevel(parentNode, defaultPrivacyLevel, cache)\n        : defaultPrivacyLevel;\n    const selfNodePrivacyLevel = getNodeSelfPrivacyLevel(node);\n    const nodePrivacyLevel = reducePrivacyLevel(selfNodePrivacyLevel, parentNodePrivacyLevel);\n    if (cache) {\n        cache.set(node, nodePrivacyLevel);\n    }\n    return nodePrivacyLevel;\n}\n/**\n * Reduces the next privacy level based on self + parent privacy levels\n */\nexport function reducePrivacyLevel(childPrivacyLevel, parentNodePrivacyLevel) {\n    switch (parentNodePrivacyLevel) {\n        // These values cannot be overridden\n        case NodePrivacyLevel.HIDDEN:\n        case NodePrivacyLevel.IGNORE:\n            return parentNodePrivacyLevel;\n    }\n    switch (childPrivacyLevel) {\n        case NodePrivacyLevel.ALLOW:\n        case NodePrivacyLevel.MASK:\n        case NodePrivacyLevel.MASK_USER_INPUT:\n        case NodePrivacyLevel.HIDDEN:\n        case NodePrivacyLevel.IGNORE:\n            return childPrivacyLevel;\n        default:\n            return parentNodePrivacyLevel;\n    }\n}\n/**\n * Determines the node's own privacy level without checking for ancestors.\n */\nexport function getNodeSelfPrivacyLevel(node) {\n    // Only Element types can have a privacy level set\n    if (!isElementNode(node)) {\n        return;\n    }\n    // Overrules for replay purpose\n    if (node.tagName === 'BASE') {\n        return NodePrivacyLevel.ALLOW;\n    }\n    // Overrules to enforce end-user protection\n    if (node.tagName === 'INPUT') {\n        const inputElement = node;\n        if (inputElement.type === 'password' || inputElement.type === 'email' || inputElement.type === 'tel') {\n            return NodePrivacyLevel.MASK;\n        }\n        if (inputElement.type === 'hidden') {\n            return NodePrivacyLevel.MASK;\n        }\n        const autocomplete = inputElement.getAttribute('autocomplete');\n        // Handle input[autocomplete=cc-number/cc-csc/cc-exp/cc-exp-month/cc-exp-year/new-password/current-password]\n        if (autocomplete && (autocomplete.startsWith('cc-') || autocomplete.endsWith('-password'))) {\n            return NodePrivacyLevel.MASK;\n        }\n    }\n    // Check HTML privacy attributes and classes\n    if (node.matches(getPrivacySelector(NodePrivacyLevel.HIDDEN))) {\n        return NodePrivacyLevel.HIDDEN;\n    }\n    if (node.matches(getPrivacySelector(NodePrivacyLevel.MASK))) {\n        return NodePrivacyLevel.MASK;\n    }\n    if (node.matches(getPrivacySelector(NodePrivacyLevel.MASK_USER_INPUT))) {\n        return NodePrivacyLevel.MASK_USER_INPUT;\n    }\n    if (node.matches(getPrivacySelector(NodePrivacyLevel.ALLOW))) {\n        return NodePrivacyLevel.ALLOW;\n    }\n    if (shouldIgnoreElement(node)) {\n        return NodePrivacyLevel.IGNORE;\n    }\n}\n/**\n * Helper aiming to unify `mask` and `mask-user-input` privacy levels:\n *\n * In the `mask` case, it is trivial: we should mask the element.\n *\n * In the `mask-user-input` case, we should mask the element only if it is a \"form\" element or the\n * direct parent is a form element for text nodes).\n *\n * Other `shouldMaskNode` cases are edge cases that should not matter too much (ex: should we mask a\n * node if it is ignored or hidden? it doesn't matter since it won't be serialized).\n */\nexport function shouldMaskNode(node, privacyLevel) {\n    switch (privacyLevel) {\n        case NodePrivacyLevel.MASK:\n        case NodePrivacyLevel.HIDDEN:\n        case NodePrivacyLevel.IGNORE:\n            return true;\n        case NodePrivacyLevel.MASK_USER_INPUT:\n            return isTextNode(node) ? isFormElement(node.parentNode) : isFormElement(node);\n        default:\n            return false;\n    }\n}\nfunction isFormElement(node) {\n    if (!node || node.nodeType !== node.ELEMENT_NODE) {\n        return false;\n    }\n    const element = node;\n    if (element.tagName === 'INPUT') {\n        switch (element.type) {\n            case 'button':\n            case 'color':\n            case 'reset':\n            case 'submit':\n                return false;\n        }\n    }\n    return !!FORM_PRIVATE_TAG_NAMES[element.tagName];\n}\n/**\n * Text censoring non-destructively maintains whitespace characters in order to preserve text shape\n * during replay.\n */\nexport const censorText = (text) => text.replace(/\\S/g, TEXT_MASKING_CHAR);\nexport function getTextContent(textNode, ignoreWhiteSpace, parentNodePrivacyLevel) {\n    var _a;\n    // The parent node may not be a html element which has a tagName attribute.\n    // So just let it be undefined which is ok in this use case.\n    const parentTagName = (_a = textNode.parentElement) === null || _a === void 0 ? void 0 : _a.tagName;\n    let textContent = textNode.textContent || '';\n    if (ignoreWhiteSpace && !textContent.trim()) {\n        return;\n    }\n    const nodePrivacyLevel = parentNodePrivacyLevel;\n    const isScript = parentTagName === 'SCRIPT';\n    if (isScript) {\n        // For perf reasons, we don't record script (heuristic)\n        textContent = CENSORED_STRING_MARK;\n    }\n    else if (nodePrivacyLevel === NodePrivacyLevel.HIDDEN) {\n        // Should never occur, but just in case, we set to CENSORED_MARK.\n        textContent = CENSORED_STRING_MARK;\n    }\n    else if (shouldMaskNode(textNode, nodePrivacyLevel)) {\n        if (\n        // Scrambling the child list breaks text nodes for DATALIST/SELECT/OPTGROUP\n        parentTagName === 'DATALIST' ||\n            parentTagName === 'SELECT' ||\n            parentTagName === 'OPTGROUP') {\n            if (!textContent.trim()) {\n                return;\n            }\n        }\n        else if (parentTagName === 'OPTION') {\n            // <Option> has low entropy in charset + text length, so use `CENSORED_STRING_MARK` when masked\n            textContent = CENSORED_STRING_MARK;\n        }\n        else {\n            textContent = censorText(textContent);\n        }\n    }\n    return textContent;\n}\n/**\n * TODO: Preserve CSS element order, and record the presence of the tag, just don't render\n * We don't need this logic on the recorder side.\n * For security related meta's, customer can mask themmanually given they\n * are easy to identify in the HEAD tag.\n */\nexport function shouldIgnoreElement(element) {\n    if (element.nodeName === 'SCRIPT') {\n        return true;\n    }\n    if (element.nodeName === 'LINK') {\n        const relAttribute = getLowerCaseAttribute('rel');\n        return (\n        // Link as script - Ignore only when rel=preload, modulepreload or prefetch\n        (/preload|prefetch/i.test(relAttribute) && getLowerCaseAttribute('as') === 'script') ||\n            // Favicons\n            relAttribute === 'shortcut icon' ||\n            relAttribute === 'icon');\n    }\n    if (element.nodeName === 'META') {\n        const nameAttribute = getLowerCaseAttribute('name');\n        const relAttribute = getLowerCaseAttribute('rel');\n        const propertyAttribute = getLowerCaseAttribute('property');\n        return (\n        // Favicons\n        /^msapplication-tile(image|color)$/.test(nameAttribute) ||\n            nameAttribute === 'application-name' ||\n            relAttribute === 'icon' ||\n            relAttribute === 'apple-touch-icon' ||\n            relAttribute === 'shortcut icon' ||\n            // Description\n            nameAttribute === 'keywords' ||\n            nameAttribute === 'description' ||\n            // Social\n            /^(og|twitter|fb):/.test(propertyAttribute) ||\n            /^(og|twitter):/.test(nameAttribute) ||\n            nameAttribute === 'pinterest' ||\n            // Robots\n            nameAttribute === 'robots' ||\n            nameAttribute === 'googlebot' ||\n            nameAttribute === 'bingbot' ||\n            // Http headers. Ex: X-UA-Compatible, Content-Type, Content-Language, cache-control,\n            // X-Translated-By\n            element.hasAttribute('http-equiv') ||\n            // Authorship\n            nameAttribute === 'author' ||\n            nameAttribute === 'generator' ||\n            nameAttribute === 'framework' ||\n            nameAttribute === 'publisher' ||\n            nameAttribute === 'progid' ||\n            /^article:/.test(propertyAttribute) ||\n            /^product:/.test(propertyAttribute) ||\n            // Verification\n            nameAttribute === 'google-site-verification' ||\n            nameAttribute === 'yandex-verification' ||\n            nameAttribute === 'csrf-token' ||\n            nameAttribute === 'p:domain_verify' ||\n            nameAttribute === 'verify-v1' ||\n            nameAttribute === 'verification' ||\n            nameAttribute === 'shopify-checkout-api-token');\n    }\n    function getLowerCaseAttribute(name) {\n        return (element.getAttribute(name) || '').toLowerCase();\n    }\n    return false;\n}\nexport function getPrivacySelector(privacyLevel) {\n    return `[${PRIVACY_ATTR_NAME}=\"${privacyLevel}\"], .${PRIVACY_CLASS_PREFIX}${privacyLevel}`;\n}\n//# sourceMappingURL=privacy.js.map","import { safeTruncate } from '@datadog/browser-core';\nimport { NodePrivacyLevel, getPrivacySelector } from '../privacy';\n/**\n * Get the action name from the attribute 'data-dd-action-name' on the element or any of its parent.\n * It can also be retrieved from a user defined attribute.\n */\nexport const DEFAULT_PROGRAMMATIC_ACTION_NAME_ATTRIBUTE = 'data-dd-action-name';\nexport const ACTION_NAME_PLACEHOLDER = 'Masked Element';\nexport function getActionNameFromElement(element, { enablePrivacyForActionName, actionNameAttribute: userProgrammaticAttribute }, nodePrivacyLevel) {\n    // Proceed to get the action name in two steps:\n    // * first, get the name programmatically, explicitly defined by the user.\n    // * then, if privacy is set to mask, return a placeholder for the undefined.\n    // * if privacy is not set to mask, use strategies that are known to return good results.\n    //   Those strategies will be used on the element and a few parents, but it's likely that they won't succeed at all.\n    // * if no name is found this way, use strategies returning less accurate names as a fallback.\n    //   Those are much likely to succeed.\n    const defaultActionName = getActionNameFromElementProgrammatically(element, DEFAULT_PROGRAMMATIC_ACTION_NAME_ATTRIBUTE) ||\n        (userProgrammaticAttribute && getActionNameFromElementProgrammatically(element, userProgrammaticAttribute));\n    if (defaultActionName) {\n        return { name: defaultActionName, nameSource: \"custom_attribute\" /* ActionNameSource.CUSTOM_ATTRIBUTE */ };\n    }\n    else if (nodePrivacyLevel === NodePrivacyLevel.MASK) {\n        return { name: ACTION_NAME_PLACEHOLDER, nameSource: \"mask_placeholder\" /* ActionNameSource.MASK_PLACEHOLDER */ };\n    }\n    return (getActionNameFromElementForStrategies(element, userProgrammaticAttribute, priorityStrategies, enablePrivacyForActionName) ||\n        getActionNameFromElementForStrategies(element, userProgrammaticAttribute, fallbackStrategies, enablePrivacyForActionName) || { name: '', nameSource: \"blank\" /* ActionNameSource.BLANK */ });\n}\nfunction getActionNameFromElementProgrammatically(targetElement, programmaticAttribute) {\n    // We don't use getActionNameFromElementForStrategies here, because we want to consider all parents,\n    // without limit. It is up to the user to declare a relevant naming strategy.\n    const elementWithAttribute = targetElement.closest(`[${programmaticAttribute}]`);\n    if (!elementWithAttribute) {\n        return;\n    }\n    const name = elementWithAttribute.getAttribute(programmaticAttribute);\n    return truncate(normalizeWhitespace(name.trim()));\n}\nconst priorityStrategies = [\n    // associated LABEL text\n    (element, userProgrammaticAttribute) => {\n        if ('labels' in element && element.labels && element.labels.length > 0) {\n            return getActionNameFromTextualContent(element.labels[0], userProgrammaticAttribute);\n        }\n    },\n    // INPUT button (and associated) value\n    (element) => {\n        if (element.nodeName === 'INPUT') {\n            const input = element;\n            const type = input.getAttribute('type');\n            if (type === 'button' || type === 'submit' || type === 'reset') {\n                return { name: input.value, nameSource: \"text_content\" /* ActionNameSource.TEXT_CONTENT */ };\n            }\n        }\n    },\n    // BUTTON, LABEL or button-like element text\n    (element, userProgrammaticAttribute, privacyEnabledActionName) => {\n        if (element.nodeName === 'BUTTON' || element.nodeName === 'LABEL' || element.getAttribute('role') === 'button') {\n            return getActionNameFromTextualContent(element, userProgrammaticAttribute, privacyEnabledActionName);\n        }\n    },\n    (element) => getActionNameFromStandardAttribute(element, 'aria-label'),\n    // associated element text designated by the aria-labelledby attribute\n    (element, userProgrammaticAttribute, privacyEnabledActionName) => {\n        const labelledByAttribute = element.getAttribute('aria-labelledby');\n        if (labelledByAttribute) {\n            return {\n                name: labelledByAttribute\n                    .split(/\\s+/)\n                    .map((id) => getElementById(element, id))\n                    .filter((label) => Boolean(label))\n                    .map((element) => getTextualContent(element, userProgrammaticAttribute, privacyEnabledActionName))\n                    .join(' '),\n                nameSource: \"text_content\" /* ActionNameSource.TEXT_CONTENT */,\n            };\n        }\n    },\n    (element) => getActionNameFromStandardAttribute(element, 'alt'),\n    (element) => getActionNameFromStandardAttribute(element, 'name'),\n    (element) => getActionNameFromStandardAttribute(element, 'title'),\n    (element) => getActionNameFromStandardAttribute(element, 'placeholder'),\n    // SELECT first OPTION text\n    (element, userProgrammaticAttribute) => {\n        if ('options' in element && element.options.length > 0) {\n            return getActionNameFromTextualContent(element.options[0], userProgrammaticAttribute);\n        }\n    },\n];\nconst fallbackStrategies = [\n    (element, userProgrammaticAttribute, privacyEnabledActionName) => getActionNameFromTextualContent(element, userProgrammaticAttribute, privacyEnabledActionName),\n];\n/**\n * Iterates over the target element and its parent, using the strategies list to get an action name.\n * Each strategies are applied on each element, stopping as soon as a non-empty value is returned.\n */\nconst MAX_PARENTS_TO_CONSIDER = 10;\nfunction getActionNameFromElementForStrategies(targetElement, userProgrammaticAttribute, strategies, privacyEnabledActionName) {\n    let element = targetElement;\n    let recursionCounter = 0;\n    while (recursionCounter <= MAX_PARENTS_TO_CONSIDER &&\n        element &&\n        element.nodeName !== 'BODY' &&\n        element.nodeName !== 'HTML' &&\n        element.nodeName !== 'HEAD') {\n        for (const strategy of strategies) {\n            const actionName = strategy(element, userProgrammaticAttribute, privacyEnabledActionName);\n            if (actionName) {\n                const { name, nameSource } = actionName;\n                const trimmedName = name && name.trim();\n                if (trimmedName) {\n                    return { name: truncate(normalizeWhitespace(trimmedName)), nameSource };\n                }\n            }\n        }\n        // Consider a FORM as a contextual limit to get the action name.  This is experimental and may\n        // be reconsidered in the future.\n        if (element.nodeName === 'FORM') {\n            break;\n        }\n        element = element.parentElement;\n        recursionCounter += 1;\n    }\n}\nfunction normalizeWhitespace(s) {\n    return s.replace(/\\s+/g, ' ');\n}\nfunction truncate(s) {\n    return s.length > 100 ? `${safeTruncate(s, 100)} [...]` : s;\n}\nfunction getElementById(refElement, id) {\n    // Use the element ownerDocument here, because tests are executed in an iframe, so\n    // document.getElementById won't work.\n    return refElement.ownerDocument ? refElement.ownerDocument.getElementById(id) : null;\n}\nfunction getActionNameFromStandardAttribute(element, attribute) {\n    return {\n        name: element.getAttribute(attribute) || '',\n        nameSource: \"standard_attribute\" /* ActionNameSource.STANDARD_ATTRIBUTE */,\n    };\n}\nfunction getActionNameFromTextualContent(element, userProgrammaticAttribute, privacyEnabledActionName) {\n    return {\n        name: getTextualContent(element, userProgrammaticAttribute, privacyEnabledActionName) || '',\n        nameSource: \"text_content\" /* ActionNameSource.TEXT_CONTENT */,\n    };\n}\nfunction getTextualContent(element, userProgrammaticAttribute, privacyEnabledActionName) {\n    if (element.isContentEditable) {\n        return;\n    }\n    if ('innerText' in element) {\n        let text = element.innerText;\n        const removeTextFromElements = (query) => {\n            const list = element.querySelectorAll(query);\n            for (let index = 0; index < list.length; index += 1) {\n                const element = list[index];\n                if ('innerText' in element) {\n                    const textToReplace = element.innerText;\n                    if (textToReplace && textToReplace.trim().length > 0) {\n                        text = text.replace(textToReplace, '');\n                    }\n                }\n            }\n        };\n        // remove the text of elements with programmatic attribute value\n        removeTextFromElements(`[${DEFAULT_PROGRAMMATIC_ACTION_NAME_ATTRIBUTE}]`);\n        if (userProgrammaticAttribute) {\n            removeTextFromElements(`[${userProgrammaticAttribute}]`);\n        }\n        if (privacyEnabledActionName) {\n            // remove the text of elements with privacy override\n            removeTextFromElements(`${getPrivacySelector(NodePrivacyLevel.HIDDEN)}, ${getPrivacySelector(NodePrivacyLevel.MASK)}`);\n        }\n        return text;\n    }\n    return element.textContent;\n}\n//# sourceMappingURL=getActionNameFromElement.js.map","import { DEFAULT_PROGRAMMATIC_ACTION_NAME_ATTRIBUTE } from './action/getActionNameFromElement';\n/**\n * Stable attributes are attributes that are commonly used to identify parts of a UI (ex:\n * component). Those attribute values should not be generated randomly (hardcoded most of the time)\n * and stay the same across deploys. They are not necessarily unique across the document.\n */\nexport const STABLE_ATTRIBUTES = [\n    DEFAULT_PROGRAMMATIC_ACTION_NAME_ATTRIBUTE,\n    // Common test attributes (list provided by google recorder)\n    'data-testid',\n    'data-test',\n    'data-qa',\n    'data-cy',\n    'data-test-id',\n    'data-qa-id',\n    'data-testing',\n    // FullStory decorator attributes:\n    'data-component',\n    'data-element',\n    'data-source-file',\n];\n// Selectors to use if they target a single element on the whole document. Those selectors are\n// considered as \"stable\" and uniquely identify an element regardless of the page state. If we find\n// one, we should consider the selector \"complete\" and stop iterating over ancestors.\nconst GLOBALLY_UNIQUE_SELECTOR_GETTERS = [getStableAttributeSelector, getIDSelector];\n// Selectors to use if they target a single element among an element descendants. Those selectors\n// are more brittle than \"globally unique\" selectors and should be combined with ancestor selectors\n// to improve specificity.\nconst UNIQUE_AMONG_CHILDREN_SELECTOR_GETTERS = [\n    getStableAttributeSelector,\n    getClassSelector,\n    getTagNameSelector,\n];\nexport function getSelectorFromElement(targetElement, actionNameAttribute) {\n    if (!targetElement.isConnected) {\n        // We cannot compute a selector for a detached element, as we don't have access to all of its\n        // parents, and we cannot determine if it's unique in the document.\n        return;\n    }\n    let targetElementSelector;\n    let currentElement = targetElement;\n    while (currentElement && currentElement.nodeName !== 'HTML') {\n        const globallyUniqueSelector = findSelector(currentElement, GLOBALLY_UNIQUE_SELECTOR_GETTERS, isSelectorUniqueGlobally, actionNameAttribute, targetElementSelector);\n        if (globallyUniqueSelector) {\n            return globallyUniqueSelector;\n        }\n        const uniqueSelectorAmongChildren = findSelector(currentElement, UNIQUE_AMONG_CHILDREN_SELECTOR_GETTERS, isSelectorUniqueAmongSiblings, actionNameAttribute, targetElementSelector);\n        targetElementSelector =\n            uniqueSelectorAmongChildren || combineSelector(getPositionSelector(currentElement), targetElementSelector);\n        currentElement = currentElement.parentElement;\n    }\n    return targetElementSelector;\n}\nfunction isGeneratedValue(value) {\n    // To compute the \"URL path group\", the backend replaces every URL path parts as a question mark\n    // if it thinks the part is an identifier. The condition it uses is to checks whether a digit is\n    // present.\n    //\n    // Here, we use the same strategy: if the value contains a digit, we consider it generated. This\n    // strategy might be a bit naive and fail in some cases, but there are many fallbacks to generate\n    // CSS selectors so it should be fine most of the time.\n    return /[0-9]/.test(value);\n}\nfunction getIDSelector(element) {\n    if (element.id && !isGeneratedValue(element.id)) {\n        return `#${CSS.escape(element.id)}`;\n    }\n}\nfunction getClassSelector(element) {\n    if (element.tagName === 'BODY') {\n        return;\n    }\n    const classList = element.classList;\n    for (let i = 0; i < classList.length; i += 1) {\n        const className = classList[i];\n        if (isGeneratedValue(className)) {\n            continue;\n        }\n        return `${CSS.escape(element.tagName)}.${CSS.escape(className)}`;\n    }\n}\nfunction getTagNameSelector(element) {\n    return CSS.escape(element.tagName);\n}\nfunction getStableAttributeSelector(element, actionNameAttribute) {\n    if (actionNameAttribute) {\n        const selector = getAttributeSelector(actionNameAttribute);\n        if (selector) {\n            return selector;\n        }\n    }\n    for (const attributeName of STABLE_ATTRIBUTES) {\n        const selector = getAttributeSelector(attributeName);\n        if (selector) {\n            return selector;\n        }\n    }\n    function getAttributeSelector(attributeName) {\n        if (element.hasAttribute(attributeName)) {\n            return `${CSS.escape(element.tagName)}[${attributeName}=\"${CSS.escape(element.getAttribute(attributeName))}\"]`;\n        }\n    }\n}\nfunction getPositionSelector(element) {\n    let sibling = element.parentElement.firstElementChild;\n    let elementIndex = 1;\n    while (sibling && sibling !== element) {\n        if (sibling.tagName === element.tagName) {\n            elementIndex += 1;\n        }\n        sibling = sibling.nextElementSibling;\n    }\n    return `${CSS.escape(element.tagName)}:nth-of-type(${elementIndex})`;\n}\nfunction findSelector(element, selectorGetters, predicate, actionNameAttribute, childSelector) {\n    for (const selectorGetter of selectorGetters) {\n        const elementSelector = selectorGetter(element, actionNameAttribute);\n        if (!elementSelector) {\n            continue;\n        }\n        if (predicate(element, elementSelector, childSelector)) {\n            return combineSelector(elementSelector, childSelector);\n        }\n    }\n}\n/**\n * Check whether the selector is unique among the whole document.\n */\nfunction isSelectorUniqueGlobally(element, elementSelector, childSelector) {\n    return element.ownerDocument.querySelectorAll(combineSelector(elementSelector, childSelector)).length === 1;\n}\n/**\n * Check whether the selector is unique among the element siblings. In other words, it returns true\n * if \"ELEMENT_PARENT > CHILD_SELECTOR\" returns a single element.\n *\n * @param {Element} currentElement - the element being considered while iterating over the target\n * element ancestors.\n *\n * @param {string} currentElementSelector - a selector that matches the current element. That\n * selector is not a composed selector (i.e. it might be a single tag name, class name...).\n *\n * @param {string|undefined} childSelector - child selector is a selector that targets a descendant\n * of the current element. When undefined, the current element is the target element.\n *\n * # Scope selector usage\n *\n * When composed together, the final selector will be joined with `>` operators to make sure we\n * target direct descendants at each level. In this function, we'll use `querySelector` to check if\n * a selector matches descendants of the current element. But by default, the query selector match\n * elements at any level. Example:\n *\n * ```html\n * <main>\n *   <div>\n *     <span></span>\n *   </div>\n *   <marquee>\n *     <div>\n *       <span></span>\n *     </div>\n *   </marquee>\n * </main>\n * ```\n *\n * `sibling.querySelector('DIV > SPAN')` will match both span elements, so we would consider the\n * selector to be not unique, even if it is unique when we'll compose it with the parent with a `>`\n * operator (`MAIN > DIV > SPAN`).\n *\n * To avoid this, we can use the `:scope` selector to make sure the selector starts from the current\n * sibling (i.e. `sibling.querySelector('DIV:scope > SPAN')` will only match the first span).\n *\n * [1]: https://developer.mozilla.org/fr/docs/Web/CSS/:scope\n *\n * # Performance considerations\n *\n * We compute selectors in performance-critical operations (ex: during a click), so we need to make\n * sure the function is as fast as possible. We observed that naively using `querySelectorAll` to\n * check if the selector matches more than 1 element is quite expensive, so we want to avoid it.\n *\n * Because we are iterating the DOM upward and we use that function at every level, we know the\n * child selector is already unique among the current element children, so we don't need to check\n * for the current element subtree.\n *\n * Instead, we can focus on the current element siblings. If we find a single element matching the\n * selector within a sibling, we know that it's not unique. This allows us to use `querySelector`\n * (or `matches`, when the current element is the target element) instead of `querySelectorAll`.\n */\nexport function isSelectorUniqueAmongSiblings(currentElement, currentElementSelector, childSelector) {\n    let isSiblingMatching;\n    if (childSelector === undefined) {\n        // If the child selector is undefined (meaning `currentElement` is the target element, not one\n        // of its ancestor), we need to use `matches` to check if the sibling is matching the selector,\n        // as `querySelector` only returns a descendant of the element.\n        isSiblingMatching = (sibling) => sibling.matches(currentElementSelector);\n    }\n    else {\n        const scopedSelector = combineSelector(`${currentElementSelector}:scope`, childSelector);\n        isSiblingMatching = (sibling) => sibling.querySelector(scopedSelector) !== null;\n    }\n    const parent = currentElement.parentElement;\n    let sibling = parent.firstElementChild;\n    while (sibling) {\n        if (sibling !== currentElement && isSiblingMatching(sibling)) {\n            return false;\n        }\n        sibling = sibling.nextElementSibling;\n    }\n    return true;\n}\nfunction combineSelector(parent, child) {\n    return child ? `${parent}>${child}` : parent;\n}\n//# sourceMappingURL=getSelectorFromElement.js.map","import { ONE_SECOND, clearTimeout, setTimeout } from '@datadog/browser-core';\nexport const MAX_DURATION_BETWEEN_CLICKS = ONE_SECOND;\nexport const MAX_DISTANCE_BETWEEN_CLICKS = 100;\nexport function createClickChain(firstClick, onFinalize) {\n    const bufferedClicks = [];\n    let status = 0 /* ClickChainStatus.WaitingForMoreClicks */;\n    let maxDurationBetweenClicksTimeoutId;\n    appendClick(firstClick);\n    function appendClick(click) {\n        click.stopObservable.subscribe(tryFinalize);\n        bufferedClicks.push(click);\n        clearTimeout(maxDurationBetweenClicksTimeoutId);\n        maxDurationBetweenClicksTimeoutId = setTimeout(dontAcceptMoreClick, MAX_DURATION_BETWEEN_CLICKS);\n    }\n    function tryFinalize() {\n        if (status === 1 /* ClickChainStatus.WaitingForClicksToStop */ && bufferedClicks.every((click) => click.isStopped())) {\n            status = 2 /* ClickChainStatus.Finalized */;\n            onFinalize(bufferedClicks);\n        }\n    }\n    function dontAcceptMoreClick() {\n        clearTimeout(maxDurationBetweenClicksTimeoutId);\n        if (status === 0 /* ClickChainStatus.WaitingForMoreClicks */) {\n            status = 1 /* ClickChainStatus.WaitingForClicksToStop */;\n            tryFinalize();\n        }\n    }\n    return {\n        tryAppend: (click) => {\n            if (status !== 0 /* ClickChainStatus.WaitingForMoreClicks */) {\n                return false;\n            }\n            if (bufferedClicks.length > 0 &&\n                !areEventsSimilar(bufferedClicks[bufferedClicks.length - 1].event, click.event)) {\n                dontAcceptMoreClick();\n                return false;\n            }\n            appendClick(click);\n            return true;\n        },\n        stop: () => {\n            dontAcceptMoreClick();\n        },\n    };\n}\n/**\n * Checks whether two events are similar by comparing their target, position and timestamp\n */\nfunction areEventsSimilar(first, second) {\n    return (first.target === second.target &&\n        mouseEventDistance(first, second) <= MAX_DISTANCE_BETWEEN_CLICKS &&\n        first.timeStamp - second.timeStamp <= MAX_DURATION_BETWEEN_CLICKS);\n}\nfunction mouseEventDistance(origin, other) {\n    return Math.sqrt(Math.pow(origin.clientX - other.clientX, 2) + Math.pow(origin.clientY - other.clientY, 2));\n}\n//# sourceMappingURL=clickChain.js.map","import { addEventListener } from '@datadog/browser-core';\nexport function listenActionEvents(configuration, { onPointerDown, onPointerUp }) {\n    let selectionEmptyAtPointerDown;\n    let userActivity = {\n        selection: false,\n        input: false,\n        scroll: false,\n    };\n    let clickContext;\n    const listeners = [\n        addEventListener(configuration, window, \"pointerdown\" /* DOM_EVENT.POINTER_DOWN */, (event) => {\n            if (isValidPointerEvent(event)) {\n                selectionEmptyAtPointerDown = isSelectionEmpty();\n                userActivity = {\n                    selection: false,\n                    input: false,\n                    scroll: false,\n                };\n                clickContext = onPointerDown(event);\n            }\n        }, { capture: true }),\n        addEventListener(configuration, window, \"selectionchange\" /* DOM_EVENT.SELECTION_CHANGE */, () => {\n            if (!selectionEmptyAtPointerDown || !isSelectionEmpty()) {\n                userActivity.selection = true;\n            }\n        }, { capture: true }),\n        addEventListener(configuration, window, \"scroll\" /* DOM_EVENT.SCROLL */, () => {\n            userActivity.scroll = true;\n        }, { capture: true, passive: true }),\n        addEventListener(configuration, window, \"pointerup\" /* DOM_EVENT.POINTER_UP */, (event) => {\n            if (isValidPointerEvent(event) && clickContext) {\n                // Use a scoped variable to make sure the value is not changed by other clicks\n                const localUserActivity = userActivity;\n                onPointerUp(clickContext, event, () => localUserActivity);\n                clickContext = undefined;\n            }\n        }, { capture: true }),\n        addEventListener(configuration, window, \"input\" /* DOM_EVENT.INPUT */, () => {\n            userActivity.input = true;\n        }, { capture: true }),\n    ];\n    return {\n        stop: () => {\n            listeners.forEach((listener) => listener.stop());\n        },\n    };\n}\nfunction isSelectionEmpty() {\n    const selection = window.getSelection();\n    return !selection || selection.isCollapsed;\n}\nfunction isValidPointerEvent(event) {\n    return (event.target instanceof Element &&\n        // Only consider 'primary' pointer events for now. Multi-touch support could be implemented in\n        // the future.\n        event.isPrimary !== false);\n}\n//# sourceMappingURL=listenActionEvents.js.map","import { ONE_SECOND } from '@datadog/browser-core';\nconst MIN_CLICKS_PER_SECOND_TO_CONSIDER_RAGE = 3;\nexport function computeFrustration(clicks, rageClick) {\n    if (isRage(clicks)) {\n        rageClick.addFrustration(\"rage_click\" /* FrustrationType.RAGE_CLICK */);\n        if (clicks.some(isDead)) {\n            rageClick.addFrustration(\"dead_click\" /* FrustrationType.DEAD_CLICK */);\n        }\n        if (rageClick.hasError) {\n            rageClick.addFrustration(\"error_click\" /* FrustrationType.ERROR_CLICK */);\n        }\n        return { isRage: true };\n    }\n    const hasSelectionChanged = clicks.some((click) => click.getUserActivity().selection);\n    clicks.forEach((click) => {\n        if (click.hasError) {\n            click.addFrustration(\"error_click\" /* FrustrationType.ERROR_CLICK */);\n        }\n        if (isDead(click) &&\n            // Avoid considering clicks part of a double-click or triple-click selections as dead clicks\n            !hasSelectionChanged) {\n            click.addFrustration(\"dead_click\" /* FrustrationType.DEAD_CLICK */);\n        }\n    });\n    return { isRage: false };\n}\nexport function isRage(clicks) {\n    if (clicks.some((click) => click.getUserActivity().selection || click.getUserActivity().scroll)) {\n        return false;\n    }\n    for (let i = 0; i < clicks.length - (MIN_CLICKS_PER_SECOND_TO_CONSIDER_RAGE - 1); i += 1) {\n        if (clicks[i + MIN_CLICKS_PER_SECOND_TO_CONSIDER_RAGE - 1].event.timeStamp - clicks[i].event.timeStamp <=\n            ONE_SECOND) {\n            return true;\n        }\n    }\n    return false;\n}\nconst DEAD_CLICK_EXCLUDE_SELECTOR = \n// inputs that don't trigger a meaningful event like \"input\" when clicked, including textual\n// inputs (using a negative selector is shorter here)\n'input:not([type=\"checkbox\"]):not([type=\"radio\"]):not([type=\"button\"]):not([type=\"submit\"]):not([type=\"reset\"]):not([type=\"range\"]),' +\n    'textarea,' +\n    'select,' +\n    // contenteditable and their descendants don't always trigger meaningful changes when manipulated\n    '[contenteditable],' +\n    '[contenteditable] *,' +\n    // canvas, as there is no good way to detect activity occurring on them\n    'canvas,' +\n    // links that are interactive (have an href attribute) or any of their descendants, as they can\n    // open a new tab or navigate to a hash without triggering a meaningful event\n    'a[href],' +\n    'a[href] *';\nexport function isDead(click) {\n    if (click.hasPageActivity || click.getUserActivity().input || click.getUserActivity().scroll) {\n        return false;\n    }\n    return !click.event.target.matches(DEAD_CLICK_EXCLUDE_SELECTOR);\n}\n//# sourceMappingURL=computeFrustration.js.map","import { elapsed, ONE_SECOND, relativeNow } from '@datadog/browser-core';\n// Maximum duration for click actions\nexport const CLICK_ACTION_MAX_DURATION = 10 * ONE_SECOND;\nexport const interactionSelectorCache = new Map();\nexport function getInteractionSelector(relativeTimestamp) {\n    const selector = interactionSelectorCache.get(relativeTimestamp);\n    interactionSelectorCache.delete(relativeTimestamp);\n    return selector;\n}\nexport function updateInteractionSelector(relativeTimestamp, selector) {\n    interactionSelectorCache.set(relativeTimestamp, selector);\n    interactionSelectorCache.forEach((_, relativeTimestamp) => {\n        if (elapsed(relativeTimestamp, relativeNow()) > CLICK_ACTION_MAX_DURATION) {\n            interactionSelectorCache.delete(relativeTimestamp);\n        }\n    });\n}\n//# sourceMappingURL=interactionSelectorCache.js.map","import { timeStampNow, Observable, getRelativeTime, ONE_MINUTE, generateUUID, clocksNow, elapsed, createValueHistory, PageExitReason, } from '@datadog/browser-core';\nimport { trackEventCounts } from '../trackEventCounts';\nimport { PAGE_ACTIVITY_VALIDATION_DELAY, waitPageActivityEnd } from '../waitPageActivityEnd';\nimport { getSelectorFromElement } from '../getSelectorFromElement';\nimport { getNodePrivacyLevel, NodePrivacyLevel } from '../privacy';\nimport { createClickChain } from './clickChain';\nimport { getActionNameFromElement } from './getActionNameFromElement';\nimport { listenActionEvents } from './listenActionEvents';\nimport { computeFrustration } from './computeFrustration';\nimport { CLICK_ACTION_MAX_DURATION, updateInteractionSelector } from './interactionSelectorCache';\nexport const ACTION_CONTEXT_TIME_OUT_DELAY = 5 * ONE_MINUTE; // arbitrary\nexport function trackClickActions(lifeCycle, domMutationObservable, windowOpenObservable, configuration) {\n    const history = createValueHistory({ expireDelay: ACTION_CONTEXT_TIME_OUT_DELAY });\n    const stopObservable = new Observable();\n    let currentClickChain;\n    lifeCycle.subscribe(10 /* LifeCycleEventType.SESSION_RENEWED */, () => {\n        history.reset();\n    });\n    lifeCycle.subscribe(5 /* LifeCycleEventType.VIEW_ENDED */, stopClickChain);\n    lifeCycle.subscribe(11 /* LifeCycleEventType.PAGE_MAY_EXIT */, (event) => {\n        if (event.reason === PageExitReason.UNLOADING) {\n            stopClickChain();\n        }\n    });\n    const { stop: stopActionEventsListener } = listenActionEvents(configuration, {\n        onPointerDown: (pointerDownEvent) => processPointerDown(configuration, lifeCycle, domMutationObservable, pointerDownEvent, windowOpenObservable),\n        onPointerUp: ({ clickActionBase, hadActivityOnPointerDown }, startEvent, getUserActivity) => {\n            startClickAction(configuration, lifeCycle, domMutationObservable, windowOpenObservable, history, stopObservable, appendClickToClickChain, clickActionBase, startEvent, getUserActivity, hadActivityOnPointerDown);\n        },\n    });\n    const actionContexts = {\n        findActionId: (startTime) => history.findAll(startTime),\n    };\n    return {\n        stop: () => {\n            stopClickChain();\n            stopObservable.notify();\n            stopActionEventsListener();\n        },\n        actionContexts,\n    };\n    function appendClickToClickChain(click) {\n        if (!currentClickChain || !currentClickChain.tryAppend(click)) {\n            const rageClick = click.clone();\n            currentClickChain = createClickChain(click, (clicks) => {\n                finalizeClicks(clicks, rageClick);\n            });\n        }\n    }\n    function stopClickChain() {\n        if (currentClickChain) {\n            currentClickChain.stop();\n        }\n    }\n}\nfunction processPointerDown(configuration, lifeCycle, domMutationObservable, pointerDownEvent, windowOpenObservable) {\n    const nodePrivacyLevel = configuration.enablePrivacyForActionName\n        ? getNodePrivacyLevel(pointerDownEvent.target, configuration.defaultPrivacyLevel)\n        : NodePrivacyLevel.ALLOW;\n    if (nodePrivacyLevel === NodePrivacyLevel.HIDDEN) {\n        return undefined;\n    }\n    const clickActionBase = computeClickActionBase(pointerDownEvent, nodePrivacyLevel, configuration);\n    let hadActivityOnPointerDown = false;\n    waitPageActivityEnd(lifeCycle, domMutationObservable, windowOpenObservable, configuration, (pageActivityEndEvent) => {\n        hadActivityOnPointerDown = pageActivityEndEvent.hadActivity;\n    }, \n    // We don't care about the activity duration, we just want to know whether an activity did happen\n    // within the \"validation delay\" or not. Limit the duration so the callback is called sooner.\n    PAGE_ACTIVITY_VALIDATION_DELAY);\n    return { clickActionBase, hadActivityOnPointerDown: () => hadActivityOnPointerDown };\n}\nfunction startClickAction(configuration, lifeCycle, domMutationObservable, windowOpenObservable, history, stopObservable, appendClickToClickChain, clickActionBase, startEvent, getUserActivity, hadActivityOnPointerDown) {\n    var _a;\n    const click = newClick(lifeCycle, history, getUserActivity, clickActionBase, startEvent);\n    appendClickToClickChain(click);\n    const selector = (_a = clickActionBase === null || clickActionBase === void 0 ? void 0 : clickActionBase.target) === null || _a === void 0 ? void 0 : _a.selector;\n    if (selector) {\n        updateInteractionSelector(startEvent.timeStamp, selector);\n    }\n    const { stop: stopWaitPageActivityEnd } = waitPageActivityEnd(lifeCycle, domMutationObservable, windowOpenObservable, configuration, (pageActivityEndEvent) => {\n        if (pageActivityEndEvent.hadActivity && pageActivityEndEvent.end < click.startClocks.timeStamp) {\n            // If the clock is looking weird, just discard the click\n            click.discard();\n        }\n        else {\n            if (pageActivityEndEvent.hadActivity) {\n                click.stop(pageActivityEndEvent.end);\n            }\n            else if (hadActivityOnPointerDown()) {\n                click.stop(\n                // using the click start as activity end, so the click will have some activity but its\n                // duration will be 0 (as the activity started before the click start)\n                click.startClocks.timeStamp);\n            }\n            else {\n                click.stop();\n            }\n        }\n    }, CLICK_ACTION_MAX_DURATION);\n    const viewEndedSubscription = lifeCycle.subscribe(5 /* LifeCycleEventType.VIEW_ENDED */, ({ endClocks }) => {\n        click.stop(endClocks.timeStamp);\n    });\n    const stopSubscription = stopObservable.subscribe(() => {\n        click.stop();\n    });\n    click.stopObservable.subscribe(() => {\n        viewEndedSubscription.unsubscribe();\n        stopWaitPageActivityEnd();\n        stopSubscription.unsubscribe();\n    });\n}\nfunction computeClickActionBase(event, nodePrivacyLevel, configuration) {\n    const rect = event.target.getBoundingClientRect();\n    const selector = getSelectorFromElement(event.target, configuration.actionNameAttribute);\n    if (selector) {\n        updateInteractionSelector(event.timeStamp, selector);\n    }\n    const actionName = getActionNameFromElement(event.target, configuration, nodePrivacyLevel);\n    return {\n        type: \"click\" /* ActionType.CLICK */,\n        target: {\n            width: Math.round(rect.width),\n            height: Math.round(rect.height),\n            selector,\n        },\n        position: {\n            // Use clientX and Y because for SVG element offsetX and Y are relatives to the <svg> element\n            x: Math.round(event.clientX - rect.left),\n            y: Math.round(event.clientY - rect.top),\n        },\n        name: actionName.name,\n        nameSource: actionName.nameSource,\n    };\n}\nfunction newClick(lifeCycle, history, getUserActivity, clickActionBase, startEvent) {\n    const id = generateUUID();\n    const startClocks = clocksNow();\n    const historyEntry = history.add(id, startClocks.relative);\n    const eventCountsSubscription = trackEventCounts({\n        lifeCycle,\n        isChildEvent: (event) => event.action !== undefined &&\n            (Array.isArray(event.action.id) ? event.action.id.includes(id) : event.action.id === id),\n    });\n    let status = 0 /* ClickStatus.ONGOING */;\n    let activityEndTime;\n    const frustrationTypes = [];\n    const stopObservable = new Observable();\n    function stop(newActivityEndTime) {\n        if (status !== 0 /* ClickStatus.ONGOING */) {\n            return;\n        }\n        activityEndTime = newActivityEndTime;\n        status = 1 /* ClickStatus.STOPPED */;\n        if (activityEndTime) {\n            historyEntry.close(getRelativeTime(activityEndTime));\n        }\n        else {\n            historyEntry.remove();\n        }\n        eventCountsSubscription.stop();\n        stopObservable.notify();\n    }\n    return {\n        event: startEvent,\n        stop,\n        stopObservable,\n        get hasError() {\n            return eventCountsSubscription.eventCounts.errorCount > 0;\n        },\n        get hasPageActivity() {\n            return activityEndTime !== undefined;\n        },\n        getUserActivity,\n        addFrustration: (frustrationType) => {\n            frustrationTypes.push(frustrationType);\n        },\n        startClocks,\n        isStopped: () => status === 1 /* ClickStatus.STOPPED */ || status === 2 /* ClickStatus.FINALIZED */,\n        clone: () => newClick(lifeCycle, history, getUserActivity, clickActionBase, startEvent),\n        validate: (domEvents) => {\n            stop();\n            if (status !== 1 /* ClickStatus.STOPPED */) {\n                return;\n            }\n            const { resourceCount, errorCount, longTaskCount } = eventCountsSubscription.eventCounts;\n            const clickAction = {\n                duration: activityEndTime && elapsed(startClocks.timeStamp, activityEndTime),\n                startClocks,\n                id,\n                frustrationTypes,\n                counts: {\n                    resourceCount,\n                    errorCount,\n                    longTaskCount,\n                },\n                events: domEvents !== null && domEvents !== void 0 ? domEvents : [startEvent],\n                event: startEvent,\n                ...clickActionBase,\n            };\n            lifeCycle.notify(0 /* LifeCycleEventType.AUTO_ACTION_COMPLETED */, clickAction);\n            status = 2 /* ClickStatus.FINALIZED */;\n        },\n        discard: () => {\n            stop();\n            status = 2 /* ClickStatus.FINALIZED */;\n        },\n    };\n}\nexport function finalizeClicks(clicks, rageClick) {\n    const { isRage } = computeFrustration(clicks, rageClick);\n    if (isRage) {\n        clicks.forEach((click) => click.discard());\n        rageClick.stop(timeStampNow());\n        rageClick.validate(clicks.map((click) => click.event));\n    }\n    else {\n        rageClick.discard();\n        clicks.forEach((click) => click.validate());\n    }\n}\n//# sourceMappingURL=trackClickActions.js.map","import { noop, combine, toServerDuration, generateUUID } from '@datadog/browser-core';\nimport { discardNegativeDuration } from '../discardNegativeDuration';\nimport { trackClickActions } from './trackClickActions';\nexport function startActionCollection(lifeCycle, hooks, domMutationObservable, windowOpenObservable, configuration) {\n    lifeCycle.subscribe(0 /* LifeCycleEventType.AUTO_ACTION_COMPLETED */, (action) => lifeCycle.notify(12 /* LifeCycleEventType.RAW_RUM_EVENT_COLLECTED */, processAction(action)));\n    hooks.register(0 /* HookNames.Assemble */, ({ startTime, eventType }) => {\n        if (eventType !== \"error\" /* RumEventType.ERROR */ &&\n            eventType !== \"resource\" /* RumEventType.RESOURCE */ &&\n            eventType !== \"long_task\" /* RumEventType.LONG_TASK */) {\n            return;\n        }\n        const actionId = actionContexts.findActionId(startTime);\n        if (!actionId) {\n            return;\n        }\n        return {\n            type: eventType,\n            action: { id: actionId },\n        };\n    });\n    let actionContexts = { findActionId: noop };\n    let stop = noop;\n    if (configuration.trackUserInteractions) {\n        ;\n        ({ actionContexts, stop } = trackClickActions(lifeCycle, domMutationObservable, windowOpenObservable, configuration));\n    }\n    return {\n        addAction: (action) => {\n            lifeCycle.notify(12 /* LifeCycleEventType.RAW_RUM_EVENT_COLLECTED */, processAction(action));\n        },\n        actionContexts,\n        stop,\n    };\n}\nfunction processAction(action) {\n    const autoActionProperties = isAutoAction(action)\n        ? {\n            action: {\n                id: action.id,\n                loading_time: discardNegativeDuration(toServerDuration(action.duration)),\n                frustration: {\n                    type: action.frustrationTypes,\n                },\n                error: {\n                    count: action.counts.errorCount,\n                },\n                long_task: {\n                    count: action.counts.longTaskCount,\n                },\n                resource: {\n                    count: action.counts.resourceCount,\n                },\n            },\n            _dd: {\n                action: {\n                    target: action.target,\n                    position: action.position,\n                    name_source: action.nameSource,\n                },\n            },\n        }\n        : undefined;\n    const actionEvent = combine({\n        action: { id: generateUUID(), target: { name: action.name }, type: action.type },\n        date: action.startClocks.timeStamp,\n        type: \"action\" /* RumEventType.ACTION */,\n    }, autoActionProperties);\n    const duration = isAutoAction(action) ? action.duration : undefined;\n    const customerContext = !isAutoAction(action) ? action.context : undefined;\n    const domainContext = isAutoAction(action)\n        ? { events: action.events }\n        : { handlingStack: action.handlingStack };\n    return {\n        customerContext,\n        rawRumEvent: actionEvent,\n        duration,\n        startTime: action.startClocks.relative,\n        domainContext,\n    };\n}\nfunction isAutoAction(action) {\n    return action.type !== \"custom\" /* ActionType.CUSTOM */;\n}\n//# sourceMappingURL=actionCollection.js.map","import { flattenErrorCauses, isError, tryToGetFingerprint, tryToGetErrorContext } from '../error/error';\nimport { mergeObservables, Observable } from '../../tools/observable';\nimport { ConsoleApiName, globalConsole } from '../../tools/display';\nimport { callMonitored } from '../../tools/monitor';\nimport { sanitize } from '../../tools/serialisation/sanitize';\nimport { jsonStringify } from '../../tools/serialisation/jsonStringify';\nimport { ErrorSource } from '../error/error.types';\nimport { computeStackTrace } from '../../tools/stackTrace/computeStackTrace';\nimport { createHandlingStack, toStackTraceString, formatErrorMessage } from '../../tools/stackTrace/handlingStack';\nimport { clocksNow } from '../../tools/utils/timeUtils';\nlet consoleObservablesByApi = {};\nexport function initConsoleObservable(apis) {\n    const consoleObservables = apis.map((api) => {\n        if (!consoleObservablesByApi[api]) {\n            consoleObservablesByApi[api] = createConsoleObservable(api); // we are sure that the observable created for this api will yield the expected ConsoleLog type\n        }\n        return consoleObservablesByApi[api];\n    });\n    return mergeObservables(...consoleObservables);\n}\nexport function resetConsoleObservable() {\n    consoleObservablesByApi = {};\n}\nfunction createConsoleObservable(api) {\n    return new Observable((observable) => {\n        const originalConsoleApi = globalConsole[api];\n        globalConsole[api] = (...params) => {\n            originalConsoleApi.apply(console, params);\n            const handlingStack = createHandlingStack('console error');\n            callMonitored(() => {\n                observable.notify(buildConsoleLog(params, api, handlingStack));\n            });\n        };\n        return () => {\n            globalConsole[api] = originalConsoleApi;\n        };\n    });\n}\nfunction buildConsoleLog(params, api, handlingStack) {\n    const message = params.map((param) => formatConsoleParameters(param)).join(' ');\n    let error;\n    if (api === ConsoleApiName.error) {\n        const firstErrorParam = params.find(isError);\n        error = {\n            stack: firstErrorParam ? toStackTraceString(computeStackTrace(firstErrorParam)) : undefined,\n            fingerprint: tryToGetFingerprint(firstErrorParam),\n            causes: firstErrorParam ? flattenErrorCauses(firstErrorParam, 'console') : undefined,\n            startClocks: clocksNow(),\n            message,\n            source: ErrorSource.CONSOLE,\n            handling: \"handled\" /* ErrorHandling.HANDLED */,\n            handlingStack,\n            context: tryToGetErrorContext(firstErrorParam),\n            originalError: firstErrorParam,\n        };\n    }\n    return {\n        api,\n        message,\n        error,\n        handlingStack,\n    };\n}\nfunction formatConsoleParameters(param) {\n    if (typeof param === 'string') {\n        return sanitize(param);\n    }\n    if (isError(param)) {\n        return formatErrorMessage(computeStackTrace(param));\n    }\n    return jsonStringify(sanitize(param), undefined, 2);\n}\n//# sourceMappingURL=consoleObservable.js.map","import { toStackTraceString } from '../../tools/stackTrace/handlingStack';\nimport { monitor } from '../../tools/monitor';\nimport { mergeObservables, Observable } from '../../tools/observable';\nimport { addEventListener } from '../../browser/addEventListener';\nimport { safeTruncate } from '../../tools/utils/stringUtils';\nimport { ErrorSource } from '../error/error.types';\nimport { clocksNow } from '../../tools/utils/timeUtils';\nexport const RawReportType = {\n    intervention: 'intervention',\n    deprecation: 'deprecation',\n    cspViolation: 'csp_violation',\n};\nexport function initReportObservable(configuration, apis) {\n    const observables = [];\n    if (apis.includes(RawReportType.cspViolation)) {\n        observables.push(createCspViolationReportObservable(configuration));\n    }\n    const reportTypes = apis.filter((api) => api !== RawReportType.cspViolation);\n    if (reportTypes.length) {\n        observables.push(createReportObservable(reportTypes));\n    }\n    return mergeObservables(...observables);\n}\nfunction createReportObservable(reportTypes) {\n    return new Observable((observable) => {\n        if (!window.ReportingObserver) {\n            return;\n        }\n        const handleReports = monitor((reports, _) => reports.forEach((report) => observable.notify(buildRawReportErrorFromReport(report))));\n        const observer = new window.ReportingObserver(handleReports, {\n            types: reportTypes,\n            buffered: true,\n        });\n        observer.observe();\n        return () => {\n            observer.disconnect();\n        };\n    });\n}\nfunction createCspViolationReportObservable(configuration) {\n    return new Observable((observable) => {\n        const { stop } = addEventListener(configuration, document, \"securitypolicyviolation\" /* DOM_EVENT.SECURITY_POLICY_VIOLATION */, (event) => {\n            observable.notify(buildRawReportErrorFromCspViolation(event));\n        });\n        return stop;\n    });\n}\nfunction buildRawReportErrorFromReport(report) {\n    const { type, body } = report;\n    return buildRawReportError({\n        type: body.id,\n        message: `${type}: ${body.message}`,\n        originalError: report,\n        stack: buildStack(body.id, body.message, body.sourceFile, body.lineNumber, body.columnNumber),\n    });\n}\nfunction buildRawReportErrorFromCspViolation(event) {\n    const message = `'${event.blockedURI}' blocked by '${event.effectiveDirective}' directive`;\n    return buildRawReportError({\n        type: event.effectiveDirective,\n        message: `${RawReportType.cspViolation}: ${message}`,\n        originalError: event,\n        csp: {\n            disposition: event.disposition,\n        },\n        stack: buildStack(event.effectiveDirective, event.originalPolicy\n            ? `${message} of the policy \"${safeTruncate(event.originalPolicy, 100, '...')}\"`\n            : 'no policy', event.sourceFile, event.lineNumber, event.columnNumber),\n    });\n}\nfunction buildRawReportError(partial) {\n    return {\n        startClocks: clocksNow(),\n        source: ErrorSource.REPORT,\n        handling: \"unhandled\" /* ErrorHandling.UNHANDLED */,\n        ...partial,\n    };\n}\nfunction buildStack(name, message, sourceFile, lineNumber, columnNumber) {\n    return sourceFile\n        ? toStackTraceString({\n            name,\n            message,\n            stack: [\n                {\n                    func: '?',\n                    url: sourceFile,\n                    line: lineNumber !== null && lineNumber !== void 0 ? lineNumber : undefined,\n                    column: columnNumber !== null && columnNumber !== void 0 ? columnNumber : undefined,\n                },\n            ],\n        })\n        : undefined;\n}\n//# sourceMappingURL=reportObservable.js.map","import { ErrorSource, generateUUID, computeRawError, computeStackTrace, Observable, trackRuntimeError, isError, combine, } from '@datadog/browser-core';\nimport { trackConsoleError } from './trackConsoleError';\nimport { trackReportError } from './trackReportError';\nexport function startErrorCollection(lifeCycle, configuration) {\n    const errorObservable = new Observable();\n    trackConsoleError(errorObservable);\n    trackRuntimeError(errorObservable);\n    trackReportError(configuration, errorObservable);\n    errorObservable.subscribe((error) => lifeCycle.notify(14 /* LifeCycleEventType.RAW_ERROR_COLLECTED */, { error }));\n    return doStartErrorCollection(lifeCycle);\n}\nexport function doStartErrorCollection(lifeCycle) {\n    lifeCycle.subscribe(14 /* LifeCycleEventType.RAW_ERROR_COLLECTED */, ({ error, customerContext }) => {\n        customerContext = combine(error.context, customerContext);\n        lifeCycle.notify(12 /* LifeCycleEventType.RAW_RUM_EVENT_COLLECTED */, {\n            customerContext,\n            ...processError(error),\n        });\n    });\n    return {\n        addError: ({ error, handlingStack, componentStack, startClocks, context: customerContext }) => {\n            const stackTrace = isError(error) ? computeStackTrace(error) : undefined;\n            const rawError = computeRawError({\n                stackTrace,\n                originalError: error,\n                handlingStack,\n                componentStack,\n                startClocks,\n                nonErrorPrefix: \"Provided\" /* NonErrorPrefix.PROVIDED */,\n                source: ErrorSource.CUSTOM,\n                handling: \"handled\" /* ErrorHandling.HANDLED */,\n            });\n            lifeCycle.notify(14 /* LifeCycleEventType.RAW_ERROR_COLLECTED */, {\n                customerContext,\n                error: rawError,\n            });\n        },\n    };\n}\nfunction processError(error) {\n    const rawRumEvent = {\n        date: error.startClocks.timeStamp,\n        error: {\n            id: generateUUID(),\n            message: error.message,\n            source: error.source,\n            stack: error.stack,\n            handling_stack: error.handlingStack,\n            component_stack: error.componentStack,\n            type: error.type,\n            handling: error.handling,\n            causes: error.causes,\n            source_type: 'browser',\n            fingerprint: error.fingerprint,\n            csp: error.csp,\n        },\n        type: \"error\" /* RumEventType.ERROR */,\n    };\n    const domainContext = {\n        error: error.originalError,\n        handlingStack: error.handlingStack,\n    };\n    return {\n        rawRumEvent,\n        startTime: error.startClocks.relative,\n        domainContext,\n    };\n}\n//# sourceMappingURL=errorCollection.js.map","import { initConsoleObservable, ConsoleApiName } from '@datadog/browser-core';\nexport function trackConsoleError(errorObservable) {\n    const subscription = initConsoleObservable([ConsoleApiName.error]).subscribe((consoleLog) => errorObservable.notify(consoleLog.error));\n    return {\n        stop: () => {\n            subscription.unsubscribe();\n        },\n    };\n}\n//# sourceMappingURL=trackConsoleError.js.map","import { instrumentMethod } from '../../tools/instrumentMethod';\nimport { clocksNow } from '../../tools/utils/timeUtils';\nimport { computeStackTrace, computeStackTraceFromOnErrorMessage } from '../../tools/stackTrace/computeStackTrace';\nimport { computeRawError, isError } from './error';\nimport { ErrorSource } from './error.types';\nexport function trackRuntimeError(errorObservable) {\n    const handleRuntimeError = (stackTrace, originalError) => {\n        const rawError = computeRawError({\n            stackTrace,\n            originalError,\n            startClocks: clocksNow(),\n            nonErrorPrefix: \"Uncaught\" /* NonErrorPrefix.UNCAUGHT */,\n            source: ErrorSource.SOURCE,\n            handling: \"unhandled\" /* ErrorHandling.UNHANDLED */,\n        });\n        errorObservable.notify(rawError);\n    };\n    const { stop: stopInstrumentingOnError } = instrumentOnError(handleRuntimeError);\n    const { stop: stopInstrumentingOnUnhandledRejection } = instrumentUnhandledRejection(handleRuntimeError);\n    return {\n        stop: () => {\n            stopInstrumentingOnError();\n            stopInstrumentingOnUnhandledRejection();\n        },\n    };\n}\nexport function instrumentOnError(callback) {\n    return instrumentMethod(window, 'onerror', ({ parameters: [messageObj, url, line, column, errorObj] }) => {\n        let stackTrace;\n        if (isError(errorObj)) {\n            stackTrace = computeStackTrace(errorObj);\n        }\n        else {\n            stackTrace = computeStackTraceFromOnErrorMessage(messageObj, url, line, column);\n        }\n        callback(stackTrace, errorObj !== null && errorObj !== void 0 ? errorObj : messageObj);\n    });\n}\nexport function instrumentUnhandledRejection(callback) {\n    return instrumentMethod(window, 'onunhandledrejection', ({ parameters: [e] }) => {\n        const reason = e.reason || 'Empty reason';\n        const stack = computeStackTrace(reason);\n        callback(stack, reason);\n    });\n}\n//# sourceMappingURL=trackRuntimeError.js.map","import { initReportObservable, RawReportType } from '@datadog/browser-core';\nexport function trackReportError(configuration, errorObservable) {\n    const subscription = initReportObservable(configuration, [\n        RawReportType.cspViolation,\n        RawReportType.intervention,\n    ]).subscribe((rawError) => errorObservable.notify(rawError));\n    return {\n        stop: () => {\n            subscription.unsubscribe();\n        },\n    };\n}\n//# sourceMappingURL=trackReportError.js.map","import { ONE_SECOND } from './utils/timeUtils';\nimport { requestIdleCallback } from './requestIdleCallback';\n/**\n * Maximum delay before starting to execute tasks in the queue. We don't want to wait too long\n * before running tasks, as it might hurt reliability (ex: if the user navigates away, we might lose\n * the opportunity to send some data). We also don't want to run tasks too often, as it might hurt\n * performance.\n */\nconst IDLE_CALLBACK_TIMEOUT = ONE_SECOND;\n/**\n * Maximum amount of time allocated to running tasks when a timeout (`IDLE_CALLBACK_TIMEOUT`) is\n * reached. We should not run tasks for too long as it will hurt performance, but we should still\n * run some tasks to avoid postponing them forever.\n *\n * Rational: Running tasks for 30ms every second (IDLE_CALLBACK_TIMEOUT) should be acceptable.\n */\nexport const MAX_EXECUTION_TIME_ON_TIMEOUT = 30;\nexport function createTaskQueue() {\n    const pendingTasks = [];\n    function run(deadline) {\n        let executionTimeRemaining;\n        if (deadline.didTimeout) {\n            const start = performance.now();\n            executionTimeRemaining = () => MAX_EXECUTION_TIME_ON_TIMEOUT - (performance.now() - start);\n        }\n        else {\n            executionTimeRemaining = deadline.timeRemaining.bind(deadline);\n        }\n        while (executionTimeRemaining() > 0 && pendingTasks.length) {\n            pendingTasks.shift()();\n        }\n        if (pendingTasks.length) {\n            scheduleNextRun();\n        }\n    }\n    function scheduleNextRun() {\n        requestIdleCallback(run, { timeout: IDLE_CALLBACK_TIMEOUT });\n    }\n    return {\n        push(task) {\n            if (pendingTasks.push(task) === 1) {\n                scheduleNextRun();\n            }\n        },\n    };\n}\n//# sourceMappingURL=taskQueue.js.map","import { addDuration } from '@datadog/browser-core';\nimport { hasValidResourceEntryDuration, hasValidResourceEntryTimings } from './resourceUtils';\nconst alreadyMatchedEntries = new WeakSet();\n/**\n * Look for corresponding timing in resource timing buffer\n *\n * Observations:\n * - Timing (start, end) are nested inside the request (start, end)\n * - Some timing can be not exactly nested, being off by < 1 ms\n *\n * Strategy:\n * - from valid nested entries (with 1 ms error margin)\n * - filter out timing that were already matched to a request\n * - then, if a single timing match, return the timing\n * - otherwise we can't decide, return undefined\n */\nexport function matchRequestResourceEntry(request) {\n    if (!performance || !('getEntriesByName' in performance)) {\n        return;\n    }\n    const sameNameEntries = performance.getEntriesByName(request.url, 'resource');\n    if (!sameNameEntries.length || !('toJSON' in sameNameEntries[0])) {\n        return;\n    }\n    const candidates = sameNameEntries\n        .filter((entry) => !alreadyMatchedEntries.has(entry))\n        .filter((entry) => hasValidResourceEntryDuration(entry) && hasValidResourceEntryTimings(entry))\n        .filter((entry) => isBetween(entry, request.startClocks.relative, endTime({ startTime: request.startClocks.relative, duration: request.duration })));\n    if (candidates.length === 1) {\n        alreadyMatchedEntries.add(candidates[0]);\n        return candidates[0].toJSON();\n    }\n    return;\n}\nfunction endTime(timing) {\n    return addDuration(timing.startTime, timing.duration);\n}\nfunction isBetween(timing, start, end) {\n    const errorMargin = 1;\n    return timing.startTime >= start - errorMargin && endTime(timing) <= addDuration(end, errorMargin);\n}\n//# sourceMappingURL=matchRequestResourceEntry.js.map","import { dateNow, findCommaSeparatedValue, ONE_MINUTE } from '@datadog/browser-core';\nimport { isCommentNode, isTextNode } from '../../browser/htmlDomUtils';\nexport const INITIAL_DOCUMENT_OUTDATED_TRACE_ID_THRESHOLD = 2 * ONE_MINUTE;\nexport function getDocumentTraceId(document) {\n    const data = getDocumentTraceDataFromMeta(document) || getDocumentTraceDataFromComment(document);\n    if (!data || data.traceTime <= dateNow() - INITIAL_DOCUMENT_OUTDATED_TRACE_ID_THRESHOLD) {\n        return undefined;\n    }\n    return data.traceId;\n}\nexport function getDocumentTraceDataFromMeta(document) {\n    const traceIdMeta = document.querySelector('meta[name=dd-trace-id]');\n    const traceTimeMeta = document.querySelector('meta[name=dd-trace-time]');\n    return createDocumentTraceData(traceIdMeta && traceIdMeta.content, traceTimeMeta && traceTimeMeta.content);\n}\nexport function getDocumentTraceDataFromComment(document) {\n    const comment = findTraceComment(document);\n    if (!comment) {\n        return undefined;\n    }\n    return createDocumentTraceData(findCommaSeparatedValue(comment, 'trace-id'), findCommaSeparatedValue(comment, 'trace-time'));\n}\nexport function createDocumentTraceData(traceId, rawTraceTime) {\n    const traceTime = rawTraceTime && Number(rawTraceTime);\n    if (!traceId || !traceTime) {\n        return undefined;\n    }\n    return {\n        traceId,\n        traceTime,\n    };\n}\nexport function findTraceComment(document) {\n    // 1. Try to find the comment as a direct child of the document\n    // Note: TSLint advises to use a 'for of', but TS doesn't allow to use 'for of' if the iterated\n    // value is not an array or string (here, a NodeList).\n    for (let i = 0; i < document.childNodes.length; i += 1) {\n        const comment = getTraceCommentFromNode(document.childNodes[i]);\n        if (comment) {\n            return comment;\n        }\n    }\n    // 2. If the comment is placed after the </html> tag, but have some space or new lines before or\n    // after, the DOM parser will lift it (and the surrounding text) at the end of the <body> tag.\n    // Try to look for the comment at the end of the <body> by by iterating over its child nodes in\n    // reverse order, stopping if we come across a non-text node.\n    if (document.body) {\n        for (let i = document.body.childNodes.length - 1; i >= 0; i -= 1) {\n            const node = document.body.childNodes[i];\n            const comment = getTraceCommentFromNode(node);\n            if (comment) {\n                return comment;\n            }\n            if (!isTextNode(node)) {\n                break;\n            }\n        }\n    }\n}\nfunction getTraceCommentFromNode(node) {\n    if (node && isCommentNode(node)) {\n        const match = /^\\s*DATADOG;(.*?)\\s*$/.exec(node.data);\n        if (match) {\n            return match[1];\n        }\n    }\n}\n//# sourceMappingURL=getDocumentTraceId.js.map","import { getRelativeTime, isNumber } from '@datadog/browser-core';\nimport { RumPerformanceEntryType, supportPerformanceTimingEvent, } from './performanceObservable';\nexport function getNavigationEntry() {\n    if (supportPerformanceTimingEvent(RumPerformanceEntryType.NAVIGATION)) {\n        const navigationEntry = performance.getEntriesByType(RumPerformanceEntryType.NAVIGATION)[0];\n        if (navigationEntry) {\n            return navigationEntry;\n        }\n    }\n    const timings = computeTimingsFromDeprecatedPerformanceTiming();\n    const entry = {\n        entryType: RumPerformanceEntryType.NAVIGATION,\n        initiatorType: 'navigation',\n        name: window.location.href,\n        startTime: 0,\n        duration: timings.loadEventEnd,\n        decodedBodySize: 0,\n        encodedBodySize: 0,\n        transferSize: 0,\n        workerStart: 0,\n        toJSON: () => ({ ...entry, toJSON: undefined }),\n        ...timings,\n    };\n    return entry;\n}\nexport function computeTimingsFromDeprecatedPerformanceTiming() {\n    const result = {};\n    const timing = performance.timing;\n    for (const key in timing) {\n        if (isNumber(timing[key])) {\n            const numberKey = key;\n            const timingElement = timing[numberKey];\n            result[numberKey] = timingElement === 0 ? 0 : getRelativeTime(timingElement);\n        }\n    }\n    return result;\n}\n//# sourceMappingURL=performanceUtils.js.map","import { runOnReadyState } from '@datadog/browser-core';\nimport { RumPerformanceEntryType } from '../../browser/performanceObservable';\nimport { getDocumentTraceId } from '../tracing/getDocumentTraceId';\nimport { getNavigationEntry } from '../../browser/performanceUtils';\nimport { FAKE_INITIAL_DOCUMENT } from './resourceUtils';\nexport function retrieveInitialDocumentResourceTiming(configuration, callback, getNavigationEntryImpl = getNavigationEntry) {\n    runOnReadyState(configuration, 'interactive', () => {\n        const navigationEntry = getNavigationEntryImpl();\n        const entry = Object.assign(navigationEntry.toJSON(), {\n            entryType: RumPerformanceEntryType.RESOURCE,\n            initiatorType: FAKE_INITIAL_DOCUMENT,\n            // The ResourceTiming duration entry should be `responseEnd - startTime`. With\n            // NavigationTiming entries, `startTime` is always 0, so set it to `responseEnd`.\n            duration: navigationEntry.responseEnd,\n            traceId: getDocumentTraceId(document),\n            toJSON: () => ({ ...entry, toJSON: undefined }),\n        });\n        callback(entry);\n    });\n}\n//# sourceMappingURL=retrieveInitialDocumentResourceTiming.js.map","import { combine, generateUUID, toServerDuration, relativeToClocks, createTaskQueue, } from '@datadog/browser-core';\nimport { RumPerformanceEntryType, createPerformanceObservable, } from '../../browser/performanceObservable';\nimport { createSpanIdentifier } from '../tracing/identifier';\nimport { matchRequestResourceEntry } from './matchRequestResourceEntry';\nimport { computeResourceEntryDetails, computeResourceEntryDuration, computeResourceEntryType, computeResourceEntrySize, computeResourceEntryProtocol, computeResourceEntryDeliveryType, isResourceEntryRequestType, isLongDataUrl, sanitizeDataUrl, } from './resourceUtils';\nimport { retrieveInitialDocumentResourceTiming } from './retrieveInitialDocumentResourceTiming';\nexport function startResourceCollection(lifeCycle, configuration, pageStateHistory, taskQueue = createTaskQueue(), retrieveInitialDocumentResourceTimingImpl = retrieveInitialDocumentResourceTiming) {\n    lifeCycle.subscribe(8 /* LifeCycleEventType.REQUEST_COMPLETED */, (request) => {\n        handleResource(() => processRequest(request, configuration, pageStateHistory));\n    });\n    const performanceResourceSubscription = createPerformanceObservable(configuration, {\n        type: RumPerformanceEntryType.RESOURCE,\n        buffered: true,\n    }).subscribe((entries) => {\n        for (const entry of entries) {\n            if (!isResourceEntryRequestType(entry)) {\n                handleResource(() => processResourceEntry(entry, configuration));\n            }\n        }\n    });\n    retrieveInitialDocumentResourceTimingImpl(configuration, (timing) => {\n        handleResource(() => processResourceEntry(timing, configuration));\n    });\n    function handleResource(computeRawEvent) {\n        taskQueue.push(() => {\n            const rawEvent = computeRawEvent();\n            if (rawEvent) {\n                lifeCycle.notify(12 /* LifeCycleEventType.RAW_RUM_EVENT_COLLECTED */, rawEvent);\n            }\n        });\n    }\n    return {\n        stop: () => {\n            performanceResourceSubscription.unsubscribe();\n        },\n    };\n}\nfunction processRequest(request, configuration, pageStateHistory) {\n    const matchingTiming = matchRequestResourceEntry(request);\n    const startClocks = matchingTiming ? relativeToClocks(matchingTiming.startTime) : request.startClocks;\n    const tracingInfo = computeRequestTracingInfo(request, configuration);\n    if (!configuration.trackResources && !tracingInfo) {\n        return;\n    }\n    const type = request.type === \"xhr\" /* RequestType.XHR */ ? \"xhr\" /* ResourceType.XHR */ : \"fetch\" /* ResourceType.FETCH */;\n    const correspondingTimingOverrides = matchingTiming ? computeResourceEntryMetrics(matchingTiming) : undefined;\n    const duration = matchingTiming\n        ? computeResourceEntryDuration(matchingTiming)\n        : computeRequestDuration(pageStateHistory, startClocks, request.duration);\n    const resourceEvent = combine({\n        date: startClocks.timeStamp,\n        resource: {\n            id: generateUUID(),\n            type,\n            duration: toServerDuration(duration),\n            method: request.method,\n            status_code: request.status,\n            protocol: matchingTiming && computeResourceEntryProtocol(matchingTiming),\n            url: isLongDataUrl(request.url) ? sanitizeDataUrl(request.url) : request.url,\n            delivery_type: matchingTiming && computeResourceEntryDeliveryType(matchingTiming),\n        },\n        type: \"resource\" /* RumEventType.RESOURCE */,\n        _dd: {\n            discarded: !configuration.trackResources,\n        },\n    }, tracingInfo, correspondingTimingOverrides);\n    return {\n        startTime: startClocks.relative,\n        duration,\n        rawRumEvent: resourceEvent,\n        domainContext: {\n            performanceEntry: matchingTiming,\n            xhr: request.xhr,\n            response: request.response,\n            requestInput: request.input,\n            requestInit: request.init,\n            error: request.error,\n            isAborted: request.isAborted,\n            handlingStack: request.handlingStack,\n        },\n    };\n}\nfunction processResourceEntry(entry, configuration) {\n    const startClocks = relativeToClocks(entry.startTime);\n    const tracingInfo = computeResourceEntryTracingInfo(entry, configuration);\n    if (!configuration.trackResources && !tracingInfo) {\n        return;\n    }\n    const type = computeResourceEntryType(entry);\n    const entryMetrics = computeResourceEntryMetrics(entry);\n    const duration = computeResourceEntryDuration(entry);\n    const resourceEvent = combine({\n        date: startClocks.timeStamp,\n        resource: {\n            id: generateUUID(),\n            type,\n            duration: toServerDuration(duration),\n            url: entry.name,\n            status_code: discardZeroStatus(entry.responseStatus),\n            protocol: computeResourceEntryProtocol(entry),\n            delivery_type: computeResourceEntryDeliveryType(entry),\n        },\n        type: \"resource\" /* RumEventType.RESOURCE */,\n        _dd: {\n            discarded: !configuration.trackResources,\n        },\n    }, tracingInfo, entryMetrics);\n    return {\n        startTime: startClocks.relative,\n        duration,\n        rawRumEvent: resourceEvent,\n        domainContext: {\n            performanceEntry: entry,\n        },\n    };\n}\nfunction computeResourceEntryMetrics(entry) {\n    const { renderBlockingStatus } = entry;\n    return {\n        resource: {\n            render_blocking_status: renderBlockingStatus,\n            ...computeResourceEntrySize(entry),\n            ...computeResourceEntryDetails(entry),\n        },\n    };\n}\nfunction computeRequestTracingInfo(request, configuration) {\n    const hasBeenTraced = request.traceSampled && request.traceId && request.spanId;\n    if (!hasBeenTraced) {\n        return undefined;\n    }\n    return {\n        _dd: {\n            span_id: request.spanId.toString(),\n            trace_id: request.traceId.toString(),\n            rule_psr: configuration.rulePsr,\n        },\n    };\n}\nfunction computeResourceEntryTracingInfo(entry, configuration) {\n    const hasBeenTraced = entry.traceId;\n    if (!hasBeenTraced) {\n        return undefined;\n    }\n    return {\n        _dd: {\n            trace_id: entry.traceId,\n            span_id: createSpanIdentifier().toString(),\n            rule_psr: configuration.rulePsr,\n        },\n    };\n}\nfunction computeRequestDuration(pageStateHistory, startClocks, duration) {\n    return !pageStateHistory.wasInPageStateDuringPeriod(\"frozen\" /* PageState.FROZEN */, startClocks.relative, duration)\n        ? duration\n        : undefined;\n}\n/**\n * The status is 0 for cross-origin resources without CORS headers, so the status is meaningless, and we shouldn't report it\n * https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming/responseStatus#cross-origin_response_status_codes\n */\nfunction discardZeroStatus(statusCode) {\n    return statusCode === 0 ? undefined : statusCode;\n}\n//# sourceMappingURL=resourceCollection.js.map","import { combine } from '@datadog/browser-core';\nexport const DISCARDED = 'DISCARDED';\nexport function createHooks() {\n    const callbacks = {};\n    return {\n        register(hookName, callback) {\n            if (!callbacks[hookName]) {\n                callbacks[hookName] = [];\n            }\n            callbacks[hookName].push(callback);\n            return {\n                unregister: () => {\n                    callbacks[hookName] = callbacks[hookName].filter((cb) => cb !== callback);\n                },\n            };\n        },\n        triggerHook(hookName, param) {\n            const hookCallbacks = callbacks[hookName] || [];\n            const results = [];\n            for (const callback of hookCallbacks) {\n                const result = callback(param);\n                if (result === DISCARDED) {\n                    return result;\n                }\n                results.push(result);\n            }\n            return combine(...results);\n        },\n    };\n}\n//# sourceMappingURL=hooks.js.map","import { ONE_MINUTE } from '@datadog/browser-core';\nimport { createPerformanceObservable, RumPerformanceEntryType } from '../../../browser/performanceObservable';\n// Discard FCP timings above a certain delay to avoid incorrect data\n// It happens in some cases like sleep mode or some browser implementations\nexport const FCP_MAXIMUM_DELAY = 10 * ONE_MINUTE;\nexport function trackFirstContentfulPaint(configuration, firstHidden, callback) {\n    const performanceSubscription = createPerformanceObservable(configuration, {\n        type: RumPerformanceEntryType.PAINT,\n        buffered: true,\n    }).subscribe((entries) => {\n        const fcpEntry = entries.find((entry) => entry.name === 'first-contentful-paint' &&\n            entry.startTime < firstHidden.timeStamp &&\n            entry.startTime < FCP_MAXIMUM_DELAY);\n        if (fcpEntry) {\n            callback(fcpEntry.startTime);\n        }\n    });\n    return {\n        stop: performanceSubscription.unsubscribe,\n    };\n}\n//# sourceMappingURL=trackFirstContentfulPaint.js.map","import { ONE_MINUTE, addEventListeners, findLast } from '@datadog/browser-core';\nimport { createPerformanceObservable, RumPerformanceEntryType } from '../../../browser/performanceObservable';\nimport { getSelectorFromElement } from '../../getSelectorFromElement';\n// Discard LCP timings above a certain delay to avoid incorrect data\n// It happens in some cases like sleep mode or some browser implementations\nexport const LCP_MAXIMUM_DELAY = 10 * ONE_MINUTE;\n/**\n * Track the largest contentful paint (LCP) occurring during the initial View.  This can yield\n * multiple values, only the most recent one should be used.\n * Documentation: https://web.dev/lcp/\n * Reference implementation: https://github.com/GoogleChrome/web-vitals/blob/master/src/onLCP.ts\n */\nexport function trackLargestContentfulPaint(configuration, firstHidden, eventTarget, callback) {\n    // Ignore entries that come after the first user interaction. According to the documentation, the\n    // browser should not send largest-contentful-paint entries after a user interact with the page,\n    // but the web-vitals reference implementation uses this as a safeguard.\n    let firstInteractionTimestamp = Infinity;\n    const { stop: stopEventListener } = addEventListeners(configuration, eventTarget, [\"pointerdown\" /* DOM_EVENT.POINTER_DOWN */, \"keydown\" /* DOM_EVENT.KEY_DOWN */], (event) => {\n        firstInteractionTimestamp = event.timeStamp;\n    }, { capture: true, once: true });\n    let biggestLcpSize = 0;\n    const performanceLcpSubscription = createPerformanceObservable(configuration, {\n        type: RumPerformanceEntryType.LARGEST_CONTENTFUL_PAINT,\n        buffered: true,\n    }).subscribe((entries) => {\n        const lcpEntry = findLast(entries, (entry) => entry.entryType === RumPerformanceEntryType.LARGEST_CONTENTFUL_PAINT &&\n            entry.startTime < firstInteractionTimestamp &&\n            entry.startTime < firstHidden.timeStamp &&\n            entry.startTime < LCP_MAXIMUM_DELAY &&\n            // Ensure to get the LCP entry with the biggest size, see\n            // https://bugs.chromium.org/p/chromium/issues/detail?id=1516655\n            entry.size > biggestLcpSize);\n        if (lcpEntry) {\n            let lcpTargetSelector;\n            if (lcpEntry.element) {\n                lcpTargetSelector = getSelectorFromElement(lcpEntry.element, configuration.actionNameAttribute);\n            }\n            callback({\n                value: lcpEntry.startTime,\n                targetSelector: lcpTargetSelector,\n                resourceUrl: computeLcpEntryUrl(lcpEntry),\n            });\n            biggestLcpSize = lcpEntry.size;\n        }\n    });\n    return {\n        stop: () => {\n            stopEventListener();\n            performanceLcpSubscription.unsubscribe();\n        },\n    };\n}\n// The property url report an empty string if the value is not available, we shouldn't report it in this case.\nfunction computeLcpEntryUrl(entry) {\n    return entry.url === '' ? undefined : entry.url;\n}\n//# sourceMappingURL=trackLargestContentfulPaint.js.map","import { addEventListeners, noop } from '@datadog/browser-core';\nimport { supportPerformanceTimingEvent, RumPerformanceEntryType } from '../../../browser/performanceObservable';\nexport function trackFirstHidden(configuration, eventTarget = window) {\n    if (document.visibilityState === 'hidden') {\n        return { timeStamp: 0, stop: noop };\n    }\n    if (supportPerformanceTimingEvent(RumPerformanceEntryType.VISIBILITY_STATE)) {\n        const firstHiddenEntry = performance\n            .getEntriesByType(RumPerformanceEntryType.VISIBILITY_STATE)\n            .find((entry) => entry.name === 'hidden');\n        if (firstHiddenEntry) {\n            return { timeStamp: firstHiddenEntry.startTime, stop: noop };\n        }\n    }\n    let timeStamp = Infinity;\n    const { stop } = addEventListeners(configuration, eventTarget, [\"pagehide\" /* DOM_EVENT.PAGE_HIDE */, \"visibilitychange\" /* DOM_EVENT.VISIBILITY_CHANGE */], (event) => {\n        if (event.type === \"pagehide\" /* DOM_EVENT.PAGE_HIDE */ || document.visibilityState === 'hidden') {\n            timeStamp = event.timeStamp;\n            stop();\n        }\n    }, { capture: true });\n    return {\n        get timeStamp() {\n            return timeStamp;\n        },\n        stop,\n    };\n}\n//# sourceMappingURL=trackFirstHidden.js.map","import { trackFirstContentfulPaint } from './trackFirstContentfulPaint';\nimport { trackFirstInput } from './trackFirstInput';\nimport { trackNavigationTimings } from './trackNavigationTimings';\nimport { trackLargestContentfulPaint } from './trackLargestContentfulPaint';\nimport { trackFirstHidden } from './trackFirstHidden';\nexport function trackInitialViewMetrics(configuration, setLoadEvent, scheduleViewUpdate) {\n    const initialViewMetrics = {};\n    const { stop: stopNavigationTracking } = trackNavigationTimings(configuration, (navigationTimings) => {\n        setLoadEvent(navigationTimings.loadEvent);\n        initialViewMetrics.navigationTimings = navigationTimings;\n        scheduleViewUpdate();\n    });\n    const firstHidden = trackFirstHidden(configuration);\n    const { stop: stopFCPTracking } = trackFirstContentfulPaint(configuration, firstHidden, (firstContentfulPaint) => {\n        initialViewMetrics.firstContentfulPaint = firstContentfulPaint;\n        scheduleViewUpdate();\n    });\n    const { stop: stopLCPTracking } = trackLargestContentfulPaint(configuration, firstHidden, window, (largestContentfulPaint) => {\n        initialViewMetrics.largestContentfulPaint = largestContentfulPaint;\n        scheduleViewUpdate();\n    });\n    const { stop: stopFIDTracking } = trackFirstInput(configuration, firstHidden, (firstInput) => {\n        initialViewMetrics.firstInput = firstInput;\n        scheduleViewUpdate();\n    });\n    function stop() {\n        stopNavigationTracking();\n        stopFCPTracking();\n        stopLCPTracking();\n        stopFIDTracking();\n        firstHidden.stop();\n    }\n    return {\n        stop,\n        initialViewMetrics,\n    };\n}\n//# sourceMappingURL=trackInitialViewMetrics.js.map","import { setTimeout, relativeNow, runOnReadyState, clearTimeout } from '@datadog/browser-core';\nimport { getNavigationEntry } from '../../../browser/performanceUtils';\nexport function trackNavigationTimings(configuration, callback, getNavigationEntryImpl = getNavigationEntry) {\n    return waitAfterLoadEvent(configuration, () => {\n        const entry = getNavigationEntryImpl();\n        if (!isIncompleteNavigation(entry)) {\n            callback(processNavigationEntry(entry));\n        }\n    });\n}\nfunction processNavigationEntry(entry) {\n    return {\n        domComplete: entry.domComplete,\n        domContentLoaded: entry.domContentLoadedEventEnd,\n        domInteractive: entry.domInteractive,\n        loadEvent: entry.loadEventEnd,\n        // In some cases the value reported is negative or is larger\n        // than the current page time. Ignore these cases:\n        // https://github.com/GoogleChrome/web-vitals/issues/137\n        // https://github.com/GoogleChrome/web-vitals/issues/162\n        firstByte: entry.responseStart >= 0 && entry.responseStart <= relativeNow() ? entry.responseStart : undefined,\n    };\n}\nfunction isIncompleteNavigation(entry) {\n    return entry.loadEventEnd <= 0;\n}\nfunction waitAfterLoadEvent(configuration, callback) {\n    let timeoutId;\n    const { stop: stopOnReadyState } = runOnReadyState(configuration, 'complete', () => {\n        // Invoke the callback a bit after the actual load event, so the \"loadEventEnd\" timing is accurate\n        timeoutId = setTimeout(() => callback());\n    });\n    return {\n        stop: () => {\n            stopOnReadyState();\n            clearTimeout(timeoutId);\n        },\n    };\n}\n//# sourceMappingURL=trackNavigationTimings.js.map","import { elapsed } from '@datadog/browser-core';\nimport { isElementNode } from '../../../browser/htmlDomUtils';\nimport { createPerformanceObservable, RumPerformanceEntryType } from '../../../browser/performanceObservable';\nimport { getSelectorFromElement } from '../../getSelectorFromElement';\n/**\n * Track the first input occurring during the initial View to return:\n * - First Input Delay\n * - First Input Time\n * Callback is called at most one time.\n * Documentation: https://web.dev/fid/\n * Reference implementation: https://github.com/GoogleChrome/web-vitals/blob/master/src/getFID.ts\n */\nexport function trackFirstInput(configuration, firstHidden, callback) {\n    const performanceFirstInputSubscription = createPerformanceObservable(configuration, {\n        type: RumPerformanceEntryType.FIRST_INPUT,\n        buffered: true,\n    }).subscribe((entries) => {\n        const firstInputEntry = entries.find((entry) => entry.startTime < firstHidden.timeStamp);\n        if (firstInputEntry) {\n            const firstInputDelay = elapsed(firstInputEntry.startTime, firstInputEntry.processingStart);\n            let firstInputTargetSelector;\n            if (firstInputEntry.target && isElementNode(firstInputEntry.target)) {\n                firstInputTargetSelector = getSelectorFromElement(firstInputEntry.target, configuration.actionNameAttribute);\n            }\n            callback({\n                // Ensure firstInputDelay to be positive, see\n                // https://bugs.chromium.org/p/chromium/issues/detail?id=1185815\n                delay: firstInputDelay >= 0 ? firstInputDelay : 0,\n                time: firstInputEntry.startTime,\n                targetSelector: firstInputTargetSelector,\n            });\n        }\n    });\n    return {\n        stop: () => {\n            performanceFirstInputSubscription.unsubscribe();\n        },\n    };\n}\n//# sourceMappingURL=trackFirstInput.js.map","/**\n * Calculates the area of a rectangle given its width and height\n */\nconst calculateArea = (width, height) => width * height;\n/**\n * Calculates the intersection area between two rectangles\n */\nconst calculateIntersectionArea = (rect1, rect2) => {\n    const left = Math.max(rect1.left, rect2.left);\n    const top = Math.max(rect1.top, rect2.top);\n    const right = Math.min(rect1.right, rect2.right);\n    const bottom = Math.min(rect1.bottom, rect2.bottom);\n    if (left >= right || top >= bottom) {\n        return 0;\n    }\n    return calculateArea(right - left, bottom - top);\n};\n/**\n * Calculates the total impacted area of a layout shift source\n * This is the sum of the previous and current areas minus their intersection\n */\nexport const getClsAttributionImpactedArea = (source) => {\n    const previousArea = calculateArea(source.previousRect.width, source.previousRect.height);\n    const currentArea = calculateArea(source.currentRect.width, source.currentRect.height);\n    const intersectionArea = calculateIntersectionArea(source.previousRect, source.currentRect);\n    return previousArea + currentArea - intersectionArea;\n};\n//# sourceMappingURL=getClsAttributionImpactedArea.js.map","import { round, ONE_SECOND, noop, elapsed } from '@datadog/browser-core';\nimport { isElementNode } from '../../../browser/htmlDomUtils';\nimport { supportPerformanceTimingEvent, RumPerformanceEntryType, createPerformanceObservable, } from '../../../browser/performanceObservable';\nimport { getSelectorFromElement } from '../../getSelectorFromElement';\nimport { getClsAttributionImpactedArea } from './getClsAttributionImpactedArea';\n/**\n * Track the cumulative layout shifts (CLS).\n * Layout shifts are grouped into session windows.\n * The minimum gap between session windows is 1 second.\n * The maximum duration of a session window is 5 second.\n * The session window layout shift value is the sum of layout shifts inside it.\n * The CLS value is the max of session windows values.\n *\n * This yields a new value whenever the CLS value is updated (a higher session window value is computed).\n *\n * See isLayoutShiftSupported to check for browser support.\n *\n * Documentation:\n * https://web.dev/cls/\n * https://web.dev/evolving-cls/\n * Reference implementation: https://github.com/GoogleChrome/web-vitals/blob/master/src/getCLS.ts\n */\nexport function trackCumulativeLayoutShift(configuration, viewStart, callback) {\n    if (!isLayoutShiftSupported()) {\n        return {\n            stop: noop,\n        };\n    }\n    let maxClsValue = 0;\n    let biggestShift;\n    // if no layout shift happen the value should be reported as 0\n    callback({\n        value: 0,\n    });\n    const slidingWindow = slidingSessionWindow();\n    const performanceSubscription = createPerformanceObservable(configuration, {\n        type: RumPerformanceEntryType.LAYOUT_SHIFT,\n        buffered: true,\n    }).subscribe((entries) => {\n        var _a;\n        for (const entry of entries) {\n            if (entry.hadRecentInput || entry.startTime < viewStart) {\n                continue;\n            }\n            const { cumulatedValue, isMaxValue } = slidingWindow.update(entry);\n            if (isMaxValue) {\n                const attribution = getTopImpactedElement(entry.sources);\n                biggestShift = {\n                    target: (attribution === null || attribution === void 0 ? void 0 : attribution.node) ? new WeakRef(attribution.node) : undefined,\n                    time: elapsed(viewStart, entry.startTime),\n                    previousRect: attribution === null || attribution === void 0 ? void 0 : attribution.previousRect,\n                    currentRect: attribution === null || attribution === void 0 ? void 0 : attribution.currentRect,\n                    devicePixelRatio: window.devicePixelRatio,\n                };\n            }\n            if (cumulatedValue > maxClsValue) {\n                maxClsValue = cumulatedValue;\n                const target = (_a = biggestShift === null || biggestShift === void 0 ? void 0 : biggestShift.target) === null || _a === void 0 ? void 0 : _a.deref();\n                callback({\n                    value: round(maxClsValue, 4),\n                    targetSelector: target && getSelectorFromElement(target, configuration.actionNameAttribute),\n                    time: biggestShift === null || biggestShift === void 0 ? void 0 : biggestShift.time,\n                    previousRect: (biggestShift === null || biggestShift === void 0 ? void 0 : biggestShift.previousRect) ? asRumRect(biggestShift.previousRect) : undefined,\n                    currentRect: (biggestShift === null || biggestShift === void 0 ? void 0 : biggestShift.currentRect) ? asRumRect(biggestShift.currentRect) : undefined,\n                    devicePixelRatio: biggestShift === null || biggestShift === void 0 ? void 0 : biggestShift.devicePixelRatio,\n                });\n            }\n        }\n    });\n    return {\n        stop: () => {\n            performanceSubscription.unsubscribe();\n        },\n    };\n}\nfunction getTopImpactedElement(sources) {\n    let topImpactedSource;\n    for (const source of sources) {\n        if (source.node && isElementNode(source.node)) {\n            const currentImpactedArea = getClsAttributionImpactedArea(source);\n            if (!topImpactedSource || getClsAttributionImpactedArea(topImpactedSource) < currentImpactedArea) {\n                topImpactedSource = source;\n            }\n        }\n    }\n    return topImpactedSource;\n}\nfunction asRumRect({ x, y, width, height }) {\n    return { x, y, width, height };\n}\nexport const MAX_WINDOW_DURATION = 5 * ONE_SECOND;\nconst MAX_UPDATE_GAP = ONE_SECOND;\nfunction slidingSessionWindow() {\n    let cumulatedValue = 0;\n    let startTime;\n    let endTime;\n    let maxValue = 0;\n    return {\n        update: (entry) => {\n            const shouldCreateNewWindow = startTime === undefined ||\n                entry.startTime - endTime >= MAX_UPDATE_GAP ||\n                entry.startTime - startTime >= MAX_WINDOW_DURATION;\n            let isMaxValue;\n            if (shouldCreateNewWindow) {\n                startTime = endTime = entry.startTime;\n                maxValue = cumulatedValue = entry.value;\n                isMaxValue = true;\n            }\n            else {\n                cumulatedValue += entry.value;\n                endTime = entry.startTime;\n                isMaxValue = entry.value > maxValue;\n                if (isMaxValue) {\n                    maxValue = entry.value;\n                }\n            }\n            return {\n                cumulatedValue,\n                isMaxValue,\n            };\n        },\n    };\n}\n/**\n * Check whether `layout-shift` is supported by the browser.\n */\nexport function isLayoutShiftSupported() {\n    return supportPerformanceTimingEvent(RumPerformanceEntryType.LAYOUT_SHIFT) && 'WeakRef' in window;\n}\n//# sourceMappingURL=trackCumulativeLayoutShift.js.map","/**\n * performance.interactionCount polyfill\n *\n * The interactionCount is an integer which counts the total number of distinct user interactions,\n * for which there was a unique interactionId.\n *\n * The interactionCount polyfill is an estimate based on a convention specific to Chrome. Cf: https://github.com/GoogleChrome/web-vitals/pull/213\n * This is currently not an issue as the polyfill is only used for INP which is currently only supported on Chrome.\n * Hopefully when/if other browsers will support INP, they will also implement performance.interactionCount at the same time, so we won't need that polyfill.\n *\n * Reference implementation: https://github.com/GoogleChrome/web-vitals/blob/main/src/lib/polyfills/interactionCountPolyfill.ts\n */\nimport { monitor } from '@datadog/browser-core';\nlet observer;\nlet interactionCountEstimate = 0;\nlet minKnownInteractionId = Infinity;\nlet maxKnownInteractionId = 0;\nexport function initInteractionCountPolyfill() {\n    if ('interactionCount' in performance || observer) {\n        return;\n    }\n    observer = new window.PerformanceObserver(monitor((entries) => {\n        entries.getEntries().forEach((e) => {\n            const entry = e;\n            if (entry.interactionId) {\n                minKnownInteractionId = Math.min(minKnownInteractionId, entry.interactionId);\n                maxKnownInteractionId = Math.max(maxKnownInteractionId, entry.interactionId);\n                interactionCountEstimate = (maxKnownInteractionId - minKnownInteractionId) / 7 + 1;\n            }\n        });\n    }));\n    observer.observe({ type: 'event', buffered: true, durationThreshold: 0 });\n}\n/**\n * Returns the `interactionCount` value using the native API (if available)\n * or the polyfill estimate in this module.\n */\nexport const getInteractionCount = () => observer ? interactionCountEstimate : window.performance.interactionCount || 0;\n//# sourceMappingURL=interactionCountPolyfill.js.map","import { elapsed, noop, ONE_MINUTE } from '@datadog/browser-core';\nimport { createPerformanceObservable, RumPerformanceEntryType, supportPerformanceTimingEvent, } from '../../../browser/performanceObservable';\nimport { getSelectorFromElement } from '../../getSelectorFromElement';\nimport { isElementNode } from '../../../browser/htmlDomUtils';\nimport { getInteractionSelector } from '../../action/interactionSelectorCache';\nimport { getInteractionCount, initInteractionCountPolyfill } from './interactionCountPolyfill';\n// Arbitrary value to prevent unnecessary memory usage on views with lots of interactions.\nconst MAX_INTERACTION_ENTRIES = 10;\n// Arbitrary value to cap INP outliers\nexport const MAX_INP_VALUE = (1 * ONE_MINUTE);\n/**\n * Track the interaction to next paint (INP).\n * To avoid outliers, return the p98 worst interaction of the view.\n * Documentation: https://web.dev/inp/\n * Reference implementation: https://github.com/GoogleChrome/web-vitals/blob/main/src/onINP.ts\n */\nexport function trackInteractionToNextPaint(configuration, viewStart, viewLoadingType) {\n    if (!isInteractionToNextPaintSupported()) {\n        return {\n            getInteractionToNextPaint: () => undefined,\n            setViewEnd: noop,\n            stop: noop,\n        };\n    }\n    const { getViewInteractionCount, stopViewInteractionCount } = trackViewInteractionCount(viewLoadingType);\n    let viewEnd = Infinity;\n    const longestInteractions = trackLongestInteractions(getViewInteractionCount);\n    let interactionToNextPaint = -1;\n    let interactionToNextPaintTargetSelector;\n    let interactionToNextPaintStartTime;\n    function handleEntries(entries) {\n        for (const entry of entries) {\n            if (entry.interactionId &&\n                // Check the entry start time is inside the view bounds because some view interactions can be reported after the view end (if long duration).\n                entry.startTime >= viewStart &&\n                entry.startTime <= viewEnd) {\n                longestInteractions.process(entry);\n            }\n        }\n        const newInteraction = longestInteractions.estimateP98Interaction();\n        if (newInteraction && newInteraction.duration !== interactionToNextPaint) {\n            interactionToNextPaint = newInteraction.duration;\n            interactionToNextPaintStartTime = elapsed(viewStart, newInteraction.startTime);\n            interactionToNextPaintTargetSelector = getInteractionSelector(newInteraction.startTime);\n            if (!interactionToNextPaintTargetSelector && newInteraction.target && isElementNode(newInteraction.target)) {\n                interactionToNextPaintTargetSelector = getSelectorFromElement(newInteraction.target, configuration.actionNameAttribute);\n            }\n        }\n    }\n    const firstInputSubscription = createPerformanceObservable(configuration, {\n        type: RumPerformanceEntryType.FIRST_INPUT,\n        buffered: true,\n    }).subscribe(handleEntries);\n    const eventSubscription = createPerformanceObservable(configuration, {\n        type: RumPerformanceEntryType.EVENT,\n        // durationThreshold only impact PerformanceEventTiming entries used for INP computation which requires a threshold at 40 (default is 104ms)\n        // cf: https://github.com/GoogleChrome/web-vitals/blob/3806160ffbc93c3c4abf210a167b81228172b31c/src/onINP.ts#L202-L210\n        durationThreshold: 40,\n        buffered: true,\n    }).subscribe(handleEntries);\n    return {\n        getInteractionToNextPaint: () => {\n            // If no INP duration where captured because of the performanceObserver 40ms threshold\n            // but the view interaction count > 0 then report 0\n            if (interactionToNextPaint >= 0) {\n                return {\n                    value: Math.min(interactionToNextPaint, MAX_INP_VALUE),\n                    targetSelector: interactionToNextPaintTargetSelector,\n                    time: interactionToNextPaintStartTime,\n                };\n            }\n            else if (getViewInteractionCount()) {\n                return {\n                    value: 0,\n                };\n            }\n        },\n        setViewEnd: (viewEndTime) => {\n            viewEnd = viewEndTime;\n            stopViewInteractionCount();\n        },\n        stop: () => {\n            eventSubscription.unsubscribe();\n            firstInputSubscription.unsubscribe();\n        },\n    };\n}\nfunction trackLongestInteractions(getViewInteractionCount) {\n    const longestInteractions = [];\n    function sortAndTrimLongestInteractions() {\n        longestInteractions.sort((a, b) => b.duration - a.duration).splice(MAX_INTERACTION_ENTRIES);\n    }\n    return {\n        /**\n         * Process the performance entry:\n         * - if its duration is long enough, add the performance entry to the list of worst interactions\n         * - if an entry with the same interaction id exists and its duration is lower than the new one, then replace it in the list of worst interactions\n         */\n        process(entry) {\n            const interactionIndex = longestInteractions.findIndex((interaction) => entry.interactionId === interaction.interactionId);\n            const minLongestInteraction = longestInteractions[longestInteractions.length - 1];\n            if (interactionIndex !== -1) {\n                if (entry.duration > longestInteractions[interactionIndex].duration) {\n                    longestInteractions[interactionIndex] = entry;\n                    sortAndTrimLongestInteractions();\n                }\n            }\n            else if (longestInteractions.length < MAX_INTERACTION_ENTRIES ||\n                entry.duration > minLongestInteraction.duration) {\n                longestInteractions.push(entry);\n                sortAndTrimLongestInteractions();\n            }\n        },\n        /**\n         * Compute the p98 longest interaction.\n         * For better performance the computation is based on 10 longest interactions and the interaction count of the current view.\n         */\n        estimateP98Interaction() {\n            const interactionIndex = Math.min(longestInteractions.length - 1, Math.floor(getViewInteractionCount() / 50));\n            return longestInteractions[interactionIndex];\n        },\n    };\n}\nexport function trackViewInteractionCount(viewLoadingType) {\n    initInteractionCountPolyfill();\n    const previousInteractionCount = viewLoadingType === \"initial_load\" /* ViewLoadingType.INITIAL_LOAD */ ? 0 : getInteractionCount();\n    let state = { stopped: false };\n    function computeViewInteractionCount() {\n        return getInteractionCount() - previousInteractionCount;\n    }\n    return {\n        getViewInteractionCount: () => {\n            if (state.stopped) {\n                return state.interactionCount;\n            }\n            return computeViewInteractionCount();\n        },\n        stopViewInteractionCount: () => {\n            state = { stopped: true, interactionCount: computeViewInteractionCount() };\n        },\n    };\n}\nexport function isInteractionToNextPaintSupported() {\n    return (supportPerformanceTimingEvent(RumPerformanceEntryType.EVENT) &&\n        window.PerformanceEventTiming &&\n        'interactionId' in PerformanceEventTiming.prototype);\n}\n//# sourceMappingURL=trackInteractionToNextPaint.js.map","export function getScrollX() {\n    let scrollX;\n    const visual = window.visualViewport;\n    if (visual) {\n        scrollX = visual.pageLeft - visual.offsetLeft;\n    }\n    else if (window.scrollX !== undefined) {\n        scrollX = window.scrollX;\n    }\n    else {\n        scrollX = window.pageXOffset || 0;\n    }\n    return Math.round(scrollX);\n}\nexport function getScrollY() {\n    let scrollY;\n    const visual = window.visualViewport;\n    if (visual) {\n        scrollY = visual.pageTop - visual.offsetTop;\n    }\n    else if (window.scrollY !== undefined) {\n        scrollY = window.scrollY;\n    }\n    else {\n        scrollY = window.pageYOffset || 0;\n    }\n    return Math.round(scrollY);\n}\n//# sourceMappingURL=scroll.js.map","import { Observable, throttle, addEventListener } from '@datadog/browser-core';\nlet viewportObservable;\nexport function initViewportObservable(configuration) {\n    if (!viewportObservable) {\n        viewportObservable = createViewportObservable(configuration);\n    }\n    return viewportObservable;\n}\nexport function createViewportObservable(configuration) {\n    return new Observable((observable) => {\n        const { throttled: updateDimension } = throttle(() => {\n            observable.notify(getViewportDimension());\n        }, 200);\n        return addEventListener(configuration, window, \"resize\" /* DOM_EVENT.RESIZE */, updateDimension, { capture: true, passive: true })\n            .stop;\n    });\n}\n// excludes the width and height of any rendered classic scrollbar that is fixed to the visual viewport\nexport function getViewportDimension() {\n    const visual = window.visualViewport;\n    if (visual) {\n        return {\n            width: Number(visual.width * visual.scale),\n            height: Number(visual.height * visual.scale),\n        };\n    }\n    return {\n        width: Number(window.innerWidth || 0),\n        height: Number(window.innerHeight || 0),\n    };\n}\n//# sourceMappingURL=viewportObservable.js.map","import { Observable, ONE_SECOND, elapsed, relativeNow, throttle, addEventListener, monitor, } from '@datadog/browser-core';\nimport { getScrollY } from '../../../browser/scroll';\nimport { getViewportDimension } from '../../../browser/viewportObservable';\n/** Arbitrary scroll throttle duration */\nexport const THROTTLE_SCROLL_DURATION = ONE_SECOND;\nexport function trackScrollMetrics(configuration, viewStart, callback, scrollValues = createScrollValuesObservable(configuration)) {\n    let maxScrollDepth = 0;\n    let maxScrollHeight = 0;\n    let maxScrollHeightTime = 0;\n    const subscription = scrollValues.subscribe(({ scrollDepth, scrollTop, scrollHeight }) => {\n        let shouldUpdate = false;\n        if (scrollDepth > maxScrollDepth) {\n            maxScrollDepth = scrollDepth;\n            shouldUpdate = true;\n        }\n        if (scrollHeight > maxScrollHeight) {\n            maxScrollHeight = scrollHeight;\n            const now = relativeNow();\n            maxScrollHeightTime = elapsed(viewStart.relative, now);\n            shouldUpdate = true;\n        }\n        if (shouldUpdate) {\n            callback({\n                maxDepth: Math.min(maxScrollDepth, maxScrollHeight),\n                maxDepthScrollTop: scrollTop,\n                maxScrollHeight,\n                maxScrollHeightTime,\n            });\n        }\n    });\n    return {\n        stop: () => subscription.unsubscribe(),\n    };\n}\nexport function computeScrollValues() {\n    const scrollTop = getScrollY();\n    const { height } = getViewportDimension();\n    const scrollHeight = Math.round((document.scrollingElement || document.documentElement).scrollHeight);\n    const scrollDepth = Math.round(height + scrollTop);\n    return {\n        scrollHeight,\n        scrollDepth,\n        scrollTop,\n    };\n}\nexport function createScrollValuesObservable(configuration, throttleDuration = THROTTLE_SCROLL_DURATION) {\n    return new Observable((observable) => {\n        function notify() {\n            observable.notify(computeScrollValues());\n        }\n        if (window.ResizeObserver) {\n            const throttledNotify = throttle(notify, throttleDuration, {\n                leading: false,\n                trailing: true,\n            });\n            const observerTarget = document.scrollingElement || document.documentElement;\n            const resizeObserver = new ResizeObserver(monitor(throttledNotify.throttled));\n            if (observerTarget) {\n                resizeObserver.observe(observerTarget);\n            }\n            const eventListener = addEventListener(configuration, window, \"scroll\" /* DOM_EVENT.SCROLL */, throttledNotify.throttled, {\n                passive: true,\n            });\n            return () => {\n                throttledNotify.cancel();\n                resizeObserver.disconnect();\n                eventListener.stop();\n            };\n        }\n    });\n}\n//# sourceMappingURL=trackScrollMetrics.js.map","import { trackCumulativeLayoutShift } from './trackCumulativeLayoutShift';\nimport { trackInteractionToNextPaint } from './trackInteractionToNextPaint';\nimport { trackLoadingTime } from './trackLoadingTime';\nimport { trackScrollMetrics } from './trackScrollMetrics';\nexport function trackCommonViewMetrics(lifeCycle, domMutationObservable, windowOpenObservable, configuration, scheduleViewUpdate, loadingType, viewStart) {\n    const commonViewMetrics = {};\n    const { stop: stopLoadingTimeTracking, setLoadEvent } = trackLoadingTime(lifeCycle, domMutationObservable, windowOpenObservable, configuration, loadingType, viewStart, (newLoadingTime) => {\n        commonViewMetrics.loadingTime = newLoadingTime;\n        scheduleViewUpdate();\n    });\n    const { stop: stopScrollMetricsTracking } = trackScrollMetrics(configuration, viewStart, (newScrollMetrics) => {\n        commonViewMetrics.scroll = newScrollMetrics;\n    });\n    const { stop: stopCLSTracking } = trackCumulativeLayoutShift(configuration, viewStart.relative, (cumulativeLayoutShift) => {\n        commonViewMetrics.cumulativeLayoutShift = cumulativeLayoutShift;\n        scheduleViewUpdate();\n    });\n    const { stop: stopINPTracking, getInteractionToNextPaint, setViewEnd, } = trackInteractionToNextPaint(configuration, viewStart.relative, loadingType);\n    return {\n        stop: () => {\n            stopLoadingTimeTracking();\n            stopCLSTracking();\n            stopScrollMetricsTracking();\n        },\n        stopINPTracking,\n        setLoadEvent,\n        setViewEnd,\n        getCommonViewMetrics: () => {\n            commonViewMetrics.interactionToNextPaint = getInteractionToNextPaint();\n            return commonViewMetrics;\n        },\n    };\n}\n//# sourceMappingURL=trackCommonViewMetrics.js.map","import { elapsed } from '@datadog/browser-core';\nimport { waitPageActivityEnd } from '../../waitPageActivityEnd';\nimport { trackFirstHidden } from './trackFirstHidden';\nexport function trackLoadingTime(lifeCycle, domMutationObservable, windowOpenObservable, configuration, loadType, viewStart, callback) {\n    let isWaitingForLoadEvent = loadType === \"initial_load\" /* ViewLoadingType.INITIAL_LOAD */;\n    let isWaitingForActivityLoadingTime = true;\n    const loadingTimeCandidates = [];\n    const firstHidden = trackFirstHidden(configuration);\n    function invokeCallbackIfAllCandidatesAreReceived() {\n        if (!isWaitingForActivityLoadingTime && !isWaitingForLoadEvent && loadingTimeCandidates.length > 0) {\n            const loadingTime = Math.max(...loadingTimeCandidates);\n            if (loadingTime < firstHidden.timeStamp) {\n                callback(loadingTime);\n            }\n        }\n    }\n    const { stop } = waitPageActivityEnd(lifeCycle, domMutationObservable, windowOpenObservable, configuration, (event) => {\n        if (isWaitingForActivityLoadingTime) {\n            isWaitingForActivityLoadingTime = false;\n            if (event.hadActivity) {\n                loadingTimeCandidates.push(elapsed(viewStart.timeStamp, event.end));\n            }\n            invokeCallbackIfAllCandidatesAreReceived();\n        }\n    });\n    return {\n        stop: () => {\n            stop();\n            firstHidden.stop();\n        },\n        setLoadEvent: (loadEvent) => {\n            if (isWaitingForLoadEvent) {\n                isWaitingForLoadEvent = false;\n                loadingTimeCandidates.push(loadEvent);\n                invokeCallbackIfAllCandidatesAreReceived();\n            }\n        },\n    };\n}\n//# sourceMappingURL=trackLoadingTime.js.map","import { noop, PageExitReason, shallowClone, elapsed, generateUUID, ONE_MINUTE, throttle, clocksNow, clocksOrigin, timeStampNow, display, looksLikeRelativeTime, setInterval, clearInterval, setTimeout, Observable, createContextManager, } from '@datadog/browser-core';\nimport { trackViewEventCounts } from './trackViewEventCounts';\nimport { trackInitialViewMetrics } from './viewMetrics/trackInitialViewMetrics';\nimport { trackCommonViewMetrics } from './viewMetrics/trackCommonViewMetrics';\nexport const THROTTLE_VIEW_UPDATE_PERIOD = 3000;\nexport const SESSION_KEEP_ALIVE_INTERVAL = 5 * ONE_MINUTE;\n// Some events or metrics can be captured after the end of the view. To avoid missing those;\n// an arbitrary delay is added for stopping their tracking after the view ends.\n//\n// Ideally, we would not stop and keep tracking events or metrics until the end of the session.\n// But this might have a small performance impact if there are many many views.\n// So let's have a fairly short delay improving the situation in most cases and avoid impacting performances too much.\nexport const KEEP_TRACKING_AFTER_VIEW_DELAY = 5 * ONE_MINUTE;\nexport function trackViews(location, lifeCycle, domMutationObservable, windowOpenObservable, configuration, locationChangeObservable, areViewsTrackedAutomatically, initialViewOptions) {\n    const activeViews = new Set();\n    let currentView = startNewView(\"initial_load\" /* ViewLoadingType.INITIAL_LOAD */, clocksOrigin(), initialViewOptions);\n    startViewLifeCycle();\n    let locationChangeSubscription;\n    if (areViewsTrackedAutomatically) {\n        locationChangeSubscription = renewViewOnLocationChange(locationChangeObservable);\n    }\n    function startNewView(loadingType, startClocks, viewOptions) {\n        const newlyCreatedView = newView(lifeCycle, domMutationObservable, windowOpenObservable, configuration, location, loadingType, startClocks, viewOptions);\n        activeViews.add(newlyCreatedView);\n        newlyCreatedView.stopObservable.subscribe(() => {\n            activeViews.delete(newlyCreatedView);\n        });\n        return newlyCreatedView;\n    }\n    function startViewLifeCycle() {\n        lifeCycle.subscribe(10 /* LifeCycleEventType.SESSION_RENEWED */, () => {\n            // Renew view on session renewal\n            currentView = startNewView(\"route_change\" /* ViewLoadingType.ROUTE_CHANGE */, undefined, {\n                name: currentView.name,\n                service: currentView.service,\n                version: currentView.version,\n                context: currentView.contextManager.getContext(),\n            });\n        });\n        lifeCycle.subscribe(9 /* LifeCycleEventType.SESSION_EXPIRED */, () => {\n            currentView.end({ sessionIsActive: false });\n        });\n    }\n    function renewViewOnLocationChange(locationChangeObservable) {\n        return locationChangeObservable.subscribe(({ oldLocation, newLocation }) => {\n            if (areDifferentLocation(oldLocation, newLocation)) {\n                currentView.end();\n                currentView = startNewView(\"route_change\" /* ViewLoadingType.ROUTE_CHANGE */);\n            }\n        });\n    }\n    return {\n        addTiming: (name, time = timeStampNow()) => {\n            currentView.addTiming(name, time);\n        },\n        startView: (options, startClocks) => {\n            currentView.end({ endClocks: startClocks });\n            currentView = startNewView(\"route_change\" /* ViewLoadingType.ROUTE_CHANGE */, startClocks, options);\n        },\n        setViewContext: (context) => {\n            currentView.contextManager.setContext(context);\n        },\n        setViewContextProperty: (key, value) => {\n            currentView.contextManager.setContextProperty(key, value);\n        },\n        setViewName: (name) => {\n            currentView.setViewName(name);\n        },\n        getViewContext: () => currentView.contextManager.getContext(),\n        stop: () => {\n            if (locationChangeSubscription) {\n                locationChangeSubscription.unsubscribe();\n            }\n            currentView.end();\n            activeViews.forEach((view) => view.stop());\n        },\n    };\n}\nfunction newView(lifeCycle, domMutationObservable, windowOpenObservable, configuration, initialLocation, loadingType, startClocks = clocksNow(), viewOptions) {\n    // Setup initial values\n    const id = generateUUID();\n    const stopObservable = new Observable();\n    const customTimings = {};\n    let documentVersion = 0;\n    let endClocks;\n    const location = shallowClone(initialLocation);\n    const contextManager = createContextManager();\n    let sessionIsActive = true;\n    let name = viewOptions === null || viewOptions === void 0 ? void 0 : viewOptions.name;\n    const service = (viewOptions === null || viewOptions === void 0 ? void 0 : viewOptions.service) || configuration.service;\n    const version = (viewOptions === null || viewOptions === void 0 ? void 0 : viewOptions.version) || configuration.version;\n    const context = viewOptions === null || viewOptions === void 0 ? void 0 : viewOptions.context;\n    if (context) {\n        contextManager.setContext(context);\n    }\n    const viewCreatedEvent = {\n        id,\n        name,\n        startClocks,\n        service,\n        version,\n        context,\n    };\n    lifeCycle.notify(1 /* LifeCycleEventType.BEFORE_VIEW_CREATED */, viewCreatedEvent);\n    lifeCycle.notify(2 /* LifeCycleEventType.VIEW_CREATED */, viewCreatedEvent);\n    // Update the view every time the measures are changing\n    const { throttled, cancel: cancelScheduleViewUpdate } = throttle(triggerViewUpdate, THROTTLE_VIEW_UPDATE_PERIOD, {\n        leading: false,\n    });\n    const { setLoadEvent, setViewEnd, stop: stopCommonViewMetricsTracking, stopINPTracking, getCommonViewMetrics, } = trackCommonViewMetrics(lifeCycle, domMutationObservable, windowOpenObservable, configuration, scheduleViewUpdate, loadingType, startClocks);\n    const { stop: stopInitialViewMetricsTracking, initialViewMetrics } = loadingType === \"initial_load\" /* ViewLoadingType.INITIAL_LOAD */\n        ? trackInitialViewMetrics(configuration, setLoadEvent, scheduleViewUpdate)\n        : { stop: noop, initialViewMetrics: {} };\n    const { stop: stopEventCountsTracking, eventCounts } = trackViewEventCounts(lifeCycle, id, scheduleViewUpdate);\n    // Session keep alive\n    const keepAliveIntervalId = setInterval(triggerViewUpdate, SESSION_KEEP_ALIVE_INTERVAL);\n    const pageMayExitSubscription = lifeCycle.subscribe(11 /* LifeCycleEventType.PAGE_MAY_EXIT */, (pageMayExitEvent) => {\n        if (pageMayExitEvent.reason === PageExitReason.UNLOADING) {\n            triggerViewUpdate();\n        }\n    });\n    // Initial view update\n    triggerViewUpdate();\n    // View context update should always be throttled\n    contextManager.changeObservable.subscribe(scheduleViewUpdate);\n    function triggerBeforeViewUpdate() {\n        lifeCycle.notify(3 /* LifeCycleEventType.BEFORE_VIEW_UPDATED */, {\n            id,\n            name,\n            context: contextManager.getContext(),\n            startClocks,\n            sessionIsActive,\n        });\n    }\n    function scheduleViewUpdate() {\n        triggerBeforeViewUpdate();\n        throttled();\n    }\n    function triggerViewUpdate() {\n        cancelScheduleViewUpdate();\n        triggerBeforeViewUpdate();\n        documentVersion += 1;\n        const currentEnd = endClocks === undefined ? timeStampNow() : endClocks.timeStamp;\n        lifeCycle.notify(4 /* LifeCycleEventType.VIEW_UPDATED */, {\n            customTimings,\n            documentVersion,\n            id,\n            name,\n            service,\n            version,\n            context: contextManager.getContext(),\n            loadingType,\n            location,\n            startClocks,\n            commonViewMetrics: getCommonViewMetrics(),\n            initialViewMetrics,\n            duration: elapsed(startClocks.timeStamp, currentEnd),\n            isActive: endClocks === undefined,\n            sessionIsActive,\n            eventCounts,\n        });\n    }\n    return {\n        get name() {\n            return name;\n        },\n        service,\n        version,\n        contextManager,\n        stopObservable,\n        end(options = {}) {\n            var _a, _b;\n            if (endClocks) {\n                // view already ended\n                return;\n            }\n            endClocks = (_a = options.endClocks) !== null && _a !== void 0 ? _a : clocksNow();\n            sessionIsActive = (_b = options.sessionIsActive) !== null && _b !== void 0 ? _b : true;\n            lifeCycle.notify(5 /* LifeCycleEventType.VIEW_ENDED */, { endClocks });\n            lifeCycle.notify(6 /* LifeCycleEventType.AFTER_VIEW_ENDED */, { endClocks });\n            clearInterval(keepAliveIntervalId);\n            setViewEnd(endClocks.relative);\n            stopCommonViewMetricsTracking();\n            pageMayExitSubscription.unsubscribe();\n            triggerViewUpdate();\n            setTimeout(() => {\n                this.stop();\n            }, KEEP_TRACKING_AFTER_VIEW_DELAY);\n        },\n        stop() {\n            stopInitialViewMetricsTracking();\n            stopEventCountsTracking();\n            stopINPTracking();\n            stopObservable.notify();\n        },\n        addTiming(name, time) {\n            if (endClocks) {\n                return;\n            }\n            const relativeTime = looksLikeRelativeTime(time) ? time : elapsed(startClocks.timeStamp, time);\n            customTimings[sanitizeTiming(name)] = relativeTime;\n            scheduleViewUpdate();\n        },\n        setViewName(updatedName) {\n            name = updatedName;\n            triggerViewUpdate();\n        },\n    };\n}\n/**\n * Timing name is used as facet path that must contain only letters, digits, or the characters - _ . @ $\n */\nfunction sanitizeTiming(name) {\n    const sanitized = name.replace(/[^a-zA-Z0-9-_.@$]/g, '_');\n    if (sanitized !== name) {\n        display.warn(`Invalid timing name: ${name}, sanitized to: ${sanitized}`);\n    }\n    return sanitized;\n}\nfunction areDifferentLocation(currentLocation, otherLocation) {\n    return (currentLocation.pathname !== otherLocation.pathname ||\n        (!isHashAnAnchor(otherLocation.hash) &&\n            getPathFromHash(otherLocation.hash) !== getPathFromHash(currentLocation.hash)));\n}\nfunction isHashAnAnchor(hash) {\n    const correspondingId = hash.substring(1);\n    // check if the correspondingId is empty because on Firefox an empty string passed to getElementById() prints a consol warning\n    return correspondingId !== '' && !!document.getElementById(correspondingId);\n}\nfunction getPathFromHash(hash) {\n    const index = hash.indexOf('?');\n    return index < 0 ? hash : hash.slice(0, index);\n}\n//# sourceMappingURL=trackViews.js.map","import { isEmptyObject, mapValues, toServerDuration } from '@datadog/browser-core';\nimport { discardNegativeDuration } from '../discardNegativeDuration';\nimport { DISCARDED } from '../../hooks';\nimport { trackViews } from './trackViews';\nexport function startViewCollection(lifeCycle, hooks, configuration, location, domMutationObservable, pageOpenObservable, locationChangeObservable, recorderApi, viewHistory, initialViewOptions) {\n    lifeCycle.subscribe(4 /* LifeCycleEventType.VIEW_UPDATED */, (view) => lifeCycle.notify(12 /* LifeCycleEventType.RAW_RUM_EVENT_COLLECTED */, processViewUpdate(view, configuration, recorderApi)));\n    hooks.register(0 /* HookNames.Assemble */, ({ startTime, eventType }) => {\n        const view = viewHistory.findView(startTime);\n        if (!view) {\n            return DISCARDED;\n        }\n        return {\n            type: eventType,\n            service: view.service,\n            version: view.version,\n            context: view.context,\n            view: {\n                id: view.id,\n                name: view.name,\n            },\n        };\n    });\n    return trackViews(location, lifeCycle, domMutationObservable, pageOpenObservable, configuration, locationChangeObservable, !configuration.trackViewsManually, initialViewOptions);\n}\nfunction processViewUpdate(view, configuration, recorderApi) {\n    var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t;\n    const replayStats = recorderApi.getReplayStats(view.id);\n    const clsDevicePixelRatio = (_b = (_a = view.commonViewMetrics) === null || _a === void 0 ? void 0 : _a.cumulativeLayoutShift) === null || _b === void 0 ? void 0 : _b.devicePixelRatio;\n    const viewEvent = {\n        _dd: {\n            document_version: view.documentVersion,\n            replay_stats: replayStats,\n            cls: clsDevicePixelRatio\n                ? {\n                    device_pixel_ratio: clsDevicePixelRatio,\n                }\n                : undefined,\n            configuration: {\n                start_session_replay_recording_manually: configuration.startSessionReplayRecordingManually,\n            },\n        },\n        date: view.startClocks.timeStamp,\n        type: \"view\" /* RumEventType.VIEW */,\n        view: {\n            action: {\n                count: view.eventCounts.actionCount,\n            },\n            frustration: {\n                count: view.eventCounts.frustrationCount,\n            },\n            cumulative_layout_shift: (_c = view.commonViewMetrics.cumulativeLayoutShift) === null || _c === void 0 ? void 0 : _c.value,\n            cumulative_layout_shift_time: toServerDuration((_d = view.commonViewMetrics.cumulativeLayoutShift) === null || _d === void 0 ? void 0 : _d.time),\n            cumulative_layout_shift_target_selector: (_e = view.commonViewMetrics.cumulativeLayoutShift) === null || _e === void 0 ? void 0 : _e.targetSelector,\n            first_byte: toServerDuration((_f = view.initialViewMetrics.navigationTimings) === null || _f === void 0 ? void 0 : _f.firstByte),\n            dom_complete: toServerDuration((_g = view.initialViewMetrics.navigationTimings) === null || _g === void 0 ? void 0 : _g.domComplete),\n            dom_content_loaded: toServerDuration((_h = view.initialViewMetrics.navigationTimings) === null || _h === void 0 ? void 0 : _h.domContentLoaded),\n            dom_interactive: toServerDuration((_j = view.initialViewMetrics.navigationTimings) === null || _j === void 0 ? void 0 : _j.domInteractive),\n            error: {\n                count: view.eventCounts.errorCount,\n            },\n            first_contentful_paint: toServerDuration(view.initialViewMetrics.firstContentfulPaint),\n            first_input_delay: toServerDuration((_k = view.initialViewMetrics.firstInput) === null || _k === void 0 ? void 0 : _k.delay),\n            first_input_time: toServerDuration((_l = view.initialViewMetrics.firstInput) === null || _l === void 0 ? void 0 : _l.time),\n            first_input_target_selector: (_m = view.initialViewMetrics.firstInput) === null || _m === void 0 ? void 0 : _m.targetSelector,\n            interaction_to_next_paint: toServerDuration((_o = view.commonViewMetrics.interactionToNextPaint) === null || _o === void 0 ? void 0 : _o.value),\n            interaction_to_next_paint_time: toServerDuration((_p = view.commonViewMetrics.interactionToNextPaint) === null || _p === void 0 ? void 0 : _p.time),\n            interaction_to_next_paint_target_selector: (_q = view.commonViewMetrics.interactionToNextPaint) === null || _q === void 0 ? void 0 : _q.targetSelector,\n            is_active: view.isActive,\n            name: view.name,\n            largest_contentful_paint: toServerDuration((_r = view.initialViewMetrics.largestContentfulPaint) === null || _r === void 0 ? void 0 : _r.value),\n            largest_contentful_paint_target_selector: (_s = view.initialViewMetrics.largestContentfulPaint) === null || _s === void 0 ? void 0 : _s.targetSelector,\n            load_event: toServerDuration((_t = view.initialViewMetrics.navigationTimings) === null || _t === void 0 ? void 0 : _t.loadEvent),\n            loading_time: discardNegativeDuration(toServerDuration(view.commonViewMetrics.loadingTime)),\n            loading_type: view.loadingType,\n            long_task: {\n                count: view.eventCounts.longTaskCount,\n            },\n            performance: computeViewPerformanceData(view.commonViewMetrics, view.initialViewMetrics),\n            resource: {\n                count: view.eventCounts.resourceCount,\n            },\n            time_spent: toServerDuration(view.duration),\n        },\n        display: view.commonViewMetrics.scroll\n            ? {\n                scroll: {\n                    max_depth: view.commonViewMetrics.scroll.maxDepth,\n                    max_depth_scroll_top: view.commonViewMetrics.scroll.maxDepthScrollTop,\n                    max_scroll_height: view.commonViewMetrics.scroll.maxScrollHeight,\n                    max_scroll_height_time: toServerDuration(view.commonViewMetrics.scroll.maxScrollHeightTime),\n                },\n            }\n            : undefined,\n        privacy: {\n            replay_level: configuration.defaultPrivacyLevel,\n        },\n    };\n    if (!isEmptyObject(view.customTimings)) {\n        viewEvent.view.custom_timings = mapValues(view.customTimings, toServerDuration);\n    }\n    return {\n        rawRumEvent: viewEvent,\n        startTime: view.startClocks.relative,\n        duration: view.duration,\n        domainContext: {\n            location: view.location,\n        },\n    };\n}\nfunction computeViewPerformanceData({ cumulativeLayoutShift, interactionToNextPaint }, { firstContentfulPaint, firstInput, largestContentfulPaint }) {\n    return {\n        cls: cumulativeLayoutShift && {\n            score: cumulativeLayoutShift.value,\n            timestamp: toServerDuration(cumulativeLayoutShift.time),\n            target_selector: cumulativeLayoutShift.targetSelector,\n            previous_rect: cumulativeLayoutShift.previousRect,\n            current_rect: cumulativeLayoutShift.currentRect,\n        },\n        fcp: firstContentfulPaint && { timestamp: toServerDuration(firstContentfulPaint) },\n        fid: firstInput && {\n            duration: toServerDuration(firstInput.delay),\n            timestamp: toServerDuration(firstInput.time),\n            target_selector: firstInput.targetSelector,\n        },\n        inp: interactionToNextPaint && {\n            duration: toServerDuration(interactionToNextPaint.value),\n            timestamp: toServerDuration(interactionToNextPaint.time),\n            target_selector: interactionToNextPaint.targetSelector,\n        },\n        lcp: largestContentfulPaint && {\n            timestamp: toServerDuration(largestContentfulPaint.value),\n            target_selector: largestContentfulPaint.targetSelector,\n            resource_url: largestContentfulPaint.resourceUrl,\n        },\n    };\n}\n//# sourceMappingURL=viewCollection.js.map","import { trackEventCounts } from '../trackEventCounts';\nexport function trackViewEventCounts(lifeCycle, viewId, onChange) {\n    const { stop, eventCounts } = trackEventCounts({\n        lifeCycle,\n        isChildEvent: (event) => event.view.id === viewId,\n        onChange,\n    });\n    return {\n        stop,\n        eventCounts,\n    };\n}\n//# sourceMappingURL=trackViewEventCounts.js.map","import { Observable } from '../../tools/observable';\nimport { createValueHistory } from '../../tools/valueHistory';\nimport { relativeNow, clocksOrigin, ONE_MINUTE } from '../../tools/utils/timeUtils';\nimport { addEventListener, addEventListeners } from '../../browser/addEventListener';\nimport { clearInterval, setInterval } from '../../tools/timer';\nimport { SESSION_TIME_OUT_DELAY } from './sessionConstants';\nimport { startSessionStore } from './sessionStore';\nexport const VISIBILITY_CHECK_DELAY = ONE_MINUTE;\nconst SESSION_CONTEXT_TIMEOUT_DELAY = SESSION_TIME_OUT_DELAY;\nlet stopCallbacks = [];\nexport function startSessionManager(configuration, productKey, computeSessionState, trackingConsentState) {\n    const renewObservable = new Observable();\n    const expireObservable = new Observable();\n    // TODO - Improve configuration type and remove assertion\n    const sessionStore = startSessionStore(configuration.sessionStoreStrategyType, configuration, productKey, computeSessionState);\n    stopCallbacks.push(() => sessionStore.stop());\n    const sessionContextHistory = createValueHistory({\n        expireDelay: SESSION_CONTEXT_TIMEOUT_DELAY,\n    });\n    stopCallbacks.push(() => sessionContextHistory.stop());\n    sessionStore.renewObservable.subscribe(() => {\n        sessionContextHistory.add(buildSessionContext(), relativeNow());\n        renewObservable.notify();\n    });\n    sessionStore.expireObservable.subscribe(() => {\n        expireObservable.notify();\n        sessionContextHistory.closeActive(relativeNow());\n    });\n    // We expand/renew session unconditionally as tracking consent is always granted when the session\n    // manager is started.\n    sessionStore.expandOrRenewSession();\n    sessionContextHistory.add(buildSessionContext(), clocksOrigin().relative);\n    trackingConsentState.observable.subscribe(() => {\n        if (trackingConsentState.isGranted()) {\n            sessionStore.expandOrRenewSession();\n        }\n        else {\n            sessionStore.expire();\n        }\n    });\n    trackActivity(configuration, () => {\n        if (trackingConsentState.isGranted()) {\n            sessionStore.expandOrRenewSession();\n        }\n    });\n    trackVisibility(configuration, () => sessionStore.expandSession());\n    trackResume(configuration, () => sessionStore.restartSession());\n    function buildSessionContext() {\n        return {\n            id: sessionStore.getSession().id,\n            trackingType: sessionStore.getSession()[productKey],\n            isReplayForced: !!sessionStore.getSession().forcedReplay,\n            anonymousId: sessionStore.getSession().anonymousId,\n        };\n    }\n    return {\n        findSession: (startTime, options) => sessionContextHistory.find(startTime, options),\n        renewObservable,\n        expireObservable,\n        sessionStateUpdateObservable: sessionStore.sessionStateUpdateObservable,\n        expire: sessionStore.expire,\n        updateSessionState: sessionStore.updateSessionState,\n    };\n}\nexport function stopSessionManager() {\n    stopCallbacks.forEach((e) => e());\n    stopCallbacks = [];\n}\nfunction trackActivity(configuration, expandOrRenewSession) {\n    const { stop } = addEventListeners(configuration, window, [\"click\" /* DOM_EVENT.CLICK */, \"touchstart\" /* DOM_EVENT.TOUCH_START */, \"keydown\" /* DOM_EVENT.KEY_DOWN */, \"scroll\" /* DOM_EVENT.SCROLL */], expandOrRenewSession, { capture: true, passive: true });\n    stopCallbacks.push(stop);\n}\nfunction trackVisibility(configuration, expandSession) {\n    const expandSessionWhenVisible = () => {\n        if (document.visibilityState === 'visible') {\n            expandSession();\n        }\n    };\n    const { stop } = addEventListener(configuration, document, \"visibilitychange\" /* DOM_EVENT.VISIBILITY_CHANGE */, expandSessionWhenVisible);\n    stopCallbacks.push(stop);\n    const visibilityCheckInterval = setInterval(expandSessionWhenVisible, VISIBILITY_CHECK_DELAY);\n    stopCallbacks.push(() => {\n        clearInterval(visibilityCheckInterval);\n    });\n}\nfunction trackResume(configuration, cb) {\n    const { stop } = addEventListener(configuration, window, \"resume\" /* DOM_EVENT.RESUME */, cb, { capture: true });\n    stopCallbacks.push(stop);\n}\n//# sourceMappingURL=sessionManager.js.map","import { Observable, bridgeSupports, noop, performDraw, startSessionManager, } from '@datadog/browser-core';\nexport const RUM_SESSION_KEY = 'rum';\nexport function startRumSessionManager(configuration, lifeCycle, trackingConsentState) {\n    const sessionManager = startSessionManager(configuration, RUM_SESSION_KEY, (rawTrackingType) => computeSessionState(configuration, rawTrackingType), trackingConsentState);\n    sessionManager.expireObservable.subscribe(() => {\n        lifeCycle.notify(9 /* LifeCycleEventType.SESSION_EXPIRED */);\n    });\n    sessionManager.renewObservable.subscribe(() => {\n        lifeCycle.notify(10 /* LifeCycleEventType.SESSION_RENEWED */);\n    });\n    sessionManager.sessionStateUpdateObservable.subscribe(({ previousState, newState }) => {\n        if (!previousState.forcedReplay && newState.forcedReplay) {\n            const sessionEntity = sessionManager.findSession();\n            if (sessionEntity) {\n                sessionEntity.isReplayForced = true;\n            }\n        }\n    });\n    return {\n        findTrackedSession: (startTime) => {\n            const session = sessionManager.findSession(startTime);\n            if (!session || !isTypeTracked(session.trackingType)) {\n                return;\n            }\n            return {\n                id: session.id,\n                sessionReplay: session.trackingType === \"1\" /* RumTrackingType.TRACKED_WITH_SESSION_REPLAY */\n                    ? 1 /* SessionReplayState.SAMPLED */\n                    : session.isReplayForced\n                        ? 2 /* SessionReplayState.FORCED */\n                        : 0 /* SessionReplayState.OFF */,\n                anonymousId: session.anonymousId,\n            };\n        },\n        expire: sessionManager.expire,\n        expireObservable: sessionManager.expireObservable,\n        setForcedReplay: () => sessionManager.updateSessionState({ forcedReplay: '1' }),\n    };\n}\n/**\n * Start a tracked replay session stub\n */\nexport function startRumSessionManagerStub() {\n    const session = {\n        id: '00000000-aaaa-0000-aaaa-000000000000',\n        sessionReplay: bridgeSupports(\"records\" /* BridgeCapability.RECORDS */) ? 1 /* SessionReplayState.SAMPLED */ : 0 /* SessionReplayState.OFF */,\n    };\n    return {\n        findTrackedSession: () => session,\n        expire: noop,\n        expireObservable: new Observable(),\n        setForcedReplay: noop,\n    };\n}\nfunction computeSessionState(configuration, rawTrackingType) {\n    let trackingType;\n    if (hasValidRumSession(rawTrackingType)) {\n        trackingType = rawTrackingType;\n    }\n    else if (!performDraw(configuration.sessionSampleRate)) {\n        trackingType = \"0\" /* RumTrackingType.NOT_TRACKED */;\n    }\n    else if (!performDraw(configuration.sessionReplaySampleRate)) {\n        trackingType = \"2\" /* RumTrackingType.TRACKED_WITHOUT_SESSION_REPLAY */;\n    }\n    else {\n        trackingType = \"1\" /* RumTrackingType.TRACKED_WITH_SESSION_REPLAY */;\n    }\n    return {\n        trackingType,\n        isTracked: isTypeTracked(trackingType),\n    };\n}\nfunction hasValidRumSession(trackingType) {\n    return (trackingType === \"0\" /* RumTrackingType.NOT_TRACKED */ ||\n        trackingType === \"1\" /* RumTrackingType.TRACKED_WITH_SESSION_REPLAY */ ||\n        trackingType === \"2\" /* RumTrackingType.TRACKED_WITHOUT_SESSION_REPLAY */);\n}\nfunction isTypeTracked(rumSessionType) {\n    return (rumSessionType === \"2\" /* RumTrackingType.TRACKED_WITHOUT_SESSION_REPLAY */ ||\n        rumSessionType === \"1\" /* RumTrackingType.TRACKED_WITH_SESSION_REPLAY */);\n}\n//# sourceMappingURL=rumSessionManager.js.map","import { DOCS_TROUBLESHOOTING, MORE_DETAILS, display } from '../tools/display';\nimport { objectValues } from '../tools/utils/polyfills';\nimport { isPageExitReason } from '../browser/pageMayExitObservable';\nimport { jsonStringify } from '../tools/serialisation/jsonStringify';\nimport { computeBytesCount } from '../tools/utils/byteUtils';\nexport function createBatch({ encoder, request, flushController, messageBytesLimit, }) {\n    let upsertBuffer = {};\n    const flushSubscription = flushController.flushObservable.subscribe((event) => flush(event));\n    function push(serializedMessage, estimatedMessageBytesCount, key) {\n        flushController.notifyBeforeAddMessage(estimatedMessageBytesCount);\n        if (key !== undefined) {\n            upsertBuffer[key] = serializedMessage;\n            flushController.notifyAfterAddMessage();\n        }\n        else {\n            encoder.write(encoder.isEmpty ? serializedMessage : `\\n${serializedMessage}`, (realMessageBytesCount) => {\n                flushController.notifyAfterAddMessage(realMessageBytesCount - estimatedMessageBytesCount);\n            });\n        }\n    }\n    function hasMessageFor(key) {\n        return key !== undefined && upsertBuffer[key] !== undefined;\n    }\n    function remove(key) {\n        const removedMessage = upsertBuffer[key];\n        delete upsertBuffer[key];\n        const messageBytesCount = encoder.estimateEncodedBytesCount(removedMessage);\n        flushController.notifyAfterRemoveMessage(messageBytesCount);\n    }\n    function addOrUpdate(message, key) {\n        const serializedMessage = jsonStringify(message);\n        const estimatedMessageBytesCount = encoder.estimateEncodedBytesCount(serializedMessage);\n        if (estimatedMessageBytesCount >= messageBytesLimit) {\n            display.warn(`Discarded a message whose size was bigger than the maximum allowed size ${messageBytesLimit}KB. ${MORE_DETAILS} ${DOCS_TROUBLESHOOTING}/#technical-limitations`);\n            return;\n        }\n        if (hasMessageFor(key)) {\n            remove(key);\n        }\n        push(serializedMessage, estimatedMessageBytesCount, key);\n    }\n    function flush(event) {\n        const upsertMessages = objectValues(upsertBuffer).join('\\n');\n        upsertBuffer = {};\n        const pageMightExit = isPageExitReason(event.reason);\n        const send = pageMightExit ? request.sendOnExit : request.send;\n        if (pageMightExit &&\n            // Note: checking that the encoder is async is not strictly needed, but it's an optimization:\n            // if the encoder is async we need to send two requests in some cases (one for encoded data\n            // and the other for non-encoded data). But if it's not async, we don't have to worry about\n            // it and always send a single request.\n            encoder.isAsync) {\n            const encoderResult = encoder.finishSync();\n            // Send encoded messages\n            if (encoderResult.outputBytesCount) {\n                send(formatPayloadFromEncoder(encoderResult));\n            }\n            // Send messages that are not yet encoded at this point\n            const pendingMessages = [encoderResult.pendingData, upsertMessages].filter(Boolean).join('\\n');\n            if (pendingMessages) {\n                send({\n                    data: pendingMessages,\n                    bytesCount: computeBytesCount(pendingMessages),\n                });\n            }\n        }\n        else {\n            if (upsertMessages) {\n                encoder.write(encoder.isEmpty ? upsertMessages : `\\n${upsertMessages}`);\n            }\n            encoder.finish((encoderResult) => {\n                send(formatPayloadFromEncoder(encoderResult));\n            });\n        }\n    }\n    return {\n        flushController,\n        add: addOrUpdate,\n        upsert: addOrUpdate,\n        stop: flushSubscription.unsubscribe,\n    };\n}\nfunction formatPayloadFromEncoder(encoderResult) {\n    let data;\n    if (typeof encoderResult.output === 'string') {\n        data = encoderResult.output;\n    }\n    else {\n        data = new Blob([encoderResult.output], {\n            // This will set the 'Content-Type: text/plain' header. Reasoning:\n            // * The intake rejects the request if there is no content type.\n            // * The browser will issue CORS preflight requests if we set it to 'application/json', which\n            // could induce higher intake load (and maybe has other impacts).\n            // * Also it's not quite JSON, since we are concatenating multiple JSON objects separated by\n            // new lines.\n            type: 'text/plain',\n        });\n    }\n    return {\n        data,\n        bytesCount: encoderResult.outputBytesCount,\n        encoding: encoderResult.encoding,\n    };\n}\n//# sourceMappingURL=batch.js.map","import { Observable } from '../tools/observable';\nimport { clearTimeout, setTimeout } from '../tools/timer';\n/**\n * Returns a \"flush controller\", responsible of notifying when flushing a pool of pending data needs\n * to happen. The implementation is designed to support both synchronous and asynchronous usages,\n * but relies on invariants described in each method documentation to keep a coherent state.\n */\nexport function createFlushController({ messagesLimit, bytesLimit, durationLimit, pageMayExitObservable, sessionExpireObservable, }) {\n    const pageMayExitSubscription = pageMayExitObservable.subscribe((event) => flush(event.reason));\n    const sessionExpireSubscription = sessionExpireObservable.subscribe(() => flush('session_expire'));\n    const flushObservable = new Observable(() => () => {\n        pageMayExitSubscription.unsubscribe();\n        sessionExpireSubscription.unsubscribe();\n    });\n    let currentBytesCount = 0;\n    let currentMessagesCount = 0;\n    function flush(flushReason) {\n        if (currentMessagesCount === 0) {\n            return;\n        }\n        const messagesCount = currentMessagesCount;\n        const bytesCount = currentBytesCount;\n        currentMessagesCount = 0;\n        currentBytesCount = 0;\n        cancelDurationLimitTimeout();\n        flushObservable.notify({\n            reason: flushReason,\n            messagesCount,\n            bytesCount,\n        });\n    }\n    let durationLimitTimeoutId;\n    function scheduleDurationLimitTimeout() {\n        if (durationLimitTimeoutId === undefined) {\n            durationLimitTimeoutId = setTimeout(() => {\n                flush('duration_limit');\n            }, durationLimit);\n        }\n    }\n    function cancelDurationLimitTimeout() {\n        clearTimeout(durationLimitTimeoutId);\n        durationLimitTimeoutId = undefined;\n    }\n    return {\n        flushObservable,\n        get messagesCount() {\n            return currentMessagesCount;\n        },\n        /**\n         * Notifies that a message will be added to a pool of pending messages waiting to be flushed.\n         *\n         * This function needs to be called synchronously, right before adding the message, so no flush\n         * event can happen after `notifyBeforeAddMessage` and before adding the message.\n         *\n         * @param estimatedMessageBytesCount: an estimation of the message bytes count once it is\n         * actually added.\n         */\n        notifyBeforeAddMessage(estimatedMessageBytesCount) {\n            if (currentBytesCount + estimatedMessageBytesCount >= bytesLimit) {\n                flush('bytes_limit');\n            }\n            // Consider the message to be added now rather than in `notifyAfterAddMessage`, because if no\n            // message was added yet and `notifyAfterAddMessage` is called asynchronously, we still want\n            // to notify when a flush is needed (for example on page exit).\n            currentMessagesCount += 1;\n            currentBytesCount += estimatedMessageBytesCount;\n            scheduleDurationLimitTimeout();\n        },\n        /**\n         * Notifies that a message *was* added to a pool of pending messages waiting to be flushed.\n         *\n         * This function can be called asynchronously after the message was added, but in this case it\n         * should not be called if a flush event occurred in between.\n         *\n         * @param messageBytesCountDiff: the difference between the estimated message bytes count and\n         * its actual bytes count once added to the pool.\n         */\n        notifyAfterAddMessage(messageBytesCountDiff = 0) {\n            currentBytesCount += messageBytesCountDiff;\n            if (currentMessagesCount >= messagesLimit) {\n                flush('messages_limit');\n            }\n            else if (currentBytesCount >= bytesLimit) {\n                flush('bytes_limit');\n            }\n        },\n        /**\n         * Notifies that a message was removed from a pool of pending messages waiting to be flushed.\n         *\n         * This function needs to be called synchronously, right after removing the message, so no flush\n         * event can happen after removing the message and before `notifyAfterRemoveMessage`.\n         *\n         * @param messageBytesCount: the message bytes count that was added to the pool. Should\n         * correspond to the sum of bytes counts passed to `notifyBeforeAddMessage` and\n         * `notifyAfterAddMessage`.\n         */\n        notifyAfterRemoveMessage(messageBytesCount) {\n            currentBytesCount -= messageBytesCount;\n            currentMessagesCount -= 1;\n            if (currentMessagesCount === 0) {\n                cancelDurationLimitTimeout();\n            }\n        },\n    };\n}\n//# sourceMappingURL=flushController.js.map","import { combine, isTelemetryReplicationAllowed, startBatchWithReplica, } from '@datadog/browser-core';\nexport function startRumBatch(configuration, lifeCycle, telemetryEventObservable, reportError, pageMayExitObservable, sessionExpireObservable, createEncoder) {\n    const replica = configuration.replica;\n    const batch = startBatchWithReplica(configuration, {\n        endpoint: configuration.rumEndpointBuilder,\n        encoder: createEncoder(2 /* DeflateEncoderStreamId.RUM */),\n    }, replica && {\n        endpoint: replica.rumEndpointBuilder,\n        transformMessage: (message) => combine(message, { application: { id: replica.applicationId } }),\n        encoder: createEncoder(3 /* DeflateEncoderStreamId.RUM_REPLICA */),\n    }, reportError, pageMayExitObservable, sessionExpireObservable);\n    lifeCycle.subscribe(13 /* LifeCycleEventType.RUM_EVENT_COLLECTED */, (serverRumEvent) => {\n        if (serverRumEvent.type === \"view\" /* RumEventType.VIEW */) {\n            batch.upsert(serverRumEvent, serverRumEvent.view.id);\n        }\n        else {\n            batch.add(serverRumEvent);\n        }\n    });\n    telemetryEventObservable.subscribe((event) => batch.add(event, isTelemetryReplicationAllowed(configuration)));\n    return batch;\n}\n//# sourceMappingURL=startRumBatch.js.map","import { createBatch } from './batch';\nimport { createHttpRequest } from './httpRequest';\nimport { createFlushController } from './flushController';\nexport function startBatchWithReplica(configuration, primary, replica, reportError, pageMayExitObservable, sessionExpireObservable, batchFactoryImp = createBatch) {\n    const primaryBatch = createBatchFromConfig(configuration, primary);\n    const replicaBatch = replica && createBatchFromConfig(configuration, replica);\n    function createBatchFromConfig(configuration, { endpoint, encoder }) {\n        return batchFactoryImp({\n            encoder,\n            request: createHttpRequest(endpoint, configuration.batchBytesLimit, reportError),\n            flushController: createFlushController({\n                messagesLimit: configuration.batchMessagesLimit,\n                bytesLimit: configuration.batchBytesLimit,\n                durationLimit: configuration.flushTimeout,\n                pageMayExitObservable,\n                sessionExpireObservable,\n            }),\n            messageBytesLimit: configuration.messageBytesLimit,\n        });\n    }\n    return {\n        flushObservable: primaryBatch.flushController.flushObservable,\n        add(message, replicated = true) {\n            primaryBatch.add(message);\n            if (replicaBatch && replicated) {\n                replicaBatch.add(replica.transformMessage ? replica.transformMessage(message) : message);\n            }\n        },\n        upsert: (message, key) => {\n            primaryBatch.upsert(message, key);\n            if (replicaBatch) {\n                replicaBatch.upsert(replica.transformMessage ? replica.transformMessage(message) : message, key);\n            }\n        },\n        stop: () => {\n            primaryBatch.stop();\n            if (replicaBatch) {\n                replicaBatch.stop();\n            }\n        },\n    };\n}\n//# sourceMappingURL=startBatchWithReplica.js.map","import { SESSION_TIME_OUT_DELAY, relativeNow, createValueHistory } from '@datadog/browser-core';\nimport { DISCARDED } from '../../hooks';\n/**\n * We want to attach to an event:\n * - the url corresponding to its start\n * - the referrer corresponding to the previous view url (or document referrer for initial view)\n */\nexport const URL_CONTEXT_TIME_OUT_DELAY = SESSION_TIME_OUT_DELAY;\nexport function startUrlContexts(lifeCycle, hooks, locationChangeObservable, location) {\n    const urlContextHistory = createValueHistory({ expireDelay: URL_CONTEXT_TIME_OUT_DELAY });\n    let previousViewUrl;\n    lifeCycle.subscribe(1 /* LifeCycleEventType.BEFORE_VIEW_CREATED */, ({ startClocks }) => {\n        const viewUrl = location.href;\n        urlContextHistory.add(buildUrlContext({\n            url: viewUrl,\n            referrer: !previousViewUrl ? document.referrer : previousViewUrl,\n        }), startClocks.relative);\n        previousViewUrl = viewUrl;\n    });\n    lifeCycle.subscribe(6 /* LifeCycleEventType.AFTER_VIEW_ENDED */, ({ endClocks }) => {\n        urlContextHistory.closeActive(endClocks.relative);\n    });\n    const locationChangeSubscription = locationChangeObservable.subscribe(({ newLocation }) => {\n        const current = urlContextHistory.find();\n        if (current) {\n            const changeTime = relativeNow();\n            urlContextHistory.closeActive(changeTime);\n            urlContextHistory.add(buildUrlContext({\n                url: newLocation.href,\n                referrer: current.referrer,\n            }), changeTime);\n        }\n    });\n    function buildUrlContext({ url, referrer }) {\n        return {\n            url,\n            referrer,\n        };\n    }\n    hooks.register(0 /* HookNames.Assemble */, ({ startTime, eventType }) => {\n        const urlContext = urlContextHistory.find(startTime);\n        if (!urlContext) {\n            return DISCARDED;\n        }\n        return {\n            type: eventType,\n            view: {\n                url: urlContext.url,\n                referrer: urlContext.referrer,\n            },\n        };\n    });\n    return {\n        findUrl: (startTime) => urlContextHistory.find(startTime),\n        stop: () => {\n            locationChangeSubscription.unsubscribe();\n            urlContextHistory.stop();\n        },\n    };\n}\n//# sourceMappingURL=urlContexts.js.map","import { addEventListener, instrumentMethod, Observable, shallowClone } from '@datadog/browser-core';\nexport function createLocationChangeObservable(configuration, location) {\n    let currentLocation = shallowClone(location);\n    return new Observable((observable) => {\n        const { stop: stopHistoryTracking } = trackHistory(configuration, onLocationChange);\n        const { stop: stopHashTracking } = trackHash(configuration, onLocationChange);\n        function onLocationChange() {\n            if (currentLocation.href === location.href) {\n                return;\n            }\n            const newLocation = shallowClone(location);\n            observable.notify({\n                newLocation,\n                oldLocation: currentLocation,\n            });\n            currentLocation = newLocation;\n        }\n        return () => {\n            stopHistoryTracking();\n            stopHashTracking();\n        };\n    });\n}\nfunction trackHistory(configuration, onHistoryChange) {\n    const { stop: stopInstrumentingPushState } = instrumentMethod(getHistoryInstrumentationTarget('pushState'), 'pushState', ({ onPostCall }) => {\n        onPostCall(onHistoryChange);\n    });\n    const { stop: stopInstrumentingReplaceState } = instrumentMethod(getHistoryInstrumentationTarget('replaceState'), 'replaceState', ({ onPostCall }) => {\n        onPostCall(onHistoryChange);\n    });\n    const { stop: removeListener } = addEventListener(configuration, window, \"popstate\" /* DOM_EVENT.POP_STATE */, onHistoryChange);\n    return {\n        stop: () => {\n            stopInstrumentingPushState();\n            stopInstrumentingReplaceState();\n            removeListener();\n        },\n    };\n}\nfunction trackHash(configuration, onHashChange) {\n    return addEventListener(configuration, window, \"hashchange\" /* DOM_EVENT.HASH_CHANGE */, onHashChange);\n}\nfunction getHistoryInstrumentationTarget(methodName) {\n    // Ideally we should always instument the method on the prototype, however some frameworks (e.g [Next.js](https://github.com/vercel/next.js/blob/d3f5532065f3e3bb84fb54bd2dfd1a16d0f03a21/packages/next/src/client/components/app-router.tsx#L429))\n    // are wrapping the instance method. In that case we should also wrap the instance method.\n    return Object.prototype.hasOwnProperty.call(history, methodName) ? history : History.prototype;\n}\n//# sourceMappingURL=locationChangeObservable.js.map","import { SESSION_TIME_OUT_DELAY, createValueHistory, isEmptyObject } from '@datadog/browser-core';\nexport const FEATURE_FLAG_CONTEXT_TIME_OUT_DELAY = SESSION_TIME_OUT_DELAY;\nexport const BYTES_COMPUTATION_THROTTLING_DELAY = 200;\n/**\n * Start feature flag contexts\n *\n * Feature flag contexts follow the life of views.\n * A new context is added when a view is created and ended when the view is ended\n *\n * Note: we choose not to add a new context at each evaluation to save memory\n */\nexport function startFeatureFlagContexts(lifeCycle, hooks, configuration) {\n    const featureFlagContexts = createValueHistory({\n        expireDelay: FEATURE_FLAG_CONTEXT_TIME_OUT_DELAY,\n    });\n    lifeCycle.subscribe(1 /* LifeCycleEventType.BEFORE_VIEW_CREATED */, ({ startClocks }) => {\n        featureFlagContexts.add({}, startClocks.relative);\n    });\n    lifeCycle.subscribe(6 /* LifeCycleEventType.AFTER_VIEW_ENDED */, ({ endClocks }) => {\n        featureFlagContexts.closeActive(endClocks.relative);\n    });\n    hooks.register(0 /* HookNames.Assemble */, ({ startTime, eventType }) => {\n        const trackFeatureFlagsForEvents = configuration.trackFeatureFlagsForEvents.concat([\n            \"view\" /* RumEventType.VIEW */,\n            \"error\" /* RumEventType.ERROR */,\n        ]);\n        if (!trackFeatureFlagsForEvents.includes(eventType)) {\n            return;\n        }\n        const featureFlagContext = featureFlagContexts.find(startTime);\n        if (!featureFlagContext || isEmptyObject(featureFlagContext)) {\n            return;\n        }\n        return {\n            type: eventType,\n            feature_flags: featureFlagContext,\n        };\n    });\n    return {\n        addFeatureFlagEvaluation: (key, value) => {\n            const currentContext = featureFlagContexts.find();\n            if (currentContext) {\n                currentContext[key] = value;\n            }\n        },\n    };\n}\n//# sourceMappingURL=featureFlagContext.js.map","import { performDraw, ONE_SECOND, addTelemetryDebug, setInterval } from '@datadog/browser-core';\nexport const MEASURES_PERIOD_DURATION = 10 * ONE_SECOND;\nlet currentPeriodMeasures;\nlet batchHasRumEvent;\nexport function startCustomerDataTelemetry(configuration, telemetry, lifeCycle, batchFlushObservable) {\n    const customerDataTelemetryEnabled = telemetry.enabled && performDraw(configuration.customerDataTelemetrySampleRate);\n    if (!customerDataTelemetryEnabled) {\n        return;\n    }\n    initCurrentPeriodMeasures();\n    batchHasRumEvent = false;\n    // We measure the data of every view updates even if there could only be one per batch due to the upsert\n    // It means that contexts bytes count sums can be higher than it really is\n    lifeCycle.subscribe(13 /* LifeCycleEventType.RUM_EVENT_COLLECTED */, () => {\n        batchHasRumEvent = true;\n    });\n    batchFlushObservable.subscribe(({ bytesCount, messagesCount }) => {\n        // Don't measure batch that only contains telemetry events to avoid batch sending loop\n        // It could happen because after each batch we are adding a customer data measures telemetry event to the next one\n        if (!batchHasRumEvent) {\n            return;\n        }\n        currentPeriodMeasures.batchCount += 1;\n        updateMeasure(currentPeriodMeasures.batchBytesCount, bytesCount);\n        updateMeasure(currentPeriodMeasures.batchMessagesCount, messagesCount);\n    });\n    setInterval(sendCurrentPeriodMeasures, MEASURES_PERIOD_DURATION);\n}\nfunction sendCurrentPeriodMeasures() {\n    if (currentPeriodMeasures.batchCount === 0) {\n        return;\n    }\n    addTelemetryDebug('Customer data measures', currentPeriodMeasures);\n    initCurrentPeriodMeasures();\n}\nfunction createMeasure() {\n    return { min: Infinity, max: 0, sum: 0 };\n}\nfunction updateMeasure(measure, value) {\n    measure.sum += value;\n    measure.min = Math.min(measure.min, value);\n    measure.max = Math.max(measure.max, value);\n}\nfunction initCurrentPeriodMeasures() {\n    currentPeriodMeasures = {\n        batchCount: 0,\n        batchBytesCount: createMeasure(),\n        batchMessagesCount: createMeasure(),\n    };\n}\n//# sourceMappingURL=startCustomerDataTelemetry.js.map","import { elapsed, createValueHistory, SESSION_TIME_OUT_DELAY, toServerDuration, addEventListeners, relativeNow, } from '@datadog/browser-core';\nimport { supportPerformanceTimingEvent, RumPerformanceEntryType } from '../../browser/performanceObservable';\n// Arbitrary value to cap number of element for memory consumption in the browser\nexport const MAX_PAGE_STATE_ENTRIES = 4000;\n// Arbitrary value to cap number of element for backend & to save bandwidth\nexport const MAX_PAGE_STATE_ENTRIES_SELECTABLE = 500;\nexport const PAGE_STATE_CONTEXT_TIME_OUT_DELAY = SESSION_TIME_OUT_DELAY;\nexport function startPageStateHistory(hooks, configuration, maxPageStateEntriesSelectable = MAX_PAGE_STATE_ENTRIES_SELECTABLE) {\n    const pageStateEntryHistory = createValueHistory({\n        expireDelay: PAGE_STATE_CONTEXT_TIME_OUT_DELAY,\n        maxEntries: MAX_PAGE_STATE_ENTRIES,\n    });\n    let currentPageState;\n    if (supportPerformanceTimingEvent(RumPerformanceEntryType.VISIBILITY_STATE)) {\n        const visibilityEntries = performance.getEntriesByType(RumPerformanceEntryType.VISIBILITY_STATE);\n        visibilityEntries.forEach((entry) => {\n            const state = entry.name === 'hidden' ? \"hidden\" /* PageState.HIDDEN */ : \"active\" /* PageState.ACTIVE */;\n            addPageState(state, entry.startTime);\n        });\n    }\n    addPageState(getPageState(), relativeNow());\n    const { stop: stopEventListeners } = addEventListeners(configuration, window, [\n        \"pageshow\" /* DOM_EVENT.PAGE_SHOW */,\n        \"focus\" /* DOM_EVENT.FOCUS */,\n        \"blur\" /* DOM_EVENT.BLUR */,\n        \"visibilitychange\" /* DOM_EVENT.VISIBILITY_CHANGE */,\n        \"resume\" /* DOM_EVENT.RESUME */,\n        \"freeze\" /* DOM_EVENT.FREEZE */,\n        \"pagehide\" /* DOM_EVENT.PAGE_HIDE */,\n    ], (event) => {\n        addPageState(computePageState(event), event.timeStamp);\n    }, { capture: true });\n    function addPageState(nextPageState, startTime = relativeNow()) {\n        if (nextPageState === currentPageState) {\n            return;\n        }\n        currentPageState = nextPageState;\n        pageStateEntryHistory.closeActive(startTime);\n        pageStateEntryHistory.add({ state: currentPageState, startTime }, startTime);\n    }\n    function wasInPageStateDuringPeriod(state, startTime, duration) {\n        return pageStateEntryHistory.findAll(startTime, duration).some((pageState) => pageState.state === state);\n    }\n    hooks.register(0 /* HookNames.Assemble */, ({ startTime, duration = 0, eventType }) => {\n        if (eventType === \"view\" /* RumEventType.VIEW */) {\n            const pageStates = pageStateEntryHistory.findAll(startTime, duration);\n            return {\n                type: eventType,\n                _dd: { page_states: processPageStates(pageStates, startTime, maxPageStateEntriesSelectable) },\n            };\n        }\n        if (eventType === \"action\" /* RumEventType.ACTION */ || eventType === \"error\" /* RumEventType.ERROR */) {\n            return {\n                type: eventType,\n                view: { in_foreground: wasInPageStateDuringPeriod(\"active\" /* PageState.ACTIVE */, startTime, 0) },\n            };\n        }\n    });\n    return {\n        wasInPageStateDuringPeriod,\n        addPageState,\n        stop: () => {\n            stopEventListeners();\n            pageStateEntryHistory.stop();\n        },\n    };\n}\nfunction processPageStates(pageStateEntries, eventStartTime, maxPageStateEntriesSelectable) {\n    if (pageStateEntries.length === 0) {\n        return;\n    }\n    return pageStateEntries\n        .slice(-maxPageStateEntriesSelectable)\n        .reverse()\n        .map(({ state, startTime }) => ({\n        state,\n        start: toServerDuration(elapsed(eventStartTime, startTime)),\n    }));\n}\nfunction computePageState(event) {\n    if (event.type === \"freeze\" /* DOM_EVENT.FREEZE */) {\n        return \"frozen\" /* PageState.FROZEN */;\n    }\n    else if (event.type === \"pagehide\" /* DOM_EVENT.PAGE_HIDE */) {\n        return event.persisted ? \"frozen\" /* PageState.FROZEN */ : \"terminated\" /* PageState.TERMINATED */;\n    }\n    return getPageState();\n}\nfunction getPageState() {\n    if (document.visibilityState === 'hidden') {\n        return \"hidden\" /* PageState.HIDDEN */;\n    }\n    if (document.hasFocus()) {\n        return \"active\" /* PageState.ACTIVE */;\n    }\n    return \"passive\" /* PageState.PASSIVE */;\n}\n//# sourceMappingURL=pageStateHistory.js.map","import { setInterval, clearInterval, Observable, ONE_SECOND, findCommaSeparatedValue } from '@datadog/browser-core';\nexport const WATCH_COOKIE_INTERVAL_DELAY = ONE_SECOND;\nexport function createCookieObservable(cookieName) {\n    return new Observable((observable) => \n    // NOTE: we don't use cookiestore.addEventListner('change', handler) as it seems to me more prone to bugs\n    // and cause our tests to be flaky (and probably in production as well)\n    watchCookieStrategy(cookieName, (event) => observable.notify(event)));\n}\nfunction watchCookieStrategy(cookieName, callback) {\n    const previousCookieValue = findCommaSeparatedValue(document.cookie, cookieName);\n    const watchCookieIntervalId = setInterval(() => {\n        const cookieValue = findCommaSeparatedValue(document.cookie, cookieName);\n        if (cookieValue !== previousCookieValue) {\n            callback(cookieValue);\n        }\n    }, WATCH_COOKIE_INTERVAL_DELAY);\n    return () => clearInterval(watchCookieIntervalId);\n}\n//# sourceMappingURL=cookieObservable.js.map","import { getInitCookie } from '@datadog/browser-core';\nimport { createCookieObservable } from '../../browser/cookieObservable';\nexport const CI_VISIBILITY_TEST_ID_COOKIE_NAME = 'datadog-ci-visibility-test-execution-id';\nexport function startCiVisibilityContext(hooks, cookieObservable = createCookieObservable(CI_VISIBILITY_TEST_ID_COOKIE_NAME)) {\n    var _a;\n    let testExecutionId = getInitCookie(CI_VISIBILITY_TEST_ID_COOKIE_NAME) || ((_a = window.Cypress) === null || _a === void 0 ? void 0 : _a.env('traceId'));\n    const cookieObservableSubscription = cookieObservable.subscribe((value) => {\n        testExecutionId = value;\n    });\n    hooks.register(0 /* HookNames.Assemble */, ({ eventType }) => {\n        if (typeof testExecutionId !== 'string') {\n            return;\n        }\n        return {\n            type: eventType,\n            session: {\n                type: \"ci_test\" /* SessionType.CI_TEST */,\n            },\n            ci_test: {\n                test_execution_id: testExecutionId,\n            },\n        };\n    });\n    return {\n        stop: () => {\n            cookieObservableSubscription.unsubscribe();\n        },\n    };\n}\n//# sourceMappingURL=ciVisibilityContext.js.map","import { setTimeout } from '../../tools/timer';\nimport { clocksNow, ONE_MINUTE } from '../../tools/utils/timeUtils';\nimport { ErrorSource } from '../error/error.types';\nexport function createEventRateLimiter(eventType, limit, onLimitReached) {\n    let eventCount = 0;\n    let allowNextEvent = false;\n    return {\n        isLimitReached() {\n            if (eventCount === 0) {\n                setTimeout(() => {\n                    eventCount = 0;\n                }, ONE_MINUTE);\n            }\n            eventCount += 1;\n            if (eventCount <= limit || allowNextEvent) {\n                allowNextEvent = false;\n                return false;\n            }\n            if (eventCount === limit + 1) {\n                allowNextEvent = true;\n                try {\n                    onLimitReached({\n                        message: `Reached max number of ${eventType}s by minute: ${limit}`,\n                        source: ErrorSource.AGENT,\n                        startClocks: clocksNow(),\n                    });\n                }\n                finally {\n                    allowNextEvent = false;\n                }\n            }\n            return true;\n        },\n    };\n}\n//# sourceMappingURL=createEventRateLimiter.js.map","import { sanitize, deepClone, getType, objectEntries } from '@datadog/browser-core';\n/**\n * Allows declaring and enforcing modifications to specific fields of an object.\n * Only supports modifying properties of an object (even if nested in an array).\n * Does not support array manipulation (adding/removing items).\n */\nexport function limitModification(object, modifiableFieldPaths, modifier) {\n    const clone = deepClone(object);\n    const result = modifier(clone);\n    objectEntries(modifiableFieldPaths).forEach(([fieldPath, fieldType]) => \n    // Traverse both object and clone simultaneously up to the path and apply the modification from the clone to the original object when the type is valid\n    setValueAtPath(object, clone, fieldPath.split(/\\.|(?=\\[\\])/), fieldType));\n    return result;\n}\nfunction setValueAtPath(object, clone, pathSegments, fieldType) {\n    const [field, ...restPathSegments] = pathSegments;\n    if (field === '[]') {\n        if (Array.isArray(object) && Array.isArray(clone)) {\n            object.forEach((item, i) => setValueAtPath(item, clone[i], restPathSegments, fieldType));\n        }\n        return;\n    }\n    if (!isValidObject(object) || !isValidObject(clone)) {\n        return;\n    }\n    if (restPathSegments.length > 0) {\n        return setValueAtPath(object[field], clone[field], restPathSegments, fieldType);\n    }\n    setNestedValue(object, field, clone[field], fieldType);\n}\nfunction setNestedValue(object, field, value, fieldType) {\n    const newType = getType(value);\n    if (newType === fieldType) {\n        object[field] = sanitize(value);\n    }\n    else if (fieldType === 'object' && (newType === 'undefined' || newType === 'null')) {\n        object[field] = {};\n    }\n}\nfunction isValidObject(object) {\n    return getType(object) === 'object';\n}\n//# sourceMappingURL=limitModification.js.map","import { combine, isEmptyObject, timeStampNow, currentDrift, display, createEventRateLimiter, canUseEventBridge, round, isExperimentalFeatureEnabled, ExperimentalFeature, } from '@datadog/browser-core';\nimport { DISCARDED } from '../hooks';\nimport { limitModification } from './limitModification';\nconst VIEW_MODIFIABLE_FIELD_PATHS = {\n    'view.name': 'string',\n    'view.url': 'string',\n    'view.referrer': 'string',\n};\nconst USER_CUSTOMIZABLE_FIELD_PATHS = {\n    context: 'object',\n};\nconst ROOT_MODIFIABLE_FIELD_PATHS = {\n    service: 'string',\n    version: 'string',\n};\nlet modifiableFieldPathsByEvent;\nexport function startRumAssembly(configuration, lifeCycle, hooks, reportError) {\n    modifiableFieldPathsByEvent = {\n        [\"view\" /* RumEventType.VIEW */]: {\n            'view.performance.lcp.resource_url': 'string',\n            ...USER_CUSTOMIZABLE_FIELD_PATHS,\n            ...VIEW_MODIFIABLE_FIELD_PATHS,\n        },\n        [\"error\" /* RumEventType.ERROR */]: {\n            'error.message': 'string',\n            'error.stack': 'string',\n            'error.resource.url': 'string',\n            'error.fingerprint': 'string',\n            ...USER_CUSTOMIZABLE_FIELD_PATHS,\n            ...VIEW_MODIFIABLE_FIELD_PATHS,\n            ...ROOT_MODIFIABLE_FIELD_PATHS,\n        },\n        [\"resource\" /* RumEventType.RESOURCE */]: {\n            'resource.url': 'string',\n            ...(isExperimentalFeatureEnabled(ExperimentalFeature.WRITABLE_RESOURCE_GRAPHQL)\n                ? { 'resource.graphql': 'object' }\n                : {}),\n            ...USER_CUSTOMIZABLE_FIELD_PATHS,\n            ...VIEW_MODIFIABLE_FIELD_PATHS,\n            ...ROOT_MODIFIABLE_FIELD_PATHS,\n        },\n        [\"action\" /* RumEventType.ACTION */]: {\n            'action.target.name': 'string',\n            ...USER_CUSTOMIZABLE_FIELD_PATHS,\n            ...VIEW_MODIFIABLE_FIELD_PATHS,\n            ...ROOT_MODIFIABLE_FIELD_PATHS,\n        },\n        [\"long_task\" /* RumEventType.LONG_TASK */]: {\n            'long_task.scripts[].source_url': 'string',\n            'long_task.scripts[].invoker': 'string',\n            ...USER_CUSTOMIZABLE_FIELD_PATHS,\n            ...VIEW_MODIFIABLE_FIELD_PATHS,\n        },\n        [\"vital\" /* RumEventType.VITAL */]: {\n            ...USER_CUSTOMIZABLE_FIELD_PATHS,\n            ...VIEW_MODIFIABLE_FIELD_PATHS,\n        },\n    };\n    const eventRateLimiters = {\n        [\"error\" /* RumEventType.ERROR */]: createEventRateLimiter(\"error\" /* RumEventType.ERROR */, configuration.eventRateLimiterThreshold, reportError),\n        [\"action\" /* RumEventType.ACTION */]: createEventRateLimiter(\"action\" /* RumEventType.ACTION */, configuration.eventRateLimiterThreshold, reportError),\n        [\"vital\" /* RumEventType.VITAL */]: createEventRateLimiter(\"vital\" /* RumEventType.VITAL */, configuration.eventRateLimiterThreshold, reportError),\n    };\n    lifeCycle.subscribe(12 /* LifeCycleEventType.RAW_RUM_EVENT_COLLECTED */, ({ startTime, duration, rawRumEvent, domainContext, customerContext }) => {\n        const rumContext = {\n            _dd: {\n                format_version: 2,\n                drift: currentDrift(),\n                configuration: {\n                    session_sample_rate: round(configuration.sessionSampleRate, 3),\n                    session_replay_sample_rate: round(configuration.sessionReplaySampleRate, 3),\n                },\n                browser_sdk_version: canUseEventBridge() ? \"6.6.4\" : undefined,\n            },\n            application: {\n                id: configuration.applicationId,\n            },\n            date: timeStampNow(),\n            source: 'browser',\n        };\n        const assembledEvent = hooks.triggerHook(0 /* HookNames.Assemble */, {\n            eventType: rawRumEvent.type,\n            startTime,\n            duration,\n        });\n        if (assembledEvent === DISCARDED) {\n            return;\n        }\n        const serverRumEvent = combine(rumContext, assembledEvent, { context: customerContext }, rawRumEvent);\n        if (shouldSend(serverRumEvent, configuration.beforeSend, domainContext, eventRateLimiters)) {\n            if (isEmptyObject(serverRumEvent.context)) {\n                delete serverRumEvent.context;\n            }\n            lifeCycle.notify(13 /* LifeCycleEventType.RUM_EVENT_COLLECTED */, serverRumEvent);\n        }\n    });\n}\nfunction shouldSend(event, beforeSend, domainContext, eventRateLimiters) {\n    var _a;\n    if (beforeSend) {\n        const result = limitModification(event, modifiableFieldPathsByEvent[event.type], (event) => beforeSend(event, domainContext));\n        if (result === false && event.type !== \"view\" /* RumEventType.VIEW */) {\n            return false;\n        }\n        if (result === false) {\n            display.warn(\"Can't dismiss view events using beforeSend!\");\n        }\n    }\n    const rateLimitReached = (_a = eventRateLimiters[event.type]) === null || _a === void 0 ? void 0 : _a.isLimitReached();\n    return !rateLimitReached;\n}\n//# sourceMappingURL=assembly.js.map","import { sendToExtension, createPageMayExitObservable, startTelemetry, canUseEventBridge, getEventBridge, addTelemetryDebug, drainPreStartTelemetry, } from '@datadog/browser-core';\nimport { createDOMMutationObservable } from '../browser/domMutationObservable';\nimport { createWindowOpenObservable } from '../browser/windowOpenObservable';\nimport { startInternalContext } from '../domain/contexts/internalContext';\nimport { LifeCycle } from '../domain/lifeCycle';\nimport { startViewHistory } from '../domain/contexts/viewHistory';\nimport { startRequestCollection } from '../domain/requestCollection';\nimport { startActionCollection } from '../domain/action/actionCollection';\nimport { startErrorCollection } from '../domain/error/errorCollection';\nimport { startResourceCollection } from '../domain/resource/resourceCollection';\nimport { startViewCollection } from '../domain/view/viewCollection';\nimport { startRumSessionManager, startRumSessionManagerStub } from '../domain/rumSessionManager';\nimport { startRumBatch } from '../transport/startRumBatch';\nimport { startRumEventBridge } from '../transport/startRumEventBridge';\nimport { startUrlContexts } from '../domain/contexts/urlContexts';\nimport { createLocationChangeObservable } from '../browser/locationChangeObservable';\nimport { startFeatureFlagContexts } from '../domain/contexts/featureFlagContext';\nimport { startCustomerDataTelemetry } from '../domain/startCustomerDataTelemetry';\nimport { startPageStateHistory } from '../domain/contexts/pageStateHistory';\nimport { startDisplayContext } from '../domain/contexts/displayContext';\nimport { startVitalCollection } from '../domain/vital/vitalCollection';\nimport { startCiVisibilityContext } from '../domain/contexts/ciVisibilityContext';\nimport { startLongAnimationFrameCollection } from '../domain/longAnimationFrame/longAnimationFrameCollection';\nimport { RumPerformanceEntryType, supportPerformanceTimingEvent } from '../browser/performanceObservable';\nimport { startLongTaskCollection } from '../domain/longTask/longTaskCollection';\nimport { createHooks } from '../hooks';\nimport { startSyntheticsContext } from '../domain/contexts/syntheticsContext';\nimport { startGlobalContext } from '../domain/contexts/globalContext';\nimport { startUserContext } from '../domain/contexts/userContext';\nimport { startAccountContext } from '../domain/contexts/accountContext';\nimport { startRumAssembly } from '../domain/assembly';\nimport { startSessionContext } from '../domain/contexts/sessionContext';\nimport { startConnectivityContext } from '../domain/contexts/connectivityContext';\nexport function startRum(configuration, recorderApi, profilerApi, initialViewOptions, createEncoder, \n// `startRum` and its subcomponents assume tracking consent is granted initially and starts\n// collecting logs unconditionally. As such, `startRum` should be called with a\n// `trackingConsentState` set to \"granted\".\ntrackingConsentState, customVitalsState) {\n    const cleanupTasks = [];\n    const lifeCycle = new LifeCycle();\n    const hooks = createHooks();\n    lifeCycle.subscribe(13 /* LifeCycleEventType.RUM_EVENT_COLLECTED */, (event) => sendToExtension('rum', event));\n    const telemetry = startRumTelemetry(configuration);\n    telemetry.setContextProvider(() => {\n        var _a, _b;\n        return ({\n            application: {\n                id: configuration.applicationId,\n            },\n            session: {\n                id: (_a = session.findTrackedSession()) === null || _a === void 0 ? void 0 : _a.id,\n            },\n            view: {\n                id: (_b = viewHistory.findView()) === null || _b === void 0 ? void 0 : _b.id,\n            },\n            action: {\n                id: actionContexts.findActionId(),\n            },\n        });\n    });\n    const reportError = (error) => {\n        lifeCycle.notify(14 /* LifeCycleEventType.RAW_ERROR_COLLECTED */, { error });\n        addTelemetryDebug('Error reported to customer', { 'error.message': error.message });\n    };\n    const pageMayExitObservable = createPageMayExitObservable(configuration);\n    const pageMayExitSubscription = pageMayExitObservable.subscribe((event) => {\n        lifeCycle.notify(11 /* LifeCycleEventType.PAGE_MAY_EXIT */, event);\n    });\n    cleanupTasks.push(() => pageMayExitSubscription.unsubscribe());\n    const session = !canUseEventBridge()\n        ? startRumSessionManager(configuration, lifeCycle, trackingConsentState)\n        : startRumSessionManagerStub();\n    if (!canUseEventBridge()) {\n        const batch = startRumBatch(configuration, lifeCycle, telemetry.observable, reportError, pageMayExitObservable, session.expireObservable, createEncoder);\n        cleanupTasks.push(() => batch.stop());\n        startCustomerDataTelemetry(configuration, telemetry, lifeCycle, batch.flushObservable);\n    }\n    else {\n        startRumEventBridge(lifeCycle);\n    }\n    const domMutationObservable = createDOMMutationObservable();\n    const locationChangeObservable = createLocationChangeObservable(configuration, location);\n    const { observable: windowOpenObservable, stop: stopWindowOpen } = createWindowOpenObservable();\n    cleanupTasks.push(stopWindowOpen);\n    const pageStateHistory = startPageStateHistory(hooks, configuration);\n    const viewHistory = startViewHistory(lifeCycle);\n    cleanupTasks.push(() => viewHistory.stop());\n    const urlContexts = startUrlContexts(lifeCycle, hooks, locationChangeObservable, location);\n    cleanupTasks.push(() => urlContexts.stop());\n    const featureFlagContexts = startFeatureFlagContexts(lifeCycle, hooks, configuration);\n    startSessionContext(hooks, session, recorderApi, viewHistory);\n    startConnectivityContext(hooks);\n    const globalContext = startGlobalContext(hooks, configuration);\n    const userContext = startUserContext(hooks, configuration, session);\n    const accountContext = startAccountContext(hooks, configuration);\n    const { actionContexts, addAction, stop: stopRumEventCollection, } = startRumEventCollection(lifeCycle, hooks, configuration, pageStateHistory, domMutationObservable, windowOpenObservable, reportError);\n    cleanupTasks.push(stopRumEventCollection);\n    drainPreStartTelemetry();\n    const { addTiming, startView, setViewName, setViewContext, setViewContextProperty, getViewContext, stop: stopViewCollection, } = startViewCollection(lifeCycle, hooks, configuration, location, domMutationObservable, windowOpenObservable, locationChangeObservable, recorderApi, viewHistory, initialViewOptions);\n    cleanupTasks.push(stopViewCollection);\n    const { stop: stopResourceCollection } = startResourceCollection(lifeCycle, configuration, pageStateHistory);\n    cleanupTasks.push(stopResourceCollection);\n    if (configuration.trackLongTasks) {\n        if (supportPerformanceTimingEvent(RumPerformanceEntryType.LONG_ANIMATION_FRAME)) {\n            const { stop: stopLongAnimationFrameCollection } = startLongAnimationFrameCollection(lifeCycle, configuration);\n            cleanupTasks.push(stopLongAnimationFrameCollection);\n        }\n        else {\n            startLongTaskCollection(lifeCycle, configuration);\n        }\n    }\n    const { addError } = startErrorCollection(lifeCycle, configuration);\n    startRequestCollection(lifeCycle, configuration, session, userContext, accountContext);\n    const vitalCollection = startVitalCollection(lifeCycle, pageStateHistory, customVitalsState);\n    const internalContext = startInternalContext(configuration.applicationId, session, viewHistory, actionContexts, urlContexts);\n    // Add Clean-up tasks for Profiler API.\n    cleanupTasks.push(() => profilerApi.stop());\n    return {\n        addAction,\n        addError,\n        addTiming,\n        addFeatureFlagEvaluation: featureFlagContexts.addFeatureFlagEvaluation,\n        startView,\n        setViewContext,\n        setViewContextProperty,\n        getViewContext,\n        setViewName,\n        lifeCycle,\n        viewHistory,\n        session,\n        stopSession: () => session.expire(),\n        getInternalContext: internalContext.get,\n        startDurationVital: vitalCollection.startDurationVital,\n        stopDurationVital: vitalCollection.stopDurationVital,\n        addDurationVital: vitalCollection.addDurationVital,\n        globalContext,\n        userContext,\n        accountContext,\n        stop: () => {\n            cleanupTasks.forEach((task) => task());\n        },\n    };\n}\nfunction startRumTelemetry(configuration) {\n    const telemetry = startTelemetry(\"browser-rum-sdk\" /* TelemetryService.RUM */, configuration);\n    if (canUseEventBridge()) {\n        const bridge = getEventBridge();\n        telemetry.observable.subscribe((event) => bridge.send('internal_telemetry', event));\n    }\n    return telemetry;\n}\nexport function startRumEventCollection(lifeCycle, hooks, configuration, pageStateHistory, domMutationObservable, windowOpenObservable, reportError) {\n    const actionCollection = startActionCollection(lifeCycle, hooks, domMutationObservable, windowOpenObservable, configuration);\n    const displayContext = startDisplayContext(hooks, configuration);\n    const ciVisibilityContext = startCiVisibilityContext(hooks);\n    startSyntheticsContext(hooks);\n    startRumAssembly(configuration, lifeCycle, hooks, reportError);\n    return {\n        pageStateHistory,\n        addAction: actionCollection.addAction,\n        actionContexts: actionCollection.actionContexts,\n        stop: () => {\n            actionCollection.stop();\n            ciVisibilityContext.stop();\n            displayContext.stop();\n            pageStateHistory.stop();\n        },\n    };\n}\n//# sourceMappingURL=startRum.js.map","import { getEventBridge } from '@datadog/browser-core';\nexport function startRumEventBridge(lifeCycle) {\n    const bridge = getEventBridge();\n    lifeCycle.subscribe(13 /* LifeCycleEventType.RUM_EVENT_COLLECTED */, (serverRumEvent) => {\n        bridge.send('rum', serverRumEvent);\n    });\n}\n//# sourceMappingURL=startRumEventBridge.js.map","import { instrumentMethod, Observable } from '@datadog/browser-core';\nexport function createWindowOpenObservable() {\n    const observable = new Observable();\n    const { stop } = instrumentMethod(window, 'open', () => observable.notify());\n    return { observable, stop };\n}\n//# sourceMappingURL=windowOpenObservable.js.map","import { DISCARDED } from '../../hooks';\nexport function startSessionContext(hooks, sessionManager, recorderApi, viewHistory) {\n    hooks.register(0 /* HookNames.Assemble */, ({ eventType, startTime }) => {\n        const session = sessionManager.findTrackedSession(startTime);\n        const view = viewHistory.findView(startTime);\n        if (!session || !view) {\n            return DISCARDED;\n        }\n        let hasReplay;\n        let sampledForReplay;\n        let isActive;\n        if (eventType === \"view\" /* RumEventType.VIEW */) {\n            hasReplay = recorderApi.getReplayStats(view.id) ? true : undefined;\n            sampledForReplay = session.sessionReplay === 1 /* SessionReplayState.SAMPLED */;\n            isActive = view.sessionIsActive ? undefined : false;\n        }\n        else {\n            hasReplay = recorderApi.isRecording() ? true : undefined;\n        }\n        return {\n            type: eventType,\n            session: {\n                id: session.id,\n                type: \"user\" /* SessionType.USER */,\n                has_replay: hasReplay,\n                sampled_for_replay: sampledForReplay,\n                is_active: isActive,\n            },\n        };\n    });\n}\n//# sourceMappingURL=sessionContext.js.map","import { getConnectivity } from '@datadog/browser-core';\nexport function startConnectivityContext(hooks) {\n    hooks.register(0 /* HookNames.Assemble */, ({ eventType }) => ({\n        type: eventType,\n        connectivity: getConnectivity(),\n    }));\n}\n//# sourceMappingURL=connectivityContext.js.map","import { monitor } from '@datadog/browser-core';\nimport { getViewportDimension, initViewportObservable } from '../../browser/viewportObservable';\nexport function startDisplayContext(hooks, configuration) {\n    let viewport;\n    // Use requestAnimationFrame to delay the calculation of viewport dimensions until after SDK initialization, preventing long tasks.\n    const animationFrameId = requestAnimationFrame(monitor(() => {\n        viewport = getViewportDimension();\n    }));\n    const unsubscribeViewport = initViewportObservable(configuration).subscribe((viewportDimension) => {\n        viewport = viewportDimension;\n    }).unsubscribe;\n    hooks.register(0 /* HookNames.Assemble */, ({ eventType }) => ({\n        type: eventType,\n        display: viewport ? { viewport } : undefined,\n    }));\n    return {\n        stop: () => {\n            unsubscribeViewport();\n            if (animationFrameId) {\n                cancelAnimationFrame(animationFrameId);\n            }\n        },\n    };\n}\n//# sourceMappingURL=displayContext.js.map","import { getSyntheticsResultId, getSyntheticsTestId, willSyntheticsInjectRum } from '@datadog/browser-core';\nexport function startSyntheticsContext(hooks) {\n    hooks.register(0 /* HookNames.Assemble */, ({ eventType }) => {\n        const testId = getSyntheticsTestId();\n        const resultId = getSyntheticsResultId();\n        if (!testId || !resultId) {\n            return;\n        }\n        return {\n            type: eventType,\n            session: {\n                type: \"synthetics\" /* SessionType.SYNTHETICS */,\n            },\n            synthetics: {\n                test_id: testId,\n                result_id: resultId,\n                injected: willSyntheticsInjectRum(),\n            },\n        };\n    });\n}\n//# sourceMappingURL=syntheticsContext.js.map","import { toServerDuration, relativeToClocks, generateUUID } from '@datadog/browser-core';\nimport { createPerformanceObservable, RumPerformanceEntryType } from '../../browser/performanceObservable';\nexport function startLongAnimationFrameCollection(lifeCycle, configuration) {\n    const performanceResourceSubscription = createPerformanceObservable(configuration, {\n        type: RumPerformanceEntryType.LONG_ANIMATION_FRAME,\n        buffered: true,\n    }).subscribe((entries) => {\n        for (const entry of entries) {\n            const startClocks = relativeToClocks(entry.startTime);\n            const rawRumEvent = {\n                date: startClocks.timeStamp,\n                long_task: {\n                    id: generateUUID(),\n                    entry_type: \"long-animation-frame\" /* RumLongTaskEntryType.LONG_ANIMATION_FRAME */,\n                    duration: toServerDuration(entry.duration),\n                    blocking_duration: toServerDuration(entry.blockingDuration),\n                    first_ui_event_timestamp: toServerDuration(entry.firstUIEventTimestamp),\n                    render_start: toServerDuration(entry.renderStart),\n                    style_and_layout_start: toServerDuration(entry.styleAndLayoutStart),\n                    start_time: toServerDuration(entry.startTime),\n                    scripts: entry.scripts.map((script) => ({\n                        duration: toServerDuration(script.duration),\n                        pause_duration: toServerDuration(script.pauseDuration),\n                        forced_style_and_layout_duration: toServerDuration(script.forcedStyleAndLayoutDuration),\n                        start_time: toServerDuration(script.startTime),\n                        execution_start: toServerDuration(script.executionStart),\n                        source_url: script.sourceURL,\n                        source_function_name: script.sourceFunctionName,\n                        source_char_position: script.sourceCharPosition,\n                        invoker: script.invoker,\n                        invoker_type: script.invokerType,\n                        window_attribution: script.windowAttribution,\n                    })),\n                },\n                type: \"long_task\" /* RumEventType.LONG_TASK */,\n                _dd: {\n                    discarded: false,\n                },\n            };\n            lifeCycle.notify(12 /* LifeCycleEventType.RAW_RUM_EVENT_COLLECTED */, {\n                rawRumEvent,\n                startTime: startClocks.relative,\n                duration: entry.duration,\n                domainContext: { performanceEntry: entry },\n            });\n        }\n    });\n    return { stop: () => performanceResourceSubscription.unsubscribe() };\n}\n//# sourceMappingURL=longAnimationFrameCollection.js.map","import { toServerDuration, relativeToClocks, generateUUID } from '@datadog/browser-core';\nimport { createPerformanceObservable, RumPerformanceEntryType } from '../../browser/performanceObservable';\nexport function startLongTaskCollection(lifeCycle, configuration) {\n    const performanceLongTaskSubscription = createPerformanceObservable(configuration, {\n        type: RumPerformanceEntryType.LONG_TASK,\n        buffered: true,\n    }).subscribe((entries) => {\n        for (const entry of entries) {\n            if (entry.entryType !== RumPerformanceEntryType.LONG_TASK) {\n                break;\n            }\n            if (!configuration.trackLongTasks) {\n                break;\n            }\n            const startClocks = relativeToClocks(entry.startTime);\n            const rawRumEvent = {\n                date: startClocks.timeStamp,\n                long_task: {\n                    id: generateUUID(),\n                    entry_type: \"long-task\" /* RumLongTaskEntryType.LONG_TASK */,\n                    duration: toServerDuration(entry.duration),\n                },\n                type: \"long_task\" /* RumEventType.LONG_TASK */,\n                _dd: {\n                    discarded: false,\n                },\n            };\n            lifeCycle.notify(12 /* LifeCycleEventType.RAW_RUM_EVENT_COLLECTED */, {\n                rawRumEvent,\n                startTime: startClocks.relative,\n                duration: entry.duration,\n                domainContext: { performanceEntry: entry },\n            });\n        }\n    });\n    return {\n        stop() {\n            performanceLongTaskSubscription.unsubscribe();\n        },\n    };\n}\n//# sourceMappingURL=longTaskCollection.js.map","/**\n * Internal context keep returning v1 format\n * to not break compatibility with logs data format\n */\nexport function startInternalContext(applicationId, sessionManager, viewHistory, actionContexts, urlContexts) {\n    return {\n        get: (startTime) => {\n            const viewContext = viewHistory.findView(startTime);\n            const urlContext = urlContexts.findUrl(startTime);\n            const session = sessionManager.findTrackedSession(startTime);\n            if (session && viewContext && urlContext) {\n                const actionId = actionContexts.findActionId(startTime);\n                return {\n                    application_id: applicationId,\n                    session_id: session.id,\n                    user_action: actionId ? { id: actionId } : undefined,\n                    view: { id: viewContext.id, name: viewContext.name, referrer: urlContext.referrer, url: urlContext.url },\n                };\n            }\n        },\n    };\n}\n//# sourceMappingURL=internalContext.js.map","import { INTAKE_SITE_STAGING, INTAKE_SITE_US1, INTAKE_SITE_EU1 } from '@datadog/browser-core';\nexport function getSessionReplayUrl(configuration, { session, viewContext, errorType, }) {\n    const sessionId = session ? session.id : 'no-session-id';\n    const parameters = [];\n    if (errorType !== undefined) {\n        parameters.push(`error-type=${errorType}`);\n    }\n    if (viewContext) {\n        parameters.push(`seed=${viewContext.id}`);\n        parameters.push(`from=${viewContext.startClocks.timeStamp}`);\n    }\n    const origin = getDatadogSiteUrl(configuration);\n    const path = `/rum/replay/sessions/${sessionId}`;\n    return `${origin}${path}?${parameters.join('&')}`;\n}\nexport function getDatadogSiteUrl(rumConfiguration) {\n    const site = rumConfiguration.site;\n    const subdomain = rumConfiguration.subdomain || getSiteDefaultSubdomain(rumConfiguration);\n    return `https://${subdomain ? `${subdomain}.` : ''}${site}`;\n}\nfunction getSiteDefaultSubdomain(configuration) {\n    switch (configuration.site) {\n        case INTAKE_SITE_US1:\n        case INTAKE_SITE_EU1:\n            return 'app';\n        case INTAKE_SITE_STAGING:\n            return 'dd';\n        default:\n            return undefined;\n    }\n}\n//# sourceMappingURL=getSessionReplayUrl.js.map","export const MAX_STATS_HISTORY = 1000;\nlet statsPerView;\nexport function getSegmentsCount(viewId) {\n    return getOrCreateReplayStats(viewId).segments_count;\n}\nexport function addSegment(viewId) {\n    getOrCreateReplayStats(viewId).segments_count += 1;\n}\nexport function addRecord(viewId) {\n    getOrCreateReplayStats(viewId).records_count += 1;\n}\nexport function addWroteData(viewId, additionalBytesCount) {\n    getOrCreateReplayStats(viewId).segments_total_raw_size += additionalBytesCount;\n}\nexport function getReplayStats(viewId) {\n    return statsPerView === null || statsPerView === void 0 ? void 0 : statsPerView.get(viewId);\n}\nexport function resetReplayStats() {\n    statsPerView = undefined;\n}\nfunction getOrCreateReplayStats(viewId) {\n    if (!statsPerView) {\n        statsPerView = new Map();\n    }\n    let replayStats;\n    if (statsPerView.has(viewId)) {\n        replayStats = statsPerView.get(viewId);\n    }\n    else {\n        replayStats = {\n            records_count: 0,\n            segments_count: 0,\n            segments_total_raw_size: 0,\n        };\n        statsPerView.set(viewId, replayStats);\n        if (statsPerView.size > MAX_STATS_HISTORY) {\n            deleteOldestStats();\n        }\n    }\n    return replayStats;\n}\nfunction deleteOldestStats() {\n    if (!statsPerView) {\n        return;\n    }\n    const toDelete = statsPerView.keys().next().value;\n    if (toDelete) {\n        statsPerView.delete(toDelete);\n    }\n}\n//# sourceMappingURL=replayStats.js.map","import { addEventListener, addTelemetryDebug, concatBuffers } from '@datadog/browser-core';\nexport function createDeflateEncoder(configuration, worker, streamId) {\n    let rawBytesCount = 0;\n    let compressedData = [];\n    let compressedDataTrailer;\n    let nextWriteActionId = 0;\n    const pendingWriteActions = [];\n    const { stop: removeMessageListener } = addEventListener(configuration, worker, 'message', ({ data: workerResponse }) => {\n        if (workerResponse.type !== 'wrote' || workerResponse.streamId !== streamId) {\n            return;\n        }\n        rawBytesCount += workerResponse.additionalBytesCount;\n        compressedData.push(workerResponse.result);\n        compressedDataTrailer = workerResponse.trailer;\n        const nextPendingAction = pendingWriteActions.shift();\n        if (nextPendingAction && nextPendingAction.id === workerResponse.id) {\n            if (nextPendingAction.writeCallback) {\n                nextPendingAction.writeCallback(workerResponse.result.byteLength);\n            }\n            else if (nextPendingAction.finishCallback) {\n                nextPendingAction.finishCallback();\n            }\n        }\n        else {\n            removeMessageListener();\n            addTelemetryDebug('Worker responses received out of order.');\n        }\n    });\n    function consumeResult() {\n        const output = compressedData.length === 0 ? new Uint8Array(0) : concatBuffers(compressedData.concat(compressedDataTrailer));\n        const result = {\n            rawBytesCount,\n            output,\n            outputBytesCount: output.byteLength,\n            encoding: 'deflate',\n        };\n        rawBytesCount = 0;\n        compressedData = [];\n        return result;\n    }\n    function sendResetIfNeeded() {\n        if (nextWriteActionId > 0) {\n            worker.postMessage({\n                action: 'reset',\n                streamId,\n            });\n            nextWriteActionId = 0;\n        }\n    }\n    return {\n        isAsync: true,\n        get isEmpty() {\n            return nextWriteActionId === 0;\n        },\n        write(data, callback) {\n            worker.postMessage({\n                action: 'write',\n                id: nextWriteActionId,\n                data,\n                streamId,\n            });\n            pendingWriteActions.push({\n                id: nextWriteActionId,\n                writeCallback: callback,\n                data,\n            });\n            nextWriteActionId += 1;\n        },\n        finish(callback) {\n            sendResetIfNeeded();\n            if (!pendingWriteActions.length) {\n                callback(consumeResult());\n            }\n            else {\n                // Make sure we do not call any write callback\n                pendingWriteActions.forEach((pendingWriteAction) => {\n                    delete pendingWriteAction.writeCallback;\n                });\n                // Wait for the last action to finish before calling the finish callback\n                pendingWriteActions[pendingWriteActions.length - 1].finishCallback = () => callback(consumeResult());\n            }\n        },\n        finishSync() {\n            sendResetIfNeeded();\n            const pendingData = pendingWriteActions\n                .map((pendingWriteAction) => {\n                // Make sure we do not call any write or finish callback\n                delete pendingWriteAction.writeCallback;\n                delete pendingWriteAction.finishCallback;\n                return pendingWriteAction.data;\n            })\n                .join('');\n            return { ...consumeResult(), pendingData };\n        },\n        estimateEncodedBytesCount(data) {\n            // This is a rough estimation of the data size once it'll be encoded by deflate. We observed\n            // that if it's the first chunk of data pushed to the stream, the ratio is lower (3-4), but\n            // after that the ratio is greater (10+). We chose 8 here, which (on average) seems to produce\n            // requests of the expected size.\n            return data.length / 8;\n        },\n        stop() {\n            removeMessageListener();\n        },\n    };\n}\n//# sourceMappingURL=deflateEncoder.js.map","import { addTelemetryError, display, DOCS_ORIGIN } from '@datadog/browser-core';\nexport function reportScriptLoadingError({ configuredUrl, error, source, scriptType, }) {\n    display.error(`${source} failed to start: an error occurred while initializing the ${scriptType}:`, error);\n    if (error instanceof Event || (error instanceof Error && isMessageCspRelated(error.message))) {\n        let baseMessage;\n        if (configuredUrl) {\n            baseMessage = `Please make sure the ${scriptType} URL ${configuredUrl} is correct and CSP is correctly configured.`;\n        }\n        else {\n            baseMessage = 'Please make sure CSP is correctly configured.';\n        }\n        display.error(`${baseMessage} See documentation at ${DOCS_ORIGIN}/integrations/content_security_policy_logs/#use-csp-with-real-user-monitoring-and-session-replay`);\n    }\n    else if (scriptType === 'worker') {\n        addTelemetryError(error);\n    }\n}\nfunction isMessageCspRelated(message) {\n    return (message.includes('Content Security Policy') ||\n        // Related to `require-trusted-types-for` CSP: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy/require-trusted-types-for\n        message.includes(\"requires 'TrustedScriptURL'\"));\n}\n//# sourceMappingURL=scriptLoadingError.js.map","import { addTelemetryError, display, addEventListener, setTimeout, ONE_SECOND } from '@datadog/browser-core';\nimport { reportScriptLoadingError } from '../scriptLoadingError';\nexport const INITIALIZATION_TIME_OUT_DELAY = 30 * ONE_SECOND;\nfunction createDeflateWorker(configuration) {\n    return new Worker(configuration.workerUrl || URL.createObjectURL(new Blob([\"(()=>{function t(t){const e=t.reduce(((t,e)=>t+e.length),0),a=new Uint8Array(e);let n=0;for(const e of t)a.set(e,n),n+=e.length;return a}function e(t){for(var e=t.length;--e>=0;)t[e]=0}var a=new Uint8Array([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0]),n=new Uint8Array([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13]),r=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7]),i=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),s=Array(576);e(s);var h=Array(60);e(h);var l=Array(512);e(l);var _=Array(256);e(_);var o=Array(29);e(o);var d,u,f,c=Array(30);function p(t,e,a,n,r){this.static_tree=t,this.extra_bits=e,this.extra_base=a,this.elems=n,this.max_length=r,this.has_stree=t&&t.length}function g(t,e){this.dyn_tree=t,this.max_code=0,this.stat_desc=e}e(c);var v=function(t){return t<256?l[t]:l[256+(t>>>7)]},w=function(t,e){t.pending_buf[t.pending++]=255&e,t.pending_buf[t.pending++]=e>>>8&255},m=function(t,e,a){t.bi_valid>16-a?(t.bi_buf|=e<<t.bi_valid&65535,w(t,t.bi_buf),t.bi_buf=e>>16-t.bi_valid,t.bi_valid+=a-16):(t.bi_buf|=e<<t.bi_valid&65535,t.bi_valid+=a)},b=function(t,e,a){m(t,a[2*e],a[2*e+1])},y=function(t,e){var a=0;do{a|=1&t,t>>>=1,a<<=1}while(--e>0);return a>>>1},z=function(t,e,a){var n,r,i=Array(16),s=0;for(n=1;n<=15;n++)i[n]=s=s+a[n-1]<<1;for(r=0;r<=e;r++){var h=t[2*r+1];0!==h&&(t[2*r]=y(i[h]++,h))}},k=function(t){var e;for(e=0;e<286;e++)t.dyn_ltree[2*e]=0;for(e=0;e<30;e++)t.dyn_dtree[2*e]=0;for(e=0;e<19;e++)t.bl_tree[2*e]=0;t.dyn_ltree[512]=1,t.opt_len=t.static_len=0,t.last_lit=t.matches=0},x=function(t){t.bi_valid>8?w(t,t.bi_buf):t.bi_valid>0&&(t.pending_buf[t.pending++]=t.bi_buf),t.bi_buf=0,t.bi_valid=0},A=function(t,e,a,n){var r=2*e,i=2*a;return t[r]<t[i]||t[r]===t[i]&&n[e]<=n[a]},U=function(t,e,a){for(var n=t.heap[a],r=a<<1;r<=t.heap_len&&(r<t.heap_len&&A(e,t.heap[r+1],t.heap[r],t.depth)&&r++,!A(e,n,t.heap[r],t.depth));)t.heap[a]=t.heap[r],a=r,r<<=1;t.heap[a]=n},B=function(t,e,r){var i,s,h,l,d=0;if(0!==t.last_lit)do{i=t.pending_buf[t.d_buf+2*d]<<8|t.pending_buf[t.d_buf+2*d+1],s=t.pending_buf[t.l_buf+d],d++,0===i?b(t,s,e):(h=_[s],b(t,h+256+1,e),0!==(l=a[h])&&(s-=o[h],m(t,s,l)),i--,h=v(i),b(t,h,r),0!==(l=n[h])&&(i-=c[h],m(t,i,l)))}while(d<t.last_lit);b(t,256,e)},I=function(t,e){var a,n,r,i=e.dyn_tree,s=e.stat_desc.static_tree,h=e.stat_desc.has_stree,l=e.stat_desc.elems,_=-1;for(t.heap_len=0,t.heap_max=573,a=0;a<l;a++)0!==i[2*a]?(t.heap[++t.heap_len]=_=a,t.depth[a]=0):i[2*a+1]=0;for(;t.heap_len<2;)i[2*(r=t.heap[++t.heap_len]=_<2?++_:0)]=1,t.depth[r]=0,t.opt_len--,h&&(t.static_len-=s[2*r+1]);for(e.max_code=_,a=t.heap_len>>1;a>=1;a--)U(t,i,a);r=l;do{a=t.heap[1],t.heap[1]=t.heap[t.heap_len--],U(t,i,1),n=t.heap[1],t.heap[--t.heap_max]=a,t.heap[--t.heap_max]=n,i[2*r]=i[2*a]+i[2*n],t.depth[r]=(t.depth[a]>=t.depth[n]?t.depth[a]:t.depth[n])+1,i[2*a+1]=i[2*n+1]=r,t.heap[1]=r++,U(t,i,1)}while(t.heap_len>=2);t.heap[--t.heap_max]=t.heap[1],function(t,e){var a,n,r,i,s,h,l=e.dyn_tree,_=e.max_code,o=e.stat_desc.static_tree,d=e.stat_desc.has_stree,u=e.stat_desc.extra_bits,f=e.stat_desc.extra_base,c=e.stat_desc.max_length,p=0;for(i=0;i<=15;i++)t.bl_count[i]=0;for(l[2*t.heap[t.heap_max]+1]=0,a=t.heap_max+1;a<573;a++)(i=l[2*l[2*(n=t.heap[a])+1]+1]+1)>c&&(i=c,p++),l[2*n+1]=i,n>_||(t.bl_count[i]++,s=0,n>=f&&(s=u[n-f]),h=l[2*n],t.opt_len+=h*(i+s),d&&(t.static_len+=h*(o[2*n+1]+s)));if(0!==p){do{for(i=c-1;0===t.bl_count[i];)i--;t.bl_count[i]--,t.bl_count[i+1]+=2,t.bl_count[c]--,p-=2}while(p>0);for(i=c;0!==i;i--)for(n=t.bl_count[i];0!==n;)(r=t.heap[--a])>_||(l[2*r+1]!==i&&(t.opt_len+=(i-l[2*r+1])*l[2*r],l[2*r+1]=i),n--)}}(t,e),z(i,_,t.bl_count)},E=function(t,e,a){var n,r,i=-1,s=e[1],h=0,l=7,_=4;for(0===s&&(l=138,_=3),e[2*(a+1)+1]=65535,n=0;n<=a;n++)r=s,s=e[2*(n+1)+1],++h<l&&r===s||(h<_?t.bl_tree[2*r]+=h:0!==r?(r!==i&&t.bl_tree[2*r]++,t.bl_tree[32]++):h<=10?t.bl_tree[34]++:t.bl_tree[36]++,h=0,i=r,0===s?(l=138,_=3):r===s?(l=6,_=3):(l=7,_=4))},C=function(t,e,a){var n,r,i=-1,s=e[1],h=0,l=7,_=4;for(0===s&&(l=138,_=3),n=0;n<=a;n++)if(r=s,s=e[2*(n+1)+1],!(++h<l&&r===s)){if(h<_)do{b(t,r,t.bl_tree)}while(0!=--h);else 0!==r?(r!==i&&(b(t,r,t.bl_tree),h--),b(t,16,t.bl_tree),m(t,h-3,2)):h<=10?(b(t,17,t.bl_tree),m(t,h-3,3)):(b(t,18,t.bl_tree),m(t,h-11,7));h=0,i=r,0===s?(l=138,_=3):r===s?(l=6,_=3):(l=7,_=4)}},D=!1,M=function(t,e,a,n){m(t,0+(n?1:0),3),function(t,e,a){x(t),w(t,a),w(t,~a),t.pending_buf.set(t.window.subarray(e,e+a),t.pending),t.pending+=a}(t,e,a)},j=M,L=function(t,e,a,n){for(var r=65535&t,i=t>>>16&65535,s=0;0!==a;){a-=s=a>2e3?2e3:a;do{i=i+(r=r+e[n++]|0)|0}while(--s);r%=65521,i%=65521}return r|i<<16},S=new Uint32Array(function(){for(var t,e=[],a=0;a<256;a++){t=a;for(var n=0;n<8;n++)t=1&t?3988292384^t>>>1:t>>>1;e[a]=t}return e}()),T=function(t,e,a,n){var r=S,i=n+a;t^=-1;for(var s=n;s<i;s++)t=t>>>8^r[255&(t^e[s])];return~t},O={2:\\\"need dictionary\\\",1:\\\"stream end\\\",0:\\\"\\\",\\\"-1\\\":\\\"file error\\\",\\\"-2\\\":\\\"stream error\\\",\\\"-3\\\":\\\"data error\\\",\\\"-4\\\":\\\"insufficient memory\\\",\\\"-5\\\":\\\"buffer error\\\",\\\"-6\\\":\\\"incompatible version\\\"},q=j,F=function(t,e,a){return t.pending_buf[t.d_buf+2*t.last_lit]=e>>>8&255,t.pending_buf[t.d_buf+2*t.last_lit+1]=255&e,t.pending_buf[t.l_buf+t.last_lit]=255&a,t.last_lit++,0===e?t.dyn_ltree[2*a]++:(t.matches++,e--,t.dyn_ltree[2*(_[a]+256+1)]++,t.dyn_dtree[2*v(e)]++),t.last_lit===t.lit_bufsize-1},G=-2,H=258,J=262,K=103,N=113,P=666,Q=function(t,e){return t.msg=O[e],e},R=function(t){return(t<<1)-(t>4?9:0)},V=function(t){for(var e=t.length;--e>=0;)t[e]=0},W=function(t,e,a){return(e<<t.hash_shift^a)&t.hash_mask},X=function(t){var e=t.state,a=e.pending;a>t.avail_out&&(a=t.avail_out),0!==a&&(t.output.set(e.pending_buf.subarray(e.pending_out,e.pending_out+a),t.next_out),t.next_out+=a,e.pending_out+=a,t.total_out+=a,t.avail_out-=a,e.pending-=a,0===e.pending&&(e.pending_out=0))},Y=function(t,e){(function(t,e,a,n){var r,l,_=0;t.level>0?(2===t.strm.data_type&&(t.strm.data_type=function(t){var e,a=4093624447;for(e=0;e<=31;e++,a>>>=1)if(1&a&&0!==t.dyn_ltree[2*e])return 0;if(0!==t.dyn_ltree[18]||0!==t.dyn_ltree[20]||0!==t.dyn_ltree[26])return 1;for(e=32;e<256;e++)if(0!==t.dyn_ltree[2*e])return 1;return 0}(t)),I(t,t.l_desc),I(t,t.d_desc),_=function(t){var e;for(E(t,t.dyn_ltree,t.l_desc.max_code),E(t,t.dyn_dtree,t.d_desc.max_code),I(t,t.bl_desc),e=18;e>=3&&0===t.bl_tree[2*i[e]+1];e--);return t.opt_len+=3*(e+1)+5+5+4,e}(t),r=t.opt_len+3+7>>>3,(l=t.static_len+3+7>>>3)<=r&&(r=l)):r=l=a+5,a+4<=r&&-1!==e?M(t,e,a,n):4===t.strategy||l===r?(m(t,2+(n?1:0),3),B(t,s,h)):(m(t,4+(n?1:0),3),function(t,e,a,n){var r;for(m(t,e-257,5),m(t,a-1,5),m(t,n-4,4),r=0;r<n;r++)m(t,t.bl_tree[2*i[r]+1],3);C(t,t.dyn_ltree,e-1),C(t,t.dyn_dtree,a-1)}(t,t.l_desc.max_code+1,t.d_desc.max_code+1,_+1),B(t,t.dyn_ltree,t.dyn_dtree)),k(t),n&&x(t)})(t,t.block_start>=0?t.block_start:-1,t.strstart-t.block_start,e),t.block_start=t.strstart,X(t.strm)},Z=function(t,e){t.pending_buf[t.pending++]=e},$=function(t,e){t.pending_buf[t.pending++]=e>>>8&255,t.pending_buf[t.pending++]=255&e},tt=function(t,e){var a,n,r=t.max_chain_length,i=t.strstart,s=t.prev_length,h=t.nice_match,l=t.strstart>t.w_size-J?t.strstart-(t.w_size-J):0,_=t.window,o=t.w_mask,d=t.prev,u=t.strstart+H,f=_[i+s-1],c=_[i+s];t.prev_length>=t.good_match&&(r>>=2),h>t.lookahead&&(h=t.lookahead);do{if(_[(a=e)+s]===c&&_[a+s-1]===f&&_[a]===_[i]&&_[++a]===_[i+1]){i+=2,a++;do{}while(_[++i]===_[++a]&&_[++i]===_[++a]&&_[++i]===_[++a]&&_[++i]===_[++a]&&_[++i]===_[++a]&&_[++i]===_[++a]&&_[++i]===_[++a]&&_[++i]===_[++a]&&i<u);if(n=H-(u-i),i=u-H,n>s){if(t.match_start=e,s=n,n>=h)break;f=_[i+s-1],c=_[i+s]}}}while((e=d[e&o])>l&&0!=--r);return s<=t.lookahead?s:t.lookahead},et=function(t){var e,a,n,r,i,s,h,l,_,o,d=t.w_size;do{if(r=t.window_size-t.lookahead-t.strstart,t.strstart>=d+(d-J)){t.window.set(t.window.subarray(d,d+d),0),t.match_start-=d,t.strstart-=d,t.block_start-=d,e=a=t.hash_size;do{n=t.head[--e],t.head[e]=n>=d?n-d:0}while(--a);e=a=d;do{n=t.prev[--e],t.prev[e]=n>=d?n-d:0}while(--a);r+=d}if(0===t.strm.avail_in)break;if(s=t.strm,h=t.window,l=t.strstart+t.lookahead,_=r,o=void 0,(o=s.avail_in)>_&&(o=_),a=0===o?0:(s.avail_in-=o,h.set(s.input.subarray(s.next_in,s.next_in+o),l),1===s.state.wrap?s.adler=L(s.adler,h,o,l):2===s.state.wrap&&(s.adler=T(s.adler,h,o,l)),s.next_in+=o,s.total_in+=o,o),t.lookahead+=a,t.lookahead+t.insert>=3)for(i=t.strstart-t.insert,t.ins_h=t.window[i],t.ins_h=W(t,t.ins_h,t.window[i+1]);t.insert&&(t.ins_h=W(t,t.ins_h,t.window[i+3-1]),t.prev[i&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=i,i++,t.insert--,!(t.lookahead+t.insert<3)););}while(t.lookahead<J&&0!==t.strm.avail_in)},at=function(t,e){for(var a,n;;){if(t.lookahead<J){if(et(t),t.lookahead<J&&0===e)return 1;if(0===t.lookahead)break}if(a=0,t.lookahead>=3&&(t.ins_h=W(t,t.ins_h,t.window[t.strstart+3-1]),a=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart),0!==a&&t.strstart-a<=t.w_size-J&&(t.match_length=tt(t,a)),t.match_length>=3)if(n=F(t,t.strstart-t.match_start,t.match_length-3),t.lookahead-=t.match_length,t.match_length<=t.max_lazy_match&&t.lookahead>=3){t.match_length--;do{t.strstart++,t.ins_h=W(t,t.ins_h,t.window[t.strstart+3-1]),a=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart}while(0!=--t.match_length);t.strstart++}else t.strstart+=t.match_length,t.match_length=0,t.ins_h=t.window[t.strstart],t.ins_h=W(t,t.ins_h,t.window[t.strstart+1]);else n=F(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++;if(n&&(Y(t,!1),0===t.strm.avail_out))return 1}return t.insert=t.strstart<2?t.strstart:2,4===e?(Y(t,!0),0===t.strm.avail_out?3:4):t.last_lit&&(Y(t,!1),0===t.strm.avail_out)?1:2},nt=function(t,e){for(var a,n,r;;){if(t.lookahead<J){if(et(t),t.lookahead<J&&0===e)return 1;if(0===t.lookahead)break}if(a=0,t.lookahead>=3&&(t.ins_h=W(t,t.ins_h,t.window[t.strstart+3-1]),a=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart),t.prev_length=t.match_length,t.prev_match=t.match_start,t.match_length=2,0!==a&&t.prev_length<t.max_lazy_match&&t.strstart-a<=t.w_size-J&&(t.match_length=tt(t,a),t.match_length<=5&&(1===t.strategy||3===t.match_length&&t.strstart-t.match_start>4096)&&(t.match_length=2)),t.prev_length>=3&&t.match_length<=t.prev_length){r=t.strstart+t.lookahead-3,n=F(t,t.strstart-1-t.prev_match,t.prev_length-3),t.lookahead-=t.prev_length-1,t.prev_length-=2;do{++t.strstart<=r&&(t.ins_h=W(t,t.ins_h,t.window[t.strstart+3-1]),a=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart)}while(0!=--t.prev_length);if(t.match_available=0,t.match_length=2,t.strstart++,n&&(Y(t,!1),0===t.strm.avail_out))return 1}else if(t.match_available){if((n=F(t,0,t.window[t.strstart-1]))&&Y(t,!1),t.strstart++,t.lookahead--,0===t.strm.avail_out)return 1}else t.match_available=1,t.strstart++,t.lookahead--}return t.match_available&&(n=F(t,0,t.window[t.strstart-1]),t.match_available=0),t.insert=t.strstart<2?t.strstart:2,4===e?(Y(t,!0),0===t.strm.avail_out?3:4):t.last_lit&&(Y(t,!1),0===t.strm.avail_out)?1:2};function rt(t,e,a,n,r){this.good_length=t,this.max_lazy=e,this.nice_length=a,this.max_chain=n,this.func=r}var it=[new rt(0,0,0,0,(function(t,e){var a=65535;for(a>t.pending_buf_size-5&&(a=t.pending_buf_size-5);;){if(t.lookahead<=1){if(et(t),0===t.lookahead&&0===e)return 1;if(0===t.lookahead)break}t.strstart+=t.lookahead,t.lookahead=0;var n=t.block_start+a;if((0===t.strstart||t.strstart>=n)&&(t.lookahead=t.strstart-n,t.strstart=n,Y(t,!1),0===t.strm.avail_out))return 1;if(t.strstart-t.block_start>=t.w_size-J&&(Y(t,!1),0===t.strm.avail_out))return 1}return t.insert=0,4===e?(Y(t,!0),0===t.strm.avail_out?3:4):(t.strstart>t.block_start&&(Y(t,!1),t.strm.avail_out),1)})),new rt(4,4,8,4,at),new rt(4,5,16,8,at),new rt(4,6,32,32,at),new rt(4,4,16,16,nt),new rt(8,16,32,32,nt),new rt(8,16,128,128,nt),new rt(8,32,128,256,nt),new rt(32,128,258,1024,nt),new rt(32,258,258,4096,nt)];function st(){this.strm=null,this.status=0,this.pending_buf=null,this.pending_buf_size=0,this.pending_out=0,this.pending=0,this.wrap=0,this.gzhead=null,this.gzindex=0,this.method=8,this.last_flush=-1,this.w_size=0,this.w_bits=0,this.w_mask=0,this.window=null,this.window_size=0,this.prev=null,this.head=null,this.ins_h=0,this.hash_size=0,this.hash_bits=0,this.hash_mask=0,this.hash_shift=0,this.block_start=0,this.match_length=0,this.prev_match=0,this.match_available=0,this.strstart=0,this.match_start=0,this.lookahead=0,this.prev_length=0,this.max_chain_length=0,this.max_lazy_match=0,this.level=0,this.strategy=0,this.good_match=0,this.nice_match=0,this.dyn_ltree=new Uint16Array(1146),this.dyn_dtree=new Uint16Array(122),this.bl_tree=new Uint16Array(78),V(this.dyn_ltree),V(this.dyn_dtree),V(this.bl_tree),this.l_desc=null,this.d_desc=null,this.bl_desc=null,this.bl_count=new Uint16Array(16),this.heap=new Uint16Array(573),V(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new Uint16Array(573),V(this.depth),this.l_buf=0,this.lit_bufsize=0,this.last_lit=0,this.d_buf=0,this.opt_len=0,this.static_len=0,this.matches=0,this.insert=0,this.bi_buf=0,this.bi_valid=0}for(var ht=function(t){var e,i=function(t){if(!t||!t.state)return Q(t,G);t.total_in=t.total_out=0,t.data_type=2;var e=t.state;return e.pending=0,e.pending_out=0,e.wrap<0&&(e.wrap=-e.wrap),e.status=e.wrap?42:N,t.adler=2===e.wrap?0:1,e.last_flush=0,function(t){D||(function(){var t,e,i,g,v,w=Array(16);for(i=0,g=0;g<28;g++)for(o[g]=i,t=0;t<1<<a[g];t++)_[i++]=g;for(_[i-1]=g,v=0,g=0;g<16;g++)for(c[g]=v,t=0;t<1<<n[g];t++)l[v++]=g;for(v>>=7;g<30;g++)for(c[g]=v<<7,t=0;t<1<<n[g]-7;t++)l[256+v++]=g;for(e=0;e<=15;e++)w[e]=0;for(t=0;t<=143;)s[2*t+1]=8,t++,w[8]++;for(;t<=255;)s[2*t+1]=9,t++,w[9]++;for(;t<=279;)s[2*t+1]=7,t++,w[7]++;for(;t<=287;)s[2*t+1]=8,t++,w[8]++;for(z(s,287,w),t=0;t<30;t++)h[2*t+1]=5,h[2*t]=y(t,5);d=new p(s,a,257,286,15),u=new p(h,n,0,30,15),f=new p([],r,0,19,7)}(),D=!0),t.l_desc=new g(t.dyn_ltree,d),t.d_desc=new g(t.dyn_dtree,u),t.bl_desc=new g(t.bl_tree,f),t.bi_buf=0,t.bi_valid=0,k(t)}(e),0}(t);return 0===i&&((e=t.state).window_size=2*e.w_size,V(e.head),e.max_lazy_match=it[e.level].max_lazy,e.good_match=it[e.level].good_length,e.nice_match=it[e.level].nice_length,e.max_chain_length=it[e.level].max_chain,e.strstart=0,e.block_start=0,e.lookahead=0,e.insert=0,e.match_length=e.prev_length=2,e.match_available=0,e.ins_h=0),i},lt=function(t,e){var a,n;if(!t||!t.state||e>5||e<0)return t?Q(t,G):G;var r=t.state;if(!t.output||!t.input&&0!==t.avail_in||r.status===P&&4!==e)return Q(t,0===t.avail_out?-5:G);r.strm=t;var i=r.last_flush;if(r.last_flush=e,42===r.status)if(2===r.wrap)t.adler=0,Z(r,31),Z(r,139),Z(r,8),r.gzhead?(Z(r,(r.gzhead.text?1:0)+(r.gzhead.hcrc?2:0)+(r.gzhead.extra?4:0)+(r.gzhead.name?8:0)+(r.gzhead.comment?16:0)),Z(r,255&r.gzhead.time),Z(r,r.gzhead.time>>8&255),Z(r,r.gzhead.time>>16&255),Z(r,r.gzhead.time>>24&255),Z(r,9===r.level?2:r.strategy>=2||r.level<2?4:0),Z(r,255&r.gzhead.os),r.gzhead.extra&&r.gzhead.extra.length&&(Z(r,255&r.gzhead.extra.length),Z(r,r.gzhead.extra.length>>8&255)),r.gzhead.hcrc&&(t.adler=T(t.adler,r.pending_buf,r.pending,0)),r.gzindex=0,r.status=69):(Z(r,0),Z(r,0),Z(r,0),Z(r,0),Z(r,0),Z(r,9===r.level?2:r.strategy>=2||r.level<2?4:0),Z(r,3),r.status=N);else{var h=8+(r.w_bits-8<<4)<<8;h|=(r.strategy>=2||r.level<2?0:r.level<6?1:6===r.level?2:3)<<6,0!==r.strstart&&(h|=32),h+=31-h%31,r.status=N,$(r,h),0!==r.strstart&&($(r,t.adler>>>16),$(r,65535&t.adler)),t.adler=1}if(69===r.status)if(r.gzhead.extra){for(a=r.pending;r.gzindex<(65535&r.gzhead.extra.length)&&(r.pending!==r.pending_buf_size||(r.gzhead.hcrc&&r.pending>a&&(t.adler=T(t.adler,r.pending_buf,r.pending-a,a)),X(t),a=r.pending,r.pending!==r.pending_buf_size));)Z(r,255&r.gzhead.extra[r.gzindex]),r.gzindex++;r.gzhead.hcrc&&r.pending>a&&(t.adler=T(t.adler,r.pending_buf,r.pending-a,a)),r.gzindex===r.gzhead.extra.length&&(r.gzindex=0,r.status=73)}else r.status=73;if(73===r.status)if(r.gzhead.name){a=r.pending;do{if(r.pending===r.pending_buf_size&&(r.gzhead.hcrc&&r.pending>a&&(t.adler=T(t.adler,r.pending_buf,r.pending-a,a)),X(t),a=r.pending,r.pending===r.pending_buf_size)){n=1;break}n=r.gzindex<r.gzhead.name.length?255&r.gzhead.name.charCodeAt(r.gzindex++):0,Z(r,n)}while(0!==n);r.gzhead.hcrc&&r.pending>a&&(t.adler=T(t.adler,r.pending_buf,r.pending-a,a)),0===n&&(r.gzindex=0,r.status=91)}else r.status=91;if(91===r.status)if(r.gzhead.comment){a=r.pending;do{if(r.pending===r.pending_buf_size&&(r.gzhead.hcrc&&r.pending>a&&(t.adler=T(t.adler,r.pending_buf,r.pending-a,a)),X(t),a=r.pending,r.pending===r.pending_buf_size)){n=1;break}n=r.gzindex<r.gzhead.comment.length?255&r.gzhead.comment.charCodeAt(r.gzindex++):0,Z(r,n)}while(0!==n);r.gzhead.hcrc&&r.pending>a&&(t.adler=T(t.adler,r.pending_buf,r.pending-a,a)),0===n&&(r.status=K)}else r.status=K;if(r.status===K&&(r.gzhead.hcrc?(r.pending+2>r.pending_buf_size&&X(t),r.pending+2<=r.pending_buf_size&&(Z(r,255&t.adler),Z(r,t.adler>>8&255),t.adler=0,r.status=N)):r.status=N),0!==r.pending){if(X(t),0===t.avail_out)return r.last_flush=-1,0}else if(0===t.avail_in&&R(e)<=R(i)&&4!==e)return Q(t,-5);if(r.status===P&&0!==t.avail_in)return Q(t,-5);if(0!==t.avail_in||0!==r.lookahead||0!==e&&r.status!==P){var l=2===r.strategy?function(t,e){for(var a;;){if(0===t.lookahead&&(et(t),0===t.lookahead)){if(0===e)return 1;break}if(t.match_length=0,a=F(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++,a&&(Y(t,!1),0===t.strm.avail_out))return 1}return t.insert=0,4===e?(Y(t,!0),0===t.strm.avail_out?3:4):t.last_lit&&(Y(t,!1),0===t.strm.avail_out)?1:2}(r,e):3===r.strategy?function(t,e){for(var a,n,r,i,s=t.window;;){if(t.lookahead<=H){if(et(t),t.lookahead<=H&&0===e)return 1;if(0===t.lookahead)break}if(t.match_length=0,t.lookahead>=3&&t.strstart>0&&(n=s[r=t.strstart-1])===s[++r]&&n===s[++r]&&n===s[++r]){i=t.strstart+H;do{}while(n===s[++r]&&n===s[++r]&&n===s[++r]&&n===s[++r]&&n===s[++r]&&n===s[++r]&&n===s[++r]&&n===s[++r]&&r<i);t.match_length=H-(i-r),t.match_length>t.lookahead&&(t.match_length=t.lookahead)}if(t.match_length>=3?(a=F(t,1,t.match_length-3),t.lookahead-=t.match_length,t.strstart+=t.match_length,t.match_length=0):(a=F(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++),a&&(Y(t,!1),0===t.strm.avail_out))return 1}return t.insert=0,4===e?(Y(t,!0),0===t.strm.avail_out?3:4):t.last_lit&&(Y(t,!1),0===t.strm.avail_out)?1:2}(r,e):it[r.level].func(r,e);if(3!==l&&4!==l||(r.status=P),1===l||3===l)return 0===t.avail_out&&(r.last_flush=-1),0;if(2===l&&(1===e?function(t){m(t,2,3),b(t,256,s),function(t){16===t.bi_valid?(w(t,t.bi_buf),t.bi_buf=0,t.bi_valid=0):t.bi_valid>=8&&(t.pending_buf[t.pending++]=255&t.bi_buf,t.bi_buf>>=8,t.bi_valid-=8)}(t)}(r):5!==e&&(q(r,0,0,!1),3===e&&(V(r.head),0===r.lookahead&&(r.strstart=0,r.block_start=0,r.insert=0))),X(t),0===t.avail_out))return r.last_flush=-1,0}return 4!==e?0:r.wrap<=0?1:(2===r.wrap?(Z(r,255&t.adler),Z(r,t.adler>>8&255),Z(r,t.adler>>16&255),Z(r,t.adler>>24&255),Z(r,255&t.total_in),Z(r,t.total_in>>8&255),Z(r,t.total_in>>16&255),Z(r,t.total_in>>24&255)):($(r,t.adler>>>16),$(r,65535&t.adler)),X(t),r.wrap>0&&(r.wrap=-r.wrap),0!==r.pending?0:1)},_t=function(t){if(!t||!t.state)return G;var e=t.state.status;return 42!==e&&69!==e&&73!==e&&91!==e&&e!==K&&e!==N&&e!==P?Q(t,G):(t.state=null,e===N?Q(t,-3):0)},ot=new Uint8Array(256),dt=0;dt<256;dt++)ot[dt]=dt>=252?6:dt>=248?5:dt>=240?4:dt>=224?3:dt>=192?2:1;ot[254]=ot[254]=1;var ut=function(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg=\\\"\\\",this.state=null,this.data_type=2,this.adler=0},ft=Object.prototype.toString;function ct(){this.options={level:-1,method:8,chunkSize:16384,windowBits:15,memLevel:8,strategy:0};var t=this.options;t.raw&&t.windowBits>0?t.windowBits=-t.windowBits:t.gzip&&t.windowBits>0&&t.windowBits<16&&(t.windowBits+=16),this.err=0,this.msg=\\\"\\\",this.ended=!1,this.chunks=[],this.strm=new ut,this.strm.avail_out=0;var e,a,n=function(t,e,a,n,r,i){if(!t)return G;var s=1;if(-1===e&&(e=6),n<0?(s=0,n=-n):n>15&&(s=2,n-=16),r<1||r>9||8!==a||n<8||n>15||e<0||e>9||i<0||i>4)return Q(t,G);8===n&&(n=9);var h=new st;return t.state=h,h.strm=t,h.wrap=s,h.gzhead=null,h.w_bits=n,h.w_size=1<<h.w_bits,h.w_mask=h.w_size-1,h.hash_bits=r+7,h.hash_size=1<<h.hash_bits,h.hash_mask=h.hash_size-1,h.hash_shift=~~((h.hash_bits+3-1)/3),h.window=new Uint8Array(2*h.w_size),h.head=new Uint16Array(h.hash_size),h.prev=new Uint16Array(h.w_size),h.lit_bufsize=1<<r+6,h.pending_buf_size=4*h.lit_bufsize,h.pending_buf=new Uint8Array(h.pending_buf_size),h.d_buf=1*h.lit_bufsize,h.l_buf=3*h.lit_bufsize,h.level=e,h.strategy=i,h.method=a,ht(t)}(this.strm,t.level,t.method,t.windowBits,t.memLevel,t.strategy);if(0!==n)throw Error(O[n]);if(t.header&&(e=this.strm,a=t.header,e&&e.state&&(2!==e.state.wrap||(e.state.gzhead=a))),t.dictionary){var r;if(r=\\\"[object ArrayBuffer]\\\"===ft.call(t.dictionary)?new Uint8Array(t.dictionary):t.dictionary,0!==(n=function(t,e){var a=e.length;if(!t||!t.state)return G;var n=t.state,r=n.wrap;if(2===r||1===r&&42!==n.status||n.lookahead)return G;if(1===r&&(t.adler=L(t.adler,e,a,0)),n.wrap=0,a>=n.w_size){0===r&&(V(n.head),n.strstart=0,n.block_start=0,n.insert=0);var i=new Uint8Array(n.w_size);i.set(e.subarray(a-n.w_size,a),0),e=i,a=n.w_size}var s=t.avail_in,h=t.next_in,l=t.input;for(t.avail_in=a,t.next_in=0,t.input=e,et(n);n.lookahead>=3;){var _=n.strstart,o=n.lookahead-2;do{n.ins_h=W(n,n.ins_h,n.window[_+3-1]),n.prev[_&n.w_mask]=n.head[n.ins_h],n.head[n.ins_h]=_,_++}while(--o);n.strstart=_,n.lookahead=2,et(n)}return n.strstart+=n.lookahead,n.block_start=n.strstart,n.insert=n.lookahead,n.lookahead=0,n.match_length=n.prev_length=2,n.match_available=0,t.next_in=h,t.input=l,t.avail_in=s,n.wrap=r,0}(this.strm,r)))throw Error(O[n]);this._dict_set=!0}}function pt(t,e,a){try{t.postMessage({type:\\\"errored\\\",error:e,streamId:a})}catch(n){t.postMessage({type:\\\"errored\\\",error:e+\\\"\\\",streamId:a})}}function gt(t){const e=t.strm.adler;return new Uint8Array([3,0,e>>>24&255,e>>>16&255,e>>>8&255,255&e])}ct.prototype.push=function(t,e){var a,n,r=this.strm,i=this.options.chunkSize;if(this.ended)return!1;for(n=e===~~e?e:!0===e?4:0,\\\"[object ArrayBuffer]\\\"===ft.call(t)?r.input=new Uint8Array(t):r.input=t,r.next_in=0,r.avail_in=r.input.length;;)if(0===r.avail_out&&(r.output=new Uint8Array(i),r.next_out=0,r.avail_out=i),(2===n||3===n)&&r.avail_out<=6)this.onData(r.output.subarray(0,r.next_out)),r.avail_out=0;else{if(1===(a=lt(r,n)))return r.next_out>0&&this.onData(r.output.subarray(0,r.next_out)),a=_t(this.strm),this.onEnd(a),this.ended=!0,0===a;if(0!==r.avail_out){if(n>0&&r.next_out>0)this.onData(r.output.subarray(0,r.next_out)),r.avail_out=0;else if(0===r.avail_in)break}else this.onData(r.output)}return!0},ct.prototype.onData=function(t){this.chunks.push(t)},ct.prototype.onEnd=function(t){0===t&&(this.result=function(t){for(var e=0,a=0,n=t.length;a<n;a++)e+=t[a].length;for(var r=new Uint8Array(e),i=0,s=0,h=t.length;i<h;i++){var l=t[i];r.set(l,s),s+=l.length}return r}(this.chunks)),this.chunks=[],this.err=t,this.msg=this.strm.msg},function(e=self){try{const a=new Map;e.addEventListener(\\\"message\\\",(n=>{try{const r=function(e,a){switch(a.action){case\\\"init\\\":return{type:\\\"initialized\\\",version:\\\"6.6.4\\\"};case\\\"write\\\":{let n=e.get(a.streamId);n||(n=new ct,e.set(a.streamId,n));const r=n.chunks.length,i=function(t){if(\\\"function\\\"==typeof TextEncoder&&TextEncoder.prototype.encode)return(new TextEncoder).encode(t);let e,a,n,r,i,s=t.length,h=0;for(r=0;r<s;r++)a=t.charCodeAt(r),55296==(64512&a)&&r+1<s&&(n=t.charCodeAt(r+1),56320==(64512&n)&&(a=65536+(a-55296<<10)+(n-56320),r++)),h+=a<128?1:a<2048?2:a<65536?3:4;for(e=new Uint8Array(h),i=0,r=0;i<h;r++)a=t.charCodeAt(r),55296==(64512&a)&&r+1<s&&(n=t.charCodeAt(r+1),56320==(64512&n)&&(a=65536+(a-55296<<10)+(n-56320),r++)),a<128?e[i++]=a:a<2048?(e[i++]=192|a>>>6,e[i++]=128|63&a):a<65536?(e[i++]=224|a>>>12,e[i++]=128|a>>>6&63,e[i++]=128|63&a):(e[i++]=240|a>>>18,e[i++]=128|a>>>12&63,e[i++]=128|a>>>6&63,e[i++]=128|63&a);return e}(a.data);return n.push(i,2),{type:\\\"wrote\\\",id:a.id,streamId:a.streamId,result:t(n.chunks.slice(r)),trailer:gt(n),additionalBytesCount:i.length}}case\\\"reset\\\":e.delete(a.streamId)}}(a,n.data);r&&e.postMessage(r)}catch(t){pt(e,t,n.data&&\\\"streamId\\\"in n.data?n.data.streamId:void 0)}}))}catch(t){pt(e,t)}}()})();\"])));\n}\nlet state = { status: 0 /* DeflateWorkerStatus.Nil */ };\nexport function startDeflateWorker(configuration, source, onInitializationFailure, createDeflateWorkerImpl = createDeflateWorker) {\n    if (state.status === 0 /* DeflateWorkerStatus.Nil */) {\n        // doStartDeflateWorker updates the state to \"loading\" or \"error\"\n        doStartDeflateWorker(configuration, source, createDeflateWorkerImpl);\n    }\n    switch (state.status) {\n        case 1 /* DeflateWorkerStatus.Loading */:\n            state.initializationFailureCallbacks.push(onInitializationFailure);\n            return state.worker;\n        case 3 /* DeflateWorkerStatus.Initialized */:\n            return state.worker;\n    }\n}\nexport function resetDeflateWorkerState() {\n    if (state.status === 3 /* DeflateWorkerStatus.Initialized */ || state.status === 1 /* DeflateWorkerStatus.Loading */) {\n        state.stop();\n    }\n    state = { status: 0 /* DeflateWorkerStatus.Nil */ };\n}\nexport function getDeflateWorkerStatus() {\n    return state.status;\n}\n/**\n * Starts the deflate worker and handle messages and errors\n *\n * The spec allow browsers to handle worker errors differently:\n * - Chromium throws an exception\n * - Firefox fires an error event\n *\n * more details: https://bugzilla.mozilla.org/show_bug.cgi?id=1736865#c2\n */\nexport function doStartDeflateWorker(configuration, source, createDeflateWorkerImpl = createDeflateWorker) {\n    try {\n        const worker = createDeflateWorkerImpl(configuration);\n        const { stop: removeErrorListener } = addEventListener(configuration, worker, 'error', (error) => {\n            onError(configuration, source, error);\n        });\n        const { stop: removeMessageListener } = addEventListener(configuration, worker, 'message', ({ data }) => {\n            if (data.type === 'errored') {\n                onError(configuration, source, data.error, data.streamId);\n            }\n            else if (data.type === 'initialized') {\n                onInitialized(data.version);\n            }\n        });\n        worker.postMessage({ action: 'init' });\n        setTimeout(() => onTimeout(source), INITIALIZATION_TIME_OUT_DELAY);\n        const stop = () => {\n            removeErrorListener();\n            removeMessageListener();\n        };\n        state = { status: 1 /* DeflateWorkerStatus.Loading */, worker, stop, initializationFailureCallbacks: [] };\n    }\n    catch (error) {\n        onError(configuration, source, error);\n    }\n}\nfunction onTimeout(source) {\n    if (state.status === 1 /* DeflateWorkerStatus.Loading */) {\n        display.error(`${source} failed to start: a timeout occurred while initializing the Worker`);\n        state.initializationFailureCallbacks.forEach((callback) => callback());\n        state = { status: 2 /* DeflateWorkerStatus.Error */ };\n    }\n}\nfunction onInitialized(version) {\n    if (state.status === 1 /* DeflateWorkerStatus.Loading */) {\n        state = { status: 3 /* DeflateWorkerStatus.Initialized */, worker: state.worker, stop: state.stop, version };\n    }\n}\nfunction onError(configuration, source, error, streamId) {\n    if (state.status === 1 /* DeflateWorkerStatus.Loading */ || state.status === 0 /* DeflateWorkerStatus.Nil */) {\n        reportScriptLoadingError({\n            configuredUrl: configuration.workerUrl,\n            error,\n            source,\n            scriptType: 'worker',\n        });\n        if (state.status === 1 /* DeflateWorkerStatus.Loading */) {\n            state.initializationFailureCallbacks.forEach((callback) => callback());\n        }\n        state = { status: 2 /* DeflateWorkerStatus.Error */ };\n    }\n    else {\n        addTelemetryError(error, {\n            worker_version: state.status === 3 /* DeflateWorkerStatus.Initialized */ && state.version,\n            stream_id: streamId,\n        });\n    }\n}\n//# sourceMappingURL=deflateWorker.js.map","/**\n * Test for Browser features used while recording\n */\nexport function isBrowserSupported() {\n    return (\n    // Array.from is a bit less supported by browsers than CSSSupportsRule, but has higher chances\n    // to be polyfilled. Test for both to be more confident. We could add more things if we find out\n    // this test is not sufficient.\n    typeof Array.from === 'function' &&\n        typeof CSSSupportsRule === 'function' &&\n        typeof URL.createObjectURL === 'function' &&\n        'forEach' in NodeList.prototype);\n}\n//# sourceMappingURL=isBrowserSupported.js.map","import { asyncRunOnReadyState, monitorError } from '@datadog/browser-core';\nimport { getSessionReplayLink } from '../domain/getSessionReplayLink';\nexport function createPostStartStrategy(configuration, lifeCycle, sessionManager, viewHistory, loadRecorder, getOrCreateDeflateEncoder) {\n    let status = 0 /* RecorderStatus.Stopped */;\n    let stopRecording;\n    lifeCycle.subscribe(9 /* LifeCycleEventType.SESSION_EXPIRED */, () => {\n        if (status === 2 /* RecorderStatus.Starting */ || status === 3 /* RecorderStatus.Started */) {\n            stop();\n            status = 1 /* RecorderStatus.IntentToStart */;\n        }\n    });\n    lifeCycle.subscribe(10 /* LifeCycleEventType.SESSION_RENEWED */, () => {\n        if (status === 1 /* RecorderStatus.IntentToStart */) {\n            start();\n        }\n    });\n    const doStart = async () => {\n        const [startRecordingImpl] = await Promise.all([loadRecorder(), asyncRunOnReadyState(configuration, 'interactive')]);\n        if (status !== 2 /* RecorderStatus.Starting */) {\n            return;\n        }\n        const deflateEncoder = getOrCreateDeflateEncoder();\n        if (!deflateEncoder || !startRecordingImpl) {\n            status = 0 /* RecorderStatus.Stopped */;\n            return;\n        }\n        ;\n        ({ stop: stopRecording } = startRecordingImpl(lifeCycle, configuration, sessionManager, viewHistory, deflateEncoder));\n        status = 3 /* RecorderStatus.Started */;\n    };\n    function start(options) {\n        const session = sessionManager.findTrackedSession();\n        if (canStartRecording(session, options)) {\n            status = 1 /* RecorderStatus.IntentToStart */;\n            return;\n        }\n        if (isRecordingInProgress(status)) {\n            return;\n        }\n        status = 2 /* RecorderStatus.Starting */;\n        // Intentionally not awaiting doStart() to keep it asynchronous\n        doStart().catch(monitorError);\n        if (shouldForceReplay(session, options)) {\n            sessionManager.setForcedReplay();\n        }\n    }\n    function stop() {\n        if (status === 3 /* RecorderStatus.Started */) {\n            stopRecording === null || stopRecording === void 0 ? void 0 : stopRecording();\n        }\n        status = 0 /* RecorderStatus.Stopped */;\n    }\n    return {\n        start,\n        stop,\n        getSessionReplayLink() {\n            return getSessionReplayLink(configuration, sessionManager, viewHistory, status !== 0 /* RecorderStatus.Stopped */);\n        },\n        isRecording: () => status === 3 /* RecorderStatus.Started */,\n    };\n}\nfunction canStartRecording(session, options) {\n    return !session || (session.sessionReplay === 0 /* SessionReplayState.OFF */ && (!options || !options.force));\n}\nfunction isRecordingInProgress(status) {\n    return status === 2 /* RecorderStatus.Starting */ || status === 3 /* RecorderStatus.Started */;\n}\nfunction shouldForceReplay(session, options) {\n    return options && options.force && session.sessionReplay === 0 /* SessionReplayState.OFF */;\n}\n//# sourceMappingURL=postStartStrategy.js.map","import { getSessionReplayUrl } from '@datadog/browser-rum-core';\nimport { isBrowserSupported } from '../boot/isBrowserSupported';\nexport function getSessionReplayLink(configuration, sessionManager, viewHistory, isRecordingStarted) {\n    const session = sessionManager.findTrackedSession();\n    const errorType = getErrorType(session, isRecordingStarted);\n    const viewContext = viewHistory.findView();\n    return getSessionReplayUrl(configuration, {\n        viewContext,\n        errorType,\n        session,\n    });\n}\nfunction getErrorType(session, isRecordingStarted) {\n    if (!isBrowserSupported()) {\n        return 'browser-not-supported';\n    }\n    if (!session) {\n        // possibilities:\n        // - rum sampled out\n        // - session expired (edge case)\n        return 'rum-not-tracked';\n    }\n    if (session.sessionReplay === 0 /* SessionReplayState.OFF */) {\n        // possibilities\n        // - replay sampled out\n        return 'incorrect-session-plan';\n    }\n    if (!isRecordingStarted) {\n        return 'replay-not-started';\n    }\n}\n//# sourceMappingURL=getSessionReplayLink.js.map","import { reportScriptLoadingError } from '../domain/scriptLoadingError';\nexport async function lazyLoadRecorder(importRecorderImpl = importRecorder) {\n    try {\n        return await importRecorderImpl();\n    }\n    catch (error) {\n        reportScriptLoadingError({\n            error,\n            source: 'Recorder',\n            scriptType: 'module',\n        });\n    }\n}\nasync function importRecorder() {\n    const module = await import(/* webpackChunkName: \"recorder\" */ './startRecording');\n    return module.startRecording;\n}\n//# sourceMappingURL=lazyLoadRecorder.js.map","import { reportScriptLoadingError } from '../domain/scriptLoadingError';\nexport async function lazyLoadProfiler(importProfilerImpl = importProfiler) {\n    try {\n        return await importProfilerImpl();\n    }\n    catch (error) {\n        reportScriptLoadingError({\n            error,\n            source: 'Profiler',\n            scriptType: 'module',\n        });\n    }\n}\nasync function importProfiler() {\n    const module = await import(/* webpackChunkName: \"profiler\" */ '../domain/profiling/profiler');\n    return module.createRumProfiler;\n}\n//# sourceMappingURL=lazyLoadProfiler.js.map","// Keep the following in sync with packages/rum-slim/src/entries/main.ts\nimport { defineGlobal, getGlobalObject } from '@datadog/browser-core';\nimport { makeRumPublicApi, startRum } from '@datadog/browser-rum-core';\nimport { makeRecorderApi } from '../boot/recorderApi';\nimport { createDeflateEncoder, startDeflateWorker } from '../domain/deflate';\nimport { lazyLoadRecorder } from '../boot/lazyLoadRecorder';\nimport { makeProfilerApi } from '../boot/profilerApi';\nexport { DefaultPrivacyLevel } from '@datadog/browser-core';\nconst recorderApi = makeRecorderApi(lazyLoadRecorder);\nconst profilerApi = makeProfilerApi();\nexport const datadogRum = makeRumPublicApi(startRum, recorderApi, profilerApi, {\n    startDeflateWorker,\n    createDeflateEncoder,\n});\ndefineGlobal(getGlobalObject(), 'DD_RUM', datadogRum);\n//# sourceMappingURL=main.js.map","import { canUseEventBridge, noop, bridgeSupports, } from '@datadog/browser-core';\nimport { getReplayStats as getReplayStatsImpl } from '../domain/replayStats';\nimport { createDeflateEncoder, getDeflateWorkerStatus, startDeflateWorker, } from '../domain/deflate';\nimport { isBrowserSupported } from './isBrowserSupported';\nimport { createPostStartStrategy } from './postStartStrategy';\nimport { createPreStartStrategy } from './preStartStrategy';\nexport function makeRecorderApi(loadRecorder, createDeflateWorkerImpl) {\n    if ((canUseEventBridge() && !bridgeSupports(\"records\" /* BridgeCapability.RECORDS */)) || !isBrowserSupported()) {\n        return {\n            start: noop,\n            stop: noop,\n            getReplayStats: () => undefined,\n            onRumStart: noop,\n            isRecording: () => false,\n            getSessionReplayLink: () => undefined,\n        };\n    }\n    // eslint-disable-next-line prefer-const\n    let { strategy, shouldStartImmediately } = createPreStartStrategy();\n    return {\n        start: (options) => strategy.start(options),\n        stop: () => strategy.stop(),\n        getSessionReplayLink: () => strategy.getSessionReplayLink(),\n        onRumStart,\n        isRecording: () => \n        // The worker is started optimistically, meaning we could have started to record but its\n        // initialization fails a bit later. This could happen when:\n        // * the worker URL (blob or plain URL) is blocked by CSP in Firefox only (Chromium and Safari\n        // throw an exception when instantiating the worker, and IE doesn't care about CSP)\n        // * the browser fails to load the worker in case the workerUrl is used\n        // * an unexpected error occurs in the Worker before initialization, ex:\n        //   * a runtime exception collected by monitor()\n        //   * a syntax error notified by the browser via an error event\n        // * the worker is unresponsive for some reason and timeouts\n        //\n        // It is not expected to happen often. Nonetheless, the \"replayable\" status on RUM events is\n        // an important part of the Datadog App:\n        // * If we have a false positive (we set has_replay: true even if no replay data is present),\n        // we might display broken links to the Session Replay player.\n        // * If we have a false negative (we don't set has_replay: true even if replay data is\n        // available), it is less noticeable because no link will be displayed.\n        //\n        // Thus, it is better to have false negative, so let's make sure the worker is correctly\n        // initialized before advertizing that we are recording.\n        //\n        // In the future, when the compression worker will also be used for RUM data, this will be\n        // less important since no RUM event will be sent when the worker fails to initialize.\n        getDeflateWorkerStatus() === 3 /* DeflateWorkerStatus.Initialized */ && strategy.isRecording(),\n        getReplayStats: (viewId) => getDeflateWorkerStatus() === 3 /* DeflateWorkerStatus.Initialized */ ? getReplayStatsImpl(viewId) : undefined,\n    };\n    function onRumStart(lifeCycle, configuration, sessionManager, viewHistory, worker) {\n        let cachedDeflateEncoder;\n        function getOrCreateDeflateEncoder() {\n            if (!cachedDeflateEncoder) {\n                worker !== null && worker !== void 0 ? worker : (worker = startDeflateWorker(configuration, 'Datadog Session Replay', () => {\n                    strategy.stop();\n                }, createDeflateWorkerImpl));\n                if (worker) {\n                    cachedDeflateEncoder = createDeflateEncoder(configuration, worker, 1 /* DeflateEncoderStreamId.REPLAY */);\n                }\n            }\n            return cachedDeflateEncoder;\n        }\n        strategy = createPostStartStrategy(configuration, lifeCycle, sessionManager, viewHistory, loadRecorder, getOrCreateDeflateEncoder);\n        if (shouldStartImmediately(configuration)) {\n            strategy.start();\n        }\n    }\n}\n//# sourceMappingURL=recorderApi.js.map","import { noop } from '@datadog/browser-core';\nexport function createPreStartStrategy() {\n    let status = 0 /* PreStartRecorderStatus.None */;\n    return {\n        strategy: {\n            start() {\n                status = 1 /* PreStartRecorderStatus.HadManualStart */;\n            },\n            stop() {\n                status = 2 /* PreStartRecorderStatus.HadManualStop */;\n            },\n            isRecording: () => false,\n            getSessionReplayLink: noop,\n        },\n        shouldStartImmediately(configuration) {\n            return (status === 1 /* PreStartRecorderStatus.HadManualStart */ ||\n                (status === 0 /* PreStartRecorderStatus.None */ && !configuration.startSessionReplayRecordingManually));\n        },\n    };\n}\n//# sourceMappingURL=preStartStrategy.js.map","import { addTelemetryDebug, monitorError, performDraw } from '@datadog/browser-core';\nimport { isProfilingSupported } from '../domain/profiling/profilingSupported';\nimport { lazyLoadProfiler } from './lazyLoadProfiler';\nexport function makeProfilerApi() {\n    let profiler;\n    function onRumStart(lifeCycle, configuration, sessionManager, viewHistory) {\n        if (!isProfilingSupported() || !performDraw(configuration.profilingSampleRate)) {\n            return;\n        }\n        lazyLoadProfiler()\n            .then((createRumProfiler) => {\n            if (!createRumProfiler) {\n                addTelemetryDebug('[DD_RUM] Failed to lazy load the RUM Profiler');\n                return;\n            }\n            profiler = createRumProfiler(configuration, lifeCycle, sessionManager);\n            profiler.start(viewHistory.findView());\n        })\n            .catch(monitorError);\n    }\n    return {\n        onRumStart,\n        stop: () => {\n            profiler === null || profiler === void 0 ? void 0 : profiler.stop().catch(monitorError);\n        },\n    };\n}\n//# sourceMappingURL=profilerApi.js.map","import { getGlobalObject } from '@datadog/browser-core';\nexport function isProfilingSupported() {\n    const globalThis = getGlobalObject();\n    // This API might be unavailable in some browsers\n    const globalThisProfiler = globalThis.Profiler;\n    return globalThisProfiler !== undefined;\n}\n//# sourceMappingURL=profilingSupported.js.map","export const DEFAULT_USER_COMPONENT_IN_URL = '{user}';\nexport const DEFAULT_REGION_COMPONENT_IN_URL = '{region}';\nexport const API_VERSIONS = {\n  V1: 'v1',\n  V2: 'v2',\n  V3: 'v3'\n};\nexport const DEFAULT_MAPS_URL_FORMAT = {\n  [API_VERSIONS.V1]: \"https://\".concat(DEFAULT_USER_COMPONENT_IN_URL, \".carto.com/api/v1/map\"),\n  [API_VERSIONS.V2]: \"https://maps-api-v2.\".concat(DEFAULT_REGION_COMPONENT_IN_URL, \".carto.com/user/\").concat(DEFAULT_USER_COMPONENT_IN_URL)\n};\nexport const MAP_TYPES = {\n  QUERY: 'query',\n  TABLE: 'table',\n  TILESET: 'tileset',\n  RASTER: 'raster'\n};\nexport const COLUMNS_SUPPORT = [MAP_TYPES.QUERY, MAP_TYPES.TABLE];\nexport const GEO_COLUMN_SUPPORT = [MAP_TYPES.QUERY, MAP_TYPES.TABLE];\nexport const FORMATS = {\n  GEOJSON: 'geojson',\n  NDJSON: 'ndjson',\n  TILEJSON: 'tilejson',\n  JSON: 'json'\n};\nexport const TILE_FORMATS = {\n  MVT: 'mvt',\n  JSON: 'json',\n  GEOJSON: 'geojson',\n  BINARY: 'binary'\n};\nexport let SchemaFieldType;\n\n(function (SchemaFieldType) {\n  SchemaFieldType[\"Number\"] = \"number\";\n  SchemaFieldType[\"Bigint\"] = \"bigint\";\n  SchemaFieldType[\"String\"] = \"string\";\n  SchemaFieldType[\"Geometry\"] = \"geometry\";\n  SchemaFieldType[\"Timestamp\"] = \"timestamp\";\n  SchemaFieldType[\"Object\"] = \"object\";\n  SchemaFieldType[\"Boolean\"] = \"boolean\";\n  SchemaFieldType[\"Variant\"] = \"variant\";\n  SchemaFieldType[\"Unknown\"] = \"unknown\";\n})(SchemaFieldType || (SchemaFieldType = {}));\n\nexport const REQUEST_TYPES = {\n  DATA: 'Map data',\n  INSTANTIATION: 'Map instantiation',\n  PUBLIC_MAP: 'Public map',\n  TILE_STATS: 'Tile stats'\n};\nexport function encodeParameter(name, value) {\n  return \"\".concat(name, \"=\").concat(encodeURIComponent(value));\n}\nexport let FilterTypes;\n\n(function (FilterTypes) {\n  FilterTypes[\"In\"] = \"in\";\n  FilterTypes[\"Between\"] = \"between\";\n  FilterTypes[\"ClosedOpen\"] = \"closed_open\";\n  FilterTypes[\"Time\"] = \"time\";\n  FilterTypes[\"StringSearch\"] = \"stringSearch\";\n})(FilterTypes || (FilterTypes = {}));\n//# sourceMappingURL=maps-api-common.js.map","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport TransitionManager from './transition-manager';\nimport LinearInterpolator from '../transitions/linear-interpolator';\nconst NO_TRANSITION_PROPS = {\n  transitionDuration: 0\n};\nconst DEFAULT_INERTIA = 300;\n\nconst INERTIA_EASING = t => 1 - (1 - t) * (1 - t);\n\nconst EVENT_TYPES = {\n  WHEEL: ['wheel'],\n  PAN: ['panstart', 'panmove', 'panend'],\n  PINCH: ['pinchstart', 'pinchmove', 'pinchend'],\n  TRIPLE_PAN: ['tripanstart', 'tripanmove', 'tripanend'],\n  DOUBLE_TAP: ['doubletap'],\n  KEYBOARD: ['keydown']\n};\nconst pinchEventWorkaround = {};\nexport default class Controller {\n  constructor(opts) {\n    _defineProperty(this, \"props\", void 0);\n\n    _defineProperty(this, \"state\", {});\n\n    _defineProperty(this, \"transitionManager\", void 0);\n\n    _defineProperty(this, \"eventManager\", void 0);\n\n    _defineProperty(this, \"onViewStateChange\", void 0);\n\n    _defineProperty(this, \"onStateChange\", void 0);\n\n    _defineProperty(this, \"makeViewport\", void 0);\n\n    _defineProperty(this, \"_controllerState\", void 0);\n\n    _defineProperty(this, \"_events\", {});\n\n    _defineProperty(this, \"_interactionState\", {\n      isDragging: false\n    });\n\n    _defineProperty(this, \"_customEvents\", []);\n\n    _defineProperty(this, \"_eventStartBlocked\", null);\n\n    _defineProperty(this, \"_panMove\", false);\n\n    _defineProperty(this, \"invertPan\", false);\n\n    _defineProperty(this, \"dragMode\", 'rotate');\n\n    _defineProperty(this, \"inertia\", 0);\n\n    _defineProperty(this, \"scrollZoom\", true);\n\n    _defineProperty(this, \"dragPan\", true);\n\n    _defineProperty(this, \"dragRotate\", true);\n\n    _defineProperty(this, \"doubleClickZoom\", true);\n\n    _defineProperty(this, \"touchZoom\", true);\n\n    _defineProperty(this, \"touchRotate\", false);\n\n    _defineProperty(this, \"keyboard\", true);\n\n    this.transitionManager = new TransitionManager({ ...opts,\n      getControllerState: props => new this.ControllerState(props),\n      onViewStateChange: this._onTransition.bind(this),\n      onStateChange: this._setInteractionState.bind(this)\n    });\n    this.handleEvent = this.handleEvent.bind(this);\n    this.eventManager = opts.eventManager;\n\n    this.onViewStateChange = opts.onViewStateChange || (() => {});\n\n    this.onStateChange = opts.onStateChange || (() => {});\n\n    this.makeViewport = opts.makeViewport;\n  }\n\n  set events(customEvents) {\n    this.toggleEvents(this._customEvents, false);\n    this.toggleEvents(customEvents, true);\n    this._customEvents = customEvents;\n\n    if (this.props) {\n      this.setProps(this.props);\n    }\n  }\n\n  finalize() {\n    for (const eventName in this._events) {\n      if (this._events[eventName]) {\n        var _this$eventManager;\n\n        (_this$eventManager = this.eventManager) === null || _this$eventManager === void 0 ? void 0 : _this$eventManager.off(eventName, this.handleEvent);\n      }\n    }\n\n    this.transitionManager.finalize();\n  }\n\n  handleEvent(event) {\n    this._controllerState = undefined;\n    const eventStartBlocked = this._eventStartBlocked;\n\n    switch (event.type) {\n      case 'panstart':\n        return eventStartBlocked ? false : this._onPanStart(event);\n\n      case 'panmove':\n        return this._onPan(event);\n\n      case 'panend':\n        return this._onPanEnd(event);\n\n      case 'pinchstart':\n        return eventStartBlocked ? false : this._onPinchStart(event);\n\n      case 'pinchmove':\n        return this._onPinch(event);\n\n      case 'pinchend':\n        return this._onPinchEnd(event);\n\n      case 'tripanstart':\n        return eventStartBlocked ? false : this._onTriplePanStart(event);\n\n      case 'tripanmove':\n        return this._onTriplePan(event);\n\n      case 'tripanend':\n        return this._onTriplePanEnd(event);\n\n      case 'doubletap':\n        return this._onDoubleTap(event);\n\n      case 'wheel':\n        return this._onWheel(event);\n\n      case 'keydown':\n        return this._onKeyDown(event);\n\n      default:\n        return false;\n    }\n  }\n\n  get controllerState() {\n    this._controllerState = this._controllerState || new this.ControllerState({\n      makeViewport: this.makeViewport,\n      ...this.props,\n      ...this.state\n    });\n    return this._controllerState;\n  }\n\n  getCenter(event) {\n    const {\n      x,\n      y\n    } = this.props;\n    const {\n      offsetCenter\n    } = event;\n    return [offsetCenter.x - x, offsetCenter.y - y];\n  }\n\n  isPointInBounds(pos, event) {\n    const {\n      width,\n      height\n    } = this.props;\n\n    if (event && event.handled) {\n      return false;\n    }\n\n    const inside = pos[0] >= 0 && pos[0] <= width && pos[1] >= 0 && pos[1] <= height;\n\n    if (inside && event) {\n      event.stopPropagation();\n    }\n\n    return inside;\n  }\n\n  isFunctionKeyPressed(event) {\n    const {\n      srcEvent\n    } = event;\n    return Boolean(srcEvent.metaKey || srcEvent.altKey || srcEvent.ctrlKey || srcEvent.shiftKey);\n  }\n\n  isDragging() {\n    return this._interactionState.isDragging || false;\n  }\n\n  blockEvents(timeout) {\n    const timer = setTimeout(() => {\n      if (this._eventStartBlocked === timer) {\n        this._eventStartBlocked = null;\n      }\n    }, timeout);\n    this._eventStartBlocked = timer;\n  }\n\n  setProps(props) {\n    if (props.dragMode) {\n      this.dragMode = props.dragMode;\n    }\n\n    this.props = props;\n\n    if (!('transitionInterpolator' in props)) {\n      props.transitionInterpolator = this._getTransitionProps().transitionInterpolator;\n    }\n\n    this.transitionManager.processViewStateChange(props);\n    const {\n      inertia\n    } = props;\n    this.inertia = Number.isFinite(inertia) ? inertia : inertia === true ? DEFAULT_INERTIA : 0;\n    const {\n      scrollZoom = true,\n      dragPan = true,\n      dragRotate = true,\n      doubleClickZoom = true,\n      touchZoom = true,\n      touchRotate = false,\n      keyboard = true\n    } = props;\n    const isInteractive = Boolean(this.onViewStateChange);\n    this.toggleEvents(EVENT_TYPES.WHEEL, isInteractive && scrollZoom);\n    this.toggleEvents(EVENT_TYPES.PAN, isInteractive);\n    this.toggleEvents(EVENT_TYPES.PINCH, isInteractive && (touchZoom || touchRotate));\n    this.toggleEvents(EVENT_TYPES.TRIPLE_PAN, isInteractive && touchRotate);\n    this.toggleEvents(EVENT_TYPES.DOUBLE_TAP, isInteractive && doubleClickZoom);\n    this.toggleEvents(EVENT_TYPES.KEYBOARD, isInteractive && keyboard);\n    this.scrollZoom = scrollZoom;\n    this.dragPan = dragPan;\n    this.dragRotate = dragRotate;\n    this.doubleClickZoom = doubleClickZoom;\n    this.touchZoom = touchZoom;\n    this.touchRotate = touchRotate;\n    this.keyboard = keyboard;\n  }\n\n  updateTransition() {\n    this.transitionManager.updateTransition();\n  }\n\n  toggleEvents(eventNames, enabled) {\n    if (this.eventManager) {\n      eventNames.forEach(eventName => {\n        if (this._events[eventName] !== enabled) {\n          this._events[eventName] = enabled;\n\n          if (enabled) {\n            this.eventManager.on(eventName, this.handleEvent);\n          } else {\n            this.eventManager.off(eventName, this.handleEvent);\n          }\n        }\n      });\n    }\n  }\n\n  updateViewport(newControllerState, extraProps = null, interactionState = {}) {\n    const viewState = { ...newControllerState.getViewportProps(),\n      ...extraProps\n    };\n    const changed = this.controllerState !== newControllerState;\n    this.state = newControllerState.getState();\n\n    this._setInteractionState(interactionState);\n\n    if (changed) {\n      const oldViewState = this.controllerState && this.controllerState.getViewportProps();\n\n      if (this.onViewStateChange) {\n        this.onViewStateChange({\n          viewState,\n          interactionState: this._interactionState,\n          oldViewState\n        });\n      }\n    }\n  }\n\n  _onTransition(params) {\n    this.onViewStateChange({ ...params,\n      interactionState: this._interactionState\n    });\n  }\n\n  _setInteractionState(newStates) {\n    Object.assign(this._interactionState, newStates);\n    this.onStateChange(this._interactionState);\n  }\n\n  _onPanStart(event) {\n    const pos = this.getCenter(event);\n\n    if (!this.isPointInBounds(pos, event)) {\n      return false;\n    }\n\n    let alternateMode = this.isFunctionKeyPressed(event) || event.rightButton || false;\n\n    if (this.invertPan || this.dragMode === 'pan') {\n      alternateMode = !alternateMode;\n    }\n\n    const newControllerState = this.controllerState[alternateMode ? 'panStart' : 'rotateStart']({\n      pos\n    });\n    this._panMove = alternateMode;\n    this.updateViewport(newControllerState, NO_TRANSITION_PROPS, {\n      isDragging: true\n    });\n    return true;\n  }\n\n  _onPan(event) {\n    if (!this.isDragging()) {\n      return false;\n    }\n\n    return this._panMove ? this._onPanMove(event) : this._onPanRotate(event);\n  }\n\n  _onPanEnd(event) {\n    if (!this.isDragging()) {\n      return false;\n    }\n\n    return this._panMove ? this._onPanMoveEnd(event) : this._onPanRotateEnd(event);\n  }\n\n  _onPanMove(event) {\n    if (!this.dragPan) {\n      return false;\n    }\n\n    const pos = this.getCenter(event);\n    const newControllerState = this.controllerState.pan({\n      pos\n    });\n    this.updateViewport(newControllerState, NO_TRANSITION_PROPS, {\n      isDragging: true,\n      isPanning: true\n    });\n    return true;\n  }\n\n  _onPanMoveEnd(event) {\n    const {\n      inertia\n    } = this;\n\n    if (this.dragPan && inertia && event.velocity) {\n      const pos = this.getCenter(event);\n      const endPos = [pos[0] + event.velocityX * inertia / 2, pos[1] + event.velocityY * inertia / 2];\n      const newControllerState = this.controllerState.pan({\n        pos: endPos\n      }).panEnd();\n      this.updateViewport(newControllerState, { ...this._getTransitionProps(),\n        transitionDuration: inertia,\n        transitionEasing: INERTIA_EASING\n      }, {\n        isDragging: false,\n        isPanning: true\n      });\n    } else {\n      const newControllerState = this.controllerState.panEnd();\n      this.updateViewport(newControllerState, null, {\n        isDragging: false,\n        isPanning: false\n      });\n    }\n\n    return true;\n  }\n\n  _onPanRotate(event) {\n    if (!this.dragRotate) {\n      return false;\n    }\n\n    const pos = this.getCenter(event);\n    const newControllerState = this.controllerState.rotate({\n      pos\n    });\n    this.updateViewport(newControllerState, NO_TRANSITION_PROPS, {\n      isDragging: true,\n      isRotating: true\n    });\n    return true;\n  }\n\n  _onPanRotateEnd(event) {\n    const {\n      inertia\n    } = this;\n\n    if (this.dragRotate && inertia && event.velocity) {\n      const pos = this.getCenter(event);\n      const endPos = [pos[0] + event.velocityX * inertia / 2, pos[1] + event.velocityY * inertia / 2];\n      const newControllerState = this.controllerState.rotate({\n        pos: endPos\n      }).rotateEnd();\n      this.updateViewport(newControllerState, { ...this._getTransitionProps(),\n        transitionDuration: inertia,\n        transitionEasing: INERTIA_EASING\n      }, {\n        isDragging: false,\n        isRotating: true\n      });\n    } else {\n      const newControllerState = this.controllerState.rotateEnd();\n      this.updateViewport(newControllerState, null, {\n        isDragging: false,\n        isRotating: false\n      });\n    }\n\n    return true;\n  }\n\n  _onWheel(event) {\n    if (!this.scrollZoom) {\n      return false;\n    }\n\n    const pos = this.getCenter(event);\n\n    if (!this.isPointInBounds(pos, event)) {\n      return false;\n    }\n\n    event.srcEvent.preventDefault();\n    const {\n      speed = 0.01,\n      smooth = false\n    } = this.scrollZoom === true ? {} : this.scrollZoom;\n    const {\n      delta\n    } = event;\n    let scale = 2 / (1 + Math.exp(-Math.abs(delta * speed)));\n\n    if (delta < 0 && scale !== 0) {\n      scale = 1 / scale;\n    }\n\n    const newControllerState = this.controllerState.zoom({\n      pos,\n      scale\n    });\n    this.updateViewport(newControllerState, { ...this._getTransitionProps({\n        around: pos\n      }),\n      transitionDuration: smooth ? 250 : 1\n    }, {\n      isZooming: true,\n      isPanning: true\n    });\n    return true;\n  }\n\n  _onTriplePanStart(event) {\n    const pos = this.getCenter(event);\n\n    if (!this.isPointInBounds(pos, event)) {\n      return false;\n    }\n\n    const newControllerState = this.controllerState.rotateStart({\n      pos\n    });\n    this.updateViewport(newControllerState, NO_TRANSITION_PROPS, {\n      isDragging: true\n    });\n    return true;\n  }\n\n  _onTriplePan(event) {\n    if (!this.touchRotate) {\n      return false;\n    }\n\n    if (!this.isDragging()) {\n      return false;\n    }\n\n    const pos = this.getCenter(event);\n    pos[0] -= event.deltaX;\n    const newControllerState = this.controllerState.rotate({\n      pos\n    });\n    this.updateViewport(newControllerState, NO_TRANSITION_PROPS, {\n      isDragging: true,\n      isRotating: true\n    });\n    return true;\n  }\n\n  _onTriplePanEnd(event) {\n    if (!this.isDragging()) {\n      return false;\n    }\n\n    const {\n      inertia\n    } = this;\n\n    if (this.touchRotate && inertia && event.velocityY) {\n      const pos = this.getCenter(event);\n      const endPos = [pos[0], pos[1] += event.velocityY * inertia / 2];\n      const newControllerState = this.controllerState.rotate({\n        pos: endPos\n      });\n      this.updateViewport(newControllerState, { ...this._getTransitionProps(),\n        transitionDuration: inertia,\n        transitionEasing: INERTIA_EASING\n      }, {\n        isDragging: false,\n        isRotating: true\n      });\n      this.blockEvents(inertia);\n    } else {\n      const newControllerState = this.controllerState.rotateEnd();\n      this.updateViewport(newControllerState, null, {\n        isDragging: false,\n        isRotating: false\n      });\n    }\n\n    return true;\n  }\n\n  _onPinchStart(event) {\n    const pos = this.getCenter(event);\n\n    if (!this.isPointInBounds(pos, event)) {\n      return false;\n    }\n\n    const newControllerState = this.controllerState.zoomStart({\n      pos\n    }).rotateStart({\n      pos\n    });\n    pinchEventWorkaround._startPinchRotation = event.rotation;\n    pinchEventWorkaround._lastPinchEvent = event;\n    this.updateViewport(newControllerState, NO_TRANSITION_PROPS, {\n      isDragging: true\n    });\n    return true;\n  }\n\n  _onPinch(event) {\n    if (!this.touchZoom && !this.touchRotate) {\n      return false;\n    }\n\n    if (!this.isDragging()) {\n      return false;\n    }\n\n    let newControllerState = this.controllerState;\n\n    if (this.touchZoom) {\n      const {\n        scale\n      } = event;\n      const pos = this.getCenter(event);\n      newControllerState = newControllerState.zoom({\n        pos,\n        scale\n      });\n    }\n\n    if (this.touchRotate) {\n      const {\n        rotation\n      } = event;\n      newControllerState = newControllerState.rotate({\n        deltaAngleX: pinchEventWorkaround._startPinchRotation - rotation\n      });\n    }\n\n    this.updateViewport(newControllerState, NO_TRANSITION_PROPS, {\n      isDragging: true,\n      isPanning: this.touchZoom,\n      isZooming: this.touchZoom,\n      isRotating: this.touchRotate\n    });\n    pinchEventWorkaround._lastPinchEvent = event;\n    return true;\n  }\n\n  _onPinchEnd(event) {\n    if (!this.isDragging()) {\n      return false;\n    }\n\n    const {\n      inertia\n    } = this;\n    const {\n      _lastPinchEvent\n    } = pinchEventWorkaround;\n\n    if (this.touchZoom && inertia && _lastPinchEvent && event.scale !== _lastPinchEvent.scale) {\n      const pos = this.getCenter(event);\n      let newControllerState = this.controllerState.rotateEnd();\n      const z = Math.log2(event.scale);\n\n      const velocityZ = (z - Math.log2(_lastPinchEvent.scale)) / (event.deltaTime - _lastPinchEvent.deltaTime);\n\n      const endScale = Math.pow(2, z + velocityZ * inertia / 2);\n      newControllerState = newControllerState.zoom({\n        pos,\n        scale: endScale\n      }).zoomEnd();\n      this.updateViewport(newControllerState, { ...this._getTransitionProps({\n          around: pos\n        }),\n        transitionDuration: inertia,\n        transitionEasing: INERTIA_EASING\n      }, {\n        isDragging: false,\n        isPanning: this.touchZoom,\n        isZooming: this.touchZoom,\n        isRotating: false\n      });\n      this.blockEvents(inertia);\n    } else {\n      const newControllerState = this.controllerState.zoomEnd().rotateEnd();\n      this.updateViewport(newControllerState, null, {\n        isDragging: false,\n        isPanning: false,\n        isZooming: false,\n        isRotating: false\n      });\n    }\n\n    pinchEventWorkaround._startPinchRotation = null;\n    pinchEventWorkaround._lastPinchEvent = null;\n    return true;\n  }\n\n  _onDoubleTap(event) {\n    if (!this.doubleClickZoom) {\n      return false;\n    }\n\n    const pos = this.getCenter(event);\n\n    if (!this.isPointInBounds(pos, event)) {\n      return false;\n    }\n\n    const isZoomOut = this.isFunctionKeyPressed(event);\n    const newControllerState = this.controllerState.zoom({\n      pos,\n      scale: isZoomOut ? 0.5 : 2\n    });\n    this.updateViewport(newControllerState, this._getTransitionProps({\n      around: pos\n    }), {\n      isZooming: true,\n      isPanning: true\n    });\n    this.blockEvents(100);\n    return true;\n  }\n\n  _onKeyDown(event) {\n    if (!this.keyboard) {\n      return false;\n    }\n\n    const funcKey = this.isFunctionKeyPressed(event);\n    const {\n      zoomSpeed,\n      moveSpeed,\n      rotateSpeedX,\n      rotateSpeedY\n    } = this.keyboard === true ? {} : this.keyboard;\n    const {\n      controllerState\n    } = this;\n    let newControllerState;\n    const interactionState = {};\n\n    switch (event.srcEvent.code) {\n      case 'Minus':\n        newControllerState = funcKey ? controllerState.zoomOut(zoomSpeed).zoomOut(zoomSpeed) : controllerState.zoomOut(zoomSpeed);\n        interactionState.isZooming = true;\n        break;\n\n      case 'Equal':\n        newControllerState = funcKey ? controllerState.zoomIn(zoomSpeed).zoomIn(zoomSpeed) : controllerState.zoomIn(zoomSpeed);\n        interactionState.isZooming = true;\n        break;\n\n      case 'ArrowLeft':\n        if (funcKey) {\n          newControllerState = controllerState.rotateLeft(rotateSpeedX);\n          interactionState.isRotating = true;\n        } else {\n          newControllerState = controllerState.moveLeft(moveSpeed);\n          interactionState.isPanning = true;\n        }\n\n        break;\n\n      case 'ArrowRight':\n        if (funcKey) {\n          newControllerState = controllerState.rotateRight(rotateSpeedX);\n          interactionState.isRotating = true;\n        } else {\n          newControllerState = controllerState.moveRight(moveSpeed);\n          interactionState.isPanning = true;\n        }\n\n        break;\n\n      case 'ArrowUp':\n        if (funcKey) {\n          newControllerState = controllerState.rotateUp(rotateSpeedY);\n          interactionState.isRotating = true;\n        } else {\n          newControllerState = controllerState.moveUp(moveSpeed);\n          interactionState.isPanning = true;\n        }\n\n        break;\n\n      case 'ArrowDown':\n        if (funcKey) {\n          newControllerState = controllerState.rotateDown(rotateSpeedY);\n          interactionState.isRotating = true;\n        } else {\n          newControllerState = controllerState.moveDown(moveSpeed);\n          interactionState.isPanning = true;\n        }\n\n        break;\n\n      default:\n        return false;\n    }\n\n    this.updateViewport(newControllerState, this._getTransitionProps(), interactionState);\n    return true;\n  }\n\n  _getTransitionProps(opts) {\n    const {\n      transition\n    } = this;\n\n    if (!transition || !transition.transitionInterpolator) {\n      return NO_TRANSITION_PROPS;\n    }\n\n    return opts ? { ...transition,\n      transitionInterpolator: new LinearInterpolator({ ...opts,\n        ...transition.transitionInterpolator.opts,\n        makeViewport: this.controllerState.makeViewport\n      })\n    } : transition;\n  }\n\n}\n//# sourceMappingURL=controller.js.map","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { clamp } from '@math.gl/core';\nimport Controller from './controller';\nimport ViewState from './view-state';\nimport { normalizeViewportProps } from '@math.gl/web-mercator';\nimport assert from '../utils/assert';\nimport LinearInterpolator from '../transitions/linear-interpolator';\nconst PITCH_MOUSE_THRESHOLD = 5;\nconst PITCH_ACCEL = 1.2;\nexport class MapState extends ViewState {\n  constructor(options) {\n    const {\n      width,\n      height,\n      latitude,\n      longitude,\n      zoom,\n      bearing = 0,\n      pitch = 0,\n      altitude = 1.5,\n      position = [0, 0, 0],\n      maxZoom = 20,\n      minZoom = 0,\n      maxPitch = 60,\n      minPitch = 0,\n      startPanLngLat,\n      startZoomLngLat,\n      startRotatePos,\n      startBearing,\n      startPitch,\n      startZoom,\n      normalize = true\n    } = options;\n    assert(Number.isFinite(longitude));\n    assert(Number.isFinite(latitude));\n    assert(Number.isFinite(zoom));\n    super({\n      width,\n      height,\n      latitude,\n      longitude,\n      zoom,\n      bearing,\n      pitch,\n      altitude,\n      maxZoom,\n      minZoom,\n      maxPitch,\n      minPitch,\n      normalize,\n      position\n    }, {\n      startPanLngLat,\n      startZoomLngLat,\n      startRotatePos,\n      startBearing,\n      startPitch,\n      startZoom\n    });\n\n    _defineProperty(this, \"makeViewport\", void 0);\n\n    this.makeViewport = options.makeViewport;\n  }\n\n  panStart({\n    pos\n  }) {\n    return this._getUpdatedState({\n      startPanLngLat: this._unproject(pos)\n    });\n  }\n\n  pan({\n    pos,\n    startPos\n  }) {\n    const startPanLngLat = this.getState().startPanLngLat || this._unproject(startPos);\n\n    if (!startPanLngLat) {\n      return this;\n    }\n\n    const viewport = this.makeViewport(this.getViewportProps());\n    const newProps = viewport.panByPosition(startPanLngLat, pos);\n    return this._getUpdatedState(newProps);\n  }\n\n  panEnd() {\n    return this._getUpdatedState({\n      startPanLngLat: null\n    });\n  }\n\n  rotateStart({\n    pos\n  }) {\n    return this._getUpdatedState({\n      startRotatePos: pos,\n      startBearing: this.getViewportProps().bearing,\n      startPitch: this.getViewportProps().pitch\n    });\n  }\n\n  rotate({\n    pos,\n    deltaAngleX = 0,\n    deltaAngleY = 0\n  }) {\n    const {\n      startRotatePos,\n      startBearing,\n      startPitch\n    } = this.getState();\n\n    if (!startRotatePos || startBearing === undefined || startPitch === undefined) {\n      return this;\n    }\n\n    let newRotation;\n\n    if (pos) {\n      newRotation = this._getNewRotation(pos, startRotatePos, startPitch, startBearing);\n    } else {\n      newRotation = {\n        bearing: startBearing + deltaAngleX,\n        pitch: startPitch + deltaAngleY\n      };\n    }\n\n    return this._getUpdatedState(newRotation);\n  }\n\n  rotateEnd() {\n    return this._getUpdatedState({\n      startBearing: null,\n      startPitch: null\n    });\n  }\n\n  zoomStart({\n    pos\n  }) {\n    return this._getUpdatedState({\n      startZoomLngLat: this._unproject(pos),\n      startZoom: this.getViewportProps().zoom\n    });\n  }\n\n  zoom({\n    pos,\n    startPos,\n    scale\n  }) {\n    let {\n      startZoom,\n      startZoomLngLat\n    } = this.getState();\n\n    if (!startZoomLngLat) {\n      startZoom = this.getViewportProps().zoom;\n      startZoomLngLat = this._unproject(startPos) || this._unproject(pos);\n    }\n\n    if (!startZoomLngLat) {\n      return this;\n    }\n\n    const {\n      maxZoom,\n      minZoom\n    } = this.getViewportProps();\n    let zoom = startZoom + Math.log2(scale);\n    zoom = clamp(zoom, minZoom, maxZoom);\n    const zoomedViewport = this.makeViewport({ ...this.getViewportProps(),\n      zoom\n    });\n    return this._getUpdatedState({\n      zoom,\n      ...zoomedViewport.panByPosition(startZoomLngLat, pos)\n    });\n  }\n\n  zoomEnd() {\n    return this._getUpdatedState({\n      startZoomLngLat: null,\n      startZoom: null\n    });\n  }\n\n  zoomIn(speed = 2) {\n    return this._zoomFromCenter(speed);\n  }\n\n  zoomOut(speed = 2) {\n    return this._zoomFromCenter(1 / speed);\n  }\n\n  moveLeft(speed = 100) {\n    return this._panFromCenter([speed, 0]);\n  }\n\n  moveRight(speed = 100) {\n    return this._panFromCenter([-speed, 0]);\n  }\n\n  moveUp(speed = 100) {\n    return this._panFromCenter([0, speed]);\n  }\n\n  moveDown(speed = 100) {\n    return this._panFromCenter([0, -speed]);\n  }\n\n  rotateLeft(speed = 15) {\n    return this._getUpdatedState({\n      bearing: this.getViewportProps().bearing - speed\n    });\n  }\n\n  rotateRight(speed = 15) {\n    return this._getUpdatedState({\n      bearing: this.getViewportProps().bearing + speed\n    });\n  }\n\n  rotateUp(speed = 10) {\n    return this._getUpdatedState({\n      pitch: this.getViewportProps().pitch + speed\n    });\n  }\n\n  rotateDown(speed = 10) {\n    return this._getUpdatedState({\n      pitch: this.getViewportProps().pitch - speed\n    });\n  }\n\n  shortestPathFrom(viewState) {\n    const fromProps = viewState.getViewportProps();\n    const props = { ...this.getViewportProps()\n    };\n    const {\n      bearing,\n      longitude\n    } = props;\n\n    if (Math.abs(bearing - fromProps.bearing) > 180) {\n      props.bearing = bearing < 0 ? bearing + 360 : bearing - 360;\n    }\n\n    if (Math.abs(longitude - fromProps.longitude) > 180) {\n      props.longitude = longitude < 0 ? longitude + 360 : longitude - 360;\n    }\n\n    return props;\n  }\n\n  applyConstraints(props) {\n    const {\n      maxZoom,\n      minZoom,\n      zoom\n    } = props;\n    props.zoom = clamp(zoom, minZoom, maxZoom);\n    const {\n      maxPitch,\n      minPitch,\n      pitch\n    } = props;\n    props.pitch = clamp(pitch, minPitch, maxPitch);\n    const {\n      normalize = true\n    } = props;\n\n    if (normalize) {\n      Object.assign(props, normalizeViewportProps(props));\n    }\n\n    return props;\n  }\n\n  _zoomFromCenter(scale) {\n    const {\n      width,\n      height\n    } = this.getViewportProps();\n    return this.zoom({\n      pos: [width / 2, height / 2],\n      scale\n    });\n  }\n\n  _panFromCenter(offset) {\n    const {\n      width,\n      height\n    } = this.getViewportProps();\n    return this.pan({\n      startPos: [width / 2, height / 2],\n      pos: [width / 2 + offset[0], height / 2 + offset[1]]\n    });\n  }\n\n  _getUpdatedState(newProps) {\n    return new this.constructor({\n      makeViewport: this.makeViewport,\n      ...this.getViewportProps(),\n      ...this.getState(),\n      ...newProps\n    });\n  }\n\n  _unproject(pos) {\n    const viewport = this.makeViewport(this.getViewportProps());\n    return pos && viewport.unproject(pos);\n  }\n\n  _getNewRotation(pos, startPos, startPitch, startBearing) {\n    const deltaX = pos[0] - startPos[0];\n    const deltaY = pos[1] - startPos[1];\n    const centerY = pos[1];\n    const startY = startPos[1];\n    const {\n      width,\n      height\n    } = this.getViewportProps();\n    const deltaScaleX = deltaX / width;\n    let deltaScaleY = 0;\n\n    if (deltaY > 0) {\n      if (Math.abs(height - startY) > PITCH_MOUSE_THRESHOLD) {\n        deltaScaleY = deltaY / (startY - height) * PITCH_ACCEL;\n      }\n    } else if (deltaY < 0) {\n      if (startY > PITCH_MOUSE_THRESHOLD) {\n        deltaScaleY = 1 - centerY / startY;\n      }\n    }\n\n    deltaScaleY = clamp(deltaScaleY, -1, 1);\n    const {\n      minPitch,\n      maxPitch\n    } = this.getViewportProps();\n    const bearing = startBearing + 180 * deltaScaleX;\n    let pitch = startPitch;\n\n    if (deltaScaleY > 0) {\n      pitch = startPitch + deltaScaleY * (maxPitch - startPitch);\n    } else if (deltaScaleY < 0) {\n      pitch = startPitch - deltaScaleY * (minPitch - startPitch);\n    }\n\n    return {\n      pitch,\n      bearing\n    };\n  }\n\n}\nexport default class MapController extends Controller {\n  constructor(...args) {\n    super(...args);\n\n    _defineProperty(this, \"ControllerState\", MapState);\n\n    _defineProperty(this, \"transition\", {\n      transitionDuration: 300,\n      transitionInterpolator: new LinearInterpolator({\n        transitionProps: {\n          compare: ['longitude', 'latitude', 'zoom', 'bearing', 'pitch', 'position'],\n          required: ['longitude', 'latitude', 'zoom']\n        }\n      })\n    });\n\n    _defineProperty(this, \"dragMode\", 'pan');\n  }\n\n  setProps(props) {\n    props.position = props.position || [0, 0, 0];\n    const oldProps = this.props;\n    super.setProps(props);\n    const dimensionChanged = !oldProps || oldProps.height !== props.height;\n\n    if (dimensionChanged) {\n      this.updateViewport(new this.ControllerState({\n        makeViewport: this.makeViewport,\n        ...props,\n        ...this.state\n      }));\n    }\n  }\n\n}\n//# sourceMappingURL=map-controller.js.map","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport Transition from '../transitions/transition';\n\nconst noop = () => {};\n\nexport const TRANSITION_EVENTS = {\n  BREAK: 1,\n  SNAP_TO_END: 2,\n  IGNORE: 3\n};\n\nconst DEFAULT_EASING = t => t;\n\nconst DEFAULT_INTERRUPTION = TRANSITION_EVENTS.BREAK;\nexport default class TransitionManager {\n  constructor(opts) {\n    _defineProperty(this, \"getControllerState\", void 0);\n\n    _defineProperty(this, \"props\", void 0);\n\n    _defineProperty(this, \"propsInTransition\", void 0);\n\n    _defineProperty(this, \"transition\", void 0);\n\n    _defineProperty(this, \"onViewStateChange\", void 0);\n\n    _defineProperty(this, \"onStateChange\", void 0);\n\n    _defineProperty(this, \"_onTransitionUpdate\", transition => {\n      const {\n        time,\n        settings: {\n          interpolator,\n          startProps,\n          endProps,\n          duration,\n          easing\n        }\n      } = transition;\n      const t = easing(time / duration);\n      const viewport = interpolator.interpolateProps(startProps, endProps, t);\n      this.propsInTransition = this.getControllerState({ ...this.props,\n        ...viewport\n      }).getViewportProps();\n      this.onViewStateChange({\n        viewState: this.propsInTransition,\n        oldViewState: this.props\n      });\n    });\n\n    this.getControllerState = opts.getControllerState;\n    this.propsInTransition = null;\n    this.transition = new Transition(opts.timeline);\n    this.onViewStateChange = opts.onViewStateChange || noop;\n    this.onStateChange = opts.onStateChange || noop;\n  }\n\n  finalize() {\n    this.transition.cancel();\n  }\n\n  getViewportInTransition() {\n    return this.propsInTransition;\n  }\n\n  processViewStateChange(nextProps) {\n    let transitionTriggered = false;\n    const currentProps = this.props;\n    this.props = nextProps;\n\n    if (!currentProps || this._shouldIgnoreViewportChange(currentProps, nextProps)) {\n      return false;\n    }\n\n    if (this._isTransitionEnabled(nextProps)) {\n      let startProps = currentProps;\n\n      if (this.transition.inProgress) {\n        const {\n          interruption,\n          endProps\n        } = this.transition.settings;\n        startProps = { ...currentProps,\n          ...(interruption === TRANSITION_EVENTS.SNAP_TO_END ? endProps : this.propsInTransition || currentProps)\n        };\n      }\n\n      this._triggerTransition(startProps, nextProps);\n\n      transitionTriggered = true;\n    } else {\n      this.transition.cancel();\n    }\n\n    return transitionTriggered;\n  }\n\n  updateTransition() {\n    this.transition.update();\n  }\n\n  _isTransitionEnabled(props) {\n    const {\n      transitionDuration,\n      transitionInterpolator\n    } = props;\n    return (transitionDuration > 0 || transitionDuration === 'auto') && Boolean(transitionInterpolator);\n  }\n\n  _isUpdateDueToCurrentTransition(props) {\n    if (this.transition.inProgress && this.propsInTransition) {\n      return this.transition.settings.interpolator.arePropsEqual(props, this.propsInTransition);\n    }\n\n    return false;\n  }\n\n  _shouldIgnoreViewportChange(currentProps, nextProps) {\n    if (this.transition.inProgress) {\n      return this.transition.settings.interruption === TRANSITION_EVENTS.IGNORE || this._isUpdateDueToCurrentTransition(nextProps);\n    }\n\n    if (this._isTransitionEnabled(nextProps)) {\n      return nextProps.transitionInterpolator.arePropsEqual(currentProps, nextProps);\n    }\n\n    return true;\n  }\n\n  _triggerTransition(startProps, endProps) {\n    const startViewstate = this.getControllerState(startProps);\n    const endViewStateProps = this.getControllerState(endProps).shortestPathFrom(startViewstate);\n    const transitionInterpolator = endProps.transitionInterpolator;\n    const duration = transitionInterpolator.getDuration ? transitionInterpolator.getDuration(startProps, endProps) : endProps.transitionDuration;\n\n    if (duration === 0) {\n      return;\n    }\n\n    const initialProps = transitionInterpolator.initializeProps(startProps, endViewStateProps);\n    this.propsInTransition = {};\n    const transitionSettings = {\n      duration,\n      easing: endProps.transitionEasing || DEFAULT_EASING,\n      interpolator: transitionInterpolator,\n      interruption: endProps.transitionInterruption || DEFAULT_INTERRUPTION,\n      startProps: initialProps.start,\n      endProps: initialProps.end,\n      onStart: endProps.onTransitionStart,\n      onUpdate: this._onTransitionUpdate,\n      onInterrupt: this._onTransitionEnd(endProps.onTransitionInterrupt),\n      onEnd: this._onTransitionEnd(endProps.onTransitionEnd)\n    };\n    this.transition.start(transitionSettings);\n    this.onStateChange({\n      inTransition: true\n    });\n    this.updateTransition();\n  }\n\n  _onTransitionEnd(callback) {\n    return transition => {\n      this.propsInTransition = null;\n      this.onStateChange({\n        inTransition: false,\n        isZooming: false,\n        isPanning: false,\n        isRotating: false\n      });\n      callback === null || callback === void 0 ? void 0 : callback(transition);\n    };\n  }\n\n}\n//# sourceMappingURL=transition-manager.js.map","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nexport default class ViewState {\n  constructor(props, state) {\n    _defineProperty(this, \"_viewportProps\", void 0);\n\n    _defineProperty(this, \"_state\", void 0);\n\n    this._viewportProps = this.applyConstraints(props);\n    this._state = state;\n  }\n\n  getViewportProps() {\n    return this._viewportProps;\n  }\n\n  getState() {\n    return this._state;\n  }\n\n}\n//# sourceMappingURL=view-state.js.map","import deckLog from '../utils/log';\nimport { getLoggers } from './loggers';\nlet loggers = {};\n\nif (process.env.NODE_ENV !== 'production') {\n  loggers = getLoggers(deckLog);\n}\n\nexport function register(handlers) {\n  loggers = handlers;\n}\nexport default function debug(eventType, arg1, arg2, arg3) {\n  if (deckLog.level > 0 && loggers[eventType]) {\n    loggers[eventType].call(null, arg1, arg2, arg3);\n  }\n}\n//# sourceMappingURL=index.js.map","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nconst DEFAULT_LIGHT_COLOR = [255, 255, 255];\nconst DEFAULT_LIGHT_INTENSITY = 1.0;\nlet idCount = 0;\nexport class AmbientLight {\n  constructor(props = {}) {\n    _defineProperty(this, \"id\", void 0);\n\n    _defineProperty(this, \"color\", void 0);\n\n    _defineProperty(this, \"intensity\", void 0);\n\n    _defineProperty(this, \"type\", 'ambient');\n\n    const {\n      color = DEFAULT_LIGHT_COLOR\n    } = props;\n    const {\n      intensity = DEFAULT_LIGHT_INTENSITY\n    } = props;\n    this.id = props.id || \"ambient-\".concat(idCount++);\n    this.color = color;\n    this.intensity = intensity;\n  }\n\n}\n//# sourceMappingURL=ambient-light.js.map","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Vector3 } from '@math.gl/core';\nconst DEFAULT_LIGHT_COLOR = [255, 255, 255];\nconst DEFAULT_LIGHT_INTENSITY = 1.0;\nconst DEFAULT_LIGHT_DIRECTION = [0.0, 0.0, -1.0];\nlet idCount = 0;\nexport class DirectionalLight {\n  constructor(props = {}) {\n    _defineProperty(this, \"id\", void 0);\n\n    _defineProperty(this, \"color\", void 0);\n\n    _defineProperty(this, \"intensity\", void 0);\n\n    _defineProperty(this, \"type\", 'directional');\n\n    _defineProperty(this, \"direction\", void 0);\n\n    _defineProperty(this, \"shadow\", void 0);\n\n    const {\n      color = DEFAULT_LIGHT_COLOR\n    } = props;\n    const {\n      intensity = DEFAULT_LIGHT_INTENSITY\n    } = props;\n    const {\n      direction = DEFAULT_LIGHT_DIRECTION\n    } = props;\n    const {\n      _shadow = false\n    } = props;\n    this.id = props.id || \"directional-\".concat(idCount++);\n    this.color = color;\n    this.intensity = intensity;\n    this.type = 'directional';\n    this.direction = new Vector3(direction).normalize().toArray();\n    this.shadow = _shadow;\n  }\n\n  getProjectedLight(opts) {\n    return this;\n  }\n\n}\n//# sourceMappingURL=directional-light.js.map","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { default as LayersPass } from './layers-pass';\nimport { Framebuffer, Texture2D, Renderbuffer, withParameters, cssToDeviceRatio } from '@luma.gl/core';\nexport default class ShadowPass extends LayersPass {\n  constructor(gl, props) {\n    super(gl, props);\n\n    _defineProperty(this, \"shadowMap\", void 0);\n\n    _defineProperty(this, \"depthBuffer\", void 0);\n\n    _defineProperty(this, \"fbo\", void 0);\n\n    this.shadowMap = new Texture2D(gl, {\n      width: 1,\n      height: 1,\n      parameters: {\n        [10241]: 9729,\n        [10240]: 9729,\n        [10242]: 33071,\n        [10243]: 33071\n      }\n    });\n    this.depthBuffer = new Renderbuffer(gl, {\n      format: 33189,\n      width: 1,\n      height: 1\n    });\n    this.fbo = new Framebuffer(gl, {\n      id: 'shadowmap',\n      width: 1,\n      height: 1,\n      attachments: {\n        [36064]: this.shadowMap,\n        [36096]: this.depthBuffer\n      }\n    });\n  }\n\n  render(params) {\n    const target = this.fbo;\n    withParameters(this.gl, {\n      depthRange: [0, 1],\n      depthTest: true,\n      blend: false,\n      clearColor: [1, 1, 1, 1]\n    }, () => {\n      const viewport = params.viewports[0];\n      const pixelRatio = cssToDeviceRatio(this.gl);\n      const width = viewport.width * pixelRatio;\n      const height = viewport.height * pixelRatio;\n\n      if (width !== target.width || height !== target.height) {\n        target.resize({\n          width,\n          height\n        });\n      }\n\n      super.render({ ...params,\n        target,\n        pass: 'shadow'\n      });\n    });\n  }\n\n  shouldDrawLayer(layer) {\n    return layer.props.shadowEnabled !== false;\n  }\n\n  getModuleParameters() {\n    return {\n      drawToShadowMap: true\n    };\n  }\n\n  delete() {\n    if (this.fbo) {\n      this.fbo.delete();\n      this.fbo = null;\n    }\n\n    if (this.shadowMap) {\n      this.shadowMap.delete();\n      this.shadowMap = null;\n    }\n\n    if (this.depthBuffer) {\n      this.depthBuffer.delete();\n      this.depthBuffer = null;\n    }\n  }\n\n}\n//# sourceMappingURL=shadow-pass.js.map","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Texture2D, ProgramManager } from '@luma.gl/core';\nimport { AmbientLight } from './ambient-light';\nimport { DirectionalLight } from './directional-light';\nimport { Matrix4, Vector3 } from '@math.gl/core';\nimport ShadowPass from '../../passes/shadow-pass';\nimport shadow from '../../shaderlib/shadow/shadow';\nconst DEFAULT_AMBIENT_LIGHT_PROPS = {\n  color: [255, 255, 255],\n  intensity: 1.0\n};\nconst DEFAULT_DIRECTIONAL_LIGHT_PROPS = [{\n  color: [255, 255, 255],\n  intensity: 1.0,\n  direction: [-1, 3, -1]\n}, {\n  color: [255, 255, 255],\n  intensity: 0.9,\n  direction: [1, -8, -2.5]\n}];\nconst DEFAULT_SHADOW_COLOR = [0, 0, 0, 200 / 255];\nexport default class LightingEffect {\n  constructor(props = {}) {\n    _defineProperty(this, \"id\", 'lighting-effect');\n\n    _defineProperty(this, \"props\", void 0);\n\n    _defineProperty(this, \"shadowColor\", DEFAULT_SHADOW_COLOR);\n\n    _defineProperty(this, \"shadow\", void 0);\n\n    _defineProperty(this, \"ambientLight\", void 0);\n\n    _defineProperty(this, \"directionalLights\", void 0);\n\n    _defineProperty(this, \"pointLights\", void 0);\n\n    _defineProperty(this, \"shadowPasses\", []);\n\n    _defineProperty(this, \"shadowMaps\", []);\n\n    _defineProperty(this, \"dummyShadowMap\", null);\n\n    _defineProperty(this, \"programManager\", void 0);\n\n    _defineProperty(this, \"shadowMatrices\", void 0);\n\n    this.setProps(props);\n  }\n\n  setProps(props) {\n    this.ambientLight = null;\n    this.directionalLights = [];\n    this.pointLights = [];\n\n    for (const key in props) {\n      const lightSource = props[key];\n\n      switch (lightSource.type) {\n        case 'ambient':\n          this.ambientLight = lightSource;\n          break;\n\n        case 'directional':\n          this.directionalLights.push(lightSource);\n          break;\n\n        case 'point':\n          this.pointLights.push(lightSource);\n          break;\n\n        default:\n      }\n    }\n\n    this._applyDefaultLights();\n\n    this.shadow = this.directionalLights.some(light => light.shadow);\n    this.props = props;\n  }\n\n  preRender(gl, {\n    layers,\n    layerFilter,\n    viewports,\n    onViewportActive,\n    views\n  }) {\n    if (!this.shadow) return;\n    this.shadowMatrices = this._calculateMatrices();\n\n    if (this.shadowPasses.length === 0) {\n      this._createShadowPasses(gl);\n    }\n\n    if (!this.programManager) {\n      this.programManager = ProgramManager.getDefaultProgramManager(gl);\n\n      if (shadow) {\n        this.programManager.addDefaultModule(shadow);\n      }\n    }\n\n    if (!this.dummyShadowMap) {\n      this.dummyShadowMap = new Texture2D(gl, {\n        width: 1,\n        height: 1\n      });\n    }\n\n    for (let i = 0; i < this.shadowPasses.length; i++) {\n      const shadowPass = this.shadowPasses[i];\n      shadowPass.render({\n        layers,\n        layerFilter,\n        viewports,\n        onViewportActive,\n        views,\n        moduleParameters: {\n          shadowLightId: i,\n          dummyShadowMap: this.dummyShadowMap,\n          shadowMatrices: this.shadowMatrices\n        }\n      });\n    }\n  }\n\n  getModuleParameters(layer) {\n    const parameters = this.shadow ? {\n      shadowMaps: this.shadowMaps,\n      dummyShadowMap: this.dummyShadowMap,\n      shadowColor: this.shadowColor,\n      shadowMatrices: this.shadowMatrices\n    } : {};\n    parameters.lightSources = {\n      ambientLight: this.ambientLight,\n      directionalLights: this.directionalLights.map(directionalLight => directionalLight.getProjectedLight({\n        layer\n      })),\n      pointLights: this.pointLights.map(pointLight => pointLight.getProjectedLight({\n        layer\n      }))\n    };\n    return parameters;\n  }\n\n  cleanup() {\n    for (const shadowPass of this.shadowPasses) {\n      shadowPass.delete();\n    }\n\n    this.shadowPasses.length = 0;\n    this.shadowMaps.length = 0;\n\n    if (this.dummyShadowMap) {\n      this.dummyShadowMap.delete();\n      this.dummyShadowMap = null;\n    }\n\n    if (this.shadow && this.programManager) {\n      this.programManager.removeDefaultModule(shadow);\n      this.programManager = null;\n    }\n  }\n\n  _calculateMatrices() {\n    const lightMatrices = [];\n\n    for (const light of this.directionalLights) {\n      const viewMatrix = new Matrix4().lookAt({\n        eye: new Vector3(light.direction).negate()\n      });\n      lightMatrices.push(viewMatrix);\n    }\n\n    return lightMatrices;\n  }\n\n  _createShadowPasses(gl) {\n    for (let i = 0; i < this.directionalLights.length; i++) {\n      const shadowPass = new ShadowPass(gl);\n      this.shadowPasses[i] = shadowPass;\n      this.shadowMaps[i] = shadowPass.shadowMap;\n    }\n  }\n\n  _applyDefaultLights() {\n    const {\n      ambientLight,\n      pointLights,\n      directionalLights\n    } = this;\n\n    if (!ambientLight && pointLights.length === 0 && directionalLights.length === 0) {\n      this.ambientLight = new AmbientLight(DEFAULT_AMBIENT_LIGHT_PROPS);\n      this.directionalLights.push(new DirectionalLight(DEFAULT_DIRECTIONAL_LIGHT_PROPS[0]), new DirectionalLight(DEFAULT_DIRECTIONAL_LIGHT_PROPS[1]));\n    }\n  }\n\n}\n//# sourceMappingURL=lighting-effect.js.map","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { projectPosition } from '../../shaderlib/project/project-functions';\nimport { COORDINATE_SYSTEM } from '../../lib/constants';\nconst DEFAULT_LIGHT_COLOR = [255, 255, 255];\nconst DEFAULT_LIGHT_INTENSITY = 1.0;\nconst DEFAULT_ATTENUATION = [0, 0, 1];\nconst DEFAULT_LIGHT_POSITION = [0.0, 0.0, 1.0];\nlet idCount = 0;\nexport class PointLight {\n  constructor(props = {}) {\n    _defineProperty(this, \"id\", void 0);\n\n    _defineProperty(this, \"color\", void 0);\n\n    _defineProperty(this, \"intensity\", void 0);\n\n    _defineProperty(this, \"type\", 'point');\n\n    _defineProperty(this, \"position\", void 0);\n\n    _defineProperty(this, \"attenuation\", void 0);\n\n    _defineProperty(this, \"projectedLight\", void 0);\n\n    const {\n      color = DEFAULT_LIGHT_COLOR\n    } = props;\n    const {\n      intensity = DEFAULT_LIGHT_INTENSITY\n    } = props;\n    const {\n      position = DEFAULT_LIGHT_POSITION\n    } = props;\n    this.id = props.id || \"point-\".concat(idCount++);\n    this.color = color;\n    this.intensity = intensity;\n    this.type = 'point';\n    this.position = position;\n    this.attenuation = getAttenuation(props);\n    this.projectedLight = { ...this\n    };\n  }\n\n  getProjectedLight({\n    layer\n  }) {\n    const {\n      projectedLight\n    } = this;\n    const viewport = layer.context.viewport;\n    const {\n      coordinateSystem,\n      coordinateOrigin\n    } = layer.props;\n    const position = projectPosition(this.position, {\n      viewport,\n      coordinateSystem,\n      coordinateOrigin,\n      fromCoordinateSystem: viewport.isGeospatial ? COORDINATE_SYSTEM.LNGLAT : COORDINATE_SYSTEM.CARTESIAN,\n      fromCoordinateOrigin: [0, 0, 0]\n    });\n    projectedLight.color = this.color;\n    projectedLight.intensity = this.intensity;\n    projectedLight.position = position;\n    return projectedLight;\n  }\n\n}\n\nfunction getAttenuation(props) {\n  if (props.attenuation) {\n    return props.attenuation;\n  }\n\n  if ('intensity' in props) {\n    return [0, 0, props.intensity || 0];\n  }\n\n  return DEFAULT_ATTENUATION;\n}\n//# sourceMappingURL=point-light.js.map","import { PointLight } from './point-light';\nimport { getUniformsFromViewport } from '../../shaderlib/project/viewport-uniforms';\nexport default class CameraLight extends PointLight {\n  getProjectedLight({\n    layer\n  }) {\n    const {\n      projectedLight\n    } = this;\n    const viewport = layer.context.viewport;\n    const {\n      coordinateSystem,\n      coordinateOrigin,\n      modelMatrix\n    } = layer.props;\n    const {\n      project_uCameraPosition\n    } = getUniformsFromViewport({\n      viewport,\n      modelMatrix,\n      coordinateSystem,\n      coordinateOrigin\n    });\n    projectedLight.color = this.color;\n    projectedLight.intensity = this.intensity;\n    projectedLight.position = project_uCameraPosition;\n    return projectedLight;\n  }\n\n}\n//# sourceMappingURL=camera-light.js.map","const DEGREES_TO_RADIANS = Math.PI / 180;\nconst DAY_IN_MS = 1000 * 60 * 60 * 24;\nconst JD1970 = 2440588;\nconst JD2000 = 2451545;\nconst e = DEGREES_TO_RADIANS * 23.4397;\nconst M0 = 357.5291;\nconst M1 = 0.98560028;\nconst THETA0 = 280.147;\nconst THETA1 = 360.9856235;\nexport function getSunPosition(timestamp, latitude, longitude) {\n  const longitudeWestInRadians = DEGREES_TO_RADIANS * -longitude;\n  const phi = DEGREES_TO_RADIANS * latitude;\n  const d = toDays(timestamp);\n  const c = getSunCoords(d);\n  const H = getSiderealTime(d, longitudeWestInRadians) - c.rightAscension;\n  return {\n    azimuth: getAzimuth(H, phi, c.declination),\n    altitude: getAltitude(H, phi, c.declination)\n  };\n}\nexport function getSunDirection(timestamp, latitude, longitude) {\n  const {\n    azimuth,\n    altitude\n  } = getSunPosition(timestamp, latitude, longitude);\n  return [Math.sin(azimuth) * Math.cos(altitude), Math.cos(azimuth) * Math.cos(altitude), -Math.sin(altitude)];\n}\n\nfunction toJulianDay(timestamp) {\n  const ts = typeof timestamp === 'number' ? timestamp : timestamp.getTime();\n  return ts / DAY_IN_MS - 0.5 + JD1970;\n}\n\nfunction toDays(timestamp) {\n  return toJulianDay(timestamp) - JD2000;\n}\n\nfunction getRightAscension(eclipticLongitude, b) {\n  const lambda = eclipticLongitude;\n  return Math.atan2(Math.sin(lambda) * Math.cos(e) - Math.tan(b) * Math.sin(e), Math.cos(lambda));\n}\n\nfunction getDeclination(eclipticLongitude, b) {\n  const lambda = eclipticLongitude;\n  return Math.asin(Math.sin(b) * Math.cos(e) + Math.cos(b) * Math.sin(e) * Math.sin(lambda));\n}\n\nfunction getAzimuth(hourAngle, latitudeInRadians, declination) {\n  const H = hourAngle;\n  const phi = latitudeInRadians;\n  const delta = declination;\n  return Math.atan2(Math.sin(H), Math.cos(H) * Math.sin(phi) - Math.tan(delta) * Math.cos(phi));\n}\n\nfunction getAltitude(hourAngle, latitudeInRadians, declination) {\n  const H = hourAngle;\n  const phi = latitudeInRadians;\n  const delta = declination;\n  return Math.asin(Math.sin(phi) * Math.sin(delta) + Math.cos(phi) * Math.cos(delta) * Math.cos(H));\n}\n\nfunction getSiderealTime(dates, longitudeWestInRadians) {\n  return DEGREES_TO_RADIANS * (THETA0 + THETA1 * dates) - longitudeWestInRadians;\n}\n\nfunction getSolarMeanAnomaly(days) {\n  return DEGREES_TO_RADIANS * (M0 + M1 * days);\n}\n\nfunction getEclipticLongitude(meanAnomaly) {\n  const M = meanAnomaly;\n  const C = DEGREES_TO_RADIANS * (1.9148 * Math.sin(M) + 0.02 * Math.sin(2 * M) + 0.0003 * Math.sin(3 * M));\n  const P = DEGREES_TO_RADIANS * 102.9372;\n  return M + C + P + Math.PI;\n}\n\nfunction getSunCoords(dates) {\n  const M = getSolarMeanAnomaly(dates);\n  const L = getEclipticLongitude(M);\n  return {\n    declination: getDeclination(L, 0),\n    rightAscension: getRightAscension(L, 0)\n  };\n}\n//# sourceMappingURL=suncalc.js.map","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { DirectionalLight } from './directional-light';\nimport { getSunDirection } from '@math.gl/sun';\nexport default class SunLight extends DirectionalLight {\n  constructor(opts) {\n    super(opts);\n\n    _defineProperty(this, \"timestamp\", void 0);\n\n    this.timestamp = opts.timestamp;\n  }\n\n  getProjectedLight({\n    layer\n  }) {\n    const {\n      viewport\n    } = layer.context;\n    const isGlobe = viewport.resolution && viewport.resolution > 0;\n\n    if (isGlobe) {\n      const [x, y, z] = getSunDirection(this.timestamp, 0, 0);\n      this.direction = [x, -z, y];\n    } else {\n      const {\n        latitude,\n        longitude\n      } = viewport;\n      this.direction = getSunDirection(this.timestamp, latitude, longitude);\n    }\n\n    return this;\n  }\n\n}\n//# sourceMappingURL=sun-light.js.map","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { ClipSpace, setParameters, withParameters, clear } from '@luma.gl/core';\nimport Pass from './pass';\nexport default class ScreenPass extends Pass {\n  constructor(gl, props) {\n    super(gl, props);\n\n    _defineProperty(this, \"model\", void 0);\n\n    const {\n      module,\n      fs,\n      id\n    } = props;\n    this.model = new ClipSpace(gl, {\n      id,\n      fs,\n      modules: [module]\n    });\n  }\n\n  render(params) {\n    const gl = this.gl;\n    setParameters(gl, {\n      viewport: [0, 0, gl.drawingBufferWidth, gl.drawingBufferHeight]\n    });\n    withParameters(gl, {\n      framebuffer: params.outputBuffer,\n      clearColor: [0, 0, 0, 0]\n    }, () => this._renderPass(gl, params));\n  }\n\n  delete() {\n    this.model.delete();\n    this.model = null;\n  }\n\n  _renderPass(gl, options) {\n    const {\n      inputBuffer\n    } = options;\n    clear(gl, {\n      color: true\n    });\n    this.model.draw({\n      moduleSettings: options.moduleSettings,\n      uniforms: {\n        texture: inputBuffer,\n        texSize: [inputBuffer.width, inputBuffer.height]\n      },\n      parameters: {\n        depthWrite: false,\n        depthTest: false\n      }\n    });\n  }\n\n}\n//# sourceMappingURL=screen-pass.js.map","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport ScreenPass from '../passes/screen-pass';\nimport { normalizeShaderModule } from '@luma.gl/core';\nexport default class PostProcessEffect {\n  constructor(module, props = {}) {\n    _defineProperty(this, \"id\", void 0);\n\n    _defineProperty(this, \"props\", void 0);\n\n    _defineProperty(this, \"module\", void 0);\n\n    _defineProperty(this, \"passes\", void 0);\n\n    this.id = \"\".concat(module.name, \"-pass\");\n    this.props = props;\n    normalizeShaderModule(module);\n    this.module = module;\n  }\n\n  setProps(props) {\n    this.props = props;\n  }\n\n  preRender() {}\n\n  postRender(gl, params) {\n    const passes = this.passes || createPasses(gl, this.module, this.id);\n    this.passes = passes;\n    const {\n      target\n    } = params;\n    let inputBuffer = params.inputBuffer;\n    let outputBuffer = params.swapBuffer;\n\n    for (let index = 0; index < this.passes.length; index++) {\n      if (target && index === this.passes.length - 1) {\n        outputBuffer = target;\n      }\n\n      this.passes[index].render({\n        inputBuffer,\n        outputBuffer,\n        moduleSettings: this.props\n      });\n      const switchBuffer = outputBuffer;\n      outputBuffer = inputBuffer;\n      inputBuffer = switchBuffer;\n    }\n\n    return inputBuffer;\n  }\n\n  cleanup() {\n    if (this.passes) {\n      for (const pass of this.passes) {\n        pass.delete();\n      }\n\n      this.passes = undefined;\n    }\n  }\n\n}\n\nfunction createPasses(gl, module, id) {\n  if (!module.passes) {\n    const fs = getFragmentShaderForRenderPass(module);\n    const pass = new ScreenPass(gl, {\n      id,\n      module,\n      fs\n    });\n    return [pass];\n  }\n\n  return module.passes.map((pass, index) => {\n    const fs = getFragmentShaderForRenderPass(module, pass);\n    const idn = \"\".concat(id, \"-\").concat(index);\n    return new ScreenPass(gl, {\n      id: idn,\n      module,\n      fs\n    });\n  });\n}\n\nconst FILTER_FS_TEMPLATE = func => \"uniform sampler2D texture;\\nuniform vec2 texSize;\\n\\nvarying vec2 position;\\nvarying vec2 coordinate;\\nvarying vec2 uv;\\n\\nvoid main() {\\n  vec2 texCoord = coordinate;\\n\\n  gl_FragColor = texture2D(texture, texCoord);\\n  gl_FragColor = \".concat(func, \"(gl_FragColor, texSize, texCoord);\\n}\\n\");\n\nconst SAMPLER_FS_TEMPLATE = func => \"uniform sampler2D texture;\\nuniform vec2 texSize;\\n\\nvarying vec2 position;\\nvarying vec2 coordinate;\\nvarying vec2 uv;\\n\\nvoid main() {\\n  vec2 texCoord = coordinate;\\n\\n  gl_FragColor = \".concat(func, \"(texture, texSize, texCoord);\\n}\\n\");\n\nfunction getFragmentShaderForRenderPass(module, pass = module) {\n  if (pass.filter) {\n    const func = typeof pass.filter === 'string' ? pass.filter : \"\".concat(module.name, \"_filterColor\");\n    return FILTER_FS_TEMPLATE(func);\n  }\n\n  if (pass.sampler) {\n    const func = typeof pass.sampler === 'string' ? pass.sampler : \"\".concat(module.name, \"_sampleColor\");\n    return SAMPLER_FS_TEMPLATE(func);\n  }\n\n  return null;\n}\n//# sourceMappingURL=post-process-effect.js.map","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport Viewport from '../viewports/viewport';\nimport { Matrix4 } from '@math.gl/core';\nimport { pixelsToWorld, fovyToAltitude } from '@math.gl/web-mercator';\nconst DEGREES_TO_RADIANS = Math.PI / 180;\n\nfunction getViewMatrix({\n  height,\n  focalDistance,\n  orbitAxis,\n  rotationX,\n  rotationOrbit,\n  zoom\n}) {\n  const up = orbitAxis === 'Z' ? [0, 0, 1] : [0, 1, 0];\n  const eye = orbitAxis === 'Z' ? [0, -focalDistance, 0] : [0, 0, focalDistance];\n  const viewMatrix = new Matrix4().lookAt({\n    eye,\n    up\n  });\n  viewMatrix.rotateX(rotationX * DEGREES_TO_RADIANS);\n\n  if (orbitAxis === 'Z') {\n    viewMatrix.rotateZ(rotationOrbit * DEGREES_TO_RADIANS);\n  } else {\n    viewMatrix.rotateY(rotationOrbit * DEGREES_TO_RADIANS);\n  }\n\n  const projectionScale = Math.pow(2, zoom) / height;\n  viewMatrix.scale(projectionScale);\n  return viewMatrix;\n}\n\nexport default class OrbitViewport extends Viewport {\n  constructor(props) {\n    const {\n      height,\n      projectionMatrix,\n      fovy = 50,\n      orbitAxis = 'Z',\n      target = [0, 0, 0],\n      rotationX = 0,\n      rotationOrbit = 0,\n      zoom = 0\n    } = props;\n    const focalDistance = projectionMatrix ? projectionMatrix[5] / 2 : fovyToAltitude(fovy);\n    super({ ...props,\n      longitude: undefined,\n      viewMatrix: getViewMatrix({\n        height: height || 1,\n        focalDistance,\n        orbitAxis,\n        rotationX,\n        rotationOrbit,\n        zoom\n      }),\n      fovy,\n      focalDistance,\n      position: target,\n      zoom\n    });\n\n    _defineProperty(this, \"projectedCenter\", void 0);\n\n    this.projectedCenter = this.project(this.center);\n  }\n\n  unproject(xyz, {\n    topLeft = true\n  } = {}) {\n    const [x, y, z = this.projectedCenter[2]] = xyz;\n    const y2 = topLeft ? y : this.height - y;\n    const [X, Y, Z] = pixelsToWorld([x, y2, z], this.pixelUnprojectionMatrix);\n    return [X, Y, Z];\n  }\n\n  panByPosition(coords, pixel) {\n    const p0 = this.project(coords);\n    const nextCenter = [this.width / 2 + p0[0] - pixel[0], this.height / 2 + p0[1] - pixel[1], this.projectedCenter[2]];\n    return {\n      target: this.unproject(nextCenter)\n    };\n  }\n\n}\n//# sourceMappingURL=orbit-viewport.js.map","import Viewport from '../viewports/viewport';\nimport { Matrix4, clamp } from '@math.gl/core';\nimport { pixelsToWorld } from '@math.gl/web-mercator';\nimport * as vec2 from 'gl-matrix/vec2';\nconst viewMatrix = new Matrix4().lookAt({\n  eye: [0, 0, 1]\n});\n\nfunction getProjectionMatrix({\n  width,\n  height,\n  near,\n  far,\n  padding\n}) {\n  let left = -width / 2;\n  let right = width / 2;\n  let bottom = -height / 2;\n  let top = height / 2;\n\n  if (padding) {\n    const {\n      left: l = 0,\n      right: r = 0,\n      top: t = 0,\n      bottom: b = 0\n    } = padding;\n    const offsetX = clamp((l + width - r) / 2, 0, width) - width / 2;\n    const offsetY = clamp((t + height - b) / 2, 0, height) - height / 2;\n    left -= offsetX;\n    right -= offsetX;\n    bottom += offsetY;\n    top += offsetY;\n  }\n\n  return new Matrix4().ortho({\n    left,\n    right,\n    bottom,\n    top,\n    near,\n    far\n  });\n}\n\nexport default class OrthographicViewport extends Viewport {\n  constructor(props) {\n    const {\n      width,\n      height,\n      near = 0.1,\n      far = 1000,\n      zoom = 0,\n      target = [0, 0, 0],\n      padding = null,\n      flipY = true\n    } = props;\n    const zoomX = Array.isArray(zoom) ? zoom[0] : zoom;\n    const zoomY = Array.isArray(zoom) ? zoom[1] : zoom;\n    const zoom_ = Math.min(zoomX, zoomY);\n    const scale = Math.pow(2, zoom_);\n    let distanceScales;\n\n    if (zoomX !== zoomY) {\n      const scaleX = Math.pow(2, zoomX);\n      const scaleY = Math.pow(2, zoomY);\n      distanceScales = {\n        unitsPerMeter: [scaleX / scale, scaleY / scale, 1],\n        metersPerUnit: [scale / scaleX, scale / scaleY, 1]\n      };\n    }\n\n    super({ ...props,\n      longitude: undefined,\n      position: target,\n      viewMatrix: viewMatrix.clone().scale([scale, scale * (flipY ? -1 : 1), scale]),\n      projectionMatrix: getProjectionMatrix({\n        width: width || 1,\n        height: height || 1,\n        padding,\n        near,\n        far\n      }),\n      zoom: zoom_,\n      distanceScales\n    });\n  }\n\n  projectFlat([X, Y]) {\n    const {\n      unitsPerMeter\n    } = this.distanceScales;\n    return [X * unitsPerMeter[0], Y * unitsPerMeter[1]];\n  }\n\n  unprojectFlat([x, y]) {\n    const {\n      metersPerUnit\n    } = this.distanceScales;\n    return [x * metersPerUnit[0], y * metersPerUnit[1]];\n  }\n\n  panByPosition(coords, pixel) {\n    const fromLocation = pixelsToWorld(pixel, this.pixelUnprojectionMatrix);\n    const toLocation = this.projectFlat(coords);\n    const translate = vec2.add([], toLocation, vec2.negate([], fromLocation));\n    const newCenter = vec2.add([], this.center, translate);\n    return {\n      target: this.unprojectFlat(newCenter)\n    };\n  }\n\n}\n//# sourceMappingURL=orthographic-viewport.js.map","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport Viewport from '../viewports/viewport';\nimport { getMeterZoom } from '@math.gl/web-mercator';\nimport { Matrix4, _SphericalCoordinates as SphericalCoordinates } from '@math.gl/core';\nexport default class FirstPersonViewport extends Viewport {\n  constructor(props) {\n    const {\n      longitude,\n      latitude,\n      modelMatrix,\n      bearing = 0,\n      pitch = 0,\n      up = [0, 0, 1]\n    } = props;\n    const spherical = new SphericalCoordinates({\n      bearing,\n      pitch: pitch === -90 ? 0.0001 : 90 + pitch\n    });\n    const dir = spherical.toVector3().normalize();\n    const center = modelMatrix ? new Matrix4(modelMatrix).transformAsVector(dir) : dir;\n    const zoom = Number.isFinite(latitude) ? getMeterZoom({\n      latitude: latitude\n    }) : 0;\n    const scale = Math.pow(2, zoom);\n    const viewMatrix = new Matrix4().lookAt({\n      eye: [0, 0, 0],\n      center,\n      up\n    }).scale(scale);\n    super({ ...props,\n      zoom,\n      viewMatrix\n    });\n\n    _defineProperty(this, \"longitude\", void 0);\n\n    _defineProperty(this, \"latitude\", void 0);\n\n    this.latitude = latitude;\n    this.longitude = longitude;\n  }\n\n}\n//# sourceMappingURL=first-person-viewport.js.map","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport Controller from './controller';\nimport ViewState from './view-state';\nimport { mod } from '../utils/math-utils';\nimport LinearInterpolator from '../transitions/linear-interpolator';\nimport { Vector3, _SphericalCoordinates as SphericalCoordinates, clamp } from '@math.gl/core';\nconst MOVEMENT_SPEED = 20;\n\nclass FirstPersonState extends ViewState {\n  constructor(options) {\n    const {\n      width,\n      height,\n      position = [0, 0, 0],\n      bearing = 0,\n      pitch = 0,\n      longitude = null,\n      latitude = null,\n      maxPitch = 90,\n      minPitch = -90,\n      startRotatePos,\n      startBearing,\n      startPitch,\n      startZoomPosition\n    } = options;\n    super({\n      width,\n      height,\n      position,\n      bearing,\n      pitch,\n      longitude,\n      latitude,\n      maxPitch,\n      minPitch\n    }, {\n      startRotatePos,\n      startBearing,\n      startPitch,\n      startZoomPosition\n    });\n  }\n\n  panStart() {\n    return this;\n  }\n\n  pan() {\n    return this;\n  }\n\n  panEnd() {\n    return this;\n  }\n\n  rotateStart({\n    pos\n  }) {\n    return this._getUpdatedState({\n      startRotatePos: pos,\n      startBearing: this.getViewportProps().bearing,\n      startPitch: this.getViewportProps().pitch\n    });\n  }\n\n  rotate({\n    pos,\n    deltaAngleX = 0,\n    deltaAngleY = 0\n  }) {\n    const {\n      startRotatePos,\n      startBearing,\n      startPitch\n    } = this.getState();\n    const {\n      width,\n      height\n    } = this.getViewportProps();\n\n    if (!startRotatePos || startBearing === undefined || startPitch === undefined) {\n      return this;\n    }\n\n    let newRotation;\n\n    if (pos) {\n      const deltaScaleX = (pos[0] - startRotatePos[0]) / width;\n      const deltaScaleY = (pos[1] - startRotatePos[1]) / height;\n      newRotation = {\n        bearing: startBearing - deltaScaleX * 180,\n        pitch: startPitch - deltaScaleY * 90\n      };\n    } else {\n      newRotation = {\n        bearing: startBearing - deltaAngleX,\n        pitch: startPitch - deltaAngleY\n      };\n    }\n\n    return this._getUpdatedState(newRotation);\n  }\n\n  rotateEnd() {\n    return this._getUpdatedState({\n      startRotatePos: null,\n      startBearing: null,\n      startPitch: null\n    });\n  }\n\n  zoomStart() {\n    return this._getUpdatedState({\n      startZoomPosition: this.getViewportProps().position\n    });\n  }\n\n  zoom({\n    scale\n  }) {\n    let {\n      startZoomPosition\n    } = this.getState();\n\n    if (!startZoomPosition) {\n      startZoomPosition = this.getViewportProps().position;\n    }\n\n    const direction = this.getDirection();\n    return this._move(direction, Math.log2(scale) * MOVEMENT_SPEED, startZoomPosition);\n  }\n\n  zoomEnd() {\n    return this._getUpdatedState({\n      startZoomPosition: null\n    });\n  }\n\n  moveLeft(speed = MOVEMENT_SPEED) {\n    const direction = this.getDirection(true);\n    return this._move(direction.rotateZ({\n      radians: Math.PI / 2\n    }), speed);\n  }\n\n  moveRight(speed = MOVEMENT_SPEED) {\n    const direction = this.getDirection(true);\n    return this._move(direction.rotateZ({\n      radians: -Math.PI / 2\n    }), speed);\n  }\n\n  moveUp(speed = MOVEMENT_SPEED) {\n    const direction = this.getDirection(true);\n    return this._move(direction, speed);\n  }\n\n  moveDown(speed = MOVEMENT_SPEED) {\n    const direction = this.getDirection(true);\n    return this._move(direction.negate(), speed);\n  }\n\n  rotateLeft(speed = 15) {\n    return this._getUpdatedState({\n      bearing: this.getViewportProps().bearing - speed\n    });\n  }\n\n  rotateRight(speed = 15) {\n    return this._getUpdatedState({\n      bearing: this.getViewportProps().bearing + speed\n    });\n  }\n\n  rotateUp(speed = 10) {\n    return this._getUpdatedState({\n      pitch: this.getViewportProps().pitch + speed\n    });\n  }\n\n  rotateDown(speed = 10) {\n    return this._getUpdatedState({\n      pitch: this.getViewportProps().pitch - speed\n    });\n  }\n\n  zoomIn(speed = 2) {\n    return this.zoom({\n      scale: speed\n    });\n  }\n\n  zoomOut(speed = 2) {\n    return this.zoom({\n      scale: 1 / speed\n    });\n  }\n\n  shortestPathFrom(viewState) {\n    const fromProps = viewState.getViewportProps();\n    const props = { ...this.getViewportProps()\n    };\n    const {\n      bearing,\n      longitude\n    } = props;\n\n    if (Math.abs(bearing - fromProps.bearing) > 180) {\n      props.bearing = bearing < 0 ? bearing + 360 : bearing - 360;\n    }\n\n    if (longitude !== null && fromProps.longitude !== null && Math.abs(longitude - fromProps.longitude) > 180) {\n      props.longitude = longitude < 0 ? longitude + 360 : longitude - 360;\n    }\n\n    return props;\n  }\n\n  _move(direction, speed, fromPosition = this.getViewportProps().position) {\n    const delta = direction.scale(speed);\n    return this._getUpdatedState({\n      position: new Vector3(fromPosition).add(delta)\n    });\n  }\n\n  getDirection(use2D = false) {\n    const spherical = new SphericalCoordinates({\n      bearing: this.getViewportProps().bearing,\n      pitch: use2D ? 90 : 90 + this.getViewportProps().pitch\n    });\n    const direction = spherical.toVector3().normalize();\n    return direction;\n  }\n\n  _getUpdatedState(newProps) {\n    return new FirstPersonState({ ...this.getViewportProps(),\n      ...this.getState(),\n      ...newProps\n    });\n  }\n\n  applyConstraints(props) {\n    const {\n      pitch,\n      maxPitch,\n      minPitch,\n      longitude,\n      bearing\n    } = props;\n    props.pitch = clamp(pitch, minPitch, maxPitch);\n\n    if (longitude !== null && (longitude < -180 || longitude > 180)) {\n      props.longitude = mod(longitude + 180, 360) - 180;\n    }\n\n    if (bearing < -180 || bearing > 180) {\n      props.bearing = mod(bearing + 180, 360) - 180;\n    }\n\n    return props;\n  }\n\n}\n\nexport default class FirstPersonController extends Controller {\n  constructor(...args) {\n    super(...args);\n\n    _defineProperty(this, \"ControllerState\", FirstPersonState);\n\n    _defineProperty(this, \"transition\", {\n      transitionDuration: 300,\n      transitionInterpolator: new LinearInterpolator(['position', 'pitch', 'bearing'])\n    });\n  }\n\n}\n//# sourceMappingURL=first-person-controller.js.map","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport View from './view';\nimport FirstPersonViewport from '../viewports/first-person-viewport';\nimport FirstPersonController from '../controllers/first-person-controller';\nexport default class FirstPersonView extends View {\n  get ViewportType() {\n    return FirstPersonViewport;\n  }\n\n  get ControllerType() {\n    return FirstPersonController;\n  }\n\n}\n\n_defineProperty(FirstPersonView, \"displayName\", 'FirstPersonView');\n//# sourceMappingURL=first-person-view.js.map","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { clamp } from '@math.gl/core';\nimport Controller from './controller';\nimport ViewState from './view-state';\nimport { mod } from '../utils/math-utils';\nimport LinearInterpolator from '../transitions/linear-interpolator';\nexport class OrbitState extends ViewState {\n  constructor(options) {\n    const {\n      width,\n      height,\n      rotationX = 0,\n      rotationOrbit = 0,\n      target = [0, 0, 0],\n      zoom = 0,\n      minRotationX = -90,\n      maxRotationX = 90,\n      minZoom = -Infinity,\n      maxZoom = Infinity,\n      startPanPosition,\n      startRotatePos,\n      startRotationX,\n      startRotationOrbit,\n      startZoomPosition,\n      startZoom\n    } = options;\n    super({\n      width,\n      height,\n      rotationX,\n      rotationOrbit,\n      target,\n      zoom,\n      minRotationX,\n      maxRotationX,\n      minZoom,\n      maxZoom\n    }, {\n      startPanPosition,\n      startRotatePos,\n      startRotationX,\n      startRotationOrbit,\n      startZoomPosition,\n      startZoom\n    });\n\n    _defineProperty(this, \"makeViewport\", void 0);\n\n    this.makeViewport = options.makeViewport;\n  }\n\n  panStart({\n    pos\n  }) {\n    return this._getUpdatedState({\n      startPanPosition: this._unproject(pos)\n    });\n  }\n\n  pan({\n    pos,\n    startPosition\n  }) {\n    const startPanPosition = this.getState().startPanPosition || startPosition;\n\n    if (!startPanPosition) {\n      return this;\n    }\n\n    const viewport = this.makeViewport(this.getViewportProps());\n    const newProps = viewport.panByPosition(startPanPosition, pos);\n    return this._getUpdatedState(newProps);\n  }\n\n  panEnd() {\n    return this._getUpdatedState({\n      startPanPosition: null\n    });\n  }\n\n  rotateStart({\n    pos\n  }) {\n    return this._getUpdatedState({\n      startRotatePos: pos,\n      startRotationX: this.getViewportProps().rotationX,\n      startRotationOrbit: this.getViewportProps().rotationOrbit\n    });\n  }\n\n  rotate({\n    pos,\n    deltaAngleX = 0,\n    deltaAngleY = 0\n  }) {\n    const {\n      startRotatePos,\n      startRotationX,\n      startRotationOrbit\n    } = this.getState();\n    const {\n      width,\n      height\n    } = this.getViewportProps();\n\n    if (!startRotatePos || startRotationX === undefined || startRotationOrbit === undefined) {\n      return this;\n    }\n\n    let newRotation;\n\n    if (pos) {\n      let deltaScaleX = (pos[0] - startRotatePos[0]) / width;\n      const deltaScaleY = (pos[1] - startRotatePos[1]) / height;\n\n      if (startRotationX < -90 || startRotationX > 90) {\n        deltaScaleX *= -1;\n      }\n\n      newRotation = {\n        rotationX: startRotationX + deltaScaleY * 180,\n        rotationOrbit: startRotationOrbit + deltaScaleX * 180\n      };\n    } else {\n      newRotation = {\n        rotationX: startRotationX + deltaAngleY,\n        rotationOrbit: startRotationOrbit + deltaAngleX\n      };\n    }\n\n    return this._getUpdatedState(newRotation);\n  }\n\n  rotateEnd() {\n    return this._getUpdatedState({\n      startRotationX: null,\n      startRotationOrbit: null\n    });\n  }\n\n  shortestPathFrom(viewState) {\n    const fromProps = viewState.getViewportProps();\n    const props = { ...this.getViewportProps()\n    };\n    const {\n      rotationOrbit\n    } = props;\n\n    if (Math.abs(rotationOrbit - fromProps.rotationOrbit) > 180) {\n      props.rotationOrbit = rotationOrbit < 0 ? rotationOrbit + 360 : rotationOrbit - 360;\n    }\n\n    return props;\n  }\n\n  zoomStart({\n    pos\n  }) {\n    return this._getUpdatedState({\n      startZoomPosition: this._unproject(pos),\n      startZoom: this.getViewportProps().zoom\n    });\n  }\n\n  zoom({\n    pos,\n    startPos,\n    scale\n  }) {\n    let {\n      startZoom,\n      startZoomPosition\n    } = this.getState();\n\n    if (!startZoomPosition) {\n      startZoom = this.getViewportProps().zoom;\n      startZoomPosition = this._unproject(startPos) || this._unproject(pos);\n    }\n\n    if (!startZoomPosition) {\n      return this;\n    }\n\n    const newZoom = this._calculateNewZoom({\n      scale,\n      startZoom\n    });\n\n    const zoomedViewport = this.makeViewport({ ...this.getViewportProps(),\n      zoom: newZoom\n    });\n    return this._getUpdatedState({\n      zoom: newZoom,\n      ...zoomedViewport.panByPosition(startZoomPosition, pos)\n    });\n  }\n\n  zoomEnd() {\n    return this._getUpdatedState({\n      startZoomPosition: null,\n      startZoom: null\n    });\n  }\n\n  zoomIn(speed = 2) {\n    return this._getUpdatedState({\n      zoom: this._calculateNewZoom({\n        scale: speed\n      })\n    });\n  }\n\n  zoomOut(speed = 2) {\n    return this._getUpdatedState({\n      zoom: this._calculateNewZoom({\n        scale: 1 / speed\n      })\n    });\n  }\n\n  moveLeft(speed = 50) {\n    return this._panFromCenter([-speed, 0]);\n  }\n\n  moveRight(speed = 50) {\n    return this._panFromCenter([speed, 0]);\n  }\n\n  moveUp(speed = 50) {\n    return this._panFromCenter([0, -speed]);\n  }\n\n  moveDown(speed = 50) {\n    return this._panFromCenter([0, speed]);\n  }\n\n  rotateLeft(speed = 15) {\n    return this._getUpdatedState({\n      rotationOrbit: this.getViewportProps().rotationOrbit - speed\n    });\n  }\n\n  rotateRight(speed = 15) {\n    return this._getUpdatedState({\n      rotationOrbit: this.getViewportProps().rotationOrbit + speed\n    });\n  }\n\n  rotateUp(speed = 10) {\n    return this._getUpdatedState({\n      rotationX: this.getViewportProps().rotationX - speed\n    });\n  }\n\n  rotateDown(speed = 10) {\n    return this._getUpdatedState({\n      rotationX: this.getViewportProps().rotationX + speed\n    });\n  }\n\n  _unproject(pos) {\n    const viewport = this.makeViewport(this.getViewportProps());\n    return pos && viewport.unproject(pos);\n  }\n\n  _calculateNewZoom({\n    scale,\n    startZoom\n  }) {\n    const {\n      maxZoom,\n      minZoom\n    } = this.getViewportProps();\n\n    if (startZoom === undefined) {\n      startZoom = this.getViewportProps().zoom;\n    }\n\n    const zoom = startZoom + Math.log2(scale);\n    return clamp(zoom, minZoom, maxZoom);\n  }\n\n  _panFromCenter(offset) {\n    const {\n      width,\n      height,\n      target\n    } = this.getViewportProps();\n    return this.pan({\n      startPosition: target,\n      pos: [width / 2 + offset[0], height / 2 + offset[1]]\n    });\n  }\n\n  _getUpdatedState(newProps) {\n    return new this.constructor({\n      makeViewport: this.makeViewport,\n      ...this.getViewportProps(),\n      ...this.getState(),\n      ...newProps\n    });\n  }\n\n  applyConstraints(props) {\n    const {\n      maxZoom,\n      minZoom,\n      zoom,\n      maxRotationX,\n      minRotationX,\n      rotationOrbit\n    } = props;\n    props.zoom = Array.isArray(zoom) ? [clamp(zoom[0], minZoom, maxZoom), clamp(zoom[1], minZoom, maxZoom)] : clamp(zoom, minZoom, maxZoom);\n    props.rotationX = clamp(props.rotationX, minRotationX, maxRotationX);\n\n    if (rotationOrbit < -180 || rotationOrbit > 180) {\n      props.rotationOrbit = mod(rotationOrbit + 180, 360) - 180;\n    }\n\n    return props;\n  }\n\n}\nexport default class OrbitController extends Controller {\n  constructor(...args) {\n    super(...args);\n\n    _defineProperty(this, \"ControllerState\", OrbitState);\n\n    _defineProperty(this, \"transition\", {\n      transitionDuration: 300,\n      transitionInterpolator: new LinearInterpolator({\n        transitionProps: {\n          compare: ['target', 'zoom', 'rotationX', 'rotationOrbit'],\n          required: ['target', 'zoom']\n        }\n      })\n    });\n  }\n\n}\n//# sourceMappingURL=orbit-controller.js.map","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport View from './view';\nimport OrbitViewport from '../viewports/orbit-viewport';\nimport OrbitController from '../controllers/orbit-controller';\nexport default class OrbitView extends View {\n  constructor(props = {}) {\n    super(props);\n    this.props.orbitAxis = props.orbitAxis || 'Z';\n  }\n\n  get ViewportType() {\n    return OrbitViewport;\n  }\n\n  get ControllerType() {\n    return OrbitController;\n  }\n\n}\n\n_defineProperty(OrbitView, \"displayName\", 'OrbitView');\n//# sourceMappingURL=orbit-view.js.map","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { clamp } from '@math.gl/core';\nimport Controller from './controller';\nimport { OrbitState } from './orbit-controller';\nimport LinearInterpolator from '../transitions/linear-interpolator';\n\nclass OrthographicState extends OrbitState {\n  constructor(props) {\n    super(props);\n\n    _defineProperty(this, \"zoomAxis\", void 0);\n\n    this.zoomAxis = props.zoomAxis || 'all';\n  }\n\n  _calculateNewZoom({\n    scale,\n    startZoom\n  }) {\n    const {\n      maxZoom,\n      minZoom\n    } = this.getViewportProps();\n\n    if (startZoom === undefined) {\n      startZoom = this.getViewportProps().zoom;\n    }\n\n    let deltaZoom = Math.log2(scale);\n\n    if (Array.isArray(startZoom)) {\n      let [newZoomX, newZoomY] = startZoom;\n\n      switch (this.zoomAxis) {\n        case 'X':\n          newZoomX = clamp(newZoomX + deltaZoom, minZoom, maxZoom);\n          break;\n\n        case 'Y':\n          newZoomY = clamp(newZoomY + deltaZoom, minZoom, maxZoom);\n          break;\n\n        default:\n          let z = Math.min(newZoomX + deltaZoom, newZoomY + deltaZoom);\n\n          if (z < minZoom) {\n            deltaZoom += minZoom - z;\n          }\n\n          z = Math.max(newZoomX + deltaZoom, newZoomY + deltaZoom);\n\n          if (z > maxZoom) {\n            deltaZoom += maxZoom - z;\n          }\n\n          newZoomX += deltaZoom;\n          newZoomY += deltaZoom;\n      }\n\n      return [newZoomX, newZoomY];\n    }\n\n    return clamp(startZoom + deltaZoom, minZoom, maxZoom);\n  }\n\n}\n\nexport default class OrthographicController extends Controller {\n  constructor(...args) {\n    super(...args);\n\n    _defineProperty(this, \"ControllerState\", OrthographicState);\n\n    _defineProperty(this, \"transition\", {\n      transitionDuration: 300,\n      transitionInterpolator: new LinearInterpolator(['target', 'zoom'])\n    });\n\n    _defineProperty(this, \"dragMode\", 'pan');\n  }\n\n  _onPanRotate() {\n    return false;\n  }\n\n}\n//# sourceMappingURL=orthographic-controller.js.map","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport View from './view';\nimport OrthographicViewport from '../viewports/orthographic-viewport';\nimport OrthographicController from '../controllers/orthographic-controller';\nexport default class OrthographicView extends View {\n  get ViewportType() {\n    return OrthographicViewport;\n  }\n\n  get ControllerType() {\n    return OrthographicController;\n  }\n\n}\n\n_defineProperty(OrthographicView, \"displayName\", 'OrthographicView');\n//# sourceMappingURL=orthographic-view.js.map","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { clamp } from '@math.gl/core';\nimport Controller from './controller';\nimport { MapState } from './map-controller';\nimport { mod } from '../utils/math-utils';\nimport LinearInterpolator from '../transitions/linear-interpolator';\n\nclass GlobeState extends MapState {\n  applyConstraints(props) {\n    const {\n      maxZoom,\n      minZoom,\n      zoom\n    } = props;\n    props.zoom = clamp(zoom, minZoom, maxZoom);\n    const {\n      longitude,\n      latitude\n    } = props;\n\n    if (longitude < -180 || longitude > 180) {\n      props.longitude = mod(longitude + 180, 360) - 180;\n    }\n\n    props.latitude = clamp(latitude, -89, 89);\n    return props;\n  }\n\n}\n\nexport default class GlobeController extends Controller {\n  constructor(...args) {\n    super(...args);\n\n    _defineProperty(this, \"ControllerState\", GlobeState);\n\n    _defineProperty(this, \"transition\", {\n      transitionDuration: 300,\n      transitionInterpolator: new LinearInterpolator(['longitude', 'latitude', 'zoom'])\n    });\n\n    _defineProperty(this, \"dragMode\", 'pan');\n  }\n\n  setProps(props) {\n    super.setProps(props);\n    this.dragRotate = false;\n    this.touchRotate = false;\n  }\n\n}\n//# sourceMappingURL=globe-controller.js.map","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport View from './view';\nimport GlobeViewport from '../viewports/globe-viewport';\nimport GlobeController from '../controllers/globe-controller';\nexport default class GlobeView extends View {\n  get ViewportType() {\n    return GlobeViewport;\n  }\n\n  get ControllerType() {\n    return GlobeController;\n  }\n\n}\n\n_defineProperty(GlobeView, \"displayName\", 'GlobeView');\n//# sourceMappingURL=globe-view.js.map","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport TransitionInterpolator from './transition-interpolator';\nimport { lerp } from '@math.gl/core';\nimport { flyToViewport, getFlyToDuration } from '@math.gl/web-mercator';\nconst LINEARLY_INTERPOLATED_PROPS = {\n  bearing: 0,\n  pitch: 0,\n  position: [0, 0, 0]\n};\nconst DEFAULT_OPTS = {\n  speed: 1.2,\n  curve: 1.414\n};\nexport default class FlyToInterpolator extends TransitionInterpolator {\n  constructor(opts = {}) {\n    super({\n      compare: ['longitude', 'latitude', 'zoom', 'bearing', 'pitch', 'position'],\n      extract: ['width', 'height', 'longitude', 'latitude', 'zoom', 'bearing', 'pitch', 'position'],\n      required: ['width', 'height', 'latitude', 'longitude', 'zoom']\n    });\n\n    _defineProperty(this, \"opts\", void 0);\n\n    this.opts = { ...DEFAULT_OPTS,\n      ...opts\n    };\n  }\n\n  interpolateProps(startProps, endProps, t) {\n    const viewport = flyToViewport(startProps, endProps, t, this.opts);\n\n    for (const key in LINEARLY_INTERPOLATED_PROPS) {\n      viewport[key] = lerp(startProps[key] || LINEARLY_INTERPOLATED_PROPS[key], endProps[key] || LINEARLY_INTERPOLATED_PROPS[key], t);\n    }\n\n    return viewport;\n  }\n\n  getDuration(startProps, endProps) {\n    let {\n      transitionDuration\n    } = endProps;\n\n    if (transitionDuration === 'auto') {\n      transitionDuration = getFlyToDuration(startProps, endProps, this.opts);\n    }\n\n    return transitionDuration;\n  }\n\n}\n//# sourceMappingURL=fly-to-interpolator.js.map","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nexport default class ShaderAttribute {\n  constructor(dataColumn, opts) {\n    _defineProperty(this, \"opts\", void 0);\n\n    _defineProperty(this, \"source\", void 0);\n\n    this.opts = opts;\n    this.source = dataColumn;\n  }\n\n  get value() {\n    return this.source.value;\n  }\n\n  getValue() {\n    const buffer = this.source.getBuffer();\n    const accessor = this.getAccessor();\n\n    if (buffer) {\n      return [buffer, accessor];\n    }\n\n    const {\n      value\n    } = this.source;\n    const {\n      size\n    } = accessor;\n    let constantValue = value;\n\n    if (value && value.length !== size) {\n      constantValue = new Float32Array(size);\n      const index = accessor.elementOffset || 0;\n\n      for (let i = 0; i < size; ++i) {\n        constantValue[i] = value[index + i];\n      }\n    }\n\n    return constantValue;\n  }\n\n  getAccessor() {\n    return { ...this.source.getAccessor(),\n      ...this.opts\n    };\n  }\n\n}\n//# sourceMappingURL=shader-attribute.js.map","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { hasFeature, FEATURES, Buffer } from '@luma.gl/core';\nimport ShaderAttribute from './shader-attribute';\nimport { glArrayFromType } from './gl-utils';\nimport typedArrayManager from '../../utils/typed-array-manager';\nimport { toDoublePrecisionArray } from '../../utils/math-utils';\nimport log from '../../utils/log';\n\nfunction getStride(accessor) {\n  return accessor.stride || accessor.size * accessor.bytesPerElement;\n}\n\nfunction resolveShaderAttribute(baseAccessor, shaderAttributeOptions) {\n  if (shaderAttributeOptions.offset) {\n    log.removed('shaderAttribute.offset', 'vertexOffset, elementOffset')();\n  }\n\n  const stride = getStride(baseAccessor);\n  const vertexOffset = shaderAttributeOptions.vertexOffset !== undefined ? shaderAttributeOptions.vertexOffset : baseAccessor.vertexOffset || 0;\n  const elementOffset = shaderAttributeOptions.elementOffset || 0;\n  const offset = vertexOffset * stride + elementOffset * baseAccessor.bytesPerElement + (baseAccessor.offset || 0);\n  return { ...shaderAttributeOptions,\n    offset,\n    stride\n  };\n}\n\nfunction resolveDoublePrecisionShaderAttributes(baseAccessor, shaderAttributeOptions) {\n  const resolvedOptions = resolveShaderAttribute(baseAccessor, shaderAttributeOptions);\n  return {\n    high: resolvedOptions,\n    low: { ...resolvedOptions,\n      offset: resolvedOptions.offset + baseAccessor.size * 4\n    }\n  };\n}\n\nexport default class DataColumn {\n  constructor(gl, opts, state) {\n    _defineProperty(this, \"gl\", void 0);\n\n    _defineProperty(this, \"id\", void 0);\n\n    _defineProperty(this, \"size\", void 0);\n\n    _defineProperty(this, \"settings\", void 0);\n\n    _defineProperty(this, \"value\", void 0);\n\n    _defineProperty(this, \"doublePrecision\", void 0);\n\n    _defineProperty(this, \"_buffer\", void 0);\n\n    _defineProperty(this, \"state\", void 0);\n\n    this.gl = gl;\n    this.id = opts.id || '';\n    this.size = opts.size || 1;\n    const logicalType = opts.logicalType || opts.type;\n    const doublePrecision = logicalType === 5130;\n    let {\n      defaultValue\n    } = opts;\n    defaultValue = Number.isFinite(defaultValue) ? [defaultValue] : defaultValue || new Array(this.size).fill(0);\n    let bufferType;\n\n    if (doublePrecision) {\n      bufferType = 5126;\n    } else if (!logicalType && opts.isIndexed) {\n      bufferType = gl && hasFeature(gl, FEATURES.ELEMENT_INDEX_UINT32) ? 5125 : 5123;\n    } else {\n      bufferType = logicalType || 5126;\n    }\n\n    let defaultType = glArrayFromType(logicalType || bufferType || 5126);\n    this.doublePrecision = doublePrecision;\n\n    if (doublePrecision && opts.fp64 === false) {\n      defaultType = Float32Array;\n    }\n\n    this.value = null;\n    this.settings = { ...opts,\n      defaultType,\n      defaultValue: defaultValue,\n      logicalType,\n      type: bufferType,\n      size: this.size,\n      bytesPerElement: defaultType.BYTES_PER_ELEMENT\n    };\n    this.state = { ...state,\n      externalBuffer: null,\n      bufferAccessor: this.settings,\n      allocatedValue: null,\n      numInstances: 0,\n      bounds: null,\n      constant: false\n    };\n    this._buffer = null;\n  }\n\n  get isConstant() {\n    return this.state.constant;\n  }\n\n  get buffer() {\n    if (!this._buffer) {\n      const {\n        isIndexed,\n        type\n      } = this.settings;\n      this._buffer = new Buffer(this.gl, {\n        id: this.id,\n        target: isIndexed ? 34963 : 34962,\n        accessor: {\n          type\n        }\n      });\n    }\n\n    return this._buffer;\n  }\n\n  get byteOffset() {\n    const accessor = this.getAccessor();\n\n    if (accessor.vertexOffset) {\n      return accessor.vertexOffset * getStride(accessor);\n    }\n\n    return 0;\n  }\n\n  get numInstances() {\n    return this.state.numInstances;\n  }\n\n  set numInstances(n) {\n    this.state.numInstances = n;\n  }\n\n  delete() {\n    if (this._buffer) {\n      this._buffer.delete();\n\n      this._buffer = null;\n    }\n\n    typedArrayManager.release(this.state.allocatedValue);\n  }\n\n  getShaderAttributes(id, options) {\n    if (this.doublePrecision) {\n      const shaderAttributes = {};\n      const isBuffer64Bit = this.value instanceof Float64Array;\n      const doubleShaderAttributeDefs = resolveDoublePrecisionShaderAttributes(this.getAccessor(), options || {});\n      shaderAttributes[id] = new ShaderAttribute(this, doubleShaderAttributeDefs.high);\n      shaderAttributes[\"\".concat(id, \"64Low\")] = isBuffer64Bit ? new ShaderAttribute(this, doubleShaderAttributeDefs.low) : new Float32Array(this.size);\n      return shaderAttributes;\n    }\n\n    if (options) {\n      const shaderAttributeDef = resolveShaderAttribute(this.getAccessor(), options);\n      return {\n        [id]: new ShaderAttribute(this, shaderAttributeDef)\n      };\n    }\n\n    return {\n      [id]: this\n    };\n  }\n\n  getBuffer() {\n    if (this.state.constant) {\n      return null;\n    }\n\n    return this.state.externalBuffer || this._buffer;\n  }\n\n  getValue() {\n    if (this.state.constant) {\n      return this.value;\n    }\n\n    return [this.getBuffer(), this.getAccessor()];\n  }\n\n  getAccessor() {\n    return this.state.bufferAccessor;\n  }\n\n  getBounds() {\n    if (this.state.bounds) {\n      return this.state.bounds;\n    }\n\n    let result = null;\n\n    if (this.state.constant && this.value) {\n      const min = Array.from(this.value);\n      result = [min, min];\n    } else {\n      const {\n        value,\n        numInstances,\n        size\n      } = this;\n      const len = numInstances * size;\n\n      if (value && len && value.length >= len) {\n        const min = new Array(size).fill(Infinity);\n        const max = new Array(size).fill(-Infinity);\n\n        for (let i = 0; i < len;) {\n          for (let j = 0; j < size; j++) {\n            const v = value[i++];\n            if (v < min[j]) min[j] = v;\n            if (v > max[j]) max[j] = v;\n          }\n        }\n\n        result = [min, max];\n      }\n    }\n\n    this.state.bounds = result;\n    return result;\n  }\n\n  setData(data) {\n    const {\n      state\n    } = this;\n    let opts;\n\n    if (ArrayBuffer.isView(data)) {\n      opts = {\n        value: data\n      };\n    } else if (data instanceof Buffer) {\n      opts = {\n        buffer: data\n      };\n    } else {\n      opts = data;\n    }\n\n    const accessor = { ...this.settings,\n      ...opts\n    };\n    state.bufferAccessor = accessor;\n    state.bounds = null;\n\n    if (opts.constant) {\n      let value = opts.value;\n      value = this._normalizeValue(value, [], 0);\n\n      if (this.settings.normalized) {\n        value = this.normalizeConstant(value);\n      }\n\n      const hasChanged = !state.constant || !this._areValuesEqual(value, this.value);\n\n      if (!hasChanged) {\n        return false;\n      }\n\n      state.externalBuffer = null;\n      state.constant = true;\n      this.value = value;\n    } else if (opts.buffer) {\n      const buffer = opts.buffer;\n      state.externalBuffer = buffer;\n      state.constant = false;\n      this.value = opts.value || null;\n      const isBuffer64Bit = opts.value instanceof Float64Array;\n      accessor.type = opts.type || buffer.accessor.type;\n      accessor.bytesPerElement = buffer.accessor.BYTES_PER_ELEMENT * (isBuffer64Bit ? 2 : 1);\n      accessor.stride = getStride(accessor);\n    } else if (opts.value) {\n      this._checkExternalBuffer(opts);\n\n      let value = opts.value;\n      state.externalBuffer = null;\n      state.constant = false;\n      this.value = value;\n      accessor.bytesPerElement = value.BYTES_PER_ELEMENT;\n      accessor.stride = getStride(accessor);\n      const {\n        buffer,\n        byteOffset\n      } = this;\n\n      if (this.doublePrecision && value instanceof Float64Array) {\n        value = toDoublePrecisionArray(value, accessor);\n      }\n\n      const requiredBufferSize = value.byteLength + byteOffset + accessor.stride * 2;\n\n      if (buffer.byteLength < requiredBufferSize) {\n        buffer.reallocate(requiredBufferSize);\n      }\n\n      buffer.setAccessor(null);\n      buffer.subData({\n        data: value,\n        offset: byteOffset\n      });\n      accessor.type = opts.type || buffer.accessor.type;\n    }\n\n    return true;\n  }\n\n  updateSubBuffer(opts = {}) {\n    this.state.bounds = null;\n    const value = this.value;\n    const {\n      startOffset = 0,\n      endOffset\n    } = opts;\n    this.buffer.subData({\n      data: this.doublePrecision && value instanceof Float64Array ? toDoublePrecisionArray(value, {\n        size: this.size,\n        startIndex: startOffset,\n        endIndex: endOffset\n      }) : value.subarray(startOffset, endOffset),\n      offset: startOffset * value.BYTES_PER_ELEMENT + this.byteOffset\n    });\n  }\n\n  allocate(numInstances, copy = false) {\n    const {\n      state\n    } = this;\n    const oldValue = state.allocatedValue;\n    const value = typedArrayManager.allocate(oldValue, numInstances + 1, {\n      size: this.size,\n      type: this.settings.defaultType,\n      copy\n    });\n    this.value = value;\n    const {\n      buffer,\n      byteOffset\n    } = this;\n\n    if (buffer.byteLength < value.byteLength + byteOffset) {\n      buffer.reallocate(value.byteLength + byteOffset);\n\n      if (copy && oldValue) {\n        buffer.subData({\n          data: oldValue instanceof Float64Array ? toDoublePrecisionArray(oldValue, this) : oldValue,\n          offset: byteOffset\n        });\n      }\n    }\n\n    state.allocatedValue = value;\n    state.constant = false;\n    state.externalBuffer = null;\n    state.bufferAccessor = this.settings;\n    return true;\n  }\n\n  _checkExternalBuffer(opts) {\n    const {\n      value\n    } = opts;\n\n    if (!ArrayBuffer.isView(value)) {\n      throw new Error(\"Attribute \".concat(this.id, \" value is not TypedArray\"));\n    }\n\n    const ArrayType = this.settings.defaultType;\n    let illegalArrayType = false;\n\n    if (this.doublePrecision) {\n      illegalArrayType = value.BYTES_PER_ELEMENT < 4;\n    }\n\n    if (illegalArrayType) {\n      throw new Error(\"Attribute \".concat(this.id, \" does not support \").concat(value.constructor.name));\n    }\n\n    if (!(value instanceof ArrayType) && this.settings.normalized && !('normalized' in opts)) {\n      log.warn(\"Attribute \".concat(this.id, \" is normalized\"))();\n    }\n  }\n\n  normalizeConstant(value) {\n    switch (this.settings.type) {\n      case 5120:\n        return new Float32Array(value).map(x => (x + 128) / 255 * 2 - 1);\n\n      case 5122:\n        return new Float32Array(value).map(x => (x + 32768) / 65535 * 2 - 1);\n\n      case 5121:\n        return new Float32Array(value).map(x => x / 255);\n\n      case 5123:\n        return new Float32Array(value).map(x => x / 65535);\n\n      default:\n        return value;\n    }\n  }\n\n  _normalizeValue(value, out, start) {\n    const {\n      defaultValue,\n      size\n    } = this.settings;\n\n    if (Number.isFinite(value)) {\n      out[start] = value;\n      return out;\n    }\n\n    if (!value) {\n      let i = size;\n\n      while (--i >= 0) {\n        out[start + i] = defaultValue[i];\n      }\n\n      return out;\n    }\n\n    switch (size) {\n      case 4:\n        out[start + 3] = Number.isFinite(value[3]) ? value[3] : defaultValue[3];\n\n      case 3:\n        out[start + 2] = Number.isFinite(value[2]) ? value[2] : defaultValue[2];\n\n      case 2:\n        out[start + 1] = Number.isFinite(value[1]) ? value[1] : defaultValue[1];\n\n      case 1:\n        out[start + 0] = Number.isFinite(value[0]) ? value[0] : defaultValue[0];\n        break;\n\n      default:\n        let i = size;\n\n        while (--i >= 0) {\n          out[start + i] = Number.isFinite(value[i]) ? value[i] : defaultValue[i];\n        }\n\n    }\n\n    return out;\n  }\n\n  _areValuesEqual(value1, value2) {\n    if (!value1 || !value2) {\n      return false;\n    }\n\n    const {\n      size\n    } = this;\n\n    for (let i = 0; i < size; i++) {\n      if (value1[i] !== value2[i]) {\n        return false;\n      }\n    }\n\n    return true;\n  }\n\n}\n//# sourceMappingURL=data-column.js.map","export function glArrayFromType(glType) {\n  switch (glType) {\n    case 5126:\n      return Float32Array;\n\n    case 5130:\n      return Float64Array;\n\n    case 5123:\n    case 33635:\n    case 32819:\n    case 32820:\n      return Uint16Array;\n\n    case 5125:\n      return Uint32Array;\n\n    case 5121:\n      return Uint8ClampedArray;\n\n    case 5120:\n      return Int8Array;\n\n    case 5122:\n      return Int16Array;\n\n    case 5124:\n      return Int32Array;\n\n    default:\n      throw new Error('Unknown GL type');\n  }\n}\n//# sourceMappingURL=gl-utils.js.map","export const EMPTY = [];\nexport const FULL = [[0, Infinity]];\nexport function add(rangeList, range) {\n  if (rangeList === FULL) {\n    return rangeList;\n  }\n\n  if (range[0] < 0) {\n    range[0] = 0;\n  }\n\n  if (range[0] >= range[1]) {\n    return rangeList;\n  }\n\n  const newRangeList = [];\n  const len = rangeList.length;\n  let insertPosition = 0;\n\n  for (let i = 0; i < len; i++) {\n    const range0 = rangeList[i];\n\n    if (range0[1] < range[0]) {\n      newRangeList.push(range0);\n      insertPosition = i + 1;\n    } else if (range0[0] > range[1]) {\n      newRangeList.push(range0);\n    } else {\n      range = [Math.min(range0[0], range[0]), Math.max(range0[1], range[1])];\n    }\n  }\n\n  newRangeList.splice(insertPosition, 0, range);\n  return newRangeList;\n}\n//# sourceMappingURL=range.js.map","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport DataColumn from './data-column';\nimport assert from '../../utils/assert';\nimport { createIterable, getAccessorFromBuffer } from '../../utils/iterable-utils';\nimport { fillArray } from '../../utils/flatten';\nimport * as range from '../../utils/range';\nimport { normalizeTransitionSettings } from './attribute-transition-utils';\nexport default class Attribute extends DataColumn {\n  constructor(gl, opts) {\n    super(gl, opts, {\n      startIndices: null,\n      lastExternalBuffer: null,\n      binaryValue: null,\n      binaryAccessor: null,\n      needsUpdate: true,\n      needsRedraw: false,\n      updateRanges: range.FULL\n    });\n\n    _defineProperty(this, \"constant\", false);\n\n    this.settings.update = opts.update || (opts.accessor ? this._autoUpdater : undefined);\n    Object.seal(this.settings);\n    Object.seal(this.state);\n\n    this._validateAttributeUpdaters();\n  }\n\n  get startIndices() {\n    return this.state.startIndices;\n  }\n\n  set startIndices(layout) {\n    this.state.startIndices = layout;\n  }\n\n  needsUpdate() {\n    return this.state.needsUpdate;\n  }\n\n  needsRedraw({\n    clearChangedFlags = false\n  } = {}) {\n    const needsRedraw = this.state.needsRedraw;\n    this.state.needsRedraw = needsRedraw && !clearChangedFlags;\n    return needsRedraw;\n  }\n\n  getUpdateTriggers() {\n    const {\n      accessor\n    } = this.settings;\n    return [this.id].concat(typeof accessor !== 'function' && accessor || []);\n  }\n\n  supportsTransition() {\n    return Boolean(this.settings.transition);\n  }\n\n  getTransitionSetting(opts) {\n    if (!opts || !this.supportsTransition()) {\n      return null;\n    }\n\n    const {\n      accessor\n    } = this.settings;\n    const layerSettings = this.settings.transition;\n    const userSettings = Array.isArray(accessor) ? opts[accessor.find(a => opts[a])] : opts[accessor];\n    return normalizeTransitionSettings(userSettings, layerSettings);\n  }\n\n  setNeedsUpdate(reason = this.id, dataRange) {\n    this.state.needsUpdate = this.state.needsUpdate || reason;\n    this.setNeedsRedraw(reason);\n\n    if (dataRange) {\n      const {\n        startRow = 0,\n        endRow = Infinity\n      } = dataRange;\n      this.state.updateRanges = range.add(this.state.updateRanges, [startRow, endRow]);\n    } else {\n      this.state.updateRanges = range.FULL;\n    }\n  }\n\n  clearNeedsUpdate() {\n    this.state.needsUpdate = false;\n    this.state.updateRanges = range.EMPTY;\n  }\n\n  setNeedsRedraw(reason = this.id) {\n    this.state.needsRedraw = this.state.needsRedraw || reason;\n  }\n\n  allocate(numInstances) {\n    const {\n      state,\n      settings\n    } = this;\n\n    if (settings.noAlloc) {\n      return false;\n    }\n\n    if (settings.update) {\n      super.allocate(numInstances, state.updateRanges !== range.FULL);\n      return true;\n    }\n\n    return false;\n  }\n\n  updateBuffer({\n    numInstances,\n    data,\n    props,\n    context\n  }) {\n    if (!this.needsUpdate()) {\n      return false;\n    }\n\n    const {\n      state: {\n        updateRanges\n      },\n      settings: {\n        update,\n        noAlloc\n      }\n    } = this;\n    let updated = true;\n\n    if (update) {\n      for (const [startRow, endRow] of updateRanges) {\n        update.call(context, this, {\n          data,\n          startRow,\n          endRow,\n          props,\n          numInstances\n        });\n      }\n\n      if (!this.value) {} else if (this.constant || this.buffer.byteLength < this.value.byteLength + this.byteOffset) {\n        this.setData({\n          value: this.value,\n          constant: this.constant\n        });\n        this.constant = false;\n      } else {\n        for (const [startRow, endRow] of updateRanges) {\n          const startOffset = Number.isFinite(startRow) ? this.getVertexOffset(startRow) : 0;\n          const endOffset = Number.isFinite(endRow) ? this.getVertexOffset(endRow) : noAlloc || !Number.isFinite(numInstances) ? this.value.length : numInstances * this.size;\n          super.updateSubBuffer({\n            startOffset,\n            endOffset\n          });\n        }\n      }\n\n      this._checkAttributeArray();\n    } else {\n      updated = false;\n    }\n\n    this.clearNeedsUpdate();\n    this.setNeedsRedraw();\n    return updated;\n  }\n\n  setConstantValue(value) {\n    if (value === undefined || typeof value === 'function') {\n      return false;\n    }\n\n    const hasChanged = this.setData({\n      constant: true,\n      value\n    });\n\n    if (hasChanged) {\n      this.setNeedsRedraw();\n    }\n\n    this.clearNeedsUpdate();\n    return true;\n  }\n\n  setExternalBuffer(buffer) {\n    const {\n      state\n    } = this;\n\n    if (!buffer) {\n      state.lastExternalBuffer = null;\n      return false;\n    }\n\n    this.clearNeedsUpdate();\n\n    if (state.lastExternalBuffer === buffer) {\n      return true;\n    }\n\n    state.lastExternalBuffer = buffer;\n    this.setNeedsRedraw();\n    this.setData(buffer);\n    return true;\n  }\n\n  setBinaryValue(buffer, startIndices = null) {\n    const {\n      state,\n      settings\n    } = this;\n\n    if (!buffer) {\n      state.binaryValue = null;\n      state.binaryAccessor = null;\n      return false;\n    }\n\n    if (settings.noAlloc) {\n      return false;\n    }\n\n    if (state.binaryValue === buffer) {\n      this.clearNeedsUpdate();\n      return true;\n    }\n\n    state.binaryValue = buffer;\n    this.setNeedsRedraw();\n    const needsUpdate = settings.transform || startIndices !== this.startIndices;\n\n    if (needsUpdate) {\n      if (ArrayBuffer.isView(buffer)) {\n        buffer = {\n          value: buffer\n        };\n      }\n\n      const binaryValue = buffer;\n      assert(ArrayBuffer.isView(binaryValue.value), \"invalid \".concat(settings.accessor));\n      const needsNormalize = Boolean(binaryValue.size) && binaryValue.size !== this.size;\n      state.binaryAccessor = getAccessorFromBuffer(binaryValue.value, {\n        size: binaryValue.size || this.size,\n        stride: binaryValue.stride,\n        offset: binaryValue.offset,\n        startIndices: startIndices,\n        nested: needsNormalize\n      });\n      return false;\n    }\n\n    this.clearNeedsUpdate();\n    this.setData(buffer);\n    return true;\n  }\n\n  getVertexOffset(row) {\n    const {\n      startIndices\n    } = this;\n    const vertexIndex = startIndices ? row < startIndices.length ? startIndices[row] : this.numInstances : row;\n    return vertexIndex * this.size;\n  }\n\n  getShaderAttributes() {\n    const shaderAttributeDefs = this.settings.shaderAttributes || {\n      [this.id]: null\n    };\n    const shaderAttributes = {};\n\n    for (const shaderAttributeName in shaderAttributeDefs) {\n      Object.assign(shaderAttributes, super.getShaderAttributes(shaderAttributeName, shaderAttributeDefs[shaderAttributeName]));\n    }\n\n    return shaderAttributes;\n  }\n\n  _autoUpdater(attribute, {\n    data,\n    startRow,\n    endRow,\n    props,\n    numInstances\n  }) {\n    if (attribute.constant) {\n      return;\n    }\n\n    const {\n      settings,\n      state,\n      value,\n      size,\n      startIndices\n    } = attribute;\n    const {\n      accessor,\n      transform\n    } = settings;\n    const accessorFunc = state.binaryAccessor || (typeof accessor === 'function' ? accessor : props[accessor]);\n    assert(typeof accessorFunc === 'function', \"accessor \\\"\".concat(accessor, \"\\\" is not a function\"));\n    let i = attribute.getVertexOffset(startRow);\n    const {\n      iterable,\n      objectInfo\n    } = createIterable(data, startRow, endRow);\n\n    for (const object of iterable) {\n      objectInfo.index++;\n      let objectValue = accessorFunc(object, objectInfo);\n\n      if (transform) {\n        objectValue = transform.call(this, objectValue);\n      }\n\n      if (startIndices) {\n        const numVertices = (objectInfo.index < startIndices.length - 1 ? startIndices[objectInfo.index + 1] : numInstances) - startIndices[objectInfo.index];\n\n        if (objectValue && Array.isArray(objectValue[0])) {\n          let startIndex = i;\n\n          for (const item of objectValue) {\n            attribute._normalizeValue(item, value, startIndex);\n\n            startIndex += size;\n          }\n        } else if (objectValue && objectValue.length > size) {\n          value.set(objectValue, i);\n        } else {\n          attribute._normalizeValue(objectValue, objectInfo.target, 0);\n\n          fillArray({\n            target: value,\n            source: objectInfo.target,\n            start: i,\n            count: numVertices\n          });\n        }\n\n        i += numVertices * size;\n      } else {\n        attribute._normalizeValue(objectValue, value, i);\n\n        i += size;\n      }\n    }\n  }\n\n  _validateAttributeUpdaters() {\n    const {\n      settings\n    } = this;\n    const hasUpdater = settings.noAlloc || typeof settings.update === 'function';\n\n    if (!hasUpdater) {\n      throw new Error(\"Attribute \".concat(this.id, \" missing update or accessor\"));\n    }\n  }\n\n  _checkAttributeArray() {\n    const {\n      value\n    } = this;\n    const limit = Math.min(4, this.size);\n\n    if (value && value.length >= limit) {\n      let valid = true;\n\n      switch (limit) {\n        case 4:\n          valid = valid && Number.isFinite(value[3]);\n\n        case 3:\n          valid = valid && Number.isFinite(value[2]);\n\n        case 2:\n          valid = valid && Number.isFinite(value[1]);\n\n        case 1:\n          valid = valid && Number.isFinite(value[0]);\n          break;\n\n        default:\n          valid = false;\n      }\n\n      if (!valid) {\n        throw new Error(\"Illegal attribute generated for \".concat(this.id));\n      }\n    }\n  }\n\n}\n//# sourceMappingURL=attribute.js.map","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Transform } from '@luma.gl/core';\nimport GPUInterpolationTransition from '../../transitions/gpu-interpolation-transition';\nimport GPUSpringTransition from '../../transitions/gpu-spring-transition';\nimport log from '../../utils/log';\nconst TRANSITION_TYPES = {\n  interpolation: GPUInterpolationTransition,\n  spring: GPUSpringTransition\n};\nexport default class AttributeTransitionManager {\n  constructor(gl, {\n    id,\n    timeline\n  }) {\n    _defineProperty(this, \"id\", void 0);\n\n    _defineProperty(this, \"isSupported\", void 0);\n\n    _defineProperty(this, \"gl\", void 0);\n\n    _defineProperty(this, \"timeline\", void 0);\n\n    _defineProperty(this, \"transitions\", void 0);\n\n    _defineProperty(this, \"needsRedraw\", void 0);\n\n    _defineProperty(this, \"numInstances\", void 0);\n\n    this.id = id;\n    this.gl = gl;\n    this.timeline = timeline;\n    this.transitions = {};\n    this.needsRedraw = false;\n    this.numInstances = 1;\n    this.isSupported = Transform.isSupported(gl);\n  }\n\n  finalize() {\n    for (const attributeName in this.transitions) {\n      this._removeTransition(attributeName);\n    }\n  }\n\n  update({\n    attributes,\n    transitions,\n    numInstances\n  }) {\n    this.numInstances = numInstances || 1;\n\n    for (const attributeName in attributes) {\n      const attribute = attributes[attributeName];\n      const settings = attribute.getTransitionSetting(transitions);\n      if (!settings) continue;\n\n      this._updateAttribute(attributeName, attribute, settings);\n    }\n\n    for (const attributeName in this.transitions) {\n      const attribute = attributes[attributeName];\n\n      if (!attribute || !attribute.getTransitionSetting(transitions)) {\n        this._removeTransition(attributeName);\n      }\n    }\n  }\n\n  hasAttribute(attributeName) {\n    const transition = this.transitions[attributeName];\n    return transition && transition.inProgress;\n  }\n\n  getAttributes() {\n    const animatedAttributes = {};\n\n    for (const attributeName in this.transitions) {\n      const transition = this.transitions[attributeName];\n\n      if (transition.inProgress) {\n        animatedAttributes[attributeName] = transition.attributeInTransition;\n      }\n    }\n\n    return animatedAttributes;\n  }\n\n  run() {\n    if (!this.isSupported || this.numInstances === 0) {\n      return false;\n    }\n\n    for (const attributeName in this.transitions) {\n      const updated = this.transitions[attributeName].update();\n\n      if (updated) {\n        this.needsRedraw = true;\n      }\n    }\n\n    const needsRedraw = this.needsRedraw;\n    this.needsRedraw = false;\n    return needsRedraw;\n  }\n\n  _removeTransition(attributeName) {\n    this.transitions[attributeName].cancel();\n    delete this.transitions[attributeName];\n  }\n\n  _updateAttribute(attributeName, attribute, settings) {\n    const transition = this.transitions[attributeName];\n    let isNew = !transition || transition.type !== settings.type;\n\n    if (isNew) {\n      if (!this.isSupported) {\n        log.warn(\"WebGL2 not supported by this browser. Transition for \".concat(attributeName, \" is disabled.\"))();\n        return;\n      }\n\n      if (transition) {\n        this._removeTransition(attributeName);\n      }\n\n      const TransitionType = TRANSITION_TYPES[settings.type];\n\n      if (TransitionType) {\n        this.transitions[attributeName] = new TransitionType({\n          attribute,\n          timeline: this.timeline,\n          gl: this.gl\n        });\n      } else {\n        log.error(\"unsupported transition type '\".concat(settings.type, \"'\"))();\n        isNew = false;\n      }\n    }\n\n    if (isNew || attribute.needsRedraw()) {\n      this.needsRedraw = true;\n      this.transitions[attributeName].start(settings, this.numInstances);\n    }\n  }\n\n}\n//# sourceMappingURL=attribute-transition-manager.js.map","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Buffer, Transform } from '@luma.gl/core';\nimport Attribute from '../lib/attribute/attribute';\nimport { padBuffer, getAttributeTypeFromSize, getSourceBufferAttribute, getAttributeBufferLength, cycleBuffers } from '../lib/attribute/attribute-transition-utils';\nimport Transition from './transition';\nexport default class GPUInterpolationTransition {\n  constructor({\n    gl,\n    attribute,\n    timeline\n  }) {\n    _defineProperty(this, \"gl\", void 0);\n\n    _defineProperty(this, \"type\", 'interpolation');\n\n    _defineProperty(this, \"attributeInTransition\", void 0);\n\n    _defineProperty(this, \"settings\", void 0);\n\n    _defineProperty(this, \"attribute\", void 0);\n\n    _defineProperty(this, \"transition\", void 0);\n\n    _defineProperty(this, \"currentStartIndices\", void 0);\n\n    _defineProperty(this, \"currentLength\", void 0);\n\n    _defineProperty(this, \"transform\", void 0);\n\n    _defineProperty(this, \"buffers\", void 0);\n\n    this.gl = gl;\n    this.transition = new Transition(timeline);\n    this.attribute = attribute;\n    this.attributeInTransition = new Attribute(gl, attribute.settings);\n    this.currentStartIndices = attribute.startIndices;\n    this.currentLength = 0;\n    this.transform = getTransform(gl, attribute);\n    const bufferOpts = {\n      byteLength: 0,\n      usage: 35050\n    };\n    this.buffers = [new Buffer(gl, bufferOpts), new Buffer(gl, bufferOpts)];\n  }\n\n  get inProgress() {\n    return this.transition.inProgress;\n  }\n\n  start(transitionSettings, numInstances) {\n    if (transitionSettings.duration <= 0) {\n      this.transition.cancel();\n      return;\n    }\n\n    this.settings = transitionSettings;\n    const {\n      gl,\n      buffers,\n      attribute\n    } = this;\n    cycleBuffers(buffers);\n    const padBufferOpts = {\n      numInstances,\n      attribute,\n      fromLength: this.currentLength,\n      fromStartIndices: this.currentStartIndices,\n      getData: transitionSettings.enter\n    };\n\n    for (const buffer of buffers) {\n      padBuffer({\n        buffer,\n        ...padBufferOpts\n      });\n    }\n\n    this.currentStartIndices = attribute.startIndices;\n    this.currentLength = getAttributeBufferLength(attribute, numInstances);\n    this.attributeInTransition.setData({\n      buffer: buffers[1],\n      value: attribute.value\n    });\n    this.transition.start(transitionSettings);\n    this.transform.update({\n      elementCount: Math.floor(this.currentLength / attribute.size),\n      sourceBuffers: {\n        aFrom: buffers[0],\n        aTo: getSourceBufferAttribute(gl, attribute)\n      },\n      feedbackBuffers: {\n        vCurrent: buffers[1]\n      }\n    });\n  }\n\n  update() {\n    const updated = this.transition.update();\n\n    if (updated) {\n      const {\n        duration,\n        easing\n      } = this.settings;\n      const {\n        time\n      } = this.transition;\n      let t = time / duration;\n\n      if (easing) {\n        t = easing(t);\n      }\n\n      this.transform.run({\n        uniforms: {\n          time: t\n        }\n      });\n    }\n\n    return updated;\n  }\n\n  cancel() {\n    this.transition.cancel();\n    this.transform.delete();\n\n    for (const buffer of this.buffers) {\n      buffer.delete();\n    }\n\n    this.buffers.length = 0;\n  }\n\n}\nconst vs = \"\\n#define SHADER_NAME interpolation-transition-vertex-shader\\n\\nuniform float time;\\nattribute ATTRIBUTE_TYPE aFrom;\\nattribute ATTRIBUTE_TYPE aTo;\\nvarying ATTRIBUTE_TYPE vCurrent;\\n\\nvoid main(void) {\\n  vCurrent = mix(aFrom, aTo, time);\\n  gl_Position = vec4(0.0);\\n}\\n\";\n\nfunction getTransform(gl, attribute) {\n  const attributeType = getAttributeTypeFromSize(attribute.size);\n  return new Transform(gl, {\n    vs,\n    defines: {\n      ATTRIBUTE_TYPE: attributeType\n    },\n    varyings: ['vCurrent']\n  });\n}\n//# sourceMappingURL=gpu-interpolation-transition.js.map","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Buffer, Transform, Framebuffer, Texture2D, readPixelsToArray } from '@luma.gl/core';\nimport { padBuffer, getAttributeTypeFromSize, getSourceBufferAttribute, getAttributeBufferLength, cycleBuffers } from '../lib/attribute/attribute-transition-utils';\nimport Attribute from '../lib/attribute/attribute';\nimport Transition from './transition';\nexport default class GPUSpringTransition {\n  constructor({\n    gl,\n    attribute,\n    timeline\n  }) {\n    _defineProperty(this, \"gl\", void 0);\n\n    _defineProperty(this, \"type\", 'spring');\n\n    _defineProperty(this, \"attributeInTransition\", void 0);\n\n    _defineProperty(this, \"settings\", void 0);\n\n    _defineProperty(this, \"attribute\", void 0);\n\n    _defineProperty(this, \"transition\", void 0);\n\n    _defineProperty(this, \"currentStartIndices\", void 0);\n\n    _defineProperty(this, \"currentLength\", void 0);\n\n    _defineProperty(this, \"texture\", void 0);\n\n    _defineProperty(this, \"framebuffer\", void 0);\n\n    _defineProperty(this, \"transform\", void 0);\n\n    _defineProperty(this, \"buffers\", void 0);\n\n    this.gl = gl;\n    this.type = 'spring';\n    this.transition = new Transition(timeline);\n    this.attribute = attribute;\n    this.attributeInTransition = new Attribute(gl, { ...attribute.settings,\n      normalized: false\n    });\n    this.currentStartIndices = attribute.startIndices;\n    this.currentLength = 0;\n    this.texture = getTexture(gl);\n    this.framebuffer = getFramebuffer(gl, this.texture);\n    this.transform = getTransform(gl, attribute, this.framebuffer);\n    const bufferOpts = {\n      byteLength: 0,\n      usage: 35050\n    };\n    this.buffers = [new Buffer(gl, bufferOpts), new Buffer(gl, bufferOpts), new Buffer(gl, bufferOpts)];\n  }\n\n  get inProgress() {\n    return this.transition.inProgress;\n  }\n\n  start(transitionSettings, numInstances) {\n    const {\n      gl,\n      buffers,\n      attribute\n    } = this;\n    const padBufferOpts = {\n      numInstances,\n      attribute,\n      fromLength: this.currentLength,\n      fromStartIndices: this.currentStartIndices,\n      getData: transitionSettings.enter\n    };\n\n    for (const buffer of buffers) {\n      padBuffer({\n        buffer,\n        ...padBufferOpts\n      });\n    }\n\n    this.settings = transitionSettings;\n    this.currentStartIndices = attribute.startIndices;\n    this.currentLength = getAttributeBufferLength(attribute, numInstances);\n    this.attributeInTransition.setData({\n      buffer: buffers[1],\n      value: attribute.value\n    });\n    this.transition.start({ ...transitionSettings,\n      duration: Infinity\n    });\n    this.transform.update({\n      elementCount: Math.floor(this.currentLength / attribute.size),\n      sourceBuffers: {\n        aTo: getSourceBufferAttribute(gl, attribute)\n      }\n    });\n  }\n\n  update() {\n    const {\n      buffers,\n      transform,\n      framebuffer,\n      transition\n    } = this;\n    const updated = transition.update();\n\n    if (!updated) {\n      return false;\n    }\n\n    const settings = this.settings;\n    transform.update({\n      sourceBuffers: {\n        aPrev: buffers[0],\n        aCur: buffers[1]\n      },\n      feedbackBuffers: {\n        vNext: buffers[2]\n      }\n    });\n    transform.run({\n      framebuffer,\n      discard: false,\n      clearRenderTarget: true,\n      uniforms: {\n        stiffness: settings.stiffness,\n        damping: settings.damping\n      },\n      parameters: {\n        depthTest: false,\n        blend: true,\n        viewport: [0, 0, 1, 1],\n        blendFunc: [1, 1],\n        blendEquation: [32776, 32776]\n      }\n    });\n    cycleBuffers(buffers);\n    this.attributeInTransition.setData({\n      buffer: buffers[1],\n      value: this.attribute.value\n    });\n    const isTransitioning = readPixelsToArray(framebuffer)[0] > 0;\n\n    if (!isTransitioning) {\n      transition.end();\n    }\n\n    return true;\n  }\n\n  cancel() {\n    this.transition.cancel();\n    this.transform.delete();\n\n    for (const buffer of this.buffers) {\n      buffer.delete();\n    }\n\n    this.buffers.length = 0;\n    this.texture.delete();\n    this.framebuffer.delete();\n  }\n\n}\n\nfunction getTransform(gl, attribute, framebuffer) {\n  const attributeType = getAttributeTypeFromSize(attribute.size);\n  return new Transform(gl, {\n    framebuffer,\n    vs: \"\\n#define SHADER_NAME spring-transition-vertex-shader\\n\\n#define EPSILON 0.00001\\n\\nuniform float stiffness;\\nuniform float damping;\\nattribute ATTRIBUTE_TYPE aPrev;\\nattribute ATTRIBUTE_TYPE aCur;\\nattribute ATTRIBUTE_TYPE aTo;\\nvarying ATTRIBUTE_TYPE vNext;\\nvarying float vIsTransitioningFlag;\\n\\nATTRIBUTE_TYPE getNextValue(ATTRIBUTE_TYPE cur, ATTRIBUTE_TYPE prev, ATTRIBUTE_TYPE dest) {\\n  ATTRIBUTE_TYPE velocity = cur - prev;\\n  ATTRIBUTE_TYPE delta = dest - cur;\\n  ATTRIBUTE_TYPE spring = delta * stiffness;\\n  ATTRIBUTE_TYPE damper = velocity * -1.0 * damping;\\n  return spring + damper + velocity + cur;\\n}\\n\\nvoid main(void) {\\n  bool isTransitioning = length(aCur - aPrev) > EPSILON || length(aTo - aCur) > EPSILON;\\n  vIsTransitioningFlag = isTransitioning ? 1.0 : 0.0;\\n\\n  vNext = getNextValue(aCur, aPrev, aTo);\\n  gl_Position = vec4(0, 0, 0, 1);\\n  gl_PointSize = 100.0;\\n}\\n\",\n    fs: \"\\n#define SHADER_NAME spring-transition-is-transitioning-fragment-shader\\n\\nvarying float vIsTransitioningFlag;\\n\\nvoid main(void) {\\n  if (vIsTransitioningFlag == 0.0) {\\n    discard;\\n  }\\n  gl_FragColor = vec4(1.0);\\n}\",\n    defines: {\n      ATTRIBUTE_TYPE: attributeType\n    },\n    varyings: ['vNext']\n  });\n}\n\nfunction getTexture(gl) {\n  return new Texture2D(gl, {\n    data: new Uint8Array(4),\n    format: 6408,\n    type: 5121,\n    border: 0,\n    mipmaps: false,\n    dataFormat: 6408,\n    width: 1,\n    height: 1\n  });\n}\n\nfunction getFramebuffer(gl, texture) {\n  return new Framebuffer(gl, {\n    id: 'spring-transition-is-transitioning-framebuffer',\n    width: 1,\n    height: 1,\n    attachments: {\n      [36064]: texture\n    }\n  });\n}\n//# sourceMappingURL=gpu-spring-transition.js.map","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport Attribute from './attribute';\nimport log from '../../utils/log';\nimport memoize from '../../utils/memoize';\nimport { mergeBounds } from '../../utils/math-utils';\nimport debug from '../../debug';\nimport AttributeTransitionManager from './attribute-transition-manager';\nconst TRACE_INVALIDATE = 'attributeManager.invalidate';\nconst TRACE_UPDATE_START = 'attributeManager.updateStart';\nconst TRACE_UPDATE_END = 'attributeManager.updateEnd';\nconst TRACE_ATTRIBUTE_UPDATE_START = 'attribute.updateStart';\nconst TRACE_ATTRIBUTE_ALLOCATE = 'attribute.allocate';\nconst TRACE_ATTRIBUTE_UPDATE_END = 'attribute.updateEnd';\nexport default class AttributeManager {\n  constructor(gl, {\n    id = 'attribute-manager',\n    stats,\n    timeline\n  } = {}) {\n    _defineProperty(this, \"id\", void 0);\n\n    _defineProperty(this, \"gl\", void 0);\n\n    _defineProperty(this, \"attributes\", void 0);\n\n    _defineProperty(this, \"updateTriggers\", void 0);\n\n    _defineProperty(this, \"needsRedraw\", void 0);\n\n    _defineProperty(this, \"userData\", void 0);\n\n    _defineProperty(this, \"stats\", void 0);\n\n    _defineProperty(this, \"attributeTransitionManager\", void 0);\n\n    _defineProperty(this, \"mergeBoundsMemoized\", memoize(mergeBounds));\n\n    this.id = id;\n    this.gl = gl;\n    this.attributes = {};\n    this.updateTriggers = {};\n    this.needsRedraw = true;\n    this.userData = {};\n    this.stats = stats;\n    this.attributeTransitionManager = new AttributeTransitionManager(gl, {\n      id: \"\".concat(id, \"-transitions\"),\n      timeline\n    });\n    Object.seal(this);\n  }\n\n  finalize() {\n    for (const attributeName in this.attributes) {\n      this.attributes[attributeName].delete();\n    }\n\n    this.attributeTransitionManager.finalize();\n  }\n\n  getNeedsRedraw(opts = {\n    clearRedrawFlags: false\n  }) {\n    const redraw = this.needsRedraw;\n    this.needsRedraw = this.needsRedraw && !opts.clearRedrawFlags;\n    return redraw && this.id;\n  }\n\n  setNeedsRedraw() {\n    this.needsRedraw = true;\n  }\n\n  add(attributes) {\n    this._add(attributes);\n  }\n\n  addInstanced(attributes) {\n    this._add(attributes, {\n      instanced: 1\n    });\n  }\n\n  remove(attributeNameArray) {\n    for (const name of attributeNameArray) {\n      if (this.attributes[name] !== undefined) {\n        this.attributes[name].delete();\n        delete this.attributes[name];\n      }\n    }\n  }\n\n  invalidate(triggerName, dataRange) {\n    const invalidatedAttributes = this._invalidateTrigger(triggerName, dataRange);\n\n    debug(TRACE_INVALIDATE, this, triggerName, invalidatedAttributes);\n  }\n\n  invalidateAll(dataRange) {\n    for (const attributeName in this.attributes) {\n      this.attributes[attributeName].setNeedsUpdate(attributeName, dataRange);\n    }\n\n    debug(TRACE_INVALIDATE, this, 'all');\n  }\n\n  update({\n    data,\n    numInstances,\n    startIndices = null,\n    transitions,\n    props = {},\n    buffers = {},\n    context = {}\n  }) {\n    let updated = false;\n    debug(TRACE_UPDATE_START, this);\n\n    if (this.stats) {\n      this.stats.get('Update Attributes').timeStart();\n    }\n\n    for (const attributeName in this.attributes) {\n      const attribute = this.attributes[attributeName];\n      const accessorName = attribute.settings.accessor;\n      attribute.startIndices = startIndices;\n      attribute.numInstances = numInstances;\n\n      if (props[attributeName]) {\n        log.removed(\"props.\".concat(attributeName), \"data.attributes.\".concat(attributeName))();\n      }\n\n      if (attribute.setExternalBuffer(buffers[attributeName])) {} else if (attribute.setBinaryValue(typeof accessorName === 'string' ? buffers[accessorName] : undefined, data.startIndices)) {} else if (typeof accessorName === 'string' && !buffers[accessorName] && attribute.setConstantValue(props[accessorName])) {} else if (attribute.needsUpdate()) {\n        updated = true;\n\n        this._updateAttribute({\n          attribute,\n          numInstances,\n          data,\n          props,\n          context\n        });\n      }\n\n      this.needsRedraw = this.needsRedraw || attribute.needsRedraw();\n    }\n\n    if (updated) {\n      debug(TRACE_UPDATE_END, this, numInstances);\n    }\n\n    if (this.stats) {\n      this.stats.get('Update Attributes').timeEnd();\n    }\n\n    this.attributeTransitionManager.update({\n      attributes: this.attributes,\n      numInstances,\n      transitions\n    });\n  }\n\n  updateTransition() {\n    const {\n      attributeTransitionManager\n    } = this;\n    const transitionUpdated = attributeTransitionManager.run();\n    this.needsRedraw = this.needsRedraw || transitionUpdated;\n    return transitionUpdated;\n  }\n\n  getAttributes() {\n    return this.attributes;\n  }\n\n  getBounds(attributeNames) {\n    const bounds = attributeNames.map(attributeName => {\n      var _this$attributes$attr;\n\n      return (_this$attributes$attr = this.attributes[attributeName]) === null || _this$attributes$attr === void 0 ? void 0 : _this$attributes$attr.getBounds();\n    });\n    return this.mergeBoundsMemoized(bounds);\n  }\n\n  getChangedAttributes(opts = {\n    clearChangedFlags: false\n  }) {\n    const {\n      attributes,\n      attributeTransitionManager\n    } = this;\n    const changedAttributes = { ...attributeTransitionManager.getAttributes()\n    };\n\n    for (const attributeName in attributes) {\n      const attribute = attributes[attributeName];\n\n      if (attribute.needsRedraw(opts) && !attributeTransitionManager.hasAttribute(attributeName)) {\n        changedAttributes[attributeName] = attribute;\n      }\n    }\n\n    return changedAttributes;\n  }\n\n  getShaderAttributes(attributes, excludeAttributes = {}) {\n    if (!attributes) {\n      attributes = this.getAttributes();\n    }\n\n    const shaderAttributes = {};\n\n    for (const attributeName in attributes) {\n      if (!excludeAttributes[attributeName]) {\n        Object.assign(shaderAttributes, attributes[attributeName].getShaderAttributes());\n      }\n    }\n\n    return shaderAttributes;\n  }\n\n  _add(attributes, extraProps = {}) {\n    for (const attributeName in attributes) {\n      const attribute = attributes[attributeName];\n      this.attributes[attributeName] = this._createAttribute(attributeName, attribute, extraProps);\n    }\n\n    this._mapUpdateTriggersToAttributes();\n  }\n\n  _createAttribute(name, attribute, extraProps) {\n    const props = { ...attribute,\n      id: name,\n      size: attribute.isIndexed && 1 || attribute.size || 1,\n      divisor: extraProps.instanced ? 1 : attribute.divisor || 0\n    };\n    return new Attribute(this.gl, props);\n  }\n\n  _mapUpdateTriggersToAttributes() {\n    const triggers = {};\n\n    for (const attributeName in this.attributes) {\n      const attribute = this.attributes[attributeName];\n      attribute.getUpdateTriggers().forEach(triggerName => {\n        if (!triggers[triggerName]) {\n          triggers[triggerName] = [];\n        }\n\n        triggers[triggerName].push(attributeName);\n      });\n    }\n\n    this.updateTriggers = triggers;\n  }\n\n  _invalidateTrigger(triggerName, dataRange) {\n    const {\n      attributes,\n      updateTriggers\n    } = this;\n    const invalidatedAttributes = updateTriggers[triggerName];\n\n    if (invalidatedAttributes) {\n      invalidatedAttributes.forEach(name => {\n        const attribute = attributes[name];\n\n        if (attribute) {\n          attribute.setNeedsUpdate(attribute.id, dataRange);\n        }\n      });\n    }\n\n    return invalidatedAttributes;\n  }\n\n  _updateAttribute(opts) {\n    const {\n      attribute,\n      numInstances\n    } = opts;\n    debug(TRACE_ATTRIBUTE_UPDATE_START, attribute);\n\n    if (attribute.constant) {\n      attribute.setConstantValue(attribute.value);\n      return;\n    }\n\n    if (attribute.allocate(numInstances)) {\n      debug(TRACE_ATTRIBUTE_ALLOCATE, attribute, numInstances);\n    }\n\n    const updated = attribute.updateBuffer(opts);\n\n    if (updated) {\n      this.needsRedraw = true;\n      debug(TRACE_ATTRIBUTE_UPDATE_END, attribute, numInstances);\n    }\n  }\n\n}\n//# sourceMappingURL=attribute-manager.js.map","function padArrayChunk(options) {\n  const {\n    source,\n    target,\n    start = 0,\n    size,\n    getData\n  } = options;\n  const end = options.end || target.length;\n  const sourceLength = source.length;\n  const targetLength = end - start;\n\n  if (sourceLength > targetLength) {\n    target.set(source.subarray(0, targetLength), start);\n    return;\n  }\n\n  target.set(source, start);\n\n  if (!getData) {\n    return;\n  }\n\n  let i = sourceLength;\n\n  while (i < targetLength) {\n    const datum = getData(i, source);\n\n    for (let j = 0; j < size; j++) {\n      target[start + i] = datum[j] || 0;\n      i++;\n    }\n  }\n}\n\nexport function padArray({\n  source,\n  target,\n  size,\n  getData,\n  sourceStartIndices,\n  targetStartIndices\n}) {\n  if (!Array.isArray(targetStartIndices)) {\n    padArrayChunk({\n      source,\n      target,\n      size,\n      getData\n    });\n    return target;\n  }\n\n  let sourceIndex = 0;\n  let targetIndex = 0;\n\n  const getChunkData = getData && ((i, chunk) => getData(i + targetIndex, chunk));\n\n  const n = Math.min(sourceStartIndices.length, targetStartIndices.length);\n\n  for (let i = 1; i < n; i++) {\n    const nextSourceIndex = sourceStartIndices[i] * size;\n    const nextTargetIndex = targetStartIndices[i] * size;\n    padArrayChunk({\n      source: source.subarray(sourceIndex, nextSourceIndex),\n      target,\n      start: targetIndex,\n      end: nextTargetIndex,\n      size,\n      getData: getChunkData\n    });\n    sourceIndex = nextSourceIndex;\n    targetIndex = nextTargetIndex;\n  }\n\n  if (targetIndex < target.length) {\n    padArrayChunk({\n      source: [],\n      target,\n      start: targetIndex,\n      size,\n      getData: getChunkData\n    });\n  }\n\n  return target;\n}\n//# sourceMappingURL=array-utils.js.map","import { padArray } from '../../utils/array-utils';\nconst DEFAULT_TRANSITION_SETTINGS = {\n  interpolation: {\n    duration: 0,\n    easing: t => t\n  },\n  spring: {\n    stiffness: 0.05,\n    damping: 0.5\n  }\n};\nexport function normalizeTransitionSettings(userSettings, layerSettings) {\n  if (!userSettings) {\n    return null;\n  }\n\n  if (Number.isFinite(userSettings)) {\n    userSettings = {\n      type: 'interpolation',\n      duration: userSettings\n    };\n  }\n\n  const type = userSettings.type || 'interpolation';\n  return { ...DEFAULT_TRANSITION_SETTINGS[type],\n    ...layerSettings,\n    ...userSettings,\n    type\n  };\n}\nexport function getSourceBufferAttribute(gl, attribute) {\n  const buffer = attribute.getBuffer();\n\n  if (buffer) {\n    return [buffer, {\n      divisor: 0,\n      size: attribute.size,\n      normalized: attribute.settings.normalized\n    }];\n  }\n\n  return attribute.value;\n}\nexport function getAttributeTypeFromSize(size) {\n  switch (size) {\n    case 1:\n      return 'float';\n\n    case 2:\n      return 'vec2';\n\n    case 3:\n      return 'vec3';\n\n    case 4:\n      return 'vec4';\n\n    default:\n      throw new Error(\"No defined attribute type for size \\\"\".concat(size, \"\\\"\"));\n  }\n}\nexport function cycleBuffers(buffers) {\n  buffers.push(buffers.shift());\n}\nexport function getAttributeBufferLength(attribute, numInstances) {\n  const {\n    doublePrecision,\n    settings,\n    value,\n    size\n  } = attribute;\n  const multiplier = doublePrecision && value instanceof Float64Array ? 2 : 1;\n  return (settings.noAlloc ? value.length : numInstances * size) * multiplier;\n}\nexport function padBuffer({\n  buffer,\n  numInstances,\n  attribute,\n  fromLength,\n  fromStartIndices,\n  getData = x => x\n}) {\n  const precisionMultiplier = attribute.doublePrecision && attribute.value instanceof Float64Array ? 2 : 1;\n  const size = attribute.size * precisionMultiplier;\n  const byteOffset = attribute.byteOffset;\n  const toStartIndices = attribute.startIndices;\n  const hasStartIndices = fromStartIndices && toStartIndices;\n  const toLength = getAttributeBufferLength(attribute, numInstances);\n  const isConstant = attribute.isConstant;\n\n  if (!hasStartIndices && fromLength >= toLength) {\n    return;\n  }\n\n  const toData = isConstant ? attribute.value : attribute.getBuffer().getData({\n    srcByteOffset: byteOffset\n  });\n\n  if (attribute.settings.normalized && !isConstant) {\n    const getter = getData;\n\n    getData = (value, chunk) => attribute.normalizeConstant(getter(value, chunk));\n  }\n\n  const getMissingData = isConstant ? (i, chunk) => getData(toData, chunk) : (i, chunk) => getData(toData.subarray(i, i + size), chunk);\n  const source = buffer.getData({\n    length: fromLength\n  });\n  const data = new Float32Array(toLength);\n  padArray({\n    source,\n    target: data,\n    sourceStartIndices: fromStartIndices,\n    targetStartIndices: toStartIndices,\n    size,\n    getData: getMissingData\n  });\n\n  if (buffer.byteLength < data.byteLength + byteOffset) {\n    buffer.reallocate(data.byteLength + byteOffset);\n  }\n\n  buffer.subData({\n    data,\n    offset: byteOffset\n  });\n}\n//# sourceMappingURL=attribute-transition-utils.js.map","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport Layer from './layer';\nimport debug from '../debug';\nimport { flatten } from '../utils/flatten';\nimport { PROP_TYPES_SYMBOL } from '../lifecycle/constants';\nconst TRACE_RENDER_LAYERS = 'compositeLayer.renderLayers';\nexport default class CompositeLayer extends Layer {\n  get isComposite() {\n    return true;\n  }\n\n  get isLoaded() {\n    return super.isLoaded && this.getSubLayers().every(layer => layer.isLoaded);\n  }\n\n  getSubLayers() {\n    return this.internalState && this.internalState.subLayers || [];\n  }\n\n  initializeState(context) {}\n\n  setState(updateObject) {\n    super.setState(updateObject);\n    this.setNeedsUpdate();\n  }\n\n  getPickingInfo({\n    info\n  }) {\n    const {\n      object\n    } = info;\n    const isDataWrapped = object && object.__source && object.__source.parent && object.__source.parent.id === this.id;\n\n    if (!isDataWrapped) {\n      return info;\n    }\n\n    info.object = object.__source.object;\n    info.index = object.__source.index;\n    return info;\n  }\n\n  filterSubLayer(context) {\n    return true;\n  }\n\n  shouldRenderSubLayer(subLayerId, data) {\n    return data && data.length;\n  }\n\n  getSubLayerClass(subLayerId, DefaultLayerClass) {\n    const {\n      _subLayerProps: overridingProps\n    } = this.props;\n    return overridingProps && overridingProps[subLayerId] && overridingProps[subLayerId].type || DefaultLayerClass;\n  }\n\n  getSubLayerRow(row, sourceObject, sourceObjectIndex) {\n    row.__source = {\n      parent: this,\n      object: sourceObject,\n      index: sourceObjectIndex\n    };\n    return row;\n  }\n\n  getSubLayerAccessor(accessor) {\n    if (typeof accessor === 'function') {\n      const objectInfo = {\n        index: -1,\n        data: this.props.data,\n        target: []\n      };\n      return (x, i) => {\n        if (x && x.__source) {\n          objectInfo.index = x.__source.index;\n          return accessor(x.__source.object, objectInfo);\n        }\n\n        return accessor(x, i);\n      };\n    }\n\n    return accessor;\n  }\n\n  getSubLayerProps(sublayerProps = {}) {\n    var _this$props$updateTri;\n\n    const {\n      opacity,\n      pickable,\n      visible,\n      parameters,\n      getPolygonOffset,\n      highlightedObjectIndex,\n      autoHighlight,\n      highlightColor,\n      coordinateSystem,\n      coordinateOrigin,\n      wrapLongitude,\n      positionFormat,\n      modelMatrix,\n      extensions,\n      fetch,\n      operation,\n      _subLayerProps: overridingProps\n    } = this.props;\n    const newProps = {\n      id: '',\n      updateTriggers: {},\n      opacity,\n      pickable,\n      visible,\n      parameters,\n      getPolygonOffset,\n      highlightedObjectIndex,\n      autoHighlight,\n      highlightColor,\n      coordinateSystem,\n      coordinateOrigin,\n      wrapLongitude,\n      positionFormat,\n      modelMatrix,\n      extensions,\n      fetch,\n      operation\n    };\n    const overridingSublayerProps = overridingProps && sublayerProps.id && overridingProps[sublayerProps.id];\n    const overridingSublayerTriggers = overridingSublayerProps && overridingSublayerProps.updateTriggers;\n    const sublayerId = sublayerProps.id || 'sublayer';\n\n    if (overridingSublayerProps) {\n      const propTypes = this.props[PROP_TYPES_SYMBOL];\n      const subLayerPropTypes = sublayerProps.type ? sublayerProps.type._propTypes : {};\n\n      for (const key in overridingSublayerProps) {\n        const propType = subLayerPropTypes[key] || propTypes[key];\n\n        if (propType && propType.type === 'accessor') {\n          overridingSublayerProps[key] = this.getSubLayerAccessor(overridingSublayerProps[key]);\n        }\n      }\n    }\n\n    Object.assign(newProps, sublayerProps, overridingSublayerProps);\n    newProps.id = \"\".concat(this.props.id, \"-\").concat(sublayerId);\n    newProps.updateTriggers = {\n      all: (_this$props$updateTri = this.props.updateTriggers) === null || _this$props$updateTri === void 0 ? void 0 : _this$props$updateTri.all,\n      ...sublayerProps.updateTriggers,\n      ...overridingSublayerTriggers\n    };\n\n    for (const extension of extensions) {\n      const passThroughProps = extension.getSubLayerProps.call(this, extension);\n\n      if (passThroughProps) {\n        Object.assign(newProps, passThroughProps, {\n          updateTriggers: Object.assign(newProps.updateTriggers, passThroughProps.updateTriggers)\n        });\n      }\n    }\n\n    return newProps;\n  }\n\n  _updateAutoHighlight(info) {\n    for (const layer of this.getSubLayers()) {\n      layer.updateAutoHighlight(info);\n    }\n  }\n\n  _getAttributeManager() {\n    return null;\n  }\n\n  _postUpdate(updateParams, forceUpdate) {\n    let subLayers = this.internalState.subLayers;\n    const shouldUpdate = !subLayers || this.needsUpdate();\n\n    if (shouldUpdate) {\n      const subLayersList = this.renderLayers();\n      subLayers = flatten(subLayersList, Boolean);\n      this.internalState.subLayers = subLayers;\n    }\n\n    debug(TRACE_RENDER_LAYERS, this, shouldUpdate, subLayers);\n\n    for (const layer of subLayers) {\n      layer.parent = this;\n    }\n  }\n\n}\n\n_defineProperty(CompositeLayer, \"layerName\", 'CompositeLayer');\n//# sourceMappingURL=composite-layer.js.map","import log from '../utils/log';\nexport const COORDINATE_SYSTEM = {\n  DEFAULT: -1,\n  LNGLAT: 1,\n  METER_OFFSETS: 2,\n  LNGLAT_OFFSETS: 3,\n  CARTESIAN: 0\n};\nObject.defineProperty(COORDINATE_SYSTEM, 'IDENTITY', {\n  get: () => {\n    log.deprecated('COORDINATE_SYSTEM.IDENTITY', 'COORDINATE_SYSTEM.CARTESIAN')();\n    return 0;\n  }\n});\nexport const PROJECTION_MODE = {\n  WEB_MERCATOR: 1,\n  GLOBE: 2,\n  WEB_MERCATOR_AUTO_OFFSET: 4,\n  IDENTITY: 0\n};\nexport const UNIT = {\n  common: 0,\n  meters: 1,\n  pixels: 2\n};\nexport const EVENTS = {\n  click: {\n    handler: 'onClick'\n  },\n  panstart: {\n    handler: 'onDragStart'\n  },\n  panmove: {\n    handler: 'onDrag'\n  },\n  panend: {\n    handler: 'onDragEnd'\n  }\n};\nexport const OPERATION = {\n  DRAW: 'draw',\n  MASK: 'mask',\n  TERRAIN: 'terrain'\n};\n//# sourceMappingURL=constants.js.map","import LayersPass from './layers-pass';\nexport default class DrawLayersPass extends LayersPass {\n  shouldDrawLayer(layer) {\n    const {\n      operation\n    } = layer.props;\n    return operation.includes('draw') || operation.includes('terrain');\n  }\n\n}\n//# sourceMappingURL=draw-layers-pass.js.map","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport debug from '../debug';\nimport DrawLayersPass from '../passes/draw-layers-pass';\nimport PickLayersPass from '../passes/pick-layers-pass';\nimport { Framebuffer } from '@luma.gl/core';\nconst TRACE_RENDER_LAYERS = 'deckRenderer.renderLayers';\nexport default class DeckRenderer {\n  constructor(gl) {\n    _defineProperty(this, \"gl\", void 0);\n\n    _defineProperty(this, \"layerFilter\", void 0);\n\n    _defineProperty(this, \"drawPickingColors\", void 0);\n\n    _defineProperty(this, \"drawLayersPass\", void 0);\n\n    _defineProperty(this, \"pickLayersPass\", void 0);\n\n    _defineProperty(this, \"renderCount\", void 0);\n\n    _defineProperty(this, \"_needsRedraw\", void 0);\n\n    _defineProperty(this, \"renderBuffers\", void 0);\n\n    _defineProperty(this, \"lastPostProcessEffect\", void 0);\n\n    this.gl = gl;\n    this.layerFilter = null;\n    this.drawPickingColors = false;\n    this.drawLayersPass = new DrawLayersPass(gl);\n    this.pickLayersPass = new PickLayersPass(gl);\n    this.renderCount = 0;\n    this._needsRedraw = 'Initial render';\n    this.renderBuffers = [];\n    this.lastPostProcessEffect = null;\n  }\n\n  setProps(props) {\n    if (this.layerFilter !== props.layerFilter) {\n      this.layerFilter = props.layerFilter;\n      this._needsRedraw = 'layerFilter changed';\n    }\n\n    if (this.drawPickingColors !== props.drawPickingColors) {\n      this.drawPickingColors = props.drawPickingColors;\n      this._needsRedraw = 'drawPickingColors changed';\n    }\n  }\n\n  renderLayers(opts) {\n    if (!opts.viewports.length) {\n      return;\n    }\n\n    const layerPass = this.drawPickingColors ? this.pickLayersPass : this.drawLayersPass;\n    const renderOpts = {\n      layerFilter: this.layerFilter,\n      isPicking: this.drawPickingColors,\n      ...opts,\n      target: opts.target || Framebuffer.getDefaultFramebuffer(this.gl)\n    };\n\n    if (renderOpts.effects) {\n      this._preRender(renderOpts.effects, renderOpts);\n    }\n\n    const outputBuffer = this.lastPostProcessEffect ? this.renderBuffers[0] : renderOpts.target;\n    const renderStats = layerPass.render({ ...renderOpts,\n      target: outputBuffer\n    });\n\n    if (renderOpts.effects) {\n      this._postRender(renderOpts.effects, renderOpts);\n    }\n\n    this.renderCount++;\n    debug(TRACE_RENDER_LAYERS, this, renderStats, opts);\n  }\n\n  needsRedraw(opts = {\n    clearRedrawFlags: false\n  }) {\n    const redraw = this._needsRedraw;\n\n    if (opts.clearRedrawFlags) {\n      this._needsRedraw = false;\n    }\n\n    return redraw;\n  }\n\n  finalize() {\n    const {\n      renderBuffers\n    } = this;\n\n    for (const buffer of renderBuffers) {\n      buffer.delete();\n    }\n\n    renderBuffers.length = 0;\n  }\n\n  _preRender(effects, opts) {\n    this.lastPostProcessEffect = null;\n    opts.preRenderStats = opts.preRenderStats || {};\n\n    for (const effect of effects) {\n      opts.preRenderStats[effect.id] = effect.preRender(this.gl, opts);\n\n      if (effect.postRender) {\n        this.lastPostProcessEffect = effect.id;\n      }\n    }\n\n    if (this.lastPostProcessEffect) {\n      this._resizeRenderBuffers();\n    }\n  }\n\n  _resizeRenderBuffers() {\n    const {\n      renderBuffers\n    } = this;\n\n    if (renderBuffers.length === 0) {\n      renderBuffers.push(new Framebuffer(this.gl), new Framebuffer(this.gl));\n    }\n\n    for (const buffer of renderBuffers) {\n      buffer.resize();\n    }\n  }\n\n  _postRender(effects, opts) {\n    const {\n      renderBuffers\n    } = this;\n    const params = { ...opts,\n      inputBuffer: renderBuffers[0],\n      swapBuffer: renderBuffers[1],\n      target: null\n    };\n\n    for (const effect of effects) {\n      if (effect.postRender) {\n        if (effect.id === this.lastPostProcessEffect) {\n          params.target = opts.target;\n          effect.postRender(this.gl, params);\n          break;\n        }\n\n        const buffer = effect.postRender(this.gl, params);\n        params.inputBuffer = buffer;\n        params.swapBuffer = buffer === renderBuffers[0] ? renderBuffers[1] : renderBuffers[0];\n      }\n    }\n  }\n\n}\n//# sourceMappingURL=deck-renderer.js.map","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { deepEqual } from '../utils/deep-equal';\nimport log from '../utils/log';\nimport { flatten } from '../utils/flatten';\nexport default class ViewManager {\n  constructor(props) {\n    _defineProperty(this, \"width\", void 0);\n\n    _defineProperty(this, \"height\", void 0);\n\n    _defineProperty(this, \"views\", void 0);\n\n    _defineProperty(this, \"viewState\", void 0);\n\n    _defineProperty(this, \"controllers\", void 0);\n\n    _defineProperty(this, \"timeline\", void 0);\n\n    _defineProperty(this, \"_viewports\", void 0);\n\n    _defineProperty(this, \"_viewportMap\", void 0);\n\n    _defineProperty(this, \"_isUpdating\", void 0);\n\n    _defineProperty(this, \"_needsRedraw\", void 0);\n\n    _defineProperty(this, \"_needsUpdate\", void 0);\n\n    _defineProperty(this, \"_eventManager\", void 0);\n\n    _defineProperty(this, \"_eventCallbacks\", void 0);\n\n    this.views = [];\n    this.width = 100;\n    this.height = 100;\n    this.viewState = {};\n    this.controllers = {};\n    this.timeline = props.timeline;\n    this._viewports = [];\n    this._viewportMap = {};\n    this._isUpdating = false;\n    this._needsRedraw = 'First render';\n    this._needsUpdate = 'Initialize';\n    this._eventManager = props.eventManager;\n    this._eventCallbacks = {\n      onViewStateChange: props.onViewStateChange,\n      onInteractionStateChange: props.onInteractionStateChange\n    };\n    Object.seal(this);\n    this.setProps(props);\n  }\n\n  finalize() {\n    for (const key in this.controllers) {\n      const controller = this.controllers[key];\n\n      if (controller) {\n        controller.finalize();\n      }\n    }\n\n    this.controllers = {};\n  }\n\n  needsRedraw(opts = {\n    clearRedrawFlags: false\n  }) {\n    const redraw = this._needsRedraw;\n\n    if (opts.clearRedrawFlags) {\n      this._needsRedraw = false;\n    }\n\n    return redraw;\n  }\n\n  setNeedsUpdate(reason) {\n    this._needsUpdate = this._needsUpdate || reason;\n    this._needsRedraw = this._needsRedraw || reason;\n  }\n\n  updateViewStates() {\n    for (const viewId in this.controllers) {\n      const controller = this.controllers[viewId];\n\n      if (controller) {\n        controller.updateTransition();\n      }\n    }\n  }\n\n  getViewports(rect) {\n    if (rect) {\n      return this._viewports.filter(viewport => viewport.containsPixel(rect));\n    }\n\n    return this._viewports;\n  }\n\n  getViews() {\n    const viewMap = {};\n    this.views.forEach(view => {\n      viewMap[view.id] = view;\n    });\n    return viewMap;\n  }\n\n  getView(viewId) {\n    return this.views.find(view => view.id === viewId);\n  }\n\n  getViewState(viewOrViewId) {\n    const view = typeof viewOrViewId === 'string' ? this.getView(viewOrViewId) : viewOrViewId;\n    const viewState = view && this.viewState[view.getViewStateId()] || this.viewState;\n    return view ? view.filterViewState(viewState) : viewState;\n  }\n\n  getViewport(viewId) {\n    return this._viewportMap[viewId];\n  }\n\n  unproject(xyz, opts) {\n    const viewports = this.getViewports();\n    const pixel = {\n      x: xyz[0],\n      y: xyz[1]\n    };\n\n    for (let i = viewports.length - 1; i >= 0; --i) {\n      const viewport = viewports[i];\n\n      if (viewport.containsPixel(pixel)) {\n        const p = xyz.slice();\n        p[0] -= viewport.x;\n        p[1] -= viewport.y;\n        return viewport.unproject(p, opts);\n      }\n    }\n\n    return null;\n  }\n\n  setProps(props) {\n    if (props.views) {\n      this._setViews(props.views);\n    }\n\n    if (props.viewState) {\n      this._setViewState(props.viewState);\n    }\n\n    if ('width' in props || 'height' in props) {\n      this._setSize(props.width, props.height);\n    }\n\n    if (!this._isUpdating) {\n      this._update();\n    }\n  }\n\n  _update() {\n    this._isUpdating = true;\n\n    if (this._needsUpdate) {\n      this._needsUpdate = false;\n\n      this._rebuildViewports();\n    }\n\n    if (this._needsUpdate) {\n      this._needsUpdate = false;\n\n      this._rebuildViewports();\n    }\n\n    this._isUpdating = false;\n  }\n\n  _setSize(width, height) {\n    if (width !== this.width || height !== this.height) {\n      this.width = width;\n      this.height = height;\n      this.setNeedsUpdate('Size changed');\n    }\n  }\n\n  _setViews(views) {\n    views = flatten(views, Boolean);\n\n    const viewsChanged = this._diffViews(views, this.views);\n\n    if (viewsChanged) {\n      this.setNeedsUpdate('views changed');\n    }\n\n    this.views = views;\n  }\n\n  _setViewState(viewState) {\n    if (viewState) {\n      const viewStateChanged = !deepEqual(viewState, this.viewState, 3);\n\n      if (viewStateChanged) {\n        this.setNeedsUpdate('viewState changed');\n      }\n\n      this.viewState = viewState;\n    } else {\n      log.warn('missing `viewState` or `initialViewState`')();\n    }\n  }\n\n  _onViewStateChange(viewId, event) {\n    if (this._eventCallbacks.onViewStateChange) {\n      this._eventCallbacks.onViewStateChange({ ...event,\n        viewId\n      });\n    }\n  }\n\n  _createController(view, props) {\n    const Controller = props.type;\n    const controller = new Controller({\n      timeline: this.timeline,\n      eventManager: this._eventManager,\n      onViewStateChange: this._onViewStateChange.bind(this, props.id),\n      onStateChange: this._eventCallbacks.onInteractionStateChange,\n      makeViewport: viewState => {\n        var _this$getView;\n\n        return (_this$getView = this.getView(view.id)) === null || _this$getView === void 0 ? void 0 : _this$getView.makeViewport({\n          viewState,\n          width: this.width,\n          height: this.height\n        });\n      }\n    });\n    return controller;\n  }\n\n  _updateController(view, viewState, viewport, controller) {\n    const controllerProps = view.controller;\n\n    if (controllerProps && viewport) {\n      const resolvedProps = { ...viewState,\n        ...controllerProps,\n        id: view.id,\n        x: viewport.x,\n        y: viewport.y,\n        width: viewport.width,\n        height: viewport.height\n      };\n\n      if (!controller || controller.constructor !== controllerProps.type) {\n        controller = this._createController(view, resolvedProps);\n      }\n\n      if (controller) {\n        controller.setProps(resolvedProps);\n      }\n\n      return controller;\n    }\n\n    return null;\n  }\n\n  _rebuildViewports() {\n    const {\n      views\n    } = this;\n    const oldControllers = this.controllers;\n    this._viewports = [];\n    this.controllers = {};\n    let invalidateControllers = false;\n\n    for (let i = views.length; i--;) {\n      const view = views[i];\n      const viewState = this.getViewState(view);\n      const viewport = view.makeViewport({\n        viewState,\n        width: this.width,\n        height: this.height\n      });\n      let oldController = oldControllers[view.id];\n      const hasController = Boolean(view.controller);\n\n      if (hasController && !oldController) {\n        invalidateControllers = true;\n      }\n\n      if ((invalidateControllers || !hasController) && oldController) {\n        oldController.finalize();\n        oldController = null;\n      }\n\n      this.controllers[view.id] = this._updateController(view, viewState, viewport, oldController);\n\n      if (viewport) {\n        this._viewports.unshift(viewport);\n      }\n    }\n\n    for (const id in oldControllers) {\n      const oldController = oldControllers[id];\n\n      if (oldController && !this.controllers[id]) {\n        oldController.finalize();\n      }\n    }\n\n    this._buildViewportMap();\n  }\n\n  _buildViewportMap() {\n    this._viewportMap = {};\n\n    this._viewports.forEach(viewport => {\n      if (viewport.id) {\n        this._viewportMap[viewport.id] = this._viewportMap[viewport.id] || viewport;\n      }\n    });\n  }\n\n  _diffViews(newViews, oldViews) {\n    if (newViews.length !== oldViews.length) {\n      return true;\n    }\n\n    return newViews.some((_, i) => !newViews[i].equals(oldViews[i]));\n  }\n\n}\n//# sourceMappingURL=view-manager.js.map","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { deepEqual } from '../utils/deep-equal';\nimport LightingEffect from '../effects/lighting/lighting-effect';\nconst DEFAULT_LIGHTING_EFFECT = new LightingEffect();\n\nfunction compareEffects(e1, e2) {\n  var _e1$order, _e2$order;\n\n  const o1 = (_e1$order = e1.order) !== null && _e1$order !== void 0 ? _e1$order : Infinity;\n  const o2 = (_e2$order = e2.order) !== null && _e2$order !== void 0 ? _e2$order : Infinity;\n  return o1 - o2;\n}\n\nexport default class EffectManager {\n  constructor() {\n    _defineProperty(this, \"effects\", void 0);\n\n    _defineProperty(this, \"_resolvedEffects\", []);\n\n    _defineProperty(this, \"_defaultEffects\", []);\n\n    _defineProperty(this, \"_needsRedraw\", void 0);\n\n    this.effects = [];\n    this._needsRedraw = 'Initial render';\n\n    this._setEffects([]);\n  }\n\n  addDefaultEffect(effect) {\n    const defaultEffects = this._defaultEffects;\n\n    if (!defaultEffects.find(e => e.id === effect.id)) {\n      const index = defaultEffects.findIndex(e => compareEffects(e, effect) > 0);\n\n      if (index < 0) {\n        defaultEffects.push(effect);\n      } else {\n        defaultEffects.splice(index, 0, effect);\n      }\n\n      this._setEffects(this.effects);\n    }\n  }\n\n  setProps(props) {\n    if ('effects' in props) {\n      if (!deepEqual(props.effects, this.effects, 1)) {\n        this._setEffects(props.effects);\n      }\n    }\n  }\n\n  needsRedraw(opts = {\n    clearRedrawFlags: false\n  }) {\n    const redraw = this._needsRedraw;\n\n    if (opts.clearRedrawFlags) {\n      this._needsRedraw = false;\n    }\n\n    return redraw;\n  }\n\n  getEffects() {\n    return this._resolvedEffects;\n  }\n\n  _setEffects(effects) {\n    const oldEffectsMap = {};\n\n    for (const effect of this.effects) {\n      oldEffectsMap[effect.id] = effect;\n    }\n\n    const nextEffects = [];\n\n    for (const effect of effects) {\n      const oldEffect = oldEffectsMap[effect.id];\n\n      if (oldEffect && oldEffect !== effect) {\n        if (oldEffect.setProps) {\n          oldEffect.setProps(effect.props);\n          nextEffects.push(oldEffect);\n        } else {\n          oldEffect.cleanup();\n          nextEffects.push(effect);\n        }\n      } else {\n        nextEffects.push(effect);\n      }\n\n      delete oldEffectsMap[effect.id];\n    }\n\n    for (const removedEffectId in oldEffectsMap) {\n      oldEffectsMap[removedEffectId].cleanup();\n    }\n\n    this.effects = nextEffects;\n    this._resolvedEffects = nextEffects.concat(this._defaultEffects);\n\n    if (!effects.some(effect => effect instanceof LightingEffect)) {\n      this._resolvedEffects.push(DEFAULT_LIGHTING_EFFECT);\n    }\n\n    this._needsRedraw = 'effects changed';\n  }\n\n  finalize() {\n    for (const effect of this._resolvedEffects) {\n      effect.cleanup();\n    }\n\n    this.effects.length = 0;\n    this._resolvedEffects.length = 0;\n    this._defaultEffects.length = 0;\n  }\n\n}\n//# sourceMappingURL=effect-manager.js.map","import log from '../../utils/log';\nconst NO_PICKED_OBJECT = {\n  pickedColor: null,\n  pickedObjectIndex: -1\n};\nexport function getClosestObject({\n  pickedColors,\n  decodePickingColor,\n  deviceX,\n  deviceY,\n  deviceRadius,\n  deviceRect\n}) {\n  const {\n    x,\n    y,\n    width,\n    height\n  } = deviceRect;\n  let minSquareDistanceToCenter = deviceRadius * deviceRadius;\n  let closestPixelIndex = -1;\n  let i = 0;\n\n  for (let row = 0; row < height; row++) {\n    const dy = row + y - deviceY;\n    const dy2 = dy * dy;\n\n    if (dy2 > minSquareDistanceToCenter) {\n      i += 4 * width;\n    } else {\n      for (let col = 0; col < width; col++) {\n        const pickedLayerIndex = pickedColors[i + 3] - 1;\n\n        if (pickedLayerIndex >= 0) {\n          const dx = col + x - deviceX;\n          const d2 = dx * dx + dy2;\n\n          if (d2 <= minSquareDistanceToCenter) {\n            minSquareDistanceToCenter = d2;\n            closestPixelIndex = i;\n          }\n        }\n\n        i += 4;\n      }\n    }\n  }\n\n  if (closestPixelIndex >= 0) {\n    const pickedColor = pickedColors.slice(closestPixelIndex, closestPixelIndex + 4);\n    const pickedObject = decodePickingColor(pickedColor);\n\n    if (pickedObject) {\n      const dy = Math.floor(closestPixelIndex / 4 / width);\n      const dx = closestPixelIndex / 4 - dy * width;\n      return { ...pickedObject,\n        pickedColor,\n        pickedX: x + dx,\n        pickedY: y + dy\n      };\n    }\n\n    log.error('Picked non-existent layer. Is picking buffer corrupt?')();\n  }\n\n  return NO_PICKED_OBJECT;\n}\nexport function getUniqueObjects({\n  pickedColors,\n  decodePickingColor\n}) {\n  const uniqueColors = new Map();\n\n  if (pickedColors) {\n    for (let i = 0; i < pickedColors.length; i += 4) {\n      const pickedLayerIndex = pickedColors[i + 3] - 1;\n\n      if (pickedLayerIndex >= 0) {\n        const pickedColor = pickedColors.slice(i, i + 4);\n        const colorKey = pickedColor.join(',');\n\n        if (!uniqueColors.has(colorKey)) {\n          const pickedObject = decodePickingColor(pickedColor);\n\n          if (pickedObject) {\n            uniqueColors.set(colorKey, { ...pickedObject,\n              color: pickedColor\n            });\n          } else {\n            log.error('Picked non-existent layer. Is picking buffer corrupt?')();\n          }\n        }\n      }\n    }\n  }\n\n  return Array.from(uniqueColors.values());\n}\n//# sourceMappingURL=query-object.js.map","export function getEmptyPickingInfo({\n  pickInfo,\n  viewports,\n  pixelRatio,\n  x,\n  y,\n  z\n}) {\n  let pickedViewport = viewports[0];\n\n  if (viewports.length > 1) {\n    pickedViewport = getViewportFromCoordinates((pickInfo === null || pickInfo === void 0 ? void 0 : pickInfo.pickedViewports) || viewports, {\n      x,\n      y\n    });\n  }\n\n  let coordinate;\n\n  if (pickedViewport) {\n    const point = [x - pickedViewport.x, y - pickedViewport.y];\n\n    if (z !== undefined) {\n      point[2] = z;\n    }\n\n    coordinate = pickedViewport.unproject(point);\n  }\n\n  return {\n    color: null,\n    layer: null,\n    viewport: pickedViewport,\n    index: -1,\n    picked: false,\n    x,\n    y,\n    pixel: [x, y],\n    coordinate,\n    devicePixel: pickInfo && 'pickedX' in pickInfo ? [pickInfo.pickedX, pickInfo.pickedY] : undefined,\n    pixelRatio\n  };\n}\nexport function processPickInfo(opts) {\n  const {\n    pickInfo,\n    lastPickedInfo,\n    mode,\n    layers\n  } = opts;\n  const {\n    pickedColor,\n    pickedLayer,\n    pickedObjectIndex\n  } = pickInfo;\n  const affectedLayers = pickedLayer ? [pickedLayer] : [];\n\n  if (mode === 'hover') {\n    const lastPickedPixelIndex = lastPickedInfo.index;\n    const lastPickedLayerId = lastPickedInfo.layerId;\n    const pickedLayerId = pickedLayer ? pickedLayer.props.id : null;\n\n    if (pickedLayerId !== lastPickedLayerId || pickedObjectIndex !== lastPickedPixelIndex) {\n      if (pickedLayerId !== lastPickedLayerId) {\n        const lastPickedLayer = layers.find(layer => layer.props.id === lastPickedLayerId);\n\n        if (lastPickedLayer) {\n          affectedLayers.unshift(lastPickedLayer);\n        }\n      }\n\n      lastPickedInfo.layerId = pickedLayerId;\n      lastPickedInfo.index = pickedObjectIndex;\n      lastPickedInfo.info = null;\n    }\n  }\n\n  const baseInfo = getEmptyPickingInfo(opts);\n  const infos = new Map();\n  infos.set(null, baseInfo);\n  affectedLayers.forEach(layer => {\n    let info = { ...baseInfo\n    };\n\n    if (layer === pickedLayer) {\n      info.color = pickedColor;\n      info.index = pickedObjectIndex;\n      info.picked = true;\n    }\n\n    info = getLayerPickingInfo({\n      layer,\n      info,\n      mode\n    });\n    const rootLayer = info.layer;\n\n    if (layer === pickedLayer && mode === 'hover') {\n      lastPickedInfo.info = info;\n    }\n\n    infos.set(rootLayer.id, info);\n\n    if (mode === 'hover') {\n      rootLayer.updateAutoHighlight(info);\n    }\n  });\n  return infos;\n}\nexport function getLayerPickingInfo({\n  layer,\n  info,\n  mode\n}) {\n  while (layer && info) {\n    const sourceLayer = info.layer || null;\n    info.sourceLayer = sourceLayer;\n    info.layer = layer;\n    info = layer.getPickingInfo({\n      info,\n      mode,\n      sourceLayer\n    });\n    layer = layer.parent;\n  }\n\n  return info;\n}\n\nfunction getViewportFromCoordinates(viewports, pixel) {\n  for (let i = viewports.length - 1; i >= 0; i--) {\n    const viewport = viewports[i];\n\n    if (viewport.containsPixel(pixel)) {\n      return viewport;\n    }\n  }\n\n  return viewports[0];\n}\n//# sourceMappingURL=pick-info.js.map","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Framebuffer, Texture2D, isWebGL2, readPixelsToArray, cssToDeviceRatio, cssToDevicePixels } from '@luma.gl/core';\nimport PickLayersPass from '../passes/pick-layers-pass';\nimport { getClosestObject, getUniqueObjects } from './picking/query-object';\nimport { processPickInfo, getLayerPickingInfo, getEmptyPickingInfo } from './picking/pick-info';\nexport default class DeckPicker {\n  constructor(gl) {\n    _defineProperty(this, \"gl\", void 0);\n\n    _defineProperty(this, \"pickingFBO\", void 0);\n\n    _defineProperty(this, \"depthFBO\", void 0);\n\n    _defineProperty(this, \"pickLayersPass\", void 0);\n\n    _defineProperty(this, \"layerFilter\", void 0);\n\n    _defineProperty(this, \"lastPickedInfo\", void 0);\n\n    _defineProperty(this, \"_pickable\", true);\n\n    this.gl = gl;\n    this.pickLayersPass = new PickLayersPass(gl);\n    this.lastPickedInfo = {\n      index: -1,\n      layerId: null,\n      info: null\n    };\n  }\n\n  setProps(props) {\n    if ('layerFilter' in props) {\n      this.layerFilter = props.layerFilter;\n    }\n\n    if ('_pickable' in props) {\n      this._pickable = props._pickable;\n    }\n  }\n\n  finalize() {\n    if (this.pickingFBO) {\n      this.pickingFBO.delete();\n    }\n\n    if (this.depthFBO) {\n      this.depthFBO.color.delete();\n      this.depthFBO.delete();\n    }\n  }\n\n  pickObject(opts) {\n    return this._pickClosestObject(opts);\n  }\n\n  pickObjects(opts) {\n    return this._pickVisibleObjects(opts);\n  }\n\n  getLastPickedObject({\n    x,\n    y,\n    layers,\n    viewports\n  }, lastPickedInfo = this.lastPickedInfo.info) {\n    const lastPickedLayerId = lastPickedInfo && lastPickedInfo.layer && lastPickedInfo.layer.id;\n    const lastPickedViewportId = lastPickedInfo && lastPickedInfo.viewport && lastPickedInfo.viewport.id;\n    const layer = lastPickedLayerId ? layers.find(l => l.id === lastPickedLayerId) : null;\n    const viewport = lastPickedViewportId && viewports.find(v => v.id === lastPickedViewportId) || viewports[0];\n    const coordinate = viewport && viewport.unproject([x - viewport.x, y - viewport.y]);\n    const info = {\n      x,\n      y,\n      viewport,\n      coordinate,\n      layer\n    };\n    return { ...lastPickedInfo,\n      ...info\n    };\n  }\n\n  _resizeBuffer() {\n    var _this$pickingFBO, _this$depthFBO;\n\n    const {\n      gl\n    } = this;\n\n    if (!this.pickingFBO) {\n      this.pickingFBO = new Framebuffer(gl);\n\n      if (Framebuffer.isSupported(gl, {\n        colorBufferFloat: true\n      })) {\n        const depthFBO = new Framebuffer(gl);\n        depthFBO.attach({\n          [36064]: new Texture2D(gl, {\n            format: isWebGL2(gl) ? 34836 : 6408,\n            type: 5126\n          })\n        });\n        this.depthFBO = depthFBO;\n      }\n    }\n\n    (_this$pickingFBO = this.pickingFBO) === null || _this$pickingFBO === void 0 ? void 0 : _this$pickingFBO.resize({\n      width: gl.canvas.width,\n      height: gl.canvas.height\n    });\n    (_this$depthFBO = this.depthFBO) === null || _this$depthFBO === void 0 ? void 0 : _this$depthFBO.resize({\n      width: gl.canvas.width,\n      height: gl.canvas.height\n    });\n  }\n\n  _getPickable(layers) {\n    if (this._pickable === false) {\n      return null;\n    }\n\n    const pickableLayers = layers.filter(layer => this.pickLayersPass.shouldDrawLayer(layer) && !layer.isComposite);\n    return pickableLayers.length ? pickableLayers : null;\n  }\n\n  _pickClosestObject({\n    layers,\n    views,\n    viewports,\n    x,\n    y,\n    radius = 0,\n    depth = 1,\n    mode = 'query',\n    unproject3D,\n    onViewportActive,\n    effects\n  }) {\n    const pickableLayers = this._getPickable(layers);\n\n    const pixelRatio = cssToDeviceRatio(this.gl);\n\n    if (!pickableLayers) {\n      return {\n        result: [],\n        emptyInfo: getEmptyPickingInfo({\n          viewports,\n          x,\n          y,\n          pixelRatio\n        })\n      };\n    }\n\n    this._resizeBuffer();\n\n    const devicePixelRange = cssToDevicePixels(this.gl, [x, y], true);\n    const devicePixel = [devicePixelRange.x + Math.floor(devicePixelRange.width / 2), devicePixelRange.y + Math.floor(devicePixelRange.height / 2)];\n    const deviceRadius = Math.round(radius * pixelRatio);\n    const {\n      width,\n      height\n    } = this.pickingFBO;\n\n    const deviceRect = this._getPickingRect({\n      deviceX: devicePixel[0],\n      deviceY: devicePixel[1],\n      deviceRadius,\n      deviceWidth: width,\n      deviceHeight: height\n    });\n\n    const cullRect = {\n      x: x - radius,\n      y: y - radius,\n      width: radius * 2 + 1,\n      height: radius * 2 + 1\n    };\n    let infos;\n    const result = [];\n    const affectedLayers = new Set();\n\n    for (let i = 0; i < depth; i++) {\n      let pickInfo;\n\n      if (deviceRect) {\n        const pickedResult = this._drawAndSample({\n          layers: pickableLayers,\n          views,\n          viewports,\n          onViewportActive,\n          deviceRect,\n          cullRect,\n          effects,\n          pass: \"picking:\".concat(mode)\n        });\n\n        pickInfo = getClosestObject({ ...pickedResult,\n          deviceX: devicePixel[0],\n          deviceY: devicePixel[1],\n          deviceRadius,\n          deviceRect\n        });\n      } else {\n        pickInfo = {\n          pickedColor: null,\n          pickedObjectIndex: -1\n        };\n      }\n\n      let z;\n\n      if (pickInfo.pickedLayer && unproject3D && this.depthFBO) {\n        const {\n          pickedColors: pickedColors2\n        } = this._drawAndSample({\n          layers: [pickInfo.pickedLayer],\n          views,\n          viewports,\n          onViewportActive,\n          deviceRect: {\n            x: pickInfo.pickedX,\n            y: pickInfo.pickedY,\n            width: 1,\n            height: 1\n          },\n          cullRect,\n          effects,\n          pass: \"picking:\".concat(mode, \":z\")\n        }, true);\n\n        if (pickedColors2[3]) {\n          z = pickedColors2[0];\n        }\n      }\n\n      if (pickInfo.pickedLayer && i + 1 < depth) {\n        affectedLayers.add(pickInfo.pickedLayer);\n        pickInfo.pickedLayer.disablePickingIndex(pickInfo.pickedObjectIndex);\n      }\n\n      infos = processPickInfo({\n        pickInfo,\n        lastPickedInfo: this.lastPickedInfo,\n        mode,\n        layers: pickableLayers,\n        viewports,\n        x,\n        y,\n        z,\n        pixelRatio\n      });\n\n      for (const info of infos.values()) {\n        if (info.layer) {\n          result.push(info);\n        }\n      }\n\n      if (!pickInfo.pickedColor) {\n        break;\n      }\n    }\n\n    for (const layer of affectedLayers) {\n      layer.restorePickingColors();\n    }\n\n    return {\n      result,\n      emptyInfo: infos.get(null)\n    };\n  }\n\n  _pickVisibleObjects({\n    layers,\n    views,\n    viewports,\n    x,\n    y,\n    width = 1,\n    height = 1,\n    mode = 'query',\n    maxObjects = null,\n    onViewportActive,\n    effects\n  }) {\n    const pickableLayers = this._getPickable(layers);\n\n    if (!pickableLayers) {\n      return [];\n    }\n\n    this._resizeBuffer();\n\n    const pixelRatio = cssToDeviceRatio(this.gl);\n    const leftTop = cssToDevicePixels(this.gl, [x, y], true);\n    const deviceLeft = leftTop.x;\n    const deviceTop = leftTop.y + leftTop.height;\n    const rightBottom = cssToDevicePixels(this.gl, [x + width, y + height], true);\n    const deviceRight = rightBottom.x + rightBottom.width;\n    const deviceBottom = rightBottom.y;\n    const deviceRect = {\n      x: deviceLeft,\n      y: deviceBottom,\n      width: deviceRight - deviceLeft,\n      height: deviceTop - deviceBottom\n    };\n\n    const pickedResult = this._drawAndSample({\n      layers: pickableLayers,\n      views,\n      viewports,\n      onViewportActive,\n      deviceRect,\n      cullRect: {\n        x,\n        y,\n        width,\n        height\n      },\n      effects,\n      pass: \"picking:\".concat(mode)\n    });\n\n    const pickInfos = getUniqueObjects(pickedResult);\n    const uniqueInfos = new Map();\n    const isMaxObjects = Number.isFinite(maxObjects);\n\n    for (let i = 0; i < pickInfos.length; i++) {\n      var _info$object;\n\n      if (isMaxObjects && maxObjects && uniqueInfos.size >= maxObjects) {\n        break;\n      }\n\n      const pickInfo = pickInfos[i];\n      let info = {\n        color: pickInfo.pickedColor,\n        layer: null,\n        index: pickInfo.pickedObjectIndex,\n        picked: true,\n        x,\n        y,\n        pixelRatio\n      };\n      info = getLayerPickingInfo({\n        layer: pickInfo.pickedLayer,\n        info,\n        mode\n      });\n      const pickedObjectKey = (_info$object = info.object) !== null && _info$object !== void 0 ? _info$object : \"\".concat(info.layer.id, \"[\").concat(info.index, \"]\");\n\n      if (!uniqueInfos.has(pickedObjectKey)) {\n        uniqueInfos.set(pickedObjectKey, info);\n      }\n    }\n\n    return Array.from(uniqueInfos.values());\n  }\n\n  _drawAndSample({\n    layers,\n    views,\n    viewports,\n    onViewportActive,\n    deviceRect,\n    cullRect,\n    effects,\n    pass\n  }, pickZ = false) {\n    const pickingFBO = pickZ ? this.depthFBO : this.pickingFBO;\n    const opts = {\n      layers,\n      layerFilter: this.layerFilter,\n      views,\n      viewports,\n      onViewportActive,\n      pickingFBO,\n      deviceRect,\n      cullRect,\n      effects,\n      pass,\n      pickZ,\n      preRenderStats: {}\n    };\n\n    for (const effect of effects) {\n      if (effect.useInPicking) {\n        opts.preRenderStats[effect.id] = effect.preRender(this.gl, opts);\n      }\n    }\n\n    const {\n      decodePickingColor\n    } = this.pickLayersPass.render(opts);\n    const {\n      x,\n      y,\n      width,\n      height\n    } = deviceRect;\n    const pickedColors = new (pickZ ? Float32Array : Uint8Array)(width * height * 4);\n    readPixelsToArray(pickingFBO, {\n      sourceX: x,\n      sourceY: y,\n      sourceWidth: width,\n      sourceHeight: height,\n      target: pickedColors\n    });\n    return {\n      pickedColors,\n      decodePickingColor\n    };\n  }\n\n  _getPickingRect({\n    deviceX,\n    deviceY,\n    deviceRadius,\n    deviceWidth,\n    deviceHeight\n  }) {\n    const x = Math.max(0, deviceX - deviceRadius);\n    const y = Math.max(0, deviceY - deviceRadius);\n    const width = Math.min(deviceWidth, deviceX + deviceRadius + 1) - x;\n    const height = Math.min(deviceHeight, deviceY + deviceRadius + 1) - y;\n\n    if (width <= 0 || height <= 0) {\n      return null;\n    }\n\n    return {\n      x,\n      y,\n      width,\n      height\n    };\n  }\n\n}\n//# sourceMappingURL=deck-picker.js.map","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nconst defaultStyle = {\n  zIndex: '1',\n  position: 'absolute',\n  pointerEvents: 'none',\n  color: '#a0a7b4',\n  backgroundColor: '#29323c',\n  padding: '10px',\n  top: '0',\n  left: '0',\n  display: 'none'\n};\nexport default class Tooltip {\n  constructor(canvas) {\n    _defineProperty(this, \"el\", null);\n\n    _defineProperty(this, \"isVisible\", false);\n\n    const canvasParent = canvas.parentElement;\n\n    if (canvasParent) {\n      this.el = document.createElement('div');\n      this.el.className = 'deck-tooltip';\n      Object.assign(this.el.style, defaultStyle);\n      canvasParent.appendChild(this.el);\n    }\n  }\n\n  setTooltip(displayInfo, x, y) {\n    const el = this.el;\n\n    if (!el) {\n      return;\n    }\n\n    if (typeof displayInfo === 'string') {\n      el.innerText = displayInfo;\n    } else if (!displayInfo) {\n      this.isVisible = false;\n      el.style.display = 'none';\n      return;\n    } else {\n      if (displayInfo.text) {\n        el.innerText = displayInfo.text;\n      }\n\n      if (displayInfo.html) {\n        el.innerHTML = displayInfo.html;\n      }\n\n      if (displayInfo.className) {\n        el.className = displayInfo.className;\n      }\n    }\n\n    this.isVisible = true;\n    el.style.display = 'block';\n    el.style.transform = \"translate(\".concat(x, \"px, \").concat(y, \"px)\");\n\n    if (displayInfo && typeof displayInfo === 'object' && 'style' in displayInfo) {\n      Object.assign(el.style, displayInfo.style);\n    }\n  }\n\n  remove() {\n    if (this.el) {\n      this.el.remove();\n      this.el = null;\n    }\n  }\n\n}\n//# sourceMappingURL=tooltip.js.map","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport LayerManager from './layer-manager';\nimport ViewManager from './view-manager';\nimport MapView from '../views/map-view';\nimport EffectManager from './effect-manager';\nimport DeckRenderer from './deck-renderer';\nimport DeckPicker from './deck-picker';\nimport Tooltip from './tooltip';\nimport log from '../utils/log';\nimport { deepEqual } from '../utils/deep-equal';\nimport typedArrayManager from '../utils/typed-array-manager';\nimport { VERSION } from './init';\nimport { getBrowser } from '@probe.gl/env';\nimport { AnimationLoop, createGLContext, instrumentGLContext, setParameters, Timeline, lumaStats } from '@luma.gl/core';\nimport { Stats } from '@probe.gl/stats';\nimport { EventManager } from 'mjolnir.js';\nimport assert from '../utils/assert';\nimport { EVENTS } from './constants';\n\nfunction noop() {}\n\nconst getCursor = ({\n  isDragging\n}) => isDragging ? 'grabbing' : 'grab';\n\nconst defaultProps = {\n  id: '',\n  width: '100%',\n  height: '100%',\n  style: null,\n  viewState: null,\n  initialViewState: null,\n  pickingRadius: 0,\n  layerFilter: null,\n  glOptions: {},\n  parameters: {},\n  parent: null,\n  gl: null,\n  canvas: null,\n  layers: [],\n  effects: [],\n  views: null,\n  controller: null,\n  useDevicePixels: true,\n  touchAction: 'none',\n  eventRecognizerOptions: {},\n  _framebuffer: null,\n  _animate: false,\n  _pickable: true,\n  _typedArrayManagerProps: {},\n  _customRender: null,\n  onWebGLInitialized: noop,\n  onResize: noop,\n  onViewStateChange: noop,\n  onInteractionStateChange: noop,\n  onBeforeRender: noop,\n  onAfterRender: noop,\n  onLoad: noop,\n  onError: error => log.error(error.message, error.cause)(),\n  onHover: null,\n  onClick: null,\n  onDragStart: null,\n  onDrag: null,\n  onDragEnd: null,\n  _onMetrics: null,\n  getCursor,\n  getTooltip: null,\n  debug: false,\n  drawPickingColors: false\n};\nexport default class Deck {\n  constructor(props) {\n    _defineProperty(this, \"props\", void 0);\n\n    _defineProperty(this, \"width\", 0);\n\n    _defineProperty(this, \"height\", 0);\n\n    _defineProperty(this, \"userData\", {});\n\n    _defineProperty(this, \"canvas\", null);\n\n    _defineProperty(this, \"viewManager\", null);\n\n    _defineProperty(this, \"layerManager\", null);\n\n    _defineProperty(this, \"effectManager\", null);\n\n    _defineProperty(this, \"deckRenderer\", null);\n\n    _defineProperty(this, \"deckPicker\", null);\n\n    _defineProperty(this, \"eventManager\", null);\n\n    _defineProperty(this, \"tooltip\", null);\n\n    _defineProperty(this, \"metrics\", void 0);\n\n    _defineProperty(this, \"animationLoop\", void 0);\n\n    _defineProperty(this, \"stats\", void 0);\n\n    _defineProperty(this, \"viewState\", void 0);\n\n    _defineProperty(this, \"cursorState\", void 0);\n\n    _defineProperty(this, \"_needsRedraw\", void 0);\n\n    _defineProperty(this, \"_pickRequest\", void 0);\n\n    _defineProperty(this, \"_lastPointerDownInfo\", null);\n\n    _defineProperty(this, \"_metricsCounter\", void 0);\n\n    _defineProperty(this, \"_onPointerMove\", event => {\n      const {\n        _pickRequest\n      } = this;\n\n      if (event.type === 'pointerleave') {\n        _pickRequest.x = -1;\n        _pickRequest.y = -1;\n        _pickRequest.radius = 0;\n      } else if (event.leftButton || event.rightButton) {\n        return;\n      } else {\n        const pos = event.offsetCenter;\n\n        if (!pos) {\n          return;\n        }\n\n        _pickRequest.x = pos.x;\n        _pickRequest.y = pos.y;\n        _pickRequest.radius = this.props.pickingRadius;\n      }\n\n      if (this.layerManager) {\n        this.layerManager.context.mousePosition = {\n          x: _pickRequest.x,\n          y: _pickRequest.y\n        };\n      }\n\n      _pickRequest.event = event;\n    });\n\n    _defineProperty(this, \"_onEvent\", event => {\n      const eventOptions = EVENTS[event.type];\n      const pos = event.offsetCenter;\n\n      if (!eventOptions || !pos || !this.layerManager) {\n        return;\n      }\n\n      const layers = this.layerManager.getLayers();\n      const info = this.deckPicker.getLastPickedObject({\n        x: pos.x,\n        y: pos.y,\n        layers,\n        viewports: this.getViewports(pos)\n      }, this._lastPointerDownInfo);\n      const {\n        layer\n      } = info;\n      const layerHandler = layer && (layer[eventOptions.handler] || layer.props[eventOptions.handler]);\n      const rootHandler = this.props[eventOptions.handler];\n      let handled = false;\n\n      if (layerHandler) {\n        handled = layerHandler.call(layer, info, event);\n      }\n\n      if (!handled && rootHandler) {\n        rootHandler(info, event);\n      }\n    });\n\n    _defineProperty(this, \"_onPointerDown\", event => {\n      const pos = event.offsetCenter;\n\n      const pickedInfo = this._pick('pickObject', 'pickObject Time', {\n        x: pos.x,\n        y: pos.y,\n        radius: this.props.pickingRadius\n      });\n\n      this._lastPointerDownInfo = pickedInfo.result[0] || pickedInfo.emptyInfo;\n    });\n\n    this.props = { ...defaultProps,\n      ...props\n    };\n    props = this.props;\n    this._needsRedraw = 'Initial render';\n    this._pickRequest = {\n      mode: 'hover',\n      x: -1,\n      y: -1,\n      radius: 0,\n      event: null\n    };\n    this.cursorState = {\n      isHovering: false,\n      isDragging: false\n    };\n\n    if (props.viewState && props.initialViewState) {\n      log.warn('View state tracking is disabled. Use either `initialViewState` for auto update or `viewState` for manual update.')();\n    }\n\n    if (getBrowser() === 'IE') {\n      log.warn('IE 11 is not supported')();\n    }\n\n    this.viewState = props.initialViewState;\n\n    if (!props.gl) {\n      if (typeof document !== 'undefined') {\n        this.canvas = this._createCanvas(props);\n      }\n    }\n\n    this.animationLoop = this._createAnimationLoop(props);\n    this.stats = new Stats({\n      id: 'deck.gl'\n    });\n    this.metrics = {\n      fps: 0,\n      setPropsTime: 0,\n      updateAttributesTime: 0,\n      framesRedrawn: 0,\n      pickTime: 0,\n      pickCount: 0,\n      gpuTime: 0,\n      gpuTimePerFrame: 0,\n      cpuTime: 0,\n      cpuTimePerFrame: 0,\n      bufferMemory: 0,\n      textureMemory: 0,\n      renderbufferMemory: 0,\n      gpuMemory: 0\n    };\n    this._metricsCounter = 0;\n    this.setProps(props);\n\n    if (props._typedArrayManagerProps) {\n      typedArrayManager.setOptions(props._typedArrayManagerProps);\n    }\n\n    this.animationLoop.start();\n  }\n\n  finalize() {\n    var _this$animationLoop, _this$layerManager, _this$viewManager, _this$effectManager, _this$deckRenderer, _this$deckPicker, _this$eventManager, _this$tooltip;\n\n    (_this$animationLoop = this.animationLoop) === null || _this$animationLoop === void 0 ? void 0 : _this$animationLoop.stop();\n    this.animationLoop = null;\n    this._lastPointerDownInfo = null;\n    (_this$layerManager = this.layerManager) === null || _this$layerManager === void 0 ? void 0 : _this$layerManager.finalize();\n    this.layerManager = null;\n    (_this$viewManager = this.viewManager) === null || _this$viewManager === void 0 ? void 0 : _this$viewManager.finalize();\n    this.viewManager = null;\n    (_this$effectManager = this.effectManager) === null || _this$effectManager === void 0 ? void 0 : _this$effectManager.finalize();\n    this.effectManager = null;\n    (_this$deckRenderer = this.deckRenderer) === null || _this$deckRenderer === void 0 ? void 0 : _this$deckRenderer.finalize();\n    this.deckRenderer = null;\n    (_this$deckPicker = this.deckPicker) === null || _this$deckPicker === void 0 ? void 0 : _this$deckPicker.finalize();\n    this.deckPicker = null;\n    (_this$eventManager = this.eventManager) === null || _this$eventManager === void 0 ? void 0 : _this$eventManager.destroy();\n    this.eventManager = null;\n    (_this$tooltip = this.tooltip) === null || _this$tooltip === void 0 ? void 0 : _this$tooltip.remove();\n    this.tooltip = null;\n\n    if (!this.props.canvas && !this.props.gl && this.canvas) {\n      var _this$canvas$parentEl;\n\n      (_this$canvas$parentEl = this.canvas.parentElement) === null || _this$canvas$parentEl === void 0 ? void 0 : _this$canvas$parentEl.removeChild(this.canvas);\n      this.canvas = null;\n    }\n  }\n\n  setProps(props) {\n    this.stats.get('setProps Time').timeStart();\n\n    if ('onLayerHover' in props) {\n      log.removed('onLayerHover', 'onHover')();\n    }\n\n    if ('onLayerClick' in props) {\n      log.removed('onLayerClick', 'onClick')();\n    }\n\n    if (props.initialViewState && !deepEqual(this.props.initialViewState, props.initialViewState, 3)) {\n      this.viewState = props.initialViewState;\n    }\n\n    Object.assign(this.props, props);\n\n    this._setCanvasSize(this.props);\n\n    const resolvedProps = Object.create(this.props);\n    Object.assign(resolvedProps, {\n      views: this._getViews(),\n      width: this.width,\n      height: this.height,\n      viewState: this._getViewState()\n    });\n    this.animationLoop.setProps(resolvedProps);\n\n    if (this.layerManager) {\n      this.viewManager.setProps(resolvedProps);\n      this.layerManager.activateViewport(this.getViewports()[0]);\n      this.layerManager.setProps(resolvedProps);\n      this.effectManager.setProps(resolvedProps);\n      this.deckRenderer.setProps(resolvedProps);\n      this.deckPicker.setProps(resolvedProps);\n    }\n\n    this.stats.get('setProps Time').timeEnd();\n  }\n\n  needsRedraw(opts = {\n    clearRedrawFlags: false\n  }) {\n    if (!this.layerManager) {\n      return false;\n    }\n\n    if (this.props._animate) {\n      return 'Deck._animate';\n    }\n\n    let redraw = this._needsRedraw;\n\n    if (opts.clearRedrawFlags) {\n      this._needsRedraw = false;\n    }\n\n    const viewManagerNeedsRedraw = this.viewManager.needsRedraw(opts);\n    const layerManagerNeedsRedraw = this.layerManager.needsRedraw(opts);\n    const effectManagerNeedsRedraw = this.effectManager.needsRedraw(opts);\n    const deckRendererNeedsRedraw = this.deckRenderer.needsRedraw(opts);\n    redraw = redraw || viewManagerNeedsRedraw || layerManagerNeedsRedraw || effectManagerNeedsRedraw || deckRendererNeedsRedraw;\n    return redraw;\n  }\n\n  redraw(reason) {\n    if (!this.layerManager) {\n      return;\n    }\n\n    let redrawReason = this.needsRedraw({\n      clearRedrawFlags: true\n    });\n    redrawReason = reason || redrawReason;\n\n    if (!redrawReason) {\n      return;\n    }\n\n    this.stats.get('Redraw Count').incrementCount();\n\n    if (this.props._customRender) {\n      this.props._customRender(redrawReason);\n    } else {\n      this._drawLayers(redrawReason);\n    }\n  }\n\n  get isInitialized() {\n    return this.viewManager !== null;\n  }\n\n  getViews() {\n    assert(this.viewManager);\n    return this.viewManager.views;\n  }\n\n  getViewports(rect) {\n    assert(this.viewManager);\n    return this.viewManager.getViewports(rect);\n  }\n\n  getCanvas() {\n    return this.canvas;\n  }\n\n  pickObject(opts) {\n    const infos = this._pick('pickObject', 'pickObject Time', opts).result;\n\n    return infos.length ? infos[0] : null;\n  }\n\n  pickMultipleObjects(opts) {\n    opts.depth = opts.depth || 10;\n    return this._pick('pickObject', 'pickMultipleObjects Time', opts).result;\n  }\n\n  pickObjects(opts) {\n    return this._pick('pickObjects', 'pickObjects Time', opts);\n  }\n\n  _addResources(resources, forceUpdate = false) {\n    for (const id in resources) {\n      this.layerManager.resourceManager.add({\n        resourceId: id,\n        data: resources[id],\n        forceUpdate\n      });\n    }\n  }\n\n  _removeResources(resourceIds) {\n    for (const id of resourceIds) {\n      this.layerManager.resourceManager.remove(id);\n    }\n  }\n\n  _addDefaultEffect(effect) {\n    this.effectManager.addDefaultEffect(effect);\n  }\n\n  _pick(method, statKey, opts) {\n    assert(this.deckPicker);\n    const {\n      stats\n    } = this;\n    stats.get('Pick Count').incrementCount();\n    stats.get(statKey).timeStart();\n    const infos = this.deckPicker[method]({\n      layers: this.layerManager.getLayers(opts),\n      views: this.viewManager.getViews(),\n      viewports: this.getViewports(opts),\n      onViewportActive: this.layerManager.activateViewport,\n      effects: this.effectManager.getEffects(),\n      ...opts\n    });\n    stats.get(statKey).timeEnd();\n    return infos;\n  }\n\n  _createCanvas(props) {\n    let canvas = props.canvas;\n\n    if (typeof canvas === 'string') {\n      canvas = document.getElementById(canvas);\n      assert(canvas);\n    }\n\n    if (!canvas) {\n      canvas = document.createElement('canvas');\n      canvas.id = props.id || 'deckgl-overlay';\n      const parent = props.parent || document.body;\n      parent.appendChild(canvas);\n    }\n\n    Object.assign(canvas.style, props.style);\n    return canvas;\n  }\n\n  _setCanvasSize(props) {\n    if (!this.canvas) {\n      return;\n    }\n\n    const {\n      width,\n      height\n    } = props;\n\n    if (width || width === 0) {\n      const cssWidth = Number.isFinite(width) ? \"\".concat(width, \"px\") : width;\n      this.canvas.style.width = cssWidth;\n    }\n\n    if (height || height === 0) {\n      var _props$style;\n\n      const cssHeight = Number.isFinite(height) ? \"\".concat(height, \"px\") : height;\n      this.canvas.style.position = ((_props$style = props.style) === null || _props$style === void 0 ? void 0 : _props$style.position) || 'absolute';\n      this.canvas.style.height = cssHeight;\n    }\n  }\n\n  _updateCanvasSize() {\n    var _canvas$clientWidth, _canvas$clientHeight;\n\n    const {\n      canvas\n    } = this;\n\n    if (!canvas) {\n      return;\n    }\n\n    const newWidth = (_canvas$clientWidth = canvas.clientWidth) !== null && _canvas$clientWidth !== void 0 ? _canvas$clientWidth : canvas.width;\n    const newHeight = (_canvas$clientHeight = canvas.clientHeight) !== null && _canvas$clientHeight !== void 0 ? _canvas$clientHeight : canvas.height;\n\n    if (newWidth !== this.width || newHeight !== this.height) {\n      var _this$viewManager2, _this$layerManager2;\n\n      this.width = newWidth;\n      this.height = newHeight;\n      (_this$viewManager2 = this.viewManager) === null || _this$viewManager2 === void 0 ? void 0 : _this$viewManager2.setProps({\n        width: newWidth,\n        height: newHeight\n      });\n      (_this$layerManager2 = this.layerManager) === null || _this$layerManager2 === void 0 ? void 0 : _this$layerManager2.activateViewport(this.getViewports()[0]);\n      this.props.onResize({\n        width: newWidth,\n        height: newHeight\n      });\n    }\n  }\n\n  _createAnimationLoop(props) {\n    const {\n      width,\n      height,\n      gl,\n      glOptions,\n      debug,\n      onError,\n      onBeforeRender,\n      onAfterRender,\n      useDevicePixels\n    } = props;\n    return new AnimationLoop({\n      width,\n      height,\n      useDevicePixels,\n      autoResizeDrawingBuffer: !gl,\n      autoResizeViewport: false,\n      gl,\n      onCreateContext: opts => createGLContext({ ...glOptions,\n        ...opts,\n        canvas: this.canvas,\n        debug,\n        onContextLost: () => this._onContextLost()\n      }),\n      onInitialize: context => this._setGLContext(context.gl),\n      onRender: this._onRenderFrame.bind(this),\n      onBeforeRender,\n      onAfterRender,\n      onError\n    });\n  }\n\n  _getViewState() {\n    return this.props.viewState || this.viewState;\n  }\n\n  _getViews() {\n    let views = this.props.views || [new MapView({\n      id: 'default-view'\n    })];\n    views = Array.isArray(views) ? views : [views];\n\n    if (views.length && this.props.controller) {\n      views[0].props.controller = this.props.controller;\n    }\n\n    return views;\n  }\n\n  _onContextLost() {\n    const {\n      onError\n    } = this.props;\n\n    if (this.animationLoop && onError) {\n      onError(new Error('WebGL context is lost'));\n    }\n  }\n\n  _pickAndCallback() {\n    const {\n      _pickRequest\n    } = this;\n\n    if (_pickRequest.event) {\n      const {\n        result,\n        emptyInfo\n      } = this._pick('pickObject', 'pickObject Time', _pickRequest);\n\n      this.cursorState.isHovering = result.length > 0;\n      let pickedInfo = emptyInfo;\n      let handled = false;\n\n      for (const info of result) {\n        var _info$layer;\n\n        pickedInfo = info;\n        handled = ((_info$layer = info.layer) === null || _info$layer === void 0 ? void 0 : _info$layer.onHover(info, _pickRequest.event)) || handled;\n      }\n\n      if (!handled && this.props.onHover) {\n        this.props.onHover(pickedInfo, _pickRequest.event);\n      }\n\n      if (this.props.getTooltip && this.tooltip) {\n        const displayInfo = this.props.getTooltip(pickedInfo);\n        this.tooltip.setTooltip(displayInfo, pickedInfo.x, pickedInfo.y);\n      }\n\n      _pickRequest.event = null;\n    }\n  }\n\n  _updateCursor() {\n    const container = this.props.parent || this.canvas;\n\n    if (container) {\n      container.style.cursor = this.props.getCursor(this.cursorState);\n    }\n  }\n\n  _setGLContext(gl) {\n    if (this.layerManager) {\n      return;\n    }\n\n    if (!this.canvas) {\n      this.canvas = gl.canvas;\n      instrumentGLContext(gl, {\n        enable: true,\n        copyState: true\n      });\n    }\n\n    this.tooltip = new Tooltip(this.canvas);\n    setParameters(gl, {\n      blend: true,\n      blendFunc: [770, 771, 1, 771],\n      polygonOffsetFill: true,\n      depthTest: true,\n      depthFunc: 515\n    });\n    this.props.onWebGLInitialized(gl);\n    const timeline = new Timeline();\n    timeline.play();\n    this.animationLoop.attachTimeline(timeline);\n    this.eventManager = new EventManager(this.props.parent || gl.canvas, {\n      touchAction: this.props.touchAction,\n      recognizerOptions: this.props.eventRecognizerOptions,\n      events: {\n        pointerdown: this._onPointerDown,\n        pointermove: this._onPointerMove,\n        pointerleave: this._onPointerMove\n      }\n    });\n\n    for (const eventType in EVENTS) {\n      this.eventManager.on(eventType, this._onEvent);\n    }\n\n    this.viewManager = new ViewManager({\n      timeline,\n      eventManager: this.eventManager,\n      onViewStateChange: this._onViewStateChange.bind(this),\n      onInteractionStateChange: this._onInteractionStateChange.bind(this),\n      views: this._getViews(),\n      viewState: this._getViewState(),\n      width: this.width,\n      height: this.height\n    });\n    const viewport = this.viewManager.getViewports()[0];\n    this.layerManager = new LayerManager(gl, {\n      deck: this,\n      stats: this.stats,\n      viewport,\n      timeline\n    });\n    this.effectManager = new EffectManager();\n    this.deckRenderer = new DeckRenderer(gl);\n    this.deckPicker = new DeckPicker(gl);\n    this.setProps(this.props);\n\n    this._updateCanvasSize();\n\n    this.props.onLoad();\n  }\n\n  _drawLayers(redrawReason, renderOptions) {\n    const {\n      gl\n    } = this.layerManager.context;\n    setParameters(gl, this.props.parameters);\n    this.props.onBeforeRender({\n      gl\n    });\n    this.deckRenderer.renderLayers({\n      target: this.props._framebuffer,\n      layers: this.layerManager.getLayers(),\n      viewports: this.viewManager.getViewports(),\n      onViewportActive: this.layerManager.activateViewport,\n      views: this.viewManager.getViews(),\n      pass: 'screen',\n      effects: this.effectManager.getEffects(),\n      ...renderOptions\n    });\n    this.props.onAfterRender({\n      gl\n    });\n  }\n\n  _onRenderFrame(animationProps) {\n    this._getFrameStats();\n\n    if (this._metricsCounter++ % 60 === 0) {\n      this._getMetrics();\n\n      this.stats.reset();\n      log.table(4, this.metrics)();\n\n      if (this.props._onMetrics) {\n        this.props._onMetrics(this.metrics);\n      }\n    }\n\n    this._updateCanvasSize();\n\n    this._updateCursor();\n\n    if (this.tooltip.isVisible && this.viewManager.needsRedraw()) {\n      this.tooltip.setTooltip(null);\n    }\n\n    this.layerManager.updateLayers();\n\n    this._pickAndCallback();\n\n    this.redraw();\n\n    if (this.viewManager) {\n      this.viewManager.updateViewStates();\n    }\n  }\n\n  _onViewStateChange(params) {\n    const viewState = this.props.onViewStateChange(params) || params.viewState;\n\n    if (this.viewState) {\n      this.viewState = { ...this.viewState,\n        [params.viewId]: viewState\n      };\n\n      if (!this.props.viewState) {\n        if (this.viewManager) {\n          this.viewManager.setProps({\n            viewState: this.viewState\n          });\n        }\n      }\n    }\n  }\n\n  _onInteractionStateChange(interactionState) {\n    this.cursorState.isDragging = interactionState.isDragging || false;\n    this.props.onInteractionStateChange(interactionState);\n  }\n\n  _getFrameStats() {\n    const {\n      stats\n    } = this;\n    stats.get('frameRate').timeEnd();\n    stats.get('frameRate').timeStart();\n    const animationLoopStats = this.animationLoop.stats;\n    stats.get('GPU Time').addTime(animationLoopStats.get('GPU Time').lastTiming);\n    stats.get('CPU Time').addTime(animationLoopStats.get('CPU Time').lastTiming);\n  }\n\n  _getMetrics() {\n    const {\n      metrics,\n      stats\n    } = this;\n    metrics.fps = stats.get('frameRate').getHz();\n    metrics.setPropsTime = stats.get('setProps Time').time;\n    metrics.updateAttributesTime = stats.get('Update Attributes').time;\n    metrics.framesRedrawn = stats.get('Redraw Count').count;\n    metrics.pickTime = stats.get('pickObject Time').time + stats.get('pickMultipleObjects Time').time + stats.get('pickObjects Time').time;\n    metrics.pickCount = stats.get('Pick Count').count;\n    metrics.gpuTime = stats.get('GPU Time').time;\n    metrics.cpuTime = stats.get('CPU Time').time;\n    metrics.gpuTimePerFrame = stats.get('GPU Time').getAverageTime();\n    metrics.cpuTimePerFrame = stats.get('CPU Time').getAverageTime();\n    const memoryStats = lumaStats.get('Memory Usage');\n    metrics.bufferMemory = memoryStats.get('Buffer Memory').count;\n    metrics.textureMemory = memoryStats.get('Texture Memory').count;\n    metrics.renderbufferMemory = memoryStats.get('Renderbuffer Memory').count;\n    metrics.gpuMemory = memoryStats.get('GPU Memory').count;\n  }\n\n}\n\n_defineProperty(Deck, \"defaultProps\", defaultProps);\n\n_defineProperty(Deck, \"VERSION\", VERSION);\n//# sourceMappingURL=deck.js.map","function isJSON(text) {\n  const firstChar = text[0];\n  const lastChar = text[text.length - 1];\n  return firstChar === '{' && lastChar === '}' || firstChar === '[' && lastChar === ']';\n}\n\nexport default {\n  id: 'JSON',\n  name: 'JSON',\n  module: '',\n  version: '',\n  options: {},\n  extensions: ['json', 'geojson'],\n  mimeTypes: ['application/json', 'application/geo+json'],\n  testText: isJSON,\n  parseTextSync: JSON.parse\n};\n//# sourceMappingURL=json-loader.js.map","import { registerLoaders } from '@loaders.gl/core';\nimport { ImageLoader } from '@loaders.gl/images';\nimport log from '../utils/log';\nimport { register } from '../debug';\nimport jsonLoader from '../utils/json-loader';\n\nfunction checkVersion() {\n  const version = typeof \"8.9.36\" !== 'undefined' ? \"8.9.36\" : globalThis.DECK_VERSION || 'untranspiled source';\n  const existingVersion = globalThis.deck && globalThis.deck.VERSION;\n\n  if (existingVersion && existingVersion !== version) {\n    throw new Error(\"deck.gl - multiple versions detected: \".concat(existingVersion, \" vs \").concat(version));\n  }\n\n  if (!existingVersion) {\n    log.log(1, \"deck.gl \".concat(version))();\n    globalThis.deck = { ...globalThis.deck,\n      VERSION: version,\n      version,\n      log,\n      _registerLoggers: register\n    };\n    registerLoaders([jsonLoader, [ImageLoader, {\n      imagebitmap: {\n        premultiplyAlpha: 'none'\n      }\n    }]]);\n  }\n\n  return version;\n}\n\nexport const VERSION = checkVersion();\n//# sourceMappingURL=init.js.map","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { deepEqual } from '../utils/deep-equal';\nexport default class LayerExtension {\n  static get componentName() {\n    return Object.prototype.hasOwnProperty.call(this, 'extensionName') ? this.extensionName : '';\n  }\n\n  constructor(opts) {\n    _defineProperty(this, \"opts\", void 0);\n\n    if (opts) {\n      this.opts = opts;\n    }\n  }\n\n  equals(extension) {\n    if (this === extension) {\n      return true;\n    }\n\n    return this.constructor === extension.constructor && deepEqual(this.opts, extension.opts, 1);\n  }\n\n  getShaders(extension) {\n    return null;\n  }\n\n  getSubLayerProps(extension) {\n    const {\n      defaultProps\n    } = extension.constructor;\n    const newProps = {\n      updateTriggers: {}\n    };\n\n    for (const key in defaultProps) {\n      if (key in this.props) {\n        const propDef = defaultProps[key];\n        const propValue = this.props[key];\n        newProps[key] = propValue;\n\n        if (propDef && propDef.type === 'accessor') {\n          newProps.updateTriggers[key] = this.props.updateTriggers[key];\n\n          if (typeof propValue === 'function') {\n            newProps[key] = this.getSubLayerAccessor(propValue);\n          }\n        }\n      }\n    }\n\n    return newProps;\n  }\n\n  initializeState(context, extension) {}\n\n  updateState(params, extension) {}\n\n  onNeedsRedraw(extension) {}\n\n  getNeedsPickingBuffer(extension) {\n    return false;\n  }\n\n  draw(params, extension) {}\n\n  finalizeState(context, extension) {}\n\n}\n\n_defineProperty(LayerExtension, \"defaultProps\", {});\n\n_defineProperty(LayerExtension, \"extensionName\", 'LayerExtension');\n//# sourceMappingURL=layer-extension.js.map","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { load } from '@loaders.gl/core';\nexport default class Resource {\n  constructor(id, data, context) {\n    _defineProperty(this, \"id\", void 0);\n\n    _defineProperty(this, \"context\", void 0);\n\n    _defineProperty(this, \"isLoaded\", void 0);\n\n    _defineProperty(this, \"persistent\", void 0);\n\n    _defineProperty(this, \"_loadCount\", 0);\n\n    _defineProperty(this, \"_subscribers\", new Set());\n\n    _defineProperty(this, \"_data\", void 0);\n\n    _defineProperty(this, \"_loader\", void 0);\n\n    _defineProperty(this, \"_error\", void 0);\n\n    _defineProperty(this, \"_content\", void 0);\n\n    this.id = id;\n    this.context = context;\n    this.setData(data);\n  }\n\n  subscribe(consumer) {\n    this._subscribers.add(consumer);\n  }\n\n  unsubscribe(consumer) {\n    this._subscribers.delete(consumer);\n  }\n\n  inUse() {\n    return this._subscribers.size > 0;\n  }\n\n  delete() {}\n\n  getData() {\n    return this.isLoaded ? this._error ? Promise.reject(this._error) : this._content : this._loader.then(() => this.getData());\n  }\n\n  setData(data, forceUpdate) {\n    if (data === this._data && !forceUpdate) {\n      return;\n    }\n\n    this._data = data;\n    const loadCount = ++this._loadCount;\n    let loader = data;\n\n    if (typeof data === 'string') {\n      loader = load(data);\n    }\n\n    if (loader instanceof Promise) {\n      this.isLoaded = false;\n      this._loader = loader.then(result => {\n        if (this._loadCount === loadCount) {\n          this.isLoaded = true;\n          this._error = undefined;\n          this._content = result;\n        }\n      }).catch(error => {\n        if (this._loadCount === loadCount) {\n          this.isLoaded = true;\n          this._error = error || true;\n        }\n      });\n    } else {\n      this.isLoaded = true;\n      this._error = undefined;\n      this._content = data;\n    }\n\n    for (const subscriber of this._subscribers) {\n      subscriber.onChange(this.getData());\n    }\n  }\n\n}\n//# sourceMappingURL=resource.js.map","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport Resource from './resource';\nexport default class ResourceManager {\n  constructor({\n    gl,\n    protocol\n  }) {\n    _defineProperty(this, \"protocol\", void 0);\n\n    _defineProperty(this, \"_context\", void 0);\n\n    _defineProperty(this, \"_resources\", void 0);\n\n    _defineProperty(this, \"_consumers\", void 0);\n\n    _defineProperty(this, \"_pruneRequest\", void 0);\n\n    this.protocol = protocol || 'resource://';\n    this._context = {\n      gl,\n      resourceManager: this\n    };\n    this._resources = {};\n    this._consumers = {};\n    this._pruneRequest = null;\n  }\n\n  contains(resourceId) {\n    if (resourceId.startsWith(this.protocol)) {\n      return true;\n    }\n\n    return resourceId in this._resources;\n  }\n\n  add({\n    resourceId,\n    data,\n    forceUpdate = false,\n    persistent = true\n  }) {\n    let res = this._resources[resourceId];\n\n    if (res) {\n      res.setData(data, forceUpdate);\n    } else {\n      res = new Resource(resourceId, data, this._context);\n      this._resources[resourceId] = res;\n    }\n\n    res.persistent = persistent;\n  }\n\n  remove(resourceId) {\n    const res = this._resources[resourceId];\n\n    if (res) {\n      res.delete();\n      delete this._resources[resourceId];\n    }\n  }\n\n  unsubscribe({\n    consumerId\n  }) {\n    const consumer = this._consumers[consumerId];\n\n    if (consumer) {\n      for (const requestId in consumer) {\n        const request = consumer[requestId];\n        const resource = this._resources[request.resourceId];\n\n        if (resource) {\n          resource.unsubscribe(request);\n        }\n      }\n\n      delete this._consumers[consumerId];\n      this.prune();\n    }\n  }\n\n  subscribe({\n    resourceId,\n    onChange,\n    consumerId,\n    requestId = 'default'\n  }) {\n    const {\n      _resources: resources,\n      protocol\n    } = this;\n\n    if (resourceId.startsWith(protocol)) {\n      resourceId = resourceId.replace(protocol, '');\n\n      if (!resources[resourceId]) {\n        this.add({\n          resourceId,\n          data: null,\n          persistent: false\n        });\n      }\n    }\n\n    const res = resources[resourceId];\n\n    this._track(consumerId, requestId, res, onChange);\n\n    if (res) {\n      return res.getData();\n    }\n\n    return undefined;\n  }\n\n  prune() {\n    if (!this._pruneRequest) {\n      this._pruneRequest = setTimeout(() => this._prune(), 0);\n    }\n  }\n\n  finalize() {\n    for (const key in this._resources) {\n      this._resources[key].delete();\n    }\n  }\n\n  _track(consumerId, requestId, resource, onChange) {\n    const consumers = this._consumers;\n    const consumer = consumers[consumerId] = consumers[consumerId] || {};\n    const request = consumer[requestId] || {};\n    const oldResource = request.resourceId && this._resources[request.resourceId];\n\n    if (oldResource) {\n      oldResource.unsubscribe(request);\n      this.prune();\n    }\n\n    if (resource) {\n      consumer[requestId] = request;\n      request.onChange = onChange;\n      request.resourceId = resource.id;\n      resource.subscribe(request);\n    }\n  }\n\n  _prune() {\n    this._pruneRequest = null;\n\n    for (const key of Object.keys(this._resources)) {\n      const res = this._resources[key];\n\n      if (!res.persistent && !res.inUse()) {\n        res.delete();\n        delete this._resources[key];\n      }\n    }\n  }\n\n}\n//# sourceMappingURL=resource-manager.js.map","import { ProgramManager } from '@luma.gl/core';\nimport { gouraudLighting, phongLighting } from '@luma.gl/core';\nimport project from './project/project';\nimport project32 from './project32/project32';\nimport shadow from './shadow/shadow';\nimport picking from './picking/picking';\nconst DEFAULT_MODULES = [project];\nconst SHADER_HOOKS = ['vs:DECKGL_FILTER_SIZE(inout vec3 size, VertexGeometry geometry)', 'vs:DECKGL_FILTER_GL_POSITION(inout vec4 position, VertexGeometry geometry)', 'vs:DECKGL_FILTER_COLOR(inout vec4 color, VertexGeometry geometry)', 'fs:DECKGL_FILTER_COLOR(inout vec4 color, FragmentGeometry geometry)'];\nexport function createProgramManager(gl) {\n  const programManager = ProgramManager.getDefaultProgramManager(gl);\n\n  for (const shaderModule of DEFAULT_MODULES) {\n    programManager.addDefaultModule(shaderModule);\n  }\n\n  for (const shaderHook of SHADER_HOOKS) {\n    programManager.addShaderHook(shaderHook);\n  }\n\n  return programManager;\n}\nexport { picking, project, project32, gouraudLighting, phongLighting, shadow };\n//# sourceMappingURL=index.js.map","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Timeline } from '@luma.gl/core';\nimport { LIFECYCLE } from '../lifecycle/constants';\nimport log from '../utils/log';\nimport debug from '../debug';\nimport { flatten } from '../utils/flatten';\nimport { Stats } from '@probe.gl/stats';\nimport ResourceManager from './resource/resource-manager';\nimport Viewport from '../viewports/viewport';\nimport { createProgramManager } from '../shaderlib';\nconst TRACE_SET_LAYERS = 'layerManager.setLayers';\nconst TRACE_ACTIVATE_VIEWPORT = 'layerManager.activateViewport';\nexport default class LayerManager {\n  constructor(gl, {\n    deck,\n    stats,\n    viewport: _viewport,\n    timeline\n  } = {}) {\n    _defineProperty(this, \"layers\", void 0);\n\n    _defineProperty(this, \"context\", void 0);\n\n    _defineProperty(this, \"resourceManager\", void 0);\n\n    _defineProperty(this, \"_lastRenderedLayers\", []);\n\n    _defineProperty(this, \"_needsRedraw\", false);\n\n    _defineProperty(this, \"_needsUpdate\", false);\n\n    _defineProperty(this, \"_nextLayers\", null);\n\n    _defineProperty(this, \"_debug\", false);\n\n    _defineProperty(this, \"activateViewport\", viewport => {\n      debug(TRACE_ACTIVATE_VIEWPORT, this, viewport);\n\n      if (viewport) {\n        this.context.viewport = viewport;\n      }\n    });\n\n    this.layers = [];\n    this.resourceManager = new ResourceManager({\n      gl,\n      protocol: 'deck://'\n    });\n    this.context = {\n      mousePosition: null,\n      userData: {},\n      layerManager: this,\n      gl,\n      deck,\n      programManager: gl && createProgramManager(gl),\n      stats: stats || new Stats({\n        id: 'deck.gl'\n      }),\n      viewport: _viewport || new Viewport({\n        id: 'DEFAULT-INITIAL-VIEWPORT'\n      }),\n      timeline: timeline || new Timeline(),\n      resourceManager: this.resourceManager,\n      onError: undefined\n    };\n    Object.seal(this);\n  }\n\n  finalize() {\n    this.resourceManager.finalize();\n\n    for (const layer of this.layers) {\n      this._finalizeLayer(layer);\n    }\n  }\n\n  needsRedraw(opts = {\n    clearRedrawFlags: false\n  }) {\n    let redraw = this._needsRedraw;\n\n    if (opts.clearRedrawFlags) {\n      this._needsRedraw = false;\n    }\n\n    for (const layer of this.layers) {\n      const layerNeedsRedraw = layer.getNeedsRedraw(opts);\n      redraw = redraw || layerNeedsRedraw;\n    }\n\n    return redraw;\n  }\n\n  needsUpdate() {\n    if (this._nextLayers && this._nextLayers !== this._lastRenderedLayers) {\n      return 'layers changed';\n    }\n\n    return this._needsUpdate;\n  }\n\n  setNeedsRedraw(reason) {\n    this._needsRedraw = this._needsRedraw || reason;\n  }\n\n  setNeedsUpdate(reason) {\n    this._needsUpdate = this._needsUpdate || reason;\n  }\n\n  getLayers({\n    layerIds\n  } = {}) {\n    return layerIds ? this.layers.filter(layer => layerIds.find(layerId => layer.id.indexOf(layerId) === 0)) : this.layers;\n  }\n\n  setProps(props) {\n    if ('debug' in props) {\n      this._debug = props.debug;\n    }\n\n    if ('userData' in props) {\n      this.context.userData = props.userData;\n    }\n\n    if ('layers' in props) {\n      this._nextLayers = props.layers;\n    }\n\n    if ('onError' in props) {\n      this.context.onError = props.onError;\n    }\n  }\n\n  setLayers(newLayers, reason) {\n    debug(TRACE_SET_LAYERS, this, reason, newLayers);\n    this._lastRenderedLayers = newLayers;\n    const flatLayers = flatten(newLayers, Boolean);\n\n    for (const layer of flatLayers) {\n      layer.context = this.context;\n    }\n\n    this._updateLayers(this.layers, flatLayers);\n  }\n\n  updateLayers() {\n    const reason = this.needsUpdate();\n\n    if (reason) {\n      this.setNeedsRedraw(\"updating layers: \".concat(reason));\n      this.setLayers(this._nextLayers || this._lastRenderedLayers, reason);\n    }\n\n    this._nextLayers = null;\n  }\n\n  _handleError(stage, error, layer) {\n    layer.raiseError(error, \"\".concat(stage, \" of \").concat(layer));\n  }\n\n  _updateLayers(oldLayers, newLayers) {\n    const oldLayerMap = {};\n\n    for (const oldLayer of oldLayers) {\n      if (oldLayerMap[oldLayer.id]) {\n        log.warn(\"Multiple old layers with same id \".concat(oldLayer.id))();\n      } else {\n        oldLayerMap[oldLayer.id] = oldLayer;\n      }\n    }\n\n    const generatedLayers = [];\n\n    this._updateSublayersRecursively(newLayers, oldLayerMap, generatedLayers);\n\n    this._finalizeOldLayers(oldLayerMap);\n\n    let needsUpdate = false;\n\n    for (const layer of generatedLayers) {\n      if (layer.hasUniformTransition()) {\n        needsUpdate = \"Uniform transition in \".concat(layer);\n        break;\n      }\n    }\n\n    this._needsUpdate = needsUpdate;\n    this.layers = generatedLayers;\n  }\n\n  _updateSublayersRecursively(newLayers, oldLayerMap, generatedLayers) {\n    for (const newLayer of newLayers) {\n      newLayer.context = this.context;\n      const oldLayer = oldLayerMap[newLayer.id];\n\n      if (oldLayer === null) {\n        log.warn(\"Multiple new layers with same id \".concat(newLayer.id))();\n      }\n\n      oldLayerMap[newLayer.id] = null;\n      let sublayers = null;\n\n      try {\n        if (this._debug && oldLayer !== newLayer) {\n          newLayer.validateProps();\n        }\n\n        if (!oldLayer) {\n          this._initializeLayer(newLayer);\n        } else {\n          this._transferLayerState(oldLayer, newLayer);\n\n          this._updateLayer(newLayer);\n        }\n\n        generatedLayers.push(newLayer);\n        sublayers = newLayer.isComposite ? newLayer.getSubLayers() : null;\n      } catch (err) {\n        this._handleError('matching', err, newLayer);\n      }\n\n      if (sublayers) {\n        this._updateSublayersRecursively(sublayers, oldLayerMap, generatedLayers);\n      }\n    }\n  }\n\n  _finalizeOldLayers(oldLayerMap) {\n    for (const layerId in oldLayerMap) {\n      const layer = oldLayerMap[layerId];\n\n      if (layer) {\n        this._finalizeLayer(layer);\n      }\n    }\n  }\n\n  _initializeLayer(layer) {\n    try {\n      layer._initialize();\n\n      layer.lifecycle = LIFECYCLE.INITIALIZED;\n    } catch (err) {\n      this._handleError('initialization', err, layer);\n    }\n  }\n\n  _transferLayerState(oldLayer, newLayer) {\n    newLayer._transferState(oldLayer);\n\n    newLayer.lifecycle = LIFECYCLE.MATCHED;\n\n    if (newLayer !== oldLayer) {\n      oldLayer.lifecycle = LIFECYCLE.AWAITING_GC;\n    }\n  }\n\n  _updateLayer(layer) {\n    try {\n      layer._update();\n    } catch (err) {\n      this._handleError('update', err, layer);\n    }\n  }\n\n  _finalizeLayer(layer) {\n    this._needsRedraw = this._needsRedraw || \"finalized \".concat(layer);\n    layer.lifecycle = LIFECYCLE.AWAITING_FINALIZATION;\n\n    try {\n      layer._finalize();\n\n      layer.lifecycle = LIFECYCLE.FINALIZED;\n    } catch (err) {\n      this._handleError('finalization', err, layer);\n    }\n  }\n\n}\n//# sourceMappingURL=layer-manager.js.map","import { lerp } from '@math.gl/core';\nimport Transition from './transition';\nexport default class CPUInterpolationTransition extends Transition {\n  get value() {\n    return this._value;\n  }\n\n  _onUpdate() {\n    const {\n      time,\n      settings: {\n        fromValue,\n        toValue,\n        duration,\n        easing\n      }\n    } = this;\n    const t = easing(time / duration);\n    this._value = lerp(fromValue, toValue, t);\n  }\n\n}\n//# sourceMappingURL=cpu-interpolation-transition.js.map","import Transition from './transition';\nconst EPSILON = 1e-5;\n\nfunction updateSpringElement(prev, cur, dest, damping, stiffness) {\n  const velocity = cur - prev;\n  const delta = dest - cur;\n  const spring = delta * stiffness;\n  const damper = -velocity * damping;\n  return spring + damper + velocity + cur;\n}\n\nfunction updateSpring(prev, cur, dest, damping, stiffness) {\n  if (Array.isArray(dest)) {\n    const next = [];\n\n    for (let i = 0; i < dest.length; i++) {\n      next[i] = updateSpringElement(prev[i], cur[i], dest[i], damping, stiffness);\n    }\n\n    return next;\n  }\n\n  return updateSpringElement(prev, cur, dest, damping, stiffness);\n}\n\nfunction distance(value1, value2) {\n  if (Array.isArray(value1)) {\n    let distanceSquare = 0;\n\n    for (let i = 0; i < value1.length; i++) {\n      const d = value1[i] - value2[i];\n      distanceSquare += d * d;\n    }\n\n    return Math.sqrt(distanceSquare);\n  }\n\n  return Math.abs(value1 - value2);\n}\n\nexport default class CPUSpringTransition extends Transition {\n  get value() {\n    return this._currValue;\n  }\n\n  _onUpdate() {\n    const {\n      fromValue,\n      toValue,\n      damping,\n      stiffness\n    } = this.settings;\n    const {\n      _prevValue = fromValue,\n      _currValue = fromValue\n    } = this;\n    let nextValue = updateSpring(_prevValue, _currValue, toValue, damping, stiffness);\n    const delta = distance(nextValue, toValue);\n    const velocity = distance(nextValue, _currValue);\n\n    if (delta < EPSILON && velocity < EPSILON) {\n      nextValue = toValue;\n      this.end();\n    }\n\n    this._prevValue = _currValue;\n    this._currValue = nextValue;\n  }\n\n}\n//# sourceMappingURL=cpu-spring-transition.js.map","import { normalizeTransitionSettings } from './attribute/attribute-transition-utils';\nimport CPUInterpolationTransition from '../transitions/cpu-interpolation-transition';\nimport CPUSpringTransition from '../transitions/cpu-spring-transition';\nimport log from '../utils/log';\nconst TRANSITION_TYPES = {\n  interpolation: CPUInterpolationTransition,\n  spring: CPUSpringTransition\n};\nexport default class UniformTransitionManager {\n  constructor(timeline) {\n    this.transitions = new Map();\n    this.timeline = timeline;\n  }\n\n  get active() {\n    return this.transitions.size > 0;\n  }\n\n  add(key, fromValue, toValue, settings) {\n    const {\n      transitions\n    } = this;\n\n    if (transitions.has(key)) {\n      const transition = transitions.get(key);\n      const {\n        value = transition.settings.fromValue\n      } = transition;\n      fromValue = value;\n      this.remove(key);\n    }\n\n    settings = normalizeTransitionSettings(settings);\n\n    if (!settings) {\n      return;\n    }\n\n    const TransitionType = TRANSITION_TYPES[settings.type];\n\n    if (!TransitionType) {\n      log.error(\"unsupported transition type '\".concat(settings.type, \"'\"))();\n      return;\n    }\n\n    const transition = new TransitionType(this.timeline);\n    transition.start({ ...settings,\n      fromValue,\n      toValue\n    });\n    transitions.set(key, transition);\n  }\n\n  remove(key) {\n    const {\n      transitions\n    } = this;\n\n    if (transitions.has(key)) {\n      transitions.get(key).cancel();\n      transitions.delete(key);\n    }\n  }\n\n  update() {\n    const propsInTransition = {};\n\n    for (const [key, transition] of this.transitions) {\n      transition.update();\n      propsInTransition[key] = transition.value;\n\n      if (!transition.inProgress) {\n        this.remove(key);\n      }\n    }\n\n    return propsInTransition;\n  }\n\n  clear() {\n    for (const key of this.transitions.keys()) {\n      this.remove(key);\n    }\n  }\n\n}\n//# sourceMappingURL=uniform-transition-manager.js.map","import { Texture2D } from '@luma.gl/core';\nconst DEFAULT_TEXTURE_PARAMETERS = {\n  [10241]: 9987,\n  [10240]: 9729,\n  [10242]: 33071,\n  [10243]: 33071\n};\nconst internalTextures = {};\nexport function createTexture(owner, gl, image, parameters) {\n  if (image instanceof Texture2D) {\n    return image;\n  } else if (image.constructor && image.constructor.name !== 'Object') {\n    image = {\n      data: image\n    };\n  }\n\n  let specialTextureParameters = null;\n\n  if (image.compressed) {\n    specialTextureParameters = {\n      [10241]: image.data.length > 1 ? 9985 : 9729\n    };\n  }\n\n  const texture = new Texture2D(gl, { ...image,\n    parameters: { ...DEFAULT_TEXTURE_PARAMETERS,\n      ...specialTextureParameters,\n      ...parameters\n    }\n  });\n  internalTextures[texture.id] = owner;\n  return texture;\n}\nexport function destroyTexture(owner, texture) {\n  if (!texture || !(texture instanceof Texture2D)) {\n    return;\n  }\n\n  if (internalTextures[texture.id] === owner) {\n    texture.delete();\n    delete internalTextures[texture.id];\n  }\n}\n//# sourceMappingURL=texture.js.map","import { createTexture, destroyTexture } from '../utils/texture';\nimport { deepEqual } from '../utils/deep-equal';\nconst TYPE_DEFINITIONS = {\n  boolean: {\n    validate(value, propType) {\n      return true;\n    },\n\n    equal(value1, value2, propType) {\n      return Boolean(value1) === Boolean(value2);\n    }\n\n  },\n  number: {\n    validate(value, propType) {\n      return Number.isFinite(value) && (!('max' in propType) || value <= propType.max) && (!('min' in propType) || value >= propType.min);\n    }\n\n  },\n  color: {\n    validate(value, propType) {\n      return propType.optional && !value || isArray(value) && (value.length === 3 || value.length === 4);\n    },\n\n    equal(value1, value2, propType) {\n      return deepEqual(value1, value2, 1);\n    }\n\n  },\n  accessor: {\n    validate(value, propType) {\n      const valueType = getTypeOf(value);\n      return valueType === 'function' || valueType === getTypeOf(propType.value);\n    },\n\n    equal(value1, value2, propType) {\n      if (typeof value2 === 'function') {\n        return true;\n      }\n\n      return deepEqual(value1, value2, 1);\n    }\n\n  },\n  array: {\n    validate(value, propType) {\n      return propType.optional && !value || isArray(value);\n    },\n\n    equal(value1, value2, propType) {\n      const {\n        compare\n      } = propType;\n      const depth = Number.isInteger(compare) ? compare : compare ? 1 : 0;\n      return compare ? deepEqual(value1, value2, depth) : value1 === value2;\n    }\n\n  },\n  object: {\n    equal(value1, value2, propType) {\n      if (propType.ignore) {\n        return true;\n      }\n\n      const {\n        compare\n      } = propType;\n      const depth = Number.isInteger(compare) ? compare : compare ? 1 : 0;\n      return compare ? deepEqual(value1, value2, depth) : value1 === value2;\n    }\n\n  },\n  function: {\n    validate(value, propType) {\n      return propType.optional && !value || typeof value === 'function';\n    },\n\n    equal(value1, value2, propType) {\n      const shouldIgnore = !propType.compare && propType.ignore !== false;\n      return shouldIgnore || value1 === value2;\n    }\n\n  },\n  data: {\n    transform: (value, propType, component) => {\n      const {\n        dataTransform\n      } = component.props;\n      return dataTransform && value ? dataTransform(value) : value;\n    }\n  },\n  image: {\n    transform: (value, propType, component) => {\n      const context = component.context;\n\n      if (!context || !context.gl) {\n        return null;\n      }\n\n      return createTexture(component.id, context.gl, value, { ...propType.parameters,\n        ...component.props.textureParameters\n      });\n    },\n    release: (value, propType, component) => {\n      destroyTexture(component.id, value);\n    }\n  }\n};\nexport function parsePropTypes(propDefs) {\n  const propTypes = {};\n  const defaultProps = {};\n  const deprecatedProps = {};\n\n  for (const [propName, propDef] of Object.entries(propDefs)) {\n    const deprecated = propDef === null || propDef === void 0 ? void 0 : propDef.deprecatedFor;\n\n    if (deprecated) {\n      deprecatedProps[propName] = Array.isArray(deprecated) ? deprecated : [deprecated];\n    } else {\n      const propType = parsePropType(propName, propDef);\n      propTypes[propName] = propType;\n      defaultProps[propName] = propType.value;\n    }\n  }\n\n  return {\n    propTypes,\n    defaultProps,\n    deprecatedProps\n  };\n}\n\nfunction parsePropType(name, propDef) {\n  switch (getTypeOf(propDef)) {\n    case 'object':\n      return normalizePropDefinition(name, propDef);\n\n    case 'array':\n      return normalizePropDefinition(name, {\n        type: 'array',\n        value: propDef,\n        compare: false\n      });\n\n    case 'boolean':\n      return normalizePropDefinition(name, {\n        type: 'boolean',\n        value: propDef\n      });\n\n    case 'number':\n      return normalizePropDefinition(name, {\n        type: 'number',\n        value: propDef\n      });\n\n    case 'function':\n      return normalizePropDefinition(name, {\n        type: 'function',\n        value: propDef,\n        compare: true\n      });\n\n    default:\n      return {\n        name,\n        type: 'unknown',\n        value: propDef\n      };\n  }\n}\n\nfunction normalizePropDefinition(name, propDef) {\n  if (!('type' in propDef)) {\n    if (!('value' in propDef)) {\n      return {\n        name,\n        type: 'object',\n        value: propDef\n      };\n    }\n\n    return {\n      name,\n      type: getTypeOf(propDef.value),\n      ...propDef\n    };\n  }\n\n  return {\n    name,\n    ...TYPE_DEFINITIONS[propDef.type],\n    ...propDef\n  };\n}\n\nfunction isArray(value) {\n  return Array.isArray(value) || ArrayBuffer.isView(value);\n}\n\nfunction getTypeOf(value) {\n  if (isArray(value)) {\n    return 'array';\n  }\n\n  if (value === null) {\n    return 'null';\n  }\n\n  return typeof value;\n}\n//# sourceMappingURL=prop-types.js.map","import log from '../utils/log';\nimport { isAsyncIterable } from '../utils/iterable-utils';\nimport { parsePropTypes } from './prop-types';\nimport { COMPONENT_SYMBOL, PROP_TYPES_SYMBOL, DEPRECATED_PROPS_SYMBOL, ASYNC_ORIGINAL_SYMBOL, ASYNC_RESOLVED_SYMBOL, ASYNC_DEFAULTS_SYMBOL } from './constants';\nexport function createProps(component, propObjects) {\n  let extensions;\n\n  for (let i = propObjects.length - 1; i >= 0; i--) {\n    const props = propObjects[i];\n\n    if ('extensions' in props) {\n      extensions = props.extensions;\n    }\n  }\n\n  const propsPrototype = getPropsPrototype(component.constructor, extensions);\n  const propsInstance = Object.create(propsPrototype);\n  propsInstance[COMPONENT_SYMBOL] = component;\n  propsInstance[ASYNC_ORIGINAL_SYMBOL] = {};\n  propsInstance[ASYNC_RESOLVED_SYMBOL] = {};\n\n  for (let i = 0; i < propObjects.length; ++i) {\n    const props = propObjects[i];\n\n    for (const key in props) {\n      propsInstance[key] = props[key];\n    }\n  }\n\n  Object.freeze(propsInstance);\n  return propsInstance;\n}\nconst MergedDefaultPropsCacheKey = '_mergedDefaultProps';\n\nfunction getPropsPrototype(componentClass, extensions) {\n  let cacheKey = MergedDefaultPropsCacheKey;\n\n  if (extensions) {\n    for (const extension of extensions) {\n      const ExtensionClass = extension.constructor;\n\n      if (ExtensionClass) {\n        cacheKey += \":\".concat(ExtensionClass.extensionName || ExtensionClass.name);\n      }\n    }\n  }\n\n  const defaultProps = getOwnProperty(componentClass, cacheKey);\n\n  if (!defaultProps) {\n    return componentClass[cacheKey] = createPropsPrototypeAndTypes(componentClass, extensions || []);\n  }\n\n  return defaultProps;\n}\n\nfunction createPropsPrototypeAndTypes(componentClass, extensions) {\n  const parent = componentClass.prototype;\n\n  if (!parent) {\n    return null;\n  }\n\n  const parentClass = Object.getPrototypeOf(componentClass);\n  const parentDefaultProps = getPropsPrototype(parentClass);\n  const componentDefaultProps = getOwnProperty(componentClass, 'defaultProps') || {};\n  const componentPropDefs = parsePropTypes(componentDefaultProps);\n  const defaultProps = Object.assign(Object.create(null), parentDefaultProps, componentPropDefs.defaultProps);\n  const propTypes = Object.assign(Object.create(null), parentDefaultProps === null || parentDefaultProps === void 0 ? void 0 : parentDefaultProps[PROP_TYPES_SYMBOL], componentPropDefs.propTypes);\n  const deprecatedProps = Object.assign(Object.create(null), parentDefaultProps === null || parentDefaultProps === void 0 ? void 0 : parentDefaultProps[DEPRECATED_PROPS_SYMBOL], componentPropDefs.deprecatedProps);\n\n  for (const extension of extensions) {\n    const extensionDefaultProps = getPropsPrototype(extension.constructor);\n\n    if (extensionDefaultProps) {\n      Object.assign(defaultProps, extensionDefaultProps);\n      Object.assign(propTypes, extensionDefaultProps[PROP_TYPES_SYMBOL]);\n      Object.assign(deprecatedProps, extensionDefaultProps[DEPRECATED_PROPS_SYMBOL]);\n    }\n  }\n\n  createPropsPrototype(defaultProps, componentClass);\n  addAsyncPropsToPropPrototype(defaultProps, propTypes);\n  addDeprecatedPropsToPropPrototype(defaultProps, deprecatedProps);\n  defaultProps[PROP_TYPES_SYMBOL] = propTypes;\n  defaultProps[DEPRECATED_PROPS_SYMBOL] = deprecatedProps;\n\n  if (extensions.length === 0 && !hasOwnProperty(componentClass, '_propTypes')) {\n    componentClass._propTypes = propTypes;\n  }\n\n  return defaultProps;\n}\n\nfunction createPropsPrototype(defaultProps, componentClass) {\n  const id = getComponentName(componentClass);\n  Object.defineProperties(defaultProps, {\n    id: {\n      writable: true,\n      value: id\n    }\n  });\n}\n\nfunction addDeprecatedPropsToPropPrototype(defaultProps, deprecatedProps) {\n  for (const propName in deprecatedProps) {\n    Object.defineProperty(defaultProps, propName, {\n      enumerable: false,\n\n      set(newValue) {\n        const nameStr = \"\".concat(this.id, \": \").concat(propName);\n\n        for (const newPropName of deprecatedProps[propName]) {\n          if (!hasOwnProperty(this, newPropName)) {\n            this[newPropName] = newValue;\n          }\n        }\n\n        log.deprecated(nameStr, deprecatedProps[propName].join('/'))();\n      }\n\n    });\n  }\n}\n\nfunction addAsyncPropsToPropPrototype(defaultProps, propTypes) {\n  const defaultValues = {};\n  const descriptors = {};\n\n  for (const propName in propTypes) {\n    const propType = propTypes[propName];\n    const {\n      name,\n      value\n    } = propType;\n\n    if (propType.async) {\n      defaultValues[name] = value;\n      descriptors[name] = getDescriptorForAsyncProp(name);\n    }\n  }\n\n  defaultProps[ASYNC_DEFAULTS_SYMBOL] = defaultValues;\n  defaultProps[ASYNC_ORIGINAL_SYMBOL] = {};\n  Object.defineProperties(defaultProps, descriptors);\n}\n\nfunction getDescriptorForAsyncProp(name) {\n  return {\n    enumerable: true,\n\n    set(newValue) {\n      if (typeof newValue === 'string' || newValue instanceof Promise || isAsyncIterable(newValue)) {\n        this[ASYNC_ORIGINAL_SYMBOL][name] = newValue;\n      } else {\n        this[ASYNC_RESOLVED_SYMBOL][name] = newValue;\n      }\n    },\n\n    get() {\n      if (this[ASYNC_RESOLVED_SYMBOL]) {\n        if (name in this[ASYNC_RESOLVED_SYMBOL]) {\n          const value = this[ASYNC_RESOLVED_SYMBOL][name];\n          return value || this[ASYNC_DEFAULTS_SYMBOL][name];\n        }\n\n        if (name in this[ASYNC_ORIGINAL_SYMBOL]) {\n          const state = this[COMPONENT_SYMBOL] && this[COMPONENT_SYMBOL].internalState;\n\n          if (state && state.hasAsyncProp(name)) {\n            return state.getAsyncProp(name) || this[ASYNC_DEFAULTS_SYMBOL][name];\n          }\n        }\n      }\n\n      return this[ASYNC_DEFAULTS_SYMBOL][name];\n    }\n\n  };\n}\n\nfunction hasOwnProperty(object, prop) {\n  return Object.prototype.hasOwnProperty.call(object, prop);\n}\n\nfunction getOwnProperty(object, prop) {\n  return hasOwnProperty(object, prop) && object[prop];\n}\n\nfunction getComponentName(componentClass) {\n  const componentName = componentClass.componentName;\n\n  if (!componentName) {\n    log.warn(\"\".concat(componentClass.name, \".componentName not specified\"))();\n  }\n\n  return componentName || componentClass.name;\n}\n//# sourceMappingURL=create-props.js.map","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { COMPONENT_SYMBOL, PROP_TYPES_SYMBOL, ASYNC_ORIGINAL_SYMBOL, ASYNC_RESOLVED_SYMBOL, ASYNC_DEFAULTS_SYMBOL } from './constants';\nimport { createProps } from './create-props';\nlet counter = 0;\nexport default class Component {\n  constructor(...propObjects) {\n    _defineProperty(this, \"id\", void 0);\n\n    _defineProperty(this, \"props\", void 0);\n\n    _defineProperty(this, \"count\", void 0);\n\n    this.props = createProps(this, propObjects);\n    this.id = this.props.id;\n    this.count = counter++;\n  }\n\n  clone(newProps) {\n    const {\n      props\n    } = this;\n    const asyncProps = {};\n\n    for (const key in props[ASYNC_DEFAULTS_SYMBOL]) {\n      if (key in props[ASYNC_RESOLVED_SYMBOL]) {\n        asyncProps[key] = props[ASYNC_RESOLVED_SYMBOL][key];\n      } else if (key in props[ASYNC_ORIGINAL_SYMBOL]) {\n        asyncProps[key] = props[ASYNC_ORIGINAL_SYMBOL][key];\n      }\n    }\n\n    return new this.constructor({ ...props,\n      ...asyncProps,\n      ...newProps\n    });\n  }\n\n}\n\n_defineProperty(Component, \"componentName\", 'Component');\n\n_defineProperty(Component, \"defaultProps\", {});\n//# sourceMappingURL=component.js.map","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { isAsyncIterable } from '../utils/iterable-utils';\nimport { COMPONENT_SYMBOL, PROP_TYPES_SYMBOL, ASYNC_ORIGINAL_SYMBOL, ASYNC_RESOLVED_SYMBOL, ASYNC_DEFAULTS_SYMBOL } from './constants';\nconst EMPTY_PROPS = Object.freeze({});\nexport default class ComponentState {\n  constructor(component) {\n    _defineProperty(this, \"component\", void 0);\n\n    _defineProperty(this, \"onAsyncPropUpdated\", void 0);\n\n    _defineProperty(this, \"asyncProps\", void 0);\n\n    _defineProperty(this, \"oldProps\", void 0);\n\n    _defineProperty(this, \"oldAsyncProps\", void 0);\n\n    this.component = component;\n    this.asyncProps = {};\n\n    this.onAsyncPropUpdated = () => {};\n\n    this.oldProps = null;\n    this.oldAsyncProps = null;\n  }\n\n  finalize() {\n    for (const propName in this.asyncProps) {\n      const asyncProp = this.asyncProps[propName];\n\n      if (asyncProp && asyncProp.type && asyncProp.type.release) {\n        asyncProp.type.release(asyncProp.resolvedValue, asyncProp.type, this.component);\n      }\n    }\n\n    this.asyncProps = {};\n    this.component = null;\n    this.resetOldProps();\n  }\n\n  getOldProps() {\n    return this.oldAsyncProps || this.oldProps || EMPTY_PROPS;\n  }\n\n  resetOldProps() {\n    this.oldAsyncProps = null;\n    this.oldProps = this.component ? this.component.props : null;\n  }\n\n  hasAsyncProp(propName) {\n    return propName in this.asyncProps;\n  }\n\n  getAsyncProp(propName) {\n    const asyncProp = this.asyncProps[propName];\n    return asyncProp && asyncProp.resolvedValue;\n  }\n\n  isAsyncPropLoading(propName) {\n    if (propName) {\n      const asyncProp = this.asyncProps[propName];\n      return Boolean(asyncProp && asyncProp.pendingLoadCount > 0 && asyncProp.pendingLoadCount !== asyncProp.resolvedLoadCount);\n    }\n\n    for (const key in this.asyncProps) {\n      if (this.isAsyncPropLoading(key)) {\n        return true;\n      }\n    }\n\n    return false;\n  }\n\n  reloadAsyncProp(propName, value) {\n    this._watchPromise(propName, Promise.resolve(value));\n  }\n\n  setAsyncProps(props) {\n    this.component = props[COMPONENT_SYMBOL] || this.component;\n    const resolvedValues = props[ASYNC_RESOLVED_SYMBOL] || {};\n    const originalValues = props[ASYNC_ORIGINAL_SYMBOL] || props;\n    const defaultValues = props[ASYNC_DEFAULTS_SYMBOL] || {};\n\n    for (const propName in resolvedValues) {\n      const value = resolvedValues[propName];\n\n      this._createAsyncPropData(propName, defaultValues[propName]);\n\n      this._updateAsyncProp(propName, value);\n\n      resolvedValues[propName] = this.getAsyncProp(propName);\n    }\n\n    for (const propName in originalValues) {\n      const value = originalValues[propName];\n\n      this._createAsyncPropData(propName, defaultValues[propName]);\n\n      this._updateAsyncProp(propName, value);\n    }\n  }\n\n  _fetch(propName, url) {\n    return null;\n  }\n\n  _onResolve(propName, value) {}\n\n  _onError(propName, error) {}\n\n  _updateAsyncProp(propName, value) {\n    if (!this._didAsyncInputValueChange(propName, value)) {\n      return;\n    }\n\n    if (typeof value === 'string') {\n      value = this._fetch(propName, value);\n    }\n\n    if (value instanceof Promise) {\n      this._watchPromise(propName, value);\n\n      return;\n    }\n\n    if (isAsyncIterable(value)) {\n      this._resolveAsyncIterable(propName, value);\n\n      return;\n    }\n\n    this._setPropValue(propName, value);\n  }\n\n  _freezeAsyncOldProps() {\n    if (!this.oldAsyncProps && this.oldProps) {\n      this.oldAsyncProps = Object.create(this.oldProps);\n\n      for (const propName in this.asyncProps) {\n        Object.defineProperty(this.oldAsyncProps, propName, {\n          enumerable: true,\n          value: this.oldProps[propName]\n        });\n      }\n    }\n  }\n\n  _didAsyncInputValueChange(propName, value) {\n    const asyncProp = this.asyncProps[propName];\n\n    if (value === asyncProp.resolvedValue || value === asyncProp.lastValue) {\n      return false;\n    }\n\n    asyncProp.lastValue = value;\n    return true;\n  }\n\n  _setPropValue(propName, value) {\n    this._freezeAsyncOldProps();\n\n    const asyncProp = this.asyncProps[propName];\n\n    if (asyncProp) {\n      value = this._postProcessValue(asyncProp, value);\n      asyncProp.resolvedValue = value;\n      asyncProp.pendingLoadCount++;\n      asyncProp.resolvedLoadCount = asyncProp.pendingLoadCount;\n    }\n  }\n\n  _setAsyncPropValue(propName, value, loadCount) {\n    const asyncProp = this.asyncProps[propName];\n\n    if (asyncProp && loadCount >= asyncProp.resolvedLoadCount && value !== undefined) {\n      this._freezeAsyncOldProps();\n\n      asyncProp.resolvedValue = value;\n      asyncProp.resolvedLoadCount = loadCount;\n      this.onAsyncPropUpdated(propName, value);\n    }\n  }\n\n  _watchPromise(propName, promise) {\n    const asyncProp = this.asyncProps[propName];\n\n    if (asyncProp) {\n      asyncProp.pendingLoadCount++;\n      const loadCount = asyncProp.pendingLoadCount;\n      promise.then(data => {\n        if (!this.component) {\n          return;\n        }\n\n        data = this._postProcessValue(asyncProp, data);\n\n        this._setAsyncPropValue(propName, data, loadCount);\n\n        this._onResolve(propName, data);\n      }).catch(error => {\n        this._onError(propName, error);\n      });\n    }\n  }\n\n  async _resolveAsyncIterable(propName, iterable) {\n    if (propName !== 'data') {\n      this._setPropValue(propName, iterable);\n\n      return;\n    }\n\n    const asyncProp = this.asyncProps[propName];\n\n    if (!asyncProp) {\n      return;\n    }\n\n    asyncProp.pendingLoadCount++;\n    const loadCount = asyncProp.pendingLoadCount;\n    let data = [];\n    let count = 0;\n\n    for await (const chunk of iterable) {\n      if (!this.component) {\n        return;\n      }\n\n      const {\n        dataTransform\n      } = this.component.props;\n\n      if (dataTransform) {\n        data = dataTransform(chunk, data);\n      } else {\n        data = data.concat(chunk);\n      }\n\n      Object.defineProperty(data, '__diff', {\n        enumerable: false,\n        value: [{\n          startRow: count,\n          endRow: data.length\n        }]\n      });\n      count = data.length;\n\n      this._setAsyncPropValue(propName, data, loadCount);\n    }\n\n    this._onResolve(propName, data);\n  }\n\n  _postProcessValue(asyncProp, value) {\n    const propType = asyncProp.type;\n\n    if (propType && this.component) {\n      if (propType.release) {\n        propType.release(asyncProp.resolvedValue, propType, this.component);\n      }\n\n      if (propType.transform) {\n        return propType.transform(value, propType, this.component);\n      }\n    }\n\n    return value;\n  }\n\n  _createAsyncPropData(propName, defaultValue) {\n    const asyncProp = this.asyncProps[propName];\n\n    if (!asyncProp) {\n      const propTypes = this.component && this.component.props[PROP_TYPES_SYMBOL];\n      this.asyncProps[propName] = {\n        type: propTypes && propTypes[propName],\n        lastValue: null,\n        resolvedValue: defaultValue,\n        pendingLoadCount: 0,\n        resolvedLoadCount: 0\n      };\n    }\n  }\n\n}\n//# sourceMappingURL=component-state.js.map","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport ComponentState from '../lifecycle/component-state';\nexport default class LayerState extends ComponentState {\n  constructor({\n    attributeManager,\n    layer\n  }) {\n    super(layer);\n\n    _defineProperty(this, \"attributeManager\", void 0);\n\n    _defineProperty(this, \"needsRedraw\", void 0);\n\n    _defineProperty(this, \"needsUpdate\", void 0);\n\n    _defineProperty(this, \"subLayers\", void 0);\n\n    _defineProperty(this, \"usesPickingColorCache\", void 0);\n\n    _defineProperty(this, \"hasPickingBuffer\", void 0);\n\n    _defineProperty(this, \"changeFlags\", void 0);\n\n    _defineProperty(this, \"viewport\", void 0);\n\n    _defineProperty(this, \"uniformTransitions\", void 0);\n\n    _defineProperty(this, \"propsInTransition\", void 0);\n\n    this.attributeManager = attributeManager;\n    this.needsRedraw = true;\n    this.needsUpdate = true;\n    this.subLayers = null;\n    this.usesPickingColorCache = false;\n  }\n\n  get layer() {\n    return this.component;\n  }\n\n  _fetch(propName, url) {\n    const layer = this.layer;\n    const fetch = layer === null || layer === void 0 ? void 0 : layer.props.fetch;\n\n    if (fetch) {\n      return fetch(url, {\n        propName,\n        layer\n      });\n    }\n\n    return super._fetch(propName, url);\n  }\n\n  _onResolve(propName, value) {\n    const layer = this.layer;\n\n    if (layer) {\n      const onDataLoad = layer.props.onDataLoad;\n\n      if (propName === 'data' && onDataLoad) {\n        onDataLoad(value, {\n          propName,\n          layer\n        });\n      }\n    }\n  }\n\n  _onError(propName, error) {\n    const layer = this.layer;\n\n    if (layer) {\n      layer.raiseError(error, \"loading \".concat(propName, \" of \").concat(this.layer));\n    }\n  }\n\n}\n//# sourceMappingURL=layer-state.js.map","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { COORDINATE_SYSTEM } from './constants';\nimport AttributeManager from './attribute/attribute-manager';\nimport UniformTransitionManager from './uniform-transition-manager';\nimport { diffProps, validateProps } from '../lifecycle/props';\nimport { LIFECYCLE } from '../lifecycle/constants';\nimport { count } from '../utils/count';\nimport log from '../utils/log';\nimport debug from '../debug';\nimport { withParameters, setParameters } from '@luma.gl/core';\nimport assert from '../utils/assert';\nimport memoize from '../utils/memoize';\nimport { mergeShaders } from '../utils/shader';\nimport { projectPosition, getWorldPosition } from '../shaderlib/project/project-functions';\nimport typedArrayManager from '../utils/typed-array-manager';\nimport Component from '../lifecycle/component';\nimport LayerState from './layer-state';\nimport { worldToPixels } from '@math.gl/web-mercator';\nimport { load } from '@loaders.gl/core';\nconst TRACE_CHANGE_FLAG = 'layer.changeFlag';\nconst TRACE_INITIALIZE = 'layer.initialize';\nconst TRACE_UPDATE = 'layer.update';\nconst TRACE_FINALIZE = 'layer.finalize';\nconst TRACE_MATCHED = 'layer.matched';\nconst MAX_PICKING_COLOR_CACHE_SIZE = 2 ** 24 - 1;\nconst EMPTY_ARRAY = Object.freeze([]);\nconst areViewportsEqual = memoize(({\n  oldViewport,\n  viewport\n}) => {\n  return oldViewport.equals(viewport);\n});\nlet pickingColorCache = new Uint8ClampedArray(0);\nconst defaultProps = {\n  data: {\n    type: 'data',\n    value: EMPTY_ARRAY,\n    async: true\n  },\n  dataComparator: {\n    type: 'function',\n    value: null,\n    optional: true\n  },\n  _dataDiff: {\n    type: 'function',\n    value: data => data && data.__diff,\n    optional: true\n  },\n  dataTransform: {\n    type: 'function',\n    value: null,\n    optional: true\n  },\n  onDataLoad: {\n    type: 'function',\n    value: null,\n    optional: true\n  },\n  onError: {\n    type: 'function',\n    value: null,\n    optional: true\n  },\n  fetch: {\n    type: 'function',\n    value: (url, {\n      propName,\n      layer,\n      loaders,\n      loadOptions,\n      signal\n    }) => {\n      const {\n        resourceManager\n      } = layer.context;\n      loadOptions = loadOptions || layer.getLoadOptions();\n      loaders = loaders || layer.props.loaders;\n\n      if (signal) {\n        var _loadOptions;\n\n        loadOptions = { ...loadOptions,\n          fetch: { ...((_loadOptions = loadOptions) === null || _loadOptions === void 0 ? void 0 : _loadOptions.fetch),\n            signal\n          }\n        };\n      }\n\n      let inResourceManager = resourceManager.contains(url);\n\n      if (!inResourceManager && !loadOptions) {\n        resourceManager.add({\n          resourceId: url,\n          data: load(url, loaders),\n          persistent: false\n        });\n        inResourceManager = true;\n      }\n\n      if (inResourceManager) {\n        return resourceManager.subscribe({\n          resourceId: url,\n          onChange: data => {\n            var _layer$internalState;\n\n            return (_layer$internalState = layer.internalState) === null || _layer$internalState === void 0 ? void 0 : _layer$internalState.reloadAsyncProp(propName, data);\n          },\n          consumerId: layer.id,\n          requestId: propName\n        });\n      }\n\n      return load(url, loaders, loadOptions);\n    }\n  },\n  updateTriggers: {},\n  visible: true,\n  pickable: false,\n  opacity: {\n    type: 'number',\n    min: 0,\n    max: 1,\n    value: 1\n  },\n  operation: 'draw',\n  onHover: {\n    type: 'function',\n    value: null,\n    optional: true\n  },\n  onClick: {\n    type: 'function',\n    value: null,\n    optional: true\n  },\n  onDragStart: {\n    type: 'function',\n    value: null,\n    optional: true\n  },\n  onDrag: {\n    type: 'function',\n    value: null,\n    optional: true\n  },\n  onDragEnd: {\n    type: 'function',\n    value: null,\n    optional: true\n  },\n  coordinateSystem: COORDINATE_SYSTEM.DEFAULT,\n  coordinateOrigin: {\n    type: 'array',\n    value: [0, 0, 0],\n    compare: true\n  },\n  modelMatrix: {\n    type: 'array',\n    value: null,\n    compare: true,\n    optional: true\n  },\n  wrapLongitude: false,\n  positionFormat: 'XYZ',\n  colorFormat: 'RGBA',\n  parameters: {\n    type: 'object',\n    value: {},\n    optional: true,\n    compare: 2\n  },\n  loadOptions: {\n    type: 'object',\n    value: null,\n    optional: true,\n    ignore: true\n  },\n  transitions: null,\n  extensions: [],\n  loaders: {\n    type: 'array',\n    value: [],\n    optional: true,\n    ignore: true\n  },\n  getPolygonOffset: {\n    type: 'function',\n    value: ({\n      layerIndex\n    }) => [0, -layerIndex * 100]\n  },\n  highlightedObjectIndex: null,\n  autoHighlight: false,\n  highlightColor: {\n    type: 'accessor',\n    value: [0, 0, 128, 128]\n  }\n};\nexport default class Layer extends Component {\n  constructor(...args) {\n    super(...args);\n\n    _defineProperty(this, \"internalState\", null);\n\n    _defineProperty(this, \"lifecycle\", LIFECYCLE.NO_STATE);\n\n    _defineProperty(this, \"context\", void 0);\n\n    _defineProperty(this, \"state\", void 0);\n\n    _defineProperty(this, \"parent\", null);\n  }\n\n  static get componentName() {\n    return Object.prototype.hasOwnProperty.call(this, 'layerName') ? this.layerName : '';\n  }\n\n  get root() {\n    let layer = this;\n\n    while (layer.parent) {\n      layer = layer.parent;\n    }\n\n    return layer;\n  }\n\n  toString() {\n    const className = this.constructor.layerName || this.constructor.name;\n    return \"\".concat(className, \"({id: '\").concat(this.props.id, \"'})\");\n  }\n\n  project(xyz) {\n    assert(this.internalState);\n    const viewport = this.internalState.viewport || this.context.viewport;\n    const worldPosition = getWorldPosition(xyz, {\n      viewport,\n      modelMatrix: this.props.modelMatrix,\n      coordinateOrigin: this.props.coordinateOrigin,\n      coordinateSystem: this.props.coordinateSystem\n    });\n    const [x, y, z] = worldToPixels(worldPosition, viewport.pixelProjectionMatrix);\n    return xyz.length === 2 ? [x, y] : [x, y, z];\n  }\n\n  unproject(xy) {\n    assert(this.internalState);\n    const viewport = this.internalState.viewport || this.context.viewport;\n    return viewport.unproject(xy);\n  }\n\n  projectPosition(xyz, params) {\n    assert(this.internalState);\n    const viewport = this.internalState.viewport || this.context.viewport;\n    return projectPosition(xyz, {\n      viewport,\n      modelMatrix: this.props.modelMatrix,\n      coordinateOrigin: this.props.coordinateOrigin,\n      coordinateSystem: this.props.coordinateSystem,\n      ...params\n    });\n  }\n\n  get isComposite() {\n    return false;\n  }\n\n  setState(partialState) {\n    this.setChangeFlags({\n      stateChanged: true\n    });\n    Object.assign(this.state, partialState);\n    this.setNeedsRedraw();\n  }\n\n  setNeedsRedraw() {\n    if (this.internalState) {\n      this.internalState.needsRedraw = true;\n    }\n  }\n\n  setNeedsUpdate() {\n    if (this.internalState) {\n      this.context.layerManager.setNeedsUpdate(String(this));\n      this.internalState.needsUpdate = true;\n    }\n  }\n\n  get isLoaded() {\n    return this.internalState ? !this.internalState.isAsyncPropLoading() : false;\n  }\n\n  get wrapLongitude() {\n    return this.props.wrapLongitude;\n  }\n\n  isPickable() {\n    return this.props.pickable && this.props.visible;\n  }\n\n  getModels() {\n    return this.state && (this.state.models || this.state.model && [this.state.model]) || [];\n  }\n\n  setModuleParameters(moduleParameters) {\n    for (const model of this.getModels()) {\n      model.updateModuleSettings(moduleParameters);\n    }\n  }\n\n  getAttributeManager() {\n    return this.internalState && this.internalState.attributeManager;\n  }\n\n  getCurrentLayer() {\n    return this.internalState && this.internalState.layer;\n  }\n\n  getLoadOptions() {\n    return this.props.loadOptions;\n  }\n\n  use64bitPositions() {\n    const {\n      coordinateSystem\n    } = this.props;\n    return coordinateSystem === COORDINATE_SYSTEM.DEFAULT || coordinateSystem === COORDINATE_SYSTEM.LNGLAT || coordinateSystem === COORDINATE_SYSTEM.CARTESIAN;\n  }\n\n  onHover(info, pickingEvent) {\n    if (this.props.onHover) {\n      return this.props.onHover(info, pickingEvent) || false;\n    }\n\n    return false;\n  }\n\n  onClick(info, pickingEvent) {\n    if (this.props.onClick) {\n      return this.props.onClick(info, pickingEvent) || false;\n    }\n\n    return false;\n  }\n\n  nullPickingColor() {\n    return [0, 0, 0];\n  }\n\n  encodePickingColor(i, target = []) {\n    target[0] = i + 1 & 255;\n    target[1] = i + 1 >> 8 & 255;\n    target[2] = i + 1 >> 8 >> 8 & 255;\n    return target;\n  }\n\n  decodePickingColor(color) {\n    assert(color instanceof Uint8Array);\n    const [i1, i2, i3] = color;\n    const index = i1 + i2 * 256 + i3 * 65536 - 1;\n    return index;\n  }\n\n  getNumInstances() {\n    if (Number.isFinite(this.props.numInstances)) {\n      return this.props.numInstances;\n    }\n\n    if (this.state && this.state.numInstances !== undefined) {\n      return this.state.numInstances;\n    }\n\n    return count(this.props.data);\n  }\n\n  getStartIndices() {\n    if (this.props.startIndices) {\n      return this.props.startIndices;\n    }\n\n    if (this.state && this.state.startIndices) {\n      return this.state.startIndices;\n    }\n\n    return null;\n  }\n\n  getBounds() {\n    var _this$getAttributeMan;\n\n    return (_this$getAttributeMan = this.getAttributeManager()) === null || _this$getAttributeMan === void 0 ? void 0 : _this$getAttributeMan.getBounds(['positions', 'instancePositions']);\n  }\n\n  getShaders(shaders) {\n    for (const extension of this.props.extensions) {\n      shaders = mergeShaders(shaders, extension.getShaders.call(this, extension));\n    }\n\n    return shaders;\n  }\n\n  shouldUpdateState(params) {\n    return params.changeFlags.propsOrDataChanged;\n  }\n\n  updateState(params) {\n    const attributeManager = this.getAttributeManager();\n    const {\n      dataChanged\n    } = params.changeFlags;\n\n    if (dataChanged && attributeManager) {\n      if (Array.isArray(dataChanged)) {\n        for (const dataRange of dataChanged) {\n          attributeManager.invalidateAll(dataRange);\n        }\n      } else {\n        attributeManager.invalidateAll();\n      }\n    }\n\n    if (attributeManager) {\n      const {\n        props\n      } = params;\n      const hasPickingBuffer = this.internalState.hasPickingBuffer;\n      const needsPickingBuffer = Number.isInteger(props.highlightedObjectIndex) || props.pickable || props.extensions.some(extension => extension.getNeedsPickingBuffer.call(this, extension));\n\n      if (hasPickingBuffer !== needsPickingBuffer) {\n        this.internalState.hasPickingBuffer = needsPickingBuffer;\n        const {\n          pickingColors,\n          instancePickingColors\n        } = attributeManager.attributes;\n        const pickingColorsAttribute = pickingColors || instancePickingColors;\n\n        if (pickingColorsAttribute) {\n          if (needsPickingBuffer && pickingColorsAttribute.constant) {\n            pickingColorsAttribute.constant = false;\n            attributeManager.invalidate(pickingColorsAttribute.id);\n          }\n\n          if (!pickingColorsAttribute.value && !needsPickingBuffer) {\n            pickingColorsAttribute.constant = true;\n            pickingColorsAttribute.value = [0, 0, 0];\n          }\n        }\n      }\n    }\n  }\n\n  finalizeState(context) {\n    for (const model of this.getModels()) {\n      model.delete();\n    }\n\n    const attributeManager = this.getAttributeManager();\n\n    if (attributeManager) {\n      attributeManager.finalize();\n    }\n\n    if (this.context) {\n      this.context.resourceManager.unsubscribe({\n        consumerId: this.id\n      });\n    }\n\n    if (this.internalState) {\n      this.internalState.uniformTransitions.clear();\n      this.internalState.finalize();\n    }\n  }\n\n  draw(opts) {\n    for (const model of this.getModels()) {\n      model.draw(opts);\n    }\n  }\n\n  getPickingInfo({\n    info,\n    mode,\n    sourceLayer\n  }) {\n    const {\n      index\n    } = info;\n\n    if (index >= 0) {\n      if (Array.isArray(this.props.data)) {\n        info.object = this.props.data[index];\n      }\n    }\n\n    return info;\n  }\n\n  raiseError(error, message) {\n    var _this$props$onError, _this$props;\n\n    if (message) {\n      error = new Error(\"\".concat(message, \": \").concat(error.message), {\n        cause: error\n      });\n    }\n\n    if (!((_this$props$onError = (_this$props = this.props).onError) !== null && _this$props$onError !== void 0 && _this$props$onError.call(_this$props, error))) {\n      var _this$context, _this$context$onError;\n\n      (_this$context = this.context) === null || _this$context === void 0 ? void 0 : (_this$context$onError = _this$context.onError) === null || _this$context$onError === void 0 ? void 0 : _this$context$onError.call(_this$context, error, this);\n    }\n  }\n\n  getNeedsRedraw(opts = {\n    clearRedrawFlags: false\n  }) {\n    return this._getNeedsRedraw(opts);\n  }\n\n  needsUpdate() {\n    if (!this.internalState) {\n      return false;\n    }\n\n    return this.internalState.needsUpdate || this.hasUniformTransition() || this.shouldUpdateState(this._getUpdateParams());\n  }\n\n  hasUniformTransition() {\n    var _this$internalState;\n\n    return ((_this$internalState = this.internalState) === null || _this$internalState === void 0 ? void 0 : _this$internalState.uniformTransitions.active) || false;\n  }\n\n  activateViewport(viewport) {\n    if (!this.internalState) {\n      return;\n    }\n\n    const oldViewport = this.internalState.viewport;\n    this.internalState.viewport = viewport;\n\n    if (!oldViewport || !areViewportsEqual({\n      oldViewport,\n      viewport\n    })) {\n      this.setChangeFlags({\n        viewportChanged: true\n      });\n\n      if (this.isComposite) {\n        if (this.needsUpdate()) {\n          this.setNeedsUpdate();\n        }\n      } else {\n        this._update();\n      }\n    }\n  }\n\n  invalidateAttribute(name = 'all') {\n    const attributeManager = this.getAttributeManager();\n\n    if (!attributeManager) {\n      return;\n    }\n\n    if (name === 'all') {\n      attributeManager.invalidateAll();\n    } else {\n      attributeManager.invalidate(name);\n    }\n  }\n\n  updateAttributes(changedAttributes) {\n    for (const model of this.getModels()) {\n      this._setModelAttributes(model, changedAttributes);\n    }\n  }\n\n  _updateAttributes() {\n    const attributeManager = this.getAttributeManager();\n\n    if (!attributeManager) {\n      return;\n    }\n\n    const props = this.props;\n    const numInstances = this.getNumInstances();\n    const startIndices = this.getStartIndices();\n    attributeManager.update({\n      data: props.data,\n      numInstances,\n      startIndices,\n      props,\n      transitions: props.transitions,\n      buffers: props.data.attributes,\n      context: this\n    });\n    const changedAttributes = attributeManager.getChangedAttributes({\n      clearChangedFlags: true\n    });\n    this.updateAttributes(changedAttributes);\n  }\n\n  _updateAttributeTransition() {\n    const attributeManager = this.getAttributeManager();\n\n    if (attributeManager) {\n      attributeManager.updateTransition();\n    }\n  }\n\n  _updateUniformTransition() {\n    const {\n      uniformTransitions\n    } = this.internalState;\n\n    if (uniformTransitions.active) {\n      const propsInTransition = uniformTransitions.update();\n      const props = Object.create(this.props);\n\n      for (const key in propsInTransition) {\n        Object.defineProperty(props, key, {\n          value: propsInTransition[key]\n        });\n      }\n\n      return props;\n    }\n\n    return this.props;\n  }\n\n  calculateInstancePickingColors(attribute, {\n    numInstances\n  }) {\n    if (attribute.constant) {\n      return;\n    }\n\n    const cacheSize = Math.floor(pickingColorCache.length / 3);\n    this.internalState.usesPickingColorCache = true;\n\n    if (cacheSize < numInstances) {\n      if (numInstances > MAX_PICKING_COLOR_CACHE_SIZE) {\n        log.warn('Layer has too many data objects. Picking might not be able to distinguish all objects.')();\n      }\n\n      pickingColorCache = typedArrayManager.allocate(pickingColorCache, numInstances, {\n        size: 3,\n        copy: true,\n        maxCount: Math.max(numInstances, MAX_PICKING_COLOR_CACHE_SIZE)\n      });\n      const newCacheSize = Math.floor(pickingColorCache.length / 3);\n      const pickingColor = [];\n\n      for (let i = cacheSize; i < newCacheSize; i++) {\n        this.encodePickingColor(i, pickingColor);\n        pickingColorCache[i * 3 + 0] = pickingColor[0];\n        pickingColorCache[i * 3 + 1] = pickingColor[1];\n        pickingColorCache[i * 3 + 2] = pickingColor[2];\n      }\n    }\n\n    attribute.value = pickingColorCache.subarray(0, numInstances * 3);\n  }\n\n  _setModelAttributes(model, changedAttributes) {\n    const attributeManager = this.getAttributeManager();\n    const excludeAttributes = model.userData.excludeAttributes || {};\n    const shaderAttributes = attributeManager.getShaderAttributes(changedAttributes, excludeAttributes);\n    model.setAttributes(shaderAttributes);\n  }\n\n  disablePickingIndex(objectIndex) {\n    const data = this.props.data;\n\n    if (!('attributes' in data)) {\n      this._disablePickingIndex(objectIndex);\n\n      return;\n    }\n\n    const {\n      pickingColors,\n      instancePickingColors\n    } = this.getAttributeManager().attributes;\n    const colors = pickingColors || instancePickingColors;\n    const externalColorAttribute = colors && data.attributes && data.attributes[colors.id];\n\n    if (externalColorAttribute && externalColorAttribute.value) {\n      const values = externalColorAttribute.value;\n      const objectColor = this.encodePickingColor(objectIndex);\n\n      for (let index = 0; index < data.length; index++) {\n        const i = colors.getVertexOffset(index);\n\n        if (values[i] === objectColor[0] && values[i + 1] === objectColor[1] && values[i + 2] === objectColor[2]) {\n          this._disablePickingIndex(index);\n        }\n      }\n    } else {\n      this._disablePickingIndex(objectIndex);\n    }\n  }\n\n  _disablePickingIndex(objectIndex) {\n    const {\n      pickingColors,\n      instancePickingColors\n    } = this.getAttributeManager().attributes;\n    const colors = pickingColors || instancePickingColors;\n\n    if (!colors) {\n      return;\n    }\n\n    const start = colors.getVertexOffset(objectIndex);\n    const end = colors.getVertexOffset(objectIndex + 1);\n    colors.buffer.subData({\n      data: new Uint8Array(end - start),\n      offset: start\n    });\n  }\n\n  restorePickingColors() {\n    const {\n      pickingColors,\n      instancePickingColors\n    } = this.getAttributeManager().attributes;\n    const colors = pickingColors || instancePickingColors;\n\n    if (!colors) {\n      return;\n    }\n\n    if (this.internalState.usesPickingColorCache && colors.value.buffer !== pickingColorCache.buffer) {\n      colors.value = pickingColorCache.subarray(0, colors.value.length);\n    }\n\n    colors.updateSubBuffer({\n      startOffset: 0\n    });\n  }\n\n  _initialize() {\n    assert(!this.internalState);\n    assert(Number.isFinite(this.props.coordinateSystem));\n    debug(TRACE_INITIALIZE, this);\n\n    const attributeManager = this._getAttributeManager();\n\n    if (attributeManager) {\n      attributeManager.addInstanced({\n        instancePickingColors: {\n          type: 5121,\n          size: 3,\n          noAlloc: true,\n          update: this.calculateInstancePickingColors\n        }\n      });\n    }\n\n    this.internalState = new LayerState({\n      attributeManager,\n      layer: this\n    });\n\n    this._clearChangeFlags();\n\n    this.state = {};\n    Object.defineProperty(this.state, 'attributeManager', {\n      get: () => {\n        log.deprecated('layer.state.attributeManager', 'layer.getAttributeManager()')();\n        return attributeManager;\n      }\n    });\n    this.internalState.uniformTransitions = new UniformTransitionManager(this.context.timeline);\n    this.internalState.onAsyncPropUpdated = this._onAsyncPropUpdated.bind(this);\n    this.internalState.setAsyncProps(this.props);\n    this.initializeState(this.context);\n\n    for (const extension of this.props.extensions) {\n      extension.initializeState.call(this, this.context, extension);\n    }\n\n    this.setChangeFlags({\n      dataChanged: 'init',\n      propsChanged: 'init',\n      viewportChanged: true,\n      extensionsChanged: true\n    });\n\n    this._update();\n  }\n\n  _transferState(oldLayer) {\n    debug(TRACE_MATCHED, this, this === oldLayer);\n    const {\n      state,\n      internalState\n    } = oldLayer;\n\n    if (this === oldLayer) {\n      return;\n    }\n\n    this.internalState = internalState;\n    this.state = state;\n    this.internalState.setAsyncProps(this.props);\n\n    this._diffProps(this.props, this.internalState.getOldProps());\n  }\n\n  _update() {\n    const stateNeedsUpdate = this.needsUpdate();\n    debug(TRACE_UPDATE, this, stateNeedsUpdate);\n\n    if (!stateNeedsUpdate) {\n      return;\n    }\n\n    const currentProps = this.props;\n    const context = this.context;\n    const internalState = this.internalState;\n    const currentViewport = context.viewport;\n\n    const propsInTransition = this._updateUniformTransition();\n\n    internalState.propsInTransition = propsInTransition;\n    context.viewport = internalState.viewport || currentViewport;\n    this.props = propsInTransition;\n\n    try {\n      const updateParams = this._getUpdateParams();\n\n      const oldModels = this.getModels();\n\n      if (context.gl) {\n        this.updateState(updateParams);\n      } else {\n        try {\n          this.updateState(updateParams);\n        } catch (error) {}\n      }\n\n      for (const extension of this.props.extensions) {\n        extension.updateState.call(this, updateParams, extension);\n      }\n\n      const modelChanged = this.getModels()[0] !== oldModels[0];\n\n      this._postUpdate(updateParams, modelChanged);\n    } finally {\n      context.viewport = currentViewport;\n      this.props = currentProps;\n\n      this._clearChangeFlags();\n\n      internalState.needsUpdate = false;\n      internalState.resetOldProps();\n    }\n  }\n\n  _finalize() {\n    debug(TRACE_FINALIZE, this);\n    this.finalizeState(this.context);\n\n    for (const extension of this.props.extensions) {\n      extension.finalizeState.call(this, this.context, extension);\n    }\n  }\n\n  _drawLayer({\n    moduleParameters = null,\n    uniforms = {},\n    parameters = {}\n  }) {\n    this._updateAttributeTransition();\n\n    const currentProps = this.props;\n    const context = this.context;\n    this.props = this.internalState.propsInTransition || currentProps;\n    const opacity = this.props.opacity;\n    uniforms.opacity = Math.pow(opacity, 1 / 2.2);\n\n    try {\n      if (moduleParameters) {\n        this.setModuleParameters(moduleParameters);\n      }\n\n      const {\n        getPolygonOffset\n      } = this.props;\n      const offsets = getPolygonOffset && getPolygonOffset(uniforms) || [0, 0];\n      setParameters(context.gl, {\n        polygonOffset: offsets\n      });\n      withParameters(context.gl, parameters, () => {\n        const opts = {\n          moduleParameters,\n          uniforms,\n          parameters,\n          context\n        };\n\n        for (const extension of this.props.extensions) {\n          extension.draw.call(this, opts, extension);\n        }\n\n        this.draw(opts);\n      });\n    } finally {\n      this.props = currentProps;\n    }\n  }\n\n  getChangeFlags() {\n    var _this$internalState2;\n\n    return (_this$internalState2 = this.internalState) === null || _this$internalState2 === void 0 ? void 0 : _this$internalState2.changeFlags;\n  }\n\n  setChangeFlags(flags) {\n    if (!this.internalState) {\n      return;\n    }\n\n    const {\n      changeFlags\n    } = this.internalState;\n\n    for (const key in flags) {\n      if (flags[key]) {\n        let flagChanged = false;\n\n        switch (key) {\n          case 'dataChanged':\n            const dataChangedReason = flags[key];\n            const prevDataChangedReason = changeFlags[key];\n\n            if (dataChangedReason && Array.isArray(prevDataChangedReason)) {\n              changeFlags.dataChanged = Array.isArray(dataChangedReason) ? prevDataChangedReason.concat(dataChangedReason) : dataChangedReason;\n              flagChanged = true;\n            }\n\n          default:\n            if (!changeFlags[key]) {\n              changeFlags[key] = flags[key];\n              flagChanged = true;\n            }\n\n        }\n\n        if (flagChanged) {\n          debug(TRACE_CHANGE_FLAG, this, key, flags);\n        }\n      }\n    }\n\n    const propsOrDataChanged = Boolean(changeFlags.dataChanged || changeFlags.updateTriggersChanged || changeFlags.propsChanged || changeFlags.extensionsChanged);\n    changeFlags.propsOrDataChanged = propsOrDataChanged;\n    changeFlags.somethingChanged = propsOrDataChanged || changeFlags.viewportChanged || changeFlags.stateChanged;\n  }\n\n  _clearChangeFlags() {\n    this.internalState.changeFlags = {\n      dataChanged: false,\n      propsChanged: false,\n      updateTriggersChanged: false,\n      viewportChanged: false,\n      stateChanged: false,\n      extensionsChanged: false,\n      propsOrDataChanged: false,\n      somethingChanged: false\n    };\n  }\n\n  _diffProps(newProps, oldProps) {\n    const changeFlags = diffProps(newProps, oldProps);\n\n    if (changeFlags.updateTriggersChanged) {\n      for (const key in changeFlags.updateTriggersChanged) {\n        if (changeFlags.updateTriggersChanged[key]) {\n          this.invalidateAttribute(key);\n        }\n      }\n    }\n\n    if (changeFlags.transitionsChanged) {\n      for (const key in changeFlags.transitionsChanged) {\n        var _newProps$transitions;\n\n        this.internalState.uniformTransitions.add(key, oldProps[key], newProps[key], (_newProps$transitions = newProps.transitions) === null || _newProps$transitions === void 0 ? void 0 : _newProps$transitions[key]);\n      }\n    }\n\n    return this.setChangeFlags(changeFlags);\n  }\n\n  validateProps() {\n    validateProps(this.props);\n  }\n\n  updateAutoHighlight(info) {\n    if (this.props.autoHighlight && !Number.isInteger(this.props.highlightedObjectIndex)) {\n      this._updateAutoHighlight(info);\n    }\n  }\n\n  _updateAutoHighlight(info) {\n    const pickingModuleParameters = {\n      pickingSelectedColor: info.picked ? info.color : null\n    };\n    const {\n      highlightColor\n    } = this.props;\n\n    if (info.picked && typeof highlightColor === 'function') {\n      pickingModuleParameters.pickingHighlightColor = highlightColor(info);\n    }\n\n    this.setModuleParameters(pickingModuleParameters);\n    this.setNeedsRedraw();\n  }\n\n  _getAttributeManager() {\n    const context = this.context;\n    return new AttributeManager(context.gl, {\n      id: this.props.id,\n      stats: context.stats,\n      timeline: context.timeline\n    });\n  }\n\n  _postUpdate(updateParams, forceUpdate) {\n    const {\n      props,\n      oldProps\n    } = updateParams;\n    this.setNeedsRedraw();\n\n    this._updateAttributes();\n\n    const {\n      model\n    } = this.state;\n    model === null || model === void 0 ? void 0 : model.setInstanceCount(this.getNumInstances());\n    const {\n      autoHighlight,\n      highlightedObjectIndex,\n      highlightColor\n    } = props;\n\n    if (forceUpdate || oldProps.autoHighlight !== autoHighlight || oldProps.highlightedObjectIndex !== highlightedObjectIndex || oldProps.highlightColor !== highlightColor) {\n      const parameters = {};\n\n      if (!autoHighlight) {\n        parameters.pickingSelectedColor = null;\n      }\n\n      if (Array.isArray(highlightColor)) {\n        parameters.pickingHighlightColor = highlightColor;\n      }\n\n      if (forceUpdate || highlightedObjectIndex !== oldProps.highlightedObjectIndex) {\n        parameters.pickingSelectedColor = Number.isFinite(highlightedObjectIndex) && highlightedObjectIndex >= 0 ? this.encodePickingColor(highlightedObjectIndex) : null;\n      }\n\n      this.setModuleParameters(parameters);\n    }\n  }\n\n  _getUpdateParams() {\n    return {\n      props: this.props,\n      oldProps: this.internalState.getOldProps(),\n      context: this.context,\n      changeFlags: this.internalState.changeFlags\n    };\n  }\n\n  _getNeedsRedraw(opts) {\n    if (!this.internalState) {\n      return false;\n    }\n\n    let redraw = false;\n    redraw = redraw || this.internalState.needsRedraw && this.id;\n    const attributeManager = this.getAttributeManager();\n    const attributeManagerNeedsRedraw = attributeManager ? attributeManager.getNeedsRedraw(opts) : false;\n    redraw = redraw || attributeManagerNeedsRedraw;\n\n    if (redraw) {\n      for (const extension of this.props.extensions) {\n        extension.onNeedsRedraw.call(this, extension);\n      }\n    }\n\n    this.internalState.needsRedraw = this.internalState.needsRedraw && !opts.clearRedrawFlags;\n    return redraw;\n  }\n\n  _onAsyncPropUpdated() {\n    this._diffProps(this.props, this.internalState.getOldProps());\n\n    this.setNeedsUpdate();\n  }\n\n}\n\n_defineProperty(Layer, \"defaultProps\", defaultProps);\n\n_defineProperty(Layer, \"layerName\", 'Layer');\n//# sourceMappingURL=layer.js.map","export const LIFECYCLE = {\n  NO_STATE: 'Awaiting state',\n  MATCHED: 'Matched. State transferred from previous layer',\n  INITIALIZED: 'Initialized',\n  AWAITING_GC: 'Discarded. Awaiting garbage collection',\n  AWAITING_FINALIZATION: 'No longer matched. Awaiting garbage collection',\n  FINALIZED: 'Finalized! Awaiting garbage collection'\n};\nexport const COMPONENT_SYMBOL = Symbol.for('component');\nexport const PROP_TYPES_SYMBOL = Symbol.for('propTypes');\nexport const DEPRECATED_PROPS_SYMBOL = Symbol.for('deprecatedProps');\nexport const ASYNC_DEFAULTS_SYMBOL = Symbol.for('asyncPropDefaults');\nexport const ASYNC_ORIGINAL_SYMBOL = Symbol.for('asyncPropOriginal');\nexport const ASYNC_RESOLVED_SYMBOL = Symbol.for('asyncPropResolved');\n//# sourceMappingURL=constants.js.map","import { PROP_TYPES_SYMBOL } from './constants';\nexport function validateProps(props) {\n  const propTypes = props[PROP_TYPES_SYMBOL];\n\n  for (const propName in propTypes) {\n    const propType = propTypes[propName];\n    const {\n      validate\n    } = propType;\n\n    if (validate && !validate(props[propName], propType)) {\n      throw new Error(\"Invalid prop \".concat(propName, \": \").concat(props[propName]));\n    }\n  }\n}\nexport function diffProps(props, oldProps) {\n  const propsChangedReason = compareProps({\n    newProps: props,\n    oldProps,\n    propTypes: props[PROP_TYPES_SYMBOL],\n    ignoreProps: {\n      data: null,\n      updateTriggers: null,\n      extensions: null,\n      transitions: null\n    }\n  });\n  const dataChangedReason = diffDataProps(props, oldProps);\n  let updateTriggersChangedReason = false;\n\n  if (!dataChangedReason) {\n    updateTriggersChangedReason = diffUpdateTriggers(props, oldProps);\n  }\n\n  return {\n    dataChanged: dataChangedReason,\n    propsChanged: propsChangedReason,\n    updateTriggersChanged: updateTriggersChangedReason,\n    extensionsChanged: diffExtensions(props, oldProps),\n    transitionsChanged: diffTransitions(props, oldProps)\n  };\n}\n\nfunction diffTransitions(props, oldProps) {\n  if (!props.transitions) {\n    return false;\n  }\n\n  const result = {};\n  const propTypes = props[PROP_TYPES_SYMBOL];\n  let changed = false;\n\n  for (const key in props.transitions) {\n    const propType = propTypes[key];\n    const type = propType && propType.type;\n    const isTransitionable = type === 'number' || type === 'color' || type === 'array';\n\n    if (isTransitionable && comparePropValues(props[key], oldProps[key], propType)) {\n      result[key] = true;\n      changed = true;\n    }\n  }\n\n  return changed ? result : false;\n}\n\nexport function compareProps({\n  newProps,\n  oldProps,\n  ignoreProps = {},\n  propTypes = {},\n  triggerName = 'props'\n}) {\n  if (oldProps === newProps) {\n    return false;\n  }\n\n  if (typeof newProps !== 'object' || newProps === null) {\n    return \"\".concat(triggerName, \" changed shallowly\");\n  }\n\n  if (typeof oldProps !== 'object' || oldProps === null) {\n    return \"\".concat(triggerName, \" changed shallowly\");\n  }\n\n  for (const key of Object.keys(newProps)) {\n    if (!(key in ignoreProps)) {\n      if (!(key in oldProps)) {\n        return \"\".concat(triggerName, \".\").concat(key, \" added\");\n      }\n\n      const changed = comparePropValues(newProps[key], oldProps[key], propTypes[key]);\n\n      if (changed) {\n        return \"\".concat(triggerName, \".\").concat(key, \" \").concat(changed);\n      }\n    }\n  }\n\n  for (const key of Object.keys(oldProps)) {\n    if (!(key in ignoreProps)) {\n      if (!(key in newProps)) {\n        return \"\".concat(triggerName, \".\").concat(key, \" dropped\");\n      }\n\n      if (!Object.hasOwnProperty.call(newProps, key)) {\n        const changed = comparePropValues(newProps[key], oldProps[key], propTypes[key]);\n\n        if (changed) {\n          return \"\".concat(triggerName, \".\").concat(key, \" \").concat(changed);\n        }\n      }\n    }\n  }\n\n  return false;\n}\n\nfunction comparePropValues(newProp, oldProp, propType) {\n  let equal = propType && propType.equal;\n\n  if (equal && !equal(newProp, oldProp, propType)) {\n    return 'changed deeply';\n  }\n\n  if (!equal) {\n    equal = newProp && oldProp && newProp.equals;\n\n    if (equal && !equal.call(newProp, oldProp)) {\n      return 'changed deeply';\n    }\n  }\n\n  if (!equal && oldProp !== newProp) {\n    return 'changed shallowly';\n  }\n\n  return null;\n}\n\nfunction diffDataProps(props, oldProps) {\n  if (oldProps === null) {\n    return 'oldProps is null, initial diff';\n  }\n\n  let dataChanged = false;\n  const {\n    dataComparator,\n    _dataDiff\n  } = props;\n\n  if (dataComparator) {\n    if (!dataComparator(props.data, oldProps.data)) {\n      dataChanged = 'Data comparator detected a change';\n    }\n  } else if (props.data !== oldProps.data) {\n    dataChanged = 'A new data container was supplied';\n  }\n\n  if (dataChanged && _dataDiff) {\n    dataChanged = _dataDiff(props.data, oldProps.data) || dataChanged;\n  }\n\n  return dataChanged;\n}\n\nfunction diffUpdateTriggers(props, oldProps) {\n  if (oldProps === null) {\n    return {\n      all: true\n    };\n  }\n\n  if ('all' in props.updateTriggers) {\n    const diffReason = diffUpdateTrigger(props, oldProps, 'all');\n\n    if (diffReason) {\n      return {\n        all: true\n      };\n    }\n  }\n\n  const reason = {};\n  let changed = false;\n\n  for (const triggerName in props.updateTriggers) {\n    if (triggerName !== 'all') {\n      const diffReason = diffUpdateTrigger(props, oldProps, triggerName);\n\n      if (diffReason) {\n        reason[triggerName] = true;\n        changed = true;\n      }\n    }\n  }\n\n  return changed ? reason : false;\n}\n\nfunction diffExtensions(props, oldProps) {\n  if (oldProps === null) {\n    return true;\n  }\n\n  const oldExtensions = oldProps.extensions;\n  const {\n    extensions\n  } = props;\n\n  if (extensions === oldExtensions) {\n    return false;\n  }\n\n  if (!oldExtensions || !extensions) {\n    return true;\n  }\n\n  if (extensions.length !== oldExtensions.length) {\n    return true;\n  }\n\n  for (let i = 0; i < extensions.length; i++) {\n    if (!extensions[i].equals(oldExtensions[i])) {\n      return true;\n    }\n  }\n\n  return false;\n}\n\nfunction diffUpdateTrigger(props, oldProps, triggerName) {\n  let newTriggers = props.updateTriggers[triggerName];\n  newTriggers = newTriggers === undefined || newTriggers === null ? {} : newTriggers;\n  let oldTriggers = oldProps.updateTriggers[triggerName];\n  oldTriggers = oldTriggers === undefined || oldTriggers === null ? {} : oldTriggers;\n  const diffReason = compareProps({\n    oldProps: oldTriggers,\n    newProps: newTriggers,\n    triggerName\n  });\n  return diffReason;\n}\n//# sourceMappingURL=props.js.map","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport Pass from './pass';\nimport { clear, setParameters, withParameters, cssToDeviceRatio } from '@luma.gl/core';\nexport default class LayersPass extends Pass {\n  constructor(...args) {\n    super(...args);\n\n    _defineProperty(this, \"_lastRenderIndex\", -1);\n  }\n\n  render(options) {\n    const gl = this.gl;\n    setParameters(gl, {\n      framebuffer: options.target\n    });\n    return this._drawLayers(options);\n  }\n\n  _drawLayers(options) {\n    const {\n      target,\n      moduleParameters,\n      viewports,\n      views,\n      onViewportActive,\n      clearStack = true,\n      clearCanvas = true\n    } = options;\n    options.pass = options.pass || 'unknown';\n    const gl = this.gl;\n\n    if (clearCanvas) {\n      clearGLCanvas(gl, target);\n    }\n\n    if (clearStack) {\n      this._lastRenderIndex = -1;\n    }\n\n    const renderStats = [];\n\n    for (const viewport of viewports) {\n      const view = views && views[viewport.id];\n      onViewportActive === null || onViewportActive === void 0 ? void 0 : onViewportActive(viewport);\n\n      const drawLayerParams = this._getDrawLayerParams(viewport, options);\n\n      const subViewports = viewport.subViewports || [viewport];\n\n      for (const subViewport of subViewports) {\n        const stats = this._drawLayersInViewport(gl, {\n          target,\n          moduleParameters,\n          viewport: subViewport,\n          view,\n          pass: options.pass,\n          layers: options.layers\n        }, drawLayerParams);\n\n        renderStats.push(stats);\n      }\n    }\n\n    return renderStats;\n  }\n\n  _getDrawLayerParams(viewport, {\n    layers,\n    pass,\n    isPicking = false,\n    layerFilter,\n    cullRect,\n    effects,\n    moduleParameters\n  }, evaluateShouldDrawOnly = false) {\n    const drawLayerParams = [];\n    const indexResolver = layerIndexResolver(this._lastRenderIndex + 1);\n    const drawContext = {\n      layer: layers[0],\n      viewport,\n      isPicking,\n      renderPass: pass,\n      cullRect\n    };\n    const layerFilterCache = {};\n\n    for (let layerIndex = 0; layerIndex < layers.length; layerIndex++) {\n      const layer = layers[layerIndex];\n\n      const shouldDrawLayer = this._shouldDrawLayer(layer, drawContext, layerFilter, layerFilterCache);\n\n      const layerParam = {\n        shouldDrawLayer\n      };\n\n      if (shouldDrawLayer && !evaluateShouldDrawOnly) {\n        layerParam.layerRenderIndex = indexResolver(layer, shouldDrawLayer);\n        layerParam.moduleParameters = this._getModuleParameters(layer, effects, pass, moduleParameters);\n        layerParam.layerParameters = this.getLayerParameters(layer, layerIndex, viewport);\n      }\n\n      drawLayerParams[layerIndex] = layerParam;\n    }\n\n    return drawLayerParams;\n  }\n\n  _drawLayersInViewport(gl, {\n    layers,\n    moduleParameters: globalModuleParameters,\n    pass,\n    target,\n    viewport,\n    view\n  }, drawLayerParams) {\n    const glViewport = getGLViewport(gl, {\n      moduleParameters: globalModuleParameters,\n      target,\n      viewport\n    });\n\n    if (view && view.props.clear) {\n      const clearOpts = view.props.clear === true ? {\n        color: true,\n        depth: true\n      } : view.props.clear;\n      withParameters(gl, {\n        scissorTest: true,\n        scissor: glViewport\n      }, () => clear(gl, clearOpts));\n    }\n\n    const renderStatus = {\n      totalCount: layers.length,\n      visibleCount: 0,\n      compositeCount: 0,\n      pickableCount: 0\n    };\n    setParameters(gl, {\n      viewport: glViewport\n    });\n\n    for (let layerIndex = 0; layerIndex < layers.length; layerIndex++) {\n      const layer = layers[layerIndex];\n      const {\n        shouldDrawLayer,\n        layerRenderIndex,\n        moduleParameters,\n        layerParameters\n      } = drawLayerParams[layerIndex];\n\n      if (shouldDrawLayer && layer.props.pickable) {\n        renderStatus.pickableCount++;\n      }\n\n      if (layer.isComposite) {\n        renderStatus.compositeCount++;\n      } else if (shouldDrawLayer) {\n        renderStatus.visibleCount++;\n        this._lastRenderIndex = Math.max(this._lastRenderIndex, layerRenderIndex);\n        moduleParameters.viewport = viewport;\n\n        try {\n          layer._drawLayer({\n            moduleParameters,\n            uniforms: {\n              layerIndex: layerRenderIndex\n            },\n            parameters: layerParameters\n          });\n        } catch (err) {\n          layer.raiseError(err, \"drawing \".concat(layer, \" to \").concat(pass));\n        }\n      }\n    }\n\n    return renderStatus;\n  }\n\n  shouldDrawLayer(layer) {\n    return true;\n  }\n\n  getModuleParameters(layer, effects) {\n    return null;\n  }\n\n  getLayerParameters(layer, layerIndex, viewport) {\n    return layer.props.parameters;\n  }\n\n  _shouldDrawLayer(layer, drawContext, layerFilter, layerFilterCache) {\n    const shouldDrawLayer = layer.props.visible && this.shouldDrawLayer(layer);\n\n    if (!shouldDrawLayer) {\n      return false;\n    }\n\n    drawContext.layer = layer;\n    let parent = layer.parent;\n\n    while (parent) {\n      if (!parent.props.visible || !parent.filterSubLayer(drawContext)) {\n        return false;\n      }\n\n      drawContext.layer = parent;\n      parent = parent.parent;\n    }\n\n    if (layerFilter) {\n      const rootLayerId = drawContext.layer.id;\n\n      if (!(rootLayerId in layerFilterCache)) {\n        layerFilterCache[rootLayerId] = layerFilter(drawContext);\n      }\n\n      if (!layerFilterCache[rootLayerId]) {\n        return false;\n      }\n    }\n\n    layer.activateViewport(drawContext.viewport);\n    return true;\n  }\n\n  _getModuleParameters(layer, effects, pass, overrides) {\n    var _layer$internalState;\n\n    const moduleParameters = Object.assign(Object.create(((_layer$internalState = layer.internalState) === null || _layer$internalState === void 0 ? void 0 : _layer$internalState.propsInTransition) || layer.props), {\n      autoWrapLongitude: layer.wrapLongitude,\n      viewport: layer.context.viewport,\n      mousePosition: layer.context.mousePosition,\n      pickingActive: 0,\n      devicePixelRatio: cssToDeviceRatio(this.gl)\n    });\n\n    if (effects) {\n      for (const effect of effects) {\n        var _effect$getModulePara;\n\n        Object.assign(moduleParameters, (_effect$getModulePara = effect.getModuleParameters) === null || _effect$getModulePara === void 0 ? void 0 : _effect$getModulePara.call(effect, layer));\n      }\n    }\n\n    return Object.assign(moduleParameters, this.getModuleParameters(layer, effects), overrides);\n  }\n\n}\nexport function layerIndexResolver(startIndex = 0, layerIndices = {}) {\n  const resolvers = {};\n\n  const resolveLayerIndex = (layer, isDrawn) => {\n    const indexOverride = layer.props._offset;\n    const layerId = layer.id;\n    const parentId = layer.parent && layer.parent.id;\n    let index;\n\n    if (parentId && !(parentId in layerIndices)) {\n      resolveLayerIndex(layer.parent, false);\n    }\n\n    if (parentId in resolvers) {\n      const resolver = resolvers[parentId] = resolvers[parentId] || layerIndexResolver(layerIndices[parentId], layerIndices);\n      index = resolver(layer, isDrawn);\n      resolvers[layerId] = resolver;\n    } else if (Number.isFinite(indexOverride)) {\n      index = indexOverride + (layerIndices[parentId] || 0);\n      resolvers[layerId] = null;\n    } else {\n      index = startIndex;\n    }\n\n    if (isDrawn && index >= startIndex) {\n      startIndex = index + 1;\n    }\n\n    layerIndices[layerId] = index;\n    return index;\n  };\n\n  return resolveLayerIndex;\n}\n\nfunction getGLViewport(gl, {\n  moduleParameters,\n  target,\n  viewport\n}) {\n  const useTarget = target && target.id !== 'default-framebuffer';\n  const pixelRatio = moduleParameters && moduleParameters.devicePixelRatio || cssToDeviceRatio(gl);\n  const height = useTarget ? target.height : gl.drawingBufferHeight;\n  const dimensions = viewport;\n  return [dimensions.x * pixelRatio, height - (dimensions.y + dimensions.height) * pixelRatio, dimensions.width * pixelRatio, dimensions.height * pixelRatio];\n}\n\nfunction clearGLCanvas(gl, targetFramebuffer) {\n  const width = targetFramebuffer ? targetFramebuffer.width : gl.drawingBufferWidth;\n  const height = targetFramebuffer ? targetFramebuffer.height : gl.drawingBufferHeight;\n  setParameters(gl, {\n    viewport: [0, 0, width, height]\n  });\n  gl.clear(16384 | 256);\n}\n//# sourceMappingURL=layers-pass.js.map","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nexport default class Pass {\n  constructor(gl, props = {\n    id: 'pass'\n  }) {\n    _defineProperty(this, \"id\", void 0);\n\n    _defineProperty(this, \"gl\", void 0);\n\n    _defineProperty(this, \"props\", void 0);\n\n    const {\n      id\n    } = props;\n    this.id = id;\n    this.gl = gl;\n    this.props = { ...props\n    };\n  }\n\n  setProps(props) {\n    Object.assign(this.props, props);\n  }\n\n  render(params) {}\n\n  cleanup() {}\n\n}\n//# sourceMappingURL=pass.js.map","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport LayersPass from './layers-pass';\nimport { withParameters } from '@luma.gl/core';\nimport log from '../utils/log';\nconst PICKING_PARAMETERS = {\n  blendFunc: [1, 0, 32771, 0],\n  blendEquation: 32774\n};\nexport default class PickLayersPass extends LayersPass {\n  constructor(...args) {\n    super(...args);\n\n    _defineProperty(this, \"pickZ\", void 0);\n\n    _defineProperty(this, \"_colorEncoderState\", null);\n  }\n\n  render(props) {\n    if ('pickingFBO' in props) {\n      return this._drawPickingBuffer(props);\n    }\n\n    return super.render(props);\n  }\n\n  _drawPickingBuffer({\n    layers,\n    layerFilter,\n    views,\n    viewports,\n    onViewportActive,\n    pickingFBO,\n    deviceRect: {\n      x,\n      y,\n      width,\n      height\n    },\n    cullRect,\n    effects,\n    pass = 'picking',\n    pickZ,\n    moduleParameters\n  }) {\n    const gl = this.gl;\n    this.pickZ = pickZ;\n\n    const colorEncoderState = this._resetColorEncoder(pickZ);\n\n    const renderStatus = withParameters(gl, {\n      scissorTest: true,\n      scissor: [x, y, width, height],\n      clearColor: [0, 0, 0, 0],\n      depthMask: true,\n      depthTest: true,\n      depthRange: [0, 1],\n      colorMask: [true, true, true, true],\n      ...PICKING_PARAMETERS,\n      blend: !pickZ\n    }, () => super.render({\n      target: pickingFBO,\n      layers,\n      layerFilter,\n      views,\n      viewports,\n      onViewportActive,\n      cullRect,\n      effects: effects === null || effects === void 0 ? void 0 : effects.filter(e => e.useInPicking),\n      pass,\n      isPicking: true,\n      moduleParameters\n    }));\n    this._colorEncoderState = null;\n    const decodePickingColor = colorEncoderState && decodeColor.bind(null, colorEncoderState);\n    return {\n      decodePickingColor,\n      stats: renderStatus\n    };\n  }\n\n  shouldDrawLayer(layer) {\n    const {\n      pickable,\n      operation\n    } = layer.props;\n    return pickable && operation.includes('draw') || operation.includes('terrain') || operation.includes('mask');\n  }\n\n  getModuleParameters() {\n    return {\n      pickingActive: 1,\n      pickingAttribute: this.pickZ,\n      lightSources: {}\n    };\n  }\n\n  getLayerParameters(layer, layerIndex, viewport) {\n    const pickParameters = { ...layer.props.parameters\n    };\n    const {\n      pickable,\n      operation\n    } = layer.props;\n\n    if (!this._colorEncoderState) {\n      pickParameters.blend = false;\n    } else if (pickable && operation.includes('draw')) {\n      Object.assign(pickParameters, PICKING_PARAMETERS);\n      pickParameters.blend = true;\n      pickParameters.blendColor = encodeColor(this._colorEncoderState, layer, viewport);\n    }\n\n    if (operation.includes('terrain')) {\n      pickParameters.blend = false;\n    }\n\n    return pickParameters;\n  }\n\n  _resetColorEncoder(pickZ) {\n    this._colorEncoderState = pickZ ? null : {\n      byLayer: new Map(),\n      byAlpha: []\n    };\n    return this._colorEncoderState;\n  }\n\n}\n\nfunction encodeColor(encoded, layer, viewport) {\n  const {\n    byLayer,\n    byAlpha\n  } = encoded;\n  let a;\n  let entry = byLayer.get(layer);\n\n  if (entry) {\n    entry.viewports.push(viewport);\n    a = entry.a;\n  } else {\n    a = byLayer.size + 1;\n\n    if (a <= 255) {\n      entry = {\n        a,\n        layer,\n        viewports: [viewport]\n      };\n      byLayer.set(layer, entry);\n      byAlpha[a] = entry;\n    } else {\n      log.warn('Too many pickable layers, only picking the first 255')();\n      a = 0;\n    }\n  }\n\n  return [0, 0, 0, a / 255];\n}\n\nfunction decodeColor(encoded, pickedColor) {\n  const entry = encoded.byAlpha[pickedColor[3]];\n  return entry && {\n    pickedLayer: entry.layer,\n    pickedViewports: entry.viewports,\n    pickedObjectIndex: entry.layer.decodePickingColor(pickedColor)\n  };\n}\n//# sourceMappingURL=pick-layers-pass.js.map","import { picking } from '@luma.gl/core';\nexport default {\n  inject: {\n    'vs:DECKGL_FILTER_GL_POSITION': \"\\n    // for picking depth values\\n    picking_setPickingAttribute(position.z / position.w);\\n  \",\n    'vs:DECKGL_FILTER_COLOR': \"\\n  picking_setPickingColor(geometry.pickingColor);\\n  \",\n    'fs:#decl': \"\\nuniform bool picking_uAttribute;\\n  \",\n    'fs:DECKGL_FILTER_COLOR': {\n      order: 99,\n      injection: \"\\n  // use highlight color if this fragment belongs to the selected object.\\n  color = picking_filterHighlightColor(color);\\n\\n  // use picking color if rendering to picking FBO.\\n  color = picking_filterPickingColor(color);\\n    \"\n    }\n  },\n  ...picking\n};\n//# sourceMappingURL=picking.js.map","import { COORDINATE_SYSTEM } from '../../lib/constants';\nimport { getOffsetOrigin } from './viewport-uniforms';\nimport WebMercatorViewport from '../../viewports/web-mercator-viewport';\nimport * as vec4 from 'gl-matrix/vec4';\nimport * as vec3 from 'gl-matrix/vec3';\nimport { addMetersToLngLat } from '@math.gl/web-mercator';\nconst DEFAULT_COORDINATE_ORIGIN = [0, 0, 0];\n\nfunction lngLatZToWorldPosition(lngLatZ, viewport, offsetMode = false) {\n  const p = viewport.projectPosition(lngLatZ);\n\n  if (offsetMode && viewport instanceof WebMercatorViewport) {\n    const [longitude, latitude, z = 0] = lngLatZ;\n    const distanceScales = viewport.getDistanceScales([longitude, latitude]);\n    p[2] = z * distanceScales.unitsPerMeter[2];\n  }\n\n  return p;\n}\n\nfunction normalizeParameters(opts) {\n  const {\n    viewport,\n    modelMatrix,\n    coordinateOrigin\n  } = opts;\n  let {\n    coordinateSystem,\n    fromCoordinateSystem,\n    fromCoordinateOrigin\n  } = opts;\n\n  if (coordinateSystem === COORDINATE_SYSTEM.DEFAULT) {\n    coordinateSystem = viewport.isGeospatial ? COORDINATE_SYSTEM.LNGLAT : COORDINATE_SYSTEM.CARTESIAN;\n  }\n\n  if (fromCoordinateSystem === undefined) {\n    fromCoordinateSystem = coordinateSystem;\n  }\n\n  if (fromCoordinateOrigin === undefined) {\n    fromCoordinateOrigin = coordinateOrigin;\n  }\n\n  return {\n    viewport,\n    coordinateSystem,\n    coordinateOrigin,\n    modelMatrix,\n    fromCoordinateSystem,\n    fromCoordinateOrigin\n  };\n}\n\nexport function getWorldPosition(position, {\n  viewport,\n  modelMatrix,\n  coordinateSystem,\n  coordinateOrigin,\n  offsetMode\n}) {\n  let [x, y, z = 0] = position;\n\n  if (modelMatrix) {\n    [x, y, z] = vec4.transformMat4([], [x, y, z, 1.0], modelMatrix);\n  }\n\n  switch (coordinateSystem) {\n    case COORDINATE_SYSTEM.LNGLAT:\n      return lngLatZToWorldPosition([x, y, z], viewport, offsetMode);\n\n    case COORDINATE_SYSTEM.LNGLAT_OFFSETS:\n      return lngLatZToWorldPosition([x + coordinateOrigin[0], y + coordinateOrigin[1], z + (coordinateOrigin[2] || 0)], viewport, offsetMode);\n\n    case COORDINATE_SYSTEM.METER_OFFSETS:\n      return lngLatZToWorldPosition(addMetersToLngLat(coordinateOrigin, [x, y, z]), viewport, offsetMode);\n\n    case COORDINATE_SYSTEM.CARTESIAN:\n    default:\n      return viewport.isGeospatial ? [x + coordinateOrigin[0], y + coordinateOrigin[1], z + coordinateOrigin[2]] : viewport.projectPosition([x, y, z]);\n  }\n}\nexport function projectPosition(position, params) {\n  const {\n    viewport,\n    coordinateSystem,\n    coordinateOrigin,\n    modelMatrix,\n    fromCoordinateSystem,\n    fromCoordinateOrigin\n  } = normalizeParameters(params);\n  const {\n    autoOffset = true\n  } = params;\n  const {\n    geospatialOrigin = DEFAULT_COORDINATE_ORIGIN,\n    shaderCoordinateOrigin = DEFAULT_COORDINATE_ORIGIN,\n    offsetMode = false\n  } = autoOffset ? getOffsetOrigin(viewport, coordinateSystem, coordinateOrigin) : {};\n  const worldPosition = getWorldPosition(position, {\n    viewport,\n    modelMatrix,\n    coordinateSystem: fromCoordinateSystem,\n    coordinateOrigin: fromCoordinateOrigin,\n    offsetMode\n  });\n\n  if (offsetMode) {\n    const positionCommonSpace = viewport.projectPosition(geospatialOrigin || shaderCoordinateOrigin);\n    vec3.sub(worldPosition, worldPosition, positionCommonSpace);\n  }\n\n  return worldPosition;\n}\n//# sourceMappingURL=project-functions.js.map","const defines = '#define SMOOTH_EDGE_RADIUS 0.5';\nconst vs = \"\\n\".concat(defines, \"\\n\\nstruct VertexGeometry {\\n  vec4 position;\\n  vec3 worldPosition;\\n  vec3 worldPositionAlt;\\n  vec3 normal;\\n  vec2 uv;\\n  vec3 pickingColor;\\n} geometry = VertexGeometry(\\n  vec4(0.0, 0.0, 1.0, 0.0),\\n  vec3(0.0),\\n  vec3(0.0),\\n  vec3(0.0),\\n  vec2(0.0),\\n  vec3(0.0)\\n);\\n\");\nconst fs = \"\\n\".concat(defines, \"\\n\\nstruct FragmentGeometry {\\n  vec2 uv;\\n} geometry;\\n\\nfloat smoothedge(float edge, float x) {\\n  return smoothstep(edge - SMOOTH_EDGE_RADIUS, edge + SMOOTH_EDGE_RADIUS, x);\\n}\\n\");\nexport default {\n  name: 'geometry',\n  vs,\n  fs\n};\n//# sourceMappingURL=geometry.js.map","import { COORDINATE_SYSTEM, PROJECTION_MODE, UNIT } from '../../lib/constants';\nconst COORDINATE_SYSTEM_GLSL_CONSTANTS = Object.keys(COORDINATE_SYSTEM).map(key => \"const int COORDINATE_SYSTEM_\".concat(key, \" = \").concat(COORDINATE_SYSTEM[key], \";\")).join('');\nconst PROJECTION_MODE_GLSL_CONSTANTS = Object.keys(PROJECTION_MODE).map(key => \"const int PROJECTION_MODE_\".concat(key, \" = \").concat(PROJECTION_MODE[key], \";\")).join('');\nconst UNIT_GLSL_CONSTANTS = Object.keys(UNIT).map(key => \"const int UNIT_\".concat(key.toUpperCase(), \" = \").concat(UNIT[key], \";\")).join('');\nexport default \"\".concat(COORDINATE_SYSTEM_GLSL_CONSTANTS, \"\\n\").concat(PROJECTION_MODE_GLSL_CONSTANTS, \"\\n\").concat(UNIT_GLSL_CONSTANTS, \"\\n\\nuniform int project_uCoordinateSystem;\\nuniform int project_uProjectionMode;\\nuniform float project_uScale;\\nuniform bool project_uWrapLongitude;\\nuniform vec3 project_uCommonUnitsPerMeter;\\nuniform vec3 project_uCommonUnitsPerWorldUnit;\\nuniform vec3 project_uCommonUnitsPerWorldUnit2;\\nuniform vec4 project_uCenter;\\nuniform mat4 project_uModelMatrix;\\nuniform mat4 project_uViewProjectionMatrix;\\nuniform vec2 project_uViewportSize;\\nuniform float project_uDevicePixelRatio;\\nuniform float project_uFocalDistance;\\nuniform vec3 project_uCameraPosition;\\nuniform vec3 project_uCoordinateOrigin;\\nuniform vec3 project_uCommonOrigin;\\nuniform bool project_uPseudoMeters;\\n\\nconst float TILE_SIZE = 512.0;\\nconst float PI = 3.1415926536;\\nconst float WORLD_SCALE = TILE_SIZE / (PI * 2.0);\\nconst vec3 ZERO_64_LOW = vec3(0.0);\\nconst float EARTH_RADIUS = 6370972.0;\\nconst float GLOBE_RADIUS = 256.0;\\nfloat project_size_at_latitude(float lat) {\\n  float y = clamp(lat, -89.9, 89.9);\\n  return 1.0 / cos(radians(y));\\n}\\n\\nfloat project_size() {\\n  if (project_uProjectionMode == PROJECTION_MODE_WEB_MERCATOR &&\\n    project_uCoordinateSystem == COORDINATE_SYSTEM_LNGLAT &&\\n    project_uPseudoMeters == false) {\\n    \\n    if (geometry.position.w == 0.0) {\\n      return project_size_at_latitude(geometry.worldPosition.y);\\n    }\\n  \\n    float y = geometry.position.y / TILE_SIZE * 2.0 - 1.0;\\n    float y2 = y * y;\\n    float y4 = y2 * y2;\\n    float y6 = y4 * y2;\\n    return 1.0 + 4.9348 * y2 + 4.0587 * y4 + 1.5642 * y6;\\n  }\\n  return 1.0;\\n}\\n\\nfloat project_size_at_latitude(float meters, float lat) {\\n  return meters * project_uCommonUnitsPerMeter.z * project_size_at_latitude(lat);\\n}\\nfloat project_size(float meters) {\\n  return meters * project_uCommonUnitsPerMeter.z * project_size();\\n}\\n\\nvec2 project_size(vec2 meters) {\\n  return meters * project_uCommonUnitsPerMeter.xy * project_size();\\n}\\n\\nvec3 project_size(vec3 meters) {\\n  return meters * project_uCommonUnitsPerMeter * project_size();\\n}\\n\\nvec4 project_size(vec4 meters) {\\n  return vec4(meters.xyz * project_uCommonUnitsPerMeter, meters.w);\\n}\\nmat3 project_get_orientation_matrix(vec3 up) {\\n  vec3 uz = normalize(up);\\n  vec3 ux = abs(uz.z) == 1.0 ? vec3(1.0, 0.0, 0.0) : normalize(vec3(uz.y, -uz.x, 0));\\n  vec3 uy = cross(uz, ux);\\n  return mat3(ux, uy, uz);\\n}\\n\\nbool project_needs_rotation(vec3 commonPosition, out mat3 transform) {\\n  if (project_uProjectionMode == PROJECTION_MODE_GLOBE) {\\n    transform = project_get_orientation_matrix(commonPosition);\\n    return true;\\n  }\\n  return false;\\n}\\nvec3 project_normal(vec3 vector) {\\n  vec4 normal_modelspace = project_uModelMatrix * vec4(vector, 0.0);\\n  vec3 n = normalize(normal_modelspace.xyz * project_uCommonUnitsPerMeter);\\n  mat3 rotation;\\n  if (project_needs_rotation(geometry.position.xyz, rotation)) {\\n    n = rotation * n;\\n  }\\n  return n;\\n}\\n\\nvec4 project_offset_(vec4 offset) {\\n  float dy = offset.y;\\n  vec3 commonUnitsPerWorldUnit = project_uCommonUnitsPerWorldUnit + project_uCommonUnitsPerWorldUnit2 * dy;\\n  return vec4(offset.xyz * commonUnitsPerWorldUnit, offset.w);\\n}\\nvec2 project_mercator_(vec2 lnglat) {\\n  float x = lnglat.x;\\n  if (project_uWrapLongitude) {\\n    x = mod(x + 180., 360.0) - 180.;\\n  }\\n  float y = clamp(lnglat.y, -89.9, 89.9);\\n  return vec2(\\n    radians(x) + PI,\\n    PI + log(tan_fp32(PI * 0.25 + radians(y) * 0.5))\\n  ) * WORLD_SCALE;\\n}\\n\\nvec3 project_globe_(vec3 lnglatz) {\\n  float lambda = radians(lnglatz.x);\\n  float phi = radians(lnglatz.y);\\n  float cosPhi = cos(phi);\\n  float D = (lnglatz.z / EARTH_RADIUS + 1.0) * GLOBE_RADIUS;\\n\\n  return vec3(\\n    sin(lambda) * cosPhi,\\n    -cos(lambda) * cosPhi,\\n    sin(phi)\\n  ) * D;\\n}\\nvec4 project_position(vec4 position, vec3 position64Low) {\\n  vec4 position_world = project_uModelMatrix * position;\\n  if (project_uProjectionMode == PROJECTION_MODE_WEB_MERCATOR) {\\n    if (project_uCoordinateSystem == COORDINATE_SYSTEM_LNGLAT) {\\n      return vec4(\\n        project_mercator_(position_world.xy),\\n        project_size_at_latitude(position_world.z, position_world.y),\\n        position_world.w\\n      );\\n    }\\n    if (project_uCoordinateSystem == COORDINATE_SYSTEM_CARTESIAN) {\\n      position_world.xyz += project_uCoordinateOrigin;\\n    }\\n  }\\n  if (project_uProjectionMode == PROJECTION_MODE_GLOBE) {\\n    if (project_uCoordinateSystem == COORDINATE_SYSTEM_LNGLAT) {\\n      return vec4(\\n        project_globe_(position_world.xyz),\\n        position_world.w\\n      );\\n    }\\n  }\\n  if (project_uProjectionMode == PROJECTION_MODE_WEB_MERCATOR_AUTO_OFFSET) {\\n    if (project_uCoordinateSystem == COORDINATE_SYSTEM_LNGLAT) {\\n      if (abs(position_world.y - project_uCoordinateOrigin.y) > 0.25) {\\n        return vec4(\\n          project_mercator_(position_world.xy) - project_uCommonOrigin.xy,\\n          project_size(position_world.z),\\n          position_world.w\\n        );\\n      }\\n    }\\n  }\\n  if (project_uProjectionMode == PROJECTION_MODE_IDENTITY ||\\n    (project_uProjectionMode == PROJECTION_MODE_WEB_MERCATOR_AUTO_OFFSET &&\\n    (project_uCoordinateSystem == COORDINATE_SYSTEM_LNGLAT ||\\n     project_uCoordinateSystem == COORDINATE_SYSTEM_CARTESIAN))) {\\n    position_world.xyz -= project_uCoordinateOrigin;\\n  }\\n  return project_offset_(position_world) + project_offset_(project_uModelMatrix * vec4(position64Low, 0.0));\\n}\\n\\nvec4 project_position(vec4 position) {\\n  return project_position(position, ZERO_64_LOW);\\n}\\n\\nvec3 project_position(vec3 position, vec3 position64Low) {\\n  vec4 projected_position = project_position(vec4(position, 1.0), position64Low);\\n  return projected_position.xyz;\\n}\\n\\nvec3 project_position(vec3 position) {\\n  vec4 projected_position = project_position(vec4(position, 1.0), ZERO_64_LOW);\\n  return projected_position.xyz;\\n}\\n\\nvec2 project_position(vec2 position) {\\n  vec4 projected_position = project_position(vec4(position, 0.0, 1.0), ZERO_64_LOW);\\n  return projected_position.xy;\\n}\\n\\nvec4 project_common_position_to_clipspace(vec4 position, mat4 viewProjectionMatrix, vec4 center) {\\n  return viewProjectionMatrix * position + center;\\n}\\nvec4 project_common_position_to_clipspace(vec4 position) {\\n  return project_common_position_to_clipspace(position, project_uViewProjectionMatrix, project_uCenter);\\n}\\nvec2 project_pixel_size_to_clipspace(vec2 pixels) {\\n  vec2 offset = pixels / project_uViewportSize * project_uDevicePixelRatio * 2.0;\\n  return offset * project_uFocalDistance;\\n}\\n\\nfloat project_size_to_pixel(float meters) {\\n  return project_size(meters) * project_uScale;\\n}\\nfloat project_size_to_pixel(float size, int unit) {\\n  if (unit == UNIT_METERS) return project_size_to_pixel(size);\\n  if (unit == UNIT_COMMON) return size * project_uScale;\\n  return size;\\n}\\nfloat project_pixel_size(float pixels) {\\n  return pixels / project_uScale;\\n}\\nvec2 project_pixel_size(vec2 pixels) {\\n  return pixels / project_uScale;\\n}\\n\");\n//# sourceMappingURL=project.glsl.js.map","import { fp32 } from '@luma.gl/core';\nimport geometry from '../misc/geometry';\nimport projectShader from './project.glsl';\nimport { getUniformsFromViewport } from './viewport-uniforms';\nconst INITIAL_MODULE_OPTIONS = {};\n\nfunction getUniforms(opts = INITIAL_MODULE_OPTIONS) {\n  if ('viewport' in opts) {\n    return getUniformsFromViewport(opts);\n  }\n\n  return {};\n}\n\nexport default {\n  name: 'project',\n  dependencies: [fp32, geometry],\n  vs: projectShader,\n  getUniforms\n};\n//# sourceMappingURL=project.js.map","import * as mat4 from 'gl-matrix/mat4';\nimport * as vec4 from 'gl-matrix/vec4';\nimport { COORDINATE_SYSTEM, PROJECTION_MODE } from '../../lib/constants';\nimport memoize from '../../utils/memoize';\nconst ZERO_VECTOR = [0, 0, 0, 0];\nconst VECTOR_TO_POINT_MATRIX = [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0];\nconst IDENTITY_MATRIX = [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1];\nconst DEFAULT_PIXELS_PER_UNIT2 = [0, 0, 0];\nconst DEFAULT_COORDINATE_ORIGIN = [0, 0, 0];\nconst getMemoizedViewportUniforms = memoize(calculateViewportUniforms);\nexport function getOffsetOrigin(viewport, coordinateSystem, coordinateOrigin = DEFAULT_COORDINATE_ORIGIN) {\n  if (coordinateOrigin.length < 3) {\n    coordinateOrigin = [coordinateOrigin[0], coordinateOrigin[1], 0];\n  }\n\n  let shaderCoordinateOrigin = coordinateOrigin;\n  let geospatialOrigin;\n  let offsetMode = true;\n\n  if (coordinateSystem === COORDINATE_SYSTEM.LNGLAT_OFFSETS || coordinateSystem === COORDINATE_SYSTEM.METER_OFFSETS) {\n    geospatialOrigin = coordinateOrigin;\n  } else {\n    geospatialOrigin = viewport.isGeospatial ? [Math.fround(viewport.longitude), Math.fround(viewport.latitude), 0] : null;\n  }\n\n  switch (viewport.projectionMode) {\n    case PROJECTION_MODE.WEB_MERCATOR:\n      if (coordinateSystem === COORDINATE_SYSTEM.LNGLAT || coordinateSystem === COORDINATE_SYSTEM.CARTESIAN) {\n        geospatialOrigin = [0, 0, 0];\n        offsetMode = false;\n      }\n\n      break;\n\n    case PROJECTION_MODE.WEB_MERCATOR_AUTO_OFFSET:\n      if (coordinateSystem === COORDINATE_SYSTEM.LNGLAT) {\n        shaderCoordinateOrigin = geospatialOrigin;\n      } else if (coordinateSystem === COORDINATE_SYSTEM.CARTESIAN) {\n        shaderCoordinateOrigin = [Math.fround(viewport.center[0]), Math.fround(viewport.center[1]), 0];\n        geospatialOrigin = viewport.unprojectPosition(shaderCoordinateOrigin);\n        shaderCoordinateOrigin[0] -= coordinateOrigin[0];\n        shaderCoordinateOrigin[1] -= coordinateOrigin[1];\n        shaderCoordinateOrigin[2] -= coordinateOrigin[2];\n      }\n\n      break;\n\n    case PROJECTION_MODE.IDENTITY:\n      shaderCoordinateOrigin = viewport.position.map(Math.fround);\n      shaderCoordinateOrigin[2] = shaderCoordinateOrigin[2] || 0;\n      break;\n\n    case PROJECTION_MODE.GLOBE:\n      offsetMode = false;\n      geospatialOrigin = null;\n      break;\n\n    default:\n      offsetMode = false;\n  }\n\n  return {\n    geospatialOrigin,\n    shaderCoordinateOrigin,\n    offsetMode\n  };\n}\n\nfunction calculateMatrixAndOffset(viewport, coordinateSystem, coordinateOrigin) {\n  const {\n    viewMatrixUncentered,\n    projectionMatrix\n  } = viewport;\n  let {\n    viewMatrix,\n    viewProjectionMatrix\n  } = viewport;\n  let projectionCenter = ZERO_VECTOR;\n  let originCommon = ZERO_VECTOR;\n  let cameraPosCommon = viewport.cameraPosition;\n  const {\n    geospatialOrigin,\n    shaderCoordinateOrigin,\n    offsetMode\n  } = getOffsetOrigin(viewport, coordinateSystem, coordinateOrigin);\n\n  if (offsetMode) {\n    originCommon = viewport.projectPosition(geospatialOrigin || shaderCoordinateOrigin);\n    cameraPosCommon = [cameraPosCommon[0] - originCommon[0], cameraPosCommon[1] - originCommon[1], cameraPosCommon[2] - originCommon[2]];\n    originCommon[3] = 1;\n    projectionCenter = vec4.transformMat4([], originCommon, viewProjectionMatrix);\n    viewMatrix = viewMatrixUncentered || viewMatrix;\n    viewProjectionMatrix = mat4.multiply([], projectionMatrix, viewMatrix);\n    viewProjectionMatrix = mat4.multiply([], viewProjectionMatrix, VECTOR_TO_POINT_MATRIX);\n  }\n\n  return {\n    viewMatrix,\n    viewProjectionMatrix,\n    projectionCenter,\n    originCommon,\n    cameraPosCommon,\n    shaderCoordinateOrigin,\n    geospatialOrigin\n  };\n}\n\nexport function getUniformsFromViewport({\n  viewport,\n  devicePixelRatio = 1,\n  modelMatrix = null,\n  coordinateSystem = COORDINATE_SYSTEM.DEFAULT,\n  coordinateOrigin = DEFAULT_COORDINATE_ORIGIN,\n  autoWrapLongitude = false\n}) {\n  if (coordinateSystem === COORDINATE_SYSTEM.DEFAULT) {\n    coordinateSystem = viewport.isGeospatial ? COORDINATE_SYSTEM.LNGLAT : COORDINATE_SYSTEM.CARTESIAN;\n  }\n\n  const uniforms = getMemoizedViewportUniforms({\n    viewport,\n    devicePixelRatio,\n    coordinateSystem,\n    coordinateOrigin\n  });\n  uniforms.project_uWrapLongitude = autoWrapLongitude;\n  uniforms.project_uModelMatrix = modelMatrix || IDENTITY_MATRIX;\n  return uniforms;\n}\n\nfunction calculateViewportUniforms({\n  viewport,\n  devicePixelRatio,\n  coordinateSystem,\n  coordinateOrigin\n}) {\n  const {\n    projectionCenter,\n    viewProjectionMatrix,\n    originCommon,\n    cameraPosCommon,\n    shaderCoordinateOrigin,\n    geospatialOrigin\n  } = calculateMatrixAndOffset(viewport, coordinateSystem, coordinateOrigin);\n  const distanceScales = viewport.getDistanceScales();\n  const viewportSize = [viewport.width * devicePixelRatio, viewport.height * devicePixelRatio];\n  const focalDistance = vec4.transformMat4([], [0, 0, -viewport.focalDistance, 1], viewport.projectionMatrix)[3] || 1;\n  const uniforms = {\n    project_uCoordinateSystem: coordinateSystem,\n    project_uProjectionMode: viewport.projectionMode,\n    project_uCoordinateOrigin: shaderCoordinateOrigin,\n    project_uCommonOrigin: originCommon.slice(0, 3),\n    project_uCenter: projectionCenter,\n    project_uPseudoMeters: Boolean(viewport._pseudoMeters),\n    project_uViewportSize: viewportSize,\n    project_uDevicePixelRatio: devicePixelRatio,\n    project_uFocalDistance: focalDistance,\n    project_uCommonUnitsPerMeter: distanceScales.unitsPerMeter,\n    project_uCommonUnitsPerWorldUnit: distanceScales.unitsPerMeter,\n    project_uCommonUnitsPerWorldUnit2: DEFAULT_PIXELS_PER_UNIT2,\n    project_uScale: viewport.scale,\n    project_uWrapLongitude: false,\n    project_uViewProjectionMatrix: viewProjectionMatrix,\n    project_uModelMatrix: IDENTITY_MATRIX,\n    project_uCameraPosition: cameraPosCommon\n  };\n\n  if (geospatialOrigin) {\n    const distanceScalesAtOrigin = viewport.getDistanceScales(geospatialOrigin);\n\n    switch (coordinateSystem) {\n      case COORDINATE_SYSTEM.METER_OFFSETS:\n        uniforms.project_uCommonUnitsPerWorldUnit = distanceScalesAtOrigin.unitsPerMeter;\n        uniforms.project_uCommonUnitsPerWorldUnit2 = distanceScalesAtOrigin.unitsPerMeter2;\n        break;\n\n      case COORDINATE_SYSTEM.LNGLAT:\n      case COORDINATE_SYSTEM.LNGLAT_OFFSETS:\n        if (!viewport._pseudoMeters) {\n          uniforms.project_uCommonUnitsPerMeter = distanceScalesAtOrigin.unitsPerMeter;\n        }\n\n        uniforms.project_uCommonUnitsPerWorldUnit = distanceScalesAtOrigin.unitsPerDegree;\n        uniforms.project_uCommonUnitsPerWorldUnit2 = distanceScalesAtOrigin.unitsPerDegree2;\n        break;\n\n      case COORDINATE_SYSTEM.CARTESIAN:\n        uniforms.project_uCommonUnitsPerWorldUnit = [1, 1, distanceScalesAtOrigin.unitsPerMeter[2]];\n        uniforms.project_uCommonUnitsPerWorldUnit2 = [0, 0, distanceScalesAtOrigin.unitsPerMeter2[2]];\n        break;\n\n      default:\n        break;\n    }\n  }\n\n  return uniforms;\n}\n//# sourceMappingURL=viewport-uniforms.js.map","import project from '../project/project';\nconst vs = \"\\nvec4 project_position_to_clipspace(\\n  vec3 position, vec3 position64Low, vec3 offset, out vec4 commonPosition\\n) {\\n  vec3 projectedPosition = project_position(position, position64Low);\\n  mat3 rotation;\\n  if (project_needs_rotation(projectedPosition, rotation)) {\\n    // offset is specified as ENU\\n    // when in globe projection, rotate offset so that the ground alighs with the surface of the globe\\n    offset = rotation * offset;\\n  }\\n  commonPosition = vec4(projectedPosition + offset, 1.0);\\n  return project_common_position_to_clipspace(commonPosition);\\n}\\n\\nvec4 project_position_to_clipspace(\\n  vec3 position, vec3 position64Low, vec3 offset\\n) {\\n  vec4 commonPosition;\\n  return project_position_to_clipspace(position, position64Low, offset, commonPosition);\\n}\\n\";\nexport default {\n  name: 'project32',\n  dependencies: [project],\n  vs\n};\n//# sourceMappingURL=project32.js.map","import { COORDINATE_SYSTEM, PROJECTION_MODE } from '../../lib/constants';\nimport project from '../project/project';\nimport { Vector3, Matrix4 } from '@math.gl/core';\nimport memoize from '../../utils/memoize';\nimport { pixelsToWorld } from '@math.gl/web-mercator';\nconst vs = \"\\nconst int max_lights = 2;\\nuniform mat4 shadow_uViewProjectionMatrices[max_lights];\\nuniform vec4 shadow_uProjectCenters[max_lights];\\nuniform bool shadow_uDrawShadowMap;\\nuniform bool shadow_uUseShadowMap;\\nuniform int shadow_uLightId;\\nuniform float shadow_uLightCount;\\n\\nvarying vec3 shadow_vPosition[max_lights];\\n\\nvec4 shadow_setVertexPosition(vec4 position_commonspace) {\\n  if (shadow_uDrawShadowMap) {\\n    return project_common_position_to_clipspace(position_commonspace, shadow_uViewProjectionMatrices[shadow_uLightId], shadow_uProjectCenters[shadow_uLightId]);\\n  }\\n  if (shadow_uUseShadowMap) {\\n    for (int i = 0; i < max_lights; i++) {\\n      if(i < int(shadow_uLightCount)) {\\n        vec4 shadowMap_position = project_common_position_to_clipspace(position_commonspace, shadow_uViewProjectionMatrices[i], shadow_uProjectCenters[i]);\\n        shadow_vPosition[i] = (shadowMap_position.xyz / shadowMap_position.w + 1.0) / 2.0;\\n      }\\n    }\\n  }\\n  return gl_Position;\\n}\\n\";\nconst fs = \"\\nconst int max_lights = 2;\\nuniform bool shadow_uDrawShadowMap;\\nuniform bool shadow_uUseShadowMap;\\nuniform sampler2D shadow_uShadowMap0;\\nuniform sampler2D shadow_uShadowMap1;\\nuniform vec4 shadow_uColor;\\nuniform float shadow_uLightCount;\\n\\nvarying vec3 shadow_vPosition[max_lights];\\n\\nconst vec4 bitPackShift = vec4(1.0, 255.0, 65025.0, 16581375.0);\\nconst vec4 bitUnpackShift = 1.0 / bitPackShift;\\nconst vec4 bitMask = vec4(1.0 / 255.0, 1.0 / 255.0, 1.0 / 255.0,  0.0);\\n\\nfloat shadow_getShadowWeight(vec3 position, sampler2D shadowMap) {\\n  vec4 rgbaDepth = texture2D(shadowMap, position.xy);\\n\\n  float z = dot(rgbaDepth, bitUnpackShift);\\n  return smoothstep(0.001, 0.01, position.z - z);\\n}\\n\\nvec4 shadow_filterShadowColor(vec4 color) {\\n  if (shadow_uDrawShadowMap) {\\n    vec4 rgbaDepth = fract(gl_FragCoord.z * bitPackShift);\\n    rgbaDepth -= rgbaDepth.gbaa * bitMask;\\n    return rgbaDepth;\\n  }\\n  if (shadow_uUseShadowMap) {\\n    float shadowAlpha = 0.0;\\n    shadowAlpha += shadow_getShadowWeight(shadow_vPosition[0], shadow_uShadowMap0);\\n    if(shadow_uLightCount > 1.0) {\\n      shadowAlpha += shadow_getShadowWeight(shadow_vPosition[1], shadow_uShadowMap1);\\n    }\\n    shadowAlpha *= shadow_uColor.a / shadow_uLightCount;\\n    float blendedAlpha = shadowAlpha + color.a * (1.0 - shadowAlpha);\\n\\n    return vec4(\\n      mix(color.rgb, shadow_uColor.rgb, shadowAlpha / blendedAlpha),\\n      blendedAlpha\\n    );\\n  }\\n  return color;\\n}\\n\";\nconst getMemoizedViewportCenterPosition = memoize(getViewportCenterPosition);\nconst getMemoizedViewProjectionMatrices = memoize(getViewProjectionMatrices);\nconst DEFAULT_SHADOW_COLOR = [0, 0, 0, 1.0];\nconst VECTOR_TO_POINT_MATRIX = [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0];\n\nfunction screenToCommonSpace(xyz, pixelUnprojectionMatrix) {\n  const [x, y, z] = xyz;\n  const coord = pixelsToWorld([x, y, z], pixelUnprojectionMatrix);\n\n  if (Number.isFinite(z)) {\n    return coord;\n  }\n\n  return [coord[0], coord[1], 0];\n}\n\nfunction getViewportCenterPosition({\n  viewport,\n  center\n}) {\n  return new Matrix4(viewport.viewProjectionMatrix).invert().transform(center);\n}\n\nfunction getViewProjectionMatrices({\n  viewport,\n  shadowMatrices\n}) {\n  const projectionMatrices = [];\n  const pixelUnprojectionMatrix = viewport.pixelUnprojectionMatrix;\n  const farZ = viewport.isGeospatial ? undefined : 1;\n  const corners = [[0, 0, farZ], [viewport.width, 0, farZ], [0, viewport.height, farZ], [viewport.width, viewport.height, farZ], [0, 0, -1], [viewport.width, 0, -1], [0, viewport.height, -1], [viewport.width, viewport.height, -1]].map(pixel => screenToCommonSpace(pixel, pixelUnprojectionMatrix));\n\n  for (const shadowMatrix of shadowMatrices) {\n    const viewMatrix = shadowMatrix.clone().translate(new Vector3(viewport.center).negate());\n    const positions = corners.map(corner => viewMatrix.transform(corner));\n    const projectionMatrix = new Matrix4().ortho({\n      left: Math.min(...positions.map(position => position[0])),\n      right: Math.max(...positions.map(position => position[0])),\n      bottom: Math.min(...positions.map(position => position[1])),\n      top: Math.max(...positions.map(position => position[1])),\n      near: Math.min(...positions.map(position => -position[2])),\n      far: Math.max(...positions.map(position => -position[2]))\n    });\n    projectionMatrices.push(projectionMatrix.multiplyRight(shadowMatrix));\n  }\n\n  return projectionMatrices;\n}\n\nfunction createShadowUniforms(opts, context) {\n  const {\n    shadowEnabled = true\n  } = opts;\n\n  if (!shadowEnabled || !opts.shadowMatrices || !opts.shadowMatrices.length) {\n    return {\n      shadow_uDrawShadowMap: false,\n      shadow_uUseShadowMap: false\n    };\n  }\n\n  const uniforms = {\n    shadow_uDrawShadowMap: Boolean(opts.drawToShadowMap),\n    shadow_uUseShadowMap: opts.shadowMaps ? opts.shadowMaps.length > 0 : false,\n    shadow_uColor: opts.shadowColor || DEFAULT_SHADOW_COLOR,\n    shadow_uLightId: opts.shadowLightId || 0,\n    shadow_uLightCount: opts.shadowMatrices.length\n  };\n  const center = getMemoizedViewportCenterPosition({\n    viewport: opts.viewport,\n    center: context.project_uCenter\n  });\n  const projectCenters = [];\n  const viewProjectionMatrices = getMemoizedViewProjectionMatrices({\n    shadowMatrices: opts.shadowMatrices,\n    viewport: opts.viewport\n  }).slice();\n\n  for (let i = 0; i < opts.shadowMatrices.length; i++) {\n    const viewProjectionMatrix = viewProjectionMatrices[i];\n    const viewProjectionMatrixCentered = viewProjectionMatrix.clone().translate(new Vector3(opts.viewport.center).negate());\n\n    if (context.project_uCoordinateSystem === COORDINATE_SYSTEM.LNGLAT && context.project_uProjectionMode === PROJECTION_MODE.WEB_MERCATOR) {\n      viewProjectionMatrices[i] = viewProjectionMatrixCentered;\n      projectCenters[i] = center;\n    } else {\n      viewProjectionMatrices[i] = viewProjectionMatrix.clone().multiplyRight(VECTOR_TO_POINT_MATRIX);\n      projectCenters[i] = viewProjectionMatrixCentered.transform(center);\n    }\n  }\n\n  for (let i = 0; i < viewProjectionMatrices.length; i++) {\n    uniforms[\"shadow_uViewProjectionMatrices[\".concat(i, \"]\")] = viewProjectionMatrices[i];\n    uniforms[\"shadow_uProjectCenters[\".concat(i, \"]\")] = projectCenters[i];\n\n    if (opts.shadowMaps && opts.shadowMaps.length > 0) {\n      uniforms[\"shadow_uShadowMap\".concat(i)] = opts.shadowMaps[i];\n    } else {\n      uniforms[\"shadow_uShadowMap\".concat(i)] = opts.dummyShadowMap;\n    }\n  }\n\n  return uniforms;\n}\n\nexport default {\n  name: 'shadow',\n  dependencies: [project],\n  vs,\n  fs,\n  inject: {\n    'vs:DECKGL_FILTER_GL_POSITION': \"\\n    position = shadow_setVertexPosition(geometry.position);\\n    \",\n    'fs:DECKGL_FILTER_COLOR': \"\\n    color = shadow_filterShadowColor(color);\\n    \"\n  },\n  getUniforms: (opts = {}, context = {}) => {\n    if ('viewport' in opts && (opts.drawToShadowMap || opts.shadowMaps && opts.shadowMaps.length > 0)) {\n      return createShadowUniforms(opts, context);\n    }\n\n    return {};\n  }\n};\n//# sourceMappingURL=shadow.js.map","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport TransitionInterpolator from './transition-interpolator';\nimport { lerp } from '@math.gl/core';\nconst DEFAULT_PROPS = ['longitude', 'latitude', 'zoom', 'bearing', 'pitch'];\nconst DEFAULT_REQUIRED_PROPS = ['longitude', 'latitude', 'zoom'];\nexport default class LinearInterpolator extends TransitionInterpolator {\n  constructor(opts = {}) {\n    const transitionProps = Array.isArray(opts) ? opts : opts.transitionProps;\n    const normalizedOpts = Array.isArray(opts) ? {} : opts;\n    normalizedOpts.transitionProps = Array.isArray(transitionProps) ? {\n      compare: transitionProps,\n      required: transitionProps\n    } : transitionProps || {\n      compare: DEFAULT_PROPS,\n      required: DEFAULT_REQUIRED_PROPS\n    };\n    super(normalizedOpts.transitionProps);\n\n    _defineProperty(this, \"opts\", void 0);\n\n    this.opts = normalizedOpts;\n  }\n\n  initializeProps(startProps, endProps) {\n    const result = super.initializeProps(startProps, endProps);\n    const {\n      makeViewport,\n      around\n    } = this.opts;\n\n    if (makeViewport && around) {\n      const startViewport = makeViewport(startProps);\n      const endViewport = makeViewport(endProps);\n      const aroundPosition = startViewport.unproject(around);\n      result.start.around = around;\n      Object.assign(result.end, {\n        around: endViewport.project(aroundPosition),\n        aroundPosition,\n        width: endProps.width,\n        height: endProps.height\n      });\n    }\n\n    return result;\n  }\n\n  interpolateProps(startProps, endProps, t) {\n    const propsInTransition = {};\n\n    for (const key of this._propsToExtract) {\n      propsInTransition[key] = lerp(startProps[key] || 0, endProps[key] || 0, t);\n    }\n\n    if (endProps.aroundPosition && this.opts.makeViewport) {\n      const viewport = this.opts.makeViewport({ ...endProps,\n        ...propsInTransition\n      });\n      Object.assign(propsInTransition, viewport.panByPosition(endProps.aroundPosition, lerp(startProps.around, endProps.around, t)));\n    }\n\n    return propsInTransition;\n  }\n\n}\n//# sourceMappingURL=linear-interpolator.js.map","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { equals } from '@math.gl/core';\nimport assert from '../utils/assert';\nexport default class TransitionInterpolator {\n  constructor(opts) {\n    _defineProperty(this, \"_propsToCompare\", void 0);\n\n    _defineProperty(this, \"_propsToExtract\", void 0);\n\n    _defineProperty(this, \"_requiredProps\", void 0);\n\n    const {\n      compare,\n      extract,\n      required\n    } = opts;\n    this._propsToCompare = compare;\n    this._propsToExtract = extract || compare;\n    this._requiredProps = required;\n  }\n\n  arePropsEqual(currentProps, nextProps) {\n    for (const key of this._propsToCompare) {\n      if (!(key in currentProps) || !(key in nextProps) || !equals(currentProps[key], nextProps[key])) {\n        return false;\n      }\n    }\n\n    return true;\n  }\n\n  initializeProps(startProps, endProps) {\n    const startViewStateProps = {};\n    const endViewStateProps = {};\n\n    for (const key of this._propsToExtract) {\n      if (key in startProps || key in endProps) {\n        startViewStateProps[key] = startProps[key];\n        endViewStateProps[key] = endProps[key];\n      }\n    }\n\n    this._checkRequiredProps(startViewStateProps);\n\n    this._checkRequiredProps(endViewStateProps);\n\n    return {\n      start: startViewStateProps,\n      end: endViewStateProps\n    };\n  }\n\n  getDuration(startProps, endProps) {\n    return endProps.transitionDuration;\n  }\n\n  _checkRequiredProps(props) {\n    if (!this._requiredProps) {\n      return;\n    }\n\n    this._requiredProps.forEach(propName => {\n      const value = props[propName];\n      assert(Number.isFinite(value) || Array.isArray(value), \"\".concat(propName, \" is required for transition\"));\n    });\n  }\n\n}\n//# sourceMappingURL=transition-interpolator.js.map","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nexport default class Transition {\n  constructor(timeline) {\n    _defineProperty(this, \"_inProgress\", void 0);\n\n    _defineProperty(this, \"_handle\", void 0);\n\n    _defineProperty(this, \"_timeline\", void 0);\n\n    _defineProperty(this, \"time\", void 0);\n\n    _defineProperty(this, \"settings\", void 0);\n\n    this._inProgress = false;\n    this._handle = null;\n    this._timeline = timeline;\n    this.time = 0;\n    this.settings = {\n      duration: 0\n    };\n  }\n\n  get inProgress() {\n    return this._inProgress;\n  }\n\n  start(settings) {\n    var _this$settings$onStar, _this$settings;\n\n    this.cancel();\n    this.settings = settings;\n    this._inProgress = true;\n    (_this$settings$onStar = (_this$settings = this.settings).onStart) === null || _this$settings$onStar === void 0 ? void 0 : _this$settings$onStar.call(_this$settings, this);\n  }\n\n  end() {\n    if (this._inProgress) {\n      var _this$settings$onEnd, _this$settings2;\n\n      this._timeline.removeChannel(this._handle);\n\n      this._handle = null;\n      this._inProgress = false;\n      (_this$settings$onEnd = (_this$settings2 = this.settings).onEnd) === null || _this$settings$onEnd === void 0 ? void 0 : _this$settings$onEnd.call(_this$settings2, this);\n    }\n  }\n\n  cancel() {\n    if (this._inProgress) {\n      var _this$settings$onInte, _this$settings3;\n\n      (_this$settings$onInte = (_this$settings3 = this.settings).onInterrupt) === null || _this$settings$onInte === void 0 ? void 0 : _this$settings$onInte.call(_this$settings3, this);\n\n      this._timeline.removeChannel(this._handle);\n\n      this._handle = null;\n      this._inProgress = false;\n    }\n  }\n\n  update() {\n    var _this$settings$onUpda, _this$settings4;\n\n    if (!this._inProgress) {\n      return false;\n    }\n\n    if (this._handle === null) {\n      const {\n        _timeline: timeline,\n        settings\n      } = this;\n      this._handle = timeline.addChannel({\n        delay: timeline.getTime(),\n        duration: settings.duration\n      });\n    }\n\n    this.time = this._timeline.getTime(this._handle);\n\n    this._onUpdate();\n\n    (_this$settings$onUpda = (_this$settings4 = this.settings).onUpdate) === null || _this$settings$onUpda === void 0 ? void 0 : _this$settings$onUpda.call(_this$settings4, this);\n\n    if (this._timeline.isFinished(this._handle)) {\n      this.end();\n    }\n\n    return true;\n  }\n\n  _onUpdate() {}\n\n}\n//# sourceMappingURL=transition.js.map","export default function assert(condition, message) {\n  if (!condition) {\n    throw new Error(message || 'deck.gl: assertion failed.');\n  }\n}\n//# sourceMappingURL=assert.js.map","const ERR_NOT_OBJECT = 'count(): argument not an object';\nconst ERR_NOT_CONTAINER = 'count(): argument not a container';\nexport function count(container) {\n  if (!isObject(container)) {\n    throw new Error(ERR_NOT_OBJECT);\n  }\n\n  if (typeof container.count === 'function') {\n    return container.count();\n  }\n\n  if (Number.isFinite(container.size)) {\n    return container.size;\n  }\n\n  if (Number.isFinite(container.length)) {\n    return container.length;\n  }\n\n  if (isPlainObject(container)) {\n    return Object.keys(container).length;\n  }\n\n  throw new Error(ERR_NOT_CONTAINER);\n}\n\nfunction isPlainObject(value) {\n  return value !== null && typeof value === 'object' && value.constructor === Object;\n}\n\nfunction isObject(value) {\n  return value !== null && typeof value === 'object';\n}\n//# sourceMappingURL=count.js.map","export function deepEqual(a, b, depth) {\n  if (a === b) {\n    return true;\n  }\n\n  if (!depth || !a || !b) {\n    return false;\n  }\n\n  if (Array.isArray(a)) {\n    if (!Array.isArray(b) || a.length !== b.length) {\n      return false;\n    }\n\n    for (let i = 0; i < a.length; i++) {\n      if (!deepEqual(a[i], b[i], depth - 1)) {\n        return false;\n      }\n    }\n\n    return true;\n  }\n\n  if (Array.isArray(b)) {\n    return false;\n  }\n\n  if (typeof a === 'object' && typeof b === 'object') {\n    const aKeys = Object.keys(a);\n    const bKeys = Object.keys(b);\n\n    if (aKeys.length !== bKeys.length) {\n      return false;\n    }\n\n    for (const key of aKeys) {\n      if (!b.hasOwnProperty(key)) {\n        return false;\n      }\n\n      if (!deepEqual(a[key], b[key], depth - 1)) {\n        return false;\n      }\n    }\n\n    return true;\n  }\n\n  return false;\n}\n//# sourceMappingURL=deep-equal.js.map","export function flatten(array, filter = () => true) {\n  if (!Array.isArray(array)) {\n    return filter(array) ? [array] : [];\n  }\n\n  return flattenArray(array, filter, []);\n}\n\nfunction flattenArray(array, filter, result) {\n  let index = -1;\n\n  while (++index < array.length) {\n    const value = array[index];\n\n    if (Array.isArray(value)) {\n      flattenArray(value, filter, result);\n    } else if (filter(value)) {\n      result.push(value);\n    }\n  }\n\n  return result;\n}\n\nexport function fillArray({\n  target,\n  source,\n  start = 0,\n  count = 1\n}) {\n  const length = source.length;\n  const total = count * length;\n  let copied = 0;\n\n  for (let i = start; copied < length; copied++) {\n    target[i++] = source[copied];\n  }\n\n  while (copied < total) {\n    if (copied < total - copied) {\n      target.copyWithin(start + copied, start, start + copied);\n      copied *= 2;\n    } else {\n      target.copyWithin(start + copied, start, start + total - copied);\n      copied = total;\n    }\n  }\n\n  return target;\n}\n//# sourceMappingURL=flatten.js.map","const EMPTY_ARRAY = [];\nconst placeholderArray = [];\nexport function createIterable(data, startRow = 0, endRow = Infinity) {\n  let iterable = EMPTY_ARRAY;\n  const objectInfo = {\n    index: -1,\n    data,\n    target: []\n  };\n\n  if (!data) {\n    iterable = EMPTY_ARRAY;\n  } else if (typeof data[Symbol.iterator] === 'function') {\n    iterable = data;\n  } else if (data.length > 0) {\n    placeholderArray.length = data.length;\n    iterable = placeholderArray;\n  }\n\n  if (startRow > 0 || Number.isFinite(endRow)) {\n    iterable = (Array.isArray(iterable) ? iterable : Array.from(iterable)).slice(startRow, endRow);\n    objectInfo.index = startRow - 1;\n  }\n\n  return {\n    iterable,\n    objectInfo\n  };\n}\nexport function isAsyncIterable(data) {\n  return data && data[Symbol.asyncIterator];\n}\nexport function getAccessorFromBuffer(typedArray, options) {\n  const {\n    size,\n    stride,\n    offset,\n    startIndices,\n    nested\n  } = options;\n  const bytesPerElement = typedArray.BYTES_PER_ELEMENT;\n  const elementStride = stride ? stride / bytesPerElement : size;\n  const elementOffset = offset ? offset / bytesPerElement : 0;\n  const vertexCount = Math.floor((typedArray.length - elementOffset) / elementStride);\n  return (_, {\n    index,\n    target\n  }) => {\n    if (!startIndices) {\n      const sourceIndex = index * elementStride + elementOffset;\n\n      for (let j = 0; j < size; j++) {\n        target[j] = typedArray[sourceIndex + j];\n      }\n\n      return target;\n    }\n\n    const startIndex = startIndices[index];\n    const endIndex = startIndices[index + 1] || vertexCount;\n    let result;\n\n    if (nested) {\n      result = new Array(endIndex - startIndex);\n\n      for (let i = startIndex; i < endIndex; i++) {\n        const sourceIndex = i * elementStride + elementOffset;\n        target = new Array(size);\n\n        for (let j = 0; j < size; j++) {\n          target[j] = typedArray[sourceIndex + j];\n        }\n\n        result[i - startIndex] = target;\n      }\n    } else if (elementStride === size) {\n      result = typedArray.subarray(startIndex * size + elementOffset, endIndex * size + elementOffset);\n    } else {\n      result = new typedArray.constructor((endIndex - startIndex) * size);\n      let targetIndex = 0;\n\n      for (let i = startIndex; i < endIndex; i++) {\n        const sourceIndex = i * elementStride + elementOffset;\n\n        for (let j = 0; j < size; j++) {\n          result[targetIndex++] = typedArray[sourceIndex + j];\n        }\n      }\n    }\n\n    return result;\n  };\n}\n//# sourceMappingURL=iterable-utils.js.map","import { Log } from '@probe.gl/log';\nexport default new Log({\n  id: 'deck'\n});\n//# sourceMappingURL=log.js.map","import typedArrayManager from './typed-array-manager';\nimport { Vector3 } from '@math.gl/core';\nexport function createMat4() {\n  return [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1];\n}\nexport function mod(value, divisor) {\n  const modulus = value % divisor;\n  return modulus < 0 ? divisor + modulus : modulus;\n}\nexport function getCameraPosition(viewMatrixInverse) {\n  return [viewMatrixInverse[12], viewMatrixInverse[13], viewMatrixInverse[14]];\n}\nexport function getFrustumPlanes(viewProjectionMatrix) {\n  return {\n    left: getFrustumPlane(viewProjectionMatrix[3] + viewProjectionMatrix[0], viewProjectionMatrix[7] + viewProjectionMatrix[4], viewProjectionMatrix[11] + viewProjectionMatrix[8], viewProjectionMatrix[15] + viewProjectionMatrix[12]),\n    right: getFrustumPlane(viewProjectionMatrix[3] - viewProjectionMatrix[0], viewProjectionMatrix[7] - viewProjectionMatrix[4], viewProjectionMatrix[11] - viewProjectionMatrix[8], viewProjectionMatrix[15] - viewProjectionMatrix[12]),\n    bottom: getFrustumPlane(viewProjectionMatrix[3] + viewProjectionMatrix[1], viewProjectionMatrix[7] + viewProjectionMatrix[5], viewProjectionMatrix[11] + viewProjectionMatrix[9], viewProjectionMatrix[15] + viewProjectionMatrix[13]),\n    top: getFrustumPlane(viewProjectionMatrix[3] - viewProjectionMatrix[1], viewProjectionMatrix[7] - viewProjectionMatrix[5], viewProjectionMatrix[11] - viewProjectionMatrix[9], viewProjectionMatrix[15] - viewProjectionMatrix[13]),\n    near: getFrustumPlane(viewProjectionMatrix[3] + viewProjectionMatrix[2], viewProjectionMatrix[7] + viewProjectionMatrix[6], viewProjectionMatrix[11] + viewProjectionMatrix[10], viewProjectionMatrix[15] + viewProjectionMatrix[14]),\n    far: getFrustumPlane(viewProjectionMatrix[3] - viewProjectionMatrix[2], viewProjectionMatrix[7] - viewProjectionMatrix[6], viewProjectionMatrix[11] - viewProjectionMatrix[10], viewProjectionMatrix[15] - viewProjectionMatrix[14])\n  };\n}\nconst scratchVector = new Vector3();\n\nfunction getFrustumPlane(a, b, c, d) {\n  scratchVector.set(a, b, c);\n  const L = scratchVector.len();\n  return {\n    distance: d / L,\n    normal: new Vector3(-a / L, -b / L, -c / L)\n  };\n}\n\nexport function fp64LowPart(x) {\n  return x - Math.fround(x);\n}\nlet scratchArray;\nexport function toDoublePrecisionArray(typedArray, options) {\n  const {\n    size = 1,\n    startIndex = 0\n  } = options;\n  const endIndex = options.endIndex !== undefined ? options.endIndex : typedArray.length;\n  const count = (endIndex - startIndex) / size;\n  scratchArray = typedArrayManager.allocate(scratchArray, count, {\n    type: Float32Array,\n    size: size * 2\n  });\n  let sourceIndex = startIndex;\n  let targetIndex = 0;\n\n  while (sourceIndex < endIndex) {\n    for (let j = 0; j < size; j++) {\n      const value = typedArray[sourceIndex++];\n      scratchArray[targetIndex + j] = value;\n      scratchArray[targetIndex + j + size] = fp64LowPart(value);\n    }\n\n    targetIndex += size * 2;\n  }\n\n  return scratchArray.subarray(0, count * size * 2);\n}\nexport function mergeBounds(boundsList) {\n  let mergedBounds = null;\n  let isMerged = false;\n\n  for (const bounds of boundsList) {\n    if (!bounds) continue;\n\n    if (!mergedBounds) {\n      mergedBounds = bounds;\n    } else {\n      if (!isMerged) {\n        mergedBounds = [[mergedBounds[0][0], mergedBounds[0][1]], [mergedBounds[1][0], mergedBounds[1][1]]];\n        isMerged = true;\n      }\n\n      mergedBounds[0][0] = Math.min(mergedBounds[0][0], bounds[0][0]);\n      mergedBounds[0][1] = Math.min(mergedBounds[0][1], bounds[0][1]);\n      mergedBounds[1][0] = Math.max(mergedBounds[1][0], bounds[1][0]);\n      mergedBounds[1][1] = Math.max(mergedBounds[1][1], bounds[1][1]);\n    }\n  }\n\n  return mergedBounds;\n}\n//# sourceMappingURL=math-utils.js.map","function isEqual(a, b) {\n  if (a === b) {\n    return true;\n  }\n\n  if (Array.isArray(a)) {\n    const len = a.length;\n\n    if (!b || b.length !== len) {\n      return false;\n    }\n\n    for (let i = 0; i < len; i++) {\n      if (a[i] !== b[i]) {\n        return false;\n      }\n    }\n\n    return true;\n  }\n\n  return false;\n}\n\nexport default function memoize(compute) {\n  let cachedArgs = {};\n  let cachedResult;\n  return args => {\n    for (const key in args) {\n      if (!isEqual(args[key], cachedArgs[key])) {\n        cachedResult = compute(args);\n        cachedArgs = args;\n        break;\n      }\n    }\n\n    return cachedResult;\n  };\n}\n//# sourceMappingURL=memoize.js.map","export function mergeShaders(target, source) {\n  if (!source) {\n    return target;\n  }\n\n  const result = { ...target,\n    ...source\n  };\n\n  if ('defines' in source) {\n    result.defines = { ...target.defines,\n      ...source.defines\n    };\n  }\n\n  if ('modules' in source) {\n    result.modules = (target.modules || []).concat(source.modules);\n\n    if (source.modules.some(module => module.name === 'project64')) {\n      const index = result.modules.findIndex(module => module.name === 'project32');\n\n      if (index >= 0) {\n        result.modules.splice(index, 1);\n      }\n    }\n  }\n\n  if ('inject' in source) {\n    if (!target.inject) {\n      result.inject = source.inject;\n    } else {\n      const mergedInjection = { ...target.inject\n      };\n\n      for (const key in source.inject) {\n        mergedInjection[key] = (mergedInjection[key] || '') + source.inject[key];\n      }\n\n      result.inject = mergedInjection;\n    }\n  }\n\n  return result;\n}\n//# sourceMappingURL=shader.js.map","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { createIterable, getAccessorFromBuffer } from './iterable-utils';\nimport defaultTypedArrayManager from './typed-array-manager';\nimport assert from './assert';\nimport { Buffer } from '@luma.gl/webgl';\nexport default class Tesselator {\n  constructor(opts) {\n    _defineProperty(this, \"opts\", void 0);\n\n    _defineProperty(this, \"typedArrayManager\", void 0);\n\n    _defineProperty(this, \"indexStarts\", [0]);\n\n    _defineProperty(this, \"vertexStarts\", [0]);\n\n    _defineProperty(this, \"vertexCount\", 0);\n\n    _defineProperty(this, \"instanceCount\", 0);\n\n    _defineProperty(this, \"attributes\", void 0);\n\n    _defineProperty(this, \"_attributeDefs\", void 0);\n\n    _defineProperty(this, \"data\", void 0);\n\n    _defineProperty(this, \"getGeometry\", void 0);\n\n    _defineProperty(this, \"geometryBuffer\", void 0);\n\n    _defineProperty(this, \"buffers\", void 0);\n\n    _defineProperty(this, \"positionSize\", void 0);\n\n    _defineProperty(this, \"normalize\", void 0);\n\n    const {\n      attributes = {}\n    } = opts;\n    this.typedArrayManager = defaultTypedArrayManager;\n    this.attributes = {};\n    this._attributeDefs = attributes;\n    this.opts = opts;\n    this.updateGeometry(opts);\n  }\n\n  updateGeometry(opts) {\n    Object.assign(this.opts, opts);\n    const {\n      data,\n      buffers = {},\n      getGeometry,\n      geometryBuffer,\n      positionFormat,\n      dataChanged,\n      normalize = true\n    } = this.opts;\n    this.data = data;\n    this.getGeometry = getGeometry;\n    this.positionSize = geometryBuffer && geometryBuffer.size || (positionFormat === 'XY' ? 2 : 3);\n    this.buffers = buffers;\n    this.normalize = normalize;\n\n    if (geometryBuffer) {\n      assert(data.startIndices);\n      this.getGeometry = this.getGeometryFromBuffer(geometryBuffer);\n\n      if (!normalize) {\n        buffers.positions = geometryBuffer;\n      }\n    }\n\n    this.geometryBuffer = buffers.positions;\n\n    if (Array.isArray(dataChanged)) {\n      for (const dataRange of dataChanged) {\n        this._rebuildGeometry(dataRange);\n      }\n    } else {\n      this._rebuildGeometry();\n    }\n  }\n\n  updatePartialGeometry({\n    startRow,\n    endRow\n  }) {\n    this._rebuildGeometry({\n      startRow,\n      endRow\n    });\n  }\n\n  getGeometryFromBuffer(geometryBuffer) {\n    const value = geometryBuffer.value || geometryBuffer;\n\n    if (!ArrayBuffer.isView(value)) {\n      return null;\n    }\n\n    return getAccessorFromBuffer(value, {\n      size: this.positionSize,\n      offset: geometryBuffer.offset,\n      stride: geometryBuffer.stride,\n      startIndices: this.data.startIndices\n    });\n  }\n\n  _allocate(instanceCount, copy) {\n    const {\n      attributes,\n      buffers,\n      _attributeDefs,\n      typedArrayManager\n    } = this;\n\n    for (const name in _attributeDefs) {\n      if (name in buffers) {\n        typedArrayManager.release(attributes[name]);\n        attributes[name] = null;\n      } else {\n        const def = _attributeDefs[name];\n        def.copy = copy;\n        attributes[name] = typedArrayManager.allocate(attributes[name], instanceCount, def);\n      }\n    }\n  }\n\n  _forEachGeometry(visitor, startRow, endRow) {\n    const {\n      data,\n      getGeometry\n    } = this;\n    const {\n      iterable,\n      objectInfo\n    } = createIterable(data, startRow, endRow);\n\n    for (const object of iterable) {\n      objectInfo.index++;\n      const geometry = getGeometry ? getGeometry(object, objectInfo) : null;\n      visitor(geometry, objectInfo.index);\n    }\n  }\n\n  _rebuildGeometry(dataRange) {\n    if (!this.data) {\n      return;\n    }\n\n    let {\n      indexStarts,\n      vertexStarts,\n      instanceCount\n    } = this;\n    const {\n      data,\n      geometryBuffer\n    } = this;\n    const {\n      startRow = 0,\n      endRow = Infinity\n    } = dataRange || {};\n    const normalizedData = {};\n\n    if (!dataRange) {\n      indexStarts = [0];\n      vertexStarts = [0];\n    }\n\n    if (this.normalize || !geometryBuffer) {\n      this._forEachGeometry((geometry, dataIndex) => {\n        const normalizedGeometry = geometry && this.normalizeGeometry(geometry);\n        normalizedData[dataIndex] = normalizedGeometry;\n        vertexStarts[dataIndex + 1] = vertexStarts[dataIndex] + (normalizedGeometry ? this.getGeometrySize(normalizedGeometry) : 0);\n      }, startRow, endRow);\n\n      instanceCount = vertexStarts[vertexStarts.length - 1];\n    } else {\n      vertexStarts = data.startIndices;\n      instanceCount = vertexStarts[data.length] || 0;\n\n      if (ArrayBuffer.isView(geometryBuffer)) {\n        instanceCount = instanceCount || geometryBuffer.length / this.positionSize;\n      } else if (geometryBuffer instanceof Buffer) {\n        const byteStride = geometryBuffer.accessor.stride || this.positionSize * 4;\n        instanceCount = instanceCount || geometryBuffer.byteLength / byteStride;\n      } else if (geometryBuffer.buffer) {\n        const byteStride = geometryBuffer.stride || this.positionSize * 4;\n        instanceCount = instanceCount || geometryBuffer.buffer.byteLength / byteStride;\n      } else if (geometryBuffer.value) {\n        const bufferValue = geometryBuffer.value;\n        const elementStride = geometryBuffer.stride / bufferValue.BYTES_PER_ELEMENT || this.positionSize;\n        instanceCount = instanceCount || bufferValue.length / elementStride;\n      }\n    }\n\n    this._allocate(instanceCount, Boolean(dataRange));\n\n    this.indexStarts = indexStarts;\n    this.vertexStarts = vertexStarts;\n    this.instanceCount = instanceCount;\n    const context = {};\n\n    this._forEachGeometry((geometry, dataIndex) => {\n      const normalizedGeometry = normalizedData[dataIndex] || geometry;\n      context.vertexStart = vertexStarts[dataIndex];\n      context.indexStart = indexStarts[dataIndex];\n      const vertexEnd = dataIndex < vertexStarts.length - 1 ? vertexStarts[dataIndex + 1] : instanceCount;\n      context.geometrySize = vertexEnd - vertexStarts[dataIndex];\n      context.geometryIndex = dataIndex;\n      this.updateGeometryAttributes(normalizedGeometry, context);\n    }, startRow, endRow);\n\n    this.vertexCount = indexStarts[indexStarts.length - 1];\n  }\n\n}\n//# sourceMappingURL=tesselator.js.map","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nexport class TypedArrayManager {\n  constructor(options = {}) {\n    _defineProperty(this, \"_pool\", []);\n\n    _defineProperty(this, \"opts\", {\n      overAlloc: 2,\n      poolSize: 100\n    });\n\n    this.setOptions(options);\n  }\n\n  setOptions(options) {\n    Object.assign(this.opts, options);\n  }\n\n  allocate(typedArray, count, {\n    size = 1,\n    type,\n    padding = 0,\n    copy = false,\n    initialize = false,\n    maxCount\n  }) {\n    const Type = type || typedArray && typedArray.constructor || Float32Array;\n    const newSize = count * size + padding;\n\n    if (ArrayBuffer.isView(typedArray)) {\n      if (newSize <= typedArray.length) {\n        return typedArray;\n      }\n\n      if (newSize * typedArray.BYTES_PER_ELEMENT <= typedArray.buffer.byteLength) {\n        return new Type(typedArray.buffer, 0, newSize);\n      }\n    }\n\n    let maxSize = Infinity;\n\n    if (maxCount) {\n      maxSize = maxCount * size + padding;\n    }\n\n    const newArray = this._allocate(Type, newSize, initialize, maxSize);\n\n    if (typedArray && copy) {\n      newArray.set(typedArray);\n    } else if (!initialize) {\n      newArray.fill(0, 0, 4);\n    }\n\n    this._release(typedArray);\n\n    return newArray;\n  }\n\n  release(typedArray) {\n    this._release(typedArray);\n  }\n\n  _allocate(Type, size, initialize, maxSize) {\n    let sizeToAllocate = Math.max(Math.ceil(size * this.opts.overAlloc), 1);\n\n    if (sizeToAllocate > maxSize) {\n      sizeToAllocate = maxSize;\n    }\n\n    const pool = this._pool;\n    const byteLength = Type.BYTES_PER_ELEMENT * sizeToAllocate;\n    const i = pool.findIndex(b => b.byteLength >= byteLength);\n\n    if (i >= 0) {\n      const array = new Type(pool.splice(i, 1)[0], 0, sizeToAllocate);\n\n      if (initialize) {\n        array.fill(0);\n      }\n\n      return array;\n    }\n\n    return new Type(sizeToAllocate);\n  }\n\n  _release(typedArray) {\n    if (!ArrayBuffer.isView(typedArray)) {\n      return;\n    }\n\n    const pool = this._pool;\n    const {\n      buffer\n    } = typedArray;\n    const {\n      byteLength\n    } = buffer;\n    const i = pool.findIndex(b => b.byteLength >= byteLength);\n\n    if (i < 0) {\n      pool.push(buffer);\n    } else if (i > 0 || pool.length < this.opts.poolSize) {\n      pool.splice(i, 0, buffer);\n    }\n\n    if (pool.length > this.opts.poolSize) {\n      pool.shift();\n    }\n  }\n\n}\nexport default new TypedArrayManager();\n//# sourceMappingURL=typed-array-manager.js.map","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Matrix4 } from '@math.gl/core';\nimport Viewport from './viewport';\nimport { PROJECTION_MODE } from '../lib/constants';\nimport * as vec3 from 'gl-matrix/vec3';\nimport * as vec4 from 'gl-matrix/vec4';\nconst DEGREES_TO_RADIANS = Math.PI / 180;\nconst RADIANS_TO_DEGREES = 180 / Math.PI;\nconst EARTH_RADIUS = 6370972;\nconst GLOBE_RADIUS = 256;\n\nfunction getDistanceScales() {\n  const unitsPerMeter = GLOBE_RADIUS / EARTH_RADIUS;\n  const unitsPerDegree = Math.PI / 180 * GLOBE_RADIUS;\n  return {\n    unitsPerMeter: [unitsPerMeter, unitsPerMeter, unitsPerMeter],\n    unitsPerMeter2: [0, 0, 0],\n    metersPerUnit: [1 / unitsPerMeter, 1 / unitsPerMeter, 1 / unitsPerMeter],\n    unitsPerDegree: [unitsPerDegree, unitsPerDegree, unitsPerMeter],\n    unitsPerDegree2: [0, 0, 0],\n    degreesPerUnit: [1 / unitsPerDegree, 1 / unitsPerDegree, 1 / unitsPerMeter]\n  };\n}\n\nexport default class GlobeViewport extends Viewport {\n  constructor(opts = {}) {\n    const {\n      latitude = 0,\n      longitude = 0,\n      zoom = 0,\n      nearZMultiplier = 0.1,\n      farZMultiplier = 2,\n      resolution = 10\n    } = opts;\n    let {\n      height,\n      altitude = 1.5\n    } = opts;\n    height = height || 1;\n    altitude = Math.max(0.75, altitude);\n    const viewMatrix = new Matrix4().lookAt({\n      eye: [0, -altitude, 0],\n      up: [0, 0, 1]\n    });\n    const scale = Math.pow(2, zoom);\n    viewMatrix.rotateX(latitude * DEGREES_TO_RADIANS);\n    viewMatrix.rotateZ(-longitude * DEGREES_TO_RADIANS);\n    viewMatrix.scale(scale / height);\n    const halfFov = Math.atan(0.5 / altitude);\n    const relativeScale = GLOBE_RADIUS * 2 * scale / height;\n    super({ ...opts,\n      height,\n      viewMatrix,\n      longitude,\n      latitude,\n      zoom,\n      distanceScales: getDistanceScales(),\n      fovyRadians: halfFov * 2,\n      focalDistance: altitude,\n      near: nearZMultiplier,\n      far: Math.min(2, 1 / relativeScale + 1) * altitude * farZMultiplier\n    });\n\n    _defineProperty(this, \"longitude\", void 0);\n\n    _defineProperty(this, \"latitude\", void 0);\n\n    _defineProperty(this, \"resolution\", void 0);\n\n    this.latitude = latitude;\n    this.longitude = longitude;\n    this.resolution = resolution;\n  }\n\n  get projectionMode() {\n    return PROJECTION_MODE.GLOBE;\n  }\n\n  getDistanceScales() {\n    return this.distanceScales;\n  }\n\n  getBounds(options = {}) {\n    const unprojectOption = {\n      targetZ: options.z || 0\n    };\n    const left = this.unproject([0, this.height / 2], unprojectOption);\n    const top = this.unproject([this.width / 2, 0], unprojectOption);\n    const right = this.unproject([this.width, this.height / 2], unprojectOption);\n    const bottom = this.unproject([this.width / 2, this.height], unprojectOption);\n    if (right[0] < this.longitude) right[0] += 360;\n    if (left[0] > this.longitude) left[0] -= 360;\n    return [Math.min(left[0], right[0], top[0], bottom[0]), Math.min(left[1], right[1], top[1], bottom[1]), Math.max(left[0], right[0], top[0], bottom[0]), Math.max(left[1], right[1], top[1], bottom[1])];\n  }\n\n  unproject(xyz, {\n    topLeft = true,\n    targetZ\n  } = {}) {\n    const [x, y, z] = xyz;\n    const y2 = topLeft ? y : this.height - y;\n    const {\n      pixelUnprojectionMatrix\n    } = this;\n    let coord;\n\n    if (Number.isFinite(z)) {\n      coord = transformVector(pixelUnprojectionMatrix, [x, y2, z, 1]);\n    } else {\n      const coord0 = transformVector(pixelUnprojectionMatrix, [x, y2, -1, 1]);\n      const coord1 = transformVector(pixelUnprojectionMatrix, [x, y2, 1, 1]);\n      const lt = ((targetZ || 0) / EARTH_RADIUS + 1) * GLOBE_RADIUS;\n      const lSqr = vec3.sqrLen(vec3.sub([], coord0, coord1));\n      const l0Sqr = vec3.sqrLen(coord0);\n      const l1Sqr = vec3.sqrLen(coord1);\n      const sSqr = (4 * l0Sqr * l1Sqr - (lSqr - l0Sqr - l1Sqr) ** 2) / 16;\n      const dSqr = 4 * sSqr / lSqr;\n      const r0 = Math.sqrt(l0Sqr - dSqr);\n      const dr = Math.sqrt(Math.max(0, lt * lt - dSqr));\n      const t = (r0 - dr) / Math.sqrt(lSqr);\n      coord = vec3.lerp([], coord0, coord1, t);\n    }\n\n    const [X, Y, Z] = this.unprojectPosition(coord);\n\n    if (Number.isFinite(z)) {\n      return [X, Y, Z];\n    }\n\n    return Number.isFinite(targetZ) ? [X, Y, targetZ] : [X, Y];\n  }\n\n  projectPosition(xyz) {\n    const [lng, lat, Z = 0] = xyz;\n    const lambda = lng * DEGREES_TO_RADIANS;\n    const phi = lat * DEGREES_TO_RADIANS;\n    const cosPhi = Math.cos(phi);\n    const D = (Z / EARTH_RADIUS + 1) * GLOBE_RADIUS;\n    return [Math.sin(lambda) * cosPhi * D, -Math.cos(lambda) * cosPhi * D, Math.sin(phi) * D];\n  }\n\n  unprojectPosition(xyz) {\n    const [x, y, z] = xyz;\n    const D = vec3.len(xyz);\n    const phi = Math.asin(z / D);\n    const lambda = Math.atan2(x, -y);\n    const lng = lambda * RADIANS_TO_DEGREES;\n    const lat = phi * RADIANS_TO_DEGREES;\n    const Z = (D / GLOBE_RADIUS - 1) * EARTH_RADIUS;\n    return [lng, lat, Z];\n  }\n\n  projectFlat(xyz) {\n    return xyz;\n  }\n\n  unprojectFlat(xyz) {\n    return xyz;\n  }\n\n  panByPosition(coords, pixel) {\n    const fromPosition = this.unproject(pixel);\n    return {\n      longitude: coords[0] - fromPosition[0] + this.longitude,\n      latitude: coords[1] - fromPosition[1] + this.latitude\n    };\n  }\n\n}\n\nfunction transformVector(matrix, vector) {\n  const result = vec4.transformMat4([], vector, matrix);\n  vec4.scale(result, result, 1 / result[3]);\n  return result;\n}\n//# sourceMappingURL=globe-viewport.js.map","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport log from '../utils/log';\nimport { createMat4, getCameraPosition, getFrustumPlanes } from '../utils/math-utils';\nimport { Matrix4, Vector3, equals, clamp } from '@math.gl/core';\nimport * as mat4 from 'gl-matrix/mat4';\nimport { getDistanceScales, getMeterZoom, lngLatToWorld, worldToLngLat, worldToPixels, pixelsToWorld } from '@math.gl/web-mercator';\nimport { PROJECTION_MODE } from '../lib/constants';\nconst DEGREES_TO_RADIANS = Math.PI / 180;\nconst IDENTITY = createMat4();\nconst ZERO_VECTOR = [0, 0, 0];\nconst DEFAULT_DISTANCE_SCALES = {\n  unitsPerMeter: [1, 1, 1],\n  metersPerUnit: [1, 1, 1]\n};\n\nfunction createProjectionMatrix({\n  width,\n  height,\n  orthographic,\n  fovyRadians,\n  focalDistance,\n  padding,\n  near,\n  far\n}) {\n  const aspect = width / height;\n  const matrix = orthographic ? new Matrix4().orthographic({\n    fovy: fovyRadians,\n    aspect,\n    focalDistance,\n    near,\n    far\n  }) : new Matrix4().perspective({\n    fovy: fovyRadians,\n    aspect,\n    near,\n    far\n  });\n\n  if (padding) {\n    const {\n      left = 0,\n      right = 0,\n      top = 0,\n      bottom = 0\n    } = padding;\n    const offsetX = clamp((left + width - right) / 2, 0, width) - width / 2;\n    const offsetY = clamp((top + height - bottom) / 2, 0, height) - height / 2;\n    matrix[8] -= offsetX * 2 / width;\n    matrix[9] += offsetY * 2 / height;\n  }\n\n  return matrix;\n}\n\nexport default class Viewport {\n  constructor(opts = {}) {\n    _defineProperty(this, \"id\", void 0);\n\n    _defineProperty(this, \"x\", void 0);\n\n    _defineProperty(this, \"y\", void 0);\n\n    _defineProperty(this, \"width\", void 0);\n\n    _defineProperty(this, \"height\", void 0);\n\n    _defineProperty(this, \"padding\", void 0);\n\n    _defineProperty(this, \"isGeospatial\", void 0);\n\n    _defineProperty(this, \"zoom\", void 0);\n\n    _defineProperty(this, \"focalDistance\", void 0);\n\n    _defineProperty(this, \"position\", void 0);\n\n    _defineProperty(this, \"modelMatrix\", void 0);\n\n    _defineProperty(this, \"distanceScales\", void 0);\n\n    _defineProperty(this, \"scale\", void 0);\n\n    _defineProperty(this, \"center\", void 0);\n\n    _defineProperty(this, \"cameraPosition\", void 0);\n\n    _defineProperty(this, \"projectionMatrix\", void 0);\n\n    _defineProperty(this, \"viewMatrix\", void 0);\n\n    _defineProperty(this, \"viewMatrixUncentered\", void 0);\n\n    _defineProperty(this, \"viewMatrixInverse\", void 0);\n\n    _defineProperty(this, \"viewProjectionMatrix\", void 0);\n\n    _defineProperty(this, \"pixelProjectionMatrix\", void 0);\n\n    _defineProperty(this, \"pixelUnprojectionMatrix\", void 0);\n\n    _defineProperty(this, \"resolution\", void 0);\n\n    _defineProperty(this, \"_frustumPlanes\", {});\n\n    this.id = opts.id || this.constructor.displayName || 'viewport';\n    this.x = opts.x || 0;\n    this.y = opts.y || 0;\n    this.width = opts.width || 1;\n    this.height = opts.height || 1;\n    this.zoom = opts.zoom || 0;\n    this.padding = opts.padding;\n    this.distanceScales = opts.distanceScales || DEFAULT_DISTANCE_SCALES;\n    this.focalDistance = opts.focalDistance || 1;\n    this.position = opts.position || ZERO_VECTOR;\n    this.modelMatrix = opts.modelMatrix || null;\n    const {\n      longitude,\n      latitude\n    } = opts;\n    this.isGeospatial = Number.isFinite(latitude) && Number.isFinite(longitude);\n\n    this._initProps(opts);\n\n    this._initMatrices(opts);\n\n    this.equals = this.equals.bind(this);\n    this.project = this.project.bind(this);\n    this.unproject = this.unproject.bind(this);\n    this.projectPosition = this.projectPosition.bind(this);\n    this.unprojectPosition = this.unprojectPosition.bind(this);\n    this.projectFlat = this.projectFlat.bind(this);\n    this.unprojectFlat = this.unprojectFlat.bind(this);\n  }\n\n  get subViewports() {\n    return null;\n  }\n\n  get metersPerPixel() {\n    return this.distanceScales.metersPerUnit[2] / this.scale;\n  }\n\n  get projectionMode() {\n    if (this.isGeospatial) {\n      return this.zoom < 12 ? PROJECTION_MODE.WEB_MERCATOR : PROJECTION_MODE.WEB_MERCATOR_AUTO_OFFSET;\n    }\n\n    return PROJECTION_MODE.IDENTITY;\n  }\n\n  equals(viewport) {\n    if (!(viewport instanceof Viewport)) {\n      return false;\n    }\n\n    if (this === viewport) {\n      return true;\n    }\n\n    return viewport.width === this.width && viewport.height === this.height && viewport.scale === this.scale && equals(viewport.projectionMatrix, this.projectionMatrix) && equals(viewport.viewMatrix, this.viewMatrix);\n  }\n\n  project(xyz, {\n    topLeft = true\n  } = {}) {\n    const worldPosition = this.projectPosition(xyz);\n    const coord = worldToPixels(worldPosition, this.pixelProjectionMatrix);\n    const [x, y] = coord;\n    const y2 = topLeft ? y : this.height - y;\n    return xyz.length === 2 ? [x, y2] : [x, y2, coord[2]];\n  }\n\n  unproject(xyz, {\n    topLeft = true,\n    targetZ\n  } = {}) {\n    const [x, y, z] = xyz;\n    const y2 = topLeft ? y : this.height - y;\n    const targetZWorld = targetZ && targetZ * this.distanceScales.unitsPerMeter[2];\n    const coord = pixelsToWorld([x, y2, z], this.pixelUnprojectionMatrix, targetZWorld);\n    const [X, Y, Z] = this.unprojectPosition(coord);\n\n    if (Number.isFinite(z)) {\n      return [X, Y, Z];\n    }\n\n    return Number.isFinite(targetZ) ? [X, Y, targetZ] : [X, Y];\n  }\n\n  projectPosition(xyz) {\n    const [X, Y] = this.projectFlat(xyz);\n    const Z = (xyz[2] || 0) * this.distanceScales.unitsPerMeter[2];\n    return [X, Y, Z];\n  }\n\n  unprojectPosition(xyz) {\n    const [X, Y] = this.unprojectFlat(xyz);\n    const Z = (xyz[2] || 0) * this.distanceScales.metersPerUnit[2];\n    return [X, Y, Z];\n  }\n\n  projectFlat(xyz) {\n    if (this.isGeospatial) {\n      const result = lngLatToWorld(xyz);\n      result[1] = clamp(result[1], -318, 830);\n      return result;\n    }\n\n    return xyz;\n  }\n\n  unprojectFlat(xyz) {\n    if (this.isGeospatial) {\n      return worldToLngLat(xyz);\n    }\n\n    return xyz;\n  }\n\n  getBounds(options = {}) {\n    const unprojectOption = {\n      targetZ: options.z || 0\n    };\n    const topLeft = this.unproject([0, 0], unprojectOption);\n    const topRight = this.unproject([this.width, 0], unprojectOption);\n    const bottomLeft = this.unproject([0, this.height], unprojectOption);\n    const bottomRight = this.unproject([this.width, this.height], unprojectOption);\n    return [Math.min(topLeft[0], topRight[0], bottomLeft[0], bottomRight[0]), Math.min(topLeft[1], topRight[1], bottomLeft[1], bottomRight[1]), Math.max(topLeft[0], topRight[0], bottomLeft[0], bottomRight[0]), Math.max(topLeft[1], topRight[1], bottomLeft[1], bottomRight[1])];\n  }\n\n  getDistanceScales(coordinateOrigin) {\n    if (coordinateOrigin) {\n      return getDistanceScales({\n        longitude: coordinateOrigin[0],\n        latitude: coordinateOrigin[1],\n        highPrecision: true\n      });\n    }\n\n    return this.distanceScales;\n  }\n\n  containsPixel({\n    x,\n    y,\n    width = 1,\n    height = 1\n  }) {\n    return x < this.x + this.width && this.x < x + width && y < this.y + this.height && this.y < y + height;\n  }\n\n  getFrustumPlanes() {\n    if (this._frustumPlanes.near) {\n      return this._frustumPlanes;\n    }\n\n    Object.assign(this._frustumPlanes, getFrustumPlanes(this.viewProjectionMatrix));\n    return this._frustumPlanes;\n  }\n\n  panByPosition(coords, pixel) {\n    return null;\n  }\n\n  _initProps(opts) {\n    const longitude = opts.longitude;\n    const latitude = opts.latitude;\n\n    if (this.isGeospatial) {\n      if (!Number.isFinite(opts.zoom)) {\n        this.zoom = getMeterZoom({\n          latitude\n        }) + Math.log2(this.focalDistance);\n      }\n\n      this.distanceScales = opts.distanceScales || getDistanceScales({\n        latitude,\n        longitude\n      });\n    }\n\n    const scale = Math.pow(2, this.zoom);\n    this.scale = scale;\n    const {\n      position,\n      modelMatrix\n    } = opts;\n    let meterOffset = ZERO_VECTOR;\n\n    if (position) {\n      meterOffset = modelMatrix ? new Matrix4(modelMatrix).transformAsVector(position, []) : position;\n    }\n\n    if (this.isGeospatial) {\n      const center = this.projectPosition([longitude, latitude, 0]);\n      this.center = new Vector3(meterOffset).scale(this.distanceScales.unitsPerMeter).add(center);\n    } else {\n      this.center = this.projectPosition(meterOffset);\n    }\n  }\n\n  _initMatrices(opts) {\n    const {\n      viewMatrix = IDENTITY,\n      projectionMatrix = null,\n      orthographic = false,\n      fovyRadians,\n      fovy = 75,\n      near = 0.1,\n      far = 1000,\n      padding = null,\n      focalDistance = 1\n    } = opts;\n    this.viewMatrixUncentered = viewMatrix;\n    this.viewMatrix = new Matrix4().multiplyRight(viewMatrix).translate(new Vector3(this.center).negate());\n    this.projectionMatrix = projectionMatrix || createProjectionMatrix({\n      width: this.width,\n      height: this.height,\n      orthographic,\n      fovyRadians: fovyRadians || fovy * DEGREES_TO_RADIANS,\n      focalDistance,\n      padding,\n      near,\n      far\n    });\n    const vpm = createMat4();\n    mat4.multiply(vpm, vpm, this.projectionMatrix);\n    mat4.multiply(vpm, vpm, this.viewMatrix);\n    this.viewProjectionMatrix = vpm;\n    this.viewMatrixInverse = mat4.invert([], this.viewMatrix) || this.viewMatrix;\n    this.cameraPosition = getCameraPosition(this.viewMatrixInverse);\n    const viewportMatrix = createMat4();\n    const pixelProjectionMatrix = createMat4();\n    mat4.scale(viewportMatrix, viewportMatrix, [this.width / 2, -this.height / 2, 1]);\n    mat4.translate(viewportMatrix, viewportMatrix, [1, -1, 0]);\n    mat4.multiply(pixelProjectionMatrix, viewportMatrix, this.viewProjectionMatrix);\n    this.pixelProjectionMatrix = pixelProjectionMatrix;\n    this.pixelUnprojectionMatrix = mat4.invert(createMat4(), this.pixelProjectionMatrix);\n\n    if (!this.pixelUnprojectionMatrix) {\n      log.warn('Pixel project matrix not invertible')();\n    }\n  }\n\n}\n\n_defineProperty(Viewport, \"displayName\", 'Viewport');\n//# sourceMappingURL=viewport.js.map","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport Viewport from './viewport';\nimport { pixelsToWorld, getViewMatrix, addMetersToLngLat, unitsPerMeter, getProjectionParameters, altitudeToFovy, fovyToAltitude, fitBounds, getBounds } from '@math.gl/web-mercator';\nimport * as vec2 from 'gl-matrix/vec2';\nimport { Matrix4, clamp } from '@math.gl/core';\nexport default class WebMercatorViewport extends Viewport {\n  constructor(opts = {}) {\n    const {\n      latitude = 0,\n      longitude = 0,\n      zoom = 0,\n      pitch = 0,\n      bearing = 0,\n      nearZMultiplier = 0.1,\n      farZMultiplier = 1.01,\n      nearZ,\n      farZ,\n      orthographic = false,\n      projectionMatrix,\n      repeat = false,\n      worldOffset = 0,\n      position,\n      padding,\n      legacyMeterSizes = false\n    } = opts;\n    let {\n      width,\n      height,\n      altitude = 1.5\n    } = opts;\n    const scale = Math.pow(2, zoom);\n    width = width || 1;\n    height = height || 1;\n    let fovy;\n    let projectionParameters = null;\n\n    if (projectionMatrix) {\n      altitude = projectionMatrix[5] / 2;\n      fovy = altitudeToFovy(altitude);\n    } else {\n      if (opts.fovy) {\n        fovy = opts.fovy;\n        altitude = fovyToAltitude(fovy);\n      } else {\n        fovy = altitudeToFovy(altitude);\n      }\n\n      let offset;\n\n      if (padding) {\n        const {\n          top = 0,\n          bottom = 0\n        } = padding;\n        offset = [0, clamp((top + height - bottom) / 2, 0, height) - height / 2];\n      }\n\n      projectionParameters = getProjectionParameters({\n        width,\n        height,\n        scale,\n        center: position && [0, 0, position[2] * unitsPerMeter(latitude)],\n        offset,\n        pitch,\n        fovy,\n        nearZMultiplier,\n        farZMultiplier\n      });\n\n      if (Number.isFinite(nearZ)) {\n        projectionParameters.near = nearZ;\n      }\n\n      if (Number.isFinite(farZ)) {\n        projectionParameters.far = farZ;\n      }\n    }\n\n    let viewMatrixUncentered = getViewMatrix({\n      height,\n      pitch,\n      bearing,\n      scale,\n      altitude\n    });\n\n    if (worldOffset) {\n      const viewOffset = new Matrix4().translate([512 * worldOffset, 0, 0]);\n      viewMatrixUncentered = viewOffset.multiplyLeft(viewMatrixUncentered);\n    }\n\n    super({ ...opts,\n      width,\n      height,\n      viewMatrix: viewMatrixUncentered,\n      longitude,\n      latitude,\n      zoom,\n      ...projectionParameters,\n      fovy,\n      focalDistance: altitude\n    });\n\n    _defineProperty(this, \"longitude\", void 0);\n\n    _defineProperty(this, \"latitude\", void 0);\n\n    _defineProperty(this, \"pitch\", void 0);\n\n    _defineProperty(this, \"bearing\", void 0);\n\n    _defineProperty(this, \"altitude\", void 0);\n\n    _defineProperty(this, \"fovy\", void 0);\n\n    _defineProperty(this, \"orthographic\", void 0);\n\n    _defineProperty(this, \"_subViewports\", void 0);\n\n    _defineProperty(this, \"_pseudoMeters\", void 0);\n\n    this.latitude = latitude;\n    this.longitude = longitude;\n    this.zoom = zoom;\n    this.pitch = pitch;\n    this.bearing = bearing;\n    this.altitude = altitude;\n    this.fovy = fovy;\n    this.orthographic = orthographic;\n    this._subViewports = repeat ? [] : null;\n    this._pseudoMeters = legacyMeterSizes;\n    Object.freeze(this);\n  }\n\n  get subViewports() {\n    if (this._subViewports && !this._subViewports.length) {\n      const bounds = this.getBounds();\n      const minOffset = Math.floor((bounds[0] + 180) / 360);\n      const maxOffset = Math.ceil((bounds[2] - 180) / 360);\n\n      for (let x = minOffset; x <= maxOffset; x++) {\n        const offsetViewport = x ? new WebMercatorViewport({ ...this,\n          worldOffset: x\n        }) : this;\n\n        this._subViewports.push(offsetViewport);\n      }\n    }\n\n    return this._subViewports;\n  }\n\n  projectPosition(xyz) {\n    if (this._pseudoMeters) {\n      return super.projectPosition(xyz);\n    }\n\n    const [X, Y] = this.projectFlat(xyz);\n    const Z = (xyz[2] || 0) * unitsPerMeter(xyz[1]);\n    return [X, Y, Z];\n  }\n\n  unprojectPosition(xyz) {\n    if (this._pseudoMeters) {\n      return super.unprojectPosition(xyz);\n    }\n\n    const [X, Y] = this.unprojectFlat(xyz);\n    const Z = (xyz[2] || 0) / unitsPerMeter(Y);\n    return [X, Y, Z];\n  }\n\n  addMetersToLngLat(lngLatZ, xyz) {\n    return addMetersToLngLat(lngLatZ, xyz);\n  }\n\n  panByPosition(coords, pixel) {\n    const fromLocation = pixelsToWorld(pixel, this.pixelUnprojectionMatrix);\n    const toLocation = this.projectFlat(coords);\n    const translate = vec2.add([], toLocation, vec2.negate([], fromLocation));\n    const newCenter = vec2.add([], this.center, translate);\n    const [longitude, latitude] = this.unprojectFlat(newCenter);\n    return {\n      longitude,\n      latitude\n    };\n  }\n\n  getBounds(options = {}) {\n    const corners = getBounds(this, options.z || 0);\n    return [Math.min(corners[0][0], corners[1][0], corners[2][0], corners[3][0]), Math.min(corners[0][1], corners[1][1], corners[2][1], corners[3][1]), Math.max(corners[0][0], corners[1][0], corners[2][0], corners[3][0]), Math.max(corners[0][1], corners[1][1], corners[2][1], corners[3][1])];\n  }\n\n  fitBounds(bounds, options = {}) {\n    const {\n      width,\n      height\n    } = this;\n    const {\n      longitude,\n      latitude,\n      zoom\n    } = fitBounds({\n      width,\n      height,\n      bounds,\n      ...options\n    });\n    return new WebMercatorViewport({\n      width,\n      height,\n      longitude,\n      latitude,\n      zoom\n    });\n  }\n\n}\n\n_defineProperty(WebMercatorViewport, \"displayName\", 'WebMercatorViewport');\n//# sourceMappingURL=web-mercator-viewport.js.map","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport View from './view';\nimport WebMercatorViewport from '../viewports/web-mercator-viewport';\nimport MapController from '../controllers/map-controller';\nexport default class MapView extends View {\n  get ViewportType() {\n    return WebMercatorViewport;\n  }\n\n  get ControllerType() {\n    return MapController;\n  }\n\n}\n\n_defineProperty(MapView, \"displayName\", 'MapView');\n//# sourceMappingURL=map-view.js.map","const PERCENT_OR_PIXELS_REGEX = /([0-9]+\\.?[0-9]*)(%|px)/;\nexport function parsePosition(value) {\n  switch (typeof value) {\n    case 'number':\n      return {\n        position: value,\n        relative: false\n      };\n\n    case 'string':\n      const match = PERCENT_OR_PIXELS_REGEX.exec(value);\n\n      if (match && match.length >= 3) {\n        const relative = match[2] === '%';\n        const position = parseFloat(match[1]);\n        return {\n          position: relative ? position / 100 : position,\n          relative\n        };\n      }\n\n    default:\n      throw new Error(\"Could not parse position string \".concat(value));\n  }\n}\nexport function getPosition(position, extent) {\n  return position.relative ? Math.round(position.position * extent) : position.position;\n}\n//# sourceMappingURL=positions.js.map","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport Viewport from '../viewports/viewport';\nimport { parsePosition, getPosition } from '../utils/positions';\nimport { deepEqual } from '../utils/deep-equal';\nimport assert from '../utils/assert';\nexport default class View {\n  constructor(props) {\n    _defineProperty(this, \"id\", void 0);\n\n    _defineProperty(this, \"viewportInstance\", void 0);\n\n    _defineProperty(this, \"_x\", void 0);\n\n    _defineProperty(this, \"_y\", void 0);\n\n    _defineProperty(this, \"_width\", void 0);\n\n    _defineProperty(this, \"_height\", void 0);\n\n    _defineProperty(this, \"_padding\", void 0);\n\n    _defineProperty(this, \"props\", void 0);\n\n    const {\n      id,\n      x = 0,\n      y = 0,\n      width = '100%',\n      height = '100%',\n      padding = null,\n      viewportInstance\n    } = props || {};\n    assert(!viewportInstance || viewportInstance instanceof Viewport);\n    this.viewportInstance = viewportInstance;\n    this.id = id || this.constructor.displayName || 'view';\n    this.props = { ...props,\n      id: this.id\n    };\n    this._x = parsePosition(x);\n    this._y = parsePosition(y);\n    this._width = parsePosition(width);\n    this._height = parsePosition(height);\n    this._padding = padding && {\n      left: parsePosition(padding.left || 0),\n      right: parsePosition(padding.right || 0),\n      top: parsePosition(padding.top || 0),\n      bottom: parsePosition(padding.bottom || 0)\n    };\n    this.equals = this.equals.bind(this);\n    Object.seal(this);\n  }\n\n  equals(view) {\n    if (this === view) {\n      return true;\n    }\n\n    if (this.viewportInstance) {\n      return view.viewportInstance ? this.viewportInstance.equals(view.viewportInstance) : false;\n    }\n\n    return this.ViewportType === view.ViewportType && deepEqual(this.props, view.props, 2);\n  }\n\n  makeViewport({\n    width,\n    height,\n    viewState\n  }) {\n    if (this.viewportInstance) {\n      return this.viewportInstance;\n    }\n\n    viewState = this.filterViewState(viewState);\n    const viewportDimensions = this.getDimensions({\n      width,\n      height\n    });\n\n    if (!viewportDimensions.height || !viewportDimensions.width) {\n      return null;\n    }\n\n    return new this.ViewportType({ ...viewState,\n      ...this.props,\n      ...viewportDimensions\n    });\n  }\n\n  getViewStateId() {\n    const {\n      viewState\n    } = this.props;\n\n    if (typeof viewState === 'string') {\n      return viewState;\n    }\n\n    return (viewState === null || viewState === void 0 ? void 0 : viewState.id) || this.id;\n  }\n\n  filterViewState(viewState) {\n    if (this.props.viewState && typeof this.props.viewState === 'object') {\n      if (!this.props.viewState.id) {\n        return this.props.viewState;\n      }\n\n      const newViewState = { ...viewState\n      };\n\n      for (const key in this.props.viewState) {\n        if (key !== 'id') {\n          newViewState[key] = this.props.viewState[key];\n        }\n      }\n\n      return newViewState;\n    }\n\n    return viewState;\n  }\n\n  getDimensions({\n    width,\n    height\n  }) {\n    const dimensions = {\n      x: getPosition(this._x, width),\n      y: getPosition(this._y, height),\n      width: getPosition(this._width, width),\n      height: getPosition(this._height, height)\n    };\n\n    if (this._padding) {\n      dimensions.padding = {\n        left: getPosition(this._padding.left, width),\n        top: getPosition(this._padding.top, height),\n        right: getPosition(this._padding.right, width),\n        bottom: getPosition(this._padding.bottom, height)\n      };\n    }\n\n    return dimensions;\n  }\n\n  get controller() {\n    const opts = this.props.controller;\n\n    if (!opts) {\n      return null;\n    }\n\n    if (opts === true) {\n      return {\n        type: this.ControllerType\n      };\n    }\n\n    if (typeof opts === 'function') {\n      return {\n        type: opts\n      };\n    }\n\n    return {\n      type: this.ControllerType,\n      ...opts\n    };\n  }\n\n}\n//# sourceMappingURL=view.js.map","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nexport class DataSource {\n  constructor(props) {\n    _defineProperty(this, \"fetch\", void 0);\n    _defineProperty(this, \"loadOptions\", void 0);\n    _defineProperty(this, \"_needsRefresh\", true);\n    _defineProperty(this, \"props\", void 0);\n    this.props = {\n      ...props\n    };\n    this.loadOptions = {\n      ...props.loadOptions\n    };\n    this.fetch = getFetchFunction(this.loadOptions);\n  }\n  setProps(props) {\n    this.props = Object.assign(this.props, props);\n    this.setNeedsRefresh();\n  }\n  setNeedsRefresh() {\n    this._needsRefresh = true;\n  }\n  getNeedsRefresh() {\n    let clear = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n    const needsRefresh = this._needsRefresh;\n    if (clear) {\n      this._needsRefresh = false;\n    }\n    return needsRefresh;\n  }\n}\nexport function getFetchFunction(options) {\n  const fetchFunction = options === null || options === void 0 ? void 0 : options.fetch;\n  if (fetchFunction && typeof fetchFunction === 'function') {\n    return (url, fetchOptions) => fetchFunction(url, fetchOptions);\n  }\n  const fetchOptions = options === null || options === void 0 ? void 0 : options.fetch;\n  if (fetchOptions && typeof fetchOptions !== 'function') {\n    return url => fetch(url, fetchOptions);\n  }\n  return url => fetch(url);\n}\n//# sourceMappingURL=data-source.js.map","import { DataSource } from './data-source';\nexport class ImageSource extends DataSource {}\n//# sourceMappingURL=image-source.js.map","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { ImageLoader } from '@loaders.gl/images';\nimport { ImageSource } from '../../sources/image-source';\nexport class ImageService extends ImageSource {\n  constructor(props) {\n    super(props);\n  }\n  async getMetadata() {\n    throw new Error('ImageSource.getMetadata not implemented');\n  }\n  async getImage(parameters) {\n    const granularParameters = this.getGranularParameters(parameters);\n    const url = this.getURLFromTemplate(granularParameters);\n    const response = await this.fetch(url);\n    const arrayBuffer = await response.arrayBuffer();\n    return await ImageLoader.parse(arrayBuffer);\n  }\n  getGranularParameters(parameters) {\n    const [east, north, west, south] = parameters.bbox;\n    return {\n      ...parameters,\n      east,\n      north,\n      south,\n      west\n    };\n  }\n  getURLFromTemplate(parameters) {\n    let url = this.props.url;\n    for (const [key, value] of Object.entries(parameters)) {\n      url = url.replace(\"${\".concat(key, \"}\"), String(value));\n      url = url.replace(\"{\".concat(key, \"}\"), String(value));\n    }\n    return url;\n  }\n}\n_defineProperty(ImageService, \"type\", 'template');\n_defineProperty(ImageService, \"testURL\", url => url.toLowerCase().includes('{'));\n//# sourceMappingURL=image-service.js.map","export function uncapitalize(str) {\n  return typeof str === 'string' ? str.charAt(0).toLowerCase() + str.slice(1) : str;\n}\nexport function uncapitalizeKeys(object) {\n  if (Array.isArray(object)) {\n    return object.map(element => uncapitalizeKeys(element));\n  }\n  if (object && typeof object === 'object') {\n    const newObject = {};\n    for (const [key, value] of Object.entries(object)) {\n      newObject[uncapitalize(key)] = uncapitalizeKeys(value);\n    }\n    return newObject;\n  }\n  return object;\n}\n//# sourceMappingURL=uncapitalize.js.map","import { fastParseXML } from './lib/parsers/parse-xml';\nimport { uncapitalizeKeys } from './lib/xml-utils/uncapitalize';\nconst VERSION = typeof \"3.4.15\" !== 'undefined' ? \"3.4.15\" : 'latest';\nexport const XMLLoader = {\n  name: 'XML',\n  id: 'xml',\n  module: 'xml',\n  version: VERSION,\n  worker: false,\n  extensions: ['xml'],\n  mimeTypes: ['application/xml', 'text/xml'],\n  testText: testXMLFile,\n  options: {\n    xml: {\n      parser: 'fast-xml-parser',\n      uncapitalizeKeys: false,\n      removeNSPrefix: false,\n      textNodeName: 'value',\n      arrayPaths: []\n    }\n  },\n  parse: async (arrayBuffer, options) => parseTextSync(new TextDecoder().decode(arrayBuffer), options),\n  parseTextSync: (text, options) => parseTextSync(text, options)\n};\nfunction testXMLFile(text) {\n  return text.startsWith('<?xml');\n}\nfunction parseTextSync(text, options) {\n  var _options$xml;\n  const xmlOptions = {\n    ...XMLLoader.options.xml,\n    ...(options === null || options === void 0 ? void 0 : options.xml)\n  };\n  switch (xmlOptions.parser) {\n    case 'fast-xml-parser':\n      const fastXMLOptions = {\n        allowBooleanAttributes: true,\n        ignoreDeclaration: true,\n        removeNSPrefix: xmlOptions.removeNSPrefix,\n        textNodeName: xmlOptions.textNodeName,\n        isArray: (name, jpath, isLeafNode, isAttribute) => {\n          var _xmlOptions$arrayPath;\n          const array = Boolean(xmlOptions === null || xmlOptions === void 0 ? void 0 : (_xmlOptions$arrayPath = xmlOptions.arrayPaths) === null || _xmlOptions$arrayPath === void 0 ? void 0 : _xmlOptions$arrayPath.some(path => jpath === path));\n          return array;\n        },\n        ...(options === null || options === void 0 ? void 0 : options._fastXML)\n      };\n      const xml = fastParseXML(text, fastXMLOptions);\n      return xmlOptions.uncapitalizeKeys ? uncapitalizeKeys(xml) : xml;\n    default:\n      throw new Error(options === null || options === void 0 ? void 0 : (_options$xml = options.xml) === null || _options$xml === void 0 ? void 0 : _options$xml.parser);\n  }\n}\nexport const _typecheckXMLLoader = XMLLoader;\n//# sourceMappingURL=xml-loader.js.map","import { StreamingXMLParser } from './streaming-xml-parser';\nimport { XMLParser as FastXMLParser } from 'fast-xml-parser';\nexport function fastParseXML(text, options) {\n  const parser = new FastXMLParser({\n    ignoreAttributes: false,\n    attributeNamePrefix: '',\n    ...options\n  });\n  const parsedXML = parser.parse(text);\n  return parsedXML;\n}\nexport function parseXMLInBatches(text) {\n  let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n  const parser = new StreamingXMLParser({\n    ...options,\n    strict: true\n  });\n  parser.write(text);\n  parser.close();\n  return parser.result;\n}\n//# sourceMappingURL=parse-xml.js.map","export function getXMLArray(xmlValue) {\n  if (Array.isArray(xmlValue)) {\n    return xmlValue;\n  }\n  if (xmlValue) {\n    return [xmlValue];\n  }\n  return [];\n}\nexport function getXMLStringArray(xmlValue) {\n  const xmlArray = getXMLArray(xmlValue);\n  if (xmlArray.length > 0 && xmlArray.every(_ => typeof _ === 'string')) {\n    return xmlArray;\n  }\n  return [];\n}\nexport function getXMLFloat(xmlValue) {\n  let defaultValue = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : undefined;\n  switch (typeof xmlValue) {\n    case 'number':\n      return xmlValue;\n    case 'string':\n      return parseFloat(xmlValue);\n    default:\n      return undefined;\n  }\n}\nexport function getXMLInteger(xmlValue) {\n  let defaultValue = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : undefined;\n  switch (typeof xmlValue) {\n    case 'number':\n      return xmlValue;\n    case 'string':\n      return parseInt(xmlValue, 10);\n    default:\n      return undefined;\n  }\n}\nexport function getXMLBoolean(xmlValue) {\n  switch (xmlValue) {\n    case 'true':\n      return true;\n    case 'false':\n      return false;\n    case '1':\n      return true;\n    case '0':\n      return false;\n    default:\n      return false;\n  }\n}\n//# sourceMappingURL=parse-xml-helpers.js.map","import { XMLLoader } from '@loaders.gl/xml';\nimport { getXMLArray, getXMLStringArray, getXMLInteger, getXMLFloat, getXMLBoolean } from '../xml/parse-xml-helpers';\nexport function parseWMSCapabilities(xmlText, options) {\n  const parsedXML = XMLLoader.parseTextSync(xmlText, options);\n  const xmlCapabilities = parsedXML.WMT_MS_Capabilities || parsedXML.WMS_Capabilities || parsedXML;\n  const capabilities = extractCapabilities(xmlCapabilities);\n  if (options !== null && options !== void 0 && options.inheritedLayerProps) {\n    for (const layer of capabilities.layers) {\n      addInheritedLayerProps(layer, null);\n    }\n  }\n  if (options !== null && options !== void 0 && options.includeRawData || options !== null && options !== void 0 && options.raw) {\n    capabilities.raw = xmlCapabilities;\n  }\n  if (options !== null && options !== void 0 && options.includeXMLText) {\n    capabilities.xml = xmlText;\n  }\n  return capabilities;\n}\nfunction extractCapabilities(xml) {\n  var _xml$Service, _xml$Service2, _xml$Service3, _xml$Service4, _xml$Service5, _xml$Service6, _xml$Service6$Keyword, _xml$Service7, _xml$Service8, _xml$Service9, _xml$Service10, _xml$Service11, _xml$Service12, _xml$Service13, _xml$Capability, _xml$Capability2;\n  const capabilities = {\n    version: String(xml.version || ''),\n    name: String(((_xml$Service = xml.Service) === null || _xml$Service === void 0 ? void 0 : _xml$Service.Name) || 'unnamed'),\n    title: (_xml$Service2 = xml.Service) !== null && _xml$Service2 !== void 0 && _xml$Service2.Title ? String((_xml$Service3 = xml.Service) === null || _xml$Service3 === void 0 ? void 0 : _xml$Service3.Title) : undefined,\n    abstract: (_xml$Service4 = xml.Service) !== null && _xml$Service4 !== void 0 && _xml$Service4.Abstract ? String((_xml$Service5 = xml.Service) === null || _xml$Service5 === void 0 ? void 0 : _xml$Service5.Abstract) : undefined,\n    keywords: getXMLStringArray((_xml$Service6 = xml.Service) === null || _xml$Service6 === void 0 ? void 0 : (_xml$Service6$Keyword = _xml$Service6.KeywordList) === null || _xml$Service6$Keyword === void 0 ? void 0 : _xml$Service6$Keyword.Keyword),\n    fees: (_xml$Service7 = xml.Service) !== null && _xml$Service7 !== void 0 && _xml$Service7.Fees ? JSON.stringify((_xml$Service8 = xml.Service) === null || _xml$Service8 === void 0 ? void 0 : _xml$Service8.Fees) : undefined,\n    accessConstraints: (_xml$Service9 = xml.Service) !== null && _xml$Service9 !== void 0 && _xml$Service9.AccessConstraints ? JSON.stringify((_xml$Service10 = xml.Service) === null || _xml$Service10 === void 0 ? void 0 : _xml$Service10.AccessConstraints) : undefined,\n    layerLimit: getXMLInteger((_xml$Service11 = xml.Service) === null || _xml$Service11 === void 0 ? void 0 : _xml$Service11.LayerLimit),\n    maxWidth: getXMLInteger((_xml$Service12 = xml.Service) === null || _xml$Service12 === void 0 ? void 0 : _xml$Service12.maxWidth),\n    maxHeight: getXMLInteger((_xml$Service13 = xml.Service) === null || _xml$Service13 === void 0 ? void 0 : _xml$Service13.maxHeight),\n    layers: [],\n    requests: extractRequests((_xml$Capability = xml.Capability) === null || _xml$Capability === void 0 ? void 0 : _xml$Capability.Request),\n    exceptions: extractExceptions(xml.Exception)\n  };\n  const xmlLayers = getXMLArray((_xml$Capability2 = xml.Capability) === null || _xml$Capability2 === void 0 ? void 0 : _xml$Capability2.Layer);\n  for (const xmlSubLayer of xmlLayers) {\n    capabilities.layers.push(extractLayer(xmlSubLayer));\n  }\n  for (const [key, value] of Object.entries(capabilities)) {\n    if (value === undefined) {\n      delete capabilities[key];\n    }\n  }\n  return capabilities;\n}\nfunction extractRequests(xmlRequests) {\n  const requests = {};\n  for (const [name, xmlRequest] of Object.entries(xmlRequests || {})) {\n    const mimeTypes = getXMLStringArray(xmlRequest === null || xmlRequest === void 0 ? void 0 : xmlRequest.Format);\n    requests[name] = {\n      mimeTypes\n    };\n  }\n  return requests;\n}\nfunction extractExceptions(xmlException) {\n  const xmlExceptionFormats = getXMLArray(xmlException === null || xmlException === void 0 ? void 0 : xmlException.Format);\n  if (xmlExceptionFormats.length > 0) {\n    return {\n      mimeTypes: getXMLStringArray(xmlException)\n    };\n  }\n  return undefined;\n}\nfunction extractLayer(xmlLayer) {\n  var _xmlLayer$KeywordList;\n  const layer = {\n    title: String((xmlLayer === null || xmlLayer === void 0 ? void 0 : xmlLayer.Title) || ''),\n    name: (xmlLayer === null || xmlLayer === void 0 ? void 0 : xmlLayer.Name) && String(xmlLayer === null || xmlLayer === void 0 ? void 0 : xmlLayer.Name),\n    abstract: (xmlLayer === null || xmlLayer === void 0 ? void 0 : xmlLayer.Name) && String(xmlLayer === null || xmlLayer === void 0 ? void 0 : xmlLayer.Abstract),\n    keywords: getXMLStringArray((_xmlLayer$KeywordList = xmlLayer.KeywordList) === null || _xmlLayer$KeywordList === void 0 ? void 0 : _xmlLayer$KeywordList.Keyword)\n  };\n  const crs = (xmlLayer === null || xmlLayer === void 0 ? void 0 : xmlLayer.CRS) || (xmlLayer === null || xmlLayer === void 0 ? void 0 : xmlLayer.SRS);\n  if (crs && Array.isArray(crs) && crs.every(_ => typeof _ === 'string')) {\n    layer.crs = crs;\n  }\n  let geographicBoundingBox = (xmlLayer === null || xmlLayer === void 0 ? void 0 : xmlLayer.EX_GeographicBoundingBox) && extractEXBoundingBox(xmlLayer === null || xmlLayer === void 0 ? void 0 : xmlLayer.EX_GeographicBoundingBox);\n  if (geographicBoundingBox) {\n    layer.geographicBoundingBox = geographicBoundingBox;\n  }\n  geographicBoundingBox = (xmlLayer === null || xmlLayer === void 0 ? void 0 : xmlLayer.LatLonBoundingBox) && extractLatLonBoundingBox(xmlLayer === null || xmlLayer === void 0 ? void 0 : xmlLayer.LatLonBoundingBox);\n  if (geographicBoundingBox) {\n    layer.geographicBoundingBox = geographicBoundingBox;\n  }\n  const boundingBoxes = (xmlLayer === null || xmlLayer === void 0 ? void 0 : xmlLayer.BoundingBox) && extractWMSBoundingBoxes(xmlLayer === null || xmlLayer === void 0 ? void 0 : xmlLayer.BoundingBox);\n  if (boundingBoxes && boundingBoxes.length > 0) {\n    layer.boundingBoxes = boundingBoxes;\n  }\n  const xmlDimensions = getXMLArray(xmlLayer === null || xmlLayer === void 0 ? void 0 : xmlLayer.Dimension);\n  const dimensions = xmlDimensions.map(xml => extractDimension(xml));\n  if (dimensions.length) {\n    layer.dimensions = dimensions;\n  }\n  if (xmlLayer !== null && xmlLayer !== void 0 && xmlLayer.opaque) {\n    layer.opaque = getXMLBoolean(xmlLayer === null || xmlLayer === void 0 ? void 0 : xmlLayer.opaque);\n  }\n  if (xmlLayer !== null && xmlLayer !== void 0 && xmlLayer.cascaded) {\n    layer.cascaded = getXMLBoolean(xmlLayer === null || xmlLayer === void 0 ? void 0 : xmlLayer.cascaded);\n  }\n  if (xmlLayer !== null && xmlLayer !== void 0 && xmlLayer.queryable) {\n    layer.queryable = getXMLBoolean(xmlLayer === null || xmlLayer === void 0 ? void 0 : xmlLayer.queryable);\n  }\n  const xmlLayers = getXMLArray(xmlLayer === null || xmlLayer === void 0 ? void 0 : xmlLayer.Layer);\n  const layers = [];\n  for (const xmlSubLayer of xmlLayers) {\n    layers.push(extractLayer(xmlSubLayer));\n  }\n  if (layers.length > 0) {\n    layer.layers = layers;\n  }\n  for (const [key, value] of Object.entries(layer)) {\n    if (value === undefined) {\n      delete layer[key];\n    }\n  }\n  return layer;\n}\nfunction extractEXBoundingBox(xmlBoundingBox) {\n  const {\n    westBoundLongitude: w,\n    northBoundLatitude: n,\n    eastBoundLongitude: e,\n    southBoundLatitude: s\n  } = xmlBoundingBox;\n  return [[w, s], [e, n]];\n}\nfunction extractLatLonBoundingBox(xmlBoundingBox) {\n  const {\n    minx,\n    miny,\n    maxx,\n    maxy\n  } = xmlBoundingBox;\n  return [[minx, miny], [maxx, maxy]];\n}\nfunction extractWMSBoundingBoxes(xmlBoundingBoxes) {\n  const xmlBoxes = getXMLArray(xmlBoundingBoxes);\n  return xmlBoxes.map(xmlBox => extractWMSBoundingBox(xmlBox));\n}\nfunction extractWMSBoundingBox(xmlBoundingBox) {\n  const {\n    CRS,\n    SRS,\n    minx,\n    miny,\n    maxx,\n    maxy,\n    resx,\n    resy\n  } = xmlBoundingBox;\n  const boundingBox = {\n    crs: CRS || SRS,\n    boundingBox: [[getXMLFloat(minx), getXMLFloat(miny)], [getXMLFloat(maxx), getXMLFloat(maxy)]]\n  };\n  if (resx) {\n    boundingBox.xResolution = resx;\n  }\n  if (resy) {\n    boundingBox.yResolution = resy;\n  }\n  return boundingBox;\n}\nfunction extractDimension(xmlDimension) {\n  const {\n    name,\n    units,\n    value: extent\n  } = xmlDimension;\n  const dimension = {\n    name,\n    units,\n    extent\n  };\n  if (xmlDimension.unitSymbol) {\n    dimension.unitSymbol = xmlDimension.unitSymbol;\n  }\n  if (xmlDimension.default) {\n    dimension.defaultValue = xmlDimension.default;\n  }\n  if (xmlDimension.multipleValues) {\n    dimension.multipleValues = getXMLBoolean(xmlDimension.multipleValues);\n  }\n  if (xmlDimension.nearestValue) {\n    dimension.nearestValue = getXMLBoolean(xmlDimension.nearestValue);\n  }\n  if (xmlDimension.current) {\n    dimension.current = getXMLBoolean(xmlDimension.current);\n  }\n  return dimension;\n}\nfunction addInheritedLayerProps(layer, parent) {\n  if (parent !== null && parent !== void 0 && parent.geographicBoundingBox && !layer.geographicBoundingBox) {\n    layer.geographicBoundingBox = [...parent.geographicBoundingBox];\n  }\n  if (parent !== null && parent !== void 0 && parent.crs && !layer.crs) {\n    layer.crs = [...parent.crs];\n  }\n  if (parent !== null && parent !== void 0 && parent.boundingBoxes && !layer.boundingBoxes) {\n    layer.boundingBoxes = [...parent.boundingBoxes];\n  }\n  if (parent !== null && parent !== void 0 && parent.dimensions && !layer.dimensions) {\n    layer.dimensions = [...parent.dimensions];\n  }\n  for (const subLayer of layer.layers || []) {\n    addInheritedLayerProps(subLayer, layer);\n  }\n}\n//# sourceMappingURL=parse-wms-capabilities.js.map","import { parseWMSCapabilities } from './lib/parsers/wms/parse-wms-capabilities';\nconst VERSION = typeof \"3.4.15\" !== 'undefined' ? \"3.4.15\" : 'latest';\nexport const WMSCapabilitiesLoader = {\n  id: 'wms-capabilities',\n  name: 'WMS Capabilities',\n  module: 'wms',\n  version: VERSION,\n  worker: false,\n  extensions: ['xml'],\n  mimeTypes: ['application/vnd.ogc.wms_xml', 'application/xml', 'text/xml'],\n  testText: testXMLFile,\n  options: {\n    wms: {}\n  },\n  parse: async (arrayBuffer, options) => parseWMSCapabilities(new TextDecoder().decode(arrayBuffer), options === null || options === void 0 ? void 0 : options.wms),\n  parseTextSync: (text, options) => parseWMSCapabilities(text, options === null || options === void 0 ? void 0 : options.wms)\n};\nfunction testXMLFile(text) {\n  return text.startsWith('<?xml');\n}\nexport const _typecheckWMSCapabilitiesLoader = WMSCapabilitiesLoader;\n//# sourceMappingURL=wms-capabilities-loader.js.map","import { XMLLoader } from '@loaders.gl/xml';\nexport function parseWMSFeatureInfo(text, options) {\n  var _parsedXML$FeatureInf;\n  const parsedXML = XMLLoader.parseTextSync(text, options);\n  const xmlFeatureInfo = ((_parsedXML$FeatureInf = parsedXML.FeatureInfoResponse) === null || _parsedXML$FeatureInf === void 0 ? void 0 : _parsedXML$FeatureInf.FIELDS) || [];\n  const xmlFeatures = Array.isArray(xmlFeatureInfo) ? xmlFeatureInfo : [xmlFeatureInfo];\n  return {\n    features: xmlFeatures.map(xmlFeature => extractFeature(xmlFeature))\n  };\n}\nfunction extractFeature(xmlFeature) {\n  const xmlFields = xmlFeature || {};\n  return {\n    attributes: xmlFields,\n    type: '',\n    bounds: {\n      bottom: 0,\n      top: 0,\n      left: 0,\n      right: 0\n    }\n  };\n}\n//# sourceMappingURL=parse-wms-features.js.map","import { WMSCapabilitiesLoader } from '../wms-capabilities-loader';\nimport { parseWMSFeatureInfo } from '../lib/parsers/wms/parse-wms-features';\nexport const WMSFeatureInfoLoader = {\n  ...WMSCapabilitiesLoader,\n  id: 'wms-feature-info',\n  name: 'WMS FeatureInfo',\n  parse: async (arrayBuffer, options) => parseWMSFeatureInfo(new TextDecoder().decode(arrayBuffer), options),\n  parseTextSync: (text, options) => parseWMSFeatureInfo(text, options)\n};\nexport const _typecheckWMSFeatureInfoLoader = WMSFeatureInfoLoader;\n//# sourceMappingURL=wms-feature-info-loader.js.map","import { XMLLoader } from '@loaders.gl/xml';\nexport function parseWMSLayerDescription(text, options) {\n  var _XMLLoader$parseTextS;\n  const parsedXML = (_XMLLoader$parseTextS = XMLLoader.parseTextSync) === null || _XMLLoader$parseTextS === void 0 ? void 0 : _XMLLoader$parseTextS.call(XMLLoader, text, options);\n  return parsedXML;\n}\n//# sourceMappingURL=parse-wms-layer-description.js.map","import { WMSCapabilitiesLoader } from '../wms-capabilities-loader';\nimport { parseWMSLayerDescription } from '../lib/parsers/wms/parse-wms-layer-description';\nexport const WMSLayerDescriptionLoader = {\n  ...WMSCapabilitiesLoader,\n  id: 'wms-layer-description',\n  name: 'WMS DescribeLayer',\n  parse: async (arrayBuffer, options) => parseWMSLayerDescription(new TextDecoder().decode(arrayBuffer), options),\n  parseTextSync: (text, options) => parseWMSLayerDescription(text, options)\n};\nexport const _typecheckWMSFeatureInfoLoader = WMSLayerDescriptionLoader;\n//# sourceMappingURL=wms-layer-description-loader.js.map","import { parseWMSError } from './lib/parsers/wms/parse-wms-error';\nconst VERSION = typeof \"3.4.15\" !== 'undefined' ? \"3.4.15\" : 'latest';\nexport const WMSErrorLoader = {\n  id: 'wms-error',\n  name: 'WMS Error',\n  module: 'wms',\n  version: VERSION,\n  worker: false,\n  extensions: ['xml'],\n  mimeTypes: ['application/vnd.ogc.se_xml', 'application/xml', 'text/xml'],\n  testText: testXMLFile,\n  options: {\n    wms: {\n      throwOnError: false\n    }\n  },\n  parse: async (arrayBuffer, options) => parseTextSync(new TextDecoder().decode(arrayBuffer), options),\n  parseSync: (arrayBuffer, options) => parseTextSync(new TextDecoder().decode(arrayBuffer), options),\n  parseTextSync: (text, options) => parseTextSync(text, options)\n};\nfunction testXMLFile(text) {\n  return text.startsWith('<?xml');\n}\nfunction parseTextSync(text, options) {\n  const wmsOptions = {\n    ...WMSErrorLoader.options.wms,\n    ...(options === null || options === void 0 ? void 0 : options.wms)\n  };\n  const error = parseWMSError(text, wmsOptions);\n  const message = wmsOptions.minimalErrors ? error : \"WMS Service error: \".concat(error);\n  if (wmsOptions.throwOnError) {\n    throw new Error(message);\n  }\n  return message;\n}\nexport const _typecheckWMSErrorLoader = WMSErrorLoader;\n//# sourceMappingURL=wms-error-loader.js.map","import { XMLLoader } from '@loaders.gl/xml';\nexport function parseWMSError(text, options) {\n  var _XMLLoader$parseTextS, _parsedXML$ServiceExc, _parsedXML$ogcServic;\n  const parsedXML = (_XMLLoader$parseTextS = XMLLoader.parseTextSync) === null || _XMLLoader$parseTextS === void 0 ? void 0 : _XMLLoader$parseTextS.call(XMLLoader, text, options);\n  const serviceExceptionXML = (parsedXML === null || parsedXML === void 0 ? void 0 : (_parsedXML$ServiceExc = parsedXML.ServiceExceptionReport) === null || _parsedXML$ServiceExc === void 0 ? void 0 : _parsedXML$ServiceExc.ServiceException) || (parsedXML === null || parsedXML === void 0 ? void 0 : (_parsedXML$ogcServic = parsedXML['ogc:ServiceExceptionReport']) === null || _parsedXML$ogcServic === void 0 ? void 0 : _parsedXML$ogcServic['ogc:ServiceException']);\n  const message = typeof serviceExceptionXML === 'string' ? serviceExceptionXML : serviceExceptionXML.value || serviceExceptionXML.code || 'Unknown error';\n  return message;\n}\n//# sourceMappingURL=parse-wms-error.js.map","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { ImageLoader } from '@loaders.gl/images';\nimport { mergeLoaderOptions } from '@loaders.gl/loader-utils';\nimport { ImageSource } from '../../sources/image-source';\nimport { WMSCapabilitiesLoader } from '../../../wms-capabilities-loader';\nimport { WMSFeatureInfoLoader } from '../../../wip/wms-feature-info-loader';\nimport { WMSLayerDescriptionLoader } from '../../../wip/wms-layer-description-loader';\nimport { WMSErrorLoader } from '../../../wms-error-loader';\nexport class WMSService extends ImageSource {\n  constructor(props) {\n    var _props$substituteCRS;\n    super(props);\n    _defineProperty(this, \"url\", void 0);\n    _defineProperty(this, \"substituteCRS84\", void 0);\n    _defineProperty(this, \"flipCRS\", void 0);\n    _defineProperty(this, \"wmsParameters\", void 0);\n    _defineProperty(this, \"vendorParameters\", void 0);\n    _defineProperty(this, \"capabilities\", null);\n    this.url = props.url;\n    this.substituteCRS84 = (_props$substituteCRS = props.substituteCRS84) !== null && _props$substituteCRS !== void 0 ? _props$substituteCRS : false;\n    this.flipCRS = ['EPSG:4326'];\n    this.wmsParameters = {\n      layers: undefined,\n      query_layers: undefined,\n      styles: undefined,\n      version: '1.3.0',\n      crs: 'EPSG:4326',\n      format: 'image/png',\n      info_format: 'text/plain',\n      transparent: undefined,\n      time: undefined,\n      elevation: undefined,\n      ...props.wmsParameters\n    };\n    this.vendorParameters = props.vendorParameters || {};\n  }\n  async getMetadata() {\n    const capabilities = await this.getCapabilities();\n    return this.normalizeMetadata(capabilities);\n  }\n  async getImage(parameters) {\n    return await this.getMap(parameters);\n  }\n  normalizeMetadata(capabilities) {\n    return capabilities;\n  }\n  async getCapabilities(wmsParameters, vendorParameters) {\n    const url = this.getCapabilitiesURL(wmsParameters, vendorParameters);\n    const response = await this.fetch(url);\n    const arrayBuffer = await response.arrayBuffer();\n    this._checkResponse(response, arrayBuffer);\n    const capabilities = await WMSCapabilitiesLoader.parse(arrayBuffer, this.loadOptions);\n    this.capabilities = capabilities;\n    return capabilities;\n  }\n  async getMap(wmsParameters, vendorParameters) {\n    const url = this.getMapURL(wmsParameters, vendorParameters);\n    const response = await this.fetch(url);\n    const arrayBuffer = await response.arrayBuffer();\n    this._checkResponse(response, arrayBuffer);\n    try {\n      return await ImageLoader.parse(arrayBuffer, this.loadOptions);\n    } catch {\n      throw this._parseError(arrayBuffer);\n    }\n  }\n  async getFeatureInfo(wmsParameters, vendorParameters) {\n    const url = this.getFeatureInfoURL(wmsParameters, vendorParameters);\n    const response = await this.fetch(url);\n    const arrayBuffer = await response.arrayBuffer();\n    this._checkResponse(response, arrayBuffer);\n    return await WMSFeatureInfoLoader.parse(arrayBuffer, this.loadOptions);\n  }\n  async getFeatureInfoText(wmsParameters, vendorParameters) {\n    const url = this.getFeatureInfoURL(wmsParameters, vendorParameters);\n    const response = await this.fetch(url);\n    const arrayBuffer = await response.arrayBuffer();\n    this._checkResponse(response, arrayBuffer);\n    return new TextDecoder().decode(arrayBuffer);\n  }\n  async describeLayer(wmsParameters, vendorParameters) {\n    const url = this.describeLayerURL(wmsParameters, vendorParameters);\n    const response = await this.fetch(url);\n    const arrayBuffer = await response.arrayBuffer();\n    this._checkResponse(response, arrayBuffer);\n    return await WMSLayerDescriptionLoader.parse(arrayBuffer, this.loadOptions);\n  }\n  async getLegendGraphic(wmsParameters, vendorParameters) {\n    const url = this.getLegendGraphicURL(wmsParameters, vendorParameters);\n    const response = await this.fetch(url);\n    const arrayBuffer = await response.arrayBuffer();\n    this._checkResponse(response, arrayBuffer);\n    try {\n      return await ImageLoader.parse(arrayBuffer, this.loadOptions);\n    } catch {\n      throw this._parseError(arrayBuffer);\n    }\n  }\n  getCapabilitiesURL(wmsParameters, vendorParameters) {\n    const options = {\n      version: this.wmsParameters.version,\n      ...wmsParameters\n    };\n    return this._getWMSUrl('GetCapabilities', options, vendorParameters);\n  }\n  getMapURL(wmsParameters, vendorParameters) {\n    wmsParameters = this._getWMS130Parameters(wmsParameters);\n    const options = {\n      version: this.wmsParameters.version,\n      format: this.wmsParameters.format,\n      transparent: this.wmsParameters.transparent,\n      time: this.wmsParameters.time,\n      elevation: this.wmsParameters.elevation,\n      layers: this.wmsParameters.layers,\n      styles: this.wmsParameters.styles,\n      crs: this.wmsParameters.crs,\n      ...wmsParameters\n    };\n    return this._getWMSUrl('GetMap', options, vendorParameters);\n  }\n  getFeatureInfoURL(wmsParameters, vendorParameters) {\n    const options = {\n      version: this.wmsParameters.version,\n      info_format: this.wmsParameters.info_format,\n      layers: this.wmsParameters.layers,\n      query_layers: this.wmsParameters.query_layers,\n      styles: this.wmsParameters.styles,\n      crs: this.wmsParameters.crs,\n      ...wmsParameters\n    };\n    return this._getWMSUrl('GetFeatureInfo', options, vendorParameters);\n  }\n  describeLayerURL(wmsParameters, vendorParameters) {\n    const options = {\n      version: this.wmsParameters.version,\n      ...wmsParameters\n    };\n    return this._getWMSUrl('DescribeLayer', options, vendorParameters);\n  }\n  getLegendGraphicURL(wmsParameters, vendorParameters) {\n    const options = {\n      version: this.wmsParameters.version,\n      ...wmsParameters\n    };\n    return this._getWMSUrl('GetLegendGraphic', options, vendorParameters);\n  }\n  _parseWMSUrl(url) {\n    const [baseUrl, search] = url.split('?');\n    const searchParams = search.split('&');\n    const parameters = {};\n    for (const parameter of searchParams) {\n      const [key, value] = parameter.split('=');\n      parameters[key] = value;\n    }\n    return {\n      url: baseUrl,\n      parameters\n    };\n  }\n  _getWMSUrl(request, wmsParameters, vendorParameters) {\n    let url = this.url;\n    let first = true;\n    const allParameters = {\n      service: 'WMS',\n      version: wmsParameters.version,\n      request,\n      ...wmsParameters,\n      ...this.vendorParameters,\n      ...vendorParameters\n    };\n    const IGNORE_EMPTY_KEYS = ['transparent', 'time', 'elevation'];\n    for (const [key, value] of Object.entries(allParameters)) {\n      if (!IGNORE_EMPTY_KEYS.includes(key) || value) {\n        url += first ? '?' : '&';\n        first = false;\n        url += this._getURLParameter(key, value, wmsParameters);\n      }\n    }\n    return encodeURI(url);\n  }\n  _getWMS130Parameters(wmsParameters) {\n    const newParameters = {\n      ...wmsParameters\n    };\n    if (newParameters.srs) {\n      newParameters.crs = newParameters.crs || newParameters.srs;\n      delete newParameters.srs;\n    }\n    return newParameters;\n  }\n  _getURLParameter(key, value, wmsParameters) {\n    switch (key) {\n      case 'crs':\n        if (wmsParameters.version !== '1.3.0') {\n          key = 'srs';\n        } else if (this.substituteCRS84 && value === 'EPSG:4326') {\n          value = 'CRS:84';\n        }\n        break;\n      case 'srs':\n        if (wmsParameters.version === '1.3.0') {\n          key = 'crs';\n        }\n        break;\n      case 'bbox':\n        const bbox = this._flipBoundingBox(value, wmsParameters);\n        if (bbox) {\n          value = bbox;\n        }\n        break;\n      default:\n    }\n    key = key.toUpperCase();\n    return Array.isArray(value) ? \"\".concat(key, \"=\").concat(value.join(',')) : \"\".concat(key, \"=\").concat(value ? String(value) : '');\n  }\n  _flipBoundingBox(bboxValue, wmsParameters) {\n    if (!Array.isArray(bboxValue) || bboxValue.length !== 4) {\n      return null;\n    }\n    const flipCoordinates = wmsParameters.version === '1.3.0' && this.flipCRS.includes(wmsParameters.crs || '') && !(this.substituteCRS84 && wmsParameters.crs === 'EPSG:4326');\n    const bbox = bboxValue;\n    return flipCoordinates ? [bbox[1], bbox[0], bbox[3], bbox[2]] : bbox;\n  }\n  async _fetchArrayBuffer(url) {\n    const response = await this.fetch(url);\n    const arrayBuffer = await response.arrayBuffer();\n    this._checkResponse(response, arrayBuffer);\n    return arrayBuffer;\n  }\n  _checkResponse(response, arrayBuffer) {\n    const contentType = response.headers['content-type'];\n    if (!response.ok || WMSErrorLoader.mimeTypes.includes(contentType)) {\n      const loadOptions = mergeLoaderOptions(this.loadOptions, {\n        wms: {\n          throwOnError: true\n        }\n      });\n      const error = WMSErrorLoader.parseSync(arrayBuffer, loadOptions);\n      throw new Error(error);\n    }\n  }\n  _parseError(arrayBuffer) {\n    const error = WMSErrorLoader.parseSync(arrayBuffer, this.loadOptions);\n    return new Error(error);\n  }\n}\n_defineProperty(WMSService, \"type\", 'wms');\n_defineProperty(WMSService, \"testURL\", url => url.toLowerCase().includes('wms'));\n//# sourceMappingURL=wms-service.js.map","export function mergeLoaderOptions(baseOptions, newOptions) {\n  const options = {\n    ...baseOptions\n  };\n  for (const [key, newValue] of Object.entries(newOptions)) {\n    if (newValue && typeof newValue === 'object') {\n      options[key] = options[key] || {};\n      Object.assign(options[key], newOptions[key]);\n    } else {\n      options[key] = newOptions[key];\n    }\n  }\n  return options;\n}\n//# sourceMappingURL=merge-loader-options.js.map","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { ImageSource } from '../../sources/image-source';\nexport class ArcGISImageServer extends ImageSource {\n  constructor(props) {\n    super(props);\n  }\n  async getMetadata() {\n    return await this.metadata();\n  }\n  async getImage(parameters) {\n    throw new Error('not implemented');\n  }\n  async metadata() {\n    throw new Error('not implemented');\n  }\n  exportImage(options) {\n    throw new Error('not implemented');\n  }\n  metadataURL(options) {\n    return \"\".concat(this.props.url, \"?f=pjson\");\n  }\n  exportImageURL(options) {\n    const bbox = \"bbox=\".concat(options.bbox[0], \",\").concat(options.bbox[1], \",\").concat(options.bbox[2], \",\").concat(options.bbox[3]);\n    const size = \"size=\".concat(options.width, \",\").concat(options.height);\n    const arcgisOptions = {\n      ...options,\n      bbox,\n      size\n    };\n    delete arcgisOptions.width;\n    delete arcgisOptions.height;\n    return this.getUrl('exportImage', arcgisOptions);\n  }\n  getUrl(path, options, extra) {\n    let url = \"\".concat(this.props.url, \"/\").concat(path);\n    let first = true;\n    for (const [key, value] of Object.entries(options)) {\n      url += first ? '?' : '&';\n      first = false;\n      if (Array.isArray(value)) {\n        url += \"\".concat(key.toUpperCase(), \"=\").concat(value.join(','));\n      } else {\n        url += \"\".concat(key.toUpperCase(), \"=\").concat(value ? String(value) : '');\n      }\n    }\n    return url;\n  }\n  async checkResponse(response) {\n    if (!response.ok) {\n      throw new Error('error');\n    }\n  }\n}\n_defineProperty(ArcGISImageServer, \"type\", 'arcgis-image-server');\n_defineProperty(ArcGISImageServer, \"testURL\", url => url.toLowerCase().includes('ImageServer'));\n//# sourceMappingURL=arcgis-image-service.js.map","import { ImageService } from './services/generic/image-service';\nimport { WMSService } from './services/ogc/wms-service';\nimport { ArcGISImageServer } from './services/arcgis/arcgis-image-service';\nconst SERVICES = [WMSService, ArcGISImageServer, ImageService];\nexport function createImageSource(props) {\n  const {\n    type = 'auto'\n  } = props;\n  const serviceType = type === 'auto' ? guessServiceType(props.url) : type;\n  switch (serviceType) {\n    case 'template':\n      return new ImageService(props);\n    case 'wms':\n      return new WMSService(props);\n    default:\n      throw new Error('Not a valid image source type');\n  }\n}\nfunction guessServiceType(url) {\n  for (const Service of SERVICES) {\n    if (Service.testURL && Service.testURL(url)) {\n      return Service.type;\n    }\n  }\n  return 'wms';\n}\n//# sourceMappingURL=create-image-source.js.map","import { lngLatToWorld } from '@math.gl/web-mercator';\nconst HALF_EARTH_CIRCUMFERENCE = 6378137 * Math.PI;\nexport function WGS84ToPseudoMercator(coord) {\n  const mercator = lngLatToWorld(coord);\n  mercator[0] = (mercator[0] / 256 - 1) * HALF_EARTH_CIRCUMFERENCE;\n  mercator[1] = (mercator[1] / 256 - 1) * HALF_EARTH_CIRCUMFERENCE;\n  return mercator;\n}\n//# sourceMappingURL=utils.js.map","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { CompositeLayer, COORDINATE_SYSTEM, _deepEqual as deepEqual } from '@deck.gl/core';\nimport { BitmapLayer } from '@deck.gl/layers';\nimport { ImageSource, createImageSource } from '@loaders.gl/wms';\nimport { WGS84ToPseudoMercator } from './utils';\nconst defaultProps = {\n  id: 'imagery-layer',\n  data: '',\n  serviceType: 'auto',\n  srs: 'auto',\n  layers: {\n    type: 'array',\n    compare: true,\n    value: []\n  },\n  onMetadataLoad: {\n    type: 'function',\n    value: () => {}\n  },\n  onMetadataLoadError: {\n    type: 'function',\n    value: console.error\n  },\n  onImageLoadStart: {\n    type: 'function',\n    value: () => {}\n  },\n  onImageLoad: {\n    type: 'function',\n    value: () => {}\n  },\n  onImageLoadError: {\n    type: 'function',\n    compare: false,\n    value: (requestId, error) => console.error(error, requestId)\n  }\n};\nexport class WMSLayer extends CompositeLayer {\n  constructor(...args) {\n    super(...args);\n\n    _defineProperty(this, \"state\", void 0);\n  }\n\n  get isLoaded() {\n    var _this$state;\n\n    return ((_this$state = this.state) === null || _this$state === void 0 ? void 0 : _this$state.loadCounter) === 0 && super.isLoaded;\n  }\n\n  shouldUpdateState() {\n    return true;\n  }\n\n  initializeState() {\n    this.state._nextRequestId = 0;\n    this.state.lastRequestId = -1;\n    this.state.loadCounter = 0;\n  }\n\n  updateState({\n    changeFlags,\n    props,\n    oldProps\n  }) {\n    const {\n      viewport\n    } = this.context;\n\n    if (changeFlags.dataChanged || props.serviceType !== oldProps.serviceType) {\n      this.state.imageSource = this._createImageSource(props);\n\n      this._loadMetadata();\n\n      this.debounce(() => this.loadImage(viewport, 'image source changed'), 0);\n    } else if (!deepEqual(props.layers, oldProps.layers, 1)) {\n      this.debounce(() => this.loadImage(viewport, 'layers changed'), 0);\n    } else if (changeFlags.viewportChanged) {\n      this.debounce(() => this.loadImage(viewport, 'viewport changed'));\n    }\n  }\n\n  finalizeState() {}\n\n  renderLayers() {\n    const {\n      bounds,\n      image,\n      lastRequestParameters\n    } = this.state;\n    return image && new BitmapLayer({ ...this.getSubLayerProps({\n        id: 'bitmap'\n      }),\n      _imageCoordinateSystem: lastRequestParameters.srs === 'EPSG:4326' ? COORDINATE_SYSTEM.LNGLAT : COORDINATE_SYSTEM.CARTESIAN,\n      bounds,\n      image\n    });\n  }\n\n  async getFeatureInfoText(x, y) {\n    const {\n      lastRequestParameters\n    } = this.state;\n\n    if (lastRequestParameters) {\n      var _this$state$imageSour, _this$state$imageSour2;\n\n      const featureInfo = await ((_this$state$imageSour = (_this$state$imageSour2 = this.state.imageSource).getFeatureInfoText) === null || _this$state$imageSour === void 0 ? void 0 : _this$state$imageSour.call(_this$state$imageSour2, { ...lastRequestParameters,\n        query_layers: lastRequestParameters.layers,\n        x,\n        y,\n        info_format: 'application/vnd.ogc.gml'\n      }));\n      return featureInfo;\n    }\n\n    return '';\n  }\n\n  _createImageSource(props) {\n    if (props.data instanceof ImageSource) {\n      return props.data;\n    }\n\n    if (typeof props.data === 'string') {\n      return createImageSource({\n        url: props.data,\n        loadOptions: props.loadOptions,\n        type: props.serviceType\n      });\n    }\n\n    throw new Error('invalid image source in props.data');\n  }\n\n  async _loadMetadata() {\n    const {\n      imageSource\n    } = this.state;\n\n    try {\n      this.state.loadCounter++;\n      const metadata = await imageSource.getMetadata();\n\n      if (this.state.imageSource === imageSource) {\n        var _this$getCurrentLayer;\n\n        (_this$getCurrentLayer = this.getCurrentLayer()) === null || _this$getCurrentLayer === void 0 ? void 0 : _this$getCurrentLayer.props.onMetadataLoad(metadata);\n      }\n    } catch (error) {\n      var _this$getCurrentLayer2;\n\n      (_this$getCurrentLayer2 = this.getCurrentLayer()) === null || _this$getCurrentLayer2 === void 0 ? void 0 : _this$getCurrentLayer2.props.onMetadataLoadError(error);\n    } finally {\n      this.state.loadCounter--;\n    }\n  }\n\n  async loadImage(viewport, reason) {\n    const {\n      layers,\n      serviceType\n    } = this.props;\n\n    if (serviceType === 'wms' && layers.length === 0) {\n      return;\n    }\n\n    const bounds = viewport.getBounds();\n    const {\n      width,\n      height\n    } = viewport;\n    const requestId = this.getRequestId();\n    let {\n      srs\n    } = this.props;\n\n    if (srs === 'auto') {\n      srs = viewport.resolution ? 'EPSG:4326' : 'EPSG:3857';\n    }\n\n    const requestParams = {\n      width,\n      height,\n      bbox: bounds,\n      layers,\n      srs\n    };\n\n    if (srs === 'EPSG:3857') {\n      const [minX, minY] = WGS84ToPseudoMercator([bounds[0], bounds[1]]);\n      const [maxX, maxY] = WGS84ToPseudoMercator([bounds[2], bounds[3]]);\n      requestParams.bbox = [minX, minY, maxX, maxY];\n    }\n\n    try {\n      this.state.loadCounter++;\n      this.props.onImageLoadStart(requestId);\n      const image = await this.state.imageSource.getImage(requestParams);\n\n      if (this.state.lastRequestId < requestId) {\n        var _this$getCurrentLayer3;\n\n        (_this$getCurrentLayer3 = this.getCurrentLayer()) === null || _this$getCurrentLayer3 === void 0 ? void 0 : _this$getCurrentLayer3.props.onImageLoad(requestId);\n        this.setState({\n          image,\n          bounds,\n          lastRequestParameters: requestParams,\n          lastRequestId: requestId\n        });\n      }\n    } catch (error) {\n      var _this$getCurrentLayer4;\n\n      this.raiseError(error, 'Load image');\n      (_this$getCurrentLayer4 = this.getCurrentLayer()) === null || _this$getCurrentLayer4 === void 0 ? void 0 : _this$getCurrentLayer4.props.onImageLoadError(requestId, error);\n    } finally {\n      this.state.loadCounter--;\n    }\n  }\n\n  getRequestId() {\n    return this.state._nextRequestId++;\n  }\n\n  debounce(fn, ms = 500) {\n    clearTimeout(this.state._timeoutId);\n    this.state._timeoutId = setTimeout(() => fn(), ms);\n  }\n\n}\n\n_defineProperty(WMSLayer, \"layerName\", 'WMSLayer');\n\n_defineProperty(WMSLayer, \"defaultProps\", defaultProps);\n//# sourceMappingURL=wms-layer.js.map","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { ArcLayer } from '@deck.gl/layers';\nconst defaultProps = {\n  getHeight: {\n    type: 'accessor',\n    value: 0\n  },\n  greatCircle: true\n};\nexport default class GreatCircleLayer extends ArcLayer {}\n\n_defineProperty(GreatCircleLayer, \"layerName\", 'GreatCircleLayer');\n\n_defineProperty(GreatCircleLayer, \"defaultProps\", defaultProps);\n//# sourceMappingURL=great-circle-layer.js.map","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { CompositeLayer } from '@deck.gl/core';\nimport { PolygonLayer } from '@deck.gl/layers';\nconst defaultProps = { ...PolygonLayer.defaultProps\n};\nexport default class GeoCellLayer extends CompositeLayer {\n  indexToBounds() {\n    return null;\n  }\n\n  renderLayers() {\n    const {\n      elevationScale,\n      extruded,\n      wireframe,\n      filled,\n      stroked,\n      lineWidthUnits,\n      lineWidthScale,\n      lineWidthMinPixels,\n      lineWidthMaxPixels,\n      lineJointRounded,\n      lineMiterLimit,\n      lineDashJustified,\n      getElevation,\n      getFillColor,\n      getLineColor,\n      getLineWidth\n    } = this.props;\n    const {\n      updateTriggers,\n      material,\n      transitions\n    } = this.props;\n    const CellLayer = this.getSubLayerClass('cell', PolygonLayer);\n    const {\n      updateTriggers: boundsUpdateTriggers,\n      ...boundsProps\n    } = this.indexToBounds() || {};\n    return new CellLayer({\n      filled,\n      wireframe,\n      extruded,\n      elevationScale,\n      stroked,\n      lineWidthUnits,\n      lineWidthScale,\n      lineWidthMinPixels,\n      lineWidthMaxPixels,\n      lineJointRounded,\n      lineMiterLimit,\n      lineDashJustified,\n      material,\n      transitions,\n      getElevation,\n      getFillColor,\n      getLineColor,\n      getLineWidth\n    }, this.getSubLayerProps({\n      id: 'cell',\n      updateTriggers: updateTriggers && { ...boundsUpdateTriggers,\n        getElevation: updateTriggers.getElevation,\n        getFillColor: updateTriggers.getFillColor,\n        getLineColor: updateTriggers.getLineColor,\n        getLineWidth: updateTriggers.getLineWidth\n      }\n    }), boundsProps);\n  }\n\n}\n\n_defineProperty(GeoCellLayer, \"layerName\", 'GeoCellLayer');\n\n_defineProperty(GeoCellLayer, \"defaultProps\", defaultProps);\n//# sourceMappingURL=GeoCellLayer.js.map","import Long from 'long';\nconst FACE_BITS = 3;\nconst MAX_LEVEL = 30;\nconst POS_BITS = 2 * MAX_LEVEL + 1;\nconst RADIAN_TO_DEGREE = 180 / Math.PI;\nexport function IJToST(ij, order, offsets) {\n  const maxSize = 1 << order;\n  return [(ij[0] + offsets[0]) / maxSize, (ij[1] + offsets[1]) / maxSize];\n}\n\nfunction singleSTtoUV(st) {\n  if (st >= 0.5) {\n    return 1 / 3.0 * (4 * st * st - 1);\n  }\n\n  return 1 / 3.0 * (1 - 4 * (1 - st) * (1 - st));\n}\n\nexport function STToUV(st) {\n  return [singleSTtoUV(st[0]), singleSTtoUV(st[1])];\n}\nexport function FaceUVToXYZ(face, [u, v]) {\n  switch (face) {\n    case 0:\n      return [1, u, v];\n\n    case 1:\n      return [-u, 1, v];\n\n    case 2:\n      return [-u, -v, 1];\n\n    case 3:\n      return [-1, -v, -u];\n\n    case 4:\n      return [v, -1, -u];\n\n    case 5:\n      return [v, u, -1];\n\n    default:\n      throw new Error('Invalid face');\n  }\n}\nexport function XYZToLngLat([x, y, z]) {\n  const lat = Math.atan2(z, Math.sqrt(x * x + y * y));\n  const lng = Math.atan2(y, x);\n  return [lng * RADIAN_TO_DEGREE, lat * RADIAN_TO_DEGREE];\n}\nexport function toHilbertQuadkey(idS) {\n  let bin = Long.fromString(idS, true, 10).toString(2);\n\n  while (bin.length < FACE_BITS + POS_BITS) {\n    bin = '0' + bin;\n  }\n\n  const lsbIndex = bin.lastIndexOf('1');\n  const faceB = bin.substring(0, 3);\n  const posB = bin.substring(3, lsbIndex);\n  const levelN = posB.length / 2;\n  const faceS = Long.fromString(faceB, true, 2).toString(10);\n  let posS = Long.fromString(posB, true, 2).toString(4);\n\n  while (posS.length < levelN) {\n    posS = '0' + posS;\n  }\n\n  return \"\".concat(faceS, \"/\").concat(posS);\n}\n\nfunction rotateAndFlipQuadrant(n, point, rx, ry) {\n  if (ry === 0) {\n    if (rx === 1) {\n      point[0] = n - 1 - point[0];\n      point[1] = n - 1 - point[1];\n    }\n\n    const x = point[0];\n    point[0] = point[1];\n    point[1] = x;\n  }\n}\n\nexport function FromHilbertQuadKey(hilbertQuadkey) {\n  const parts = hilbertQuadkey.split('/');\n  const face = parseInt(parts[0], 10);\n  const position = parts[1];\n  const maxLevel = position.length;\n  const point = [0, 0];\n  let level;\n\n  for (let i = maxLevel - 1; i >= 0; i--) {\n    level = maxLevel - i;\n    const bit = position[i];\n    let rx = 0;\n    let ry = 0;\n\n    if (bit === '1') {\n      ry = 1;\n    } else if (bit === '2') {\n      rx = 1;\n      ry = 1;\n    } else if (bit === '3') {\n      rx = 1;\n    }\n\n    const val = Math.pow(2, level - 1);\n    rotateAndFlipQuadrant(val, point, rx, ry);\n    point[0] += val * rx;\n    point[1] += val * ry;\n  }\n\n  if (face % 2 === 1) {\n    const t = point[0];\n    point[0] = point[1];\n    point[1] = t;\n  }\n\n  return {\n    face,\n    ij: point,\n    level\n  };\n}\n//# sourceMappingURL=s2-geometry.js.map","import { toHilbertQuadkey, FromHilbertQuadKey, IJToST, STToUV, FaceUVToXYZ, XYZToLngLat } from './s2-geometry';\nimport Long from 'long';\n\nfunction getIdFromToken(token) {\n  const paddedToken = token.padEnd(16, '0');\n  return Long.fromString(paddedToken, 16);\n}\n\nconst MAX_RESOLUTION = 100;\n\nfunction getGeoBounds({\n  face,\n  ij,\n  level\n}) {\n  const offsets = [[0, 0], [0, 1], [1, 1], [1, 0], [0, 0]];\n  const resolution = Math.max(1, Math.ceil(MAX_RESOLUTION * Math.pow(2, -level)));\n  const result = new Float64Array(4 * resolution * 2 + 2);\n  let ptIndex = 0;\n  let prevLng = 0;\n\n  for (let i = 0; i < 4; i++) {\n    const offset = offsets[i].slice(0);\n    const nextOffset = offsets[i + 1];\n    const stepI = (nextOffset[0] - offset[0]) / resolution;\n    const stepJ = (nextOffset[1] - offset[1]) / resolution;\n\n    for (let j = 0; j < resolution; j++) {\n      offset[0] += stepI;\n      offset[1] += stepJ;\n      const st = IJToST(ij, level, offset);\n      const uv = STToUV(st);\n      const xyz = FaceUVToXYZ(face, uv);\n      const lngLat = XYZToLngLat(xyz);\n\n      if (Math.abs(lngLat[1]) > 89.999) {\n        lngLat[0] = prevLng;\n      }\n\n      const deltaLng = lngLat[0] - prevLng;\n      lngLat[0] += deltaLng > 180 ? -360 : deltaLng < -180 ? 360 : 0;\n      result[ptIndex++] = lngLat[0];\n      result[ptIndex++] = lngLat[1];\n      prevLng = lngLat[0];\n    }\n  }\n\n  result[ptIndex++] = result[0];\n  result[ptIndex++] = result[1];\n  return result;\n}\n\nexport function getS2QuadKey(token) {\n  if (typeof token === 'string') {\n    if (token.indexOf('/') > 0) {\n      return token;\n    }\n\n    token = getIdFromToken(token);\n  }\n\n  return toHilbertQuadkey(token.toString());\n}\nexport function getS2Polygon(token) {\n  const key = getS2QuadKey(token);\n  const s2cell = FromHilbertQuadKey(key);\n  return getGeoBounds(s2cell);\n}\n//# sourceMappingURL=s2-utils.js.map","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport GeoCellLayer from '../geo-cell-layer/GeoCellLayer';\nimport { getS2Polygon } from './s2-utils';\nconst defaultProps = {\n  getS2Token: {\n    type: 'accessor',\n    value: d => d.token\n  }\n};\nexport default class S2Layer extends GeoCellLayer {\n  indexToBounds() {\n    const {\n      data,\n      getS2Token\n    } = this.props;\n    return {\n      data,\n      _normalize: false,\n      positionFormat: 'XY',\n      getPolygon: (x, objectInfo) => getS2Polygon(getS2Token(x, objectInfo))\n    };\n  }\n\n}\n\n_defineProperty(S2Layer, \"layerName\", 'S2Layer');\n\n_defineProperty(S2Layer, \"defaultProps\", defaultProps);\n//# sourceMappingURL=s2-layer.js.map","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport GeoCellLayer from '../geo-cell-layer/GeoCellLayer';\nimport { getQuadkeyPolygon } from './quadkey-utils';\nconst defaultProps = {\n  getQuadkey: {\n    type: 'accessor',\n    value: d => d.quadkey\n  }\n};\nexport default class QuadkeyLayer extends GeoCellLayer {\n  indexToBounds() {\n    const {\n      data,\n      extruded,\n      getQuadkey\n    } = this.props;\n    const coverage = extruded ? 0.99 : 1;\n    return {\n      data,\n      _normalize: false,\n      positionFormat: 'XY',\n      getPolygon: (x, objectInfo) => getQuadkeyPolygon(getQuadkey(x, objectInfo), coverage),\n      updateTriggers: {\n        getPolygon: coverage\n      }\n    };\n  }\n\n}\n\n_defineProperty(QuadkeyLayer, \"layerName\", 'QuadkeyLayer');\n\n_defineProperty(QuadkeyLayer, \"defaultProps\", defaultProps);\n//# sourceMappingURL=quadkey-layer.js.map","import { worldToLngLat } from '@math.gl/web-mercator';\nconst TILE_SIZE = 512;\nexport function quadkeyToWorldBounds(quadkey, coverage) {\n  let x = 0;\n  let y = 0;\n  let mask = 1 << quadkey.length;\n  const scale = mask / TILE_SIZE;\n\n  for (let i = 0; i < quadkey.length; i++) {\n    mask >>= 1;\n    const q = parseInt(quadkey[i]);\n    if (q % 2) x |= mask;\n    if (q > 1) y |= mask;\n  }\n\n  return [[x / scale, TILE_SIZE - y / scale], [(x + coverage) / scale, TILE_SIZE - (y + coverage) / scale]];\n}\nexport function getQuadkeyPolygon(quadkey, coverage = 1) {\n  const [topLeft, bottomRight] = quadkeyToWorldBounds(quadkey, coverage);\n  const [w, n] = worldToLngLat(topLeft);\n  const [e, s] = worldToLngLat(bottomRight);\n  return [e, n, e, s, w, s, w, n, e, n];\n}\n//# sourceMappingURL=quadkey-utils.js.map","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Stats } from '@probe.gl/stats';\nconst STAT_QUEUED_REQUESTS = 'Queued Requests';\nconst STAT_ACTIVE_REQUESTS = 'Active Requests';\nconst STAT_CANCELLED_REQUESTS = 'Cancelled Requests';\nconst STAT_QUEUED_REQUESTS_EVER = 'Queued Requests Ever';\nconst STAT_ACTIVE_REQUESTS_EVER = 'Active Requests Ever';\nconst DEFAULT_PROPS = {\n  id: 'request-scheduler',\n  throttleRequests: true,\n  maxRequests: 6\n};\nexport default class RequestScheduler {\n  constructor() {\n    let props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n    _defineProperty(this, \"props\", void 0);\n    _defineProperty(this, \"stats\", void 0);\n    _defineProperty(this, \"activeRequestCount\", 0);\n    _defineProperty(this, \"requestQueue\", []);\n    _defineProperty(this, \"requestMap\", new Map());\n    _defineProperty(this, \"deferredUpdate\", null);\n    this.props = {\n      ...DEFAULT_PROPS,\n      ...props\n    };\n    this.stats = new Stats({\n      id: this.props.id\n    });\n    this.stats.get(STAT_QUEUED_REQUESTS);\n    this.stats.get(STAT_ACTIVE_REQUESTS);\n    this.stats.get(STAT_CANCELLED_REQUESTS);\n    this.stats.get(STAT_QUEUED_REQUESTS_EVER);\n    this.stats.get(STAT_ACTIVE_REQUESTS_EVER);\n  }\n  scheduleRequest(handle) {\n    let getPriority = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : () => 0;\n    if (!this.props.throttleRequests) {\n      return Promise.resolve({\n        done: () => {}\n      });\n    }\n    if (this.requestMap.has(handle)) {\n      return this.requestMap.get(handle);\n    }\n    const request = {\n      handle,\n      priority: 0,\n      getPriority\n    };\n    const promise = new Promise(resolve => {\n      request.resolve = resolve;\n      return request;\n    });\n    this.requestQueue.push(request);\n    this.requestMap.set(handle, promise);\n    this._issueNewRequests();\n    return promise;\n  }\n  _issueRequest(request) {\n    const {\n      handle,\n      resolve\n    } = request;\n    let isDone = false;\n    const done = () => {\n      if (!isDone) {\n        isDone = true;\n        this.requestMap.delete(handle);\n        this.activeRequestCount--;\n        this._issueNewRequests();\n      }\n    };\n    this.activeRequestCount++;\n    return resolve ? resolve({\n      done\n    }) : Promise.resolve({\n      done\n    });\n  }\n  _issueNewRequests() {\n    if (!this.deferredUpdate) {\n      this.deferredUpdate = setTimeout(() => this._issueNewRequestsAsync(), 0);\n    }\n  }\n  _issueNewRequestsAsync() {\n    this.deferredUpdate = null;\n    const freeSlots = Math.max(this.props.maxRequests - this.activeRequestCount, 0);\n    if (freeSlots === 0) {\n      return;\n    }\n    this._updateAllRequests();\n    for (let i = 0; i < freeSlots; ++i) {\n      const request = this.requestQueue.shift();\n      if (request) {\n        this._issueRequest(request);\n      }\n    }\n  }\n  _updateAllRequests() {\n    const requestQueue = this.requestQueue;\n    for (let i = 0; i < requestQueue.length; ++i) {\n      const request = requestQueue[i];\n      if (!this._updateRequest(request)) {\n        requestQueue.splice(i, 1);\n        this.requestMap.delete(request.handle);\n        i--;\n      }\n    }\n    requestQueue.sort((a, b) => a.priority - b.priority);\n  }\n  _updateRequest(request) {\n    request.priority = request.getPriority(request.handle);\n    if (request.priority < 0) {\n      request.resolve(null);\n      return false;\n    }\n    return true;\n  }\n}\n//# sourceMappingURL=request-scheduler.js.map","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nexport class Tile2DHeader {\n  constructor(index) {\n    _defineProperty(this, \"index\", void 0);\n\n    _defineProperty(this, \"isVisible\", void 0);\n\n    _defineProperty(this, \"isSelected\", void 0);\n\n    _defineProperty(this, \"parent\", void 0);\n\n    _defineProperty(this, \"children\", void 0);\n\n    _defineProperty(this, \"content\", void 0);\n\n    _defineProperty(this, \"state\", void 0);\n\n    _defineProperty(this, \"layers\", void 0);\n\n    _defineProperty(this, \"id\", void 0);\n\n    _defineProperty(this, \"zoom\", void 0);\n\n    _defineProperty(this, \"userData\", void 0);\n\n    _defineProperty(this, \"boundingBox\", void 0);\n\n    _defineProperty(this, \"_abortController\", void 0);\n\n    _defineProperty(this, \"_loader\", void 0);\n\n    _defineProperty(this, \"_loaderId\", void 0);\n\n    _defineProperty(this, \"_isLoaded\", void 0);\n\n    _defineProperty(this, \"_isCancelled\", void 0);\n\n    _defineProperty(this, \"_needsReload\", void 0);\n\n    _defineProperty(this, \"_bbox\", void 0);\n\n    this.index = index;\n    this.isVisible = false;\n    this.isSelected = false;\n    this.parent = null;\n    this.children = [];\n    this.content = null;\n    this._loader = undefined;\n    this._abortController = null;\n    this._loaderId = 0;\n    this._isLoaded = false;\n    this._isCancelled = false;\n    this._needsReload = false;\n  }\n\n  get bbox() {\n    return this._bbox;\n  }\n\n  set bbox(value) {\n    if (this._bbox) return;\n    this._bbox = value;\n\n    if ('west' in value) {\n      this.boundingBox = [[value.west, value.south], [value.east, value.north]];\n    } else {\n      this.boundingBox = [[value.left, value.top], [value.right, value.bottom]];\n    }\n  }\n\n  get data() {\n    return this.isLoading && this._loader ? this._loader.then(() => this.data) : this.content;\n  }\n\n  get isLoaded() {\n    return this._isLoaded && !this._needsReload;\n  }\n\n  get isLoading() {\n    return Boolean(this._loader) && !this._isCancelled;\n  }\n\n  get needsReload() {\n    return this._needsReload || this._isCancelled;\n  }\n\n  get byteLength() {\n    const result = this.content ? this.content.byteLength : 0;\n\n    if (!Number.isFinite(result)) {\n      console.error('byteLength not defined in tile data');\n    }\n\n    return result;\n  }\n\n  async _loadData({\n    getData,\n    requestScheduler,\n    onLoad,\n    onError\n  }) {\n    const {\n      index,\n      id,\n      bbox,\n      userData,\n      zoom\n    } = this;\n    const loaderId = this._loaderId;\n    this._abortController = new AbortController();\n    const {\n      signal\n    } = this._abortController;\n    const requestToken = await requestScheduler.scheduleRequest(this, tile => {\n      return tile.isSelected ? 1 : -1;\n    });\n\n    if (!requestToken) {\n      this._isCancelled = true;\n      return;\n    }\n\n    if (this._isCancelled) {\n      requestToken.done();\n      return;\n    }\n\n    let tileData = null;\n    let error;\n\n    try {\n      tileData = await getData({\n        index,\n        id,\n        bbox,\n        userData,\n        zoom,\n        signal\n      });\n    } catch (err) {\n      error = err || true;\n    } finally {\n      requestToken.done();\n    }\n\n    if (loaderId !== this._loaderId) {\n      return;\n    }\n\n    this._loader = undefined;\n    this.content = tileData;\n\n    if (this._isCancelled && !tileData) {\n      this._isLoaded = false;\n      return;\n    }\n\n    this._isLoaded = true;\n    this._isCancelled = false;\n\n    if (error) {\n      onError(error, this);\n    } else {\n      onLoad(this);\n    }\n  }\n\n  loadData(opts) {\n    this._isLoaded = false;\n    this._isCancelled = false;\n    this._needsReload = false;\n    this._loaderId++;\n    this._loader = this._loadData(opts);\n    return this._loader;\n  }\n\n  setNeedsReload() {\n    if (this.isLoading) {\n      this.abort();\n      this._loader = undefined;\n    }\n\n    this._needsReload = true;\n  }\n\n  abort() {\n    var _this$_abortControlle;\n\n    if (this.isLoaded) {\n      return;\n    }\n\n    this._isCancelled = true;\n    (_this$_abortControlle = this._abortController) === null || _this$_abortControlle === void 0 ? void 0 : _this$_abortControlle.abort();\n  }\n\n}\n//# sourceMappingURL=tile-2d-header.js.map","export const INTERSECTION = {\n  OUTSIDE: -1,\n  INTERSECTING: 0,\n  INSIDE: 1\n};\n//# sourceMappingURL=constants.js.map","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Vector3 } from '@math.gl/core';\nimport { INTERSECTION } from '../../constants';\nconst scratchVector = new Vector3();\nconst scratchNormal = new Vector3();\nexport default class AxisAlignedBoundingBox {\n  constructor(minimum = [0, 0, 0], maximum = [0, 0, 0], center) {\n    _defineProperty(this, \"center\", void 0);\n\n    _defineProperty(this, \"halfDiagonal\", void 0);\n\n    _defineProperty(this, \"minimum\", void 0);\n\n    _defineProperty(this, \"maximum\", void 0);\n\n    center = center || scratchVector.copy(minimum).add(maximum).scale(0.5);\n    this.center = new Vector3(center);\n    this.halfDiagonal = new Vector3(maximum).subtract(this.center);\n    this.minimum = new Vector3(minimum);\n    this.maximum = new Vector3(maximum);\n  }\n\n  clone() {\n    return new AxisAlignedBoundingBox(this.minimum, this.maximum, this.center);\n  }\n\n  equals(right) {\n    return this === right || Boolean(right) && this.minimum.equals(right.minimum) && this.maximum.equals(right.maximum);\n  }\n\n  transform(transform) {\n    this.center.transformAsPoint(transform);\n    this.halfDiagonal.transform(transform);\n    this.minimum.transform(transform);\n    this.maximum.transform(transform);\n    return this;\n  }\n\n  intersectPlane(plane) {\n    const {\n      halfDiagonal\n    } = this;\n    const normal = scratchNormal.from(plane.normal);\n    const e = halfDiagonal.x * Math.abs(normal.x) + halfDiagonal.y * Math.abs(normal.y) + halfDiagonal.z * Math.abs(normal.z);\n    const s = this.center.dot(normal) + plane.distance;\n\n    if (s - e > 0) {\n      return INTERSECTION.INSIDE;\n    }\n\n    if (s + e < 0) {\n      return INTERSECTION.OUTSIDE;\n    }\n\n    return INTERSECTION.INTERSECTING;\n  }\n\n  distanceTo(point) {\n    return Math.sqrt(this.distanceSquaredTo(point));\n  }\n\n  distanceSquaredTo(point) {\n    const offset = scratchVector.from(point).subtract(this.center);\n    const {\n      halfDiagonal\n    } = this;\n    let distanceSquared = 0.0;\n    let d;\n    d = Math.abs(offset.x) - halfDiagonal.x;\n\n    if (d > 0) {\n      distanceSquared += d * d;\n    }\n\n    d = Math.abs(offset.y) - halfDiagonal.y;\n\n    if (d > 0) {\n      distanceSquared += d * d;\n    }\n\n    d = Math.abs(offset.z) - halfDiagonal.z;\n\n    if (d > 0) {\n      distanceSquared += d * d;\n    }\n\n    return distanceSquared;\n  }\n\n}\n//# sourceMappingURL=axis-aligned-bounding-box.js.map","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Vector3 } from '@math.gl/core';\nimport * as mat4 from 'gl-matrix/mat4';\nimport { INTERSECTION } from '../../constants';\nconst scratchVector = new Vector3();\nconst scratchVector2 = new Vector3();\nexport default class BoundingSphere {\n  constructor(center = [0, 0, 0], radius = 0.0) {\n    _defineProperty(this, \"center\", void 0);\n\n    _defineProperty(this, \"radius\", void 0);\n\n    this.radius = -0;\n    this.center = new Vector3();\n    this.fromCenterRadius(center, radius);\n  }\n\n  fromCenterRadius(center, radius) {\n    this.center.from(center);\n    this.radius = radius;\n    return this;\n  }\n\n  fromCornerPoints(corner, oppositeCorner) {\n    oppositeCorner = scratchVector.from(oppositeCorner);\n    this.center = new Vector3().from(corner).add(oppositeCorner).scale(0.5);\n    this.radius = this.center.distance(oppositeCorner);\n    return this;\n  }\n\n  equals(right) {\n    return this === right || Boolean(right) && this.center.equals(right.center) && this.radius === right.radius;\n  }\n\n  clone() {\n    return new BoundingSphere(this.center, this.radius);\n  }\n\n  union(boundingSphere) {\n    const leftCenter = this.center;\n    const leftRadius = this.radius;\n    const rightCenter = boundingSphere.center;\n    const rightRadius = boundingSphere.radius;\n    const toRightCenter = scratchVector.copy(rightCenter).subtract(leftCenter);\n    const centerSeparation = toRightCenter.magnitude();\n\n    if (leftRadius >= centerSeparation + rightRadius) {\n      return this.clone();\n    }\n\n    if (rightRadius >= centerSeparation + leftRadius) {\n      return boundingSphere.clone();\n    }\n\n    const halfDistanceBetweenTangentPoints = (leftRadius + centerSeparation + rightRadius) * 0.5;\n    scratchVector2.copy(toRightCenter).scale((-leftRadius + halfDistanceBetweenTangentPoints) / centerSeparation).add(leftCenter);\n    this.center.copy(scratchVector2);\n    this.radius = halfDistanceBetweenTangentPoints;\n    return this;\n  }\n\n  expand(point) {\n    const scratchPoint = scratchVector.from(point);\n    const radius = scratchPoint.subtract(this.center).magnitude();\n\n    if (radius > this.radius) {\n      this.radius = radius;\n    }\n\n    return this;\n  }\n\n  transform(transform) {\n    this.center.transform(transform);\n    const scale = mat4.getScaling(scratchVector, transform);\n    this.radius = Math.max(scale[0], Math.max(scale[1], scale[2])) * this.radius;\n    return this;\n  }\n\n  distanceSquaredTo(point) {\n    const d = this.distanceTo(point);\n    return d * d;\n  }\n\n  distanceTo(point) {\n    const scratchPoint = scratchVector.from(point);\n    const delta = scratchPoint.subtract(this.center);\n    return Math.max(0, delta.len() - this.radius);\n  }\n\n  intersectPlane(plane) {\n    const center = this.center;\n    const radius = this.radius;\n    const normal = plane.normal;\n    const distanceToPlane = normal.dot(center) + plane.distance;\n\n    if (distanceToPlane < -radius) {\n      return INTERSECTION.OUTSIDE;\n    }\n\n    if (distanceToPlane < radius) {\n      return INTERSECTION.INTERSECTING;\n    }\n\n    return INTERSECTION.INSIDE;\n  }\n\n}\n//# sourceMappingURL=bounding-sphere.js.map","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Vector3, Matrix3, Quaternion } from '@math.gl/core';\nimport BoundingSphere from './bounding-sphere';\nimport { INTERSECTION } from '../../constants';\nconst scratchVector3 = new Vector3();\nconst scratchOffset = new Vector3();\nconst scratchVectorU = new Vector3();\nconst scratchVectorV = new Vector3();\nconst scratchVectorW = new Vector3();\nconst scratchCorner = new Vector3();\nconst scratchToCenter = new Vector3();\nconst MATRIX3 = {\n  COLUMN0ROW0: 0,\n  COLUMN0ROW1: 1,\n  COLUMN0ROW2: 2,\n  COLUMN1ROW0: 3,\n  COLUMN1ROW1: 4,\n  COLUMN1ROW2: 5,\n  COLUMN2ROW0: 6,\n  COLUMN2ROW1: 7,\n  COLUMN2ROW2: 8\n};\nexport default class OrientedBoundingBox {\n  constructor(center = [0, 0, 0], halfAxes = [0, 0, 0, 0, 0, 0, 0, 0, 0]) {\n    _defineProperty(this, \"center\", void 0);\n\n    _defineProperty(this, \"halfAxes\", void 0);\n\n    this.center = new Vector3().from(center);\n    this.halfAxes = new Matrix3(halfAxes);\n  }\n\n  get halfSize() {\n    const xAxis = this.halfAxes.getColumn(0);\n    const yAxis = this.halfAxes.getColumn(1);\n    const zAxis = this.halfAxes.getColumn(2);\n    return [new Vector3(xAxis).len(), new Vector3(yAxis).len(), new Vector3(zAxis).len()];\n  }\n\n  get quaternion() {\n    const xAxis = this.halfAxes.getColumn(0);\n    const yAxis = this.halfAxes.getColumn(1);\n    const zAxis = this.halfAxes.getColumn(2);\n    const normXAxis = new Vector3(xAxis).normalize();\n    const normYAxis = new Vector3(yAxis).normalize();\n    const normZAxis = new Vector3(zAxis).normalize();\n    return new Quaternion().fromMatrix3(new Matrix3([...normXAxis, ...normYAxis, ...normZAxis]));\n  }\n\n  fromCenterHalfSizeQuaternion(center, halfSize, quaternion) {\n    const quaternionObject = new Quaternion(quaternion);\n    const directionsMatrix = new Matrix3().fromQuaternion(quaternionObject);\n    directionsMatrix[0] = directionsMatrix[0] * halfSize[0];\n    directionsMatrix[1] = directionsMatrix[1] * halfSize[0];\n    directionsMatrix[2] = directionsMatrix[2] * halfSize[0];\n    directionsMatrix[3] = directionsMatrix[3] * halfSize[1];\n    directionsMatrix[4] = directionsMatrix[4] * halfSize[1];\n    directionsMatrix[5] = directionsMatrix[5] * halfSize[1];\n    directionsMatrix[6] = directionsMatrix[6] * halfSize[2];\n    directionsMatrix[7] = directionsMatrix[7] * halfSize[2];\n    directionsMatrix[8] = directionsMatrix[8] * halfSize[2];\n    this.center = new Vector3().from(center);\n    this.halfAxes = directionsMatrix;\n    return this;\n  }\n\n  clone() {\n    return new OrientedBoundingBox(this.center, this.halfAxes);\n  }\n\n  equals(right) {\n    return this === right || Boolean(right) && this.center.equals(right.center) && this.halfAxes.equals(right.halfAxes);\n  }\n\n  getBoundingSphere(result = new BoundingSphere()) {\n    const halfAxes = this.halfAxes;\n    const u = halfAxes.getColumn(0, scratchVectorU);\n    const v = halfAxes.getColumn(1, scratchVectorV);\n    const w = halfAxes.getColumn(2, scratchVectorW);\n    const cornerVector = scratchVector3.copy(u).add(v).add(w);\n    result.center.copy(this.center);\n    result.radius = cornerVector.magnitude();\n    return result;\n  }\n\n  intersectPlane(plane) {\n    const center = this.center;\n    const normal = plane.normal;\n    const halfAxes = this.halfAxes;\n    const normalX = normal.x;\n    const normalY = normal.y;\n    const normalZ = normal.z;\n    const radEffective = Math.abs(normalX * halfAxes[MATRIX3.COLUMN0ROW0] + normalY * halfAxes[MATRIX3.COLUMN0ROW1] + normalZ * halfAxes[MATRIX3.COLUMN0ROW2]) + Math.abs(normalX * halfAxes[MATRIX3.COLUMN1ROW0] + normalY * halfAxes[MATRIX3.COLUMN1ROW1] + normalZ * halfAxes[MATRIX3.COLUMN1ROW2]) + Math.abs(normalX * halfAxes[MATRIX3.COLUMN2ROW0] + normalY * halfAxes[MATRIX3.COLUMN2ROW1] + normalZ * halfAxes[MATRIX3.COLUMN2ROW2]);\n    const distanceToPlane = normal.dot(center) + plane.distance;\n\n    if (distanceToPlane <= -radEffective) {\n      return INTERSECTION.OUTSIDE;\n    } else if (distanceToPlane >= radEffective) {\n      return INTERSECTION.INSIDE;\n    }\n\n    return INTERSECTION.INTERSECTING;\n  }\n\n  distanceTo(point) {\n    return Math.sqrt(this.distanceSquaredTo(point));\n  }\n\n  distanceSquaredTo(point) {\n    const offset = scratchOffset.from(point).subtract(this.center);\n    const halfAxes = this.halfAxes;\n    const u = halfAxes.getColumn(0, scratchVectorU);\n    const v = halfAxes.getColumn(1, scratchVectorV);\n    const w = halfAxes.getColumn(2, scratchVectorW);\n    const uHalf = u.magnitude();\n    const vHalf = v.magnitude();\n    const wHalf = w.magnitude();\n    u.normalize();\n    v.normalize();\n    w.normalize();\n    let distanceSquared = 0.0;\n    let d;\n    d = Math.abs(offset.dot(u)) - uHalf;\n\n    if (d > 0) {\n      distanceSquared += d * d;\n    }\n\n    d = Math.abs(offset.dot(v)) - vHalf;\n\n    if (d > 0) {\n      distanceSquared += d * d;\n    }\n\n    d = Math.abs(offset.dot(w)) - wHalf;\n\n    if (d > 0) {\n      distanceSquared += d * d;\n    }\n\n    return distanceSquared;\n  }\n\n  computePlaneDistances(position, direction, result = [-0, -0]) {\n    let minDist = Number.POSITIVE_INFINITY;\n    let maxDist = Number.NEGATIVE_INFINITY;\n    const center = this.center;\n    const halfAxes = this.halfAxes;\n    const u = halfAxes.getColumn(0, scratchVectorU);\n    const v = halfAxes.getColumn(1, scratchVectorV);\n    const w = halfAxes.getColumn(2, scratchVectorW);\n    const corner = scratchCorner.copy(u).add(v).add(w).add(center);\n    const toCenter = scratchToCenter.copy(corner).subtract(position);\n    let mag = direction.dot(toCenter);\n    minDist = Math.min(mag, minDist);\n    maxDist = Math.max(mag, maxDist);\n    corner.copy(center).add(u).add(v).subtract(w);\n    toCenter.copy(corner).subtract(position);\n    mag = direction.dot(toCenter);\n    minDist = Math.min(mag, minDist);\n    maxDist = Math.max(mag, maxDist);\n    corner.copy(center).add(u).subtract(v).add(w);\n    toCenter.copy(corner).subtract(position);\n    mag = direction.dot(toCenter);\n    minDist = Math.min(mag, minDist);\n    maxDist = Math.max(mag, maxDist);\n    corner.copy(center).add(u).subtract(v).subtract(w);\n    toCenter.copy(corner).subtract(position);\n    mag = direction.dot(toCenter);\n    minDist = Math.min(mag, minDist);\n    maxDist = Math.max(mag, maxDist);\n    center.copy(corner).subtract(u).add(v).add(w);\n    toCenter.copy(corner).subtract(position);\n    mag = direction.dot(toCenter);\n    minDist = Math.min(mag, minDist);\n    maxDist = Math.max(mag, maxDist);\n    center.copy(corner).subtract(u).add(v).subtract(w);\n    toCenter.copy(corner).subtract(position);\n    mag = direction.dot(toCenter);\n    minDist = Math.min(mag, minDist);\n    maxDist = Math.max(mag, maxDist);\n    center.copy(corner).subtract(u).subtract(v).add(w);\n    toCenter.copy(corner).subtract(position);\n    mag = direction.dot(toCenter);\n    minDist = Math.min(mag, minDist);\n    maxDist = Math.max(mag, maxDist);\n    center.copy(corner).subtract(u).subtract(v).subtract(w);\n    toCenter.copy(corner).subtract(position);\n    mag = direction.dot(toCenter);\n    minDist = Math.min(mag, minDist);\n    maxDist = Math.max(mag, maxDist);\n    result[0] = minDist;\n    result[1] = maxDist;\n    return result;\n  }\n\n  transform(transformation) {\n    this.center.transformAsPoint(transformation);\n    const xAxis = this.halfAxes.getColumn(0, scratchVectorU);\n    xAxis.transformAsPoint(transformation);\n    const yAxis = this.halfAxes.getColumn(1, scratchVectorV);\n    yAxis.transformAsPoint(transformation);\n    const zAxis = this.halfAxes.getColumn(2, scratchVectorW);\n    zAxis.transformAsPoint(transformation);\n    this.halfAxes = new Matrix3([...xAxis, ...yAxis, ...zAxis]);\n    return this;\n  }\n\n  getTransform() {\n    throw new Error('not implemented');\n  }\n\n}\n//# sourceMappingURL=oriented-bounding-box.js.map","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Vector3, equals, assert } from '@math.gl/core';\nconst scratchPosition = new Vector3();\nconst scratchNormal = new Vector3();\nexport default class Plane {\n  constructor(normal = [0, 0, 1], distance = 0) {\n    _defineProperty(this, \"normal\", void 0);\n\n    _defineProperty(this, \"distance\", void 0);\n\n    this.normal = new Vector3();\n    this.distance = -0;\n    this.fromNormalDistance(normal, distance);\n  }\n\n  fromNormalDistance(normal, distance) {\n    assert(Number.isFinite(distance));\n    this.normal.from(normal).normalize();\n    this.distance = distance;\n    return this;\n  }\n\n  fromPointNormal(point, normal) {\n    point = scratchPosition.from(point);\n    this.normal.from(normal).normalize();\n    const distance = -this.normal.dot(point);\n    this.distance = distance;\n    return this;\n  }\n\n  fromCoefficients(a, b, c, d) {\n    this.normal.set(a, b, c);\n    assert(equals(this.normal.len(), 1));\n    this.distance = d;\n    return this;\n  }\n\n  clone() {\n    return new Plane(this.normal, this.distance);\n  }\n\n  equals(right) {\n    return equals(this.distance, right.distance) && equals(this.normal, right.normal);\n  }\n\n  getPointDistance(point) {\n    return this.normal.dot(point) + this.distance;\n  }\n\n  transform(matrix4) {\n    const normal = scratchNormal.copy(this.normal).transformAsVector(matrix4).normalize();\n    const point = this.normal.scale(-this.distance).transform(matrix4);\n    return this.fromPointNormal(point, normal);\n  }\n\n  projectPointOntoPlane(point, result = [0, 0, 0]) {\n    point = scratchPosition.from(point);\n    const pointDistance = this.getPointDistance(point);\n    const scaledNormal = scratchNormal.copy(this.normal).scale(pointDistance);\n    return point.subtract(scaledNormal).to(result);\n  }\n\n}\n//# sourceMappingURL=plane.js.map","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Vector3, assert } from '@math.gl/core';\nimport { INTERSECTION } from '../constants';\nimport Plane from './plane';\nconst faces = [new Vector3([1, 0, 0]), new Vector3([0, 1, 0]), new Vector3([0, 0, 1])];\nconst scratchPlaneCenter = new Vector3();\nconst scratchPlaneNormal = new Vector3();\nconst scratchPlane = new Plane(new Vector3(1.0, 0.0, 0.0), 0.0);\nexport default class CullingVolume {\n  constructor(planes = []) {\n    _defineProperty(this, \"planes\", void 0);\n\n    this.planes = planes;\n  }\n\n  fromBoundingSphere(boundingSphere) {\n    this.planes.length = 2 * faces.length;\n    const center = boundingSphere.center;\n    const radius = boundingSphere.radius;\n    let planeIndex = 0;\n\n    for (const faceNormal of faces) {\n      let plane0 = this.planes[planeIndex];\n      let plane1 = this.planes[planeIndex + 1];\n\n      if (!plane0) {\n        plane0 = this.planes[planeIndex] = new Plane();\n      }\n\n      if (!plane1) {\n        plane1 = this.planes[planeIndex + 1] = new Plane();\n      }\n\n      const plane0Center = scratchPlaneCenter.copy(faceNormal).scale(-radius).add(center);\n      const plane0Distance = -faceNormal.dot(plane0Center);\n      plane0.fromPointNormal(plane0Center, faceNormal);\n      const plane1Center = scratchPlaneCenter.copy(faceNormal).scale(radius).add(center);\n      const negatedFaceNormal = scratchPlaneNormal.copy(faceNormal).negate();\n      const plane1Distance = -negatedFaceNormal.dot(plane1Center);\n      plane1.fromPointNormal(plane1Center, negatedFaceNormal);\n      planeIndex += 2;\n    }\n\n    return this;\n  }\n\n  computeVisibility(boundingVolume) {\n    let intersect = INTERSECTION.INSIDE;\n\n    for (const plane of this.planes) {\n      const result = boundingVolume.intersectPlane(plane);\n\n      switch (result) {\n        case INTERSECTION.OUTSIDE:\n          return INTERSECTION.OUTSIDE;\n\n        case INTERSECTION.INTERSECTING:\n          intersect = INTERSECTION.INTERSECTING;\n          break;\n\n        default:\n      }\n    }\n\n    return intersect;\n  }\n\n  computeVisibilityWithPlaneMask(boundingVolume, parentPlaneMask) {\n    assert(Number.isFinite(parentPlaneMask), 'parentPlaneMask is required.');\n\n    if (parentPlaneMask === CullingVolume.MASK_OUTSIDE || parentPlaneMask === CullingVolume.MASK_INSIDE) {\n      return parentPlaneMask;\n    }\n\n    let mask = CullingVolume.MASK_INSIDE;\n    const planes = this.planes;\n\n    for (let k = 0; k < this.planes.length; ++k) {\n      const flag = k < 31 ? 1 << k : 0;\n\n      if (k < 31 && (parentPlaneMask & flag) === 0) {\n        continue;\n      }\n\n      const plane = planes[k];\n      const result = boundingVolume.intersectPlane(plane);\n\n      if (result === INTERSECTION.OUTSIDE) {\n        return CullingVolume.MASK_OUTSIDE;\n      } else if (result === INTERSECTION.INTERSECTING) {\n        mask |= flag;\n      }\n    }\n\n    return mask;\n  }\n\n}\n\n_defineProperty(CullingVolume, \"MASK_OUTSIDE\", 0xffffffff);\n\n_defineProperty(CullingVolume, \"MASK_INSIDE\", 0x00000000);\n\n_defineProperty(CullingVolume, \"MASK_INDETERMINATE\", 0x7fffffff);\n//# sourceMappingURL=culling-volume.js.map","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Vector3, Matrix4, assert } from '@math.gl/core';\nimport CullingVolume from './culling-volume';\nimport Plane from './plane';\nconst scratchPlaneUpVector = new Vector3();\nconst scratchPlaneRightVector = new Vector3();\nconst scratchPlaneNearCenter = new Vector3();\nconst scratchPlaneFarCenter = new Vector3();\nconst scratchPlaneNormal = new Vector3();\nexport default class PerspectiveOffCenterFrustum {\n  constructor(options = {}) {\n    _defineProperty(this, \"left\", void 0);\n\n    _defineProperty(this, \"_left\", void 0);\n\n    _defineProperty(this, \"right\", void 0);\n\n    _defineProperty(this, \"_right\", void 0);\n\n    _defineProperty(this, \"top\", void 0);\n\n    _defineProperty(this, \"_top\", void 0);\n\n    _defineProperty(this, \"bottom\", void 0);\n\n    _defineProperty(this, \"_bottom\", void 0);\n\n    _defineProperty(this, \"near\", void 0);\n\n    _defineProperty(this, \"_near\", void 0);\n\n    _defineProperty(this, \"far\", void 0);\n\n    _defineProperty(this, \"_far\", void 0);\n\n    _defineProperty(this, \"_cullingVolume\", new CullingVolume([new Plane(), new Plane(), new Plane(), new Plane(), new Plane(), new Plane()]));\n\n    _defineProperty(this, \"_perspectiveMatrix\", new Matrix4());\n\n    _defineProperty(this, \"_infinitePerspective\", new Matrix4());\n\n    const {\n      near = 1.0,\n      far = 500000000.0\n    } = options;\n    this.left = options.left;\n    this._left = undefined;\n    this.right = options.right;\n    this._right = undefined;\n    this.top = options.top;\n    this._top = undefined;\n    this.bottom = options.bottom;\n    this._bottom = undefined;\n    this.near = near;\n    this._near = near;\n    this.far = far;\n    this._far = far;\n  }\n\n  clone() {\n    return new PerspectiveOffCenterFrustum({\n      right: this.right,\n      left: this.left,\n      top: this.top,\n      bottom: this.bottom,\n      near: this.near,\n      far: this.far\n    });\n  }\n\n  equals(other) {\n    return other && other instanceof PerspectiveOffCenterFrustum && this.right === other.right && this.left === other.left && this.top === other.top && this.bottom === other.bottom && this.near === other.near && this.far === other.far;\n  }\n\n  get projectionMatrix() {\n    this._update();\n\n    return this._perspectiveMatrix;\n  }\n\n  get infiniteProjectionMatrix() {\n    this._update();\n\n    return this._infinitePerspective;\n  }\n\n  computeCullingVolume(position, direction, up) {\n    assert(position, 'position is required.');\n    assert(direction, 'direction is required.');\n    assert(up, 'up is required.');\n    const planes = this._cullingVolume.planes;\n    up = scratchPlaneUpVector.copy(up).normalize();\n    const right = scratchPlaneRightVector.copy(direction).cross(up).normalize();\n    const nearCenter = scratchPlaneNearCenter.copy(direction).multiplyByScalar(this.near).add(position);\n    const farCenter = scratchPlaneFarCenter.copy(direction).multiplyByScalar(this.far).add(position);\n    let normal = scratchPlaneNormal;\n    normal.copy(right).multiplyByScalar(this.left).add(nearCenter).subtract(position).cross(up);\n    planes[0].fromPointNormal(position, normal);\n    normal.copy(right).multiplyByScalar(this.right).add(nearCenter).subtract(position).cross(up).negate();\n    planes[1].fromPointNormal(position, normal);\n    normal.copy(up).multiplyByScalar(this.bottom).add(nearCenter).subtract(position).cross(right).negate();\n    planes[2].fromPointNormal(position, normal);\n    normal.copy(up).multiplyByScalar(this.top).add(nearCenter).subtract(position).cross(right);\n    planes[3].fromPointNormal(position, normal);\n    normal = new Vector3().copy(direction);\n    planes[4].fromPointNormal(nearCenter, normal);\n    normal.negate();\n    planes[5].fromPointNormal(farCenter, normal);\n    return this._cullingVolume;\n  }\n\n  getPixelDimensions(drawingBufferWidth, drawingBufferHeight, distance, result) {\n    this._update();\n\n    assert(Number.isFinite(drawingBufferWidth) && Number.isFinite(drawingBufferHeight));\n    assert(drawingBufferWidth > 0);\n    assert(drawingBufferHeight > 0);\n    assert(distance > 0);\n    assert(result);\n    const inverseNear = 1.0 / this.near;\n    let tanTheta = this.top * inverseNear;\n    const pixelHeight = 2.0 * distance * tanTheta / drawingBufferHeight;\n    tanTheta = this.right * inverseNear;\n    const pixelWidth = 2.0 * distance * tanTheta / drawingBufferWidth;\n    result.x = pixelWidth;\n    result.y = pixelHeight;\n    return result;\n  }\n\n  _update() {\n    assert(Number.isFinite(this.right) && Number.isFinite(this.left) && Number.isFinite(this.top) && Number.isFinite(this.bottom) && Number.isFinite(this.near) && Number.isFinite(this.far));\n    const {\n      top,\n      bottom,\n      right,\n      left,\n      near,\n      far\n    } = this;\n\n    if (top !== this._top || bottom !== this._bottom || left !== this._left || right !== this._right || near !== this._near || far !== this._far) {\n      assert(this.near > 0 && this.near < this.far, 'near must be greater than zero and less than far.');\n      this._left = left;\n      this._right = right;\n      this._top = top;\n      this._bottom = bottom;\n      this._near = near;\n      this._far = far;\n      this._perspectiveMatrix = new Matrix4().frustum({\n        left,\n        right,\n        bottom,\n        top,\n        near,\n        far\n      });\n      this._infinitePerspective = new Matrix4().frustum({\n        left,\n        right,\n        bottom,\n        top,\n        near,\n        far: Infinity\n      });\n    }\n  }\n\n}\n//# sourceMappingURL=perspective-off-center-frustum.js.map","import { Vector3 } from '@math.gl/core';\nimport BoundingSphere from '../bounding-volumes/bounding-sphere';\nconst fromPointsXMin = new Vector3();\nconst fromPointsYMin = new Vector3();\nconst fromPointsZMin = new Vector3();\nconst fromPointsXMax = new Vector3();\nconst fromPointsYMax = new Vector3();\nconst fromPointsZMax = new Vector3();\nconst fromPointsCurrentPos = new Vector3();\nconst fromPointsScratch = new Vector3();\nconst fromPointsRitterCenter = new Vector3();\nconst fromPointsMinBoxPt = new Vector3();\nconst fromPointsMaxBoxPt = new Vector3();\nconst fromPointsNaiveCenterScratch = new Vector3();\nconst volumeConstant = 4.0 / 3.0 * Math.PI;\nexport default function makeBoundingSphereFromPoints(positions, result = new BoundingSphere()) {\n  if (!positions || positions.length === 0) {\n    return result.fromCenterRadius([0, 0, 0], 0);\n  }\n\n  const currentPos = fromPointsCurrentPos.copy(positions[0]);\n  const xMin = fromPointsXMin.copy(currentPos);\n  const yMin = fromPointsYMin.copy(currentPos);\n  const zMin = fromPointsZMin.copy(currentPos);\n  const xMax = fromPointsXMax.copy(currentPos);\n  const yMax = fromPointsYMax.copy(currentPos);\n  const zMax = fromPointsZMax.copy(currentPos);\n\n  for (const position of positions) {\n    currentPos.copy(position);\n    const x = currentPos.x;\n    const y = currentPos.y;\n    const z = currentPos.z;\n\n    if (x < xMin.x) {\n      xMin.copy(currentPos);\n    }\n\n    if (x > xMax.x) {\n      xMax.copy(currentPos);\n    }\n\n    if (y < yMin.y) {\n      yMin.copy(currentPos);\n    }\n\n    if (y > yMax.y) {\n      yMax.copy(currentPos);\n    }\n\n    if (z < zMin.z) {\n      zMin.copy(currentPos);\n    }\n\n    if (z > zMax.z) {\n      zMax.copy(currentPos);\n    }\n  }\n\n  const xSpan = fromPointsScratch.copy(xMax).subtract(xMin).magnitudeSquared();\n  const ySpan = fromPointsScratch.copy(yMax).subtract(yMin).magnitudeSquared();\n  const zSpan = fromPointsScratch.copy(zMax).subtract(zMin).magnitudeSquared();\n  let diameter1 = xMin;\n  let diameter2 = xMax;\n  let maxSpan = xSpan;\n\n  if (ySpan > maxSpan) {\n    maxSpan = ySpan;\n    diameter1 = yMin;\n    diameter2 = yMax;\n  }\n\n  if (zSpan > maxSpan) {\n    maxSpan = zSpan;\n    diameter1 = zMin;\n    diameter2 = zMax;\n  }\n\n  const ritterCenter = fromPointsRitterCenter;\n  ritterCenter.x = (diameter1.x + diameter2.x) * 0.5;\n  ritterCenter.y = (diameter1.y + diameter2.y) * 0.5;\n  ritterCenter.z = (diameter1.z + diameter2.z) * 0.5;\n  let radiusSquared = fromPointsScratch.copy(diameter2).subtract(ritterCenter).magnitudeSquared();\n  let ritterRadius = Math.sqrt(radiusSquared);\n  const minBoxPt = fromPointsMinBoxPt;\n  minBoxPt.x = xMin.x;\n  minBoxPt.y = yMin.y;\n  minBoxPt.z = zMin.z;\n  const maxBoxPt = fromPointsMaxBoxPt;\n  maxBoxPt.x = xMax.x;\n  maxBoxPt.y = yMax.y;\n  maxBoxPt.z = zMax.z;\n  const naiveCenter = fromPointsNaiveCenterScratch.copy(minBoxPt).add(maxBoxPt).multiplyByScalar(0.5);\n  let naiveRadius = 0;\n\n  for (const position of positions) {\n    currentPos.copy(position);\n    const r = fromPointsScratch.copy(currentPos).subtract(naiveCenter).magnitude();\n\n    if (r > naiveRadius) {\n      naiveRadius = r;\n    }\n\n    const oldCenterToPointSquared = fromPointsScratch.copy(currentPos).subtract(ritterCenter).magnitudeSquared();\n\n    if (oldCenterToPointSquared > radiusSquared) {\n      const oldCenterToPoint = Math.sqrt(oldCenterToPointSquared);\n      ritterRadius = (ritterRadius + oldCenterToPoint) * 0.5;\n      radiusSquared = ritterRadius * ritterRadius;\n      const oldToNew = oldCenterToPoint - ritterRadius;\n      ritterCenter.x = (ritterRadius * ritterCenter.x + oldToNew * currentPos.x) / oldCenterToPoint;\n      ritterCenter.y = (ritterRadius * ritterCenter.y + oldToNew * currentPos.y) / oldCenterToPoint;\n      ritterCenter.z = (ritterRadius * ritterCenter.z + oldToNew * currentPos.z) / oldCenterToPoint;\n    }\n  }\n\n  if (ritterRadius < naiveRadius) {\n    ritterCenter.to(result.center);\n    result.radius = ritterRadius;\n  } else {\n    naiveCenter.to(result.center);\n    result.radius = naiveRadius;\n  }\n\n  return result;\n}\n//# sourceMappingURL=bounding-sphere-from-points.js.map","import { Matrix3, _MathUtils } from '@math.gl/core';\nconst scratchMatrix = new Matrix3();\nconst scratchUnitary = new Matrix3();\nconst scratchDiagonal = new Matrix3();\nconst jMatrix = new Matrix3();\nconst jMatrixTranspose = new Matrix3();\nexport default function computeEigenDecomposition(matrix, result = {}) {\n  const EIGEN_TOLERANCE = _MathUtils.EPSILON20;\n  const EIGEN_MAX_SWEEPS = 10;\n  let count = 0;\n  let sweep = 0;\n  const unitaryMatrix = scratchUnitary;\n  const diagonalMatrix = scratchDiagonal;\n  unitaryMatrix.identity();\n  diagonalMatrix.copy(matrix);\n  const epsilon = EIGEN_TOLERANCE * computeFrobeniusNorm(diagonalMatrix);\n\n  while (sweep < EIGEN_MAX_SWEEPS && offDiagonalFrobeniusNorm(diagonalMatrix) > epsilon) {\n    shurDecomposition(diagonalMatrix, jMatrix);\n    jMatrixTranspose.copy(jMatrix).transpose();\n    diagonalMatrix.multiplyRight(jMatrix);\n    diagonalMatrix.multiplyLeft(jMatrixTranspose);\n    unitaryMatrix.multiplyRight(jMatrix);\n\n    if (++count > 2) {\n      ++sweep;\n      count = 0;\n    }\n  }\n\n  result.unitary = unitaryMatrix.toTarget(result.unitary);\n  result.diagonal = diagonalMatrix.toTarget(result.diagonal);\n  return result;\n}\n\nfunction computeFrobeniusNorm(matrix) {\n  let norm = 0.0;\n\n  for (let i = 0; i < 9; ++i) {\n    const temp = matrix[i];\n    norm += temp * temp;\n  }\n\n  return Math.sqrt(norm);\n}\n\nconst rowVal = [1, 0, 0];\nconst colVal = [2, 2, 1];\n\nfunction offDiagonalFrobeniusNorm(matrix) {\n  let norm = 0.0;\n\n  for (let i = 0; i < 3; ++i) {\n    const temp = matrix[scratchMatrix.getElementIndex(colVal[i], rowVal[i])];\n    norm += 2.0 * temp * temp;\n  }\n\n  return Math.sqrt(norm);\n}\n\nfunction shurDecomposition(matrix, result) {\n  const tolerance = _MathUtils.EPSILON15;\n  let maxDiagonal = 0.0;\n  let rotAxis = 1;\n\n  for (let i = 0; i < 3; ++i) {\n    const temp = Math.abs(matrix[scratchMatrix.getElementIndex(colVal[i], rowVal[i])]);\n\n    if (temp > maxDiagonal) {\n      rotAxis = i;\n      maxDiagonal = temp;\n    }\n  }\n\n  const p = rowVal[rotAxis];\n  const q = colVal[rotAxis];\n  let c = 1.0;\n  let s = 0.0;\n\n  if (Math.abs(matrix[scratchMatrix.getElementIndex(q, p)]) > tolerance) {\n    const qq = matrix[scratchMatrix.getElementIndex(q, q)];\n    const pp = matrix[scratchMatrix.getElementIndex(p, p)];\n    const qp = matrix[scratchMatrix.getElementIndex(q, p)];\n    const tau = (qq - pp) / 2.0 / qp;\n    let t;\n\n    if (tau < 0.0) {\n      t = -1.0 / (-tau + Math.sqrt(1.0 + tau * tau));\n    } else {\n      t = 1.0 / (tau + Math.sqrt(1.0 + tau * tau));\n    }\n\n    c = 1.0 / Math.sqrt(1.0 + t * t);\n    s = t * c;\n  }\n\n  Matrix3.IDENTITY.to(result);\n  result[scratchMatrix.getElementIndex(p, p)] = result[scratchMatrix.getElementIndex(q, q)] = c;\n  result[scratchMatrix.getElementIndex(q, p)] = s;\n  result[scratchMatrix.getElementIndex(p, q)] = -s;\n  return result;\n}\n//# sourceMappingURL=compute-eigen-decomposition.js.map","import { Vector3, Matrix3 } from '@math.gl/core';\nimport computeEigenDecomposition from './compute-eigen-decomposition';\nimport OrientedBoundingBox from '../bounding-volumes/oriented-bounding-box';\nimport AxisAlignedBoundingBox from '../bounding-volumes/axis-aligned-bounding-box';\nconst scratchVector2 = new Vector3();\nconst scratchVector3 = new Vector3();\nconst scratchVector4 = new Vector3();\nconst scratchVector5 = new Vector3();\nconst scratchVector6 = new Vector3();\nconst scratchCovarianceResult = new Matrix3();\nconst scratchEigenResult = {\n  diagonal: new Matrix3(),\n  unitary: new Matrix3()\n};\nexport function makeOrientedBoundingBoxFromPoints(positions, result = new OrientedBoundingBox()) {\n  if (!positions || positions.length === 0) {\n    result.halfAxes = new Matrix3([0, 0, 0, 0, 0, 0, 0, 0, 0]);\n    result.center = new Vector3();\n    return result;\n  }\n\n  const length = positions.length;\n  const meanPoint = new Vector3(0, 0, 0);\n\n  for (const position of positions) {\n    meanPoint.add(position);\n  }\n\n  const invLength = 1.0 / length;\n  meanPoint.multiplyByScalar(invLength);\n  let exx = 0.0;\n  let exy = 0.0;\n  let exz = 0.0;\n  let eyy = 0.0;\n  let eyz = 0.0;\n  let ezz = 0.0;\n\n  for (const position of positions) {\n    const p = scratchVector2.copy(position).subtract(meanPoint);\n    exx += p.x * p.x;\n    exy += p.x * p.y;\n    exz += p.x * p.z;\n    eyy += p.y * p.y;\n    eyz += p.y * p.z;\n    ezz += p.z * p.z;\n  }\n\n  exx *= invLength;\n  exy *= invLength;\n  exz *= invLength;\n  eyy *= invLength;\n  eyz *= invLength;\n  ezz *= invLength;\n  const covarianceMatrix = scratchCovarianceResult;\n  covarianceMatrix[0] = exx;\n  covarianceMatrix[1] = exy;\n  covarianceMatrix[2] = exz;\n  covarianceMatrix[3] = exy;\n  covarianceMatrix[4] = eyy;\n  covarianceMatrix[5] = eyz;\n  covarianceMatrix[6] = exz;\n  covarianceMatrix[7] = eyz;\n  covarianceMatrix[8] = ezz;\n  const {\n    unitary\n  } = computeEigenDecomposition(covarianceMatrix, scratchEigenResult);\n  const rotation = result.halfAxes.copy(unitary);\n  let v1 = rotation.getColumn(0, scratchVector4);\n  let v2 = rotation.getColumn(1, scratchVector5);\n  let v3 = rotation.getColumn(2, scratchVector6);\n  let u1 = -Number.MAX_VALUE;\n  let u2 = -Number.MAX_VALUE;\n  let u3 = -Number.MAX_VALUE;\n  let l1 = Number.MAX_VALUE;\n  let l2 = Number.MAX_VALUE;\n  let l3 = Number.MAX_VALUE;\n\n  for (const position of positions) {\n    scratchVector2.copy(position);\n    u1 = Math.max(scratchVector2.dot(v1), u1);\n    u2 = Math.max(scratchVector2.dot(v2), u2);\n    u3 = Math.max(scratchVector2.dot(v3), u3);\n    l1 = Math.min(scratchVector2.dot(v1), l1);\n    l2 = Math.min(scratchVector2.dot(v2), l2);\n    l3 = Math.min(scratchVector2.dot(v3), l3);\n  }\n\n  v1 = v1.multiplyByScalar(0.5 * (l1 + u1));\n  v2 = v2.multiplyByScalar(0.5 * (l2 + u2));\n  v3 = v3.multiplyByScalar(0.5 * (l3 + u3));\n  result.center.copy(v1).add(v2).add(v3);\n  const scale = scratchVector3.set(u1 - l1, u2 - l2, u3 - l3).multiplyByScalar(0.5);\n  const scaleMatrix = new Matrix3([scale[0], 0, 0, 0, scale[1], 0, 0, 0, scale[2]]);\n  result.halfAxes.multiplyRight(scaleMatrix);\n  return result;\n}\nexport function makeAxisAlignedBoundingBoxFromPoints(positions, result = new AxisAlignedBoundingBox()) {\n  if (!positions || positions.length === 0) {\n    result.minimum.set(0, 0, 0);\n    result.maximum.set(0, 0, 0);\n    result.center.set(0, 0, 0);\n    result.halfDiagonal.set(0, 0, 0);\n    return result;\n  }\n\n  let minimumX = positions[0][0];\n  let minimumY = positions[0][1];\n  let minimumZ = positions[0][2];\n  let maximumX = positions[0][0];\n  let maximumY = positions[0][1];\n  let maximumZ = positions[0][2];\n\n  for (const p of positions) {\n    const x = p[0];\n    const y = p[1];\n    const z = p[2];\n    minimumX = Math.min(x, minimumX);\n    maximumX = Math.max(x, maximumX);\n    minimumY = Math.min(y, minimumY);\n    maximumY = Math.max(y, maximumY);\n    minimumZ = Math.min(z, minimumZ);\n    maximumZ = Math.max(z, maximumZ);\n  }\n\n  result.minimum.set(minimumX, minimumY, minimumZ);\n  result.maximum.set(maximumX, maximumY, maximumZ);\n  result.center.copy(result.minimum).add(result.maximum).scale(0.5);\n  result.halfDiagonal.copy(result.maximum).subtract(result.center);\n  return result;\n}\n//# sourceMappingURL=bounding-box-from-points.js.map","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { WebMercatorViewport, _GlobeViewport } from '@deck.gl/core';\nimport { CullingVolume, Plane, AxisAlignedBoundingBox, makeOrientedBoundingBoxFromPoints } from '@math.gl/culling';\nimport { lngLatToWorld } from '@math.gl/web-mercator';\nimport { osmTile2lngLat } from './utils';\nconst TILE_SIZE = 512;\nconst MAX_MAPS = 3;\nconst REF_POINTS_5 = [[0.5, 0.5], [0, 0], [0, 1], [1, 0], [1, 1]];\nconst REF_POINTS_9 = REF_POINTS_5.concat([[0, 0.5], [0.5, 0], [1, 0.5], [0.5, 1]]);\nconst REF_POINTS_11 = REF_POINTS_9.concat([[0.25, 0.5], [0.75, 0.5]]);\n\nclass OSMNode {\n  constructor(x, y, z) {\n    _defineProperty(this, \"x\", void 0);\n\n    _defineProperty(this, \"y\", void 0);\n\n    _defineProperty(this, \"z\", void 0);\n\n    _defineProperty(this, \"childVisible\", void 0);\n\n    _defineProperty(this, \"selected\", void 0);\n\n    _defineProperty(this, \"_children\", void 0);\n\n    this.x = x;\n    this.y = y;\n    this.z = z;\n  }\n\n  get children() {\n    if (!this._children) {\n      const x = this.x * 2;\n      const y = this.y * 2;\n      const z = this.z + 1;\n      this._children = [new OSMNode(x, y, z), new OSMNode(x, y + 1, z), new OSMNode(x + 1, y, z), new OSMNode(x + 1, y + 1, z)];\n    }\n\n    return this._children;\n  }\n\n  update(params) {\n    const {\n      viewport,\n      cullingVolume,\n      elevationBounds,\n      minZ,\n      maxZ,\n      bounds,\n      offset,\n      project\n    } = params;\n    const boundingVolume = this.getBoundingVolume(elevationBounds, offset, project);\n\n    if (bounds && !this.insideBounds(bounds)) {\n      return false;\n    }\n\n    const isInside = cullingVolume.computeVisibility(boundingVolume);\n\n    if (isInside < 0) {\n      return false;\n    }\n\n    if (!this.childVisible) {\n      let {\n        z\n      } = this;\n\n      if (z < maxZ && z >= minZ) {\n        const distance = boundingVolume.distanceTo(viewport.cameraPosition) * viewport.scale / viewport.height;\n        z += Math.floor(Math.log2(distance));\n      }\n\n      if (z >= maxZ) {\n        this.selected = true;\n        return true;\n      }\n    }\n\n    this.selected = false;\n    this.childVisible = true;\n\n    for (const child of this.children) {\n      child.update(params);\n    }\n\n    return true;\n  }\n\n  getSelected(result = []) {\n    if (this.selected) {\n      result.push(this);\n    }\n\n    if (this._children) {\n      for (const node of this._children) {\n        node.getSelected(result);\n      }\n    }\n\n    return result;\n  }\n\n  insideBounds([minX, minY, maxX, maxY]) {\n    const scale = Math.pow(2, this.z);\n    const extent = TILE_SIZE / scale;\n    return this.x * extent < maxX && this.y * extent < maxY && (this.x + 1) * extent > minX && (this.y + 1) * extent > minY;\n  }\n\n  getBoundingVolume(zRange, worldOffset, project) {\n    if (project) {\n      const refPoints = this.z < 1 ? REF_POINTS_11 : this.z < 2 ? REF_POINTS_9 : REF_POINTS_5;\n      const refPointPositions = [];\n\n      for (const p of refPoints) {\n        const lngLat = osmTile2lngLat(this.x + p[0], this.y + p[1], this.z);\n        lngLat[2] = zRange[0];\n        refPointPositions.push(project(lngLat));\n\n        if (zRange[0] !== zRange[1]) {\n          lngLat[2] = zRange[1];\n          refPointPositions.push(project(lngLat));\n        }\n      }\n\n      return makeOrientedBoundingBoxFromPoints(refPointPositions);\n    }\n\n    const scale = Math.pow(2, this.z);\n    const extent = TILE_SIZE / scale;\n    const originX = this.x * extent + worldOffset * TILE_SIZE;\n    const originY = TILE_SIZE - (this.y + 1) * extent;\n    return new AxisAlignedBoundingBox([originX, originY, zRange[0]], [originX + extent, originY + extent, zRange[1]]);\n  }\n\n}\n\nexport function getOSMTileIndices(viewport, maxZ, zRange, bounds) {\n  const project = viewport instanceof _GlobeViewport && viewport.resolution ? viewport.projectPosition : null;\n  const planes = Object.values(viewport.getFrustumPlanes()).map(({\n    normal,\n    distance\n  }) => new Plane(normal.clone().negate(), distance));\n  const cullingVolume = new CullingVolume(planes);\n  const unitsPerMeter = viewport.distanceScales.unitsPerMeter[2];\n  const elevationMin = zRange && zRange[0] * unitsPerMeter || 0;\n  const elevationMax = zRange && zRange[1] * unitsPerMeter || 0;\n  const minZ = viewport instanceof WebMercatorViewport && viewport.pitch <= 60 ? maxZ : 0;\n\n  if (bounds) {\n    const [minLng, minLat, maxLng, maxLat] = bounds;\n    const topLeft = lngLatToWorld([minLng, maxLat]);\n    const bottomRight = lngLatToWorld([maxLng, minLat]);\n    bounds = [topLeft[0], TILE_SIZE - topLeft[1], bottomRight[0], TILE_SIZE - bottomRight[1]];\n  }\n\n  const root = new OSMNode(0, 0, 0);\n  const traversalParams = {\n    viewport,\n    project,\n    cullingVolume,\n    elevationBounds: [elevationMin, elevationMax],\n    minZ,\n    maxZ,\n    bounds,\n    offset: 0\n  };\n  root.update(traversalParams);\n\n  if (viewport instanceof WebMercatorViewport && viewport.subViewports && viewport.subViewports.length > 1) {\n    traversalParams.offset = -1;\n\n    while (root.update(traversalParams)) {\n      if (--traversalParams.offset < -MAX_MAPS) {\n        break;\n      }\n    }\n\n    traversalParams.offset = 1;\n\n    while (root.update(traversalParams)) {\n      if (++traversalParams.offset > MAX_MAPS) {\n        break;\n      }\n    }\n  }\n\n  return root.getSelected();\n}\n//# sourceMappingURL=tile-2d-traversal.js.map","import { getOSMTileIndices } from './tile-2d-traversal';\nconst TILE_SIZE = 512;\nconst DEFAULT_EXTENT = [-Infinity, -Infinity, Infinity, Infinity];\nexport const urlType = {\n  type: 'object',\n  value: null,\n  validate: (value, propType) => propType.optional && value === null || typeof value === 'string' || Array.isArray(value) && value.every(url => typeof url === 'string'),\n  equal: (value1, value2) => {\n    if (value1 === value2) {\n      return true;\n    }\n\n    if (!Array.isArray(value1) || !Array.isArray(value2)) {\n      return false;\n    }\n\n    const len = value1.length;\n\n    if (len !== value2.length) {\n      return false;\n    }\n\n    for (let i = 0; i < len; i++) {\n      if (value1[i] !== value2[i]) {\n        return false;\n      }\n    }\n\n    return true;\n  }\n};\n\nfunction transformBox(bbox, modelMatrix) {\n  const transformedCoords = [modelMatrix.transformAsPoint([bbox[0], bbox[1]]), modelMatrix.transformAsPoint([bbox[2], bbox[1]]), modelMatrix.transformAsPoint([bbox[0], bbox[3]]), modelMatrix.transformAsPoint([bbox[2], bbox[3]])];\n  const transformedBox = [Math.min(...transformedCoords.map(i => i[0])), Math.min(...transformedCoords.map(i => i[1])), Math.max(...transformedCoords.map(i => i[0])), Math.max(...transformedCoords.map(i => i[1]))];\n  return transformedBox;\n}\n\nfunction stringHash(s) {\n  return Math.abs(s.split('').reduce((a, b) => (a << 5) - a + b.charCodeAt(0) | 0, 0));\n}\n\nexport function getURLFromTemplate(template, tile) {\n  if (!template || !template.length) {\n    return null;\n  }\n\n  const {\n    index,\n    id\n  } = tile;\n\n  if (Array.isArray(template)) {\n    const i = stringHash(id) % template.length;\n    template = template[i];\n  }\n\n  let url = template;\n\n  for (const key of Object.keys(index)) {\n    const regex = new RegExp(\"{\".concat(key, \"}\"), 'g');\n    url = url.replace(regex, String(index[key]));\n  }\n\n  if (Number.isInteger(index.y) && Number.isInteger(index.z)) {\n    url = url.replace(/\\{-y\\}/g, String(Math.pow(2, index.z) - index.y - 1));\n  }\n\n  return url;\n}\n\nfunction getBoundingBox(viewport, zRange, extent) {\n  let bounds;\n\n  if (zRange && zRange.length === 2) {\n    const [minZ, maxZ] = zRange;\n    const bounds0 = viewport.getBounds({\n      z: minZ\n    });\n    const bounds1 = viewport.getBounds({\n      z: maxZ\n    });\n    bounds = [Math.min(bounds0[0], bounds1[0]), Math.min(bounds0[1], bounds1[1]), Math.max(bounds0[2], bounds1[2]), Math.max(bounds0[3], bounds1[3])];\n  } else {\n    bounds = viewport.getBounds();\n  }\n\n  if (!viewport.isGeospatial) {\n    return [Math.max(Math.min(bounds[0], extent[2]), extent[0]), Math.max(Math.min(bounds[1], extent[3]), extent[1]), Math.min(Math.max(bounds[2], extent[0]), extent[2]), Math.min(Math.max(bounds[3], extent[1]), extent[3])];\n  }\n\n  return [Math.max(bounds[0], extent[0]), Math.max(bounds[1], extent[1]), Math.min(bounds[2], extent[2]), Math.min(bounds[3], extent[3])];\n}\n\nexport function getCullBounds({\n  viewport,\n  z = 0,\n  cullRect\n}) {\n  const subViewports = viewport.subViewports || [viewport];\n  return subViewports.map(v => getCullBoundsInViewport(v, z || 0, cullRect));\n}\n\nfunction getCullBoundsInViewport(viewport, z, cullRect) {\n  if (!Array.isArray(z)) {\n    const x = cullRect.x - viewport.x;\n    const y = cullRect.y - viewport.y;\n    const {\n      width,\n      height\n    } = cullRect;\n    const unprojectOption = {\n      targetZ: z\n    };\n    const topLeft = viewport.unproject([x, y], unprojectOption);\n    const topRight = viewport.unproject([x + width, y], unprojectOption);\n    const bottomLeft = viewport.unproject([x, y + height], unprojectOption);\n    const bottomRight = viewport.unproject([x + width, y + height], unprojectOption);\n    return [Math.min(topLeft[0], topRight[0], bottomLeft[0], bottomRight[0]), Math.min(topLeft[1], topRight[1], bottomLeft[1], bottomRight[1]), Math.max(topLeft[0], topRight[0], bottomLeft[0], bottomRight[0]), Math.max(topLeft[1], topRight[1], bottomLeft[1], bottomRight[1])];\n  }\n\n  const bounds0 = getCullBoundsInViewport(viewport, z[0], cullRect);\n  const bounds1 = getCullBoundsInViewport(viewport, z[1], cullRect);\n  return [Math.min(bounds0[0], bounds1[0]), Math.min(bounds0[1], bounds1[1]), Math.max(bounds0[2], bounds1[2]), Math.max(bounds0[3], bounds1[3])];\n}\n\nfunction getIndexingCoords(bbox, scale, modelMatrixInverse) {\n  if (modelMatrixInverse) {\n    const transformedTileIndex = transformBox(bbox, modelMatrixInverse).map(i => i * scale / TILE_SIZE);\n    return transformedTileIndex;\n  }\n\n  return bbox.map(i => i * scale / TILE_SIZE);\n}\n\nfunction getScale(z, tileSize) {\n  return Math.pow(2, z) * TILE_SIZE / tileSize;\n}\n\nexport function osmTile2lngLat(x, y, z) {\n  const scale = getScale(z, TILE_SIZE);\n  const lng = x / scale * 360 - 180;\n  const n = Math.PI - 2 * Math.PI * y / scale;\n  const lat = 180 / Math.PI * Math.atan(0.5 * (Math.exp(n) - Math.exp(-n)));\n  return [lng, lat];\n}\n\nfunction tile2XY(x, y, z, tileSize) {\n  const scale = getScale(z, tileSize);\n  return [x / scale * TILE_SIZE, y / scale * TILE_SIZE];\n}\n\nexport function tileToBoundingBox(viewport, x, y, z, tileSize = TILE_SIZE) {\n  if (viewport.isGeospatial) {\n    const [west, north] = osmTile2lngLat(x, y, z);\n    const [east, south] = osmTile2lngLat(x + 1, y + 1, z);\n    return {\n      west,\n      north,\n      east,\n      south\n    };\n  }\n\n  const [left, top] = tile2XY(x, y, z, tileSize);\n  const [right, bottom] = tile2XY(x + 1, y + 1, z, tileSize);\n  return {\n    left,\n    top,\n    right,\n    bottom\n  };\n}\n\nfunction getIdentityTileIndices(viewport, z, tileSize, extent, modelMatrixInverse) {\n  const bbox = getBoundingBox(viewport, null, extent);\n  const scale = getScale(z, tileSize);\n  const [minX, minY, maxX, maxY] = getIndexingCoords(bbox, scale, modelMatrixInverse);\n  const indices = [];\n\n  for (let x = Math.floor(minX); x < maxX; x++) {\n    for (let y = Math.floor(minY); y < maxY; y++) {\n      indices.push({\n        x,\n        y,\n        z\n      });\n    }\n  }\n\n  return indices;\n}\n\nexport function getTileIndices({\n  viewport,\n  maxZoom,\n  minZoom,\n  zRange,\n  extent,\n  tileSize = TILE_SIZE,\n  modelMatrix,\n  modelMatrixInverse,\n  zoomOffset = 0\n}) {\n  let z = viewport.isGeospatial ? Math.round(viewport.zoom + Math.log2(TILE_SIZE / tileSize)) + zoomOffset : Math.ceil(viewport.zoom) + zoomOffset;\n\n  if (typeof minZoom === 'number' && Number.isFinite(minZoom) && z < minZoom) {\n    if (!extent) {\n      return [];\n    }\n\n    z = minZoom;\n  }\n\n  if (typeof maxZoom === 'number' && Number.isFinite(maxZoom) && z > maxZoom) {\n    z = maxZoom;\n  }\n\n  let transformedExtent = extent;\n\n  if (modelMatrix && modelMatrixInverse && extent && !viewport.isGeospatial) {\n    transformedExtent = transformBox(extent, modelMatrix);\n  }\n\n  return viewport.isGeospatial ? getOSMTileIndices(viewport, z, zRange, extent) : getIdentityTileIndices(viewport, z, tileSize, transformedExtent || DEFAULT_EXTENT, modelMatrixInverse);\n}\nexport function isURLTemplate(s) {\n  return /(?=.*{z})(?=.*{x})(?=.*({y}|{-y}))/.test(s);\n}\nexport function isGeoBoundingBox(v) {\n  return Number.isFinite(v.west) && Number.isFinite(v.north) && Number.isFinite(v.east) && Number.isFinite(v.south);\n}\n//# sourceMappingURL=utils.js.map","export function memoize(compute) {\n  let cachedArgs = {};\n  let cachedResult;\n  return args => {\n    for (const key in args) {\n      if (!isEqual(args[key], cachedArgs[key])) {\n        cachedResult = compute(args);\n        cachedArgs = args;\n        break;\n      }\n    }\n\n    return cachedResult;\n  };\n}\n\nfunction isEqual(a, b) {\n  if (a === b) {\n    return true;\n  }\n\n  if (Array.isArray(a)) {\n    const len = a.length;\n\n    if (!b || b.length !== len) {\n      return false;\n    }\n\n    for (let i = 0; i < len; i++) {\n      if (a[i] !== b[i]) {\n        return false;\n      }\n    }\n\n    return true;\n  }\n\n  return false;\n}\n//# sourceMappingURL=memoize.js.map","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { RequestScheduler } from '@loaders.gl/loader-utils';\nimport { Matrix4, equals } from '@math.gl/core';\nimport { Tile2DHeader } from './tile-2d-header';\nimport { getTileIndices, tileToBoundingBox, getCullBounds } from './utils';\nimport { memoize } from './memoize';\nconst TILE_STATE_VISITED = 1;\nconst TILE_STATE_VISIBLE = 2;\nexport const STRATEGY_NEVER = 'never';\nexport const STRATEGY_REPLACE = 'no-overlap';\nexport const STRATEGY_DEFAULT = 'best-available';\nconst DEFAULT_CACHE_SCALE = 5;\nconst STRATEGIES = {\n  [STRATEGY_DEFAULT]: updateTileStateDefault,\n  [STRATEGY_REPLACE]: updateTileStateReplace,\n  [STRATEGY_NEVER]: () => {}\n};\nexport const DEFAULT_TILESET2D_PROPS = {\n  extent: null,\n  tileSize: 512,\n  maxZoom: null,\n  minZoom: null,\n  maxCacheSize: null,\n  maxCacheByteSize: null,\n  refinementStrategy: 'best-available',\n  zRange: null,\n  maxRequests: 6,\n  zoomOffset: 0,\n  onTileLoad: () => {},\n  onTileUnload: () => {},\n  onTileError: () => {}\n};\nexport class Tileset2D {\n  constructor(opts) {\n    _defineProperty(this, \"opts\", void 0);\n\n    _defineProperty(this, \"_requestScheduler\", void 0);\n\n    _defineProperty(this, \"_cache\", void 0);\n\n    _defineProperty(this, \"_dirty\", void 0);\n\n    _defineProperty(this, \"_tiles\", void 0);\n\n    _defineProperty(this, \"_cacheByteSize\", void 0);\n\n    _defineProperty(this, \"_viewport\", void 0);\n\n    _defineProperty(this, \"_zRange\", void 0);\n\n    _defineProperty(this, \"_selectedTiles\", void 0);\n\n    _defineProperty(this, \"_frameNumber\", void 0);\n\n    _defineProperty(this, \"_modelMatrix\", void 0);\n\n    _defineProperty(this, \"_modelMatrixInverse\", void 0);\n\n    _defineProperty(this, \"_maxZoom\", void 0);\n\n    _defineProperty(this, \"_minZoom\", void 0);\n\n    _defineProperty(this, \"onTileLoad\", void 0);\n\n    _defineProperty(this, \"_getCullBounds\", memoize(getCullBounds));\n\n    this.opts = { ...DEFAULT_TILESET2D_PROPS,\n      ...opts\n    };\n\n    this.onTileLoad = tile => {\n      var _this$opts$onTileLoad, _this$opts;\n\n      (_this$opts$onTileLoad = (_this$opts = this.opts).onTileLoad) === null || _this$opts$onTileLoad === void 0 ? void 0 : _this$opts$onTileLoad.call(_this$opts, tile);\n\n      if (this.opts.maxCacheByteSize) {\n        this._cacheByteSize += tile.byteLength;\n\n        this._resizeCache();\n      }\n    };\n\n    this._requestScheduler = new RequestScheduler({\n      maxRequests: opts.maxRequests,\n      throttleRequests: Boolean(opts.maxRequests && opts.maxRequests > 0)\n    });\n    this._cache = new Map();\n    this._tiles = [];\n    this._dirty = false;\n    this._cacheByteSize = 0;\n    this._viewport = null;\n    this._zRange = null;\n    this._selectedTiles = null;\n    this._frameNumber = 0;\n    this._modelMatrix = new Matrix4();\n    this._modelMatrixInverse = new Matrix4();\n    this.setOptions(opts);\n  }\n\n  get tiles() {\n    return this._tiles;\n  }\n\n  get selectedTiles() {\n    return this._selectedTiles;\n  }\n\n  get isLoaded() {\n    return this._selectedTiles !== null && this._selectedTiles.every(tile => tile.isLoaded);\n  }\n\n  get needsReload() {\n    return this._selectedTiles !== null && this._selectedTiles.some(tile => tile.needsReload);\n  }\n\n  setOptions(opts) {\n    Object.assign(this.opts, opts);\n\n    if (Number.isFinite(opts.maxZoom)) {\n      this._maxZoom = Math.floor(opts.maxZoom);\n    }\n\n    if (Number.isFinite(opts.minZoom)) {\n      this._minZoom = Math.ceil(opts.minZoom);\n    }\n  }\n\n  finalize() {\n    for (const tile of this._cache.values()) {\n      if (tile.isLoading) {\n        tile.abort();\n      }\n    }\n\n    this._cache.clear();\n\n    this._tiles = [];\n    this._selectedTiles = null;\n  }\n\n  reloadAll() {\n    for (const id of this._cache.keys()) {\n      const tile = this._cache.get(id);\n\n      if (!this._selectedTiles || !this._selectedTiles.includes(tile)) {\n        this._cache.delete(id);\n      } else {\n        tile.setNeedsReload();\n      }\n    }\n  }\n\n  update(viewport, {\n    zRange,\n    modelMatrix\n  } = {\n    zRange: null,\n    modelMatrix: null\n  }) {\n    const modelMatrixAsMatrix4 = modelMatrix ? new Matrix4(modelMatrix) : new Matrix4();\n    const isModelMatrixNew = !modelMatrixAsMatrix4.equals(this._modelMatrix);\n\n    if (!this._viewport || !viewport.equals(this._viewport) || !equals(this._zRange, zRange) || isModelMatrixNew) {\n      if (isModelMatrixNew) {\n        this._modelMatrixInverse = modelMatrixAsMatrix4.clone().invert();\n        this._modelMatrix = modelMatrixAsMatrix4;\n      }\n\n      this._viewport = viewport;\n      this._zRange = zRange;\n      const tileIndices = this.getTileIndices({\n        viewport,\n        maxZoom: this._maxZoom,\n        minZoom: this._minZoom,\n        zRange,\n        modelMatrix: this._modelMatrix,\n        modelMatrixInverse: this._modelMatrixInverse\n      });\n      this._selectedTiles = tileIndices.map(index => this._getTile(index, true));\n\n      if (this._dirty) {\n        this._rebuildTree();\n      }\n    } else if (this.needsReload) {\n      this._selectedTiles = this._selectedTiles.map(tile => this._getTile(tile.index, true));\n    }\n\n    const changed = this.updateTileStates();\n\n    this._pruneRequests();\n\n    if (this._dirty) {\n      this._resizeCache();\n    }\n\n    if (changed) {\n      this._frameNumber++;\n    }\n\n    return this._frameNumber;\n  }\n\n  isTileVisible(tile, cullRect) {\n    if (!tile.isVisible) {\n      return false;\n    }\n\n    if (cullRect && this._viewport) {\n      const boundsArr = this._getCullBounds({\n        viewport: this._viewport,\n        z: this._zRange,\n        cullRect\n      });\n\n      const {\n        bbox\n      } = tile;\n\n      for (const [minX, minY, maxX, maxY] of boundsArr) {\n        let overlaps;\n\n        if ('west' in bbox) {\n          overlaps = bbox.west < maxX && bbox.east > minX && bbox.south < maxY && bbox.north > minY;\n        } else {\n          const y0 = Math.min(bbox.top, bbox.bottom);\n          const y1 = Math.max(bbox.top, bbox.bottom);\n          overlaps = bbox.left < maxX && bbox.right > minX && y0 < maxY && y1 > minY;\n        }\n\n        if (overlaps) {\n          return true;\n        }\n      }\n\n      return false;\n    }\n\n    return true;\n  }\n\n  getTileIndices({\n    viewport,\n    maxZoom,\n    minZoom,\n    zRange,\n    modelMatrix,\n    modelMatrixInverse\n  }) {\n    const {\n      tileSize,\n      extent,\n      zoomOffset\n    } = this.opts;\n    return getTileIndices({\n      viewport,\n      maxZoom,\n      minZoom,\n      zRange,\n      tileSize,\n      extent: extent,\n      modelMatrix,\n      modelMatrixInverse,\n      zoomOffset\n    });\n  }\n\n  getTileId(index) {\n    return \"\".concat(index.x, \"-\").concat(index.y, \"-\").concat(index.z);\n  }\n\n  getTileZoom(index) {\n    return index.z;\n  }\n\n  getTileMetadata(index) {\n    const {\n      tileSize\n    } = this.opts;\n    return {\n      bbox: tileToBoundingBox(this._viewport, index.x, index.y, index.z, tileSize)\n    };\n  }\n\n  getParentIndex(index) {\n    const x = Math.floor(index.x / 2);\n    const y = Math.floor(index.y / 2);\n    const z = index.z - 1;\n    return {\n      x,\n      y,\n      z\n    };\n  }\n\n  updateTileStates() {\n    const refinementStrategy = this.opts.refinementStrategy || STRATEGY_DEFAULT;\n    const visibilities = new Array(this._cache.size);\n    let i = 0;\n\n    for (const tile of this._cache.values()) {\n      visibilities[i++] = tile.isVisible;\n      tile.isSelected = false;\n      tile.isVisible = false;\n    }\n\n    for (const tile of this._selectedTiles) {\n      tile.isSelected = true;\n      tile.isVisible = true;\n    }\n\n    (typeof refinementStrategy === 'function' ? refinementStrategy : STRATEGIES[refinementStrategy])(Array.from(this._cache.values()));\n    i = 0;\n\n    for (const tile of this._cache.values()) {\n      if (visibilities[i++] !== tile.isVisible) {\n        return true;\n      }\n    }\n\n    return false;\n  }\n\n  _pruneRequests() {\n    const {\n      maxRequests = 0\n    } = this.opts;\n    const abortCandidates = [];\n    let ongoingRequestCount = 0;\n\n    for (const tile of this._cache.values()) {\n      if (tile.isLoading) {\n        ongoingRequestCount++;\n\n        if (!tile.isSelected && !tile.isVisible) {\n          abortCandidates.push(tile);\n        }\n      }\n    }\n\n    while (maxRequests > 0 && ongoingRequestCount > maxRequests && abortCandidates.length > 0) {\n      const tile = abortCandidates.shift();\n      tile.abort();\n      ongoingRequestCount--;\n    }\n  }\n\n  _rebuildTree() {\n    const {\n      _cache\n    } = this;\n\n    for (const tile of _cache.values()) {\n      tile.parent = null;\n\n      if (tile.children) {\n        tile.children.length = 0;\n      }\n    }\n\n    for (const tile of _cache.values()) {\n      const parent = this._getNearestAncestor(tile);\n\n      tile.parent = parent;\n\n      if (parent !== null && parent !== void 0 && parent.children) {\n        parent.children.push(tile);\n      }\n    }\n  }\n\n  _resizeCache() {\n    const {\n      _cache,\n      opts\n    } = this;\n    const maxCacheSize = opts.maxCacheSize || (opts.maxCacheByteSize ? Infinity : DEFAULT_CACHE_SCALE * this.selectedTiles.length);\n    const maxCacheByteSize = opts.maxCacheByteSize || Infinity;\n    const overflown = _cache.size > maxCacheSize || this._cacheByteSize > maxCacheByteSize;\n\n    if (overflown) {\n      for (const [id, tile] of _cache) {\n        if (!tile.isVisible && !tile.isSelected) {\n          var _this$opts$onTileUnlo, _this$opts2;\n\n          this._cacheByteSize -= opts.maxCacheByteSize ? tile.byteLength : 0;\n\n          _cache.delete(id);\n\n          (_this$opts$onTileUnlo = (_this$opts2 = this.opts).onTileUnload) === null || _this$opts$onTileUnlo === void 0 ? void 0 : _this$opts$onTileUnlo.call(_this$opts2, tile);\n        }\n\n        if (_cache.size <= maxCacheSize && this._cacheByteSize <= maxCacheByteSize) {\n          break;\n        }\n      }\n\n      this._rebuildTree();\n\n      this._dirty = true;\n    }\n\n    if (this._dirty) {\n      this._tiles = Array.from(this._cache.values()).sort((t1, t2) => t1.zoom - t2.zoom);\n      this._dirty = false;\n    }\n  }\n\n  _getTile(index, create) {\n    const id = this.getTileId(index);\n\n    let tile = this._cache.get(id);\n\n    let needsReload = false;\n\n    if (!tile && create) {\n      tile = new Tile2DHeader(index);\n      Object.assign(tile, this.getTileMetadata(tile.index));\n      Object.assign(tile, {\n        id,\n        zoom: this.getTileZoom(tile.index)\n      });\n      needsReload = true;\n\n      this._cache.set(id, tile);\n\n      this._dirty = true;\n    } else if (tile && tile.needsReload) {\n      needsReload = true;\n    }\n\n    if (tile && needsReload) {\n      tile.loadData({\n        getData: this.opts.getTileData,\n        requestScheduler: this._requestScheduler,\n        onLoad: this.onTileLoad,\n        onError: this.opts.onTileError\n      });\n    }\n\n    return tile;\n  }\n\n  _getNearestAncestor(tile) {\n    const {\n      _minZoom = 0\n    } = this;\n    let index = tile.index;\n\n    while (this.getTileZoom(index) > _minZoom) {\n      index = this.getParentIndex(index);\n\n      const parent = this._getTile(index);\n\n      if (parent) {\n        return parent;\n      }\n    }\n\n    return null;\n  }\n\n}\n\nfunction updateTileStateDefault(allTiles) {\n  for (const tile of allTiles) {\n    tile.state = 0;\n  }\n\n  for (const tile of allTiles) {\n    if (tile.isSelected && !getPlaceholderInAncestors(tile)) {\n      getPlaceholderInChildren(tile);\n    }\n  }\n\n  for (const tile of allTiles) {\n    tile.isVisible = Boolean(tile.state & TILE_STATE_VISIBLE);\n  }\n}\n\nfunction updateTileStateReplace(allTiles) {\n  for (const tile of allTiles) {\n    tile.state = 0;\n  }\n\n  for (const tile of allTiles) {\n    if (tile.isSelected) {\n      getPlaceholderInAncestors(tile);\n    }\n  }\n\n  const sortedTiles = Array.from(allTiles).sort((t1, t2) => t1.zoom - t2.zoom);\n\n  for (const tile of sortedTiles) {\n    tile.isVisible = Boolean(tile.state & TILE_STATE_VISIBLE);\n\n    if (tile.children && (tile.isVisible || tile.state & TILE_STATE_VISITED)) {\n      for (const child of tile.children) {\n        child.state = TILE_STATE_VISITED;\n      }\n    } else if (tile.isSelected) {\n      getPlaceholderInChildren(tile);\n    }\n  }\n}\n\nfunction getPlaceholderInAncestors(startTile) {\n  let tile = startTile;\n\n  while (tile) {\n    if (tile.isLoaded || tile.content) {\n      tile.state |= TILE_STATE_VISIBLE;\n      return true;\n    }\n\n    tile = tile.parent;\n  }\n\n  return false;\n}\n\nfunction getPlaceholderInChildren(tile) {\n  for (const child of tile.children) {\n    if (child.isLoaded || child.content) {\n      child.state |= TILE_STATE_VISIBLE;\n    } else {\n      getPlaceholderInChildren(child);\n    }\n  }\n}\n//# sourceMappingURL=tileset-2d.js.map","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { CompositeLayer, _flatten as flatten } from '@deck.gl/core';\nimport { GeoJsonLayer } from '@deck.gl/layers';\nimport { Tileset2D, STRATEGY_DEFAULT } from '../tileset-2d';\nimport { urlType, getURLFromTemplate } from '../tileset-2d';\nconst defaultProps = {\n  TilesetClass: Tileset2D,\n  data: {\n    type: 'data',\n    value: []\n  },\n  dataComparator: urlType.equal,\n  renderSubLayers: {\n    type: 'function',\n    value: props => new GeoJsonLayer(props)\n  },\n  getTileData: {\n    type: 'function',\n    optional: true,\n    value: null\n  },\n  onViewportLoad: {\n    type: 'function',\n    optional: true,\n    value: null\n  },\n  onTileLoad: {\n    type: 'function',\n    value: tile => {}\n  },\n  onTileUnload: {\n    type: 'function',\n    value: tile => {}\n  },\n  onTileError: {\n    type: 'function',\n    value: err => console.error(err)\n  },\n  extent: {\n    type: 'array',\n    optional: true,\n    value: null,\n    compare: true\n  },\n  tileSize: 512,\n  maxZoom: null,\n  minZoom: 0,\n  maxCacheSize: null,\n  maxCacheByteSize: null,\n  refinementStrategy: STRATEGY_DEFAULT,\n  zRange: null,\n  maxRequests: 6,\n  zoomOffset: 0\n};\nexport default class TileLayer extends CompositeLayer {\n  constructor(...args) {\n    super(...args);\n\n    _defineProperty(this, \"state\", void 0);\n  }\n\n  initializeState() {\n    this.state = {\n      tileset: null,\n      isLoaded: false\n    };\n  }\n\n  finalizeState() {\n    var _this$state, _this$state$tileset;\n\n    (_this$state = this.state) === null || _this$state === void 0 ? void 0 : (_this$state$tileset = _this$state.tileset) === null || _this$state$tileset === void 0 ? void 0 : _this$state$tileset.finalize();\n  }\n\n  get isLoaded() {\n    var _this$state2, _this$state2$tileset, _this$state2$tileset$;\n\n    return Boolean((_this$state2 = this.state) === null || _this$state2 === void 0 ? void 0 : (_this$state2$tileset = _this$state2.tileset) === null || _this$state2$tileset === void 0 ? void 0 : (_this$state2$tileset$ = _this$state2$tileset.selectedTiles) === null || _this$state2$tileset$ === void 0 ? void 0 : _this$state2$tileset$.every(tile => tile.isLoaded && tile.layers && tile.layers.every(layer => layer.isLoaded)));\n  }\n\n  shouldUpdateState({\n    changeFlags\n  }) {\n    return changeFlags.somethingChanged;\n  }\n\n  updateState({\n    changeFlags\n  }) {\n    let {\n      tileset\n    } = this.state;\n    const propsChanged = changeFlags.propsOrDataChanged || changeFlags.updateTriggersChanged;\n    const dataChanged = changeFlags.dataChanged || changeFlags.updateTriggersChanged && (changeFlags.updateTriggersChanged.all || changeFlags.updateTriggersChanged.getTileData);\n\n    if (!tileset) {\n      tileset = new this.props.TilesetClass(this._getTilesetOptions());\n      this.setState({\n        tileset\n      });\n    } else if (propsChanged) {\n      tileset.setOptions(this._getTilesetOptions());\n\n      if (dataChanged) {\n        tileset.reloadAll();\n      } else {\n        tileset.tiles.forEach(tile => {\n          tile.layers = null;\n        });\n      }\n    }\n\n    this._updateTileset();\n  }\n\n  _getTilesetOptions() {\n    const {\n      tileSize,\n      maxCacheSize,\n      maxCacheByteSize,\n      refinementStrategy,\n      extent,\n      maxZoom,\n      minZoom,\n      maxRequests,\n      zoomOffset\n    } = this.props;\n    return {\n      maxCacheSize,\n      maxCacheByteSize,\n      maxZoom,\n      minZoom,\n      tileSize,\n      refinementStrategy,\n      extent,\n      maxRequests,\n      zoomOffset,\n      getTileData: this.getTileData.bind(this),\n      onTileLoad: this._onTileLoad.bind(this),\n      onTileError: this._onTileError.bind(this),\n      onTileUnload: this._onTileUnload.bind(this)\n    };\n  }\n\n  _updateTileset() {\n    const tileset = this.state.tileset;\n    const {\n      zRange,\n      modelMatrix\n    } = this.props;\n    const frameNumber = tileset.update(this.context.viewport, {\n      zRange,\n      modelMatrix\n    });\n    const {\n      isLoaded\n    } = tileset;\n    const loadingStateChanged = this.state.isLoaded !== isLoaded;\n    const tilesetChanged = this.state.frameNumber !== frameNumber;\n\n    if (isLoaded && (loadingStateChanged || tilesetChanged)) {\n      this._onViewportLoad();\n    }\n\n    if (tilesetChanged) {\n      this.setState({\n        frameNumber\n      });\n    }\n\n    this.state.isLoaded = isLoaded;\n  }\n\n  _onViewportLoad() {\n    const {\n      tileset\n    } = this.state;\n    const {\n      onViewportLoad\n    } = this.props;\n\n    if (onViewportLoad) {\n      onViewportLoad(tileset.selectedTiles);\n    }\n  }\n\n  _onTileLoad(tile) {\n    this.props.onTileLoad(tile);\n    tile.layers = null;\n    this.setNeedsUpdate();\n  }\n\n  _onTileError(error, tile) {\n    this.props.onTileError(error);\n    tile.layers = null;\n    this.setNeedsUpdate();\n  }\n\n  _onTileUnload(tile) {\n    this.props.onTileUnload(tile);\n  }\n\n  getTileData(tile) {\n    const {\n      data,\n      getTileData,\n      fetch\n    } = this.props;\n    const {\n      signal\n    } = tile;\n    tile.url = typeof data === 'string' || Array.isArray(data) ? getURLFromTemplate(data, tile) : null;\n\n    if (getTileData) {\n      return getTileData(tile);\n    }\n\n    if (fetch && tile.url) {\n      return fetch(tile.url, {\n        propName: 'data',\n        layer: this,\n        signal\n      });\n    }\n\n    return null;\n  }\n\n  renderSubLayers(props) {\n    return this.props.renderSubLayers(props);\n  }\n\n  getSubLayerPropsByTile(tile) {\n    return null;\n  }\n\n  getPickingInfo({\n    info,\n    sourceLayer\n  }) {\n    const sourceTile = sourceLayer.props.tile;\n\n    if (info.picked) {\n      info.tile = sourceTile;\n    }\n\n    info.sourceTile = sourceTile;\n    return info;\n  }\n\n  _updateAutoHighlight(info) {\n    const sourceTile = info.sourceTile;\n\n    if (sourceTile && sourceTile.layers) {\n      for (const layer of sourceTile.layers) {\n        layer.updateAutoHighlight(info);\n      }\n    }\n  }\n\n  renderLayers() {\n    return this.state.tileset.tiles.map(tile => {\n      const subLayerProps = this.getSubLayerPropsByTile(tile);\n\n      if (!tile.isLoaded && !tile.content) {} else if (!tile.layers) {\n        const layers = this.renderSubLayers({ ...this.props,\n          ...this.getSubLayerProps({\n            id: tile.id,\n            updateTriggers: this.props.updateTriggers\n          }),\n          data: tile.content,\n          _offset: 0,\n          tile\n        });\n        tile.layers = flatten(layers, Boolean).map(layer => layer.clone({\n          tile,\n          ...subLayerProps\n        }));\n      } else if (subLayerProps && tile.layers[0] && Object.keys(subLayerProps).some(propName => tile.layers[0].props[propName] !== subLayerProps[propName])) {\n        tile.layers = tile.layers.map(layer => layer.clone(subLayerProps));\n      }\n\n      return tile.layers;\n    });\n  }\n\n  filterSubLayer({\n    layer,\n    cullRect\n  }) {\n    const {\n      tile\n    } = layer.props;\n    return this.state.tileset.isTileVisible(tile, cullRect);\n  }\n\n}\n\n_defineProperty(TileLayer, \"defaultProps\", defaultProps);\n\n_defineProperty(TileLayer, \"layerName\", 'TileLayer');\n//# sourceMappingURL=tile-layer.js.map","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { PathLayer } from '@deck.gl/layers';\nconst defaultProps = {\n  fadeTrail: true,\n  trailLength: {\n    type: 'number',\n    value: 120,\n    min: 0\n  },\n  currentTime: {\n    type: 'number',\n    value: 0,\n    min: 0\n  },\n  getTimestamps: {\n    type: 'accessor',\n    value: d => d.timestamps\n  }\n};\nexport default class TripsLayer extends PathLayer {\n  getShaders() {\n    const shaders = super.getShaders();\n    shaders.inject = {\n      'vs:#decl': \"uniform float trailLength;\\nattribute float instanceTimestamps;\\nattribute float instanceNextTimestamps;\\nvarying float vTime;\\n\",\n      'vs:#main-end': \"vTime = instanceTimestamps + (instanceNextTimestamps - instanceTimestamps) * vPathPosition.y / vPathLength;\\n\",\n      'fs:#decl': \"uniform bool fadeTrail;\\nuniform float trailLength;\\nuniform float currentTime;\\nvarying float vTime;\\n\",\n      'fs:#main-start': \"if(vTime > currentTime || (fadeTrail && (vTime < currentTime - trailLength))) {\\n  discard;\\n}\\n\",\n      'fs:DECKGL_FILTER_COLOR': \"if(fadeTrail) {\\n  color.a *= 1.0 - (currentTime - vTime) / trailLength;\\n}\\n\"\n    };\n    return shaders;\n  }\n\n  initializeState() {\n    super.initializeState();\n    const attributeManager = this.getAttributeManager();\n    attributeManager.addInstanced({\n      timestamps: {\n        size: 1,\n        accessor: 'getTimestamps',\n        shaderAttributes: {\n          instanceTimestamps: {\n            vertexOffset: 0\n          },\n          instanceNextTimestamps: {\n            vertexOffset: 1\n          }\n        }\n      }\n    });\n  }\n\n  draw(params) {\n    const {\n      fadeTrail,\n      trailLength,\n      currentTime\n    } = this.props;\n    params.uniforms = { ...params.uniforms,\n      fadeTrail,\n      trailLength,\n      currentTime\n    };\n    super.draw(params);\n  }\n\n}\n\n_defineProperty(TripsLayer, \"layerName\", 'TripsLayer');\n\n_defineProperty(TripsLayer, \"defaultProps\", defaultProps);\n//# sourceMappingURL=trips-layer.js.map","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { h3ToGeoBoundary, h3GetResolution, h3ToGeo, geoToH3, h3IsPentagon, h3Distance, edgeLength } from 'h3-js';\nimport { lerp } from '@math.gl/core';\nimport { CompositeLayer, createIterable } from '@deck.gl/core';\nimport { ColumnLayer, PolygonLayer } from '@deck.gl/layers';\nconst UPDATE_THRESHOLD_KM = 10;\nexport function normalizeLongitudes(vertices, refLng) {\n  refLng = refLng === undefined ? vertices[0][0] : refLng;\n\n  for (const pt of vertices) {\n    const deltaLng = pt[0] - refLng;\n\n    if (deltaLng > 180) {\n      pt[0] -= 360;\n    } else if (deltaLng < -180) {\n      pt[0] += 360;\n    }\n  }\n}\nexport function scalePolygon(hexId, vertices, factor) {\n  const [lat, lng] = h3ToGeo(hexId);\n  const actualCount = vertices.length;\n  normalizeLongitudes(vertices, lng);\n  const vertexCount = vertices[0] === vertices[actualCount - 1] ? actualCount - 1 : actualCount;\n\n  for (let i = 0; i < vertexCount; i++) {\n    vertices[i][0] = lerp(lng, vertices[i][0], factor);\n    vertices[i][1] = lerp(lat, vertices[i][1], factor);\n  }\n}\n\nfunction getHexagonCentroid(getHexagon, object, objectInfo) {\n  const hexagonId = getHexagon(object, objectInfo);\n  const [lat, lng] = h3ToGeo(hexagonId);\n  return [lng, lat];\n}\n\nfunction h3ToPolygon(hexId, coverage = 1) {\n  const vertices = h3ToGeoBoundary(hexId, true);\n\n  if (coverage !== 1) {\n    scalePolygon(hexId, vertices, coverage);\n  } else {\n    normalizeLongitudes(vertices);\n  }\n\n  return vertices;\n}\n\nfunction flattenPolygon(vertices) {\n  const positions = new Float64Array(vertices.length * 2);\n  let i = 0;\n\n  for (const pt of vertices) {\n    positions[i++] = pt[0];\n    positions[i++] = pt[1];\n  }\n\n  return positions;\n}\n\nfunction mergeTriggers(getHexagon, coverage) {\n  let trigger;\n\n  if (getHexagon === undefined || getHexagon === null) {\n    trigger = coverage;\n  } else if (typeof getHexagon === 'object') {\n    trigger = { ...getHexagon,\n      coverage\n    };\n  } else {\n    trigger = {\n      getHexagon,\n      coverage\n    };\n  }\n\n  return trigger;\n}\n\nconst defaultProps = { ...PolygonLayer.defaultProps,\n  highPrecision: 'auto',\n  coverage: {\n    type: 'number',\n    min: 0,\n    max: 1,\n    value: 1\n  },\n  centerHexagon: null,\n  getHexagon: {\n    type: 'accessor',\n    value: x => x.hexagon\n  },\n  extruded: true\n};\nexport default class H3HexagonLayer extends CompositeLayer {\n  constructor(...args) {\n    super(...args);\n\n    _defineProperty(this, \"state\", void 0);\n  }\n\n  initializeState() {\n    H3HexagonLayer._checkH3Lib();\n\n    this.state = {\n      edgeLengthKM: 0,\n      resolution: -1\n    };\n  }\n\n  shouldUpdateState({\n    changeFlags\n  }) {\n    return this._shouldUseHighPrecision() ? changeFlags.propsOrDataChanged : changeFlags.somethingChanged;\n  }\n\n  updateState({\n    props,\n    changeFlags\n  }) {\n    if (props.highPrecision !== true && (changeFlags.dataChanged || changeFlags.updateTriggersChanged && changeFlags.updateTriggersChanged.getHexagon)) {\n      const dataProps = this._calculateH3DataProps();\n\n      this.setState(dataProps);\n    }\n\n    this._updateVertices(this.context.viewport);\n  }\n\n  _calculateH3DataProps() {\n    let resolution = -1;\n    let hasPentagon = false;\n    let hasMultipleRes = false;\n    const {\n      iterable,\n      objectInfo\n    } = createIterable(this.props.data);\n\n    for (const object of iterable) {\n      objectInfo.index++;\n      const hexId = this.props.getHexagon(object, objectInfo);\n      const hexResolution = h3GetResolution(hexId);\n\n      if (resolution < 0) {\n        resolution = hexResolution;\n        if (!this.props.highPrecision) break;\n      } else if (resolution !== hexResolution) {\n        hasMultipleRes = true;\n        break;\n      }\n\n      if (h3IsPentagon(hexId)) {\n        hasPentagon = true;\n        break;\n      }\n    }\n\n    return {\n      resolution,\n      edgeLengthKM: resolution >= 0 ? edgeLength(resolution, 'km') : 0,\n      hasMultipleRes,\n      hasPentagon\n    };\n  }\n\n  _shouldUseHighPrecision() {\n    if (this.props.highPrecision === 'auto') {\n      const {\n        resolution,\n        hasPentagon,\n        hasMultipleRes\n      } = this.state;\n      const {\n        viewport\n      } = this.context;\n      return Boolean(viewport === null || viewport === void 0 ? void 0 : viewport.resolution) || hasMultipleRes || hasPentagon || resolution >= 0 && resolution <= 5;\n    }\n\n    return this.props.highPrecision;\n  }\n\n  _updateVertices(viewport) {\n    if (this._shouldUseHighPrecision()) {\n      return;\n    }\n\n    const {\n      resolution,\n      edgeLengthKM,\n      centerHex\n    } = this.state;\n\n    if (resolution < 0) {\n      return;\n    }\n\n    const hex = this.props.centerHexagon || geoToH3(viewport.latitude, viewport.longitude, resolution);\n\n    if (centerHex === hex) {\n      return;\n    }\n\n    if (centerHex) {\n      const distance = h3Distance(centerHex, hex);\n\n      if (distance >= 0 && distance * edgeLengthKM < UPDATE_THRESHOLD_KM) {\n        return;\n      }\n    }\n\n    const {\n      unitsPerMeter\n    } = viewport.distanceScales;\n    let vertices = h3ToPolygon(hex);\n    const [centerLat, centerLng] = h3ToGeo(hex);\n    const [centerX, centerY] = viewport.projectFlat([centerLng, centerLat]);\n    vertices = vertices.map(p => {\n      const worldPosition = viewport.projectFlat(p);\n      return [(worldPosition[0] - centerX) / unitsPerMeter[0], (worldPosition[1] - centerY) / unitsPerMeter[1]];\n    });\n    this.setState({\n      centerHex: hex,\n      vertices\n    });\n  }\n\n  renderLayers() {\n    return this._shouldUseHighPrecision() ? this._renderPolygonLayer() : this._renderColumnLayer();\n  }\n\n  _getForwardProps() {\n    const {\n      elevationScale,\n      material,\n      coverage,\n      extruded,\n      wireframe,\n      stroked,\n      filled,\n      lineWidthUnits,\n      lineWidthScale,\n      lineWidthMinPixels,\n      lineWidthMaxPixels,\n      getFillColor,\n      getElevation,\n      getLineColor,\n      getLineWidth,\n      transitions,\n      updateTriggers\n    } = this.props;\n    return {\n      elevationScale,\n      extruded,\n      coverage,\n      wireframe,\n      stroked,\n      filled,\n      lineWidthUnits,\n      lineWidthScale,\n      lineWidthMinPixels,\n      lineWidthMaxPixels,\n      material,\n      getElevation,\n      getFillColor,\n      getLineColor,\n      getLineWidth,\n      transitions,\n      updateTriggers: {\n        getFillColor: updateTriggers.getFillColor,\n        getElevation: updateTriggers.getElevation,\n        getLineColor: updateTriggers.getLineColor,\n        getLineWidth: updateTriggers.getLineWidth\n      }\n    };\n  }\n\n  _renderPolygonLayer() {\n    const {\n      data,\n      getHexagon,\n      updateTriggers,\n      coverage\n    } = this.props;\n    const SubLayerClass = this.getSubLayerClass('hexagon-cell-hifi', PolygonLayer);\n\n    const forwardProps = this._getForwardProps();\n\n    forwardProps.updateTriggers.getPolygon = mergeTriggers(updateTriggers.getHexagon, coverage);\n    return new SubLayerClass(forwardProps, this.getSubLayerProps({\n      id: 'hexagon-cell-hifi',\n      updateTriggers: forwardProps.updateTriggers\n    }), {\n      data,\n      _normalize: false,\n      _windingOrder: 'CCW',\n      positionFormat: 'XY',\n      getPolygon: (object, objectInfo) => {\n        const hexagonId = getHexagon(object, objectInfo);\n        return flattenPolygon(h3ToPolygon(hexagonId, coverage));\n      }\n    });\n  }\n\n  _renderColumnLayer() {\n    const {\n      data,\n      getHexagon,\n      updateTriggers\n    } = this.props;\n    const SubLayerClass = this.getSubLayerClass('hexagon-cell', ColumnLayer);\n\n    const forwardProps = this._getForwardProps();\n\n    forwardProps.updateTriggers.getPosition = updateTriggers.getHexagon;\n    return new SubLayerClass(forwardProps, this.getSubLayerProps({\n      id: 'hexagon-cell',\n      flatShading: true,\n      updateTriggers: forwardProps.updateTriggers\n    }), {\n      data,\n      diskResolution: 6,\n      radius: 1,\n      vertices: this.state.vertices,\n      getPosition: getHexagonCentroid.bind(null, getHexagon)\n    });\n  }\n\n}\n\n_defineProperty(H3HexagonLayer, \"defaultProps\", defaultProps);\n\n_defineProperty(H3HexagonLayer, \"layerName\", 'H3HexagonLayer');\n\n_defineProperty(H3HexagonLayer, \"_checkH3Lib\", () => {});\n//# sourceMappingURL=h3-hexagon-layer.js.map","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { h3SetToMultiPolygon } from 'h3-js';\nimport { createIterable } from '@deck.gl/core';\nimport { default as H3HexagonLayer } from './h3-hexagon-layer';\nimport GeoCellLayer from '../geo-cell-layer/GeoCellLayer';\nconst defaultProps = {\n  getHexagons: {\n    type: 'accessor',\n    value: d => d.hexagons\n  }\n};\nexport default class H3ClusterLayer extends GeoCellLayer {\n  initializeState() {\n    H3HexagonLayer._checkH3Lib();\n  }\n\n  updateState({\n    props,\n    changeFlags\n  }) {\n    if (changeFlags.dataChanged || changeFlags.updateTriggersChanged && changeFlags.updateTriggersChanged.getHexagons) {\n      const {\n        data,\n        getHexagons\n      } = props;\n      const polygons = [];\n      const {\n        iterable,\n        objectInfo\n      } = createIterable(data);\n\n      for (const object of iterable) {\n        objectInfo.index++;\n        const hexagons = getHexagons(object, objectInfo);\n        const multiPolygon = h3SetToMultiPolygon(hexagons, true);\n\n        for (const polygon of multiPolygon) {\n          polygons.push(this.getSubLayerRow({\n            polygon\n          }, object, objectInfo.index));\n        }\n      }\n\n      this.setState({\n        polygons\n      });\n    }\n  }\n\n  indexToBounds() {\n    const {\n      getElevation,\n      getFillColor,\n      getLineColor,\n      getLineWidth\n    } = this.props;\n    return {\n      data: this.state.polygons,\n      getPolygon: d => d.polygon,\n      getElevation: this.getSubLayerAccessor(getElevation),\n      getFillColor: this.getSubLayerAccessor(getFillColor),\n      getLineColor: this.getSubLayerAccessor(getLineColor),\n      getLineWidth: this.getSubLayerAccessor(getLineWidth)\n    };\n  }\n\n}\n\n_defineProperty(H3ClusterLayer, \"layerName\", 'H3ClusterLayer');\n\n_defineProperty(H3ClusterLayer, \"defaultProps\", defaultProps);\n//# sourceMappingURL=h3-cluster-layer.js.map","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { GLTFMaterialParser } from '@luma.gl/experimental';\nimport { Model, pbr } from '@luma.gl/core';\nimport { SimpleMeshLayer } from '@deck.gl/mesh-layers';\nimport vs from './mesh-layer-vertex.glsl';\nimport fs from './mesh-layer-fragment.glsl';\n\nfunction validateGeometryAttributes(attributes) {\n  const hasColorAttribute = attributes.COLOR_0 || attributes.colors;\n\n  if (!hasColorAttribute) {\n    attributes.colors = {\n      constant: true,\n      value: new Float32Array([1, 1, 1])\n    };\n  }\n}\n\nconst defaultProps = {\n  pbrMaterial: {\n    type: 'object',\n    value: null\n  },\n  featureIds: {\n    type: 'array',\n    value: null,\n    optional: true\n  }\n};\nexport default class MeshLayer extends SimpleMeshLayer {\n  getShaders() {\n    const shaders = super.getShaders();\n    const modules = shaders.modules;\n    modules.push(pbr);\n    return { ...shaders,\n      vs,\n      fs\n    };\n  }\n\n  initializeState() {\n    const {\n      featureIds\n    } = this.props;\n    super.initializeState();\n    const attributeManager = this.getAttributeManager();\n\n    if (featureIds) {\n      attributeManager.add({\n        featureIdsPickingColors: {\n          type: 5121,\n          size: 3,\n          noAlloc: true,\n          update: this.calculateFeatureIdsPickingColors\n        }\n      });\n    }\n  }\n\n  updateState(params) {\n    super.updateState(params);\n    const {\n      props,\n      oldProps\n    } = params;\n\n    if (props.pbrMaterial !== oldProps.pbrMaterial) {\n      this.updatePbrMaterialUniforms(props.pbrMaterial);\n    }\n  }\n\n  draw(opts) {\n    const {\n      featureIds\n    } = this.props;\n\n    if (!this.state.model) {\n      return;\n    }\n\n    this.state.model.setUniforms({\n      u_Camera: this.state.model.getUniforms().project_uCameraPosition,\n      pickFeatureIds: Boolean(featureIds)\n    });\n    super.draw(opts);\n  }\n\n  getModel(mesh) {\n    const {\n      id,\n      pbrMaterial\n    } = this.props;\n    const materialParser = this.parseMaterial(pbrMaterial, mesh);\n    this.setState({\n      materialParser\n    });\n    const shaders = this.getShaders();\n    validateGeometryAttributes(mesh.attributes);\n    const model = new Model(this.context.gl, { ...this.getShaders(),\n      id,\n      geometry: mesh,\n      defines: { ...shaders.defines,\n        ...(materialParser === null || materialParser === void 0 ? void 0 : materialParser.defines),\n        HAS_UV_REGIONS: mesh.attributes.uvRegions\n      },\n      parameters: materialParser === null || materialParser === void 0 ? void 0 : materialParser.parameters,\n      isInstanced: true\n    });\n    return model;\n  }\n\n  updatePbrMaterialUniforms(pbrMaterial) {\n    const {\n      model\n    } = this.state;\n\n    if (model) {\n      const {\n        mesh\n      } = this.props;\n      const materialParser = this.parseMaterial(pbrMaterial, mesh);\n      this.setState({\n        materialParser\n      });\n      model.setUniforms(materialParser.uniforms);\n    }\n  }\n\n  parseMaterial(pbrMaterial, mesh) {\n    var _this$state$materialP;\n\n    const unlit = Boolean(pbrMaterial.pbrMetallicRoughness && pbrMaterial.pbrMetallicRoughness.baseColorTexture);\n    (_this$state$materialP = this.state.materialParser) === null || _this$state$materialP === void 0 ? void 0 : _this$state$materialP.delete();\n    return new GLTFMaterialParser(this.context.gl, {\n      attributes: {\n        NORMAL: mesh.attributes.normals,\n        TEXCOORD_0: mesh.attributes.texCoords\n      },\n      material: {\n        unlit,\n        ...pbrMaterial\n      },\n      pbrDebug: false,\n      imageBasedLightingEnvironment: null,\n      lights: true,\n      useTangents: false\n    });\n  }\n\n  calculateFeatureIdsPickingColors(attribute) {\n    const featureIds = this.props.featureIds;\n    const value = new Uint8ClampedArray(featureIds.length * attribute.size);\n    const pickingColor = [];\n\n    for (let index = 0; index < featureIds.length; index++) {\n      this.encodePickingColor(featureIds[index], pickingColor);\n      value[index * 3] = pickingColor[0];\n      value[index * 3 + 1] = pickingColor[1];\n      value[index * 3 + 2] = pickingColor[2];\n    }\n\n    attribute.value = value;\n  }\n\n  finalizeState(context) {\n    var _this$state$materialP2;\n\n    super.finalizeState(context);\n    (_this$state$materialP2 = this.state.materialParser) === null || _this$state$materialP2 === void 0 ? void 0 : _this$state$materialP2.delete();\n    this.setState({\n      materialParser: null\n    });\n  }\n\n}\n\n_defineProperty(MeshLayer, \"layerName\", 'MeshLayer');\n\n_defineProperty(MeshLayer, \"defaultProps\", defaultProps);\n//# sourceMappingURL=mesh-layer.js.map","export default \"#version 300 es\\n#define SHADER_NAME simple-mesh-layer-vs\\nuniform float sizeScale;\\nuniform bool composeModelMatrix;\\nuniform bool pickFeatureIds;\\nin vec3 positions;\\nin vec3 normals;\\nin vec3 colors;\\nin vec2 texCoords;\\nin vec4 uvRegions;\\nin vec3 featureIdsPickingColors;\\nin vec4 instanceColors;\\nin vec3 instancePickingColors;\\nin mat3 instanceModelMatrix;\\nout vec2 vTexCoord;\\nout vec3 cameraPosition;\\nout vec3 normals_commonspace;\\nout vec4 position_commonspace;\\nout vec4 vColor;\\n\\nvec2 applyUVRegion(vec2 uv) {\\n  #ifdef HAS_UV_REGIONS\\n    return fract(uv) * (uvRegions.zw - uvRegions.xy) + uvRegions.xy;\\n  #else\\n    return uv;\\n  #endif\\n}\\n\\nvoid main(void) {\\n  vec2 uv = applyUVRegion(texCoords);\\n  geometry.uv = uv;\\n\\n  if (pickFeatureIds) {\\n    geometry.pickingColor = featureIdsPickingColors;\\n  } else {\\n    geometry.pickingColor = instancePickingColors;\\n  }\\n\\n  vTexCoord = uv;\\n  cameraPosition = project_uCameraPosition;\\n  vColor = vec4(colors * instanceColors.rgb, instanceColors.a);\\n\\n  vec3 pos = (instanceModelMatrix * positions) * sizeScale;\\n  vec3 projectedPosition = project_position(positions);\\n  position_commonspace = vec4(projectedPosition, 1.0);\\n  gl_Position = project_common_position_to_clipspace(position_commonspace);\\n\\n  geometry.position = position_commonspace;\\n  normals_commonspace = project_normal(instanceModelMatrix * normals);\\n  geometry.normal = normals_commonspace;\\n\\n  DECKGL_FILTER_GL_POSITION(gl_Position, geometry);\\n\\n  #ifdef MODULE_PBR\\n    pbr_vPosition = geometry.position.xyz;\\n    #ifdef HAS_NORMALS\\n      pbr_vNormal = geometry.normal;\\n    #endif\\n\\n    #ifdef HAS_UV\\n      pbr_vUV = uv;\\n    #else\\n      pbr_vUV = vec2(0., 0.);\\n    #endif\\n    geometry.uv = pbr_vUV;\\n  #endif\\n\\n  DECKGL_FILTER_COLOR(vColor, geometry);\\n}\\n\";\n//# sourceMappingURL=mesh-layer-vertex.glsl.js.map","export default \"#version 300 es\\n#define SHADER_NAME simple-mesh-layer-fs\\n\\nprecision highp float;\\n\\nuniform bool hasTexture;\\nuniform sampler2D sampler;\\nuniform bool flatShading;\\nuniform float opacity;\\n\\nin vec2 vTexCoord;\\nin vec3 cameraPosition;\\nin vec3 normals_commonspace;\\nin vec4 position_commonspace;\\nin vec4 vColor;\\n\\nout vec4 fragColor;\\n\\nvoid main(void) {\\n  \\n#ifdef MODULE_PBR\\n\\n  fragColor = vColor * pbr_filterColor(vec4(0));\\n  geometry.uv = pbr_vUV;\\n  fragColor.a *= opacity;\\n\\n#else\\n\\n  geometry.uv = vTexCoord;\\n\\n  vec3 normal;\\n  if (flatShading) {\\n#ifdef DERIVATIVES_AVAILABLE\\n    normal = normalize(cross(dFdx(position_commonspace.xyz), dFdy(position_commonspace.xyz)));\\n#else\\n    normal = vec3(0.0, 0.0, 1.0);\\n#endif\\n  } else {\\n    normal = normals_commonspace;\\n  }\\n\\n  vec4 color = hasTexture ? texture(sampler, vTexCoord) : vColor;\\n  vec3 lightColor = lighting_getLightColor(color.rgb, cameraPosition, position_commonspace.xyz, normal);\\n  fragColor = vec4(lightColor, color.a * opacity);\\n\\n#endif\\n\\n  DECKGL_FILTER_COLOR(fragColor, geometry);\\n}\\n\";\n//# sourceMappingURL=mesh-layer-fragment.glsl.js.map","export const WGS84_RADIUS_X = 6378137.0;\nexport const WGS84_RADIUS_Y = 6378137.0;\nexport const WGS84_RADIUS_Z = 6356752.3142451793;\nexport const WGS84_CONSTANTS = {\n  radii: [WGS84_RADIUS_X, WGS84_RADIUS_Y, WGS84_RADIUS_Z],\n  radiiSquared: [WGS84_RADIUS_X * WGS84_RADIUS_X, WGS84_RADIUS_Y * WGS84_RADIUS_Y, WGS84_RADIUS_Z * WGS84_RADIUS_Z],\n  oneOverRadii: [1.0 / WGS84_RADIUS_X, 1.0 / WGS84_RADIUS_Y, 1.0 / WGS84_RADIUS_Z],\n  oneOverRadiiSquared: [1.0 / (WGS84_RADIUS_X * WGS84_RADIUS_X), 1.0 / (WGS84_RADIUS_Y * WGS84_RADIUS_Y), 1.0 / (WGS84_RADIUS_Z * WGS84_RADIUS_Z)],\n  maximumRadius: Math.max(WGS84_RADIUS_X, WGS84_RADIUS_Y, WGS84_RADIUS_Z),\n  centerToleranceSquared: 1e-1\n};\n//# sourceMappingURL=constants.js.map","import { Vector3, toRadians, toDegrees, config } from '@math.gl/core';\nimport { WGS84_CONSTANTS } from './constants';\n\nfunction identity(x) {\n  return x;\n}\n\nconst scratchVector = new Vector3();\nexport function fromCartographic(cartographic, result = [], map = identity) {\n  if ('longitude' in cartographic) {\n    result[0] = map(cartographic.longitude);\n    result[1] = map(cartographic.latitude);\n    result[2] = cartographic.height;\n  } else if ('x' in cartographic) {\n    result[0] = map(cartographic.x);\n    result[1] = map(cartographic.y);\n    result[2] = cartographic.z;\n  } else {\n    result[0] = map(cartographic[0]);\n    result[1] = map(cartographic[1]);\n    result[2] = cartographic[2];\n  }\n\n  return result;\n}\nexport function fromCartographicToRadians(cartographic, vector = []) {\n  return fromCartographic(cartographic, vector, config._cartographicRadians ? identity : toRadians);\n}\nexport function fromCartographicToDegrees(cartographic, vector = []) {\n  return fromCartographic(cartographic, vector, config._cartographicRadians ? toDegrees : identity);\n}\nexport function toCartographic(vector, cartographic, map = identity) {\n  if ('longitude' in cartographic) {\n    cartographic.longitude = map(vector[0]);\n    cartographic.latitude = map(vector[1]);\n    cartographic.height = vector[2];\n  } else if ('x' in cartographic) {\n    cartographic.x = map(vector[0]);\n    cartographic.y = map(vector[1]);\n    cartographic.z = vector[2];\n  } else {\n    cartographic[0] = map(vector[0]);\n    cartographic[1] = map(vector[1]);\n    cartographic[2] = vector[2];\n  }\n\n  return cartographic;\n}\nexport function toCartographicFromRadians(vector, cartographic) {\n  return toCartographic(vector, cartographic, config._cartographicRadians ? identity : toDegrees);\n}\nexport function toCartographicFromDegrees(vector, cartographic) {\n  return toCartographic(vector, cartographic, config._cartographicRadians ? toRadians : identity);\n}\nexport function isWGS84(vector) {\n  if (!vector) {\n    return false;\n  }\n\n  scratchVector.from(vector);\n  const {\n    oneOverRadiiSquared,\n    centerToleranceSquared\n  } = WGS84_CONSTANTS;\n  const x2 = vector[0] * vector[0] * oneOverRadiiSquared[0];\n  const y2 = vector[1] * vector[1] * oneOverRadiiSquared[1];\n  const z2 = vector[2] * vector[2] * oneOverRadiiSquared[2];\n  return Math.abs(x2 + y2 + z2 - 1) < centerToleranceSquared;\n}\n//# sourceMappingURL=type-utils.js.map","import { Vector3, _MathUtils } from '@math.gl/core';\nconst scratchVector = new Vector3();\nconst scaleToGeodeticSurfaceIntersection = new Vector3();\nconst scaleToGeodeticSurfaceGradient = new Vector3();\nexport default function scaleToGeodeticSurface(cartesian, ellipsoid, result = []) {\n  const {\n    oneOverRadii,\n    oneOverRadiiSquared,\n    centerToleranceSquared\n  } = ellipsoid;\n  scratchVector.from(cartesian);\n  const positionX = scratchVector.x;\n  const positionY = scratchVector.y;\n  const positionZ = scratchVector.z;\n  const oneOverRadiiX = oneOverRadii.x;\n  const oneOverRadiiY = oneOverRadii.y;\n  const oneOverRadiiZ = oneOverRadii.z;\n  const x2 = positionX * positionX * oneOverRadiiX * oneOverRadiiX;\n  const y2 = positionY * positionY * oneOverRadiiY * oneOverRadiiY;\n  const z2 = positionZ * positionZ * oneOverRadiiZ * oneOverRadiiZ;\n  const squaredNorm = x2 + y2 + z2;\n  const ratio = Math.sqrt(1.0 / squaredNorm);\n\n  if (!Number.isFinite(ratio)) {\n    return undefined;\n  }\n\n  const intersection = scaleToGeodeticSurfaceIntersection;\n  intersection.copy(cartesian).scale(ratio);\n\n  if (squaredNorm < centerToleranceSquared) {\n    return intersection.to(result);\n  }\n\n  const oneOverRadiiSquaredX = oneOverRadiiSquared.x;\n  const oneOverRadiiSquaredY = oneOverRadiiSquared.y;\n  const oneOverRadiiSquaredZ = oneOverRadiiSquared.z;\n  const gradient = scaleToGeodeticSurfaceGradient;\n  gradient.set(intersection.x * oneOverRadiiSquaredX * 2.0, intersection.y * oneOverRadiiSquaredY * 2.0, intersection.z * oneOverRadiiSquaredZ * 2.0);\n  let lambda = (1.0 - ratio) * scratchVector.len() / (0.5 * gradient.len());\n  let correction = 0.0;\n  let xMultiplier;\n  let yMultiplier;\n  let zMultiplier;\n  let func;\n\n  do {\n    lambda -= correction;\n    xMultiplier = 1.0 / (1.0 + lambda * oneOverRadiiSquaredX);\n    yMultiplier = 1.0 / (1.0 + lambda * oneOverRadiiSquaredY);\n    zMultiplier = 1.0 / (1.0 + lambda * oneOverRadiiSquaredZ);\n    const xMultiplier2 = xMultiplier * xMultiplier;\n    const yMultiplier2 = yMultiplier * yMultiplier;\n    const zMultiplier2 = zMultiplier * zMultiplier;\n    const xMultiplier3 = xMultiplier2 * xMultiplier;\n    const yMultiplier3 = yMultiplier2 * yMultiplier;\n    const zMultiplier3 = zMultiplier2 * zMultiplier;\n    func = x2 * xMultiplier2 + y2 * yMultiplier2 + z2 * zMultiplier2 - 1.0;\n    const denominator = x2 * xMultiplier3 * oneOverRadiiSquaredX + y2 * yMultiplier3 * oneOverRadiiSquaredY + z2 * zMultiplier3 * oneOverRadiiSquaredZ;\n    const derivative = -2.0 * denominator;\n    correction = func / derivative;\n  } while (Math.abs(func) > _MathUtils.EPSILON12);\n\n  return scratchVector.scale([xMultiplier, yMultiplier, zMultiplier]).to(result);\n}\n//# sourceMappingURL=scale-to-geodetic-surface.js.map","import { Vector3, assert, equals as equalsEpsilon } from '@math.gl/core';\nconst EPSILON14 = 1e-14;\nconst scratchOrigin = new Vector3();\nconst VECTOR_PRODUCT_LOCAL_FRAME = {\n  up: {\n    south: 'east',\n    north: 'west',\n    west: 'south',\n    east: 'north'\n  },\n  down: {\n    south: 'west',\n    north: 'east',\n    west: 'north',\n    east: 'south'\n  },\n  south: {\n    up: 'west',\n    down: 'east',\n    west: 'down',\n    east: 'up'\n  },\n  north: {\n    up: 'east',\n    down: 'west',\n    west: 'up',\n    east: 'down'\n  },\n  west: {\n    up: 'north',\n    down: 'south',\n    north: 'down',\n    south: 'up'\n  },\n  east: {\n    up: 'south',\n    down: 'north',\n    north: 'up',\n    south: 'down'\n  }\n};\nconst degeneratePositionLocalFrame = {\n  north: [-1, 0, 0],\n  east: [0, 1, 0],\n  up: [0, 0, 1],\n  south: [1, 0, 0],\n  west: [0, -1, 0],\n  down: [0, 0, -1]\n};\nconst scratchAxisVectors = {\n  east: new Vector3(),\n  north: new Vector3(),\n  up: new Vector3(),\n  west: new Vector3(),\n  south: new Vector3(),\n  down: new Vector3()\n};\nconst scratchVector1 = new Vector3();\nconst scratchVector2 = new Vector3();\nconst scratchVector3 = new Vector3();\nexport default function localFrameToFixedFrame(ellipsoid, firstAxis, secondAxis, thirdAxis, cartesianOrigin, result) {\n  const thirdAxisInferred = VECTOR_PRODUCT_LOCAL_FRAME[firstAxis] && VECTOR_PRODUCT_LOCAL_FRAME[firstAxis][secondAxis];\n  assert(thirdAxisInferred && (!thirdAxis || thirdAxis === thirdAxisInferred));\n  let firstAxisVector;\n  let secondAxisVector;\n  let thirdAxisVector;\n  const origin = scratchOrigin.copy(cartesianOrigin);\n  const atPole = equalsEpsilon(origin.x, 0.0, EPSILON14) && equalsEpsilon(origin.y, 0.0, EPSILON14);\n\n  if (atPole) {\n    const sign = Math.sign(origin.z);\n    firstAxisVector = scratchVector1.fromArray(degeneratePositionLocalFrame[firstAxis]);\n\n    if (firstAxis !== 'east' && firstAxis !== 'west') {\n      firstAxisVector.scale(sign);\n    }\n\n    secondAxisVector = scratchVector2.fromArray(degeneratePositionLocalFrame[secondAxis]);\n\n    if (secondAxis !== 'east' && secondAxis !== 'west') {\n      secondAxisVector.scale(sign);\n    }\n\n    thirdAxisVector = scratchVector3.fromArray(degeneratePositionLocalFrame[thirdAxis]);\n\n    if (thirdAxis !== 'east' && thirdAxis !== 'west') {\n      thirdAxisVector.scale(sign);\n    }\n  } else {\n    const {\n      up,\n      east,\n      north\n    } = scratchAxisVectors;\n    east.set(-origin.y, origin.x, 0.0).normalize();\n    ellipsoid.geodeticSurfaceNormal(origin, up);\n    north.copy(up).cross(east);\n    const {\n      down,\n      west,\n      south\n    } = scratchAxisVectors;\n    down.copy(up).scale(-1);\n    west.copy(east).scale(-1);\n    south.copy(north).scale(-1);\n    firstAxisVector = scratchAxisVectors[firstAxis];\n    secondAxisVector = scratchAxisVectors[secondAxis];\n    thirdAxisVector = scratchAxisVectors[thirdAxis];\n  }\n\n  result[0] = firstAxisVector.x;\n  result[1] = firstAxisVector.y;\n  result[2] = firstAxisVector.z;\n  result[3] = 0.0;\n  result[4] = secondAxisVector.x;\n  result[5] = secondAxisVector.y;\n  result[6] = secondAxisVector.z;\n  result[7] = 0.0;\n  result[8] = thirdAxisVector.x;\n  result[9] = thirdAxisVector.y;\n  result[10] = thirdAxisVector.z;\n  result[11] = 0.0;\n  result[12] = origin.x;\n  result[13] = origin.y;\n  result[14] = origin.z;\n  result[15] = 1.0;\n  return result;\n}\n//# sourceMappingURL=ellipsoid-transform.js.map","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Vector3, Matrix4, assert, equals, _MathUtils } from '@math.gl/core';\nimport * as vec3 from 'gl-matrix/vec3';\nimport { WGS84_RADIUS_X, WGS84_RADIUS_Y, WGS84_RADIUS_Z } from '../constants';\nimport { fromCartographicToRadians, toCartographicFromRadians } from '../type-utils';\nimport scaleToGeodeticSurface from './helpers/scale-to-geodetic-surface';\nimport localFrameToFixedFrame from './helpers/ellipsoid-transform';\nconst scratchVector = new Vector3();\nconst scratchNormal = new Vector3();\nconst scratchK = new Vector3();\nconst scratchPosition = new Vector3();\nconst scratchHeight = new Vector3();\nconst scratchCartesian = new Vector3();\nlet wgs84;\nexport default class Ellipsoid {\n  constructor(x = 0.0, y = 0.0, z = 0.0) {\n    _defineProperty(this, \"radii\", void 0);\n\n    _defineProperty(this, \"radiiSquared\", void 0);\n\n    _defineProperty(this, \"radiiToTheFourth\", void 0);\n\n    _defineProperty(this, \"oneOverRadii\", void 0);\n\n    _defineProperty(this, \"oneOverRadiiSquared\", void 0);\n\n    _defineProperty(this, \"minimumRadius\", void 0);\n\n    _defineProperty(this, \"maximumRadius\", void 0);\n\n    _defineProperty(this, \"centerToleranceSquared\", _MathUtils.EPSILON1);\n\n    _defineProperty(this, \"squaredXOverSquaredZ\", void 0);\n\n    assert(x >= 0.0);\n    assert(y >= 0.0);\n    assert(z >= 0.0);\n    this.radii = new Vector3(x, y, z);\n    this.radiiSquared = new Vector3(x * x, y * y, z * z);\n    this.radiiToTheFourth = new Vector3(x * x * x * x, y * y * y * y, z * z * z * z);\n    this.oneOverRadii = new Vector3(x === 0.0 ? 0.0 : 1.0 / x, y === 0.0 ? 0.0 : 1.0 / y, z === 0.0 ? 0.0 : 1.0 / z);\n    this.oneOverRadiiSquared = new Vector3(x === 0.0 ? 0.0 : 1.0 / (x * x), y === 0.0 ? 0.0 : 1.0 / (y * y), z === 0.0 ? 0.0 : 1.0 / (z * z));\n    this.minimumRadius = Math.min(x, y, z);\n    this.maximumRadius = Math.max(x, y, z);\n\n    if (this.radiiSquared.z !== 0) {\n      this.squaredXOverSquaredZ = this.radiiSquared.x / this.radiiSquared.z;\n    }\n\n    Object.freeze(this);\n  }\n\n  equals(right) {\n    return this === right || Boolean(right && this.radii.equals(right.radii));\n  }\n\n  toString() {\n    return this.radii.toString();\n  }\n\n  cartographicToCartesian(cartographic, result = [0, 0, 0]) {\n    const normal = scratchNormal;\n    const k = scratchK;\n    const [,, height] = cartographic;\n    this.geodeticSurfaceNormalCartographic(cartographic, normal);\n    k.copy(this.radiiSquared).scale(normal);\n    const gamma = Math.sqrt(normal.dot(k));\n    k.scale(1 / gamma);\n    normal.scale(height);\n    k.add(normal);\n    return k.to(result);\n  }\n\n  cartesianToCartographic(cartesian, result = [0, 0, 0]) {\n    scratchCartesian.from(cartesian);\n    const point = this.scaleToGeodeticSurface(scratchCartesian, scratchPosition);\n\n    if (!point) {\n      return undefined;\n    }\n\n    const normal = this.geodeticSurfaceNormal(point, scratchNormal);\n    const h = scratchHeight;\n    h.copy(scratchCartesian).subtract(point);\n    const longitude = Math.atan2(normal.y, normal.x);\n    const latitude = Math.asin(normal.z);\n    const height = Math.sign(vec3.dot(h, scratchCartesian)) * vec3.length(h);\n    return toCartographicFromRadians([longitude, latitude, height], result);\n  }\n\n  eastNorthUpToFixedFrame(origin, result = new Matrix4()) {\n    return localFrameToFixedFrame(this, 'east', 'north', 'up', origin, result);\n  }\n\n  localFrameToFixedFrame(firstAxis, secondAxis, thirdAxis, origin, result = new Matrix4()) {\n    return localFrameToFixedFrame(this, firstAxis, secondAxis, thirdAxis, origin, result);\n  }\n\n  geocentricSurfaceNormal(cartesian, result = [0, 0, 0]) {\n    return scratchVector.from(cartesian).normalize().to(result);\n  }\n\n  geodeticSurfaceNormalCartographic(cartographic, result = [0, 0, 0]) {\n    const cartographicVectorRadians = fromCartographicToRadians(cartographic);\n    const longitude = cartographicVectorRadians[0];\n    const latitude = cartographicVectorRadians[1];\n    const cosLatitude = Math.cos(latitude);\n    scratchVector.set(cosLatitude * Math.cos(longitude), cosLatitude * Math.sin(longitude), Math.sin(latitude)).normalize();\n    return scratchVector.to(result);\n  }\n\n  geodeticSurfaceNormal(cartesian, result = [0, 0, 0]) {\n    return scratchVector.from(cartesian).scale(this.oneOverRadiiSquared).normalize().to(result);\n  }\n\n  scaleToGeodeticSurface(cartesian, result) {\n    return scaleToGeodeticSurface(cartesian, this, result);\n  }\n\n  scaleToGeocentricSurface(cartesian, result = [0, 0, 0]) {\n    scratchPosition.from(cartesian);\n    const positionX = scratchPosition.x;\n    const positionY = scratchPosition.y;\n    const positionZ = scratchPosition.z;\n    const oneOverRadiiSquared = this.oneOverRadiiSquared;\n    const beta = 1.0 / Math.sqrt(positionX * positionX * oneOverRadiiSquared.x + positionY * positionY * oneOverRadiiSquared.y + positionZ * positionZ * oneOverRadiiSquared.z);\n    return scratchPosition.multiplyScalar(beta).to(result);\n  }\n\n  transformPositionToScaledSpace(position, result = [0, 0, 0]) {\n    return scratchPosition.from(position).scale(this.oneOverRadii).to(result);\n  }\n\n  transformPositionFromScaledSpace(position, result = [0, 0, 0]) {\n    return scratchPosition.from(position).scale(this.radii).to(result);\n  }\n\n  getSurfaceNormalIntersectionWithZAxis(position, buffer = 0, result = [0, 0, 0]) {\n    assert(equals(this.radii.x, this.radii.y, _MathUtils.EPSILON15));\n    assert(this.radii.z > 0);\n    scratchPosition.from(position);\n    const z = scratchPosition.z * (1 - this.squaredXOverSquaredZ);\n\n    if (Math.abs(z) >= this.radii.z - buffer) {\n      return undefined;\n    }\n\n    return scratchPosition.set(0.0, 0.0, z).to(result);\n  }\n\n}\n\n_defineProperty(Ellipsoid, \"WGS84\", new Ellipsoid(WGS84_RADIUS_X, WGS84_RADIUS_Y, WGS84_RADIUS_Z));\n//# sourceMappingURL=ellipsoid.js.map","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nexport class DoublyLinkedListNode {\n  constructor(item, previous, next) {\n    _defineProperty(this, \"item\", void 0);\n    _defineProperty(this, \"previous\", void 0);\n    _defineProperty(this, \"next\", void 0);\n    this.item = item;\n    this.previous = previous;\n    this.next = next;\n  }\n}\n//# sourceMappingURL=doubly-linked-list-node.js.map","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { DoublyLinkedListNode } from './doubly-linked-list-node';\nexport class DoublyLinkedList {\n  constructor() {\n    _defineProperty(this, \"head\", null);\n    _defineProperty(this, \"tail\", null);\n    _defineProperty(this, \"_length\", 0);\n  }\n  get length() {\n    return this._length;\n  }\n  add(item) {\n    const node = new DoublyLinkedListNode(item, this.tail, null);\n    if (this.tail) {\n      this.tail.next = node;\n      this.tail = node;\n    } else {\n      this.head = node;\n      this.tail = node;\n    }\n    ++this._length;\n    return node;\n  }\n  remove(node) {\n    if (!node) {\n      return;\n    }\n    if (node.previous && node.next) {\n      node.previous.next = node.next;\n      node.next.previous = node.previous;\n    } else if (node.previous) {\n      node.previous.next = null;\n      this.tail = node.previous;\n    } else if (node.next) {\n      node.next.previous = null;\n      this.head = node.next;\n    } else {\n      this.head = null;\n      this.tail = null;\n    }\n    node.next = null;\n    node.previous = null;\n    --this._length;\n  }\n  splice(node, nextNode) {\n    if (node === nextNode) {\n      return;\n    }\n    this.remove(nextNode);\n    this._insert(node, nextNode);\n  }\n  _insert(node, nextNode) {\n    const oldNodeNext = node.next;\n    node.next = nextNode;\n    if (this.tail === node) {\n      this.tail = nextNode;\n    } else {\n      oldNodeNext.previous = nextNode;\n    }\n    nextNode.next = oldNodeNext;\n    nextNode.previous = node;\n    ++this._length;\n  }\n}\n//# sourceMappingURL=doubly-linked-list.js.map","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { DoublyLinkedList } from '../utils/doubly-linked-list';\nexport class TilesetCache {\n  constructor() {\n    _defineProperty(this, \"_list\", void 0);\n    _defineProperty(this, \"_sentinel\", void 0);\n    _defineProperty(this, \"_trimTiles\", void 0);\n    this._list = new DoublyLinkedList();\n    this._sentinel = this._list.add('sentinel');\n    this._trimTiles = false;\n  }\n  reset() {\n    this._list.splice(this._list.tail, this._sentinel);\n  }\n  touch(tile) {\n    const node = tile._cacheNode;\n    if (node) {\n      this._list.splice(this._sentinel, node);\n    }\n  }\n  add(tileset, tile, addCallback) {\n    if (!tile._cacheNode) {\n      tile._cacheNode = this._list.add(tile);\n      if (addCallback) {\n        addCallback(tileset, tile);\n      }\n    }\n  }\n  unloadTile(tileset, tile, unloadCallback) {\n    const node = tile._cacheNode;\n    if (!node) {\n      return;\n    }\n    this._list.remove(node);\n    tile._cacheNode = null;\n    if (unloadCallback) {\n      unloadCallback(tileset, tile);\n    }\n  }\n  unloadTiles(tileset, unloadCallback) {\n    const trimTiles = this._trimTiles;\n    this._trimTiles = false;\n    const list = this._list;\n    const maximumMemoryUsageInBytes = tileset.maximumMemoryUsage * 1024 * 1024;\n    const sentinel = this._sentinel;\n    let node = list.head;\n    while (node !== sentinel && (tileset.gpuMemoryUsageInBytes > maximumMemoryUsageInBytes || trimTiles)) {\n      const tile = node.item;\n      node = node.next;\n      this.unloadTile(tileset, tile, unloadCallback);\n    }\n  }\n  trim() {\n    this._trimTiles = true;\n  }\n}\n//# sourceMappingURL=tileset-cache.js.map","import { Vector3 } from '@math.gl/core';\nimport { CullingVolume, Plane } from '@math.gl/culling';\nimport { Ellipsoid } from '@math.gl/geospatial';\nconst scratchVector = new Vector3();\nconst scratchPosition = new Vector3();\nconst cullingVolume = new CullingVolume([new Plane(), new Plane(), new Plane(), new Plane(), new Plane(), new Plane()]);\nexport function getFrameState(viewport, frameNumber) {\n  const {\n    cameraDirection,\n    cameraUp,\n    height\n  } = viewport;\n  const {\n    metersPerUnit\n  } = viewport.distanceScales;\n  const viewportCenterCartesian = worldToCartesian(viewport, viewport.center);\n  const enuToFixedTransform = Ellipsoid.WGS84.eastNorthUpToFixedFrame(viewportCenterCartesian);\n  const cameraPositionCartographic = viewport.unprojectPosition(viewport.cameraPosition);\n  const cameraPositionCartesian = Ellipsoid.WGS84.cartographicToCartesian(cameraPositionCartographic, new Vector3());\n  const cameraDirectionCartesian = new Vector3(enuToFixedTransform.transformAsVector(new Vector3(cameraDirection).scale(metersPerUnit))).normalize();\n  const cameraUpCartesian = new Vector3(enuToFixedTransform.transformAsVector(new Vector3(cameraUp).scale(metersPerUnit))).normalize();\n  commonSpacePlanesToWGS84(viewport);\n  const ViewportClass = viewport.constructor;\n  const {\n    longitude,\n    latitude,\n    width,\n    bearing,\n    zoom\n  } = viewport;\n  const topDownViewport = new ViewportClass({\n    longitude,\n    latitude,\n    height,\n    width,\n    bearing,\n    zoom,\n    pitch: 0\n  });\n  return {\n    camera: {\n      position: cameraPositionCartesian,\n      direction: cameraDirectionCartesian,\n      up: cameraUpCartesian\n    },\n    viewport,\n    topDownViewport,\n    height,\n    cullingVolume,\n    frameNumber,\n    sseDenominator: 1.15\n  };\n}\nexport function limitSelectedTiles(tiles, frameState, maximumTilesSelected) {\n  if (maximumTilesSelected === 0 || tiles.length <= maximumTilesSelected) {\n    return [tiles, []];\n  }\n  const tuples = [];\n  const {\n    longitude: viewportLongitude,\n    latitude: viewportLatitude\n  } = frameState.viewport;\n  for (const [index, tile] of tiles.entries()) {\n    const [longitude, latitude] = tile.header.mbs;\n    const deltaLon = Math.abs(viewportLongitude - longitude);\n    const deltaLat = Math.abs(viewportLatitude - latitude);\n    const distance = Math.sqrt(deltaLat * deltaLat + deltaLon * deltaLon);\n    tuples.push([index, distance]);\n  }\n  const tuplesSorted = tuples.sort((a, b) => a[1] - b[1]);\n  const selectedTiles = [];\n  for (let i = 0; i < maximumTilesSelected; i++) {\n    selectedTiles.push(tiles[tuplesSorted[i][0]]);\n  }\n  const unselectedTiles = [];\n  for (let i = maximumTilesSelected; i < tuplesSorted.length; i++) {\n    unselectedTiles.push(tiles[tuplesSorted[i][0]]);\n  }\n  return [selectedTiles, unselectedTiles];\n}\nfunction commonSpacePlanesToWGS84(viewport) {\n  const frustumPlanes = viewport.getFrustumPlanes();\n  const nearCenterCommon = closestPointOnPlane(frustumPlanes.near, viewport.cameraPosition);\n  const nearCenterCartesian = worldToCartesian(viewport, nearCenterCommon);\n  const cameraCartesian = worldToCartesian(viewport, viewport.cameraPosition, scratchPosition);\n  let i = 0;\n  cullingVolume.planes[i++].fromPointNormal(nearCenterCartesian, scratchVector.copy(nearCenterCartesian).subtract(cameraCartesian));\n  for (const dir in frustumPlanes) {\n    if (dir === 'near') {\n      continue;\n    }\n    const plane = frustumPlanes[dir];\n    const posCommon = closestPointOnPlane(plane, nearCenterCommon, scratchPosition);\n    const cartesianPos = worldToCartesian(viewport, posCommon, scratchPosition);\n    cullingVolume.planes[i++].fromPointNormal(cartesianPos, scratchVector.copy(nearCenterCartesian).subtract(cartesianPos));\n  }\n}\nfunction closestPointOnPlane(plane, refPoint) {\n  let out = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : new Vector3();\n  const distanceToRef = plane.normal.dot(refPoint);\n  out.copy(plane.normal).scale(plane.distance - distanceToRef).add(refPoint);\n  return out;\n}\nfunction worldToCartesian(viewport, point) {\n  let out = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : new Vector3();\n  const cartographicPos = viewport.unprojectPosition(point);\n  return Ellipsoid.WGS84.cartographicToCartesian(cartographicPos, out);\n}\n//# sourceMappingURL=frame-state.js.map","import { Vector3 } from '@math.gl/core';\nimport { BoundingSphere, OrientedBoundingBox } from '@math.gl/culling';\nimport { Ellipsoid } from '@math.gl/geospatial';\nconst WGS84_RADIUS_X = 6378137.0;\nconst WGS84_RADIUS_Y = 6378137.0;\nconst WGS84_RADIUS_Z = 6356752.3142451793;\nconst scratchVector = new Vector3();\nexport function getZoomFromBoundingVolume(boundingVolume, cartorgraphicCenter) {\n  if (boundingVolume instanceof OrientedBoundingBox) {\n    const {\n      halfAxes\n    } = boundingVolume;\n    const obbSize = getObbSize(halfAxes);\n    return Math.log2(WGS84_RADIUS_Z / (obbSize + cartorgraphicCenter[2]));\n  } else if (boundingVolume instanceof BoundingSphere) {\n    const {\n      radius\n    } = boundingVolume;\n    return Math.log2(WGS84_RADIUS_Z / (radius + cartorgraphicCenter[2]));\n  } else if (boundingVolume.width && boundingVolume.height) {\n    const {\n      width,\n      height\n    } = boundingVolume;\n    const zoomX = Math.log2(WGS84_RADIUS_X / width);\n    const zoomY = Math.log2(WGS84_RADIUS_Y / height);\n    return (zoomX + zoomY) / 2;\n  }\n  return 1;\n}\nexport function getZoomFromFullExtent(fullExtent, cartorgraphicCenter, cartesianCenter) {\n  const extentVertex = Ellipsoid.WGS84.cartographicToCartesian([fullExtent.xmax, fullExtent.ymax, fullExtent.zmax], new Vector3());\n  const extentSize = Math.sqrt(Math.pow(extentVertex[0] - cartesianCenter[0], 2) + Math.pow(extentVertex[1] - cartesianCenter[1], 2) + Math.pow(extentVertex[2] - cartesianCenter[2], 2));\n  return Math.log2(WGS84_RADIUS_Z / (extentSize + cartorgraphicCenter[2]));\n}\nexport function getZoomFromExtent(extent, cartorgraphicCenter, cartesianCenter) {\n  const [xmin, ymin, xmax, ymax] = extent;\n  return getZoomFromFullExtent({\n    xmin,\n    xmax,\n    ymin,\n    ymax,\n    zmin: 0,\n    zmax: 0\n  }, cartorgraphicCenter, cartesianCenter);\n}\nfunction getObbSize(halfAxes) {\n  halfAxes.getColumn(0, scratchVector);\n  const axeY = halfAxes.getColumn(1);\n  const axeZ = halfAxes.getColumn(2);\n  const farthestVertex = scratchVector.add(axeY).add(axeZ);\n  const size = farthestVertex.len();\n  return size;\n}\n//# sourceMappingURL=zoom.js.map","export const TILE_CONTENT_STATE = {\n  UNLOADED: 0,\n  LOADING: 1,\n  PROCESSING: 2,\n  READY: 3,\n  EXPIRED: 4,\n  FAILED: 5\n};\nexport const TILE_REFINEMENT = {\n  ADD: 1,\n  REPLACE: 2\n};\nexport const TILE_TYPE = {\n  EMPTY: 'empty',\n  SCENEGRAPH: 'scenegraph',\n  POINTCLOUD: 'pointcloud',\n  MESH: 'mesh'\n};\nexport const TILESET_TYPE = {\n  I3S: 'I3S',\n  TILES3D: 'TILES3D'\n};\nexport const LOD_METRIC_TYPE = {\n  GEOMETRIC_ERROR: 'geometricError',\n  MAX_SCREEN_THRESHOLD: 'maxScreenThreshold'\n};\nexport const TILE3D_OPTIMIZATION_HINT = {\n  NOT_COMPUTED: -1,\n  USE_OPTIMIZATION: 1,\n  SKIP_OPTIMIZATION: 0\n};\n//# sourceMappingURL=constants.js.map","import { Quaternion, Vector3, Matrix3, Matrix4, degrees } from '@math.gl/core';\nimport { BoundingSphere, OrientedBoundingBox } from '@math.gl/culling';\nimport { Ellipsoid } from '@math.gl/geospatial';\nimport { assert } from '@loaders.gl/loader-utils';\nfunction defined(x) {\n  return x !== undefined && x !== null;\n}\nconst scratchPoint = new Vector3();\nconst scratchScale = new Vector3();\nconst scratchNorthWest = new Vector3();\nconst scratchSouthEast = new Vector3();\nexport function createBoundingVolume(boundingVolumeHeader, transform, result) {\n  assert(boundingVolumeHeader, '3D Tile: boundingVolume must be defined');\n  if (boundingVolumeHeader.box) {\n    return createBox(boundingVolumeHeader.box, transform, result);\n  }\n  if (boundingVolumeHeader.region) {\n    const [west, south, east, north, minHeight, maxHeight] = boundingVolumeHeader.region;\n    const northWest = Ellipsoid.WGS84.cartographicToCartesian([degrees(west), degrees(north), minHeight], scratchNorthWest);\n    const southEast = Ellipsoid.WGS84.cartographicToCartesian([degrees(east), degrees(south), maxHeight], scratchSouthEast);\n    const centerInCartesian = new Vector3().addVectors(northWest, southEast).multiplyScalar(0.5);\n    const radius = new Vector3().subVectors(northWest, southEast).len() / 2.0;\n    return createSphere([centerInCartesian[0], centerInCartesian[1], centerInCartesian[2], radius], new Matrix4());\n  }\n  if (boundingVolumeHeader.sphere) {\n    return createSphere(boundingVolumeHeader.sphere, transform, result);\n  }\n  throw new Error('3D Tile: boundingVolume must contain a sphere, region, or box');\n}\nexport function getCartographicBounds(boundingVolumeHeader, boundingVolume) {\n  if (boundingVolumeHeader.box) {\n    return orientedBoundingBoxToCartographicBounds(boundingVolume);\n  }\n  if (boundingVolumeHeader.region) {\n    const [west, south, east, north, minHeight, maxHeight] = boundingVolumeHeader.region;\n    return [[degrees(west), degrees(south), minHeight], [degrees(east), degrees(north), maxHeight]];\n  }\n  if (boundingVolumeHeader.sphere) {\n    return boundingSphereToCartographicBounds(boundingVolume);\n  }\n  throw new Error('Unkown boundingVolume type');\n}\nfunction createBox(box, transform, result) {\n  const center = new Vector3(box[0], box[1], box[2]);\n  transform.transform(center, center);\n  let origin = [];\n  if (box.length === 10) {\n    const halfSize = box.slice(3, 6);\n    const quaternion = new Quaternion();\n    quaternion.fromArray(box, 6);\n    const x = new Vector3([1, 0, 0]);\n    const y = new Vector3([0, 1, 0]);\n    const z = new Vector3([0, 0, 1]);\n    x.transformByQuaternion(quaternion);\n    x.scale(halfSize[0]);\n    y.transformByQuaternion(quaternion);\n    y.scale(halfSize[1]);\n    z.transformByQuaternion(quaternion);\n    z.scale(halfSize[2]);\n    origin = [...x.toArray(), ...y.toArray(), ...z.toArray()];\n  } else {\n    origin = [...box.slice(3, 6), ...box.slice(6, 9), ...box.slice(9, 12)];\n  }\n  const xAxis = transform.transformAsVector(origin.slice(0, 3));\n  const yAxis = transform.transformAsVector(origin.slice(3, 6));\n  const zAxis = transform.transformAsVector(origin.slice(6, 9));\n  const halfAxes = new Matrix3([xAxis[0], xAxis[1], xAxis[2], yAxis[0], yAxis[1], yAxis[2], zAxis[0], zAxis[1], zAxis[2]]);\n  if (defined(result)) {\n    result.center = center;\n    result.halfAxes = halfAxes;\n    return result;\n  }\n  return new OrientedBoundingBox(center, halfAxes);\n}\nfunction createSphere(sphere, transform, result) {\n  const center = new Vector3(sphere[0], sphere[1], sphere[2]);\n  transform.transform(center, center);\n  const scale = transform.getScale(scratchScale);\n  const uniformScale = Math.max(Math.max(scale[0], scale[1]), scale[2]);\n  const radius = sphere[3] * uniformScale;\n  if (defined(result)) {\n    result.center = center;\n    result.radius = radius;\n    return result;\n  }\n  return new BoundingSphere(center, radius);\n}\nfunction orientedBoundingBoxToCartographicBounds(boundingVolume) {\n  const result = emptyCartographicBounds();\n  const {\n    halfAxes\n  } = boundingVolume;\n  const xAxis = new Vector3(halfAxes.getColumn(0));\n  const yAxis = new Vector3(halfAxes.getColumn(1));\n  const zAxis = new Vector3(halfAxes.getColumn(2));\n  for (let x = 0; x < 2; x++) {\n    for (let y = 0; y < 2; y++) {\n      for (let z = 0; z < 2; z++) {\n        scratchPoint.copy(boundingVolume.center);\n        scratchPoint.add(xAxis);\n        scratchPoint.add(yAxis);\n        scratchPoint.add(zAxis);\n        addToCartographicBounds(result, scratchPoint);\n        zAxis.negate();\n      }\n      yAxis.negate();\n    }\n    xAxis.negate();\n  }\n  return result;\n}\nfunction boundingSphereToCartographicBounds(boundingVolume) {\n  const result = emptyCartographicBounds();\n  const {\n    center,\n    radius\n  } = boundingVolume;\n  const point = Ellipsoid.WGS84.scaleToGeodeticSurface(center, scratchPoint);\n  let zAxis;\n  if (point) {\n    zAxis = Ellipsoid.WGS84.geodeticSurfaceNormal(point);\n  } else {\n    zAxis = new Vector3(0, 0, 1);\n  }\n  let xAxis = new Vector3(zAxis[2], -zAxis[1], 0);\n  if (xAxis.len() > 0) {\n    xAxis.normalize();\n  } else {\n    xAxis = new Vector3(0, 1, 0);\n  }\n  const yAxis = xAxis.clone().cross(zAxis);\n  for (const axis of [xAxis, yAxis, zAxis]) {\n    scratchScale.copy(axis).scale(radius);\n    for (let dir = 0; dir < 2; dir++) {\n      scratchPoint.copy(center);\n      scratchPoint.add(scratchScale);\n      addToCartographicBounds(result, scratchPoint);\n      scratchScale.negate();\n    }\n  }\n  return result;\n}\nfunction emptyCartographicBounds() {\n  return [[Infinity, Infinity, Infinity], [-Infinity, -Infinity, -Infinity]];\n}\nfunction addToCartographicBounds(target, cartesian) {\n  Ellipsoid.WGS84.cartesianToCartographic(cartesian, scratchPoint);\n  target[0][0] = Math.min(target[0][0], scratchPoint[0]);\n  target[0][1] = Math.min(target[0][1], scratchPoint[1]);\n  target[0][2] = Math.min(target[0][2], scratchPoint[2]);\n  target[1][0] = Math.max(target[1][0], scratchPoint[0]);\n  target[1][1] = Math.max(target[1][1], scratchPoint[1]);\n  target[1][2] = Math.max(target[1][2], scratchPoint[2]);\n}\n//# sourceMappingURL=bounding-volume.js.map","import { Matrix4, Vector3, clamp } from '@math.gl/core';\nconst scratchPositionNormal = new Vector3();\nconst scratchCartographic = new Vector3();\nconst scratchMatrix = new Matrix4();\nconst scratchCenter = new Vector3();\nconst scratchPosition = new Vector3();\nconst scratchDirection = new Vector3();\nexport function calculateDynamicScreenSpaceError(root, _ref) {\n  let {\n    camera,\n    mapProjection\n  } = _ref;\n  let options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n  const {\n    dynamicScreenSpaceErrorHeightFalloff = 0.25,\n    dynamicScreenSpaceErrorDensity = 0.00278\n  } = options;\n  let up;\n  let direction;\n  let height;\n  let minimumHeight;\n  let maximumHeight;\n  const tileBoundingVolume = root.contentBoundingVolume;\n  if (tileBoundingVolume instanceof TileBoundingRegion) {\n    up = Cartesian3.normalize(camera.positionWC, scratchPositionNormal);\n    direction = camera.directionWC;\n    height = camera.positionCartographic.height;\n    minimumHeight = tileBoundingVolume.minimumHeight;\n    maximumHeight = tileBoundingVolume.maximumHeight;\n  } else {\n    const transformLocal = Matrix4.inverseTransformation(root.computedTransform, scratchMatrix);\n    const ellipsoid = mapProjection.ellipsoid;\n    const boundingVolume = tileBoundingVolume.boundingVolume;\n    const centerLocal = Matrix4.multiplyByPoint(transformLocal, boundingVolume.center, scratchCenter);\n    if (Cartesian3.magnitude(centerLocal) > ellipsoid.minimumRadius) {\n      const centerCartographic = Cartographic.fromCartesian(centerLocal, ellipsoid, scratchCartographic);\n      up = Cartesian3.normalize(camera.positionWC, scratchPositionNormal);\n      direction = camera.directionWC;\n      height = camera.positionCartographic.height;\n      minimumHeight = 0.0;\n      maximumHeight = centerCartographic.height * 2.0;\n    } else {\n      const positionLocal = Matrix4.multiplyByPoint(transformLocal, camera.positionWC, scratchPosition);\n      up = Cartesian3.UNIT_Z;\n      direction = Matrix4.multiplyByPointAsVector(transformLocal, camera.directionWC, scratchDirection);\n      direction = Cartesian3.normalize(direction, direction);\n      height = positionLocal.z;\n      if (tileBoundingVolume instanceof TileOrientedBoundingBox) {\n        const boxHeight = root._header.boundingVolume.box[11];\n        minimumHeight = centerLocal.z - boxHeight;\n        maximumHeight = centerLocal.z + boxHeight;\n      } else if (tileBoundingVolume instanceof TileBoundingSphere) {\n        const radius = boundingVolume.radius;\n        minimumHeight = centerLocal.z - radius;\n        maximumHeight = centerLocal.z + radius;\n      }\n    }\n  }\n  const heightFalloff = dynamicScreenSpaceErrorHeightFalloff;\n  const heightClose = minimumHeight + (maximumHeight - minimumHeight) * heightFalloff;\n  const heightFar = maximumHeight;\n  const t = clamp((height - heightClose) / (heightFar - heightClose), 0.0, 1.0);\n  const dot = Math.abs(Cartesian3.dot(direction, up));\n  let horizonFactor = 1.0 - dot;\n  horizonFactor = horizonFactor * (1.0 - t);\n  return dynamicScreenSpaceErrorDensity * horizonFactor;\n}\nexport function fog(distanceToCamera, density) {\n  const scalar = distanceToCamera * density;\n  return 1.0 - Math.exp(-(scalar * scalar));\n}\nexport function getDynamicScreenSpaceError(tileset, distanceToCamera) {\n  if (tileset.dynamicScreenSpaceError && tileset.dynamicScreenSpaceErrorComputedDensity) {\n    const density = tileset.dynamicScreenSpaceErrorComputedDensity;\n    const factor = tileset.dynamicScreenSpaceErrorFactor;\n    const dynamicError = fog(distanceToCamera, density) * factor;\n    return dynamicError;\n  }\n  return 0;\n}\nexport function getTiles3DScreenSpaceError(tile, frameState, useParentLodMetric) {\n  const tileset = tile.tileset;\n  const parentLodMetricValue = tile.parent && tile.parent.lodMetricValue || tile.lodMetricValue;\n  const lodMetricValue = useParentLodMetric ? parentLodMetricValue : tile.lodMetricValue;\n  if (lodMetricValue === 0.0) {\n    return 0.0;\n  }\n  const distance = Math.max(tile._distanceToCamera, 1e-7);\n  const {\n    height,\n    sseDenominator\n  } = frameState;\n  const {\n    viewDistanceScale\n  } = tileset.options;\n  let error = lodMetricValue * height * (viewDistanceScale || 1.0) / (distance * sseDenominator);\n  error -= getDynamicScreenSpaceError(tileset, distance);\n  return error;\n}\n//# sourceMappingURL=tiles-3d-lod.js.map","import { Matrix4, Vector3 } from '@math.gl/core';\nimport { Ellipsoid } from '@math.gl/geospatial';\nconst cameraPositionCartesian = new Vector3();\nconst toEye = new Vector3();\nconst cameraPositionEnu = new Vector3();\nconst extraVertexEnu = new Vector3();\nconst projectedOriginVector = new Vector3();\nconst enuToCartesianMatrix = new Matrix4();\nconst cartesianToEnuMatrix = new Matrix4();\nexport function getLodStatus(tile, frameState) {\n  if (tile.lodMetricValue === 0 || isNaN(tile.lodMetricValue)) {\n    return 'DIG';\n  }\n  const screenSize = 2 * getProjectedRadius(tile, frameState);\n  if (screenSize < 2) {\n    return 'OUT';\n  }\n  if (!tile.header.children || screenSize <= tile.lodMetricValue) {\n    return 'DRAW';\n  } else if (tile.header.children) {\n    return 'DIG';\n  }\n  return 'OUT';\n}\nexport function getProjectedRadius(tile, frameState) {\n  const {\n    topDownViewport: viewport\n  } = frameState;\n  const mbsLat = tile.header.mbs[1];\n  const mbsLon = tile.header.mbs[0];\n  const mbsZ = tile.header.mbs[2];\n  const mbsR = tile.header.mbs[3];\n  const mbsCenterCartesian = [...tile.boundingVolume.center];\n  const cameraPositionCartographic = viewport.unprojectPosition(viewport.cameraPosition);\n  Ellipsoid.WGS84.cartographicToCartesian(cameraPositionCartographic, cameraPositionCartesian);\n  toEye.copy(cameraPositionCartesian).subtract(mbsCenterCartesian).normalize();\n  Ellipsoid.WGS84.eastNorthUpToFixedFrame(mbsCenterCartesian, enuToCartesianMatrix);\n  cartesianToEnuMatrix.copy(enuToCartesianMatrix).invert();\n  cameraPositionEnu.copy(cameraPositionCartesian).transform(cartesianToEnuMatrix);\n  const projection = Math.sqrt(cameraPositionEnu[0] * cameraPositionEnu[0] + cameraPositionEnu[1] * cameraPositionEnu[1]);\n  const extraZ = projection * projection / cameraPositionEnu[2];\n  extraVertexEnu.copy([cameraPositionEnu[0], cameraPositionEnu[1], extraZ]);\n  const extraVertexCartesian = extraVertexEnu.transform(enuToCartesianMatrix);\n  const extraVectorCartesian = extraVertexCartesian.subtract(mbsCenterCartesian).normalize();\n  const radiusVector = toEye.cross(extraVectorCartesian).normalize().scale(mbsR);\n  const sphereMbsBorderVertexCartesian = radiusVector.add(mbsCenterCartesian);\n  const sphereMbsBorderVertexCartographic = Ellipsoid.WGS84.cartesianToCartographic(sphereMbsBorderVertexCartesian);\n  const projectedOrigin = viewport.project([mbsLon, mbsLat, mbsZ]);\n  const projectedMbsBorderVertex = viewport.project(sphereMbsBorderVertexCartographic);\n  const projectedRadius = projectedOriginVector.copy(projectedOrigin).subtract(projectedMbsBorderVertex).magnitude();\n  return projectedRadius;\n}\n//# sourceMappingURL=i3s-lod.js.map","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { assert } from '@loaders.gl/loader-utils';\nexport class ManagedArray {\n  constructor() {\n    let length = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n    _defineProperty(this, \"_map\", new Map());\n    _defineProperty(this, \"_array\", void 0);\n    _defineProperty(this, \"_length\", void 0);\n    this._array = new Array(length);\n    this._length = length;\n  }\n  get length() {\n    return this._length;\n  }\n  set length(length) {\n    this._length = length;\n    if (length > this._array.length) {\n      this._array.length = length;\n    }\n  }\n  get values() {\n    return this._array;\n  }\n  get(index) {\n    assert(index < this._array.length);\n    return this._array[index];\n  }\n  set(index, element) {\n    assert(index >= 0);\n    if (index >= this.length) {\n      this.length = index + 1;\n    }\n    if (this._map.has(this._array[index])) {\n      this._map.delete(this._array[index]);\n    }\n    this._array[index] = element;\n    this._map.set(element, index);\n  }\n  delete(element) {\n    const index = this._map.get(element);\n    if (index >= 0) {\n      this._array.splice(index, 1);\n      this._map.delete(element);\n      this.length--;\n    }\n  }\n  peek() {\n    return this._array[this._length - 1];\n  }\n  push(element) {\n    if (!this._map.has(element)) {\n      const index = this.length++;\n      this._array[index] = element;\n      this._map.set(element, index);\n    }\n  }\n  pop() {\n    const element = this._array[--this.length];\n    this._map.delete(element);\n    return element;\n  }\n  reserve(length) {\n    assert(length >= 0);\n    if (length > this._array.length) {\n      this._array.length = length;\n    }\n  }\n  resize(length) {\n    assert(length >= 0);\n    this.length = length;\n  }\n  trim(length) {\n    if (length === null || length === undefined) {\n      length = this.length;\n    }\n    this._array.length = length;\n  }\n  reset() {\n    this._array = [];\n    this._map = new Map();\n    this._length = 0;\n  }\n  find(target) {\n    return this._map.has(target);\n  }\n}\n//# sourceMappingURL=managed-array.js.map","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { ManagedArray } from '../utils/managed-array';\nimport { TILE_REFINEMENT } from '../constants';\nexport const DEFAULT_PROPS = {\n  loadSiblings: false,\n  skipLevelOfDetail: false,\n  maximumScreenSpaceError: 2,\n  updateTransforms: true,\n  onTraversalEnd: () => {},\n  viewportTraversersMap: {},\n  basePath: ''\n};\nexport class TilesetTraverser {\n  traversalFinished(frameState) {\n    return true;\n  }\n  constructor(options) {\n    _defineProperty(this, \"options\", void 0);\n    _defineProperty(this, \"root\", null);\n    _defineProperty(this, \"selectedTiles\", {});\n    _defineProperty(this, \"requestedTiles\", {});\n    _defineProperty(this, \"emptyTiles\", {});\n    _defineProperty(this, \"lastUpdate\", new Date().getTime());\n    _defineProperty(this, \"updateDebounceTime\", 1000);\n    _defineProperty(this, \"_traversalStack\", new ManagedArray());\n    _defineProperty(this, \"_emptyTraversalStack\", new ManagedArray());\n    _defineProperty(this, \"_frameNumber\", null);\n    this.options = {\n      ...DEFAULT_PROPS,\n      ...options\n    };\n  }\n  traverse(root, frameState, options) {\n    this.root = root;\n    this.options = {\n      ...this.options,\n      ...options\n    };\n    this.reset();\n    this.updateTile(root, frameState);\n    this._frameNumber = frameState.frameNumber;\n    this.executeTraversal(root, frameState);\n  }\n  reset() {\n    this.requestedTiles = {};\n    this.selectedTiles = {};\n    this.emptyTiles = {};\n    this._traversalStack.reset();\n    this._emptyTraversalStack.reset();\n  }\n  executeTraversal(root, frameState) {\n    const stack = this._traversalStack;\n    root._selectionDepth = 1;\n    stack.push(root);\n    while (stack.length > 0) {\n      const tile = stack.pop();\n      let shouldRefine = false;\n      if (this.canTraverse(tile, frameState)) {\n        this.updateChildTiles(tile, frameState);\n        shouldRefine = this.updateAndPushChildren(tile, frameState, stack, tile.hasRenderContent ? tile._selectionDepth + 1 : tile._selectionDepth);\n      }\n      const parent = tile.parent;\n      const parentRefines = Boolean(!parent || parent._shouldRefine);\n      const stoppedRefining = !shouldRefine;\n      if (!tile.hasRenderContent) {\n        this.emptyTiles[tile.id] = tile;\n        this.loadTile(tile, frameState);\n        if (stoppedRefining) {\n          this.selectTile(tile, frameState);\n        }\n      } else if (tile.refine === TILE_REFINEMENT.ADD) {\n        this.loadTile(tile, frameState);\n        this.selectTile(tile, frameState);\n      } else if (tile.refine === TILE_REFINEMENT.REPLACE) {\n        this.loadTile(tile, frameState);\n        if (stoppedRefining) {\n          this.selectTile(tile, frameState);\n        }\n      }\n      this.touchTile(tile, frameState);\n      tile._shouldRefine = shouldRefine && parentRefines;\n    }\n    const newTime = new Date().getTime();\n    if (this.traversalFinished(frameState) || newTime - this.lastUpdate > this.updateDebounceTime) {\n      this.lastUpdate = newTime;\n      this.options.onTraversalEnd(frameState);\n    }\n  }\n  updateChildTiles(tile, frameState) {\n    const children = tile.children;\n    for (const child of children) {\n      this.updateTile(child, frameState);\n    }\n  }\n  updateAndPushChildren(tile, frameState, stack, depth) {\n    const {\n      loadSiblings,\n      skipLevelOfDetail\n    } = this.options;\n    const children = tile.children;\n    children.sort(this.compareDistanceToCamera.bind(this));\n    const checkRefines = tile.refine === TILE_REFINEMENT.REPLACE && tile.hasRenderContent && !skipLevelOfDetail;\n    let hasVisibleChild = false;\n    let refines = true;\n    for (const child of children) {\n      child._selectionDepth = depth;\n      if (child.isVisibleAndInRequestVolume) {\n        if (stack.find(child)) {\n          stack.delete(child);\n        }\n        stack.push(child);\n        hasVisibleChild = true;\n      } else if (checkRefines || loadSiblings) {\n        this.loadTile(child, frameState);\n        this.touchTile(child, frameState);\n      }\n      if (checkRefines) {\n        let childRefines;\n        if (!child._inRequestVolume) {\n          childRefines = false;\n        } else if (!child.hasRenderContent) {\n          childRefines = this.executeEmptyTraversal(child, frameState);\n        } else {\n          childRefines = child.contentAvailable;\n        }\n        refines = refines && childRefines;\n        if (!refines) {\n          return false;\n        }\n      }\n    }\n    if (!hasVisibleChild) {\n      refines = false;\n    }\n    return refines;\n  }\n  updateTile(tile, frameState) {\n    this.updateTileVisibility(tile, frameState);\n  }\n  selectTile(tile, frameState) {\n    if (this.shouldSelectTile(tile)) {\n      tile._selectedFrame = frameState.frameNumber;\n      this.selectedTiles[tile.id] = tile;\n    }\n  }\n  loadTile(tile, frameState) {\n    if (this.shouldLoadTile(tile)) {\n      tile._requestedFrame = frameState.frameNumber;\n      tile._priority = tile._getPriority();\n      this.requestedTiles[tile.id] = tile;\n    }\n  }\n  touchTile(tile, frameState) {\n    tile.tileset._cache.touch(tile);\n    tile._touchedFrame = frameState.frameNumber;\n  }\n  canTraverse(tile, frameState) {\n    let useParentMetric = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n    let ignoreVisibility = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;\n    if (!tile.hasChildren) {\n      return false;\n    }\n    if (tile.hasTilesetContent) {\n      return !tile.contentExpired;\n    }\n    if (!ignoreVisibility && !tile.isVisibleAndInRequestVolume) {\n      return false;\n    }\n    return this.shouldRefine(tile, frameState, useParentMetric);\n  }\n  shouldLoadTile(tile) {\n    return tile.hasUnloadedContent || tile.contentExpired;\n  }\n  shouldSelectTile(tile) {\n    return tile.contentAvailable && !this.options.skipLevelOfDetail;\n  }\n  shouldRefine(tile, frameState) {\n    let useParentMetric = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n    let screenSpaceError = tile._screenSpaceError;\n    if (useParentMetric) {\n      screenSpaceError = tile.getScreenSpaceError(frameState, true);\n    }\n    return screenSpaceError > this.options.maximumScreenSpaceError;\n  }\n  updateTileVisibility(tile, frameState) {\n    const viewportIds = [];\n    if (this.options.viewportTraversersMap) {\n      for (const key in this.options.viewportTraversersMap) {\n        const value = this.options.viewportTraversersMap[key];\n        if (value === frameState.viewport.id) {\n          viewportIds.push(key);\n        }\n      }\n    } else {\n      viewportIds.push(frameState.viewport.id);\n    }\n    tile.updateVisibility(frameState, viewportIds);\n  }\n  compareDistanceToCamera(b, a) {\n    return b._distanceToCamera - a._distanceToCamera;\n  }\n  anyChildrenVisible(tile, frameState) {\n    let anyVisible = false;\n    for (const child of tile.children) {\n      child.updateVisibility(frameState);\n      anyVisible = anyVisible || child.isVisibleAndInRequestVolume;\n    }\n    return anyVisible;\n  }\n  executeEmptyTraversal(root, frameState) {\n    let allDescendantsLoaded = true;\n    const stack = this._emptyTraversalStack;\n    stack.push(root);\n    while (stack.length > 0 && allDescendantsLoaded) {\n      const tile = stack.pop();\n      this.updateTile(tile, frameState);\n      if (!tile.isVisibleAndInRequestVolume) {\n        this.loadTile(tile, frameState);\n      }\n      this.touchTile(tile, frameState);\n      const traverse = !tile.hasRenderContent && this.canTraverse(tile, frameState, false, true);\n      if (traverse) {\n        const children = tile.children;\n        for (const child of children) {\n          if (stack.find(child)) {\n            stack.delete(child);\n          }\n          stack.push(child);\n        }\n      } else if (!tile.contentAvailable && !tile.hasEmptyContent) {\n        allDescendantsLoaded = false;\n      }\n    }\n    return allDescendantsLoaded;\n  }\n}\n//# sourceMappingURL=tileset-traverser.js.map","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Vector3, Matrix4 } from '@math.gl/core';\nimport { CullingVolume } from '@math.gl/culling';\nimport { load } from '@loaders.gl/core';\nimport { TILE_REFINEMENT, TILE_CONTENT_STATE, TILESET_TYPE } from '../constants';\nimport { createBoundingVolume, getCartographicBounds } from './helpers/bounding-volume';\nimport { getTiles3DScreenSpaceError } from './helpers/tiles-3d-lod';\nimport { getProjectedRadius } from './helpers/i3s-lod';\nimport { get3dTilesOptions } from './helpers/3d-tiles-options';\nimport { TilesetTraverser } from './tileset-traverser';\nconst scratchVector = new Vector3();\nfunction defined(x) {\n  return x !== undefined && x !== null;\n}\nexport class Tile3D {\n  constructor(tileset, header, parentHeader) {\n    let extendedId = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : '';\n    _defineProperty(this, \"tileset\", void 0);\n    _defineProperty(this, \"header\", void 0);\n    _defineProperty(this, \"id\", void 0);\n    _defineProperty(this, \"url\", void 0);\n    _defineProperty(this, \"parent\", void 0);\n    _defineProperty(this, \"refine\", void 0);\n    _defineProperty(this, \"type\", void 0);\n    _defineProperty(this, \"contentUrl\", void 0);\n    _defineProperty(this, \"lodMetricType\", 'geometricError');\n    _defineProperty(this, \"lodMetricValue\", 0);\n    _defineProperty(this, \"boundingVolume\", null);\n    _defineProperty(this, \"content\", null);\n    _defineProperty(this, \"contentState\", TILE_CONTENT_STATE.UNLOADED);\n    _defineProperty(this, \"gpuMemoryUsageInBytes\", 0);\n    _defineProperty(this, \"children\", []);\n    _defineProperty(this, \"depth\", 0);\n    _defineProperty(this, \"viewportIds\", []);\n    _defineProperty(this, \"transform\", new Matrix4());\n    _defineProperty(this, \"extensions\", null);\n    _defineProperty(this, \"implicitTiling\", null);\n    _defineProperty(this, \"userData\", {});\n    _defineProperty(this, \"computedTransform\", void 0);\n    _defineProperty(this, \"hasEmptyContent\", false);\n    _defineProperty(this, \"hasTilesetContent\", false);\n    _defineProperty(this, \"traverser\", new TilesetTraverser({}));\n    _defineProperty(this, \"_cacheNode\", null);\n    _defineProperty(this, \"_frameNumber\", null);\n    _defineProperty(this, \"_expireDate\", null);\n    _defineProperty(this, \"_expiredContent\", null);\n    _defineProperty(this, \"_boundingBox\", void 0);\n    _defineProperty(this, \"_distanceToCamera\", 0);\n    _defineProperty(this, \"_screenSpaceError\", 0);\n    _defineProperty(this, \"_visibilityPlaneMask\", void 0);\n    _defineProperty(this, \"_visible\", undefined);\n    _defineProperty(this, \"_contentBoundingVolume\", void 0);\n    _defineProperty(this, \"_viewerRequestVolume\", void 0);\n    _defineProperty(this, \"_initialTransform\", new Matrix4());\n    _defineProperty(this, \"_priority\", 0);\n    _defineProperty(this, \"_selectedFrame\", 0);\n    _defineProperty(this, \"_requestedFrame\", 0);\n    _defineProperty(this, \"_selectionDepth\", 0);\n    _defineProperty(this, \"_touchedFrame\", 0);\n    _defineProperty(this, \"_centerZDepth\", 0);\n    _defineProperty(this, \"_shouldRefine\", false);\n    _defineProperty(this, \"_stackLength\", 0);\n    _defineProperty(this, \"_visitedFrame\", 0);\n    _defineProperty(this, \"_inRequestVolume\", false);\n    _defineProperty(this, \"_lodJudge\", null);\n    this.header = header;\n    this.tileset = tileset;\n    this.id = extendedId || header.id;\n    this.url = header.url;\n    this.parent = parentHeader;\n    this.refine = this._getRefine(header.refine);\n    this.type = header.type;\n    this.contentUrl = header.contentUrl;\n    this._initializeLodMetric(header);\n    this._initializeTransforms(header);\n    this._initializeBoundingVolumes(header);\n    this._initializeContent(header);\n    this._initializeRenderingState(header);\n    Object.seal(this);\n  }\n  destroy() {\n    this.header = null;\n  }\n  isDestroyed() {\n    return this.header === null;\n  }\n  get selected() {\n    return this._selectedFrame === this.tileset._frameNumber;\n  }\n  get isVisible() {\n    return this._visible;\n  }\n  get isVisibleAndInRequestVolume() {\n    return this._visible && this._inRequestVolume;\n  }\n  get hasRenderContent() {\n    return !this.hasEmptyContent && !this.hasTilesetContent;\n  }\n  get hasChildren() {\n    return this.children.length > 0 || this.header.children && this.header.children.length > 0;\n  }\n  get contentReady() {\n    return this.contentState === TILE_CONTENT_STATE.READY || this.hasEmptyContent;\n  }\n  get contentAvailable() {\n    return Boolean(this.contentReady && this.hasRenderContent || this._expiredContent && !this.contentFailed);\n  }\n  get hasUnloadedContent() {\n    return this.hasRenderContent && this.contentUnloaded;\n  }\n  get contentUnloaded() {\n    return this.contentState === TILE_CONTENT_STATE.UNLOADED;\n  }\n  get contentExpired() {\n    return this.contentState === TILE_CONTENT_STATE.EXPIRED;\n  }\n  get contentFailed() {\n    return this.contentState === TILE_CONTENT_STATE.FAILED;\n  }\n  get distanceToCamera() {\n    return this._distanceToCamera;\n  }\n  get screenSpaceError() {\n    return this._screenSpaceError;\n  }\n  get boundingBox() {\n    if (!this._boundingBox) {\n      this._boundingBox = getCartographicBounds(this.header.boundingVolume, this.boundingVolume);\n    }\n    return this._boundingBox;\n  }\n  getScreenSpaceError(frameState, useParentLodMetric) {\n    switch (this.tileset.type) {\n      case TILESET_TYPE.I3S:\n        return getProjectedRadius(this, frameState);\n      case TILESET_TYPE.TILES3D:\n        return getTiles3DScreenSpaceError(this, frameState, useParentLodMetric);\n      default:\n        throw new Error('Unsupported tileset type');\n    }\n  }\n  unselect() {\n    this._selectedFrame = 0;\n  }\n  _getGpuMemoryUsageInBytes() {\n    return this.content.gpuMemoryUsageInBytes || this.content.byteLength || 0;\n  }\n  _getPriority() {\n    const traverser = this.tileset._traverser;\n    const {\n      skipLevelOfDetail\n    } = traverser.options;\n    const maySkipTile = this.refine === TILE_REFINEMENT.ADD || skipLevelOfDetail;\n    if (maySkipTile && !this.isVisible && this._visible !== undefined) {\n      return -1;\n    }\n    if (this.tileset._frameNumber - this._touchedFrame >= 1) {\n      return -1;\n    }\n    if (this.contentState === TILE_CONTENT_STATE.UNLOADED) {\n      return -1;\n    }\n    const parent = this.parent;\n    const useParentScreenSpaceError = parent && (!maySkipTile || this._screenSpaceError === 0.0 || parent.hasTilesetContent);\n    const screenSpaceError = useParentScreenSpaceError ? parent._screenSpaceError : this._screenSpaceError;\n    const rootScreenSpaceError = traverser.root ? traverser.root._screenSpaceError : 0.0;\n    return Math.max(rootScreenSpaceError - screenSpaceError, 0);\n  }\n  async loadContent() {\n    if (this.hasEmptyContent) {\n      return false;\n    }\n    if (this.content) {\n      return true;\n    }\n    const expired = this.contentExpired;\n    if (expired) {\n      this._expireDate = null;\n    }\n    this.contentState = TILE_CONTENT_STATE.LOADING;\n    const requestToken = await this.tileset._requestScheduler.scheduleRequest(this.id, this._getPriority.bind(this));\n    if (!requestToken) {\n      this.contentState = TILE_CONTENT_STATE.UNLOADED;\n      return false;\n    }\n    try {\n      const contentUrl = this.tileset.getTileUrl(this.contentUrl);\n      const loader = this.tileset.loader;\n      const options = {\n        ...this.tileset.loadOptions,\n        [loader.id]: {\n          ...this.tileset.loadOptions[loader.id],\n          isTileset: this.type === 'json',\n          ...this._getLoaderSpecificOptions(loader.id)\n        }\n      };\n      this.content = await load(contentUrl, loader, options);\n      if (this.tileset.options.contentLoader) {\n        await this.tileset.options.contentLoader(this);\n      }\n      if (this._isTileset()) {\n        this.tileset._initializeTileHeaders(this.content, this);\n      }\n      this.contentState = TILE_CONTENT_STATE.READY;\n      this._onContentLoaded();\n      return true;\n    } catch (error) {\n      this.contentState = TILE_CONTENT_STATE.FAILED;\n      throw error;\n    } finally {\n      requestToken.done();\n    }\n  }\n  unloadContent() {\n    if (this.content && this.content.destroy) {\n      this.content.destroy();\n    }\n    this.content = null;\n    if (this.header.content && this.header.content.destroy) {\n      this.header.content.destroy();\n    }\n    this.header.content = null;\n    this.contentState = TILE_CONTENT_STATE.UNLOADED;\n    return true;\n  }\n  updateVisibility(frameState, viewportIds) {\n    if (this._frameNumber === frameState.frameNumber) {\n      return;\n    }\n    const parent = this.parent;\n    const parentVisibilityPlaneMask = parent ? parent._visibilityPlaneMask : CullingVolume.MASK_INDETERMINATE;\n    if (this.tileset._traverser.options.updateTransforms) {\n      const parentTransform = parent ? parent.computedTransform : this.tileset.modelMatrix;\n      this._updateTransform(parentTransform);\n    }\n    this._distanceToCamera = this.distanceToTile(frameState);\n    this._screenSpaceError = this.getScreenSpaceError(frameState, false);\n    this._visibilityPlaneMask = this.visibility(frameState, parentVisibilityPlaneMask);\n    this._visible = this._visibilityPlaneMask !== CullingVolume.MASK_OUTSIDE;\n    this._inRequestVolume = this.insideViewerRequestVolume(frameState);\n    this._frameNumber = frameState.frameNumber;\n    this.viewportIds = viewportIds;\n  }\n  visibility(frameState, parentVisibilityPlaneMask) {\n    const {\n      cullingVolume\n    } = frameState;\n    const {\n      boundingVolume\n    } = this;\n    return cullingVolume.computeVisibilityWithPlaneMask(boundingVolume, parentVisibilityPlaneMask);\n  }\n  contentVisibility() {\n    return true;\n  }\n  distanceToTile(frameState) {\n    const boundingVolume = this.boundingVolume;\n    return Math.sqrt(Math.max(boundingVolume.distanceSquaredTo(frameState.camera.position), 0));\n  }\n  cameraSpaceZDepth(_ref) {\n    let {\n      camera\n    } = _ref;\n    const boundingVolume = this.boundingVolume;\n    scratchVector.subVectors(boundingVolume.center, camera.position);\n    return camera.direction.dot(scratchVector);\n  }\n  insideViewerRequestVolume(frameState) {\n    const viewerRequestVolume = this._viewerRequestVolume;\n    return !viewerRequestVolume || viewerRequestVolume.distanceSquaredTo(frameState.camera.position) <= 0;\n  }\n  updateExpiration() {\n    if (defined(this._expireDate) && this.contentReady && !this.hasEmptyContent) {\n      const now = Date.now();\n      if (Date.lessThan(this._expireDate, now)) {\n        this.contentState = TILE_CONTENT_STATE.EXPIRED;\n        this._expiredContent = this.content;\n      }\n    }\n  }\n  get extras() {\n    return this.header.extras;\n  }\n  _initializeLodMetric(header) {\n    if ('lodMetricType' in header) {\n      this.lodMetricType = header.lodMetricType;\n    } else {\n      this.lodMetricType = this.parent && this.parent.lodMetricType || this.tileset.lodMetricType;\n      console.warn(\"3D Tile: Required prop lodMetricType is undefined. Using parent lodMetricType\");\n    }\n    if ('lodMetricValue' in header) {\n      this.lodMetricValue = header.lodMetricValue;\n    } else {\n      this.lodMetricValue = this.parent && this.parent.lodMetricValue || this.tileset.lodMetricValue;\n      console.warn('3D Tile: Required prop lodMetricValue is undefined. Using parent lodMetricValue');\n    }\n  }\n  _initializeTransforms(tileHeader) {\n    this.transform = tileHeader.transform ? new Matrix4(tileHeader.transform) : new Matrix4();\n    const parent = this.parent;\n    const tileset = this.tileset;\n    const parentTransform = parent && parent.computedTransform ? parent.computedTransform.clone() : tileset.modelMatrix.clone();\n    this.computedTransform = new Matrix4(parentTransform).multiplyRight(this.transform);\n    const parentInitialTransform = parent && parent._initialTransform ? parent._initialTransform.clone() : new Matrix4();\n    this._initialTransform = new Matrix4(parentInitialTransform).multiplyRight(this.transform);\n  }\n  _initializeBoundingVolumes(tileHeader) {\n    this._contentBoundingVolume = null;\n    this._viewerRequestVolume = null;\n    this._updateBoundingVolume(tileHeader);\n  }\n  _initializeContent(tileHeader) {\n    this.content = {\n      _tileset: this.tileset,\n      _tile: this\n    };\n    this.hasEmptyContent = true;\n    this.contentState = TILE_CONTENT_STATE.UNLOADED;\n    this.hasTilesetContent = false;\n    if (tileHeader.contentUrl) {\n      this.content = null;\n      this.hasEmptyContent = false;\n    }\n  }\n  _initializeRenderingState(header) {\n    this.depth = header.level || (this.parent ? this.parent.depth + 1 : 0);\n    this._shouldRefine = false;\n    this._distanceToCamera = 0;\n    this._centerZDepth = 0;\n    this._screenSpaceError = 0;\n    this._visibilityPlaneMask = CullingVolume.MASK_INDETERMINATE;\n    this._visible = undefined;\n    this._inRequestVolume = false;\n    this._stackLength = 0;\n    this._selectionDepth = 0;\n    this._frameNumber = 0;\n    this._touchedFrame = 0;\n    this._visitedFrame = 0;\n    this._selectedFrame = 0;\n    this._requestedFrame = 0;\n    this._priority = 0.0;\n  }\n  _getRefine(refine) {\n    return refine || this.parent && this.parent.refine || TILE_REFINEMENT.REPLACE;\n  }\n  _isTileset() {\n    return this.contentUrl.indexOf('.json') !== -1;\n  }\n  _onContentLoaded() {\n    switch (this.content && this.content.type) {\n      case 'vctr':\n      case 'geom':\n        this.tileset._traverser.disableSkipLevelOfDetail = true;\n        break;\n      default:\n    }\n    if (this._isTileset()) {\n      this.hasTilesetContent = true;\n    } else {\n      this.gpuMemoryUsageInBytes = this._getGpuMemoryUsageInBytes();\n    }\n  }\n  _updateBoundingVolume(header) {\n    this.boundingVolume = createBoundingVolume(header.boundingVolume, this.computedTransform, this.boundingVolume);\n    const content = header.content;\n    if (!content) {\n      return;\n    }\n    if (content.boundingVolume) {\n      this._contentBoundingVolume = createBoundingVolume(content.boundingVolume, this.computedTransform, this._contentBoundingVolume);\n    }\n    if (header.viewerRequestVolume) {\n      this._viewerRequestVolume = createBoundingVolume(header.viewerRequestVolume, this.computedTransform, this._viewerRequestVolume);\n    }\n  }\n  _updateTransform() {\n    let parentTransform = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : new Matrix4();\n    const computedTransform = parentTransform.clone().multiplyRight(this.transform);\n    const didTransformChange = !computedTransform.equals(this.computedTransform);\n    if (!didTransformChange) {\n      return;\n    }\n    this.computedTransform = computedTransform;\n    this._updateBoundingVolume(this.header);\n  }\n  _getLoaderSpecificOptions(loaderId) {\n    switch (loaderId) {\n      case 'i3s':\n        return {\n          ...this.tileset.options.i3s,\n          _tileOptions: {\n            attributeUrls: this.header.attributeUrls,\n            textureUrl: this.header.textureUrl,\n            textureFormat: this.header.textureFormat,\n            textureLoaderOptions: this.header.textureLoaderOptions,\n            materialDefinition: this.header.materialDefinition,\n            isDracoGeometry: this.header.isDracoGeometry,\n            mbs: this.header.mbs\n          },\n          _tilesetOptions: {\n            store: this.tileset.tileset.store,\n            attributeStorageInfo: this.tileset.tileset.attributeStorageInfo,\n            fields: this.tileset.tileset.fields\n          },\n          isTileHeader: false\n        };\n      case '3d-tiles':\n      case 'cesium-ion':\n      default:\n        return get3dTilesOptions(this.tileset.tileset);\n    }\n  }\n}\n//# sourceMappingURL=tile-3d.js.map","export function get3dTilesOptions(tileset) {\n  return {\n    assetGltfUpAxis: tileset.asset && tileset.asset.gltfUpAxis || 'Y'\n  };\n}\n//# sourceMappingURL=3d-tiles-options.js.map","import { TILE3D_OPTIMIZATION_HINT, TILE_REFINEMENT } from '../../constants';\nimport { TilesetTraverser } from '../tileset-traverser';\nexport class Tileset3DTraverser extends TilesetTraverser {\n  compareDistanceToCamera(a, b) {\n    return b._distanceToCamera === 0 && a._distanceToCamera === 0 ? b._centerZDepth - a._centerZDepth : b._distanceToCamera - a._distanceToCamera;\n  }\n  updateTileVisibility(tile, frameState) {\n    super.updateTileVisibility(tile, frameState);\n    if (!tile.isVisibleAndInRequestVolume) {\n      return;\n    }\n    const hasChildren = tile.children.length > 0;\n    if (tile.hasTilesetContent && hasChildren) {\n      const firstChild = tile.children[0];\n      this.updateTileVisibility(firstChild, frameState);\n      tile._visible = firstChild._visible;\n      return;\n    }\n    if (this.meetsScreenSpaceErrorEarly(tile, frameState)) {\n      tile._visible = false;\n      return;\n    }\n    const replace = tile.refine === TILE_REFINEMENT.REPLACE;\n    const useOptimization = tile._optimChildrenWithinParent === TILE3D_OPTIMIZATION_HINT.USE_OPTIMIZATION;\n    if (replace && useOptimization && hasChildren) {\n      if (!this.anyChildrenVisible(tile, frameState)) {\n        tile._visible = false;\n        return;\n      }\n    }\n  }\n  meetsScreenSpaceErrorEarly(tile, frameState) {\n    const {\n      parent\n    } = tile;\n    if (!parent || parent.hasTilesetContent || parent.refine !== TILE_REFINEMENT.ADD) {\n      return false;\n    }\n    return !this.shouldRefine(tile, frameState, true);\n  }\n}\n//# sourceMappingURL=tileset-3d-traverser.js.map","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nexport class I3SPendingTilesRegister {\n  constructor() {\n    _defineProperty(this, \"frameNumberMap\", new Map());\n  }\n  register(viewportId, frameNumber) {\n    const viewportMap = this.frameNumberMap.get(viewportId) || new Map();\n    const oldCount = viewportMap.get(frameNumber) || 0;\n    viewportMap.set(frameNumber, oldCount + 1);\n    this.frameNumberMap.set(viewportId, viewportMap);\n  }\n  deregister(viewportId, frameNumber) {\n    const viewportMap = this.frameNumberMap.get(viewportId);\n    if (!viewportMap) {\n      return;\n    }\n    const oldCount = viewportMap.get(frameNumber) || 1;\n    viewportMap.set(frameNumber, oldCount - 1);\n  }\n  isZero(viewportId, frameNumber) {\n    var _this$frameNumberMap$;\n    const count = ((_this$frameNumberMap$ = this.frameNumberMap.get(viewportId)) === null || _this$frameNumberMap$ === void 0 ? void 0 : _this$frameNumberMap$.get(frameNumber)) || 0;\n    return count === 0;\n  }\n}\n//# sourceMappingURL=i3s-pending-tiles-register.js.map","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { I3SPendingTilesRegister } from './i3s-pending-tiles-register';\nconst STATUS = {\n  REQUESTED: 'REQUESTED',\n  COMPLETED: 'COMPLETED',\n  ERROR: 'ERROR'\n};\nexport class I3STileManager {\n  constructor() {\n    _defineProperty(this, \"_statusMap\", void 0);\n    _defineProperty(this, \"pendingTilesRegister\", new I3SPendingTilesRegister());\n    this._statusMap = {};\n  }\n  add(request, key, callback, frameState) {\n    if (!this._statusMap[key]) {\n      const {\n        frameNumber,\n        viewport: {\n          id\n        }\n      } = frameState;\n      this._statusMap[key] = {\n        request,\n        callback,\n        key,\n        frameState,\n        status: STATUS.REQUESTED\n      };\n      this.pendingTilesRegister.register(id, frameNumber);\n      request().then(data => {\n        this._statusMap[key].status = STATUS.COMPLETED;\n        const {\n          frameNumber: actualFrameNumber,\n          viewport: {\n            id\n          }\n        } = this._statusMap[key].frameState;\n        this.pendingTilesRegister.deregister(id, actualFrameNumber);\n        this._statusMap[key].callback(data, frameState);\n      }).catch(error => {\n        this._statusMap[key].status = STATUS.ERROR;\n        const {\n          frameNumber: actualFrameNumber,\n          viewport: {\n            id\n          }\n        } = this._statusMap[key].frameState;\n        this.pendingTilesRegister.deregister(id, actualFrameNumber);\n        callback(error);\n      });\n    }\n  }\n  update(key, frameState) {\n    if (this._statusMap[key]) {\n      const {\n        frameNumber,\n        viewport: {\n          id\n        }\n      } = this._statusMap[key].frameState;\n      this.pendingTilesRegister.deregister(id, frameNumber);\n      const {\n        frameNumber: newFrameNumber,\n        viewport: {\n          id: newViewportId\n        }\n      } = frameState;\n      this.pendingTilesRegister.register(newViewportId, newFrameNumber);\n      this._statusMap[key].frameState = frameState;\n    }\n  }\n  find(key) {\n    return this._statusMap[key];\n  }\n  hasPendingTiles(viewportId, frameNumber) {\n    return !this.pendingTilesRegister.isZero(viewportId, frameNumber);\n  }\n}\n//# sourceMappingURL=i3s-tile-manager.js.map","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { load } from '@loaders.gl/core';\nimport { TilesetTraverser } from '../tileset-traverser';\nimport { getLodStatus } from '../helpers/i3s-lod';\nimport { Tile3D } from '../tile-3d';\nimport { I3STileManager } from './i3s-tile-manager';\nexport class I3STilesetTraverser extends TilesetTraverser {\n  constructor(options) {\n    super(options);\n    _defineProperty(this, \"_tileManager\", void 0);\n    this._tileManager = new I3STileManager();\n  }\n  traversalFinished(frameState) {\n    return !this._tileManager.hasPendingTiles(frameState.viewport.id, this._frameNumber || 0);\n  }\n  shouldRefine(tile, frameState) {\n    tile._lodJudge = getLodStatus(tile, frameState);\n    return tile._lodJudge === 'DIG';\n  }\n  updateChildTiles(tile, frameState) {\n    const children = tile.header.children || [];\n    const childTiles = tile.children;\n    const tileset = tile.tileset;\n    for (const child of children) {\n      const extendedId = \"\".concat(child.id, \"-\").concat(frameState.viewport.id);\n      const childTile = childTiles && childTiles.find(t => t.id === extendedId);\n      if (!childTile) {\n        let request = () => this._loadTile(child.id, tileset);\n        const cachedRequest = this._tileManager.find(extendedId);\n        if (!cachedRequest) {\n          if (tileset.tileset.nodePages) {\n            request = () => tileset.tileset.nodePagesTile.formTileFromNodePages(child.id);\n          }\n          this._tileManager.add(request, extendedId, header => this._onTileLoad(header, tile, extendedId), frameState);\n        } else {\n          this._tileManager.update(extendedId, frameState);\n        }\n      } else if (childTile) {\n        this.updateTile(childTile, frameState);\n      }\n    }\n    return false;\n  }\n  async _loadTile(nodeId, tileset) {\n    const {\n      loader\n    } = tileset;\n    const nodeUrl = tileset.getTileUrl(\"\".concat(tileset.url, \"/nodes/\").concat(nodeId));\n    const options = {\n      ...tileset.loadOptions,\n      i3s: {\n        ...tileset.loadOptions.i3s,\n        isTileHeader: true\n      }\n    };\n    return await load(nodeUrl, loader, options);\n  }\n  _onTileLoad(header, tile, extendedId) {\n    const childTile = new Tile3D(tile.tileset, header, tile, extendedId);\n    tile.children.push(childTile);\n    const frameState = this._tileManager.find(childTile.id).frameState;\n    this.updateTile(childTile, frameState);\n    if (this._frameNumber === frameState.frameNumber && (this.traversalFinished(frameState) || new Date().getTime() - this.lastUpdate > this.updateDebounceTime)) {\n      this.executeTraversal(childTile, frameState);\n    }\n  }\n}\n//# sourceMappingURL=i3s-tileset-traverser.js.map","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Matrix4, Vector3 } from '@math.gl/core';\nimport { Ellipsoid } from '@math.gl/geospatial';\nimport { Stats } from '@probe.gl/stats';\nimport { RequestScheduler, path } from '@loaders.gl/loader-utils';\nimport { TilesetCache } from './tileset-cache';\nimport { calculateTransformProps } from './helpers/transform-utils';\nimport { getFrameState, limitSelectedTiles } from './helpers/frame-state';\nimport { getZoomFromBoundingVolume, getZoomFromExtent, getZoomFromFullExtent } from './helpers/zoom';\nimport { Tile3D } from './tile-3d';\nimport { TILESET_TYPE } from '../constants';\nimport { TilesetTraverser } from './tileset-traverser';\nimport { Tileset3DTraverser } from './format-3d-tiles/tileset-3d-traverser';\nimport { I3STilesetTraverser } from './format-i3s/i3s-tileset-traverser';\nconst DEFAULT_PROPS = {\n  description: '',\n  ellipsoid: Ellipsoid.WGS84,\n  modelMatrix: new Matrix4(),\n  throttleRequests: true,\n  maxRequests: 64,\n  maximumMemoryUsage: 32,\n  maximumTilesSelected: 0,\n  debounceTime: 0,\n  onTileLoad: () => {},\n  onTileUnload: () => {},\n  onTileError: () => {},\n  onTraversalComplete: selectedTiles => selectedTiles,\n  contentLoader: undefined,\n  viewDistanceScale: 1.0,\n  maximumScreenSpaceError: 8,\n  loadTiles: true,\n  updateTransforms: true,\n  viewportTraversersMap: null,\n  loadOptions: {\n    fetch: {}\n  },\n  attributions: [],\n  basePath: '',\n  i3s: {}\n};\nconst TILES_TOTAL = 'Tiles In Tileset(s)';\nconst TILES_IN_MEMORY = 'Tiles In Memory';\nconst TILES_IN_VIEW = 'Tiles In View';\nconst TILES_RENDERABLE = 'Tiles To Render';\nconst TILES_LOADED = 'Tiles Loaded';\nconst TILES_LOADING = 'Tiles Loading';\nconst TILES_UNLOADED = 'Tiles Unloaded';\nconst TILES_LOAD_FAILED = 'Failed Tile Loads';\nconst POINTS_COUNT = 'Points/Vertices';\nconst TILES_GPU_MEMORY = 'Tile Memory Use';\nexport class Tileset3D {\n  constructor(tileset, options) {\n    _defineProperty(this, \"options\", void 0);\n    _defineProperty(this, \"loadOptions\", void 0);\n    _defineProperty(this, \"type\", void 0);\n    _defineProperty(this, \"tileset\", void 0);\n    _defineProperty(this, \"loader\", void 0);\n    _defineProperty(this, \"url\", void 0);\n    _defineProperty(this, \"basePath\", void 0);\n    _defineProperty(this, \"modelMatrix\", void 0);\n    _defineProperty(this, \"ellipsoid\", void 0);\n    _defineProperty(this, \"lodMetricType\", void 0);\n    _defineProperty(this, \"lodMetricValue\", void 0);\n    _defineProperty(this, \"refine\", void 0);\n    _defineProperty(this, \"root\", null);\n    _defineProperty(this, \"roots\", {});\n    _defineProperty(this, \"asset\", {});\n    _defineProperty(this, \"description\", '');\n    _defineProperty(this, \"properties\", void 0);\n    _defineProperty(this, \"extras\", null);\n    _defineProperty(this, \"attributions\", {});\n    _defineProperty(this, \"credits\", {});\n    _defineProperty(this, \"stats\", void 0);\n    _defineProperty(this, \"contentFormats\", {\n      draco: false,\n      meshopt: false,\n      dds: false,\n      ktx2: false\n    });\n    _defineProperty(this, \"cartographicCenter\", null);\n    _defineProperty(this, \"cartesianCenter\", null);\n    _defineProperty(this, \"zoom\", 1);\n    _defineProperty(this, \"boundingVolume\", null);\n    _defineProperty(this, \"dynamicScreenSpaceErrorComputedDensity\", 0.0);\n    _defineProperty(this, \"maximumMemoryUsage\", 32);\n    _defineProperty(this, \"gpuMemoryUsageInBytes\", 0);\n    _defineProperty(this, \"_frameNumber\", 0);\n    _defineProperty(this, \"_queryParams\", {});\n    _defineProperty(this, \"_extensionsUsed\", []);\n    _defineProperty(this, \"_tiles\", {});\n    _defineProperty(this, \"_pendingCount\", 0);\n    _defineProperty(this, \"selectedTiles\", []);\n    _defineProperty(this, \"traverseCounter\", 0);\n    _defineProperty(this, \"geometricError\", 0);\n    _defineProperty(this, \"lastUpdatedVieports\", null);\n    _defineProperty(this, \"_requestedTiles\", []);\n    _defineProperty(this, \"_emptyTiles\", []);\n    _defineProperty(this, \"frameStateData\", {});\n    _defineProperty(this, \"_traverser\", void 0);\n    _defineProperty(this, \"_cache\", new TilesetCache());\n    _defineProperty(this, \"_requestScheduler\", void 0);\n    _defineProperty(this, \"updatePromise\", null);\n    _defineProperty(this, \"tilesetInitializationPromise\", void 0);\n    this.options = {\n      ...DEFAULT_PROPS,\n      ...options\n    };\n    this.tileset = tileset;\n    this.loader = tileset.loader;\n    this.type = tileset.type;\n    this.url = tileset.url;\n    this.basePath = tileset.basePath || path.dirname(this.url);\n    this.modelMatrix = this.options.modelMatrix;\n    this.ellipsoid = this.options.ellipsoid;\n    this.lodMetricType = tileset.lodMetricType;\n    this.lodMetricValue = tileset.lodMetricValue;\n    this.refine = tileset.root.refine;\n    this.loadOptions = this.options.loadOptions || {};\n    this._traverser = this._initializeTraverser();\n    this._requestScheduler = new RequestScheduler({\n      throttleRequests: this.options.throttleRequests,\n      maxRequests: this.options.maxRequests\n    });\n    this.stats = new Stats({\n      id: this.url\n    });\n    this._initializeStats();\n    this.tilesetInitializationPromise = this._initializeTileSet(tileset);\n  }\n  destroy() {\n    this._destroy();\n  }\n  isLoaded() {\n    return this._pendingCount === 0 && this._frameNumber !== 0 && this._requestedTiles.length === 0;\n  }\n  get tiles() {\n    return Object.values(this._tiles);\n  }\n  get frameNumber() {\n    return this._frameNumber;\n  }\n  get queryParams() {\n    return new URLSearchParams(this._queryParams).toString();\n  }\n  setProps(props) {\n    this.options = {\n      ...this.options,\n      ...props\n    };\n  }\n  setOptions(options) {\n    this.options = {\n      ...this.options,\n      ...options\n    };\n  }\n  getTileUrl(tilePath) {\n    const isDataUrl = tilePath.startsWith('data:');\n    if (isDataUrl) {\n      return tilePath;\n    }\n    return \"\".concat(tilePath).concat(tilePath.includes('?') ? '&' : '?').concat(this.queryParams);\n  }\n  hasExtension(extensionName) {\n    return Boolean(this._extensionsUsed.indexOf(extensionName) > -1);\n  }\n  update() {\n    let viewports = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;\n    this.tilesetInitializationPromise.then(() => {\n      if (!viewports && this.lastUpdatedVieports) {\n        viewports = this.lastUpdatedVieports;\n      } else {\n        this.lastUpdatedVieports = viewports;\n      }\n      if (viewports) {\n        this.doUpdate(viewports);\n      }\n    });\n  }\n  async selectTiles() {\n    let viewports = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;\n    await this.tilesetInitializationPromise;\n    if (viewports) {\n      this.lastUpdatedVieports = viewports;\n    }\n    if (!this.updatePromise) {\n      this.updatePromise = new Promise(resolve => {\n        setTimeout(() => {\n          if (this.lastUpdatedVieports) {\n            this.doUpdate(this.lastUpdatedVieports);\n          }\n          resolve(this._frameNumber);\n          this.updatePromise = null;\n        }, this.options.debounceTime);\n      });\n    }\n    return this.updatePromise;\n  }\n  doUpdate(viewports) {\n    if ('loadTiles' in this.options && !this.options.loadTiles) {\n      return;\n    }\n    if (this.traverseCounter > 0) {\n      return;\n    }\n    const preparedViewports = viewports instanceof Array ? viewports : [viewports];\n    this._cache.reset();\n    this._frameNumber++;\n    this.traverseCounter = preparedViewports.length;\n    const viewportsToTraverse = [];\n    for (const viewport of preparedViewports) {\n      const id = viewport.id;\n      if (this._needTraverse(id)) {\n        viewportsToTraverse.push(id);\n      } else {\n        this.traverseCounter--;\n      }\n    }\n    for (const viewport of preparedViewports) {\n      const id = viewport.id;\n      if (!this.roots[id]) {\n        this.roots[id] = this._initializeTileHeaders(this.tileset, null);\n      }\n      if (!viewportsToTraverse.includes(id)) {\n        continue;\n      }\n      const frameState = getFrameState(viewport, this._frameNumber);\n      this._traverser.traverse(this.roots[id], frameState, this.options);\n    }\n  }\n  _needTraverse(viewportId) {\n    let traverserId = viewportId;\n    if (this.options.viewportTraversersMap) {\n      traverserId = this.options.viewportTraversersMap[viewportId];\n    }\n    if (traverserId !== viewportId) {\n      return false;\n    }\n    return true;\n  }\n  _onTraversalEnd(frameState) {\n    const id = frameState.viewport.id;\n    if (!this.frameStateData[id]) {\n      this.frameStateData[id] = {\n        selectedTiles: [],\n        _requestedTiles: [],\n        _emptyTiles: []\n      };\n    }\n    const currentFrameStateData = this.frameStateData[id];\n    const selectedTiles = Object.values(this._traverser.selectedTiles);\n    const [filteredSelectedTiles, unselectedTiles] = limitSelectedTiles(selectedTiles, frameState, this.options.maximumTilesSelected);\n    currentFrameStateData.selectedTiles = filteredSelectedTiles;\n    for (const tile of unselectedTiles) {\n      tile.unselect();\n    }\n    currentFrameStateData._requestedTiles = Object.values(this._traverser.requestedTiles);\n    currentFrameStateData._emptyTiles = Object.values(this._traverser.emptyTiles);\n    this.traverseCounter--;\n    if (this.traverseCounter > 0) {\n      return;\n    }\n    this._updateTiles();\n  }\n  _updateTiles() {\n    this.selectedTiles = [];\n    this._requestedTiles = [];\n    this._emptyTiles = [];\n    for (const frameStateKey in this.frameStateData) {\n      const frameStateDataValue = this.frameStateData[frameStateKey];\n      this.selectedTiles = this.selectedTiles.concat(frameStateDataValue.selectedTiles);\n      this._requestedTiles = this._requestedTiles.concat(frameStateDataValue._requestedTiles);\n      this._emptyTiles = this._emptyTiles.concat(frameStateDataValue._emptyTiles);\n    }\n    this.selectedTiles = this.options.onTraversalComplete(this.selectedTiles);\n    for (const tile of this.selectedTiles) {\n      this._tiles[tile.id] = tile;\n    }\n    this._loadTiles();\n    this._unloadTiles();\n    this._updateStats();\n  }\n  _tilesChanged(oldSelectedTiles, selectedTiles) {\n    if (oldSelectedTiles.length !== selectedTiles.length) {\n      return true;\n    }\n    const set1 = new Set(oldSelectedTiles.map(t => t.id));\n    const set2 = new Set(selectedTiles.map(t => t.id));\n    let changed = oldSelectedTiles.filter(x => !set2.has(x.id)).length > 0;\n    changed = changed || selectedTiles.filter(x => !set1.has(x.id)).length > 0;\n    return changed;\n  }\n  _loadTiles() {\n    for (const tile of this._requestedTiles) {\n      if (tile.contentUnloaded) {\n        this._loadTile(tile);\n      }\n    }\n  }\n  _unloadTiles() {\n    this._cache.unloadTiles(this, (tileset, tile) => tileset._unloadTile(tile));\n  }\n  _updateStats() {\n    let tilesRenderable = 0;\n    let pointsRenderable = 0;\n    for (const tile of this.selectedTiles) {\n      if (tile.contentAvailable && tile.content) {\n        tilesRenderable++;\n        if (tile.content.pointCount) {\n          pointsRenderable += tile.content.pointCount;\n        } else {\n          pointsRenderable += tile.content.vertexCount;\n        }\n      }\n    }\n    this.stats.get(TILES_IN_VIEW).count = this.selectedTiles.length;\n    this.stats.get(TILES_RENDERABLE).count = tilesRenderable;\n    this.stats.get(POINTS_COUNT).count = pointsRenderable;\n  }\n  async _initializeTileSet(tilesetJson) {\n    if (this.type === TILESET_TYPE.I3S) {\n      this.calculateViewPropsI3S();\n      tilesetJson.root = await tilesetJson.root;\n    }\n    this.root = this._initializeTileHeaders(tilesetJson, null);\n    if (this.type === TILESET_TYPE.TILES3D) {\n      this._initializeTiles3DTileset(tilesetJson);\n      this.calculateViewPropsTiles3D();\n    }\n    if (this.type === TILESET_TYPE.I3S) {\n      this._initializeI3STileset();\n    }\n  }\n  calculateViewPropsI3S() {\n    var _this$tileset$store;\n    const fullExtent = this.tileset.fullExtent;\n    if (fullExtent) {\n      const {\n        xmin,\n        xmax,\n        ymin,\n        ymax,\n        zmin,\n        zmax\n      } = fullExtent;\n      this.cartographicCenter = new Vector3(xmin + (xmax - xmin) / 2, ymin + (ymax - ymin) / 2, zmin + (zmax - zmin) / 2);\n      this.cartesianCenter = Ellipsoid.WGS84.cartographicToCartesian(this.cartographicCenter, new Vector3());\n      this.zoom = getZoomFromFullExtent(fullExtent, this.cartographicCenter, this.cartesianCenter);\n      return;\n    }\n    const extent = (_this$tileset$store = this.tileset.store) === null || _this$tileset$store === void 0 ? void 0 : _this$tileset$store.extent;\n    if (extent) {\n      const [xmin, ymin, xmax, ymax] = extent;\n      this.cartographicCenter = new Vector3(xmin + (xmax - xmin) / 2, ymin + (ymax - ymin) / 2, 0);\n      this.cartesianCenter = Ellipsoid.WGS84.cartographicToCartesian(this.cartographicCenter, new Vector3());\n      this.zoom = getZoomFromExtent(extent, this.cartographicCenter, this.cartesianCenter);\n      return;\n    }\n    console.warn('Extent is not defined in the tileset header');\n    this.cartographicCenter = new Vector3();\n    this.zoom = 1;\n    return;\n  }\n  calculateViewPropsTiles3D() {\n    const root = this.root;\n    const {\n      center\n    } = root.boundingVolume;\n    if (!center) {\n      console.warn('center was not pre-calculated for the root tile');\n      this.cartographicCenter = new Vector3();\n      this.zoom = 1;\n      return;\n    }\n    if (center[0] !== 0 || center[1] !== 0 || center[2] !== 0) {\n      this.cartographicCenter = Ellipsoid.WGS84.cartesianToCartographic(center, new Vector3());\n    } else {\n      this.cartographicCenter = new Vector3(0, 0, -Ellipsoid.WGS84.radii[0]);\n    }\n    this.cartesianCenter = center;\n    this.zoom = getZoomFromBoundingVolume(root.boundingVolume, this.cartographicCenter);\n  }\n  _initializeStats() {\n    this.stats.get(TILES_TOTAL);\n    this.stats.get(TILES_LOADING);\n    this.stats.get(TILES_IN_MEMORY);\n    this.stats.get(TILES_IN_VIEW);\n    this.stats.get(TILES_RENDERABLE);\n    this.stats.get(TILES_LOADED);\n    this.stats.get(TILES_UNLOADED);\n    this.stats.get(TILES_LOAD_FAILED);\n    this.stats.get(POINTS_COUNT);\n    this.stats.get(TILES_GPU_MEMORY, 'memory');\n  }\n  _initializeTileHeaders(tilesetJson, parentTileHeader) {\n    const rootTile = new Tile3D(this, tilesetJson.root, parentTileHeader);\n    if (parentTileHeader) {\n      parentTileHeader.children.push(rootTile);\n      rootTile.depth = parentTileHeader.depth + 1;\n    }\n    if (this.type === TILESET_TYPE.TILES3D) {\n      const stack = [];\n      stack.push(rootTile);\n      while (stack.length > 0) {\n        const tile = stack.pop();\n        this.stats.get(TILES_TOTAL).incrementCount();\n        const children = tile.header.children || [];\n        for (const childHeader of children) {\n          var _childTile$contentUrl;\n          const childTile = new Tile3D(this, childHeader, tile);\n          if ((_childTile$contentUrl = childTile.contentUrl) !== null && _childTile$contentUrl !== void 0 && _childTile$contentUrl.includes('?session=')) {\n            const url = new URL(childTile.contentUrl);\n            const session = url.searchParams.get('session');\n            if (session) {\n              this._queryParams.session = session;\n            }\n          }\n          tile.children.push(childTile);\n          childTile.depth = tile.depth + 1;\n          stack.push(childTile);\n        }\n      }\n    }\n    return rootTile;\n  }\n  _initializeTraverser() {\n    let TraverserClass;\n    const type = this.type;\n    switch (type) {\n      case TILESET_TYPE.TILES3D:\n        TraverserClass = Tileset3DTraverser;\n        break;\n      case TILESET_TYPE.I3S:\n        TraverserClass = I3STilesetTraverser;\n        break;\n      default:\n        TraverserClass = TilesetTraverser;\n    }\n    return new TraverserClass({\n      basePath: this.basePath,\n      onTraversalEnd: this._onTraversalEnd.bind(this)\n    });\n  }\n  _destroyTileHeaders(parentTile) {\n    this._destroySubtree(parentTile);\n  }\n  async _loadTile(tile) {\n    let loaded;\n    try {\n      this._onStartTileLoading();\n      loaded = await tile.loadContent();\n    } catch (error) {\n      this._onTileLoadError(tile, error instanceof Error ? error : new Error('load failed'));\n    } finally {\n      this._onEndTileLoading();\n      this._onTileLoad(tile, loaded);\n    }\n  }\n  _onTileLoadError(tile, error) {\n    this.stats.get(TILES_LOAD_FAILED).incrementCount();\n    const message = error.message || error.toString();\n    const url = tile.url;\n    console.error(\"A 3D tile failed to load: \".concat(tile.url, \" \").concat(message));\n    this.options.onTileError(tile, message, url);\n  }\n  _onTileLoad(tile, loaded) {\n    if (!loaded) {\n      return;\n    }\n    if (this.type === TILESET_TYPE.I3S) {\n      var _this$tileset, _this$tileset$nodePag;\n      const nodesInNodePages = ((_this$tileset = this.tileset) === null || _this$tileset === void 0 ? void 0 : (_this$tileset$nodePag = _this$tileset.nodePagesTile) === null || _this$tileset$nodePag === void 0 ? void 0 : _this$tileset$nodePag.nodesInNodePages) || 0;\n      this.stats.get(TILES_TOTAL).reset();\n      this.stats.get(TILES_TOTAL).addCount(nodesInNodePages);\n    }\n    if (tile && tile.content) {\n      calculateTransformProps(tile, tile.content);\n    }\n    this.updateContentTypes(tile);\n    this._addTileToCache(tile);\n    this.options.onTileLoad(tile);\n  }\n  updateContentTypes(tile) {\n    if (this.type === TILESET_TYPE.I3S) {\n      if (tile.header.isDracoGeometry) {\n        this.contentFormats.draco = true;\n      }\n      switch (tile.header.textureFormat) {\n        case 'dds':\n          this.contentFormats.dds = true;\n          break;\n        case 'ktx2':\n          this.contentFormats.ktx2 = true;\n          break;\n        default:\n      }\n    } else if (this.type === TILESET_TYPE.TILES3D) {\n      var _tile$content;\n      const {\n        extensionsRemoved = []\n      } = ((_tile$content = tile.content) === null || _tile$content === void 0 ? void 0 : _tile$content.gltf) || {};\n      if (extensionsRemoved.includes('KHR_draco_mesh_compression')) {\n        this.contentFormats.draco = true;\n      }\n      if (extensionsRemoved.includes('EXT_meshopt_compression')) {\n        this.contentFormats.meshopt = true;\n      }\n      if (extensionsRemoved.includes('KHR_texture_basisu')) {\n        this.contentFormats.ktx2 = true;\n      }\n    }\n  }\n  _onStartTileLoading() {\n    this._pendingCount++;\n    this.stats.get(TILES_LOADING).incrementCount();\n  }\n  _onEndTileLoading() {\n    this._pendingCount--;\n    this.stats.get(TILES_LOADING).decrementCount();\n  }\n  _addTileToCache(tile) {\n    this._cache.add(this, tile, tileset => tileset._updateCacheStats(tile));\n  }\n  _updateCacheStats(tile) {\n    this.stats.get(TILES_LOADED).incrementCount();\n    this.stats.get(TILES_IN_MEMORY).incrementCount();\n    this.gpuMemoryUsageInBytes += tile.gpuMemoryUsageInBytes || 0;\n    this.stats.get(TILES_GPU_MEMORY).count = this.gpuMemoryUsageInBytes;\n  }\n  _unloadTile(tile) {\n    this.gpuMemoryUsageInBytes -= tile.gpuMemoryUsageInBytes || 0;\n    this.stats.get(TILES_IN_MEMORY).decrementCount();\n    this.stats.get(TILES_UNLOADED).incrementCount();\n    this.stats.get(TILES_GPU_MEMORY).count = this.gpuMemoryUsageInBytes;\n    this.options.onTileUnload(tile);\n    tile.unloadContent();\n  }\n  _destroy() {\n    const stack = [];\n    if (this.root) {\n      stack.push(this.root);\n    }\n    while (stack.length > 0) {\n      const tile = stack.pop();\n      for (const child of tile.children) {\n        stack.push(child);\n      }\n      this._destroyTile(tile);\n    }\n    this.root = null;\n  }\n  _destroySubtree(tile) {\n    const root = tile;\n    const stack = [];\n    stack.push(root);\n    while (stack.length > 0) {\n      tile = stack.pop();\n      for (const child of tile.children) {\n        stack.push(child);\n      }\n      if (tile !== root) {\n        this._destroyTile(tile);\n      }\n    }\n    root.children = [];\n  }\n  _destroyTile(tile) {\n    this._cache.unloadTile(this, tile);\n    this._unloadTile(tile);\n    tile.destroy();\n  }\n  _initializeTiles3DTileset(tilesetJson) {\n    if (tilesetJson.queryString) {\n      const searchParams = new URLSearchParams(tilesetJson.queryString);\n      const queryParams = Object.fromEntries(searchParams.entries());\n      this._queryParams = {\n        ...this._queryParams,\n        ...queryParams\n      };\n    }\n    this.asset = tilesetJson.asset;\n    if (!this.asset) {\n      throw new Error('Tileset must have an asset property.');\n    }\n    if (this.asset.version !== '0.0' && this.asset.version !== '1.0') {\n      throw new Error('The tileset must be 3D Tiles version 0.0 or 1.0.');\n    }\n    if ('tilesetVersion' in this.asset) {\n      this._queryParams.v = this.asset.tilesetVersion;\n    }\n    this.credits = {\n      attributions: this.options.attributions || []\n    };\n    this.description = this.options.description || '';\n    this.properties = tilesetJson.properties;\n    this.geometricError = tilesetJson.geometricError;\n    this._extensionsUsed = tilesetJson.extensionsUsed || [];\n    this.extras = tilesetJson.extras;\n  }\n  _initializeI3STileset() {\n    if (this.loadOptions.i3s && 'token' in this.loadOptions.i3s) {\n      this._queryParams.token = this.loadOptions.i3s.token;\n    }\n  }\n}\n//# sourceMappingURL=tileset-3d.js.map","import { Ellipsoid } from '@math.gl/geospatial';\nimport { Matrix4, Vector3 } from '@math.gl/core';\nimport { assert } from '@loaders.gl/loader-utils';\nexport function calculateTransformProps(tileHeader, tile) {\n  assert(tileHeader);\n  assert(tile);\n  const {\n    rtcCenter,\n    gltfUpAxis\n  } = tile;\n  const {\n    computedTransform,\n    boundingVolume: {\n      center\n    }\n  } = tileHeader;\n  let modelMatrix = new Matrix4(computedTransform);\n  if (rtcCenter) {\n    modelMatrix.translate(rtcCenter);\n  }\n  switch (gltfUpAxis) {\n    case 'Z':\n      break;\n    case 'Y':\n      const rotationY = new Matrix4().rotateX(Math.PI / 2);\n      modelMatrix = modelMatrix.multiplyRight(rotationY);\n      break;\n    case 'X':\n      const rotationX = new Matrix4().rotateY(-Math.PI / 2);\n      modelMatrix = modelMatrix.multiplyRight(rotationX);\n      break;\n    default:\n      break;\n  }\n  if (tile.isQuantized) {\n    modelMatrix.translate(tile.quantizedVolumeOffset).scale(tile.quantizedVolumeScale);\n  }\n  const cartesianOrigin = new Vector3(center);\n  tile.cartesianModelMatrix = modelMatrix;\n  tile.cartesianOrigin = cartesianOrigin;\n  const cartographicOrigin = Ellipsoid.WGS84.cartesianToCartographic(cartesianOrigin, new Vector3());\n  const fromFixedFrameMatrix = Ellipsoid.WGS84.eastNorthUpToFixedFrame(cartesianOrigin);\n  const toFixedFrameMatrix = fromFixedFrameMatrix.invert();\n  tile.cartographicModelMatrix = toFixedFrameMatrix.multiplyRight(modelMatrix);\n  tile.cartographicOrigin = cartographicOrigin;\n  if (!tile.coordinateSystem) {\n    tile.modelMatrix = tile.cartographicModelMatrix;\n  }\n}\n//# sourceMappingURL=transform-utils.js.map","export const VERSION = typeof \"3.4.15\" !== 'undefined' ? \"3.4.15\" : 'latest';\n//# sourceMappingURL=version.js.map","export const TILE3D_TYPE = {\n  COMPOSITE: 'cmpt',\n  POINT_CLOUD: 'pnts',\n  BATCHED_3D_MODEL: 'b3dm',\n  INSTANCED_3D_MODEL: 'i3dm',\n  GEOMETRY: 'geom',\n  VECTOR: 'vect',\n  GLTF: 'glTF'\n};\nexport const TILE3D_TYPES = Object.keys(TILE3D_TYPE);\nexport const MAGIC_ARRAY = {\n  BATCHED_MODEL: [98, 51, 100, 109],\n  INSTANCED_MODEL: [105, 51, 100, 109],\n  POINT_CLOUD: [112, 110, 116, 115],\n  COMPOSITE: [99, 109, 112, 116]\n};\nexport const TILE3D_OPTIMIZATION_HINT = {\n  NOT_COMPUTED: -1,\n  USE_OPTIMIZATION: 1,\n  SKIP_OPTIMIZATION: 0\n};\n//# sourceMappingURL=constants.js.map","import { assert } from '@loaders.gl/loader-utils';\nexport function getStringFromArrayBuffer(arrayBuffer, byteOffset, byteLength) {\n  assert(arrayBuffer instanceof ArrayBuffer);\n  const textDecoder = new TextDecoder('utf8');\n  const typedArray = new Uint8Array(arrayBuffer, byteOffset, byteLength);\n  const string = textDecoder.decode(typedArray);\n  return string;\n}\nexport function getStringFromTypedArray(typedArray) {\n  assert(ArrayBuffer.isView(typedArray));\n  const textDecoder = new TextDecoder('utf8');\n  const string = textDecoder.decode(typedArray);\n  return string;\n}\nexport function getMagicString(arrayBuffer) {\n  let byteOffset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n  const dataView = new DataView(arrayBuffer);\n  return \"\".concat(String.fromCharCode(dataView.getUint8(byteOffset + 0))).concat(String.fromCharCode(dataView.getUint8(byteOffset + 1))).concat(String.fromCharCode(dataView.getUint8(byteOffset + 2))).concat(String.fromCharCode(dataView.getUint8(byteOffset + 3)));\n}\n//# sourceMappingURL=parse-utils.js.map","export const GL_PRIMITIVE = {\n  POINTS: 0x0000,\n  LINES: 0x0001,\n  TRIANGLES: 0x0004\n};\nexport const GL_PRIMITIVE_MODE = {\n  POINTS: 0x0000,\n  LINES: 0x0001,\n  LINE_LOOP: 0x0002,\n  LINE_STRIP: 0x0003,\n  TRIANGLES: 0x0004,\n  TRIANGLE_STRIP: 0x0005,\n  TRIANGLE_FAN: 0x0006\n};\nexport const GL_TYPE = {\n  BYTE: 5120,\n  UNSIGNED_BYTE: 5121,\n  SHORT: 5122,\n  UNSIGNED_SHORT: 5123,\n  INT: 5124,\n  UNSIGNED_INT: 5125,\n  FLOAT: 5126,\n  DOUBLE: 5130\n};\nexport const GL = {\n  ...GL_PRIMITIVE_MODE,\n  ...GL_TYPE\n};\n//# sourceMappingURL=constants.js.map","import { GL_TYPE as GL } from '../constants';\nconst GL_TYPE_TO_ARRAY_TYPE = {\n  [GL.DOUBLE]: Float64Array,\n  [GL.FLOAT]: Float32Array,\n  [GL.UNSIGNED_SHORT]: Uint16Array,\n  [GL.UNSIGNED_INT]: Uint32Array,\n  [GL.UNSIGNED_BYTE]: Uint8Array,\n  [GL.BYTE]: Int8Array,\n  [GL.SHORT]: Int16Array,\n  [GL.INT]: Int32Array\n};\nconst NAME_TO_GL_TYPE = {\n  DOUBLE: GL.DOUBLE,\n  FLOAT: GL.FLOAT,\n  UNSIGNED_SHORT: GL.UNSIGNED_SHORT,\n  UNSIGNED_INT: GL.UNSIGNED_INT,\n  UNSIGNED_BYTE: GL.UNSIGNED_BYTE,\n  BYTE: GL.BYTE,\n  SHORT: GL.SHORT,\n  INT: GL.INT\n};\nconst ERR_TYPE_CONVERSION = 'Failed to convert GL type';\nexport default class GLType {\n  static fromTypedArray(arrayOrType) {\n    arrayOrType = ArrayBuffer.isView(arrayOrType) ? arrayOrType.constructor : arrayOrType;\n    for (const glType in GL_TYPE_TO_ARRAY_TYPE) {\n      const ArrayType = GL_TYPE_TO_ARRAY_TYPE[glType];\n      if (ArrayType === arrayOrType) {\n        return glType;\n      }\n    }\n    throw new Error(ERR_TYPE_CONVERSION);\n  }\n  static fromName(name) {\n    const glType = NAME_TO_GL_TYPE[name];\n    if (!glType) {\n      throw new Error(ERR_TYPE_CONVERSION);\n    }\n    return glType;\n  }\n  static getArrayType(glType) {\n    switch (glType) {\n      case GL.UNSIGNED_SHORT_5_6_5:\n      case GL.UNSIGNED_SHORT_4_4_4_4:\n      case GL.UNSIGNED_SHORT_5_5_5_1:\n        return Uint16Array;\n      default:\n        const ArrayType = GL_TYPE_TO_ARRAY_TYPE[glType];\n        if (!ArrayType) {\n          throw new Error(ERR_TYPE_CONVERSION);\n        }\n        return ArrayType;\n    }\n  }\n  static getByteSize(glType) {\n    const ArrayType = GLType.getArrayType(glType);\n    return ArrayType.BYTES_PER_ELEMENT;\n  }\n  static validate(glType) {\n    return Boolean(GLType.getArrayType(glType));\n  }\n  static createTypedArray(glType, buffer) {\n    let byteOffset = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;\n    let length = arguments.length > 3 ? arguments[3] : undefined;\n    if (length === undefined) {\n      length = (buffer.byteLength - byteOffset) / GLType.getByteSize(glType);\n    }\n    const ArrayType = GLType.getArrayType(glType);\n    return new ArrayType(buffer, byteOffset, length);\n  }\n}\n//# sourceMappingURL=gl-type.js.map","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { GL, GLType } from '@loaders.gl/math';\nexport default class Tile3DFeatureTable {\n  constructor(featureTableJson, featureTableBinary) {\n    _defineProperty(this, \"json\", void 0);\n    _defineProperty(this, \"buffer\", void 0);\n    _defineProperty(this, \"featuresLength\", 0);\n    _defineProperty(this, \"_cachedTypedArrays\", {});\n    this.json = featureTableJson;\n    this.buffer = featureTableBinary;\n  }\n  getExtension(extensionName) {\n    return this.json.extensions && this.json.extensions[extensionName];\n  }\n  hasProperty(propertyName) {\n    return Boolean(this.json[propertyName]);\n  }\n  getGlobalProperty(propertyName) {\n    let componentType = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : GL.UNSIGNED_INT;\n    let componentLength = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;\n    const jsonValue = this.json[propertyName];\n    if (jsonValue && Number.isFinite(jsonValue.byteOffset)) {\n      return this._getTypedArrayFromBinary(propertyName, componentType, componentLength, 1, jsonValue.byteOffset);\n    }\n    return jsonValue;\n  }\n  getPropertyArray(propertyName, componentType, componentLength) {\n    const jsonValue = this.json[propertyName];\n    if (jsonValue && Number.isFinite(jsonValue.byteOffset)) {\n      if ('componentType' in jsonValue) {\n        componentType = GLType.fromName(jsonValue.componentType);\n      }\n      return this._getTypedArrayFromBinary(propertyName, componentType, componentLength, this.featuresLength, jsonValue.byteOffset);\n    }\n    return this._getTypedArrayFromArray(propertyName, componentType, jsonValue);\n  }\n  getProperty(propertyName, componentType, componentLength, featureId, result) {\n    const jsonValue = this.json[propertyName];\n    if (!jsonValue) {\n      return jsonValue;\n    }\n    const typedArray = this.getPropertyArray(propertyName, componentType, componentLength);\n    if (componentLength === 1) {\n      return typedArray[featureId];\n    }\n    for (let i = 0; i < componentLength; ++i) {\n      result[i] = typedArray[componentLength * featureId + i];\n    }\n    return result;\n  }\n  _getTypedArrayFromBinary(propertyName, componentType, componentLength, count, byteOffset) {\n    const cachedTypedArrays = this._cachedTypedArrays;\n    let typedArray = cachedTypedArrays[propertyName];\n    if (!typedArray) {\n      typedArray = GLType.createTypedArray(componentType, this.buffer.buffer, this.buffer.byteOffset + byteOffset, count * componentLength);\n      cachedTypedArrays[propertyName] = typedArray;\n    }\n    return typedArray;\n  }\n  _getTypedArrayFromArray(propertyName, componentType, array) {\n    const cachedTypedArrays = this._cachedTypedArrays;\n    let typedArray = cachedTypedArrays[propertyName];\n    if (!typedArray) {\n      typedArray = GLType.createTypedArray(componentType, array);\n      cachedTypedArrays[propertyName] = typedArray;\n    }\n    return typedArray;\n  }\n}\n//# sourceMappingURL=tile-3d-feature-table.js.map","import { GLType } from '@loaders.gl/math';\nimport { assert } from '@loaders.gl/loader-utils';\nconst COMPONENTS_PER_ATTRIBUTE = {\n  SCALAR: 1,\n  VEC2: 2,\n  VEC3: 3,\n  VEC4: 4,\n  MAT2: 4,\n  MAT3: 9,\n  MAT4: 16\n};\nconst UNPACKER = {\n  SCALAR: (values, i) => values[i],\n  VEC2: (values, i) => [values[2 * i + 0], values[2 * i + 1]],\n  VEC3: (values, i) => [values[3 * i + 0], values[3 * i + 1], values[3 * i + 2]],\n  VEC4: (values, i) => [values[4 * i + 0], values[4 * i + 1], values[4 * i + 2], values[4 * i + 3]],\n  MAT2: (values, i) => [values[4 * i + 0], values[4 * i + 1], values[4 * i + 2], values[4 * i + 3]],\n  MAT3: (values, i) => [values[9 * i + 0], values[9 * i + 1], values[9 * i + 2], values[9 * i + 3], values[9 * i + 4], values[9 * i + 5], values[9 * i + 6], values[9 * i + 7], values[9 * i + 8]],\n  MAT4: (values, i) => [values[16 * i + 0], values[16 * i + 1], values[16 * i + 2], values[16 * i + 3], values[16 * i + 4], values[16 * i + 5], values[16 * i + 6], values[16 * i + 7], values[16 * i + 8], values[16 * i + 9], values[16 * i + 10], values[16 * i + 11], values[16 * i + 12], values[16 * i + 13], values[16 * i + 14], values[16 * i + 15]]\n};\nconst PACKER = {\n  SCALAR: (x, values, i) => {\n    values[i] = x;\n  },\n  VEC2: (x, values, i) => {\n    values[2 * i + 0] = x[0];\n    values[2 * i + 1] = x[1];\n  },\n  VEC3: (x, values, i) => {\n    values[3 * i + 0] = x[0];\n    values[3 * i + 1] = x[1];\n    values[3 * i + 2] = x[2];\n  },\n  VEC4: (x, values, i) => {\n    values[4 * i + 0] = x[0];\n    values[4 * i + 1] = x[1];\n    values[4 * i + 2] = x[2];\n    values[4 * i + 3] = x[3];\n  },\n  MAT2: (x, values, i) => {\n    values[4 * i + 0] = x[0];\n    values[4 * i + 1] = x[1];\n    values[4 * i + 2] = x[2];\n    values[4 * i + 3] = x[3];\n  },\n  MAT3: (x, values, i) => {\n    values[9 * i + 0] = x[0];\n    values[9 * i + 1] = x[1];\n    values[9 * i + 2] = x[2];\n    values[9 * i + 3] = x[3];\n    values[9 * i + 4] = x[4];\n    values[9 * i + 5] = x[5];\n    values[9 * i + 6] = x[6];\n    values[9 * i + 7] = x[7];\n    values[9 * i + 8] = x[8];\n    values[9 * i + 9] = x[9];\n  },\n  MAT4: (x, values, i) => {\n    values[16 * i + 0] = x[0];\n    values[16 * i + 1] = x[1];\n    values[16 * i + 2] = x[2];\n    values[16 * i + 3] = x[3];\n    values[16 * i + 4] = x[4];\n    values[16 * i + 5] = x[5];\n    values[16 * i + 6] = x[6];\n    values[16 * i + 7] = x[7];\n    values[16 * i + 8] = x[8];\n    values[16 * i + 9] = x[9];\n    values[16 * i + 10] = x[10];\n    values[16 * i + 11] = x[11];\n    values[16 * i + 12] = x[12];\n    values[16 * i + 13] = x[13];\n    values[16 * i + 14] = x[14];\n    values[16 * i + 15] = x[15];\n  }\n};\nexport function createTypedArrayFromAccessor(tile3DAccessor, buffer, byteOffset, length) {\n  const {\n    componentType\n  } = tile3DAccessor;\n  assert(tile3DAccessor.componentType);\n  const type = typeof componentType === 'string' ? GLType.fromName(componentType) : componentType;\n  const size = COMPONENTS_PER_ATTRIBUTE[tile3DAccessor.type];\n  const unpacker = UNPACKER[tile3DAccessor.type];\n  const packer = PACKER[tile3DAccessor.type];\n  byteOffset += tile3DAccessor.byteOffset;\n  const values = GLType.createTypedArray(type, buffer, byteOffset, size * length);\n  return {\n    values,\n    type,\n    size,\n    unpacker,\n    packer\n  };\n}\n//# sourceMappingURL=tile-3d-accessor-utils.js.map","const defined = x => x !== undefined;\nexport function initializeHierarchy(batchTable, jsonHeader, binaryBody) {\n  if (!jsonHeader) {\n    return null;\n  }\n  let hierarchy = batchTable.getExtension('3DTILES_batch_table_hierarchy');\n  const legacyHierarchy = jsonHeader.HIERARCHY;\n  if (legacyHierarchy) {\n    console.warn('3D Tile Parser: HIERARCHY is deprecated. Use 3DTILES_batch_table_hierarchy.');\n    jsonHeader.extensions = jsonHeader.extensions || {};\n    jsonHeader.extensions['3DTILES_batch_table_hierarchy'] = legacyHierarchy;\n    hierarchy = legacyHierarchy;\n  }\n  if (!hierarchy) {\n    return null;\n  }\n  return initializeHierarchyValues(hierarchy, binaryBody);\n}\nfunction initializeHierarchyValues(hierarchyJson, binaryBody) {\n  let i;\n  let classId;\n  let binaryAccessor;\n  const instancesLength = hierarchyJson.instancesLength;\n  const classes = hierarchyJson.classes;\n  let classIds = hierarchyJson.classIds;\n  let parentCounts = hierarchyJson.parentCounts;\n  let parentIds = hierarchyJson.parentIds;\n  let parentIdsLength = instancesLength;\n  if (defined(classIds.byteOffset)) {\n    classIds.componentType = defaultValue(classIds.componentType, GL.UNSIGNED_SHORT);\n    classIds.type = AttributeType.SCALAR;\n    binaryAccessor = getBinaryAccessor(classIds);\n    classIds = binaryAccessor.createArrayBufferView(binaryBody.buffer, binaryBody.byteOffset + classIds.byteOffset, instancesLength);\n  }\n  let parentIndexes;\n  if (defined(parentCounts)) {\n    if (defined(parentCounts.byteOffset)) {\n      parentCounts.componentType = defaultValue(parentCounts.componentType, GL.UNSIGNED_SHORT);\n      parentCounts.type = AttributeType.SCALAR;\n      binaryAccessor = getBinaryAccessor(parentCounts);\n      parentCounts = binaryAccessor.createArrayBufferView(binaryBody.buffer, binaryBody.byteOffset + parentCounts.byteOffset, instancesLength);\n    }\n    parentIndexes = new Uint16Array(instancesLength);\n    parentIdsLength = 0;\n    for (i = 0; i < instancesLength; ++i) {\n      parentIndexes[i] = parentIdsLength;\n      parentIdsLength += parentCounts[i];\n    }\n  }\n  if (defined(parentIds) && defined(parentIds.byteOffset)) {\n    parentIds.componentType = defaultValue(parentIds.componentType, GL.UNSIGNED_SHORT);\n    parentIds.type = AttributeType.SCALAR;\n    binaryAccessor = getBinaryAccessor(parentIds);\n    parentIds = binaryAccessor.createArrayBufferView(binaryBody.buffer, binaryBody.byteOffset + parentIds.byteOffset, parentIdsLength);\n  }\n  const classesLength = classes.length;\n  for (i = 0; i < classesLength; ++i) {\n    const classInstancesLength = classes[i].length;\n    const properties = classes[i].instances;\n    const binaryProperties = getBinaryProperties(classInstancesLength, properties, binaryBody);\n    classes[i].instances = combine(binaryProperties, properties);\n  }\n  const classCounts = new Array(classesLength).fill(0);\n  const classIndexes = new Uint16Array(instancesLength);\n  for (i = 0; i < instancesLength; ++i) {\n    classId = classIds[i];\n    classIndexes[i] = classCounts[classId];\n    ++classCounts[classId];\n  }\n  const hierarchy = {\n    classes,\n    classIds,\n    classIndexes,\n    parentCounts,\n    parentIndexes,\n    parentIds\n  };\n  validateHierarchy(hierarchy);\n  return hierarchy;\n}\nexport function traverseHierarchy(hierarchy, instanceIndex, endConditionCallback) {\n  if (!hierarchy) {\n    return;\n  }\n  const parentCounts = hierarchy.parentCounts;\n  const parentIds = hierarchy.parentIds;\n  if (parentIds) {\n    return endConditionCallback(hierarchy, instanceIndex);\n  }\n  if (parentCounts > 0) {\n    return traverseHierarchyMultipleParents(hierarchy, instanceIndex, endConditionCallback);\n  }\n  return traverseHierarchySingleParent(hierarchy, instanceIndex, endConditionCallback);\n}\nfunction traverseHierarchyMultipleParents(hierarchy, instanceIndex, endConditionCallback) {\n  const classIds = hierarchy.classIds;\n  const parentCounts = hierarchy.parentCounts;\n  const parentIds = hierarchy.parentIds;\n  const parentIndexes = hierarchy.parentIndexes;\n  const instancesLength = classIds.length;\n  const visited = scratchVisited;\n  visited.length = Math.max(visited.length, instancesLength);\n  const visitedMarker = ++marker;\n  const stack = scratchStack;\n  stack.length = 0;\n  stack.push(instanceIndex);\n  while (stack.length > 0) {\n    instanceIndex = stack.pop();\n    if (visited[instanceIndex] === visitedMarker) {\n      continue;\n    }\n    visited[instanceIndex] = visitedMarker;\n    const result = endConditionCallback(hierarchy, instanceIndex);\n    if (defined(result)) {\n      return result;\n    }\n    const parentCount = parentCounts[instanceIndex];\n    const parentIndex = parentIndexes[instanceIndex];\n    for (let i = 0; i < parentCount; ++i) {\n      const parentId = parentIds[parentIndex + i];\n      if (parentId !== instanceIndex) {\n        stack.push(parentId);\n      }\n    }\n  }\n  return null;\n}\nfunction traverseHierarchySingleParent(hierarchy, instanceIndex, endConditionCallback) {\n  let hasParent = true;\n  while (hasParent) {\n    const result = endConditionCallback(hierarchy, instanceIndex);\n    if (defined(result)) {\n      return result;\n    }\n    const parentId = hierarchy.parentIds[instanceIndex];\n    hasParent = parentId !== instanceIndex;\n    instanceIndex = parentId;\n  }\n  throw new Error('traverseHierarchySingleParent');\n}\nfunction validateHierarchy(hierarchy) {\n  const scratchValidateStack = [];\n  const classIds = hierarchy.classIds;\n  const instancesLength = classIds.length;\n  for (let i = 0; i < instancesLength; ++i) {\n    validateInstance(hierarchy, i, stack);\n  }\n}\nfunction validateInstance(hierarchy, instanceIndex, stack) {\n  const parentCounts = hierarchy.parentCounts;\n  const parentIds = hierarchy.parentIds;\n  const parentIndexes = hierarchy.parentIndexes;\n  const classIds = hierarchy.classIds;\n  const instancesLength = classIds.length;\n  if (!defined(parentIds)) {\n    return;\n  }\n  assert(instanceIndex < instancesLength, \"Parent index \".concat(instanceIndex, \" exceeds the total number of instances: \").concat(instancesLength));\n  assert(stack.indexOf(instanceIndex) === -1, 'Circular dependency detected in the batch table hierarchy.');\n  stack.push(instanceIndex);\n  const parentCount = defined(parentCounts) ? parentCounts[instanceIndex] : 1;\n  const parentIndex = defined(parentCounts) ? parentIndexes[instanceIndex] : instanceIndex;\n  for (let i = 0; i < parentCount; ++i) {\n    const parentId = parentIds[parentIndex + i];\n    if (parentId !== instanceIndex) {\n      validateInstance(hierarchy, parentId, stack);\n    }\n  }\n  stack.pop(instanceIndex);\n}\n//# sourceMappingURL=tile-3d-batch-table-hierarchy.js.map","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { assert } from '@loaders.gl/loader-utils';\nimport { createTypedArrayFromAccessor } from './helpers/tile-3d-accessor-utils';\nimport { initializeHierarchy, traverseHierarchy } from './tile-3d-batch-table-hierarchy';\nfunction defined(x) {\n  return x !== undefined && x !== null;\n}\nconst clone = (x, y) => x;\nconst IGNORED_PROPERTY_FIELDS = {\n  HIERARCHY: true,\n  extensions: true,\n  extras: true\n};\nexport default class Tile3DBatchTableParser {\n  constructor(json, binary, featureCount) {\n    var _this$json;\n    let options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n    _defineProperty(this, \"json\", void 0);\n    _defineProperty(this, \"binary\", void 0);\n    _defineProperty(this, \"featureCount\", void 0);\n    _defineProperty(this, \"_extensions\", void 0);\n    _defineProperty(this, \"_properties\", void 0);\n    _defineProperty(this, \"_binaryProperties\", void 0);\n    _defineProperty(this, \"_hierarchy\", void 0);\n    assert(featureCount >= 0);\n    this.json = json || {};\n    this.binary = binary;\n    this.featureCount = featureCount;\n    this._extensions = ((_this$json = this.json) === null || _this$json === void 0 ? void 0 : _this$json.extensions) || {};\n    this._properties = {};\n    for (const propertyName in this.json) {\n      if (!IGNORED_PROPERTY_FIELDS[propertyName]) {\n        this._properties[propertyName] = this.json[propertyName];\n      }\n    }\n    this._binaryProperties = this._initializeBinaryProperties();\n    if (options['3DTILES_batch_table_hierarchy']) {\n      this._hierarchy = initializeHierarchy(this, this.json, this.binary);\n    }\n  }\n  getExtension(extensionName) {\n    return this.json && this.json.extensions && this.json.extensions[extensionName];\n  }\n  memorySizeInBytes() {\n    return 0;\n  }\n  isClass(batchId, className) {\n    this._checkBatchId(batchId);\n    assert(typeof className === 'string', className);\n    if (this._hierarchy) {\n      const result = traverseHierarchy(this._hierarchy, batchId, (hierarchy, instanceIndex) => {\n        const classId = hierarchy.classIds[instanceIndex];\n        const instanceClass = hierarchy.classes[classId];\n        return instanceClass.name === className;\n      });\n      return defined(result);\n    }\n    return false;\n  }\n  isExactClass(batchId, className) {\n    assert(typeof className === 'string', className);\n    return this.getExactClassName(batchId) === className;\n  }\n  getExactClassName(batchId) {\n    this._checkBatchId(batchId);\n    if (this._hierarchy) {\n      const classId = this._hierarchy.classIds[batchId];\n      const instanceClass = this._hierarchy.classes[classId];\n      return instanceClass.name;\n    }\n    return undefined;\n  }\n  hasProperty(batchId, name) {\n    this._checkBatchId(batchId);\n    assert(typeof name === 'string', name);\n    return defined(this._properties[name]) || this._hasPropertyInHierarchy(batchId, name);\n  }\n  getPropertyNames(batchId, results) {\n    this._checkBatchId(batchId);\n    results = defined(results) ? results : [];\n    results.length = 0;\n    const propertyNames = Object.keys(this._properties);\n    results.push(...propertyNames);\n    if (this._hierarchy) {\n      this._getPropertyNamesInHierarchy(batchId, results);\n    }\n    return results;\n  }\n  getProperty(batchId, name) {\n    this._checkBatchId(batchId);\n    assert(typeof name === 'string', name);\n    if (this._binaryProperties) {\n      const binaryProperty = this._binaryProperties[name];\n      if (defined(binaryProperty)) {\n        return this._getBinaryProperty(binaryProperty, batchId);\n      }\n    }\n    const propertyValues = this._properties[name];\n    if (defined(propertyValues)) {\n      return clone(propertyValues[batchId], true);\n    }\n    if (this._hierarchy) {\n      const hierarchyProperty = this._getHierarchyProperty(batchId, name);\n      if (defined(hierarchyProperty)) {\n        return hierarchyProperty;\n      }\n    }\n    return undefined;\n  }\n  setProperty(batchId, name, value) {\n    const featureCount = this.featureCount;\n    this._checkBatchId(batchId);\n    assert(typeof name === 'string', name);\n    if (this._binaryProperties) {\n      const binaryProperty = this._binaryProperties[name];\n      if (binaryProperty) {\n        this._setBinaryProperty(binaryProperty, batchId, value);\n        return;\n      }\n    }\n    if (this._hierarchy) {\n      if (this._setHierarchyProperty(this, batchId, name, value)) {\n        return;\n      }\n    }\n    let propertyValues = this._properties[name];\n    if (!defined(propertyValues)) {\n      this._properties[name] = new Array(featureCount);\n      propertyValues = this._properties[name];\n    }\n    propertyValues[batchId] = clone(value, true);\n  }\n  _checkBatchId(batchId) {\n    const valid = batchId >= 0 && batchId < this.featureCount;\n    if (!valid) {\n      throw new Error('batchId not in range [0, featureCount - 1].');\n    }\n  }\n  _getBinaryProperty(binaryProperty, index) {\n    return binaryProperty.unpack(binaryProperty.typedArray, index);\n  }\n  _setBinaryProperty(binaryProperty, index, value) {\n    binaryProperty.pack(value, binaryProperty.typedArray, index);\n  }\n  _initializeBinaryProperties() {\n    let binaryProperties = null;\n    for (const name in this._properties) {\n      const property = this._properties[name];\n      const binaryProperty = this._initializeBinaryProperty(name, property);\n      if (binaryProperty) {\n        binaryProperties = binaryProperties || {};\n        binaryProperties[name] = binaryProperty;\n      }\n    }\n    return binaryProperties;\n  }\n  _initializeBinaryProperty(name, property) {\n    if ('byteOffset' in property) {\n      const tile3DAccessor = property;\n      assert(this.binary, \"Property \".concat(name, \" requires a batch table binary.\"));\n      assert(tile3DAccessor.type, \"Property \".concat(name, \" requires a type.\"));\n      const accessor = createTypedArrayFromAccessor(tile3DAccessor, this.binary.buffer, this.binary.byteOffset | 0, this.featureCount);\n      return {\n        typedArray: accessor.values,\n        componentCount: accessor.size,\n        unpack: accessor.unpacker,\n        pack: accessor.packer\n      };\n    }\n    return null;\n  }\n  _hasPropertyInHierarchy(batchId, name) {\n    if (!this._hierarchy) {\n      return false;\n    }\n    const result = traverseHierarchy(this._hierarchy, batchId, (hierarchy, instanceIndex) => {\n      const classId = hierarchy.classIds[instanceIndex];\n      const instances = hierarchy.classes[classId].instances;\n      return defined(instances[name]);\n    });\n    return defined(result);\n  }\n  _getPropertyNamesInHierarchy(batchId, results) {\n    traverseHierarchy(this._hierarchy, batchId, (hierarchy, instanceIndex) => {\n      const classId = hierarchy.classIds[instanceIndex];\n      const instances = hierarchy.classes[classId].instances;\n      for (const name in instances) {\n        if (instances.hasOwnProperty(name)) {\n          if (results.indexOf(name) === -1) {\n            results.push(name);\n          }\n        }\n      }\n    });\n  }\n  _getHierarchyProperty(batchId, name) {\n    return traverseHierarchy(this._hierarchy, batchId, (hierarchy, instanceIndex) => {\n      const classId = hierarchy.classIds[instanceIndex];\n      const instanceClass = hierarchy.classes[classId];\n      const indexInClass = hierarchy.classIndexes[instanceIndex];\n      const propertyValues = instanceClass.instances[name];\n      if (defined(propertyValues)) {\n        if (defined(propertyValues.typedArray)) {\n          return this._getBinaryProperty(propertyValues, indexInClass);\n        }\n        return clone(propertyValues[indexInClass], true);\n      }\n      return null;\n    });\n  }\n  _setHierarchyProperty(batchTable, batchId, name, value) {\n    const result = traverseHierarchy(this._hierarchy, batchId, (hierarchy, instanceIndex) => {\n      const classId = hierarchy.classIds[instanceIndex];\n      const instanceClass = hierarchy.classes[classId];\n      const indexInClass = hierarchy.classIndexes[instanceIndex];\n      const propertyValues = instanceClass.instances[name];\n      if (defined(propertyValues)) {\n        assert(instanceIndex === batchId, \"Inherited property \\\"\".concat(name, \"\\\" is read-only.\"));\n        if (defined(propertyValues.typedArray)) {\n          this._setBinaryProperty(propertyValues, indexInClass, value);\n        } else {\n          propertyValues[indexInClass] = clone(value, true);\n        }\n        return true;\n      }\n      return false;\n    });\n    return defined(result);\n  }\n}\n//# sourceMappingURL=tile-3d-batch-table.js.map","const SIZEOF_UINT32 = 4;\nexport function parse3DTileHeaderSync(tile, arrayBuffer) {\n  let byteOffset = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;\n  const view = new DataView(arrayBuffer);\n  tile.magic = view.getUint32(byteOffset, true);\n  byteOffset += SIZEOF_UINT32;\n  tile.version = view.getUint32(byteOffset, true);\n  byteOffset += SIZEOF_UINT32;\n  tile.byteLength = view.getUint32(byteOffset, true);\n  byteOffset += SIZEOF_UINT32;\n  if (tile.version !== 1) {\n    throw new Error(\"3D Tile Version \".concat(tile.version, \" not supported\"));\n  }\n  return byteOffset;\n}\n//# sourceMappingURL=parse-3d-tile-header.js.map","import { getStringFromArrayBuffer } from './parse-utils';\nconst SIZEOF_UINT32 = 4;\nconst DEPRECATION_WARNING = 'b3dm tile in legacy format.';\nexport function parse3DTileTablesHeaderSync(tile, arrayBuffer, byteOffset) {\n  const view = new DataView(arrayBuffer);\n  let batchLength;\n  tile.header = tile.header || {};\n  let featureTableJsonByteLength = view.getUint32(byteOffset, true);\n  byteOffset += SIZEOF_UINT32;\n  let featureTableBinaryByteLength = view.getUint32(byteOffset, true);\n  byteOffset += SIZEOF_UINT32;\n  let batchTableJsonByteLength = view.getUint32(byteOffset, true);\n  byteOffset += SIZEOF_UINT32;\n  let batchTableBinaryByteLength = view.getUint32(byteOffset, true);\n  byteOffset += SIZEOF_UINT32;\n  if (batchTableJsonByteLength >= 570425344) {\n    byteOffset -= SIZEOF_UINT32 * 2;\n    batchLength = featureTableJsonByteLength;\n    batchTableJsonByteLength = featureTableBinaryByteLength;\n    batchTableBinaryByteLength = 0;\n    featureTableJsonByteLength = 0;\n    featureTableBinaryByteLength = 0;\n    console.warn(DEPRECATION_WARNING);\n  } else if (batchTableBinaryByteLength >= 570425344) {\n    byteOffset -= SIZEOF_UINT32;\n    batchLength = batchTableJsonByteLength;\n    batchTableJsonByteLength = featureTableJsonByteLength;\n    batchTableBinaryByteLength = featureTableBinaryByteLength;\n    featureTableJsonByteLength = 0;\n    featureTableBinaryByteLength = 0;\n    console.warn(DEPRECATION_WARNING);\n  }\n  tile.header.featureTableJsonByteLength = featureTableJsonByteLength;\n  tile.header.featureTableBinaryByteLength = featureTableBinaryByteLength;\n  tile.header.batchTableJsonByteLength = batchTableJsonByteLength;\n  tile.header.batchTableBinaryByteLength = batchTableBinaryByteLength;\n  tile.header.batchLength = batchLength;\n  return byteOffset;\n}\nexport function parse3DTileTablesSync(tile, arrayBuffer, byteOffset, options) {\n  byteOffset = parse3DTileFeatureTable(tile, arrayBuffer, byteOffset, options);\n  byteOffset = parse3DTileBatchTable(tile, arrayBuffer, byteOffset, options);\n  return byteOffset;\n}\nfunction parse3DTileFeatureTable(tile, arrayBuffer, byteOffset, options) {\n  const {\n    featureTableJsonByteLength,\n    featureTableBinaryByteLength,\n    batchLength\n  } = tile.header;\n  tile.featureTableJson = {\n    BATCH_LENGTH: batchLength || 0\n  };\n  if (featureTableJsonByteLength > 0) {\n    const featureTableString = getStringFromArrayBuffer(arrayBuffer, byteOffset, featureTableJsonByteLength);\n    tile.featureTableJson = JSON.parse(featureTableString);\n  }\n  byteOffset += featureTableJsonByteLength;\n  tile.featureTableBinary = new Uint8Array(arrayBuffer, byteOffset, featureTableBinaryByteLength);\n  byteOffset += featureTableBinaryByteLength;\n  return byteOffset;\n}\nfunction parse3DTileBatchTable(tile, arrayBuffer, byteOffset, options) {\n  const {\n    batchTableJsonByteLength,\n    batchTableBinaryByteLength\n  } = tile.header;\n  if (batchTableJsonByteLength > 0) {\n    const batchTableString = getStringFromArrayBuffer(arrayBuffer, byteOffset, batchTableJsonByteLength);\n    tile.batchTableJson = JSON.parse(batchTableString);\n    byteOffset += batchTableJsonByteLength;\n    if (batchTableBinaryByteLength > 0) {\n      tile.batchTableBinary = new Uint8Array(arrayBuffer, byteOffset, batchTableBinaryByteLength);\n      tile.batchTableBinary = new Uint8Array(tile.batchTableBinary);\n      byteOffset += batchTableBinaryByteLength;\n    }\n  }\n  return byteOffset;\n}\n//# sourceMappingURL=parse-3d-tile-tables.js.map","export function decodeRGB565(rgb565) {\n  let target = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [0, 0, 0];\n  const r5 = rgb565 >> 11 & 31;\n  const g6 = rgb565 >> 5 & 63;\n  const b5 = rgb565 & 31;\n  target[0] = r5 << 3;\n  target[1] = g6 << 2;\n  target[2] = b5 << 3;\n  return target;\n}\nexport function encodeRGB565(rgb) {\n  const r5 = Math.floor(rgb[0] / 8) + 4;\n  const g6 = Math.floor(rgb[1] / 4) + 2;\n  const b5 = Math.floor(rgb[2] / 8) + 4;\n  return r5 + (g6 << 5) + (b5 << 11);\n}\n//# sourceMappingURL=rgb565.js.map","import { decodeRGB565, GL } from '@loaders.gl/math';\nexport function normalize3DTileColorAttribute(tile, colors, batchTable) {\n  if (!colors && (!tile || !tile.batchIds || !batchTable)) {\n    return null;\n  }\n  const {\n    batchIds,\n    isRGB565,\n    pointCount\n  } = tile;\n  if (batchIds && batchTable) {\n    const colorArray = new Uint8ClampedArray(pointCount * 3);\n    for (let i = 0; i < pointCount; i++) {\n      const batchId = batchIds[i];\n      const dimensions = batchTable.getProperty(batchId, 'dimensions');\n      const color = dimensions.map(d => d * 255);\n      colorArray[i * 3] = color[0];\n      colorArray[i * 3 + 1] = color[1];\n      colorArray[i * 3 + 2] = color[2];\n    }\n    return {\n      type: GL.UNSIGNED_BYTE,\n      value: colorArray,\n      size: 3,\n      normalized: true\n    };\n  }\n  if (isRGB565) {\n    const colorArray = new Uint8ClampedArray(pointCount * 3);\n    for (let i = 0; i < pointCount; i++) {\n      const color = decodeRGB565(colors[i]);\n      colorArray[i * 3] = color[0];\n      colorArray[i * 3 + 1] = color[1];\n      colorArray[i * 3 + 2] = color[2];\n    }\n    return {\n      type: GL.UNSIGNED_BYTE,\n      value: colorArray,\n      size: 3,\n      normalized: true\n    };\n  }\n  if (colors && colors.length === pointCount * 3) {\n    return {\n      type: GL.UNSIGNED_BYTE,\n      value: colors,\n      size: 3,\n      normalized: true\n    };\n  }\n  return {\n    type: GL.UNSIGNED_BYTE,\n    value: colors,\n    size: 4,\n    normalized: true\n  };\n}\n//# sourceMappingURL=normalize-3d-tile-colors.js.map","import { Vector2, Vector3, clamp, _MathUtils } from '@math.gl/core';\nimport { assert } from '../utils/assert';\nconst RIGHT_SHIFT = 1.0 / 256.0;\nconst LEFT_SHIFT = 256.0;\nconst scratchVector2 = new Vector2();\nconst scratchVector3 = new Vector3();\nconst scratchEncodeVector2 = new Vector2();\nconst octEncodeScratch = new Vector2();\nconst uint8ForceArray = new Uint8Array(1);\nfunction forceUint8(value) {\n  uint8ForceArray[0] = value;\n  return uint8ForceArray[0];\n}\nfunction fromSNorm(value) {\n  let rangeMaximum = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 255;\n  return clamp(value, 0.0, rangeMaximum) / rangeMaximum * 2.0 - 1.0;\n}\nfunction toSNorm(value) {\n  let rangeMaximum = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 255;\n  return Math.round((clamp(value, -1.0, 1.0) * 0.5 + 0.5) * rangeMaximum);\n}\nfunction signNotZero(value) {\n  return value < 0.0 ? -1.0 : 1.0;\n}\nexport function octEncodeInRange(vector, rangeMax, result) {\n  assert(vector);\n  assert(result);\n  const vector3 = scratchVector3.from(vector);\n  assert(Math.abs(vector3.magnitudeSquared() - 1.0) <= _MathUtils.EPSILON6);\n  result.x = vector.x / (Math.abs(vector.x) + Math.abs(vector.y) + Math.abs(vector.z));\n  result.y = vector.y / (Math.abs(vector.x) + Math.abs(vector.y) + Math.abs(vector.z));\n  if (vector.z < 0) {\n    const x = result.x;\n    const y = result.y;\n    result.x = (1.0 - Math.abs(y)) * signNotZero(x);\n    result.y = (1.0 - Math.abs(x)) * signNotZero(y);\n  }\n  result.x = toSNorm(result.x, rangeMax);\n  result.y = toSNorm(result.y, rangeMax);\n  return result;\n}\nexport function octEncode(vector, result) {\n  return octEncodeInRange(vector, 255, result);\n}\nexport function octEncodeToVector4(vector, result) {\n  octEncodeInRange(vector, 65535, octEncodeScratch);\n  result.x = forceUint8(octEncodeScratch.x * RIGHT_SHIFT);\n  result.y = forceUint8(octEncodeScratch.x);\n  result.z = forceUint8(octEncodeScratch.y * RIGHT_SHIFT);\n  result.w = forceUint8(octEncodeScratch.y);\n  return result;\n}\nexport function octDecodeInRange(x, y, rangeMax, result) {\n  assert(result);\n  if (x < 0 || x > rangeMax || y < 0 || y > rangeMax) {\n    throw new Error(\"x and y must be unsigned normalized integers between 0 and \".concat(rangeMax));\n  }\n  result.x = fromSNorm(x, rangeMax);\n  result.y = fromSNorm(y, rangeMax);\n  result.z = 1.0 - (Math.abs(result.x) + Math.abs(result.y));\n  if (result.z < 0.0) {\n    const oldVX = result.x;\n    result.x = (1.0 - Math.abs(result.y)) * signNotZero(oldVX);\n    result.y = (1.0 - Math.abs(oldVX)) * signNotZero(result.y);\n  }\n  return result.normalize();\n}\nexport function octDecode(x, y, result) {\n  return octDecodeInRange(x, y, 255, result);\n}\nexport function octDecodeFromVector4(encoded, result) {\n  assert(encoded);\n  assert(result);\n  const x = encoded.x;\n  const y = encoded.y;\n  const z = encoded.z;\n  const w = encoded.w;\n  if (x < 0 || x > 255 || y < 0 || y > 255 || z < 0 || z > 255 || w < 0 || w > 255) {\n    throw new Error('x, y, z, and w must be unsigned normalized integers between 0 and 255');\n  }\n  const xOct16 = x * LEFT_SHIFT + y;\n  const yOct16 = z * LEFT_SHIFT + w;\n  return octDecodeInRange(xOct16, yOct16, 65535, result);\n}\nexport function octPackFloat(encoded) {\n  const vector2 = scratchVector2.from(encoded);\n  return 256.0 * vector2.x + vector2.y;\n}\nexport function octEncodeFloat(vector) {\n  octEncode(vector, scratchEncodeVector2);\n  return octPackFloat(scratchEncodeVector2);\n}\nexport function octDecodeFloat(value, result) {\n  assert(Number.isFinite(value));\n  const temp = value / 256.0;\n  const x = Math.floor(temp);\n  const y = (temp - x) * 256.0;\n  return octDecode(x, y, result);\n}\nexport function octPack(v1, v2, v3, result) {\n  assert(v1);\n  assert(v2);\n  assert(v3);\n  assert(result);\n  const encoded1 = octEncodeFloat(v1);\n  const encoded2 = octEncodeFloat(v2);\n  const encoded3 = octEncode(v3, scratchEncodeVector2);\n  result.x = 65536.0 * encoded3.x + encoded1;\n  result.y = 65536.0 * encoded3.y + encoded2;\n  return result;\n}\nexport function octUnpack(packed, v1, v2, v3) {\n  let temp = packed.x / 65536.0;\n  const x = Math.floor(temp);\n  const encodedFloat1 = (temp - x) * 65536.0;\n  temp = packed.y / 65536.0;\n  const y = Math.floor(temp);\n  const encodedFloat2 = (temp - y) * 65536.0;\n  octDecodeFloat(encodedFloat1, v1);\n  octDecodeFloat(encodedFloat2, v2);\n  octDecode(x, y, v3);\n}\nexport function compressTextureCoordinates(textureCoordinates) {\n  const x = textureCoordinates.x * 4095.0 | 0;\n  const y = textureCoordinates.y * 4095.0 | 0;\n  return 4096.0 * x + y;\n}\nexport function decompressTextureCoordinates(compressed, result) {\n  const temp = compressed / 4096.0;\n  const xZeroTo4095 = Math.floor(temp);\n  result.x = xZeroTo4095 / 4095.0;\n  result.y = (compressed - xZeroTo4095 * 4096) / 4095;\n  return result;\n}\nexport function zigZagDeltaDecode(uBuffer, vBuffer, heightBuffer) {\n  assert(uBuffer);\n  assert(vBuffer);\n  assert(uBuffer.length === vBuffer.length);\n  if (heightBuffer) {\n    assert(uBuffer.length === heightBuffer.length);\n  }\n  function zigZagDecode(value) {\n    return value >> 1 ^ -(value & 1);\n  }\n  let u = 0;\n  let v = 0;\n  let height = 0;\n  for (let i = 0; i < uBuffer.length; ++i) {\n    u += zigZagDecode(uBuffer[i]);\n    v += zigZagDecode(vBuffer[i]);\n    uBuffer[i] = u;\n    vBuffer[i] = v;\n    if (heightBuffer) {\n      height += zigZagDecode(heightBuffer[i]);\n      heightBuffer[i] = height;\n    }\n  }\n}\n//# sourceMappingURL=attribute-compression.js.map","export function assert(condition, message) {\n  if (!condition) {\n    throw new Error(\"math.gl assertion failed. \".concat(message));\n  }\n}\n//# sourceMappingURL=assert.js.map","import { Vector3 } from '@math.gl/core';\nimport { GL, octDecode } from '@loaders.gl/math';\nconst scratchNormal = new Vector3();\nexport function normalize3DTileNormalAttribute(tile, normals) {\n  if (!normals) {\n    return null;\n  }\n  if (tile.isOctEncoded16P) {\n    const decodedArray = new Float32Array(tile.pointsLength * 3);\n    for (let i = 0; i < tile.pointsLength; i++) {\n      octDecode(normals[i * 2], normals[i * 2 + 1], scratchNormal);\n      scratchNormal.toArray(decodedArray, i * 3);\n    }\n    return {\n      type: GL.FLOAT,\n      size: 2,\n      value: decodedArray\n    };\n  }\n  return {\n    type: GL.FLOAT,\n    size: 2,\n    value: normals\n  };\n}\n//# sourceMappingURL=normalize-3d-tile-normals.js.map","import { DracoLoader } from '@loaders.gl/draco';\nimport { GL } from '@loaders.gl/math';\nimport { Vector3 } from '@math.gl/core';\nimport Tile3DFeatureTable from '../classes/tile-3d-feature-table';\nimport Tile3DBatchTable from '../classes/tile-3d-batch-table';\nimport { parse3DTileHeaderSync } from './helpers/parse-3d-tile-header';\nimport { parse3DTileTablesHeaderSync, parse3DTileTablesSync } from './helpers/parse-3d-tile-tables';\nimport { normalize3DTileColorAttribute } from './helpers/normalize-3d-tile-colors';\nimport { normalize3DTileNormalAttribute } from './helpers/normalize-3d-tile-normals';\nimport { normalize3DTilePositionAttribute } from './helpers/normalize-3d-tile-positions';\nexport async function parsePointCloud3DTile(tile, arrayBuffer, byteOffset, options, context) {\n  byteOffset = parse3DTileHeaderSync(tile, arrayBuffer, byteOffset);\n  byteOffset = parse3DTileTablesHeaderSync(tile, arrayBuffer, byteOffset);\n  byteOffset = parse3DTileTablesSync(tile, arrayBuffer, byteOffset, options);\n  initializeTile(tile);\n  const {\n    featureTable,\n    batchTable\n  } = parsePointCloudTables(tile);\n  await parseDraco(tile, featureTable, batchTable, options, context);\n  parsePositions(tile, featureTable, options);\n  parseColors(tile, featureTable, batchTable);\n  parseNormals(tile, featureTable);\n  return byteOffset;\n}\nfunction initializeTile(tile) {\n  tile.attributes = {\n    positions: null,\n    colors: null,\n    normals: null,\n    batchIds: null\n  };\n  tile.isQuantized = false;\n  tile.isTranslucent = false;\n  tile.isRGB565 = false;\n  tile.isOctEncoded16P = false;\n}\nfunction parsePointCloudTables(tile) {\n  const featureTable = new Tile3DFeatureTable(tile.featureTableJson, tile.featureTableBinary);\n  const pointsLength = featureTable.getGlobalProperty('POINTS_LENGTH');\n  if (!Number.isFinite(pointsLength)) {\n    throw new Error('POINTS_LENGTH must be defined');\n  }\n  featureTable.featuresLength = pointsLength;\n  tile.featuresLength = pointsLength;\n  tile.pointsLength = pointsLength;\n  tile.pointCount = pointsLength;\n  tile.rtcCenter = featureTable.getGlobalProperty('RTC_CENTER', GL.FLOAT, 3);\n  const batchTable = parseBatchIds(tile, featureTable);\n  return {\n    featureTable,\n    batchTable\n  };\n}\nfunction parsePositions(tile, featureTable, options) {\n  if (!tile.attributes.positions) {\n    if (featureTable.hasProperty('POSITION')) {\n      tile.attributes.positions = featureTable.getPropertyArray('POSITION', GL.FLOAT, 3);\n    } else if (featureTable.hasProperty('POSITION_QUANTIZED')) {\n      const positions = featureTable.getPropertyArray('POSITION_QUANTIZED', GL.UNSIGNED_SHORT, 3);\n      tile.isQuantized = true;\n      tile.quantizedRange = (1 << 16) - 1;\n      tile.quantizedVolumeScale = featureTable.getGlobalProperty('QUANTIZED_VOLUME_SCALE', GL.FLOAT, 3);\n      if (!tile.quantizedVolumeScale) {\n        throw new Error('QUANTIZED_VOLUME_SCALE must be defined for quantized positions.');\n      }\n      tile.quantizedVolumeOffset = featureTable.getGlobalProperty('QUANTIZED_VOLUME_OFFSET', GL.FLOAT, 3);\n      if (!tile.quantizedVolumeOffset) {\n        throw new Error('QUANTIZED_VOLUME_OFFSET must be defined for quantized positions.');\n      }\n      tile.attributes.positions = normalize3DTilePositionAttribute(tile, positions, options);\n    }\n  }\n  if (!tile.attributes.positions) {\n    throw new Error('Either POSITION or POSITION_QUANTIZED must be defined.');\n  }\n}\nfunction parseColors(tile, featureTable, batchTable) {\n  if (!tile.attributes.colors) {\n    let colors = null;\n    if (featureTable.hasProperty('RGBA')) {\n      colors = featureTable.getPropertyArray('RGBA', GL.UNSIGNED_BYTE, 4);\n      tile.isTranslucent = true;\n    } else if (featureTable.hasProperty('RGB')) {\n      colors = featureTable.getPropertyArray('RGB', GL.UNSIGNED_BYTE, 3);\n    } else if (featureTable.hasProperty('RGB565')) {\n      colors = featureTable.getPropertyArray('RGB565', GL.UNSIGNED_SHORT, 1);\n      tile.isRGB565 = true;\n    }\n    tile.attributes.colors = normalize3DTileColorAttribute(tile, colors, batchTable);\n  }\n  if (featureTable.hasProperty('CONSTANT_RGBA')) {\n    tile.constantRGBA = featureTable.getGlobalProperty('CONSTANT_RGBA', GL.UNSIGNED_BYTE, 4);\n  }\n}\nfunction parseNormals(tile, featureTable) {\n  if (!tile.attributes.normals) {\n    let normals = null;\n    if (featureTable.hasProperty('NORMAL')) {\n      normals = featureTable.getPropertyArray('NORMAL', GL.FLOAT, 3);\n    } else if (featureTable.hasProperty('NORMAL_OCT16P')) {\n      normals = featureTable.getPropertyArray('NORMAL_OCT16P', GL.UNSIGNED_BYTE, 2);\n      tile.isOctEncoded16P = true;\n    }\n    tile.attributes.normals = normalize3DTileNormalAttribute(tile, normals);\n  }\n}\nfunction parseBatchIds(tile, featureTable) {\n  let batchTable = null;\n  if (!tile.batchIds && featureTable.hasProperty('BATCH_ID')) {\n    tile.batchIds = featureTable.getPropertyArray('BATCH_ID', GL.UNSIGNED_SHORT, 1);\n    if (tile.batchIds) {\n      const batchFeatureLength = featureTable.getGlobalProperty('BATCH_LENGTH');\n      if (!batchFeatureLength) {\n        throw new Error('Global property: BATCH_LENGTH must be defined when BATCH_ID is defined.');\n      }\n      const {\n        batchTableJson,\n        batchTableBinary\n      } = tile;\n      batchTable = new Tile3DBatchTable(batchTableJson, batchTableBinary, batchFeatureLength);\n    }\n  }\n  return batchTable;\n}\nasync function parseDraco(tile, featureTable, batchTable, options, context) {\n  let dracoBuffer;\n  let dracoFeatureTableProperties;\n  let dracoBatchTableProperties;\n  const batchTableDraco = tile.batchTableJson && tile.batchTableJson.extensions && tile.batchTableJson.extensions['3DTILES_draco_point_compression'];\n  if (batchTableDraco) {\n    dracoBatchTableProperties = batchTableDraco.properties;\n  }\n  const featureTableDraco = featureTable.getExtension('3DTILES_draco_point_compression');\n  if (featureTableDraco) {\n    dracoFeatureTableProperties = featureTableDraco.properties;\n    const dracoByteOffset = featureTableDraco.byteOffset;\n    const dracoByteLength = featureTableDraco.byteLength;\n    if (!dracoFeatureTableProperties || !Number.isFinite(dracoByteOffset) || !dracoByteLength) {\n      throw new Error('Draco properties, byteOffset, and byteLength must be defined');\n    }\n    dracoBuffer = tile.featureTableBinary.slice(dracoByteOffset, dracoByteOffset + dracoByteLength);\n    tile.hasPositions = Number.isFinite(dracoFeatureTableProperties.POSITION);\n    tile.hasColors = Number.isFinite(dracoFeatureTableProperties.RGB) || Number.isFinite(dracoFeatureTableProperties.RGBA);\n    tile.hasNormals = Number.isFinite(dracoFeatureTableProperties.NORMAL);\n    tile.hasBatchIds = Number.isFinite(dracoFeatureTableProperties.BATCH_ID);\n    tile.isTranslucent = Number.isFinite(dracoFeatureTableProperties.RGBA);\n  }\n  if (!dracoBuffer) {\n    return true;\n  }\n  const dracoData = {\n    buffer: dracoBuffer,\n    properties: {\n      ...dracoFeatureTableProperties,\n      ...dracoBatchTableProperties\n    },\n    featureTableProperties: dracoFeatureTableProperties,\n    batchTableProperties: dracoBatchTableProperties,\n    dequantizeInShader: false\n  };\n  return await loadDraco(tile, dracoData, options, context);\n}\nexport async function loadDraco(tile, dracoData, options, context) {\n  const {\n    parse\n  } = context;\n  const dracoOptions = {\n    ...options,\n    draco: {\n      ...options.draco,\n      extraAttributes: dracoData.batchTableProperties || {}\n    }\n  };\n  delete dracoOptions['3d-tiles'];\n  const data = await parse(dracoData.buffer, DracoLoader, dracoOptions);\n  const decodedPositions = data.attributes.POSITION && data.attributes.POSITION.value;\n  const decodedColors = data.attributes.COLOR_0 && data.attributes.COLOR_0.value;\n  const decodedNormals = data.attributes.NORMAL && data.attributes.NORMAL.value;\n  const decodedBatchIds = data.attributes.BATCH_ID && data.attributes.BATCH_ID.value;\n  const isQuantizedDraco = decodedPositions && data.attributes.POSITION.value.quantization;\n  const isOctEncodedDraco = decodedNormals && data.attributes.NORMAL.value.quantization;\n  if (isQuantizedDraco) {\n    const quantization = data.POSITION.data.quantization;\n    const range = quantization.range;\n    tile.quantizedVolumeScale = new Vector3(range, range, range);\n    tile.quantizedVolumeOffset = new Vector3(quantization.minValues);\n    tile.quantizedRange = (1 << quantization.quantizationBits) - 1.0;\n    tile.isQuantizedDraco = true;\n  }\n  if (isOctEncodedDraco) {\n    tile.octEncodedRange = (1 << data.NORMAL.data.quantization.quantizationBits) - 1.0;\n    tile.isOctEncodedDraco = true;\n  }\n  const batchTableAttributes = {};\n  if (dracoData.batchTableProperties) {\n    for (const attributeName of Object.keys(dracoData.batchTableProperties)) {\n      if (data.attributes[attributeName] && data.attributes[attributeName].value) {\n        batchTableAttributes[attributeName.toLowerCase()] = data.attributes[attributeName].value;\n      }\n    }\n  }\n  tile.attributes = {\n    positions: decodedPositions,\n    colors: normalize3DTileColorAttribute(tile, decodedColors, undefined),\n    normals: decodedNormals,\n    batchIds: decodedBatchIds,\n    ...batchTableAttributes\n  };\n}\n//# sourceMappingURL=parse-3d-tile-point-cloud.js.map","import { Vector3 } from '@math.gl/core';\nimport { GL } from '@loaders.gl/math';\nexport function normalize3DTilePositionAttribute(tile, positions, options) {\n  if (!tile.isQuantized) {\n    return positions;\n  }\n  if (options['3d-tiles'] && options['3d-tiles'].decodeQuantizedPositions) {\n    tile.isQuantized = false;\n    return decodeQuantizedPositions(tile, positions);\n  }\n  return {\n    type: GL.UNSIGNED_SHORT,\n    value: positions,\n    size: 3,\n    normalized: true\n  };\n}\nfunction decodeQuantizedPositions(tile, positions) {\n  const scratchPosition = new Vector3();\n  const decodedArray = new Float32Array(tile.pointCount * 3);\n  for (let i = 0; i < tile.pointCount; i++) {\n    scratchPosition.set(positions[i * 3], positions[i * 3 + 1], positions[i * 3 + 2]).scale(1 / tile.quantizedRange).multiply(tile.quantizedVolumeScale).add(tile.quantizedVolumeOffset).toArray(decodedArray, i * 3);\n  }\n  return decodedArray;\n}\n//# sourceMappingURL=normalize-3d-tile-positions.js.map","import { _getMemoryUsageGLTF, GLTFLoader } from '@loaders.gl/gltf';\nimport { sliceArrayBuffer } from '@loaders.gl/loader-utils';\nexport const GLTF_FORMAT = {\n  URI: 0,\n  EMBEDDED: 1\n};\nexport function parse3DTileGLTFViewSync(tile, arrayBuffer, byteOffset, options) {\n  tile.rotateYtoZ = true;\n  const gltfByteLength = tile.byteOffset + tile.byteLength - byteOffset;\n  if (gltfByteLength === 0) {\n    throw new Error('glTF byte length must be greater than 0.');\n  }\n  tile.gltfUpAxis = options['3d-tiles'] && options['3d-tiles'].assetGltfUpAxis ? options['3d-tiles'].assetGltfUpAxis : 'Y';\n  tile.gltfArrayBuffer = sliceArrayBuffer(arrayBuffer, byteOffset, gltfByteLength);\n  tile.gltfByteOffset = 0;\n  tile.gltfByteLength = gltfByteLength;\n  if (byteOffset % 4 === 0) {} else {\n    console.warn(\"\".concat(tile.type, \": embedded glb is not aligned to a 4-byte boundary.\"));\n  }\n  return tile.byteOffset + tile.byteLength;\n}\nexport async function extractGLTF(tile, gltfFormat, options, context) {\n  const tile3DOptions = options['3d-tiles'] || {};\n  extractGLTFBufferOrURL(tile, gltfFormat, options);\n  if (tile3DOptions.loadGLTF) {\n    const {\n      parse,\n      fetch\n    } = context;\n    if (tile.gltfUrl) {\n      tile.gltfArrayBuffer = await fetch(tile.gltfUrl, options);\n      tile.gltfByteOffset = 0;\n    }\n    if (tile.gltfArrayBuffer) {\n      tile.gltf = await parse(tile.gltfArrayBuffer, GLTFLoader, options, context);\n      tile.gpuMemoryUsageInBytes = _getMemoryUsageGLTF(tile.gltf);\n      delete tile.gltfArrayBuffer;\n      delete tile.gltfByteOffset;\n      delete tile.gltfByteLength;\n    }\n  }\n}\nfunction extractGLTFBufferOrURL(tile, gltfFormat, options) {\n  switch (gltfFormat) {\n    case GLTF_FORMAT.URI:\n      const gltfUrlBytes = new Uint8Array(tile.gltfArrayBuffer, tile.gltfByteOffset);\n      const textDecoder = new TextDecoder();\n      const gltfUrl = textDecoder.decode(gltfUrlBytes);\n      tile.gltfUrl = gltfUrl.replace(/[\\s\\0]+$/, '');\n      delete tile.gltfArrayBuffer;\n      delete tile.gltfByteOffset;\n      delete tile.gltfByteLength;\n      break;\n    case GLTF_FORMAT.EMBEDDED:\n      break;\n    default:\n      throw new Error('b3dm: Illegal glTF format field');\n  }\n}\n//# sourceMappingURL=parse-3d-tile-gltf-view.js.map","import { TILE3D_TYPE } from '../constants';\nimport { getMagicString } from './helpers/parse-utils';\nimport { parsePointCloud3DTile } from './parse-3d-tile-point-cloud';\nimport { parseBatchedModel3DTile } from './parse-3d-tile-batched-model';\nimport { parseInstancedModel3DTile } from './parse-3d-tile-instanced-model';\nimport { parseComposite3DTile } from './parse-3d-tile-composite';\nimport { parseGltf3DTile } from './parse-3d-tile-gltf';\nexport async function parse3DTile(arrayBuffer) {\n  let byteOffset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n  let options = arguments.length > 2 ? arguments[2] : undefined;\n  let context = arguments.length > 3 ? arguments[3] : undefined;\n  let tile = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : {};\n  tile.byteOffset = byteOffset;\n  tile.type = getMagicString(arrayBuffer, byteOffset);\n  switch (tile.type) {\n    case TILE3D_TYPE.COMPOSITE:\n      return await parseComposite3DTile(tile, arrayBuffer, byteOffset, options, context, parse3DTile);\n    case TILE3D_TYPE.BATCHED_3D_MODEL:\n      return await parseBatchedModel3DTile(tile, arrayBuffer, byteOffset, options, context);\n    case TILE3D_TYPE.GLTF:\n      return await parseGltf3DTile(tile, arrayBuffer, options, context);\n    case TILE3D_TYPE.INSTANCED_3D_MODEL:\n      return await parseInstancedModel3DTile(tile, arrayBuffer, byteOffset, options, context);\n    case TILE3D_TYPE.POINT_CLOUD:\n      return await parsePointCloud3DTile(tile, arrayBuffer, byteOffset, options, context);\n    default:\n      throw new Error(\"3DTileLoader: unknown type \".concat(tile.type));\n  }\n}\n//# sourceMappingURL=parse-3d-tile.js.map","import { parse3DTileHeaderSync } from './helpers/parse-3d-tile-header';\nexport async function parseComposite3DTile(tile, arrayBuffer, byteOffset, options, context, parse3DTile) {\n  byteOffset = parse3DTileHeaderSync(tile, arrayBuffer, byteOffset);\n  const view = new DataView(arrayBuffer);\n  tile.tilesLength = view.getUint32(byteOffset, true);\n  byteOffset += 4;\n  tile.tiles = [];\n  while (tile.tiles.length < tile.tilesLength && tile.byteLength - byteOffset > 12) {\n    const subtile = {};\n    tile.tiles.push(subtile);\n    byteOffset = await parse3DTile(arrayBuffer, byteOffset, options, context, subtile);\n  }\n  return byteOffset;\n}\n//# sourceMappingURL=parse-3d-tile-composite.js.map","import { GL } from '@loaders.gl/math';\nimport Tile3DFeatureTable from '../classes/tile-3d-feature-table';\nimport { parse3DTileHeaderSync } from './helpers/parse-3d-tile-header';\nimport { parse3DTileTablesHeaderSync, parse3DTileTablesSync } from './helpers/parse-3d-tile-tables';\nimport { parse3DTileGLTFViewSync, extractGLTF, GLTF_FORMAT } from './helpers/parse-3d-tile-gltf-view';\nexport async function parseBatchedModel3DTile(tile, arrayBuffer, byteOffset, options, context) {\n  var _tile$gltf;\n  byteOffset = parseBatchedModel(tile, arrayBuffer, byteOffset, options, context);\n  await extractGLTF(tile, GLTF_FORMAT.EMBEDDED, options, context);\n  const extensions = tile === null || tile === void 0 ? void 0 : (_tile$gltf = tile.gltf) === null || _tile$gltf === void 0 ? void 0 : _tile$gltf.extensions;\n  if (extensions && extensions.CESIUM_RTC) {\n    tile.rtcCenter = extensions.CESIUM_RTC.center;\n  }\n  return byteOffset;\n}\nfunction parseBatchedModel(tile, arrayBuffer, byteOffset, options, context) {\n  byteOffset = parse3DTileHeaderSync(tile, arrayBuffer, byteOffset);\n  byteOffset = parse3DTileTablesHeaderSync(tile, arrayBuffer, byteOffset);\n  byteOffset = parse3DTileTablesSync(tile, arrayBuffer, byteOffset, options);\n  byteOffset = parse3DTileGLTFViewSync(tile, arrayBuffer, byteOffset, options);\n  const featureTable = new Tile3DFeatureTable(tile.featureTableJson, tile.featureTableBinary);\n  tile.rtcCenter = featureTable.getGlobalProperty('RTC_CENTER', GL.FLOAT, 3);\n  return byteOffset;\n}\n//# sourceMappingURL=parse-3d-tile-batched-model.js.map","import { _getMemoryUsageGLTF, GLTFLoader } from '@loaders.gl/gltf';\nexport async function parseGltf3DTile(tile, arrayBuffer, options, context) {\n  tile.rotateYtoZ = true;\n  tile.gltfUpAxis = options['3d-tiles'] && options['3d-tiles'].assetGltfUpAxis ? options['3d-tiles'].assetGltfUpAxis : 'Y';\n  const {\n    parse\n  } = context;\n  tile.gltf = await parse(arrayBuffer, GLTFLoader, options, context);\n  tile.gpuMemoryUsageInBytes = _getMemoryUsageGLTF(tile.gltf);\n}\n//# sourceMappingURL=parse-3d-tile-gltf.js.map","import { Vector3, Matrix3, Matrix4, Quaternion } from '@math.gl/core';\nimport { Ellipsoid } from '@math.gl/geospatial';\nimport { GL } from '@loaders.gl/math';\nimport Tile3DFeatureTable from '../classes/tile-3d-feature-table';\nimport Tile3DBatchTable from '../classes/tile-3d-batch-table';\nimport { parse3DTileHeaderSync } from './helpers/parse-3d-tile-header';\nimport { parse3DTileTablesHeaderSync, parse3DTileTablesSync } from './helpers/parse-3d-tile-tables';\nimport { parse3DTileGLTFViewSync, extractGLTF } from './helpers/parse-3d-tile-gltf-view';\nexport async function parseInstancedModel3DTile(tile, arrayBuffer, byteOffset, options, context) {\n  byteOffset = parseInstancedModel(tile, arrayBuffer, byteOffset, options, context);\n  await extractGLTF(tile, tile.gltfFormat, options, context);\n  return byteOffset;\n}\nfunction parseInstancedModel(tile, arrayBuffer, byteOffset, options, context) {\n  byteOffset = parse3DTileHeaderSync(tile, arrayBuffer, byteOffset);\n  if (tile.version !== 1) {\n    throw new Error(\"Instanced 3D Model version \".concat(tile.version, \" is not supported\"));\n  }\n  byteOffset = parse3DTileTablesHeaderSync(tile, arrayBuffer, byteOffset);\n  const view = new DataView(arrayBuffer);\n  tile.gltfFormat = view.getUint32(byteOffset, true);\n  byteOffset += 4;\n  byteOffset = parse3DTileTablesSync(tile, arrayBuffer, byteOffset, options);\n  byteOffset = parse3DTileGLTFViewSync(tile, arrayBuffer, byteOffset, options);\n  if (tile.featureTableJsonByteLength === 0) {\n    throw new Error('i3dm parser: featureTableJsonByteLength is zero.');\n  }\n  const featureTable = new Tile3DFeatureTable(tile.featureTableJson, tile.featureTableBinary);\n  const instancesLength = featureTable.getGlobalProperty('INSTANCES_LENGTH');\n  featureTable.featuresLength = instancesLength;\n  if (!Number.isFinite(instancesLength)) {\n    throw new Error('i3dm parser: INSTANCES_LENGTH must be defined');\n  }\n  tile.eastNorthUp = featureTable.getGlobalProperty('EAST_NORTH_UP');\n  tile.rtcCenter = featureTable.getGlobalProperty('RTC_CENTER', GL.FLOAT, 3);\n  const batchTable = new Tile3DBatchTable(tile.batchTableJson, tile.batchTableBinary, instancesLength);\n  extractInstancedAttributes(tile, featureTable, batchTable, instancesLength);\n  return byteOffset;\n}\nfunction extractInstancedAttributes(tile, featureTable, batchTable, instancesLength) {\n  const collectionOptions = {\n    instances: new Array(instancesLength),\n    batchTable: tile._batchTable,\n    cull: false,\n    url: undefined,\n    gltf: undefined,\n    basePath: undefined,\n    incrementallyLoadTextures: false,\n    forwardAxis: [1, 0, 0]\n  };\n  const instances = collectionOptions.instances;\n  const instancePosition = new Vector3();\n  const instanceNormalRight = new Vector3();\n  const instanceNormalUp = new Vector3();\n  const instanceNormalForward = new Vector3();\n  const instanceRotation = new Matrix3();\n  const instanceQuaternion = new Quaternion();\n  const instanceScale = new Vector3();\n  const instanceTranslationRotationScale = {};\n  const instanceTransform = new Matrix4();\n  const scratch1 = [];\n  const scratch2 = [];\n  const scratchVector1 = new Vector3();\n  const scratchVector2 = new Vector3();\n  for (let i = 0; i < instancesLength; i++) {\n    let position;\n    if (featureTable.hasProperty('POSITION')) {\n      position = featureTable.getProperty('POSITION', GL.FLOAT, 3, i, instancePosition);\n    } else if (featureTable.hasProperty('POSITION_QUANTIZED')) {\n      position = featureTable.getProperty('POSITION_QUANTIZED', GL.UNSIGNED_SHORT, 3, i, instancePosition);\n      const quantizedVolumeOffset = featureTable.getGlobalProperty('QUANTIZED_VOLUME_OFFSET', GL.FLOAT, 3, scratchVector1);\n      if (!quantizedVolumeOffset) {\n        throw new Error('i3dm parser: QUANTIZED_VOLUME_OFFSET must be defined for quantized positions.');\n      }\n      const quantizedVolumeScale = featureTable.getGlobalProperty('QUANTIZED_VOLUME_SCALE', GL.FLOAT, 3, scratchVector2);\n      if (!quantizedVolumeScale) {\n        throw new Error('i3dm parser: QUANTIZED_VOLUME_SCALE must be defined for quantized positions.');\n      }\n      const MAX_UNSIGNED_SHORT = 65535.0;\n      for (let j = 0; j < 3; j++) {\n        position[j] = position[j] / MAX_UNSIGNED_SHORT * quantizedVolumeScale[j] + quantizedVolumeOffset[j];\n      }\n    }\n    if (!position) {\n      throw new Error('i3dm: POSITION or POSITION_QUANTIZED must be defined for each instance.');\n    }\n    instancePosition.copy(position);\n    instanceTranslationRotationScale.translation = instancePosition;\n    tile.normalUp = featureTable.getProperty('NORMAL_UP', GL.FLOAT, 3, i, scratch1);\n    tile.normalRight = featureTable.getProperty('NORMAL_RIGHT', GL.FLOAT, 3, i, scratch2);\n    const hasCustomOrientation = false;\n    if (tile.normalUp) {\n      if (!tile.normalRight) {\n        throw new Error('i3dm: Custom orientation requires both NORMAL_UP and NORMAL_RIGHT.');\n      }\n      tile.hasCustomOrientation = true;\n    } else {\n      tile.octNormalUp = featureTable.getProperty('NORMAL_UP_OCT32P', GL.UNSIGNED_SHORT, 2, scratch1);\n      tile.octNormalRight = featureTable.getProperty('NORMAL_RIGHT_OCT32P', GL.UNSIGNED_SHORT, 2, scratch2);\n      if (tile.octNormalUp) {\n        if (!tile.octNormalRight) {\n          throw new Error('i3dm: oct-encoded orientation requires NORMAL_UP_OCT32P and NORMAL_RIGHT_OCT32P');\n        }\n        throw new Error('i3dm: oct-encoded orientation not implemented');\n      } else if (tile.eastNorthUp) {\n        Ellipsoid.WGS84.eastNorthUpToFixedFrame(instancePosition, instanceTransform);\n        instanceTransform.getRotationMatrix3(instanceRotation);\n      } else {\n        instanceRotation.identity();\n      }\n    }\n    if (hasCustomOrientation) {\n      instanceNormalForward.copy(instanceNormalRight).cross(instanceNormalUp).normalize();\n      instanceRotation.setColumn(0, instanceNormalRight);\n      instanceRotation.setColumn(1, instanceNormalUp);\n      instanceRotation.setColumn(2, instanceNormalForward);\n    }\n    instanceQuaternion.fromMatrix3(instanceRotation);\n    instanceTranslationRotationScale.rotation = instanceQuaternion;\n    instanceScale.set(1.0, 1.0, 1.0);\n    const scale = featureTable.getProperty('SCALE', GL.FLOAT, 1, i);\n    if (Number.isFinite(scale)) {\n      instanceScale.multiplyByScalar(scale);\n    }\n    const nonUniformScale = featureTable.getProperty('SCALE_NON_UNIFORM', GL.FLOAT, 3, i, scratch1);\n    if (nonUniformScale) {\n      instanceScale.scale(nonUniformScale);\n    }\n    instanceTranslationRotationScale.scale = instanceScale;\n    let batchId = featureTable.getProperty('BATCH_ID', GL.UNSIGNED_SHORT, 1, i);\n    if (batchId === undefined) {\n      batchId = i;\n    }\n    const rotationMatrix = new Matrix4().fromQuaternion(instanceTranslationRotationScale.rotation);\n    instanceTransform.identity();\n    instanceTransform.translate(instanceTranslationRotationScale.translation);\n    instanceTransform.multiplyRight(rotationMatrix);\n    instanceTransform.scale(instanceTranslationRotationScale.scale);\n    const modelMatrix = instanceTransform.clone();\n    instances[i] = {\n      modelMatrix,\n      batchId\n    };\n  }\n  tile.instances = instances;\n}\n//# sourceMappingURL=parse-3d-tile-instanced-model.js.map","const SUBTREE_FILE_MAGIC = 0x74627573;\nconst SUBTREE_FILE_VERSION = 1;\nexport default async function parse3DTilesSubtree(data, options, context) {\n  const magic = new Uint32Array(data.slice(0, 4));\n  if (magic[0] !== SUBTREE_FILE_MAGIC) {\n    throw new Error('Wrong subtree file magic number');\n  }\n  const version = new Uint32Array(data.slice(4, 8));\n  if (version[0] !== SUBTREE_FILE_VERSION) {\n    throw new Error('Wrong subtree file verson, must be 1');\n  }\n  const jsonByteLength = parseUint64Value(data.slice(8, 16));\n  const stringAttribute = new Uint8Array(data, 24, jsonByteLength);\n  const textDecoder = new TextDecoder('utf8');\n  const string = textDecoder.decode(stringAttribute);\n  const subtree = JSON.parse(string);\n  const binaryByteLength = parseUint64Value(data.slice(16, 24));\n  let internalBinaryBuffer = new ArrayBuffer(0);\n  if (binaryByteLength) {\n    internalBinaryBuffer = data.slice(24 + jsonByteLength);\n  }\n  if ('bufferView' in subtree.tileAvailability) {\n    subtree.tileAvailability.explicitBitstream = await getExplicitBitstream(subtree, 'tileAvailability', internalBinaryBuffer, context);\n  }\n  if ('bufferView' in subtree.contentAvailability) {\n    subtree.contentAvailability.explicitBitstream = await getExplicitBitstream(subtree, 'contentAvailability', internalBinaryBuffer, context);\n  }\n  if ('bufferView' in subtree.childSubtreeAvailability) {\n    subtree.childSubtreeAvailability.explicitBitstream = await getExplicitBitstream(subtree, 'childSubtreeAvailability', internalBinaryBuffer, context);\n  }\n  return subtree;\n}\nfunction resolveBufferUri(bitstreamRelativeUri, basePath) {\n  const hasProtocol = basePath.startsWith('http');\n  if (hasProtocol) {\n    const resolvedUri = new URL(bitstreamRelativeUri, basePath);\n    return decodeURI(resolvedUri.toString());\n  }\n  const basePathWithProtocol = \"http://\".concat(basePath);\n  const resolvedUri = new URL(bitstreamRelativeUri, basePathWithProtocol);\n  return \"/\".concat(resolvedUri.host).concat(resolvedUri.pathname);\n}\nasync function getExplicitBitstream(subtree, name, internalBinaryBuffer, context) {\n  const bufferViewIndex = subtree[name].bufferView;\n  const bufferView = subtree.bufferViews[bufferViewIndex];\n  const buffer = subtree.buffers[bufferView.buffer];\n  if (!(context !== null && context !== void 0 && context.url) || !context.fetch) {\n    throw new Error('Url is not provided');\n  }\n  if (!context.fetch) {\n    throw new Error('fetch is not provided');\n  }\n  if (buffer.uri) {\n    const bufferUri = resolveBufferUri(buffer.uri, context === null || context === void 0 ? void 0 : context.url);\n    const response = await context.fetch(bufferUri);\n    const data = await response.arrayBuffer();\n    return new Uint8Array(data, bufferView.byteOffset, bufferView.byteLength);\n  }\n  return new Uint8Array(internalBinaryBuffer, bufferView.byteOffset, bufferView.byteLength);\n}\nfunction parseUint64Value(buffer) {\n  const dataView = new DataView(buffer);\n  const left = dataView.getUint32(0, true);\n  const right = dataView.getUint32(4, true);\n  return left + 2 ** 32 * right;\n}\n//# sourceMappingURL=parse-3d-tile-subtree.js.map","import parse3DTilesSubtree from './lib/parsers/helpers/parse-3d-tile-subtree';\nimport { VERSION } from './lib/utils/version';\nexport const Tile3DSubtreeLoader = {\n  id: '3d-tiles-subtree',\n  name: '3D Tiles Subtree',\n  module: '3d-tiles',\n  version: VERSION,\n  extensions: ['subtree'],\n  mimeTypes: ['application/octet-stream'],\n  tests: ['subtree'],\n  parse: parse3DTilesSubtree,\n  options: {}\n};\n//# sourceMappingURL=tile-3d-subtree-loader.js.map","/**\n * @license\n * Copyright 2009 The Closure Library Authors\n * Copyright 2020 Daniel Wirtz / The long.js Authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * SPDX-License-Identifier: Apache-2.0\n */\n\n// WebAssembly optimizations to do native i64 multiplication and divide\nvar wasm = null;\ntry {\n  wasm = new WebAssembly.Instance(new WebAssembly.Module(new Uint8Array([\n    0, 97, 115, 109, 1, 0, 0, 0, 1, 13, 2, 96, 0, 1, 127, 96, 4, 127, 127, 127, 127, 1, 127, 3, 7, 6, 0, 1, 1, 1, 1, 1, 6, 6, 1, 127, 1, 65, 0, 11, 7, 50, 6, 3, 109, 117, 108, 0, 1, 5, 100, 105, 118, 95, 115, 0, 2, 5, 100, 105, 118, 95, 117, 0, 3, 5, 114, 101, 109, 95, 115, 0, 4, 5, 114, 101, 109, 95, 117, 0, 5, 8, 103, 101, 116, 95, 104, 105, 103, 104, 0, 0, 10, 191, 1, 6, 4, 0, 35, 0, 11, 36, 1, 1, 126, 32, 0, 173, 32, 1, 173, 66, 32, 134, 132, 32, 2, 173, 32, 3, 173, 66, 32, 134, 132, 126, 34, 4, 66, 32, 135, 167, 36, 0, 32, 4, 167, 11, 36, 1, 1, 126, 32, 0, 173, 32, 1, 173, 66, 32, 134, 132, 32, 2, 173, 32, 3, 173, 66, 32, 134, 132, 127, 34, 4, 66, 32, 135, 167, 36, 0, 32, 4, 167, 11, 36, 1, 1, 126, 32, 0, 173, 32, 1, 173, 66, 32, 134, 132, 32, 2, 173, 32, 3, 173, 66, 32, 134, 132, 128, 34, 4, 66, 32, 135, 167, 36, 0, 32, 4, 167, 11, 36, 1, 1, 126, 32, 0, 173, 32, 1, 173, 66, 32, 134, 132, 32, 2, 173, 32, 3, 173, 66, 32, 134, 132, 129, 34, 4, 66, 32, 135, 167, 36, 0, 32, 4, 167, 11, 36, 1, 1, 126, 32, 0, 173, 32, 1, 173, 66, 32, 134, 132, 32, 2, 173, 32, 3, 173, 66, 32, 134, 132, 130, 34, 4, 66, 32, 135, 167, 36, 0, 32, 4, 167, 11\n  ])), {}).exports;\n} catch (e) {\n  // no wasm support :(\n}\n\n/**\n * Constructs a 64 bit two's-complement integer, given its low and high 32 bit values as *signed* integers.\n *  See the from* functions below for more convenient ways of constructing Longs.\n * @exports Long\n * @class A Long class for representing a 64 bit two's-complement integer value.\n * @param {number} low The low (signed) 32 bits of the long\n * @param {number} high The high (signed) 32 bits of the long\n * @param {boolean=} unsigned Whether unsigned or not, defaults to signed\n * @constructor\n */\nfunction Long(low, high, unsigned) {\n\n  /**\n   * The low 32 bits as a signed value.\n   * @type {number}\n   */\n  this.low = low | 0;\n\n  /**\n   * The high 32 bits as a signed value.\n   * @type {number}\n   */\n  this.high = high | 0;\n\n  /**\n   * Whether unsigned or not.\n   * @type {boolean}\n   */\n  this.unsigned = !!unsigned;\n}\n\n// The internal representation of a long is the two given signed, 32-bit values.\n// We use 32-bit pieces because these are the size of integers on which\n// Javascript performs bit-operations.  For operations like addition and\n// multiplication, we split each number into 16 bit pieces, which can easily be\n// multiplied within Javascript's floating-point representation without overflow\n// or change in sign.\n//\n// In the algorithms below, we frequently reduce the negative case to the\n// positive case by negating the input(s) and then post-processing the result.\n// Note that we must ALWAYS check specially whether those values are MIN_VALUE\n// (-2^63) because -MIN_VALUE == MIN_VALUE (since 2^63 cannot be represented as\n// a positive number, it overflows back into a negative).  Not handling this\n// case would often result in infinite recursion.\n//\n// Common constant values ZERO, ONE, NEG_ONE, etc. are defined below the from*\n// methods on which they depend.\n\n/**\n * An indicator used to reliably determine if an object is a Long or not.\n * @type {boolean}\n * @const\n * @private\n */\nLong.prototype.__isLong__;\n\nObject.defineProperty(Long.prototype, \"__isLong__\", { value: true });\n\n/**\n * @function\n * @param {*} obj Object\n * @returns {boolean}\n * @inner\n */\nfunction isLong(obj) {\n  return (obj && obj[\"__isLong__\"]) === true;\n}\n\n/**\n * @function\n * @param {*} value number\n * @returns {number}\n * @inner\n */\nfunction ctz32(value) {\n  var c = Math.clz32(value & -value);\n  return value ? 31 - c : c;\n}\n\n/**\n * Tests if the specified object is a Long.\n * @function\n * @param {*} obj Object\n * @returns {boolean}\n */\nLong.isLong = isLong;\n\n/**\n * A cache of the Long representations of small integer values.\n * @type {!Object}\n * @inner\n */\nvar INT_CACHE = {};\n\n/**\n * A cache of the Long representations of small unsigned integer values.\n * @type {!Object}\n * @inner\n */\nvar UINT_CACHE = {};\n\n/**\n * @param {number} value\n * @param {boolean=} unsigned\n * @returns {!Long}\n * @inner\n */\nfunction fromInt(value, unsigned) {\n  var obj, cachedObj, cache;\n  if (unsigned) {\n    value >>>= 0;\n    if (cache = (0 <= value && value < 256)) {\n      cachedObj = UINT_CACHE[value];\n      if (cachedObj)\n        return cachedObj;\n    }\n    obj = fromBits(value, 0, true);\n    if (cache)\n      UINT_CACHE[value] = obj;\n    return obj;\n  } else {\n    value |= 0;\n    if (cache = (-128 <= value && value < 128)) {\n      cachedObj = INT_CACHE[value];\n      if (cachedObj)\n        return cachedObj;\n    }\n    obj = fromBits(value, value < 0 ? -1 : 0, false);\n    if (cache)\n      INT_CACHE[value] = obj;\n    return obj;\n  }\n}\n\n/**\n * Returns a Long representing the given 32 bit integer value.\n * @function\n * @param {number} value The 32 bit integer in question\n * @param {boolean=} unsigned Whether unsigned or not, defaults to signed\n * @returns {!Long} The corresponding Long value\n */\nLong.fromInt = fromInt;\n\n/**\n * @param {number} value\n * @param {boolean=} unsigned\n * @returns {!Long}\n * @inner\n */\nfunction fromNumber(value, unsigned) {\n  if (isNaN(value))\n    return unsigned ? UZERO : ZERO;\n  if (unsigned) {\n    if (value < 0)\n      return UZERO;\n    if (value >= TWO_PWR_64_DBL)\n      return MAX_UNSIGNED_VALUE;\n  } else {\n    if (value <= -TWO_PWR_63_DBL)\n      return MIN_VALUE;\n    if (value + 1 >= TWO_PWR_63_DBL)\n      return MAX_VALUE;\n  }\n  if (value < 0)\n    return fromNumber(-value, unsigned).neg();\n  return fromBits((value % TWO_PWR_32_DBL) | 0, (value / TWO_PWR_32_DBL) | 0, unsigned);\n}\n\n/**\n * Returns a Long representing the given value, provided that it is a finite number. Otherwise, zero is returned.\n * @function\n * @param {number} value The number in question\n * @param {boolean=} unsigned Whether unsigned or not, defaults to signed\n * @returns {!Long} The corresponding Long value\n */\nLong.fromNumber = fromNumber;\n\n/**\n * @param {number} lowBits\n * @param {number} highBits\n * @param {boolean=} unsigned\n * @returns {!Long}\n * @inner\n */\nfunction fromBits(lowBits, highBits, unsigned) {\n  return new Long(lowBits, highBits, unsigned);\n}\n\n/**\n * Returns a Long representing the 64 bit integer that comes by concatenating the given low and high bits. Each is\n *  assumed to use 32 bits.\n * @function\n * @param {number} lowBits The low 32 bits\n * @param {number} highBits The high 32 bits\n * @param {boolean=} unsigned Whether unsigned or not, defaults to signed\n * @returns {!Long} The corresponding Long value\n */\nLong.fromBits = fromBits;\n\n/**\n * @function\n * @param {number} base\n * @param {number} exponent\n * @returns {number}\n * @inner\n */\nvar pow_dbl = Math.pow; // Used 4 times (4*8 to 15+4)\n\n/**\n * @param {string} str\n * @param {(boolean|number)=} unsigned\n * @param {number=} radix\n * @returns {!Long}\n * @inner\n */\nfunction fromString(str, unsigned, radix) {\n  if (str.length === 0)\n    throw Error('empty string');\n  if (typeof unsigned === 'number') {\n    // For goog.math.long compatibility\n    radix = unsigned;\n    unsigned = false;\n  } else {\n    unsigned = !!unsigned;\n  }\n  if (str === \"NaN\" || str === \"Infinity\" || str === \"+Infinity\" || str === \"-Infinity\")\n    return unsigned ? UZERO : ZERO;\n  radix = radix || 10;\n  if (radix < 2 || 36 < radix)\n    throw RangeError('radix');\n\n  var p;\n  if ((p = str.indexOf('-')) > 0)\n    throw Error('interior hyphen');\n  else if (p === 0) {\n    return fromString(str.substring(1), unsigned, radix).neg();\n  }\n\n  // Do several (8) digits each time through the loop, so as to\n  // minimize the calls to the very expensive emulated div.\n  var radixToPower = fromNumber(pow_dbl(radix, 8));\n\n  var result = ZERO;\n  for (var i = 0; i < str.length; i += 8) {\n    var size = Math.min(8, str.length - i),\n      value = parseInt(str.substring(i, i + size), radix);\n    if (size < 8) {\n      var power = fromNumber(pow_dbl(radix, size));\n      result = result.mul(power).add(fromNumber(value));\n    } else {\n      result = result.mul(radixToPower);\n      result = result.add(fromNumber(value));\n    }\n  }\n  result.unsigned = unsigned;\n  return result;\n}\n\n/**\n * Returns a Long representation of the given string, written using the specified radix.\n * @function\n * @param {string} str The textual representation of the Long\n * @param {(boolean|number)=} unsigned Whether unsigned or not, defaults to signed\n * @param {number=} radix The radix in which the text is written (2-36), defaults to 10\n * @returns {!Long} The corresponding Long value\n */\nLong.fromString = fromString;\n\n/**\n * @function\n * @param {!Long|number|string|!{low: number, high: number, unsigned: boolean}} val\n * @param {boolean=} unsigned\n * @returns {!Long}\n * @inner\n */\nfunction fromValue(val, unsigned) {\n  if (typeof val === 'number')\n    return fromNumber(val, unsigned);\n  if (typeof val === 'string')\n    return fromString(val, unsigned);\n  // Throws for non-objects, converts non-instanceof Long:\n  return fromBits(val.low, val.high, typeof unsigned === 'boolean' ? unsigned : val.unsigned);\n}\n\n/**\n * Converts the specified value to a Long using the appropriate from* function for its type.\n * @function\n * @param {!Long|number|string|!{low: number, high: number, unsigned: boolean}} val Value\n * @param {boolean=} unsigned Whether unsigned or not, defaults to signed\n * @returns {!Long}\n */\nLong.fromValue = fromValue;\n\n// NOTE: the compiler should inline these constant values below and then remove these variables, so there should be\n// no runtime penalty for these.\n\n/**\n * @type {number}\n * @const\n * @inner\n */\nvar TWO_PWR_16_DBL = 1 << 16;\n\n/**\n * @type {number}\n * @const\n * @inner\n */\nvar TWO_PWR_24_DBL = 1 << 24;\n\n/**\n * @type {number}\n * @const\n * @inner\n */\nvar TWO_PWR_32_DBL = TWO_PWR_16_DBL * TWO_PWR_16_DBL;\n\n/**\n * @type {number}\n * @const\n * @inner\n */\nvar TWO_PWR_64_DBL = TWO_PWR_32_DBL * TWO_PWR_32_DBL;\n\n/**\n * @type {number}\n * @const\n * @inner\n */\nvar TWO_PWR_63_DBL = TWO_PWR_64_DBL / 2;\n\n/**\n * @type {!Long}\n * @const\n * @inner\n */\nvar TWO_PWR_24 = fromInt(TWO_PWR_24_DBL);\n\n/**\n * @type {!Long}\n * @inner\n */\nvar ZERO = fromInt(0);\n\n/**\n * Signed zero.\n * @type {!Long}\n */\nLong.ZERO = ZERO;\n\n/**\n * @type {!Long}\n * @inner\n */\nvar UZERO = fromInt(0, true);\n\n/**\n * Unsigned zero.\n * @type {!Long}\n */\nLong.UZERO = UZERO;\n\n/**\n * @type {!Long}\n * @inner\n */\nvar ONE = fromInt(1);\n\n/**\n * Signed one.\n * @type {!Long}\n */\nLong.ONE = ONE;\n\n/**\n * @type {!Long}\n * @inner\n */\nvar UONE = fromInt(1, true);\n\n/**\n * Unsigned one.\n * @type {!Long}\n */\nLong.UONE = UONE;\n\n/**\n * @type {!Long}\n * @inner\n */\nvar NEG_ONE = fromInt(-1);\n\n/**\n * Signed negative one.\n * @type {!Long}\n */\nLong.NEG_ONE = NEG_ONE;\n\n/**\n * @type {!Long}\n * @inner\n */\nvar MAX_VALUE = fromBits(0xFFFFFFFF | 0, 0x7FFFFFFF | 0, false);\n\n/**\n * Maximum signed value.\n * @type {!Long}\n */\nLong.MAX_VALUE = MAX_VALUE;\n\n/**\n * @type {!Long}\n * @inner\n */\nvar MAX_UNSIGNED_VALUE = fromBits(0xFFFFFFFF | 0, 0xFFFFFFFF | 0, true);\n\n/**\n * Maximum unsigned value.\n * @type {!Long}\n */\nLong.MAX_UNSIGNED_VALUE = MAX_UNSIGNED_VALUE;\n\n/**\n * @type {!Long}\n * @inner\n */\nvar MIN_VALUE = fromBits(0, 0x80000000 | 0, false);\n\n/**\n * Minimum signed value.\n * @type {!Long}\n */\nLong.MIN_VALUE = MIN_VALUE;\n\n/**\n * @alias Long.prototype\n * @inner\n */\nvar LongPrototype = Long.prototype;\n\n/**\n * Converts the Long to a 32 bit integer, assuming it is a 32 bit integer.\n * @this {!Long}\n * @returns {number}\n */\nLongPrototype.toInt = function toInt() {\n  return this.unsigned ? this.low >>> 0 : this.low;\n};\n\n/**\n * Converts the Long to a the nearest floating-point representation of this value (double, 53 bit mantissa).\n * @this {!Long}\n * @returns {number}\n */\nLongPrototype.toNumber = function toNumber() {\n  if (this.unsigned)\n    return ((this.high >>> 0) * TWO_PWR_32_DBL) + (this.low >>> 0);\n  return this.high * TWO_PWR_32_DBL + (this.low >>> 0);\n};\n\n/**\n * Converts the Long to a string written in the specified radix.\n * @this {!Long}\n * @param {number=} radix Radix (2-36), defaults to 10\n * @returns {string}\n * @override\n * @throws {RangeError} If `radix` is out of range\n */\nLongPrototype.toString = function toString(radix) {\n  radix = radix || 10;\n  if (radix < 2 || 36 < radix)\n    throw RangeError('radix');\n  if (this.isZero())\n    return '0';\n  if (this.isNegative()) { // Unsigned Longs are never negative\n    if (this.eq(MIN_VALUE)) {\n      // We need to change the Long value before it can be negated, so we remove\n      // the bottom-most digit in this base and then recurse to do the rest.\n      var radixLong = fromNumber(radix),\n        div = this.div(radixLong),\n        rem1 = div.mul(radixLong).sub(this);\n      return div.toString(radix) + rem1.toInt().toString(radix);\n    } else\n      return '-' + this.neg().toString(radix);\n  }\n\n  // Do several (6) digits each time through the loop, so as to\n  // minimize the calls to the very expensive emulated div.\n  var radixToPower = fromNumber(pow_dbl(radix, 6), this.unsigned),\n    rem = this;\n  var result = '';\n  while (true) {\n    var remDiv = rem.div(radixToPower),\n      intval = rem.sub(remDiv.mul(radixToPower)).toInt() >>> 0,\n      digits = intval.toString(radix);\n    rem = remDiv;\n    if (rem.isZero())\n      return digits + result;\n    else {\n      while (digits.length < 6)\n        digits = '0' + digits;\n      result = '' + digits + result;\n    }\n  }\n};\n\n/**\n * Gets the high 32 bits as a signed integer.\n * @this {!Long}\n * @returns {number} Signed high bits\n */\nLongPrototype.getHighBits = function getHighBits() {\n  return this.high;\n};\n\n/**\n * Gets the high 32 bits as an unsigned integer.\n * @this {!Long}\n * @returns {number} Unsigned high bits\n */\nLongPrototype.getHighBitsUnsigned = function getHighBitsUnsigned() {\n  return this.high >>> 0;\n};\n\n/**\n * Gets the low 32 bits as a signed integer.\n * @this {!Long}\n * @returns {number} Signed low bits\n */\nLongPrototype.getLowBits = function getLowBits() {\n  return this.low;\n};\n\n/**\n * Gets the low 32 bits as an unsigned integer.\n * @this {!Long}\n * @returns {number} Unsigned low bits\n */\nLongPrototype.getLowBitsUnsigned = function getLowBitsUnsigned() {\n  return this.low >>> 0;\n};\n\n/**\n * Gets the number of bits needed to represent the absolute value of this Long.\n * @this {!Long}\n * @returns {number}\n */\nLongPrototype.getNumBitsAbs = function getNumBitsAbs() {\n  if (this.isNegative()) // Unsigned Longs are never negative\n    return this.eq(MIN_VALUE) ? 64 : this.neg().getNumBitsAbs();\n  var val = this.high != 0 ? this.high : this.low;\n  for (var bit = 31; bit > 0; bit--)\n    if ((val & (1 << bit)) != 0)\n      break;\n  return this.high != 0 ? bit + 33 : bit + 1;\n};\n\n/**\n * Tests if this Long's value equals zero.\n * @this {!Long}\n * @returns {boolean}\n */\nLongPrototype.isZero = function isZero() {\n  return this.high === 0 && this.low === 0;\n};\n\n/**\n * Tests if this Long's value equals zero. This is an alias of {@link Long#isZero}.\n * @returns {boolean}\n */\nLongPrototype.eqz = LongPrototype.isZero;\n\n/**\n * Tests if this Long's value is negative.\n * @this {!Long}\n * @returns {boolean}\n */\nLongPrototype.isNegative = function isNegative() {\n  return !this.unsigned && this.high < 0;\n};\n\n/**\n * Tests if this Long's value is positive or zero.\n * @this {!Long}\n * @returns {boolean}\n */\nLongPrototype.isPositive = function isPositive() {\n  return this.unsigned || this.high >= 0;\n};\n\n/**\n * Tests if this Long's value is odd.\n * @this {!Long}\n * @returns {boolean}\n */\nLongPrototype.isOdd = function isOdd() {\n  return (this.low & 1) === 1;\n};\n\n/**\n * Tests if this Long's value is even.\n * @this {!Long}\n * @returns {boolean}\n */\nLongPrototype.isEven = function isEven() {\n  return (this.low & 1) === 0;\n};\n\n/**\n * Tests if this Long's value equals the specified's.\n * @this {!Long}\n * @param {!Long|number|string} other Other value\n * @returns {boolean}\n */\nLongPrototype.equals = function equals(other) {\n  if (!isLong(other))\n    other = fromValue(other);\n  if (this.unsigned !== other.unsigned && (this.high >>> 31) === 1 && (other.high >>> 31) === 1)\n    return false;\n  return this.high === other.high && this.low === other.low;\n};\n\n/**\n * Tests if this Long's value equals the specified's. This is an alias of {@link Long#equals}.\n * @function\n * @param {!Long|number|string} other Other value\n * @returns {boolean}\n */\nLongPrototype.eq = LongPrototype.equals;\n\n/**\n * Tests if this Long's value differs from the specified's.\n * @this {!Long}\n * @param {!Long|number|string} other Other value\n * @returns {boolean}\n */\nLongPrototype.notEquals = function notEquals(other) {\n  return !this.eq(/* validates */ other);\n};\n\n/**\n * Tests if this Long's value differs from the specified's. This is an alias of {@link Long#notEquals}.\n * @function\n * @param {!Long|number|string} other Other value\n * @returns {boolean}\n */\nLongPrototype.neq = LongPrototype.notEquals;\n\n/**\n * Tests if this Long's value differs from the specified's. This is an alias of {@link Long#notEquals}.\n * @function\n * @param {!Long|number|string} other Other value\n * @returns {boolean}\n */\nLongPrototype.ne = LongPrototype.notEquals;\n\n/**\n * Tests if this Long's value is less than the specified's.\n * @this {!Long}\n * @param {!Long|number|string} other Other value\n * @returns {boolean}\n */\nLongPrototype.lessThan = function lessThan(other) {\n  return this.comp(/* validates */ other) < 0;\n};\n\n/**\n * Tests if this Long's value is less than the specified's. This is an alias of {@link Long#lessThan}.\n * @function\n * @param {!Long|number|string} other Other value\n * @returns {boolean}\n */\nLongPrototype.lt = LongPrototype.lessThan;\n\n/**\n * Tests if this Long's value is less than or equal the specified's.\n * @this {!Long}\n * @param {!Long|number|string} other Other value\n * @returns {boolean}\n */\nLongPrototype.lessThanOrEqual = function lessThanOrEqual(other) {\n  return this.comp(/* validates */ other) <= 0;\n};\n\n/**\n * Tests if this Long's value is less than or equal the specified's. This is an alias of {@link Long#lessThanOrEqual}.\n * @function\n * @param {!Long|number|string} other Other value\n * @returns {boolean}\n */\nLongPrototype.lte = LongPrototype.lessThanOrEqual;\n\n/**\n * Tests if this Long's value is less than or equal the specified's. This is an alias of {@link Long#lessThanOrEqual}.\n * @function\n * @param {!Long|number|string} other Other value\n * @returns {boolean}\n */\nLongPrototype.le = LongPrototype.lessThanOrEqual;\n\n/**\n * Tests if this Long's value is greater than the specified's.\n * @this {!Long}\n * @param {!Long|number|string} other Other value\n * @returns {boolean}\n */\nLongPrototype.greaterThan = function greaterThan(other) {\n  return this.comp(/* validates */ other) > 0;\n};\n\n/**\n * Tests if this Long's value is greater than the specified's. This is an alias of {@link Long#greaterThan}.\n * @function\n * @param {!Long|number|string} other Other value\n * @returns {boolean}\n */\nLongPrototype.gt = LongPrototype.greaterThan;\n\n/**\n * Tests if this Long's value is greater than or equal the specified's.\n * @this {!Long}\n * @param {!Long|number|string} other Other value\n * @returns {boolean}\n */\nLongPrototype.greaterThanOrEqual = function greaterThanOrEqual(other) {\n  return this.comp(/* validates */ other) >= 0;\n};\n\n/**\n * Tests if this Long's value is greater than or equal the specified's. This is an alias of {@link Long#greaterThanOrEqual}.\n * @function\n * @param {!Long|number|string} other Other value\n * @returns {boolean}\n */\nLongPrototype.gte = LongPrototype.greaterThanOrEqual;\n\n/**\n * Tests if this Long's value is greater than or equal the specified's. This is an alias of {@link Long#greaterThanOrEqual}.\n * @function\n * @param {!Long|number|string} other Other value\n * @returns {boolean}\n */\nLongPrototype.ge = LongPrototype.greaterThanOrEqual;\n\n/**\n * Compares this Long's value with the specified's.\n * @this {!Long}\n * @param {!Long|number|string} other Other value\n * @returns {number} 0 if they are the same, 1 if the this is greater and -1\n *  if the given one is greater\n */\nLongPrototype.compare = function compare(other) {\n  if (!isLong(other))\n    other = fromValue(other);\n  if (this.eq(other))\n    return 0;\n  var thisNeg = this.isNegative(),\n    otherNeg = other.isNegative();\n  if (thisNeg && !otherNeg)\n    return -1;\n  if (!thisNeg && otherNeg)\n    return 1;\n  // At this point the sign bits are the same\n  if (!this.unsigned)\n    return this.sub(other).isNegative() ? -1 : 1;\n  // Both are positive if at least one is unsigned\n  return (other.high >>> 0) > (this.high >>> 0) || (other.high === this.high && (other.low >>> 0) > (this.low >>> 0)) ? -1 : 1;\n};\n\n/**\n * Compares this Long's value with the specified's. This is an alias of {@link Long#compare}.\n * @function\n * @param {!Long|number|string} other Other value\n * @returns {number} 0 if they are the same, 1 if the this is greater and -1\n *  if the given one is greater\n */\nLongPrototype.comp = LongPrototype.compare;\n\n/**\n * Negates this Long's value.\n * @this {!Long}\n * @returns {!Long} Negated Long\n */\nLongPrototype.negate = function negate() {\n  if (!this.unsigned && this.eq(MIN_VALUE))\n    return MIN_VALUE;\n  return this.not().add(ONE);\n};\n\n/**\n * Negates this Long's value. This is an alias of {@link Long#negate}.\n * @function\n * @returns {!Long} Negated Long\n */\nLongPrototype.neg = LongPrototype.negate;\n\n/**\n * Returns the sum of this and the specified Long.\n * @this {!Long}\n * @param {!Long|number|string} addend Addend\n * @returns {!Long} Sum\n */\nLongPrototype.add = function add(addend) {\n  if (!isLong(addend))\n    addend = fromValue(addend);\n\n  // Divide each number into 4 chunks of 16 bits, and then sum the chunks.\n\n  var a48 = this.high >>> 16;\n  var a32 = this.high & 0xFFFF;\n  var a16 = this.low >>> 16;\n  var a00 = this.low & 0xFFFF;\n\n  var b48 = addend.high >>> 16;\n  var b32 = addend.high & 0xFFFF;\n  var b16 = addend.low >>> 16;\n  var b00 = addend.low & 0xFFFF;\n\n  var c48 = 0, c32 = 0, c16 = 0, c00 = 0;\n  c00 += a00 + b00;\n  c16 += c00 >>> 16;\n  c00 &= 0xFFFF;\n  c16 += a16 + b16;\n  c32 += c16 >>> 16;\n  c16 &= 0xFFFF;\n  c32 += a32 + b32;\n  c48 += c32 >>> 16;\n  c32 &= 0xFFFF;\n  c48 += a48 + b48;\n  c48 &= 0xFFFF;\n  return fromBits((c16 << 16) | c00, (c48 << 16) | c32, this.unsigned);\n};\n\n/**\n * Returns the difference of this and the specified Long.\n * @this {!Long}\n * @param {!Long|number|string} subtrahend Subtrahend\n * @returns {!Long} Difference\n */\nLongPrototype.subtract = function subtract(subtrahend) {\n  if (!isLong(subtrahend))\n    subtrahend = fromValue(subtrahend);\n  return this.add(subtrahend.neg());\n};\n\n/**\n * Returns the difference of this and the specified Long. This is an alias of {@link Long#subtract}.\n * @function\n * @param {!Long|number|string} subtrahend Subtrahend\n * @returns {!Long} Difference\n */\nLongPrototype.sub = LongPrototype.subtract;\n\n/**\n * Returns the product of this and the specified Long.\n * @this {!Long}\n * @param {!Long|number|string} multiplier Multiplier\n * @returns {!Long} Product\n */\nLongPrototype.multiply = function multiply(multiplier) {\n  if (this.isZero())\n    return this;\n  if (!isLong(multiplier))\n    multiplier = fromValue(multiplier);\n\n  // use wasm support if present\n  if (wasm) {\n    var low = wasm[\"mul\"](this.low,\n      this.high,\n      multiplier.low,\n      multiplier.high);\n    return fromBits(low, wasm[\"get_high\"](), this.unsigned);\n  }\n\n  if (multiplier.isZero())\n    return this.unsigned ? UZERO : ZERO;\n  if (this.eq(MIN_VALUE))\n    return multiplier.isOdd() ? MIN_VALUE : ZERO;\n  if (multiplier.eq(MIN_VALUE))\n    return this.isOdd() ? MIN_VALUE : ZERO;\n\n  if (this.isNegative()) {\n    if (multiplier.isNegative())\n      return this.neg().mul(multiplier.neg());\n    else\n      return this.neg().mul(multiplier).neg();\n  } else if (multiplier.isNegative())\n    return this.mul(multiplier.neg()).neg();\n\n  // If both longs are small, use float multiplication\n  if (this.lt(TWO_PWR_24) && multiplier.lt(TWO_PWR_24))\n    return fromNumber(this.toNumber() * multiplier.toNumber(), this.unsigned);\n\n  // Divide each long into 4 chunks of 16 bits, and then add up 4x4 products.\n  // We can skip products that would overflow.\n\n  var a48 = this.high >>> 16;\n  var a32 = this.high & 0xFFFF;\n  var a16 = this.low >>> 16;\n  var a00 = this.low & 0xFFFF;\n\n  var b48 = multiplier.high >>> 16;\n  var b32 = multiplier.high & 0xFFFF;\n  var b16 = multiplier.low >>> 16;\n  var b00 = multiplier.low & 0xFFFF;\n\n  var c48 = 0, c32 = 0, c16 = 0, c00 = 0;\n  c00 += a00 * b00;\n  c16 += c00 >>> 16;\n  c00 &= 0xFFFF;\n  c16 += a16 * b00;\n  c32 += c16 >>> 16;\n  c16 &= 0xFFFF;\n  c16 += a00 * b16;\n  c32 += c16 >>> 16;\n  c16 &= 0xFFFF;\n  c32 += a32 * b00;\n  c48 += c32 >>> 16;\n  c32 &= 0xFFFF;\n  c32 += a16 * b16;\n  c48 += c32 >>> 16;\n  c32 &= 0xFFFF;\n  c32 += a00 * b32;\n  c48 += c32 >>> 16;\n  c32 &= 0xFFFF;\n  c48 += a48 * b00 + a32 * b16 + a16 * b32 + a00 * b48;\n  c48 &= 0xFFFF;\n  return fromBits((c16 << 16) | c00, (c48 << 16) | c32, this.unsigned);\n};\n\n/**\n * Returns the product of this and the specified Long. This is an alias of {@link Long#multiply}.\n * @function\n * @param {!Long|number|string} multiplier Multiplier\n * @returns {!Long} Product\n */\nLongPrototype.mul = LongPrototype.multiply;\n\n/**\n * Returns this Long divided by the specified. The result is signed if this Long is signed or\n *  unsigned if this Long is unsigned.\n * @this {!Long}\n * @param {!Long|number|string} divisor Divisor\n * @returns {!Long} Quotient\n */\nLongPrototype.divide = function divide(divisor) {\n  if (!isLong(divisor))\n    divisor = fromValue(divisor);\n  if (divisor.isZero())\n    throw Error('division by zero');\n\n  // use wasm support if present\n  if (wasm) {\n    // guard against signed division overflow: the largest\n    // negative number / -1 would be 1 larger than the largest\n    // positive number, due to two's complement.\n    if (!this.unsigned &&\n      this.high === -0x80000000 &&\n      divisor.low === -1 && divisor.high === -1) {\n      // be consistent with non-wasm code path\n      return this;\n    }\n    var low = (this.unsigned ? wasm[\"div_u\"] : wasm[\"div_s\"])(\n      this.low,\n      this.high,\n      divisor.low,\n      divisor.high\n    );\n    return fromBits(low, wasm[\"get_high\"](), this.unsigned);\n  }\n\n  if (this.isZero())\n    return this.unsigned ? UZERO : ZERO;\n  var approx, rem, res;\n  if (!this.unsigned) {\n    // This section is only relevant for signed longs and is derived from the\n    // closure library as a whole.\n    if (this.eq(MIN_VALUE)) {\n      if (divisor.eq(ONE) || divisor.eq(NEG_ONE))\n        return MIN_VALUE;  // recall that -MIN_VALUE == MIN_VALUE\n      else if (divisor.eq(MIN_VALUE))\n        return ONE;\n      else {\n        // At this point, we have |other| >= 2, so |this/other| < |MIN_VALUE|.\n        var halfThis = this.shr(1);\n        approx = halfThis.div(divisor).shl(1);\n        if (approx.eq(ZERO)) {\n          return divisor.isNegative() ? ONE : NEG_ONE;\n        } else {\n          rem = this.sub(divisor.mul(approx));\n          res = approx.add(rem.div(divisor));\n          return res;\n        }\n      }\n    } else if (divisor.eq(MIN_VALUE))\n      return this.unsigned ? UZERO : ZERO;\n    if (this.isNegative()) {\n      if (divisor.isNegative())\n        return this.neg().div(divisor.neg());\n      return this.neg().div(divisor).neg();\n    } else if (divisor.isNegative())\n      return this.div(divisor.neg()).neg();\n    res = ZERO;\n  } else {\n    // The algorithm below has not been made for unsigned longs. It's therefore\n    // required to take special care of the MSB prior to running it.\n    if (!divisor.unsigned)\n      divisor = divisor.toUnsigned();\n    if (divisor.gt(this))\n      return UZERO;\n    if (divisor.gt(this.shru(1))) // 15 >>> 1 = 7 ; with divisor = 8 ; true\n      return UONE;\n    res = UZERO;\n  }\n\n  // Repeat the following until the remainder is less than other:  find a\n  // floating-point that approximates remainder / other *from below*, add this\n  // into the result, and subtract it from the remainder.  It is critical that\n  // the approximate value is less than or equal to the real value so that the\n  // remainder never becomes negative.\n  rem = this;\n  while (rem.gte(divisor)) {\n    // Approximate the result of division. This may be a little greater or\n    // smaller than the actual value.\n    approx = Math.max(1, Math.floor(rem.toNumber() / divisor.toNumber()));\n\n    // We will tweak the approximate result by changing it in the 48-th digit or\n    // the smallest non-fractional digit, whichever is larger.\n    var log2 = Math.ceil(Math.log(approx) / Math.LN2),\n      delta = (log2 <= 48) ? 1 : pow_dbl(2, log2 - 48),\n\n      // Decrease the approximation until it is smaller than the remainder.  Note\n      // that if it is too large, the product overflows and is negative.\n      approxRes = fromNumber(approx),\n      approxRem = approxRes.mul(divisor);\n    while (approxRem.isNegative() || approxRem.gt(rem)) {\n      approx -= delta;\n      approxRes = fromNumber(approx, this.unsigned);\n      approxRem = approxRes.mul(divisor);\n    }\n\n    // We know the answer can't be zero... and actually, zero would cause\n    // infinite recursion since we would make no progress.\n    if (approxRes.isZero())\n      approxRes = ONE;\n\n    res = res.add(approxRes);\n    rem = rem.sub(approxRem);\n  }\n  return res;\n};\n\n/**\n * Returns this Long divided by the specified. This is an alias of {@link Long#divide}.\n * @function\n * @param {!Long|number|string} divisor Divisor\n * @returns {!Long} Quotient\n */\nLongPrototype.div = LongPrototype.divide;\n\n/**\n * Returns this Long modulo the specified.\n * @this {!Long}\n * @param {!Long|number|string} divisor Divisor\n * @returns {!Long} Remainder\n */\nLongPrototype.modulo = function modulo(divisor) {\n  if (!isLong(divisor))\n    divisor = fromValue(divisor);\n\n  // use wasm support if present\n  if (wasm) {\n    var low = (this.unsigned ? wasm[\"rem_u\"] : wasm[\"rem_s\"])(\n      this.low,\n      this.high,\n      divisor.low,\n      divisor.high\n    );\n    return fromBits(low, wasm[\"get_high\"](), this.unsigned);\n  }\n\n  return this.sub(this.div(divisor).mul(divisor));\n};\n\n/**\n * Returns this Long modulo the specified. This is an alias of {@link Long#modulo}.\n * @function\n * @param {!Long|number|string} divisor Divisor\n * @returns {!Long} Remainder\n */\nLongPrototype.mod = LongPrototype.modulo;\n\n/**\n * Returns this Long modulo the specified. This is an alias of {@link Long#modulo}.\n * @function\n * @param {!Long|number|string} divisor Divisor\n * @returns {!Long} Remainder\n */\nLongPrototype.rem = LongPrototype.modulo;\n\n/**\n * Returns the bitwise NOT of this Long.\n * @this {!Long}\n * @returns {!Long}\n */\nLongPrototype.not = function not() {\n  return fromBits(~this.low, ~this.high, this.unsigned);\n};\n\n/**\n * Returns count leading zeros of this Long.\n * @this {!Long}\n * @returns {!number}\n */\nLongPrototype.countLeadingZeros = function countLeadingZeros() {\n  return this.high ? Math.clz32(this.high) : Math.clz32(this.low) + 32;\n};\n\n/**\n * Returns count leading zeros. This is an alias of {@link Long#countLeadingZeros}.\n * @function\n * @param {!Long}\n * @returns {!number}\n */\nLongPrototype.clz = LongPrototype.countLeadingZeros;\n\n/**\n * Returns count trailing zeros of this Long.\n * @this {!Long}\n * @returns {!number}\n */\nLongPrototype.countTrailingZeros = function countTrailingZeros() {\n  return this.low ? ctz32(this.low) : ctz32(this.high) + 32;\n};\n\n/**\n * Returns count trailing zeros. This is an alias of {@link Long#countTrailingZeros}.\n * @function\n * @param {!Long}\n * @returns {!number}\n */\nLongPrototype.ctz = LongPrototype.countTrailingZeros;\n\n/**\n * Returns the bitwise AND of this Long and the specified.\n * @this {!Long}\n * @param {!Long|number|string} other Other Long\n * @returns {!Long}\n */\nLongPrototype.and = function and(other) {\n  if (!isLong(other))\n    other = fromValue(other);\n  return fromBits(this.low & other.low, this.high & other.high, this.unsigned);\n};\n\n/**\n * Returns the bitwise OR of this Long and the specified.\n * @this {!Long}\n * @param {!Long|number|string} other Other Long\n * @returns {!Long}\n */\nLongPrototype.or = function or(other) {\n  if (!isLong(other))\n    other = fromValue(other);\n  return fromBits(this.low | other.low, this.high | other.high, this.unsigned);\n};\n\n/**\n * Returns the bitwise XOR of this Long and the given one.\n * @this {!Long}\n * @param {!Long|number|string} other Other Long\n * @returns {!Long}\n */\nLongPrototype.xor = function xor(other) {\n  if (!isLong(other))\n    other = fromValue(other);\n  return fromBits(this.low ^ other.low, this.high ^ other.high, this.unsigned);\n};\n\n/**\n * Returns this Long with bits shifted to the left by the given amount.\n * @this {!Long}\n * @param {number|!Long} numBits Number of bits\n * @returns {!Long} Shifted Long\n */\nLongPrototype.shiftLeft = function shiftLeft(numBits) {\n  if (isLong(numBits))\n    numBits = numBits.toInt();\n  if ((numBits &= 63) === 0)\n    return this;\n  else if (numBits < 32)\n    return fromBits(this.low << numBits, (this.high << numBits) | (this.low >>> (32 - numBits)), this.unsigned);\n  else\n    return fromBits(0, this.low << (numBits - 32), this.unsigned);\n};\n\n/**\n * Returns this Long with bits shifted to the left by the given amount. This is an alias of {@link Long#shiftLeft}.\n * @function\n * @param {number|!Long} numBits Number of bits\n * @returns {!Long} Shifted Long\n */\nLongPrototype.shl = LongPrototype.shiftLeft;\n\n/**\n * Returns this Long with bits arithmetically shifted to the right by the given amount.\n * @this {!Long}\n * @param {number|!Long} numBits Number of bits\n * @returns {!Long} Shifted Long\n */\nLongPrototype.shiftRight = function shiftRight(numBits) {\n  if (isLong(numBits))\n    numBits = numBits.toInt();\n  if ((numBits &= 63) === 0)\n    return this;\n  else if (numBits < 32)\n    return fromBits((this.low >>> numBits) | (this.high << (32 - numBits)), this.high >> numBits, this.unsigned);\n  else\n    return fromBits(this.high >> (numBits - 32), this.high >= 0 ? 0 : -1, this.unsigned);\n};\n\n/**\n * Returns this Long with bits arithmetically shifted to the right by the given amount. This is an alias of {@link Long#shiftRight}.\n * @function\n * @param {number|!Long} numBits Number of bits\n * @returns {!Long} Shifted Long\n */\nLongPrototype.shr = LongPrototype.shiftRight;\n\n/**\n * Returns this Long with bits logically shifted to the right by the given amount.\n * @this {!Long}\n * @param {number|!Long} numBits Number of bits\n * @returns {!Long} Shifted Long\n */\nLongPrototype.shiftRightUnsigned = function shiftRightUnsigned(numBits) {\n  if (isLong(numBits)) numBits = numBits.toInt();\n  if ((numBits &= 63) === 0) return this;\n  if (numBits < 32) return fromBits((this.low >>> numBits) | (this.high << (32 - numBits)), this.high >>> numBits, this.unsigned);\n  if (numBits === 32) return fromBits(this.high, 0, this.unsigned);\n  return fromBits(this.high >>> (numBits - 32), 0, this.unsigned);\n};\n\n/**\n * Returns this Long with bits logically shifted to the right by the given amount. This is an alias of {@link Long#shiftRightUnsigned}.\n * @function\n * @param {number|!Long} numBits Number of bits\n * @returns {!Long} Shifted Long\n */\nLongPrototype.shru = LongPrototype.shiftRightUnsigned;\n\n/**\n * Returns this Long with bits logically shifted to the right by the given amount. This is an alias of {@link Long#shiftRightUnsigned}.\n * @function\n * @param {number|!Long} numBits Number of bits\n * @returns {!Long} Shifted Long\n */\nLongPrototype.shr_u = LongPrototype.shiftRightUnsigned;\n\n/**\n * Returns this Long with bits rotated to the left by the given amount.\n * @this {!Long}\n * @param {number|!Long} numBits Number of bits\n * @returns {!Long} Rotated Long\n */\nLongPrototype.rotateLeft = function rotateLeft(numBits) {\n  var b;\n  if (isLong(numBits)) numBits = numBits.toInt();\n  if ((numBits &= 63) === 0) return this;\n  if (numBits === 32) return fromBits(this.high, this.low, this.unsigned);\n  if (numBits < 32) {\n    b = (32 - numBits);\n    return fromBits(((this.low << numBits) | (this.high >>> b)), ((this.high << numBits) | (this.low >>> b)), this.unsigned);\n  }\n  numBits -= 32;\n  b = (32 - numBits);\n  return fromBits(((this.high << numBits) | (this.low >>> b)), ((this.low << numBits) | (this.high >>> b)), this.unsigned);\n}\n/**\n * Returns this Long with bits rotated to the left by the given amount. This is an alias of {@link Long#rotateLeft}.\n * @function\n * @param {number|!Long} numBits Number of bits\n * @returns {!Long} Rotated Long\n */\nLongPrototype.rotl = LongPrototype.rotateLeft;\n\n/**\n * Returns this Long with bits rotated to the right by the given amount.\n * @this {!Long}\n * @param {number|!Long} numBits Number of bits\n * @returns {!Long} Rotated Long\n */\nLongPrototype.rotateRight = function rotateRight(numBits) {\n  var b;\n  if (isLong(numBits)) numBits = numBits.toInt();\n  if ((numBits &= 63) === 0) return this;\n  if (numBits === 32) return fromBits(this.high, this.low, this.unsigned);\n  if (numBits < 32) {\n    b = (32 - numBits);\n    return fromBits(((this.high << b) | (this.low >>> numBits)), ((this.low << b) | (this.high >>> numBits)), this.unsigned);\n  }\n  numBits -= 32;\n  b = (32 - numBits);\n  return fromBits(((this.low << b) | (this.high >>> numBits)), ((this.high << b) | (this.low >>> numBits)), this.unsigned);\n}\n/**\n * Returns this Long with bits rotated to the right by the given amount. This is an alias of {@link Long#rotateRight}.\n * @function\n * @param {number|!Long} numBits Number of bits\n * @returns {!Long} Rotated Long\n */\nLongPrototype.rotr = LongPrototype.rotateRight;\n\n/**\n * Converts this Long to signed.\n * @this {!Long}\n * @returns {!Long} Signed long\n */\nLongPrototype.toSigned = function toSigned() {\n  if (!this.unsigned)\n    return this;\n  return fromBits(this.low, this.high, false);\n};\n\n/**\n * Converts this Long to unsigned.\n * @this {!Long}\n * @returns {!Long} Unsigned long\n */\nLongPrototype.toUnsigned = function toUnsigned() {\n  if (this.unsigned)\n    return this;\n  return fromBits(this.low, this.high, true);\n};\n\n/**\n * Converts this Long to its byte representation.\n * @param {boolean=} le Whether little or big endian, defaults to big endian\n * @this {!Long}\n * @returns {!Array.<number>} Byte representation\n */\nLongPrototype.toBytes = function toBytes(le) {\n  return le ? this.toBytesLE() : this.toBytesBE();\n};\n\n/**\n * Converts this Long to its little endian byte representation.\n * @this {!Long}\n * @returns {!Array.<number>} Little endian byte representation\n */\nLongPrototype.toBytesLE = function toBytesLE() {\n  var hi = this.high,\n    lo = this.low;\n  return [\n    lo & 0xff,\n    lo >>> 8 & 0xff,\n    lo >>> 16 & 0xff,\n    lo >>> 24,\n    hi & 0xff,\n    hi >>> 8 & 0xff,\n    hi >>> 16 & 0xff,\n    hi >>> 24\n  ];\n};\n\n/**\n * Converts this Long to its big endian byte representation.\n * @this {!Long}\n * @returns {!Array.<number>} Big endian byte representation\n */\nLongPrototype.toBytesBE = function toBytesBE() {\n  var hi = this.high,\n    lo = this.low;\n  return [\n    hi >>> 24,\n    hi >>> 16 & 0xff,\n    hi >>> 8 & 0xff,\n    hi & 0xff,\n    lo >>> 24,\n    lo >>> 16 & 0xff,\n    lo >>> 8 & 0xff,\n    lo & 0xff\n  ];\n};\n\n/**\n * Creates a Long from its byte representation.\n * @param {!Array.<number>} bytes Byte representation\n * @param {boolean=} unsigned Whether unsigned or not, defaults to signed\n * @param {boolean=} le Whether little or big endian, defaults to big endian\n * @returns {Long} The corresponding Long value\n */\nLong.fromBytes = function fromBytes(bytes, unsigned, le) {\n  return le ? Long.fromBytesLE(bytes, unsigned) : Long.fromBytesBE(bytes, unsigned);\n};\n\n/**\n * Creates a Long from its little endian byte representation.\n * @param {!Array.<number>} bytes Little endian byte representation\n * @param {boolean=} unsigned Whether unsigned or not, defaults to signed\n * @returns {Long} The corresponding Long value\n */\nLong.fromBytesLE = function fromBytesLE(bytes, unsigned) {\n  return new Long(\n    bytes[0] |\n    bytes[1] << 8 |\n    bytes[2] << 16 |\n    bytes[3] << 24,\n    bytes[4] |\n    bytes[5] << 8 |\n    bytes[6] << 16 |\n    bytes[7] << 24,\n    unsigned\n  );\n};\n\n/**\n * Creates a Long from its big endian byte representation.\n * @param {!Array.<number>} bytes Big endian byte representation\n * @param {boolean=} unsigned Whether unsigned or not, defaults to signed\n * @returns {Long} The corresponding Long value\n */\nLong.fromBytesBE = function fromBytesBE(bytes, unsigned) {\n  return new Long(\n    bytes[4] << 24 |\n    bytes[5] << 16 |\n    bytes[6] << 8 |\n    bytes[7],\n    bytes[0] << 24 |\n    bytes[1] << 16 |\n    bytes[2] << 8 |\n    bytes[3],\n    unsigned\n  );\n};\n\nexport default Long;\n","import Long from 'long';\nconst MAXIMUM_TOKEN_LENGTH = 16;\nexport function getS2CellIdFromToken(token) {\n  if (token === 'X') {\n    token = '';\n  }\n  const paddedToken = token.padEnd(MAXIMUM_TOKEN_LENGTH, '0');\n  return Long.fromString(paddedToken, true, 16);\n}\nexport function getS2TokenFromCellId(cellId) {\n  if (cellId.isZero()) {\n    return 'X';\n  }\n  let numZeroDigits = cellId.countTrailingZeros();\n  const remainder = numZeroDigits % 4;\n  numZeroDigits = (numZeroDigits - remainder) / 4;\n  const trailingZeroHexChars = numZeroDigits;\n  numZeroDigits *= 4;\n  const x = cellId.shiftRightUnsigned(numZeroDigits);\n  const hexString = x.toString(16).replace(/0+$/, '');\n  const zeroString = Array(17 - trailingZeroHexChars - hexString.length).join('0');\n  return zeroString + hexString;\n}\nexport function getS2ChildCellId(cellId, index) {\n  const newLsb = lsb(cellId).shiftRightUnsigned(2);\n  const childCellId = cellId.add(Long.fromNumber(2 * index + 1 - 4).multiply(newLsb));\n  return childCellId;\n}\nfunction lsb(cellId) {\n  return cellId.and(cellId.not().add(1));\n}\n//# sourceMappingURL=s2-token-functions.js.map","import Long from 'long';\nconst FACE_BITS = 3;\nconst MAX_LEVEL = 30;\nconst POS_BITS = 2 * MAX_LEVEL + 1;\nconst RADIAN_TO_DEGREE = 180 / Math.PI;\nexport function getS2CellFromQuadKey(hilbertQuadkey) {\n  if (hilbertQuadkey.length === 0) {\n    throw new Error(\"Invalid Hilbert quad key \".concat(hilbertQuadkey));\n  }\n  const parts = hilbertQuadkey.split('/');\n  const face = parseInt(parts[0], 10);\n  const position = parts[1];\n  const maxLevel = position.length;\n  let level = 0;\n  const point = [0, 0];\n  for (let i = maxLevel - 1; i >= 0; i--) {\n    level = maxLevel - i;\n    const bit = position[i];\n    let rx = 0;\n    let ry = 0;\n    if (bit === '1') {\n      ry = 1;\n    } else if (bit === '2') {\n      rx = 1;\n      ry = 1;\n    } else if (bit === '3') {\n      rx = 1;\n    }\n    const val = Math.pow(2, level - 1);\n    rotateAndFlipQuadrant(val, point, rx, ry);\n    point[0] += val * rx;\n    point[1] += val * ry;\n  }\n  if (face % 2 === 1) {\n    const t = point[0];\n    point[0] = point[1];\n    point[1] = t;\n  }\n  return {\n    face,\n    ij: point,\n    level\n  };\n}\nexport function getS2QuadkeyFromCellId(cellId) {\n  if (cellId.isZero()) {\n    return '';\n  }\n  let bin = cellId.toString(2);\n  while (bin.length < FACE_BITS + POS_BITS) {\n    bin = '0' + bin;\n  }\n  const lsbIndex = bin.lastIndexOf('1');\n  const faceB = bin.substring(0, 3);\n  const posB = bin.substring(3, lsbIndex);\n  const levelN = posB.length / 2;\n  const faceS = Long.fromString(faceB, true, 2).toString(10);\n  let posS = '';\n  if (levelN !== 0) {\n    posS = Long.fromString(posB, true, 2).toString(4);\n    while (posS.length < levelN) {\n      posS = '0' + posS;\n    }\n  }\n  return \"\".concat(faceS, \"/\").concat(posS);\n}\nexport function getS2CellIdFromQuadkey(hilbertQuadkey) {\n  if (hilbertQuadkey.length === 0 || hilbertQuadkey.indexOf('/') !== 1) {\n    throw new Error(\"Invalid Hilbert quad key \".concat(hilbertQuadkey));\n  }\n  let idS = '';\n  const faceS = hilbertQuadkey[0];\n  switch (faceS) {\n    case '0':\n      idS += '000';\n      break;\n    case '1':\n      idS += '001';\n      break;\n    case '2':\n      idS += '010';\n      break;\n    case '3':\n      idS += '011';\n      break;\n    case '4':\n      idS += '100';\n      break;\n    case '5':\n      idS += '101';\n      break;\n    default:\n      throw new Error(\"Invalid Hilbert quad key \".concat(hilbertQuadkey));\n  }\n  const maxLevel = hilbertQuadkey.length;\n  for (let i = 2; i < maxLevel; i++) {\n    const p = hilbertQuadkey[i];\n    switch (p) {\n      case '0':\n        idS += '00';\n        break;\n      case '1':\n        idS += '01';\n        break;\n      case '2':\n        idS += '10';\n        break;\n      case '3':\n        idS += '11';\n        break;\n      default:\n        throw new Error(\"Invalid Hilbert quad key \".concat(hilbertQuadkey));\n    }\n  }\n  idS += '1';\n  const paddedId = idS.padEnd(64, '0');\n  const id = Long.fromString(paddedId, true, 2);\n  return id;\n}\nexport function IJToST(ij, level, offsets) {\n  const maxSize = 1 << level;\n  return [(ij[0] + offsets[0]) / maxSize, (ij[1] + offsets[1]) / maxSize];\n}\nfunction singleSTtoUV(st) {\n  if (st >= 0.5) {\n    return 1 / 3.0 * (4 * st * st - 1);\n  }\n  return 1 / 3.0 * (1 - 4 * (1 - st) * (1 - st));\n}\nexport function STToUV(st) {\n  return [singleSTtoUV(st[0]), singleSTtoUV(st[1])];\n}\nexport function FaceUVToXYZ(face, _ref) {\n  let [u, v] = _ref;\n  switch (face) {\n    case 0:\n      return [1, u, v];\n    case 1:\n      return [-u, 1, v];\n    case 2:\n      return [-u, -v, 1];\n    case 3:\n      return [-1, -v, -u];\n    case 4:\n      return [v, -1, -u];\n    case 5:\n      return [v, u, -1];\n    default:\n      throw new Error('Invalid face');\n  }\n}\nexport function XYZToLngLat(_ref2) {\n  let [x, y, z] = _ref2;\n  const lat = Math.atan2(z, Math.sqrt(x * x + y * y));\n  const lng = Math.atan2(y, x);\n  return [lng * RADIAN_TO_DEGREE, lat * RADIAN_TO_DEGREE];\n}\nfunction rotateAndFlipQuadrant(n, point, rx, ry) {\n  if (ry === 0) {\n    if (rx === 1) {\n      point[0] = n - 1 - point[0];\n      point[1] = n - 1 - point[1];\n    }\n    const x = point[0];\n    point[0] = point[1];\n    point[1] = x;\n  }\n}\nexport function getS2LngLatFromS2Cell(s2Cell) {\n  const st = IJToST(s2Cell.ij, s2Cell.level, [0.5, 0.5]);\n  const uv = STToUV(st);\n  const xyz = FaceUVToXYZ(s2Cell.face, uv);\n  return XYZToLngLat(xyz);\n}\nexport function getCornerLngLats(s2Cell) {\n  const result = [];\n  const offsets = [[0.0, 0.0], [0.0, 1.0], [1.0, 1.0], [1.0, 0.0]];\n  for (let i = 0; i < 4; i++) {\n    const st = IJToST(s2Cell.ij, s2Cell.level, offsets[i]);\n    const uv = STToUV(st);\n    const xyz = FaceUVToXYZ(s2Cell.face, uv);\n    result.push(XYZToLngLat(xyz));\n  }\n  return result;\n}\n//# sourceMappingURL=s2-geometry.js.map","import { getS2CellFromQuadKey, getS2QuadkeyFromCellId } from './s2-geometry';\nimport { getS2CellIdFromToken } from '../s2-token-functions';\nexport function getS2Cell(tokenOrKey) {\n  const key = getS2QuadKey(tokenOrKey);\n  const s2cell = getS2CellFromQuadKey(key);\n  return s2cell;\n}\nexport function getS2QuadKey(tokenOrKey) {\n  if (tokenOrKey.indexOf('/') > 0) {\n    return tokenOrKey;\n  }\n  const id = getS2CellIdFromToken(tokenOrKey);\n  return getS2QuadkeyFromCellId(id);\n}\n//# sourceMappingURL=s2-cell-utils.js.map","import { IJToST, STToUV, FaceUVToXYZ, XYZToLngLat } from '../s2geometry/s2-geometry';\nconst MAX_RESOLUTION = 100;\nexport function getS2BoundaryFlatFromS2Cell(s2cell) {\n  const {\n    face,\n    ij,\n    level\n  } = s2cell;\n  const offsets = [[0, 0], [0, 1], [1, 1], [1, 0], [0, 0]];\n  const resolution = Math.max(1, Math.ceil(MAX_RESOLUTION * Math.pow(2, -level)));\n  const result = new Float64Array(4 * resolution * 2 + 2);\n  let ptIndex = 0;\n  let prevLng = 0;\n  for (let i = 0; i < 4; i++) {\n    const offset = offsets[i].slice(0);\n    const nextOffset = offsets[i + 1];\n    const stepI = (nextOffset[0] - offset[0]) / resolution;\n    const stepJ = (nextOffset[1] - offset[1]) / resolution;\n    for (let j = 0; j < resolution; j++) {\n      offset[0] += stepI;\n      offset[1] += stepJ;\n      const st = IJToST(ij, level, offset);\n      const uv = STToUV(st);\n      const xyz = FaceUVToXYZ(face, uv);\n      const lngLat = XYZToLngLat(xyz);\n      if (Math.abs(lngLat[1]) > 89.999) {\n        lngLat[0] = prevLng;\n      }\n      const deltaLng = lngLat[0] - prevLng;\n      lngLat[0] += deltaLng > 180 ? -360 : deltaLng < -180 ? 360 : 0;\n      result[ptIndex++] = lngLat[0];\n      result[ptIndex++] = lngLat[1];\n      prevLng = lngLat[0];\n    }\n  }\n  result[ptIndex++] = result[0];\n  result[ptIndex++] = result[1];\n  return result;\n}\n//# sourceMappingURL=s2-to-boundary.js.map","import { getS2BoundaryFlatFromS2Cell } from './s2-to-boundary';\nimport { getS2Cell } from '../s2geometry/s2-cell-utils';\nexport function getS2Region(s2cell) {\n  let region;\n  if (s2cell.face === 2 || s2cell.face === 5) {\n    let corners = null;\n    let len = 0;\n    for (let i = 0; i < 4; i++) {\n      const key = \"\".concat(s2cell.face, \"/\").concat(i);\n      const cell = getS2Cell(key);\n      const corns = getS2BoundaryFlatFromS2Cell(cell);\n      if (typeof corners === 'undefined' || corners === null) corners = new Float64Array(4 * corns.length);\n      corners.set(corns, len);\n      len += corns.length;\n    }\n    region = get2DRegionFromS2Corners(corners);\n  } else {\n    const corners = getS2BoundaryFlatFromS2Cell(s2cell);\n    region = get2DRegionFromS2Corners(corners);\n  }\n  return region;\n}\nfunction get2DRegionFromS2Corners(corners) {\n  if (corners.length % 2 !== 0) {\n    throw new Error('Invalid corners');\n  }\n  const longitudes = [];\n  const latitudes = [];\n  for (let i = 0; i < corners.length; i += 2) {\n    longitudes.push(corners[i]);\n    latitudes.push(corners[i + 1]);\n  }\n  longitudes.sort((a, b) => a - b);\n  latitudes.sort((a, b) => a - b);\n  return {\n    west: longitudes[0],\n    east: longitudes[longitudes.length - 1],\n    north: latitudes[latitudes.length - 1],\n    south: latitudes[0]\n  };\n}\n//# sourceMappingURL=s2-to-region.js.map","import { Vector3 } from '@math.gl/core';\nimport { makeOrientedBoundingBoxFromPoints } from '@math.gl/culling';\nimport { getS2OrientedBoundingBoxCornerPoints } from '../../utils/s2/index';\nimport { getS2LngLat } from '../../utils/s2/index';\nimport { Ellipsoid } from '@math.gl/geospatial';\nexport function convertS2BoundingVolumetoOBB(s2VolumeInfo) {\n  const token = s2VolumeInfo.token;\n  const heightInfo = {\n    minimumHeight: s2VolumeInfo.minimumHeight,\n    maximumHeight: s2VolumeInfo.maximumHeight\n  };\n  const corners = getS2OrientedBoundingBoxCornerPoints(token, heightInfo);\n  const center = getS2LngLat(token);\n  const centerLng = center[0];\n  const centerLat = center[1];\n  const point = Ellipsoid.WGS84.cartographicToCartesian([centerLng, centerLat, heightInfo.maximumHeight]);\n  const centerPointAdditional = new Vector3(point[0], point[1], point[2]);\n  corners.push(centerPointAdditional);\n  const obb = makeOrientedBoundingBoxFromPoints(corners);\n  const box = [...obb.center, ...obb.halfAxes];\n  return box;\n}\n//# sourceMappingURL=s2-corners-to-obb.js.map","import { getS2Cell } from '../s2geometry/s2-cell-utils';\nimport { getS2Region } from './s2-to-region';\nimport { Vector3 } from '@math.gl/core';\nexport function getS2OrientedBoundingBoxCornerPoints(tokenOrKey, heightInfo) {\n  const min = (heightInfo === null || heightInfo === void 0 ? void 0 : heightInfo.minimumHeight) || 0;\n  const max = (heightInfo === null || heightInfo === void 0 ? void 0 : heightInfo.maximumHeight) || 0;\n  const s2cell = getS2Cell(tokenOrKey);\n  const region = getS2Region(s2cell);\n  const W = region.west;\n  const S = region.south;\n  const E = region.east;\n  const N = region.north;\n  const points = [];\n  points.push(new Vector3(W, N, min));\n  points.push(new Vector3(E, N, min));\n  points.push(new Vector3(E, S, min));\n  points.push(new Vector3(W, S, min));\n  points.push(new Vector3(W, N, max));\n  points.push(new Vector3(E, N, max));\n  points.push(new Vector3(E, S, max));\n  points.push(new Vector3(W, S, max));\n  return points;\n}\n//# sourceMappingURL=s2-to-obb-points.js.map","import { getS2BoundaryFlatFromS2Cell } from './converters/s2-to-boundary';\nimport { getS2LngLatFromS2Cell } from './s2geometry/s2-geometry';\nimport { getS2Cell } from './s2geometry/s2-cell-utils';\nexport function getS2LngLat(s2Token) {\n  const s2cell = getS2Cell(s2Token);\n  return getS2LngLatFromS2Cell(s2cell);\n}\nexport function getS2BoundaryFlat(tokenOrKey) {\n  const s2cell = getS2Cell(tokenOrKey);\n  return getS2BoundaryFlatFromS2Cell(s2cell);\n}\n//# sourceMappingURL=s2-geometry-functions.js.map","import { Tile3DSubtreeLoader } from '../../../tile-3d-subtree-loader';\nimport { load } from '@loaders.gl/core';\nimport { getS2CellIdFromToken, getS2ChildCellId, getS2TokenFromCellId } from '../../utils/s2/index';\nimport { convertS2BoundingVolumetoOBB } from '../../utils/obb/s2-corners-to-obb';\nconst QUADTREE_DEVISION_COUNT = 4;\nconst OCTREE_DEVISION_COUNT = 8;\nconst SUBDIVISION_COUNT_MAP = {\n  QUADTREE: QUADTREE_DEVISION_COUNT,\n  OCTREE: OCTREE_DEVISION_COUNT\n};\nfunction getChildS2VolumeBox(s2VolumeBox, index, subdivisionScheme) {\n  if (s2VolumeBox !== null && s2VolumeBox !== void 0 && s2VolumeBox.box) {\n    const cellId = getS2CellIdFromToken(s2VolumeBox.s2VolumeInfo.token);\n    const childCellId = getS2ChildCellId(cellId, index);\n    const childToken = getS2TokenFromCellId(childCellId);\n    const s2ChildVolumeInfo = {\n      ...s2VolumeBox.s2VolumeInfo\n    };\n    s2ChildVolumeInfo.token = childToken;\n    switch (subdivisionScheme) {\n      case 'OCTREE':\n        const s2VolumeInfo = s2VolumeBox.s2VolumeInfo;\n        const delta = s2VolumeInfo.maximumHeight - s2VolumeInfo.minimumHeight;\n        const sizeZ = delta / 2.0;\n        const midZ = s2VolumeInfo.minimumHeight + delta / 2.0;\n        s2VolumeInfo.minimumHeight = midZ - sizeZ;\n        s2VolumeInfo.maximumHeight = midZ + sizeZ;\n        break;\n      default:\n        break;\n    }\n    const box = convertS2BoundingVolumetoOBB(s2ChildVolumeInfo);\n    const childS2VolumeBox = {\n      box,\n      s2VolumeInfo: s2ChildVolumeInfo\n    };\n    return childS2VolumeBox;\n  }\n  return undefined;\n}\nexport async function parseImplicitTiles(params) {\n  const {\n    options,\n    parentData = {\n      mortonIndex: 0,\n      x: 0,\n      y: 0,\n      z: 0\n    },\n    childIndex = 0,\n    globalData = {\n      level: 0,\n      mortonIndex: 0,\n      x: 0,\n      y: 0,\n      z: 0\n    },\n    s2VolumeBox\n  } = params;\n  let {\n    subtree,\n    level = 0\n  } = params;\n  const {\n    subdivisionScheme,\n    subtreeLevels,\n    maximumLevel,\n    contentUrlTemplate,\n    subtreesUriTemplate,\n    basePath\n  } = options;\n  const tile = {\n    children: [],\n    lodMetricValue: 0,\n    contentUrl: ''\n  };\n  const childrenPerTile = SUBDIVISION_COUNT_MAP[subdivisionScheme];\n  const childX = childIndex & 0b01;\n  const childY = childIndex >> 1 & 0b01;\n  const childZ = childIndex >> 2 & 0b01;\n  const levelOffset = (childrenPerTile ** level - 1) / (childrenPerTile - 1);\n  let childTileMortonIndex = concatBits(parentData.mortonIndex, childIndex);\n  let tileAvailabilityIndex = levelOffset + childTileMortonIndex;\n  let childTileX = concatBits(parentData.x, childX);\n  let childTileY = concatBits(parentData.y, childY);\n  let childTileZ = concatBits(parentData.z, childZ);\n  let isChildSubtreeAvailable = false;\n  if (level + 1 > subtreeLevels) {\n    isChildSubtreeAvailable = getAvailabilityResult(subtree.childSubtreeAvailability, childTileMortonIndex);\n  }\n  const x = concatBits(globalData.x, childTileX);\n  const y = concatBits(globalData.y, childTileY);\n  const z = concatBits(globalData.z, childTileZ);\n  const lev = level + globalData.level;\n  if (isChildSubtreeAvailable) {\n    const subtreePath = \"\".concat(basePath, \"/\").concat(subtreesUriTemplate);\n    const childSubtreeUrl = replaceContentUrlTemplate(subtreePath, lev, x, y, z);\n    const childSubtree = await load(childSubtreeUrl, Tile3DSubtreeLoader);\n    subtree = childSubtree;\n    globalData.mortonIndex = childTileMortonIndex;\n    globalData.x = childTileX;\n    globalData.y = childTileY;\n    globalData.z = childTileZ;\n    globalData.level = level;\n    childTileMortonIndex = 0;\n    tileAvailabilityIndex = 0;\n    childTileX = 0;\n    childTileY = 0;\n    childTileZ = 0;\n    level = 0;\n  }\n  const isTileAvailable = getAvailabilityResult(subtree.tileAvailability, tileAvailabilityIndex);\n  if (!isTileAvailable || level > maximumLevel) {\n    return tile;\n  }\n  const isContentAvailable = getAvailabilityResult(subtree.contentAvailability, tileAvailabilityIndex);\n  if (isContentAvailable) {\n    tile.contentUrl = replaceContentUrlTemplate(contentUrlTemplate, lev, x, y, z);\n  }\n  const childTileLevel = level + 1;\n  const pData = {\n    mortonIndex: childTileMortonIndex,\n    x: childTileX,\n    y: childTileY,\n    z: childTileZ\n  };\n  for (let index = 0; index < childrenPerTile; index++) {\n    const childS2VolumeBox = getChildS2VolumeBox(s2VolumeBox, index, subdivisionScheme);\n    const childTileParsed = await parseImplicitTiles({\n      subtree,\n      options,\n      parentData: pData,\n      childIndex: index,\n      level: childTileLevel,\n      globalData,\n      s2VolumeBox: childS2VolumeBox\n    });\n    if (childTileParsed.contentUrl || childTileParsed.children.length) {\n      const globalLevel = lev + 1;\n      const childCoordinates = {\n        childTileX,\n        childTileY,\n        childTileZ\n      };\n      const formattedTile = formatTileData(childTileParsed, globalLevel, childCoordinates, options, s2VolumeBox);\n      tile.children.push(formattedTile);\n    }\n  }\n  return tile;\n}\nfunction getAvailabilityResult(availabilityData, index) {\n  if ('constant' in availabilityData) {\n    return Boolean(availabilityData.constant);\n  }\n  if (availabilityData.explicitBitstream) {\n    return getBooleanValueFromBitstream(index, availabilityData.explicitBitstream);\n  }\n  return false;\n}\nfunction formatTileData(tile, level, childCoordinates, options, s2VolumeBox) {\n  const {\n    basePath,\n    refine,\n    getRefine,\n    lodMetricType,\n    getTileType,\n    rootLodMetricValue,\n    rootBoundingVolume\n  } = options;\n  const uri = tile.contentUrl && tile.contentUrl.replace(\"\".concat(basePath, \"/\"), '');\n  const lodMetricValue = rootLodMetricValue / 2 ** level;\n  const boundingVolume = s2VolumeBox !== null && s2VolumeBox !== void 0 && s2VolumeBox.box ? {\n    box: s2VolumeBox.box\n  } : rootBoundingVolume;\n  const boundingVolumeForChildTile = calculateBoundingVolumeForChildTile(level, boundingVolume, childCoordinates);\n  return {\n    children: tile.children,\n    contentUrl: tile.contentUrl,\n    content: {\n      uri\n    },\n    id: tile.contentUrl,\n    refine: getRefine(refine),\n    type: getTileType(tile),\n    lodMetricType,\n    lodMetricValue,\n    geometricError: lodMetricValue,\n    transform: tile.transform,\n    boundingVolume: boundingVolumeForChildTile\n  };\n}\nfunction calculateBoundingVolumeForChildTile(level, rootBoundingVolume, childCoordinates) {\n  if (rootBoundingVolume.region) {\n    const {\n      childTileX,\n      childTileY,\n      childTileZ\n    } = childCoordinates;\n    const [west, south, east, north, minimumHeight, maximumHeight] = rootBoundingVolume.region;\n    const boundingVolumesCount = 2 ** level;\n    const sizeX = (east - west) / boundingVolumesCount;\n    const sizeY = (north - south) / boundingVolumesCount;\n    const sizeZ = (maximumHeight - minimumHeight) / boundingVolumesCount;\n    const [childWest, childEast] = [west + sizeX * childTileX, west + sizeX * (childTileX + 1)];\n    const [childSouth, childNorth] = [south + sizeY * childTileY, south + sizeY * (childTileY + 1)];\n    const [childMinimumHeight, childMaximumHeight] = [minimumHeight + sizeZ * childTileZ, minimumHeight + sizeZ * (childTileZ + 1)];\n    return {\n      region: [childWest, childSouth, childEast, childNorth, childMinimumHeight, childMaximumHeight]\n    };\n  }\n  if (rootBoundingVolume.box) {\n    return rootBoundingVolume;\n  }\n  throw new Error(\"Unsupported bounding volume type \".concat(rootBoundingVolume));\n}\nfunction concatBits(first, second) {\n  return parseInt(first.toString(2) + second.toString(2), 2);\n}\nexport function replaceContentUrlTemplate(templateUrl, level, x, y, z) {\n  const mapUrl = generateMapUrl({\n    level,\n    x,\n    y,\n    z\n  });\n  return templateUrl.replace(/{level}|{x}|{y}|{z}/gi, matched => mapUrl[matched]);\n}\nfunction generateMapUrl(items) {\n  const mapUrl = {};\n  for (const key in items) {\n    mapUrl[\"{\".concat(key, \"}\")] = items[key];\n  }\n  return mapUrl;\n}\nfunction getBooleanValueFromBitstream(availabilityIndex, availabilityBuffer) {\n  const byteIndex = Math.floor(availabilityIndex / 8);\n  const bitIndex = availabilityIndex % 8;\n  const bitValue = availabilityBuffer[byteIndex] >> bitIndex & 1;\n  return bitValue === 1;\n}\n//# sourceMappingURL=parse-3d-implicit-tiles.js.map","import { Tile3DSubtreeLoader } from '../../tile-3d-subtree-loader';\nimport { load } from '@loaders.gl/core';\nimport { LOD_METRIC_TYPE, TILE_REFINEMENT, TILE_TYPE } from '@loaders.gl/tiles';\nimport { parseImplicitTiles, replaceContentUrlTemplate } from './helpers/parse-3d-implicit-tiles';\nimport { convertS2BoundingVolumetoOBB } from '../utils/obb/s2-corners-to-obb';\nfunction getTileType(tile) {\n  if (!tile.contentUrl) {\n    return TILE_TYPE.EMPTY;\n  }\n  const contentUrl = tile.contentUrl.split('?')[0];\n  const fileExtension = contentUrl.split('.').pop();\n  switch (fileExtension) {\n    case 'pnts':\n      return TILE_TYPE.POINTCLOUD;\n    case 'i3dm':\n    case 'b3dm':\n    case 'glb':\n    case 'gltf':\n      return TILE_TYPE.SCENEGRAPH;\n    default:\n      return fileExtension;\n  }\n}\nfunction getRefine(refine) {\n  switch (refine) {\n    case 'REPLACE':\n    case 'replace':\n      return TILE_REFINEMENT.REPLACE;\n    case 'ADD':\n    case 'add':\n      return TILE_REFINEMENT.ADD;\n    default:\n      return refine;\n  }\n}\nfunction resolveUri(uri, basePath) {\n  const urlSchemeRegex = /^[a-z][0-9a-z+.-]*:/i;\n  if (urlSchemeRegex.test(basePath)) {\n    const url = new URL(uri, \"\".concat(basePath, \"/\"));\n    return decodeURI(url.toString());\n  } else if (uri.startsWith('/')) {\n    return uri;\n  }\n  return \"\".concat(basePath, \"/\").concat(uri);\n}\nexport function normalizeTileData(tile, options) {\n  if (!tile) {\n    return null;\n  }\n  if (tile.content) {\n    const contentUri = tile.content.uri || tile.content.url;\n    tile.contentUrl = resolveUri(contentUri, options.basePath);\n  }\n  tile.id = tile.contentUrl;\n  tile.lodMetricType = LOD_METRIC_TYPE.GEOMETRIC_ERROR;\n  tile.lodMetricValue = tile.geometricError;\n  tile.transformMatrix = tile.transform;\n  tile.type = getTileType(tile);\n  tile.refine = getRefine(tile.refine);\n  return tile;\n}\nexport async function normalizeTileHeaders(tileset, options) {\n  const basePath = tileset.basePath;\n  let root;\n  const rootImplicitTilingExtension = getImplicitTilingExtensionData(tileset === null || tileset === void 0 ? void 0 : tileset.root);\n  if (rootImplicitTilingExtension && tileset.root) {\n    root = await normalizeImplicitTileHeaders(tileset.root, tileset, rootImplicitTilingExtension, options);\n  } else {\n    root = normalizeTileData(tileset.root, tileset);\n  }\n  const stack = [];\n  stack.push(root);\n  while (stack.length > 0) {\n    const tile = stack.pop() || {};\n    const children = tile.children || [];\n    for (let childHeader of children) {\n      const childImplicitTilingExtension = getImplicitTilingExtensionData(childHeader);\n      if (childImplicitTilingExtension) {\n        childHeader = await normalizeImplicitTileHeaders(childHeader, tileset, childImplicitTilingExtension, options);\n      } else {\n        normalizeTileData(childHeader, {\n          basePath\n        });\n      }\n      stack.push(childHeader);\n    }\n  }\n  return root;\n}\nexport async function normalizeImplicitTileHeaders(tile, tileset, implicitTilingExtension, options) {\n  var _tileset$root, _tile$boundingVolume$;\n  const basePath = tileset.basePath;\n  const {\n    subdivisionScheme,\n    maximumLevel,\n    subtreeLevels,\n    subtrees: {\n      uri: subtreesUriTemplate\n    }\n  } = implicitTilingExtension;\n  const replacedUrlTemplate = replaceContentUrlTemplate(subtreesUriTemplate, 0, 0, 0, 0);\n  const subtreeUrl = resolveUri(replacedUrlTemplate, basePath);\n  const subtree = await load(subtreeUrl, Tile3DSubtreeLoader, options);\n  const contentUrlTemplate = resolveUri(tile.content.uri, basePath);\n  const refine = tileset === null || tileset === void 0 ? void 0 : (_tileset$root = tileset.root) === null || _tileset$root === void 0 ? void 0 : _tileset$root.refine;\n  const rootLodMetricValue = tile.geometricError;\n  const s2VolumeInfo = (_tile$boundingVolume$ = tile.boundingVolume.extensions) === null || _tile$boundingVolume$ === void 0 ? void 0 : _tile$boundingVolume$['3DTILES_bounding_volume_S2'];\n  if (s2VolumeInfo) {\n    const box = convertS2BoundingVolumetoOBB(s2VolumeInfo);\n    const s2VolumeBox = {\n      box,\n      s2VolumeInfo\n    };\n    tile.boundingVolume = s2VolumeBox;\n  }\n  const rootBoundingVolume = tile.boundingVolume;\n  const implicitOptions = {\n    contentUrlTemplate,\n    subtreesUriTemplate,\n    subdivisionScheme,\n    subtreeLevels,\n    maximumLevel,\n    refine,\n    basePath,\n    lodMetricType: LOD_METRIC_TYPE.GEOMETRIC_ERROR,\n    rootLodMetricValue,\n    rootBoundingVolume,\n    getTileType,\n    getRefine\n  };\n  return await normalizeImplicitTileData(tile, subtree, implicitOptions);\n}\nexport async function normalizeImplicitTileData(tile, rootSubtree, options) {\n  if (!tile) {\n    return null;\n  }\n  tile.lodMetricType = LOD_METRIC_TYPE.GEOMETRIC_ERROR;\n  tile.lodMetricValue = tile.geometricError;\n  tile.transformMatrix = tile.transform;\n  const {\n    children,\n    contentUrl\n  } = await parseImplicitTiles({\n    subtree: rootSubtree,\n    options,\n    s2VolumeBox: tile\n  });\n  if (contentUrl) {\n    tile.contentUrl = contentUrl;\n    tile.content = {\n      uri: contentUrl.replace(\"\".concat(options.basePath, \"/\"), '')\n    };\n  }\n  tile.refine = getRefine(tile.refine);\n  tile.type = getTileType(tile);\n  tile.children = children;\n  tile.id = tile.contentUrl;\n  return tile;\n}\nfunction getImplicitTilingExtensionData(tile) {\n  var _tile$extensions;\n  return (tile === null || tile === void 0 ? void 0 : (_tile$extensions = tile.extensions) === null || _tile$extensions === void 0 ? void 0 : _tile$extensions['3DTILES_implicit_tiling']) || (tile === null || tile === void 0 ? void 0 : tile.implicitTiling);\n}\n//# sourceMappingURL=parse-3d-tile-header.js.map","import { path } from '@loaders.gl/loader-utils';\nimport { TILESET_TYPE, LOD_METRIC_TYPE } from '@loaders.gl/tiles';\nimport { VERSION } from './lib/utils/version';\nimport { parse3DTile } from './lib/parsers/parse-3d-tile';\nimport { normalizeTileHeaders } from './lib/parsers/parse-3d-tile-header';\nexport const Tiles3DLoader = {\n  id: '3d-tiles',\n  name: '3D Tiles',\n  module: '3d-tiles',\n  version: VERSION,\n  extensions: ['cmpt', 'pnts', 'b3dm', 'i3dm'],\n  mimeTypes: ['application/octet-stream'],\n  tests: ['cmpt', 'pnts', 'b3dm', 'i3dm'],\n  parse,\n  options: {\n    '3d-tiles': {\n      loadGLTF: true,\n      decodeQuantizedPositions: false,\n      isTileset: 'auto',\n      assetGltfUpAxis: null\n    }\n  }\n};\nfunction getBaseUri(tileset) {\n  return path.dirname(tileset.url);\n}\nasync function parseTile(arrayBuffer, options, context) {\n  const tile = {\n    content: {\n      featureIds: null\n    }\n  };\n  const byteOffset = 0;\n  await parse3DTile(arrayBuffer, byteOffset, options, context, tile.content);\n  return tile.content;\n}\nasync function parseTileset(data, options, context) {\n  var _tilesetJson$root;\n  const tilesetJson = JSON.parse(new TextDecoder().decode(data));\n  tilesetJson.loader = options.loader || Tiles3DLoader;\n  tilesetJson.url = context.url;\n  tilesetJson.queryString = context.queryString;\n  tilesetJson.basePath = getBaseUri(tilesetJson);\n  tilesetJson.root = await normalizeTileHeaders(tilesetJson, options);\n  tilesetJson.type = TILESET_TYPE.TILES3D;\n  tilesetJson.lodMetricType = LOD_METRIC_TYPE.GEOMETRIC_ERROR;\n  tilesetJson.lodMetricValue = ((_tilesetJson$root = tilesetJson.root) === null || _tilesetJson$root === void 0 ? void 0 : _tilesetJson$root.lodMetricValue) || 0;\n  return tilesetJson;\n}\nasync function parse(data, options, context) {\n  const loaderOptions = options['3d-tiles'] || {};\n  let isTileset;\n  if (loaderOptions.isTileset === 'auto') {\n    isTileset = context.url && context.url.indexOf('.json') !== -1;\n  } else {\n    isTileset = loaderOptions.isTileset;\n  }\n  if (isTileset) {\n    data = await parseTileset(data, options, context);\n  } else {\n    data = await parseTile(data, options, context);\n  }\n  return data;\n}\n//# sourceMappingURL=tiles-3d-loader.js.map","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Geometry } from '@luma.gl/core';\nimport { CompositeLayer, COORDINATE_SYSTEM, log } from '@deck.gl/core';\nimport { PointCloudLayer } from '@deck.gl/layers';\nimport { ScenegraphLayer } from '@deck.gl/mesh-layers';\nimport { default as MeshLayer } from '../mesh-layer/mesh-layer';\nimport { load } from '@loaders.gl/core';\nimport { Tileset3D, TILE_TYPE } from '@loaders.gl/tiles';\nimport { Tiles3DLoader } from '@loaders.gl/3d-tiles';\nconst SINGLE_DATA = [0];\nconst defaultProps = {\n  getPointColor: {\n    type: 'accessor',\n    value: [0, 0, 0, 255]\n  },\n  pointSize: 1.0,\n  data: '',\n  loader: Tiles3DLoader,\n  onTilesetLoad: {\n    type: 'function',\n    value: tileset3d => {}\n  },\n  onTileLoad: {\n    type: 'function',\n    value: tileHeader => {}\n  },\n  onTileUnload: {\n    type: 'function',\n    value: tileHeader => {}\n  },\n  onTileError: {\n    type: 'function',\n    value: (tile, message, url) => {}\n  },\n  _getMeshColor: {\n    type: 'function',\n    value: tileHeader => [255, 255, 255]\n  }\n};\nexport default class Tile3DLayer extends CompositeLayer {\n  constructor(...args) {\n    super(...args);\n\n    _defineProperty(this, \"state\", void 0);\n  }\n\n  initializeState() {\n    if ('onTileLoadFail' in this.props) {\n      log.removed('onTileLoadFail', 'onTileError')();\n    }\n\n    this.state = {\n      layerMap: {},\n      tileset3d: null,\n      activeViewports: {},\n      lastUpdatedViewports: null\n    };\n  }\n\n  get isLoaded() {\n    var _this$state, _this$state$tileset3d;\n\n    return Boolean(((_this$state = this.state) === null || _this$state === void 0 ? void 0 : (_this$state$tileset3d = _this$state.tileset3d) === null || _this$state$tileset3d === void 0 ? void 0 : _this$state$tileset3d.isLoaded()) && super.isLoaded);\n  }\n\n  shouldUpdateState({\n    changeFlags\n  }) {\n    return changeFlags.somethingChanged;\n  }\n\n  updateState({\n    props,\n    oldProps,\n    changeFlags\n  }) {\n    if (props.data && props.data !== oldProps.data) {\n      this._loadTileset(props.data);\n    }\n\n    if (changeFlags.viewportChanged) {\n      const {\n        activeViewports\n      } = this.state;\n      const viewportsNumber = Object.keys(activeViewports).length;\n\n      if (viewportsNumber) {\n        this._updateTileset(activeViewports);\n\n        this.state.lastUpdatedViewports = activeViewports;\n        this.state.activeViewports = {};\n      }\n    }\n\n    if (changeFlags.propsChanged) {\n      const {\n        layerMap\n      } = this.state;\n\n      for (const key in layerMap) {\n        layerMap[key].needsUpdate = true;\n      }\n    }\n  }\n\n  activateViewport(viewport) {\n    const {\n      activeViewports,\n      lastUpdatedViewports\n    } = this.state;\n    this.internalState.viewport = viewport;\n    activeViewports[viewport.id] = viewport;\n    const lastViewport = lastUpdatedViewports === null || lastUpdatedViewports === void 0 ? void 0 : lastUpdatedViewports[viewport.id];\n\n    if (!lastViewport || !viewport.equals(lastViewport)) {\n      this.setChangeFlags({\n        viewportChanged: true\n      });\n      this.setNeedsUpdate();\n    }\n  }\n\n  getPickingInfo({\n    info,\n    sourceLayer\n  }) {\n    const sourceTile = sourceLayer && sourceLayer.props.tile;\n\n    if (info.picked) {\n      info.object = sourceTile;\n    }\n\n    info.sourceTile = sourceTile;\n    return info;\n  }\n\n  filterSubLayer({\n    layer,\n    viewport\n  }) {\n    const {\n      tile\n    } = layer.props;\n    const {\n      id: viewportId\n    } = viewport;\n    return tile.selected && tile.viewportIds.includes(viewportId);\n  }\n\n  _updateAutoHighlight(info) {\n    const sourceTile = info.sourceTile;\n    const layerCache = this.state.layerMap[sourceTile === null || sourceTile === void 0 ? void 0 : sourceTile.id];\n\n    if (layerCache && layerCache.layer) {\n      layerCache.layer.updateAutoHighlight(info);\n    }\n  }\n\n  async _loadTileset(tilesetUrl) {\n    const {\n      loadOptions = {}\n    } = this.props;\n    let loader = this.props.loader || this.props.loaders;\n\n    if (Array.isArray(loader)) {\n      loader = loader[0];\n    }\n\n    const options = {\n      loadOptions: { ...loadOptions\n      }\n    };\n    let actualTilesetUrl = tilesetUrl;\n\n    if (loader.preload) {\n      const preloadOptions = await loader.preload(tilesetUrl, loadOptions);\n\n      if (preloadOptions.url) {\n        actualTilesetUrl = preloadOptions.url;\n      }\n\n      if (preloadOptions.headers) {\n        options.loadOptions.fetch = { ...options.loadOptions.fetch,\n          headers: preloadOptions.headers\n        };\n      }\n\n      Object.assign(options, preloadOptions);\n    }\n\n    const tilesetJson = await load(actualTilesetUrl, loader, options.loadOptions);\n    const tileset3d = new Tileset3D(tilesetJson, {\n      onTileLoad: this._onTileLoad.bind(this),\n      onTileUnload: this._onTileUnload.bind(this),\n      onTileError: this.props.onTileError,\n      ...options\n    });\n    this.setState({\n      tileset3d,\n      layerMap: {}\n    });\n\n    this._updateTileset(this.state.activeViewports);\n\n    this.props.onTilesetLoad(tileset3d);\n  }\n\n  _onTileLoad(tileHeader) {\n    const {\n      lastUpdatedViewports\n    } = this.state;\n    this.props.onTileLoad(tileHeader);\n\n    this._updateTileset(lastUpdatedViewports);\n\n    this.setNeedsUpdate();\n  }\n\n  _onTileUnload(tileHeader) {\n    delete this.state.layerMap[tileHeader.id];\n    this.props.onTileUnload(tileHeader);\n  }\n\n  _updateTileset(viewports) {\n    if (!viewports) {\n      return;\n    }\n\n    const {\n      tileset3d\n    } = this.state;\n    const {\n      timeline\n    } = this.context;\n    const viewportsNumber = Object.keys(viewports).length;\n\n    if (!timeline || !viewportsNumber || !tileset3d) {\n      return;\n    }\n\n    tileset3d.selectTiles(Object.values(viewports)).then(frameNumber => {\n      const tilesetChanged = this.state.frameNumber !== frameNumber;\n\n      if (tilesetChanged) {\n        this.setState({\n          frameNumber\n        });\n      }\n    });\n  }\n\n  _getSubLayer(tileHeader, oldLayer) {\n    if (!tileHeader.content) {\n      return null;\n    }\n\n    switch (tileHeader.type) {\n      case TILE_TYPE.POINTCLOUD:\n        return this._makePointCloudLayer(tileHeader, oldLayer);\n\n      case TILE_TYPE.SCENEGRAPH:\n        return this._make3DModelLayer(tileHeader);\n\n      case TILE_TYPE.MESH:\n        return this._makeSimpleMeshLayer(tileHeader, oldLayer);\n\n      default:\n        throw new Error(\"Tile3DLayer: Failed to render layer of type \".concat(tileHeader.content.type));\n    }\n  }\n\n  _makePointCloudLayer(tileHeader, oldLayer) {\n    const {\n      attributes,\n      pointCount,\n      constantRGBA,\n      cartographicOrigin,\n      modelMatrix\n    } = tileHeader.content;\n    const {\n      positions,\n      normals,\n      colors\n    } = attributes;\n\n    if (!positions) {\n      return null;\n    }\n\n    const data = oldLayer && oldLayer.props.data || {\n      header: {\n        vertexCount: pointCount\n      },\n      attributes: {\n        POSITION: positions,\n        NORMAL: normals,\n        COLOR_0: colors\n      }\n    };\n    const {\n      pointSize,\n      getPointColor\n    } = this.props;\n    const SubLayerClass = this.getSubLayerClass('pointcloud', PointCloudLayer);\n    return new SubLayerClass({\n      pointSize\n    }, this.getSubLayerProps({\n      id: 'pointcloud'\n    }), {\n      id: \"\".concat(this.id, \"-pointcloud-\").concat(tileHeader.id),\n      tile: tileHeader,\n      data,\n      coordinateSystem: COORDINATE_SYSTEM.METER_OFFSETS,\n      coordinateOrigin: cartographicOrigin,\n      modelMatrix,\n      getColor: constantRGBA || getPointColor,\n      _offset: 0\n    });\n  }\n\n  _make3DModelLayer(tileHeader) {\n    const {\n      gltf,\n      instances,\n      cartographicOrigin,\n      modelMatrix\n    } = tileHeader.content;\n    const SubLayerClass = this.getSubLayerClass('scenegraph', ScenegraphLayer);\n    return new SubLayerClass({\n      _lighting: 'pbr'\n    }, this.getSubLayerProps({\n      id: 'scenegraph'\n    }), {\n      id: \"\".concat(this.id, \"-scenegraph-\").concat(tileHeader.id),\n      tile: tileHeader,\n      data: instances || SINGLE_DATA,\n      scenegraph: gltf,\n      coordinateSystem: COORDINATE_SYSTEM.METER_OFFSETS,\n      coordinateOrigin: cartographicOrigin,\n      modelMatrix,\n      getTransformMatrix: instance => instance.modelMatrix,\n      getPosition: [0, 0, 0],\n      _offset: 0\n    });\n  }\n\n  _makeSimpleMeshLayer(tileHeader, oldLayer) {\n    const content = tileHeader.content;\n    const {\n      attributes,\n      indices,\n      modelMatrix,\n      cartographicOrigin,\n      coordinateSystem = COORDINATE_SYSTEM.METER_OFFSETS,\n      material,\n      featureIds\n    } = content;\n    const {\n      _getMeshColor\n    } = this.props;\n    const geometry = oldLayer && oldLayer.props.mesh || new Geometry({\n      drawMode: 4,\n      attributes: getMeshGeometry(attributes),\n      indices\n    });\n    const SubLayerClass = this.getSubLayerClass('mesh', MeshLayer);\n    return new SubLayerClass(this.getSubLayerProps({\n      id: 'mesh'\n    }), {\n      id: \"\".concat(this.id, \"-mesh-\").concat(tileHeader.id),\n      tile: tileHeader,\n      mesh: geometry,\n      data: SINGLE_DATA,\n      getColor: _getMeshColor(tileHeader),\n      pbrMaterial: material,\n      modelMatrix,\n      coordinateOrigin: cartographicOrigin,\n      coordinateSystem,\n      featureIds,\n      _offset: 0\n    });\n  }\n\n  renderLayers() {\n    const {\n      tileset3d,\n      layerMap\n    } = this.state;\n\n    if (!tileset3d) {\n      return null;\n    }\n\n    return tileset3d.tiles.map(tile => {\n      const layerCache = layerMap[tile.id] = layerMap[tile.id] || {\n        tile\n      };\n      let {\n        layer\n      } = layerCache;\n\n      if (tile.selected) {\n        if (!layer) {\n          layer = this._getSubLayer(tile);\n        } else if (layerCache.needsUpdate) {\n          layer = this._getSubLayer(tile, layer);\n          layerCache.needsUpdate = false;\n        }\n      }\n\n      layerCache.layer = layer;\n      return layer;\n    }).filter(Boolean);\n  }\n\n}\n\n_defineProperty(Tile3DLayer, \"defaultProps\", defaultProps);\n\n_defineProperty(Tile3DLayer, \"layerName\", 'Tile3DLayer');\n\nfunction getMeshGeometry(contentAttributes) {\n  const attributes = {};\n  attributes.positions = { ...contentAttributes.positions,\n    value: new Float32Array(contentAttributes.positions.value)\n  };\n\n  if (contentAttributes.normals) {\n    attributes.normals = contentAttributes.normals;\n  }\n\n  if (contentAttributes.texCoords) {\n    attributes.texCoords = contentAttributes.texCoords;\n  }\n\n  if (contentAttributes.colors) {\n    attributes.colors = contentAttributes.colors;\n  }\n\n  if (contentAttributes.uvRegions) {\n    attributes.uvRegions = contentAttributes.uvRegions;\n  }\n\n  return attributes;\n}\n//# sourceMappingURL=tile-3d-layer.js.map","export const VERSION = typeof \"3.4.15\" !== 'undefined' ? \"3.4.15\" : 'latest';\n//# sourceMappingURL=version.js.map","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { CompositeLayer, log } from '@deck.gl/core';\nimport { SimpleMeshLayer } from '@deck.gl/mesh-layers';\nimport { COORDINATE_SYSTEM } from '@deck.gl/core';\nimport { TerrainWorkerLoader } from '@loaders.gl/terrain';\nimport TileLayer from '../tile-layer/tile-layer';\nimport { urlType, getURLFromTemplate } from '../tileset-2d';\nconst DUMMY_DATA = [1];\nconst defaultProps = { ...TileLayer.defaultProps,\n  elevationData: urlType,\n  texture: { ...urlType,\n    optional: true\n  },\n  meshMaxError: {\n    type: 'number',\n    value: 4.0\n  },\n  bounds: {\n    type: 'array',\n    value: null,\n    optional: true,\n    compare: true\n  },\n  color: {\n    type: 'color',\n    value: [255, 255, 255]\n  },\n  elevationDecoder: {\n    type: 'object',\n    value: {\n      rScaler: 1,\n      gScaler: 0,\n      bScaler: 0,\n      offset: 0\n    }\n  },\n  workerUrl: '',\n  wireframe: false,\n  material: true,\n  loaders: [TerrainWorkerLoader]\n};\n\nfunction urlTemplateToUpdateTrigger(template) {\n  if (Array.isArray(template)) {\n    return template.join(';');\n  }\n\n  return template || '';\n}\n\nexport default class TerrainLayer extends CompositeLayer {\n  constructor(...args) {\n    super(...args);\n\n    _defineProperty(this, \"state\", void 0);\n  }\n\n  updateState({\n    props,\n    oldProps\n  }) {\n    const elevationDataChanged = props.elevationData !== oldProps.elevationData;\n\n    if (elevationDataChanged) {\n      const {\n        elevationData\n      } = props;\n      const isTiled = elevationData && (Array.isArray(elevationData) || elevationData.includes('{x}') && elevationData.includes('{y}'));\n      this.setState({\n        isTiled\n      });\n    }\n\n    const shouldReload = elevationDataChanged || props.meshMaxError !== oldProps.meshMaxError || props.elevationDecoder !== oldProps.elevationDecoder || props.bounds !== oldProps.bounds;\n\n    if (!this.state.isTiled && shouldReload) {\n      const terrain = this.loadTerrain(props);\n      this.setState({\n        terrain\n      });\n    }\n\n    if (props.workerUrl) {\n      log.removed('workerUrl', 'loadOptions.terrain.workerUrl')();\n    }\n  }\n\n  loadTerrain({\n    elevationData,\n    bounds,\n    elevationDecoder,\n    meshMaxError,\n    signal\n  }) {\n    var _loadOptions;\n\n    if (!elevationData) {\n      return null;\n    }\n\n    let loadOptions = this.getLoadOptions();\n    loadOptions = { ...loadOptions,\n      terrain: {\n        skirtHeight: this.state.isTiled ? meshMaxError * 2 : 0,\n        ...((_loadOptions = loadOptions) === null || _loadOptions === void 0 ? void 0 : _loadOptions.terrain),\n        bounds,\n        meshMaxError,\n        elevationDecoder\n      }\n    };\n    const {\n      fetch\n    } = this.props;\n    return fetch(elevationData, {\n      propName: 'elevationData',\n      layer: this,\n      loadOptions,\n      signal\n    });\n  }\n\n  getTiledTerrainData(tile) {\n    const {\n      elevationData,\n      fetch,\n      texture,\n      elevationDecoder,\n      meshMaxError\n    } = this.props;\n    const {\n      viewport\n    } = this.context;\n    const dataUrl = getURLFromTemplate(elevationData, tile);\n    const textureUrl = texture && getURLFromTemplate(texture, tile);\n    const {\n      signal\n    } = tile;\n    let bottomLeft = [0, 0];\n    let topRight = [0, 0];\n\n    if (viewport.isGeospatial) {\n      const bbox = tile.bbox;\n      bottomLeft = viewport.projectFlat([bbox.west, bbox.south]);\n      topRight = viewport.projectFlat([bbox.east, bbox.north]);\n    } else {\n      const bbox = tile.bbox;\n      bottomLeft = [bbox.left, bbox.bottom];\n      topRight = [bbox.right, bbox.top];\n    }\n\n    const bounds = [bottomLeft[0], bottomLeft[1], topRight[0], topRight[1]];\n    const terrain = this.loadTerrain({\n      elevationData: dataUrl,\n      bounds,\n      elevationDecoder,\n      meshMaxError,\n      signal\n    });\n    const surface = textureUrl ? fetch(textureUrl, {\n      propName: 'texture',\n      layer: this,\n      loaders: [],\n      signal\n    }).catch(_ => null) : Promise.resolve(null);\n    return Promise.all([terrain, surface]);\n  }\n\n  renderSubLayers(props) {\n    const SubLayerClass = this.getSubLayerClass('mesh', SimpleMeshLayer);\n    const {\n      color,\n      wireframe,\n      material\n    } = this.props;\n    const {\n      data\n    } = props;\n\n    if (!data) {\n      return null;\n    }\n\n    const [mesh, texture] = data;\n    return new SubLayerClass(props, {\n      data: DUMMY_DATA,\n      mesh,\n      texture,\n      _instanced: false,\n      coordinateSystem: COORDINATE_SYSTEM.CARTESIAN,\n      getPosition: d => [0, 0, 0],\n      getColor: color,\n      wireframe,\n      material\n    });\n  }\n\n  onViewportLoad(tiles) {\n    if (!tiles) {\n      return;\n    }\n\n    const {\n      zRange\n    } = this.state;\n    const ranges = tiles.map(tile => tile.content).filter(Boolean).map(arr => {\n      const bounds = arr[0].header.boundingBox;\n      return bounds.map(bound => bound[2]);\n    });\n\n    if (ranges.length === 0) {\n      return;\n    }\n\n    const minZ = Math.min(...ranges.map(x => x[0]));\n    const maxZ = Math.max(...ranges.map(x => x[1]));\n\n    if (!zRange || minZ < zRange[0] || maxZ > zRange[1]) {\n      this.setState({\n        zRange: [minZ, maxZ]\n      });\n    }\n  }\n\n  renderLayers() {\n    const {\n      color,\n      material,\n      elevationData,\n      texture,\n      wireframe,\n      meshMaxError,\n      elevationDecoder,\n      tileSize,\n      maxZoom,\n      minZoom,\n      extent,\n      maxRequests,\n      onTileLoad,\n      onTileUnload,\n      onTileError,\n      maxCacheSize,\n      maxCacheByteSize,\n      refinementStrategy\n    } = this.props;\n\n    if (this.state.isTiled) {\n      return new TileLayer(this.getSubLayerProps({\n        id: 'tiles'\n      }), {\n        getTileData: this.getTiledTerrainData.bind(this),\n        renderSubLayers: this.renderSubLayers.bind(this),\n        updateTriggers: {\n          getTileData: {\n            elevationData: urlTemplateToUpdateTrigger(elevationData),\n            texture: urlTemplateToUpdateTrigger(texture),\n            meshMaxError,\n            elevationDecoder\n          }\n        },\n        onViewportLoad: this.onViewportLoad.bind(this),\n        zRange: this.state.zRange || null,\n        tileSize,\n        maxZoom,\n        minZoom,\n        extent,\n        maxRequests,\n        onTileLoad,\n        onTileUnload,\n        onTileError,\n        maxCacheSize,\n        maxCacheByteSize,\n        refinementStrategy\n      });\n    }\n\n    if (!elevationData) {\n      return null;\n    }\n\n    const SubLayerClass = this.getSubLayerClass('mesh', SimpleMeshLayer);\n    return new SubLayerClass(this.getSubLayerProps({\n      id: 'mesh'\n    }), {\n      data: DUMMY_DATA,\n      mesh: this.state.terrain,\n      texture,\n      _instanced: false,\n      getPosition: d => [0, 0, 0],\n      getColor: color,\n      material,\n      wireframe\n    });\n  }\n\n}\n\n_defineProperty(TerrainLayer, \"defaultProps\", defaultProps);\n\n_defineProperty(TerrainLayer, \"layerName\", 'TerrainLayer');\n//# sourceMappingURL=terrain-layer.js.map","import { VERSION } from './lib/utils/version';\nexport const TerrainLoader = {\n  name: 'Terrain',\n  id: 'terrain',\n  module: 'terrain',\n  version: VERSION,\n  worker: true,\n  extensions: ['png', 'pngraw', 'jpg', 'jpeg', 'gif', 'webp', 'bmp'],\n  mimeTypes: ['image/png', 'image/jpeg', 'image/gif', 'image/webp', 'image/bmp'],\n  options: {\n    terrain: {\n      tesselator: 'auto',\n      bounds: null,\n      meshMaxError: 10,\n      elevationDecoder: {\n        rScaler: 1,\n        gScaler: 0,\n        bScaler: 0,\n        offset: 0\n      },\n      skirtHeight: null\n    }\n  }\n};\nexport const _typecheckTerrainWorkerLoader = TerrainLoader;\n//# sourceMappingURL=terrain-loader.js.map","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { LayerExtension } from '@deck.gl/core';\nconst defaultProps = {\n  clipBounds: [0, 0, 1, 1],\n  clipByInstance: undefined\n};\nconst shaderFunction = \"\\nuniform vec4 clip_bounds;\\n\\nbool clip_isInBounds(vec2 position) {\\n  return position.x >= clip_bounds[0] && position.y >= clip_bounds[1] && position.x < clip_bounds[2] && position.y < clip_bounds[3];\\n}\\n\";\nconst shaderModuleVs = {\n  name: 'clip-vs',\n  vs: shaderFunction\n};\nconst injectionVs = {\n  'vs:#decl': \"\\nvarying float clip_isVisible;\\n\",\n  'vs:DECKGL_FILTER_GL_POSITION': \"\\n  clip_isVisible = float(clip_isInBounds(geometry.worldPosition.xy));\\n\",\n  'fs:#decl': \"\\nvarying float clip_isVisible;\\n\",\n  'fs:DECKGL_FILTER_COLOR': \"\\n  if (clip_isVisible < 0.5) discard;\\n\"\n};\nconst shaderModuleFs = {\n  name: 'clip-fs',\n  fs: shaderFunction\n};\nconst injectionFs = {\n  'vs:#decl': \"\\nvarying vec2 clip_commonPosition;\\n\",\n  'vs:DECKGL_FILTER_GL_POSITION': \"\\n  clip_commonPosition = geometry.position.xy;\\n\",\n  'fs:#decl': \"\\nvarying vec2 clip_commonPosition;\\n\",\n  'fs:DECKGL_FILTER_COLOR': \"\\n  if (!clip_isInBounds(clip_commonPosition)) discard;\\n\"\n};\nexport default class ClipExtension extends LayerExtension {\n  getShaders() {\n    let clipByInstance = ('instancePositions' in this.getAttributeManager().attributes);\n\n    if (this.props.clipByInstance !== undefined) {\n      clipByInstance = Boolean(this.props.clipByInstance);\n    }\n\n    this.state.clipByInstance = clipByInstance;\n    return clipByInstance ? {\n      modules: [shaderModuleVs],\n      inject: injectionVs\n    } : {\n      modules: [shaderModuleFs],\n      inject: injectionFs\n    };\n  }\n\n  draw({\n    uniforms\n  }) {\n    const {\n      clipBounds\n    } = this.props;\n\n    if (this.state.clipByInstance) {\n      uniforms.clip_bounds = clipBounds;\n    } else {\n      const corner0 = this.projectPosition([clipBounds[0], clipBounds[1], 0]);\n      const corner1 = this.projectPosition([clipBounds[2], clipBounds[3], 0]);\n      uniforms.clip_bounds = [Math.min(corner0[0], corner1[0]), Math.min(corner0[1], corner1[1]), Math.max(corner0[0], corner1[0]), Math.max(corner0[1], corner1[1])];\n    }\n  }\n\n}\n\n_defineProperty(ClipExtension, \"defaultProps\", defaultProps);\n\n_defineProperty(ClipExtension, \"extensionName\", 'ClipExtension');\n//# sourceMappingURL=clip-extension.js.map","export function binaryToGeojson(data, options) {\n  const globalFeatureId = options === null || options === void 0 ? void 0 : options.globalFeatureId;\n  if (globalFeatureId !== undefined) {\n    return getSingleFeature(data, globalFeatureId);\n  }\n  return parseFeatures(data, options === null || options === void 0 ? void 0 : options.type);\n}\nexport function binaryToGeoJson(data, type) {\n  let format = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'feature';\n  switch (format) {\n    case 'feature':\n      return parseFeatures(data, type);\n    case 'geometry':\n      return binaryToGeometry(data);\n    default:\n      throw new Error(format);\n  }\n}\nfunction getSingleFeature(data, globalFeatureId) {\n  const dataArray = normalizeInput(data);\n  for (const data of dataArray) {\n    let lastIndex = 0;\n    let lastValue = data.featureIds.value[0];\n    for (let i = 0; i < data.featureIds.value.length; i++) {\n      const currValue = data.featureIds.value[i];\n      if (currValue === lastValue) {\n        continue;\n      }\n      if (globalFeatureId === data.globalFeatureIds.value[lastIndex]) {\n        return parseFeature(data, lastIndex, i);\n      }\n      lastIndex = i;\n      lastValue = currValue;\n    }\n    if (globalFeatureId === data.globalFeatureIds.value[lastIndex]) {\n      return parseFeature(data, lastIndex, data.featureIds.value.length);\n    }\n  }\n  throw new Error(\"featureId:\".concat(globalFeatureId, \" not found\"));\n}\nfunction parseFeatures(data, type) {\n  const dataArray = normalizeInput(data, type);\n  return parseFeatureCollection(dataArray);\n}\nexport function binaryToGeometry(data, startIndex, endIndex) {\n  switch (data.type) {\n    case 'Point':\n      return pointToGeoJson(data, startIndex, endIndex);\n    case 'LineString':\n      return lineStringToGeoJson(data, startIndex, endIndex);\n    case 'Polygon':\n      return polygonToGeoJson(data, startIndex, endIndex);\n    default:\n      const unexpectedInput = data;\n      throw new Error(\"Unsupported geometry type: \".concat(unexpectedInput === null || unexpectedInput === void 0 ? void 0 : unexpectedInput.type));\n  }\n}\nfunction normalizeInput(data, type) {\n  const isHeterogeneousType = Boolean(data.points || data.lines || data.polygons);\n  if (!isHeterogeneousType) {\n    data.type = type || parseType(data);\n    return [data];\n  }\n  const features = [];\n  if (data.points) {\n    data.points.type = 'Point';\n    features.push(data.points);\n  }\n  if (data.lines) {\n    data.lines.type = 'LineString';\n    features.push(data.lines);\n  }\n  if (data.polygons) {\n    data.polygons.type = 'Polygon';\n    features.push(data.polygons);\n  }\n  return features;\n}\nfunction parseFeatureCollection(dataArray) {\n  const features = [];\n  for (const data of dataArray) {\n    if (data.featureIds.value.length === 0) {\n      continue;\n    }\n    let lastIndex = 0;\n    let lastValue = data.featureIds.value[0];\n    for (let i = 0; i < data.featureIds.value.length; i++) {\n      const currValue = data.featureIds.value[i];\n      if (currValue === lastValue) {\n        continue;\n      }\n      features.push(parseFeature(data, lastIndex, i));\n      lastIndex = i;\n      lastValue = currValue;\n    }\n    features.push(parseFeature(data, lastIndex, data.featureIds.value.length));\n  }\n  return features;\n}\nfunction parseFeature(data, startIndex, endIndex) {\n  const geometry = binaryToGeometry(data, startIndex, endIndex);\n  const properties = parseProperties(data, startIndex, endIndex);\n  const fields = parseFields(data, startIndex, endIndex);\n  return {\n    type: 'Feature',\n    geometry,\n    properties,\n    ...fields\n  };\n}\nfunction parseFields(data) {\n  let startIndex = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n  let endIndex = arguments.length > 2 ? arguments[2] : undefined;\n  return data.fields && data.fields[data.featureIds.value[startIndex]];\n}\nfunction parseProperties(data) {\n  let startIndex = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n  let endIndex = arguments.length > 2 ? arguments[2] : undefined;\n  const properties = Object.assign({}, data.properties[data.featureIds.value[startIndex]]);\n  for (const key in data.numericProps) {\n    properties[key] = data.numericProps[key].value[startIndex];\n  }\n  return properties;\n}\nfunction polygonToGeoJson(data) {\n  let startIndex = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : -Infinity;\n  let endIndex = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : Infinity;\n  const {\n    positions\n  } = data;\n  const polygonIndices = data.polygonIndices.value.filter(x => x >= startIndex && x <= endIndex);\n  const primitivePolygonIndices = data.primitivePolygonIndices.value.filter(x => x >= startIndex && x <= endIndex);\n  const multi = polygonIndices.length > 2;\n  if (!multi) {\n    const coordinates = [];\n    for (let i = 0; i < primitivePolygonIndices.length - 1; i++) {\n      const startRingIndex = primitivePolygonIndices[i];\n      const endRingIndex = primitivePolygonIndices[i + 1];\n      const ringCoordinates = ringToGeoJson(positions, startRingIndex, endRingIndex);\n      coordinates.push(ringCoordinates);\n    }\n    return {\n      type: 'Polygon',\n      coordinates\n    };\n  }\n  const coordinates = [];\n  for (let i = 0; i < polygonIndices.length - 1; i++) {\n    const startPolygonIndex = polygonIndices[i];\n    const endPolygonIndex = polygonIndices[i + 1];\n    const polygonCoordinates = polygonToGeoJson(data, startPolygonIndex, endPolygonIndex).coordinates;\n    coordinates.push(polygonCoordinates);\n  }\n  return {\n    type: 'MultiPolygon',\n    coordinates\n  };\n}\nfunction lineStringToGeoJson(data) {\n  let startIndex = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : -Infinity;\n  let endIndex = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : Infinity;\n  const {\n    positions\n  } = data;\n  const pathIndices = data.pathIndices.value.filter(x => x >= startIndex && x <= endIndex);\n  const multi = pathIndices.length > 2;\n  if (!multi) {\n    const coordinates = ringToGeoJson(positions, pathIndices[0], pathIndices[1]);\n    return {\n      type: 'LineString',\n      coordinates\n    };\n  }\n  const coordinates = [];\n  for (let i = 0; i < pathIndices.length - 1; i++) {\n    const ringCoordinates = ringToGeoJson(positions, pathIndices[i], pathIndices[i + 1]);\n    coordinates.push(ringCoordinates);\n  }\n  return {\n    type: 'MultiLineString',\n    coordinates\n  };\n}\nfunction pointToGeoJson(data, startIndex, endIndex) {\n  const {\n    positions\n  } = data;\n  const coordinates = ringToGeoJson(positions, startIndex, endIndex);\n  const multi = coordinates.length > 1;\n  if (multi) {\n    return {\n      type: 'MultiPoint',\n      coordinates\n    };\n  }\n  return {\n    type: 'Point',\n    coordinates: coordinates[0]\n  };\n}\nfunction ringToGeoJson(positions, startIndex, endIndex) {\n  startIndex = startIndex || 0;\n  endIndex = endIndex || positions.value.length / positions.size;\n  const ringCoordinates = [];\n  for (let j = startIndex; j < endIndex; j++) {\n    const coord = Array();\n    for (let k = j * positions.size; k < (j + 1) * positions.size; k++) {\n      coord.push(Number(positions.value[k]));\n    }\n    ringCoordinates.push(coord);\n  }\n  return ringCoordinates;\n}\nfunction parseType(data) {\n  if (data.pathIndices) {\n    return 'LineString';\n  }\n  if (data.polygonIndices) {\n    return 'Polygon';\n  }\n  return 'Point';\n}\n//# sourceMappingURL=binary-to-geojson.js.map","import { lerp } from '@math.gl/core';\nconst availableTransformations = {\n  Point,\n  MultiPoint,\n  LineString,\n  MultiLineString,\n  Polygon,\n  MultiPolygon\n};\n\nfunction Point([pointX, pointY], [nw, se], viewport) {\n  const x = lerp(nw[0], se[0], pointX);\n  const y = lerp(nw[1], se[1], pointY);\n  return viewport.unprojectFlat([x, y]);\n}\n\nfunction getPoints(geometry, bbox, viewport) {\n  return geometry.map(g => Point(g, bbox, viewport));\n}\n\nfunction MultiPoint(multiPoint, bbox, viewport) {\n  return getPoints(multiPoint, bbox, viewport);\n}\n\nfunction LineString(line, bbox, viewport) {\n  return getPoints(line, bbox, viewport);\n}\n\nfunction MultiLineString(multiLineString, bbox, viewport) {\n  return multiLineString.map(lineString => LineString(lineString, bbox, viewport));\n}\n\nfunction Polygon(polygon, bbox, viewport) {\n  return polygon.map(polygonRing => getPoints(polygonRing, bbox, viewport));\n}\n\nfunction MultiPolygon(multiPolygon, bbox, viewport) {\n  return multiPolygon.map(polygon => Polygon(polygon, bbox, viewport));\n}\n\nexport function transform(geometry, bbox, viewport) {\n  const nw = viewport.projectFlat([bbox.west, bbox.north]);\n  const se = viewport.projectFlat([bbox.east, bbox.south]);\n  const projectedBbox = [nw, se];\n  return { ...geometry,\n    coordinates: availableTransformations[geometry.type](geometry.coordinates, projectedBbox, viewport)\n  };\n}\n//# sourceMappingURL=coordinate-transform.js.map","const GEOM_TYPES = ['points', 'lines', 'polygons'];\nexport default function findIndexBinary(data, uniqueIdProperty, featureId, layerName) {\n  for (const gt of GEOM_TYPES) {\n    const index = data[gt] && findIndexByType(data[gt], uniqueIdProperty, featureId, layerName);\n\n    if (index >= 0) {\n      return index;\n    }\n  }\n\n  return -1;\n}\n\nfunction findIndexByType(geomData, uniqueIdProperty, featureId, layerName) {\n  const featureIds = geomData.featureIds.value;\n\n  if (!featureIds.length) {\n    return -1;\n  }\n\n  let startFeatureIndex = 0;\n  let endFeatureIndex = featureIds[featureIds.length - 1] + 1;\n\n  if (layerName) {\n    const layerRange = getLayerRange(geomData, layerName);\n\n    if (layerRange) {\n      startFeatureIndex = layerRange[0];\n      endFeatureIndex = layerRange[1] + 1;\n    } else {\n      return -1;\n    }\n  }\n\n  let featureIndex = -1;\n\n  if (uniqueIdProperty in geomData.numericProps) {\n    const vertexIndex = geomData.numericProps[uniqueIdProperty].value.findIndex((x, i) => x === featureId && featureIds[i] >= startFeatureIndex && featureIds[i] < endFeatureIndex);\n    return vertexIndex >= 0 ? geomData.globalFeatureIds.value[vertexIndex] : -1;\n  } else if (uniqueIdProperty) {\n    featureIndex = findIndex(geomData.properties, elem => elem[uniqueIdProperty] === featureId, startFeatureIndex, endFeatureIndex);\n  } else if (geomData.fields) {\n    featureIndex = findIndex(geomData.fields, elem => elem.id === featureId, startFeatureIndex, endFeatureIndex);\n  }\n\n  return featureIndex >= 0 ? getGlobalFeatureId(geomData, featureIndex) : -1;\n}\n\nfunction getLayerRange(geomData, layerName) {\n  if (!geomData.__layers) {\n    const layerNames = {};\n    const {\n      properties\n    } = geomData;\n\n    for (let i = 0; i < properties.length; i++) {\n      const {\n        layerName: key\n      } = properties[i];\n\n      if (!key) {} else if (layerNames[key]) {\n        layerNames[key][1] = i;\n      } else {\n        layerNames[key] = [i, i];\n      }\n    }\n\n    geomData.__layers = layerNames;\n  }\n\n  return geomData.__layers[layerName];\n}\n\nfunction getGlobalFeatureId(geomData, featureIndex) {\n  if (!geomData.__ids) {\n    const result = [];\n    const featureIds = geomData.featureIds.value;\n    const globalFeatureIds = geomData.globalFeatureIds.value;\n\n    for (let i = 0; i < featureIds.length; i++) {\n      result[featureIds[i]] = globalFeatureIds[i];\n    }\n\n    geomData.__ids = result;\n  }\n\n  return geomData.__ids[featureIndex];\n}\n\nfunction findIndex(array, predicate, startIndex, endIndex) {\n  for (let i = startIndex; i < endIndex; i++) {\n    if (predicate(array[i], i)) {\n      return i;\n    }\n  }\n\n  return -1;\n}\n//# sourceMappingURL=find-index-binary.js.map","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { log, COORDINATE_SYSTEM } from '@deck.gl/core';\nimport { GeoJsonLayer } from '@deck.gl/layers';\nimport { ClipExtension } from '@deck.gl/extensions';\nimport { Matrix4 } from '@math.gl/core';\nimport { MVTWorkerLoader } from '@loaders.gl/mvt';\nimport { binaryToGeojson } from '@loaders.gl/gis';\nimport { transform } from './coordinate-transform';\nimport findIndexBinary from './find-index-binary';\nimport TileLayer from '../tile-layer/tile-layer';\nimport { urlType, getURLFromTemplate, isGeoBoundingBox, isURLTemplate } from '../tileset-2d';\nconst WORLD_SIZE = 512;\nconst defaultProps = { ...GeoJsonLayer.defaultProps,\n  data: urlType,\n  onDataLoad: {\n    type: 'function',\n    value: null,\n    optional: true,\n    compare: false\n  },\n  uniqueIdProperty: '',\n  highlightedFeatureId: null,\n  loaders: [MVTWorkerLoader],\n  binary: true\n};\nexport default class MVTLayer extends TileLayer {\n  constructor(...args) {\n    super(...args);\n\n    _defineProperty(this, \"state\", void 0);\n  }\n\n  initializeState() {\n    super.initializeState();\n    const binary = this.context.viewport.resolution !== undefined ? false : this.props.binary;\n    this.setState({\n      binary,\n      data: null,\n      tileJSON: null,\n      hoveredFeatureId: null,\n      hoveredFeatureLayerName: null\n    });\n  }\n\n  get isLoaded() {\n    var _this$state;\n\n    return Boolean(((_this$state = this.state) === null || _this$state === void 0 ? void 0 : _this$state.data) && super.isLoaded);\n  }\n\n  updateState({\n    props,\n    oldProps,\n    context,\n    changeFlags\n  }) {\n    var _this$state2;\n\n    if (changeFlags.dataChanged) {\n      this._updateTileData();\n    }\n\n    if ((_this$state2 = this.state) !== null && _this$state2 !== void 0 && _this$state2.data) {\n      super.updateState({\n        props,\n        oldProps,\n        context,\n        changeFlags\n      });\n\n      this._setWGS84PropertyForTiles();\n    }\n\n    const {\n      highlightColor\n    } = props;\n\n    if (highlightColor !== oldProps.highlightColor && Array.isArray(highlightColor)) {\n      this.setState({\n        highlightColor\n      });\n    }\n  }\n\n  async _updateTileData() {\n    let data = this.props.data;\n    let tileJSON = null;\n\n    if (typeof data === 'string' && !isURLTemplate(data)) {\n      const {\n        onDataLoad,\n        fetch\n      } = this.props;\n      this.setState({\n        data: null,\n        tileJSON: null\n      });\n\n      try {\n        tileJSON = await fetch(data, {\n          propName: 'data',\n          layer: this,\n          loaders: []\n        });\n      } catch (error) {\n        this.raiseError(error, 'loading TileJSON');\n        data = null;\n      }\n\n      if (onDataLoad) {\n        onDataLoad(tileJSON, {\n          propName: 'data',\n          layer: this\n        });\n      }\n    } else if (data && typeof data === 'object' && 'tilejson' in data) {\n      tileJSON = data;\n    }\n\n    if (tileJSON) {\n      data = tileJSON.tiles;\n    }\n\n    this.setState({\n      data,\n      tileJSON\n    });\n  }\n\n  _getTilesetOptions() {\n    const opts = super._getTilesetOptions();\n\n    const tileJSON = this.state.tileJSON;\n    const {\n      minZoom,\n      maxZoom\n    } = this.props;\n\n    if (tileJSON) {\n      if (Number.isFinite(tileJSON.minzoom) && tileJSON.minzoom > minZoom) {\n        opts.minZoom = tileJSON.minzoom;\n      }\n\n      if (Number.isFinite(tileJSON.maxzoom) && (!Number.isFinite(maxZoom) || tileJSON.maxzoom < maxZoom)) {\n        opts.maxZoom = tileJSON.maxzoom;\n      }\n    }\n\n    return opts;\n  }\n\n  renderLayers() {\n    var _this$state3;\n\n    if (!((_this$state3 = this.state) !== null && _this$state3 !== void 0 && _this$state3.data)) return null;\n    return super.renderLayers();\n  }\n\n  getTileData(loadProps) {\n    var _loadOptions;\n\n    const {\n      data,\n      binary\n    } = this.state;\n    const {\n      index,\n      signal\n    } = loadProps;\n    const url = getURLFromTemplate(data, loadProps);\n\n    if (!url) {\n      return Promise.reject('Invalid URL');\n    }\n\n    let loadOptions = this.getLoadOptions();\n    const {\n      fetch\n    } = this.props;\n    loadOptions = { ...loadOptions,\n      mimeType: 'application/x-protobuf',\n      mvt: { ...((_loadOptions = loadOptions) === null || _loadOptions === void 0 ? void 0 : _loadOptions.mvt),\n        coordinates: this.context.viewport.resolution ? 'wgs84' : 'local',\n        tileIndex: index\n      },\n      gis: binary ? {\n        format: 'binary'\n      } : {}\n    };\n    return fetch(url, {\n      propName: 'data',\n      layer: this,\n      loadOptions,\n      signal\n    });\n  }\n\n  renderSubLayers(props) {\n    const {\n      x,\n      y,\n      z\n    } = props.tile.index;\n    const worldScale = Math.pow(2, z);\n    const xScale = WORLD_SIZE / worldScale;\n    const yScale = -xScale;\n    const xOffset = WORLD_SIZE * x / worldScale;\n    const yOffset = WORLD_SIZE * (1 - y / worldScale);\n    const modelMatrix = new Matrix4().scale([xScale, yScale, 1]);\n    props.autoHighlight = false;\n\n    if (!this.context.viewport.resolution) {\n      props.modelMatrix = modelMatrix;\n      props.coordinateOrigin = [xOffset, yOffset, 0];\n      props.coordinateSystem = COORDINATE_SYSTEM.CARTESIAN;\n      props.extensions = [...(props.extensions || []), new ClipExtension()];\n    }\n\n    const subLayers = super.renderSubLayers(props);\n\n    if (this.state.binary && !(subLayers instanceof GeoJsonLayer)) {\n      log.warn('renderSubLayers() must return GeoJsonLayer when using binary:true')();\n    }\n\n    return subLayers;\n  }\n\n  _updateAutoHighlight(info) {\n    const {\n      uniqueIdProperty\n    } = this.props;\n    const {\n      hoveredFeatureId,\n      hoveredFeatureLayerName\n    } = this.state;\n    const hoveredFeature = info.object;\n    let newHoveredFeatureId = null;\n    let newHoveredFeatureLayerName = null;\n\n    if (hoveredFeature) {\n      newHoveredFeatureId = getFeatureUniqueId(hoveredFeature, uniqueIdProperty);\n      newHoveredFeatureLayerName = getFeatureLayerName(hoveredFeature);\n    }\n\n    let {\n      highlightColor\n    } = this.props;\n\n    if (typeof highlightColor === 'function') {\n      highlightColor = highlightColor(info);\n    }\n\n    if (hoveredFeatureId !== newHoveredFeatureId || hoveredFeatureLayerName !== newHoveredFeatureLayerName) {\n      this.setState({\n        highlightColor,\n        hoveredFeatureId: newHoveredFeatureId,\n        hoveredFeatureLayerName: newHoveredFeatureLayerName\n      });\n    }\n  }\n\n  getPickingInfo(params) {\n    const info = super.getPickingInfo(params);\n    const isWGS84 = Boolean(this.context.viewport.resolution);\n\n    if (this.state.binary && info.index !== -1) {\n      const {\n        data\n      } = params.sourceLayer.props;\n      info.object = binaryToGeojson(data, {\n        globalFeatureId: info.index\n      });\n    }\n\n    if (info.object && !isWGS84) {\n      info.object = transformTileCoordsToWGS84(info.object, info.tile.bbox, this.context.viewport);\n    }\n\n    return info;\n  }\n\n  getSubLayerPropsByTile(tile) {\n    return {\n      highlightedObjectIndex: this.getHighlightedObjectIndex(tile),\n      highlightColor: this.state.highlightColor\n    };\n  }\n\n  getHighlightedObjectIndex(tile) {\n    const {\n      hoveredFeatureId,\n      hoveredFeatureLayerName,\n      binary\n    } = this.state;\n    const {\n      uniqueIdProperty,\n      highlightedFeatureId\n    } = this.props;\n    const data = tile.content;\n    const isHighlighted = isFeatureIdDefined(highlightedFeatureId);\n    const isFeatureIdPresent = isFeatureIdDefined(hoveredFeatureId) || isHighlighted;\n\n    if (!isFeatureIdPresent) {\n      return -1;\n    }\n\n    const featureIdToHighlight = isHighlighted ? highlightedFeatureId : hoveredFeatureId;\n\n    if (Array.isArray(data)) {\n      return data.findIndex(feature => {\n        const isMatchingId = getFeatureUniqueId(feature, uniqueIdProperty) === featureIdToHighlight;\n        const isMatchingLayer = isHighlighted || getFeatureLayerName(feature) === hoveredFeatureLayerName;\n        return isMatchingId && isMatchingLayer;\n      });\n    } else if (data && binary) {\n      return findIndexBinary(data, uniqueIdProperty, featureIdToHighlight, isHighlighted ? '' : hoveredFeatureLayerName);\n    }\n\n    return -1;\n  }\n\n  _pickObjects(maxObjects) {\n    const {\n      deck,\n      viewport\n    } = this.context;\n    const width = viewport.width;\n    const height = viewport.height;\n    const x = viewport.x;\n    const y = viewport.y;\n    const layerIds = [this.id];\n    return deck.pickObjects({\n      x,\n      y,\n      width,\n      height,\n      layerIds,\n      maxObjects\n    });\n  }\n\n  getRenderedFeatures(maxFeatures = null) {\n    const features = this._pickObjects(maxFeatures);\n\n    const featureCache = new Set();\n    const renderedFeatures = [];\n\n    for (const f of features) {\n      const featureId = getFeatureUniqueId(f.object, this.props.uniqueIdProperty);\n\n      if (featureId === undefined) {\n        renderedFeatures.push(f.object);\n      } else if (!featureCache.has(featureId)) {\n        featureCache.add(featureId);\n        renderedFeatures.push(f.object);\n      }\n    }\n\n    return renderedFeatures;\n  }\n\n  _setWGS84PropertyForTiles() {\n    const propName = 'dataInWGS84';\n    const tileset = this.state.tileset;\n    tileset.selectedTiles.forEach(tile => {\n      if (!tile.hasOwnProperty(propName)) {\n        Object.defineProperty(tile, propName, {\n          get: () => {\n            if (!tile.content) {\n              return null;\n            }\n\n            if (this.state.binary && Array.isArray(tile.content) && !tile.content.length) {\n              return [];\n            }\n\n            const {\n              bbox\n            } = tile;\n\n            if (tile._contentWGS84 === undefined && isGeoBoundingBox(bbox)) {\n              const content = this.state.binary ? binaryToGeojson(tile.content) : tile.content;\n              tile._contentWGS84 = content.map(feature => transformTileCoordsToWGS84(feature, bbox, this.context.viewport));\n            }\n\n            return tile._contentWGS84;\n          }\n        });\n      }\n    });\n  }\n\n}\n\n_defineProperty(MVTLayer, \"layerName\", 'MVTLayer');\n\n_defineProperty(MVTLayer, \"defaultProps\", defaultProps);\n\nfunction getFeatureUniqueId(feature, uniqueIdProperty) {\n  if (feature.properties && uniqueIdProperty) {\n    return feature.properties[uniqueIdProperty];\n  }\n\n  if ('id' in feature) {\n    return feature.id;\n  }\n\n  return undefined;\n}\n\nfunction getFeatureLayerName(feature) {\n  var _feature$properties;\n\n  return ((_feature$properties = feature.properties) === null || _feature$properties === void 0 ? void 0 : _feature$properties.layerName) || null;\n}\n\nfunction isFeatureIdDefined(value) {\n  return value !== undefined && value !== null && value !== '';\n}\n\nfunction transformTileCoordsToWGS84(object, bbox, viewport) {\n  const feature = { ...object,\n    geometry: {\n      type: object.geometry.type\n    }\n  };\n  Object.defineProperty(feature.geometry, 'coordinates', {\n    get: () => {\n      const wgs84Geom = transform(object.geometry, bbox, viewport);\n      return wgs84Geom.coordinates;\n    }\n  });\n  return feature;\n}\n//# sourceMappingURL=mvt-layer.js.map","import parseMVT from './lib/parse-mvt';\nconst VERSION = typeof \"3.4.14\" !== 'undefined' ? \"3.4.14\" : 'latest';\nconst DEFAULT_MVT_LOADER_OPTIONS = {\n  mvt: {\n    shape: 'geojson',\n    coordinates: 'local',\n    layerProperty: 'layerName',\n    layers: undefined,\n    tileIndex: null\n  }\n};\nexport const MVTWorkerLoader = {\n  name: 'Mapbox Vector Tile',\n  id: 'mvt',\n  module: 'mvt',\n  version: VERSION,\n  extensions: ['mvt', 'pbf'],\n  mimeTypes: ['application/vnd.mapbox-vector-tile', 'application/x-protobuf'],\n  worker: true,\n  category: 'geometry',\n  options: DEFAULT_MVT_LOADER_OPTIONS\n};\nexport const MVTLoader = {\n  ...MVTWorkerLoader,\n  parse: async (arrayBuffer, options) => parseMVT(arrayBuffer, options),\n  parseSync: parseMVT,\n  binary: true\n};\n//# sourceMappingURL=mvt-loader.js.map","const BASE32_CODES = '0123456789bcdefghjkmnpqrstuvwxyz';\nconst BASE32_CODES_DICT = {};\n\nfor (let i = 0; i < BASE32_CODES.length; i++) {\n  BASE32_CODES_DICT[BASE32_CODES.charAt(i)] = i;\n}\n\nconst MIN_LAT = -90;\nconst MAX_LAT = 90;\nconst MIN_LON = -180;\nconst MAX_LON = 180;\nexport function getGeohashBounds(geohash) {\n  let isLon = true;\n  let maxLat = MAX_LAT;\n  let minLat = MIN_LAT;\n  let maxLon = MAX_LON;\n  let minLon = MIN_LON;\n  let mid;\n  let hashValue = 0;\n\n  for (let i = 0, l = geohash.length; i < l; i++) {\n    const code = geohash[i].toLowerCase();\n    hashValue = BASE32_CODES_DICT[code];\n\n    for (let bits = 4; bits >= 0; bits--) {\n      const bit = hashValue >> bits & 1;\n\n      if (isLon) {\n        mid = (maxLon + minLon) / 2;\n\n        if (bit === 1) {\n          minLon = mid;\n        } else {\n          maxLon = mid;\n        }\n      } else {\n        mid = (maxLat + minLat) / 2;\n\n        if (bit === 1) {\n          minLat = mid;\n        } else {\n          maxLat = mid;\n        }\n      }\n\n      isLon = !isLon;\n    }\n  }\n\n  return [minLat, minLon, maxLat, maxLon];\n}\nexport function getGeohashPolygon(geohash) {\n  const [s, w, n, e] = getGeohashBounds(geohash);\n  return [e, n, e, s, w, s, w, n, e, n];\n}\n//# sourceMappingURL=geohash-utils.js.map","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport GeoCellLayer from '../geo-cell-layer/GeoCellLayer';\nimport { getGeohashPolygon } from './geohash-utils';\nconst defaultProps = {\n  getGeohash: {\n    type: 'accessor',\n    value: d => d.geohash\n  }\n};\nexport default class GeohashLayer extends GeoCellLayer {\n  indexToBounds() {\n    const {\n      data,\n      getGeohash\n    } = this.props;\n    return {\n      data,\n      _normalize: false,\n      positionFormat: 'XY',\n      getPolygon: (x, objectInfo) => getGeohashPolygon(getGeohash(x, objectInfo))\n    };\n  }\n\n}\n\n_defineProperty(GeohashLayer, \"layerName\", 'GeohashLayer');\n\n_defineProperty(GeohashLayer, \"defaultProps\", defaultProps);\n//# sourceMappingURL=geohash-layer.js.map","import { Deck } from '@deck.gl/core';\nimport { Matrix4, Vector2 } from '@math.gl/core';\nconst MAX_LATITUDE = 85.05113;\nexport function createDeckInstance(map, overlay, deck, props) {\n  if (deck) {\n    if (deck.userData._googleMap === map) {\n      return deck;\n    }\n\n    destroyDeckInstance(deck);\n  }\n\n  const eventListeners = {\n    click: null,\n    rightclick: null,\n    dblclick: null,\n    mousemove: null,\n    mouseout: null\n  };\n  const newDeck = new Deck({ ...props,\n    useDevicePixels: props.interleaved ? true : props.useDevicePixels,\n    style: props.interleaved ? null : {\n      pointerEvents: 'none'\n    },\n    parent: getContainer(overlay, props.style),\n    initialViewState: {\n      longitude: 0,\n      latitude: 0,\n      zoom: 1\n    },\n    controller: false\n  });\n\n  for (const eventType in eventListeners) {\n    eventListeners[eventType] = map.addListener(eventType, evt => handleMouseEvent(newDeck, eventType, evt));\n  }\n\n  newDeck.userData._googleMap = map;\n  newDeck.userData._eventListeners = eventListeners;\n  return newDeck;\n}\n\nfunction getContainer(overlay, style) {\n  const container = document.createElement('div');\n  container.style.position = 'absolute';\n  Object.assign(container.style, style);\n\n  if ('getPanes' in overlay) {\n    var _overlay$getPanes;\n\n    (_overlay$getPanes = overlay.getPanes()) === null || _overlay$getPanes === void 0 ? void 0 : _overlay$getPanes.overlayLayer.appendChild(container);\n  } else {\n    var _overlay$getMap;\n\n    (_overlay$getMap = overlay.getMap()) === null || _overlay$getMap === void 0 ? void 0 : _overlay$getMap.getDiv().appendChild(container);\n  }\n\n  return container;\n}\n\nexport function destroyDeckInstance(deck) {\n  const {\n    _eventListeners: eventListeners\n  } = deck.userData;\n\n  for (const eventType in eventListeners) {\n    if (eventListeners[eventType]) {\n      eventListeners[eventType].remove();\n    }\n  }\n\n  deck.finalize();\n}\nexport function getViewPropsFromOverlay(map, overlay) {\n  const {\n    width,\n    height\n  } = getMapSize(map);\n  const projection = overlay.getProjection();\n  const bounds = map.getBounds();\n\n  if (!bounds) {\n    return {\n      width,\n      height,\n      left: 0,\n      top: 0\n    };\n  }\n\n  const ne = bounds.getNorthEast();\n  const sw = bounds.getSouthWest();\n  const topRight = projection.fromLatLngToDivPixel(ne);\n  const bottomLeft = projection.fromLatLngToDivPixel(sw);\n  const centerLngLat = pixelToLngLat(projection, width / 2, height / 2);\n  const centerH = new google.maps.LatLng(0, centerLngLat[0]);\n  const centerContainerPx = projection.fromLatLngToContainerPixel(centerH);\n  const centerDivPx = projection.fromLatLngToDivPixel(centerH);\n\n  if (!topRight || !bottomLeft || !centerDivPx || !centerContainerPx) {\n    return {\n      width,\n      height,\n      left: 0,\n      top: 0\n    };\n  }\n\n  const leftOffset = Math.round(centerDivPx.x - centerContainerPx.x);\n  let topOffset = centerDivPx.y - centerContainerPx.y;\n  const topLngLat = pixelToLngLat(projection, width / 2, 0);\n  const bottomLngLat = pixelToLngLat(projection, width / 2, height);\n  let latitude = centerLngLat[1];\n  const longitude = centerLngLat[0];\n\n  if (Math.abs(latitude) > MAX_LATITUDE) {\n    latitude = latitude > 0 ? MAX_LATITUDE : -MAX_LATITUDE;\n    const center = new google.maps.LatLng(latitude, longitude);\n    const centerPx = projection.fromLatLngToContainerPixel(center);\n    topOffset += centerPx.y - height / 2;\n  }\n\n  topOffset = Math.round(topOffset);\n  const delta = new Vector2(topLngLat).sub(bottomLngLat);\n  let bearing = 180 * delta.verticalAngle() / Math.PI;\n  if (bearing < 0) bearing += 360;\n  const heading = map.getHeading() || 0;\n  let zoom = map.getZoom() - 1;\n  let scale;\n\n  if (bearing === 0) {\n    scale = height ? (bottomLeft.y - topRight.y) / height : 1;\n  } else if (bearing === heading) {\n    const viewDiagonal = new Vector2([topRight.x, topRight.y]).sub([bottomLeft.x, bottomLeft.y]).len();\n    const mapDiagonal = new Vector2([width, -height]).len();\n    scale = mapDiagonal ? viewDiagonal / mapDiagonal : 1;\n  }\n\n  zoom += Math.log2(scale || 1);\n  return {\n    width,\n    height,\n    left: leftOffset,\n    top: topOffset,\n    zoom,\n    bearing,\n    pitch: map.getTilt(),\n    latitude,\n    longitude\n  };\n}\nexport function getViewPropsFromCoordinateTransformer(map, transformer) {\n  const {\n    width,\n    height\n  } = getMapSize(map);\n  const {\n    center,\n    heading: bearing,\n    tilt: pitch,\n    zoom\n  } = transformer.getCameraParams();\n  const fovy = 25;\n  const aspect = height ? width / height : 1;\n  const near = 0.75;\n  const far = 300000000000000;\n  const projectionMatrix = new Matrix4().perspective({\n    fovy: fovy * Math.PI / 180,\n    aspect,\n    near,\n    far\n  });\n  const focalDistance = 0.5 * projectionMatrix[5];\n  return {\n    width,\n    height,\n    viewState: {\n      altitude: focalDistance,\n      bearing,\n      latitude: center.lat(),\n      longitude: center.lng(),\n      pitch,\n      projectionMatrix,\n      repeat: true,\n      zoom: zoom - 1\n    }\n  };\n}\n\nfunction getMapSize(map) {\n  const container = map.getDiv().firstChild;\n  return {\n    width: container.offsetWidth,\n    height: container.offsetHeight\n  };\n}\n\nfunction pixelToLngLat(projection, x, y) {\n  const point = new google.maps.Point(x, y);\n  const latLng = projection.fromContainerPixelToLatLng(point);\n  return [latLng.lng(), latLng.lat()];\n}\n\nfunction getEventPixel(event, deck) {\n  if (event.pixel) {\n    return event.pixel;\n  }\n\n  const point = deck.getViewports()[0].project([event.latLng.lng(), event.latLng.lat()]);\n  return {\n    x: point[0],\n    y: point[1]\n  };\n}\n\nfunction handleMouseEvent(deck, type, event) {\n  if (!deck.isInitialized) {\n    return;\n  }\n\n  const mockEvent = {\n    type,\n    offsetCenter: getEventPixel(event, deck),\n    srcEvent: event\n  };\n\n  switch (type) {\n    case 'click':\n    case 'rightclick':\n      mockEvent.type = 'click';\n      mockEvent.tapCount = 1;\n\n      deck._onPointerDown(mockEvent);\n\n      deck._onEvent(mockEvent);\n\n      break;\n\n    case 'dblclick':\n      mockEvent.type = 'click';\n      mockEvent.tapCount = 2;\n\n      deck._onEvent(mockEvent);\n\n      break;\n\n    case 'mousemove':\n      mockEvent.type = 'pointermove';\n\n      deck._onPointerMove(mockEvent);\n\n      break;\n\n    case 'mouseout':\n      mockEvent.type = 'pointerleave';\n\n      deck._onPointerMove(mockEvent);\n\n      break;\n\n    default:\n      return;\n  }\n}\n//# sourceMappingURL=utils.js.map","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { getParameters, setParameters, withParameters } from '@luma.gl/core';\nimport { createDeckInstance, destroyDeckInstance, getViewPropsFromOverlay, getViewPropsFromCoordinateTransformer } from './utils';\n\nconst HIDE_ALL_LAYERS = () => false;\n\nconst GL_STATE = {\n  depthMask: true,\n  depthTest: true,\n  blend: true,\n  blendFunc: [770, 771, 1, 771],\n  blendEquation: 32774\n};\n\nfunction noop() {}\n\nconst defaultProps = {\n  interleaved: true\n};\nexport default class GoogleMapsOverlay {\n  constructor(props) {\n    _defineProperty(this, \"props\", {});\n\n    _defineProperty(this, \"_map\", null);\n\n    _defineProperty(this, \"_deck\", null);\n\n    _defineProperty(this, \"_overlay\", null);\n\n    this.setProps({ ...defaultProps,\n      ...props\n    });\n  }\n\n  setMap(map) {\n    if (map === this._map) {\n      return;\n    }\n\n    const {\n      VECTOR,\n      UNINITIALIZED\n    } = google.maps.RenderingType;\n\n    if (this._map) {\n      var _this$_overlay;\n\n      if (!map && this._map.getRenderingType() === VECTOR && this.props.interleaved) {\n        this._overlay.requestRedraw();\n      }\n\n      (_this$_overlay = this._overlay) === null || _this$_overlay === void 0 ? void 0 : _this$_overlay.setMap(null);\n      this._map = null;\n    }\n\n    if (map) {\n      this._map = map;\n      const renderingType = map.getRenderingType();\n\n      if (renderingType !== UNINITIALIZED) {\n        this._createOverlay(map);\n      } else {\n        map.addListener('renderingtype_changed', () => {\n          this._createOverlay(map);\n        });\n      }\n    }\n  }\n\n  setProps(props) {\n    Object.assign(this.props, props);\n\n    if (this._deck) {\n      const canvas = this._deck.getCanvas();\n\n      if (props.style && canvas !== null && canvas !== void 0 && canvas.parentElement) {\n        const parentStyle = canvas.parentElement.style;\n        Object.assign(parentStyle, props.style);\n        props.style = null;\n      }\n\n      this._deck.setProps(props);\n    }\n  }\n\n  pickObject(params) {\n    return this._deck && this._deck.pickObject(params);\n  }\n\n  pickMultipleObjects(params) {\n    return this._deck && this._deck.pickMultipleObjects(params);\n  }\n\n  pickObjects(params) {\n    return this._deck && this._deck.pickObjects(params);\n  }\n\n  finalize() {\n    this.setMap(null);\n\n    if (this._deck) {\n      destroyDeckInstance(this._deck);\n      this._deck = null;\n    }\n  }\n\n  _createOverlay(map) {\n    const {\n      interleaved\n    } = this.props;\n    const {\n      VECTOR,\n      UNINITIALIZED\n    } = google.maps.RenderingType;\n    const renderingType = map.getRenderingType();\n\n    if (renderingType === UNINITIALIZED) {\n      return;\n    }\n\n    const isVectorMap = renderingType === VECTOR && google.maps.WebGLOverlayView;\n    const OverlayView = isVectorMap ? google.maps.WebGLOverlayView : google.maps.OverlayView;\n    const overlay = new OverlayView();\n\n    if (overlay instanceof google.maps.WebGLOverlayView) {\n      if (interleaved) {\n        overlay.onAdd = noop;\n        overlay.onContextRestored = this._onContextRestored.bind(this);\n        overlay.onDraw = this._onDrawVectorInterleaved.bind(this);\n      } else {\n        overlay.onAdd = this._onAdd.bind(this);\n        overlay.onContextRestored = noop;\n        overlay.onDraw = this._onDrawVectorOverlay.bind(this);\n      }\n\n      overlay.onContextLost = this._onContextLost.bind(this);\n    } else {\n      overlay.onAdd = this._onAdd.bind(this);\n      overlay.draw = this._onDrawRaster.bind(this);\n    }\n\n    overlay.onRemove = this._onRemove.bind(this);\n    this._overlay = overlay;\n\n    this._overlay.setMap(map);\n  }\n\n  _onAdd() {\n    this._deck = createDeckInstance(this._map, this._overlay, this._deck, this.props);\n  }\n\n  _onContextRestored({\n    gl\n  }) {\n    if (!this._map || !this._overlay) {\n      return;\n    }\n\n    const _customRender = () => {\n      if (this._overlay) {\n        this._overlay.requestRedraw();\n      }\n    };\n\n    const deck = createDeckInstance(this._map, this._overlay, this._deck, {\n      gl,\n      _customRender,\n      ...this.props\n    });\n    this._deck = deck;\n    const {\n      animationLoop\n    } = deck;\n\n    animationLoop._renderFrame = () => {\n      const ab = gl.getParameter(34964);\n      withParameters(gl, {}, () => {\n        animationLoop.onRender();\n      });\n      gl.bindBuffer(34962, ab);\n    };\n  }\n\n  _onContextLost() {\n    if (this._deck) {\n      destroyDeckInstance(this._deck);\n      this._deck = null;\n    }\n  }\n\n  _onRemove() {\n    var _this$_deck;\n\n    (_this$_deck = this._deck) === null || _this$_deck === void 0 ? void 0 : _this$_deck.setProps({\n      layerFilter: HIDE_ALL_LAYERS\n    });\n  }\n\n  _onDrawRaster() {\n    if (!this._deck || !this._map) {\n      return;\n    }\n\n    const deck = this._deck;\n    const {\n      width,\n      height,\n      left,\n      top,\n      ...rest\n    } = getViewPropsFromOverlay(this._map, this._overlay);\n    const canvas = deck.getCanvas();\n\n    if (canvas !== null && canvas !== void 0 && canvas.parentElement) {\n      const parentStyle = canvas.parentElement.style;\n      parentStyle.left = \"\".concat(left, \"px\");\n      parentStyle.top = \"\".concat(top, \"px\");\n    }\n\n    const altitude = 10000;\n    deck.setProps({\n      width,\n      height,\n      viewState: {\n        altitude,\n        repeat: true,\n        ...rest\n      }\n    });\n    deck.redraw();\n  }\n\n  _onDrawVectorInterleaved({\n    gl,\n    transformer\n  }) {\n    if (!this._deck || !this._map) {\n      return;\n    }\n\n    const deck = this._deck;\n    deck.setProps({ ...getViewPropsFromCoordinateTransformer(this._map, transformer),\n      width: null,\n      height: null\n    });\n\n    if (deck.isInitialized) {\n      const _framebuffer = getParameters(gl, 36006);\n\n      deck.setProps({\n        _framebuffer\n      });\n      deck.needsRedraw({\n        clearRedrawFlags: true\n      });\n      setParameters(gl, {\n        viewport: [0, 0, gl.canvas.width, gl.canvas.height],\n        scissor: [0, 0, gl.canvas.width, gl.canvas.height],\n        stencilFunc: [519, 0, 255, 519, 0, 255]\n      });\n      withParameters(gl, GL_STATE, () => {\n        deck._drawLayers('google-vector', {\n          clearCanvas: false\n        });\n      });\n    }\n  }\n\n  _onDrawVectorOverlay({\n    transformer\n  }) {\n    if (!this._deck || !this._map) {\n      return;\n    }\n\n    const deck = this._deck;\n    deck.setProps({ ...getViewPropsFromCoordinateTransformer(this._map, transformer)\n    });\n    deck.redraw();\n  }\n\n}\n//# sourceMappingURL=google-maps-overlay.js.map","export default \"#define SHADER_NAME arc-layer-vertex-shader\\n\\nattribute vec3 positions;\\nattribute vec4 instanceSourceColors;\\nattribute vec4 instanceTargetColors;\\nattribute vec3 instanceSourcePositions;\\nattribute vec3 instanceSourcePositions64Low;\\nattribute vec3 instanceTargetPositions;\\nattribute vec3 instanceTargetPositions64Low;\\nattribute vec3 instancePickingColors;\\nattribute float instanceWidths;\\nattribute float instanceHeights;\\nattribute float instanceTilts;\\n\\nuniform bool greatCircle;\\nuniform bool useShortestPath;\\nuniform float numSegments;\\nuniform float opacity;\\nuniform float widthScale;\\nuniform float widthMinPixels;\\nuniform float widthMaxPixels;\\nuniform int widthUnits;\\n\\nvarying vec4 vColor;\\nvarying vec2 uv;\\nvarying float isValid;\\n\\nfloat paraboloid(float distance, float sourceZ, float targetZ, float ratio) {\\n\\n  float deltaZ = targetZ - sourceZ;\\n  float dh = distance * instanceHeights;\\n  if (dh == 0.0) {\\n    return sourceZ + deltaZ * ratio;\\n  }\\n  float unitZ = deltaZ / dh;\\n  float p2 = unitZ * unitZ + 1.0;\\n  float dir = step(deltaZ, 0.0);\\n  float z0 = mix(sourceZ, targetZ, dir);\\n  float r = mix(ratio, 1.0 - ratio, dir);\\n  return sqrt(r * (p2 - r)) * dh + z0;\\n}\\nvec2 getExtrusionOffset(vec2 line_clipspace, float offset_direction, float width) {\\n  vec2 dir_screenspace = normalize(line_clipspace * project_uViewportSize);\\n  dir_screenspace = vec2(-dir_screenspace.y, dir_screenspace.x);\\n\\n  return dir_screenspace * offset_direction * width / 2.0;\\n}\\n\\nfloat getSegmentRatio(float index) {\\n  return smoothstep(0.0, 1.0, index / (numSegments - 1.0));\\n}\\n\\nvec3 interpolateFlat(vec3 source, vec3 target, float segmentRatio) {\\n  float distance = length(source.xy - target.xy);\\n  float z = paraboloid(distance, source.z, target.z, segmentRatio);\\n\\n  float tiltAngle = radians(instanceTilts);\\n  vec2 tiltDirection = normalize(target.xy - source.xy);\\n  vec2 tilt = vec2(-tiltDirection.y, tiltDirection.x) * z * sin(tiltAngle);\\n\\n  return vec3(\\n    mix(source.xy, target.xy, segmentRatio) + tilt,\\n    z * cos(tiltAngle)\\n  );\\n}\\nfloat getAngularDist (vec2 source, vec2 target) {\\n  vec2 sourceRadians = radians(source);\\n  vec2 targetRadians = radians(target);\\n  vec2 sin_half_delta = sin((sourceRadians - targetRadians) / 2.0);\\n  vec2 shd_sq = sin_half_delta * sin_half_delta;\\n\\n  float a = shd_sq.y + cos(sourceRadians.y) * cos(targetRadians.y) * shd_sq.x;\\n  return 2.0 * asin(sqrt(a));\\n}\\n\\nvec3 interpolateGreatCircle(vec3 source, vec3 target, vec3 source3D, vec3 target3D, float angularDist, float t) {\\n  vec2 lngLat;\\n  if(abs(angularDist - PI) < 0.001) {\\n    lngLat = (1.0 - t) * source.xy + t * target.xy;\\n  } else {\\n    float a = sin((1.0 - t) * angularDist);\\n    float b = sin(t * angularDist);\\n    vec3 p = source3D.yxz * a + target3D.yxz * b;\\n    lngLat = degrees(vec2(atan(p.y, -p.x), atan(p.z, length(p.xy))));\\n  }\\n\\n  float z = paraboloid(angularDist * EARTH_RADIUS, source.z, target.z, t);\\n\\n  return vec3(lngLat, z);\\n}\\n\\nvoid main(void) {\\n  geometry.worldPosition = instanceSourcePositions;\\n  geometry.worldPositionAlt = instanceTargetPositions;\\n\\n  float segmentIndex = positions.x;\\n  float segmentRatio = getSegmentRatio(segmentIndex);\\n  float prevSegmentRatio = getSegmentRatio(max(0.0, segmentIndex - 1.0));\\n  float nextSegmentRatio = getSegmentRatio(min(numSegments - 1.0, segmentIndex + 1.0));\\n  float indexDir = mix(-1.0, 1.0, step(segmentIndex, 0.0));\\n  isValid = 1.0;\\n\\n  uv = vec2(segmentRatio, positions.y);\\n  geometry.uv = uv;\\n  geometry.pickingColor = instancePickingColors;\\n\\n  vec4 curr;\\n  vec4 next;\\n  vec3 source;\\n  vec3 target;\\n\\n  if ((greatCircle || project_uProjectionMode == PROJECTION_MODE_GLOBE) && project_uCoordinateSystem == COORDINATE_SYSTEM_LNGLAT) {\\n    source = project_globe_(vec3(instanceSourcePositions.xy, 0.0));\\n    target = project_globe_(vec3(instanceTargetPositions.xy, 0.0));\\n    float angularDist = getAngularDist(instanceSourcePositions.xy, instanceTargetPositions.xy);\\n\\n    vec3 prevPos = interpolateGreatCircle(instanceSourcePositions, instanceTargetPositions, source, target, angularDist, prevSegmentRatio);\\n    vec3 currPos = interpolateGreatCircle(instanceSourcePositions, instanceTargetPositions, source, target, angularDist, segmentRatio);\\n    vec3 nextPos = interpolateGreatCircle(instanceSourcePositions, instanceTargetPositions, source, target, angularDist, nextSegmentRatio);\\n\\n    if (abs(currPos.x - prevPos.x) > 180.0) {\\n      indexDir = -1.0;\\n      isValid = 0.0;\\n    } else if (abs(currPos.x - nextPos.x) > 180.0) {\\n      indexDir = 1.0;\\n      isValid = 0.0;\\n    }\\n    nextPos = indexDir < 0.0 ? prevPos : nextPos;\\n    nextSegmentRatio = indexDir < 0.0 ? prevSegmentRatio : nextSegmentRatio;\\n\\n    if (isValid == 0.0) {\\n      nextPos.x += nextPos.x > 0.0 ? -360.0 : 360.0;\\n      float t = ((currPos.x > 0.0 ? 180.0 : -180.0) - currPos.x) / (nextPos.x - currPos.x);\\n      currPos = mix(currPos, nextPos, t);\\n      segmentRatio = mix(segmentRatio, nextSegmentRatio, t);\\n    }\\n\\n    vec3 currPos64Low = mix(instanceSourcePositions64Low, instanceTargetPositions64Low, segmentRatio);\\n    vec3 nextPos64Low = mix(instanceSourcePositions64Low, instanceTargetPositions64Low, nextSegmentRatio);\\n  \\n    curr = project_position_to_clipspace(currPos, currPos64Low, vec3(0.0), geometry.position);\\n    next = project_position_to_clipspace(nextPos, nextPos64Low, vec3(0.0));\\n  \\n  } else {\\n    vec3 source_world = instanceSourcePositions;\\n    vec3 target_world = instanceTargetPositions;\\n    if (useShortestPath) {\\n      source_world.x = mod(source_world.x + 180., 360.0) - 180.;\\n      target_world.x = mod(target_world.x + 180., 360.0) - 180.;\\n\\n      float deltaLng = target_world.x - source_world.x;\\n      if (deltaLng > 180.) target_world.x -= 360.;\\n      if (deltaLng < -180.) source_world.x -= 360.;\\n    }\\n    source = project_position(source_world, instanceSourcePositions64Low);\\n    target = project_position(target_world, instanceTargetPositions64Low);\\n    float antiMeridianX = 0.0;\\n\\n    if (useShortestPath) {\\n      if (project_uProjectionMode == PROJECTION_MODE_WEB_MERCATOR_AUTO_OFFSET) {\\n        antiMeridianX = -(project_uCoordinateOrigin.x + 180.) / 360. * TILE_SIZE;\\n      }\\n      float thresholdRatio = (antiMeridianX - source.x) / (target.x - source.x);\\n\\n      if (prevSegmentRatio <= thresholdRatio && nextSegmentRatio > thresholdRatio) {\\n        isValid = 0.0;\\n        indexDir = sign(segmentRatio - thresholdRatio);\\n        segmentRatio = thresholdRatio;\\n      }\\n    }\\n\\n    nextSegmentRatio = indexDir < 0.0 ? prevSegmentRatio : nextSegmentRatio;\\n    vec3 currPos = interpolateFlat(source, target, segmentRatio);\\n    vec3 nextPos = interpolateFlat(source, target, nextSegmentRatio);\\n\\n    if (useShortestPath) {\\n      if (nextPos.x < antiMeridianX) {\\n        currPos.x += TILE_SIZE;\\n        nextPos.x += TILE_SIZE;\\n      }\\n    }\\n\\n    curr = project_common_position_to_clipspace(vec4(currPos, 1.0));\\n    next = project_common_position_to_clipspace(vec4(nextPos, 1.0));\\n    geometry.position = vec4(currPos, 1.0);\\n  }\\n  float widthPixels = clamp(\\n    project_size_to_pixel(instanceWidths * widthScale, widthUnits),\\n    widthMinPixels, widthMaxPixels\\n  );\\n  vec3 offset = vec3(\\n    getExtrusionOffset((next.xy - curr.xy) * indexDir, positions.y, widthPixels),\\n    0.0);\\n  DECKGL_FILTER_SIZE(offset, geometry);\\n  DECKGL_FILTER_GL_POSITION(curr, geometry);\\n  gl_Position = curr + vec4(project_pixel_size_to_clipspace(offset.xy), 0.0, 0.0);\\n\\n  vec4 color = mix(instanceSourceColors, instanceTargetColors, segmentRatio);\\n  vColor = vec4(color.rgb, color.a * opacity);\\n  DECKGL_FILTER_COLOR(vColor, geometry);\\n}\\n\";\n//# sourceMappingURL=arc-layer-vertex.glsl.js.map","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Layer, project32, picking, UNIT } from '@deck.gl/core';\nimport { Model, Geometry } from '@luma.gl/core';\nimport vs from './arc-layer-vertex.glsl';\nimport fs from './arc-layer-fragment.glsl';\nconst DEFAULT_COLOR = [0, 0, 0, 255];\nconst defaultProps = {\n  getSourcePosition: {\n    type: 'accessor',\n    value: x => x.sourcePosition\n  },\n  getTargetPosition: {\n    type: 'accessor',\n    value: x => x.targetPosition\n  },\n  getSourceColor: {\n    type: 'accessor',\n    value: DEFAULT_COLOR\n  },\n  getTargetColor: {\n    type: 'accessor',\n    value: DEFAULT_COLOR\n  },\n  getWidth: {\n    type: 'accessor',\n    value: 1\n  },\n  getHeight: {\n    type: 'accessor',\n    value: 1\n  },\n  getTilt: {\n    type: 'accessor',\n    value: 0\n  },\n  greatCircle: false,\n  numSegments: {\n    type: 'number',\n    value: 50,\n    min: 1\n  },\n  widthUnits: 'pixels',\n  widthScale: {\n    type: 'number',\n    value: 1,\n    min: 0\n  },\n  widthMinPixels: {\n    type: 'number',\n    value: 0,\n    min: 0\n  },\n  widthMaxPixels: {\n    type: 'number',\n    value: Number.MAX_SAFE_INTEGER,\n    min: 0\n  }\n};\nexport default class ArcLayer extends Layer {\n  constructor(...args) {\n    super(...args);\n\n    _defineProperty(this, \"state\", void 0);\n  }\n\n  getBounds() {\n    var _this$getAttributeMan;\n\n    return (_this$getAttributeMan = this.getAttributeManager()) === null || _this$getAttributeMan === void 0 ? void 0 : _this$getAttributeMan.getBounds(['instanceSourcePositions', 'instanceTargetPositions']);\n  }\n\n  getShaders() {\n    return super.getShaders({\n      vs,\n      fs,\n      modules: [project32, picking]\n    });\n  }\n\n  get wrapLongitude() {\n    return false;\n  }\n\n  initializeState() {\n    const attributeManager = this.getAttributeManager();\n    attributeManager.addInstanced({\n      instanceSourcePositions: {\n        size: 3,\n        type: 5130,\n        fp64: this.use64bitPositions(),\n        transition: true,\n        accessor: 'getSourcePosition'\n      },\n      instanceTargetPositions: {\n        size: 3,\n        type: 5130,\n        fp64: this.use64bitPositions(),\n        transition: true,\n        accessor: 'getTargetPosition'\n      },\n      instanceSourceColors: {\n        size: this.props.colorFormat.length,\n        type: 5121,\n        normalized: true,\n        transition: true,\n        accessor: 'getSourceColor',\n        defaultValue: DEFAULT_COLOR\n      },\n      instanceTargetColors: {\n        size: this.props.colorFormat.length,\n        type: 5121,\n        normalized: true,\n        transition: true,\n        accessor: 'getTargetColor',\n        defaultValue: DEFAULT_COLOR\n      },\n      instanceWidths: {\n        size: 1,\n        transition: true,\n        accessor: 'getWidth',\n        defaultValue: 1\n      },\n      instanceHeights: {\n        size: 1,\n        transition: true,\n        accessor: 'getHeight',\n        defaultValue: 1\n      },\n      instanceTilts: {\n        size: 1,\n        transition: true,\n        accessor: 'getTilt',\n        defaultValue: 0\n      }\n    });\n  }\n\n  updateState(opts) {\n    super.updateState(opts);\n    const {\n      props,\n      oldProps,\n      changeFlags\n    } = opts;\n\n    if (changeFlags.extensionsChanged || changeFlags.propsChanged && props.numSegments !== oldProps.numSegments) {\n      var _this$state$model;\n\n      const {\n        gl\n      } = this.context;\n      (_this$state$model = this.state.model) === null || _this$state$model === void 0 ? void 0 : _this$state$model.delete();\n      this.state.model = this._getModel(gl);\n      this.getAttributeManager().invalidateAll();\n    }\n  }\n\n  draw({\n    uniforms\n  }) {\n    const {\n      widthUnits,\n      widthScale,\n      widthMinPixels,\n      widthMaxPixels,\n      greatCircle,\n      wrapLongitude\n    } = this.props;\n    this.state.model.setUniforms(uniforms).setUniforms({\n      greatCircle,\n      widthUnits: UNIT[widthUnits],\n      widthScale,\n      widthMinPixels,\n      widthMaxPixels,\n      useShortestPath: wrapLongitude\n    }).draw();\n  }\n\n  _getModel(gl) {\n    const {\n      id,\n      numSegments\n    } = this.props;\n    let positions = [];\n\n    for (let i = 0; i < numSegments; i++) {\n      positions = positions.concat([i, 1, 0, i, -1, 0]);\n    }\n\n    const model = new Model(gl, { ...this.getShaders(),\n      id,\n      geometry: new Geometry({\n        drawMode: 5,\n        attributes: {\n          positions: new Float32Array(positions)\n        }\n      }),\n      isInstanced: true\n    });\n    model.setUniforms({\n      numSegments\n    });\n    return model;\n  }\n\n}\n\n_defineProperty(ArcLayer, \"layerName\", 'ArcLayer');\n\n_defineProperty(ArcLayer, \"defaultProps\", defaultProps);\n//# sourceMappingURL=arc-layer.js.map","export default \"#define SHADER_NAME arc-layer-fragment-shader\\n\\nprecision highp float;\\n\\nvarying vec4 vColor;\\nvarying vec2 uv;\\nvarying float isValid;\\n\\nvoid main(void) {\\n  if (isValid == 0.0) {\\n    discard;\\n  }\\n\\n  gl_FragColor = vColor;\\n  geometry.uv = uv;\\n\\n  DECKGL_FILTER_COLOR(gl_FragColor, geometry);\\n}\\n\";\n//# sourceMappingURL=arc-layer-fragment.glsl.js.map","import { lerp } from '@math.gl/core';\nconst DEFAULT_INDICES = new Uint16Array([0, 2, 1, 0, 3, 2]);\nconst DEFAULT_TEX_COORDS = new Float32Array([0, 1, 0, 0, 1, 0, 1, 1]);\nexport default function createMesh(bounds, resolution) {\n  if (!resolution) {\n    return createQuad(bounds);\n  }\n\n  const maxXSpan = Math.max(Math.abs(bounds[0][0] - bounds[3][0]), Math.abs(bounds[1][0] - bounds[2][0]));\n  const maxYSpan = Math.max(Math.abs(bounds[1][1] - bounds[0][1]), Math.abs(bounds[2][1] - bounds[3][1]));\n  const uCount = Math.ceil(maxXSpan / resolution) + 1;\n  const vCount = Math.ceil(maxYSpan / resolution) + 1;\n  const vertexCount = (uCount - 1) * (vCount - 1) * 6;\n  const indices = new Uint32Array(vertexCount);\n  const texCoords = new Float32Array(uCount * vCount * 2);\n  const positions = new Float64Array(uCount * vCount * 3);\n  let vertex = 0;\n  let index = 0;\n\n  for (let u = 0; u < uCount; u++) {\n    const ut = u / (uCount - 1);\n\n    for (let v = 0; v < vCount; v++) {\n      const vt = v / (vCount - 1);\n      const p = interpolateQuad(bounds, ut, vt);\n      positions[vertex * 3 + 0] = p[0];\n      positions[vertex * 3 + 1] = p[1];\n      positions[vertex * 3 + 2] = p[2] || 0;\n      texCoords[vertex * 2 + 0] = ut;\n      texCoords[vertex * 2 + 1] = 1 - vt;\n\n      if (u > 0 && v > 0) {\n        indices[index++] = vertex - vCount;\n        indices[index++] = vertex - vCount - 1;\n        indices[index++] = vertex - 1;\n        indices[index++] = vertex - vCount;\n        indices[index++] = vertex - 1;\n        indices[index++] = vertex;\n      }\n\n      vertex++;\n    }\n  }\n\n  return {\n    vertexCount,\n    positions,\n    indices,\n    texCoords\n  };\n}\n\nfunction createQuad(bounds) {\n  const positions = new Float64Array(12);\n\n  for (let i = 0; i < bounds.length; i++) {\n    positions[i * 3 + 0] = bounds[i][0];\n    positions[i * 3 + 1] = bounds[i][1];\n    positions[i * 3 + 2] = bounds[i][2] || 0;\n  }\n\n  return {\n    vertexCount: 6,\n    positions,\n    indices: DEFAULT_INDICES,\n    texCoords: DEFAULT_TEX_COORDS\n  };\n}\n\nfunction interpolateQuad(quad, ut, vt) {\n  return lerp(lerp(quad[0], quad[1], vt), lerp(quad[3], quad[2], vt), ut);\n}\n//# sourceMappingURL=create-mesh.js.map","export default \"\\n#define SHADER_NAME bitmap-layer-vertex-shader\\n\\nattribute vec2 texCoords;\\nattribute vec3 positions;\\nattribute vec3 positions64Low;\\n\\nvarying vec2 vTexCoord;\\nvarying vec2 vTexPos;\\n\\nuniform float coordinateConversion;\\n\\nconst vec3 pickingColor = vec3(1.0, 0.0, 0.0);\\n\\nvoid main(void) {\\n  geometry.worldPosition = positions;\\n  geometry.uv = texCoords;\\n  geometry.pickingColor = pickingColor;\\n\\n  gl_Position = project_position_to_clipspace(positions, positions64Low, vec3(0.0), geometry.position);\\n  DECKGL_FILTER_GL_POSITION(gl_Position, geometry);\\n\\n  vTexCoord = texCoords;\\n\\n  if (coordinateConversion < -0.5) {\\n    vTexPos = geometry.position.xy + project_uCommonOrigin.xy;\\n  } else if (coordinateConversion > 0.5) {\\n    vTexPos = geometry.worldPosition.xy;\\n  }\\n\\n  vec4 color = vec4(0.0);\\n  DECKGL_FILTER_COLOR(color, geometry);\\n}\\n\";\n//# sourceMappingURL=bitmap-layer-vertex.js.map","const packUVsIntoRGB = \"\\nvec3 packUVsIntoRGB(vec2 uv) {\\n  // Extract the top 8 bits. We want values to be truncated down so we can add a fraction\\n  vec2 uv8bit = floor(uv * 256.);\\n\\n  // Calculate the normalized remainders of u and v parts that do not fit into 8 bits\\n  // Scale and clamp to 0-1 range\\n  vec2 uvFraction = fract(uv * 256.);\\n  vec2 uvFraction4bit = floor(uvFraction * 16.);\\n\\n  // Remainder can be encoded in blue channel, encode as 4 bits for pixel coordinates\\n  float fractions = uvFraction4bit.x + uvFraction4bit.y * 16.;\\n\\n  return vec3(uv8bit, fractions) / 255.;\\n}\\n\";\nexport default \"\\n#define SHADER_NAME bitmap-layer-fragment-shader\\n\\n#ifdef GL_ES\\nprecision highp float;\\n#endif\\n\\nuniform sampler2D bitmapTexture;\\n\\nvarying vec2 vTexCoord;\\nvarying vec2 vTexPos;\\n\\nuniform float desaturate;\\nuniform vec4 transparentColor;\\nuniform vec3 tintColor;\\nuniform float opacity;\\n\\nuniform float coordinateConversion;\\nuniform vec4 bounds;\\n\\n/* projection utils */\\nconst float TILE_SIZE = 512.0;\\nconst float PI = 3.1415926536;\\nconst float WORLD_SCALE = TILE_SIZE / PI / 2.0;\\n\\n// from degrees to Web Mercator\\nvec2 lnglat_to_mercator(vec2 lnglat) {\\n  float x = lnglat.x;\\n  float y = clamp(lnglat.y, -89.9, 89.9);\\n  return vec2(\\n    radians(x) + PI,\\n    PI + log(tan(PI * 0.25 + radians(y) * 0.5))\\n  ) * WORLD_SCALE;\\n}\\n\\n// from Web Mercator to degrees\\nvec2 mercator_to_lnglat(vec2 xy) {\\n  xy /= WORLD_SCALE;\\n  return degrees(vec2(\\n    xy.x - PI,\\n    atan(exp(xy.y - PI)) * 2.0 - PI * 0.5\\n  ));\\n}\\n/* End projection utils */\\n\\n// apply desaturation\\nvec3 color_desaturate(vec3 color) {\\n  float luminance = (color.r + color.g + color.b) * 0.333333333;\\n  return mix(color, vec3(luminance), desaturate);\\n}\\n\\n// apply tint\\nvec3 color_tint(vec3 color) {\\n  return color * tintColor;\\n}\\n\\n// blend with background color\\nvec4 apply_opacity(vec3 color, float alpha) {\\n  if (transparentColor.a == 0.0) {\\n    return vec4(color, alpha);\\n  }\\n  float blendedAlpha = alpha + transparentColor.a * (1.0 - alpha);\\n  float highLightRatio = alpha / blendedAlpha;\\n  vec3 blendedRGB = mix(transparentColor.rgb, color, highLightRatio);\\n  return vec4(blendedRGB, blendedAlpha);\\n}\\n\\nvec2 getUV(vec2 pos) {\\n  return vec2(\\n    (pos.x - bounds[0]) / (bounds[2] - bounds[0]),\\n    (pos.y - bounds[3]) / (bounds[1] - bounds[3])\\n  );\\n}\\n\\n\".concat(packUVsIntoRGB, \"\\n\\nvoid main(void) {\\n  vec2 uv = vTexCoord;\\n  if (coordinateConversion < -0.5) {\\n    vec2 lnglat = mercator_to_lnglat(vTexPos);\\n    uv = getUV(lnglat);\\n  } else if (coordinateConversion > 0.5) {\\n    vec2 commonPos = lnglat_to_mercator(vTexPos);\\n    uv = getUV(commonPos);\\n  }\\n  vec4 bitmapColor = texture2D(bitmapTexture, uv);\\n\\n  gl_FragColor = apply_opacity(color_tint(color_desaturate(bitmapColor.rgb)), bitmapColor.a * opacity);\\n\\n  geometry.uv = uv;\\n  DECKGL_FILTER_COLOR(gl_FragColor, geometry);\\n\\n  if (picking_uActive && !picking_uAttribute) {\\n    // Since instance information is not used, we can use picking color for pixel index\\n    gl_FragColor.rgb = packUVsIntoRGB(uv);\\n  }\\n}\\n\");\n//# sourceMappingURL=bitmap-layer-fragment.js.map","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Layer, project32, picking, COORDINATE_SYSTEM } from '@deck.gl/core';\nimport { Model, Geometry } from '@luma.gl/core';\nimport { lngLatToWorld } from '@math.gl/web-mercator';\nimport createMesh from './create-mesh';\nimport vs from './bitmap-layer-vertex';\nimport fs from './bitmap-layer-fragment';\nconst defaultProps = {\n  image: {\n    type: 'image',\n    value: null,\n    async: true\n  },\n  bounds: {\n    type: 'array',\n    value: [1, 0, 0, 1],\n    compare: true\n  },\n  _imageCoordinateSystem: COORDINATE_SYSTEM.DEFAULT,\n  desaturate: {\n    type: 'number',\n    min: 0,\n    max: 1,\n    value: 0\n  },\n  transparentColor: {\n    type: 'color',\n    value: [0, 0, 0, 0]\n  },\n  tintColor: {\n    type: 'color',\n    value: [255, 255, 255]\n  },\n  textureParameters: {\n    type: 'object',\n    ignore: true\n  }\n};\nexport default class BitmapLayer extends Layer {\n  constructor(...args) {\n    super(...args);\n\n    _defineProperty(this, \"state\", void 0);\n  }\n\n  getShaders() {\n    return super.getShaders({\n      vs,\n      fs,\n      modules: [project32, picking]\n    });\n  }\n\n  initializeState() {\n    const attributeManager = this.getAttributeManager();\n    attributeManager.remove(['instancePickingColors']);\n    const noAlloc = true;\n    attributeManager.add({\n      indices: {\n        size: 1,\n        isIndexed: true,\n        update: attribute => attribute.value = this.state.mesh.indices,\n        noAlloc\n      },\n      positions: {\n        size: 3,\n        type: 5130,\n        fp64: this.use64bitPositions(),\n        update: attribute => attribute.value = this.state.mesh.positions,\n        noAlloc\n      },\n      texCoords: {\n        size: 2,\n        update: attribute => attribute.value = this.state.mesh.texCoords,\n        noAlloc\n      }\n    });\n  }\n\n  updateState({\n    props,\n    oldProps,\n    changeFlags\n  }) {\n    const attributeManager = this.getAttributeManager();\n\n    if (changeFlags.extensionsChanged) {\n      var _this$state$model;\n\n      const {\n        gl\n      } = this.context;\n      (_this$state$model = this.state.model) === null || _this$state$model === void 0 ? void 0 : _this$state$model.delete();\n      this.state.model = this._getModel(gl);\n      attributeManager.invalidateAll();\n    }\n\n    if (props.bounds !== oldProps.bounds) {\n      const oldMesh = this.state.mesh;\n\n      const mesh = this._createMesh();\n\n      this.state.model.setVertexCount(mesh.vertexCount);\n\n      for (const key in mesh) {\n        if (oldMesh && oldMesh[key] !== mesh[key]) {\n          attributeManager.invalidate(key);\n        }\n      }\n\n      this.setState({\n        mesh,\n        ...this._getCoordinateUniforms()\n      });\n    } else if (props._imageCoordinateSystem !== oldProps._imageCoordinateSystem) {\n      this.setState(this._getCoordinateUniforms());\n    }\n  }\n\n  getPickingInfo(params) {\n    const {\n      image\n    } = this.props;\n    const info = params.info;\n\n    if (!info.color || !image) {\n      info.bitmap = null;\n      return info;\n    }\n\n    const {\n      width,\n      height\n    } = image;\n    info.index = 0;\n    const uv = unpackUVsFromRGB(info.color);\n    const pixel = [Math.floor(uv[0] * width), Math.floor(uv[1] * height)];\n    info.bitmap = {\n      size: {\n        width,\n        height\n      },\n      uv,\n      pixel\n    };\n    return info;\n  }\n\n  disablePickingIndex() {\n    this.setState({\n      disablePicking: true\n    });\n  }\n\n  restorePickingColors() {\n    this.setState({\n      disablePicking: false\n    });\n  }\n\n  _updateAutoHighlight(info) {\n    super._updateAutoHighlight({ ...info,\n      color: this.encodePickingColor(0)\n    });\n  }\n\n  _createMesh() {\n    const {\n      bounds\n    } = this.props;\n    let normalizedBounds = bounds;\n\n    if (isRectangularBounds(bounds)) {\n      normalizedBounds = [[bounds[0], bounds[1]], [bounds[0], bounds[3]], [bounds[2], bounds[3]], [bounds[2], bounds[1]]];\n    }\n\n    return createMesh(normalizedBounds, this.context.viewport.resolution);\n  }\n\n  _getModel(gl) {\n    if (!gl) {\n      return null;\n    }\n\n    return new Model(gl, { ...this.getShaders(),\n      id: this.props.id,\n      geometry: new Geometry({\n        drawMode: 4,\n        vertexCount: 6\n      }),\n      isInstanced: false\n    });\n  }\n\n  draw(opts) {\n    const {\n      uniforms,\n      moduleParameters\n    } = opts;\n    const {\n      model,\n      coordinateConversion,\n      bounds,\n      disablePicking\n    } = this.state;\n    const {\n      image,\n      desaturate,\n      transparentColor,\n      tintColor\n    } = this.props;\n\n    if (moduleParameters.pickingActive && disablePicking) {\n      return;\n    }\n\n    if (image && model) {\n      model.setUniforms(uniforms).setUniforms({\n        bitmapTexture: image,\n        desaturate,\n        transparentColor: transparentColor.map(x => x / 255),\n        tintColor: tintColor.slice(0, 3).map(x => x / 255),\n        coordinateConversion,\n        bounds\n      }).draw();\n    }\n  }\n\n  _getCoordinateUniforms() {\n    const {\n      LNGLAT,\n      CARTESIAN,\n      DEFAULT\n    } = COORDINATE_SYSTEM;\n    let {\n      _imageCoordinateSystem: imageCoordinateSystem\n    } = this.props;\n\n    if (imageCoordinateSystem !== DEFAULT) {\n      const {\n        bounds\n      } = this.props;\n\n      if (!isRectangularBounds(bounds)) {\n        throw new Error('_imageCoordinateSystem only supports rectangular bounds');\n      }\n\n      const defaultImageCoordinateSystem = this.context.viewport.resolution ? LNGLAT : CARTESIAN;\n      imageCoordinateSystem = imageCoordinateSystem === LNGLAT ? LNGLAT : CARTESIAN;\n\n      if (imageCoordinateSystem === LNGLAT && defaultImageCoordinateSystem === CARTESIAN) {\n        return {\n          coordinateConversion: -1,\n          bounds\n        };\n      }\n\n      if (imageCoordinateSystem === CARTESIAN && defaultImageCoordinateSystem === LNGLAT) {\n        const bottomLeft = lngLatToWorld([bounds[0], bounds[1]]);\n        const topRight = lngLatToWorld([bounds[2], bounds[3]]);\n        return {\n          coordinateConversion: 1,\n          bounds: [bottomLeft[0], bottomLeft[1], topRight[0], topRight[1]]\n        };\n      }\n    }\n\n    return {\n      coordinateConversion: 0,\n      bounds: [0, 0, 0, 0]\n    };\n  }\n\n}\n\n_defineProperty(BitmapLayer, \"layerName\", 'BitmapLayer');\n\n_defineProperty(BitmapLayer, \"defaultProps\", defaultProps);\n\nfunction unpackUVsFromRGB(color) {\n  const [u, v, fracUV] = color;\n  const vFrac = (fracUV & 0xf0) / 256;\n  const uFrac = (fracUV & 0x0f) / 16;\n  return [(u + uFrac) / 256, (v + vFrac) / 256];\n}\n\nfunction isRectangularBounds(bounds) {\n  return Number.isFinite(bounds[0]);\n}\n//# sourceMappingURL=bitmap-layer.js.map","import { log } from '@deck.gl/core';\nimport { Geometry, uid } from '@luma.gl/core';\nimport { modifyPolygonWindingDirection, WINDING } from '@math.gl/polygon';\nexport default class ColumnGeometry extends Geometry {\n  constructor(props) {\n    const {\n      id = uid('column-geometry')\n    } = props;\n    const {\n      indices,\n      attributes\n    } = tesselateColumn(props);\n    super({ ...props,\n      id,\n      indices,\n      attributes\n    });\n  }\n\n}\n\nfunction tesselateColumn(props) {\n  const {\n    radius,\n    height = 1,\n    nradial = 10\n  } = props;\n  let {\n    vertices\n  } = props;\n\n  if (vertices) {\n    log.assert(vertices.length >= nradial);\n    vertices = vertices.flatMap(v => [v[0], v[1]]);\n    modifyPolygonWindingDirection(vertices, WINDING.COUNTER_CLOCKWISE);\n  }\n\n  const isExtruded = height > 0;\n  const vertsAroundEdge = nradial + 1;\n  const numVertices = isExtruded ? vertsAroundEdge * 3 + 1 : nradial;\n  const stepAngle = Math.PI * 2 / nradial;\n  const indices = new Uint16Array(isExtruded ? nradial * 3 * 2 : 0);\n  const positions = new Float32Array(numVertices * 3);\n  const normals = new Float32Array(numVertices * 3);\n  let i = 0;\n\n  if (isExtruded) {\n    for (let j = 0; j < vertsAroundEdge; j++) {\n      const a = j * stepAngle;\n      const vertexIndex = j % nradial;\n      const sin = Math.sin(a);\n      const cos = Math.cos(a);\n\n      for (let k = 0; k < 2; k++) {\n        positions[i + 0] = vertices ? vertices[vertexIndex * 2] : cos * radius;\n        positions[i + 1] = vertices ? vertices[vertexIndex * 2 + 1] : sin * radius;\n        positions[i + 2] = (1 / 2 - k) * height;\n        normals[i + 0] = vertices ? vertices[vertexIndex * 2] : cos;\n        normals[i + 1] = vertices ? vertices[vertexIndex * 2 + 1] : sin;\n        i += 3;\n      }\n    }\n\n    positions[i + 0] = positions[i - 3];\n    positions[i + 1] = positions[i - 2];\n    positions[i + 2] = positions[i - 1];\n    i += 3;\n  }\n\n  for (let j = isExtruded ? 0 : 1; j < vertsAroundEdge; j++) {\n    const v = Math.floor(j / 2) * Math.sign(0.5 - j % 2);\n    const a = v * stepAngle;\n    const vertexIndex = (v + nradial) % nradial;\n    const sin = Math.sin(a);\n    const cos = Math.cos(a);\n    positions[i + 0] = vertices ? vertices[vertexIndex * 2] : cos * radius;\n    positions[i + 1] = vertices ? vertices[vertexIndex * 2 + 1] : sin * radius;\n    positions[i + 2] = height / 2;\n    normals[i + 2] = 1;\n    i += 3;\n  }\n\n  if (isExtruded) {\n    let index = 0;\n\n    for (let j = 0; j < nradial; j++) {\n      indices[index++] = j * 2 + 0;\n      indices[index++] = j * 2 + 2;\n      indices[index++] = j * 2 + 0;\n      indices[index++] = j * 2 + 1;\n      indices[index++] = j * 2 + 1;\n      indices[index++] = j * 2 + 3;\n    }\n  }\n\n  return {\n    indices,\n    attributes: {\n      POSITION: {\n        size: 3,\n        value: positions\n      },\n      NORMAL: {\n        size: 3,\n        value: normals\n      }\n    }\n  };\n}\n//# sourceMappingURL=column-geometry.js.map","export default \"#version 300 es\\n\\n#define SHADER_NAME column-layer-vertex-shader\\n\\nin vec3 positions;\\nin vec3 normals;\\n\\nin vec3 instancePositions;\\nin float instanceElevations;\\nin vec3 instancePositions64Low;\\nin vec4 instanceFillColors;\\nin vec4 instanceLineColors;\\nin float instanceStrokeWidths;\\n\\nin vec3 instancePickingColors;\\nuniform float opacity;\\nuniform float radius;\\nuniform float angle;\\nuniform vec2 offset;\\nuniform bool extruded;\\nuniform bool stroked;\\nuniform bool isStroke;\\nuniform float coverage;\\nuniform float elevationScale;\\nuniform float edgeDistance;\\nuniform float widthScale;\\nuniform float widthMinPixels;\\nuniform float widthMaxPixels;\\nuniform int radiusUnits;\\nuniform int widthUnits;\\nout vec4 vColor;\\n#ifdef FLAT_SHADING\\nout vec4 position_commonspace;\\n#endif\\n\\nvoid main(void) {\\n  geometry.worldPosition = instancePositions;\\n\\n  vec4 color = isStroke ? instanceLineColors : instanceFillColors;\\n  mat2 rotationMatrix = mat2(cos(angle), sin(angle), -sin(angle), cos(angle));\\n  float elevation = 0.0;\\n  float strokeOffsetRatio = 1.0;\\n\\n  if (extruded) {\\n    elevation = instanceElevations * (positions.z + 1.0) / 2.0 * elevationScale;\\n  } else if (stroked) {\\n    float widthPixels = clamp(\\n      project_size_to_pixel(instanceStrokeWidths * widthScale, widthUnits),\\n      widthMinPixels, widthMaxPixels) / 2.0;\\n    float halfOffset = project_pixel_size(widthPixels) / project_size(edgeDistance * coverage * radius);\\n    if (isStroke) {\\n      strokeOffsetRatio -= sign(positions.z) * halfOffset;\\n    } else {\\n      strokeOffsetRatio -= halfOffset;\\n    }\\n  }\\n  float shouldRender = float(color.a > 0.0 && instanceElevations >= 0.0);\\n  float dotRadius = radius * coverage * shouldRender;\\n\\n  geometry.pickingColor = instancePickingColors;\\n  vec3 centroidPosition = vec3(instancePositions.xy, instancePositions.z + elevation);\\n  vec3 centroidPosition64Low = instancePositions64Low;\\n  vec2 offset = (rotationMatrix * positions.xy * strokeOffsetRatio + offset) * dotRadius;\\n  if (radiusUnits == UNIT_METERS) {\\n    offset = project_size(offset);\\n  }\\n  vec3 pos = vec3(offset, 0.);\\n  DECKGL_FILTER_SIZE(pos, geometry);\\n\\n  gl_Position = project_position_to_clipspace(centroidPosition, centroidPosition64Low, pos, geometry.position);\\n  geometry.normal = project_normal(vec3(rotationMatrix * normals.xy, normals.z));\\n  DECKGL_FILTER_GL_POSITION(gl_Position, geometry);\\n  if (extruded && !isStroke) {\\n#ifdef FLAT_SHADING\\n    position_commonspace = geometry.position;\\n    vColor = vec4(color.rgb, color.a * opacity);\\n#else\\n    vec3 lightColor = lighting_getLightColor(color.rgb, project_uCameraPosition, geometry.position.xyz, geometry.normal);\\n    vColor = vec4(lightColor, color.a * opacity);\\n#endif\\n  } else {\\n    vColor = vec4(color.rgb, color.a * opacity);\\n  }\\n  DECKGL_FILTER_COLOR(vColor, geometry);\\n}\\n\";\n//# sourceMappingURL=column-layer-vertex.glsl.js.map","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Layer, project32, gouraudLighting, phongLighting, picking, UNIT } from '@deck.gl/core';\nimport { Model, isWebGL2, hasFeature, FEATURES } from '@luma.gl/core';\nimport ColumnGeometry from './column-geometry';\nimport vs from './column-layer-vertex.glsl';\nimport fs from './column-layer-fragment.glsl';\nconst DEFAULT_COLOR = [0, 0, 0, 255];\nconst defaultProps = {\n  diskResolution: {\n    type: 'number',\n    min: 4,\n    value: 20\n  },\n  vertices: null,\n  radius: {\n    type: 'number',\n    min: 0,\n    value: 1000\n  },\n  angle: {\n    type: 'number',\n    value: 0\n  },\n  offset: {\n    type: 'array',\n    value: [0, 0]\n  },\n  coverage: {\n    type: 'number',\n    min: 0,\n    max: 1,\n    value: 1\n  },\n  elevationScale: {\n    type: 'number',\n    min: 0,\n    value: 1\n  },\n  radiusUnits: 'meters',\n  lineWidthUnits: 'meters',\n  lineWidthScale: 1,\n  lineWidthMinPixels: 0,\n  lineWidthMaxPixels: Number.MAX_SAFE_INTEGER,\n  extruded: true,\n  wireframe: false,\n  filled: true,\n  stroked: false,\n  getPosition: {\n    type: 'accessor',\n    value: x => x.position\n  },\n  getFillColor: {\n    type: 'accessor',\n    value: DEFAULT_COLOR\n  },\n  getLineColor: {\n    type: 'accessor',\n    value: DEFAULT_COLOR\n  },\n  getLineWidth: {\n    type: 'accessor',\n    value: 1\n  },\n  getElevation: {\n    type: 'accessor',\n    value: 1000\n  },\n  material: true,\n  getColor: {\n    deprecatedFor: ['getFillColor', 'getLineColor']\n  }\n};\nexport default class ColumnLayer extends Layer {\n  getShaders() {\n    const {\n      gl\n    } = this.context;\n    const transpileToGLSL100 = !isWebGL2(gl);\n    const defines = {};\n    const useDerivatives = this.props.flatShading && hasFeature(gl, FEATURES.GLSL_DERIVATIVES);\n\n    if (useDerivatives) {\n      defines.FLAT_SHADING = 1;\n    }\n\n    return super.getShaders({\n      vs,\n      fs,\n      defines,\n      transpileToGLSL100,\n      modules: [project32, useDerivatives ? phongLighting : gouraudLighting, picking]\n    });\n  }\n\n  initializeState() {\n    const attributeManager = this.getAttributeManager();\n    attributeManager.addInstanced({\n      instancePositions: {\n        size: 3,\n        type: 5130,\n        fp64: this.use64bitPositions(),\n        transition: true,\n        accessor: 'getPosition'\n      },\n      instanceElevations: {\n        size: 1,\n        transition: true,\n        accessor: 'getElevation'\n      },\n      instanceFillColors: {\n        size: this.props.colorFormat.length,\n        type: 5121,\n        normalized: true,\n        transition: true,\n        accessor: 'getFillColor',\n        defaultValue: DEFAULT_COLOR\n      },\n      instanceLineColors: {\n        size: this.props.colorFormat.length,\n        type: 5121,\n        normalized: true,\n        transition: true,\n        accessor: 'getLineColor',\n        defaultValue: DEFAULT_COLOR\n      },\n      instanceStrokeWidths: {\n        size: 1,\n        accessor: 'getLineWidth',\n        transition: true\n      }\n    });\n  }\n\n  updateState(params) {\n    super.updateState(params);\n    const {\n      props,\n      oldProps,\n      changeFlags\n    } = params;\n    const regenerateModels = changeFlags.extensionsChanged || props.flatShading !== oldProps.flatShading;\n\n    if (regenerateModels) {\n      var _this$state$model;\n\n      const {\n        gl\n      } = this.context;\n      (_this$state$model = this.state.model) === null || _this$state$model === void 0 ? void 0 : _this$state$model.delete();\n      this.state.model = this._getModel(gl);\n      this.getAttributeManager().invalidateAll();\n    }\n\n    if (regenerateModels || props.diskResolution !== oldProps.diskResolution || props.vertices !== oldProps.vertices || (props.extruded || props.stroked) !== (oldProps.extruded || oldProps.stroked)) {\n      this._updateGeometry(props);\n    }\n  }\n\n  getGeometry(diskResolution, vertices, hasThinkness) {\n    const geometry = new ColumnGeometry({\n      radius: 1,\n      height: hasThinkness ? 2 : 0,\n      vertices,\n      nradial: diskResolution\n    });\n    let meanVertexDistance = 0;\n\n    if (vertices) {\n      for (let i = 0; i < diskResolution; i++) {\n        const p = vertices[i];\n        const d = Math.sqrt(p[0] * p[0] + p[1] * p[1]);\n        meanVertexDistance += d / diskResolution;\n      }\n    } else {\n      meanVertexDistance = 1;\n    }\n\n    this.setState({\n      edgeDistance: Math.cos(Math.PI / diskResolution) * meanVertexDistance\n    });\n    return geometry;\n  }\n\n  _getModel(gl) {\n    return new Model(gl, { ...this.getShaders(),\n      id: this.props.id,\n      isInstanced: true\n    });\n  }\n\n  _updateGeometry({\n    diskResolution,\n    vertices,\n    extruded,\n    stroked\n  }) {\n    const geometry = this.getGeometry(diskResolution, vertices, extruded || stroked);\n    this.setState({\n      fillVertexCount: geometry.attributes.POSITION.value.length / 3,\n      wireframeVertexCount: geometry.indices.value.length\n    });\n    this.state.model.setProps({\n      geometry\n    });\n  }\n\n  draw({\n    uniforms\n  }) {\n    const {\n      lineWidthUnits,\n      lineWidthScale,\n      lineWidthMinPixels,\n      lineWidthMaxPixels,\n      radiusUnits,\n      elevationScale,\n      extruded,\n      filled,\n      stroked,\n      wireframe,\n      offset,\n      coverage,\n      radius,\n      angle\n    } = this.props;\n    const {\n      model,\n      fillVertexCount,\n      wireframeVertexCount,\n      edgeDistance\n    } = this.state;\n    model.setUniforms(uniforms).setUniforms({\n      radius,\n      angle: angle / 180 * Math.PI,\n      offset,\n      extruded,\n      stroked,\n      coverage,\n      elevationScale,\n      edgeDistance,\n      radiusUnits: UNIT[radiusUnits],\n      widthUnits: UNIT[lineWidthUnits],\n      widthScale: lineWidthScale,\n      widthMinPixels: lineWidthMinPixels,\n      widthMaxPixels: lineWidthMaxPixels\n    });\n\n    if (extruded && wireframe) {\n      model.setProps({\n        isIndexed: true\n      });\n      model.setVertexCount(wireframeVertexCount).setDrawMode(1).setUniforms({\n        isStroke: true\n      }).draw();\n    }\n\n    if (filled) {\n      model.setProps({\n        isIndexed: false\n      });\n      model.setVertexCount(fillVertexCount).setDrawMode(5).setUniforms({\n        isStroke: false\n      }).draw();\n    }\n\n    if (!extruded && stroked) {\n      model.setProps({\n        isIndexed: false\n      });\n      model.setVertexCount(fillVertexCount * 2 / 3).setDrawMode(5).setUniforms({\n        isStroke: true\n      }).draw();\n    }\n  }\n\n}\n\n_defineProperty(ColumnLayer, \"layerName\", 'ColumnLayer');\n\n_defineProperty(ColumnLayer, \"defaultProps\", defaultProps);\n//# sourceMappingURL=column-layer.js.map","export default \"#version 300 es\\n#define SHADER_NAME column-layer-fragment-shader\\n\\nprecision highp float;\\n\\nuniform vec3 project_uCameraPosition;\\nuniform bool extruded;\\nuniform bool isStroke;\\n\\nout vec4 fragColor;\\n\\nin vec4 vColor;\\n#ifdef FLAT_SHADING\\nin vec4 position_commonspace;\\n#endif\\n\\nvoid main(void) {\\n  fragColor = vColor;\\n#ifdef FLAT_SHADING\\n  if (extruded && !isStroke && !picking_uActive) {\\n    vec3 normal = normalize(cross(dFdx(position_commonspace.xyz), dFdy(position_commonspace.xyz)));\\n    fragColor.rgb = lighting_getLightColor(vColor.rgb, project_uCameraPosition, position_commonspace.xyz, normal);\\n  }\\n#endif\\n  DECKGL_FILTER_COLOR(fragColor, geometry);\\n}\\n\";\n//# sourceMappingURL=column-layer-fragment.glsl.js.map","import IconLayer from '../icon-layer/icon-layer';\nimport ScatterplotLayer from '../scatterplot-layer/scatterplot-layer';\nimport TextLayer from '../text-layer/text-layer';\nimport PathLayer from '../path-layer/path-layer';\nimport SolidPolygonLayer from '../solid-polygon-layer/solid-polygon-layer';\nexport const POINT_LAYER = {\n  circle: {\n    type: ScatterplotLayer,\n    props: {\n      filled: 'filled',\n      stroked: 'stroked',\n      lineWidthMaxPixels: 'lineWidthMaxPixels',\n      lineWidthMinPixels: 'lineWidthMinPixels',\n      lineWidthScale: 'lineWidthScale',\n      lineWidthUnits: 'lineWidthUnits',\n      pointRadiusMaxPixels: 'radiusMaxPixels',\n      pointRadiusMinPixels: 'radiusMinPixels',\n      pointRadiusScale: 'radiusScale',\n      pointRadiusUnits: 'radiusUnits',\n      pointAntialiasing: 'antialiasing',\n      pointBillboard: 'billboard',\n      getFillColor: 'getFillColor',\n      getLineColor: 'getLineColor',\n      getLineWidth: 'getLineWidth',\n      getPointRadius: 'getRadius'\n    }\n  },\n  icon: {\n    type: IconLayer,\n    props: {\n      iconAtlas: 'iconAtlas',\n      iconMapping: 'iconMapping',\n      iconSizeMaxPixels: 'sizeMaxPixels',\n      iconSizeMinPixels: 'sizeMinPixels',\n      iconSizeScale: 'sizeScale',\n      iconSizeUnits: 'sizeUnits',\n      iconAlphaCutoff: 'alphaCutoff',\n      iconBillboard: 'billboard',\n      getIcon: 'getIcon',\n      getIconAngle: 'getAngle',\n      getIconColor: 'getColor',\n      getIconPixelOffset: 'getPixelOffset',\n      getIconSize: 'getSize'\n    }\n  },\n  text: {\n    type: TextLayer,\n    props: {\n      textSizeMaxPixels: 'sizeMaxPixels',\n      textSizeMinPixels: 'sizeMinPixels',\n      textSizeScale: 'sizeScale',\n      textSizeUnits: 'sizeUnits',\n      textBackground: 'background',\n      textBackgroundPadding: 'backgroundPadding',\n      textFontFamily: 'fontFamily',\n      textFontWeight: 'fontWeight',\n      textLineHeight: 'lineHeight',\n      textMaxWidth: 'maxWidth',\n      textOutlineColor: 'outlineColor',\n      textOutlineWidth: 'outlineWidth',\n      textWordBreak: 'wordBreak',\n      textCharacterSet: 'characterSet',\n      textBillboard: 'billboard',\n      textFontSettings: 'fontSettings',\n      getText: 'getText',\n      getTextAngle: 'getAngle',\n      getTextColor: 'getColor',\n      getTextPixelOffset: 'getPixelOffset',\n      getTextSize: 'getSize',\n      getTextAnchor: 'getTextAnchor',\n      getTextAlignmentBaseline: 'getAlignmentBaseline',\n      getTextBackgroundColor: 'getBackgroundColor',\n      getTextBorderColor: 'getBorderColor',\n      getTextBorderWidth: 'getBorderWidth'\n    }\n  }\n};\nexport const LINE_LAYER = {\n  type: PathLayer,\n  props: {\n    lineWidthUnits: 'widthUnits',\n    lineWidthScale: 'widthScale',\n    lineWidthMinPixels: 'widthMinPixels',\n    lineWidthMaxPixels: 'widthMaxPixels',\n    lineJointRounded: 'jointRounded',\n    lineCapRounded: 'capRounded',\n    lineMiterLimit: 'miterLimit',\n    lineBillboard: 'billboard',\n    getLineColor: 'getColor',\n    getLineWidth: 'getWidth'\n  }\n};\nexport const POLYGON_LAYER = {\n  type: SolidPolygonLayer,\n  props: {\n    extruded: 'extruded',\n    filled: 'filled',\n    wireframe: 'wireframe',\n    elevationScale: 'elevationScale',\n    material: 'material',\n    _full3d: '_full3d',\n    getElevation: 'getElevation',\n    getFillColor: 'getFillColor',\n    getLineColor: 'getLineColor'\n  }\n};\nexport function getDefaultProps({\n  type,\n  props\n}) {\n  const result = {};\n\n  for (const key in props) {\n    result[key] = type.defaultProps[props[key]];\n  }\n\n  return result;\n}\nexport function forwardProps(layer, mapping) {\n  const {\n    transitions,\n    updateTriggers\n  } = layer.props;\n  const result = {\n    updateTriggers: {},\n    transitions: transitions && {\n      getPosition: transitions.geometry\n    }\n  };\n\n  for (const sourceKey in mapping) {\n    const targetKey = mapping[sourceKey];\n    let value = layer.props[sourceKey];\n\n    if (sourceKey.startsWith('get')) {\n      value = layer.getSubLayerAccessor(value);\n      result.updateTriggers[targetKey] = updateTriggers[sourceKey];\n\n      if (transitions) {\n        result.transitions[targetKey] = transitions[sourceKey];\n      }\n    }\n\n    result[targetKey] = value;\n  }\n\n  return result;\n}\n//# sourceMappingURL=sub-layer-map.js.map","import { log } from '@deck.gl/core';\nexport function getGeojsonFeatures(geojson) {\n  if (Array.isArray(geojson)) {\n    return geojson;\n  }\n\n  log.assert(geojson.type, 'GeoJSON does not have type');\n\n  switch (geojson.type) {\n    case 'Feature':\n      return [geojson];\n\n    case 'FeatureCollection':\n      log.assert(Array.isArray(geojson.features), 'GeoJSON does not have features array');\n      return geojson.features;\n\n    default:\n      return [{\n        geometry: geojson\n      }];\n  }\n}\nexport function separateGeojsonFeatures(features, wrapFeature, dataRange = {}) {\n  const separated = {\n    pointFeatures: [],\n    lineFeatures: [],\n    polygonFeatures: [],\n    polygonOutlineFeatures: []\n  };\n  const {\n    startRow = 0,\n    endRow = features.length\n  } = dataRange;\n\n  for (let featureIndex = startRow; featureIndex < endRow; featureIndex++) {\n    const feature = features[featureIndex];\n    const {\n      geometry\n    } = feature;\n\n    if (!geometry) {\n      continue;\n    }\n\n    if (geometry.type === 'GeometryCollection') {\n      log.assert(Array.isArray(geometry.geometries), 'GeoJSON does not have geometries array');\n      const {\n        geometries\n      } = geometry;\n\n      for (let i = 0; i < geometries.length; i++) {\n        const subGeometry = geometries[i];\n        separateGeometry(subGeometry, separated, wrapFeature, feature, featureIndex);\n      }\n    } else {\n      separateGeometry(geometry, separated, wrapFeature, feature, featureIndex);\n    }\n  }\n\n  return separated;\n}\n\nfunction separateGeometry(geometry, separated, wrapFeature, sourceFeature, sourceFeatureIndex) {\n  const {\n    type,\n    coordinates\n  } = geometry;\n  const {\n    pointFeatures,\n    lineFeatures,\n    polygonFeatures,\n    polygonOutlineFeatures\n  } = separated;\n\n  if (!validateGeometry(type, coordinates)) {\n    log.warn(\"\".concat(type, \" coordinates are malformed\"))();\n    return;\n  }\n\n  switch (type) {\n    case 'Point':\n      pointFeatures.push(wrapFeature({\n        geometry\n      }, sourceFeature, sourceFeatureIndex));\n      break;\n\n    case 'MultiPoint':\n      coordinates.forEach(point => {\n        pointFeatures.push(wrapFeature({\n          geometry: {\n            type: 'Point',\n            coordinates: point\n          }\n        }, sourceFeature, sourceFeatureIndex));\n      });\n      break;\n\n    case 'LineString':\n      lineFeatures.push(wrapFeature({\n        geometry\n      }, sourceFeature, sourceFeatureIndex));\n      break;\n\n    case 'MultiLineString':\n      coordinates.forEach(path => {\n        lineFeatures.push(wrapFeature({\n          geometry: {\n            type: 'LineString',\n            coordinates: path\n          }\n        }, sourceFeature, sourceFeatureIndex));\n      });\n      break;\n\n    case 'Polygon':\n      polygonFeatures.push(wrapFeature({\n        geometry\n      }, sourceFeature, sourceFeatureIndex));\n      coordinates.forEach(path => {\n        polygonOutlineFeatures.push(wrapFeature({\n          geometry: {\n            type: 'LineString',\n            coordinates: path\n          }\n        }, sourceFeature, sourceFeatureIndex));\n      });\n      break;\n\n    case 'MultiPolygon':\n      coordinates.forEach(polygon => {\n        polygonFeatures.push(wrapFeature({\n          geometry: {\n            type: 'Polygon',\n            coordinates: polygon\n          }\n        }, sourceFeature, sourceFeatureIndex));\n        polygon.forEach(path => {\n          polygonOutlineFeatures.push(wrapFeature({\n            geometry: {\n              type: 'LineString',\n              coordinates: path\n            }\n          }, sourceFeature, sourceFeatureIndex));\n        });\n      });\n      break;\n\n    default:\n  }\n}\n\nconst COORDINATE_NEST_LEVEL = {\n  Point: 1,\n  MultiPoint: 2,\n  LineString: 2,\n  MultiLineString: 3,\n  Polygon: 3,\n  MultiPolygon: 4\n};\nexport function validateGeometry(type, coordinates) {\n  let nestLevel = COORDINATE_NEST_LEVEL[type];\n  log.assert(nestLevel, \"Unknown GeoJSON type \".concat(type));\n\n  while (coordinates && --nestLevel > 0) {\n    coordinates = coordinates[0];\n  }\n\n  return coordinates && Number.isFinite(coordinates[0]);\n}\n//# sourceMappingURL=geojson.js.map","import { calculatePickingColors } from './geojson-binary';\n\nfunction createEmptyLayerProps() {\n  return {\n    points: {},\n    lines: {},\n    polygons: {},\n    polygonsOutline: {}\n  };\n}\n\nfunction getCoordinates(f) {\n  return f.geometry.coordinates;\n}\n\nexport function createLayerPropsFromFeatures(features, featuresDiff) {\n  const layerProps = createEmptyLayerProps();\n  const {\n    pointFeatures,\n    lineFeatures,\n    polygonFeatures,\n    polygonOutlineFeatures\n  } = features;\n  layerProps.points.data = pointFeatures;\n\n  layerProps.points._dataDiff = featuresDiff.pointFeatures && (() => featuresDiff.pointFeatures);\n\n  layerProps.points.getPosition = getCoordinates;\n  layerProps.lines.data = lineFeatures;\n\n  layerProps.lines._dataDiff = featuresDiff.lineFeatures && (() => featuresDiff.lineFeatures);\n\n  layerProps.lines.getPath = getCoordinates;\n  layerProps.polygons.data = polygonFeatures;\n\n  layerProps.polygons._dataDiff = featuresDiff.polygonFeatures && (() => featuresDiff.polygonFeatures);\n\n  layerProps.polygons.getPolygon = getCoordinates;\n  layerProps.polygonsOutline.data = polygonOutlineFeatures;\n\n  layerProps.polygonsOutline._dataDiff = featuresDiff.polygonOutlineFeatures && (() => featuresDiff.polygonOutlineFeatures);\n\n  layerProps.polygonsOutline.getPath = getCoordinates;\n  return layerProps;\n}\nexport function createLayerPropsFromBinary(geojsonBinary, encodePickingColor) {\n  const layerProps = createEmptyLayerProps();\n  const {\n    points,\n    lines,\n    polygons\n  } = geojsonBinary;\n  const customPickingColors = calculatePickingColors(geojsonBinary, encodePickingColor);\n  layerProps.points.data = {\n    length: points.positions.value.length / points.positions.size,\n    attributes: { ...points.attributes,\n      getPosition: points.positions,\n      instancePickingColors: {\n        size: 3,\n        value: customPickingColors.points\n      }\n    },\n    properties: points.properties,\n    numericProps: points.numericProps,\n    featureIds: points.featureIds\n  };\n  layerProps.lines.data = {\n    length: lines.pathIndices.value.length - 1,\n    startIndices: lines.pathIndices.value,\n    attributes: { ...lines.attributes,\n      getPath: lines.positions,\n      instancePickingColors: {\n        size: 3,\n        value: customPickingColors.lines\n      }\n    },\n    properties: lines.properties,\n    numericProps: lines.numericProps,\n    featureIds: lines.featureIds\n  };\n  layerProps.lines._pathType = 'open';\n  layerProps.polygons.data = {\n    length: polygons.polygonIndices.value.length - 1,\n    startIndices: polygons.polygonIndices.value,\n    attributes: { ...polygons.attributes,\n      getPolygon: polygons.positions,\n      pickingColors: {\n        size: 3,\n        value: customPickingColors.polygons\n      }\n    },\n    properties: polygons.properties,\n    numericProps: polygons.numericProps,\n    featureIds: polygons.featureIds\n  };\n  layerProps.polygons._normalize = false;\n\n  if (polygons.triangles) {\n    layerProps.polygons.data.attributes.indices = polygons.triangles.value;\n  }\n\n  layerProps.polygonsOutline.data = {\n    length: polygons.primitivePolygonIndices.value.length - 1,\n    startIndices: polygons.primitivePolygonIndices.value,\n    attributes: { ...polygons.attributes,\n      getPath: polygons.positions,\n      instancePickingColors: {\n        size: 3,\n        value: customPickingColors.polygons\n      }\n    },\n    properties: polygons.properties,\n    numericProps: polygons.numericProps,\n    featureIds: polygons.featureIds\n  };\n  layerProps.polygonsOutline._pathType = 'open';\n  return layerProps;\n}\n//# sourceMappingURL=geojson-layer-props.js.map","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { CompositeLayer } from '@deck.gl/core';\nimport { replaceInRange } from '../utils';\nimport { binaryToFeatureForAccesor } from './geojson-binary';\nimport { POINT_LAYER, LINE_LAYER, POLYGON_LAYER, getDefaultProps, forwardProps } from './sub-layer-map';\nimport { getGeojsonFeatures, separateGeojsonFeatures } from './geojson';\nimport { createLayerPropsFromFeatures, createLayerPropsFromBinary } from './geojson-layer-props';\nconst FEATURE_TYPES = ['points', 'linestrings', 'polygons'];\nconst defaultProps = { ...getDefaultProps(POINT_LAYER.circle),\n  ...getDefaultProps(POINT_LAYER.icon),\n  ...getDefaultProps(POINT_LAYER.text),\n  ...getDefaultProps(LINE_LAYER),\n  ...getDefaultProps(POLYGON_LAYER),\n  stroked: true,\n  filled: true,\n  extruded: false,\n  wireframe: false,\n  _full3d: false,\n  iconAtlas: {\n    type: 'object',\n    value: null\n  },\n  iconMapping: {\n    type: 'object',\n    value: {}\n  },\n  getIcon: {\n    type: 'accessor',\n    value: f => f.properties.icon\n  },\n  getText: {\n    type: 'accessor',\n    value: f => f.properties.text\n  },\n  pointType: 'circle',\n  getRadius: {\n    deprecatedFor: 'getPointRadius'\n  }\n};\nexport default class GeoJsonLayer extends CompositeLayer {\n  initializeState() {\n    this.state = {\n      layerProps: {},\n      features: {}\n    };\n  }\n\n  updateState({\n    props,\n    changeFlags\n  }) {\n    if (!changeFlags.dataChanged) {\n      return;\n    }\n\n    const {\n      data\n    } = this.props;\n    const binary = data && 'points' in data && 'polygons' in data && 'lines' in data;\n    this.setState({\n      binary\n    });\n\n    if (binary) {\n      this._updateStateBinary({\n        props,\n        changeFlags\n      });\n    } else {\n      this._updateStateJSON({\n        props,\n        changeFlags\n      });\n    }\n  }\n\n  _updateStateBinary({\n    props,\n    changeFlags\n  }) {\n    const layerProps = createLayerPropsFromBinary(props.data, this.encodePickingColor);\n    this.setState({\n      layerProps\n    });\n  }\n\n  _updateStateJSON({\n    props,\n    changeFlags\n  }) {\n    const features = getGeojsonFeatures(props.data);\n    const wrapFeature = this.getSubLayerRow.bind(this);\n    let newFeatures = {};\n    const featuresDiff = {};\n\n    if (Array.isArray(changeFlags.dataChanged)) {\n      const oldFeatures = this.state.features;\n\n      for (const key in oldFeatures) {\n        newFeatures[key] = oldFeatures[key].slice();\n        featuresDiff[key] = [];\n      }\n\n      for (const dataRange of changeFlags.dataChanged) {\n        const partialFeatures = separateGeojsonFeatures(features, wrapFeature, dataRange);\n\n        for (const key in oldFeatures) {\n          featuresDiff[key].push(replaceInRange({\n            data: newFeatures[key],\n            getIndex: f => f.__source.index,\n            dataRange,\n            replace: partialFeatures[key]\n          }));\n        }\n      }\n    } else {\n      newFeatures = separateGeojsonFeatures(features, wrapFeature);\n    }\n\n    const layerProps = createLayerPropsFromFeatures(newFeatures, featuresDiff);\n    this.setState({\n      features: newFeatures,\n      featuresDiff,\n      layerProps\n    });\n  }\n\n  getPickingInfo(params) {\n    const info = super.getPickingInfo(params);\n    const {\n      index,\n      sourceLayer\n    } = info;\n    info.featureType = FEATURE_TYPES.find(ft => sourceLayer.id.startsWith(\"\".concat(this.id, \"-\").concat(ft, \"-\")));\n\n    if (index >= 0 && sourceLayer.id.startsWith(\"\".concat(this.id, \"-points-text\")) && this.state.binary) {\n      info.index = this.props.data.points.globalFeatureIds.value[index];\n    }\n\n    return info;\n  }\n\n  _updateAutoHighlight(info) {\n    const pointLayerIdPrefix = \"\".concat(this.id, \"-points-\");\n    const sourceIsPoints = info.featureType === 'points';\n\n    for (const layer of this.getSubLayers()) {\n      if (layer.id.startsWith(pointLayerIdPrefix) === sourceIsPoints) {\n        layer.updateAutoHighlight(info);\n      }\n    }\n  }\n\n  _renderPolygonLayer() {\n    const {\n      extruded,\n      wireframe\n    } = this.props;\n    const {\n      layerProps\n    } = this.state;\n    const id = 'polygons-fill';\n    const PolygonFillLayer = this.shouldRenderSubLayer(id, layerProps.polygons.data) && this.getSubLayerClass(id, POLYGON_LAYER.type);\n\n    if (PolygonFillLayer) {\n      const forwardedProps = forwardProps(this, POLYGON_LAYER.props);\n      const useLineColor = extruded && wireframe;\n\n      if (!useLineColor) {\n        delete forwardedProps.getLineColor;\n      }\n\n      forwardedProps.updateTriggers.lineColors = useLineColor;\n      return new PolygonFillLayer(forwardedProps, this.getSubLayerProps({\n        id,\n        updateTriggers: forwardedProps.updateTriggers\n      }), layerProps.polygons);\n    }\n\n    return null;\n  }\n\n  _renderLineLayers() {\n    const {\n      extruded,\n      stroked\n    } = this.props;\n    const {\n      layerProps\n    } = this.state;\n    const polygonStrokeLayerId = 'polygons-stroke';\n    const lineStringsLayerId = 'linestrings';\n    const PolygonStrokeLayer = !extruded && stroked && this.shouldRenderSubLayer(polygonStrokeLayerId, layerProps.polygonsOutline.data) && this.getSubLayerClass(polygonStrokeLayerId, LINE_LAYER.type);\n    const LineStringsLayer = this.shouldRenderSubLayer(lineStringsLayerId, layerProps.lines.data) && this.getSubLayerClass(lineStringsLayerId, LINE_LAYER.type);\n\n    if (PolygonStrokeLayer || LineStringsLayer) {\n      const forwardedProps = forwardProps(this, LINE_LAYER.props);\n      return [PolygonStrokeLayer && new PolygonStrokeLayer(forwardedProps, this.getSubLayerProps({\n        id: polygonStrokeLayerId,\n        updateTriggers: forwardedProps.updateTriggers\n      }), layerProps.polygonsOutline), LineStringsLayer && new LineStringsLayer(forwardedProps, this.getSubLayerProps({\n        id: lineStringsLayerId,\n        updateTriggers: forwardedProps.updateTriggers\n      }), layerProps.lines)];\n    }\n\n    return null;\n  }\n\n  _renderPointLayers() {\n    const {\n      pointType\n    } = this.props;\n    const {\n      layerProps,\n      binary\n    } = this.state;\n    let {\n      highlightedObjectIndex\n    } = this.props;\n\n    if (!binary && Number.isFinite(highlightedObjectIndex)) {\n      highlightedObjectIndex = layerProps.points.data.findIndex(d => d.__source.index === highlightedObjectIndex);\n    }\n\n    const types = new Set(pointType.split('+'));\n    const pointLayers = [];\n\n    for (const type of types) {\n      const id = \"points-\".concat(type);\n      const PointLayerMapping = POINT_LAYER[type];\n      const PointsLayer = PointLayerMapping && this.shouldRenderSubLayer(id, layerProps.points.data) && this.getSubLayerClass(id, PointLayerMapping.type);\n\n      if (PointsLayer) {\n        const forwardedProps = forwardProps(this, PointLayerMapping.props);\n        let pointsLayerProps = layerProps.points;\n\n        if (type === 'text' && binary) {\n          const {\n            instancePickingColors,\n            ...rest\n          } = pointsLayerProps.data.attributes;\n          pointsLayerProps = { ...pointsLayerProps,\n            data: { ...pointsLayerProps.data,\n              attributes: rest\n            }\n          };\n        }\n\n        pointLayers.push(new PointsLayer(forwardedProps, this.getSubLayerProps({\n          id,\n          updateTriggers: forwardedProps.updateTriggers,\n          highlightedObjectIndex\n        }), pointsLayerProps));\n      }\n    }\n\n    return pointLayers;\n  }\n\n  renderLayers() {\n    const {\n      extruded\n    } = this.props;\n\n    const polygonFillLayer = this._renderPolygonLayer();\n\n    const lineLayers = this._renderLineLayers();\n\n    const pointLayers = this._renderPointLayers();\n\n    return [!extruded && polygonFillLayer, lineLayers, pointLayers, extruded && polygonFillLayer];\n  }\n\n  getSubLayerAccessor(accessor) {\n    const {\n      binary\n    } = this.state;\n\n    if (!binary || typeof accessor !== 'function') {\n      return super.getSubLayerAccessor(accessor);\n    }\n\n    return (object, info) => {\n      const {\n        data,\n        index\n      } = info;\n      const feature = binaryToFeatureForAccesor(data, index);\n      return accessor(feature, info);\n    };\n  }\n\n}\n\n_defineProperty(GeoJsonLayer, \"layerName\", 'GeoJsonLayer');\n\n_defineProperty(GeoJsonLayer, \"defaultProps\", defaultProps);\n//# sourceMappingURL=geojson-layer.js.map","export function binaryToFeatureForAccesor(data, index) {\n  if (!data) {\n    return null;\n  }\n\n  const featureIndex = 'startIndices' in data ? data.startIndices[index] : index;\n  const geometryIndex = data.featureIds.value[featureIndex];\n\n  if (featureIndex !== -1) {\n    return getPropertiesForIndex(data, geometryIndex, featureIndex);\n  }\n\n  return null;\n}\n\nfunction getPropertiesForIndex(data, propertiesIndex, numericPropsIndex) {\n  const feature = {\n    properties: { ...data.properties[propertiesIndex]\n    }\n  };\n\n  for (const prop in data.numericProps) {\n    feature.properties[prop] = data.numericProps[prop].value[numericPropsIndex];\n  }\n\n  return feature;\n}\n\nexport function calculatePickingColors(geojsonBinary, encodePickingColor) {\n  const pickingColors = {\n    points: null,\n    lines: null,\n    polygons: null\n  };\n\n  for (const key in pickingColors) {\n    const featureIds = geojsonBinary[key].globalFeatureIds.value;\n    pickingColors[key] = new Uint8ClampedArray(featureIds.length * 3);\n    const pickingColor = [];\n\n    for (let i = 0; i < featureIds.length; i++) {\n      encodePickingColor(featureIds[i], pickingColor);\n      pickingColors[key][i * 3 + 0] = pickingColor[0];\n      pickingColors[key][i * 3 + 1] = pickingColor[1];\n      pickingColors[key][i * 3 + 2] = pickingColor[2];\n    }\n  }\n\n  return pickingColors;\n}\n//# sourceMappingURL=geojson-binary.js.map","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Texture2D, copyToTexture } from '@luma.gl/core';\nimport { load } from '@loaders.gl/core';\nimport { createIterable } from '@deck.gl/core';\nconst DEFAULT_CANVAS_WIDTH = 1024;\nconst DEFAULT_BUFFER = 4;\n\nconst noop = () => {};\n\nconst DEFAULT_TEXTURE_PARAMETERS = {\n  [10241]: 9987,\n  [10240]: 9729,\n  [10242]: 33071,\n  [10243]: 33071\n};\n\nfunction nextPowOfTwo(number) {\n  return Math.pow(2, Math.ceil(Math.log2(number)));\n}\n\nfunction resizeImage(ctx, imageData, maxWidth, maxHeight) {\n  const resizeRatio = Math.min(maxWidth / imageData.width, maxHeight / imageData.height);\n  const width = Math.floor(imageData.width * resizeRatio);\n  const height = Math.floor(imageData.height * resizeRatio);\n\n  if (resizeRatio === 1) {\n    return {\n      data: imageData,\n      width,\n      height\n    };\n  }\n\n  ctx.canvas.height = height;\n  ctx.canvas.width = width;\n  ctx.clearRect(0, 0, width, height);\n  ctx.drawImage(imageData, 0, 0, imageData.width, imageData.height, 0, 0, width, height);\n  return {\n    data: ctx.canvas,\n    width,\n    height\n  };\n}\n\nfunction getIconId(icon) {\n  return icon && (icon.id || icon.url);\n}\n\nfunction resizeTexture(texture, width, height, parameters) {\n  const oldWidth = texture.width;\n  const oldHeight = texture.height;\n  const newTexture = new Texture2D(texture.gl, {\n    width,\n    height,\n    parameters\n  });\n  copyToTexture(texture, newTexture, {\n    targetY: 0,\n    width: oldWidth,\n    height: oldHeight\n  });\n  texture.delete();\n  return newTexture;\n}\n\nfunction buildRowMapping(mapping, columns, yOffset) {\n  for (let i = 0; i < columns.length; i++) {\n    const {\n      icon,\n      xOffset\n    } = columns[i];\n    const id = getIconId(icon);\n    mapping[id] = { ...icon,\n      x: xOffset,\n      y: yOffset\n    };\n  }\n}\n\nexport function buildMapping({\n  icons,\n  buffer,\n  mapping = {},\n  xOffset = 0,\n  yOffset = 0,\n  rowHeight = 0,\n  canvasWidth\n}) {\n  let columns = [];\n\n  for (let i = 0; i < icons.length; i++) {\n    const icon = icons[i];\n    const id = getIconId(icon);\n\n    if (!mapping[id]) {\n      const {\n        height,\n        width\n      } = icon;\n\n      if (xOffset + width + buffer > canvasWidth) {\n        buildRowMapping(mapping, columns, yOffset);\n        xOffset = 0;\n        yOffset = rowHeight + yOffset + buffer;\n        rowHeight = 0;\n        columns = [];\n      }\n\n      columns.push({\n        icon,\n        xOffset\n      });\n      xOffset = xOffset + width + buffer;\n      rowHeight = Math.max(rowHeight, height);\n    }\n  }\n\n  if (columns.length > 0) {\n    buildRowMapping(mapping, columns, yOffset);\n  }\n\n  return {\n    mapping,\n    rowHeight,\n    xOffset,\n    yOffset,\n    canvasWidth,\n    canvasHeight: nextPowOfTwo(rowHeight + yOffset + buffer)\n  };\n}\nexport function getDiffIcons(data, getIcon, cachedIcons) {\n  if (!data || !getIcon) {\n    return null;\n  }\n\n  cachedIcons = cachedIcons || {};\n  const icons = {};\n  const {\n    iterable,\n    objectInfo\n  } = createIterable(data);\n\n  for (const object of iterable) {\n    objectInfo.index++;\n    const icon = getIcon(object, objectInfo);\n    const id = getIconId(icon);\n\n    if (!icon) {\n      throw new Error('Icon is missing.');\n    }\n\n    if (!icon.url) {\n      throw new Error('Icon url is missing.');\n    }\n\n    if (!icons[id] && (!cachedIcons[id] || icon.url !== cachedIcons[id].url)) {\n      icons[id] = { ...icon,\n        source: object,\n        sourceIndex: objectInfo.index\n      };\n    }\n  }\n\n  return icons;\n}\nexport default class IconManager {\n  constructor(gl, {\n    onUpdate = noop,\n    onError = noop\n  }) {\n    _defineProperty(this, \"gl\", void 0);\n\n    _defineProperty(this, \"onUpdate\", void 0);\n\n    _defineProperty(this, \"onError\", void 0);\n\n    _defineProperty(this, \"_loadOptions\", null);\n\n    _defineProperty(this, \"_texture\", null);\n\n    _defineProperty(this, \"_externalTexture\", null);\n\n    _defineProperty(this, \"_mapping\", {});\n\n    _defineProperty(this, \"_textureParameters\", null);\n\n    _defineProperty(this, \"_pendingCount\", 0);\n\n    _defineProperty(this, \"_autoPacking\", false);\n\n    _defineProperty(this, \"_xOffset\", 0);\n\n    _defineProperty(this, \"_yOffset\", 0);\n\n    _defineProperty(this, \"_rowHeight\", 0);\n\n    _defineProperty(this, \"_buffer\", DEFAULT_BUFFER);\n\n    _defineProperty(this, \"_canvasWidth\", DEFAULT_CANVAS_WIDTH);\n\n    _defineProperty(this, \"_canvasHeight\", 0);\n\n    _defineProperty(this, \"_canvas\", null);\n\n    this.gl = gl;\n    this.onUpdate = onUpdate;\n    this.onError = onError;\n  }\n\n  finalize() {\n    var _this$_texture;\n\n    (_this$_texture = this._texture) === null || _this$_texture === void 0 ? void 0 : _this$_texture.delete();\n  }\n\n  getTexture() {\n    return this._texture || this._externalTexture;\n  }\n\n  getIconMapping(icon) {\n    const id = this._autoPacking ? getIconId(icon) : icon;\n    return this._mapping[id] || {};\n  }\n\n  setProps({\n    loadOptions,\n    autoPacking,\n    iconAtlas,\n    iconMapping,\n    textureParameters\n  }) {\n    if (loadOptions) {\n      this._loadOptions = loadOptions;\n    }\n\n    if (autoPacking !== undefined) {\n      this._autoPacking = autoPacking;\n    }\n\n    if (iconMapping) {\n      this._mapping = iconMapping;\n    }\n\n    if (iconAtlas) {\n      var _this$_texture2;\n\n      (_this$_texture2 = this._texture) === null || _this$_texture2 === void 0 ? void 0 : _this$_texture2.delete();\n      this._texture = null;\n      this._externalTexture = iconAtlas;\n    }\n\n    if (textureParameters) {\n      this._textureParameters = textureParameters;\n    }\n  }\n\n  get isLoaded() {\n    return this._pendingCount === 0;\n  }\n\n  packIcons(data, getIcon) {\n    if (!this._autoPacking || typeof document === 'undefined') {\n      return;\n    }\n\n    const icons = Object.values(getDiffIcons(data, getIcon, this._mapping) || {});\n\n    if (icons.length > 0) {\n      const {\n        mapping,\n        xOffset,\n        yOffset,\n        rowHeight,\n        canvasHeight\n      } = buildMapping({\n        icons,\n        buffer: this._buffer,\n        canvasWidth: this._canvasWidth,\n        mapping: this._mapping,\n        rowHeight: this._rowHeight,\n        xOffset: this._xOffset,\n        yOffset: this._yOffset\n      });\n      this._rowHeight = rowHeight;\n      this._mapping = mapping;\n      this._xOffset = xOffset;\n      this._yOffset = yOffset;\n      this._canvasHeight = canvasHeight;\n\n      if (!this._texture) {\n        this._texture = new Texture2D(this.gl, {\n          width: this._canvasWidth,\n          height: this._canvasHeight,\n          parameters: this._textureParameters || DEFAULT_TEXTURE_PARAMETERS\n        });\n      }\n\n      if (this._texture.height !== this._canvasHeight) {\n        this._texture = resizeTexture(this._texture, this._canvasWidth, this._canvasHeight, this._textureParameters || DEFAULT_TEXTURE_PARAMETERS);\n      }\n\n      this.onUpdate();\n      this._canvas = this._canvas || document.createElement('canvas');\n\n      this._loadIcons(icons);\n    }\n  }\n\n  _loadIcons(icons) {\n    const ctx = this._canvas.getContext('2d', {\n      willReadFrequently: true\n    });\n\n    for (const icon of icons) {\n      this._pendingCount++;\n      load(icon.url, this._loadOptions).then(imageData => {\n        const id = getIconId(icon);\n        const iconDef = this._mapping[id];\n        const {\n          x,\n          y,\n          width: maxWidth,\n          height: maxHeight\n        } = iconDef;\n        const {\n          data,\n          width,\n          height\n        } = resizeImage(ctx, imageData, maxWidth, maxHeight);\n\n        this._texture.setSubImageData({\n          data,\n          x: x + (maxWidth - width) / 2,\n          y: y + (maxHeight - height) / 2,\n          width,\n          height\n        });\n\n        iconDef.width = width;\n        iconDef.height = height;\n\n        this._texture.generateMipmap();\n\n        this.onUpdate();\n      }).catch(error => {\n        this.onError({\n          url: icon.url,\n          source: icon.source,\n          sourceIndex: icon.sourceIndex,\n          loadOptions: this._loadOptions,\n          error\n        });\n      }).finally(() => {\n        this._pendingCount--;\n      });\n    }\n  }\n\n}\n//# sourceMappingURL=icon-manager.js.map","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Layer, project32, picking, log, UNIT } from '@deck.gl/core';\nimport { Model, Geometry } from '@luma.gl/core';\nimport vs from './icon-layer-vertex.glsl';\nimport fs from './icon-layer-fragment.glsl';\nimport IconManager from './icon-manager';\nconst DEFAULT_COLOR = [0, 0, 0, 255];\nconst defaultProps = {\n  iconAtlas: {\n    type: 'image',\n    value: null,\n    async: true\n  },\n  iconMapping: {\n    type: 'object',\n    value: {},\n    async: true\n  },\n  sizeScale: {\n    type: 'number',\n    value: 1,\n    min: 0\n  },\n  billboard: true,\n  sizeUnits: 'pixels',\n  sizeMinPixels: {\n    type: 'number',\n    min: 0,\n    value: 0\n  },\n  sizeMaxPixels: {\n    type: 'number',\n    min: 0,\n    value: Number.MAX_SAFE_INTEGER\n  },\n  alphaCutoff: {\n    type: 'number',\n    value: 0.05,\n    min: 0,\n    max: 1\n  },\n  getPosition: {\n    type: 'accessor',\n    value: x => x.position\n  },\n  getIcon: {\n    type: 'accessor',\n    value: x => x.icon\n  },\n  getColor: {\n    type: 'accessor',\n    value: DEFAULT_COLOR\n  },\n  getSize: {\n    type: 'accessor',\n    value: 1\n  },\n  getAngle: {\n    type: 'accessor',\n    value: 0\n  },\n  getPixelOffset: {\n    type: 'accessor',\n    value: [0, 0]\n  },\n  onIconError: {\n    type: 'function',\n    value: null,\n    optional: true\n  },\n  textureParameters: {\n    type: 'object',\n    ignore: true\n  }\n};\nexport default class IconLayer extends Layer {\n  constructor(...args) {\n    super(...args);\n\n    _defineProperty(this, \"state\", void 0);\n  }\n\n  getShaders() {\n    return super.getShaders({\n      vs,\n      fs,\n      modules: [project32, picking]\n    });\n  }\n\n  initializeState() {\n    this.state = {\n      iconManager: new IconManager(this.context.gl, {\n        onUpdate: this._onUpdate.bind(this),\n        onError: this._onError.bind(this)\n      })\n    };\n    const attributeManager = this.getAttributeManager();\n    attributeManager.addInstanced({\n      instancePositions: {\n        size: 3,\n        type: 5130,\n        fp64: this.use64bitPositions(),\n        transition: true,\n        accessor: 'getPosition'\n      },\n      instanceSizes: {\n        size: 1,\n        transition: true,\n        accessor: 'getSize',\n        defaultValue: 1\n      },\n      instanceOffsets: {\n        size: 2,\n        accessor: 'getIcon',\n        transform: this.getInstanceOffset\n      },\n      instanceIconFrames: {\n        size: 4,\n        accessor: 'getIcon',\n        transform: this.getInstanceIconFrame\n      },\n      instanceColorModes: {\n        size: 1,\n        type: 5121,\n        accessor: 'getIcon',\n        transform: this.getInstanceColorMode\n      },\n      instanceColors: {\n        size: this.props.colorFormat.length,\n        type: 5121,\n        normalized: true,\n        transition: true,\n        accessor: 'getColor',\n        defaultValue: DEFAULT_COLOR\n      },\n      instanceAngles: {\n        size: 1,\n        transition: true,\n        accessor: 'getAngle'\n      },\n      instancePixelOffset: {\n        size: 2,\n        transition: true,\n        accessor: 'getPixelOffset'\n      }\n    });\n  }\n\n  updateState(params) {\n    super.updateState(params);\n    const {\n      props,\n      oldProps,\n      changeFlags\n    } = params;\n    const attributeManager = this.getAttributeManager();\n    const {\n      iconAtlas,\n      iconMapping,\n      data,\n      getIcon,\n      textureParameters\n    } = props;\n    const {\n      iconManager\n    } = this.state;\n    const prePacked = iconAtlas || this.internalState.isAsyncPropLoading('iconAtlas');\n    iconManager.setProps({\n      loadOptions: props.loadOptions,\n      autoPacking: !prePacked,\n      iconAtlas,\n      iconMapping: prePacked ? iconMapping : null,\n      textureParameters\n    });\n\n    if (prePacked) {\n      if (oldProps.iconMapping !== props.iconMapping) {\n        attributeManager.invalidate('getIcon');\n      }\n    } else if (changeFlags.dataChanged || changeFlags.updateTriggersChanged && (changeFlags.updateTriggersChanged.all || changeFlags.updateTriggersChanged.getIcon)) {\n      iconManager.packIcons(data, getIcon);\n    }\n\n    if (changeFlags.extensionsChanged) {\n      var _this$state$model;\n\n      const {\n        gl\n      } = this.context;\n      (_this$state$model = this.state.model) === null || _this$state$model === void 0 ? void 0 : _this$state$model.delete();\n      this.state.model = this._getModel(gl);\n      attributeManager.invalidateAll();\n    }\n  }\n\n  get isLoaded() {\n    return super.isLoaded && this.state.iconManager.isLoaded;\n  }\n\n  finalizeState(context) {\n    super.finalizeState(context);\n    this.state.iconManager.finalize();\n  }\n\n  draw({\n    uniforms\n  }) {\n    const {\n      sizeScale,\n      sizeMinPixels,\n      sizeMaxPixels,\n      sizeUnits,\n      billboard,\n      alphaCutoff\n    } = this.props;\n    const {\n      iconManager\n    } = this.state;\n    const iconsTexture = iconManager.getTexture();\n\n    if (iconsTexture) {\n      this.state.model.setUniforms(uniforms).setUniforms({\n        iconsTexture,\n        iconsTextureDim: [iconsTexture.width, iconsTexture.height],\n        sizeUnits: UNIT[sizeUnits],\n        sizeScale,\n        sizeMinPixels,\n        sizeMaxPixels,\n        billboard,\n        alphaCutoff\n      }).draw();\n    }\n  }\n\n  _getModel(gl) {\n    const positions = [-1, -1, -1, 1, 1, 1, 1, -1];\n    return new Model(gl, { ...this.getShaders(),\n      id: this.props.id,\n      geometry: new Geometry({\n        drawMode: 6,\n        attributes: {\n          positions: {\n            size: 2,\n            value: new Float32Array(positions)\n          }\n        }\n      }),\n      isInstanced: true\n    });\n  }\n\n  _onUpdate() {\n    this.setNeedsRedraw();\n  }\n\n  _onError(evt) {\n    var _this$getCurrentLayer;\n\n    const onIconError = (_this$getCurrentLayer = this.getCurrentLayer()) === null || _this$getCurrentLayer === void 0 ? void 0 : _this$getCurrentLayer.props.onIconError;\n\n    if (onIconError) {\n      onIconError(evt);\n    } else {\n      log.error(evt.error.message)();\n    }\n  }\n\n  getInstanceOffset(icon) {\n    const {\n      width,\n      height,\n      anchorX = width / 2,\n      anchorY = height / 2\n    } = this.state.iconManager.getIconMapping(icon);\n    return [width / 2 - anchorX, height / 2 - anchorY];\n  }\n\n  getInstanceColorMode(icon) {\n    const mapping = this.state.iconManager.getIconMapping(icon);\n    return mapping.mask ? 1 : 0;\n  }\n\n  getInstanceIconFrame(icon) {\n    const {\n      x,\n      y,\n      width,\n      height\n    } = this.state.iconManager.getIconMapping(icon);\n    return [x, y, width, height];\n  }\n\n}\n\n_defineProperty(IconLayer, \"defaultProps\", defaultProps);\n\n_defineProperty(IconLayer, \"layerName\", 'IconLayer');\n//# sourceMappingURL=icon-layer.js.map","export default \"#define SHADER_NAME icon-layer-vertex-shader\\n\\nattribute vec2 positions;\\n\\nattribute vec3 instancePositions;\\nattribute vec3 instancePositions64Low;\\nattribute float instanceSizes;\\nattribute float instanceAngles;\\nattribute vec4 instanceColors;\\nattribute vec3 instancePickingColors;\\nattribute vec4 instanceIconFrames;\\nattribute float instanceColorModes;\\nattribute vec2 instanceOffsets;\\nattribute vec2 instancePixelOffset;\\n\\nuniform float sizeScale;\\nuniform vec2 iconsTextureDim;\\nuniform float sizeMinPixels;\\nuniform float sizeMaxPixels;\\nuniform bool billboard;\\nuniform int sizeUnits;\\n\\nvarying float vColorMode;\\nvarying vec4 vColor;\\nvarying vec2 vTextureCoords;\\nvarying vec2 uv;\\n\\nvec2 rotate_by_angle(vec2 vertex, float angle) {\\n  float angle_radian = angle * PI / 180.0;\\n  float cos_angle = cos(angle_radian);\\n  float sin_angle = sin(angle_radian);\\n  mat2 rotationMatrix = mat2(cos_angle, -sin_angle, sin_angle, cos_angle);\\n  return rotationMatrix * vertex;\\n}\\n\\nvoid main(void) {\\n  geometry.worldPosition = instancePositions;\\n  geometry.uv = positions;\\n  geometry.pickingColor = instancePickingColors;\\n  uv = positions;\\n\\n  vec2 iconSize = instanceIconFrames.zw;\\n  float sizePixels = clamp(\\n    project_size_to_pixel(instanceSizes * sizeScale, sizeUnits), \\n    sizeMinPixels, sizeMaxPixels\\n  );\\n  float instanceScale = iconSize.y == 0.0 ? 0.0 : sizePixels / iconSize.y;\\n  vec2 pixelOffset = positions / 2.0 * iconSize + instanceOffsets;\\n  pixelOffset = rotate_by_angle(pixelOffset, instanceAngles) * instanceScale;\\n  pixelOffset += instancePixelOffset;\\n  pixelOffset.y *= -1.0;\\n\\n  if (billboard)  {\\n    gl_Position = project_position_to_clipspace(instancePositions, instancePositions64Low, vec3(0.0), geometry.position);\\n    DECKGL_FILTER_GL_POSITION(gl_Position, geometry);\\n    vec3 offset = vec3(pixelOffset, 0.0);\\n    DECKGL_FILTER_SIZE(offset, geometry);\\n    gl_Position.xy += project_pixel_size_to_clipspace(offset.xy);\\n\\n  } else {\\n    vec3 offset_common = vec3(project_pixel_size(pixelOffset), 0.0);\\n    DECKGL_FILTER_SIZE(offset_common, geometry);\\n    gl_Position = project_position_to_clipspace(instancePositions, instancePositions64Low, offset_common, geometry.position); \\n    DECKGL_FILTER_GL_POSITION(gl_Position, geometry);\\n  }\\n\\n  vTextureCoords = mix(\\n    instanceIconFrames.xy,\\n    instanceIconFrames.xy + iconSize,\\n    (positions.xy + 1.0) / 2.0\\n  ) / iconsTextureDim;\\n\\n  vColor = instanceColors;\\n  DECKGL_FILTER_COLOR(vColor, geometry);\\n\\n  vColorMode = instanceColorModes;\\n}\\n\";\n//# sourceMappingURL=icon-layer-vertex.glsl.js.map","export default \"#define SHADER_NAME icon-layer-fragment-shader\\n\\nprecision highp float;\\n\\nuniform float opacity;\\nuniform sampler2D iconsTexture;\\nuniform float alphaCutoff;\\n\\nvarying float vColorMode;\\nvarying vec4 vColor;\\nvarying vec2 vTextureCoords;\\nvarying vec2 uv;\\n\\nvoid main(void) {\\n  geometry.uv = uv;\\n\\n  vec4 texColor = texture2D(iconsTexture, vTextureCoords);\\n  vec3 color = mix(texColor.rgb, vColor.rgb, vColorMode);\\n  float a = texColor.a * opacity * vColor.a;\\n\\n  if (a < alphaCutoff) {\\n    discard;\\n  }\\n\\n  gl_FragColor = vec4(color, a);\\n  DECKGL_FILTER_COLOR(gl_FragColor, geometry);\\n}\\n\";\n//# sourceMappingURL=icon-layer-fragment.glsl.js.map","export default \"#define SHADER_NAME line-layer-vertex-shader\\n\\nattribute vec3 positions;\\nattribute vec3 instanceSourcePositions;\\nattribute vec3 instanceTargetPositions;\\nattribute vec3 instanceSourcePositions64Low;\\nattribute vec3 instanceTargetPositions64Low;\\nattribute vec4 instanceColors;\\nattribute vec3 instancePickingColors;\\nattribute float instanceWidths;\\n\\nuniform float opacity;\\nuniform float widthScale;\\nuniform float widthMinPixels;\\nuniform float widthMaxPixels;\\nuniform float useShortestPath;\\nuniform int widthUnits;\\n\\nvarying vec4 vColor;\\nvarying vec2 uv;\\nvec2 getExtrusionOffset(vec2 line_clipspace, float offset_direction, float width) {\\n  vec2 dir_screenspace = normalize(line_clipspace * project_uViewportSize);\\n  dir_screenspace = vec2(-dir_screenspace.y, dir_screenspace.x);\\n\\n  return dir_screenspace * offset_direction * width / 2.0;\\n}\\n\\nvec3 splitLine(vec3 a, vec3 b, float x) {\\n  float t = (x - a.x) / (b.x - a.x);\\n  return vec3(x, mix(a.yz, b.yz, t));\\n}\\n\\nvoid main(void) {\\n  geometry.worldPosition = instanceSourcePositions;\\n  geometry.worldPositionAlt = instanceTargetPositions;\\n\\n  vec3 source_world = instanceSourcePositions;\\n  vec3 target_world = instanceTargetPositions;\\n  vec3 source_world_64low = instanceSourcePositions64Low;\\n  vec3 target_world_64low = instanceTargetPositions64Low;\\n\\n  if (useShortestPath > 0.5 || useShortestPath < -0.5) {\\n    source_world.x = mod(source_world.x + 180., 360.0) - 180.;\\n    target_world.x = mod(target_world.x + 180., 360.0) - 180.;\\n    float deltaLng = target_world.x - source_world.x;\\n\\n    if (deltaLng * useShortestPath > 180.) {\\n      source_world.x += 360. * useShortestPath;\\n      source_world = splitLine(source_world, target_world, 180. * useShortestPath);\\n      source_world_64low = vec3(0.0);\\n    } else if (deltaLng * useShortestPath < -180.) {\\n      target_world.x += 360. * useShortestPath;\\n      target_world = splitLine(source_world, target_world, 180. * useShortestPath);\\n      target_world_64low = vec3(0.0);\\n    } else if (useShortestPath < 0.) {\\n      gl_Position = vec4(0.);\\n      return;\\n    }\\n  }\\n  vec4 source_commonspace;\\n  vec4 target_commonspace;\\n  vec4 source = project_position_to_clipspace(source_world, source_world_64low, vec3(0.), source_commonspace);\\n  vec4 target = project_position_to_clipspace(target_world, target_world_64low, vec3(0.), target_commonspace);\\n  float segmentIndex = positions.x;\\n  vec4 p = mix(source, target, segmentIndex);\\n  geometry.position = mix(source_commonspace, target_commonspace, segmentIndex);\\n  uv = positions.xy;\\n  geometry.uv = uv;\\n  geometry.pickingColor = instancePickingColors;\\n  float widthPixels = clamp(\\n    project_size_to_pixel(instanceWidths * widthScale, widthUnits),\\n    widthMinPixels, widthMaxPixels\\n  );\\n  vec3 offset = vec3(\\n    getExtrusionOffset(target.xy - source.xy, positions.y, widthPixels),\\n    0.0);\\n  DECKGL_FILTER_SIZE(offset, geometry);\\n  DECKGL_FILTER_GL_POSITION(p, geometry);\\n  gl_Position = p + vec4(project_pixel_size_to_clipspace(offset.xy), 0.0, 0.0);\\n  vColor = vec4(instanceColors.rgb, instanceColors.a * opacity);\\n  DECKGL_FILTER_COLOR(vColor, geometry);\\n}\\n\";\n//# sourceMappingURL=line-layer-vertex.glsl.js.map","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Layer, project32, picking, UNIT } from '@deck.gl/core';\nimport { Model, Geometry } from '@luma.gl/core';\nimport vs from './line-layer-vertex.glsl';\nimport fs from './line-layer-fragment.glsl';\nconst DEFAULT_COLOR = [0, 0, 0, 255];\nconst defaultProps = {\n  getSourcePosition: {\n    type: 'accessor',\n    value: x => x.sourcePosition\n  },\n  getTargetPosition: {\n    type: 'accessor',\n    value: x => x.targetPosition\n  },\n  getColor: {\n    type: 'accessor',\n    value: DEFAULT_COLOR\n  },\n  getWidth: {\n    type: 'accessor',\n    value: 1\n  },\n  widthUnits: 'pixels',\n  widthScale: {\n    type: 'number',\n    value: 1,\n    min: 0\n  },\n  widthMinPixels: {\n    type: 'number',\n    value: 0,\n    min: 0\n  },\n  widthMaxPixels: {\n    type: 'number',\n    value: Number.MAX_SAFE_INTEGER,\n    min: 0\n  }\n};\nexport default class LineLayer extends Layer {\n  getBounds() {\n    var _this$getAttributeMan;\n\n    return (_this$getAttributeMan = this.getAttributeManager()) === null || _this$getAttributeMan === void 0 ? void 0 : _this$getAttributeMan.getBounds(['instanceSourcePositions', 'instanceTargetPositions']);\n  }\n\n  getShaders() {\n    return super.getShaders({\n      vs,\n      fs,\n      modules: [project32, picking]\n    });\n  }\n\n  get wrapLongitude() {\n    return false;\n  }\n\n  initializeState() {\n    const attributeManager = this.getAttributeManager();\n    attributeManager.addInstanced({\n      instanceSourcePositions: {\n        size: 3,\n        type: 5130,\n        fp64: this.use64bitPositions(),\n        transition: true,\n        accessor: 'getSourcePosition'\n      },\n      instanceTargetPositions: {\n        size: 3,\n        type: 5130,\n        fp64: this.use64bitPositions(),\n        transition: true,\n        accessor: 'getTargetPosition'\n      },\n      instanceColors: {\n        size: this.props.colorFormat.length,\n        type: 5121,\n        normalized: true,\n        transition: true,\n        accessor: 'getColor',\n        defaultValue: [0, 0, 0, 255]\n      },\n      instanceWidths: {\n        size: 1,\n        transition: true,\n        accessor: 'getWidth',\n        defaultValue: 1\n      }\n    });\n  }\n\n  updateState(params) {\n    super.updateState(params);\n\n    if (params.changeFlags.extensionsChanged) {\n      var _this$state$model;\n\n      const {\n        gl\n      } = this.context;\n      (_this$state$model = this.state.model) === null || _this$state$model === void 0 ? void 0 : _this$state$model.delete();\n      this.state.model = this._getModel(gl);\n      this.getAttributeManager().invalidateAll();\n    }\n  }\n\n  draw({\n    uniforms\n  }) {\n    const {\n      widthUnits,\n      widthScale,\n      widthMinPixels,\n      widthMaxPixels,\n      wrapLongitude\n    } = this.props;\n    this.state.model.setUniforms(uniforms).setUniforms({\n      widthUnits: UNIT[widthUnits],\n      widthScale,\n      widthMinPixels,\n      widthMaxPixels,\n      useShortestPath: wrapLongitude ? 1 : 0\n    }).draw();\n\n    if (wrapLongitude) {\n      this.state.model.setUniforms({\n        useShortestPath: -1\n      }).draw();\n    }\n  }\n\n  _getModel(gl) {\n    const positions = [0, -1, 0, 0, 1, 0, 1, -1, 0, 1, 1, 0];\n    return new Model(gl, { ...this.getShaders(),\n      id: this.props.id,\n      geometry: new Geometry({\n        drawMode: 5,\n        attributes: {\n          positions: new Float32Array(positions)\n        }\n      }),\n      isInstanced: true\n    });\n  }\n\n}\n\n_defineProperty(LineLayer, \"layerName\", 'LineLayer');\n\n_defineProperty(LineLayer, \"defaultProps\", defaultProps);\n//# sourceMappingURL=line-layer.js.map","export default \"#define SHADER_NAME line-layer-fragment-shader\\n\\nprecision highp float;\\n\\nvarying vec4 vColor;\\nvarying vec2 uv;\\n\\nvoid main(void) {\\n  geometry.uv = uv;\\n\\n  gl_FragColor = vColor;\\n\\n  DECKGL_FILTER_COLOR(gl_FragColor, geometry);\\n}\\n\";\n//# sourceMappingURL=line-layer-fragment.glsl.js.map","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { CubeGeometry } from '@luma.gl/core';\nimport { UNIT } from '@deck.gl/core';\nimport ColumnLayer from './column-layer';\nconst defaultProps = {\n  cellSize: {\n    type: 'number',\n    min: 0,\n    value: 1000\n  },\n  offset: {\n    type: 'array',\n    value: [1, 1]\n  }\n};\nexport default class GridCellLayer extends ColumnLayer {\n  getGeometry(diskResolution) {\n    return new CubeGeometry();\n  }\n\n  draw({\n    uniforms\n  }) {\n    const {\n      elevationScale,\n      extruded,\n      offset,\n      coverage,\n      cellSize,\n      angle,\n      radiusUnits\n    } = this.props;\n    this.state.model.setUniforms(uniforms).setUniforms({\n      radius: cellSize / 2,\n      radiusUnits: UNIT[radiusUnits],\n      angle,\n      offset,\n      extruded,\n      coverage,\n      elevationScale,\n      edgeDistance: 1,\n      isWireframe: false\n    }).draw();\n  }\n\n}\n\n_defineProperty(GridCellLayer, \"layerName\", 'GridCellLayer');\n\n_defineProperty(GridCellLayer, \"defaultProps\", defaultProps);\n//# sourceMappingURL=grid-cell-layer.js.map","import { Tesselator } from '@deck.gl/core';\nimport { normalizePath } from './path';\nconst START_CAP = 1;\nconst END_CAP = 2;\nconst INVALID = 4;\nexport default class PathTesselator extends Tesselator {\n  constructor(opts) {\n    super({ ...opts,\n      attributes: {\n        positions: {\n          size: 3,\n          padding: 18,\n          initialize: true,\n          type: opts.fp64 ? Float64Array : Float32Array\n        },\n        segmentTypes: {\n          size: 1,\n          type: Uint8ClampedArray\n        }\n      }\n    });\n  }\n\n  get(attributeName) {\n    return this.attributes[attributeName];\n  }\n\n  getGeometryFromBuffer(buffer) {\n    if (this.normalize) {\n      return super.getGeometryFromBuffer(buffer);\n    }\n\n    return null;\n  }\n\n  normalizeGeometry(path) {\n    if (this.normalize) {\n      return normalizePath(path, this.positionSize, this.opts.resolution, this.opts.wrapLongitude);\n    }\n\n    return path;\n  }\n\n  getGeometrySize(path) {\n    if (isCut(path)) {\n      let size = 0;\n\n      for (const subPath of path) {\n        size += this.getGeometrySize(subPath);\n      }\n\n      return size;\n    }\n\n    const numPoints = this.getPathLength(path);\n\n    if (numPoints < 2) {\n      return 0;\n    }\n\n    if (this.isClosed(path)) {\n      return numPoints < 3 ? 0 : numPoints + 2;\n    }\n\n    return numPoints;\n  }\n\n  updateGeometryAttributes(path, context) {\n    if (context.geometrySize === 0) {\n      return;\n    }\n\n    if (path && isCut(path)) {\n      for (const subPath of path) {\n        const geometrySize = this.getGeometrySize(subPath);\n        context.geometrySize = geometrySize;\n        this.updateGeometryAttributes(subPath, context);\n        context.vertexStart += geometrySize;\n      }\n    } else {\n      this._updateSegmentTypes(path, context);\n\n      this._updatePositions(path, context);\n    }\n  }\n\n  _updateSegmentTypes(path, context) {\n    const segmentTypes = this.attributes.segmentTypes;\n    const isPathClosed = path ? this.isClosed(path) : false;\n    const {\n      vertexStart,\n      geometrySize\n    } = context;\n    segmentTypes.fill(0, vertexStart, vertexStart + geometrySize);\n\n    if (isPathClosed) {\n      segmentTypes[vertexStart] = INVALID;\n      segmentTypes[vertexStart + geometrySize - 2] = INVALID;\n    } else {\n      segmentTypes[vertexStart] += START_CAP;\n      segmentTypes[vertexStart + geometrySize - 2] += END_CAP;\n    }\n\n    segmentTypes[vertexStart + geometrySize - 1] = INVALID;\n  }\n\n  _updatePositions(path, context) {\n    const {\n      positions\n    } = this.attributes;\n\n    if (!positions || !path) {\n      return;\n    }\n\n    const {\n      vertexStart,\n      geometrySize\n    } = context;\n    const p = new Array(3);\n\n    for (let i = vertexStart, ptIndex = 0; ptIndex < geometrySize; i++, ptIndex++) {\n      this.getPointOnPath(path, ptIndex, p);\n      positions[i * 3] = p[0];\n      positions[i * 3 + 1] = p[1];\n      positions[i * 3 + 2] = p[2];\n    }\n  }\n\n  getPathLength(path) {\n    return path.length / this.positionSize;\n  }\n\n  getPointOnPath(path, index, target = []) {\n    const {\n      positionSize\n    } = this;\n\n    if (index * positionSize >= path.length) {\n      index += 1 - path.length / positionSize;\n    }\n\n    const i = index * positionSize;\n    target[0] = path[i];\n    target[1] = path[i + 1];\n    target[2] = positionSize === 3 && path[i + 2] || 0;\n    return target;\n  }\n\n  isClosed(path) {\n    if (!this.normalize) {\n      return Boolean(this.opts.loop);\n    }\n\n    const {\n      positionSize\n    } = this;\n    const lastPointIndex = path.length - positionSize;\n    return path[0] === path[lastPointIndex] && path[1] === path[lastPointIndex + 1] && (positionSize === 2 || path[2] === path[lastPointIndex + 2]);\n  }\n\n}\n\nfunction isCut(path) {\n  return Array.isArray(path[0]);\n}\n//# sourceMappingURL=path-tesselator.js.map","import { cutPolylineByGrid, cutPolylineByMercatorBounds } from '@math.gl/polygon';\nexport function normalizePath(path, size, gridResolution, wrapLongitude) {\n  let flatPath;\n\n  if (Array.isArray(path[0])) {\n    const length = path.length * size;\n    flatPath = new Array(length);\n\n    for (let i = 0; i < path.length; i++) {\n      for (let j = 0; j < size; j++) {\n        flatPath[i * size + j] = path[i][j] || 0;\n      }\n    }\n  } else {\n    flatPath = path;\n  }\n\n  if (gridResolution) {\n    return cutPolylineByGrid(flatPath, {\n      size,\n      gridResolution\n    });\n  }\n\n  if (wrapLongitude) {\n    return cutPolylineByMercatorBounds(flatPath, {\n      size\n    });\n  }\n\n  return flatPath;\n}\n//# sourceMappingURL=path.js.map","export default \"#define SHADER_NAME path-layer-vertex-shader\\n\\nattribute vec2 positions;\\n\\nattribute float instanceTypes;\\nattribute vec3 instanceStartPositions;\\nattribute vec3 instanceEndPositions;\\nattribute vec3 instanceLeftPositions;\\nattribute vec3 instanceRightPositions;\\nattribute vec3 instanceLeftPositions64Low;\\nattribute vec3 instanceStartPositions64Low;\\nattribute vec3 instanceEndPositions64Low;\\nattribute vec3 instanceRightPositions64Low;\\nattribute float instanceStrokeWidths;\\nattribute vec4 instanceColors;\\nattribute vec3 instancePickingColors;\\n\\nuniform float widthScale;\\nuniform float widthMinPixels;\\nuniform float widthMaxPixels;\\nuniform float jointType;\\nuniform float capType;\\nuniform float miterLimit;\\nuniform bool billboard;\\nuniform int widthUnits;\\n\\nuniform float opacity;\\n\\nvarying vec4 vColor;\\nvarying vec2 vCornerOffset;\\nvarying float vMiterLength;\\nvarying vec2 vPathPosition;\\nvarying float vPathLength;\\nvarying float vJointType;\\n\\nconst float EPSILON = 0.001;\\nconst vec3 ZERO_OFFSET = vec3(0.0);\\n\\nfloat flipIfTrue(bool flag) {\\n  return -(float(flag) * 2. - 1.);\\n}\\nvec3 getLineJoinOffset(\\n  vec3 prevPoint, vec3 currPoint, vec3 nextPoint,\\n  vec2 width\\n) {\\n  bool isEnd = positions.x > 0.0;\\n  float sideOfPath = positions.y;\\n  float isJoint = float(sideOfPath == 0.0);\\n\\n  vec3 deltaA3 = (currPoint - prevPoint);\\n  vec3 deltaB3 = (nextPoint - currPoint);\\n\\n  mat3 rotationMatrix;\\n  bool needsRotation = !billboard && project_needs_rotation(currPoint, rotationMatrix);\\n  if (needsRotation) {\\n    deltaA3 = deltaA3 * rotationMatrix;\\n    deltaB3 = deltaB3 * rotationMatrix;\\n  }\\n  vec2 deltaA = deltaA3.xy / width;\\n  vec2 deltaB = deltaB3.xy / width;\\n\\n  float lenA = length(deltaA);\\n  float lenB = length(deltaB);\\n\\n  vec2 dirA = lenA > 0. ? normalize(deltaA) : vec2(0.0, 0.0);\\n  vec2 dirB = lenB > 0. ? normalize(deltaB) : vec2(0.0, 0.0);\\n\\n  vec2 perpA = vec2(-dirA.y, dirA.x);\\n  vec2 perpB = vec2(-dirB.y, dirB.x);\\n  vec2 tangent = dirA + dirB;\\n  tangent = length(tangent) > 0. ? normalize(tangent) : perpA;\\n  vec2 miterVec = vec2(-tangent.y, tangent.x);\\n  vec2 dir = isEnd ? dirA : dirB;\\n  vec2 perp = isEnd ? perpA : perpB;\\n  float L = isEnd ? lenA : lenB;\\n  float sinHalfA = abs(dot(miterVec, perp));\\n  float cosHalfA = abs(dot(dirA, miterVec));\\n  float turnDirection = flipIfTrue(dirA.x * dirB.y >= dirA.y * dirB.x);\\n  float cornerPosition = sideOfPath * turnDirection;\\n\\n  float miterSize = 1.0 / max(sinHalfA, EPSILON);\\n  miterSize = mix(\\n    min(miterSize, max(lenA, lenB) / max(cosHalfA, EPSILON)),\\n    miterSize,\\n    step(0.0, cornerPosition)\\n  );\\n\\n  vec2 offsetVec = mix(miterVec * miterSize, perp, step(0.5, cornerPosition))\\n    * (sideOfPath + isJoint * turnDirection);\\n  bool isStartCap = lenA == 0.0 || (!isEnd && (instanceTypes == 1.0 || instanceTypes == 3.0));\\n  bool isEndCap = lenB == 0.0 || (isEnd && (instanceTypes == 2.0 || instanceTypes == 3.0));\\n  bool isCap = isStartCap || isEndCap;\\n  if (isCap) {\\n    offsetVec = mix(perp * sideOfPath, dir * capType * 4.0 * flipIfTrue(isStartCap), isJoint);\\n    vJointType = capType;\\n  } else {\\n    vJointType = jointType;\\n  }\\n  vPathLength = L;\\n  vCornerOffset = offsetVec;\\n  vMiterLength = dot(vCornerOffset, miterVec * turnDirection);\\n  vMiterLength = isCap ? isJoint : vMiterLength;\\n\\n  vec2 offsetFromStartOfPath = vCornerOffset + deltaA * float(isEnd);\\n  vPathPosition = vec2(\\n    dot(offsetFromStartOfPath, perp),\\n    dot(offsetFromStartOfPath, dir)\\n  );\\n  geometry.uv = vPathPosition;\\n\\n  float isValid = step(instanceTypes, 3.5);\\n  vec3 offset = vec3(offsetVec * width * isValid, 0.0);\\n\\n  if (needsRotation) {\\n    offset = rotationMatrix * offset;\\n  }\\n  return offset;\\n}\\nvoid clipLine(inout vec4 position, vec4 refPosition) {\\n  if (position.w < EPSILON) {\\n    float r = (EPSILON - refPosition.w) / (position.w - refPosition.w);\\n    position = refPosition + (position - refPosition) * r;\\n  }\\n}\\n\\nvoid main() {\\n  geometry.pickingColor = instancePickingColors;\\n\\n  vColor = vec4(instanceColors.rgb, instanceColors.a * opacity);\\n\\n  float isEnd = positions.x;\\n\\n  vec3 prevPosition = mix(instanceLeftPositions, instanceStartPositions, isEnd);\\n  vec3 prevPosition64Low = mix(instanceLeftPositions64Low, instanceStartPositions64Low, isEnd);\\n\\n  vec3 currPosition = mix(instanceStartPositions, instanceEndPositions, isEnd);\\n  vec3 currPosition64Low = mix(instanceStartPositions64Low, instanceEndPositions64Low, isEnd);\\n\\n  vec3 nextPosition = mix(instanceEndPositions, instanceRightPositions, isEnd);\\n  vec3 nextPosition64Low = mix(instanceEndPositions64Low, instanceRightPositions64Low, isEnd);\\n\\n  geometry.worldPosition = currPosition;\\n  vec2 widthPixels = vec2(clamp(\\n    project_size_to_pixel(instanceStrokeWidths * widthScale, widthUnits),\\n    widthMinPixels, widthMaxPixels) / 2.0);\\n  vec3 width;\\n\\n  if (billboard) {\\n    vec4 prevPositionScreen = project_position_to_clipspace(prevPosition, prevPosition64Low, ZERO_OFFSET);\\n    vec4 currPositionScreen = project_position_to_clipspace(currPosition, currPosition64Low, ZERO_OFFSET, geometry.position);\\n    vec4 nextPositionScreen = project_position_to_clipspace(nextPosition, nextPosition64Low, ZERO_OFFSET);\\n\\n    clipLine(prevPositionScreen, currPositionScreen);\\n    clipLine(nextPositionScreen, currPositionScreen);\\n    clipLine(currPositionScreen, mix(nextPositionScreen, prevPositionScreen, isEnd));\\n\\n    width = vec3(widthPixels, 0.0);\\n    DECKGL_FILTER_SIZE(width, geometry);\\n\\n    vec3 offset = getLineJoinOffset(\\n      prevPositionScreen.xyz / prevPositionScreen.w,\\n      currPositionScreen.xyz / currPositionScreen.w,\\n      nextPositionScreen.xyz / nextPositionScreen.w,\\n      project_pixel_size_to_clipspace(width.xy)\\n    );\\n\\n    DECKGL_FILTER_GL_POSITION(currPositionScreen, geometry);\\n    gl_Position = vec4(currPositionScreen.xyz + offset * currPositionScreen.w, currPositionScreen.w);\\n  } else {\\n    prevPosition = project_position(prevPosition, prevPosition64Low);\\n    currPosition = project_position(currPosition, currPosition64Low);\\n    nextPosition = project_position(nextPosition, nextPosition64Low);\\n\\n    width = vec3(project_pixel_size(widthPixels), 0.0);\\n    DECKGL_FILTER_SIZE(width, geometry);\\n\\n    vec3 offset = getLineJoinOffset(prevPosition, currPosition, nextPosition, width.xy);\\n    geometry.position = vec4(currPosition + offset, 1.0);\\n    gl_Position = project_common_position_to_clipspace(geometry.position);\\n    DECKGL_FILTER_GL_POSITION(gl_Position, geometry);\\n  }\\n  DECKGL_FILTER_COLOR(vColor, geometry);\\n}\\n\";\n//# sourceMappingURL=path-layer-vertex.glsl.js.map","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Layer, project32, picking, UNIT } from '@deck.gl/core';\nimport { Model, Geometry } from '@luma.gl/core';\nimport PathTesselator from './path-tesselator';\nimport vs from './path-layer-vertex.glsl';\nimport fs from './path-layer-fragment.glsl';\nconst DEFAULT_COLOR = [0, 0, 0, 255];\nconst defaultProps = {\n  widthUnits: 'meters',\n  widthScale: {\n    type: 'number',\n    min: 0,\n    value: 1\n  },\n  widthMinPixels: {\n    type: 'number',\n    min: 0,\n    value: 0\n  },\n  widthMaxPixels: {\n    type: 'number',\n    min: 0,\n    value: Number.MAX_SAFE_INTEGER\n  },\n  jointRounded: false,\n  capRounded: false,\n  miterLimit: {\n    type: 'number',\n    min: 0,\n    value: 4\n  },\n  billboard: false,\n  _pathType: null,\n  getPath: {\n    type: 'accessor',\n    value: object => object.path\n  },\n  getColor: {\n    type: 'accessor',\n    value: DEFAULT_COLOR\n  },\n  getWidth: {\n    type: 'accessor',\n    value: 1\n  },\n  rounded: {\n    deprecatedFor: ['jointRounded', 'capRounded']\n  }\n};\nconst ATTRIBUTE_TRANSITION = {\n  enter: (value, chunk) => {\n    return chunk.length ? chunk.subarray(chunk.length - value.length) : value;\n  }\n};\nexport default class PathLayer extends Layer {\n  constructor(...args) {\n    super(...args);\n\n    _defineProperty(this, \"state\", void 0);\n  }\n\n  getShaders() {\n    return super.getShaders({\n      vs,\n      fs,\n      modules: [project32, picking]\n    });\n  }\n\n  get wrapLongitude() {\n    return false;\n  }\n\n  initializeState() {\n    const noAlloc = true;\n    const attributeManager = this.getAttributeManager();\n    attributeManager.addInstanced({\n      positions: {\n        size: 3,\n        vertexOffset: 1,\n        type: 5130,\n        fp64: this.use64bitPositions(),\n        transition: ATTRIBUTE_TRANSITION,\n        accessor: 'getPath',\n        update: this.calculatePositions,\n        noAlloc,\n        shaderAttributes: {\n          instanceLeftPositions: {\n            vertexOffset: 0\n          },\n          instanceStartPositions: {\n            vertexOffset: 1\n          },\n          instanceEndPositions: {\n            vertexOffset: 2\n          },\n          instanceRightPositions: {\n            vertexOffset: 3\n          }\n        }\n      },\n      instanceTypes: {\n        size: 1,\n        type: 5121,\n        update: this.calculateSegmentTypes,\n        noAlloc\n      },\n      instanceStrokeWidths: {\n        size: 1,\n        accessor: 'getWidth',\n        transition: ATTRIBUTE_TRANSITION,\n        defaultValue: 1\n      },\n      instanceColors: {\n        size: this.props.colorFormat.length,\n        type: 5121,\n        normalized: true,\n        accessor: 'getColor',\n        transition: ATTRIBUTE_TRANSITION,\n        defaultValue: DEFAULT_COLOR\n      },\n      instancePickingColors: {\n        size: 3,\n        type: 5121,\n        accessor: (object, {\n          index,\n          target: value\n        }) => this.encodePickingColor(object && object.__source ? object.__source.index : index, value)\n      }\n    });\n    this.setState({\n      pathTesselator: new PathTesselator({\n        fp64: this.use64bitPositions()\n      })\n    });\n  }\n\n  updateState(params) {\n    super.updateState(params);\n    const {\n      props,\n      changeFlags\n    } = params;\n    const attributeManager = this.getAttributeManager();\n    const geometryChanged = changeFlags.dataChanged || changeFlags.updateTriggersChanged && (changeFlags.updateTriggersChanged.all || changeFlags.updateTriggersChanged.getPath);\n\n    if (geometryChanged) {\n      const {\n        pathTesselator\n      } = this.state;\n      const buffers = props.data.attributes || {};\n      pathTesselator.updateGeometry({\n        data: props.data,\n        geometryBuffer: buffers.getPath,\n        buffers,\n        normalize: !props._pathType,\n        loop: props._pathType === 'loop',\n        getGeometry: props.getPath,\n        positionFormat: props.positionFormat,\n        wrapLongitude: props.wrapLongitude,\n        resolution: this.context.viewport.resolution,\n        dataChanged: changeFlags.dataChanged\n      });\n      this.setState({\n        numInstances: pathTesselator.instanceCount,\n        startIndices: pathTesselator.vertexStarts\n      });\n\n      if (!changeFlags.dataChanged) {\n        attributeManager.invalidateAll();\n      }\n    }\n\n    if (changeFlags.extensionsChanged) {\n      var _this$state$model;\n\n      const {\n        gl\n      } = this.context;\n      (_this$state$model = this.state.model) === null || _this$state$model === void 0 ? void 0 : _this$state$model.delete();\n      this.state.model = this._getModel(gl);\n      attributeManager.invalidateAll();\n    }\n  }\n\n  getPickingInfo(params) {\n    const info = super.getPickingInfo(params);\n    const {\n      index\n    } = info;\n    const {\n      data\n    } = this.props;\n\n    if (data[0] && data[0].__source) {\n      info.object = data.find(d => d.__source.index === index);\n    }\n\n    return info;\n  }\n\n  disablePickingIndex(objectIndex) {\n    const {\n      data\n    } = this.props;\n\n    if (data[0] && data[0].__source) {\n      for (let i = 0; i < data.length; i++) {\n        if (data[i].__source.index === objectIndex) {\n          this._disablePickingIndex(i);\n        }\n      }\n    } else {\n      super.disablePickingIndex(objectIndex);\n    }\n  }\n\n  draw({\n    uniforms\n  }) {\n    const {\n      jointRounded,\n      capRounded,\n      billboard,\n      miterLimit,\n      widthUnits,\n      widthScale,\n      widthMinPixels,\n      widthMaxPixels\n    } = this.props;\n    this.state.model.setUniforms(uniforms).setUniforms({\n      jointType: Number(jointRounded),\n      capType: Number(capRounded),\n      billboard,\n      widthUnits: UNIT[widthUnits],\n      widthScale,\n      miterLimit,\n      widthMinPixels,\n      widthMaxPixels\n    }).draw();\n  }\n\n  _getModel(gl) {\n    const SEGMENT_INDICES = [0, 1, 2, 1, 4, 2, 1, 3, 4, 3, 5, 4];\n    const SEGMENT_POSITIONS = [0, 0, 0, -1, 0, 1, 1, -1, 1, 1, 1, 0];\n    return new Model(gl, { ...this.getShaders(),\n      id: this.props.id,\n      geometry: new Geometry({\n        drawMode: 4,\n        attributes: {\n          indices: new Uint16Array(SEGMENT_INDICES),\n          positions: {\n            value: new Float32Array(SEGMENT_POSITIONS),\n            size: 2\n          }\n        }\n      }),\n      isInstanced: true\n    });\n  }\n\n  calculatePositions(attribute) {\n    const {\n      pathTesselator\n    } = this.state;\n    attribute.startIndices = pathTesselator.vertexStarts;\n    attribute.value = pathTesselator.get('positions');\n  }\n\n  calculateSegmentTypes(attribute) {\n    const {\n      pathTesselator\n    } = this.state;\n    attribute.startIndices = pathTesselator.vertexStarts;\n    attribute.value = pathTesselator.get('segmentTypes');\n  }\n\n}\n\n_defineProperty(PathLayer, \"defaultProps\", defaultProps);\n\n_defineProperty(PathLayer, \"layerName\", 'PathLayer');\n//# sourceMappingURL=path-layer.js.map","export default \"#define SHADER_NAME path-layer-fragment-shader\\n\\nprecision highp float;\\n\\nuniform float miterLimit;\\n\\nvarying vec4 vColor;\\nvarying vec2 vCornerOffset;\\nvarying float vMiterLength;\\nvarying vec2 vPathPosition;\\nvarying float vPathLength;\\nvarying float vJointType;\\n\\nvoid main(void) {\\n  geometry.uv = vPathPosition;\\n\\n  if (vPathPosition.y < 0.0 || vPathPosition.y > vPathLength) {\\n    if (vJointType > 0.5 && length(vCornerOffset) > 1.0) {\\n      discard;\\n    }\\n    if (vJointType < 0.5 && vMiterLength > miterLimit + 1.0) {\\n      discard;\\n    }\\n  }\\n  gl_FragColor = vColor;\\n\\n  DECKGL_FILTER_COLOR(gl_FragColor, geometry);\\n}\\n\";\n//# sourceMappingURL=path-layer-fragment.glsl.js.map","export default \"#define SHADER_NAME point-cloud-layer-vertex-shader\\n\\nattribute vec3 positions;\\nattribute vec3 instanceNormals;\\nattribute vec4 instanceColors;\\nattribute vec3 instancePositions;\\nattribute vec3 instancePositions64Low;\\nattribute vec3 instancePickingColors;\\n\\nuniform float opacity;\\nuniform float radiusPixels;\\nuniform int sizeUnits;\\n\\nvarying vec4 vColor;\\nvarying vec2 unitPosition;\\n\\nvoid main(void) {\\n  geometry.worldPosition = instancePositions;\\n  geometry.normal = project_normal(instanceNormals);\\n  unitPosition = positions.xy;\\n  geometry.uv = unitPosition;\\n  geometry.pickingColor = instancePickingColors;\\n  vec3 offset = vec3(positions.xy * project_size_to_pixel(radiusPixels, sizeUnits), 0.0);\\n  DECKGL_FILTER_SIZE(offset, geometry);\\n\\n  gl_Position = project_position_to_clipspace(instancePositions, instancePositions64Low, vec3(0.), geometry.position);\\n  DECKGL_FILTER_GL_POSITION(gl_Position, geometry);\\n  gl_Position.xy += project_pixel_size_to_clipspace(offset.xy);\\n  vec3 lightColor = lighting_getLightColor(instanceColors.rgb, project_uCameraPosition, geometry.position.xyz, geometry.normal);\\n  vColor = vec4(lightColor, instanceColors.a * opacity);\\n  DECKGL_FILTER_COLOR(vColor, geometry);\\n}\\n\";\n//# sourceMappingURL=point-cloud-layer-vertex.glsl.js.map","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Layer, project32, gouraudLighting, picking, UNIT } from '@deck.gl/core';\nimport { Model, Geometry } from '@luma.gl/core';\nimport vs from './point-cloud-layer-vertex.glsl';\nimport fs from './point-cloud-layer-fragment.glsl';\nconst DEFAULT_COLOR = [0, 0, 0, 255];\nconst DEFAULT_NORMAL = [0, 0, 1];\nconst defaultProps = {\n  sizeUnits: 'pixels',\n  pointSize: {\n    type: 'number',\n    min: 0,\n    value: 10\n  },\n  getPosition: {\n    type: 'accessor',\n    value: x => x.position\n  },\n  getNormal: {\n    type: 'accessor',\n    value: DEFAULT_NORMAL\n  },\n  getColor: {\n    type: 'accessor',\n    value: DEFAULT_COLOR\n  },\n  material: true,\n  radiusPixels: {\n    deprecatedFor: 'pointSize'\n  }\n};\n\nfunction normalizeData(data) {\n  const {\n    header,\n    attributes\n  } = data;\n\n  if (!header || !attributes) {\n    return;\n  }\n\n  data.length = header.vertexCount;\n\n  if (attributes.POSITION) {\n    attributes.instancePositions = attributes.POSITION;\n  }\n\n  if (attributes.NORMAL) {\n    attributes.instanceNormals = attributes.NORMAL;\n  }\n\n  if (attributes.COLOR_0) {\n    attributes.instanceColors = attributes.COLOR_0;\n  }\n}\n\nexport default class PointCloudLayer extends Layer {\n  getShaders() {\n    return super.getShaders({\n      vs,\n      fs,\n      modules: [project32, gouraudLighting, picking]\n    });\n  }\n\n  initializeState() {\n    this.getAttributeManager().addInstanced({\n      instancePositions: {\n        size: 3,\n        type: 5130,\n        fp64: this.use64bitPositions(),\n        transition: true,\n        accessor: 'getPosition'\n      },\n      instanceNormals: {\n        size: 3,\n        transition: true,\n        accessor: 'getNormal',\n        defaultValue: DEFAULT_NORMAL\n      },\n      instanceColors: {\n        size: this.props.colorFormat.length,\n        type: 5121,\n        normalized: true,\n        transition: true,\n        accessor: 'getColor',\n        defaultValue: DEFAULT_COLOR\n      }\n    });\n  }\n\n  updateState(params) {\n    const {\n      changeFlags,\n      props\n    } = params;\n    super.updateState(params);\n\n    if (changeFlags.extensionsChanged) {\n      var _this$state$model;\n\n      const {\n        gl\n      } = this.context;\n      (_this$state$model = this.state.model) === null || _this$state$model === void 0 ? void 0 : _this$state$model.delete();\n      this.state.model = this._getModel(gl);\n      this.getAttributeManager().invalidateAll();\n    }\n\n    if (changeFlags.dataChanged) {\n      normalizeData(props.data);\n    }\n  }\n\n  draw({\n    uniforms\n  }) {\n    const {\n      pointSize,\n      sizeUnits\n    } = this.props;\n    this.state.model.setUniforms(uniforms).setUniforms({\n      sizeUnits: UNIT[sizeUnits],\n      radiusPixels: pointSize\n    }).draw();\n  }\n\n  _getModel(gl) {\n    const positions = [];\n\n    for (let i = 0; i < 3; i++) {\n      const angle = i / 3 * Math.PI * 2;\n      positions.push(Math.cos(angle) * 2, Math.sin(angle) * 2, 0);\n    }\n\n    return new Model(gl, { ...this.getShaders(),\n      id: this.props.id,\n      geometry: new Geometry({\n        drawMode: 4,\n        attributes: {\n          positions: new Float32Array(positions)\n        }\n      }),\n      isInstanced: true\n    });\n  }\n\n}\n\n_defineProperty(PointCloudLayer, \"layerName\", 'PointCloudLayer');\n\n_defineProperty(PointCloudLayer, \"defaultProps\", defaultProps);\n//# sourceMappingURL=point-cloud-layer.js.map","export default \"#define SHADER_NAME point-cloud-layer-fragment-shader\\n\\nprecision highp float;\\n\\nvarying vec4 vColor;\\nvarying vec2 unitPosition;\\n\\nvoid main(void) {\\n  geometry.uv = unitPosition;\\n\\n  float distToCenter = length(unitPosition);\\n\\n  if (distToCenter > 1.0) {\\n    discard;\\n  }\\n\\n  gl_FragColor = vColor;\\n  DECKGL_FILTER_COLOR(gl_FragColor, geometry);\\n}\\n\";\n//# sourceMappingURL=point-cloud-layer-fragment.glsl.js.map","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { CompositeLayer, createIterable, log } from '@deck.gl/core';\nimport SolidPolygonLayer from '../solid-polygon-layer/solid-polygon-layer';\nimport PathLayer from '../path-layer/path-layer';\nimport * as Polygon from '../solid-polygon-layer/polygon';\nimport { replaceInRange } from '../utils';\nconst defaultLineColor = [0, 0, 0, 255];\nconst defaultFillColor = [0, 0, 0, 255];\nconst defaultProps = {\n  stroked: true,\n  filled: true,\n  extruded: false,\n  elevationScale: 1,\n  wireframe: false,\n  _normalize: true,\n  _windingOrder: 'CW',\n  lineWidthUnits: 'meters',\n  lineWidthScale: 1,\n  lineWidthMinPixels: 0,\n  lineWidthMaxPixels: Number.MAX_SAFE_INTEGER,\n  lineJointRounded: false,\n  lineMiterLimit: 4,\n  getPolygon: {\n    type: 'accessor',\n    value: f => f.polygon\n  },\n  getFillColor: {\n    type: 'accessor',\n    value: defaultFillColor\n  },\n  getLineColor: {\n    type: 'accessor',\n    value: defaultLineColor\n  },\n  getLineWidth: {\n    type: 'accessor',\n    value: 1\n  },\n  getElevation: {\n    type: 'accessor',\n    value: 1000\n  },\n  material: true\n};\nexport default class PolygonLayer extends CompositeLayer {\n  initializeState() {\n    this.state = {\n      paths: []\n    };\n\n    if (this.props.getLineDashArray) {\n      log.removed('getLineDashArray', 'PathStyleExtension')();\n    }\n  }\n\n  updateState({\n    changeFlags\n  }) {\n    const geometryChanged = changeFlags.dataChanged || changeFlags.updateTriggersChanged && (changeFlags.updateTriggersChanged.all || changeFlags.updateTriggersChanged.getPolygon);\n\n    if (geometryChanged && Array.isArray(changeFlags.dataChanged)) {\n      const paths = this.state.paths.slice();\n      const pathsDiff = changeFlags.dataChanged.map(dataRange => replaceInRange({\n        data: paths,\n        getIndex: p => p.__source.index,\n        dataRange,\n        replace: this._getPaths(dataRange)\n      }));\n      this.setState({\n        paths,\n        pathsDiff\n      });\n    } else if (geometryChanged) {\n      this.setState({\n        paths: this._getPaths(),\n        pathsDiff: null\n      });\n    }\n  }\n\n  _getPaths(dataRange = {}) {\n    const {\n      data,\n      getPolygon,\n      positionFormat,\n      _normalize\n    } = this.props;\n    const paths = [];\n    const positionSize = positionFormat === 'XY' ? 2 : 3;\n    const {\n      startRow,\n      endRow\n    } = dataRange;\n    const {\n      iterable,\n      objectInfo\n    } = createIterable(data, startRow, endRow);\n\n    for (const object of iterable) {\n      objectInfo.index++;\n      let polygon = getPolygon(object, objectInfo);\n\n      if (_normalize) {\n        polygon = Polygon.normalize(polygon, positionSize);\n      }\n\n      const {\n        holeIndices\n      } = polygon;\n      const positions = polygon.positions || polygon;\n\n      if (holeIndices) {\n        for (let i = 0; i <= holeIndices.length; i++) {\n          const path = positions.slice(holeIndices[i - 1] || 0, holeIndices[i] || positions.length);\n          paths.push(this.getSubLayerRow({\n            path\n          }, object, objectInfo.index));\n        }\n      } else {\n        paths.push(this.getSubLayerRow({\n          path: positions\n        }, object, objectInfo.index));\n      }\n    }\n\n    return paths;\n  }\n\n  renderLayers() {\n    const {\n      data,\n      _dataDiff,\n      stroked,\n      filled,\n      extruded,\n      wireframe,\n      _normalize,\n      _windingOrder,\n      elevationScale,\n      transitions,\n      positionFormat\n    } = this.props;\n    const {\n      lineWidthUnits,\n      lineWidthScale,\n      lineWidthMinPixels,\n      lineWidthMaxPixels,\n      lineJointRounded,\n      lineMiterLimit,\n      lineDashJustified\n    } = this.props;\n    const {\n      getFillColor,\n      getLineColor,\n      getLineWidth,\n      getLineDashArray,\n      getElevation,\n      getPolygon,\n      updateTriggers,\n      material\n    } = this.props;\n    const {\n      paths,\n      pathsDiff\n    } = this.state;\n    const FillLayer = this.getSubLayerClass('fill', SolidPolygonLayer);\n    const StrokeLayer = this.getSubLayerClass('stroke', PathLayer);\n    const polygonLayer = this.shouldRenderSubLayer('fill', paths) && new FillLayer({\n      _dataDiff,\n      extruded,\n      elevationScale,\n      filled,\n      wireframe,\n      _normalize,\n      _windingOrder,\n      getElevation,\n      getFillColor,\n      getLineColor: extruded && wireframe ? getLineColor : defaultLineColor,\n      material,\n      transitions\n    }, this.getSubLayerProps({\n      id: 'fill',\n      updateTriggers: updateTriggers && {\n        getPolygon: updateTriggers.getPolygon,\n        getElevation: updateTriggers.getElevation,\n        getFillColor: updateTriggers.getFillColor,\n        lineColors: extruded && wireframe,\n        getLineColor: updateTriggers.getLineColor\n      }\n    }), {\n      data,\n      positionFormat,\n      getPolygon\n    });\n    const polygonLineLayer = !extruded && stroked && this.shouldRenderSubLayer('stroke', paths) && new StrokeLayer({\n      _dataDiff: pathsDiff && (() => pathsDiff),\n      widthUnits: lineWidthUnits,\n      widthScale: lineWidthScale,\n      widthMinPixels: lineWidthMinPixels,\n      widthMaxPixels: lineWidthMaxPixels,\n      jointRounded: lineJointRounded,\n      miterLimit: lineMiterLimit,\n      dashJustified: lineDashJustified,\n      _pathType: 'loop',\n      transitions: transitions && {\n        getWidth: transitions.getLineWidth,\n        getColor: transitions.getLineColor,\n        getPath: transitions.getPolygon\n      },\n      getColor: this.getSubLayerAccessor(getLineColor),\n      getWidth: this.getSubLayerAccessor(getLineWidth),\n      getDashArray: this.getSubLayerAccessor(getLineDashArray)\n    }, this.getSubLayerProps({\n      id: 'stroke',\n      updateTriggers: updateTriggers && {\n        getWidth: updateTriggers.getLineWidth,\n        getColor: updateTriggers.getLineColor,\n        getDashArray: updateTriggers.getLineDashArray\n      }\n    }), {\n      data: paths,\n      positionFormat,\n      getPath: x => x.path\n    });\n    return [!extruded && polygonLayer, polygonLineLayer, extruded && polygonLayer];\n  }\n\n}\n\n_defineProperty(PolygonLayer, \"layerName\", 'PolygonLayer');\n\n_defineProperty(PolygonLayer, \"defaultProps\", defaultProps);\n//# sourceMappingURL=polygon-layer.js.map","export default \"#define SHADER_NAME scatterplot-layer-vertex-shader\\n\\nattribute vec3 positions;\\n\\nattribute vec3 instancePositions;\\nattribute vec3 instancePositions64Low;\\nattribute float instanceRadius;\\nattribute float instanceLineWidths;\\nattribute vec4 instanceFillColors;\\nattribute vec4 instanceLineColors;\\nattribute vec3 instancePickingColors;\\n\\nuniform float opacity;\\nuniform float radiusScale;\\nuniform float radiusMinPixels;\\nuniform float radiusMaxPixels;\\nuniform float lineWidthScale;\\nuniform float lineWidthMinPixels;\\nuniform float lineWidthMaxPixels;\\nuniform float stroked;\\nuniform bool filled;\\nuniform bool antialiasing;\\nuniform bool billboard;\\nuniform int radiusUnits;\\nuniform int lineWidthUnits;\\n\\nvarying vec4 vFillColor;\\nvarying vec4 vLineColor;\\nvarying vec2 unitPosition;\\nvarying float innerUnitRadius;\\nvarying float outerRadiusPixels;\\n\\n\\nvoid main(void) {\\n  geometry.worldPosition = instancePositions;\\n  outerRadiusPixels = clamp(\\n    project_size_to_pixel(radiusScale * instanceRadius, radiusUnits),\\n    radiusMinPixels, radiusMaxPixels\\n  );\\n  float lineWidthPixels = clamp(\\n    project_size_to_pixel(lineWidthScale * instanceLineWidths, lineWidthUnits),\\n    lineWidthMinPixels, lineWidthMaxPixels\\n  );\\n  outerRadiusPixels += stroked * lineWidthPixels / 2.0;\\n  float edgePadding = antialiasing ? (outerRadiusPixels + SMOOTH_EDGE_RADIUS) / outerRadiusPixels : 1.0;\\n  unitPosition = edgePadding * positions.xy;\\n  geometry.uv = unitPosition;\\n  geometry.pickingColor = instancePickingColors;\\n\\n  innerUnitRadius = 1.0 - stroked * lineWidthPixels / outerRadiusPixels;\\n  \\n  if (billboard) {\\n    gl_Position = project_position_to_clipspace(instancePositions, instancePositions64Low, vec3(0.0), geometry.position);\\n    DECKGL_FILTER_GL_POSITION(gl_Position, geometry);\\n    vec3 offset = edgePadding * positions * outerRadiusPixels;\\n    DECKGL_FILTER_SIZE(offset, geometry);\\n    gl_Position.xy += project_pixel_size_to_clipspace(offset.xy);\\n  } else {\\n    vec3 offset = edgePadding * positions * project_pixel_size(outerRadiusPixels);\\n    DECKGL_FILTER_SIZE(offset, geometry);\\n    gl_Position = project_position_to_clipspace(instancePositions, instancePositions64Low, offset, geometry.position);\\n    DECKGL_FILTER_GL_POSITION(gl_Position, geometry);\\n  }\\n  vFillColor = vec4(instanceFillColors.rgb, instanceFillColors.a * opacity);\\n  DECKGL_FILTER_COLOR(vFillColor, geometry);\\n  vLineColor = vec4(instanceLineColors.rgb, instanceLineColors.a * opacity);\\n  DECKGL_FILTER_COLOR(vLineColor, geometry);\\n}\\n\";\n//# sourceMappingURL=scatterplot-layer-vertex.glsl.js.map","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Layer, project32, picking, UNIT } from '@deck.gl/core';\nimport { Model, Geometry } from '@luma.gl/core';\nimport vs from './scatterplot-layer-vertex.glsl';\nimport fs from './scatterplot-layer-fragment.glsl';\nconst DEFAULT_COLOR = [0, 0, 0, 255];\nconst defaultProps = {\n  radiusUnits: 'meters',\n  radiusScale: {\n    type: 'number',\n    min: 0,\n    value: 1\n  },\n  radiusMinPixels: {\n    type: 'number',\n    min: 0,\n    value: 0\n  },\n  radiusMaxPixels: {\n    type: 'number',\n    min: 0,\n    value: Number.MAX_SAFE_INTEGER\n  },\n  lineWidthUnits: 'meters',\n  lineWidthScale: {\n    type: 'number',\n    min: 0,\n    value: 1\n  },\n  lineWidthMinPixels: {\n    type: 'number',\n    min: 0,\n    value: 0\n  },\n  lineWidthMaxPixels: {\n    type: 'number',\n    min: 0,\n    value: Number.MAX_SAFE_INTEGER\n  },\n  stroked: false,\n  filled: true,\n  billboard: false,\n  antialiasing: true,\n  getPosition: {\n    type: 'accessor',\n    value: x => x.position\n  },\n  getRadius: {\n    type: 'accessor',\n    value: 1\n  },\n  getFillColor: {\n    type: 'accessor',\n    value: DEFAULT_COLOR\n  },\n  getLineColor: {\n    type: 'accessor',\n    value: DEFAULT_COLOR\n  },\n  getLineWidth: {\n    type: 'accessor',\n    value: 1\n  },\n  strokeWidth: {\n    deprecatedFor: 'getLineWidth'\n  },\n  outline: {\n    deprecatedFor: 'stroked'\n  },\n  getColor: {\n    deprecatedFor: ['getFillColor', 'getLineColor']\n  }\n};\nexport default class ScatterplotLayer extends Layer {\n  getShaders() {\n    return super.getShaders({\n      vs,\n      fs,\n      modules: [project32, picking]\n    });\n  }\n\n  initializeState() {\n    this.getAttributeManager().addInstanced({\n      instancePositions: {\n        size: 3,\n        type: 5130,\n        fp64: this.use64bitPositions(),\n        transition: true,\n        accessor: 'getPosition'\n      },\n      instanceRadius: {\n        size: 1,\n        transition: true,\n        accessor: 'getRadius',\n        defaultValue: 1\n      },\n      instanceFillColors: {\n        size: this.props.colorFormat.length,\n        transition: true,\n        normalized: true,\n        type: 5121,\n        accessor: 'getFillColor',\n        defaultValue: [0, 0, 0, 255]\n      },\n      instanceLineColors: {\n        size: this.props.colorFormat.length,\n        transition: true,\n        normalized: true,\n        type: 5121,\n        accessor: 'getLineColor',\n        defaultValue: [0, 0, 0, 255]\n      },\n      instanceLineWidths: {\n        size: 1,\n        transition: true,\n        accessor: 'getLineWidth',\n        defaultValue: 1\n      }\n    });\n  }\n\n  updateState(params) {\n    super.updateState(params);\n\n    if (params.changeFlags.extensionsChanged) {\n      var _this$state$model;\n\n      const {\n        gl\n      } = this.context;\n      (_this$state$model = this.state.model) === null || _this$state$model === void 0 ? void 0 : _this$state$model.delete();\n      this.state.model = this._getModel(gl);\n      this.getAttributeManager().invalidateAll();\n    }\n  }\n\n  draw({\n    uniforms\n  }) {\n    const {\n      radiusUnits,\n      radiusScale,\n      radiusMinPixels,\n      radiusMaxPixels,\n      stroked,\n      filled,\n      billboard,\n      antialiasing,\n      lineWidthUnits,\n      lineWidthScale,\n      lineWidthMinPixels,\n      lineWidthMaxPixels\n    } = this.props;\n    this.state.model.setUniforms(uniforms).setUniforms({\n      stroked: stroked ? 1 : 0,\n      filled,\n      billboard,\n      antialiasing,\n      radiusUnits: UNIT[radiusUnits],\n      radiusScale,\n      radiusMinPixels,\n      radiusMaxPixels,\n      lineWidthUnits: UNIT[lineWidthUnits],\n      lineWidthScale,\n      lineWidthMinPixels,\n      lineWidthMaxPixels\n    }).draw();\n  }\n\n  _getModel(gl) {\n    const positions = [-1, -1, 0, 1, -1, 0, 1, 1, 0, -1, 1, 0];\n    return new Model(gl, { ...this.getShaders(),\n      id: this.props.id,\n      geometry: new Geometry({\n        drawMode: 6,\n        vertexCount: 4,\n        attributes: {\n          positions: {\n            size: 3,\n            value: new Float32Array(positions)\n          }\n        }\n      }),\n      isInstanced: true\n    });\n  }\n\n}\n\n_defineProperty(ScatterplotLayer, \"defaultProps\", defaultProps);\n\n_defineProperty(ScatterplotLayer, \"layerName\", 'ScatterplotLayer');\n//# sourceMappingURL=scatterplot-layer.js.map","export default \"#define SHADER_NAME scatterplot-layer-fragment-shader\\n\\nprecision highp float;\\n\\nuniform bool filled;\\nuniform float stroked;\\nuniform bool antialiasing;\\n\\nvarying vec4 vFillColor;\\nvarying vec4 vLineColor;\\nvarying vec2 unitPosition;\\nvarying float innerUnitRadius;\\nvarying float outerRadiusPixels;\\n\\nvoid main(void) {\\n  geometry.uv = unitPosition;\\n\\n  float distToCenter = length(unitPosition) * outerRadiusPixels;\\n  float inCircle = antialiasing ? \\n    smoothedge(distToCenter, outerRadiusPixels) : \\n    step(distToCenter, outerRadiusPixels);\\n\\n  if (inCircle == 0.0) {\\n    discard;\\n  }\\n\\n  if (stroked > 0.5) {\\n    float isLine = antialiasing ? \\n      smoothedge(innerUnitRadius * outerRadiusPixels, distToCenter) :\\n      step(innerUnitRadius * outerRadiusPixels, distToCenter);\\n\\n    if (filled) {\\n      gl_FragColor = mix(vFillColor, vLineColor, isLine);\\n    } else {\\n      if (isLine == 0.0) {\\n        discard;\\n      }\\n      gl_FragColor = vec4(vLineColor.rgb, vLineColor.a * isLine);\\n    }\\n  } else if (!filled) {\\n    discard;\\n  } else {\\n    gl_FragColor = vFillColor;\\n  }\\n\\n  gl_FragColor.a *= inCircle;\\n  DECKGL_FILTER_COLOR(gl_FragColor, geometry);\\n}\\n\";\n//# sourceMappingURL=scatterplot-layer-fragment.glsl.js.map","import earcut from 'earcut';\nimport { modifyPolygonWindingDirection, WINDING } from '@math.gl/polygon';\nconst OUTER_POLYGON_WINDING = WINDING.CLOCKWISE;\nconst HOLE_POLYGON_WINDING = WINDING.COUNTER_CLOCKWISE;\nconst windingOptions = {\n  isClosed: true\n};\n\nfunction validate(polygon) {\n  polygon = polygon && polygon.positions || polygon;\n\n  if (!Array.isArray(polygon) && !ArrayBuffer.isView(polygon)) {\n    throw new Error('invalid polygon');\n  }\n}\n\nexport function getPositions(polygon) {\n  return 'positions' in polygon ? polygon.positions : polygon;\n}\nexport function getHoleIndices(polygon) {\n  return 'holeIndices' in polygon ? polygon.holeIndices : null;\n}\n\nfunction isNested(polygon) {\n  return Array.isArray(polygon[0]);\n}\n\nfunction isSimple(polygon) {\n  return polygon.length >= 1 && polygon[0].length >= 2 && Number.isFinite(polygon[0][0]);\n}\n\nfunction isNestedRingClosed(simplePolygon) {\n  const p0 = simplePolygon[0];\n  const p1 = simplePolygon[simplePolygon.length - 1];\n  return p0[0] === p1[0] && p0[1] === p1[1] && p0[2] === p1[2];\n}\n\nfunction isFlatRingClosed(positions, size, startIndex, endIndex) {\n  for (let i = 0; i < size; i++) {\n    if (positions[startIndex + i] !== positions[endIndex - size + i]) {\n      return false;\n    }\n  }\n\n  return true;\n}\n\nfunction copyNestedRing(target, targetStartIndex, simplePolygon, size, windingDirection) {\n  let targetIndex = targetStartIndex;\n  const len = simplePolygon.length;\n\n  for (let i = 0; i < len; i++) {\n    for (let j = 0; j < size; j++) {\n      target[targetIndex++] = simplePolygon[i][j] || 0;\n    }\n  }\n\n  if (!isNestedRingClosed(simplePolygon)) {\n    for (let j = 0; j < size; j++) {\n      target[targetIndex++] = simplePolygon[0][j] || 0;\n    }\n  }\n\n  windingOptions.start = targetStartIndex;\n  windingOptions.end = targetIndex;\n  windingOptions.size = size;\n  modifyPolygonWindingDirection(target, windingDirection, windingOptions);\n  return targetIndex;\n}\n\nfunction copyFlatRing(target, targetStartIndex, positions, size, srcStartIndex = 0, srcEndIndex, windingDirection) {\n  srcEndIndex = srcEndIndex || positions.length;\n  const srcLength = srcEndIndex - srcStartIndex;\n\n  if (srcLength <= 0) {\n    return targetStartIndex;\n  }\n\n  let targetIndex = targetStartIndex;\n\n  for (let i = 0; i < srcLength; i++) {\n    target[targetIndex++] = positions[srcStartIndex + i];\n  }\n\n  if (!isFlatRingClosed(positions, size, srcStartIndex, srcEndIndex)) {\n    for (let i = 0; i < size; i++) {\n      target[targetIndex++] = positions[srcStartIndex + i];\n    }\n  }\n\n  windingOptions.start = targetStartIndex;\n  windingOptions.end = targetIndex;\n  windingOptions.size = size;\n  modifyPolygonWindingDirection(target, windingDirection, windingOptions);\n  return targetIndex;\n}\n\nexport function normalize(polygon, positionSize) {\n  validate(polygon);\n  const positions = [];\n  const holeIndices = [];\n\n  if ('positions' in polygon) {\n    const {\n      positions: srcPositions,\n      holeIndices: srcHoleIndices\n    } = polygon;\n\n    if (srcHoleIndices) {\n      let targetIndex = 0;\n\n      for (let i = 0; i <= srcHoleIndices.length; i++) {\n        targetIndex = copyFlatRing(positions, targetIndex, srcPositions, positionSize, srcHoleIndices[i - 1], srcHoleIndices[i], i === 0 ? OUTER_POLYGON_WINDING : HOLE_POLYGON_WINDING);\n        holeIndices.push(targetIndex);\n      }\n\n      holeIndices.pop();\n      return {\n        positions,\n        holeIndices\n      };\n    }\n\n    polygon = srcPositions;\n  }\n\n  if (!isNested(polygon)) {\n    copyFlatRing(positions, 0, polygon, positionSize, 0, positions.length, OUTER_POLYGON_WINDING);\n    return positions;\n  }\n\n  if (!isSimple(polygon)) {\n    let targetIndex = 0;\n\n    for (const [polygonIndex, simplePolygon] of polygon.entries()) {\n      targetIndex = copyNestedRing(positions, targetIndex, simplePolygon, positionSize, polygonIndex === 0 ? OUTER_POLYGON_WINDING : HOLE_POLYGON_WINDING);\n      holeIndices.push(targetIndex);\n    }\n\n    holeIndices.pop();\n    return {\n      positions,\n      holeIndices\n    };\n  }\n\n  copyNestedRing(positions, 0, polygon, positionSize, OUTER_POLYGON_WINDING);\n  return positions;\n}\n\nfunction getPlaneArea(positions, xIndex, yIndex) {\n  const numVerts = positions.length / 3;\n  let area = 0;\n\n  for (let i = 0; i < numVerts; i++) {\n    const j = (i + 1) % numVerts;\n    area += positions[i * 3 + xIndex] * positions[j * 3 + yIndex];\n    area -= positions[j * 3 + xIndex] * positions[i * 3 + yIndex];\n  }\n\n  return Math.abs(area / 2);\n}\n\nfunction permutePositions(positions, xIndex, yIndex, zIndex) {\n  const numVerts = positions.length / 3;\n\n  for (let i = 0; i < numVerts; i++) {\n    const o = i * 3;\n    const x = positions[o + 0];\n    const y = positions[o + 1];\n    const z = positions[o + 2];\n    positions[o + xIndex] = x;\n    positions[o + yIndex] = y;\n    positions[o + zIndex] = z;\n  }\n}\n\nexport function getSurfaceIndices(polygon, positionSize, preproject, full3d) {\n  let holeIndices = getHoleIndices(polygon);\n\n  if (holeIndices) {\n    holeIndices = holeIndices.map(positionIndex => positionIndex / positionSize);\n  }\n\n  let positions = getPositions(polygon);\n  const is3d = full3d && positionSize === 3;\n\n  if (preproject) {\n    const n = positions.length;\n    positions = positions.slice();\n    const p = [];\n\n    for (let i = 0; i < n; i += positionSize) {\n      p[0] = positions[i];\n      p[1] = positions[i + 1];\n\n      if (is3d) {\n        p[2] = positions[i + 2];\n      }\n\n      const xy = preproject(p);\n      positions[i] = xy[0];\n      positions[i + 1] = xy[1];\n\n      if (is3d) {\n        positions[i + 2] = xy[2];\n      }\n    }\n  }\n\n  if (is3d) {\n    const xyArea = getPlaneArea(positions, 0, 1);\n    const xzArea = getPlaneArea(positions, 0, 2);\n    const yzArea = getPlaneArea(positions, 1, 2);\n\n    if (!xyArea && !xzArea && !yzArea) {\n      return [];\n    }\n\n    if (xyArea > xzArea && xyArea > yzArea) {} else if (xzArea > yzArea) {\n      if (!preproject) {\n        positions = positions.slice();\n      }\n\n      permutePositions(positions, 0, 2, 1);\n    } else {\n      if (!preproject) {\n        positions = positions.slice();\n      }\n\n      permutePositions(positions, 2, 0, 1);\n    }\n  }\n\n  return earcut(positions, holeIndices, positionSize);\n}\n//# sourceMappingURL=polygon.js.map","import * as Polygon from './polygon';\nimport { Tesselator } from '@deck.gl/core';\nimport { cutPolygonByGrid, cutPolygonByMercatorBounds } from '@math.gl/polygon';\nexport default class PolygonTesselator extends Tesselator {\n  constructor(opts) {\n    const {\n      fp64,\n      IndexType = Uint32Array\n    } = opts;\n    super({ ...opts,\n      attributes: {\n        positions: {\n          size: 3,\n          type: fp64 ? Float64Array : Float32Array\n        },\n        vertexValid: {\n          type: Uint8ClampedArray,\n          size: 1\n        },\n        indices: {\n          type: IndexType,\n          size: 1\n        }\n      }\n    });\n  }\n\n  get(attributeName) {\n    const {\n      attributes\n    } = this;\n\n    if (attributeName === 'indices') {\n      return attributes.indices && attributes.indices.subarray(0, this.vertexCount);\n    }\n\n    return attributes[attributeName];\n  }\n\n  updateGeometry(opts) {\n    super.updateGeometry(opts);\n    const externalIndices = this.buffers.indices;\n\n    if (externalIndices) {\n      this.vertexCount = (externalIndices.value || externalIndices).length;\n    } else if (this.data && !this.getGeometry) {\n      throw new Error('missing indices buffer');\n    }\n  }\n\n  normalizeGeometry(polygon) {\n    if (this.normalize) {\n      const normalizedPolygon = Polygon.normalize(polygon, this.positionSize);\n\n      if (this.opts.resolution) {\n        return cutPolygonByGrid(Polygon.getPositions(normalizedPolygon), Polygon.getHoleIndices(normalizedPolygon), {\n          size: this.positionSize,\n          gridResolution: this.opts.resolution,\n          edgeTypes: true\n        });\n      }\n\n      if (this.opts.wrapLongitude) {\n        return cutPolygonByMercatorBounds(Polygon.getPositions(normalizedPolygon), Polygon.getHoleIndices(normalizedPolygon), {\n          size: this.positionSize,\n          maxLatitude: 86,\n          edgeTypes: true\n        });\n      }\n\n      return normalizedPolygon;\n    }\n\n    return polygon;\n  }\n\n  getGeometrySize(polygon) {\n    if (isCut(polygon)) {\n      let size = 0;\n\n      for (const subPolygon of polygon) {\n        size += this.getGeometrySize(subPolygon);\n      }\n\n      return size;\n    }\n\n    return Polygon.getPositions(polygon).length / this.positionSize;\n  }\n\n  getGeometryFromBuffer(buffer) {\n    if (this.normalize || !this.buffers.indices) {\n      return super.getGeometryFromBuffer(buffer);\n    }\n\n    return null;\n  }\n\n  updateGeometryAttributes(polygon, context) {\n    if (polygon && isCut(polygon)) {\n      for (const subPolygon of polygon) {\n        const geometrySize = this.getGeometrySize(subPolygon);\n        context.geometrySize = geometrySize;\n        this.updateGeometryAttributes(subPolygon, context);\n        context.vertexStart += geometrySize;\n        context.indexStart = this.indexStarts[context.geometryIndex + 1];\n      }\n    } else {\n      this._updateIndices(polygon, context);\n\n      this._updatePositions(polygon, context);\n\n      this._updateVertexValid(polygon, context);\n    }\n  }\n\n  _updateIndices(polygon, {\n    geometryIndex,\n    vertexStart: offset,\n    indexStart\n  }) {\n    const {\n      attributes,\n      indexStarts,\n      typedArrayManager\n    } = this;\n    let target = attributes.indices;\n\n    if (!target || !polygon) {\n      return;\n    }\n\n    let i = indexStart;\n    const indices = Polygon.getSurfaceIndices(polygon, this.positionSize, this.opts.preproject, this.opts.full3d);\n    target = typedArrayManager.allocate(target, indexStart + indices.length, {\n      copy: true\n    });\n\n    for (let j = 0; j < indices.length; j++) {\n      target[i++] = indices[j] + offset;\n    }\n\n    indexStarts[geometryIndex + 1] = indexStart + indices.length;\n    attributes.indices = target;\n  }\n\n  _updatePositions(polygon, {\n    vertexStart,\n    geometrySize\n  }) {\n    const {\n      attributes: {\n        positions\n      },\n      positionSize\n    } = this;\n\n    if (!positions || !polygon) {\n      return;\n    }\n\n    const polygonPositions = Polygon.getPositions(polygon);\n\n    for (let i = vertexStart, j = 0; j < geometrySize; i++, j++) {\n      const x = polygonPositions[j * positionSize];\n      const y = polygonPositions[j * positionSize + 1];\n      const z = positionSize > 2 ? polygonPositions[j * positionSize + 2] : 0;\n      positions[i * 3] = x;\n      positions[i * 3 + 1] = y;\n      positions[i * 3 + 2] = z;\n    }\n  }\n\n  _updateVertexValid(polygon, {\n    vertexStart,\n    geometrySize\n  }) {\n    const {\n      positionSize\n    } = this;\n    const vertexValid = this.attributes.vertexValid;\n    const holeIndices = polygon && Polygon.getHoleIndices(polygon);\n\n    if (polygon && polygon.edgeTypes) {\n      vertexValid.set(polygon.edgeTypes, vertexStart);\n    } else {\n      vertexValid.fill(1, vertexStart, vertexStart + geometrySize);\n    }\n\n    if (holeIndices) {\n      for (let j = 0; j < holeIndices.length; j++) {\n        vertexValid[vertexStart + holeIndices[j] / positionSize - 1] = 0;\n      }\n    }\n\n    vertexValid[vertexStart + geometrySize - 1] = 0;\n  }\n\n}\n\nfunction isCut(polygon) {\n  return Array.isArray(polygon) && polygon.length > 0 && !Number.isFinite(polygon[0]);\n}\n//# sourceMappingURL=polygon-tesselator.js.map","export default \"\\nattribute vec2 vertexPositions;\\nattribute float vertexValid;\\n\\nuniform bool extruded;\\nuniform bool isWireframe;\\nuniform float elevationScale;\\nuniform float opacity;\\n\\nvarying vec4 vColor;\\n\\nstruct PolygonProps {\\n  vec4 fillColors;\\n  vec4 lineColors;\\n  vec3 positions;\\n  vec3 nextPositions;\\n  vec3 pickingColors;\\n  vec3 positions64Low;\\n  vec3 nextPositions64Low;\\n  float elevations;\\n};\\n\\nvec3 project_offset_normal(vec3 vector) {\\n  if (project_uCoordinateSystem == COORDINATE_SYSTEM_LNGLAT ||\\n    project_uCoordinateSystem == COORDINATE_SYSTEM_LNGLAT_OFFSETS) {\\n    return normalize(vector * project_uCommonUnitsPerWorldUnit);\\n  }\\n  return project_normal(vector);\\n}\\n\\nvoid calculatePosition(PolygonProps props) {\\n#ifdef IS_SIDE_VERTEX\\n  if(vertexValid < 0.5){\\n    gl_Position = vec4(0.);\\n    return;\\n  }\\n#endif\\n\\n  vec3 pos;\\n  vec3 pos64Low;\\n  vec3 normal;\\n  vec4 colors = isWireframe ? props.lineColors : props.fillColors;\\n\\n  geometry.worldPosition = props.positions;\\n  geometry.worldPositionAlt = props.nextPositions;\\n  geometry.pickingColor = props.pickingColors;\\n\\n#ifdef IS_SIDE_VERTEX\\n  pos = mix(props.positions, props.nextPositions, vertexPositions.x);\\n  pos64Low = mix(props.positions64Low, props.nextPositions64Low, vertexPositions.x);\\n#else\\n  pos = props.positions;\\n  pos64Low = props.positions64Low;\\n#endif\\n\\n  if (extruded) {\\n    pos.z += props.elevations * vertexPositions.y * elevationScale;\\n  }\\n  gl_Position = project_position_to_clipspace(pos, pos64Low, vec3(0.), geometry.position);\\n\\n  DECKGL_FILTER_GL_POSITION(gl_Position, geometry);\\n\\n  if (extruded) {\\n  #ifdef IS_SIDE_VERTEX\\n    normal = vec3(\\n      props.positions.y - props.nextPositions.y + (props.positions64Low.y - props.nextPositions64Low.y),\\n      props.nextPositions.x - props.positions.x + (props.nextPositions64Low.x - props.positions64Low.x),\\n      0.0);\\n    normal = project_offset_normal(normal);\\n  #else\\n    normal = project_normal(vec3(0.0, 0.0, 1.0));\\n  #endif\\n    geometry.normal = normal;\\n    vec3 lightColor = lighting_getLightColor(colors.rgb, project_uCameraPosition, geometry.position.xyz, normal);\\n    vColor = vec4(lightColor, colors.a * opacity);\\n  } else {\\n    vColor = vec4(colors.rgb, colors.a * opacity);\\n  }\\n  DECKGL_FILTER_COLOR(vColor, geometry);\\n}\\n\";\n//# sourceMappingURL=solid-polygon-layer-vertex-main.glsl.js.map","import main from './solid-polygon-layer-vertex-main.glsl';\nexport default \"#define SHADER_NAME solid-polygon-layer-vertex-shader\\n\\nattribute vec3 positions;\\nattribute vec3 positions64Low;\\nattribute float elevations;\\nattribute vec4 fillColors;\\nattribute vec4 lineColors;\\nattribute vec3 pickingColors;\\n\\n\".concat(main, \"\\n\\nvoid main(void) {\\n  PolygonProps props;\\n\\n  props.positions = positions;\\n  props.positions64Low = positions64Low;\\n  props.elevations = elevations;\\n  props.fillColors = fillColors;\\n  props.lineColors = lineColors;\\n  props.pickingColors = pickingColors;\\n\\n  calculatePosition(props);\\n}\\n\");\n//# sourceMappingURL=solid-polygon-layer-vertex-top.glsl.js.map","import main from './solid-polygon-layer-vertex-main.glsl';\nexport default \"#define SHADER_NAME solid-polygon-layer-vertex-shader-side\\n#define IS_SIDE_VERTEX\\n\\n\\nattribute vec3 instancePositions;\\nattribute vec3 nextPositions;\\nattribute vec3 instancePositions64Low;\\nattribute vec3 nextPositions64Low;\\nattribute float instanceElevations;\\nattribute vec4 instanceFillColors;\\nattribute vec4 instanceLineColors;\\nattribute vec3 instancePickingColors;\\n\\n\".concat(main, \"\\n\\nvoid main(void) {\\n  PolygonProps props;\\n\\n  #if RING_WINDING_ORDER_CW == 1\\n    props.positions = instancePositions;\\n    props.positions64Low = instancePositions64Low;\\n    props.nextPositions = nextPositions;\\n    props.nextPositions64Low = nextPositions64Low;\\n  #else\\n    props.positions = nextPositions;\\n    props.positions64Low = nextPositions64Low;\\n    props.nextPositions = instancePositions;\\n    props.nextPositions64Low = instancePositions64Low;\\n  #endif\\n  props.elevations = instanceElevations;\\n  props.fillColors = instanceFillColors;\\n  props.lineColors = instanceLineColors;\\n  props.pickingColors = instancePickingColors;\\n\\n  calculatePosition(props);\\n}\\n\");\n//# sourceMappingURL=solid-polygon-layer-vertex-side.glsl.js.map","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Layer, project32, gouraudLighting, picking, COORDINATE_SYSTEM } from '@deck.gl/core';\nimport { Model, Geometry, hasFeatures, FEATURES } from '@luma.gl/core';\nimport PolygonTesselator from './polygon-tesselator';\nimport vsTop from './solid-polygon-layer-vertex-top.glsl';\nimport vsSide from './solid-polygon-layer-vertex-side.glsl';\nimport fs from './solid-polygon-layer-fragment.glsl';\nconst DEFAULT_COLOR = [0, 0, 0, 255];\nconst defaultProps = {\n  filled: true,\n  extruded: false,\n  wireframe: false,\n  _normalize: true,\n  _windingOrder: 'CW',\n  _full3d: false,\n  elevationScale: {\n    type: 'number',\n    min: 0,\n    value: 1\n  },\n  getPolygon: {\n    type: 'accessor',\n    value: f => f.polygon\n  },\n  getElevation: {\n    type: 'accessor',\n    value: 1000\n  },\n  getFillColor: {\n    type: 'accessor',\n    value: DEFAULT_COLOR\n  },\n  getLineColor: {\n    type: 'accessor',\n    value: DEFAULT_COLOR\n  },\n  material: true\n};\nconst ATTRIBUTE_TRANSITION = {\n  enter: (value, chunk) => {\n    return chunk.length ? chunk.subarray(chunk.length - value.length) : value;\n  }\n};\nexport default class SolidPolygonLayer extends Layer {\n  constructor(...args) {\n    super(...args);\n\n    _defineProperty(this, \"state\", void 0);\n  }\n\n  getShaders(type) {\n    return super.getShaders({\n      vs: type === 'top' ? vsTop : vsSide,\n      fs,\n      defines: {\n        RING_WINDING_ORDER_CW: !this.props._normalize && this.props._windingOrder === 'CCW' ? 0 : 1\n      },\n      modules: [project32, gouraudLighting, picking]\n    });\n  }\n\n  get wrapLongitude() {\n    return false;\n  }\n\n  initializeState() {\n    const {\n      gl,\n      viewport\n    } = this.context;\n    let {\n      coordinateSystem\n    } = this.props;\n    const {\n      _full3d\n    } = this.props;\n\n    if (viewport.isGeospatial && coordinateSystem === COORDINATE_SYSTEM.DEFAULT) {\n      coordinateSystem = COORDINATE_SYSTEM.LNGLAT;\n    }\n\n    let preproject;\n\n    if (coordinateSystem === COORDINATE_SYSTEM.LNGLAT) {\n      if (_full3d) {\n        preproject = viewport.projectPosition.bind(viewport);\n      } else {\n        preproject = viewport.projectFlat.bind(viewport);\n      }\n    }\n\n    this.setState({\n      numInstances: 0,\n      polygonTesselator: new PolygonTesselator({\n        preproject,\n        fp64: this.use64bitPositions(),\n        IndexType: !gl || hasFeatures(gl, FEATURES.ELEMENT_INDEX_UINT32) ? Uint32Array : Uint16Array\n      })\n    });\n    const attributeManager = this.getAttributeManager();\n    const noAlloc = true;\n    attributeManager.remove(['instancePickingColors']);\n    attributeManager.add({\n      indices: {\n        size: 1,\n        isIndexed: true,\n        update: this.calculateIndices,\n        noAlloc\n      },\n      positions: {\n        size: 3,\n        type: 5130,\n        fp64: this.use64bitPositions(),\n        transition: ATTRIBUTE_TRANSITION,\n        accessor: 'getPolygon',\n        update: this.calculatePositions,\n        noAlloc,\n        shaderAttributes: {\n          positions: {\n            vertexOffset: 0,\n            divisor: 0\n          },\n          instancePositions: {\n            vertexOffset: 0,\n            divisor: 1\n          },\n          nextPositions: {\n            vertexOffset: 1,\n            divisor: 1\n          }\n        }\n      },\n      vertexValid: {\n        size: 1,\n        divisor: 1,\n        type: 5121,\n        update: this.calculateVertexValid,\n        noAlloc\n      },\n      elevations: {\n        size: 1,\n        transition: ATTRIBUTE_TRANSITION,\n        accessor: 'getElevation',\n        shaderAttributes: {\n          elevations: {\n            divisor: 0\n          },\n          instanceElevations: {\n            divisor: 1\n          }\n        }\n      },\n      fillColors: {\n        size: this.props.colorFormat.length,\n        type: 5121,\n        normalized: true,\n        transition: ATTRIBUTE_TRANSITION,\n        accessor: 'getFillColor',\n        defaultValue: DEFAULT_COLOR,\n        shaderAttributes: {\n          fillColors: {\n            divisor: 0\n          },\n          instanceFillColors: {\n            divisor: 1\n          }\n        }\n      },\n      lineColors: {\n        size: this.props.colorFormat.length,\n        type: 5121,\n        normalized: true,\n        transition: ATTRIBUTE_TRANSITION,\n        accessor: 'getLineColor',\n        defaultValue: DEFAULT_COLOR,\n        shaderAttributes: {\n          lineColors: {\n            divisor: 0\n          },\n          instanceLineColors: {\n            divisor: 1\n          }\n        }\n      },\n      pickingColors: {\n        size: 3,\n        type: 5121,\n        accessor: (object, {\n          index,\n          target: value\n        }) => this.encodePickingColor(object && object.__source ? object.__source.index : index, value),\n        shaderAttributes: {\n          pickingColors: {\n            divisor: 0\n          },\n          instancePickingColors: {\n            divisor: 1\n          }\n        }\n      }\n    });\n  }\n\n  getPickingInfo(params) {\n    const info = super.getPickingInfo(params);\n    const {\n      index\n    } = info;\n    const {\n      data\n    } = this.props;\n\n    if (data[0] && data[0].__source) {\n      info.object = data.find(d => d.__source.index === index);\n    }\n\n    return info;\n  }\n\n  disablePickingIndex(objectIndex) {\n    const {\n      data\n    } = this.props;\n\n    if (data[0] && data[0].__source) {\n      for (let i = 0; i < data.length; i++) {\n        if (data[i].__source.index === objectIndex) {\n          this._disablePickingIndex(i);\n        }\n      }\n    } else {\n      super.disablePickingIndex(objectIndex);\n    }\n  }\n\n  draw({\n    uniforms\n  }) {\n    const {\n      extruded,\n      filled,\n      wireframe,\n      elevationScale\n    } = this.props;\n    const {\n      topModel,\n      sideModel,\n      polygonTesselator\n    } = this.state;\n    const renderUniforms = { ...uniforms,\n      extruded: Boolean(extruded),\n      elevationScale\n    };\n\n    if (sideModel) {\n      sideModel.setInstanceCount(polygonTesselator.instanceCount - 1);\n      sideModel.setUniforms(renderUniforms);\n\n      if (wireframe) {\n        sideModel.setDrawMode(3);\n        sideModel.setUniforms({\n          isWireframe: true\n        }).draw();\n      }\n\n      if (filled) {\n        sideModel.setDrawMode(6);\n        sideModel.setUniforms({\n          isWireframe: false\n        }).draw();\n      }\n    }\n\n    if (topModel) {\n      topModel.setVertexCount(polygonTesselator.vertexCount);\n      topModel.setUniforms(renderUniforms).draw();\n    }\n  }\n\n  updateState(updateParams) {\n    super.updateState(updateParams);\n    this.updateGeometry(updateParams);\n    const {\n      props,\n      oldProps,\n      changeFlags\n    } = updateParams;\n    const attributeManager = this.getAttributeManager();\n    const regenerateModels = changeFlags.extensionsChanged || props.filled !== oldProps.filled || props.extruded !== oldProps.extruded;\n\n    if (regenerateModels) {\n      var _this$state$models;\n\n      (_this$state$models = this.state.models) === null || _this$state$models === void 0 ? void 0 : _this$state$models.forEach(model => model.delete());\n      this.setState(this._getModels(this.context.gl));\n      attributeManager.invalidateAll();\n    }\n  }\n\n  updateGeometry({\n    props,\n    oldProps,\n    changeFlags\n  }) {\n    const geometryConfigChanged = changeFlags.dataChanged || changeFlags.updateTriggersChanged && (changeFlags.updateTriggersChanged.all || changeFlags.updateTriggersChanged.getPolygon);\n\n    if (geometryConfigChanged) {\n      const {\n        polygonTesselator\n      } = this.state;\n      const buffers = props.data.attributes || {};\n      polygonTesselator.updateGeometry({\n        data: props.data,\n        normalize: props._normalize,\n        geometryBuffer: buffers.getPolygon,\n        buffers,\n        getGeometry: props.getPolygon,\n        positionFormat: props.positionFormat,\n        wrapLongitude: props.wrapLongitude,\n        resolution: this.context.viewport.resolution,\n        fp64: this.use64bitPositions(),\n        dataChanged: changeFlags.dataChanged,\n        full3d: props._full3d\n      });\n      this.setState({\n        numInstances: polygonTesselator.instanceCount,\n        startIndices: polygonTesselator.vertexStarts\n      });\n\n      if (!changeFlags.dataChanged) {\n        this.getAttributeManager().invalidateAll();\n      }\n    }\n  }\n\n  _getModels(gl) {\n    const {\n      id,\n      filled,\n      extruded\n    } = this.props;\n    let topModel;\n    let sideModel;\n\n    if (filled) {\n      const shaders = this.getShaders('top');\n      shaders.defines.NON_INSTANCED_MODEL = 1;\n      topModel = new Model(gl, { ...shaders,\n        id: \"\".concat(id, \"-top\"),\n        drawMode: 4,\n        attributes: {\n          vertexPositions: new Float32Array([0, 1])\n        },\n        uniforms: {\n          isWireframe: false,\n          isSideVertex: false\n        },\n        vertexCount: 0,\n        isIndexed: true\n      });\n    }\n\n    if (extruded) {\n      sideModel = new Model(gl, { ...this.getShaders('side'),\n        id: \"\".concat(id, \"-side\"),\n        geometry: new Geometry({\n          drawMode: 1,\n          vertexCount: 4,\n          attributes: {\n            vertexPositions: {\n              size: 2,\n              value: new Float32Array([1, 0, 0, 0, 0, 1, 1, 1])\n            }\n          }\n        }),\n        instanceCount: 0,\n        isInstanced: 1\n      });\n      sideModel.userData.excludeAttributes = {\n        indices: true\n      };\n    }\n\n    return {\n      models: [sideModel, topModel].filter(Boolean),\n      topModel,\n      sideModel\n    };\n  }\n\n  calculateIndices(attribute) {\n    const {\n      polygonTesselator\n    } = this.state;\n    attribute.startIndices = polygonTesselator.indexStarts;\n    attribute.value = polygonTesselator.get('indices');\n  }\n\n  calculatePositions(attribute) {\n    const {\n      polygonTesselator\n    } = this.state;\n    attribute.startIndices = polygonTesselator.vertexStarts;\n    attribute.value = polygonTesselator.get('positions');\n  }\n\n  calculateVertexValid(attribute) {\n    attribute.value = this.state.polygonTesselator.get('vertexValid');\n  }\n\n}\n\n_defineProperty(SolidPolygonLayer, \"defaultProps\", defaultProps);\n\n_defineProperty(SolidPolygonLayer, \"layerName\", 'SolidPolygonLayer');\n//# sourceMappingURL=solid-polygon-layer.js.map","export default \"#define SHADER_NAME solid-polygon-layer-fragment-shader\\n\\nprecision highp float;\\n\\nvarying vec4 vColor;\\n\\nvoid main(void) {\\n  gl_FragColor = vColor;\\n\\n  DECKGL_FILTER_COLOR(gl_FragColor, geometry);\\n}\\n\";\n//# sourceMappingURL=solid-polygon-layer-fragment.glsl.js.map","export default \"#define SHADER_NAME multi-icon-layer-fragment-shader\\n\\nprecision highp float;\\n\\nuniform float opacity;\\nuniform sampler2D iconsTexture;\\nuniform float gamma;\\nuniform bool sdf;\\nuniform float alphaCutoff;\\nuniform float sdfBuffer;\\nuniform float outlineBuffer;\\nuniform vec4 outlineColor;\\n\\nvarying vec4 vColor;\\nvarying vec2 vTextureCoords;\\nvarying vec2 uv;\\n\\nvoid main(void) {\\n  geometry.uv = uv;\\n\\n  if (!picking_uActive) {\\n    float alpha = texture2D(iconsTexture, vTextureCoords).a;\\n    vec4 color = vColor;\\n    if (sdf) {\\n      float distance = alpha;\\n      alpha = smoothstep(sdfBuffer - gamma, sdfBuffer + gamma, distance);\\n\\n      if (outlineBuffer > 0.0) {\\n        float inFill = alpha;\\n        float inBorder = smoothstep(outlineBuffer - gamma, outlineBuffer + gamma, distance);\\n        color = mix(outlineColor, vColor, inFill);\\n        alpha = inBorder;\\n      }\\n    }\\n    float a = alpha * color.a;\\n    \\n    if (a < alphaCutoff) {\\n      discard;\\n    }\\n\\n    gl_FragColor = vec4(color.rgb, a * opacity);\\n  }\\n\\n  DECKGL_FILTER_COLOR(gl_FragColor, geometry);\\n}\\n\";\n//# sourceMappingURL=multi-icon-layer-fragment.glsl.js.map","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { log } from '@deck.gl/core';\nimport IconLayer from '../../icon-layer/icon-layer';\nimport fs from './multi-icon-layer-fragment.glsl';\nconst DEFAULT_BUFFER = 192.0 / 256;\nconst EMPTY_ARRAY = [];\nconst defaultProps = {\n  getIconOffsets: {\n    type: 'accessor',\n    value: x => x.offsets\n  },\n  alphaCutoff: 0.001,\n  smoothing: 0.1,\n  outlineWidth: 0,\n  outlineColor: {\n    type: 'color',\n    value: [0, 0, 0, 255]\n  }\n};\nexport default class MultiIconLayer extends IconLayer {\n  constructor(...args) {\n    super(...args);\n\n    _defineProperty(this, \"state\", void 0);\n  }\n\n  getShaders() {\n    return { ...super.getShaders(),\n      fs\n    };\n  }\n\n  initializeState() {\n    super.initializeState();\n    const attributeManager = this.getAttributeManager();\n    attributeManager.addInstanced({\n      instanceOffsets: {\n        size: 2,\n        accessor: 'getIconOffsets'\n      },\n      instancePickingColors: {\n        type: 5121,\n        size: 3,\n        accessor: (object, {\n          index,\n          target: value\n        }) => this.encodePickingColor(index, value)\n      }\n    });\n  }\n\n  updateState(params) {\n    super.updateState(params);\n    const {\n      props,\n      oldProps\n    } = params;\n    let {\n      outlineColor\n    } = props;\n\n    if (outlineColor !== oldProps.outlineColor) {\n      outlineColor = outlineColor.map(x => x / 255);\n      outlineColor[3] = Number.isFinite(outlineColor[3]) ? outlineColor[3] : 1;\n      this.setState({\n        outlineColor\n      });\n    }\n\n    if (!props.sdf && props.outlineWidth) {\n      log.warn(\"\".concat(this.id, \": fontSettings.sdf is required to render outline\"))();\n    }\n  }\n\n  draw(params) {\n    const {\n      sdf,\n      smoothing,\n      outlineWidth\n    } = this.props;\n    const {\n      outlineColor\n    } = this.state;\n    const outlineBuffer = outlineWidth ? Math.max(smoothing, DEFAULT_BUFFER * (1 - outlineWidth)) : -1;\n    params.uniforms = { ...params.uniforms,\n      sdfBuffer: DEFAULT_BUFFER,\n      outlineBuffer,\n      gamma: smoothing,\n      sdf: Boolean(sdf),\n      outlineColor\n    };\n    super.draw(params);\n\n    if (sdf && outlineWidth) {\n      const {\n        iconManager\n      } = this.state;\n      const iconsTexture = iconManager.getTexture();\n\n      if (iconsTexture) {\n        this.state.model.draw({\n          uniforms: {\n            outlineBuffer: DEFAULT_BUFFER\n          }\n        });\n      }\n    }\n  }\n\n  getInstanceOffset(icons) {\n    return icons ? Array.from(icons).flatMap(icon => super.getInstanceOffset(icon)) : EMPTY_ARRAY;\n  }\n\n  getInstanceColorMode(icons) {\n    return 1;\n  }\n\n  getInstanceIconFrame(icons) {\n    return icons ? Array.from(icons).flatMap(icon => super.getInstanceIconFrame(icon)) : EMPTY_ARRAY;\n  }\n\n}\n\n_defineProperty(MultiIconLayer, \"defaultProps\", defaultProps);\n\n_defineProperty(MultiIconLayer, \"layerName\", 'MultiIconLayer');\n//# sourceMappingURL=multi-icon-layer.js.map","export default \"#define SHADER_NAME text-background-layer-vertex-shader\\n\\nattribute vec2 positions;\\n\\nattribute vec3 instancePositions;\\nattribute vec3 instancePositions64Low;\\nattribute vec4 instanceRects;\\nattribute float instanceSizes;\\nattribute float instanceAngles;\\nattribute vec2 instancePixelOffsets;\\nattribute float instanceLineWidths;\\nattribute vec4 instanceFillColors;\\nattribute vec4 instanceLineColors;\\nattribute vec3 instancePickingColors;\\n\\nuniform bool billboard;\\nuniform float opacity;\\nuniform float sizeScale;\\nuniform float sizeMinPixels;\\nuniform float sizeMaxPixels;\\nuniform vec4 padding;\\nuniform int sizeUnits;\\n\\nvarying vec4 vFillColor;\\nvarying vec4 vLineColor;\\nvarying float vLineWidth;\\nvarying vec2 uv;\\nvarying vec2 dimensions;\\n\\nvec2 rotate_by_angle(vec2 vertex, float angle) {\\n  float angle_radian = radians(angle);\\n  float cos_angle = cos(angle_radian);\\n  float sin_angle = sin(angle_radian);\\n  mat2 rotationMatrix = mat2(cos_angle, -sin_angle, sin_angle, cos_angle);\\n  return rotationMatrix * vertex;\\n}\\n\\nvoid main(void) {\\n  geometry.worldPosition = instancePositions;\\n  geometry.uv = positions;\\n  geometry.pickingColor = instancePickingColors;\\n  uv = positions;\\n  vLineWidth = instanceLineWidths;\\n  float sizePixels = clamp(\\n    project_size_to_pixel(instanceSizes * sizeScale, sizeUnits),\\n    sizeMinPixels, sizeMaxPixels\\n  );\\n\\n  dimensions = instanceRects.zw * sizePixels + padding.xy + padding.zw;\\n\\n  vec2 pixelOffset = (positions * instanceRects.zw + instanceRects.xy) * sizePixels + mix(-padding.xy, padding.zw, positions);\\n  pixelOffset = rotate_by_angle(pixelOffset, instanceAngles);\\n  pixelOffset += instancePixelOffsets;\\n  pixelOffset.y *= -1.0;\\n\\n  if (billboard)  {\\n    gl_Position = project_position_to_clipspace(instancePositions, instancePositions64Low, vec3(0.0), geometry.position);\\n    DECKGL_FILTER_GL_POSITION(gl_Position, geometry);\\n    vec3 offset = vec3(pixelOffset, 0.0);\\n    DECKGL_FILTER_SIZE(offset, geometry);\\n    gl_Position.xy += project_pixel_size_to_clipspace(offset.xy);\\n  } else {\\n    vec3 offset_common = vec3(project_pixel_size(pixelOffset), 0.0);\\n    DECKGL_FILTER_SIZE(offset_common, geometry);\\n    gl_Position = project_position_to_clipspace(instancePositions, instancePositions64Low, offset_common, geometry.position);\\n    DECKGL_FILTER_GL_POSITION(gl_Position, geometry);\\n  }\\n  vFillColor = vec4(instanceFillColors.rgb, instanceFillColors.a * opacity);\\n  DECKGL_FILTER_COLOR(vFillColor, geometry);\\n  vLineColor = vec4(instanceLineColors.rgb, instanceLineColors.a * opacity);\\n  DECKGL_FILTER_COLOR(vLineColor, geometry);\\n}\\n\";\n//# sourceMappingURL=text-background-layer-vertex.glsl.js.map","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Layer, project32, picking, UNIT } from '@deck.gl/core';\nimport { Model, Geometry } from '@luma.gl/core';\nimport vs from './text-background-layer-vertex.glsl';\nimport fs from './text-background-layer-fragment.glsl';\nconst defaultProps = {\n  billboard: true,\n  sizeScale: 1,\n  sizeUnits: 'pixels',\n  sizeMinPixels: 0,\n  sizeMaxPixels: Number.MAX_SAFE_INTEGER,\n  padding: {\n    type: 'array',\n    value: [0, 0, 0, 0]\n  },\n  getPosition: {\n    type: 'accessor',\n    value: x => x.position\n  },\n  getSize: {\n    type: 'accessor',\n    value: 1\n  },\n  getAngle: {\n    type: 'accessor',\n    value: 0\n  },\n  getPixelOffset: {\n    type: 'accessor',\n    value: [0, 0]\n  },\n  getBoundingRect: {\n    type: 'accessor',\n    value: [0, 0, 0, 0]\n  },\n  getFillColor: {\n    type: 'accessor',\n    value: [0, 0, 0, 255]\n  },\n  getLineColor: {\n    type: 'accessor',\n    value: [0, 0, 0, 255]\n  },\n  getLineWidth: {\n    type: 'accessor',\n    value: 1\n  }\n};\nexport default class TextBackgroundLayer extends Layer {\n  constructor(...args) {\n    super(...args);\n\n    _defineProperty(this, \"state\", void 0);\n  }\n\n  getShaders() {\n    return super.getShaders({\n      vs,\n      fs,\n      modules: [project32, picking]\n    });\n  }\n\n  initializeState() {\n    this.getAttributeManager().addInstanced({\n      instancePositions: {\n        size: 3,\n        type: 5130,\n        fp64: this.use64bitPositions(),\n        transition: true,\n        accessor: 'getPosition'\n      },\n      instanceSizes: {\n        size: 1,\n        transition: true,\n        accessor: 'getSize',\n        defaultValue: 1\n      },\n      instanceAngles: {\n        size: 1,\n        transition: true,\n        accessor: 'getAngle'\n      },\n      instanceRects: {\n        size: 4,\n        accessor: 'getBoundingRect'\n      },\n      instancePixelOffsets: {\n        size: 2,\n        transition: true,\n        accessor: 'getPixelOffset'\n      },\n      instanceFillColors: {\n        size: 4,\n        transition: true,\n        normalized: true,\n        type: 5121,\n        accessor: 'getFillColor',\n        defaultValue: [0, 0, 0, 255]\n      },\n      instanceLineColors: {\n        size: 4,\n        transition: true,\n        normalized: true,\n        type: 5121,\n        accessor: 'getLineColor',\n        defaultValue: [0, 0, 0, 255]\n      },\n      instanceLineWidths: {\n        size: 1,\n        transition: true,\n        accessor: 'getLineWidth',\n        defaultValue: 1\n      }\n    });\n  }\n\n  updateState(params) {\n    super.updateState(params);\n    const {\n      changeFlags\n    } = params;\n\n    if (changeFlags.extensionsChanged) {\n      var _this$state$model;\n\n      const {\n        gl\n      } = this.context;\n      (_this$state$model = this.state.model) === null || _this$state$model === void 0 ? void 0 : _this$state$model.delete();\n      this.state.model = this._getModel(gl);\n      this.getAttributeManager().invalidateAll();\n    }\n  }\n\n  draw({\n    uniforms\n  }) {\n    const {\n      billboard,\n      sizeScale,\n      sizeUnits,\n      sizeMinPixels,\n      sizeMaxPixels,\n      getLineWidth\n    } = this.props;\n    let {\n      padding\n    } = this.props;\n\n    if (padding.length < 4) {\n      padding = [padding[0], padding[1], padding[0], padding[1]];\n    }\n\n    this.state.model.setUniforms(uniforms).setUniforms({\n      billboard,\n      stroked: Boolean(getLineWidth),\n      padding,\n      sizeUnits: UNIT[sizeUnits],\n      sizeScale,\n      sizeMinPixels,\n      sizeMaxPixels\n    }).draw();\n  }\n\n  _getModel(gl) {\n    const positions = [0, 0, 1, 0, 1, 1, 0, 1];\n    return new Model(gl, { ...this.getShaders(),\n      id: this.props.id,\n      geometry: new Geometry({\n        drawMode: 6,\n        vertexCount: 4,\n        attributes: {\n          positions: {\n            size: 2,\n            value: new Float32Array(positions)\n          }\n        }\n      }),\n      isInstanced: true\n    });\n  }\n\n}\n\n_defineProperty(TextBackgroundLayer, \"defaultProps\", defaultProps);\n\n_defineProperty(TextBackgroundLayer, \"layerName\", 'TextBackgroundLayer');\n//# sourceMappingURL=text-background-layer.js.map","export default \"#define SHADER_NAME text-background-layer-fragment-shader\\n\\nprecision highp float;\\n\\nuniform bool stroked;\\n\\nvarying vec4 vFillColor;\\nvarying vec4 vLineColor;\\nvarying float vLineWidth;\\nvarying vec2 uv;\\nvarying vec2 dimensions;\\n\\nvoid main(void) {\\n  geometry.uv = uv;\\n\\n  vec2 pixelPosition = uv * dimensions;\\n  if (stroked) {\\n    float distToEdge = min(\\n      min(pixelPosition.x, dimensions.x - pixelPosition.x),\\n      min(pixelPosition.y, dimensions.y - pixelPosition.y)\\n    );\\n    float isBorder = smoothedge(distToEdge, vLineWidth);\\n    gl_FragColor = mix(vFillColor, vLineColor, isBorder);\\n  } else {\\n    gl_FragColor = vFillColor;\\n  }\\n\\n  DECKGL_FILTER_COLOR(gl_FragColor, geometry);\\n}\\n\";\n//# sourceMappingURL=text-background-layer-fragment.glsl.js.map","const INF = 1e20;\n\nexport default class TinySDF {\n    constructor({\n        fontSize = 24,\n        buffer = 3,\n        radius = 8,\n        cutoff = 0.25,\n        fontFamily = 'sans-serif',\n        fontWeight = 'normal',\n        fontStyle = 'normal'\n    } = {}) {\n        this.buffer = buffer;\n        this.cutoff = cutoff;\n        this.radius = radius;\n\n        // make the canvas size big enough to both have the specified buffer around the glyph\n        // for \"halo\", and account for some glyphs possibly being larger than their font size\n        const size = this.size = fontSize + buffer * 4;\n\n        const canvas = this._createCanvas(size);\n        const ctx = this.ctx = canvas.getContext('2d', {willReadFrequently: true});\n        ctx.font = `${fontStyle} ${fontWeight} ${fontSize}px ${fontFamily}`;\n\n        ctx.textBaseline = 'alphabetic';\n        ctx.textAlign = 'left'; // Necessary so that RTL text doesn't have different alignment\n        ctx.fillStyle = 'black';\n\n        // temporary arrays for the distance transform\n        this.gridOuter = new Float64Array(size * size);\n        this.gridInner = new Float64Array(size * size);\n        this.f = new Float64Array(size);\n        this.z = new Float64Array(size + 1);\n        this.v = new Uint16Array(size);\n    }\n\n    _createCanvas(size) {\n        const canvas = document.createElement('canvas');\n        canvas.width = canvas.height = size;\n        return canvas;\n    }\n\n    draw(char) {\n        const {\n            width: glyphAdvance,\n            actualBoundingBoxAscent,\n            actualBoundingBoxDescent,\n            actualBoundingBoxLeft,\n            actualBoundingBoxRight\n        } = this.ctx.measureText(char);\n\n        // The integer/pixel part of the top alignment is encoded in metrics.glyphTop\n        // The remainder is implicitly encoded in the rasterization\n        const glyphTop = Math.ceil(actualBoundingBoxAscent);\n        const glyphLeft = 0;\n\n        // If the glyph overflows the canvas size, it will be clipped at the bottom/right\n        const glyphWidth = Math.max(0, Math.min(this.size - this.buffer, Math.ceil(actualBoundingBoxRight - actualBoundingBoxLeft)));\n        const glyphHeight = Math.min(this.size - this.buffer, glyphTop + Math.ceil(actualBoundingBoxDescent));\n\n        const width = glyphWidth + 2 * this.buffer;\n        const height = glyphHeight + 2 * this.buffer;\n\n        const len = Math.max(width * height, 0);\n        const data = new Uint8ClampedArray(len);\n        const glyph = {data, width, height, glyphWidth, glyphHeight, glyphTop, glyphLeft, glyphAdvance};\n        if (glyphWidth === 0 || glyphHeight === 0) return glyph;\n\n        const {ctx, buffer, gridInner, gridOuter} = this;\n        ctx.clearRect(buffer, buffer, glyphWidth, glyphHeight);\n        ctx.fillText(char, buffer, buffer + glyphTop);\n        const imgData = ctx.getImageData(buffer, buffer, glyphWidth, glyphHeight);\n\n        // Initialize grids outside the glyph range to alpha 0\n        gridOuter.fill(INF, 0, len);\n        gridInner.fill(0, 0, len);\n\n        for (let y = 0; y < glyphHeight; y++) {\n            for (let x = 0; x < glyphWidth; x++) {\n                const a = imgData.data[4 * (y * glyphWidth + x) + 3] / 255; // alpha value\n                if (a === 0) continue; // empty pixels\n\n                const j = (y + buffer) * width + x + buffer;\n\n                if (a === 1) { // fully drawn pixels\n                    gridOuter[j] = 0;\n                    gridInner[j] = INF;\n\n                } else { // aliased pixels\n                    const d = 0.5 - a;\n                    gridOuter[j] = d > 0 ? d * d : 0;\n                    gridInner[j] = d < 0 ? d * d : 0;\n                }\n            }\n        }\n\n        edt(gridOuter, 0, 0, width, height, width, this.f, this.v, this.z);\n        edt(gridInner, buffer, buffer, glyphWidth, glyphHeight, width, this.f, this.v, this.z);\n\n        for (let i = 0; i < len; i++) {\n            const d = Math.sqrt(gridOuter[i]) - Math.sqrt(gridInner[i]);\n            data[i] = Math.round(255 - 255 * (d / this.radius + this.cutoff));\n        }\n\n        return glyph;\n    }\n}\n\n// 2D Euclidean squared distance transform by Felzenszwalb & Huttenlocher https://cs.brown.edu/~pff/papers/dt-final.pdf\nfunction edt(data, x0, y0, width, height, gridSize, f, v, z) {\n    for (let x = x0; x < x0 + width; x++) edt1d(data, y0 * gridSize + x, gridSize, height, f, v, z);\n    for (let y = y0; y < y0 + height; y++) edt1d(data, y * gridSize + x0, 1, width, f, v, z);\n}\n\n// 1D squared distance transform\nfunction edt1d(grid, offset, stride, length, f, v, z) {\n    v[0] = 0;\n    z[0] = -INF;\n    z[1] = INF;\n    f[0] = grid[offset];\n\n    for (let q = 1, k = 0, s = 0; q < length; q++) {\n        f[q] = grid[offset + q * stride];\n        const q2 = q * q;\n        do {\n            const r = v[k];\n            s = (f[q] - f[r] + q2 - r * r) / (q - r) / 2;\n        } while (s <= z[k] && --k > -1);\n\n        k++;\n        v[k] = q;\n        z[k] = s;\n        z[k + 1] = INF;\n    }\n\n    for (let q = 0, k = 0; q < length; q++) {\n        while (z[k + 1] < q) k++;\n        const r = v[k];\n        const qr = q - r;\n        grid[offset + q * stride] = f[r] + qr * qr;\n    }\n}\n","import { log } from '@deck.gl/core';\nconst MISSING_CHAR_WIDTH = 32;\nconst SINGLE_LINE = [];\nexport function nextPowOfTwo(number) {\n  return Math.pow(2, Math.ceil(Math.log2(number)));\n}\nexport function buildMapping({\n  characterSet,\n  getFontWidth,\n  fontHeight,\n  buffer,\n  maxCanvasWidth,\n  mapping = {},\n  xOffset = 0,\n  yOffset = 0\n}) {\n  let row = 0;\n  let x = xOffset;\n  const rowHeight = fontHeight + buffer * 2;\n\n  for (const char of characterSet) {\n    if (!mapping[char]) {\n      const width = getFontWidth(char);\n\n      if (x + width + buffer * 2 > maxCanvasWidth) {\n        x = 0;\n        row++;\n      }\n\n      mapping[char] = {\n        x: x + buffer,\n        y: yOffset + row * rowHeight + buffer,\n        width,\n        height: rowHeight,\n        layoutWidth: width,\n        layoutHeight: fontHeight\n      };\n      x += width + buffer * 2;\n    }\n  }\n\n  return {\n    mapping,\n    xOffset: x,\n    yOffset: yOffset + row * rowHeight,\n    canvasHeight: nextPowOfTwo(yOffset + (row + 1) * rowHeight)\n  };\n}\n\nfunction getTextWidth(text, startIndex, endIndex, mapping) {\n  let width = 0;\n\n  for (let i = startIndex; i < endIndex; i++) {\n    var _mapping$character;\n\n    const character = text[i];\n    width += ((_mapping$character = mapping[character]) === null || _mapping$character === void 0 ? void 0 : _mapping$character.layoutWidth) || 0;\n  }\n\n  return width;\n}\n\nfunction breakAll(text, startIndex, endIndex, maxWidth, iconMapping, target) {\n  let rowStartCharIndex = startIndex;\n  let rowOffsetLeft = 0;\n\n  for (let i = startIndex; i < endIndex; i++) {\n    const textWidth = getTextWidth(text, i, i + 1, iconMapping);\n\n    if (rowOffsetLeft + textWidth > maxWidth) {\n      if (rowStartCharIndex < i) {\n        target.push(i);\n      }\n\n      rowStartCharIndex = i;\n      rowOffsetLeft = 0;\n    }\n\n    rowOffsetLeft += textWidth;\n  }\n\n  return rowOffsetLeft;\n}\n\nfunction breakWord(text, startIndex, endIndex, maxWidth, iconMapping, target) {\n  let rowStartCharIndex = startIndex;\n  let groupStartCharIndex = startIndex;\n  let groupEndCharIndex = startIndex;\n  let rowOffsetLeft = 0;\n\n  for (let i = startIndex; i < endIndex; i++) {\n    if (text[i] === ' ') {\n      groupEndCharIndex = i + 1;\n    } else if (text[i + 1] === ' ' || i + 1 === endIndex) {\n      groupEndCharIndex = i + 1;\n    }\n\n    if (groupEndCharIndex > groupStartCharIndex) {\n      let groupWidth = getTextWidth(text, groupStartCharIndex, groupEndCharIndex, iconMapping);\n\n      if (rowOffsetLeft + groupWidth > maxWidth) {\n        if (rowStartCharIndex < groupStartCharIndex) {\n          target.push(groupStartCharIndex);\n          rowStartCharIndex = groupStartCharIndex;\n          rowOffsetLeft = 0;\n        }\n\n        if (groupWidth > maxWidth) {\n          groupWidth = breakAll(text, groupStartCharIndex, groupEndCharIndex, maxWidth, iconMapping, target);\n          rowStartCharIndex = target[target.length - 1];\n        }\n      }\n\n      groupStartCharIndex = groupEndCharIndex;\n      rowOffsetLeft += groupWidth;\n    }\n  }\n\n  return rowOffsetLeft;\n}\n\nexport function autoWrapping(text, wordBreak, maxWidth, iconMapping, startIndex = 0, endIndex) {\n  if (endIndex === undefined) {\n    endIndex = text.length;\n  }\n\n  const result = [];\n\n  if (wordBreak === 'break-all') {\n    breakAll(text, startIndex, endIndex, maxWidth, iconMapping, result);\n  } else {\n    breakWord(text, startIndex, endIndex, maxWidth, iconMapping, result);\n  }\n\n  return result;\n}\n\nfunction transformRow(line, startIndex, endIndex, iconMapping, leftOffsets, rowSize) {\n  let x = 0;\n  let rowHeight = 0;\n\n  for (let i = startIndex; i < endIndex; i++) {\n    const character = line[i];\n    const frame = iconMapping[character];\n\n    if (frame) {\n      if (!rowHeight) {\n        rowHeight = frame.layoutHeight;\n      }\n\n      leftOffsets[i] = x + frame.layoutWidth / 2;\n      x += frame.layoutWidth;\n    } else {\n      log.warn(\"Missing character: \".concat(character, \" (\").concat(character.codePointAt(0), \")\"))();\n      leftOffsets[i] = x;\n      x += MISSING_CHAR_WIDTH;\n    }\n  }\n\n  rowSize[0] = x;\n  rowSize[1] = rowHeight;\n}\n\nexport function transformParagraph(paragraph, lineHeight, wordBreak, maxWidth, iconMapping) {\n  const characters = Array.from(paragraph);\n  const numCharacters = characters.length;\n  const x = new Array(numCharacters);\n  const y = new Array(numCharacters);\n  const rowWidth = new Array(numCharacters);\n  const autoWrappingEnabled = (wordBreak === 'break-word' || wordBreak === 'break-all') && isFinite(maxWidth) && maxWidth > 0;\n  const size = [0, 0];\n  const rowSize = [0, 0];\n  let rowOffsetTop = 0;\n  let lineStartIndex = 0;\n  let lineEndIndex = 0;\n\n  for (let i = 0; i <= numCharacters; i++) {\n    const char = characters[i];\n\n    if (char === '\\n' || i === numCharacters) {\n      lineEndIndex = i;\n    }\n\n    if (lineEndIndex > lineStartIndex) {\n      const rows = autoWrappingEnabled ? autoWrapping(characters, wordBreak, maxWidth, iconMapping, lineStartIndex, lineEndIndex) : SINGLE_LINE;\n\n      for (let rowIndex = 0; rowIndex <= rows.length; rowIndex++) {\n        const rowStart = rowIndex === 0 ? lineStartIndex : rows[rowIndex - 1];\n        const rowEnd = rowIndex < rows.length ? rows[rowIndex] : lineEndIndex;\n        transformRow(characters, rowStart, rowEnd, iconMapping, x, rowSize);\n\n        for (let j = rowStart; j < rowEnd; j++) {\n          var _iconMapping$char;\n\n          const char = characters[j];\n          const layoutOffsetY = ((_iconMapping$char = iconMapping[char]) === null || _iconMapping$char === void 0 ? void 0 : _iconMapping$char.layoutOffsetY) || 0;\n          y[j] = rowOffsetTop + rowSize[1] / 2 + layoutOffsetY;\n          rowWidth[j] = rowSize[0];\n        }\n\n        rowOffsetTop = rowOffsetTop + rowSize[1] * lineHeight;\n        size[0] = Math.max(size[0], rowSize[0]);\n      }\n\n      lineStartIndex = lineEndIndex;\n    }\n\n    if (char === '\\n') {\n      x[lineStartIndex] = 0;\n      y[lineStartIndex] = 0;\n      rowWidth[lineStartIndex] = 0;\n      lineStartIndex++;\n    }\n  }\n\n  size[1] = rowOffsetTop;\n  return {\n    x,\n    y,\n    rowWidth,\n    size\n  };\n}\nexport function getTextFromBuffer({\n  value,\n  length,\n  stride,\n  offset,\n  startIndices,\n  characterSet\n}) {\n  const bytesPerElement = value.BYTES_PER_ELEMENT;\n  const elementStride = stride ? stride / bytesPerElement : 1;\n  const elementOffset = offset ? offset / bytesPerElement : 0;\n  const characterCount = startIndices[length] || Math.ceil((value.length - elementOffset) / elementStride);\n  const autoCharacterSet = characterSet && new Set();\n  const texts = new Array(length);\n  let codes = value;\n\n  if (elementStride > 1 || elementOffset > 0) {\n    const ArrayType = value.constructor;\n    codes = new ArrayType(characterCount);\n\n    for (let i = 0; i < characterCount; i++) {\n      codes[i] = value[i * elementStride + elementOffset];\n    }\n  }\n\n  for (let index = 0; index < length; index++) {\n    const startIndex = startIndices[index];\n    const endIndex = startIndices[index + 1] || characterCount;\n    const codesAtIndex = codes.subarray(startIndex, endIndex);\n    texts[index] = String.fromCodePoint.apply(null, codesAtIndex);\n\n    if (autoCharacterSet) {\n      codesAtIndex.forEach(autoCharacterSet.add, autoCharacterSet);\n    }\n  }\n\n  if (autoCharacterSet) {\n    for (const charCode of autoCharacterSet) {\n      characterSet.add(String.fromCodePoint(charCode));\n    }\n  }\n\n  return {\n    texts,\n    characterCount\n  };\n}\n//# sourceMappingURL=utils.js.map","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nexport default class LRUCache {\n  constructor(limit = 5) {\n    _defineProperty(this, \"limit\", void 0);\n\n    _defineProperty(this, \"_cache\", {});\n\n    _defineProperty(this, \"_order\", []);\n\n    this.limit = limit;\n  }\n\n  get(key) {\n    const value = this._cache[key];\n\n    if (value) {\n      this._deleteOrder(key);\n\n      this._appendOrder(key);\n    }\n\n    return value;\n  }\n\n  set(key, value) {\n    if (!this._cache[key]) {\n      if (Object.keys(this._cache).length === this.limit) {\n        this.delete(this._order[0]);\n      }\n\n      this._cache[key] = value;\n\n      this._appendOrder(key);\n    } else {\n      this.delete(key);\n      this._cache[key] = value;\n\n      this._appendOrder(key);\n    }\n  }\n\n  delete(key) {\n    const value = this._cache[key];\n\n    if (value) {\n      delete this._cache[key];\n\n      this._deleteOrder(key);\n    }\n  }\n\n  _deleteOrder(key) {\n    const index = this._order.indexOf(key);\n\n    if (index >= 0) {\n      this._order.splice(index, 1);\n    }\n  }\n\n  _appendOrder(key) {\n    this._order.push(key);\n  }\n\n}\n//# sourceMappingURL=lru-cache.js.map","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport TinySDF from '@mapbox/tiny-sdf';\nimport { log } from '@deck.gl/core';\nimport { buildMapping } from './utils';\nimport LRUCache from './lru-cache';\n\nfunction getDefaultCharacterSet() {\n  const charSet = [];\n\n  for (let i = 32; i < 128; i++) {\n    charSet.push(String.fromCharCode(i));\n  }\n\n  return charSet;\n}\n\nexport const DEFAULT_FONT_SETTINGS = {\n  fontFamily: 'Monaco, monospace',\n  fontWeight: 'normal',\n  characterSet: getDefaultCharacterSet(),\n  fontSize: 64,\n  buffer: 4,\n  sdf: false,\n  cutoff: 0.25,\n  radius: 12,\n  smoothing: 0.1\n};\nconst MAX_CANVAS_WIDTH = 1024;\nconst BASELINE_SCALE = 0.9;\nconst HEIGHT_SCALE = 1.2;\nconst CACHE_LIMIT = 3;\nlet cache = new LRUCache(CACHE_LIMIT);\n\nfunction getNewChars(cacheKey, characterSet) {\n  let newCharSet;\n\n  if (typeof characterSet === 'string') {\n    newCharSet = new Set(Array.from(characterSet));\n  } else {\n    newCharSet = new Set(characterSet);\n  }\n\n  const cachedFontAtlas = cache.get(cacheKey);\n\n  if (!cachedFontAtlas) {\n    return newCharSet;\n  }\n\n  for (const char in cachedFontAtlas.mapping) {\n    if (newCharSet.has(char)) {\n      newCharSet.delete(char);\n    }\n  }\n\n  return newCharSet;\n}\n\nfunction populateAlphaChannel(alphaChannel, imageData) {\n  for (let i = 0; i < alphaChannel.length; i++) {\n    imageData.data[4 * i + 3] = alphaChannel[i];\n  }\n}\n\nfunction setTextStyle(ctx, fontFamily, fontSize, fontWeight) {\n  ctx.font = \"\".concat(fontWeight, \" \").concat(fontSize, \"px \").concat(fontFamily);\n  ctx.fillStyle = '#000';\n  ctx.textBaseline = 'alphabetic';\n  ctx.textAlign = 'left';\n}\n\nexport function setFontAtlasCacheLimit(limit) {\n  log.assert(Number.isFinite(limit) && limit >= CACHE_LIMIT, 'Invalid cache limit');\n  cache = new LRUCache(limit);\n}\nexport default class FontAtlasManager {\n  constructor() {\n    _defineProperty(this, \"props\", { ...DEFAULT_FONT_SETTINGS\n    });\n\n    _defineProperty(this, \"_key\", void 0);\n\n    _defineProperty(this, \"_atlas\", void 0);\n  }\n\n  get texture() {\n    return this._atlas;\n  }\n\n  get mapping() {\n    return this._atlas && this._atlas.mapping;\n  }\n\n  get scale() {\n    const {\n      fontSize,\n      buffer\n    } = this.props;\n    return (fontSize * HEIGHT_SCALE + buffer * 2) / fontSize;\n  }\n\n  setProps(props = {}) {\n    Object.assign(this.props, props);\n    this._key = this._getKey();\n    const charSet = getNewChars(this._key, this.props.characterSet);\n    const cachedFontAtlas = cache.get(this._key);\n\n    if (cachedFontAtlas && charSet.size === 0) {\n      if (this._atlas !== cachedFontAtlas) {\n        this._atlas = cachedFontAtlas;\n      }\n\n      return;\n    }\n\n    const fontAtlas = this._generateFontAtlas(charSet, cachedFontAtlas);\n\n    this._atlas = fontAtlas;\n    cache.set(this._key, fontAtlas);\n  }\n\n  _generateFontAtlas(characterSet, cachedFontAtlas) {\n    const {\n      fontFamily,\n      fontWeight,\n      fontSize,\n      buffer,\n      sdf,\n      radius,\n      cutoff\n    } = this.props;\n    let canvas = cachedFontAtlas && cachedFontAtlas.data;\n\n    if (!canvas) {\n      canvas = document.createElement('canvas');\n      canvas.width = MAX_CANVAS_WIDTH;\n    }\n\n    const ctx = canvas.getContext('2d', {\n      willReadFrequently: true\n    });\n    setTextStyle(ctx, fontFamily, fontSize, fontWeight);\n    const {\n      mapping,\n      canvasHeight,\n      xOffset,\n      yOffset\n    } = buildMapping({\n      getFontWidth: char => ctx.measureText(char).width,\n      fontHeight: fontSize * HEIGHT_SCALE,\n      buffer,\n      characterSet,\n      maxCanvasWidth: MAX_CANVAS_WIDTH,\n      ...(cachedFontAtlas && {\n        mapping: cachedFontAtlas.mapping,\n        xOffset: cachedFontAtlas.xOffset,\n        yOffset: cachedFontAtlas.yOffset\n      })\n    });\n\n    if (canvas.height !== canvasHeight) {\n      const imageData = ctx.getImageData(0, 0, canvas.width, canvas.height);\n      canvas.height = canvasHeight;\n      ctx.putImageData(imageData, 0, 0);\n    }\n\n    setTextStyle(ctx, fontFamily, fontSize, fontWeight);\n\n    if (sdf) {\n      const tinySDF = new TinySDF({\n        fontSize,\n        buffer,\n        radius,\n        cutoff,\n        fontFamily,\n        fontWeight: \"\".concat(fontWeight)\n      });\n\n      for (const char of characterSet) {\n        const {\n          data,\n          width,\n          height,\n          glyphTop\n        } = tinySDF.draw(char);\n        mapping[char].width = width;\n        mapping[char].layoutOffsetY = fontSize * BASELINE_SCALE - glyphTop;\n        const imageData = ctx.createImageData(width, height);\n        populateAlphaChannel(data, imageData);\n        ctx.putImageData(imageData, mapping[char].x, mapping[char].y);\n      }\n    } else {\n      for (const char of characterSet) {\n        ctx.fillText(char, mapping[char].x, mapping[char].y + buffer + fontSize * BASELINE_SCALE);\n      }\n    }\n\n    return {\n      xOffset,\n      yOffset,\n      mapping,\n      data: canvas,\n      width: canvas.width,\n      height: canvas.height\n    };\n  }\n\n  _getKey() {\n    const {\n      fontFamily,\n      fontWeight,\n      fontSize,\n      buffer,\n      sdf,\n      radius,\n      cutoff\n    } = this.props;\n\n    if (sdf) {\n      return \"\".concat(fontFamily, \" \").concat(fontWeight, \" \").concat(fontSize, \" \").concat(buffer, \" \").concat(radius, \" \").concat(cutoff);\n    }\n\n    return \"\".concat(fontFamily, \" \").concat(fontWeight, \" \").concat(fontSize, \" \").concat(buffer);\n  }\n\n}\n//# sourceMappingURL=font-atlas-manager.js.map","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { CompositeLayer, createIterable, log } from '@deck.gl/core';\nimport MultiIconLayer from './multi-icon-layer/multi-icon-layer';\nimport FontAtlasManager, { DEFAULT_FONT_SETTINGS, setFontAtlasCacheLimit } from './font-atlas-manager';\nimport { transformParagraph, getTextFromBuffer } from './utils';\nimport TextBackgroundLayer from './text-background-layer/text-background-layer';\nconst TEXT_ANCHOR = {\n  start: 1,\n  middle: 0,\n  end: -1\n};\nconst ALIGNMENT_BASELINE = {\n  top: 1,\n  center: 0,\n  bottom: -1\n};\nconst DEFAULT_COLOR = [0, 0, 0, 255];\nconst DEFAULT_LINE_HEIGHT = 1.0;\nconst defaultProps = {\n  billboard: true,\n  sizeScale: 1,\n  sizeUnits: 'pixels',\n  sizeMinPixels: 0,\n  sizeMaxPixels: Number.MAX_SAFE_INTEGER,\n  background: false,\n  getBackgroundColor: {\n    type: 'accessor',\n    value: [255, 255, 255, 255]\n  },\n  getBorderColor: {\n    type: 'accessor',\n    value: DEFAULT_COLOR\n  },\n  getBorderWidth: {\n    type: 'accessor',\n    value: 0\n  },\n  backgroundPadding: {\n    type: 'array',\n    value: [0, 0, 0, 0]\n  },\n  characterSet: {\n    type: 'object',\n    value: DEFAULT_FONT_SETTINGS.characterSet\n  },\n  fontFamily: DEFAULT_FONT_SETTINGS.fontFamily,\n  fontWeight: DEFAULT_FONT_SETTINGS.fontWeight,\n  lineHeight: DEFAULT_LINE_HEIGHT,\n  outlineWidth: {\n    type: 'number',\n    value: 0,\n    min: 0\n  },\n  outlineColor: {\n    type: 'color',\n    value: DEFAULT_COLOR\n  },\n  fontSettings: {\n    type: 'object',\n    value: {},\n    compare: 1\n  },\n  wordBreak: 'break-word',\n  maxWidth: {\n    type: 'number',\n    value: -1\n  },\n  getText: {\n    type: 'accessor',\n    value: x => x.text\n  },\n  getPosition: {\n    type: 'accessor',\n    value: x => x.position\n  },\n  getColor: {\n    type: 'accessor',\n    value: DEFAULT_COLOR\n  },\n  getSize: {\n    type: 'accessor',\n    value: 32\n  },\n  getAngle: {\n    type: 'accessor',\n    value: 0\n  },\n  getTextAnchor: {\n    type: 'accessor',\n    value: 'middle'\n  },\n  getAlignmentBaseline: {\n    type: 'accessor',\n    value: 'center'\n  },\n  getPixelOffset: {\n    type: 'accessor',\n    value: [0, 0]\n  },\n  backgroundColor: {\n    deprecatedFor: ['background', 'getBackgroundColor']\n  }\n};\nexport default class TextLayer extends CompositeLayer {\n  constructor(...args) {\n    super(...args);\n\n    _defineProperty(this, \"state\", void 0);\n\n    _defineProperty(this, \"getBoundingRect\", (object, objectInfo) => {\n      let {\n        size: [width, height]\n      } = this.transformParagraph(object, objectInfo);\n      const {\n        fontSize\n      } = this.state.fontAtlasManager.props;\n      width /= fontSize;\n      height /= fontSize;\n      const {\n        getTextAnchor,\n        getAlignmentBaseline\n      } = this.props;\n      const anchorX = TEXT_ANCHOR[typeof getTextAnchor === 'function' ? getTextAnchor(object, objectInfo) : getTextAnchor];\n      const anchorY = ALIGNMENT_BASELINE[typeof getAlignmentBaseline === 'function' ? getAlignmentBaseline(object, objectInfo) : getAlignmentBaseline];\n      return [(anchorX - 1) * width / 2, (anchorY - 1) * height / 2, width, height];\n    });\n\n    _defineProperty(this, \"getIconOffsets\", (object, objectInfo) => {\n      const {\n        getTextAnchor,\n        getAlignmentBaseline\n      } = this.props;\n      const {\n        x,\n        y,\n        rowWidth,\n        size: [width, height]\n      } = this.transformParagraph(object, objectInfo);\n      const anchorX = TEXT_ANCHOR[typeof getTextAnchor === 'function' ? getTextAnchor(object, objectInfo) : getTextAnchor];\n      const anchorY = ALIGNMENT_BASELINE[typeof getAlignmentBaseline === 'function' ? getAlignmentBaseline(object, objectInfo) : getAlignmentBaseline];\n      const numCharacters = x.length;\n      const offsets = new Array(numCharacters * 2);\n      let index = 0;\n\n      for (let i = 0; i < numCharacters; i++) {\n        const rowOffset = (1 - anchorX) * (width - rowWidth[i]) / 2;\n        offsets[index++] = (anchorX - 1) * width / 2 + rowOffset + x[i];\n        offsets[index++] = (anchorY - 1) * height / 2 + y[i];\n      }\n\n      return offsets;\n    });\n  }\n\n  initializeState() {\n    this.state = {\n      styleVersion: 0,\n      fontAtlasManager: new FontAtlasManager()\n    };\n\n    if (this.props.maxWidth > 0) {\n      log.warn('v8.9 breaking change: TextLayer maxWidth is now relative to text size')();\n    }\n  }\n\n  updateState(params) {\n    const {\n      props,\n      oldProps,\n      changeFlags\n    } = params;\n    const textChanged = changeFlags.dataChanged || changeFlags.updateTriggersChanged && (changeFlags.updateTriggersChanged.all || changeFlags.updateTriggersChanged.getText);\n\n    if (textChanged) {\n      this._updateText();\n    }\n\n    const fontChanged = this._updateFontAtlas();\n\n    const styleChanged = fontChanged || props.lineHeight !== oldProps.lineHeight || props.wordBreak !== oldProps.wordBreak || props.maxWidth !== oldProps.maxWidth;\n\n    if (styleChanged) {\n      this.setState({\n        styleVersion: this.state.styleVersion + 1\n      });\n    }\n  }\n\n  getPickingInfo({\n    info\n  }) {\n    info.object = info.index >= 0 ? this.props.data[info.index] : null;\n    return info;\n  }\n\n  _updateFontAtlas() {\n    const {\n      fontSettings,\n      fontFamily,\n      fontWeight\n    } = this.props;\n    const {\n      fontAtlasManager,\n      characterSet\n    } = this.state;\n    const fontProps = { ...fontSettings,\n      characterSet,\n      fontFamily,\n      fontWeight\n    };\n\n    if (!fontAtlasManager.mapping) {\n      fontAtlasManager.setProps(fontProps);\n      return true;\n    }\n\n    for (const key in fontProps) {\n      if (fontProps[key] !== fontAtlasManager.props[key]) {\n        fontAtlasManager.setProps(fontProps);\n        return true;\n      }\n    }\n\n    return false;\n  }\n\n  _updateText() {\n    var _attributes;\n\n    const {\n      data,\n      characterSet\n    } = this.props;\n    const textBuffer = (_attributes = data.attributes) === null || _attributes === void 0 ? void 0 : _attributes.getText;\n    let {\n      getText\n    } = this.props;\n    let startIndices = data.startIndices;\n    let numInstances;\n    const autoCharacterSet = characterSet === 'auto' && new Set();\n\n    if (textBuffer && startIndices) {\n      const {\n        texts,\n        characterCount\n      } = getTextFromBuffer({ ...(ArrayBuffer.isView(textBuffer) ? {\n          value: textBuffer\n        } : textBuffer),\n        length: data.length,\n        startIndices,\n        characterSet: autoCharacterSet\n      });\n      numInstances = characterCount;\n\n      getText = (_, {\n        index\n      }) => texts[index];\n    } else {\n      const {\n        iterable,\n        objectInfo\n      } = createIterable(data);\n      startIndices = [0];\n      numInstances = 0;\n\n      for (const object of iterable) {\n        objectInfo.index++;\n        const text = Array.from(getText(object, objectInfo) || '');\n\n        if (autoCharacterSet) {\n          text.forEach(autoCharacterSet.add, autoCharacterSet);\n        }\n\n        numInstances += text.length;\n        startIndices.push(numInstances);\n      }\n    }\n\n    this.setState({\n      getText,\n      startIndices,\n      numInstances,\n      characterSet: autoCharacterSet || characterSet\n    });\n  }\n\n  transformParagraph(object, objectInfo) {\n    const {\n      fontAtlasManager\n    } = this.state;\n    const iconMapping = fontAtlasManager.mapping;\n    const getText = this.state.getText;\n    const {\n      wordBreak,\n      lineHeight,\n      maxWidth\n    } = this.props;\n    const paragraph = getText(object, objectInfo) || '';\n    return transformParagraph(paragraph, lineHeight, wordBreak, maxWidth * fontAtlasManager.props.fontSize, iconMapping);\n  }\n\n  renderLayers() {\n    const {\n      startIndices,\n      numInstances,\n      getText,\n      fontAtlasManager: {\n        scale,\n        texture,\n        mapping\n      },\n      styleVersion\n    } = this.state;\n    const {\n      data,\n      _dataDiff,\n      getPosition,\n      getColor,\n      getSize,\n      getAngle,\n      getPixelOffset,\n      getBackgroundColor,\n      getBorderColor,\n      getBorderWidth,\n      backgroundPadding,\n      background,\n      billboard,\n      fontSettings,\n      outlineWidth,\n      outlineColor,\n      sizeScale,\n      sizeUnits,\n      sizeMinPixels,\n      sizeMaxPixels,\n      transitions,\n      updateTriggers\n    } = this.props;\n    const CharactersLayerClass = this.getSubLayerClass('characters', MultiIconLayer);\n    const BackgroundLayerClass = this.getSubLayerClass('background', TextBackgroundLayer);\n    return [background && new BackgroundLayerClass({\n      getFillColor: getBackgroundColor,\n      getLineColor: getBorderColor,\n      getLineWidth: getBorderWidth,\n      padding: backgroundPadding,\n      getPosition,\n      getSize,\n      getAngle,\n      getPixelOffset,\n      billboard,\n      sizeScale,\n      sizeUnits,\n      sizeMinPixels,\n      sizeMaxPixels,\n      transitions: transitions && {\n        getPosition: transitions.getPosition,\n        getAngle: transitions.getAngle,\n        getSize: transitions.getSize,\n        getFillColor: transitions.getBackgroundColor,\n        getLineColor: transitions.getBorderColor,\n        getLineWidth: transitions.getBorderWidth,\n        getPixelOffset: transitions.getPixelOffset\n      }\n    }, this.getSubLayerProps({\n      id: 'background',\n      updateTriggers: {\n        getPosition: updateTriggers.getPosition,\n        getAngle: updateTriggers.getAngle,\n        getSize: updateTriggers.getSize,\n        getFillColor: updateTriggers.getBackgroundColor,\n        getLineColor: updateTriggers.getBorderColor,\n        getLineWidth: updateTriggers.getBorderWidth,\n        getPixelOffset: updateTriggers.getPixelOffset,\n        getBoundingRect: {\n          getText: updateTriggers.getText,\n          getTextAnchor: updateTriggers.getTextAnchor,\n          getAlignmentBaseline: updateTriggers.getAlignmentBaseline,\n          styleVersion\n        }\n      }\n    }), {\n      data: data.attributes && data.attributes.background ? {\n        length: data.length,\n        attributes: data.attributes.background\n      } : data,\n      _dataDiff,\n      autoHighlight: false,\n      getBoundingRect: this.getBoundingRect\n    }), new CharactersLayerClass({\n      sdf: fontSettings.sdf,\n      smoothing: Number.isFinite(fontSettings.smoothing) ? fontSettings.smoothing : DEFAULT_FONT_SETTINGS.smoothing,\n      outlineWidth: outlineWidth / (fontSettings.radius || DEFAULT_FONT_SETTINGS.radius),\n      outlineColor,\n      iconAtlas: texture,\n      iconMapping: mapping,\n      getPosition,\n      getColor,\n      getSize,\n      getAngle,\n      getPixelOffset,\n      billboard,\n      sizeScale: sizeScale * scale,\n      sizeUnits,\n      sizeMinPixels: sizeMinPixels * scale,\n      sizeMaxPixels: sizeMaxPixels * scale,\n      transitions: transitions && {\n        getPosition: transitions.getPosition,\n        getAngle: transitions.getAngle,\n        getColor: transitions.getColor,\n        getSize: transitions.getSize,\n        getPixelOffset: transitions.getPixelOffset\n      }\n    }, this.getSubLayerProps({\n      id: 'characters',\n      updateTriggers: {\n        all: updateTriggers.getText,\n        getPosition: updateTriggers.getPosition,\n        getAngle: updateTriggers.getAngle,\n        getColor: updateTriggers.getColor,\n        getSize: updateTriggers.getSize,\n        getPixelOffset: updateTriggers.getPixelOffset,\n        getIconOffsets: {\n          getTextAnchor: updateTriggers.getTextAnchor,\n          getAlignmentBaseline: updateTriggers.getAlignmentBaseline,\n          styleVersion\n        }\n      }\n    }), {\n      data,\n      _dataDiff,\n      startIndices,\n      numInstances,\n      getIconOffsets: this.getIconOffsets,\n      getIcon: getText\n    })];\n  }\n\n  static set fontAtlasCacheLimit(limit) {\n    setFontAtlasCacheLimit(limit);\n  }\n\n}\n\n_defineProperty(TextLayer, \"defaultProps\", defaultProps);\n\n_defineProperty(TextLayer, \"layerName\", 'TextLayer');\n//# sourceMappingURL=text-layer.js.map","export function replaceInRange({\n  data,\n  getIndex,\n  dataRange,\n  replace\n}) {\n  const {\n    startRow = 0,\n    endRow = Infinity\n  } = dataRange;\n  const count = data.length;\n  let replaceStart = count;\n  let replaceEnd = count;\n\n  for (let i = 0; i < count; i++) {\n    const row = getIndex(data[i]);\n\n    if (replaceStart > i && row >= startRow) {\n      replaceStart = i;\n    }\n\n    if (row >= endRow) {\n      replaceEnd = i;\n      break;\n    }\n  }\n\n  let index = replaceStart;\n  const dataLengthChanged = replaceEnd - replaceStart !== replace.length;\n  const endChunk = dataLengthChanged ? data.slice(replaceEnd) : undefined;\n\n  for (let i = 0; i < replace.length; i++) {\n    data[index++] = replace[i];\n  }\n\n  if (endChunk) {\n    for (let i = 0; i < endChunk.length; i++) {\n      data[index++] = endChunk[i];\n    }\n\n    data.length = index;\n  }\n\n  return {\n    startRow: replaceStart,\n    endRow: replaceStart + replace.length\n  };\n}\n//# sourceMappingURL=utils.js.map","import { Vector3, Matrix4 } from '@math.gl/core';\nimport { assert, uid } from '@luma.gl/webgl';\nexport default class ScenegraphNode {\n  constructor() {\n    let props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n    const {\n      id\n    } = props;\n    this.id = id || uid(this.constructor.name);\n    this.display = true;\n    this.position = new Vector3();\n    this.rotation = new Vector3();\n    this.scale = new Vector3(1, 1, 1);\n    this.matrix = new Matrix4();\n    this.userData = {};\n    this.props = {};\n\n    this._setScenegraphNodeProps(props);\n  }\n\n  delete() {}\n\n  setProps(props) {\n    this._setScenegraphNodeProps(props);\n\n    return this;\n  }\n\n  toString() {\n    return \"{type: ScenegraphNode, id: \".concat(this.id, \")}\");\n  }\n\n  getBounds() {\n    return null;\n  }\n\n  setPosition(position) {\n    assert(position.length === 3, 'setPosition requires vector argument');\n    this.position = position;\n    return this;\n  }\n\n  setRotation(rotation) {\n    assert(rotation.length === 3, 'setRotation requires vector argument');\n    this.rotation = rotation;\n    return this;\n  }\n\n  setScale(scale) {\n    assert(scale.length === 3, 'setScale requires vector argument');\n    this.scale = scale;\n    return this;\n  }\n\n  setMatrix(matrix) {\n    let copyMatrix = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n\n    if (copyMatrix) {\n      this.matrix.copy(matrix);\n    } else {\n      this.matrix = matrix;\n    }\n  }\n\n  setMatrixComponents(_ref) {\n    let {\n      position,\n      rotation,\n      scale,\n      update = true\n    } = _ref;\n\n    if (position) {\n      this.setPosition(position);\n    }\n\n    if (rotation) {\n      this.setRotation(rotation);\n    }\n\n    if (scale) {\n      this.setScale(scale);\n    }\n\n    if (update) {\n      this.updateMatrix();\n    }\n\n    return this;\n  }\n\n  updateMatrix() {\n    const pos = this.position;\n    const rot = this.rotation;\n    const scale = this.scale;\n    this.matrix.identity();\n    this.matrix.translate(pos);\n    this.matrix.rotateXYZ(rot);\n    this.matrix.scale(scale);\n    return this;\n  }\n\n  update() {\n    let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n    const {\n      position,\n      rotation,\n      scale\n    } = options;\n\n    if (position) {\n      this.setPosition(position);\n    }\n\n    if (rotation) {\n      this.setRotation(rotation);\n    }\n\n    if (scale) {\n      this.setScale(scale);\n    }\n\n    this.updateMatrix();\n    return this;\n  }\n\n  getCoordinateUniforms(viewMatrix, modelMatrix) {\n    assert(viewMatrix);\n    modelMatrix = modelMatrix || this.matrix;\n    const worldMatrix = new Matrix4(viewMatrix).multiplyRight(modelMatrix);\n    const worldInverse = worldMatrix.invert();\n    const worldInverseTranspose = worldInverse.transpose();\n    return {\n      viewMatrix,\n      modelMatrix,\n      objectMatrix: modelMatrix,\n      worldMatrix,\n      worldInverseMatrix: worldInverse,\n      worldInverseTransposeMatrix: worldInverseTranspose\n    };\n  }\n\n  _setScenegraphNodeProps(props) {\n    if ('display' in props) {\n      this.display = props.display;\n    }\n\n    if ('position' in props) {\n      this.setPosition(props.position);\n    }\n\n    if ('rotation' in props) {\n      this.setRotation(props.rotation);\n    }\n\n    if ('scale' in props) {\n      this.setScale(props.scale);\n    }\n\n    if ('matrix' in props) {\n      this.setMatrix(props.matrix);\n    }\n\n    Object.assign(this.props, props);\n  }\n\n}\n//# sourceMappingURL=scenegraph-node.js.map","import { Matrix4, Vector3 } from '@math.gl/core';\nimport { log } from '@luma.gl/webgl';\nimport ScenegraphNode from './scenegraph-node';\nexport default class GroupNode extends ScenegraphNode {\n  constructor() {\n    let props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n    props = Array.isArray(props) ? {\n      children: props\n    } : props;\n    const {\n      children = []\n    } = props;\n    log.assert(children.every(child => child instanceof ScenegraphNode), 'every child must an instance of ScenegraphNode');\n    super(props);\n    this.children = children;\n  }\n\n  add() {\n    for (var _len = arguments.length, children = new Array(_len), _key = 0; _key < _len; _key++) {\n      children[_key] = arguments[_key];\n    }\n\n    for (const child of children) {\n      if (Array.isArray(child)) {\n        this.add(...child);\n      } else {\n        this.children.push(child);\n      }\n    }\n\n    return this;\n  }\n\n  remove(child) {\n    const children = this.children;\n    const indexOf = children.indexOf(child);\n\n    if (indexOf > -1) {\n      children.splice(indexOf, 1);\n    }\n\n    return this;\n  }\n\n  removeAll() {\n    this.children = [];\n    return this;\n  }\n\n  delete() {\n    this.children.forEach(child => child.delete());\n    this.removeAll();\n    super.delete();\n  }\n\n  getBounds() {\n    const result = [[Infinity, Infinity, Infinity], [-Infinity, -Infinity, -Infinity]];\n    this.traverse((node, _ref) => {\n      let {\n        worldMatrix\n      } = _ref;\n      const bounds = node.getBounds();\n\n      if (!bounds) {\n        return;\n      }\n\n      const [min, max] = bounds;\n      const center = new Vector3(min).add(max).divide([2, 2, 2]);\n      worldMatrix.transformAsPoint(center, center);\n      const halfSize = new Vector3(max).subtract(min).divide([2, 2, 2]);\n      worldMatrix.transformAsVector(halfSize, halfSize);\n\n      for (let v = 0; v < 8; v++) {\n        const position = new Vector3(v & 0b001 ? -1 : 1, v & 0b010 ? -1 : 1, v & 0b100 ? -1 : 1).multiply(halfSize).add(center);\n\n        for (let i = 0; i < 3; i++) {\n          result[0][i] = Math.min(result[0][i], position[i]);\n          result[1][i] = Math.max(result[1][i], position[i]);\n        }\n      }\n    });\n\n    if (!Number.isFinite(result[0][0])) {\n      return null;\n    }\n\n    return result;\n  }\n\n  traverse(visitor) {\n    let {\n      worldMatrix = new Matrix4()\n    } = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n    const modelMatrix = new Matrix4(worldMatrix).multiplyRight(this.matrix);\n\n    for (const child of this.children) {\n      if (child instanceof GroupNode) {\n        child.traverse(visitor, {\n          worldMatrix: modelMatrix\n        });\n      } else {\n        visitor(child, {\n          worldMatrix: modelMatrix\n        });\n      }\n    }\n  }\n\n}\n//# sourceMappingURL=group-node.js.map","import { assert, log } from '@luma.gl/webgl';\nimport { Matrix4, Quaternion } from '@math.gl/core';\nexport const ATTRIBUTE_TYPE_TO_COMPONENTS = {\n  SCALAR: 1,\n  VEC2: 2,\n  VEC3: 3,\n  VEC4: 4,\n  MAT2: 4,\n  MAT3: 9,\n  MAT4: 16\n};\nexport const ATTRIBUTE_COMPONENT_TYPE_TO_ARRAY = {\n  5120: Int8Array,\n  5121: Uint8Array,\n  5122: Int16Array,\n  5123: Uint16Array,\n  5125: Uint32Array,\n  5126: Float32Array\n};\n\nfunction accessorToJsArray(accessor) {\n  if (!accessor._animation) {\n    const ArrayType = ATTRIBUTE_COMPONENT_TYPE_TO_ARRAY[accessor.componentType];\n    const components = ATTRIBUTE_TYPE_TO_COMPONENTS[accessor.type];\n    const length = components * accessor.count;\n    const {\n      buffer,\n      byteOffset\n    } = accessor.bufferView.data;\n    const array = new ArrayType(buffer, byteOffset + (accessor.byteOffset || 0), length);\n\n    if (components === 1) {\n      accessor._animation = Array.from(array);\n    } else {\n      const slicedArray = [];\n\n      for (let i = 0; i < array.length; i += components) {\n        slicedArray.push(Array.from(array.slice(i, i + components)));\n      }\n\n      accessor._animation = slicedArray;\n    }\n  }\n\n  return accessor._animation;\n}\n\nconst helperMatrix = new Matrix4();\n\nfunction applyTranslationRotationScale(gltfNode, node) {\n  node.matrix.identity();\n\n  if (gltfNode.translation) {\n    node.matrix.translate(gltfNode.translation);\n  }\n\n  if (gltfNode.rotation) {\n    const rotationMatrix = helperMatrix.fromQuaternion(gltfNode.rotation);\n    node.matrix.multiplyRight(rotationMatrix);\n  }\n\n  if (gltfNode.scale) {\n    node.matrix.scale(gltfNode.scale);\n  }\n}\n\nconst quaternion = new Quaternion();\n\nfunction linearInterpolate(target, path, start, stop, ratio) {\n  if (path === 'rotation') {\n    quaternion.slerp({\n      start,\n      target: stop,\n      ratio\n    });\n\n    for (let i = 0; i < quaternion.length; i++) {\n      target[path][i] = quaternion[i];\n    }\n  } else {\n    for (let i = 0; i < start.length; i++) {\n      target[path][i] = ratio * stop[i] + (1 - ratio) * start[i];\n    }\n  }\n}\n\nfunction cubicsplineInterpolate(target, path, _ref) {\n  let {\n    p0,\n    outTangent0,\n    inTangent1,\n    p1,\n    tDiff,\n    ratio: t\n  } = _ref;\n\n  for (let i = 0; i < target[path].length; i++) {\n    const m0 = outTangent0[i] * tDiff;\n    const m1 = inTangent1[i] * tDiff;\n    target[path][i] = (2 * Math.pow(t, 3) - 3 * Math.pow(t, 2) + 1) * p0[i] + (Math.pow(t, 3) - 2 * Math.pow(t, 2) + t) * m0 + (-2 * Math.pow(t, 3) + 3 * Math.pow(t, 2)) * p1[i] + (Math.pow(t, 3) - Math.pow(t, 2)) * m1;\n  }\n}\n\nfunction stepInterpolate(target, path, value) {\n  for (let i = 0; i < value.length; i++) {\n    target[path][i] = value[i];\n  }\n}\n\nfunction interpolate(time, _ref2, target, path) {\n  let {\n    input,\n    interpolation,\n    output\n  } = _ref2;\n  const maxTime = input[input.length - 1];\n  const animationTime = time % maxTime;\n  const nextIndex = input.findIndex(t => t >= animationTime);\n  const previousIndex = Math.max(0, nextIndex - 1);\n\n  if (!Array.isArray(target[path])) {\n    switch (path) {\n      case 'translation':\n        target[path] = [0, 0, 0];\n        break;\n\n      case 'rotation':\n        target[path] = [0, 0, 0, 1];\n        break;\n\n      case 'scale':\n        target[path] = [1, 1, 1];\n        break;\n\n      default:\n        log.warn(\"Bad animation path \".concat(path))();\n    }\n  }\n\n  assert(target[path].length === output[previousIndex].length);\n  const previousTime = input[previousIndex];\n  const nextTime = input[nextIndex];\n\n  switch (interpolation) {\n    case 'STEP':\n      stepInterpolate(target, path, output[previousIndex]);\n      break;\n\n    case 'LINEAR':\n      if (nextTime > previousTime) {\n        const ratio = (animationTime - previousTime) / (nextTime - previousTime);\n        linearInterpolate(target, path, output[previousIndex], output[nextIndex], ratio);\n      }\n\n      break;\n\n    case 'CUBICSPLINE':\n      if (nextTime > previousTime) {\n        const ratio = (animationTime - previousTime) / (nextTime - previousTime);\n        const tDiff = nextTime - previousTime;\n        const p0 = output[3 * previousIndex + 1];\n        const outTangent0 = output[3 * previousIndex + 2];\n        const inTangent1 = output[3 * nextIndex + 0];\n        const p1 = output[3 * nextIndex + 1];\n        cubicsplineInterpolate(target, path, {\n          p0,\n          outTangent0,\n          inTangent1,\n          p1,\n          tDiff,\n          ratio\n        });\n      }\n\n      break;\n\n    default:\n      log.warn(\"Interpolation \".concat(interpolation, \" not supported\"))();\n      break;\n  }\n}\n\nclass GLTFAnimation {\n  constructor(props) {\n    this.startTime = 0;\n    this.playing = true;\n    this.speed = 1;\n    this.channels = [];\n    Object.assign(this, props);\n  }\n\n  animate(timeMs) {\n    if (!this.playing) {\n      return;\n    }\n\n    const absTime = timeMs / 1000;\n    const time = (absTime - this.startTime) * this.speed;\n    this.channels.forEach(_ref3 => {\n      let {\n        sampler,\n        target,\n        path\n      } = _ref3;\n      interpolate(time, sampler, target, path);\n      applyTranslationRotationScale(target, target._node);\n    });\n  }\n\n}\n\nexport default class GLTFAnimator {\n  constructor(gltf) {\n    this.animations = gltf.animations.map((animation, index) => {\n      const name = animation.name || \"Animation-\".concat(index);\n      const samplers = animation.samplers.map(_ref4 => {\n        let {\n          input,\n          interpolation = 'LINEAR',\n          output\n        } = _ref4;\n        return {\n          input: accessorToJsArray(gltf.accessors[input]),\n          interpolation,\n          output: accessorToJsArray(gltf.accessors[output])\n        };\n      });\n      const channels = animation.channels.map(_ref5 => {\n        let {\n          sampler,\n          target\n        } = _ref5;\n        return {\n          sampler: samplers[sampler],\n          target: gltf.nodes[target.node],\n          path: target.path\n        };\n      });\n      return new GLTFAnimation({\n        name,\n        channels\n      });\n    });\n  }\n\n  animate(time) {\n    this.setTime(time);\n  }\n\n  setTime(time) {\n    this.animations.forEach(animation => animation.animate(time));\n  }\n\n  getAnimations() {\n    return this.animations;\n  }\n\n}\n//# sourceMappingURL=gltf-animator.js.map","import { Model } from '@luma.gl/engine';\nimport ScenegraphNode from './scenegraph-node';\nexport default class ModelNode extends ScenegraphNode {\n  constructor(gl) {\n    let props = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n    super(props);\n    this.onBeforeRender = null;\n    this.AfterRender = null;\n\n    if (gl instanceof Model) {\n      this.model = gl;\n\n      this._setModelNodeProps(props);\n    } else {\n      this.model = new Model(gl, props);\n    }\n\n    this.bounds = null;\n    this.managedResources = props.managedResources || [];\n  }\n\n  setProps(props) {\n    super.setProps(props);\n\n    this._setModelNodeProps(props);\n\n    return this;\n  }\n\n  getBounds() {\n    return this.bounds;\n  }\n\n  delete() {\n    if (this.model) {\n      this.model.delete();\n      this.model = null;\n    }\n\n    this.managedResources.forEach(resource => resource.delete());\n    this.managedResources = [];\n  }\n\n  draw() {\n    return this.model.draw(...arguments);\n  }\n\n  setUniforms() {\n    this.model.setUniforms(...arguments);\n    return this;\n  }\n\n  setAttributes() {\n    this.model.setAttributes(...arguments);\n    return this;\n  }\n\n  updateModuleSettings() {\n    this.model.updateModuleSettings(...arguments);\n    return this;\n  }\n\n  _setModelNodeProps(props) {\n    this.model.setProps(props);\n  }\n\n}\n//# sourceMappingURL=model-node.js.map","import { isWebGL2 } from '@luma.gl/gltools';\nimport { log } from '@luma.gl/webgl';\nimport { pbr } from '@luma.gl/shadertools';\nimport ModelNode from '../scenegraph/model-node';\nimport GLTFMaterialParser from './gltf-material-parser';\nconst vs = \"\\n#if (__VERSION__ < 300)\\n  #define _attr attribute\\n#else\\n  #define _attr in\\n#endif\\n\\n  _attr vec4 POSITION;\\n\\n  #ifdef HAS_NORMALS\\n    _attr vec4 NORMAL;\\n  #endif\\n\\n  #ifdef HAS_TANGENTS\\n    _attr vec4 TANGENT;\\n  #endif\\n\\n  #ifdef HAS_UV\\n    _attr vec2 TEXCOORD_0;\\n  #endif\\n\\n  void main(void) {\\n    vec4 _NORMAL = vec4(0.);\\n    vec4 _TANGENT = vec4(0.);\\n    vec2 _TEXCOORD_0 = vec2(0.);\\n\\n    #ifdef HAS_NORMALS\\n      _NORMAL = NORMAL;\\n    #endif\\n\\n    #ifdef HAS_TANGENTS\\n      _TANGENT = TANGENT;\\n    #endif\\n\\n    #ifdef HAS_UV\\n      _TEXCOORD_0 = TEXCOORD_0;\\n    #endif\\n\\n    pbr_setPositionNormalTangentUV(POSITION, _NORMAL, _TANGENT, _TEXCOORD_0);\\n    gl_Position = u_MVPMatrix * POSITION;\\n  }\\n\";\nconst fs = \"\\n#if (__VERSION__ < 300)\\n  #define fragmentColor gl_FragColor\\n#else\\n  out vec4 fragmentColor;\\n#endif\\n\\n  void main(void) {\\n    fragmentColor = pbr_filterColor(vec4(0));\\n  }\\n\";\n\nfunction addVersionToShader(gl, source) {\n  if (isWebGL2(gl)) {\n    return \"#version 300 es\\n\".concat(source);\n  }\n\n  return source;\n}\n\nexport default function createGLTFModel(gl, options) {\n  const {\n    id,\n    drawMode,\n    vertexCount,\n    attributes,\n    modelOptions\n  } = options;\n  const materialParser = new GLTFMaterialParser(gl, options);\n  log.info(4, 'createGLTFModel defines: ', materialParser.defines)();\n  const managedResources = [];\n  managedResources.push(...materialParser.generatedTextures);\n  managedResources.push(...Object.values(attributes).map(attribute => attribute.buffer));\n  const model = new ModelNode(gl, {\n    id,\n    drawMode,\n    vertexCount,\n    modules: [pbr],\n    parameters: materialParser.parameters,\n    vs: addVersionToShader(gl, vs),\n    fs: addVersionToShader(gl, fs),\n    managedResources,\n    ...modelOptions,\n    defines: { ...materialParser.defines,\n      ...modelOptions.defines\n    }\n  });\n  model.setProps({\n    attributes\n  });\n  model.setUniforms(materialParser.uniforms);\n  return model;\n}\n//# sourceMappingURL=create-gltf-model.js.map","import { Matrix4 } from '@math.gl/core';\nimport { Buffer, Accessor, log } from '@luma.gl/webgl';\nimport GroupNode from '../scenegraph/group-node';\nimport GLTFAnimator from './gltf-animator';\nimport createGLTFModel from './create-gltf-model';\nconst ATTRIBUTE_TYPE_TO_COMPONENTS = {\n  SCALAR: 1,\n  VEC2: 2,\n  VEC3: 3,\n  VEC4: 4,\n  MAT2: 4,\n  MAT3: 9,\n  MAT4: 16\n};\nconst DEFAULT_OPTIONS = {\n  modelOptions: {},\n  pbrDebug: false,\n  imageBasedLightingEnvironment: null,\n  lights: true,\n  useTangents: false\n};\nexport default class GLTFInstantiator {\n  constructor(gl) {\n    let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n    this.gl = gl;\n    this.options = Object.assign({}, DEFAULT_OPTIONS, options);\n  }\n\n  instantiate(gltf) {\n    this.gltf = gltf;\n    const scenes = (gltf.scenes || []).map(scene => this.createScene(scene));\n    return scenes;\n  }\n\n  createAnimator() {\n    if (Array.isArray(this.gltf.animations)) {\n      return new GLTFAnimator(this.gltf);\n    }\n\n    return null;\n  }\n\n  createScene(gltfScene) {\n    const gltfNodes = gltfScene.nodes || [];\n    const nodes = gltfNodes.map(node => this.createNode(node));\n    const scene = new GroupNode({\n      id: gltfScene.name || gltfScene.id,\n      children: nodes\n    });\n    return scene;\n  }\n\n  createNode(gltfNode) {\n    if (!gltfNode._node) {\n      const gltfChildren = gltfNode.children || [];\n      const children = gltfChildren.map(child => this.createNode(child));\n\n      if (gltfNode.mesh) {\n        children.push(this.createMesh(gltfNode.mesh));\n      }\n\n      const node = new GroupNode({\n        id: gltfNode.name || gltfNode.id,\n        children\n      });\n\n      if (gltfNode.matrix) {\n        node.setMatrix(gltfNode.matrix);\n      } else {\n        node.matrix.identity();\n\n        if (gltfNode.translation) {\n          node.matrix.translate(gltfNode.translation);\n        }\n\n        if (gltfNode.rotation) {\n          const rotationMatrix = new Matrix4().fromQuaternion(gltfNode.rotation);\n          node.matrix.multiplyRight(rotationMatrix);\n        }\n\n        if (gltfNode.scale) {\n          node.matrix.scale(gltfNode.scale);\n        }\n      }\n\n      gltfNode._node = node;\n    }\n\n    return gltfNode._node;\n  }\n\n  createMesh(gltfMesh) {\n    if (!gltfMesh._mesh) {\n      const gltfPrimitives = gltfMesh.primitives || [];\n      const primitives = gltfPrimitives.map((gltfPrimitive, i) => this.createPrimitive(gltfPrimitive, i, gltfMesh));\n      const mesh = new GroupNode({\n        id: gltfMesh.name || gltfMesh.id,\n        children: primitives\n      });\n      gltfMesh._mesh = mesh;\n    }\n\n    return gltfMesh._mesh;\n  }\n\n  getVertexCount(attributes) {\n    log.warn('getVertexCount() not found')();\n  }\n\n  createPrimitive(gltfPrimitive, i, gltfMesh) {\n    const model = createGLTFModel(this.gl, Object.assign({\n      id: gltfPrimitive.name || \"\".concat(gltfMesh.name || gltfMesh.id, \"-primitive-\").concat(i),\n      drawMode: gltfPrimitive.mode || 4,\n      vertexCount: gltfPrimitive.indices ? gltfPrimitive.indices.count : this.getVertexCount(gltfPrimitive.attributes),\n      attributes: this.createAttributes(gltfPrimitive.attributes, gltfPrimitive.indices),\n      material: gltfPrimitive.material\n    }, this.options));\n    model.bounds = [gltfPrimitive.attributes.POSITION.min, gltfPrimitive.attributes.POSITION.max];\n    return model;\n  }\n\n  createAttributes(attributes, indices) {\n    const loadedAttributes = {};\n    Object.keys(attributes).forEach(attrName => {\n      loadedAttributes[attrName] = this.createAccessor(attributes[attrName], this.createBuffer(attributes[attrName], this.gl.ARRAY_BUFFER));\n    });\n\n    if (indices) {\n      loadedAttributes.indices = this.createAccessor(indices, this.createBuffer(indices, this.gl.ELEMENT_ARRAY_BUFFER));\n    }\n\n    log.info(4, 'glTF Attributes', {\n      attributes,\n      indices,\n      generated: loadedAttributes\n    })();\n    return loadedAttributes;\n  }\n\n  createBuffer(attribute, target) {\n    if (!attribute.bufferView) {\n      attribute.bufferView = {};\n    }\n\n    const {\n      bufferView\n    } = attribute;\n\n    if (!bufferView.lumaBuffers) {\n      bufferView.lumaBuffers = {};\n    }\n\n    if (!bufferView.lumaBuffers[target]) {\n      bufferView.lumaBuffers[target] = new Buffer(this.gl, {\n        id: \"from-\".concat(bufferView.id),\n        data: bufferView.data || attribute.value,\n        target\n      });\n    }\n\n    return bufferView.lumaBuffers[target];\n  }\n\n  createAccessor(accessor, buffer) {\n    return new Accessor({\n      buffer,\n      offset: accessor.byteOffset || 0,\n      stride: accessor.bufferView.byteStride || 0,\n      type: accessor.componentType,\n      size: ATTRIBUTE_TYPE_TO_COMPONENTS[accessor.type]\n    });\n  }\n\n  createSampler(gltfSampler) {\n    return gltfSampler;\n  }\n\n  needsPOT() {\n    return false;\n  }\n\n}\n//# sourceMappingURL=gltf-instantiator.js.map","export default \"#version 300 es\\nin vec3 instancePositions;\\nin vec3 instancePositions64Low;\\nin vec4 instanceColors;\\nin vec3 instancePickingColors;\\nin mat3 instanceModelMatrix;\\nin vec3 instanceTranslation;\\nuniform float sizeScale;\\nuniform float sizeMinPixels;\\nuniform float sizeMaxPixels;\\nuniform mat4 sceneModelMatrix;\\nuniform bool composeModelMatrix;\\nin vec4 POSITION;\\n\\n#ifdef HAS_UV\\n  in vec2 TEXCOORD_0;\\n#endif\\n\\n#ifdef MODULE_PBR\\n  #ifdef HAS_NORMALS\\n    in vec4 NORMAL;\\n  #endif\\n#endif\\nout vec4 vColor;\\n#ifndef MODULE_PBR\\n  #ifdef HAS_UV\\n    out vec2 vTEXCOORD_0;\\n  #endif\\n#endif\\nvoid main(void) {\\n  #if defined(HAS_UV) && !defined(MODULE_PBR)\\n    vTEXCOORD_0 = TEXCOORD_0;\\n    geometry.uv = vTEXCOORD_0;\\n  #endif\\n\\n  geometry.worldPosition = instancePositions;\\n  geometry.pickingColor = instancePickingColors;\\n\\n  vec3 normal = vec3(0.0, 0.0, 1.0);\\n  #ifdef MODULE_PBR\\n    #ifdef HAS_NORMALS\\n      normal = instanceModelMatrix * (sceneModelMatrix * vec4(NORMAL.xyz, 0.0)).xyz;\\n    #endif\\n  #endif\\n\\n  float originalSize = project_size_to_pixel(sizeScale);\\n  float clampedSize = clamp(originalSize, sizeMinPixels, sizeMaxPixels);\\n\\n  vec3 pos = (instanceModelMatrix * (sceneModelMatrix * POSITION).xyz) * sizeScale * (clampedSize / originalSize) + instanceTranslation;\\n  if(composeModelMatrix) {\\n    DECKGL_FILTER_SIZE(pos, geometry);\\n    geometry.normal = project_normal(normal);\\n    geometry.worldPosition += pos;\\n    gl_Position = project_position_to_clipspace(pos + instancePositions, instancePositions64Low, vec3(0.0), geometry.position);\\n  }\\n  else {\\n    pos = project_size(pos);\\n    DECKGL_FILTER_SIZE(pos, geometry);\\n    gl_Position = project_position_to_clipspace(instancePositions, instancePositions64Low, pos, geometry.position);\\n    geometry.normal = project_normal(normal);\\n  }\\n  DECKGL_FILTER_GL_POSITION(gl_Position, geometry);\\n\\n  #ifdef MODULE_PBR\\n    pbr_vPosition = geometry.position.xyz;\\n    #ifdef HAS_NORMALS\\n      pbr_vNormal = geometry.normal;\\n    #endif\\n\\n    #ifdef HAS_UV\\n      pbr_vUV = TEXCOORD_0;\\n    #else\\n      pbr_vUV = vec2(0., 0.);\\n    #endif\\n    geometry.uv = pbr_vUV;\\n  #endif\\n\\n  vColor = instanceColors;\\n  DECKGL_FILTER_COLOR(vColor, geometry);\\n}\\n\";\n//# sourceMappingURL=scenegraph-layer-vertex.glsl.js.map","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Layer, project32, picking, log } from '@deck.gl/core';\nimport { isWebGL2 } from '@luma.gl/core';\nimport { pbr } from '@luma.gl/shadertools';\nimport { ScenegraphNode, createGLTFObjects } from '@luma.gl/experimental';\nimport { GLTFLoader } from '@loaders.gl/gltf';\nimport { waitForGLTFAssets } from './gltf-utils';\nimport { MATRIX_ATTRIBUTES, shouldComposeModelMatrix } from '../utils/matrix';\nimport vs from './scenegraph-layer-vertex.glsl';\nimport fs from './scenegraph-layer-fragment.glsl';\nconst DEFAULT_COLOR = [255, 255, 255, 255];\nconst defaultProps = {\n  scenegraph: {\n    type: 'object',\n    value: null,\n    async: true\n  },\n  getScene: gltf => {\n    if (gltf && gltf.scenes) {\n      return typeof gltf.scene === 'object' ? gltf.scene : gltf.scenes[gltf.scene || 0];\n    }\n\n    return gltf;\n  },\n  getAnimator: scenegraph => scenegraph && scenegraph.animator,\n  _animations: null,\n  sizeScale: {\n    type: 'number',\n    value: 1,\n    min: 0\n  },\n  sizeMinPixels: {\n    type: 'number',\n    min: 0,\n    value: 0\n  },\n  sizeMaxPixels: {\n    type: 'number',\n    min: 0,\n    value: Number.MAX_SAFE_INTEGER\n  },\n  getPosition: {\n    type: 'accessor',\n    value: x => x.position\n  },\n  getColor: {\n    type: 'accessor',\n    value: DEFAULT_COLOR\n  },\n  _lighting: 'flat',\n  _imageBasedLightingEnvironment: null,\n  getOrientation: {\n    type: 'accessor',\n    value: [0, 0, 0]\n  },\n  getScale: {\n    type: 'accessor',\n    value: [1, 1, 1]\n  },\n  getTranslation: {\n    type: 'accessor',\n    value: [0, 0, 0]\n  },\n  getTransformMatrix: {\n    type: 'accessor',\n    value: []\n  },\n  loaders: [GLTFLoader]\n};\nexport default class ScenegraphLayer extends Layer {\n  constructor(...args) {\n    super(...args);\n\n    _defineProperty(this, \"state\", void 0);\n  }\n\n  getShaders() {\n    const modules = [project32, picking];\n\n    if (this.props._lighting === 'pbr') {\n      modules.push(pbr);\n    }\n\n    return super.getShaders({\n      vs,\n      fs,\n      modules\n    });\n  }\n\n  initializeState() {\n    const attributeManager = this.getAttributeManager();\n    attributeManager.addInstanced({\n      instancePositions: {\n        size: 3,\n        type: 5130,\n        fp64: this.use64bitPositions(),\n        accessor: 'getPosition',\n        transition: true\n      },\n      instanceColors: {\n        type: 5121,\n        size: this.props.colorFormat.length,\n        accessor: 'getColor',\n        normalized: true,\n        defaultValue: DEFAULT_COLOR,\n        transition: true\n      },\n      instanceModelMatrix: MATRIX_ATTRIBUTES\n    });\n  }\n\n  updateState(params) {\n    super.updateState(params);\n    const {\n      props,\n      oldProps\n    } = params;\n\n    if (props.scenegraph !== oldProps.scenegraph) {\n      this._updateScenegraph();\n    } else if (props._animations !== oldProps._animations) {\n      this._applyAnimationsProp(this.state.scenegraph, this.state.animator, props._animations);\n    }\n  }\n\n  finalizeState(context) {\n    super.finalizeState(context);\n\n    this._deleteScenegraph();\n  }\n\n  get isLoaded() {\n    var _this$state;\n\n    return ((_this$state = this.state) === null || _this$state === void 0 ? void 0 : _this$state.scenegraph) && super.isLoaded;\n  }\n\n  _updateScenegraph() {\n    const props = this.props;\n    const {\n      gl\n    } = this.context;\n    let scenegraphData = null;\n\n    if (props.scenegraph instanceof ScenegraphNode) {\n      scenegraphData = {\n        scenes: [props.scenegraph]\n      };\n    } else if (props.scenegraph && !props.scenegraph.gltf) {\n      const gltf = props.scenegraph;\n      const gltfObjects = createGLTFObjects(gl, gltf, this._getModelOptions());\n      scenegraphData = {\n        gltf,\n        ...gltfObjects\n      };\n      waitForGLTFAssets(gltfObjects).then(() => this.setNeedsRedraw());\n    } else if (props.scenegraph) {\n      log.deprecated('ScenegraphLayer.props.scenegraph', 'Use GLTFLoader instead of GLTFScenegraphLoader')();\n      scenegraphData = props.scenegraph;\n    }\n\n    const options = {\n      layer: this,\n      gl\n    };\n    const scenegraph = props.getScene(scenegraphData, options);\n    const animator = props.getAnimator(scenegraphData, options);\n\n    if (scenegraph instanceof ScenegraphNode) {\n      this._deleteScenegraph();\n\n      this._applyAllAttributes(scenegraph);\n\n      this._applyAnimationsProp(scenegraph, animator, props._animations);\n\n      this.setState({\n        scenegraph,\n        animator\n      });\n    } else if (scenegraph !== null) {\n      log.warn('invalid scenegraph:', scenegraph)();\n    }\n  }\n\n  _applyAllAttributes(scenegraph) {\n    if (this.state.attributesAvailable) {\n      const allAttributes = this.getAttributeManager().getAttributes();\n      scenegraph.traverse(model => {\n        this._setModelAttributes(model.model, allAttributes);\n      });\n    }\n  }\n\n  _applyAnimationsProp(scenegraph, animator, animationsProp) {\n    if (!scenegraph || !animator || !animationsProp) {\n      return;\n    }\n\n    const animations = animator.getAnimations();\n    Object.keys(animationsProp).sort().forEach(key => {\n      const value = animationsProp[key];\n\n      if (key === '*') {\n        animations.forEach(animation => {\n          Object.assign(animation, value);\n        });\n      } else if (Number.isFinite(Number(key))) {\n        const number = Number(key);\n\n        if (number >= 0 && number < animations.length) {\n          Object.assign(animations[number], value);\n        } else {\n          log.warn(\"animation \".concat(key, \" not found\"))();\n        }\n      } else {\n        const findResult = animations.find(({\n          name\n        }) => name === key);\n\n        if (findResult) {\n          Object.assign(findResult, value);\n        } else {\n          log.warn(\"animation \".concat(key, \" not found\"))();\n        }\n      }\n    });\n  }\n\n  _deleteScenegraph() {\n    const {\n      scenegraph\n    } = this.state;\n\n    if (scenegraph instanceof ScenegraphNode) {\n      scenegraph.delete();\n    }\n  }\n\n  _getModelOptions() {\n    const {\n      _imageBasedLightingEnvironment\n    } = this.props;\n    let env = null;\n\n    if (_imageBasedLightingEnvironment) {\n      if (typeof _imageBasedLightingEnvironment === 'function') {\n        env = _imageBasedLightingEnvironment({\n          gl: this.context.gl,\n          layer: this\n        });\n      } else {\n        env = _imageBasedLightingEnvironment;\n      }\n    }\n\n    return {\n      gl: this.context.gl,\n      waitForFullLoad: true,\n      imageBasedLightingEnvironment: env,\n      modelOptions: {\n        isInstanced: true,\n        transpileToGLSL100: !isWebGL2(this.context.gl),\n        ...this.getShaders()\n      },\n      useTangents: false\n    };\n  }\n\n  updateAttributes(changedAttributes) {\n    this.setState({\n      attributesAvailable: true\n    });\n    if (!this.state.scenegraph) return;\n    this.state.scenegraph.traverse(model => {\n      this._setModelAttributes(model.model, changedAttributes);\n    });\n  }\n\n  draw({\n    moduleParameters = null,\n    parameters = {},\n    context\n  }) {\n    if (!this.state.scenegraph) return;\n\n    if (this.props._animations && this.state.animator) {\n      this.state.animator.animate(context.timeline.getTime());\n      this.setNeedsRedraw();\n    }\n\n    const {\n      viewport\n    } = this.context;\n    const {\n      sizeScale,\n      sizeMinPixels,\n      sizeMaxPixels,\n      opacity,\n      coordinateSystem\n    } = this.props;\n    const numInstances = this.getNumInstances();\n    this.state.scenegraph.traverse((model, {\n      worldMatrix\n    }) => {\n      model.model.setInstanceCount(numInstances);\n      model.updateModuleSettings(moduleParameters);\n      model.draw({\n        parameters,\n        uniforms: {\n          sizeScale,\n          opacity,\n          sizeMinPixels,\n          sizeMaxPixels,\n          composeModelMatrix: shouldComposeModelMatrix(viewport, coordinateSystem),\n          sceneModelMatrix: worldMatrix,\n          u_Camera: model.model.getUniforms().project_uCameraPosition\n        }\n      });\n    });\n  }\n\n}\n\n_defineProperty(ScenegraphLayer, \"defaultProps\", defaultProps);\n\n_defineProperty(ScenegraphLayer, \"layerName\", 'ScenegraphLayer');\n//# sourceMappingURL=scenegraph-layer.js.map","export default \"#version 300 es\\nuniform float opacity;\\nin vec4 vColor;\\n\\nout vec4 fragmentColor;\\n#ifndef MODULE_PBR\\n  #if defined(HAS_UV) && defined(HAS_BASECOLORMAP)\\n    in vec2 vTEXCOORD_0;\\n    uniform sampler2D u_BaseColorSampler;\\n  #endif\\n#endif\\n\\nvoid main(void) {\\n  #ifdef MODULE_PBR\\n    fragmentColor = vColor * pbr_filterColor(vec4(0));\\n    geometry.uv = pbr_vUV;\\n  #else\\n    #if defined(HAS_UV) && defined(HAS_BASECOLORMAP)\\n      fragmentColor = vColor * texture2D(u_BaseColorSampler, vTEXCOORD_0);\\n      geometry.uv = vTEXCOORD_0;\\n    #else\\n      fragmentColor = vColor;\\n    #endif\\n  #endif\\n\\n  fragmentColor.a *= opacity;\\n  DECKGL_FILTER_COLOR(fragmentColor, geometry);\\n}\\n\";\n//# sourceMappingURL=scenegraph-layer-fragment.glsl.js.map","import GLTFInstantiator from './gltf-instantiator';\nexport default function createGLTFObjects(gl, gltf, options) {\n  const instantiator = new GLTFInstantiator(gl, options);\n  const scenes = instantiator.instantiate(gltf);\n  const animator = instantiator.createAnimator();\n  return {\n    scenes,\n    animator\n  };\n}\n//# sourceMappingURL=create-gltf-objects.js.map","export async function waitForGLTFAssets(gltfObjects) {\n  const remaining = [];\n  gltfObjects.scenes.forEach(scene => {\n    scene.traverse(model => {\n      Object.values(model.model.getUniforms()).forEach(uniform => {\n        if (uniform.loaded === false) {\n          remaining.push(uniform);\n        }\n      });\n    });\n  });\n  return await waitWhileCondition(() => remaining.some(uniform => !uniform.loaded));\n}\n\nasync function waitWhileCondition(condition) {\n  while (condition()) {\n    await new Promise(resolve => requestAnimationFrame(resolve));\n  }\n}\n//# sourceMappingURL=gltf-utils.js.map","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Layer, project32, phongLighting, picking, log } from '@deck.gl/core';\nimport { Model, Geometry, Texture2D, isWebGL2 } from '@luma.gl/core';\nimport { hasFeature, FEATURES } from '@luma.gl/webgl';\nimport { MATRIX_ATTRIBUTES, shouldComposeModelMatrix } from '../utils/matrix';\nimport vs from './simple-mesh-layer-vertex.glsl';\nimport fs from './simple-mesh-layer-fragment.glsl';\nimport { getMeshBoundingBox } from '@loaders.gl/schema';\n\nfunction validateGeometryAttributes(attributes, useMeshColors) {\n  const hasColorAttribute = attributes.COLOR_0 || attributes.colors;\n  const useColorAttribute = hasColorAttribute && useMeshColors;\n\n  if (!useColorAttribute) {\n    attributes.colors = {\n      constant: true,\n      value: new Float32Array([1, 1, 1])\n    };\n  }\n\n  log.assert(attributes.positions || attributes.POSITION, 'no \"postions\" or \"POSITION\" attribute in mesh');\n}\n\nfunction getGeometry(data, useMeshColors) {\n  if (data.attributes) {\n    validateGeometryAttributes(data.attributes, useMeshColors);\n\n    if (data instanceof Geometry) {\n      return data;\n    } else {\n      return new Geometry(data);\n    }\n  } else if (data.positions || data.POSITION) {\n    validateGeometryAttributes(data, useMeshColors);\n    return new Geometry({\n      attributes: data\n    });\n  }\n\n  throw Error('Invalid mesh');\n}\n\nconst DEFAULT_COLOR = [0, 0, 0, 255];\nconst defaultProps = {\n  mesh: {\n    type: 'object',\n    value: null,\n    async: true\n  },\n  texture: {\n    type: 'image',\n    value: null,\n    async: true\n  },\n  sizeScale: {\n    type: 'number',\n    value: 1,\n    min: 0\n  },\n  _useMeshColors: {\n    type: 'boolean',\n    value: false\n  },\n  _instanced: true,\n  wireframe: false,\n  material: true,\n  getPosition: {\n    type: 'accessor',\n    value: x => x.position\n  },\n  getColor: {\n    type: 'accessor',\n    value: DEFAULT_COLOR\n  },\n  getOrientation: {\n    type: 'accessor',\n    value: [0, 0, 0]\n  },\n  getScale: {\n    type: 'accessor',\n    value: [1, 1, 1]\n  },\n  getTranslation: {\n    type: 'accessor',\n    value: [0, 0, 0]\n  },\n  getTransformMatrix: {\n    type: 'accessor',\n    value: []\n  },\n  textureParameters: {\n    type: 'object',\n    ignore: true\n  }\n};\nexport default class SimpleMeshLayer extends Layer {\n  constructor(...args) {\n    super(...args);\n\n    _defineProperty(this, \"state\", void 0);\n  }\n\n  getShaders() {\n    const transpileToGLSL100 = !isWebGL2(this.context.gl);\n    const defines = {};\n\n    if (hasFeature(this.context.gl, FEATURES.GLSL_DERIVATIVES)) {\n      defines.DERIVATIVES_AVAILABLE = 1;\n    }\n\n    return super.getShaders({\n      vs,\n      fs,\n      modules: [project32, phongLighting, picking],\n      transpileToGLSL100,\n      defines\n    });\n  }\n\n  getBounds() {\n    var _mesh$header;\n\n    if (this.props._instanced) {\n      return super.getBounds();\n    }\n\n    let result = this.state.positionBounds;\n\n    if (result) {\n      return result;\n    }\n\n    const {\n      mesh\n    } = this.props;\n\n    if (!mesh) {\n      return null;\n    }\n\n    result = (_mesh$header = mesh.header) === null || _mesh$header === void 0 ? void 0 : _mesh$header.boundingBox;\n\n    if (!result) {\n      const {\n        attributes\n      } = getGeometry(mesh, this.props._useMeshColors);\n      attributes.POSITION = attributes.POSITION || attributes.positions;\n      result = getMeshBoundingBox(attributes);\n    }\n\n    this.state.positionBounds = result;\n    return result;\n  }\n\n  initializeState() {\n    const attributeManager = this.getAttributeManager();\n    attributeManager.addInstanced({\n      instancePositions: {\n        transition: true,\n        type: 5130,\n        fp64: this.use64bitPositions(),\n        size: 3,\n        accessor: 'getPosition'\n      },\n      instanceColors: {\n        type: 5121,\n        transition: true,\n        size: this.props.colorFormat.length,\n        normalized: true,\n        accessor: 'getColor',\n        defaultValue: [0, 0, 0, 255]\n      },\n      instanceModelMatrix: MATRIX_ATTRIBUTES\n    });\n    this.setState({\n      emptyTexture: new Texture2D(this.context.gl, {\n        data: new Uint8Array(4),\n        width: 1,\n        height: 1\n      })\n    });\n  }\n\n  updateState(params) {\n    super.updateState(params);\n    const {\n      props,\n      oldProps,\n      changeFlags\n    } = params;\n\n    if (props.mesh !== oldProps.mesh || changeFlags.extensionsChanged) {\n      var _this$state$model;\n\n      this.state.positionBounds = null;\n      (_this$state$model = this.state.model) === null || _this$state$model === void 0 ? void 0 : _this$state$model.delete();\n\n      if (props.mesh) {\n        this.state.model = this.getModel(props.mesh);\n        const attributes = props.mesh.attributes || props.mesh;\n        this.setState({\n          hasNormals: Boolean(attributes.NORMAL || attributes.normals)\n        });\n      }\n\n      this.getAttributeManager().invalidateAll();\n    }\n\n    if (props.texture !== oldProps.texture) {\n      this.setTexture(props.texture);\n    }\n\n    if (this.state.model) {\n      this.state.model.setDrawMode(this.props.wireframe ? 3 : 4);\n    }\n  }\n\n  finalizeState(context) {\n    super.finalizeState(context);\n    this.state.emptyTexture.delete();\n  }\n\n  draw({\n    uniforms\n  }) {\n    if (!this.state.model) {\n      return;\n    }\n\n    const {\n      viewport\n    } = this.context;\n    const {\n      sizeScale,\n      coordinateSystem,\n      _instanced\n    } = this.props;\n    this.state.model.setUniforms(uniforms).setUniforms({\n      sizeScale,\n      composeModelMatrix: !_instanced || shouldComposeModelMatrix(viewport, coordinateSystem),\n      flatShading: !this.state.hasNormals\n    }).draw();\n  }\n\n  get isLoaded() {\n    var _this$state;\n\n    return ((_this$state = this.state) === null || _this$state === void 0 ? void 0 : _this$state.model) && super.isLoaded;\n  }\n\n  getModel(mesh) {\n    const model = new Model(this.context.gl, { ...this.getShaders(),\n      id: this.props.id,\n      geometry: getGeometry(mesh, this.props._useMeshColors),\n      isInstanced: true\n    });\n    const {\n      texture\n    } = this.props;\n    const {\n      emptyTexture\n    } = this.state;\n    model.setUniforms({\n      sampler: texture || emptyTexture,\n      hasTexture: Boolean(texture)\n    });\n    return model;\n  }\n\n  setTexture(texture) {\n    const {\n      emptyTexture,\n      model\n    } = this.state;\n\n    if (model) {\n      model.setUniforms({\n        sampler: texture || emptyTexture,\n        hasTexture: Boolean(texture)\n      });\n    }\n  }\n\n}\n\n_defineProperty(SimpleMeshLayer, \"defaultProps\", defaultProps);\n\n_defineProperty(SimpleMeshLayer, \"layerName\", 'SimpleMeshLayer');\n//# sourceMappingURL=simple-mesh-layer.js.map","export default \"#version 300 es\\n#define SHADER_NAME simple-mesh-layer-vs\\nuniform float sizeScale;\\nuniform bool composeModelMatrix;\\nin vec3 positions;\\nin vec3 normals;\\nin vec3 colors;\\nin vec2 texCoords;\\nin vec3 instancePositions;\\nin vec3 instancePositions64Low;\\nin vec4 instanceColors;\\nin vec3 instancePickingColors;\\nin mat3 instanceModelMatrix;\\nin vec3 instanceTranslation;\\nout vec2 vTexCoord;\\nout vec3 cameraPosition;\\nout vec3 normals_commonspace;\\nout vec4 position_commonspace;\\nout vec4 vColor;\\n\\nvoid main(void) {\\n  geometry.worldPosition = instancePositions;\\n  geometry.uv = texCoords;\\n  geometry.pickingColor = instancePickingColors;\\n\\n  vTexCoord = texCoords;\\n  cameraPosition = project_uCameraPosition;\\n  vColor = vec4(colors * instanceColors.rgb, instanceColors.a);\\n\\n  vec3 pos = (instanceModelMatrix * positions) * sizeScale + instanceTranslation;\\n\\n  if (composeModelMatrix) {\\n    DECKGL_FILTER_SIZE(pos, geometry);\\n    normals_commonspace = project_normal(instanceModelMatrix * normals);\\n    geometry.worldPosition += pos;\\n    gl_Position = project_position_to_clipspace(pos + instancePositions, instancePositions64Low, vec3(0.0), position_commonspace);\\n    geometry.position = position_commonspace;\\n  }\\n  else {\\n    pos = project_size(pos);\\n    DECKGL_FILTER_SIZE(pos, geometry);\\n    gl_Position = project_position_to_clipspace(instancePositions, instancePositions64Low, pos, position_commonspace);\\n    geometry.position = position_commonspace;\\n    normals_commonspace = project_normal(instanceModelMatrix * normals);\\n  }\\n\\n  geometry.normal = normals_commonspace;\\n  DECKGL_FILTER_GL_POSITION(gl_Position, geometry);\\n\\n  DECKGL_FILTER_COLOR(vColor, geometry);\\n}\\n\";\n//# sourceMappingURL=simple-mesh-layer-vertex.glsl.js.map","export default \"#version 300 es\\n#define SHADER_NAME simple-mesh-layer-fs\\n\\nprecision highp float;\\n\\nuniform bool hasTexture;\\nuniform sampler2D sampler;\\nuniform bool flatShading;\\nuniform float opacity;\\n\\nin vec2 vTexCoord;\\nin vec3 cameraPosition;\\nin vec3 normals_commonspace;\\nin vec4 position_commonspace;\\nin vec4 vColor;\\n\\nout vec4 fragColor;\\n\\nvoid main(void) {\\n  geometry.uv = vTexCoord;\\n\\n  vec3 normal;\\n  if (flatShading) {\\n#ifdef DERIVATIVES_AVAILABLE\\n    normal = normalize(cross(dFdx(position_commonspace.xyz), dFdy(position_commonspace.xyz)));\\n#else\\n    normal = vec3(0.0, 0.0, 1.0);\\n#endif\\n  } else {\\n    normal = normals_commonspace;\\n  }\\n\\n  vec4 color = hasTexture ? texture(sampler, vTexCoord) : vColor;\\n  DECKGL_FILTER_COLOR(color, geometry);\\n\\n  vec3 lightColor = lighting_getLightColor(color.rgb, cameraPosition, position_commonspace.xyz, normal);\\n  fragColor = vec4(lightColor, color.a * opacity);\\n}\\n\";\n//# sourceMappingURL=simple-mesh-layer-fragment.glsl.js.map","import { COORDINATE_SYSTEM, createIterable } from '@deck.gl/core';\nconst RADIAN_PER_DEGREE = Math.PI / 180;\nconst modelMatrix = new Float32Array(16);\nconst valueArray = new Float32Array(12);\n\nfunction calculateTransformMatrix(targetMatrix, orientation, scale) {\n  const pitch = orientation[0] * RADIAN_PER_DEGREE;\n  const yaw = orientation[1] * RADIAN_PER_DEGREE;\n  const roll = orientation[2] * RADIAN_PER_DEGREE;\n  const sr = Math.sin(roll);\n  const sp = Math.sin(pitch);\n  const sw = Math.sin(yaw);\n  const cr = Math.cos(roll);\n  const cp = Math.cos(pitch);\n  const cw = Math.cos(yaw);\n  const scx = scale[0];\n  const scy = scale[1];\n  const scz = scale[2];\n  targetMatrix[0] = scx * cw * cp;\n  targetMatrix[1] = scx * sw * cp;\n  targetMatrix[2] = scx * -sp;\n  targetMatrix[3] = scy * (-sw * cr + cw * sp * sr);\n  targetMatrix[4] = scy * (cw * cr + sw * sp * sr);\n  targetMatrix[5] = scy * cp * sr;\n  targetMatrix[6] = scz * (sw * sr + cw * sp * cr);\n  targetMatrix[7] = scz * (-cw * sr + sw * sp * cr);\n  targetMatrix[8] = scz * cp * cr;\n}\n\nfunction getExtendedMat3FromMat4(mat4) {\n  mat4[0] = mat4[0];\n  mat4[1] = mat4[1];\n  mat4[2] = mat4[2];\n  mat4[3] = mat4[4];\n  mat4[4] = mat4[5];\n  mat4[5] = mat4[6];\n  mat4[6] = mat4[8];\n  mat4[7] = mat4[9];\n  mat4[8] = mat4[10];\n  mat4[9] = mat4[12];\n  mat4[10] = mat4[13];\n  mat4[11] = mat4[14];\n  return mat4.subarray(0, 12);\n}\n\nexport const MATRIX_ATTRIBUTES = {\n  size: 12,\n  accessor: ['getOrientation', 'getScale', 'getTranslation', 'getTransformMatrix'],\n  shaderAttributes: {\n    instanceModelMatrix__LOCATION_0: {\n      size: 3,\n      elementOffset: 0\n    },\n    instanceModelMatrix__LOCATION_1: {\n      size: 3,\n      elementOffset: 3\n    },\n    instanceModelMatrix__LOCATION_2: {\n      size: 3,\n      elementOffset: 6\n    },\n    instanceTranslation: {\n      size: 3,\n      elementOffset: 9\n    }\n  },\n\n  update(attribute, {\n    startRow,\n    endRow\n  }) {\n    const {\n      data,\n      getOrientation,\n      getScale,\n      getTranslation,\n      getTransformMatrix\n    } = this.props;\n    const arrayMatrix = Array.isArray(getTransformMatrix);\n    const constantMatrix = arrayMatrix && getTransformMatrix.length === 16;\n    const constantScale = Array.isArray(getScale);\n    const constantOrientation = Array.isArray(getOrientation);\n    const constantTranslation = Array.isArray(getTranslation);\n    const hasMatrix = constantMatrix || !arrayMatrix && Boolean(getTransformMatrix(data[0]));\n\n    if (hasMatrix) {\n      attribute.constant = constantMatrix;\n    } else {\n      attribute.constant = constantOrientation && constantScale && constantTranslation;\n    }\n\n    const instanceModelMatrixData = attribute.value;\n\n    if (attribute.constant) {\n      let matrix;\n\n      if (hasMatrix) {\n        modelMatrix.set(getTransformMatrix);\n        matrix = getExtendedMat3FromMat4(modelMatrix);\n      } else {\n        matrix = valueArray;\n        const orientation = getOrientation;\n        const scale = getScale;\n        calculateTransformMatrix(matrix, orientation, scale);\n        matrix.set(getTranslation, 9);\n      }\n\n      attribute.value = new Float32Array(matrix);\n    } else {\n      let i = startRow * attribute.size;\n      const {\n        iterable,\n        objectInfo\n      } = createIterable(data, startRow, endRow);\n\n      for (const object of iterable) {\n        objectInfo.index++;\n        let matrix;\n\n        if (hasMatrix) {\n          modelMatrix.set(constantMatrix ? getTransformMatrix : getTransformMatrix(object, objectInfo));\n          matrix = getExtendedMat3FromMat4(modelMatrix);\n        } else {\n          matrix = valueArray;\n          const orientation = constantOrientation ? getOrientation : getOrientation(object, objectInfo);\n          const scale = constantScale ? getScale : getScale(object, objectInfo);\n          calculateTransformMatrix(matrix, orientation, scale);\n          matrix.set(constantTranslation ? getTranslation : getTranslation(object, objectInfo), 9);\n        }\n\n        instanceModelMatrixData[i++] = matrix[0];\n        instanceModelMatrixData[i++] = matrix[1];\n        instanceModelMatrixData[i++] = matrix[2];\n        instanceModelMatrixData[i++] = matrix[3];\n        instanceModelMatrixData[i++] = matrix[4];\n        instanceModelMatrixData[i++] = matrix[5];\n        instanceModelMatrixData[i++] = matrix[6];\n        instanceModelMatrixData[i++] = matrix[7];\n        instanceModelMatrixData[i++] = matrix[8];\n        instanceModelMatrixData[i++] = matrix[9];\n        instanceModelMatrixData[i++] = matrix[10];\n        instanceModelMatrixData[i++] = matrix[11];\n      }\n    }\n  }\n\n};\nexport function shouldComposeModelMatrix(viewport, coordinateSystem) {\n  return coordinateSystem === COORDINATE_SYSTEM.CARTESIAN || coordinateSystem === COORDINATE_SYSTEM.METER_OFFSETS || coordinateSystem === COORDINATE_SYSTEM.DEFAULT && !viewport.isGeospatial;\n}\n//# sourceMappingURL=matrix.js.map","import { useEffect, useLayoutEffect } from 'react';\nconst useIsomorphicLayoutEffect = typeof window !== 'undefined' ? useLayoutEffect : useEffect;\nexport default useIsomorphicLayoutEffect;\n//# sourceMappingURL=use-isomorphic-layout-effect.js.map","export function inheritsFrom(Type, ParentType) {\n  while (Type) {\n    if (Type === ParentType) {\n      return true;\n    }\n\n    Type = Object.getPrototypeOf(Type);\n  }\n\n  return false;\n}\n//# sourceMappingURL=inherits-from.js.map","import { cloneElement } from 'react';\nconst MAP_STYLE = {\n  position: 'absolute',\n  zIndex: -1\n};\nexport default function evaluateChildren(children, childProps) {\n  if (typeof children === 'function') {\n    return children(childProps);\n  }\n\n  if (Array.isArray(children)) {\n    return children.map(child => evaluateChildren(child, childProps));\n  }\n\n  if (isComponent(children)) {\n    if (isReactMap(children)) {\n      childProps.style = MAP_STYLE;\n      return cloneElement(children, childProps);\n    }\n\n    if (needsDeckGLViewProps(children)) {\n      return cloneElement(children, childProps);\n    }\n  }\n\n  return children;\n}\nexport function isComponent(child) {\n  return child && typeof child === 'object' && 'type' in child || false;\n}\n\nfunction isReactMap(child) {\n  var _child$props;\n\n  return (_child$props = child.props) === null || _child$props === void 0 ? void 0 : _child$props.mapStyle;\n}\n\nfunction needsDeckGLViewProps(child) {\n  const componentClass = child.type;\n  return componentClass && componentClass.deckGLViewProps;\n}\n//# sourceMappingURL=evaluate-children.js.map","import * as React from 'react';\nimport { createElement } from 'react';\nimport { inheritsFrom } from './inherits-from';\nimport { Layer, View } from '@deck.gl/core';\nimport { isComponent } from './evaluate-children';\n\nfunction wrapInView(node) {\n  if (typeof node === 'function') {\n    return createElement(View, {}, node);\n  }\n\n  if (Array.isArray(node)) {\n    return node.map(wrapInView);\n  }\n\n  if (isComponent(node)) {\n    if (node.type === React.Fragment) {\n      return wrapInView(node.props.children);\n    }\n\n    if (inheritsFrom(node.type, View)) {\n      return node;\n    }\n  }\n\n  return node;\n}\n\nexport default function extractJSXLayers({\n  children,\n  layers = [],\n  views = null\n}) {\n  const reactChildren = [];\n  const jsxLayers = [];\n  const jsxViews = {};\n  React.Children.forEach(wrapInView(children), reactElement => {\n    if (isComponent(reactElement)) {\n      const ElementType = reactElement.type;\n\n      if (inheritsFrom(ElementType, Layer)) {\n        const layer = createLayer(ElementType, reactElement.props);\n        jsxLayers.push(layer);\n      } else {\n        reactChildren.push(reactElement);\n      }\n\n      if (inheritsFrom(ElementType, View) && ElementType !== View && reactElement.props.id) {\n        const view = new ElementType(reactElement.props);\n        jsxViews[view.id] = view;\n      }\n    } else if (reactElement) {\n      reactChildren.push(reactElement);\n    }\n  });\n\n  if (Object.keys(jsxViews).length > 0) {\n    if (Array.isArray(views)) {\n      views.forEach(view => {\n        jsxViews[view.id] = view;\n      });\n    } else if (views) {\n      jsxViews[views.id] = views;\n    }\n\n    views = Object.values(jsxViews);\n  }\n\n  layers = jsxLayers.length > 0 ? [...jsxLayers, ...layers] : layers;\n  return {\n    layers,\n    children: reactChildren,\n    views\n  };\n}\n\nfunction createLayer(LayerType, reactProps) {\n  const props = {};\n  const defaultProps = LayerType.defaultProps || {};\n\n  for (const key in reactProps) {\n    if (defaultProps[key] !== reactProps[key]) {\n      props[key] = reactProps[key];\n    }\n  }\n\n  return new LayerType(props);\n}\n//# sourceMappingURL=extract-jsx-layers.js.map","const CANVAS_ONLY_STYLES = {\n  mixBlendMode: null\n};\nexport default function extractStyles({\n  width,\n  height,\n  style\n}) {\n  const containerStyle = {\n    position: 'absolute',\n    zIndex: 0,\n    left: 0,\n    top: 0,\n    width,\n    height\n  };\n  const canvasStyle = {\n    left: 0,\n    top: 0\n  };\n\n  if (style) {\n    for (const key in style) {\n      if (key in CANVAS_ONLY_STYLES) {\n        canvasStyle[key] = style[key];\n      } else {\n        containerStyle[key] = style[key];\n      }\n    }\n  }\n\n  return {\n    containerStyle,\n    canvasStyle\n  };\n}\n//# sourceMappingURL=extract-styles.js.map","import { createElement, useRef, useState, useMemo, useEffect, useImperativeHandle, forwardRef } from 'react';\nimport { Deck } from '@deck.gl/core';\nimport useIsomorphicLayoutEffect from './utils/use-isomorphic-layout-effect';\nimport extractJSXLayers from './utils/extract-jsx-layers';\nimport positionChildrenUnderViews from './utils/position-children-under-views';\nimport extractStyles from './utils/extract-styles';\n\nfunction getRefHandles(thisRef) {\n  return {\n    get deck() {\n      return thisRef.deck;\n    },\n\n    pickObject: opts => thisRef.deck.pickObject(opts),\n    pickMultipleObjects: opts => thisRef.deck.pickMultipleObjects(opts),\n    pickObjects: opts => thisRef.deck.pickObjects(opts)\n  };\n}\n\nfunction redrawDeck(thisRef) {\n  if (thisRef.redrawReason) {\n    thisRef.deck._drawLayers(thisRef.redrawReason);\n\n    thisRef.redrawReason = null;\n  }\n}\n\nfunction createDeckInstance(thisRef, DeckClass, props) {\n  const deck = new DeckClass({ ...props,\n    _customRender: redrawReason => {\n      thisRef.redrawReason = redrawReason;\n      const viewports = deck.getViewports();\n\n      if (thisRef.lastRenderedViewports !== viewports) {\n        thisRef.forceUpdate();\n      } else {\n        redrawDeck(thisRef);\n      }\n    }\n  });\n  return deck;\n}\n\nconst DeckGL = forwardRef((props, ref) => {\n  const [version, setVersion] = useState(0);\n\n  const _thisRef = useRef({\n    control: null,\n    version,\n    forceUpdate: () => setVersion(v => v + 1)\n  });\n\n  const thisRef = _thisRef.current;\n  const containerRef = useRef(null);\n  const canvasRef = useRef(null);\n  const jsxProps = useMemo(() => extractJSXLayers(props), [props.layers, props.views, props.children]);\n  let inRender = true;\n\n  const handleViewStateChange = params => {\n    var _props$onViewStateCha;\n\n    if (inRender && props.viewState) {\n      thisRef.viewStateUpdateRequested = params;\n      return null;\n    }\n\n    thisRef.viewStateUpdateRequested = null;\n    return (_props$onViewStateCha = props.onViewStateChange) === null || _props$onViewStateCha === void 0 ? void 0 : _props$onViewStateCha.call(props, params);\n  };\n\n  const handleInteractionStateChange = params => {\n    if (inRender) {\n      thisRef.interactionStateUpdateRequested = params;\n    } else {\n      var _props$onInteractionS;\n\n      thisRef.interactionStateUpdateRequested = null;\n      (_props$onInteractionS = props.onInteractionStateChange) === null || _props$onInteractionS === void 0 ? void 0 : _props$onInteractionS.call(props, params);\n    }\n  };\n\n  const deckProps = useMemo(() => {\n    const forwardProps = { ...props,\n      style: null,\n      width: '100%',\n      height: '100%',\n      parent: containerRef.current,\n      canvas: canvasRef.current,\n      layers: jsxProps.layers,\n      views: jsxProps.views,\n      onViewStateChange: handleViewStateChange,\n      onInteractionStateChange: handleInteractionStateChange\n    };\n    delete forwardProps._customRender;\n\n    if (thisRef.deck) {\n      thisRef.deck.setProps(forwardProps);\n    }\n\n    return forwardProps;\n  }, [props]);\n  useEffect(() => {\n    const DeckClass = props.Deck || Deck;\n    thisRef.deck = createDeckInstance(thisRef, DeckClass, { ...deckProps,\n      parent: containerRef.current,\n      canvas: canvasRef.current\n    });\n    return () => {\n      var _thisRef$deck;\n\n      return (_thisRef$deck = thisRef.deck) === null || _thisRef$deck === void 0 ? void 0 : _thisRef$deck.finalize();\n    };\n  }, []);\n  useIsomorphicLayoutEffect(() => {\n    redrawDeck(thisRef);\n    const {\n      viewStateUpdateRequested,\n      interactionStateUpdateRequested\n    } = thisRef;\n\n    if (viewStateUpdateRequested) {\n      handleViewStateChange(viewStateUpdateRequested);\n    }\n\n    if (interactionStateUpdateRequested) {\n      handleInteractionStateChange(interactionStateUpdateRequested);\n    }\n  });\n  useImperativeHandle(ref, () => getRefHandles(thisRef), []);\n  const currentViewports = thisRef.deck && thisRef.deck.isInitialized ? thisRef.deck.getViewports() : undefined;\n  const {\n    ContextProvider,\n    width,\n    height,\n    id,\n    style\n  } = props;\n  const {\n    containerStyle,\n    canvasStyle\n  } = useMemo(() => extractStyles({\n    width,\n    height,\n    style\n  }), [width, height, style]);\n\n  if (!thisRef.viewStateUpdateRequested && thisRef.lastRenderedViewports === currentViewports || thisRef.version !== version) {\n    thisRef.lastRenderedViewports = currentViewports;\n    thisRef.version = version;\n    const childrenUnderViews = positionChildrenUnderViews({\n      children: jsxProps.children,\n      deck: thisRef.deck,\n      ContextProvider\n    });\n    const canvas = createElement('canvas', {\n      key: 'canvas',\n      id: id || 'deckgl-overlay',\n      ref: canvasRef,\n      style: canvasStyle\n    });\n    thisRef.control = createElement('div', {\n      id: \"\".concat(id || 'deckgl', \"-wrapper\"),\n      ref: containerRef,\n      style: containerStyle\n    }, [canvas, childrenUnderViews]);\n  }\n\n  inRender = false;\n  return thisRef.control;\n});\nDeckGL.defaultProps = Deck.defaultProps;\nexport default DeckGL;\n//# sourceMappingURL=deckgl.js.map","import { createElement } from 'react';\nimport { View } from '@deck.gl/core';\nimport { inheritsFrom } from './inherits-from';\nimport evaluateChildren, { isComponent } from './evaluate-children';\nexport default function positionChildrenUnderViews({\n  children,\n  deck,\n  ContextProvider\n}) {\n  const {\n    viewManager\n  } = deck || {};\n\n  if (!viewManager || !viewManager.views.length) {\n    return [];\n  }\n\n  const views = {};\n  const defaultViewId = viewManager.views[0].id;\n\n  for (const child of children) {\n    let viewId = defaultViewId;\n    let viewChildren = child;\n\n    if (isComponent(child) && inheritsFrom(child.type, View)) {\n      viewId = child.props.id || defaultViewId;\n      viewChildren = child.props.children;\n    }\n\n    const viewport = viewManager.getViewport(viewId);\n    const viewState = viewManager.getViewState(viewId);\n\n    if (viewport) {\n      viewState.padding = viewport.padding;\n      const {\n        x,\n        y,\n        width,\n        height\n      } = viewport;\n      viewChildren = evaluateChildren(viewChildren, {\n        x,\n        y,\n        width,\n        height,\n        viewport,\n        viewState\n      });\n\n      if (!views[viewId]) {\n        views[viewId] = {\n          viewport,\n          children: []\n        };\n      }\n\n      views[viewId].children.push(viewChildren);\n    }\n  }\n\n  return Object.keys(views).map(viewId => {\n    const {\n      viewport,\n      children: viewChildren\n    } = views[viewId];\n    const {\n      x,\n      y,\n      width,\n      height\n    } = viewport;\n    const style = {\n      position: 'absolute',\n      left: x,\n      top: y,\n      width,\n      height\n    };\n    const key = \"view-\".concat(viewId);\n    const viewElement = createElement('div', {\n      key,\n      id: key,\n      style\n    }, ...viewChildren);\n\n    if (ContextProvider) {\n      const contextValue = {\n        viewport,\n        container: deck.canvas.offsetParent,\n        eventManager: deck.eventManager,\n        onViewStateChange: params => {\n          params.viewId = viewId;\n\n          deck._onViewStateChange(params);\n        }\n      };\n      return createElement(ContextProvider, {\n        key,\n        value: contextValue\n      }, viewElement);\n    }\n\n    return viewElement;\n  });\n}\n//# sourceMappingURL=position-children-under-views.js.map","/*\n\nBased off glamor's StyleSheet, thanks Sunil ❤️\n\nhigh performance StyleSheet for css-in-js systems\n\n- uses multiple style tags behind the scenes for millions of rules\n- uses `insertRule` for appending in production for *much* faster performance\n\n// usage\n\nimport { StyleSheet } from '@emotion/sheet'\n\nlet styleSheet = new StyleSheet({ key: '', container: document.head })\n\nstyleSheet.insert('#box { border: 1px solid red; }')\n- appends a css rule into the stylesheet\n\nstyleSheet.flush()\n- empties the stylesheet of all its contents\n\n*/\n// $FlowFixMe\nfunction sheetForTag(tag) {\n  if (tag.sheet) {\n    // $FlowFixMe\n    return tag.sheet;\n  } // this weirdness brought to you by firefox\n\n  /* istanbul ignore next */\n\n\n  for (var i = 0; i < document.styleSheets.length; i++) {\n    if (document.styleSheets[i].ownerNode === tag) {\n      // $FlowFixMe\n      return document.styleSheets[i];\n    }\n  }\n}\n\nfunction createStyleElement(options) {\n  var tag = document.createElement('style');\n  tag.setAttribute('data-emotion', options.key);\n\n  if (options.nonce !== undefined) {\n    tag.setAttribute('nonce', options.nonce);\n  }\n\n  tag.appendChild(document.createTextNode(''));\n  tag.setAttribute('data-s', '');\n  return tag;\n}\n\nvar StyleSheet = /*#__PURE__*/function () {\n  // Using Node instead of HTMLElement since container may be a ShadowRoot\n  function StyleSheet(options) {\n    var _this = this;\n\n    this._insertTag = function (tag) {\n      var before;\n\n      if (_this.tags.length === 0) {\n        if (_this.insertionPoint) {\n          before = _this.insertionPoint.nextSibling;\n        } else if (_this.prepend) {\n          before = _this.container.firstChild;\n        } else {\n          before = _this.before;\n        }\n      } else {\n        before = _this.tags[_this.tags.length - 1].nextSibling;\n      }\n\n      _this.container.insertBefore(tag, before);\n\n      _this.tags.push(tag);\n    };\n\n    this.isSpeedy = options.speedy === undefined ? process.env.NODE_ENV === 'production' : options.speedy;\n    this.tags = [];\n    this.ctr = 0;\n    this.nonce = options.nonce; // key is the value of the data-emotion attribute, it's used to identify different sheets\n\n    this.key = options.key;\n    this.container = options.container;\n    this.prepend = options.prepend;\n    this.insertionPoint = options.insertionPoint;\n    this.before = null;\n  }\n\n  var _proto = StyleSheet.prototype;\n\n  _proto.hydrate = function hydrate(nodes) {\n    nodes.forEach(this._insertTag);\n  };\n\n  _proto.insert = function insert(rule) {\n    // the max length is how many rules we have per style tag, it's 65000 in speedy mode\n    // it's 1 in dev because we insert source maps that map a single rule to a location\n    // and you can only have one source map per style tag\n    if (this.ctr % (this.isSpeedy ? 65000 : 1) === 0) {\n      this._insertTag(createStyleElement(this));\n    }\n\n    var tag = this.tags[this.tags.length - 1];\n\n    if (process.env.NODE_ENV !== 'production') {\n      var isImportRule = rule.charCodeAt(0) === 64 && rule.charCodeAt(1) === 105;\n\n      if (isImportRule && this._alreadyInsertedOrderInsensitiveRule) {\n        // this would only cause problem in speedy mode\n        // but we don't want enabling speedy to affect the observable behavior\n        // so we report this error at all times\n        console.error(\"You're attempting to insert the following rule:\\n\" + rule + '\\n\\n`@import` rules must be before all other types of rules in a stylesheet but other rules have already been inserted. Please ensure that `@import` rules are before all other rules.');\n      }\n      this._alreadyInsertedOrderInsensitiveRule = this._alreadyInsertedOrderInsensitiveRule || !isImportRule;\n    }\n\n    if (this.isSpeedy) {\n      var sheet = sheetForTag(tag);\n\n      try {\n        // this is the ultrafast version, works across browsers\n        // the big drawback is that the css won't be editable in devtools\n        sheet.insertRule(rule, sheet.cssRules.length);\n      } catch (e) {\n        if (process.env.NODE_ENV !== 'production' && !/:(-moz-placeholder|-moz-focus-inner|-moz-focusring|-ms-input-placeholder|-moz-read-write|-moz-read-only|-ms-clear|-ms-expand|-ms-reveal){/.test(rule)) {\n          console.error(\"There was a problem inserting the following rule: \\\"\" + rule + \"\\\"\", e);\n        }\n      }\n    } else {\n      tag.appendChild(document.createTextNode(rule));\n    }\n\n    this.ctr++;\n  };\n\n  _proto.flush = function flush() {\n    // $FlowFixMe\n    this.tags.forEach(function (tag) {\n      return tag.parentNode && tag.parentNode.removeChild(tag);\n    });\n    this.tags = [];\n    this.ctr = 0;\n\n    if (process.env.NODE_ENV !== 'production') {\n      this._alreadyInsertedOrderInsensitiveRule = false;\n    }\n  };\n\n  return StyleSheet;\n}();\n\nexport { StyleSheet };\n","/**\n * @param {number}\n * @return {number}\n */\nexport var abs = Math.abs\n\n/**\n * @param {number}\n * @return {string}\n */\nexport var from = String.fromCharCode\n\n/**\n * @param {object}\n * @return {object}\n */\nexport var assign = Object.assign\n\n/**\n * @param {string} value\n * @param {number} length\n * @return {number}\n */\nexport function hash (value, length) {\n\treturn charat(value, 0) ^ 45 ? (((((((length << 2) ^ charat(value, 0)) << 2) ^ charat(value, 1)) << 2) ^ charat(value, 2)) << 2) ^ charat(value, 3) : 0\n}\n\n/**\n * @param {string} value\n * @return {string}\n */\nexport function trim (value) {\n\treturn value.trim()\n}\n\n/**\n * @param {string} value\n * @param {RegExp} pattern\n * @return {string?}\n */\nexport function match (value, pattern) {\n\treturn (value = pattern.exec(value)) ? value[0] : value\n}\n\n/**\n * @param {string} value\n * @param {(string|RegExp)} pattern\n * @param {string} replacement\n * @return {string}\n */\nexport function replace (value, pattern, replacement) {\n\treturn value.replace(pattern, replacement)\n}\n\n/**\n * @param {string} value\n * @param {string} search\n * @return {number}\n */\nexport function indexof (value, search) {\n\treturn value.indexOf(search)\n}\n\n/**\n * @param {string} value\n * @param {number} index\n * @return {number}\n */\nexport function charat (value, index) {\n\treturn value.charCodeAt(index) | 0\n}\n\n/**\n * @param {string} value\n * @param {number} begin\n * @param {number} end\n * @return {string}\n */\nexport function substr (value, begin, end) {\n\treturn value.slice(begin, end)\n}\n\n/**\n * @param {string} value\n * @return {number}\n */\nexport function strlen (value) {\n\treturn value.length\n}\n\n/**\n * @param {any[]} value\n * @return {number}\n */\nexport function sizeof (value) {\n\treturn value.length\n}\n\n/**\n * @param {any} value\n * @param {any[]} array\n * @return {any}\n */\nexport function append (value, array) {\n\treturn array.push(value), value\n}\n\n/**\n * @param {string[]} array\n * @param {function} callback\n * @return {string}\n */\nexport function combine (array, callback) {\n\treturn array.map(callback).join('')\n}\n","import {from, trim, charat, strlen, substr, append, assign} from './Utility.js'\n\nexport var line = 1\nexport var column = 1\nexport var length = 0\nexport var position = 0\nexport var character = 0\nexport var characters = ''\n\n/**\n * @param {string} value\n * @param {object | null} root\n * @param {object | null} parent\n * @param {string} type\n * @param {string[] | string} props\n * @param {object[] | string} children\n * @param {number} length\n */\nexport function node (value, root, parent, type, props, children, length) {\n\treturn {value: value, root: root, parent: parent, type: type, props: props, children: children, line: line, column: column, length: length, return: ''}\n}\n\n/**\n * @param {object} root\n * @param {object} props\n * @return {object}\n */\nexport function copy (root, props) {\n\treturn assign(node('', null, null, '', null, null, 0), root, {length: -root.length}, props)\n}\n\n/**\n * @return {number}\n */\nexport function char () {\n\treturn character\n}\n\n/**\n * @return {number}\n */\nexport function prev () {\n\tcharacter = position > 0 ? charat(characters, --position) : 0\n\n\tif (column--, character === 10)\n\t\tcolumn = 1, line--\n\n\treturn character\n}\n\n/**\n * @return {number}\n */\nexport function next () {\n\tcharacter = position < length ? charat(characters, position++) : 0\n\n\tif (column++, character === 10)\n\t\tcolumn = 1, line++\n\n\treturn character\n}\n\n/**\n * @return {number}\n */\nexport function peek () {\n\treturn charat(characters, position)\n}\n\n/**\n * @return {number}\n */\nexport function caret () {\n\treturn position\n}\n\n/**\n * @param {number} begin\n * @param {number} end\n * @return {string}\n */\nexport function slice (begin, end) {\n\treturn substr(characters, begin, end)\n}\n\n/**\n * @param {number} type\n * @return {number}\n */\nexport function token (type) {\n\tswitch (type) {\n\t\t// \\0 \\t \\n \\r \\s whitespace token\n\t\tcase 0: case 9: case 10: case 13: case 32:\n\t\t\treturn 5\n\t\t// ! + , / > @ ~ isolate token\n\t\tcase 33: case 43: case 44: case 47: case 62: case 64: case 126:\n\t\t// ; { } breakpoint token\n\t\tcase 59: case 123: case 125:\n\t\t\treturn 4\n\t\t// : accompanied token\n\t\tcase 58:\n\t\t\treturn 3\n\t\t// \" ' ( [ opening delimit token\n\t\tcase 34: case 39: case 40: case 91:\n\t\t\treturn 2\n\t\t// ) ] closing delimit token\n\t\tcase 41: case 93:\n\t\t\treturn 1\n\t}\n\n\treturn 0\n}\n\n/**\n * @param {string} value\n * @return {any[]}\n */\nexport function alloc (value) {\n\treturn line = column = 1, length = strlen(characters = value), position = 0, []\n}\n\n/**\n * @param {any} value\n * @return {any}\n */\nexport function dealloc (value) {\n\treturn characters = '', value\n}\n\n/**\n * @param {number} type\n * @return {string}\n */\nexport function delimit (type) {\n\treturn trim(slice(position - 1, delimiter(type === 91 ? type + 2 : type === 40 ? type + 1 : type)))\n}\n\n/**\n * @param {string} value\n * @return {string[]}\n */\nexport function tokenize (value) {\n\treturn dealloc(tokenizer(alloc(value)))\n}\n\n/**\n * @param {number} type\n * @return {string}\n */\nexport function whitespace (type) {\n\twhile (character = peek())\n\t\tif (character < 33)\n\t\t\tnext()\n\t\telse\n\t\t\tbreak\n\n\treturn token(type) > 2 || token(character) > 3 ? '' : ' '\n}\n\n/**\n * @param {string[]} children\n * @return {string[]}\n */\nexport function tokenizer (children) {\n\twhile (next())\n\t\tswitch (token(character)) {\n\t\t\tcase 0: append(identifier(position - 1), children)\n\t\t\t\tbreak\n\t\t\tcase 2: append(delimit(character), children)\n\t\t\t\tbreak\n\t\t\tdefault: append(from(character), children)\n\t\t}\n\n\treturn children\n}\n\n/**\n * @param {number} index\n * @param {number} count\n * @return {string}\n */\nexport function escaping (index, count) {\n\twhile (--count && next())\n\t\t// not 0-9 A-F a-f\n\t\tif (character < 48 || character > 102 || (character > 57 && character < 65) || (character > 70 && character < 97))\n\t\t\tbreak\n\n\treturn slice(index, caret() + (count < 6 && peek() == 32 && next() == 32))\n}\n\n/**\n * @param {number} type\n * @return {number}\n */\nexport function delimiter (type) {\n\twhile (next())\n\t\tswitch (character) {\n\t\t\t// ] ) \" '\n\t\t\tcase type:\n\t\t\t\treturn position\n\t\t\t// \" '\n\t\t\tcase 34: case 39:\n\t\t\t\tif (type !== 34 && type !== 39)\n\t\t\t\t\tdelimiter(character)\n\t\t\t\tbreak\n\t\t\t// (\n\t\t\tcase 40:\n\t\t\t\tif (type === 41)\n\t\t\t\t\tdelimiter(type)\n\t\t\t\tbreak\n\t\t\t// \\\n\t\t\tcase 92:\n\t\t\t\tnext()\n\t\t\t\tbreak\n\t\t}\n\n\treturn position\n}\n\n/**\n * @param {number} type\n * @param {number} index\n * @return {number}\n */\nexport function commenter (type, index) {\n\twhile (next())\n\t\t// //\n\t\tif (type + character === 47 + 10)\n\t\t\tbreak\n\t\t// /*\n\t\telse if (type + character === 42 + 42 && peek() === 47)\n\t\t\tbreak\n\n\treturn '/*' + slice(index, position - 1) + '*' + from(type === 47 ? type : next())\n}\n\n/**\n * @param {number} index\n * @return {string}\n */\nexport function identifier (index) {\n\twhile (!token(peek()))\n\t\tnext()\n\n\treturn slice(index, position)\n}\n","export var MS = '-ms-'\nexport var MOZ = '-moz-'\nexport var WEBKIT = '-webkit-'\n\nexport var COMMENT = 'comm'\nexport var RULESET = 'rule'\nexport var DECLARATION = 'decl'\n\nexport var PAGE = '@page'\nexport var MEDIA = '@media'\nexport var IMPORT = '@import'\nexport var CHARSET = '@charset'\nexport var VIEWPORT = '@viewport'\nexport var SUPPORTS = '@supports'\nexport var DOCUMENT = '@document'\nexport var NAMESPACE = '@namespace'\nexport var KEYFRAMES = '@keyframes'\nexport var FONT_FACE = '@font-face'\nexport var COUNTER_STYLE = '@counter-style'\nexport var FONT_FEATURE_VALUES = '@font-feature-values'\nexport var LAYER = '@layer'\n","import {IMPORT, LAYER, COMMENT, RULESET, DECLARATION, KEYFRAMES} from './Enum.js'\nimport {strlen, sizeof} from './Utility.js'\n\n/**\n * @param {object[]} children\n * @param {function} callback\n * @return {string}\n */\nexport function serialize (children, callback) {\n\tvar output = ''\n\tvar length = sizeof(children)\n\n\tfor (var i = 0; i < length; i++)\n\t\toutput += callback(children[i], i, children, callback) || ''\n\n\treturn output\n}\n\n/**\n * @param {object} element\n * @param {number} index\n * @param {object[]} children\n * @param {function} callback\n * @return {string}\n */\nexport function stringify (element, index, children, callback) {\n\tswitch (element.type) {\n\t\tcase LAYER: if (element.children.length) break\n\t\tcase IMPORT: case DECLARATION: return element.return = element.return || element.value\n\t\tcase COMMENT: return ''\n\t\tcase KEYFRAMES: return element.return = element.value + '{' + serialize(element.children, callback) + '}'\n\t\tcase RULESET: element.value = element.props.join(',')\n\t}\n\n\treturn strlen(children = serialize(element.children, callback)) ? element.return = element.value + '{' + children + '}' : ''\n}\n","import {COMMENT, RULESET, DECLARATION} from './Enum.js'\nimport {abs, charat, trim, from, sizeof, strlen, substr, append, replace, indexof} from './Utility.js'\nimport {node, char, prev, next, peek, caret, alloc, dealloc, delimit, whitespace, escaping, identifier, commenter} from './Tokenizer.js'\n\n/**\n * @param {string} value\n * @return {object[]}\n */\nexport function compile (value) {\n\treturn dealloc(parse('', null, null, null, [''], value = alloc(value), 0, [0], value))\n}\n\n/**\n * @param {string} value\n * @param {object} root\n * @param {object?} parent\n * @param {string[]} rule\n * @param {string[]} rules\n * @param {string[]} rulesets\n * @param {number[]} pseudo\n * @param {number[]} points\n * @param {string[]} declarations\n * @return {object}\n */\nexport function parse (value, root, parent, rule, rules, rulesets, pseudo, points, declarations) {\n\tvar index = 0\n\tvar offset = 0\n\tvar length = pseudo\n\tvar atrule = 0\n\tvar property = 0\n\tvar previous = 0\n\tvar variable = 1\n\tvar scanning = 1\n\tvar ampersand = 1\n\tvar character = 0\n\tvar type = ''\n\tvar props = rules\n\tvar children = rulesets\n\tvar reference = rule\n\tvar characters = type\n\n\twhile (scanning)\n\t\tswitch (previous = character, character = next()) {\n\t\t\t// (\n\t\t\tcase 40:\n\t\t\t\tif (previous != 108 && charat(characters, length - 1) == 58) {\n\t\t\t\t\tif (indexof(characters += replace(delimit(character), '&', '&\\f'), '&\\f') != -1)\n\t\t\t\t\t\tampersand = -1\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t// \" ' [\n\t\t\tcase 34: case 39: case 91:\n\t\t\t\tcharacters += delimit(character)\n\t\t\t\tbreak\n\t\t\t// \\t \\n \\r \\s\n\t\t\tcase 9: case 10: case 13: case 32:\n\t\t\t\tcharacters += whitespace(previous)\n\t\t\t\tbreak\n\t\t\t// \\\n\t\t\tcase 92:\n\t\t\t\tcharacters += escaping(caret() - 1, 7)\n\t\t\t\tcontinue\n\t\t\t// /\n\t\t\tcase 47:\n\t\t\t\tswitch (peek()) {\n\t\t\t\t\tcase 42: case 47:\n\t\t\t\t\t\tappend(comment(commenter(next(), caret()), root, parent), declarations)\n\t\t\t\t\t\tbreak\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tcharacters += '/'\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\t// {\n\t\t\tcase 123 * variable:\n\t\t\t\tpoints[index++] = strlen(characters) * ampersand\n\t\t\t// } ; \\0\n\t\t\tcase 125 * variable: case 59: case 0:\n\t\t\t\tswitch (character) {\n\t\t\t\t\t// \\0 }\n\t\t\t\t\tcase 0: case 125: scanning = 0\n\t\t\t\t\t// ;\n\t\t\t\t\tcase 59 + offset: if (ampersand == -1) characters = replace(characters, /\\f/g, '')\n\t\t\t\t\t\tif (property > 0 && (strlen(characters) - length))\n\t\t\t\t\t\t\tappend(property > 32 ? declaration(characters + ';', rule, parent, length - 1) : declaration(replace(characters, ' ', '') + ';', rule, parent, length - 2), declarations)\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// @ ;\n\t\t\t\t\tcase 59: characters += ';'\n\t\t\t\t\t// { rule/at-rule\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tappend(reference = ruleset(characters, root, parent, index, offset, rules, points, type, props = [], children = [], length), rulesets)\n\n\t\t\t\t\t\tif (character === 123)\n\t\t\t\t\t\t\tif (offset === 0)\n\t\t\t\t\t\t\t\tparse(characters, root, reference, reference, props, rulesets, length, points, children)\n\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t\tswitch (atrule === 99 && charat(characters, 3) === 110 ? 100 : atrule) {\n\t\t\t\t\t\t\t\t\t// d l m s\n\t\t\t\t\t\t\t\t\tcase 100: case 108: case 109: case 115:\n\t\t\t\t\t\t\t\t\t\tparse(value, reference, reference, rule && append(ruleset(value, reference, reference, 0, 0, rules, points, type, rules, props = [], length), children), rules, children, length, points, rule ? props : children)\n\t\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\t\t\tparse(characters, reference, reference, reference, [''], children, 0, points, children)\n\t\t\t\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tindex = offset = property = 0, variable = ampersand = 1, type = characters = '', length = pseudo\n\t\t\t\tbreak\n\t\t\t// :\n\t\t\tcase 58:\n\t\t\t\tlength = 1 + strlen(characters), property = previous\n\t\t\tdefault:\n\t\t\t\tif (variable < 1)\n\t\t\t\t\tif (character == 123)\n\t\t\t\t\t\t--variable\n\t\t\t\t\telse if (character == 125 && variable++ == 0 && prev() == 125)\n\t\t\t\t\t\tcontinue\n\n\t\t\t\tswitch (characters += from(character), character * variable) {\n\t\t\t\t\t// &\n\t\t\t\t\tcase 38:\n\t\t\t\t\t\tampersand = offset > 0 ? 1 : (characters += '\\f', -1)\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// ,\n\t\t\t\t\tcase 44:\n\t\t\t\t\t\tpoints[index++] = (strlen(characters) - 1) * ampersand, ampersand = 1\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// @\n\t\t\t\t\tcase 64:\n\t\t\t\t\t\t// -\n\t\t\t\t\t\tif (peek() === 45)\n\t\t\t\t\t\t\tcharacters += delimit(next())\n\n\t\t\t\t\t\tatrule = peek(), offset = length = strlen(type = characters += identifier(caret())), character++\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// -\n\t\t\t\t\tcase 45:\n\t\t\t\t\t\tif (previous === 45 && strlen(characters) == 2)\n\t\t\t\t\t\t\tvariable = 0\n\t\t\t\t}\n\t\t}\n\n\treturn rulesets\n}\n\n/**\n * @param {string} value\n * @param {object} root\n * @param {object?} parent\n * @param {number} index\n * @param {number} offset\n * @param {string[]} rules\n * @param {number[]} points\n * @param {string} type\n * @param {string[]} props\n * @param {string[]} children\n * @param {number} length\n * @return {object}\n */\nexport function ruleset (value, root, parent, index, offset, rules, points, type, props, children, length) {\n\tvar post = offset - 1\n\tvar rule = offset === 0 ? rules : ['']\n\tvar size = sizeof(rule)\n\n\tfor (var i = 0, j = 0, k = 0; i < index; ++i)\n\t\tfor (var x = 0, y = substr(value, post + 1, post = abs(j = points[i])), z = value; x < size; ++x)\n\t\t\tif (z = trim(j > 0 ? rule[x] + ' ' + y : replace(y, /&\\f/g, rule[x])))\n\t\t\t\tprops[k++] = z\n\n\treturn node(value, root, parent, offset === 0 ? RULESET : type, props, children, length)\n}\n\n/**\n * @param {number} value\n * @param {object} root\n * @param {object?} parent\n * @return {object}\n */\nexport function comment (value, root, parent) {\n\treturn node(value, root, parent, COMMENT, from(char()), substr(value, 2, -2), 0)\n}\n\n/**\n * @param {string} value\n * @param {object} root\n * @param {object?} parent\n * @param {number} length\n * @return {object}\n */\nexport function declaration (value, root, parent, length) {\n\treturn node(value, root, parent, DECLARATION, substr(value, 0, length), substr(value, length + 1, -1), length)\n}\n","import { StyleSheet } from '@emotion/sheet';\nimport { dealloc, alloc, next, token, from, peek, delimit, slice, position, RULESET, combine, match, serialize, copy, replace, WEBKIT, MOZ, MS, KEYFRAMES, DECLARATION, hash, charat, strlen, indexof, stringify, COMMENT, rulesheet, middleware, compile } from 'stylis';\nimport '@emotion/weak-memoize';\nimport '@emotion/memoize';\n\nvar identifierWithPointTracking = function identifierWithPointTracking(begin, points, index) {\n  var previous = 0;\n  var character = 0;\n\n  while (true) {\n    previous = character;\n    character = peek(); // &\\f\n\n    if (previous === 38 && character === 12) {\n      points[index] = 1;\n    }\n\n    if (token(character)) {\n      break;\n    }\n\n    next();\n  }\n\n  return slice(begin, position);\n};\n\nvar toRules = function toRules(parsed, points) {\n  // pretend we've started with a comma\n  var index = -1;\n  var character = 44;\n\n  do {\n    switch (token(character)) {\n      case 0:\n        // &\\f\n        if (character === 38 && peek() === 12) {\n          // this is not 100% correct, we don't account for literal sequences here - like for example quoted strings\n          // stylis inserts \\f after & to know when & where it should replace this sequence with the context selector\n          // and when it should just concatenate the outer and inner selectors\n          // it's very unlikely for this sequence to actually appear in a different context, so we just leverage this fact here\n          points[index] = 1;\n        }\n\n        parsed[index] += identifierWithPointTracking(position - 1, points, index);\n        break;\n\n      case 2:\n        parsed[index] += delimit(character);\n        break;\n\n      case 4:\n        // comma\n        if (character === 44) {\n          // colon\n          parsed[++index] = peek() === 58 ? '&\\f' : '';\n          points[index] = parsed[index].length;\n          break;\n        }\n\n      // fallthrough\n\n      default:\n        parsed[index] += from(character);\n    }\n  } while (character = next());\n\n  return parsed;\n};\n\nvar getRules = function getRules(value, points) {\n  return dealloc(toRules(alloc(value), points));\n}; // WeakSet would be more appropriate, but only WeakMap is supported in IE11\n\n\nvar fixedElements = /* #__PURE__ */new WeakMap();\nvar compat = function compat(element) {\n  if (element.type !== 'rule' || !element.parent || // positive .length indicates that this rule contains pseudo\n  // negative .length indicates that this rule has been already prefixed\n  element.length < 1) {\n    return;\n  }\n\n  var value = element.value,\n      parent = element.parent;\n  var isImplicitRule = element.column === parent.column && element.line === parent.line;\n\n  while (parent.type !== 'rule') {\n    parent = parent.parent;\n    if (!parent) return;\n  } // short-circuit for the simplest case\n\n\n  if (element.props.length === 1 && value.charCodeAt(0) !== 58\n  /* colon */\n  && !fixedElements.get(parent)) {\n    return;\n  } // if this is an implicitly inserted rule (the one eagerly inserted at the each new nested level)\n  // then the props has already been manipulated beforehand as they that array is shared between it and its \"rule parent\"\n\n\n  if (isImplicitRule) {\n    return;\n  }\n\n  fixedElements.set(element, true);\n  var points = [];\n  var rules = getRules(value, points);\n  var parentRules = parent.props;\n\n  for (var i = 0, k = 0; i < rules.length; i++) {\n    for (var j = 0; j < parentRules.length; j++, k++) {\n      element.props[k] = points[i] ? rules[i].replace(/&\\f/g, parentRules[j]) : parentRules[j] + \" \" + rules[i];\n    }\n  }\n};\nvar removeLabel = function removeLabel(element) {\n  if (element.type === 'decl') {\n    var value = element.value;\n\n    if ( // charcode for l\n    value.charCodeAt(0) === 108 && // charcode for b\n    value.charCodeAt(2) === 98) {\n      // this ignores label\n      element[\"return\"] = '';\n      element.value = '';\n    }\n  }\n};\nvar ignoreFlag = 'emotion-disable-server-rendering-unsafe-selector-warning-please-do-not-use-this-the-warning-exists-for-a-reason';\n\nvar isIgnoringComment = function isIgnoringComment(element) {\n  return element.type === 'comm' && element.children.indexOf(ignoreFlag) > -1;\n};\n\nvar createUnsafeSelectorsAlarm = function createUnsafeSelectorsAlarm(cache) {\n  return function (element, index, children) {\n    if (element.type !== 'rule' || cache.compat) return;\n    var unsafePseudoClasses = element.value.match(/(:first|:nth|:nth-last)-child/g);\n\n    if (unsafePseudoClasses) {\n      var isNested = !!element.parent; // in nested rules comments become children of the \"auto-inserted\" rule and that's always the `element.parent`\n      //\n      // considering this input:\n      // .a {\n      //   .b /* comm */ {}\n      //   color: hotpink;\n      // }\n      // we get output corresponding to this:\n      // .a {\n      //   & {\n      //     /* comm */\n      //     color: hotpink;\n      //   }\n      //   .b {}\n      // }\n\n      var commentContainer = isNested ? element.parent.children : // global rule at the root level\n      children;\n\n      for (var i = commentContainer.length - 1; i >= 0; i--) {\n        var node = commentContainer[i];\n\n        if (node.line < element.line) {\n          break;\n        } // it is quite weird but comments are *usually* put at `column: element.column - 1`\n        // so we seek *from the end* for the node that is earlier than the rule's `element` and check that\n        // this will also match inputs like this:\n        // .a {\n        //   /* comm */\n        //   .b {}\n        // }\n        //\n        // but that is fine\n        //\n        // it would be the easiest to change the placement of the comment to be the first child of the rule:\n        // .a {\n        //   .b { /* comm */ }\n        // }\n        // with such inputs we wouldn't have to search for the comment at all\n        // TODO: consider changing this comment placement in the next major version\n\n\n        if (node.column < element.column) {\n          if (isIgnoringComment(node)) {\n            return;\n          }\n\n          break;\n        }\n      }\n\n      unsafePseudoClasses.forEach(function (unsafePseudoClass) {\n        console.error(\"The pseudo class \\\"\" + unsafePseudoClass + \"\\\" is potentially unsafe when doing server-side rendering. Try changing it to \\\"\" + unsafePseudoClass.split('-child')[0] + \"-of-type\\\".\");\n      });\n    }\n  };\n};\n\nvar isImportRule = function isImportRule(element) {\n  return element.type.charCodeAt(1) === 105 && element.type.charCodeAt(0) === 64;\n};\n\nvar isPrependedWithRegularRules = function isPrependedWithRegularRules(index, children) {\n  for (var i = index - 1; i >= 0; i--) {\n    if (!isImportRule(children[i])) {\n      return true;\n    }\n  }\n\n  return false;\n}; // use this to remove incorrect elements from further processing\n// so they don't get handed to the `sheet` (or anything else)\n// as that could potentially lead to additional logs which in turn could be overhelming to the user\n\n\nvar nullifyElement = function nullifyElement(element) {\n  element.type = '';\n  element.value = '';\n  element[\"return\"] = '';\n  element.children = '';\n  element.props = '';\n};\n\nvar incorrectImportAlarm = function incorrectImportAlarm(element, index, children) {\n  if (!isImportRule(element)) {\n    return;\n  }\n\n  if (element.parent) {\n    console.error(\"`@import` rules can't be nested inside other rules. Please move it to the top level and put it before regular rules. Keep in mind that they can only be used within global styles.\");\n    nullifyElement(element);\n  } else if (isPrependedWithRegularRules(index, children)) {\n    console.error(\"`@import` rules can't be after other rules. Please put your `@import` rules before your other rules.\");\n    nullifyElement(element);\n  }\n};\n\n/* eslint-disable no-fallthrough */\n\nfunction prefix(value, length) {\n  switch (hash(value, length)) {\n    // color-adjust\n    case 5103:\n      return WEBKIT + 'print-' + value + value;\n    // animation, animation-(delay|direction|duration|fill-mode|iteration-count|name|play-state|timing-function)\n\n    case 5737:\n    case 4201:\n    case 3177:\n    case 3433:\n    case 1641:\n    case 4457:\n    case 2921: // text-decoration, filter, clip-path, backface-visibility, column, box-decoration-break\n\n    case 5572:\n    case 6356:\n    case 5844:\n    case 3191:\n    case 6645:\n    case 3005: // mask, mask-image, mask-(mode|clip|size), mask-(repeat|origin), mask-position, mask-composite,\n\n    case 6391:\n    case 5879:\n    case 5623:\n    case 6135:\n    case 4599:\n    case 4855: // background-clip, columns, column-(count|fill|gap|rule|rule-color|rule-style|rule-width|span|width)\n\n    case 4215:\n    case 6389:\n    case 5109:\n    case 5365:\n    case 5621:\n    case 3829:\n      return WEBKIT + value + value;\n    // appearance, user-select, transform, hyphens, text-size-adjust\n\n    case 5349:\n    case 4246:\n    case 4810:\n    case 6968:\n    case 2756:\n      return WEBKIT + value + MOZ + value + MS + value + value;\n    // flex, flex-direction\n\n    case 6828:\n    case 4268:\n      return WEBKIT + value + MS + value + value;\n    // order\n\n    case 6165:\n      return WEBKIT + value + MS + 'flex-' + value + value;\n    // align-items\n\n    case 5187:\n      return WEBKIT + value + replace(value, /(\\w+).+(:[^]+)/, WEBKIT + 'box-$1$2' + MS + 'flex-$1$2') + value;\n    // align-self\n\n    case 5443:\n      return WEBKIT + value + MS + 'flex-item-' + replace(value, /flex-|-self/, '') + value;\n    // align-content\n\n    case 4675:\n      return WEBKIT + value + MS + 'flex-line-pack' + replace(value, /align-content|flex-|-self/, '') + value;\n    // flex-shrink\n\n    case 5548:\n      return WEBKIT + value + MS + replace(value, 'shrink', 'negative') + value;\n    // flex-basis\n\n    case 5292:\n      return WEBKIT + value + MS + replace(value, 'basis', 'preferred-size') + value;\n    // flex-grow\n\n    case 6060:\n      return WEBKIT + 'box-' + replace(value, '-grow', '') + WEBKIT + value + MS + replace(value, 'grow', 'positive') + value;\n    // transition\n\n    case 4554:\n      return WEBKIT + replace(value, /([^-])(transform)/g, '$1' + WEBKIT + '$2') + value;\n    // cursor\n\n    case 6187:\n      return replace(replace(replace(value, /(zoom-|grab)/, WEBKIT + '$1'), /(image-set)/, WEBKIT + '$1'), value, '') + value;\n    // background, background-image\n\n    case 5495:\n    case 3959:\n      return replace(value, /(image-set\\([^]*)/, WEBKIT + '$1' + '$`$1');\n    // justify-content\n\n    case 4968:\n      return replace(replace(value, /(.+:)(flex-)?(.*)/, WEBKIT + 'box-pack:$3' + MS + 'flex-pack:$3'), /s.+-b[^;]+/, 'justify') + WEBKIT + value + value;\n    // (margin|padding)-inline-(start|end)\n\n    case 4095:\n    case 3583:\n    case 4068:\n    case 2532:\n      return replace(value, /(.+)-inline(.+)/, WEBKIT + '$1$2') + value;\n    // (min|max)?(width|height|inline-size|block-size)\n\n    case 8116:\n    case 7059:\n    case 5753:\n    case 5535:\n    case 5445:\n    case 5701:\n    case 4933:\n    case 4677:\n    case 5533:\n    case 5789:\n    case 5021:\n    case 4765:\n      // stretch, max-content, min-content, fill-available\n      if (strlen(value) - 1 - length > 6) switch (charat(value, length + 1)) {\n        // (m)ax-content, (m)in-content\n        case 109:\n          // -\n          if (charat(value, length + 4) !== 45) break;\n        // (f)ill-available, (f)it-content\n\n        case 102:\n          return replace(value, /(.+:)(.+)-([^]+)/, '$1' + WEBKIT + '$2-$3' + '$1' + MOZ + (charat(value, length + 3) == 108 ? '$3' : '$2-$3')) + value;\n        // (s)tretch\n\n        case 115:\n          return ~indexof(value, 'stretch') ? prefix(replace(value, 'stretch', 'fill-available'), length) + value : value;\n      }\n      break;\n    // position: sticky\n\n    case 4949:\n      // (s)ticky?\n      if (charat(value, length + 1) !== 115) break;\n    // display: (flex|inline-flex)\n\n    case 6444:\n      switch (charat(value, strlen(value) - 3 - (~indexof(value, '!important') && 10))) {\n        // stic(k)y\n        case 107:\n          return replace(value, ':', ':' + WEBKIT) + value;\n        // (inline-)?fl(e)x\n\n        case 101:\n          return replace(value, /(.+:)([^;!]+)(;|!.+)?/, '$1' + WEBKIT + (charat(value, 14) === 45 ? 'inline-' : '') + 'box$3' + '$1' + WEBKIT + '$2$3' + '$1' + MS + '$2box$3') + value;\n      }\n\n      break;\n    // writing-mode\n\n    case 5936:\n      switch (charat(value, length + 11)) {\n        // vertical-l(r)\n        case 114:\n          return WEBKIT + value + MS + replace(value, /[svh]\\w+-[tblr]{2}/, 'tb') + value;\n        // vertical-r(l)\n\n        case 108:\n          return WEBKIT + value + MS + replace(value, /[svh]\\w+-[tblr]{2}/, 'tb-rl') + value;\n        // horizontal(-)tb\n\n        case 45:\n          return WEBKIT + value + MS + replace(value, /[svh]\\w+-[tblr]{2}/, 'lr') + value;\n      }\n\n      return WEBKIT + value + MS + value + value;\n  }\n\n  return value;\n}\n\nvar prefixer = function prefixer(element, index, children, callback) {\n  if (element.length > -1) if (!element[\"return\"]) switch (element.type) {\n    case DECLARATION:\n      element[\"return\"] = prefix(element.value, element.length);\n      break;\n\n    case KEYFRAMES:\n      return serialize([copy(element, {\n        value: replace(element.value, '@', '@' + WEBKIT)\n      })], callback);\n\n    case RULESET:\n      if (element.length) return combine(element.props, function (value) {\n        switch (match(value, /(::plac\\w+|:read-\\w+)/)) {\n          // :read-(only|write)\n          case ':read-only':\n          case ':read-write':\n            return serialize([copy(element, {\n              props: [replace(value, /:(read-\\w+)/, ':' + MOZ + '$1')]\n            })], callback);\n          // :placeholder\n\n          case '::placeholder':\n            return serialize([copy(element, {\n              props: [replace(value, /:(plac\\w+)/, ':' + WEBKIT + 'input-$1')]\n            }), copy(element, {\n              props: [replace(value, /:(plac\\w+)/, ':' + MOZ + '$1')]\n            }), copy(element, {\n              props: [replace(value, /:(plac\\w+)/, MS + 'input-$1')]\n            })], callback);\n        }\n\n        return '';\n      });\n  }\n};\n\nvar defaultStylisPlugins = [prefixer];\n\nvar createCache = function createCache(options) {\n  var key = options.key;\n\n  if (process.env.NODE_ENV !== 'production' && !key) {\n    throw new Error(\"You have to configure `key` for your cache. Please make sure it's unique (and not equal to 'css') as it's used for linking styles to your cache.\\n\" + \"If multiple caches share the same key they might \\\"fight\\\" for each other's style elements.\");\n  }\n\n  if (key === 'css') {\n    var ssrStyles = document.querySelectorAll(\"style[data-emotion]:not([data-s])\"); // get SSRed styles out of the way of React's hydration\n    // document.head is a safe place to move them to(though note document.head is not necessarily the last place they will be)\n    // note this very very intentionally targets all style elements regardless of the key to ensure\n    // that creating a cache works inside of render of a React component\n\n    Array.prototype.forEach.call(ssrStyles, function (node) {\n      // we want to only move elements which have a space in the data-emotion attribute value\n      // because that indicates that it is an Emotion 11 server-side rendered style elements\n      // while we will already ignore Emotion 11 client-side inserted styles because of the :not([data-s]) part in the selector\n      // Emotion 10 client-side inserted styles did not have data-s (but importantly did not have a space in their data-emotion attributes)\n      // so checking for the space ensures that loading Emotion 11 after Emotion 10 has inserted some styles\n      // will not result in the Emotion 10 styles being destroyed\n      var dataEmotionAttribute = node.getAttribute('data-emotion');\n\n      if (dataEmotionAttribute.indexOf(' ') === -1) {\n        return;\n      }\n      document.head.appendChild(node);\n      node.setAttribute('data-s', '');\n    });\n  }\n\n  var stylisPlugins = options.stylisPlugins || defaultStylisPlugins;\n\n  if (process.env.NODE_ENV !== 'production') {\n    // $FlowFixMe\n    if (/[^a-z-]/.test(key)) {\n      throw new Error(\"Emotion key must only contain lower case alphabetical characters and - but \\\"\" + key + \"\\\" was passed\");\n    }\n  }\n\n  var inserted = {};\n  var container;\n  var nodesToHydrate = [];\n\n  {\n    container = options.container || document.head;\n    Array.prototype.forEach.call( // this means we will ignore elements which don't have a space in them which\n    // means that the style elements we're looking at are only Emotion 11 server-rendered style elements\n    document.querySelectorAll(\"style[data-emotion^=\\\"\" + key + \" \\\"]\"), function (node) {\n      var attrib = node.getAttribute(\"data-emotion\").split(' '); // $FlowFixMe\n\n      for (var i = 1; i < attrib.length; i++) {\n        inserted[attrib[i]] = true;\n      }\n\n      nodesToHydrate.push(node);\n    });\n  }\n\n  var _insert;\n\n  var omnipresentPlugins = [compat, removeLabel];\n\n  if (process.env.NODE_ENV !== 'production') {\n    omnipresentPlugins.push(createUnsafeSelectorsAlarm({\n      get compat() {\n        return cache.compat;\n      }\n\n    }), incorrectImportAlarm);\n  }\n\n  {\n    var currentSheet;\n    var finalizingPlugins = [stringify, process.env.NODE_ENV !== 'production' ? function (element) {\n      if (!element.root) {\n        if (element[\"return\"]) {\n          currentSheet.insert(element[\"return\"]);\n        } else if (element.value && element.type !== COMMENT) {\n          // insert empty rule in non-production environments\n          // so @emotion/jest can grab `key` from the (JS)DOM for caches without any rules inserted yet\n          currentSheet.insert(element.value + \"{}\");\n        }\n      }\n    } : rulesheet(function (rule) {\n      currentSheet.insert(rule);\n    })];\n    var serializer = middleware(omnipresentPlugins.concat(stylisPlugins, finalizingPlugins));\n\n    var stylis = function stylis(styles) {\n      return serialize(compile(styles), serializer);\n    };\n\n    _insert = function insert(selector, serialized, sheet, shouldCache) {\n      currentSheet = sheet;\n\n      if (process.env.NODE_ENV !== 'production' && serialized.map !== undefined) {\n        currentSheet = {\n          insert: function insert(rule) {\n            sheet.insert(rule + serialized.map);\n          }\n        };\n      }\n\n      stylis(selector ? selector + \"{\" + serialized.styles + \"}\" : serialized.styles);\n\n      if (shouldCache) {\n        cache.inserted[serialized.name] = true;\n      }\n    };\n  }\n\n  var cache = {\n    key: key,\n    sheet: new StyleSheet({\n      key: key,\n      container: container,\n      nonce: options.nonce,\n      speedy: options.speedy,\n      prepend: options.prepend,\n      insertionPoint: options.insertionPoint\n    }),\n    nonce: options.nonce,\n    inserted: inserted,\n    registered: {},\n    insert: _insert\n  };\n  cache.sheet.hydrate(nodesToHydrate);\n  return cache;\n};\n\nexport { createCache as default };\n","import {MS, MOZ, WEBKIT, RULESET, KEYFRAMES, DECLARATION} from './Enum.js'\nimport {match, charat, substr, strlen, sizeof, replace, combine} from './Utility.js'\nimport {copy, tokenize} from './Tokenizer.js'\nimport {serialize} from './Serializer.js'\nimport {prefix} from './Prefixer.js'\n\n/**\n * @param {function[]} collection\n * @return {function}\n */\nexport function middleware (collection) {\n\tvar length = sizeof(collection)\n\n\treturn function (element, index, children, callback) {\n\t\tvar output = ''\n\n\t\tfor (var i = 0; i < length; i++)\n\t\t\toutput += collection[i](element, index, children, callback) || ''\n\n\t\treturn output\n\t}\n}\n\n/**\n * @param {function} callback\n * @return {function}\n */\nexport function rulesheet (callback) {\n\treturn function (element) {\n\t\tif (!element.root)\n\t\t\tif (element = element.return)\n\t\t\t\tcallback(element)\n\t}\n}\n\n/**\n * @param {object} element\n * @param {number} index\n * @param {object[]} children\n * @param {function} callback\n */\nexport function prefixer (element, index, children, callback) {\n\tif (element.length > -1)\n\t\tif (!element.return)\n\t\t\tswitch (element.type) {\n\t\t\t\tcase DECLARATION: element.return = prefix(element.value, element.length, children)\n\t\t\t\t\treturn\n\t\t\t\tcase KEYFRAMES:\n\t\t\t\t\treturn serialize([copy(element, {value: replace(element.value, '@', '@' + WEBKIT)})], callback)\n\t\t\t\tcase RULESET:\n\t\t\t\t\tif (element.length)\n\t\t\t\t\t\treturn combine(element.props, function (value) {\n\t\t\t\t\t\t\tswitch (match(value, /(::plac\\w+|:read-\\w+)/)) {\n\t\t\t\t\t\t\t\t// :read-(only|write)\n\t\t\t\t\t\t\t\tcase ':read-only': case ':read-write':\n\t\t\t\t\t\t\t\t\treturn serialize([copy(element, {props: [replace(value, /:(read-\\w+)/, ':' + MOZ + '$1')]})], callback)\n\t\t\t\t\t\t\t\t// :placeholder\n\t\t\t\t\t\t\t\tcase '::placeholder':\n\t\t\t\t\t\t\t\t\treturn serialize([\n\t\t\t\t\t\t\t\t\t\tcopy(element, {props: [replace(value, /:(plac\\w+)/, ':' + WEBKIT + 'input-$1')]}),\n\t\t\t\t\t\t\t\t\t\tcopy(element, {props: [replace(value, /:(plac\\w+)/, ':' + MOZ + '$1')]}),\n\t\t\t\t\t\t\t\t\t\tcopy(element, {props: [replace(value, /:(plac\\w+)/, MS + 'input-$1')]})\n\t\t\t\t\t\t\t\t\t], callback)\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\treturn ''\n\t\t\t\t\t\t})\n\t\t\t}\n}\n\n/**\n * @param {object} element\n * @param {number} index\n * @param {object[]} children\n */\nexport function namespace (element) {\n\tswitch (element.type) {\n\t\tcase RULESET:\n\t\t\telement.props = element.props.map(function (value) {\n\t\t\t\treturn combine(tokenize(value), function (value, index, children) {\n\t\t\t\t\tswitch (charat(value, 0)) {\n\t\t\t\t\t\t// \\f\n\t\t\t\t\t\tcase 12:\n\t\t\t\t\t\t\treturn substr(value, 1, strlen(value))\n\t\t\t\t\t\t// \\0 ( + > ~\n\t\t\t\t\t\tcase 0: case 40: case 43: case 62: case 126:\n\t\t\t\t\t\t\treturn value\n\t\t\t\t\t\t// :\n\t\t\t\t\t\tcase 58:\n\t\t\t\t\t\t\tif (children[++index] === 'global')\n\t\t\t\t\t\t\t\tchildren[index] = '', children[++index] = '\\f' + substr(children[index], index = 1, -1)\n\t\t\t\t\t\t// \\s\n\t\t\t\t\t\tcase 32:\n\t\t\t\t\t\t\treturn index === 1 ? '' : value\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\tswitch (index) {\n\t\t\t\t\t\t\t\tcase 0: element = value\n\t\t\t\t\t\t\t\t\treturn sizeof(children) > 1 ? '' : value\n\t\t\t\t\t\t\t\tcase index = sizeof(children) - 1: case 2:\n\t\t\t\t\t\t\t\t\treturn index === 2 ? value + element + element : value + element\n\t\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\t\treturn value\n\t\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t})\n\t}\n}\n","function memoize(fn) {\n  var cache = Object.create(null);\n  return function (arg) {\n    if (cache[arg] === undefined) cache[arg] = fn(arg);\n    return cache[arg];\n  };\n}\n\nexport { memoize as default };\n","import * as React from 'react';\nimport { createContext, useContext, forwardRef, createElement, Fragment } from 'react';\nimport createCache from '@emotion/cache';\nimport _extends from '@babel/runtime/helpers/esm/extends';\nimport weakMemoize from '@emotion/weak-memoize';\nimport hoistNonReactStatics from '../_isolated-hnrs/dist/emotion-react-_isolated-hnrs.browser.esm.js';\nimport { getRegisteredStyles, registerStyles, insertStyles } from '@emotion/utils';\nimport { serializeStyles } from '@emotion/serialize';\n\nvar hasOwnProperty = {}.hasOwnProperty;\n\nvar EmotionCacheContext = /* #__PURE__ */createContext( // we're doing this to avoid preconstruct's dead code elimination in this one case\n// because this module is primarily intended for the browser and node\n// but it's also required in react native and similar environments sometimes\n// and we could have a special build just for that\n// but this is much easier and the native packages\n// might use a different theme context in the future anyway\ntypeof HTMLElement !== 'undefined' ? /* #__PURE__ */createCache({\n  key: 'css'\n}) : null);\n\nif (process.env.NODE_ENV !== 'production') {\n  EmotionCacheContext.displayName = 'EmotionCacheContext';\n}\n\nvar CacheProvider = EmotionCacheContext.Provider;\nvar __unsafe_useEmotionCache = function useEmotionCache() {\n  return useContext(EmotionCacheContext);\n};\n\nvar withEmotionCache = function withEmotionCache(func) {\n  // $FlowFixMe\n  return /*#__PURE__*/forwardRef(function (props, ref) {\n    // the cache will never be null in the browser\n    var cache = useContext(EmotionCacheContext);\n    return func(props, cache, ref);\n  });\n};\n\nvar ThemeContext = /* #__PURE__ */createContext({});\n\nif (process.env.NODE_ENV !== 'production') {\n  ThemeContext.displayName = 'EmotionThemeContext';\n}\n\nvar useTheme = function useTheme() {\n  return useContext(ThemeContext);\n};\n\nvar getTheme = function getTheme(outerTheme, theme) {\n  if (typeof theme === 'function') {\n    var mergedTheme = theme(outerTheme);\n\n    if (process.env.NODE_ENV !== 'production' && (mergedTheme == null || typeof mergedTheme !== 'object' || Array.isArray(mergedTheme))) {\n      throw new Error('[ThemeProvider] Please return an object from your theme function, i.e. theme={() => ({})}!');\n    }\n\n    return mergedTheme;\n  }\n\n  if (process.env.NODE_ENV !== 'production' && (theme == null || typeof theme !== 'object' || Array.isArray(theme))) {\n    throw new Error('[ThemeProvider] Please make your theme prop a plain object');\n  }\n\n  return _extends({}, outerTheme, theme);\n};\n\nvar createCacheWithTheme = /* #__PURE__ */weakMemoize(function (outerTheme) {\n  return weakMemoize(function (theme) {\n    return getTheme(outerTheme, theme);\n  });\n});\nvar ThemeProvider = function ThemeProvider(props) {\n  var theme = useContext(ThemeContext);\n\n  if (props.theme !== theme) {\n    theme = createCacheWithTheme(theme)(props.theme);\n  }\n\n  return /*#__PURE__*/createElement(ThemeContext.Provider, {\n    value: theme\n  }, props.children);\n};\nfunction withTheme(Component) {\n  var componentName = Component.displayName || Component.name || 'Component';\n\n  var render = function render(props, ref) {\n    var theme = useContext(ThemeContext);\n    return /*#__PURE__*/createElement(Component, _extends({\n      theme: theme,\n      ref: ref\n    }, props));\n  }; // $FlowFixMe\n\n\n  var WithTheme = /*#__PURE__*/forwardRef(render);\n  WithTheme.displayName = \"WithTheme(\" + componentName + \")\";\n  return hoistNonReactStatics(WithTheme, Component);\n}\n\nvar getLastPart = function getLastPart(functionName) {\n  // The match may be something like 'Object.createEmotionProps' or\n  // 'Loader.prototype.render'\n  var parts = functionName.split('.');\n  return parts[parts.length - 1];\n};\n\nvar getFunctionNameFromStackTraceLine = function getFunctionNameFromStackTraceLine(line) {\n  // V8\n  var match = /^\\s+at\\s+([A-Za-z0-9$.]+)\\s/.exec(line);\n  if (match) return getLastPart(match[1]); // Safari / Firefox\n\n  match = /^([A-Za-z0-9$.]+)@/.exec(line);\n  if (match) return getLastPart(match[1]);\n  return undefined;\n};\n\nvar internalReactFunctionNames = /* #__PURE__ */new Set(['renderWithHooks', 'processChild', 'finishClassComponent', 'renderToString']); // These identifiers come from error stacks, so they have to be valid JS\n// identifiers, thus we only need to replace what is a valid character for JS,\n// but not for CSS.\n\nvar sanitizeIdentifier = function sanitizeIdentifier(identifier) {\n  return identifier.replace(/\\$/g, '-');\n};\n\nvar getLabelFromStackTrace = function getLabelFromStackTrace(stackTrace) {\n  if (!stackTrace) return undefined;\n  var lines = stackTrace.split('\\n');\n\n  for (var i = 0; i < lines.length; i++) {\n    var functionName = getFunctionNameFromStackTraceLine(lines[i]); // The first line of V8 stack traces is just \"Error\"\n\n    if (!functionName) continue; // If we reach one of these, we have gone too far and should quit\n\n    if (internalReactFunctionNames.has(functionName)) break; // The component name is the first function in the stack that starts with an\n    // uppercase letter\n\n    if (/^[A-Z]/.test(functionName)) return sanitizeIdentifier(functionName);\n  }\n\n  return undefined;\n};\n\nvar useInsertionEffect = React['useInsertion' + 'Effect'] ? React['useInsertion' + 'Effect'] : function useInsertionEffect(create) {\n  create();\n};\nfunction useInsertionEffectMaybe(create) {\n\n  useInsertionEffect(create);\n}\n\nvar typePropName = '__EMOTION_TYPE_PLEASE_DO_NOT_USE__';\nvar labelPropName = '__EMOTION_LABEL_PLEASE_DO_NOT_USE__';\nvar createEmotionProps = function createEmotionProps(type, props) {\n  if (process.env.NODE_ENV !== 'production' && typeof props.css === 'string' && // check if there is a css declaration\n  props.css.indexOf(':') !== -1) {\n    throw new Error(\"Strings are not allowed as css prop values, please wrap it in a css template literal from '@emotion/react' like this: css`\" + props.css + \"`\");\n  }\n\n  var newProps = {};\n\n  for (var key in props) {\n    if (hasOwnProperty.call(props, key)) {\n      newProps[key] = props[key];\n    }\n  }\n\n  newProps[typePropName] = type; // For performance, only call getLabelFromStackTrace in development and when\n  // the label hasn't already been computed\n\n  if (process.env.NODE_ENV !== 'production' && !!props.css && (typeof props.css !== 'object' || typeof props.css.name !== 'string' || props.css.name.indexOf('-') === -1)) {\n    var label = getLabelFromStackTrace(new Error().stack);\n    if (label) newProps[labelPropName] = label;\n  }\n\n  return newProps;\n};\n\nvar Insertion = function Insertion(_ref) {\n  var cache = _ref.cache,\n      serialized = _ref.serialized,\n      isStringTag = _ref.isStringTag;\n  registerStyles(cache, serialized, isStringTag);\n  var rules = useInsertionEffectMaybe(function () {\n    return insertStyles(cache, serialized, isStringTag);\n  });\n\n  return null;\n};\n\nvar Emotion = /* #__PURE__ */withEmotionCache(function (props, cache, ref) {\n  var cssProp = props.css; // so that using `css` from `emotion` and passing the result to the css prop works\n  // not passing the registered cache to serializeStyles because it would\n  // make certain babel optimisations not possible\n\n  if (typeof cssProp === 'string' && cache.registered[cssProp] !== undefined) {\n    cssProp = cache.registered[cssProp];\n  }\n\n  var WrappedComponent = props[typePropName];\n  var registeredStyles = [cssProp];\n  var className = '';\n\n  if (typeof props.className === 'string') {\n    className = getRegisteredStyles(cache.registered, registeredStyles, props.className);\n  } else if (props.className != null) {\n    className = props.className + \" \";\n  }\n\n  var serialized = serializeStyles(registeredStyles, undefined, useContext(ThemeContext));\n\n  if (process.env.NODE_ENV !== 'production' && serialized.name.indexOf('-') === -1) {\n    var labelFromStack = props[labelPropName];\n\n    if (labelFromStack) {\n      serialized = serializeStyles([serialized, 'label:' + labelFromStack + ';']);\n    }\n  }\n\n  className += cache.key + \"-\" + serialized.name;\n  var newProps = {};\n\n  for (var key in props) {\n    if (hasOwnProperty.call(props, key) && key !== 'css' && key !== typePropName && (process.env.NODE_ENV === 'production' || key !== labelPropName)) {\n      newProps[key] = props[key];\n    }\n  }\n\n  newProps.ref = ref;\n  newProps.className = className;\n  return /*#__PURE__*/createElement(Fragment, null, /*#__PURE__*/createElement(Insertion, {\n    cache: cache,\n    serialized: serialized,\n    isStringTag: typeof WrappedComponent === 'string'\n  }), /*#__PURE__*/createElement(WrappedComponent, newProps));\n});\n\nif (process.env.NODE_ENV !== 'production') {\n  Emotion.displayName = 'EmotionCssPropInternal';\n}\n\nexport { CacheProvider as C, Emotion as E, ThemeContext as T, __unsafe_useEmotionCache as _, useTheme as a, ThemeProvider as b, createEmotionProps as c, withTheme as d, hasOwnProperty as h, useInsertionEffectMaybe as u, withEmotionCache as w };\n","import * as React from 'react';\nimport { createElement, useLayoutEffect, useContext, useRef, Fragment } from 'react';\nimport '@emotion/cache';\nimport { h as hasOwnProperty, E as Emotion, c as createEmotionProps, w as withEmotionCache, T as ThemeContext, u as useInsertionEffectMaybe } from './emotion-element-cbed451f.browser.esm.js';\nexport { C as CacheProvider, T as ThemeContext, b as ThemeProvider, _ as __unsafe_useEmotionCache, a as useTheme, w as withEmotionCache, d as withTheme } from './emotion-element-cbed451f.browser.esm.js';\nimport '@babel/runtime/helpers/extends';\nimport '@emotion/weak-memoize';\nimport 'hoist-non-react-statics';\nimport '../_isolated-hnrs/dist/emotion-react-_isolated-hnrs.browser.esm.js';\nimport { insertStyles, registerStyles, getRegisteredStyles } from '@emotion/utils';\nimport { serializeStyles } from '@emotion/serialize';\n\nvar pkg = {\n\tname: \"@emotion/react\",\n\tversion: \"11.10.0\",\n\tmain: \"dist/emotion-react.cjs.js\",\n\tmodule: \"dist/emotion-react.esm.js\",\n\tbrowser: {\n\t\t\"./dist/emotion-react.esm.js\": \"./dist/emotion-react.browser.esm.js\"\n\t},\n\texports: {\n\t\t\".\": {\n\t\t\tmodule: {\n\t\t\t\tworker: \"./dist/emotion-react.worker.esm.js\",\n\t\t\t\tbrowser: \"./dist/emotion-react.browser.esm.js\",\n\t\t\t\t\"default\": \"./dist/emotion-react.esm.js\"\n\t\t\t},\n\t\t\t\"default\": \"./dist/emotion-react.cjs.js\"\n\t\t},\n\t\t\"./jsx-runtime\": {\n\t\t\tmodule: {\n\t\t\t\tworker: \"./jsx-runtime/dist/emotion-react-jsx-runtime.worker.esm.js\",\n\t\t\t\tbrowser: \"./jsx-runtime/dist/emotion-react-jsx-runtime.browser.esm.js\",\n\t\t\t\t\"default\": \"./jsx-runtime/dist/emotion-react-jsx-runtime.esm.js\"\n\t\t\t},\n\t\t\t\"default\": \"./jsx-runtime/dist/emotion-react-jsx-runtime.cjs.js\"\n\t\t},\n\t\t\"./_isolated-hnrs\": {\n\t\t\tmodule: {\n\t\t\t\tworker: \"./_isolated-hnrs/dist/emotion-react-_isolated-hnrs.worker.esm.js\",\n\t\t\t\tbrowser: \"./_isolated-hnrs/dist/emotion-react-_isolated-hnrs.browser.esm.js\",\n\t\t\t\t\"default\": \"./_isolated-hnrs/dist/emotion-react-_isolated-hnrs.esm.js\"\n\t\t\t},\n\t\t\t\"default\": \"./_isolated-hnrs/dist/emotion-react-_isolated-hnrs.cjs.js\"\n\t\t},\n\t\t\"./jsx-dev-runtime\": {\n\t\t\tmodule: {\n\t\t\t\tworker: \"./jsx-dev-runtime/dist/emotion-react-jsx-dev-runtime.worker.esm.js\",\n\t\t\t\tbrowser: \"./jsx-dev-runtime/dist/emotion-react-jsx-dev-runtime.browser.esm.js\",\n\t\t\t\t\"default\": \"./jsx-dev-runtime/dist/emotion-react-jsx-dev-runtime.esm.js\"\n\t\t\t},\n\t\t\t\"default\": \"./jsx-dev-runtime/dist/emotion-react-jsx-dev-runtime.cjs.js\"\n\t\t},\n\t\t\"./package.json\": \"./package.json\",\n\t\t\"./types/css-prop\": \"./types/css-prop.d.ts\",\n\t\t\"./macro\": \"./macro.js\"\n\t},\n\ttypes: \"types/index.d.ts\",\n\tfiles: [\n\t\t\"src\",\n\t\t\"dist\",\n\t\t\"jsx-runtime\",\n\t\t\"jsx-dev-runtime\",\n\t\t\"_isolated-hnrs\",\n\t\t\"types/*.d.ts\",\n\t\t\"macro.js\",\n\t\t\"macro.d.ts\",\n\t\t\"macro.js.flow\"\n\t],\n\tsideEffects: false,\n\tauthor: \"Emotion Contributors\",\n\tlicense: \"MIT\",\n\tscripts: {\n\t\t\"test:typescript\": \"dtslint types\"\n\t},\n\tdependencies: {\n\t\t\"@babel/runtime\": \"^7.18.3\",\n\t\t\"@emotion/babel-plugin\": \"^11.10.0\",\n\t\t\"@emotion/cache\": \"^11.10.0\",\n\t\t\"@emotion/serialize\": \"^1.1.0\",\n\t\t\"@emotion/utils\": \"^1.2.0\",\n\t\t\"@emotion/weak-memoize\": \"^0.3.0\",\n\t\t\"hoist-non-react-statics\": \"^3.3.1\"\n\t},\n\tpeerDependencies: {\n\t\t\"@babel/core\": \"^7.0.0\",\n\t\treact: \">=16.8.0\"\n\t},\n\tpeerDependenciesMeta: {\n\t\t\"@babel/core\": {\n\t\t\toptional: true\n\t\t},\n\t\t\"@types/react\": {\n\t\t\toptional: true\n\t\t}\n\t},\n\tdevDependencies: {\n\t\t\"@babel/core\": \"^7.18.5\",\n\t\t\"@definitelytyped/dtslint\": \"0.0.112\",\n\t\t\"@emotion/css\": \"11.10.0\",\n\t\t\"@emotion/css-prettifier\": \"1.1.0\",\n\t\t\"@emotion/server\": \"11.10.0\",\n\t\t\"@emotion/styled\": \"11.10.0\",\n\t\t\"html-tag-names\": \"^1.1.2\",\n\t\treact: \"16.14.0\",\n\t\t\"svg-tag-names\": \"^1.1.1\",\n\t\ttypescript: \"^4.5.5\"\n\t},\n\trepository: \"https://github.com/emotion-js/emotion/tree/main/packages/react\",\n\tpublishConfig: {\n\t\taccess: \"public\"\n\t},\n\t\"umd:main\": \"dist/emotion-react.umd.min.js\",\n\tpreconstruct: {\n\t\tentrypoints: [\n\t\t\t\"./index.js\",\n\t\t\t\"./jsx-runtime.js\",\n\t\t\t\"./jsx-dev-runtime.js\",\n\t\t\t\"./_isolated-hnrs.js\"\n\t\t],\n\t\tumdName: \"emotionReact\",\n\t\texports: {\n\t\t\tenvConditions: [\n\t\t\t\t\"browser\",\n\t\t\t\t\"worker\"\n\t\t\t],\n\t\t\textra: {\n\t\t\t\t\"./types/css-prop\": \"./types/css-prop.d.ts\",\n\t\t\t\t\"./macro\": \"./macro.js\"\n\t\t\t}\n\t\t}\n\t}\n};\n\nvar jsx = function jsx(type, props) {\n  var args = arguments;\n\n  if (props == null || !hasOwnProperty.call(props, 'css')) {\n    // $FlowFixMe\n    return createElement.apply(undefined, args);\n  }\n\n  var argsLength = args.length;\n  var createElementArgArray = new Array(argsLength);\n  createElementArgArray[0] = Emotion;\n  createElementArgArray[1] = createEmotionProps(type, props);\n\n  for (var i = 2; i < argsLength; i++) {\n    createElementArgArray[i] = args[i];\n  } // $FlowFixMe\n\n\n  return createElement.apply(null, createElementArgArray);\n};\n\nvar useInsertionEffect = React['useInsertion' + 'Effect'] ? React['useInsertion' + 'Effect'] : useLayoutEffect;\nvar warnedAboutCssPropForGlobal = false; // maintain place over rerenders.\n// initial render from browser, insertBefore context.sheet.tags[0] or if a style hasn't been inserted there yet, appendChild\n// initial client-side render from SSR, use place of hydrating tag\n\nvar Global = /* #__PURE__ */withEmotionCache(function (props, cache) {\n  if (process.env.NODE_ENV !== 'production' && !warnedAboutCssPropForGlobal && ( // check for className as well since the user is\n  // probably using the custom createElement which\n  // means it will be turned into a className prop\n  // $FlowFixMe I don't really want to add it to the type since it shouldn't be used\n  props.className || props.css)) {\n    console.error(\"It looks like you're using the css prop on Global, did you mean to use the styles prop instead?\");\n    warnedAboutCssPropForGlobal = true;\n  }\n\n  var styles = props.styles;\n  var serialized = serializeStyles([styles], undefined, useContext(ThemeContext));\n  // but it is based on a constant that will never change at runtime\n  // it's effectively like having two implementations and switching them out\n  // so it's not actually breaking anything\n\n\n  var sheetRef = useRef();\n  useInsertionEffect(function () {\n    var key = cache.key + \"-global\"; // use case of https://github.com/emotion-js/emotion/issues/2675\n\n    var sheet = new cache.sheet.constructor({\n      key: key,\n      nonce: cache.sheet.nonce,\n      container: cache.sheet.container,\n      speedy: cache.sheet.isSpeedy\n    });\n    var rehydrating = false; // $FlowFixMe\n\n    var node = document.querySelector(\"style[data-emotion=\\\"\" + key + \" \" + serialized.name + \"\\\"]\");\n\n    if (cache.sheet.tags.length) {\n      sheet.before = cache.sheet.tags[0];\n    }\n\n    if (node !== null) {\n      rehydrating = true; // clear the hash so this node won't be recognizable as rehydratable by other <Global/>s\n\n      node.setAttribute('data-emotion', key);\n      sheet.hydrate([node]);\n    }\n\n    sheetRef.current = [sheet, rehydrating];\n    return function () {\n      sheet.flush();\n    };\n  }, [cache]);\n  useInsertionEffect(function () {\n    var sheetRefCurrent = sheetRef.current;\n    var sheet = sheetRefCurrent[0],\n        rehydrating = sheetRefCurrent[1];\n\n    if (rehydrating) {\n      sheetRefCurrent[1] = false;\n      return;\n    }\n\n    if (serialized.next !== undefined) {\n      // insert keyframes\n      insertStyles(cache, serialized.next, true);\n    }\n\n    if (sheet.tags.length) {\n      // if this doesn't exist then it will be null so the style element will be appended\n      var element = sheet.tags[sheet.tags.length - 1].nextElementSibling;\n      sheet.before = element;\n      sheet.flush();\n    }\n\n    cache.insert(\"\", serialized, sheet, false);\n  }, [cache, serialized.name]);\n  return null;\n});\n\nif (process.env.NODE_ENV !== 'production') {\n  Global.displayName = 'EmotionGlobal';\n}\n\nfunction css() {\n  for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n    args[_key] = arguments[_key];\n  }\n\n  return serializeStyles(args);\n}\n\nvar keyframes = function keyframes() {\n  var insertable = css.apply(void 0, arguments);\n  var name = \"animation-\" + insertable.name; // $FlowFixMe\n\n  return {\n    name: name,\n    styles: \"@keyframes \" + name + \"{\" + insertable.styles + \"}\",\n    anim: 1,\n    toString: function toString() {\n      return \"_EMO_\" + this.name + \"_\" + this.styles + \"_EMO_\";\n    }\n  };\n};\n\nvar classnames = function classnames(args) {\n  var len = args.length;\n  var i = 0;\n  var cls = '';\n\n  for (; i < len; i++) {\n    var arg = args[i];\n    if (arg == null) continue;\n    var toAdd = void 0;\n\n    switch (typeof arg) {\n      case 'boolean':\n        break;\n\n      case 'object':\n        {\n          if (Array.isArray(arg)) {\n            toAdd = classnames(arg);\n          } else {\n            if (process.env.NODE_ENV !== 'production' && arg.styles !== undefined && arg.name !== undefined) {\n              console.error('You have passed styles created with `css` from `@emotion/react` package to the `cx`.\\n' + '`cx` is meant to compose class names (strings) so you should convert those styles to a class name by passing them to the `css` received from <ClassNames/> component.');\n            }\n\n            toAdd = '';\n\n            for (var k in arg) {\n              if (arg[k] && k) {\n                toAdd && (toAdd += ' ');\n                toAdd += k;\n              }\n            }\n          }\n\n          break;\n        }\n\n      default:\n        {\n          toAdd = arg;\n        }\n    }\n\n    if (toAdd) {\n      cls && (cls += ' ');\n      cls += toAdd;\n    }\n  }\n\n  return cls;\n};\n\nfunction merge(registered, css, className) {\n  var registeredStyles = [];\n  var rawClassName = getRegisteredStyles(registered, registeredStyles, className);\n\n  if (registeredStyles.length < 2) {\n    return className;\n  }\n\n  return rawClassName + css(registeredStyles);\n}\n\nvar Insertion = function Insertion(_ref) {\n  var cache = _ref.cache,\n      serializedArr = _ref.serializedArr;\n  var rules = useInsertionEffectMaybe(function () {\n\n    for (var i = 0; i < serializedArr.length; i++) {\n      var res = insertStyles(cache, serializedArr[i], false);\n    }\n  });\n\n  return null;\n};\n\nvar ClassNames = /* #__PURE__ */withEmotionCache(function (props, cache) {\n  var hasRendered = false;\n  var serializedArr = [];\n\n  var css = function css() {\n    if (hasRendered && process.env.NODE_ENV !== 'production') {\n      throw new Error('css can only be used during render');\n    }\n\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    var serialized = serializeStyles(args, cache.registered);\n    serializedArr.push(serialized); // registration has to happen here as the result of this might get consumed by `cx`\n\n    registerStyles(cache, serialized, false);\n    return cache.key + \"-\" + serialized.name;\n  };\n\n  var cx = function cx() {\n    if (hasRendered && process.env.NODE_ENV !== 'production') {\n      throw new Error('cx can only be used during render');\n    }\n\n    for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n      args[_key2] = arguments[_key2];\n    }\n\n    return merge(cache.registered, css, classnames(args));\n  };\n\n  var content = {\n    css: css,\n    cx: cx,\n    theme: useContext(ThemeContext)\n  };\n  var ele = props.children(content);\n  hasRendered = true;\n  return /*#__PURE__*/createElement(Fragment, null, /*#__PURE__*/createElement(Insertion, {\n    cache: cache,\n    serializedArr: serializedArr\n  }), ele);\n});\n\nif (process.env.NODE_ENV !== 'production') {\n  ClassNames.displayName = 'EmotionClassNames';\n}\n\nif (process.env.NODE_ENV !== 'production') {\n  var isBrowser = \"object\" !== 'undefined'; // #1727 for some reason Jest evaluates modules twice if some consuming module gets mocked with jest.mock\n\n  var isJest = typeof jest !== 'undefined';\n\n  if (isBrowser && !isJest) {\n    // globalThis has wide browser support - https://caniuse.com/?search=globalThis, Node.js 12 and later\n    var globalContext = // $FlowIgnore\n    typeof globalThis !== 'undefined' ? globalThis // eslint-disable-line no-undef\n    : isBrowser ? window : global;\n    var globalKey = \"__EMOTION_REACT_\" + pkg.version.split('.')[0] + \"__\";\n\n    if (globalContext[globalKey]) {\n      console.warn('You are loading @emotion/react when it is already loaded. Running ' + 'multiple instances may cause problems. This can happen if multiple ' + 'versions are used, or if multiple builds of the same version are ' + 'used.');\n    }\n\n    globalContext[globalKey] = true;\n  }\n}\n\nexport { ClassNames, Global, jsx as createElement, css, jsx, keyframes };\n","var unitlessKeys = {\n  animationIterationCount: 1,\n  aspectRatio: 1,\n  borderImageOutset: 1,\n  borderImageSlice: 1,\n  borderImageWidth: 1,\n  boxFlex: 1,\n  boxFlexGroup: 1,\n  boxOrdinalGroup: 1,\n  columnCount: 1,\n  columns: 1,\n  flex: 1,\n  flexGrow: 1,\n  flexPositive: 1,\n  flexShrink: 1,\n  flexNegative: 1,\n  flexOrder: 1,\n  gridRow: 1,\n  gridRowEnd: 1,\n  gridRowSpan: 1,\n  gridRowStart: 1,\n  gridColumn: 1,\n  gridColumnEnd: 1,\n  gridColumnSpan: 1,\n  gridColumnStart: 1,\n  msGridRow: 1,\n  msGridRowSpan: 1,\n  msGridColumn: 1,\n  msGridColumnSpan: 1,\n  fontWeight: 1,\n  lineHeight: 1,\n  opacity: 1,\n  order: 1,\n  orphans: 1,\n  tabSize: 1,\n  widows: 1,\n  zIndex: 1,\n  zoom: 1,\n  WebkitLineClamp: 1,\n  // SVG-related properties\n  fillOpacity: 1,\n  floodOpacity: 1,\n  stopOpacity: 1,\n  strokeDasharray: 1,\n  strokeDashoffset: 1,\n  strokeMiterlimit: 1,\n  strokeOpacity: 1,\n  strokeWidth: 1\n};\n\nexport { unitlessKeys as default };\n","import hashString from '@emotion/hash';\nimport unitless from '@emotion/unitless';\nimport memoize from '@emotion/memoize';\n\nvar ILLEGAL_ESCAPE_SEQUENCE_ERROR = \"You have illegal escape sequence in your template literal, most likely inside content's property value.\\nBecause you write your CSS inside a JavaScript string you actually have to do double escaping, so for example \\\"content: '\\\\00d7';\\\" should become \\\"content: '\\\\\\\\00d7';\\\".\\nYou can read more about this here:\\nhttps://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Template_literals#ES2018_revision_of_illegal_escape_sequences\";\nvar UNDEFINED_AS_OBJECT_KEY_ERROR = \"You have passed in falsy value as style object's key (can happen when in example you pass unexported component as computed key).\";\nvar hyphenateRegex = /[A-Z]|^ms/g;\nvar animationRegex = /_EMO_([^_]+?)_([^]*?)_EMO_/g;\n\nvar isCustomProperty = function isCustomProperty(property) {\n  return property.charCodeAt(1) === 45;\n};\n\nvar isProcessableValue = function isProcessableValue(value) {\n  return value != null && typeof value !== 'boolean';\n};\n\nvar processStyleName = /* #__PURE__ */memoize(function (styleName) {\n  return isCustomProperty(styleName) ? styleName : styleName.replace(hyphenateRegex, '-$&').toLowerCase();\n});\n\nvar processStyleValue = function processStyleValue(key, value) {\n  switch (key) {\n    case 'animation':\n    case 'animationName':\n      {\n        if (typeof value === 'string') {\n          return value.replace(animationRegex, function (match, p1, p2) {\n            cursor = {\n              name: p1,\n              styles: p2,\n              next: cursor\n            };\n            return p1;\n          });\n        }\n      }\n  }\n\n  if (unitless[key] !== 1 && !isCustomProperty(key) && typeof value === 'number' && value !== 0) {\n    return value + 'px';\n  }\n\n  return value;\n};\n\nif (process.env.NODE_ENV !== 'production') {\n  var contentValuePattern = /(var|attr|counters?|url|element|(((repeating-)?(linear|radial))|conic)-gradient)\\(|(no-)?(open|close)-quote/;\n  var contentValues = ['normal', 'none', 'initial', 'inherit', 'unset'];\n  var oldProcessStyleValue = processStyleValue;\n  var msPattern = /^-ms-/;\n  var hyphenPattern = /-(.)/g;\n  var hyphenatedCache = {};\n\n  processStyleValue = function processStyleValue(key, value) {\n    if (key === 'content') {\n      if (typeof value !== 'string' || contentValues.indexOf(value) === -1 && !contentValuePattern.test(value) && (value.charAt(0) !== value.charAt(value.length - 1) || value.charAt(0) !== '\"' && value.charAt(0) !== \"'\")) {\n        throw new Error(\"You seem to be using a value for 'content' without quotes, try replacing it with `content: '\\\"\" + value + \"\\\"'`\");\n      }\n    }\n\n    var processed = oldProcessStyleValue(key, value);\n\n    if (processed !== '' && !isCustomProperty(key) && key.indexOf('-') !== -1 && hyphenatedCache[key] === undefined) {\n      hyphenatedCache[key] = true;\n      console.error(\"Using kebab-case for css properties in objects is not supported. Did you mean \" + key.replace(msPattern, 'ms-').replace(hyphenPattern, function (str, _char) {\n        return _char.toUpperCase();\n      }) + \"?\");\n    }\n\n    return processed;\n  };\n}\n\nvar noComponentSelectorMessage = 'Component selectors can only be used in conjunction with ' + '@emotion/babel-plugin, the swc Emotion plugin, or another Emotion-aware ' + 'compiler transform.';\n\nfunction handleInterpolation(mergedProps, registered, interpolation) {\n  if (interpolation == null) {\n    return '';\n  }\n\n  if (interpolation.__emotion_styles !== undefined) {\n    if (process.env.NODE_ENV !== 'production' && interpolation.toString() === 'NO_COMPONENT_SELECTOR') {\n      throw new Error(noComponentSelectorMessage);\n    }\n\n    return interpolation;\n  }\n\n  switch (typeof interpolation) {\n    case 'boolean':\n      {\n        return '';\n      }\n\n    case 'object':\n      {\n        if (interpolation.anim === 1) {\n          cursor = {\n            name: interpolation.name,\n            styles: interpolation.styles,\n            next: cursor\n          };\n          return interpolation.name;\n        }\n\n        if (interpolation.styles !== undefined) {\n          var next = interpolation.next;\n\n          if (next !== undefined) {\n            // not the most efficient thing ever but this is a pretty rare case\n            // and there will be very few iterations of this generally\n            while (next !== undefined) {\n              cursor = {\n                name: next.name,\n                styles: next.styles,\n                next: cursor\n              };\n              next = next.next;\n            }\n          }\n\n          var styles = interpolation.styles + \";\";\n\n          if (process.env.NODE_ENV !== 'production' && interpolation.map !== undefined) {\n            styles += interpolation.map;\n          }\n\n          return styles;\n        }\n\n        return createStringFromObject(mergedProps, registered, interpolation);\n      }\n\n    case 'function':\n      {\n        if (mergedProps !== undefined) {\n          var previousCursor = cursor;\n          var result = interpolation(mergedProps);\n          cursor = previousCursor;\n          return handleInterpolation(mergedProps, registered, result);\n        } else if (process.env.NODE_ENV !== 'production') {\n          console.error('Functions that are interpolated in css calls will be stringified.\\n' + 'If you want to have a css call based on props, create a function that returns a css call like this\\n' + 'let dynamicStyle = (props) => css`color: ${props.color}`\\n' + 'It can be called directly with props or interpolated in a styled call like this\\n' + \"let SomeComponent = styled('div')`${dynamicStyle}`\");\n        }\n\n        break;\n      }\n\n    case 'string':\n      if (process.env.NODE_ENV !== 'production') {\n        var matched = [];\n        var replaced = interpolation.replace(animationRegex, function (match, p1, p2) {\n          var fakeVarName = \"animation\" + matched.length;\n          matched.push(\"const \" + fakeVarName + \" = keyframes`\" + p2.replace(/^@keyframes animation-\\w+/, '') + \"`\");\n          return \"${\" + fakeVarName + \"}\";\n        });\n\n        if (matched.length) {\n          console.error('`keyframes` output got interpolated into plain string, please wrap it with `css`.\\n\\n' + 'Instead of doing this:\\n\\n' + [].concat(matched, [\"`\" + replaced + \"`\"]).join('\\n') + '\\n\\nYou should wrap it with `css` like this:\\n\\n' + (\"css`\" + replaced + \"`\"));\n        }\n      }\n\n      break;\n  } // finalize string values (regular strings and functions interpolated into css calls)\n\n\n  if (registered == null) {\n    return interpolation;\n  }\n\n  var cached = registered[interpolation];\n  return cached !== undefined ? cached : interpolation;\n}\n\nfunction createStringFromObject(mergedProps, registered, obj) {\n  var string = '';\n\n  if (Array.isArray(obj)) {\n    for (var i = 0; i < obj.length; i++) {\n      string += handleInterpolation(mergedProps, registered, obj[i]) + \";\";\n    }\n  } else {\n    for (var _key in obj) {\n      var value = obj[_key];\n\n      if (typeof value !== 'object') {\n        if (registered != null && registered[value] !== undefined) {\n          string += _key + \"{\" + registered[value] + \"}\";\n        } else if (isProcessableValue(value)) {\n          string += processStyleName(_key) + \":\" + processStyleValue(_key, value) + \";\";\n        }\n      } else {\n        if (_key === 'NO_COMPONENT_SELECTOR' && process.env.NODE_ENV !== 'production') {\n          throw new Error(noComponentSelectorMessage);\n        }\n\n        if (Array.isArray(value) && typeof value[0] === 'string' && (registered == null || registered[value[0]] === undefined)) {\n          for (var _i = 0; _i < value.length; _i++) {\n            if (isProcessableValue(value[_i])) {\n              string += processStyleName(_key) + \":\" + processStyleValue(_key, value[_i]) + \";\";\n            }\n          }\n        } else {\n          var interpolated = handleInterpolation(mergedProps, registered, value);\n\n          switch (_key) {\n            case 'animation':\n            case 'animationName':\n              {\n                string += processStyleName(_key) + \":\" + interpolated + \";\";\n                break;\n              }\n\n            default:\n              {\n                if (process.env.NODE_ENV !== 'production' && _key === 'undefined') {\n                  console.error(UNDEFINED_AS_OBJECT_KEY_ERROR);\n                }\n\n                string += _key + \"{\" + interpolated + \"}\";\n              }\n          }\n        }\n      }\n    }\n  }\n\n  return string;\n}\n\nvar labelPattern = /label:\\s*([^\\s;\\n{]+)\\s*(;|$)/g;\nvar sourceMapPattern;\n\nif (process.env.NODE_ENV !== 'production') {\n  sourceMapPattern = /\\/\\*#\\ssourceMappingURL=data:application\\/json;\\S+\\s+\\*\\//g;\n} // this is the cursor for keyframes\n// keyframes are stored on the SerializedStyles object as a linked list\n\n\nvar cursor;\nvar serializeStyles = function serializeStyles(args, registered, mergedProps) {\n  if (args.length === 1 && typeof args[0] === 'object' && args[0] !== null && args[0].styles !== undefined) {\n    return args[0];\n  }\n\n  var stringMode = true;\n  var styles = '';\n  cursor = undefined;\n  var strings = args[0];\n\n  if (strings == null || strings.raw === undefined) {\n    stringMode = false;\n    styles += handleInterpolation(mergedProps, registered, strings);\n  } else {\n    if (process.env.NODE_ENV !== 'production' && strings[0] === undefined) {\n      console.error(ILLEGAL_ESCAPE_SEQUENCE_ERROR);\n    }\n\n    styles += strings[0];\n  } // we start at 1 since we've already handled the first arg\n\n\n  for (var i = 1; i < args.length; i++) {\n    styles += handleInterpolation(mergedProps, registered, args[i]);\n\n    if (stringMode) {\n      if (process.env.NODE_ENV !== 'production' && strings[i] === undefined) {\n        console.error(ILLEGAL_ESCAPE_SEQUENCE_ERROR);\n      }\n\n      styles += strings[i];\n    }\n  }\n\n  var sourceMap;\n\n  if (process.env.NODE_ENV !== 'production') {\n    styles = styles.replace(sourceMapPattern, function (match) {\n      sourceMap = match;\n      return '';\n    });\n  } // using a global regex with .exec is stateful so lastIndex has to be reset each time\n\n\n  labelPattern.lastIndex = 0;\n  var identifierName = '';\n  var match; // https://esbench.com/bench/5b809c2cf2949800a0f61fb5\n\n  while ((match = labelPattern.exec(styles)) !== null) {\n    identifierName += '-' + // $FlowFixMe we know it's not null\n    match[1];\n  }\n\n  var name = hashString(styles) + identifierName;\n\n  if (process.env.NODE_ENV !== 'production') {\n    // $FlowFixMe SerializedStyles type doesn't have toString property (and we don't want to add it)\n    return {\n      name: name,\n      styles: styles,\n      map: sourceMap,\n      next: cursor,\n      toString: function toString() {\n        return \"You have tried to stringify object returned from `css` function. It isn't supposed to be used directly (e.g. as value of the `className` prop), but rather handed to emotion so it can handle it (e.g. as value of `css` prop).\";\n      }\n    };\n  }\n\n  return {\n    name: name,\n    styles: styles,\n    next: cursor\n  };\n};\n\nexport { serializeStyles };\n","/* eslint-disable */\n// Inspired by https://github.com/garycourt/murmurhash-js\n// Ported from https://github.com/aappleby/smhasher/blob/61a0530f28277f2e850bfc39600ce61d02b518de/src/MurmurHash2.cpp#L37-L86\nfunction murmur2(str) {\n  // 'm' and 'r' are mixing constants generated offline.\n  // They're not really 'magic', they just happen to work well.\n  // const m = 0x5bd1e995;\n  // const r = 24;\n  // Initialize the hash\n  var h = 0; // Mix 4 bytes at a time into the hash\n\n  var k,\n      i = 0,\n      len = str.length;\n\n  for (; len >= 4; ++i, len -= 4) {\n    k = str.charCodeAt(i) & 0xff | (str.charCodeAt(++i) & 0xff) << 8 | (str.charCodeAt(++i) & 0xff) << 16 | (str.charCodeAt(++i) & 0xff) << 24;\n    k =\n    /* Math.imul(k, m): */\n    (k & 0xffff) * 0x5bd1e995 + ((k >>> 16) * 0xe995 << 16);\n    k ^=\n    /* k >>> r: */\n    k >>> 24;\n    h =\n    /* Math.imul(k, m): */\n    (k & 0xffff) * 0x5bd1e995 + ((k >>> 16) * 0xe995 << 16) ^\n    /* Math.imul(h, m): */\n    (h & 0xffff) * 0x5bd1e995 + ((h >>> 16) * 0xe995 << 16);\n  } // Handle the last few bytes of the input array\n\n\n  switch (len) {\n    case 3:\n      h ^= (str.charCodeAt(i + 2) & 0xff) << 16;\n\n    case 2:\n      h ^= (str.charCodeAt(i + 1) & 0xff) << 8;\n\n    case 1:\n      h ^= str.charCodeAt(i) & 0xff;\n      h =\n      /* Math.imul(h, m): */\n      (h & 0xffff) * 0x5bd1e995 + ((h >>> 16) * 0xe995 << 16);\n  } // Do a few final mixes of the hash to ensure the last few\n  // bytes are well-incorporated.\n\n\n  h ^= h >>> 13;\n  h =\n  /* Math.imul(h, m): */\n  (h & 0xffff) * 0x5bd1e995 + ((h >>> 16) * 0xe995 << 16);\n  return ((h ^ h >>> 15) >>> 0).toString(36);\n}\n\nexport { murmur2 as default };\n","var isBrowser = \"object\" !== 'undefined';\nfunction getRegisteredStyles(registered, registeredStyles, classNames) {\n  var rawClassName = '';\n  classNames.split(' ').forEach(function (className) {\n    if (registered[className] !== undefined) {\n      registeredStyles.push(registered[className] + \";\");\n    } else {\n      rawClassName += className + \" \";\n    }\n  });\n  return rawClassName;\n}\nvar registerStyles = function registerStyles(cache, serialized, isStringTag) {\n  var className = cache.key + \"-\" + serialized.name;\n\n  if ( // we only need to add the styles to the registered cache if the\n  // class name could be used further down\n  // the tree but if it's a string tag, we know it won't\n  // so we don't have to add it to registered cache.\n  // this improves memory usage since we can avoid storing the whole style string\n  (isStringTag === false || // we need to always store it if we're in compat mode and\n  // in node since emotion-server relies on whether a style is in\n  // the registered cache to know whether a style is global or not\n  // also, note that this check will be dead code eliminated in the browser\n  isBrowser === false ) && cache.registered[className] === undefined) {\n    cache.registered[className] = serialized.styles;\n  }\n};\nvar insertStyles = function insertStyles(cache, serialized, isStringTag) {\n  registerStyles(cache, serialized, isStringTag);\n  var className = cache.key + \"-\" + serialized.name;\n\n  if (cache.inserted[serialized.name] === undefined) {\n    var current = serialized;\n\n    do {\n      cache.insert(serialized === current ? \".\" + className : '', current, cache.sheet, true);\n\n      current = current.next;\n    } while (current !== undefined);\n  }\n};\n\nexport { getRegisteredStyles, insertStyles, registerStyles };\n","const isBoolean = x => typeof x === 'boolean';\nconst isFunction = x => typeof x === 'function';\nexport const isObject = x => x !== null && typeof x === 'object';\nexport const isPureObject = x => isObject(x) && x.constructor === {}.constructor;\nexport const isPromise = x => isObject(x) && isFunction(x.then);\nexport const isIterable = x => x && typeof x[Symbol.iterator] === 'function';\nexport const isAsyncIterable = x => x && typeof x[Symbol.asyncIterator] === 'function';\nexport const isIterator = x => x && isFunction(x.next);\nexport const isResponse = x => typeof Response !== 'undefined' && x instanceof Response || x && x.arrayBuffer && x.text && x.json;\nexport const isFile = x => typeof File !== 'undefined' && x instanceof File;\nexport const isBlob = x => typeof Blob !== 'undefined' && x instanceof Blob;\nexport const isBuffer = x => x && typeof x === 'object' && x.isBuffer;\nexport const isWritableDOMStream = x => isObject(x) && isFunction(x.abort) && isFunction(x.getWriter);\nexport const isReadableDOMStream = x => typeof ReadableStream !== 'undefined' && x instanceof ReadableStream || isObject(x) && isFunction(x.tee) && isFunction(x.cancel) && isFunction(x.getReader);\nexport const isWritableNodeStream = x => isObject(x) && isFunction(x.end) && isFunction(x.write) && isBoolean(x.writable);\nexport const isReadableNodeStream = x => isObject(x) && isFunction(x.read) && isFunction(x.pipe) && isBoolean(x.readable);\nexport const isReadableStream = x => isReadableDOMStream(x) || isReadableNodeStream(x);\nexport const isWritableStream = x => isWritableDOMStream(x) || isWritableNodeStream(x);\n//# sourceMappingURL=is-type.js.map","let pathPrefix = '';\nconst fileAliases = {};\nexport function setPathPrefix(prefix) {\n  pathPrefix = prefix;\n}\nexport function getPathPrefix() {\n  return pathPrefix;\n}\nexport function addAliases(aliases) {\n  Object.assign(fileAliases, aliases);\n}\nexport function resolvePath(filename) {\n  for (const alias in fileAliases) {\n    if (filename.startsWith(alias)) {\n      const replacement = fileAliases[alias];\n      filename = filename.replace(alias, replacement);\n    }\n  }\n  if (!filename.startsWith('http://') && !filename.startsWith('https://')) {\n    filename = \"\".concat(pathPrefix).concat(filename);\n  }\n  return filename;\n}\n//# sourceMappingURL=file-aliases.js.map","const DATA_URL_PATTERN = /^data:([-\\w.]+\\/[-\\w.+]+)(;|,)/;\nconst MIME_TYPE_PATTERN = /^([-\\w.]+\\/[-\\w.+]+)/;\nexport function parseMIMEType(mimeString) {\n  const matches = MIME_TYPE_PATTERN.exec(mimeString);\n  if (matches) {\n    return matches[1];\n  }\n  return mimeString;\n}\nexport function parseMIMETypeFromURL(url) {\n  const matches = DATA_URL_PATTERN.exec(url);\n  if (matches) {\n    return matches[1];\n  }\n  return '';\n}\n//# sourceMappingURL=mime-type-utils.js.map","const QUERY_STRING_PATTERN = /\\?.*/;\nexport function extractQueryString(url) {\n  const matches = url.match(QUERY_STRING_PATTERN);\n  return matches && matches[0];\n}\nexport function stripQueryString(url) {\n  return url.replace(QUERY_STRING_PATTERN, '');\n}\n//# sourceMappingURL=url-utils.js.map","import { isResponse, isBlob } from '../../javascript-utils/is-type';\nimport { parseMIMEType, parseMIMETypeFromURL } from './mime-type-utils';\nimport { stripQueryString } from './url-utils';\nexport function getResourceUrl(resource) {\n  if (isResponse(resource)) {\n    const response = resource;\n    return response.url;\n  }\n  if (isBlob(resource)) {\n    const blob = resource;\n    return blob.name || '';\n  }\n  if (typeof resource === 'string') {\n    return resource;\n  }\n  return '';\n}\nexport function getResourceMIMEType(resource) {\n  if (isResponse(resource)) {\n    const response = resource;\n    const contentTypeHeader = response.headers.get('content-type') || '';\n    const noQueryUrl = stripQueryString(response.url);\n    return parseMIMEType(contentTypeHeader) || parseMIMETypeFromURL(noQueryUrl);\n  }\n  if (isBlob(resource)) {\n    const blob = resource;\n    return blob.type || '';\n  }\n  if (typeof resource === 'string') {\n    return parseMIMETypeFromURL(resource);\n  }\n  return '';\n}\nexport function getResourceContentLength(resource) {\n  if (isResponse(resource)) {\n    const response = resource;\n    return response.headers['content-length'] || -1;\n  }\n  if (isBlob(resource)) {\n    const blob = resource;\n    return blob.size;\n  }\n  if (typeof resource === 'string') {\n    return resource.length;\n  }\n  if (resource instanceof ArrayBuffer) {\n    return resource.byteLength;\n  }\n  if (ArrayBuffer.isView(resource)) {\n    return resource.byteLength;\n  }\n  return -1;\n}\n//# sourceMappingURL=resource-utils.js.map","import { isResponse } from '../../javascript-utils/is-type';\nimport { getResourceContentLength, getResourceUrl, getResourceMIMEType } from './resource-utils';\nexport async function makeResponse(resource) {\n  if (isResponse(resource)) {\n    return resource;\n  }\n  const headers = {};\n  const contentLength = getResourceContentLength(resource);\n  if (contentLength >= 0) {\n    headers['content-length'] = String(contentLength);\n  }\n  const url = getResourceUrl(resource);\n  const type = getResourceMIMEType(resource);\n  if (type) {\n    headers['content-type'] = type;\n  }\n  const initialDataUrl = await getInitialDataUrl(resource);\n  if (initialDataUrl) {\n    headers['x-first-bytes'] = initialDataUrl;\n  }\n  if (typeof resource === 'string') {\n    resource = new TextEncoder().encode(resource);\n  }\n  const response = new Response(resource, {\n    headers\n  });\n  Object.defineProperty(response, 'url', {\n    value: url\n  });\n  return response;\n}\nexport async function checkResponse(response) {\n  if (!response.ok) {\n    const message = await getResponseError(response);\n    throw new Error(message);\n  }\n}\nexport function checkResponseSync(response) {\n  if (!response.ok) {\n    let message = \"\".concat(response.status, \" \").concat(response.statusText);\n    message = message.length > 60 ? \"\".concat(message.slice(0, 60), \"...\") : message;\n    throw new Error(message);\n  }\n}\nasync function getResponseError(response) {\n  let message = \"Failed to fetch resource \".concat(response.url, \" (\").concat(response.status, \"): \");\n  try {\n    const contentType = response.headers.get('Content-Type');\n    let text = response.statusText;\n    if (contentType.includes('application/json')) {\n      text += \" \".concat(await response.text());\n    }\n    message += text;\n    message = message.length > 60 ? \"\".concat(message.slice(0, 60), \"...\") : message;\n  } catch (error) {}\n  return message;\n}\nasync function getInitialDataUrl(resource) {\n  const INITIAL_DATA_LENGTH = 5;\n  if (typeof resource === 'string') {\n    return \"data:,\".concat(resource.slice(0, INITIAL_DATA_LENGTH));\n  }\n  if (resource instanceof Blob) {\n    const blobSlice = resource.slice(0, 5);\n    return await new Promise(resolve => {\n      const reader = new FileReader();\n      reader.onload = event => {\n        var _event$target;\n        return resolve(event === null || event === void 0 ? void 0 : (_event$target = event.target) === null || _event$target === void 0 ? void 0 : _event$target.result);\n      };\n      reader.readAsDataURL(blobSlice);\n    });\n  }\n  if (resource instanceof ArrayBuffer) {\n    const slice = resource.slice(0, INITIAL_DATA_LENGTH);\n    const base64 = arrayBufferToBase64(slice);\n    return \"data:base64,\".concat(base64);\n  }\n  return null;\n}\nfunction arrayBufferToBase64(buffer) {\n  let binary = '';\n  const bytes = new Uint8Array(buffer);\n  for (let i = 0; i < bytes.byteLength; i++) {\n    binary += String.fromCharCode(bytes[i]);\n  }\n  return btoa(binary);\n}\n//# sourceMappingURL=response-utils.js.map","import { resolvePath } from '@loaders.gl/loader-utils';\nimport { makeResponse } from '../utils/response-utils';\nexport async function fetchFile(url, options) {\n  if (typeof url === 'string') {\n    url = resolvePath(url);\n    let fetchOptions = options;\n    if (options !== null && options !== void 0 && options.fetch && typeof (options === null || options === void 0 ? void 0 : options.fetch) !== 'function') {\n      fetchOptions = options.fetch;\n    }\n    return await fetch(url, fetchOptions);\n  }\n  return await makeResponse(url);\n}\n//# sourceMappingURL=fetch-file.js.map","import { isObject } from '../../javascript-utils/is-type';\nimport { fetchFile } from '../fetch/fetch-file';\nimport { getGlobalLoaderOptions } from './option-utils';\nexport function getFetchFunction(options, context) {\n  const globalOptions = getGlobalLoaderOptions();\n  const fetchOptions = options || globalOptions;\n  if (typeof fetchOptions.fetch === 'function') {\n    return fetchOptions.fetch;\n  }\n  if (isObject(fetchOptions.fetch)) {\n    return url => fetchFile(url, fetchOptions);\n  }\n  if (context !== null && context !== void 0 && context.fetch) {\n    return context === null || context === void 0 ? void 0 : context.fetch;\n  }\n  return fetchFile;\n}\n//# sourceMappingURL=get-fetch-function.js.map","export class Worker {\n  terminate() {}\n}\nexport { Worker as NodeWorker };\nexport { Worker as NodeWorkerType };\nexport const parentPort = null;\n//# sourceMappingURL=worker_threads-browser.js.map","import { assert } from '../env-utils/assert';\nconst workerURLCache = new Map();\nexport function getLoadableWorkerURL(props) {\n  assert(props.source && !props.url || !props.source && props.url);\n  let workerURL = workerURLCache.get(props.source || props.url);\n  if (!workerURL) {\n    if (props.url) {\n      workerURL = getLoadableWorkerURLFromURL(props.url);\n      workerURLCache.set(props.url, workerURL);\n    }\n    if (props.source) {\n      workerURL = getLoadableWorkerURLFromSource(props.source);\n      workerURLCache.set(props.source, workerURL);\n    }\n  }\n  assert(workerURL);\n  return workerURL;\n}\nfunction getLoadableWorkerURLFromURL(url) {\n  if (!url.startsWith('http')) {\n    return url;\n  }\n  const workerSource = buildScriptSource(url);\n  return getLoadableWorkerURLFromSource(workerSource);\n}\nfunction getLoadableWorkerURLFromSource(workerSource) {\n  const blob = new Blob([workerSource], {\n    type: 'application/javascript'\n  });\n  return URL.createObjectURL(blob);\n}\nfunction buildScriptSource(workerUrl) {\n  return \"try {\\n  importScripts('\".concat(workerUrl, \"');\\n} catch (error) {\\n  console.error(error);\\n  throw error;\\n}\");\n}\n//# sourceMappingURL=get-loadable-worker-url.js.map","export function getTransferList(object) {\n  let recursive = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n  let transfers = arguments.length > 2 ? arguments[2] : undefined;\n  const transfersSet = transfers || new Set();\n  if (!object) {} else if (isTransferable(object)) {\n    transfersSet.add(object);\n  } else if (isTransferable(object.buffer)) {\n    transfersSet.add(object.buffer);\n  } else if (ArrayBuffer.isView(object)) {} else if (recursive && typeof object === 'object') {\n    for (const key in object) {\n      getTransferList(object[key], recursive, transfersSet);\n    }\n  }\n  return transfers === undefined ? Array.from(transfersSet) : [];\n}\nfunction isTransferable(object) {\n  if (!object) {\n    return false;\n  }\n  if (object instanceof ArrayBuffer) {\n    return true;\n  }\n  if (typeof MessagePort !== 'undefined' && object instanceof MessagePort) {\n    return true;\n  }\n  if (typeof ImageBitmap !== 'undefined' && object instanceof ImageBitmap) {\n    return true;\n  }\n  if (typeof OffscreenCanvas !== 'undefined' && object instanceof OffscreenCanvas) {\n    return true;\n  }\n  return false;\n}\nexport function getTransferListForWriter(object) {\n  if (object === null) {\n    return {};\n  }\n  const clone = Object.assign({}, object);\n  Object.keys(clone).forEach(key => {\n    if (typeof object[key] === 'object' && !ArrayBuffer.isView(object[key]) && !(object[key] instanceof Array)) {\n      clone[key] = getTransferListForWriter(object[key]);\n    } else if (typeof clone[key] === 'function' || clone[key] instanceof RegExp) {\n      clone[key] = {};\n    } else {\n      clone[key] = object[key];\n    }\n  });\n  return clone;\n}\n//# sourceMappingURL=get-transfer-list.js.map","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { NodeWorker } from '../node/worker_threads';\nimport { isBrowser } from '../env-utils/globals';\nimport { assert } from '../env-utils/assert';\nimport { getLoadableWorkerURL } from '../worker-utils/get-loadable-worker-url';\nimport { getTransferList } from '../worker-utils/get-transfer-list';\nconst NOOP = () => {};\nexport default class WorkerThread {\n  static isSupported() {\n    return typeof Worker !== 'undefined' && isBrowser || typeof NodeWorker !== 'undefined' && !isBrowser;\n  }\n  constructor(props) {\n    _defineProperty(this, \"name\", void 0);\n    _defineProperty(this, \"source\", void 0);\n    _defineProperty(this, \"url\", void 0);\n    _defineProperty(this, \"terminated\", false);\n    _defineProperty(this, \"worker\", void 0);\n    _defineProperty(this, \"onMessage\", void 0);\n    _defineProperty(this, \"onError\", void 0);\n    _defineProperty(this, \"_loadableURL\", '');\n    const {\n      name,\n      source,\n      url\n    } = props;\n    assert(source || url);\n    this.name = name;\n    this.source = source;\n    this.url = url;\n    this.onMessage = NOOP;\n    this.onError = error => console.log(error);\n    this.worker = isBrowser ? this._createBrowserWorker() : this._createNodeWorker();\n  }\n  destroy() {\n    this.onMessage = NOOP;\n    this.onError = NOOP;\n    this.worker.terminate();\n    this.terminated = true;\n  }\n  get isRunning() {\n    return Boolean(this.onMessage);\n  }\n  postMessage(data, transferList) {\n    transferList = transferList || getTransferList(data);\n    this.worker.postMessage(data, transferList);\n  }\n  _getErrorFromErrorEvent(event) {\n    let message = 'Failed to load ';\n    message += \"worker \".concat(this.name, \" from \").concat(this.url, \". \");\n    if (event.message) {\n      message += \"\".concat(event.message, \" in \");\n    }\n    if (event.lineno) {\n      message += \":\".concat(event.lineno, \":\").concat(event.colno);\n    }\n    return new Error(message);\n  }\n  _createBrowserWorker() {\n    this._loadableURL = getLoadableWorkerURL({\n      source: this.source,\n      url: this.url\n    });\n    const worker = new Worker(this._loadableURL, {\n      name: this.name\n    });\n    worker.onmessage = event => {\n      if (!event.data) {\n        this.onError(new Error('No data received'));\n      } else {\n        this.onMessage(event.data);\n      }\n    };\n    worker.onerror = error => {\n      this.onError(this._getErrorFromErrorEvent(error));\n      this.terminated = true;\n    };\n    worker.onmessageerror = event => console.error(event);\n    return worker;\n  }\n  _createNodeWorker() {\n    let worker;\n    if (this.url) {\n      const absolute = this.url.includes(':/') || this.url.startsWith('/');\n      const url = absolute ? this.url : \"./\".concat(this.url);\n      worker = new NodeWorker(url, {\n        eval: false\n      });\n    } else if (this.source) {\n      worker = new NodeWorker(this.source, {\n        eval: true\n      });\n    } else {\n      throw new Error('no worker');\n    }\n    worker.on('message', data => {\n      this.onMessage(data);\n    });\n    worker.on('error', error => {\n      this.onError(error);\n    });\n    worker.on('exit', code => {});\n    return worker;\n  }\n}\n//# sourceMappingURL=worker-thread.js.map","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { assert } from '../env-utils/assert';\nexport default class WorkerJob {\n  constructor(jobName, workerThread) {\n    _defineProperty(this, \"name\", void 0);\n    _defineProperty(this, \"workerThread\", void 0);\n    _defineProperty(this, \"isRunning\", true);\n    _defineProperty(this, \"result\", void 0);\n    _defineProperty(this, \"_resolve\", () => {});\n    _defineProperty(this, \"_reject\", () => {});\n    this.name = jobName;\n    this.workerThread = workerThread;\n    this.result = new Promise((resolve, reject) => {\n      this._resolve = resolve;\n      this._reject = reject;\n    });\n  }\n  postMessage(type, payload) {\n    this.workerThread.postMessage({\n      source: 'loaders.gl',\n      type,\n      payload\n    });\n  }\n  done(value) {\n    assert(this.isRunning);\n    this.isRunning = false;\n    this._resolve(value);\n  }\n  error(error) {\n    assert(this.isRunning);\n    this.isRunning = false;\n    this._reject(error);\n  }\n}\n//# sourceMappingURL=worker-job.js.map","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { isMobile } from '../env-utils/globals';\nimport WorkerThread from './worker-thread';\nimport WorkerJob from './worker-job';\nexport default class WorkerPool {\n  static isSupported() {\n    return WorkerThread.isSupported();\n  }\n  constructor(props) {\n    _defineProperty(this, \"name\", 'unnamed');\n    _defineProperty(this, \"source\", void 0);\n    _defineProperty(this, \"url\", void 0);\n    _defineProperty(this, \"maxConcurrency\", 1);\n    _defineProperty(this, \"maxMobileConcurrency\", 1);\n    _defineProperty(this, \"onDebug\", () => {});\n    _defineProperty(this, \"reuseWorkers\", true);\n    _defineProperty(this, \"props\", {});\n    _defineProperty(this, \"jobQueue\", []);\n    _defineProperty(this, \"idleQueue\", []);\n    _defineProperty(this, \"count\", 0);\n    _defineProperty(this, \"isDestroyed\", false);\n    this.source = props.source;\n    this.url = props.url;\n    this.setProps(props);\n  }\n  destroy() {\n    this.idleQueue.forEach(worker => worker.destroy());\n    this.isDestroyed = true;\n  }\n  setProps(props) {\n    this.props = {\n      ...this.props,\n      ...props\n    };\n    if (props.name !== undefined) {\n      this.name = props.name;\n    }\n    if (props.maxConcurrency !== undefined) {\n      this.maxConcurrency = props.maxConcurrency;\n    }\n    if (props.maxMobileConcurrency !== undefined) {\n      this.maxMobileConcurrency = props.maxMobileConcurrency;\n    }\n    if (props.reuseWorkers !== undefined) {\n      this.reuseWorkers = props.reuseWorkers;\n    }\n    if (props.onDebug !== undefined) {\n      this.onDebug = props.onDebug;\n    }\n  }\n  async startJob(name) {\n    let onMessage = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : (job, type, data) => job.done(data);\n    let onError = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : (job, error) => job.error(error);\n    const startPromise = new Promise(onStart => {\n      this.jobQueue.push({\n        name,\n        onMessage,\n        onError,\n        onStart\n      });\n      return this;\n    });\n    this._startQueuedJob();\n    return await startPromise;\n  }\n  async _startQueuedJob() {\n    if (!this.jobQueue.length) {\n      return;\n    }\n    const workerThread = this._getAvailableWorker();\n    if (!workerThread) {\n      return;\n    }\n    const queuedJob = this.jobQueue.shift();\n    if (queuedJob) {\n      this.onDebug({\n        message: 'Starting job',\n        name: queuedJob.name,\n        workerThread,\n        backlog: this.jobQueue.length\n      });\n      const job = new WorkerJob(queuedJob.name, workerThread);\n      workerThread.onMessage = data => queuedJob.onMessage(job, data.type, data.payload);\n      workerThread.onError = error => queuedJob.onError(job, error);\n      queuedJob.onStart(job);\n      try {\n        await job.result;\n      } finally {\n        this.returnWorkerToQueue(workerThread);\n      }\n    }\n  }\n  returnWorkerToQueue(worker) {\n    const shouldDestroyWorker = this.isDestroyed || !this.reuseWorkers || this.count > this._getMaxConcurrency();\n    if (shouldDestroyWorker) {\n      worker.destroy();\n      this.count--;\n    } else {\n      this.idleQueue.push(worker);\n    }\n    if (!this.isDestroyed) {\n      this._startQueuedJob();\n    }\n  }\n  _getAvailableWorker() {\n    if (this.idleQueue.length > 0) {\n      return this.idleQueue.shift() || null;\n    }\n    if (this.count < this._getMaxConcurrency()) {\n      this.count++;\n      const name = \"\".concat(this.name.toLowerCase(), \" (#\").concat(this.count, \" of \").concat(this.maxConcurrency, \")\");\n      return new WorkerThread({\n        name,\n        source: this.source,\n        url: this.url\n      });\n    }\n    return null;\n  }\n  _getMaxConcurrency() {\n    return isMobile ? this.maxMobileConcurrency : this.maxConcurrency;\n  }\n}\n//# sourceMappingURL=worker-pool.js.map","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport WorkerPool from './worker-pool';\nimport WorkerThread from './worker-thread';\nconst DEFAULT_PROPS = {\n  maxConcurrency: 3,\n  maxMobileConcurrency: 1,\n  reuseWorkers: true,\n  onDebug: () => {}\n};\nexport default class WorkerFarm {\n  static isSupported() {\n    return WorkerThread.isSupported();\n  }\n  static getWorkerFarm() {\n    let props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n    WorkerFarm._workerFarm = WorkerFarm._workerFarm || new WorkerFarm({});\n    WorkerFarm._workerFarm.setProps(props);\n    return WorkerFarm._workerFarm;\n  }\n  constructor(props) {\n    _defineProperty(this, \"props\", void 0);\n    _defineProperty(this, \"workerPools\", new Map());\n    this.props = {\n      ...DEFAULT_PROPS\n    };\n    this.setProps(props);\n    this.workerPools = new Map();\n  }\n  destroy() {\n    for (const workerPool of this.workerPools.values()) {\n      workerPool.destroy();\n    }\n    this.workerPools = new Map();\n  }\n  setProps(props) {\n    this.props = {\n      ...this.props,\n      ...props\n    };\n    for (const workerPool of this.workerPools.values()) {\n      workerPool.setProps(this._getWorkerPoolProps());\n    }\n  }\n  getWorkerPool(options) {\n    const {\n      name,\n      source,\n      url\n    } = options;\n    let workerPool = this.workerPools.get(name);\n    if (!workerPool) {\n      workerPool = new WorkerPool({\n        name,\n        source,\n        url\n      });\n      workerPool.setProps(this._getWorkerPoolProps());\n      this.workerPools.set(name, workerPool);\n    }\n    return workerPool;\n  }\n  _getWorkerPoolProps() {\n    return {\n      maxConcurrency: this.props.maxConcurrency,\n      maxMobileConcurrency: this.props.maxMobileConcurrency,\n      reuseWorkers: this.props.reuseWorkers,\n      onDebug: this.props.onDebug\n    };\n  }\n}\n_defineProperty(WorkerFarm, \"_workerFarm\", void 0);\n//# sourceMappingURL=worker-farm.js.map","import { assert } from '../env-utils/assert';\nimport { VERSION as __VERSION__ } from '../env-utils/version';\nconst NPM_TAG = 'latest';\nconst VERSION = typeof \"3.4.15\" !== 'undefined' ? \"3.4.15\" : NPM_TAG;\nexport function getWorkerName(worker) {\n  const warning = worker.version !== VERSION ? \" (worker-utils@\".concat(VERSION, \")\") : '';\n  return \"\".concat(worker.name, \"@\").concat(worker.version).concat(warning);\n}\nexport function getWorkerURL(worker) {\n  let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n  const workerOptions = options[worker.id] || {};\n  const workerFile = \"\".concat(worker.id, \"-worker.js\");\n  let url = workerOptions.workerUrl;\n  if (!url && worker.id === 'compression') {\n    url = options.workerUrl;\n  }\n  if (options._workerType === 'test') {\n    url = \"modules/\".concat(worker.module, \"/dist/\").concat(workerFile);\n  }\n  if (!url) {\n    let version = worker.version;\n    if (version === 'latest') {\n      version = NPM_TAG;\n    }\n    const versionTag = version ? \"@\".concat(version) : '';\n    url = \"https://unpkg.com/@loaders.gl/\".concat(worker.module).concat(versionTag, \"/dist/\").concat(workerFile);\n  }\n  assert(url);\n  return url;\n}\n//# sourceMappingURL=get-worker-url.js.map","import { isBrowser } from '@loaders.gl/worker-utils';\nimport { WorkerFarm, getWorkerURL } from '@loaders.gl/worker-utils';\nexport function canParseWithWorker(loader, options) {\n  if (!WorkerFarm.isSupported()) {\n    return false;\n  }\n  if (!isBrowser && !(options !== null && options !== void 0 && options._nodeWorkers)) {\n    return false;\n  }\n  return loader.worker && (options === null || options === void 0 ? void 0 : options.worker);\n}\nexport async function parseWithWorker(loader, data, options, context, parseOnMainThread) {\n  const name = loader.id;\n  const url = getWorkerURL(loader, options);\n  const workerFarm = WorkerFarm.getWorkerFarm(options);\n  const workerPool = workerFarm.getWorkerPool({\n    name,\n    url\n  });\n  options = JSON.parse(JSON.stringify(options));\n  context = JSON.parse(JSON.stringify(context || {}));\n  const job = await workerPool.startJob('process-on-worker', onMessage.bind(null, parseOnMainThread));\n  job.postMessage('process', {\n    input: data,\n    options,\n    context\n  });\n  const result = await job.result;\n  return await result.result;\n}\nasync function onMessage(parseOnMainThread, job, type, payload) {\n  switch (type) {\n    case 'done':\n      job.done(payload);\n      break;\n    case 'error':\n      job.error(new Error(payload.error));\n      break;\n    case 'process':\n      const {\n        id,\n        input,\n        options\n      } = payload;\n      try {\n        const result = await parseOnMainThread(input, options);\n        job.postMessage('done', {\n          id,\n          result\n        });\n      } catch (error) {\n        const message = error instanceof Error ? error.message : 'unknown error';\n        job.postMessage('error', {\n          id,\n          error: message\n        });\n      }\n      break;\n    default:\n      console.warn(\"parse-with-worker unknown message \".concat(type));\n  }\n}\n//# sourceMappingURL=parse-with-worker.js.map","const DEFAULT_CHUNK_SIZE = 256 * 1024;\nexport function* makeStringIterator(string, options) {\n  const chunkSize = (options === null || options === void 0 ? void 0 : options.chunkSize) || DEFAULT_CHUNK_SIZE;\n  let offset = 0;\n  const textEncoder = new TextEncoder();\n  while (offset < string.length) {\n    const chunkLength = Math.min(string.length - offset, chunkSize);\n    const chunk = string.slice(offset, offset + chunkLength);\n    offset += chunkLength;\n    yield textEncoder.encode(chunk);\n  }\n}\n//# sourceMappingURL=make-string-iterator.js.map","const DEFAULT_CHUNK_SIZE = 256 * 1024;\nexport function makeArrayBufferIterator(arrayBuffer) {\n  let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n  return function* () {\n    const {\n      chunkSize = DEFAULT_CHUNK_SIZE\n    } = options;\n    let byteOffset = 0;\n    while (byteOffset < arrayBuffer.byteLength) {\n      const chunkByteLength = Math.min(arrayBuffer.byteLength - byteOffset, chunkSize);\n      const chunk = new ArrayBuffer(chunkByteLength);\n      const sourceArray = new Uint8Array(arrayBuffer, byteOffset, chunkByteLength);\n      const chunkArray = new Uint8Array(chunk);\n      chunkArray.set(sourceArray);\n      byteOffset += chunkByteLength;\n      yield chunk;\n    }\n  }();\n}\n//# sourceMappingURL=make-array-buffer-iterator.js.map","const DEFAULT_CHUNK_SIZE = 1024 * 1024;\nexport async function* makeBlobIterator(blob, options) {\n  const chunkSize = (options === null || options === void 0 ? void 0 : options.chunkSize) || DEFAULT_CHUNK_SIZE;\n  let offset = 0;\n  while (offset < blob.size) {\n    const end = offset + chunkSize;\n    const chunk = await blob.slice(offset, end).arrayBuffer();\n    offset = end;\n    yield chunk;\n  }\n}\n//# sourceMappingURL=make-blob-iterator.js.map","import * as node from '../node/buffer';\nexport function isBuffer(value) {\n  return value && typeof value === 'object' && value.isBuffer;\n}\nexport function toBuffer(data) {\n  return node.toBuffer ? node.toBuffer(data) : data;\n}\nexport function toArrayBuffer(data) {\n  if (isBuffer(data)) {\n    return node.toArrayBuffer(data);\n  }\n  if (data instanceof ArrayBuffer) {\n    return data;\n  }\n  if (ArrayBuffer.isView(data)) {\n    if (data.byteOffset === 0 && data.byteLength === data.buffer.byteLength) {\n      return data.buffer;\n    }\n    return data.buffer.slice(data.byteOffset, data.byteOffset + data.byteLength);\n  }\n  if (typeof data === 'string') {\n    const text = data;\n    const uint8Array = new TextEncoder().encode(text);\n    return uint8Array.buffer;\n  }\n  if (data && typeof data === 'object' && data._toArrayBuffer) {\n    return data._toArrayBuffer();\n  }\n  throw new Error('toArrayBuffer');\n}\n//# sourceMappingURL=memory-conversion-utils.js.map","import { isBrowser, toArrayBuffer } from '@loaders.gl/loader-utils';\nexport function makeStreamIterator(stream, options) {\n  return isBrowser ? makeBrowserStreamIterator(stream, options) : makeNodeStreamIterator(stream, options);\n}\nasync function* makeBrowserStreamIterator(stream, options) {\n  const reader = stream.getReader();\n  let nextBatchPromise;\n  try {\n    while (true) {\n      const currentBatchPromise = nextBatchPromise || reader.read();\n      if (options !== null && options !== void 0 && options._streamReadAhead) {\n        nextBatchPromise = reader.read();\n      }\n      const {\n        done,\n        value\n      } = await currentBatchPromise;\n      if (done) {\n        return;\n      }\n      yield toArrayBuffer(value);\n    }\n  } catch (error) {\n    reader.releaseLock();\n  }\n}\nasync function* makeNodeStreamIterator(stream, options) {\n  for await (const chunk of stream) {\n    yield toArrayBuffer(chunk);\n  }\n}\n//# sourceMappingURL=make-stream-iterator.js.map","import { concatenateArrayBuffersAsync } from '@loaders.gl/loader-utils';\nimport { isResponse, isReadableStream, isAsyncIterable, isIterable, isIterator, isBlob, isBuffer } from '../../javascript-utils/is-type';\nimport { makeIterator } from '../../iterators/make-iterator/make-iterator';\nimport { checkResponse, makeResponse } from '../utils/response-utils';\nconst ERR_DATA = 'Cannot convert supplied data type';\nexport function getArrayBufferOrStringFromDataSync(data, loader, options) {\n  if (loader.text && typeof data === 'string') {\n    return data;\n  }\n  if (isBuffer(data)) {\n    data = data.buffer;\n  }\n  if (data instanceof ArrayBuffer) {\n    const arrayBuffer = data;\n    if (loader.text && !loader.binary) {\n      const textDecoder = new TextDecoder('utf8');\n      return textDecoder.decode(arrayBuffer);\n    }\n    return arrayBuffer;\n  }\n  if (ArrayBuffer.isView(data)) {\n    if (loader.text && !loader.binary) {\n      const textDecoder = new TextDecoder('utf8');\n      return textDecoder.decode(data);\n    }\n    let arrayBuffer = data.buffer;\n    const byteLength = data.byteLength || data.length;\n    if (data.byteOffset !== 0 || byteLength !== arrayBuffer.byteLength) {\n      arrayBuffer = arrayBuffer.slice(data.byteOffset, data.byteOffset + byteLength);\n    }\n    return arrayBuffer;\n  }\n  throw new Error(ERR_DATA);\n}\nexport async function getArrayBufferOrStringFromData(data, loader, options) {\n  const isArrayBuffer = data instanceof ArrayBuffer || ArrayBuffer.isView(data);\n  if (typeof data === 'string' || isArrayBuffer) {\n    return getArrayBufferOrStringFromDataSync(data, loader, options);\n  }\n  if (isBlob(data)) {\n    data = await makeResponse(data);\n  }\n  if (isResponse(data)) {\n    const response = data;\n    await checkResponse(response);\n    return loader.binary ? await response.arrayBuffer() : await response.text();\n  }\n  if (isReadableStream(data)) {\n    data = makeIterator(data, options);\n  }\n  if (isIterable(data) || isAsyncIterable(data)) {\n    return concatenateArrayBuffersAsync(data);\n  }\n  throw new Error(ERR_DATA);\n}\nexport async function getAsyncIterableFromData(data, options) {\n  if (isIterator(data)) {\n    return data;\n  }\n  if (isResponse(data)) {\n    const response = data;\n    await checkResponse(response);\n    const body = await response.body;\n    return makeIterator(body, options);\n  }\n  if (isBlob(data) || isReadableStream(data)) {\n    return makeIterator(data, options);\n  }\n  if (isAsyncIterable(data)) {\n    return data[Symbol.asyncIterator]();\n  }\n  return getIterableFromData(data);\n}\nexport async function getReadableStream(data) {\n  if (isReadableStream(data)) {\n    return data;\n  }\n  if (isResponse(data)) {\n    return data.body;\n  }\n  const response = await makeResponse(data);\n  return response.body;\n}\nfunction getIterableFromData(data) {\n  if (ArrayBuffer.isView(data)) {\n    return function* oneChunk() {\n      yield data.buffer;\n    }();\n  }\n  if (data instanceof ArrayBuffer) {\n    return function* oneChunk() {\n      yield data;\n    }();\n  }\n  if (isIterator(data)) {\n    return data;\n  }\n  if (isIterable(data)) {\n    return data[Symbol.iterator]();\n  }\n  throw new Error(ERR_DATA);\n}\n//# sourceMappingURL=get-data.js.map","import { makeStringIterator } from './make-string-iterator';\nimport { makeArrayBufferIterator } from './make-array-buffer-iterator';\nimport { makeBlobIterator } from './make-blob-iterator';\nimport { makeStreamIterator } from './make-stream-iterator';\nimport { isBlob, isReadableStream, isResponse } from '../../javascript-utils/is-type';\nexport function makeIterator(data, options) {\n  if (typeof data === 'string') {\n    return makeStringIterator(data, options);\n  }\n  if (data instanceof ArrayBuffer) {\n    return makeArrayBufferIterator(data, options);\n  }\n  if (isBlob(data)) {\n    return makeBlobIterator(data, options);\n  }\n  if (isReadableStream(data)) {\n    return makeStreamIterator(data, options);\n  }\n  if (isResponse(data)) {\n    const response = data;\n    return makeStreamIterator(response.body, options);\n  }\n  throw new Error('makeIterator');\n}\n//# sourceMappingURL=make-iterator.js.map","import { concatenateArrayBuffers } from '../binary-utils/array-buffer-utils';\nexport async function forEach(iterator, visitor) {\n  while (true) {\n    const {\n      done,\n      value\n    } = await iterator.next();\n    if (done) {\n      iterator.return();\n      return;\n    }\n    const cancel = visitor(value);\n    if (cancel) {\n      return;\n    }\n  }\n}\nexport async function concatenateArrayBuffersAsync(asyncIterator) {\n  const arrayBuffers = [];\n  for await (const chunk of asyncIterator) {\n    arrayBuffers.push(chunk);\n  }\n  return concatenateArrayBuffers(...arrayBuffers);\n}\nexport async function concatenateStringsAsync(asyncIterator) {\n  const strings = [];\n  for await (const chunk of asyncIterator) {\n    strings.push(chunk);\n  }\n  return strings.join('');\n}\n//# sourceMappingURL=async-iteration.js.map","import { Log } from '@probe.gl/log';\nexport const log = new Log({\n  id: 'loaders.gl'\n});\n//# sourceMappingURL=log.js.map","import { compareArrayBuffers, path } from '@loaders.gl/loader-utils';\nimport { normalizeLoader } from '../loader-utils/normalize-loader';\nimport { log } from '../utils/log';\nimport { getResourceUrl, getResourceMIMEType } from '../utils/resource-utils';\nimport { getRegisteredLoaders } from './register-loaders';\nimport { isBlob } from '../../javascript-utils/is-type';\nimport { stripQueryString } from '../utils/url-utils';\nconst EXT_PATTERN = /\\.([^.]+)$/;\nexport async function selectLoader(data) {\n  let loaders = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n  let options = arguments.length > 2 ? arguments[2] : undefined;\n  let context = arguments.length > 3 ? arguments[3] : undefined;\n  if (!validHTTPResponse(data)) {\n    return null;\n  }\n  let loader = selectLoaderSync(data, loaders, {\n    ...options,\n    nothrow: true\n  }, context);\n  if (loader) {\n    return loader;\n  }\n  if (isBlob(data)) {\n    data = await data.slice(0, 10).arrayBuffer();\n    loader = selectLoaderSync(data, loaders, options, context);\n  }\n  if (!loader && !(options !== null && options !== void 0 && options.nothrow)) {\n    throw new Error(getNoValidLoaderMessage(data));\n  }\n  return loader;\n}\nexport function selectLoaderSync(data) {\n  let loaders = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n  let options = arguments.length > 2 ? arguments[2] : undefined;\n  let context = arguments.length > 3 ? arguments[3] : undefined;\n  if (!validHTTPResponse(data)) {\n    return null;\n  }\n  if (loaders && !Array.isArray(loaders)) {\n    return normalizeLoader(loaders);\n  }\n  let candidateLoaders = [];\n  if (loaders) {\n    candidateLoaders = candidateLoaders.concat(loaders);\n  }\n  if (!(options !== null && options !== void 0 && options.ignoreRegisteredLoaders)) {\n    candidateLoaders.push(...getRegisteredLoaders());\n  }\n  normalizeLoaders(candidateLoaders);\n  const loader = selectLoaderInternal(data, candidateLoaders, options, context);\n  if (!loader && !(options !== null && options !== void 0 && options.nothrow)) {\n    throw new Error(getNoValidLoaderMessage(data));\n  }\n  return loader;\n}\nfunction selectLoaderInternal(data, loaders, options, context) {\n  const url = getResourceUrl(data);\n  const type = getResourceMIMEType(data);\n  const testUrl = stripQueryString(url) || (context === null || context === void 0 ? void 0 : context.url);\n  let loader = null;\n  let reason = '';\n  if (options !== null && options !== void 0 && options.mimeType) {\n    loader = findLoaderByMIMEType(loaders, options === null || options === void 0 ? void 0 : options.mimeType);\n    reason = \"match forced by supplied MIME type \".concat(options === null || options === void 0 ? void 0 : options.mimeType);\n  }\n  loader = loader || findLoaderByUrl(loaders, testUrl);\n  reason = reason || (loader ? \"matched url \".concat(testUrl) : '');\n  loader = loader || findLoaderByMIMEType(loaders, type);\n  reason = reason || (loader ? \"matched MIME type \".concat(type) : '');\n  loader = loader || findLoaderByInitialBytes(loaders, data);\n  reason = reason || (loader ? \"matched initial data \".concat(getFirstCharacters(data)) : '');\n  loader = loader || findLoaderByMIMEType(loaders, options === null || options === void 0 ? void 0 : options.fallbackMimeType);\n  reason = reason || (loader ? \"matched fallback MIME type \".concat(type) : '');\n  if (reason) {\n    var _loader;\n    log.log(1, \"selectLoader selected \".concat((_loader = loader) === null || _loader === void 0 ? void 0 : _loader.name, \": \").concat(reason, \".\"));\n  }\n  return loader;\n}\nfunction validHTTPResponse(data) {\n  if (data instanceof Response) {\n    if (data.status === 204) {\n      return false;\n    }\n  }\n  return true;\n}\nfunction getNoValidLoaderMessage(data) {\n  const url = getResourceUrl(data);\n  const type = getResourceMIMEType(data);\n  let message = 'No valid loader found (';\n  message += url ? \"\".concat(path.filename(url), \", \") : 'no url provided, ';\n  message += \"MIME type: \".concat(type ? \"\\\"\".concat(type, \"\\\"\") : 'not provided', \", \");\n  const firstCharacters = data ? getFirstCharacters(data) : '';\n  message += firstCharacters ? \" first bytes: \\\"\".concat(firstCharacters, \"\\\"\") : 'first bytes: not available';\n  message += ')';\n  return message;\n}\nfunction normalizeLoaders(loaders) {\n  for (const loader of loaders) {\n    normalizeLoader(loader);\n  }\n}\nfunction findLoaderByUrl(loaders, url) {\n  const match = url && EXT_PATTERN.exec(url);\n  const extension = match && match[1];\n  return extension ? findLoaderByExtension(loaders, extension) : null;\n}\nfunction findLoaderByExtension(loaders, extension) {\n  extension = extension.toLowerCase();\n  for (const loader of loaders) {\n    for (const loaderExtension of loader.extensions) {\n      if (loaderExtension.toLowerCase() === extension) {\n        return loader;\n      }\n    }\n  }\n  return null;\n}\nfunction findLoaderByMIMEType(loaders, mimeType) {\n  for (const loader of loaders) {\n    if (loader.mimeTypes && loader.mimeTypes.includes(mimeType)) {\n      return loader;\n    }\n    if (mimeType === \"application/x.\".concat(loader.id)) {\n      return loader;\n    }\n  }\n  return null;\n}\nfunction findLoaderByInitialBytes(loaders, data) {\n  if (!data) {\n    return null;\n  }\n  for (const loader of loaders) {\n    if (typeof data === 'string') {\n      if (testDataAgainstText(data, loader)) {\n        return loader;\n      }\n    } else if (ArrayBuffer.isView(data)) {\n      if (testDataAgainstBinary(data.buffer, data.byteOffset, loader)) {\n        return loader;\n      }\n    } else if (data instanceof ArrayBuffer) {\n      const byteOffset = 0;\n      if (testDataAgainstBinary(data, byteOffset, loader)) {\n        return loader;\n      }\n    }\n  }\n  return null;\n}\nfunction testDataAgainstText(data, loader) {\n  if (loader.testText) {\n    return loader.testText(data);\n  }\n  const tests = Array.isArray(loader.tests) ? loader.tests : [loader.tests];\n  return tests.some(test => data.startsWith(test));\n}\nfunction testDataAgainstBinary(data, byteOffset, loader) {\n  const tests = Array.isArray(loader.tests) ? loader.tests : [loader.tests];\n  return tests.some(test => testBinary(data, byteOffset, loader, test));\n}\nfunction testBinary(data, byteOffset, loader, test) {\n  if (test instanceof ArrayBuffer) {\n    return compareArrayBuffers(test, data, test.byteLength);\n  }\n  switch (typeof test) {\n    case 'function':\n      return test(data, loader);\n    case 'string':\n      const magic = getMagicString(data, byteOffset, test.length);\n      return test === magic;\n    default:\n      return false;\n  }\n}\nfunction getFirstCharacters(data) {\n  let length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 5;\n  if (typeof data === 'string') {\n    return data.slice(0, length);\n  } else if (ArrayBuffer.isView(data)) {\n    return getMagicString(data.buffer, data.byteOffset, length);\n  } else if (data instanceof ArrayBuffer) {\n    const byteOffset = 0;\n    return getMagicString(data, byteOffset, length);\n  }\n  return '';\n}\nfunction getMagicString(arrayBuffer, byteOffset, length) {\n  if (arrayBuffer.byteLength < byteOffset + length) {\n    return '';\n  }\n  const dataView = new DataView(arrayBuffer);\n  let magic = '';\n  for (let i = 0; i < length; i++) {\n    magic += String.fromCharCode(dataView.getUint8(byteOffset + i));\n  }\n  return magic;\n}\n//# sourceMappingURL=select-loader.js.map","import { assert, validateWorkerVersion } from '@loaders.gl/worker-utils';\nimport { parseWithWorker, canParseWithWorker } from '@loaders.gl/loader-utils';\nimport { isLoaderObject } from '../loader-utils/normalize-loader';\nimport { isResponse } from '../../javascript-utils/is-type';\nimport { normalizeOptions } from '../loader-utils/option-utils';\nimport { getArrayBufferOrStringFromData } from '../loader-utils/get-data';\nimport { getLoaderContext, getLoadersFromContext } from '../loader-utils/loader-context';\nimport { getResourceUrl } from '../utils/resource-utils';\nimport { selectLoader } from './select-loader';\nexport async function parse(data, loaders, options, context) {\n  assert(!context || typeof context === 'object');\n  if (loaders && !Array.isArray(loaders) && !isLoaderObject(loaders)) {\n    context = undefined;\n    options = loaders;\n    loaders = undefined;\n  }\n  data = await data;\n  options = options || {};\n  const url = getResourceUrl(data);\n  const typedLoaders = loaders;\n  const candidateLoaders = getLoadersFromContext(typedLoaders, context);\n  const loader = await selectLoader(data, candidateLoaders, options);\n  if (!loader) {\n    return null;\n  }\n  options = normalizeOptions(options, loader, candidateLoaders, url);\n  context = getLoaderContext({\n    url,\n    parse,\n    loaders: candidateLoaders\n  }, options, context || null);\n  return await parseWithLoader(loader, data, options, context);\n}\nasync function parseWithLoader(loader, data, options, context) {\n  validateWorkerVersion(loader);\n  if (isResponse(data)) {\n    const response = data;\n    const {\n      ok,\n      redirected,\n      status,\n      statusText,\n      type,\n      url\n    } = response;\n    const headers = Object.fromEntries(response.headers.entries());\n    context.response = {\n      headers,\n      ok,\n      redirected,\n      status,\n      statusText,\n      type,\n      url\n    };\n  }\n  data = await getArrayBufferOrStringFromData(data, loader, options);\n  if (loader.parseTextSync && typeof data === 'string') {\n    options.dataType = 'text';\n    return loader.parseTextSync(data, options, context, loader);\n  }\n  if (canParseWithWorker(loader, options)) {\n    return await parseWithWorker(loader, data, options, context, parse);\n  }\n  if (loader.parseText && typeof data === 'string') {\n    return await loader.parseText(data, options, context, loader);\n  }\n  if (loader.parse) {\n    return await loader.parse(data, options, context, loader);\n  }\n  assert(!loader.parseSync);\n  throw new Error(\"\".concat(loader.id, \" loader - no parser found and worker is disabled\"));\n}\n//# sourceMappingURL=parse.js.map","import { getFetchFunction } from './get-fetch-function';\nimport { extractQueryString, stripQueryString } from '../utils/url-utils';\nimport { path } from '@loaders.gl/loader-utils';\nexport function getLoaderContext(context, options, parentContext) {\n  if (parentContext) {\n    return parentContext;\n  }\n  const newContext = {\n    fetch: getFetchFunction(options, context),\n    ...context\n  };\n  if (newContext.url) {\n    const baseUrl = stripQueryString(newContext.url);\n    newContext.baseUrl = baseUrl;\n    newContext.queryString = extractQueryString(newContext.url);\n    newContext.filename = path.filename(baseUrl);\n    newContext.baseUrl = path.dirname(baseUrl);\n  }\n  if (!Array.isArray(newContext.loaders)) {\n    newContext.loaders = null;\n  }\n  return newContext;\n}\nexport function getLoadersFromContext(loaders, context) {\n  if (!context && loaders && !Array.isArray(loaders)) {\n    return loaders;\n  }\n  let candidateLoaders;\n  if (loaders) {\n    candidateLoaders = Array.isArray(loaders) ? loaders : [loaders];\n  }\n  if (context && context.loaders) {\n    const contextLoaders = Array.isArray(context.loaders) ? context.loaders : [context.loaders];\n    candidateLoaders = candidateLoaders ? [...candidateLoaders, ...contextLoaders] : contextLoaders;\n  }\n  return candidateLoaders && candidateLoaders.length ? candidateLoaders : null;\n}\n//# sourceMappingURL=loader-context.js.map","import { assert } from '../env-utils/assert';\nimport { VERSION } from '../env-utils/version';\nexport function validateWorkerVersion(worker) {\n  let coreVersion = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : VERSION;\n  assert(worker, 'no worker provided');\n  const workerVersion = worker.version;\n  if (!coreVersion || !workerVersion) {\n    return false;\n  }\n  return true;\n}\nfunction parseVersion(version) {\n  const parts = version.split('.').map(Number);\n  return {\n    major: parts[0],\n    minor: parts[1]\n  };\n}\n//# sourceMappingURL=validate-worker-version.js.map","import { isBlob } from '../../javascript-utils/is-type';\nimport { isLoaderObject } from '../loader-utils/normalize-loader';\nimport { getFetchFunction } from '../loader-utils/get-fetch-function';\nimport { parse } from './parse';\nexport async function load(url, loaders, options, context) {\n  if (!Array.isArray(loaders) && !isLoaderObject(loaders)) {\n    context = undefined;\n    options = loaders;\n    loaders = undefined;\n  }\n  const fetch = getFetchFunction(options);\n  let data = url;\n  if (typeof url === 'string') {\n    data = await fetch(url);\n  }\n  if (isBlob(url)) {\n    data = await fetch(url);\n  }\n  return await parse(data, loaders, options);\n}\n//# sourceMappingURL=load.js.map","import { normalizeLoader } from '../loader-utils/normalize-loader';\nimport { getGlobalLoaderState } from '../loader-utils/option-utils';\nconst getGlobalLoaderRegistry = () => {\n  const state = getGlobalLoaderState();\n  state.loaderRegistry = state.loaderRegistry || [];\n  return state.loaderRegistry;\n};\nexport function registerLoaders(loaders) {\n  const loaderRegistry = getGlobalLoaderRegistry();\n  loaders = Array.isArray(loaders) ? loaders : [loaders];\n  for (const loader of loaders) {\n    const normalizedLoader = normalizeLoader(loader);\n    if (!loaderRegistry.find(registeredLoader => normalizedLoader === registeredLoader)) {\n      loaderRegistry.unshift(normalizedLoader);\n    }\n  }\n}\nexport function getRegisteredLoaders() {\n  return getGlobalLoaderRegistry();\n}\nexport function _unregisterLoaders() {\n  const state = getGlobalLoaderState();\n  state.loaderRegistry = [];\n}\n//# sourceMappingURL=register-loaders.js.map","import { assert } from '@loaders.gl/loader-utils';\nexport function isLoaderObject(loader) {\n  var _loader;\n  if (!loader) {\n    return false;\n  }\n  if (Array.isArray(loader)) {\n    loader = loader[0];\n  }\n  const hasExtensions = Array.isArray((_loader = loader) === null || _loader === void 0 ? void 0 : _loader.extensions);\n  return hasExtensions;\n}\nexport function normalizeLoader(loader) {\n  var _loader2, _loader3;\n  assert(loader, 'null loader');\n  assert(isLoaderObject(loader), 'invalid loader');\n  let options;\n  if (Array.isArray(loader)) {\n    options = loader[1];\n    loader = loader[0];\n    loader = {\n      ...loader,\n      options: {\n        ...loader.options,\n        ...options\n      }\n    };\n  }\n  if ((_loader2 = loader) !== null && _loader2 !== void 0 && _loader2.parseTextSync || (_loader3 = loader) !== null && _loader3 !== void 0 && _loader3.parseText) {\n    loader.text = true;\n  }\n  if (!loader.text) {\n    loader.binary = true;\n  }\n  return loader;\n}\n//# sourceMappingURL=normalize-loader.js.map","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Log } from '@probe.gl/log';\nexport const probeLog = new Log({\n  id: 'loaders.gl'\n});\nexport class NullLog {\n  log() {\n    return () => {};\n  }\n  info() {\n    return () => {};\n  }\n  warn() {\n    return () => {};\n  }\n  error() {\n    return () => {};\n  }\n}\nexport class ConsoleLog {\n  constructor() {\n    _defineProperty(this, \"console\", void 0);\n    this.console = console;\n  }\n  log() {\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n    return this.console.log.bind(this.console, ...args);\n  }\n  info() {\n    for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n      args[_key2] = arguments[_key2];\n    }\n    return this.console.info.bind(this.console, ...args);\n  }\n  warn() {\n    for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n      args[_key3] = arguments[_key3];\n    }\n    return this.console.warn.bind(this.console, ...args);\n  }\n  error() {\n    for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {\n      args[_key4] = arguments[_key4];\n    }\n    return this.console.error.bind(this.console, ...args);\n  }\n}\n//# sourceMappingURL=loggers.js.map","import { isBrowser } from '@loaders.gl/loader-utils';\nimport { ConsoleLog } from './loggers';\nexport const DEFAULT_LOADER_OPTIONS = {\n  fetch: null,\n  mimeType: undefined,\n  nothrow: false,\n  log: new ConsoleLog(),\n  CDN: 'https://unpkg.com/@loaders.gl',\n  worker: true,\n  maxConcurrency: 3,\n  maxMobileConcurrency: 1,\n  reuseWorkers: isBrowser,\n  _nodeWorkers: false,\n  _workerType: '',\n  limit: 0,\n  _limitMB: 0,\n  batchSize: 'auto',\n  batchDebounceMs: 0,\n  metadata: false,\n  transforms: []\n};\nexport const REMOVED_LOADER_OPTIONS = {\n  throws: 'nothrow',\n  dataType: '(no longer used)',\n  uri: 'baseUri',\n  method: 'fetch.method',\n  headers: 'fetch.headers',\n  body: 'fetch.body',\n  mode: 'fetch.mode',\n  credentials: 'fetch.credentials',\n  cache: 'fetch.cache',\n  redirect: 'fetch.redirect',\n  referrer: 'fetch.referrer',\n  referrerPolicy: 'fetch.referrerPolicy',\n  integrity: 'fetch.integrity',\n  keepalive: 'fetch.keepalive',\n  signal: 'fetch.signal'\n};\n//# sourceMappingURL=option-defaults.js.map","import { isPureObject, isObject } from '../../javascript-utils/is-type';\nimport { probeLog, NullLog } from './loggers';\nimport { DEFAULT_LOADER_OPTIONS, REMOVED_LOADER_OPTIONS } from './option-defaults';\nexport function getGlobalLoaderState() {\n  globalThis.loaders = globalThis.loaders || {};\n  const {\n    loaders\n  } = globalThis;\n  loaders._state = loaders._state || {};\n  return loaders._state;\n}\nexport const getGlobalLoaderOptions = () => {\n  const state = getGlobalLoaderState();\n  state.globalOptions = state.globalOptions || {\n    ...DEFAULT_LOADER_OPTIONS\n  };\n  return state.globalOptions;\n};\nexport function setGlobalOptions(options) {\n  const state = getGlobalLoaderState();\n  const globalOptions = getGlobalLoaderOptions();\n  state.globalOptions = normalizeOptionsInternal(globalOptions, options);\n}\nexport function normalizeOptions(options, loader, loaders, url) {\n  loaders = loaders || [];\n  loaders = Array.isArray(loaders) ? loaders : [loaders];\n  validateOptions(options, loaders);\n  return normalizeOptionsInternal(loader, options, url);\n}\nfunction validateOptions(options, loaders) {\n  validateOptionsObject(options, null, DEFAULT_LOADER_OPTIONS, REMOVED_LOADER_OPTIONS, loaders);\n  for (const loader of loaders) {\n    const idOptions = options && options[loader.id] || {};\n    const loaderOptions = loader.options && loader.options[loader.id] || {};\n    const deprecatedOptions = loader.deprecatedOptions && loader.deprecatedOptions[loader.id] || {};\n    validateOptionsObject(idOptions, loader.id, loaderOptions, deprecatedOptions, loaders);\n  }\n}\nfunction validateOptionsObject(options, id, defaultOptions, deprecatedOptions, loaders) {\n  const loaderName = id || 'Top level';\n  const prefix = id ? \"\".concat(id, \".\") : '';\n  for (const key in options) {\n    const isSubOptions = !id && isObject(options[key]);\n    const isBaseUriOption = key === 'baseUri' && !id;\n    const isWorkerUrlOption = key === 'workerUrl' && id;\n    if (!(key in defaultOptions) && !isBaseUriOption && !isWorkerUrlOption) {\n      if (key in deprecatedOptions) {\n        probeLog.warn(\"\".concat(loaderName, \" loader option '\").concat(prefix).concat(key, \"' no longer supported, use '\").concat(deprecatedOptions[key], \"'\"))();\n      } else if (!isSubOptions) {\n        const suggestion = findSimilarOption(key, loaders);\n        probeLog.warn(\"\".concat(loaderName, \" loader option '\").concat(prefix).concat(key, \"' not recognized. \").concat(suggestion))();\n      }\n    }\n  }\n}\nfunction findSimilarOption(optionKey, loaders) {\n  const lowerCaseOptionKey = optionKey.toLowerCase();\n  let bestSuggestion = '';\n  for (const loader of loaders) {\n    for (const key in loader.options) {\n      if (optionKey === key) {\n        return \"Did you mean '\".concat(loader.id, \".\").concat(key, \"'?\");\n      }\n      const lowerCaseKey = key.toLowerCase();\n      const isPartialMatch = lowerCaseOptionKey.startsWith(lowerCaseKey) || lowerCaseKey.startsWith(lowerCaseOptionKey);\n      if (isPartialMatch) {\n        bestSuggestion = bestSuggestion || \"Did you mean '\".concat(loader.id, \".\").concat(key, \"'?\");\n      }\n    }\n  }\n  return bestSuggestion;\n}\nfunction normalizeOptionsInternal(loader, options, url) {\n  const loaderDefaultOptions = loader.options || {};\n  const mergedOptions = {\n    ...loaderDefaultOptions\n  };\n  addUrlOptions(mergedOptions, url);\n  if (mergedOptions.log === null) {\n    mergedOptions.log = new NullLog();\n  }\n  mergeNestedFields(mergedOptions, getGlobalLoaderOptions());\n  mergeNestedFields(mergedOptions, options);\n  return mergedOptions;\n}\nfunction mergeNestedFields(mergedOptions, options) {\n  for (const key in options) {\n    if (key in options) {\n      const value = options[key];\n      if (isPureObject(value) && isPureObject(mergedOptions[key])) {\n        mergedOptions[key] = {\n          ...mergedOptions[key],\n          ...options[key]\n        };\n      } else {\n        mergedOptions[key] = options[key];\n      }\n    }\n  }\n}\nfunction addUrlOptions(options, url) {\n  if (url && !('baseUri' in options)) {\n    options.baseUri = url;\n  }\n}\n//# sourceMappingURL=option-utils.js.map","export const VERSION = typeof \"3.4.15\" !== 'undefined' ? \"3.4.15\" : 'latest';\n//# sourceMappingURL=version.js.map","import { isBrowser } from '@loaders.gl/worker-utils';\nimport { VERSION } from './lib/utils/version';\nconst DEFAULT_DRACO_OPTIONS = {\n  draco: {\n    decoderType: typeof WebAssembly === 'object' ? 'wasm' : 'js',\n    libraryPath: 'libs/',\n    extraAttributes: {},\n    attributeNameEntry: undefined\n  }\n};\nexport const DracoLoader = {\n  name: 'Draco',\n  id: isBrowser ? 'draco' : 'draco-nodejs',\n  module: 'draco',\n  shapes: ['mesh'],\n  version: VERSION,\n  worker: true,\n  extensions: ['drc'],\n  mimeTypes: ['application/octet-stream'],\n  binary: true,\n  tests: ['DRACO'],\n  options: DEFAULT_DRACO_OPTIONS\n};\nexport const _TypecheckDracoLoader = DracoLoader;\n//# sourceMappingURL=draco-loader.js.map","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nexport default class Field {\n  constructor(name, type) {\n    let nullable = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n    let metadata = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : new Map();\n    _defineProperty(this, \"name\", void 0);\n    _defineProperty(this, \"type\", void 0);\n    _defineProperty(this, \"nullable\", void 0);\n    _defineProperty(this, \"metadata\", void 0);\n    this.name = name;\n    this.type = type;\n    this.nullable = nullable;\n    this.metadata = metadata;\n  }\n  get typeId() {\n    return this.type && this.type.typeId;\n  }\n  clone() {\n    return new Field(this.name, this.type, this.nullable, this.metadata);\n  }\n  compareTo(other) {\n    return this.name === other.name && this.type === other.type && this.nullable === other.nullable && this.metadata === other.metadata;\n  }\n  toString() {\n    return \"\".concat(this.type).concat(this.nullable ? ', nullable' : '').concat(this.metadata ? \", metadata: \".concat(this.metadata) : '');\n  }\n}\n//# sourceMappingURL=field.js.map","export let Type = function (Type) {\n  Type[Type[\"NONE\"] = 0] = \"NONE\";\n  Type[Type[\"Null\"] = 1] = \"Null\";\n  Type[Type[\"Int\"] = 2] = \"Int\";\n  Type[Type[\"Float\"] = 3] = \"Float\";\n  Type[Type[\"Binary\"] = 4] = \"Binary\";\n  Type[Type[\"Utf8\"] = 5] = \"Utf8\";\n  Type[Type[\"Bool\"] = 6] = \"Bool\";\n  Type[Type[\"Decimal\"] = 7] = \"Decimal\";\n  Type[Type[\"Date\"] = 8] = \"Date\";\n  Type[Type[\"Time\"] = 9] = \"Time\";\n  Type[Type[\"Timestamp\"] = 10] = \"Timestamp\";\n  Type[Type[\"Interval\"] = 11] = \"Interval\";\n  Type[Type[\"List\"] = 12] = \"List\";\n  Type[Type[\"Struct\"] = 13] = \"Struct\";\n  Type[Type[\"Union\"] = 14] = \"Union\";\n  Type[Type[\"FixedSizeBinary\"] = 15] = \"FixedSizeBinary\";\n  Type[Type[\"FixedSizeList\"] = 16] = \"FixedSizeList\";\n  Type[Type[\"Map\"] = 17] = \"Map\";\n  Type[Type[\"Dictionary\"] = -1] = \"Dictionary\";\n  Type[Type[\"Int8\"] = -2] = \"Int8\";\n  Type[Type[\"Int16\"] = -3] = \"Int16\";\n  Type[Type[\"Int32\"] = -4] = \"Int32\";\n  Type[Type[\"Int64\"] = -5] = \"Int64\";\n  Type[Type[\"Uint8\"] = -6] = \"Uint8\";\n  Type[Type[\"Uint16\"] = -7] = \"Uint16\";\n  Type[Type[\"Uint32\"] = -8] = \"Uint32\";\n  Type[Type[\"Uint64\"] = -9] = \"Uint64\";\n  Type[Type[\"Float16\"] = -10] = \"Float16\";\n  Type[Type[\"Float32\"] = -11] = \"Float32\";\n  Type[Type[\"Float64\"] = -12] = \"Float64\";\n  Type[Type[\"DateDay\"] = -13] = \"DateDay\";\n  Type[Type[\"DateMillisecond\"] = -14] = \"DateMillisecond\";\n  Type[Type[\"TimestampSecond\"] = -15] = \"TimestampSecond\";\n  Type[Type[\"TimestampMillisecond\"] = -16] = \"TimestampMillisecond\";\n  Type[Type[\"TimestampMicrosecond\"] = -17] = \"TimestampMicrosecond\";\n  Type[Type[\"TimestampNanosecond\"] = -18] = \"TimestampNanosecond\";\n  Type[Type[\"TimeSecond\"] = -19] = \"TimeSecond\";\n  Type[Type[\"TimeMillisecond\"] = -20] = \"TimeMillisecond\";\n  Type[Type[\"TimeMicrosecond\"] = -21] = \"TimeMicrosecond\";\n  Type[Type[\"TimeNanosecond\"] = -22] = \"TimeNanosecond\";\n  Type[Type[\"DenseUnion\"] = -23] = \"DenseUnion\";\n  Type[Type[\"SparseUnion\"] = -24] = \"SparseUnion\";\n  Type[Type[\"IntervalDayTime\"] = -25] = \"IntervalDayTime\";\n  Type[Type[\"IntervalYearMonth\"] = -26] = \"IntervalYearMonth\";\n  return Type;\n}({});\n//# sourceMappingURL=enum.js.map","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nlet _Symbol$toStringTag, _Symbol$toStringTag2, _Symbol$toStringTag3, _Symbol$toStringTag4, _Symbol$toStringTag5, _Symbol$toStringTag6, _Symbol$toStringTag7, _Symbol$toStringTag8;\nimport { Type } from './enum';\nexport { Type } from './enum';\nexport class DataType {\n  static isNull(x) {\n    return x && x.typeId === Type.Null;\n  }\n  static isInt(x) {\n    return x && x.typeId === Type.Int;\n  }\n  static isFloat(x) {\n    return x && x.typeId === Type.Float;\n  }\n  static isBinary(x) {\n    return x && x.typeId === Type.Binary;\n  }\n  static isUtf8(x) {\n    return x && x.typeId === Type.Utf8;\n  }\n  static isBool(x) {\n    return x && x.typeId === Type.Bool;\n  }\n  static isDecimal(x) {\n    return x && x.typeId === Type.Decimal;\n  }\n  static isDate(x) {\n    return x && x.typeId === Type.Date;\n  }\n  static isTime(x) {\n    return x && x.typeId === Type.Time;\n  }\n  static isTimestamp(x) {\n    return x && x.typeId === Type.Timestamp;\n  }\n  static isInterval(x) {\n    return x && x.typeId === Type.Interval;\n  }\n  static isList(x) {\n    return x && x.typeId === Type.List;\n  }\n  static isStruct(x) {\n    return x && x.typeId === Type.Struct;\n  }\n  static isUnion(x) {\n    return x && x.typeId === Type.Union;\n  }\n  static isFixedSizeBinary(x) {\n    return x && x.typeId === Type.FixedSizeBinary;\n  }\n  static isFixedSizeList(x) {\n    return x && x.typeId === Type.FixedSizeList;\n  }\n  static isMap(x) {\n    return x && x.typeId === Type.Map;\n  }\n  static isDictionary(x) {\n    return x && x.typeId === Type.Dictionary;\n  }\n  get typeId() {\n    return Type.NONE;\n  }\n  compareTo(other) {\n    return this === other;\n  }\n}\nexport class Null extends DataType {\n  get typeId() {\n    return Type.Null;\n  }\n  get [Symbol.toStringTag]() {\n    return 'Null';\n  }\n  toString() {\n    return 'Null';\n  }\n}\nexport class Bool extends DataType {\n  get typeId() {\n    return Type.Bool;\n  }\n  get [Symbol.toStringTag]() {\n    return 'Bool';\n  }\n  toString() {\n    return 'Bool';\n  }\n}\n_Symbol$toStringTag = Symbol.toStringTag;\nexport class Int extends DataType {\n  constructor(isSigned, bitWidth) {\n    super();\n    _defineProperty(this, \"isSigned\", void 0);\n    _defineProperty(this, \"bitWidth\", void 0);\n    this.isSigned = isSigned;\n    this.bitWidth = bitWidth;\n  }\n  get typeId() {\n    return Type.Int;\n  }\n  get [_Symbol$toStringTag]() {\n    return 'Int';\n  }\n  toString() {\n    return \"\".concat(this.isSigned ? 'I' : 'Ui', \"nt\").concat(this.bitWidth);\n  }\n}\nexport class Int8 extends Int {\n  constructor() {\n    super(true, 8);\n  }\n}\nexport class Int16 extends Int {\n  constructor() {\n    super(true, 16);\n  }\n}\nexport class Int32 extends Int {\n  constructor() {\n    super(true, 32);\n  }\n}\nexport class Int64 extends Int {\n  constructor() {\n    super(true, 64);\n  }\n}\nexport class Uint8 extends Int {\n  constructor() {\n    super(false, 8);\n  }\n}\nexport class Uint16 extends Int {\n  constructor() {\n    super(false, 16);\n  }\n}\nexport class Uint32 extends Int {\n  constructor() {\n    super(false, 32);\n  }\n}\nexport class Uint64 extends Int {\n  constructor() {\n    super(false, 64);\n  }\n}\nconst Precision = {\n  HALF: 16,\n  SINGLE: 32,\n  DOUBLE: 64\n};\n_Symbol$toStringTag2 = Symbol.toStringTag;\nexport class Float extends DataType {\n  constructor(precision) {\n    super();\n    _defineProperty(this, \"precision\", void 0);\n    this.precision = precision;\n  }\n  get typeId() {\n    return Type.Float;\n  }\n  get [_Symbol$toStringTag2]() {\n    return 'Float';\n  }\n  toString() {\n    return \"Float\".concat(this.precision);\n  }\n}\nexport class Float16 extends Float {\n  constructor() {\n    super(Precision.HALF);\n  }\n}\nexport class Float32 extends Float {\n  constructor() {\n    super(Precision.SINGLE);\n  }\n}\nexport class Float64 extends Float {\n  constructor() {\n    super(Precision.DOUBLE);\n  }\n}\nexport class Binary extends DataType {\n  constructor() {\n    super();\n  }\n  get typeId() {\n    return Type.Binary;\n  }\n  toString() {\n    return 'Binary';\n  }\n  get [Symbol.toStringTag]() {\n    return 'Binary';\n  }\n}\nexport class Utf8 extends DataType {\n  get typeId() {\n    return Type.Utf8;\n  }\n  get [Symbol.toStringTag]() {\n    return 'Utf8';\n  }\n  toString() {\n    return 'Utf8';\n  }\n}\nconst DateUnit = {\n  DAY: 0,\n  MILLISECOND: 1\n};\n_Symbol$toStringTag3 = Symbol.toStringTag;\nexport class Date extends DataType {\n  constructor(unit) {\n    super();\n    _defineProperty(this, \"unit\", void 0);\n    this.unit = unit;\n  }\n  get typeId() {\n    return Type.Date;\n  }\n  get [_Symbol$toStringTag3]() {\n    return 'Date';\n  }\n  toString() {\n    return \"Date\".concat((this.unit + 1) * 32, \"<\").concat(DateUnit[this.unit], \">\");\n  }\n}\nexport class DateDay extends Date {\n  constructor() {\n    super(DateUnit.DAY);\n  }\n}\nexport class DateMillisecond extends Date {\n  constructor() {\n    super(DateUnit.MILLISECOND);\n  }\n}\nconst TimeUnit = {\n  SECOND: 1,\n  MILLISECOND: 1e3,\n  MICROSECOND: 1e6,\n  NANOSECOND: 1e9\n};\n_Symbol$toStringTag4 = Symbol.toStringTag;\nexport class Time extends DataType {\n  constructor(unit, bitWidth) {\n    super();\n    _defineProperty(this, \"unit\", void 0);\n    _defineProperty(this, \"bitWidth\", void 0);\n    this.unit = unit;\n    this.bitWidth = bitWidth;\n  }\n  get typeId() {\n    return Type.Time;\n  }\n  toString() {\n    return \"Time\".concat(this.bitWidth, \"<\").concat(TimeUnit[this.unit], \">\");\n  }\n  get [_Symbol$toStringTag4]() {\n    return 'Time';\n  }\n}\nexport class TimeSecond extends Time {\n  constructor() {\n    super(TimeUnit.SECOND, 32);\n  }\n}\nexport class TimeMillisecond extends Time {\n  constructor() {\n    super(TimeUnit.MILLISECOND, 32);\n  }\n}\n_Symbol$toStringTag5 = Symbol.toStringTag;\nexport class Timestamp extends DataType {\n  constructor(unit) {\n    let timezone = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n    super();\n    _defineProperty(this, \"unit\", void 0);\n    _defineProperty(this, \"timezone\", void 0);\n    this.unit = unit;\n    this.timezone = timezone;\n  }\n  get typeId() {\n    return Type.Timestamp;\n  }\n  get [_Symbol$toStringTag5]() {\n    return 'Timestamp';\n  }\n  toString() {\n    return \"Timestamp<\".concat(TimeUnit[this.unit]).concat(this.timezone ? \", \".concat(this.timezone) : '', \">\");\n  }\n}\nexport class TimestampSecond extends Timestamp {\n  constructor() {\n    let timezone = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;\n    super(TimeUnit.SECOND, timezone);\n  }\n}\nexport class TimestampMillisecond extends Timestamp {\n  constructor() {\n    let timezone = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;\n    super(TimeUnit.MILLISECOND, timezone);\n  }\n}\nexport class TimestampMicrosecond extends Timestamp {\n  constructor() {\n    let timezone = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;\n    super(TimeUnit.MICROSECOND, timezone);\n  }\n}\nexport class TimestampNanosecond extends Timestamp {\n  constructor() {\n    let timezone = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;\n    super(TimeUnit.NANOSECOND, timezone);\n  }\n}\nconst IntervalUnit = {\n  DAY_TIME: 0,\n  YEAR_MONTH: 1\n};\n_Symbol$toStringTag6 = Symbol.toStringTag;\nexport class Interval extends DataType {\n  constructor(unit) {\n    super();\n    _defineProperty(this, \"unit\", void 0);\n    this.unit = unit;\n  }\n  get typeId() {\n    return Type.Interval;\n  }\n  get [_Symbol$toStringTag6]() {\n    return 'Interval';\n  }\n  toString() {\n    return \"Interval<\".concat(IntervalUnit[this.unit], \">\");\n  }\n}\nexport class IntervalDayTime extends Interval {\n  constructor() {\n    super(IntervalUnit.DAY_TIME);\n  }\n}\nexport class IntervalYearMonth extends Interval {\n  constructor() {\n    super(IntervalUnit.YEAR_MONTH);\n  }\n}\n_Symbol$toStringTag7 = Symbol.toStringTag;\nexport class FixedSizeList extends DataType {\n  constructor(listSize, child) {\n    super();\n    _defineProperty(this, \"listSize\", void 0);\n    _defineProperty(this, \"children\", void 0);\n    this.listSize = listSize;\n    this.children = [child];\n  }\n  get typeId() {\n    return Type.FixedSizeList;\n  }\n  get valueType() {\n    return this.children[0].type;\n  }\n  get valueField() {\n    return this.children[0];\n  }\n  get [_Symbol$toStringTag7]() {\n    return 'FixedSizeList';\n  }\n  toString() {\n    return \"FixedSizeList[\".concat(this.listSize, \"]<\").concat(this.valueType, \">\");\n  }\n}\n_Symbol$toStringTag8 = Symbol.toStringTag;\nexport class Struct extends DataType {\n  constructor(children) {\n    super();\n    _defineProperty(this, \"children\", void 0);\n    this.children = children;\n  }\n  get typeId() {\n    return Type.Struct;\n  }\n  toString() {\n    return \"Struct<{\".concat(this.children.map(f => \"\".concat(f.name, \":\").concat(f.type)).join(', '), \"}>\");\n  }\n  get [_Symbol$toStringTag8]() {\n    return 'Struct';\n  }\n}\n//# sourceMappingURL=type.js.map","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { assert } from '../../utils/assert';\nexport default class Schema {\n  constructor(fields, metadata) {\n    _defineProperty(this, \"fields\", void 0);\n    _defineProperty(this, \"metadata\", void 0);\n    assert(Array.isArray(fields));\n    checkNames(fields);\n    this.fields = fields;\n    this.metadata = metadata || new Map();\n  }\n  compareTo(other) {\n    if (this.metadata !== other.metadata) {\n      return false;\n    }\n    if (this.fields.length !== other.fields.length) {\n      return false;\n    }\n    for (let i = 0; i < this.fields.length; ++i) {\n      if (!this.fields[i].compareTo(other.fields[i])) {\n        return false;\n      }\n    }\n    return true;\n  }\n  select() {\n    const nameMap = Object.create(null);\n    for (var _len = arguments.length, columnNames = new Array(_len), _key = 0; _key < _len; _key++) {\n      columnNames[_key] = arguments[_key];\n    }\n    for (const name of columnNames) {\n      nameMap[name] = true;\n    }\n    const selectedFields = this.fields.filter(field => nameMap[field.name]);\n    return new Schema(selectedFields, this.metadata);\n  }\n  selectAt() {\n    for (var _len2 = arguments.length, columnIndices = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n      columnIndices[_key2] = arguments[_key2];\n    }\n    const selectedFields = columnIndices.map(index => this.fields[index]).filter(Boolean);\n    return new Schema(selectedFields, this.metadata);\n  }\n  assign(schemaOrFields) {\n    let fields;\n    let metadata = this.metadata;\n    if (schemaOrFields instanceof Schema) {\n      const otherSchema = schemaOrFields;\n      fields = otherSchema.fields;\n      metadata = mergeMaps(mergeMaps(new Map(), this.metadata), otherSchema.metadata);\n    } else {\n      fields = schemaOrFields;\n    }\n    const fieldMap = Object.create(null);\n    for (const field of this.fields) {\n      fieldMap[field.name] = field;\n    }\n    for (const field of fields) {\n      fieldMap[field.name] = field;\n    }\n    const mergedFields = Object.values(fieldMap);\n    return new Schema(mergedFields, metadata);\n  }\n}\nfunction checkNames(fields) {\n  const usedNames = {};\n  for (const field of fields) {\n    if (usedNames[field.name]) {\n      console.warn('Schema: duplicated field name', field.name, field);\n    }\n    usedNames[field.name] = true;\n  }\n}\nfunction mergeMaps(m1, m2) {\n  return new Map([...(m1 || new Map()), ...(m2 || new Map())]);\n}\n//# sourceMappingURL=schema.js.map","export function assert(condition, message) {\n  if (!condition) {\n    throw new Error(message || 'loader assertion failed.');\n  }\n}\n//# sourceMappingURL=assert.js.map","import { deduceMeshField } from '@loaders.gl/schema';\nimport { Schema } from '@loaders.gl/schema';\nexport function getDracoSchema(attributes, loaderData, indices) {\n  const metadataMap = makeMetadata(loaderData.metadata);\n  const fields = [];\n  const namedLoaderDataAttributes = transformAttributesLoaderData(loaderData.attributes);\n  for (const attributeName in attributes) {\n    const attribute = attributes[attributeName];\n    const field = getArrowFieldFromAttribute(attributeName, attribute, namedLoaderDataAttributes[attributeName]);\n    fields.push(field);\n  }\n  if (indices) {\n    const indicesField = getArrowFieldFromAttribute('indices', indices);\n    fields.push(indicesField);\n  }\n  return new Schema(fields, metadataMap);\n}\nfunction transformAttributesLoaderData(loaderData) {\n  const result = {};\n  for (const key in loaderData) {\n    const dracoAttribute = loaderData[key];\n    result[dracoAttribute.name || 'undefined'] = dracoAttribute;\n  }\n  return result;\n}\nfunction getArrowFieldFromAttribute(attributeName, attribute, loaderData) {\n  const metadataMap = loaderData ? makeMetadata(loaderData.metadata) : undefined;\n  const field = deduceMeshField(attributeName, attribute, metadataMap);\n  return field;\n}\nfunction makeMetadata(metadata) {\n  const metadataMap = new Map();\n  for (const key in metadata) {\n    metadataMap.set(\"\".concat(key, \".string\"), JSON.stringify(metadata[key]));\n  }\n  return metadataMap;\n}\n//# sourceMappingURL=get-draco-schema.js.map","import { Schema, Field, FixedSizeList } from '../../lib/schema/schema';\nimport { getArrowTypeFromTypedArray } from '../../lib/arrow/arrow-like-type-utils';\nexport function deduceMeshSchema(attributes, metadata) {\n  const fields = deduceMeshFields(attributes);\n  return new Schema(fields, metadata);\n}\nexport function deduceMeshField(attributeName, attribute, optionalMetadata) {\n  const type = getArrowTypeFromTypedArray(attribute.value);\n  const metadata = optionalMetadata ? optionalMetadata : makeMeshAttributeMetadata(attribute);\n  const field = new Field(attributeName, new FixedSizeList(attribute.size, new Field('value', type)), false, metadata);\n  return field;\n}\nfunction deduceMeshFields(attributes) {\n  const fields = [];\n  for (const attributeName in attributes) {\n    const attribute = attributes[attributeName];\n    fields.push(deduceMeshField(attributeName, attribute));\n  }\n  return fields;\n}\nexport function makeMeshAttributeMetadata(attribute) {\n  const result = new Map();\n  if ('byteOffset' in attribute) {\n    result.set('byteOffset', attribute.byteOffset.toString(10));\n  }\n  if ('byteStride' in attribute) {\n    result.set('byteStride', attribute.byteStride.toString(10));\n  }\n  if ('normalized' in attribute) {\n    result.set('normalized', attribute.normalized.toString());\n  }\n  return result;\n}\n//# sourceMappingURL=deduce-mesh-schema.js.map","import { Float32, Float64, Int16, Int32, Int8, Uint16, Uint32, Uint8 } from '../schema/schema';\nexport function getArrowTypeFromTypedArray(array) {\n  switch (array.constructor) {\n    case Int8Array:\n      return new Int8();\n    case Uint8Array:\n      return new Uint8();\n    case Int16Array:\n      return new Int16();\n    case Uint16Array:\n      return new Uint16();\n    case Int32Array:\n      return new Int32();\n    case Uint32Array:\n      return new Uint32();\n    case Float32Array:\n      return new Float32();\n    case Float64Array:\n      return new Float64();\n    default:\n      throw new Error('array type not supported');\n  }\n}\n//# sourceMappingURL=arrow-like-type-utils.js.map","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { getMeshBoundingBox } from '@loaders.gl/schema';\nimport { getDracoSchema } from './utils/get-draco-schema';\nconst GEOMETRY_TYPE = {\n  TRIANGULAR_MESH: 0,\n  POINT_CLOUD: 1\n};\nconst DRACO_TO_GLTF_ATTRIBUTE_NAME_MAP = {\n  POSITION: 'POSITION',\n  NORMAL: 'NORMAL',\n  COLOR: 'COLOR_0',\n  TEX_COORD: 'TEXCOORD_0'\n};\nconst DRACO_DATA_TYPE_TO_TYPED_ARRAY_MAP = {\n  1: Int8Array,\n  2: Uint8Array,\n  3: Int16Array,\n  4: Uint16Array,\n  5: Int32Array,\n  6: Uint32Array,\n  9: Float32Array\n};\nconst INDEX_ITEM_SIZE = 4;\nexport default class DracoParser {\n  constructor(draco) {\n    _defineProperty(this, \"draco\", void 0);\n    _defineProperty(this, \"decoder\", void 0);\n    _defineProperty(this, \"metadataQuerier\", void 0);\n    this.draco = draco;\n    this.decoder = new this.draco.Decoder();\n    this.metadataQuerier = new this.draco.MetadataQuerier();\n  }\n  destroy() {\n    this.draco.destroy(this.decoder);\n    this.draco.destroy(this.metadataQuerier);\n  }\n  parseSync(arrayBuffer) {\n    let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n    const buffer = new this.draco.DecoderBuffer();\n    buffer.Init(new Int8Array(arrayBuffer), arrayBuffer.byteLength);\n    this._disableAttributeTransforms(options);\n    const geometry_type = this.decoder.GetEncodedGeometryType(buffer);\n    const dracoGeometry = geometry_type === this.draco.TRIANGULAR_MESH ? new this.draco.Mesh() : new this.draco.PointCloud();\n    try {\n      let dracoStatus;\n      switch (geometry_type) {\n        case this.draco.TRIANGULAR_MESH:\n          dracoStatus = this.decoder.DecodeBufferToMesh(buffer, dracoGeometry);\n          break;\n        case this.draco.POINT_CLOUD:\n          dracoStatus = this.decoder.DecodeBufferToPointCloud(buffer, dracoGeometry);\n          break;\n        default:\n          throw new Error('DRACO: Unknown geometry type.');\n      }\n      if (!dracoStatus.ok() || !dracoGeometry.ptr) {\n        const message = \"DRACO decompression failed: \".concat(dracoStatus.error_msg());\n        throw new Error(message);\n      }\n      const loaderData = this._getDracoLoaderData(dracoGeometry, geometry_type, options);\n      const geometry = this._getMeshData(dracoGeometry, loaderData, options);\n      const boundingBox = getMeshBoundingBox(geometry.attributes);\n      const schema = getDracoSchema(geometry.attributes, loaderData, geometry.indices);\n      const data = {\n        loader: 'draco',\n        loaderData,\n        header: {\n          vertexCount: dracoGeometry.num_points(),\n          boundingBox\n        },\n        ...geometry,\n        schema\n      };\n      return data;\n    } finally {\n      this.draco.destroy(buffer);\n      if (dracoGeometry) {\n        this.draco.destroy(dracoGeometry);\n      }\n    }\n  }\n  _getDracoLoaderData(dracoGeometry, geometry_type, options) {\n    const metadata = this._getTopLevelMetadata(dracoGeometry);\n    const attributes = this._getDracoAttributes(dracoGeometry, options);\n    return {\n      geometry_type,\n      num_attributes: dracoGeometry.num_attributes(),\n      num_points: dracoGeometry.num_points(),\n      num_faces: dracoGeometry instanceof this.draco.Mesh ? dracoGeometry.num_faces() : 0,\n      metadata,\n      attributes\n    };\n  }\n  _getDracoAttributes(dracoGeometry, options) {\n    const dracoAttributes = {};\n    for (let attributeId = 0; attributeId < dracoGeometry.num_attributes(); attributeId++) {\n      const dracoAttribute = this.decoder.GetAttribute(dracoGeometry, attributeId);\n      const metadata = this._getAttributeMetadata(dracoGeometry, attributeId);\n      dracoAttributes[dracoAttribute.unique_id()] = {\n        unique_id: dracoAttribute.unique_id(),\n        attribute_type: dracoAttribute.attribute_type(),\n        data_type: dracoAttribute.data_type(),\n        num_components: dracoAttribute.num_components(),\n        byte_offset: dracoAttribute.byte_offset(),\n        byte_stride: dracoAttribute.byte_stride(),\n        normalized: dracoAttribute.normalized(),\n        attribute_index: attributeId,\n        metadata\n      };\n      const quantization = this._getQuantizationTransform(dracoAttribute, options);\n      if (quantization) {\n        dracoAttributes[dracoAttribute.unique_id()].quantization_transform = quantization;\n      }\n      const octahedron = this._getOctahedronTransform(dracoAttribute, options);\n      if (octahedron) {\n        dracoAttributes[dracoAttribute.unique_id()].octahedron_transform = octahedron;\n      }\n    }\n    return dracoAttributes;\n  }\n  _getMeshData(dracoGeometry, loaderData, options) {\n    const attributes = this._getMeshAttributes(loaderData, dracoGeometry, options);\n    const positionAttribute = attributes.POSITION;\n    if (!positionAttribute) {\n      throw new Error('DRACO: No position attribute found.');\n    }\n    if (dracoGeometry instanceof this.draco.Mesh) {\n      switch (options.topology) {\n        case 'triangle-strip':\n          return {\n            topology: 'triangle-strip',\n            mode: 4,\n            attributes,\n            indices: {\n              value: this._getTriangleStripIndices(dracoGeometry),\n              size: 1\n            }\n          };\n        case 'triangle-list':\n        default:\n          return {\n            topology: 'triangle-list',\n            mode: 5,\n            attributes,\n            indices: {\n              value: this._getTriangleListIndices(dracoGeometry),\n              size: 1\n            }\n          };\n      }\n    }\n    return {\n      topology: 'point-list',\n      mode: 0,\n      attributes\n    };\n  }\n  _getMeshAttributes(loaderData, dracoGeometry, options) {\n    const attributes = {};\n    for (const loaderAttribute of Object.values(loaderData.attributes)) {\n      const attributeName = this._deduceAttributeName(loaderAttribute, options);\n      loaderAttribute.name = attributeName;\n      const {\n        value,\n        size\n      } = this._getAttributeValues(dracoGeometry, loaderAttribute);\n      attributes[attributeName] = {\n        value,\n        size,\n        byteOffset: loaderAttribute.byte_offset,\n        byteStride: loaderAttribute.byte_stride,\n        normalized: loaderAttribute.normalized\n      };\n    }\n    return attributes;\n  }\n  _getTriangleListIndices(dracoGeometry) {\n    const numFaces = dracoGeometry.num_faces();\n    const numIndices = numFaces * 3;\n    const byteLength = numIndices * INDEX_ITEM_SIZE;\n    const ptr = this.draco._malloc(byteLength);\n    try {\n      this.decoder.GetTrianglesUInt32Array(dracoGeometry, byteLength, ptr);\n      return new Uint32Array(this.draco.HEAPF32.buffer, ptr, numIndices).slice();\n    } finally {\n      this.draco._free(ptr);\n    }\n  }\n  _getTriangleStripIndices(dracoGeometry) {\n    const dracoArray = new this.draco.DracoInt32Array();\n    try {\n      this.decoder.GetTriangleStripsFromMesh(dracoGeometry, dracoArray);\n      return getUint32Array(dracoArray);\n    } finally {\n      this.draco.destroy(dracoArray);\n    }\n  }\n  _getAttributeValues(dracoGeometry, attribute) {\n    const TypedArrayCtor = DRACO_DATA_TYPE_TO_TYPED_ARRAY_MAP[attribute.data_type];\n    const numComponents = attribute.num_components;\n    const numPoints = dracoGeometry.num_points();\n    const numValues = numPoints * numComponents;\n    const byteLength = numValues * TypedArrayCtor.BYTES_PER_ELEMENT;\n    const dataType = getDracoDataType(this.draco, TypedArrayCtor);\n    let value;\n    const ptr = this.draco._malloc(byteLength);\n    try {\n      const dracoAttribute = this.decoder.GetAttribute(dracoGeometry, attribute.attribute_index);\n      this.decoder.GetAttributeDataArrayForAllPoints(dracoGeometry, dracoAttribute, dataType, byteLength, ptr);\n      value = new TypedArrayCtor(this.draco.HEAPF32.buffer, ptr, numValues).slice();\n    } finally {\n      this.draco._free(ptr);\n    }\n    return {\n      value,\n      size: numComponents\n    };\n  }\n  _deduceAttributeName(attribute, options) {\n    const uniqueId = attribute.unique_id;\n    for (const [attributeName, attributeUniqueId] of Object.entries(options.extraAttributes || {})) {\n      if (attributeUniqueId === uniqueId) {\n        return attributeName;\n      }\n    }\n    const thisAttributeType = attribute.attribute_type;\n    for (const dracoAttributeConstant in DRACO_TO_GLTF_ATTRIBUTE_NAME_MAP) {\n      const attributeType = this.draco[dracoAttributeConstant];\n      if (attributeType === thisAttributeType) {\n        return DRACO_TO_GLTF_ATTRIBUTE_NAME_MAP[dracoAttributeConstant];\n      }\n    }\n    const entryName = options.attributeNameEntry || 'name';\n    if (attribute.metadata[entryName]) {\n      return attribute.metadata[entryName].string;\n    }\n    return \"CUSTOM_ATTRIBUTE_\".concat(uniqueId);\n  }\n  _getTopLevelMetadata(dracoGeometry) {\n    const dracoMetadata = this.decoder.GetMetadata(dracoGeometry);\n    return this._getDracoMetadata(dracoMetadata);\n  }\n  _getAttributeMetadata(dracoGeometry, attributeId) {\n    const dracoMetadata = this.decoder.GetAttributeMetadata(dracoGeometry, attributeId);\n    return this._getDracoMetadata(dracoMetadata);\n  }\n  _getDracoMetadata(dracoMetadata) {\n    if (!dracoMetadata || !dracoMetadata.ptr) {\n      return {};\n    }\n    const result = {};\n    const numEntries = this.metadataQuerier.NumEntries(dracoMetadata);\n    for (let entryIndex = 0; entryIndex < numEntries; entryIndex++) {\n      const entryName = this.metadataQuerier.GetEntryName(dracoMetadata, entryIndex);\n      result[entryName] = this._getDracoMetadataField(dracoMetadata, entryName);\n    }\n    return result;\n  }\n  _getDracoMetadataField(dracoMetadata, entryName) {\n    const dracoArray = new this.draco.DracoInt32Array();\n    try {\n      this.metadataQuerier.GetIntEntryArray(dracoMetadata, entryName, dracoArray);\n      const intArray = getInt32Array(dracoArray);\n      return {\n        int: this.metadataQuerier.GetIntEntry(dracoMetadata, entryName),\n        string: this.metadataQuerier.GetStringEntry(dracoMetadata, entryName),\n        double: this.metadataQuerier.GetDoubleEntry(dracoMetadata, entryName),\n        intArray\n      };\n    } finally {\n      this.draco.destroy(dracoArray);\n    }\n  }\n  _disableAttributeTransforms(options) {\n    const {\n      quantizedAttributes = [],\n      octahedronAttributes = []\n    } = options;\n    const skipAttributes = [...quantizedAttributes, ...octahedronAttributes];\n    for (const dracoAttributeName of skipAttributes) {\n      this.decoder.SkipAttributeTransform(this.draco[dracoAttributeName]);\n    }\n  }\n  _getQuantizationTransform(dracoAttribute, options) {\n    const {\n      quantizedAttributes = []\n    } = options;\n    const attribute_type = dracoAttribute.attribute_type();\n    const skip = quantizedAttributes.map(type => this.decoder[type]).includes(attribute_type);\n    if (skip) {\n      const transform = new this.draco.AttributeQuantizationTransform();\n      try {\n        if (transform.InitFromAttribute(dracoAttribute)) {\n          return {\n            quantization_bits: transform.quantization_bits(),\n            range: transform.range(),\n            min_values: new Float32Array([1, 2, 3]).map(i => transform.min_value(i))\n          };\n        }\n      } finally {\n        this.draco.destroy(transform);\n      }\n    }\n    return null;\n  }\n  _getOctahedronTransform(dracoAttribute, options) {\n    const {\n      octahedronAttributes = []\n    } = options;\n    const attribute_type = dracoAttribute.attribute_type();\n    const octahedron = octahedronAttributes.map(type => this.decoder[type]).includes(attribute_type);\n    if (octahedron) {\n      const transform = new this.draco.AttributeQuantizationTransform();\n      try {\n        if (transform.InitFromAttribute(dracoAttribute)) {\n          return {\n            quantization_bits: transform.quantization_bits()\n          };\n        }\n      } finally {\n        this.draco.destroy(transform);\n      }\n    }\n    return null;\n  }\n}\nfunction getDracoDataType(draco, attributeType) {\n  switch (attributeType) {\n    case Float32Array:\n      return draco.DT_FLOAT32;\n    case Int8Array:\n      return draco.DT_INT8;\n    case Int16Array:\n      return draco.DT_INT16;\n    case Int32Array:\n      return draco.DT_INT32;\n    case Uint8Array:\n      return draco.DT_UINT8;\n    case Uint16Array:\n      return draco.DT_UINT16;\n    case Uint32Array:\n      return draco.DT_UINT32;\n    default:\n      return draco.DT_INVALID;\n  }\n}\nfunction getInt32Array(dracoArray) {\n  const numValues = dracoArray.size();\n  const intArray = new Int32Array(numValues);\n  for (let i = 0; i < numValues; i++) {\n    intArray[i] = dracoArray.GetValue(i);\n  }\n  return intArray;\n}\nfunction getUint32Array(dracoArray) {\n  const numValues = dracoArray.size();\n  const intArray = new Int32Array(numValues);\n  for (let i = 0; i < numValues; i++) {\n    intArray[i] = dracoArray.GetValue(i);\n  }\n  return intArray;\n}\n//# sourceMappingURL=draco-parser.js.map","import { loadLibrary } from '@loaders.gl/worker-utils';\nconst DRACO_DECODER_VERSION = '1.5.5';\nconst DRACO_ENCODER_VERSION = '1.4.1';\nconst STATIC_DECODER_URL = \"https://www.gstatic.com/draco/versioned/decoders/\".concat(DRACO_DECODER_VERSION);\nconst DRACO_JS_DECODER_URL = \"\".concat(STATIC_DECODER_URL, \"/draco_decoder.js\");\nconst DRACO_WASM_WRAPPER_URL = \"\".concat(STATIC_DECODER_URL, \"/draco_wasm_wrapper.js\");\nconst DRACO_WASM_DECODER_URL = \"\".concat(STATIC_DECODER_URL, \"/draco_decoder.wasm\");\nconst DRACO_ENCODER_URL = \"https://raw.githubusercontent.com/google/draco/\".concat(DRACO_ENCODER_VERSION, \"/javascript/draco_encoder.js\");\nlet loadDecoderPromise;\nlet loadEncoderPromise;\nexport async function loadDracoDecoderModule(options) {\n  const modules = options.modules || {};\n  if (modules.draco3d) {\n    loadDecoderPromise = loadDecoderPromise || modules.draco3d.createDecoderModule({}).then(draco => {\n      return {\n        draco\n      };\n    });\n  } else {\n    loadDecoderPromise = loadDecoderPromise || loadDracoDecoder(options);\n  }\n  return await loadDecoderPromise;\n}\nexport async function loadDracoEncoderModule(options) {\n  const modules = options.modules || {};\n  if (modules.draco3d) {\n    loadEncoderPromise = loadEncoderPromise || modules.draco3d.createEncoderModule({}).then(draco => {\n      return {\n        draco\n      };\n    });\n  } else {\n    loadEncoderPromise = loadEncoderPromise || loadDracoEncoder(options);\n  }\n  return await loadEncoderPromise;\n}\nasync function loadDracoDecoder(options) {\n  let DracoDecoderModule;\n  let wasmBinary;\n  switch (options.draco && options.draco.decoderType) {\n    case 'js':\n      DracoDecoderModule = await loadLibrary(DRACO_JS_DECODER_URL, 'draco', options);\n      break;\n    case 'wasm':\n    default:\n      [DracoDecoderModule, wasmBinary] = await Promise.all([await loadLibrary(DRACO_WASM_WRAPPER_URL, 'draco', options), await loadLibrary(DRACO_WASM_DECODER_URL, 'draco', options)]);\n  }\n  DracoDecoderModule = DracoDecoderModule || globalThis.DracoDecoderModule;\n  return await initializeDracoDecoder(DracoDecoderModule, wasmBinary);\n}\nfunction initializeDracoDecoder(DracoDecoderModule, wasmBinary) {\n  const options = {};\n  if (wasmBinary) {\n    options.wasmBinary = wasmBinary;\n  }\n  return new Promise(resolve => {\n    DracoDecoderModule({\n      ...options,\n      onModuleLoaded: draco => resolve({\n        draco\n      })\n    });\n  });\n}\nasync function loadDracoEncoder(options) {\n  let DracoEncoderModule = await loadLibrary(DRACO_ENCODER_URL, 'draco', options);\n  DracoEncoderModule = DracoEncoderModule || globalThis.DracoEncoderModule;\n  return new Promise(resolve => {\n    DracoEncoderModule({\n      onModuleLoaded: draco => resolve({\n        draco\n      })\n    });\n  });\n}\n//# sourceMappingURL=draco-module-loader.js.map","import { DracoLoader as DracoWorkerLoader } from './draco-loader';\nimport DracoParser from './lib/draco-parser';\nimport { loadDracoDecoderModule } from './lib/draco-module-loader';\nimport { VERSION } from './lib/utils/version';\nimport { isBrowser } from '@loaders.gl/worker-utils';\nexport { DracoWriter } from './draco-writer';\nexport const DracoWriterWorker = {\n  id: isBrowser ? 'draco-writer' : 'draco-writer-nodejs',\n  name: 'Draco compressed geometry writer',\n  module: 'draco',\n  version: VERSION,\n  worker: true,\n  options: {\n    draco: {},\n    source: null\n  }\n};\nexport { DracoWorkerLoader };\nexport const DracoLoader = {\n  ...DracoWorkerLoader,\n  parse\n};\nasync function parse(arrayBuffer, options) {\n  const {\n    draco\n  } = await loadDracoDecoderModule(options);\n  const dracoParser = new DracoParser(draco);\n  try {\n    return dracoParser.parseSync(arrayBuffer, options === null || options === void 0 ? void 0 : options.draco);\n  } finally {\n    dracoParser.destroy();\n  }\n}\nexport const _TypecheckDracoLoader = DracoLoader;\n//# sourceMappingURL=index.js.map","const VERSION = typeof \"3.4.15\" !== 'undefined' ? \"3.4.15\" : 'latest';\nimport { loadLibrary } from '@loaders.gl/worker-utils';\nconst BASIS_CDN_ENCODER_WASM = \"https://unpkg.com/@loaders.gl/textures@\".concat(VERSION, \"/dist/libs/basis_encoder.wasm\");\nconst BASIS_CDN_ENCODER_JS = \"https://unpkg.com/@loaders.gl/textures@\".concat(VERSION, \"/dist/libs/basis_encoder.js\");\nlet loadBasisTranscoderPromise;\nexport async function loadBasisTrascoderModule(options) {\n  const modules = options.modules || {};\n  if (modules.basis) {\n    return modules.basis;\n  }\n  loadBasisTranscoderPromise = loadBasisTranscoderPromise || loadBasisTrascoder(options);\n  return await loadBasisTranscoderPromise;\n}\nasync function loadBasisTrascoder(options) {\n  let BASIS = null;\n  let wasmBinary = null;\n  [BASIS, wasmBinary] = await Promise.all([await loadLibrary('basis_transcoder.js', 'textures', options), await loadLibrary('basis_transcoder.wasm', 'textures', options)]);\n  BASIS = BASIS || globalThis.BASIS;\n  return await initializeBasisTrascoderModule(BASIS, wasmBinary);\n}\nfunction initializeBasisTrascoderModule(BasisModule, wasmBinary) {\n  const options = {};\n  if (wasmBinary) {\n    options.wasmBinary = wasmBinary;\n  }\n  return new Promise(resolve => {\n    BasisModule(options).then(module => {\n      const {\n        BasisFile,\n        initializeBasis\n      } = module;\n      initializeBasis();\n      resolve({\n        BasisFile\n      });\n    });\n  });\n}\nlet loadBasisEncoderPromise;\nexport async function loadBasisEncoderModule(options) {\n  const modules = options.modules || {};\n  if (modules.basisEncoder) {\n    return modules.basisEncoder;\n  }\n  loadBasisEncoderPromise = loadBasisEncoderPromise || loadBasisEncoder(options);\n  return await loadBasisEncoderPromise;\n}\nasync function loadBasisEncoder(options) {\n  let BASIS_ENCODER = null;\n  let wasmBinary = null;\n  [BASIS_ENCODER, wasmBinary] = await Promise.all([await loadLibrary(BASIS_CDN_ENCODER_JS, 'textures', options), await loadLibrary(BASIS_CDN_ENCODER_WASM, 'textures', options)]);\n  BASIS_ENCODER = BASIS_ENCODER || globalThis.BASIS;\n  return await initializeBasisEncoderModule(BASIS_ENCODER, wasmBinary);\n}\nfunction initializeBasisEncoderModule(BasisEncoderModule, wasmBinary) {\n  const options = {};\n  if (wasmBinary) {\n    options.wasmBinary = wasmBinary;\n  }\n  return new Promise(resolve => {\n    BasisEncoderModule(options).then(module => {\n      const {\n        BasisFile,\n        KTX2File,\n        initializeBasis,\n        BasisEncoder\n      } = module;\n      initializeBasis();\n      resolve({\n        BasisFile,\n        KTX2File,\n        BasisEncoder\n      });\n    });\n  });\n}\n//# sourceMappingURL=basis-module-loader.js.map","export const GL_EXTENSIONS_CONSTANTS = {\n  COMPRESSED_RGB_S3TC_DXT1_EXT: 0x83f0,\n  COMPRESSED_RGBA_S3TC_DXT1_EXT: 0x83f1,\n  COMPRESSED_RGBA_S3TC_DXT3_EXT: 0x83f2,\n  COMPRESSED_RGBA_S3TC_DXT5_EXT: 0x83f3,\n  COMPRESSED_R11_EAC: 0x9270,\n  COMPRESSED_SIGNED_R11_EAC: 0x9271,\n  COMPRESSED_RG11_EAC: 0x9272,\n  COMPRESSED_SIGNED_RG11_EAC: 0x9273,\n  COMPRESSED_RGB8_ETC2: 0x9274,\n  COMPRESSED_RGBA8_ETC2_EAC: 0x9275,\n  COMPRESSED_SRGB8_ETC2: 0x9276,\n  COMPRESSED_SRGB8_ALPHA8_ETC2_EAC: 0x9277,\n  COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2: 0x9278,\n  COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2: 0x9279,\n  COMPRESSED_RGB_PVRTC_4BPPV1_IMG: 0x8c00,\n  COMPRESSED_RGBA_PVRTC_4BPPV1_IMG: 0x8c02,\n  COMPRESSED_RGB_PVRTC_2BPPV1_IMG: 0x8c01,\n  COMPRESSED_RGBA_PVRTC_2BPPV1_IMG: 0x8c03,\n  COMPRESSED_RGB_ETC1_WEBGL: 0x8d64,\n  COMPRESSED_RGB_ATC_WEBGL: 0x8c92,\n  COMPRESSED_RGBA_ATC_EXPLICIT_ALPHA_WEBGL: 0x8c93,\n  COMPRESSED_RGBA_ATC_INTERPOLATED_ALPHA_WEBGL: 0x87ee,\n  COMPRESSED_RGBA_ASTC_4X4_KHR: 0x93b0,\n  COMPRESSED_RGBA_ASTC_5X4_KHR: 0x93b1,\n  COMPRESSED_RGBA_ASTC_5X5_KHR: 0x93b2,\n  COMPRESSED_RGBA_ASTC_6X5_KHR: 0x93b3,\n  COMPRESSED_RGBA_ASTC_6X6_KHR: 0x93b4,\n  COMPRESSED_RGBA_ASTC_8X5_KHR: 0x93b5,\n  COMPRESSED_RGBA_ASTC_8X6_KHR: 0x93b6,\n  COMPRESSED_RGBA_ASTC_8X8_KHR: 0x93b7,\n  COMPRESSED_RGBA_ASTC_10X5_KHR: 0x93b8,\n  COMPRESSED_RGBA_ASTC_10X6_KHR: 0x93b9,\n  COMPRESSED_RGBA_ASTC_10X8_KHR: 0x93ba,\n  COMPRESSED_RGBA_ASTC_10X10_KHR: 0x93bb,\n  COMPRESSED_RGBA_ASTC_12X10_KHR: 0x93bc,\n  COMPRESSED_RGBA_ASTC_12X12_KHR: 0x93bd,\n  COMPRESSED_SRGB8_ALPHA8_ASTC_4X4_KHR: 0x93d0,\n  COMPRESSED_SRGB8_ALPHA8_ASTC_5X4_KHR: 0x93d1,\n  COMPRESSED_SRGB8_ALPHA8_ASTC_5X5_KHR: 0x93d2,\n  COMPRESSED_SRGB8_ALPHA8_ASTC_6X5_KHR: 0x93d3,\n  COMPRESSED_SRGB8_ALPHA8_ASTC_6X6_KHR: 0x93d4,\n  COMPRESSED_SRGB8_ALPHA8_ASTC_8X5_KHR: 0x93d5,\n  COMPRESSED_SRGB8_ALPHA8_ASTC_8X6_KHR: 0x93d6,\n  COMPRESSED_SRGB8_ALPHA8_ASTC_8X8_KHR: 0x93d7,\n  COMPRESSED_SRGB8_ALPHA8_ASTC_10X5_KHR: 0x93d8,\n  COMPRESSED_SRGB8_ALPHA8_ASTC_10X6_KHR: 0x93d9,\n  COMPRESSED_SRGB8_ALPHA8_ASTC_10X8_KHR: 0x93da,\n  COMPRESSED_SRGB8_ALPHA8_ASTC_10X10_KHR: 0x93db,\n  COMPRESSED_SRGB8_ALPHA8_ASTC_12X10_KHR: 0x93dc,\n  COMPRESSED_SRGB8_ALPHA8_ASTC_12X12_KHR: 0x93dd,\n  COMPRESSED_RED_RGTC1_EXT: 0x8dbb,\n  COMPRESSED_SIGNED_RED_RGTC1_EXT: 0x8dbc,\n  COMPRESSED_RED_GREEN_RGTC2_EXT: 0x8dbd,\n  COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT: 0x8dbe,\n  COMPRESSED_SRGB_S3TC_DXT1_EXT: 0x8c4c,\n  COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT: 0x8c4d,\n  COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT: 0x8c4e,\n  COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT: 0x8c4f\n};\n//# sourceMappingURL=gl-extensions.js.map","const BROWSER_PREFIXES = ['', 'WEBKIT_', 'MOZ_'];\nconst WEBGL_EXTENSIONS = {\n  WEBGL_compressed_texture_s3tc: 'dxt',\n  WEBGL_compressed_texture_s3tc_srgb: 'dxt-srgb',\n  WEBGL_compressed_texture_etc1: 'etc1',\n  WEBGL_compressed_texture_etc: 'etc2',\n  WEBGL_compressed_texture_pvrtc: 'pvrtc',\n  WEBGL_compressed_texture_atc: 'atc',\n  WEBGL_compressed_texture_astc: 'astc',\n  EXT_texture_compression_rgtc: 'rgtc'\n};\nlet formats = null;\nexport function getSupportedGPUTextureFormats(gl) {\n  if (!formats) {\n    gl = gl || getWebGLContext() || undefined;\n    formats = new Set();\n    for (const prefix of BROWSER_PREFIXES) {\n      for (const extension in WEBGL_EXTENSIONS) {\n        if (gl && gl.getExtension(\"\".concat(prefix).concat(extension))) {\n          const gpuTextureFormat = WEBGL_EXTENSIONS[extension];\n          formats.add(gpuTextureFormat);\n        }\n      }\n    }\n  }\n  return formats;\n}\nfunction getWebGLContext() {\n  try {\n    const canvas = document.createElement('canvas');\n    return canvas.getContext('webgl');\n  } catch (error) {\n    return null;\n  }\n}\n//# sourceMappingURL=texture-formats.js.map","const t=new Uint8Array([0]),e=[171,75,84,88,32,50,48,187,13,10,26,10];var n,i,s,a,r,o,l,f;!function(t){t[t.NONE=0]=\"NONE\",t[t.BASISLZ=1]=\"BASISLZ\",t[t.ZSTD=2]=\"ZSTD\",t[t.ZLIB=3]=\"ZLIB\"}(n||(n={})),function(t){t[t.BASICFORMAT=0]=\"BASICFORMAT\"}(i||(i={})),function(t){t[t.UNSPECIFIED=0]=\"UNSPECIFIED\",t[t.ETC1S=163]=\"ETC1S\",t[t.UASTC=166]=\"UASTC\"}(s||(s={})),function(t){t[t.UNSPECIFIED=0]=\"UNSPECIFIED\",t[t.SRGB=1]=\"SRGB\"}(a||(a={})),function(t){t[t.UNSPECIFIED=0]=\"UNSPECIFIED\",t[t.LINEAR=1]=\"LINEAR\",t[t.SRGB=2]=\"SRGB\",t[t.ITU=3]=\"ITU\",t[t.NTSC=4]=\"NTSC\",t[t.SLOG=5]=\"SLOG\",t[t.SLOG2=6]=\"SLOG2\"}(r||(r={})),function(t){t[t.ALPHA_STRAIGHT=0]=\"ALPHA_STRAIGHT\",t[t.ALPHA_PREMULTIPLIED=1]=\"ALPHA_PREMULTIPLIED\"}(o||(o={})),function(t){t[t.RGB=0]=\"RGB\",t[t.RRR=3]=\"RRR\",t[t.GGG=4]=\"GGG\",t[t.AAA=15]=\"AAA\"}(l||(l={})),function(t){t[t.RGB=0]=\"RGB\",t[t.RGBA=3]=\"RGBA\",t[t.RRR=4]=\"RRR\",t[t.RRRG=5]=\"RRRG\"}(f||(f={}));class U{constructor(){this.vkFormat=0,this.typeSize=1,this.pixelWidth=0,this.pixelHeight=0,this.pixelDepth=0,this.layerCount=0,this.faceCount=1,this.supercompressionScheme=n.NONE,this.levels=[],this.dataFormatDescriptor=[{vendorId:0,descriptorType:i.BASICFORMAT,versionNumber:2,descriptorBlockSize:40,colorModel:s.UNSPECIFIED,colorPrimaries:a.SRGB,transferFunction:a.SRGB,flags:o.ALPHA_STRAIGHT,texelBlockDimension:{x:4,y:4,z:1,w:1},bytesPlane:[],samples:[]}],this.keyValue={},this.globalData=null}}class c{constructor(t,e,n,i){this._dataView=new DataView(t.buffer,t.byteOffset+e,n),this._littleEndian=i,this._offset=0}_nextUint8(){const t=this._dataView.getUint8(this._offset);return this._offset+=1,t}_nextUint16(){const t=this._dataView.getUint16(this._offset,this._littleEndian);return this._offset+=2,t}_nextUint32(){const t=this._dataView.getUint32(this._offset,this._littleEndian);return this._offset+=4,t}_nextUint64(){const t=this._dataView.getUint32(this._offset,this._littleEndian)+2**32*this._dataView.getUint32(this._offset+4,this._littleEndian);return this._offset+=8,t}_skip(t){return this._offset+=t,this}_scan(t,e=0){const n=this._offset;let i=0;for(;this._dataView.getUint8(this._offset)!==e&&i<t;)i++,this._offset++;return i<t&&this._offset++,new Uint8Array(this._dataView.buffer,this._dataView.byteOffset+n,i)}}function h(t){return\"undefined\"!=typeof TextEncoder?(new TextEncoder).encode(t):Buffer.from(t)}function _(t){return\"undefined\"!=typeof TextDecoder?(new TextDecoder).decode(t):Buffer.from(t).toString(\"utf8\")}function g(t){let e=0;for(const n of t)e+=n.byteLength;const n=new Uint8Array(e);let i=0;for(const e of t)n.set(new Uint8Array(e),i),i+=e.byteLength;return n}function p(t){const n=new Uint8Array(t.buffer,t.byteOffset,e.length);if(n[0]!==e[0]||n[1]!==e[1]||n[2]!==e[2]||n[3]!==e[3]||n[4]!==e[4]||n[5]!==e[5]||n[6]!==e[6]||n[7]!==e[7]||n[8]!==e[8]||n[9]!==e[9]||n[10]!==e[10]||n[11]!==e[11])throw new Error(\"Missing KTX 2.0 identifier.\");const i=new U,s=17*Uint32Array.BYTES_PER_ELEMENT,a=new c(t,e.length,s,!0);i.vkFormat=a._nextUint32(),i.typeSize=a._nextUint32(),i.pixelWidth=a._nextUint32(),i.pixelHeight=a._nextUint32(),i.pixelDepth=a._nextUint32(),i.layerCount=a._nextUint32(),i.faceCount=a._nextUint32();const r=a._nextUint32();i.supercompressionScheme=a._nextUint32();const o=a._nextUint32(),l=a._nextUint32(),f=a._nextUint32(),h=a._nextUint32(),g=a._nextUint64(),p=a._nextUint64(),x=new c(t,e.length+s,3*r*8,!0);for(let e=0;e<r;e++)i.levels.push({levelData:new Uint8Array(t.buffer,t.byteOffset+x._nextUint64(),x._nextUint64()),uncompressedByteLength:x._nextUint64()});const u=new c(t,o,l,!0),y={vendorId:u._skip(4)._nextUint16(),descriptorType:u._nextUint16(),versionNumber:u._nextUint16(),descriptorBlockSize:u._nextUint16(),colorModel:u._nextUint8(),colorPrimaries:u._nextUint8(),transferFunction:u._nextUint8(),flags:u._nextUint8(),texelBlockDimension:{x:u._nextUint8()+1,y:u._nextUint8()+1,z:u._nextUint8()+1,w:u._nextUint8()+1},bytesPlane:[u._nextUint8(),u._nextUint8(),u._nextUint8(),u._nextUint8(),u._nextUint8(),u._nextUint8(),u._nextUint8(),u._nextUint8()],samples:[]},D=(y.descriptorBlockSize/4-6)/4;for(let t=0;t<D;t++)y.samples[t]={bitOffset:u._nextUint16(),bitLength:u._nextUint8(),channelID:u._nextUint8(),samplePosition:[u._nextUint8(),u._nextUint8(),u._nextUint8(),u._nextUint8()],sampleLower:u._nextUint32(),sampleUpper:u._nextUint32()};i.dataFormatDescriptor.length=0,i.dataFormatDescriptor.push(y);const b=new c(t,f,h,!0);for(;b._offset<h;){const t=b._nextUint32(),e=b._scan(t),n=_(e),s=b._scan(t-e.byteLength);i.keyValue[n]=n.match(/^ktx/i)?_(s):s,t%4&&b._skip(4-t%4)}if(p<=0)return i;const d=new c(t,g,p,!0),B=d._nextUint16(),w=d._nextUint16(),A=d._nextUint32(),S=d._nextUint32(),m=d._nextUint32(),L=d._nextUint32(),I=[];for(let t=0;t<r;t++)I.push({imageFlags:d._nextUint32(),rgbSliceByteOffset:d._nextUint32(),rgbSliceByteLength:d._nextUint32(),alphaSliceByteOffset:d._nextUint32(),alphaSliceByteLength:d._nextUint32()});const R=g+d._offset,E=R+A,T=E+S,O=T+m,P=new Uint8Array(t.buffer,t.byteOffset+R,A),C=new Uint8Array(t.buffer,t.byteOffset+E,S),F=new Uint8Array(t.buffer,t.byteOffset+T,m),G=new Uint8Array(t.buffer,t.byteOffset+O,L);return i.globalData={endpointCount:B,selectorCount:w,imageDescs:I,endpointsData:P,selectorsData:C,tablesData:F,extendedData:G},i}function x(){return(x=Object.assign||function(t){for(var e=1;e<arguments.length;e++){var n=arguments[e];for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])}return t}).apply(this,arguments)}const u={keepWriter:!1};function y(n,s={}){s=x({},u,s);let a=new ArrayBuffer(0);if(n.globalData){const t=new ArrayBuffer(20+5*n.globalData.imageDescs.length*4),e=new DataView(t);e.setUint16(0,n.globalData.endpointCount,!0),e.setUint16(2,n.globalData.selectorCount,!0),e.setUint32(4,n.globalData.endpointsData.byteLength,!0),e.setUint32(8,n.globalData.selectorsData.byteLength,!0),e.setUint32(12,n.globalData.tablesData.byteLength,!0),e.setUint32(16,n.globalData.extendedData.byteLength,!0);for(let t=0;t<n.globalData.imageDescs.length;t++){const i=n.globalData.imageDescs[t];e.setUint32(20+5*t*4+0,i.imageFlags,!0),e.setUint32(20+5*t*4+4,i.rgbSliceByteOffset,!0),e.setUint32(20+5*t*4+8,i.rgbSliceByteLength,!0),e.setUint32(20+5*t*4+12,i.alphaSliceByteOffset,!0),e.setUint32(20+5*t*4+16,i.alphaSliceByteLength,!0)}a=g([t,n.globalData.endpointsData,n.globalData.selectorsData,n.globalData.tablesData,n.globalData.extendedData])}const r=[];let o=n.keyValue;s.keepWriter||(o=x({},n.keyValue,{KTXwriter:\"KTX-Parse v0.0.4\"}));for(const e in o){const n=o[e],i=h(e),s=\"string\"==typeof n?h(n):n,a=i.byteLength+1+s.byteLength+1,l=a%4?4-a%4:0;r.push(g([new Uint32Array([a]),i,t,s,t,new Uint8Array(l).fill(0)]))}const l=g(r),f=new ArrayBuffer(44),U=new DataView(f);if(1!==n.dataFormatDescriptor.length||n.dataFormatDescriptor[0].descriptorType!==i.BASICFORMAT)throw new Error(\"Only BASICFORMAT Data Format Descriptor output supported.\");const c=n.dataFormatDescriptor[0];U.setUint32(0,44,!0),U.setUint16(4,c.vendorId,!0),U.setUint16(6,c.descriptorType,!0),U.setUint16(8,c.versionNumber,!0),U.setUint16(10,c.descriptorBlockSize,!0),U.setUint8(12,c.colorModel),U.setUint8(13,c.colorPrimaries),U.setUint8(14,c.transferFunction),U.setUint8(15,c.flags),U.setUint8(16,c.texelBlockDimension.x-1),U.setUint8(17,c.texelBlockDimension.y-1),U.setUint8(18,c.texelBlockDimension.z-1),U.setUint8(19,c.texelBlockDimension.w-1);for(let t=0;t<8;t++)U.setUint8(20+t,c.bytesPlane[t]);for(let t=0;t<c.samples.length;t++){const e=c.samples[t],n=28+16*t;U.setUint16(n+0,e.bitOffset,!0),U.setUint8(n+2,e.bitLength),U.setUint8(n+3,e.channelID),U.setUint8(n+4,e.samplePosition[0]),U.setUint8(n+5,e.samplePosition[1]),U.setUint8(n+6,e.samplePosition[2]),U.setUint8(n+7,e.samplePosition[3]),U.setUint32(n+8,e.sampleLower,!0),U.setUint32(n+12,e.sampleUpper,!0)}const _=e.length+68+3*n.levels.length*8,p=_+f.byteLength;let y=p+l.byteLength;y%8&&(y+=8-y%8);const D=[],b=new DataView(new ArrayBuffer(3*n.levels.length*8));let d=y+a.byteLength;for(let t=0;t<n.levels.length;t++){const e=n.levels[t];D.push(e.levelData),b.setBigUint64(24*t+0,BigInt(d),!0),b.setBigUint64(24*t+8,BigInt(e.levelData.byteLength),!0),b.setBigUint64(24*t+16,BigInt(e.uncompressedByteLength),!0),d+=e.levelData.byteLength}const B=new ArrayBuffer(68),w=new DataView(B);return w.setUint32(0,n.vkFormat,!0),w.setUint32(4,n.typeSize,!0),w.setUint32(8,n.pixelWidth,!0),w.setUint32(12,n.pixelHeight,!0),w.setUint32(16,n.pixelDepth,!0),w.setUint32(20,n.layerCount,!0),w.setUint32(24,n.faceCount,!0),w.setUint32(28,n.levels.length,!0),w.setUint32(32,n.supercompressionScheme,!0),w.setUint32(36,_,!0),w.setUint32(40,f.byteLength,!0),w.setUint32(44,p,!0),w.setUint32(48,l.byteLength,!0),w.setBigUint64(52,BigInt(y),!0),w.setBigUint64(60,BigInt(a.byteLength),!0),new Uint8Array(g([new Uint8Array(e).buffer,B,b.buffer,f,l,new ArrayBuffer(y-(p+l.byteLength)),a,...D]))}export{U as KTX2Container,p as read,y as write};\n//# sourceMappingURL=ktx-parse.modern.js.map\n","import { read } from 'ktx-parse';\nimport { extractMipmapImages } from '../utils/extract-mipmap-images';\nimport { mapVkFormatToWebGL } from '../utils/ktx-format-helper';\nconst KTX2_ID = [0xab, 0x4b, 0x54, 0x58, 0x20, 0x32, 0x30, 0xbb, 0x0d, 0x0a, 0x1a, 0x0a];\nexport function isKTX(data) {\n  const id = new Uint8Array(data);\n  const notKTX = id.byteLength < KTX2_ID.length || id[0] !== KTX2_ID[0] || id[1] !== KTX2_ID[1] || id[2] !== KTX2_ID[2] || id[3] !== KTX2_ID[3] || id[4] !== KTX2_ID[4] || id[5] !== KTX2_ID[5] || id[6] !== KTX2_ID[6] || id[7] !== KTX2_ID[7] || id[8] !== KTX2_ID[8] || id[9] !== KTX2_ID[9] || id[10] !== KTX2_ID[10] || id[11] !== KTX2_ID[11];\n  return !notKTX;\n}\nexport function parseKTX(arrayBuffer) {\n  const uint8Array = new Uint8Array(arrayBuffer);\n  const ktx = read(uint8Array);\n  const mipMapLevels = Math.max(1, ktx.levels.length);\n  const width = ktx.pixelWidth;\n  const height = ktx.pixelHeight;\n  const internalFormat = mapVkFormatToWebGL(ktx.vkFormat);\n  return extractMipmapImages(ktx.levels, {\n    mipMapLevels,\n    width,\n    height,\n    sizeFunction: level => level.uncompressedByteLength,\n    internalFormat\n  });\n}\n//# sourceMappingURL=parse-ktx.js.map","import { loadBasisEncoderModule, loadBasisTrascoderModule } from './basis-module-loader';\nimport { GL_EXTENSIONS_CONSTANTS } from '../gl-extensions';\nimport { getSupportedGPUTextureFormats } from '../utils/texture-formats';\nimport { isKTX } from './parse-ktx';\nconst OutputFormat = {\n  etc1: {\n    basisFormat: 0,\n    compressed: true,\n    format: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGB_ETC1_WEBGL\n  },\n  etc2: {\n    basisFormat: 1,\n    compressed: true\n  },\n  bc1: {\n    basisFormat: 2,\n    compressed: true,\n    format: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGB_S3TC_DXT1_EXT\n  },\n  bc3: {\n    basisFormat: 3,\n    compressed: true,\n    format: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_S3TC_DXT5_EXT\n  },\n  bc4: {\n    basisFormat: 4,\n    compressed: true\n  },\n  bc5: {\n    basisFormat: 5,\n    compressed: true\n  },\n  'bc7-m6-opaque-only': {\n    basisFormat: 6,\n    compressed: true\n  },\n  'bc7-m5': {\n    basisFormat: 7,\n    compressed: true\n  },\n  'pvrtc1-4-rgb': {\n    basisFormat: 8,\n    compressed: true,\n    format: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGB_PVRTC_4BPPV1_IMG\n  },\n  'pvrtc1-4-rgba': {\n    basisFormat: 9,\n    compressed: true,\n    format: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG\n  },\n  'astc-4x4': {\n    basisFormat: 10,\n    compressed: true,\n    format: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_4X4_KHR\n  },\n  'atc-rgb': {\n    basisFormat: 11,\n    compressed: true\n  },\n  'atc-rgba-interpolated-alpha': {\n    basisFormat: 12,\n    compressed: true\n  },\n  rgba32: {\n    basisFormat: 13,\n    compressed: false\n  },\n  rgb565: {\n    basisFormat: 14,\n    compressed: false\n  },\n  bgr565: {\n    basisFormat: 15,\n    compressed: false\n  },\n  rgba4444: {\n    basisFormat: 16,\n    compressed: false\n  }\n};\nexport default async function parseBasis(data, options) {\n  if (options.basis.containerFormat === 'auto') {\n    if (isKTX(data)) {\n      const fileConstructors = await loadBasisEncoderModule(options);\n      return parseKTX2File(fileConstructors.KTX2File, data, options);\n    }\n    const {\n      BasisFile\n    } = await loadBasisTrascoderModule(options);\n    return parseBasisFile(BasisFile, data, options);\n  }\n  switch (options.basis.module) {\n    case 'encoder':\n      const fileConstructors = await loadBasisEncoderModule(options);\n      switch (options.basis.containerFormat) {\n        case 'ktx2':\n          return parseKTX2File(fileConstructors.KTX2File, data, options);\n        case 'basis':\n        default:\n          return parseBasisFile(fileConstructors.BasisFile, data, options);\n      }\n    case 'transcoder':\n    default:\n      const {\n        BasisFile\n      } = await loadBasisTrascoderModule(options);\n      return parseBasisFile(BasisFile, data, options);\n  }\n}\nfunction parseBasisFile(BasisFile, data, options) {\n  const basisFile = new BasisFile(new Uint8Array(data));\n  try {\n    if (!basisFile.startTranscoding()) {\n      throw new Error('Failed to start basis transcoding');\n    }\n    const imageCount = basisFile.getNumImages();\n    const images = [];\n    for (let imageIndex = 0; imageIndex < imageCount; imageIndex++) {\n      const levelsCount = basisFile.getNumLevels(imageIndex);\n      const levels = [];\n      for (let levelIndex = 0; levelIndex < levelsCount; levelIndex++) {\n        levels.push(transcodeImage(basisFile, imageIndex, levelIndex, options));\n      }\n      images.push(levels);\n    }\n    return images;\n  } finally {\n    basisFile.close();\n    basisFile.delete();\n  }\n}\nfunction transcodeImage(basisFile, imageIndex, levelIndex, options) {\n  const width = basisFile.getImageWidth(imageIndex, levelIndex);\n  const height = basisFile.getImageHeight(imageIndex, levelIndex);\n  const hasAlpha = basisFile.getHasAlpha();\n  const {\n    compressed,\n    format,\n    basisFormat\n  } = getBasisOptions(options, hasAlpha);\n  const decodedSize = basisFile.getImageTranscodedSizeInBytes(imageIndex, levelIndex, basisFormat);\n  const decodedData = new Uint8Array(decodedSize);\n  if (!basisFile.transcodeImage(decodedData, imageIndex, levelIndex, basisFormat, 0, 0)) {\n    throw new Error('failed to start Basis transcoding');\n  }\n  return {\n    width,\n    height,\n    data: decodedData,\n    compressed,\n    format,\n    hasAlpha\n  };\n}\nfunction parseKTX2File(KTX2File, data, options) {\n  const ktx2File = new KTX2File(new Uint8Array(data));\n  try {\n    if (!ktx2File.startTranscoding()) {\n      throw new Error('failed to start KTX2 transcoding');\n    }\n    const levelsCount = ktx2File.getLevels();\n    const levels = [];\n    for (let levelIndex = 0; levelIndex < levelsCount; levelIndex++) {\n      levels.push(transcodeKTX2Image(ktx2File, levelIndex, options));\n      break;\n    }\n    return [levels];\n  } finally {\n    ktx2File.close();\n    ktx2File.delete();\n  }\n}\nfunction transcodeKTX2Image(ktx2File, levelIndex, options) {\n  const {\n    alphaFlag,\n    height,\n    width\n  } = ktx2File.getImageLevelInfo(levelIndex, 0, 0);\n  const {\n    compressed,\n    format,\n    basisFormat\n  } = getBasisOptions(options, alphaFlag);\n  const decodedSize = ktx2File.getImageTranscodedSizeInBytes(levelIndex, 0, 0, basisFormat);\n  const decodedData = new Uint8Array(decodedSize);\n  if (!ktx2File.transcodeImage(decodedData, levelIndex, 0, 0, basisFormat, 0, -1, -1)) {\n    throw new Error('Failed to transcode KTX2 image');\n  }\n  return {\n    width,\n    height,\n    data: decodedData,\n    compressed,\n    levelSize: decodedSize,\n    hasAlpha: alphaFlag,\n    format\n  };\n}\nfunction getBasisOptions(options, hasAlpha) {\n  let format = options && options.basis && options.basis.format;\n  if (format === 'auto') {\n    format = selectSupportedBasisFormat();\n  }\n  if (typeof format === 'object') {\n    format = hasAlpha ? format.alpha : format.noAlpha;\n  }\n  format = format.toLowerCase();\n  return OutputFormat[format];\n}\nexport function selectSupportedBasisFormat() {\n  const supportedFormats = getSupportedGPUTextureFormats();\n  if (supportedFormats.has('astc')) {\n    return 'astc-4x4';\n  } else if (supportedFormats.has('dxt')) {\n    return {\n      alpha: 'bc3',\n      noAlpha: 'bc1'\n    };\n  } else if (supportedFormats.has('pvrtc')) {\n    return {\n      alpha: 'pvrtc1-4-rgba',\n      noAlpha: 'pvrtc1-4-rgb'\n    };\n  } else if (supportedFormats.has('etc1')) {\n    return 'etc1';\n  } else if (supportedFormats.has('etc2')) {\n    return 'etc2';\n  }\n  return 'rgb565';\n}\n//# sourceMappingURL=parse-basis.js.map","import { isBrowser } from '@loaders.gl/worker-utils';\nimport { VERSION } from './lib/utils/version';\nimport parseBasis from './lib/parsers/parse-basis';\nexport const BasisWorkerLoader = {\n  name: 'Basis',\n  id: isBrowser ? 'basis' : 'basis-nodejs',\n  module: 'textures',\n  version: VERSION,\n  worker: true,\n  extensions: ['basis', 'ktx2'],\n  mimeTypes: ['application/octet-stream', 'image/ktx2'],\n  tests: ['sB'],\n  binary: true,\n  options: {\n    basis: {\n      format: 'auto',\n      libraryPath: 'libs/',\n      containerFormat: 'auto',\n      module: 'transcoder'\n    }\n  }\n};\nexport const BasisLoader = {\n  ...BasisWorkerLoader,\n  parse: parseBasis\n};\nexport const _TypecheckBasisWorkerLoader = BasisWorkerLoader;\nexport const _TypecheckBasisLoader = BasisLoader;\n//# sourceMappingURL=basis-loader.js.map","export const VERSION = typeof \"3.4.15\" !== 'undefined' ? \"3.4.15\" : 'latest';\n//# sourceMappingURL=version.js.map","export function getFirstCharacters(data) {\n  let length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 5;\n  if (typeof data === 'string') {\n    return data.slice(0, length);\n  } else if (ArrayBuffer.isView(data)) {\n    return getMagicString(data.buffer, data.byteOffset, length);\n  } else if (data instanceof ArrayBuffer) {\n    const byteOffset = 0;\n    return getMagicString(data, byteOffset, length);\n  }\n  return '';\n}\nexport function getMagicString(arrayBuffer, byteOffset, length) {\n  if (arrayBuffer.byteLength <= byteOffset + length) {\n    return '';\n  }\n  const dataView = new DataView(arrayBuffer);\n  let magic = '';\n  for (let i = 0; i < length; i++) {\n    magic += String.fromCharCode(dataView.getUint8(byteOffset + i));\n  }\n  return magic;\n}\n//# sourceMappingURL=get-first-characters.js.map","export function resolveUrl(url, options) {\n  const absolute = url.startsWith('data:') || url.startsWith('http:') || url.startsWith('https:');\n  if (absolute) {\n    return url;\n  }\n  const baseUrl = options.baseUri || options.uri;\n  if (!baseUrl) {\n    throw new Error(\"'baseUri' must be provided to resolve relative url \".concat(url));\n  }\n  return baseUrl.substr(0, baseUrl.lastIndexOf('/') + 1) + url;\n}\n//# sourceMappingURL=resolve-url.js.map","import { assert } from '../env-utils/assert';\nexport function padToNBytes(byteLength, padding) {\n  assert(byteLength >= 0);\n  assert(padding > 0);\n  return byteLength + (padding - 1) & ~(padding - 1);\n}\nexport function copyArrayBuffer(targetBuffer, sourceBuffer, byteOffset) {\n  let byteLength = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : sourceBuffer.byteLength;\n  const targetArray = new Uint8Array(targetBuffer, byteOffset, byteLength);\n  const sourceArray = new Uint8Array(sourceBuffer);\n  targetArray.set(sourceArray);\n  return targetBuffer;\n}\nexport function copyToArray(source, target, targetOffset) {\n  let sourceArray;\n  if (source instanceof ArrayBuffer) {\n    sourceArray = new Uint8Array(source);\n  } else {\n    const srcByteOffset = source.byteOffset;\n    const srcByteLength = source.byteLength;\n    sourceArray = new Uint8Array(source.buffer || source.arrayBuffer, srcByteOffset, srcByteLength);\n  }\n  target.set(sourceArray, targetOffset);\n  return targetOffset + padToNBytes(sourceArray.byteLength, 4);\n}\n//# sourceMappingURL=memory-copy-utils.js.map","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { getBinaryImageMetadata } from '@loaders.gl/images';\nimport { padToNBytes, copyToArray } from '@loaders.gl/loader-utils';\nimport { assert } from '../utils/assert';\nimport { getAccessorArrayTypeAndLength, getAccessorTypeFromSize, getComponentTypeFromArray } from '../gltf-utils/gltf-utils';\nconst DEFAULT_GLTF_JSON = {\n  asset: {\n    version: '2.0',\n    generator: 'loaders.gl'\n  },\n  buffers: []\n};\nexport default class GLTFScenegraph {\n  constructor(gltf) {\n    _defineProperty(this, \"gltf\", void 0);\n    _defineProperty(this, \"sourceBuffers\", void 0);\n    _defineProperty(this, \"byteLength\", void 0);\n    this.gltf = gltf || {\n      json: {\n        ...DEFAULT_GLTF_JSON\n      },\n      buffers: []\n    };\n    this.sourceBuffers = [];\n    this.byteLength = 0;\n    if (this.gltf.buffers && this.gltf.buffers[0]) {\n      this.byteLength = this.gltf.buffers[0].byteLength;\n      this.sourceBuffers = [this.gltf.buffers[0]];\n    }\n  }\n  get json() {\n    return this.gltf.json;\n  }\n  getApplicationData(key) {\n    const data = this.json[key];\n    return data;\n  }\n  getExtraData(key) {\n    const extras = this.json.extras || {};\n    return extras[key];\n  }\n  getExtension(extensionName) {\n    const isExtension = this.getUsedExtensions().find(name => name === extensionName);\n    const extensions = this.json.extensions || {};\n    return isExtension ? extensions[extensionName] || true : null;\n  }\n  getRequiredExtension(extensionName) {\n    const isRequired = this.getRequiredExtensions().find(name => name === extensionName);\n    return isRequired ? this.getExtension(extensionName) : null;\n  }\n  getRequiredExtensions() {\n    return this.json.extensionsRequired || [];\n  }\n  getUsedExtensions() {\n    return this.json.extensionsUsed || [];\n  }\n  getRemovedExtensions() {\n    return this.json.extensionsRemoved || [];\n  }\n  getObjectExtension(object, extensionName) {\n    const extensions = object.extensions || {};\n    return extensions[extensionName];\n  }\n  getScene(index) {\n    return this.getObject('scenes', index);\n  }\n  getNode(index) {\n    return this.getObject('nodes', index);\n  }\n  getSkin(index) {\n    return this.getObject('skins', index);\n  }\n  getMesh(index) {\n    return this.getObject('meshes', index);\n  }\n  getMaterial(index) {\n    return this.getObject('materials', index);\n  }\n  getAccessor(index) {\n    return this.getObject('accessors', index);\n  }\n  getTexture(index) {\n    return this.getObject('textures', index);\n  }\n  getSampler(index) {\n    return this.getObject('samplers', index);\n  }\n  getImage(index) {\n    return this.getObject('images', index);\n  }\n  getBufferView(index) {\n    return this.getObject('bufferViews', index);\n  }\n  getBuffer(index) {\n    return this.getObject('buffers', index);\n  }\n  getObject(array, index) {\n    if (typeof index === 'object') {\n      return index;\n    }\n    const object = this.json[array] && this.json[array][index];\n    if (!object) {\n      throw new Error(\"glTF file error: Could not find \".concat(array, \"[\").concat(index, \"]\"));\n    }\n    return object;\n  }\n  getTypedArrayForBufferView(bufferView) {\n    bufferView = this.getBufferView(bufferView);\n    const bufferIndex = bufferView.buffer;\n    const binChunk = this.gltf.buffers[bufferIndex];\n    assert(binChunk);\n    const byteOffset = (bufferView.byteOffset || 0) + binChunk.byteOffset;\n    return new Uint8Array(binChunk.arrayBuffer, byteOffset, bufferView.byteLength);\n  }\n  getTypedArrayForAccessor(accessor) {\n    accessor = this.getAccessor(accessor);\n    const bufferView = this.getBufferView(accessor.bufferView);\n    const buffer = this.getBuffer(bufferView.buffer);\n    const arrayBuffer = buffer.data;\n    const {\n      ArrayType,\n      length\n    } = getAccessorArrayTypeAndLength(accessor, bufferView);\n    const byteOffset = bufferView.byteOffset + accessor.byteOffset;\n    return new ArrayType(arrayBuffer, byteOffset, length);\n  }\n  getTypedArrayForImageData(image) {\n    image = this.getAccessor(image);\n    const bufferView = this.getBufferView(image.bufferView);\n    const buffer = this.getBuffer(bufferView.buffer);\n    const arrayBuffer = buffer.data;\n    const byteOffset = bufferView.byteOffset || 0;\n    return new Uint8Array(arrayBuffer, byteOffset, bufferView.byteLength);\n  }\n  addApplicationData(key, data) {\n    this.json[key] = data;\n    return this;\n  }\n  addExtraData(key, data) {\n    this.json.extras = this.json.extras || {};\n    this.json.extras[key] = data;\n    return this;\n  }\n  addObjectExtension(object, extensionName, data) {\n    object.extensions = object.extensions || {};\n    object.extensions[extensionName] = data;\n    this.registerUsedExtension(extensionName);\n    return this;\n  }\n  setObjectExtension(object, extensionName, data) {\n    const extensions = object.extensions || {};\n    extensions[extensionName] = data;\n  }\n  removeObjectExtension(object, extensionName) {\n    const extensions = object.extensions || {};\n    const extension = extensions[extensionName];\n    delete extensions[extensionName];\n    return extension;\n  }\n  addExtension(extensionName) {\n    let extensionData = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n    assert(extensionData);\n    this.json.extensions = this.json.extensions || {};\n    this.json.extensions[extensionName] = extensionData;\n    this.registerUsedExtension(extensionName);\n    return extensionData;\n  }\n  addRequiredExtension(extensionName) {\n    let extensionData = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n    assert(extensionData);\n    this.addExtension(extensionName, extensionData);\n    this.registerRequiredExtension(extensionName);\n    return extensionData;\n  }\n  registerUsedExtension(extensionName) {\n    this.json.extensionsUsed = this.json.extensionsUsed || [];\n    if (!this.json.extensionsUsed.find(ext => ext === extensionName)) {\n      this.json.extensionsUsed.push(extensionName);\n    }\n  }\n  registerRequiredExtension(extensionName) {\n    this.registerUsedExtension(extensionName);\n    this.json.extensionsRequired = this.json.extensionsRequired || [];\n    if (!this.json.extensionsRequired.find(ext => ext === extensionName)) {\n      this.json.extensionsRequired.push(extensionName);\n    }\n  }\n  removeExtension(extensionName) {\n    if (!this.getExtension(extensionName)) {\n      return;\n    }\n    if (this.json.extensionsRequired) {\n      this._removeStringFromArray(this.json.extensionsRequired, extensionName);\n    }\n    if (this.json.extensionsUsed) {\n      this._removeStringFromArray(this.json.extensionsUsed, extensionName);\n    }\n    if (this.json.extensions) {\n      delete this.json.extensions[extensionName];\n    }\n    if (!Array.isArray(this.json.extensionsRemoved)) {\n      this.json.extensionsRemoved = [];\n    }\n    const extensionsRemoved = this.json.extensionsRemoved;\n    if (!extensionsRemoved.includes(extensionName)) {\n      extensionsRemoved.push(extensionName);\n    }\n  }\n  setDefaultScene(sceneIndex) {\n    this.json.scene = sceneIndex;\n  }\n  addScene(scene) {\n    const {\n      nodeIndices\n    } = scene;\n    this.json.scenes = this.json.scenes || [];\n    this.json.scenes.push({\n      nodes: nodeIndices\n    });\n    return this.json.scenes.length - 1;\n  }\n  addNode(node) {\n    const {\n      meshIndex,\n      matrix\n    } = node;\n    this.json.nodes = this.json.nodes || [];\n    const nodeData = {\n      mesh: meshIndex\n    };\n    if (matrix) {\n      nodeData.matrix = matrix;\n    }\n    this.json.nodes.push(nodeData);\n    return this.json.nodes.length - 1;\n  }\n  addMesh(mesh) {\n    const {\n      attributes,\n      indices,\n      material,\n      mode = 4\n    } = mesh;\n    const accessors = this._addAttributes(attributes);\n    const glTFMesh = {\n      primitives: [{\n        attributes: accessors,\n        mode\n      }]\n    };\n    if (indices) {\n      const indicesAccessor = this._addIndices(indices);\n      glTFMesh.primitives[0].indices = indicesAccessor;\n    }\n    if (Number.isFinite(material)) {\n      glTFMesh.primitives[0].material = material;\n    }\n    this.json.meshes = this.json.meshes || [];\n    this.json.meshes.push(glTFMesh);\n    return this.json.meshes.length - 1;\n  }\n  addPointCloud(attributes) {\n    const accessorIndices = this._addAttributes(attributes);\n    const glTFMesh = {\n      primitives: [{\n        attributes: accessorIndices,\n        mode: 0\n      }]\n    };\n    this.json.meshes = this.json.meshes || [];\n    this.json.meshes.push(glTFMesh);\n    return this.json.meshes.length - 1;\n  }\n  addImage(imageData, mimeTypeOpt) {\n    const metadata = getBinaryImageMetadata(imageData);\n    const mimeType = mimeTypeOpt || (metadata === null || metadata === void 0 ? void 0 : metadata.mimeType);\n    const bufferViewIndex = this.addBufferView(imageData);\n    const glTFImage = {\n      bufferView: bufferViewIndex,\n      mimeType\n    };\n    this.json.images = this.json.images || [];\n    this.json.images.push(glTFImage);\n    return this.json.images.length - 1;\n  }\n  addBufferView(buffer) {\n    const byteLength = buffer.byteLength;\n    assert(Number.isFinite(byteLength));\n    this.sourceBuffers = this.sourceBuffers || [];\n    this.sourceBuffers.push(buffer);\n    const glTFBufferView = {\n      buffer: 0,\n      byteOffset: this.byteLength,\n      byteLength\n    };\n    this.byteLength += padToNBytes(byteLength, 4);\n    this.json.bufferViews = this.json.bufferViews || [];\n    this.json.bufferViews.push(glTFBufferView);\n    return this.json.bufferViews.length - 1;\n  }\n  addAccessor(bufferViewIndex, accessor) {\n    const glTFAccessor = {\n      bufferView: bufferViewIndex,\n      type: getAccessorTypeFromSize(accessor.size),\n      componentType: accessor.componentType,\n      count: accessor.count,\n      max: accessor.max,\n      min: accessor.min\n    };\n    this.json.accessors = this.json.accessors || [];\n    this.json.accessors.push(glTFAccessor);\n    return this.json.accessors.length - 1;\n  }\n  addBinaryBuffer(sourceBuffer) {\n    let accessor = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n      size: 3\n    };\n    const bufferViewIndex = this.addBufferView(sourceBuffer);\n    let minMax = {\n      min: accessor.min,\n      max: accessor.max\n    };\n    if (!minMax.min || !minMax.max) {\n      minMax = this._getAccessorMinMax(sourceBuffer, accessor.size);\n    }\n    const accessorDefaults = {\n      size: accessor.size,\n      componentType: getComponentTypeFromArray(sourceBuffer),\n      count: Math.round(sourceBuffer.length / accessor.size),\n      min: minMax.min,\n      max: minMax.max\n    };\n    return this.addAccessor(bufferViewIndex, Object.assign(accessorDefaults, accessor));\n  }\n  addTexture(texture) {\n    const {\n      imageIndex\n    } = texture;\n    const glTFTexture = {\n      source: imageIndex\n    };\n    this.json.textures = this.json.textures || [];\n    this.json.textures.push(glTFTexture);\n    return this.json.textures.length - 1;\n  }\n  addMaterial(pbrMaterialInfo) {\n    this.json.materials = this.json.materials || [];\n    this.json.materials.push(pbrMaterialInfo);\n    return this.json.materials.length - 1;\n  }\n  createBinaryChunk() {\n    var _this$json, _this$json$buffers;\n    this.gltf.buffers = [];\n    const totalByteLength = this.byteLength;\n    const arrayBuffer = new ArrayBuffer(totalByteLength);\n    const targetArray = new Uint8Array(arrayBuffer);\n    let dstByteOffset = 0;\n    for (const sourceBuffer of this.sourceBuffers || []) {\n      dstByteOffset = copyToArray(sourceBuffer, targetArray, dstByteOffset);\n    }\n    if ((_this$json = this.json) !== null && _this$json !== void 0 && (_this$json$buffers = _this$json.buffers) !== null && _this$json$buffers !== void 0 && _this$json$buffers[0]) {\n      this.json.buffers[0].byteLength = totalByteLength;\n    } else {\n      this.json.buffers = [{\n        byteLength: totalByteLength\n      }];\n    }\n    this.gltf.binary = arrayBuffer;\n    this.sourceBuffers = [arrayBuffer];\n  }\n  _removeStringFromArray(array, string) {\n    let found = true;\n    while (found) {\n      const index = array.indexOf(string);\n      if (index > -1) {\n        array.splice(index, 1);\n      } else {\n        found = false;\n      }\n    }\n  }\n  _addAttributes() {\n    let attributes = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n    const result = {};\n    for (const attributeKey in attributes) {\n      const attributeData = attributes[attributeKey];\n      const attrName = this._getGltfAttributeName(attributeKey);\n      const accessor = this.addBinaryBuffer(attributeData.value, attributeData);\n      result[attrName] = accessor;\n    }\n    return result;\n  }\n  _addIndices(indices) {\n    return this.addBinaryBuffer(indices, {\n      size: 1\n    });\n  }\n  _getGltfAttributeName(attributeName) {\n    switch (attributeName.toLowerCase()) {\n      case 'position':\n      case 'positions':\n      case 'vertices':\n        return 'POSITION';\n      case 'normal':\n      case 'normals':\n        return 'NORMAL';\n      case 'color':\n      case 'colors':\n        return 'COLOR_0';\n      case 'texcoord':\n      case 'texcoords':\n        return 'TEXCOORD_0';\n      default:\n        return attributeName;\n    }\n  }\n  _getAccessorMinMax(buffer, size) {\n    const result = {\n      min: null,\n      max: null\n    };\n    if (buffer.length < size) {\n      return result;\n    }\n    result.min = [];\n    result.max = [];\n    const initValues = buffer.subarray(0, size);\n    for (const value of initValues) {\n      result.min.push(value);\n      result.max.push(value);\n    }\n    for (let index = size; index < buffer.length; index += size) {\n      for (let componentIndex = 0; componentIndex < size; componentIndex++) {\n        result.min[0 + componentIndex] = Math.min(result.min[0 + componentIndex], buffer[index + componentIndex]);\n        result.max[0 + componentIndex] = Math.max(result.max[0 + componentIndex], buffer[index + componentIndex]);\n      }\n    }\n    return result;\n  }\n}\n//# sourceMappingURL=gltf-scenegraph.js.map","const isWebAssemblySupported = typeof WebAssembly !== 'object';\nconst wasm_base = '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';\nconst wasm_simd = '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';\nconst detector = new Uint8Array([0, 97, 115, 109, 1, 0, 0, 0, 1, 4, 1, 96, 0, 0, 3, 3, 2, 0, 0, 5, 3, 1, 0, 1, 12, 1, 0, 10, 22, 2, 12, 0, 65, 0, 65, 0, 65, 0, 252, 10, 0, 0, 11, 7, 0, 65, 0, 253, 15, 26, 11]);\nconst wasmpack = new Uint8Array([32, 0, 65, 253, 3, 1, 2, 34, 4, 106, 6, 5, 11, 8, 7, 20, 13, 33, 12, 16, 128, 9, 116, 64, 19, 113, 127, 15, 10, 21, 22, 14, 255, 66, 24, 54, 136, 107, 18, 23, 192, 26, 114, 118, 132, 17, 77, 101, 130, 144, 27, 87, 131, 44, 45, 74, 156, 154, 70, 167]);\nconst FILTERS = {\n  0: '',\n  1: 'meshopt_decodeFilterOct',\n  2: 'meshopt_decodeFilterQuat',\n  3: 'meshopt_decodeFilterExp',\n  NONE: '',\n  OCTAHEDRAL: 'meshopt_decodeFilterOct',\n  QUATERNION: 'meshopt_decodeFilterQuat',\n  EXPONENTIAL: 'meshopt_decodeFilterExp'\n};\nconst DECODERS = {\n  0: 'meshopt_decodeVertexBuffer',\n  1: 'meshopt_decodeIndexBuffer',\n  2: 'meshopt_decodeIndexSequence',\n  ATTRIBUTES: 'meshopt_decodeVertexBuffer',\n  TRIANGLES: 'meshopt_decodeIndexBuffer',\n  INDICES: 'meshopt_decodeIndexSequence'\n};\nexport function isMeshoptSupported() {\n  return isWebAssemblySupported;\n}\nexport async function meshoptDecodeVertexBuffer(target, count, size, source) {\n  let filter = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 'NONE';\n  const instance = await loadWasmInstance();\n  decode(instance, instance.exports.meshopt_decodeVertexBuffer, target, count, size, source, instance.exports[FILTERS[filter]]);\n}\nexport async function meshoptDecodeIndexBuffer(target, count, size, source) {\n  const instance = await loadWasmInstance();\n  decode(instance, instance.exports.meshopt_decodeIndexBuffer, target, count, size, source);\n}\nexport async function meshoptDecodeIndexSequence(target, count, size, source) {\n  const instance = await loadWasmInstance();\n  decode(instance, instance.exports.meshopt_decodeIndexSequence, target, count, size, source);\n}\nexport async function meshoptDecodeGltfBuffer(target, count, size, source, mode) {\n  let filter = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : 'NONE';\n  const instance = await loadWasmInstance();\n  decode(instance, instance.exports[DECODERS[mode]], target, count, size, source, instance.exports[FILTERS[filter || 'NONE']]);\n}\nlet wasmPromise;\nasync function loadWasmInstance() {\n  if (!wasmPromise) {\n    wasmPromise = loadWasmModule();\n  }\n  return wasmPromise;\n}\nasync function loadWasmModule() {\n  let wasm = wasm_base;\n  if (WebAssembly.validate(detector)) {\n    wasm = wasm_simd;\n    console.log('Warning: meshopt_decoder is using experimental SIMD support');\n  }\n  const result = await WebAssembly.instantiate(unpack(wasm), {});\n  await result.instance.exports.__wasm_call_ctors();\n  return result.instance;\n}\nfunction unpack(data) {\n  const result = new Uint8Array(data.length);\n  for (let i = 0; i < data.length; ++i) {\n    const ch = data.charCodeAt(i);\n    result[i] = ch > 96 ? ch - 71 : ch > 64 ? ch - 65 : ch > 47 ? ch + 4 : ch > 46 ? 63 : 62;\n  }\n  let write = 0;\n  for (let i = 0; i < data.length; ++i) {\n    result[write++] = result[i] < 60 ? wasmpack[result[i]] : (result[i] - 60) * 64 + result[++i];\n  }\n  return result.buffer.slice(0, write);\n}\nfunction decode(instance, fun, target, count, size, source, filter) {\n  const sbrk = instance.exports.sbrk;\n  const count4 = count + 3 & ~3;\n  const tp = sbrk(count4 * size);\n  const sp = sbrk(source.length);\n  const heap = new Uint8Array(instance.exports.memory.buffer);\n  heap.set(source, sp);\n  const res = fun(tp, count, size, sp, source.length);\n  if (res === 0 && filter) {\n    filter(tp, count4, size);\n  }\n  target.set(heap.subarray(tp, tp + count * size));\n  sbrk(tp - sbrk(0));\n  if (res !== 0) {\n    throw new Error(\"Malformed buffer data: \".concat(res));\n  }\n}\n//# sourceMappingURL=meshopt-decoder.js.map","import GLTFScenegraph from '../api/gltf-scenegraph';\nimport { meshoptDecodeGltfBuffer } from '../../meshopt/meshopt-decoder';\nconst DEFAULT_MESHOPT_OPTIONS = {\n  byteOffset: 0,\n  filter: 'NONE'\n};\nconst EXT_MESHOPT_COMPRESSION = 'EXT_meshopt_compression';\nexport const name = EXT_MESHOPT_COMPRESSION;\nexport async function decode(gltfData, options) {\n  var _options$gltf;\n  const scenegraph = new GLTFScenegraph(gltfData);\n  if (!(options !== null && options !== void 0 && (_options$gltf = options.gltf) !== null && _options$gltf !== void 0 && _options$gltf.decompressMeshes)) {\n    return;\n  }\n  const promises = [];\n  for (const bufferViewIndex of gltfData.json.bufferViews || []) {\n    promises.push(decodeMeshoptBufferView(scenegraph, bufferViewIndex));\n  }\n  await Promise.all(promises);\n  scenegraph.removeExtension(EXT_MESHOPT_COMPRESSION);\n}\nasync function decodeMeshoptBufferView(scenegraph, bufferView) {\n  const meshoptExtension = scenegraph.getObjectExtension(bufferView, EXT_MESHOPT_COMPRESSION);\n  if (meshoptExtension) {\n    const {\n      byteOffset = 0,\n      byteLength = 0,\n      byteStride,\n      count,\n      mode,\n      filter = 'NONE',\n      buffer: bufferIndex\n    } = meshoptExtension;\n    const buffer = scenegraph.gltf.buffers[bufferIndex];\n    const source = new Uint8Array(buffer.arrayBuffer, buffer.byteOffset + byteOffset, byteLength);\n    const result = new Uint8Array(scenegraph.gltf.buffers[bufferView.buffer].arrayBuffer, bufferView.byteOffset, bufferView.byteLength);\n    await meshoptDecodeGltfBuffer(result, count, byteStride, source, mode, filter);\n    return result;\n  }\n  return null;\n}\n//# sourceMappingURL=EXT_meshopt_compression.js.map","import { isBrowser } from '@loaders.gl/loader-utils';\nconst MIME_TYPES = ['image/png', 'image/jpeg', 'image/gif', 'image/webp', 'image/avif', 'image/tiff', 'image/svg', 'image/svg+xml', 'image/bmp', 'image/vnd.microsoft.icon'];\nconst mimeTypeSupportedPromise = null;\nexport async function getSupportedImageFormats() {\n  if (mimeTypeSupportedPromise) {\n    return await mimeTypeSupportedPromise;\n  }\n  const supportedMimeTypes = new Set();\n  for (const mimeType of MIME_TYPES) {\n    const supported = isBrowser ? await checkBrowserImageFormatSupportAsync(mimeType) : checkNodeImageFormatSupport(mimeType);\n    if (supported) {\n      supportedMimeTypes.add(mimeType);\n    }\n  }\n  return supportedMimeTypes;\n}\nconst mimeTypeSupportedSync = {};\nexport function isImageFormatSupported(mimeType) {\n  if (mimeTypeSupportedSync[mimeType] === undefined) {\n    const supported = isBrowser ? checkBrowserImageFormatSupport(mimeType) : checkNodeImageFormatSupport(mimeType);\n    mimeTypeSupportedSync[mimeType] = supported;\n  }\n  return mimeTypeSupportedSync[mimeType];\n}\nfunction checkNodeImageFormatSupport(mimeType) {\n  const NODE_FORMAT_SUPPORT = ['image/png', 'image/jpeg', 'image/gif'];\n  const {\n    _parseImageNode,\n    _imageFormatsNode = NODE_FORMAT_SUPPORT\n  } = globalThis;\n  return Boolean(_parseImageNode) && _imageFormatsNode.includes(mimeType);\n}\nfunction checkBrowserImageFormatSupport(mimeType) {\n  switch (mimeType) {\n    case 'image/avif':\n    case 'image/webp':\n      return testBrowserImageFormatSupport(mimeType);\n    default:\n      return true;\n  }\n}\nconst TEST_IMAGE = {\n  'image/avif': 'data:image/avif;base64,AAAAIGZ0eXBhdmlmAAAAAGF2aWZtaWYxbWlhZk1BMUIAAADybWV0YQAAAAAAAAAoaGRscgAAAAAAAAAAcGljdAAAAAAAAAAAAAAAAGxpYmF2aWYAAAAADnBpdG0AAAAAAAEAAAAeaWxvYwAAAABEAAABAAEAAAABAAABGgAAAB0AAAAoaWluZgAAAAAAAQAAABppbmZlAgAAAAABAABhdjAxQ29sb3IAAAAAamlwcnAAAABLaXBjbwAAABRpc3BlAAAAAAAAAAIAAAACAAAAEHBpeGkAAAAAAwgICAAAAAxhdjFDgQ0MAAAAABNjb2xybmNseAACAAIAAYAAAAAXaXBtYQAAAAAAAAABAAEEAQKDBAAAACVtZGF0EgAKCBgANogQEAwgMg8f8D///8WfhwB8+ErK42A=',\n  'image/webp': 'data:image/webp;base64,UklGRiIAAABXRUJQVlA4IBYAAAAwAQCdASoBAAEADsD+JaQAA3AAAAAA'\n};\nasync function checkBrowserImageFormatSupportAsync(mimeType) {\n  const dataURL = TEST_IMAGE[mimeType];\n  return dataURL ? await testBrowserImageFormatSupportAsync(dataURL) : true;\n}\nfunction testBrowserImageFormatSupport(mimeType) {\n  try {\n    const element = document.createElement('canvas');\n    const dataURL = element.toDataURL(mimeType);\n    return dataURL.indexOf(\"data:\".concat(mimeType)) === 0;\n  } catch {\n    return false;\n  }\n}\nasync function testBrowserImageFormatSupportAsync(testImageDataURL) {\n  return new Promise(resolve => {\n    const image = new Image();\n    image.src = testImageDataURL;\n    image.onload = () => resolve(image.height > 0);\n    image.onerror = () => resolve(false);\n  });\n}\n//# sourceMappingURL=image-format.js.map","import { isImageFormatSupported } from '@loaders.gl/images';\nimport GLTFScenegraph from '../api/gltf-scenegraph';\nconst EXT_TEXTURE_WEBP = 'EXT_texture_webp';\nexport const name = EXT_TEXTURE_WEBP;\nexport function preprocess(gltfData, options) {\n  const scenegraph = new GLTFScenegraph(gltfData);\n  if (!isImageFormatSupported('image/webp')) {\n    if (scenegraph.getRequiredExtensions().includes(EXT_TEXTURE_WEBP)) {\n      throw new Error(\"gltf: Required extension \".concat(EXT_TEXTURE_WEBP, \" not supported by browser\"));\n    }\n    return;\n  }\n  const {\n    json\n  } = scenegraph;\n  for (const texture of json.textures || []) {\n    const extension = scenegraph.getObjectExtension(texture, EXT_TEXTURE_WEBP);\n    if (extension) {\n      texture.source = extension.source;\n    }\n    scenegraph.removeObjectExtension(texture, EXT_TEXTURE_WEBP);\n  }\n  scenegraph.removeExtension(EXT_TEXTURE_WEBP);\n}\n//# sourceMappingURL=EXT_texture_webp.js.map","import GLTFScenegraph from '../api/gltf-scenegraph';\nconst KHR_TEXTURE_BASISU = 'KHR_texture_basisu';\nexport const name = KHR_TEXTURE_BASISU;\nexport function preprocess(gltfData, options) {\n  const scene = new GLTFScenegraph(gltfData);\n  const {\n    json\n  } = scene;\n  for (const texture of json.textures || []) {\n    const extension = scene.getObjectExtension(texture, KHR_TEXTURE_BASISU);\n    if (extension) {\n      texture.source = extension.source;\n    }\n    scene.removeObjectExtension(texture, KHR_TEXTURE_BASISU);\n  }\n  scene.removeExtension(KHR_TEXTURE_BASISU);\n}\n//# sourceMappingURL=KHR_texture_basisu.js.map","import { getAccessorTypeFromSize, getComponentTypeFromArray } from './gltf-utils';\nexport function getGLTFAccessors(attributes) {\n  const accessors = {};\n  for (const name in attributes) {\n    const attribute = attributes[name];\n    if (name !== 'indices') {\n      const glTFAccessor = getGLTFAccessor(attribute);\n      accessors[name] = glTFAccessor;\n    }\n  }\n  return accessors;\n}\nexport function getGLTFAccessor(attribute) {\n  const {\n    buffer,\n    size,\n    count\n  } = getAccessorData(attribute);\n  const glTFAccessor = {\n    value: buffer,\n    size,\n    byteOffset: 0,\n    count,\n    type: getAccessorTypeFromSize(size),\n    componentType: getComponentTypeFromArray(buffer)\n  };\n  return glTFAccessor;\n}\nfunction getAccessorData(attribute) {\n  let buffer = attribute;\n  let size = 1;\n  let count = 0;\n  if (attribute && attribute.value) {\n    buffer = attribute.value;\n    size = attribute.size || 1;\n  }\n  if (buffer) {\n    if (!ArrayBuffer.isView(buffer)) {\n      buffer = toTypedArray(buffer, Float32Array);\n    }\n    count = buffer.length / size;\n  }\n  return {\n    buffer,\n    size,\n    count\n  };\n}\nfunction toTypedArray(array, ArrayType) {\n  let convertTypedArrays = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n  if (!array) {\n    return null;\n  }\n  if (Array.isArray(array)) {\n    return new ArrayType(array);\n  }\n  if (convertTypedArrays && !(array instanceof ArrayType)) {\n    return new ArrayType(array);\n  }\n  return array;\n}\n//# sourceMappingURL=gltf-attribute-utils.js.map","import { DracoLoader } from '@loaders.gl/draco';\nimport { sliceArrayBuffer } from '@loaders.gl/loader-utils';\nimport { default as Scenegraph } from '../api/gltf-scenegraph';\nimport { getGLTFAccessors, getGLTFAccessor } from '../gltf-utils/gltf-attribute-utils';\nconst KHR_DRACO_MESH_COMPRESSION = 'KHR_draco_mesh_compression';\nexport const name = KHR_DRACO_MESH_COMPRESSION;\nexport function preprocess(gltfData, options, context) {\n  const scenegraph = new Scenegraph(gltfData);\n  for (const primitive of makeMeshPrimitiveIterator(scenegraph)) {\n    if (scenegraph.getObjectExtension(primitive, KHR_DRACO_MESH_COMPRESSION)) {}\n  }\n}\nexport async function decode(gltfData, options, context) {\n  var _options$gltf;\n  if (!(options !== null && options !== void 0 && (_options$gltf = options.gltf) !== null && _options$gltf !== void 0 && _options$gltf.decompressMeshes)) {\n    return;\n  }\n  const scenegraph = new Scenegraph(gltfData);\n  const promises = [];\n  for (const primitive of makeMeshPrimitiveIterator(scenegraph)) {\n    if (scenegraph.getObjectExtension(primitive, KHR_DRACO_MESH_COMPRESSION)) {\n      promises.push(decompressPrimitive(scenegraph, primitive, options, context));\n    }\n  }\n  await Promise.all(promises);\n  scenegraph.removeExtension(KHR_DRACO_MESH_COMPRESSION);\n}\nexport function encode(gltfData) {\n  let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n  const scenegraph = new Scenegraph(gltfData);\n  for (const mesh of scenegraph.json.meshes || []) {\n    compressMesh(mesh, options);\n    scenegraph.addRequiredExtension(KHR_DRACO_MESH_COMPRESSION);\n  }\n}\nasync function decompressPrimitive(scenegraph, primitive, options, context) {\n  const dracoExtension = scenegraph.getObjectExtension(primitive, KHR_DRACO_MESH_COMPRESSION);\n  if (!dracoExtension) {\n    return;\n  }\n  const buffer = scenegraph.getTypedArrayForBufferView(dracoExtension.bufferView);\n  const bufferCopy = sliceArrayBuffer(buffer.buffer, buffer.byteOffset);\n  const {\n    parse\n  } = context;\n  const dracoOptions = {\n    ...options\n  };\n  delete dracoOptions['3d-tiles'];\n  const decodedData = await parse(bufferCopy, DracoLoader, dracoOptions, context);\n  const decodedAttributes = getGLTFAccessors(decodedData.attributes);\n  for (const [attributeName, decodedAttribute] of Object.entries(decodedAttributes)) {\n    if (attributeName in primitive.attributes) {\n      const accessorIndex = primitive.attributes[attributeName];\n      const accessor = scenegraph.getAccessor(accessorIndex);\n      if (accessor !== null && accessor !== void 0 && accessor.min && accessor !== null && accessor !== void 0 && accessor.max) {\n        decodedAttribute.min = accessor.min;\n        decodedAttribute.max = accessor.max;\n      }\n    }\n  }\n  primitive.attributes = decodedAttributes;\n  if (decodedData.indices) {\n    primitive.indices = getGLTFAccessor(decodedData.indices);\n  }\n  checkPrimitive(primitive);\n}\nfunction compressMesh(attributes, indices) {\n  var _context$parseSync;\n  let mode = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 4;\n  let options = arguments.length > 3 ? arguments[3] : undefined;\n  let context = arguments.length > 4 ? arguments[4] : undefined;\n  if (!options.DracoWriter) {\n    throw new Error('options.gltf.DracoWriter not provided');\n  }\n  const compressedData = options.DracoWriter.encodeSync({\n    attributes\n  });\n  const decodedData = context === null || context === void 0 ? void 0 : (_context$parseSync = context.parseSync) === null || _context$parseSync === void 0 ? void 0 : _context$parseSync.call(context, {\n    attributes\n  });\n  const fauxAccessors = options._addFauxAttributes(decodedData.attributes);\n  const bufferViewIndex = options.addBufferView(compressedData);\n  const glTFMesh = {\n    primitives: [{\n      attributes: fauxAccessors,\n      mode,\n      extensions: {\n        [KHR_DRACO_MESH_COMPRESSION]: {\n          bufferView: bufferViewIndex,\n          attributes: fauxAccessors\n        }\n      }\n    }]\n  };\n  return glTFMesh;\n}\nfunction checkPrimitive(primitive) {\n  if (!primitive.attributes && Object.keys(primitive.attributes).length > 0) {\n    throw new Error('glTF: Empty primitive detected: Draco decompression failure?');\n  }\n}\nfunction* makeMeshPrimitiveIterator(scenegraph) {\n  for (const mesh of scenegraph.json.meshes || []) {\n    for (const primitive of mesh.primitives) {\n      yield primitive;\n    }\n  }\n}\n//# sourceMappingURL=KHR_draco_mesh_compression.js.map","export const COMPONENTS = {\n  SCALAR: 1,\n  VEC2: 2,\n  VEC3: 3,\n  VEC4: 4,\n  MAT2: 4,\n  MAT3: 9,\n  MAT4: 16\n};\nexport const BYTES = {\n  5120: 1,\n  5121: 1,\n  5122: 2,\n  5123: 2,\n  5125: 4,\n  5126: 4\n};\nexport function getBytesFromComponentType(componentType) {\n  return BYTES[componentType];\n}\nexport function getSizeFromAccessorType(type) {\n  return COMPONENTS[type];\n}\nexport function getGLEnumFromSamplerParameter(parameter) {\n  const GL_TEXTURE_MAG_FILTER = 0x2800;\n  const GL_TEXTURE_MIN_FILTER = 0x2801;\n  const GL_TEXTURE_WRAP_S = 0x2802;\n  const GL_TEXTURE_WRAP_T = 0x2803;\n  const PARAMETER_MAP = {\n    magFilter: GL_TEXTURE_MAG_FILTER,\n    minFilter: GL_TEXTURE_MIN_FILTER,\n    wrapS: GL_TEXTURE_WRAP_S,\n    wrapT: GL_TEXTURE_WRAP_T\n  };\n  return PARAMETER_MAP[parameter];\n}\n//# sourceMappingURL=gltf-constants.js.map","import { Vector3, Matrix3 } from '@math.gl/core';\nimport { getAccessorArrayTypeAndLength } from '../gltf-utils/gltf-utils';\nimport { BYTES, COMPONENTS } from '../gltf-utils/gltf-constants';\nimport GLTFScenegraph from '../api/gltf-scenegraph';\nconst EXT_MESHOPT_TRANSFORM = 'KHR_texture_transform';\nexport const name = EXT_MESHOPT_TRANSFORM;\nconst scratchVector = new Vector3();\nconst scratchRotationMatrix = new Matrix3();\nconst scratchScaleMatrix = new Matrix3();\nexport async function decode(gltfData, options) {\n  const gltfScenegraph = new GLTFScenegraph(gltfData);\n  const extension = gltfScenegraph.getExtension(EXT_MESHOPT_TRANSFORM);\n  if (!extension) {\n    return;\n  }\n  const materials = gltfData.json.materials || [];\n  for (let i = 0; i < materials.length; i++) {\n    transformTexCoords(i, gltfData);\n  }\n}\nfunction transformTexCoords(materialIndex, gltfData) {\n  var _gltfData$json$materi, _material$pbrMetallic, _material$pbrMetallic2;\n  const processedTexCoords = [];\n  const material = (_gltfData$json$materi = gltfData.json.materials) === null || _gltfData$json$materi === void 0 ? void 0 : _gltfData$json$materi[materialIndex];\n  const baseColorTexture = material === null || material === void 0 ? void 0 : (_material$pbrMetallic = material.pbrMetallicRoughness) === null || _material$pbrMetallic === void 0 ? void 0 : _material$pbrMetallic.baseColorTexture;\n  if (baseColorTexture) {\n    transformPrimitives(gltfData, materialIndex, baseColorTexture, processedTexCoords);\n  }\n  const emisiveTexture = material === null || material === void 0 ? void 0 : material.emissiveTexture;\n  if (emisiveTexture) {\n    transformPrimitives(gltfData, materialIndex, emisiveTexture, processedTexCoords);\n  }\n  const normalTexture = material === null || material === void 0 ? void 0 : material.normalTexture;\n  if (normalTexture) {\n    transformPrimitives(gltfData, materialIndex, normalTexture, processedTexCoords);\n  }\n  const occlusionTexture = material === null || material === void 0 ? void 0 : material.occlusionTexture;\n  if (occlusionTexture) {\n    transformPrimitives(gltfData, materialIndex, occlusionTexture, processedTexCoords);\n  }\n  const metallicRoughnessTexture = material === null || material === void 0 ? void 0 : (_material$pbrMetallic2 = material.pbrMetallicRoughness) === null || _material$pbrMetallic2 === void 0 ? void 0 : _material$pbrMetallic2.metallicRoughnessTexture;\n  if (metallicRoughnessTexture) {\n    transformPrimitives(gltfData, materialIndex, metallicRoughnessTexture, processedTexCoords);\n  }\n}\nfunction transformPrimitives(gltfData, materialIndex, texture, processedTexCoords) {\n  const transformParameters = getTransformParameters(texture, processedTexCoords);\n  if (!transformParameters) {\n    return;\n  }\n  const meshes = gltfData.json.meshes || [];\n  for (const mesh of meshes) {\n    for (const primitive of mesh.primitives) {\n      const material = primitive.material;\n      if (Number.isFinite(material) && materialIndex === material) {\n        transformPrimitive(gltfData, primitive, transformParameters);\n      }\n    }\n  }\n}\nfunction getTransformParameters(texture, processedTexCoords) {\n  var _texture$extensions;\n  const textureInfo = (_texture$extensions = texture.extensions) === null || _texture$extensions === void 0 ? void 0 : _texture$extensions[EXT_MESHOPT_TRANSFORM];\n  const {\n    texCoord: originalTexCoord = 0\n  } = texture;\n  const {\n    texCoord = originalTexCoord\n  } = textureInfo;\n  const isProcessed = processedTexCoords.findIndex(_ref => {\n    let [original, newTexCoord] = _ref;\n    return original === originalTexCoord && newTexCoord === texCoord;\n  }) !== -1;\n  if (!isProcessed) {\n    const matrix = makeTransformationMatrix(textureInfo);\n    if (originalTexCoord !== texCoord) {\n      texture.texCoord = texCoord;\n    }\n    processedTexCoords.push([originalTexCoord, texCoord]);\n    return {\n      originalTexCoord,\n      texCoord,\n      matrix\n    };\n  }\n  return null;\n}\nfunction transformPrimitive(gltfData, primitive, transformParameters) {\n  const {\n    originalTexCoord,\n    texCoord,\n    matrix\n  } = transformParameters;\n  const texCoordAccessor = primitive.attributes[\"TEXCOORD_\".concat(originalTexCoord)];\n  if (Number.isFinite(texCoordAccessor)) {\n    var _gltfData$json$access;\n    const accessor = (_gltfData$json$access = gltfData.json.accessors) === null || _gltfData$json$access === void 0 ? void 0 : _gltfData$json$access[texCoordAccessor];\n    if (accessor && accessor.bufferView) {\n      var _gltfData$json$buffer;\n      const bufferView = (_gltfData$json$buffer = gltfData.json.bufferViews) === null || _gltfData$json$buffer === void 0 ? void 0 : _gltfData$json$buffer[accessor.bufferView];\n      if (bufferView) {\n        const {\n          arrayBuffer,\n          byteOffset: bufferByteOffset\n        } = gltfData.buffers[bufferView.buffer];\n        const byteOffset = (bufferByteOffset || 0) + (accessor.byteOffset || 0) + (bufferView.byteOffset || 0);\n        const {\n          ArrayType,\n          length\n        } = getAccessorArrayTypeAndLength(accessor, bufferView);\n        const bytes = BYTES[accessor.componentType];\n        const components = COMPONENTS[accessor.type];\n        const elementAddressScale = bufferView.byteStride || bytes * components;\n        const result = new Float32Array(length);\n        for (let i = 0; i < accessor.count; i++) {\n          const uv = new ArrayType(arrayBuffer, byteOffset + i * elementAddressScale, 2);\n          scratchVector.set(uv[0], uv[1], 1);\n          scratchVector.transformByMatrix3(matrix);\n          result.set([scratchVector[0], scratchVector[1]], i * components);\n        }\n        if (originalTexCoord === texCoord) {\n          updateGltf(accessor, bufferView, gltfData.buffers, result);\n        } else {\n          createAttribute(texCoord, accessor, primitive, gltfData, result);\n        }\n      }\n    }\n  }\n}\nfunction updateGltf(accessor, bufferView, buffers, newTexCoordArray) {\n  accessor.componentType = 5126;\n  buffers.push({\n    arrayBuffer: newTexCoordArray.buffer,\n    byteOffset: 0,\n    byteLength: newTexCoordArray.buffer.byteLength\n  });\n  bufferView.buffer = buffers.length - 1;\n  bufferView.byteLength = newTexCoordArray.buffer.byteLength;\n  bufferView.byteOffset = 0;\n  delete bufferView.byteStride;\n}\nfunction createAttribute(newTexCoord, originalAccessor, primitive, gltfData, newTexCoordArray) {\n  gltfData.buffers.push({\n    arrayBuffer: newTexCoordArray.buffer,\n    byteOffset: 0,\n    byteLength: newTexCoordArray.buffer.byteLength\n  });\n  const bufferViews = gltfData.json.bufferViews;\n  if (!bufferViews) {\n    return;\n  }\n  bufferViews.push({\n    buffer: gltfData.buffers.length - 1,\n    byteLength: newTexCoordArray.buffer.byteLength,\n    byteOffset: 0\n  });\n  const accessors = gltfData.json.accessors;\n  if (!accessors) {\n    return;\n  }\n  accessors.push({\n    bufferView: (bufferViews === null || bufferViews === void 0 ? void 0 : bufferViews.length) - 1,\n    byteOffset: 0,\n    componentType: 5126,\n    count: originalAccessor.count,\n    type: 'VEC2'\n  });\n  primitive.attributes[\"TEXCOORD_\".concat(newTexCoord)] = accessors.length - 1;\n}\nfunction makeTransformationMatrix(extensionData) {\n  const {\n    offset = [0, 0],\n    rotation = 0,\n    scale = [1, 1]\n  } = extensionData;\n  const translationMatirx = new Matrix3().set(1, 0, 0, 0, 1, 0, offset[0], offset[1], 1);\n  const rotationMatirx = scratchRotationMatrix.set(Math.cos(rotation), Math.sin(rotation), 0, -Math.sin(rotation), Math.cos(rotation), 0, 0, 0, 1);\n  const scaleMatrix = scratchScaleMatrix.set(scale[0], 0, 0, 0, scale[1], 0, 0, 0, 1);\n  return translationMatirx.multiplyRight(rotationMatirx).multiplyRight(scaleMatrix);\n}\n//# sourceMappingURL=KHR_texture_transform.js.map","import { assert } from '../../utils/assert';\nimport GLTFScenegraph from '../../api/gltf-scenegraph';\nconst KHR_LIGHTS_PUNCTUAL = 'KHR_lights_punctual';\nexport const name = KHR_LIGHTS_PUNCTUAL;\nexport async function decode(gltfData) {\n  const gltfScenegraph = new GLTFScenegraph(gltfData);\n  const {\n    json\n  } = gltfScenegraph;\n  const extension = gltfScenegraph.getExtension(KHR_LIGHTS_PUNCTUAL);\n  if (extension) {\n    gltfScenegraph.json.lights = extension.lights;\n    gltfScenegraph.removeExtension(KHR_LIGHTS_PUNCTUAL);\n  }\n  for (const node of json.nodes || []) {\n    const nodeExtension = gltfScenegraph.getObjectExtension(node, KHR_LIGHTS_PUNCTUAL);\n    if (nodeExtension) {\n      node.light = nodeExtension.light;\n    }\n    gltfScenegraph.removeObjectExtension(node, KHR_LIGHTS_PUNCTUAL);\n  }\n}\nexport async function encode(gltfData) {\n  const gltfScenegraph = new GLTFScenegraph(gltfData);\n  const {\n    json\n  } = gltfScenegraph;\n  if (json.lights) {\n    const extension = gltfScenegraph.addExtension(KHR_LIGHTS_PUNCTUAL);\n    assert(!extension.lights);\n    extension.lights = json.lights;\n    delete json.lights;\n  }\n  if (gltfScenegraph.json.lights) {\n    for (const light of gltfScenegraph.json.lights) {\n      const node = light.node;\n      gltfScenegraph.addObjectExtension(node, KHR_LIGHTS_PUNCTUAL, light);\n    }\n    delete gltfScenegraph.json.lights;\n  }\n}\n//# sourceMappingURL=KHR_lights_punctual.js.map","import GLTFScenegraph from '../../api/gltf-scenegraph';\nconst KHR_MATERIALS_UNLIT = 'KHR_materials_unlit';\nexport const name = KHR_MATERIALS_UNLIT;\nexport async function decode(gltfData) {\n  const gltfScenegraph = new GLTFScenegraph(gltfData);\n  const {\n    json\n  } = gltfScenegraph;\n  for (const material of json.materials || []) {\n    const extension = material.extensions && material.extensions.KHR_materials_unlit;\n    if (extension) {\n      material.unlit = true;\n    }\n    gltfScenegraph.removeObjectExtension(material, KHR_MATERIALS_UNLIT);\n  }\n  gltfScenegraph.removeExtension(KHR_MATERIALS_UNLIT);\n}\nexport function encode(gltfData) {\n  const gltfScenegraph = new GLTFScenegraph(gltfData);\n  const {\n    json\n  } = gltfScenegraph;\n  if (gltfScenegraph.materials) {\n    for (const material of json.materials || []) {\n      if (material.unlit) {\n        delete material.unlit;\n        gltfScenegraph.addObjectExtension(material, KHR_MATERIALS_UNLIT, {});\n        gltfScenegraph.addExtension(KHR_MATERIALS_UNLIT);\n      }\n    }\n  }\n}\n//# sourceMappingURL=KHR_materials_unlit.js.map","import GLTFScenegraph from '../../api/gltf-scenegraph';\nconst KHR_TECHNIQUES_WEBGL = 'KHR_techniques_webgl';\nexport const name = KHR_TECHNIQUES_WEBGL;\nexport async function decode(gltfData) {\n  const gltfScenegraph = new GLTFScenegraph(gltfData);\n  const {\n    json\n  } = gltfScenegraph;\n  const extension = gltfScenegraph.getExtension(KHR_TECHNIQUES_WEBGL);\n  if (extension) {\n    const techniques = resolveTechniques(extension, gltfScenegraph);\n    for (const material of json.materials || []) {\n      const materialExtension = gltfScenegraph.getObjectExtension(material, KHR_TECHNIQUES_WEBGL);\n      if (materialExtension) {\n        material.technique = Object.assign({}, materialExtension, techniques[materialExtension.technique]);\n        material.technique.values = resolveValues(material.technique, gltfScenegraph);\n      }\n      gltfScenegraph.removeObjectExtension(material, KHR_TECHNIQUES_WEBGL);\n    }\n    gltfScenegraph.removeExtension(KHR_TECHNIQUES_WEBGL);\n  }\n}\nexport async function encode(gltfData, options) {}\nfunction resolveTechniques(techniquesExtension, gltfScenegraph) {\n  const {\n    programs = [],\n    shaders = [],\n    techniques = []\n  } = techniquesExtension;\n  const textDecoder = new TextDecoder();\n  shaders.forEach(shader => {\n    if (Number.isFinite(shader.bufferView)) {\n      shader.code = textDecoder.decode(gltfScenegraph.getTypedArrayForBufferView(shader.bufferView));\n    } else {\n      throw new Error('KHR_techniques_webgl: no shader code');\n    }\n  });\n  programs.forEach(program => {\n    program.fragmentShader = shaders[program.fragmentShader];\n    program.vertexShader = shaders[program.vertexShader];\n  });\n  techniques.forEach(technique => {\n    technique.program = programs[technique.program];\n  });\n  return techniques;\n}\nfunction resolveValues(technique, gltfScenegraph) {\n  const values = Object.assign({}, technique.values);\n  Object.keys(technique.uniforms || {}).forEach(uniform => {\n    if (technique.uniforms[uniform].value && !(uniform in values)) {\n      values[uniform] = technique.uniforms[uniform].value;\n    }\n  });\n  Object.keys(values).forEach(uniform => {\n    if (typeof values[uniform] === 'object' && values[uniform].index !== undefined) {\n      values[uniform].texture = gltfScenegraph.getTexture(values[uniform].index);\n    }\n  });\n  return values;\n}\n//# sourceMappingURL=KHR_techniques_webgl.js.map","import GLTFScenegraph from '../../api/gltf-scenegraph';\nconst EXT_FEATURE_METADATA = 'EXT_feature_metadata';\nexport const name = EXT_FEATURE_METADATA;\nexport async function decode(gltfData) {\n  const scenegraph = new GLTFScenegraph(gltfData);\n  decodeExtFeatureMetadata(scenegraph);\n}\nfunction decodeExtFeatureMetadata(scenegraph) {\n  var _extension$schema;\n  const extension = scenegraph.getExtension(EXT_FEATURE_METADATA);\n  const schemaClasses = extension === null || extension === void 0 ? void 0 : (_extension$schema = extension.schema) === null || _extension$schema === void 0 ? void 0 : _extension$schema.classes;\n  const featureTables = extension === null || extension === void 0 ? void 0 : extension.featureTables;\n  const featureTextures = extension === null || extension === void 0 ? void 0 : extension.featureTextures;\n  if (featureTextures) {\n    console.warn('featureTextures is not yet supported in the \"EXT_feature_metadata\" extension.');\n  }\n  if (schemaClasses && featureTables) {\n    for (const schemaName in schemaClasses) {\n      const schemaClass = schemaClasses[schemaName];\n      const featureTable = findFeatureTableByName(featureTables, schemaName);\n      if (featureTable) {\n        handleFeatureTableProperties(scenegraph, featureTable, schemaClass);\n      }\n    }\n  }\n}\nfunction handleFeatureTableProperties(scenegraph, featureTable, schemaClass) {\n  for (const propertyName in schemaClass.properties) {\n    var _featureTable$propert;\n    const schemaProperty = schemaClass.properties[propertyName];\n    const featureTableProperty = featureTable === null || featureTable === void 0 ? void 0 : (_featureTable$propert = featureTable.properties) === null || _featureTable$propert === void 0 ? void 0 : _featureTable$propert[propertyName];\n    const numberOfFeatures = featureTable.count;\n    if (featureTableProperty) {\n      const data = getPropertyDataFromBinarySource(scenegraph, schemaProperty, numberOfFeatures, featureTableProperty);\n      featureTableProperty.data = data;\n    }\n  }\n}\nfunction getPropertyDataFromBinarySource(scenegraph, schemaProperty, numberOfFeatures, featureTableProperty) {\n  const bufferView = featureTableProperty.bufferView;\n  let data = scenegraph.getTypedArrayForBufferView(bufferView);\n  switch (schemaProperty.type) {\n    case 'STRING':\n      {\n        const stringOffsetBufferView = featureTableProperty.stringOffsetBufferView;\n        const offsetsData = scenegraph.getTypedArrayForBufferView(stringOffsetBufferView);\n        data = getStringAttributes(data, offsetsData, numberOfFeatures);\n        break;\n      }\n    default:\n  }\n  return data;\n}\nfunction findFeatureTableByName(featureTables, schemaClassName) {\n  for (const featureTableName in featureTables) {\n    const featureTable = featureTables[featureTableName];\n    if (featureTable.class === schemaClassName) {\n      return featureTable;\n    }\n  }\n  return null;\n}\nfunction getStringAttributes(data, offsetsData, stringsCount) {\n  const stringsArray = [];\n  const textDecoder = new TextDecoder('utf8');\n  let stringOffset = 0;\n  const bytesPerStringSize = 4;\n  for (let index = 0; index < stringsCount; index++) {\n    const stringByteSize = offsetsData[(index + 1) * bytesPerStringSize] - offsetsData[index * bytesPerStringSize];\n    const stringData = data.subarray(stringOffset, stringByteSize + stringOffset);\n    const stringAttribute = textDecoder.decode(stringData);\n    stringsArray.push(stringAttribute);\n    stringOffset += stringByteSize;\n  }\n  return stringsArray;\n}\n//# sourceMappingURL=EXT_feature_metadata.js.map","import * as EXT_meshopt_compression from '../extensions/EXT_meshopt_compression';\nimport * as EXT_texture_webp from '../extensions/EXT_texture_webp';\nimport * as KHR_texture_basisu from '../extensions/KHR_texture_basisu';\nimport * as KHR_draco_mesh_compression from '../extensions/KHR_draco_mesh_compression';\nimport * as KHR_texture_transform from '../extensions/KHR_texture_transform';\nimport * as KHR_lights_punctual from '../extensions/deprecated/KHR_lights_punctual';\nimport * as KHR_materials_unlit from '../extensions/deprecated/KHR_materials_unlit';\nimport * as KHR_techniques_webgl from '../extensions/deprecated/KHR_techniques_webgl';\nimport * as EXT_feature_metadata from '../extensions/deprecated/EXT_feature_metadata';\nexport const EXTENSIONS = [EXT_meshopt_compression, EXT_texture_webp, KHR_texture_basisu, KHR_draco_mesh_compression, KHR_lights_punctual, KHR_materials_unlit, KHR_techniques_webgl, KHR_texture_transform, EXT_feature_metadata];\nexport function preprocessExtensions(gltf) {\n  let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n  let context = arguments.length > 2 ? arguments[2] : undefined;\n  const extensions = EXTENSIONS.filter(extension => useExtension(extension.name, options));\n  for (const extension of extensions) {\n    var _extension$preprocess;\n    (_extension$preprocess = extension.preprocess) === null || _extension$preprocess === void 0 ? void 0 : _extension$preprocess.call(extension, gltf, options, context);\n  }\n}\nexport async function decodeExtensions(gltf) {\n  let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n  let context = arguments.length > 2 ? arguments[2] : undefined;\n  const extensions = EXTENSIONS.filter(extension => useExtension(extension.name, options));\n  for (const extension of extensions) {\n    var _extension$decode;\n    await ((_extension$decode = extension.decode) === null || _extension$decode === void 0 ? void 0 : _extension$decode.call(extension, gltf, options, context));\n  }\n}\nfunction useExtension(extensionName, options) {\n  var _options$gltf;\n  const excludes = (options === null || options === void 0 ? void 0 : (_options$gltf = options.gltf) === null || _options$gltf === void 0 ? void 0 : _options$gltf.excludeExtensions) || {};\n  const exclude = extensionName in excludes && !excludes[extensionName];\n  return !exclude;\n}\n//# sourceMappingURL=gltf-extensions.js.map","import GLTFScenegraph from '../api/gltf-scenegraph';\nconst KHR_BINARY_GLTF = 'KHR_binary_glTF';\nexport const name = KHR_BINARY_GLTF;\nexport function preprocess(gltfData) {\n  const gltfScenegraph = new GLTFScenegraph(gltfData);\n  const {\n    json\n  } = gltfScenegraph;\n  for (const image of json.images || []) {\n    const extension = gltfScenegraph.getObjectExtension(image, KHR_BINARY_GLTF);\n    if (extension) {\n      Object.assign(image, extension);\n    }\n    gltfScenegraph.removeObjectExtension(image, KHR_BINARY_GLTF);\n  }\n  if (json.buffers && json.buffers[0]) {\n    delete json.buffers[0].uri;\n  }\n  gltfScenegraph.removeExtension(KHR_BINARY_GLTF);\n}\n//# sourceMappingURL=KHR_binary_gltf.js.map","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport * as KHR_binary_glTF from '../extensions/KHR_binary_gltf';\nconst GLTF_ARRAYS = {\n  accessors: 'accessor',\n  animations: 'animation',\n  buffers: 'buffer',\n  bufferViews: 'bufferView',\n  images: 'image',\n  materials: 'material',\n  meshes: 'mesh',\n  nodes: 'node',\n  samplers: 'sampler',\n  scenes: 'scene',\n  skins: 'skin',\n  textures: 'texture'\n};\nconst GLTF_KEYS = {\n  accessor: 'accessors',\n  animations: 'animation',\n  buffer: 'buffers',\n  bufferView: 'bufferViews',\n  image: 'images',\n  material: 'materials',\n  mesh: 'meshes',\n  node: 'nodes',\n  sampler: 'samplers',\n  scene: 'scenes',\n  skin: 'skins',\n  texture: 'textures'\n};\nclass GLTFV1Normalizer {\n  constructor() {\n    _defineProperty(this, \"idToIndexMap\", {\n      animations: {},\n      accessors: {},\n      buffers: {},\n      bufferViews: {},\n      images: {},\n      materials: {},\n      meshes: {},\n      nodes: {},\n      samplers: {},\n      scenes: {},\n      skins: {},\n      textures: {}\n    });\n    _defineProperty(this, \"json\", void 0);\n  }\n  normalize(gltf, options) {\n    this.json = gltf.json;\n    const json = gltf.json;\n    switch (json.asset && json.asset.version) {\n      case '2.0':\n        return;\n      case undefined:\n      case '1.0':\n        break;\n      default:\n        console.warn(\"glTF: Unknown version \".concat(json.asset.version));\n        return;\n    }\n    if (!options.normalize) {\n      throw new Error('glTF v1 is not supported.');\n    }\n    console.warn('Converting glTF v1 to glTF v2 format. This is experimental and may fail.');\n    this._addAsset(json);\n    this._convertTopLevelObjectsToArrays(json);\n    KHR_binary_glTF.preprocess(gltf);\n    this._convertObjectIdsToArrayIndices(json);\n    this._updateObjects(json);\n    this._updateMaterial(json);\n  }\n  _addAsset(json) {\n    json.asset = json.asset || {};\n    json.asset.version = '2.0';\n    json.asset.generator = json.asset.generator || 'Normalized to glTF 2.0 by loaders.gl';\n  }\n  _convertTopLevelObjectsToArrays(json) {\n    for (const arrayName in GLTF_ARRAYS) {\n      this._convertTopLevelObjectToArray(json, arrayName);\n    }\n  }\n  _convertTopLevelObjectToArray(json, mapName) {\n    const objectMap = json[mapName];\n    if (!objectMap || Array.isArray(objectMap)) {\n      return;\n    }\n    json[mapName] = [];\n    for (const id in objectMap) {\n      const object = objectMap[id];\n      object.id = object.id || id;\n      const index = json[mapName].length;\n      json[mapName].push(object);\n      this.idToIndexMap[mapName][id] = index;\n    }\n  }\n  _convertObjectIdsToArrayIndices(json) {\n    for (const arrayName in GLTF_ARRAYS) {\n      this._convertIdsToIndices(json, arrayName);\n    }\n    if ('scene' in json) {\n      json.scene = this._convertIdToIndex(json.scene, 'scene');\n    }\n    for (const texture of json.textures) {\n      this._convertTextureIds(texture);\n    }\n    for (const mesh of json.meshes) {\n      this._convertMeshIds(mesh);\n    }\n    for (const node of json.nodes) {\n      this._convertNodeIds(node);\n    }\n    for (const node of json.scenes) {\n      this._convertSceneIds(node);\n    }\n  }\n  _convertTextureIds(texture) {\n    if (texture.source) {\n      texture.source = this._convertIdToIndex(texture.source, 'image');\n    }\n  }\n  _convertMeshIds(mesh) {\n    for (const primitive of mesh.primitives) {\n      const {\n        attributes,\n        indices,\n        material\n      } = primitive;\n      for (const attributeName in attributes) {\n        attributes[attributeName] = this._convertIdToIndex(attributes[attributeName], 'accessor');\n      }\n      if (indices) {\n        primitive.indices = this._convertIdToIndex(indices, 'accessor');\n      }\n      if (material) {\n        primitive.material = this._convertIdToIndex(material, 'material');\n      }\n    }\n  }\n  _convertNodeIds(node) {\n    if (node.children) {\n      node.children = node.children.map(child => this._convertIdToIndex(child, 'node'));\n    }\n    if (node.meshes) {\n      node.meshes = node.meshes.map(mesh => this._convertIdToIndex(mesh, 'mesh'));\n    }\n  }\n  _convertSceneIds(scene) {\n    if (scene.nodes) {\n      scene.nodes = scene.nodes.map(node => this._convertIdToIndex(node, 'node'));\n    }\n  }\n  _convertIdsToIndices(json, topLevelArrayName) {\n    if (!json[topLevelArrayName]) {\n      console.warn(\"gltf v1: json doesn't contain attribute \".concat(topLevelArrayName));\n      json[topLevelArrayName] = [];\n    }\n    for (const object of json[topLevelArrayName]) {\n      for (const key in object) {\n        const id = object[key];\n        const index = this._convertIdToIndex(id, key);\n        object[key] = index;\n      }\n    }\n  }\n  _convertIdToIndex(id, key) {\n    const arrayName = GLTF_KEYS[key];\n    if (arrayName in this.idToIndexMap) {\n      const index = this.idToIndexMap[arrayName][id];\n      if (!Number.isFinite(index)) {\n        throw new Error(\"gltf v1: failed to resolve \".concat(key, \" with id \").concat(id));\n      }\n      return index;\n    }\n    return id;\n  }\n  _updateObjects(json) {\n    for (const buffer of this.json.buffers) {\n      delete buffer.type;\n    }\n  }\n  _updateMaterial(json) {\n    for (const material of json.materials) {\n      var _material$values, _material$values2, _material$values3;\n      material.pbrMetallicRoughness = {\n        baseColorFactor: [1, 1, 1, 1],\n        metallicFactor: 1,\n        roughnessFactor: 1\n      };\n      const textureId = ((_material$values = material.values) === null || _material$values === void 0 ? void 0 : _material$values.tex) || ((_material$values2 = material.values) === null || _material$values2 === void 0 ? void 0 : _material$values2.texture2d_0) || ((_material$values3 = material.values) === null || _material$values3 === void 0 ? void 0 : _material$values3.diffuseTex);\n      const textureIndex = json.textures.findIndex(texture => texture.id === textureId);\n      if (textureIndex !== -1) {\n        material.pbrMetallicRoughness.baseColorTexture = {\n          index: textureIndex\n        };\n      }\n    }\n  }\n}\nexport function normalizeGLTFV1(gltf) {\n  let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n  return new GLTFV1Normalizer().normalize(gltf, options);\n}\n//# sourceMappingURL=normalize-gltf-v1.js.map","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { assert } from '../utils/assert';\nimport { getAccessorArrayTypeAndLength } from '../gltf-utils/gltf-utils';\nconst COMPONENTS = {\n  SCALAR: 1,\n  VEC2: 2,\n  VEC3: 3,\n  VEC4: 4,\n  MAT2: 4,\n  MAT3: 9,\n  MAT4: 16\n};\nconst BYTES = {\n  5120: 1,\n  5121: 1,\n  5122: 2,\n  5123: 2,\n  5125: 4,\n  5126: 4\n};\nconst GL_SAMPLER = {\n  TEXTURE_MAG_FILTER: 0x2800,\n  TEXTURE_MIN_FILTER: 0x2801,\n  TEXTURE_WRAP_S: 0x2802,\n  TEXTURE_WRAP_T: 0x2803,\n  REPEAT: 0x2901,\n  LINEAR: 0x2601,\n  NEAREST_MIPMAP_LINEAR: 0x2702\n};\nconst SAMPLER_PARAMETER_GLTF_TO_GL = {\n  magFilter: GL_SAMPLER.TEXTURE_MAG_FILTER,\n  minFilter: GL_SAMPLER.TEXTURE_MIN_FILTER,\n  wrapS: GL_SAMPLER.TEXTURE_WRAP_S,\n  wrapT: GL_SAMPLER.TEXTURE_WRAP_T\n};\nconst DEFAULT_SAMPLER = {\n  [GL_SAMPLER.TEXTURE_MAG_FILTER]: GL_SAMPLER.LINEAR,\n  [GL_SAMPLER.TEXTURE_MIN_FILTER]: GL_SAMPLER.NEAREST_MIPMAP_LINEAR,\n  [GL_SAMPLER.TEXTURE_WRAP_S]: GL_SAMPLER.REPEAT,\n  [GL_SAMPLER.TEXTURE_WRAP_T]: GL_SAMPLER.REPEAT\n};\nfunction getBytesFromComponentType(componentType) {\n  return BYTES[componentType];\n}\nfunction getSizeFromAccessorType(type) {\n  return COMPONENTS[type];\n}\nclass GLTFPostProcessor {\n  constructor() {\n    _defineProperty(this, \"baseUri\", '');\n    _defineProperty(this, \"json\", {});\n    _defineProperty(this, \"buffers\", []);\n    _defineProperty(this, \"images\", []);\n  }\n  postProcess(gltf) {\n    let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n    const {\n      json,\n      buffers = [],\n      images = [],\n      baseUri = ''\n    } = gltf;\n    assert(json);\n    this.baseUri = baseUri;\n    this.json = json;\n    this.buffers = buffers;\n    this.images = images;\n    this._resolveTree(this.json, options);\n    return this.json;\n  }\n  _resolveTree(json) {\n    let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n    if (json.bufferViews) {\n      json.bufferViews = json.bufferViews.map((bufView, i) => this._resolveBufferView(bufView, i));\n    }\n    if (json.images) {\n      json.images = json.images.map((image, i) => this._resolveImage(image, i));\n    }\n    if (json.samplers) {\n      json.samplers = json.samplers.map((sampler, i) => this._resolveSampler(sampler, i));\n    }\n    if (json.textures) {\n      json.textures = json.textures.map((texture, i) => this._resolveTexture(texture, i));\n    }\n    if (json.accessors) {\n      json.accessors = json.accessors.map((accessor, i) => this._resolveAccessor(accessor, i));\n    }\n    if (json.materials) {\n      json.materials = json.materials.map((material, i) => this._resolveMaterial(material, i));\n    }\n    if (json.meshes) {\n      json.meshes = json.meshes.map((mesh, i) => this._resolveMesh(mesh, i));\n    }\n    if (json.nodes) {\n      json.nodes = json.nodes.map((node, i) => this._resolveNode(node, i));\n    }\n    if (json.skins) {\n      json.skins = json.skins.map((skin, i) => this._resolveSkin(skin, i));\n    }\n    if (json.scenes) {\n      json.scenes = json.scenes.map((scene, i) => this._resolveScene(scene, i));\n    }\n    if (json.scene !== undefined) {\n      json.scene = json.scenes[this.json.scene];\n    }\n  }\n  getScene(index) {\n    return this._get('scenes', index);\n  }\n  getNode(index) {\n    return this._get('nodes', index);\n  }\n  getSkin(index) {\n    return this._get('skins', index);\n  }\n  getMesh(index) {\n    return this._get('meshes', index);\n  }\n  getMaterial(index) {\n    return this._get('materials', index);\n  }\n  getAccessor(index) {\n    return this._get('accessors', index);\n  }\n  getCamera(index) {\n    return null;\n  }\n  getTexture(index) {\n    return this._get('textures', index);\n  }\n  getSampler(index) {\n    return this._get('samplers', index);\n  }\n  getImage(index) {\n    return this._get('images', index);\n  }\n  getBufferView(index) {\n    return this._get('bufferViews', index);\n  }\n  getBuffer(index) {\n    return this._get('buffers', index);\n  }\n  _get(array, index) {\n    if (typeof index === 'object') {\n      return index;\n    }\n    const object = this.json[array] && this.json[array][index];\n    if (!object) {\n      console.warn(\"glTF file error: Could not find \".concat(array, \"[\").concat(index, \"]\"));\n    }\n    return object;\n  }\n  _resolveScene(scene, index) {\n    scene.id = scene.id || \"scene-\".concat(index);\n    scene.nodes = (scene.nodes || []).map(node => this.getNode(node));\n    return scene;\n  }\n  _resolveNode(node, index) {\n    node.id = node.id || \"node-\".concat(index);\n    if (node.children) {\n      node.children = node.children.map(child => this.getNode(child));\n    }\n    if (node.mesh !== undefined) {\n      node.mesh = this.getMesh(node.mesh);\n    } else if (node.meshes !== undefined && node.meshes.length) {\n      node.mesh = node.meshes.reduce((accum, meshIndex) => {\n        const mesh = this.getMesh(meshIndex);\n        accum.id = mesh.id;\n        accum.primitives = accum.primitives.concat(mesh.primitives);\n        return accum;\n      }, {\n        primitives: []\n      });\n    }\n    if (node.camera !== undefined) {\n      node.camera = this.getCamera(node.camera);\n    }\n    if (node.skin !== undefined) {\n      node.skin = this.getSkin(node.skin);\n    }\n    return node;\n  }\n  _resolveSkin(skin, index) {\n    skin.id = skin.id || \"skin-\".concat(index);\n    skin.inverseBindMatrices = this.getAccessor(skin.inverseBindMatrices);\n    return skin;\n  }\n  _resolveMesh(mesh, index) {\n    mesh.id = mesh.id || \"mesh-\".concat(index);\n    if (mesh.primitives) {\n      mesh.primitives = mesh.primitives.map(primitive => {\n        primitive = {\n          ...primitive\n        };\n        const attributes = primitive.attributes;\n        primitive.attributes = {};\n        for (const attribute in attributes) {\n          primitive.attributes[attribute] = this.getAccessor(attributes[attribute]);\n        }\n        if (primitive.indices !== undefined) {\n          primitive.indices = this.getAccessor(primitive.indices);\n        }\n        if (primitive.material !== undefined) {\n          primitive.material = this.getMaterial(primitive.material);\n        }\n        return primitive;\n      });\n    }\n    return mesh;\n  }\n  _resolveMaterial(material, index) {\n    material.id = material.id || \"material-\".concat(index);\n    if (material.normalTexture) {\n      material.normalTexture = {\n        ...material.normalTexture\n      };\n      material.normalTexture.texture = this.getTexture(material.normalTexture.index);\n    }\n    if (material.occlusionTexture) {\n      material.occlustionTexture = {\n        ...material.occlustionTexture\n      };\n      material.occlusionTexture.texture = this.getTexture(material.occlusionTexture.index);\n    }\n    if (material.emissiveTexture) {\n      material.emmisiveTexture = {\n        ...material.emmisiveTexture\n      };\n      material.emissiveTexture.texture = this.getTexture(material.emissiveTexture.index);\n    }\n    if (!material.emissiveFactor) {\n      material.emissiveFactor = material.emmisiveTexture ? [1, 1, 1] : [0, 0, 0];\n    }\n    if (material.pbrMetallicRoughness) {\n      material.pbrMetallicRoughness = {\n        ...material.pbrMetallicRoughness\n      };\n      const mr = material.pbrMetallicRoughness;\n      if (mr.baseColorTexture) {\n        mr.baseColorTexture = {\n          ...mr.baseColorTexture\n        };\n        mr.baseColorTexture.texture = this.getTexture(mr.baseColorTexture.index);\n      }\n      if (mr.metallicRoughnessTexture) {\n        mr.metallicRoughnessTexture = {\n          ...mr.metallicRoughnessTexture\n        };\n        mr.metallicRoughnessTexture.texture = this.getTexture(mr.metallicRoughnessTexture.index);\n      }\n    }\n    return material;\n  }\n  _resolveAccessor(accessor, index) {\n    accessor.id = accessor.id || \"accessor-\".concat(index);\n    if (accessor.bufferView !== undefined) {\n      accessor.bufferView = this.getBufferView(accessor.bufferView);\n    }\n    accessor.bytesPerComponent = getBytesFromComponentType(accessor.componentType);\n    accessor.components = getSizeFromAccessorType(accessor.type);\n    accessor.bytesPerElement = accessor.bytesPerComponent * accessor.components;\n    if (accessor.bufferView) {\n      const buffer = accessor.bufferView.buffer;\n      const {\n        ArrayType,\n        byteLength\n      } = getAccessorArrayTypeAndLength(accessor, accessor.bufferView);\n      const byteOffset = (accessor.bufferView.byteOffset || 0) + (accessor.byteOffset || 0) + buffer.byteOffset;\n      let cutBuffer = buffer.arrayBuffer.slice(byteOffset, byteOffset + byteLength);\n      if (accessor.bufferView.byteStride) {\n        cutBuffer = this._getValueFromInterleavedBuffer(buffer, byteOffset, accessor.bufferView.byteStride, accessor.bytesPerElement, accessor.count);\n      }\n      accessor.value = new ArrayType(cutBuffer);\n    }\n    return accessor;\n  }\n  _getValueFromInterleavedBuffer(buffer, byteOffset, byteStride, bytesPerElement, count) {\n    const result = new Uint8Array(count * bytesPerElement);\n    for (let i = 0; i < count; i++) {\n      const elementOffset = byteOffset + i * byteStride;\n      result.set(new Uint8Array(buffer.arrayBuffer.slice(elementOffset, elementOffset + bytesPerElement)), i * bytesPerElement);\n    }\n    return result.buffer;\n  }\n  _resolveTexture(texture, index) {\n    texture.id = texture.id || \"texture-\".concat(index);\n    texture.sampler = 'sampler' in texture ? this.getSampler(texture.sampler) : DEFAULT_SAMPLER;\n    texture.source = this.getImage(texture.source);\n    return texture;\n  }\n  _resolveSampler(sampler, index) {\n    sampler.id = sampler.id || \"sampler-\".concat(index);\n    sampler.parameters = {};\n    for (const key in sampler) {\n      const glEnum = this._enumSamplerParameter(key);\n      if (glEnum !== undefined) {\n        sampler.parameters[glEnum] = sampler[key];\n      }\n    }\n    return sampler;\n  }\n  _enumSamplerParameter(key) {\n    return SAMPLER_PARAMETER_GLTF_TO_GL[key];\n  }\n  _resolveImage(image, index) {\n    image.id = image.id || \"image-\".concat(index);\n    if (image.bufferView !== undefined) {\n      image.bufferView = this.getBufferView(image.bufferView);\n    }\n    const preloadedImage = this.images[index];\n    if (preloadedImage) {\n      image.image = preloadedImage;\n    }\n    return image;\n  }\n  _resolveBufferView(bufferView, index) {\n    const bufferIndex = bufferView.buffer;\n    const result = {\n      id: \"bufferView-\".concat(index),\n      ...bufferView,\n      buffer: this.buffers[bufferIndex]\n    };\n    const arrayBuffer = this.buffers[bufferIndex].arrayBuffer;\n    let byteOffset = this.buffers[bufferIndex].byteOffset || 0;\n    if ('byteOffset' in bufferView) {\n      byteOffset += bufferView.byteOffset;\n    }\n    result.data = new Uint8Array(arrayBuffer, byteOffset, bufferView.byteLength);\n    return result;\n  }\n  _resolveCamera(camera, index) {\n    camera.id = camera.id || \"camera-\".concat(index);\n    if (camera.perspective) {}\n    if (camera.orthographic) {}\n    return camera;\n  }\n}\nexport function postProcessGLTF(gltf, options) {\n  return new GLTFPostProcessor().postProcess(gltf, options);\n}\n//# sourceMappingURL=post-process-gltf.js.map","import { padToNBytes, assert } from '@loaders.gl/loader-utils';\nconst MAGIC_glTF = 0x676c5446;\nconst GLB_FILE_HEADER_SIZE = 12;\nconst GLB_CHUNK_HEADER_SIZE = 8;\nconst GLB_CHUNK_TYPE_JSON = 0x4e4f534a;\nconst GLB_CHUNK_TYPE_BIN = 0x004e4942;\nconst GLB_CHUNK_TYPE_JSON_XVIZ_DEPRECATED = 0;\nconst GLB_CHUNK_TYPE_BIX_XVIZ_DEPRECATED = 1;\nconst GLB_V1_CONTENT_FORMAT_JSON = 0x0;\nconst LE = true;\nfunction getMagicString(dataView) {\n  let byteOffset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n  return \"\".concat(String.fromCharCode(dataView.getUint8(byteOffset + 0))).concat(String.fromCharCode(dataView.getUint8(byteOffset + 1))).concat(String.fromCharCode(dataView.getUint8(byteOffset + 2))).concat(String.fromCharCode(dataView.getUint8(byteOffset + 3)));\n}\nexport function isGLB(arrayBuffer) {\n  let byteOffset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n  let options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n  const dataView = new DataView(arrayBuffer);\n  const {\n    magic = MAGIC_glTF\n  } = options;\n  const magic1 = dataView.getUint32(byteOffset, false);\n  return magic1 === magic || magic1 === MAGIC_glTF;\n}\nexport default function parseGLBSync(glb, arrayBuffer) {\n  let byteOffset = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;\n  let options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n  const dataView = new DataView(arrayBuffer);\n  const type = getMagicString(dataView, byteOffset + 0);\n  const version = dataView.getUint32(byteOffset + 4, LE);\n  const byteLength = dataView.getUint32(byteOffset + 8, LE);\n  Object.assign(glb, {\n    header: {\n      byteOffset,\n      byteLength,\n      hasBinChunk: false\n    },\n    type,\n    version,\n    json: {},\n    binChunks: []\n  });\n  byteOffset += GLB_FILE_HEADER_SIZE;\n  switch (glb.version) {\n    case 1:\n      return parseGLBV1(glb, dataView, byteOffset);\n    case 2:\n      return parseGLBV2(glb, dataView, byteOffset, options = {});\n    default:\n      throw new Error(\"Invalid GLB version \".concat(glb.version, \". Only supports v1 and v2.\"));\n  }\n}\nfunction parseGLBV1(glb, dataView, byteOffset) {\n  assert(glb.header.byteLength > GLB_FILE_HEADER_SIZE + GLB_CHUNK_HEADER_SIZE);\n  const contentLength = dataView.getUint32(byteOffset + 0, LE);\n  const contentFormat = dataView.getUint32(byteOffset + 4, LE);\n  byteOffset += GLB_CHUNK_HEADER_SIZE;\n  assert(contentFormat === GLB_V1_CONTENT_FORMAT_JSON);\n  parseJSONChunk(glb, dataView, byteOffset, contentLength);\n  byteOffset += contentLength;\n  byteOffset += parseBINChunk(glb, dataView, byteOffset, glb.header.byteLength);\n  return byteOffset;\n}\nfunction parseGLBV2(glb, dataView, byteOffset, options) {\n  assert(glb.header.byteLength > GLB_FILE_HEADER_SIZE + GLB_CHUNK_HEADER_SIZE);\n  parseGLBChunksSync(glb, dataView, byteOffset, options);\n  return byteOffset + glb.header.byteLength;\n}\nfunction parseGLBChunksSync(glb, dataView, byteOffset, options) {\n  while (byteOffset + 8 <= glb.header.byteLength) {\n    const chunkLength = dataView.getUint32(byteOffset + 0, LE);\n    const chunkFormat = dataView.getUint32(byteOffset + 4, LE);\n    byteOffset += GLB_CHUNK_HEADER_SIZE;\n    switch (chunkFormat) {\n      case GLB_CHUNK_TYPE_JSON:\n        parseJSONChunk(glb, dataView, byteOffset, chunkLength);\n        break;\n      case GLB_CHUNK_TYPE_BIN:\n        parseBINChunk(glb, dataView, byteOffset, chunkLength);\n        break;\n      case GLB_CHUNK_TYPE_JSON_XVIZ_DEPRECATED:\n        if (!options.strict) {\n          parseJSONChunk(glb, dataView, byteOffset, chunkLength);\n        }\n        break;\n      case GLB_CHUNK_TYPE_BIX_XVIZ_DEPRECATED:\n        if (!options.strict) {\n          parseBINChunk(glb, dataView, byteOffset, chunkLength);\n        }\n        break;\n      default:\n        break;\n    }\n    byteOffset += padToNBytes(chunkLength, 4);\n  }\n  return byteOffset;\n}\nfunction parseJSONChunk(glb, dataView, byteOffset, chunkLength) {\n  const jsonChunk = new Uint8Array(dataView.buffer, byteOffset, chunkLength);\n  const textDecoder = new TextDecoder('utf8');\n  const jsonText = textDecoder.decode(jsonChunk);\n  glb.json = JSON.parse(jsonText);\n  return padToNBytes(chunkLength, 4);\n}\nfunction parseBINChunk(glb, dataView, byteOffset, chunkLength) {\n  glb.header.hasBinChunk = true;\n  glb.binChunks.push({\n    byteOffset,\n    byteLength: chunkLength,\n    arrayBuffer: dataView.buffer\n  });\n  return padToNBytes(chunkLength, 4);\n}\n//# sourceMappingURL=parse-glb.js.map","import { BasisLoader, selectSupportedBasisFormat } from '@loaders.gl/textures';\nimport { ImageLoader } from '@loaders.gl/images';\nimport { parseJSON, sliceArrayBuffer } from '@loaders.gl/loader-utils';\nimport { assert } from '../utils/assert';\nimport { resolveUrl } from '../gltf-utils/resolve-url';\nimport { getTypedArrayForBufferView } from '../gltf-utils/get-typed-array';\nimport { preprocessExtensions, decodeExtensions } from '../api/gltf-extensions';\nimport { normalizeGLTFV1 } from '../api/normalize-gltf-v1';\nimport { postProcessGLTF } from '../api/post-process-gltf';\nimport parseGLBSync, { isGLB } from './parse-glb';\nexport function isGLTF(arrayBuffer, options) {\n  const byteOffset = 0;\n  return isGLB(arrayBuffer, byteOffset, options);\n}\nexport async function parseGLTF(gltf, arrayBufferOrString) {\n  var _options$gltf, _options$gltf2, _options$gltf3, _options$gltf4;\n  let byteOffset = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;\n  let options = arguments.length > 3 ? arguments[3] : undefined;\n  let context = arguments.length > 4 ? arguments[4] : undefined;\n  parseGLTFContainerSync(gltf, arrayBufferOrString, byteOffset, options);\n  normalizeGLTFV1(gltf, {\n    normalize: options === null || options === void 0 ? void 0 : (_options$gltf = options.gltf) === null || _options$gltf === void 0 ? void 0 : _options$gltf.normalize\n  });\n  preprocessExtensions(gltf, options, context);\n  const promises = [];\n  if (options !== null && options !== void 0 && (_options$gltf2 = options.gltf) !== null && _options$gltf2 !== void 0 && _options$gltf2.loadBuffers && gltf.json.buffers) {\n    await loadBuffers(gltf, options, context);\n  }\n  if (options !== null && options !== void 0 && (_options$gltf3 = options.gltf) !== null && _options$gltf3 !== void 0 && _options$gltf3.loadImages) {\n    const promise = loadImages(gltf, options, context);\n    promises.push(promise);\n  }\n  const promise = decodeExtensions(gltf, options, context);\n  promises.push(promise);\n  await Promise.all(promises);\n  return options !== null && options !== void 0 && (_options$gltf4 = options.gltf) !== null && _options$gltf4 !== void 0 && _options$gltf4.postProcess ? postProcessGLTF(gltf, options) : gltf;\n}\nfunction parseGLTFContainerSync(gltf, data, byteOffset, options) {\n  if (options.uri) {\n    gltf.baseUri = options.uri;\n  }\n  if (data instanceof ArrayBuffer && !isGLB(data, byteOffset, options)) {\n    const textDecoder = new TextDecoder();\n    data = textDecoder.decode(data);\n  }\n  if (typeof data === 'string') {\n    gltf.json = parseJSON(data);\n  } else if (data instanceof ArrayBuffer) {\n    const glb = {};\n    byteOffset = parseGLBSync(glb, data, byteOffset, options.glb);\n    assert(glb.type === 'glTF', \"Invalid GLB magic string \".concat(glb.type));\n    gltf._glb = glb;\n    gltf.json = glb.json;\n  } else {\n    assert(false, 'GLTF: must be ArrayBuffer or string');\n  }\n  const buffers = gltf.json.buffers || [];\n  gltf.buffers = new Array(buffers.length).fill(null);\n  if (gltf._glb && gltf._glb.header.hasBinChunk) {\n    const {\n      binChunks\n    } = gltf._glb;\n    gltf.buffers[0] = {\n      arrayBuffer: binChunks[0].arrayBuffer,\n      byteOffset: binChunks[0].byteOffset,\n      byteLength: binChunks[0].byteLength\n    };\n  }\n  const images = gltf.json.images || [];\n  gltf.images = new Array(images.length).fill({});\n}\nasync function loadBuffers(gltf, options, context) {\n  const buffers = gltf.json.buffers || [];\n  for (let i = 0; i < buffers.length; ++i) {\n    const buffer = buffers[i];\n    if (buffer.uri) {\n      var _context$fetch, _response$arrayBuffer;\n      const {\n        fetch\n      } = context;\n      assert(fetch);\n      const uri = resolveUrl(buffer.uri, options);\n      const response = await (context === null || context === void 0 ? void 0 : (_context$fetch = context.fetch) === null || _context$fetch === void 0 ? void 0 : _context$fetch.call(context, uri));\n      const arrayBuffer = await (response === null || response === void 0 ? void 0 : (_response$arrayBuffer = response.arrayBuffer) === null || _response$arrayBuffer === void 0 ? void 0 : _response$arrayBuffer.call(response));\n      gltf.buffers[i] = {\n        arrayBuffer,\n        byteOffset: 0,\n        byteLength: arrayBuffer.byteLength\n      };\n      delete buffer.uri;\n    } else if (gltf.buffers[i] === null) {\n      gltf.buffers[i] = {\n        arrayBuffer: new ArrayBuffer(buffer.byteLength),\n        byteOffset: 0,\n        byteLength: buffer.byteLength\n      };\n    }\n  }\n}\nasync function loadImages(gltf, options, context) {\n  const imageIndices = getReferencesImageIndices(gltf);\n  const images = gltf.json.images || [];\n  const promises = [];\n  for (const imageIndex of imageIndices) {\n    promises.push(loadImage(gltf, images[imageIndex], imageIndex, options, context));\n  }\n  return await Promise.all(promises);\n}\nfunction getReferencesImageIndices(gltf) {\n  const imageIndices = new Set();\n  const textures = gltf.json.textures || [];\n  for (const texture of textures) {\n    if (texture.source !== undefined) {\n      imageIndices.add(texture.source);\n    }\n  }\n  return Array.from(imageIndices).sort();\n}\nasync function loadImage(gltf, image, index, options, context) {\n  const {\n    fetch,\n    parse\n  } = context;\n  let arrayBuffer;\n  if (image.uri && !image.hasOwnProperty('bufferView')) {\n    const uri = resolveUrl(image.uri, options);\n    const response = await fetch(uri);\n    arrayBuffer = await response.arrayBuffer();\n    image.bufferView = {\n      data: arrayBuffer\n    };\n  }\n  if (Number.isFinite(image.bufferView)) {\n    const array = getTypedArrayForBufferView(gltf.json, gltf.buffers, image.bufferView);\n    arrayBuffer = sliceArrayBuffer(array.buffer, array.byteOffset, array.byteLength);\n  }\n  assert(arrayBuffer, 'glTF image has no data');\n  let parsedImage = await parse(arrayBuffer, [ImageLoader, BasisLoader], {\n    mimeType: image.mimeType,\n    basis: options.basis || {\n      format: selectSupportedBasisFormat()\n    }\n  }, context);\n  if (parsedImage && parsedImage[0]) {\n    parsedImage = {\n      compressed: true,\n      mipmaps: false,\n      width: parsedImage[0].width,\n      height: parsedImage[0].height,\n      data: parsedImage[0]\n    };\n  }\n  gltf.images = gltf.images || [];\n  gltf.images[index] = parsedImage;\n}\n//# sourceMappingURL=parse-gltf.js.map","import { getFirstCharacters } from '../binary-utils/get-first-characters';\nexport function parseJSON(string) {\n  try {\n    return JSON.parse(string);\n  } catch (_) {\n    throw new Error(\"Failed to parse JSON from data starting with \\\"\".concat(getFirstCharacters(string), \"\\\"\"));\n  }\n}\n//# sourceMappingURL=parse-json.js.map","import { assert } from '../utils/assert';\nexport function getTypedArrayForBufferView(json, buffers, bufferViewIndex) {\n  const bufferView = json.bufferViews[bufferViewIndex];\n  assert(bufferView);\n  const bufferIndex = bufferView.buffer;\n  const binChunk = buffers[bufferIndex];\n  assert(binChunk);\n  const byteOffset = (bufferView.byteOffset || 0) + binChunk.byteOffset;\n  return new Uint8Array(binChunk.arrayBuffer, byteOffset, bufferView.byteLength);\n}\nexport function getTypedArrayForImageData(json, buffers, imageIndex) {\n  const image = json.images[imageIndex];\n  const bufferViewIndex = json.bufferViews[image.bufferView];\n  return getTypedArrayForBufferView(json, buffers, bufferViewIndex);\n}\n//# sourceMappingURL=get-typed-array.js.map","import { VERSION } from './lib/utils/version';\nimport { parseGLTF } from './lib/parsers/parse-gltf';\nexport const GLTFLoader = {\n  name: 'glTF',\n  id: 'gltf',\n  module: 'gltf',\n  version: VERSION,\n  extensions: ['gltf', 'glb'],\n  mimeTypes: ['model/gltf+json', 'model/gltf-binary'],\n  text: true,\n  binary: true,\n  tests: ['glTF'],\n  parse,\n  options: {\n    gltf: {\n      normalize: true,\n      loadBuffers: true,\n      loadImages: true,\n      decompressMeshes: true,\n      postProcess: true\n    },\n    log: console\n  },\n  deprecatedOptions: {\n    fetchImages: 'gltf.loadImages',\n    createImages: 'gltf.loadImages',\n    decompress: 'gltf.decompressMeshes',\n    postProcess: 'gltf.postProcess',\n    gltf: {\n      decompress: 'gltf.decompressMeshes'\n    }\n  }\n};\nexport async function parse(arrayBuffer) {\n  let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n  let context = arguments.length > 2 ? arguments[2] : undefined;\n  options = {\n    ...GLTFLoader.options,\n    ...options\n  };\n  options.gltf = {\n    ...GLTFLoader.options.gltf,\n    ...options.gltf\n  };\n  const {\n    byteOffset = 0\n  } = options;\n  const gltf = {};\n  return await parseGLTF(gltf, arrayBuffer, byteOffset, options, context);\n}\n//# sourceMappingURL=gltf-loader.js.map","export const VERSION = typeof \"3.4.15\" !== 'undefined' ? \"3.4.15\" : 'latest';\n//# sourceMappingURL=version.js.map","import { assert } from '../utils/assert';\nconst TYPES = ['SCALAR', 'VEC2', 'VEC3', 'VEC4'];\nconst ARRAY_CONSTRUCTOR_TO_WEBGL_CONSTANT = [[Int8Array, 5120], [Uint8Array, 5121], [Int16Array, 5122], [Uint16Array, 5123], [Uint32Array, 5125], [Float32Array, 5126], [Float64Array, 5130]];\nconst ARRAY_TO_COMPONENT_TYPE = new Map(ARRAY_CONSTRUCTOR_TO_WEBGL_CONSTANT);\nconst ATTRIBUTE_TYPE_TO_COMPONENTS = {\n  SCALAR: 1,\n  VEC2: 2,\n  VEC3: 3,\n  VEC4: 4,\n  MAT2: 4,\n  MAT3: 9,\n  MAT4: 16\n};\nconst ATTRIBUTE_COMPONENT_TYPE_TO_BYTE_SIZE = {\n  5120: 1,\n  5121: 1,\n  5122: 2,\n  5123: 2,\n  5125: 4,\n  5126: 4\n};\nconst ATTRIBUTE_COMPONENT_TYPE_TO_ARRAY = {\n  5120: Int8Array,\n  5121: Uint8Array,\n  5122: Int16Array,\n  5123: Uint16Array,\n  5125: Uint32Array,\n  5126: Float32Array\n};\nexport function getAccessorTypeFromSize(size) {\n  const type = TYPES[size - 1];\n  return type || TYPES[0];\n}\nexport function getComponentTypeFromArray(typedArray) {\n  const componentType = ARRAY_TO_COMPONENT_TYPE.get(typedArray.constructor);\n  if (!componentType) {\n    throw new Error('Illegal typed array');\n  }\n  return componentType;\n}\nexport function getAccessorArrayTypeAndLength(accessor, bufferView) {\n  const ArrayType = ATTRIBUTE_COMPONENT_TYPE_TO_ARRAY[accessor.componentType];\n  const components = ATTRIBUTE_TYPE_TO_COMPONENTS[accessor.type];\n  const bytesPerComponent = ATTRIBUTE_COMPONENT_TYPE_TO_BYTE_SIZE[accessor.componentType];\n  const length = accessor.count * components;\n  const byteLength = accessor.count * components * bytesPerComponent;\n  assert(byteLength >= 0 && byteLength <= bufferView.byteLength);\n  return {\n    ArrayType,\n    length,\n    byteLength\n  };\n}\nexport function getMemoryUsageGLTF(gltf) {\n  let {\n    images,\n    bufferViews\n  } = gltf;\n  images = images || [];\n  bufferViews = bufferViews || [];\n  const imageBufferViews = images.map(i => i.bufferView);\n  bufferViews = bufferViews.filter(view => !imageBufferViews.includes(view));\n  const bufferMemory = bufferViews.reduce((acc, view) => acc + view.byteLength, 0);\n  const pixelCount = images.reduce((acc, image) => {\n    const {\n      width,\n      height\n    } = image.image;\n    return acc + width * height;\n  }, 0);\n  return bufferMemory + Math.ceil(4 * pixelCount * 1.33);\n}\n//# sourceMappingURL=gltf-utils.js.map","export function assert(condition, message) {\n  if (!condition) {\n    throw new Error(message || 'assert failed: gltf');\n  }\n}\n//# sourceMappingURL=assert.js.map","import { isBrowser } from '@loaders.gl/loader-utils';\nconst {\n  _parseImageNode\n} = globalThis;\nconst IMAGE_SUPPORTED = typeof Image !== 'undefined';\nconst IMAGE_BITMAP_SUPPORTED = typeof ImageBitmap !== 'undefined';\nconst NODE_IMAGE_SUPPORTED = Boolean(_parseImageNode);\nconst DATA_SUPPORTED = isBrowser ? true : NODE_IMAGE_SUPPORTED;\nexport function isImageTypeSupported(type) {\n  switch (type) {\n    case 'auto':\n      return IMAGE_BITMAP_SUPPORTED || IMAGE_SUPPORTED || DATA_SUPPORTED;\n    case 'imagebitmap':\n      return IMAGE_BITMAP_SUPPORTED;\n    case 'image':\n      return IMAGE_SUPPORTED;\n    case 'data':\n      return DATA_SUPPORTED;\n    default:\n      throw new Error(\"@loaders.gl/images: image \".concat(type, \" not supported in this environment\"));\n  }\n}\nexport function getDefaultImageType() {\n  if (IMAGE_BITMAP_SUPPORTED) {\n    return 'imagebitmap';\n  }\n  if (IMAGE_SUPPORTED) {\n    return 'image';\n  }\n  if (DATA_SUPPORTED) {\n    return 'data';\n  }\n  throw new Error('Install \\'@loaders.gl/polyfills\\' to parse images under Node.js');\n}\n//# sourceMappingURL=image-type.js.map","export function isImage(image) {\n  return Boolean(getImageTypeOrNull(image));\n}\nexport function deleteImage(image) {\n  switch (getImageType(image)) {\n    case 'imagebitmap':\n      image.close();\n      break;\n    default:\n  }\n}\nexport function getImageType(image) {\n  const format = getImageTypeOrNull(image);\n  if (!format) {\n    throw new Error('Not an image');\n  }\n  return format;\n}\nexport function getImageSize(image) {\n  return getImageData(image);\n}\nexport function getImageData(image) {\n  switch (getImageType(image)) {\n    case 'data':\n      return image;\n    case 'image':\n    case 'imagebitmap':\n      const canvas = document.createElement('canvas');\n      const context = canvas.getContext('2d');\n      if (!context) {\n        throw new Error('getImageData');\n      }\n      canvas.width = image.width;\n      canvas.height = image.height;\n      context.drawImage(image, 0, 0);\n      return context.getImageData(0, 0, image.width, image.height);\n    default:\n      throw new Error('getImageData');\n  }\n}\nfunction getImageTypeOrNull(image) {\n  if (typeof ImageBitmap !== 'undefined' && image instanceof ImageBitmap) {\n    return 'imagebitmap';\n  }\n  if (typeof Image !== 'undefined' && image instanceof Image) {\n    return 'image';\n  }\n  if (image && typeof image === 'object' && image.data && image.width && image.height) {\n    return 'data';\n  }\n  return null;\n}\n//# sourceMappingURL=parsed-image-api.js.map","const SVG_DATA_URL_PATTERN = /^data:image\\/svg\\+xml/;\nconst SVG_URL_PATTERN = /\\.svg((\\?|#).*)?$/;\nexport function isSVG(url) {\n  return url && (SVG_DATA_URL_PATTERN.test(url) || SVG_URL_PATTERN.test(url));\n}\nexport function getBlobOrSVGDataUrl(arrayBuffer, url) {\n  if (isSVG(url)) {\n    const textDecoder = new TextDecoder();\n    let xmlText = textDecoder.decode(arrayBuffer);\n    try {\n      if (typeof unescape === 'function' && typeof encodeURIComponent === 'function') {\n        xmlText = unescape(encodeURIComponent(xmlText));\n      }\n    } catch (error) {\n      throw new Error(error.message);\n    }\n    const src = \"data:image/svg+xml;base64,\".concat(btoa(xmlText));\n    return src;\n  }\n  return getBlob(arrayBuffer, url);\n}\nexport function getBlob(arrayBuffer, url) {\n  if (isSVG(url)) {\n    throw new Error('SVG cannot be parsed directly to imagebitmap');\n  }\n  return new Blob([new Uint8Array(arrayBuffer)]);\n}\n//# sourceMappingURL=svg-utils.js.map","import { getBlobOrSVGDataUrl } from './svg-utils';\nexport async function parseToImage(arrayBuffer, options, url) {\n  const blobOrDataUrl = getBlobOrSVGDataUrl(arrayBuffer, url);\n  const URL = self.URL || self.webkitURL;\n  const objectUrl = typeof blobOrDataUrl !== 'string' && URL.createObjectURL(blobOrDataUrl);\n  try {\n    return await loadToImage(objectUrl || blobOrDataUrl, options);\n  } finally {\n    if (objectUrl) {\n      URL.revokeObjectURL(objectUrl);\n    }\n  }\n}\nexport async function loadToImage(url, options) {\n  const image = new Image();\n  image.src = url;\n  if (options.image && options.image.decode && image.decode) {\n    await image.decode();\n    return image;\n  }\n  return await new Promise((resolve, reject) => {\n    try {\n      image.onload = () => resolve(image);\n      image.onerror = err => reject(new Error(\"Could not load image \".concat(url, \": \").concat(err)));\n    } catch (error) {\n      reject(error);\n    }\n  });\n}\n//# sourceMappingURL=parse-to-image.js.map","import { isSVG, getBlob } from './svg-utils';\nimport { parseToImage } from './parse-to-image';\nconst EMPTY_OBJECT = {};\nlet imagebitmapOptionsSupported = true;\nexport async function parseToImageBitmap(arrayBuffer, options, url) {\n  let blob;\n  if (isSVG(url)) {\n    const image = await parseToImage(arrayBuffer, options, url);\n    blob = image;\n  } else {\n    blob = getBlob(arrayBuffer, url);\n  }\n  const imagebitmapOptions = options && options.imagebitmap;\n  return await safeCreateImageBitmap(blob, imagebitmapOptions);\n}\nasync function safeCreateImageBitmap(blob) {\n  let imagebitmapOptions = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n  if (isEmptyObject(imagebitmapOptions) || !imagebitmapOptionsSupported) {\n    imagebitmapOptions = null;\n  }\n  if (imagebitmapOptions) {\n    try {\n      return await createImageBitmap(blob, imagebitmapOptions);\n    } catch (error) {\n      console.warn(error);\n      imagebitmapOptionsSupported = false;\n    }\n  }\n  return await createImageBitmap(blob);\n}\nfunction isEmptyObject(object) {\n  for (const key in object || EMPTY_OBJECT) {\n    return false;\n  }\n  return true;\n}\n//# sourceMappingURL=parse-to-image-bitmap.js.map","import { VERSION } from './lib/utils/version';\nimport { parseImage } from './lib/parsers/parse-image';\nimport { getBinaryImageMetadata } from './lib/category-api/binary-image-api';\nconst EXTENSIONS = ['png', 'jpg', 'jpeg', 'gif', 'webp', 'bmp', 'ico', 'svg', 'avif'];\nconst MIME_TYPES = ['image/png', 'image/jpeg', 'image/gif', 'image/webp', 'image/avif', 'image/bmp', 'image/vnd.microsoft.icon', 'image/svg+xml'];\nconst DEFAULT_IMAGE_LOADER_OPTIONS = {\n  image: {\n    type: 'auto',\n    decode: true\n  }\n};\nexport const ImageLoader = {\n  id: 'image',\n  module: 'images',\n  name: 'Images',\n  version: VERSION,\n  mimeTypes: MIME_TYPES,\n  extensions: EXTENSIONS,\n  parse: parseImage,\n  tests: [arrayBuffer => Boolean(getBinaryImageMetadata(new DataView(arrayBuffer)))],\n  options: DEFAULT_IMAGE_LOADER_OPTIONS\n};\nexport const _typecheckImageLoader = ImageLoader;\n//# sourceMappingURL=image-loader.js.map","export const VERSION = typeof \"3.4.15\" !== 'undefined' ? \"3.4.15\" : 'latest';\n//# sourceMappingURL=version.js.map","import { assert } from '@loaders.gl/loader-utils';\nimport { isImageTypeSupported, getDefaultImageType } from '../category-api/image-type';\nimport { getImageData } from '../category-api/parsed-image-api';\nimport { parseToImage } from './parse-to-image';\nimport { parseToImageBitmap } from './parse-to-image-bitmap';\nimport { parseToNodeImage } from './parse-to-node-image';\nexport async function parseImage(arrayBuffer, options, context) {\n  options = options || {};\n  const imageOptions = options.image || {};\n  const imageType = imageOptions.type || 'auto';\n  const {\n    url\n  } = context || {};\n  const loadType = getLoadableImageType(imageType);\n  let image;\n  switch (loadType) {\n    case 'imagebitmap':\n      image = await parseToImageBitmap(arrayBuffer, options, url);\n      break;\n    case 'image':\n      image = await parseToImage(arrayBuffer, options, url);\n      break;\n    case 'data':\n      image = await parseToNodeImage(arrayBuffer, options);\n      break;\n    default:\n      assert(false);\n  }\n  if (imageType === 'data') {\n    image = getImageData(image);\n  }\n  return image;\n}\nfunction getLoadableImageType(type) {\n  switch (type) {\n    case 'auto':\n    case 'data':\n      return getDefaultImageType();\n    default:\n      isImageTypeSupported(type);\n      return type;\n  }\n}\n//# sourceMappingURL=parse-image.js.map","import { assert } from '@loaders.gl/loader-utils';\nimport { getBinaryImageMetadata } from '../category-api/binary-image-api';\nexport async function parseToNodeImage(arrayBuffer, options) {\n  const {\n    mimeType\n  } = getBinaryImageMetadata(arrayBuffer) || {};\n  const _parseImageNode = globalThis._parseImageNode;\n  assert(_parseImageNode);\n  return await _parseImageNode(arrayBuffer, mimeType);\n}\n//# sourceMappingURL=parse-to-node-image.js.map","import { getISOBMFFMediaType } from './parse-isobmff-binary';\nconst BIG_ENDIAN = false;\nconst LITTLE_ENDIAN = true;\nexport function getBinaryImageMetadata(binaryData) {\n  const dataView = toDataView(binaryData);\n  return getPngMetadata(dataView) || getJpegMetadata(dataView) || getGifMetadata(dataView) || getBmpMetadata(dataView) || getISOBMFFMetadata(dataView);\n}\nfunction getISOBMFFMetadata(binaryData) {\n  const buffer = new Uint8Array(binaryData instanceof DataView ? binaryData.buffer : binaryData);\n  const mediaType = getISOBMFFMediaType(buffer);\n  if (!mediaType) {\n    return null;\n  }\n  return {\n    mimeType: mediaType.mimeType,\n    width: 0,\n    height: 0\n  };\n}\nfunction getPngMetadata(binaryData) {\n  const dataView = toDataView(binaryData);\n  const isPng = dataView.byteLength >= 24 && dataView.getUint32(0, BIG_ENDIAN) === 0x89504e47;\n  if (!isPng) {\n    return null;\n  }\n  return {\n    mimeType: 'image/png',\n    width: dataView.getUint32(16, BIG_ENDIAN),\n    height: dataView.getUint32(20, BIG_ENDIAN)\n  };\n}\nfunction getGifMetadata(binaryData) {\n  const dataView = toDataView(binaryData);\n  const isGif = dataView.byteLength >= 10 && dataView.getUint32(0, BIG_ENDIAN) === 0x47494638;\n  if (!isGif) {\n    return null;\n  }\n  return {\n    mimeType: 'image/gif',\n    width: dataView.getUint16(6, LITTLE_ENDIAN),\n    height: dataView.getUint16(8, LITTLE_ENDIAN)\n  };\n}\nexport function getBmpMetadata(binaryData) {\n  const dataView = toDataView(binaryData);\n  const isBmp = dataView.byteLength >= 14 && dataView.getUint16(0, BIG_ENDIAN) === 0x424d && dataView.getUint32(2, LITTLE_ENDIAN) === dataView.byteLength;\n  if (!isBmp) {\n    return null;\n  }\n  return {\n    mimeType: 'image/bmp',\n    width: dataView.getUint32(18, LITTLE_ENDIAN),\n    height: dataView.getUint32(22, LITTLE_ENDIAN)\n  };\n}\nfunction getJpegMetadata(binaryData) {\n  const dataView = toDataView(binaryData);\n  const isJpeg = dataView.byteLength >= 3 && dataView.getUint16(0, BIG_ENDIAN) === 0xffd8 && dataView.getUint8(2) === 0xff;\n  if (!isJpeg) {\n    return null;\n  }\n  const {\n    tableMarkers,\n    sofMarkers\n  } = getJpegMarkers();\n  let i = 2;\n  while (i + 9 < dataView.byteLength) {\n    const marker = dataView.getUint16(i, BIG_ENDIAN);\n    if (sofMarkers.has(marker)) {\n      return {\n        mimeType: 'image/jpeg',\n        height: dataView.getUint16(i + 5, BIG_ENDIAN),\n        width: dataView.getUint16(i + 7, BIG_ENDIAN)\n      };\n    }\n    if (!tableMarkers.has(marker)) {\n      return null;\n    }\n    i += 2;\n    i += dataView.getUint16(i, BIG_ENDIAN);\n  }\n  return null;\n}\nfunction getJpegMarkers() {\n  const tableMarkers = new Set([0xffdb, 0xffc4, 0xffcc, 0xffdd, 0xfffe]);\n  for (let i = 0xffe0; i < 0xfff0; ++i) {\n    tableMarkers.add(i);\n  }\n  const sofMarkers = new Set([0xffc0, 0xffc1, 0xffc2, 0xffc3, 0xffc5, 0xffc6, 0xffc7, 0xffc9, 0xffca, 0xffcb, 0xffcd, 0xffce, 0xffcf, 0xffde]);\n  return {\n    tableMarkers,\n    sofMarkers\n  };\n}\nfunction toDataView(data) {\n  if (data instanceof DataView) {\n    return data;\n  }\n  if (ArrayBuffer.isView(data)) {\n    return new DataView(data.buffer);\n  }\n  if (data instanceof ArrayBuffer) {\n    return new DataView(data);\n  }\n  throw new Error('toDataView');\n}\n//# sourceMappingURL=binary-image-api.js.map","export function getISOBMFFMediaType(buffer) {\n  if (!checkString(buffer, 'ftyp', 4)) {\n    return null;\n  }\n  if ((buffer[8] & 0x60) === 0x00) {\n    return null;\n  }\n  return decodeMajorBrand(buffer);\n}\nexport function decodeMajorBrand(buffer) {\n  const brandMajor = getUTF8String(buffer, 8, 12).replace('\\0', ' ').trim();\n  switch (brandMajor) {\n    case 'avif':\n    case 'avis':\n      return {\n        extension: 'avif',\n        mimeType: 'image/avif'\n      };\n    default:\n      return null;\n  }\n}\nfunction getUTF8String(array, start, end) {\n  return String.fromCharCode(...array.slice(start, end));\n}\nfunction stringToBytes(string) {\n  return [...string].map(character => character.charCodeAt(0));\n}\nfunction checkString(buffer, header) {\n  let offset = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;\n  const headerBytes = stringToBytes(header);\n  for (let i = 0; i < headerBytes.length; ++i) {\n    if (headerBytes[i] !== buffer[i + offset]) {\n      return false;\n    }\n  }\n  return true;\n}\n//# sourceMappingURL=parse-isobmff-binary.js.map","export function compareArrayBuffers(arrayBuffer1, arrayBuffer2, byteLength) {\n  byteLength = byteLength || arrayBuffer1.byteLength;\n  if (arrayBuffer1.byteLength < byteLength || arrayBuffer2.byteLength < byteLength) {\n    return false;\n  }\n  const array1 = new Uint8Array(arrayBuffer1);\n  const array2 = new Uint8Array(arrayBuffer2);\n  for (let i = 0; i < array1.length; ++i) {\n    if (array1[i] !== array2[i]) {\n      return false;\n    }\n  }\n  return true;\n}\nexport function concatenateArrayBuffers() {\n  for (var _len = arguments.length, sources = new Array(_len), _key = 0; _key < _len; _key++) {\n    sources[_key] = arguments[_key];\n  }\n  const sourceArrays = sources.map(source2 => source2 instanceof ArrayBuffer ? new Uint8Array(source2) : source2);\n  const byteLength = sourceArrays.reduce((length, typedArray) => length + typedArray.byteLength, 0);\n  const result = new Uint8Array(byteLength);\n  let offset = 0;\n  for (const sourceArray of sourceArrays) {\n    result.set(sourceArray, offset);\n    offset += sourceArray.byteLength;\n  }\n  return result.buffer;\n}\nexport function concatenateTypedArrays() {\n  for (var _len2 = arguments.length, typedArrays = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n    typedArrays[_key2] = arguments[_key2];\n  }\n  const arrays = typedArrays;\n  const TypedArrayConstructor = arrays && arrays.length > 1 && arrays[0].constructor || null;\n  if (!TypedArrayConstructor) {\n    throw new Error('\"concatenateTypedArrays\" - incorrect quantity of arguments or arguments have incompatible data types');\n  }\n  const sumLength = arrays.reduce((acc, value) => acc + value.length, 0);\n  const result = new TypedArrayConstructor(sumLength);\n  let offset = 0;\n  for (const array of arrays) {\n    result.set(array, offset);\n    offset += array.length;\n  }\n  return result;\n}\nexport function sliceArrayBuffer(arrayBuffer, byteOffset, byteLength) {\n  const subArray = byteLength !== undefined ? new Uint8Array(arrayBuffer).subarray(byteOffset, byteOffset + byteLength) : new Uint8Array(arrayBuffer).subarray(byteOffset);\n  const arrayCopy = new Uint8Array(subArray);\n  return arrayCopy.buffer;\n}\n//# sourceMappingURL=array-buffer-utils.js.map","export function assert(condition, message) {\n  if (!condition) {\n    throw new Error(message || 'loader assertion failed.');\n  }\n}\n//# sourceMappingURL=assert.js.map","const globals = {\n  self: typeof self !== 'undefined' && self,\n  window: typeof window !== 'undefined' && window,\n  global: typeof global !== 'undefined' && global,\n  document: typeof document !== 'undefined' && document\n};\nconst self_ = globals.self || globals.window || globals.global || {};\nconst window_ = globals.window || globals.self || globals.global || {};\nconst global_ = globals.global || globals.self || globals.window || {};\nconst document_ = globals.document || {};\nexport { self_ as self, window_ as window, global_ as global, document_ as document };\nexport const isBrowser = Boolean(typeof process !== 'object' || String(process) !== '[object process]' || process.browser);\nexport const isWorker = typeof importScripts === 'function';\nconst matches = typeof process !== 'undefined' && process.version && /v([0-9]*)/.exec(process.version);\nexport const nodeVersion = matches && parseFloat(matches[1]) || 0;\n//# sourceMappingURL=globals.js.map","import { getCWD } from './get-cwd';\nexport function filename(url) {\n  const slashIndex = url ? url.lastIndexOf('/') : -1;\n  return slashIndex >= 0 ? url.substr(slashIndex + 1) : '';\n}\nexport function dirname(url) {\n  const slashIndex = url ? url.lastIndexOf('/') : -1;\n  return slashIndex >= 0 ? url.substr(0, slashIndex) : '';\n}\nexport function join() {\n  for (var _len = arguments.length, parts = new Array(_len), _key = 0; _key < _len; _key++) {\n    parts[_key] = arguments[_key];\n  }\n  const separator = '/';\n  parts = parts.map((part, index) => {\n    if (index) {\n      part = part.replace(new RegExp(\"^\".concat(separator)), '');\n    }\n    if (index !== parts.length - 1) {\n      part = part.replace(new RegExp(\"\".concat(separator, \"$\")), '');\n    }\n    return part;\n  });\n  return parts.join(separator);\n}\nexport function resolve() {\n  const paths = [];\n  for (let _i = 0; _i < arguments.length; _i++) {\n    paths[_i] = _i < 0 || arguments.length <= _i ? undefined : arguments[_i];\n  }\n  let resolvedPath = '';\n  let resolvedAbsolute = false;\n  let cwd;\n  for (let i = paths.length - 1; i >= -1 && !resolvedAbsolute; i--) {\n    let path;\n    if (i >= 0) {\n      path = paths[i];\n    } else {\n      if (cwd === undefined) {\n        cwd = getCWD();\n      }\n      path = cwd;\n    }\n    if (path.length === 0) {\n      continue;\n    }\n    resolvedPath = \"\".concat(path, \"/\").concat(resolvedPath);\n    resolvedAbsolute = path.charCodeAt(0) === SLASH;\n  }\n  resolvedPath = normalizeStringPosix(resolvedPath, !resolvedAbsolute);\n  if (resolvedAbsolute) {\n    return \"/\".concat(resolvedPath);\n  } else if (resolvedPath.length > 0) {\n    return resolvedPath;\n  }\n  return '.';\n}\nconst SLASH = 47;\nconst DOT = 46;\nfunction normalizeStringPosix(path, allowAboveRoot) {\n  let res = '';\n  let lastSlash = -1;\n  let dots = 0;\n  let code;\n  let isAboveRoot = false;\n  for (let i = 0; i <= path.length; ++i) {\n    if (i < path.length) {\n      code = path.charCodeAt(i);\n    } else if (code === SLASH) {\n      break;\n    } else {\n      code = SLASH;\n    }\n    if (code === SLASH) {\n      if (lastSlash === i - 1 || dots === 1) {} else if (lastSlash !== i - 1 && dots === 2) {\n        if (res.length < 2 || !isAboveRoot || res.charCodeAt(res.length - 1) !== DOT || res.charCodeAt(res.length - 2) !== DOT) {\n          if (res.length > 2) {\n            const start = res.length - 1;\n            let j = start;\n            for (; j >= 0; --j) {\n              if (res.charCodeAt(j) === SLASH) {\n                break;\n              }\n            }\n            if (j !== start) {\n              res = j === -1 ? '' : res.slice(0, j);\n              lastSlash = i;\n              dots = 0;\n              isAboveRoot = false;\n              continue;\n            }\n          } else if (res.length === 2 || res.length === 1) {\n            res = '';\n            lastSlash = i;\n            dots = 0;\n            isAboveRoot = false;\n            continue;\n          }\n        }\n        if (allowAboveRoot) {\n          if (res.length > 0) {\n            res += '/..';\n          } else {\n            res = '..';\n          }\n          isAboveRoot = true;\n        }\n      } else {\n        const slice = path.slice(lastSlash + 1, i);\n        if (res.length > 0) {\n          res += \"/\".concat(slice);\n        } else {\n          res = slice;\n        }\n        isAboveRoot = false;\n      }\n      lastSlash = i;\n      dots = 0;\n    } else if (code === DOT && dots !== -1) {\n      ++dots;\n    } else {\n      dots = -1;\n    }\n  }\n  return res;\n}\n//# sourceMappingURL=path.js.map","export function getMeshSize(attributes) {\n  let size = 0;\n  for (const attributeName in attributes) {\n    const attribute = attributes[attributeName];\n    if (ArrayBuffer.isView(attribute)) {\n      size += attribute.byteLength * attribute.BYTES_PER_ELEMENT;\n    }\n  }\n  return size;\n}\nexport function getMeshBoundingBox(attributes) {\n  let minX = Infinity;\n  let minY = Infinity;\n  let minZ = Infinity;\n  let maxX = -Infinity;\n  let maxY = -Infinity;\n  let maxZ = -Infinity;\n  const positions = attributes.POSITION ? attributes.POSITION.value : [];\n  const len = positions && positions.length;\n  for (let i = 0; i < len; i += 3) {\n    const x = positions[i];\n    const y = positions[i + 1];\n    const z = positions[i + 2];\n    minX = x < minX ? x : minX;\n    minY = y < minY ? y : minY;\n    minZ = z < minZ ? z : minZ;\n    maxX = x > maxX ? x : maxX;\n    maxY = y > maxY ? y : maxY;\n    maxZ = z > maxZ ? z : maxZ;\n  }\n  return [[minX, minY, minZ], [maxX, maxY, maxZ]];\n}\n//# sourceMappingURL=mesh-utils.js.map","export function assert(condition, message) {\n  if (!condition) {\n    throw new Error(message || 'loaders.gl assertion failed.');\n  }\n}\n//# sourceMappingURL=assert.js.map","const globals = {\n  self: typeof self !== 'undefined' && self,\n  window: typeof window !== 'undefined' && window,\n  global: typeof global !== 'undefined' && global,\n  document: typeof document !== 'undefined' && document\n};\nconst self_ = globals.self || globals.window || globals.global || {};\nconst window_ = globals.window || globals.self || globals.global || {};\nconst global_ = globals.global || globals.self || globals.window || {};\nconst document_ = globals.document || {};\nexport { self_ as self, window_ as window, global_ as global, document_ as document };\nexport const isBrowser = typeof process !== 'object' || String(process) !== '[object process]' || process.browser;\nexport const isWorker = typeof importScripts === 'function';\nexport const isMobile = typeof window !== 'undefined' && typeof window.orientation !== 'undefined';\nconst matches = typeof process !== 'undefined' && process.version && /v([0-9]*)/.exec(process.version);\nexport const nodeVersion = matches && parseFloat(matches[1]) || 0;\n//# sourceMappingURL=globals.js.map","export const readFileAsArrayBuffer = null;\nexport const readFileAsText = null;\nexport const requireFromFile = null;\nexport const requireFromString = null;\n//# sourceMappingURL=require-utils.browser.js.map","import { global, isBrowser, isWorker } from '../env-utils/globals';\nimport * as node from '../node/require-utils.node';\nimport { assert } from '../env-utils/assert';\nimport { VERSION as __VERSION__ } from '../env-utils/version';\nconst LATEST = 'latest';\nconst VERSION = typeof \"3.4.15\" !== 'undefined' ? \"3.4.15\" : LATEST;\nconst loadLibraryPromises = {};\nexport async function loadLibrary(libraryUrl) {\n  let moduleName = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n  let options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n  if (moduleName) {\n    libraryUrl = getLibraryUrl(libraryUrl, moduleName, options);\n  }\n  loadLibraryPromises[libraryUrl] = loadLibraryPromises[libraryUrl] || loadLibraryFromFile(libraryUrl);\n  return await loadLibraryPromises[libraryUrl];\n}\nexport function getLibraryUrl(library, moduleName, options) {\n  if (library.startsWith('http')) {\n    return library;\n  }\n  const modules = options.modules || {};\n  if (modules[library]) {\n    return modules[library];\n  }\n  if (!isBrowser) {\n    return \"modules/\".concat(moduleName, \"/dist/libs/\").concat(library);\n  }\n  if (options.CDN) {\n    assert(options.CDN.startsWith('http'));\n    return \"\".concat(options.CDN, \"/\").concat(moduleName, \"@\").concat(VERSION, \"/dist/libs/\").concat(library);\n  }\n  if (isWorker) {\n    return \"../src/libs/\".concat(library);\n  }\n  return \"modules/\".concat(moduleName, \"/src/libs/\").concat(library);\n}\nasync function loadLibraryFromFile(libraryUrl) {\n  if (libraryUrl.endsWith('wasm')) {\n    const response = await fetch(libraryUrl);\n    return await response.arrayBuffer();\n  }\n  if (!isBrowser) {\n    try {\n      return node && node.requireFromFile && (await node.requireFromFile(libraryUrl));\n    } catch {\n      return null;\n    }\n  }\n  if (isWorker) {\n    return importScripts(libraryUrl);\n  }\n  const response = await fetch(libraryUrl);\n  const scriptSource = await response.text();\n  return loadLibraryFromString(scriptSource, libraryUrl);\n}\nfunction loadLibraryFromString(scriptSource, id) {\n  if (!isBrowser) {\n    return node.requireFromString && node.requireFromString(scriptSource, id);\n  }\n  if (isWorker) {\n    eval.call(global, scriptSource);\n    return null;\n  }\n  const script = document.createElement('script');\n  script.id = id;\n  try {\n    script.appendChild(document.createTextNode(scriptSource));\n  } catch (e) {\n    script.text = scriptSource;\n  }\n  document.body.appendChild(script);\n  return null;\n}\n//# sourceMappingURL=library-utils.js.map","export default {\n  DEPTH_BUFFER_BIT: 0x00000100,\n  STENCIL_BUFFER_BIT: 0x00000400,\n  COLOR_BUFFER_BIT: 0x00004000,\n  POINTS: 0x0000,\n  LINES: 0x0001,\n  LINE_LOOP: 0x0002,\n  LINE_STRIP: 0x0003,\n  TRIANGLES: 0x0004,\n  TRIANGLE_STRIP: 0x0005,\n  TRIANGLE_FAN: 0x0006,\n  ZERO: 0,\n  ONE: 1,\n  SRC_COLOR: 0x0300,\n  ONE_MINUS_SRC_COLOR: 0x0301,\n  SRC_ALPHA: 0x0302,\n  ONE_MINUS_SRC_ALPHA: 0x0303,\n  DST_ALPHA: 0x0304,\n  ONE_MINUS_DST_ALPHA: 0x0305,\n  DST_COLOR: 0x0306,\n  ONE_MINUS_DST_COLOR: 0x0307,\n  SRC_ALPHA_SATURATE: 0x0308,\n  CONSTANT_COLOR: 0x8001,\n  ONE_MINUS_CONSTANT_COLOR: 0x8002,\n  CONSTANT_ALPHA: 0x8003,\n  ONE_MINUS_CONSTANT_ALPHA: 0x8004,\n  FUNC_ADD: 0x8006,\n  FUNC_SUBTRACT: 0x800a,\n  FUNC_REVERSE_SUBTRACT: 0x800b,\n  BLEND_EQUATION: 0x8009,\n  BLEND_EQUATION_RGB: 0x8009,\n  BLEND_EQUATION_ALPHA: 0x883d,\n  BLEND_DST_RGB: 0x80c8,\n  BLEND_SRC_RGB: 0x80c9,\n  BLEND_DST_ALPHA: 0x80ca,\n  BLEND_SRC_ALPHA: 0x80cb,\n  BLEND_COLOR: 0x8005,\n  ARRAY_BUFFER_BINDING: 0x8894,\n  ELEMENT_ARRAY_BUFFER_BINDING: 0x8895,\n  LINE_WIDTH: 0x0b21,\n  ALIASED_POINT_SIZE_RANGE: 0x846d,\n  ALIASED_LINE_WIDTH_RANGE: 0x846e,\n  CULL_FACE_MODE: 0x0b45,\n  FRONT_FACE: 0x0b46,\n  DEPTH_RANGE: 0x0b70,\n  DEPTH_WRITEMASK: 0x0b72,\n  DEPTH_CLEAR_VALUE: 0x0b73,\n  DEPTH_FUNC: 0x0b74,\n  STENCIL_CLEAR_VALUE: 0x0b91,\n  STENCIL_FUNC: 0x0b92,\n  STENCIL_FAIL: 0x0b94,\n  STENCIL_PASS_DEPTH_FAIL: 0x0b95,\n  STENCIL_PASS_DEPTH_PASS: 0x0b96,\n  STENCIL_REF: 0x0b97,\n  STENCIL_VALUE_MASK: 0x0b93,\n  STENCIL_WRITEMASK: 0x0b98,\n  STENCIL_BACK_FUNC: 0x8800,\n  STENCIL_BACK_FAIL: 0x8801,\n  STENCIL_BACK_PASS_DEPTH_FAIL: 0x8802,\n  STENCIL_BACK_PASS_DEPTH_PASS: 0x8803,\n  STENCIL_BACK_REF: 0x8ca3,\n  STENCIL_BACK_VALUE_MASK: 0x8ca4,\n  STENCIL_BACK_WRITEMASK: 0x8ca5,\n  VIEWPORT: 0x0ba2,\n  SCISSOR_BOX: 0x0c10,\n  COLOR_CLEAR_VALUE: 0x0c22,\n  COLOR_WRITEMASK: 0x0c23,\n  UNPACK_ALIGNMENT: 0x0cf5,\n  PACK_ALIGNMENT: 0x0d05,\n  MAX_TEXTURE_SIZE: 0x0d33,\n  MAX_VIEWPORT_DIMS: 0x0d3a,\n  SUBPIXEL_BITS: 0x0d50,\n  RED_BITS: 0x0d52,\n  GREEN_BITS: 0x0d53,\n  BLUE_BITS: 0x0d54,\n  ALPHA_BITS: 0x0d55,\n  DEPTH_BITS: 0x0d56,\n  STENCIL_BITS: 0x0d57,\n  POLYGON_OFFSET_UNITS: 0x2a00,\n  POLYGON_OFFSET_FACTOR: 0x8038,\n  TEXTURE_BINDING_2D: 0x8069,\n  SAMPLE_BUFFERS: 0x80a8,\n  SAMPLES: 0x80a9,\n  SAMPLE_COVERAGE_VALUE: 0x80aa,\n  SAMPLE_COVERAGE_INVERT: 0x80ab,\n  COMPRESSED_TEXTURE_FORMATS: 0x86a3,\n  VENDOR: 0x1f00,\n  RENDERER: 0x1f01,\n  VERSION: 0x1f02,\n  IMPLEMENTATION_COLOR_READ_TYPE: 0x8b9a,\n  IMPLEMENTATION_COLOR_READ_FORMAT: 0x8b9b,\n  BROWSER_DEFAULT_WEBGL: 0x9244,\n  STATIC_DRAW: 0x88e4,\n  STREAM_DRAW: 0x88e0,\n  DYNAMIC_DRAW: 0x88e8,\n  ARRAY_BUFFER: 0x8892,\n  ELEMENT_ARRAY_BUFFER: 0x8893,\n  BUFFER_SIZE: 0x8764,\n  BUFFER_USAGE: 0x8765,\n  CURRENT_VERTEX_ATTRIB: 0x8626,\n  VERTEX_ATTRIB_ARRAY_ENABLED: 0x8622,\n  VERTEX_ATTRIB_ARRAY_SIZE: 0x8623,\n  VERTEX_ATTRIB_ARRAY_STRIDE: 0x8624,\n  VERTEX_ATTRIB_ARRAY_TYPE: 0x8625,\n  VERTEX_ATTRIB_ARRAY_NORMALIZED: 0x886a,\n  VERTEX_ATTRIB_ARRAY_POINTER: 0x8645,\n  VERTEX_ATTRIB_ARRAY_BUFFER_BINDING: 0x889f,\n  CULL_FACE: 0x0b44,\n  FRONT: 0x0404,\n  BACK: 0x0405,\n  FRONT_AND_BACK: 0x0408,\n  BLEND: 0x0be2,\n  DEPTH_TEST: 0x0b71,\n  DITHER: 0x0bd0,\n  POLYGON_OFFSET_FILL: 0x8037,\n  SAMPLE_ALPHA_TO_COVERAGE: 0x809e,\n  SAMPLE_COVERAGE: 0x80a0,\n  SCISSOR_TEST: 0x0c11,\n  STENCIL_TEST: 0x0b90,\n  NO_ERROR: 0,\n  INVALID_ENUM: 0x0500,\n  INVALID_VALUE: 0x0501,\n  INVALID_OPERATION: 0x0502,\n  OUT_OF_MEMORY: 0x0505,\n  CONTEXT_LOST_WEBGL: 0x9242,\n  CW: 0x0900,\n  CCW: 0x0901,\n  DONT_CARE: 0x1100,\n  FASTEST: 0x1101,\n  NICEST: 0x1102,\n  GENERATE_MIPMAP_HINT: 0x8192,\n  BYTE: 0x1400,\n  UNSIGNED_BYTE: 0x1401,\n  SHORT: 0x1402,\n  UNSIGNED_SHORT: 0x1403,\n  INT: 0x1404,\n  UNSIGNED_INT: 0x1405,\n  FLOAT: 0x1406,\n  DOUBLE: 0x140a,\n  DEPTH_COMPONENT: 0x1902,\n  ALPHA: 0x1906,\n  RGB: 0x1907,\n  RGBA: 0x1908,\n  LUMINANCE: 0x1909,\n  LUMINANCE_ALPHA: 0x190a,\n  UNSIGNED_SHORT_4_4_4_4: 0x8033,\n  UNSIGNED_SHORT_5_5_5_1: 0x8034,\n  UNSIGNED_SHORT_5_6_5: 0x8363,\n  FRAGMENT_SHADER: 0x8b30,\n  VERTEX_SHADER: 0x8b31,\n  COMPILE_STATUS: 0x8b81,\n  DELETE_STATUS: 0x8b80,\n  LINK_STATUS: 0x8b82,\n  VALIDATE_STATUS: 0x8b83,\n  ATTACHED_SHADERS: 0x8b85,\n  ACTIVE_ATTRIBUTES: 0x8b89,\n  ACTIVE_UNIFORMS: 0x8b86,\n  MAX_VERTEX_ATTRIBS: 0x8869,\n  MAX_VERTEX_UNIFORM_VECTORS: 0x8dfb,\n  MAX_VARYING_VECTORS: 0x8dfc,\n  MAX_COMBINED_TEXTURE_IMAGE_UNITS: 0x8b4d,\n  MAX_VERTEX_TEXTURE_IMAGE_UNITS: 0x8b4c,\n  MAX_TEXTURE_IMAGE_UNITS: 0x8872,\n  MAX_FRAGMENT_UNIFORM_VECTORS: 0x8dfd,\n  SHADER_TYPE: 0x8b4f,\n  SHADING_LANGUAGE_VERSION: 0x8b8c,\n  CURRENT_PROGRAM: 0x8b8d,\n  NEVER: 0x0200,\n  ALWAYS: 0x0207,\n  LESS: 0x0201,\n  EQUAL: 0x0202,\n  LEQUAL: 0x0203,\n  GREATER: 0x0204,\n  GEQUAL: 0x0206,\n  NOTEQUAL: 0x0205,\n  KEEP: 0x1e00,\n  REPLACE: 0x1e01,\n  INCR: 0x1e02,\n  DECR: 0x1e03,\n  INVERT: 0x150a,\n  INCR_WRAP: 0x8507,\n  DECR_WRAP: 0x8508,\n  NEAREST: 0x2600,\n  LINEAR: 0x2601,\n  NEAREST_MIPMAP_NEAREST: 0x2700,\n  LINEAR_MIPMAP_NEAREST: 0x2701,\n  NEAREST_MIPMAP_LINEAR: 0x2702,\n  LINEAR_MIPMAP_LINEAR: 0x2703,\n  TEXTURE_MAG_FILTER: 0x2800,\n  TEXTURE_MIN_FILTER: 0x2801,\n  TEXTURE_WRAP_S: 0x2802,\n  TEXTURE_WRAP_T: 0x2803,\n  TEXTURE_2D: 0x0de1,\n  TEXTURE: 0x1702,\n  TEXTURE_CUBE_MAP: 0x8513,\n  TEXTURE_BINDING_CUBE_MAP: 0x8514,\n  TEXTURE_CUBE_MAP_POSITIVE_X: 0x8515,\n  TEXTURE_CUBE_MAP_NEGATIVE_X: 0x8516,\n  TEXTURE_CUBE_MAP_POSITIVE_Y: 0x8517,\n  TEXTURE_CUBE_MAP_NEGATIVE_Y: 0x8518,\n  TEXTURE_CUBE_MAP_POSITIVE_Z: 0x8519,\n  TEXTURE_CUBE_MAP_NEGATIVE_Z: 0x851a,\n  MAX_CUBE_MAP_TEXTURE_SIZE: 0x851c,\n  TEXTURE0: 0x84c0,\n  ACTIVE_TEXTURE: 0x84e0,\n  REPEAT: 0x2901,\n  CLAMP_TO_EDGE: 0x812f,\n  MIRRORED_REPEAT: 0x8370,\n  TEXTURE_WIDTH: 0x1000,\n  TEXTURE_HEIGHT: 0x1001,\n  FLOAT_VEC2: 0x8b50,\n  FLOAT_VEC3: 0x8b51,\n  FLOAT_VEC4: 0x8b52,\n  INT_VEC2: 0x8b53,\n  INT_VEC3: 0x8b54,\n  INT_VEC4: 0x8b55,\n  BOOL: 0x8b56,\n  BOOL_VEC2: 0x8b57,\n  BOOL_VEC3: 0x8b58,\n  BOOL_VEC4: 0x8b59,\n  FLOAT_MAT2: 0x8b5a,\n  FLOAT_MAT3: 0x8b5b,\n  FLOAT_MAT4: 0x8b5c,\n  SAMPLER_2D: 0x8b5e,\n  SAMPLER_CUBE: 0x8b60,\n  LOW_FLOAT: 0x8df0,\n  MEDIUM_FLOAT: 0x8df1,\n  HIGH_FLOAT: 0x8df2,\n  LOW_INT: 0x8df3,\n  MEDIUM_INT: 0x8df4,\n  HIGH_INT: 0x8df5,\n  FRAMEBUFFER: 0x8d40,\n  RENDERBUFFER: 0x8d41,\n  RGBA4: 0x8056,\n  RGB5_A1: 0x8057,\n  RGB565: 0x8d62,\n  DEPTH_COMPONENT16: 0x81a5,\n  STENCIL_INDEX: 0x1901,\n  STENCIL_INDEX8: 0x8d48,\n  DEPTH_STENCIL: 0x84f9,\n  RENDERBUFFER_WIDTH: 0x8d42,\n  RENDERBUFFER_HEIGHT: 0x8d43,\n  RENDERBUFFER_INTERNAL_FORMAT: 0x8d44,\n  RENDERBUFFER_RED_SIZE: 0x8d50,\n  RENDERBUFFER_GREEN_SIZE: 0x8d51,\n  RENDERBUFFER_BLUE_SIZE: 0x8d52,\n  RENDERBUFFER_ALPHA_SIZE: 0x8d53,\n  RENDERBUFFER_DEPTH_SIZE: 0x8d54,\n  RENDERBUFFER_STENCIL_SIZE: 0x8d55,\n  FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE: 0x8cd0,\n  FRAMEBUFFER_ATTACHMENT_OBJECT_NAME: 0x8cd1,\n  FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL: 0x8cd2,\n  FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE: 0x8cd3,\n  COLOR_ATTACHMENT0: 0x8ce0,\n  DEPTH_ATTACHMENT: 0x8d00,\n  STENCIL_ATTACHMENT: 0x8d20,\n  DEPTH_STENCIL_ATTACHMENT: 0x821a,\n  NONE: 0,\n  FRAMEBUFFER_COMPLETE: 0x8cd5,\n  FRAMEBUFFER_INCOMPLETE_ATTACHMENT: 0x8cd6,\n  FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT: 0x8cd7,\n  FRAMEBUFFER_INCOMPLETE_DIMENSIONS: 0x8cd9,\n  FRAMEBUFFER_UNSUPPORTED: 0x8cdd,\n  FRAMEBUFFER_BINDING: 0x8ca6,\n  RENDERBUFFER_BINDING: 0x8ca7,\n  READ_FRAMEBUFFER: 0x8ca8,\n  DRAW_FRAMEBUFFER: 0x8ca9,\n  MAX_RENDERBUFFER_SIZE: 0x84e8,\n  INVALID_FRAMEBUFFER_OPERATION: 0x0506,\n  UNPACK_FLIP_Y_WEBGL: 0x9240,\n  UNPACK_PREMULTIPLY_ALPHA_WEBGL: 0x9241,\n  UNPACK_COLORSPACE_CONVERSION_WEBGL: 0x9243,\n  READ_BUFFER: 0x0c02,\n  UNPACK_ROW_LENGTH: 0x0cf2,\n  UNPACK_SKIP_ROWS: 0x0cf3,\n  UNPACK_SKIP_PIXELS: 0x0cf4,\n  PACK_ROW_LENGTH: 0x0d02,\n  PACK_SKIP_ROWS: 0x0d03,\n  PACK_SKIP_PIXELS: 0x0d04,\n  TEXTURE_BINDING_3D: 0x806a,\n  UNPACK_SKIP_IMAGES: 0x806d,\n  UNPACK_IMAGE_HEIGHT: 0x806e,\n  MAX_3D_TEXTURE_SIZE: 0x8073,\n  MAX_ELEMENTS_VERTICES: 0x80e8,\n  MAX_ELEMENTS_INDICES: 0x80e9,\n  MAX_TEXTURE_LOD_BIAS: 0x84fd,\n  MAX_FRAGMENT_UNIFORM_COMPONENTS: 0x8b49,\n  MAX_VERTEX_UNIFORM_COMPONENTS: 0x8b4a,\n  MAX_ARRAY_TEXTURE_LAYERS: 0x88ff,\n  MIN_PROGRAM_TEXEL_OFFSET: 0x8904,\n  MAX_PROGRAM_TEXEL_OFFSET: 0x8905,\n  MAX_VARYING_COMPONENTS: 0x8b4b,\n  FRAGMENT_SHADER_DERIVATIVE_HINT: 0x8b8b,\n  RASTERIZER_DISCARD: 0x8c89,\n  VERTEX_ARRAY_BINDING: 0x85b5,\n  MAX_VERTEX_OUTPUT_COMPONENTS: 0x9122,\n  MAX_FRAGMENT_INPUT_COMPONENTS: 0x9125,\n  MAX_SERVER_WAIT_TIMEOUT: 0x9111,\n  MAX_ELEMENT_INDEX: 0x8d6b,\n  RED: 0x1903,\n  RGB8: 0x8051,\n  RGBA8: 0x8058,\n  RGB10_A2: 0x8059,\n  TEXTURE_3D: 0x806f,\n  TEXTURE_WRAP_R: 0x8072,\n  TEXTURE_MIN_LOD: 0x813a,\n  TEXTURE_MAX_LOD: 0x813b,\n  TEXTURE_BASE_LEVEL: 0x813c,\n  TEXTURE_MAX_LEVEL: 0x813d,\n  TEXTURE_COMPARE_MODE: 0x884c,\n  TEXTURE_COMPARE_FUNC: 0x884d,\n  SRGB: 0x8c40,\n  SRGB8: 0x8c41,\n  SRGB8_ALPHA8: 0x8c43,\n  COMPARE_REF_TO_TEXTURE: 0x884e,\n  RGBA32F: 0x8814,\n  RGB32F: 0x8815,\n  RGBA16F: 0x881a,\n  RGB16F: 0x881b,\n  TEXTURE_2D_ARRAY: 0x8c1a,\n  TEXTURE_BINDING_2D_ARRAY: 0x8c1d,\n  R11F_G11F_B10F: 0x8c3a,\n  RGB9_E5: 0x8c3d,\n  RGBA32UI: 0x8d70,\n  RGB32UI: 0x8d71,\n  RGBA16UI: 0x8d76,\n  RGB16UI: 0x8d77,\n  RGBA8UI: 0x8d7c,\n  RGB8UI: 0x8d7d,\n  RGBA32I: 0x8d82,\n  RGB32I: 0x8d83,\n  RGBA16I: 0x8d88,\n  RGB16I: 0x8d89,\n  RGBA8I: 0x8d8e,\n  RGB8I: 0x8d8f,\n  RED_INTEGER: 0x8d94,\n  RGB_INTEGER: 0x8d98,\n  RGBA_INTEGER: 0x8d99,\n  R8: 0x8229,\n  RG8: 0x822b,\n  R16F: 0x822d,\n  R32F: 0x822e,\n  RG16F: 0x822f,\n  RG32F: 0x8230,\n  R8I: 0x8231,\n  R8UI: 0x8232,\n  R16I: 0x8233,\n  R16UI: 0x8234,\n  R32I: 0x8235,\n  R32UI: 0x8236,\n  RG8I: 0x8237,\n  RG8UI: 0x8238,\n  RG16I: 0x8239,\n  RG16UI: 0x823a,\n  RG32I: 0x823b,\n  RG32UI: 0x823c,\n  R8_SNORM: 0x8f94,\n  RG8_SNORM: 0x8f95,\n  RGB8_SNORM: 0x8f96,\n  RGBA8_SNORM: 0x8f97,\n  RGB10_A2UI: 0x906f,\n  TEXTURE_IMMUTABLE_FORMAT: 0x912f,\n  TEXTURE_IMMUTABLE_LEVELS: 0x82df,\n  UNSIGNED_INT_2_10_10_10_REV: 0x8368,\n  UNSIGNED_INT_10F_11F_11F_REV: 0x8c3b,\n  UNSIGNED_INT_5_9_9_9_REV: 0x8c3e,\n  FLOAT_32_UNSIGNED_INT_24_8_REV: 0x8dad,\n  UNSIGNED_INT_24_8: 0x84fa,\n  HALF_FLOAT: 0x140b,\n  RG: 0x8227,\n  RG_INTEGER: 0x8228,\n  INT_2_10_10_10_REV: 0x8d9f,\n  CURRENT_QUERY: 0x8865,\n  QUERY_RESULT: 0x8866,\n  QUERY_RESULT_AVAILABLE: 0x8867,\n  ANY_SAMPLES_PASSED: 0x8c2f,\n  ANY_SAMPLES_PASSED_CONSERVATIVE: 0x8d6a,\n  MAX_DRAW_BUFFERS: 0x8824,\n  DRAW_BUFFER0: 0x8825,\n  DRAW_BUFFER1: 0x8826,\n  DRAW_BUFFER2: 0x8827,\n  DRAW_BUFFER3: 0x8828,\n  DRAW_BUFFER4: 0x8829,\n  DRAW_BUFFER5: 0x882a,\n  DRAW_BUFFER6: 0x882b,\n  DRAW_BUFFER7: 0x882c,\n  DRAW_BUFFER8: 0x882d,\n  DRAW_BUFFER9: 0x882e,\n  DRAW_BUFFER10: 0x882f,\n  DRAW_BUFFER11: 0x8830,\n  DRAW_BUFFER12: 0x8831,\n  DRAW_BUFFER13: 0x8832,\n  DRAW_BUFFER14: 0x8833,\n  DRAW_BUFFER15: 0x8834,\n  MAX_COLOR_ATTACHMENTS: 0x8cdf,\n  COLOR_ATTACHMENT1: 0x8ce1,\n  COLOR_ATTACHMENT2: 0x8ce2,\n  COLOR_ATTACHMENT3: 0x8ce3,\n  COLOR_ATTACHMENT4: 0x8ce4,\n  COLOR_ATTACHMENT5: 0x8ce5,\n  COLOR_ATTACHMENT6: 0x8ce6,\n  COLOR_ATTACHMENT7: 0x8ce7,\n  COLOR_ATTACHMENT8: 0x8ce8,\n  COLOR_ATTACHMENT9: 0x8ce9,\n  COLOR_ATTACHMENT10: 0x8cea,\n  COLOR_ATTACHMENT11: 0x8ceb,\n  COLOR_ATTACHMENT12: 0x8cec,\n  COLOR_ATTACHMENT13: 0x8ced,\n  COLOR_ATTACHMENT14: 0x8cee,\n  COLOR_ATTACHMENT15: 0x8cef,\n  SAMPLER_3D: 0x8b5f,\n  SAMPLER_2D_SHADOW: 0x8b62,\n  SAMPLER_2D_ARRAY: 0x8dc1,\n  SAMPLER_2D_ARRAY_SHADOW: 0x8dc4,\n  SAMPLER_CUBE_SHADOW: 0x8dc5,\n  INT_SAMPLER_2D: 0x8dca,\n  INT_SAMPLER_3D: 0x8dcb,\n  INT_SAMPLER_CUBE: 0x8dcc,\n  INT_SAMPLER_2D_ARRAY: 0x8dcf,\n  UNSIGNED_INT_SAMPLER_2D: 0x8dd2,\n  UNSIGNED_INT_SAMPLER_3D: 0x8dd3,\n  UNSIGNED_INT_SAMPLER_CUBE: 0x8dd4,\n  UNSIGNED_INT_SAMPLER_2D_ARRAY: 0x8dd7,\n  MAX_SAMPLES: 0x8d57,\n  SAMPLER_BINDING: 0x8919,\n  PIXEL_PACK_BUFFER: 0x88eb,\n  PIXEL_UNPACK_BUFFER: 0x88ec,\n  PIXEL_PACK_BUFFER_BINDING: 0x88ed,\n  PIXEL_UNPACK_BUFFER_BINDING: 0x88ef,\n  COPY_READ_BUFFER: 0x8f36,\n  COPY_WRITE_BUFFER: 0x8f37,\n  COPY_READ_BUFFER_BINDING: 0x8f36,\n  COPY_WRITE_BUFFER_BINDING: 0x8f37,\n  FLOAT_MAT2x3: 0x8b65,\n  FLOAT_MAT2x4: 0x8b66,\n  FLOAT_MAT3x2: 0x8b67,\n  FLOAT_MAT3x4: 0x8b68,\n  FLOAT_MAT4x2: 0x8b69,\n  FLOAT_MAT4x3: 0x8b6a,\n  UNSIGNED_INT_VEC2: 0x8dc6,\n  UNSIGNED_INT_VEC3: 0x8dc7,\n  UNSIGNED_INT_VEC4: 0x8dc8,\n  UNSIGNED_NORMALIZED: 0x8c17,\n  SIGNED_NORMALIZED: 0x8f9c,\n  VERTEX_ATTRIB_ARRAY_INTEGER: 0x88fd,\n  VERTEX_ATTRIB_ARRAY_DIVISOR: 0x88fe,\n  TRANSFORM_FEEDBACK_BUFFER_MODE: 0x8c7f,\n  MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS: 0x8c80,\n  TRANSFORM_FEEDBACK_VARYINGS: 0x8c83,\n  TRANSFORM_FEEDBACK_BUFFER_START: 0x8c84,\n  TRANSFORM_FEEDBACK_BUFFER_SIZE: 0x8c85,\n  TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN: 0x8c88,\n  MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS: 0x8c8a,\n  MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS: 0x8c8b,\n  INTERLEAVED_ATTRIBS: 0x8c8c,\n  SEPARATE_ATTRIBS: 0x8c8d,\n  TRANSFORM_FEEDBACK_BUFFER: 0x8c8e,\n  TRANSFORM_FEEDBACK_BUFFER_BINDING: 0x8c8f,\n  TRANSFORM_FEEDBACK: 0x8e22,\n  TRANSFORM_FEEDBACK_PAUSED: 0x8e23,\n  TRANSFORM_FEEDBACK_ACTIVE: 0x8e24,\n  TRANSFORM_FEEDBACK_BINDING: 0x8e25,\n  FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING: 0x8210,\n  FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE: 0x8211,\n  FRAMEBUFFER_ATTACHMENT_RED_SIZE: 0x8212,\n  FRAMEBUFFER_ATTACHMENT_GREEN_SIZE: 0x8213,\n  FRAMEBUFFER_ATTACHMENT_BLUE_SIZE: 0x8214,\n  FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE: 0x8215,\n  FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE: 0x8216,\n  FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE: 0x8217,\n  FRAMEBUFFER_DEFAULT: 0x8218,\n  DEPTH24_STENCIL8: 0x88f0,\n  DRAW_FRAMEBUFFER_BINDING: 0x8ca6,\n  READ_FRAMEBUFFER_BINDING: 0x8caa,\n  RENDERBUFFER_SAMPLES: 0x8cab,\n  FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER: 0x8cd4,\n  FRAMEBUFFER_INCOMPLETE_MULTISAMPLE: 0x8d56,\n  UNIFORM_BUFFER: 0x8a11,\n  UNIFORM_BUFFER_BINDING: 0x8a28,\n  UNIFORM_BUFFER_START: 0x8a29,\n  UNIFORM_BUFFER_SIZE: 0x8a2a,\n  MAX_VERTEX_UNIFORM_BLOCKS: 0x8a2b,\n  MAX_FRAGMENT_UNIFORM_BLOCKS: 0x8a2d,\n  MAX_COMBINED_UNIFORM_BLOCKS: 0x8a2e,\n  MAX_UNIFORM_BUFFER_BINDINGS: 0x8a2f,\n  MAX_UNIFORM_BLOCK_SIZE: 0x8a30,\n  MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS: 0x8a31,\n  MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS: 0x8a33,\n  UNIFORM_BUFFER_OFFSET_ALIGNMENT: 0x8a34,\n  ACTIVE_UNIFORM_BLOCKS: 0x8a36,\n  UNIFORM_TYPE: 0x8a37,\n  UNIFORM_SIZE: 0x8a38,\n  UNIFORM_BLOCK_INDEX: 0x8a3a,\n  UNIFORM_OFFSET: 0x8a3b,\n  UNIFORM_ARRAY_STRIDE: 0x8a3c,\n  UNIFORM_MATRIX_STRIDE: 0x8a3d,\n  UNIFORM_IS_ROW_MAJOR: 0x8a3e,\n  UNIFORM_BLOCK_BINDING: 0x8a3f,\n  UNIFORM_BLOCK_DATA_SIZE: 0x8a40,\n  UNIFORM_BLOCK_ACTIVE_UNIFORMS: 0x8a42,\n  UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES: 0x8a43,\n  UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER: 0x8a44,\n  UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER: 0x8a46,\n  OBJECT_TYPE: 0x9112,\n  SYNC_CONDITION: 0x9113,\n  SYNC_STATUS: 0x9114,\n  SYNC_FLAGS: 0x9115,\n  SYNC_FENCE: 0x9116,\n  SYNC_GPU_COMMANDS_COMPLETE: 0x9117,\n  UNSIGNALED: 0x9118,\n  SIGNALED: 0x9119,\n  ALREADY_SIGNALED: 0x911a,\n  TIMEOUT_EXPIRED: 0x911b,\n  CONDITION_SATISFIED: 0x911c,\n  WAIT_FAILED: 0x911d,\n  SYNC_FLUSH_COMMANDS_BIT: 0x00000001,\n  COLOR: 0x1800,\n  DEPTH: 0x1801,\n  STENCIL: 0x1802,\n  MIN: 0x8007,\n  MAX: 0x8008,\n  DEPTH_COMPONENT24: 0x81a6,\n  STREAM_READ: 0x88e1,\n  STREAM_COPY: 0x88e2,\n  STATIC_READ: 0x88e5,\n  STATIC_COPY: 0x88e6,\n  DYNAMIC_READ: 0x88e9,\n  DYNAMIC_COPY: 0x88ea,\n  DEPTH_COMPONENT32F: 0x8cac,\n  DEPTH32F_STENCIL8: 0x8cad,\n  INVALID_INDEX: 0xffffffff,\n  TIMEOUT_IGNORED: -1,\n  MAX_CLIENT_WAIT_TIMEOUT_WEBGL: 0x9247,\n  VERTEX_ATTRIB_ARRAY_DIVISOR_ANGLE: 0x88fe,\n  UNMASKED_VENDOR_WEBGL: 0x9245,\n  UNMASKED_RENDERER_WEBGL: 0x9246,\n  MAX_TEXTURE_MAX_ANISOTROPY_EXT: 0x84ff,\n  TEXTURE_MAX_ANISOTROPY_EXT: 0x84fe,\n  COMPRESSED_RGB_S3TC_DXT1_EXT: 0x83f0,\n  COMPRESSED_RGBA_S3TC_DXT1_EXT: 0x83f1,\n  COMPRESSED_RGBA_S3TC_DXT3_EXT: 0x83f2,\n  COMPRESSED_RGBA_S3TC_DXT5_EXT: 0x83f3,\n  COMPRESSED_R11_EAC: 0x9270,\n  COMPRESSED_SIGNED_R11_EAC: 0x9271,\n  COMPRESSED_RG11_EAC: 0x9272,\n  COMPRESSED_SIGNED_RG11_EAC: 0x9273,\n  COMPRESSED_RGB8_ETC2: 0x9274,\n  COMPRESSED_RGBA8_ETC2_EAC: 0x9275,\n  COMPRESSED_SRGB8_ETC2: 0x9276,\n  COMPRESSED_SRGB8_ALPHA8_ETC2_EAC: 0x9277,\n  COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2: 0x9278,\n  COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2: 0x9279,\n  COMPRESSED_RGB_PVRTC_4BPPV1_IMG: 0x8c00,\n  COMPRESSED_RGBA_PVRTC_4BPPV1_IMG: 0x8c02,\n  COMPRESSED_RGB_PVRTC_2BPPV1_IMG: 0x8c01,\n  COMPRESSED_RGBA_PVRTC_2BPPV1_IMG: 0x8c03,\n  COMPRESSED_RGB_ETC1_WEBGL: 0x8d64,\n  COMPRESSED_RGB_ATC_WEBGL: 0x8c92,\n  COMPRESSED_RGBA_ATC_EXPLICIT_ALPHA_WEBGL: 0x8c92,\n  COMPRESSED_RGBA_ATC_INTERPOLATED_ALPHA_WEBGL: 0x87ee,\n  UNSIGNED_INT_24_8_WEBGL: 0x84fa,\n  HALF_FLOAT_OES: 0x8d61,\n  RGBA32F_EXT: 0x8814,\n  RGB32F_EXT: 0x8815,\n  FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE_EXT: 0x8211,\n  UNSIGNED_NORMALIZED_EXT: 0x8c17,\n  MIN_EXT: 0x8007,\n  MAX_EXT: 0x8008,\n  SRGB_EXT: 0x8c40,\n  SRGB_ALPHA_EXT: 0x8c42,\n  SRGB8_ALPHA8_EXT: 0x8c43,\n  FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING_EXT: 0x8210,\n  FRAGMENT_SHADER_DERIVATIVE_HINT_OES: 0x8b8b,\n  COLOR_ATTACHMENT0_WEBGL: 0x8ce0,\n  COLOR_ATTACHMENT1_WEBGL: 0x8ce1,\n  COLOR_ATTACHMENT2_WEBGL: 0x8ce2,\n  COLOR_ATTACHMENT3_WEBGL: 0x8ce3,\n  COLOR_ATTACHMENT4_WEBGL: 0x8ce4,\n  COLOR_ATTACHMENT5_WEBGL: 0x8ce5,\n  COLOR_ATTACHMENT6_WEBGL: 0x8ce6,\n  COLOR_ATTACHMENT7_WEBGL: 0x8ce7,\n  COLOR_ATTACHMENT8_WEBGL: 0x8ce8,\n  COLOR_ATTACHMENT9_WEBGL: 0x8ce9,\n  COLOR_ATTACHMENT10_WEBGL: 0x8cea,\n  COLOR_ATTACHMENT11_WEBGL: 0x8ceb,\n  COLOR_ATTACHMENT12_WEBGL: 0x8cec,\n  COLOR_ATTACHMENT13_WEBGL: 0x8ced,\n  COLOR_ATTACHMENT14_WEBGL: 0x8cee,\n  COLOR_ATTACHMENT15_WEBGL: 0x8cef,\n  DRAW_BUFFER0_WEBGL: 0x8825,\n  DRAW_BUFFER1_WEBGL: 0x8826,\n  DRAW_BUFFER2_WEBGL: 0x8827,\n  DRAW_BUFFER3_WEBGL: 0x8828,\n  DRAW_BUFFER4_WEBGL: 0x8829,\n  DRAW_BUFFER5_WEBGL: 0x882a,\n  DRAW_BUFFER6_WEBGL: 0x882b,\n  DRAW_BUFFER7_WEBGL: 0x882c,\n  DRAW_BUFFER8_WEBGL: 0x882d,\n  DRAW_BUFFER9_WEBGL: 0x882e,\n  DRAW_BUFFER10_WEBGL: 0x882f,\n  DRAW_BUFFER11_WEBGL: 0x8830,\n  DRAW_BUFFER12_WEBGL: 0x8831,\n  DRAW_BUFFER13_WEBGL: 0x8832,\n  DRAW_BUFFER14_WEBGL: 0x8833,\n  DRAW_BUFFER15_WEBGL: 0x8834,\n  MAX_COLOR_ATTACHMENTS_WEBGL: 0x8cdf,\n  MAX_DRAW_BUFFERS_WEBGL: 0x8824,\n  VERTEX_ARRAY_BINDING_OES: 0x85b5,\n  QUERY_COUNTER_BITS_EXT: 0x8864,\n  CURRENT_QUERY_EXT: 0x8865,\n  QUERY_RESULT_EXT: 0x8866,\n  QUERY_RESULT_AVAILABLE_EXT: 0x8867,\n  TIME_ELAPSED_EXT: 0x88bf,\n  TIMESTAMP_EXT: 0x8e28,\n  GPU_DISJOINT_EXT: 0x8fbb\n};\n//# sourceMappingURL=index.js.map","import Geometry from '../geometry/geometry';\nimport { uid } from '@luma.gl/webgl';\nconst INDEX_OFFSETS = {\n  x: [2, 0, 1],\n  y: [0, 1, 2],\n  z: [1, 2, 0]\n};\nexport default class TruncatedConeGeometry extends Geometry {\n  constructor() {\n    let props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n    const {\n      id = uid('truncated-code-geometry')\n    } = props;\n    const {\n      indices,\n      attributes\n    } = tesselateTruncatedCone(props);\n    super({ ...props,\n      id,\n      indices,\n      attributes: { ...attributes,\n        ...props.attributes\n      }\n    });\n  }\n\n}\n\nfunction tesselateTruncatedCone(props) {\n  const {\n    bottomRadius = 0,\n    topRadius = 0,\n    height = 1,\n    nradial = 10,\n    nvertical = 10,\n    verticalAxis = 'y',\n    topCap = false,\n    bottomCap = false\n  } = props;\n  const extra = (topCap ? 2 : 0) + (bottomCap ? 2 : 0);\n  const numVertices = (nradial + 1) * (nvertical + 1 + extra);\n  const slant = Math.atan2(bottomRadius - topRadius, height);\n  const msin = Math.sin;\n  const mcos = Math.cos;\n  const mpi = Math.PI;\n  const cosSlant = mcos(slant);\n  const sinSlant = msin(slant);\n  const start = topCap ? -2 : 0;\n  const end = nvertical + (bottomCap ? 2 : 0);\n  const vertsAroundEdge = nradial + 1;\n  const indices = new Uint16Array(nradial * (nvertical + extra) * 6);\n  const indexOffset = INDEX_OFFSETS[verticalAxis];\n  const positions = new Float32Array(numVertices * 3);\n  const normals = new Float32Array(numVertices * 3);\n  const texCoords = new Float32Array(numVertices * 2);\n  let i3 = 0;\n  let i2 = 0;\n\n  for (let i = start; i <= end; i++) {\n    let v = i / nvertical;\n    let y = height * v;\n    let ringRadius;\n\n    if (i < 0) {\n      y = 0;\n      v = 1;\n      ringRadius = bottomRadius;\n    } else if (i > nvertical) {\n      y = height;\n      v = 1;\n      ringRadius = topRadius;\n    } else {\n      ringRadius = bottomRadius + (topRadius - bottomRadius) * (i / nvertical);\n    }\n\n    if (i === -2 || i === nvertical + 2) {\n      ringRadius = 0;\n      v = 0;\n    }\n\n    y -= height / 2;\n\n    for (let j = 0; j < vertsAroundEdge; j++) {\n      const sin = msin(j * mpi * 2 / nradial);\n      const cos = mcos(j * mpi * 2 / nradial);\n      positions[i3 + indexOffset[0]] = sin * ringRadius;\n      positions[i3 + indexOffset[1]] = y;\n      positions[i3 + indexOffset[2]] = cos * ringRadius;\n      normals[i3 + indexOffset[0]] = i < 0 || i > nvertical ? 0 : sin * cosSlant;\n      normals[i3 + indexOffset[1]] = i < 0 ? -1 : i > nvertical ? 1 : sinSlant;\n      normals[i3 + indexOffset[2]] = i < 0 || i > nvertical ? 0 : cos * cosSlant;\n      texCoords[i2 + 0] = j / nradial;\n      texCoords[i2 + 1] = v;\n      i2 += 2;\n      i3 += 3;\n    }\n  }\n\n  for (let i = 0; i < nvertical + extra; i++) {\n    for (let j = 0; j < nradial; j++) {\n      const index = (i * nradial + j) * 6;\n      indices[index + 0] = vertsAroundEdge * (i + 0) + 0 + j;\n      indices[index + 1] = vertsAroundEdge * (i + 0) + 1 + j;\n      indices[index + 2] = vertsAroundEdge * (i + 1) + 1 + j;\n      indices[index + 3] = vertsAroundEdge * (i + 0) + 0 + j;\n      indices[index + 4] = vertsAroundEdge * (i + 1) + 1 + j;\n      indices[index + 5] = vertsAroundEdge * (i + 1) + 0 + j;\n    }\n  }\n\n  return {\n    indices,\n    attributes: {\n      POSITION: {\n        size: 3,\n        value: positions\n      },\n      NORMAL: {\n        size: 3,\n        value: normals\n      },\n      TEXCOORD_0: {\n        size: 2,\n        value: texCoords\n      }\n    }\n  };\n}\n//# sourceMappingURL=truncated-cone-geometry.js.map","import TruncatedConeGeometry from './truncated-cone-geometry';\nimport { uid } from '@luma.gl/webgl';\nexport default class ConeGeometry extends TruncatedConeGeometry {\n  constructor() {\n    let props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n    const {\n      id = uid('cone-geometry'),\n      radius = 1,\n      cap = true\n    } = props;\n    super({ ...props,\n      id,\n      topRadius: 0,\n      topCap: Boolean(cap),\n      bottomCap: Boolean(cap),\n      bottomRadius: radius\n    });\n  }\n\n}\n//# sourceMappingURL=cone-geometry.js.map","import TruncatedConeGeometry from './truncated-cone-geometry';\nimport { uid } from '@luma.gl/webgl';\nexport default class CylinderGeometry extends TruncatedConeGeometry {\n  constructor() {\n    let props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n    const {\n      id = uid('cylinder-geometry'),\n      radius = 1\n    } = props;\n    super({ ...props,\n      id,\n      bottomRadius: radius,\n      topRadius: radius\n    });\n  }\n\n}\n//# sourceMappingURL=cylinder-geometry.js.map","import { Vector3 } from '@math.gl/core';\nimport Geometry from '../geometry/geometry';\nimport { uid } from '@luma.gl/webgl';\nconst ICO_POSITIONS = [-1, 0, 0, 0, 1, 0, 0, 0, -1, 0, 0, 1, 0, -1, 0, 1, 0, 0];\nconst ICO_INDICES = [3, 4, 5, 3, 5, 1, 3, 1, 0, 3, 0, 4, 4, 0, 2, 4, 2, 5, 2, 0, 1, 5, 2, 1];\nexport default class IcoSphereGeometry extends Geometry {\n  constructor() {\n    let props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n    const {\n      id = uid('ico-sphere-geometry')\n    } = props;\n    const {\n      indices,\n      attributes\n    } = tesselateIcosaHedron(props);\n    super({ ...props,\n      id,\n      indices,\n      attributes: { ...attributes,\n        ...props.attributes\n      }\n    });\n  }\n\n}\n\nfunction tesselateIcosaHedron(props) {\n  const {\n    iterations = 0\n  } = props;\n  const PI = Math.PI;\n  const PI2 = PI * 2;\n  const positions = [...ICO_POSITIONS];\n  let indices = [...ICO_INDICES];\n  positions.push();\n  indices.push();\n\n  const getMiddlePoint = (() => {\n    const pointMemo = {};\n    return (i1, i2) => {\n      i1 *= 3;\n      i2 *= 3;\n      const mini = i1 < i2 ? i1 : i2;\n      const maxi = i1 > i2 ? i1 : i2;\n      const key = \"\".concat(mini, \"|\").concat(maxi);\n\n      if (key in pointMemo) {\n        return pointMemo[key];\n      }\n\n      const x1 = positions[i1];\n      const y1 = positions[i1 + 1];\n      const z1 = positions[i1 + 2];\n      const x2 = positions[i2];\n      const y2 = positions[i2 + 1];\n      const z2 = positions[i2 + 2];\n      let xm = (x1 + x2) / 2;\n      let ym = (y1 + y2) / 2;\n      let zm = (z1 + z2) / 2;\n      const len = Math.sqrt(xm * xm + ym * ym + zm * zm);\n      xm /= len;\n      ym /= len;\n      zm /= len;\n      positions.push(xm, ym, zm);\n      return pointMemo[key] = positions.length / 3 - 1;\n    };\n  })();\n\n  for (let i = 0; i < iterations; i++) {\n    const indices2 = [];\n\n    for (let j = 0; j < indices.length; j += 3) {\n      const a = getMiddlePoint(indices[j + 0], indices[j + 1]);\n      const b = getMiddlePoint(indices[j + 1], indices[j + 2]);\n      const c = getMiddlePoint(indices[j + 2], indices[j + 0]);\n      indices2.push(c, indices[j + 0], a, a, indices[j + 1], b, b, indices[j + 2], c, a, b, c);\n    }\n\n    indices = indices2;\n  }\n\n  const normals = new Array(positions.length);\n  const texCoords = new Array(positions.length / 3 * 2);\n  const l = indices.length;\n\n  for (let i = l - 3; i >= 0; i -= 3) {\n    const i1 = indices[i + 0];\n    const i2 = indices[i + 1];\n    const i3 = indices[i + 2];\n    const in1 = i1 * 3;\n    const in2 = i2 * 3;\n    const in3 = i3 * 3;\n    const iu1 = i1 * 2;\n    const iu2 = i2 * 2;\n    const iu3 = i3 * 2;\n    const x1 = positions[in1 + 0];\n    const y1 = positions[in1 + 1];\n    const z1 = positions[in1 + 2];\n    const theta1 = Math.acos(z1 / Math.sqrt(x1 * x1 + y1 * y1 + z1 * z1));\n    const phi1 = Math.atan2(y1, x1) + PI;\n    const v1 = theta1 / PI;\n    const u1 = 1 - phi1 / PI2;\n    const x2 = positions[in2 + 0];\n    const y2 = positions[in2 + 1];\n    const z2 = positions[in2 + 2];\n    const theta2 = Math.acos(z2 / Math.sqrt(x2 * x2 + y2 * y2 + z2 * z2));\n    const phi2 = Math.atan2(y2, x2) + PI;\n    const v2 = theta2 / PI;\n    const u2 = 1 - phi2 / PI2;\n    const x3 = positions[in3 + 0];\n    const y3 = positions[in3 + 1];\n    const z3 = positions[in3 + 2];\n    const theta3 = Math.acos(z3 / Math.sqrt(x3 * x3 + y3 * y3 + z3 * z3));\n    const phi3 = Math.atan2(y3, x3) + PI;\n    const v3 = theta3 / PI;\n    const u3 = 1 - phi3 / PI2;\n    const vec1 = [x3 - x2, y3 - y2, z3 - z2];\n    const vec2 = [x1 - x2, y1 - y2, z1 - z2];\n    const normal = new Vector3(vec1).cross(vec2).normalize();\n    let newIndex;\n\n    if ((u1 === 0 || u2 === 0 || u3 === 0) && (u1 === 0 || u1 > 0.5) && (u2 === 0 || u2 > 0.5) && (u3 === 0 || u3 > 0.5)) {\n      positions.push(positions[in1 + 0], positions[in1 + 1], positions[in1 + 2]);\n      newIndex = positions.length / 3 - 1;\n      indices.push(newIndex);\n      texCoords[newIndex * 2 + 0] = 1;\n      texCoords[newIndex * 2 + 1] = v1;\n      normals[newIndex * 3 + 0] = normal.x;\n      normals[newIndex * 3 + 1] = normal.y;\n      normals[newIndex * 3 + 2] = normal.z;\n      positions.push(positions[in2 + 0], positions[in2 + 1], positions[in2 + 2]);\n      newIndex = positions.length / 3 - 1;\n      indices.push(newIndex);\n      texCoords[newIndex * 2 + 0] = 1;\n      texCoords[newIndex * 2 + 1] = v2;\n      normals[newIndex * 3 + 0] = normal.x;\n      normals[newIndex * 3 + 1] = normal.y;\n      normals[newIndex * 3 + 2] = normal.z;\n      positions.push(positions[in3 + 0], positions[in3 + 1], positions[in3 + 2]);\n      newIndex = positions.length / 3 - 1;\n      indices.push(newIndex);\n      texCoords[newIndex * 2 + 0] = 1;\n      texCoords[newIndex * 2 + 1] = v3;\n      normals[newIndex * 3 + 0] = normal.x;\n      normals[newIndex * 3 + 1] = normal.y;\n      normals[newIndex * 3 + 2] = normal.z;\n    }\n\n    normals[in1 + 0] = normals[in2 + 0] = normals[in3 + 0] = normal.x;\n    normals[in1 + 1] = normals[in2 + 1] = normals[in3 + 1] = normal.y;\n    normals[in1 + 2] = normals[in2 + 2] = normals[in3 + 2] = normal.z;\n    texCoords[iu1 + 0] = u1;\n    texCoords[iu1 + 1] = v1;\n    texCoords[iu2 + 0] = u2;\n    texCoords[iu2 + 1] = v2;\n    texCoords[iu3 + 0] = u3;\n    texCoords[iu3 + 1] = v3;\n  }\n\n  return {\n    indices: {\n      size: 1,\n      value: new Uint16Array(indices)\n    },\n    attributes: {\n      POSITION: {\n        size: 3,\n        value: new Float32Array(positions)\n      },\n      NORMAL: {\n        size: 3,\n        value: new Float32Array(normals)\n      },\n      TEXCOORD_0: {\n        size: 2,\n        value: new Float32Array(texCoords)\n      }\n    }\n  };\n}\n//# sourceMappingURL=ico-sphere-geometry.js.map","import Geometry from '../geometry/geometry';\nimport { unpackIndexedGeometry } from '../geometry/geometry-utils';\nimport { uid } from '@luma.gl/webgl';\nexport default class PlaneGeometry extends Geometry {\n  constructor() {\n    let props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n    const {\n      id = uid('plane-geometry')\n    } = props;\n    const {\n      indices,\n      attributes\n    } = tesselatePlane(props);\n    super({ ...props,\n      id,\n      indices,\n      attributes: { ...attributes,\n        ...props.attributes\n      }\n    });\n  }\n\n}\n\nfunction tesselatePlane(props) {\n  const {\n    type = 'x,y',\n    offset = 0,\n    flipCull = false,\n    unpack = false\n  } = props;\n  const coords = type.split(',');\n  let c1len = props[\"\".concat(coords[0], \"len\")] || 1;\n  const c2len = props[\"\".concat(coords[1], \"len\")] || 1;\n  const subdivisions1 = props[\"n\".concat(coords[0])] || 1;\n  const subdivisions2 = props[\"n\".concat(coords[1])] || 1;\n  const numVertices = (subdivisions1 + 1) * (subdivisions2 + 1);\n  const positions = new Float32Array(numVertices * 3);\n  const normals = new Float32Array(numVertices * 3);\n  const texCoords = new Float32Array(numVertices * 2);\n\n  if (flipCull) {\n    c1len = -c1len;\n  }\n\n  let i2 = 0;\n  let i3 = 0;\n\n  for (let z = 0; z <= subdivisions2; z++) {\n    for (let x = 0; x <= subdivisions1; x++) {\n      const u = x / subdivisions1;\n      const v = z / subdivisions2;\n      texCoords[i2 + 0] = flipCull ? 1 - u : u;\n      texCoords[i2 + 1] = v;\n\n      switch (type) {\n        case 'x,y':\n          positions[i3 + 0] = c1len * u - c1len * 0.5;\n          positions[i3 + 1] = c2len * v - c2len * 0.5;\n          positions[i3 + 2] = offset;\n          normals[i3 + 0] = 0;\n          normals[i3 + 1] = 0;\n          normals[i3 + 2] = flipCull ? 1 : -1;\n          break;\n\n        case 'x,z':\n          positions[i3 + 0] = c1len * u - c1len * 0.5;\n          positions[i3 + 1] = offset;\n          positions[i3 + 2] = c2len * v - c2len * 0.5;\n          normals[i3 + 0] = 0;\n          normals[i3 + 1] = flipCull ? 1 : -1;\n          normals[i3 + 2] = 0;\n          break;\n\n        case 'y,z':\n          positions[i3 + 0] = offset;\n          positions[i3 + 1] = c1len * u - c1len * 0.5;\n          positions[i3 + 2] = c2len * v - c2len * 0.5;\n          normals[i3 + 0] = flipCull ? 1 : -1;\n          normals[i3 + 1] = 0;\n          normals[i3 + 2] = 0;\n          break;\n\n        default:\n          throw new Error('PlaneGeometry: unknown type');\n      }\n\n      i2 += 2;\n      i3 += 3;\n    }\n  }\n\n  const numVertsAcross = subdivisions1 + 1;\n  const indices = new Uint16Array(subdivisions1 * subdivisions2 * 6);\n\n  for (let z = 0; z < subdivisions2; z++) {\n    for (let x = 0; x < subdivisions1; x++) {\n      const index = (z * subdivisions1 + x) * 6;\n      indices[index + 0] = (z + 0) * numVertsAcross + x;\n      indices[index + 1] = (z + 1) * numVertsAcross + x;\n      indices[index + 2] = (z + 0) * numVertsAcross + x + 1;\n      indices[index + 3] = (z + 1) * numVertsAcross + x;\n      indices[index + 4] = (z + 1) * numVertsAcross + x + 1;\n      indices[index + 5] = (z + 0) * numVertsAcross + x + 1;\n    }\n  }\n\n  const geometry = {\n    indices: {\n      size: 1,\n      value: indices\n    },\n    attributes: {\n      POSITION: {\n        size: 3,\n        value: positions\n      },\n      NORMAL: {\n        size: 3,\n        value: normals\n      },\n      TEXCOORD_0: {\n        size: 2,\n        value: texCoords\n      }\n    }\n  };\n  return unpack ? unpackIndexedGeometry(geometry) : geometry;\n}\n//# sourceMappingURL=plane-geometry.js.map","export function unpackIndexedGeometry(geometry) {\n  const {\n    indices,\n    attributes\n  } = geometry;\n\n  if (!indices) {\n    return geometry;\n  }\n\n  const vertexCount = indices.value.length;\n  const unpackedAttributes = {};\n\n  for (const attributeName in attributes) {\n    const attribute = attributes[attributeName];\n    const {\n      constant,\n      value,\n      size\n    } = attribute;\n\n    if (constant || !size) {\n      continue;\n    }\n\n    const unpackedValue = new value.constructor(vertexCount * size);\n\n    for (let x = 0; x < vertexCount; ++x) {\n      const index = indices.value[x];\n\n      for (let i = 0; i < size; i++) {\n        unpackedValue[x * size + i] = value[index * size + i];\n      }\n    }\n\n    unpackedAttributes[attributeName] = {\n      size,\n      value: unpackedValue\n    };\n  }\n\n  return {\n    attributes: Object.assign({}, attributes, unpackedAttributes)\n  };\n}\n//# sourceMappingURL=geometry-utils.js.map","import Geometry from '../geometry/geometry';\nimport { uid } from '@luma.gl/webgl';\nexport default class SphereGeometry extends Geometry {\n  constructor() {\n    let props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n    const {\n      id = uid('sphere-geometry')\n    } = props;\n    const {\n      indices,\n      attributes\n    } = tesselateSphere(props);\n    super({ ...props,\n      id,\n      indices,\n      attributes: { ...attributes,\n        ...props.attributes\n      }\n    });\n  }\n\n}\n\nfunction tesselateSphere(props) {\n  const {\n    nlat = 10,\n    nlong = 10\n  } = props;\n  let {\n    radius = 1\n  } = props;\n  const startLat = 0;\n  const endLat = Math.PI;\n  const latRange = endLat - startLat;\n  const startLong = 0;\n  const endLong = 2 * Math.PI;\n  const longRange = endLong - startLong;\n  const numVertices = (nlat + 1) * (nlong + 1);\n\n  if (typeof radius === 'number') {\n    const value = radius;\n\n    radius = (n1, n2, n3, u, v) => value;\n  }\n\n  const positions = new Float32Array(numVertices * 3);\n  const normals = new Float32Array(numVertices * 3);\n  const texCoords = new Float32Array(numVertices * 2);\n  const IndexType = numVertices > 0xffff ? Uint32Array : Uint16Array;\n  const indices = new IndexType(nlat * nlong * 6);\n\n  for (let y = 0; y <= nlat; y++) {\n    for (let x = 0; x <= nlong; x++) {\n      const u = x / nlong;\n      const v = y / nlat;\n      const index = x + y * (nlong + 1);\n      const i2 = index * 2;\n      const i3 = index * 3;\n      const theta = longRange * u;\n      const phi = latRange * v;\n      const sinTheta = Math.sin(theta);\n      const cosTheta = Math.cos(theta);\n      const sinPhi = Math.sin(phi);\n      const cosPhi = Math.cos(phi);\n      const ux = cosTheta * sinPhi;\n      const uy = cosPhi;\n      const uz = sinTheta * sinPhi;\n      const r = radius(ux, uy, uz, u, v);\n      positions[i3 + 0] = r * ux;\n      positions[i3 + 1] = r * uy;\n      positions[i3 + 2] = r * uz;\n      normals[i3 + 0] = ux;\n      normals[i3 + 1] = uy;\n      normals[i3 + 2] = uz;\n      texCoords[i2 + 0] = u;\n      texCoords[i2 + 1] = 1 - v;\n    }\n  }\n\n  const numVertsAround = nlong + 1;\n\n  for (let x = 0; x < nlong; x++) {\n    for (let y = 0; y < nlat; y++) {\n      const index = (x * nlat + y) * 6;\n      indices[index + 0] = y * numVertsAround + x;\n      indices[index + 1] = y * numVertsAround + x + 1;\n      indices[index + 2] = (y + 1) * numVertsAround + x;\n      indices[index + 3] = (y + 1) * numVertsAround + x;\n      indices[index + 4] = y * numVertsAround + x + 1;\n      indices[index + 5] = (y + 1) * numVertsAround + x + 1;\n    }\n  }\n\n  return {\n    indices: {\n      size: 1,\n      value: indices\n    },\n    attributes: {\n      POSITION: {\n        size: 3,\n        value: positions\n      },\n      NORMAL: {\n        size: 3,\n        value: normals\n      },\n      TEXCOORD_0: {\n        size: 2,\n        value: texCoords\n      }\n    }\n  };\n}\n//# sourceMappingURL=sphere-geometry.js.map","export function fp64ify(a) {\n  let out = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n  let startIndex = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;\n  const hiPart = Math.fround(a);\n  const loPart = a - hiPart;\n  out[startIndex] = hiPart;\n  out[startIndex + 1] = loPart;\n  return out;\n}\nexport function fp64LowPart(a) {\n  return a - Math.fround(a);\n}\nexport function fp64ifyMatrix4(matrix) {\n  const matrixFP64 = new Float32Array(32);\n\n  for (let i = 0; i < 4; ++i) {\n    for (let j = 0; j < 4; ++j) {\n      const index = i * 4 + j;\n      fp64ify(matrix[j * 4 + i], matrixFP64, index * 2);\n    }\n  }\n\n  return matrixFP64;\n}\n//# sourceMappingURL=fp64-utils.js.map","export default \"uniform float ONE;\\nvec2 split(float a) {\\n  const float SPLIT = 4097.0;\\n  float t = a * SPLIT;\\n#if defined(LUMA_FP64_CODE_ELIMINATION_WORKAROUND)\\n  float a_hi = t * ONE - (t - a);\\n  float a_lo = a * ONE - a_hi;\\n#else\\n  float a_hi = t - (t - a);\\n  float a_lo = a - a_hi;\\n#endif\\n  return vec2(a_hi, a_lo);\\n}\\nvec2 split2(vec2 a) {\\n  vec2 b = split(a.x);\\n  b.y += a.y;\\n  return b;\\n}\\nvec2 quickTwoSum(float a, float b) {\\n#if defined(LUMA_FP64_CODE_ELIMINATION_WORKAROUND)\\n  float sum = (a + b) * ONE;\\n  float err = b - (sum - a) * ONE;\\n#else\\n  float sum = a + b;\\n  float err = b - (sum - a);\\n#endif\\n  return vec2(sum, err);\\n}\\nvec2 twoSum(float a, float b) {\\n  float s = (a + b);\\n#if defined(LUMA_FP64_CODE_ELIMINATION_WORKAROUND)\\n  float v = (s * ONE - a) * ONE;\\n  float err = (a - (s - v) * ONE) * ONE * ONE * ONE + (b - v);\\n#else\\n  float v = s - a;\\n  float err = (a - (s - v)) + (b - v);\\n#endif\\n  return vec2(s, err);\\n}\\n\\nvec2 twoSub(float a, float b) {\\n  float s = (a - b);\\n#if defined(LUMA_FP64_CODE_ELIMINATION_WORKAROUND)\\n  float v = (s * ONE - a) * ONE;\\n  float err = (a - (s - v) * ONE) * ONE * ONE * ONE - (b + v);\\n#else\\n  float v = s - a;\\n  float err = (a - (s - v)) - (b + v);\\n#endif\\n  return vec2(s, err);\\n}\\n\\nvec2 twoSqr(float a) {\\n  float prod = a * a;\\n  vec2 a_fp64 = split(a);\\n#if defined(LUMA_FP64_CODE_ELIMINATION_WORKAROUND)\\n  float err = ((a_fp64.x * a_fp64.x - prod) * ONE + 2.0 * a_fp64.x *\\n    a_fp64.y * ONE * ONE) + a_fp64.y * a_fp64.y * ONE * ONE * ONE;\\n#else\\n  float err = ((a_fp64.x * a_fp64.x - prod) + 2.0 * a_fp64.x * a_fp64.y) + a_fp64.y * a_fp64.y;\\n#endif\\n  return vec2(prod, err);\\n}\\n\\nvec2 twoProd(float a, float b) {\\n  float prod = a * b;\\n  vec2 a_fp64 = split(a);\\n  vec2 b_fp64 = split(b);\\n  float err = ((a_fp64.x * b_fp64.x - prod) + a_fp64.x * b_fp64.y +\\n    a_fp64.y * b_fp64.x) + a_fp64.y * b_fp64.y;\\n  return vec2(prod, err);\\n}\\n\\nvec2 sum_fp64(vec2 a, vec2 b) {\\n  vec2 s, t;\\n  s = twoSum(a.x, b.x);\\n  t = twoSum(a.y, b.y);\\n  s.y += t.x;\\n  s = quickTwoSum(s.x, s.y);\\n  s.y += t.y;\\n  s = quickTwoSum(s.x, s.y);\\n  return s;\\n}\\n\\nvec2 sub_fp64(vec2 a, vec2 b) {\\n  vec2 s, t;\\n  s = twoSub(a.x, b.x);\\n  t = twoSub(a.y, b.y);\\n  s.y += t.x;\\n  s = quickTwoSum(s.x, s.y);\\n  s.y += t.y;\\n  s = quickTwoSum(s.x, s.y);\\n  return s;\\n}\\n\\nvec2 mul_fp64(vec2 a, vec2 b) {\\n  vec2 prod = twoProd(a.x, b.x);\\n  prod.y += a.x * b.y;\\n#if defined(LUMA_FP64_HIGH_BITS_OVERFLOW_WORKAROUND)\\n  prod = split2(prod);\\n#endif\\n  prod = quickTwoSum(prod.x, prod.y);\\n  prod.y += a.y * b.x;\\n#if defined(LUMA_FP64_HIGH_BITS_OVERFLOW_WORKAROUND)\\n  prod = split2(prod);\\n#endif\\n  prod = quickTwoSum(prod.x, prod.y);\\n  return prod;\\n}\\n\\nvec2 div_fp64(vec2 a, vec2 b) {\\n  float xn = 1.0 / b.x;\\n#if defined(LUMA_FP64_HIGH_BITS_OVERFLOW_WORKAROUND)\\n  vec2 yn = mul_fp64(a, vec2(xn, 0));\\n#else\\n  vec2 yn = a * xn;\\n#endif\\n  float diff = (sub_fp64(a, mul_fp64(b, yn))).x;\\n  vec2 prod = twoProd(xn, diff);\\n  return sum_fp64(yn, prod);\\n}\\n\\nvec2 sqrt_fp64(vec2 a) {\\n  if (a.x == 0.0 && a.y == 0.0) return vec2(0.0, 0.0);\\n  if (a.x < 0.0) return vec2(0.0 / 0.0, 0.0 / 0.0);\\n\\n  float x = 1.0 / sqrt(a.x);\\n  float yn = a.x * x;\\n#if defined(LUMA_FP64_CODE_ELIMINATION_WORKAROUND)\\n  vec2 yn_sqr = twoSqr(yn) * ONE;\\n#else\\n  vec2 yn_sqr = twoSqr(yn);\\n#endif\\n  float diff = sub_fp64(a, yn_sqr).x;\\n  vec2 prod = twoProd(x * 0.5, diff);\\n#if defined(LUMA_FP64_HIGH_BITS_OVERFLOW_WORKAROUND)\\n  return sum_fp64(split(yn), prod);\\n#else\\n  return sum_fp64(vec2(yn, 0.0), prod);\\n#endif\\n}\\n\";\n//# sourceMappingURL=fp64-arithmetic.glsl.js.map","import { fp64ify, fp64LowPart, fp64ifyMatrix4 } from './fp64-utils';\nimport fp64arithmeticShader from './fp64-arithmetic.glsl';\nimport fp64functionShader from './fp64-functions.glsl';\nconst CONST_UNIFORMS = {\n  ONE: 1.0\n};\nexport { fp64ify, fp64LowPart, fp64ifyMatrix4 };\n\nfunction getUniforms() {\n  return CONST_UNIFORMS;\n}\n\nexport const fp64arithmetic = {\n  name: 'fp64-arithmetic',\n  vs: fp64arithmeticShader,\n  fs: null,\n  getUniforms,\n  fp64ify,\n  fp64LowPart,\n  fp64ifyMatrix4\n};\nexport const fp64 = {\n  name: 'fp64',\n  vs: fp64functionShader,\n  fs: null,\n  dependencies: [fp64arithmetic],\n  fp64ify,\n  fp64LowPart,\n  fp64ifyMatrix4\n};\n//# sourceMappingURL=fp64.js.map","export default \"const vec2 E_FP64 = vec2(2.7182817459106445e+00, 8.254840366817007e-08);\\nconst vec2 LOG2_FP64 = vec2(0.6931471824645996e+00, -1.9046542121259336e-09);\\nconst vec2 PI_FP64 = vec2(3.1415927410125732, -8.742278012618954e-8);\\nconst vec2 TWO_PI_FP64 = vec2(6.2831854820251465, -1.7484556025237907e-7);\\nconst vec2 PI_2_FP64 = vec2(1.5707963705062866, -4.371139006309477e-8);\\nconst vec2 PI_4_FP64 = vec2(0.7853981852531433, -2.1855695031547384e-8);\\nconst vec2 PI_16_FP64 = vec2(0.19634954631328583, -5.463923757886846e-9);\\nconst vec2 PI_16_2_FP64 = vec2(0.39269909262657166, -1.0927847515773692e-8);\\nconst vec2 PI_16_3_FP64 = vec2(0.5890486240386963, -1.4906100798128818e-9);\\nconst vec2 PI_180_FP64 = vec2(0.01745329238474369, 1.3519960498364902e-10);\\n\\nconst vec2 SIN_TABLE_0_FP64 = vec2(0.19509032368659973, -1.6704714833615242e-9);\\nconst vec2 SIN_TABLE_1_FP64 = vec2(0.3826834261417389, 6.22335089017767e-9);\\nconst vec2 SIN_TABLE_2_FP64 = vec2(0.5555702447891235, -1.1769521357507529e-8);\\nconst vec2 SIN_TABLE_3_FP64 = vec2(0.7071067690849304, 1.2101617041793133e-8);\\n\\nconst vec2 COS_TABLE_0_FP64 = vec2(0.9807852506637573, 2.9739473106360492e-8);\\nconst vec2 COS_TABLE_1_FP64 = vec2(0.9238795042037964, 2.8307490351764386e-8);\\nconst vec2 COS_TABLE_2_FP64 = vec2(0.8314695954322815, 1.6870263741530778e-8);\\nconst vec2 COS_TABLE_3_FP64 = vec2(0.7071067690849304, 1.2101617152815436e-8);\\n\\nconst vec2 INVERSE_FACTORIAL_3_FP64 = vec2(1.666666716337204e-01, -4.967053879312289e-09);\\nconst vec2 INVERSE_FACTORIAL_4_FP64 = vec2(4.16666679084301e-02, -1.2417634698280722e-09);\\nconst vec2 INVERSE_FACTORIAL_5_FP64 = vec2(8.333333767950535e-03, -4.34617203337595e-10);\\nconst vec2 INVERSE_FACTORIAL_6_FP64 = vec2(1.3888889225199819e-03, -3.3631094437103215e-11);\\nconst vec2 INVERSE_FACTORIAL_7_FP64 = vec2(1.9841270113829523e-04,  -2.725596874933456e-12);\\nconst vec2 INVERSE_FACTORIAL_8_FP64 = vec2(2.4801587642286904e-05, -3.406996025904184e-13);\\nconst vec2 INVERSE_FACTORIAL_9_FP64 = vec2(2.75573188446287533e-06, 3.7935713937038186e-14);\\nconst vec2 INVERSE_FACTORIAL_10_FP64 = vec2(2.755731998149713e-07, -7.575112367869873e-15);\\n\\nfloat nint(float d) {\\n    if (d == floor(d)) return d;\\n    return floor(d + 0.5);\\n}\\n\\nvec2 nint_fp64(vec2 a) {\\n    float hi = nint(a.x);\\n    float lo;\\n    vec2 tmp;\\n    if (hi == a.x) {\\n        lo = nint(a.y);\\n        tmp = quickTwoSum(hi, lo);\\n    } else {\\n        lo = 0.0;\\n        if (abs(hi - a.x) == 0.5 && a.y < 0.0) {\\n            hi -= 1.0;\\n        }\\n        tmp = vec2(hi, lo);\\n    }\\n    return tmp;\\n}\\n\\nvec2 exp_fp64(vec2 a) {\\n\\n  const int k_power = 4;\\n  const float k = 16.0;\\n\\n  const float inv_k = 1.0 / k;\\n\\n  if (a.x <= -88.0) return vec2(0.0, 0.0);\\n  if (a.x >= 88.0) return vec2(1.0 / 0.0, 1.0 / 0.0);\\n  if (a.x == 0.0 && a.y == 0.0) return vec2(1.0, 0.0);\\n  if (a.x == 1.0 && a.y == 0.0) return E_FP64;\\n\\n  float m = floor(a.x / LOG2_FP64.x + 0.5);\\n  vec2 r = sub_fp64(a, mul_fp64(LOG2_FP64, vec2(m, 0.0))) * inv_k;\\n  vec2 s, t, p;\\n\\n  p = mul_fp64(r, r);\\n  s = sum_fp64(r, p * 0.5);\\n  p = mul_fp64(p, r);\\n  t = mul_fp64(p, INVERSE_FACTORIAL_3_FP64);\\n\\n  s = sum_fp64(s, t);\\n  p = mul_fp64(p, r);\\n  t = mul_fp64(p, INVERSE_FACTORIAL_4_FP64);\\n\\n  s = sum_fp64(s, t);\\n  p = mul_fp64(p, r);\\n  t = mul_fp64(p, INVERSE_FACTORIAL_5_FP64);\\n\\n\\n\\n\\n\\n\\n  s = sum_fp64(s, t);\\n  for (int i = 0; i < k_power; i++) {\\n    s = sum_fp64(s * 2.0, mul_fp64(s, s));\\n  }\\n\\n#if defined(NVIDIA_FP64_WORKAROUND) || defined(INTEL_FP64_WORKAROUND)\\n  s = sum_fp64(s, vec2(ONE, 0.0));\\n#else\\n  s = sum_fp64(s, vec2(1.0, 0.0));\\n#endif\\n\\n  return s * pow(2.0, m);\\n}\\n\\nvec2 log_fp64(vec2 a)\\n{\\n  if (a.x == 1.0 && a.y == 0.0) return vec2(0.0, 0.0);\\n  if (a.x <= 0.0) return vec2(0.0 / 0.0, 0.0 / 0.0);\\n  vec2 x = vec2(log(a.x), 0.0);\\n  vec2 s;\\n#if defined(NVIDIA_FP64_WORKAROUND) || defined(INTEL_FP64_WORKAROUND)\\n  s = vec2(ONE, 0.0);\\n#else\\n  s = vec2(1.0, 0.0);\\n#endif\\n\\n  x = sub_fp64(sum_fp64(x, mul_fp64(a, exp_fp64(-x))), s);\\n  return x;\\n}\\n\\nvec2 sin_taylor_fp64(vec2 a) {\\n  vec2 r, s, t, x;\\n\\n  if (a.x == 0.0 && a.y == 0.0) {\\n    return vec2(0.0, 0.0);\\n  }\\n\\n  x = -mul_fp64(a, a);\\n  s = a;\\n  r = a;\\n\\n  r = mul_fp64(r, x);\\n  t = mul_fp64(r, INVERSE_FACTORIAL_3_FP64);\\n  s = sum_fp64(s, t);\\n\\n  r = mul_fp64(r, x);\\n  t = mul_fp64(r, INVERSE_FACTORIAL_5_FP64);\\n  s = sum_fp64(s, t);\\n\\n\\n\\n\\n\\n\\n  return s;\\n}\\n\\nvec2 cos_taylor_fp64(vec2 a) {\\n  vec2 r, s, t, x;\\n\\n  if (a.x == 0.0 && a.y == 0.0) {\\n    return vec2(1.0, 0.0);\\n  }\\n\\n  x = -mul_fp64(a, a);\\n  r = x;\\n  s = sum_fp64(vec2(1.0, 0.0), r * 0.5);\\n\\n  r = mul_fp64(r, x);\\n  t = mul_fp64(r, INVERSE_FACTORIAL_4_FP64);\\n  s = sum_fp64(s, t);\\n\\n  r = mul_fp64(r, x);\\n  t = mul_fp64(r, INVERSE_FACTORIAL_6_FP64);\\n  s = sum_fp64(s, t);\\n\\n\\n\\n\\n\\n\\n  return s;\\n}\\n\\nvoid sincos_taylor_fp64(vec2 a, out vec2 sin_t, out vec2 cos_t) {\\n  if (a.x == 0.0 && a.y == 0.0) {\\n    sin_t = vec2(0.0, 0.0);\\n    cos_t = vec2(1.0, 0.0);\\n  }\\n\\n  sin_t = sin_taylor_fp64(a);\\n  cos_t = sqrt_fp64(sub_fp64(vec2(1.0, 0.0), mul_fp64(sin_t, sin_t)));\\n}\\n\\nvec2 sin_fp64(vec2 a) {\\n    if (a.x == 0.0 && a.y == 0.0) {\\n        return vec2(0.0, 0.0);\\n    }\\n    vec2 z = nint_fp64(div_fp64(a, TWO_PI_FP64));\\n    vec2 r = sub_fp64(a, mul_fp64(TWO_PI_FP64, z));\\n\\n    vec2 t;\\n    float q = floor(r.x / PI_2_FP64.x + 0.5);\\n    int j = int(q);\\n\\n    if (j < -2 || j > 2) {\\n        return vec2(0.0 / 0.0, 0.0 / 0.0);\\n    }\\n\\n    t = sub_fp64(r, mul_fp64(PI_2_FP64, vec2(q, 0.0)));\\n\\n    q = floor(t.x / PI_16_FP64.x + 0.5);\\n    int k = int(q);\\n\\n    if (k == 0) {\\n        if (j == 0) {\\n            return sin_taylor_fp64(t);\\n        } else if (j == 1) {\\n            return cos_taylor_fp64(t);\\n        } else if (j == -1) {\\n            return -cos_taylor_fp64(t);\\n        } else {\\n            return -sin_taylor_fp64(t);\\n        }\\n    }\\n\\n    int abs_k = int(abs(float(k)));\\n\\n    if (abs_k > 4) {\\n        return vec2(0.0 / 0.0, 0.0 / 0.0);\\n    } else {\\n        t = sub_fp64(t, mul_fp64(PI_16_FP64, vec2(q, 0.0)));\\n    }\\n\\n    vec2 u = vec2(0.0, 0.0);\\n    vec2 v = vec2(0.0, 0.0);\\n\\n#if defined(NVIDIA_FP64_WORKAROUND) || defined(INTEL_FP64_WORKAROUND)\\n    if (abs(float(abs_k) - 1.0) < 0.5) {\\n        u = COS_TABLE_0_FP64;\\n        v = SIN_TABLE_0_FP64;\\n    } else if (abs(float(abs_k) - 2.0) < 0.5) {\\n        u = COS_TABLE_1_FP64;\\n        v = SIN_TABLE_1_FP64;\\n    } else if (abs(float(abs_k) - 3.0) < 0.5) {\\n        u = COS_TABLE_2_FP64;\\n        v = SIN_TABLE_2_FP64;\\n    } else if (abs(float(abs_k) - 4.0) < 0.5) {\\n        u = COS_TABLE_3_FP64;\\n        v = SIN_TABLE_3_FP64;\\n    }\\n#else\\n    if (abs_k == 1) {\\n        u = COS_TABLE_0_FP64;\\n        v = SIN_TABLE_0_FP64;\\n    } else if (abs_k == 2) {\\n        u = COS_TABLE_1_FP64;\\n        v = SIN_TABLE_1_FP64;\\n    } else if (abs_k == 3) {\\n        u = COS_TABLE_2_FP64;\\n        v = SIN_TABLE_2_FP64;\\n    } else if (abs_k == 4) {\\n        u = COS_TABLE_3_FP64;\\n        v = SIN_TABLE_3_FP64;\\n    }\\n#endif\\n\\n    vec2 sin_t, cos_t;\\n    sincos_taylor_fp64(t, sin_t, cos_t);\\n\\n\\n\\n    vec2 result = vec2(0.0, 0.0);\\n    if (j == 0) {\\n        if (k > 0) {\\n            result = sum_fp64(mul_fp64(u, sin_t), mul_fp64(v, cos_t));\\n        } else {\\n            result = sub_fp64(mul_fp64(u, sin_t), mul_fp64(v, cos_t));\\n        }\\n    } else if (j == 1) {\\n        if (k > 0) {\\n            result = sub_fp64(mul_fp64(u, cos_t), mul_fp64(v, sin_t));\\n        } else {\\n            result = sum_fp64(mul_fp64(u, cos_t), mul_fp64(v, sin_t));\\n        }\\n    } else if (j == -1) {\\n        if (k > 0) {\\n            result = sub_fp64(mul_fp64(v, sin_t), mul_fp64(u, cos_t));\\n        } else {\\n            result = -sum_fp64(mul_fp64(v, sin_t), mul_fp64(u, cos_t));\\n        }\\n    } else {\\n        if (k > 0) {\\n            result = -sum_fp64(mul_fp64(u, sin_t), mul_fp64(v, cos_t));\\n        } else {\\n            result = sub_fp64(mul_fp64(v, cos_t), mul_fp64(u, sin_t));\\n        }\\n    }\\n\\n    return result;\\n}\\n\\nvec2 cos_fp64(vec2 a) {\\n    if (a.x == 0.0 && a.y == 0.0) {\\n        return vec2(1.0, 0.0);\\n    }\\n    vec2 z = nint_fp64(div_fp64(a, TWO_PI_FP64));\\n    vec2 r = sub_fp64(a, mul_fp64(TWO_PI_FP64, z));\\n\\n    vec2 t;\\n    float q = floor(r.x / PI_2_FP64.x + 0.5);\\n    int j = int(q);\\n\\n    if (j < -2 || j > 2) {\\n        return vec2(0.0 / 0.0, 0.0 / 0.0);\\n    }\\n\\n    t = sub_fp64(r, mul_fp64(PI_2_FP64, vec2(q, 0.0)));\\n\\n    q = floor(t.x / PI_16_FP64.x + 0.5);\\n    int k = int(q);\\n\\n    if (k == 0) {\\n        if (j == 0) {\\n            return cos_taylor_fp64(t);\\n        } else if (j == 1) {\\n            return -sin_taylor_fp64(t);\\n        } else if (j == -1) {\\n            return sin_taylor_fp64(t);\\n        } else {\\n            return -cos_taylor_fp64(t);\\n        }\\n    }\\n\\n    int abs_k = int(abs(float(k)));\\n\\n    if (abs_k > 4) {\\n        return vec2(0.0 / 0.0, 0.0 / 0.0);\\n    } else {\\n        t = sub_fp64(t, mul_fp64(PI_16_FP64, vec2(q, 0.0)));\\n    }\\n\\n    vec2 u = vec2(0.0, 0.0);\\n    vec2 v = vec2(0.0, 0.0);\\n\\n#if defined(NVIDIA_FP64_WORKAROUND) || defined(INTEL_FP64_WORKAROUND)\\n    if (abs(float(abs_k) - 1.0) < 0.5) {\\n        u = COS_TABLE_0_FP64;\\n        v = SIN_TABLE_0_FP64;\\n    } else if (abs(float(abs_k) - 2.0) < 0.5) {\\n        u = COS_TABLE_1_FP64;\\n        v = SIN_TABLE_1_FP64;\\n    } else if (abs(float(abs_k) - 3.0) < 0.5) {\\n        u = COS_TABLE_2_FP64;\\n        v = SIN_TABLE_2_FP64;\\n    } else if (abs(float(abs_k) - 4.0) < 0.5) {\\n        u = COS_TABLE_3_FP64;\\n        v = SIN_TABLE_3_FP64;\\n    }\\n#else\\n    if (abs_k == 1) {\\n        u = COS_TABLE_0_FP64;\\n        v = SIN_TABLE_0_FP64;\\n    } else if (abs_k == 2) {\\n        u = COS_TABLE_1_FP64;\\n        v = SIN_TABLE_1_FP64;\\n    } else if (abs_k == 3) {\\n        u = COS_TABLE_2_FP64;\\n        v = SIN_TABLE_2_FP64;\\n    } else if (abs_k == 4) {\\n        u = COS_TABLE_3_FP64;\\n        v = SIN_TABLE_3_FP64;\\n    }\\n#endif\\n\\n    vec2 sin_t, cos_t;\\n    sincos_taylor_fp64(t, sin_t, cos_t);\\n\\n    vec2 result = vec2(0.0, 0.0);\\n    if (j == 0) {\\n        if (k > 0) {\\n            result = sub_fp64(mul_fp64(u, cos_t), mul_fp64(v, sin_t));\\n        } else {\\n            result = sum_fp64(mul_fp64(u, cos_t), mul_fp64(v, sin_t));\\n        }\\n    } else if (j == 1) {\\n        if (k > 0) {\\n            result = -sum_fp64(mul_fp64(u, sin_t), mul_fp64(v, cos_t));\\n        } else {\\n            result = sub_fp64(mul_fp64(v, cos_t), mul_fp64(u, sin_t));\\n        }\\n    } else if (j == -1) {\\n        if (k > 0) {\\n            result = sum_fp64(mul_fp64(u, sin_t), mul_fp64(v, cos_t));\\n        } else {\\n            result = sub_fp64(mul_fp64(u, sin_t), mul_fp64(v, cos_t));\\n        }\\n    } else {\\n        if (k > 0) {\\n            result = sub_fp64(mul_fp64(v, sin_t), mul_fp64(u, cos_t));\\n        } else {\\n            result = -sum_fp64(mul_fp64(u, cos_t), mul_fp64(v, sin_t));\\n        }\\n    }\\n\\n    return result;\\n}\\n\\nvec2 tan_fp64(vec2 a) {\\n    vec2 sin_a;\\n    vec2 cos_a;\\n\\n    if (a.x == 0.0 && a.y == 0.0) {\\n        return vec2(0.0, 0.0);\\n    }\\n    vec2 z = nint_fp64(div_fp64(a, TWO_PI_FP64));\\n    vec2 r = sub_fp64(a, mul_fp64(TWO_PI_FP64, z));\\n\\n    vec2 t;\\n    float q = floor(r.x / PI_2_FP64.x + 0.5);\\n    int j = int(q);\\n\\n\\n    if (j < -2 || j > 2) {\\n        return vec2(0.0 / 0.0, 0.0 / 0.0);\\n    }\\n\\n    t = sub_fp64(r, mul_fp64(PI_2_FP64, vec2(q, 0.0)));\\n\\n    q = floor(t.x / PI_16_FP64.x + 0.5);\\n    int k = int(q);\\n    int abs_k = int(abs(float(k)));\\n\\n    if (abs_k > 4) {\\n        return vec2(0.0 / 0.0, 0.0 / 0.0);\\n    } else {\\n        t = sub_fp64(t, mul_fp64(PI_16_FP64, vec2(q, 0.0)));\\n    }\\n\\n\\n    vec2 u = vec2(0.0, 0.0);\\n    vec2 v = vec2(0.0, 0.0);\\n\\n    vec2 sin_t, cos_t;\\n    vec2 s, c;\\n    sincos_taylor_fp64(t, sin_t, cos_t);\\n\\n    if (k == 0) {\\n        s = sin_t;\\n        c = cos_t;\\n    } else {\\n#if defined(NVIDIA_FP64_WORKAROUND) || defined(INTEL_FP64_WORKAROUND)\\n        if (abs(float(abs_k) - 1.0) < 0.5) {\\n            u = COS_TABLE_0_FP64;\\n            v = SIN_TABLE_0_FP64;\\n        } else if (abs(float(abs_k) - 2.0) < 0.5) {\\n            u = COS_TABLE_1_FP64;\\n            v = SIN_TABLE_1_FP64;\\n        } else if (abs(float(abs_k) - 3.0) < 0.5) {\\n            u = COS_TABLE_2_FP64;\\n            v = SIN_TABLE_2_FP64;\\n        } else if (abs(float(abs_k) - 4.0) < 0.5) {\\n            u = COS_TABLE_3_FP64;\\n            v = SIN_TABLE_3_FP64;\\n        }\\n#else\\n        if (abs_k == 1) {\\n            u = COS_TABLE_0_FP64;\\n            v = SIN_TABLE_0_FP64;\\n        } else if (abs_k == 2) {\\n            u = COS_TABLE_1_FP64;\\n            v = SIN_TABLE_1_FP64;\\n        } else if (abs_k == 3) {\\n            u = COS_TABLE_2_FP64;\\n            v = SIN_TABLE_2_FP64;\\n        } else if (abs_k == 4) {\\n            u = COS_TABLE_3_FP64;\\n            v = SIN_TABLE_3_FP64;\\n        }\\n#endif\\n        if (k > 0) {\\n            s = sum_fp64(mul_fp64(u, sin_t), mul_fp64(v, cos_t));\\n            c = sub_fp64(mul_fp64(u, cos_t), mul_fp64(v, sin_t));\\n        } else {\\n            s = sub_fp64(mul_fp64(u, sin_t), mul_fp64(v, cos_t));\\n            c = sum_fp64(mul_fp64(u, cos_t), mul_fp64(v, sin_t));\\n        }\\n    }\\n\\n    if (j == 0) {\\n        sin_a = s;\\n        cos_a = c;\\n    } else if (j == 1) {\\n        sin_a = c;\\n        cos_a = -s;\\n    } else if (j == -1) {\\n        sin_a = -c;\\n        cos_a = s;\\n    } else {\\n        sin_a = -s;\\n        cos_a = -c;\\n    }\\n    return div_fp64(sin_a, cos_a);\\n}\\n\\nvec2 radians_fp64(vec2 degree) {\\n  return mul_fp64(degree, PI_180_FP64);\\n}\\n\\nvec2 mix_fp64(vec2 a, vec2 b, float x) {\\n  vec2 range = sub_fp64(b, a);\\n  return sum_fp64(a, mul_fp64(range, vec2(x, 0.0)));\\n}\\n\\nvoid vec2_sum_fp64(vec2 a[2], vec2 b[2], out vec2 out_val[2]) {\\n    out_val[0] = sum_fp64(a[0], b[0]);\\n    out_val[1] = sum_fp64(a[1], b[1]);\\n}\\n\\nvoid vec2_sub_fp64(vec2 a[2], vec2 b[2], out vec2 out_val[2]) {\\n    out_val[0] = sub_fp64(a[0], b[0]);\\n    out_val[1] = sub_fp64(a[1], b[1]);\\n}\\n\\nvoid vec2_mul_fp64(vec2 a[2], vec2 b[2], out vec2 out_val[2]) {\\n    out_val[0] = mul_fp64(a[0], b[0]);\\n    out_val[1] = mul_fp64(a[1], b[1]);\\n}\\n\\nvoid vec2_div_fp64(vec2 a[2], vec2 b[2], out vec2 out_val[2]) {\\n    out_val[0] = div_fp64(a[0], b[0]);\\n    out_val[1] = div_fp64(a[1], b[1]);\\n}\\n\\nvoid vec2_mix_fp64(vec2 x[2], vec2 y[2], float a, out vec2 out_val[2]) {\\n  vec2 range[2];\\n  vec2_sub_fp64(y, x, range);\\n  vec2 portion[2];\\n  portion[0] = range[0] * a;\\n  portion[1] = range[1] * a;\\n  vec2_sum_fp64(x, portion, out_val);\\n}\\n\\nvec2 vec2_length_fp64(vec2 x[2]) {\\n  return sqrt_fp64(sum_fp64(mul_fp64(x[0], x[0]), mul_fp64(x[1], x[1])));\\n}\\n\\nvoid vec2_normalize_fp64(vec2 x[2], out vec2 out_val[2]) {\\n  vec2 length = vec2_length_fp64(x);\\n  vec2 length_vec2[2];\\n  length_vec2[0] = length;\\n  length_vec2[1] = length;\\n\\n  vec2_div_fp64(x, length_vec2, out_val);\\n}\\n\\nvec2 vec2_distance_fp64(vec2 x[2], vec2 y[2]) {\\n  vec2 diff[2];\\n  vec2_sub_fp64(x, y, diff);\\n  return vec2_length_fp64(diff);\\n}\\n\\nvec2 vec2_dot_fp64(vec2 a[2], vec2 b[2]) {\\n  vec2 v[2];\\n\\n  v[0] = mul_fp64(a[0], b[0]);\\n  v[1] = mul_fp64(a[1], b[1]);\\n\\n  return sum_fp64(v[0], v[1]);\\n}\\nvoid vec3_sub_fp64(vec2 a[3], vec2 b[3], out vec2 out_val[3]) {\\n  for (int i = 0; i < 3; i++) {\\n    out_val[i] = sum_fp64(a[i], b[i]);\\n  }\\n}\\n\\nvoid vec3_sum_fp64(vec2 a[3], vec2 b[3], out vec2 out_val[3]) {\\n  for (int i = 0; i < 3; i++) {\\n    out_val[i] = sum_fp64(a[i], b[i]);\\n  }\\n}\\n\\nvec2 vec3_length_fp64(vec2 x[3]) {\\n  return sqrt_fp64(sum_fp64(sum_fp64(mul_fp64(x[0], x[0]), mul_fp64(x[1], x[1])),\\n    mul_fp64(x[2], x[2])));\\n}\\n\\nvec2 vec3_distance_fp64(vec2 x[3], vec2 y[3]) {\\n  vec2 diff[3];\\n  vec3_sub_fp64(x, y, diff);\\n  return vec3_length_fp64(diff);\\n}\\nvoid vec4_fp64(vec4 a, out vec2 out_val[4]) {\\n  out_val[0].x = a[0];\\n  out_val[0].y = 0.0;\\n\\n  out_val[1].x = a[1];\\n  out_val[1].y = 0.0;\\n\\n  out_val[2].x = a[2];\\n  out_val[2].y = 0.0;\\n\\n  out_val[3].x = a[3];\\n  out_val[3].y = 0.0;\\n}\\n\\nvoid vec4_scalar_mul_fp64(vec2 a[4], vec2 b, out vec2 out_val[4]) {\\n  out_val[0] = mul_fp64(a[0], b);\\n  out_val[1] = mul_fp64(a[1], b);\\n  out_val[2] = mul_fp64(a[2], b);\\n  out_val[3] = mul_fp64(a[3], b);\\n}\\n\\nvoid vec4_sum_fp64(vec2 a[4], vec2 b[4], out vec2 out_val[4]) {\\n  for (int i = 0; i < 4; i++) {\\n    out_val[i] = sum_fp64(a[i], b[i]);\\n  }\\n}\\n\\nvoid vec4_dot_fp64(vec2 a[4], vec2 b[4], out vec2 out_val) {\\n  vec2 v[4];\\n\\n  v[0] = mul_fp64(a[0], b[0]);\\n  v[1] = mul_fp64(a[1], b[1]);\\n  v[2] = mul_fp64(a[2], b[2]);\\n  v[3] = mul_fp64(a[3], b[3]);\\n\\n  out_val = sum_fp64(sum_fp64(v[0], v[1]), sum_fp64(v[2], v[3]));\\n}\\n\\nvoid mat4_vec4_mul_fp64(vec2 b[16], vec2 a[4], out vec2 out_val[4]) {\\n  vec2 tmp[4];\\n\\n  for (int i = 0; i < 4; i++)\\n  {\\n    for (int j = 0; j < 4; j++)\\n    {\\n      tmp[j] = b[j + i * 4];\\n    }\\n    vec4_dot_fp64(a, tmp, out_val[i]);\\n  }\\n}\\n\";\n//# sourceMappingURL=fp64-functions.glsl.js.map","import { Matrix4 } from '@math.gl/core';\nconst IDENTITY_MATRIX = [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1];\nconst DEFAULT_MODULE_OPTIONS = {\n  modelMatrix: IDENTITY_MATRIX,\n  viewMatrix: IDENTITY_MATRIX,\n  projectionMatrix: IDENTITY_MATRIX,\n  cameraPositionWorld: [0, 0, 0]\n};\n\nfunction getUniforms() {\n  let opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : DEFAULT_MODULE_OPTIONS;\n  let prevUniforms = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n  const uniforms = {};\n\n  if (opts.modelMatrix !== undefined) {\n    uniforms.modelMatrix = opts.modelMatrix;\n  }\n\n  if (opts.viewMatrix !== undefined) {\n    uniforms.viewMatrix = opts.viewMatrix;\n  }\n\n  if (opts.projectionMatrix !== undefined) {\n    uniforms.projectionMatrix = opts.projectionMatrix;\n  }\n\n  if (opts.cameraPositionWorld !== undefined) {\n    uniforms.cameraPositionWorld = opts.cameraPositionWorld;\n  }\n\n  if (opts.projectionMatrix !== undefined || opts.viewMatrix !== undefined) {\n    uniforms.viewProjectionMatrix = new Matrix4(opts.projectionMatrix).multiplyRight(opts.viewMatrix);\n  }\n\n  return uniforms;\n}\n\nconst common = \"varying vec4 project_vPositionWorld;\\nvarying vec3 project_vNormalWorld;\\n\\nvec4 project_getPosition_World() {\\n  return project_vPositionWorld;\\n}\\n\\nvec3 project_getNormal_World() {\\n  return project_vNormalWorld;\\n}\\n\";\nconst vs = \"\".concat(common, \"\\nuniform mat4 modelMatrix;\\nuniform mat4 viewMatrix;\\nuniform mat4 projectionMatrix;\\nuniform mat4 viewProjectionMatrix;\\nuniform vec3 cameraPositionWorld;\\n\\nstruct World {\\n  vec3 position;\\n  vec3 normal;\\n};\\n\\nWorld world;\\n\\nvoid project_setPosition(vec4 position) {\\n  project_vPositionWorld = position;\\n}\\n\\nvoid project_setNormal(vec3 normal) {\\n  project_vNormalWorld = normal;\\n}\\n\\nvoid project_setPositionAndNormal_World(vec3 position, vec3 normal) {\\n  world.position = position;\\n  world.normal = normal;\\n}\\n\\nvoid project_setPositionAndNormal_Model(vec3 position, vec3 normal) {\\n  world.position = (modelMatrix * vec4(position, 1.)).xyz;\\n  world.normal = mat3(modelMatrix) * normal;\\n}\\n\\nvec4 project_model_to_clipspace(vec4 position) {\\n  return viewProjectionMatrix * modelMatrix * position;\\n}\\n\\nvec4 project_model_to_clipspace(vec3 position) {\\n  return viewProjectionMatrix * modelMatrix * vec4(position, 1.);\\n}\\n\\nvec4 project_world_to_clipspace(vec3 position) {\\n  return viewProjectionMatrix * vec4(position, 1.);\\n}\\n\\nvec4 project_view_to_clipspace(vec3 position) {\\n  return projectionMatrix * vec4(position, 1.);\\n}\\n\\nvec4 project_to_clipspace(vec3 position) {\\n  return viewProjectionMatrix * vec4(position, 1.);\\n}\\n\");\nconst fs = \"\\n\".concat(common);\nexport const project = {\n  name: 'project',\n  getUniforms,\n  vs,\n  fs\n};\n//# sourceMappingURL=project.js.map","import { project } from '../project/project';\nconst DEFAULT_LIGHT_DIRECTION = new Float32Array([1, 1, 2]);\nconst DEFAULT_MODULE_OPTIONS = {\n  lightDirection: DEFAULT_LIGHT_DIRECTION\n};\n\nfunction getUniforms() {\n  let opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : DEFAULT_MODULE_OPTIONS;\n  const uniforms = {};\n\n  if (opts.lightDirection) {\n    uniforms.dirlight_uLightDirection = opts.lightDirection;\n  }\n\n  return uniforms;\n}\n\nconst vs = null;\nconst fs = \"uniform vec3 dirlight_uLightDirection;\\nvec4 dirlight_filterColor(vec4 color) {\\n  vec3 normal = project_getNormal_World();\\n  float d = abs(dot(normalize(normal), normalize(dirlight_uLightDirection)));\\n  return vec4(color.rgb * d, color.a);\\n}\\n\";\nexport const dirlight = {\n  name: 'dirlight',\n  vs,\n  fs,\n  getUniforms,\n  dependencies: [project]\n};\n//# sourceMappingURL=dirlight.js.map","let channelHandles = 1;\nlet animationHandles = 1;\nexport class Timeline {\n  constructor() {\n    this.time = 0;\n    this.channels = new Map();\n    this.animations = new Map();\n    this.playing = false;\n    this.lastEngineTime = -1;\n  }\n\n  addChannel(props) {\n    const {\n      delay = 0,\n      duration = Number.POSITIVE_INFINITY,\n      rate = 1,\n      repeat = 1\n    } = props;\n    const handle = channelHandles++;\n    const channel = {\n      time: 0,\n      delay,\n      duration,\n      rate,\n      repeat\n    };\n\n    this._setChannelTime(channel, this.time);\n\n    this.channels.set(handle, channel);\n    return handle;\n  }\n\n  removeChannel(handle) {\n    this.channels.delete(handle);\n\n    for (const [animationHandle, animation] of this.animations) {\n      if (animation.channel === handle) {\n        this.detachAnimation(animationHandle);\n      }\n    }\n  }\n\n  isFinished(handle) {\n    const channel = this.channels.get(handle);\n\n    if (channel === undefined) {\n      return false;\n    }\n\n    return this.time >= channel.delay + channel.duration * channel.repeat;\n  }\n\n  getTime(handle) {\n    if (handle === undefined) {\n      return this.time;\n    }\n\n    const channel = this.channels.get(handle);\n\n    if (channel === undefined) {\n      return -1;\n    }\n\n    return channel.time;\n  }\n\n  setTime(time) {\n    this.time = Math.max(0, time);\n    const channels = this.channels.values();\n\n    for (const channel of channels) {\n      this._setChannelTime(channel, this.time);\n    }\n\n    const animations = this.animations.values();\n\n    for (const animationData of animations) {\n      const {\n        animation,\n        channel\n      } = animationData;\n      animation.setTime(this.getTime(channel));\n    }\n  }\n\n  play() {\n    this.playing = true;\n  }\n\n  pause() {\n    this.playing = false;\n    this.lastEngineTime = -1;\n  }\n\n  reset() {\n    this.setTime(0);\n  }\n\n  attachAnimation(animation, channelHandle) {\n    const animationHandle = animationHandles++;\n    this.animations.set(animationHandle, {\n      animation,\n      channel: channelHandle\n    });\n    animation.setTime(this.getTime(channelHandle));\n    return animationHandle;\n  }\n\n  detachAnimation(handle) {\n    this.animations.delete(handle);\n  }\n\n  update(engineTime) {\n    if (this.playing) {\n      if (this.lastEngineTime === -1) {\n        this.lastEngineTime = engineTime;\n      }\n\n      this.setTime(this.time + (engineTime - this.lastEngineTime));\n      this.lastEngineTime = engineTime;\n    }\n  }\n\n  _setChannelTime(channel, time) {\n    const offsetTime = time - channel.delay;\n    const totalDuration = channel.duration * channel.repeat;\n\n    if (offsetTime >= totalDuration) {\n      channel.time = channel.duration * channel.rate;\n    } else {\n      channel.time = Math.max(0, offsetTime) % channel.duration;\n      channel.time *= channel.rate;\n    }\n  }\n\n}\n//# sourceMappingURL=timeline.js.map","import Geometry from '../geometry/geometry';\nimport { uid } from '@luma.gl/webgl';\nconst CUBE_INDICES = new Uint16Array([0, 1, 2, 0, 2, 3, 4, 5, 6, 4, 6, 7, 8, 9, 10, 8, 10, 11, 12, 13, 14, 12, 14, 15, 16, 17, 18, 16, 18, 19, 20, 21, 22, 20, 22, 23]);\nconst CUBE_POSITIONS = new Float32Array([-1, -1, 1, 1, -1, 1, 1, 1, 1, -1, 1, 1, -1, -1, -1, -1, 1, -1, 1, 1, -1, 1, -1, -1, -1, 1, -1, -1, 1, 1, 1, 1, 1, 1, 1, -1, -1, -1, -1, 1, -1, -1, 1, -1, 1, -1, -1, 1, 1, -1, -1, 1, 1, -1, 1, 1, 1, 1, -1, 1, -1, -1, -1, -1, -1, 1, -1, 1, 1, -1, 1, -1]);\nconst CUBE_NORMALS = new Float32Array([0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, -1, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, -1, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0]);\nconst CUBE_TEX_COORDS = new Float32Array([0, 0, 1, 0, 1, 1, 0, 1, 1, 0, 1, 1, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 1, 1, 1, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0, 0, 0, 0, 1, 0, 1, 1, 0, 1]);\nconst ATTRIBUTES = {\n  POSITION: {\n    size: 3,\n    value: new Float32Array(CUBE_POSITIONS)\n  },\n  NORMAL: {\n    size: 3,\n    value: new Float32Array(CUBE_NORMALS)\n  },\n  TEXCOORD_0: {\n    size: 2,\n    value: new Float32Array(CUBE_TEX_COORDS)\n  }\n};\nexport default class CubeGeometry extends Geometry {\n  constructor() {\n    let props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n    const {\n      id = uid('cube-geometry')\n    } = props;\n    super({ ...props,\n      id,\n      indices: {\n        size: 1,\n        value: new Uint16Array(CUBE_INDICES)\n      },\n      attributes: { ...ATTRIBUTES,\n        ...props.attributes\n      }\n    });\n  }\n\n}\n//# sourceMappingURL=cube-geometry.js.map","import { uid, assert } from '@luma.gl/webgl';\nexport const DRAW_MODE = {\n  POINTS: 0x0000,\n  LINES: 0x0001,\n  LINE_LOOP: 0x0002,\n  LINE_STRIP: 0x0003,\n  TRIANGLES: 0x0004,\n  TRIANGLE_STRIP: 0x0005,\n  TRIANGLE_FAN: 0x0006\n};\nexport default class Geometry {\n  static get DRAW_MODE() {\n    return DRAW_MODE;\n  }\n\n  constructor() {\n    let props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n    const {\n      id = uid('geometry'),\n      drawMode = DRAW_MODE.TRIANGLES,\n      attributes = {},\n      indices = null,\n      vertexCount = null\n    } = props;\n    this.id = id;\n    this.drawMode = drawMode | 0;\n    this.attributes = {};\n    this.userData = {};\n\n    this._setAttributes(attributes, indices);\n\n    this.vertexCount = vertexCount || this._calculateVertexCount(this.attributes, this.indices);\n  }\n\n  get mode() {\n    return this.drawMode;\n  }\n\n  getVertexCount() {\n    return this.vertexCount;\n  }\n\n  getAttributes() {\n    return this.indices ? {\n      indices: this.indices,\n      ...this.attributes\n    } : this.attributes;\n  }\n\n  _print(attributeName) {\n    return \"Geometry \".concat(this.id, \" attribute \").concat(attributeName);\n  }\n\n  _setAttributes(attributes, indices) {\n    if (indices) {\n      this.indices = ArrayBuffer.isView(indices) ? {\n        value: indices,\n        size: 1\n      } : indices;\n    }\n\n    for (const attributeName in attributes) {\n      let attribute = attributes[attributeName];\n      attribute = ArrayBuffer.isView(attribute) ? {\n        value: attribute\n      } : attribute;\n      assert(ArrayBuffer.isView(attribute.value), \"\".concat(this._print(attributeName), \": must be typed array or object with value as typed array\"));\n\n      if ((attributeName === 'POSITION' || attributeName === 'positions') && !attribute.size) {\n        attribute.size = 3;\n      }\n\n      if (attributeName === 'indices') {\n        assert(!this.indices);\n        this.indices = attribute;\n      } else {\n        this.attributes[attributeName] = attribute;\n      }\n    }\n\n    if (this.indices && this.indices.isIndexed !== undefined) {\n      this.indices = Object.assign({}, this.indices);\n      delete this.indices.isIndexed;\n    }\n\n    return this;\n  }\n\n  _calculateVertexCount(attributes, indices) {\n    if (indices) {\n      return indices.value.length;\n    }\n\n    let vertexCount = Infinity;\n\n    for (const attributeName in attributes) {\n      const attribute = attributes[attributeName];\n      const {\n        value,\n        size,\n        constant\n      } = attribute;\n\n      if (!constant && value && size >= 1) {\n        vertexCount = Math.min(vertexCount, value.length / size);\n      }\n    }\n\n    assert(Number.isFinite(vertexCount));\n    return vertexCount;\n  }\n\n}\n//# sourceMappingURL=geometry.js.map","import Resource from './resource';\nimport { FEATURES, hasFeatures } from '../features';\nimport { isWebGL2 } from '@luma.gl/gltools';\nimport { assert } from '../utils/assert';\nconst GL_QUERY_RESULT = 0x8866;\nconst GL_QUERY_RESULT_AVAILABLE = 0x8867;\nconst GL_TIME_ELAPSED_EXT = 0x88bf;\nconst GL_GPU_DISJOINT_EXT = 0x8fbb;\nconst GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN = 0x8c88;\nconst GL_ANY_SAMPLES_PASSED = 0x8c2f;\nconst GL_ANY_SAMPLES_PASSED_CONSERVATIVE = 0x8d6a;\nexport default class Query extends Resource {\n  get [Symbol.toStringTag]() {\n    return 'Query';\n  }\n\n  static isSupported(gl) {\n    let opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n    const webgl2 = isWebGL2(gl);\n    const hasTimerQuery = hasFeatures(gl, FEATURES.TIMER_QUERY);\n    let supported = webgl2 || hasTimerQuery;\n\n    for (const key of opts) {\n      switch (key) {\n        case 'queries':\n          supported = supported && webgl2;\n          break;\n\n        case 'timers':\n          supported = supported && hasTimerQuery;\n          break;\n\n        default:\n          assert(false);\n      }\n    }\n\n    return supported;\n  }\n\n  constructor(gl) {\n    let opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n    super(gl, opts);\n    this.target = null;\n    this._queryPending = false;\n    this._pollingPromise = null;\n    Object.seal(this);\n  }\n\n  beginTimeElapsedQuery() {\n    return this.begin(GL_TIME_ELAPSED_EXT);\n  }\n\n  beginOcclusionQuery() {\n    let {\n      conservative = false\n    } = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n    return this.begin(conservative ? GL_ANY_SAMPLES_PASSED_CONSERVATIVE : GL_ANY_SAMPLES_PASSED);\n  }\n\n  beginTransformFeedbackQuery() {\n    return this.begin(GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN);\n  }\n\n  begin(target) {\n    if (this._queryPending) {\n      return this;\n    }\n\n    this.target = target;\n    this.gl2.beginQuery(this.target, this.handle);\n    return this;\n  }\n\n  end() {\n    if (this._queryPending) {\n      return this;\n    }\n\n    if (this.target) {\n      this.gl2.endQuery(this.target);\n      this.target = null;\n      this._queryPending = true;\n    }\n\n    return this;\n  }\n\n  isResultAvailable() {\n    if (!this._queryPending) {\n      return false;\n    }\n\n    const resultAvailable = this.gl2.getQueryParameter(this.handle, GL_QUERY_RESULT_AVAILABLE);\n\n    if (resultAvailable) {\n      this._queryPending = false;\n    }\n\n    return resultAvailable;\n  }\n\n  isTimerDisjoint() {\n    return this.gl2.getParameter(GL_GPU_DISJOINT_EXT);\n  }\n\n  getResult() {\n    return this.gl2.getQueryParameter(this.handle, GL_QUERY_RESULT);\n  }\n\n  getTimerMilliseconds() {\n    return this.getResult() / 1e6;\n  }\n\n  createPoll() {\n    let limit = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : Number.POSITIVE_INFINITY;\n\n    if (this._pollingPromise) {\n      return this._pollingPromise;\n    }\n\n    let counter = 0;\n    this._pollingPromise = new Promise((resolve, reject) => {\n      const poll = () => {\n        if (this.isResultAvailable()) {\n          resolve(this.getResult());\n          this._pollingPromise = null;\n        } else if (counter++ > limit) {\n          reject('Timed out');\n          this._pollingPromise = null;\n        } else {\n          requestAnimationFrame(poll);\n        }\n      };\n\n      requestAnimationFrame(poll);\n    });\n    return this._pollingPromise;\n  }\n\n  _createHandle() {\n    return Query.isSupported(this.gl) ? this.gl2.createQuery() : null;\n  }\n\n  _deleteHandle() {\n    this.gl2.deleteQuery(this.handle);\n  }\n\n}\n//# sourceMappingURL=query.js.map","import { isWebGL, createGLContext, instrumentGLContext, resizeGLContext, resetParameters } from '@luma.gl/gltools';\nimport { requestAnimationFrame, cancelAnimationFrame, Query, lumaStats, Framebuffer, log, assert } from '@luma.gl/webgl';\nimport { isBrowser } from '@probe.gl/env';\nconst isPage = isBrowser() && typeof document !== 'undefined';\nlet statIdCounter = 0;\nexport default class AnimationLoop {\n  constructor() {\n    let props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n    const {\n      onCreateContext = opts => createGLContext(opts),\n      onAddHTML = null,\n      onInitialize = () => {},\n      onRender = () => {},\n      onFinalize = () => {},\n      onError,\n      gl = null,\n      glOptions = {},\n      debug = false,\n      createFramebuffer = false,\n      autoResizeViewport = true,\n      autoResizeDrawingBuffer = true,\n      stats = lumaStats.get(\"animation-loop-\".concat(statIdCounter++))\n    } = props;\n    let {\n      useDevicePixels = true\n    } = props;\n\n    if ('useDevicePixelRatio' in props) {\n      log.deprecated('useDevicePixelRatio', 'useDevicePixels')();\n      useDevicePixels = props.useDevicePixelRatio;\n    }\n\n    this.props = {\n      onCreateContext,\n      onAddHTML,\n      onInitialize,\n      onRender,\n      onFinalize,\n      onError,\n      gl,\n      glOptions,\n      debug,\n      createFramebuffer\n    };\n    this.gl = gl;\n    this.needsRedraw = null;\n    this.timeline = null;\n    this.stats = stats;\n    this.cpuTime = this.stats.get('CPU Time');\n    this.gpuTime = this.stats.get('GPU Time');\n    this.frameRate = this.stats.get('Frame Rate');\n    this._initialized = false;\n    this._running = false;\n    this._animationFrameId = null;\n    this._nextFramePromise = null;\n    this._resolveNextFrame = null;\n    this._cpuStartTime = 0;\n    this.setProps({\n      autoResizeViewport,\n      autoResizeDrawingBuffer,\n      useDevicePixels\n    });\n    this.start = this.start.bind(this);\n    this.stop = this.stop.bind(this);\n    this._pageLoadPromise = null;\n    this._onMousemove = this._onMousemove.bind(this);\n    this._onMouseleave = this._onMouseleave.bind(this);\n  }\n\n  delete() {\n    this.stop();\n\n    this._setDisplay(null);\n  }\n\n  setNeedsRedraw(reason) {\n    assert(typeof reason === 'string');\n    this.needsRedraw = this.needsRedraw || reason;\n    return this;\n  }\n\n  setProps(props) {\n    if ('autoResizeViewport' in props) {\n      this.autoResizeViewport = props.autoResizeViewport;\n    }\n\n    if ('autoResizeDrawingBuffer' in props) {\n      this.autoResizeDrawingBuffer = props.autoResizeDrawingBuffer;\n    }\n\n    if ('useDevicePixels' in props) {\n      this.useDevicePixels = props.useDevicePixels;\n    }\n\n    return this;\n  }\n\n  start() {\n    let opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n    if (this._running) {\n      return this;\n    }\n\n    this._running = true;\n\n    const startPromise = this._getPageLoadPromise().then(() => {\n      if (!this._running || this._initialized) {\n        return null;\n      }\n\n      this._createWebGLContext(opts);\n\n      this._createFramebuffer();\n\n      this._startEventHandling();\n\n      this._initializeCallbackData();\n\n      this._updateCallbackData();\n\n      this._resizeCanvasDrawingBuffer();\n\n      this._resizeViewport();\n\n      this._gpuTimeQuery = Query.isSupported(this.gl, ['timers']) ? new Query(this.gl) : null;\n      this._initialized = true;\n      return this.onInitialize(this.animationProps);\n    }).then(appContext => {\n      if (this._running) {\n        this._addCallbackData(appContext || {});\n\n        if (appContext !== false) {\n          this._startLoop();\n        }\n      }\n    });\n\n    if (this.props.onError) {\n      startPromise.catch(this.props.onError);\n    }\n\n    return this;\n  }\n\n  redraw() {\n    if (this.isContextLost()) {\n      return this;\n    }\n\n    this._beginTimers();\n\n    this._setupFrame();\n\n    this._updateCallbackData();\n\n    this._renderFrame(this.animationProps);\n\n    this._clearNeedsRedraw();\n\n    if (this.offScreen && this.gl.commit) {\n      this.gl.commit();\n    }\n\n    if (this._resolveNextFrame) {\n      this._resolveNextFrame(this);\n\n      this._nextFramePromise = null;\n      this._resolveNextFrame = null;\n    }\n\n    this._endTimers();\n\n    return this;\n  }\n\n  stop() {\n    if (this._running) {\n      this._finalizeCallbackData();\n\n      this._cancelAnimationFrame(this._animationFrameId);\n\n      this._nextFramePromise = null;\n      this._resolveNextFrame = null;\n      this._animationFrameId = null;\n      this._running = false;\n    }\n\n    return this;\n  }\n\n  attachTimeline(timeline) {\n    this.timeline = timeline;\n    return this.timeline;\n  }\n\n  detachTimeline() {\n    this.timeline = null;\n  }\n\n  waitForRender() {\n    this.setNeedsRedraw('waitForRender');\n\n    if (!this._nextFramePromise) {\n      this._nextFramePromise = new Promise(resolve => {\n        this._resolveNextFrame = resolve;\n      });\n    }\n\n    return this._nextFramePromise;\n  }\n\n  async toDataURL() {\n    this.setNeedsRedraw('toDataURL');\n    await this.waitForRender();\n    return this.gl.canvas.toDataURL();\n  }\n\n  isContextLost() {\n    return this.gl.isContextLost();\n  }\n\n  onCreateContext() {\n    return this.props.onCreateContext(...arguments);\n  }\n\n  onInitialize() {\n    return this.props.onInitialize(...arguments);\n  }\n\n  onRender() {\n    return this.props.onRender(...arguments);\n  }\n\n  onFinalize() {\n    return this.props.onFinalize(...arguments);\n  }\n\n  getHTMLControlValue(id) {\n    let defaultValue = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;\n    const element = document.getElementById(id);\n    return element ? Number(element.value) : defaultValue;\n  }\n\n  setViewParameters() {\n    log.removed('AnimationLoop.setViewParameters', 'AnimationLoop.setProps')();\n    return this;\n  }\n\n  _startLoop() {\n    const renderFrame = () => {\n      if (!this._running) {\n        return;\n      }\n\n      this.redraw();\n      this._animationFrameId = this._requestAnimationFrame(renderFrame);\n    };\n\n    this._cancelAnimationFrame(this._animationFrameId);\n\n    this._animationFrameId = this._requestAnimationFrame(renderFrame);\n  }\n\n  _getPageLoadPromise() {\n    if (!this._pageLoadPromise) {\n      this._pageLoadPromise = isPage ? new Promise((resolve, reject) => {\n        if (isPage && document.readyState === 'complete') {\n          resolve(document);\n          return;\n        }\n\n        window.addEventListener('load', () => {\n          resolve(document);\n        });\n      }) : Promise.resolve({});\n    }\n\n    return this._pageLoadPromise;\n  }\n\n  _setDisplay(display) {\n    if (this.display) {\n      this.display.delete();\n      this.display.animationLoop = null;\n    }\n\n    if (display) {\n      display.animationLoop = this;\n    }\n\n    this.display = display;\n  }\n\n  _cancelAnimationFrame(animationFrameId) {\n    if (this.display && this.display.cancelAnimationFrame) {\n      return this.display.cancelAnimationFrame(animationFrameId);\n    }\n\n    return cancelAnimationFrame(animationFrameId);\n  }\n\n  _requestAnimationFrame(renderFrameCallback) {\n    if (this._running) {\n      if (this.display && this.display.requestAnimationFrame) {\n        return this.display.requestAnimationFrame(renderFrameCallback);\n      }\n\n      return requestAnimationFrame(renderFrameCallback);\n    }\n\n    return undefined;\n  }\n\n  _renderFrame() {\n    if (this.display) {\n      this.display._renderFrame(...arguments);\n\n      return;\n    }\n\n    this.onRender(...arguments);\n  }\n\n  _clearNeedsRedraw() {\n    this.needsRedraw = null;\n  }\n\n  _setupFrame() {\n    this._resizeCanvasDrawingBuffer();\n\n    this._resizeViewport();\n\n    this._resizeFramebuffer();\n  }\n\n  _initializeCallbackData() {\n    this.animationProps = {\n      gl: this.gl,\n      stop: this.stop,\n      canvas: this.gl.canvas,\n      framebuffer: this.framebuffer,\n      useDevicePixels: this.useDevicePixels,\n      needsRedraw: null,\n      startTime: Date.now(),\n      engineTime: 0,\n      tick: 0,\n      tock: 0,\n      time: 0,\n      _timeline: this.timeline,\n      _loop: this,\n      _animationLoop: this,\n      _mousePosition: null\n    };\n  }\n\n  _updateCallbackData() {\n    const {\n      width,\n      height,\n      aspect\n    } = this._getSizeAndAspect();\n\n    if (width !== this.animationProps.width || height !== this.animationProps.height) {\n      this.setNeedsRedraw('drawing buffer resized');\n    }\n\n    if (aspect !== this.animationProps.aspect) {\n      this.setNeedsRedraw('drawing buffer aspect changed');\n    }\n\n    this.animationProps.width = width;\n    this.animationProps.height = height;\n    this.animationProps.aspect = aspect;\n    this.animationProps.needsRedraw = this.needsRedraw;\n    this.animationProps.engineTime = Date.now() - this.animationProps.startTime;\n\n    if (this.timeline) {\n      this.timeline.update(this.animationProps.engineTime);\n    }\n\n    this.animationProps.tick = Math.floor(this.animationProps.time / 1000 * 60);\n    this.animationProps.tock++;\n    this.animationProps.time = this.timeline ? this.timeline.getTime() : this.animationProps.engineTime;\n    this.animationProps._offScreen = this.offScreen;\n  }\n\n  _finalizeCallbackData() {\n    this.onFinalize(this.animationProps);\n  }\n\n  _addCallbackData(appContext) {\n    if (typeof appContext === 'object' && appContext !== null) {\n      this.animationProps = Object.assign({}, this.animationProps, appContext);\n    }\n  }\n\n  _createWebGLContext(opts) {\n    this.offScreen = opts.canvas && typeof OffscreenCanvas !== 'undefined' && opts.canvas instanceof OffscreenCanvas;\n    opts = Object.assign({}, opts, this.props.glOptions);\n    this.gl = this.props.gl ? instrumentGLContext(this.props.gl, opts) : this.onCreateContext(opts);\n\n    if (!isWebGL(this.gl)) {\n      throw new Error('AnimationLoop.onCreateContext - illegal context returned');\n    }\n\n    resetParameters(this.gl);\n\n    this._createInfoDiv();\n  }\n\n  _createInfoDiv() {\n    if (this.gl.canvas && this.props.onAddHTML) {\n      const wrapperDiv = document.createElement('div');\n      document.body.appendChild(wrapperDiv);\n      wrapperDiv.style.position = 'relative';\n      const div = document.createElement('div');\n      div.style.position = 'absolute';\n      div.style.left = '10px';\n      div.style.bottom = '10px';\n      div.style.width = '300px';\n      div.style.background = 'white';\n      wrapperDiv.appendChild(this.gl.canvas);\n      wrapperDiv.appendChild(div);\n      const html = this.props.onAddHTML(div);\n\n      if (html) {\n        div.innerHTML = html;\n      }\n    }\n  }\n\n  _getSizeAndAspect() {\n    const width = this.gl.drawingBufferWidth;\n    const height = this.gl.drawingBufferHeight;\n    let aspect = 1;\n    const {\n      canvas\n    } = this.gl;\n\n    if (canvas && canvas.clientHeight) {\n      aspect = canvas.clientWidth / canvas.clientHeight;\n    } else if (width > 0 && height > 0) {\n      aspect = width / height;\n    }\n\n    return {\n      width,\n      height,\n      aspect\n    };\n  }\n\n  _resizeViewport() {\n    if (this.autoResizeViewport) {\n      this.gl.viewport(0, 0, this.gl.drawingBufferWidth, this.gl.drawingBufferHeight);\n    }\n  }\n\n  _resizeCanvasDrawingBuffer() {\n    if (this.autoResizeDrawingBuffer) {\n      resizeGLContext(this.gl, {\n        useDevicePixels: this.useDevicePixels\n      });\n    }\n  }\n\n  _createFramebuffer() {\n    if (this.props.createFramebuffer) {\n      this.framebuffer = new Framebuffer(this.gl);\n    }\n  }\n\n  _resizeFramebuffer() {\n    if (this.framebuffer) {\n      this.framebuffer.resize({\n        width: this.gl.drawingBufferWidth,\n        height: this.gl.drawingBufferHeight\n      });\n    }\n  }\n\n  _beginTimers() {\n    this.frameRate.timeEnd();\n    this.frameRate.timeStart();\n\n    if (this._gpuTimeQuery && this._gpuTimeQuery.isResultAvailable() && !this._gpuTimeQuery.isTimerDisjoint()) {\n      this.stats.get('GPU Time').addTime(this._gpuTimeQuery.getTimerMilliseconds());\n    }\n\n    if (this._gpuTimeQuery) {\n      this._gpuTimeQuery.beginTimeElapsedQuery();\n    }\n\n    this.cpuTime.timeStart();\n  }\n\n  _endTimers() {\n    this.cpuTime.timeEnd();\n\n    if (this._gpuTimeQuery) {\n      this._gpuTimeQuery.end();\n    }\n  }\n\n  _startEventHandling() {\n    const {\n      canvas\n    } = this.gl;\n\n    if (canvas) {\n      canvas.addEventListener('mousemove', this._onMousemove);\n      canvas.addEventListener('mouseleave', this._onMouseleave);\n    }\n  }\n\n  _onMousemove(e) {\n    this.animationProps._mousePosition = [e.offsetX, e.offsetY];\n  }\n\n  _onMouseleave(e) {\n    this.animationProps._mousePosition = null;\n  }\n\n}\n//# sourceMappingURL=animation-loop.js.map","export function requestAnimationFrame(callback) {\n  return typeof window !== 'undefined' && window.requestAnimationFrame ? window.requestAnimationFrame(callback) : setTimeout(callback, 1000 / 60);\n}\nexport function cancelAnimationFrame(timerId) {\n  return typeof window !== 'undefined' && window.cancelAnimationFrame ? window.cancelAnimationFrame(timerId) : clearTimeout(timerId);\n}\n//# sourceMappingURL=request-animation-frame.js.map","let arrayBuffer = null;\nexport function getScratchArrayBuffer(byteLength) {\n  if (!arrayBuffer || arrayBuffer.byteLength < byteLength) {\n    arrayBuffer = new ArrayBuffer(byteLength);\n  }\n\n  return arrayBuffer;\n}\nexport function getScratchArray(Type, length) {\n  const scratchArrayBuffer = getScratchArrayBuffer(Type.BYTES_PER_ELEMENT * length);\n  return new Type(scratchArrayBuffer, 0, length);\n}\nexport function fillArray(_ref) {\n  let {\n    target,\n    source,\n    start = 0,\n    count = 1\n  } = _ref;\n  const length = source.length;\n  const total = count * length;\n  let copied = 0;\n\n  for (let i = start; copied < length; copied++) {\n    target[i++] = source[copied];\n  }\n\n  while (copied < total) {\n    if (copied < total - copied) {\n      target.copyWithin(start + copied, start, start + copied);\n      copied *= 2;\n    } else {\n      target.copyWithin(start + copied, start, start + total - copied);\n      copied = total;\n    }\n  }\n\n  return target;\n}\n//# sourceMappingURL=array-utils-flat.js.map","import Resource from './resource';\nimport Buffer from './buffer';\nimport { isWebGL2 } from '@luma.gl/gltools';\nimport { getScratchArray, fillArray } from '../utils/array-utils-flat';\nimport { assert } from '../utils/assert';\nimport { getBrowser } from '@probe.gl/env';\nconst ERR_ELEMENTS = 'elements must be GL.ELEMENT_ARRAY_BUFFER';\nexport default class VertexArrayObject extends Resource {\n  get [Symbol.toStringTag]() {\n    return 'VertexArrayObject';\n  }\n\n  static isSupported(gl) {\n    let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n    if (options.constantAttributeZero) {\n      return isWebGL2(gl) || getBrowser() === 'Chrome';\n    }\n\n    return true;\n  }\n\n  static getDefaultArray(gl) {\n    gl.luma = gl.luma || {};\n\n    if (!gl.luma.defaultVertexArray) {\n      gl.luma.defaultVertexArray = new VertexArrayObject(gl, {\n        handle: null,\n        isDefaultArray: true\n      });\n    }\n\n    return gl.luma.defaultVertexArray;\n  }\n\n  static getMaxAttributes(gl) {\n    VertexArrayObject.MAX_ATTRIBUTES = VertexArrayObject.MAX_ATTRIBUTES || gl.getParameter(34921);\n    return VertexArrayObject.MAX_ATTRIBUTES;\n  }\n\n  static setConstant(gl, location, array) {\n    switch (array.constructor) {\n      case Float32Array:\n        VertexArrayObject._setConstantFloatArray(gl, location, array);\n\n        break;\n\n      case Int32Array:\n        VertexArrayObject._setConstantIntArray(gl, location, array);\n\n        break;\n\n      case Uint32Array:\n        VertexArrayObject._setConstantUintArray(gl, location, array);\n\n        break;\n\n      default:\n        assert(false);\n    }\n  }\n\n  constructor(gl) {\n    let opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n    const id = opts.id || opts.program && opts.program.id;\n    super(gl, Object.assign({}, opts, {\n      id\n    }));\n    this.buffer = null;\n    this.bufferValue = null;\n    this.isDefaultArray = opts.isDefaultArray || false;\n    this.gl2 = gl;\n    this.initialize(opts);\n    Object.seal(this);\n  }\n\n  delete() {\n    super.delete();\n\n    if (this.buffer) {\n      this.buffer.delete();\n    }\n\n    return this;\n  }\n\n  get MAX_ATTRIBUTES() {\n    return VertexArrayObject.getMaxAttributes(this.gl);\n  }\n\n  initialize() {\n    let props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n    return this.setProps(props);\n  }\n\n  setProps(props) {\n    return this;\n  }\n\n  setElementBuffer() {\n    let elementBuffer = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;\n    let opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n    assert(!elementBuffer || elementBuffer.target === 34963, ERR_ELEMENTS);\n    this.bind(() => {\n      this.gl.bindBuffer(34963, elementBuffer ? elementBuffer.handle : null);\n    });\n    return this;\n  }\n\n  setBuffer(location, buffer, accessor) {\n    if (buffer.target === 34963) {\n      return this.setElementBuffer(buffer, accessor);\n    }\n\n    const {\n      size,\n      type,\n      stride,\n      offset,\n      normalized,\n      integer,\n      divisor\n    } = accessor;\n    const {\n      gl,\n      gl2\n    } = this;\n    location = Number(location);\n    this.bind(() => {\n      gl.bindBuffer(34962, buffer.handle);\n\n      if (integer) {\n        assert(isWebGL2(gl));\n        gl2.vertexAttribIPointer(location, size, type, stride, offset);\n      } else {\n        gl.vertexAttribPointer(location, size, type, normalized, stride, offset);\n      }\n\n      gl.enableVertexAttribArray(location);\n      gl2.vertexAttribDivisor(location, divisor || 0);\n    });\n    return this;\n  }\n\n  enable(location) {\n    let enable = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n    const disablingAttributeZero = !enable && location === 0 && !VertexArrayObject.isSupported(this.gl, {\n      constantAttributeZero: true\n    });\n\n    if (!disablingAttributeZero) {\n      location = Number(location);\n      this.bind(() => enable ? this.gl.enableVertexAttribArray(location) : this.gl.disableVertexAttribArray(location));\n    }\n\n    return this;\n  }\n\n  getConstantBuffer(elementCount, value) {\n    const constantValue = this._normalizeConstantArrayValue(value);\n\n    const byteLength = constantValue.byteLength * elementCount;\n    const length = constantValue.length * elementCount;\n    let updateNeeded = !this.buffer;\n    this.buffer = this.buffer || new Buffer(this.gl, byteLength);\n    updateNeeded = updateNeeded || this.buffer.reallocate(byteLength);\n    updateNeeded = updateNeeded || !this._compareConstantArrayValues(constantValue, this.bufferValue);\n\n    if (updateNeeded) {\n      const typedArray = getScratchArray(value.constructor, length);\n      fillArray({\n        target: typedArray,\n        source: constantValue,\n        start: 0,\n        count: length\n      });\n      this.buffer.subData(typedArray);\n      this.bufferValue = value;\n    }\n\n    return this.buffer;\n  }\n\n  _normalizeConstantArrayValue(arrayValue) {\n    if (Array.isArray(arrayValue)) {\n      return new Float32Array(arrayValue);\n    }\n\n    return arrayValue;\n  }\n\n  _compareConstantArrayValues(v1, v2) {\n    if (!v1 || !v2 || v1.length !== v2.length || v1.constructor !== v2.constructor) {\n      return false;\n    }\n\n    for (let i = 0; i < v1.length; ++i) {\n      if (v1[i] !== v2[i]) {\n        return false;\n      }\n    }\n\n    return true;\n  }\n\n  static _setConstantFloatArray(gl, location, array) {\n    switch (array.length) {\n      case 1:\n        gl.vertexAttrib1fv(location, array);\n        break;\n\n      case 2:\n        gl.vertexAttrib2fv(location, array);\n        break;\n\n      case 3:\n        gl.vertexAttrib3fv(location, array);\n        break;\n\n      case 4:\n        gl.vertexAttrib4fv(location, array);\n        break;\n\n      default:\n        assert(false);\n    }\n  }\n\n  static _setConstantIntArray(gl, location, array) {\n    assert(isWebGL2(gl));\n\n    switch (array.length) {\n      case 1:\n        gl.vertexAttribI1iv(location, array);\n        break;\n\n      case 2:\n        gl.vertexAttribI2iv(location, array);\n        break;\n\n      case 3:\n        gl.vertexAttribI3iv(location, array);\n        break;\n\n      case 4:\n        gl.vertexAttribI4iv(location, array);\n        break;\n\n      default:\n        assert(false);\n    }\n  }\n\n  static _setConstantUintArray(gl, location, array) {\n    assert(isWebGL2(gl));\n\n    switch (array.length) {\n      case 1:\n        gl.vertexAttribI1uiv(location, array);\n        break;\n\n      case 2:\n        gl.vertexAttribI2uiv(location, array);\n        break;\n\n      case 3:\n        gl.vertexAttribI3uiv(location, array);\n        break;\n\n      case 4:\n        gl.vertexAttribI4uiv(location, array);\n        break;\n\n      default:\n        assert(false);\n    }\n  }\n\n  _createHandle() {\n    const gl2 = this.gl;\n    return gl2.createVertexArray();\n  }\n\n  _deleteHandle(handle) {\n    this.gl2.deleteVertexArray(handle);\n    return [this.elements];\n  }\n\n  _bindHandle(handle) {\n    this.gl2.bindVertexArray(handle);\n  }\n\n  _getParameter(pname, _ref) {\n    let {\n      location\n    } = _ref;\n    assert(Number.isFinite(location));\n    return this.bind(() => {\n      switch (pname) {\n        case 34373:\n          return this.gl.getVertexAttribOffset(location, pname);\n\n        default:\n          return this.gl.getVertexAttrib(location, pname);\n      }\n    });\n  }\n\n}\n//# sourceMappingURL=vertex-array-object.js.map","import { log } from '@luma.gl/gltools';\nimport Accessor from './accessor';\nimport Buffer from './buffer';\nimport VertexArrayObject from './vertex-array-object';\nimport { assert } from '../utils/assert';\nimport { stubRemovedMethods } from '../utils/stub-methods';\nconst ERR_ATTRIBUTE_TYPE = 'VertexArray: attributes must be Buffers or constants (i.e. typed array)';\nconst MULTI_LOCATION_ATTRIBUTE_REGEXP = /^(.+)__LOCATION_([0-9]+)$/;\nconst DEPRECATIONS_V6 = ['setBuffers', 'setGeneric', 'clearBindings', 'setLocations', 'setGenericValues', 'setDivisor', 'enable', 'disable'];\nexport default class VertexArray {\n  constructor(gl) {\n    let opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n    const id = opts.id || opts.program && opts.program.id;\n    this.id = id;\n    this.gl = gl;\n    this.configuration = null;\n    this.elements = null;\n    this.elementsAccessor = null;\n    this.values = null;\n    this.accessors = null;\n    this.unused = null;\n    this.drawParams = null;\n    this.buffer = null;\n    this.attributes = {};\n    this.vertexArrayObject = new VertexArrayObject(gl);\n    stubRemovedMethods(this, 'VertexArray', 'v6.0', DEPRECATIONS_V6);\n    this.initialize(opts);\n    Object.seal(this);\n  }\n\n  delete() {\n    if (this.buffer) {\n      this.buffer.delete();\n    }\n\n    this.vertexArrayObject.delete();\n  }\n\n  initialize() {\n    let props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n    this.reset();\n    this.configuration = null;\n    this.bindOnUse = false;\n    return this.setProps(props);\n  }\n\n  reset() {\n    this.elements = null;\n    this.elementsAccessor = null;\n    const {\n      MAX_ATTRIBUTES\n    } = this.vertexArrayObject;\n    this.values = new Array(MAX_ATTRIBUTES).fill(null);\n    this.accessors = new Array(MAX_ATTRIBUTES).fill(null);\n    this.unused = {};\n    this.drawParams = null;\n    return this;\n  }\n\n  setProps(props) {\n    if ('program' in props) {\n      this.configuration = props.program && props.program.configuration;\n    }\n\n    if ('configuration' in props) {\n      this.configuration = props.configuration;\n    }\n\n    if ('attributes' in props) {\n      this.setAttributes(props.attributes);\n    }\n\n    if ('elements' in props) {\n      this.setElementBuffer(props.elements);\n    }\n\n    if ('bindOnUse' in props) {\n      props = props.bindOnUse;\n    }\n\n    return this;\n  }\n\n  clearDrawParams() {\n    this.drawParams = null;\n  }\n\n  getDrawParams() {\n    this.drawParams = this.drawParams || this._updateDrawParams();\n    return this.drawParams;\n  }\n\n  setAttributes(attributes) {\n    Object.assign(this.attributes, attributes);\n    this.vertexArrayObject.bind(() => {\n      for (const locationOrName in attributes) {\n        const value = attributes[locationOrName];\n\n        this._setAttribute(locationOrName, value);\n      }\n\n      this.gl.bindBuffer(34962, null);\n    });\n    return this;\n  }\n\n  setElementBuffer() {\n    let elementBuffer = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;\n    let accessor = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n    this.elements = elementBuffer;\n    this.elementsAccessor = accessor;\n    this.clearDrawParams();\n    this.vertexArrayObject.setElementBuffer(elementBuffer, accessor);\n    return this;\n  }\n\n  setBuffer(locationOrName, buffer) {\n    let appAccessor = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n    if (buffer.target === 34963) {\n      return this.setElementBuffer(buffer, appAccessor);\n    }\n\n    const {\n      location,\n      accessor\n    } = this._resolveLocationAndAccessor(locationOrName, buffer, buffer.accessor, appAccessor);\n\n    if (location >= 0) {\n      this.values[location] = buffer;\n      this.accessors[location] = accessor;\n      this.clearDrawParams();\n      this.vertexArrayObject.setBuffer(location, buffer, accessor);\n    }\n\n    return this;\n  }\n\n  setConstant(locationOrName, arrayValue) {\n    let appAccessor = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n    const {\n      location,\n      accessor\n    } = this._resolveLocationAndAccessor(locationOrName, arrayValue, Object.assign({\n      size: arrayValue.length\n    }, appAccessor));\n\n    if (location >= 0) {\n      arrayValue = this.vertexArrayObject._normalizeConstantArrayValue(arrayValue);\n      this.values[location] = arrayValue;\n      this.accessors[location] = accessor;\n      this.clearDrawParams();\n      this.vertexArrayObject.enable(location, false);\n    }\n\n    return this;\n  }\n\n  unbindBuffers() {\n    this.vertexArrayObject.bind(() => {\n      if (this.elements) {\n        this.vertexArrayObject.setElementBuffer(null);\n      }\n\n      this.buffer = this.buffer || new Buffer(this.gl, {\n        accessor: {\n          size: 4\n        }\n      });\n\n      for (let location = 0; location < this.vertexArrayObject.MAX_ATTRIBUTES; location++) {\n        if (this.values[location] instanceof Buffer) {\n          this.gl.disableVertexAttribArray(location);\n          this.gl.bindBuffer(34962, this.buffer.handle);\n          this.gl.vertexAttribPointer(location, 1, 5126, false, 0, 0);\n        }\n      }\n    });\n    return this;\n  }\n\n  bindBuffers() {\n    this.vertexArrayObject.bind(() => {\n      if (this.elements) {\n        this.setElementBuffer(this.elements);\n      }\n\n      for (let location = 0; location < this.vertexArrayObject.MAX_ATTRIBUTES; location++) {\n        const buffer = this.values[location];\n\n        if (buffer instanceof Buffer) {\n          this.setBuffer(location, buffer);\n        }\n      }\n    });\n    return this;\n  }\n\n  bindForDraw(vertexCount, instanceCount, func) {\n    let value;\n    this.vertexArrayObject.bind(() => {\n      this._setConstantAttributes(vertexCount, instanceCount);\n\n      value = func();\n    });\n    return value;\n  }\n\n  _resolveLocationAndAccessor(locationOrName, value, valueAccessor, appAccessor) {\n    const INVALID_RESULT = {\n      location: -1,\n      accessor: null\n    };\n\n    const {\n      location,\n      name\n    } = this._getAttributeIndex(locationOrName);\n\n    if (!Number.isFinite(location) || location < 0) {\n      this.unused[locationOrName] = value;\n      log.once(3, () => \"unused value \".concat(locationOrName, \" in \").concat(this.id))();\n      return INVALID_RESULT;\n    }\n\n    const accessInfo = this._getAttributeInfo(name || location);\n\n    if (!accessInfo) {\n      return INVALID_RESULT;\n    }\n\n    const currentAccessor = this.accessors[location] || {};\n    const accessor = Accessor.resolve(accessInfo.accessor, currentAccessor, valueAccessor, appAccessor);\n    const {\n      size,\n      type\n    } = accessor;\n    assert(Number.isFinite(size) && Number.isFinite(type));\n    return {\n      location,\n      accessor\n    };\n  }\n\n  _getAttributeInfo(attributeName) {\n    return this.configuration && this.configuration.getAttributeInfo(attributeName);\n  }\n\n  _getAttributeIndex(locationOrName) {\n    const location = Number(locationOrName);\n\n    if (Number.isFinite(location)) {\n      return {\n        location\n      };\n    }\n\n    const multiLocation = MULTI_LOCATION_ATTRIBUTE_REGEXP.exec(locationOrName);\n    const name = multiLocation ? multiLocation[1] : locationOrName;\n    const locationOffset = multiLocation ? Number(multiLocation[2]) : 0;\n\n    if (this.configuration) {\n      return {\n        location: this.configuration.getAttributeLocation(name) + locationOffset,\n        name\n      };\n    }\n\n    return {\n      location: -1\n    };\n  }\n\n  _setAttribute(locationOrName, value) {\n    if (value instanceof Buffer) {\n      this.setBuffer(locationOrName, value);\n    } else if (Array.isArray(value) && value.length && value[0] instanceof Buffer) {\n      const buffer = value[0];\n      const accessor = value[1];\n      this.setBuffer(locationOrName, buffer, accessor);\n    } else if (ArrayBuffer.isView(value) || Array.isArray(value)) {\n      const constant = value;\n      this.setConstant(locationOrName, constant);\n    } else if (value.buffer instanceof Buffer) {\n      const accessor = value;\n      this.setBuffer(locationOrName, accessor.buffer, accessor);\n    } else {\n      throw new Error(ERR_ATTRIBUTE_TYPE);\n    }\n  }\n\n  _setConstantAttributes(vertexCount, instanceCount) {\n    const elementCount = Math.max(vertexCount | 0, instanceCount | 0);\n    let constant = this.values[0];\n\n    if (ArrayBuffer.isView(constant)) {\n      this._setConstantAttributeZero(constant, elementCount);\n    }\n\n    for (let location = 1; location < this.vertexArrayObject.MAX_ATTRIBUTES; location++) {\n      constant = this.values[location];\n\n      if (ArrayBuffer.isView(constant)) {\n        this._setConstantAttribute(location, constant);\n      }\n    }\n  }\n\n  _setConstantAttributeZero(constant, elementCount) {\n    if (VertexArrayObject.isSupported(this.gl, {\n      constantAttributeZero: true\n    })) {\n      this._setConstantAttribute(0, constant);\n\n      return;\n    }\n\n    const buffer = this.vertexArrayObject.getConstantBuffer(elementCount, constant);\n    this.vertexArrayObject.setBuffer(0, buffer, this.accessors[0]);\n  }\n\n  _setConstantAttribute(location, constant) {\n    VertexArrayObject.setConstant(this.gl, location, constant);\n  }\n\n  _updateDrawParams() {\n    const drawParams = {\n      isIndexed: false,\n      isInstanced: false,\n      indexCount: Infinity,\n      vertexCount: Infinity,\n      instanceCount: Infinity\n    };\n\n    for (let location = 0; location < this.vertexArrayObject.MAX_ATTRIBUTES; location++) {\n      this._updateDrawParamsForLocation(drawParams, location);\n    }\n\n    if (this.elements) {\n      drawParams.elementCount = this.elements.getElementCount(this.elements.accessor);\n      drawParams.isIndexed = true;\n      drawParams.indexType = this.elementsAccessor.type || this.elements.accessor.type;\n      drawParams.indexOffset = this.elementsAccessor.offset || 0;\n    }\n\n    if (drawParams.indexCount === Infinity) {\n      drawParams.indexCount = 0;\n    }\n\n    if (drawParams.vertexCount === Infinity) {\n      drawParams.vertexCount = 0;\n    }\n\n    if (drawParams.instanceCount === Infinity) {\n      drawParams.instanceCount = 0;\n    }\n\n    return drawParams;\n  }\n\n  _updateDrawParamsForLocation(drawParams, location) {\n    const value = this.values[location];\n    const accessor = this.accessors[location];\n\n    if (!value) {\n      return;\n    }\n\n    const {\n      divisor\n    } = accessor;\n    const isInstanced = divisor > 0;\n    drawParams.isInstanced = drawParams.isInstanced || isInstanced;\n\n    if (value instanceof Buffer) {\n      const buffer = value;\n\n      if (isInstanced) {\n        const instanceCount = buffer.getVertexCount(accessor);\n        drawParams.instanceCount = Math.min(drawParams.instanceCount, instanceCount);\n      } else {\n        const vertexCount = buffer.getVertexCount(accessor);\n        drawParams.vertexCount = Math.min(drawParams.vertexCount, vertexCount);\n      }\n    }\n  }\n\n  setElements() {\n    let elementBuffer = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;\n    let accessor = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n    log.deprecated('setElements', 'setElementBuffer')();\n    return this.setElementBuffer(elementBuffer, accessor);\n  }\n\n}\n//# sourceMappingURL=vertex-array.js.map","function formatArrayValue(v, opts) {\n  const {\n    maxElts = 16,\n    size = 1\n  } = opts;\n  let string = '[';\n\n  for (let i = 0; i < v.length && i < maxElts; ++i) {\n    if (i > 0) {\n      string += \",\".concat(i % size === 0 ? ' ' : '');\n    }\n\n    string += formatValue(v[i], opts);\n  }\n\n  const terminator = v.length > maxElts ? '...' : ']';\n  return \"\".concat(string).concat(terminator);\n}\n\nexport function formatValue(v) {\n  let opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n  const EPSILON = 1e-16;\n  const {\n    isInteger = false\n  } = opts;\n\n  if (Array.isArray(v) || ArrayBuffer.isView(v)) {\n    return formatArrayValue(v, opts);\n  }\n\n  if (!Number.isFinite(v)) {\n    return String(v);\n  }\n\n  if (Math.abs(v) < EPSILON) {\n    return isInteger ? '0' : '0.';\n  }\n\n  if (isInteger) {\n    return v.toFixed(0);\n  }\n\n  if (Math.abs(v) > 100 && Math.abs(v) < 10000) {\n    return v.toFixed(0);\n  }\n\n  const string = v.toPrecision(2);\n  const decimal = string.indexOf('.0');\n  return decimal === string.length - 2 ? string.slice(0, -1) : string;\n}\n//# sourceMappingURL=format-value.js.map","import Buffer from '../classes/buffer';\nimport { getKey } from '../webgl-utils/constants-to-keys';\nimport { getCompositeGLType } from '../webgl-utils/attribute-utils';\nimport { formatValue } from '../utils/format-value';\nexport function getDebugTableForVertexArray(_ref) {\n  let {\n    vertexArray,\n    header = 'Attributes'\n  } = _ref;\n\n  if (!vertexArray.configuration) {\n    return {};\n  }\n\n  const table = {};\n\n  if (vertexArray.elements) {\n    table.ELEMENT_ARRAY_BUFFER = getDebugTableRow(vertexArray, vertexArray.elements, null, header);\n  }\n\n  const attributes = vertexArray.values;\n\n  for (const attributeLocation in attributes) {\n    const info = vertexArray._getAttributeInfo(attributeLocation);\n\n    if (info) {\n      let rowHeader = \"\".concat(attributeLocation, \": \").concat(info.name);\n      const accessor = vertexArray.accessors[info.location];\n\n      if (accessor) {\n        rowHeader = \"\".concat(attributeLocation, \": \").concat(getGLSLDeclaration(info.name, accessor));\n      }\n\n      table[rowHeader] = getDebugTableRow(vertexArray, attributes[attributeLocation], accessor, header);\n    }\n  }\n\n  return table;\n}\n\nfunction getDebugTableRow(vertexArray, attribute, accessor, header) {\n  const {\n    gl\n  } = vertexArray;\n\n  if (!attribute) {\n    return {\n      [header]: 'null',\n      'Format ': 'N/A'\n    };\n  }\n\n  let type = 'NOT PROVIDED';\n  let size = 1;\n  let verts = 0;\n  let bytes = 0;\n  let isInteger;\n  let marker;\n  let value;\n\n  if (accessor) {\n    type = accessor.type;\n    size = accessor.size;\n    type = String(type).replace('Array', '');\n    isInteger = type.indexOf('nt') !== -1;\n  }\n\n  if (attribute instanceof Buffer) {\n    const buffer = attribute;\n    const {\n      data,\n      changed\n    } = buffer.getDebugData();\n    marker = changed ? '*' : '';\n    value = data;\n    bytes = buffer.byteLength;\n    verts = bytes / data.BYTES_PER_ELEMENT / size;\n    let format;\n\n    if (accessor) {\n      const instanced = accessor.divisor > 0;\n      format = \"\".concat(instanced ? 'I ' : 'P ', \" \").concat(verts, \" (x\").concat(size, \"=\").concat(bytes, \" bytes \").concat(getKey(gl, type), \")\");\n    } else {\n      isInteger = true;\n      format = \"\".concat(bytes, \" bytes\");\n    }\n\n    return {\n      [header]: \"\".concat(marker).concat(formatValue(value, {\n        size,\n        isInteger\n      })),\n      'Format ': format\n    };\n  }\n\n  value = attribute;\n  size = attribute.length;\n  type = String(attribute.constructor.name).replace('Array', '');\n  isInteger = type.indexOf('nt') !== -1;\n  return {\n    [header]: \"\".concat(formatValue(value, {\n      size,\n      isInteger\n    }), \" (constant)\"),\n    'Format ': \"\".concat(size, \"x\").concat(type, \" (constant)\")\n  };\n}\n\nfunction getGLSLDeclaration(name, accessor) {\n  const {\n    type,\n    size\n  } = accessor;\n  const typeAndName = getCompositeGLType(type, size);\n  return typeAndName ? \"\".concat(name, \" (\").concat(typeAndName.name, \")\") : name;\n}\n//# sourceMappingURL=debug-vertex-array.js.map","import { assert } from '../utils/assert';\nimport { formatValue } from '../utils/format-value';\nexport function getDebugTableForUniforms(_ref) {\n  let {\n    header = 'Uniforms',\n    program,\n    uniforms,\n    undefinedOnly = false\n  } = _ref;\n  assert(program);\n  const SHADER_MODULE_UNIFORM_REGEXP = '.*_.*';\n  const PROJECT_MODULE_UNIFORM_REGEXP = '.*Matrix';\n  const uniformLocations = program._uniformSetters;\n  const table = {};\n  const uniformNames = Object.keys(uniformLocations).sort();\n  let count = 0;\n\n  for (const uniformName of uniformNames) {\n    if (!uniformName.match(SHADER_MODULE_UNIFORM_REGEXP) && !uniformName.match(PROJECT_MODULE_UNIFORM_REGEXP)) {\n      if (addUniformToTable({\n        table,\n        header,\n        uniforms,\n        uniformName,\n        undefinedOnly\n      })) {\n        count++;\n      }\n    }\n  }\n\n  for (const uniformName of uniformNames) {\n    if (uniformName.match(PROJECT_MODULE_UNIFORM_REGEXP)) {\n      if (addUniformToTable({\n        table,\n        header,\n        uniforms,\n        uniformName,\n        undefinedOnly\n      })) {\n        count++;\n      }\n    }\n  }\n\n  for (const uniformName of uniformNames) {\n    if (!table[uniformName]) {\n      if (addUniformToTable({\n        table,\n        header,\n        uniforms,\n        uniformName,\n        undefinedOnly\n      })) {\n        count++;\n      }\n    }\n  }\n\n  let unusedCount = 0;\n  const unusedTable = {};\n\n  if (!undefinedOnly) {\n    for (const uniformName in uniforms) {\n      const uniform = uniforms[uniformName];\n\n      if (!table[uniformName]) {\n        unusedCount++;\n        unusedTable[uniformName] = {\n          Type: \"NOT USED: \".concat(uniform),\n          [header]: formatValue(uniform)\n        };\n      }\n    }\n  }\n\n  return {\n    table,\n    count,\n    unusedTable,\n    unusedCount\n  };\n}\n\nfunction addUniformToTable(_ref2) {\n  let {\n    table,\n    header,\n    uniforms,\n    uniformName,\n    undefinedOnly\n  } = _ref2;\n  const value = uniforms[uniformName];\n  const isDefined = isUniformDefined(value);\n\n  if (!undefinedOnly || !isDefined) {\n    table[uniformName] = {\n      [header]: isDefined ? formatValue(value) : 'N/A',\n      'Uniform Type': isDefined ? value : 'NOT PROVIDED'\n    };\n    return true;\n  }\n\n  return false;\n}\n\nfunction isUniformDefined(value) {\n  return value !== undefined && value !== null;\n}\n//# sourceMappingURL=debug-uniforms.js.map","import { getCompositeGLType } from '../webgl-utils/attribute-utils';\nexport function getDebugTableForProgramConfiguration(config) {\n  const table = {};\n  const header = \"Accessors for \".concat(config.id);\n\n  for (const attributeInfo of config.attributeInfos) {\n    if (attributeInfo) {\n      const glslDeclaration = getGLSLDeclaration(attributeInfo);\n      table[\"in \".concat(glslDeclaration)] = {\n        [header]: JSON.stringify(attributeInfo.accessor)\n      };\n    }\n  }\n\n  for (const varyingInfo of config.varyingInfos) {\n    if (varyingInfo) {\n      const glslDeclaration = getGLSLDeclaration(varyingInfo);\n      table[\"out \".concat(glslDeclaration)] = {\n        [header]: JSON.stringify(varyingInfo.accessor)\n      };\n    }\n  }\n\n  return table;\n}\n\nfunction getGLSLDeclaration(attributeInfo) {\n  const {\n    type,\n    size\n  } = attributeInfo.accessor;\n  const typeAndName = getCompositeGLType(type, size);\n\n  if (typeAndName) {\n    return \"\".concat(typeAndName.name, \" \").concat(attributeInfo.name);\n  }\n\n  return attributeInfo.name;\n}\n//# sourceMappingURL=debug-program-configuration.js.map","import { Buffer, assert } from '@luma.gl/webgl';\nconst GLTF_TO_LUMA_ATTRIBUTE_MAP = {\n  POSITION: 'positions',\n  NORMAL: 'normals',\n  COLOR_0: 'colors',\n  TEXCOORD_0: 'texCoords',\n  TEXCOORD_1: 'texCoords1',\n  TEXCOORD_2: 'texCoords2'\n};\nexport function getBuffersFromGeometry(gl, geometry, options) {\n  const buffers = {};\n  let indices = geometry.indices;\n\n  for (const name in geometry.attributes) {\n    const attribute = geometry.attributes[name];\n    const remappedName = mapAttributeName(name, options);\n\n    if (name === 'indices') {\n      indices = attribute;\n    } else if (attribute.constant) {\n      buffers[remappedName] = attribute.value;\n    } else {\n      const typedArray = attribute.value;\n      const accessor = { ...attribute\n      };\n      delete accessor.value;\n      buffers[remappedName] = [new Buffer(gl, typedArray), accessor];\n      inferAttributeAccessor(name, accessor);\n    }\n  }\n\n  if (indices) {\n    const data = indices.value || indices;\n    assert(data instanceof Uint16Array || data instanceof Uint32Array, 'attribute array for \"indices\" must be of integer type');\n    const accessor = {\n      size: 1,\n      isIndexed: indices.isIndexed === undefined ? true : indices.isIndexed\n    };\n    buffers.indices = [new Buffer(gl, {\n      data,\n      target: 34963\n    }), accessor];\n  }\n\n  return buffers;\n}\n\nfunction mapAttributeName(name, options) {\n  const {\n    attributeMap = GLTF_TO_LUMA_ATTRIBUTE_MAP\n  } = options || {};\n  return attributeMap && attributeMap[name] || name;\n}\n\nexport function inferAttributeAccessor(attributeName, attribute) {\n  let category;\n\n  switch (attributeName) {\n    case 'texCoords':\n    case 'texCoord1':\n    case 'texCoord2':\n    case 'texCoord3':\n      category = 'uvs';\n      break;\n\n    case 'vertices':\n    case 'positions':\n    case 'normals':\n    case 'pickingColors':\n      category = 'vectors';\n      break;\n\n    default:\n  }\n\n  switch (category) {\n    case 'vectors':\n      attribute.size = attribute.size || 3;\n      break;\n\n    case 'uvs':\n      attribute.size = attribute.size || 2;\n      break;\n\n    default:\n  }\n\n  assert(Number.isFinite(attribute.size), \"attribute \".concat(attributeName, \" needs size\"));\n}\n//# sourceMappingURL=model-utils.js.map","import { isWebGL } from '@luma.gl/gltools';\nimport ProgramManager from './program-manager';\nimport { Program, VertexArray, clear, TransformFeedback, Buffer, log, isObjectEmpty, uid, assert } from '@luma.gl/webgl';\nimport { getDebugTableForUniforms, getDebugTableForVertexArray, getDebugTableForProgramConfiguration } from '@luma.gl/webgl';\nimport { getBuffersFromGeometry } from './model-utils';\nconst LOG_DRAW_PRIORITY = 2;\nconst LOG_DRAW_TIMEOUT = 10000;\nconst ERR_MODEL_PARAMS = 'Model needs drawMode and vertexCount';\n\nconst NOOP = () => {};\n\nconst DRAW_PARAMS = {};\nexport default class Model {\n  constructor(gl) {\n    let props = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n    const {\n      id = uid('model')\n    } = props;\n    assert(isWebGL(gl));\n    this.id = id;\n    this.gl = gl;\n    this.id = props.id || uid('Model');\n    this.lastLogTime = 0;\n    this.animated = false;\n    this.initialize(props);\n  }\n\n  initialize(props) {\n    this.props = {};\n    this.programManager = props.programManager || ProgramManager.getDefaultProgramManager(this.gl);\n    this._programManagerState = -1;\n    this._managedProgram = false;\n    const {\n      program = null,\n      vs,\n      fs,\n      modules,\n      defines,\n      inject,\n      varyings,\n      bufferMode,\n      transpileToGLSL100\n    } = props;\n    this.programProps = {\n      program,\n      vs,\n      fs,\n      modules,\n      defines,\n      inject,\n      varyings,\n      bufferMode,\n      transpileToGLSL100\n    };\n    this.program = null;\n    this.vertexArray = null;\n    this._programDirty = true;\n    this.userData = {};\n    this.needsRedraw = true;\n    this._attributes = {};\n    this.attributes = {};\n    this.uniforms = {};\n    this.pickable = true;\n\n    this._checkProgram();\n\n    this.setUniforms(Object.assign({}, this.getModuleUniforms(props.moduleSettings)));\n    this.drawMode = props.drawMode !== undefined ? props.drawMode : 4;\n    this.vertexCount = props.vertexCount || 0;\n    this.geometryBuffers = {};\n    this.isInstanced = props.isInstanced || props.instanced || props.instanceCount > 0;\n\n    this._setModelProps(props);\n\n    this.geometry = {};\n    assert(this.drawMode !== undefined && Number.isFinite(this.vertexCount), ERR_MODEL_PARAMS);\n  }\n\n  setProps(props) {\n    this._setModelProps(props);\n  }\n\n  delete() {\n    for (const key in this._attributes) {\n      if (this._attributes[key] !== this.attributes[key]) {\n        this._attributes[key].delete();\n      }\n    }\n\n    if (this._managedProgram) {\n      this.programManager.release(this.program);\n      this._managedProgram = false;\n    }\n\n    this.vertexArray.delete();\n\n    this._deleteGeometryBuffers();\n  }\n\n  getDrawMode() {\n    return this.drawMode;\n  }\n\n  getVertexCount() {\n    return this.vertexCount;\n  }\n\n  getInstanceCount() {\n    return this.instanceCount;\n  }\n\n  getAttributes() {\n    return this.attributes;\n  }\n\n  getProgram() {\n    return this.program;\n  }\n\n  setProgram(props) {\n    const {\n      program,\n      vs,\n      fs,\n      modules,\n      defines,\n      inject,\n      varyings,\n      bufferMode,\n      transpileToGLSL100\n    } = props;\n    this.programProps = {\n      program,\n      vs,\n      fs,\n      modules,\n      defines,\n      inject,\n      varyings,\n      bufferMode,\n      transpileToGLSL100\n    };\n    this._programDirty = true;\n  }\n\n  getUniforms() {\n    return this.uniforms;\n  }\n\n  setDrawMode(drawMode) {\n    this.drawMode = drawMode;\n    return this;\n  }\n\n  setVertexCount(vertexCount) {\n    assert(Number.isFinite(vertexCount));\n    this.vertexCount = vertexCount;\n    return this;\n  }\n\n  setInstanceCount(instanceCount) {\n    assert(Number.isFinite(instanceCount));\n    this.instanceCount = instanceCount;\n    return this;\n  }\n\n  setGeometry(geometry) {\n    this.drawMode = geometry.drawMode;\n    this.vertexCount = geometry.getVertexCount();\n\n    this._deleteGeometryBuffers();\n\n    this.geometryBuffers = getBuffersFromGeometry(this.gl, geometry);\n    this.vertexArray.setAttributes(this.geometryBuffers);\n    return this;\n  }\n\n  setAttributes() {\n    let attributes = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n    if (isObjectEmpty(attributes)) {\n      return this;\n    }\n\n    const normalizedAttributes = {};\n\n    for (const name in attributes) {\n      const attribute = attributes[name];\n      normalizedAttributes[name] = attribute.getValue ? attribute.getValue() : attribute;\n    }\n\n    this.vertexArray.setAttributes(normalizedAttributes);\n    return this;\n  }\n\n  setUniforms() {\n    let uniforms = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n    Object.assign(this.uniforms, uniforms);\n    return this;\n  }\n\n  getModuleUniforms(opts) {\n    this._checkProgram();\n\n    const getUniforms = this.programManager.getUniforms(this.program);\n\n    if (getUniforms) {\n      return getUniforms(opts);\n    }\n\n    return {};\n  }\n\n  updateModuleSettings(opts) {\n    const uniforms = this.getModuleUniforms(opts || {});\n    return this.setUniforms(uniforms);\n  }\n\n  clear(opts) {\n    clear(this.program.gl, opts);\n    return this;\n  }\n\n  draw() {\n    let opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n    this._checkProgram();\n\n    const {\n      moduleSettings = null,\n      framebuffer,\n      uniforms = {},\n      attributes = {},\n      transformFeedback = this.transformFeedback,\n      parameters = {},\n      vertexArray = this.vertexArray\n    } = opts;\n    this.setAttributes(attributes);\n    this.updateModuleSettings(moduleSettings);\n    this.setUniforms(uniforms);\n    let logPriority;\n\n    if (log.priority >= LOG_DRAW_PRIORITY) {\n      logPriority = this._logDrawCallStart(LOG_DRAW_PRIORITY);\n    }\n\n    const drawParams = this.vertexArray.getDrawParams();\n    const {\n      isIndexed = drawParams.isIndexed,\n      indexType = drawParams.indexType,\n      indexOffset = drawParams.indexOffset,\n      vertexArrayInstanced = drawParams.isInstanced\n    } = this.props;\n\n    if (vertexArrayInstanced && !this.isInstanced) {\n      log.warn('Found instanced attributes on non-instanced model', this.id)();\n    }\n\n    const {\n      isInstanced,\n      instanceCount\n    } = this;\n    const {\n      onBeforeRender = NOOP,\n      onAfterRender = NOOP\n    } = this.props;\n    onBeforeRender();\n    this.program.setUniforms(this.uniforms);\n    const didDraw = this.program.draw(Object.assign(DRAW_PARAMS, opts, {\n      logPriority,\n      uniforms: null,\n      framebuffer,\n      parameters,\n      drawMode: this.getDrawMode(),\n      vertexCount: this.getVertexCount(),\n      vertexArray,\n      transformFeedback,\n      isIndexed,\n      indexType,\n      isInstanced,\n      instanceCount,\n      offset: isIndexed ? indexOffset : 0\n    }));\n    onAfterRender();\n\n    if (log.priority >= LOG_DRAW_PRIORITY) {\n      this._logDrawCallEnd(logPriority, vertexArray, framebuffer);\n    }\n\n    return didDraw;\n  }\n\n  transform() {\n    let opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n    const {\n      discard = true,\n      feedbackBuffers,\n      unbindModels = []\n    } = opts;\n    let {\n      parameters\n    } = opts;\n\n    if (feedbackBuffers) {\n      this._setFeedbackBuffers(feedbackBuffers);\n    }\n\n    if (discard) {\n      parameters = Object.assign({}, parameters, {\n        [35977]: discard\n      });\n    }\n\n    unbindModels.forEach(model => model.vertexArray.unbindBuffers());\n\n    try {\n      this.draw(Object.assign({}, opts, {\n        parameters\n      }));\n    } finally {\n      unbindModels.forEach(model => model.vertexArray.bindBuffers());\n    }\n\n    return this;\n  }\n\n  render() {\n    let uniforms = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n    log.warn('Model.render() is deprecated. Use Model.setUniforms() and Model.draw()')();\n    return this.setUniforms(uniforms).draw();\n  }\n\n  _setModelProps(props) {\n    Object.assign(this.props, props);\n\n    if ('uniforms' in props) {\n      this.setUniforms(props.uniforms);\n    }\n\n    if ('pickable' in props) {\n      this.pickable = props.pickable;\n    }\n\n    if ('instanceCount' in props) {\n      this.instanceCount = props.instanceCount;\n    }\n\n    if ('geometry' in props) {\n      this.setGeometry(props.geometry);\n    }\n\n    if ('attributes' in props) {\n      this.setAttributes(props.attributes);\n    }\n\n    if ('_feedbackBuffers' in props) {\n      this._setFeedbackBuffers(props._feedbackBuffers);\n    }\n  }\n\n  _checkProgram() {\n    const needsUpdate = this._programDirty || this.programManager.stateHash !== this._programManagerState;\n\n    if (!needsUpdate) {\n      return;\n    }\n\n    let {\n      program\n    } = this.programProps;\n\n    if (program) {\n      this._managedProgram = false;\n    } else {\n      const {\n        vs,\n        fs,\n        modules,\n        inject,\n        defines,\n        varyings,\n        bufferMode,\n        transpileToGLSL100\n      } = this.programProps;\n      program = this.programManager.get({\n        vs,\n        fs,\n        modules,\n        inject,\n        defines,\n        varyings,\n        bufferMode,\n        transpileToGLSL100\n      });\n\n      if (this.program && this._managedProgram) {\n        this.programManager.release(this.program);\n      }\n\n      this._programManagerState = this.programManager.stateHash;\n      this._managedProgram = true;\n    }\n\n    assert(program instanceof Program, 'Model needs a program');\n    this._programDirty = false;\n\n    if (program === this.program) {\n      return;\n    }\n\n    this.program = program;\n\n    if (this.vertexArray) {\n      this.vertexArray.setProps({\n        program: this.program,\n        attributes: this.vertexArray.attributes\n      });\n    } else {\n      this.vertexArray = new VertexArray(this.gl, {\n        program: this.program\n      });\n    }\n\n    this.setUniforms(Object.assign({}, this.getModuleUniforms()));\n  }\n\n  _deleteGeometryBuffers() {\n    for (const name in this.geometryBuffers) {\n      const buffer = this.geometryBuffers[name][0] || this.geometryBuffers[name];\n\n      if (buffer instanceof Buffer) {\n        buffer.delete();\n      }\n    }\n  }\n\n  _setAnimationProps(animationProps) {\n    if (this.animated) {\n      assert(animationProps, 'Model.draw(): animated uniforms but no animationProps');\n    }\n  }\n\n  _setFeedbackBuffers() {\n    let feedbackBuffers = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n    if (isObjectEmpty(feedbackBuffers)) {\n      return this;\n    }\n\n    const {\n      gl\n    } = this.program;\n    this.transformFeedback = this.transformFeedback || new TransformFeedback(gl, {\n      program: this.program\n    });\n    this.transformFeedback.setBuffers(feedbackBuffers);\n    return this;\n  }\n\n  _logDrawCallStart(logLevel) {\n    const logDrawTimeout = logLevel > 3 ? 0 : LOG_DRAW_TIMEOUT;\n\n    if (Date.now() - this.lastLogTime < logDrawTimeout) {\n      return undefined;\n    }\n\n    this.lastLogTime = Date.now();\n    log.group(LOG_DRAW_PRIORITY, \">>> DRAWING MODEL \".concat(this.id), {\n      collapsed: log.level <= 2\n    })();\n    return logLevel;\n  }\n\n  _logDrawCallEnd(logLevel, vertexArray, uniforms, framebuffer) {\n    if (logLevel === undefined) {\n      return;\n    }\n\n    const attributeTable = getDebugTableForVertexArray({\n      vertexArray,\n      header: \"\".concat(this.id, \" attributes\"),\n      attributes: this._attributes\n    });\n    const {\n      table: uniformTable,\n      unusedTable,\n      unusedCount\n    } = getDebugTableForUniforms({\n      header: \"\".concat(this.id, \" uniforms\"),\n      program: this.program,\n      uniforms: Object.assign({}, this.program.uniforms, uniforms)\n    });\n    const {\n      table: missingTable,\n      count: missingCount\n    } = getDebugTableForUniforms({\n      header: \"\".concat(this.id, \" uniforms\"),\n      program: this.program,\n      uniforms: Object.assign({}, this.program.uniforms, uniforms),\n      undefinedOnly: true\n    });\n\n    if (missingCount > 0) {\n      log.log('MISSING UNIFORMS', Object.keys(missingTable))();\n    }\n\n    if (unusedCount > 0) {\n      log.log('UNUSED UNIFORMS', Object.keys(unusedTable))();\n    }\n\n    const configTable = getDebugTableForProgramConfiguration(this.vertexArray.configuration);\n    log.table(logLevel, attributeTable)();\n    log.table(logLevel, uniformTable)();\n    log.table(logLevel + 1, configTable)();\n\n    if (framebuffer) {\n      framebuffer.log({\n        logLevel: LOG_DRAW_PRIORITY,\n        message: \"Rendered to \".concat(framebuffer.id)\n      });\n    }\n\n    log.groupEnd(LOG_DRAW_PRIORITY)();\n  }\n\n}\n//# sourceMappingURL=model.js.map","import ShaderModule from './shader-module';\nimport { assert } from '../utils';\nexport function resolveModules(modules) {\n  return getShaderDependencies(instantiateModules(modules));\n}\n\nfunction getShaderDependencies(modules) {\n  const moduleMap = {};\n  const moduleDepth = {};\n  getDependencyGraph({\n    modules,\n    level: 0,\n    moduleMap,\n    moduleDepth\n  });\n  return Object.keys(moduleDepth).sort((a, b) => moduleDepth[b] - moduleDepth[a]).map(name => moduleMap[name]);\n}\n\nfunction getDependencyGraph(_ref) {\n  let {\n    modules,\n    level,\n    moduleMap,\n    moduleDepth\n  } = _ref;\n\n  if (level >= 5) {\n    throw new Error('Possible loop in shader dependency graph');\n  }\n\n  for (const module of modules) {\n    moduleMap[module.name] = module;\n\n    if (moduleDepth[module.name] === undefined || moduleDepth[module.name] < level) {\n      moduleDepth[module.name] = level;\n    }\n  }\n\n  for (const module of modules) {\n    if (module.dependencies) {\n      getDependencyGraph({\n        modules: module.dependencies,\n        level: level + 1,\n        moduleMap,\n        moduleDepth\n      });\n    }\n  }\n}\n\nfunction instantiateModules(modules, seen) {\n  return modules.map(module => {\n    if (module instanceof ShaderModule) {\n      return module;\n    }\n\n    assert(typeof module !== 'string', \"Shader module use by name is deprecated. Import shader module '\".concat(module, \"' and use it directly.\"));\n    assert(module.name, 'shader module has no name');\n    module = new ShaderModule(module);\n    module.dependencies = instantiateModules(module.dependencies);\n    return module;\n  });\n}\n\nexport const TEST_EXPORTS = {\n  getShaderDependencies,\n  getDependencyGraph\n};\n//# sourceMappingURL=resolve-modules.js.map","import isOldIE from './is-old-ie';\nimport assert from './assert';\nconst GL_VENDOR = 0x1f00;\nconst GL_RENDERER = 0x1f01;\nconst GL_VERSION = 0x1f02;\nconst GL_SHADING_LANGUAGE_VERSION = 0x8b8c;\nconst WEBGL_FEATURES = {\n  GLSL_FRAG_DATA: ['WEBGL_draw_buffers', true],\n  GLSL_FRAG_DEPTH: ['EXT_frag_depth', true],\n  GLSL_DERIVATIVES: ['OES_standard_derivatives', true],\n  GLSL_TEXTURE_LOD: ['EXT_shader_texture_lod', true]\n};\nconst FEATURES = {};\nObject.keys(WEBGL_FEATURES).forEach(key => {\n  FEATURES[key] = key;\n});\nexport { FEATURES };\n\nfunction isWebGL2(gl) {\n  if (typeof WebGL2RenderingContext !== 'undefined' && gl instanceof WebGL2RenderingContext) {\n    return true;\n  }\n\n  return Boolean(gl && gl._version === 2);\n}\n\nexport function getContextInfo(gl) {\n  const info = gl.getExtension('WEBGL_debug_renderer_info');\n  const vendor = gl.getParameter(info && info.UNMASKED_VENDOR_WEBGL || GL_VENDOR);\n  const renderer = gl.getParameter(info && info.UNMASKED_RENDERER_WEBGL || GL_RENDERER);\n  const gpuVendor = identifyGPUVendor(vendor, renderer);\n  const gpuInfo = {\n    gpuVendor,\n    vendor,\n    renderer,\n    version: gl.getParameter(GL_VERSION),\n    shadingLanguageVersion: gl.getParameter(GL_SHADING_LANGUAGE_VERSION)\n  };\n  return gpuInfo;\n}\n\nfunction identifyGPUVendor(vendor, renderer) {\n  if (vendor.match(/NVIDIA/i) || renderer.match(/NVIDIA/i)) {\n    return 'NVIDIA';\n  }\n\n  if (vendor.match(/INTEL/i) || renderer.match(/INTEL/i)) {\n    return 'INTEL';\n  }\n\n  if (vendor.match(/AMD/i) || renderer.match(/AMD/i) || vendor.match(/ATI/i) || renderer.match(/ATI/i)) {\n    return 'AMD';\n  }\n\n  return 'UNKNOWN GPU';\n}\n\nconst compiledGlslExtensions = {};\nexport function canCompileGLGSExtension(gl, cap) {\n  let opts = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n  const feature = WEBGL_FEATURES[cap];\n  assert(feature, cap);\n\n  if (!isOldIE(opts)) {\n    return true;\n  }\n\n  if (cap in compiledGlslExtensions) {\n    return compiledGlslExtensions[cap];\n  }\n\n  const extensionName = feature[0];\n  const behavior = opts.behavior || 'enable';\n  const source = \"#extension GL_\".concat(extensionName, \" : \").concat(behavior, \"\\nvoid main(void) {}\");\n  const shader = gl.createShader(35633);\n  gl.shaderSource(shader, source);\n  gl.compileShader(shader);\n  const canCompile = gl.getShaderParameter(shader, 35713);\n  gl.deleteShader(shader);\n  compiledGlslExtensions[cap] = canCompile;\n  return canCompile;\n}\n\nfunction getFeature(gl, cap) {\n  const feature = WEBGL_FEATURES[cap];\n  assert(feature, cap);\n  const extensionName = isWebGL2(gl) ? feature[1] || feature[0] : feature[0];\n  const value = typeof extensionName === 'string' ? Boolean(gl.getExtension(extensionName)) : extensionName;\n  assert(value === false || value === true);\n  return value;\n}\n\nexport function hasFeatures(gl, features) {\n  features = Array.isArray(features) ? features : [features];\n  return features.every(feature => getFeature(gl, feature));\n}\n//# sourceMappingURL=webgl-info.js.map","export default function isOldIE() {\n  let opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n  const navigator = typeof window !== 'undefined' ? window.navigator || {} : {};\n  const userAgent = opts.userAgent || navigator.userAgent || '';\n  const isMSIE = userAgent.indexOf('MSIE ') !== -1;\n  const isTrident = userAgent.indexOf('Trident/') !== -1;\n  return isMSIE || isTrident;\n}\n//# sourceMappingURL=is-old-ie.js.map","function testVariable(qualifier) {\n  return new RegExp(\"\\\\b\".concat(qualifier, \"[ \\\\t]+(\\\\w+[ \\\\t]+\\\\w+(\\\\[\\\\w+\\\\])?;)\"), 'g');\n}\n\nconst ES300_REPLACEMENTS = [[/^(#version[ \\t]+(100|300[ \\t]+es))?[ \\t]*\\n/, '#version 300 es\\n'], [/\\btexture(2D|2DProj|Cube)Lod(EXT)?\\(/g, 'textureLod('], [/\\btexture(2D|2DProj|Cube)(EXT)?\\(/g, 'texture(']];\nconst ES300_VERTEX_REPLACEMENTS = [...ES300_REPLACEMENTS, [testVariable('attribute'), 'in $1'], [testVariable('varying'), 'out $1']];\nconst ES300_FRAGMENT_REPLACEMENTS = [...ES300_REPLACEMENTS, [testVariable('varying'), 'in $1']];\nconst ES100_REPLACEMENTS = [[/^#version[ \\t]+300[ \\t]+es/, '#version 100'], [/\\btexture(2D|2DProj|Cube)Lod\\(/g, 'texture$1LodEXT('], [/\\btexture\\(/g, 'texture2D('], [/\\btextureLod\\(/g, 'texture2DLodEXT(']];\nconst ES100_VERTEX_REPLACEMENTS = [...ES100_REPLACEMENTS, [testVariable('in'), 'attribute $1'], [testVariable('out'), 'varying $1']];\nconst ES100_FRAGMENT_REPLACEMENTS = [...ES100_REPLACEMENTS, [testVariable('in'), 'varying $1']];\nconst ES100_FRAGMENT_OUTPUT_NAME = 'gl_FragColor';\nconst ES300_FRAGMENT_OUTPUT_REGEX = /\\bout[ \\t]+vec4[ \\t]+(\\w+)[ \\t]*;\\n?/;\nconst REGEX_START_OF_MAIN = /void\\s+main\\s*\\([^)]*\\)\\s*\\{\\n?/;\nexport default function transpileShader(source, targetGLSLVersion, isVertex) {\n  switch (targetGLSLVersion) {\n    case 300:\n      return isVertex ? convertShader(source, ES300_VERTEX_REPLACEMENTS) : convertFragmentShaderTo300(source);\n\n    case 100:\n      return isVertex ? convertShader(source, ES100_VERTEX_REPLACEMENTS) : convertFragmentShaderTo100(source);\n\n    default:\n      throw new Error(\"unknown GLSL version \".concat(targetGLSLVersion));\n  }\n}\n\nfunction convertShader(source, replacements) {\n  for (const [pattern, replacement] of replacements) {\n    source = source.replace(pattern, replacement);\n  }\n\n  return source;\n}\n\nfunction convertFragmentShaderTo300(source) {\n  source = convertShader(source, ES300_FRAGMENT_REPLACEMENTS);\n  const outputMatch = source.match(ES300_FRAGMENT_OUTPUT_REGEX);\n\n  if (outputMatch) {\n    const outputName = outputMatch[1];\n    source = source.replace(new RegExp(\"\\\\b\".concat(ES100_FRAGMENT_OUTPUT_NAME, \"\\\\b\"), 'g'), outputName);\n  } else {\n    const outputName = 'fragmentColor';\n    source = source.replace(REGEX_START_OF_MAIN, match => \"out vec4 \".concat(outputName, \";\\n\").concat(match)).replace(new RegExp(\"\\\\b\".concat(ES100_FRAGMENT_OUTPUT_NAME, \"\\\\b\"), 'g'), outputName);\n  }\n\n  return source;\n}\n\nfunction convertFragmentShaderTo100(source) {\n  source = convertShader(source, ES100_FRAGMENT_REPLACEMENTS);\n  const outputMatch = source.match(ES300_FRAGMENT_OUTPUT_REGEX);\n\n  if (outputMatch) {\n    const outputName = outputMatch[1];\n    source = source.replace(ES300_FRAGMENT_OUTPUT_REGEX, '').replace(new RegExp(\"\\\\b\".concat(outputName, \"\\\\b\"), 'g'), ES100_FRAGMENT_OUTPUT_NAME);\n  }\n\n  return source;\n}\n//# sourceMappingURL=transpile-shader.js.map","import { VERTEX_SHADER, FRAGMENT_SHADER } from './constants';\nimport { resolveModules } from './resolve-modules';\nimport { getPlatformShaderDefines, getVersionDefines } from './platform-defines';\nimport injectShader, { DECLARATION_INJECT_MARKER } from './inject-shader';\nimport transpileShader from './transpile-shader';\nimport { assert } from '../utils';\nconst INJECT_SHADER_DECLARATIONS = \"\\n\\n\".concat(DECLARATION_INJECT_MARKER, \"\\n\\n\");\nconst SHADER_TYPE = {\n  [VERTEX_SHADER]: 'vertex',\n  [FRAGMENT_SHADER]: 'fragment'\n};\nconst FRAGMENT_SHADER_PROLOGUE = \"precision highp float;\\n\\n\";\nexport function assembleShaders(gl, opts) {\n  const {\n    vs,\n    fs\n  } = opts;\n  const modules = resolveModules(opts.modules || []);\n  return {\n    gl,\n    vs: assembleShader(gl, Object.assign({}, opts, {\n      source: vs,\n      type: VERTEX_SHADER,\n      modules\n    })),\n    fs: assembleShader(gl, Object.assign({}, opts, {\n      source: fs,\n      type: FRAGMENT_SHADER,\n      modules\n    })),\n    getUniforms: assembleGetUniforms(modules)\n  };\n}\n\nfunction assembleShader(gl, _ref) {\n  let {\n    id,\n    source,\n    type,\n    modules,\n    defines = {},\n    hookFunctions = [],\n    inject = {},\n    transpileToGLSL100 = false,\n    prologue = true,\n    log\n  } = _ref;\n  assert(typeof source === 'string', 'shader source must be a string');\n  const isVertex = type === VERTEX_SHADER;\n  const sourceLines = source.split('\\n');\n  let glslVersion = 100;\n  let versionLine = '';\n  let coreSource = source;\n\n  if (sourceLines[0].indexOf('#version ') === 0) {\n    glslVersion = 300;\n    versionLine = sourceLines[0];\n    coreSource = sourceLines.slice(1).join('\\n');\n  } else {\n    versionLine = \"#version \".concat(glslVersion);\n  }\n\n  const allDefines = {};\n  modules.forEach(module => {\n    Object.assign(allDefines, module.getDefines());\n  });\n  Object.assign(allDefines, defines);\n  let assembledSource = prologue ? \"\".concat(versionLine, \"\\n\").concat(getShaderName({\n    id,\n    source,\n    type\n  }), \"\\n\").concat(getShaderType({\n    type\n  }), \"\\n\").concat(getPlatformShaderDefines(gl), \"\\n\").concat(getVersionDefines(gl, glslVersion, !isVertex), \"\\n\").concat(getApplicationDefines(allDefines), \"\\n\").concat(isVertex ? '' : FRAGMENT_SHADER_PROLOGUE, \"\\n\") : \"\".concat(versionLine, \"\\n\");\n  const hookFunctionMap = normalizeHookFunctions(hookFunctions);\n  const hookInjections = {};\n  const declInjections = {};\n  const mainInjections = {};\n\n  for (const key in inject) {\n    const injection = typeof inject[key] === 'string' ? {\n      injection: inject[key],\n      order: 0\n    } : inject[key];\n    const match = key.match(/^(v|f)s:(#)?([\\w-]+)$/);\n\n    if (match) {\n      const hash = match[2];\n      const name = match[3];\n\n      if (hash) {\n        if (name === 'decl') {\n          declInjections[key] = [injection];\n        } else {\n          mainInjections[key] = [injection];\n        }\n      } else {\n        hookInjections[key] = [injection];\n      }\n    } else {\n      mainInjections[key] = [injection];\n    }\n  }\n\n  for (const module of modules) {\n    if (log) {\n      module.checkDeprecations(coreSource, log);\n    }\n\n    const moduleSource = module.getModuleSource(type, glslVersion);\n    assembledSource += moduleSource;\n    const injections = module.injections[type];\n\n    for (const key in injections) {\n      const match = key.match(/^(v|f)s:#([\\w-]+)$/);\n\n      if (match) {\n        const name = match[2];\n        const injectionType = name === 'decl' ? declInjections : mainInjections;\n        injectionType[key] = injectionType[key] || [];\n        injectionType[key].push(injections[key]);\n      } else {\n        hookInjections[key] = hookInjections[key] || [];\n        hookInjections[key].push(injections[key]);\n      }\n    }\n  }\n\n  assembledSource += INJECT_SHADER_DECLARATIONS;\n  assembledSource = injectShader(assembledSource, type, declInjections);\n  assembledSource += getHookFunctions(hookFunctionMap[type], hookInjections);\n  assembledSource += coreSource;\n  assembledSource = injectShader(assembledSource, type, mainInjections);\n  assembledSource = transpileShader(assembledSource, transpileToGLSL100 ? 100 : glslVersion, isVertex);\n  return assembledSource;\n}\n\nfunction assembleGetUniforms(modules) {\n  return function getUniforms(opts) {\n    const uniforms = {};\n\n    for (const module of modules) {\n      const moduleUniforms = module.getUniforms(opts, uniforms);\n      Object.assign(uniforms, moduleUniforms);\n    }\n\n    return uniforms;\n  };\n}\n\nfunction getShaderType(_ref2) {\n  let {\n    type\n  } = _ref2;\n  return \"\\n#define SHADER_TYPE_\".concat(SHADER_TYPE[type].toUpperCase(), \"\\n\");\n}\n\nfunction getShaderName(_ref3) {\n  let {\n    id,\n    source,\n    type\n  } = _ref3;\n  const injectShaderName = id && typeof id === 'string' && source.indexOf('SHADER_NAME') === -1;\n  return injectShaderName ? \"\\n#define SHADER_NAME \".concat(id, \"_\").concat(SHADER_TYPE[type], \"\\n\\n\") : '';\n}\n\nfunction getApplicationDefines() {\n  let defines = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n  let count = 0;\n  let sourceText = '';\n\n  for (const define in defines) {\n    if (count === 0) {\n      sourceText += '\\n// APPLICATION DEFINES\\n';\n    }\n\n    count++;\n    const value = defines[define];\n\n    if (value || Number.isFinite(value)) {\n      sourceText += \"#define \".concat(define.toUpperCase(), \" \").concat(defines[define], \"\\n\");\n    }\n  }\n\n  if (count === 0) {\n    sourceText += '\\n';\n  }\n\n  return sourceText;\n}\n\nfunction getHookFunctions(hookFunctions, hookInjections) {\n  let result = '';\n\n  for (const hookName in hookFunctions) {\n    const hookFunction = hookFunctions[hookName];\n    result += \"void \".concat(hookFunction.signature, \" {\\n\");\n\n    if (hookFunction.header) {\n      result += \"  \".concat(hookFunction.header);\n    }\n\n    if (hookInjections[hookName]) {\n      const injections = hookInjections[hookName];\n      injections.sort((a, b) => a.order - b.order);\n\n      for (const injection of injections) {\n        result += \"  \".concat(injection.injection, \"\\n\");\n      }\n    }\n\n    if (hookFunction.footer) {\n      result += \"  \".concat(hookFunction.footer);\n    }\n\n    result += '}\\n';\n  }\n\n  return result;\n}\n\nfunction normalizeHookFunctions(hookFunctions) {\n  const result = {\n    vs: {},\n    fs: {}\n  };\n  hookFunctions.forEach(hook => {\n    let opts;\n\n    if (typeof hook !== 'string') {\n      opts = hook;\n      hook = opts.hook;\n    } else {\n      opts = {};\n    }\n\n    hook = hook.trim();\n    const [stage, signature] = hook.split(':');\n    const name = hook.replace(/\\(.+/, '');\n    result[stage][name] = Object.assign(opts, {\n      signature\n    });\n  });\n  return result;\n}\n//# sourceMappingURL=assemble-shaders.js.map","import { getContextInfo, hasFeatures, canCompileGLGSExtension, FEATURES } from '../utils/webgl-info';\nexport function getPlatformShaderDefines(gl) {\n  const debugInfo = getContextInfo(gl);\n\n  switch (debugInfo.gpuVendor.toLowerCase()) {\n    case 'nvidia':\n      return \"#define NVIDIA_GPU\\n// Nvidia optimizes away the calculation necessary for emulated fp64\\n#define LUMA_FP64_CODE_ELIMINATION_WORKAROUND 1\\n\";\n\n    case 'intel':\n      return \"#define INTEL_GPU\\n// Intel optimizes away the calculation necessary for emulated fp64\\n#define LUMA_FP64_CODE_ELIMINATION_WORKAROUND 1\\n// Intel's built-in 'tan' function doesn't have acceptable precision\\n#define LUMA_FP32_TAN_PRECISION_WORKAROUND 1\\n// Intel GPU doesn't have full 32 bits precision in same cases, causes overflow\\n#define LUMA_FP64_HIGH_BITS_OVERFLOW_WORKAROUND 1\\n\";\n\n    case 'amd':\n      return \"#define AMD_GPU\\n\";\n\n    default:\n      return \"#define DEFAULT_GPU\\n// Prevent driver from optimizing away the calculation necessary for emulated fp64\\n#define LUMA_FP64_CODE_ELIMINATION_WORKAROUND 1\\n// Intel's built-in 'tan' function doesn't have acceptable precision\\n#define LUMA_FP32_TAN_PRECISION_WORKAROUND 1\\n// Intel GPU doesn't have full 32 bits precision in same cases, causes overflow\\n#define LUMA_FP64_HIGH_BITS_OVERFLOW_WORKAROUND 1\\n\";\n  }\n}\nexport function getVersionDefines(gl, glslVersion, isFragment) {\n  let versionDefines = \"#if (__VERSION__ > 120)\\n\\n# define FEATURE_GLSL_DERIVATIVES\\n# define FEATURE_GLSL_DRAW_BUFFERS\\n# define FEATURE_GLSL_FRAG_DEPTH\\n# define FEATURE_GLSL_TEXTURE_LOD\\n\\n// DEPRECATED FLAGS, remove in v9\\n# define FRAG_DEPTH\\n# define DERIVATIVES\\n# define DRAW_BUFFERS\\n# define TEXTURE_LOD\\n\\n#endif // __VERSION\\n\";\n\n  if (hasFeatures(gl, FEATURES.GLSL_FRAG_DEPTH)) {\n    versionDefines += \"\\n// FRAG_DEPTH => gl_FragDepth is available\\n#ifdef GL_EXT_frag_depth\\n#extension GL_EXT_frag_depth : enable\\n# define FEATURE_GLSL_FRAG_DEPTH\\n# define FRAG_DEPTH\\n# define gl_FragDepth gl_FragDepthEXT\\n#endif\\n\";\n  }\n\n  if (hasFeatures(gl, FEATURES.GLSL_DERIVATIVES) && canCompileGLGSExtension(gl, FEATURES.GLSL_DERIVATIVES)) {\n    versionDefines += \"\\n// DERIVATIVES => dxdF, dxdY and fwidth are available\\n#ifdef GL_OES_standard_derivatives\\n#extension GL_OES_standard_derivatives : enable\\n# define FEATURE_GLSL_DERIVATIVES\\n# define DERIVATIVES\\n#endif\\n\";\n  }\n\n  if (hasFeatures(gl, FEATURES.GLSL_FRAG_DATA) && canCompileGLGSExtension(gl, FEATURES.GLSL_FRAG_DATA, {\n    behavior: 'require'\n  })) {\n    versionDefines += \"\\n// DRAW_BUFFERS => gl_FragData[] is available\\n#ifdef GL_EXT_draw_buffers\\n#extension GL_EXT_draw_buffers : require\\n#define FEATURE_GLSL_DRAW_BUFFERS\\n#define DRAW_BUFFERS\\n#endif\\n\";\n  }\n\n  if (hasFeatures(gl, FEATURES.GLSL_TEXTURE_LOD)) {\n    versionDefines += \"// TEXTURE_LOD => texture2DLod etc are available\\n#ifdef GL_EXT_shader_texture_lod\\n#extension GL_EXT_shader_texture_lod : enable\\n\\n# define FEATURE_GLSL_TEXTURE_LOD\\n# define TEXTURE_LOD\\n\\n#endif\\n\";\n  }\n\n  return versionDefines;\n}\n//# sourceMappingURL=platform-defines.js.map","import { assembleShaders } from '@luma.gl/shadertools';\nimport { Program } from '@luma.gl/webgl';\nexport default class ProgramManager {\n  static getDefaultProgramManager(gl) {\n    gl.luma = gl.luma || {};\n    gl.luma.defaultProgramManager = gl.luma.defaultProgramManager || new ProgramManager(gl);\n    return gl.luma.defaultProgramManager;\n  }\n\n  constructor(gl) {\n    this.gl = gl;\n    this._programCache = {};\n    this._getUniforms = {};\n    this._registeredModules = {};\n    this._hookFunctions = [];\n    this._defaultModules = [];\n    this._hashes = {};\n    this._hashCounter = 0;\n    this.stateHash = 0;\n    this._useCounts = {};\n  }\n\n  addDefaultModule(module) {\n    if (!this._defaultModules.find(m => m.name === module.name)) {\n      this._defaultModules.push(module);\n    }\n\n    this.stateHash++;\n  }\n\n  removeDefaultModule(module) {\n    const moduleName = typeof module === 'string' ? module : module.name;\n    this._defaultModules = this._defaultModules.filter(m => m.name !== moduleName);\n    this.stateHash++;\n  }\n\n  addShaderHook(hook, opts) {\n    if (opts) {\n      hook = Object.assign(opts, {\n        hook\n      });\n    }\n\n    this._hookFunctions.push(hook);\n\n    this.stateHash++;\n  }\n\n  get() {\n    let props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n    const {\n      vs = '',\n      fs = '',\n      defines = {},\n      inject = {},\n      varyings = [],\n      bufferMode = 0x8c8d,\n      transpileToGLSL100 = false\n    } = props;\n\n    const modules = this._getModuleList(props.modules);\n\n    const vsHash = this._getHash(vs);\n\n    const fsHash = this._getHash(fs);\n\n    const moduleHashes = modules.map(m => this._getHash(m.name)).sort();\n    const varyingHashes = varyings.map(v => this._getHash(v));\n    const defineKeys = Object.keys(defines).sort();\n    const injectKeys = Object.keys(inject).sort();\n    const defineHashes = [];\n    const injectHashes = [];\n\n    for (const key of defineKeys) {\n      defineHashes.push(this._getHash(key));\n      defineHashes.push(this._getHash(defines[key]));\n    }\n\n    for (const key of injectKeys) {\n      injectHashes.push(this._getHash(key));\n      injectHashes.push(this._getHash(inject[key]));\n    }\n\n    const hash = \"\".concat(vsHash, \"/\").concat(fsHash, \"D\").concat(defineHashes.join('/'), \"M\").concat(moduleHashes.join('/'), \"I\").concat(injectHashes.join('/'), \"V\").concat(varyingHashes.join('/'), \"H\").concat(this.stateHash, \"B\").concat(bufferMode).concat(transpileToGLSL100 ? 'T' : '');\n\n    if (!this._programCache[hash]) {\n      const assembled = assembleShaders(this.gl, {\n        vs,\n        fs,\n        modules,\n        inject,\n        defines,\n        hookFunctions: this._hookFunctions,\n        transpileToGLSL100\n      });\n      this._programCache[hash] = new Program(this.gl, {\n        hash,\n        vs: assembled.vs,\n        fs: assembled.fs,\n        varyings,\n        bufferMode\n      });\n\n      this._getUniforms[hash] = assembled.getUniforms || (x => {});\n\n      this._useCounts[hash] = 0;\n    }\n\n    this._useCounts[hash]++;\n    return this._programCache[hash];\n  }\n\n  getUniforms(program) {\n    return this._getUniforms[program.hash] || null;\n  }\n\n  release(program) {\n    const hash = program.hash;\n    this._useCounts[hash]--;\n\n    if (this._useCounts[hash] === 0) {\n      this._programCache[hash].delete();\n\n      delete this._programCache[hash];\n      delete this._getUniforms[hash];\n      delete this._useCounts[hash];\n    }\n  }\n\n  _getHash(key) {\n    if (this._hashes[key] === undefined) {\n      this._hashes[key] = this._hashCounter++;\n    }\n\n    return this._hashes[key];\n  }\n\n  _getModuleList() {\n    let appModules = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n    const modules = new Array(this._defaultModules.length + appModules.length);\n    const seen = {};\n    let count = 0;\n\n    for (let i = 0, len = this._defaultModules.length; i < len; ++i) {\n      const module = this._defaultModules[i];\n      const name = module.name;\n      modules[count++] = module;\n      seen[name] = true;\n    }\n\n    for (let i = 0, len = appModules.length; i < len; ++i) {\n      const module = appModules[i];\n      const name = module.name;\n\n      if (!seen[name]) {\n        modules[count++] = module;\n        seen[name] = true;\n      }\n    }\n\n    modules.length = count;\n    return modules;\n  }\n\n}\n//# sourceMappingURL=program-manager.js.map","import { assert } from '../utils';\nconst FS100 = \"void main() {gl_FragColor = vec4(0);}\";\nconst FS_GLES = \"out vec4 transform_output;\\nvoid main() {\\n  transform_output = vec4(0);\\n}\";\nconst FS300 = \"#version 300 es\\n\".concat(FS_GLES);\nexport function getQualifierDetails(line, qualifiers) {\n  qualifiers = Array.isArray(qualifiers) ? qualifiers : [qualifiers];\n  const words = line.replace(/^\\s+/, '').split(/\\s+/);\n  const [qualifier, type, definition] = words;\n\n  if (!qualifiers.includes(qualifier) || !type || !definition) {\n    return null;\n  }\n\n  const name = definition.split(';')[0];\n  return {\n    qualifier,\n    type,\n    name\n  };\n}\nexport function getPassthroughFS() {\n  let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n  const {\n    version = 100,\n    input,\n    inputType,\n    output\n  } = options;\n\n  if (!input) {\n    if (version === 300) {\n      return FS300;\n    } else if (version > 300) {\n      return \"#version \".concat(version, \"\\n\").concat(FS_GLES);\n    }\n\n    return FS100;\n  }\n\n  const outputValue = convertToVec4(input, inputType);\n\n  if (version >= 300) {\n    return \"#version \".concat(version, \" \").concat(version === 300 ? 'es' : '', \"\\nin \").concat(inputType, \" \").concat(input, \";\\nout vec4 \").concat(output, \";\\nvoid main() {\\n  \").concat(output, \" = \").concat(outputValue, \";\\n}\");\n  }\n\n  return \"varying \".concat(inputType, \" \").concat(input, \";\\nvoid main() {\\n  gl_FragColor = \").concat(outputValue, \";\\n}\");\n}\nexport function typeToChannelSuffix(type) {\n  switch (type) {\n    case 'float':\n      return 'x';\n\n    case 'vec2':\n      return 'xy';\n\n    case 'vec3':\n      return 'xyz';\n\n    case 'vec4':\n      return 'xyzw';\n\n    default:\n      assert(false);\n      return null;\n  }\n}\nexport function typeToChannelCount(type) {\n  switch (type) {\n    case 'float':\n      return 1;\n\n    case 'vec2':\n      return 2;\n\n    case 'vec3':\n      return 3;\n\n    case 'vec4':\n      return 4;\n\n    default:\n      assert(false);\n      return null;\n  }\n}\nexport function convertToVec4(variable, type) {\n  switch (type) {\n    case 'float':\n      return \"vec4(\".concat(variable, \", 0.0, 0.0, 1.0)\");\n\n    case 'vec2':\n      return \"vec4(\".concat(variable, \", 0.0, 1.0)\");\n\n    case 'vec3':\n      return \"vec4(\".concat(variable, \", 1.0)\");\n\n    case 'vec4':\n      return variable;\n\n    default:\n      assert(false);\n      return null;\n  }\n}\n//# sourceMappingURL=shader-utils.js.map","import { isWebGL2 } from '@luma.gl/gltools';\nimport { Buffer, TransformFeedback } from '@luma.gl/webgl';\nimport { assert } from '@luma.gl/webgl';\nexport default class BufferTransform {\n  constructor(gl) {\n    let props = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n    this.gl = gl;\n    this.currentIndex = 0;\n    this.feedbackMap = {};\n    this.varyings = null;\n    this.bindings = [];\n    this.resources = {};\n\n    this._initialize(props);\n\n    Object.seal(this);\n  }\n\n  setupResources(opts) {\n    for (const binding of this.bindings) {\n      this._setupTransformFeedback(binding, opts);\n    }\n  }\n\n  updateModelProps() {\n    let props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n    const {\n      varyings\n    } = this;\n\n    if (varyings.length > 0) {\n      props = Object.assign({}, props, {\n        varyings\n      });\n    }\n\n    return props;\n  }\n\n  getDrawOptions() {\n    let opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n    const binding = this.bindings[this.currentIndex];\n    const {\n      sourceBuffers,\n      transformFeedback\n    } = binding;\n    const attributes = Object.assign({}, sourceBuffers, opts.attributes);\n    return {\n      attributes,\n      transformFeedback\n    };\n  }\n\n  swap() {\n    if (this.feedbackMap) {\n      this.currentIndex = this._getNextIndex();\n      return true;\n    }\n\n    return false;\n  }\n\n  update() {\n    let opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n    this._setupBuffers(opts);\n  }\n\n  getBuffer(varyingName) {\n    const {\n      feedbackBuffers\n    } = this.bindings[this.currentIndex];\n    const bufferOrParams = varyingName ? feedbackBuffers[varyingName] : null;\n\n    if (!bufferOrParams) {\n      return null;\n    }\n\n    return bufferOrParams instanceof Buffer ? bufferOrParams : bufferOrParams.buffer;\n  }\n\n  getData() {\n    let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n    const {\n      varyingName\n    } = options;\n    const buffer = this.getBuffer(varyingName);\n\n    if (buffer) {\n      return buffer.getData();\n    }\n\n    return null;\n  }\n\n  delete() {\n    for (const name in this.resources) {\n      this.resources[name].delete();\n    }\n  }\n\n  _initialize() {\n    let props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n    this._setupBuffers(props);\n\n    this.varyings = props.varyings || Object.keys(this.bindings[this.currentIndex].feedbackBuffers);\n\n    if (this.varyings.length > 0) {\n      assert(isWebGL2(this.gl));\n    }\n  }\n\n  _getFeedbackBuffers(props) {\n    const {\n      sourceBuffers = {}\n    } = props;\n    const feedbackBuffers = {};\n\n    if (this.bindings[this.currentIndex]) {\n      Object.assign(feedbackBuffers, this.bindings[this.currentIndex].feedbackBuffers);\n    }\n\n    if (this.feedbackMap) {\n      for (const sourceName in this.feedbackMap) {\n        const feedbackName = this.feedbackMap[sourceName];\n\n        if (sourceName in sourceBuffers) {\n          feedbackBuffers[feedbackName] = sourceName;\n        }\n      }\n    }\n\n    Object.assign(feedbackBuffers, props.feedbackBuffers);\n\n    for (const bufferName in feedbackBuffers) {\n      const bufferOrRef = feedbackBuffers[bufferName];\n\n      if (typeof bufferOrRef === 'string') {\n        const sourceBuffer = sourceBuffers[bufferOrRef];\n        const {\n          byteLength,\n          usage,\n          accessor\n        } = sourceBuffer;\n        feedbackBuffers[bufferName] = this._createNewBuffer(bufferName, {\n          byteLength,\n          usage,\n          accessor\n        });\n      }\n    }\n\n    return feedbackBuffers;\n  }\n\n  _setupBuffers() {\n    let props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n    const {\n      sourceBuffers = null\n    } = props;\n    Object.assign(this.feedbackMap, props.feedbackMap);\n\n    const feedbackBuffers = this._getFeedbackBuffers(props);\n\n    this._updateBindings({\n      sourceBuffers,\n      feedbackBuffers\n    });\n  }\n\n  _setupTransformFeedback(binding, _ref) {\n    let {\n      model\n    } = _ref;\n    const {\n      program\n    } = model;\n    binding.transformFeedback = new TransformFeedback(this.gl, {\n      program,\n      buffers: binding.feedbackBuffers\n    });\n  }\n\n  _updateBindings(opts) {\n    this.bindings[this.currentIndex] = this._updateBinding(this.bindings[this.currentIndex], opts);\n\n    if (this.feedbackMap) {\n      const {\n        sourceBuffers,\n        feedbackBuffers\n      } = this._swapBuffers(this.bindings[this.currentIndex]);\n\n      const nextIndex = this._getNextIndex();\n\n      this.bindings[nextIndex] = this._updateBinding(this.bindings[nextIndex], {\n        sourceBuffers,\n        feedbackBuffers\n      });\n    }\n  }\n\n  _updateBinding(binding, opts) {\n    if (!binding) {\n      return {\n        sourceBuffers: Object.assign({}, opts.sourceBuffers),\n        feedbackBuffers: Object.assign({}, opts.feedbackBuffers)\n      };\n    }\n\n    Object.assign(binding.sourceBuffers, opts.sourceBuffers);\n    Object.assign(binding.feedbackBuffers, opts.feedbackBuffers);\n\n    if (binding.transformFeedback) {\n      binding.transformFeedback.setBuffers(binding.feedbackBuffers);\n    }\n\n    return binding;\n  }\n\n  _swapBuffers(opts) {\n    if (!this.feedbackMap) {\n      return null;\n    }\n\n    const sourceBuffers = Object.assign({}, opts.sourceBuffers);\n    const feedbackBuffers = Object.assign({}, opts.feedbackBuffers);\n\n    for (const srcName in this.feedbackMap) {\n      const dstName = this.feedbackMap[srcName];\n      sourceBuffers[srcName] = opts.feedbackBuffers[dstName];\n      feedbackBuffers[dstName] = opts.sourceBuffers[srcName];\n      assert(feedbackBuffers[dstName] instanceof Buffer);\n    }\n\n    return {\n      sourceBuffers,\n      feedbackBuffers\n    };\n  }\n\n  _createNewBuffer(name, opts) {\n    const buffer = new Buffer(this.gl, opts);\n\n    if (this.resources[name]) {\n      this.resources[name].delete();\n    }\n\n    this.resources[name] = buffer;\n    return buffer;\n  }\n\n  _getNextIndex() {\n    return (this.currentIndex + 1) % 2;\n  }\n\n}\n//# sourceMappingURL=buffer-transform.js.map","export default function getShaderVersion(source) {\n  let version = 100;\n  const words = source.match(/[^\\s]+/g);\n\n  if (words.length >= 2 && words[0] === '#version') {\n    const v = parseInt(words[1], 10);\n\n    if (Number.isFinite(v)) {\n      version = v;\n    }\n  }\n\n  return version;\n}\n//# sourceMappingURL=get-shader-version.js.map","const vs = \"attribute float transform_elementID;\\nvec2 transform_getPixelSizeHalf(vec2 size) {\\n  return vec2(1.) / (2. * size);\\n}\\n\\nvec2 transform_getPixelIndices(vec2 texSize, vec2 pixelSizeHalf) {\\n  float yIndex = floor((transform_elementID / texSize[0]) + pixelSizeHalf[1]);\\n  float xIndex = transform_elementID - (yIndex * texSize[0]);\\n  return vec2(xIndex, yIndex);\\n}\\nvec2 transform_getTexCoord(vec2 size) {\\n  vec2 pixelSizeHalf = transform_getPixelSizeHalf(size);\\n  vec2 indices = transform_getPixelIndices(size, pixelSizeHalf);\\n  vec2 coord = indices / size + pixelSizeHalf;\\n  return coord;\\n}\\nvec2 transform_getPos(vec2 size) {\\n  vec2 texCoord = transform_getTexCoord(size);\\n  vec2 pos = (texCoord * (2.0, 2.0)) - (1., 1.);\\n  return pos;\\n}\\nvec4 transform_getInput(sampler2D texSampler, vec2 size) {\\n  vec2 texCoord = transform_getTexCoord(size);\\n  vec4 textureColor = texture2D(texSampler, texCoord);\\n  return textureColor;\\n}\\n\";\nexport const transform = {\n  name: 'transform',\n  vs,\n  fs: null\n};\n//# sourceMappingURL=transform.js.map","import { assert } from '@luma.gl/webgl';\nimport { combineInjects, getQualifierDetails, typeToChannelSuffix } from '@luma.gl/shadertools';\nconst SAMPLER_UNIFORM_PREFIX = 'transform_uSampler_';\nconst SIZE_UNIFORM_PREFIX = 'transform_uSize_';\nconst VS_POS_VARIABLE = 'transform_position';\nexport function updateForTextures(_ref) {\n  let {\n    vs,\n    sourceTextureMap,\n    targetTextureVarying,\n    targetTexture\n  } = _ref;\n  const texAttributeNames = Object.keys(sourceTextureMap);\n  let sourceCount = texAttributeNames.length;\n  let targetTextureType = null;\n  const samplerTextureMap = {};\n  let updatedVs = vs;\n  let finalInject = {};\n\n  if (sourceCount > 0 || targetTextureVarying) {\n    const vsLines = updatedVs.split('\\n');\n    const updateVsLines = vsLines.slice();\n    vsLines.forEach((line, index, lines) => {\n      if (sourceCount > 0) {\n        const updated = processAttributeDefinition(line, sourceTextureMap);\n\n        if (updated) {\n          const {\n            updatedLine,\n            inject\n          } = updated;\n          updateVsLines[index] = updatedLine;\n          finalInject = combineInjects([finalInject, inject]);\n          Object.assign(samplerTextureMap, updated.samplerTextureMap);\n          sourceCount--;\n        }\n      }\n\n      if (targetTextureVarying && !targetTextureType) {\n        targetTextureType = getVaryingType(line, targetTextureVarying);\n      }\n    });\n\n    if (targetTextureVarying) {\n      assert(targetTexture);\n      const sizeName = \"\".concat(SIZE_UNIFORM_PREFIX).concat(targetTextureVarying);\n      const uniformDeclaration = \"uniform vec2 \".concat(sizeName, \";\\n\");\n      const posInstructions = \"     vec2 \".concat(VS_POS_VARIABLE, \" = transform_getPos(\").concat(sizeName, \");\\n     gl_Position = vec4(\").concat(VS_POS_VARIABLE, \", 0, 1.);\\n\");\n      const inject = {\n        'vs:#decl': uniformDeclaration,\n        'vs:#main-start': posInstructions\n      };\n      finalInject = combineInjects([finalInject, inject]);\n    }\n\n    updatedVs = updateVsLines.join('\\n');\n  }\n\n  return {\n    vs: updatedVs,\n    targetTextureType,\n    inject: finalInject,\n    samplerTextureMap\n  };\n}\nexport function getSizeUniforms(_ref2) {\n  let {\n    sourceTextureMap,\n    targetTextureVarying,\n    targetTexture\n  } = _ref2;\n  const uniforms = {};\n  let width;\n  let height;\n\n  if (targetTextureVarying) {\n    ({\n      width,\n      height\n    } = targetTexture);\n    uniforms[\"\".concat(SIZE_UNIFORM_PREFIX).concat(targetTextureVarying)] = [width, height];\n  }\n\n  for (const textureName in sourceTextureMap) {\n    ({\n      width,\n      height\n    } = sourceTextureMap[textureName]);\n    uniforms[\"\".concat(SIZE_UNIFORM_PREFIX).concat(textureName)] = [width, height];\n  }\n\n  return uniforms;\n}\n\nfunction getAttributeDefinition(line) {\n  return getQualifierDetails(line, ['attribute', 'in']);\n}\n\nfunction getSamplerDeclerations(textureName) {\n  const samplerName = \"\".concat(SAMPLER_UNIFORM_PREFIX).concat(textureName);\n  const sizeName = \"\".concat(SIZE_UNIFORM_PREFIX).concat(textureName);\n  const uniformDeclerations = \"  uniform sampler2D \".concat(samplerName, \";\\n  uniform vec2 \").concat(sizeName, \";\");\n  return {\n    samplerName,\n    sizeName,\n    uniformDeclerations\n  };\n}\n\nexport function getVaryingType(line, varying) {\n  const qualaiferDetails = getQualifierDetails(line, ['varying', 'out']);\n\n  if (!qualaiferDetails) {\n    return null;\n  }\n\n  return qualaiferDetails.name === varying ? qualaiferDetails.type : null;\n}\nexport function processAttributeDefinition(line, textureMap) {\n  const samplerTextureMap = {};\n  const attributeData = getAttributeDefinition(line);\n\n  if (!attributeData) {\n    return null;\n  }\n\n  const {\n    type,\n    name\n  } = attributeData;\n\n  if (name && textureMap[name]) {\n    const updatedLine = \"// \".concat(line, \" => Replaced by Transform with a sampler\");\n    const {\n      samplerName,\n      sizeName,\n      uniformDeclerations\n    } = getSamplerDeclerations(name);\n    const channels = typeToChannelSuffix(type);\n    const sampleInstruction = \"  \".concat(type, \" \").concat(name, \" = transform_getInput(\").concat(samplerName, \", \").concat(sizeName, \").\").concat(channels, \";\\n\");\n    samplerTextureMap[samplerName] = name;\n    const inject = {\n      'vs:#decl': uniformDeclerations,\n      'vs:#main-start': sampleInstruction\n    };\n    return {\n      updatedLine,\n      inject,\n      samplerTextureMap\n    };\n  }\n\n  return null;\n}\n//# sourceMappingURL=transform-shader-utils.js.map","import { cloneTextureFrom, readPixelsToArray, getShaderVersion, Buffer, Texture2D, Framebuffer } from '@luma.gl/webgl';\nimport { _transform as transformModule, getPassthroughFS, typeToChannelCount, combineInjects } from '@luma.gl/shadertools';\nimport { updateForTextures, getSizeUniforms } from './transform-shader-utils';\nconst SRC_TEX_PARAMETER_OVERRIDES = {\n  [10241]: 9728,\n  [10240]: 9728,\n  [10242]: 33071,\n  [10243]: 33071\n};\nconst FS_OUTPUT_VARIABLE = 'transform_output';\nexport default class TextureTransform {\n  constructor(gl) {\n    let props = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n    this.gl = gl;\n    this.id = this.currentIndex = 0;\n    this._swapTexture = null;\n    this.targetTextureVarying = null;\n    this.targetTextureType = null;\n    this.samplerTextureMap = null;\n    this.bindings = [];\n    this.resources = {};\n\n    this._initialize(props);\n\n    Object.seal(this);\n  }\n\n  updateModelProps() {\n    let props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n    const updatedModelProps = this._processVertexShader(props);\n\n    return Object.assign({}, props, updatedModelProps);\n  }\n\n  getDrawOptions() {\n    let opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n    const {\n      sourceBuffers,\n      sourceTextures,\n      framebuffer,\n      targetTexture\n    } = this.bindings[this.currentIndex];\n    const attributes = Object.assign({}, sourceBuffers, opts.attributes);\n    const uniforms = Object.assign({}, opts.uniforms);\n    const parameters = Object.assign({}, opts.parameters);\n    let discard = opts.discard;\n\n    if (this.hasSourceTextures || this.hasTargetTexture) {\n      attributes.transform_elementID = this.elementIDBuffer;\n\n      for (const sampler in this.samplerTextureMap) {\n        const textureName = this.samplerTextureMap[sampler];\n        uniforms[sampler] = sourceTextures[textureName];\n      }\n\n      this._setSourceTextureParameters();\n\n      const sizeUniforms = getSizeUniforms({\n        sourceTextureMap: sourceTextures,\n        targetTextureVarying: this.targetTextureVarying,\n        targetTexture\n      });\n      Object.assign(uniforms, sizeUniforms);\n    }\n\n    if (this.hasTargetTexture) {\n      discard = false;\n      parameters.viewport = [0, 0, framebuffer.width, framebuffer.height];\n    }\n\n    return {\n      attributes,\n      framebuffer,\n      uniforms,\n      discard,\n      parameters\n    };\n  }\n\n  swap() {\n    if (this._swapTexture) {\n      this.currentIndex = this._getNextIndex();\n      return true;\n    }\n\n    return false;\n  }\n\n  update() {\n    let opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n    this._setupTextures(opts);\n  }\n\n  getTargetTexture() {\n    const {\n      targetTexture\n    } = this.bindings[this.currentIndex];\n    return targetTexture;\n  }\n\n  getData() {\n    let {\n      packed = false\n    } = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n    const {\n      framebuffer\n    } = this.bindings[this.currentIndex];\n    const pixels = readPixelsToArray(framebuffer);\n\n    if (!packed) {\n      return pixels;\n    }\n\n    const ArrayType = pixels.constructor;\n    const channelCount = typeToChannelCount(this.targetTextureType);\n    const packedPixels = new ArrayType(pixels.length * channelCount / 4);\n    let packCount = 0;\n\n    for (let i = 0; i < pixels.length; i += 4) {\n      for (let j = 0; j < channelCount; j++) {\n        packedPixels[packCount++] = pixels[i + j];\n      }\n    }\n\n    return packedPixels;\n  }\n\n  getFramebuffer() {\n    const currentResources = this.bindings[this.currentIndex];\n    return currentResources.framebuffer;\n  }\n\n  delete() {\n    if (this.ownTexture) {\n      this.ownTexture.delete();\n    }\n\n    if (this.elementIDBuffer) {\n      this.elementIDBuffer.delete();\n    }\n  }\n\n  _initialize() {\n    let props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n    const {\n      _targetTextureVarying,\n      _swapTexture\n    } = props;\n    this._swapTexture = _swapTexture;\n    this.targetTextureVarying = _targetTextureVarying;\n    this.hasTargetTexture = _targetTextureVarying;\n\n    this._setupTextures(props);\n  }\n\n  _createTargetTexture(props) {\n    const {\n      sourceTextures,\n      textureOrReference\n    } = props;\n\n    if (textureOrReference instanceof Texture2D) {\n      return textureOrReference;\n    }\n\n    const refTexture = sourceTextures[textureOrReference];\n\n    if (!refTexture) {\n      return null;\n    }\n\n    this._targetRefTexName = textureOrReference;\n    return this._createNewTexture(refTexture);\n  }\n\n  _setupTextures() {\n    let props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n    const {\n      sourceBuffers,\n      _sourceTextures = {},\n      _targetTexture\n    } = props;\n\n    const targetTexture = this._createTargetTexture({\n      sourceTextures: _sourceTextures,\n      textureOrReference: _targetTexture\n    });\n\n    this.hasSourceTextures = this.hasSourceTextures || _sourceTextures && Object.keys(_sourceTextures).length > 0;\n\n    this._updateBindings({\n      sourceBuffers,\n      sourceTextures: _sourceTextures,\n      targetTexture\n    });\n\n    if ('elementCount' in props) {\n      this._updateElementIDBuffer(props.elementCount);\n    }\n  }\n\n  _updateElementIDBuffer(elementCount) {\n    if (typeof elementCount !== 'number' || this.elementCount >= elementCount) {\n      return;\n    }\n\n    const elementIds = new Float32Array(elementCount);\n    elementIds.forEach((_, index, array) => {\n      array[index] = index;\n    });\n\n    if (!this.elementIDBuffer) {\n      this.elementIDBuffer = new Buffer(this.gl, {\n        data: elementIds,\n        accessor: {\n          size: 1\n        }\n      });\n    } else {\n      this.elementIDBuffer.setData({\n        data: elementIds\n      });\n    }\n\n    this.elementCount = elementCount;\n  }\n\n  _updateBindings(opts) {\n    this.bindings[this.currentIndex] = this._updateBinding(this.bindings[this.currentIndex], opts);\n\n    if (this._swapTexture) {\n      const {\n        sourceTextures,\n        targetTexture\n      } = this._swapTextures(this.bindings[this.currentIndex]);\n\n      const nextIndex = this._getNextIndex();\n\n      this.bindings[nextIndex] = this._updateBinding(this.bindings[nextIndex], {\n        sourceTextures,\n        targetTexture\n      });\n    }\n  }\n\n  _updateBinding(binding, opts) {\n    const {\n      sourceBuffers,\n      sourceTextures,\n      targetTexture\n    } = opts;\n\n    if (!binding) {\n      binding = {\n        sourceBuffers: {},\n        sourceTextures: {},\n        targetTexture: null\n      };\n    }\n\n    Object.assign(binding.sourceTextures, sourceTextures);\n    Object.assign(binding.sourceBuffers, sourceBuffers);\n\n    if (targetTexture) {\n      binding.targetTexture = targetTexture;\n      const {\n        width,\n        height\n      } = targetTexture;\n      const {\n        framebuffer\n      } = binding;\n\n      if (framebuffer) {\n        framebuffer.update({\n          attachments: {\n            [36064]: targetTexture\n          },\n          resizeAttachments: false\n        });\n        framebuffer.resize({\n          width,\n          height\n        });\n      } else {\n        binding.framebuffer = new Framebuffer(this.gl, {\n          id: \"transform-framebuffer\",\n          width,\n          height,\n          attachments: {\n            [36064]: targetTexture\n          }\n        });\n      }\n    }\n\n    return binding;\n  }\n\n  _setSourceTextureParameters() {\n    const index = this.currentIndex;\n    const {\n      sourceTextures\n    } = this.bindings[index];\n\n    for (const name in sourceTextures) {\n      sourceTextures[name].setParameters(SRC_TEX_PARAMETER_OVERRIDES);\n    }\n  }\n\n  _swapTextures(opts) {\n    if (!this._swapTexture) {\n      return null;\n    }\n\n    const sourceTextures = Object.assign({}, opts.sourceTextures);\n    sourceTextures[this._swapTexture] = opts.targetTexture;\n    const targetTexture = opts.sourceTextures[this._swapTexture];\n    return {\n      sourceTextures,\n      targetTexture\n    };\n  }\n\n  _createNewTexture(refTexture) {\n    const texture = cloneTextureFrom(refTexture, {\n      parameters: {\n        [10241]: 9728,\n        [10240]: 9728,\n        [10242]: 33071,\n        [10243]: 33071\n      },\n      pixelStore: {\n        [37440]: false\n      }\n    });\n\n    if (this.ownTexture) {\n      this.ownTexture.delete();\n    }\n\n    this.ownTexture = texture;\n    return texture;\n  }\n\n  _getNextIndex() {\n    return (this.currentIndex + 1) % 2;\n  }\n\n  _processVertexShader() {\n    let props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n    const {\n      sourceTextures,\n      targetTexture\n    } = this.bindings[this.currentIndex];\n    const {\n      vs,\n      uniforms,\n      targetTextureType,\n      inject,\n      samplerTextureMap\n    } = updateForTextures({\n      vs: props.vs,\n      sourceTextureMap: sourceTextures,\n      targetTextureVarying: this.targetTextureVarying,\n      targetTexture\n    });\n    const combinedInject = combineInjects([props.inject || {}, inject]);\n    this.targetTextureType = targetTextureType;\n    this.samplerTextureMap = samplerTextureMap;\n    const fs = props._fs || getPassthroughFS({\n      version: getShaderVersion(vs),\n      input: this.targetTextureVarying,\n      inputType: targetTextureType,\n      output: FS_OUTPUT_VARIABLE\n    });\n    const modules = this.hasSourceTextures || this.targetTextureVarying ? [transformModule].concat(props.modules || []) : props.modules;\n    return {\n      vs,\n      fs,\n      modules,\n      uniforms,\n      inject: combinedInject\n    };\n  }\n\n}\n//# sourceMappingURL=texture-transform.js.map","import { getPassthroughFS } from '@luma.gl/shadertools';\nimport BufferTransform from './buffer-transform';\nimport TextureTransform from './texture-transform';\nimport { isWebGL2 } from '@luma.gl/gltools';\nimport { assert, isObjectEmpty, getShaderVersion } from '@luma.gl/webgl';\nimport Model from '../lib/model';\nexport default class Transform {\n  static isSupported(gl) {\n    return isWebGL2(gl);\n  }\n\n  constructor(gl) {\n    let props = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n    this.gl = gl;\n    this.model = null;\n    this.elementCount = 0;\n    this.bufferTransform = null;\n    this.textureTransform = null;\n    this.elementIDBuffer = null;\n\n    this._initialize(props);\n\n    Object.seal(this);\n  }\n\n  delete() {\n    const {\n      model,\n      bufferTransform,\n      textureTransform\n    } = this;\n\n    if (model) {\n      model.delete();\n    }\n\n    if (bufferTransform) {\n      bufferTransform.delete();\n    }\n\n    if (textureTransform) {\n      textureTransform.delete();\n    }\n  }\n\n  run() {\n    let opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n    const {\n      clearRenderTarget = true\n    } = opts;\n\n    const updatedOpts = this._updateDrawOptions(opts);\n\n    if (clearRenderTarget && updatedOpts.framebuffer) {\n      updatedOpts.framebuffer.clear({\n        color: true\n      });\n    }\n\n    this.model.transform(updatedOpts);\n  }\n\n  swap() {\n    let swapped = false;\n    const resourceTransforms = [this.bufferTransform, this.textureTransform].filter(Boolean);\n\n    for (const resourceTransform of resourceTransforms) {\n      swapped = swapped || resourceTransform.swap();\n    }\n\n    assert(swapped, 'Nothing to swap');\n  }\n\n  getBuffer() {\n    let varyingName = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;\n    return this.bufferTransform && this.bufferTransform.getBuffer(varyingName);\n  }\n\n  getData() {\n    let opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n    const resourceTransforms = [this.bufferTransform, this.textureTransform].filter(Boolean);\n\n    for (const resourceTransform of resourceTransforms) {\n      const data = resourceTransform.getData(opts);\n\n      if (data) {\n        return data;\n      }\n    }\n\n    return null;\n  }\n\n  getFramebuffer() {\n    return this.textureTransform && this.textureTransform.getFramebuffer();\n  }\n\n  update() {\n    let opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n    if ('elementCount' in opts) {\n      this.model.setVertexCount(opts.elementCount);\n    }\n\n    const resourceTransforms = [this.bufferTransform, this.textureTransform].filter(Boolean);\n\n    for (const resourceTransform of resourceTransforms) {\n      resourceTransform.update(opts);\n    }\n  }\n\n  _initialize() {\n    let props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n    const {\n      gl\n    } = this;\n\n    this._buildResourceTransforms(gl, props);\n\n    props = this._updateModelProps(props);\n    this.model = new Model(gl, Object.assign({}, props, {\n      fs: props.fs || getPassthroughFS({\n        version: getShaderVersion(props.vs)\n      }),\n      id: props.id || 'transform-model',\n      drawMode: props.drawMode || 0,\n      vertexCount: props.elementCount\n    }));\n    this.bufferTransform && this.bufferTransform.setupResources({\n      model: this.model\n    });\n  }\n\n  _updateModelProps(props) {\n    let updatedProps = Object.assign({}, props);\n    const resourceTransforms = [this.bufferTransform, this.textureTransform].filter(Boolean);\n\n    for (const resourceTransform of resourceTransforms) {\n      updatedProps = resourceTransform.updateModelProps(updatedProps);\n    }\n\n    return updatedProps;\n  }\n\n  _buildResourceTransforms(gl, props) {\n    if (canCreateBufferTransform(props)) {\n      this.bufferTransform = new BufferTransform(gl, props);\n    }\n\n    if (canCreateTextureTransform(props)) {\n      this.textureTransform = new TextureTransform(gl, props);\n    }\n\n    assert(this.bufferTransform || this.textureTransform, 'must provide source/feedback buffers or source/target textures');\n  }\n\n  _updateDrawOptions(opts) {\n    let updatedOpts = Object.assign({}, opts);\n    const resourceTransforms = [this.bufferTransform, this.textureTransform].filter(Boolean);\n\n    for (const resourceTransform of resourceTransforms) {\n      updatedOpts = Object.assign(updatedOpts, resourceTransform.getDrawOptions(updatedOpts));\n    }\n\n    return updatedOpts;\n  }\n\n}\n\nfunction canCreateBufferTransform(props) {\n  if (!isObjectEmpty(props.feedbackBuffers) || !isObjectEmpty(props.feedbackMap) || props.varyings && props.varyings.length > 0) {\n    return true;\n  }\n\n  return false;\n}\n\nfunction canCreateTextureTransform(props) {\n  if (!isObjectEmpty(props._sourceTextures) || props._targetTexture || props._targetTextureVarying) {\n    return true;\n  }\n\n  return false;\n}\n//# sourceMappingURL=transform.js.map","import Model from '../lib/model';\nimport Geometry from '../geometry/geometry';\nconst CLIPSPACE_VERTEX_SHADER = \"attribute vec2 aClipSpacePosition;\\nattribute vec2 aTexCoord;\\nattribute vec2 aCoordinate;\\n\\nvarying vec2 position;\\nvarying vec2 coordinate;\\nvarying vec2 uv;\\n\\nvoid main(void) {\\n  gl_Position = vec4(aClipSpacePosition, 0., 1.);\\n  position = aClipSpacePosition;\\n  coordinate = aCoordinate;\\n  uv = aTexCoord;\\n}\\n\";\nconst POSITIONS = [-1, -1, 1, -1, -1, 1, 1, 1];\nexport default class ClipSpace extends Model {\n  constructor(gl, opts) {\n    const TEX_COORDS = POSITIONS.map(coord => coord === -1 ? 0 : coord);\n    super(gl, Object.assign({}, opts, {\n      vs: CLIPSPACE_VERTEX_SHADER,\n      geometry: new Geometry({\n        drawMode: 5,\n        vertexCount: 4,\n        attributes: {\n          aClipSpacePosition: {\n            size: 2,\n            value: new Float32Array(POSITIONS)\n          },\n          aTexCoord: {\n            size: 2,\n            value: new Float32Array(TEX_COORDS)\n          },\n          aCoordinate: {\n            size: 2,\n            value: new Float32Array(TEX_COORDS)\n          }\n        }\n      })\n    }));\n    this.setVertexCount(4);\n  }\n\n}\n//# sourceMappingURL=clip-space.js.map","import { Texture2D, hasFeature, FEATURES, log } from '@luma.gl/webgl';\nexport default class GLTFMaterialParser {\n  constructor(gl, _ref) {\n    let {\n      attributes,\n      material,\n      pbrDebug,\n      imageBasedLightingEnvironment,\n      lights,\n      useTangents\n    } = _ref;\n    this.gl = gl;\n    this.defines = {\n      MANUAL_SRGB: 1,\n      SRGB_FAST_APPROXIMATION: 1\n    };\n\n    if (hasFeature(gl, FEATURES.GLSL_TEXTURE_LOD)) {\n      this.defines.USE_TEX_LOD = 1;\n    }\n\n    this.uniforms = {\n      u_Camera: [0, 0, 0],\n      u_MetallicRoughnessValues: [1, 1]\n    };\n    this.parameters = {};\n    this.generatedTextures = [];\n\n    if (imageBasedLightingEnvironment) {\n      this.uniforms.u_DiffuseEnvSampler = imageBasedLightingEnvironment.getDiffuseEnvSampler();\n      this.uniforms.u_SpecularEnvSampler = imageBasedLightingEnvironment.getSpecularEnvSampler();\n      this.uniforms.u_brdfLUT = imageBasedLightingEnvironment.getBrdfTexture();\n      this.uniforms.u_ScaleIBLAmbient = [1, 1];\n    }\n\n    if (pbrDebug) {\n      this.uniforms.u_ScaleDiffBaseMR = [0, 0, 0, 0];\n      this.uniforms.u_ScaleFGDSpec = [0, 0, 0, 0];\n    }\n\n    this.defineIfPresent(attributes.NORMAL, 'HAS_NORMALS');\n    this.defineIfPresent(attributes.TANGENT && useTangents, 'HAS_TANGENTS');\n    this.defineIfPresent(attributes.TEXCOORD_0, 'HAS_UV');\n    this.defineIfPresent(imageBasedLightingEnvironment, 'USE_IBL');\n    this.defineIfPresent(lights, 'USE_LIGHTS');\n    this.defineIfPresent(pbrDebug, 'PBR_DEBUG');\n\n    if (material) {\n      this.parseMaterial(material);\n    }\n  }\n\n  defineIfPresent(value, name) {\n    if (value) {\n      this.defines[name] = 1;\n    }\n  }\n\n  parseTexture(gltfTexture, name) {\n    let define = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;\n    const parameters = gltfTexture.texture && gltfTexture.texture.sampler && gltfTexture.texture.sampler.parameters || {};\n    const image = gltfTexture.texture.source.image;\n    let textureOptions;\n    let specialTextureParameters = {};\n\n    if (image.compressed) {\n      textureOptions = image;\n      specialTextureParameters = {\n        [this.gl.TEXTURE_MIN_FILTER]: image.data.length > 1 ? this.gl.LINEAR_MIPMAP_NEAREST : this.gl.LINEAR\n      };\n    } else {\n      textureOptions = {\n        data: image\n      };\n    }\n\n    const texture = new Texture2D(this.gl, {\n      id: gltfTexture.name || gltfTexture.id,\n      parameters: { ...parameters,\n        ...specialTextureParameters\n      },\n      pixelStore: {\n        [this.gl.UNPACK_FLIP_Y_WEBGL]: false\n      },\n      ...textureOptions\n    });\n    this.uniforms[name] = texture;\n    this.defineIfPresent(define, define);\n    this.generatedTextures.push(texture);\n  }\n\n  parsePbrMetallicRoughness(pbrMetallicRoughness) {\n    if (pbrMetallicRoughness.baseColorTexture) {\n      this.parseTexture(pbrMetallicRoughness.baseColorTexture, 'u_BaseColorSampler', 'HAS_BASECOLORMAP');\n    }\n\n    this.uniforms.u_BaseColorFactor = pbrMetallicRoughness.baseColorFactor || [1, 1, 1, 1];\n\n    if (pbrMetallicRoughness.metallicRoughnessTexture) {\n      this.parseTexture(pbrMetallicRoughness.metallicRoughnessTexture, 'u_MetallicRoughnessSampler', 'HAS_METALROUGHNESSMAP');\n    }\n\n    const {\n      metallicFactor = 1,\n      roughnessFactor = 1\n    } = pbrMetallicRoughness;\n    this.uniforms.u_MetallicRoughnessValues = [metallicFactor, roughnessFactor];\n  }\n\n  parseMaterial(material) {\n    this.uniforms.pbr_uUnlit = Boolean(material.unlit);\n\n    if (material.pbrMetallicRoughness) {\n      this.parsePbrMetallicRoughness(material.pbrMetallicRoughness);\n    }\n\n    if (material.normalTexture) {\n      this.parseTexture(material.normalTexture, 'u_NormalSampler', 'HAS_NORMALMAP');\n      const {\n        scale = 1\n      } = material.normalTexture;\n      this.uniforms.u_NormalScale = scale;\n    }\n\n    if (material.occlusionTexture) {\n      this.parseTexture(material.occlusionTexture, 'u_OcclusionSampler', 'HAS_OCCLUSIONMAP');\n      const {\n        strength = 1\n      } = material.occlusionTexture;\n      this.uniforms.u_OcclusionStrength = strength;\n    }\n\n    if (material.emissiveTexture) {\n      this.parseTexture(material.emissiveTexture, 'u_EmissiveSampler', 'HAS_EMISSIVEMAP');\n      this.uniforms.u_EmissiveFactor = material.emissiveFactor || [0, 0, 0];\n    }\n\n    if (material.alphaMode === 'MASK') {\n      const {\n        alphaCutoff = 0.5\n      } = material;\n      this.defines.ALPHA_CUTOFF = 1;\n      this.uniforms.u_AlphaCutoff = alphaCutoff;\n    } else if (material.alphaMode === 'BLEND') {\n      log.warn('BLEND alphaMode might not work well because it requires mesh sorting')();\n      Object.assign(this.parameters, {\n        blend: true,\n        blendEquation: this.gl.FUNC_ADD,\n        blendFunc: [this.gl.SRC_ALPHA, this.gl.ONE_MINUS_SRC_ALPHA, this.gl.ONE, this.gl.ONE_MINUS_SRC_ALPHA]\n      });\n    }\n  }\n\n  delete() {\n    this.generatedTextures.forEach(texture => texture.delete());\n  }\n\n}\n//# sourceMappingURL=gltf-material-parser.js.map","import { Log } from '@probe.gl/log';\nexport const log = new Log({\n  id: 'luma.gl'\n});\n//# sourceMappingURL=log.js.map","export function assert(condition, message) {\n  if (!condition) {\n    throw new Error(message || 'luma.gl: assertion failed.');\n  }\n}\n//# sourceMappingURL=assert.js.map","import { assert } from './assert';\nconst ERR_CONTEXT = 'Invalid WebGLRenderingContext';\nexport const ERR_WEBGL = ERR_CONTEXT;\nexport const ERR_WEBGL2 = 'Requires WebGL2';\nexport function isWebGL(gl) {\n  if (typeof WebGLRenderingContext !== 'undefined' && gl instanceof WebGLRenderingContext) {\n    return true;\n  }\n\n  if (typeof WebGL2RenderingContext !== 'undefined' && gl instanceof WebGL2RenderingContext) {\n    return true;\n  }\n\n  return Boolean(gl && Number.isFinite(gl._version));\n}\nexport function isWebGL2(gl) {\n  if (typeof WebGL2RenderingContext !== 'undefined' && gl instanceof WebGL2RenderingContext) {\n    return true;\n  }\n\n  return Boolean(gl && gl._version === 2);\n}\nexport function getWebGL2Context(gl) {\n  return isWebGL2(gl) ? gl : null;\n}\nexport function assertWebGLContext(gl) {\n  assert(isWebGL(gl), ERR_CONTEXT);\n  return gl;\n}\nexport function assertWebGL2Context(gl) {\n  assert(isWebGL2(gl), ERR_WEBGL2);\n  return gl;\n}\n//# sourceMappingURL=webgl-checks.js.map","const glErrorShadow = {};\n\nfunction error(msg) {\n  if (globalThis.console && globalThis.console.error) {\n    globalThis.console.error(msg);\n  }\n}\n\nfunction log(msg) {\n  if (globalThis.console && globalThis.console.log) {\n    globalThis.console.log(msg);\n  }\n}\n\nfunction synthesizeGLError(err, opt_msg) {\n  glErrorShadow[err] = true;\n\n  if (opt_msg !== undefined) {\n    error(opt_msg);\n  }\n}\n\nfunction wrapGLError(gl) {\n  const f = gl.getError;\n\n  gl.getError = function getError() {\n    let err;\n\n    do {\n      err = f.apply(gl);\n\n      if (err !== 0) {\n        glErrorShadow[err] = true;\n      }\n    } while (err !== 0);\n\n    for (err in glErrorShadow) {\n      if (glErrorShadow[err]) {\n        delete glErrorShadow[err];\n        return parseInt(err, 10);\n      }\n    }\n\n    return 0;\n  };\n}\n\nconst WebGLVertexArrayObjectOES = function WebGLVertexArrayObjectOES(ext) {\n  const gl = ext.gl;\n  this.ext = ext;\n  this.isAlive = true;\n  this.hasBeenBound = false;\n  this.elementArrayBuffer = null;\n  this.attribs = new Array(ext.maxVertexAttribs);\n\n  for (let n = 0; n < this.attribs.length; n++) {\n    const attrib = new WebGLVertexArrayObjectOES.VertexAttrib(gl);\n    this.attribs[n] = attrib;\n  }\n\n  this.maxAttrib = 0;\n};\n\nWebGLVertexArrayObjectOES.VertexAttrib = function VertexAttrib(gl) {\n  this.enabled = false;\n  this.buffer = null;\n  this.size = 4;\n  this.type = 5126;\n  this.normalized = false;\n  this.stride = 16;\n  this.offset = 0;\n  this.cached = '';\n  this.recache();\n};\n\nWebGLVertexArrayObjectOES.VertexAttrib.prototype.recache = function recache() {\n  this.cached = [this.size, this.type, this.normalized, this.stride, this.offset].join(':');\n};\n\nconst OESVertexArrayObject = function OESVertexArrayObject(gl) {\n  const self = this;\n  this.gl = gl;\n  wrapGLError(gl);\n  const original = this.original = {\n    getParameter: gl.getParameter,\n    enableVertexAttribArray: gl.enableVertexAttribArray,\n    disableVertexAttribArray: gl.disableVertexAttribArray,\n    bindBuffer: gl.bindBuffer,\n    getVertexAttrib: gl.getVertexAttrib,\n    vertexAttribPointer: gl.vertexAttribPointer\n  };\n\n  gl.getParameter = function getParameter(pname) {\n    if (pname === self.VERTEX_ARRAY_BINDING_OES) {\n      if (self.currentVertexArrayObject === self.defaultVertexArrayObject) {\n        return null;\n      }\n\n      return self.currentVertexArrayObject;\n    }\n\n    return original.getParameter.apply(this, arguments);\n  };\n\n  gl.enableVertexAttribArray = function enableVertexAttribArray(index) {\n    const vao = self.currentVertexArrayObject;\n    vao.maxAttrib = Math.max(vao.maxAttrib, index);\n    const attrib = vao.attribs[index];\n    attrib.enabled = true;\n    return original.enableVertexAttribArray.apply(this, arguments);\n  };\n\n  gl.disableVertexAttribArray = function disableVertexAttribArray(index) {\n    const vao = self.currentVertexArrayObject;\n    vao.maxAttrib = Math.max(vao.maxAttrib, index);\n    const attrib = vao.attribs[index];\n    attrib.enabled = false;\n    return original.disableVertexAttribArray.apply(this, arguments);\n  };\n\n  gl.bindBuffer = function bindBuffer(target, buffer) {\n    switch (target) {\n      case 34962:\n        self.currentArrayBuffer = buffer;\n        break;\n\n      case 34963:\n        self.currentVertexArrayObject.elementArrayBuffer = buffer;\n        break;\n\n      default:\n    }\n\n    return original.bindBuffer.apply(this, arguments);\n  };\n\n  gl.getVertexAttrib = function getVertexAttrib(index, pname) {\n    const vao = self.currentVertexArrayObject;\n    const attrib = vao.attribs[index];\n\n    switch (pname) {\n      case 34975:\n        return attrib.buffer;\n\n      case 34338:\n        return attrib.enabled;\n\n      case 34339:\n        return attrib.size;\n\n      case 34340:\n        return attrib.stride;\n\n      case 34341:\n        return attrib.type;\n\n      case 34922:\n        return attrib.normalized;\n\n      default:\n        return original.getVertexAttrib.apply(this, arguments);\n    }\n  };\n\n  gl.vertexAttribPointer = function vertexAttribPointer(indx, size, type, normalized, stride, offset) {\n    const vao = self.currentVertexArrayObject;\n    vao.maxAttrib = Math.max(vao.maxAttrib, indx);\n    const attrib = vao.attribs[indx];\n    attrib.buffer = self.currentArrayBuffer;\n    attrib.size = size;\n    attrib.type = type;\n    attrib.normalized = normalized;\n    attrib.stride = stride;\n    attrib.offset = offset;\n    attrib.recache();\n    return original.vertexAttribPointer.apply(this, arguments);\n  };\n\n  if (gl.instrumentExtension) {\n    gl.instrumentExtension(this, 'OES_vertex_array_object');\n  }\n\n  if (gl.canvas) {\n    gl.canvas.addEventListener('webglcontextrestored', () => {\n      log('OESVertexArrayObject emulation library context restored');\n      self.reset_();\n    }, true);\n  }\n\n  this.reset_();\n};\n\nOESVertexArrayObject.prototype.VERTEX_ARRAY_BINDING_OES = 0x85b5;\n\nOESVertexArrayObject.prototype.reset_ = function reset_() {\n  const contextWasLost = this.vertexArrayObjects !== undefined;\n\n  if (contextWasLost) {\n    for (let ii = 0; ii < this.vertexArrayObjects.length; ++ii) {\n      this.vertexArrayObjects.isAlive = false;\n    }\n  }\n\n  const gl = this.gl;\n  this.maxVertexAttribs = gl.getParameter(34921);\n  this.defaultVertexArrayObject = new WebGLVertexArrayObjectOES(this);\n  this.currentVertexArrayObject = null;\n  this.currentArrayBuffer = null;\n  this.vertexArrayObjects = [this.defaultVertexArrayObject];\n  this.bindVertexArrayOES(null);\n};\n\nOESVertexArrayObject.prototype.createVertexArrayOES = function createVertexArrayOES() {\n  const arrayObject = new WebGLVertexArrayObjectOES(this);\n  this.vertexArrayObjects.push(arrayObject);\n  return arrayObject;\n};\n\nOESVertexArrayObject.prototype.deleteVertexArrayOES = function deleteVertexArrayOES(arrayObject) {\n  arrayObject.isAlive = false;\n  this.vertexArrayObjects.splice(this.vertexArrayObjects.indexOf(arrayObject), 1);\n\n  if (this.currentVertexArrayObject === arrayObject) {\n    this.bindVertexArrayOES(null);\n  }\n};\n\nOESVertexArrayObject.prototype.isVertexArrayOES = function isVertexArrayOES(arrayObject) {\n  if (arrayObject && arrayObject instanceof WebGLVertexArrayObjectOES) {\n    if (arrayObject.hasBeenBound && arrayObject.ext === this) {\n      return true;\n    }\n  }\n\n  return false;\n};\n\nOESVertexArrayObject.prototype.bindVertexArrayOES = function bindVertexArrayOES(arrayObject) {\n  const gl = this.gl;\n\n  if (arrayObject && !arrayObject.isAlive) {\n    synthesizeGLError(1282, 'bindVertexArrayOES: attempt to bind deleted arrayObject');\n    return;\n  }\n\n  const original = this.original;\n  const oldVAO = this.currentVertexArrayObject;\n  this.currentVertexArrayObject = arrayObject || this.defaultVertexArrayObject;\n  this.currentVertexArrayObject.hasBeenBound = true;\n  const newVAO = this.currentVertexArrayObject;\n\n  if (oldVAO === newVAO) {\n    return;\n  }\n\n  if (!oldVAO || newVAO.elementArrayBuffer !== oldVAO.elementArrayBuffer) {\n    original.bindBuffer.call(gl, 34963, newVAO.elementArrayBuffer);\n  }\n\n  let currentBinding = this.currentArrayBuffer;\n  const maxAttrib = Math.max(oldVAO ? oldVAO.maxAttrib : 0, newVAO.maxAttrib);\n\n  for (let n = 0; n <= maxAttrib; n++) {\n    const attrib = newVAO.attribs[n];\n    const oldAttrib = oldVAO ? oldVAO.attribs[n] : null;\n\n    if (!oldVAO || attrib.enabled !== oldAttrib.enabled) {\n      if (attrib.enabled) {\n        original.enableVertexAttribArray.call(gl, n);\n      } else {\n        original.disableVertexAttribArray.call(gl, n);\n      }\n    }\n\n    if (attrib.enabled) {\n      let bufferChanged = false;\n\n      if (!oldVAO || attrib.buffer !== oldAttrib.buffer) {\n        if (currentBinding !== attrib.buffer) {\n          original.bindBuffer.call(gl, 34962, attrib.buffer);\n          currentBinding = attrib.buffer;\n        }\n\n        bufferChanged = true;\n      }\n\n      if (bufferChanged || attrib.cached !== oldAttrib.cached) {\n        original.vertexAttribPointer.call(gl, n, attrib.size, attrib.type, attrib.normalized, attrib.stride, attrib.offset);\n      }\n    }\n  }\n\n  if (this.currentArrayBuffer !== currentBinding) {\n    original.bindBuffer.call(gl, 34962, this.currentArrayBuffer);\n  }\n};\n\nexport function polyfillVertexArrayObject(gl) {\n  if (typeof gl.createVertexArray === 'function') {\n    return;\n  }\n\n  const original_getSupportedExtensions = gl.getSupportedExtensions;\n\n  gl.getSupportedExtensions = function getSupportedExtensions() {\n    const list = original_getSupportedExtensions.call(this) || [];\n\n    if (list.indexOf('OES_vertex_array_object') < 0) {\n      list.push('OES_vertex_array_object');\n    }\n\n    return list;\n  };\n\n  const original_getExtension = gl.getExtension;\n\n  gl.getExtension = function getExtension(name) {\n    const ext = original_getExtension.call(this, name);\n\n    if (ext) {\n      return ext;\n    }\n\n    if (name !== 'OES_vertex_array_object') {\n      return null;\n    }\n\n    if (!gl.__OESVertexArrayObject) {\n      this.__OESVertexArrayObject = new OESVertexArrayObject(this);\n    }\n\n    return this.__OESVertexArrayObject;\n  };\n}\n//# sourceMappingURL=polyfill-vertex-array-object.js.map","import { isWebGL2 } from '../utils/webgl-checks';\nconst OES_element_index = 'OES_element_index';\nconst WEBGL_draw_buffers = 'WEBGL_draw_buffers';\nconst EXT_disjoint_timer_query = 'EXT_disjoint_timer_query';\nconst EXT_disjoint_timer_query_webgl2 = 'EXT_disjoint_timer_query_webgl2';\nconst EXT_texture_filter_anisotropic = 'EXT_texture_filter_anisotropic';\nconst WEBGL_debug_renderer_info = 'WEBGL_debug_renderer_info';\nconst GL_FRAGMENT_SHADER_DERIVATIVE_HINT = 0x8b8b;\nconst GL_DONT_CARE = 0x1100;\nconst GL_GPU_DISJOINT_EXT = 0x8fbb;\nconst GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT = 0x84ff;\nconst GL_UNMASKED_VENDOR_WEBGL = 0x9245;\nconst GL_UNMASKED_RENDERER_WEBGL = 0x9246;\n\nconst getWebGL2ValueOrZero = gl => !isWebGL2(gl) ? 0 : undefined;\n\nconst WEBGL_PARAMETERS = {\n  [3074]: gl => !isWebGL2(gl) ? 36064 : undefined,\n  [GL_FRAGMENT_SHADER_DERIVATIVE_HINT]: gl => !isWebGL2(gl) ? GL_DONT_CARE : undefined,\n  [35977]: getWebGL2ValueOrZero,\n  [32937]: getWebGL2ValueOrZero,\n  [GL_GPU_DISJOINT_EXT]: (gl, getParameter) => {\n    const ext = isWebGL2(gl) ? gl.getExtension(EXT_disjoint_timer_query_webgl2) : gl.getExtension(EXT_disjoint_timer_query);\n    return ext && ext.GPU_DISJOINT_EXT ? getParameter(ext.GPU_DISJOINT_EXT) : 0;\n  },\n  [GL_UNMASKED_VENDOR_WEBGL]: (gl, getParameter) => {\n    const ext = gl.getExtension(WEBGL_debug_renderer_info);\n    return getParameter(ext && ext.UNMASKED_VENDOR_WEBGL || 7936);\n  },\n  [GL_UNMASKED_RENDERER_WEBGL]: (gl, getParameter) => {\n    const ext = gl.getExtension(WEBGL_debug_renderer_info);\n    return getParameter(ext && ext.UNMASKED_RENDERER_WEBGL || 7937);\n  },\n  [GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT]: (gl, getParameter) => {\n    const ext = gl.luma.extensions[EXT_texture_filter_anisotropic];\n    return ext ? getParameter(ext.MAX_TEXTURE_MAX_ANISOTROPY_EXT) : 1.0;\n  },\n  [32883]: getWebGL2ValueOrZero,\n  [35071]: getWebGL2ValueOrZero,\n  [37447]: getWebGL2ValueOrZero,\n  [36063]: (gl, getParameter) => {\n    if (!isWebGL2(gl)) {\n      const ext = gl.getExtension(WEBGL_draw_buffers);\n      return ext ? getParameter(ext.MAX_COLOR_ATTACHMENTS_WEBGL) : 0;\n    }\n\n    return undefined;\n  },\n  [35379]: getWebGL2ValueOrZero,\n  [35374]: getWebGL2ValueOrZero,\n  [35377]: getWebGL2ValueOrZero,\n  [34852]: gl => {\n    if (!isWebGL2(gl)) {\n      const ext = gl.getExtension(WEBGL_draw_buffers);\n      return ext ? ext.MAX_DRAW_BUFFERS_WEBGL : 0;\n    }\n\n    return undefined;\n  },\n  [36203]: gl => gl.getExtension(OES_element_index) ? 2147483647 : 65535,\n  [33001]: gl => gl.getExtension(OES_element_index) ? 16777216 : 65535,\n  [33000]: gl => 16777216,\n  [37157]: getWebGL2ValueOrZero,\n  [35373]: getWebGL2ValueOrZero,\n  [35657]: getWebGL2ValueOrZero,\n  [36183]: getWebGL2ValueOrZero,\n  [37137]: getWebGL2ValueOrZero,\n  [34045]: getWebGL2ValueOrZero,\n  [35978]: getWebGL2ValueOrZero,\n  [35979]: getWebGL2ValueOrZero,\n  [35968]: getWebGL2ValueOrZero,\n  [35376]: getWebGL2ValueOrZero,\n  [35375]: getWebGL2ValueOrZero,\n  [35659]: getWebGL2ValueOrZero,\n  [37154]: getWebGL2ValueOrZero,\n  [35371]: getWebGL2ValueOrZero,\n  [35658]: getWebGL2ValueOrZero,\n  [35076]: getWebGL2ValueOrZero,\n  [35077]: getWebGL2ValueOrZero,\n  [35380]: getWebGL2ValueOrZero\n};\nexport function getParameterPolyfill(gl, originalGetParameter, pname) {\n  const limit = WEBGL_PARAMETERS[pname];\n  const value = typeof limit === 'function' ? limit(gl, originalGetParameter, pname) : limit;\n  const result = value !== undefined ? value : originalGetParameter(pname);\n  return result;\n}\n//# sourceMappingURL=get-parameter-polyfill.js.map","import { assert } from '../utils/assert';\nimport { isWebGL2 } from '../utils/webgl-checks';\nimport { getParameterPolyfill } from './get-parameter-polyfill';\nconst OES_vertex_array_object = 'OES_vertex_array_object';\nconst ANGLE_instanced_arrays = 'ANGLE_instanced_arrays';\nconst WEBGL_draw_buffers = 'WEBGL_draw_buffers';\nconst EXT_disjoint_timer_query = 'EXT_disjoint_timer_query';\nconst EXT_texture_filter_anisotropic = 'EXT_texture_filter_anisotropic';\nconst ERR_VAO_NOT_SUPPORTED = 'VertexArray requires WebGL2 or OES_vertex_array_object extension';\n\nfunction getExtensionData(gl, extension) {\n  return {\n    webgl2: isWebGL2(gl),\n    ext: gl.getExtension(extension)\n  };\n}\n\nexport const WEBGL2_CONTEXT_POLYFILLS = {\n  [OES_vertex_array_object]: {\n    meta: {\n      suffix: 'OES'\n    },\n    createVertexArray: () => {\n      assert(false, ERR_VAO_NOT_SUPPORTED);\n    },\n    deleteVertexArray: () => {},\n    bindVertexArray: () => {},\n    isVertexArray: () => false\n  },\n  [ANGLE_instanced_arrays]: {\n    meta: {\n      suffix: 'ANGLE'\n    },\n\n    vertexAttribDivisor(location, divisor) {\n      assert(divisor === 0, 'WebGL instanced rendering not supported');\n    },\n\n    drawElementsInstanced: () => {},\n    drawArraysInstanced: () => {}\n  },\n  [WEBGL_draw_buffers]: {\n    meta: {\n      suffix: 'WEBGL'\n    },\n    drawBuffers: () => {\n      assert(false);\n    }\n  },\n  [EXT_disjoint_timer_query]: {\n    meta: {\n      suffix: 'EXT'\n    },\n    createQuery: () => {\n      assert(false);\n    },\n    deleteQuery: () => {\n      assert(false);\n    },\n    beginQuery: () => {\n      assert(false);\n    },\n    endQuery: () => {},\n\n    getQuery(handle, pname) {\n      return this.getQueryObject(handle, pname);\n    },\n\n    getQueryParameter(handle, pname) {\n      return this.getQueryObject(handle, pname);\n    },\n\n    getQueryObject: () => {}\n  }\n};\nexport const WEBGL2_CONTEXT_OVERRIDES = {\n  readBuffer: (gl, originalFunc, attachment) => {\n    if (isWebGL2(gl)) {\n      originalFunc(attachment);\n    } else {}\n  },\n  getVertexAttrib: (gl, originalFunc, location, pname) => {\n    const {\n      webgl2,\n      ext\n    } = getExtensionData(gl, ANGLE_instanced_arrays);\n    let result;\n\n    switch (pname) {\n      case 35069:\n        result = !webgl2 ? false : undefined;\n        break;\n\n      case 35070:\n        result = !webgl2 && !ext ? 0 : undefined;\n        break;\n\n      default:\n    }\n\n    return result !== undefined ? result : originalFunc(location, pname);\n  },\n  getProgramParameter: (gl, originalFunc, program, pname) => {\n    if (!isWebGL2(gl)) {\n      switch (pname) {\n        case 35967:\n          return 35981;\n\n        case 35971:\n          return 0;\n\n        case 35382:\n          return 0;\n\n        default:\n      }\n    }\n\n    return originalFunc(program, pname);\n  },\n  getInternalformatParameter: (gl, originalFunc, target, format, pname) => {\n    if (!isWebGL2(gl)) {\n      switch (pname) {\n        case 32937:\n          return new Int32Array([0]);\n\n        default:\n      }\n    }\n\n    return gl.getInternalformatParameter(target, format, pname);\n  },\n\n  getTexParameter(gl, originalFunc, target, pname) {\n    switch (pname) {\n      case 34046:\n        const {\n          extensions\n        } = gl.luma;\n        const ext = extensions[EXT_texture_filter_anisotropic];\n        pname = ext && ext.TEXTURE_MAX_ANISOTROPY_EXT || 34046;\n        break;\n\n      default:\n    }\n\n    return originalFunc(target, pname);\n  },\n\n  getParameter: getParameterPolyfill,\n\n  hint(gl, originalFunc, pname, value) {\n    return originalFunc(pname, value);\n  }\n\n};\n//# sourceMappingURL=polyfill-table.js.map","import { polyfillVertexArrayObject } from './polyfill-vertex-array-object';\nimport { assert } from '../utils/assert';\nimport { WEBGL2_CONTEXT_POLYFILLS, WEBGL2_CONTEXT_OVERRIDES } from './polyfill-table';\nexport function polyfillContext(gl) {\n  gl.luma = gl.luma || {};\n  const {\n    luma\n  } = gl;\n\n  if (!luma.polyfilled) {\n    polyfillVertexArrayObject(gl);\n    initializeExtensions(gl);\n    installPolyfills(gl, WEBGL2_CONTEXT_POLYFILLS);\n    installOverrides(gl, {\n      target: luma,\n      target2: gl\n    });\n    luma.polyfilled = true;\n  }\n\n  return gl;\n}\nglobalThis.polyfillContext = polyfillContext;\n\nfunction initializeExtensions(gl) {\n  gl.luma.extensions = {};\n  const EXTENSIONS = gl.getSupportedExtensions() || [];\n\n  for (const extension of EXTENSIONS) {\n    gl.luma[extension] = gl.getExtension(extension);\n  }\n}\n\nfunction installOverrides(gl, _ref) {\n  let {\n    target,\n    target2\n  } = _ref;\n  Object.keys(WEBGL2_CONTEXT_OVERRIDES).forEach(key => {\n    if (typeof WEBGL2_CONTEXT_OVERRIDES[key] === 'function') {\n      const originalFunc = gl[key] ? gl[key].bind(gl) : () => {};\n      const polyfill = WEBGL2_CONTEXT_OVERRIDES[key].bind(null, gl, originalFunc);\n      target[key] = polyfill;\n      target2[key] = polyfill;\n    }\n  });\n}\n\nfunction installPolyfills(gl, polyfills) {\n  for (const extension of Object.getOwnPropertyNames(polyfills)) {\n    if (extension !== 'overrides') {\n      polyfillExtension(gl, {\n        extension,\n        target: gl.luma,\n        target2: gl\n      });\n    }\n  }\n}\n\nfunction polyfillExtension(gl, _ref2) {\n  let {\n    extension,\n    target,\n    target2\n  } = _ref2;\n  const defaults = WEBGL2_CONTEXT_POLYFILLS[extension];\n  assert(defaults);\n  const {\n    meta = {}\n  } = defaults;\n  const {\n    suffix = ''\n  } = meta;\n  const ext = gl.getExtension(extension);\n\n  for (const key of Object.keys(defaults)) {\n    const extKey = \"\".concat(key).concat(suffix);\n    let polyfill = null;\n\n    if (key === 'meta') {} else if (typeof gl[key] === 'function') {} else if (ext && typeof ext[extKey] === 'function') {\n      polyfill = function () {\n        return ext[extKey](...arguments);\n      };\n    } else if (typeof defaults[key] === 'function') {\n      polyfill = defaults[key].bind(target);\n    }\n\n    if (polyfill) {\n      target[key] = polyfill;\n      target2[key] = polyfill;\n    }\n  }\n}\n//# sourceMappingURL=polyfill-context.js.map","import { isWebGL2 } from '../utils/webgl-checks';\nexport const GL_PARAMETER_DEFAULTS = {\n  [3042]: false,\n  [32773]: new Float32Array([0, 0, 0, 0]),\n  [32777]: 32774,\n  [34877]: 32774,\n  [32969]: 1,\n  [32968]: 0,\n  [32971]: 1,\n  [32970]: 0,\n  [3106]: new Float32Array([0, 0, 0, 0]),\n  [3107]: [true, true, true, true],\n  [2884]: false,\n  [2885]: 1029,\n  [2929]: false,\n  [2931]: 1,\n  [2932]: 513,\n  [2928]: new Float32Array([0, 1]),\n  [2930]: true,\n  [3024]: true,\n  [36006]: null,\n  [2886]: 2305,\n  [33170]: 4352,\n  [2849]: 1,\n  [32823]: false,\n  [32824]: 0,\n  [10752]: 0,\n  [32938]: 1.0,\n  [32939]: false,\n  [3089]: false,\n  [3088]: new Int32Array([0, 0, 1024, 1024]),\n  [2960]: false,\n  [2961]: 0,\n  [2968]: 0xffffffff,\n  [36005]: 0xffffffff,\n  [2962]: 519,\n  [2967]: 0,\n  [2963]: 0xffffffff,\n  [34816]: 519,\n  [36003]: 0,\n  [36004]: 0xffffffff,\n  [2964]: 7680,\n  [2965]: 7680,\n  [2966]: 7680,\n  [34817]: 7680,\n  [34818]: 7680,\n  [34819]: 7680,\n  [2978]: [0, 0, 1024, 1024],\n  [3333]: 4,\n  [3317]: 4,\n  [37440]: false,\n  [37441]: false,\n  [37443]: 37444,\n  [35723]: 4352,\n  [36010]: null,\n  [35977]: false,\n  [3330]: 0,\n  [3332]: 0,\n  [3331]: 0,\n  [3314]: 0,\n  [32878]: 0,\n  [3316]: 0,\n  [3315]: 0,\n  [32877]: 0\n};\n\nconst enable = (gl, value, key) => value ? gl.enable(key) : gl.disable(key);\n\nconst hint = (gl, value, key) => gl.hint(key, value);\n\nconst pixelStorei = (gl, value, key) => gl.pixelStorei(key, value);\n\nconst drawFramebuffer = (gl, value) => {\n  const target = isWebGL2(gl) ? 36009 : 36160;\n  return gl.bindFramebuffer(target, value);\n};\n\nconst readFramebuffer = (gl, value) => {\n  return gl.bindFramebuffer(36008, value);\n};\n\nfunction isArray(array) {\n  return Array.isArray(array) || ArrayBuffer.isView(array);\n}\n\nexport const GL_PARAMETER_SETTERS = {\n  [3042]: enable,\n  [32773]: (gl, value) => gl.blendColor(...value),\n  [32777]: 'blendEquation',\n  [34877]: 'blendEquation',\n  [32969]: 'blendFunc',\n  [32968]: 'blendFunc',\n  [32971]: 'blendFunc',\n  [32970]: 'blendFunc',\n  [3106]: (gl, value) => gl.clearColor(...value),\n  [3107]: (gl, value) => gl.colorMask(...value),\n  [2884]: enable,\n  [2885]: (gl, value) => gl.cullFace(value),\n  [2929]: enable,\n  [2931]: (gl, value) => gl.clearDepth(value),\n  [2932]: (gl, value) => gl.depthFunc(value),\n  [2928]: (gl, value) => gl.depthRange(...value),\n  [2930]: (gl, value) => gl.depthMask(value),\n  [3024]: enable,\n  [35723]: hint,\n  [36006]: drawFramebuffer,\n  [2886]: (gl, value) => gl.frontFace(value),\n  [33170]: hint,\n  [2849]: (gl, value) => gl.lineWidth(value),\n  [32823]: enable,\n  [32824]: 'polygonOffset',\n  [10752]: 'polygonOffset',\n  [35977]: enable,\n  [32938]: 'sampleCoverage',\n  [32939]: 'sampleCoverage',\n  [3089]: enable,\n  [3088]: (gl, value) => gl.scissor(...value),\n  [2960]: enable,\n  [2961]: (gl, value) => gl.clearStencil(value),\n  [2968]: (gl, value) => gl.stencilMaskSeparate(1028, value),\n  [36005]: (gl, value) => gl.stencilMaskSeparate(1029, value),\n  [2962]: 'stencilFuncFront',\n  [2967]: 'stencilFuncFront',\n  [2963]: 'stencilFuncFront',\n  [34816]: 'stencilFuncBack',\n  [36003]: 'stencilFuncBack',\n  [36004]: 'stencilFuncBack',\n  [2964]: 'stencilOpFront',\n  [2965]: 'stencilOpFront',\n  [2966]: 'stencilOpFront',\n  [34817]: 'stencilOpBack',\n  [34818]: 'stencilOpBack',\n  [34819]: 'stencilOpBack',\n  [2978]: (gl, value) => gl.viewport(...value),\n  [3333]: pixelStorei,\n  [3317]: pixelStorei,\n  [37440]: pixelStorei,\n  [37441]: pixelStorei,\n  [37443]: pixelStorei,\n  [3330]: pixelStorei,\n  [3332]: pixelStorei,\n  [3331]: pixelStorei,\n  [36010]: readFramebuffer,\n  [3314]: pixelStorei,\n  [32878]: pixelStorei,\n  [3316]: pixelStorei,\n  [3315]: pixelStorei,\n  [32877]: pixelStorei,\n  framebuffer: (gl, framebuffer) => {\n    const handle = framebuffer && 'handle' in framebuffer ? framebuffer.handle : framebuffer;\n    return gl.bindFramebuffer(36160, handle);\n  },\n  blend: (gl, value) => value ? gl.enable(3042) : gl.disable(3042),\n  blendColor: (gl, value) => gl.blendColor(...value),\n  blendEquation: (gl, args) => {\n    args = isArray(args) ? args : [args, args];\n    gl.blendEquationSeparate(...args);\n  },\n  blendFunc: (gl, args) => {\n    args = isArray(args) && args.length === 2 ? [...args, ...args] : args;\n    gl.blendFuncSeparate(...args);\n  },\n  clearColor: (gl, value) => gl.clearColor(...value),\n  clearDepth: (gl, value) => gl.clearDepth(value),\n  clearStencil: (gl, value) => gl.clearStencil(value),\n  colorMask: (gl, value) => gl.colorMask(...value),\n  cull: (gl, value) => value ? gl.enable(2884) : gl.disable(2884),\n  cullFace: (gl, value) => gl.cullFace(value),\n  depthTest: (gl, value) => value ? gl.enable(2929) : gl.disable(2929),\n  depthFunc: (gl, value) => gl.depthFunc(value),\n  depthMask: (gl, value) => gl.depthMask(value),\n  depthRange: (gl, value) => gl.depthRange(...value),\n  dither: (gl, value) => value ? gl.enable(3024) : gl.disable(3024),\n  derivativeHint: (gl, value) => {\n    gl.hint(35723, value);\n  },\n  frontFace: (gl, value) => gl.frontFace(value),\n  mipmapHint: (gl, value) => gl.hint(33170, value),\n  lineWidth: (gl, value) => gl.lineWidth(value),\n  polygonOffsetFill: (gl, value) => value ? gl.enable(32823) : gl.disable(32823),\n  polygonOffset: (gl, value) => gl.polygonOffset(...value),\n  sampleCoverage: (gl, value) => gl.sampleCoverage(...value),\n  scissorTest: (gl, value) => value ? gl.enable(3089) : gl.disable(3089),\n  scissor: (gl, value) => gl.scissor(...value),\n  stencilTest: (gl, value) => value ? gl.enable(2960) : gl.disable(2960),\n  stencilMask: (gl, value) => {\n    value = isArray(value) ? value : [value, value];\n    const [mask, backMask] = value;\n    gl.stencilMaskSeparate(1028, mask);\n    gl.stencilMaskSeparate(1029, backMask);\n  },\n  stencilFunc: (gl, args) => {\n    args = isArray(args) && args.length === 3 ? [...args, ...args] : args;\n    const [func, ref, mask, backFunc, backRef, backMask] = args;\n    gl.stencilFuncSeparate(1028, func, ref, mask);\n    gl.stencilFuncSeparate(1029, backFunc, backRef, backMask);\n  },\n  stencilOp: (gl, args) => {\n    args = isArray(args) && args.length === 3 ? [...args, ...args] : args;\n    const [sfail, dpfail, dppass, backSfail, backDpfail, backDppass] = args;\n    gl.stencilOpSeparate(1028, sfail, dpfail, dppass);\n    gl.stencilOpSeparate(1029, backSfail, backDpfail, backDppass);\n  },\n  viewport: (gl, value) => gl.viewport(...value)\n};\n\nfunction getValue(glEnum, values, cache) {\n  return values[glEnum] !== undefined ? values[glEnum] : cache[glEnum];\n}\n\nexport const GL_COMPOSITE_PARAMETER_SETTERS = {\n  blendEquation: (gl, values, cache) => gl.blendEquationSeparate(getValue(32777, values, cache), getValue(34877, values, cache)),\n  blendFunc: (gl, values, cache) => gl.blendFuncSeparate(getValue(32969, values, cache), getValue(32968, values, cache), getValue(32971, values, cache), getValue(32970, values, cache)),\n  polygonOffset: (gl, values, cache) => gl.polygonOffset(getValue(32824, values, cache), getValue(10752, values, cache)),\n  sampleCoverage: (gl, values, cache) => gl.sampleCoverage(getValue(32938, values, cache), getValue(32939, values, cache)),\n  stencilFuncFront: (gl, values, cache) => gl.stencilFuncSeparate(1028, getValue(2962, values, cache), getValue(2967, values, cache), getValue(2963, values, cache)),\n  stencilFuncBack: (gl, values, cache) => gl.stencilFuncSeparate(1029, getValue(34816, values, cache), getValue(36003, values, cache), getValue(36004, values, cache)),\n  stencilOpFront: (gl, values, cache) => gl.stencilOpSeparate(1028, getValue(2964, values, cache), getValue(2965, values, cache), getValue(2966, values, cache)),\n  stencilOpBack: (gl, values, cache) => gl.stencilOpSeparate(1029, getValue(34817, values, cache), getValue(34818, values, cache), getValue(34819, values, cache))\n};\nexport const GL_HOOKED_SETTERS = {\n  enable: (update, capability) => update({\n    [capability]: true\n  }),\n  disable: (update, capability) => update({\n    [capability]: false\n  }),\n  pixelStorei: (update, pname, value) => update({\n    [pname]: value\n  }),\n  hint: (update, pname, hint) => update({\n    [pname]: hint\n  }),\n  bindFramebuffer: (update, target, framebuffer) => {\n    switch (target) {\n      case 36160:\n        return update({\n          [36006]: framebuffer,\n          [36010]: framebuffer\n        });\n\n      case 36009:\n        return update({\n          [36006]: framebuffer\n        });\n\n      case 36008:\n        return update({\n          [36010]: framebuffer\n        });\n\n      default:\n        return null;\n    }\n  },\n  blendColor: (update, r, g, b, a) => update({\n    [32773]: new Float32Array([r, g, b, a])\n  }),\n  blendEquation: (update, mode) => update({\n    [32777]: mode,\n    [34877]: mode\n  }),\n  blendEquationSeparate: (update, modeRGB, modeAlpha) => update({\n    [32777]: modeRGB,\n    [34877]: modeAlpha\n  }),\n  blendFunc: (update, src, dst) => update({\n    [32969]: src,\n    [32968]: dst,\n    [32971]: src,\n    [32970]: dst\n  }),\n  blendFuncSeparate: (update, srcRGB, dstRGB, srcAlpha, dstAlpha) => update({\n    [32969]: srcRGB,\n    [32968]: dstRGB,\n    [32971]: srcAlpha,\n    [32970]: dstAlpha\n  }),\n  clearColor: (update, r, g, b, a) => update({\n    [3106]: new Float32Array([r, g, b, a])\n  }),\n  clearDepth: (update, depth) => update({\n    [2931]: depth\n  }),\n  clearStencil: (update, s) => update({\n    [2961]: s\n  }),\n  colorMask: (update, r, g, b, a) => update({\n    [3107]: [r, g, b, a]\n  }),\n  cullFace: (update, mode) => update({\n    [2885]: mode\n  }),\n  depthFunc: (update, func) => update({\n    [2932]: func\n  }),\n  depthRange: (update, zNear, zFar) => update({\n    [2928]: new Float32Array([zNear, zFar])\n  }),\n  depthMask: (update, mask) => update({\n    [2930]: mask\n  }),\n  frontFace: (update, face) => update({\n    [2886]: face\n  }),\n  lineWidth: (update, width) => update({\n    [2849]: width\n  }),\n  polygonOffset: (update, factor, units) => update({\n    [32824]: factor,\n    [10752]: units\n  }),\n  sampleCoverage: (update, value, invert) => update({\n    [32938]: value,\n    [32939]: invert\n  }),\n  scissor: (update, x, y, width, height) => update({\n    [3088]: new Int32Array([x, y, width, height])\n  }),\n  stencilMask: (update, mask) => update({\n    [2968]: mask,\n    [36005]: mask\n  }),\n  stencilMaskSeparate: (update, face, mask) => update({\n    [face === 1028 ? 2968 : 36005]: mask\n  }),\n  stencilFunc: (update, func, ref, mask) => update({\n    [2962]: func,\n    [2967]: ref,\n    [2963]: mask,\n    [34816]: func,\n    [36003]: ref,\n    [36004]: mask\n  }),\n  stencilFuncSeparate: (update, face, func, ref, mask) => update({\n    [face === 1028 ? 2962 : 34816]: func,\n    [face === 1028 ? 2967 : 36003]: ref,\n    [face === 1028 ? 2963 : 36004]: mask\n  }),\n  stencilOp: (update, fail, zfail, zpass) => update({\n    [2964]: fail,\n    [2965]: zfail,\n    [2966]: zpass,\n    [34817]: fail,\n    [34818]: zfail,\n    [34819]: zpass\n  }),\n  stencilOpSeparate: (update, face, fail, zfail, zpass) => update({\n    [face === 1028 ? 2964 : 34817]: fail,\n    [face === 1028 ? 2965 : 34818]: zfail,\n    [face === 1028 ? 2966 : 34819]: zpass\n  }),\n  viewport: (update, x, y, width, height) => update({\n    [2978]: [x, y, width, height]\n  })\n};\n\nconst isEnabled = (gl, key) => gl.isEnabled(key);\n\nexport const GL_PARAMETER_GETTERS = {\n  [3042]: isEnabled,\n  [2884]: isEnabled,\n  [2929]: isEnabled,\n  [3024]: isEnabled,\n  [32823]: isEnabled,\n  [32926]: isEnabled,\n  [32928]: isEnabled,\n  [3089]: isEnabled,\n  [2960]: isEnabled,\n  [35977]: isEnabled\n};\n//# sourceMappingURL=webgl-parameter-tables.js.map","export function isObjectEmpty(object) {\n  for (const key in object) {\n    return false;\n  }\n\n  return true;\n}\nexport function deepArrayEqual(x, y) {\n  if (x === y) {\n    return true;\n  }\n\n  const isArrayX = Array.isArray(x) || ArrayBuffer.isView(x);\n  const isArrayY = Array.isArray(y) || ArrayBuffer.isView(y);\n\n  if (isArrayX && isArrayY && x.length === y.length) {\n    for (let i = 0; i < x.length; ++i) {\n      if (x[i] !== y[i]) {\n        return false;\n      }\n    }\n\n    return true;\n  }\n\n  return false;\n}\n//# sourceMappingURL=utils.js.map","import { GL_PARAMETER_DEFAULTS, GL_HOOKED_SETTERS } from './webgl-parameter-tables';\nimport { setParameters, getParameters } from './unified-parameter-api';\nimport { assert } from '../utils/assert';\nimport { deepArrayEqual } from '../utils/utils';\n\nfunction installGetterOverride(gl, functionName) {\n  const originalGetterFunc = gl[functionName].bind(gl);\n\n  gl[functionName] = function get() {\n    const pname = arguments.length <= 0 ? undefined : arguments[0];\n\n    if (!(pname in gl.state.cache)) {\n      return originalGetterFunc(...arguments);\n    }\n\n    return gl.state.enable ? gl.state.cache[pname] : originalGetterFunc(...arguments);\n  };\n\n  Object.defineProperty(gl[functionName], 'name', {\n    value: \"\".concat(functionName, \"-from-cache\"),\n    configurable: false\n  });\n}\n\nfunction installSetterSpy(gl, functionName, setter) {\n  const originalSetterFunc = gl[functionName].bind(gl);\n\n  gl[functionName] = function set() {\n    for (var _len = arguments.length, params = new Array(_len), _key = 0; _key < _len; _key++) {\n      params[_key] = arguments[_key];\n    }\n\n    const {\n      valueChanged,\n      oldValue\n    } = setter(gl.state._updateCache, ...params);\n\n    if (valueChanged) {\n      originalSetterFunc(...params);\n    }\n\n    return oldValue;\n  };\n\n  Object.defineProperty(gl[functionName], 'name', {\n    value: \"\".concat(functionName, \"-to-cache\"),\n    configurable: false\n  });\n}\n\nfunction installProgramSpy(gl) {\n  const originalUseProgram = gl.useProgram.bind(gl);\n\n  gl.useProgram = function useProgramLuma(handle) {\n    if (gl.state.program !== handle) {\n      originalUseProgram(handle);\n      gl.state.program = handle;\n    }\n  };\n}\n\nclass GLState {\n  constructor(gl) {\n    let {\n      copyState = false,\n      log = () => {}\n    } = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n    this.gl = gl;\n    this.program = null;\n    this.stateStack = [];\n    this.enable = true;\n    this.cache = copyState ? getParameters(gl) : Object.assign({}, GL_PARAMETER_DEFAULTS);\n    this.log = log;\n    this._updateCache = this._updateCache.bind(this);\n    Object.seal(this);\n  }\n\n  push() {\n    let values = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n    this.stateStack.push({});\n  }\n\n  pop() {\n    assert(this.stateStack.length > 0);\n    const oldValues = this.stateStack[this.stateStack.length - 1];\n    setParameters(this.gl, oldValues);\n    this.stateStack.pop();\n  }\n\n  _updateCache(values) {\n    let valueChanged = false;\n    let oldValue;\n    const oldValues = this.stateStack.length > 0 && this.stateStack[this.stateStack.length - 1];\n\n    for (const key in values) {\n      assert(key !== undefined);\n      const value = values[key];\n      const cached = this.cache[key];\n\n      if (!deepArrayEqual(value, cached)) {\n        valueChanged = true;\n        oldValue = cached;\n\n        if (oldValues && !(key in oldValues)) {\n          oldValues[key] = cached;\n        }\n\n        this.cache[key] = value;\n      }\n    }\n\n    return {\n      valueChanged,\n      oldValue\n    };\n  }\n\n}\n\nexport function trackContextState(gl) {\n  let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n  const {\n    enable = true,\n    copyState\n  } = options;\n  assert(copyState !== undefined);\n\n  if (!gl.state) {\n    const {\n      polyfillContext\n    } = globalThis;\n\n    if (polyfillContext) {\n      polyfillContext(gl);\n    }\n\n    gl.state = new GLState(gl, {\n      copyState\n    });\n    installProgramSpy(gl);\n\n    for (const key in GL_HOOKED_SETTERS) {\n      const setter = GL_HOOKED_SETTERS[key];\n      installSetterSpy(gl, key, setter);\n    }\n\n    installGetterOverride(gl, 'getParameter');\n    installGetterOverride(gl, 'isEnabled');\n  }\n\n  gl.state.enable = enable;\n  return gl;\n}\nexport function pushContextState(gl) {\n  if (!gl.state) {\n    trackContextState(gl, {\n      copyState: false\n    });\n  }\n\n  gl.state.push();\n}\nexport function popContextState(gl) {\n  assert(gl.state);\n  gl.state.pop();\n}\n//# sourceMappingURL=track-context-state.js.map","import { GL_PARAMETER_DEFAULTS, GL_PARAMETER_SETTERS, GL_COMPOSITE_PARAMETER_SETTERS, GL_PARAMETER_GETTERS } from './webgl-parameter-tables';\nimport { pushContextState, popContextState } from './track-context-state';\nimport { assert } from '../utils/assert';\nimport { isWebGL } from '../utils/webgl-checks';\nimport { isObjectEmpty } from '../utils/utils';\nexport function setParameters(gl, values) {\n  assert(isWebGL(gl), 'setParameters requires a WebGL context');\n\n  if (isObjectEmpty(values)) {\n    return;\n  }\n\n  const compositeSetters = {};\n\n  for (const key in values) {\n    const glConstant = Number(key);\n    const setter = GL_PARAMETER_SETTERS[key];\n\n    if (setter) {\n      if (typeof setter === 'string') {\n        compositeSetters[setter] = true;\n      } else {\n        setter(gl, values[key], glConstant);\n      }\n    }\n  }\n\n  const cache = gl.state && gl.state.cache;\n\n  if (cache) {\n    for (const key in compositeSetters) {\n      const compositeSetter = GL_COMPOSITE_PARAMETER_SETTERS[key];\n      compositeSetter(gl, values, cache);\n    }\n  }\n}\nexport function getParameters(gl, parameters) {\n  parameters = parameters || GL_PARAMETER_DEFAULTS;\n\n  if (typeof parameters === 'number') {\n    const key = parameters;\n    const getter = GL_PARAMETER_GETTERS[key];\n    return getter ? getter(gl, key) : gl.getParameter(key);\n  }\n\n  const parameterKeys = Array.isArray(parameters) ? parameters : Object.keys(parameters);\n  const state = {};\n\n  for (const key of parameterKeys) {\n    const getter = GL_PARAMETER_GETTERS[key];\n    state[key] = getter ? getter(gl, Number(key)) : gl.getParameter(Number(key));\n  }\n\n  return state;\n}\nexport function resetParameters(gl) {\n  setParameters(gl, GL_PARAMETER_DEFAULTS);\n}\nexport function withParameters(gl, parameters, func) {\n  if (isObjectEmpty(parameters)) {\n    return func(gl);\n  }\n\n  const {\n    nocatch = true\n  } = parameters;\n  pushContextState(gl);\n  setParameters(gl, parameters);\n  let value;\n\n  if (nocatch) {\n    value = func(gl);\n    popContextState(gl);\n  } else {\n    try {\n      value = func(gl);\n    } finally {\n      popContextState(gl);\n    }\n  }\n\n  return value;\n}\n//# sourceMappingURL=unified-parameter-api.js.map","export function cssToDeviceRatio(gl) {\n  const {\n    luma\n  } = gl;\n\n  if (gl.canvas && luma) {\n    const cachedSize = luma.canvasSizeInfo;\n    const clientWidth = 'clientWidth' in cachedSize ? cachedSize.clientWidth : gl.canvas.clientWidth;\n    return clientWidth ? gl.drawingBufferWidth / clientWidth : 1;\n  }\n\n  return 1;\n}\nexport function cssToDevicePixels(gl, cssPixel) {\n  let yInvert = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;\n  const ratio = cssToDeviceRatio(gl);\n  const width = gl.drawingBufferWidth;\n  const height = gl.drawingBufferHeight;\n  return scalePixels(cssPixel, ratio, width, height, yInvert);\n}\nexport function getDevicePixelRatio(useDevicePixels) {\n  const windowRatio = typeof window === 'undefined' ? 1 : window.devicePixelRatio || 1;\n\n  if (Number.isFinite(useDevicePixels)) {\n    return useDevicePixels <= 0 ? 1 : useDevicePixels;\n  }\n\n  return useDevicePixels ? windowRatio : 1;\n}\n\nfunction scalePixels(pixel, ratio, width, height, yInvert) {\n  const x = scaleX(pixel[0], ratio, width);\n  let y = scaleY(pixel[1], ratio, height, yInvert);\n  let t = scaleX(pixel[0] + 1, ratio, width);\n  const xHigh = t === width - 1 ? t : t - 1;\n  t = scaleY(pixel[1] + 1, ratio, height, yInvert);\n  let yHigh;\n\n  if (yInvert) {\n    t = t === 0 ? t : t + 1;\n    yHigh = y;\n    y = t;\n  } else {\n    yHigh = t === height - 1 ? t : t - 1;\n  }\n\n  return {\n    x,\n    y,\n    width: Math.max(xHigh - x + 1, 1),\n    height: Math.max(yHigh - y + 1, 1)\n  };\n}\n\nfunction scaleX(x, ratio, width) {\n  const r = Math.min(Math.round(x * ratio), width - 1);\n  return r;\n}\n\nfunction scaleY(y, ratio, height, yInvert) {\n  return yInvert ? Math.max(0, height - 1 - Math.round(y * ratio)) : Math.min(Math.round(y * ratio), height - 1);\n}\n//# sourceMappingURL=device-pixels.js.map","import { isBrowser as getIsBrowser } from '@probe.gl/env';\nimport { trackContextState } from '../state-tracker/track-context-state';\nimport { log } from '../utils/log';\nimport { assert } from '../utils/assert';\nimport { getDevicePixelRatio } from '../utils/device-pixels';\nimport { isWebGL2 } from '../utils/webgl-checks';\nconst isBrowser = getIsBrowser();\nconst isPage = isBrowser && typeof document !== 'undefined';\nconst CONTEXT_DEFAULTS = {\n  webgl2: true,\n  webgl1: true,\n  throwOnError: true,\n  manageState: true,\n  canvas: null,\n  debug: false,\n  width: 800,\n  height: 600\n};\nexport function createGLContext() {\n  let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n  assert(isBrowser, \"createGLContext only available in the browser.\\nCreate your own headless context or use 'createHeadlessContext' from @luma.gl/test-utils\");\n  options = Object.assign({}, CONTEXT_DEFAULTS, options);\n  const {\n    width,\n    height\n  } = options;\n\n  function onError(message) {\n    if (options.throwOnError) {\n      throw new Error(message);\n    }\n\n    console.error(message);\n    return null;\n  }\n\n  options.onError = onError;\n  let gl;\n  const {\n    canvas\n  } = options;\n  const targetCanvas = getCanvas({\n    canvas,\n    width,\n    height,\n    onError\n  });\n  gl = createBrowserContext(targetCanvas, options);\n\n  if (!gl) {\n    return null;\n  }\n\n  gl = instrumentGLContext(gl, options);\n  logInfo(gl);\n  return gl;\n}\nexport function instrumentGLContext(gl) {\n  let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n  if (!gl || gl._instrumented) {\n    return gl;\n  }\n\n  gl._version = gl._version || getVersion(gl);\n  gl.luma = gl.luma || {};\n  gl.luma.canvasSizeInfo = gl.luma.canvasSizeInfo || {};\n  options = Object.assign({}, CONTEXT_DEFAULTS, options);\n  const {\n    manageState,\n    debug\n  } = options;\n\n  if (manageState) {\n    trackContextState(gl, {\n      copyState: false,\n      log: function () {\n        for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n          args[_key] = arguments[_key];\n        }\n\n        return log.log(1, ...args)();\n      }\n    });\n  }\n\n  if (isBrowser && debug) {\n    if (!globalThis.makeDebugContext) {\n      log.warn('WebGL debug mode not activated. import \"@luma.gl/debug\" to enable.')();\n    } else {\n      gl = globalThis.makeDebugContext(gl, options);\n      log.level = Math.max(log.level, 1);\n    }\n  }\n\n  gl._instrumented = true;\n  return gl;\n}\nexport function getContextDebugInfo(gl) {\n  const vendorMasked = gl.getParameter(7936);\n  const rendererMasked = gl.getParameter(7937);\n  const ext = gl.getExtension('WEBGL_debug_renderer_info');\n  const vendorUnmasked = ext && gl.getParameter(ext.UNMASKED_VENDOR_WEBGL || 7936);\n  const rendererUnmasked = ext && gl.getParameter(ext.UNMASKED_RENDERER_WEBGL || 7937);\n  return {\n    vendor: vendorUnmasked || vendorMasked,\n    renderer: rendererUnmasked || rendererMasked,\n    vendorMasked,\n    rendererMasked,\n    version: gl.getParameter(7938),\n    shadingLanguageVersion: gl.getParameter(35724)\n  };\n}\nexport function resizeGLContext(gl) {\n  let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n  if (gl.canvas) {\n    const devicePixelRatio = getDevicePixelRatio(options.useDevicePixels);\n    setDevicePixelRatio(gl, devicePixelRatio, options);\n    return;\n  }\n\n  const ext = gl.getExtension('STACKGL_resize_drawingbuffer');\n\n  if (ext && \"width\" in options && \"height\" in options) {\n    ext.resize(options.width, options.height);\n  }\n}\n\nfunction createBrowserContext(canvas, options) {\n  const {\n    onError\n  } = options;\n  let errorMessage = null;\n\n  const onCreateError = error => errorMessage = error.statusMessage || errorMessage;\n\n  canvas.addEventListener('webglcontextcreationerror', onCreateError, false);\n  const {\n    webgl1 = true,\n    webgl2 = true\n  } = options;\n  let gl = null;\n\n  if (webgl2) {\n    gl = gl || canvas.getContext('webgl2', options);\n    gl = gl || canvas.getContext('experimental-webgl2', options);\n  }\n\n  if (webgl1) {\n    gl = gl || canvas.getContext('webgl', options);\n    gl = gl || canvas.getContext('experimental-webgl', options);\n  }\n\n  canvas.removeEventListener('webglcontextcreationerror', onCreateError, false);\n\n  if (!gl) {\n    return onError(\"Failed to create \".concat(webgl2 && !webgl1 ? 'WebGL2' : 'WebGL', \" context: \").concat(errorMessage || 'Unknown error'));\n  }\n\n  if (options.onContextLost) {\n    canvas.addEventListener('webglcontextlost', options.onContextLost, false);\n  }\n\n  if (options.onContextRestored) {\n    canvas.addEventListener('webglcontextrestored', options.onContextRestored, false);\n  }\n\n  return gl;\n}\n\nfunction getCanvas(_ref) {\n  let {\n    canvas,\n    width = 800,\n    height = 600,\n    onError\n  } = _ref;\n  let targetCanvas;\n\n  if (typeof canvas === 'string') {\n    const isPageLoaded = isPage && document.readyState === 'complete';\n\n    if (!isPageLoaded) {\n      onError(\"createGLContext called on canvas '\".concat(canvas, \"' before page was loaded\"));\n    }\n\n    targetCanvas = document.getElementById(canvas);\n  } else if (canvas) {\n    targetCanvas = canvas;\n  } else {\n    targetCanvas = document.createElement('canvas');\n    targetCanvas.id = 'lumagl-canvas';\n    targetCanvas.style.width = Number.isFinite(width) ? \"\".concat(width, \"px\") : '100%';\n    targetCanvas.style.height = Number.isFinite(height) ? \"\".concat(height, \"px\") : '100%';\n    document.body.insertBefore(targetCanvas, document.body.firstChild);\n  }\n\n  return targetCanvas;\n}\n\nfunction logInfo(gl) {\n  const webGL = isWebGL2(gl) ? 'WebGL2' : 'WebGL1';\n  const info = getContextDebugInfo(gl);\n  const driver = info ? \"(\".concat(info.vendor, \",\").concat(info.renderer, \")\") : '';\n  const debug = gl.debug ? ' debug' : '';\n  log.info(1, \"\".concat(webGL).concat(debug, \" context \").concat(driver))();\n}\n\nfunction getVersion(gl) {\n  if (typeof WebGL2RenderingContext !== 'undefined' && gl instanceof WebGL2RenderingContext) {\n    return 2;\n  }\n\n  return 1;\n}\n\nfunction setDevicePixelRatio(gl, devicePixelRatio, options) {\n  let clientWidth = 'width' in options ? options.width : gl.canvas.clientWidth;\n  let clientHeight = 'height' in options ? options.height : gl.canvas.clientHeight;\n\n  if (!clientWidth || !clientHeight) {\n    log.log(1, 'Canvas clientWidth/clientHeight is 0')();\n    devicePixelRatio = 1;\n    clientWidth = gl.canvas.width || 1;\n    clientHeight = gl.canvas.height || 1;\n  }\n\n  gl.luma = gl.luma || {};\n  gl.luma.canvasSizeInfo = gl.luma.canvasSizeInfo || {};\n  const cachedSize = gl.luma.canvasSizeInfo;\n\n  if (cachedSize.clientWidth !== clientWidth || cachedSize.clientHeight !== clientHeight || cachedSize.devicePixelRatio !== devicePixelRatio) {\n    let clampedPixelRatio = devicePixelRatio;\n    const canvasWidth = Math.floor(clientWidth * clampedPixelRatio);\n    const canvasHeight = Math.floor(clientHeight * clampedPixelRatio);\n    gl.canvas.width = canvasWidth;\n    gl.canvas.height = canvasHeight;\n\n    if (gl.drawingBufferWidth !== canvasWidth || gl.drawingBufferHeight !== canvasHeight) {\n      log.warn(\"Device pixel ratio clamped\")();\n      clampedPixelRatio = Math.min(gl.drawingBufferWidth / clientWidth, gl.drawingBufferHeight / clientHeight);\n      gl.canvas.width = Math.floor(clientWidth * clampedPixelRatio);\n      gl.canvas.height = Math.floor(clientHeight * clampedPixelRatio);\n    }\n\n    Object.assign(gl.luma.canvasSizeInfo, {\n      clientWidth,\n      clientHeight,\n      devicePixelRatio\n    });\n  }\n}\n//# sourceMappingURL=context.js.map","export const VERTEX_SHADER = 'vs';\nexport const FRAGMENT_SHADER = 'fs';\n//# sourceMappingURL=constants.js.map","import { MODULE_INJECTORS_VS, MODULE_INJECTORS_FS } from '../modules/module-injectors';\nimport { VERTEX_SHADER, FRAGMENT_SHADER } from './constants';\nimport { assert } from '../utils';\nconst MODULE_INJECTORS = {\n  [VERTEX_SHADER]: MODULE_INJECTORS_VS,\n  [FRAGMENT_SHADER]: MODULE_INJECTORS_FS\n};\nexport const DECLARATION_INJECT_MARKER = '__LUMA_INJECT_DECLARATIONS__';\nconst REGEX_START_OF_MAIN = /void\\s+main\\s*\\([^)]*\\)\\s*\\{\\n?/;\nconst REGEX_END_OF_MAIN = /}\\n?[^{}]*$/;\nconst fragments = [];\nexport default function injectShader(source, type, inject) {\n  let injectStandardStubs = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;\n  const isVertex = type === VERTEX_SHADER;\n\n  for (const key in inject) {\n    const fragmentData = inject[key];\n    fragmentData.sort((a, b) => a.order - b.order);\n    fragments.length = fragmentData.length;\n\n    for (let i = 0, len = fragmentData.length; i < len; ++i) {\n      fragments[i] = fragmentData[i].injection;\n    }\n\n    const fragmentString = \"\".concat(fragments.join('\\n'), \"\\n\");\n\n    switch (key) {\n      case 'vs:#decl':\n        if (isVertex) {\n          source = source.replace(DECLARATION_INJECT_MARKER, fragmentString);\n        }\n\n        break;\n\n      case 'vs:#main-start':\n        if (isVertex) {\n          source = source.replace(REGEX_START_OF_MAIN, match => match + fragmentString);\n        }\n\n        break;\n\n      case 'vs:#main-end':\n        if (isVertex) {\n          source = source.replace(REGEX_END_OF_MAIN, match => fragmentString + match);\n        }\n\n        break;\n\n      case 'fs:#decl':\n        if (!isVertex) {\n          source = source.replace(DECLARATION_INJECT_MARKER, fragmentString);\n        }\n\n        break;\n\n      case 'fs:#main-start':\n        if (!isVertex) {\n          source = source.replace(REGEX_START_OF_MAIN, match => match + fragmentString);\n        }\n\n        break;\n\n      case 'fs:#main-end':\n        if (!isVertex) {\n          source = source.replace(REGEX_END_OF_MAIN, match => fragmentString + match);\n        }\n\n        break;\n\n      default:\n        source = source.replace(key, match => match + fragmentString);\n    }\n  }\n\n  source = source.replace(DECLARATION_INJECT_MARKER, '');\n\n  if (injectStandardStubs) {\n    source = source.replace(/\\}\\s*$/, match => match + MODULE_INJECTORS[type]);\n  }\n\n  return source;\n}\nexport function combineInjects(injects) {\n  const result = {};\n  assert(Array.isArray(injects) && injects.length > 1);\n  injects.forEach(inject => {\n    for (const key in inject) {\n      result[key] = result[key] ? \"\".concat(result[key], \"\\n\").concat(inject[key]) : inject[key];\n    }\n  });\n  return result;\n}\n//# sourceMappingURL=inject-shader.js.map","export const MODULE_INJECTORS_VS = \"#ifdef MODULE_LOGDEPTH\\n  logdepth_adjustPosition(gl_Position);\\n#endif\\n\";\nexport const MODULE_INJECTORS_FS = \"#ifdef MODULE_MATERIAL\\n  gl_FragColor = material_filterColor(gl_FragColor);\\n#endif\\n\\n#ifdef MODULE_LIGHTING\\n  gl_FragColor = lighting_filterColor(gl_FragColor);\\n#endif\\n\\n#ifdef MODULE_FOG\\n  gl_FragColor = fog_filterColor(gl_FragColor);\\n#endif\\n\\n#ifdef MODULE_PICKING\\n  gl_FragColor = picking_filterHighlightColor(gl_FragColor);\\n  gl_FragColor = picking_filterPickingColor(gl_FragColor);\\n#endif\\n\\n#ifdef MODULE_LOGDEPTH\\n  logdepth_setFragDepth();\\n#endif\\n\";\n//# sourceMappingURL=module-injectors.js.map","const TYPE_DEFINITIONS = {\n  number: {\n    validate(value, propType) {\n      return Number.isFinite(value) && (!('max' in propType) || value <= propType.max) && (!('min' in propType) || value >= propType.min);\n    }\n\n  },\n  array: {\n    validate(value, propType) {\n      return Array.isArray(value) || ArrayBuffer.isView(value);\n    }\n\n  }\n};\nexport function parsePropTypes(propDefs) {\n  const propTypes = {};\n\n  for (const propName in propDefs) {\n    const propDef = propDefs[propName];\n    const propType = parsePropType(propDef);\n    propTypes[propName] = propType;\n  }\n\n  return propTypes;\n}\n\nfunction parsePropType(propDef) {\n  let type = getTypeOf(propDef);\n\n  if (type === 'object') {\n    if (!propDef) {\n      return {\n        type: 'object',\n        value: null\n      };\n    }\n\n    if ('type' in propDef) {\n      return Object.assign({}, propDef, TYPE_DEFINITIONS[propDef.type]);\n    }\n\n    if (!('value' in propDef)) {\n      return {\n        type: 'object',\n        value: propDef\n      };\n    }\n\n    type = getTypeOf(propDef.value);\n    return Object.assign({\n      type\n    }, propDef, TYPE_DEFINITIONS[type]);\n  }\n\n  return Object.assign({\n    type,\n    value: propDef\n  }, TYPE_DEFINITIONS[type]);\n}\n\nfunction getTypeOf(value) {\n  if (Array.isArray(value) || ArrayBuffer.isView(value)) {\n    return 'array';\n  }\n\n  return typeof value;\n}\n//# sourceMappingURL=prop-types.js.map","import { assert } from '../utils';\nimport { parsePropTypes } from './filters/prop-types';\nconst VERTEX_SHADER = 'vs';\nconst FRAGMENT_SHADER = 'fs';\nexport default class ShaderModule {\n  constructor(_ref) {\n    let {\n      name,\n      vs,\n      fs,\n      dependencies = [],\n      uniforms,\n      getUniforms,\n      deprecations = [],\n      defines = {},\n      inject = {},\n      vertexShader,\n      fragmentShader\n    } = _ref;\n    assert(typeof name === 'string');\n    this.name = name;\n    this.vs = vs || vertexShader;\n    this.fs = fs || fragmentShader;\n    this.getModuleUniforms = getUniforms;\n    this.dependencies = dependencies;\n    this.deprecations = this._parseDeprecationDefinitions(deprecations);\n    this.defines = defines;\n    this.injections = normalizeInjections(inject);\n\n    if (uniforms) {\n      this.uniforms = parsePropTypes(uniforms);\n    }\n  }\n\n  getModuleSource(type) {\n    let moduleSource;\n\n    switch (type) {\n      case VERTEX_SHADER:\n        moduleSource = this.vs || '';\n        break;\n\n      case FRAGMENT_SHADER:\n        moduleSource = this.fs || '';\n        break;\n\n      default:\n        assert(false);\n    }\n\n    return \"#define MODULE_\".concat(this.name.toUpperCase().replace(/[^0-9a-z]/gi, '_'), \"\\n\").concat(moduleSource, \"// END MODULE_\").concat(this.name, \"\\n\\n\");\n  }\n\n  getUniforms(opts, uniforms) {\n    if (this.getModuleUniforms) {\n      return this.getModuleUniforms(opts, uniforms);\n    }\n\n    if (this.uniforms) {\n      return this._defaultGetUniforms(opts);\n    }\n\n    return {};\n  }\n\n  getDefines() {\n    return this.defines;\n  }\n\n  checkDeprecations(shaderSource, log) {\n    this.deprecations.forEach(def => {\n      if (def.regex.test(shaderSource)) {\n        if (def.deprecated) {\n          log.deprecated(def.old, def.new)();\n        } else {\n          log.removed(def.old, def.new)();\n        }\n      }\n    });\n  }\n\n  _parseDeprecationDefinitions(deprecations) {\n    deprecations.forEach(def => {\n      switch (def.type) {\n        case 'function':\n          def.regex = new RegExp(\"\\\\b\".concat(def.old, \"\\\\(\"));\n          break;\n\n        default:\n          def.regex = new RegExp(\"\".concat(def.type, \" \").concat(def.old, \";\"));\n      }\n    });\n    return deprecations;\n  }\n\n  _defaultGetUniforms() {\n    let opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n    const uniforms = {};\n    const propTypes = this.uniforms;\n\n    for (const key in propTypes) {\n      const propDef = propTypes[key];\n\n      if (key in opts && !propDef.private) {\n        if (propDef.validate) {\n          assert(propDef.validate(opts[key], propDef), \"\".concat(this.name, \": invalid \").concat(key));\n        }\n\n        uniforms[key] = opts[key];\n      } else {\n        uniforms[key] = propDef.value;\n      }\n    }\n\n    return uniforms;\n  }\n\n}\nexport function normalizeShaderModule(module) {\n  if (!module.normalized) {\n    module.normalized = true;\n\n    if (module.uniforms && !module.getUniforms) {\n      const shaderModule = new ShaderModule(module);\n      module.getUniforms = shaderModule.getUniforms.bind(shaderModule);\n    }\n  }\n\n  return module;\n}\n\nfunction normalizeInjections(injections) {\n  const result = {\n    vs: {},\n    fs: {}\n  };\n\n  for (const hook in injections) {\n    let injection = injections[hook];\n    const stage = hook.slice(0, 2);\n\n    if (typeof injection === 'string') {\n      injection = {\n        order: 0,\n        injection\n      };\n    }\n\n    result[stage][hook] = injection;\n  }\n\n  return result;\n}\n//# sourceMappingURL=shader-module.js.map","const fp32shader = \"#ifdef LUMA_FP32_TAN_PRECISION_WORKAROUND\\nconst float TWO_PI = 6.2831854820251465;\\nconst float PI_2 = 1.5707963705062866;\\nconst float PI_16 = 0.1963495463132858;\\n\\nconst float SIN_TABLE_0 = 0.19509032368659973;\\nconst float SIN_TABLE_1 = 0.3826834261417389;\\nconst float SIN_TABLE_2 = 0.5555702447891235;\\nconst float SIN_TABLE_3 = 0.7071067690849304;\\n\\nconst float COS_TABLE_0 = 0.9807852506637573;\\nconst float COS_TABLE_1 = 0.9238795042037964;\\nconst float COS_TABLE_2 = 0.8314695954322815;\\nconst float COS_TABLE_3 = 0.7071067690849304;\\n\\nconst float INVERSE_FACTORIAL_3 = 1.666666716337204e-01;\\nconst float INVERSE_FACTORIAL_5 = 8.333333767950535e-03;\\nconst float INVERSE_FACTORIAL_7 = 1.9841270113829523e-04;\\nconst float INVERSE_FACTORIAL_9 = 2.75573188446287533e-06;\\n\\nfloat sin_taylor_fp32(float a) {\\n  float r, s, t, x;\\n\\n  if (a == 0.0) {\\n    return 0.0;\\n  }\\n\\n  x = -a * a;\\n  s = a;\\n  r = a;\\n\\n  r = r * x;\\n  t = r * INVERSE_FACTORIAL_3;\\n  s = s + t;\\n\\n  r = r * x;\\n  t = r * INVERSE_FACTORIAL_5;\\n  s = s + t;\\n\\n  r = r * x;\\n  t = r * INVERSE_FACTORIAL_7;\\n  s = s + t;\\n\\n  r = r * x;\\n  t = r * INVERSE_FACTORIAL_9;\\n  s = s + t;\\n\\n  return s;\\n}\\n\\nvoid sincos_taylor_fp32(float a, out float sin_t, out float cos_t) {\\n  if (a == 0.0) {\\n    sin_t = 0.0;\\n    cos_t = 1.0;\\n  }\\n  sin_t = sin_taylor_fp32(a);\\n  cos_t = sqrt(1.0 - sin_t * sin_t);\\n}\\n\\nfloat tan_taylor_fp32(float a) {\\n    float sin_a;\\n    float cos_a;\\n\\n    if (a == 0.0) {\\n        return 0.0;\\n    }\\n    float z = floor(a / TWO_PI);\\n    float r = a - TWO_PI * z;\\n\\n    float t;\\n    float q = floor(r / PI_2 + 0.5);\\n    int j = int(q);\\n\\n    if (j < -2 || j > 2) {\\n        return 1.0 / 0.0;\\n    }\\n\\n    t = r - PI_2 * q;\\n\\n    q = floor(t / PI_16 + 0.5);\\n    int k = int(q);\\n    int abs_k = int(abs(float(k)));\\n\\n    if (abs_k > 4) {\\n        return 1.0 / 0.0;\\n    } else {\\n        t = t - PI_16 * q;\\n    }\\n\\n    float u = 0.0;\\n    float v = 0.0;\\n\\n    float sin_t, cos_t;\\n    float s, c;\\n    sincos_taylor_fp32(t, sin_t, cos_t);\\n\\n    if (k == 0) {\\n        s = sin_t;\\n        c = cos_t;\\n    } else {\\n        if (abs(float(abs_k) - 1.0) < 0.5) {\\n            u = COS_TABLE_0;\\n            v = SIN_TABLE_0;\\n        } else if (abs(float(abs_k) - 2.0) < 0.5) {\\n            u = COS_TABLE_1;\\n            v = SIN_TABLE_1;\\n        } else if (abs(float(abs_k) - 3.0) < 0.5) {\\n            u = COS_TABLE_2;\\n            v = SIN_TABLE_2;\\n        } else if (abs(float(abs_k) - 4.0) < 0.5) {\\n            u = COS_TABLE_3;\\n            v = SIN_TABLE_3;\\n        }\\n        if (k > 0) {\\n            s = u * sin_t + v * cos_t;\\n            c = u * cos_t - v * sin_t;\\n        } else {\\n            s = u * sin_t - v * cos_t;\\n            c = u * cos_t + v * sin_t;\\n        }\\n    }\\n\\n    if (j == 0) {\\n        sin_a = s;\\n        cos_a = c;\\n    } else if (j == 1) {\\n        sin_a = c;\\n        cos_a = -s;\\n    } else if (j == -1) {\\n        sin_a = -c;\\n        cos_a = s;\\n    } else {\\n        sin_a = -s;\\n        cos_a = -c;\\n    }\\n    return sin_a / cos_a;\\n}\\n#endif\\n\\nfloat tan_fp32(float a) {\\n#ifdef LUMA_FP32_TAN_PRECISION_WORKAROUND\\n  return tan_taylor_fp32(a);\\n#else\\n  return tan(a);\\n#endif\\n}\\n\";\nexport const fp32 = {\n  name: 'fp32',\n  vs: fp32shader,\n  fs: null\n};\n//# sourceMappingURL=fp32.js.map","export default \"#if (defined(SHADER_TYPE_FRAGMENT) && defined(LIGHTING_FRAGMENT)) || (defined(SHADER_TYPE_VERTEX) && defined(LIGHTING_VERTEX))\\n\\nstruct AmbientLight {\\n vec3 color;\\n};\\n\\nstruct PointLight {\\n vec3 color;\\n vec3 position;\\n vec3 attenuation;\\n};\\n\\nstruct DirectionalLight {\\n  vec3 color;\\n  vec3 direction;\\n};\\n\\nuniform AmbientLight lighting_uAmbientLight;\\nuniform PointLight lighting_uPointLight[MAX_LIGHTS];\\nuniform DirectionalLight lighting_uDirectionalLight[MAX_LIGHTS];\\nuniform int lighting_uPointLightCount;\\nuniform int lighting_uDirectionalLightCount;\\n\\nuniform bool lighting_uEnabled;\\n\\nfloat getPointLightAttenuation(PointLight pointLight, float distance) {\\n  return pointLight.attenuation.x\\n       + pointLight.attenuation.y * distance\\n       + pointLight.attenuation.z * distance * distance;\\n}\\n\\n#endif\\n\";\n//# sourceMappingURL=lights.glsl.js.map","import lightingShader from './lights.glsl';\nconst INITIAL_MODULE_OPTIONS = {\n  lightSources: {}\n};\n\nfunction convertColor() {\n  let {\n    color = [0, 0, 0],\n    intensity = 1.0\n  } = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n  return color.map(component => component * intensity / 255.0);\n}\n\nfunction getLightSourceUniforms(_ref) {\n  let {\n    ambientLight,\n    pointLights = [],\n    directionalLights = []\n  } = _ref;\n  const lightSourceUniforms = {};\n\n  if (ambientLight) {\n    lightSourceUniforms['lighting_uAmbientLight.color'] = convertColor(ambientLight);\n  } else {\n    lightSourceUniforms['lighting_uAmbientLight.color'] = [0, 0, 0];\n  }\n\n  pointLights.forEach((pointLight, index) => {\n    lightSourceUniforms[\"lighting_uPointLight[\".concat(index, \"].color\")] = convertColor(pointLight);\n    lightSourceUniforms[\"lighting_uPointLight[\".concat(index, \"].position\")] = pointLight.position;\n    lightSourceUniforms[\"lighting_uPointLight[\".concat(index, \"].attenuation\")] = pointLight.attenuation || [1, 0, 0];\n  });\n  lightSourceUniforms.lighting_uPointLightCount = pointLights.length;\n  directionalLights.forEach((directionalLight, index) => {\n    lightSourceUniforms[\"lighting_uDirectionalLight[\".concat(index, \"].color\")] = convertColor(directionalLight);\n    lightSourceUniforms[\"lighting_uDirectionalLight[\".concat(index, \"].direction\")] = directionalLight.direction;\n  });\n  lightSourceUniforms.lighting_uDirectionalLightCount = directionalLights.length;\n  return lightSourceUniforms;\n}\n\nfunction getUniforms() {\n  let opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : INITIAL_MODULE_OPTIONS;\n\n  if ('lightSources' in opts) {\n    const {\n      ambientLight,\n      pointLights,\n      directionalLights\n    } = opts.lightSources || {};\n    const hasLights = ambientLight || pointLights && pointLights.length > 0 || directionalLights && directionalLights.length > 0;\n\n    if (!hasLights) {\n      return {\n        lighting_uEnabled: false\n      };\n    }\n\n    return Object.assign({}, getLightSourceUniforms({\n      ambientLight,\n      pointLights,\n      directionalLights\n    }), {\n      lighting_uEnabled: true\n    });\n  }\n\n  if ('lights' in opts) {\n    const lightSources = {\n      pointLights: [],\n      directionalLights: []\n    };\n\n    for (const light of opts.lights || []) {\n      switch (light.type) {\n        case 'ambient':\n          lightSources.ambientLight = light;\n          break;\n\n        case 'directional':\n          lightSources.directionalLights.push(light);\n          break;\n\n        case 'point':\n          lightSources.pointLights.push(light);\n          break;\n\n        default:\n      }\n    }\n\n    return getUniforms({\n      lightSources\n    });\n  }\n\n  return {};\n}\n\nexport const lights = {\n  name: 'lights',\n  vs: lightingShader,\n  fs: lightingShader,\n  getUniforms,\n  defines: {\n    MAX_LIGHTS: 3\n  }\n};\n//# sourceMappingURL=lights.js.map","export default \"uniform mat4 u_MVPMatrix;\\nuniform mat4 u_ModelMatrix;\\nuniform mat4 u_NormalMatrix;\\n\\nvarying vec3 pbr_vPosition;\\nvarying vec2 pbr_vUV;\\n\\n#ifdef HAS_NORMALS\\n# ifdef HAS_TANGENTS\\nvarying mat3 pbr_vTBN;\\n# else\\nvarying vec3 pbr_vNormal;\\n# endif\\n#endif\\n\\nvoid pbr_setPositionNormalTangentUV(vec4 position, vec4 normal, vec4 tangent, vec2 uv)\\n{\\n  vec4 pos = u_ModelMatrix * position;\\n  pbr_vPosition = vec3(pos.xyz) / pos.w;\\n\\n#ifdef HAS_NORMALS\\n#ifdef HAS_TANGENTS\\n  vec3 normalW = normalize(vec3(u_NormalMatrix * vec4(normal.xyz, 0.0)));\\n  vec3 tangentW = normalize(vec3(u_ModelMatrix * vec4(tangent.xyz, 0.0)));\\n  vec3 bitangentW = cross(normalW, tangentW) * tangent.w;\\n  pbr_vTBN = mat3(tangentW, bitangentW, normalW);\\n#else\\n  pbr_vNormal = normalize(vec3(u_ModelMatrix * vec4(normal.xyz, 0.0)));\\n#endif\\n#endif\\n\\n#ifdef HAS_UV\\n  pbr_vUV = uv;\\n#else\\n  pbr_vUV = vec2(0.,0.);\\n#endif\\n}\\n\";\n//# sourceMappingURL=pbr-vertex.glsl.js.map","import { lights } from '../lights/lights';\nimport vs from './pbr-vertex.glsl';\nimport fs from './pbr-fragment.glsl';\nexport const pbr = {\n  name: 'pbr',\n  vs,\n  fs,\n  defines: {\n    LIGHTING_FRAGMENT: 1\n  },\n  dependencies: [lights]\n};\n//# sourceMappingURL=pbr.js.map","export default \"#if defined(USE_TEX_LOD) && !defined(FEATURE_GLSL_TEXTURE_LOD)\\n# error PBR fragment shader: Texture LOD is not available\\n#endif\\n\\n#if !defined(HAS_TANGENTS) && !defined(FEATURE_GLSL_DERIVATIVES)\\n# error PBR fragment shader: Derivatives are not available\\n#endif\\n\\n\\n#if (__VERSION__ < 300)\\n  #define SMART_FOR(INIT, WEBGL1COND, WEBGL2COND, INCR) for (INIT; WEBGL1COND; INCR)\\n#else\\n  #define SMART_FOR(INIT, WEBGL1COND, WEBGL2COND, INCR) for (INIT; WEBGL2COND; INCR)\\n#endif\\n\\nprecision highp float;\\n\\nuniform bool pbr_uUnlit;\\n\\n#ifdef USE_IBL\\nuniform samplerCube u_DiffuseEnvSampler;\\nuniform samplerCube u_SpecularEnvSampler;\\nuniform sampler2D u_brdfLUT;\\nuniform vec2 u_ScaleIBLAmbient;\\n#endif\\n\\n#ifdef HAS_BASECOLORMAP\\nuniform sampler2D u_BaseColorSampler;\\n#endif\\n#ifdef HAS_NORMALMAP\\nuniform sampler2D u_NormalSampler;\\nuniform float u_NormalScale;\\n#endif\\n#ifdef HAS_EMISSIVEMAP\\nuniform sampler2D u_EmissiveSampler;\\nuniform vec3 u_EmissiveFactor;\\n#endif\\n#ifdef HAS_METALROUGHNESSMAP\\nuniform sampler2D u_MetallicRoughnessSampler;\\n#endif\\n#ifdef HAS_OCCLUSIONMAP\\nuniform sampler2D u_OcclusionSampler;\\nuniform float u_OcclusionStrength;\\n#endif\\n\\n#ifdef ALPHA_CUTOFF\\nuniform float u_AlphaCutoff;\\n#endif\\n\\nuniform vec2 u_MetallicRoughnessValues;\\nuniform vec4 u_BaseColorFactor;\\n\\nuniform vec3 u_Camera;\\n#ifdef PBR_DEBUG\\nuniform vec4 u_ScaleDiffBaseMR;\\nuniform vec4 u_ScaleFGDSpec;\\n#endif\\n\\nvarying vec3 pbr_vPosition;\\n\\nvarying vec2 pbr_vUV;\\n\\n#ifdef HAS_NORMALS\\n#ifdef HAS_TANGENTS\\nvarying mat3 pbr_vTBN;\\n#else\\nvarying vec3 pbr_vNormal;\\n#endif\\n#endif\\n\\n\\nstruct PBRInfo\\n{\\n  float NdotL;\\n  float NdotV;\\n  float NdotH;\\n  float LdotH;\\n  float VdotH;\\n  float perceptualRoughness;\\n  float metalness;\\n  vec3 reflectance0;\\n  vec3 reflectance90;\\n  float alphaRoughness;\\n  vec3 diffuseColor;\\n  vec3 specularColor;\\n  vec3 n;\\n  vec3 v;\\n};\\n\\nconst float M_PI = 3.141592653589793;\\nconst float c_MinRoughness = 0.04;\\n\\nvec4 SRGBtoLINEAR(vec4 srgbIn)\\n{\\n#ifdef MANUAL_SRGB\\n#ifdef SRGB_FAST_APPROXIMATION\\n  vec3 linOut = pow(srgbIn.xyz,vec3(2.2));\\n#else\\n  vec3 bLess = step(vec3(0.04045),srgbIn.xyz);\\n  vec3 linOut = mix( srgbIn.xyz/vec3(12.92), pow((srgbIn.xyz+vec3(0.055))/vec3(1.055),vec3(2.4)), bLess );\\n#endif\\n  return vec4(linOut,srgbIn.w);;\\n#else\\n  return srgbIn;\\n#endif\\n}\\n\\nvec3 getNormal()\\n{\\n#ifndef HAS_TANGENTS\\n  vec3 pos_dx = dFdx(pbr_vPosition);\\n  vec3 pos_dy = dFdy(pbr_vPosition);\\n  vec3 tex_dx = dFdx(vec3(pbr_vUV, 0.0));\\n  vec3 tex_dy = dFdy(vec3(pbr_vUV, 0.0));\\n  vec3 t = (tex_dy.t * pos_dx - tex_dx.t * pos_dy) / (tex_dx.s * tex_dy.t - tex_dy.s * tex_dx.t);\\n\\n#ifdef HAS_NORMALS\\n  vec3 ng = normalize(pbr_vNormal);\\n#else\\n  vec3 ng = cross(pos_dx, pos_dy);\\n#endif\\n\\n  t = normalize(t - ng * dot(ng, t));\\n  vec3 b = normalize(cross(ng, t));\\n  mat3 tbn = mat3(t, b, ng);\\n#else\\n  mat3 tbn = pbr_vTBN;\\n#endif\\n\\n#ifdef HAS_NORMALMAP\\n  vec3 n = texture2D(u_NormalSampler, pbr_vUV).rgb;\\n  n = normalize(tbn * ((2.0 * n - 1.0) * vec3(u_NormalScale, u_NormalScale, 1.0)));\\n#else\\n  vec3 n = normalize(tbn[2].xyz);\\n#endif\\n\\n  return n;\\n}\\n\\n\\n#ifdef USE_IBL\\nvec3 getIBLContribution(PBRInfo pbrInputs, vec3 n, vec3 reflection)\\n{\\n  float mipCount = 9.0;\\n  float lod = (pbrInputs.perceptualRoughness * mipCount);\\n  vec3 brdf = SRGBtoLINEAR(texture2D(u_brdfLUT,\\n    vec2(pbrInputs.NdotV, 1.0 - pbrInputs.perceptualRoughness))).rgb;\\n  vec3 diffuseLight = SRGBtoLINEAR(textureCube(u_DiffuseEnvSampler, n)).rgb;\\n\\n#ifdef USE_TEX_LOD\\n  vec3 specularLight = SRGBtoLINEAR(textureCubeLod(u_SpecularEnvSampler, reflection, lod)).rgb;\\n#else\\n  vec3 specularLight = SRGBtoLINEAR(textureCube(u_SpecularEnvSampler, reflection)).rgb;\\n#endif\\n\\n  vec3 diffuse = diffuseLight * pbrInputs.diffuseColor;\\n  vec3 specular = specularLight * (pbrInputs.specularColor * brdf.x + brdf.y);\\n  diffuse *= u_ScaleIBLAmbient.x;\\n  specular *= u_ScaleIBLAmbient.y;\\n\\n  return diffuse + specular;\\n}\\n#endif\\n\\n\\nvec3 diffuse(PBRInfo pbrInputs)\\n{\\n  return pbrInputs.diffuseColor / M_PI;\\n}\\n\\nvec3 specularReflection(PBRInfo pbrInputs)\\n{\\n  return pbrInputs.reflectance0 +\\n    (pbrInputs.reflectance90 - pbrInputs.reflectance0) *\\n    pow(clamp(1.0 - pbrInputs.VdotH, 0.0, 1.0), 5.0);\\n}\\n\\n\\n\\nfloat geometricOcclusion(PBRInfo pbrInputs)\\n{\\n  float NdotL = pbrInputs.NdotL;\\n  float NdotV = pbrInputs.NdotV;\\n  float r = pbrInputs.alphaRoughness;\\n\\n  float attenuationL = 2.0 * NdotL / (NdotL + sqrt(r * r + (1.0 - r * r) * (NdotL * NdotL)));\\n  float attenuationV = 2.0 * NdotV / (NdotV + sqrt(r * r + (1.0 - r * r) * (NdotV * NdotV)));\\n  return attenuationL * attenuationV;\\n}\\n\\n\\n\\n\\n\\nfloat microfacetDistribution(PBRInfo pbrInputs)\\n{\\n  float roughnessSq = pbrInputs.alphaRoughness * pbrInputs.alphaRoughness;\\n  float f = (pbrInputs.NdotH * roughnessSq - pbrInputs.NdotH) * pbrInputs.NdotH + 1.0;\\n  return roughnessSq / (M_PI * f * f);\\n}\\n\\nvoid PBRInfo_setAmbientLight(inout PBRInfo pbrInputs) {\\n  pbrInputs.NdotL = 1.0;\\n  pbrInputs.NdotH = 0.0;\\n  pbrInputs.LdotH = 0.0;\\n  pbrInputs.VdotH = 1.0;\\n}\\n\\nvoid PBRInfo_setDirectionalLight(inout PBRInfo pbrInputs, vec3 lightDirection) {\\n  vec3 n = pbrInputs.n;\\n  vec3 v = pbrInputs.v;\\n  vec3 l = normalize(lightDirection);\\n  vec3 h = normalize(l+v);\\n\\n  pbrInputs.NdotL = clamp(dot(n, l), 0.001, 1.0);\\n  pbrInputs.NdotH = clamp(dot(n, h), 0.0, 1.0);\\n  pbrInputs.LdotH = clamp(dot(l, h), 0.0, 1.0);\\n  pbrInputs.VdotH = clamp(dot(v, h), 0.0, 1.0);\\n}\\n\\nvoid PBRInfo_setPointLight(inout PBRInfo pbrInputs, PointLight pointLight) {\\n  vec3 light_direction = normalize(pointLight.position - pbr_vPosition);\\n  PBRInfo_setDirectionalLight(pbrInputs, light_direction);\\n}\\n\\nvec3 calculateFinalColor(PBRInfo pbrInputs, vec3 lightColor) {\\n  vec3 F = specularReflection(pbrInputs);\\n  float G = geometricOcclusion(pbrInputs);\\n  float D = microfacetDistribution(pbrInputs);\\n  vec3 diffuseContrib = (1.0 - F) * diffuse(pbrInputs);\\n  vec3 specContrib = F * G * D / (4.0 * pbrInputs.NdotL * pbrInputs.NdotV);\\n  return pbrInputs.NdotL * lightColor * (diffuseContrib + specContrib);\\n}\\n\\nvec4 pbr_filterColor(vec4 colorUnused)\\n{\\n#ifdef HAS_BASECOLORMAP\\n  vec4 baseColor = SRGBtoLINEAR(texture2D(u_BaseColorSampler, pbr_vUV)) * u_BaseColorFactor;\\n#else\\n  vec4 baseColor = u_BaseColorFactor;\\n#endif\\n\\n#ifdef ALPHA_CUTOFF\\n  if (baseColor.a < u_AlphaCutoff) {\\n    discard;\\n  }\\n#endif\\n\\n  vec3 color = vec3(0, 0, 0);\\n\\n  if(pbr_uUnlit){\\n    color.rgb = baseColor.rgb;\\n  }\\n  else{\\n\\n\\n    float perceptualRoughness = u_MetallicRoughnessValues.y;\\n    float metallic = u_MetallicRoughnessValues.x;\\n#ifdef HAS_METALROUGHNESSMAP\\n\\n    vec4 mrSample = texture2D(u_MetallicRoughnessSampler, pbr_vUV);\\n    perceptualRoughness = mrSample.g * perceptualRoughness;\\n    metallic = mrSample.b * metallic;\\n#endif\\n    perceptualRoughness = clamp(perceptualRoughness, c_MinRoughness, 1.0);\\n    metallic = clamp(metallic, 0.0, 1.0);\\n\\n    float alphaRoughness = perceptualRoughness * perceptualRoughness;\\n\\n    vec3 f0 = vec3(0.04);\\n    vec3 diffuseColor = baseColor.rgb * (vec3(1.0) - f0);\\n    diffuseColor *= 1.0 - metallic;\\n    vec3 specularColor = mix(f0, baseColor.rgb, metallic);\\n    float reflectance = max(max(specularColor.r, specularColor.g), specularColor.b);\\n\\n\\n\\n    float reflectance90 = clamp(reflectance * 25.0, 0.0, 1.0);\\n    vec3 specularEnvironmentR0 = specularColor.rgb;\\n    vec3 specularEnvironmentR90 = vec3(1.0, 1.0, 1.0) * reflectance90;\\n\\n    vec3 n = getNormal();\\n    vec3 v = normalize(u_Camera - pbr_vPosition);\\n\\n    float NdotV = clamp(abs(dot(n, v)), 0.001, 1.0);\\n    vec3 reflection = -normalize(reflect(v, n));\\n\\n    PBRInfo pbrInputs = PBRInfo(\\n      0.0,\\n      NdotV,\\n      0.0,\\n      0.0,\\n      0.0,\\n      perceptualRoughness,\\n      metallic,\\n      specularEnvironmentR0,\\n      specularEnvironmentR90,\\n      alphaRoughness,\\n      diffuseColor,\\n      specularColor,\\n      n,\\n      v\\n    );\\n\\n#ifdef USE_LIGHTS\\n    PBRInfo_setAmbientLight(pbrInputs);\\n    color += calculateFinalColor(pbrInputs, lighting_uAmbientLight.color);\\n    SMART_FOR(int i = 0, i < MAX_LIGHTS, i < lighting_uDirectionalLightCount, i++) {\\n      if (i < lighting_uDirectionalLightCount) {\\n        PBRInfo_setDirectionalLight(pbrInputs, lighting_uDirectionalLight[i].direction);\\n        color += calculateFinalColor(pbrInputs, lighting_uDirectionalLight[i].color);\\n      }\\n    }\\n    SMART_FOR(int i = 0, i < MAX_LIGHTS, i < lighting_uPointLightCount, i++) {\\n      if (i < lighting_uPointLightCount) {\\n        PBRInfo_setPointLight(pbrInputs, lighting_uPointLight[i]);\\n        float attenuation = getPointLightAttenuation(lighting_uPointLight[i], distance(lighting_uPointLight[i].position, pbr_vPosition));\\n        color += calculateFinalColor(pbrInputs, lighting_uPointLight[i].color / attenuation);\\n      }\\n    }\\n#endif\\n#ifdef USE_IBL\\n    color += getIBLContribution(pbrInputs, n, reflection);\\n#endif\\n#ifdef HAS_OCCLUSIONMAP\\n    float ao = texture2D(u_OcclusionSampler, pbr_vUV).r;\\n    color = mix(color, color * ao, u_OcclusionStrength);\\n#endif\\n\\n#ifdef HAS_EMISSIVEMAP\\n    vec3 emissive = SRGBtoLINEAR(texture2D(u_EmissiveSampler, pbr_vUV)).rgb * u_EmissiveFactor;\\n    color += emissive;\\n#endif\\n\\n#ifdef PBR_DEBUG\\n\\n\\n\\n\\n\\n    color = mix(color, baseColor.rgb, u_ScaleDiffBaseMR.y);\\n    color = mix(color, vec3(metallic), u_ScaleDiffBaseMR.z);\\n    color = mix(color, vec3(perceptualRoughness), u_ScaleDiffBaseMR.w);\\n#endif\\n\\n  }\\n\\n  return vec4(pow(color,vec3(1.0/2.2)), baseColor.a);\\n}\\n\";\n//# sourceMappingURL=pbr-fragment.glsl.js.map","export default \"\\nuniform float lighting_uAmbient;\\nuniform float lighting_uDiffuse;\\nuniform float lighting_uShininess;\\nuniform vec3  lighting_uSpecularColor;\\n\\nvec3 lighting_getLightColor(vec3 surfaceColor, vec3 light_direction, vec3 view_direction, vec3 normal_worldspace, vec3 color) {\\n    vec3 halfway_direction = normalize(light_direction + view_direction);\\n    float lambertian = dot(light_direction, normal_worldspace);\\n    float specular = 0.0;\\n    if (lambertian > 0.0) {\\n      float specular_angle = max(dot(normal_worldspace, halfway_direction), 0.0);\\n      specular = pow(specular_angle, lighting_uShininess);\\n    }\\n    lambertian = max(lambertian, 0.0);\\n    return (lambertian * lighting_uDiffuse * surfaceColor + specular * lighting_uSpecularColor) * color;\\n}\\n\\nvec3 lighting_getLightColor(vec3 surfaceColor, vec3 cameraPosition, vec3 position_worldspace, vec3 normal_worldspace) {\\n  vec3 lightColor = surfaceColor;\\n\\n  if (lighting_uEnabled) {\\n    vec3 view_direction = normalize(cameraPosition - position_worldspace);\\n    lightColor = lighting_uAmbient * surfaceColor * lighting_uAmbientLight.color;\\n\\n    for (int i = 0; i < MAX_LIGHTS; i++) {\\n      if (i >= lighting_uPointLightCount) {\\n        break;\\n      }\\n      PointLight pointLight = lighting_uPointLight[i];\\n      vec3 light_position_worldspace = pointLight.position;\\n      vec3 light_direction = normalize(light_position_worldspace - position_worldspace);\\n      lightColor += lighting_getLightColor(surfaceColor, light_direction, view_direction, normal_worldspace, pointLight.color);\\n    }\\n\\n    for (int i = 0; i < MAX_LIGHTS; i++) {\\n      if (i >= lighting_uDirectionalLightCount) {\\n        break;\\n      }\\n      DirectionalLight directionalLight = lighting_uDirectionalLight[i];\\n      lightColor += lighting_getLightColor(surfaceColor, -directionalLight.direction, view_direction, normal_worldspace, directionalLight.color);\\n    }\\n  }\\n  return lightColor;\\n}\\n\\nvec3 lighting_getSpecularLightColor(vec3 cameraPosition, vec3 position_worldspace, vec3 normal_worldspace) {\\n  vec3 lightColor = vec3(0, 0, 0);\\n  vec3 surfaceColor = vec3(0, 0, 0);\\n\\n  if (lighting_uEnabled) {\\n    vec3 view_direction = normalize(cameraPosition - position_worldspace);\\n\\n    for (int i = 0; i < MAX_LIGHTS; i++) {\\n      if (i >= lighting_uPointLightCount) {\\n        break;\\n      }\\n      PointLight pointLight = lighting_uPointLight[i];\\n      vec3 light_position_worldspace = pointLight.position;\\n      vec3 light_direction = normalize(light_position_worldspace - position_worldspace);\\n      lightColor += lighting_getLightColor(surfaceColor, light_direction, view_direction, normal_worldspace, pointLight.color);\\n    }\\n\\n    for (int i = 0; i < MAX_LIGHTS; i++) {\\n      if (i >= lighting_uDirectionalLightCount) {\\n        break;\\n      }\\n      DirectionalLight directionalLight = lighting_uDirectionalLight[i];\\n      lightColor += lighting_getLightColor(surfaceColor, -directionalLight.direction, view_direction, normal_worldspace, directionalLight.color);\\n    }\\n  }\\n  return lightColor;\\n}\\n\";\n//# sourceMappingURL=phong-lighting.glsl.js.map","import { lights } from '../lights/lights';\nimport lightingShader from './phong-lighting.glsl';\nconst INITIAL_MODULE_OPTIONS = {};\n\nfunction getMaterialUniforms(material) {\n  const {\n    ambient = 0.35,\n    diffuse = 0.6,\n    shininess = 32,\n    specularColor = [30, 30, 30]\n  } = material;\n  return {\n    lighting_uAmbient: ambient,\n    lighting_uDiffuse: diffuse,\n    lighting_uShininess: shininess,\n    lighting_uSpecularColor: specularColor.map(x => x / 255)\n  };\n}\n\nfunction getUniforms() {\n  let opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : INITIAL_MODULE_OPTIONS;\n\n  if (!('material' in opts)) {\n    return {};\n  }\n\n  const {\n    material\n  } = opts;\n\n  if (!material) {\n    return {\n      lighting_uEnabled: false\n    };\n  }\n\n  return getMaterialUniforms(material);\n}\n\nexport const gouraudLighting = {\n  name: 'gouraud-lighting',\n  dependencies: [lights],\n  vs: lightingShader,\n  defines: {\n    LIGHTING_VERTEX: 1\n  },\n  getUniforms\n};\nexport const phongLighting = {\n  name: 'phong-lighting',\n  dependencies: [lights],\n  fs: lightingShader,\n  defines: {\n    LIGHTING_FRAGMENT: 1\n  },\n  getUniforms\n};\n//# sourceMappingURL=phong-lighting.js.map","const DEFAULT_HIGHLIGHT_COLOR = new Uint8Array([0, 255, 255, 255]);\nconst DEFAULT_MODULE_OPTIONS = {\n  pickingSelectedColor: null,\n  pickingHighlightColor: DEFAULT_HIGHLIGHT_COLOR,\n  pickingActive: false,\n  pickingAttribute: false\n};\n\nfunction getUniforms() {\n  let opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : DEFAULT_MODULE_OPTIONS;\n  const uniforms = {};\n\n  if (opts.pickingSelectedColor !== undefined) {\n    if (!opts.pickingSelectedColor) {\n      uniforms.picking_uSelectedColorValid = 0;\n    } else {\n      const selectedColor = opts.pickingSelectedColor.slice(0, 3);\n      uniforms.picking_uSelectedColorValid = 1;\n      uniforms.picking_uSelectedColor = selectedColor;\n    }\n  }\n\n  if (opts.pickingHighlightColor) {\n    const color = Array.from(opts.pickingHighlightColor, x => x / 255);\n\n    if (!Number.isFinite(color[3])) {\n      color[3] = 1;\n    }\n\n    uniforms.picking_uHighlightColor = color;\n  }\n\n  if (opts.pickingActive !== undefined) {\n    uniforms.picking_uActive = Boolean(opts.pickingActive);\n    uniforms.picking_uAttribute = Boolean(opts.pickingAttribute);\n  }\n\n  return uniforms;\n}\n\nconst vs = \"uniform bool picking_uActive;\\nuniform bool picking_uAttribute;\\nuniform vec3 picking_uSelectedColor;\\nuniform bool picking_uSelectedColorValid;\\n\\nout vec4 picking_vRGBcolor_Avalid;\\n\\nconst float COLOR_SCALE = 1. / 255.;\\n\\nbool picking_isColorValid(vec3 color) {\\n  return dot(color, vec3(1.0)) > 0.001;\\n}\\n\\nbool isVertexPicked(vec3 vertexColor) {\\n  return\\n    picking_uSelectedColorValid &&\\n    !picking_isColorValid(abs(vertexColor - picking_uSelectedColor));\\n}\\n\\nvoid picking_setPickingColor(vec3 pickingColor) {\\n  if (picking_uActive) {\\n    picking_vRGBcolor_Avalid.a = float(picking_isColorValid(pickingColor));\\n\\n    if (!picking_uAttribute) {\\n      picking_vRGBcolor_Avalid.rgb = pickingColor * COLOR_SCALE;\\n    }\\n  } else {\\n    picking_vRGBcolor_Avalid.a = float(isVertexPicked(pickingColor));\\n  }\\n}\\n\\nvoid picking_setPickingAttribute(float value) {\\n  if (picking_uAttribute) {\\n    picking_vRGBcolor_Avalid.r = value;\\n  }\\n}\\nvoid picking_setPickingAttribute(vec2 value) {\\n  if (picking_uAttribute) {\\n    picking_vRGBcolor_Avalid.rg = value;\\n  }\\n}\\nvoid picking_setPickingAttribute(vec3 value) {\\n  if (picking_uAttribute) {\\n    picking_vRGBcolor_Avalid.rgb = value;\\n  }\\n}\\n\";\nconst fs = \"uniform bool picking_uActive;\\nuniform vec3 picking_uSelectedColor;\\nuniform vec4 picking_uHighlightColor;\\n\\nin vec4 picking_vRGBcolor_Avalid;\\nvec4 picking_filterHighlightColor(vec4 color) {\\n  if (picking_uActive) {\\n    return color;\\n  }\\n  bool selected = bool(picking_vRGBcolor_Avalid.a);\\n\\n  if (selected) {\\n    float highLightAlpha = picking_uHighlightColor.a;\\n    float blendedAlpha = highLightAlpha + color.a * (1.0 - highLightAlpha);\\n    float highLightRatio = highLightAlpha / blendedAlpha;\\n\\n    vec3 blendedRGB = mix(color.rgb, picking_uHighlightColor.rgb, highLightRatio);\\n    return vec4(blendedRGB, blendedAlpha);\\n  } else {\\n    return color;\\n  }\\n}\\nvec4 picking_filterPickingColor(vec4 color) {\\n  if (picking_uActive) {\\n    if (picking_vRGBcolor_Avalid.a == 0.0) {\\n      discard;\\n    }\\n    return picking_vRGBcolor_Avalid;\\n  }\\n  return color;\\n}\\nvec4 picking_filterColor(vec4 color) {\\n  vec4 highightColor = picking_filterHighlightColor(color);\\n  return picking_filterPickingColor(highightColor);\\n}\\n\\n\";\nexport const picking = {\n  name: 'picking',\n  vs,\n  fs,\n  getUniforms\n};\n//# sourceMappingURL=picking.js.map","export default function assert(condition, message) {\n  if (!condition) {\n    throw new Error(message || 'shadertools: assertion failed.');\n  }\n}\n//# sourceMappingURL=assert.js.map","import { getTypedArrayFromGLType } from '../webgl-utils/typed-array-utils';\nimport { assert } from '../utils/assert';\nimport { checkProps } from '../utils/check-props';\nconst DEFAULT_ACCESSOR_VALUES = {\n  offset: 0,\n  stride: 0,\n  type: 5126,\n  size: 1,\n  divisor: 0,\n  normalized: false,\n  integer: false\n};\nconst PROP_CHECKS = {\n  deprecatedProps: {\n    instanced: 'divisor',\n    isInstanced: 'divisor'\n  }\n};\nexport default class Accessor {\n  static getBytesPerElement(accessor) {\n    const ArrayType = getTypedArrayFromGLType(accessor.type || 5126);\n    return ArrayType.BYTES_PER_ELEMENT;\n  }\n\n  static getBytesPerVertex(accessor) {\n    assert(accessor.size);\n    const ArrayType = getTypedArrayFromGLType(accessor.type || 5126);\n    return ArrayType.BYTES_PER_ELEMENT * accessor.size;\n  }\n\n  static resolve() {\n    for (var _len = arguments.length, accessors = new Array(_len), _key = 0; _key < _len; _key++) {\n      accessors[_key] = arguments[_key];\n    }\n\n    return new Accessor(...[DEFAULT_ACCESSOR_VALUES, ...accessors]);\n  }\n\n  constructor() {\n    for (var _len2 = arguments.length, accessors = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n      accessors[_key2] = arguments[_key2];\n    }\n\n    accessors.forEach(accessor => this._assign(accessor));\n    Object.freeze(this);\n  }\n\n  toString() {\n    return JSON.stringify(this);\n  }\n\n  get BYTES_PER_ELEMENT() {\n    return Accessor.getBytesPerElement(this);\n  }\n\n  get BYTES_PER_VERTEX() {\n    return Accessor.getBytesPerVertex(this);\n  }\n\n  _assign() {\n    let props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n    props = checkProps('Accessor', props, PROP_CHECKS);\n\n    if (props.type !== undefined) {\n      this.type = props.type;\n\n      if (props.type === 5124 || props.type === 5125) {\n        this.integer = true;\n      }\n    }\n\n    if (props.size !== undefined) {\n      this.size = props.size;\n    }\n\n    if (props.offset !== undefined) {\n      this.offset = props.offset;\n    }\n\n    if (props.stride !== undefined) {\n      this.stride = props.stride;\n    }\n\n    if (props.normalized !== undefined) {\n      this.normalized = props.normalized;\n    }\n\n    if (props.integer !== undefined) {\n      this.integer = props.integer;\n    }\n\n    if (props.divisor !== undefined) {\n      this.divisor = props.divisor;\n    }\n\n    if (props.buffer !== undefined) {\n      this.buffer = props.buffer;\n    }\n\n    if (props.index !== undefined) {\n      if (typeof props.index === 'boolean') {\n        this.index = props.index ? 1 : 0;\n      } else {\n        this.index = props.index;\n      }\n    }\n\n    if (props.instanced !== undefined) {\n      this.divisor = props.instanced ? 1 : 0;\n    }\n\n    if (props.isInstanced !== undefined) {\n      this.divisor = props.isInstanced ? 1 : 0;\n    }\n\n    return this;\n  }\n\n}\nexport { DEFAULT_ACCESSOR_VALUES };\n//# sourceMappingURL=accessor.js.map","import Resource from './resource';\nimport Accessor from './accessor';\nimport { getGLTypeFromTypedArray, getTypedArrayFromGLType } from '../webgl-utils/typed-array-utils';\nimport { assertWebGL2Context, log } from '@luma.gl/gltools';\nimport { assert } from '../utils/assert';\nimport { checkProps } from '../utils/check-props';\nconst DEBUG_DATA_LENGTH = 10;\nconst DEPRECATED_PROPS = {\n  offset: 'accessor.offset',\n  stride: 'accessor.stride',\n  type: 'accessor.type',\n  size: 'accessor.size',\n  divisor: 'accessor.divisor',\n  normalized: 'accessor.normalized',\n  integer: 'accessor.integer',\n  instanced: 'accessor.divisor',\n  isInstanced: 'accessor.divisor'\n};\nconst PROP_CHECKS_INITIALIZE = {\n  removedProps: {},\n  replacedProps: {\n    bytes: 'byteLength'\n  },\n  deprecatedProps: DEPRECATED_PROPS\n};\nconst PROP_CHECKS_SET_PROPS = {\n  removedProps: DEPRECATED_PROPS\n};\nexport default class Buffer extends Resource {\n  get [Symbol.toStringTag]() {\n    return 'Buffer';\n  }\n\n  constructor(gl) {\n    let props = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n    super(gl, props);\n    this.stubRemovedMethods('Buffer', 'v6.0', ['layout', 'setLayout', 'getIndexedParameter']);\n    this.target = props.target || (this.gl.webgl2 ? 36662 : 34962);\n    this.initialize(props);\n    Object.seal(this);\n  }\n\n  getElementCount() {\n    let accessor = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.accessor;\n    return Math.round(this.byteLength / Accessor.getBytesPerElement(accessor));\n  }\n\n  getVertexCount() {\n    let accessor = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.accessor;\n    return Math.round(this.byteLength / Accessor.getBytesPerVertex(accessor));\n  }\n\n  initialize() {\n    let props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n    if (ArrayBuffer.isView(props)) {\n      props = {\n        data: props\n      };\n    }\n\n    if (Number.isFinite(props)) {\n      props = {\n        byteLength: props\n      };\n    }\n\n    props = checkProps('Buffer', props, PROP_CHECKS_INITIALIZE);\n    this.usage = props.usage || 35044;\n    this.debugData = null;\n    this.setAccessor(Object.assign({}, props, props.accessor));\n\n    if (props.data) {\n      this._setData(props.data, props.offset, props.byteLength);\n    } else {\n      this._setByteLength(props.byteLength || 0);\n    }\n\n    return this;\n  }\n\n  setProps(props) {\n    props = checkProps('Buffer', props, PROP_CHECKS_SET_PROPS);\n\n    if ('accessor' in props) {\n      this.setAccessor(props.accessor);\n    }\n\n    return this;\n  }\n\n  setAccessor(accessor) {\n    accessor = Object.assign({}, accessor);\n    delete accessor.buffer;\n    this.accessor = new Accessor(accessor);\n    return this;\n  }\n\n  reallocate(byteLength) {\n    if (byteLength > this.byteLength) {\n      this._setByteLength(byteLength);\n\n      return true;\n    }\n\n    this.bytesUsed = byteLength;\n    return false;\n  }\n\n  setData(props) {\n    return this.initialize(props);\n  }\n\n  subData(props) {\n    if (ArrayBuffer.isView(props)) {\n      props = {\n        data: props\n      };\n    }\n\n    const {\n      data,\n      offset = 0,\n      srcOffset = 0\n    } = props;\n    const byteLength = props.byteLength || props.length;\n    assert(data);\n    const target = this.gl.webgl2 ? 36663 : this.target;\n    this.gl.bindBuffer(target, this.handle);\n\n    if (srcOffset !== 0 || byteLength !== undefined) {\n      assertWebGL2Context(this.gl);\n      this.gl.bufferSubData(this.target, offset, data, srcOffset, byteLength);\n    } else {\n      this.gl.bufferSubData(target, offset, data);\n    }\n\n    this.gl.bindBuffer(target, null);\n    this.debugData = null;\n\n    this._inferType(data);\n\n    return this;\n  }\n\n  copyData(_ref) {\n    let {\n      sourceBuffer,\n      readOffset = 0,\n      writeOffset = 0,\n      size\n    } = _ref;\n    const {\n      gl\n    } = this;\n    assertWebGL2Context(gl);\n    gl.bindBuffer(36662, sourceBuffer.handle);\n    gl.bindBuffer(36663, this.handle);\n    gl.copyBufferSubData(36662, 36663, readOffset, writeOffset, size);\n    gl.bindBuffer(36662, null);\n    gl.bindBuffer(36663, null);\n    this.debugData = null;\n    return this;\n  }\n\n  getData() {\n    let {\n      dstData = null,\n      srcByteOffset = 0,\n      dstOffset = 0,\n      length = 0\n    } = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n    assertWebGL2Context(this.gl);\n    const ArrayType = getTypedArrayFromGLType(this.accessor.type || 5126, {\n      clamped: false\n    });\n\n    const sourceAvailableElementCount = this._getAvailableElementCount(srcByteOffset);\n\n    const dstElementOffset = dstOffset;\n    let dstAvailableElementCount;\n    let dstElementCount;\n\n    if (dstData) {\n      dstElementCount = dstData.length;\n      dstAvailableElementCount = dstElementCount - dstElementOffset;\n    } else {\n      dstAvailableElementCount = Math.min(sourceAvailableElementCount, length || sourceAvailableElementCount);\n      dstElementCount = dstElementOffset + dstAvailableElementCount;\n    }\n\n    const copyElementCount = Math.min(sourceAvailableElementCount, dstAvailableElementCount);\n    length = length || copyElementCount;\n    assert(length <= copyElementCount);\n    dstData = dstData || new ArrayType(dstElementCount);\n    this.gl.bindBuffer(36662, this.handle);\n    this.gl.getBufferSubData(36662, srcByteOffset, dstData, dstOffset, length);\n    this.gl.bindBuffer(36662, null);\n    return dstData;\n  }\n\n  bind() {\n    let {\n      target = this.target,\n      index = this.accessor && this.accessor.index,\n      offset = 0,\n      size\n    } = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n    if (target === 35345 || target === 35982) {\n      if (size !== undefined) {\n        this.gl.bindBufferRange(target, index, this.handle, offset, size);\n      } else {\n        assert(offset === 0);\n        this.gl.bindBufferBase(target, index, this.handle);\n      }\n    } else {\n      this.gl.bindBuffer(target, this.handle);\n    }\n\n    return this;\n  }\n\n  unbind() {\n    let {\n      target = this.target,\n      index = this.accessor && this.accessor.index\n    } = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n    const isIndexedBuffer = target === 35345 || target === 35982;\n\n    if (isIndexedBuffer) {\n      this.gl.bindBufferBase(target, index, null);\n    } else {\n      this.gl.bindBuffer(target, null);\n    }\n\n    return this;\n  }\n\n  getDebugData() {\n    if (!this.debugData) {\n      this.debugData = this.getData({\n        length: Math.min(DEBUG_DATA_LENGTH, this.byteLength)\n      });\n      return {\n        data: this.debugData,\n        changed: true\n      };\n    }\n\n    return {\n      data: this.debugData,\n      changed: false\n    };\n  }\n\n  invalidateDebugData() {\n    this.debugData = null;\n  }\n\n  _setData(data) {\n    let offset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n    let byteLength = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : data.byteLength + offset;\n    assert(ArrayBuffer.isView(data));\n\n    this._trackDeallocatedMemory();\n\n    const target = this._getTarget();\n\n    this.gl.bindBuffer(target, this.handle);\n    this.gl.bufferData(target, byteLength, this.usage);\n    this.gl.bufferSubData(target, offset, data);\n    this.gl.bindBuffer(target, null);\n    this.debugData = data.slice(0, DEBUG_DATA_LENGTH);\n    this.bytesUsed = byteLength;\n\n    this._trackAllocatedMemory(byteLength);\n\n    const type = getGLTypeFromTypedArray(data);\n    assert(type);\n    this.setAccessor(new Accessor(this.accessor, {\n      type\n    }));\n    return this;\n  }\n\n  _setByteLength(byteLength) {\n    let usage = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.usage;\n    assert(byteLength >= 0);\n\n    this._trackDeallocatedMemory();\n\n    let data = byteLength;\n\n    if (byteLength === 0) {\n      data = new Float32Array(0);\n    }\n\n    const target = this._getTarget();\n\n    this.gl.bindBuffer(target, this.handle);\n    this.gl.bufferData(target, data, usage);\n    this.gl.bindBuffer(target, null);\n    this.usage = usage;\n    this.debugData = null;\n    this.bytesUsed = byteLength;\n\n    this._trackAllocatedMemory(byteLength);\n\n    return this;\n  }\n\n  _getTarget() {\n    return this.gl.webgl2 ? 36663 : this.target;\n  }\n\n  _getAvailableElementCount(srcByteOffset) {\n    const ArrayType = getTypedArrayFromGLType(this.accessor.type || 5126, {\n      clamped: false\n    });\n    const sourceElementOffset = srcByteOffset / ArrayType.BYTES_PER_ELEMENT;\n    return this.getElementCount() - sourceElementOffset;\n  }\n\n  _inferType(data) {\n    if (!this.accessor.type) {\n      this.setAccessor(new Accessor(this.accessor, {\n        type: getGLTypeFromTypedArray(data)\n      }));\n    }\n  }\n\n  _createHandle() {\n    return this.gl.createBuffer();\n  }\n\n  _deleteHandle() {\n    this.gl.deleteBuffer(this.handle);\n\n    this._trackDeallocatedMemory();\n  }\n\n  _getParameter(pname) {\n    this.gl.bindBuffer(this.target, this.handle);\n    const value = this.gl.getBufferParameter(this.target, pname);\n    this.gl.bindBuffer(this.target, null);\n    return value;\n  }\n\n  get type() {\n    log.deprecated('Buffer.type', 'Buffer.accessor.type')();\n    return this.accessor.type;\n  }\n\n  get bytes() {\n    log.deprecated('Buffer.bytes', 'Buffer.byteLength')();\n    return this.byteLength;\n  }\n\n  setByteLength(byteLength) {\n    log.deprecated('setByteLength', 'reallocate')();\n    return this.reallocate(byteLength);\n  }\n\n  updateAccessor(opts) {\n    log.deprecated('updateAccessor(...)', 'setAccessor(new Accessor(buffer.accessor, ...)')();\n    this.accessor = new Accessor(this.accessor, opts);\n    return this;\n  }\n\n}\n//# sourceMappingURL=buffer.js.map","import { assertWebGL2Context, withParameters } from '@luma.gl/gltools';\nimport { assert } from '../utils/assert';\nconst GL_DEPTH_BUFFER_BIT = 0x00000100;\nconst GL_STENCIL_BUFFER_BIT = 0x00000400;\nconst GL_COLOR_BUFFER_BIT = 0x00004000;\nconst GL_COLOR = 0x1800;\nconst GL_DEPTH = 0x1801;\nconst GL_STENCIL = 0x1802;\nconst GL_DEPTH_STENCIL = 0x84f9;\nconst ERR_ARGUMENTS = 'clear: bad arguments';\nexport function clear(gl) {\n  let {\n    framebuffer = null,\n    color = null,\n    depth = null,\n    stencil = null\n  } = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n  const parameters = {};\n\n  if (framebuffer) {\n    parameters.framebuffer = framebuffer;\n  }\n\n  let clearFlags = 0;\n\n  if (color) {\n    clearFlags |= GL_COLOR_BUFFER_BIT;\n\n    if (color !== true) {\n      parameters.clearColor = color;\n    }\n  }\n\n  if (depth) {\n    clearFlags |= GL_DEPTH_BUFFER_BIT;\n\n    if (depth !== true) {\n      parameters.clearDepth = depth;\n    }\n  }\n\n  if (stencil) {\n    clearFlags |= GL_STENCIL_BUFFER_BIT;\n\n    if (depth !== true) {\n      parameters.clearStencil = depth;\n    }\n  }\n\n  assert(clearFlags !== 0, ERR_ARGUMENTS);\n  withParameters(gl, parameters, () => {\n    gl.clear(clearFlags);\n  });\n}\nexport function clearBuffer(gl) {\n  let {\n    framebuffer = null,\n    buffer = GL_COLOR,\n    drawBuffer = 0,\n    value = [0, 0, 0, 0]\n  } = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n  assertWebGL2Context(gl);\n  withParameters(gl, {\n    framebuffer\n  }, () => {\n    switch (buffer) {\n      case GL_COLOR:\n        switch (value.constructor) {\n          case Int32Array:\n            gl.clearBufferiv(buffer, drawBuffer, value);\n            break;\n\n          case Uint32Array:\n            gl.clearBufferuiv(buffer, drawBuffer, value);\n            break;\n\n          case Float32Array:\n          default:\n            gl.clearBufferfv(buffer, drawBuffer, value);\n        }\n\n        break;\n\n      case GL_DEPTH:\n        gl.clearBufferfv(GL_DEPTH, 0, [value]);\n        break;\n\n      case GL_STENCIL:\n        gl.clearBufferiv(GL_STENCIL, 0, [value]);\n        break;\n\n      case GL_DEPTH_STENCIL:\n        const [depth, stencil] = value;\n        gl.clearBufferfi(GL_DEPTH_STENCIL, 0, depth, stencil);\n        break;\n\n      default:\n        assert(false, ERR_ARGUMENTS);\n    }\n  });\n}\n//# sourceMappingURL=clear.js.map","import { assert } from '../utils/assert';\nexport function glFormatToComponents(format) {\n  switch (format) {\n    case 6406:\n    case 33326:\n    case 6403:\n      return 1;\n\n    case 33328:\n    case 33319:\n      return 2;\n\n    case 6407:\n    case 34837:\n      return 3;\n\n    case 6408:\n    case 34836:\n      return 4;\n\n    default:\n      assert(false);\n      return 0;\n  }\n}\nexport function glTypeToBytes(type) {\n  switch (type) {\n    case 5121:\n      return 1;\n\n    case 33635:\n    case 32819:\n    case 32820:\n      return 2;\n\n    case 5126:\n      return 4;\n\n    default:\n      assert(false);\n      return 0;\n  }\n}\n//# sourceMappingURL=format-utils.js.map","import Buffer from './buffer';\nimport Framebuffer from './framebuffer';\nimport Texture from './texture';\nimport { assertWebGL2Context, withParameters, log } from '@luma.gl/gltools';\nimport { flipRows, scalePixels } from '../webgl-utils/typed-array-utils';\nimport { getTypedArrayFromGLType, getGLTypeFromTypedArray } from '../webgl-utils/typed-array-utils';\nimport { glFormatToComponents, glTypeToBytes } from '../webgl-utils/format-utils';\nimport { toFramebuffer } from '../webgl-utils/texture-utils';\nimport { assert } from '../utils/assert';\nexport function readPixelsToArray(source) {\n  let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n  const {\n    sourceX = 0,\n    sourceY = 0,\n    sourceFormat = 6408\n  } = options;\n  let {\n    sourceAttachment = 36064,\n    target = null,\n    sourceWidth,\n    sourceHeight,\n    sourceType\n  } = options;\n  const {\n    framebuffer,\n    deleteFramebuffer\n  } = getFramebuffer(source);\n  assert(framebuffer);\n  const {\n    gl,\n    handle,\n    attachments\n  } = framebuffer;\n  sourceWidth = sourceWidth || framebuffer.width;\n  sourceHeight = sourceHeight || framebuffer.height;\n\n  if (sourceAttachment === 36064 && handle === null) {\n    sourceAttachment = 1028;\n  }\n\n  assert(attachments[sourceAttachment]);\n  sourceType = sourceType || attachments[sourceAttachment].type;\n  target = getPixelArray(target, sourceType, sourceFormat, sourceWidth, sourceHeight);\n  sourceType = sourceType || getGLTypeFromTypedArray(target);\n  const prevHandle = gl.bindFramebuffer(36160, handle);\n  gl.readPixels(sourceX, sourceY, sourceWidth, sourceHeight, sourceFormat, sourceType, target);\n  gl.bindFramebuffer(36160, prevHandle || null);\n\n  if (deleteFramebuffer) {\n    framebuffer.delete();\n  }\n\n  return target;\n}\nexport function readPixelsToBuffer(source, _ref) {\n  let {\n    sourceX = 0,\n    sourceY = 0,\n    sourceFormat = 6408,\n    target = null,\n    targetByteOffset = 0,\n    sourceWidth,\n    sourceHeight,\n    sourceType\n  } = _ref;\n  const {\n    framebuffer,\n    deleteFramebuffer\n  } = getFramebuffer(source);\n  assert(framebuffer);\n  sourceWidth = sourceWidth || framebuffer.width;\n  sourceHeight = sourceHeight || framebuffer.height;\n  const gl2 = assertWebGL2Context(framebuffer.gl);\n  sourceType = sourceType || (target ? target.type : 5121);\n\n  if (!target) {\n    const components = glFormatToComponents(sourceFormat);\n    const byteCount = glTypeToBytes(sourceType);\n    const byteLength = targetByteOffset + sourceWidth * sourceHeight * components * byteCount;\n    target = new Buffer(gl2, {\n      byteLength,\n      accessor: {\n        type: sourceType,\n        size: components\n      }\n    });\n  }\n\n  target.bind({\n    target: 35051\n  });\n  withParameters(gl2, {\n    framebuffer\n  }, () => {\n    gl2.readPixels(sourceX, sourceY, sourceWidth, sourceHeight, sourceFormat, sourceType, targetByteOffset);\n  });\n  target.unbind({\n    target: 35051\n  });\n\n  if (deleteFramebuffer) {\n    framebuffer.delete();\n  }\n\n  return target;\n}\nexport function copyToDataUrl(source) {\n  let {\n    sourceAttachment = 36064,\n    targetMaxHeight = Number.MAX_SAFE_INTEGER\n  } = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n  let data = readPixelsToArray(source, {\n    sourceAttachment\n  });\n  let {\n    width,\n    height\n  } = source;\n\n  while (height > targetMaxHeight) {\n    ({\n      data,\n      width,\n      height\n    } = scalePixels({\n      data,\n      width,\n      height\n    }));\n  }\n\n  flipRows({\n    data,\n    width,\n    height\n  });\n  const canvas = document.createElement('canvas');\n  canvas.width = width;\n  canvas.height = height;\n  const context = canvas.getContext('2d');\n  const imageData = context.createImageData(width, height);\n  imageData.data.set(data);\n  context.putImageData(imageData, 0, 0);\n  return canvas.toDataURL();\n}\nexport function copyToImage(source) {\n  let {\n    sourceAttachment = 36064,\n    targetImage = null\n  } = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n  const dataUrl = copyToDataUrl(source, {\n    sourceAttachment\n  });\n  targetImage = targetImage || new Image();\n  targetImage.src = dataUrl;\n  return targetImage;\n}\nexport function copyToTexture(source, target) {\n  let options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n  const {\n    sourceX = 0,\n    sourceY = 0,\n    targetMipmaplevel = 0,\n    targetInternalFormat = 6408\n  } = options;\n  let {\n    targetX,\n    targetY,\n    targetZ,\n    width,\n    height\n  } = options;\n  const {\n    framebuffer,\n    deleteFramebuffer\n  } = getFramebuffer(source);\n  assert(framebuffer);\n  const {\n    gl,\n    handle\n  } = framebuffer;\n  const isSubCopy = typeof targetX !== 'undefined' || typeof targetY !== 'undefined' || typeof targetZ !== 'undefined';\n  targetX = targetX || 0;\n  targetY = targetY || 0;\n  targetZ = targetZ || 0;\n  const prevHandle = gl.bindFramebuffer(36160, handle);\n  assert(target);\n  let texture = null;\n\n  if (target instanceof Texture) {\n    texture = target;\n    width = Number.isFinite(width) ? width : texture.width;\n    height = Number.isFinite(height) ? height : texture.height;\n    texture.bind(0);\n    target = texture.target;\n  }\n\n  if (!isSubCopy) {\n    gl.copyTexImage2D(target, targetMipmaplevel, targetInternalFormat, sourceX, sourceY, width, height, 0);\n  } else {\n    switch (target) {\n      case 3553:\n      case 34067:\n        gl.copyTexSubImage2D(target, targetMipmaplevel, targetX, targetY, sourceX, sourceY, width, height);\n        break;\n\n      case 35866:\n      case 32879:\n        const gl2 = assertWebGL2Context(gl);\n        gl2.copyTexSubImage3D(target, targetMipmaplevel, targetX, targetY, targetZ, sourceX, sourceY, width, height);\n        break;\n\n      default:\n    }\n  }\n\n  if (texture) {\n    texture.unbind();\n  }\n\n  gl.bindFramebuffer(36160, prevHandle || null);\n\n  if (deleteFramebuffer) {\n    framebuffer.delete();\n  }\n\n  return texture;\n}\nexport function blit(source, target) {\n  let options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n  const {\n    sourceX0 = 0,\n    sourceY0 = 0,\n    targetX0 = 0,\n    targetY0 = 0,\n    color = true,\n    depth = false,\n    stencil = false,\n    filter = 9728\n  } = options;\n  let {\n    sourceX1,\n    sourceY1,\n    targetX1,\n    targetY1,\n    sourceAttachment = 36064,\n    mask = 0\n  } = options;\n  const {\n    framebuffer: srcFramebuffer,\n    deleteFramebuffer: deleteSrcFramebuffer\n  } = getFramebuffer(source);\n  const {\n    framebuffer: dstFramebuffer,\n    deleteFramebuffer: deleteDstFramebuffer\n  } = getFramebuffer(target);\n  assert(srcFramebuffer);\n  assert(dstFramebuffer);\n  const {\n    gl,\n    handle,\n    width,\n    height,\n    readBuffer\n  } = dstFramebuffer;\n  const gl2 = assertWebGL2Context(gl);\n\n  if (!srcFramebuffer.handle && sourceAttachment === 36064) {\n    sourceAttachment = 1028;\n  }\n\n  if (color) {\n    mask |= 16384;\n  }\n\n  if (depth) {\n    mask |= 256;\n  }\n\n  if (stencil) {\n    mask |= 1024;\n  }\n\n  if (deleteSrcFramebuffer || deleteDstFramebuffer) {\n    if (mask & (256 | 1024)) {\n      mask = 16384;\n      log.warn('Blitting from or into a Texture object, forcing mask to GL.COLOR_BUFFER_BIT')();\n    }\n  }\n\n  assert(mask);\n  sourceX1 = sourceX1 === undefined ? srcFramebuffer.width : sourceX1;\n  sourceY1 = sourceY1 === undefined ? srcFramebuffer.height : sourceY1;\n  targetX1 = targetX1 === undefined ? width : targetX1;\n  targetY1 = targetY1 === undefined ? height : targetY1;\n  const prevDrawHandle = gl.bindFramebuffer(36009, handle);\n  const prevReadHandle = gl.bindFramebuffer(36008, srcFramebuffer.handle);\n  gl2.readBuffer(sourceAttachment);\n  gl2.blitFramebuffer(sourceX0, sourceY0, sourceX1, sourceY1, targetX0, targetY0, targetX1, targetY1, mask, filter);\n  gl2.readBuffer(readBuffer);\n  gl2.bindFramebuffer(36008, prevReadHandle || null);\n  gl2.bindFramebuffer(36009, prevDrawHandle || null);\n\n  if (deleteSrcFramebuffer) {\n    srcFramebuffer.delete();\n  }\n\n  if (deleteDstFramebuffer) {\n    dstFramebuffer.delete();\n  }\n\n  return dstFramebuffer;\n}\n\nfunction getFramebuffer(source) {\n  if (!(source instanceof Framebuffer)) {\n    return {\n      framebuffer: toFramebuffer(source),\n      deleteFramebuffer: true\n    };\n  }\n\n  return {\n    framebuffer: source,\n    deleteFramebuffer: false\n  };\n}\n\nfunction getPixelArray(pixelArray, type, format, width, height) {\n  if (pixelArray) {\n    return pixelArray;\n  }\n\n  type = type || 5121;\n  const ArrayType = getTypedArrayFromGLType(type, {\n    clamped: false\n  });\n  const components = glFormatToComponents(format);\n  return new ArrayType(width * height * components);\n}\n//# sourceMappingURL=copy-and-blit.js.map","import { getWebGL2Context, assertWebGL2Context, log } from '@luma.gl/gltools';\nimport Resource from './resource';\nimport Texture2D from './texture-2d';\nimport Renderbuffer from './renderbuffer';\nimport { clear, clearBuffer } from './clear';\nimport { copyToDataUrl } from './copy-and-blit.js';\nimport { getFeatures } from '../features';\nimport { getKey } from '../webgl-utils/constants-to-keys';\nimport { assert } from '../utils/assert';\nconst ERR_MULTIPLE_RENDERTARGETS = 'Multiple render targets not supported';\nexport default class Framebuffer extends Resource {\n  get [Symbol.toStringTag]() {\n    return 'Framebuffer';\n  }\n\n  static isSupported(gl) {\n    let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n    const {\n      colorBufferFloat,\n      colorBufferHalfFloat\n    } = options;\n    let supported = true;\n\n    if (colorBufferFloat) {\n      supported = Boolean(gl.getExtension('EXT_color_buffer_float') || gl.getExtension('WEBGL_color_buffer_float') || gl.getExtension('OES_texture_float'));\n    }\n\n    if (colorBufferHalfFloat) {\n      supported = supported && Boolean(gl.getExtension('EXT_color_buffer_float') || gl.getExtension('EXT_color_buffer_half_float'));\n    }\n\n    return supported;\n  }\n\n  static getDefaultFramebuffer(gl) {\n    gl.luma = gl.luma || {};\n    gl.luma.defaultFramebuffer = gl.luma.defaultFramebuffer || new Framebuffer(gl, {\n      id: 'default-framebuffer',\n      handle: null,\n      attachments: {}\n    });\n    return gl.luma.defaultFramebuffer;\n  }\n\n  get MAX_COLOR_ATTACHMENTS() {\n    const gl2 = assertWebGL2Context(this.gl);\n    return gl2.getParameter(gl2.MAX_COLOR_ATTACHMENTS);\n  }\n\n  get MAX_DRAW_BUFFERS() {\n    const gl2 = assertWebGL2Context(this.gl);\n    return gl2.getParameter(gl2.MAX_DRAW_BUFFERS);\n  }\n\n  constructor(gl) {\n    let opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n    super(gl, opts);\n    this.width = null;\n    this.height = null;\n    this.attachments = {};\n    this.readBuffer = 36064;\n    this.drawBuffers = [36064];\n    this.ownResources = [];\n    this.initialize(opts);\n    Object.seal(this);\n  }\n\n  get color() {\n    return this.attachments[36064] || null;\n  }\n\n  get texture() {\n    return this.attachments[36064] || null;\n  }\n\n  get depth() {\n    return this.attachments[36096] || this.attachments[33306] || null;\n  }\n\n  get stencil() {\n    return this.attachments[36128] || this.attachments[33306] || null;\n  }\n\n  initialize(_ref) {\n    let {\n      width = 1,\n      height = 1,\n      attachments = null,\n      color = true,\n      depth = true,\n      stencil = false,\n      check = true,\n      readBuffer = undefined,\n      drawBuffers = undefined\n    } = _ref;\n    assert(width >= 0 && height >= 0, 'Width and height need to be integers');\n    this.width = width;\n    this.height = height;\n\n    if (attachments) {\n      for (const attachment in attachments) {\n        const target = attachments[attachment];\n        const object = Array.isArray(target) ? target[0] : target;\n        object.resize({\n          width,\n          height\n        });\n      }\n    } else {\n      attachments = this._createDefaultAttachments(color, depth, stencil, width, height);\n    }\n\n    this.update({\n      clearAttachments: true,\n      attachments,\n      readBuffer,\n      drawBuffers\n    });\n\n    if (attachments && check) {\n      this.checkStatus();\n    }\n  }\n\n  delete() {\n    for (const resource of this.ownResources) {\n      resource.delete();\n    }\n\n    super.delete();\n    return this;\n  }\n\n  update(_ref2) {\n    let {\n      attachments = {},\n      readBuffer,\n      drawBuffers,\n      clearAttachments = false,\n      resizeAttachments = true\n    } = _ref2;\n    this.attach(attachments, {\n      clearAttachments,\n      resizeAttachments\n    });\n    const {\n      gl\n    } = this;\n    const prevHandle = gl.bindFramebuffer(36160, this.handle);\n\n    if (readBuffer) {\n      this._setReadBuffer(readBuffer);\n    }\n\n    if (drawBuffers) {\n      this._setDrawBuffers(drawBuffers);\n    }\n\n    gl.bindFramebuffer(36160, prevHandle || null);\n    return this;\n  }\n\n  resize() {\n    let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n    let {\n      width,\n      height\n    } = options;\n\n    if (this.handle === null) {\n      assert(width === undefined && height === undefined);\n      this.width = this.gl.drawingBufferWidth;\n      this.height = this.gl.drawingBufferHeight;\n      return this;\n    }\n\n    if (width === undefined) {\n      width = this.gl.drawingBufferWidth;\n    }\n\n    if (height === undefined) {\n      height = this.gl.drawingBufferHeight;\n    }\n\n    if (width !== this.width && height !== this.height) {\n      log.log(2, \"Resizing framebuffer \".concat(this.id, \" to \").concat(width, \"x\").concat(height))();\n    }\n\n    for (const attachmentPoint in this.attachments) {\n      this.attachments[attachmentPoint].resize({\n        width,\n        height\n      });\n    }\n\n    this.width = width;\n    this.height = height;\n    return this;\n  }\n\n  attach(attachments) {\n    let {\n      clearAttachments = false,\n      resizeAttachments = true\n    } = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n    const newAttachments = {};\n\n    if (clearAttachments) {\n      Object.keys(this.attachments).forEach(key => {\n        newAttachments[key] = null;\n      });\n    }\n\n    Object.assign(newAttachments, attachments);\n    const prevHandle = this.gl.bindFramebuffer(36160, this.handle);\n\n    for (const key in newAttachments) {\n      assert(key !== undefined, 'Misspelled framebuffer binding point?');\n      const attachment = Number(key);\n      const descriptor = newAttachments[attachment];\n      let object = descriptor;\n\n      if (!object) {\n        this._unattach(attachment);\n      } else if (object instanceof Renderbuffer) {\n        this._attachRenderbuffer({\n          attachment,\n          renderbuffer: object\n        });\n      } else if (Array.isArray(descriptor)) {\n        const [texture, layer = 0, level = 0] = descriptor;\n        object = texture;\n\n        this._attachTexture({\n          attachment,\n          texture,\n          layer,\n          level\n        });\n      } else {\n        this._attachTexture({\n          attachment,\n          texture: object,\n          layer: 0,\n          level: 0\n        });\n      }\n\n      if (resizeAttachments && object) {\n        object.resize({\n          width: this.width,\n          height: this.height\n        });\n      }\n    }\n\n    this.gl.bindFramebuffer(36160, prevHandle || null);\n    Object.assign(this.attachments, attachments);\n    Object.keys(this.attachments).filter(key => !this.attachments[key]).forEach(key => {\n      delete this.attachments[key];\n    });\n  }\n\n  checkStatus() {\n    const {\n      gl\n    } = this;\n    const status = this.getStatus();\n\n    if (status !== 36053) {\n      throw new Error(_getFrameBufferStatus(status));\n    }\n\n    return this;\n  }\n\n  getStatus() {\n    const {\n      gl\n    } = this;\n    const prevHandle = gl.bindFramebuffer(36160, this.handle);\n    const status = gl.checkFramebufferStatus(36160);\n    gl.bindFramebuffer(36160, prevHandle || null);\n    return status;\n  }\n\n  clear() {\n    let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n    const {\n      color,\n      depth,\n      stencil,\n      drawBuffers = []\n    } = options;\n    const prevHandle = this.gl.bindFramebuffer(36160, this.handle);\n\n    if (color || depth || stencil) {\n      clear(this.gl, {\n        color,\n        depth,\n        stencil\n      });\n    }\n\n    drawBuffers.forEach((value, drawBuffer) => {\n      clearBuffer(this.gl, {\n        drawBuffer,\n        value\n      });\n    });\n    this.gl.bindFramebuffer(36160, prevHandle || null);\n    return this;\n  }\n\n  readPixels() {\n    let opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n    log.error('Framebuffer.readPixels() is no logner supported, use readPixelsToArray(framebuffer)')();\n    return null;\n  }\n\n  readPixelsToBuffer() {\n    let opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n    log.error('Framebuffer.readPixelsToBuffer()is no logner supported, use readPixelsToBuffer(framebuffer)')();\n    return null;\n  }\n\n  copyToDataUrl() {\n    let opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n    log.error('Framebuffer.copyToDataUrl() is no logner supported, use copyToDataUrl(framebuffer)')();\n    return null;\n  }\n\n  copyToImage() {\n    let opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n    log.error('Framebuffer.copyToImage() is no logner supported, use copyToImage(framebuffer)')();\n    return null;\n  }\n\n  copyToTexture() {\n    let opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n    log.error('Framebuffer.copyToTexture({...}) is no logner supported, use copyToTexture(source, target, opts})')();\n    return null;\n  }\n\n  blit() {\n    let opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n    log.error('Framebuffer.blit({...}) is no logner supported, use blit(source, target, opts)')();\n    return null;\n  }\n\n  invalidate(_ref3) {\n    let {\n      attachments = [],\n      x = 0,\n      y = 0,\n      width,\n      height\n    } = _ref3;\n    const gl2 = assertWebGL2Context(this.gl);\n    const prevHandle = gl2.bindFramebuffer(36008, this.handle);\n    const invalidateAll = x === 0 && y === 0 && width === undefined && height === undefined;\n\n    if (invalidateAll) {\n      gl2.invalidateFramebuffer(36008, attachments);\n    } else {\n      gl2.invalidateFramebuffer(36008, attachments, x, y, width, height);\n    }\n\n    gl2.bindFramebuffer(36008, prevHandle);\n    return this;\n  }\n\n  getAttachmentParameter(attachment, pname, keys) {\n    let value = this._getAttachmentParameterFallback(pname);\n\n    if (value === null) {\n      this.gl.bindFramebuffer(36160, this.handle);\n      value = this.gl.getFramebufferAttachmentParameter(36160, attachment, pname);\n      this.gl.bindFramebuffer(36160, null);\n    }\n\n    if (keys && value > 1000) {\n      value = getKey(this.gl, value);\n    }\n\n    return value;\n  }\n\n  getAttachmentParameters() {\n    let attachment = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 36064;\n    let keys = arguments.length > 1 ? arguments[1] : undefined;\n    let parameters = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : this.constructor.ATTACHMENT_PARAMETERS || [];\n    const values = {};\n\n    for (const pname of parameters) {\n      const key = keys ? getKey(this.gl, pname) : pname;\n      values[key] = this.getAttachmentParameter(attachment, pname, keys);\n    }\n\n    return values;\n  }\n\n  getParameters() {\n    let keys = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n    const attachments = Object.keys(this.attachments);\n    const parameters = {};\n\n    for (const attachmentName of attachments) {\n      const attachment = Number(attachmentName);\n      const key = keys ? getKey(this.gl, attachment) : attachment;\n      parameters[key] = this.getAttachmentParameters(attachment, keys);\n    }\n\n    return parameters;\n  }\n\n  show() {\n    if (typeof window !== 'undefined') {\n      window.open(copyToDataUrl(this), 'luma-debug-texture');\n    }\n\n    return this;\n  }\n\n  log() {\n    let logLevel = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n    let message = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n\n    if (logLevel > log.level || typeof window === 'undefined') {\n      return this;\n    }\n\n    message = message || \"Framebuffer \".concat(this.id);\n    const image = copyToDataUrl(this, {\n      targetMaxHeight: 100\n    });\n    log.image({\n      logLevel,\n      message,\n      image\n    }, message)();\n    return this;\n  }\n\n  bind() {\n    let {\n      target = 36160\n    } = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n    this.gl.bindFramebuffer(target, this.handle);\n    return this;\n  }\n\n  unbind() {\n    let {\n      target = 36160\n    } = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n    this.gl.bindFramebuffer(target, null);\n    return this;\n  }\n\n  _createDefaultAttachments(color, depth, stencil, width, height) {\n    let defaultAttachments = null;\n\n    if (color) {\n      defaultAttachments = defaultAttachments || {};\n      defaultAttachments[36064] = new Texture2D(this.gl, {\n        id: \"\".concat(this.id, \"-color0\"),\n        pixels: null,\n        format: 6408,\n        type: 5121,\n        width,\n        height,\n        mipmaps: false,\n        parameters: {\n          [10241]: 9729,\n          [10240]: 9729,\n          [10242]: 33071,\n          [10243]: 33071\n        }\n      });\n      this.ownResources.push(defaultAttachments[36064]);\n    }\n\n    if (depth && stencil) {\n      defaultAttachments = defaultAttachments || {};\n      defaultAttachments[33306] = new Renderbuffer(this.gl, {\n        id: \"\".concat(this.id, \"-depth-stencil\"),\n        format: 35056,\n        width,\n        height: 111\n      });\n      this.ownResources.push(defaultAttachments[33306]);\n    } else if (depth) {\n      defaultAttachments = defaultAttachments || {};\n      defaultAttachments[36096] = new Renderbuffer(this.gl, {\n        id: \"\".concat(this.id, \"-depth\"),\n        format: 33189,\n        width,\n        height\n      });\n      this.ownResources.push(defaultAttachments[36096]);\n    } else if (stencil) {\n      assert(false);\n    }\n\n    return defaultAttachments;\n  }\n\n  _unattach(attachment) {\n    const oldAttachment = this.attachments[attachment];\n\n    if (!oldAttachment) {\n      return;\n    }\n\n    if (oldAttachment instanceof Renderbuffer) {\n      this.gl.framebufferRenderbuffer(36160, attachment, 36161, null);\n    } else {\n      this.gl.framebufferTexture2D(36160, attachment, 3553, null, 0);\n    }\n\n    delete this.attachments[attachment];\n  }\n\n  _attachRenderbuffer(_ref4) {\n    let {\n      attachment = 36064,\n      renderbuffer\n    } = _ref4;\n    const {\n      gl\n    } = this;\n    gl.framebufferRenderbuffer(36160, attachment, 36161, renderbuffer.handle);\n    this.attachments[attachment] = renderbuffer;\n  }\n\n  _attachTexture(_ref5) {\n    let {\n      attachment = 36064,\n      texture,\n      layer,\n      level\n    } = _ref5;\n    const {\n      gl\n    } = this;\n    gl.bindTexture(texture.target, texture.handle);\n\n    switch (texture.target) {\n      case 35866:\n      case 32879:\n        const gl2 = assertWebGL2Context(gl);\n        gl2.framebufferTextureLayer(36160, attachment, texture.target, level, layer);\n        break;\n\n      case 34067:\n        const face = mapIndexToCubeMapFace(layer);\n        gl.framebufferTexture2D(36160, attachment, face, texture.handle, level);\n        break;\n\n      case 3553:\n        gl.framebufferTexture2D(36160, attachment, 3553, texture.handle, level);\n        break;\n\n      default:\n        assert(false, 'Illegal texture type');\n    }\n\n    gl.bindTexture(texture.target, null);\n    this.attachments[attachment] = texture;\n  }\n\n  _setReadBuffer(readBuffer) {\n    const gl2 = getWebGL2Context(this.gl);\n\n    if (gl2) {\n      gl2.readBuffer(readBuffer);\n    } else {\n      assert(readBuffer === 36064 || readBuffer === 1029, ERR_MULTIPLE_RENDERTARGETS);\n    }\n\n    this.readBuffer = readBuffer;\n  }\n\n  _setDrawBuffers(drawBuffers) {\n    const {\n      gl\n    } = this;\n    const gl2 = assertWebGL2Context(gl);\n\n    if (gl2) {\n      gl2.drawBuffers(drawBuffers);\n    } else {\n      const ext = gl.getExtension('WEBGL_draw_buffers');\n\n      if (ext) {\n        ext.drawBuffersWEBGL(drawBuffers);\n      } else {\n        assert(drawBuffers.length === 1 && (drawBuffers[0] === 36064 || drawBuffers[0] === 1029), ERR_MULTIPLE_RENDERTARGETS);\n      }\n    }\n\n    this.drawBuffers = drawBuffers;\n  }\n\n  _getAttachmentParameterFallback(pname) {\n    const caps = getFeatures(this.gl);\n\n    switch (pname) {\n      case 36052:\n        return !caps.WEBGL2 ? 0 : null;\n\n      case 33298:\n      case 33299:\n      case 33300:\n      case 33301:\n      case 33302:\n      case 33303:\n        return !caps.WEBGL2 ? 8 : null;\n\n      case 33297:\n        return !caps.WEBGL2 ? 5125 : null;\n\n      case 33296:\n        return !caps.WEBGL2 && !caps.EXT_sRGB ? 9729 : null;\n\n      default:\n        return null;\n    }\n  }\n\n  _createHandle() {\n    return this.gl.createFramebuffer();\n  }\n\n  _deleteHandle() {\n    this.gl.deleteFramebuffer(this.handle);\n  }\n\n  _bindHandle(handle) {\n    return this.gl.bindFramebuffer(36160, handle);\n  }\n\n}\n\nfunction mapIndexToCubeMapFace(layer) {\n  return layer < 34069 ? layer + 34069 : layer;\n}\n\nfunction _getFrameBufferStatus(status) {\n  const STATUS = Framebuffer.STATUS || {};\n  return STATUS[status] || \"Framebuffer error \".concat(status);\n}\n\nexport const FRAMEBUFFER_ATTACHMENT_PARAMETERS = [36049, 36048, 33296, 33298, 33299, 33300, 33301, 33302, 33303];\nFramebuffer.ATTACHMENT_PARAMETERS = FRAMEBUFFER_ATTACHMENT_PARAMETERS;\n//# sourceMappingURL=framebuffer.js.map","import { log } from '@luma.gl/gltools';\nimport Framebuffer from './framebuffer';\nimport Renderbuffer from './renderbuffer';\nimport Texture from './texture';\nimport { assert } from '../utils/assert';\nconst UNIFORM_SETTERS = {\n  [5126]: getArraySetter.bind(null, 'uniform1fv', toFloatArray, 1, setVectorUniform),\n  [35664]: getArraySetter.bind(null, 'uniform2fv', toFloatArray, 2, setVectorUniform),\n  [35665]: getArraySetter.bind(null, 'uniform3fv', toFloatArray, 3, setVectorUniform),\n  [35666]: getArraySetter.bind(null, 'uniform4fv', toFloatArray, 4, setVectorUniform),\n  [5124]: getArraySetter.bind(null, 'uniform1iv', toIntArray, 1, setVectorUniform),\n  [35667]: getArraySetter.bind(null, 'uniform2iv', toIntArray, 2, setVectorUniform),\n  [35668]: getArraySetter.bind(null, 'uniform3iv', toIntArray, 3, setVectorUniform),\n  [35669]: getArraySetter.bind(null, 'uniform4iv', toIntArray, 4, setVectorUniform),\n  [35670]: getArraySetter.bind(null, 'uniform1iv', toIntArray, 1, setVectorUniform),\n  [35671]: getArraySetter.bind(null, 'uniform2iv', toIntArray, 2, setVectorUniform),\n  [35672]: getArraySetter.bind(null, 'uniform3iv', toIntArray, 3, setVectorUniform),\n  [35673]: getArraySetter.bind(null, 'uniform4iv', toIntArray, 4, setVectorUniform),\n  [35674]: getArraySetter.bind(null, 'uniformMatrix2fv', toFloatArray, 4, setMatrixUniform),\n  [35675]: getArraySetter.bind(null, 'uniformMatrix3fv', toFloatArray, 9, setMatrixUniform),\n  [35676]: getArraySetter.bind(null, 'uniformMatrix4fv', toFloatArray, 16, setMatrixUniform),\n  [35678]: getSamplerSetter,\n  [35680]: getSamplerSetter,\n  [5125]: getArraySetter.bind(null, 'uniform1uiv', toUIntArray, 1, setVectorUniform),\n  [36294]: getArraySetter.bind(null, 'uniform2uiv', toUIntArray, 2, setVectorUniform),\n  [36295]: getArraySetter.bind(null, 'uniform3uiv', toUIntArray, 3, setVectorUniform),\n  [36296]: getArraySetter.bind(null, 'uniform4uiv', toUIntArray, 4, setVectorUniform),\n  [35685]: getArraySetter.bind(null, 'uniformMatrix2x3fv', toFloatArray, 6, setMatrixUniform),\n  [35686]: getArraySetter.bind(null, 'uniformMatrix2x4fv', toFloatArray, 8, setMatrixUniform),\n  [35687]: getArraySetter.bind(null, 'uniformMatrix3x2fv', toFloatArray, 6, setMatrixUniform),\n  [35688]: getArraySetter.bind(null, 'uniformMatrix3x4fv', toFloatArray, 12, setMatrixUniform),\n  [35689]: getArraySetter.bind(null, 'uniformMatrix4x2fv', toFloatArray, 8, setMatrixUniform),\n  [35690]: getArraySetter.bind(null, 'uniformMatrix4x3fv', toFloatArray, 12, setMatrixUniform),\n  [35678]: getSamplerSetter,\n  [35680]: getSamplerSetter,\n  [35679]: getSamplerSetter,\n  [35682]: getSamplerSetter,\n  [36289]: getSamplerSetter,\n  [36292]: getSamplerSetter,\n  [36293]: getSamplerSetter,\n  [36298]: getSamplerSetter,\n  [36299]: getSamplerSetter,\n  [36300]: getSamplerSetter,\n  [36303]: getSamplerSetter,\n  [36306]: getSamplerSetter,\n  [36307]: getSamplerSetter,\n  [36308]: getSamplerSetter,\n  [36311]: getSamplerSetter\n};\nconst FLOAT_ARRAY = {};\nconst INT_ARRAY = {};\nconst UINT_ARRAY = {};\nconst array1 = [0];\n\nfunction toTypedArray(value, uniformLength, Type, cache) {\n  if (uniformLength === 1 && typeof value === 'boolean') {\n    value = value ? 1 : 0;\n  }\n\n  if (Number.isFinite(value)) {\n    array1[0] = value;\n    value = array1;\n  }\n\n  const length = value.length;\n\n  if (length % uniformLength) {\n    log.warn(\"Uniform size should be multiples of \".concat(uniformLength), value)();\n  }\n\n  if (value instanceof Type) {\n    return value;\n  }\n\n  let result = cache[length];\n\n  if (!result) {\n    result = new Type(length);\n    cache[length] = result;\n  }\n\n  for (let i = 0; i < length; i++) {\n    result[i] = value[i];\n  }\n\n  return result;\n}\n\nfunction toFloatArray(value, uniformLength) {\n  return toTypedArray(value, uniformLength, Float32Array, FLOAT_ARRAY);\n}\n\nfunction toIntArray(value, uniformLength) {\n  return toTypedArray(value, uniformLength, Int32Array, INT_ARRAY);\n}\n\nfunction toUIntArray(value, uniformLength) {\n  return toTypedArray(value, uniformLength, Uint32Array, UINT_ARRAY);\n}\n\nexport function getUniformSetter(gl, location, info) {\n  const setter = UNIFORM_SETTERS[info.type];\n\n  if (!setter) {\n    throw new Error(\"Unknown GLSL uniform type \".concat(info.type));\n  }\n\n  return setter().bind(null, gl, location);\n}\nexport function parseUniformName(name) {\n  if (name[name.length - 1] !== ']') {\n    return {\n      name,\n      length: 1,\n      isArray: false\n    };\n  }\n\n  const UNIFORM_NAME_REGEXP = /([^[]*)(\\[[0-9]+\\])?/;\n  const matches = name.match(UNIFORM_NAME_REGEXP);\n\n  if (!matches || matches.length < 2) {\n    throw new Error(\"Failed to parse GLSL uniform name \".concat(name));\n  }\n\n  return {\n    name: matches[1],\n    length: matches[2] || 1,\n    isArray: Boolean(matches[2])\n  };\n}\nexport function checkUniformValues(uniforms, source, uniformMap) {\n  for (const uniformName in uniforms) {\n    const value = uniforms[uniformName];\n    const shouldCheck = !uniformMap || Boolean(uniformMap[uniformName]);\n\n    if (shouldCheck && !checkUniformValue(value)) {\n      source = source ? \"\".concat(source, \" \") : '';\n      console.error(\"\".concat(source, \" Bad uniform \").concat(uniformName), value);\n      throw new Error(\"\".concat(source, \" Bad uniform \").concat(uniformName));\n    }\n  }\n\n  return true;\n}\n\nfunction checkUniformValue(value) {\n  if (Array.isArray(value) || ArrayBuffer.isView(value)) {\n    return checkUniformArray(value);\n  }\n\n  if (isFinite(value)) {\n    return true;\n  } else if (value === true || value === false) {\n    return true;\n  } else if (value instanceof Texture) {\n    return true;\n  } else if (value instanceof Renderbuffer) {\n    return true;\n  } else if (value instanceof Framebuffer) {\n    return Boolean(value.texture);\n  }\n\n  return false;\n}\n\nexport function copyUniform(uniforms, key, value) {\n  if (Array.isArray(value) || ArrayBuffer.isView(value)) {\n    if (uniforms[key]) {\n      const dest = uniforms[key];\n\n      for (let i = 0, len = value.length; i < len; ++i) {\n        dest[i] = value[i];\n      }\n    } else {\n      uniforms[key] = value.slice();\n    }\n  } else {\n    uniforms[key] = value;\n  }\n}\n\nfunction checkUniformArray(value) {\n  if (value.length === 0) {\n    return false;\n  }\n\n  const checkLength = Math.min(value.length, 16);\n\n  for (let i = 0; i < checkLength; ++i) {\n    if (!Number.isFinite(value[i])) {\n      return false;\n    }\n  }\n\n  return true;\n}\n\nfunction getSamplerSetter() {\n  let cache = null;\n  return (gl, location, value) => {\n    const update = cache !== value;\n\n    if (update) {\n      gl.uniform1i(location, value);\n      cache = value;\n    }\n\n    return update;\n  };\n}\n\nfunction getArraySetter(functionName, toArray, size, uniformSetter) {\n  let cache = null;\n  let cacheLength = null;\n  return (gl, location, value) => {\n    const arrayValue = toArray(value, size);\n    const length = arrayValue.length;\n    let update = false;\n\n    if (cache === null) {\n      cache = new Float32Array(length);\n      cacheLength = length;\n      update = true;\n    } else {\n      assert(cacheLength === length, 'Uniform length cannot change.');\n\n      for (let i = 0; i < length; ++i) {\n        if (arrayValue[i] !== cache[i]) {\n          update = true;\n          break;\n        }\n      }\n    }\n\n    if (update) {\n      uniformSetter(gl, functionName, location, arrayValue);\n      cache.set(arrayValue);\n    }\n\n    return update;\n  };\n}\n\nfunction setVectorUniform(gl, functionName, location, value) {\n  gl[functionName](location, value);\n}\n\nfunction setMatrixUniform(gl, functionName, location, value) {\n  gl[functionName](location, false, value);\n}\n//# sourceMappingURL=uniforms.js.map","import Accessor from './accessor';\nimport { isWebGL2 } from '@luma.gl/gltools';\nimport { decomposeCompositeGLType } from '../webgl-utils/attribute-utils';\nexport default class ProgramConfiguration {\n  constructor(program) {\n    this.id = program.id;\n    this.attributeInfos = [];\n    this.attributeInfosByName = {};\n    this.attributeInfosByLocation = [];\n    this.varyingInfos = [];\n    this.varyingInfosByName = {};\n    Object.seal(this);\n\n    this._readAttributesFromProgram(program);\n\n    this._readVaryingsFromProgram(program);\n  }\n\n  getAttributeInfo(locationOrName) {\n    const location = Number(locationOrName);\n\n    if (Number.isFinite(location)) {\n      return this.attributeInfosByLocation[location];\n    }\n\n    return this.attributeInfosByName[locationOrName] || null;\n  }\n\n  getAttributeLocation(locationOrName) {\n    const attributeInfo = this.getAttributeInfo(locationOrName);\n    return attributeInfo ? attributeInfo.location : -1;\n  }\n\n  getAttributeAccessor(locationOrName) {\n    const attributeInfo = this.getAttributeInfo(locationOrName);\n    return attributeInfo ? attributeInfo.accessor : null;\n  }\n\n  getVaryingInfo(locationOrName) {\n    const location = Number(locationOrName);\n\n    if (Number.isFinite(location)) {\n      return this.varyingInfos[location];\n    }\n\n    return this.varyingInfosByName[locationOrName] || null;\n  }\n\n  getVaryingIndex(locationOrName) {\n    const varying = this.getVaryingInfo();\n    return varying ? varying.location : -1;\n  }\n\n  getVaryingAccessor(locationOrName) {\n    const varying = this.getVaryingInfo();\n    return varying ? varying.accessor : null;\n  }\n\n  _readAttributesFromProgram(program) {\n    const {\n      gl\n    } = program;\n    const count = gl.getProgramParameter(program.handle, 35721);\n\n    for (let index = 0; index < count; index++) {\n      const {\n        name,\n        type,\n        size\n      } = gl.getActiveAttrib(program.handle, index);\n      const location = gl.getAttribLocation(program.handle, name);\n\n      if (location >= 0) {\n        this._addAttribute(location, name, type, size);\n      }\n    }\n\n    this.attributeInfos.sort((a, b) => a.location - b.location);\n  }\n\n  _readVaryingsFromProgram(program) {\n    const {\n      gl\n    } = program;\n\n    if (!isWebGL2(gl)) {\n      return;\n    }\n\n    const count = gl.getProgramParameter(program.handle, 35971);\n\n    for (let location = 0; location < count; location++) {\n      const {\n        name,\n        type,\n        size\n      } = gl.getTransformFeedbackVarying(program.handle, location);\n\n      this._addVarying(location, name, type, size);\n    }\n\n    this.varyingInfos.sort((a, b) => a.location - b.location);\n  }\n\n  _addAttribute(location, name, compositeType, size) {\n    const {\n      type,\n      components\n    } = decomposeCompositeGLType(compositeType);\n    const accessor = {\n      type,\n      size: size * components\n    };\n\n    this._inferProperties(location, name, accessor);\n\n    const attributeInfo = {\n      location,\n      name,\n      accessor: new Accessor(accessor)\n    };\n    this.attributeInfos.push(attributeInfo);\n    this.attributeInfosByLocation[location] = attributeInfo;\n    this.attributeInfosByName[attributeInfo.name] = attributeInfo;\n  }\n\n  _inferProperties(location, name, accessor) {\n    if (/instance/i.test(name)) {\n      accessor.divisor = 1;\n    }\n  }\n\n  _addVarying(location, name, compositeType, size) {\n    const {\n      type,\n      components\n    } = decomposeCompositeGLType(compositeType);\n    const accessor = new Accessor({\n      type,\n      size: size * components\n    });\n    const varying = {\n      location,\n      name,\n      accessor\n    };\n    this.varyingInfos.push(varying);\n    this.varyingInfosByName[varying.name] = varying;\n  }\n\n}\n//# sourceMappingURL=program-configuration.js.map","import Resource from './resource';\nimport Texture from './texture';\nimport Framebuffer from './framebuffer';\nimport { parseUniformName, getUniformSetter } from './uniforms';\nimport { VertexShader, FragmentShader } from './shader';\nimport ProgramConfiguration from './program-configuration';\nimport { copyUniform, checkUniformValues } from './uniforms';\nimport { isWebGL2, assertWebGL2Context, withParameters, log } from '@luma.gl/gltools';\nimport { getKey } from '../webgl-utils/constants-to-keys';\nimport { getPrimitiveDrawMode } from '../webgl-utils/attribute-utils';\nimport { assert } from '../utils/assert';\nimport { uid } from '../utils/utils';\nconst LOG_PROGRAM_PERF_PRIORITY = 4;\nconst GL_SEPARATE_ATTRIBS = 0x8c8d;\nconst V6_DEPRECATED_METHODS = ['setVertexArray', 'setAttributes', 'setBuffers', 'unsetBuffers', 'use', 'getUniformCount', 'getUniformInfo', 'getUniformLocation', 'getUniformValue', 'getVarying', 'getFragDataLocation', 'getAttachedShaders', 'getAttributeCount', 'getAttributeLocation', 'getAttributeInfo'];\nexport default class Program extends Resource {\n  get [Symbol.toStringTag]() {\n    return 'Program';\n  }\n\n  constructor(gl) {\n    let props = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n    super(gl, props);\n    this.stubRemovedMethods('Program', 'v6.0', V6_DEPRECATED_METHODS);\n    this._isCached = false;\n    this.initialize(props);\n    Object.seal(this);\n\n    this._setId(props.id);\n  }\n\n  initialize() {\n    let props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n    const {\n      hash,\n      vs,\n      fs,\n      varyings,\n      bufferMode = GL_SEPARATE_ATTRIBS\n    } = props;\n    this.hash = hash || '';\n    this.vs = typeof vs === 'string' ? new VertexShader(this.gl, {\n      id: \"\".concat(props.id, \"-vs\"),\n      source: vs\n    }) : vs;\n    this.fs = typeof fs === 'string' ? new FragmentShader(this.gl, {\n      id: \"\".concat(props.id, \"-fs\"),\n      source: fs\n    }) : fs;\n    assert(this.vs instanceof VertexShader);\n    assert(this.fs instanceof FragmentShader);\n    this.uniforms = {};\n    this._textureUniforms = {};\n\n    if (varyings && varyings.length > 0) {\n      assertWebGL2Context(this.gl);\n      this.varyings = varyings;\n      this.gl2.transformFeedbackVaryings(this.handle, varyings, bufferMode);\n    }\n\n    this._compileAndLink();\n\n    this._readUniformLocationsFromLinkedProgram();\n\n    this.configuration = new ProgramConfiguration(this);\n    return this.setProps(props);\n  }\n\n  delete() {\n    let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n    if (this._isCached) {\n      return this;\n    }\n\n    return super.delete(options);\n  }\n\n  setProps(props) {\n    if ('uniforms' in props) {\n      this.setUniforms(props.uniforms);\n    }\n\n    return this;\n  }\n\n  draw(_ref) {\n    let {\n      logPriority,\n      drawMode = 4,\n      vertexCount,\n      offset = 0,\n      start,\n      end,\n      isIndexed = false,\n      indexType = 5123,\n      instanceCount = 0,\n      isInstanced = instanceCount > 0,\n      vertexArray = null,\n      transformFeedback,\n      framebuffer,\n      parameters = {},\n      uniforms,\n      samplers\n    } = _ref;\n\n    if (uniforms || samplers) {\n      log.deprecated('Program.draw({uniforms})', 'Program.setUniforms(uniforms)')();\n      this.setUniforms(uniforms || {});\n    }\n\n    if (log.priority >= logPriority) {\n      const fb = framebuffer ? framebuffer.id : 'default';\n      const message = \"mode=\".concat(getKey(this.gl, drawMode), \" verts=\").concat(vertexCount, \" \") + \"instances=\".concat(instanceCount, \" indexType=\").concat(getKey(this.gl, indexType), \" \") + \"isInstanced=\".concat(isInstanced, \" isIndexed=\").concat(isIndexed, \" \") + \"Framebuffer=\".concat(fb);\n      log.log(logPriority, message)();\n    }\n\n    assert(vertexArray);\n    this.gl.useProgram(this.handle);\n\n    if (!this._areTexturesRenderable() || vertexCount === 0 || isInstanced && instanceCount === 0) {\n      return false;\n    }\n\n    vertexArray.bindForDraw(vertexCount, instanceCount, () => {\n      if (framebuffer !== undefined) {\n        parameters = Object.assign({}, parameters, {\n          framebuffer\n        });\n      }\n\n      if (transformFeedback) {\n        const primitiveMode = getPrimitiveDrawMode(drawMode);\n        transformFeedback.begin(primitiveMode);\n      }\n\n      this._bindTextures();\n\n      withParameters(this.gl, parameters, () => {\n        if (isIndexed && isInstanced) {\n          this.gl2.drawElementsInstanced(drawMode, vertexCount, indexType, offset, instanceCount);\n        } else if (isIndexed && isWebGL2(this.gl) && !isNaN(start) && !isNaN(end)) {\n          this.gl2.drawRangeElements(drawMode, start, end, vertexCount, indexType, offset);\n        } else if (isIndexed) {\n          this.gl.drawElements(drawMode, vertexCount, indexType, offset);\n        } else if (isInstanced) {\n          this.gl2.drawArraysInstanced(drawMode, offset, vertexCount, instanceCount);\n        } else {\n          this.gl.drawArrays(drawMode, offset, vertexCount);\n        }\n      });\n\n      if (transformFeedback) {\n        transformFeedback.end();\n      }\n    });\n    return true;\n  }\n\n  setUniforms() {\n    let uniforms = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n    if (log.priority >= 2) {\n      checkUniformValues(uniforms, this.id, this._uniformSetters);\n    }\n\n    this.gl.useProgram(this.handle);\n\n    for (const uniformName in uniforms) {\n      const uniform = uniforms[uniformName];\n      const uniformSetter = this._uniformSetters[uniformName];\n\n      if (uniformSetter) {\n        let value = uniform;\n        let textureUpdate = false;\n\n        if (value instanceof Framebuffer) {\n          value = value.texture;\n        }\n\n        if (value instanceof Texture) {\n          textureUpdate = this.uniforms[uniformName] !== uniform;\n\n          if (textureUpdate) {\n            if (uniformSetter.textureIndex === undefined) {\n              uniformSetter.textureIndex = this._textureIndexCounter++;\n            }\n\n            const texture = value;\n            const {\n              textureIndex\n            } = uniformSetter;\n            texture.bind(textureIndex);\n            value = textureIndex;\n            this._textureUniforms[uniformName] = texture;\n          } else {\n            value = uniformSetter.textureIndex;\n          }\n        } else if (this._textureUniforms[uniformName]) {\n          delete this._textureUniforms[uniformName];\n        }\n\n        if (uniformSetter(value) || textureUpdate) {\n          copyUniform(this.uniforms, uniformName, uniform);\n        }\n      }\n    }\n\n    return this;\n  }\n\n  _areTexturesRenderable() {\n    let texturesRenderable = true;\n\n    for (const uniformName in this._textureUniforms) {\n      const texture = this._textureUniforms[uniformName];\n      texture.update();\n      texturesRenderable = texturesRenderable && texture.loaded;\n    }\n\n    return texturesRenderable;\n  }\n\n  _bindTextures() {\n    for (const uniformName in this._textureUniforms) {\n      const textureIndex = this._uniformSetters[uniformName].textureIndex;\n\n      this._textureUniforms[uniformName].bind(textureIndex);\n    }\n  }\n\n  _createHandle() {\n    return this.gl.createProgram();\n  }\n\n  _deleteHandle() {\n    this.gl.deleteProgram(this.handle);\n  }\n\n  _getOptionsFromHandle(handle) {\n    const shaderHandles = this.gl.getAttachedShaders(handle);\n    const opts = {};\n\n    for (const shaderHandle of shaderHandles) {\n      const type = this.gl.getShaderParameter(this.handle, 35663);\n\n      switch (type) {\n        case 35633:\n          opts.vs = new VertexShader({\n            handle: shaderHandle\n          });\n          break;\n\n        case 35632:\n          opts.fs = new FragmentShader({\n            handle: shaderHandle\n          });\n          break;\n\n        default:\n      }\n    }\n\n    return opts;\n  }\n\n  _getParameter(pname) {\n    return this.gl.getProgramParameter(this.handle, pname);\n  }\n\n  _setId(id) {\n    if (!id) {\n      const programName = this._getName();\n\n      this.id = uid(programName);\n    }\n  }\n\n  _getName() {\n    let programName = this.vs.getName() || this.fs.getName();\n    programName = programName.replace(/shader/i, '');\n    programName = programName ? \"\".concat(programName, \"-program\") : 'program';\n    return programName;\n  }\n\n  _compileAndLink() {\n    const {\n      gl\n    } = this;\n    gl.attachShader(this.handle, this.vs.handle);\n    gl.attachShader(this.handle, this.fs.handle);\n    log.time(LOG_PROGRAM_PERF_PRIORITY, \"linkProgram for \".concat(this._getName()))();\n    gl.linkProgram(this.handle);\n    log.timeEnd(LOG_PROGRAM_PERF_PRIORITY, \"linkProgram for \".concat(this._getName()))();\n\n    if (gl.debug || log.level > 0) {\n      const linked = gl.getProgramParameter(this.handle, 35714);\n\n      if (!linked) {\n        throw new Error(\"Error linking: \".concat(gl.getProgramInfoLog(this.handle)));\n      }\n\n      gl.validateProgram(this.handle);\n      const validated = gl.getProgramParameter(this.handle, 35715);\n\n      if (!validated) {\n        throw new Error(\"Error validating: \".concat(gl.getProgramInfoLog(this.handle)));\n      }\n    }\n  }\n\n  _readUniformLocationsFromLinkedProgram() {\n    const {\n      gl\n    } = this;\n    this._uniformSetters = {};\n    this._uniformCount = this._getParameter(35718);\n\n    for (let i = 0; i < this._uniformCount; i++) {\n      const info = this.gl.getActiveUniform(this.handle, i);\n      const {\n        name\n      } = parseUniformName(info.name);\n      let location = gl.getUniformLocation(this.handle, name);\n      this._uniformSetters[name] = getUniformSetter(gl, location, info);\n\n      if (info.size > 1) {\n        for (let l = 0; l < info.size; l++) {\n          location = gl.getUniformLocation(this.handle, \"\".concat(name, \"[\").concat(l, \"]\"));\n          this._uniformSetters[\"\".concat(name, \"[\").concat(l, \"]\")] = getUniformSetter(gl, location, info);\n        }\n      }\n    }\n\n    this._textureIndexCounter = 0;\n  }\n\n  getActiveUniforms(uniformIndices, pname) {\n    return this.gl2.getActiveUniforms(this.handle, uniformIndices, pname);\n  }\n\n  getUniformBlockIndex(blockName) {\n    return this.gl2.getUniformBlockIndex(this.handle, blockName);\n  }\n\n  getActiveUniformBlockParameter(blockIndex, pname) {\n    return this.gl2.getActiveUniformBlockParameter(this.handle, blockIndex, pname);\n  }\n\n  uniformBlockBinding(blockIndex, blockBinding) {\n    this.gl2.uniformBlockBinding(this.handle, blockIndex, blockBinding);\n  }\n\n}\n//# sourceMappingURL=program.js.map","const EXT_FLOAT_WEBGL2 = 'EXT_color_buffer_float';\nexport default {\n  [33189]: {\n    bpp: 2\n  },\n  [33190]: {\n    gl2: true,\n    bpp: 3\n  },\n  [36012]: {\n    gl2: true,\n    bpp: 4\n  },\n  [36168]: {\n    bpp: 1\n  },\n  [34041]: {\n    bpp: 4\n  },\n  [35056]: {\n    gl2: true,\n    bpp: 4\n  },\n  [36013]: {\n    gl2: true,\n    bpp: 5\n  },\n  [32854]: {\n    bpp: 2\n  },\n  [36194]: {\n    bpp: 2\n  },\n  [32855]: {\n    bpp: 2\n  },\n  [33321]: {\n    gl2: true,\n    bpp: 1\n  },\n  [33330]: {\n    gl2: true,\n    bpp: 1\n  },\n  [33329]: {\n    gl2: true,\n    bpp: 1\n  },\n  [33332]: {\n    gl2: true,\n    bpp: 2\n  },\n  [33331]: {\n    gl2: true,\n    bpp: 2\n  },\n  [33334]: {\n    gl2: true,\n    bpp: 4\n  },\n  [33333]: {\n    gl2: true,\n    bpp: 4\n  },\n  [33323]: {\n    gl2: true,\n    bpp: 2\n  },\n  [33336]: {\n    gl2: true,\n    bpp: 2\n  },\n  [33335]: {\n    gl2: true,\n    bpp: 2\n  },\n  [33338]: {\n    gl2: true,\n    bpp: 4\n  },\n  [33337]: {\n    gl2: true,\n    bpp: 4\n  },\n  [33340]: {\n    gl2: true,\n    bpp: 8\n  },\n  [33339]: {\n    gl2: true,\n    bpp: 8\n  },\n  [32849]: {\n    gl2: true,\n    bpp: 3\n  },\n  [32856]: {\n    gl2: true,\n    bpp: 4\n  },\n  [32857]: {\n    gl2: true,\n    bpp: 4\n  },\n  [36220]: {\n    gl2: true,\n    bpp: 4\n  },\n  [36238]: {\n    gl2: true,\n    bpp: 4\n  },\n  [36975]: {\n    gl2: true,\n    bpp: 4\n  },\n  [36214]: {\n    gl2: true,\n    bpp: 8\n  },\n  [36232]: {\n    gl2: true,\n    bpp: 8\n  },\n  [36226]: {\n    gl2: true,\n    bpp: 16\n  },\n  [36208]: {\n    gl2: true,\n    bpp: 16\n  },\n  [33325]: {\n    gl2: EXT_FLOAT_WEBGL2,\n    bpp: 2\n  },\n  [33327]: {\n    gl2: EXT_FLOAT_WEBGL2,\n    bpp: 4\n  },\n  [34842]: {\n    gl2: EXT_FLOAT_WEBGL2,\n    bpp: 8\n  },\n  [33326]: {\n    gl2: EXT_FLOAT_WEBGL2,\n    bpp: 4\n  },\n  [33328]: {\n    gl2: EXT_FLOAT_WEBGL2,\n    bpp: 8\n  },\n  [34836]: {\n    gl2: EXT_FLOAT_WEBGL2,\n    bpp: 16\n  },\n  [35898]: {\n    gl2: EXT_FLOAT_WEBGL2,\n    bpp: 4\n  }\n};\n//# sourceMappingURL=renderbuffer-formats.js.map","import Resource from './resource';\nimport RENDERBUFFER_FORMATS from './renderbuffer-formats';\nimport { isWebGL2 } from '@luma.gl/gltools';\nimport { assert } from '../utils/assert';\n\nfunction isFormatSupported(gl, format, formats) {\n  const info = formats[format];\n\n  if (!info) {\n    return false;\n  }\n\n  const value = isWebGL2(gl) ? info.gl2 || info.gl1 : info.gl1;\n\n  if (typeof value === 'string') {\n    return gl.getExtension(value);\n  }\n\n  return value;\n}\n\nexport default class Renderbuffer extends Resource {\n  get [Symbol.toStringTag]() {\n    return 'Renderbuffer';\n  }\n\n  static isSupported(gl) {\n    let {\n      format\n    } = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n      format: null\n    };\n    return !format || isFormatSupported(gl, format, RENDERBUFFER_FORMATS);\n  }\n\n  static getSamplesForFormat(gl, _ref) {\n    let {\n      format\n    } = _ref;\n    return gl.getInternalformatParameter(36161, format, 32937);\n  }\n\n  constructor(gl) {\n    let opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n    super(gl, opts);\n    this.initialize(opts);\n    Object.seal(this);\n  }\n\n  initialize(_ref2) {\n    let {\n      format,\n      width = 1,\n      height = 1,\n      samples = 0\n    } = _ref2;\n    assert(format, 'Needs format');\n\n    this._trackDeallocatedMemory();\n\n    this.gl.bindRenderbuffer(36161, this.handle);\n\n    if (samples !== 0 && isWebGL2(this.gl)) {\n      this.gl.renderbufferStorageMultisample(36161, samples, format, width, height);\n    } else {\n      this.gl.renderbufferStorage(36161, format, width, height);\n    }\n\n    this.format = format;\n    this.width = width;\n    this.height = height;\n    this.samples = samples;\n\n    this._trackAllocatedMemory(this.width * this.height * (this.samples || 1) * RENDERBUFFER_FORMATS[this.format].bpp);\n\n    return this;\n  }\n\n  resize(_ref3) {\n    let {\n      width,\n      height\n    } = _ref3;\n\n    if (width !== this.width || height !== this.height) {\n      return this.initialize({\n        width,\n        height,\n        format: this.format,\n        samples: this.samples\n      });\n    }\n\n    return this;\n  }\n\n  _createHandle() {\n    return this.gl.createRenderbuffer();\n  }\n\n  _deleteHandle() {\n    this.gl.deleteRenderbuffer(this.handle);\n\n    this._trackDeallocatedMemory();\n  }\n\n  _bindHandle(handle) {\n    this.gl.bindRenderbuffer(36161, handle);\n  }\n\n  _syncHandle(handle) {\n    this.format = this.getParameter(36164);\n    this.width = this.getParameter(36162);\n    this.height = this.getParameter(36163);\n    this.samples = this.getParameter(36011);\n  }\n\n  _getParameter(pname) {\n    this.gl.bindRenderbuffer(36161, this.handle);\n    const value = this.gl.getRenderbufferParameter(36161, pname);\n    return value;\n  }\n\n}\n//# sourceMappingURL=renderbuffer.js.map","import { isWebGL2, assertWebGLContext } from '@luma.gl/gltools';\nimport { lumaStats } from '../init';\nimport { getKey, getKeyValue } from '../webgl-utils/constants-to-keys';\nimport { assert } from '../utils/assert';\nimport { uid } from '../utils/utils';\nimport { stubRemovedMethods } from '../utils/stub-methods';\nconst ERR_RESOURCE_METHOD_UNDEFINED = 'Resource subclass must define virtual methods';\nexport default class Resource {\n  get [Symbol.toStringTag]() {\n    return 'Resource';\n  }\n\n  constructor(gl) {\n    let opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n    assertWebGLContext(gl);\n    const {\n      id,\n      userData = {}\n    } = opts;\n    this.gl = gl;\n    this.gl2 = gl;\n    this.id = id || uid(this[Symbol.toStringTag]);\n    this.userData = userData;\n    this._bound = false;\n    this._handle = opts.handle;\n\n    if (this._handle === undefined) {\n      this._handle = this._createHandle();\n    }\n\n    this.byteLength = 0;\n\n    this._addStats();\n  }\n\n  toString() {\n    return \"\".concat(this[Symbol.toStringTag] || this.constructor.name, \"(\").concat(this.id, \")\");\n  }\n\n  get handle() {\n    return this._handle;\n  }\n\n  delete() {\n    let {\n      deleteChildren = false\n    } = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n    const children = this._handle && this._deleteHandle(this._handle);\n\n    if (this._handle) {\n      this._removeStats();\n    }\n\n    this._handle = null;\n\n    if (children && deleteChildren) {\n      children.filter(Boolean).forEach(child => child.delete());\n    }\n\n    return this;\n  }\n\n  bind() {\n    let funcOrHandle = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.handle;\n\n    if (typeof funcOrHandle !== 'function') {\n      this._bindHandle(funcOrHandle);\n\n      return this;\n    }\n\n    let value;\n\n    if (!this._bound) {\n      this._bindHandle(this.handle);\n\n      this._bound = true;\n      value = funcOrHandle();\n      this._bound = false;\n\n      this._bindHandle(null);\n    } else {\n      value = funcOrHandle();\n    }\n\n    return value;\n  }\n\n  unbind() {\n    this.bind(null);\n  }\n\n  getParameter(pname) {\n    let opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n    pname = getKeyValue(this.gl, pname);\n    assert(pname);\n    const parameters = this.constructor.PARAMETERS || {};\n    const parameter = parameters[pname];\n\n    if (parameter) {\n      const isWebgl2 = isWebGL2(this.gl);\n      const parameterAvailable = (!('webgl2' in parameter) || isWebgl2) && (!('extension' in parameter) || this.gl.getExtension(parameter.extension));\n\n      if (!parameterAvailable) {\n        const webgl1Default = parameter.webgl1;\n        const webgl2Default = 'webgl2' in parameter ? parameter.webgl2 : parameter.webgl1;\n        const defaultValue = isWebgl2 ? webgl2Default : webgl1Default;\n        return defaultValue;\n      }\n    }\n\n    return this._getParameter(pname, opts);\n  }\n\n  getParameters() {\n    let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n    const {\n      parameters,\n      keys\n    } = options;\n    const PARAMETERS = this.constructor.PARAMETERS || {};\n    const isWebgl2 = isWebGL2(this.gl);\n    const values = {};\n    const parameterKeys = parameters || Object.keys(PARAMETERS);\n\n    for (const pname of parameterKeys) {\n      const parameter = PARAMETERS[pname];\n      const parameterAvailable = parameter && (!('webgl2' in parameter) || isWebgl2) && (!('extension' in parameter) || this.gl.getExtension(parameter.extension));\n\n      if (parameterAvailable) {\n        const key = keys ? getKey(this.gl, pname) : pname;\n        values[key] = this.getParameter(pname, options);\n\n        if (keys && parameter.type === 'GLenum') {\n          values[key] = getKey(this.gl, values[key]);\n        }\n      }\n    }\n\n    return values;\n  }\n\n  setParameter(pname, value) {\n    pname = getKeyValue(this.gl, pname);\n    assert(pname);\n    const parameters = this.constructor.PARAMETERS || {};\n    const parameter = parameters[pname];\n\n    if (parameter) {\n      const isWebgl2 = isWebGL2(this.gl);\n      const parameterAvailable = (!('webgl2' in parameter) || isWebgl2) && (!('extension' in parameter) || this.gl.getExtension(parameter.extension));\n\n      if (!parameterAvailable) {\n        throw new Error('Parameter not available on this platform');\n      }\n\n      if (parameter.type === 'GLenum') {\n        value = getKeyValue(value);\n      }\n    }\n\n    this._setParameter(pname, value);\n\n    return this;\n  }\n\n  setParameters(parameters) {\n    for (const pname in parameters) {\n      this.setParameter(pname, parameters[pname]);\n    }\n\n    return this;\n  }\n\n  stubRemovedMethods(className, version, methodNames) {\n    return stubRemovedMethods(this, className, version, methodNames);\n  }\n\n  initialize(opts) {}\n\n  _createHandle() {\n    throw new Error(ERR_RESOURCE_METHOD_UNDEFINED);\n  }\n\n  _deleteHandle() {\n    throw new Error(ERR_RESOURCE_METHOD_UNDEFINED);\n  }\n\n  _bindHandle(handle) {\n    throw new Error(ERR_RESOURCE_METHOD_UNDEFINED);\n  }\n\n  _getOptsFromHandle() {\n    throw new Error(ERR_RESOURCE_METHOD_UNDEFINED);\n  }\n\n  _getParameter(pname, opts) {\n    throw new Error(ERR_RESOURCE_METHOD_UNDEFINED);\n  }\n\n  _setParameter(pname, value) {\n    throw new Error(ERR_RESOURCE_METHOD_UNDEFINED);\n  }\n\n  _context() {\n    this.gl.luma = this.gl.luma || {};\n    return this.gl.luma;\n  }\n\n  _addStats() {\n    const name = this[Symbol.toStringTag];\n    const stats = lumaStats.get('Resource Counts');\n    stats.get('Resources Created').incrementCount();\n    stats.get(\"\".concat(name, \"s Created\")).incrementCount();\n    stats.get(\"\".concat(name, \"s Active\")).incrementCount();\n  }\n\n  _removeStats() {\n    const name = this[Symbol.toStringTag];\n    const stats = lumaStats.get('Resource Counts');\n    stats.get(\"\".concat(name, \"s Active\")).decrementCount();\n  }\n\n  _trackAllocatedMemory(bytes) {\n    let name = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this[Symbol.toStringTag];\n\n    this._trackAllocatedMemoryForContext(bytes, name);\n\n    this._trackAllocatedMemoryForContext(bytes, name, this.gl.canvas && this.gl.canvas.id);\n\n    this.byteLength = bytes;\n  }\n\n  _trackAllocatedMemoryForContext(bytes) {\n    let name = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this[Symbol.toStringTag];\n    let id = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '';\n    const stats = lumaStats.get(\"Memory Usage\".concat(id));\n    stats.get('GPU Memory').addCount(bytes);\n    stats.get(\"\".concat(name, \" Memory\")).addCount(bytes);\n  }\n\n  _trackDeallocatedMemory() {\n    let name = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this[Symbol.toStringTag];\n\n    this._trackDeallocatedMemoryForContext(name);\n\n    this._trackDeallocatedMemoryForContext(name, this.gl.canvas && this.gl.canvas.id);\n\n    this.byteLength = 0;\n  }\n\n  _trackDeallocatedMemoryForContext() {\n    let name = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this[Symbol.toStringTag];\n    let id = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n    const stats = lumaStats.get(\"Memory Usage\".concat(id));\n    stats.get('GPU Memory').subtractCount(this.byteLength);\n    stats.get(\"\".concat(name, \" Memory\")).subtractCount(this.byteLength);\n  }\n\n}\n//# sourceMappingURL=resource.js.map","export default function getShaderName(shader) {\n  let defaultName = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'unnamed';\n  const SHADER_NAME_REGEXP = /#define[\\s*]SHADER_NAME[\\s*]([A-Za-z0-9_-]+)[\\s*]/;\n  const match = shader.match(SHADER_NAME_REGEXP);\n  return match ? match[1] : defaultName;\n}\n//# sourceMappingURL=get-shader-name.js.map","import getShaderName from './get-shader-name';\nimport getShaderTypeName from './get-shader-type-name';\nexport default function formatGLSLCompilerError(errLog, src, shaderType) {\n  const {\n    shaderName,\n    errors,\n    warnings\n  } = parseGLSLCompilerError(errLog, src, shaderType);\n  return \"GLSL compilation error in \".concat(shaderName, \"\\n\\n\").concat(errors, \"\\n\").concat(warnings);\n}\nexport function parseGLSLCompilerError(errLog, src, shaderType, shaderName) {\n  const errorStrings = errLog.split(/\\r?\\n/);\n  const errors = {};\n  const warnings = {};\n  const name = shaderName || getShaderName(src) || '(unnamed)';\n  const shaderDescription = \"\".concat(getShaderTypeName(shaderType), \" shader \").concat(name);\n\n  for (let i = 0; i < errorStrings.length; i++) {\n    const errorString = errorStrings[i];\n\n    if (errorString.length <= 1) {\n      continue;\n    }\n\n    const segments = errorString.split(':');\n    const type = segments[0];\n    const line = parseInt(segments[2], 10);\n\n    if (isNaN(line)) {\n      throw new Error(\"GLSL compilation error in \".concat(shaderDescription, \": \").concat(errLog));\n    }\n\n    if (type !== 'WARNING') {\n      errors[line] = errorString;\n    } else {\n      warnings[line] = errorString;\n    }\n  }\n\n  const lines = addLineNumbers(src);\n  return {\n    shaderName: shaderDescription,\n    errors: formatErrors(errors, lines),\n    warnings: formatErrors(warnings, lines)\n  };\n}\n\nfunction formatErrors(errors, lines) {\n  let message = '';\n\n  for (let i = 0; i < lines.length; i++) {\n    const line = lines[i];\n\n    if (!errors[i + 3] && !errors[i + 2] && !errors[i + 1]) {\n      continue;\n    }\n\n    message += \"\".concat(line, \"\\n\");\n\n    if (errors[i + 1]) {\n      const error = errors[i + 1];\n      const segments = error.split(':', 3);\n      const type = segments[0];\n      const column = parseInt(segments[1], 10) || 0;\n      const err = error.substring(segments.join(':').length + 1).trim();\n      message += padLeft(\"^^^ \".concat(type, \": \").concat(err, \"\\n\\n\"), column);\n    }\n  }\n\n  return message;\n}\n\nfunction addLineNumbers(string) {\n  let start = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;\n  let delim = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : ': ';\n  const lines = string.split(/\\r?\\n/);\n  const maxDigits = String(lines.length + start - 1).length;\n  return lines.map((line, i) => {\n    const lineNumber = String(i + start);\n    const digits = lineNumber.length;\n    const prefix = padLeft(lineNumber, maxDigits - digits);\n    return prefix + delim + line;\n  });\n}\n\nfunction padLeft(string, digits) {\n  let result = '';\n\n  for (let i = 0; i < digits; ++i) {\n    result += ' ';\n  }\n\n  return \"\".concat(result).concat(string);\n}\n//# sourceMappingURL=format-glsl-error.js.map","import { assertWebGLContext, log } from '@luma.gl/gltools';\nimport { parseGLSLCompilerError, getShaderName } from '../glsl-utils';\nimport { assert } from '../utils/assert';\nimport { uid } from '../utils/utils';\nimport Resource from './resource';\nconst ERR_SOURCE = 'Shader: GLSL source code must be a JavaScript string';\nexport class Shader extends Resource {\n  get [Symbol.toStringTag]() {\n    return 'Shader';\n  }\n\n  static getTypeName(shaderType) {\n    switch (shaderType) {\n      case 35633:\n        return 'vertex-shader';\n\n      case 35632:\n        return 'fragment-shader';\n\n      default:\n        assert(false);\n        return 'unknown';\n    }\n  }\n\n  constructor(gl, props) {\n    assertWebGLContext(gl);\n    assert(typeof props.source === 'string', ERR_SOURCE);\n    const id = getShaderName(props.source, null) || props.id || uid(\"unnamed \".concat(Shader.getTypeName(props.shaderType)));\n    super(gl, {\n      id\n    });\n    this.shaderType = props.shaderType;\n    this.source = props.source;\n    this.initialize(props);\n  }\n\n  initialize(_ref) {\n    let {\n      source\n    } = _ref;\n    const shaderName = getShaderName(source, null);\n\n    if (shaderName) {\n      this.id = uid(shaderName);\n    }\n\n    this._compile(source);\n  }\n\n  getParameter(pname) {\n    return this.gl.getShaderParameter(this.handle, pname);\n  }\n\n  toString() {\n    return \"\".concat(Shader.getTypeName(this.shaderType), \":\").concat(this.id);\n  }\n\n  getName() {\n    return getShaderName(this.source) || 'unnamed-shader';\n  }\n\n  getSource() {\n    return this.gl.getShaderSource(this.handle);\n  }\n\n  getTranslatedSource() {\n    const extension = this.gl.getExtension('WEBGL_debug_shaders');\n    return extension ? extension.getTranslatedShaderSource(this.handle) : 'No translated source available. WEBGL_debug_shaders not implemented';\n  }\n\n  _compile() {\n    let source = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.source;\n\n    if (!source.startsWith('#version ')) {\n      source = \"#version 100\\n\".concat(source);\n    }\n\n    this.source = source;\n    this.gl.shaderSource(this.handle, this.source);\n    this.gl.compileShader(this.handle);\n    const compileStatus = this.getParameter(35713);\n\n    if (!compileStatus) {\n      const infoLog = this.gl.getShaderInfoLog(this.handle);\n      const {\n        shaderName,\n        errors,\n        warnings\n      } = parseGLSLCompilerError(infoLog, this.source, this.shaderType, this.id);\n      log.error(\"GLSL compilation errors in \".concat(shaderName, \"\\n\").concat(errors))();\n      log.warn(\"GLSL compilation warnings in \".concat(shaderName, \"\\n\").concat(warnings))();\n      throw new Error(\"GLSL compilation errors in \".concat(shaderName));\n    }\n  }\n\n  _deleteHandle() {\n    this.gl.deleteShader(this.handle);\n  }\n\n  _getOptsFromHandle() {\n    return {\n      type: this.getParameter(35663),\n      source: this.getSource()\n    };\n  }\n\n}\nexport class VertexShader extends Shader {\n  get [Symbol.toStringTag]() {\n    return 'VertexShader';\n  }\n\n  constructor(gl, props) {\n    if (typeof props === 'string') {\n      props = {\n        source: props\n      };\n    }\n\n    super(gl, Object.assign({}, props, {\n      shaderType: 35633\n    }));\n  }\n\n  _createHandle() {\n    return this.gl.createShader(35633);\n  }\n\n}\nexport class FragmentShader extends Shader {\n  get [Symbol.toStringTag]() {\n    return 'FragmentShader';\n  }\n\n  constructor(gl, props) {\n    if (typeof props === 'string') {\n      props = {\n        source: props\n      };\n    }\n\n    super(gl, Object.assign({}, props, {\n      shaderType: 35632\n    }));\n  }\n\n  _createHandle() {\n    return this.gl.createShader(35632);\n  }\n\n}\n//# sourceMappingURL=shader.js.map","const GL_FRAGMENT_SHADER = 0x8b30;\nconst GL_VERTEX_SHADER = 0x8b31;\nexport default function getShaderTypeName(type) {\n  switch (type) {\n    case GL_FRAGMENT_SHADER:\n      return 'fragment';\n\n    case GL_VERTEX_SHADER:\n      return 'vertex';\n\n    default:\n      return 'unknown type';\n  }\n}\n//# sourceMappingURL=get-shader-type-name.js.map","import { assertWebGLContext } from '@luma.gl/gltools';\nimport Texture from './texture';\nimport { loadImage } from '../utils/load-file';\nexport default class Texture2D extends Texture {\n  get [Symbol.toStringTag]() {\n    return 'Texture2D';\n  }\n\n  static isSupported(gl, opts) {\n    return Texture.isSupported(gl, opts);\n  }\n\n  constructor(gl) {\n    let props = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n    assertWebGLContext(gl);\n\n    if (props instanceof Promise || typeof props === 'string') {\n      props = {\n        data: props\n      };\n    }\n\n    if (typeof props.data === 'string') {\n      props = Object.assign({}, props, {\n        data: loadImage(props.data)\n      });\n    }\n\n    super(gl, Object.assign({}, props, {\n      target: 3553\n    }));\n    this.initialize(props);\n    Object.seal(this);\n  }\n\n}\n//# sourceMappingURL=texture-2d.js.map","import { assert } from '../utils/assert';\nlet pathPrefix = '';\nexport function setPathPrefix(prefix) {\n  pathPrefix = prefix;\n}\nexport function loadFile(url) {\n  let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n  assert(typeof url === 'string');\n  url = pathPrefix + url;\n  const dataType = options.dataType || 'text';\n  return fetch(url, options).then(res => res[dataType]());\n}\nexport function loadImage(url, opts) {\n  assert(typeof url === 'string');\n  url = pathPrefix + url;\n  return new Promise((resolve, reject) => {\n    try {\n      const image = new Image();\n\n      image.onload = () => resolve(image);\n\n      image.onerror = () => reject(new Error(\"Could not load image \".concat(url, \".\")));\n\n      image.crossOrigin = opts && opts.crossOrigin || 'anonymous';\n      image.src = url;\n    } catch (error) {\n      reject(error);\n    }\n  });\n}\n//# sourceMappingURL=load-file.js.map","import { isWebGL2, assertWebGL2Context, withParameters } from '@luma.gl/gltools';\nimport Texture from './texture';\nimport { DATA_FORMAT_CHANNELS, TYPE_SIZES } from './texture-formats';\nimport Buffer from './buffer';\nexport default class Texture3D extends Texture {\n  get [Symbol.toStringTag]() {\n    return 'Texture3D';\n  }\n\n  static isSupported(gl) {\n    return isWebGL2(gl);\n  }\n\n  constructor(gl) {\n    let props = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n    assertWebGL2Context(gl);\n    props = Object.assign({\n      depth: 1\n    }, props, {\n      target: 32879,\n      unpackFlipY: false\n    });\n    super(gl, props);\n    this.initialize(props);\n    Object.seal(this);\n  }\n\n  setImageData(_ref) {\n    let {\n      level = 0,\n      dataFormat = 6408,\n      width,\n      height,\n      depth = 1,\n      border = 0,\n      format,\n      type = 5121,\n      offset = 0,\n      data,\n      parameters = {}\n    } = _ref;\n\n    this._trackDeallocatedMemory('Texture');\n\n    this.gl.bindTexture(this.target, this.handle);\n    withParameters(this.gl, parameters, () => {\n      if (ArrayBuffer.isView(data)) {\n        this.gl.texImage3D(this.target, level, dataFormat, width, height, depth, border, format, type, data);\n      }\n\n      if (data instanceof Buffer) {\n        this.gl.bindBuffer(35052, data.handle);\n        this.gl.texImage3D(this.target, level, dataFormat, width, height, depth, border, format, type, offset);\n      }\n    });\n\n    if (data && data.byteLength) {\n      this._trackAllocatedMemory(data.byteLength, 'Texture');\n    } else {\n      const channels = DATA_FORMAT_CHANNELS[this.dataFormat] || 4;\n      const channelSize = TYPE_SIZES[this.type] || 1;\n\n      this._trackAllocatedMemory(this.width * this.height * this.depth * channels * channelSize, 'Texture');\n    }\n\n    this.loaded = true;\n    return this;\n  }\n\n}\n//# sourceMappingURL=texture-3d.js.map","import { log, assertWebGLContext } from '@luma.gl/gltools';\nimport Texture from './texture';\nconst FACES = [34069, 34070, 34071, 34072, 34073, 34074];\nexport default class TextureCube extends Texture {\n  get [Symbol.toStringTag]() {\n    return 'TextureCube';\n  }\n\n  constructor(gl) {\n    let props = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n    assertWebGLContext(gl);\n    super(gl, Object.assign({}, props, {\n      target: 34067\n    }));\n    this.initialize(props);\n    Object.seal(this);\n  }\n\n  initialize() {\n    let props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n    const {\n      mipmaps = true,\n      parameters = {}\n    } = props;\n    this.opts = props;\n    this.setCubeMapImageData(props).then(() => {\n      this.loaded = true;\n\n      if (mipmaps) {\n        this.generateMipmap(props);\n      }\n\n      this.setParameters(parameters);\n    });\n    return this;\n  }\n\n  subImage(_ref) {\n    let {\n      face,\n      data,\n      x = 0,\n      y = 0,\n      mipmapLevel = 0\n    } = _ref;\n    return this._subImage({\n      target: face,\n      data,\n      x,\n      y,\n      mipmapLevel\n    });\n  }\n\n  async setCubeMapImageData(_ref2) {\n    let {\n      width,\n      height,\n      pixels,\n      data,\n      border = 0,\n      format = 6408,\n      type = 5121\n    } = _ref2;\n    const {\n      gl\n    } = this;\n    const imageDataMap = pixels || data;\n    const resolvedFaces = await Promise.all(FACES.map(face => {\n      const facePixels = imageDataMap[face];\n      return Promise.all(Array.isArray(facePixels) ? facePixels : [facePixels]);\n    }));\n    this.bind();\n    FACES.forEach((face, index) => {\n      if (resolvedFaces[index].length > 1 && this.opts.mipmaps !== false) {\n        log.warn(\"\".concat(this.id, \" has mipmap and multiple LODs.\"))();\n      }\n\n      resolvedFaces[index].forEach((image, lodLevel) => {\n        if (width && height) {\n          gl.texImage2D(face, lodLevel, format, width, height, border, format, type, image);\n        } else {\n          gl.texImage2D(face, lodLevel, format, format, type, image);\n        }\n      });\n    });\n    this.unbind();\n  }\n\n  setImageDataForFace(options) {\n    const {\n      face,\n      width,\n      height,\n      pixels,\n      data,\n      border = 0,\n      format = 6408,\n      type = 5121\n    } = options;\n    const {\n      gl\n    } = this;\n    const imageData = pixels || data;\n    this.bind();\n\n    if (imageData instanceof Promise) {\n      imageData.then(resolvedImageData => this.setImageDataForFace(Object.assign({}, options, {\n        face,\n        data: resolvedImageData,\n        pixels: resolvedImageData\n      })));\n    } else if (this.width || this.height) {\n      gl.texImage2D(face, 0, format, width, height, border, format, type, imageData);\n    } else {\n      gl.texImage2D(face, 0, format, format, type, imageData);\n    }\n\n    return this;\n  }\n\n}\nTextureCube.FACES = FACES;\n//# sourceMappingURL=texture-cube.js.map","import { isWebGL2 } from '@luma.gl/gltools';\nexport const TEXTURE_FORMATS = {\n  [6407]: {\n    dataFormat: 6407,\n    types: [5121, 33635]\n  },\n  [6408]: {\n    dataFormat: 6408,\n    types: [5121, 32819, 32820]\n  },\n  [6406]: {\n    dataFormat: 6406,\n    types: [5121]\n  },\n  [6409]: {\n    dataFormat: 6409,\n    types: [5121]\n  },\n  [6410]: {\n    dataFormat: 6410,\n    types: [5121]\n  },\n  [33326]: {\n    dataFormat: 6403,\n    types: [5126],\n    gl2: true\n  },\n  [33328]: {\n    dataFormat: 33319,\n    types: [5126],\n    gl2: true\n  },\n  [34837]: {\n    dataFormat: 6407,\n    types: [5126],\n    gl2: true\n  },\n  [34836]: {\n    dataFormat: 6408,\n    types: [5126],\n    gl2: true\n  }\n};\nexport const DATA_FORMAT_CHANNELS = {\n  [6403]: 1,\n  [36244]: 1,\n  [33319]: 2,\n  [33320]: 2,\n  [6407]: 3,\n  [36248]: 3,\n  [6408]: 4,\n  [36249]: 4,\n  [6402]: 1,\n  [34041]: 1,\n  [6406]: 1,\n  [6409]: 1,\n  [6410]: 2\n};\nexport const TYPE_SIZES = {\n  [5126]: 4,\n  [5125]: 4,\n  [5124]: 4,\n  [5123]: 2,\n  [5122]: 2,\n  [5131]: 2,\n  [5120]: 1,\n  [5121]: 1\n};\nexport function isFormatSupported(gl, format) {\n  const info = TEXTURE_FORMATS[format];\n\n  if (!info) {\n    return false;\n  }\n\n  if (info.gl1 === undefined && info.gl2 === undefined) {\n    return true;\n  }\n\n  const value = isWebGL2(gl) ? info.gl2 || info.gl1 : info.gl1;\n  return typeof value === 'string' ? gl.getExtension(value) : value;\n}\nexport function isLinearFilteringSupported(gl, format) {\n  const info = TEXTURE_FORMATS[format];\n\n  switch (info && info.types[0]) {\n    case 5126:\n      return gl.getExtension('OES_texture_float_linear');\n\n    case 5131:\n      return gl.getExtension('OES_texture_half_float_linear');\n\n    default:\n      return true;\n  }\n}\n//# sourceMappingURL=texture-formats.js.map","import { isWebGL2, assertWebGL2Context, withParameters, log } from '@luma.gl/gltools';\nimport Resource from './resource';\nimport Buffer from './buffer';\nimport { TEXTURE_FORMATS, DATA_FORMAT_CHANNELS, TYPE_SIZES, isFormatSupported, isLinearFilteringSupported } from './texture-formats';\nimport { assert } from '../utils/assert';\nimport { uid, isPowerOfTwo } from '../utils/utils';\nconst NPOT_MIN_FILTERS = [9729, 9728];\n\nconst WebGLBuffer = globalThis.WebGLBuffer || function WebGLBuffer() {};\n\nexport default class Texture extends Resource {\n  get [Symbol.toStringTag]() {\n    return 'Texture';\n  }\n\n  static isSupported(gl) {\n    let opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n    const {\n      format,\n      linearFiltering\n    } = opts;\n    let supported = true;\n\n    if (format) {\n      supported = supported && isFormatSupported(gl, format);\n      supported = supported && (!linearFiltering || isLinearFilteringSupported(gl, format));\n    }\n\n    return supported;\n  }\n\n  constructor(gl, props) {\n    const {\n      id = uid('texture'),\n      handle,\n      target\n    } = props;\n    super(gl, {\n      id,\n      handle\n    });\n    this.target = target;\n    this.textureUnit = undefined;\n    this.loaded = false;\n    this.width = undefined;\n    this.height = undefined;\n    this.depth = undefined;\n    this.format = undefined;\n    this.type = undefined;\n    this.dataFormat = undefined;\n    this.border = undefined;\n    this.textureUnit = undefined;\n    this.mipmaps = undefined;\n  }\n\n  toString() {\n    return \"Texture(\".concat(this.id, \",\").concat(this.width, \"x\").concat(this.height, \")\");\n  }\n\n  initialize() {\n    let props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n    let data = props.data;\n\n    if (data instanceof Promise) {\n      data.then(resolvedImageData => this.initialize(Object.assign({}, props, {\n        pixels: resolvedImageData,\n        data: resolvedImageData\n      })));\n      return this;\n    }\n\n    const isVideo = typeof HTMLVideoElement !== 'undefined' && data instanceof HTMLVideoElement;\n\n    if (isVideo && data.readyState < HTMLVideoElement.HAVE_METADATA) {\n      this._video = null;\n      data.addEventListener('loadeddata', () => this.initialize(props));\n      return this;\n    }\n\n    const {\n      pixels = null,\n      format = 6408,\n      border = 0,\n      recreate = false,\n      parameters = {},\n      pixelStore = {},\n      textureUnit = undefined\n    } = props;\n\n    if (!data) {\n      data = pixels;\n    }\n\n    let {\n      width,\n      height,\n      dataFormat,\n      type,\n      compressed = false,\n      mipmaps = true\n    } = props;\n    const {\n      depth = 0\n    } = props;\n    ({\n      width,\n      height,\n      compressed,\n      dataFormat,\n      type\n    } = this._deduceParameters({\n      format,\n      type,\n      dataFormat,\n      compressed,\n      data,\n      width,\n      height\n    }));\n    this.width = width;\n    this.height = height;\n    this.depth = depth;\n    this.format = format;\n    this.type = type;\n    this.dataFormat = dataFormat;\n    this.border = border;\n    this.textureUnit = textureUnit;\n\n    if (Number.isFinite(this.textureUnit)) {\n      this.gl.activeTexture(33984 + this.textureUnit);\n      this.gl.bindTexture(this.target, this.handle);\n    }\n\n    if (mipmaps && this._isNPOT()) {\n      log.warn(\"texture: \".concat(this, \" is Non-Power-Of-Two, disabling mipmaping\"))();\n      mipmaps = false;\n\n      this._updateForNPOT(parameters);\n    }\n\n    this.mipmaps = mipmaps;\n    this.setImageData({\n      data,\n      width,\n      height,\n      depth,\n      format,\n      type,\n      dataFormat,\n      border,\n      mipmaps,\n      parameters: pixelStore,\n      compressed\n    });\n\n    if (mipmaps) {\n      this.generateMipmap();\n    }\n\n    this.setParameters(parameters);\n\n    if (recreate) {\n      this.data = data;\n    }\n\n    if (isVideo) {\n      this._video = {\n        video: data,\n        parameters,\n        lastTime: data.readyState >= HTMLVideoElement.HAVE_CURRENT_DATA ? data.currentTime : -1\n      };\n    }\n\n    return this;\n  }\n\n  update() {\n    if (this._video) {\n      const {\n        video,\n        parameters,\n        lastTime\n      } = this._video;\n\n      if (lastTime === video.currentTime || video.readyState < HTMLVideoElement.HAVE_CURRENT_DATA) {\n        return;\n      }\n\n      this.setSubImageData({\n        data: video,\n        parameters\n      });\n\n      if (this.mipmaps) {\n        this.generateMipmap();\n      }\n\n      this._video.lastTime = video.currentTime;\n    }\n  }\n\n  resize(_ref) {\n    let {\n      height,\n      width,\n      mipmaps = false\n    } = _ref;\n\n    if (width !== this.width || height !== this.height) {\n      return this.initialize({\n        width,\n        height,\n        format: this.format,\n        type: this.type,\n        dataFormat: this.dataFormat,\n        border: this.border,\n        mipmaps\n      });\n    }\n\n    return this;\n  }\n\n  generateMipmap() {\n    let params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n    if (this._isNPOT()) {\n      log.warn(\"texture: \".concat(this, \" is Non-Power-Of-Two, disabling mipmaping\"))();\n      return this;\n    }\n\n    this.mipmaps = true;\n    this.gl.bindTexture(this.target, this.handle);\n    withParameters(this.gl, params, () => {\n      this.gl.generateMipmap(this.target);\n    });\n    this.gl.bindTexture(this.target, null);\n    return this;\n  }\n\n  setImageData(options) {\n    this._trackDeallocatedMemory('Texture');\n\n    const {\n      target = this.target,\n      pixels = null,\n      level = 0,\n      format = this.format,\n      border = this.border,\n      offset = 0,\n      parameters = {}\n    } = options;\n    let {\n      data = null,\n      type = this.type,\n      width = this.width,\n      height = this.height,\n      dataFormat = this.dataFormat,\n      compressed = false\n    } = options;\n\n    if (!data) {\n      data = pixels;\n    }\n\n    ({\n      type,\n      dataFormat,\n      compressed,\n      width,\n      height\n    } = this._deduceParameters({\n      format,\n      type,\n      dataFormat,\n      compressed,\n      data,\n      width,\n      height\n    }));\n    const {\n      gl\n    } = this;\n    gl.bindTexture(this.target, this.handle);\n    let dataType = null;\n    ({\n      data,\n      dataType\n    } = this._getDataType({\n      data,\n      compressed\n    }));\n    let gl2;\n    let compressedTextureSize = 0;\n    withParameters(this.gl, parameters, () => {\n      switch (dataType) {\n        case 'null':\n          gl.texImage2D(target, level, format, width, height, border, dataFormat, type, data);\n          break;\n\n        case 'typed-array':\n          gl.texImage2D(target, level, format, width, height, border, dataFormat, type, data, offset);\n          break;\n\n        case 'buffer':\n          gl2 = assertWebGL2Context(gl);\n          gl2.bindBuffer(35052, data.handle || data);\n          gl2.texImage2D(target, level, format, width, height, border, dataFormat, type, offset);\n          gl2.bindBuffer(35052, null);\n          break;\n\n        case 'browser-object':\n          if (isWebGL2(gl)) {\n            gl.texImage2D(target, level, format, width, height, border, dataFormat, type, data);\n          } else {\n            gl.texImage2D(target, level, format, dataFormat, type, data);\n          }\n\n          break;\n\n        case 'compressed':\n          for (const [levelIndex, levelData] of data.entries()) {\n            gl.compressedTexImage2D(target, levelIndex, levelData.format, levelData.width, levelData.height, border, levelData.data);\n            compressedTextureSize += levelData.levelSize;\n          }\n\n          break;\n\n        default:\n          assert(false, 'Unknown image data type');\n      }\n    });\n\n    if (dataType === 'compressed') {\n      this._trackAllocatedMemory(compressedTextureSize, 'Texture');\n    } else if (data && data.byteLength) {\n      this._trackAllocatedMemory(data.byteLength, 'Texture');\n    } else {\n      const channels = DATA_FORMAT_CHANNELS[this.dataFormat] || 4;\n      const channelSize = TYPE_SIZES[this.type] || 1;\n\n      this._trackAllocatedMemory(this.width * this.height * channels * channelSize, 'Texture');\n    }\n\n    this.loaded = true;\n    return this;\n  }\n\n  setSubImageData(_ref2) {\n    let {\n      target = this.target,\n      pixels = null,\n      data = null,\n      x = 0,\n      y = 0,\n      width = this.width,\n      height = this.height,\n      level = 0,\n      format = this.format,\n      type = this.type,\n      dataFormat = this.dataFormat,\n      compressed = false,\n      offset = 0,\n      border = this.border,\n      parameters = {}\n    } = _ref2;\n    ({\n      type,\n      dataFormat,\n      compressed,\n      width,\n      height\n    } = this._deduceParameters({\n      format,\n      type,\n      dataFormat,\n      compressed,\n      data,\n      width,\n      height\n    }));\n    assert(this.depth === 0, 'texSubImage not supported for 3D textures');\n\n    if (!data) {\n      data = pixels;\n    }\n\n    if (data && data.data) {\n      const ndarray = data;\n      data = ndarray.data;\n      width = ndarray.shape[0];\n      height = ndarray.shape[1];\n    }\n\n    if (data instanceof Buffer) {\n      data = data.handle;\n    }\n\n    this.gl.bindTexture(this.target, this.handle);\n    withParameters(this.gl, parameters, () => {\n      if (compressed) {\n        this.gl.compressedTexSubImage2D(target, level, x, y, width, height, format, data);\n      } else if (data === null) {\n        this.gl.texSubImage2D(target, level, x, y, width, height, dataFormat, type, null);\n      } else if (ArrayBuffer.isView(data)) {\n        this.gl.texSubImage2D(target, level, x, y, width, height, dataFormat, type, data, offset);\n      } else if (data instanceof WebGLBuffer) {\n        const gl2 = assertWebGL2Context(this.gl);\n        gl2.bindBuffer(35052, data);\n        gl2.texSubImage2D(target, level, x, y, width, height, dataFormat, type, offset);\n        gl2.bindBuffer(35052, null);\n      } else if (isWebGL2(this.gl)) {\n        const gl2 = assertWebGL2Context(this.gl);\n        gl2.texSubImage2D(target, level, x, y, width, height, dataFormat, type, data);\n      } else {\n        this.gl.texSubImage2D(target, level, x, y, dataFormat, type, data);\n      }\n    });\n    this.gl.bindTexture(this.target, null);\n  }\n\n  copyFramebuffer() {\n    let opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n    log.error('Texture.copyFramebuffer({...}) is no logner supported, use copyToTexture(source, target, opts})')();\n    return null;\n  }\n\n  getActiveUnit() {\n    return this.gl.getParameter(34016) - 33984;\n  }\n\n  bind() {\n    let textureUnit = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.textureUnit;\n    const {\n      gl\n    } = this;\n\n    if (textureUnit !== undefined) {\n      this.textureUnit = textureUnit;\n      gl.activeTexture(33984 + textureUnit);\n    }\n\n    gl.bindTexture(this.target, this.handle);\n    return textureUnit;\n  }\n\n  unbind() {\n    let textureUnit = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.textureUnit;\n    const {\n      gl\n    } = this;\n\n    if (textureUnit !== undefined) {\n      this.textureUnit = textureUnit;\n      gl.activeTexture(33984 + textureUnit);\n    }\n\n    gl.bindTexture(this.target, null);\n    return textureUnit;\n  }\n\n  _getDataType(_ref3) {\n    let {\n      data,\n      compressed = false\n    } = _ref3;\n\n    if (compressed) {\n      return {\n        data,\n        dataType: 'compressed'\n      };\n    }\n\n    if (data === null) {\n      return {\n        data,\n        dataType: 'null'\n      };\n    }\n\n    if (ArrayBuffer.isView(data)) {\n      return {\n        data,\n        dataType: 'typed-array'\n      };\n    }\n\n    if (data instanceof Buffer) {\n      return {\n        data: data.handle,\n        dataType: 'buffer'\n      };\n    }\n\n    if (data instanceof WebGLBuffer) {\n      return {\n        data,\n        dataType: 'buffer'\n      };\n    }\n\n    return {\n      data,\n      dataType: 'browser-object'\n    };\n  }\n\n  _deduceParameters(opts) {\n    const {\n      format,\n      data\n    } = opts;\n    let {\n      width,\n      height,\n      dataFormat,\n      type,\n      compressed\n    } = opts;\n    const textureFormat = TEXTURE_FORMATS[format];\n    dataFormat = dataFormat || textureFormat && textureFormat.dataFormat;\n    type = type || textureFormat && textureFormat.types[0];\n    compressed = compressed || textureFormat && textureFormat.compressed;\n    ({\n      width,\n      height\n    } = this._deduceImageSize(data, width, height));\n    return {\n      dataFormat,\n      type,\n      compressed,\n      width,\n      height,\n      format,\n      data\n    };\n  }\n\n  _deduceImageSize(data, width, height) {\n    let size;\n\n    if (typeof ImageData !== 'undefined' && data instanceof ImageData) {\n      size = {\n        width: data.width,\n        height: data.height\n      };\n    } else if (typeof HTMLImageElement !== 'undefined' && data instanceof HTMLImageElement) {\n      size = {\n        width: data.naturalWidth,\n        height: data.naturalHeight\n      };\n    } else if (typeof HTMLCanvasElement !== 'undefined' && data instanceof HTMLCanvasElement) {\n      size = {\n        width: data.width,\n        height: data.height\n      };\n    } else if (typeof ImageBitmap !== 'undefined' && data instanceof ImageBitmap) {\n      size = {\n        width: data.width,\n        height: data.height\n      };\n    } else if (typeof HTMLVideoElement !== 'undefined' && data instanceof HTMLVideoElement) {\n      size = {\n        width: data.videoWidth,\n        height: data.videoHeight\n      };\n    } else if (!data) {\n      size = {\n        width: width >= 0 ? width : 1,\n        height: height >= 0 ? height : 1\n      };\n    } else {\n      size = {\n        width,\n        height\n      };\n    }\n\n    assert(size, 'Could not deduced texture size');\n    assert(width === undefined || size.width === width, 'Deduced texture width does not match supplied width');\n    assert(height === undefined || size.height === height, 'Deduced texture height does not match supplied height');\n    return size;\n  }\n\n  _createHandle() {\n    return this.gl.createTexture();\n  }\n\n  _deleteHandle() {\n    this.gl.deleteTexture(this.handle);\n\n    this._trackDeallocatedMemory('Texture');\n  }\n\n  _getParameter(pname) {\n    switch (pname) {\n      case 4096:\n        return this.width;\n\n      case 4097:\n        return this.height;\n\n      default:\n        this.gl.bindTexture(this.target, this.handle);\n        const value = this.gl.getTexParameter(this.target, pname);\n        this.gl.bindTexture(this.target, null);\n        return value;\n    }\n  }\n\n  _setParameter(pname, param) {\n    this.gl.bindTexture(this.target, this.handle);\n    param = this._getNPOTParam(pname, param);\n\n    switch (pname) {\n      case 33082:\n      case 33083:\n        this.gl.texParameterf(this.handle, pname, param);\n        break;\n\n      case 4096:\n      case 4097:\n        assert(false);\n        break;\n\n      default:\n        this.gl.texParameteri(this.target, pname, param);\n        break;\n    }\n\n    this.gl.bindTexture(this.target, null);\n    return this;\n  }\n\n  _isNPOT() {\n    if (isWebGL2(this.gl)) {\n      return false;\n    }\n\n    if (!this.width || !this.height) {\n      return false;\n    }\n\n    return !isPowerOfTwo(this.width) || !isPowerOfTwo(this.height);\n  }\n\n  _updateForNPOT(parameters) {\n    if (parameters[this.gl.TEXTURE_MIN_FILTER] === undefined) {\n      parameters[this.gl.TEXTURE_MIN_FILTER] = this.gl.LINEAR;\n    }\n\n    if (parameters[this.gl.TEXTURE_WRAP_S] === undefined) {\n      parameters[this.gl.TEXTURE_WRAP_S] = this.gl.CLAMP_TO_EDGE;\n    }\n\n    if (parameters[this.gl.TEXTURE_WRAP_T] === undefined) {\n      parameters[this.gl.TEXTURE_WRAP_T] = this.gl.CLAMP_TO_EDGE;\n    }\n  }\n\n  _getNPOTParam(pname, param) {\n    if (this._isNPOT()) {\n      switch (pname) {\n        case 10241:\n          if (NPOT_MIN_FILTERS.indexOf(param) === -1) {\n            param = 9729;\n          }\n\n          break;\n\n        case 10242:\n        case 10243:\n          if (param !== 33071) {\n            param = 33071;\n          }\n\n          break;\n\n        default:\n          break;\n      }\n    }\n\n    return param;\n  }\n\n}\n//# sourceMappingURL=texture.js.map","import { isWebGL2, assertWebGL2Context, log } from '@luma.gl/gltools';\nimport Resource from './resource';\nimport Buffer from './buffer';\nimport { isObjectEmpty } from '../utils/utils';\nexport default class TransformFeedback extends Resource {\n  get [Symbol.toStringTag]() {\n    return 'TransformFeedback';\n  }\n\n  static isSupported(gl) {\n    return isWebGL2(gl);\n  }\n\n  constructor(gl) {\n    let props = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n    assertWebGL2Context(gl);\n    super(gl, props);\n    this.initialize(props);\n    this.stubRemovedMethods('TransformFeedback', 'v6.0', ['pause', 'resume']);\n    Object.seal(this);\n  }\n\n  initialize() {\n    let props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n    this.buffers = {};\n    this.unused = {};\n    this.configuration = null;\n    this.bindOnUse = true;\n\n    if (!isObjectEmpty(this.buffers)) {\n      this.bind(() => this._unbindBuffers());\n    }\n\n    this.setProps(props);\n    return this;\n  }\n\n  setProps(props) {\n    if ('program' in props) {\n      this.configuration = props.program && props.program.configuration;\n    }\n\n    if ('configuration' in props) {\n      this.configuration = props.configuration;\n    }\n\n    if ('bindOnUse' in props) {\n      props = props.bindOnUse;\n    }\n\n    if ('buffers' in props) {\n      this.setBuffers(props.buffers);\n    }\n  }\n\n  setBuffers() {\n    let buffers = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n    this.bind(() => {\n      for (const bufferName in buffers) {\n        this.setBuffer(bufferName, buffers[bufferName]);\n      }\n    });\n    return this;\n  }\n\n  setBuffer(locationOrName, bufferOrParams) {\n    const location = this._getVaryingIndex(locationOrName);\n\n    const {\n      buffer,\n      byteSize,\n      byteOffset\n    } = this._getBufferParams(bufferOrParams);\n\n    if (location < 0) {\n      this.unused[locationOrName] = buffer;\n      log.warn(\"\".concat(this.id, \" unused varying buffer \").concat(locationOrName))();\n      return this;\n    }\n\n    this.buffers[location] = bufferOrParams;\n\n    if (!this.bindOnUse) {\n      this._bindBuffer(location, buffer, byteOffset, byteSize);\n    }\n\n    return this;\n  }\n\n  begin() {\n    let primitiveMode = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n    this.gl.bindTransformFeedback(36386, this.handle);\n\n    this._bindBuffers();\n\n    this.gl.beginTransformFeedback(primitiveMode);\n    return this;\n  }\n\n  end() {\n    this.gl.endTransformFeedback();\n\n    this._unbindBuffers();\n\n    this.gl.bindTransformFeedback(36386, null);\n    return this;\n  }\n\n  _getBufferParams(bufferOrParams) {\n    let byteOffset;\n    let byteSize;\n    let buffer;\n\n    if (bufferOrParams instanceof Buffer === false) {\n      buffer = bufferOrParams.buffer;\n      byteSize = bufferOrParams.byteSize;\n      byteOffset = bufferOrParams.byteOffset;\n    } else {\n      buffer = bufferOrParams;\n    }\n\n    if (byteOffset !== undefined || byteSize !== undefined) {\n      byteOffset = byteOffset || 0;\n      byteSize = byteSize || buffer.byteLength - byteOffset;\n    }\n\n    return {\n      buffer,\n      byteOffset,\n      byteSize\n    };\n  }\n\n  _getVaryingInfo(locationOrName) {\n    return this.configuration && this.configuration.getVaryingInfo(locationOrName);\n  }\n\n  _getVaryingIndex(locationOrName) {\n    if (this.configuration) {\n      return this.configuration.getVaryingInfo(locationOrName).location;\n    }\n\n    const location = Number(locationOrName);\n    return Number.isFinite(location) ? location : -1;\n  }\n\n  _bindBuffers() {\n    if (this.bindOnUse) {\n      for (const bufferIndex in this.buffers) {\n        const {\n          buffer,\n          byteSize,\n          byteOffset\n        } = this._getBufferParams(this.buffers[bufferIndex]);\n\n        this._bindBuffer(bufferIndex, buffer, byteOffset, byteSize);\n      }\n    }\n  }\n\n  _unbindBuffers() {\n    if (this.bindOnUse) {\n      for (const bufferIndex in this.buffers) {\n        this._bindBuffer(bufferIndex, null);\n      }\n    }\n  }\n\n  _bindBuffer(index, buffer) {\n    let byteOffset = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;\n    let byteSize = arguments.length > 3 ? arguments[3] : undefined;\n    const handle = buffer && buffer.handle;\n\n    if (!handle || byteSize === undefined) {\n      this.gl.bindBufferBase(35982, index, handle);\n    } else {\n      this.gl.bindBufferRange(35982, index, handle, byteOffset, byteSize);\n    }\n\n    return this;\n  }\n\n  _createHandle() {\n    return this.gl.createTransformFeedback();\n  }\n\n  _deleteHandle() {\n    this.gl.deleteTransformFeedback(this.handle);\n  }\n\n  _bindHandle(handle) {\n    this.gl.bindTransformFeedback(36386, this.handle);\n  }\n\n}\n//# sourceMappingURL=transform-feedback.js.map","import WEBGL_FEATURES from './webgl-features-table';\nimport { isWebGL2, log } from '@luma.gl/gltools';\nimport { assert } from '../utils/assert';\nconst LOG_UNSUPPORTED_FEATURE = 2;\nexport function hasFeature(gl, feature) {\n  return hasFeatures(gl, feature);\n}\nexport function hasFeatures(gl, features) {\n  features = Array.isArray(features) ? features : [features];\n  return features.every(feature => {\n    return isFeatureSupported(gl, feature);\n  });\n}\nexport function getFeatures(gl) {\n  gl.luma = gl.luma || {};\n  gl.luma.caps = gl.luma.caps || {};\n\n  for (const cap in WEBGL_FEATURES) {\n    if (gl.luma.caps[cap] === undefined) {\n      gl.luma.caps[cap] = isFeatureSupported(gl, cap);\n    }\n  }\n\n  return gl.luma.caps;\n}\n\nfunction isFeatureSupported(gl, cap) {\n  gl.luma = gl.luma || {};\n  gl.luma.caps = gl.luma.caps || {};\n\n  if (gl.luma.caps[cap] === undefined) {\n    gl.luma.caps[cap] = queryFeature(gl, cap);\n  }\n\n  if (!gl.luma.caps[cap]) {\n    log.log(LOG_UNSUPPORTED_FEATURE, \"Feature: \".concat(cap, \" not supported\"))();\n  }\n\n  return gl.luma.caps[cap];\n}\n\nfunction queryFeature(gl, cap) {\n  const feature = WEBGL_FEATURES[cap];\n  assert(feature, cap);\n  let isSupported;\n  const featureDefinition = isWebGL2(gl) ? feature[1] || feature[0] : feature[0];\n\n  if (typeof featureDefinition === 'function') {\n    isSupported = featureDefinition(gl);\n  } else if (Array.isArray(featureDefinition)) {\n    isSupported = true;\n\n    for (const extension of featureDefinition) {\n      isSupported = isSupported && Boolean(gl.getExtension(extension));\n    }\n  } else if (typeof featureDefinition === 'string') {\n    isSupported = Boolean(gl.getExtension(featureDefinition));\n  } else if (typeof featureDefinition === 'boolean') {\n    isSupported = featureDefinition;\n  } else {\n    assert(false);\n  }\n\n  return isSupported;\n}\n//# sourceMappingURL=features.js.map","import Framebuffer from '../classes/framebuffer';\nimport Texture2D from '../classes/texture-2d';\nexport const FEATURES = {\n  WEBGL2: 'WEBGL2',\n  VERTEX_ARRAY_OBJECT: 'VERTEX_ARRAY_OBJECT',\n  TIMER_QUERY: 'TIMER_QUERY',\n  INSTANCED_RENDERING: 'INSTANCED_RENDERING',\n  MULTIPLE_RENDER_TARGETS: 'MULTIPLE_RENDER_TARGETS',\n  ELEMENT_INDEX_UINT32: 'ELEMENT_INDEX_UINT32',\n  BLEND_EQUATION_MINMAX: 'BLEND_EQUATION_MINMAX',\n  FLOAT_BLEND: 'FLOAT_BLEND',\n  COLOR_ENCODING_SRGB: 'COLOR_ENCODING_SRGB',\n  TEXTURE_DEPTH: 'TEXTURE_DEPTH',\n  TEXTURE_FLOAT: 'TEXTURE_FLOAT',\n  TEXTURE_HALF_FLOAT: 'TEXTURE_HALF_FLOAT',\n  TEXTURE_FILTER_LINEAR_FLOAT: 'TEXTURE_FILTER_LINEAR_FLOAT',\n  TEXTURE_FILTER_LINEAR_HALF_FLOAT: 'TEXTURE_FILTER_LINEAR_HALF_FLOAT',\n  TEXTURE_FILTER_ANISOTROPIC: 'TEXTURE_FILTER_ANISOTROPIC',\n  COLOR_ATTACHMENT_RGBA32F: 'COLOR_ATTACHMENT_RGBA32F',\n  COLOR_ATTACHMENT_FLOAT: 'COLOR_ATTACHMENT_FLOAT',\n  COLOR_ATTACHMENT_HALF_FLOAT: 'COLOR_ATTACHMENT_HALF_FLOAT',\n  GLSL_FRAG_DATA: 'GLSL_FRAG_DATA',\n  GLSL_FRAG_DEPTH: 'GLSL_FRAG_DEPTH',\n  GLSL_DERIVATIVES: 'GLSL_DERIVATIVES',\n  GLSL_TEXTURE_LOD: 'GLSL_TEXTURE_LOD'\n};\n\nfunction checkFloat32ColorAttachment(gl) {\n  const testTexture = new Texture2D(gl, {\n    format: 6408,\n    type: 5126,\n    dataFormat: 6408\n  });\n  const testFb = new Framebuffer(gl, {\n    id: \"test-framebuffer\",\n    check: false,\n    attachments: {\n      [36064]: testTexture\n    }\n  });\n  const status = testFb.getStatus();\n  testTexture.delete();\n  testFb.delete();\n  return status === 36053;\n}\n\nexport default {\n  [FEATURES.WEBGL2]: [false, true],\n  [FEATURES.VERTEX_ARRAY_OBJECT]: ['OES_vertex_array_object', true],\n  [FEATURES.TIMER_QUERY]: ['EXT_disjoint_timer_query', 'EXT_disjoint_timer_query_webgl2'],\n  [FEATURES.INSTANCED_RENDERING]: ['ANGLE_instanced_arrays', true],\n  [FEATURES.MULTIPLE_RENDER_TARGETS]: ['WEBGL_draw_buffers', true],\n  [FEATURES.ELEMENT_INDEX_UINT32]: ['OES_element_index_uint', true],\n  [FEATURES.BLEND_EQUATION_MINMAX]: ['EXT_blend_minmax', true],\n  [FEATURES.FLOAT_BLEND]: ['EXT_float_blend'],\n  [FEATURES.COLOR_ENCODING_SRGB]: ['EXT_sRGB', true],\n  [FEATURES.TEXTURE_DEPTH]: ['WEBGL_depth_texture', true],\n  [FEATURES.TEXTURE_FLOAT]: ['OES_texture_float', true],\n  [FEATURES.TEXTURE_HALF_FLOAT]: ['OES_texture_half_float', true],\n  [FEATURES.TEXTURE_FILTER_LINEAR_FLOAT]: ['OES_texture_float_linear'],\n  [FEATURES.TEXTURE_FILTER_LINEAR_HALF_FLOAT]: ['OES_texture_half_float_linear'],\n  [FEATURES.TEXTURE_FILTER_ANISOTROPIC]: ['EXT_texture_filter_anisotropic'],\n  [FEATURES.COLOR_ATTACHMENT_RGBA32F]: [checkFloat32ColorAttachment, 'EXT_color_buffer_float'],\n  [FEATURES.COLOR_ATTACHMENT_FLOAT]: [false, 'EXT_color_buffer_float'],\n  [FEATURES.COLOR_ATTACHMENT_HALF_FLOAT]: ['EXT_color_buffer_half_float'],\n  [FEATURES.GLSL_FRAG_DATA]: ['WEBGL_draw_buffers', true],\n  [FEATURES.GLSL_FRAG_DEPTH]: ['EXT_frag_depth', true],\n  [FEATURES.GLSL_DERIVATIVES]: ['OES_standard_derivatives', true],\n  [FEATURES.GLSL_TEXTURE_LOD]: ['EXT_shader_texture_lod', true]\n};\n//# sourceMappingURL=webgl-features-table.js.map","import { log } from '@luma.gl/gltools';\nimport { Stats } from '@probe.gl/stats';\nimport { isBrowser } from '@probe.gl/env';\nconst VERSION = typeof \"8.5.21\" !== 'undefined' ? \"8.5.21\" : 'untranspiled source';\nconst STARTUP_MESSAGE = 'set luma.log.level=1 (or higher) to trace rendering';\nexport class StatsManager {\n  constructor() {\n    this.stats = new Map();\n  }\n\n  get(name) {\n    if (!this.stats.has(name)) {\n      this.stats.set(name, new Stats({\n        id: name\n      }));\n    }\n\n    return this.stats.get(name);\n  }\n\n}\nconst lumaStats = new StatsManager();\n\nif (globalThis.luma && globalThis.luma.VERSION !== VERSION) {\n  throw new Error(\"luma.gl - multiple VERSIONs detected: \".concat(globalThis.luma.VERSION, \" vs \").concat(VERSION));\n}\n\nif (!globalThis.luma) {\n  if (isBrowser()) {\n    log.log(1, \"luma.gl \".concat(VERSION, \" - \").concat(STARTUP_MESSAGE))();\n  }\n\n  globalThis.luma = globalThis.luma || {\n    VERSION,\n    version: VERSION,\n    log,\n    stats: lumaStats,\n    globals: {\n      modules: {},\n      nodeIO: {}\n    }\n  };\n}\n\nexport { lumaStats };\nexport default globalThis.luma;\n//# sourceMappingURL=init.js.map","export function assert(condition, message) {\n  if (!condition) {\n    throw new Error(message || 'luma.gl: assertion failed.');\n  }\n}\n//# sourceMappingURL=assert.js.map","import { log } from '@luma.gl/gltools';\nexport function checkProps(className, props, propChecks) {\n  const {\n    removedProps = {},\n    deprecatedProps = {},\n    replacedProps = {}\n  } = propChecks;\n\n  for (const propName in removedProps) {\n    if (propName in props) {\n      const replacementProp = removedProps[propName];\n      const replacement = replacementProp ? \"\".concat(className, \".\").concat(removedProps[propName]) : 'N/A';\n      log.removed(\"\".concat(className, \".\").concat(propName), replacement)();\n    }\n  }\n\n  for (const propName in deprecatedProps) {\n    if (propName in props) {\n      const replacementProp = deprecatedProps[propName];\n      log.deprecated(\"\".concat(className, \".\").concat(propName), \"\".concat(className, \".\").concat(replacementProp))();\n    }\n  }\n\n  let newProps = null;\n\n  for (const propName in replacedProps) {\n    if (propName in props) {\n      const replacementProp = replacedProps[propName];\n      log.deprecated(\"\".concat(className, \".\").concat(propName), \"\".concat(className, \".\").concat(replacementProp))();\n      newProps = newProps || Object.assign({}, props);\n      newProps[replacementProp] = props[propName];\n      delete newProps[propName];\n    }\n  }\n\n  return newProps || props;\n}\n//# sourceMappingURL=check-props.js.map","import { log } from '@luma.gl/gltools';\nexport function stubRemovedMethods(instance, className, version, methodNames) {\n  const upgradeMessage = \"See luma.gl \".concat(version, \" Upgrade Guide at https://luma.gl/docs/upgrade-guide\");\n  const prototype = Object.getPrototypeOf(instance);\n  methodNames.forEach(methodName => {\n    if (prototype.methodName) {\n      return;\n    }\n\n    prototype[methodName] = () => {\n      log.removed(\"Calling removed method \".concat(className, \".\").concat(methodName, \": \"), upgradeMessage)();\n      throw new Error(methodName);\n    };\n  });\n}\n//# sourceMappingURL=stub-methods.js.map","import { assert } from './assert';\nconst uidCounters = {};\nexport function uid() {\n  let id = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'id';\n  uidCounters[id] = uidCounters[id] || 1;\n  const count = uidCounters[id]++;\n  return \"\".concat(id, \"-\").concat(count);\n}\nexport function isPowerOfTwo(n) {\n  assert(typeof n === 'number', 'Input must be a number');\n  return n && (n & n - 1) === 0;\n}\nexport function isObjectEmpty(obj) {\n  let isEmpty = true;\n\n  for (const key in obj) {\n    isEmpty = false;\n    break;\n  }\n\n  return isEmpty;\n}\n//# sourceMappingURL=utils.js.map","import { assert } from '../utils/assert';\nconst GL_BYTE = 0x1400;\nconst GL_UNSIGNED_BYTE = 0x1401;\nconst GL_SHORT = 0x1402;\nconst GL_UNSIGNED_SHORT = 0x1403;\nconst GL_POINTS = 0x0;\nconst GL_LINES = 0x1;\nconst GL_LINE_LOOP = 0x2;\nconst GL_LINE_STRIP = 0x3;\nconst GL_TRIANGLES = 0x4;\nconst GL_TRIANGLE_STRIP = 0x5;\nconst GL_TRIANGLE_FAN = 0x6;\nconst GL_FLOAT = 0x1406;\nconst GL_FLOAT_VEC2 = 0x8b50;\nconst GL_FLOAT_VEC3 = 0x8b51;\nconst GL_FLOAT_VEC4 = 0x8b52;\nconst GL_INT = 0x1404;\nconst GL_INT_VEC2 = 0x8b53;\nconst GL_INT_VEC3 = 0x8b54;\nconst GL_INT_VEC4 = 0x8b55;\nconst GL_UNSIGNED_INT = 0x1405;\nconst GL_UNSIGNED_INT_VEC2 = 0x8dc6;\nconst GL_UNSIGNED_INT_VEC3 = 0x8dc7;\nconst GL_UNSIGNED_INT_VEC4 = 0x8dc8;\nconst GL_BOOL = 0x8b56;\nconst GL_BOOL_VEC2 = 0x8b57;\nconst GL_BOOL_VEC3 = 0x8b58;\nconst GL_BOOL_VEC4 = 0x8b59;\nconst GL_FLOAT_MAT2 = 0x8b5a;\nconst GL_FLOAT_MAT3 = 0x8b5b;\nconst GL_FLOAT_MAT4 = 0x8b5c;\nconst GL_FLOAT_MAT2x3 = 0x8b65;\nconst GL_FLOAT_MAT2x4 = 0x8b66;\nconst GL_FLOAT_MAT3x2 = 0x8b67;\nconst GL_FLOAT_MAT3x4 = 0x8b68;\nconst GL_FLOAT_MAT4x2 = 0x8b69;\nconst GL_FLOAT_MAT4x3 = 0x8b6a;\nconst COMPOSITE_GL_TYPES = {\n  [GL_FLOAT]: [GL_FLOAT, 1, 'float'],\n  [GL_FLOAT_VEC2]: [GL_FLOAT, 2, 'vec2'],\n  [GL_FLOAT_VEC3]: [GL_FLOAT, 3, 'vec3'],\n  [GL_FLOAT_VEC4]: [GL_FLOAT, 4, 'vec4'],\n  [GL_INT]: [GL_INT, 1, 'int'],\n  [GL_INT_VEC2]: [GL_INT, 2, 'ivec2'],\n  [GL_INT_VEC3]: [GL_INT, 3, 'ivec3'],\n  [GL_INT_VEC4]: [GL_INT, 4, 'ivec4'],\n  [GL_UNSIGNED_INT]: [GL_UNSIGNED_INT, 1, 'uint'],\n  [GL_UNSIGNED_INT_VEC2]: [GL_UNSIGNED_INT, 2, 'uvec2'],\n  [GL_UNSIGNED_INT_VEC3]: [GL_UNSIGNED_INT, 3, 'uvec3'],\n  [GL_UNSIGNED_INT_VEC4]: [GL_UNSIGNED_INT, 4, 'uvec4'],\n  [GL_BOOL]: [GL_FLOAT, 1, 'bool'],\n  [GL_BOOL_VEC2]: [GL_FLOAT, 2, 'bvec2'],\n  [GL_BOOL_VEC3]: [GL_FLOAT, 3, 'bvec3'],\n  [GL_BOOL_VEC4]: [GL_FLOAT, 4, 'bvec4'],\n  [GL_FLOAT_MAT2]: [GL_FLOAT, 8, 'mat2'],\n  [GL_FLOAT_MAT2x3]: [GL_FLOAT, 8, 'mat2x3'],\n  [GL_FLOAT_MAT2x4]: [GL_FLOAT, 8, 'mat2x4'],\n  [GL_FLOAT_MAT3]: [GL_FLOAT, 12, 'mat3'],\n  [GL_FLOAT_MAT3x2]: [GL_FLOAT, 12, 'mat3x2'],\n  [GL_FLOAT_MAT3x4]: [GL_FLOAT, 12, 'mat3x4'],\n  [GL_FLOAT_MAT4]: [GL_FLOAT, 16, 'mat4'],\n  [GL_FLOAT_MAT4x2]: [GL_FLOAT, 16, 'mat4x2'],\n  [GL_FLOAT_MAT4x3]: [GL_FLOAT, 16, 'mat4x3']\n};\nexport function getPrimitiveDrawMode(drawMode) {\n  switch (drawMode) {\n    case GL_POINTS:\n      return GL_POINTS;\n\n    case GL_LINES:\n      return GL_LINES;\n\n    case GL_LINE_STRIP:\n      return GL_LINES;\n\n    case GL_LINE_LOOP:\n      return GL_LINES;\n\n    case GL_TRIANGLES:\n      return GL_TRIANGLES;\n\n    case GL_TRIANGLE_STRIP:\n      return GL_TRIANGLES;\n\n    case GL_TRIANGLE_FAN:\n      return GL_TRIANGLES;\n\n    default:\n      assert(false);\n      return 0;\n  }\n}\nexport function getPrimitiveCount(_ref) {\n  let {\n    drawMode,\n    vertexCount\n  } = _ref;\n\n  switch (drawMode) {\n    case GL_POINTS:\n    case GL_LINE_LOOP:\n      return vertexCount;\n\n    case GL_LINES:\n      return vertexCount / 2;\n\n    case GL_LINE_STRIP:\n      return vertexCount - 1;\n\n    case GL_TRIANGLES:\n      return vertexCount / 3;\n\n    case GL_TRIANGLE_STRIP:\n    case GL_TRIANGLE_FAN:\n      return vertexCount - 2;\n\n    default:\n      assert(false);\n      return 0;\n  }\n}\nexport function getVertexCount(_ref2) {\n  let {\n    drawMode,\n    vertexCount\n  } = _ref2;\n  const primitiveCount = getPrimitiveCount({\n    drawMode,\n    vertexCount\n  });\n\n  switch (getPrimitiveDrawMode(drawMode)) {\n    case GL_POINTS:\n      return primitiveCount;\n\n    case GL_LINES:\n      return primitiveCount * 2;\n\n    case GL_TRIANGLES:\n      return primitiveCount * 3;\n\n    default:\n      assert(false);\n      return 0;\n  }\n}\nexport function decomposeCompositeGLType(compositeGLType) {\n  const typeAndSize = COMPOSITE_GL_TYPES[compositeGLType];\n\n  if (!typeAndSize) {\n    return null;\n  }\n\n  const [type, components] = typeAndSize;\n  return {\n    type,\n    components\n  };\n}\nexport function getCompositeGLType(type, components) {\n  switch (type) {\n    case GL_BYTE:\n    case GL_UNSIGNED_BYTE:\n    case GL_SHORT:\n    case GL_UNSIGNED_SHORT:\n      type = GL_FLOAT;\n      break;\n\n    default:\n  }\n\n  for (const glType in COMPOSITE_GL_TYPES) {\n    const [compType, compComponents, name] = COMPOSITE_GL_TYPES[glType];\n\n    if (compType === type && compComponents === components) {\n      return {\n        glType,\n        name\n      };\n    }\n  }\n\n  return null;\n}\n//# sourceMappingURL=attribute-utils.js.map","import { assert } from '../utils/assert';\nexport function getKeyValue(gl, name) {\n  if (typeof name !== 'string') {\n    return name;\n  }\n\n  const number = Number(name);\n\n  if (!isNaN(number)) {\n    return number;\n  }\n\n  name = name.replace(/^.*\\./, '');\n  const value = gl[name];\n  assert(value !== undefined, \"Accessing undefined constant GL.\".concat(name));\n  return value;\n}\nexport function getKey(gl, value) {\n  value = Number(value);\n\n  for (const key in gl) {\n    if (gl[key] === value) {\n      return \"GL.\".concat(key);\n    }\n  }\n\n  return String(value);\n}\nexport function getKeyType(gl, value) {\n  assert(value !== undefined, 'undefined key');\n  value = Number(value);\n\n  for (const key in gl) {\n    if (gl[key] === value) {\n      return \"GL.\".concat(key);\n    }\n  }\n\n  return String(value);\n}\n//# sourceMappingURL=constants-to-keys.js.map","import Texture2D from '../classes/texture-2d';\nimport TextureCube from '../classes/texture-cube';\nimport Texture3D from '../classes/texture-3d';\nimport Framebuffer from '../classes/framebuffer';\nimport { assert } from '../utils/assert';\nexport function cloneTextureFrom(refTexture, overrides) {\n  assert(refTexture instanceof Texture2D || refTexture instanceof TextureCube || refTexture instanceof Texture3D);\n  const TextureType = refTexture.constructor;\n  const {\n    gl,\n    width,\n    height,\n    format,\n    type,\n    dataFormat,\n    border,\n    mipmaps\n  } = refTexture;\n  const textureOptions = Object.assign({\n    width,\n    height,\n    format,\n    type,\n    dataFormat,\n    border,\n    mipmaps\n  }, overrides);\n  return new TextureType(gl, textureOptions);\n}\nexport function toFramebuffer(texture, opts) {\n  const {\n    gl,\n    width,\n    height,\n    id\n  } = texture;\n  const framebuffer = new Framebuffer(gl, Object.assign({}, opts, {\n    id: \"framebuffer-for-\".concat(id),\n    width,\n    height,\n    attachments: {\n      [36064]: texture\n    }\n  }));\n  return framebuffer;\n}\n//# sourceMappingURL=texture-utils.js.map","const ERR_TYPE_DEDUCTION = 'Failed to deduce GL constant from typed array';\nexport function getGLTypeFromTypedArray(arrayOrType) {\n  const type = ArrayBuffer.isView(arrayOrType) ? arrayOrType.constructor : arrayOrType;\n\n  switch (type) {\n    case Float32Array:\n      return 5126;\n\n    case Uint16Array:\n      return 5123;\n\n    case Uint32Array:\n      return 5125;\n\n    case Uint8Array:\n      return 5121;\n\n    case Uint8ClampedArray:\n      return 5121;\n\n    case Int8Array:\n      return 5120;\n\n    case Int16Array:\n      return 5122;\n\n    case Int32Array:\n      return 5124;\n\n    default:\n      throw new Error(ERR_TYPE_DEDUCTION);\n  }\n}\nexport function getTypedArrayFromGLType(glType) {\n  let {\n    clamped = true\n  } = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n  switch (glType) {\n    case 5126:\n      return Float32Array;\n\n    case 5123:\n    case 33635:\n    case 32819:\n    case 32820:\n      return Uint16Array;\n\n    case 5125:\n      return Uint32Array;\n\n    case 5121:\n      return clamped ? Uint8ClampedArray : Uint8Array;\n\n    case 5120:\n      return Int8Array;\n\n    case 5122:\n      return Int16Array;\n\n    case 5124:\n      return Int32Array;\n\n    default:\n      throw new Error('Failed to deduce typed array type from GL constant');\n  }\n}\nexport function flipRows(_ref) {\n  let {\n    data,\n    width,\n    height,\n    bytesPerPixel = 4,\n    temp\n  } = _ref;\n  const bytesPerRow = width * bytesPerPixel;\n  temp = temp || new Uint8Array(bytesPerRow);\n\n  for (let y = 0; y < height / 2; ++y) {\n    const topOffset = y * bytesPerRow;\n    const bottomOffset = (height - y - 1) * bytesPerRow;\n    temp.set(data.subarray(topOffset, topOffset + bytesPerRow));\n    data.copyWithin(topOffset, bottomOffset, bottomOffset + bytesPerRow);\n    data.set(temp, bottomOffset);\n  }\n}\nexport function scalePixels(_ref2) {\n  let {\n    data,\n    width,\n    height\n  } = _ref2;\n  const newWidth = Math.round(width / 2);\n  const newHeight = Math.round(height / 2);\n  const newData = new Uint8Array(newWidth * newHeight * 4);\n\n  for (let y = 0; y < newHeight; y++) {\n    for (let x = 0; x < newWidth; x++) {\n      for (let c = 0; c < 4; c++) {\n        newData[(y * newWidth + x) * 4 + c] = data[(y * 2 * width + x * 2) * 4 + c];\n      }\n    }\n  }\n\n  return {\n    data: newData,\n    width: newWidth,\n    height: newHeight\n  };\n}\n//# sourceMappingURL=typed-array-utils.js.map","var tilebelt = require('tilebelt');\n\n/**\n * Given a geometry, create cells and return them in a format easily readable\n * by any software that reads GeoJSON.\n *\n * @alias geojson\n * @param {Object} geom GeoJSON geometry\n * @param {Object} limits an object with min_zoom and max_zoom properties\n * specifying the minimum and maximum level to be tiled.\n * @returns {Object} FeatureCollection of cells formatted as GeoJSON Features\n */\nexports.geojson = function (geom, limits) {\n    return {\n        type: 'FeatureCollection',\n        features: getTiles(geom, limits).map(tileToFeature)\n    };\n};\n\nfunction tileToFeature(t) {\n    return {\n        type: 'Feature',\n        geometry: tilebelt.tileToGeoJSON(t),\n        properties: {}\n    };\n}\n\n/**\n * Given a geometry, create cells and return them in their raw form,\n * as an array of cell identifiers.\n *\n * @alias tiles\n * @param {Object} geom GeoJSON geometry\n * @param {Object} limits an object with min_zoom and max_zoom properties\n * specifying the minimum and maximum level to be tiled.\n * @returns {Array<Array<number>>} An array of tiles given as [x, y, z] arrays\n */\nexports.tiles = getTiles;\n\n/**\n * Given a geometry, create cells and return them as\n * [quadkey](http://msdn.microsoft.com/en-us/library/bb259689.aspx) indexes.\n *\n * @alias indexes\n * @param {Object} geom GeoJSON geometry\n * @param {Object} limits an object with min_zoom and max_zoom properties\n * specifying the minimum and maximum level to be tiled.\n * @returns {Array<String>} An array of tiles given as quadkeys.\n */\nexports.indexes = function (geom, limits) {\n    return getTiles(geom, limits).map(tilebelt.tileToQuadkey);\n};\n\nfunction getTiles(geom, limits) {\n    var i, tile,\n        coords = geom.coordinates,\n        maxZoom = limits.max_zoom,\n        tileHash = {},\n        tiles = [];\n\n    if (geom.type === 'Point') {\n        return [tilebelt.pointToTile(coords[0], coords[1], maxZoom)];\n\n    } else if (geom.type === 'MultiPoint') {\n        for (i = 0; i < coords.length; i++) {\n            tile = tilebelt.pointToTile(coords[i][0], coords[i][1], maxZoom);\n            tileHash[toID(tile[0], tile[1], tile[2])] = true;\n        }\n    } else if (geom.type === 'LineString') {\n        lineCover(tileHash, coords, maxZoom);\n\n    } else if (geom.type === 'MultiLineString') {\n        for (i = 0; i < coords.length; i++) {\n            lineCover(tileHash, coords[i], maxZoom);\n        }\n    } else if (geom.type === 'Polygon') {\n        polygonCover(tileHash, tiles, coords, maxZoom);\n\n    } else if (geom.type === 'MultiPolygon') {\n        for (i = 0; i < coords.length; i++) {\n            polygonCover(tileHash, tiles, coords[i], maxZoom);\n        }\n    } else {\n        throw new Error('Geometry type not implemented');\n    }\n\n    if (limits.min_zoom !== maxZoom) {\n        // sync tile hash and tile array so that both contain the same tiles\n        var len = tiles.length;\n        appendHashTiles(tileHash, tiles);\n        for (i = 0; i < len; i++) {\n            var t = tiles[i];\n            tileHash[toID(t[0], t[1], t[2])] = true;\n        }\n        return mergeTiles(tileHash, tiles, limits);\n    }\n\n    appendHashTiles(tileHash, tiles);\n    return tiles;\n}\n\nfunction mergeTiles(tileHash, tiles, limits) {\n    var mergedTiles = [];\n\n    for (var z = limits.max_zoom; z > limits.min_zoom; z--) {\n\n        var parentTileHash = {};\n        var parentTiles = [];\n\n        for (var i = 0; i < tiles.length; i++) {\n            var t = tiles[i];\n\n            if (t[0] % 2 === 0 && t[1] % 2 === 0) {\n                var id2 = toID(t[0] + 1, t[1], z),\n                    id3 = toID(t[0], t[1] + 1, z),\n                    id4 = toID(t[0] + 1, t[1] + 1, z);\n\n                if (tileHash[id2] && tileHash[id3] && tileHash[id4]) {\n                    tileHash[toID(t[0], t[1], t[2])] = false;\n                    tileHash[id2] = false;\n                    tileHash[id3] = false;\n                    tileHash[id4] = false;\n\n                    var parentTile = [t[0] / 2, t[1] / 2, z - 1];\n\n                    if (z - 1 === limits.min_zoom) mergedTiles.push(parentTile);\n                    else {\n                        parentTileHash[toID(t[0] / 2, t[1] / 2, z - 1)] = true;\n                        parentTiles.push(parentTile);\n                    }\n                }\n            }\n        }\n\n        for (i = 0; i < tiles.length; i++) {\n            t = tiles[i];\n            if (tileHash[toID(t[0], t[1], t[2])]) mergedTiles.push(t);\n        }\n\n        tileHash = parentTileHash;\n        tiles = parentTiles;\n    }\n\n    return mergedTiles;\n}\n\nfunction polygonCover(tileHash, tileArray, geom, zoom) {\n    var intersections = [];\n\n    for (var i = 0; i < geom.length; i++) {\n        var ring = [];\n        lineCover(tileHash, geom[i], zoom, ring);\n\n        for (var j = 0, len = ring.length, k = len - 1; j < len; k = j++) {\n            var m = (j + 1) % len;\n            var y = ring[j][1];\n\n            // add interesction if it's not local extremum or duplicate\n            if ((y > ring[k][1] || y > ring[m][1]) && // not local minimum\n                (y < ring[k][1] || y < ring[m][1]) && // not local maximum\n                y !== ring[m][1]) intersections.push(ring[j]);\n        }\n    }\n\n    intersections.sort(compareTiles); // sort by y, then x\n\n    for (i = 0; i < intersections.length; i += 2) {\n        // fill tiles between pairs of intersections\n        y = intersections[i][1];\n        for (var x = intersections[i][0] + 1; x < intersections[i + 1][0]; x++) {\n            var id = toID(x, y, zoom);\n            if (!tileHash[id]) {\n                tileArray.push([x, y, zoom]);\n            }\n        }\n    }\n}\n\nfunction compareTiles(a, b) {\n    return (a[1] - b[1]) || (a[0] - b[0]);\n}\n\nfunction lineCover(tileHash, coords, maxZoom, ring) {\n    var prevX, prevY;\n\n    for (var i = 0; i < coords.length - 1; i++) {\n        var start = tilebelt.pointToTileFraction(coords[i][0], coords[i][1], maxZoom),\n            stop = tilebelt.pointToTileFraction(coords[i + 1][0], coords[i + 1][1], maxZoom),\n            x0 = start[0],\n            y0 = start[1],\n            x1 = stop[0],\n            y1 = stop[1],\n            dx = x1 - x0,\n            dy = y1 - y0;\n\n        if (dy === 0 && dx === 0) continue;\n\n        var sx = dx > 0 ? 1 : -1,\n            sy = dy > 0 ? 1 : -1,\n            x = Math.floor(x0),\n            y = Math.floor(y0),\n            tMaxX = dx === 0 ? Infinity : Math.abs(((dx > 0 ? 1 : 0) + x - x0) / dx),\n            tMaxY = dy === 0 ? Infinity : Math.abs(((dy > 0 ? 1 : 0) + y - y0) / dy),\n            tdx = Math.abs(sx / dx),\n            tdy = Math.abs(sy / dy);\n\n        if (x !== prevX || y !== prevY) {\n            tileHash[toID(x, y, maxZoom)] = true;\n            if (ring && y !== prevY) ring.push([x, y]);\n            prevX = x;\n            prevY = y;\n        }\n\n        while (tMaxX < 1 || tMaxY < 1) {\n            if (tMaxX < tMaxY) {\n                tMaxX += tdx;\n                x += sx;\n            } else {\n                tMaxY += tdy;\n                y += sy;\n            }\n            tileHash[toID(x, y, maxZoom)] = true;\n            if (ring && y !== prevY) ring.push([x, y]);\n            prevX = x;\n            prevY = y;\n        }\n    }\n\n    if (ring && y === ring[0][1]) ring.pop();\n}\n\nfunction appendHashTiles(hash, tiles) {\n    var keys = Object.keys(hash);\n    for (var i = 0; i < keys.length; i++) {\n        tiles.push(fromID(+keys[i]));\n    }\n}\n\nfunction toID(x, y, z) {\n    var dim = 2 * (1 << z);\n    return ((dim * y + x) * 32) + z;\n}\n\nfunction fromID(id) {\n    var z = id % 32,\n        dim = 2 * (1 << z),\n        xy = ((id - z) / 32),\n        x = xy % dim,\n        y = ((xy - x) / dim) % dim;\n    return [x, y, z];\n}\n","function _extendableBuiltin(cls) {\n  function ExtendableBuiltin() {\n    var instance = Reflect.construct(cls, Array.from(arguments));\n    Object.setPrototypeOf(instance, Object.getPrototypeOf(this));\n    return instance;\n  }\n\n  ExtendableBuiltin.prototype = Object.create(cls.prototype, {\n    constructor: {\n      value: cls,\n      enumerable: false,\n      writable: true,\n      configurable: true\n    }\n  });\n\n  if (Object.setPrototypeOf) {\n    Object.setPrototypeOf(ExtendableBuiltin, cls);\n  } else {\n    ExtendableBuiltin.__proto__ = cls;\n  }\n\n  return ExtendableBuiltin;\n}\n\nimport { config, formatValue, equals, isArray } from '../../lib/common';\nexport default class MathArray extends _extendableBuiltin(Array) {\n  clone() {\n    return new this.constructor().copy(this);\n  }\n\n  fromArray(array, offset = 0) {\n    for (let i = 0; i < this.ELEMENTS; ++i) {\n      this[i] = array[i + offset];\n    }\n\n    return this.check();\n  }\n\n  toArray(targetArray = [], offset = 0) {\n    for (let i = 0; i < this.ELEMENTS; ++i) {\n      targetArray[offset + i] = this[i];\n    }\n\n    return targetArray;\n  }\n\n  from(arrayOrObject) {\n    return Array.isArray(arrayOrObject) ? this.copy(arrayOrObject) : this.fromObject(arrayOrObject);\n  }\n\n  to(arrayOrObject) {\n    if (arrayOrObject === this) {\n      return this;\n    }\n\n    return isArray(arrayOrObject) ? this.toArray(arrayOrObject) : this.toObject(arrayOrObject);\n  }\n\n  toTarget(target) {\n    return target ? this.to(target) : this;\n  }\n\n  toFloat32Array() {\n    return new Float32Array(this);\n  }\n\n  toString() {\n    return this.formatString(config);\n  }\n\n  formatString(opts) {\n    let string = '';\n\n    for (let i = 0; i < this.ELEMENTS; ++i) {\n      string += (i > 0 ? ', ' : '') + formatValue(this[i], opts);\n    }\n\n    return \"\".concat(opts.printTypes ? this.constructor.name : '', \"[\").concat(string, \"]\");\n  }\n\n  equals(array) {\n    if (!array || this.length !== array.length) {\n      return false;\n    }\n\n    for (let i = 0; i < this.ELEMENTS; ++i) {\n      if (!equals(this[i], array[i])) {\n        return false;\n      }\n    }\n\n    return true;\n  }\n\n  exactEquals(array) {\n    if (!array || this.length !== array.length) {\n      return false;\n    }\n\n    for (let i = 0; i < this.ELEMENTS; ++i) {\n      if (this[i] !== array[i]) {\n        return false;\n      }\n    }\n\n    return true;\n  }\n\n  negate() {\n    for (let i = 0; i < this.ELEMENTS; ++i) {\n      this[i] = -this[i];\n    }\n\n    return this.check();\n  }\n\n  lerp(a, b, t) {\n    if (t === undefined) {\n      return this.lerp(this, a, b);\n    }\n\n    for (let i = 0; i < this.ELEMENTS; ++i) {\n      const ai = a[i];\n      this[i] = ai + t * (b[i] - ai);\n    }\n\n    return this.check();\n  }\n\n  min(vector) {\n    for (let i = 0; i < this.ELEMENTS; ++i) {\n      this[i] = Math.min(vector[i], this[i]);\n    }\n\n    return this.check();\n  }\n\n  max(vector) {\n    for (let i = 0; i < this.ELEMENTS; ++i) {\n      this[i] = Math.max(vector[i], this[i]);\n    }\n\n    return this.check();\n  }\n\n  clamp(minVector, maxVector) {\n    for (let i = 0; i < this.ELEMENTS; ++i) {\n      this[i] = Math.min(Math.max(this[i], minVector[i]), maxVector[i]);\n    }\n\n    return this.check();\n  }\n\n  add(...vectors) {\n    for (const vector of vectors) {\n      for (let i = 0; i < this.ELEMENTS; ++i) {\n        this[i] += vector[i];\n      }\n    }\n\n    return this.check();\n  }\n\n  subtract(...vectors) {\n    for (const vector of vectors) {\n      for (let i = 0; i < this.ELEMENTS; ++i) {\n        this[i] -= vector[i];\n      }\n    }\n\n    return this.check();\n  }\n\n  scale(scale) {\n    if (typeof scale === 'number') {\n      for (let i = 0; i < this.ELEMENTS; ++i) {\n        this[i] *= scale;\n      }\n    } else {\n      for (let i = 0; i < this.ELEMENTS && i < scale.length; ++i) {\n        this[i] *= scale[i];\n      }\n    }\n\n    return this.check();\n  }\n\n  multiplyByScalar(scalar) {\n    for (let i = 0; i < this.ELEMENTS; ++i) {\n      this[i] *= scalar;\n    }\n\n    return this.check();\n  }\n\n  check() {\n    if (config.debug && !this.validate()) {\n      throw new Error(\"math.gl: \".concat(this.constructor.name, \" some fields set to invalid numbers'\"));\n    }\n\n    return this;\n  }\n\n  validate() {\n    let valid = this.length === this.ELEMENTS;\n\n    for (let i = 0; i < this.ELEMENTS; ++i) {\n      valid = valid && Number.isFinite(this[i]);\n    }\n\n    return valid;\n  }\n\n  sub(a) {\n    return this.subtract(a);\n  }\n\n  setScalar(a) {\n    for (let i = 0; i < this.ELEMENTS; ++i) {\n      this[i] = a;\n    }\n\n    return this.check();\n  }\n\n  addScalar(a) {\n    for (let i = 0; i < this.ELEMENTS; ++i) {\n      this[i] += a;\n    }\n\n    return this.check();\n  }\n\n  subScalar(a) {\n    return this.addScalar(-a);\n  }\n\n  multiplyScalar(scalar) {\n    for (let i = 0; i < this.ELEMENTS; ++i) {\n      this[i] *= scalar;\n    }\n\n    return this.check();\n  }\n\n  divideScalar(a) {\n    return this.multiplyByScalar(1 / a);\n  }\n\n  clampScalar(min, max) {\n    for (let i = 0; i < this.ELEMENTS; ++i) {\n      this[i] = Math.min(Math.max(this[i], min), max);\n    }\n\n    return this.check();\n  }\n\n  get elements() {\n    return this;\n  }\n\n}\n//# sourceMappingURL=math-array.js.map","import MathArray from './math-array';\nimport { checkNumber } from '../../lib/validators';\nimport { config } from '../../lib/common';\nexport default class Matrix extends MathArray {\n  toString() {\n    let string = '[';\n\n    if (config.printRowMajor) {\n      string += 'row-major:';\n\n      for (let row = 0; row < this.RANK; ++row) {\n        for (let col = 0; col < this.RANK; ++col) {\n          string += \" \".concat(this[col * this.RANK + row]);\n        }\n      }\n    } else {\n      string += 'column-major:';\n\n      for (let i = 0; i < this.ELEMENTS; ++i) {\n        string += \" \".concat(this[i]);\n      }\n    }\n\n    string += ']';\n    return string;\n  }\n\n  getElementIndex(row, col) {\n    return col * this.RANK + row;\n  }\n\n  getElement(row, col) {\n    return this[col * this.RANK + row];\n  }\n\n  setElement(row, col, value) {\n    this[col * this.RANK + row] = checkNumber(value);\n    return this;\n  }\n\n  getColumn(columnIndex, result = new Array(this.RANK).fill(-0)) {\n    const firstIndex = columnIndex * this.RANK;\n\n    for (let i = 0; i < this.RANK; ++i) {\n      result[i] = this[firstIndex + i];\n    }\n\n    return result;\n  }\n\n  setColumn(columnIndex, columnVector) {\n    const firstIndex = columnIndex * this.RANK;\n\n    for (let i = 0; i < this.RANK; ++i) {\n      this[firstIndex + i] = columnVector[i];\n    }\n\n    return this;\n  }\n\n}\n//# sourceMappingURL=matrix.js.map","import MathArray from './math-array';\nimport { checkNumber } from '../../lib/validators';\nimport assert from '../../lib/assert';\nexport default class Vector extends MathArray {\n  get x() {\n    return this[0];\n  }\n\n  set x(value) {\n    this[0] = checkNumber(value);\n  }\n\n  get y() {\n    return this[1];\n  }\n\n  set y(value) {\n    this[1] = checkNumber(value);\n  }\n\n  len() {\n    return Math.sqrt(this.lengthSquared());\n  }\n\n  magnitude() {\n    return this.len();\n  }\n\n  lengthSquared() {\n    let length = 0;\n\n    for (let i = 0; i < this.ELEMENTS; ++i) {\n      length += this[i] * this[i];\n    }\n\n    return length;\n  }\n\n  magnitudeSquared() {\n    return this.lengthSquared();\n  }\n\n  distance(mathArray) {\n    return Math.sqrt(this.distanceSquared(mathArray));\n  }\n\n  distanceSquared(mathArray) {\n    let length = 0;\n\n    for (let i = 0; i < this.ELEMENTS; ++i) {\n      const dist = this[i] - mathArray[i];\n      length += dist * dist;\n    }\n\n    return checkNumber(length);\n  }\n\n  dot(mathArray) {\n    let product = 0;\n\n    for (let i = 0; i < this.ELEMENTS; ++i) {\n      product += this[i] * mathArray[i];\n    }\n\n    return checkNumber(product);\n  }\n\n  normalize() {\n    const length = this.magnitude();\n\n    if (length !== 0) {\n      for (let i = 0; i < this.ELEMENTS; ++i) {\n        this[i] /= length;\n      }\n    }\n\n    return this.check();\n  }\n\n  multiply(...vectors) {\n    for (const vector of vectors) {\n      for (let i = 0; i < this.ELEMENTS; ++i) {\n        this[i] *= vector[i];\n      }\n    }\n\n    return this.check();\n  }\n\n  divide(...vectors) {\n    for (const vector of vectors) {\n      for (let i = 0; i < this.ELEMENTS; ++i) {\n        this[i] /= vector[i];\n      }\n    }\n\n    return this.check();\n  }\n\n  lengthSq() {\n    return this.lengthSquared();\n  }\n\n  distanceTo(vector) {\n    return this.distance(vector);\n  }\n\n  distanceToSquared(vector) {\n    return this.distanceSquared(vector);\n  }\n\n  getComponent(i) {\n    assert(i >= 0 && i < this.ELEMENTS, 'index is out of range');\n    return checkNumber(this[i]);\n  }\n\n  setComponent(i, value) {\n    assert(i >= 0 && i < this.ELEMENTS, 'index is out of range');\n    this[i] = value;\n    return this.check();\n  }\n\n  addVectors(a, b) {\n    return this.copy(a).add(b);\n  }\n\n  subVectors(a, b) {\n    return this.copy(a).subtract(b);\n  }\n\n  multiplyVectors(a, b) {\n    return this.copy(a).multiply(b);\n  }\n\n  addScaledVector(a, b) {\n    return this.add(new this.constructor(a).multiplyScalar(b));\n  }\n\n}\n//# sourceMappingURL=vector.js.map","import Matrix from './base/matrix';\nimport { checkVector } from '../lib/validators';\nimport { vec4_transformMat3 } from '../lib/gl-matrix-extras';\nimport * as mat3 from 'gl-matrix/mat3';\nimport * as vec2 from 'gl-matrix/vec2';\nimport * as vec3 from 'gl-matrix/vec3';\nvar INDICES;\n\n(function (INDICES) {\n  INDICES[INDICES[\"COL0ROW0\"] = 0] = \"COL0ROW0\";\n  INDICES[INDICES[\"COL0ROW1\"] = 1] = \"COL0ROW1\";\n  INDICES[INDICES[\"COL0ROW2\"] = 2] = \"COL0ROW2\";\n  INDICES[INDICES[\"COL1ROW0\"] = 3] = \"COL1ROW0\";\n  INDICES[INDICES[\"COL1ROW1\"] = 4] = \"COL1ROW1\";\n  INDICES[INDICES[\"COL1ROW2\"] = 5] = \"COL1ROW2\";\n  INDICES[INDICES[\"COL2ROW0\"] = 6] = \"COL2ROW0\";\n  INDICES[INDICES[\"COL2ROW1\"] = 7] = \"COL2ROW1\";\n  INDICES[INDICES[\"COL2ROW2\"] = 8] = \"COL2ROW2\";\n})(INDICES || (INDICES = {}));\n\nconst IDENTITY_MATRIX = Object.freeze([1, 0, 0, 0, 1, 0, 0, 0, 1]);\nexport default class Matrix3 extends Matrix {\n  static get IDENTITY() {\n    return getIdentityMatrix();\n  }\n\n  static get ZERO() {\n    return getZeroMatrix();\n  }\n\n  get ELEMENTS() {\n    return 9;\n  }\n\n  get RANK() {\n    return 3;\n  }\n\n  get INDICES() {\n    return INDICES;\n  }\n\n  constructor(array, ...args) {\n    super(-0, -0, -0, -0, -0, -0, -0, -0, -0);\n\n    if (arguments.length === 1 && Array.isArray(array)) {\n      this.copy(array);\n    } else if (args.length > 0) {\n      this.copy([array, ...args]);\n    } else {\n      this.identity();\n    }\n  }\n\n  copy(array) {\n    this[0] = array[0];\n    this[1] = array[1];\n    this[2] = array[2];\n    this[3] = array[3];\n    this[4] = array[4];\n    this[5] = array[5];\n    this[6] = array[6];\n    this[7] = array[7];\n    this[8] = array[8];\n    return this.check();\n  }\n\n  identity() {\n    return this.copy(IDENTITY_MATRIX);\n  }\n\n  fromObject(object) {\n    return this.check();\n  }\n\n  fromQuaternion(q) {\n    mat3.fromQuat(this, q);\n    return this.check();\n  }\n\n  set(m00, m10, m20, m01, m11, m21, m02, m12, m22) {\n    this[0] = m00;\n    this[1] = m10;\n    this[2] = m20;\n    this[3] = m01;\n    this[4] = m11;\n    this[5] = m21;\n    this[6] = m02;\n    this[7] = m12;\n    this[8] = m22;\n    return this.check();\n  }\n\n  setRowMajor(m00, m01, m02, m10, m11, m12, m20, m21, m22) {\n    this[0] = m00;\n    this[1] = m10;\n    this[2] = m20;\n    this[3] = m01;\n    this[4] = m11;\n    this[5] = m21;\n    this[6] = m02;\n    this[7] = m12;\n    this[8] = m22;\n    return this.check();\n  }\n\n  determinant() {\n    return mat3.determinant(this);\n  }\n\n  transpose() {\n    mat3.transpose(this, this);\n    return this.check();\n  }\n\n  invert() {\n    mat3.invert(this, this);\n    return this.check();\n  }\n\n  multiplyLeft(a) {\n    mat3.multiply(this, a, this);\n    return this.check();\n  }\n\n  multiplyRight(a) {\n    mat3.multiply(this, this, a);\n    return this.check();\n  }\n\n  rotate(radians) {\n    mat3.rotate(this, this, radians);\n    return this.check();\n  }\n\n  scale(factor) {\n    if (Array.isArray(factor)) {\n      mat3.scale(this, this, factor);\n    } else {\n      mat3.scale(this, this, [factor, factor]);\n    }\n\n    return this.check();\n  }\n\n  translate(vec) {\n    mat3.translate(this, this, vec);\n    return this.check();\n  }\n\n  transform(vector, result) {\n    let out;\n\n    switch (vector.length) {\n      case 2:\n        out = vec2.transformMat3(result || [-0, -0], vector, this);\n        break;\n\n      case 3:\n        out = vec3.transformMat3(result || [-0, -0, -0], vector, this);\n        break;\n\n      case 4:\n        out = vec4_transformMat3(result || [-0, -0, -0, -0], vector, this);\n        break;\n\n      default:\n        throw new Error('Illegal vector');\n    }\n\n    checkVector(out, vector.length);\n    return out;\n  }\n\n  transformVector(vector, result) {\n    return this.transform(vector, result);\n  }\n\n  transformVector2(vector, result) {\n    return this.transform(vector, result);\n  }\n\n  transformVector3(vector, result) {\n    return this.transform(vector, result);\n  }\n\n}\nlet ZERO_MATRIX3;\nlet IDENTITY_MATRIX3;\n\nfunction getZeroMatrix() {\n  if (!ZERO_MATRIX3) {\n    ZERO_MATRIX3 = new Matrix3([0, 0, 0, 0, 0, 0, 0, 0, 0]);\n    Object.freeze(ZERO_MATRIX3);\n  }\n\n  return ZERO_MATRIX3;\n}\n\nfunction getIdentityMatrix() {\n  if (!IDENTITY_MATRIX3) {\n    IDENTITY_MATRIX3 = new Matrix3();\n    Object.freeze(IDENTITY_MATRIX3);\n  }\n\n  return IDENTITY_MATRIX3;\n}\n//# sourceMappingURL=matrix3.js.map","import Matrix from './base/matrix';\nimport { checkVector } from '../lib/validators';\nimport { vec2_transformMat4AsVector, vec3_transformMat4AsVector } from '../lib/gl-matrix-extras';\nimport * as mat4 from 'gl-matrix/mat4';\nimport * as vec2 from 'gl-matrix/vec2';\nimport * as vec3 from 'gl-matrix/vec3';\nimport * as vec4 from 'gl-matrix/vec4';\nvar INDICES;\n\n(function (INDICES) {\n  INDICES[INDICES[\"COL0ROW0\"] = 0] = \"COL0ROW0\";\n  INDICES[INDICES[\"COL0ROW1\"] = 1] = \"COL0ROW1\";\n  INDICES[INDICES[\"COL0ROW2\"] = 2] = \"COL0ROW2\";\n  INDICES[INDICES[\"COL0ROW3\"] = 3] = \"COL0ROW3\";\n  INDICES[INDICES[\"COL1ROW0\"] = 4] = \"COL1ROW0\";\n  INDICES[INDICES[\"COL1ROW1\"] = 5] = \"COL1ROW1\";\n  INDICES[INDICES[\"COL1ROW2\"] = 6] = \"COL1ROW2\";\n  INDICES[INDICES[\"COL1ROW3\"] = 7] = \"COL1ROW3\";\n  INDICES[INDICES[\"COL2ROW0\"] = 8] = \"COL2ROW0\";\n  INDICES[INDICES[\"COL2ROW1\"] = 9] = \"COL2ROW1\";\n  INDICES[INDICES[\"COL2ROW2\"] = 10] = \"COL2ROW2\";\n  INDICES[INDICES[\"COL2ROW3\"] = 11] = \"COL2ROW3\";\n  INDICES[INDICES[\"COL3ROW0\"] = 12] = \"COL3ROW0\";\n  INDICES[INDICES[\"COL3ROW1\"] = 13] = \"COL3ROW1\";\n  INDICES[INDICES[\"COL3ROW2\"] = 14] = \"COL3ROW2\";\n  INDICES[INDICES[\"COL3ROW3\"] = 15] = \"COL3ROW3\";\n})(INDICES || (INDICES = {}));\n\nconst DEFAULT_FOVY = 45 * Math.PI / 180;\nconst DEFAULT_ASPECT = 1;\nconst DEFAULT_NEAR = 0.1;\nconst DEFAULT_FAR = 500;\nconst IDENTITY_MATRIX = Object.freeze([1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]);\nexport default class Matrix4 extends Matrix {\n  static get IDENTITY() {\n    return getIdentityMatrix();\n  }\n\n  static get ZERO() {\n    return getZeroMatrix();\n  }\n\n  get ELEMENTS() {\n    return 16;\n  }\n\n  get RANK() {\n    return 4;\n  }\n\n  get INDICES() {\n    return INDICES;\n  }\n\n  constructor(array) {\n    super(-0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0);\n\n    if (arguments.length === 1 && Array.isArray(array)) {\n      this.copy(array);\n    } else {\n      this.identity();\n    }\n  }\n\n  copy(array) {\n    this[0] = array[0];\n    this[1] = array[1];\n    this[2] = array[2];\n    this[3] = array[3];\n    this[4] = array[4];\n    this[5] = array[5];\n    this[6] = array[6];\n    this[7] = array[7];\n    this[8] = array[8];\n    this[9] = array[9];\n    this[10] = array[10];\n    this[11] = array[11];\n    this[12] = array[12];\n    this[13] = array[13];\n    this[14] = array[14];\n    this[15] = array[15];\n    return this.check();\n  }\n\n  set(m00, m10, m20, m30, m01, m11, m21, m31, m02, m12, m22, m32, m03, m13, m23, m33) {\n    this[0] = m00;\n    this[1] = m10;\n    this[2] = m20;\n    this[3] = m30;\n    this[4] = m01;\n    this[5] = m11;\n    this[6] = m21;\n    this[7] = m31;\n    this[8] = m02;\n    this[9] = m12;\n    this[10] = m22;\n    this[11] = m32;\n    this[12] = m03;\n    this[13] = m13;\n    this[14] = m23;\n    this[15] = m33;\n    return this.check();\n  }\n\n  setRowMajor(m00, m01, m02, m03, m10, m11, m12, m13, m20, m21, m22, m23, m30, m31, m32, m33) {\n    this[0] = m00;\n    this[1] = m10;\n    this[2] = m20;\n    this[3] = m30;\n    this[4] = m01;\n    this[5] = m11;\n    this[6] = m21;\n    this[7] = m31;\n    this[8] = m02;\n    this[9] = m12;\n    this[10] = m22;\n    this[11] = m32;\n    this[12] = m03;\n    this[13] = m13;\n    this[14] = m23;\n    this[15] = m33;\n    return this.check();\n  }\n\n  toRowMajor(result) {\n    result[0] = this[0];\n    result[1] = this[4];\n    result[2] = this[8];\n    result[3] = this[12];\n    result[4] = this[1];\n    result[5] = this[5];\n    result[6] = this[9];\n    result[7] = this[13];\n    result[8] = this[2];\n    result[9] = this[6];\n    result[10] = this[10];\n    result[11] = this[14];\n    result[12] = this[3];\n    result[13] = this[7];\n    result[14] = this[11];\n    result[15] = this[15];\n    return result;\n  }\n\n  identity() {\n    return this.copy(IDENTITY_MATRIX);\n  }\n\n  fromObject(object) {\n    return this.check();\n  }\n\n  fromQuaternion(quaternion) {\n    mat4.fromQuat(this, quaternion);\n    return this.check();\n  }\n\n  frustum(view) {\n    const {\n      left,\n      right,\n      bottom,\n      top,\n      near = DEFAULT_NEAR,\n      far = DEFAULT_FAR\n    } = view;\n\n    if (far === Infinity) {\n      computeInfinitePerspectiveOffCenter(this, left, right, bottom, top, near);\n    } else {\n      mat4.frustum(this, left, right, bottom, top, near, far);\n    }\n\n    return this.check();\n  }\n\n  lookAt(view) {\n    const {\n      eye,\n      center = [0, 0, 0],\n      up = [0, 1, 0]\n    } = view;\n    mat4.lookAt(this, eye, center, up);\n    return this.check();\n  }\n\n  ortho(view) {\n    const {\n      left,\n      right,\n      bottom,\n      top,\n      near = DEFAULT_NEAR,\n      far = DEFAULT_FAR\n    } = view;\n    mat4.ortho(this, left, right, bottom, top, near, far);\n    return this.check();\n  }\n\n  orthographic(view) {\n    const {\n      fovy = DEFAULT_FOVY,\n      aspect = DEFAULT_ASPECT,\n      focalDistance = 1,\n      near = DEFAULT_NEAR,\n      far = DEFAULT_FAR\n    } = view;\n    checkRadians(fovy);\n    const halfY = fovy / 2;\n    const top = focalDistance * Math.tan(halfY);\n    const right = top * aspect;\n    return this.ortho({\n      left: -right,\n      right,\n      bottom: -top,\n      top,\n      near,\n      far\n    });\n  }\n\n  perspective(view) {\n    const {\n      fovy = 45 * Math.PI / 180,\n      aspect = 1,\n      near = 0.1,\n      far = 500\n    } = view;\n    checkRadians(fovy);\n    mat4.perspective(this, fovy, aspect, near, far);\n    return this.check();\n  }\n\n  determinant() {\n    return mat4.determinant(this);\n  }\n\n  getScale(result = [-0, -0, -0]) {\n    result[0] = Math.sqrt(this[0] * this[0] + this[1] * this[1] + this[2] * this[2]);\n    result[1] = Math.sqrt(this[4] * this[4] + this[5] * this[5] + this[6] * this[6]);\n    result[2] = Math.sqrt(this[8] * this[8] + this[9] * this[9] + this[10] * this[10]);\n    return result;\n  }\n\n  getTranslation(result = [-0, -0, -0]) {\n    result[0] = this[12];\n    result[1] = this[13];\n    result[2] = this[14];\n    return result;\n  }\n\n  getRotation(result, scaleResult) {\n    result = result || [-0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0];\n    scaleResult = scaleResult || [-0, -0, -0];\n    const scale = this.getScale(scaleResult);\n    const inverseScale0 = 1 / scale[0];\n    const inverseScale1 = 1 / scale[1];\n    const inverseScale2 = 1 / scale[2];\n    result[0] = this[0] * inverseScale0;\n    result[1] = this[1] * inverseScale1;\n    result[2] = this[2] * inverseScale2;\n    result[3] = 0;\n    result[4] = this[4] * inverseScale0;\n    result[5] = this[5] * inverseScale1;\n    result[6] = this[6] * inverseScale2;\n    result[7] = 0;\n    result[8] = this[8] * inverseScale0;\n    result[9] = this[9] * inverseScale1;\n    result[10] = this[10] * inverseScale2;\n    result[11] = 0;\n    result[12] = 0;\n    result[13] = 0;\n    result[14] = 0;\n    result[15] = 1;\n    return result;\n  }\n\n  getRotationMatrix3(result, scaleResult) {\n    result = result || [-0, -0, -0, -0, -0, -0, -0, -0, -0];\n    scaleResult = scaleResult || [-0, -0, -0];\n    const scale = this.getScale(scaleResult);\n    const inverseScale0 = 1 / scale[0];\n    const inverseScale1 = 1 / scale[1];\n    const inverseScale2 = 1 / scale[2];\n    result[0] = this[0] * inverseScale0;\n    result[1] = this[1] * inverseScale1;\n    result[2] = this[2] * inverseScale2;\n    result[3] = this[4] * inverseScale0;\n    result[4] = this[5] * inverseScale1;\n    result[5] = this[6] * inverseScale2;\n    result[6] = this[8] * inverseScale0;\n    result[7] = this[9] * inverseScale1;\n    result[8] = this[10] * inverseScale2;\n    return result;\n  }\n\n  transpose() {\n    mat4.transpose(this, this);\n    return this.check();\n  }\n\n  invert() {\n    mat4.invert(this, this);\n    return this.check();\n  }\n\n  multiplyLeft(a) {\n    mat4.multiply(this, a, this);\n    return this.check();\n  }\n\n  multiplyRight(a) {\n    mat4.multiply(this, this, a);\n    return this.check();\n  }\n\n  rotateX(radians) {\n    mat4.rotateX(this, this, radians);\n    return this.check();\n  }\n\n  rotateY(radians) {\n    mat4.rotateY(this, this, radians);\n    return this.check();\n  }\n\n  rotateZ(radians) {\n    mat4.rotateZ(this, this, radians);\n    return this.check();\n  }\n\n  rotateXYZ(angleXYZ) {\n    return this.rotateX(angleXYZ[0]).rotateY(angleXYZ[1]).rotateZ(angleXYZ[2]);\n  }\n\n  rotateAxis(radians, axis) {\n    mat4.rotate(this, this, radians, axis);\n    return this.check();\n  }\n\n  scale(factor) {\n    mat4.scale(this, this, Array.isArray(factor) ? factor : [factor, factor, factor]);\n    return this.check();\n  }\n\n  translate(vector) {\n    mat4.translate(this, this, vector);\n    return this.check();\n  }\n\n  transform(vector, result) {\n    if (vector.length === 4) {\n      result = vec4.transformMat4(result || [-0, -0, -0, -0], vector, this);\n      checkVector(result, 4);\n      return result;\n    }\n\n    return this.transformAsPoint(vector, result);\n  }\n\n  transformAsPoint(vector, result) {\n    const {\n      length\n    } = vector;\n    let out;\n\n    switch (length) {\n      case 2:\n        out = vec2.transformMat4(result || [-0, -0], vector, this);\n        break;\n\n      case 3:\n        out = vec3.transformMat4(result || [-0, -0, -0], vector, this);\n        break;\n\n      default:\n        throw new Error('Illegal vector');\n    }\n\n    checkVector(out, vector.length);\n    return out;\n  }\n\n  transformAsVector(vector, result) {\n    let out;\n\n    switch (vector.length) {\n      case 2:\n        out = vec2_transformMat4AsVector(result || [-0, -0], vector, this);\n        break;\n\n      case 3:\n        out = vec3_transformMat4AsVector(result || [-0, -0, -0], vector, this);\n        break;\n\n      default:\n        throw new Error('Illegal vector');\n    }\n\n    checkVector(out, vector.length);\n    return out;\n  }\n\n  transformPoint(vector, result) {\n    return this.transformAsPoint(vector, result);\n  }\n\n  transformVector(vector, result) {\n    return this.transformAsPoint(vector, result);\n  }\n\n  transformDirection(vector, result) {\n    return this.transformAsVector(vector, result);\n  }\n\n  makeRotationX(radians) {\n    return this.identity().rotateX(radians);\n  }\n\n  makeTranslation(x, y, z) {\n    return this.identity().translate([x, y, z]);\n  }\n\n}\nlet ZERO;\nlet IDENTITY;\n\nfunction getZeroMatrix() {\n  if (!ZERO) {\n    ZERO = new Matrix4([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]);\n    Object.freeze(ZERO);\n  }\n\n  return ZERO;\n}\n\nfunction getIdentityMatrix() {\n  if (!IDENTITY) {\n    IDENTITY = new Matrix4();\n    Object.freeze(IDENTITY);\n  }\n\n  return IDENTITY;\n}\n\nfunction checkRadians(possiblyDegrees) {\n  if (possiblyDegrees > Math.PI * 2) {\n    throw Error('expected radians');\n  }\n}\n\nfunction computeInfinitePerspectiveOffCenter(result, left, right, bottom, top, near) {\n  const column0Row0 = 2 * near / (right - left);\n  const column1Row1 = 2 * near / (top - bottom);\n  const column2Row0 = (right + left) / (right - left);\n  const column2Row1 = (top + bottom) / (top - bottom);\n  const column2Row2 = -1;\n  const column2Row3 = -1;\n  const column3Row2 = -2 * near;\n  result[0] = column0Row0;\n  result[1] = 0;\n  result[2] = 0;\n  result[3] = 0;\n  result[4] = 0;\n  result[5] = column1Row1;\n  result[6] = 0;\n  result[7] = 0;\n  result[8] = column2Row0;\n  result[9] = column2Row1;\n  result[10] = column2Row2;\n  result[11] = column2Row3;\n  result[12] = 0;\n  result[13] = 0;\n  result[14] = column3Row2;\n  result[15] = 0;\n  return result;\n}\n//# sourceMappingURL=matrix4.js.map","import * as glMatrix from \"./common.js\";\nimport * as mat3 from \"./mat3.js\";\nimport * as vec3 from \"./vec3.js\";\nimport * as vec4 from \"./vec4.js\";\n/**\n * Quaternion\n * @module quat\n */\n\n/**\n * Creates a new identity quat\n *\n * @returns {quat} a new quaternion\n */\n\nexport function create() {\n  var out = new glMatrix.ARRAY_TYPE(4);\n\n  if (glMatrix.ARRAY_TYPE != Float32Array) {\n    out[0] = 0;\n    out[1] = 0;\n    out[2] = 0;\n  }\n\n  out[3] = 1;\n  return out;\n}\n/**\n * Set a quat to the identity quaternion\n *\n * @param {quat} out the receiving quaternion\n * @returns {quat} out\n */\n\nexport function identity(out) {\n  out[0] = 0;\n  out[1] = 0;\n  out[2] = 0;\n  out[3] = 1;\n  return out;\n}\n/**\n * Sets a quat from the given angle and rotation axis,\n * then returns it.\n *\n * @param {quat} out the receiving quaternion\n * @param {ReadonlyVec3} axis the axis around which to rotate\n * @param {Number} rad the angle in radians\n * @returns {quat} out\n **/\n\nexport function setAxisAngle(out, axis, rad) {\n  rad = rad * 0.5;\n  var s = Math.sin(rad);\n  out[0] = s * axis[0];\n  out[1] = s * axis[1];\n  out[2] = s * axis[2];\n  out[3] = Math.cos(rad);\n  return out;\n}\n/**\n * Gets the rotation axis and angle for a given\n *  quaternion. If a quaternion is created with\n *  setAxisAngle, this method will return the same\n *  values as providied in the original parameter list\n *  OR functionally equivalent values.\n * Example: The quaternion formed by axis [0, 0, 1] and\n *  angle -90 is the same as the quaternion formed by\n *  [0, 0, 1] and 270. This method favors the latter.\n * @param  {vec3} out_axis  Vector receiving the axis of rotation\n * @param  {ReadonlyQuat} q     Quaternion to be decomposed\n * @return {Number}     Angle, in radians, of the rotation\n */\n\nexport function getAxisAngle(out_axis, q) {\n  var rad = Math.acos(q[3]) * 2.0;\n  var s = Math.sin(rad / 2.0);\n\n  if (s > glMatrix.EPSILON) {\n    out_axis[0] = q[0] / s;\n    out_axis[1] = q[1] / s;\n    out_axis[2] = q[2] / s;\n  } else {\n    // If s is zero, return any axis (no rotation - axis does not matter)\n    out_axis[0] = 1;\n    out_axis[1] = 0;\n    out_axis[2] = 0;\n  }\n\n  return rad;\n}\n/**\n * Gets the angular distance between two unit quaternions\n *\n * @param  {ReadonlyQuat} a     Origin unit quaternion\n * @param  {ReadonlyQuat} b     Destination unit quaternion\n * @return {Number}     Angle, in radians, between the two quaternions\n */\n\nexport function getAngle(a, b) {\n  var dotproduct = dot(a, b);\n  return Math.acos(2 * dotproduct * dotproduct - 1);\n}\n/**\n * Multiplies two quat's\n *\n * @param {quat} out the receiving quaternion\n * @param {ReadonlyQuat} a the first operand\n * @param {ReadonlyQuat} b the second operand\n * @returns {quat} out\n */\n\nexport function multiply(out, a, b) {\n  var ax = a[0],\n      ay = a[1],\n      az = a[2],\n      aw = a[3];\n  var bx = b[0],\n      by = b[1],\n      bz = b[2],\n      bw = b[3];\n  out[0] = ax * bw + aw * bx + ay * bz - az * by;\n  out[1] = ay * bw + aw * by + az * bx - ax * bz;\n  out[2] = az * bw + aw * bz + ax * by - ay * bx;\n  out[3] = aw * bw - ax * bx - ay * by - az * bz;\n  return out;\n}\n/**\n * Rotates a quaternion by the given angle about the X axis\n *\n * @param {quat} out quat receiving operation result\n * @param {ReadonlyQuat} a quat to rotate\n * @param {number} rad angle (in radians) to rotate\n * @returns {quat} out\n */\n\nexport function rotateX(out, a, rad) {\n  rad *= 0.5;\n  var ax = a[0],\n      ay = a[1],\n      az = a[2],\n      aw = a[3];\n  var bx = Math.sin(rad),\n      bw = Math.cos(rad);\n  out[0] = ax * bw + aw * bx;\n  out[1] = ay * bw + az * bx;\n  out[2] = az * bw - ay * bx;\n  out[3] = aw * bw - ax * bx;\n  return out;\n}\n/**\n * Rotates a quaternion by the given angle about the Y axis\n *\n * @param {quat} out quat receiving operation result\n * @param {ReadonlyQuat} a quat to rotate\n * @param {number} rad angle (in radians) to rotate\n * @returns {quat} out\n */\n\nexport function rotateY(out, a, rad) {\n  rad *= 0.5;\n  var ax = a[0],\n      ay = a[1],\n      az = a[2],\n      aw = a[3];\n  var by = Math.sin(rad),\n      bw = Math.cos(rad);\n  out[0] = ax * bw - az * by;\n  out[1] = ay * bw + aw * by;\n  out[2] = az * bw + ax * by;\n  out[3] = aw * bw - ay * by;\n  return out;\n}\n/**\n * Rotates a quaternion by the given angle about the Z axis\n *\n * @param {quat} out quat receiving operation result\n * @param {ReadonlyQuat} a quat to rotate\n * @param {number} rad angle (in radians) to rotate\n * @returns {quat} out\n */\n\nexport function rotateZ(out, a, rad) {\n  rad *= 0.5;\n  var ax = a[0],\n      ay = a[1],\n      az = a[2],\n      aw = a[3];\n  var bz = Math.sin(rad),\n      bw = Math.cos(rad);\n  out[0] = ax * bw + ay * bz;\n  out[1] = ay * bw - ax * bz;\n  out[2] = az * bw + aw * bz;\n  out[3] = aw * bw - az * bz;\n  return out;\n}\n/**\n * Calculates the W component of a quat from the X, Y, and Z components.\n * Assumes that quaternion is 1 unit in length.\n * Any existing W component will be ignored.\n *\n * @param {quat} out the receiving quaternion\n * @param {ReadonlyQuat} a quat to calculate W component of\n * @returns {quat} out\n */\n\nexport function calculateW(out, a) {\n  var x = a[0],\n      y = a[1],\n      z = a[2];\n  out[0] = x;\n  out[1] = y;\n  out[2] = z;\n  out[3] = Math.sqrt(Math.abs(1.0 - x * x - y * y - z * z));\n  return out;\n}\n/**\n * Calculate the exponential of a unit quaternion.\n *\n * @param {quat} out the receiving quaternion\n * @param {ReadonlyQuat} a quat to calculate the exponential of\n * @returns {quat} out\n */\n\nexport function exp(out, a) {\n  var x = a[0],\n      y = a[1],\n      z = a[2],\n      w = a[3];\n  var r = Math.sqrt(x * x + y * y + z * z);\n  var et = Math.exp(w);\n  var s = r > 0 ? et * Math.sin(r) / r : 0;\n  out[0] = x * s;\n  out[1] = y * s;\n  out[2] = z * s;\n  out[3] = et * Math.cos(r);\n  return out;\n}\n/**\n * Calculate the natural logarithm of a unit quaternion.\n *\n * @param {quat} out the receiving quaternion\n * @param {ReadonlyQuat} a quat to calculate the exponential of\n * @returns {quat} out\n */\n\nexport function ln(out, a) {\n  var x = a[0],\n      y = a[1],\n      z = a[2],\n      w = a[3];\n  var r = Math.sqrt(x * x + y * y + z * z);\n  var t = r > 0 ? Math.atan2(r, w) / r : 0;\n  out[0] = x * t;\n  out[1] = y * t;\n  out[2] = z * t;\n  out[3] = 0.5 * Math.log(x * x + y * y + z * z + w * w);\n  return out;\n}\n/**\n * Calculate the scalar power of a unit quaternion.\n *\n * @param {quat} out the receiving quaternion\n * @param {ReadonlyQuat} a quat to calculate the exponential of\n * @param {Number} b amount to scale the quaternion by\n * @returns {quat} out\n */\n\nexport function pow(out, a, b) {\n  ln(out, a);\n  scale(out, out, b);\n  exp(out, out);\n  return out;\n}\n/**\n * Performs a spherical linear interpolation between two quat\n *\n * @param {quat} out the receiving quaternion\n * @param {ReadonlyQuat} a the first operand\n * @param {ReadonlyQuat} b the second operand\n * @param {Number} t interpolation amount, in the range [0-1], between the two inputs\n * @returns {quat} out\n */\n\nexport function slerp(out, a, b, t) {\n  // benchmarks:\n  //    http://jsperf.com/quaternion-slerp-implementations\n  var ax = a[0],\n      ay = a[1],\n      az = a[2],\n      aw = a[3];\n  var bx = b[0],\n      by = b[1],\n      bz = b[2],\n      bw = b[3];\n  var omega, cosom, sinom, scale0, scale1; // calc cosine\n\n  cosom = ax * bx + ay * by + az * bz + aw * bw; // adjust signs (if necessary)\n\n  if (cosom < 0.0) {\n    cosom = -cosom;\n    bx = -bx;\n    by = -by;\n    bz = -bz;\n    bw = -bw;\n  } // calculate coefficients\n\n\n  if (1.0 - cosom > glMatrix.EPSILON) {\n    // standard case (slerp)\n    omega = Math.acos(cosom);\n    sinom = Math.sin(omega);\n    scale0 = Math.sin((1.0 - t) * omega) / sinom;\n    scale1 = Math.sin(t * omega) / sinom;\n  } else {\n    // \"from\" and \"to\" quaternions are very close\n    //  ... so we can do a linear interpolation\n    scale0 = 1.0 - t;\n    scale1 = t;\n  } // calculate final values\n\n\n  out[0] = scale0 * ax + scale1 * bx;\n  out[1] = scale0 * ay + scale1 * by;\n  out[2] = scale0 * az + scale1 * bz;\n  out[3] = scale0 * aw + scale1 * bw;\n  return out;\n}\n/**\n * Generates a random unit quaternion\n *\n * @param {quat} out the receiving quaternion\n * @returns {quat} out\n */\n\nexport function random(out) {\n  // Implementation of http://planning.cs.uiuc.edu/node198.html\n  // TODO: Calling random 3 times is probably not the fastest solution\n  var u1 = glMatrix.RANDOM();\n  var u2 = glMatrix.RANDOM();\n  var u3 = glMatrix.RANDOM();\n  var sqrt1MinusU1 = Math.sqrt(1 - u1);\n  var sqrtU1 = Math.sqrt(u1);\n  out[0] = sqrt1MinusU1 * Math.sin(2.0 * Math.PI * u2);\n  out[1] = sqrt1MinusU1 * Math.cos(2.0 * Math.PI * u2);\n  out[2] = sqrtU1 * Math.sin(2.0 * Math.PI * u3);\n  out[3] = sqrtU1 * Math.cos(2.0 * Math.PI * u3);\n  return out;\n}\n/**\n * Calculates the inverse of a quat\n *\n * @param {quat} out the receiving quaternion\n * @param {ReadonlyQuat} a quat to calculate inverse of\n * @returns {quat} out\n */\n\nexport function invert(out, a) {\n  var a0 = a[0],\n      a1 = a[1],\n      a2 = a[2],\n      a3 = a[3];\n  var dot = a0 * a0 + a1 * a1 + a2 * a2 + a3 * a3;\n  var invDot = dot ? 1.0 / dot : 0; // TODO: Would be faster to return [0,0,0,0] immediately if dot == 0\n\n  out[0] = -a0 * invDot;\n  out[1] = -a1 * invDot;\n  out[2] = -a2 * invDot;\n  out[3] = a3 * invDot;\n  return out;\n}\n/**\n * Calculates the conjugate of a quat\n * If the quaternion is normalized, this function is faster than quat.inverse and produces the same result.\n *\n * @param {quat} out the receiving quaternion\n * @param {ReadonlyQuat} a quat to calculate conjugate of\n * @returns {quat} out\n */\n\nexport function conjugate(out, a) {\n  out[0] = -a[0];\n  out[1] = -a[1];\n  out[2] = -a[2];\n  out[3] = a[3];\n  return out;\n}\n/**\n * Creates a quaternion from the given 3x3 rotation matrix.\n *\n * NOTE: The resultant quaternion is not normalized, so you should be sure\n * to renormalize the quaternion yourself where necessary.\n *\n * @param {quat} out the receiving quaternion\n * @param {ReadonlyMat3} m rotation matrix\n * @returns {quat} out\n * @function\n */\n\nexport function fromMat3(out, m) {\n  // Algorithm in Ken Shoemake's article in 1987 SIGGRAPH course notes\n  // article \"Quaternion Calculus and Fast Animation\".\n  var fTrace = m[0] + m[4] + m[8];\n  var fRoot;\n\n  if (fTrace > 0.0) {\n    // |w| > 1/2, may as well choose w > 1/2\n    fRoot = Math.sqrt(fTrace + 1.0); // 2w\n\n    out[3] = 0.5 * fRoot;\n    fRoot = 0.5 / fRoot; // 1/(4w)\n\n    out[0] = (m[5] - m[7]) * fRoot;\n    out[1] = (m[6] - m[2]) * fRoot;\n    out[2] = (m[1] - m[3]) * fRoot;\n  } else {\n    // |w| <= 1/2\n    var i = 0;\n    if (m[4] > m[0]) i = 1;\n    if (m[8] > m[i * 3 + i]) i = 2;\n    var j = (i + 1) % 3;\n    var k = (i + 2) % 3;\n    fRoot = Math.sqrt(m[i * 3 + i] - m[j * 3 + j] - m[k * 3 + k] + 1.0);\n    out[i] = 0.5 * fRoot;\n    fRoot = 0.5 / fRoot;\n    out[3] = (m[j * 3 + k] - m[k * 3 + j]) * fRoot;\n    out[j] = (m[j * 3 + i] + m[i * 3 + j]) * fRoot;\n    out[k] = (m[k * 3 + i] + m[i * 3 + k]) * fRoot;\n  }\n\n  return out;\n}\n/**\n * Creates a quaternion from the given euler angle x, y, z.\n *\n * @param {quat} out the receiving quaternion\n * @param {x} Angle to rotate around X axis in degrees.\n * @param {y} Angle to rotate around Y axis in degrees.\n * @param {z} Angle to rotate around Z axis in degrees.\n * @returns {quat} out\n * @function\n */\n\nexport function fromEuler(out, x, y, z) {\n  var halfToRad = 0.5 * Math.PI / 180.0;\n  x *= halfToRad;\n  y *= halfToRad;\n  z *= halfToRad;\n  var sx = Math.sin(x);\n  var cx = Math.cos(x);\n  var sy = Math.sin(y);\n  var cy = Math.cos(y);\n  var sz = Math.sin(z);\n  var cz = Math.cos(z);\n  out[0] = sx * cy * cz - cx * sy * sz;\n  out[1] = cx * sy * cz + sx * cy * sz;\n  out[2] = cx * cy * sz - sx * sy * cz;\n  out[3] = cx * cy * cz + sx * sy * sz;\n  return out;\n}\n/**\n * Returns a string representation of a quatenion\n *\n * @param {ReadonlyQuat} a vector to represent as a string\n * @returns {String} string representation of the vector\n */\n\nexport function str(a) {\n  return \"quat(\" + a[0] + \", \" + a[1] + \", \" + a[2] + \", \" + a[3] + \")\";\n}\n/**\n * Creates a new quat initialized with values from an existing quaternion\n *\n * @param {ReadonlyQuat} a quaternion to clone\n * @returns {quat} a new quaternion\n * @function\n */\n\nexport var clone = vec4.clone;\n/**\n * Creates a new quat initialized with the given values\n *\n * @param {Number} x X component\n * @param {Number} y Y component\n * @param {Number} z Z component\n * @param {Number} w W component\n * @returns {quat} a new quaternion\n * @function\n */\n\nexport var fromValues = vec4.fromValues;\n/**\n * Copy the values from one quat to another\n *\n * @param {quat} out the receiving quaternion\n * @param {ReadonlyQuat} a the source quaternion\n * @returns {quat} out\n * @function\n */\n\nexport var copy = vec4.copy;\n/**\n * Set the components of a quat to the given values\n *\n * @param {quat} out the receiving quaternion\n * @param {Number} x X component\n * @param {Number} y Y component\n * @param {Number} z Z component\n * @param {Number} w W component\n * @returns {quat} out\n * @function\n */\n\nexport var set = vec4.set;\n/**\n * Adds two quat's\n *\n * @param {quat} out the receiving quaternion\n * @param {ReadonlyQuat} a the first operand\n * @param {ReadonlyQuat} b the second operand\n * @returns {quat} out\n * @function\n */\n\nexport var add = vec4.add;\n/**\n * Alias for {@link quat.multiply}\n * @function\n */\n\nexport var mul = multiply;\n/**\n * Scales a quat by a scalar number\n *\n * @param {quat} out the receiving vector\n * @param {ReadonlyQuat} a the vector to scale\n * @param {Number} b amount to scale the vector by\n * @returns {quat} out\n * @function\n */\n\nexport var scale = vec4.scale;\n/**\n * Calculates the dot product of two quat's\n *\n * @param {ReadonlyQuat} a the first operand\n * @param {ReadonlyQuat} b the second operand\n * @returns {Number} dot product of a and b\n * @function\n */\n\nexport var dot = vec4.dot;\n/**\n * Performs a linear interpolation between two quat's\n *\n * @param {quat} out the receiving quaternion\n * @param {ReadonlyQuat} a the first operand\n * @param {ReadonlyQuat} b the second operand\n * @param {Number} t interpolation amount, in the range [0-1], between the two inputs\n * @returns {quat} out\n * @function\n */\n\nexport var lerp = vec4.lerp;\n/**\n * Calculates the length of a quat\n *\n * @param {ReadonlyQuat} a vector to calculate length of\n * @returns {Number} length of a\n */\n\nexport var length = vec4.length;\n/**\n * Alias for {@link quat.length}\n * @function\n */\n\nexport var len = length;\n/**\n * Calculates the squared length of a quat\n *\n * @param {ReadonlyQuat} a vector to calculate squared length of\n * @returns {Number} squared length of a\n * @function\n */\n\nexport var squaredLength = vec4.squaredLength;\n/**\n * Alias for {@link quat.squaredLength}\n * @function\n */\n\nexport var sqrLen = squaredLength;\n/**\n * Normalize a quat\n *\n * @param {quat} out the receiving quaternion\n * @param {ReadonlyQuat} a quaternion to normalize\n * @returns {quat} out\n * @function\n */\n\nexport var normalize = vec4.normalize;\n/**\n * Returns whether or not the quaternions have exactly the same elements in the same position (when compared with ===)\n *\n * @param {ReadonlyQuat} a The first quaternion.\n * @param {ReadonlyQuat} b The second quaternion.\n * @returns {Boolean} True if the vectors are equal, false otherwise.\n */\n\nexport var exactEquals = vec4.exactEquals;\n/**\n * Returns whether or not the quaternions have approximately the same elements in the same position.\n *\n * @param {ReadonlyQuat} a The first vector.\n * @param {ReadonlyQuat} b The second vector.\n * @returns {Boolean} True if the vectors are equal, false otherwise.\n */\n\nexport var equals = vec4.equals;\n/**\n * Sets a quaternion to represent the shortest rotation from one\n * vector to another.\n *\n * Both vectors are assumed to be unit length.\n *\n * @param {quat} out the receiving quaternion.\n * @param {ReadonlyVec3} a the initial vector\n * @param {ReadonlyVec3} b the destination vector\n * @returns {quat} out\n */\n\nexport var rotationTo = function () {\n  var tmpvec3 = vec3.create();\n  var xUnitVec3 = vec3.fromValues(1, 0, 0);\n  var yUnitVec3 = vec3.fromValues(0, 1, 0);\n  return function (out, a, b) {\n    var dot = vec3.dot(a, b);\n\n    if (dot < -0.999999) {\n      vec3.cross(tmpvec3, xUnitVec3, a);\n      if (vec3.len(tmpvec3) < 0.000001) vec3.cross(tmpvec3, yUnitVec3, a);\n      vec3.normalize(tmpvec3, tmpvec3);\n      setAxisAngle(out, tmpvec3, Math.PI);\n      return out;\n    } else if (dot > 0.999999) {\n      out[0] = 0;\n      out[1] = 0;\n      out[2] = 0;\n      out[3] = 1;\n      return out;\n    } else {\n      vec3.cross(tmpvec3, a, b);\n      out[0] = tmpvec3[0];\n      out[1] = tmpvec3[1];\n      out[2] = tmpvec3[2];\n      out[3] = 1 + dot;\n      return normalize(out, out);\n    }\n  };\n}();\n/**\n * Performs a spherical linear interpolation with two control points\n *\n * @param {quat} out the receiving quaternion\n * @param {ReadonlyQuat} a the first operand\n * @param {ReadonlyQuat} b the second operand\n * @param {ReadonlyQuat} c the third operand\n * @param {ReadonlyQuat} d the fourth operand\n * @param {Number} t interpolation amount, in the range [0-1], between the two inputs\n * @returns {quat} out\n */\n\nexport var sqlerp = function () {\n  var temp1 = create();\n  var temp2 = create();\n  return function (out, a, b, c, d, t) {\n    slerp(temp1, a, d, t);\n    slerp(temp2, b, c, t);\n    slerp(out, temp1, temp2, 2 * t * (1 - t));\n    return out;\n  };\n}();\n/**\n * Sets the specified quaternion with values corresponding to the given\n * axes. Each axis is a vec3 and is expected to be unit length and\n * perpendicular to all other specified axes.\n *\n * @param {ReadonlyVec3} view  the vector representing the viewing direction\n * @param {ReadonlyVec3} right the vector representing the local \"right\" direction\n * @param {ReadonlyVec3} up    the vector representing the local \"up\" direction\n * @returns {quat} out\n */\n\nexport var setAxes = function () {\n  var matr = mat3.create();\n  return function (out, view, right, up) {\n    matr[0] = right[0];\n    matr[3] = right[1];\n    matr[6] = right[2];\n    matr[1] = up[0];\n    matr[4] = up[1];\n    matr[7] = up[2];\n    matr[2] = -view[0];\n    matr[5] = -view[1];\n    matr[8] = -view[2];\n    return normalize(out, fromMat3(out, matr));\n  };\n}();","import MathArray from './base/math-array';\nimport { checkNumber, checkVector } from '../lib/validators';\nimport Vector4 from './vector4';\nimport * as quat from 'gl-matrix/quat';\nimport * as vec4 from 'gl-matrix/vec4';\nconst IDENTITY_QUATERNION = [0, 0, 0, 1];\nexport default class Quaternion extends MathArray {\n  constructor(x = 0, y = 0, z = 0, w = 1) {\n    super(-0, -0, -0, -0);\n\n    if (Array.isArray(x) && arguments.length === 1) {\n      this.copy(x);\n    } else {\n      this.set(x, y, z, w);\n    }\n  }\n\n  copy(array) {\n    this[0] = array[0];\n    this[1] = array[1];\n    this[2] = array[2];\n    this[3] = array[3];\n    return this.check();\n  }\n\n  set(x, y, z, w) {\n    this[0] = x;\n    this[1] = y;\n    this[2] = z;\n    this[3] = w;\n    return this.check();\n  }\n\n  fromObject(object) {\n    this[0] = object.x;\n    this[1] = object.y;\n    this[2] = object.z;\n    this[3] = object.w;\n    return this.check();\n  }\n\n  fromMatrix3(m) {\n    quat.fromMat3(this, m);\n    return this.check();\n  }\n\n  fromAxisRotation(axis, rad) {\n    quat.setAxisAngle(this, axis, rad);\n    return this.check();\n  }\n\n  identity() {\n    quat.identity(this);\n    return this.check();\n  }\n\n  setAxisAngle(axis, rad) {\n    return this.fromAxisRotation(axis, rad);\n  }\n\n  get ELEMENTS() {\n    return 4;\n  }\n\n  get x() {\n    return this[0];\n  }\n\n  set x(value) {\n    this[0] = checkNumber(value);\n  }\n\n  get y() {\n    return this[1];\n  }\n\n  set y(value) {\n    this[1] = checkNumber(value);\n  }\n\n  get z() {\n    return this[2];\n  }\n\n  set z(value) {\n    this[2] = checkNumber(value);\n  }\n\n  get w() {\n    return this[3];\n  }\n\n  set w(value) {\n    this[3] = checkNumber(value);\n  }\n\n  len() {\n    return quat.length(this);\n  }\n\n  lengthSquared() {\n    return quat.squaredLength(this);\n  }\n\n  dot(a) {\n    return quat.dot(this, a);\n  }\n\n  rotationTo(vectorA, vectorB) {\n    quat.rotationTo(this, vectorA, vectorB);\n    return this.check();\n  }\n\n  add(a) {\n    quat.add(this, this, a);\n    return this.check();\n  }\n\n  calculateW() {\n    quat.calculateW(this, this);\n    return this.check();\n  }\n\n  conjugate() {\n    quat.conjugate(this, this);\n    return this.check();\n  }\n\n  invert() {\n    quat.invert(this, this);\n    return this.check();\n  }\n\n  lerp(a, b, t) {\n    if (t === undefined) {\n      return this.lerp(this, a, b);\n    }\n\n    quat.lerp(this, a, b, t);\n    return this.check();\n  }\n\n  multiplyRight(a) {\n    quat.multiply(this, this, a);\n    return this.check();\n  }\n\n  multiplyLeft(a) {\n    quat.multiply(this, a, this);\n    return this.check();\n  }\n\n  normalize() {\n    const length = this.len();\n    const l = length > 0 ? 1 / length : 0;\n    this[0] = this[0] * l;\n    this[1] = this[1] * l;\n    this[2] = this[2] * l;\n    this[3] = this[3] * l;\n\n    if (length === 0) {\n      this[3] = 1;\n    }\n\n    return this.check();\n  }\n\n  rotateX(rad) {\n    quat.rotateX(this, this, rad);\n    return this.check();\n  }\n\n  rotateY(rad) {\n    quat.rotateY(this, this, rad);\n    return this.check();\n  }\n\n  rotateZ(rad) {\n    quat.rotateZ(this, this, rad);\n    return this.check();\n  }\n\n  scale(b) {\n    quat.scale(this, this, b);\n    return this.check();\n  }\n\n  slerp(arg0, arg1, arg2) {\n    let start;\n    let target;\n    let ratio;\n\n    switch (arguments.length) {\n      case 1:\n        ({\n          start = IDENTITY_QUATERNION,\n          target,\n          ratio\n        } = arg0);\n        break;\n\n      case 2:\n        start = this;\n        target = arg0;\n        ratio = arg1;\n        break;\n\n      default:\n        start = arg0;\n        target = arg1;\n        ratio = arg2;\n    }\n\n    quat.slerp(this, start, target, ratio);\n    return this.check();\n  }\n\n  transformVector4(vector, result = new Vector4()) {\n    vec4.transformQuat(result, vector, this);\n    return checkVector(result, 4);\n  }\n\n  lengthSq() {\n    return this.lengthSquared();\n  }\n\n  setFromAxisAngle(axis, rad) {\n    return this.setAxisAngle(axis, rad);\n  }\n\n  premultiply(a) {\n    return this.multiplyLeft(a);\n  }\n\n  multiply(a) {\n    return this.multiplyRight(a);\n  }\n\n}\n//# sourceMappingURL=quaternion.js.map","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport Vector3 from './vector3';\nimport { formatValue, equals, config } from '../lib/common';\nimport { degrees, radians, clamp } from '../lib/common';\nimport * as vec3 from 'gl-matrix/vec3';\nconst EPSILON = 0.000001;\nconst EARTH_RADIUS_METERS = 6371000;\nexport default class SphericalCoordinates {\n  constructor({\n    phi = 0,\n    theta = 0,\n    radius = 1,\n    bearing,\n    pitch,\n    altitude,\n    radiusScale = EARTH_RADIUS_METERS\n  } = {}) {\n    _defineProperty(this, \"phi\", void 0);\n\n    _defineProperty(this, \"theta\", void 0);\n\n    _defineProperty(this, \"radius\", void 0);\n\n    _defineProperty(this, \"radiusScale\", void 0);\n\n    this.phi = phi;\n    this.theta = theta;\n    this.radius = radius || altitude || 1;\n    this.radiusScale = radiusScale || 1;\n\n    if (bearing !== undefined) {\n      this.bearing = bearing;\n    }\n\n    if (pitch !== undefined) {\n      this.pitch = pitch;\n    }\n\n    this.check();\n  }\n\n  toString() {\n    return this.formatString(config);\n  }\n\n  formatString({\n    printTypes = false\n  }) {\n    const f = formatValue;\n    return \"\".concat(printTypes ? 'Spherical' : '', \"[rho:\").concat(f(this.radius), \",theta:\").concat(f(this.theta), \",phi:\").concat(f(this.phi), \"]\");\n  }\n\n  equals(other) {\n    return equals(this.radius, other.radius) && equals(this.theta, other.theta) && equals(this.phi, other.phi);\n  }\n\n  exactEquals(other) {\n    return this.radius === other.radius && this.theta === other.theta && this.phi === other.phi;\n  }\n\n  get bearing() {\n    return 180 - degrees(this.phi);\n  }\n\n  set bearing(v) {\n    this.phi = Math.PI - radians(v);\n  }\n\n  get pitch() {\n    return degrees(this.theta);\n  }\n\n  set pitch(v) {\n    this.theta = radians(v);\n  }\n\n  get longitude() {\n    return degrees(this.phi);\n  }\n\n  get latitude() {\n    return degrees(this.theta);\n  }\n\n  get lng() {\n    return degrees(this.phi);\n  }\n\n  get lat() {\n    return degrees(this.theta);\n  }\n\n  get z() {\n    return (this.radius - 1) * this.radiusScale;\n  }\n\n  set(radius, phi, theta) {\n    this.radius = radius;\n    this.phi = phi;\n    this.theta = theta;\n    return this.check();\n  }\n\n  clone() {\n    return new SphericalCoordinates().copy(this);\n  }\n\n  copy(other) {\n    this.radius = other.radius;\n    this.phi = other.phi;\n    this.theta = other.theta;\n    return this.check();\n  }\n\n  fromLngLatZ([lng, lat, z]) {\n    this.radius = 1 + z / this.radiusScale;\n    this.phi = radians(lat);\n    this.theta = radians(lng);\n    return this.check();\n  }\n\n  fromVector3(v) {\n    this.radius = vec3.length(v);\n\n    if (this.radius > 0) {\n      this.theta = Math.atan2(v[0], v[1]);\n      this.phi = Math.acos(clamp(v[2] / this.radius, -1, 1));\n    }\n\n    return this.check();\n  }\n\n  toVector3() {\n    return new Vector3(0, 0, this.radius).rotateX({\n      radians: this.theta\n    }).rotateZ({\n      radians: this.phi\n    });\n  }\n\n  makeSafe() {\n    this.phi = Math.max(EPSILON, Math.min(Math.PI - EPSILON, this.phi));\n    return this;\n  }\n\n  check() {\n    if (!Number.isFinite(this.phi) || !Number.isFinite(this.theta) || !(this.radius > 0)) {\n      throw new Error('SphericalCoordinates: some fields set to invalid numbers');\n    }\n\n    return this;\n  }\n\n}\n//# sourceMappingURL=spherical-coordinates.js.map","import Vector from './base/vector';\nimport { config, isArray } from '../lib/common';\nimport { checkNumber } from '../lib/validators';\nimport * as vec2 from 'gl-matrix/vec2';\nimport { vec2_transformMat4AsVector } from '../lib/gl-matrix-extras';\nexport default class Vector2 extends Vector {\n  constructor(x = 0, y = 0) {\n    super(2);\n\n    if (isArray(x) && arguments.length === 1) {\n      this.copy(x);\n    } else {\n      if (config.debug) {\n        checkNumber(x);\n        checkNumber(y);\n      }\n\n      this[0] = x;\n      this[1] = y;\n    }\n  }\n\n  set(x, y) {\n    this[0] = x;\n    this[1] = y;\n    return this.check();\n  }\n\n  copy(array) {\n    this[0] = array[0];\n    this[1] = array[1];\n    return this.check();\n  }\n\n  fromObject(object) {\n    if (config.debug) {\n      checkNumber(object.x);\n      checkNumber(object.y);\n    }\n\n    this[0] = object.x;\n    this[1] = object.y;\n    return this.check();\n  }\n\n  toObject(object) {\n    object.x = this[0];\n    object.y = this[1];\n    return object;\n  }\n\n  get ELEMENTS() {\n    return 2;\n  }\n\n  horizontalAngle() {\n    return Math.atan2(this.y, this.x);\n  }\n\n  verticalAngle() {\n    return Math.atan2(this.x, this.y);\n  }\n\n  transform(matrix4) {\n    return this.transformAsPoint(matrix4);\n  }\n\n  transformAsPoint(matrix4) {\n    vec2.transformMat4(this, this, matrix4);\n    return this.check();\n  }\n\n  transformAsVector(matrix4) {\n    vec2_transformMat4AsVector(this, this, matrix4);\n    return this.check();\n  }\n\n  transformByMatrix3(matrix3) {\n    vec2.transformMat3(this, this, matrix3);\n    return this.check();\n  }\n\n  transformByMatrix2x3(matrix2x3) {\n    vec2.transformMat2d(this, this, matrix2x3);\n    return this.check();\n  }\n\n  transformByMatrix2(matrix2) {\n    vec2.transformMat2(this, this, matrix2);\n    return this.check();\n  }\n\n}\n//# sourceMappingURL=vector2.js.map","import Vector from './base/vector';\nimport { config, isArray } from '../lib/common';\nimport { checkNumber } from '../lib/validators';\nimport * as vec3 from 'gl-matrix/vec3';\nimport { vec3_transformMat2, vec3_transformMat4AsVector } from '../lib/gl-matrix-extras';\nconst ORIGIN = [0, 0, 0];\nlet ZERO;\nexport default class Vector3 extends Vector {\n  static get ZERO() {\n    if (!ZERO) {\n      ZERO = new Vector3(0, 0, 0);\n      Object.freeze(ZERO);\n    }\n\n    return ZERO;\n  }\n\n  constructor(x = 0, y = 0, z = 0) {\n    super(-0, -0, -0);\n\n    if (arguments.length === 1 && isArray(x)) {\n      this.copy(x);\n    } else {\n      if (config.debug) {\n        checkNumber(x);\n        checkNumber(y);\n        checkNumber(z);\n      }\n\n      this[0] = x;\n      this[1] = y;\n      this[2] = z;\n    }\n  }\n\n  set(x, y, z) {\n    this[0] = x;\n    this[1] = y;\n    this[2] = z;\n    return this.check();\n  }\n\n  copy(array) {\n    this[0] = array[0];\n    this[1] = array[1];\n    this[2] = array[2];\n    return this.check();\n  }\n\n  fromObject(object) {\n    if (config.debug) {\n      checkNumber(object.x);\n      checkNumber(object.y);\n      checkNumber(object.z);\n    }\n\n    this[0] = object.x;\n    this[1] = object.y;\n    this[2] = object.z;\n    return this.check();\n  }\n\n  toObject(object) {\n    object.x = this[0];\n    object.y = this[1];\n    object.z = this[2];\n    return object;\n  }\n\n  get ELEMENTS() {\n    return 3;\n  }\n\n  get z() {\n    return this[2];\n  }\n\n  set z(value) {\n    this[2] = checkNumber(value);\n  }\n\n  angle(vector) {\n    return vec3.angle(this, vector);\n  }\n\n  cross(vector) {\n    vec3.cross(this, this, vector);\n    return this.check();\n  }\n\n  rotateX({\n    radians,\n    origin = ORIGIN\n  }) {\n    vec3.rotateX(this, this, origin, radians);\n    return this.check();\n  }\n\n  rotateY({\n    radians,\n    origin = ORIGIN\n  }) {\n    vec3.rotateY(this, this, origin, radians);\n    return this.check();\n  }\n\n  rotateZ({\n    radians,\n    origin = ORIGIN\n  }) {\n    vec3.rotateZ(this, this, origin, radians);\n    return this.check();\n  }\n\n  transform(matrix4) {\n    return this.transformAsPoint(matrix4);\n  }\n\n  transformAsPoint(matrix4) {\n    vec3.transformMat4(this, this, matrix4);\n    return this.check();\n  }\n\n  transformAsVector(matrix4) {\n    vec3_transformMat4AsVector(this, this, matrix4);\n    return this.check();\n  }\n\n  transformByMatrix3(matrix3) {\n    vec3.transformMat3(this, this, matrix3);\n    return this.check();\n  }\n\n  transformByMatrix2(matrix2) {\n    vec3_transformMat2(this, this, matrix2);\n    return this.check();\n  }\n\n  transformByQuaternion(quaternion) {\n    vec3.transformQuat(this, this, quaternion);\n    return this.check();\n  }\n\n}\n//# sourceMappingURL=vector3.js.map","import Vector from './base/vector';\nimport { config, isArray } from '../lib/common';\nimport { checkNumber } from '../lib/validators';\nimport * as vec4 from 'gl-matrix/vec3';\nimport { vec4_transformMat2, vec4_transformMat3 } from '../lib/gl-matrix-extras';\nlet ZERO;\nexport default class Vector4 extends Vector {\n  static get ZERO() {\n    if (!ZERO) {\n      ZERO = new Vector4(0, 0, 0, 0);\n      Object.freeze(ZERO);\n    }\n\n    return ZERO;\n  }\n\n  constructor(x = 0, y = 0, z = 0, w = 0) {\n    super(-0, -0, -0, -0);\n\n    if (isArray(x) && arguments.length === 1) {\n      this.copy(x);\n    } else {\n      if (config.debug) {\n        checkNumber(x);\n        checkNumber(y);\n        checkNumber(z);\n        checkNumber(w);\n      }\n\n      this[0] = x;\n      this[1] = y;\n      this[2] = z;\n      this[3] = w;\n    }\n  }\n\n  set(x, y, z, w) {\n    this[0] = x;\n    this[1] = y;\n    this[2] = z;\n    this[3] = w;\n    return this.check();\n  }\n\n  copy(array) {\n    this[0] = array[0];\n    this[1] = array[1];\n    this[2] = array[2];\n    this[3] = array[3];\n    return this.check();\n  }\n\n  fromObject(object) {\n    if (config.debug) {\n      checkNumber(object.x);\n      checkNumber(object.y);\n      checkNumber(object.z);\n      checkNumber(object.w);\n    }\n\n    this[0] = object.x;\n    this[1] = object.y;\n    this[2] = object.z;\n    this[3] = object.w;\n    return this;\n  }\n\n  toObject(object) {\n    object.x = this[0];\n    object.y = this[1];\n    object.z = this[2];\n    object.w = this[3];\n    return object;\n  }\n\n  get ELEMENTS() {\n    return 4;\n  }\n\n  get z() {\n    return this[2];\n  }\n\n  set z(value) {\n    this[2] = checkNumber(value);\n  }\n\n  get w() {\n    return this[3];\n  }\n\n  set w(value) {\n    this[3] = checkNumber(value);\n  }\n\n  transform(matrix4) {\n    vec4.transformMat4(this, this, matrix4);\n    return this.check();\n  }\n\n  transformByMatrix3(matrix3) {\n    vec4_transformMat3(this, this, matrix3);\n    return this.check();\n  }\n\n  transformByMatrix2(matrix2) {\n    vec4_transformMat2(this, this, matrix2);\n    return this.check();\n  }\n\n  transformByQuaternion(quaternion) {\n    vec4.transformQuat(this, this, quaternion);\n    return this.check();\n  }\n\n  applyMatrix4(m) {\n    m.transform(this, this);\n    return this;\n  }\n\n}\n//# sourceMappingURL=vector4.js.map","export default function assert(condition, message) {\n  if (!condition) {\n    throw new Error(\"math.gl assertion \".concat(message));\n  }\n}\n//# sourceMappingURL=assert.js.map","import assert from './assert';\nconst RADIANS_TO_DEGREES = 1 / Math.PI * 180;\nconst DEGREES_TO_RADIANS = 1 / 180 * Math.PI;\nexport const config = {\n  EPSILON: 1e-12,\n  debug: false,\n  precision: 4,\n  printTypes: false,\n  printDegrees: false,\n  printRowMajor: true\n};\nexport function configure(options) {\n  for (const key in options) {\n    assert(key in config);\n    config[key] = options[key];\n  }\n\n  return config;\n}\nexport function formatValue(value, {\n  precision = config.precision\n} = {}) {\n  value = round(value);\n  return \"\".concat(parseFloat(value.toPrecision(precision)));\n}\nexport function isArray(value) {\n  return Array.isArray(value) || ArrayBuffer.isView(value) && !(value instanceof DataView);\n}\nexport function clone(array) {\n  return 'clone' in array ? array.clone() : array.slice();\n}\nexport function toRadians(degrees) {\n  return radians(degrees);\n}\nexport function toDegrees(radians) {\n  return degrees(radians);\n}\nexport function radians(degrees, result) {\n  return map(degrees, degrees => degrees * DEGREES_TO_RADIANS, result);\n}\nexport function degrees(radians, result) {\n  return map(radians, radians => radians * RADIANS_TO_DEGREES, result);\n}\nexport function sin(radians, result) {\n  return map(radians, angle => Math.sin(angle), result);\n}\nexport function cos(radians, result) {\n  return map(radians, angle => Math.cos(angle), result);\n}\nexport function tan(radians, result) {\n  return map(radians, angle => Math.tan(angle), result);\n}\nexport function asin(radians, result) {\n  return map(radians, angle => Math.asin(angle), result);\n}\nexport function acos(radians, result) {\n  return map(radians, angle => Math.acos(angle), result);\n}\nexport function atan(radians, result) {\n  return map(radians, angle => Math.atan(angle), result);\n}\nexport function clamp(value, min, max) {\n  return map(value, value => Math.max(min, Math.min(max, value)));\n}\nexport function lerp(a, b, t) {\n  if (isArray(a)) {\n    return a.map((ai, i) => lerp(ai, b[i], t));\n  }\n\n  return t * b + (1 - t) * a;\n}\nexport function equals(a, b, epsilon) {\n  const oldEpsilon = config.EPSILON;\n\n  if (epsilon) {\n    config.EPSILON = epsilon;\n  }\n\n  try {\n    if (a === b) {\n      return true;\n    }\n\n    if (isArray(a) && isArray(b)) {\n      if (a.length !== b.length) {\n        return false;\n      }\n\n      for (let i = 0; i < a.length; ++i) {\n        if (!equals(a[i], b[i])) {\n          return false;\n        }\n      }\n\n      return true;\n    }\n\n    if (a && a.equals) {\n      return a.equals(b);\n    }\n\n    if (b && b.equals) {\n      return b.equals(a);\n    }\n\n    if (typeof a === 'number' && typeof b === 'number') {\n      return Math.abs(a - b) <= config.EPSILON * Math.max(1, Math.abs(a), Math.abs(b));\n    }\n\n    return false;\n  } finally {\n    config.EPSILON = oldEpsilon;\n  }\n}\nexport function exactEquals(a, b) {\n  if (a === b) {\n    return true;\n  }\n\n  if (a && typeof a === 'object' && b && typeof b === 'object') {\n    if (a.constructor !== b.constructor) {\n      return false;\n    }\n\n    if (a.exactEquals) {\n      return a.exactEquals(b);\n    }\n  }\n\n  if (isArray(a) && isArray(b)) {\n    if (a.length !== b.length) {\n      return false;\n    }\n\n    for (let i = 0; i < a.length; ++i) {\n      if (!exactEquals(a[i], b[i])) {\n        return false;\n      }\n    }\n\n    return true;\n  }\n\n  return false;\n}\nexport function withEpsilon(epsilon, func) {\n  const oldPrecision = config.EPSILON;\n  config.EPSILON = epsilon;\n  let value;\n\n  try {\n    value = func();\n  } finally {\n    config.EPSILON = oldPrecision;\n  }\n\n  return value;\n}\n\nfunction round(value) {\n  return Math.round(value / config.EPSILON) * config.EPSILON;\n}\n\nfunction duplicateArray(array) {\n  return array.clone ? array.clone() : new Array(array.length);\n}\n\nfunction map(value, func, result) {\n  if (isArray(value)) {\n    const array = value;\n    result = result || duplicateArray(array);\n\n    for (let i = 0; i < result.length && i < array.length; ++i) {\n      result[i] = func(value[i], i, result);\n    }\n\n    return result;\n  }\n\n  return func(value);\n}\n//# sourceMappingURL=common.js.map","export function vec2_transformMat4AsVector(out, a, m) {\n  const x = a[0];\n  const y = a[1];\n  const w = m[3] * x + m[7] * y || 1.0;\n  out[0] = (m[0] * x + m[4] * y) / w;\n  out[1] = (m[1] * x + m[5] * y) / w;\n  return out;\n}\nexport function vec3_transformMat4AsVector(out, a, m) {\n  const x = a[0];\n  const y = a[1];\n  const z = a[2];\n  const w = m[3] * x + m[7] * y + m[11] * z || 1.0;\n  out[0] = (m[0] * x + m[4] * y + m[8] * z) / w;\n  out[1] = (m[1] * x + m[5] * y + m[9] * z) / w;\n  out[2] = (m[2] * x + m[6] * y + m[10] * z) / w;\n  return out;\n}\nexport function vec3_transformMat2(out, a, m) {\n  const x = a[0];\n  const y = a[1];\n  out[0] = m[0] * x + m[2] * y;\n  out[1] = m[1] * x + m[3] * y;\n  out[2] = a[2];\n  return out;\n}\nexport function vec4_transformMat2(out, a, m) {\n  const x = a[0];\n  const y = a[1];\n  out[0] = m[0] * x + m[2] * y;\n  out[1] = m[1] * x + m[3] * y;\n  out[2] = a[2];\n  out[3] = a[3];\n  return out;\n}\nexport function vec4_transformMat3(out, a, m) {\n  const x = a[0];\n  const y = a[1];\n  const z = a[2];\n  out[0] = m[0] * x + m[3] * y + m[6] * z;\n  out[1] = m[1] * x + m[4] * y + m[7] * z;\n  out[2] = m[2] * x + m[5] * y + m[8] * z;\n  out[3] = a[3];\n  return out;\n}\n//# sourceMappingURL=gl-matrix-extras.js.map","export default {\n  EPSILON1: 1e-1,\n  EPSILON2: 1e-2,\n  EPSILON3: 1e-3,\n  EPSILON4: 1e-4,\n  EPSILON5: 1e-5,\n  EPSILON6: 1e-6,\n  EPSILON7: 1e-7,\n  EPSILON8: 1e-8,\n  EPSILON9: 1e-9,\n  EPSILON10: 1e-10,\n  EPSILON11: 1e-11,\n  EPSILON12: 1e-12,\n  EPSILON13: 1e-13,\n  EPSILON14: 1e-14,\n  EPSILON15: 1e-15,\n  EPSILON16: 1e-16,\n  EPSILON17: 1e-17,\n  EPSILON18: 1e-18,\n  EPSILON19: 1e-19,\n  EPSILON20: 1e-20,\n  PI_OVER_TWO: Math.PI / 2,\n  PI_OVER_FOUR: Math.PI / 4,\n  PI_OVER_SIX: Math.PI / 6,\n  TWO_PI: Math.PI * 2\n};\n//# sourceMappingURL=math-utils.js.map","import { config } from './common';\nexport function validateVector(v, length) {\n  if (v.length !== length) {\n    return false;\n  }\n\n  for (let i = 0; i < v.length; ++i) {\n    if (!Number.isFinite(v[i])) {\n      return false;\n    }\n  }\n\n  return true;\n}\nexport function checkNumber(value) {\n  if (!Number.isFinite(value)) {\n    throw new Error(\"Invalid number \".concat(value));\n  }\n\n  return value;\n}\nexport function checkVector(v, length, callerName = '') {\n  if (config.debug && !validateVector(v, length)) {\n    throw new Error(\"math.gl: \".concat(callerName, \" some fields set to invalid numbers'\"));\n  }\n\n  return v;\n}\nconst map = {};\nexport function deprecated(method, version) {\n  if (!map[method]) {\n    map[method] = true;\n    console.warn(\"\".concat(method, \" has been removed in version \").concat(version, \", see upgrade guide for more information\"));\n  }\n}\n//# sourceMappingURL=validators.js.map","import { equals } from '@math.gl/core';\nexport const WINDING = {\n  CLOCKWISE: 1,\n  COUNTER_CLOCKWISE: -1\n};\nexport function modifyPolygonWindingDirection(points, direction, options = {}) {\n  const windingDirection = getPolygonWindingDirection(points, options);\n\n  if (windingDirection !== direction) {\n    reversePolygon(points, options);\n    return true;\n  }\n\n  return false;\n}\nexport function getPolygonWindingDirection(points, options = {}) {\n  return Math.sign(getPolygonSignedArea(points, options));\n}\nexport function getPolygonSignedArea(points, options = {}) {\n  const {\n    start = 0,\n    end = points.length\n  } = options;\n  const dim = options.size || 2;\n  let area = 0;\n\n  for (let i = start, j = end - dim; i < end; i += dim) {\n    area += (points[i] - points[j]) * (points[i + 1] + points[j + 1]);\n    j = i;\n  }\n\n  return area / 2;\n}\nexport function forEachSegmentInPolygon(points, visitor, options = {}) {\n  const {\n    start = 0,\n    end = points.length,\n    size = 2,\n    isClosed\n  } = options;\n  const numPoints = (end - start) / size;\n\n  for (let i = 0; i < numPoints - 1; ++i) {\n    visitor(points[start + i * size], points[start + i * size + 1], points[start + (i + 1) * size], points[start + (i + 1) * size + 1], i, i + 1);\n  }\n\n  const endPointIndex = start + (numPoints - 1) * size;\n  const isClosedEx = isClosed || equals(points[start], points[endPointIndex]) && equals(points[start + 1], points[endPointIndex + 1]);\n\n  if (!isClosedEx) {\n    visitor(points[endPointIndex], points[endPointIndex + 1], points[start], points[start + 1], numPoints - 1, 0);\n  }\n}\n\nfunction reversePolygon(points, options) {\n  const {\n    start = 0,\n    end = points.length,\n    size = 2\n  } = options;\n  const numPoints = (end - start) / size;\n  const numSwaps = Math.floor(numPoints / 2);\n\n  for (let i = 0; i < numSwaps; ++i) {\n    const b1 = start + i * size;\n    const b2 = start + (numPoints - 1 - i) * size;\n\n    for (let j = 0; j < size; ++j) {\n      const tmp = points[b1 + j];\n      points[b1 + j] = points[b2 + j];\n      points[b2 + j] = tmp;\n    }\n  }\n}\n\nexport function modifyPolygonWindingDirectionPoints(points, direction, options = {}) {\n  const currentDirection = getPolygonWindingDirectionPoints(points, options);\n\n  if (currentDirection !== direction) {\n    points.reverse();\n    return true;\n  }\n\n  return false;\n}\nexport function getPolygonWindingDirectionPoints(points, options = {}) {\n  return Math.sign(getPolygonSignedAreaPoints(points, options));\n}\nexport function getPolygonSignedAreaPoints(points, options = {}) {\n  const {\n    start = 0,\n    end = points.length\n  } = options;\n  let area = 0;\n\n  for (let i = start, j = end - 1; i < end; ++i) {\n    area += (points[i][0] - points[j][0]) * (points[i][1] + points[j][1]);\n    j = i;\n  }\n\n  return area / 2;\n}\nexport function forEachSegmentInPolygonPoints(points, visitor, options = {}) {\n  const {\n    start = 0,\n    end = points.length,\n    isClosed\n  } = options;\n\n  for (let i = start; i < end - 1; ++i) {\n    visitor(points[i], points[i + 1], i, i + 1);\n  }\n\n  const isClosedEx = isClosed || equals(points[end - 1], points[0]);\n\n  if (!isClosedEx) {\n    visitor(points[end - 1], points[0], end - 1, 0);\n  }\n}\n//# sourceMappingURL=polygon-utils.js.map","import { getPolygonSignedArea } from './polygon-utils';\nexport function earcut(positions, holeIndices, dim = 2, areas) {\n  const hasHoles = holeIndices && holeIndices.length;\n  const outerLen = hasHoles ? holeIndices[0] * dim : positions.length;\n  let outerNode = linkedList(positions, 0, outerLen, dim, true, areas && areas[0]);\n  const triangles = [];\n  if (!outerNode || outerNode.next === outerNode.prev) return triangles;\n  let invSize;\n  let maxX;\n  let maxY;\n  let minX;\n  let minY;\n  let x;\n  let y;\n  if (hasHoles) outerNode = eliminateHoles(positions, holeIndices, outerNode, dim, areas);\n\n  if (positions.length > 80 * dim) {\n    minX = maxX = positions[0];\n    minY = maxY = positions[1];\n\n    for (let i = dim; i < outerLen; i += dim) {\n      x = positions[i];\n      y = positions[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    invSize = Math.max(maxX - minX, maxY - minY);\n    invSize = invSize !== 0 ? 1 / invSize : 0;\n  }\n\n  earcutLinked(outerNode, triangles, dim, minX, minY, invSize);\n  return triangles;\n}\n\nfunction linkedList(data, start, end, dim, clockwise, area) {\n  let i;\n  let last;\n\n  if (area === undefined) {\n    area = getPolygonSignedArea(data, {\n      start,\n      end,\n      size: dim\n    });\n  }\n\n  if (clockwise === area < 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\nfunction filterPoints(start, end) {\n  if (!start) return start;\n  if (!end) end = start;\n  let p = start;\n  let again;\n\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    } else {\n      p = p.next;\n    }\n  } while (again || p !== end);\n\n  return end;\n}\n\nfunction earcutLinked(ear, triangles, dim, minX, minY, invSize, pass) {\n  if (!ear) return;\n  if (!pass && invSize) indexCurve(ear, minX, minY, invSize);\n  let stop = ear;\n  let prev;\n  let next;\n\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      triangles.push(prev.i / dim);\n      triangles.push(ear.i / dim);\n      triangles.push(next.i / dim);\n      removeNode(ear);\n      ear = next.next;\n      stop = next.next;\n      continue;\n    }\n\n    ear = next;\n\n    if (ear === stop) {\n      if (!pass) {\n        earcutLinked(filterPoints(ear), triangles, dim, minX, minY, invSize, 1);\n      } else if (pass === 1) {\n        ear = cureLocalIntersections(filterPoints(ear), triangles, dim);\n        earcutLinked(ear, triangles, dim, minX, minY, invSize, 2);\n      } else if (pass === 2) {\n        splitEarcut(ear, triangles, dim, minX, minY, invSize);\n      }\n\n      break;\n    }\n  }\n}\n\nfunction isEar(ear) {\n  const a = ear.prev;\n  const b = ear;\n  const c = ear.next;\n  if (area(a, b, c) >= 0) return false;\n  let p = ear.next.next;\n\n  while (p !== ear.prev) {\n    if (pointInTriangle(a.x, a.y, b.x, b.y, c.x, c.y, p.x, p.y) && 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  const a = ear.prev;\n  const b = ear;\n  const c = ear.next;\n  if (area(a, b, c) >= 0) return false;\n  const minTX = a.x < b.x ? a.x < c.x ? a.x : c.x : b.x < c.x ? b.x : c.x;\n  const minTY = a.y < b.y ? a.y < c.y ? a.y : c.y : b.y < c.y ? b.y : c.y;\n  const maxTX = a.x > b.x ? a.x > c.x ? a.x : c.x : b.x > c.x ? b.x : c.x;\n  const maxTY = a.y > b.y ? a.y > c.y ? a.y : c.y : b.y > c.y ? b.y : c.y;\n  const minZ = zOrder(minTX, minTY, minX, minY, invSize);\n  const maxZ = zOrder(maxTX, maxTY, minX, minY, invSize);\n  let p = ear.prevZ;\n  let n = ear.nextZ;\n\n  while (p && p.z >= minZ && n && n.z <= maxZ) {\n    if (p !== ear.prev && p !== ear.next && pointInTriangle(a.x, a.y, b.x, b.y, c.x, c.y, p.x, p.y) && area(p.prev, p, p.next) >= 0) return false;\n    p = p.prevZ;\n    if (n !== ear.prev && n !== ear.next && pointInTriangle(a.x, a.y, b.x, b.y, c.x, c.y, n.x, n.y) && area(n.prev, n, n.next) >= 0) return false;\n    n = n.nextZ;\n  }\n\n  while (p && p.z >= minZ) {\n    if (p !== ear.prev && p !== ear.next && pointInTriangle(a.x, a.y, b.x, b.y, c.x, c.y, p.x, p.y) && area(p.prev, p, p.next) >= 0) return false;\n    p = p.prevZ;\n  }\n\n  while (n && n.z <= maxZ) {\n    if (n !== ear.prev && n !== ear.next && pointInTriangle(a.x, a.y, b.x, b.y, c.x, c.y, n.x, n.y) && area(n.prev, n, n.next) >= 0) return false;\n    n = n.nextZ;\n  }\n\n  return true;\n}\n\nfunction cureLocalIntersections(start, triangles, dim) {\n  let p = start;\n\n  do {\n    const a = p.prev;\n    const b = p.next.next;\n\n    if (!equals(a, b) && intersects(a, p, p.next, b) && locallyInside(a, b) && locallyInside(b, a)) {\n      triangles.push(a.i / dim);\n      triangles.push(p.i / dim);\n      triangles.push(b.i / dim);\n      removeNode(p);\n      removeNode(p.next);\n      p = start = b;\n    }\n\n    p = p.next;\n  } while (p !== start);\n\n  return filterPoints(p);\n}\n\nfunction splitEarcut(start, triangles, dim, minX, minY, invSize) {\n  let a = start;\n\n  do {\n    let b = a.next.next;\n\n    while (b !== a.prev) {\n      if (a.i !== b.i && isValidDiagonal(a, b)) {\n        let c = splitPolygon(a, b);\n        a = filterPoints(a, a.next);\n        c = filterPoints(c, c.next);\n        earcutLinked(a, triangles, dim, minX, minY, invSize);\n        earcutLinked(c, triangles, dim, minX, minY, invSize);\n        return;\n      }\n\n      b = b.next;\n    }\n\n    a = a.next;\n  } while (a !== start);\n}\n\nfunction eliminateHoles(data, holeIndices, outerNode, dim, areas) {\n  const queue = [];\n  let i;\n  let len;\n  let start;\n  let end;\n  let 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, areas && areas[i + 1]);\n    if (list === list.next) list.steiner = true;\n    queue.push(getLeftmost(list));\n  }\n\n  queue.sort(compareX);\n\n  for (i = 0; i < queue.length; i++) {\n    eliminateHole(queue[i], outerNode);\n    outerNode = filterPoints(outerNode, outerNode.next);\n  }\n\n  return outerNode;\n}\n\nfunction compareX(a, b) {\n  return a.x - b.x;\n}\n\nfunction eliminateHole(hole, outerNode) {\n  outerNode = findHoleBridge(hole, outerNode);\n\n  if (outerNode) {\n    const b = splitPolygon(outerNode, hole);\n    filterPoints(outerNode, outerNode.next);\n    filterPoints(b, b.next);\n  }\n}\n\nfunction findHoleBridge(hole, outerNode) {\n  let p = outerNode;\n  const hx = hole.x;\n  const hy = hole.y;\n  let qx = -Infinity;\n  let m;\n\n  do {\n    if (hy <= p.y && hy >= p.next.y && p.next.y !== p.y) {\n      const x = p.x + (hy - p.y) * (p.next.x - p.x) / (p.next.y - p.y);\n\n      if (x <= hx && x > qx) {\n        qx = x;\n\n        if (x === hx) {\n          if (hy === p.y) return p;\n          if (hy === p.next.y) return p.next;\n        }\n\n        m = p.x < p.next.x ? p : p.next;\n      }\n    }\n\n    p = p.next;\n  } while (p !== outerNode);\n\n  if (!m) return null;\n  if (hx === qx) return m;\n  const stop = m;\n  const mx = m.x;\n  const my = m.y;\n  let tanMin = Infinity;\n  let tan;\n  p = m;\n\n  do {\n    if (hx >= p.x && p.x >= mx && hx !== p.x && pointInTriangle(hy < my ? hx : qx, hy, mx, my, hy < my ? qx : hx, hy, p.x, p.y)) {\n      tan = Math.abs(hy - p.y) / (hx - p.x);\n\n      if (locallyInside(p, hole) && (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\nfunction sectorContainsSector(m, p) {\n  return area(m.prev, m, p.prev) < 0 && area(p.next, m, m.next) < 0;\n}\n\nfunction indexCurve(start, minX, minY, invSize) {\n  let p = start;\n\n  do {\n    if (p.z === null) 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  sortLinked(p);\n}\n\nfunction sortLinked(list) {\n  let e;\n  let i;\n  let inSize = 1;\n  let numMerges;\n  let p;\n  let pSize;\n  let q;\n  let qSize;\n  let tail;\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\n      for (i = 0; i < inSize; i++) {\n        pSize++;\n        q = q.nextZ;\n        if (!q) break;\n      }\n\n      qSize = inSize;\n\n      while (pSize > 0 || qSize > 0 && q) {\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;else list = e;\n        e.prevZ = tail;\n        tail = e;\n      }\n\n      p = q;\n    }\n\n    tail.nextZ = null;\n    inSize *= 2;\n  } while (numMerges > 1);\n\n  return list;\n}\n\nfunction zOrder(x, y, minX, minY, invSize) {\n  x = 32767 * (x - minX) * invSize;\n  y = 32767 * (y - minY) * invSize;\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  y = (y | y << 8) & 0x00ff00ff;\n  y = (y | y << 4) & 0x0f0f0f0f;\n  y = (y | y << 2) & 0x33333333;\n  y = (y | y << 1) & 0x55555555;\n  return x | y << 1;\n}\n\nfunction getLeftmost(start) {\n  let p = start;\n  let leftmost = start;\n\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\nfunction pointInTriangle(ax, ay, bx, by, cx, cy, px, py) {\n  return (cx - px) * (ay - py) - (ax - px) * (cy - py) >= 0 && (ax - px) * (by - py) - (bx - px) * (ay - py) >= 0 && (bx - px) * (cy - py) - (cx - px) * (by - py) >= 0;\n}\n\nfunction isValidDiagonal(a, b) {\n  return a.next.i !== b.i && a.prev.i !== b.i && !intersectsPolygon(a, b) && (locallyInside(a, b) && locallyInside(b, a) && middleInside(a, b) && (area(a.prev, a, b.prev) || area(a, b.prev, b)) || equals(a, b) && area(a.prev, a, a.next) > 0 && area(b.prev, b, b.next) > 0);\n}\n\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\nfunction equals(p1, p2) {\n  return p1.x === p2.x && p1.y === p2.y;\n}\n\nfunction intersects(p1, q1, p2, q2) {\n  const o1 = sign(area(p1, q1, p2));\n  const o2 = sign(area(p1, q1, q2));\n  const o3 = sign(area(p2, q2, p1));\n  const o4 = sign(area(p2, q2, q1));\n  if (o1 !== o2 && o3 !== o4) return true;\n  if (o1 === 0 && onSegment(p1, p2, q1)) return true;\n  if (o2 === 0 && onSegment(p1, q2, q1)) return true;\n  if (o3 === 0 && onSegment(p2, p1, q2)) return true;\n  if (o4 === 0 && onSegment(p2, q1, q2)) return true;\n  return false;\n}\n\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\nfunction intersectsPolygon(a, b) {\n  let p = a;\n\n  do {\n    if (p.i !== a.i && p.next.i !== a.i && p.i !== b.i && p.next.i !== b.i && intersects(p, p.next, a, b)) return true;\n    p = p.next;\n  } while (p !== a);\n\n  return false;\n}\n\nfunction locallyInside(a, b) {\n  return area(a.prev, a, a.next) < 0 ? area(a, b, a.next) >= 0 && area(a, a.prev, b) >= 0 : area(a, b, a.prev) < 0 || area(a, a.next, b) < 0;\n}\n\nfunction middleInside(a, b) {\n  let p = a;\n  let inside = false;\n  const px = (a.x + b.x) / 2;\n  const py = (a.y + b.y) / 2;\n\n  do {\n    if (p.y > py !== p.next.y > py && p.next.y !== p.y && px < (p.next.x - p.x) * (py - p.y) / (p.next.y - p.y) + p.x) inside = !inside;\n    p = p.next;\n  } while (p !== a);\n\n  return inside;\n}\n\nfunction splitPolygon(a, b) {\n  const a2 = new Node(a.i, a.x, a.y);\n  const b2 = new Node(b.i, b.x, b.y);\n  const an = a.next;\n  const bp = b.prev;\n  a.next = b;\n  b.prev = a;\n  a2.next = an;\n  an.prev = a2;\n  b2.next = a2;\n  a2.prev = b2;\n  bp.next = b2;\n  b2.prev = bp;\n  return b2;\n}\n\nfunction insertNode(i, x, y, last) {\n  const p = new Node(i, x, y);\n\n  if (!last) {\n    p.prev = p;\n    p.next = p;\n  } else {\n    p.next = last.next;\n    p.prev = last;\n    last.next.prev = p;\n    last.next = p;\n  }\n\n  return p;\n}\n\nfunction removeNode(p) {\n  p.next.prev = p.prev;\n  p.prev.next = p.next;\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  this.i = i;\n  this.x = x;\n  this.y = y;\n  this.prev = null;\n  this.next = null;\n  this.z = null;\n  this.prevZ = null;\n  this.nextZ = null;\n  this.steiner = false;\n}\n//# sourceMappingURL=earcut.js.map","import { push, copy, getPointAtIndex } from './utils';\nexport function clipPolyline(positions, bbox, options) {\n  const {\n    size = 2,\n    startIndex = 0,\n    endIndex = positions.length\n  } = options || {};\n  const numPoints = (endIndex - startIndex) / size;\n  const result = [];\n  let part = [];\n  let a;\n  let b;\n  let codeA = -1;\n  let codeB;\n  let lastCode;\n\n  for (let i = 1; i < numPoints; i++) {\n    a = getPointAtIndex(positions, i - 1, size, startIndex, a);\n    b = getPointAtIndex(positions, i, size, startIndex, b);\n\n    if (codeA < 0) {\n      codeA = bitCode(a, bbox);\n    }\n\n    codeB = lastCode = bitCode(b, bbox);\n\n    while (true) {\n      if (!(codeA | codeB)) {\n        push(part, a);\n\n        if (codeB !== lastCode) {\n          push(part, b);\n\n          if (i < numPoints - 1) {\n            result.push(part);\n            part = [];\n          }\n        } else if (i === numPoints - 1) {\n          push(part, b);\n        }\n\n        break;\n      } else if (codeA & codeB) {\n        break;\n      } else if (codeA) {\n        intersect(a, b, codeA, bbox, a);\n        codeA = bitCode(a, bbox);\n      } else {\n        intersect(a, b, codeB, bbox, b);\n        codeB = bitCode(b, bbox);\n      }\n    }\n\n    codeA = lastCode;\n  }\n\n  if (part.length) result.push(part);\n  return result;\n}\nexport function clipPolygon(positions, bbox, options) {\n  const {\n    size = 2,\n    endIndex = positions.length\n  } = options || {};\n  let {\n    startIndex = 0\n  } = options || {};\n  let numPoints = (endIndex - startIndex) / size;\n  let result;\n  let p;\n  let prev;\n  let inside;\n  let prevInside;\n\n  for (let edge = 1; edge <= 8; edge *= 2) {\n    result = [];\n    prev = getPointAtIndex(positions, numPoints - 1, size, startIndex, prev);\n    prevInside = !(bitCode(prev, bbox) & edge);\n\n    for (let i = 0; i < numPoints; i++) {\n      p = getPointAtIndex(positions, i, size, startIndex, p);\n      inside = !(bitCode(p, bbox) & edge);\n      if (inside !== prevInside) push(result, intersect(prev, p, edge, bbox));\n      if (inside) push(result, p);\n      copy(prev, p);\n      prevInside = inside;\n    }\n\n    positions = result;\n    startIndex = 0;\n    numPoints = result.length / size;\n    if (!numPoints) break;\n  }\n\n  return result;\n}\nexport function intersect(a, b, edge, bbox, out = []) {\n  let t;\n  let snap;\n\n  if (edge & 8) {\n    t = (bbox[3] - a[1]) / (b[1] - a[1]);\n    snap = 3;\n  } else if (edge & 4) {\n    t = (bbox[1] - a[1]) / (b[1] - a[1]);\n    snap = 1;\n  } else if (edge & 2) {\n    t = (bbox[2] - a[0]) / (b[0] - a[0]);\n    snap = 2;\n  } else if (edge & 1) {\n    t = (bbox[0] - a[0]) / (b[0] - a[0]);\n    snap = 0;\n  } else {\n    return null;\n  }\n\n  for (let i = 0; i < a.length; i++) {\n    out[i] = (snap & 1) === i ? bbox[snap] : t * (b[i] - a[i]) + a[i];\n  }\n\n  return out;\n}\nexport function bitCode(p, bbox) {\n  let code = 0;\n  if (p[0] < bbox[0]) code |= 1;else if (p[0] > bbox[2]) code |= 2;\n  if (p[1] < bbox[1]) code |= 4;else if (p[1] > bbox[3]) code |= 8;\n  return code;\n}\n//# sourceMappingURL=lineclip.js.map","export function push(target, source) {\n  const size = source.length;\n  const startIndex = target.length;\n\n  if (startIndex > 0) {\n    let isDuplicate = true;\n\n    for (let i = 0; i < size; i++) {\n      if (target[startIndex - size + i] !== source[i]) {\n        isDuplicate = false;\n        break;\n      }\n    }\n\n    if (isDuplicate) {\n      return false;\n    }\n  }\n\n  for (let i = 0; i < size; i++) {\n    target[startIndex + i] = source[i];\n  }\n\n  return true;\n}\nexport function copy(target, source) {\n  const size = source.length;\n\n  for (let i = 0; i < size; i++) {\n    target[i] = source[i];\n  }\n}\nexport function getPointAtIndex(positions, index, size, offset, out = []) {\n  const startI = offset + index * size;\n\n  for (let i = 0; i < size; i++) {\n    out[i] = positions[startI + i];\n  }\n\n  return out;\n}\n//# sourceMappingURL=utils.js.map","import { bitCode, intersect } from './lineclip';\nimport { getPointAtIndex, copy, push } from './utils';\nexport function cutPolylineByGrid(positions, options) {\n  const {\n    size = 2,\n    broken = false,\n    gridResolution = 10,\n    gridOffset = [0, 0],\n    startIndex = 0,\n    endIndex = positions.length\n  } = options || {};\n  const numPoints = (endIndex - startIndex) / size;\n  let part = [];\n  const result = [part];\n  const a = getPointAtIndex(positions, 0, size, startIndex);\n  let b;\n  let codeB;\n  const cell = getGridCell(a, gridResolution, gridOffset, []);\n  const scratchPoint = [];\n  push(part, a);\n\n  for (let i = 1; i < numPoints; i++) {\n    b = getPointAtIndex(positions, i, size, startIndex, b);\n    codeB = bitCode(b, cell);\n\n    while (codeB) {\n      intersect(a, b, codeB, cell, scratchPoint);\n      const codeAlt = bitCode(scratchPoint, cell);\n\n      if (codeAlt) {\n        intersect(a, scratchPoint, codeAlt, cell, scratchPoint);\n        codeB = codeAlt;\n      }\n\n      push(part, scratchPoint);\n      copy(a, scratchPoint);\n      moveToNeighborCell(cell, gridResolution, codeB);\n\n      if (broken && part.length > size) {\n        part = [];\n        result.push(part);\n        push(part, a);\n      }\n\n      codeB = bitCode(b, cell);\n    }\n\n    push(part, b);\n    copy(a, b);\n  }\n\n  return broken ? result : result[0];\n}\nconst TYPE_INSIDE = 0;\nconst TYPE_BORDER = 1;\n\nfunction concatInPlace(arr1, arr2) {\n  for (let i = 0; i < arr2.length; i++) {\n    arr1.push(arr2[i]);\n  }\n\n  return arr1;\n}\n\nexport function cutPolygonByGrid(positions, holeIndices = null, options) {\n  if (!positions.length) {\n    return [];\n  }\n\n  const {\n    size = 2,\n    gridResolution = 10,\n    gridOffset = [0, 0],\n    edgeTypes = false\n  } = options || {};\n  const result = [];\n  const queue = [{\n    pos: positions,\n    types: edgeTypes ? new Array(positions.length / size).fill(TYPE_BORDER) : null,\n    holes: holeIndices || []\n  }];\n  const bbox = [[], []];\n  let cell = [];\n\n  while (queue.length) {\n    const {\n      pos,\n      types,\n      holes\n    } = queue.shift();\n    getBoundingBox(pos, size, holes[0] || pos.length, bbox);\n    cell = getGridCell(bbox[0], gridResolution, gridOffset, cell);\n    const code = bitCode(bbox[1], cell);\n\n    if (code) {\n      let parts = bisectPolygon(pos, types, size, 0, holes[0] || pos.length, cell, code);\n      const polygonLow = {\n        pos: parts[0].pos,\n        types: parts[0].types,\n        holes: []\n      };\n      const polygonHigh = {\n        pos: parts[1].pos,\n        types: parts[1].types,\n        holes: []\n      };\n      queue.push(polygonLow, polygonHigh);\n\n      for (let i = 0; i < holes.length; i++) {\n        parts = bisectPolygon(pos, types, size, holes[i], holes[i + 1] || pos.length, cell, code);\n\n        if (parts[0]) {\n          polygonLow.holes.push(polygonLow.pos.length);\n          polygonLow.pos = concatInPlace(polygonLow.pos, parts[0].pos);\n\n          if (edgeTypes) {\n            polygonLow.types = concatInPlace(polygonLow.types, parts[0].types);\n          }\n        }\n\n        if (parts[1]) {\n          polygonHigh.holes.push(polygonHigh.pos.length);\n          polygonHigh.pos = concatInPlace(polygonHigh.pos, parts[1].pos);\n\n          if (edgeTypes) {\n            polygonHigh.types = concatInPlace(polygonHigh.types, parts[1].types);\n          }\n        }\n      }\n    } else {\n      const polygon = {\n        positions: pos\n      };\n\n      if (edgeTypes) {\n        polygon.edgeTypes = types;\n      }\n\n      if (holes.length) {\n        polygon.holeIndices = holes;\n      }\n\n      result.push(polygon);\n    }\n  }\n\n  return result;\n}\n\nfunction bisectPolygon(positions, edgeTypes, size, startIndex, endIndex, bbox, edge) {\n  const numPoints = (endIndex - startIndex) / size;\n  const resultLow = [];\n  const resultHigh = [];\n  const typesLow = [];\n  const typesHigh = [];\n  const scratchPoint = [];\n  let p;\n  let side;\n  let type;\n  const prev = getPointAtIndex(positions, numPoints - 1, size, startIndex);\n  let prevSide = Math.sign(edge & 8 ? prev[1] - bbox[3] : prev[0] - bbox[2]);\n  let prevType = edgeTypes && edgeTypes[numPoints - 1];\n  let lowPointCount = 0;\n  let highPointCount = 0;\n\n  for (let i = 0; i < numPoints; i++) {\n    p = getPointAtIndex(positions, i, size, startIndex, p);\n    side = Math.sign(edge & 8 ? p[1] - bbox[3] : p[0] - bbox[2]);\n    type = edgeTypes && edgeTypes[startIndex / size + i];\n\n    if (side && prevSide && prevSide !== side) {\n      intersect(prev, p, edge, bbox, scratchPoint);\n      push(resultLow, scratchPoint) && typesLow.push(prevType);\n      push(resultHigh, scratchPoint) && typesHigh.push(prevType);\n    }\n\n    if (side <= 0) {\n      push(resultLow, p) && typesLow.push(type);\n      lowPointCount -= side;\n    } else if (typesLow.length) {\n      typesLow[typesLow.length - 1] = TYPE_INSIDE;\n    }\n\n    if (side >= 0) {\n      push(resultHigh, p) && typesHigh.push(type);\n      highPointCount += side;\n    } else if (typesHigh.length) {\n      typesHigh[typesHigh.length - 1] = TYPE_INSIDE;\n    }\n\n    copy(prev, p);\n    prevSide = side;\n    prevType = type;\n  }\n\n  return [lowPointCount ? {\n    pos: resultLow,\n    types: edgeTypes && typesLow\n  } : null, highPointCount ? {\n    pos: resultHigh,\n    types: edgeTypes && typesHigh\n  } : null];\n}\n\nfunction getGridCell(p, gridResolution, gridOffset, out) {\n  const left = Math.floor((p[0] - gridOffset[0]) / gridResolution) * gridResolution + gridOffset[0];\n  const bottom = Math.floor((p[1] - gridOffset[1]) / gridResolution) * gridResolution + gridOffset[1];\n  out[0] = left;\n  out[1] = bottom;\n  out[2] = left + gridResolution;\n  out[3] = bottom + gridResolution;\n  return out;\n}\n\nfunction moveToNeighborCell(cell, gridResolution, edge) {\n  if (edge & 8) {\n    cell[1] += gridResolution;\n    cell[3] += gridResolution;\n  } else if (edge & 4) {\n    cell[1] -= gridResolution;\n    cell[3] -= gridResolution;\n  } else if (edge & 2) {\n    cell[0] += gridResolution;\n    cell[2] += gridResolution;\n  } else if (edge & 1) {\n    cell[0] -= gridResolution;\n    cell[2] -= gridResolution;\n  }\n}\n\nfunction getBoundingBox(positions, size, endIndex, out) {\n  let minX = Infinity;\n  let maxX = -Infinity;\n  let minY = Infinity;\n  let maxY = -Infinity;\n\n  for (let i = 0; i < endIndex; i += size) {\n    const x = positions[i];\n    const y = positions[i + 1];\n    minX = x < minX ? x : minX;\n    maxX = x > maxX ? x : maxX;\n    minY = y < minY ? y : minY;\n    maxY = y > maxY ? y : maxY;\n  }\n\n  out[0][0] = minX;\n  out[0][1] = minY;\n  out[1][0] = maxX;\n  out[1][1] = maxY;\n  return out;\n}\n//# sourceMappingURL=cut-by-grid.js.map","import { cutPolylineByGrid, cutPolygonByGrid } from './cut-by-grid';\nimport { getPointAtIndex, push } from './utils';\nconst DEFAULT_MAX_LATITUDE = 85.051129;\nexport function cutPolylineByMercatorBounds(positions, options) {\n  const {\n    size = 2,\n    startIndex = 0,\n    endIndex = positions.length,\n    normalize = true\n  } = options || {};\n  const newPositions = positions.slice(startIndex, endIndex);\n  wrapLongitudesForShortestPath(newPositions, size, 0, endIndex - startIndex);\n  const parts = cutPolylineByGrid(newPositions, {\n    size,\n    broken: true,\n    gridResolution: 360,\n    gridOffset: [-180, -180]\n  });\n\n  if (normalize) {\n    for (const part of parts) {\n      shiftLongitudesIntoRange(part, size);\n    }\n  }\n\n  return parts;\n}\nexport function cutPolygonByMercatorBounds(positions, holeIndices = null, options) {\n  const {\n    size = 2,\n    normalize = true,\n    edgeTypes = false\n  } = options || {};\n  holeIndices = holeIndices || [];\n  const newPositions = [];\n  const newHoleIndices = [];\n  let srcStartIndex = 0;\n  let targetIndex = 0;\n\n  for (let ringIndex = 0; ringIndex <= holeIndices.length; ringIndex++) {\n    const srcEndIndex = holeIndices[ringIndex] || positions.length;\n    const targetStartIndex = targetIndex;\n    const splitIndex = findSplitIndex(positions, size, srcStartIndex, srcEndIndex);\n\n    for (let i = splitIndex; i < srcEndIndex; i++) {\n      newPositions[targetIndex++] = positions[i];\n    }\n\n    for (let i = srcStartIndex; i < splitIndex; i++) {\n      newPositions[targetIndex++] = positions[i];\n    }\n\n    wrapLongitudesForShortestPath(newPositions, size, targetStartIndex, targetIndex);\n    insertPoleVertices(newPositions, size, targetStartIndex, targetIndex, options === null || options === void 0 ? void 0 : options.maxLatitude);\n    srcStartIndex = srcEndIndex;\n    newHoleIndices[ringIndex] = targetIndex;\n  }\n\n  newHoleIndices.pop();\n  const parts = cutPolygonByGrid(newPositions, newHoleIndices, {\n    size,\n    gridResolution: 360,\n    gridOffset: [-180, -180],\n    edgeTypes\n  });\n\n  if (normalize) {\n    for (const part of parts) {\n      shiftLongitudesIntoRange(part.positions, size);\n    }\n  }\n\n  return parts;\n}\n\nfunction findSplitIndex(positions, size, startIndex, endIndex) {\n  let maxLat = -1;\n  let pointIndex = -1;\n\n  for (let i = startIndex + 1; i < endIndex; i += size) {\n    const lat = Math.abs(positions[i]);\n\n    if (lat > maxLat) {\n      maxLat = lat;\n      pointIndex = i - 1;\n    }\n  }\n\n  return pointIndex;\n}\n\nfunction insertPoleVertices(positions, size, startIndex, endIndex, maxLatitude = DEFAULT_MAX_LATITUDE) {\n  const firstLng = positions[startIndex];\n  const lastLng = positions[endIndex - size];\n\n  if (Math.abs(firstLng - lastLng) > 180) {\n    const p = getPointAtIndex(positions, 0, size, startIndex);\n    p[0] += Math.round((lastLng - firstLng) / 360) * 360;\n    push(positions, p);\n    p[1] = Math.sign(p[1]) * maxLatitude;\n    push(positions, p);\n    p[0] = firstLng;\n    push(positions, p);\n  }\n}\n\nfunction wrapLongitudesForShortestPath(positions, size, startIndex, endIndex) {\n  let prevLng = positions[0];\n  let lng;\n\n  for (let i = startIndex; i < endIndex; i += size) {\n    lng = positions[i];\n    const delta = lng - prevLng;\n\n    if (delta > 180 || delta < -180) {\n      lng -= Math.round(delta / 360) * 360;\n    }\n\n    positions[i] = prevLng = lng;\n  }\n}\n\nfunction shiftLongitudesIntoRange(positions, size) {\n  let refLng;\n  const pointCount = positions.length / size;\n\n  for (let i = 0; i < pointCount; i++) {\n    refLng = positions[i * size];\n\n    if ((refLng + 180) % 360 !== 0) {\n      break;\n    }\n  }\n\n  const delta = -Math.round(refLng / 360) * 360;\n\n  if (delta === 0) {\n    return;\n  }\n\n  for (let i = 0; i < pointCount; i++) {\n    positions[i * size] += delta;\n  }\n}\n//# sourceMappingURL=cut-by-mercator-bounds.js.map","import { transformMat4, scale } from 'gl-matrix/vec4';\nexport function createMat4() {\n  return [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1];\n}\nexport function transformVector(matrix, vector) {\n  const result = transformMat4([], vector, matrix);\n  scale(result, result, 1 / result[3]);\n  return result;\n}\nexport function mod(value, divisor) {\n  const modulus = value % divisor;\n  return modulus < 0 ? divisor + modulus : modulus;\n}\nexport function lerp(start, end, step) {\n  return step * end + (1 - step) * start;\n}\nexport function clamp(x, min, max) {\n  return x < min ? min : x > max ? max : x;\n}\n\nfunction ieLog2(x) {\n  return Math.log(x) * Math.LOG2E;\n}\n\nexport const log2 = Math.log2 || ieLog2;\n//# sourceMappingURL=math-utils.js.map","export default function assert(condition, message) {\n  if (!condition) {\n    throw new Error(message || '@math.gl/web-mercator: assertion failed.');\n  }\n}\n//# sourceMappingURL=assert.js.map","import { createMat4, transformVector, clamp, log2 } from './math-utils';\nimport * as mat4 from 'gl-matrix/mat4';\nimport * as vec2 from 'gl-matrix/vec2';\nimport * as vec3 from 'gl-matrix/vec3';\nimport assert from './assert';\nconst PI = Math.PI;\nconst PI_4 = PI / 4;\nconst DEGREES_TO_RADIANS = PI / 180;\nconst RADIANS_TO_DEGREES = 180 / PI;\nconst TILE_SIZE = 512;\nconst EARTH_CIRCUMFERENCE = 40.03e6;\nexport const MAX_LATITUDE = 85.051129;\nexport const DEFAULT_ALTITUDE = 1.5;\nexport function zoomToScale(zoom) {\n  return Math.pow(2, zoom);\n}\nexport function scaleToZoom(scale) {\n  return log2(scale);\n}\nexport function lngLatToWorld(lngLat) {\n  const [lng, lat] = lngLat;\n  assert(Number.isFinite(lng));\n  assert(Number.isFinite(lat) && lat >= -90 && lat <= 90, 'invalid latitude');\n  const lambda2 = lng * DEGREES_TO_RADIANS;\n  const phi2 = lat * DEGREES_TO_RADIANS;\n  const x = TILE_SIZE * (lambda2 + PI) / (2 * PI);\n  const y = TILE_SIZE * (PI + Math.log(Math.tan(PI_4 + phi2 * 0.5))) / (2 * PI);\n  return [x, y];\n}\nexport function worldToLngLat(xy) {\n  const [x, y] = xy;\n  const lambda2 = x / TILE_SIZE * (2 * PI) - PI;\n  const phi2 = 2 * (Math.atan(Math.exp(y / TILE_SIZE * (2 * PI) - PI)) - PI_4);\n  return [lambda2 * RADIANS_TO_DEGREES, phi2 * RADIANS_TO_DEGREES];\n}\nexport function getMeterZoom(options) {\n  const {\n    latitude\n  } = options;\n  assert(Number.isFinite(latitude));\n  const latCosine = Math.cos(latitude * DEGREES_TO_RADIANS);\n  return scaleToZoom(EARTH_CIRCUMFERENCE * latCosine) - 9;\n}\nexport function unitsPerMeter(latitude) {\n  const latCosine = Math.cos(latitude * DEGREES_TO_RADIANS);\n  return TILE_SIZE / EARTH_CIRCUMFERENCE / latCosine;\n}\nexport function getDistanceScales(options) {\n  const {\n    latitude,\n    longitude,\n    highPrecision = false\n  } = options;\n  assert(Number.isFinite(latitude) && Number.isFinite(longitude));\n  const worldSize = TILE_SIZE;\n  const latCosine = Math.cos(latitude * DEGREES_TO_RADIANS);\n  const unitsPerDegreeX = worldSize / 360;\n  const unitsPerDegreeY = unitsPerDegreeX / latCosine;\n  const altUnitsPerMeter = worldSize / EARTH_CIRCUMFERENCE / latCosine;\n  const result = {\n    unitsPerMeter: [altUnitsPerMeter, altUnitsPerMeter, altUnitsPerMeter],\n    metersPerUnit: [1 / altUnitsPerMeter, 1 / altUnitsPerMeter, 1 / altUnitsPerMeter],\n    unitsPerDegree: [unitsPerDegreeX, unitsPerDegreeY, altUnitsPerMeter],\n    degreesPerUnit: [1 / unitsPerDegreeX, 1 / unitsPerDegreeY, 1 / altUnitsPerMeter]\n  };\n\n  if (highPrecision) {\n    const latCosine2 = DEGREES_TO_RADIANS * Math.tan(latitude * DEGREES_TO_RADIANS) / latCosine;\n    const unitsPerDegreeY2 = unitsPerDegreeX * latCosine2 / 2;\n    const altUnitsPerDegree2 = worldSize / EARTH_CIRCUMFERENCE * latCosine2;\n    const altUnitsPerMeter2 = altUnitsPerDegree2 / unitsPerDegreeY * altUnitsPerMeter;\n    result.unitsPerDegree2 = [0, unitsPerDegreeY2, altUnitsPerDegree2];\n    result.unitsPerMeter2 = [altUnitsPerMeter2, 0, altUnitsPerMeter2];\n  }\n\n  return result;\n}\nexport function addMetersToLngLat(lngLatZ, xyz) {\n  const [longitude, latitude, z0] = lngLatZ;\n  const [x, y, z] = xyz;\n  const {\n    unitsPerMeter,\n    unitsPerMeter2\n  } = getDistanceScales({\n    longitude,\n    latitude,\n    highPrecision: true\n  });\n  const worldspace = lngLatToWorld(lngLatZ);\n  worldspace[0] += x * (unitsPerMeter[0] + unitsPerMeter2[0] * y);\n  worldspace[1] += y * (unitsPerMeter[1] + unitsPerMeter2[1] * y);\n  const newLngLat = worldToLngLat(worldspace);\n  const newZ = (z0 || 0) + (z || 0);\n  return Number.isFinite(z0) || Number.isFinite(z) ? [newLngLat[0], newLngLat[1], newZ] : newLngLat;\n}\nexport function getViewMatrix(options) {\n  const {\n    height,\n    pitch,\n    bearing,\n    altitude,\n    scale,\n    center\n  } = options;\n  const vm = createMat4();\n  mat4.translate(vm, vm, [0, 0, -altitude]);\n  mat4.rotateX(vm, vm, -pitch * DEGREES_TO_RADIANS);\n  mat4.rotateZ(vm, vm, bearing * DEGREES_TO_RADIANS);\n  const relativeScale = scale / height;\n  mat4.scale(vm, vm, [relativeScale, relativeScale, relativeScale]);\n\n  if (center) {\n    mat4.translate(vm, vm, vec3.negate([], center));\n  }\n\n  return vm;\n}\nexport function getProjectionParameters(options) {\n  const {\n    width,\n    height,\n    altitude,\n    pitch = 0,\n    offset,\n    center,\n    scale,\n    nearZMultiplier = 1,\n    farZMultiplier = 1\n  } = options;\n  let {\n    fovy = altitudeToFovy(DEFAULT_ALTITUDE)\n  } = options;\n\n  if (altitude !== undefined) {\n    fovy = altitudeToFovy(altitude);\n  }\n\n  const fovRadians = fovy * DEGREES_TO_RADIANS;\n  const pitchRadians = pitch * DEGREES_TO_RADIANS;\n  const focalDistance = fovyToAltitude(fovy);\n  let cameraToSeaLevelDistance = focalDistance;\n\n  if (center) {\n    cameraToSeaLevelDistance += center[2] * scale / Math.cos(pitchRadians) / height;\n  }\n\n  const fovAboveCenter = fovRadians * (0.5 + (offset ? offset[1] : 0) / height);\n  const topHalfSurfaceDistance = Math.sin(fovAboveCenter) * cameraToSeaLevelDistance / Math.sin(clamp(Math.PI / 2 - pitchRadians - fovAboveCenter, 0.01, Math.PI - 0.01));\n  const furthestDistance = Math.sin(pitchRadians) * topHalfSurfaceDistance + cameraToSeaLevelDistance;\n  const horizonDistance = cameraToSeaLevelDistance * 10;\n  const farZ = Math.min(furthestDistance * farZMultiplier, horizonDistance);\n  return {\n    fov: fovRadians,\n    aspect: width / height,\n    focalDistance,\n    near: nearZMultiplier,\n    far: farZ\n  };\n}\nexport function getProjectionMatrix(options) {\n  const {\n    fov,\n    aspect,\n    near,\n    far\n  } = getProjectionParameters(options);\n  const projectionMatrix = mat4.perspective([], fov, aspect, near, far);\n  return projectionMatrix;\n}\nexport function altitudeToFovy(altitude) {\n  return 2 * Math.atan(0.5 / altitude) * RADIANS_TO_DEGREES;\n}\nexport function fovyToAltitude(fovy) {\n  return 0.5 / Math.tan(0.5 * fovy * DEGREES_TO_RADIANS);\n}\nexport function worldToPixels(xyz, pixelProjectionMatrix) {\n  const [x, y, z = 0] = xyz;\n  assert(Number.isFinite(x) && Number.isFinite(y) && Number.isFinite(z));\n  return transformVector(pixelProjectionMatrix, [x, y, z, 1]);\n}\nexport function pixelsToWorld(xyz, pixelUnprojectionMatrix, targetZ = 0) {\n  const [x, y, z] = xyz;\n  assert(Number.isFinite(x) && Number.isFinite(y), 'invalid pixel coordinate');\n\n  if (Number.isFinite(z)) {\n    const coord = transformVector(pixelUnprojectionMatrix, [x, y, z, 1]);\n    return coord;\n  }\n\n  const coord0 = transformVector(pixelUnprojectionMatrix, [x, y, 0, 1]);\n  const coord1 = transformVector(pixelUnprojectionMatrix, [x, y, 1, 1]);\n  const z0 = coord0[2];\n  const z1 = coord1[2];\n  const t = z0 === z1 ? 0 : ((targetZ || 0) - z0) / (z1 - z0);\n  return vec2.lerp([], coord0, coord1, t);\n}\n//# sourceMappingURL=web-mercator-utils.js.map","import assert from './assert';\nimport { log2, clamp } from './math-utils';\nimport { MAX_LATITUDE, lngLatToWorld, worldToLngLat } from './web-mercator-utils';\nexport default function fitBounds(options) {\n  const {\n    width,\n    height,\n    bounds,\n    minExtent = 0,\n    maxZoom = 24,\n    offset = [0, 0]\n  } = options;\n  const [[west, south], [east, north]] = bounds;\n  const padding = getPaddingObject(options.padding);\n  const nw = lngLatToWorld([west, clamp(north, -MAX_LATITUDE, MAX_LATITUDE)]);\n  const se = lngLatToWorld([east, clamp(south, -MAX_LATITUDE, MAX_LATITUDE)]);\n  const size = [Math.max(Math.abs(se[0] - nw[0]), minExtent), Math.max(Math.abs(se[1] - nw[1]), minExtent)];\n  const targetSize = [width - padding.left - padding.right - Math.abs(offset[0]) * 2, height - padding.top - padding.bottom - Math.abs(offset[1]) * 2];\n  assert(targetSize[0] > 0 && targetSize[1] > 0);\n  const scaleX = targetSize[0] / size[0];\n  const scaleY = targetSize[1] / size[1];\n  const offsetX = (padding.right - padding.left) / 2 / scaleX;\n  const offsetY = (padding.top - padding.bottom) / 2 / scaleY;\n  const center = [(se[0] + nw[0]) / 2 + offsetX, (se[1] + nw[1]) / 2 + offsetY];\n  const centerLngLat = worldToLngLat(center);\n  const zoom = Math.min(maxZoom, log2(Math.abs(Math.min(scaleX, scaleY))));\n  assert(Number.isFinite(zoom));\n  return {\n    longitude: centerLngLat[0],\n    latitude: centerLngLat[1],\n    zoom\n  };\n}\n\nfunction getPaddingObject(padding = 0) {\n  if (typeof padding === 'number') {\n    return {\n      top: padding,\n      bottom: padding,\n      left: padding,\n      right: padding\n    };\n  }\n\n  assert(Number.isFinite(padding.top) && Number.isFinite(padding.bottom) && Number.isFinite(padding.left) && Number.isFinite(padding.right));\n  return padding;\n}\n//# sourceMappingURL=fit-bounds.js.map","import { worldToLngLat } from './web-mercator-utils';\nimport * as vec2 from 'gl-matrix/vec2';\nimport { transformVector } from './math-utils';\nconst DEGREES_TO_RADIANS = Math.PI / 180;\nexport default function getBounds(viewport, z = 0) {\n  const {\n    width,\n    height,\n    unproject\n  } = viewport;\n  const unprojectOps = {\n    targetZ: z\n  };\n  const bottomLeft = unproject([0, height], unprojectOps);\n  const bottomRight = unproject([width, height], unprojectOps);\n  let topLeft;\n  let topRight;\n  const halfFov = viewport.fovy ? 0.5 * viewport.fovy * DEGREES_TO_RADIANS : Math.atan(0.5 / viewport.altitude);\n  const angleToGround = (90 - viewport.pitch) * DEGREES_TO_RADIANS;\n\n  if (halfFov > angleToGround - 0.01) {\n    topLeft = unprojectOnFarPlane(viewport, 0, z);\n    topRight = unprojectOnFarPlane(viewport, width, z);\n  } else {\n    topLeft = unproject([0, 0], unprojectOps);\n    topRight = unproject([width, 0], unprojectOps);\n  }\n\n  return [bottomLeft, bottomRight, topRight, topLeft];\n}\n\nfunction unprojectOnFarPlane(viewport, x, targetZ) {\n  const {\n    pixelUnprojectionMatrix\n  } = viewport;\n  const coord0 = transformVector(pixelUnprojectionMatrix, [x, 0, 1, 1]);\n  const coord1 = transformVector(pixelUnprojectionMatrix, [x, viewport.height, 1, 1]);\n  const z = targetZ * viewport.distanceScales.unitsPerMeter[2];\n  const t = (z - coord0[2]) / (coord1[2] - coord0[2]);\n  const coord = vec2.lerp([], coord0, coord1, t);\n  const result = worldToLngLat(coord);\n  result.push(targetZ);\n  return result;\n}\n//# sourceMappingURL=get-bounds.js.map","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { createMat4 } from './math-utils';\nimport { zoomToScale, pixelsToWorld, lngLatToWorld, worldToLngLat, worldToPixels, altitudeToFovy, fovyToAltitude, DEFAULT_ALTITUDE, getProjectionMatrix, getDistanceScales, getViewMatrix } from './web-mercator-utils';\nimport fitBounds from './fit-bounds';\nimport getBounds from './get-bounds';\nimport * as mat4 from 'gl-matrix/mat4';\nimport * as vec2 from 'gl-matrix/vec2';\nimport * as vec3 from 'gl-matrix/vec3';\nexport default class WebMercatorViewport {\n  constructor(props = {\n    width: 1,\n    height: 1\n  }) {\n    _defineProperty(this, \"latitude\", void 0);\n\n    _defineProperty(this, \"longitude\", void 0);\n\n    _defineProperty(this, \"zoom\", void 0);\n\n    _defineProperty(this, \"pitch\", void 0);\n\n    _defineProperty(this, \"bearing\", void 0);\n\n    _defineProperty(this, \"altitude\", void 0);\n\n    _defineProperty(this, \"fovy\", void 0);\n\n    _defineProperty(this, \"meterOffset\", void 0);\n\n    _defineProperty(this, \"center\", void 0);\n\n    _defineProperty(this, \"width\", void 0);\n\n    _defineProperty(this, \"height\", void 0);\n\n    _defineProperty(this, \"scale\", void 0);\n\n    _defineProperty(this, \"distanceScales\", void 0);\n\n    _defineProperty(this, \"viewMatrix\", void 0);\n\n    _defineProperty(this, \"projectionMatrix\", void 0);\n\n    _defineProperty(this, \"viewProjectionMatrix\", void 0);\n\n    _defineProperty(this, \"pixelProjectionMatrix\", void 0);\n\n    _defineProperty(this, \"pixelUnprojectionMatrix\", void 0);\n\n    _defineProperty(this, \"equals\", viewport => {\n      if (!(viewport instanceof WebMercatorViewport)) {\n        return false;\n      }\n\n      return viewport.width === this.width && viewport.height === this.height && mat4.equals(viewport.projectionMatrix, this.projectionMatrix) && mat4.equals(viewport.viewMatrix, this.viewMatrix);\n    });\n\n    _defineProperty(this, \"project\", (lngLatZ, options = {}) => {\n      const {\n        topLeft = true\n      } = options;\n      const worldPosition = this.projectPosition(lngLatZ);\n      const coord = worldToPixels(worldPosition, this.pixelProjectionMatrix);\n      const [x, y] = coord;\n      const y2 = topLeft ? y : this.height - y;\n      return lngLatZ.length === 2 ? [x, y2] : [x, y2, coord[2]];\n    });\n\n    _defineProperty(this, \"unproject\", (xyz, options = {}) => {\n      const {\n        topLeft = true,\n        targetZ = undefined\n      } = options;\n      const [x, y, z] = xyz;\n      const y2 = topLeft ? y : this.height - y;\n      const targetZWorld = targetZ && targetZ * this.distanceScales.unitsPerMeter[2];\n      const coord = pixelsToWorld([x, y2, z], this.pixelUnprojectionMatrix, targetZWorld);\n      const [X, Y, Z] = this.unprojectPosition(coord);\n\n      if (Number.isFinite(z)) {\n        return [X, Y, Z];\n      }\n\n      return Number.isFinite(targetZ) ? [X, Y, targetZ] : [X, Y];\n    });\n\n    _defineProperty(this, \"projectPosition\", xyz => {\n      const [X, Y] = lngLatToWorld(xyz);\n      const Z = (xyz[2] || 0) * this.distanceScales.unitsPerMeter[2];\n      return [X, Y, Z];\n    });\n\n    _defineProperty(this, \"unprojectPosition\", xyz => {\n      const [X, Y] = worldToLngLat(xyz);\n      const Z = (xyz[2] || 0) * this.distanceScales.metersPerUnit[2];\n      return [X, Y, Z];\n    });\n\n    let {\n      width,\n      height,\n      altitude = null,\n      fovy = null\n    } = props;\n    const {\n      latitude = 0,\n      longitude = 0,\n      zoom = 0,\n      pitch = 0,\n      bearing = 0,\n      position = null,\n      nearZMultiplier = 0.02,\n      farZMultiplier = 1.01\n    } = props;\n    width = width || 1;\n    height = height || 1;\n\n    if (fovy === null && altitude === null) {\n      altitude = DEFAULT_ALTITUDE;\n      fovy = altitudeToFovy(altitude);\n    } else if (fovy === null) {\n      fovy = altitudeToFovy(altitude);\n    } else if (altitude === null) {\n      altitude = fovyToAltitude(fovy);\n    }\n\n    const scale = zoomToScale(zoom);\n    altitude = Math.max(0.75, altitude);\n    const distanceScales = getDistanceScales({\n      longitude,\n      latitude\n    });\n    const center = lngLatToWorld([longitude, latitude]);\n    center.push(0);\n\n    if (position) {\n      vec3.add(center, center, vec3.mul([], position, distanceScales.unitsPerMeter));\n    }\n\n    this.projectionMatrix = getProjectionMatrix({\n      width,\n      height,\n      scale,\n      center,\n      pitch,\n      fovy,\n      nearZMultiplier,\n      farZMultiplier\n    });\n    this.viewMatrix = getViewMatrix({\n      height,\n      scale,\n      center,\n      pitch,\n      bearing,\n      altitude\n    });\n    this.width = width;\n    this.height = height;\n    this.scale = scale;\n    this.latitude = latitude;\n    this.longitude = longitude;\n    this.zoom = zoom;\n    this.pitch = pitch;\n    this.bearing = bearing;\n    this.altitude = altitude;\n    this.fovy = fovy;\n    this.center = center;\n    this.meterOffset = position || [0, 0, 0];\n    this.distanceScales = distanceScales;\n\n    this._initMatrices();\n\n    Object.freeze(this);\n  }\n\n  _initMatrices() {\n    const {\n      width,\n      height,\n      projectionMatrix,\n      viewMatrix\n    } = this;\n    const vpm = createMat4();\n    mat4.multiply(vpm, vpm, projectionMatrix);\n    mat4.multiply(vpm, vpm, viewMatrix);\n    this.viewProjectionMatrix = vpm;\n    const m = createMat4();\n    mat4.scale(m, m, [width / 2, -height / 2, 1]);\n    mat4.translate(m, m, [1, -1, 0]);\n    mat4.multiply(m, m, vpm);\n    const mInverse = mat4.invert(createMat4(), m);\n\n    if (!mInverse) {\n      throw new Error('Pixel project matrix not invertible');\n    }\n\n    this.pixelProjectionMatrix = m;\n    this.pixelUnprojectionMatrix = mInverse;\n  }\n\n  projectFlat(lngLat) {\n    return lngLatToWorld(lngLat);\n  }\n\n  unprojectFlat(xy) {\n    return worldToLngLat(xy);\n  }\n\n  getMapCenterByLngLatPosition({\n    lngLat,\n    pos\n  }) {\n    const fromLocation = pixelsToWorld(pos, this.pixelUnprojectionMatrix);\n    const toLocation = lngLatToWorld(lngLat);\n    const translate = vec2.add([], toLocation, vec2.negate([], fromLocation));\n    const newCenter = vec2.add([], this.center, translate);\n    return worldToLngLat(newCenter);\n  }\n\n  fitBounds(bounds, options = {}) {\n    const {\n      width,\n      height\n    } = this;\n    const {\n      longitude,\n      latitude,\n      zoom\n    } = fitBounds(Object.assign({\n      width,\n      height,\n      bounds\n    }, options));\n    return new WebMercatorViewport({\n      width,\n      height,\n      longitude,\n      latitude,\n      zoom\n    });\n  }\n\n  getBounds(options) {\n    const corners = this.getBoundingRegion(options);\n    const west = Math.min(...corners.map(p => p[0]));\n    const east = Math.max(...corners.map(p => p[0]));\n    const south = Math.min(...corners.map(p => p[1]));\n    const north = Math.max(...corners.map(p => p[1]));\n    return [[west, south], [east, north]];\n  }\n\n  getBoundingRegion(options = {}) {\n    return getBounds(this, options.z || 0);\n  }\n\n  getLocationAtPoint({\n    lngLat,\n    pos\n  }) {\n    return this.getMapCenterByLngLatPosition({\n      lngLat,\n      pos\n    });\n  }\n\n}\n//# sourceMappingURL=web-mercator-viewport.js.map","import { worldToLngLat } from './web-mercator-utils';\nimport { mod, log2 } from './math-utils';\nconst TILE_SIZE = 512;\nexport default function normalizeViewportProps(props) {\n  const {\n    width,\n    height,\n    pitch = 0\n  } = props;\n  let {\n    longitude,\n    latitude,\n    zoom,\n    bearing = 0\n  } = props;\n\n  if (longitude < -180 || longitude > 180) {\n    longitude = mod(longitude + 180, 360) - 180;\n  }\n\n  if (bearing < -180 || bearing > 180) {\n    bearing = mod(bearing + 180, 360) - 180;\n  }\n\n  const minZoom = log2(height / TILE_SIZE);\n\n  if (zoom <= minZoom) {\n    zoom = minZoom;\n    latitude = 0;\n  } else {\n    const halfHeightPixels = height / 2 / Math.pow(2, zoom);\n    const minLatitude = worldToLngLat([0, halfHeightPixels])[1];\n\n    if (latitude < minLatitude) {\n      latitude = minLatitude;\n    } else {\n      const maxLatitude = worldToLngLat([0, TILE_SIZE - halfHeightPixels])[1];\n\n      if (latitude > maxLatitude) {\n        latitude = maxLatitude;\n      }\n    }\n  }\n\n  return {\n    width,\n    height,\n    longitude,\n    latitude,\n    zoom,\n    pitch,\n    bearing\n  };\n}\n//# sourceMappingURL=normalize-viewport-props.js.map","import { lerp } from './math-utils';\nimport { scaleToZoom, zoomToScale, lngLatToWorld, worldToLngLat } from './web-mercator-utils';\nimport * as vec2 from 'gl-matrix/vec2';\nconst EPSILON = 0.01;\nconst VIEWPORT_TRANSITION_PROPS = ['longitude', 'latitude', 'zoom'];\nconst DEFAULT_OPTS = {\n  curve: 1.414,\n  speed: 1.2\n};\nexport default function flyToViewport(startProps, endProps, t, options) {\n  const {\n    startZoom,\n    startCenterXY,\n    uDelta,\n    w0,\n    u1,\n    S,\n    rho,\n    rho2,\n    r0\n  } = getFlyToTransitionParams(startProps, endProps, options);\n\n  if (u1 < EPSILON) {\n    const viewport = {};\n\n    for (const key of VIEWPORT_TRANSITION_PROPS) {\n      const startValue = startProps[key];\n      const endValue = endProps[key];\n      viewport[key] = lerp(startValue, endValue, t);\n    }\n\n    return viewport;\n  }\n\n  const s = t * S;\n  const w = Math.cosh(r0) / Math.cosh(r0 + rho * s);\n  const u = w0 * ((Math.cosh(r0) * Math.tanh(r0 + rho * s) - Math.sinh(r0)) / rho2) / u1;\n  const scaleIncrement = 1 / w;\n  const newZoom = startZoom + scaleToZoom(scaleIncrement);\n  const newCenterWorld = vec2.scale([], uDelta, u);\n  vec2.add(newCenterWorld, newCenterWorld, startCenterXY);\n  const newCenter = worldToLngLat(newCenterWorld);\n  return {\n    longitude: newCenter[0],\n    latitude: newCenter[1],\n    zoom: newZoom\n  };\n}\nexport function getFlyToDuration(startProps, endProps, options) {\n  const opts = { ...DEFAULT_OPTS,\n    ...options\n  };\n  const {\n    screenSpeed,\n    speed,\n    maxDuration\n  } = opts;\n  const {\n    S,\n    rho\n  } = getFlyToTransitionParams(startProps, endProps, opts);\n  const length = 1000 * S;\n  let duration;\n\n  if (Number.isFinite(screenSpeed)) {\n    duration = length / (screenSpeed / rho);\n  } else {\n    duration = length / speed;\n  }\n\n  return Number.isFinite(maxDuration) && duration > maxDuration ? 0 : duration;\n}\n\nfunction getFlyToTransitionParams(startProps, endProps, opts) {\n  opts = Object.assign({}, DEFAULT_OPTS, opts);\n  const rho = opts.curve;\n  const startZoom = startProps.zoom;\n  const startCenter = [startProps.longitude, startProps.latitude];\n  const startScale = zoomToScale(startZoom);\n  const endZoom = endProps.zoom;\n  const endCenter = [endProps.longitude, endProps.latitude];\n  const scale = zoomToScale(endZoom - startZoom);\n  const startCenterXY = lngLatToWorld(startCenter);\n  const endCenterXY = lngLatToWorld(endCenter);\n  const uDelta = vec2.sub([], endCenterXY, startCenterXY);\n  const w0 = Math.max(startProps.width, startProps.height);\n  const w1 = w0 / scale;\n  const u1 = vec2.length(uDelta) * startScale;\n\n  const _u1 = Math.max(u1, EPSILON);\n\n  const rho2 = rho * rho;\n  const b0 = (w1 * w1 - w0 * w0 + rho2 * rho2 * _u1 * _u1) / (2 * w0 * rho2 * _u1);\n  const b1 = (w1 * w1 - w0 * w0 - rho2 * rho2 * _u1 * _u1) / (2 * w1 * rho2 * _u1);\n  const r0 = Math.log(Math.sqrt(b0 * b0 + 1) - b0);\n  const r1 = Math.log(Math.sqrt(b1 * b1 + 1) - b1);\n  const S = (r1 - r0) / rho;\n  return {\n    startZoom,\n    startCenterXY,\n    uDelta,\n    w0,\n    u1,\n    S,\n    rho,\n    rho2,\n    r0,\n    r1\n  };\n}\n//# sourceMappingURL=fly-to-viewport.js.map","const blue = {\n  50: '#e3f2fd',\n  100: '#bbdefb',\n  200: '#90caf9',\n  300: '#64b5f6',\n  400: '#42a5f5',\n  500: '#2196f3',\n  600: '#1e88e5',\n  700: '#1976d2',\n  800: '#1565c0',\n  900: '#0d47a1',\n  A100: '#82b1ff',\n  A200: '#448aff',\n  A400: '#2979ff',\n  A700: '#2962ff'\n};\nexport default blue;","const common = {\n  black: '#000',\n  white: '#fff'\n};\nexport default common;","const green = {\n  50: '#e8f5e9',\n  100: '#c8e6c9',\n  200: '#a5d6a7',\n  300: '#81c784',\n  400: '#66bb6a',\n  500: '#4caf50',\n  600: '#43a047',\n  700: '#388e3c',\n  800: '#2e7d32',\n  900: '#1b5e20',\n  A100: '#b9f6ca',\n  A200: '#69f0ae',\n  A400: '#00e676',\n  A700: '#00c853'\n};\nexport default green;","const grey = {\n  50: '#fafafa',\n  100: '#f5f5f5',\n  200: '#eeeeee',\n  300: '#e0e0e0',\n  400: '#bdbdbd',\n  500: '#9e9e9e',\n  600: '#757575',\n  700: '#616161',\n  800: '#424242',\n  900: '#212121',\n  A100: '#f5f5f5',\n  A200: '#eeeeee',\n  A400: '#bdbdbd',\n  A700: '#616161'\n};\nexport default grey;","const lightBlue = {\n  50: '#e1f5fe',\n  100: '#b3e5fc',\n  200: '#81d4fa',\n  300: '#4fc3f7',\n  400: '#29b6f6',\n  500: '#03a9f4',\n  600: '#039be5',\n  700: '#0288d1',\n  800: '#0277bd',\n  900: '#01579b',\n  A100: '#80d8ff',\n  A200: '#40c4ff',\n  A400: '#00b0ff',\n  A700: '#0091ea'\n};\nexport default lightBlue;","const orange = {\n  50: '#fff3e0',\n  100: '#ffe0b2',\n  200: '#ffcc80',\n  300: '#ffb74d',\n  400: '#ffa726',\n  500: '#ff9800',\n  600: '#fb8c00',\n  700: '#f57c00',\n  800: '#ef6c00',\n  900: '#e65100',\n  A100: '#ffd180',\n  A200: '#ffab40',\n  A400: '#ff9100',\n  A700: '#ff6d00'\n};\nexport default orange;","const purple = {\n  50: '#f3e5f5',\n  100: '#e1bee7',\n  200: '#ce93d8',\n  300: '#ba68c8',\n  400: '#ab47bc',\n  500: '#9c27b0',\n  600: '#8e24aa',\n  700: '#7b1fa2',\n  800: '#6a1b9a',\n  900: '#4a148c',\n  A100: '#ea80fc',\n  A200: '#e040fb',\n  A400: '#d500f9',\n  A700: '#aa00ff'\n};\nexport default purple;","const red = {\n  50: '#ffebee',\n  100: '#ffcdd2',\n  200: '#ef9a9a',\n  300: '#e57373',\n  400: '#ef5350',\n  500: '#f44336',\n  600: '#e53935',\n  700: '#d32f2f',\n  800: '#c62828',\n  900: '#b71c1c',\n  A100: '#ff8a80',\n  A200: '#ff5252',\n  A400: '#ff1744',\n  A700: '#d50000'\n};\nexport default red;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nexport default function createMixins(breakpoints, mixins) {\n  return _extends({\n    toolbar: {\n      minHeight: 56,\n      [breakpoints.up('xs')]: {\n        '@media (orientation: landscape)': {\n          minHeight: 48\n        }\n      },\n      [breakpoints.up('sm')]: {\n        minHeight: 64\n      }\n    }\n  }, mixins);\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _formatMuiErrorMessage from \"@mui/utils/formatMuiErrorMessage\";\nconst _excluded = [\"mode\", \"contrastThreshold\", \"tonalOffset\"];\nimport { deepmerge } from '@mui/utils';\nimport { darken, getContrastRatio, lighten } from '@mui/system';\nimport common from '../colors/common';\nimport grey from '../colors/grey';\nimport purple from '../colors/purple';\nimport red from '../colors/red';\nimport orange from '../colors/orange';\nimport blue from '../colors/blue';\nimport lightBlue from '../colors/lightBlue';\nimport green from '../colors/green';\nexport const light = {\n  // The colors used to style the text.\n  text: {\n    // The most important text.\n    primary: 'rgba(0, 0, 0, 0.87)',\n    // Secondary text.\n    secondary: 'rgba(0, 0, 0, 0.6)',\n    // Disabled text have even lower visual prominence.\n    disabled: 'rgba(0, 0, 0, 0.38)'\n  },\n  // The color used to divide different elements.\n  divider: 'rgba(0, 0, 0, 0.12)',\n  // The background colors used to style the surfaces.\n  // Consistency between these values is important.\n  background: {\n    paper: common.white,\n    default: common.white\n  },\n  // The colors used to style the action elements.\n  action: {\n    // The color of an active action like an icon button.\n    active: 'rgba(0, 0, 0, 0.54)',\n    // The color of an hovered action.\n    hover: 'rgba(0, 0, 0, 0.04)',\n    hoverOpacity: 0.04,\n    // The color of a selected action.\n    selected: 'rgba(0, 0, 0, 0.08)',\n    selectedOpacity: 0.08,\n    // The color of a disabled action.\n    disabled: 'rgba(0, 0, 0, 0.26)',\n    // The background color of a disabled action.\n    disabledBackground: 'rgba(0, 0, 0, 0.12)',\n    disabledOpacity: 0.38,\n    focus: 'rgba(0, 0, 0, 0.12)',\n    focusOpacity: 0.12,\n    activatedOpacity: 0.12\n  }\n};\nexport const dark = {\n  text: {\n    primary: common.white,\n    secondary: 'rgba(255, 255, 255, 0.7)',\n    disabled: 'rgba(255, 255, 255, 0.5)',\n    icon: 'rgba(255, 255, 255, 0.5)'\n  },\n  divider: 'rgba(255, 255, 255, 0.12)',\n  background: {\n    paper: '#121212',\n    default: '#121212'\n  },\n  action: {\n    active: common.white,\n    hover: 'rgba(255, 255, 255, 0.08)',\n    hoverOpacity: 0.08,\n    selected: 'rgba(255, 255, 255, 0.16)',\n    selectedOpacity: 0.16,\n    disabled: 'rgba(255, 255, 255, 0.3)',\n    disabledBackground: 'rgba(255, 255, 255, 0.12)',\n    disabledOpacity: 0.38,\n    focus: 'rgba(255, 255, 255, 0.12)',\n    focusOpacity: 0.12,\n    activatedOpacity: 0.24\n  }\n};\nfunction addLightOrDark(intent, direction, shade, tonalOffset) {\n  const tonalOffsetLight = tonalOffset.light || tonalOffset;\n  const tonalOffsetDark = tonalOffset.dark || tonalOffset * 1.5;\n  if (!intent[direction]) {\n    if (intent.hasOwnProperty(shade)) {\n      intent[direction] = intent[shade];\n    } else if (direction === 'light') {\n      intent.light = lighten(intent.main, tonalOffsetLight);\n    } else if (direction === 'dark') {\n      intent.dark = darken(intent.main, tonalOffsetDark);\n    }\n  }\n}\nfunction getDefaultPrimary(mode = 'light') {\n  if (mode === 'dark') {\n    return {\n      main: blue[200],\n      light: blue[50],\n      dark: blue[400]\n    };\n  }\n  return {\n    main: blue[700],\n    light: blue[400],\n    dark: blue[800]\n  };\n}\nfunction getDefaultSecondary(mode = 'light') {\n  if (mode === 'dark') {\n    return {\n      main: purple[200],\n      light: purple[50],\n      dark: purple[400]\n    };\n  }\n  return {\n    main: purple[500],\n    light: purple[300],\n    dark: purple[700]\n  };\n}\nfunction getDefaultError(mode = 'light') {\n  if (mode === 'dark') {\n    return {\n      main: red[500],\n      light: red[300],\n      dark: red[700]\n    };\n  }\n  return {\n    main: red[700],\n    light: red[400],\n    dark: red[800]\n  };\n}\nfunction getDefaultInfo(mode = 'light') {\n  if (mode === 'dark') {\n    return {\n      main: lightBlue[400],\n      light: lightBlue[300],\n      dark: lightBlue[700]\n    };\n  }\n  return {\n    main: lightBlue[700],\n    light: lightBlue[500],\n    dark: lightBlue[900]\n  };\n}\nfunction getDefaultSuccess(mode = 'light') {\n  if (mode === 'dark') {\n    return {\n      main: green[400],\n      light: green[300],\n      dark: green[700]\n    };\n  }\n  return {\n    main: green[800],\n    light: green[500],\n    dark: green[900]\n  };\n}\nfunction getDefaultWarning(mode = 'light') {\n  if (mode === 'dark') {\n    return {\n      main: orange[400],\n      light: orange[300],\n      dark: orange[700]\n    };\n  }\n  return {\n    main: '#ed6c02',\n    // closest to orange[800] that pass 3:1.\n    light: orange[500],\n    dark: orange[900]\n  };\n}\nexport default function createPalette(palette) {\n  const {\n      mode = 'light',\n      contrastThreshold = 3,\n      tonalOffset = 0.2\n    } = palette,\n    other = _objectWithoutPropertiesLoose(palette, _excluded);\n  const primary = palette.primary || getDefaultPrimary(mode);\n  const secondary = palette.secondary || getDefaultSecondary(mode);\n  const error = palette.error || getDefaultError(mode);\n  const info = palette.info || getDefaultInfo(mode);\n  const success = palette.success || getDefaultSuccess(mode);\n  const warning = palette.warning || getDefaultWarning(mode);\n\n  // Use the same logic as\n  // Bootstrap: https://github.com/twbs/bootstrap/blob/1d6e3710dd447de1a200f29e8fa521f8a0908f70/scss/_functions.scss#L59\n  // and material-components-web https://github.com/material-components/material-components-web/blob/ac46b8863c4dab9fc22c4c662dc6bd1b65dd652f/packages/mdc-theme/_functions.scss#L54\n  function getContrastText(background) {\n    const contrastText = getContrastRatio(background, dark.text.primary) >= contrastThreshold ? dark.text.primary : light.text.primary;\n    if (process.env.NODE_ENV !== 'production') {\n      const contrast = getContrastRatio(background, contrastText);\n      if (contrast < 3) {\n        console.error([`MUI: The contrast ratio of ${contrast}:1 for ${contrastText} on ${background}`, 'falls below the WCAG recommended absolute minimum contrast ratio of 3:1.', 'https://www.w3.org/TR/2008/REC-WCAG20-20081211/#visual-audio-contrast-contrast'].join('\\n'));\n      }\n    }\n    return contrastText;\n  }\n  const augmentColor = ({\n    color,\n    name,\n    mainShade = 500,\n    lightShade = 300,\n    darkShade = 700\n  }) => {\n    color = _extends({}, color);\n    if (!color.main && color[mainShade]) {\n      color.main = color[mainShade];\n    }\n    if (!color.hasOwnProperty('main')) {\n      throw new Error(process.env.NODE_ENV !== \"production\" ? `MUI: The color${name ? ` (${name})` : ''} provided to augmentColor(color) is invalid.\nThe color object needs to have a \\`main\\` property or a \\`${mainShade}\\` property.` : _formatMuiErrorMessage(11, name ? ` (${name})` : '', mainShade));\n    }\n    if (typeof color.main !== 'string') {\n      throw new Error(process.env.NODE_ENV !== \"production\" ? `MUI: The color${name ? ` (${name})` : ''} provided to augmentColor(color) is invalid.\n\\`color.main\\` should be a string, but \\`${JSON.stringify(color.main)}\\` was provided instead.\n\nDid you intend to use one of the following approaches?\n\nimport { green } from \"@mui/material/colors\";\n\nconst theme1 = createTheme({ palette: {\n  primary: green,\n} });\n\nconst theme2 = createTheme({ palette: {\n  primary: { main: green[500] },\n} });` : _formatMuiErrorMessage(12, name ? ` (${name})` : '', JSON.stringify(color.main)));\n    }\n    addLightOrDark(color, 'light', lightShade, tonalOffset);\n    addLightOrDark(color, 'dark', darkShade, tonalOffset);\n    if (!color.contrastText) {\n      color.contrastText = getContrastText(color.main);\n    }\n    return color;\n  };\n  const modes = {\n    dark,\n    light\n  };\n  if (process.env.NODE_ENV !== 'production') {\n    if (!modes[mode]) {\n      console.error(`MUI: The palette mode \\`${mode}\\` is not supported.`);\n    }\n  }\n  const paletteOutput = deepmerge(_extends({\n    // A collection of common colors.\n    common: _extends({}, common),\n    // prevent mutable object.\n    // The palette mode, can be light or dark.\n    mode,\n    // The colors used to represent primary interface elements for a user.\n    primary: augmentColor({\n      color: primary,\n      name: 'primary'\n    }),\n    // The colors used to represent secondary interface elements for a user.\n    secondary: augmentColor({\n      color: secondary,\n      name: 'secondary',\n      mainShade: 'A400',\n      lightShade: 'A200',\n      darkShade: 'A700'\n    }),\n    // The colors used to represent interface elements that the user should be made aware of.\n    error: augmentColor({\n      color: error,\n      name: 'error'\n    }),\n    // The colors used to represent potentially dangerous actions or important messages.\n    warning: augmentColor({\n      color: warning,\n      name: 'warning'\n    }),\n    // The colors used to present information to the user that is neutral and not necessarily important.\n    info: augmentColor({\n      color: info,\n      name: 'info'\n    }),\n    // The colors used to indicate the successful completion of an action that user triggered.\n    success: augmentColor({\n      color: success,\n      name: 'success'\n    }),\n    // The grey colors.\n    grey,\n    // Used by `getContrastText()` to maximize the contrast between\n    // the background and the text.\n    contrastThreshold,\n    // Takes a background color and returns the text color that maximizes the contrast.\n    getContrastText,\n    // Generate a rich color object.\n    augmentColor,\n    // Used by the functions below to shift a color's luminance by approximately\n    // two indexes within its tonal palette.\n    // E.g., shift from Red 500 to Red 300 or Red 700.\n    tonalOffset\n  }, modes[mode]), other);\n  return paletteOutput;\n}","const shadowKeyUmbraOpacity = 0.2;\nconst shadowKeyPenumbraOpacity = 0.14;\nconst shadowAmbientShadowOpacity = 0.12;\nfunction createShadow(...px) {\n  return [`${px[0]}px ${px[1]}px ${px[2]}px ${px[3]}px rgba(0,0,0,${shadowKeyUmbraOpacity})`, `${px[4]}px ${px[5]}px ${px[6]}px ${px[7]}px rgba(0,0,0,${shadowKeyPenumbraOpacity})`, `${px[8]}px ${px[9]}px ${px[10]}px ${px[11]}px rgba(0,0,0,${shadowAmbientShadowOpacity})`].join(',');\n}\n\n// Values from https://github.com/material-components/material-components-web/blob/be8747f94574669cb5e7add1a7c54fa41a89cec7/packages/mdc-elevation/_variables.scss\nconst shadows = ['none', createShadow(0, 2, 1, -1, 0, 1, 1, 0, 0, 1, 3, 0), createShadow(0, 3, 1, -2, 0, 2, 2, 0, 0, 1, 5, 0), createShadow(0, 3, 3, -2, 0, 3, 4, 0, 0, 1, 8, 0), createShadow(0, 2, 4, -1, 0, 4, 5, 0, 0, 1, 10, 0), createShadow(0, 3, 5, -1, 0, 5, 8, 0, 0, 1, 14, 0), createShadow(0, 3, 5, -1, 0, 6, 10, 0, 0, 1, 18, 0), createShadow(0, 4, 5, -2, 0, 7, 10, 1, 0, 2, 16, 1), createShadow(0, 5, 5, -3, 0, 8, 10, 1, 0, 3, 14, 2), createShadow(0, 5, 6, -3, 0, 9, 12, 1, 0, 3, 16, 2), createShadow(0, 6, 6, -3, 0, 10, 14, 1, 0, 4, 18, 3), createShadow(0, 6, 7, -4, 0, 11, 15, 1, 0, 4, 20, 3), createShadow(0, 7, 8, -4, 0, 12, 17, 2, 0, 5, 22, 4), createShadow(0, 7, 8, -4, 0, 13, 19, 2, 0, 5, 24, 4), createShadow(0, 7, 9, -4, 0, 14, 21, 2, 0, 5, 26, 4), createShadow(0, 8, 9, -5, 0, 15, 22, 2, 0, 6, 28, 5), createShadow(0, 8, 10, -5, 0, 16, 24, 2, 0, 6, 30, 5), createShadow(0, 8, 11, -5, 0, 17, 26, 2, 0, 6, 32, 5), createShadow(0, 9, 11, -5, 0, 18, 28, 2, 0, 7, 34, 6), createShadow(0, 9, 12, -6, 0, 19, 29, 2, 0, 7, 36, 6), createShadow(0, 10, 13, -6, 0, 20, 31, 3, 0, 8, 38, 7), createShadow(0, 10, 13, -6, 0, 21, 33, 3, 0, 8, 40, 7), createShadow(0, 10, 14, -6, 0, 22, 35, 3, 0, 8, 42, 7), createShadow(0, 11, 14, -7, 0, 23, 36, 3, 0, 9, 44, 8), createShadow(0, 11, 15, -7, 0, 24, 38, 3, 0, 9, 46, 8)];\nexport default shadows;","// We need to centralize the zIndex definitions as they work\n// like global values in the browser.\nconst zIndex = {\n  mobileStepper: 1000,\n  fab: 1050,\n  speedDial: 1050,\n  appBar: 1100,\n  drawer: 1200,\n  modal: 1300,\n  snackbar: 1400,\n  tooltip: 1500\n};\nexport default zIndex;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _formatMuiErrorMessage from \"@mui/utils/formatMuiErrorMessage\";\nconst _excluded = [\"breakpoints\", \"mixins\", \"spacing\", \"palette\", \"transitions\", \"typography\", \"shape\"];\nimport { deepmerge } from '@mui/utils';\nimport { createTheme as systemCreateTheme, unstable_defaultSxConfig as defaultSxConfig, unstable_styleFunctionSx as styleFunctionSx } from '@mui/system';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nimport createMixins from './createMixins';\nimport createPalette from './createPalette';\nimport createTypography from './createTypography';\nimport shadows from './shadows';\nimport createTransitions from './createTransitions';\nimport zIndex from './zIndex';\nfunction createTheme(options = {}, ...args) {\n  const {\n      mixins: mixinsInput = {},\n      palette: paletteInput = {},\n      transitions: transitionsInput = {},\n      typography: typographyInput = {}\n    } = options,\n    other = _objectWithoutPropertiesLoose(options, _excluded);\n  if (options.vars) {\n    throw new Error(process.env.NODE_ENV !== \"production\" ? `MUI: \\`vars\\` is a private field used for CSS variables support.\nPlease use another name.` : _formatMuiErrorMessage(18));\n  }\n  const palette = createPalette(paletteInput);\n  const systemTheme = systemCreateTheme(options);\n  let muiTheme = deepmerge(systemTheme, {\n    mixins: createMixins(systemTheme.breakpoints, mixinsInput),\n    palette,\n    // Don't use [...shadows] until you've verified its transpiled code is not invoking the iterator protocol.\n    shadows: shadows.slice(),\n    typography: createTypography(palette, typographyInput),\n    transitions: createTransitions(transitionsInput),\n    zIndex: _extends({}, zIndex)\n  });\n  muiTheme = deepmerge(muiTheme, other);\n  muiTheme = args.reduce((acc, argument) => deepmerge(acc, argument), muiTheme);\n  if (process.env.NODE_ENV !== 'production') {\n    // TODO v6: Refactor to use globalStateClassesMapping from @mui/utils once `readOnly` state class is used in Rating component.\n    const stateClasses = ['active', 'checked', 'completed', 'disabled', 'error', 'expanded', 'focused', 'focusVisible', 'required', 'selected'];\n    const traverse = (node, component) => {\n      let key;\n\n      // eslint-disable-next-line guard-for-in, no-restricted-syntax\n      for (key in node) {\n        const child = node[key];\n        if (stateClasses.indexOf(key) !== -1 && Object.keys(child).length > 0) {\n          if (process.env.NODE_ENV !== 'production') {\n            const stateClass = generateUtilityClass('', key);\n            console.error([`MUI: The \\`${component}\\` component increases ` + `the CSS specificity of the \\`${key}\\` internal state.`, 'You can not override it like this: ', JSON.stringify(node, null, 2), '', `Instead, you need to use the '&.${stateClass}' syntax:`, JSON.stringify({\n              root: {\n                [`&.${stateClass}`]: child\n              }\n            }, null, 2), '', 'https://mui.com/r/state-classes-guide'].join('\\n'));\n          }\n          // Remove the style to prevent global conflicts.\n          node[key] = {};\n        }\n      }\n    };\n    Object.keys(muiTheme.components).forEach(component => {\n      const styleOverrides = muiTheme.components[component].styleOverrides;\n      if (styleOverrides && component.indexOf('Mui') === 0) {\n        traverse(styleOverrides, component);\n      }\n    });\n  }\n  muiTheme.unstable_sxConfig = _extends({}, defaultSxConfig, other == null ? void 0 : other.unstable_sxConfig);\n  muiTheme.unstable_sx = function sx(props) {\n    return styleFunctionSx({\n      sx: props,\n      theme: this\n    });\n  };\n  return muiTheme;\n}\nlet warnedOnce = false;\nexport function createMuiTheme(...args) {\n  if (process.env.NODE_ENV !== 'production') {\n    if (!warnedOnce) {\n      warnedOnce = true;\n      console.error(['MUI: the createMuiTheme function was renamed to createTheme.', '', \"You should use `import { createTheme } from '@mui/material/styles'`\"].join('\\n'));\n    }\n  }\n  return createTheme(...args);\n}\nexport default createTheme;","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"duration\", \"easing\", \"delay\"];\n// Follow https://material.google.com/motion/duration-easing.html#duration-easing-natural-easing-curves\n// to learn the context in which each easing should be used.\nexport const easing = {\n  // This is the most common easing curve.\n  easeInOut: 'cubic-bezier(0.4, 0, 0.2, 1)',\n  // Objects enter the screen at full velocity from off-screen and\n  // slowly decelerate to a resting point.\n  easeOut: 'cubic-bezier(0.0, 0, 0.2, 1)',\n  // Objects leave the screen at full velocity. They do not decelerate when off-screen.\n  easeIn: 'cubic-bezier(0.4, 0, 1, 1)',\n  // The sharp curve is used by objects that may return to the screen at any time.\n  sharp: 'cubic-bezier(0.4, 0, 0.6, 1)'\n};\n\n// Follow https://m2.material.io/guidelines/motion/duration-easing.html#duration-easing-common-durations\n// to learn when use what timing\nexport const duration = {\n  shortest: 150,\n  shorter: 200,\n  short: 250,\n  // most basic recommended timing\n  standard: 300,\n  // this is to be used in complex animations\n  complex: 375,\n  // recommended when something is entering screen\n  enteringScreen: 225,\n  // recommended when something is leaving screen\n  leavingScreen: 195\n};\nfunction formatMs(milliseconds) {\n  return `${Math.round(milliseconds)}ms`;\n}\nfunction getAutoHeightDuration(height) {\n  if (!height) {\n    return 0;\n  }\n  const constant = height / 36;\n\n  // https://www.wolframalpha.com/input/?i=(4+%2B+15+*+(x+%2F+36+)+**+0.25+%2B+(x+%2F+36)+%2F+5)+*+10\n  return Math.round((4 + 15 * constant ** 0.25 + constant / 5) * 10);\n}\nexport default function createTransitions(inputTransitions) {\n  const mergedEasing = _extends({}, easing, inputTransitions.easing);\n  const mergedDuration = _extends({}, duration, inputTransitions.duration);\n  const create = (props = ['all'], options = {}) => {\n    const {\n        duration: durationOption = mergedDuration.standard,\n        easing: easingOption = mergedEasing.easeInOut,\n        delay = 0\n      } = options,\n      other = _objectWithoutPropertiesLoose(options, _excluded);\n    if (process.env.NODE_ENV !== 'production') {\n      const isString = value => typeof value === 'string';\n      // IE11 support, replace with Number.isNaN\n      // eslint-disable-next-line no-restricted-globals\n      const isNumber = value => !isNaN(parseFloat(value));\n      if (!isString(props) && !Array.isArray(props)) {\n        console.error('MUI: Argument \"props\" must be a string or Array.');\n      }\n      if (!isNumber(durationOption) && !isString(durationOption)) {\n        console.error(`MUI: Argument \"duration\" must be a number or a string but found ${durationOption}.`);\n      }\n      if (!isString(easingOption)) {\n        console.error('MUI: Argument \"easing\" must be a string.');\n      }\n      if (!isNumber(delay) && !isString(delay)) {\n        console.error('MUI: Argument \"delay\" must be a number or a string.');\n      }\n      if (typeof options !== 'object') {\n        console.error(['MUI: Secong argument of transition.create must be an object.', \"Arguments should be either `create('prop1', options)` or `create(['prop1', 'prop2'], options)`\"].join('\\n'));\n      }\n      if (Object.keys(other).length !== 0) {\n        console.error(`MUI: Unrecognized argument(s) [${Object.keys(other).join(',')}].`);\n      }\n    }\n    return (Array.isArray(props) ? props : [props]).map(animatedProp => `${animatedProp} ${typeof durationOption === 'string' ? durationOption : formatMs(durationOption)} ${easingOption} ${typeof delay === 'string' ? delay : formatMs(delay)}`).join(',');\n  };\n  return _extends({\n    getAutoHeightDuration,\n    create\n  }, inputTransitions, {\n    easing: mergedEasing,\n    duration: mergedDuration\n  });\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"fontFamily\", \"fontSize\", \"fontWeightLight\", \"fontWeightRegular\", \"fontWeightMedium\", \"fontWeightBold\", \"htmlFontSize\", \"allVariants\", \"pxToRem\"];\nimport { deepmerge } from '@mui/utils';\nfunction round(value) {\n  return Math.round(value * 1e5) / 1e5;\n}\nconst caseAllCaps = {\n  textTransform: 'uppercase'\n};\nconst defaultFontFamily = '\"Roboto\", \"Helvetica\", \"Arial\", sans-serif';\n\n/**\n * @see @link{https://m2.material.io/design/typography/the-type-system.html}\n * @see @link{https://m2.material.io/design/typography/understanding-typography.html}\n */\nexport default function createTypography(palette, typography) {\n  const _ref = typeof typography === 'function' ? typography(palette) : typography,\n    {\n      fontFamily = defaultFontFamily,\n      // The default font size of the Material Specification.\n      fontSize = 14,\n      // px\n      fontWeightLight = 300,\n      fontWeightRegular = 400,\n      fontWeightMedium = 500,\n      fontWeightBold = 700,\n      // Tell MUI what's the font-size on the html element.\n      // 16px is the default font-size used by browsers.\n      htmlFontSize = 16,\n      // Apply the CSS properties to all the variants.\n      allVariants,\n      pxToRem: pxToRem2\n    } = _ref,\n    other = _objectWithoutPropertiesLoose(_ref, _excluded);\n  if (process.env.NODE_ENV !== 'production') {\n    if (typeof fontSize !== 'number') {\n      console.error('MUI: `fontSize` is required to be a number.');\n    }\n    if (typeof htmlFontSize !== 'number') {\n      console.error('MUI: `htmlFontSize` is required to be a number.');\n    }\n  }\n  const coef = fontSize / 14;\n  const pxToRem = pxToRem2 || (size => `${size / htmlFontSize * coef}rem`);\n  const buildVariant = (fontWeight, size, lineHeight, letterSpacing, casing) => _extends({\n    fontFamily,\n    fontWeight,\n    fontSize: pxToRem(size),\n    // Unitless following https://meyerweb.com/eric/thoughts/2006/02/08/unitless-line-heights/\n    lineHeight\n  }, fontFamily === defaultFontFamily ? {\n    letterSpacing: `${round(letterSpacing / size)}em`\n  } : {}, casing, allVariants);\n  const variants = {\n    h1: buildVariant(fontWeightLight, 96, 1.167, -1.5),\n    h2: buildVariant(fontWeightLight, 60, 1.2, -0.5),\n    h3: buildVariant(fontWeightRegular, 48, 1.167, 0),\n    h4: buildVariant(fontWeightRegular, 34, 1.235, 0.25),\n    h5: buildVariant(fontWeightRegular, 24, 1.334, 0),\n    h6: buildVariant(fontWeightMedium, 20, 1.6, 0.15),\n    subtitle1: buildVariant(fontWeightRegular, 16, 1.75, 0.15),\n    subtitle2: buildVariant(fontWeightMedium, 14, 1.57, 0.1),\n    body1: buildVariant(fontWeightRegular, 16, 1.5, 0.15),\n    body2: buildVariant(fontWeightRegular, 14, 1.43, 0.15),\n    button: buildVariant(fontWeightMedium, 14, 1.75, 0.4, caseAllCaps),\n    caption: buildVariant(fontWeightRegular, 12, 1.66, 0.4),\n    overline: buildVariant(fontWeightRegular, 12, 2.66, 1, caseAllCaps),\n    // TODO v6: Remove handling of 'inherit' variant from the theme as it is already handled in Material UI's Typography component. Also, remember to remove the associated types.\n    inherit: {\n      fontFamily: 'inherit',\n      fontWeight: 'inherit',\n      fontSize: 'inherit',\n      lineHeight: 'inherit',\n      letterSpacing: 'inherit'\n    }\n  };\n  return deepmerge(_extends({\n    htmlFontSize,\n    pxToRem,\n    fontFamily,\n    fontSize,\n    fontWeightLight,\n    fontWeightRegular,\n    fontWeightMedium,\n    fontWeightBold\n  }, variants), other, {\n    clone: false // No need to clone deep\n  });\n}","'use client';\n\nimport createTheme from './createTheme';\nconst defaultTheme = createTheme();\nexport default defaultTheme;","export default '$$material';","'use client';\n\nimport * as React from 'react';\nimport { useTheme as useThemeSystem } from '@mui/system';\nimport defaultTheme from './defaultTheme';\nimport THEME_ID from './identifier';\nexport default function useTheme() {\n  const theme = useThemeSystem(defaultTheme);\n  if (process.env.NODE_ENV !== 'production') {\n    // eslint-disable-next-line react-hooks/rules-of-hooks\n    React.useDebugValue(theme);\n  }\n  return theme[THEME_ID] || theme;\n}","import responsivePropType from './responsivePropType';\nimport style from './style';\nimport compose from './compose';\nimport { createUnaryUnit, getValue } from './spacing';\nimport { handleBreakpoints } from './breakpoints';\nexport function borderTransform(value) {\n  if (typeof value !== 'number') {\n    return value;\n  }\n  return `${value}px solid`;\n}\nfunction createBorderStyle(prop, transform) {\n  return style({\n    prop,\n    themeKey: 'borders',\n    transform\n  });\n}\nexport const border = createBorderStyle('border', borderTransform);\nexport const borderTop = createBorderStyle('borderTop', borderTransform);\nexport const borderRight = createBorderStyle('borderRight', borderTransform);\nexport const borderBottom = createBorderStyle('borderBottom', borderTransform);\nexport const borderLeft = createBorderStyle('borderLeft', borderTransform);\nexport const borderColor = createBorderStyle('borderColor');\nexport const borderTopColor = createBorderStyle('borderTopColor');\nexport const borderRightColor = createBorderStyle('borderRightColor');\nexport const borderBottomColor = createBorderStyle('borderBottomColor');\nexport const borderLeftColor = createBorderStyle('borderLeftColor');\nexport const outline = createBorderStyle('outline', borderTransform);\nexport const outlineColor = createBorderStyle('outlineColor');\n\n// false positive\n// eslint-disable-next-line react/function-component-definition\nexport const borderRadius = props => {\n  if (props.borderRadius !== undefined && props.borderRadius !== null) {\n    const transformer = createUnaryUnit(props.theme, 'shape.borderRadius', 4, 'borderRadius');\n    const styleFromPropValue = propValue => ({\n      borderRadius: getValue(transformer, propValue)\n    });\n    return handleBreakpoints(props, props.borderRadius, styleFromPropValue);\n  }\n  return null;\n};\nborderRadius.propTypes = process.env.NODE_ENV !== 'production' ? {\n  borderRadius: responsivePropType\n} : {};\nborderRadius.filterProps = ['borderRadius'];\nconst borders = compose(border, borderTop, borderRight, borderBottom, borderLeft, borderColor, borderTopColor, borderRightColor, borderBottomColor, borderLeftColor, borderRadius, outline, outlineColor);\nexport default borders;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport PropTypes from 'prop-types';\nimport { deepmerge } from '@mui/utils';\nimport merge from './merge';\n\n// The breakpoint **start** at this value.\n// For instance with the first breakpoint xs: [xs, sm[.\nexport const values = {\n  xs: 0,\n  // phone\n  sm: 600,\n  // tablet\n  md: 900,\n  // small laptop\n  lg: 1200,\n  // desktop\n  xl: 1536 // large screen\n};\nconst defaultBreakpoints = {\n  // Sorted ASC by size. That's important.\n  // It can't be configured as it's used statically for propTypes.\n  keys: ['xs', 'sm', 'md', 'lg', 'xl'],\n  up: key => `@media (min-width:${values[key]}px)`\n};\nexport function handleBreakpoints(props, propValue, styleFromPropValue) {\n  const theme = props.theme || {};\n  if (Array.isArray(propValue)) {\n    const themeBreakpoints = theme.breakpoints || defaultBreakpoints;\n    return propValue.reduce((acc, item, index) => {\n      acc[themeBreakpoints.up(themeBreakpoints.keys[index])] = styleFromPropValue(propValue[index]);\n      return acc;\n    }, {});\n  }\n  if (typeof propValue === 'object') {\n    const themeBreakpoints = theme.breakpoints || defaultBreakpoints;\n    return Object.keys(propValue).reduce((acc, breakpoint) => {\n      // key is breakpoint\n      if (Object.keys(themeBreakpoints.values || values).indexOf(breakpoint) !== -1) {\n        const mediaKey = themeBreakpoints.up(breakpoint);\n        acc[mediaKey] = styleFromPropValue(propValue[breakpoint], breakpoint);\n      } else {\n        const cssKey = breakpoint;\n        acc[cssKey] = propValue[cssKey];\n      }\n      return acc;\n    }, {});\n  }\n  const output = styleFromPropValue(propValue);\n  return output;\n}\nfunction breakpoints(styleFunction) {\n  // false positive\n  // eslint-disable-next-line react/function-component-definition\n  const newStyleFunction = props => {\n    const theme = props.theme || {};\n    const base = styleFunction(props);\n    const themeBreakpoints = theme.breakpoints || defaultBreakpoints;\n    const extended = themeBreakpoints.keys.reduce((acc, key) => {\n      if (props[key]) {\n        acc = acc || {};\n        acc[themeBreakpoints.up(key)] = styleFunction(_extends({\n          theme\n        }, props[key]));\n      }\n      return acc;\n    }, null);\n    return merge(base, extended);\n  };\n  newStyleFunction.propTypes = process.env.NODE_ENV !== 'production' ? _extends({}, styleFunction.propTypes, {\n    xs: PropTypes.object,\n    sm: PropTypes.object,\n    md: PropTypes.object,\n    lg: PropTypes.object,\n    xl: PropTypes.object\n  }) : {};\n  newStyleFunction.filterProps = ['xs', 'sm', 'md', 'lg', 'xl', ...styleFunction.filterProps];\n  return newStyleFunction;\n}\nexport function createEmptyBreakpointObject(breakpointsInput = {}) {\n  var _breakpointsInput$key;\n  const breakpointsInOrder = (_breakpointsInput$key = breakpointsInput.keys) == null ? void 0 : _breakpointsInput$key.reduce((acc, key) => {\n    const breakpointStyleKey = breakpointsInput.up(key);\n    acc[breakpointStyleKey] = {};\n    return acc;\n  }, {});\n  return breakpointsInOrder || {};\n}\nexport function removeUnusedBreakpoints(breakpointKeys, style) {\n  return breakpointKeys.reduce((acc, key) => {\n    const breakpointOutput = acc[key];\n    const isBreakpointUnused = !breakpointOutput || Object.keys(breakpointOutput).length === 0;\n    if (isBreakpointUnused) {\n      delete acc[key];\n    }\n    return acc;\n  }, style);\n}\nexport function mergeBreakpointsInOrder(breakpointsInput, ...styles) {\n  const emptyBreakpoints = createEmptyBreakpointObject(breakpointsInput);\n  const mergedOutput = [emptyBreakpoints, ...styles].reduce((prev, next) => deepmerge(prev, next), {});\n  return removeUnusedBreakpoints(Object.keys(emptyBreakpoints), mergedOutput);\n}\n\n// compute base for responsive values; e.g.,\n// [1,2,3] => {xs: true, sm: true, md: true}\n// {xs: 1, sm: 2, md: 3} => {xs: true, sm: true, md: true}\nexport function computeBreakpointsBase(breakpointValues, themeBreakpoints) {\n  // fixed value\n  if (typeof breakpointValues !== 'object') {\n    return {};\n  }\n  const base = {};\n  const breakpointsKeys = Object.keys(themeBreakpoints);\n  if (Array.isArray(breakpointValues)) {\n    breakpointsKeys.forEach((breakpoint, i) => {\n      if (i < breakpointValues.length) {\n        base[breakpoint] = true;\n      }\n    });\n  } else {\n    breakpointsKeys.forEach(breakpoint => {\n      if (breakpointValues[breakpoint] != null) {\n        base[breakpoint] = true;\n      }\n    });\n  }\n  return base;\n}\nexport function resolveBreakpointValues({\n  values: breakpointValues,\n  breakpoints: themeBreakpoints,\n  base: customBase\n}) {\n  const base = customBase || computeBreakpointsBase(breakpointValues, themeBreakpoints);\n  const keys = Object.keys(base);\n  if (keys.length === 0) {\n    return breakpointValues;\n  }\n  let previous;\n  return keys.reduce((acc, breakpoint, i) => {\n    if (Array.isArray(breakpointValues)) {\n      acc[breakpoint] = breakpointValues[i] != null ? breakpointValues[i] : breakpointValues[previous];\n      previous = i;\n    } else if (typeof breakpointValues === 'object') {\n      acc[breakpoint] = breakpointValues[breakpoint] != null ? breakpointValues[breakpoint] : breakpointValues[previous];\n      previous = breakpoint;\n    } else {\n      acc[breakpoint] = breakpointValues;\n    }\n    return acc;\n  }, {});\n}\nexport default breakpoints;","import _formatMuiErrorMessage from \"@mui/utils/formatMuiErrorMessage\";\n/* eslint-disable @typescript-eslint/naming-convention */\n/**\n * Returns a number whose value is limited to the given range.\n * @param {number} value The value to be clamped\n * @param {number} min The lower boundary of the output range\n * @param {number} max The upper boundary of the output range\n * @returns {number} A number in the range [min, max]\n */\nfunction clamp(value, min = 0, max = 1) {\n  if (process.env.NODE_ENV !== 'production') {\n    if (value < min || value > max) {\n      console.error(`MUI: The value provided ${value} is out of range [${min}, ${max}].`);\n    }\n  }\n  return Math.min(Math.max(min, value), max);\n}\n\n/**\n * Converts a color from CSS hex format to CSS rgb format.\n * @param {string} color - Hex color, i.e. #nnn or #nnnnnn\n * @returns {string} A CSS rgb color string\n */\nexport function hexToRgb(color) {\n  color = color.slice(1);\n  const re = new RegExp(`.{1,${color.length >= 6 ? 2 : 1}}`, 'g');\n  let colors = color.match(re);\n  if (colors && colors[0].length === 1) {\n    colors = colors.map(n => n + n);\n  }\n  return colors ? `rgb${colors.length === 4 ? 'a' : ''}(${colors.map((n, index) => {\n    return index < 3 ? parseInt(n, 16) : Math.round(parseInt(n, 16) / 255 * 1000) / 1000;\n  }).join(', ')})` : '';\n}\nfunction intToHex(int) {\n  const hex = int.toString(16);\n  return hex.length === 1 ? `0${hex}` : hex;\n}\n\n/**\n * Returns an object with the type and values of a color.\n *\n * Note: Does not support rgb % values.\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla(), color()\n * @returns {object} - A MUI color object: {type: string, values: number[]}\n */\nexport function decomposeColor(color) {\n  // Idempotent\n  if (color.type) {\n    return color;\n  }\n  if (color.charAt(0) === '#') {\n    return decomposeColor(hexToRgb(color));\n  }\n  const marker = color.indexOf('(');\n  const type = color.substring(0, marker);\n  if (['rgb', 'rgba', 'hsl', 'hsla', 'color'].indexOf(type) === -1) {\n    throw new Error(process.env.NODE_ENV !== \"production\" ? `MUI: Unsupported \\`${color}\\` color.\nThe following formats are supported: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla(), color().` : _formatMuiErrorMessage(9, color));\n  }\n  let values = color.substring(marker + 1, color.length - 1);\n  let colorSpace;\n  if (type === 'color') {\n    values = values.split(' ');\n    colorSpace = values.shift();\n    if (values.length === 4 && values[3].charAt(0) === '/') {\n      values[3] = values[3].slice(1);\n    }\n    if (['srgb', 'display-p3', 'a98-rgb', 'prophoto-rgb', 'rec-2020'].indexOf(colorSpace) === -1) {\n      throw new Error(process.env.NODE_ENV !== \"production\" ? `MUI: unsupported \\`${colorSpace}\\` color space.\nThe following color spaces are supported: srgb, display-p3, a98-rgb, prophoto-rgb, rec-2020.` : _formatMuiErrorMessage(10, colorSpace));\n    }\n  } else {\n    values = values.split(',');\n  }\n  values = values.map(value => parseFloat(value));\n  return {\n    type,\n    values,\n    colorSpace\n  };\n}\n\n/**\n * Returns a channel created from the input color.\n *\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla(), color()\n * @returns {string} - The channel for the color, that can be used in rgba or hsla colors\n */\nexport const colorChannel = color => {\n  const decomposedColor = decomposeColor(color);\n  return decomposedColor.values.slice(0, 3).map((val, idx) => decomposedColor.type.indexOf('hsl') !== -1 && idx !== 0 ? `${val}%` : val).join(' ');\n};\nexport const private_safeColorChannel = (color, warning) => {\n  try {\n    return colorChannel(color);\n  } catch (error) {\n    if (warning && process.env.NODE_ENV !== 'production') {\n      console.warn(warning);\n    }\n    return color;\n  }\n};\n\n/**\n * Converts a color object with type and values to a string.\n * @param {object} color - Decomposed color\n * @param {string} color.type - One of: 'rgb', 'rgba', 'hsl', 'hsla', 'color'\n * @param {array} color.values - [n,n,n] or [n,n,n,n]\n * @returns {string} A CSS color string\n */\nexport function recomposeColor(color) {\n  const {\n    type,\n    colorSpace\n  } = color;\n  let {\n    values\n  } = color;\n  if (type.indexOf('rgb') !== -1) {\n    // Only convert the first 3 values to int (i.e. not alpha)\n    values = values.map((n, i) => i < 3 ? parseInt(n, 10) : n);\n  } else if (type.indexOf('hsl') !== -1) {\n    values[1] = `${values[1]}%`;\n    values[2] = `${values[2]}%`;\n  }\n  if (type.indexOf('color') !== -1) {\n    values = `${colorSpace} ${values.join(' ')}`;\n  } else {\n    values = `${values.join(', ')}`;\n  }\n  return `${type}(${values})`;\n}\n\n/**\n * Converts a color from CSS rgb format to CSS hex format.\n * @param {string} color - RGB color, i.e. rgb(n, n, n)\n * @returns {string} A CSS rgb color string, i.e. #nnnnnn\n */\nexport function rgbToHex(color) {\n  // Idempotent\n  if (color.indexOf('#') === 0) {\n    return color;\n  }\n  const {\n    values\n  } = decomposeColor(color);\n  return `#${values.map((n, i) => intToHex(i === 3 ? Math.round(255 * n) : n)).join('')}`;\n}\n\n/**\n * Converts a color from hsl format to rgb format.\n * @param {string} color - HSL color values\n * @returns {string} rgb color values\n */\nexport function hslToRgb(color) {\n  color = decomposeColor(color);\n  const {\n    values\n  } = color;\n  const h = values[0];\n  const s = values[1] / 100;\n  const l = values[2] / 100;\n  const a = s * Math.min(l, 1 - l);\n  const f = (n, k = (n + h / 30) % 12) => l - a * Math.max(Math.min(k - 3, 9 - k, 1), -1);\n  let type = 'rgb';\n  const rgb = [Math.round(f(0) * 255), Math.round(f(8) * 255), Math.round(f(4) * 255)];\n  if (color.type === 'hsla') {\n    type += 'a';\n    rgb.push(values[3]);\n  }\n  return recomposeColor({\n    type,\n    values: rgb\n  });\n}\n/**\n * The relative brightness of any point in a color space,\n * normalized to 0 for darkest black and 1 for lightest white.\n *\n * Formula: https://www.w3.org/TR/WCAG20-TECHS/G17.html#G17-tests\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla(), color()\n * @returns {number} The relative brightness of the color in the range 0 - 1\n */\nexport function getLuminance(color) {\n  color = decomposeColor(color);\n  let rgb = color.type === 'hsl' || color.type === 'hsla' ? decomposeColor(hslToRgb(color)).values : color.values;\n  rgb = rgb.map(val => {\n    if (color.type !== 'color') {\n      val /= 255; // normalized\n    }\n    return val <= 0.03928 ? val / 12.92 : ((val + 0.055) / 1.055) ** 2.4;\n  });\n\n  // Truncate at 3 digits\n  return Number((0.2126 * rgb[0] + 0.7152 * rgb[1] + 0.0722 * rgb[2]).toFixed(3));\n}\n\n/**\n * Calculates the contrast ratio between two colors.\n *\n * Formula: https://www.w3.org/TR/WCAG20-TECHS/G17.html#G17-tests\n * @param {string} foreground - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla()\n * @param {string} background - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla()\n * @returns {number} A contrast ratio value in the range 0 - 21.\n */\nexport function getContrastRatio(foreground, background) {\n  const lumA = getLuminance(foreground);\n  const lumB = getLuminance(background);\n  return (Math.max(lumA, lumB) + 0.05) / (Math.min(lumA, lumB) + 0.05);\n}\n\n/**\n * Sets the absolute transparency of a color.\n * Any existing alpha values are overwritten.\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla(), color()\n * @param {number} value - value to set the alpha channel to in the range 0 - 1\n * @returns {string} A CSS color string. Hex input values are returned as rgb\n */\nexport function alpha(color, value) {\n  color = decomposeColor(color);\n  value = clamp(value);\n  if (color.type === 'rgb' || color.type === 'hsl') {\n    color.type += 'a';\n  }\n  if (color.type === 'color') {\n    color.values[3] = `/${value}`;\n  } else {\n    color.values[3] = value;\n  }\n  return recomposeColor(color);\n}\nexport function private_safeAlpha(color, value, warning) {\n  try {\n    return alpha(color, value);\n  } catch (error) {\n    if (warning && process.env.NODE_ENV !== 'production') {\n      console.warn(warning);\n    }\n    return color;\n  }\n}\n\n/**\n * Darkens a color.\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla(), color()\n * @param {number} coefficient - multiplier in the range 0 - 1\n * @returns {string} A CSS color string. Hex input values are returned as rgb\n */\nexport function darken(color, coefficient) {\n  color = decomposeColor(color);\n  coefficient = clamp(coefficient);\n  if (color.type.indexOf('hsl') !== -1) {\n    color.values[2] *= 1 - coefficient;\n  } else if (color.type.indexOf('rgb') !== -1 || color.type.indexOf('color') !== -1) {\n    for (let i = 0; i < 3; i += 1) {\n      color.values[i] *= 1 - coefficient;\n    }\n  }\n  return recomposeColor(color);\n}\nexport function private_safeDarken(color, coefficient, warning) {\n  try {\n    return darken(color, coefficient);\n  } catch (error) {\n    if (warning && process.env.NODE_ENV !== 'production') {\n      console.warn(warning);\n    }\n    return color;\n  }\n}\n\n/**\n * Lightens a color.\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla(), color()\n * @param {number} coefficient - multiplier in the range 0 - 1\n * @returns {string} A CSS color string. Hex input values are returned as rgb\n */\nexport function lighten(color, coefficient) {\n  color = decomposeColor(color);\n  coefficient = clamp(coefficient);\n  if (color.type.indexOf('hsl') !== -1) {\n    color.values[2] += (100 - color.values[2]) * coefficient;\n  } else if (color.type.indexOf('rgb') !== -1) {\n    for (let i = 0; i < 3; i += 1) {\n      color.values[i] += (255 - color.values[i]) * coefficient;\n    }\n  } else if (color.type.indexOf('color') !== -1) {\n    for (let i = 0; i < 3; i += 1) {\n      color.values[i] += (1 - color.values[i]) * coefficient;\n    }\n  }\n  return recomposeColor(color);\n}\nexport function private_safeLighten(color, coefficient, warning) {\n  try {\n    return lighten(color, coefficient);\n  } catch (error) {\n    if (warning && process.env.NODE_ENV !== 'production') {\n      console.warn(warning);\n    }\n    return color;\n  }\n}\n\n/**\n * Darken or lighten a color, depending on its luminance.\n * Light colors are darkened, dark colors are lightened.\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla(), color()\n * @param {number} coefficient=0.15 - multiplier in the range 0 - 1\n * @returns {string} A CSS color string. Hex input values are returned as rgb\n */\nexport function emphasize(color, coefficient = 0.15) {\n  return getLuminance(color) > 0.5 ? darken(color, coefficient) : lighten(color, coefficient);\n}\nexport function private_safeEmphasize(color, coefficient, warning) {\n  try {\n    return private_safeEmphasize(color, coefficient);\n  } catch (error) {\n    if (warning && process.env.NODE_ENV !== 'production') {\n      console.warn(warning);\n    }\n    return color;\n  }\n}","import merge from './merge';\nfunction compose(...styles) {\n  const handlers = styles.reduce((acc, style) => {\n    style.filterProps.forEach(prop => {\n      acc[prop] = style;\n    });\n    return acc;\n  }, {});\n\n  // false positive\n  // eslint-disable-next-line react/function-component-definition\n  const fn = props => {\n    return Object.keys(props).reduce((acc, prop) => {\n      if (handlers[prop]) {\n        return merge(acc, handlers[prop](props));\n      }\n      return acc;\n    }, {});\n  };\n  fn.propTypes = process.env.NODE_ENV !== 'production' ? styles.reduce((acc, style) => Object.assign(acc, style.propTypes), {}) : {};\n  fn.filterProps = styles.reduce((acc, style) => acc.concat(style.filterProps), []);\n  return fn;\n}\nexport default compose;","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"values\", \"unit\", \"step\"];\n// Sorted ASC by size. That's important.\n// It can't be configured as it's used statically for propTypes.\nexport const breakpointKeys = ['xs', 'sm', 'md', 'lg', 'xl'];\nconst sortBreakpointsValues = values => {\n  const breakpointsAsArray = Object.keys(values).map(key => ({\n    key,\n    val: values[key]\n  })) || [];\n  // Sort in ascending order\n  breakpointsAsArray.sort((breakpoint1, breakpoint2) => breakpoint1.val - breakpoint2.val);\n  return breakpointsAsArray.reduce((acc, obj) => {\n    return _extends({}, acc, {\n      [obj.key]: obj.val\n    });\n  }, {});\n};\n\n// Keep in mind that @media is inclusive by the CSS specification.\nexport default function createBreakpoints(breakpoints) {\n  const {\n      // The breakpoint **start** at this value.\n      // For instance with the first breakpoint xs: [xs, sm).\n      values = {\n        xs: 0,\n        // phone\n        sm: 600,\n        // tablet\n        md: 900,\n        // small laptop\n        lg: 1200,\n        // desktop\n        xl: 1536 // large screen\n      },\n      unit = 'px',\n      step = 5\n    } = breakpoints,\n    other = _objectWithoutPropertiesLoose(breakpoints, _excluded);\n  const sortedValues = sortBreakpointsValues(values);\n  const keys = Object.keys(sortedValues);\n  function up(key) {\n    const value = typeof values[key] === 'number' ? values[key] : key;\n    return `@media (min-width:${value}${unit})`;\n  }\n  function down(key) {\n    const value = typeof values[key] === 'number' ? values[key] : key;\n    return `@media (max-width:${value - step / 100}${unit})`;\n  }\n  function between(start, end) {\n    const endIndex = keys.indexOf(end);\n    return `@media (min-width:${typeof values[start] === 'number' ? values[start] : start}${unit}) and ` + `(max-width:${(endIndex !== -1 && typeof values[keys[endIndex]] === 'number' ? values[keys[endIndex]] : end) - step / 100}${unit})`;\n  }\n  function only(key) {\n    if (keys.indexOf(key) + 1 < keys.length) {\n      return between(key, keys[keys.indexOf(key) + 1]);\n    }\n    return up(key);\n  }\n  function not(key) {\n    // handle first and last key separately, for better readability\n    const keyIndex = keys.indexOf(key);\n    if (keyIndex === 0) {\n      return up(keys[1]);\n    }\n    if (keyIndex === keys.length - 1) {\n      return down(keys[keyIndex]);\n    }\n    return between(key, keys[keys.indexOf(key) + 1]).replace('@media', '@media not all and');\n  }\n  return _extends({\n    keys,\n    values: sortedValues,\n    up,\n    down,\n    between,\n    only,\n    not,\n    unit\n  }, other);\n}","import { createUnarySpacing } from '../spacing';\n\n// The different signatures imply different meaning for their arguments that can't be expressed structurally.\n// We express the difference with variable names.\n\nexport default function createSpacing(spacingInput = 8) {\n  // Already transformed.\n  if (spacingInput.mui) {\n    return spacingInput;\n  }\n\n  // Material Design layouts are visually balanced. Most measurements align to an 8dp grid, which aligns both spacing and the overall layout.\n  // Smaller components, such as icons, can align to a 4dp grid.\n  // https://m2.material.io/design/layout/understanding-layout.html\n  const transform = createUnarySpacing({\n    spacing: spacingInput\n  });\n  const spacing = (...argsInput) => {\n    if (process.env.NODE_ENV !== 'production') {\n      if (!(argsInput.length <= 4)) {\n        console.error(`MUI: Too many arguments provided, expected between 0 and 4, got ${argsInput.length}`);\n      }\n    }\n    const args = argsInput.length === 0 ? [1] : argsInput;\n    return args.map(argument => {\n      const output = transform(argument);\n      return typeof output === 'number' ? `${output}px` : output;\n    }).join(' ');\n  };\n  spacing.mui = true;\n  return spacing;\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"breakpoints\", \"palette\", \"spacing\", \"shape\"];\nimport { deepmerge } from '@mui/utils';\nimport createBreakpoints from './createBreakpoints';\nimport shape from './shape';\nimport createSpacing from './createSpacing';\nimport styleFunctionSx from '../styleFunctionSx/styleFunctionSx';\nimport defaultSxConfig from '../styleFunctionSx/defaultSxConfig';\nfunction createTheme(options = {}, ...args) {\n  const {\n      breakpoints: breakpointsInput = {},\n      palette: paletteInput = {},\n      spacing: spacingInput,\n      shape: shapeInput = {}\n    } = options,\n    other = _objectWithoutPropertiesLoose(options, _excluded);\n  const breakpoints = createBreakpoints(breakpointsInput);\n  const spacing = createSpacing(spacingInput);\n  let muiTheme = deepmerge({\n    breakpoints,\n    direction: 'ltr',\n    components: {},\n    // Inject component definitions.\n    palette: _extends({\n      mode: 'light'\n    }, paletteInput),\n    spacing,\n    shape: _extends({}, shape, shapeInput)\n  }, other);\n  muiTheme = args.reduce((acc, argument) => deepmerge(acc, argument), muiTheme);\n  muiTheme.unstable_sxConfig = _extends({}, defaultSxConfig, other == null ? void 0 : other.unstable_sxConfig);\n  muiTheme.unstable_sx = function sx(props) {\n    return styleFunctionSx({\n      sx: props,\n      theme: this\n    });\n  };\n  return muiTheme;\n}\nexport default createTheme;","const shape = {\n  borderRadius: 4\n};\nexport default shape;","import style from './style';\nimport compose from './compose';\nimport { createUnaryUnit, getValue } from './spacing';\nimport { handleBreakpoints } from './breakpoints';\nimport responsivePropType from './responsivePropType';\n\n// false positive\n// eslint-disable-next-line react/function-component-definition\nexport const gap = props => {\n  if (props.gap !== undefined && props.gap !== null) {\n    const transformer = createUnaryUnit(props.theme, 'spacing', 8, 'gap');\n    const styleFromPropValue = propValue => ({\n      gap: getValue(transformer, propValue)\n    });\n    return handleBreakpoints(props, props.gap, styleFromPropValue);\n  }\n  return null;\n};\ngap.propTypes = process.env.NODE_ENV !== 'production' ? {\n  gap: responsivePropType\n} : {};\ngap.filterProps = ['gap'];\n\n// false positive\n// eslint-disable-next-line react/function-component-definition\nexport const columnGap = props => {\n  if (props.columnGap !== undefined && props.columnGap !== null) {\n    const transformer = createUnaryUnit(props.theme, 'spacing', 8, 'columnGap');\n    const styleFromPropValue = propValue => ({\n      columnGap: getValue(transformer, propValue)\n    });\n    return handleBreakpoints(props, props.columnGap, styleFromPropValue);\n  }\n  return null;\n};\ncolumnGap.propTypes = process.env.NODE_ENV !== 'production' ? {\n  columnGap: responsivePropType\n} : {};\ncolumnGap.filterProps = ['columnGap'];\n\n// false positive\n// eslint-disable-next-line react/function-component-definition\nexport const rowGap = props => {\n  if (props.rowGap !== undefined && props.rowGap !== null) {\n    const transformer = createUnaryUnit(props.theme, 'spacing', 8, 'rowGap');\n    const styleFromPropValue = propValue => ({\n      rowGap: getValue(transformer, propValue)\n    });\n    return handleBreakpoints(props, props.rowGap, styleFromPropValue);\n  }\n  return null;\n};\nrowGap.propTypes = process.env.NODE_ENV !== 'production' ? {\n  rowGap: responsivePropType\n} : {};\nrowGap.filterProps = ['rowGap'];\nexport const gridColumn = style({\n  prop: 'gridColumn'\n});\nexport const gridRow = style({\n  prop: 'gridRow'\n});\nexport const gridAutoFlow = style({\n  prop: 'gridAutoFlow'\n});\nexport const gridAutoColumns = style({\n  prop: 'gridAutoColumns'\n});\nexport const gridAutoRows = style({\n  prop: 'gridAutoRows'\n});\nexport const gridTemplateColumns = style({\n  prop: 'gridTemplateColumns'\n});\nexport const gridTemplateRows = style({\n  prop: 'gridTemplateRows'\n});\nexport const gridTemplateAreas = style({\n  prop: 'gridTemplateAreas'\n});\nexport const gridArea = style({\n  prop: 'gridArea'\n});\nconst grid = compose(gap, columnGap, rowGap, gridColumn, gridRow, gridAutoFlow, gridAutoColumns, gridAutoRows, gridTemplateColumns, gridTemplateRows, gridTemplateAreas, gridArea);\nexport default grid;","import { deepmerge } from '@mui/utils';\nfunction merge(acc, item) {\n  if (!item) {\n    return acc;\n  }\n  return deepmerge(acc, item, {\n    clone: false // No need to clone deep, it's way faster.\n  });\n}\nexport default merge;","import style from './style';\nimport compose from './compose';\nexport function paletteTransform(value, userValue) {\n  if (userValue === 'grey') {\n    return userValue;\n  }\n  return value;\n}\nexport const color = style({\n  prop: 'color',\n  themeKey: 'palette',\n  transform: paletteTransform\n});\nexport const bgcolor = style({\n  prop: 'bgcolor',\n  cssProperty: 'backgroundColor',\n  themeKey: 'palette',\n  transform: paletteTransform\n});\nexport const backgroundColor = style({\n  prop: 'backgroundColor',\n  themeKey: 'palette',\n  transform: paletteTransform\n});\nconst palette = compose(color, bgcolor, backgroundColor);\nexport default palette;","import style from './style';\nimport compose from './compose';\nimport { handleBreakpoints, values as breakpointsValues } from './breakpoints';\nexport function sizingTransform(value) {\n  return value <= 1 && value !== 0 ? `${value * 100}%` : value;\n}\nexport const width = style({\n  prop: 'width',\n  transform: sizingTransform\n});\nexport const maxWidth = props => {\n  if (props.maxWidth !== undefined && props.maxWidth !== null) {\n    const styleFromPropValue = propValue => {\n      var _props$theme, _props$theme2;\n      const breakpoint = ((_props$theme = props.theme) == null || (_props$theme = _props$theme.breakpoints) == null || (_props$theme = _props$theme.values) == null ? void 0 : _props$theme[propValue]) || breakpointsValues[propValue];\n      if (!breakpoint) {\n        return {\n          maxWidth: sizingTransform(propValue)\n        };\n      }\n      if (((_props$theme2 = props.theme) == null || (_props$theme2 = _props$theme2.breakpoints) == null ? void 0 : _props$theme2.unit) !== 'px') {\n        return {\n          maxWidth: `${breakpoint}${props.theme.breakpoints.unit}`\n        };\n      }\n      return {\n        maxWidth: breakpoint\n      };\n    };\n    return handleBreakpoints(props, props.maxWidth, styleFromPropValue);\n  }\n  return null;\n};\nmaxWidth.filterProps = ['maxWidth'];\nexport const minWidth = style({\n  prop: 'minWidth',\n  transform: sizingTransform\n});\nexport const height = style({\n  prop: 'height',\n  transform: sizingTransform\n});\nexport const maxHeight = style({\n  prop: 'maxHeight',\n  transform: sizingTransform\n});\nexport const minHeight = style({\n  prop: 'minHeight',\n  transform: sizingTransform\n});\nexport const sizeWidth = style({\n  prop: 'size',\n  cssProperty: 'width',\n  transform: sizingTransform\n});\nexport const sizeHeight = style({\n  prop: 'size',\n  cssProperty: 'height',\n  transform: sizingTransform\n});\nexport const boxSizing = style({\n  prop: 'boxSizing'\n});\nconst sizing = compose(width, maxWidth, minWidth, height, maxHeight, minHeight, boxSizing);\nexport default sizing;","import responsivePropType from './responsivePropType';\nimport { handleBreakpoints } from './breakpoints';\nimport { getPath } from './style';\nimport merge from './merge';\nimport memoize from './memoize';\nconst properties = {\n  m: 'margin',\n  p: 'padding'\n};\nconst directions = {\n  t: 'Top',\n  r: 'Right',\n  b: 'Bottom',\n  l: 'Left',\n  x: ['Left', 'Right'],\n  y: ['Top', 'Bottom']\n};\nconst aliases = {\n  marginX: 'mx',\n  marginY: 'my',\n  paddingX: 'px',\n  paddingY: 'py'\n};\n\n// memoize() impact:\n// From 300,000 ops/sec\n// To 350,000 ops/sec\nconst getCssProperties = memoize(prop => {\n  // It's not a shorthand notation.\n  if (prop.length > 2) {\n    if (aliases[prop]) {\n      prop = aliases[prop];\n    } else {\n      return [prop];\n    }\n  }\n  const [a, b] = prop.split('');\n  const property = properties[a];\n  const direction = directions[b] || '';\n  return Array.isArray(direction) ? direction.map(dir => property + dir) : [property + direction];\n});\nexport const marginKeys = ['m', 'mt', 'mr', 'mb', 'ml', 'mx', 'my', 'margin', 'marginTop', 'marginRight', 'marginBottom', 'marginLeft', 'marginX', 'marginY', 'marginInline', 'marginInlineStart', 'marginInlineEnd', 'marginBlock', 'marginBlockStart', 'marginBlockEnd'];\nexport const paddingKeys = ['p', 'pt', 'pr', 'pb', 'pl', 'px', 'py', 'padding', 'paddingTop', 'paddingRight', 'paddingBottom', 'paddingLeft', 'paddingX', 'paddingY', 'paddingInline', 'paddingInlineStart', 'paddingInlineEnd', 'paddingBlock', 'paddingBlockStart', 'paddingBlockEnd'];\nconst spacingKeys = [...marginKeys, ...paddingKeys];\nexport function createUnaryUnit(theme, themeKey, defaultValue, propName) {\n  var _getPath;\n  const themeSpacing = (_getPath = getPath(theme, themeKey, false)) != null ? _getPath : defaultValue;\n  if (typeof themeSpacing === 'number') {\n    return abs => {\n      if (typeof abs === 'string') {\n        return abs;\n      }\n      if (process.env.NODE_ENV !== 'production') {\n        if (typeof abs !== 'number') {\n          console.error(`MUI: Expected ${propName} argument to be a number or a string, got ${abs}.`);\n        }\n      }\n      return themeSpacing * abs;\n    };\n  }\n  if (Array.isArray(themeSpacing)) {\n    return abs => {\n      if (typeof abs === 'string') {\n        return abs;\n      }\n      if (process.env.NODE_ENV !== 'production') {\n        if (!Number.isInteger(abs)) {\n          console.error([`MUI: The \\`theme.${themeKey}\\` array type cannot be combined with non integer values.` + `You should either use an integer value that can be used as index, or define the \\`theme.${themeKey}\\` as a number.`].join('\\n'));\n        } else if (abs > themeSpacing.length - 1) {\n          console.error([`MUI: The value provided (${abs}) overflows.`, `The supported values are: ${JSON.stringify(themeSpacing)}.`, `${abs} > ${themeSpacing.length - 1}, you need to add the missing values.`].join('\\n'));\n        }\n      }\n      return themeSpacing[abs];\n    };\n  }\n  if (typeof themeSpacing === 'function') {\n    return themeSpacing;\n  }\n  if (process.env.NODE_ENV !== 'production') {\n    console.error([`MUI: The \\`theme.${themeKey}\\` value (${themeSpacing}) is invalid.`, 'It should be a number, an array or a function.'].join('\\n'));\n  }\n  return () => undefined;\n}\nexport function createUnarySpacing(theme) {\n  return createUnaryUnit(theme, 'spacing', 8, 'spacing');\n}\nexport function getValue(transformer, propValue) {\n  if (typeof propValue === 'string' || propValue == null) {\n    return propValue;\n  }\n  const abs = Math.abs(propValue);\n  const transformed = transformer(abs);\n  if (propValue >= 0) {\n    return transformed;\n  }\n  if (typeof transformed === 'number') {\n    return -transformed;\n  }\n  return `-${transformed}`;\n}\nexport function getStyleFromPropValue(cssProperties, transformer) {\n  return propValue => cssProperties.reduce((acc, cssProperty) => {\n    acc[cssProperty] = getValue(transformer, propValue);\n    return acc;\n  }, {});\n}\nfunction resolveCssProperty(props, keys, prop, transformer) {\n  // Using a hash computation over an array iteration could be faster, but with only 28 items,\n  // it's doesn't worth the bundle size.\n  if (keys.indexOf(prop) === -1) {\n    return null;\n  }\n  const cssProperties = getCssProperties(prop);\n  const styleFromPropValue = getStyleFromPropValue(cssProperties, transformer);\n  const propValue = props[prop];\n  return handleBreakpoints(props, propValue, styleFromPropValue);\n}\nfunction style(props, keys) {\n  const transformer = createUnarySpacing(props.theme);\n  return Object.keys(props).map(prop => resolveCssProperty(props, keys, prop, transformer)).reduce(merge, {});\n}\nexport function margin(props) {\n  return style(props, marginKeys);\n}\nmargin.propTypes = process.env.NODE_ENV !== 'production' ? marginKeys.reduce((obj, key) => {\n  obj[key] = responsivePropType;\n  return obj;\n}, {}) : {};\nmargin.filterProps = marginKeys;\nexport function padding(props) {\n  return style(props, paddingKeys);\n}\npadding.propTypes = process.env.NODE_ENV !== 'production' ? paddingKeys.reduce((obj, key) => {\n  obj[key] = responsivePropType;\n  return obj;\n}, {}) : {};\npadding.filterProps = paddingKeys;\nfunction spacing(props) {\n  return style(props, spacingKeys);\n}\nspacing.propTypes = process.env.NODE_ENV !== 'production' ? spacingKeys.reduce((obj, key) => {\n  obj[key] = responsivePropType;\n  return obj;\n}, {}) : {};\nspacing.filterProps = spacingKeys;\nexport default spacing;","export default function memoize(fn) {\n  const cache = {};\n  return arg => {\n    if (cache[arg] === undefined) {\n      cache[arg] = fn(arg);\n    }\n    return cache[arg];\n  };\n}","import { unstable_capitalize as capitalize } from '@mui/utils';\nimport responsivePropType from './responsivePropType';\nimport { handleBreakpoints } from './breakpoints';\nexport function getPath(obj, path, checkVars = true) {\n  if (!path || typeof path !== 'string') {\n    return null;\n  }\n\n  // Check if CSS variables are used\n  if (obj && obj.vars && checkVars) {\n    const val = `vars.${path}`.split('.').reduce((acc, item) => acc && acc[item] ? acc[item] : null, obj);\n    if (val != null) {\n      return val;\n    }\n  }\n  return path.split('.').reduce((acc, item) => {\n    if (acc && acc[item] != null) {\n      return acc[item];\n    }\n    return null;\n  }, obj);\n}\nexport function getStyleValue(themeMapping, transform, propValueFinal, userValue = propValueFinal) {\n  let value;\n  if (typeof themeMapping === 'function') {\n    value = themeMapping(propValueFinal);\n  } else if (Array.isArray(themeMapping)) {\n    value = themeMapping[propValueFinal] || userValue;\n  } else {\n    value = getPath(themeMapping, propValueFinal) || userValue;\n  }\n  if (transform) {\n    value = transform(value, userValue, themeMapping);\n  }\n  return value;\n}\nfunction style(options) {\n  const {\n    prop,\n    cssProperty = options.prop,\n    themeKey,\n    transform\n  } = options;\n\n  // false positive\n  // eslint-disable-next-line react/function-component-definition\n  const fn = props => {\n    if (props[prop] == null) {\n      return null;\n    }\n    const propValue = props[prop];\n    const theme = props.theme;\n    const themeMapping = getPath(theme, themeKey) || {};\n    const styleFromPropValue = propValueFinal => {\n      let value = getStyleValue(themeMapping, transform, propValueFinal);\n      if (propValueFinal === value && typeof propValueFinal === 'string') {\n        // Haven't found value\n        value = getStyleValue(themeMapping, transform, `${prop}${propValueFinal === 'default' ? '' : capitalize(propValueFinal)}`, propValueFinal);\n      }\n      if (cssProperty === false) {\n        return value;\n      }\n      return {\n        [cssProperty]: value\n      };\n    };\n    return handleBreakpoints(props, propValue, styleFromPropValue);\n  };\n  fn.propTypes = process.env.NODE_ENV !== 'production' ? {\n    [prop]: responsivePropType\n  } : {};\n  fn.filterProps = [prop];\n  return fn;\n}\nexport default style;","import { padding, margin } from '../spacing';\nimport { borderRadius, borderTransform } from '../borders';\nimport { gap, rowGap, columnGap } from '../cssGrid';\nimport { paletteTransform } from '../palette';\nimport { maxWidth, sizingTransform } from '../sizing';\nconst defaultSxConfig = {\n  // borders\n  border: {\n    themeKey: 'borders',\n    transform: borderTransform\n  },\n  borderTop: {\n    themeKey: 'borders',\n    transform: borderTransform\n  },\n  borderRight: {\n    themeKey: 'borders',\n    transform: borderTransform\n  },\n  borderBottom: {\n    themeKey: 'borders',\n    transform: borderTransform\n  },\n  borderLeft: {\n    themeKey: 'borders',\n    transform: borderTransform\n  },\n  borderColor: {\n    themeKey: 'palette'\n  },\n  borderTopColor: {\n    themeKey: 'palette'\n  },\n  borderRightColor: {\n    themeKey: 'palette'\n  },\n  borderBottomColor: {\n    themeKey: 'palette'\n  },\n  borderLeftColor: {\n    themeKey: 'palette'\n  },\n  outline: {\n    themeKey: 'borders',\n    transform: borderTransform\n  },\n  outlineColor: {\n    themeKey: 'palette'\n  },\n  borderRadius: {\n    themeKey: 'shape.borderRadius',\n    style: borderRadius\n  },\n  // palette\n  color: {\n    themeKey: 'palette',\n    transform: paletteTransform\n  },\n  bgcolor: {\n    themeKey: 'palette',\n    cssProperty: 'backgroundColor',\n    transform: paletteTransform\n  },\n  backgroundColor: {\n    themeKey: 'palette',\n    transform: paletteTransform\n  },\n  // spacing\n  p: {\n    style: padding\n  },\n  pt: {\n    style: padding\n  },\n  pr: {\n    style: padding\n  },\n  pb: {\n    style: padding\n  },\n  pl: {\n    style: padding\n  },\n  px: {\n    style: padding\n  },\n  py: {\n    style: padding\n  },\n  padding: {\n    style: padding\n  },\n  paddingTop: {\n    style: padding\n  },\n  paddingRight: {\n    style: padding\n  },\n  paddingBottom: {\n    style: padding\n  },\n  paddingLeft: {\n    style: padding\n  },\n  paddingX: {\n    style: padding\n  },\n  paddingY: {\n    style: padding\n  },\n  paddingInline: {\n    style: padding\n  },\n  paddingInlineStart: {\n    style: padding\n  },\n  paddingInlineEnd: {\n    style: padding\n  },\n  paddingBlock: {\n    style: padding\n  },\n  paddingBlockStart: {\n    style: padding\n  },\n  paddingBlockEnd: {\n    style: padding\n  },\n  m: {\n    style: margin\n  },\n  mt: {\n    style: margin\n  },\n  mr: {\n    style: margin\n  },\n  mb: {\n    style: margin\n  },\n  ml: {\n    style: margin\n  },\n  mx: {\n    style: margin\n  },\n  my: {\n    style: margin\n  },\n  margin: {\n    style: margin\n  },\n  marginTop: {\n    style: margin\n  },\n  marginRight: {\n    style: margin\n  },\n  marginBottom: {\n    style: margin\n  },\n  marginLeft: {\n    style: margin\n  },\n  marginX: {\n    style: margin\n  },\n  marginY: {\n    style: margin\n  },\n  marginInline: {\n    style: margin\n  },\n  marginInlineStart: {\n    style: margin\n  },\n  marginInlineEnd: {\n    style: margin\n  },\n  marginBlock: {\n    style: margin\n  },\n  marginBlockStart: {\n    style: margin\n  },\n  marginBlockEnd: {\n    style: margin\n  },\n  // display\n  displayPrint: {\n    cssProperty: false,\n    transform: value => ({\n      '@media print': {\n        display: value\n      }\n    })\n  },\n  display: {},\n  overflow: {},\n  textOverflow: {},\n  visibility: {},\n  whiteSpace: {},\n  // flexbox\n  flexBasis: {},\n  flexDirection: {},\n  flexWrap: {},\n  justifyContent: {},\n  alignItems: {},\n  alignContent: {},\n  order: {},\n  flex: {},\n  flexGrow: {},\n  flexShrink: {},\n  alignSelf: {},\n  justifyItems: {},\n  justifySelf: {},\n  // grid\n  gap: {\n    style: gap\n  },\n  rowGap: {\n    style: rowGap\n  },\n  columnGap: {\n    style: columnGap\n  },\n  gridColumn: {},\n  gridRow: {},\n  gridAutoFlow: {},\n  gridAutoColumns: {},\n  gridAutoRows: {},\n  gridTemplateColumns: {},\n  gridTemplateRows: {},\n  gridTemplateAreas: {},\n  gridArea: {},\n  // positions\n  position: {},\n  zIndex: {\n    themeKey: 'zIndex'\n  },\n  top: {},\n  right: {},\n  bottom: {},\n  left: {},\n  // shadows\n  boxShadow: {\n    themeKey: 'shadows'\n  },\n  // sizing\n  width: {\n    transform: sizingTransform\n  },\n  maxWidth: {\n    style: maxWidth\n  },\n  minWidth: {\n    transform: sizingTransform\n  },\n  height: {\n    transform: sizingTransform\n  },\n  maxHeight: {\n    transform: sizingTransform\n  },\n  minHeight: {\n    transform: sizingTransform\n  },\n  boxSizing: {},\n  // typography\n  fontFamily: {\n    themeKey: 'typography'\n  },\n  fontSize: {\n    themeKey: 'typography'\n  },\n  fontStyle: {\n    themeKey: 'typography'\n  },\n  fontWeight: {\n    themeKey: 'typography'\n  },\n  letterSpacing: {},\n  textTransform: {},\n  lineHeight: {},\n  textAlign: {},\n  typography: {\n    cssProperty: false,\n    themeKey: 'typography'\n  }\n};\nexport default defaultSxConfig;","import { unstable_capitalize as capitalize } from '@mui/utils';\nimport merge from '../merge';\nimport { getPath, getStyleValue as getValue } from '../style';\nimport { handleBreakpoints, createEmptyBreakpointObject, removeUnusedBreakpoints } from '../breakpoints';\nimport defaultSxConfig from './defaultSxConfig';\nfunction objectsHaveSameKeys(...objects) {\n  const allKeys = objects.reduce((keys, object) => keys.concat(Object.keys(object)), []);\n  const union = new Set(allKeys);\n  return objects.every(object => union.size === Object.keys(object).length);\n}\nfunction callIfFn(maybeFn, arg) {\n  return typeof maybeFn === 'function' ? maybeFn(arg) : maybeFn;\n}\n\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport function unstable_createStyleFunctionSx() {\n  function getThemeValue(prop, val, theme, config) {\n    const props = {\n      [prop]: val,\n      theme\n    };\n    const options = config[prop];\n    if (!options) {\n      return {\n        [prop]: val\n      };\n    }\n    const {\n      cssProperty = prop,\n      themeKey,\n      transform,\n      style\n    } = options;\n    if (val == null) {\n      return null;\n    }\n\n    // TODO v6: remove, see https://github.com/mui/material-ui/pull/38123\n    if (themeKey === 'typography' && val === 'inherit') {\n      return {\n        [prop]: val\n      };\n    }\n    const themeMapping = getPath(theme, themeKey) || {};\n    if (style) {\n      return style(props);\n    }\n    const styleFromPropValue = propValueFinal => {\n      let value = getValue(themeMapping, transform, propValueFinal);\n      if (propValueFinal === value && typeof propValueFinal === 'string') {\n        // Haven't found value\n        value = getValue(themeMapping, transform, `${prop}${propValueFinal === 'default' ? '' : capitalize(propValueFinal)}`, propValueFinal);\n      }\n      if (cssProperty === false) {\n        return value;\n      }\n      return {\n        [cssProperty]: value\n      };\n    };\n    return handleBreakpoints(props, val, styleFromPropValue);\n  }\n  function styleFunctionSx(props) {\n    var _theme$unstable_sxCon;\n    const {\n      sx,\n      theme = {}\n    } = props || {};\n    if (!sx) {\n      return null; // Emotion & styled-components will neglect null\n    }\n    const config = (_theme$unstable_sxCon = theme.unstable_sxConfig) != null ? _theme$unstable_sxCon : defaultSxConfig;\n\n    /*\n     * Receive `sxInput` as object or callback\n     * and then recursively check keys & values to create media query object styles.\n     * (the result will be used in `styled`)\n     */\n    function traverse(sxInput) {\n      let sxObject = sxInput;\n      if (typeof sxInput === 'function') {\n        sxObject = sxInput(theme);\n      } else if (typeof sxInput !== 'object') {\n        // value\n        return sxInput;\n      }\n      if (!sxObject) {\n        return null;\n      }\n      const emptyBreakpoints = createEmptyBreakpointObject(theme.breakpoints);\n      const breakpointsKeys = Object.keys(emptyBreakpoints);\n      let css = emptyBreakpoints;\n      Object.keys(sxObject).forEach(styleKey => {\n        const value = callIfFn(sxObject[styleKey], theme);\n        if (value !== null && value !== undefined) {\n          if (typeof value === 'object') {\n            if (config[styleKey]) {\n              css = merge(css, getThemeValue(styleKey, value, theme, config));\n            } else {\n              const breakpointsValues = handleBreakpoints({\n                theme\n              }, value, x => ({\n                [styleKey]: x\n              }));\n              if (objectsHaveSameKeys(breakpointsValues, value)) {\n                css[styleKey] = styleFunctionSx({\n                  sx: value,\n                  theme\n                });\n              } else {\n                css = merge(css, breakpointsValues);\n              }\n            }\n          } else {\n            css = merge(css, getThemeValue(styleKey, value, theme, config));\n          }\n        }\n      });\n      return removeUnusedBreakpoints(breakpointsKeys, css);\n    }\n    return Array.isArray(sx) ? sx.map(traverse) : traverse(sx);\n  }\n  return styleFunctionSx;\n}\nconst styleFunctionSx = unstable_createStyleFunctionSx();\nstyleFunctionSx.filterProps = ['sx'];\nexport default styleFunctionSx;","'use client';\n\nimport createTheme from './createTheme';\nimport useThemeWithoutDefault from './useThemeWithoutDefault';\nexport const systemDefaultTheme = createTheme();\nfunction useTheme(defaultTheme = systemDefaultTheme) {\n  return useThemeWithoutDefault(defaultTheme);\n}\nexport default useTheme;","'use client';\n\nimport * as React from 'react';\nimport { ThemeContext } from '@mui/styled-engine';\nfunction isObjectEmpty(obj) {\n  return Object.keys(obj).length === 0;\n}\nfunction useTheme(defaultTheme = null) {\n  const contextTheme = React.useContext(ThemeContext);\n  return !contextTheme || isObjectEmpty(contextTheme) ? defaultTheme : contextTheme;\n}\nexport default useTheme;","import _formatMuiErrorMessage from \"@mui/utils/formatMuiErrorMessage\";\n// It should to be noted that this function isn't equivalent to `text-transform: capitalize`.\n//\n// A strict capitalization should uppercase the first letter of each word in the sentence.\n// We only handle the first word.\nexport default function capitalize(string) {\n  if (typeof string !== 'string') {\n    throw new Error(process.env.NODE_ENV !== \"production\" ? `MUI: \\`capitalize(string)\\` expects a string argument.` : _formatMuiErrorMessage(7));\n  }\n  return string.charAt(0).toUpperCase() + string.slice(1);\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nexport function isPlainObject(item) {\n  return item !== null && typeof item === 'object' && item.constructor === Object;\n}\nfunction deepClone(source) {\n  if (!isPlainObject(source)) {\n    return source;\n  }\n  const output = {};\n  Object.keys(source).forEach(key => {\n    output[key] = deepClone(source[key]);\n  });\n  return output;\n}\nexport default function deepmerge(target, source, options = {\n  clone: true\n}) {\n  const output = options.clone ? _extends({}, target) : target;\n  if (isPlainObject(target) && isPlainObject(source)) {\n    Object.keys(source).forEach(key => {\n      // Avoid prototype pollution\n      if (key === '__proto__') {\n        return;\n      }\n      if (isPlainObject(source[key]) && key in target && isPlainObject(target[key])) {\n        // Since `output` is a clone of `target` and we have narrowed `target` in this block we can cast to the same type.\n        output[key] = deepmerge(target[key], source[key], options);\n      } else if (options.clone) {\n        output[key] = isPlainObject(source[key]) ? deepClone(source[key]) : source[key];\n      } else {\n        output[key] = source[key];\n      }\n    });\n  }\n  return output;\n}","/**\n * WARNING: Don't import this directly.\n * Use `MuiError` from `@mui-internal/babel-macros/MuiError.macro` instead.\n * @param {number} code\n */\nexport default function formatMuiErrorMessage(code) {\n  // Apply babel-plugin-transform-template-literals in loose mode\n  // loose mode is safe if we're concatenating primitives\n  // see https://babeljs.io/docs/en/babel-plugin-transform-template-literals#loose\n  /* eslint-disable prefer-template */\n  let url = 'https://mui.com/production-error/?code=' + code;\n  for (let i = 1; i < arguments.length; i += 1) {\n    // rest params over-transpile for this case\n    // eslint-disable-next-line prefer-rest-params\n    url += '&args[]=' + encodeURIComponent(arguments[i]);\n  }\n  return 'Minified MUI error #' + code + '; visit ' + url + ' for the full message.';\n  /* eslint-enable prefer-template */\n}","\"use strict\";\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nObject.defineProperty(exports, \"GeoJsonEditMode\", {\n  enumerable: true,\n  get: function get() {\n    return _geojsonEditMode.GeoJsonEditMode;\n  }\n});\nObject.defineProperty(exports, \"ModifyMode\", {\n  enumerable: true,\n  get: function get() {\n    return _modifyMode.ModifyMode;\n  }\n});\nObject.defineProperty(exports, \"ResizeCircleMode\", {\n  enumerable: true,\n  get: function get() {\n    return _resizeCircleMode.ResizeCircleMode;\n  }\n});\nObject.defineProperty(exports, \"TranslateMode\", {\n  enumerable: true,\n  get: function get() {\n    return _translateMode.TranslateMode;\n  }\n});\nObject.defineProperty(exports, \"ScaleMode\", {\n  enumerable: true,\n  get: function get() {\n    return _scaleMode.ScaleMode;\n  }\n});\nObject.defineProperty(exports, \"RotateMode\", {\n  enumerable: true,\n  get: function get() {\n    return _rotateMode.RotateMode;\n  }\n});\nObject.defineProperty(exports, \"DuplicateMode\", {\n  enumerable: true,\n  get: function get() {\n    return _duplicateMode.DuplicateMode;\n  }\n});\nObject.defineProperty(exports, \"ExtendLineStringMode\", {\n  enumerable: true,\n  get: function get() {\n    return _extendLineStringMode.ExtendLineStringMode;\n  }\n});\nObject.defineProperty(exports, \"SplitPolygonMode\", {\n  enumerable: true,\n  get: function get() {\n    return _splitPolygonMode.SplitPolygonMode;\n  }\n});\nObject.defineProperty(exports, \"ExtrudeMode\", {\n  enumerable: true,\n  get: function get() {\n    return _extrudeMode.ExtrudeMode;\n  }\n});\nObject.defineProperty(exports, \"ElevationMode\", {\n  enumerable: true,\n  get: function get() {\n    return _elevationMode.ElevationMode;\n  }\n});\nObject.defineProperty(exports, \"TransformMode\", {\n  enumerable: true,\n  get: function get() {\n    return _transformMode.TransformMode;\n  }\n});\nObject.defineProperty(exports, \"DrawPointMode\", {\n  enumerable: true,\n  get: function get() {\n    return _drawPointMode.DrawPointMode;\n  }\n});\nObject.defineProperty(exports, \"DrawLineStringMode\", {\n  enumerable: true,\n  get: function get() {\n    return _drawLineStringMode.DrawLineStringMode;\n  }\n});\nObject.defineProperty(exports, \"DrawPolygonMode\", {\n  enumerable: true,\n  get: function get() {\n    return _drawPolygonMode.DrawPolygonMode;\n  }\n});\nObject.defineProperty(exports, \"DrawRectangleMode\", {\n  enumerable: true,\n  get: function get() {\n    return _drawRectangleMode.DrawRectangleMode;\n  }\n});\nObject.defineProperty(exports, \"DrawSquareMode\", {\n  enumerable: true,\n  get: function get() {\n    return _drawSquareMode.DrawSquareMode;\n  }\n});\nObject.defineProperty(exports, \"DrawRectangleFromCenterMode\", {\n  enumerable: true,\n  get: function get() {\n    return _drawRectangleFromCenterMode.DrawRectangleFromCenterMode;\n  }\n});\nObject.defineProperty(exports, \"DrawSquareFromCenterMode\", {\n  enumerable: true,\n  get: function get() {\n    return _drawSquareFromCenterMode.DrawSquareFromCenterMode;\n  }\n});\nObject.defineProperty(exports, \"DrawCircleByDiameterMode\", {\n  enumerable: true,\n  get: function get() {\n    return _drawCircleByDiameterMode.DrawCircleByDiameterMode;\n  }\n});\nObject.defineProperty(exports, \"DrawCircleFromCenterMode\", {\n  enumerable: true,\n  get: function get() {\n    return _drawCircleFromCenterMode.DrawCircleFromCenterMode;\n  }\n});\nObject.defineProperty(exports, \"DrawEllipseByBoundingBoxMode\", {\n  enumerable: true,\n  get: function get() {\n    return _drawEllipseByBoundingBoxMode.DrawEllipseByBoundingBoxMode;\n  }\n});\nObject.defineProperty(exports, \"DrawEllipseUsingThreePointsMode\", {\n  enumerable: true,\n  get: function get() {\n    return _drawEllipseUsingThreePointsMode.DrawEllipseUsingThreePointsMode;\n  }\n});\nObject.defineProperty(exports, \"DrawRectangleUsingThreePointsMode\", {\n  enumerable: true,\n  get: function get() {\n    return _drawRectangleUsingThreePointsMode.DrawRectangleUsingThreePointsMode;\n  }\n});\nObject.defineProperty(exports, \"Draw90DegreePolygonMode\", {\n  enumerable: true,\n  get: function get() {\n    return _draw90degreePolygonMode.Draw90DegreePolygonMode;\n  }\n});\nObject.defineProperty(exports, \"DrawPolygonByDraggingMode\", {\n  enumerable: true,\n  get: function get() {\n    return _drawPolygonByDraggingMode.DrawPolygonByDraggingMode;\n  }\n});\nObject.defineProperty(exports, \"ImmutableFeatureCollection\", {\n  enumerable: true,\n  get: function get() {\n    return _immutableFeatureCollection.ImmutableFeatureCollection;\n  }\n});\nObject.defineProperty(exports, \"ViewMode\", {\n  enumerable: true,\n  get: function get() {\n    return _viewMode.ViewMode;\n  }\n});\nObject.defineProperty(exports, \"MeasureDistanceMode\", {\n  enumerable: true,\n  get: function get() {\n    return _measureDistanceMode.MeasureDistanceMode;\n  }\n});\nObject.defineProperty(exports, \"MeasureAreaMode\", {\n  enumerable: true,\n  get: function get() {\n    return _measureAreaMode.MeasureAreaMode;\n  }\n});\nObject.defineProperty(exports, \"MeasureAngleMode\", {\n  enumerable: true,\n  get: function get() {\n    return _measureAngleMode.MeasureAngleMode;\n  }\n});\nObject.defineProperty(exports, \"CompositeMode\", {\n  enumerable: true,\n  get: function get() {\n    return _compositeMode.CompositeMode;\n  }\n});\nObject.defineProperty(exports, \"SnappableMode\", {\n  enumerable: true,\n  get: function get() {\n    return _snappableMode.SnappableMode;\n  }\n});\nObject.defineProperty(exports, \"_memoize\", {\n  enumerable: true,\n  get: function get() {\n    return _memoize[\"default\"];\n  }\n});\nexports.utils = void 0;\n\nvar _geojsonEditMode = require(\"./lib/geojson-edit-mode\");\n\nvar _modifyMode = require(\"./lib/modify-mode\");\n\nvar _resizeCircleMode = require(\"./lib/resize-circle-mode\");\n\nvar _translateMode = require(\"./lib/translate-mode\");\n\nvar _scaleMode = require(\"./lib/scale-mode\");\n\nvar _rotateMode = require(\"./lib/rotate-mode\");\n\nvar _duplicateMode = require(\"./lib/duplicate-mode\");\n\nvar _extendLineStringMode = require(\"./lib/extend-line-string-mode\");\n\nvar _splitPolygonMode = require(\"./lib/split-polygon-mode\");\n\nvar _extrudeMode = require(\"./lib/extrude-mode\");\n\nvar _elevationMode = require(\"./lib/elevation-mode\");\n\nvar _transformMode = require(\"./lib/transform-mode\");\n\nvar _drawPointMode = require(\"./lib/draw-point-mode\");\n\nvar _drawLineStringMode = require(\"./lib/draw-line-string-mode\");\n\nvar _drawPolygonMode = require(\"./lib/draw-polygon-mode\");\n\nvar _drawRectangleMode = require(\"./lib/draw-rectangle-mode\");\n\nvar _drawSquareMode = require(\"./lib/draw-square-mode\");\n\nvar _drawRectangleFromCenterMode = require(\"./lib/draw-rectangle-from-center-mode\");\n\nvar _drawSquareFromCenterMode = require(\"./lib/draw-square-from-center-mode\");\n\nvar _drawCircleByDiameterMode = require(\"./lib/draw-circle-by-diameter-mode\");\n\nvar _drawCircleFromCenterMode = require(\"./lib/draw-circle-from-center-mode\");\n\nvar _drawEllipseByBoundingBoxMode = require(\"./lib/draw-ellipse-by-bounding-box-mode\");\n\nvar _drawEllipseUsingThreePointsMode = require(\"./lib/draw-ellipse-using-three-points-mode\");\n\nvar _drawRectangleUsingThreePointsMode = require(\"./lib/draw-rectangle-using-three-points-mode\");\n\nvar _draw90degreePolygonMode = require(\"./lib/draw-90degree-polygon-mode\");\n\nvar _drawPolygonByDraggingMode = require(\"./lib/draw-polygon-by-dragging-mode\");\n\nvar _immutableFeatureCollection = require(\"./lib/immutable-feature-collection\");\n\nvar _viewMode = require(\"./lib/view-mode\");\n\nvar _measureDistanceMode = require(\"./lib/measure-distance-mode\");\n\nvar _measureAreaMode = require(\"./lib/measure-area-mode\");\n\nvar _measureAngleMode = require(\"./lib/measure-angle-mode\");\n\nvar _compositeMode = require(\"./lib/composite-mode\");\n\nvar _snappableMode = require(\"./lib/snappable-mode\");\n\nvar _memoize = _interopRequireDefault(require(\"./memoize\"));\n\nvar utils = _interopRequireWildcard(require(\"./utils\"));\n\nexports.utils = utils;\n\nfunction _getRequireWildcardCache() { if (typeof WeakMap !== \"function\") return null; var cache = new WeakMap(); _getRequireWildcardCache = function _getRequireWildcardCache() { return cache; }; return cache; }\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== \"object\" && typeof obj !== \"function\") { return { \"default\": obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj[\"default\"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFJQTs7QUFHQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFHQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFHQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFHQTs7QUEyQ0EiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgdHlwZSB7IEVkaXRNb2RlIH0gZnJvbSAnLi9saWIvZWRpdC1tb2RlJztcbmV4cG9ydCB0eXBlIHsgR2VvSnNvbkVkaXRNb2RlVHlwZSB9IGZyb20gJy4vbGliL2dlb2pzb24tZWRpdC1tb2RlJztcbmV4cG9ydCB0eXBlIHsgR2VvSnNvbkVkaXRNb2RlQ29uc3RydWN0b3IgfSBmcm9tICcuL2xpYi9nZW9qc29uLWVkaXQtbW9kZSc7XG5cbmV4cG9ydCB7IEdlb0pzb25FZGl0TW9kZSB9IGZyb20gJy4vbGliL2dlb2pzb24tZWRpdC1tb2RlJztcblxuLy8gQWx0ZXIgbW9kZXNcbmV4cG9ydCB7IE1vZGlmeU1vZGUgfSBmcm9tICcuL2xpYi9tb2RpZnktbW9kZSc7XG5leHBvcnQgeyBSZXNpemVDaXJjbGVNb2RlIH0gZnJvbSAnLi9saWIvcmVzaXplLWNpcmNsZS1tb2RlJztcbmV4cG9ydCB7IFRyYW5zbGF0ZU1vZGUgfSBmcm9tICcuL2xpYi90cmFuc2xhdGUtbW9kZSc7XG5leHBvcnQgeyBTY2FsZU1vZGUgfSBmcm9tICcuL2xpYi9zY2FsZS1tb2RlJztcbmV4cG9ydCB7IFJvdGF0ZU1vZGUgfSBmcm9tICcuL2xpYi9yb3RhdGUtbW9kZSc7XG5leHBvcnQgeyBEdXBsaWNhdGVNb2RlIH0gZnJvbSAnLi9saWIvZHVwbGljYXRlLW1vZGUnO1xuZXhwb3J0IHsgRXh0ZW5kTGluZVN0cmluZ01vZGUgfSBmcm9tICcuL2xpYi9leHRlbmQtbGluZS1zdHJpbmctbW9kZSc7XG5leHBvcnQgeyBTcGxpdFBvbHlnb25Nb2RlIH0gZnJvbSAnLi9saWIvc3BsaXQtcG9seWdvbi1tb2RlJztcbmV4cG9ydCB7IEV4dHJ1ZGVNb2RlIH0gZnJvbSAnLi9saWIvZXh0cnVkZS1tb2RlJztcbmV4cG9ydCB7IEVsZXZhdGlvbk1vZGUgfSBmcm9tICcuL2xpYi9lbGV2YXRpb24tbW9kZSc7XG5leHBvcnQgeyBUcmFuc2Zvcm1Nb2RlIH0gZnJvbSAnLi9saWIvdHJhbnNmb3JtLW1vZGUnO1xuXG4vLyBEcmF3IG1vZGVzXG5leHBvcnQgeyBEcmF3UG9pbnRNb2RlIH0gZnJvbSAnLi9saWIvZHJhdy1wb2ludC1tb2RlJztcbmV4cG9ydCB7IERyYXdMaW5lU3RyaW5nTW9kZSB9IGZyb20gJy4vbGliL2RyYXctbGluZS1zdHJpbmctbW9kZSc7XG5leHBvcnQgeyBEcmF3UG9seWdvbk1vZGUgfSBmcm9tICcuL2xpYi9kcmF3LXBvbHlnb24tbW9kZSc7XG5leHBvcnQgeyBEcmF3UmVjdGFuZ2xlTW9kZSB9IGZyb20gJy4vbGliL2RyYXctcmVjdGFuZ2xlLW1vZGUnO1xuZXhwb3J0IHsgRHJhd1NxdWFyZU1vZGUgfSBmcm9tICcuL2xpYi9kcmF3LXNxdWFyZS1tb2RlJztcbmV4cG9ydCB7IERyYXdSZWN0YW5nbGVGcm9tQ2VudGVyTW9kZSB9IGZyb20gJy4vbGliL2RyYXctcmVjdGFuZ2xlLWZyb20tY2VudGVyLW1vZGUnO1xuZXhwb3J0IHsgRHJhd1NxdWFyZUZyb21DZW50ZXJNb2RlIH0gZnJvbSAnLi9saWIvZHJhdy1zcXVhcmUtZnJvbS1jZW50ZXItbW9kZSc7XG5leHBvcnQgeyBEcmF3Q2lyY2xlQnlEaWFtZXRlck1vZGUgfSBmcm9tICcuL2xpYi9kcmF3LWNpcmNsZS1ieS1kaWFtZXRlci1tb2RlJztcbmV4cG9ydCB7IERyYXdDaXJjbGVGcm9tQ2VudGVyTW9kZSB9IGZyb20gJy4vbGliL2RyYXctY2lyY2xlLWZyb20tY2VudGVyLW1vZGUnO1xuZXhwb3J0IHsgRHJhd0VsbGlwc2VCeUJvdW5kaW5nQm94TW9kZSB9IGZyb20gJy4vbGliL2RyYXctZWxsaXBzZS1ieS1ib3VuZGluZy1ib3gtbW9kZSc7XG5leHBvcnQgeyBEcmF3RWxsaXBzZVVzaW5nVGhyZWVQb2ludHNNb2RlIH0gZnJvbSAnLi9saWIvZHJhdy1lbGxpcHNlLXVzaW5nLXRocmVlLXBvaW50cy1tb2RlJztcbmV4cG9ydCB7IERyYXdSZWN0YW5nbGVVc2luZ1RocmVlUG9pbnRzTW9kZSB9IGZyb20gJy4vbGliL2RyYXctcmVjdGFuZ2xlLXVzaW5nLXRocmVlLXBvaW50cy1tb2RlJztcbmV4cG9ydCB7IERyYXc5MERlZ3JlZVBvbHlnb25Nb2RlIH0gZnJvbSAnLi9saWIvZHJhdy05MGRlZ3JlZS1wb2x5Z29uLW1vZGUnO1xuZXhwb3J0IHsgRHJhd1BvbHlnb25CeURyYWdnaW5nTW9kZSB9IGZyb20gJy4vbGliL2RyYXctcG9seWdvbi1ieS1kcmFnZ2luZy1tb2RlJztcbmV4cG9ydCB7IEltbXV0YWJsZUZlYXR1cmVDb2xsZWN0aW9uIH0gZnJvbSAnLi9saWIvaW1tdXRhYmxlLWZlYXR1cmUtY29sbGVjdGlvbic7XG5cbi8vIE90aGVyIG1vZGVzXG5leHBvcnQgeyBWaWV3TW9kZSB9IGZyb20gJy4vbGliL3ZpZXctbW9kZSc7XG5leHBvcnQgeyBNZWFzdXJlRGlzdGFuY2VNb2RlIH0gZnJvbSAnLi9saWIvbWVhc3VyZS1kaXN0YW5jZS1tb2RlJztcbmV4cG9ydCB7IE1lYXN1cmVBcmVhTW9kZSB9IGZyb20gJy4vbGliL21lYXN1cmUtYXJlYS1tb2RlJztcbmV4cG9ydCB7IE1lYXN1cmVBbmdsZU1vZGUgfSBmcm9tICcuL2xpYi9tZWFzdXJlLWFuZ2xlLW1vZGUnO1xuZXhwb3J0IHsgQ29tcG9zaXRlTW9kZSB9IGZyb20gJy4vbGliL2NvbXBvc2l0ZS1tb2RlJztcbmV4cG9ydCB7IFNuYXBwYWJsZU1vZGUgfSBmcm9tICcuL2xpYi9zbmFwcGFibGUtbW9kZSc7XG5cbi8vIEV4cGVyaW1lbnRhbFxuZXhwb3J0IHsgZGVmYXVsdCBhcyBfbWVtb2l6ZSB9IGZyb20gJy4vbWVtb2l6ZSc7XG5cbmV4cG9ydCB0eXBlIHtcbiAgU2NyZWVuQ29vcmRpbmF0ZXMsXG4gIEVkaXRBY3Rpb24sXG4gIFBpY2ssXG4gIENsaWNrRXZlbnQsXG4gIFBvaW50ZXJNb3ZlRXZlbnQsXG4gIFN0YXJ0RHJhZ2dpbmdFdmVudCxcbiAgU3RvcERyYWdnaW5nRXZlbnQsXG4gIERyYWdnaW5nRXZlbnQsXG4gIE1vZGVQcm9wcyxcbiAgR3VpZGVGZWF0dXJlQ29sbGVjdGlvbixcbiAgVmlld3BvcnQsXG4gIFRvb2x0aXAsXG59IGZyb20gJy4vdHlwZXMnO1xuXG5leHBvcnQgdHlwZSB7XG4gIFBvc2l0aW9uLFxuICBQb2ludENvb3JkaW5hdGVzLFxuICBMaW5lU3RyaW5nQ29vcmRpbmF0ZXMsXG4gIFBvbHlnb25Db29yZGluYXRlcyxcbiAgTXVsdGlQb2ludENvb3JkaW5hdGVzLFxuICBNdWx0aUxpbmVTdHJpbmdDb29yZGluYXRlcyxcbiAgTXVsdGlQb2x5Z29uQ29vcmRpbmF0ZXMsXG4gIEFueUNvb3JkaW5hdGVzLFxuICBQb2ludCxcbiAgTGluZVN0cmluZyxcbiAgUG9seWdvbixcbiAgTXVsdGlQb2ludCxcbiAgTXVsdGlMaW5lU3RyaW5nLFxuICBNdWx0aVBvbHlnb24sXG4gIEdlb21ldHJ5LFxuICBQb2x5Z29uYWwsXG4gIEJvdW5kaW5nQm94QXJyYXksXG4gIEZlYXR1cmVPZixcbiAgRmVhdHVyZVdpdGhQcm9wcyxcbiAgRmVhdHVyZSxcbiAgRmVhdHVyZUNvbGxlY3Rpb24sXG4gIEFueUdlb0pzb24sXG59IGZyb20gJy4vZ2VvanNvbi10eXBlcyc7XG5cbi8vIFV0aWxzXG5pbXBvcnQgKiBhcyB1dGlscyBmcm9tICcuL3V0aWxzJztcbmV4cG9ydCB7IHV0aWxzIH07XG4iXX0=","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.CompositeMode = void 0;\n\nvar _geojsonEditMode = require(\"./geojson-edit-mode\");\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction _createForOfIteratorHelper(o) { if (typeof Symbol === \"undefined\" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (o = _unsupportedIterableToArray(o))) { var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var it, normalCompletion = true, didErr = false, err; return { s: function s() { it = o[Symbol.iterator](); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it[\"return\"] != null) it[\"return\"](); } finally { if (didErr) throw err; } } }; }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(n); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar CompositeMode = /*#__PURE__*/function (_GeoJsonEditMode) {\n  _inherits(CompositeMode, _GeoJsonEditMode);\n\n  var _super = _createSuper(CompositeMode);\n\n  function CompositeMode(modes) {\n    var _this;\n\n    _classCallCheck(this, CompositeMode);\n\n    _this = _super.call(this);\n\n    _defineProperty(_assertThisInitialized(_this), \"_modes\", void 0);\n\n    _this._modes = modes;\n    return _this;\n  }\n\n  _createClass(CompositeMode, [{\n    key: \"_coalesce\",\n    value: function _coalesce(callback) {\n      var resultEval = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n      var result;\n\n      for (var i = 0; i < this._modes.length; i++) {\n        result = callback(this._modes[i]);\n\n        if (resultEval ? resultEval(result) : result) {\n          break;\n        }\n      }\n\n      return result;\n    }\n  }, {\n    key: \"handleClick\",\n    value: function handleClick(event, props) {\n      this._coalesce(function (handler) {\n        return handler.handleClick(event, props);\n      });\n    }\n  }, {\n    key: \"handlePointerMove\",\n    value: function handlePointerMove(event, props) {\n      return this._coalesce(function (handler) {\n        return handler.handlePointerMove(event, props);\n      });\n    }\n  }, {\n    key: \"handleStartDragging\",\n    value: function handleStartDragging(event, props) {\n      return this._coalesce(function (handler) {\n        return handler.handleStartDragging(event, props);\n      });\n    }\n  }, {\n    key: \"handleStopDragging\",\n    value: function handleStopDragging(event, props) {\n      return this._coalesce(function (handler) {\n        return handler.handleStopDragging(event, props);\n      });\n    }\n  }, {\n    key: \"handleDragging\",\n    value: function handleDragging(event, props) {\n      return this._coalesce(function (handler) {\n        return handler.handleDragging(event, props);\n      });\n    }\n  }, {\n    key: \"getGuides\",\n    value: function getGuides(props) {\n      // TODO: Combine the guides *BUT* make sure if none of the results have\n      // changed to return the same object so that \"guides !== this.state.guides\"\n      // in editable-geojson-layer works.\n      var allGuides = [];\n\n      var _iterator = _createForOfIteratorHelper(this._modes),\n          _step;\n\n      try {\n        for (_iterator.s(); !(_step = _iterator.n()).done;) {\n          var mode = _step.value;\n          allGuides.push.apply(allGuides, _toConsumableArray(mode.getGuides(props).features));\n        }\n      } catch (err) {\n        _iterator.e(err);\n      } finally {\n        _iterator.f();\n      }\n\n      return {\n        type: 'FeatureCollection',\n        features: allGuides\n      };\n    }\n  }]);\n\n  return CompositeMode;\n}(_geojsonEditMode.GeoJsonEditMode);\n\nexports.CompositeMode = CompositeMode;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvY29tcG9zaXRlLW1vZGUudHMiXSwibmFtZXMiOlsiQ29tcG9zaXRlTW9kZSIsIm1vZGVzIiwiX21vZGVzIiwiY2FsbGJhY2siLCJyZXN1bHRFdmFsIiwicmVzdWx0IiwiaSIsImxlbmd0aCIsImV2ZW50IiwicHJvcHMiLCJfY29hbGVzY2UiLCJoYW5kbGVyIiwiaGFuZGxlQ2xpY2siLCJoYW5kbGVQb2ludGVyTW92ZSIsImhhbmRsZVN0YXJ0RHJhZ2dpbmciLCJoYW5kbGVTdG9wRHJhZ2dpbmciLCJoYW5kbGVEcmFnZ2luZyIsImFsbEd1aWRlcyIsIm1vZGUiLCJwdXNoIiwiZ2V0R3VpZGVzIiwiZmVhdHVyZXMiLCJ0eXBlIiwiR2VvSnNvbkVkaXRNb2RlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBVUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUFFYUEsYTs7Ozs7QUFHWCx5QkFBWUMsS0FBWixFQUEyQztBQUFBOztBQUFBOztBQUN6Qzs7QUFEeUM7O0FBRXpDLFVBQUtDLE1BQUwsR0FBY0QsS0FBZDtBQUZ5QztBQUcxQzs7Ozs4QkFHQ0UsUSxFQUVHO0FBQUEsVUFESEMsVUFDRyx1RUFEbUQsSUFDbkQ7QUFDSCxVQUFJQyxNQUFKOztBQUVBLFdBQUssSUFBSUMsQ0FBQyxHQUFHLENBQWIsRUFBZ0JBLENBQUMsR0FBRyxLQUFLSixNQUFMLENBQVlLLE1BQWhDLEVBQXdDRCxDQUFDLEVBQXpDLEVBQTZDO0FBQzNDRCxRQUFBQSxNQUFNLEdBQUdGLFFBQVEsQ0FBQyxLQUFLRCxNQUFMLENBQVlJLENBQVosQ0FBRCxDQUFqQjs7QUFDQSxZQUFJRixVQUFVLEdBQUdBLFVBQVUsQ0FBQ0MsTUFBRCxDQUFiLEdBQXdCQSxNQUF0QyxFQUE4QztBQUM1QztBQUNEO0FBQ0Y7O0FBRUQsYUFBT0EsTUFBUDtBQUNEOzs7Z0NBRVdHLEssRUFBbUJDLEssRUFBMkM7QUFDeEUsV0FBS0MsU0FBTCxDQUFlLFVBQUNDLE9BQUQ7QUFBQSxlQUFhQSxPQUFPLENBQUNDLFdBQVIsQ0FBb0JKLEtBQXBCLEVBQTJCQyxLQUEzQixDQUFiO0FBQUEsT0FBZjtBQUNEOzs7c0NBRWlCRCxLLEVBQXlCQyxLLEVBQTJDO0FBQ3BGLGFBQU8sS0FBS0MsU0FBTCxDQUFlLFVBQUNDLE9BQUQ7QUFBQSxlQUFhQSxPQUFPLENBQUNFLGlCQUFSLENBQTBCTCxLQUExQixFQUFpQ0MsS0FBakMsQ0FBYjtBQUFBLE9BQWYsQ0FBUDtBQUNEOzs7d0NBRW1CRCxLLEVBQTJCQyxLLEVBQTJDO0FBQ3hGLGFBQU8sS0FBS0MsU0FBTCxDQUFlLFVBQUNDLE9BQUQ7QUFBQSxlQUFhQSxPQUFPLENBQUNHLG1CQUFSLENBQTRCTixLQUE1QixFQUFtQ0MsS0FBbkMsQ0FBYjtBQUFBLE9BQWYsQ0FBUDtBQUNEOzs7dUNBRWtCRCxLLEVBQTBCQyxLLEVBQTJDO0FBQ3RGLGFBQU8sS0FBS0MsU0FBTCxDQUFlLFVBQUNDLE9BQUQ7QUFBQSxlQUFhQSxPQUFPLENBQUNJLGtCQUFSLENBQTJCUCxLQUEzQixFQUFrQ0MsS0FBbEMsQ0FBYjtBQUFBLE9BQWYsQ0FBUDtBQUNEOzs7bUNBRWNELEssRUFBc0JDLEssRUFBMkM7QUFDOUUsYUFBTyxLQUFLQyxTQUFMLENBQWUsVUFBQ0MsT0FBRDtBQUFBLGVBQWFBLE9BQU8sQ0FBQ0ssY0FBUixDQUF1QlIsS0FBdkIsRUFBOEJDLEtBQTlCLENBQWI7QUFBQSxPQUFmLENBQVA7QUFDRDs7OzhCQUVTQSxLLEVBQTZEO0FBQ3JFO0FBQ0E7QUFDQTtBQUVBLFVBQU1RLFNBQVMsR0FBRyxFQUFsQjs7QUFMcUUsaURBTWxELEtBQUtmLE1BTjZDO0FBQUE7O0FBQUE7QUFNckUsNERBQWdDO0FBQUEsY0FBckJnQixJQUFxQjtBQUM5QkQsVUFBQUEsU0FBUyxDQUFDRSxJQUFWLE9BQUFGLFNBQVMscUJBQVNDLElBQUksQ0FBQ0UsU0FBTCxDQUFlWCxLQUFmLEVBQXNCWSxRQUEvQixFQUFUO0FBQ0Q7QUFSb0U7QUFBQTtBQUFBO0FBQUE7QUFBQTs7QUFVckUsYUFBTztBQUNMQyxRQUFBQSxJQUFJLEVBQUUsbUJBREQ7QUFFTEQsUUFBQUEsUUFBUSxFQUFFSjtBQUZMLE9BQVA7QUFJRDs7OztFQTFEZ0NNLGdDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRmVhdHVyZUNvbGxlY3Rpb24gfSBmcm9tICcuLi9nZW9qc29uLXR5cGVzJztcbmltcG9ydCB7XG4gIE1vZGVQcm9wcyxcbiAgQ2xpY2tFdmVudCxcbiAgUG9pbnRlck1vdmVFdmVudCxcbiAgU3RhcnREcmFnZ2luZ0V2ZW50LFxuICBTdG9wRHJhZ2dpbmdFdmVudCxcbiAgRHJhZ2dpbmdFdmVudCxcbiAgR3VpZGVGZWF0dXJlQ29sbGVjdGlvbixcbn0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHsgR2VvSnNvbkVkaXRNb2RlIH0gZnJvbSAnLi9nZW9qc29uLWVkaXQtbW9kZSc7XG5cbmV4cG9ydCBjbGFzcyBDb21wb3NpdGVNb2RlIGV4dGVuZHMgR2VvSnNvbkVkaXRNb2RlIHtcbiAgX21vZGVzOiBBcnJheTxHZW9Kc29uRWRpdE1vZGU+O1xuXG4gIGNvbnN0cnVjdG9yKG1vZGVzOiBBcnJheTxHZW9Kc29uRWRpdE1vZGU+KSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLl9tb2RlcyA9IG1vZGVzO1xuICB9XG5cbiAgX2NvYWxlc2NlPFQ+KFxuICAgIGNhbGxiYWNrOiAoYXJnMDogR2VvSnNvbkVkaXRNb2RlKSA9PiBULFxuICAgIHJlc3VsdEV2YWw6IChhcmcwOiBUKSA9PiBib29sZWFuIHwgbnVsbCB8IHVuZGVmaW5lZCA9IG51bGxcbiAgKTogVCB7XG4gICAgbGV0IHJlc3VsdDogVDtcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5fbW9kZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHJlc3VsdCA9IGNhbGxiYWNrKHRoaXMuX21vZGVzW2ldKTtcbiAgICAgIGlmIChyZXN1bHRFdmFsID8gcmVzdWx0RXZhbChyZXN1bHQpIDogcmVzdWx0KSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiByZXN1bHQgYXMgYW55O1xuICB9XG5cbiAgaGFuZGxlQ2xpY2soZXZlbnQ6IENsaWNrRXZlbnQsIHByb3BzOiBNb2RlUHJvcHM8RmVhdHVyZUNvbGxlY3Rpb24+KTogdm9pZCB7XG4gICAgdGhpcy5fY29hbGVzY2UoKGhhbmRsZXIpID0+IGhhbmRsZXIuaGFuZGxlQ2xpY2soZXZlbnQsIHByb3BzKSk7XG4gIH1cblxuICBoYW5kbGVQb2ludGVyTW92ZShldmVudDogUG9pbnRlck1vdmVFdmVudCwgcHJvcHM6IE1vZGVQcm9wczxGZWF0dXJlQ29sbGVjdGlvbj4pOiB2b2lkIHtcbiAgICByZXR1cm4gdGhpcy5fY29hbGVzY2UoKGhhbmRsZXIpID0+IGhhbmRsZXIuaGFuZGxlUG9pbnRlck1vdmUoZXZlbnQsIHByb3BzKSk7XG4gIH1cblxuICBoYW5kbGVTdGFydERyYWdnaW5nKGV2ZW50OiBTdGFydERyYWdnaW5nRXZlbnQsIHByb3BzOiBNb2RlUHJvcHM8RmVhdHVyZUNvbGxlY3Rpb24+KTogdm9pZCB7XG4gICAgcmV0dXJuIHRoaXMuX2NvYWxlc2NlKChoYW5kbGVyKSA9PiBoYW5kbGVyLmhhbmRsZVN0YXJ0RHJhZ2dpbmcoZXZlbnQsIHByb3BzKSk7XG4gIH1cblxuICBoYW5kbGVTdG9wRHJhZ2dpbmcoZXZlbnQ6IFN0b3BEcmFnZ2luZ0V2ZW50LCBwcm9wczogTW9kZVByb3BzPEZlYXR1cmVDb2xsZWN0aW9uPik6IHZvaWQge1xuICAgIHJldHVybiB0aGlzLl9jb2FsZXNjZSgoaGFuZGxlcikgPT4gaGFuZGxlci5oYW5kbGVTdG9wRHJhZ2dpbmcoZXZlbnQsIHByb3BzKSk7XG4gIH1cblxuICBoYW5kbGVEcmFnZ2luZyhldmVudDogRHJhZ2dpbmdFdmVudCwgcHJvcHM6IE1vZGVQcm9wczxGZWF0dXJlQ29sbGVjdGlvbj4pOiB2b2lkIHtcbiAgICByZXR1cm4gdGhpcy5fY29hbGVzY2UoKGhhbmRsZXIpID0+IGhhbmRsZXIuaGFuZGxlRHJhZ2dpbmcoZXZlbnQsIHByb3BzKSk7XG4gIH1cblxuICBnZXRHdWlkZXMocHJvcHM6IE1vZGVQcm9wczxGZWF0dXJlQ29sbGVjdGlvbj4pOiBHdWlkZUZlYXR1cmVDb2xsZWN0aW9uIHtcbiAgICAvLyBUT0RPOiBDb21iaW5lIHRoZSBndWlkZXMgKkJVVCogbWFrZSBzdXJlIGlmIG5vbmUgb2YgdGhlIHJlc3VsdHMgaGF2ZVxuICAgIC8vIGNoYW5nZWQgdG8gcmV0dXJuIHRoZSBzYW1lIG9iamVjdCBzbyB0aGF0IFwiZ3VpZGVzICE9PSB0aGlzLnN0YXRlLmd1aWRlc1wiXG4gICAgLy8gaW4gZWRpdGFibGUtZ2VvanNvbi1sYXllciB3b3Jrcy5cblxuICAgIGNvbnN0IGFsbEd1aWRlcyA9IFtdO1xuICAgIGZvciAoY29uc3QgbW9kZSBvZiB0aGlzLl9tb2Rlcykge1xuICAgICAgYWxsR3VpZGVzLnB1c2goLi4ubW9kZS5nZXRHdWlkZXMocHJvcHMpLmZlYXR1cmVzKTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgdHlwZTogJ0ZlYXR1cmVDb2xsZWN0aW9uJyxcbiAgICAgIGZlYXR1cmVzOiBhbGxHdWlkZXMsXG4gICAgfTtcbiAgfVxufVxuIl19","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.Draw90DegreePolygonMode = void 0;\n\nvar _destination = _interopRequireDefault(require(\"@turf/destination\"));\n\nvar _bearing = _interopRequireDefault(require(\"@turf/bearing\"));\n\nvar _lineIntersect = _interopRequireDefault(require(\"@turf/line-intersect\"));\n\nvar _distance = _interopRequireDefault(require(\"@turf/distance\"));\n\nvar _helpers = require(\"@turf/helpers\");\n\nvar _utils = require(\"../utils\");\n\nvar _geojsonEditMode = require(\"./geojson-edit-mode\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(n); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return; var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _get(target, property, receiver) { if (typeof Reflect !== \"undefined\" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return _get(target, property, receiver || target); }\n\nfunction _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; }\n\nfunction _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nvar Draw90DegreePolygonMode = /*#__PURE__*/function (_GeoJsonEditMode) {\n  _inherits(Draw90DegreePolygonMode, _GeoJsonEditMode);\n\n  var _super = _createSuper(Draw90DegreePolygonMode);\n\n  function Draw90DegreePolygonMode() {\n    _classCallCheck(this, Draw90DegreePolygonMode);\n\n    return _super.apply(this, arguments);\n  }\n\n  _createClass(Draw90DegreePolygonMode, [{\n    key: \"createTentativeFeature\",\n    value: function createTentativeFeature(props) {\n      var clickSequence = this.getClickSequence();\n      var mapCoords = props.lastPointerMoveEvent.mapCoords;\n      var p3;\n\n      if (clickSequence.length === 1) {\n        p3 = mapCoords;\n      } else {\n        var p1 = clickSequence[clickSequence.length - 2];\n        var p2 = clickSequence[clickSequence.length - 1];\n\n        var _generatePointsParall = (0, _utils.generatePointsParallelToLinePoints)(p1, p2, mapCoords);\n\n        var _generatePointsParall2 = _slicedToArray(_generatePointsParall, 1);\n\n        p3 = _generatePointsParall2[0];\n      }\n\n      var tentativeFeature;\n\n      if (clickSequence.length < 3) {\n        // Draw a LineString connecting all the clicked points with the hovered point\n        tentativeFeature = {\n          type: 'Feature',\n          properties: {\n            guideType: 'tentative'\n          },\n          geometry: {\n            type: 'LineString',\n            coordinates: [].concat(_toConsumableArray(clickSequence), [p3])\n          }\n        };\n      } else {\n        // Draw a Polygon connecting all the clicked points with the hovered point\n        tentativeFeature = {\n          type: 'Feature',\n          properties: {\n            guideType: 'tentative'\n          },\n          geometry: {\n            type: 'Polygon',\n            coordinates: [[].concat(_toConsumableArray(clickSequence), [p3, clickSequence[0]])]\n          }\n        };\n      }\n\n      return tentativeFeature;\n    }\n  }, {\n    key: \"getGuides\",\n    value: function getGuides(props) {\n      var guides = {\n        type: 'FeatureCollection',\n        features: []\n      };\n      var clickSequence = this.getClickSequence();\n\n      if (clickSequence.length === 0 || !props.lastPointerMoveEvent) {\n        return guides;\n      }\n\n      var tentativeFeature = this.createTentativeFeature(props);\n      guides.features.push(tentativeFeature);\n      guides.features = guides.features.concat((0, _utils.getEditHandlesForGeometry)(tentativeFeature.geometry, -1)); // Slice off the handles that are are next to the pointer\n\n      guides.features = guides.features.slice(0, -1);\n      return guides;\n    }\n  }, {\n    key: \"handlePointerMove\",\n    value: function handlePointerMove(event, props) {\n      props.onUpdateCursor('cell');\n\n      _get(_getPrototypeOf(Draw90DegreePolygonMode.prototype), \"handlePointerMove\", this).call(this, event, props);\n    }\n  }, {\n    key: \"handleClick\",\n    value: function handleClick(event, props) {\n      var picks = event.picks;\n      var tentativeFeature = this.getTentativeGuide(props);\n      this.addClickSequence(event);\n      var clickSequence = this.getClickSequence();\n\n      if (!tentativeFeature) {\n        // nothing else to do\n        return;\n      }\n\n      if (clickSequence.length === 3 && tentativeFeature.geometry.type === 'LineString') {\n        var lineString = tentativeFeature.geometry; // Tweak the clicked position to be the snapped 90 degree point along the polygon\n\n        clickSequence[clickSequence.length - 1] = lineString.coordinates[lineString.coordinates.length - 1];\n      } else if (clickSequence.length > 3 && tentativeFeature.geometry.type === 'Polygon') {\n        var polygon = tentativeFeature.geometry; // Tweak the clicked position to be the snapped 90 degree point along the polygon\n\n        clickSequence[clickSequence.length - 1] = polygon.coordinates[0][polygon.coordinates[0].length - 2];\n        var clickedEditHandle = (0, _utils.getPickedEditHandle)(picks);\n\n        if (clickedEditHandle && Array.isArray(clickedEditHandle.properties.positionIndexes) && (clickedEditHandle.properties.positionIndexes[1] === 0 || clickedEditHandle.properties.positionIndexes[1] === polygon.coordinates[0].length - 3)) {\n          // They clicked the first or last point (or double-clicked), so complete the polygon\n          var polygonToAdd = {\n            type: 'Polygon',\n            coordinates: this.finalizedCoordinates(_toConsumableArray(polygon.coordinates[0]))\n          };\n          this.resetClickSequence();\n          var editAction = this.getAddFeatureOrBooleanPolygonAction(polygonToAdd, props);\n\n          if (editAction) {\n            props.onEdit(editAction);\n          }\n        }\n      } // Trigger pointer move right away in order for it to update edit handles (to support double-click)\n\n\n      var fakePointerMoveEvent = {\n        screenCoords: [-1, -1],\n        mapCoords: event.mapCoords,\n        picks: [],\n        pointerDownPicks: null,\n        pointerDownScreenCoords: null,\n        pointerDownMapCoords: null,\n        cancelPan: function cancelPan() {},\n        sourceEvent: null\n      };\n      this.handlePointerMove(fakePointerMoveEvent, props);\n    }\n  }, {\n    key: \"finalizedCoordinates\",\n    value: function finalizedCoordinates(coords) {\n      // Remove the hovered position\n      var coordinates = [[].concat(_toConsumableArray(coords.slice(0, -2)), [coords[0]])];\n      var pt = this.getIntermediatePoint(_toConsumableArray(coords));\n\n      if (!pt) {\n        // if intermediate point with 90 degree not available\n        // try remove the last clicked point and get the intermediate point.\n        var tc = _toConsumableArray(coords);\n\n        tc.splice(-3, 1);\n        pt = this.getIntermediatePoint(_toConsumableArray(tc));\n\n        if (pt) {\n          coordinates = [[].concat(_toConsumableArray(coords.slice(0, -3)), [pt, coords[0]])];\n        }\n      } else {\n        coordinates = [[].concat(_toConsumableArray(coords.slice(0, -2)), [pt, coords[0]])];\n      }\n\n      return coordinates;\n    }\n  }, {\n    key: \"getIntermediatePoint\",\n    value: function getIntermediatePoint(coordinates) {\n      var pt;\n\n      if (coordinates.length > 4) {\n        var _ref = _toConsumableArray(coordinates),\n            p1 = _ref[0],\n            p2 = _ref[1];\n\n        var angle1 = (0, _bearing[\"default\"])(p1, p2);\n        var p3 = coordinates[coordinates.length - 3];\n        var p4 = coordinates[coordinates.length - 4];\n        var angle2 = (0, _bearing[\"default\"])(p3, p4);\n        var angles = {\n          first: [],\n          second: []\n        }; // calculate 3 right angle points for first and last points in lineString\n\n        [1, 2, 3].forEach(function (factor) {\n          var newAngle1 = angle1 + factor * 90; // convert angles to 0 to -180 for anti-clock and 0 to 180 for clock wise\n\n          angles.first.push(newAngle1 > 180 ? newAngle1 - 360 : newAngle1);\n          var newAngle2 = angle2 + factor * 90;\n          angles.second.push(newAngle2 > 180 ? newAngle2 - 360 : newAngle2);\n        });\n        var distance = (0, _distance[\"default\"])((0, _helpers.point)(p1), (0, _helpers.point)(p3)); // Draw imaginary right angle lines for both first and last points in lineString\n        // If there is intersection point for any 2 lines, will be the 90 degree point.\n\n        [0, 1, 2].forEach(function (indexFirst) {\n          var line1 = (0, _helpers.lineString)([p1, (0, _destination[\"default\"])(p1, distance, angles.first[indexFirst]).geometry.coordinates]);\n          [0, 1, 2].forEach(function (indexSecond) {\n            var line2 = (0, _helpers.lineString)([p3, (0, _destination[\"default\"])(p3, distance, angles.second[indexSecond]).geometry.coordinates]);\n            var fc = (0, _lineIntersect[\"default\"])(line1, line2);\n\n            if (fc && fc.features.length) {\n              // found the intersect point\n              pt = fc.features[0].geometry.coordinates;\n            }\n          });\n        });\n      }\n\n      return pt;\n    }\n  }]);\n\n  return Draw90DegreePolygonMode;\n}(_geojsonEditMode.GeoJsonEditMode);\n\nexports.Draw90DegreePolygonMode = Draw90DegreePolygonMode;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvZHJhdy05MGRlZ3JlZS1wb2x5Z29uLW1vZGUudHMiXSwibmFtZXMiOlsiRHJhdzkwRGVncmVlUG9seWdvbk1vZGUiLCJwcm9wcyIsImNsaWNrU2VxdWVuY2UiLCJnZXRDbGlja1NlcXVlbmNlIiwibWFwQ29vcmRzIiwibGFzdFBvaW50ZXJNb3ZlRXZlbnQiLCJwMyIsImxlbmd0aCIsInAxIiwicDIiLCJ0ZW50YXRpdmVGZWF0dXJlIiwidHlwZSIsInByb3BlcnRpZXMiLCJndWlkZVR5cGUiLCJnZW9tZXRyeSIsImNvb3JkaW5hdGVzIiwiZ3VpZGVzIiwiZmVhdHVyZXMiLCJjcmVhdGVUZW50YXRpdmVGZWF0dXJlIiwicHVzaCIsImNvbmNhdCIsInNsaWNlIiwiZXZlbnQiLCJvblVwZGF0ZUN1cnNvciIsInBpY2tzIiwiZ2V0VGVudGF0aXZlR3VpZGUiLCJhZGRDbGlja1NlcXVlbmNlIiwibGluZVN0cmluZyIsInBvbHlnb24iLCJjbGlja2VkRWRpdEhhbmRsZSIsIkFycmF5IiwiaXNBcnJheSIsInBvc2l0aW9uSW5kZXhlcyIsInBvbHlnb25Ub0FkZCIsImZpbmFsaXplZENvb3JkaW5hdGVzIiwicmVzZXRDbGlja1NlcXVlbmNlIiwiZWRpdEFjdGlvbiIsImdldEFkZEZlYXR1cmVPckJvb2xlYW5Qb2x5Z29uQWN0aW9uIiwib25FZGl0IiwiZmFrZVBvaW50ZXJNb3ZlRXZlbnQiLCJzY3JlZW5Db29yZHMiLCJwb2ludGVyRG93blBpY2tzIiwicG9pbnRlckRvd25TY3JlZW5Db29yZHMiLCJwb2ludGVyRG93bk1hcENvb3JkcyIsImNhbmNlbFBhbiIsInNvdXJjZUV2ZW50IiwiaGFuZGxlUG9pbnRlck1vdmUiLCJjb29yZHMiLCJwdCIsImdldEludGVybWVkaWF0ZVBvaW50IiwidGMiLCJzcGxpY2UiLCJhbmdsZTEiLCJwNCIsImFuZ2xlMiIsImFuZ2xlcyIsImZpcnN0Iiwic2Vjb25kIiwiZm9yRWFjaCIsImZhY3RvciIsIm5ld0FuZ2xlMSIsIm5ld0FuZ2xlMiIsImRpc3RhbmNlIiwiaW5kZXhGaXJzdCIsImxpbmUxIiwiaW5kZXhTZWNvbmQiLCJsaW5lMiIsImZjIiwiR2VvSnNvbkVkaXRNb2RlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBYUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBRWFBLHVCOzs7Ozs7Ozs7Ozs7OzJDQUNZQyxLLEVBQXVEO0FBQzVFLFVBQU1DLGFBQWEsR0FBRyxLQUFLQyxnQkFBTCxFQUF0QjtBQUQ0RSxVQUdwRUMsU0FIb0UsR0FHdERILEtBQUssQ0FBQ0ksb0JBSGdELENBR3BFRCxTQUhvRTtBQUs1RSxVQUFJRSxFQUFKOztBQUNBLFVBQUlKLGFBQWEsQ0FBQ0ssTUFBZCxLQUF5QixDQUE3QixFQUFnQztBQUM5QkQsUUFBQUEsRUFBRSxHQUFHRixTQUFMO0FBQ0QsT0FGRCxNQUVPO0FBQ0wsWUFBTUksRUFBRSxHQUFHTixhQUFhLENBQUNBLGFBQWEsQ0FBQ0ssTUFBZCxHQUF1QixDQUF4QixDQUF4QjtBQUNBLFlBQU1FLEVBQUUsR0FBR1AsYUFBYSxDQUFDQSxhQUFhLENBQUNLLE1BQWQsR0FBdUIsQ0FBeEIsQ0FBeEI7O0FBRkssb0NBR0UsK0NBQW1DQyxFQUFuQyxFQUF1Q0MsRUFBdkMsRUFBMkNMLFNBQTNDLENBSEY7O0FBQUE7O0FBR0pFLFFBQUFBLEVBSEk7QUFJTjs7QUFFRCxVQUFJSSxnQkFBSjs7QUFFQSxVQUFJUixhQUFhLENBQUNLLE1BQWQsR0FBdUIsQ0FBM0IsRUFBOEI7QUFDNUI7QUFDQUcsUUFBQUEsZ0JBQWdCLEdBQUc7QUFDakJDLFVBQUFBLElBQUksRUFBRSxTQURXO0FBRWpCQyxVQUFBQSxVQUFVLEVBQUU7QUFDVkMsWUFBQUEsU0FBUyxFQUFFO0FBREQsV0FGSztBQUtqQkMsVUFBQUEsUUFBUSxFQUFFO0FBQ1JILFlBQUFBLElBQUksRUFBRSxZQURFO0FBRVJJLFlBQUFBLFdBQVcsK0JBQU1iLGFBQU4sSUFBcUJJLEVBQXJCO0FBRkg7QUFMTyxTQUFuQjtBQVVELE9BWkQsTUFZTztBQUNMO0FBQ0FJLFFBQUFBLGdCQUFnQixHQUFHO0FBQ2pCQyxVQUFBQSxJQUFJLEVBQUUsU0FEVztBQUVqQkMsVUFBQUEsVUFBVSxFQUFFO0FBQ1ZDLFlBQUFBLFNBQVMsRUFBRTtBQURELFdBRks7QUFLakJDLFVBQUFBLFFBQVEsRUFBRTtBQUNSSCxZQUFBQSxJQUFJLEVBQUUsU0FERTtBQUVSSSxZQUFBQSxXQUFXLEVBQUUsOEJBQUtiLGFBQUwsSUFBb0JJLEVBQXBCLEVBQXdCSixhQUFhLENBQUMsQ0FBRCxDQUFyQztBQUZMO0FBTE8sU0FBbkI7QUFVRDs7QUFFRCxhQUFPUSxnQkFBUDtBQUNEOzs7OEJBRVNULEssRUFBNkQ7QUFDckUsVUFBTWUsTUFBOEIsR0FBRztBQUNyQ0wsUUFBQUEsSUFBSSxFQUFFLG1CQUQrQjtBQUVyQ00sUUFBQUEsUUFBUSxFQUFFO0FBRjJCLE9BQXZDO0FBS0EsVUFBTWYsYUFBYSxHQUFHLEtBQUtDLGdCQUFMLEVBQXRCOztBQUVBLFVBQUlELGFBQWEsQ0FBQ0ssTUFBZCxLQUF5QixDQUF6QixJQUE4QixDQUFDTixLQUFLLENBQUNJLG9CQUF6QyxFQUErRDtBQUM3RCxlQUFPVyxNQUFQO0FBQ0Q7O0FBQ0QsVUFBTU4sZ0JBQWdCLEdBQUcsS0FBS1Esc0JBQUwsQ0FBNEJqQixLQUE1QixDQUF6QjtBQUVBZSxNQUFBQSxNQUFNLENBQUNDLFFBQVAsQ0FBZ0JFLElBQWhCLENBQXFCVCxnQkFBckI7QUFFQU0sTUFBQUEsTUFBTSxDQUFDQyxRQUFQLEdBQWtCRCxNQUFNLENBQUNDLFFBQVAsQ0FBZ0JHLE1BQWhCLENBQ2hCLHNDQUEwQlYsZ0JBQWdCLENBQUNJLFFBQTNDLEVBQXFELENBQUMsQ0FBdEQsQ0FEZ0IsQ0FBbEIsQ0FmcUUsQ0FtQnJFOztBQUNBRSxNQUFBQSxNQUFNLENBQUNDLFFBQVAsR0FBa0JELE1BQU0sQ0FBQ0MsUUFBUCxDQUFnQkksS0FBaEIsQ0FBc0IsQ0FBdEIsRUFBeUIsQ0FBQyxDQUExQixDQUFsQjtBQUVBLGFBQU9MLE1BQVA7QUFDRDs7O3NDQUVpQk0sSyxFQUF5QnJCLEssRUFBcUM7QUFDOUVBLE1BQUFBLEtBQUssQ0FBQ3NCLGNBQU4sQ0FBcUIsTUFBckI7O0FBQ0EscUdBQXdCRCxLQUF4QixFQUErQnJCLEtBQS9CO0FBQ0Q7OztnQ0FFV3FCLEssRUFBbUJyQixLLEVBQXFDO0FBQUEsVUFDMUR1QixLQUQwRCxHQUNoREYsS0FEZ0QsQ0FDMURFLEtBRDBEO0FBRWxFLFVBQU1kLGdCQUFnQixHQUFHLEtBQUtlLGlCQUFMLENBQXVCeEIsS0FBdkIsQ0FBekI7QUFDQSxXQUFLeUIsZ0JBQUwsQ0FBc0JKLEtBQXRCO0FBQ0EsVUFBTXBCLGFBQWEsR0FBRyxLQUFLQyxnQkFBTCxFQUF0Qjs7QUFFQSxVQUFJLENBQUNPLGdCQUFMLEVBQXVCO0FBQ3JCO0FBQ0E7QUFDRDs7QUFFRCxVQUFJUixhQUFhLENBQUNLLE1BQWQsS0FBeUIsQ0FBekIsSUFBOEJHLGdCQUFnQixDQUFDSSxRQUFqQixDQUEwQkgsSUFBMUIsS0FBbUMsWUFBckUsRUFBbUY7QUFDakYsWUFBTWdCLFVBQXNCLEdBQUdqQixnQkFBZ0IsQ0FBQ0ksUUFBaEQsQ0FEaUYsQ0FHakY7O0FBQ0FaLFFBQUFBLGFBQWEsQ0FBQ0EsYUFBYSxDQUFDSyxNQUFkLEdBQXVCLENBQXhCLENBQWIsR0FDRW9CLFVBQVUsQ0FBQ1osV0FBWCxDQUF1QlksVUFBVSxDQUFDWixXQUFYLENBQXVCUixNQUF2QixHQUFnQyxDQUF2RCxDQURGO0FBRUQsT0FORCxNQU1PLElBQUlMLGFBQWEsQ0FBQ0ssTUFBZCxHQUF1QixDQUF2QixJQUE0QkcsZ0JBQWdCLENBQUNJLFFBQWpCLENBQTBCSCxJQUExQixLQUFtQyxTQUFuRSxFQUE4RTtBQUNuRixZQUFNaUIsT0FBZ0IsR0FBR2xCLGdCQUFnQixDQUFDSSxRQUExQyxDQURtRixDQUduRjs7QUFDQVosUUFBQUEsYUFBYSxDQUFDQSxhQUFhLENBQUNLLE1BQWQsR0FBdUIsQ0FBeEIsQ0FBYixHQUNFcUIsT0FBTyxDQUFDYixXQUFSLENBQW9CLENBQXBCLEVBQXVCYSxPQUFPLENBQUNiLFdBQVIsQ0FBb0IsQ0FBcEIsRUFBdUJSLE1BQXZCLEdBQWdDLENBQXZELENBREY7QUFHQSxZQUFNc0IsaUJBQWlCLEdBQUcsZ0NBQW9CTCxLQUFwQixDQUExQjs7QUFFQSxZQUNFSyxpQkFBaUIsSUFDakJDLEtBQUssQ0FBQ0MsT0FBTixDQUFjRixpQkFBaUIsQ0FBQ2pCLFVBQWxCLENBQTZCb0IsZUFBM0MsQ0FEQSxLQUVDSCxpQkFBaUIsQ0FBQ2pCLFVBQWxCLENBQTZCb0IsZUFBN0IsQ0FBNkMsQ0FBN0MsTUFBb0QsQ0FBcEQsSUFDQ0gsaUJBQWlCLENBQUNqQixVQUFsQixDQUE2Qm9CLGVBQTdCLENBQTZDLENBQTdDLE1BQW9ESixPQUFPLENBQUNiLFdBQVIsQ0FBb0IsQ0FBcEIsRUFBdUJSLE1BQXZCLEdBQWdDLENBSHRGLENBREYsRUFLRTtBQUNBO0FBQ0EsY0FBTTBCLFlBQXFCLEdBQUc7QUFDNUJ0QixZQUFBQSxJQUFJLEVBQUUsU0FEc0I7QUFFNUJJLFlBQUFBLFdBQVcsRUFBRSxLQUFLbUIsb0JBQUwsb0JBQThCTixPQUFPLENBQUNiLFdBQVIsQ0FBb0IsQ0FBcEIsQ0FBOUI7QUFGZSxXQUE5QjtBQUtBLGVBQUtvQixrQkFBTDtBQUVBLGNBQU1DLFVBQVUsR0FBRyxLQUFLQyxtQ0FBTCxDQUF5Q0osWUFBekMsRUFBdURoQyxLQUF2RCxDQUFuQjs7QUFDQSxjQUFJbUMsVUFBSixFQUFnQjtBQUNkbkMsWUFBQUEsS0FBSyxDQUFDcUMsTUFBTixDQUFhRixVQUFiO0FBQ0Q7QUFDRjtBQUNGLE9BN0NpRSxDQStDbEU7OztBQUNBLFVBQU1HLG9CQUFzQyxHQUFHO0FBQzdDQyxRQUFBQSxZQUFZLEVBQUUsQ0FBQyxDQUFDLENBQUYsRUFBSyxDQUFDLENBQU4sQ0FEK0I7QUFFN0NwQyxRQUFBQSxTQUFTLEVBQUVrQixLQUFLLENBQUNsQixTQUY0QjtBQUc3Q29CLFFBQUFBLEtBQUssRUFBRSxFQUhzQztBQUk3Q2lCLFFBQUFBLGdCQUFnQixFQUFFLElBSjJCO0FBSzdDQyxRQUFBQSx1QkFBdUIsRUFBRSxJQUxvQjtBQU03Q0MsUUFBQUEsb0JBQW9CLEVBQUUsSUFOdUI7QUFPN0NDLFFBQUFBLFNBQVMsRUFBRSxxQkFBTSxDQUFFLENBUDBCO0FBUTdDQyxRQUFBQSxXQUFXLEVBQUU7QUFSZ0MsT0FBL0M7QUFXQSxXQUFLQyxpQkFBTCxDQUF1QlAsb0JBQXZCLEVBQTZDdEMsS0FBN0M7QUFDRDs7O3lDQUVvQjhDLE0sRUFBb0I7QUFDdkM7QUFDQSxVQUFJaEMsV0FBVyxHQUFHLDhCQUFLZ0MsTUFBTSxDQUFDMUIsS0FBUCxDQUFhLENBQWIsRUFBZ0IsQ0FBQyxDQUFqQixDQUFMLElBQTBCMEIsTUFBTSxDQUFDLENBQUQsQ0FBaEMsR0FBbEI7QUFDQSxVQUFJQyxFQUFFLEdBQUcsS0FBS0Msb0JBQUwsb0JBQThCRixNQUE5QixFQUFUOztBQUNBLFVBQUksQ0FBQ0MsRUFBTCxFQUFTO0FBQ1A7QUFDQTtBQUNBLFlBQU1FLEVBQUUsc0JBQU9ILE1BQVAsQ0FBUjs7QUFDQUcsUUFBQUEsRUFBRSxDQUFDQyxNQUFILENBQVUsQ0FBQyxDQUFYLEVBQWMsQ0FBZDtBQUNBSCxRQUFBQSxFQUFFLEdBQUcsS0FBS0Msb0JBQUwsb0JBQThCQyxFQUE5QixFQUFMOztBQUNBLFlBQUlGLEVBQUosRUFBUTtBQUNOakMsVUFBQUEsV0FBVyxHQUFHLDhCQUFLZ0MsTUFBTSxDQUFDMUIsS0FBUCxDQUFhLENBQWIsRUFBZ0IsQ0FBQyxDQUFqQixDQUFMLElBQTBCMkIsRUFBMUIsRUFBOEJELE1BQU0sQ0FBQyxDQUFELENBQXBDLEdBQWQ7QUFDRDtBQUNGLE9BVEQsTUFTTztBQUNMaEMsUUFBQUEsV0FBVyxHQUFHLDhCQUFLZ0MsTUFBTSxDQUFDMUIsS0FBUCxDQUFhLENBQWIsRUFBZ0IsQ0FBQyxDQUFqQixDQUFMLElBQTBCMkIsRUFBMUIsRUFBOEJELE1BQU0sQ0FBQyxDQUFELENBQXBDLEdBQWQ7QUFDRDs7QUFDRCxhQUFPaEMsV0FBUDtBQUNEOzs7eUNBRW9CQSxXLEVBQXlCO0FBQzVDLFVBQUlpQyxFQUFKOztBQUNBLFVBQUlqQyxXQUFXLENBQUNSLE1BQVosR0FBcUIsQ0FBekIsRUFBNEI7QUFBQSxzQ0FDTFEsV0FESztBQUFBLFlBQ25CUCxFQURtQjtBQUFBLFlBQ2ZDLEVBRGU7O0FBRTFCLFlBQU0yQyxNQUFNLEdBQUcseUJBQVE1QyxFQUFSLEVBQVlDLEVBQVosQ0FBZjtBQUNBLFlBQU1ILEVBQUUsR0FBR1MsV0FBVyxDQUFDQSxXQUFXLENBQUNSLE1BQVosR0FBcUIsQ0FBdEIsQ0FBdEI7QUFDQSxZQUFNOEMsRUFBRSxHQUFHdEMsV0FBVyxDQUFDQSxXQUFXLENBQUNSLE1BQVosR0FBcUIsQ0FBdEIsQ0FBdEI7QUFDQSxZQUFNK0MsTUFBTSxHQUFHLHlCQUFRaEQsRUFBUixFQUFZK0MsRUFBWixDQUFmO0FBRUEsWUFBTUUsTUFBTSxHQUFHO0FBQUVDLFVBQUFBLEtBQUssRUFBRSxFQUFUO0FBQWFDLFVBQUFBLE1BQU0sRUFBRTtBQUFyQixTQUFmLENBUDBCLENBUTFCOztBQUNBLFNBQUMsQ0FBRCxFQUFJLENBQUosRUFBTyxDQUFQLEVBQVVDLE9BQVYsQ0FBa0IsVUFBQ0MsTUFBRCxFQUFZO0FBQzVCLGNBQU1DLFNBQVMsR0FBR1IsTUFBTSxHQUFHTyxNQUFNLEdBQUcsRUFBcEMsQ0FENEIsQ0FFNUI7O0FBQ0FKLFVBQUFBLE1BQU0sQ0FBQ0MsS0FBUCxDQUFhckMsSUFBYixDQUFrQnlDLFNBQVMsR0FBRyxHQUFaLEdBQWtCQSxTQUFTLEdBQUcsR0FBOUIsR0FBb0NBLFNBQXREO0FBQ0EsY0FBTUMsU0FBUyxHQUFHUCxNQUFNLEdBQUdLLE1BQU0sR0FBRyxFQUFwQztBQUNBSixVQUFBQSxNQUFNLENBQUNFLE1BQVAsQ0FBY3RDLElBQWQsQ0FBbUIwQyxTQUFTLEdBQUcsR0FBWixHQUFrQkEsU0FBUyxHQUFHLEdBQTlCLEdBQW9DQSxTQUF2RDtBQUNELFNBTkQ7QUFRQSxZQUFNQyxRQUFRLEdBQUcsMEJBQWEsb0JBQU10RCxFQUFOLENBQWIsRUFBd0Isb0JBQU1GLEVBQU4sQ0FBeEIsQ0FBakIsQ0FqQjBCLENBa0IxQjtBQUNBOztBQUNBLFNBQUMsQ0FBRCxFQUFJLENBQUosRUFBTyxDQUFQLEVBQVVvRCxPQUFWLENBQWtCLFVBQUNLLFVBQUQsRUFBZ0I7QUFDaEMsY0FBTUMsS0FBSyxHQUFHLHlCQUFlLENBQzNCeEQsRUFEMkIsRUFFM0IsNkJBQVlBLEVBQVosRUFBZ0JzRCxRQUFoQixFQUEwQlAsTUFBTSxDQUFDQyxLQUFQLENBQWFPLFVBQWIsQ0FBMUIsRUFBb0RqRCxRQUFwRCxDQUE2REMsV0FGbEMsQ0FBZixDQUFkO0FBSUEsV0FBQyxDQUFELEVBQUksQ0FBSixFQUFPLENBQVAsRUFBVTJDLE9BQVYsQ0FBa0IsVUFBQ08sV0FBRCxFQUFpQjtBQUNqQyxnQkFBTUMsS0FBSyxHQUFHLHlCQUFlLENBQzNCNUQsRUFEMkIsRUFFM0IsNkJBQVlBLEVBQVosRUFBZ0J3RCxRQUFoQixFQUEwQlAsTUFBTSxDQUFDRSxNQUFQLENBQWNRLFdBQWQsQ0FBMUIsRUFBc0RuRCxRQUF0RCxDQUErREMsV0FGcEMsQ0FBZixDQUFkO0FBSUEsZ0JBQU1vRCxFQUFFLEdBQUcsK0JBQWNILEtBQWQsRUFBcUJFLEtBQXJCLENBQVg7O0FBQ0EsZ0JBQUlDLEVBQUUsSUFBSUEsRUFBRSxDQUFDbEQsUUFBSCxDQUFZVixNQUF0QixFQUE4QjtBQUM1QjtBQUNBeUMsY0FBQUEsRUFBRSxHQUFHbUIsRUFBRSxDQUFDbEQsUUFBSCxDQUFZLENBQVosRUFBZUgsUUFBZixDQUF3QkMsV0FBN0I7QUFDRDtBQUNGLFdBVkQ7QUFXRCxTQWhCRDtBQWlCRDs7QUFDRCxhQUFPaUMsRUFBUDtBQUNEOzs7O0VBdE0wQ29CLGdDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGRlc3RpbmF0aW9uIGZyb20gJ0B0dXJmL2Rlc3RpbmF0aW9uJztcbmltcG9ydCBiZWFyaW5nIGZyb20gJ0B0dXJmL2JlYXJpbmcnO1xuaW1wb3J0IGxpbmVJbnRlcnNlY3QgZnJvbSAnQHR1cmYvbGluZS1pbnRlcnNlY3QnO1xuaW1wb3J0IHR1cmZEaXN0YW5jZSBmcm9tICdAdHVyZi9kaXN0YW5jZSc7XG5pbXBvcnQgeyBwb2ludCwgbGluZVN0cmluZyBhcyB0dXJmTGluZVN0cmluZyB9IGZyb20gJ0B0dXJmL2hlbHBlcnMnO1xuaW1wb3J0IHtcbiAgZ2VuZXJhdGVQb2ludHNQYXJhbGxlbFRvTGluZVBvaW50cyxcbiAgZ2V0UGlja2VkRWRpdEhhbmRsZSxcbiAgZ2V0RWRpdEhhbmRsZXNGb3JHZW9tZXRyeSxcbn0gZnJvbSAnLi4vdXRpbHMnO1xuaW1wb3J0IHtcbiAgQ2xpY2tFdmVudCxcbiAgUG9pbnRlck1vdmVFdmVudCxcbiAgTW9kZVByb3BzLFxuICBHdWlkZUZlYXR1cmVDb2xsZWN0aW9uLFxuICBUZW50YXRpdmVGZWF0dXJlLFxufSBmcm9tICcuLi90eXBlcyc7XG5pbXBvcnQgeyBQb2x5Z29uLCBMaW5lU3RyaW5nLCBQb3NpdGlvbiwgRmVhdHVyZUNvbGxlY3Rpb24gfSBmcm9tICcuLi9nZW9qc29uLXR5cGVzJztcbmltcG9ydCB7IEdlb0pzb25FZGl0TW9kZSB9IGZyb20gJy4vZ2VvanNvbi1lZGl0LW1vZGUnO1xuXG5leHBvcnQgY2xhc3MgRHJhdzkwRGVncmVlUG9seWdvbk1vZGUgZXh0ZW5kcyBHZW9Kc29uRWRpdE1vZGUge1xuICBjcmVhdGVUZW50YXRpdmVGZWF0dXJlKHByb3BzOiBNb2RlUHJvcHM8RmVhdHVyZUNvbGxlY3Rpb24+KTogVGVudGF0aXZlRmVhdHVyZSB7XG4gICAgY29uc3QgY2xpY2tTZXF1ZW5jZSA9IHRoaXMuZ2V0Q2xpY2tTZXF1ZW5jZSgpO1xuXG4gICAgY29uc3QgeyBtYXBDb29yZHMgfSA9IHByb3BzLmxhc3RQb2ludGVyTW92ZUV2ZW50O1xuXG4gICAgbGV0IHAzO1xuICAgIGlmIChjbGlja1NlcXVlbmNlLmxlbmd0aCA9PT0gMSkge1xuICAgICAgcDMgPSBtYXBDb29yZHM7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHAxID0gY2xpY2tTZXF1ZW5jZVtjbGlja1NlcXVlbmNlLmxlbmd0aCAtIDJdO1xuICAgICAgY29uc3QgcDIgPSBjbGlja1NlcXVlbmNlW2NsaWNrU2VxdWVuY2UubGVuZ3RoIC0gMV07XG4gICAgICBbcDNdID0gZ2VuZXJhdGVQb2ludHNQYXJhbGxlbFRvTGluZVBvaW50cyhwMSwgcDIsIG1hcENvb3Jkcyk7XG4gICAgfVxuXG4gICAgbGV0IHRlbnRhdGl2ZUZlYXR1cmU7XG5cbiAgICBpZiAoY2xpY2tTZXF1ZW5jZS5sZW5ndGggPCAzKSB7XG4gICAgICAvLyBEcmF3IGEgTGluZVN0cmluZyBjb25uZWN0aW5nIGFsbCB0aGUgY2xpY2tlZCBwb2ludHMgd2l0aCB0aGUgaG92ZXJlZCBwb2ludFxuICAgICAgdGVudGF0aXZlRmVhdHVyZSA9IHtcbiAgICAgICAgdHlwZTogJ0ZlYXR1cmUnLFxuICAgICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgZ3VpZGVUeXBlOiAndGVudGF0aXZlJyxcbiAgICAgICAgfSxcbiAgICAgICAgZ2VvbWV0cnk6IHtcbiAgICAgICAgICB0eXBlOiAnTGluZVN0cmluZycsXG4gICAgICAgICAgY29vcmRpbmF0ZXM6IFsuLi5jbGlja1NlcXVlbmNlLCBwM10sXG4gICAgICAgIH0sXG4gICAgICB9O1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBEcmF3IGEgUG9seWdvbiBjb25uZWN0aW5nIGFsbCB0aGUgY2xpY2tlZCBwb2ludHMgd2l0aCB0aGUgaG92ZXJlZCBwb2ludFxuICAgICAgdGVudGF0aXZlRmVhdHVyZSA9IHtcbiAgICAgICAgdHlwZTogJ0ZlYXR1cmUnLFxuICAgICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgZ3VpZGVUeXBlOiAndGVudGF0aXZlJyxcbiAgICAgICAgfSxcbiAgICAgICAgZ2VvbWV0cnk6IHtcbiAgICAgICAgICB0eXBlOiAnUG9seWdvbicsXG4gICAgICAgICAgY29vcmRpbmF0ZXM6IFtbLi4uY2xpY2tTZXF1ZW5jZSwgcDMsIGNsaWNrU2VxdWVuY2VbMF1dXSxcbiAgICAgICAgfSxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIHRlbnRhdGl2ZUZlYXR1cmU7XG4gIH1cblxuICBnZXRHdWlkZXMocHJvcHM6IE1vZGVQcm9wczxGZWF0dXJlQ29sbGVjdGlvbj4pOiBHdWlkZUZlYXR1cmVDb2xsZWN0aW9uIHtcbiAgICBjb25zdCBndWlkZXM6IEd1aWRlRmVhdHVyZUNvbGxlY3Rpb24gPSB7XG4gICAgICB0eXBlOiAnRmVhdHVyZUNvbGxlY3Rpb24nLFxuICAgICAgZmVhdHVyZXM6IFtdLFxuICAgIH07XG5cbiAgICBjb25zdCBjbGlja1NlcXVlbmNlID0gdGhpcy5nZXRDbGlja1NlcXVlbmNlKCk7XG5cbiAgICBpZiAoY2xpY2tTZXF1ZW5jZS5sZW5ndGggPT09IDAgfHwgIXByb3BzLmxhc3RQb2ludGVyTW92ZUV2ZW50KSB7XG4gICAgICByZXR1cm4gZ3VpZGVzO1xuICAgIH1cbiAgICBjb25zdCB0ZW50YXRpdmVGZWF0dXJlID0gdGhpcy5jcmVhdGVUZW50YXRpdmVGZWF0dXJlKHByb3BzKTtcblxuICAgIGd1aWRlcy5mZWF0dXJlcy5wdXNoKHRlbnRhdGl2ZUZlYXR1cmUpO1xuXG4gICAgZ3VpZGVzLmZlYXR1cmVzID0gZ3VpZGVzLmZlYXR1cmVzLmNvbmNhdChcbiAgICAgIGdldEVkaXRIYW5kbGVzRm9yR2VvbWV0cnkodGVudGF0aXZlRmVhdHVyZS5nZW9tZXRyeSwgLTEpXG4gICAgKTtcblxuICAgIC8vIFNsaWNlIG9mZiB0aGUgaGFuZGxlcyB0aGF0IGFyZSBhcmUgbmV4dCB0byB0aGUgcG9pbnRlclxuICAgIGd1aWRlcy5mZWF0dXJlcyA9IGd1aWRlcy5mZWF0dXJlcy5zbGljZSgwLCAtMSk7XG5cbiAgICByZXR1cm4gZ3VpZGVzO1xuICB9XG5cbiAgaGFuZGxlUG9pbnRlck1vdmUoZXZlbnQ6IFBvaW50ZXJNb3ZlRXZlbnQsIHByb3BzOiBNb2RlUHJvcHM8RmVhdHVyZUNvbGxlY3Rpb24+KSB7XG4gICAgcHJvcHMub25VcGRhdGVDdXJzb3IoJ2NlbGwnKTtcbiAgICBzdXBlci5oYW5kbGVQb2ludGVyTW92ZShldmVudCwgcHJvcHMpO1xuICB9XG5cbiAgaGFuZGxlQ2xpY2soZXZlbnQ6IENsaWNrRXZlbnQsIHByb3BzOiBNb2RlUHJvcHM8RmVhdHVyZUNvbGxlY3Rpb24+KSB7XG4gICAgY29uc3QgeyBwaWNrcyB9ID0gZXZlbnQ7XG4gICAgY29uc3QgdGVudGF0aXZlRmVhdHVyZSA9IHRoaXMuZ2V0VGVudGF0aXZlR3VpZGUocHJvcHMpO1xuICAgIHRoaXMuYWRkQ2xpY2tTZXF1ZW5jZShldmVudCk7XG4gICAgY29uc3QgY2xpY2tTZXF1ZW5jZSA9IHRoaXMuZ2V0Q2xpY2tTZXF1ZW5jZSgpO1xuXG4gICAgaWYgKCF0ZW50YXRpdmVGZWF0dXJlKSB7XG4gICAgICAvLyBub3RoaW5nIGVsc2UgdG8gZG9cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoY2xpY2tTZXF1ZW5jZS5sZW5ndGggPT09IDMgJiYgdGVudGF0aXZlRmVhdHVyZS5nZW9tZXRyeS50eXBlID09PSAnTGluZVN0cmluZycpIHtcbiAgICAgIGNvbnN0IGxpbmVTdHJpbmc6IExpbmVTdHJpbmcgPSB0ZW50YXRpdmVGZWF0dXJlLmdlb21ldHJ5O1xuXG4gICAgICAvLyBUd2VhayB0aGUgY2xpY2tlZCBwb3NpdGlvbiB0byBiZSB0aGUgc25hcHBlZCA5MCBkZWdyZWUgcG9pbnQgYWxvbmcgdGhlIHBvbHlnb25cbiAgICAgIGNsaWNrU2VxdWVuY2VbY2xpY2tTZXF1ZW5jZS5sZW5ndGggLSAxXSA9XG4gICAgICAgIGxpbmVTdHJpbmcuY29vcmRpbmF0ZXNbbGluZVN0cmluZy5jb29yZGluYXRlcy5sZW5ndGggLSAxXTtcbiAgICB9IGVsc2UgaWYgKGNsaWNrU2VxdWVuY2UubGVuZ3RoID4gMyAmJiB0ZW50YXRpdmVGZWF0dXJlLmdlb21ldHJ5LnR5cGUgPT09ICdQb2x5Z29uJykge1xuICAgICAgY29uc3QgcG9seWdvbjogUG9seWdvbiA9IHRlbnRhdGl2ZUZlYXR1cmUuZ2VvbWV0cnk7XG5cbiAgICAgIC8vIFR3ZWFrIHRoZSBjbGlja2VkIHBvc2l0aW9uIHRvIGJlIHRoZSBzbmFwcGVkIDkwIGRlZ3JlZSBwb2ludCBhbG9uZyB0aGUgcG9seWdvblxuICAgICAgY2xpY2tTZXF1ZW5jZVtjbGlja1NlcXVlbmNlLmxlbmd0aCAtIDFdID1cbiAgICAgICAgcG9seWdvbi5jb29yZGluYXRlc1swXVtwb2x5Z29uLmNvb3JkaW5hdGVzWzBdLmxlbmd0aCAtIDJdO1xuXG4gICAgICBjb25zdCBjbGlja2VkRWRpdEhhbmRsZSA9IGdldFBpY2tlZEVkaXRIYW5kbGUocGlja3MpO1xuXG4gICAgICBpZiAoXG4gICAgICAgIGNsaWNrZWRFZGl0SGFuZGxlICYmXG4gICAgICAgIEFycmF5LmlzQXJyYXkoY2xpY2tlZEVkaXRIYW5kbGUucHJvcGVydGllcy5wb3NpdGlvbkluZGV4ZXMpICYmXG4gICAgICAgIChjbGlja2VkRWRpdEhhbmRsZS5wcm9wZXJ0aWVzLnBvc2l0aW9uSW5kZXhlc1sxXSA9PT0gMCB8fFxuICAgICAgICAgIGNsaWNrZWRFZGl0SGFuZGxlLnByb3BlcnRpZXMucG9zaXRpb25JbmRleGVzWzFdID09PSBwb2x5Z29uLmNvb3JkaW5hdGVzWzBdLmxlbmd0aCAtIDMpXG4gICAgICApIHtcbiAgICAgICAgLy8gVGhleSBjbGlja2VkIHRoZSBmaXJzdCBvciBsYXN0IHBvaW50IChvciBkb3VibGUtY2xpY2tlZCksIHNvIGNvbXBsZXRlIHRoZSBwb2x5Z29uXG4gICAgICAgIGNvbnN0IHBvbHlnb25Ub0FkZDogUG9seWdvbiA9IHtcbiAgICAgICAgICB0eXBlOiAnUG9seWdvbicsXG4gICAgICAgICAgY29vcmRpbmF0ZXM6IHRoaXMuZmluYWxpemVkQ29vcmRpbmF0ZXMoWy4uLnBvbHlnb24uY29vcmRpbmF0ZXNbMF1dKSxcbiAgICAgICAgfTtcblxuICAgICAgICB0aGlzLnJlc2V0Q2xpY2tTZXF1ZW5jZSgpO1xuXG4gICAgICAgIGNvbnN0IGVkaXRBY3Rpb24gPSB0aGlzLmdldEFkZEZlYXR1cmVPckJvb2xlYW5Qb2x5Z29uQWN0aW9uKHBvbHlnb25Ub0FkZCwgcHJvcHMpO1xuICAgICAgICBpZiAoZWRpdEFjdGlvbikge1xuICAgICAgICAgIHByb3BzLm9uRWRpdChlZGl0QWN0aW9uKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIC8vIFRyaWdnZXIgcG9pbnRlciBtb3ZlIHJpZ2h0IGF3YXkgaW4gb3JkZXIgZm9yIGl0IHRvIHVwZGF0ZSBlZGl0IGhhbmRsZXMgKHRvIHN1cHBvcnQgZG91YmxlLWNsaWNrKVxuICAgIGNvbnN0IGZha2VQb2ludGVyTW92ZUV2ZW50OiBQb2ludGVyTW92ZUV2ZW50ID0ge1xuICAgICAgc2NyZWVuQ29vcmRzOiBbLTEsIC0xXSxcbiAgICAgIG1hcENvb3JkczogZXZlbnQubWFwQ29vcmRzLFxuICAgICAgcGlja3M6IFtdLFxuICAgICAgcG9pbnRlckRvd25QaWNrczogbnVsbCxcbiAgICAgIHBvaW50ZXJEb3duU2NyZWVuQ29vcmRzOiBudWxsLFxuICAgICAgcG9pbnRlckRvd25NYXBDb29yZHM6IG51bGwsXG4gICAgICBjYW5jZWxQYW46ICgpID0+IHt9LFxuICAgICAgc291cmNlRXZlbnQ6IG51bGwsXG4gICAgfTtcblxuICAgIHRoaXMuaGFuZGxlUG9pbnRlck1vdmUoZmFrZVBvaW50ZXJNb3ZlRXZlbnQsIHByb3BzKTtcbiAgfVxuXG4gIGZpbmFsaXplZENvb3JkaW5hdGVzKGNvb3JkczogUG9zaXRpb25bXSkge1xuICAgIC8vIFJlbW92ZSB0aGUgaG92ZXJlZCBwb3NpdGlvblxuICAgIGxldCBjb29yZGluYXRlcyA9IFtbLi4uY29vcmRzLnNsaWNlKDAsIC0yKSwgY29vcmRzWzBdXV07XG4gICAgbGV0IHB0ID0gdGhpcy5nZXRJbnRlcm1lZGlhdGVQb2ludChbLi4uY29vcmRzXSk7XG4gICAgaWYgKCFwdCkge1xuICAgICAgLy8gaWYgaW50ZXJtZWRpYXRlIHBvaW50IHdpdGggOTAgZGVncmVlIG5vdCBhdmFpbGFibGVcbiAgICAgIC8vIHRyeSByZW1vdmUgdGhlIGxhc3QgY2xpY2tlZCBwb2ludCBhbmQgZ2V0IHRoZSBpbnRlcm1lZGlhdGUgcG9pbnQuXG4gICAgICBjb25zdCB0YyA9IFsuLi5jb29yZHNdO1xuICAgICAgdGMuc3BsaWNlKC0zLCAxKTtcbiAgICAgIHB0ID0gdGhpcy5nZXRJbnRlcm1lZGlhdGVQb2ludChbLi4udGNdKTtcbiAgICAgIGlmIChwdCkge1xuICAgICAgICBjb29yZGluYXRlcyA9IFtbLi4uY29vcmRzLnNsaWNlKDAsIC0zKSwgcHQsIGNvb3Jkc1swXV1dO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBjb29yZGluYXRlcyA9IFtbLi4uY29vcmRzLnNsaWNlKDAsIC0yKSwgcHQsIGNvb3Jkc1swXV1dO1xuICAgIH1cbiAgICByZXR1cm4gY29vcmRpbmF0ZXM7XG4gIH1cblxuICBnZXRJbnRlcm1lZGlhdGVQb2ludChjb29yZGluYXRlczogUG9zaXRpb25bXSkge1xuICAgIGxldCBwdDtcbiAgICBpZiAoY29vcmRpbmF0ZXMubGVuZ3RoID4gNCkge1xuICAgICAgY29uc3QgW3AxLCBwMl0gPSBbLi4uY29vcmRpbmF0ZXNdO1xuICAgICAgY29uc3QgYW5nbGUxID0gYmVhcmluZyhwMSwgcDIpO1xuICAgICAgY29uc3QgcDMgPSBjb29yZGluYXRlc1tjb29yZGluYXRlcy5sZW5ndGggLSAzXTtcbiAgICAgIGNvbnN0IHA0ID0gY29vcmRpbmF0ZXNbY29vcmRpbmF0ZXMubGVuZ3RoIC0gNF07XG4gICAgICBjb25zdCBhbmdsZTIgPSBiZWFyaW5nKHAzLCBwNCk7XG5cbiAgICAgIGNvbnN0IGFuZ2xlcyA9IHsgZmlyc3Q6IFtdLCBzZWNvbmQ6IFtdIH07XG4gICAgICAvLyBjYWxjdWxhdGUgMyByaWdodCBhbmdsZSBwb2ludHMgZm9yIGZpcnN0IGFuZCBsYXN0IHBvaW50cyBpbiBsaW5lU3RyaW5nXG4gICAgICBbMSwgMiwgM10uZm9yRWFjaCgoZmFjdG9yKSA9PiB7XG4gICAgICAgIGNvbnN0IG5ld0FuZ2xlMSA9IGFuZ2xlMSArIGZhY3RvciAqIDkwO1xuICAgICAgICAvLyBjb252ZXJ0IGFuZ2xlcyB0byAwIHRvIC0xODAgZm9yIGFudGktY2xvY2sgYW5kIDAgdG8gMTgwIGZvciBjbG9jayB3aXNlXG4gICAgICAgIGFuZ2xlcy5maXJzdC5wdXNoKG5ld0FuZ2xlMSA+IDE4MCA/IG5ld0FuZ2xlMSAtIDM2MCA6IG5ld0FuZ2xlMSk7XG4gICAgICAgIGNvbnN0IG5ld0FuZ2xlMiA9IGFuZ2xlMiArIGZhY3RvciAqIDkwO1xuICAgICAgICBhbmdsZXMuc2Vjb25kLnB1c2gobmV3QW5nbGUyID4gMTgwID8gbmV3QW5nbGUyIC0gMzYwIDogbmV3QW5nbGUyKTtcbiAgICAgIH0pO1xuXG4gICAgICBjb25zdCBkaXN0YW5jZSA9IHR1cmZEaXN0YW5jZShwb2ludChwMSksIHBvaW50KHAzKSk7XG4gICAgICAvLyBEcmF3IGltYWdpbmFyeSByaWdodCBhbmdsZSBsaW5lcyBmb3IgYm90aCBmaXJzdCBhbmQgbGFzdCBwb2ludHMgaW4gbGluZVN0cmluZ1xuICAgICAgLy8gSWYgdGhlcmUgaXMgaW50ZXJzZWN0aW9uIHBvaW50IGZvciBhbnkgMiBsaW5lcywgd2lsbCBiZSB0aGUgOTAgZGVncmVlIHBvaW50LlxuICAgICAgWzAsIDEsIDJdLmZvckVhY2goKGluZGV4Rmlyc3QpID0+IHtcbiAgICAgICAgY29uc3QgbGluZTEgPSB0dXJmTGluZVN0cmluZyhbXG4gICAgICAgICAgcDEsXG4gICAgICAgICAgZGVzdGluYXRpb24ocDEsIGRpc3RhbmNlLCBhbmdsZXMuZmlyc3RbaW5kZXhGaXJzdF0pLmdlb21ldHJ5LmNvb3JkaW5hdGVzLFxuICAgICAgICBdKTtcbiAgICAgICAgWzAsIDEsIDJdLmZvckVhY2goKGluZGV4U2Vjb25kKSA9PiB7XG4gICAgICAgICAgY29uc3QgbGluZTIgPSB0dXJmTGluZVN0cmluZyhbXG4gICAgICAgICAgICBwMyxcbiAgICAgICAgICAgIGRlc3RpbmF0aW9uKHAzLCBkaXN0YW5jZSwgYW5nbGVzLnNlY29uZFtpbmRleFNlY29uZF0pLmdlb21ldHJ5LmNvb3JkaW5hdGVzLFxuICAgICAgICAgIF0pO1xuICAgICAgICAgIGNvbnN0IGZjID0gbGluZUludGVyc2VjdChsaW5lMSwgbGluZTIpO1xuICAgICAgICAgIGlmIChmYyAmJiBmYy5mZWF0dXJlcy5sZW5ndGgpIHtcbiAgICAgICAgICAgIC8vIGZvdW5kIHRoZSBpbnRlcnNlY3QgcG9pbnRcbiAgICAgICAgICAgIHB0ID0gZmMuZmVhdHVyZXNbMF0uZ2VvbWV0cnkuY29vcmRpbmF0ZXM7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gcHQ7XG4gIH1cbn1cbiJdfQ==","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.DrawCircleByDiameterMode = void 0;\n\nvar _circle = _interopRequireDefault(require(\"@turf/circle\"));\n\nvar _distance = _interopRequireDefault(require(\"@turf/distance\"));\n\nvar _geojsonEditMode = require(\"./geojson-edit-mode\");\n\nvar _twoClickPolygonMode = require(\"./two-click-polygon-mode\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nvar DrawCircleByDiameterMode = /*#__PURE__*/function (_TwoClickPolygonMode) {\n  _inherits(DrawCircleByDiameterMode, _TwoClickPolygonMode);\n\n  var _super = _createSuper(DrawCircleByDiameterMode);\n\n  function DrawCircleByDiameterMode() {\n    _classCallCheck(this, DrawCircleByDiameterMode);\n\n    return _super.apply(this, arguments);\n  }\n\n  _createClass(DrawCircleByDiameterMode, [{\n    key: \"getTwoClickPolygon\",\n    value: function getTwoClickPolygon(coord1, coord2, modeConfig) {\n      // Default turf value for circle is 64\n      var _ref = modeConfig || {},\n          _ref$steps = _ref.steps,\n          steps = _ref$steps === void 0 ? 64 : _ref$steps;\n\n      var options = {\n        steps: steps\n      };\n\n      if (steps < 4) {\n        console.warn(\"Minimum steps to draw a circle is 4 \"); // eslint-disable-line no-console,no-undef\n\n        options.steps = 4;\n      }\n\n      var centerCoordinates = (0, _geojsonEditMode.getIntermediatePosition)(coord1, coord2);\n      var radius = Math.max((0, _distance[\"default\"])(coord1, centerCoordinates), 0.001);\n      var geometry = (0, _circle[\"default\"])(centerCoordinates, radius, options);\n      geometry.properties = geometry.properties || {};\n      geometry.properties.shape = 'Circle';\n      return geometry;\n    }\n  }]);\n\n  return DrawCircleByDiameterMode;\n}(_twoClickPolygonMode.TwoClickPolygonMode);\n\nexports.DrawCircleByDiameterMode = DrawCircleByDiameterMode;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvZHJhdy1jaXJjbGUtYnktZGlhbWV0ZXItbW9kZS50cyJdLCJuYW1lcyI6WyJEcmF3Q2lyY2xlQnlEaWFtZXRlck1vZGUiLCJjb29yZDEiLCJjb29yZDIiLCJtb2RlQ29uZmlnIiwic3RlcHMiLCJvcHRpb25zIiwiY29uc29sZSIsIndhcm4iLCJjZW50ZXJDb29yZGluYXRlcyIsInJhZGl1cyIsIk1hdGgiLCJtYXgiLCJnZW9tZXRyeSIsInByb3BlcnRpZXMiLCJzaGFwZSIsIlR3b0NsaWNrUG9seWdvbk1vZGUiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFFQTs7QUFDQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUFFYUEsd0I7Ozs7Ozs7Ozs7Ozs7dUNBQ1FDLE0sRUFBa0JDLE0sRUFBa0JDLFUsRUFBcUM7QUFDMUY7QUFEMEYsaUJBRW5FQSxVQUFVLElBQUksRUFGcUQ7QUFBQSw0QkFFbEZDLEtBRmtGO0FBQUEsVUFFbEZBLEtBRmtGLDJCQUUxRSxFQUYwRTs7QUFHMUYsVUFBTUMsT0FBTyxHQUFHO0FBQUVELFFBQUFBLEtBQUssRUFBTEE7QUFBRixPQUFoQjs7QUFFQSxVQUFJQSxLQUFLLEdBQUcsQ0FBWixFQUFlO0FBQ2JFLFFBQUFBLE9BQU8sQ0FBQ0MsSUFBUix5Q0FEYSxDQUN5Qzs7QUFDdERGLFFBQUFBLE9BQU8sQ0FBQ0QsS0FBUixHQUFnQixDQUFoQjtBQUNEOztBQUVELFVBQU1JLGlCQUFpQixHQUFHLDhDQUF3QlAsTUFBeEIsRUFBZ0NDLE1BQWhDLENBQTFCO0FBQ0EsVUFBTU8sTUFBTSxHQUFHQyxJQUFJLENBQUNDLEdBQUwsQ0FBUywwQkFBU1YsTUFBVCxFQUFpQk8saUJBQWpCLENBQVQsRUFBOEMsS0FBOUMsQ0FBZjtBQUVBLFVBQU1JLFFBQVEsR0FBRyx3QkFBT0osaUJBQVAsRUFBMEJDLE1BQTFCLEVBQWtDSixPQUFsQyxDQUFqQjtBQUVBTyxNQUFBQSxRQUFRLENBQUNDLFVBQVQsR0FBc0JELFFBQVEsQ0FBQ0MsVUFBVCxJQUF1QixFQUE3QztBQUNBRCxNQUFBQSxRQUFRLENBQUNDLFVBQVQsQ0FBb0JDLEtBQXBCLEdBQTRCLFFBQTVCO0FBRUEsYUFBT0YsUUFBUDtBQUNEOzs7O0VBcEIyQ0csd0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgY2lyY2xlIGZyb20gJ0B0dXJmL2NpcmNsZSc7XG5pbXBvcnQgZGlzdGFuY2UgZnJvbSAnQHR1cmYvZGlzdGFuY2UnO1xuaW1wb3J0IHsgUG9zaXRpb24sIFBvbHlnb24sIEZlYXR1cmVPZiB9IGZyb20gJy4uL2dlb2pzb24tdHlwZXMnO1xuaW1wb3J0IHsgZ2V0SW50ZXJtZWRpYXRlUG9zaXRpb24gfSBmcm9tICcuL2dlb2pzb24tZWRpdC1tb2RlJztcbmltcG9ydCB7IFR3b0NsaWNrUG9seWdvbk1vZGUgfSBmcm9tICcuL3R3by1jbGljay1wb2x5Z29uLW1vZGUnO1xuXG5leHBvcnQgY2xhc3MgRHJhd0NpcmNsZUJ5RGlhbWV0ZXJNb2RlIGV4dGVuZHMgVHdvQ2xpY2tQb2x5Z29uTW9kZSB7XG4gIGdldFR3b0NsaWNrUG9seWdvbihjb29yZDE6IFBvc2l0aW9uLCBjb29yZDI6IFBvc2l0aW9uLCBtb2RlQ29uZmlnOiBhbnkpOiBGZWF0dXJlT2Y8UG9seWdvbj4ge1xuICAgIC8vIERlZmF1bHQgdHVyZiB2YWx1ZSBmb3IgY2lyY2xlIGlzIDY0XG4gICAgY29uc3QgeyBzdGVwcyA9IDY0IH0gPSBtb2RlQ29uZmlnIHx8IHt9O1xuICAgIGNvbnN0IG9wdGlvbnMgPSB7IHN0ZXBzIH07XG5cbiAgICBpZiAoc3RlcHMgPCA0KSB7XG4gICAgICBjb25zb2xlLndhcm4oYE1pbmltdW0gc3RlcHMgdG8gZHJhdyBhIGNpcmNsZSBpcyA0IGApOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLWNvbnNvbGUsbm8tdW5kZWZcbiAgICAgIG9wdGlvbnMuc3RlcHMgPSA0O1xuICAgIH1cblxuICAgIGNvbnN0IGNlbnRlckNvb3JkaW5hdGVzID0gZ2V0SW50ZXJtZWRpYXRlUG9zaXRpb24oY29vcmQxLCBjb29yZDIpO1xuICAgIGNvbnN0IHJhZGl1cyA9IE1hdGgubWF4KGRpc3RhbmNlKGNvb3JkMSwgY2VudGVyQ29vcmRpbmF0ZXMpLCAwLjAwMSk7XG5cbiAgICBjb25zdCBnZW9tZXRyeSA9IGNpcmNsZShjZW50ZXJDb29yZGluYXRlcywgcmFkaXVzLCBvcHRpb25zKTtcblxuICAgIGdlb21ldHJ5LnByb3BlcnRpZXMgPSBnZW9tZXRyeS5wcm9wZXJ0aWVzIHx8IHt9O1xuICAgIGdlb21ldHJ5LnByb3BlcnRpZXMuc2hhcGUgPSAnQ2lyY2xlJztcblxuICAgIHJldHVybiBnZW9tZXRyeTtcbiAgfVxufVxuIl19","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.DrawCircleFromCenterMode = void 0;\n\nvar _circle = _interopRequireDefault(require(\"@turf/circle\"));\n\nvar _distance = _interopRequireDefault(require(\"@turf/distance\"));\n\nvar _twoClickPolygonMode = require(\"./two-click-polygon-mode\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nvar DrawCircleFromCenterMode = /*#__PURE__*/function (_TwoClickPolygonMode) {\n  _inherits(DrawCircleFromCenterMode, _TwoClickPolygonMode);\n\n  var _super = _createSuper(DrawCircleFromCenterMode);\n\n  function DrawCircleFromCenterMode() {\n    _classCallCheck(this, DrawCircleFromCenterMode);\n\n    return _super.apply(this, arguments);\n  }\n\n  _createClass(DrawCircleFromCenterMode, [{\n    key: \"getTwoClickPolygon\",\n    value: function getTwoClickPolygon(coord1, coord2, modeConfig) {\n      // Default turf value for circle is 64\n      var _ref = modeConfig || {},\n          _ref$steps = _ref.steps,\n          steps = _ref$steps === void 0 ? 64 : _ref$steps;\n\n      var options = {\n        steps: steps\n      };\n\n      if (steps < 4) {\n        console.warn(\"Minimum steps to draw a circle is 4 \"); // eslint-disable-line no-console,no-undef\n\n        options.steps = 4;\n      }\n\n      var radius = Math.max((0, _distance[\"default\"])(coord1, coord2), 0.001);\n      var geometry = (0, _circle[\"default\"])(coord1, radius, options);\n      geometry.properties = geometry.properties || {};\n      geometry.properties.shape = 'Circle';\n      return geometry;\n    }\n  }]);\n\n  return DrawCircleFromCenterMode;\n}(_twoClickPolygonMode.TwoClickPolygonMode);\n\nexports.DrawCircleFromCenterMode = DrawCircleFromCenterMode;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvZHJhdy1jaXJjbGUtZnJvbS1jZW50ZXItbW9kZS50cyJdLCJuYW1lcyI6WyJEcmF3Q2lyY2xlRnJvbUNlbnRlck1vZGUiLCJjb29yZDEiLCJjb29yZDIiLCJtb2RlQ29uZmlnIiwic3RlcHMiLCJvcHRpb25zIiwiY29uc29sZSIsIndhcm4iLCJyYWRpdXMiLCJNYXRoIiwibWF4IiwiZ2VvbWV0cnkiLCJwcm9wZXJ0aWVzIiwic2hhcGUiLCJUd29DbGlja1BvbHlnb25Nb2RlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUE7O0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBRWFBLHdCOzs7Ozs7Ozs7Ozs7O3VDQUNRQyxNLEVBQWtCQyxNLEVBQWtCQyxVLEVBQXFDO0FBQzFGO0FBRDBGLGlCQUVuRUEsVUFBVSxJQUFJLEVBRnFEO0FBQUEsNEJBRWxGQyxLQUZrRjtBQUFBLFVBRWxGQSxLQUZrRiwyQkFFMUUsRUFGMEU7O0FBRzFGLFVBQU1DLE9BQU8sR0FBRztBQUFFRCxRQUFBQSxLQUFLLEVBQUxBO0FBQUYsT0FBaEI7O0FBRUEsVUFBSUEsS0FBSyxHQUFHLENBQVosRUFBZTtBQUNiRSxRQUFBQSxPQUFPLENBQUNDLElBQVIseUNBRGEsQ0FDeUM7O0FBQ3RERixRQUFBQSxPQUFPLENBQUNELEtBQVIsR0FBZ0IsQ0FBaEI7QUFDRDs7QUFFRCxVQUFNSSxNQUFNLEdBQUdDLElBQUksQ0FBQ0MsR0FBTCxDQUFTLDBCQUFTVCxNQUFULEVBQWlCQyxNQUFqQixDQUFULEVBQW1DLEtBQW5DLENBQWY7QUFDQSxVQUFNUyxRQUFRLEdBQUcsd0JBQU9WLE1BQVAsRUFBZU8sTUFBZixFQUF1QkgsT0FBdkIsQ0FBakI7QUFFQU0sTUFBQUEsUUFBUSxDQUFDQyxVQUFULEdBQXNCRCxRQUFRLENBQUNDLFVBQVQsSUFBdUIsRUFBN0M7QUFDQUQsTUFBQUEsUUFBUSxDQUFDQyxVQUFULENBQW9CQyxLQUFwQixHQUE0QixRQUE1QjtBQUVBLGFBQU9GLFFBQVA7QUFDRDs7OztFQWxCMkNHLHdDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGNpcmNsZSBmcm9tICdAdHVyZi9jaXJjbGUnO1xuaW1wb3J0IGRpc3RhbmNlIGZyb20gJ0B0dXJmL2Rpc3RhbmNlJztcbmltcG9ydCB7IFBvc2l0aW9uLCBQb2x5Z29uLCBGZWF0dXJlT2YgfSBmcm9tICcuLi9nZW9qc29uLXR5cGVzJztcbmltcG9ydCB7IFR3b0NsaWNrUG9seWdvbk1vZGUgfSBmcm9tICcuL3R3by1jbGljay1wb2x5Z29uLW1vZGUnO1xuXG5leHBvcnQgY2xhc3MgRHJhd0NpcmNsZUZyb21DZW50ZXJNb2RlIGV4dGVuZHMgVHdvQ2xpY2tQb2x5Z29uTW9kZSB7XG4gIGdldFR3b0NsaWNrUG9seWdvbihjb29yZDE6IFBvc2l0aW9uLCBjb29yZDI6IFBvc2l0aW9uLCBtb2RlQ29uZmlnOiBhbnkpOiBGZWF0dXJlT2Y8UG9seWdvbj4ge1xuICAgIC8vIERlZmF1bHQgdHVyZiB2YWx1ZSBmb3IgY2lyY2xlIGlzIDY0XG4gICAgY29uc3QgeyBzdGVwcyA9IDY0IH0gPSBtb2RlQ29uZmlnIHx8IHt9O1xuICAgIGNvbnN0IG9wdGlvbnMgPSB7IHN0ZXBzIH07XG5cbiAgICBpZiAoc3RlcHMgPCA0KSB7XG4gICAgICBjb25zb2xlLndhcm4oYE1pbmltdW0gc3RlcHMgdG8gZHJhdyBhIGNpcmNsZSBpcyA0IGApOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLWNvbnNvbGUsbm8tdW5kZWZcbiAgICAgIG9wdGlvbnMuc3RlcHMgPSA0O1xuICAgIH1cblxuICAgIGNvbnN0IHJhZGl1cyA9IE1hdGgubWF4KGRpc3RhbmNlKGNvb3JkMSwgY29vcmQyKSwgMC4wMDEpO1xuICAgIGNvbnN0IGdlb21ldHJ5ID0gY2lyY2xlKGNvb3JkMSwgcmFkaXVzLCBvcHRpb25zKTtcblxuICAgIGdlb21ldHJ5LnByb3BlcnRpZXMgPSBnZW9tZXRyeS5wcm9wZXJ0aWVzIHx8IHt9O1xuICAgIGdlb21ldHJ5LnByb3BlcnRpZXMuc2hhcGUgPSAnQ2lyY2xlJztcblxuICAgIHJldHVybiBnZW9tZXRyeTtcbiAgfVxufVxuIl19","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.DrawEllipseByBoundingBoxMode = void 0;\n\nvar _bboxPolygon = _interopRequireDefault(require(\"@turf/bbox-polygon\"));\n\nvar _distance = _interopRequireDefault(require(\"@turf/distance\"));\n\nvar _ellipse = _interopRequireDefault(require(\"@turf/ellipse\"));\n\nvar _helpers = require(\"@turf/helpers\");\n\nvar _geojsonEditMode = require(\"./geojson-edit-mode\");\n\nvar _twoClickPolygonMode = require(\"./two-click-polygon-mode\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nvar DrawEllipseByBoundingBoxMode = /*#__PURE__*/function (_TwoClickPolygonMode) {\n  _inherits(DrawEllipseByBoundingBoxMode, _TwoClickPolygonMode);\n\n  var _super = _createSuper(DrawEllipseByBoundingBoxMode);\n\n  function DrawEllipseByBoundingBoxMode() {\n    _classCallCheck(this, DrawEllipseByBoundingBoxMode);\n\n    return _super.apply(this, arguments);\n  }\n\n  _createClass(DrawEllipseByBoundingBoxMode, [{\n    key: \"getTwoClickPolygon\",\n    value: function getTwoClickPolygon(coord1, coord2, modeConfig) {\n      var minX = Math.min(coord1[0], coord2[0]);\n      var minY = Math.min(coord1[1], coord2[1]);\n      var maxX = Math.max(coord1[0], coord2[0]);\n      var maxY = Math.max(coord1[1], coord2[1]);\n      var polygonPoints = (0, _bboxPolygon[\"default\"])([minX, minY, maxX, maxY]).geometry.coordinates[0];\n      var centerCoordinates = (0, _geojsonEditMode.getIntermediatePosition)(coord1, coord2);\n      var xSemiAxis = Math.max((0, _distance[\"default\"])((0, _helpers.point)(polygonPoints[0]), (0, _helpers.point)(polygonPoints[1])), 0.001);\n      var ySemiAxis = Math.max((0, _distance[\"default\"])((0, _helpers.point)(polygonPoints[0]), (0, _helpers.point)(polygonPoints[3])), 0.001); // @ts-ignore\n\n      return (0, _ellipse[\"default\"])(centerCoordinates, xSemiAxis, ySemiAxis);\n    }\n  }]);\n\n  return DrawEllipseByBoundingBoxMode;\n}(_twoClickPolygonMode.TwoClickPolygonMode);\n\nexports.DrawEllipseByBoundingBoxMode = DrawEllipseByBoundingBoxMode;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvZHJhdy1lbGxpcHNlLWJ5LWJvdW5kaW5nLWJveC1tb2RlLnRzIl0sIm5hbWVzIjpbIkRyYXdFbGxpcHNlQnlCb3VuZGluZ0JveE1vZGUiLCJjb29yZDEiLCJjb29yZDIiLCJtb2RlQ29uZmlnIiwibWluWCIsIk1hdGgiLCJtaW4iLCJtaW5ZIiwibWF4WCIsIm1heCIsIm1heFkiLCJwb2x5Z29uUG9pbnRzIiwiZ2VvbWV0cnkiLCJjb29yZGluYXRlcyIsImNlbnRlckNvb3JkaW5hdGVzIiwieFNlbWlBeGlzIiwieVNlbWlBeGlzIiwiVHdvQ2xpY2tQb2x5Z29uTW9kZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUNBOztBQUVBOztBQUNBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQUVhQSw0Qjs7Ozs7Ozs7Ozs7Ozt1Q0FDUUMsTSxFQUFrQkMsTSxFQUFrQkMsVSxFQUFxQztBQUMxRixVQUFNQyxJQUFJLEdBQUdDLElBQUksQ0FBQ0MsR0FBTCxDQUFTTCxNQUFNLENBQUMsQ0FBRCxDQUFmLEVBQW9CQyxNQUFNLENBQUMsQ0FBRCxDQUExQixDQUFiO0FBQ0EsVUFBTUssSUFBSSxHQUFHRixJQUFJLENBQUNDLEdBQUwsQ0FBU0wsTUFBTSxDQUFDLENBQUQsQ0FBZixFQUFvQkMsTUFBTSxDQUFDLENBQUQsQ0FBMUIsQ0FBYjtBQUNBLFVBQU1NLElBQUksR0FBR0gsSUFBSSxDQUFDSSxHQUFMLENBQVNSLE1BQU0sQ0FBQyxDQUFELENBQWYsRUFBb0JDLE1BQU0sQ0FBQyxDQUFELENBQTFCLENBQWI7QUFDQSxVQUFNUSxJQUFJLEdBQUdMLElBQUksQ0FBQ0ksR0FBTCxDQUFTUixNQUFNLENBQUMsQ0FBRCxDQUFmLEVBQW9CQyxNQUFNLENBQUMsQ0FBRCxDQUExQixDQUFiO0FBRUEsVUFBTVMsYUFBYSxHQUFHLDZCQUFZLENBQUNQLElBQUQsRUFBT0csSUFBUCxFQUFhQyxJQUFiLEVBQW1CRSxJQUFuQixDQUFaLEVBQXNDRSxRQUF0QyxDQUErQ0MsV0FBL0MsQ0FBMkQsQ0FBM0QsQ0FBdEI7QUFDQSxVQUFNQyxpQkFBaUIsR0FBRyw4Q0FBd0JiLE1BQXhCLEVBQWdDQyxNQUFoQyxDQUExQjtBQUVBLFVBQU1hLFNBQVMsR0FBR1YsSUFBSSxDQUFDSSxHQUFMLENBQVMsMEJBQVMsb0JBQU1FLGFBQWEsQ0FBQyxDQUFELENBQW5CLENBQVQsRUFBa0Msb0JBQU1BLGFBQWEsQ0FBQyxDQUFELENBQW5CLENBQWxDLENBQVQsRUFBcUUsS0FBckUsQ0FBbEI7QUFDQSxVQUFNSyxTQUFTLEdBQUdYLElBQUksQ0FBQ0ksR0FBTCxDQUFTLDBCQUFTLG9CQUFNRSxhQUFhLENBQUMsQ0FBRCxDQUFuQixDQUFULEVBQWtDLG9CQUFNQSxhQUFhLENBQUMsQ0FBRCxDQUFuQixDQUFsQyxDQUFULEVBQXFFLEtBQXJFLENBQWxCLENBVjBGLENBWTFGOztBQUNBLGFBQU8seUJBQVFHLGlCQUFSLEVBQTJCQyxTQUEzQixFQUFzQ0MsU0FBdEMsQ0FBUDtBQUNEOzs7O0VBZitDQyx3QyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBiYm94UG9seWdvbiBmcm9tICdAdHVyZi9iYm94LXBvbHlnb24nO1xuaW1wb3J0IGRpc3RhbmNlIGZyb20gJ0B0dXJmL2Rpc3RhbmNlJztcbmltcG9ydCBlbGxpcHNlIGZyb20gJ0B0dXJmL2VsbGlwc2UnO1xuaW1wb3J0IHsgcG9pbnQgfSBmcm9tICdAdHVyZi9oZWxwZXJzJztcbmltcG9ydCB7IFBvc2l0aW9uLCBQb2x5Z29uLCBGZWF0dXJlT2YgfSBmcm9tICcuLi9nZW9qc29uLXR5cGVzJztcbmltcG9ydCB7IGdldEludGVybWVkaWF0ZVBvc2l0aW9uIH0gZnJvbSAnLi9nZW9qc29uLWVkaXQtbW9kZSc7XG5pbXBvcnQgeyBUd29DbGlja1BvbHlnb25Nb2RlIH0gZnJvbSAnLi90d28tY2xpY2stcG9seWdvbi1tb2RlJztcblxuZXhwb3J0IGNsYXNzIERyYXdFbGxpcHNlQnlCb3VuZGluZ0JveE1vZGUgZXh0ZW5kcyBUd29DbGlja1BvbHlnb25Nb2RlIHtcbiAgZ2V0VHdvQ2xpY2tQb2x5Z29uKGNvb3JkMTogUG9zaXRpb24sIGNvb3JkMjogUG9zaXRpb24sIG1vZGVDb25maWc6IGFueSk6IEZlYXR1cmVPZjxQb2x5Z29uPiB7XG4gICAgY29uc3QgbWluWCA9IE1hdGgubWluKGNvb3JkMVswXSwgY29vcmQyWzBdKTtcbiAgICBjb25zdCBtaW5ZID0gTWF0aC5taW4oY29vcmQxWzFdLCBjb29yZDJbMV0pO1xuICAgIGNvbnN0IG1heFggPSBNYXRoLm1heChjb29yZDFbMF0sIGNvb3JkMlswXSk7XG4gICAgY29uc3QgbWF4WSA9IE1hdGgubWF4KGNvb3JkMVsxXSwgY29vcmQyWzFdKTtcblxuICAgIGNvbnN0IHBvbHlnb25Qb2ludHMgPSBiYm94UG9seWdvbihbbWluWCwgbWluWSwgbWF4WCwgbWF4WV0pLmdlb21ldHJ5LmNvb3JkaW5hdGVzWzBdO1xuICAgIGNvbnN0IGNlbnRlckNvb3JkaW5hdGVzID0gZ2V0SW50ZXJtZWRpYXRlUG9zaXRpb24oY29vcmQxLCBjb29yZDIpO1xuXG4gICAgY29uc3QgeFNlbWlBeGlzID0gTWF0aC5tYXgoZGlzdGFuY2UocG9pbnQocG9seWdvblBvaW50c1swXSksIHBvaW50KHBvbHlnb25Qb2ludHNbMV0pKSwgMC4wMDEpO1xuICAgIGNvbnN0IHlTZW1pQXhpcyA9IE1hdGgubWF4KGRpc3RhbmNlKHBvaW50KHBvbHlnb25Qb2ludHNbMF0pLCBwb2ludChwb2x5Z29uUG9pbnRzWzNdKSksIDAuMDAxKTtcblxuICAgIC8vIEB0cy1pZ25vcmVcbiAgICByZXR1cm4gZWxsaXBzZShjZW50ZXJDb29yZGluYXRlcywgeFNlbWlBeGlzLCB5U2VtaUF4aXMpO1xuICB9XG59XG4iXX0=","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.DrawEllipseUsingThreePointsMode = void 0;\n\nvar _distance = _interopRequireDefault(require(\"@turf/distance\"));\n\nvar _ellipse = _interopRequireDefault(require(\"@turf/ellipse\"));\n\nvar _bearing = _interopRequireDefault(require(\"@turf/bearing\"));\n\nvar _helpers = require(\"@turf/helpers\");\n\nvar _geojsonEditMode = require(\"./geojson-edit-mode\");\n\nvar _threeClickPolygonMode = require(\"./three-click-polygon-mode\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nvar DrawEllipseUsingThreePointsMode = /*#__PURE__*/function (_ThreeClickPolygonMod) {\n  _inherits(DrawEllipseUsingThreePointsMode, _ThreeClickPolygonMod);\n\n  var _super = _createSuper(DrawEllipseUsingThreePointsMode);\n\n  function DrawEllipseUsingThreePointsMode() {\n    _classCallCheck(this, DrawEllipseUsingThreePointsMode);\n\n    return _super.apply(this, arguments);\n  }\n\n  _createClass(DrawEllipseUsingThreePointsMode, [{\n    key: \"getThreeClickPolygon\",\n    value: function getThreeClickPolygon(coord1, coord2, coord3, modeConfig) {\n      var centerCoordinates = (0, _geojsonEditMode.getIntermediatePosition)(coord1, coord2);\n      var xSemiAxis = Math.max((0, _distance[\"default\"])(centerCoordinates, (0, _helpers.point)(coord3)), 0.001);\n      var ySemiAxis = Math.max((0, _distance[\"default\"])(coord1, coord2), 0.001) / 2;\n      var options = {\n        angle: (0, _bearing[\"default\"])(coord1, coord2)\n      }; // @ts-ignore\n\n      return (0, _ellipse[\"default\"])(centerCoordinates, xSemiAxis, ySemiAxis, options);\n    }\n  }]);\n\n  return DrawEllipseUsingThreePointsMode;\n}(_threeClickPolygonMode.ThreeClickPolygonMode);\n\nexports.DrawEllipseUsingThreePointsMode = DrawEllipseUsingThreePointsMode;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvZHJhdy1lbGxpcHNlLXVzaW5nLXRocmVlLXBvaW50cy1tb2RlLnRzIl0sIm5hbWVzIjpbIkRyYXdFbGxpcHNlVXNpbmdUaHJlZVBvaW50c01vZGUiLCJjb29yZDEiLCJjb29yZDIiLCJjb29yZDMiLCJtb2RlQ29uZmlnIiwiY2VudGVyQ29vcmRpbmF0ZXMiLCJ4U2VtaUF4aXMiLCJNYXRoIiwibWF4IiwieVNlbWlBeGlzIiwib3B0aW9ucyIsImFuZ2xlIiwiVGhyZWVDbGlja1BvbHlnb25Nb2RlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBRUE7O0FBQ0E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBRWFBLCtCOzs7Ozs7Ozs7Ozs7O3lDQUVUQyxNLEVBQ0FDLE0sRUFDQUMsTSxFQUNBQyxVLEVBQ3VDO0FBQ3ZDLFVBQU1DLGlCQUFpQixHQUFHLDhDQUF3QkosTUFBeEIsRUFBZ0NDLE1BQWhDLENBQTFCO0FBQ0EsVUFBTUksU0FBUyxHQUFHQyxJQUFJLENBQUNDLEdBQUwsQ0FBUywwQkFBU0gsaUJBQVQsRUFBNEIsb0JBQU1GLE1BQU4sQ0FBNUIsQ0FBVCxFQUFxRCxLQUFyRCxDQUFsQjtBQUNBLFVBQU1NLFNBQVMsR0FBR0YsSUFBSSxDQUFDQyxHQUFMLENBQVMsMEJBQVNQLE1BQVQsRUFBaUJDLE1BQWpCLENBQVQsRUFBbUMsS0FBbkMsSUFBNEMsQ0FBOUQ7QUFDQSxVQUFNUSxPQUFPLEdBQUc7QUFBRUMsUUFBQUEsS0FBSyxFQUFFLHlCQUFRVixNQUFSLEVBQWdCQyxNQUFoQjtBQUFULE9BQWhCLENBSnVDLENBS3ZDOztBQUNBLGFBQU8seUJBQVFHLGlCQUFSLEVBQTJCQyxTQUEzQixFQUFzQ0csU0FBdEMsRUFBaURDLE9BQWpELENBQVA7QUFDRDs7OztFQWJrREUsNEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgZGlzdGFuY2UgZnJvbSAnQHR1cmYvZGlzdGFuY2UnO1xuaW1wb3J0IGVsbGlwc2UgZnJvbSAnQHR1cmYvZWxsaXBzZSc7XG5pbXBvcnQgYmVhcmluZyBmcm9tICdAdHVyZi9iZWFyaW5nJztcbmltcG9ydCB7IHBvaW50IH0gZnJvbSAnQHR1cmYvaGVscGVycyc7XG5pbXBvcnQgeyBQb3NpdGlvbiwgUG9seWdvbiwgRmVhdHVyZU9mIH0gZnJvbSAnLi4vZ2VvanNvbi10eXBlcyc7XG5pbXBvcnQgeyBnZXRJbnRlcm1lZGlhdGVQb3NpdGlvbiB9IGZyb20gJy4vZ2VvanNvbi1lZGl0LW1vZGUnO1xuaW1wb3J0IHsgVGhyZWVDbGlja1BvbHlnb25Nb2RlIH0gZnJvbSAnLi90aHJlZS1jbGljay1wb2x5Z29uLW1vZGUnO1xuXG5leHBvcnQgY2xhc3MgRHJhd0VsbGlwc2VVc2luZ1RocmVlUG9pbnRzTW9kZSBleHRlbmRzIFRocmVlQ2xpY2tQb2x5Z29uTW9kZSB7XG4gIGdldFRocmVlQ2xpY2tQb2x5Z29uKFxuICAgIGNvb3JkMTogUG9zaXRpb24sXG4gICAgY29vcmQyOiBQb3NpdGlvbixcbiAgICBjb29yZDM6IFBvc2l0aW9uLFxuICAgIG1vZGVDb25maWc6IGFueVxuICApOiBGZWF0dXJlT2Y8UG9seWdvbj4gfCBudWxsIHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCBjZW50ZXJDb29yZGluYXRlcyA9IGdldEludGVybWVkaWF0ZVBvc2l0aW9uKGNvb3JkMSwgY29vcmQyKTtcbiAgICBjb25zdCB4U2VtaUF4aXMgPSBNYXRoLm1heChkaXN0YW5jZShjZW50ZXJDb29yZGluYXRlcywgcG9pbnQoY29vcmQzKSksIDAuMDAxKTtcbiAgICBjb25zdCB5U2VtaUF4aXMgPSBNYXRoLm1heChkaXN0YW5jZShjb29yZDEsIGNvb3JkMiksIDAuMDAxKSAvIDI7XG4gICAgY29uc3Qgb3B0aW9ucyA9IHsgYW5nbGU6IGJlYXJpbmcoY29vcmQxLCBjb29yZDIpIH07XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHJldHVybiBlbGxpcHNlKGNlbnRlckNvb3JkaW5hdGVzLCB4U2VtaUF4aXMsIHlTZW1pQXhpcywgb3B0aW9ucyk7XG4gIH1cbn1cbiJdfQ==","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.DrawLineStringMode = void 0;\n\nvar _utils = require(\"../utils\");\n\nvar _geojsonEditMode = require(\"./geojson-edit-mode\");\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(n); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nvar DrawLineStringMode = /*#__PURE__*/function (_GeoJsonEditMode) {\n  _inherits(DrawLineStringMode, _GeoJsonEditMode);\n\n  var _super = _createSuper(DrawLineStringMode);\n\n  function DrawLineStringMode() {\n    _classCallCheck(this, DrawLineStringMode);\n\n    return _super.apply(this, arguments);\n  }\n\n  _createClass(DrawLineStringMode, [{\n    key: \"handleClick\",\n    value: function handleClick(event, props) {\n      var picks = event.picks;\n      var clickedEditHandle = (0, _utils.getPickedEditHandle)(picks);\n      var positionAdded = false;\n\n      if (!clickedEditHandle) {\n        // Don't add another point right next to an existing one\n        this.addClickSequence(event);\n        positionAdded = true;\n      }\n\n      var clickSequence = this.getClickSequence();\n\n      if (clickSequence.length > 1 && clickedEditHandle && Array.isArray(clickedEditHandle.properties.positionIndexes) && clickedEditHandle.properties.positionIndexes[0] === clickSequence.length - 1) {\n        // They clicked the last point (or double-clicked), so add the LineString\n        var lineStringToAdd = {\n          type: 'LineString',\n          coordinates: _toConsumableArray(clickSequence)\n        };\n        this.resetClickSequence();\n        var editAction = this.getAddFeatureAction(lineStringToAdd, props.data);\n\n        if (editAction) {\n          props.onEdit(editAction);\n        }\n      } else if (positionAdded) {\n        // new tentative point\n        props.onEdit({\n          // data is the same\n          updatedData: props.data,\n          editType: 'addTentativePosition',\n          editContext: {\n            position: event.mapCoords\n          }\n        });\n      }\n    }\n  }, {\n    key: \"handleKeyUp\",\n    value: function handleKeyUp(event, props) {\n      var key = event.key;\n\n      if (key === 'Enter') {\n        var clickSequence = this.getClickSequence();\n\n        if (clickSequence.length > 1) {\n          var lineStringToAdd = {\n            type: 'LineString',\n            coordinates: _toConsumableArray(clickSequence)\n          };\n          this.resetClickSequence();\n          var editAction = this.getAddFeatureAction(lineStringToAdd, props.data);\n\n          if (editAction) {\n            props.onEdit(editAction);\n          }\n        }\n      }\n    }\n  }, {\n    key: \"getGuides\",\n    value: function getGuides(props) {\n      var _guides$features;\n\n      var lastPointerMoveEvent = props.lastPointerMoveEvent;\n      var clickSequence = this.getClickSequence();\n      var lastCoords = lastPointerMoveEvent ? [lastPointerMoveEvent.mapCoords] : [];\n      var guides = {\n        type: 'FeatureCollection',\n        features: []\n      };\n      var tentativeFeature;\n\n      if (clickSequence.length > 0) {\n        tentativeFeature = {\n          type: 'Feature',\n          properties: {\n            guideType: 'tentative'\n          },\n          geometry: {\n            type: 'LineString',\n            coordinates: [].concat(_toConsumableArray(clickSequence), lastCoords)\n          }\n        };\n      }\n\n      if (tentativeFeature) {\n        guides.features.push(tentativeFeature);\n      }\n\n      var editHandles = clickSequence.map(function (clickedCoord, index) {\n        return {\n          type: 'Feature',\n          properties: {\n            guideType: 'editHandle',\n            editHandleType: 'existing',\n            featureIndex: -1,\n            positionIndexes: [index]\n          },\n          geometry: {\n            type: 'Point',\n            coordinates: clickedCoord\n          }\n        };\n      });\n\n      (_guides$features = guides.features).push.apply(_guides$features, _toConsumableArray(editHandles)); // @ts-ignore\n\n\n      return guides;\n    }\n  }, {\n    key: \"handlePointerMove\",\n    value: function handlePointerMove(event, props) {\n      props.onUpdateCursor('cell');\n    }\n  }]);\n\n  return DrawLineStringMode;\n}(_geojsonEditMode.GeoJsonEditMode);\n\nexports.DrawLineStringMode = DrawLineStringMode;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvZHJhdy1saW5lLXN0cmluZy1tb2RlLnRzIl0sIm5hbWVzIjpbIkRyYXdMaW5lU3RyaW5nTW9kZSIsImV2ZW50IiwicHJvcHMiLCJwaWNrcyIsImNsaWNrZWRFZGl0SGFuZGxlIiwicG9zaXRpb25BZGRlZCIsImFkZENsaWNrU2VxdWVuY2UiLCJjbGlja1NlcXVlbmNlIiwiZ2V0Q2xpY2tTZXF1ZW5jZSIsImxlbmd0aCIsIkFycmF5IiwiaXNBcnJheSIsInByb3BlcnRpZXMiLCJwb3NpdGlvbkluZGV4ZXMiLCJsaW5lU3RyaW5nVG9BZGQiLCJ0eXBlIiwiY29vcmRpbmF0ZXMiLCJyZXNldENsaWNrU2VxdWVuY2UiLCJlZGl0QWN0aW9uIiwiZ2V0QWRkRmVhdHVyZUFjdGlvbiIsImRhdGEiLCJvbkVkaXQiLCJ1cGRhdGVkRGF0YSIsImVkaXRUeXBlIiwiZWRpdENvbnRleHQiLCJwb3NpdGlvbiIsIm1hcENvb3JkcyIsImtleSIsImxhc3RQb2ludGVyTW92ZUV2ZW50IiwibGFzdENvb3JkcyIsImd1aWRlcyIsImZlYXR1cmVzIiwidGVudGF0aXZlRmVhdHVyZSIsImd1aWRlVHlwZSIsImdlb21ldHJ5IiwicHVzaCIsImVkaXRIYW5kbGVzIiwibWFwIiwiY2xpY2tlZENvb3JkIiwiaW5kZXgiLCJlZGl0SGFuZGxlVHlwZSIsImZlYXR1cmVJbmRleCIsIm9uVXBkYXRlQ3Vyc29yIiwiR2VvSnNvbkVkaXRNb2RlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBRUE7O0FBQ0E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQUVhQSxrQjs7Ozs7Ozs7Ozs7OztnQ0FDQ0MsSyxFQUFtQkMsSyxFQUFxQztBQUFBLFVBQzFEQyxLQUQwRCxHQUNoREYsS0FEZ0QsQ0FDMURFLEtBRDBEO0FBRWxFLFVBQU1DLGlCQUFpQixHQUFHLGdDQUFvQkQsS0FBcEIsQ0FBMUI7QUFFQSxVQUFJRSxhQUFhLEdBQUcsS0FBcEI7O0FBQ0EsVUFBSSxD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QUEsV0FBVywrQkFBTVQsYUFBTixHQUF3QnNCLFVBQXhCO0FBRkg7QUFMTyxTQUFuQjtBQVVEOztBQUVELFVBQUlHLGdCQUFKLEVBQXNCO0FBQ3BCRixRQUFBQSxNQUFNLENBQUNDLFFBQVAsQ0FBZ0JJLElBQWhCLENBQXFCSCxnQkFBckI7QUFDRDs7QUFFRCxVQUFNSSxXQUFXLEdBQUc3QixhQUFhLENBQUM4QixHQUFkLENBQWtCLFVBQUNDLFlBQUQsRUFBZUMsS0FBZjtBQUFBLGVBQTBCO0FBQzlEeEIsVUFBQUEsSUFBSSxFQUFFLFNBRHdEO0FBRTlESCxVQUFBQSxVQUFVLEVBQUU7QUFDVnFCLFlBQUFBLFNBQVMsRUFBRSxZQUREO0FBRVZPLFlBQUFBLGNBQWMsRUFBRSxVQUZOO0FBR1ZDLFlBQUFBLFlBQVksRUFBRSxDQUFDLENBSEw7QUFJVjVCLFlBQUFBLGVBQWUsRUFBRSxDQUFDMEIsS0FBRDtBQUpQLFdBRmtEO0FBUTlETCxVQUFBQSxRQUFRLEVBQUU7QUFDUm5CLFlBQUFBLElBQUksRUFBRSxPQURFO0FBRVJDLFlBQUFBLFdBQVcsRUFBRXNCO0FBRkw7QUFSb0QsU0FBMUI7QUFBQSxPQUFsQixDQUFwQjs7QUFjQSwwQkFBQVIsTUFBTSxDQUFDQyxRQUFQLEVBQWdCSSxJQUFoQiw0Q0FBd0JDLFdBQXhCLEdBM0NxRSxDQTRDckU7OztBQUNBLGFBQU9OLE1BQVA7QUFDRDs7O3NDQUVpQjdCLEssRUFBeUJDLEssRUFBcUM7QUFDOUVBLE1BQUFBLEtBQUssQ0FBQ3dDLGNBQU4sQ0FBcUIsTUFBckI7QUFDRDs7OztFQS9HcUNDLGdDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTGluZVN0cmluZywgRmVhdHVyZUNvbGxlY3Rpb24gfSBmcm9tICcuLi9nZW9qc29uLXR5cGVzJztcbmltcG9ydCB7IENsaWNrRXZlbnQsIFBvaW50ZXJNb3ZlRXZlbnQsIE1vZGVQcm9wcywgR3VpZGVGZWF0dXJlQ29sbGVjdGlvbiB9IGZyb20gJy4uL3R5cGVzJztcbmltcG9ydCB7IGdldFBpY2tlZEVkaXRIYW5kbGUgfSBmcm9tICcuLi91dGlscyc7XG5pbXBvcnQgeyBHZW9Kc29uRWRpdE1vZGUgfSBmcm9tICcuL2dlb2pzb24tZWRpdC1tb2RlJztcblxuZXhwb3J0IGNsYXNzIERyYXdMaW5lU3RyaW5nTW9kZSBleHRlbmRzIEdlb0pzb25FZGl0TW9kZSB7XG4gIGhhbmRsZUNsaWNrKGV2ZW50OiBDbGlja0V2ZW50LCBwcm9wczogTW9kZVByb3BzPEZlYXR1cmVDb2xsZWN0aW9uPikge1xuICAgIGNvbnN0IHsgcGlja3MgfSA9IGV2ZW50O1xuICAgIGNvbnN0IGNsaWNrZWRFZGl0SGFuZGxlID0gZ2V0UGlja2VkRWRpdEhhbmRsZShwaWNrcyk7XG5cbiAgICBsZXQgcG9zaXRpb25BZGRlZCA9IGZhbHNlO1xuICAgIGlmICghY2xpY2tlZEVkaXRIYW5kbGUpIHtcbiAgICAgIC8vIERvbid0IGFkZCBhbm90aGVyIHBvaW50IHJpZ2h0IG5leHQgdG8gYW4gZXhpc3Rpbmcgb25lXG4gICAgICB0aGlzLmFkZENsaWNrU2VxdWVuY2UoZXZlbnQpO1xuICAgICAgcG9zaXRpb25BZGRlZCA9IHRydWU7XG4gICAgfVxuICAgIGNvbnN0IGNsaWNrU2VxdWVuY2UgPSB0aGlzLmdldENsaWNrU2VxdWVuY2UoKTtcblxuICAgIGlmIChcbiAgICAgIGNsaWNrU2VxdWVuY2UubGVuZ3RoID4gMSAmJlxuICAgICAgY2xpY2tlZEVkaXRIYW5kbGUgJiZcbiAgICAgIEFycmF5LmlzQXJyYXkoY2xpY2tlZEVkaXRIYW5kbGUucHJvcGVydGllcy5wb3NpdGlvbkluZGV4ZXMpICYmXG4gICAgICBjbGlja2VkRWRpdEhhbmRsZS5wcm9wZXJ0aWVzLnBvc2l0aW9uSW5kZXhlc1swXSA9PT0gY2xpY2tTZXF1ZW5jZS5sZW5ndGggLSAxXG4gICAgKSB7XG4gICAgICAvLyBUaGV5IGNsaWNrZWQgdGhlIGxhc3QgcG9pbnQgKG9yIGRvdWJsZS1jbGlja2VkKSwgc28gYWRkIHRoZSBMaW5lU3RyaW5nXG5cbiAgICAgIGNvbnN0IGxpbmVTdHJpbmdUb0FkZDogTGluZVN0cmluZyA9IHtcbiAgICAgICAgdHlwZTogJ0xpbmVTdHJpbmcnLFxuICAgICAgICBjb29yZGluYXRlczogWy4uLmNsaWNrU2VxdWVuY2VdLFxuICAgICAgfTtcblxuICAgICAgdGhpcy5yZXNldENsaWNrU2VxdWVuY2UoKTtcblxuICAgICAgY29uc3QgZWRpdEFjdGlvbiA9IHRoaXMuZ2V0QWRkRmVhdHVyZUFjdGlvbihsaW5lU3RyaW5nVG9BZGQsIHByb3BzLmRhdGEpO1xuICAgICAgaWYgKGVkaXRBY3Rpb24pIHtcbiAgICAgICAgcHJvcHMub25FZGl0KGVkaXRBY3Rpb24pO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAocG9zaXRpb25BZGRlZCkge1xuICAgICAgLy8gbmV3IHRlbnRhdGl2ZSBwb2ludFxuICAgICAgcHJvcHMub25FZGl0KHtcbiAgICAgICAgLy8gZGF0YSBpcyB0aGUgc2FtZVxuICAgICAgICB1cGRhdGVkRGF0YTogcHJvcHMuZGF0YSxcbiAgICAgICAgZWRpdFR5cGU6ICdhZGRUZW50YXRpdmVQb3NpdGlvbicsXG4gICAgICAgIGVkaXRDb250ZXh0OiB7XG4gICAgICAgICAgcG9zaXRpb246IGV2ZW50Lm1hcENvb3JkcyxcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuICBoYW5kbGVLZXlVcChldmVudDogS2V5Ym9hcmRFdmVudCwgcHJvcHM6IE1vZGVQcm9wczxGZWF0dXJlQ29sbGVjdGlvbj4pIHtcbiAgICBjb25zdCB7IGtleSB9ID0gZXZlbnQ7XG4gICAgaWYgKGtleSA9PT0gJ0VudGVyJykge1xuICAgICAgY29uc3QgY2xpY2tTZXF1ZW5jZSA9IHRoaXMuZ2V0Q2xpY2tTZXF1ZW5jZSgpO1xuICAgICAgaWYgKGNsaWNrU2VxdWVuY2UubGVuZ3RoID4gMSkge1xuICAgICAgICBjb25zdCBsaW5lU3RyaW5nVG9BZGQ6IExpbmVTdHJpbmcgPSB7XG4gICAgICAgICAgdHlwZTogJ0xpbmVTdHJpbmcnLFxuICAgICAgICAgIGNvb3JkaW5hdGVzOiBbLi4uY2xpY2tTZXF1ZW5jZV0sXG4gICAgICAgIH07XG4gICAgICAgIHRoaXMucmVzZXRDbGlja1NlcXVlbmNlKCk7XG4gICAgICAgIGNvbnN0IGVkaXRBY3Rpb24gPSB0aGlzLmdldEFkZEZlYXR1cmVBY3Rpb24obGluZVN0cmluZ1RvQWRkLCBwcm9wcy5kYXRhKTtcbiAgICAgICAgaWYgKGVkaXRBY3Rpb24pIHtcbiAgICAgICAgICBwcm9wcy5vbkVkaXQoZWRpdEFjdGlvbik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgZ2V0R3VpZGVzKHByb3BzOiBNb2RlUHJvcHM8RmVhdHVyZUNvbGxlY3Rpb24+KTogR3VpZGVGZWF0dXJlQ29sbGVjdGlvbiB7XG4gICAgY29uc3QgeyBsYXN0UG9pbnRlck1vdmVFdmVudCB9ID0gcHJvcHM7XG4gICAgY29uc3QgY2xpY2tTZXF1ZW5jZSA9IHRoaXMuZ2V0Q2xpY2tTZXF1ZW5jZSgpO1xuXG4gICAgY29uc3QgbGFzdENvb3JkcyA9IGxhc3RQb2ludGVyTW92ZUV2ZW50ID8gW2xhc3RQb2ludGVyTW92ZUV2ZW50Lm1hcENvb3Jkc10gOiBbXTtcblxuICAgIGNvbnN0IGd1aWRlcyA9IHtcbiAgICAgIHR5cGU6ICdGZWF0dXJlQ29sbGVjdGlvbicsXG4gICAgICBmZWF0dXJlczogW10sXG4gICAgfTtcblxuICAgIGxldCB0ZW50YXRpdmVGZWF0dXJlO1xuICAgIGlmIChjbGlja1NlcXVlbmNlLmxlbmd0aCA+IDApIHtcbiAgICAgIHRlbnRhdGl2ZUZlYXR1cmUgPSB7XG4gICAgICAgIHR5cGU6ICdGZWF0dXJlJyxcbiAgICAgICAgcHJvcGVydGllczoge1xuICAgICAgICAgIGd1aWRlVHlwZTogJ3RlbnRhdGl2ZScsXG4gICAgICAgIH0sXG4gICAgICAgIGdlb21ldHJ5OiB7XG4gICAgICAgICAgdHlwZTogJ0xpbmVTdHJpbmcnLFxuICAgICAgICAgIGNvb3JkaW5hdGVzOiBbLi4uY2xpY2tTZXF1ZW5jZSwgLi4ubGFzdENvb3Jkc10sXG4gICAgICAgIH0sXG4gICAgICB9O1xuICAgIH1cblxuICAgIGlmICh0ZW50YXRpdmVGZWF0dXJlKSB7XG4gICAgICBndWlkZXMuZmVhdHVyZXMucHVzaCh0ZW50YXRpdmVGZWF0dXJlKTtcbiAgICB9XG5cbiAgICBjb25zdCBlZGl0SGFuZGxlcyA9IGNsaWNrU2VxdWVuY2UubWFwKChjbGlja2VkQ29vcmQsIGluZGV4KSA9PiAoe1xuICAgICAgdHlwZTogJ0ZlYXR1cmUnLFxuICAgICAgcHJvcGVydGllczoge1xuICAgICAgICBndWlkZVR5cGU6ICdlZGl0SGFuZGxlJyxcbiAgICAgICAgZWRpdEhhbmRsZVR5cGU6ICdleGlzdGluZycsXG4gICAgICAgIGZlYXR1cmVJbmRleDogLTEsXG4gICAgICAgIHBvc2l0aW9uSW5kZXhlczogW2luZGV4XSxcbiAgICAgIH0sXG4gICAgICBnZW9tZXRyeToge1xuICAgICAgICB0eXBlOiAnUG9pbnQnLFxuICAgICAgICBjb29yZGluYXRlczogY2xpY2tlZENvb3JkLFxuICAgICAgfSxcbiAgICB9KSk7XG5cbiAgICBndWlkZXMuZmVhdHVyZXMucHVzaCguLi5lZGl0SGFuZGxlcyk7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHJldHVybiBndWlkZXM7XG4gIH1cblxuICBoYW5kbGVQb2ludGVyTW92ZShldmVudDogUG9pbnRlck1vdmVFdmVudCwgcHJvcHM6IE1vZGVQcm9wczxGZWF0dXJlQ29sbGVjdGlvbj4pIHtcbiAgICBwcm9wcy5vblVwZGF0ZUN1cnNvcignY2VsbCcpO1xuICB9XG59XG4iXX0=","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.DrawPointMode = void 0;\n\nvar _geojsonEditMode = require(\"./geojson-edit-mode\");\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _get(target, property, receiver) { if (typeof Reflect !== \"undefined\" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return _get(target, property, receiver || target); }\n\nfunction _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; }\n\nfunction _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nvar DrawPointMode = /*#__PURE__*/function (_GeoJsonEditMode) {\n  _inherits(DrawPointMode, _GeoJsonEditMode);\n\n  var _super = _createSuper(DrawPointMode);\n\n  function DrawPointMode() {\n    _classCallCheck(this, DrawPointMode);\n\n    return _super.apply(this, arguments);\n  }\n\n  _createClass(DrawPointMode, [{\n    key: \"createTentativeFeature\",\n    value: function createTentativeFeature(props) {\n      var lastPointerMoveEvent = props.lastPointerMoveEvent;\n      var lastCoords = lastPointerMoveEvent ? [lastPointerMoveEvent.mapCoords] : [];\n      return {\n        type: 'Feature',\n        properties: {\n          guideType: 'tentative'\n        },\n        geometry: {\n          type: 'Point',\n          coordinates: lastCoords[0]\n        }\n      };\n    }\n  }, {\n    key: \"handleClick\",\n    value: function handleClick(_ref, props) {\n      var mapCoords = _ref.mapCoords;\n      var geometry = {\n        type: 'Point',\n        coordinates: mapCoords\n      }; // @ts-ignore\n\n      props.onEdit(this.getAddFeatureAction(geometry, props.data));\n    }\n  }, {\n    key: \"handlePointerMove\",\n    value: function handlePointerMove(event, props) {\n      props.onUpdateCursor('cell');\n\n      _get(_getPrototypeOf(DrawPointMode.prototype), \"handlePointerMove\", this).call(this, event, props);\n    }\n  }]);\n\n  return DrawPointMode;\n}(_geojsonEditMode.GeoJsonEditMode);\n\nexports.DrawPointMode = DrawPointMode;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvZHJhdy1wb2ludC1tb2RlLnRzIl0sIm5hbWVzIjpbIkRyYXdQb2ludE1vZGUiLCJwcm9wcyIsImxhc3RQb2ludGVyTW92ZUV2ZW50IiwibGFzdENvb3JkcyIsIm1hcENvb3JkcyIsInR5cGUiLCJwcm9wZXJ0aWVzIiwiZ3VpZGVUeXBlIiwiZ2VvbWV0cnkiLCJjb29yZGluYXRlcyIsIm9uRWRpdCIsImdldEFkZEZlYXR1cmVBY3Rpb24iLCJkYXRhIiwiZXZlbnQiLCJvblVwZGF0ZUN1cnNvciIsIkdlb0pzb25FZGl0TW9kZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUVBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBRWFBLGE7Ozs7Ozs7Ozs7Ozs7MkNBQ1lDLEssRUFBdUQ7QUFBQSxVQUNwRUMsb0JBRG9FLEdBQzNDRCxLQUQyQyxDQUNwRUMsb0JBRG9FO0FBRTVFLFVBQU1DLFVBQVUsR0FBR0Qsb0JBQW9CLEdBQUcsQ0FBQ0Esb0JBQW9CLENBQUNFLFNBQXRCLENBQUgsR0FBc0MsRUFBN0U7QUFFQSxhQUFPO0FBQ0xDLFFBQUFBLElBQUksRUFBRSxTQUREO0FBRUxDLFFBQUFBLFVBQVUsRUFBRTtBQUNWQyxVQUFBQSxTQUFTLEVBQUU7QUFERCxTQUZQO0FBS0xDLFFBQUFBLFFBQVEsRUFBRTtBQUNSSCxVQUFBQSxJQUFJLEVBQUUsT0FERTtBQUVSSSxVQUFBQSxXQUFXLEVBQUVOLFVBQVUsQ0FBQyxDQUFEO0FBRmY7QUFMTCxPQUFQO0FBVUQ7OztzQ0FFc0NGLEssRUFBMkM7QUFBQSxVQUFwRUcsU0FBb0UsUUFBcEVBLFNBQW9FO0FBQ2hGLFVBQU1JLFFBQVEsR0FBRztBQUNmSCxRQUFBQSxJQUFJLEVBQUUsT0FEUztBQUVmSSxRQUFBQSxXQUFXLEVBQUVMO0FBRkUsT0FBakIsQ0FEZ0YsQ0FLaEY7O0FBQ0FILE1BQUFBLEtBQUssQ0FBQ1MsTUFBTixDQUFhLEtBQUtDLG1CQUFMLENBQXlCSCxRQUF6QixFQUFtQ1AsS0FBSyxDQUFDVyxJQUF6QyxDQUFiO0FBQ0Q7OztzQ0FFaUJDLEssRUFBeUJaLEssRUFBcUM7QUFDOUVBLE1BQUFBLEtBQUssQ0FBQ2EsY0FBTixDQUFxQixNQUFyQjs7QUFDQSwyRkFBd0JELEtBQXhCLEVBQStCWixLQUEvQjtBQUNEOzs7O0VBN0JnQ2MsZ0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDbGlja0V2ZW50LCBQb2ludGVyTW92ZUV2ZW50LCBNb2RlUHJvcHMsIFRlbnRhdGl2ZUZlYXR1cmUgfSBmcm9tICcuLi90eXBlcyc7XG5pbXBvcnQgeyBGZWF0dXJlQ29sbGVjdGlvbiB9IGZyb20gJy4uL2dlb2pzb24tdHlwZXMnO1xuaW1wb3J0IHsgR2VvSnNvbkVkaXRNb2RlIH0gZnJvbSAnLi9nZW9qc29uLWVkaXQtbW9kZSc7XG5cbmV4cG9ydCBjbGFzcyBEcmF3UG9pbnRNb2RlIGV4dGVuZHMgR2VvSnNvbkVkaXRNb2RlIHtcbiAgY3JlYXRlVGVudGF0aXZlRmVhdHVyZShwcm9wczogTW9kZVByb3BzPEZlYXR1cmVDb2xsZWN0aW9uPik6IFRlbnRhdGl2ZUZlYXR1cmUge1xuICAgIGNvbnN0IHsgbGFzdFBvaW50ZXJNb3ZlRXZlbnQgfSA9IHByb3BzO1xuICAgIGNvbnN0IGxhc3RDb29yZHMgPSBsYXN0UG9pbnRlck1vdmVFdmVudCA/IFtsYXN0UG9pbnRlck1vdmVFdmVudC5tYXBDb29yZHNdIDogW107XG5cbiAgICByZXR1cm4ge1xuICAgICAgdHlwZTogJ0ZlYXR1cmUnLFxuICAgICAgcHJvcGVydGllczoge1xuICAgICAgICBndWlkZVR5cGU6ICd0ZW50YXRpdmUnLFxuICAgICAgfSxcbiAgICAgIGdlb21ldHJ5OiB7XG4gICAgICAgIHR5cGU6ICdQb2ludCcsXG4gICAgICAgIGNvb3JkaW5hdGVzOiBsYXN0Q29vcmRzWzBdLFxuICAgICAgfSxcbiAgICB9O1xuICB9XG5cbiAgaGFuZGxlQ2xpY2soeyBtYXBDb29yZHMgfTogQ2xpY2tFdmVudCwgcHJvcHM6IE1vZGVQcm9wczxGZWF0dXJlQ29sbGVjdGlvbj4pOiB2b2lkIHtcbiAgICBjb25zdCBnZW9tZXRyeSA9IHtcbiAgICAgIHR5cGU6ICdQb2ludCcsXG4gICAgICBjb29yZGluYXRlczogbWFwQ29vcmRzLFxuICAgIH07XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHByb3BzLm9uRWRpdCh0aGlzLmdldEFkZEZlYXR1cmVBY3Rpb24oZ2VvbWV0cnksIHByb3BzLmRhdGEpKTtcbiAgfVxuXG4gIGhhbmRsZVBvaW50ZXJNb3ZlKGV2ZW50OiBQb2ludGVyTW92ZUV2ZW50LCBwcm9wczogTW9kZVByb3BzPEZlYXR1cmVDb2xsZWN0aW9uPikge1xuICAgIHByb3BzLm9uVXBkYXRlQ3Vyc29yKCdjZWxsJyk7XG4gICAgc3VwZXIuaGFuZGxlUG9pbnRlck1vdmUoZXZlbnQsIHByb3BzKTtcbiAgfVxufVxuIl19","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.DrawPolygonByDraggingMode = void 0;\n\nvar _lodash = _interopRequireDefault(require(\"lodash.throttle\"));\n\nvar _utils = require(\"../utils\");\n\nvar _drawPolygonMode = require(\"./draw-polygon-mode\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(n); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar DrawPolygonByDraggingMode = /*#__PURE__*/function (_DrawPolygonMode) {\n  _inherits(DrawPolygonByDraggingMode, _DrawPolygonMode);\n\n  var _super = _createSuper(DrawPolygonByDraggingMode);\n\n  function DrawPolygonByDraggingMode() {\n    var _this;\n\n    _classCallCheck(this, DrawPolygonByDraggingMode);\n\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    _this = _super.call.apply(_super, [this].concat(args));\n\n    _defineProperty(_assertThisInitialized(_this), \"handleDraggingThrottled\", null);\n\n    return _this;\n  }\n\n  _createClass(DrawPolygonByDraggingMode, [{\n    key: \"handleClick\",\n    value: function handleClick(event, props) {// No-op\n    }\n  }, {\n    key: \"handleStartDragging\",\n    value: function handleStartDragging(event, props) {\n      event.cancelPan();\n\n      if (props.modeConfig && props.modeConfig.throttleMs) {\n        this.handleDraggingThrottled = (0, _lodash[\"default\"])(this.handleDraggingAux, props.modeConfig.throttleMs);\n      } else {\n        this.handleDraggingThrottled = this.handleDraggingAux;\n      }\n    }\n  }, {\n    key: \"handleStopDragging\",\n    value: function handleStopDragging(event, props) {\n      this.addClickSequence(event);\n      var clickSequence = this.getClickSequence(); // @ts-ignore\n\n      if (this.handleDraggingThrottled && this.handleDraggingThrottled.cancel) {\n        // @ts-ignore\n        this.handleDraggingThrottled.cancel();\n      }\n\n      if (clickSequence.length > 2) {\n        // Complete the polygon.\n        var polygonToAdd = {\n          type: 'Polygon',\n          coordinates: [[].concat(_toConsumableArray(clickSequence), [clickSequence[0]])]\n        };\n        this.resetClickSequence();\n        var editAction = this.getAddFeatureOrBooleanPolygonAction(polygonToAdd, props);\n\n        if (editAction) {\n          props.onEdit(editAction);\n        }\n      }\n    }\n  }, {\n    key: \"handleDraggingAux\",\n    value: function handleDraggingAux(event, props) {\n      var picks = event.picks;\n      var clickedEditHandle = (0, _utils.getPickedEditHandle)(picks);\n\n      if (!clickedEditHandle) {\n        // Don't add another point right next to an existing one.\n        this.addClickSequence(event);\n      }\n    }\n  }, {\n    key: \"handleDragging\",\n    value: function handleDragging(event, props) {\n      if (this.handleDraggingThrottled) {\n        this.handleDraggingThrottled(event, props);\n      }\n    }\n  }]);\n\n  return DrawPolygonByDraggingMode;\n}(_drawPolygonMode.DrawPolygonMode);\n\nexports.DrawPolygonByDraggingMode = DrawPolygonByDraggingMode;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvZHJhdy1wb2x5Z29uLWJ5LWRyYWdnaW5nLW1vZGUudHMiXSwibmFtZXMiOlsiRHJhd1BvbHlnb25CeURyYWdnaW5nTW9kZSIsImV2ZW50IiwicHJvcHMiLCJjYW5jZWxQYW4iLCJtb2RlQ29uZmlnIiwidGhyb3R0bGVNcyIsImhhbmRsZURyYWdnaW5nVGhyb3R0bGVkIiwiaGFuZGxlRHJhZ2dpbmdBdXgiLCJhZGRDbGlja1NlcXVlbmNlIiwiY2xpY2tTZXF1ZW5jZSIsImdldENsaWNrU2VxdWVuY2UiLCJjYW5jZWwiLCJsZW5ndGgiLCJwb2x5Z29uVG9BZGQiLCJ0eXBlIiwiY29vcmRpbmF0ZXMiLCJyZXNldENsaWNrU2VxdWVuY2UiLCJlZGl0QWN0aW9uIiwiZ2V0QWRkRmVhdHVyZU9yQm9vbGVhblBvbHlnb25BY3Rpb24iLCJvbkVkaXQiLCJwaWNrcyIsImNsaWNrZWRFZGl0SGFuZGxlIiwiRHJhd1BvbHlnb25Nb2RlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUE7O0FBU0E7O0FBQ0E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUFJYUEseUI7Ozs7Ozs7Ozs7Ozs7Ozs7OEVBQ21ELEk7Ozs7Ozs7Z0NBRWxEQyxLLEVBQW1CQyxLLEVBQXFDLENBQ2xFO0FBQ0Q7Ozt3Q0FFbUJELEssRUFBMkJDLEssRUFBcUM7QUFDbEZELE1BQUFBLEtBQUssQ0FBQ0UsU0FBTjs7QUFDQSxVQUFJRCxLQUFLLENBQUNFLFVBQU4sSUFBb0JGLEtBQUssQ0FBQ0UsVUFBTixDQUFpQkMsVUFBekMsRUFBcUQ7QUFDbkQsYUFBS0MsdUJBQUwsR0FBK0Isd0JBQVMsS0FBS0MsaUJBQWQsRUFBaUNMLEtBQUssQ0FBQ0UsVUFBTixDQUFpQkMsVUFBbEQsQ0FBL0I7QUFDRCxPQUZELE1BRU87QUFDTCxhQUFLQyx1QkFBTCxHQUErQixLQUFLQyxpQkFBcEM7QUFDRDtBQUNGOzs7dUNBRWtCTixLLEVBQTBCQyxLLEVBQXFDO0FBQ2hGLFdBQUtNLGdCQUFMLENBQXNCUCxLQUF0QjtBQUNBLFVBQU1RLGFBQWEsR0FBRyxLQUFLQyxnQkFBTCxFQUF0QixDQUZnRixDQUdoRjs7QUFDQSxVQUFJLEtBQUtKLHVCQUFMLElBQWdDLEtBQUtBLHVCQUFMLENBQTZCSyxNQUFqRSxFQUF5RTtBQUN2RTtBQUNBLGFBQUtMLHVCQUFMLENBQTZCSyxNQUE3QjtBQUNEOztBQUVELFVBQUlGLGFBQWEsQ0FBQ0csTUFBZCxHQUF1QixDQUEzQixFQUE4QjtBQUM1QjtBQUNBLFlBQU1DLFlBQXFCLEdBQUc7QUFDNUJDLFVBQUFBLElBQUksRUFBRSxTQURzQjtBQUU1QkMsVUFBQUEsV0FBVyxFQUFFLDhCQUFLTixhQUFMLElBQW9CQSxhQUFhLENBQUMsQ0FBRCxDQUFqQztBQUZlLFNBQTlCO0FBS0EsYUFBS08sa0JBQUw7QUFFQSxZQUFNQyxVQUFVLEdBQUcsS0FBS0MsbUNBQUwsQ0FBeUNMLFlBQXpDLEVBQXVEWCxLQUF2RCxDQUFuQjs7QUFDQSxZQUFJZSxVQUFKLEVBQWdCO0FBQ2RmLFVBQUFBLEtBQUssQ0FBQ2lCLE1BQU4sQ0FBYUYsVUFBYjtBQUNEO0FBQ0Y7QUFDRjs7O3NDQUVpQmhCLEssRUFBc0JDLEssRUFBcUM7QUFBQSxVQUNuRWtCLEtBRG1FLEdBQ3pEbkIsS0FEeUQsQ0FDbkVtQixLQURtRTtBQUUzRSxVQUFNQyxpQkFBaUIsR0FBRyxnQ0FBb0JELEtBQXBCLENBQTFCOztBQUVBLFVBQUksQ0FBQ0MsaUJBQUwsRUFBd0I7QUFDdEI7QUFDQSxhQUFLYixnQkFBTCxDQUFzQlAsS0FBdEI7QUFDRDtBQUNGOzs7bUNBRWNBLEssRUFBc0JDLEssRUFBcUM7QUFDeEUsVUFBSSxLQUFLSSx1QkFBVCxFQUFrQztBQUNoQyxhQUFLQSx1QkFBTCxDQUE2QkwsS0FBN0IsRUFBb0NDLEtBQXBDO0FBQ0Q7QUFDRjs7OztFQXZENENvQixnQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0aHJvdHRsZSBmcm9tICdsb2Rhc2gudGhyb3R0bGUnO1xuaW1wb3J0IHtcbiAgQ2xpY2tFdmVudCxcbiAgU3RhcnREcmFnZ2luZ0V2ZW50LFxuICBTdG9wRHJhZ2dpbmdFdmVudCxcbiAgRHJhZ2dpbmdFdmVudCxcbiAgTW9kZVByb3BzLFxufSBmcm9tICcuLi90eXBlcyc7XG5pbXBvcnQgeyBQb2x5Z29uLCBGZWF0dXJlQ29sbGVjdGlvbiB9IGZyb20gJy4uL2dlb2pzb24tdHlwZXMnO1xuaW1wb3J0IHsgZ2V0UGlja2VkRWRpdEhhbmRsZSB9IGZyb20gJy4uL3V0aWxzJztcbmltcG9ydCB7IERyYXdQb2x5Z29uTW9kZSB9IGZyb20gJy4vZHJhdy1wb2x5Z29uLW1vZGUnO1xuXG50eXBlIERyYWdnaW5nSGFuZGxlciA9IChldmVudDogRHJhZ2dpbmdFdmVudCwgcHJvcHM6IE1vZGVQcm9wczxGZWF0dXJlQ29sbGVjdGlvbj4pID0+IHZvaWQ7XG5cbmV4cG9ydCBjbGFzcyBEcmF3UG9seWdvbkJ5RHJhZ2dpbmdNb2RlIGV4dGVuZHMgRHJhd1BvbHlnb25Nb2RlIHtcbiAgaGFuZGxlRHJhZ2dpbmdUaHJvdHRsZWQ6IERyYWdnaW5nSGFuZGxlciB8IG51bGwgfCB1bmRlZmluZWQgPSBudWxsO1xuXG4gIGhhbmRsZUNsaWNrKGV2ZW50OiBDbGlja0V2ZW50LCBwcm9wczogTW9kZVByb3BzPEZlYXR1cmVDb2xsZWN0aW9uPikge1xuICAgIC8vIE5vLW9wXG4gIH1cblxuICBoYW5kbGVTdGFydERyYWdnaW5nKGV2ZW50OiBTdGFydERyYWdnaW5nRXZlbnQsIHByb3BzOiBNb2RlUHJvcHM8RmVhdHVyZUNvbGxlY3Rpb24+KSB7XG4gICAgZXZlbnQuY2FuY2VsUGFuKCk7XG4gICAgaWYgKHByb3BzLm1vZGVDb25maWcgJiYgcHJvcHMubW9kZUNvbmZpZy50aHJvdHRsZU1zKSB7XG4gICAgICB0aGlzLmhhbmRsZURyYWdnaW5nVGhyb3R0bGVkID0gdGhyb3R0bGUodGhpcy5oYW5kbGVEcmFnZ2luZ0F1eCwgcHJvcHMubW9kZUNvbmZpZy50aHJvdHRsZU1zKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5oYW5kbGVEcmFnZ2luZ1Rocm90dGxlZCA9IHRoaXMuaGFuZGxlRHJhZ2dpbmdBdXg7XG4gICAgfVxuICB9XG5cbiAgaGFuZGxlU3RvcERyYWdnaW5nKGV2ZW50OiBTdG9wRHJhZ2dpbmdFdmVudCwgcHJvcHM6IE1vZGVQcm9wczxGZWF0dXJlQ29sbGVjdGlvbj4pIHtcbiAgICB0aGlzLmFkZENsaWNrU2VxdWVuY2UoZXZlbnQpO1xuICAgIGNvbnN0IGNsaWNrU2VxdWVuY2UgPSB0aGlzLmdldENsaWNrU2VxdWVuY2UoKTtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgaWYgKHRoaXMuaGFuZGxlRHJhZ2dpbmdUaHJvdHRsZWQgJiYgdGhpcy5oYW5kbGVEcmFnZ2luZ1Rocm90dGxlZC5jYW5jZWwpIHtcbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIHRoaXMuaGFuZGxlRHJhZ2dpbmdUaHJvdHRsZWQuY2FuY2VsKCk7XG4gICAgfVxuXG4gICAgaWYgKGNsaWNrU2VxdWVuY2UubGVuZ3RoID4gMikge1xuICAgICAgLy8gQ29tcGxldGUgdGhlIHBvbHlnb24uXG4gICAgICBjb25zdCBwb2x5Z29uVG9BZGQ6IFBvbHlnb24gPSB7XG4gICAgICAgIHR5cGU6ICdQb2x5Z29uJyxcbiAgICAgICAgY29vcmRpbmF0ZXM6IFtbLi4uY2xpY2tTZXF1ZW5jZSwgY2xpY2tTZXF1ZW5jZVswXV1dLFxuICAgICAgfTtcblxuICAgICAgdGhpcy5yZXNldENsaWNrU2VxdWVuY2UoKTtcblxuICAgICAgY29uc3QgZWRpdEFjdGlvbiA9IHRoaXMuZ2V0QWRkRmVhdHVyZU9yQm9vbGVhblBvbHlnb25BY3Rpb24ocG9seWdvblRvQWRkLCBwcm9wcyk7XG4gICAgICBpZiAoZWRpdEFjdGlvbikge1xuICAgICAgICBwcm9wcy5vbkVkaXQoZWRpdEFjdGlvbik7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgaGFuZGxlRHJhZ2dpbmdBdXgoZXZlbnQ6IERyYWdnaW5nRXZlbnQsIHByb3BzOiBNb2RlUHJvcHM8RmVhdHVyZUNvbGxlY3Rpb24+KSB7XG4gICAgY29uc3QgeyBwaWNrcyB9ID0gZXZlbnQ7XG4gICAgY29uc3QgY2xpY2tlZEVkaXRIYW5kbGUgPSBnZXRQaWNrZWRFZGl0SGFuZGxlKHBpY2tzKTtcblxuICAgIGlmICghY2xpY2tlZEVkaXRIYW5kbGUpIHtcbiAgICAgIC8vIERvbid0IGFkZCBhbm90aGVyIHBvaW50IHJpZ2h0IG5leHQgdG8gYW4gZXhpc3Rpbmcgb25lLlxuICAgICAgdGhpcy5hZGRDbGlja1NlcXVlbmNlKGV2ZW50KTtcbiAgICB9XG4gIH1cblxuICBoYW5kbGVEcmFnZ2luZyhldmVudDogRHJhZ2dpbmdFdmVudCwgcHJvcHM6IE1vZGVQcm9wczxGZWF0dXJlQ29sbGVjdGlvbj4pIHtcbiAgICBpZiAodGhpcy5oYW5kbGVEcmFnZ2luZ1Rocm90dGxlZCkge1xuICAgICAgdGhpcy5oYW5kbGVEcmFnZ2luZ1Rocm90dGxlZChldmVudCwgcHJvcHMpO1xuICAgIH1cbiAgfVxufVxuIl19","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.DrawPolygonMode = void 0;\n\nvar _lineIntersect = _interopRequireDefault(require(\"@turf/line-intersect\"));\n\nvar _helpers = require(\"@turf/helpers\");\n\nvar _utils = require(\"../utils\");\n\nvar _geojsonEditMode = require(\"./geojson-edit-mode\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(n); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _get(target, property, receiver) { if (typeof Reflect !== \"undefined\" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return _get(target, property, receiver || target); }\n\nfunction _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; }\n\nfunction _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nvar DrawPolygonMode = /*#__PURE__*/function (_GeoJsonEditMode) {\n  _inherits(DrawPolygonMode, _GeoJsonEditMode);\n\n  var _super = _createSuper(DrawPolygonMode);\n\n  function DrawPolygonMode() {\n    _classCallCheck(this, DrawPolygonMode);\n\n    return _super.apply(this, arguments);\n  }\n\n  _createClass(DrawPolygonMode, [{\n    key: \"createTentativeFeature\",\n    value: function createTentativeFeature(props) {\n      var lastPointerMoveEvent = props.lastPointerMoveEvent;\n      var clickSequence = this.getClickSequence();\n      var lastCoords = lastPointerMoveEvent ? [lastPointerMoveEvent.mapCoords] : [];\n      var tentativeFeature;\n\n      if (clickSequence.length === 1 || clickSequence.length === 2) {\n        tentativeFeature = {\n          type: 'Feature',\n          properties: {\n            guideType: 'tentative'\n          },\n          geometry: {\n            type: 'LineString',\n            coordinates: [].concat(_toConsumableArray(clickSequence), lastCoords)\n          }\n        };\n      } else if (clickSequence.length > 2) {\n        tentativeFeature = {\n          type: 'Feature',\n          properties: {\n            guideType: 'tentative'\n          },\n          geometry: {\n            type: 'Polygon',\n            coordinates: [[].concat(_toConsumableArray(clickSequence), lastCoords, [clickSequence[0]])]\n          }\n        };\n      }\n\n      return tentativeFeature;\n    }\n  }, {\n    key: \"getGuides\",\n    value: function getGuides(props) {\n      var _guides$features;\n\n      var clickSequence = this.getClickSequence();\n      var guides = {\n        type: 'FeatureCollection',\n        features: []\n      };\n      var tentativeFeature = this.createTentativeFeature(props);\n\n      if (tentativeFeature) {\n        guides.features.push(tentativeFeature);\n      }\n\n      var editHandles = clickSequence.map(function (clickedCoord, index) {\n        return {\n          type: 'Feature',\n          properties: {\n            guideType: 'editHandle',\n            editHandleType: 'existing',\n            featureIndex: -1,\n            positionIndexes: [index]\n          },\n          geometry: {\n            type: 'Point',\n            coordinates: clickedCoord\n          }\n        };\n      });\n\n      (_guides$features = guides.features).push.apply(_guides$features, _toConsumableArray(editHandles)); // @ts-ignore\n\n\n      return guides;\n    }\n  }, {\n    key: \"handleClick\",\n    value: function handleClick(event, props) {\n      var picks = event.picks;\n      var clickedEditHandle = (0, _utils.getPickedEditHandle)(picks);\n      var clickSequence = this.getClickSequence();\n      var overlappingLines = false;\n\n      if (clickSequence.length > 2 && props.modeConfig && props.modeConfig.preventOverlappingLines) {\n        var currentLine = (0, _helpers.lineString)([clickSequence[clickSequence.length - 1], event.mapCoords]);\n        var otherLines = (0, _helpers.lineString)(_toConsumableArray(clickSequence.slice(0, clickSequence.length - 1)));\n        var intersectingPoints = (0, _lineIntersect[\"default\"])(currentLine, otherLines);\n\n        if (intersectingPoints.features.length > 0) {\n          overlappingLines = true;\n        }\n      }\n\n      var positionAdded = false;\n\n      if (!clickedEditHandle && !overlappingLines) {\n        // Don't add another point right next to an existing one\n        this.addClickSequence(event);\n        positionAdded = true;\n      }\n\n      if (clickSequence.length > 2 && clickedEditHandle && Array.isArray(clickedEditHandle.properties.positionIndexes) && (clickedEditHandle.properties.positionIndexes[0] === 0 || clickedEditHandle.properties.positionIndexes[0] === clickSequence.length - 1)) {\n        // They clicked the first or last point (or double-clicked), so complete the polygon\n        // Remove the hovered position\n        var polygonToAdd = {\n          type: 'Polygon',\n          coordinates: [[].concat(_toConsumableArray(clickSequence), [clickSequence[0]])]\n        };\n        this.resetClickSequence();\n        var editAction = this.getAddFeatureOrBooleanPolygonAction(polygonToAdd, props);\n\n        if (editAction) {\n          props.onEdit(editAction);\n        }\n      } else if (positionAdded) {\n        // new tentative point\n        props.onEdit({\n          // data is the same\n          updatedData: props.data,\n          editType: 'addTentativePosition',\n          editContext: {\n            position: event.mapCoords\n          }\n        });\n      }\n    }\n  }, {\n    key: \"handleKeyUp\",\n    value: function handleKeyUp(event, props) {\n      if (event.key === 'Enter') {\n        var clickSequence = this.getClickSequence();\n\n        if (clickSequence.length > 2) {\n          var polygonToAdd = {\n            type: 'Polygon',\n            coordinates: [[].concat(_toConsumableArray(clickSequence), [clickSequence[0]])]\n          };\n          this.resetClickSequence();\n          var editAction = this.getAddFeatureOrBooleanPolygonAction(polygonToAdd, props);\n\n          if (editAction) {\n            props.onEdit(editAction);\n          }\n        }\n      }\n    }\n  }, {\n    key: \"handlePointerMove\",\n    value: function handlePointerMove(event, props) {\n      props.onUpdateCursor('cell');\n\n      _get(_getPrototypeOf(DrawPolygonMode.prototype), \"handlePointerMove\", this).call(this, event, props);\n    }\n  }]);\n\n  return DrawPolygonMode;\n}(_geojsonEditMode.GeoJsonEditMode);\n\nexports.DrawPolygonMode = DrawPolygonMode;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvZHJhdy1wb2x5Z29uLW1vZGUudHMiXSwibmFtZXMiOlsiRHJhd1BvbHlnb25Nb2RlIiwicHJvcHMiLCJsYXN0UG9pbnRlck1vdmVFdmVudCIsImNsaWNrU2VxdWVuY2UiLCJnZXRDbGlja1NlcXVlbmNlIiwibGFzdENvb3JkcyIsIm1hcENvb3JkcyIsInRlbnRhdGl2ZUZlYXR1cmUiLCJsZW5ndGgiLCJ0eXBlIiwicHJvcGVydGllcyIsImd1aWRlVHlwZSIsImdlb21ldHJ5IiwiY29vcmRpbmF0ZXMiLCJndWlkZXMiLCJmZWF0dXJlcyIsImNyZWF0ZVRlbnRhdGl2ZUZlYXR1cmUiLCJwdXNoIiwiZWRpdEhhbmRsZXMiLCJtYXAiLCJjbGlja2VkQ29vcmQiLCJpbmRleCIsImVkaXRIYW5kbGVUeXBlIiwiZmVhdHVyZUluZGV4IiwicG9zaXRpb25JbmRleGVzIiwiZXZlbnQiLCJwaWNrcyIsImNsaWNrZWRFZGl0SGFuZGxlIiwib3ZlcmxhcHBpbmdMaW5lcyIsIm1vZGVDb25maWciLCJwcmV2ZW50T3ZlcmxhcHBpbmdMaW5lcyIsImN1cnJlbnRMaW5lIiwib3RoZXJMaW5lcyIsInNsaWNlIiwiaW50ZXJzZWN0aW5nUG9pbnRzIiwicG9zaXRpb25BZGRlZCIsImFkZENsaWNrU2VxdWVuY2UiLCJBcnJheSIsImlzQXJyYXkiLCJwb2x5Z29uVG9BZGQiLCJyZXNldENsaWNrU2VxdWVuY2UiLCJlZGl0QWN0aW9uIiwiZ2V0QWRkRmVhdHVyZU9yQm9vbGVhblBvbHlnb25BY3Rpb24iLCJvbkVkaXQiLCJ1cGRhdGVkRGF0YSIsImRhdGEiLCJlZGl0VHlwZSIsImVkaXRDb250ZXh0IiwicG9zaXRpb24iLCJrZXkiLCJvblVwZGF0ZUN1cnNvciIsIkdlb0pzb25FZGl0TW9kZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBOztBQUNBOztBQVNBOztBQUNBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUFFYUEsZTs7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LEVBQWdCO0FBQ2R4QyxZQUFBQSxLQUFLLENBQUMwQyxNQUFOLENBQWFGLFVBQWI7QUFDRDtBQUNGO0FBQ0Y7QUFDRjs7O3NDQUVpQmhCLEssRUFBeUJ4QixLLEVBQXFDO0FBQzlFQSxNQUFBQSxLQUFLLENBQUNpRCxjQUFOLENBQXFCLE1BQXJCOztBQUNBLDZGQUF3QnpCLEtBQXhCLEVBQStCeEIsS0FBL0I7QUFDRDs7OztFQW5Ka0NrRCxnQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBsaW5lSW50ZXJzZWN0IGZyb20gJ0B0dXJmL2xpbmUtaW50ZXJzZWN0JztcbmltcG9ydCB7IGxpbmVTdHJpbmcgYXMgdHVyZkxpbmVTdHJpbmcgfSBmcm9tICdAdHVyZi9oZWxwZXJzJztcbmltcG9ydCB7XG4gIENsaWNrRXZlbnQsXG4gIFBvaW50ZXJNb3ZlRXZlbnQsXG4gIE1vZGVQcm9wcyxcbiAgR3VpZGVGZWF0dXJlQ29sbGVjdGlvbixcbiAgVGVudGF0aXZlRmVhdHVyZSxcbn0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHsgUG9seWdvbiwgRmVhdHVyZUNvbGxlY3Rpb24gfSBmcm9tICcuLi9nZW9qc29uLXR5cGVzJztcbmltcG9ydCB7IGdldFBpY2tlZEVkaXRIYW5kbGUgfSBmcm9tICcuLi91dGlscyc7XG5pbXBvcnQgeyBHZW9Kc29uRWRpdE1vZGUgfSBmcm9tICcuL2dlb2pzb24tZWRpdC1tb2RlJztcblxuZXhwb3J0IGNsYXNzIERyYXdQb2x5Z29uTW9kZSBleHRlbmRzIEdlb0pzb25FZGl0TW9kZSB7XG4gIGNyZWF0ZVRlbnRhdGl2ZUZlYXR1cmUocHJvcHM6IE1vZGVQcm9wczxGZWF0dXJlQ29sbGVjdGlvbj4pOiBUZW50YXRpdmVGZWF0dXJlIHtcbiAgICBjb25zdCB7IGxhc3RQb2ludGVyTW92ZUV2ZW50IH0gPSBwcm9wcztcbiAgICBjb25zdCBjbGlja1NlcXVlbmNlID0gdGhpcy5nZXRDbGlja1NlcXVlbmNlKCk7XG5cbiAgICBjb25zdCBsYXN0Q29vcmRzID0gbGFzdFBvaW50ZXJNb3ZlRXZlbnQgPyBbbGFzdFBvaW50ZXJNb3ZlRXZlbnQubWFwQ29vcmRzXSA6IFtdO1xuXG4gICAgbGV0IHRlbnRhdGl2ZUZlYXR1cmU7XG4gICAgaWYgKGNsaWNrU2VxdWVuY2UubGVuZ3RoID09PSAxIHx8IGNsaWNrU2VxdWVuY2UubGVuZ3RoID09PSAyKSB7XG4gICAgICB0ZW50YXRpdmVGZWF0dXJlID0ge1xuICAgICAgICB0eXBlOiAnRmVhdHVyZScsXG4gICAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgICBndWlkZVR5cGU6ICd0ZW50YXRpdmUnLFxuICAgICAgICB9LFxuICAgICAgICBnZW9tZXRyeToge1xuICAgICAgICAgIHR5cGU6ICdMaW5lU3RyaW5nJyxcbiAgICAgICAgICBjb29yZGluYXRlczogWy4uLmNsaWNrU2VxdWVuY2UsIC4uLmxhc3RDb29yZHNdLFxuICAgICAgICB9LFxuICAgICAgfTtcbiAgICB9IGVsc2UgaWYgKGNsaWNrU2VxdWVuY2UubGVuZ3RoID4gMikge1xuICAgICAgdGVudGF0aXZlRmVhdHVyZSA9IHtcbiAgICAgICAgdHlwZTogJ0ZlYXR1cmUnLFxuICAgICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgZ3VpZGVUeXBlOiAndGVudGF0aXZlJyxcbiAgICAgICAgfSxcbiAgICAgICAgZ2VvbWV0cnk6IHtcbiAgICAgICAgICB0eXBlOiAnUG9seWdvbicsXG4gICAgICAgICAgY29vcmRpbmF0ZXM6IFtbLi4uY2xpY2tTZXF1ZW5jZSwgLi4ubGFzdENvb3JkcywgY2xpY2tTZXF1ZW5jZVswXV1dLFxuICAgICAgICB9LFxuICAgICAgfTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGVudGF0aXZlRmVhdHVyZTtcbiAgfVxuXG4gIGdldEd1aWRlcyhwcm9wczogTW9kZVByb3BzPEZlYXR1cmVDb2xsZWN0aW9uPik6IEd1aWRlRmVhdHVyZUNvbGxlY3Rpb24ge1xuICAgIGNvbnN0IGNsaWNrU2VxdWVuY2UgPSB0aGlzLmdldENsaWNrU2VxdWVuY2UoKTtcblxuICAgIGNvbnN0IGd1aWRlcyA9IHtcbiAgICAgIHR5cGU6ICdGZWF0dXJlQ29sbGVjdGlvbicsXG4gICAgICBmZWF0dXJlczogW10sXG4gICAgfTtcblxuICAgIGNvbnN0IHRlbnRhdGl2ZUZlYXR1cmUgPSB0aGlzLmNyZWF0ZVRlbnRhdGl2ZUZlYXR1cmUocHJvcHMpO1xuICAgIGlmICh0ZW50YXRpdmVGZWF0dXJlKSB7XG4gICAgICBndWlkZXMuZmVhdHVyZXMucHVzaCh0ZW50YXRpdmVGZWF0dXJlKTtcbiAgICB9XG5cbiAgICBjb25zdCBlZGl0SGFuZGxlcyA9IGNsaWNrU2VxdWVuY2UubWFwKChjbGlja2VkQ29vcmQsIGluZGV4KSA9PiAoe1xuICAgICAgdHlwZTogJ0ZlYXR1cmUnLFxuICAgICAgcHJvcGVydGllczoge1xuICAgICAgICBndWlkZVR5cGU6ICdlZGl0SGFuZGxlJyxcbiAgICAgICAgZWRpdEhhbmRsZVR5cGU6ICdleGlzdGluZycsXG4gICAgICAgIGZlYXR1cmVJbmRleDogLTEsXG4gICAgICAgIHBvc2l0aW9uSW5kZXhlczogW2luZGV4XSxcbiAgICAgIH0sXG4gICAgICBnZW9tZXRyeToge1xuICAgICAgICB0eXBlOiAnUG9pbnQnLFxuICAgICAgICBjb29yZGluYXRlczogY2xpY2tlZENvb3JkLFxuICAgICAgfSxcbiAgICB9KSk7XG5cbiAgICBndWlkZXMuZmVhdHVyZXMucHVzaCguLi5lZGl0SGFuZGxlcyk7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHJldHVybiBndWlkZXM7XG4gIH1cblxuICBoYW5kbGVDbGljayhldmVudDogQ2xpY2tFdmVudCwgcHJvcHM6IE1vZGVQcm9wczxGZWF0dXJlQ29sbGVjdGlvbj4pIHtcbiAgICBjb25zdCB7IHBpY2tzIH0gPSBldmVudDtcbiAgICBjb25zdCBjbGlja2VkRWRpdEhhbmRsZSA9IGdldFBpY2tlZEVkaXRIYW5kbGUocGlja3MpO1xuICAgIGNvbnN0IGNsaWNrU2VxdWVuY2UgPSB0aGlzLmdldENsaWNrU2VxdWVuY2UoKTtcblxuICAgIGxldCBvdmVybGFwcGluZ0xpbmVzID0gZmFsc2U7XG4gICAgaWYgKGNsaWNrU2VxdWVuY2UubGVuZ3RoID4gMiAmJiBwcm9wcy5tb2RlQ29uZmlnICYmIHByb3BzLm1vZGVDb25maWcucHJldmVudE92ZXJsYXBwaW5nTGluZXMpIHtcbiAgICAgIGNvbnN0IGN1cnJlbnRMaW5lID0gdHVyZkxpbmVTdHJpbmcoW1xuICAgICAgICBjbGlja1NlcXVlbmNlW2NsaWNrU2VxdWVuY2UubGVuZ3RoIC0gMV0sXG4gICAgICAgIGV2ZW50Lm1hcENvb3JkcyxcbiAgICAgIF0pO1xuICAgICAgY29uc3Qgb3RoZXJMaW5lcyA9IHR1cmZMaW5lU3RyaW5nKFsuLi5jbGlja1NlcXVlbmNlLnNsaWNlKDAsIGNsaWNrU2VxdWVuY2UubGVuZ3RoIC0gMSldKTtcbiAgICAgIGNvbnN0IGludGVyc2VjdGluZ1BvaW50cyA9IGxpbmVJbnRlcnNlY3QoY3VycmVudExpbmUsIG90aGVyTGluZXMpO1xuICAgICAgaWYgKGludGVyc2VjdGluZ1BvaW50cy5mZWF0dXJlcy5sZW5ndGggPiAwKSB7XG4gICAgICAgIG92ZXJsYXBwaW5nTGluZXMgPSB0cnVlO1xuICAgICAgfVxuICAgIH1cblxuICAgIGxldCBwb3NpdGlvbkFkZGVkID0gZmFsc2U7XG4gICAgaWYgKCFjbGlja2VkRWRpdEhhbmRsZSAmJiAhb3ZlcmxhcHBpbmdMaW5lcykge1xuICAgICAgLy8gRG9uJ3QgYWRkIGFub3RoZXIgcG9pbnQgcmlnaHQgbmV4dCB0byBhbiBleGlzdGluZyBvbmVcbiAgICAgIHRoaXMuYWRkQ2xpY2tTZXF1ZW5jZShldmVudCk7XG4gICAgICBwb3NpdGlvbkFkZGVkID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBpZiAoXG4gICAgICBjbGlja1NlcXVlbmNlLmxlbmd0aCA+IDIgJiZcbiAgICAgIGNsaWNrZWRFZGl0SGFuZGxlICYmXG4gICAgICBBcnJheS5pc0FycmF5KGNsaWNrZWRFZGl0SGFuZGxlLnByb3BlcnRpZXMucG9zaXRpb25JbmRleGVzKSAmJlxuICAgICAgKGNsaWNrZWRFZGl0SGFuZGxlLnByb3BlcnRpZXMucG9zaXRpb25JbmRleGVzWzBdID09PSAwIHx8XG4gICAgICAgIGNsaWNrZWRFZGl0SGFuZGxlLnByb3BlcnRpZXMucG9zaXRpb25JbmRleGVzWzBdID09PSBjbGlja1NlcXVlbmNlLmxlbmd0aCAtIDEpXG4gICAgKSB7XG4gICAgICAvLyBUaGV5IGNsaWNrZWQgdGhlIGZpcnN0IG9yIGxhc3QgcG9pbnQgKG9yIGRvdWJsZS1jbGlja2VkKSwgc28gY29tcGxldGUgdGhlIHBvbHlnb25cblxuICAgICAgLy8gUmVtb3ZlIHRoZSBob3ZlcmVkIHBvc2l0aW9uXG4gICAgICBjb25zdCBwb2x5Z29uVG9BZGQ6IFBvbHlnb24gPSB7XG4gICAgICAgIHR5cGU6ICdQb2x5Z29uJyxcbiAgICAgICAgY29vcmRpbmF0ZXM6IFtbLi4uY2xpY2tTZXF1ZW5jZSwgY2xpY2tTZXF1ZW5jZVswXV1dLFxuICAgICAgfTtcblxuICAgICAgdGhpcy5yZXNldENsaWNrU2VxdWVuY2UoKTtcblxuICAgICAgY29uc3QgZWRpdEFjdGlvbiA9IHRoaXMuZ2V0QWRkRmVhdHVyZU9yQm9vbGVhblBvbHlnb25BY3Rpb24ocG9seWdvblRvQWRkLCBwcm9wcyk7XG4gICAgICBpZiAoZWRpdEFjdGlvbikge1xuICAgICAgICBwcm9wcy5vbkVkaXQoZWRpdEFjdGlvbik7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChwb3NpdGlvbkFkZGVkKSB7XG4gICAgICAvLyBuZXcgdGVudGF0aXZlIHBvaW50XG4gICAgICBwcm9wcy5vbkVkaXQoe1xuICAgICAgICAvLyBkYXRhIGlzIHRoZSBzYW1lXG4gICAgICAgIHVwZGF0ZWREYXRhOiBwcm9wcy5kYXRhLFxuICAgICAgICBlZGl0VHlwZTogJ2FkZFRlbnRhdGl2ZVBvc2l0aW9uJyxcbiAgICAgICAgZWRpdENvbnRleHQ6IHtcbiAgICAgICAgICBwb3NpdGlvbjogZXZlbnQubWFwQ29vcmRzLFxuICAgICAgICB9LFxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgaGFuZGxlS2V5VXAoZXZlbnQ6IEtleWJvYXJkRXZlbnQsIHByb3BzOiBNb2RlUHJvcHM8RmVhdHVyZUNvbGxlY3Rpb24+KSB7XG4gICAgaWYgKGV2ZW50LmtleSA9PT0gJ0VudGVyJykge1xuICAgICAgY29uc3QgY2xpY2tTZXF1ZW5jZSA9IHRoaXMuZ2V0Q2xpY2tTZXF1ZW5jZSgpO1xuICAgICAgaWYgKGNsaWNrU2VxdWVuY2UubGVuZ3RoID4gMikge1xuICAgICAgICBjb25zdCBwb2x5Z29uVG9BZGQ6IFBvbHlnb24gPSB7XG4gICAgICAgICAgdHlwZTogJ1BvbHlnb24nLFxuICAgICAgICAgIGNvb3JkaW5hdGVzOiBbWy4uLmNsaWNrU2VxdWVuY2UsIGNsaWNrU2VxdWVuY2VbMF1dXSxcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5yZXNldENsaWNrU2VxdWVuY2UoKTtcblxuICAgICAgICBjb25zdCBlZGl0QWN0aW9uID0gdGhpcy5nZXRBZGRGZWF0dXJlT3JCb29sZWFuUG9seWdvbkFjdGlvbihwb2x5Z29uVG9BZGQsIHByb3BzKTtcbiAgICAgICAgaWYgKGVkaXRBY3Rpb24pIHtcbiAgICAgICAgICBwcm9wcy5vbkVkaXQoZWRpdEFjdGlvbik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBoYW5kbGVQb2ludGVyTW92ZShldmVudDogUG9pbnRlck1vdmVFdmVudCwgcHJvcHM6IE1vZGVQcm9wczxGZWF0dXJlQ29sbGVjdGlvbj4pIHtcbiAgICBwcm9wcy5vblVwZGF0ZUN1cnNvcignY2VsbCcpO1xuICAgIHN1cGVyLmhhbmRsZVBvaW50ZXJNb3ZlKGV2ZW50LCBwcm9wcyk7XG4gIH1cbn1cbiJdfQ==","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.DrawRectangleFromCenterMode = void 0;\n\nvar _bboxPolygon = _interopRequireDefault(require(\"@turf/bbox-polygon\"));\n\nvar _twoClickPolygonMode = require(\"./two-click-polygon-mode\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nvar DrawRectangleFromCenterMode = /*#__PURE__*/function (_TwoClickPolygonMode) {\n  _inherits(DrawRectangleFromCenterMode, _TwoClickPolygonMode);\n\n  var _super = _createSuper(DrawRectangleFromCenterMode);\n\n  function DrawRectangleFromCenterMode() {\n    _classCallCheck(this, DrawRectangleFromCenterMode);\n\n    return _super.apply(this, arguments);\n  }\n\n  _createClass(DrawRectangleFromCenterMode, [{\n    key: \"getTwoClickPolygon\",\n    value: function getTwoClickPolygon(coord1, coord2, modeConfig) {\n      var longitude = coord1[0] > coord2[0] ? coord1[0] + Math.abs(coord1[0] - coord2[0]) : coord1[0] - Math.abs(coord1[0] - coord2[0]);\n      var latitude = coord1[1] > coord2[1] ? coord1[1] + Math.abs(coord1[1] - coord2[1]) : coord1[1] - Math.abs(coord1[1] - coord2[1]);\n      var rectangle = (0, _bboxPolygon[\"default\"])([longitude, latitude, coord2[0], coord2[1]]);\n      rectangle.properties = rectangle.properties || {};\n      rectangle.properties.shape = 'Rectangle'; // @ts-ignore\n\n      return rectangle;\n    }\n  }]);\n\n  return DrawRectangleFromCenterMode;\n}(_twoClickPolygonMode.TwoClickPolygonMode);\n\nexports.DrawRectangleFromCenterMode = DrawRectangleFromCenterMode;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvZHJhdy1yZWN0YW5nbGUtZnJvbS1jZW50ZXItbW9kZS50cyJdLCJuYW1lcyI6WyJEcmF3UmVjdGFuZ2xlRnJvbUNlbnRlck1vZGUiLCJjb29yZDEiLCJjb29yZDIiLCJtb2RlQ29uZmlnIiwibG9uZ2l0dWRlIiwiTWF0aCIsImFicyIsImxhdGl0dWRlIiwicmVjdGFuZ2xlIiwicHJvcGVydGllcyIsInNoYXBlIiwiVHdvQ2xpY2tQb2x5Z29uTW9kZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBOztBQUVBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQUVhQSwyQjs7Ozs7Ozs7Ozs7Ozt1Q0FDUUMsTSxFQUFrQkMsTSxFQUFrQkMsVSxFQUFxQztBQUMxRixVQUFNQyxTQUFTLEdBQ2JILE1BQU0sQ0FBQyxDQUFELENBQU4sR0FBWUMsTUFBTSxDQUFDLENBQUQsQ0FBbEIsR0FDSUQsTUFBTSxDQUFDLENBQUQsQ0FBTixHQUFZSSxJQUFJLENBQUNDLEdBQUwsQ0FBU0wsTUFBTSxDQUFDLENBQUQsQ0FBTixHQUFZQyxNQUFNLENBQUMsQ0FBRCxDQUEzQixDQURoQixHQUVJRCxNQUFNLENBQUMsQ0FBRCxDQUFOLEdBQVlJLElBQUksQ0FBQ0MsR0FBTCxDQUFTTCxNQUFNLENBQUMsQ0FBRCxDQUFOLEdBQVlDLE1BQU0sQ0FBQyxDQUFELENBQTNCLENBSGxCO0FBSUEsVUFBTUssUUFBUSxHQUNaTixNQUFNLENBQUMsQ0FBRCxDQUFOLEdBQVlDLE1BQU0sQ0FBQyxDQUFELENBQWxCLEdBQ0lELE1BQU0sQ0FBQyxDQUFELENBQU4sR0FBWUksSUFBSSxDQUFDQyxHQUFMLENBQVNMLE1BQU0sQ0FBQyxDQUFELENBQU4sR0FBWUMsTUFBTSxDQUFDLENBQUQsQ0FBM0IsQ0FEaEIsR0FFSUQsTUFBTSxDQUFDLENBQUQsQ0FBTixHQUFZSSxJQUFJLENBQUNDLEdBQUwsQ0FBU0wsTUFBTSxDQUFDLENBQUQsQ0FBTixHQUFZQyxNQUFNLENBQUMsQ0FBRCxDQUEzQixDQUhsQjtBQUtBLFVBQU1NLFNBQVMsR0FBRyw2QkFBWSxDQUFDSixTQUFELEVBQVlHLFFBQVosRUFBc0JMLE1BQU0sQ0FBQyxDQUFELENBQTVCLEVBQWlDQSxNQUFNLENBQUMsQ0FBRCxDQUF2QyxDQUFaLENBQWxCO0FBQ0FNLE1BQUFBLFNBQVMsQ0FBQ0MsVUFBVixHQUF1QkQsU0FBUyxDQUFDQyxVQUFWLElBQXdCLEVBQS9DO0FBQ0FELE1BQUFBLFNBQVMsQ0FBQ0MsVUFBVixDQUFxQkMsS0FBckIsR0FBNkIsV0FBN0IsQ0FaMEYsQ0FjMUY7O0FBQ0EsYUFBT0YsU0FBUDtBQUNEOzs7O0VBakI4Q0csd0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgYmJveFBvbHlnb24gZnJvbSAnQHR1cmYvYmJveC1wb2x5Z29uJztcbmltcG9ydCB7IFBvc2l0aW9uLCBQb2x5Z29uLCBGZWF0dXJlT2YgfSBmcm9tICcuLi9nZW9qc29uLXR5cGVzJztcbmltcG9ydCB7IFR3b0NsaWNrUG9seWdvbk1vZGUgfSBmcm9tICcuL3R3by1jbGljay1wb2x5Z29uLW1vZGUnO1xuXG5leHBvcnQgY2xhc3MgRHJhd1JlY3RhbmdsZUZyb21DZW50ZXJNb2RlIGV4dGVuZHMgVHdvQ2xpY2tQb2x5Z29uTW9kZSB7XG4gIGdldFR3b0NsaWNrUG9seWdvbihjb29yZDE6IFBvc2l0aW9uLCBjb29yZDI6IFBvc2l0aW9uLCBtb2RlQ29uZmlnOiBhbnkpOiBGZWF0dXJlT2Y8UG9seWdvbj4ge1xuICAgIGNvbnN0IGxvbmdpdHVkZSA9XG4gICAgICBjb29yZDFbMF0gPiBjb29yZDJbMF1cbiAgICAgICAgPyBjb29yZDFbMF0gKyBNYXRoLmFicyhjb29yZDFbMF0gLSBjb29yZDJbMF0pXG4gICAgICAgIDogY29vcmQxWzBdIC0gTWF0aC5hYnMoY29vcmQxWzBdIC0gY29vcmQyWzBdKTtcbiAgICBjb25zdCBsYXRpdHVkZSA9XG4gICAgICBjb29yZDFbMV0gPiBjb29yZDJbMV1cbiAgICAgICAgPyBjb29yZDFbMV0gKyBNYXRoLmFicyhjb29yZDFbMV0gLSBjb29yZDJbMV0pXG4gICAgICAgIDogY29vcmQxWzFdIC0gTWF0aC5hYnMoY29vcmQxWzFdIC0gY29vcmQyWzFdKTtcblxuICAgIGNvbnN0IHJlY3RhbmdsZSA9IGJib3hQb2x5Z29uKFtsb25naXR1ZGUsIGxhdGl0dWRlLCBjb29yZDJbMF0sIGNvb3JkMlsxXV0pO1xuICAgIHJlY3RhbmdsZS5wcm9wZXJ0aWVzID0gcmVjdGFuZ2xlLnByb3BlcnRpZXMgfHwge307XG4gICAgcmVjdGFuZ2xlLnByb3BlcnRpZXMuc2hhcGUgPSAnUmVjdGFuZ2xlJztcblxuICAgIC8vIEB0cy1pZ25vcmVcbiAgICByZXR1cm4gcmVjdGFuZ2xlO1xuICB9XG59XG4iXX0=","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.DrawRectangleMode = void 0;\n\nvar _bboxPolygon = _interopRequireDefault(require(\"@turf/bbox-polygon\"));\n\nvar _twoClickPolygonMode = require(\"./two-click-polygon-mode\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nvar DrawRectangleMode = /*#__PURE__*/function (_TwoClickPolygonMode) {\n  _inherits(DrawRectangleMode, _TwoClickPolygonMode);\n\n  var _super = _createSuper(DrawRectangleMode);\n\n  function DrawRectangleMode() {\n    _classCallCheck(this, DrawRectangleMode);\n\n    return _super.apply(this, arguments);\n  }\n\n  _createClass(DrawRectangleMode, [{\n    key: \"getTwoClickPolygon\",\n    value: function getTwoClickPolygon(coord1, coord2, modeConfig) {\n      var rectangle = (0, _bboxPolygon[\"default\"])([coord1[0], coord1[1], coord2[0], coord2[1]]);\n      rectangle.properties = rectangle.properties || {};\n      rectangle.properties.shape = 'Rectangle'; // @ts-ignore\n\n      return rectangle;\n    }\n  }]);\n\n  return DrawRectangleMode;\n}(_twoClickPolygonMode.TwoClickPolygonMode);\n\nexports.DrawRectangleMode = DrawRectangleMode;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvZHJhdy1yZWN0YW5nbGUtbW9kZS50cyJdLCJuYW1lcyI6WyJEcmF3UmVjdGFuZ2xlTW9kZSIsImNvb3JkMSIsImNvb3JkMiIsIm1vZGVDb25maWciLCJyZWN0YW5nbGUiLCJwcm9wZXJ0aWVzIiwic2hhcGUiLCJUd29DbGlja1BvbHlnb25Nb2RlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUE7O0FBRUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBRWFBLGlCOzs7Ozs7Ozs7Ozs7O3VDQUNRQyxNLEVBQWtCQyxNLEVBQWtCQyxVLEVBQXFDO0FBQzFGLFVBQU1DLFNBQVMsR0FBRyw2QkFBWSxDQUFDSCxNQUFNLENBQUMsQ0FBRCxDQUFQLEVBQVlBLE1BQU0sQ0FBQyxDQUFELENBQWxCLEVBQXVCQyxNQUFNLENBQUMsQ0FBRCxDQUE3QixFQUFrQ0EsTUFBTSxDQUFDLENBQUQsQ0FBeEMsQ0FBWixDQUFsQjtBQUNBRSxNQUFBQSxTQUFTLENBQUNDLFVBQVYsR0FBdUJELFNBQVMsQ0FBQ0MsVUFBVixJQUF3QixFQUEvQztBQUNBRCxNQUFBQSxTQUFTLENBQUNDLFVBQVYsQ0FBcUJDLEtBQXJCLEdBQTZCLFdBQTdCLENBSDBGLENBSzFGOztBQUNBLGFBQU9GLFNBQVA7QUFDRDs7OztFQVJvQ0csd0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgYmJveFBvbHlnb24gZnJvbSAnQHR1cmYvYmJveC1wb2x5Z29uJztcbmltcG9ydCB7IFBvc2l0aW9uLCBQb2x5Z29uLCBGZWF0dXJlT2YgfSBmcm9tICcuLi9nZW9qc29uLXR5cGVzJztcbmltcG9ydCB7IFR3b0NsaWNrUG9seWdvbk1vZGUgfSBmcm9tICcuL3R3by1jbGljay1wb2x5Z29uLW1vZGUnO1xuXG5leHBvcnQgY2xhc3MgRHJhd1JlY3RhbmdsZU1vZGUgZXh0ZW5kcyBUd29DbGlja1BvbHlnb25Nb2RlIHtcbiAgZ2V0VHdvQ2xpY2tQb2x5Z29uKGNvb3JkMTogUG9zaXRpb24sIGNvb3JkMjogUG9zaXRpb24sIG1vZGVDb25maWc6IGFueSk6IEZlYXR1cmVPZjxQb2x5Z29uPiB7XG4gICAgY29uc3QgcmVjdGFuZ2xlID0gYmJveFBvbHlnb24oW2Nvb3JkMVswXSwgY29vcmQxWzFdLCBjb29yZDJbMF0sIGNvb3JkMlsxXV0pO1xuICAgIHJlY3RhbmdsZS5wcm9wZXJ0aWVzID0gcmVjdGFuZ2xlLnByb3BlcnRpZXMgfHwge307XG4gICAgcmVjdGFuZ2xlLnByb3BlcnRpZXMuc2hhcGUgPSAnUmVjdGFuZ2xlJztcblxuICAgIC8vIEB0cy1pZ25vcmVcbiAgICByZXR1cm4gcmVjdGFuZ2xlO1xuICB9XG59XG4iXX0=","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.DrawRectangleUsingThreePointsMode = void 0;\n\nvar _utils = require(\"../utils\");\n\nvar _threeClickPolygonMode = require(\"./three-click-polygon-mode\");\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(n); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return; var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nvar DrawRectangleUsingThreePointsMode = /*#__PURE__*/function (_ThreeClickPolygonMod) {\n  _inherits(DrawRectangleUsingThreePointsMode, _ThreeClickPolygonMod);\n\n  var _super = _createSuper(DrawRectangleUsingThreePointsMode);\n\n  function DrawRectangleUsingThreePointsMode() {\n    _classCallCheck(this, DrawRectangleUsingThreePointsMode);\n\n    return _super.apply(this, arguments);\n  }\n\n  _createClass(DrawRectangleUsingThreePointsMode, [{\n    key: \"getThreeClickPolygon\",\n    value: function getThreeClickPolygon(coord1, coord2, coord3, modeConfig) {\n      var _generatePointsParall = (0, _utils.generatePointsParallelToLinePoints)(coord1, coord2, coord3),\n          _generatePointsParall2 = _slicedToArray(_generatePointsParall, 2),\n          p3 = _generatePointsParall2[0],\n          p4 = _generatePointsParall2[1];\n\n      return {\n        type: 'Feature',\n        properties: {\n          shape: 'Rectangle'\n        },\n        geometry: {\n          type: 'Polygon',\n          coordinates: [[// Draw a polygon containing all the points of the LineString,\n          // then the points orthogonal to the lineString,\n          // then back to the starting position\n          coord1, coord2, p3, p4, coord1]]\n        }\n      };\n    }\n  }]);\n\n  return DrawRectangleUsingThreePointsMode;\n}(_threeClickPolygonMode.ThreeClickPolygonMode);\n\nexports.DrawRectangleUsingThreePointsMode = DrawRectangleUsingThreePointsMode;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvZHJhdy1yZWN0YW5nbGUtdXNpbmctdGhyZWUtcG9pbnRzLW1vZGUudHMiXSwibmFtZXMiOlsiRHJhd1JlY3RhbmdsZVVzaW5nVGhyZWVQb2ludHNNb2RlIiwiY29vcmQxIiwiY29vcmQyIiwiY29vcmQzIiwibW9kZUNvbmZpZyIsInAzIiwicDQiLCJ0eXBlIiwicHJvcGVydGllcyIsInNoYXBlIiwiZ2VvbWV0cnkiLCJjb29yZGluYXRlcyIsIlRocmVlQ2xpY2tQb2x5Z29uTW9kZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBOztBQUVBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUFFYUEsaUM7Ozs7Ozs7Ozs7Ozs7eUNBRVRDLE0sRUFDQUMsTSxFQUNBQyxNLEVBQ0FDLFUsRUFDdUM7QUFBQSxrQ0FDdEIsK0NBQW1DSCxNQUFuQyxFQUEyQ0MsTUFBM0MsRUFBbURDLE1BQW5ELENBRHNCO0FBQUE7QUFBQSxVQUNoQ0UsRUFEZ0M7QUFBQSxVQUM1QkMsRUFENEI7O0FBR3ZDLGFBQU87QUFDTEMsUUFBQUEsSUFBSSxFQUFFLFNBREQ7QUFFTEMsUUFBQUEsVUFBVSxFQUFFO0FBQ1ZDLFVBQUFBLEtBQUssRUFBRTtBQURHLFNBRlA7QUFLTEMsUUFBQUEsUUFBUSxFQUFFO0FBQ1JILFVBQUFBLElBQUksRUFBRSxTQURFO0FBRVJJLFVBQUFBLFdBQVcsRUFBRSxDQUNYLENBQ0U7QUFDQTtBQUNBO0FBQ0FWLFVBQUFBLE1BSkYsRUFLRUMsTUFMRixFQU1FRyxFQU5GLEVBT0VDLEVBUEYsRUFRRUwsTUFSRixDQURXO0FBRkw7QUFMTCxPQUFQO0FBcUJEOzs7O0VBOUJvRFcsNEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBnZW5lcmF0ZVBvaW50c1BhcmFsbGVsVG9MaW5lUG9pbnRzIH0gZnJvbSAnLi4vdXRpbHMnO1xuaW1wb3J0IHsgUG9zaXRpb24sIFBvbHlnb24sIEZlYXR1cmVPZiB9IGZyb20gJy4uL2dlb2pzb24tdHlwZXMnO1xuaW1wb3J0IHsgVGhyZWVDbGlja1BvbHlnb25Nb2RlIH0gZnJvbSAnLi90aHJlZS1jbGljay1wb2x5Z29uLW1vZGUnO1xuXG5leHBvcnQgY2xhc3MgRHJhd1JlY3RhbmdsZVVzaW5nVGhyZWVQb2ludHNNb2RlIGV4dGVuZHMgVGhyZWVDbGlja1BvbHlnb25Nb2RlIHtcbiAgZ2V0VGhyZWVDbGlja1BvbHlnb24oXG4gICAgY29vcmQxOiBQb3NpdGlvbixcbiAgICBjb29yZDI6IFBvc2l0aW9uLFxuICAgIGNvb3JkMzogUG9zaXRpb24sXG4gICAgbW9kZUNvbmZpZzogYW55XG4gICk6IEZlYXR1cmVPZjxQb2x5Z29uPiB8IG51bGwgfCB1bmRlZmluZWQge1xuICAgIGNvbnN0IFtwMywgcDRdID0gZ2VuZXJhdGVQb2ludHNQYXJhbGxlbFRvTGluZVBvaW50cyhjb29yZDEsIGNvb3JkMiwgY29vcmQzKTtcblxuICAgIHJldHVybiB7XG4gICAgICB0eXBlOiAnRmVhdHVyZScsXG4gICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgIHNoYXBlOiAnUmVjdGFuZ2xlJyxcbiAgICAgIH0sXG4gICAgICBnZW9tZXRyeToge1xuICAgICAgICB0eXBlOiAnUG9seWdvbicsXG4gICAgICAgIGNvb3JkaW5hdGVzOiBbXG4gICAgICAgICAgW1xuICAgICAgICAgICAgLy8gRHJhdyBhIHBvbHlnb24gY29udGFpbmluZyBhbGwgdGhlIHBvaW50cyBvZiB0aGUgTGluZVN0cmluZyxcbiAgICAgICAgICAgIC8vIHRoZW4gdGhlIHBvaW50cyBvcnRob2dvbmFsIHRvIHRoZSBsaW5lU3RyaW5nLFxuICAgICAgICAgICAgLy8gdGhlbiBiYWNrIHRvIHRoZSBzdGFydGluZyBwb3NpdGlvblxuICAgICAgICAgICAgY29vcmQxLFxuICAgICAgICAgICAgY29vcmQyLFxuICAgICAgICAgICAgcDMsXG4gICAgICAgICAgICBwNCxcbiAgICAgICAgICAgIGNvb3JkMSxcbiAgICAgICAgICBdLFxuICAgICAgICBdLFxuICAgICAgfSxcbiAgICB9O1xuICB9XG59XG4iXX0=","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.DrawSquareFromCenterMode = void 0;\n\nvar _bboxPolygon = _interopRequireDefault(require(\"@turf/bbox-polygon\"));\n\nvar _distance = _interopRequireDefault(require(\"@turf/distance\"));\n\nvar _along = _interopRequireDefault(require(\"@turf/along\"));\n\nvar _helpers = require(\"@turf/helpers\");\n\nvar _twoClickPolygonMode = require(\"./two-click-polygon-mode\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nvar DrawSquareFromCenterMode = /*#__PURE__*/function (_TwoClickPolygonMode) {\n  _inherits(DrawSquareFromCenterMode, _TwoClickPolygonMode);\n\n  var _super = _createSuper(DrawSquareFromCenterMode);\n\n  function DrawSquareFromCenterMode() {\n    _classCallCheck(this, DrawSquareFromCenterMode);\n\n    return _super.apply(this, arguments);\n  }\n\n  _createClass(DrawSquareFromCenterMode, [{\n    key: \"getTwoClickPolygon\",\n    value: function getTwoClickPolygon(coord1, coord2, modeConfig) {\n      // get the coordinates of the other two rectangle vertices\n      var coord3 = [coord2[0], coord1[1]];\n      var coord4 = [coord1[0], coord2[1]]; // determine the shortest distance to the origin, which will be the length of each square side\n\n      var distance1 = (0, _distance[\"default\"])((0, _helpers.point)(coord3), (0, _helpers.point)(coord1));\n      var distance2 = (0, _distance[\"default\"])((0, _helpers.point)(coord4), (0, _helpers.point)(coord1));\n      var shortestDistance = distance1 <= distance2 ? distance1 : distance2; // determine which coordinate pair of the two is closest to the origin\n\n      var closestPoint = distance1 <= distance2 ? coord3 : coord4; // create a linestring which will used to locate the second square vertex\n\n      var line = (0, _helpers.lineString)([closestPoint, coord2]); // get the coordinates of the second square vertex\n\n      var newPoint = (0, _along[\"default\"])(line, shortestDistance);\n      var corner = newPoint.geometry.coordinates; // determine the longitude and latitude values of the opposite corner\n\n      var longitude = coord1[0] > corner[0] ? coord1[0] + Math.abs(coord1[0] - corner[0]) : coord1[0] - Math.abs(coord1[0] - corner[0]);\n      var latitude = coord1[1] > corner[1] ? coord1[1] + Math.abs(coord1[1] - corner[1]) : coord1[1] - Math.abs(coord1[1] - corner[1]);\n      var square = (0, _bboxPolygon[\"default\"])([longitude, latitude, corner[0], corner[1]]);\n      square.properties = square.properties || {};\n      square.properties.shape = 'Square'; // @ts-ignore\n\n      return square;\n    }\n  }]);\n\n  return DrawSquareFromCenterMode;\n}(_twoClickPolygonMode.TwoClickPolygonMode);\n\nexports.DrawSquareFromCenterMode = DrawSquareFromCenterMode;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvZHJhdy1zcXVhcmUtZnJvbS1jZW50ZXItbW9kZS50cyJdLCJuYW1lcyI6WyJEcmF3U3F1YXJlRnJvbUNlbnRlck1vZGUiLCJjb29yZDEiLCJjb29yZDIiLCJtb2RlQ29uZmlnIiwiY29vcmQzIiwiY29vcmQ0IiwiZGlzdGFuY2UxIiwiZGlzdGFuY2UyIiwic2hvcnRlc3REaXN0YW5jZSIsImNsb3Nlc3RQb2ludCIsImxpbmUiLCJuZXdQb2ludCIsImNvcm5lciIsImdlb21ldHJ5IiwiY29vcmRpbmF0ZXMiLCJsb25naXR1ZGUiLCJNYXRoIiwiYWJzIiwibGF0aXR1ZGUiLCJzcXVhcmUiLCJwcm9wZXJ0aWVzIiwic2hhcGUiLCJUd29DbGlja1BvbHlnb25Nb2RlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBRWFBLHdCOzs7Ozs7Ozs7Ozs7O3VDQUNRQyxNLEVBQWtCQyxNLEVBQWtCQyxVLEVBQXFDO0FBQzFGO0FBQ0EsVUFBTUMsTUFBTSxHQUFHLENBQUNGLE1BQU0sQ0FBQyxDQUFELENBQVAsRUFBWUQsTUFBTSxDQUFDLENBQUQsQ0FBbEIsQ0FBZjtBQUNBLFVBQU1JLE1BQU0sR0FBRyxDQUFDSixNQUFNLENBQUMsQ0FBRCxDQUFQLEVBQVlDLE1BQU0sQ0FBQyxDQUFELENBQWxCLENBQWYsQ0FIMEYsQ0FLMUY7O0FBQ0EsVUFBTUksU0FBUyxHQUFHLDBCQUFhLG9CQUFNRixNQUFOLENBQWIsRUFBNEIsb0JBQU1ILE1BQU4sQ0FBNUIsQ0FBbEI7QUFDQSxVQUFNTSxTQUFTLEdBQUcsMEJBQWEsb0JBQU1GLE1BQU4sQ0FBYixFQUE0QixvQkFBTUosTUFBTixDQUE1QixDQUFsQjtBQUNBLFVBQU1PLGdCQUFnQixHQUFHRixTQUFTLElBQUlDLFNBQWIsR0FBeUJELFNBQXpCLEdBQXFDQyxTQUE5RCxDQVIwRixDQVUxRjs7QUFDQSxVQUFNRSxZQUFZLEdBQUdILFNBQVMsSUFBSUMsU0FBYixHQUF5QkgsTUFBekIsR0FBa0NDLE1BQXZELENBWDBGLENBYTFGOztBQUNBLFVBQU1LLElBQUksR0FBRyx5QkFBZSxDQUFDRCxZQUFELEVBQWVQLE1BQWYsQ0FBZixDQUFiLENBZDBGLENBZ0IxRjs7QUFDQSxVQUFNUyxRQUFRLEdBQUcsdUJBQVVELElBQVYsRUFBZ0JGLGdCQUFoQixDQUFqQjtBQUNBLFVBQU1JLE1BQU0sR0FBR0QsUUFBUSxDQUFDRSxRQUFULENBQWtCQyxXQUFqQyxDQWxCMEYsQ0FvQjFGOztBQUNBLFVBQU1DLFNBQVMsR0FDYmQsTUFBTSxDQUFDLENBQUQsQ0FBTixHQUFZVyxNQUFNLENBQUMsQ0FBRCxDQUFsQixHQUNJWCxNQUFNLENBQUMsQ0FBRCxDQUFOLEdBQVllLElBQUksQ0FBQ0MsR0FBTCxDQUFTaEIsTUFBTSxDQUFDLENBQUQsQ0FBTixHQUFZVyxNQUFNLENBQUMsQ0FBRCxDQUEzQixDQURoQixHQUVJWCxNQUFNLENBQUMsQ0FBRCxDQUFOLEdBQVllLElBQUksQ0FBQ0MsR0FBTCxDQUFTaEIsTUFBTSxDQUFDLENBQUQsQ0FBTixHQUFZVyxNQUFNLENBQUMsQ0FBRCxDQUEzQixDQUhsQjtBQUlBLFVBQU1NLFFBQVEsR0FDWmpCLE1BQU0sQ0FBQyxDQUFELENBQU4sR0FBWVcsTUFBTSxDQUFDLENBQUQsQ0FBbEIsR0FDSVgsTUFBTSxDQUFDLENBQUQsQ0FBTixHQUFZZSxJQUFJLENBQUNDLEdBQUwsQ0FBU2hCLE1BQU0sQ0FBQyxDQUFELENBQU4sR0FBWVcsTUFBTSxDQUFDLENBQUQsQ0FBM0IsQ0FEaEIsR0FFSVgsTUFBTSxDQUFDLENBQUQsQ0FBTixHQUFZZSxJQUFJLENBQUNDLEdBQUwsQ0FBU2hCLE1BQU0sQ0FBQyxDQUFELENBQU4sR0FBWVcsTUFBTSxDQUFDLENBQUQsQ0FBM0IsQ0FIbEI7QUFLQSxVQUFNTyxNQUFNLEdBQUcsNkJBQVksQ0FBQ0osU0FBRCxFQUFZRyxRQUFaLEVBQXNCTixNQUFNLENBQUMsQ0FBRCxDQUE1QixFQUFpQ0EsTUFBTSxDQUFDLENBQUQsQ0FBdkMsQ0FBWixDQUFmO0FBQ0FPLE1BQUFBLE1BQU0sQ0FBQ0MsVUFBUCxHQUFvQkQsTUFBTSxDQUFDQyxVQUFQLElBQXFCLEVBQXpDO0FBQ0FELE1BQUFBLE1BQU0sQ0FBQ0MsVUFBUCxDQUFrQkMsS0FBbEIsR0FBMEIsUUFBMUIsQ0FoQzBGLENBa0MxRjs7QUFDQSxhQUFPRixNQUFQO0FBQ0Q7Ozs7RUFyQzJDRyx3QyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBiYm94UG9seWdvbiBmcm9tICdAdHVyZi9iYm94LXBvbHlnb24nO1xuaW1wb3J0IHR1cmZEaXN0YW5jZSBmcm9tICdAdHVyZi9kaXN0YW5jZSc7XG5pbXBvcnQgdHVyZkFsb25nIGZyb20gJ0B0dXJmL2Fsb25nJztcbmltcG9ydCB7IHBvaW50LCBsaW5lU3RyaW5nIGFzIHR1cmZMaW5lU3RyaW5nIH0gZnJvbSAnQHR1cmYvaGVscGVycyc7XG5pbXBvcnQgeyBQb3NpdGlvbiwgUG9seWdvbiwgRmVhdHVyZU9mIH0gZnJvbSAnLi4vZ2VvanNvbi10eXBlcyc7XG5pbXBvcnQgeyBUd29DbGlja1BvbHlnb25Nb2RlIH0gZnJvbSAnLi90d28tY2xpY2stcG9seWdvbi1tb2RlJztcblxuZXhwb3J0IGNsYXNzIERyYXdTcXVhcmVGcm9tQ2VudGVyTW9kZSBleHRlbmRzIFR3b0NsaWNrUG9seWdvbk1vZGUge1xuICBnZXRUd29DbGlja1BvbHlnb24oY29vcmQxOiBQb3NpdGlvbiwgY29vcmQyOiBQb3NpdGlvbiwgbW9kZUNvbmZpZzogYW55KTogRmVhdHVyZU9mPFBvbHlnb24+IHtcbiAgICAvLyBnZXQgdGhlIGNvb3JkaW5hdGVzIG9mIHRoZSBvdGhlciB0d28gcmVjdGFuZ2xlIHZlcnRpY2VzXG4gICAgY29uc3QgY29vcmQzID0gW2Nvb3JkMlswXSwgY29vcmQxWzFdXTtcbiAgICBjb25zdCBjb29yZDQgPSBbY29vcmQxWzBdLCBjb29yZDJbMV1dO1xuXG4gICAgLy8gZGV0ZXJtaW5lIHRoZSBzaG9ydGVzdCBkaXN0YW5jZSB0byB0aGUgb3JpZ2luLCB3aGljaCB3aWxsIGJlIHRoZSBsZW5ndGggb2YgZWFjaCBzcXVhcmUgc2lkZVxuICAgIGNvbnN0IGRpc3RhbmNlMSA9IHR1cmZEaXN0YW5jZShwb2ludChjb29yZDMpLCBwb2ludChjb29yZDEpKTtcbiAgICBjb25zdCBkaXN0YW5jZTIgPSB0dXJmRGlzdGFuY2UocG9pbnQoY29vcmQ0KSwgcG9pbnQoY29vcmQxKSk7XG4gICAgY29uc3Qgc2hvcnRlc3REaXN0YW5jZSA9IGRpc3RhbmNlMSA8PSBkaXN0YW5jZTIgPyBkaXN0YW5jZTEgOiBkaXN0YW5jZTI7XG5cbiAgICAvLyBkZXRlcm1pbmUgd2hpY2ggY29vcmRpbmF0ZSBwYWlyIG9mIHRoZSB0d28gaXMgY2xvc2VzdCB0byB0aGUgb3JpZ2luXG4gICAgY29uc3QgY2xvc2VzdFBvaW50ID0gZGlzdGFuY2UxIDw9IGRpc3RhbmNlMiA/IGNvb3JkMyA6IGNvb3JkNDtcblxuICAgIC8vIGNyZWF0ZSBhIGxpbmVzdHJpbmcgd2hpY2ggd2lsbCB1c2VkIHRvIGxvY2F0ZSB0aGUgc2Vjb25kIHNxdWFyZSB2ZXJ0ZXhcbiAgICBjb25zdCBsaW5lID0gdHVyZkxpbmVTdHJpbmcoW2Nsb3Nlc3RQb2ludCwgY29vcmQyXSk7XG5cbiAgICAvLyBnZXQgdGhlIGNvb3JkaW5hdGVzIG9mIHRoZSBzZWNvbmQgc3F1YXJlIHZlcnRleFxuICAgIGNvbnN0IG5ld1BvaW50ID0gdHVyZkFsb25nKGxpbmUsIHNob3J0ZXN0RGlzdGFuY2UpO1xuICAgIGNvbnN0IGNvcm5lciA9IG5ld1BvaW50Lmdlb21ldHJ5LmNvb3JkaW5hdGVzO1xuXG4gICAgLy8gZGV0ZXJtaW5lIHRoZSBsb25naXR1ZGUgYW5kIGxhdGl0dWRlIHZhbHVlcyBvZiB0aGUgb3Bwb3NpdGUgY29ybmVyXG4gICAgY29uc3QgbG9uZ2l0dWRlID1cbiAgICAgIGNvb3JkMVswXSA+IGNvcm5lclswXVxuICAgICAgICA/IGNvb3JkMVswXSArIE1hdGguYWJzKGNvb3JkMVswXSAtIGNvcm5lclswXSlcbiAgICAgICAgOiBjb29yZDFbMF0gLSBNYXRoLmFicyhjb29yZDFbMF0gLSBjb3JuZXJbMF0pO1xuICAgIGNvbnN0IGxhdGl0dWRlID1cbiAgICAgIGNvb3JkMVsxXSA+IGNvcm5lclsxXVxuICAgICAgICA/IGNvb3JkMVsxXSArIE1hdGguYWJzKGNvb3JkMVsxXSAtIGNvcm5lclsxXSlcbiAgICAgICAgOiBjb29yZDFbMV0gLSBNYXRoLmFicyhjb29yZDFbMV0gLSBjb3JuZXJbMV0pO1xuXG4gICAgY29uc3Qgc3F1YXJlID0gYmJveFBvbHlnb24oW2xvbmdpdHVkZSwgbGF0aXR1ZGUsIGNvcm5lclswXSwgY29ybmVyWzFdXSk7XG4gICAgc3F1YXJlLnByb3BlcnRpZXMgPSBzcXVhcmUucHJvcGVydGllcyB8fCB7fTtcbiAgICBzcXVhcmUucHJvcGVydGllcy5zaGFwZSA9ICdTcXVhcmUnO1xuXG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHJldHVybiBzcXVhcmU7XG4gIH1cbn1cbiJdfQ==","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.DrawSquareMode = void 0;\n\nvar _bboxPolygon = _interopRequireDefault(require(\"@turf/bbox-polygon\"));\n\nvar _distance = _interopRequireDefault(require(\"@turf/distance\"));\n\nvar _along = _interopRequireDefault(require(\"@turf/along\"));\n\nvar _helpers = require(\"@turf/helpers\");\n\nvar _twoClickPolygonMode = require(\"./two-click-polygon-mode\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nvar DrawSquareMode = /*#__PURE__*/function (_TwoClickPolygonMode) {\n  _inherits(DrawSquareMode, _TwoClickPolygonMode);\n\n  var _super = _createSuper(DrawSquareMode);\n\n  function DrawSquareMode() {\n    _classCallCheck(this, DrawSquareMode);\n\n    return _super.apply(this, arguments);\n  }\n\n  _createClass(DrawSquareMode, [{\n    key: \"getTwoClickPolygon\",\n    value: function getTwoClickPolygon(coord1, coord2, modeConfig) {\n      // get the coordinates of the other two rectangle vertices\n      var coord3 = [coord2[0], coord1[1]];\n      var coord4 = [coord1[0], coord2[1]]; // determine the shortest distance to the origin, which will be the length of each square side\n\n      var distance1 = (0, _distance[\"default\"])((0, _helpers.point)(coord3), (0, _helpers.point)(coord1));\n      var distance2 = (0, _distance[\"default\"])((0, _helpers.point)(coord4), (0, _helpers.point)(coord1));\n      var shortestDistance = distance1 <= distance2 ? distance1 : distance2; // determine which coordinate pair of the two is closest to the origin\n\n      var closestPoint = distance1 <= distance2 ? coord3 : coord4; // create a linestring which will used to locate the second square vertex\n\n      var line = (0, _helpers.lineString)([closestPoint, coord2]); // get the coordinates of the second square vertex\n\n      var newPoint = (0, _along[\"default\"])(line, shortestDistance);\n      var corner = newPoint.geometry.coordinates;\n      var square = (0, _bboxPolygon[\"default\"])([coord1[0], coord1[1], corner[0], corner[1]]);\n      square.properties = square.properties || {};\n      square.properties.shape = 'Square'; // @ts-ignore\n\n      return square;\n    }\n  }]);\n\n  return DrawSquareMode;\n}(_twoClickPolygonMode.TwoClickPolygonMode);\n\nexports.DrawSquareMode = DrawSquareMode;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvZHJhdy1zcXVhcmUtbW9kZS50cyJdLCJuYW1lcyI6WyJEcmF3U3F1YXJlTW9kZSIsImNvb3JkMSIsImNvb3JkMiIsIm1vZGVDb25maWciLCJjb29yZDMiLCJjb29yZDQiLCJkaXN0YW5jZTEiLCJkaXN0YW5jZTIiLCJzaG9ydGVzdERpc3RhbmNlIiwiY2xvc2VzdFBvaW50IiwibGluZSIsIm5ld1BvaW50IiwiY29ybmVyIiwiZ2VvbWV0cnkiLCJjb29yZGluYXRlcyIsInNxdWFyZSIsInByb3BlcnRpZXMiLCJzaGFwZSIsIlR3b0NsaWNrUG9seWdvbk1vZGUiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUFFYUEsYzs7Ozs7Ozs7Ozs7Ozt1Q0FDUUMsTSxFQUFrQkMsTSxFQUFrQkMsVSxFQUFxQztBQUMxRjtBQUNBLFVBQU1DLE1BQU0sR0FBRyxDQUFDRixNQUFNLENBQUMsQ0FBRCxDQUFQLEVBQVlELE1BQU0sQ0FBQyxDQUFELENBQWxCLENBQWY7QUFDQSxVQUFNSSxNQUFNLEdBQUcsQ0FBQ0osTUFBTSxDQUFDLENBQUQsQ0FBUCxFQUFZQyxNQUFNLENBQUMsQ0FBRCxDQUFsQixDQUFmLENBSDBGLENBSzFGOztBQUNBLFVBQU1JLFNBQVMsR0FBRywwQkFBYSxvQkFBTUYsTUFBTixDQUFiLEVBQTRCLG9CQUFNSCxNQUFOLENBQTVCLENBQWxCO0FBQ0EsVUFBTU0sU0FBUyxHQUFHLDBCQUFhLG9CQUFNRixNQUFOLENBQWIsRUFBNEIsb0JBQU1KLE1BQU4sQ0FBNUIsQ0FBbEI7QUFDQSxVQUFNTyxnQkFBZ0IsR0FBR0YsU0FBUyxJQUFJQyxTQUFiLEdBQXlCRCxTQUF6QixHQUFxQ0MsU0FBOUQsQ0FSMEYsQ0FVMUY7O0FBQ0EsVUFBTUUsWUFBWSxHQUFHSCxTQUFTLElBQUlDLFNBQWIsR0FBeUJILE1BQXpCLEdBQWtDQyxNQUF2RCxDQVgwRixDQWExRjs7QUFDQSxVQUFNSyxJQUFJLEdBQUcseUJBQWUsQ0FBQ0QsWUFBRCxFQUFlUCxNQUFmLENBQWYsQ0FBYixDQWQwRixDQWdCMUY7O0FBQ0EsVUFBTVMsUUFBUSxHQUFHLHVCQUFVRCxJQUFWLEVBQWdCRixnQkFBaEIsQ0FBakI7QUFDQSxVQUFNSSxNQUFNLEdBQUdELFFBQVEsQ0FBQ0UsUUFBVCxDQUFrQkMsV0FBakM7QUFFQSxVQUFNQyxNQUFNLEdBQUcsNkJBQVksQ0FBQ2QsTUFBTSxDQUFDLENBQUQsQ0FBUCxFQUFZQSxNQUFNLENBQUMsQ0FBRCxDQUFsQixFQUF1QlcsTUFBTSxDQUFDLENBQUQsQ0FBN0IsRUFBa0NBLE1BQU0sQ0FBQyxDQUFELENBQXhDLENBQVosQ0FBZjtBQUNBRyxNQUFBQSxNQUFNLENBQUNDLFVBQVAsR0FBb0JELE1BQU0sQ0FBQ0MsVUFBUCxJQUFxQixFQUF6QztBQUNBRCxNQUFBQSxNQUFNLENBQUNDLFVBQVAsQ0FBa0JDLEtBQWxCLEdBQTBCLFFBQTFCLENBdEIwRixDQXdCMUY7O0FBQ0EsYUFBT0YsTUFBUDtBQUNEOzs7O0VBM0JpQ0csd0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgYmJveFBvbHlnb24gZnJvbSAnQHR1cmYvYmJveC1wb2x5Z29uJztcbmltcG9ydCB0dXJmRGlzdGFuY2UgZnJvbSAnQHR1cmYvZGlzdGFuY2UnO1xuaW1wb3J0IHR1cmZBbG9uZyBmcm9tICdAdHVyZi9hbG9uZyc7XG5pbXBvcnQgeyBwb2ludCwgbGluZVN0cmluZyBhcyB0dXJmTGluZVN0cmluZyB9IGZyb20gJ0B0dXJmL2hlbHBlcnMnO1xuaW1wb3J0IHsgUG9zaXRpb24sIFBvbHlnb24sIEZlYXR1cmVPZiB9IGZyb20gJy4uL2dlb2pzb24tdHlwZXMnO1xuaW1wb3J0IHsgVHdvQ2xpY2tQb2x5Z29uTW9kZSB9IGZyb20gJy4vdHdvLWNsaWNrLXBvbHlnb24tbW9kZSc7XG5cbmV4cG9ydCBjbGFzcyBEcmF3U3F1YXJlTW9kZSBleHRlbmRzIFR3b0NsaWNrUG9seWdvbk1vZGUge1xuICBnZXRUd29DbGlja1BvbHlnb24oY29vcmQxOiBQb3NpdGlvbiwgY29vcmQyOiBQb3NpdGlvbiwgbW9kZUNvbmZpZzogYW55KTogRmVhdHVyZU9mPFBvbHlnb24+IHtcbiAgICAvLyBnZXQgdGhlIGNvb3JkaW5hdGVzIG9mIHRoZSBvdGhlciB0d28gcmVjdGFuZ2xlIHZlcnRpY2VzXG4gICAgY29uc3QgY29vcmQzID0gW2Nvb3JkMlswXSwgY29vcmQxWzFdXTtcbiAgICBjb25zdCBjb29yZDQgPSBbY29vcmQxWzBdLCBjb29yZDJbMV1dO1xuXG4gICAgLy8gZGV0ZXJtaW5lIHRoZSBzaG9ydGVzdCBkaXN0YW5jZSB0byB0aGUgb3JpZ2luLCB3aGljaCB3aWxsIGJlIHRoZSBsZW5ndGggb2YgZWFjaCBzcXVhcmUgc2lkZVxuICAgIGNvbnN0IGRpc3RhbmNlMSA9IHR1cmZEaXN0YW5jZShwb2ludChjb29yZDMpLCBwb2ludChjb29yZDEpKTtcbiAgICBjb25zdCBkaXN0YW5jZTIgPSB0dXJmRGlzdGFuY2UocG9pbnQoY29vcmQ0KSwgcG9pbnQoY29vcmQxKSk7XG4gICAgY29uc3Qgc2hvcnRlc3REaXN0YW5jZSA9IGRpc3RhbmNlMSA8PSBkaXN0YW5jZTIgPyBkaXN0YW5jZTEgOiBkaXN0YW5jZTI7XG5cbiAgICAvLyBkZXRlcm1pbmUgd2hpY2ggY29vcmRpbmF0ZSBwYWlyIG9mIHRoZSB0d28gaXMgY2xvc2VzdCB0byB0aGUgb3JpZ2luXG4gICAgY29uc3QgY2xvc2VzdFBvaW50ID0gZGlzdGFuY2UxIDw9IGRpc3RhbmNlMiA/IGNvb3JkMyA6IGNvb3JkNDtcblxuICAgIC8vIGNyZWF0ZSBhIGxpbmVzdHJpbmcgd2hpY2ggd2lsbCB1c2VkIHRvIGxvY2F0ZSB0aGUgc2Vjb25kIHNxdWFyZSB2ZXJ0ZXhcbiAgICBjb25zdCBsaW5lID0gdHVyZkxpbmVTdHJpbmcoW2Nsb3Nlc3RQb2ludCwgY29vcmQyXSk7XG5cbiAgICAvLyBnZXQgdGhlIGNvb3JkaW5hdGVzIG9mIHRoZSBzZWNvbmQgc3F1YXJlIHZlcnRleFxuICAgIGNvbnN0IG5ld1BvaW50ID0gdHVyZkFsb25nKGxpbmUsIHNob3J0ZXN0RGlzdGFuY2UpO1xuICAgIGNvbnN0IGNvcm5lciA9IG5ld1BvaW50Lmdlb21ldHJ5LmNvb3JkaW5hdGVzO1xuXG4gICAgY29uc3Qgc3F1YXJlID0gYmJveFBvbHlnb24oW2Nvb3JkMVswXSwgY29vcmQxWzFdLCBjb3JuZXJbMF0sIGNvcm5lclsxXV0pO1xuICAgIHNxdWFyZS5wcm9wZXJ0aWVzID0gc3F1YXJlLnByb3BlcnRpZXMgfHwge307XG4gICAgc3F1YXJlLnByb3BlcnRpZXMuc2hhcGUgPSAnU3F1YXJlJztcblxuICAgIC8vIEB0cy1pZ25vcmVcbiAgICByZXR1cm4gc3F1YXJlO1xuICB9XG59XG4iXX0=","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.DuplicateMode = void 0;\n\nvar _translateMode = require(\"./translate-mode\");\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _get(target, property, receiver) { if (typeof Reflect !== \"undefined\" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return _get(target, property, receiver || target); }\n\nfunction _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; }\n\nfunction _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nvar DuplicateMode = /*#__PURE__*/function (_TranslateMode) {\n  _inherits(DuplicateMode, _TranslateMode);\n\n  var _super = _createSuper(DuplicateMode);\n\n  function DuplicateMode() {\n    _classCallCheck(this, DuplicateMode);\n\n    return _super.apply(this, arguments);\n  }\n\n  _createClass(DuplicateMode, [{\n    key: \"handleStartDragging\",\n    value: function handleStartDragging(event, props) {\n      _get(_getPrototypeOf(DuplicateMode.prototype), \"handleStartDragging\", this).call(this, event, props);\n\n      if (this._geometryBeforeTranslate) {\n        props.onEdit(this.getAddManyFeaturesAction(this._geometryBeforeTranslate, props.data));\n      }\n    }\n  }, {\n    key: \"updateCursor\",\n    value: function updateCursor(props) {\n      if (this._isTranslatable) {\n        props.onUpdateCursor('copy');\n      } else {\n        props.onUpdateCursor(null);\n      }\n    }\n  }]);\n\n  return DuplicateMode;\n}(_translateMode.TranslateMode);\n\nexports.DuplicateMode = DuplicateMode;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvZHVwbGljYXRlLW1vZGUudHMiXSwibmFtZXMiOlsiRHVwbGljYXRlTW9kZSIsImV2ZW50IiwicHJvcHMiLCJfZ2VvbWV0cnlCZWZvcmVUcmFuc2xhdGUiLCJvbkVkaXQiLCJnZXRBZGRNYW55RmVhdHVyZXNBY3Rpb24iLCJkYXRhIiwiX2lzVHJhbnNsYXRhYmxlIiwib25VcGRhdGVDdXJzb3IiLCJUcmFuc2xhdGVNb2RlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBRUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUFFYUEsYTs7Ozs7Ozs7Ozs7Ozt3Q0FDU0MsSyxFQUEyQkMsSyxFQUFxQztBQUNsRiw2RkFBMEJELEtBQTFCLEVBQWlDQyxLQUFqQzs7QUFFQSxVQUFJLEtBQUtDLHdCQUFULEVBQW1DO0FBQ2pDRCxRQUFBQSxLQUFLLENBQUNFLE1BQU4sQ0FBYSxLQUFLQyx3QkFBTCxDQUE4QixLQUFLRix3QkFBbkMsRUFBNkRELEtBQUssQ0FBQ0ksSUFBbkUsQ0FBYjtBQUNEO0FBQ0Y7OztpQ0FFWUosSyxFQUFxQztBQUNoRCxVQUFJLEtBQUtLLGVBQVQsRUFBMEI7QUFDeEJMLFFBQUFBLEtBQUssQ0FBQ00sY0FBTixDQUFxQixNQUFyQjtBQUNELE9BRkQsTUFFTztBQUNMTixRQUFBQSxLQUFLLENBQUNNLGNBQU4sQ0FBcUIsSUFBckI7QUFDRDtBQUNGOzs7O0VBZmdDQyw0QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFN0YXJ0RHJhZ2dpbmdFdmVudCwgTW9kZVByb3BzIH0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHsgRmVhdHVyZUNvbGxlY3Rpb24gfSBmcm9tICcuLi9nZW9qc29uLXR5cGVzJztcbmltcG9ydCB7IFRyYW5zbGF0ZU1vZGUgfSBmcm9tICcuL3RyYW5zbGF0ZS1tb2RlJztcblxuZXhwb3J0IGNsYXNzIER1cGxpY2F0ZU1vZGUgZXh0ZW5kcyBUcmFuc2xhdGVNb2RlIHtcbiAgaGFuZGxlU3RhcnREcmFnZ2luZyhldmVudDogU3RhcnREcmFnZ2luZ0V2ZW50LCBwcm9wczogTW9kZVByb3BzPEZlYXR1cmVDb2xsZWN0aW9uPikge1xuICAgIHN1cGVyLmhhbmRsZVN0YXJ0RHJhZ2dpbmcoZXZlbnQsIHByb3BzKTtcblxuICAgIGlmICh0aGlzLl9nZW9tZXRyeUJlZm9yZVRyYW5zbGF0ZSkge1xuICAgICAgcHJvcHMub25FZGl0KHRoaXMuZ2V0QWRkTWFueUZlYXR1cmVzQWN0aW9uKHRoaXMuX2dlb21ldHJ5QmVmb3JlVHJhbnNsYXRlLCBwcm9wcy5kYXRhKSk7XG4gICAgfVxuICB9XG5cbiAgdXBkYXRlQ3Vyc29yKHByb3BzOiBNb2RlUHJvcHM8RmVhdHVyZUNvbGxlY3Rpb24+KSB7XG4gICAgaWYgKHRoaXMuX2lzVHJhbnNsYXRhYmxlKSB7XG4gICAgICBwcm9wcy5vblVwZGF0ZUN1cnNvcignY29weScpO1xuICAgIH0gZWxzZSB7XG4gICAgICBwcm9wcy5vblVwZGF0ZUN1cnNvcihudWxsKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.ElevationMode = void 0;\n\nvar _utils = require(\"../utils\");\n\nvar _modifyMode = require(\"./modify-mode\");\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _get(target, property, receiver) { if (typeof Reflect !== \"undefined\" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return _get(target, property, receiver || target); }\n\nfunction _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; }\n\nfunction _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction defaultCalculateElevationChange(_ref) {\n  var pointerDownScreenCoords = _ref.pointerDownScreenCoords,\n      screenCoords = _ref.screenCoords;\n  return 10 * (pointerDownScreenCoords[1] - screenCoords[1]);\n}\n\nvar ElevationMode = /*#__PURE__*/function (_ModifyMode) {\n  _inherits(ElevationMode, _ModifyMode);\n\n  var _super = _createSuper(ElevationMode);\n\n  function ElevationMode() {\n    _classCallCheck(this, ElevationMode);\n\n    return _super.apply(this, arguments);\n  }\n\n  _createClass(ElevationMode, [{\n    key: \"makeElevatedEvent\",\n    value: function makeElevatedEvent(event, position, props) {\n      var _ref2 = props.modeConfig || {},\n          _ref2$minElevation = _ref2.minElevation,\n          minElevation = _ref2$minElevation === void 0 ? 0 : _ref2$minElevation,\n          _ref2$maxElevation = _ref2.maxElevation,\n          maxElevation = _ref2$maxElevation === void 0 ? 20000 : _ref2$maxElevation,\n          _ref2$calculateElevat = _ref2.calculateElevationChange,\n          calculateElevationChange = _ref2$calculateElevat === void 0 ? defaultCalculateElevationChange : _ref2$calculateElevat;\n\n      if (!event.pointerDownScreenCoords) {\n        return event;\n      } // $FlowFixMe - really, I know it has something at index 2\n\n\n      var elevation = position.length === 3 ? position[2] : 0; // calculateElevationChange is configurable because (at this time) modes are not aware of the viewport\n\n      elevation += calculateElevationChange({\n        pointerDownScreenCoords: event.pointerDownScreenCoords,\n        screenCoords: event.screenCoords\n      });\n      elevation = Math.min(elevation, maxElevation);\n      elevation = Math.max(elevation, minElevation);\n      return Object.assign({}, event, {\n        mapCoords: [position[0], position[1], elevation]\n      });\n    }\n  }, {\n    key: \"handlePointerMove\",\n    value: function handlePointerMove(event, props) {\n      var editHandle = (0, _utils.getPickedEditHandle)(event.pointerDownPicks);\n      var position = editHandle ? editHandle.geometry.coordinates : event.mapCoords; // @ts-ignore\n\n      _get(_getPrototypeOf(ElevationMode.prototype), \"handlePointerMove\", this).call(this, this.makeElevatedEvent(event, position, props), props);\n    }\n  }, {\n    key: \"handleStopDragging\",\n    value: function handleStopDragging(event, props) {\n      var editHandle = (0, _utils.getPickedEditHandle)(event.picks);\n      var position = editHandle ? editHandle.geometry.coordinates : event.mapCoords; // @ts-ignore\n\n      _get(_getPrototypeOf(ElevationMode.prototype), \"handleStopDragging\", this).call(this, this.makeElevatedEvent(event, position, props), props);\n    }\n  }, {\n    key: \"getCursor\",\n    value: function getCursor(event) {\n      var cursor = _get(_getPrototypeOf(ElevationMode.prototype), \"getCursor\", this).call(this, event);\n\n      if (cursor === 'cell') {\n        cursor = 'ns-resize';\n      }\n\n      return cursor;\n    }\n  }], [{\n    key: \"calculateElevationChangeWithViewport\",\n    value: function calculateElevationChangeWithViewport(viewport, _ref3) {\n      var pointerDownScreenCoords = _ref3.pointerDownScreenCoords,\n          screenCoords = _ref3.screenCoords;\n      // Source: https://gis.stackexchange.com/a/127949/111804\n      var metersPerPixel = 156543.03392 * Math.cos(viewport.latitude * Math.PI / 180) / Math.pow(2, viewport.zoom);\n      return metersPerPixel * (pointerDownScreenCoords[1] - screenCoords[1]) / 2;\n    }\n  }]);\n\n  return ElevationMode;\n}(_modifyMode.ModifyMode);\n\nexports.ElevationMode = ElevationMode;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvZWxldmF0aW9uLW1vZGUudHMiXSwibmFtZXMiOlsiZGVmYXVsdENhbGN1bGF0ZUVsZXZhdGlvbkNoYW5nZSIsInBvaW50ZXJEb3duU2NyZWVuQ29vcmRzIiwic2NyZWVuQ29vcmRzIiwiRWxldmF0aW9uTW9kZSIsImV2ZW50IiwicG9zaXRpb24iLCJwcm9wcyIsIm1vZGVDb25maWciLCJtaW5FbGV2YXRpb24iLCJtYXhFbGV2YXRpb24iLCJjYWxjdWxhdGVFbGV2YXRpb25DaGFuZ2UiLCJlbGV2YXRpb24iLCJsZW5ndGgiLCJNYXRoIiwibWluIiwibWF4IiwiT2JqZWN0IiwiYXNzaWduIiwibWFwQ29vcmRzIiwiZWRpdEhhbmRsZSIsInBvaW50ZXJEb3duUGlja3MiLCJnZW9tZXRyeSIsImNvb3JkaW5hdGVzIiwibWFrZUVsZXZhdGVkRXZlbnQiLCJwaWNrcyIsImN1cnNvciIsInZpZXdwb3J0IiwibWV0ZXJzUGVyUGl4ZWwiLCJjb3MiLCJsYXRpdHVkZSIsIlBJIiwicG93Iiwiem9vbSIsIk1vZGlmeU1vZGUiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFFQTs7QUFDQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVBLFNBQVNBLCtCQUFULE9BTUc7QUFBQSxNQUxEQyx1QkFLQyxRQUxEQSx1QkFLQztBQUFBLE1BSkRDLFlBSUMsUUFKREEsWUFJQztBQUNELFNBQU8sTUFBTUQsdUJBQXVCLENBQUMsQ0FBRCxDQUF2QixHQUE2QkMsWUFBWSxDQUFDLENBQUQsQ0FBL0MsQ0FBUDtBQUNEOztJQUVZQyxhOzs7Ozs7Ozs7Ozs7O3NDQUVUQyxLLEVBQ0FDLFEsRUFDQUMsSyxFQUNxQjtBQUFBLGtCQUtqQkEsS0FBSyxDQUFDQyxVQUFOLElBQW9CLEVBTEg7QUFBQSxxQ0FFbkJDLFlBRm1CO0FBQUEsVUFFbkJBLFlBRm1CLG1DQUVKLENBRkk7QUFBQSxxQ0FHbkJDLFlBSG1CO0FBQUEsVUFHbkJBLFlBSG1CLG1DQUdKLEtBSEk7QUFBQSx3Q0FJbkJDLHdCQUptQjtBQUFBLFVBSW5CQSx3QkFKbUIsc0NBSVFWLCtCQUpSOztBQU9yQixVQUFJLENBQUNJLEtBQUssQ0FBQ0gsdUJBQVgsRUFBb0M7QUFDbEMsZUFBT0csS0FBUDtBQUNELE9BVG9CLENBV3JCOzs7QUFDQSxVQUFJTyxTQUFTLEdBQUdOLFFBQVEsQ0FBQ08sTUFBVCxLQUFvQixDQUFwQixHQUF3QlAsUUFBUSxDQUFDLENBQUQsQ0FBaEMsR0FBc0MsQ0FBdEQsQ0FacUIsQ0FjckI7O0FBQ0FNLE1BQUFBLFNBQVMsSUFBSUQsd0JBQXdCLENBQUM7QUFDcENULFFBQUFBLHVCQUF1QixFQUFFRyxLQUFLLENBQUNILHVCQURLO0FBRXBDQyxRQUFBQSxZQUFZLEVBQUVFLEtBQUssQ0FBQ0Y7QUFGZ0IsT0FBRCxDQUFyQztBQUlBUyxNQUFBQSxTQUFTLEdBQUdFLElBQUksQ0FBQ0MsR0FBTCxDQUFTSCxTQUFULEVBQW9CRixZQUFwQixDQUFaO0FBQ0FFLE1BQUFBLFNBQVMsR0FBR0UsSUFBSSxDQUFDRSxHQUFMLENBQVNKLFNBQVQsRUFBb0JILFlBQXBCLENBQVo7QUFFQSxhQUFPUSxNQUFNLENBQUNDLE1BQVAsQ0FBYyxFQUFkLEVBQWtCYixLQUFsQixFQUF5QjtBQUM5QmMsUUFBQUEsU0FBUyxFQUFFLENBQUNiLFFBQVEsQ0FBQyxDQUFELENBQVQsRUFBY0EsUUFBUSxDQUFDLENBQUQsQ0FBdEIsRUFBMkJNLFNBQTNCO0FBRG1CLE9BQXpCLENBQVA7QUFHRDs7O3NDQUVpQlAsSyxFQUF5QkUsSyxFQUFxQztBQUM5RSxVQUFNYSxVQUFVLEdBQUcsZ0NBQW9CZixLQUFLLENBQUNnQixnQkFBMUIsQ0FBbkI7QUFDQSxVQUFNZixRQUFRLEdBQUdjLFVBQVUsR0FBR0EsVUFBVSxDQUFDRSxRQUFYLENBQW9CQyxXQUF2QixHQUFxQ2xCLEtBQUssQ0FBQ2MsU0FBdEUsQ0FGOEUsQ0FHOUU7O0FBQ0EsMkZBQXdCLEtBQUtLLGlCQUFMLENBQXVCbkIsS0FBdkIsRUFBOEJDLFFBQTlCLEVBQXdDQyxLQUF4QyxDQUF4QixFQUF3RUEsS0FBeEU7QUFDRDs7O3VDQUVrQkYsSyxFQUEwQkUsSyxFQUFxQztBQUNoRixVQUFNYSxVQUFVLEdBQUcsZ0NBQW9CZixLQUFLLENBQUNvQixLQUExQixDQUFuQjtBQUNBLFVBQU1uQixRQUFRLEdBQUdjLFVBQVUsR0FBR0EsVUFBVSxDQUFDRSxRQUFYLENBQW9CQyxXQUF2QixHQUFxQ2xCLEtBQUssQ0FBQ2MsU0FBdEUsQ0FGZ0YsQ0FHaEY7O0FBQ0EsNEZBQXlCLEtBQUtLLGlCQUFMLENBQXVCbkIsS0FBdkIsRUFBOEJDLFFBQTlCLEVBQXdDQyxLQUF4QyxDQUF6QixFQUF5RUEsS0FBekU7QUFDRDs7OzhCQUVTRixLLEVBQW9EO0FBQzVELFVBQUlxQixNQUFNLGdGQUFtQnJCLEtBQW5CLENBQVY7O0FBQ0EsVUFBSXFCLE1BQU0sS0FBSyxNQUFmLEVBQXVCO0FBQ3JCQSxRQUFBQSxNQUFNLEdBQUcsV0FBVDtBQUNEOztBQUNELGFBQU9BLE1BQVA7QUFDRDs7O3lEQUdDQyxRLFNBUVE7QUFBQSxVQU5OekIsdUJBTU0sU0FOTkEsdUJBTU07QUFBQSxVQUxOQyxZQUtNLFNBTE5BLFlBS007QUFDUjtBQUNBLFVBQU15QixjQUFjLEdBQ2pCLGVBQWVkLElBQUksQ0FBQ2UsR0FBTCxDQUFVRixRQUFRLENBQUNHLFFBQVQsR0FBb0JoQixJQUFJLENBQUNpQixFQUExQixHQUFnQyxHQUF6QyxDQUFoQixHQUFpRWpCLElBQUksQ0FBQ2tCLEdBQUwsQ0FBUyxDQUFULEVBQVlMLFFBQVEsQ0FBQ00sSUFBckIsQ0FEbkU7QUFHQSxhQUFRTCxjQUFjLElBQUkxQix1QkFBdUIsQ0FBQyxDQUFELENBQXZCLEdBQTZCQyxZQUFZLENBQUMsQ0FBRCxDQUE3QyxDQUFmLEdBQW9FLENBQTNFO0FBQ0Q7Ozs7RUFyRWdDK0Isc0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBNb2RlUHJvcHMsIFBvaW50ZXJNb3ZlRXZlbnQsIFN0b3BEcmFnZ2luZ0V2ZW50IH0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHsgUG9zaXRpb24sIEZlYXR1cmVDb2xsZWN0aW9uIH0gZnJvbSAnLi4vZ2VvanNvbi10eXBlcyc7XG5pbXBvcnQgeyBnZXRQaWNrZWRFZGl0SGFuZGxlIH0gZnJvbSAnLi4vdXRpbHMnO1xuaW1wb3J0IHsgTW9kaWZ5TW9kZSB9IGZyb20gJy4vbW9kaWZ5LW1vZGUnO1xuXG5mdW5jdGlvbiBkZWZhdWx0Q2FsY3VsYXRlRWxldmF0aW9uQ2hhbmdlKHtcbiAgcG9pbnRlckRvd25TY3JlZW5Db29yZHMsXG4gIHNjcmVlbkNvb3Jkcyxcbn06IHtcbiAgcG9pbnRlckRvd25TY3JlZW5Db29yZHM6IFBvc2l0aW9uO1xuICBzY3JlZW5Db29yZHM6IFBvc2l0aW9uO1xufSkge1xuICByZXR1cm4gMTAgKiAocG9pbnRlckRvd25TY3JlZW5Db29yZHNbMV0gLSBzY3JlZW5Db29yZHNbMV0pO1xufVxuXG5leHBvcnQgY2xhc3MgRWxldmF0aW9uTW9kZSBleHRlbmRzIE1vZGlmeU1vZGUge1xuICBtYWtlRWxldmF0ZWRFdmVudChcbiAgICBldmVudDogUG9pbnRlck1vdmVFdmVudCB8IFN0b3BEcmFnZ2luZ0V2ZW50LFxuICAgIHBvc2l0aW9uOiBQb3NpdGlvbixcbiAgICBwcm9wczogTW9kZVByb3BzPEZlYXR1cmVDb2xsZWN0aW9uPlxuICApOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHtcbiAgICBjb25zdCB7XG4gICAgICBtaW5FbGV2YXRpb24gPSAwLFxuICAgICAgbWF4RWxldmF0aW9uID0gMjAwMDAsXG4gICAgICBjYWxjdWxhdGVFbGV2YXRpb25DaGFuZ2UgPSBkZWZhdWx0Q2FsY3VsYXRlRWxldmF0aW9uQ2hhbmdlLFxuICAgIH0gPSBwcm9wcy5tb2RlQ29uZmlnIHx8IHt9O1xuXG4gICAgaWYgKCFldmVudC5wb2ludGVyRG93blNjcmVlbkNvb3Jkcykge1xuICAgICAgcmV0dXJuIGV2ZW50O1xuICAgIH1cblxuICAgIC8vICRGbG93Rml4TWUgLSByZWFsbHksIEkga25vdyBpdCBoYXMgc29tZXRoaW5nIGF0IGluZGV4IDJcbiAgICBsZXQgZWxldmF0aW9uID0gcG9zaXRpb24ubGVuZ3RoID09PSAzID8gcG9zaXRpb25bMl0gOiAwO1xuXG4gICAgLy8gY2FsY3VsYXRlRWxldmF0aW9uQ2hhbmdlIGlzIGNvbmZpZ3VyYWJsZSBiZWNhdXNlIChhdCB0aGlzIHRpbWUpIG1vZGVzIGFyZSBub3QgYXdhcmUgb2YgdGhlIHZpZXdwb3J0XG4gICAgZWxldmF0aW9uICs9IGNhbGN1bGF0ZUVsZXZhdGlvbkNoYW5nZSh7XG4gICAgICBwb2ludGVyRG93blNjcmVlbkNvb3JkczogZXZlbnQucG9pbnRlckRvd25TY3JlZW5Db29yZHMsXG4gICAgICBzY3JlZW5Db29yZHM6IGV2ZW50LnNjcmVlbkNvb3JkcyxcbiAgICB9KTtcbiAgICBlbGV2YXRpb24gPSBNYXRoLm1pbihlbGV2YXRpb24sIG1heEVsZXZhdGlvbik7XG4gICAgZWxldmF0aW9uID0gTWF0aC5tYXgoZWxldmF0aW9uLCBtaW5FbGV2YXRpb24pO1xuXG4gICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oe30sIGV2ZW50LCB7XG4gICAgICBtYXBDb29yZHM6IFtwb3NpdGlvblswXSwgcG9zaXRpb25bMV0sIGVsZXZhdGlvbl0sXG4gICAgfSk7XG4gIH1cblxuICBoYW5kbGVQb2ludGVyTW92ZShldmVudDogUG9pbnRlck1vdmVFdmVudCwgcHJvcHM6IE1vZGVQcm9wczxGZWF0dXJlQ29sbGVjdGlvbj4pIHtcbiAgICBjb25zdCBlZGl0SGFuZGxlID0gZ2V0UGlja2VkRWRpdEhhbmRsZShldmVudC5wb2ludGVyRG93blBpY2tzKTtcbiAgICBjb25zdCBwb3NpdGlvbiA9IGVkaXRIYW5kbGUgPyBlZGl0SGFuZGxlLmdlb21ldHJ5LmNvb3JkaW5hdGVzIDogZXZlbnQubWFwQ29vcmRzO1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBzdXBlci5oYW5kbGVQb2ludGVyTW92ZSh0aGlzLm1ha2VFbGV2YXRlZEV2ZW50KGV2ZW50LCBwb3NpdGlvbiwgcHJvcHMpLCBwcm9wcyk7XG4gIH1cblxuICBoYW5kbGVTdG9wRHJhZ2dpbmcoZXZlbnQ6IFN0b3BEcmFnZ2luZ0V2ZW50LCBwcm9wczogTW9kZVByb3BzPEZlYXR1cmVDb2xsZWN0aW9uPikge1xuICAgIGNvbnN0IGVkaXRIYW5kbGUgPSBnZXRQaWNrZWRFZGl0SGFuZGxlKGV2ZW50LnBpY2tzKTtcbiAgICBjb25zdCBwb3NpdGlvbiA9IGVkaXRIYW5kbGUgPyBlZGl0SGFuZGxlLmdlb21ldHJ5LmNvb3JkaW5hdGVzIDogZXZlbnQubWFwQ29vcmRzO1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBzdXBlci5oYW5kbGVTdG9wRHJhZ2dpbmcodGhpcy5tYWtlRWxldmF0ZWRFdmVudChldmVudCwgcG9zaXRpb24sIHByb3BzKSwgcHJvcHMpO1xuICB9XG5cbiAgZ2V0Q3Vyc29yKGV2ZW50OiBQb2ludGVyTW92ZUV2ZW50KTogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZCB7XG4gICAgbGV0IGN1cnNvciA9IHN1cGVyLmdldEN1cnNvcihldmVudCk7XG4gICAgaWYgKGN1cnNvciA9PT0gJ2NlbGwnKSB7XG4gICAgICBjdXJzb3IgPSAnbnMtcmVzaXplJztcbiAgICB9XG4gICAgcmV0dXJuIGN1cnNvcjtcbiAgfVxuXG4gIHN0YXRpYyBjYWxjdWxhdGVFbGV2YXRpb25DaGFuZ2VXaXRoVmlld3BvcnQoXG4gICAgdmlld3BvcnQ6IGFueSxcbiAgICB7XG4gICAgICBwb2ludGVyRG93blNjcmVlbkNvb3JkcyxcbiAgICAgIHNjcmVlbkNvb3JkcyxcbiAgICB9OiB7XG4gICAgICBwb2ludGVyRG93blNjcmVlbkNvb3JkczogUG9zaXRpb247XG4gICAgICBzY3JlZW5Db29yZHM6IFBvc2l0aW9uO1xuICAgIH1cbiAgKTogbnVtYmVyIHtcbiAgICAvLyBTb3VyY2U6IGh0dHBzOi8vZ2lzLnN0YWNrZXhjaGFuZ2UuY29tL2EvMTI3OTQ5LzExMTgwNFxuICAgIGNvbnN0IG1ldGVyc1BlclBpeGVsID1cbiAgICAgICgxNTY1NDMuMDMzOTIgKiBNYXRoLmNvcygodmlld3BvcnQubGF0aXR1ZGUgKiBNYXRoLlBJKSAvIDE4MCkpIC8gTWF0aC5wb3coMiwgdmlld3BvcnQuem9vbSk7XG5cbiAgICByZXR1cm4gKG1ldGVyc1BlclBpeGVsICogKHBvaW50ZXJEb3duU2NyZWVuQ29vcmRzWzFdIC0gc2NyZWVuQ29vcmRzWzFdKSkgLyAyO1xuICB9XG59XG4iXX0=","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.ExtendLineStringMode = void 0;\n\nvar _geojsonEditMode = require(\"./geojson-edit-mode\");\n\nvar _immutableFeatureCollection = require(\"./immutable-feature-collection\");\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nvar ExtendLineStringMode = /*#__PURE__*/function (_GeoJsonEditMode) {\n  _inherits(ExtendLineStringMode, _GeoJsonEditMode);\n\n  var _super = _createSuper(ExtendLineStringMode);\n\n  function ExtendLineStringMode() {\n    _classCallCheck(this, ExtendLineStringMode);\n\n    return _super.apply(this, arguments);\n  }\n\n  _createClass(ExtendLineStringMode, [{\n    key: \"getSingleSelectedLineString\",\n    value: function getSingleSelectedLineString(props) {\n      var selectedGeometry = this.getSelectedGeometry(props);\n\n      if (selectedGeometry && selectedGeometry.type === 'LineString') {\n        return selectedGeometry;\n      }\n\n      return null;\n    }\n  }, {\n    key: \"handleClick\",\n    value: function handleClick(event, props) {\n      var selectedIndexes = props.selectedIndexes;\n      var selectedLineString = this.getSingleSelectedLineString(props);\n\n      if (!selectedLineString) {\n        console.warn(\"ExtendLineStringMode only supported for single LineString selection\"); // eslint-disable-line\n\n        return;\n      } // Extend the LineString\n\n\n      var positionIndexes = [selectedLineString.coordinates.length];\n      var modeConfig = props.modeConfig;\n\n      if (modeConfig && modeConfig.drawAtFront) {\n        positionIndexes = [0];\n      }\n\n      var featureIndex = selectedIndexes[0];\n      var updatedData = new _immutableFeatureCollection.ImmutableFeatureCollection(props.data).addPosition(featureIndex, positionIndexes, event.mapCoords).getObject();\n      props.onEdit({\n        updatedData: updatedData,\n        editType: 'addPosition',\n        editContext: {\n          featureIndexes: [featureIndex],\n          positionIndexes: positionIndexes,\n          position: event.mapCoords\n        }\n      });\n    }\n  }, {\n    key: \"getGuides\",\n    value: function getGuides(props) {\n      var guides = {\n        type: 'FeatureCollection',\n        features: []\n      };\n      var selectedLineString = this.getSingleSelectedLineString(props);\n\n      if (!selectedLineString) {\n        // nothing to do\n        // @ts-ignore\n        return guides;\n      }\n\n      var mapCoords = props.lastPointerMoveEvent && props.lastPointerMoveEvent.mapCoords; // Draw an extension line starting from one end of the selected LineString to the cursor\n\n      var startPosition = null;\n      var modeConfig = props.modeConfig;\n\n      if (modeConfig && modeConfig.drawAtFront) {\n        startPosition = selectedLineString.coordinates[0];\n      } else {\n        startPosition = selectedLineString.coordinates[selectedLineString.coordinates.length - 1];\n      }\n\n      guides.features.push({\n        type: 'Feature',\n        properties: {\n          guideType: 'tentative'\n        },\n        geometry: {\n          type: 'LineString',\n          coordinates: [startPosition, mapCoords]\n        }\n      }); // @ts-ignore\n\n      return guides;\n    }\n  }, {\n    key: \"handlePointerMove\",\n    value: function handlePointerMove(event, props) {\n      props.onUpdateCursor('cell');\n    }\n  }]);\n\n  return ExtendLineStringMode;\n}(_geojsonEditMode.GeoJsonEditMode);\n\nexports.ExtendLineStringMode = ExtendLineStringMode;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvZXh0ZW5kLWxpbmUtc3RyaW5nLW1vZGUudHMiXSwibmFtZXMiOlsiRXh0ZW5kTGluZVN0cmluZ01vZGUiLCJwcm9wcyIsInNlbGVjdGVkR2VvbWV0cnkiLCJnZXRTZWxlY3RlZEdlb21ldHJ5IiwidHlwZSIsImV2ZW50Iiwic2VsZWN0ZWRJbmRleGVzIiwic2VsZWN0ZWRMaW5lU3RyaW5nIiwiZ2V0U2luZ2xlU2VsZWN0ZWRMaW5lU3RyaW5nIiwiY29uc29sZSIsIndhcm4iLCJwb3NpdGlvbkluZGV4ZXMiLCJjb29yZGluYXRlcyIsImxlbmd0aCIsIm1vZGVDb25maWciLCJkcmF3QXRGcm9udCIsImZlYXR1cmVJbmRleCIsInVwZGF0ZWREYXRhIiwiSW1tdXRhYmxlRmVhdHVyZUNvbGxlY3Rpb24iLCJkYXRhIiwiYWRkUG9zaXRpb24iLCJtYXBDb29yZHMiLCJnZXRPYmplY3QiLCJvbkVkaXQiLCJlZGl0VHlwZSIsImVkaXRDb250ZXh0IiwiZmVhdHVyZUluZGV4ZXMiLCJwb3NpdGlvbiIsImd1aWRlcyIsImZlYXR1cmVzIiwibGFzdFBvaW50ZXJNb3ZlRXZlbnQiLCJzdGFydFBvc2l0aW9uIiwicHVzaCIsInByb3BlcnRpZXMiLCJndWlkZVR5cGUiLCJnZW9tZXRyeSIsIm9uVXBkYXRlQ3Vyc29yIiwiR2VvSnNvbkVkaXRNb2RlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBRUE7O0FBQ0E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQUVhQSxvQjs7Ozs7Ozs7Ozs7OztnREFDaUJDLEssRUFBb0U7QUFDOUYsVUFBTUMsZ0JBQWdCLEdBQUcsS0FBS0MsbUJBQUwsQ0FBeUJGLEtBQXpCLENBQXpCOztBQUVBLFVBQUlDLGdCQUFnQixJQUFJQSxnQkFBZ0IsQ0FBQ0UsSUFBakIsS0FBMEIsWUFBbEQsRUFBZ0U7QUFDOUQsZUFBT0YsZ0JBQVA7QUFDRDs7QUFDRCxhQUFPLElBQVA7QUFDRDs7O2dDQUVXRyxLLEVBQW1CSixLLEVBQXFDO0FB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LGdDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUG9zaXRpb24sIExpbmVTdHJpbmcsIEZlYXR1cmVDb2xsZWN0aW9uIH0gZnJvbSAnLi4vZ2VvanNvbi10eXBlcyc7XG5pbXBvcnQgeyBDbGlja0V2ZW50LCBQb2ludGVyTW92ZUV2ZW50LCBNb2RlUHJvcHMsIEd1aWRlRmVhdHVyZUNvbGxlY3Rpb24gfSBmcm9tICcuLi90eXBlcyc7XG5pbXBvcnQgeyBHZW9Kc29uRWRpdE1vZGUgfSBmcm9tICcuL2dlb2pzb24tZWRpdC1tb2RlJztcbmltcG9ydCB7IEltbXV0YWJsZUZlYXR1cmVDb2xsZWN0aW9uIH0gZnJvbSAnLi9pbW11dGFibGUtZmVhdHVyZS1jb2xsZWN0aW9uJztcblxuZXhwb3J0IGNsYXNzIEV4dGVuZExpbmVTdHJpbmdNb2RlIGV4dGVuZHMgR2VvSnNvbkVkaXRNb2RlIHtcbiAgZ2V0U2luZ2xlU2VsZWN0ZWRMaW5lU3RyaW5nKHByb3BzOiBNb2RlUHJvcHM8RmVhdHVyZUNvbGxlY3Rpb24+KTogTGluZVN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQge1xuICAgIGNvbnN0IHNlbGVjdGVkR2VvbWV0cnkgPSB0aGlzLmdldFNlbGVjdGVkR2VvbWV0cnkocHJvcHMpO1xuXG4gICAgaWYgKHNlbGVjdGVkR2VvbWV0cnkgJiYgc2VsZWN0ZWRHZW9tZXRyeS50eXBlID09PSAnTGluZVN0cmluZycpIHtcbiAgICAgIHJldHVybiBzZWxlY3RlZEdlb21ldHJ5O1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGhhbmRsZUNsaWNrKGV2ZW50OiBDbGlja0V2ZW50LCBwcm9wczogTW9kZVByb3BzPEZlYXR1cmVDb2xsZWN0aW9uPikge1xuICAgIGNvbnN0IHsgc2VsZWN0ZWRJbmRleGVzIH0gPSBwcm9wcztcbiAgICBjb25zdCBzZWxlY3RlZExpbmVTdHJpbmcgPSB0aGlzLmdldFNpbmdsZVNlbGVjdGVkTGluZVN0cmluZyhwcm9wcyk7XG5cbiAgICBpZiAoIXNlbGVjdGVkTGluZVN0cmluZykge1xuICAgICAgY29uc29sZS53YXJuKGBFeHRlbmRMaW5lU3RyaW5nTW9kZSBvbmx5IHN1cHBvcnRlZCBmb3Igc2luZ2xlIExpbmVTdHJpbmcgc2VsZWN0aW9uYCk7IC8vIGVzbGludC1kaXNhYmxlLWxpbmVcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBFeHRlbmQgdGhlIExpbmVTdHJpbmdcbiAgICBsZXQgcG9zaXRpb25JbmRleGVzID0gW3NlbGVjdGVkTGluZVN0cmluZy5jb29yZGluYXRlcy5sZW5ndGhdO1xuXG4gICAgY29uc3QgbW9kZUNvbmZpZyA9IHByb3BzLm1vZGVDb25maWc7XG4gICAgaWYgKG1vZGVDb25maWcgJiYgbW9kZUNvbmZpZy5kcmF3QXRGcm9udCkge1xuICAgICAgcG9zaXRpb25JbmRleGVzID0gWzBdO1xuICAgIH1cbiAgICBjb25zdCBmZWF0dXJlSW5kZXggPSBzZWxlY3RlZEluZGV4ZXNbMF07XG4gICAgY29uc3QgdXBkYXRlZERhdGEgPSBuZXcgSW1tdXRhYmxlRmVhdHVyZUNvbGxlY3Rpb24ocHJvcHMuZGF0YSlcbiAgICAgIC5hZGRQb3NpdGlvbihmZWF0dXJlSW5kZXgsIHBvc2l0aW9uSW5kZXhlcywgZXZlbnQubWFwQ29vcmRzKVxuICAgICAgLmdldE9iamVjdCgpO1xuXG4gICAgcHJvcHMub25FZGl0KHtcbiAgICAgIHVwZGF0ZWREYXRhLFxuICAgICAgZWRpdFR5cGU6ICdhZGRQb3NpdGlvbicsXG4gICAgICBlZGl0Q29udGV4dDoge1xuICAgICAgICBmZWF0dXJlSW5kZXhlczogW2ZlYXR1cmVJbmRleF0sXG4gICAgICAgIHBvc2l0aW9uSW5kZXhlcyxcbiAgICAgICAgcG9zaXRpb246IGV2ZW50Lm1hcENvb3JkcyxcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cblxuICBnZXRHdWlkZXMocHJvcHM6IE1vZGVQcm9wczxGZWF0dXJlQ29sbGVjdGlvbj4pOiBHdWlkZUZlYXR1cmVDb2xsZWN0aW9uIHtcbiAgICBjb25zdCBndWlkZXMgPSB7XG4gICAgICB0eXBlOiAnRmVhdHVyZUNvbGxlY3Rpb24nLFxuICAgICAgZmVhdHVyZXM6IFtdLFxuICAgIH07XG5cbiAgICBjb25zdCBzZWxlY3RlZExpbmVTdHJpbmcgPSB0aGlzLmdldFNpbmdsZVNlbGVjdGVkTGluZVN0cmluZyhwcm9wcyk7XG4gICAgaWYgKCFzZWxlY3RlZExpbmVTdHJpbmcpIHtcbiAgICAgIC8vIG5vdGhpbmcgdG8gZG9cbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIHJldHVybiBndWlkZXM7XG4gICAgfVxuXG4gICAgY29uc3QgbWFwQ29vcmRzID0gcHJvcHMubGFzdFBvaW50ZXJNb3ZlRXZlbnQgJiYgcHJvcHMubGFzdFBvaW50ZXJNb3ZlRXZlbnQubWFwQ29vcmRzO1xuXG4gICAgLy8gRHJhdyBhbiBleHRlbnNpb24gbGluZSBzdGFydGluZyBmcm9tIG9uZSBlbmQgb2YgdGhlIHNlbGVjdGVkIExpbmVTdHJpbmcgdG8gdGhlIGN1cnNvclxuICAgIGxldCBzdGFydFBvc2l0aW9uOiBQb3NpdGlvbiB8IG51bGwgfCB1bmRlZmluZWQgPSBudWxsO1xuICAgIGNvbnN0IHsgbW9kZUNvbmZpZyB9ID0gcHJvcHM7XG4gICAgaWYgKG1vZGVDb25maWcgJiYgbW9kZUNvbmZpZy5kcmF3QXRGcm9udCkge1xuICAgICAgc3RhcnRQb3NpdGlvbiA9IHNlbGVjdGVkTGluZVN0cmluZy5jb29yZGluYXRlc1swXTtcbiAgICB9IGVsc2Uge1xuICAgICAgc3RhcnRQb3NpdGlvbiA9IHNlbGVjdGVkTGluZVN0cmluZy5jb29yZGluYXRlc1tzZWxlY3RlZExpbmVTdHJpbmcuY29vcmRpbmF0ZXMubGVuZ3RoIC0gMV07XG4gICAgfVxuXG4gICAgZ3VpZGVzLmZlYXR1cmVzLnB1c2goe1xuICAgICAgdHlwZTogJ0ZlYXR1cmUnLFxuICAgICAgcHJvcGVydGllczoge1xuICAgICAgICBndWlkZVR5cGU6ICd0ZW50YXRpdmUnLFxuICAgICAgfSxcbiAgICAgIGdlb21ldHJ5OiB7XG4gICAgICAgIHR5cGU6ICdMaW5lU3RyaW5nJyxcbiAgICAgICAgY29vcmRpbmF0ZXM6IFtzdGFydFBvc2l0aW9uLCBtYXBDb29yZHNdLFxuICAgICAgfSxcbiAgICB9KTtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgcmV0dXJuIGd1aWRlcztcbiAgfVxuXG4gIGhhbmRsZVBvaW50ZXJNb3ZlKGV2ZW50OiBQb2ludGVyTW92ZUV2ZW50LCBwcm9wczogTW9kZVByb3BzPEZlYXR1cmVDb2xsZWN0aW9uPikge1xuICAgIHByb3BzLm9uVXBkYXRlQ3Vyc29yKCdjZWxsJyk7XG4gIH1cbn1cbiJdfQ==","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.ExtrudeMode = void 0;\n\nvar _bearing = _interopRequireDefault(require(\"@turf/bearing\"));\n\nvar _utils = require(\"../utils\");\n\nvar _modifyMode = require(\"./modify-mode\");\n\nvar _immutableFeatureCollection = require(\"./immutable-feature-collection\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(n); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return; var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar ExtrudeMode = /*#__PURE__*/function (_ModifyMode) {\n  _inherits(ExtrudeMode, _ModifyMode);\n\n  var _super = _createSuper(ExtrudeMode);\n\n  function ExtrudeMode() {\n    var _this;\n\n    _classCallCheck(this, ExtrudeMode);\n\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    _this = _super.call.apply(_super, [this].concat(args));\n\n    _defineProperty(_assertThisInitialized(_this), \"isPointAdded\", false);\n\n    return _this;\n  }\n\n  _createClass(ExtrudeMode, [{\n    key: \"handleDragging\",\n    value: function handleDragging(event, props) {\n      var editHandle = (0, _utils.getPickedEditHandle)(event.pointerDownPicks);\n\n      if (editHandle) {\n        var featureIndex = editHandle.properties.featureIndex;\n        var positionIndexes = editHandle.properties.positionIndexes;\n        var size = this.coordinatesSize(positionIndexes, featureIndex, props.data);\n        positionIndexes = this.isPointAdded ? this.nextPositionIndexes(positionIndexes, size) : positionIndexes; // p1 and p1 are end points for edge\n\n        var p1 = this.getPointForPositionIndexes(this.prevPositionIndexes(positionIndexes, size), featureIndex, props.data);\n        var p2 = this.getPointForPositionIndexes(positionIndexes, featureIndex, props.data);\n\n        if (p1 && p2) {\n          // p3 and p4 are end points for moving (extruding) edge\n          var _generatePointsParall = (0, _utils.generatePointsParallelToLinePoints)(p1, p2, event.mapCoords),\n              _generatePointsParall2 = _slicedToArray(_generatePointsParall, 2),\n              p3 = _generatePointsParall2[0],\n              p4 = _generatePointsParall2[1];\n\n          var updatedData = new _immutableFeatureCollection.ImmutableFeatureCollection(props.data).replacePosition(featureIndex, this.prevPositionIndexes(positionIndexes, size), p4).replacePosition(featureIndex, positionIndexes, p3).getObject();\n          props.onEdit({\n            updatedData: updatedData,\n            editType: 'extruding',\n            editContext: {\n              featureIndexes: [featureIndex],\n              positionIndexes: this.nextPositionIndexes(positionIndexes, size),\n              position: p3\n            }\n          });\n          event.cancelPan();\n        }\n      }\n    }\n  }, {\n    key: \"handleStartDragging\",\n    value: function handleStartDragging(event, props) {\n      var selectedFeatureIndexes = props.selectedIndexes;\n      var editHandle = (0, _utils.getPickedIntermediateEditHandle)(event.picks);\n\n      if (selectedFeatureIndexes.length && editHandle) {\n        var _editHandle$propertie = editHandle.properties,\n            positionIndexes = _editHandle$propertie.positionIndexes,\n            featureIndex = _editHandle$propertie.featureIndex;\n        var size = this.coordinatesSize(positionIndexes, featureIndex, props.data); // p1 and p1 are end points for edge\n\n        var p1 = this.getPointForPositionIndexes(this.prevPositionIndexes(positionIndexes, size), featureIndex, props.data);\n        var p2 = this.getPointForPositionIndexes(positionIndexes, featureIndex, props.data);\n\n        if (p1 && p2) {\n          var updatedData = new _immutableFeatureCollection.ImmutableFeatureCollection(props.data);\n\n          if (!this.isOrthogonal(positionIndexes, featureIndex, size, props.data)) {\n            updatedData = updatedData.addPosition(featureIndex, positionIndexes, p2);\n          }\n\n          if (!this.isOrthogonal(this.prevPositionIndexes(positionIndexes, size), featureIndex, size, props.data)) {\n            updatedData = updatedData.addPosition(featureIndex, positionIndexes, p1);\n            this.isPointAdded = true;\n          }\n\n          props.onEdit({\n            updatedData: updatedData.getObject(),\n            editType: 'startExtruding',\n            editContext: {\n              featureIndexes: [featureIndex],\n              positionIndexes: positionIndexes,\n              position: p1\n            }\n          });\n        }\n      }\n    }\n  }, {\n    key: \"handleStopDragging\",\n    value: function handleStopDragging(event, props) {\n      var selectedFeatureIndexes = props.selectedIndexes;\n      var editHandle = (0, _utils.getPickedEditHandle)(event.pointerDownPicks);\n\n      if (selectedFeatureIndexes.length && editHandle) {\n        var featureIndex = editHandle.properties.featureIndex;\n        var positionIndexes = editHandle.properties.positionIndexes;\n        var size = this.coordinatesSize(positionIndexes, featureIndex, props.data);\n        positionIndexes = this.isPointAdded ? this.nextPositionIndexes(positionIndexes, size) : positionIndexes; // p1 and p1 are end points for edge\n\n        var p1 = this.getPointForPositionIndexes(this.prevPositionIndexes(positionIndexes, size), featureIndex, props.data);\n        var p2 = this.getPointForPositionIndexes(positionIndexes, featureIndex, props.data);\n\n        if (p1 && p2) {\n          // p3 and p4 are end points for new moved (extruded) edge\n          var _generatePointsParall3 = (0, _utils.generatePointsParallelToLinePoints)(p1, p2, event.mapCoords),\n              _generatePointsParall4 = _slicedToArray(_generatePointsParall3, 2),\n              p3 = _generatePointsParall4[0],\n              p4 = _generatePointsParall4[1];\n\n          var updatedData = new _immutableFeatureCollection.ImmutableFeatureCollection(props.data).replacePosition(featureIndex, this.prevPositionIndexes(positionIndexes, size), p4).replacePosition(featureIndex, positionIndexes, p3).getObject();\n          props.onEdit({\n            updatedData: updatedData,\n            editType: 'extruded',\n            editContext: {\n              featureIndexes: [featureIndex],\n              positionIndexes: positionIndexes,\n              position: p3\n            }\n          });\n        }\n      }\n\n      this.isPointAdded = false;\n    }\n  }, {\n    key: \"coordinatesSize\",\n    value: function coordinatesSize(positionIndexes, featureIndex, _ref) {\n      var features = _ref.features;\n      var size = 0;\n\n      if (Array.isArray(positionIndexes)) {\n        var feature = features[featureIndex];\n        var coordinates = feature.geometry.coordinates; // for Multi polygons, length will be 3\n\n        if (positionIndexes.length === 3) {\n          var _positionIndexes = _slicedToArray(positionIndexes, 2),\n              a = _positionIndexes[0],\n              b = _positionIndexes[1];\n\n          if (coordinates.length && coordinates[a].length) {\n            size = coordinates[a][b].length;\n          }\n        } else {\n          var _positionIndexes2 = _slicedToArray(positionIndexes, 1),\n              _b = _positionIndexes2[0];\n\n          if (coordinates.length && coordinates[_b].length) {\n            size = coordinates[_b].length;\n          }\n        }\n      }\n\n      return size;\n    }\n  }, {\n    key: \"getBearing\",\n    value: function getBearing(p1, p2) {\n      var angle = (0, _bearing[\"default\"])(p1, p2);\n\n      if (angle < 0) {\n        return Math.floor(360 + angle);\n      }\n\n      return Math.floor(angle);\n    }\n  }, {\n    key: \"isOrthogonal\",\n    value: function isOrthogonal(positionIndexes, featureIndex, size, features) {\n      if (!Array.isArray(positionIndexes)) {\n        return false;\n      }\n\n      if (positionIndexes[positionIndexes.length - 1] === size - 1) {\n        positionIndexes[positionIndexes.length - 1] = 0;\n      }\n\n      var prevPoint = this.getPointForPositionIndexes(this.prevPositionIndexes(positionIndexes, size), featureIndex, features);\n      var nextPoint = this.getPointForPositionIndexes(this.nextPositionIndexes(positionIndexes, size), featureIndex, features);\n      var currentPoint = this.getPointForPositionIndexes(positionIndexes, featureIndex, features);\n      var prevAngle = this.getBearing(currentPoint, prevPoint);\n      var nextAngle = this.getBearing(currentPoint, nextPoint);\n      return [89, 90, 91, 269, 270, 271].includes(Math.abs(prevAngle - nextAngle));\n    }\n  }, {\n    key: \"nextPositionIndexes\",\n    value: function nextPositionIndexes(positionIndexes, size) {\n      if (!Array.isArray(positionIndexes)) {\n        return [];\n      }\n\n      var next = _toConsumableArray(positionIndexes);\n\n      if (next.length) {\n        next[next.length - 1] = next[next.length - 1] === size - 1 ? 0 : next[next.length - 1] + 1;\n      }\n\n      return next;\n    }\n  }, {\n    key: \"prevPositionIndexes\",\n    value: function prevPositionIndexes(positionIndexes, size) {\n      if (!Array.isArray(positionIndexes)) {\n        return [];\n      }\n\n      var prev = _toConsumableArray(positionIndexes);\n\n      if (prev.length) {\n        prev[prev.length - 1] = prev[prev.length - 1] === 0 ? size - 2 : prev[prev.length - 1] - 1;\n      }\n\n      return prev;\n    }\n  }, {\n    key: \"getPointForPositionIndexes\",\n    value: function getPointForPositionIndexes(positionIndexes, featureIndex, _ref2) {\n      var features = _ref2.features;\n      var p1;\n\n      if (Array.isArray(positionIndexes)) {\n        var feature = features[featureIndex];\n        var coordinates = feature.geometry.coordinates; // for Multi polygons, length will be 3\n\n        if (positionIndexes.length === 3) {\n          var _positionIndexes3 = _slicedToArray(positionIndexes, 3),\n              a = _positionIndexes3[0],\n              b = _positionIndexes3[1],\n              c = _positionIndexes3[2];\n\n          if (coordinates.length && coordinates[a].length) {\n            p1 = coordinates[a][b][c];\n          }\n        } else {\n          var _positionIndexes4 = _slicedToArray(positionIndexes, 2),\n              _b2 = _positionIndexes4[0],\n              _c = _positionIndexes4[1];\n\n          if (coordinates.length && coordinates[_b2].length) {\n            p1 = coordinates[_b2][_c];\n          }\n        }\n      }\n\n      return p1;\n    }\n  }]);\n\n  return ExtrudeMode;\n}(_modifyMode.ModifyMode);\n\nexports.ExtrudeMode = ExtrudeMode;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvZXh0cnVkZS1tb2RlLnRzIl0sIm5hbWVzIjpbIkV4dHJ1ZGVNb2RlIiwiZXZlbnQiLCJwcm9wcyIsImVkaXRIYW5kbGUiLCJwb2ludGVyRG93blBpY2tzIiwiZmVhdHVyZUluZGV4IiwicHJvcGVydGllcyIsInBvc2l0aW9uSW5kZXhlcyIsInNpemUiLCJjb29yZGluYXRlc1NpemUiLCJkYXRhIiwiaXNQb2ludEFkZGVkIiwibmV4dFBvc2l0aW9uSW5kZXhlcyIsInAxIiwiZ2V0UG9pbnRGb3JQb3NpdGlvbkluZGV4ZXMiLCJwcmV2UG9zaXRpb25JbmRleGVzIiwicDIiLCJtYXBDb29yZHMiLCJwMyIsInA0IiwidXBkYXRlZERhdGEiLCJJbW11dGFibGVGZWF0dXJlQ29sbGVjdGlvbiIsInJlcGxhY2VQb3NpdGlvbiIsImdldE9iamVjdCIsIm9uRWRpdCIsImVkaXRUeXBlIiwiZWRpdENvbnRleHQiLCJmZWF0dXJlSW5kZXhlcyIsInBvc2l0aW9uIiwiY2FuY2VsUGFuIiwic2VsZWN0ZWRGZWF0dXJlSW5kZXhlcyIsInNlbGVjdGVkSW5kZXhlcyIsInBpY2tzIiwibGVuZ3RoIiwiaXNPcnRob2dvbmFsIiwiYWRkUG9zaXRpb24iLCJmZWF0dXJlcyIsIkFycmF5IiwiaXNBcnJheSIsImZlYXR1cmUiLCJjb29yZGluYXRlcyIsImdlb21ldHJ5IiwiYSIsImIiLCJhbmdsZSIsIk1hdGgiLCJmbG9vciIsInByZXZQb2ludCIsIm5leHRQb2ludCIsImN1cnJlbnRQb2ludCIsInByZXZBbmdsZSIsImdldEJlYXJpbmciLCJuZXh0QW5nbGUiLCJpbmNsdWRlcyIsImFicyIsIm5leHQiLCJwcmV2IiwiYyIsIk1vZGlmeU1vZGUiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFPQTs7QUFDQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBRWFBLFc7Ozs7Ozs7Ozs7Ozs7Ozs7bUVBR0ks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Q0FBZVYsTUFBekMsRUFBaUQ7QUFDL0NwQixZQUFBQSxFQUFFLEdBQUcyQixXQUFXLENBQUNHLEdBQUQsQ0FBWCxDQUFlYyxFQUFmLENBQUw7QUFDRDtBQUNGO0FBQ0Y7O0FBQ0QsYUFBTzVDLEVBQVA7QUFDRDs7OztFQWpQOEI2QyxzQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBiZWFyaW5nIGZyb20gJ0B0dXJmL2JlYXJpbmcnO1xuaW1wb3J0IHtcbiAgZ2VuZXJhdGVQb2ludHNQYXJhbGxlbFRvTGluZVBvaW50cyxcbiAgZ2V0UGlja2VkRWRpdEhhbmRsZSxcbiAgZ2V0UGlja2VkSW50ZXJtZWRpYXRlRWRpdEhhbmRsZSxcbn0gZnJvbSAnLi4vdXRpbHMnO1xuaW1wb3J0IHsgRmVhdHVyZUNvbGxlY3Rpb24gfSBmcm9tICcuLi9nZW9qc29uLXR5cGVzJztcbmltcG9ydCB7IE1vZGVQcm9wcywgU3RhcnREcmFnZ2luZ0V2ZW50LCBTdG9wRHJhZ2dpbmdFdmVudCwgRHJhZ2dpbmdFdmVudCB9IGZyb20gJy4uL3R5cGVzJztcbmltcG9ydCB7IE1vZGlmeU1vZGUgfSBmcm9tICcuL21vZGlmeS1tb2RlJztcbmltcG9ydCB7IEltbXV0YWJsZUZlYXR1cmVDb2xsZWN0aW9uIH0gZnJvbSAnLi9pbW11dGFibGUtZmVhdHVyZS1jb2xsZWN0aW9uJztcblxuZXhwb3J0IGNsYXNzIEV4dHJ1ZGVNb2RlIGV4dGVuZHMgTW9kaWZ5TW9kZSB7XG4gIC8vIHRoaXMgbW9kZSBpcyBidXN0ZWQgPShcblxuICBpc1BvaW50QWRkZWQgPSBmYWxzZTtcblxuICBoYW5kbGVEcmFnZ2luZyhldmVudDogRHJhZ2dpbmdFdmVudCwgcHJvcHM6IE1vZGVQcm9wczxGZWF0dXJlQ29sbGVjdGlvbj4pOiB2b2lkIHtcbiAgICBjb25zdCBlZGl0SGFuZGxlID0gZ2V0UGlja2VkRWRpdEhhbmRsZShldmVudC5wb2ludGVyRG93blBpY2tzKTtcblxuICAgIGlmIChlZGl0SGFuZGxlKSB7XG4gICAgICBjb25zdCB7IGZlYXR1cmVJbmRleCB9ID0gZWRpdEhhbmRsZS5wcm9wZXJ0aWVzO1xuICAgICAgbGV0IHsgcG9zaXRpb25JbmRleGVzIH0gPSBlZGl0SGFuZGxlLnByb3BlcnRpZXM7XG5cbiAgICAgIGNvbnN0IHNpemUgPSB0aGlzLmNvb3JkaW5hdGVzU2l6ZShwb3NpdGlvbkluZGV4ZXMsIGZlYXR1cmVJbmRleCwgcHJvcHMuZGF0YSk7XG4gICAgICBwb3NpdGlvbkluZGV4ZXMgPSB0aGlzLmlzUG9pbnRBZGRlZFxuICAgICAgICA/IHRoaXMubmV4dFBvc2l0aW9uSW5kZXhlcyhwb3NpdGlvbkluZGV4ZXMsIHNpemUpXG4gICAgICAgIDogcG9zaXRpb25JbmRleGVzO1xuICAgICAgLy8gcDEgYW5kIHAxIGFyZSBlbmQgcG9pbnRzIGZvciBlZGdlXG4gICAgICBjb25zdCBwMSA9IHRoaXMuZ2V0UG9pbnRGb3JQb3NpdGlvbkluZGV4ZXMoXG4gICAgICAgIHRoaXMucHJldlBvc2l0aW9uSW5kZXhlcyhwb3NpdGlvbkluZGV4ZXMsIHNpemUpLFxuICAgICAgICBmZWF0dXJlSW5kZXgsXG4gICAgICAgIHByb3BzLmRhdGFcbiAgICAgICk7XG4gICAgICBjb25zdCBwMiA9IHRoaXMuZ2V0UG9pbnRGb3JQb3NpdGlvbkluZGV4ZXMocG9zaXRpb25JbmRleGVzLCBmZWF0dXJlSW5kZXgsIHByb3BzLmRhdGEpO1xuICAgICAgaWYgKHAxICYmIHAyKSB7XG4gICAgICAgIC8vIHAzIGFuZCBwNCBhcmUgZW5kIHBvaW50cyBmb3IgbW92aW5nIChleHRydWRpbmcpIGVkZ2VcbiAgICAgICAgY29uc3QgW3AzLCBwNF0gPSBnZW5lcmF0ZVBvaW50c1BhcmFsbGVsVG9MaW5lUG9pbnRzKHAxLCBwMiwgZXZlbnQubWFwQ29vcmRzKTtcblxuICAgICAgICBjb25zdCB1cGRhdGVkRGF0YSA9IG5ldyBJbW11dGFibGVGZWF0dXJlQ29sbGVjdGlvbihwcm9wcy5kYXRhKVxuICAgICAgICAgIC5yZXBsYWNlUG9zaXRpb24oZmVhdHVyZUluZGV4LCB0aGlzLnByZXZQb3NpdGlvbkluZGV4ZXMocG9zaXRpb25JbmRleGVzLCBzaXplKSwgcDQpXG4gICAgICAgICAgLnJlcGxhY2VQb3NpdGlvbihmZWF0dXJlSW5kZXgsIHBvc2l0aW9uSW5kZXhlcywgcDMpXG4gICAgICAgICAgLmdldE9iamVjdCgpO1xuXG4gICAgICAgIHByb3BzLm9uRWRpdCh7XG4gICAgICAgICAgdXBkYXRlZERhdGEsXG4gICAgICAgICAgZWRpdFR5cGU6ICdleHRydWRpbmcnLFxuICAgICAgICAgIGVkaXRDb250ZXh0OiB7XG4gICAgICAgICAgICBmZWF0dXJlSW5kZXhlczogW2ZlYXR1cmVJbmRleF0sXG4gICAgICAgICAgICBwb3NpdGlvbkluZGV4ZXM6IHRoaXMubmV4dFBvc2l0aW9uSW5kZXhlcyhwb3NpdGlvbkluZGV4ZXMsIHNpemUpLFxuICAgICAgICAgICAgcG9zaXRpb246IHAzLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0pO1xuXG4gICAgICAgIGV2ZW50LmNhbmNlbFBhbigpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGhhbmRsZVN0YXJ0RHJhZ2dpbmcoZXZlbnQ6IFN0YXJ0RHJhZ2dpbmdFdmVudCwgcHJvcHM6IE1vZGVQcm9wczxGZWF0dXJlQ29sbGVjdGlvbj4pIHtcbiAgICBjb25zdCBzZWxlY3RlZEZlYXR1cmVJbmRleGVzID0gcHJvcHMuc2VsZWN0ZWRJbmRleGVzO1xuXG4gICAgY29uc3QgZWRpdEhhbmRsZSA9IGdldFBpY2tlZEludGVybWVkaWF0ZUVkaXRIYW5kbGUoZXZlbnQucGlja3MpO1xuICAgIGlmIChzZWxlY3RlZEZlYXR1cmVJbmRleGVzLmxlbmd0aCAmJiBlZGl0SGFuZGxlKSB7XG4gICAgICBjb25zdCB7IHBvc2l0aW9uSW5kZXhlcywgZmVhdHVyZUluZGV4IH0gPSBlZGl0SGFuZGxlLnByb3BlcnRpZXM7XG5cbiAgICAgIGNvbnN0IHNpemUgPSB0aGlzLmNvb3JkaW5hdGVzU2l6ZShwb3NpdGlvbkluZGV4ZXMsIGZlYXR1cmVJbmRleCwgcHJvcHMuZGF0YSk7XG4gICAgICAvLyBwMSBhbmQgcDEgYXJlIGVuZCBwb2ludHMgZm9yIGVkZ2VcbiAgICAgIGNvbnN0IHAxID0gdGhpcy5nZXRQb2ludEZvclBvc2l0aW9uSW5kZXhlcyhcbiAgICAgICAgdGhpcy5wcmV2UG9zaXRpb25JbmRleGVzKHBvc2l0aW9uSW5kZXhlcywgc2l6ZSksXG4gICAgICAgIGZlYXR1cmVJbmRleCxcbiAgICAgICAgcHJvcHMuZGF0YVxuICAgICAgKTtcbiAgICAgIGNvbnN0IHAyID0gdGhpcy5nZXRQb2ludEZvclBvc2l0aW9uSW5kZXhlcyhwb3NpdGlvbkluZGV4ZXMsIGZlYXR1cmVJbmRleCwgcHJvcHMuZGF0YSk7XG5cbiAgICAgIGlmIChwMSAmJiBwMikge1xuICAgICAgICBsZXQgdXBkYXRlZERhdGEgPSBuZXcgSW1tdXRhYmxlRmVhdHVyZUNvbGxlY3Rpb24ocHJvcHMuZGF0YSk7XG4gICAgICAgIGlmICghdGhpcy5pc09ydGhvZ29uYWwocG9zaXRpb25JbmRleGVzLCBmZWF0dXJlSW5kZXgsIHNpemUsIHByb3BzLmRhdGEpKSB7XG4gICAgICAgICAgdXBkYXRlZERhdGEgPSB1cGRhdGVkRGF0YS5hZGRQb3NpdGlvbihmZWF0dXJlSW5kZXgsIHBvc2l0aW9uSW5kZXhlcywgcDIpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChcbiAgICAgICAgICAhdGhpcy5pc09ydGhvZ29uYWwoXG4gICAgICAgICAgICB0aGlzLnByZXZQb3NpdGlvbkluZGV4ZXMocG9zaXRpb25JbmRleGVzLCBzaXplKSxcbiAgICAgICAgICAgIGZlYXR1cmVJbmRleCxcbiAgICAgICAgICAgIHNpemUsXG4gICAgICAgICAgICBwcm9wcy5kYXRhXG4gICAgICAgICAgKVxuICAgICAgICApIHtcbiAgICAgICAgICB1cGRhdGVkRGF0YSA9IHVwZGF0ZWREYXRhLmFkZFBvc2l0aW9uKGZlYXR1cmVJbmRleCwgcG9zaXRpb25JbmRleGVzLCBwMSk7XG4gICAgICAgICAgdGhpcy5pc1BvaW50QWRkZWQgPSB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgcHJvcHMub25FZGl0KHtcbiAgICAgICAgICB1cGRhdGVkRGF0YTogdXBkYXRlZERhdGEuZ2V0T2JqZWN0KCksXG4gICAgICAgICAgZWRpdFR5cGU6ICdzdGFydEV4dHJ1ZGluZycsXG4gICAgICAgICAgZWRpdENvbnRleHQ6IHtcbiAgICAgICAgICAgIGZlYXR1cmVJbmRleGVzOiBbZmVhdHVyZUluZGV4XSxcbiAgICAgICAgICAgIHBvc2l0aW9uSW5kZXhlcyxcbiAgICAgICAgICAgIHBvc2l0aW9uOiBwMSxcbiAgICAgICAgICB9LFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBoYW5kbGVTdG9wRHJhZ2dpbmcoZXZlbnQ6IFN0b3BEcmFnZ2luZ0V2ZW50LCBwcm9wczogTW9kZVByb3BzPEZlYXR1cmVDb2xsZWN0aW9uPikge1xuICAgIGNvbnN0IHNlbGVjdGVkRmVhdHVyZUluZGV4ZXMgPSBwcm9wcy5zZWxlY3RlZEluZGV4ZXM7XG4gICAgY29uc3QgZWRpdEhhbmRsZSA9IGdldFBpY2tlZEVkaXRIYW5kbGUoZXZlbnQucG9pbnRlckRvd25QaWNrcyk7XG4gICAgaWYgKHNlbGVjdGVkRmVhdHVyZUluZGV4ZXMubGVuZ3RoICYmIGVkaXRIYW5kbGUpIHtcbiAgICAgIGNvbnN0IHsgZmVhdHVyZUluZGV4IH0gPSBlZGl0SGFuZGxlLnByb3BlcnRpZXM7XG4gICAgICBsZXQgeyBwb3NpdGlvbkluZGV4ZXMgfSA9IGVkaXRIYW5kbGUucHJvcGVydGllcztcblxuICAgICAgY29uc3Qgc2l6ZSA9IHRoaXMuY29vcmRpbmF0ZXNTaXplKHBvc2l0aW9uSW5kZXhlcywgZmVhdHVyZUluZGV4LCBwcm9wcy5kYXRhKTtcbiAgICAgIHBvc2l0aW9uSW5kZXhlcyA9IHRoaXMuaXNQb2ludEFkZGVkXG4gICAgICAgID8gdGhpcy5uZXh0UG9zaXRpb25JbmRleGVzKHBvc2l0aW9uSW5kZXhlcywgc2l6ZSlcbiAgICAgICAgOiBwb3NpdGlvbkluZGV4ZXM7XG4gICAgICAvLyBwMSBhbmQgcDEgYXJlIGVuZCBwb2ludHMgZm9yIGVkZ2VcbiAgICAgIGNvbnN0IHAxID0gdGhpcy5nZXRQb2ludEZvclBvc2l0aW9uSW5kZXhlcyhcbiAgICAgICAgdGhpcy5wcmV2UG9zaXRpb25JbmRleGVzKHBvc2l0aW9uSW5kZXhlcywgc2l6ZSksXG4gICAgICAgIGZlYXR1cmVJbmRleCxcbiAgICAgICAgcHJvcHMuZGF0YVxuICAgICAgKTtcbiAgICAgIGNvbnN0IHAyID0gdGhpcy5nZXRQb2ludEZvclBvc2l0aW9uSW5kZXhlcyhwb3NpdGlvbkluZGV4ZXMsIGZlYXR1cmVJbmRleCwgcHJvcHMuZGF0YSk7XG5cbiAgICAgIGlmIChwMSAmJiBwMikge1xuICAgICAgICAvLyBwMyBhbmQgcDQgYXJlIGVuZCBwb2ludHMgZm9yIG5ldyBtb3ZlZCAoZXh0cnVkZWQpIGVkZ2VcbiAgICAgICAgY29uc3QgW3AzLCBwNF0gPSBnZW5lcmF0ZVBvaW50c1BhcmFsbGVsVG9MaW5lUG9pbnRzKHAxLCBwMiwgZXZlbnQubWFwQ29vcmRzKTtcblxuICAgICAgICBjb25zdCB1cGRhdGVkRGF0YSA9IG5ldyBJbW11dGFibGVGZWF0dXJlQ29sbGVjdGlvbihwcm9wcy5kYXRhKVxuICAgICAgICAgIC5yZXBsYWNlUG9zaXRpb24oZmVhdHVyZUluZGV4LCB0aGlzLnByZXZQb3NpdGlvbkluZGV4ZXMocG9zaXRpb25JbmRleGVzLCBzaXplKSwgcDQpXG4gICAgICAgICAgLnJlcGxhY2VQb3NpdGlvbihmZWF0dXJlSW5kZXgsIHBvc2l0aW9uSW5kZXhlcywgcDMpXG4gICAgICAgICAgLmdldE9iamVjdCgpO1xuXG4gICAgICAgIHByb3BzLm9uRWRpdCh7XG4gICAgICAgICAgdXBkYXRlZERhdGEsXG4gICAgICAgICAgZWRpdFR5cGU6ICdleHRydWRlZCcsXG4gICAgICAgICAgZWRpdENvbnRleHQ6IHtcbiAgICAgICAgICAgIGZlYXR1cmVJbmRleGVzOiBbZmVhdHVyZUluZGV4XSxcbiAgICAgICAgICAgIHBvc2l0aW9uSW5kZXhlcyxcbiAgICAgICAgICAgIHBvc2l0aW9uOiBwMyxcbiAgICAgICAgICB9LFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5pc1BvaW50QWRkZWQgPSBmYWxzZTtcbiAgfVxuXG4gIGNvb3JkaW5hdGVzU2l6ZShcbiAgICBwb3NpdGlvbkluZGV4ZXM6IG51bWJlcltdIHwgbnVsbCB8IHVuZGVmaW5lZCxcbiAgICBmZWF0dXJlSW5kZXg6IG51bWJlcixcbiAgICB7IGZlYXR1cmVzIH06IEZlYXR1cmVDb2xsZWN0aW9uXG4gICkge1xuICAgIGxldCBzaXplID0gMDtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShwb3NpdGlvbkluZGV4ZXMpKSB7XG4gICAgICBjb25zdCBmZWF0dXJlID0gZmVhdHVyZXNbZmVhdHVyZUluZGV4XTtcbiAgICAgIGNvbnN0IGNvb3JkaW5hdGVzOiBhbnkgPSBmZWF0dXJlLmdlb21ldHJ5LmNvb3JkaW5hdGVzO1xuICAgICAgLy8gZm9yIE11bHRpIHBvbHlnb25zLCBsZW5ndGggd2lsbCBiZSAzXG4gICAgICBpZiAocG9zaXRpb25JbmRleGVzLmxlbmd0aCA9PT0gMykge1xuICAgICAgICBjb25zdCBbYSwgYl0gPSBwb3NpdGlvbkluZGV4ZXM7XG4gICAgICAgIGlmIChjb29yZGluYXRlcy5sZW5ndGggJiYgY29vcmRpbmF0ZXNbYV0ubGVuZ3RoKSB7XG4gICAgICAgICAgc2l6ZSA9IGNvb3JkaW5hdGVzW2FdW2JdLmxlbmd0aDtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgW2JdID0gcG9zaXRpb25JbmRleGVzO1xuICAgICAgICBpZiAoY29vcmRpbmF0ZXMubGVuZ3RoICYmIGNvb3JkaW5hdGVzW2JdLmxlbmd0aCkge1xuICAgICAgICAgIHNpemUgPSBjb29yZGluYXRlc1tiXS5sZW5ndGg7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHNpemU7XG4gIH1cblxuICBnZXRCZWFyaW5nKHAxOiBhbnksIHAyOiBhbnkpIHtcbiAgICBjb25zdCBhbmdsZSA9IGJlYXJpbmcocDEsIHAyKTtcbiAgICBpZiAoYW5nbGUgPCAwKSB7XG4gICAgICByZXR1cm4gTWF0aC5mbG9vcigzNjAgKyBhbmdsZSk7XG4gICAgfVxuICAgIHJldHVybiBNYXRoLmZsb29yKGFuZ2xlKTtcbiAgfVxuXG4gIGlzT3J0aG9nb25hbChcbiAgICBwb3NpdGlvbkluZGV4ZXM6IG51bWJlcltdIHwgbnVsbCB8IHVuZGVmaW5lZCxcbiAgICBmZWF0dXJlSW5kZXg6IG51bWJlcixcbiAgICBzaXplOiBudW1iZXIsXG4gICAgZmVhdHVyZXM6IEZlYXR1cmVDb2xsZWN0aW9uXG4gICkge1xuICAgIGlmICghQXJyYXkuaXNBcnJheShwb3NpdGlvbkluZGV4ZXMpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGlmIChwb3NpdGlvbkluZGV4ZXNbcG9zaXRpb25JbmRleGVzLmxlbmd0aCAtIDFdID09PSBzaXplIC0gMSkge1xuICAgICAgcG9zaXRpb25JbmRleGVzW3Bvc2l0aW9uSW5kZXhlcy5sZW5ndGggLSAxXSA9IDA7XG4gICAgfVxuICAgIGNvbnN0IHByZXZQb2ludCA9IHRoaXMuZ2V0UG9pbnRGb3JQb3NpdGlvbkluZGV4ZXMoXG4gICAgICB0aGlzLnByZXZQb3NpdGlvbkluZGV4ZXMocG9zaXRpb25JbmRleGVzLCBzaXplKSxcbiAgICAgIGZlYXR1cmVJbmRleCxcbiAgICAgIGZlYXR1cmVzXG4gICAgKTtcbiAgICBjb25zdCBuZXh0UG9pbnQgPSB0aGlzLmdldFBvaW50Rm9yUG9zaXRpb25JbmRleGVzKFxuICAgICAgdGhpcy5uZXh0UG9zaXRpb25JbmRleGVzKHBvc2l0aW9uSW5kZXhlcywgc2l6ZSksXG4gICAgICBmZWF0dXJlSW5kZXgsXG4gICAgICBmZWF0dXJlc1xuICAgICk7XG4gICAgY29uc3QgY3VycmVudFBvaW50ID0gdGhpcy5nZXRQb2ludEZvclBvc2l0aW9uSW5kZXhlcyhwb3NpdGlvbkluZGV4ZXMsIGZlYXR1cmVJbmRleCwgZmVhdHVyZXMpO1xuICAgIGNvbnN0IHByZXZBbmdsZSA9IHRoaXMuZ2V0QmVhcmluZyhjdXJyZW50UG9pbnQsIHByZXZQb2ludCk7XG4gICAgY29uc3QgbmV4dEFuZ2xlID0gdGhpcy5nZXRCZWFyaW5nKGN1cnJlbnRQb2ludCwgbmV4dFBvaW50KTtcbiAgICByZXR1cm4gWzg5LCA5MCwgOTEsIDI2OSwgMjcwLCAyNzFdLmluY2x1ZGVzKE1hdGguYWJzKHByZXZBbmdsZSAtIG5leHRBbmdsZSkpO1xuICB9XG5cbiAgbmV4dFBvc2l0aW9uSW5kZXhlcyhwb3NpdGlvbkluZGV4ZXM6IG51bWJlcltdIHwgbnVsbCB8IHVuZGVmaW5lZCwgc2l6ZTogbnVtYmVyKTogbnVtYmVyW10ge1xuICAgIGlmICghQXJyYXkuaXNBcnJheShwb3NpdGlvbkluZGV4ZXMpKSB7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuICAgIGNvbnN0IG5leHQgPSBbLi4ucG9zaXRpb25JbmRleGVzXTtcbiAgICBpZiAobmV4dC5sZW5ndGgpIHtcbiAgICAgIG5leHRbbmV4dC5sZW5ndGggLSAxXSA9IG5leHRbbmV4dC5sZW5ndGggLSAxXSA9PT0gc2l6ZSAtIDEgPyAwIDogbmV4dFtuZXh0Lmxlbmd0aCAtIDFdICsgMTtcbiAgICB9XG4gICAgcmV0dXJuIG5leHQ7XG4gIH1cblxuICBwcmV2UG9zaXRpb25JbmRleGVzKHBvc2l0aW9uSW5kZXhlczogbnVtYmVyW10gfCBudWxsIHwgdW5kZWZpbmVkLCBzaXplOiBudW1iZXIpOiBudW1iZXJbXSB7XG4gICAgaWYgKCFBcnJheS5pc0FycmF5KHBvc2l0aW9uSW5kZXhlcykpIHtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG4gICAgY29uc3QgcHJldiA9IFsuLi5wb3NpdGlvbkluZGV4ZXNdO1xuICAgIGlmIChwcmV2Lmxlbmd0aCkge1xuICAgICAgcHJldltwcmV2Lmxlbmd0aCAtIDFdID0gcHJldltwcmV2Lmxlbmd0aCAtIDFdID09PSAwID8gc2l6ZSAtIDIgOiBwcmV2W3ByZXYubGVuZ3RoIC0gMV0gLSAxO1xuICAgIH1cbiAgICByZXR1cm4gcHJldjtcbiAgfVxuXG4gIGdldFBvaW50Rm9yUG9zaXRpb25JbmRleGVzKFxuICAgIHBvc2l0aW9uSW5kZXhlczogbnVtYmVyW10gfCBudWxsIHwgdW5kZWZpbmVkLFxuICAgIGZlYXR1cmVJbmRleDogbnVtYmVyLFxuICAgIHsgZmVhdHVyZXMgfTogRmVhdHVyZUNvbGxlY3Rpb25cbiAgKSB7XG4gICAgbGV0IHAxO1xuICAgIGlmIChBcnJheS5pc0FycmF5KHBvc2l0aW9uSW5kZXhlcykpIHtcbiAgICAgIGNvbnN0IGZlYXR1cmUgPSBmZWF0dXJlc1tmZWF0dXJlSW5kZXhdO1xuICAgICAgY29uc3QgY29vcmRpbmF0ZXM6IGFueSA9IGZlYXR1cmUuZ2VvbWV0cnkuY29vcmRpbmF0ZXM7XG4gICAgICAvLyBmb3IgTXVsdGkgcG9seWdvbnMsIGxlbmd0aCB3aWxsIGJlIDNcbiAgICAgIGlmIChwb3NpdGlvbkluZGV4ZXMubGVuZ3RoID09PSAzKSB7XG4gICAgICAgIGNvbnN0IFthLCBiLCBjXSA9IHBvc2l0aW9uSW5kZXhlcztcbiAgICAgICAgaWYgKGNvb3JkaW5hdGVzLmxlbmd0aCAmJiBjb29yZGluYXRlc1thXS5sZW5ndGgpIHtcbiAgICAgICAgICBwMSA9IGNvb3JkaW5hdGVzW2FdW2JdW2NdO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBbYiwgY10gPSBwb3NpdGlvbkluZGV4ZXM7XG4gICAgICAgIGlmIChjb29yZGluYXRlcy5sZW5ndGggJiYgY29vcmRpbmF0ZXNbYl0ubGVuZ3RoKSB7XG4gICAgICAgICAgcDEgPSBjb29yZGluYXRlc1tiXVtjXTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcDE7XG4gIH1cbn1cbiJdfQ==","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.getIntermediatePosition = getIntermediatePosition;\nexports.GeoJsonEditMode = void 0;\n\nvar _union = _interopRequireDefault(require(\"@turf/union\"));\n\nvar _difference = _interopRequireDefault(require(\"@turf/difference\"));\n\nvar _intersect = _interopRequireDefault(require(\"@turf/intersect\"));\n\nvar _rewind = _interopRequireDefault(require(\"@turf/rewind\"));\n\nvar _utils = require(\"../utils\");\n\nvar _immutableFeatureCollection = require(\"./immutable-feature-collection\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _createForOfIteratorHelper(o) { if (typeof Symbol === \"undefined\" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (o = _unsupportedIterableToArray(o))) { var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var it, normalCompletion = true, didErr = false, err; return { s: function s() { it = o[Symbol.iterator](); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it[\"return\"] != null) it[\"return\"](); } finally { if (didErr) throw err; } } }; }\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(n); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar DEFAULT_GUIDES = {\n  type: 'FeatureCollection',\n  features: []\n};\nvar DEFAULT_TOOLTIPS = []; // Main interface for `EditMode`s that edit GeoJSON\n\nvar GeoJsonEditMode = /*#__PURE__*/function () {\n  function GeoJsonEditMode() {\n    _classCallCheck(this, GeoJsonEditMode);\n\n    _defineProperty(this, \"_clickSequence\", []);\n  }\n\n  _createClass(GeoJsonEditMode, [{\n    key: \"getGuides\",\n    value: function getGuides(props) {\n      return DEFAULT_GUIDES;\n    }\n  }, {\n    key: \"getTooltips\",\n    value: function getTooltips(props) {\n      return DEFAULT_TOOLTIPS;\n    }\n  }, {\n    key: \"getSelectedFeature\",\n    value: function getSelectedFeature(props) {\n      if (props.selectedIndexes.length === 1) {\n        return props.data.features[props.selectedIndexes[0]];\n      }\n\n      return null;\n    }\n  }, {\n    key: \"getSelectedGeometry\",\n    value: function getSelectedGeometry(props) {\n      var feature = this.getSelectedFeature(props);\n\n      if (feature) {\n        return feature.geometry;\n      }\n\n      return null;\n    }\n  }, {\n    key: \"getSelectedFeaturesAsFeatureCollection\",\n    value: function getSelectedFeaturesAsFeatureCollection(props) {\n      var features = props.data.features;\n      var selectedFeatures = props.selectedIndexes.map(function (selectedIndex) {\n        return features[selectedIndex];\n      });\n      return {\n        type: 'FeatureCollection',\n        features: selectedFeatures\n      };\n    }\n  }, {\n    key: \"getClickSequence\",\n    value: function getClickSequence() {\n      return this._clickSequence;\n    }\n  }, {\n    key: \"addClickSequence\",\n    value: function addClickSequence(_ref) {\n      var mapCoords = _ref.mapCoords;\n\n      this._clickSequence.push(mapCoords);\n    }\n  }, {\n    key: \"resetClickSequence\",\n    value: function resetClickSequence() {\n      this._clickSequence = [];\n    }\n  }, {\n    key: \"getTentativeGuide\",\n    value: function getTentativeGuide(props) {\n      var guides = this.getGuides(props); // @ts-ignore\n\n      return guides.features.find(function (f) {\n        return f.properties && f.properties.guideType === 'tentative';\n      });\n    }\n  }, {\n    key: \"isSelectionPicked\",\n    value: function isSelectionPicked(picks, props) {\n      if (!picks.length) return false;\n      var pickedFeatures = (0, _utils.getNonGuidePicks)(picks).map(function (_ref2) {\n        var index = _ref2.index;\n        return index;\n      });\n      var pickedHandles = (0, _utils.getPickedEditHandles)(picks).map(function (_ref3) {\n        var properties = _ref3.properties;\n        return properties.featureIndex;\n      });\n      var pickedIndexes = new Set([].concat(_toConsumableArray(pickedFeatures), _toConsumableArray(pickedHandles)));\n      return props.selectedIndexes.some(function (index) {\n        return pickedIndexes.has(index);\n      });\n    }\n  }, {\n    key: \"rewindPolygon\",\n    value: function rewindPolygon(feature) {\n      var geometry = feature.geometry;\n      var isPolygonal = geometry.type === 'Polygon' || geometry.type === 'MultiPolygon';\n\n      if (isPolygonal) {\n        // @ts-ignore\n        return (0, _rewind[\"default\"])(feature);\n      }\n\n      return feature;\n    }\n  }, {\n    key: \"getAddFeatureAction\",\n    value: function getAddFeatureAction(featureOrGeometry, features) {\n      // Unsure why flow can't deal with Geometry type, but there I fixed it\n      var featureOrGeometryAsAny = featureOrGeometry;\n      var feature = featureOrGeometryAsAny.type === 'Feature' ? featureOrGeometryAsAny : {\n        type: 'Feature',\n        properties: {},\n        geometry: featureOrGeometryAsAny\n      };\n      var rewindFeature = this.rewindPolygon(feature);\n      var updatedData = new _immutableFeatureCollection.ImmutableFeatureCollection(features).addFeature(rewindFeature).getObject();\n      return {\n        updatedData: updatedData,\n        editType: 'addFeature',\n        editContext: {\n          featureIndexes: [updatedData.features.length - 1]\n        }\n      };\n    }\n  }, {\n    key: \"getAddManyFeaturesAction\",\n    value: function getAddManyFeaturesAction(_ref4, features) {\n      var featuresToAdd = _ref4.features;\n      var updatedData = new _immutableFeatureCollection.ImmutableFeatureCollection(features);\n      var initialIndex = updatedData.getObject().features.length;\n      var updatedIndexes = [];\n\n      var _iterator = _createForOfIteratorHelper(featuresToAdd),\n          _step;\n\n      try {\n        for (_iterator.s(); !(_step = _iterator.n()).done;) {\n          var feature = _step.value;\n          var properties = feature.properties,\n              geometry = feature.geometry;\n          var geometryAsAny = geometry;\n          updatedData = updatedData.addFeature({\n            type: 'Feature',\n            properties: properties,\n            geometry: geometryAsAny\n          });\n          updatedIndexes.push(initialIndex + updatedIndexes.length);\n        }\n      } catch (err) {\n        _iterator.e(err);\n      } finally {\n        _iterator.f();\n      }\n\n      return {\n        updatedData: updatedData.getObject(),\n        editType: 'addFeature',\n        editContext: {\n          featureIndexes: updatedIndexes\n        }\n      };\n    }\n  }, {\n    key: \"getAddFeatureOrBooleanPolygonAction\",\n    value: function getAddFeatureOrBooleanPolygonAction(featureOrGeometry, props) {\n      var featureOrGeometryAsAny = featureOrGeometry;\n      var selectedFeature = this.getSelectedFeature(props);\n      var modeConfig = props.modeConfig;\n\n      if (modeConfig && modeConfig.booleanOperation) {\n        if (!selectedFeature || selectedFeature.geometry.type !== 'Polygon' && selectedFeature.geometry.type !== 'MultiPolygon') {\n          // eslint-disable-next-line no-console,no-undef\n          console.warn('booleanOperation only supported for single Polygon or MultiPolygon selection');\n          return null;\n        }\n\n        var feature = featureOrGeometryAsAny.type === 'Feature' ? featureOrGeometryAsAny : {\n          type: 'Feature',\n          geometry: featureOrGeometryAsAny\n        };\n        var updatedGeometry;\n\n        if (modeConfig.booleanOperation === 'union') {\n          updatedGeometry = (0, _union[\"default\"])(selectedFeature, feature);\n        } else if (modeConfig.booleanOperation === 'difference') {\n          // @ts-ignore\n          updatedGeometry = (0, _difference[\"default\"])(selectedFeature, feature);\n        } else if (modeConfig.booleanOperation === 'intersection') {\n          // @ts-ignore\n          updatedGeometry = (0, _intersect[\"default\"])(selectedFeature, feature);\n        } else {\n          // eslint-disable-next-line no-console,no-undef\n          console.warn(\"Invalid booleanOperation \".concat(modeConfig.booleanOperation));\n          return null;\n        }\n\n        if (!updatedGeometry) {\n          // eslint-disable-next-line no-console,no-undef\n          console.warn('Canceling edit. Boolean operation erased entire polygon.');\n          return null;\n        }\n\n        var featureIndex = props.selectedIndexes[0];\n        var updatedData = new _immutableFeatureCollection.ImmutableFeatureCollection(props.data).replaceGeometry(featureIndex, updatedGeometry.geometry).getObject();\n        var editAction = {\n          updatedData: updatedData,\n          editType: 'unionGeometry',\n          editContext: {\n            featureIndexes: [featureIndex]\n          }\n        };\n        return editAction;\n      }\n\n      return this.getAddFeatureAction(featureOrGeometry, props.data);\n    }\n  }, {\n    key: \"createTentativeFeature\",\n    value: function createTentativeFeature(props) {\n      return null;\n    }\n  }, {\n    key: \"handleClick\",\n    value: function handleClick(event, props) {}\n  }, {\n    key: \"handlePointerMove\",\n    value: function handlePointerMove(event, props) {\n      var tentativeFeature = this.createTentativeFeature(props);\n\n      if (tentativeFeature) {\n        props.onEdit({\n          updatedData: props.data,\n          editType: 'updateTentativeFeature',\n          editContext: {\n            feature: tentativeFeature\n          }\n        });\n      }\n    }\n  }, {\n    key: \"handleStartDragging\",\n    value: function handleStartDragging(event, props) {}\n  }, {\n    key: \"handleStopDragging\",\n    value: function handleStopDragging(event, props) {}\n  }, {\n    key: \"handleDragging\",\n    value: function handleDragging(event, props) {}\n  }, {\n    key: \"handleKeyUp\",\n    value: function handleKeyUp(event, props) {\n      if (event.key === 'Escape') {\n        this.resetClickSequence();\n        props.onEdit({\n          // Because the new drawing feature is dropped, so the data will keep as the same.\n          updatedData: props.data,\n          editType: 'cancelFeature',\n          editContext: {}\n        });\n      }\n    }\n  }]);\n\n  return GeoJsonEditMode;\n}();\n\nexports.GeoJsonEditMode = GeoJsonEditMode;\n\nfunction getIntermediatePosition(position1, position2) {\n  var intermediatePosition = [(position1[0] + position2[0]) / 2.0, (position1[1] + position2[1]) / 2.0]; // @ts-ignore\n\n  return intermediatePosition;\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvZ2VvanNvbi1lZGl0LW1vZGUudHMiXSwibmFtZXMiOlsiREVGQVVMVF9HVUlERVMiLCJ0eXBlIiwiZmVhdHVyZXMiLCJERUZBVUxUX1RPT0xUSVBTIiwiR2VvSnNvbkVkaXRNb2RlIiwicHJvcHMiLCJzZWxlY3RlZEluZGV4ZXMiLCJsZW5ndGgiLCJkYXRhIiwiZmVhdHVyZSIsImdldFNlbGVjdGVkRmVhdHVyZSIsImdlb21ldHJ5Iiwic2VsZWN0ZWRGZWF0dXJlcyIsIm1hcCIsInNlbGVjdGVkSW5kZXgiLCJfY2xpY2tTZXF1ZW5jZSIsIm1hcENvb3JkcyIsInB1c2giLCJndWlkZXMiLCJnZXRHdWlkZXMiLCJmaW5kIiwiZiIsInByb3BlcnRpZXMiLCJndWlkZVR5cGUiLCJwaWNrcyIsInBpY2tlZEZlYXR1cmVzIiwiaW5kZXgiLCJwaWNrZWRIYW5kbGVzIiwiZmVhdHVyZUluZGV4IiwicGlja2VkSW5kZXhlcyIsIlNldCIsInNvbWUiLCJoYXMiLCJpc1BvbHlnb25hbCIsImZlYXR1cmVPckdlb21ldHJ5IiwiZmVhdHVyZU9yR2VvbWV0cnlBc0FueSIsInJld2luZEZlYXR1cmUiLCJyZXdpbmRQb2x5Z29uIiwidXBkYXRlZERhdGEiLCJJbW11dGFibGVGZWF0dXJlQ29sbGVjdGlvbiIsImFkZEZlYXR1cmUiLCJnZXRPYmplY3QiLCJlZGl0VHlwZSIsImVkaXRDb250ZXh0IiwiZmVhdHVyZUluZGV4ZXMiLCJmZWF0dXJlc1RvQWRkIiwiaW5pdGlhbEluZGV4IiwidXBkYXRlZEluZGV4ZXMiLCJnZW9tZXRyeUFzQW55Iiwic2VsZWN0ZWRGZWF0dXJlIiwibW9kZUNvbmZpZyIsImJvb2xlYW5PcGVyYXRpb24iLCJjb25zb2xlIiwid2FybiIsInVwZGF0ZWRHZW9tZXRyeSIsInJlcGxhY2VHZW9tZXRyeSIsImVkaXRBY3Rpb24iLCJnZXRBZGRGZWF0dXJlQWN0aW9uIiwiZXZlbnQiLCJ0ZW50YXRpdmVGZWF0dXJlIiwiY3JlYXRlVGVudGF0aXZlRmVhdHVyZSIsIm9uRWRpdCIsImtleSIsInJlc2V0Q2xpY2tTZXF1ZW5jZSIsImdldEludGVybWVkaWF0ZVBvc2l0aW9uIiwicG9zaXRpb24xIiwicG9zaXRpb24yIiwiaW50ZXJtZWRpYXRlUG9zaXRpb24iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBZ0JBOztBQUVBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUlBLElBQU1BLGNBQXNDLEdBQUc7QUFDN0NDLEVBQUFBLElBQUksRUFBRSxtQkFEdUM7QUFFN0NDLEVBQUFBLFFBQVEsRUFBRTtBQUZtQyxDQUEvQztBQUlBLElBQU1DLGdCQUEyQixHQUFHLEVBQXBDLEMsQ0FFQTs7SUFPYUMsZTs7Ozs0Q0FDa0IsRTs7Ozs7OEJBRW5CQyxLLEVBQTZEO0FBQ3JFLGFBQU9MLGNBQVA7QUFDRDs7O2dDQUVXSyxLLEVBQWdEO0FBQzFELGFBQU9GLGdCQUFQO0FBQ0Q7Ozt1Q0FFa0JFLEssRUFBaUU7QUFDbEYsVUFBSUEsS0FBSyxDQUFDQyxlQUFOLENBQXNCQyxNQUF0QixLQUFpQyxDQUFyQyxFQUF3QztBQUN0QyxlQUFPRixLQUFLLENBQUNHLElBQU4sQ0FBV04sUUFBWCxDQUFvQkcsS0FBSyxDQUFDQyxlQUFOLENBQXNCLENBQXRCLENBQXBCLENBQVA7QUFDRDs7QUFDRCxhQUFPLElBQVA7QUFDRDs7O3dDQUVtQkQsSyxFQUFrRTtBQUNwRixVQUFNSSxPQUFPLEdBQUcsS0FBS0Msa0JBQUwsQ0FBd0JMLEtBQXhCLENBQWhCOztBQUNBLFVBQUlJLE9BQUosRUFBYTtBQUNYLGVBQU9BLE9BQU8sQ0FBQ0UsUUFBZjtBQUNEOztBQUNELGFBQU8sSUFBUDtBQUNEOzs7MkRBRXNDTixLLEVBQXdEO0FBQUEsVUFDckZILFFBRHFGLEdBQ3hFRyxLQUFLLENBQUNHLElBRGtFLENBQ3JGTixRQURxRjtBQUU3RixVQUFNVSxnQkFBZ0IsR0FBR1AsS0FBSyxDQUFDQyxlQUFOLENBQXNCTyxHQUF0QixDQUEwQixV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SyxFQUEyQyxDQUFFOzs7dUNBQ3pFcUQsSyxFQUEwQnJELEssRUFBMkMsQ0FBRTs7O21DQUMzRXFELEssRUFBc0JyRCxLLEVBQTJDLENBQUU7OztnQ0FFdEVxRCxLLEVBQXNCckQsSyxFQUEyQztBQUMzRSxVQUFJcUQsS0FBSyxDQUFDSSxHQUFOLEtBQWMsUUFBbEIsRUFBNEI7QUFDMUIsYUFBS0Msa0JBQUw7QUFDQTFELFFBQUFBLEtBQUssQ0FBQ3dELE1BQU4sQ0FBYTtBQUNYO0FBQ0F2QixVQUFBQSxXQUFXLEVBQUVqQyxLQUFLLENBQUNHLElBRlI7QUFHWGtDLFVBQUFBLFFBQVEsRUFBRSxlQUhDO0FBSVhDLFVBQUFBLFdBQVcsRUFBRTtBQUpGLFNBQWI7QUFNRDtBQUNGOzs7Ozs7OztBQUdJLFNBQVNxQix1QkFBVCxDQUFpQ0MsU0FBakMsRUFBc0RDLFNBQXRELEVBQXFGO0FBQzFGLE1BQU1DLG9CQUFvQixHQUFHLENBQzNCLENBQUNGLFNBQVMsQ0FBQyxDQUFELENBQVQsR0FBZUMsU0FBUyxDQUFDLENBQUQsQ0FBekIsSUFBZ0MsR0FETCxFQUUzQixDQUFDRCxTQUFTLENBQUMsQ0FBRCxDQUFULEdBQWVDLFNBQVMsQ0FBQyxDQUFELENBQXpCLElBQWdDLEdBRkwsQ0FBN0IsQ0FEMEYsQ0FLMUY7O0FBQ0EsU0FBT0Msb0JBQVA7QUFDRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0dXJmVW5pb24gZnJvbSAnQHR1cmYvdW5pb24nO1xuaW1wb3J0IHR1cmZEaWZmZXJlbmNlIGZyb20gJ0B0dXJmL2RpZmZlcmVuY2UnO1xuaW1wb3J0IHR1cmZJbnRlcnNlY3QgZnJvbSAnQHR1cmYvaW50ZXJzZWN0JztcbmltcG9ydCByZXdpbmQgZnJvbSAnQHR1cmYvcmV3aW5kJztcblxuaW1wb3J0IHtcbiAgRWRpdEFjdGlvbixcbiAgQ2xpY2tFdmVudCxcbiAgUG9pbnRlck1vdmVFdmVudCxcbiAgU3RhcnREcmFnZ2luZ0V2ZW50LFxuICBTdG9wRHJhZ2dpbmdFdmVudCxcbiAgRHJhZ2dpbmdFdmVudCxcbiAgUGljayxcbiAgVG9vbHRpcCxcbiAgTW9kZVByb3BzLFxuICBHdWlkZUZlYXR1cmVDb2xsZWN0aW9uLFxuICBUZW50YXRpdmVGZWF0dXJlLFxufSBmcm9tICcuLi90eXBlcyc7XG5pbXBvcnQgeyBGZWF0dXJlQ29sbGVjdGlvbiwgRmVhdHVyZSwgUG9seWdvbiwgR2VvbWV0cnksIFBvc2l0aW9uIH0gZnJvbSAnLi4vZ2VvanNvbi10eXBlcyc7XG5pbXBvcnQgeyBnZXRQaWNrZWRFZGl0SGFuZGxlcywgZ2V0Tm9uR3VpZGVQaWNrcyB9IGZyb20gJy4uL3V0aWxzJztcbmltcG9ydCB7IEVkaXRNb2RlIH0gZnJvbSAnLi9lZGl0LW1vZGUnO1xuaW1wb3J0IHsgSW1tdXRhYmxlRmVhdHVyZUNvbGxlY3Rpb24gfSBmcm9tICcuL2ltbXV0YWJsZS1mZWF0dXJlLWNvbGxlY3Rpb24nO1xuXG5leHBvcnQgdHlwZSBHZW9Kc29uRWRpdEFjdGlvbiA9IEVkaXRBY3Rpb248RmVhdHVyZUNvbGxlY3Rpb24+O1xuXG5jb25zdCBERUZBVUxUX0dVSURFUzogR3VpZGVGZWF0dXJlQ29sbGVjdGlvbiA9IHtcbiAgdHlwZTogJ0ZlYXR1cmVDb2xsZWN0aW9uJyxcbiAgZmVhdHVyZXM6IFtdLFxufTtcbmNvbnN0IERFRkFVTFRfVE9PTFRJUFM6IFRvb2x0aXBbXSA9IFtdO1xuXG4vLyBNYWluIGludGVyZmFjZSBmb3IgYEVkaXRNb2RlYHMgdGhhdCBlZGl0IEdlb0pTT05cbmV4cG9ydCB0eXBlIEdlb0pzb25FZGl0TW9kZVR5cGUgPSBFZGl0TW9kZTxGZWF0dXJlQ29sbGVjdGlvbiwgRmVhdHVyZUNvbGxlY3Rpb24+O1xuXG5leHBvcnQgaW50ZXJmYWNlIEdlb0pzb25FZGl0TW9kZUNvbnN0cnVjdG9yIHtcbiAgbmV3ICgpOiBHZW9Kc29uRWRpdE1vZGVUeXBlO1xufVxuXG5leHBvcnQgY2xhc3MgR2VvSnNvbkVkaXRNb2RlIGltcGxlbWVudHMgRWRpdE1vZGU8RmVhdHVyZUNvbGxlY3Rpb24sIEd1aWRlRmVhdHVyZUNvbGxlY3Rpb24+IHtcbiAgX2NsaWNrU2VxdWVuY2U6IFBvc2l0aW9uW10gPSBbXTtcblxuICBnZXRHdWlkZXMocHJvcHM6IE1vZGVQcm9wczxGZWF0dXJlQ29sbGVjdGlvbj4pOiBHdWlkZUZlYXR1cmVDb2xsZWN0aW9uIHtcbiAgICByZXR1cm4gREVGQVVMVF9HVUlERVM7XG4gIH1cblxuICBnZXRUb29sdGlwcyhwcm9wczogTW9kZVByb3BzPEZlYXR1cmVDb2xsZWN0aW9uPik6IFRvb2x0aXBbXSB7XG4gICAgcmV0dXJuIERFRkFVTFRfVE9PTFRJUFM7XG4gIH1cblxuICBnZXRTZWxlY3RlZEZlYXR1cmUocHJvcHM6IE1vZGVQcm9wczxGZWF0dXJlQ29sbGVjdGlvbj4pOiBGZWF0dXJlIHwgbnVsbCB8IHVuZGVmaW5lZCB7XG4gICAgaWYgKHByb3BzLnNlbGVjdGVkSW5kZXhlcy5sZW5ndGggPT09IDEpIHtcbiAgICAgIHJldHVybiBwcm9wcy5kYXRhLmZlYXR1cmVzW3Byb3BzLnNlbGVjdGVkSW5kZXhlc1swXV07XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgZ2V0U2VsZWN0ZWRHZW9tZXRyeShwcm9wczogTW9kZVByb3BzPEZlYXR1cmVDb2xsZWN0aW9uPik6IEdlb21ldHJ5IHwgbnVsbCB8IHVuZGVmaW5lZCB7XG4gICAgY29uc3QgZmVhdHVyZSA9IHRoaXMuZ2V0U2VsZWN0ZWRGZWF0dXJlKHByb3BzKTtcbiAgICBpZiAoZmVhdHVyZSkge1xuICAgICAgcmV0dXJuIGZlYXR1cmUuZ2VvbWV0cnk7XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgZ2V0U2VsZWN0ZWRGZWF0dXJlc0FzRmVhdHVyZUNvbGxlY3Rpb24ocHJvcHM6IE1vZGVQcm9wczxGZWF0dXJlQ29sbGVjdGlvbj4pOiBGZWF0dXJlQ29sbGVjdGlvbiB7XG4gICAgY29uc3QgeyBmZWF0dXJlcyB9ID0gcHJvcHMuZGF0YTtcbiAgICBjb25zdCBzZWxlY3RlZEZlYXR1cmVzID0gcHJvcHMuc2VsZWN0ZWRJbmRleGVzLm1hcCgoc2VsZWN0ZWRJbmRleCkgPT4gZmVhdHVyZXNbc2VsZWN0ZWRJbmRleF0pO1xuICAgIHJldHVybiB7XG4gICAgICB0eXBlOiAnRmVhdHVyZUNvbGxlY3Rpb24nLFxuICAgICAgZmVhdHVyZXM6IHNlbGVjdGVkRmVhdHVyZXMsXG4gICAgfTtcbiAgfVxuXG4gIGdldENsaWNrU2VxdWVuY2UoKTogUG9zaXRpb25bXSB7XG4gICAgcmV0dXJuIHRoaXMuX2NsaWNrU2VxdWVuY2U7XG4gIH1cblxuICBhZGRDbGlja1NlcXVlbmNlKHsgbWFwQ29vcmRzIH06IENsaWNrRXZlbnQpOiB2b2lkIHtcbiAgICB0aGlzLl9jbGlja1NlcXVlbmNlLnB1c2gobWFwQ29vcmRzKTtcbiAgfVxuXG4gIHJlc2V0Q2xpY2tTZXF1ZW5jZSgpOiB2b2lkIHtcbiAgICB0aGlzLl9jbGlja1NlcXVlbmNlID0gW107XG4gIH1cblxuICBnZXRUZW50YXRpdmVHdWlkZShwcm9wczogTW9kZVByb3BzPEZlYXR1cmVDb2xsZWN0aW9uPik6IFRlbnRhdGl2ZUZlYXR1cmUgfCBudWxsIHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCBndWlkZXMgPSB0aGlzLmdldEd1aWRlcyhwcm9wcyk7XG5cbiAgICAvLyBAdHMtaWdub3JlXG4gICAgcmV0dXJuIGd1aWRlcy5mZWF0dXJlcy5maW5kKChmKSA9PiBmLnByb3BlcnRpZXMgJiYgZi5wcm9wZXJ0aWVzLmd1aWRlVHlwZSA9PT0gJ3RlbnRhdGl2ZScpO1xuICB9XG5cbiAgaXNTZWxlY3Rpb25QaWNrZWQocGlja3M6IFBpY2tbXSwgcHJvcHM6IE1vZGVQcm9wczxGZWF0dXJlQ29sbGVjdGlvbj4pOiBib29sZWFuIHtcbiAgICBpZiAoIXBpY2tzLmxlbmd0aCkgcmV0dXJuIGZhbHNlO1xuICAgIGNvbnN0IHBpY2tlZEZlYXR1cmVzID0gZ2V0Tm9uR3VpZGVQaWNrcyhwaWNrcykubWFwKCh7IGluZGV4IH0pID0+IGluZGV4KTtcbiAgICBjb25zdCBwaWNrZWRIYW5kbGVzID0gZ2V0UGlja2VkRWRpdEhhbmRsZXMocGlja3MpLm1hcChcbiAgICAgICh7IHByb3BlcnRpZXMgfSkgPT4gcHJvcGVydGllcy5mZWF0dXJlSW5kZXhcbiAgICApO1xuICAgIGNvbnN0IHBpY2tlZEluZGV4ZXMgPSBuZXcgU2V0KFsuLi5waWNrZWRGZWF0dXJlcywgLi4ucGlja2VkSGFuZGxlc10pO1xuICAgIHJldHVybiBwcm9wcy5zZWxlY3RlZEluZGV4ZXMuc29tZSgoaW5kZXgpID0+IHBpY2tlZEluZGV4ZXMuaGFzKGluZGV4KSk7XG4gIH1cblxuICByZXdpbmRQb2x5Z29uKGZlYXR1cmU6IEZlYXR1cmUpOiBGZWF0dXJlIHtcbiAgICBjb25zdCB7IGdlb21ldHJ5IH0gPSBmZWF0dXJlO1xuXG4gICAgY29uc3QgaXNQb2x5Z29uYWwgPSBnZW9tZXRyeS50eXBlID09PSAnUG9seWdvbicgfHwgZ2VvbWV0cnkudHlwZSA9PT0gJ011bHRpUG9seWdvbic7XG4gICAgaWYgKGlzUG9seWdvbmFsKSB7XG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICByZXR1cm4gcmV3aW5kKGZlYXR1cmUpO1xuICAgIH1cblxuICAgIHJldHVybiBmZWF0dXJlO1xuICB9XG5cbiAgZ2V0QWRkRmVhdHVyZUFjdGlvbihcbiAgICBmZWF0dXJlT3JHZW9tZXRyeTogR2VvbWV0cnkgfCBGZWF0dXJlLFxuICAgIGZlYXR1cmVzOiBGZWF0dXJlQ29sbGVjdGlvblxuICApOiBHZW9Kc29uRWRpdEFjdGlvbiB7XG4gICAgLy8gVW5zdXJlIHdoeSBmbG93IGNhbid0IGRlYWwgd2l0aCBHZW9tZXRyeSB0eXBlLCBidXQgdGhlcmUgSSBmaXhlZCBpdFxuICAgIGNvbnN0IGZlYXR1cmVPckdlb21ldHJ5QXNBbnk6IGFueSA9IGZlYXR1cmVPckdlb21ldHJ5O1xuXG4gICAgY29uc3QgZmVhdHVyZTogYW55ID1cbiAgICAgIGZlYXR1cmVPckdlb21ldHJ5QXNBbnkudHlwZSA9PT0gJ0ZlYXR1cmUnXG4gICAgICAgID8gZmVhdHVyZU9yR2VvbWV0cnlBc0FueVxuICAgICAgICA6IHtcbiAgICAgICAgICAgIHR5cGU6ICdGZWF0dXJlJyxcbiAgICAgICAgICAgIHByb3BlcnRpZXM6IHt9LFxuICAgICAgICAgICAgZ2VvbWV0cnk6IGZlYXR1cmVPckdlb21ldHJ5QXNBbnksXG4gICAgICAgICAgfTtcblxuICAgIGNvbnN0IHJld2luZEZlYXR1cmUgPSB0aGlzLnJld2luZFBvbHlnb24oZmVhdHVyZSk7XG4gICAgY29uc3QgdXBkYXRlZERhdGEgPSBuZXcgSW1tdXRhYmxlRmVhdHVyZUNvbGxlY3Rpb24oZmVhdHVyZXMpXG4gICAgICAuYWRkRmVhdHVyZShyZXdpbmRGZWF0dXJlKVxuICAgICAgLmdldE9iamVjdCgpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIHVwZGF0ZWREYXRhLFxuICAgICAgZWRpdFR5cGU6ICdhZGRGZWF0dXJlJyxcbiAgICAgIGVkaXRDb250ZXh0OiB7XG4gICAgICAgIGZlYXR1cmVJbmRleGVzOiBbdXBkYXRlZERhdGEuZmVhdHVyZXMubGVuZ3RoIC0gMV0sXG4gICAgICB9LFxuICAgIH07XG4gIH1cblxuICBnZXRBZGRNYW55RmVhdHVyZXNBY3Rpb24oXG4gICAgeyBmZWF0dXJlczogZmVhdHVyZXNUb0FkZCB9OiBGZWF0dXJlQ29sbGVjdGlvbixcbiAgICBmZWF0dXJlczogRmVhdHVyZUNvbGxlY3Rpb25cbiAgKTogR2VvSnNvbkVkaXRBY3Rpb24ge1xuICAgIGxldCB1cGRhdGVkRGF0YSA9IG5ldyBJbW11dGFibGVGZWF0dXJlQ29sbGVjdGlvbihmZWF0dXJlcyk7XG4gICAgY29uc3QgaW5pdGlhbEluZGV4ID0gdXBkYXRlZERhdGEuZ2V0T2JqZWN0KCkuZmVhdHVyZXMubGVuZ3RoO1xuICAgIGNvbnN0IHVwZGF0ZWRJbmRleGVzID0gW107XG4gICAgZm9yIChjb25zdCBmZWF0dXJlIG9mIGZlYXR1cmVzVG9BZGQpIHtcbiAgICAgIGNvbnN0IHsgcHJvcGVydGllcywgZ2VvbWV0cnkgfSA9IGZlYXR1cmU7XG4gICAgICBjb25zdCBnZW9tZXRyeUFzQW55OiBhbnkgPSBnZW9tZXRyeTtcbiAgICAgIHVwZGF0ZWREYXRhID0gdXBkYXRlZERhdGEuYWRkRmVhdHVyZSh7XG4gICAgICAgIHR5cGU6ICdGZWF0dXJlJyxcbiAgICAgICAgcHJvcGVydGllcyxcbiAgICAgICAgZ2VvbWV0cnk6IGdlb21ldHJ5QXNBbnksXG4gICAgICB9KTtcbiAgICAgIHVwZGF0ZWRJbmRleGVzLnB1c2goaW5pdGlhbEluZGV4ICsgdXBkYXRlZEluZGV4ZXMubGVuZ3RoKTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgdXBkYXRlZERhdGE6IHVwZGF0ZWREYXRhLmdldE9iamVjdCgpLFxuICAgICAgZWRpdFR5cGU6ICdhZGRGZWF0dXJlJyxcbiAgICAgIGVkaXRDb250ZXh0OiB7XG4gICAgICAgIGZlYXR1cmVJbmRleGVzOiB1cGRhdGVkSW5kZXhlcyxcbiAgICAgIH0sXG4gICAgfTtcbiAgfVxuXG4gIGdldEFkZEZlYXR1cmVPckJvb2xlYW5Qb2x5Z29uQWN0aW9uKFxuICAgIGZlYXR1cmVPckdlb21ldHJ5OiBQb2x5Z29uIHwgRmVhdHVyZSxcbiAgICBwcm9wczogTW9kZVByb3BzPEZlYXR1cmVDb2xsZWN0aW9uPlxuICApOiBHZW9Kc29uRWRpdEFjdGlvbiB8IG51bGwgfCB1bmRlZmluZWQge1xuICAgIGNvbnN0IGZlYXR1cmVPckdlb21ldHJ5QXNBbnk6IGFueSA9IGZlYXR1cmVPckdlb21ldHJ5O1xuXG4gICAgY29uc3Qgc2VsZWN0ZWRGZWF0dXJlID0gdGhpcy5nZXRTZWxlY3RlZEZlYXR1cmUocHJvcHMpO1xuICAgIGNvbnN0IHsgbW9kZUNvbmZpZyB9ID0gcHJvcHM7XG4gICAgaWYgKG1vZGVDb25maWcgJiYgbW9kZUNvbmZpZy5ib29sZWFuT3BlcmF0aW9uKSB7XG4gICAgICBpZiAoXG4gICAgICAgICFzZWxlY3RlZEZlYXR1cmUgfHxcbiAgICAgICAgKHNlbGVjdGVkRmVhdHVyZS5nZW9tZXRyeS50eXBlICE9PSAnUG9seWdvbicgJiZcbiAgICAgICAgICBzZWxlY3RlZEZlYXR1cmUuZ2VvbWV0cnkudHlwZSAhPT0gJ011bHRpUG9seWdvbicpXG4gICAgICApIHtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGUsbm8tdW5kZWZcbiAgICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICAgICdib29sZWFuT3BlcmF0aW9uIG9ubHkgc3VwcG9ydGVkIGZvciBzaW5nbGUgUG9seWdvbiBvciBNdWx0aVBvbHlnb24gc2VsZWN0aW9uJ1xuICAgICAgICApO1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cblxuICAgICAgY29uc3QgZmVhdHVyZSA9XG4gICAgICAgIGZlYXR1cmVPckdlb21ldHJ5QXNBbnkudHlwZSA9PT0gJ0ZlYXR1cmUnXG4gICAgICAgICAgPyBmZWF0dXJlT3JHZW9tZXRyeUFzQW55XG4gICAgICAgICAgOiB7XG4gICAgICAgICAgICAgIHR5cGU6ICdGZWF0dXJlJyxcbiAgICAgICAgICAgICAgZ2VvbWV0cnk6IGZlYXR1cmVPckdlb21ldHJ5QXNBbnksXG4gICAgICAgICAgICB9O1xuXG4gICAgICBsZXQgdXBkYXRlZEdlb21ldHJ5O1xuICAgICAgaWYgKG1vZGVDb25maWcuYm9vbGVhbk9wZXJhdGlvbiA9PT0gJ3VuaW9uJykge1xuICAgICAgICB1cGRhdGVkR2VvbWV0cnkgPSB0dXJmVW5pb24oc2VsZWN0ZWRGZWF0dXJlLCBmZWF0dXJlKTtcbiAgICAgIH0gZWxzZSBpZiAobW9kZUNvbmZpZy5ib29sZWFuT3BlcmF0aW9uID09PSAnZGlmZmVyZW5jZScpIHtcbiAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICB1cGRhdGVkR2VvbWV0cnkgPSB0dXJmRGlmZmVyZW5jZShzZWxlY3RlZEZlYXR1cmUsIGZlYXR1cmUpO1xuICAgICAgfSBlbHNlIGlmIChtb2RlQ29uZmlnLmJvb2xlYW5PcGVyYXRpb24gPT09ICdpbnRlcnNlY3Rpb24nKSB7XG4gICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgdXBkYXRlZEdlb21ldHJ5ID0gdHVyZkludGVyc2VjdChzZWxlY3RlZEZlYXR1cmUsIGZlYXR1cmUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGUsbm8tdW5kZWZcbiAgICAgICAgY29uc29sZS53YXJuKGBJbnZhbGlkIGJvb2xlYW5PcGVyYXRpb24gJHttb2RlQ29uZmlnLmJvb2xlYW5PcGVyYXRpb259YCk7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuXG4gICAgICBpZiAoIXVwZGF0ZWRHZW9tZXRyeSkge1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZSxuby11bmRlZlxuICAgICAgICBjb25zb2xlLndhcm4oJ0NhbmNlbGluZyBlZGl0LiBCb29sZWFuIG9wZXJhdGlvbiBlcmFzZWQgZW50aXJlIHBvbHlnb24uJyk7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBmZWF0dXJlSW5kZXggPSBwcm9wcy5zZWxlY3RlZEluZGV4ZXNbMF07XG5cbiAgICAgIGNvbnN0IHVwZGF0ZWREYXRhID0gbmV3IEltbXV0YWJsZUZlYXR1cmVDb2xsZWN0aW9uKHByb3BzLmRhdGEpXG4gICAgICAgIC5yZXBsYWNlR2VvbWV0cnkoZmVhdHVyZUluZGV4LCB1cGRhdGVkR2VvbWV0cnkuZ2VvbWV0cnkpXG4gICAgICAgIC5nZXRPYmplY3QoKTtcblxuICAgICAgY29uc3QgZWRpdEFjdGlvbjogR2VvSnNvbkVkaXRBY3Rpb24gPSB7XG4gICAgICAgIHVwZGF0ZWREYXRhLFxuICAgICAgICBlZGl0VHlwZTogJ3VuaW9uR2VvbWV0cnknLFxuICAgICAgICBlZGl0Q29udGV4dDoge1xuICAgICAgICAgIGZlYXR1cmVJbmRleGVzOiBbZmVhdHVyZUluZGV4XSxcbiAgICAgICAgfSxcbiAgICAgIH07XG5cbiAgICAgIHJldHVybiBlZGl0QWN0aW9uO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5nZXRBZGRGZWF0dXJlQWN0aW9uKGZlYXR1cmVPckdlb21ldHJ5LCBwcm9wcy5kYXRhKTtcbiAgfVxuXG4gIGNyZWF0ZVRlbnRhdGl2ZUZlYXR1cmUocHJvcHM6IE1vZGVQcm9wczxGZWF0dXJlQ29sbGVjdGlvbj4pOiBUZW50YXRpdmVGZWF0dXJlIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGhhbmRsZUNsaWNrKGV2ZW50OiBDbGlja0V2ZW50LCBwcm9wczogTW9kZVByb3BzPEZlYXR1cmVDb2xsZWN0aW9uPik6IHZvaWQge31cbiAgaGFuZGxlUG9pbnRlck1vdmUoZXZlbnQ6IFBvaW50ZXJNb3ZlRXZlbnQsIHByb3BzOiBNb2RlUHJvcHM8RmVhdHVyZUNvbGxlY3Rpb24+KTogdm9pZCB7XG4gICAgY29uc3QgdGVudGF0aXZlRmVhdHVyZSA9IHRoaXMuY3JlYXRlVGVudGF0aXZlRmVhdHVyZShwcm9wcyk7XG4gICAgaWYgKHRlbnRhdGl2ZUZlYXR1cmUpIHtcbiAgICAgIHByb3BzLm9uRWRpdCh7XG4gICAgICAgIHVwZGF0ZWREYXRhOiBwcm9wcy5kYXRhLFxuICAgICAgICBlZGl0VHlwZTogJ3VwZGF0ZVRlbnRhdGl2ZUZlYXR1cmUnLFxuICAgICAgICBlZGl0Q29udGV4dDoge1xuICAgICAgICAgIGZlYXR1cmU6IHRlbnRhdGl2ZUZlYXR1cmUsXG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgICB9XG4gIH1cbiAgaGFuZGxlU3RhcnREcmFnZ2luZyhldmVudDogU3RhcnREcmFnZ2luZ0V2ZW50LCBwcm9wczogTW9kZVByb3BzPEZlYXR1cmVDb2xsZWN0aW9uPik6IHZvaWQge31cbiAgaGFuZGxlU3RvcERyYWdnaW5nKGV2ZW50OiBTdG9wRHJhZ2dpbmdFdmVudCwgcHJvcHM6IE1vZGVQcm9wczxGZWF0dXJlQ29sbGVjdGlvbj4pOiB2b2lkIHt9XG4gIGhhbmRsZURyYWdnaW5nKGV2ZW50OiBEcmFnZ2luZ0V2ZW50LCBwcm9wczogTW9kZVByb3BzPEZlYXR1cmVDb2xsZWN0aW9uPik6IHZvaWQge31cblxuICBoYW5kbGVLZXlVcChldmVudDogS2V5Ym9hcmRFdmVudCwgcHJvcHM6IE1vZGVQcm9wczxGZWF0dXJlQ29sbGVjdGlvbj4pOiB2b2lkIHtcbiAgICBpZiAoZXZlbnQua2V5ID09PSAnRXNjYXBlJykge1xuICAgICAgdGhpcy5yZXNldENsaWNrU2VxdWVuY2UoKTtcbiAgICAgIHByb3BzLm9uRWRpdCh7XG4gICAgICAgIC8vIEJlY2F1c2UgdGhlIG5ldyBkcmF3aW5nIGZlYXR1cmUgaXMgZHJvcHBlZCwgc28gdGhlIGRhdGEgd2lsbCBrZWVwIGFzIHRoZSBzYW1lLlxuICAgICAgICB1cGRhdGVkRGF0YTogcHJvcHMuZGF0YSxcbiAgICAgICAgZWRpdFR5cGU6ICdjYW5jZWxGZWF0dXJlJyxcbiAgICAgICAgZWRpdENvbnRleHQ6IHt9LFxuICAgICAgfSk7XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRJbnRlcm1lZGlhdGVQb3NpdGlvbihwb3NpdGlvbjE6IFBvc2l0aW9uLCBwb3NpdGlvbjI6IFBvc2l0aW9uKTogUG9zaXRpb24ge1xuICBjb25zdCBpbnRlcm1lZGlhdGVQb3NpdGlvbiA9IFtcbiAgICAocG9zaXRpb24xWzBdICsgcG9zaXRpb24yWzBdKSAvIDIuMCxcbiAgICAocG9zaXRpb24xWzFdICsgcG9zaXRpb24yWzFdKSAvIDIuMCxcbiAgXTtcbiAgLy8gQHRzLWlnbm9yZVxuICByZXR1cm4gaW50ZXJtZWRpYXRlUG9zaXRpb247XG59XG4iXX0=","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.ImmutableFeatureCollection = void 0;\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(n); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar ImmutableFeatureCollection = /*#__PURE__*/function () {\n  function ImmutableFeatureCollection(featureCollection) {\n    _classCallCheck(this, ImmutableFeatureCollection);\n\n    _defineProperty(this, \"featureCollection\", void 0);\n\n    this.featureCollection = featureCollection;\n  }\n\n  _createClass(ImmutableFeatureCollection, [{\n    key: \"getObject\",\n    value: function getObject() {\n      return this.featureCollection;\n    }\n    /**\n     * Replaces the position deeply nested withing the given feature's geometry.\n     * Works with Point, MultiPoint, LineString, MultiLineString, Polygon, and MultiPolygon.\n     *\n     * @param featureIndex The index of the feature to update\n     * @param positionIndexes An array containing the indexes of the position to replace\n     * @param updatedPosition The updated position to place in the result (i.e. [lng, lat])\n     *\n     * @returns A new `ImmutableFeatureCollection` with the given position replaced. Does not modify this `ImmutableFeatureCollection`.\n     */\n\n  }, {\n    key: \"replacePosition\",\n    value: function replacePosition(featureIndex, positionIndexes, updatedPosition) {\n      var geometry = this.featureCollection.features[featureIndex].geometry;\n      var isPolygonal = geometry.type === 'Polygon' || geometry.type === 'MultiPolygon';\n\n      var updatedGeometry = _objectSpread({}, geometry, {\n        coordinates: immutablyReplacePosition(geometry.coordinates, positionIndexes, updatedPosition, isPolygonal)\n      });\n\n      return this.replaceGeometry(featureIndex, updatedGeometry);\n    }\n    /**\n     * Removes a position deeply nested in a GeoJSON geometry coordinates array.\n     * Works with MultiPoint, LineString, MultiLineString, Polygon, and MultiPolygon.\n     *\n     * @param featureIndex The index of the feature to update\n     * @param positionIndexes An array containing the indexes of the postion to remove\n     *\n     * @returns A new `ImmutableFeatureCollection` with the given coordinate removed. Does not modify this `ImmutableFeatureCollection`.\n     */\n\n  }, {\n    key: \"removePosition\",\n    value: function removePosition(featureIndex, positionIndexes) {\n      var geometry = this.featureCollection.features[featureIndex].geometry;\n\n      if (geometry.type === 'Point') {\n        throw Error(\"Can't remove a position from a Point or there'd be nothing left\");\n      }\n\n      if (geometry.type === 'MultiPoint' && // only 1 point left\n      geometry.coordinates.length < 2) {\n        throw Error(\"Can't remove the last point of a MultiPoint or there'd be nothing left\");\n      }\n\n      if (geometry.type === 'LineString' && // only 2 positions\n      geometry.coordinates.length < 3) {\n        throw Error(\"Can't remove position. LineString must have at least two positions\");\n      }\n\n      if (geometry.type === 'Polygon' && // outer ring is a triangle\n      geometry.coordinates[0].length < 5 && Array.isArray(positionIndexes) && // trying to remove from outer ring\n      positionIndexes[0] === 0) {\n        throw Error(\"Can't remove position. Polygon's outer ring must have at least four positions\");\n      }\n\n      if (geometry.type === 'MultiLineString' && // only 1 LineString left\n      geometry.coordinates.length === 1 && // only 2 positions\n      geometry.coordinates[0].length < 3) {\n        throw Error(\"Can't remove position. MultiLineString must have at least two positions\");\n      }\n\n      if (geometry.type === 'MultiPolygon' && // only 1 polygon left\n      geometry.coordinates.length === 1 && // outer ring is a triangle\n      geometry.coordinates[0][0].length < 5 && Array.isArray(positionIndexes) && // trying to remove from first polygon\n      positionIndexes[0] === 0 && // trying to remove from outer ring\n      positionIndexes[1] === 0) {\n        throw Error(\"Can't remove position. MultiPolygon's outer ring must have at least four positions\");\n      }\n\n      var isPolygonal = geometry.type === 'Polygon' || geometry.type === 'MultiPolygon';\n\n      var updatedGeometry = _objectSpread({}, geometry, {\n        coordinates: immutablyRemovePosition(geometry.coordinates, positionIndexes, isPolygonal)\n      }); // Handle cases where incomplete geometries need pruned (e.g. holes that were triangles)\n\n\n      pruneGeometryIfNecessary(updatedGeometry);\n      return this.replaceGeometry(featureIndex, updatedGeometry);\n    }\n    /**\n     * Adds a position deeply nested in a GeoJSON geometry coordinates array.\n     * Works with MultiPoint, LineString, MultiLineString, Polygon, and MultiPolygon.\n     *\n     * @param featureIndex The index of the feature to update\n     * @param positionIndexes An array containing the indexes of the position that will proceed the new position\n     * @param positionToAdd The new position to place in the result (i.e. [lng, lat])\n     *\n     * @returns A new `ImmutableFeatureCollection` with the given coordinate removed. Does not modify this `ImmutableFeatureCollection`.\n     */\n\n  }, {\n    key: \"addPosition\",\n    value: function addPosition(featureIndex, positionIndexes, positionToAdd) {\n      var geometry = this.featureCollection.features[featureIndex].geometry;\n\n      if (geometry.type === 'Point') {\n        throw new Error('Unable to add a position to a Point feature');\n      }\n\n      var isPolygonal = geometry.type === 'Polygon' || geometry.type === 'MultiPolygon';\n\n      var updatedGeometry = _objectSpread({}, geometry, {\n        coordinates: immutablyAddPosition(geometry.coordinates, positionIndexes, positionToAdd, isPolygonal)\n      });\n\n      return this.replaceGeometry(featureIndex, updatedGeometry);\n    }\n  }, {\n    key: \"replaceGeometry\",\n    value: function replaceGeometry(featureIndex, geometry) {\n      var updatedFeature = _objectSpread({}, this.featureCollection.features[featureIndex], {\n        geometry: geometry\n      });\n\n      var updatedFeatureCollection = _objectSpread({}, this.featureCollection, {\n        features: [].concat(_toConsumableArray(this.featureCollection.features.slice(0, featureIndex)), [updatedFeature], _toConsumableArray(this.featureCollection.features.slice(featureIndex + 1)))\n      });\n\n      return new ImmutableFeatureCollection(updatedFeatureCollection);\n    }\n  }, {\n    key: \"addFeature\",\n    value: function addFeature(feature) {\n      return this.addFeatures([feature]);\n    }\n  }, {\n    key: \"addFeatures\",\n    value: function addFeatures(features) {\n      var updatedFeatureCollection = _objectSpread({}, this.featureCollection, {\n        features: [].concat(_toConsumableArray(this.featureCollection.features), _toConsumableArray(features))\n      });\n\n      return new ImmutableFeatureCollection(updatedFeatureCollection);\n    }\n  }, {\n    key: \"deleteFeature\",\n    value: function deleteFeature(featureIndex) {\n      return this.deleteFeatures([featureIndex]);\n    }\n  }, {\n    key: \"deleteFeatures\",\n    value: function deleteFeatures(featureIndexes) {\n      var features = _toConsumableArray(this.featureCollection.features);\n\n      featureIndexes.sort();\n\n      for (var i = featureIndexes.length - 1; i >= 0; i--) {\n        var featureIndex = featureIndexes[i];\n\n        if (featureIndex >= 0 && featureIndex < features.length) {\n          features.splice(featureIndex, 1);\n        }\n      }\n\n      var updatedFeatureCollection = _objectSpread({}, this.featureCollection, {\n        features: features\n      });\n\n      return new ImmutableFeatureCollection(updatedFeatureCollection);\n    }\n  }]);\n\n  return ImmutableFeatureCollection;\n}();\n\nexports.ImmutableFeatureCollection = ImmutableFeatureCollection;\n\nfunction getUpdatedPosition(updatedPosition, previousPosition) {\n  // This function checks if the updatedPosition is missing elevation\n  // and copies it from previousPosition\n  if (updatedPosition.length === 2 && previousPosition.length === 3) {\n    var elevation = previousPosition[2];\n    return [updatedPosition[0], updatedPosition[1], elevation];\n  }\n\n  return updatedPosition;\n}\n\nfunction immutablyReplacePosition(coordinates, positionIndexes, updatedPosition, isPolygonal) {\n  if (!positionIndexes) {\n    return coordinates;\n  }\n\n  if (positionIndexes.length === 0) {\n    return getUpdatedPosition(updatedPosition, coordinates);\n  }\n\n  if (positionIndexes.length === 1) {\n    var updated = [].concat(_toConsumableArray(coordinates.slice(0, positionIndexes[0])), [getUpdatedPosition(updatedPosition, coordinates[positionIndexes[0]])], _toConsumableArray(coordinates.slice(positionIndexes[0] + 1)));\n\n    if (isPolygonal && (positionIndexes[0] === 0 || positionIndexes[0] === coordinates.length - 1)) {\n      // for polygons, the first point is repeated at the end of the array\n      // so, update it on both ends of the array\n      updated[0] = getUpdatedPosition(updatedPosition, coordinates[0]);\n      updated[coordinates.length - 1] = getUpdatedPosition(updatedPosition, coordinates[0]);\n    }\n\n    return updated;\n  } // recursively update inner array\n\n\n  return [].concat(_toConsumableArray(coordinates.slice(0, positionIndexes[0])), [immutablyReplacePosition(coordinates[positionIndexes[0]], positionIndexes.slice(1, positionIndexes.length), updatedPosition, isPolygonal)], _toConsumableArray(coordinates.slice(positionIndexes[0] + 1)));\n}\n\nfunction immutablyRemovePosition(coordinates, positionIndexes, isPolygonal) {\n  if (!positionIndexes) {\n    return coordinates;\n  }\n\n  if (positionIndexes.length === 0) {\n    throw Error('Must specify the index of the position to remove');\n  }\n\n  if (positionIndexes.length === 1) {\n    var updated = [].concat(_toConsumableArray(coordinates.slice(0, positionIndexes[0])), _toConsumableArray(coordinates.slice(positionIndexes[0] + 1)));\n\n    if (isPolygonal && (positionIndexes[0] === 0 || positionIndexes[0] === coordinates.length - 1)) {\n      // for polygons, the first point is repeated at the end of the array\n      // so, if the first/last coordinate is to be removed, coordinates[1] will be the new first/last coordinate\n      if (positionIndexes[0] === 0) {\n        // change the last to be the same as the first\n        updated[updated.length - 1] = updated[0];\n      } else if (positionIndexes[0] === coordinates.length - 1) {\n        // change the first to be the same as the last\n        updated[0] = updated[updated.length - 1];\n      }\n    }\n\n    return updated;\n  } // recursively update inner array\n\n\n  return [].concat(_toConsumableArray(coordinates.slice(0, positionIndexes[0])), [immutablyRemovePosition(coordinates[positionIndexes[0]], positionIndexes.slice(1, positionIndexes.length), isPolygonal)], _toConsumableArray(coordinates.slice(positionIndexes[0] + 1)));\n}\n\nfunction immutablyAddPosition(coordinates, positionIndexes, positionToAdd, isPolygonal) {\n  if (!positionIndexes) {\n    return coordinates;\n  }\n\n  if (positionIndexes.length === 0) {\n    throw Error('Must specify the index of the position to remove');\n  }\n\n  if (positionIndexes.length === 1) {\n    var updated = [].concat(_toConsumableArray(coordinates.slice(0, positionIndexes[0])), [positionToAdd], _toConsumableArray(coordinates.slice(positionIndexes[0])));\n    return updated;\n  } // recursively update inner array\n\n\n  return [].concat(_toConsumableArray(coordinates.slice(0, positionIndexes[0])), [immutablyAddPosition(coordinates[positionIndexes[0]], positionIndexes.slice(1, positionIndexes.length), positionToAdd, isPolygonal)], _toConsumableArray(coordinates.slice(positionIndexes[0] + 1)));\n}\n\nfunction pruneGeometryIfNecessary(geometry) {\n  switch (geometry.type) {\n    case 'Polygon':\n      prunePolygonIfNecessary(geometry);\n      break;\n\n    case 'MultiLineString':\n      pruneMultiLineStringIfNecessary(geometry);\n      break;\n\n    case 'MultiPolygon':\n      pruneMultiPolygonIfNecessary(geometry);\n      break;\n\n    default:\n      // Not downgradable\n      break;\n  }\n}\n\nfunction prunePolygonIfNecessary(geometry) {\n  var polygon = geometry.coordinates; // If any hole is no longer a polygon, remove the hole entirely\n\n  for (var holeIndex = 1; holeIndex < polygon.length; holeIndex++) {\n    if (removeHoleIfNecessary(polygon, holeIndex)) {\n      // It was removed, so keep the index the same\n      holeIndex--;\n    }\n  }\n}\n\nfunction pruneMultiLineStringIfNecessary(geometry) {\n  for (var lineStringIndex = 0; lineStringIndex < geometry.coordinates.length; lineStringIndex++) {\n    var lineString = geometry.coordinates[lineStringIndex];\n\n    if (lineString.length === 1) {\n      // Only a single position left on this LineString, so remove it (can't have Point in MultiLineString)\n      geometry.coordinates.splice(lineStringIndex, 1); // Keep the index the same\n\n      lineStringIndex--;\n    }\n  }\n}\n\nfunction pruneMultiPolygonIfNecessary(geometry) {\n  for (var polygonIndex = 0; polygonIndex < geometry.coordinates.length; polygonIndex++) {\n    var polygon = geometry.coordinates[polygonIndex];\n    var outerRing = polygon[0]; // If the outer ring is no longer a polygon, remove the whole polygon\n\n    if (outerRing.length <= 3) {\n      geometry.coordinates.splice(polygonIndex, 1); // It was removed, so keep the index the same\n\n      polygonIndex--;\n    }\n\n    for (var holeIndex = 1; holeIndex < polygon.length; holeIndex++) {\n      if (removeHoleIfNecessary(polygon, holeIndex)) {\n        // It was removed, so keep the index the same\n        holeIndex--;\n      }\n    }\n  }\n}\n\nfunction removeHoleIfNecessary(polygon, holeIndex) {\n  var hole = polygon[holeIndex];\n\n  if (hole.length <= 3) {\n    polygon.splice(holeIndex, 1);\n    return true;\n  }\n\n  return false;\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvaW1tdXRhYmxlLWZlYXR1cmUtY29sbGVjdGlvbi50cyJdLCJuYW1lcyI6WyJJbW11dGFibGVGZWF0dXJlQ29sbGVjdGlvbiIsImZlYXR1cmVDb2xsZWN0aW9uIiwiZmVhdHVyZUluZGV4IiwicG9zaXRpb25JbmRleGVzIiwidXBkYXRlZFBvc2l0aW9uIiwiZ2VvbWV0cnkiLCJmZWF0dXJlcyIsImlzUG9seWdvbmFsIiwidHlwZSIsInVwZGF0ZWRHZW9tZXRyeSIsImNvb3JkaW5hdGVzIiwiaW1tdXRhYmx5UmVwbGFjZVBvc2l0aW9uIiwicmVwbGFjZUdlb21ldHJ5IiwiRXJyb3IiLCJsZW5ndGgiLCJBcnJheSIsImlzQXJyYXkiLCJpbW11dGFibHlSZW1vdmVQb3NpdGlvbiIsInBydW5lR2VvbWV0cnlJZk5lY2Vzc2FyeSIsInBvc2l0aW9uVG9BZGQiLCJpbW11dGFibHlBZGRQb3NpdGlvbiIsInVwZGF0ZWRGZWF0dXJlIiwidXBkYXRlZEZlYXR1cmVDb2xsZWN0aW9uIiwic2xpY2UiLCJmZWF0dXJlIiwiYWRkRmVhdHVyZXMiLCJkZWxldGVGZWF0dXJlcyIsImZlYXR1cmVJbmRleGVzIiwic29ydCIsImkiLCJzcGxpY2UiLCJnZXRVcGRhdGVkUG9zaXRpb24iLCJwcmV2aW91c1Bvc2l0aW9uIiwiZWxldmF0aW9uIiwidXBkYXRlZCIsInBydW5lUG9seWdvbklmTmVjZXNzYXJ5IiwicHJ1bmVNdWx0aUxpbmVTdHJpbmdJZk5lY2Vzc2FyeSIsInBydW5lTXVsdGlQb2x5Z29uSWZOZWNlc3NhcnkiLCJwb2x5Z29uIiwiaG9sZUluZGV4IiwicmVtb3ZlSG9sZUlmTmVjZXNzYXJ5IiwibGluZVN0cmluZ0luZGV4IiwibGluZVN0cmluZyIsInBvbHlnb25JbmRleCIsIm91dGVyUmluZyIsImhvbGUiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUFXYUEsMEI7QUFHWCxzQ0FBWUMsaUJBQVosRUFBa0Q7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S0FBUDtBQUNEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgRmVhdHVyZSxcbiAgRmVhdHVyZUNvbGxlY3Rpb24sXG4gIEdlb21ldHJ5LFxuICBQb2x5Z29uLFxuICBNdWx0aUxpbmVTdHJpbmcsXG4gIE11bHRpUG9seWdvbixcbiAgUG9zaXRpb24sXG4gIFBvbHlnb25Db29yZGluYXRlcyxcbn0gZnJvbSAnLi4vZ2VvanNvbi10eXBlcyc7XG5cbmV4cG9ydCBjbGFzcyBJbW11dGFibGVGZWF0dXJlQ29sbGVjdGlvbiB7XG4gIGZlYXR1cmVDb2xsZWN0aW9uOiBGZWF0dXJlQ29sbGVjdGlvbjtcblxuICBjb25zdHJ1Y3RvcihmZWF0dXJlQ29sbGVjdGlvbjogRmVhdHVyZUNvbGxlY3Rpb24pIHtcbiAgICB0aGlzLmZlYXR1cmVDb2xsZWN0aW9uID0gZmVhdHVyZUNvbGxlY3Rpb247XG4gIH1cblxuICBnZXRPYmplY3QoKSB7XG4gICAgcmV0dXJuIHRoaXMuZmVhdHVyZUNvbGxlY3Rpb247XG4gIH1cblxuICAvKipcbiAgICogUmVwbGFjZXMgdGhlIHBvc2l0aW9uIGRlZXBseSBuZXN0ZWQgd2l0aGluZyB0aGUgZ2l2ZW4gZmVhdHVyZSdzIGdlb21ldHJ5LlxuICAgKiBXb3JrcyB3aXRoIFBvaW50LCBNdWx0aVBvaW50LCBMaW5lU3RyaW5nLCBNdWx0aUxpbmVTdHJpbmcsIFBvbHlnb24sIGFuZCBNdWx0aVBvbHlnb24uXG4gICAqXG4gICAqIEBwYXJhbSBmZWF0dXJlSW5kZXggVGhlIGluZGV4IG9mIHRoZSBmZWF0dXJlIHRvIHVwZGF0ZVxuICAgKiBAcGFyYW0gcG9zaXRpb25JbmRleGVzIEFuIGFycmF5IGNvbnRhaW5pbmcgdGhlIGluZGV4ZXMgb2YgdGhlIHBvc2l0aW9uIHRvIHJlcGxhY2VcbiAgICogQHBhcmFtIHVwZGF0ZWRQb3NpdGlvbiBUaGUgdXBkYXRlZCBwb3NpdGlvbiB0byBwbGFjZSBpbiB0aGUgcmVzdWx0IChpLmUuIFtsbmcsIGxhdF0pXG4gICAqXG4gICAqIEByZXR1cm5zIEEgbmV3IGBJbW11dGFibGVGZWF0dXJlQ29sbGVjdGlvbmAgd2l0aCB0aGUgZ2l2ZW4gcG9zaXRpb24gcmVwbGFjZWQuIERvZXMgbm90IG1vZGlmeSB0aGlzIGBJbW11dGFibGVGZWF0dXJlQ29sbGVjdGlvbmAuXG4gICAqL1xuICByZXBsYWNlUG9zaXRpb24oXG4gICAgZmVhdHVyZUluZGV4OiBudW1iZXIsXG4gICAgcG9zaXRpb25JbmRleGVzOiBudW1iZXJbXSB8IG51bGwgfCB1bmRlZmluZWQsXG4gICAgdXBkYXRlZFBvc2l0aW9uOiBQb3NpdGlvblxuICApOiBJbW11dGFibGVGZWF0dXJlQ29sbGVjdGlvbiB7XG4gICAgY29uc3QgZ2VvbWV0cnkgPSB0aGlzLmZlYXR1cmVDb2xsZWN0aW9uLmZlYXR1cmVzW2ZlYXR1cmVJbmRleF0uZ2VvbWV0cnk7XG5cbiAgICBjb25zdCBpc1BvbHlnb25hbCA9IGdlb21ldHJ5LnR5cGUgPT09ICdQb2x5Z29uJyB8fCBnZW9tZXRyeS50eXBlID09PSAnTXVsdGlQb2x5Z29uJztcbiAgICBjb25zdCB1cGRhdGVkR2VvbWV0cnk6IGFueSA9IHtcbiAgICAgIC4uLmdlb21ldHJ5LFxuICAgICAgY29vcmRpbmF0ZXM6IGltbXV0YWJseVJlcGxhY2VQb3NpdGlvbihcbiAgICAgICAgZ2VvbWV0cnkuY29vcmRpbmF0ZXMsXG4gICAgICAgIHBvc2l0aW9uSW5kZXhlcyxcbiAgICAgICAgdXBkYXRlZFBvc2l0aW9uLFxuICAgICAgICBpc1BvbHlnb25hbFxuICAgICAgKSxcbiAgICB9O1xuXG4gICAgcmV0dXJuIHRoaXMucmVwbGFjZUdlb21ldHJ5KGZlYXR1cmVJbmRleCwgdXBkYXRlZEdlb21ldHJ5KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW1vdmVzIGEgcG9zaXRpb24gZGVlcGx5IG5lc3RlZCBpbiBhIEdlb0pTT04gZ2VvbWV0cnkgY29vcmRpbmF0ZXMgYXJyYXkuXG4gICAqIFdvcmtzIHdpdGggTXVsdGlQb2ludCwgTGluZVN0cmluZywgTXVsdGlMaW5lU3RyaW5nLCBQb2x5Z29uLCBhbmQgTXVsdGlQb2x5Z29uLlxuICAgKlxuICAgKiBAcGFyYW0gZmVhdHVyZUluZGV4IFRoZSBpbmRleCBvZiB0aGUgZmVhdHVyZSB0byB1cGRhdGVcbiAgICogQHBhcmFtIHBvc2l0aW9uSW5kZXhlcyBBbiBhcnJheSBjb250YWluaW5nIHRoZSBpbmRleGVzIG9mIHRoZSBwb3N0aW9uIHRvIHJlbW92ZVxuICAgKlxuICAgKiBAcmV0dXJucyBBIG5ldyBgSW1tdXRhYmxlRmVhdHVyZUNvbGxlY3Rpb25gIHdpdGggdGhlIGdpdmVuIGNvb3JkaW5hdGUgcmVtb3ZlZC4gRG9lcyBub3QgbW9kaWZ5IHRoaXMgYEltbXV0YWJsZUZlYXR1cmVDb2xsZWN0aW9uYC5cbiAgICovXG4gIHJlbW92ZVBvc2l0aW9uKFxuICAgIGZlYXR1cmVJbmRleDogbnVtYmVyLFxuICAgIHBvc2l0aW9uSW5kZXhlczogbnVtYmVyW10gfCBudWxsIHwgdW5kZWZpbmVkXG4gICk6IEltbXV0YWJsZUZlYXR1cmVDb2xsZWN0aW9uIHtcbiAgICBjb25zdCBnZW9tZXRyeSA9IHRoaXMuZmVhdHVyZUNvbGxlY3Rpb24uZmVhdHVyZXNbZmVhdHVyZUluZGV4XS5nZW9tZXRyeTtcblxuICAgIGlmIChnZW9tZXRyeS50eXBlID09PSAnUG9pbnQnKSB7XG4gICAgICB0aHJvdyBFcnJvcihgQ2FuJ3QgcmVtb3ZlIGEgcG9zaXRpb24gZnJvbSBhIFBvaW50IG9yIHRoZXJlJ2QgYmUgbm90aGluZyBsZWZ0YCk7XG4gICAgfVxuICAgIGlmIChcbiAgICAgIGdlb21ldHJ5LnR5cGUgPT09ICdNdWx0aVBvaW50JyAmJiAvLyBvbmx5IDEgcG9pbnQgbGVmdFxuICAgICAgZ2VvbWV0cnkuY29vcmRpbmF0ZXMubGVuZ3RoIDwgMlxuICAgICkge1xuICAgICAgdGhyb3cgRXJyb3IoYENhbid0IHJlbW92ZSB0aGUgbGFzdCBwb2ludCBvZiBhIE11bHRpUG9pbnQgb3IgdGhlcmUnZCBiZSBub3RoaW5nIGxlZnRgKTtcbiAgICB9XG4gICAgaWYgKFxuICAgICAgZ2VvbWV0cnkudHlwZSA9PT0gJ0xpbmVTdHJpbmcnICYmIC8vIG9ubHkgMiBwb3NpdGlvbnNcbiAgICAgIGdlb21ldHJ5LmNvb3JkaW5hdGVzLmxlbmd0aCA8IDNcbiAgICApIHtcbiAgICAgIHRocm93IEVycm9yKGBDYW4ndCByZW1vdmUgcG9zaXRpb24uIExpbmVTdHJpbmcgbXVzdCBoYXZlIGF0IGxlYXN0IHR3byBwb3NpdGlvbnNgKTtcbiAgICB9XG4gICAgaWYgKFxuICAgICAgZ2VvbWV0cnkudHlwZSA9PT0gJ1BvbHlnb24nICYmIC8vIG91dGVyIHJpbmcgaXMgYSB0cmlhbmdsZVxuICAgICAgZ2VvbWV0cnkuY29vcmRpbmF0ZXNbMF0ubGVuZ3RoIDwgNSAmJlxuICAgICAgQXJyYXkuaXNBcnJheShwb3NpdGlvbkluZGV4ZXMpICYmIC8vIHRyeWluZyB0byByZW1vdmUgZnJvbSBvdXRlciByaW5nXG4gICAgICBwb3NpdGlvbkluZGV4ZXNbMF0gPT09IDBcbiAgICApIHtcbiAgICAgIHRocm93IEVycm9yKGBDYW4ndCByZW1vdmUgcG9zaXRpb24uIFBvbHlnb24ncyBvdXRlciByaW5nIG11c3QgaGF2ZSBhdCBsZWFzdCBmb3VyIHBvc2l0aW9uc2ApO1xuICAgIH1cbiAgICBpZiAoXG4gICAgICBnZW9tZXRyeS50eXBlID09PSAnTXVsdGlMaW5lU3RyaW5nJyAmJiAvLyBvbmx5IDEgTGluZVN0cmluZyBsZWZ0XG4gICAgICBnZW9tZXRyeS5jb29yZGluYXRlcy5sZW5ndGggPT09IDEgJiYgLy8gb25seSAyIHBvc2l0aW9uc1xuICAgICAgZ2VvbWV0cnkuY29vcmRpbmF0ZXNbMF0ubGVuZ3RoIDwgM1xuICAgICkge1xuICAgICAgdGhyb3cgRXJyb3IoYENhbid0IHJlbW92ZSBwb3NpdGlvbi4gTXVsdGlMaW5lU3RyaW5nIG11c3QgaGF2ZSBhdCBsZWFzdCB0d28gcG9zaXRpb25zYCk7XG4gICAgfVxuICAgIGlmIChcbiAgICAgIGdlb21ldHJ5LnR5cGUgPT09ICdNdWx0aVBvbHlnb24nICYmIC8vIG9ubHkgMSBwb2x5Z29uIGxlZnRcbiAgICAgIGdlb21ldHJ5LmNvb3JkaW5hdGVzLmxlbmd0aCA9PT0gMSAmJiAvLyBvdXRlciByaW5nIGlzIGEgdHJpYW5nbGVcbiAgICAgIGdlb21ldHJ5LmNvb3JkaW5hdGVzWzBdWzBdLmxlbmd0aCA8IDUgJiZcbiAgICAgIEFycmF5LmlzQXJyYXkocG9zaXRpb25JbmRleGVzKSAmJiAvLyB0cnlpbmcgdG8gcmVtb3ZlIGZyb20gZmlyc3QgcG9seWdvblxuICAgICAgcG9zaXRpb25JbmRleGVzWzBdID09PSAwICYmIC8vIHRyeWluZyB0byByZW1vdmUgZnJvbSBvdXRlciByaW5nXG4gICAgICBwb3NpdGlvbkluZGV4ZXNbMV0gPT09IDBcbiAgICApIHtcbiAgICAgIHRocm93IEVycm9yKFxuICAgICAgICBgQ2FuJ3QgcmVtb3ZlIHBvc2l0aW9uLiBNdWx0aVBvbHlnb24ncyBvdXRlciByaW5nIG11c3QgaGF2ZSBhdCBsZWFzdCBmb3VyIHBvc2l0aW9uc2BcbiAgICAgICk7XG4gICAgfVxuXG4gICAgY29uc3QgaXNQb2x5Z29uYWwgPSBnZW9tZXRyeS50eXBlID09PSAnUG9seWdvbicgfHwgZ2VvbWV0cnkudHlwZSA9PT0gJ011bHRpUG9seWdvbic7XG4gICAgY29uc3QgdXBkYXRlZEdlb21ldHJ5OiBhbnkgPSB7XG4gICAgICAuLi5nZW9tZXRyeSxcbiAgICAgIGNvb3JkaW5hdGVzOiBpbW11dGFibHlSZW1vdmVQb3NpdGlvbihnZW9tZXRyeS5jb29yZGluYXRlcywgcG9zaXRpb25JbmRleGVzLCBpc1BvbHlnb25hbCksXG4gICAgfTtcblxuICAgIC8vIEhhbmRsZSBjYXNlcyB3aGVyZSBpbmNvbXBsZXRlIGdlb21ldHJpZXMgbmVlZCBwcnVuZWQgKGUuZy4gaG9sZXMgdGhhdCB3ZXJlIHRyaWFuZ2xlcylcbiAgICBwcnVuZUdlb21ldHJ5SWZOZWNlc3NhcnkodXBkYXRlZEdlb21ldHJ5KTtcblxuICAgIHJldHVybiB0aGlzLnJlcGxhY2VHZW9tZXRyeShmZWF0dXJlSW5kZXgsIHVwZGF0ZWRHZW9tZXRyeSk7XG4gIH1cblxuICAvKipcbiAgICogQWRkcyBhIHBvc2l0aW9uIGRlZXBseSBuZXN0ZWQgaW4gYSBHZW9KU09OIGdlb21ldHJ5IGNvb3JkaW5hdGVzIGFycmF5LlxuICAgKiBXb3JrcyB3aXRoIE11bHRpUG9pbnQsIExpbmVTdHJpbmcsIE11bHRpTGluZVN0cmluZywgUG9seWdvbiwgYW5kIE11bHRpUG9seWdvbi5cbiAgICpcbiAgICogQHBhcmFtIGZlYXR1cmVJbmRleCBUaGUgaW5kZXggb2YgdGhlIGZlYXR1cmUgdG8gdXBkYXRlXG4gICAqIEBwYXJhbSBwb3NpdGlvbkluZGV4ZXMgQW4gYXJyYXkgY29udGFpbmluZyB0aGUgaW5kZXhlcyBvZiB0aGUgcG9zaXRpb24gdGhhdCB3aWxsIHByb2NlZWQgdGhlIG5ldyBwb3NpdGlvblxuICAgKiBAcGFyYW0gcG9zaXRpb25Ub0FkZCBUaGUgbmV3IHBvc2l0aW9uIHRvIHBsYWNlIGluIHRoZSByZXN1bHQgKGkuZS4gW2xuZywgbGF0XSlcbiAgICpcbiAgICogQHJldHVybnMgQSBuZXcgYEltbXV0YWJsZUZlYXR1cmVDb2xsZWN0aW9uYCB3aXRoIHRoZSBnaXZlbiBjb29yZGluYXRlIHJlbW92ZWQuIERvZXMgbm90IG1vZGlmeSB0aGlzIGBJbW11dGFibGVGZWF0dXJlQ29sbGVjdGlvbmAuXG4gICAqL1xuICBhZGRQb3NpdGlvbihcbiAgICBmZWF0dXJlSW5kZXg6IG51bWJlcixcbiAgICBwb3NpdGlvbkluZGV4ZXM6IG51bWJlcltdIHwgbnVsbCB8IHVuZGVmaW5lZCxcbiAgICBwb3NpdGlvblRvQWRkOiBQb3NpdGlvblxuICApOiBJbW11dGFibGVGZWF0dXJlQ29sbGVjdGlvbiB7XG4gICAgY29uc3QgZ2VvbWV0cnkgPSB0aGlzLmZlYXR1cmVDb2xsZWN0aW9uLmZlYXR1cmVzW2ZlYXR1cmVJbmRleF0uZ2VvbWV0cnk7XG5cbiAgICBpZiAoZ2VvbWV0cnkudHlwZSA9PT0gJ1BvaW50Jykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdVbmFibGUgdG8gYWRkIGEgcG9zaXRpb24gdG8gYSBQb2ludCBmZWF0dXJlJyk7XG4gICAgfVxuXG4gICAgY29uc3QgaXNQb2x5Z29uYWwgPSBnZW9tZXRyeS50eXBlID09PSAnUG9seWdvbicgfHwgZ2VvbWV0cnkudHlwZSA9PT0gJ011bHRpUG9seWdvbic7XG4gICAgY29uc3QgdXBkYXRlZEdlb21ldHJ5OiBhbnkgPSB7XG4gICAgICAuLi5nZW9tZXRyeSxcbiAgICAgIGNvb3JkaW5hdGVzOiBpbW11dGFibHlBZGRQb3NpdGlvbihcbiAgICAgICAgZ2VvbWV0cnkuY29vcmRpbmF0ZXMsXG4gICAgICAgIHBvc2l0aW9uSW5kZXhlcyxcbiAgICAgICAgcG9zaXRpb25Ub0FkZCxcbiAgICAgICAgaXNQb2x5Z29uYWxcbiAgICAgICksXG4gICAgfTtcblxuICAgIHJldHVybiB0aGlzLnJlcGxhY2VHZW9tZXRyeShmZWF0dXJlSW5kZXgsIHVwZGF0ZWRHZW9tZXRyeSk7XG4gIH1cblxuICByZXBsYWNlR2VvbWV0cnkoZmVhdHVyZUluZGV4OiBudW1iZXIsIGdlb21ldHJ5OiBHZW9tZXRyeSk6IEltbXV0YWJsZUZlYXR1cmVDb2xsZWN0aW9uIHtcbiAgICBjb25zdCB1cGRhdGVkRmVhdHVyZTogYW55ID0ge1xuICAgICAgLi4udGhpcy5mZWF0dXJlQ29sbGVjdGlvbi5mZWF0dXJlc1tmZWF0dXJlSW5kZXhdLFxuICAgICAgZ2VvbWV0cnksXG4gICAgfTtcblxuICAgIGNvbnN0IHVwZGF0ZWRGZWF0dXJlQ29sbGVjdGlvbiA9IHtcbiAgICAgIC4uLnRoaXMuZmVhdHVyZUNvbGxlY3Rpb24sXG4gICAgICBmZWF0dXJlczogW1xuICAgICAgICAuLi50aGlzLmZlYXR1cmVDb2xsZWN0aW9uLmZlYXR1cmVzLnNsaWNlKDAsIGZlYXR1cmVJbmRleCksXG4gICAgICAgIHVwZGF0ZWRGZWF0dXJlLFxuICAgICAgICAuLi50aGlzLmZlYXR1cmVDb2xsZWN0aW9uLmZlYXR1cmVzLnNsaWNlKGZlYXR1cmVJbmRleCArIDEpLFxuICAgICAgXSxcbiAgICB9O1xuXG4gICAgcmV0dXJuIG5ldyBJbW11dGFibGVGZWF0dXJlQ29sbGVjdGlvbih1cGRhdGVkRmVhdHVyZUNvbGxlY3Rpb24pO1xuICB9XG5cbiAgYWRkRmVhdHVyZShmZWF0dXJlOiBGZWF0dXJlKTogSW1tdXRhYmxlRmVhdHVyZUNvbGxlY3Rpb24ge1xuICAgIHJldHVybiB0aGlzLmFkZEZlYXR1cmVzKFtmZWF0dXJlXSk7XG4gIH1cblxuICBhZGRGZWF0dXJlcyhmZWF0dXJlczogRmVhdHVyZVtdKTogSW1tdXRhYmxlRmVhdHVyZUNvbGxlY3Rpb24ge1xuICAgIGNvbnN0IHVwZGF0ZWRGZWF0dXJlQ29sbGVjdGlvbiA9IHtcbiAgICAgIC4uLnRoaXMuZmVhdHVyZUNvbGxlY3Rpb24sXG4gICAgICBmZWF0dXJlczogWy4uLnRoaXMuZmVhdHVyZUNvbGxlY3Rpb24uZmVhdHVyZXMsIC4uLmZlYXR1cmVzXSxcbiAgICB9O1xuXG4gICAgcmV0dXJuIG5ldyBJbW11dGFibGVGZWF0dXJlQ29sbGVjdGlvbih1cGRhdGVkRmVhdHVyZUNvbGxlY3Rpb24pO1xuICB9XG5cbiAgZGVsZXRlRmVhdHVyZShmZWF0dXJlSW5kZXg6IG51bWJlcikge1xuICAgIHJldHVybiB0aGlzLmRlbGV0ZUZlYXR1cmVzKFtmZWF0dXJlSW5kZXhdKTtcbiAgfVxuXG4gIGRlbGV0ZUZlYXR1cmVzKGZlYXR1cmVJbmRleGVzOiBudW1iZXJbXSkge1xuICAgIGNvbnN0IGZlYXR1cmVzID0gWy4uLnRoaXMuZmVhdHVyZUNvbGxlY3Rpb24uZmVhdHVyZXNdO1xuICAgIGZlYXR1cmVJbmRleGVzLnNvcnQoKTtcbiAgICBmb3IgKGxldCBpID0gZmVhdHVyZUluZGV4ZXMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgIGNvbnN0IGZlYXR1cmVJbmRleCA9IGZlYXR1cmVJbmRleGVzW2ldO1xuICAgICAgaWYgKGZlYXR1cmVJbmRleCA+PSAwICYmIGZlYXR1cmVJbmRleCA8IGZlYXR1cmVzLmxlbmd0aCkge1xuICAgICAgICBmZWF0dXJlcy5zcGxpY2UoZmVhdHVyZUluZGV4LCAxKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCB1cGRhdGVkRmVhdHVyZUNvbGxlY3Rpb24gPSB7XG4gICAgICAuLi50aGlzLmZlYXR1cmVDb2xsZWN0aW9uLFxuICAgICAgZmVhdHVyZXMsXG4gICAgfTtcblxuICAgIHJldHVybiBuZXcgSW1tdXRhYmxlRmVhdHVyZUNvbGxlY3Rpb24odXBkYXRlZEZlYXR1cmVDb2xsZWN0aW9uKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBnZXRVcGRhdGVkUG9zaXRpb24odXBkYXRlZFBvc2l0aW9uOiBQb3NpdGlvbiwgcHJldmlvdXNQb3NpdGlvbjogUG9zaXRpb24pOiBQb3NpdGlvbiB7XG4gIC8vIFRoaXMgZnVuY3Rpb24gY2hlY2tzIGlmIHRoZSB1cGRhdGVkUG9zaXRpb24gaXMgbWlzc2luZyBlbGV2YXRpb25cbiAgLy8gYW5kIGNvcGllcyBpdCBmcm9tIHByZXZpb3VzUG9zaXRpb25cbiAgaWYgKHVwZGF0ZWRQb3NpdGlvbi5sZW5ndGggPT09IDIgJiYgcHJldmlvdXNQb3NpdGlvbi5sZW5ndGggPT09IDMpIHtcbiAgICBjb25zdCBlbGV2YXRpb24gPSAocHJldmlvdXNQb3NpdGlvbiBhcyBhbnkpWzJdO1xuICAgIHJldHVybiBbdXBkYXRlZFBvc2l0aW9uWzBdLCB1cGRhdGVkUG9zaXRpb25bMV0sIGVsZXZhdGlvbl07XG4gIH1cblxuICByZXR1cm4gdXBkYXRlZFBvc2l0aW9uO1xufVxuXG5mdW5jdGlvbiBpbW11dGFibHlSZXBsYWNlUG9zaXRpb24oXG4gIGNvb3JkaW5hdGVzOiBhbnksXG4gIHBvc2l0aW9uSW5kZXhlczogbnVtYmVyW10gfCBudWxsIHwgdW5kZWZpbmVkLFxuICB1cGRhdGVkUG9zaXRpb246IFBvc2l0aW9uLFxuICBpc1BvbHlnb25hbDogYm9vbGVhblxuKTogYW55IHtcbiAgaWYgKCFwb3NpdGlvbkluZGV4ZXMpIHtcbiAgICByZXR1cm4gY29vcmRpbmF0ZXM7XG4gIH1cbiAgaWYgKHBvc2l0aW9uSW5kZXhlcy5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gZ2V0VXBkYXRlZFBvc2l0aW9uKHVwZGF0ZWRQb3NpdGlvbiwgY29vcmRpbmF0ZXMpO1xuICB9XG4gIGlmIChwb3NpdGlvbkluZGV4ZXMubGVuZ3RoID09PSAxKSB7XG4gICAgY29uc3QgdXBkYXRlZCA9IFtcbiAgICAgIC4uLmNvb3JkaW5hdGVzLnNsaWNlKDAsIHBvc2l0aW9uSW5kZXhlc1swXSksXG4gICAgICBnZXRVcGRhdGVkUG9zaXRpb24odXBkYXRlZFBvc2l0aW9uLCBjb29yZGluYXRlc1twb3NpdGlvbkluZGV4ZXNbMF1dKSxcbiAgICAgIC4uLmNvb3JkaW5hdGVzLnNsaWNlKHBvc2l0aW9uSW5kZXhlc1swXSArIDEpLFxuICAgIF07XG5cbiAgICBpZiAoXG4gICAgICBpc1BvbHlnb25hbCAmJlxuICAgICAgKHBvc2l0aW9uSW5kZXhlc1swXSA9PT0gMCB8fCBwb3NpdGlvbkluZGV4ZXNbMF0gPT09IGNvb3JkaW5hdGVzLmxlbmd0aCAtIDEpXG4gICAgKSB7XG4gICAgICAvLyBmb3IgcG9seWdvbnMsIHRoZSBmaXJzdCBwb2ludCBpcyByZXBlYXRlZCBhdCB0aGUgZW5kIG9mIHRoZSBhcnJheVxuICAgICAgLy8gc28sIHVwZGF0ZSBpdCBvbiBib3RoIGVuZHMgb2YgdGhlIGFycmF5XG4gICAgICB1cGRhdGVkWzBdID0gZ2V0VXBkYXRlZFBvc2l0aW9uKHVwZGF0ZWRQb3NpdGlvbiwgY29vcmRpbmF0ZXNbMF0pO1xuICAgICAgdXBkYXRlZFtjb29yZGluYXRlcy5sZW5ndGggLSAxXSA9IGdldFVwZGF0ZWRQb3NpdGlvbih1cGRhdGVkUG9zaXRpb24sIGNvb3JkaW5hdGVzWzBdKTtcbiAgICB9XG4gICAgcmV0dXJuIHVwZGF0ZWQ7XG4gIH1cblxuICAvLyByZWN1cnNpdmVseSB1cGRhdGUgaW5uZXIgYXJyYXlcbiAgcmV0dXJuIFtcbiAgICAuLi5jb29yZGluYXRlcy5zbGljZSgwLCBwb3NpdGlvbkluZGV4ZXNbMF0pLFxuICAgIGltbXV0YWJseVJlcGxhY2VQb3NpdGlvbihcbiAgICAgIGNvb3JkaW5hdGVzW3Bvc2l0aW9uSW5kZXhlc1swXV0sXG4gICAgICBwb3NpdGlvbkluZGV4ZXMuc2xpY2UoMSwgcG9zaXRpb25JbmRleGVzLmxlbmd0aCksXG4gICAgICB1cGRhdGVkUG9zaXRpb24sXG4gICAgICBpc1BvbHlnb25hbFxuICAgICksXG4gICAgLi4uY29vcmRpbmF0ZXMuc2xpY2UocG9zaXRpb25JbmRleGVzWzBdICsgMSksXG4gIF07XG59XG5cbmZ1bmN0aW9uIGltbXV0YWJseVJlbW92ZVBvc2l0aW9uKFxuICBjb29yZGluYXRlczogYW55LFxuICBwb3NpdGlvbkluZGV4ZXM6IG51bWJlcltdIHwgbnVsbCB8IHVuZGVmaW5lZCxcbiAgaXNQb2x5Z29uYWw6IGJvb2xlYW5cbik6IGFueSB7XG4gIGlmICghcG9zaXRpb25JbmRleGVzKSB7XG4gICAgcmV0dXJuIGNvb3JkaW5hdGVzO1xuICB9XG4gIGlmIChwb3NpdGlvbkluZGV4ZXMubGVuZ3RoID09PSAwKSB7XG4gICAgdGhyb3cgRXJyb3IoJ011c3Qgc3BlY2lmeSB0aGUgaW5kZXggb2YgdGhlIHBvc2l0aW9uIHRvIHJlbW92ZScpO1xuICB9XG4gIGlmIChwb3NpdGlvbkluZGV4ZXMubGVuZ3RoID09PSAxKSB7XG4gICAgY29uc3QgdXBkYXRlZCA9IFtcbiAgICAgIC4uLmNvb3JkaW5hdGVzLnNsaWNlKDAsIHBvc2l0aW9uSW5kZXhlc1swXSksXG4gICAgICAuLi5jb29yZGluYXRlcy5zbGljZShwb3NpdGlvbkluZGV4ZXNbMF0gKyAxKSxcbiAgICBdO1xuXG4gICAgaWYgKFxuICAgICAgaXNQb2x5Z29uYWwgJiZcbiAgICAgIChwb3NpdGlvbkluZGV4ZXNbMF0gPT09IDAgfHwgcG9zaXRpb25JbmRleGVzWzBdID09PSBjb29yZGluYXRlcy5sZW5ndGggLSAxKVxuICAgICkge1xuICAgICAgLy8gZm9yIHBvbHlnb25zLCB0aGUgZmlyc3QgcG9pbnQgaXMgcmVwZWF0ZWQgYXQgdGhlIGVuZCBvZiB0aGUgYXJyYXlcbiAgICAgIC8vIHNvLCBpZiB0aGUgZmlyc3QvbGFzdCBjb29yZGluYXRlIGlzIHRvIGJlIHJlbW92ZWQsIGNvb3JkaW5hdGVzWzFdIHdpbGwgYmUgdGhlIG5ldyBmaXJzdC9sYXN0IGNvb3JkaW5hdGVcbiAgICAgIGlmIChwb3NpdGlvbkluZGV4ZXNbMF0gPT09IDApIHtcbiAgICAgICAgLy8gY2hhbmdlIHRoZSBsYXN0IHRvIGJlIHRoZSBzYW1lIGFzIHRoZSBmaXJzdFxuICAgICAgICB1cGRhdGVkW3VwZGF0ZWQubGVuZ3RoIC0gMV0gPSB1cGRhdGVkWzBdO1xuICAgICAgfSBlbHNlIGlmIChwb3NpdGlvbkluZGV4ZXNbMF0gPT09IGNvb3JkaW5hdGVzLmxlbmd0aCAtIDEpIHtcbiAgICAgICAgLy8gY2hhbmdlIHRoZSBmaXJzdCB0byBiZSB0aGUgc2FtZSBhcyB0aGUgbGFzdFxuICAgICAgICB1cGRhdGVkWzBdID0gdXBkYXRlZFt1cGRhdGVkLmxlbmd0aCAtIDFdO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdXBkYXRlZDtcbiAgfVxuXG4gIC8vIHJlY3Vyc2l2ZWx5IHVwZGF0ZSBpbm5lciBhcnJheVxuICByZXR1cm4gW1xuICAgIC4uLmNvb3JkaW5hdGVzLnNsaWNlKDAsIHBvc2l0aW9uSW5kZXhlc1swXSksXG4gICAgaW1tdXRhYmx5UmVtb3ZlUG9zaXRpb24oXG4gICAgICBjb29yZGluYXRlc1twb3NpdGlvbkluZGV4ZXNbMF1dLFxuICAgICAgcG9zaXRpb25JbmRleGVzLnNsaWNlKDEsIHBvc2l0aW9uSW5kZXhlcy5sZW5ndGgpLFxuICAgICAgaXNQb2x5Z29uYWxcbiAgICApLFxuICAgIC4uLmNvb3JkaW5hdGVzLnNsaWNlKHBvc2l0aW9uSW5kZXhlc1swXSArIDEpLFxuICBdO1xufVxuXG5mdW5jdGlvbiBpbW11dGFibHlBZGRQb3NpdGlvbihcbiAgY29vcmRpbmF0ZXM6IGFueSxcbiAgcG9zaXRpb25JbmRleGVzOiBudW1iZXJbXSB8IG51bGwgfCB1bmRlZmluZWQsXG4gIHBvc2l0aW9uVG9BZGQ6IFBvc2l0aW9uLFxuICBpc1BvbHlnb25hbDogYm9vbGVhblxuKTogYW55IHtcbiAgaWYgKCFwb3NpdGlvbkluZGV4ZXMpIHtcbiAgICByZXR1cm4gY29vcmRpbmF0ZXM7XG4gIH1cbiAgaWYgKHBvc2l0aW9uSW5kZXhlcy5sZW5ndGggPT09IDApIHtcbiAgICB0aHJvdyBFcnJvcignTXVzdCBzcGVjaWZ5IHRoZSBpbmRleCBvZiB0aGUgcG9zaXRpb24gdG8gcmVtb3ZlJyk7XG4gIH1cbiAgaWYgKHBvc2l0aW9uSW5kZXhlcy5sZW5ndGggPT09IDEpIHtcbiAgICBjb25zdCB1cGRhdGVkID0gW1xuICAgICAgLi4uY29vcmRpbmF0ZXMuc2xpY2UoMCwgcG9zaXRpb25JbmRleGVzWzBdKSxcbiAgICAgIHBvc2l0aW9uVG9BZGQsXG4gICAgICAuLi5jb29yZGluYXRlcy5zbGljZShwb3NpdGlvbkluZGV4ZXNbMF0pLFxuICAgIF07XG4gICAgcmV0dXJuIHVwZGF0ZWQ7XG4gIH1cblxuICAvLyByZWN1cnNpdmVseSB1cGRhdGUgaW5uZXIgYXJyYXlcbiAgcmV0dXJuIFtcbiAgICAuLi5jb29yZGluYXRlcy5zbGljZSgwLCBwb3NpdGlvbkluZGV4ZXNbMF0pLFxuICAgIGltbXV0YWJseUFkZFBvc2l0aW9uKFxuICAgICAgY29vcmRpbmF0ZXNbcG9zaXRpb25JbmRleGVzWzBdXSxcbiAgICAgIHBvc2l0aW9uSW5kZXhlcy5zbGljZSgxLCBwb3NpdGlvbkluZGV4ZXMubGVuZ3RoKSxcbiAgICAgIHBvc2l0aW9uVG9BZGQsXG4gICAgICBpc1BvbHlnb25hbFxuICAgICksXG4gICAgLi4uY29vcmRpbmF0ZXMuc2xpY2UocG9zaXRpb25JbmRleGVzWzBdICsgMSksXG4gIF07XG59XG5cbmZ1bmN0aW9uIHBydW5lR2VvbWV0cnlJZk5lY2Vzc2FyeShnZW9tZXRyeTogR2VvbWV0cnkpIHtcbiAgc3dpdGNoIChnZW9tZXRyeS50eXBlKSB7XG4gICAgY2FzZSAnUG9seWdvbic6XG4gICAgICBwcnVuZVBvbHlnb25JZk5lY2Vzc2FyeShnZW9tZXRyeSk7XG4gICAgICBicmVhaztcbiAgICBjYXNlICdNdWx0aUxpbmVTdHJpbmcnOlxuICAgICAgcHJ1bmVNdWx0aUxpbmVTdHJpbmdJZk5lY2Vzc2FyeShnZW9tZXRyeSk7XG4gICAgICBicmVhaztcbiAgICBjYXNlICdNdWx0aVBvbHlnb24nOlxuICAgICAgcHJ1bmVNdWx0aVBvbHlnb25JZk5lY2Vzc2FyeShnZW9tZXRyeSk7XG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgLy8gTm90IGRvd25ncmFkYWJsZVxuICAgICAgYnJlYWs7XG4gIH1cbn1cblxuZnVuY3Rpb24gcHJ1bmVQb2x5Z29uSWZOZWNlc3NhcnkoZ2VvbWV0cnk6IFBvbHlnb24pIHtcbiAgY29uc3QgcG9seWdvbiA9IGdlb21ldHJ5LmNvb3JkaW5hdGVzO1xuXG4gIC8vIElmIGFueSBob2xlIGlzIG5vIGxvbmdlciBhIHBvbHlnb24sIHJlbW92ZSB0aGUgaG9sZSBlbnRpcmVseVxuICBmb3IgKGxldCBob2xlSW5kZXggPSAxOyBob2xlSW5kZXggPCBwb2x5Z29uLmxlbmd0aDsgaG9sZUluZGV4KyspIHtcbiAgICBpZiAocmVtb3ZlSG9sZUlmTmVjZXNzYXJ5KHBvbHlnb24sIGhvbGVJbmRleCkpIHtcbiAgICAgIC8vIEl0IHdhcyByZW1vdmVkLCBzbyBrZWVwIHRoZSBpbmRleCB0aGUgc2FtZVxuICAgICAgaG9sZUluZGV4LS07XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIHBydW5lTXVsdGlMaW5lU3RyaW5nSWZOZWNlc3NhcnkoZ2VvbWV0cnk6IE11bHRpTGluZVN0cmluZykge1xuICBmb3IgKGxldCBsaW5lU3RyaW5nSW5kZXggPSAwOyBsaW5lU3RyaW5nSW5kZXggPCBnZW9tZXRyeS5jb29yZGluYXRlcy5sZW5ndGg7IGxpbmVTdHJpbmdJbmRleCsrKSB7XG4gICAgY29uc3QgbGluZVN0cmluZyA9IGdlb21ldHJ5LmNvb3JkaW5hdGVzW2xpbmVTdHJpbmdJbmRleF07XG4gICAgaWYgKGxpbmVTdHJpbmcubGVuZ3RoID09PSAxKSB7XG4gICAgICAvLyBPbmx5IGEgc2luZ2xlIHBvc2l0aW9uIGxlZnQgb24gdGhpcyBMaW5lU3RyaW5nLCBzbyByZW1vdmUgaXQgKGNhbid0IGhhdmUgUG9pbnQgaW4gTXVsdGlMaW5lU3RyaW5nKVxuICAgICAgZ2VvbWV0cnkuY29vcmRpbmF0ZXMuc3BsaWNlKGxpbmVTdHJpbmdJbmRleCwgMSk7XG4gICAgICAvLyBLZWVwIHRoZSBpbmRleCB0aGUgc2FtZVxuICAgICAgbGluZVN0cmluZ0luZGV4LS07XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIHBydW5lTXVsdGlQb2x5Z29uSWZOZWNlc3NhcnkoZ2VvbWV0cnk6IE11bHRpUG9seWdvbikge1xuICBmb3IgKGxldCBwb2x5Z29uSW5kZXggPSAwOyBwb2x5Z29uSW5kZXggPCBnZW9tZXRyeS5jb29yZGluYXRlcy5sZW5ndGg7IHBvbHlnb25JbmRleCsrKSB7XG4gICAgY29uc3QgcG9seWdvbiA9IGdlb21ldHJ5LmNvb3JkaW5hdGVzW3BvbHlnb25JbmRleF07XG4gICAgY29uc3Qgb3V0ZXJSaW5nID0gcG9seWdvblswXTtcblxuICAgIC8vIElmIHRoZSBvdXRlciByaW5nIGlzIG5vIGxvbmdlciBhIHBvbHlnb24sIHJlbW92ZSB0aGUgd2hvbGUgcG9seWdvblxuICAgIGlmIChvdXRlclJpbmcubGVuZ3RoIDw9IDMpIHtcbiAgICAgIGdlb21ldHJ5LmNvb3JkaW5hdGVzLnNwbGljZShwb2x5Z29uSW5kZXgsIDEpO1xuICAgICAgLy8gSXQgd2FzIHJlbW92ZWQsIHNvIGtlZXAgdGhlIGluZGV4IHRoZSBzYW1lXG4gICAgICBwb2x5Z29uSW5kZXgtLTtcbiAgICB9XG5cbiAgICBmb3IgKGxldCBob2xlSW5kZXggPSAxOyBob2xlSW5kZXggPCBwb2x5Z29uLmxlbmd0aDsgaG9sZUluZGV4KyspIHtcbiAgICAgIGlmIChyZW1vdmVIb2xlSWZOZWNlc3NhcnkocG9seWdvbiwgaG9sZUluZGV4KSkge1xuICAgICAgICAvLyBJdCB3YXMgcmVtb3ZlZCwgc28ga2VlcCB0aGUgaW5kZXggdGhlIHNhbWVcbiAgICAgICAgaG9sZUluZGV4LS07XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIHJlbW92ZUhvbGVJZk5lY2Vzc2FyeShwb2x5Z29uOiBQb2x5Z29uQ29vcmRpbmF0ZXMsIGhvbGVJbmRleDogbnVtYmVyKSB7XG4gIGNvbnN0IGhvbGUgPSBwb2x5Z29uW2hvbGVJbmRleF07XG4gIGlmIChob2xlLmxlbmd0aCA8PSAzKSB7XG4gICAgcG9seWdvbi5zcGxpY2UoaG9sZUluZGV4LCAxKTtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICByZXR1cm4gZmFsc2U7XG59XG4iXX0=","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.MeasureAngleMode = void 0;\n\nvar _bearing = _interopRequireDefault(require(\"@turf/bearing\"));\n\nvar _center = _interopRequireDefault(require(\"@turf/center\"));\n\nvar _memoize = _interopRequireDefault(require(\"../memoize\"));\n\nvar _geojsonEditMode = require(\"./geojson-edit-mode\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(n); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar DEFAULT_TOOLTIPS = [];\n\nvar MeasureAngleMode = /*#__PURE__*/function (_GeoJsonEditMode) {\n  _inherits(MeasureAngleMode, _GeoJsonEditMode);\n\n  var _super = _createSuper(MeasureAngleMode);\n\n  function MeasureAngleMode() {\n    var _this;\n\n    _classCallCheck(this, MeasureAngleMode);\n\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    _this = _super.call.apply(_super, [this].concat(args));\n\n    _defineProperty(_assertThisInitialized(_this), \"_getTooltips\", (0, _memoize[\"default\"])(function (_ref) {\n      var modeConfig = _ref.modeConfig,\n          vertex = _ref.vertex,\n          point1 = _ref.point1,\n          point2 = _ref.point2;\n      var tooltips = DEFAULT_TOOLTIPS;\n\n      if (vertex && point1 && point2) {\n        var _ref2 = modeConfig || {},\n            formatTooltip = _ref2.formatTooltip,\n            measurementCallback = _ref2.measurementCallback;\n\n        var units = 'deg';\n        var angle1 = (0, _bearing[\"default\"])(vertex, point1);\n        var angle2 = (0, _bearing[\"default\"])(vertex, point2);\n        var angle = Math.abs(angle1 - angle2);\n\n        if (angle > 180) {\n          angle = 360 - angle;\n        }\n\n        var text;\n\n        if (formatTooltip) {\n          text = formatTooltip(angle);\n        } else {\n          // By default, round to 2 decimal places and append units\n          // @ts-ignore\n          text = \"\".concat(parseFloat(angle).toFixed(2), \" \").concat(units);\n        }\n\n        if (measurementCallback) {\n          measurementCallback(angle);\n        }\n\n        var position = (0, _center[\"default\"])({\n          type: 'FeatureCollection',\n          features: [point1, point2].map(function (p) {\n            return {\n              type: 'Feature',\n              geometry: {\n                type: 'Point',\n                coordinates: p\n              }\n            };\n          })\n        }).geometry.coordinates;\n        tooltips = [{\n          position: position,\n          text: text\n        }];\n      }\n\n      return tooltips;\n    }));\n\n    return _this;\n  }\n\n  _createClass(MeasureAngleMode, [{\n    key: \"handleClick\",\n    value: function handleClick(event, props) {\n      if (this.getClickSequence().length >= 3) {\n        this.resetClickSequence();\n      }\n\n      this.addClickSequence(event);\n    } // Called when the pointer moved, regardless of whether the pointer is down, up, and whether something was picked\n\n  }, {\n    key: \"handlePointerMove\",\n    value: function handlePointerMove(event, props) {\n      props.onUpdateCursor('cell');\n    }\n  }, {\n    key: \"getPoints\",\n    value: function getPoints(props) {\n      var clickSequence = this.getClickSequence();\n\n      var points = _toConsumableArray(clickSequence);\n\n      if (clickSequence.length < 3 && props.lastPointerMoveEvent) {\n        points.push(props.lastPointerMoveEvent.mapCoords);\n      }\n\n      return points;\n    } // Return features that can be used as a guide for editing the data\n\n  }, {\n    key: \"getGuides\",\n    value: function getGuides(props) {\n      var guides = {\n        type: 'FeatureCollection',\n        features: []\n      };\n      var features = guides.features;\n      var points = this.getPoints(props);\n\n      if (points.length > 2) {\n        features.push({\n          type: 'Feature',\n          properties: {\n            guideType: 'tentative'\n          },\n          geometry: {\n            type: 'LineString',\n            coordinates: [points[1], points[0], points[2]]\n          }\n        });\n      } else if (points.length > 1) {\n        features.push({\n          type: 'Feature',\n          properties: {\n            guideType: 'tentative'\n          },\n          geometry: {\n            type: 'LineString',\n            coordinates: [points[1], points[0]]\n          }\n        });\n      }\n\n      return guides;\n    }\n  }, {\n    key: \"getTooltips\",\n    value: function getTooltips(props) {\n      var points = this.getPoints(props);\n      return this._getTooltips({\n        modeConfig: props.modeConfig,\n        vertex: points[0],\n        point1: points[1],\n        point2: points[2]\n      });\n    }\n  }]);\n\n  return MeasureAngleMode;\n}(_geojsonEditMode.GeoJsonEditMode);\n\nexports.MeasureAngleMode = MeasureAngleMode;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvbWVhc3VyZS1hbmdsZS1tb2RlLnRzIl0sIm5hbWVzIjpbIkRFRkFVTFRfVE9PTFRJUFMiLCJNZWFzdXJlQW5nbGVNb2RlIiwibW9kZUNvbmZpZyIsInZlcnRleCIsInBvaW50MSIsInBvaW50MiIsInRvb2x0aXBzIiwiZm9ybWF0VG9vbHRpcCIsIm1lYXN1cmVtZW50Q2FsbGJhY2siLCJ1bml0cyIsImFuZ2xlMSIsImFuZ2xlMiIsImFuZ2xlIiwiTWF0aCIsImFicyIsInRleHQiLCJwYXJzZUZsb2F0IiwidG9GaXhlZCIsInBvc2l0aW9uIiwidHlwZSIsImZlYXR1cmVzIiwibWFwIiwicCIsImdlb21ldHJ5IiwiY29vcmRpbmF0ZXMiLCJldmVudCIsInByb3BzIiwiZ2V0Q2xpY2tTZXF1ZW5jZSIsImxlbmd0aCIsInJlc2V0Q2xpY2tTZXF1ZW5jZSIsImFkZENsaWNrU2VxdWVuY2UiLCJvblVwZGF0ZUN1cnNvciIsImNsaWNrU2VxdWVuY2UiLCJwb2ludHMiLCJsYXN0UG9pbnRlck1vdmVFdmVudCIsInB1c2giLCJtYXBDb29yZHMiLCJndWlkZXMiLCJnZXRQb2ludHMiLCJwcm9wZXJ0aWVzIiwiZ3VpZGVUeXBlIiwiX2dldFRvb2x0aXBzIiwiR2VvSnNvbkVkaXRNb2RlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUE7O0FBRUE7O0FBRUE7O0FBSUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFQSxJQUFNQSxnQkFBZ0IsR0FBRyxFQUF6Qjs7SUFFYUMsZ0I7Ozs7Ozs7Ozs7Ozs7Ozs7bUVBQ0kseUJBQVEsZ0JBQTRDO0FBQUEsVUFBekNDLFVBQXlDLFFBQXpDQSxVQUF5QztBQUFBLFVBQTdCQyxNQUE2QixRQUE3QkEsTUFBNkI7QUFBQSxVQUFyQkMsTUFBcUIsUUFBckJBLE1BQXFCO0FBQUEsVUFBYkMsTUFBYSxRQUFiQSxNQUFhO0FBQ2pFLFVBQUlDLFFBQVEsR0FBR04sZ0JBQWY7O0FBRUEsVUFB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UUFBQUEsTUFBTSxFQUFFNEIsTUFBTSxDQUFDLENBQUQ7QUFKUyxPQUFsQixDQUFQO0FBTUQ7Ozs7RUFsSG1DUyxnQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0dXJmQmVhcmluZyBmcm9tICdAdHVyZi9iZWFyaW5nJztcbi8vIEB0cy1pZ25vcmVcbmltcG9ydCB0dXJmQ2VudGVyIGZyb20gJ0B0dXJmL2NlbnRlcic7XG4vLyBAdHMtaWdub3JlXG5pbXBvcnQgbWVtb2l6ZSBmcm9tICcuLi9tZW1vaXplJztcblxuaW1wb3J0IHsgQ2xpY2tFdmVudCwgUG9pbnRlck1vdmVFdmVudCwgVG9vbHRpcCwgTW9kZVByb3BzLCBHdWlkZUZlYXR1cmVDb2xsZWN0aW9uIH0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHsgRmVhdHVyZUNvbGxlY3Rpb24gfSBmcm9tICcuLi9nZW9qc29uLXR5cGVzJztcbmltcG9ydCB7IEdlb0pzb25FZGl0TW9kZSB9IGZyb20gJy4vZ2VvanNvbi1lZGl0LW1vZGUnO1xuXG5jb25zdCBERUZBVUxUX1RPT0xUSVBTID0gW107XG5cbmV4cG9ydCBjbGFzcyBNZWFzdXJlQW5nbGVNb2RlIGV4dGVuZHMgR2VvSnNvbkVkaXRNb2RlIHtcbiAgX2dldFRvb2x0aXBzID0gbWVtb2l6ZSgoeyBtb2RlQ29uZmlnLCB2ZXJ0ZXgsIHBvaW50MSwgcG9pbnQyIH0pID0+IHtcbiAgICBsZXQgdG9vbHRpcHMgPSBERUZBVUxUX1RPT0xUSVBTO1xuXG4gICAgaWYgKHZlcnRleCAmJiBwb2ludDEgJiYgcG9pbnQyKSB7XG4gICAgICBjb25zdCB7IGZvcm1hdFRvb2x0aXAsIG1lYXN1cmVtZW50Q2FsbGJhY2sgfSA9IG1vZGVDb25maWcgfHwge307XG4gICAgICBjb25zdCB1bml0cyA9ICdkZWcnO1xuXG4gICAgICBjb25zdCBhbmdsZTEgPSB0dXJmQmVhcmluZyh2ZXJ0ZXgsIHBvaW50MSk7XG4gICAgICBjb25zdCBhbmdsZTIgPSB0dXJmQmVhcmluZyh2ZXJ0ZXgsIHBvaW50Mik7XG4gICAgICBsZXQgYW5nbGUgPSBNYXRoLmFicyhhbmdsZTEgLSBhbmdsZTIpO1xuICAgICAgaWYgKGFuZ2xlID4gMTgwKSB7XG4gICAgICAgIGFuZ2xlID0gMzYwIC0gYW5nbGU7XG4gICAgICB9XG5cbiAgICAgIGxldCB0ZXh0O1xuICAgICAgaWYgKGZvcm1hdFRvb2x0aXApIHtcbiAgICAgICAgdGV4dCA9IGZvcm1hdFRvb2x0aXAoYW5nbGUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gQnkgZGVmYXVsdCwgcm91bmQgdG8gMiBkZWNpbWFsIHBsYWNlcyBhbmQgYXBwZW5kIHVuaXRzXG4gICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgdGV4dCA9IGAke3BhcnNlRmxvYXQoYW5nbGUpLnRvRml4ZWQoMil9ICR7dW5pdHN9YDtcbiAgICAgIH1cblxuICAgICAgaWYgKG1lYXN1cmVtZW50Q2FsbGJhY2spIHtcbiAgICAgICAgbWVhc3VyZW1lbnRDYWxsYmFjayhhbmdsZSk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHBvc2l0aW9uID0gdHVyZkNlbnRlcih7XG4gICAgICAgIHR5cGU6ICdGZWF0dXJlQ29sbGVjdGlvbicsXG4gICAgICAgIGZlYXR1cmVzOiBbcG9pbnQxLCBwb2ludDJdLm1hcCgocCkgPT4gKHtcbiAgICAgICAgICB0eXBlOiAnRmVhdHVyZScsXG4gICAgICAgICAgZ2VvbWV0cnk6IHtcbiAgICAgICAgICAgIHR5cGU6ICdQb2ludCcsXG4gICAgICAgICAgICBjb29yZGluYXRlczogcCxcbiAgICAgICAgICB9LFxuICAgICAgICB9KSksXG4gICAgICB9KS5nZW9tZXRyeS5jb29yZGluYXRlcztcblxuICAgICAgdG9vbHRpcHMgPSBbXG4gICAgICAgIHtcbiAgICAgICAgICBwb3NpdGlvbixcbiAgICAgICAgICB0ZXh0LFxuICAgICAgICB9LFxuICAgICAgXTtcbiAgICB9XG5cbiAgICByZXR1cm4gdG9vbHRpcHM7XG4gIH0pO1xuXG4gIGhhbmRsZUNsaWNrKGV2ZW50OiBDbGlja0V2ZW50LCBwcm9wczogTW9kZVByb3BzPEZlYXR1cmVDb2xsZWN0aW9uPik6IHZvaWQge1xuICAgIGlmICh0aGlzLmdldENsaWNrU2VxdWVuY2UoKS5sZW5ndGggPj0gMykge1xuICAgICAgdGhpcy5yZXNldENsaWNrU2VxdWVuY2UoKTtcbiAgICB9XG5cbiAgICB0aGlzLmFkZENsaWNrU2VxdWVuY2UoZXZlbnQpO1xuICB9XG5cbiAgLy8gQ2FsbGVkIHdoZW4gdGhlIHBvaW50ZXIgbW92ZWQsIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciB0aGUgcG9pbnRlciBpcyBkb3duLCB1cCwgYW5kIHdoZXRoZXIgc29tZXRoaW5nIHdhcyBwaWNrZWRcbiAgaGFuZGxlUG9pbnRlck1vdmUoZXZlbnQ6IFBvaW50ZXJNb3ZlRXZlbnQsIHByb3BzOiBNb2RlUHJvcHM8RmVhdHVyZUNvbGxlY3Rpb24+KTogdm9pZCB7XG4gICAgcHJvcHMub25VcGRhdGVDdXJzb3IoJ2NlbGwnKTtcbiAgfVxuXG4gIGdldFBvaW50cyhwcm9wczogTW9kZVByb3BzPEZlYXR1cmVDb2xsZWN0aW9uPikge1xuICAgIGNvbnN0IGNsaWNrU2VxdWVuY2UgPSB0aGlzLmdldENsaWNrU2VxdWVuY2UoKTtcblxuICAgIGNvbnN0IHBvaW50cyA9IFsuLi5jbGlja1NlcXVlbmNlXTtcblxuICAgIGlmIChjbGlja1NlcXVlbmNlLmxlbmd0aCA8IDMgJiYgcHJvcHMubGFzdFBvaW50ZXJNb3ZlRXZlbnQpIHtcbiAgICAgIHBvaW50cy5wdXNoKHByb3BzLmxhc3RQb2ludGVyTW92ZUV2ZW50Lm1hcENvb3Jkcyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHBvaW50cztcbiAgfVxuXG4gIC8vIFJldHVybiBmZWF0dXJlcyB0aGF0IGNhbiBiZSB1c2VkIGFzIGEgZ3VpZGUgZm9yIGVkaXRpbmcgdGhlIGRhdGFcbiAgZ2V0R3VpZGVzKHByb3BzOiBNb2RlUHJvcHM8RmVhdHVyZUNvbGxlY3Rpb24+KTogR3VpZGVGZWF0dXJlQ29sbGVjdGlvbiB7XG4gICAgY29uc3QgZ3VpZGVzOiBHdWlkZUZlYXR1cmVDb2xsZWN0aW9uID0geyB0eXBlOiAnRmVhdHVyZUNvbGxlY3Rpb24nLCBmZWF0dXJlczogW10gfTtcbiAgICBjb25zdCB7IGZlYXR1cmVzIH0gPSBndWlkZXM7XG5cbiAgICBjb25zdCBwb2ludHMgPSB0aGlzLmdldFBvaW50cyhwcm9wcyk7XG5cbiAgICBpZiAocG9pbnRzLmxlbmd0aCA+IDIpIHtcbiAgICAgIGZlYXR1cmVzLnB1c2goe1xuICAgICAgICB0eXBlOiAnRmVhdHVyZScsXG4gICAgICAgIHByb3BlcnRpZXM6IHsgZ3VpZGVUeXBlOiAndGVudGF0aXZlJyB9LFxuICAgICAgICBnZW9tZXRyeToge1xuICAgICAgICAgIHR5cGU6ICdMaW5lU3RyaW5nJyxcbiAgICAgICAgICBjb29yZGluYXRlczogW3BvaW50c1sxXSwgcG9pbnRzWzBdLCBwb2ludHNbMl1dLFxuICAgICAgICB9LFxuICAgICAgfSk7XG4gICAgfSBlbHNlIGlmIChwb2ludHMubGVuZ3RoID4gMSkge1xuICAgICAgZmVhdHVyZXMucHVzaCh7XG4gICAgICAgIHR5cGU6ICdGZWF0dXJlJyxcbiAgICAgICAgcHJvcGVydGllczogeyBndWlkZVR5cGU6ICd0ZW50YXRpdmUnIH0sXG4gICAgICAgIGdlb21ldHJ5OiB7XG4gICAgICAgICAgdHlwZTogJ0xpbmVTdHJpbmcnLFxuICAgICAgICAgIGNvb3JkaW5hdGVzOiBbcG9pbnRzWzFdLCBwb2ludHNbMF1dLFxuICAgICAgICB9LFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGd1aWRlcztcbiAgfVxuXG4gIGdldFRvb2x0aXBzKHByb3BzOiBNb2RlUHJvcHM8RmVhdHVyZUNvbGxlY3Rpb24+KTogVG9vbHRpcFtdIHtcbiAgICBjb25zdCBwb2ludHMgPSB0aGlzLmdldFBvaW50cyhwcm9wcyk7XG5cbiAgICByZXR1cm4gdGhpcy5fZ2V0VG9vbHRpcHMoe1xuICAgICAgbW9kZUNvbmZpZzogcHJvcHMubW9kZUNvbmZpZyxcbiAgICAgIHZlcnRleDogcG9pbnRzWzBdLFxuICAgICAgcG9pbnQxOiBwb2ludHNbMV0sXG4gICAgICBwb2ludDI6IHBvaW50c1syXSxcbiAgICB9KTtcbiAgfVxufVxuIl19","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.MeasureAreaMode = void 0;\n\nvar _area = _interopRequireDefault(require(\"@turf/area\"));\n\nvar _centroid = _interopRequireDefault(require(\"@turf/centroid\"));\n\nvar _drawPolygonMode = require(\"./draw-polygon-mode\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _get(target, property, receiver) { if (typeof Reflect !== \"undefined\" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return _get(target, property, receiver || target); }\n\nfunction _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; }\n\nfunction _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nvar DEFAULT_TOOLTIPS = [];\n\nvar MeasureAreaMode = /*#__PURE__*/function (_DrawPolygonMode) {\n  _inherits(MeasureAreaMode, _DrawPolygonMode);\n\n  var _super = _createSuper(MeasureAreaMode);\n\n  function MeasureAreaMode() {\n    _classCallCheck(this, MeasureAreaMode);\n\n    return _super.apply(this, arguments);\n  }\n\n  _createClass(MeasureAreaMode, [{\n    key: \"handleClick\",\n    value: function handleClick(event, props) {\n      var propsWithoutEdit = _objectSpread({}, props, {\n        // @ts-ignore\n        onEdit: function onEdit() {}\n      });\n\n      _get(_getPrototypeOf(MeasureAreaMode.prototype), \"handleClick\", this).call(this, event, propsWithoutEdit);\n    }\n  }, {\n    key: \"getTooltips\",\n    value: function getTooltips(props) {\n      var tentativeGuide = this.getTentativeGuide(props);\n\n      if (tentativeGuide && tentativeGuide.geometry.type === 'Polygon') {\n        var modeConfig = props.modeConfig;\n\n        var _ref = modeConfig || {},\n            formatTooltip = _ref.formatTooltip,\n            measurementCallback = _ref.measurementCallback;\n\n        var units = 'sq. m';\n        var centroid = (0, _centroid[\"default\"])(tentativeGuide);\n        var area = (0, _area[\"default\"])(tentativeGuide);\n        var text;\n\n        if (formatTooltip) {\n          text = formatTooltip(area);\n        } else {\n          // By default, round to 2 decimal places and append units\n          // @ts-ignore\n          text = \"\".concat(parseFloat(area).toFixed(2), \" \").concat(units);\n        }\n\n        if (measurementCallback) {\n          measurementCallback(area);\n        }\n\n        return [{\n          position: centroid.geometry.coordinates,\n          text: text\n        }];\n      }\n\n      return DEFAULT_TOOLTIPS;\n    }\n  }]);\n\n  return MeasureAreaMode;\n}(_drawPolygonMode.DrawPolygonMode);\n\nexports.MeasureAreaMode = MeasureAreaMode;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvbWVhc3VyZS1hcmVhLW1vZGUudHMiXSwibmFtZXMiOlsiREVGQVVMVF9UT09MVElQUyIsIk1lYXN1cmVBcmVhTW9kZSIsImV2ZW50IiwicHJvcHMiLCJwcm9wc1dpdGhvdXRFZGl0Iiwib25FZGl0IiwidGVudGF0aXZlR3VpZGUiLCJnZXRUZW50YXRpdmVHdWlkZSIsImdlb21ldHJ5IiwidHlwZSIsIm1vZGVDb25maWciLCJmb3JtYXRUb29sdGlwIiwibWVhc3VyZW1lbnRDYWxsYmFjayIsInVuaXRzIiwiY2VudHJvaWQiLCJhcmVhIiwidGV4dCIsInBhcnNlRmxvYXQiLCJ0b0ZpeGVkIiwicG9zaXRpb24iLCJjb29yZGluYXRlcyIsIkRyYXdQb2x5Z29uTW9kZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBOztBQUNBOztBQUdBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFQSxJQUFNQSxnQkFBZ0IsR0FBRyxFQUF6Qjs7SUFFYUMsZTs7Ozs7Ozs7Ozs7OztnQ0FDQ0MsSyxFQUFtQkMsSyxFQUFxQztBQUNsRSxVQUFNQyxnQkFBZ0IscUJBQ2pCRCxLQURpQjtBQUVwQjtBQUNBRSxRQUFBQSxNQUFNLEVBQUUsa0JBQU0sQ0FBRTtBQUhJLFFBQXRCOztBQU1BLHVGQUFrQkgsS0FBbEIsRUFBeUJFLGdCQUF6QjtBQUNEOzs7Z0NBRVdELEssRUFBZ0Q7QUFDMUQsVUFBTUcsY0FBYyxHQUFHLEtBQUtDLGlCQUFMLENBQXVCSixLQUF2QixDQUF2Qjs7QUFFQSxVQUFJRyxjQUFjLElBQUlBLGNBQWMsQ0FBQ0UsUUFBZixDQUF3QkMsSUFBeEIsS0FBaUMsU0FBdkQsRUFBa0U7QUFBQSxZQUN4REMsVUFEd0QsR0FDekNQLEtBRHlDLENBQ3hETyxVQUR3RDs7QUFBQSxtQkFFakJBLFVBQVUsSUFBSSxFQUZHO0FBQUEsWUFFeERDLGFBRndELFFBRXhEQSxhQUZ3RDtBQUFBLFlBRXpDQyxtQkFGeUMsUUFFekNBLG1CQUZ5Qzs7QUFHaEUsWUFBTUMsS0FBSyxHQUFHLE9BQWQ7QUFFQSxZQUFNQyxRQUFRLEdBQUcsMEJBQWFSLGNBQWIsQ0FBakI7QUFDQSxZQUFNUyxJQUFJLEdBQUcsc0JBQVNULGNBQVQsQ0FBYjtBQUVBLFlBQUlVLElBQUo7O0FBQ0EsWUFBSUwsYUFBSixFQUFtQjtBQUNqQkssVUFBQUEsSUFBSSxHQUFHTCxhQUFhLENBQUNJLElBQUQsQ0FBcEI7QUFDRCxTQUZELE1BRU87QUFDTDtBQUNBO0FBQ0FDLFVBQUFBLElBQUksYUFBTUMsVUFBVSxDQUFDRixJQUFELENBQVYsQ0FBaUJHLE9BQWpCLENBQXlCLENBQXpCLENBQU4sY0FBcUNMLEtBQXJDLENBQUo7QUFDRDs7QUFFRCxZQUFJRCxtQkFBSixFQUF5QjtBQUN2QkEsVUFBQUEsbUJBQW1CLENBQUNHLElBQUQsQ0FBbkI7QUFDRDs7QUFFRCxlQUFPLENBQ0w7QUFDRUksVUFBQUEsUUFBUSxFQUFFTCxRQUFRLENBQUNOLFFBQVQsQ0FBa0JZLFdBRDlCO0FBRUVKLFVBQUFBLElBQUksRUFBSkE7QUFGRixTQURLLENBQVA7QUFNRDs7QUFDRCxhQUFPaEIsZ0JBQVA7QUFDRDs7OztFQTNDa0NxQixnQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0dXJmQXJlYSBmcm9tICdAdHVyZi9hcmVhJztcbmltcG9ydCB0dXJmQ2VudHJvaWQgZnJvbSAnQHR1cmYvY2VudHJvaWQnO1xuaW1wb3J0IHsgQ2xpY2tFdmVudCwgVG9vbHRpcCwgTW9kZVByb3BzIH0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHsgRmVhdHVyZUNvbGxlY3Rpb24gfSBmcm9tICcuLi9nZW9qc29uLXR5cGVzJztcbmltcG9ydCB7IERyYXdQb2x5Z29uTW9kZSB9IGZyb20gJy4vZHJhdy1wb2x5Z29uLW1vZGUnO1xuXG5jb25zdCBERUZBVUxUX1RPT0xUSVBTID0gW107XG5cbmV4cG9ydCBjbGFzcyBNZWFzdXJlQXJlYU1vZGUgZXh0ZW5kcyBEcmF3UG9seWdvbk1vZGUge1xuICBoYW5kbGVDbGljayhldmVudDogQ2xpY2tFdmVudCwgcHJvcHM6IE1vZGVQcm9wczxGZWF0dXJlQ29sbGVjdGlvbj4pIHtcbiAgICBjb25zdCBwcm9wc1dpdGhvdXRFZGl0ID0ge1xuICAgICAgLi4ucHJvcHMsXG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICBvbkVkaXQ6ICgpID0+IHt9LFxuICAgIH07XG5cbiAgICBzdXBlci5oYW5kbGVDbGljayhldmVudCwgcHJvcHNXaXRob3V0RWRpdCk7XG4gIH1cblxuICBnZXRUb29sdGlwcyhwcm9wczogTW9kZVByb3BzPEZlYXR1cmVDb2xsZWN0aW9uPik6IFRvb2x0aXBbXSB7XG4gICAgY29uc3QgdGVudGF0aXZlR3VpZGUgPSB0aGlzLmdldFRlbnRhdGl2ZUd1aWRlKHByb3BzKTtcblxuICAgIGlmICh0ZW50YXRpdmVHdWlkZSAmJiB0ZW50YXRpdmVHdWlkZS5nZW9tZXRyeS50eXBlID09PSAnUG9seWdvbicpIHtcbiAgICAgIGNvbnN0IHsgbW9kZUNvbmZpZyB9ID0gcHJvcHM7XG4gICAgICBjb25zdCB7IGZvcm1hdFRvb2x0aXAsIG1lYXN1cmVtZW50Q2FsbGJhY2sgfSA9IG1vZGVDb25maWcgfHwge307XG4gICAgICBjb25zdCB1bml0cyA9ICdzcS4gbSc7XG5cbiAgICAgIGNvbnN0IGNlbnRyb2lkID0gdHVyZkNlbnRyb2lkKHRlbnRhdGl2ZUd1aWRlKTtcbiAgICAgIGNvbnN0IGFyZWEgPSB0dXJmQXJlYSh0ZW50YXRpdmVHdWlkZSk7XG5cbiAgICAgIGxldCB0ZXh0O1xuICAgICAgaWYgKGZvcm1hdFRvb2x0aXApIHtcbiAgICAgICAgdGV4dCA9IGZvcm1hdFRvb2x0aXAoYXJlYSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBCeSBkZWZhdWx0LCByb3VuZCB0byAyIGRlY2ltYWwgcGxhY2VzIGFuZCBhcHBlbmQgdW5pdHNcbiAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICB0ZXh0ID0gYCR7cGFyc2VGbG9hdChhcmVhKS50b0ZpeGVkKDIpfSAke3VuaXRzfWA7XG4gICAgICB9XG5cbiAgICAgIGlmIChtZWFzdXJlbWVudENhbGxiYWNrKSB7XG4gICAgICAgIG1lYXN1cmVtZW50Q2FsbGJhY2soYXJlYSk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBbXG4gICAgICAgIHtcbiAgICAgICAgICBwb3NpdGlvbjogY2VudHJvaWQuZ2VvbWV0cnkuY29vcmRpbmF0ZXMsXG4gICAgICAgICAgdGV4dCxcbiAgICAgICAgfSxcbiAgICAgIF07XG4gICAgfVxuICAgIHJldHVybiBERUZBVUxUX1RPT0xUSVBTO1xuICB9XG59XG4iXX0=","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.MeasureDistanceMode = void 0;\n\nvar _distance = _interopRequireDefault(require(\"@turf/distance\"));\n\nvar _midpoint = _interopRequireDefault(require(\"@turf/midpoint\"));\n\nvar _utils = require(\"../utils\");\n\nvar _geojsonEditMode = require(\"./geojson-edit-mode\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(n); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar MeasureDistanceMode = /*#__PURE__*/function (_GeoJsonEditMode) {\n  _inherits(MeasureDistanceMode, _GeoJsonEditMode);\n\n  var _super = _createSuper(MeasureDistanceMode);\n\n  function MeasureDistanceMode() {\n    var _this;\n\n    _classCallCheck(this, MeasureDistanceMode);\n\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    _this = _super.call.apply(_super, [this].concat(args));\n\n    _defineProperty(_assertThisInitialized(_this), \"_isMeasuringSessionFinished\", false);\n\n    _defineProperty(_assertThisInitialized(_this), \"_currentTooltips\", []);\n\n    _defineProperty(_assertThisInitialized(_this), \"_currentDistance\", 0);\n\n    _defineProperty(_assertThisInitialized(_this), \"_calculateDistanceForTooltip\", function (_ref) {\n      var positionA = _ref.positionA,\n          positionB = _ref.positionB,\n          modeConfig = _ref.modeConfig;\n\n      var _ref2 = modeConfig || {},\n          turfOptions = _ref2.turfOptions,\n          measurementCallback = _ref2.measurementCallback;\n\n      var distance = (0, _distance[\"default\"])(positionA, positionB, turfOptions);\n\n      if (measurementCallback) {\n        measurementCallback(distance);\n      }\n\n      return distance;\n    });\n\n    return _this;\n  }\n\n  _createClass(MeasureDistanceMode, [{\n    key: \"_formatTooltip\",\n    value: function _formatTooltip(distance, modeConfig) {\n      var _ref3 = modeConfig || {},\n          formatTooltip = _ref3.formatTooltip,\n          turfOptions = _ref3.turfOptions;\n\n      var units = turfOptions && turfOptions.units || 'kilometers';\n      var text;\n\n      if (formatTooltip) {\n        text = formatTooltip(distance);\n      } else {\n        // By default, round to 2 decimal places and append units\n        text = \"\".concat(parseFloat(distance).toFixed(2), \" \").concat(units);\n      }\n\n      return text;\n    }\n  }, {\n    key: \"handleClick\",\n    value: function handleClick(event, props) {\n      var modeConfig = props.modeConfig,\n          data = props.data,\n          onEdit = props.onEdit;\n\n      var _ref4 = modeConfig || {},\n          _ref4$centerTooltipsO = _ref4.centerTooltipsOnLine,\n          centerTooltipsOnLine = _ref4$centerTooltipsO === void 0 ? false : _ref4$centerTooltipsO; // restart measuring session\n\n\n      if (this._isMeasuringSessionFinished) {\n        this._isMeasuringSessionFinished = false;\n        this.resetClickSequence();\n        this._currentTooltips = [];\n        this._currentDistance = 0;\n      }\n\n      var picks = event.picks;\n      var clickedEditHandle = (0, _utils.getPickedEditHandle)(picks);\n      var positionAdded = false;\n\n      if (!clickedEditHandle) {\n        // Don't add another point right next to an existing one\n        this.addClickSequence(event);\n        positionAdded = true;\n      }\n\n      var clickSequence = this.getClickSequence();\n\n      if (clickSequence.length > 1 && clickedEditHandle && Array.isArray(clickedEditHandle.properties.positionIndexes) && clickedEditHandle.properties.positionIndexes[0] === clickSequence.length - 1) {\n        // They clicked the last point (or double-clicked), so add the LineString\n        this._isMeasuringSessionFinished = true;\n      } else if (positionAdded) {\n        if (clickSequence.length > 1) {\n          this._currentDistance += this._calculateDistanceForTooltip({\n            positionA: clickSequence[clickSequence.length - 2],\n            positionB: clickSequence[clickSequence.length - 1],\n            modeConfig: modeConfig\n          });\n          var tooltipPosition = centerTooltipsOnLine ? (0, _midpoint[\"default\"])(clickSequence[clickSequence.length - 2], clickSequence[clickSequence.length - 1]).geometry.coordinates : event.mapCoords;\n\n          this._currentTooltips.push({\n            position: tooltipPosition,\n            text: this._formatTooltip(this._currentDistance, modeConfig)\n          });\n        } // new tentative point\n\n\n        onEdit({\n          // data is the same\n          updatedData: data,\n          editType: 'addTentativePosition',\n          editContext: {\n            position: event.mapCoords\n          }\n        });\n      }\n    }\n  }, {\n    key: \"handleKeyUp\",\n    value: function handleKeyUp(event, props) {\n      if (this._isMeasuringSessionFinished) return;\n      event.stopPropagation();\n      var key = event.key;\n      var clickSequenceLength = this.getClickSequence().length;\n\n      switch (key) {\n        case 'Escape':\n          this._isMeasuringSessionFinished = true;\n\n          if (clickSequenceLength === 1) {\n            this.resetClickSequence();\n            this._currentTooltips = [];\n          } // force update drawings\n\n\n          props.onUpdateCursor('cell');\n          break;\n\n        case 'Enter':\n          this.handleClick(props.lastPointerMoveEvent, props);\n          this._isMeasuringSessionFinished = true;\n          break;\n\n        default:\n          break;\n      }\n    }\n  }, {\n    key: \"getGuides\",\n    value: function getGuides(props) {\n      var _guides$features;\n\n      var lastPointerMoveEvent = props.lastPointerMoveEvent;\n      var clickSequence = this.getClickSequence();\n      var lastCoords = lastPointerMoveEvent && !this._isMeasuringSessionFinished ? [lastPointerMoveEvent.mapCoords] : [];\n      var guides = {\n        type: 'FeatureCollection',\n        features: []\n      };\n\n      if (clickSequence.length > 0) {\n        guides.features.push({\n          type: 'Feature',\n          properties: {\n            guideType: 'tentative'\n          },\n          geometry: {\n            type: 'LineString',\n            coordinates: [].concat(_toConsumableArray(clickSequence), lastCoords)\n          }\n        });\n      }\n\n      var editHandles = clickSequence.map(function (clickedCoord, index) {\n        return {\n          type: 'Feature',\n          properties: {\n            guideType: 'editHandle',\n            editHandleType: 'existing',\n            featureIndex: -1,\n            positionIndexes: [index]\n          },\n          geometry: {\n            type: 'Point',\n            coordinates: clickedCoord\n          }\n        };\n      });\n\n      (_guides$features = guides.features).push.apply(_guides$features, _toConsumableArray(editHandles)); // @ts-ignore\n\n\n      return guides;\n    }\n  }, {\n    key: \"handlePointerMove\",\n    value: function handlePointerMove(event, props) {\n      props.onUpdateCursor('cell');\n    }\n  }, {\n    key: \"getTooltips\",\n    value: function getTooltips(props) {\n      var lastPointerMoveEvent = props.lastPointerMoveEvent,\n          modeConfig = props.modeConfig;\n\n      var _ref5 = modeConfig || {},\n          _ref5$centerTooltipsO = _ref5.centerTooltipsOnLine,\n          centerTooltipsOnLine = _ref5$centerTooltipsO === void 0 ? false : _ref5$centerTooltipsO;\n\n      var positions = this.getClickSequence();\n\n      if (positions.length > 0 && lastPointerMoveEvent && !this._isMeasuringSessionFinished) {\n        var distance = this._calculateDistanceForTooltip({\n          positionA: positions[positions.length - 1],\n          positionB: lastPointerMoveEvent.mapCoords,\n          modeConfig: props.modeConfig\n        });\n\n        var tooltipPosition = centerTooltipsOnLine ? (0, _midpoint[\"default\"])(positions[positions.length - 1], lastPointerMoveEvent.mapCoords).geometry.coordinates : lastPointerMoveEvent.mapCoords;\n        return [].concat(_toConsumableArray(this._currentTooltips), [{\n          position: tooltipPosition,\n          text: this._formatTooltip(this._currentDistance + distance, modeConfig)\n        }]);\n      }\n\n      return this._currentTooltips;\n    }\n  }]);\n\n  return MeasureDistanceMode;\n}(_geojsonEditMode.GeoJsonEditMode);\n\nexports.MeasureDistanceMode = MeasureDistanceMode;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvbWVhc3VyZS1kaXN0YW5jZS1tb2RlLnRzIl0sIm5hbWVzIjpbIk1lYXN1cmVEaXN0YW5jZU1vZGUiLCJwb3NpdGlvbkEiLCJwb3NpdGlvbkIiLCJtb2RlQ29uZmlnIiwidHVyZk9wdGlvbnMiLCJtZWFzdXJlbWVudENhbGxiYWNrIiwiZGlzdGFuY2UiLCJmb3JtYXRUb29sdGlwIiwidW5pdHMiLCJ0ZXh0IiwicGFyc2VGbG9hdCIsInRvRml4ZWQiLCJldmVudCIsInByb3BzIiwiZGF0YSIsIm9uRWRpdCIsImNlbnRlclRvb2x0aXBzT25MaW5lIiwiX2lzTWVhc3VyaW5nU2Vzc2lvbkZpbmlzaGVkIiwicmVzZXRDbGlja1NlcXVlbmNlIiwiX2N1cnJlbnRUb29sdGlwcyIsIl9jdXJyZW50RGlzdGFuY2UiLCJwaWNrcyIsImNsaWNrZWRFZGl0SGFuZGxlIiwicG9zaXRpb25BZGRlZCIsImFkZENsaWNrU2VxdWVuY2UiLCJjbGlja1NlcXVlbmNlIiwiZ2V0Q2xpY2tTZXF1ZW5jZSIsImxlbmd0aCIsIkFycmF5IiwiaXNBcnJheSIsInByb3BlcnRpZXMiLCJwb3NpdGlvbkluZGV4ZXMiLCJfY2FsY3VsYXRlRGlzdGFuY2VGb3JUb29sdGlwIiwidG9vbHRpcFBvc2l0aW9uIiwiZ2VvbWV0cnkiLCJjb29yZGluYXRlcyIsIm1hcENvb3JkcyIsInB1c2giLCJwb3NpdGlvbiIsIl9mb3JtYXRUb29sdGlwIiwidXBkYXRlZERhdGEiLCJlZGl0VHlwZSIsImVkaXRDb250ZXh0Iiwic3RvcFByb3BhZ2F0aW9uIiwia2V5IiwiY2xpY2tTZXF1ZW5jZUxlbmd0aCIsIm9uVXBkYXRlQ3Vyc29yIiwiaGFuZGxlQ2xpY2siLCJsYXN0UG9pbnRlck1vdmVFdmVudCIsImxhc3RDb29yZHMiLCJndWlkZXMiLCJ0eXBlIiwiZmVhdHVyZXMiLCJndWlkZVR5cGUiLCJlZGl0SGFuZGxlcyIsIm1hcCIsImNsaWNrZWRDb29yZCIsImluZGV4IiwiZWRpdEhhbmRsZVR5cGUiLCJmZWF0dXJlSW5kZXgiLCJwb3NpdGlvbnMiLCJHZW9Kc29uRWRpdE1vZGUiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFHQTs7QUFDQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQUVhQSxtQjs7Ozs7Ozs7Ozs7Ozs7OztrRkFDbUIsSzs7dUVBQ1gsRTs7dUVBQ0EsQzs7bUZBRVksZ0JBQTBDO0FBQUEsVUFBdkNDLFNBQXVDLFFBQXZDQSxTQUF1QztBQUFBLFVBQTVCQyxTQUE0QixRQUE1QkEsU0FBNEI7QUFBQSxVQUFqQkMsVUFBaUIsUUFBakJBLFVBQWlCOztBQUFBLGtCQUMxQkEsVUFBVSxJQUFJLEVBRFk7QUFBQSxVQUMvREMsV0FEK0QsU0FDL0RBLFdBRCtEO0FBQUEsVUFDbERDLG1CQURrRCxTQUNsREEsbUJBRGtEOztBQUV2RSxVQUFNQyxRQUFRLEdBQUcsMEJBQWFMLFNBQWIsRUFBd0JDLFNBQXhCLEVBQW1DRSxXQUFuQyxDQUFqQjs7QUFFQSxVQUFJQyxtQkFBSixFQUF5QjtBQUN2QkEsUUFBQUEsbUJBQW1CLENBQUNDLFFBQUQsQ0FBbkI7QUFDRDs7QUFFRCxhQUFPQSxRQUFQO0FBQ0QsSzs7Ozs7OzttQ0FFY0EsUSxFQUFVSCxVLEVBQWE7QUFBQSxrQkFDR0EsVUFBVSxJQUFJLEVBRGpCO0FBQUEsVUFDNUJJLGFBRDRCLFNBQzVCQSxhQUQ0QjtBQUFBLFVBQ2JILFdBRGEsU0FDYkEsV0FEYTs7QUFFcEMsVUFBTUksS0FBSyxHQUFJSixXQUFXLElBQUlBLFdBQVcsQ0FBQ0ksS0FBNUIsSUFBc0MsWUFBcEQ7QUFFQSxVQUFJQyxJQUFKOztBQUNBLFVBQUlGLGFBQUosRUFBbUI7QUFDakJFLFFBQUFBLElBQUksR0FBR0YsYUFBYSxDQUFDRCxRQUFELENBQXBCO0FBQ0QsT0FGRCxNQUVPO0FBQ0w7QUFDQUcsUUFBQUEsSUFBSSxhQUFNQyxVQUFVLENBQUNKLFFBQUQsQ0FBVixDQUFxQkssT0FBckIsQ0FBNkIsQ0FBN0IsQ0FBTixjQUF5Q0gsS0FBekMsQ0FBSjtBQUNEOztBQUVELGFBQU9DLElBQVA7QUFDRDs7O2dDQUVXRyxLLEVBQW1CQyxLLEVBQXFDO0FBQUEsVUFDMURWLFVBRDBELEdBQzdCVSxLQUQ2QixDQUMxRFYsVUFEMEQ7QUFBQSxVQUM5Q1csSUFEOEMsR0FDN0JELEtBRDZCLENBQzlDQyxJQUQ4QztBQUFBLFVBQ3hDQyxNQUR3QyxHQUM3QkYsS0FENkIsQ0FDeENFLE1BRHdDOztBQUFBLGtCQUV6QlosVUFBVSxJQUFJLEVBRlc7QUFBQSx3Q0FFMURhLG9CQUYwRDtBQUFBLFVBRTFEQSxvQkFGMEQsc0NBRW5DLEtBRm1DLDBCQUlsRTs7O0FBQ0EsVUFBSSxLQUFLQywyQkFBVCxFQUFzQztBQUNwQyxhQUFLQSwyQkFBTCxHQUFtQyxLQUFuQztBQUNBLGFBQUtDLGtCQUFMO0FBQ0EsYUFBS0MsZ0JBQUwsR0FBd0IsRUFBeEI7QUFDQSxhQUFLQyxnQkFBTCxHQUF3QixDQUF4QjtBQUNEOztBQVZpRSxVQVkxREMsS0FaMEQsR0FZaERULEtBWmdELENBWTFEUyxLQVowRDtBQWFsRSxVQUFNQyxpQkFBaUIsR0FBRyxnQ0FBb0JELEtBQXBCLENBQTFCO0FBRUEsVUFBSUUsYUFBYSxHQUFHLEtBQXBCOztBQUNBLFVBQUksQ0FBQ0QsaUJBQUwsRUFBd0I7QUFDdEI7QUFDQSxhQUFLRSxnQkFBTCxDQUFzQlosS0FBdEI7QUFDQVcsUUFBQUEsYUFBYSxHQUFHLElBQWhCO0FBQ0Q7O0FBQ0QsVUFBTUUsYUFBYSxHQUFHLEtBQUtDLGdCQUFMLEVBQXRCOztBQUVBLFVBQ0VELGFBQWEsQ0FBQ0UsTUFBZCxHQUF1QixDQUF2QixJQUNBTCxpQkFEQSxJQUVBTSxLQUFLLENBQUNDLE9BQU4sQ0FBY1AsaUJBQWlCLENBQUNRLFVBQWxCLENBQTZCQyxlQUEzQyxDQUZBLElBR0FULGlCQUFpQixDQUFDUSxVQUFsQixDQUE2QkMsZUFBN0IsQ0FBNkMsQ0FBN0MsTUFBb0ROLGFBQWEsQ0FBQ0UsTUFBZCxHQUF1QixDQUo3RSxFQUtFO0FBQ0E7QUFDQSxhQUFLViwyQkFBTCxHQUFtQyxJQUFuQztBQUNELE9BUkQsTUFRTyxJQUFJTSxhQUFKLEVBQW1CO0FBQ3hCLFlBQUlFLGFBQWEsQ0FBQ0UsTUFBZCxHQUF1QixDQUEzQixFQUE4QjtBQUM1QixlQUFLUCxnQkFBTCxJQUF5QixLQUFLWSw0QkFBTCxDQUFrQztBQUN6RC9CLFlBQUFBLFNBQVMsRUFBRXdCLGFBQWEsQ0FBQ0EsYUFBYSxDQUFDRSxNQUFkLEdBQXVCLENBQXhCLENBRGlDO0FBRXpEekIsWUFBQUEsU0FBUyxFQUFFdUIsYUFBYSxDQUFDQSxhQUFhLENBQUNFLE1BQWQsR0FBdUIsQ0FBeEIsQ0FGaUM7QUFHekR4QixZQUFBQSxVQUFVLEVBQVZBO0FBSHlELFdBQWxDLENBQXpCO0FBTUEsY0FBTThCLGVBQWUsR0FBR2pCLG9CQUFvQixHQUN4QywwQkFDRVMsYUFBYSxDQUFDQSxhQUFhLENBQUNFLE1BQWQsR0FBdUIsQ0FBeEIsQ0FEZixFQUVFRixhQUFhLENBQUNBLGFBQWEsQ0FBQ0UsTUFBZCxHQUF1QixDQUF4QixDQUZmLEVBR0VPLFFBSEYsQ0FHV0MsV0FKNkIsR0FLeEN2QixLQUFLLENBQUN3QixTQUxWOztBQU9BLGVBQUtqQixnQkFBTCxDQUFzQmtCLElBQXRCLENBQTJCO0FBQ3pCQyxZQUFBQSxRQUFRLEVBQUVMLGVBRGU7QUFFekJ4QixZQUFBQSxJQUFJLEVBQUUsS0FBSzhCLGNBQUwsQ0FBb0IsS0FBS25CLGdCQUF6QixFQUEyQ2pCLFVBQTNDO0FBRm1CLFdBQTNCO0FBSUQsU0FuQnVCLENBcUJ4Qjs7O0FBQ0FZLFFBQUFBLE1BQU0sQ0FBQztBQUNMO0FBQ0F5QixVQUFBQSxXQUFXLEVBQUUxQixJQUZSO0FBR0wyQixVQUFBQSxRQUFRLEVBQUUsc0JBSEw7QUFJTEMsVUFBQUEsV0FBVyxFQUFFO0FBQ1hKLFlBQUFBLFFBQVEsRUFBRTFCLEtBQUssQ0FBQ3dCO0FBREw7QUFKUixTQUFELENBQU47QUFRRDtBQUNGOzs7Z0NBRVd4QixLLEVBQXNCQyxLLEVBQXFDO0FBQ3JFLFVBQUksS0FBS0ksMkJBQVQsRUFBc0M7QUFFdENMLE1BQUFBLEtBQUssQ0FBQytCLGVBQU47QUFIcUUsVUFJN0RDLEdBSjZELEdBSXJEaEMsS0FKcUQsQ0FJN0RnQyxHQUo2RDtBQU1yRSxVQUFNQyxtQkFBbUIsR0FBRyxLQUFLbkIsZ0JBQUwsR0FBd0JDLE1BQXBEOztBQUVBLGNBQVFpQixHQUFSO0FBQ0UsYUFBSyxRQUFMO0FBQ0UsZUFBSzNCLDJCQUFMLEdBQW1DLElBQW5DOztBQUNBLGNBQUk0QixtQkFBbUIsS0FBSyxDQUE1QixFQUErQjtBQUM3QixpQkFBSzNCLGtCQUFMO0FBQ0EsaUJBQUtDLGdCQUFMLEdBQXdCLEVBQXhCO0FBQ0QsV0FMSCxDQU1FOzs7QUFDQU4sVUFBQUEsS0FBSyxDQUFDaUMsY0FBTixDQUFxQixNQUFyQjtBQUNBOztBQUNGLGFBQUssT0FBTDtBQUNFLGVBQUtDLFdBQUwsQ0FBaUJsQyxLQUFLLENBQUNtQyxvQkFBdkIsRUFBNkNuQyxLQUE3QztBQUNBLGVBQUtJLDJCQUFMLEdBQW1DLElBQW5DO0FBQ0E7O0FBQ0Y7QUFDRTtBQWZKO0FBaUJEOzs7OEJBRVNKLEssRUFBNkQ7QUFBQTs7QUFBQSxVQUM3RG1DLG9CQUQ2RCxHQUNwQ25DLEtBRG9DLENBQzdEbUMsb0JBRDZEO0FBRXJFLFVBQU12QixhQUFhLEdBQUcsS0FBS0MsZ0JBQUwsRUFBdEI7QUFFQSxVQUFNdUIsVUFBVSxHQUNkRCxvQkFBb0IsSUFBSSxDQUFDLEtBQUsvQiwyQkFBOUIsR0FDSSxDQUFDK0Isb0JBQW9CLENBQUNaLFNBQXRCLENBREosR0FFSSxFQUhOO0FBS0EsVUFBTWMsTUFBTSxHQUFHO0FBQ2JDLFFBQUFBLElBQUksRUFBRSxtQkFETztBQUViQyxRQUFBQSxRQUFRLEVBQUU7QUFGRyxPQUFmOztBQUtBLFVBQUkzQixhQUFhLENBQUNFLE1BQWQsR0FBdUIsQ0FBM0IsRUFBOEI7QUFDNUJ1QixRQUFBQSxNQUFNLENBQUNFLFFBQVAsQ0FBZ0JmLElBQWhCLENBQXFCO0FBQ25CYyxVQUFBQSxJQUFJLEVBQUUsU0FEYTtBQUVuQnJCLFVBQUFBLFVBQVUsRUFBRTtBQUNWdUIsWUFBQUEsU0FBUyxFQUFFO0FBREQsV0FGTztBQUtuQm5CLFVBQUFBLFFBQVEsRUFBRTtBQUNSaUIsWUFBQUEsSUFBSSxFQUFFLFlBREU7QUFFUmhCLFlBQUFBLFdBQVcsK0JBQU1WLGFBQU4sR0FBd0J3QixVQUF4QjtBQUZIO0FBTFMsU0FBckI7QUFVRDs7QUFFRCxVQUFNSyxXQUFXLEdBQUc3QixhQUFhLENBQUM4QixHQUFkLENBQWtCLFVBQUNDLFlBQUQsRUFBZUMsS0FBZjtBQUFBLGVBQTBCO0FBQzlETixVQUFBQSxJQUFJLEVBQUUsU0FEd0Q7QUFFOURyQixVQUFBQSxVQUFVLEVBQUU7QUFDVnVCLFlBQUFBLFNBQVMsRUFBRSxZQUREO0FBRVZLLFlBQUFBLGNBQWMsRUFBRSxVQUZOO0FBR1ZDLFlBQUFBLFlBQVksRUFBRSxDQUFDLENBSEw7QUFJVjVCLFlBQUFBLGVBQWUsRUFBRSxDQUFDMEIsS0FBRDtBQUpQLFdBRmtEO0FBUTlEdkIsVUFBQUEsUUFBUSxFQUFFO0FBQ1JpQixZQUFBQSxJQUFJLEVBQUUsT0FERTtBQUVSaEIsWUFBQUEsV0FBVyxFQUFFcUI7QUFGTDtBQVJvRCxTQUExQjtBQUFBLE9BQWxCLENBQXBCOztBQWNBLDBCQUFBTixNQUFNLENBQUNFLFFBQVAsRUFBZ0JmLElBQWhCLDRDQUF3QmlCLFdBQXhCLEdBekNxRSxDQTBDckU7OztBQUNBLGFBQU9KLE1BQVA7QUFDRDs7O3NDQUVpQnRDLEssRUFBeUJDLEssRUFBcUM7QUFDOUVBLE1BQUFBLEtBQUssQ0FBQ2lDLGNBQU4sQ0FBcUIsTUFBckI7QUFDRDs7O2dDQUVXakMsSyxFQUFnRDtBQUFBLFVBQ2xEbUMsb0JBRGtELEdBQ2JuQyxLQURhLENBQ2xEbUMsb0JBRGtEO0FBQUEsVUFDNUI3QyxVQUQ0QixHQUNiVSxLQURhLENBQzVCVixVQUQ0Qjs7QUFBQSxrQkFFakJBLFVBQVUsSUFBSSxFQUZHO0FBQUEsd0NBRWxEYSxvQkFGa0Q7QUFBQSxVQUVsREEsb0JBRmtELHNDQUUzQixLQUYyQjs7QUFHMUQsVUFBTTRDLFNBQVMsR0FBRyxLQUFLbEMsZ0JBQUwsRUFBbEI7O0FBRUEsVUFBSWtDLFNBQVMsQ0FBQ2pDLE1BQVYsR0FBbUIsQ0FBbkIsSUFBd0JxQixvQkFBeEIsSUFBZ0QsQ0FBQyxLQUFLL0IsMkJBQTFELEVBQXVGO0FBQ3JGLFlBQU1YLFFBQVEsR0FBRyxLQUFLMEIsNEJBQUwsQ0FBa0M7QUFDakQvQixVQUFBQSxTQUFTLEVBQUUyRCxTQUFTLENBQUNBLFNBQVMsQ0FBQ2pDLE1BQVYsR0FBbUIsQ0FBcEIsQ0FENkI7QUFFakR6QixVQUFBQSxTQUFTLEVBQUU4QyxvQkFBb0IsQ0FBQ1osU0FGaUI7QUFHakRqQyxVQUFBQSxVQUFVLEVBQUVVLEtBQUssQ0FBQ1Y7QUFIK0IsU0FBbEMsQ0FBakI7O0FBTUEsWUFBTThCLGVBQWUsR0FBR2pCLG9CQUFvQixHQUN4QywwQkFBYTRDLFNBQVMsQ0FBQ0EsU0FBUyxDQUFDakMsTUFBVixHQUFtQixDQUFwQixDQUF0QixFQUE4Q3FCLG9CQUFvQixDQUFDWixTQUFuRSxFQUE4RUYsUUFBOUUsQ0FDR0MsV0FGcUMsR0FHeENhLG9CQUFvQixDQUFDWixTQUh6QjtBQUtBLDRDQUNLLEtBQUtqQixnQkFEVixJQUVFO0FBQ0VtQixVQUFBQSxRQUFRLEVBQUVMLGVBRFo7QUFFRXhCLFVBQUFBLElBQUksRUFBRSxLQUFLOEIsY0FBTCxDQUFvQixLQUFLbkIsZ0JBQUwsR0FBd0JkLFFBQTVDLEVBQXNESCxVQUF0RDtBQUZSLFNBRkY7QUFPRDs7QUFFRCxhQUFPLEtBQUtnQixnQkFBWjtBQUNEOzs7O0VBdk1zQzBDLGdDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR1cmZEaXN0YW5jZSBmcm9tICdAdHVyZi9kaXN0YW5jZSc7XG5pbXBvcnQgdHVyZk1pZHBvaW50IGZyb20gJ0B0dXJmL21pZHBvaW50JztcbmltcG9ydCB7IEZlYXR1cmVDb2xsZWN0aW9uIH0gZnJvbSAnLi4vZ2VvanNvbi10eXBlcyc7XG5pbXBvcnQgeyBDbGlja0V2ZW50LCBQb2ludGVyTW92ZUV2ZW50LCBNb2RlUHJvcHMsIEd1aWRlRmVhdHVyZUNvbGxlY3Rpb24sIFRvb2x0aXAgfSBmcm9tICcuLi90eXBlcyc7XG5pbXBvcnQgeyBnZXRQaWNrZWRFZGl0SGFuZGxlIH0gZnJvbSAnLi4vdXRpbHMnO1xuaW1wb3J0IHsgR2VvSnNvbkVkaXRNb2RlIH0gZnJvbSAnLi9nZW9qc29uLWVkaXQtbW9kZSc7XG5cbmV4cG9ydCBjbGFzcyBNZWFzdXJlRGlzdGFuY2VNb2RlIGV4dGVuZHMgR2VvSnNvbkVkaXRNb2RlIHtcbiAgX2lzTWVhc3VyaW5nU2Vzc2lvbkZpbmlzaGVkID0gZmFsc2U7XG4gIF9jdXJyZW50VG9vbHRpcHMgPSBbXTtcbiAgX2N1cnJlbnREaXN0YW5jZSA9IDA7XG5cbiAgX2NhbGN1bGF0ZURpc3RhbmNlRm9yVG9vbHRpcCA9ICh7IHBvc2l0aW9uQSwgcG9zaXRpb25CLCBtb2RlQ29uZmlnIH0pID0+IHtcbiAgICBjb25zdCB7IHR1cmZPcHRpb25zLCBtZWFzdXJlbWVudENhbGxiYWNrIH0gPSBtb2RlQ29uZmlnIHx8IHt9O1xuICAgIGNvbnN0IGRpc3RhbmNlID0gdHVyZkRpc3RhbmNlKHBvc2l0aW9uQSwgcG9zaXRpb25CLCB0dXJmT3B0aW9ucyk7XG5cbiAgICBpZiAobWVhc3VyZW1lbnRDYWxsYmFjaykge1xuICAgICAgbWVhc3VyZW1lbnRDYWxsYmFjayhkaXN0YW5jZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGRpc3RhbmNlO1xuICB9O1xuXG4gIF9mb3JtYXRUb29sdGlwKGRpc3RhbmNlLCBtb2RlQ29uZmlnPykge1xuICAgIGNvbnN0IHsgZm9ybWF0VG9vbHRpcCwgdHVyZk9wdGlvbnMgfSA9IG1vZGVDb25maWcgfHwge307XG4gICAgY29uc3QgdW5pdHMgPSAodHVyZk9wdGlvbnMgJiYgdHVyZk9wdGlvbnMudW5pdHMpIHx8ICdraWxvbWV0ZXJzJztcblxuICAgIGxldCB0ZXh0O1xuICAgIGlmIChmb3JtYXRUb29sdGlwKSB7XG4gICAgICB0ZXh0ID0gZm9ybWF0VG9vbHRpcChkaXN0YW5jZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIEJ5IGRlZmF1bHQsIHJvdW5kIHRvIDIgZGVjaW1hbCBwbGFjZXMgYW5kIGFwcGVuZCB1bml0c1xuICAgICAgdGV4dCA9IGAke3BhcnNlRmxvYXQoZGlzdGFuY2UpLnRvRml4ZWQoMil9ICR7dW5pdHN9YDtcbiAgICB9XG5cbiAgICByZXR1cm4gdGV4dDtcbiAgfVxuXG4gIGhhbmRsZUNsaWNrKGV2ZW50OiBDbGlja0V2ZW50LCBwcm9wczogTW9kZVByb3BzPEZlYXR1cmVDb2xsZWN0aW9uPikge1xuICAgIGNvbnN0IHsgbW9kZUNvbmZpZywgZGF0YSwgb25FZGl0IH0gPSBwcm9wcztcbiAgICBjb25zdCB7IGNlbnRlclRvb2x0aXBzT25MaW5lID0gZmFsc2UgfSA9IG1vZGVDb25maWcgfHwge307XG5cbiAgICAvLyByZXN0YXJ0IG1lYXN1cmluZyBzZXNzaW9uXG4gICAgaWYgKHRoaXMuX2lzTWVhc3VyaW5nU2Vzc2lvbkZpbmlzaGVkKSB7XG4gICAgICB0aGlzLl9pc01lYXN1cmluZ1Nlc3Npb25GaW5pc2hlZCA9IGZhbHNlO1xuICAgICAgdGhpcy5yZXNldENsaWNrU2VxdWVuY2UoKTtcbiAgICAgIHRoaXMuX2N1cnJlbnRUb29sdGlwcyA9IFtdO1xuICAgICAgdGhpcy5fY3VycmVudERpc3RhbmNlID0gMDtcbiAgICB9XG5cbiAgICBjb25zdCB7IHBpY2tzIH0gPSBldmVudDtcbiAgICBjb25zdCBjbGlja2VkRWRpdEhhbmRsZSA9IGdldFBpY2tlZEVkaXRIYW5kbGUocGlja3MpO1xuXG4gICAgbGV0IHBvc2l0aW9uQWRkZWQgPSBmYWxzZTtcbiAgICBpZiAoIWNsaWNrZWRFZGl0SGFuZGxlKSB7XG4gICAgICAvLyBEb24ndCBhZGQgYW5vdGhlciBwb2ludCByaWdodCBuZXh0IHRvIGFuIGV4aXN0aW5nIG9uZVxuICAgICAgdGhpcy5hZGRDbGlja1NlcXVlbmNlKGV2ZW50KTtcbiAgICAgIHBvc2l0aW9uQWRkZWQgPSB0cnVlO1xuICAgIH1cbiAgICBjb25zdCBjbGlja1NlcXVlbmNlID0gdGhpcy5nZXRDbGlja1NlcXVlbmNlKCk7XG5cbiAgICBpZiAoXG4gICAgICBjbGlja1NlcXVlbmNlLmxlbmd0aCA+IDEgJiZcbiAgICAgIGNsaWNrZWRFZGl0SGFuZGxlICYmXG4gICAgICBBcnJheS5pc0FycmF5KGNsaWNrZWRFZGl0SGFuZGxlLnByb3BlcnRpZXMucG9zaXRpb25JbmRleGVzKSAmJlxuICAgICAgY2xpY2tlZEVkaXRIYW5kbGUucHJvcGVydGllcy5wb3NpdGlvbkluZGV4ZXNbMF0gPT09IGNsaWNrU2VxdWVuY2UubGVuZ3RoIC0gMVxuICAgICkge1xuICAgICAgLy8gVGhleSBjbGlja2VkIHRoZSBsYXN0IHBvaW50IChvciBkb3VibGUtY2xpY2tlZCksIHNvIGFkZCB0aGUgTGluZVN0cmluZ1xuICAgICAgdGhpcy5faXNNZWFzdXJpbmdTZXNzaW9uRmluaXNoZWQgPSB0cnVlO1xuICAgIH0gZWxzZSBpZiAocG9zaXRpb25BZGRlZCkge1xuICAgICAgaWYgKGNsaWNrU2VxdWVuY2UubGVuZ3RoID4gMSkge1xuICAgICAgICB0aGlzLl9jdXJyZW50RGlzdGFuY2UgKz0gdGhpcy5fY2FsY3VsYXRlRGlzdGFuY2VGb3JUb29sdGlwKHtcbiAgICAgICAgICBwb3NpdGlvbkE6IGNsaWNrU2VxdWVuY2VbY2xpY2tTZXF1ZW5jZS5sZW5ndGggLSAyXSxcbiAgICAgICAgICBwb3NpdGlvbkI6IGNsaWNrU2VxdWVuY2VbY2xpY2tTZXF1ZW5jZS5sZW5ndGggLSAxXSxcbiAgICAgICAgICBtb2RlQ29uZmlnLFxuICAgICAgICB9KTtcblxuICAgICAgICBjb25zdCB0b29sdGlwUG9zaXRpb24gPSBjZW50ZXJUb29sdGlwc09uTGluZVxuICAgICAgICAgID8gdHVyZk1pZHBvaW50KFxuICAgICAgICAgICAgICBjbGlja1NlcXVlbmNlW2NsaWNrU2VxdWVuY2UubGVuZ3RoIC0gMl0sXG4gICAgICAgICAgICAgIGNsaWNrU2VxdWVuY2VbY2xpY2tTZXF1ZW5jZS5sZW5ndGggLSAxXVxuICAgICAgICAgICAgKS5nZW9tZXRyeS5jb29yZGluYXRlc1xuICAgICAgICAgIDogZXZlbnQubWFwQ29vcmRzO1xuXG4gICAgICAgIHRoaXMuX2N1cnJlbnRUb29sdGlwcy5wdXNoKHtcbiAgICAgICAgICBwb3NpdGlvbjogdG9vbHRpcFBvc2l0aW9uLFxuICAgICAgICAgIHRleHQ6IHRoaXMuX2Zvcm1hdFRvb2x0aXAodGhpcy5fY3VycmVudERpc3RhbmNlLCBtb2RlQ29uZmlnKSxcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIC8vIG5ldyB0ZW50YXRpdmUgcG9pbnRcbiAgICAgIG9uRWRpdCh7XG4gICAgICAgIC8vIGRhdGEgaXMgdGhlIHNhbWVcbiAgICAgICAgdXBkYXRlZERhdGE6IGRhdGEsXG4gICAgICAgIGVkaXRUeXBlOiAnYWRkVGVudGF0aXZlUG9zaXRpb24nLFxuICAgICAgICBlZGl0Q29udGV4dDoge1xuICAgICAgICAgIHBvc2l0aW9uOiBldmVudC5tYXBDb29yZHMsXG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBoYW5kbGVLZXlVcChldmVudDogS2V5Ym9hcmRFdmVudCwgcHJvcHM6IE1vZGVQcm9wczxGZWF0dXJlQ29sbGVjdGlvbj4pIHtcbiAgICBpZiAodGhpcy5faXNNZWFzdXJpbmdTZXNzaW9uRmluaXNoZWQpIHJldHVybjtcblxuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIGNvbnN0IHsga2V5IH0gPSBldmVudDtcblxuICAgIGNvbnN0IGNsaWNrU2VxdWVuY2VMZW5ndGggPSB0aGlzLmdldENsaWNrU2VxdWVuY2UoKS5sZW5ndGg7XG5cbiAgICBzd2l0Y2ggKGtleSkge1xuICAgICAgY2FzZSAnRXNjYXBlJzpcbiAgICAgICAgdGhpcy5faXNNZWFzdXJpbmdTZXNzaW9uRmluaXNoZWQgPSB0cnVlO1xuICAgICAgICBpZiAoY2xpY2tTZXF1ZW5jZUxlbmd0aCA9PT0gMSkge1xuICAgICAgICAgIHRoaXMucmVzZXRDbGlja1NlcXVlbmNlKCk7XG4gICAgICAgICAgdGhpcy5fY3VycmVudFRvb2x0aXBzID0gW107XG4gICAgICAgIH1cbiAgICAgICAgLy8gZm9yY2UgdXBkYXRlIGRyYXdpbmdzXG4gICAgICAgIHByb3BzLm9uVXBkYXRlQ3Vyc29yKCdjZWxsJyk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnRW50ZXInOlxuICAgICAgICB0aGlzLmhhbmRsZUNsaWNrKHByb3BzLmxhc3RQb2ludGVyTW92ZUV2ZW50LCBwcm9wcyk7XG4gICAgICAgIHRoaXMuX2lzTWVhc3VyaW5nU2Vzc2lvbkZpbmlzaGVkID0gdHJ1ZTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICBnZXRHdWlkZXMocHJvcHM6IE1vZGVQcm9wczxGZWF0dXJlQ29sbGVjdGlvbj4pOiBHdWlkZUZlYXR1cmVDb2xsZWN0aW9uIHtcbiAgICBjb25zdCB7IGxhc3RQb2ludGVyTW92ZUV2ZW50IH0gPSBwcm9wcztcbiAgICBjb25zdCBjbGlja1NlcXVlbmNlID0gdGhpcy5nZXRDbGlja1NlcXVlbmNlKCk7XG5cbiAgICBjb25zdCBsYXN0Q29vcmRzID1cbiAgICAgIGxhc3RQb2ludGVyTW92ZUV2ZW50ICYmICF0aGlzLl9pc01lYXN1cmluZ1Nlc3Npb25GaW5pc2hlZFxuICAgICAgICA/IFtsYXN0UG9pbnRlck1vdmVFdmVudC5tYXBDb29yZHNdXG4gICAgICAgIDogW107XG5cbiAgICBjb25zdCBndWlkZXMgPSB7XG4gICAgICB0eXBlOiAnRmVhdHVyZUNvbGxlY3Rpb24nLFxuICAgICAgZmVhdHVyZXM6IFtdLFxuICAgIH07XG5cbiAgICBpZiAoY2xpY2tTZXF1ZW5jZS5sZW5ndGggPiAwKSB7XG4gICAgICBndWlkZXMuZmVhdHVyZXMucHVzaCh7XG4gICAgICAgIHR5cGU6ICdGZWF0dXJlJyxcbiAgICAgICAgcHJvcGVydGllczoge1xuICAgICAgICAgIGd1aWRlVHlwZTogJ3RlbnRhdGl2ZScsXG4gICAgICAgIH0sXG4gICAgICAgIGdlb21ldHJ5OiB7XG4gICAgICAgICAgdHlwZTogJ0xpbmVTdHJpbmcnLFxuICAgICAgICAgIGNvb3JkaW5hdGVzOiBbLi4uY2xpY2tTZXF1ZW5jZSwgLi4ubGFzdENvb3Jkc10sXG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBjb25zdCBlZGl0SGFuZGxlcyA9IGNsaWNrU2VxdWVuY2UubWFwKChjbGlja2VkQ29vcmQsIGluZGV4KSA9PiAoe1xuICAgICAgdHlwZTogJ0ZlYXR1cmUnLFxuICAgICAgcHJvcGVydGllczoge1xuICAgICAgICBndWlkZVR5cGU6ICdlZGl0SGFuZGxlJyxcbiAgICAgICAgZWRpdEhhbmRsZVR5cGU6ICdleGlzdGluZycsXG4gICAgICAgIGZlYXR1cmVJbmRleDogLTEsXG4gICAgICAgIHBvc2l0aW9uSW5kZXhlczogW2luZGV4XSxcbiAgICAgIH0sXG4gICAgICBnZW9tZXRyeToge1xuICAgICAgICB0eXBlOiAnUG9pbnQnLFxuICAgICAgICBjb29yZGluYXRlczogY2xpY2tlZENvb3JkLFxuICAgICAgfSxcbiAgICB9KSk7XG5cbiAgICBndWlkZXMuZmVhdHVyZXMucHVzaCguLi5lZGl0SGFuZGxlcyk7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHJldHVybiBndWlkZXM7XG4gIH1cblxuICBoYW5kbGVQb2ludGVyTW92ZShldmVudDogUG9pbnRlck1vdmVFdmVudCwgcHJvcHM6IE1vZGVQcm9wczxGZWF0dXJlQ29sbGVjdGlvbj4pIHtcbiAgICBwcm9wcy5vblVwZGF0ZUN1cnNvcignY2VsbCcpO1xuICB9XG5cbiAgZ2V0VG9vbHRpcHMocHJvcHM6IE1vZGVQcm9wczxGZWF0dXJlQ29sbGVjdGlvbj4pOiBUb29sdGlwW10ge1xuICAgIGNvbnN0IHsgbGFzdFBvaW50ZXJNb3ZlRXZlbnQsIG1vZGVDb25maWcgfSA9IHByb3BzO1xuICAgIGNvbnN0IHsgY2VudGVyVG9vbHRpcHNPbkxpbmUgPSBmYWxzZSB9ID0gbW9kZUNvbmZpZyB8fCB7fTtcbiAgICBjb25zdCBwb3NpdGlvbnMgPSB0aGlzLmdldENsaWNrU2VxdWVuY2UoKTtcblxuICAgIGlmIChwb3NpdGlvbnMubGVuZ3RoID4gMCAmJiBsYXN0UG9pbnRlck1vdmVFdmVudCAmJiAhdGhpcy5faXNNZWFzdXJpbmdTZXNzaW9uRmluaXNoZWQpIHtcbiAgICAgIGNvbnN0IGRpc3RhbmNlID0gdGhpcy5fY2FsY3VsYXRlRGlzdGFuY2VGb3JUb29sdGlwKHtcbiAgICAgICAgcG9zaXRpb25BOiBwb3NpdGlvbnNbcG9zaXRpb25zLmxlbmd0aCAtIDFdLFxuICAgICAgICBwb3NpdGlvbkI6IGxhc3RQb2ludGVyTW92ZUV2ZW50Lm1hcENvb3JkcyxcbiAgICAgICAgbW9kZUNvbmZpZzogcHJvcHMubW9kZUNvbmZpZyxcbiAgICAgIH0pO1xuXG4gICAgICBjb25zdCB0b29sdGlwUG9zaXRpb24gPSBjZW50ZXJUb29sdGlwc09uTGluZVxuICAgICAgICA/IHR1cmZNaWRwb2ludChwb3NpdGlvbnNbcG9zaXRpb25zLmxlbmd0aCAtIDFdLCBsYXN0UG9pbnRlck1vdmVFdmVudC5tYXBDb29yZHMpLmdlb21ldHJ5XG4gICAgICAgICAgICAuY29vcmRpbmF0ZXNcbiAgICAgICAgOiBsYXN0UG9pbnRlck1vdmVFdmVudC5tYXBDb29yZHM7XG5cbiAgICAgIHJldHVybiBbXG4gICAgICAgIC4uLnRoaXMuX2N1cnJlbnRUb29sdGlwcyxcbiAgICAgICAge1xuICAgICAgICAgIHBvc2l0aW9uOiB0b29sdGlwUG9zaXRpb24sXG4gICAgICAgICAgdGV4dDogdGhpcy5fZm9ybWF0VG9vbHRpcCh0aGlzLl9jdXJyZW50RGlzdGFuY2UgKyBkaXN0YW5jZSwgbW9kZUNvbmZpZyksXG4gICAgICAgIH0sXG4gICAgICBdO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9jdXJyZW50VG9vbHRpcHM7XG4gIH1cbn1cbiJdfQ==","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.ModifyMode = void 0;\n\nvar _helpers = require(\"@turf/helpers\");\n\nvar _utils = require(\"../utils\");\n\nvar _geojsonEditMode = require(\"./geojson-edit-mode\");\n\nvar _immutableFeatureCollection = require(\"./immutable-feature-collection\");\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction _createForOfIteratorHelper(o) { if (typeof Symbol === \"undefined\" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (o = _unsupportedIterableToArray(o))) { var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var it, normalCompletion = true, didErr = false, err; return { s: function s() { it = o[Symbol.iterator](); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it[\"return\"] != null) it[\"return\"](); } finally { if (didErr) throw err; } } }; }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(n); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nvar ModifyMode = /*#__PURE__*/function (_GeoJsonEditMode) {\n  _inherits(ModifyMode, _GeoJsonEditMode);\n\n  var _super = _createSuper(ModifyMode);\n\n  function ModifyMode() {\n    _classCallCheck(this, ModifyMode);\n\n    return _super.apply(this, arguments);\n  }\n\n  _createClass(ModifyMode, [{\n    key: \"getGuides\",\n    value: function getGuides(props) {\n      var _this = this;\n\n      var handles = [];\n      var data = props.data,\n          lastPointerMoveEvent = props.lastPointerMoveEvent;\n      var features = data.features;\n      var picks = lastPointerMoveEvent && lastPointerMoveEvent.picks;\n      var mapCoords = lastPointerMoveEvent && lastPointerMoveEvent.mapCoords;\n\n      var _iterator = _createForOfIteratorHelper(props.selectedIndexes),\n          _step;\n\n      try {\n        for (_iterator.s(); !(_step = _iterator.n()).done;) {\n          var _index = _step.value;\n\n          if (_index < features.length) {\n            var geometry = features[_index].geometry;\n            handles.push.apply(handles, _toConsumableArray((0, _utils.getEditHandlesForGeometry)(geometry, _index)));\n          } else {\n            console.warn(\"selectedFeatureIndexes out of range \".concat(_index)); // eslint-disable-line no-console,no-undef\n          }\n        } // intermediate edit handle\n\n      } catch (err) {\n        _iterator.e(err);\n      } finally {\n        _iterator.f();\n      }\n\n      if (picks && picks.length && mapCoords) {\n        var _props$modeConfig;\n\n        var existingEditHandle = (0, _utils.getPickedExistingEditHandle)(picks); // don't show intermediate point when too close to an existing edit handle\n\n        var featureAsPick = !existingEditHandle && picks.find(function (pick) {\n          return !pick.isGuide;\n        }); // is the feature in the pick selected\n\n        if (featureAsPick && !featureAsPick.object.geometry.type.includes('Point') && !(((_props$modeConfig = props.modeConfig) === null || _props$modeConfig === void 0 ? void 0 : _props$modeConfig.lockRectangles) && featureAsPick.object.properties.shape === 'Rectangle') && props.selectedIndexes.includes(featureAsPick.index)) {\n          var intermediatePoint = null;\n          var positionIndexPrefix = [];\n          var referencePoint = (0, _helpers.point)(mapCoords); // process all lines of the (single) feature\n\n          (0, _utils.recursivelyTraverseNestedArrays)(featureAsPick.object.geometry.coordinates, [], function (lineString, prefix) {\n            var lineStringFeature = (0, _helpers.lineString)(lineString);\n\n            var candidateIntermediatePoint = _this.getNearestPoint( // @ts-ignore\n            lineStringFeature, referencePoint, props.modeConfig && props.modeConfig.viewport);\n\n            if (!intermediatePoint || candidateIntermediatePoint.properties.dist < intermediatePoint.properties.dist) {\n              intermediatePoint = candidateIntermediatePoint;\n              positionIndexPrefix = prefix;\n            }\n          }); // tack on the lone intermediate point to the set of handles\n\n          if (intermediatePoint) {\n            var _intermediatePoint = intermediatePoint,\n                position = _intermediatePoint.geometry.coordinates,\n                index = _intermediatePoint.properties.index;\n            handles.push({\n              type: 'Feature',\n              properties: {\n                guideType: 'editHandle',\n                editHandleType: 'intermediate',\n                featureIndex: featureAsPick.index,\n                positionIndexes: [].concat(_toConsumableArray(positionIndexPrefix), [index + 1])\n              },\n              geometry: {\n                type: 'Point',\n                coordinates: position\n              }\n            });\n          }\n        }\n      }\n\n      return {\n        type: 'FeatureCollection',\n        features: handles\n      };\n    } // turf.js does not support elevation for nearestPointOnLine\n\n  }, {\n    key: \"getNearestPoint\",\n    value: function getNearestPoint(line, inPoint, viewport) {\n      var coordinates = line.geometry.coordinates;\n\n      if (coordinates.some(function (coord) {\n        return coord.length > 2;\n      })) {\n        if (viewport) {\n          // This line has elevation, we need to use alternative algorithm\n          return (0, _utils.nearestPointOnProjectedLine)(line, inPoint, viewport);\n        } // eslint-disable-next-line no-console,no-undef\n\n\n        console.log('Editing 3D point but modeConfig.viewport not provided. Falling back to 2D logic.');\n      }\n\n      return (0, _utils.nearestPointOnLine)(line, inPoint, viewport);\n    }\n  }, {\n    key: \"handleClick\",\n    value: function handleClick(event, props) {\n      var pickedExistingHandle = (0, _utils.getPickedExistingEditHandle)(event.picks);\n      var pickedIntermediateHandle = (0, _utils.getPickedIntermediateEditHandle)(event.picks);\n\n      if (pickedExistingHandle) {\n        var _pickedExistingHandle = pickedExistingHandle.properties,\n            featureIndex = _pickedExistingHandle.featureIndex,\n            positionIndexes = _pickedExistingHandle.positionIndexes;\n        var updatedData;\n\n        try {\n          updatedData = new _immutableFeatureCollection.ImmutableFeatureCollection(props.data).removePosition(featureIndex, positionIndexes).getObject();\n        } catch (ignored) {// This happens if user attempts to remove the last point\n        }\n\n        if (updatedData) {\n          props.onEdit({\n            updatedData: updatedData,\n            editType: 'removePosition',\n            editContext: {\n              featureIndexes: [featureIndex],\n              positionIndexes: positionIndexes,\n              position: pickedExistingHandle.geometry.coordinates\n            }\n          });\n        }\n      } else if (pickedIntermediateHandle) {\n        var _props$modeConfig2;\n\n        var _pickedIntermediateHa = pickedIntermediateHandle.properties,\n            _featureIndex = _pickedIntermediateHa.featureIndex,\n            _positionIndexes = _pickedIntermediateHa.positionIndexes;\n        var feature = props.data.features[_featureIndex];\n        var canAddPosition = !(((_props$modeConfig2 = props.modeConfig) === null || _props$modeConfig2 === void 0 ? void 0 : _props$modeConfig2.lockRectangles) && (feature === null || feature === void 0 ? void 0 : feature.properties.shape) === 'Rectangle');\n\n        if (canAddPosition) {\n          var _updatedData = new _immutableFeatureCollection.ImmutableFeatureCollection(props.data).addPosition(_featureIndex, _positionIndexes, pickedIntermediateHandle.geometry.coordinates).getObject();\n\n          if (_updatedData) {\n            props.onEdit({\n              updatedData: _updatedData,\n              editType: 'addPosition',\n              editContext: {\n                featureIndexes: [_featureIndex],\n                positionIndexes: _positionIndexes,\n                position: pickedIntermediateHandle.geometry.coordinates\n              }\n            });\n          }\n        }\n      }\n    }\n  }, {\n    key: \"handleDragging\",\n    value: function handleDragging(event, props) {\n      var editHandle = (0, _utils.getPickedEditHandle)(event.pointerDownPicks);\n\n      if (editHandle) {\n        // Cancel map panning if pointer went down on an edit handle\n        event.cancelPan();\n\n        this._dragEditHandle('movePosition', props, editHandle, event);\n      }\n    }\n  }, {\n    key: \"_dragEditHandle\",\n    value: function _dragEditHandle(editType, props, editHandle, event) {\n      var _props$modeConfig3;\n\n      var editHandleProperties = editHandle.properties;\n      var editedFeature = props.data.features[editHandleProperties.featureIndex];\n      var updatedData;\n\n      if (((_props$modeConfig3 = props.modeConfig) === null || _props$modeConfig3 === void 0 ? void 0 : _props$modeConfig3.lockRectangles) && editedFeature.properties.shape === 'Rectangle') {\n        var coordinates = (0, _utils.updateRectanglePosition)(editedFeature, editHandleProperties.positionIndexes[1], event.mapCoords);\n        updatedData = new _immutableFeatureCollection.ImmutableFeatureCollection(props.data).replaceGeometry(editHandleProperties.featureIndex, {\n          coordinates: coordinates,\n          type: 'Polygon'\n        }).getObject();\n      } else {\n        updatedData = new _immutableFeatureCollection.ImmutableFeatureCollection(props.data).replacePosition(editHandleProperties.featureIndex, editHandleProperties.positionIndexes, event.mapCoords).getObject();\n      }\n\n      props.onEdit({\n        updatedData: updatedData,\n        editType: editType,\n        editContext: {\n          featureIndexes: [editHandleProperties.featureIndex],\n          positionIndexes: editHandleProperties.positionIndexes,\n          position: event.mapCoords\n        }\n      });\n    }\n  }, {\n    key: \"handlePointerMove\",\n    value: function handlePointerMove(event, props) {\n      var cursor = this.getCursor(event);\n      props.onUpdateCursor(cursor);\n    }\n  }, {\n    key: \"handleStartDragging\",\n    value: function handleStartDragging(event, props) {\n      var selectedFeatureIndexes = props.selectedIndexes;\n      var editHandle = (0, _utils.getPickedIntermediateEditHandle)(event.picks);\n\n      if (selectedFeatureIndexes.length && editHandle) {\n        var editHandleProperties = editHandle.properties;\n        var updatedData = new _immutableFeatureCollection.ImmutableFeatureCollection(props.data).addPosition(editHandleProperties.featureIndex, editHandleProperties.positionIndexes, event.mapCoords).getObject();\n        props.onEdit({\n          updatedData: updatedData,\n          editType: 'addPosition',\n          editContext: {\n            featureIndexes: [editHandleProperties.featureIndex],\n            positionIndexes: editHandleProperties.positionIndexes,\n            position: event.mapCoords\n          }\n        });\n      }\n    }\n  }, {\n    key: \"handleStopDragging\",\n    value: function handleStopDragging(event, props) {\n      var selectedFeatureIndexes = props.selectedIndexes;\n      var editHandle = (0, _utils.getPickedEditHandle)(event.picks);\n\n      if (selectedFeatureIndexes.length && editHandle) {\n        this._dragEditHandle('finishMovePosition', props, editHandle, event);\n      }\n    }\n  }, {\n    key: \"getCursor\",\n    value: function getCursor(event) {\n      var picks = event && event.picks || [];\n      var handlesPicked = (0, _utils.getPickedEditHandles)(picks);\n\n      if (handlesPicked.length) {\n        return 'cell';\n      }\n\n      return null;\n    }\n  }]);\n\n  return ModifyMode;\n}(_geojsonEditMode.GeoJsonEditMode);\n\nexports.ModifyMode = ModifyMode;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvbW9kaWZ5LW1vZGUudHMiXSwibmFtZXMiOlsiTW9kaWZ5TW9kZSIsInByb3BzIiwiaGFuZGxlcyIsImRhdGEiLCJsYXN0UG9pbnRlck1vdmVFdmVudCIsImZlYXR1cmVzIiwicGlja3MiLCJtYXBDb29yZHMiLCJzZWxlY3RlZEluZGV4ZXMiLCJpbmRleCIsImxlbmd0aCIsImdlb21ldHJ5IiwicHVzaCIsImNvbnNvbGUiLCJ3YXJuIiwiZXhpc3RpbmdFZGl0SGFuZGxlIiwiZmVhdHVyZUFzUGljayIsImZpbmQiLCJwaWNrIiwiaXNHdWlkZSIsIm9iamVjdCIsInR5cGUiLCJpbmNsdWRlcyIsIm1vZGVDb25maWciLCJsb2NrUmVjdGFuZ2xlcyIsInByb3BlcnRpZXMiLCJzaGFwZSIsImludGVybWVkaWF0ZVBvaW50IiwicG9zaXRpb25JbmRleFByZWZpeCIsInJlZmVyZW5jZVBvaW50IiwiY29vcmRpbmF0ZXMiLCJsaW5lU3RyaW5nIiwicHJlZml4IiwibGluZVN0cmluZ0ZlYXR1cmUiLCJjYW5kaWRhdGVJbnRlcm1lZGlhdGVQb2ludCIsImdldE5lYXJlc3RQb2ludCIsInZpZXdwb3J0IiwiZGlzdCIsInBvc2l0aW9uIiwiZ3VpZGVUeXBlIiwiZWRpdEhhbmRsZVR5cGUiLCJmZWF0dXJlSW5kZXgiLCJwb3NpdGlvbkluZGV4ZXMiLCJsaW5lIiwiaW5Qb2ludCIsInNvbWUiLCJjb29yZCIsImxvZyIsImV2ZW50IiwicGlja2VkRXhpc3RpbmdIYW5kbGUiLCJwaWNrZWRJbnRlcm1lZGlhdGVIYW5kbGUiLCJ1cGRhdGVkRGF0YSIsIkltbXV0YWJsZUZlYXR1cmVDb2xsZWN0aW9uIiwicmVtb3ZlUG9zaXRpb24iLCJnZXRPYmplY3QiLCJpZ25vcmVkIiwib25FZGl0IiwiZWRpdFR5cGUiLCJlZGl0Q29udGV4dCIsImZlYXR1cmVJbmRleGVzIiwiZmVhdHVyZSIsImNhbkFkZFBvc2l0aW9uIiwiYWRkUG9zaXRpb24iLCJlZGl0SGFuZGxlIiwicG9pbnRlckRvd25QaWNrcyIsImNhbmNlbFBhbiIsIl9kcmFnRWRpdEhhbmRsZSIsImVkaXRIYW5kbGVQcm9wZXJ0aWVzIiwiZWRpdGVkRmVhdHVyZSIsInJlcGxhY2VHZW9tZXRyeSIsInJlcGxhY2VQb3NpdGlvbiIsImN1cnNvciIsImdldEN1cnNvciIsIm9uVXBkYXRlQ3Vyc29yIiwic2VsZWN0ZWRGZWF0dXJlSW5kZXhlcyIsImhhbmRsZXNQaWNrZWQiLCJHZW9Kc29uRWRpdE1vZGUiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQTs7QUFDQTs7QUF3QkE7O0FBQ0E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBRWFBLFU7Ozs7Ozs7Ozs7Ozs7OEJBQ0RDLEssRUFBNkQ7QUFBQTs7QUFDckUsVUFBTUMsT0FBTyxHQUFHLEVBQWhCO0FBRHFFLFVBRzdEQyxJQUg2RCxHQUc5QkYsS0FIOEIsQ0FHN0RFLElBSDZEO0FBQUEsVUFHdkRDLG9CQUh1RCxHQUc5QkgsS0FIOEIsQ0FHdkRHLG9CQUh1RDtBQUFBLFVBSTdEQyxRQUo2RCxHQUloREYsSUFKZ0QsQ0FJN0RFLFFBSjZEO0FBS3JFLFVBQU1DLEtBQUssR0FBR0Ysb0JBQW9CLElBQUlBLG9CQUFvQixDQUFDRSxLQUEzRDtBQUNBLFVBQU1DLFNBQVMsR0FBR0gsb0JBQW9CLElBQUlBLG9CQUFvQixDQUFDRyxTQUEvRDs7QUFOcUUsaURBUWpETixLQUFLLENBQUNPLGVBUjJDO0FBQUE7O0FBQUE7QUFRckUsNERBQTJDO0FBQUEsY0FBaENDLE1BQWdDOztBQUN6QyxjQUFJQSxNQUFLLEdBQUdKLFFBQVEsQ0FBQ0ssTUFBckIsRUFBNkI7QUFBQSxnQkFDbkJDLFFBRG1CLEdBQ05OLFFBQVEsQ0FBQ0ksTUFBRCxDQURGLENBQ25CRSxRQURtQjtBQUUzQlQsWUFBQUEsT0FBTyxDQUFDVSxJQUFSLE9BQUFWLE9BQU8scUJBQVMsc0NBQTBCUyxRQUExQixFQUFvQ0YsTUFBcEMsQ0FBVCxFQUFQO0FBQ0QsV0FIRCxNQUdPO0FBQ0xJ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Iiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgcG9pbnQsIGxpbmVTdHJpbmcgYXMgdG9MaW5lU3RyaW5nIH0gZnJvbSAnQHR1cmYvaGVscGVycyc7XG5pbXBvcnQge1xuICByZWN1cnNpdmVseVRyYXZlcnNlTmVzdGVkQXJyYXlzLFxuICBuZWFyZXN0UG9pbnRPblByb2plY3RlZExpbmUsXG4gIG5lYXJlc3RQb2ludE9uTGluZSxcbiAgZ2V0RWRpdEhhbmRsZXNGb3JHZW9tZXRyeSxcbiAgZ2V0UGlja2VkRWRpdEhhbmRsZXMsXG4gIGdldFBpY2tlZEVkaXRIYW5kbGUsXG4gIGdldFBpY2tlZEV4aXN0aW5nRWRpdEhhbmRsZSxcbiAgZ2V0UGlja2VkSW50ZXJtZWRpYXRlRWRpdEhhbmRsZSxcbiAgdXBkYXRlUmVjdGFuZ2xlUG9zaXRpb24sXG4gIE5lYXJlc3RQb2ludFR5cGUsXG59IGZyb20gJy4uL3V0aWxzJztcbmltcG9ydCB7IExpbmVTdHJpbmcsIFBvaW50LCBQb2x5Z29uLCBGZWF0dXJlQ29sbGVjdGlvbiwgRmVhdHVyZU9mIH0gZnJvbSAnLi4vZ2VvanNvbi10eXBlcyc7XG5pbXBvcnQge1xuICBNb2RlUHJvcHMsXG4gIENsaWNrRXZlbnQsXG4gIFBvaW50ZXJNb3ZlRXZlbnQsXG4gIFN0YXJ0RHJhZ2dpbmdFdmVudCxcbiAgU3RvcERyYWdnaW5nRXZlbnQsXG4gIERyYWdnaW5nRXZlbnQsXG4gIFZpZXdwb3J0LFxuICBHdWlkZUZlYXR1cmVDb2xsZWN0aW9uLFxuICBFZGl0SGFuZGxlRmVhdHVyZSxcbn0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHsgR2VvSnNvbkVkaXRNb2RlIH0gZnJvbSAnLi9nZW9qc29uLWVkaXQtbW9kZSc7XG5pbXBvcnQgeyBJbW11dGFibGVGZWF0dXJlQ29sbGVjdGlvbiB9IGZyb20gJy4vaW1tdXRhYmxlLWZlYXR1cmUtY29sbGVjdGlvbic7XG5cbmV4cG9ydCBjbGFzcyBNb2RpZnlNb2RlIGV4dGVuZHMgR2VvSnNvbkVkaXRNb2RlIHtcbiAgZ2V0R3VpZGVzKHByb3BzOiBNb2RlUHJvcHM8RmVhdHVyZUNvbGxlY3Rpb24+KTogR3VpZGVGZWF0dXJlQ29sbGVjdGlvbiB7XG4gICAgY29uc3QgaGFuZGxlcyA9IFtdO1xuXG4gICAgY29uc3QgeyBkYXRhLCBsYXN0UG9pbnRlck1vdmVFdmVudCB9ID0gcHJvcHM7XG4gICAgY29uc3QgeyBmZWF0dXJlcyB9ID0gZGF0YTtcbiAgICBjb25zdCBwaWNrcyA9IGxhc3RQb2ludGVyTW92ZUV2ZW50ICYmIGxhc3RQb2ludGVyTW92ZUV2ZW50LnBpY2tzO1xuICAgIGNvbnN0IG1hcENvb3JkcyA9IGxhc3RQb2ludGVyTW92ZUV2ZW50ICYmIGxhc3RQb2ludGVyTW92ZUV2ZW50Lm1hcENvb3JkcztcblxuICAgIGZvciAoY29uc3QgaW5kZXggb2YgcHJvcHMuc2VsZWN0ZWRJbmRleGVzKSB7XG4gICAgICBpZiAoaW5kZXggPCBmZWF0dXJlcy5sZW5ndGgpIHtcbiAgICAgICAgY29uc3QgeyBnZW9tZXRyeSB9ID0gZmVhdHVyZXNbaW5kZXhdO1xuICAgICAgICBoYW5kbGVzLnB1c2goLi4uZ2V0RWRpdEhhbmRsZXNGb3JHZW9tZXRyeShnZW9tZXRyeSwgaW5kZXgpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnNvbGUud2Fybihgc2VsZWN0ZWRGZWF0dXJlSW5kZXhlcyBvdXQgb2YgcmFuZ2UgJHtpbmRleH1gKTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1jb25zb2xlLG5vLXVuZGVmXG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gaW50ZXJtZWRpYXRlIGVkaXQgaGFuZGxlXG4gICAgaWYgKHBpY2tzICYmIHBpY2tzLmxlbmd0aCAmJiBtYXBDb29yZHMpIHtcbiAgICAgIGNvbnN0IGV4aXN0aW5nRWRpdEhhbmRsZSA9IGdldFBpY2tlZEV4aXN0aW5nRWRpdEhhbmRsZShwaWNrcyk7XG4gICAgICAvLyBkb24ndCBzaG93IGludGVybWVkaWF0ZSBwb2ludCB3aGVuIHRvbyBjbG9zZSB0byBhbiBleGlzdGluZyBlZGl0IGhhbmRsZVxuICAgICAgY29uc3QgZmVhdHVyZUFzUGljayA9ICFleGlzdGluZ0VkaXRIYW5kbGUgJiYgcGlja3MuZmluZCgocGljaykgPT4gIXBpY2suaXNHdWlkZSk7XG5cbiAgICAgIC8vIGlzIHRoZSBmZWF0dXJlIGluIHRoZSBwaWNrIHNlbGVjdGVkXG4gICAgICBpZiAoXG4gICAgICAgIGZlYXR1cmVBc1BpY2sgJiZcbiAgICAgICAgIWZlYXR1cmVBc1BpY2sub2JqZWN0Lmdlb21ldHJ5LnR5cGUuaW5jbHVkZXMoJ1BvaW50JykgJiZcbiAgICAgICAgIShcbiAgICAgICAgICBwcm9wcy5tb2RlQ29uZmlnPy5sb2NrUmVjdGFuZ2xlcyAmJiBmZWF0dXJlQXNQaWNrLm9iamVjdC5wcm9wZXJ0aWVzLnNoYXBlID09PSAnUmVjdGFuZ2xlJ1xuICAgICAgICApICYmXG4gICAgICAgIHByb3BzLnNlbGVjdGVkSW5kZXhlcy5pbmNsdWRlcyhmZWF0dXJlQXNQaWNrLmluZGV4KVxuICAgICAgKSB7XG4gICAgICAgIGxldCBpbnRlcm1lZGlhdGVQb2ludDogTmVhcmVzdFBvaW50VHlwZSB8IG51bGwgfCB1bmRlZmluZWQgPSBudWxsO1xuICAgICAgICBsZXQgcG9zaXRpb25JbmRleFByZWZpeCA9IFtdO1xuICAgICAgICBjb25zdCByZWZlcmVuY2VQb2ludCA9IHBvaW50KG1hcENvb3Jkcyk7XG4gICAgICAgIC8vIHByb2Nlc3MgYWxsIGxpbmVzIG9mIHRoZSAoc2luZ2xlKSBmZWF0dXJlXG4gICAgICAgIHJlY3Vyc2l2ZWx5VHJhdmVyc2VOZXN0ZWRBcnJheXMoXG4gICAgICAgICAgZmVhdHVyZUFzUGljay5vYmplY3QuZ2VvbWV0cnkuY29vcmRpbmF0ZXMsXG4gICAgICAgICAgW10sXG4gICAgICAgICAgKGxpbmVTdHJpbmcsIHByZWZpeCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgbGluZVN0cmluZ0ZlYXR1cmUgPSB0b0xpbmVTdHJpbmcobGluZVN0cmluZyk7XG4gICAgICAgICAgICBjb25zdCBjYW5kaWRhdGVJbnRlcm1lZGlhdGVQb2ludCA9IHRoaXMuZ2V0TmVhcmVzdFBvaW50KFxuICAgICAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICAgIGxpbmVTdHJpbmdGZWF0dXJlLFxuICAgICAgICAgICAgICByZWZlcmVuY2VQb2ludCxcbiAgICAgICAgICAgICAgcHJvcHMubW9kZUNvbmZpZyAmJiBwcm9wcy5tb2RlQ29uZmlnLnZpZXdwb3J0XG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAhaW50ZXJtZWRpYXRlUG9pbnQgfHxcbiAgICAgICAgICAgICAgY2FuZGlkYXRlSW50ZXJtZWRpYXRlUG9pbnQucHJvcGVydGllcy5kaXN0IDwgaW50ZXJtZWRpYXRlUG9pbnQucHJvcGVydGllcy5kaXN0XG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgaW50ZXJtZWRpYXRlUG9pbnQgPSBjYW5kaWRhdGVJbnRlcm1lZGlhdGVQb2ludDtcbiAgICAgICAgICAgICAgcG9zaXRpb25JbmRleFByZWZpeCA9IHByZWZpeDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICk7XG4gICAgICAgIC8vIHRhY2sgb24gdGhlIGxvbmUgaW50ZXJtZWRpYXRlIHBvaW50IHRvIHRoZSBzZXQgb2YgaGFuZGxlc1xuICAgICAgICBpZiAoaW50ZXJtZWRpYXRlUG9pbnQpIHtcbiAgICAgICAgICBjb25zdCB7XG4gICAgICAgICAgICBnZW9tZXRyeTogeyBjb29yZGluYXRlczogcG9zaXRpb24gfSxcbiAgICAgICAgICAgIHByb3BlcnRpZXM6IHsgaW5kZXggfSxcbiAgICAgICAgICB9ID0gaW50ZXJtZWRpYXRlUG9pbnQ7XG4gICAgICAgICAgaGFuZGxlcy5wdXNoKHtcbiAgICAgICAgICAgIHR5cGU6ICdGZWF0dXJlJyxcbiAgICAgICAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgICAgICAgZ3VpZGVUeXBlOiAnZWRpdEhhbmRsZScsXG4gICAgICAgICAgICAgIGVkaXRIYW5kbGVUeXBlOiAnaW50ZXJtZWRpYXRlJyxcbiAgICAgICAgICAgICAgZmVhdHVyZUluZGV4OiBmZWF0dXJlQXNQaWNrLmluZGV4LFxuICAgICAgICAgICAgICBwb3NpdGlvbkluZGV4ZXM6IFsuLi5wb3NpdGlvbkluZGV4UHJlZml4LCBpbmRleCArIDFdLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGdlb21ldHJ5OiB7XG4gICAgICAgICAgICAgIHR5cGU6ICdQb2ludCcsXG4gICAgICAgICAgICAgIGNvb3JkaW5hdGVzOiBwb3NpdGlvbixcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgdHlwZTogJ0ZlYXR1cmVDb2xsZWN0aW9uJyxcbiAgICAgIGZlYXR1cmVzOiBoYW5kbGVzLFxuICAgIH07XG4gIH1cblxuICAvLyB0dXJmLmpzIGRvZXMgbm90IHN1cHBvcnQgZWxldmF0aW9uIGZvciBuZWFyZXN0UG9pbnRPbkxpbmVcbiAgZ2V0TmVhcmVzdFBvaW50KFxuICAgIGxpbmU6IEZlYXR1cmVPZjxMaW5lU3RyaW5nPixcbiAgICBpblBvaW50OiBGZWF0dXJlT2Y8UG9pbnQ+LFxuICAgIHZpZXdwb3J0OiBWaWV3cG9ydCB8IG51bGwgfCB1bmRlZmluZWRcbiAgKTogTmVhcmVzdFBvaW50VHlwZSB7XG4gICAgY29uc3QgeyBjb29yZGluYXRlcyB9ID0gbGluZS5nZW9tZXRyeTtcbiAgICBpZiAoY29vcmRpbmF0ZXMuc29tZSgoY29vcmQpID0+IGNvb3JkLmxlbmd0aCA+IDIpKSB7XG4gICAgICBpZiAodmlld3BvcnQpIHtcbiAgICAgICAgLy8gVGhpcyBsaW5lIGhhcyBlbGV2YXRpb24sIHdlIG5lZWQgdG8gdXNlIGFsdGVybmF0aXZlIGFsZ29yaXRobVxuICAgICAgICByZXR1cm4gbmVhcmVzdFBvaW50T25Qcm9qZWN0ZWRMaW5lKGxpbmUsIGluUG9pbnQsIHZpZXdwb3J0KTtcbiAgICAgIH1cbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlLG5vLXVuZGVmXG4gICAgICBjb25zb2xlLmxvZyhcbiAgICAgICAgJ0VkaXRpbmcgM0QgcG9pbnQgYnV0IG1vZGVDb25maWcudmlld3BvcnQgbm90IHByb3ZpZGVkLiBGYWxsaW5nIGJhY2sgdG8gMkQgbG9naWMuJ1xuICAgICAgKTtcbiAgICB9XG4gICAgcmV0dXJuIG5lYXJlc3RQb2ludE9uTGluZShsaW5lLCBpblBvaW50LCB2aWV3cG9ydCk7XG4gIH1cblxuICBoYW5kbGVDbGljayhldmVudDogQ2xpY2tFdmVudCwgcHJvcHM6IE1vZGVQcm9wczxGZWF0dXJlQ29sbGVjdGlvbj4pIHtcbiAgICBjb25zdCBwaWNrZWRFeGlzdGluZ0hhbmRsZSA9IGdldFBpY2tlZEV4aXN0aW5nRWRpdEhhbmRsZShldmVudC5waWNrcyk7XG4gICAgY29uc3QgcGlja2VkSW50ZXJtZWRpYXRlSGFuZGxlID0gZ2V0UGlja2VkSW50ZXJtZWRpYXRlRWRpdEhhbmRsZShldmVudC5waWNrcyk7XG5cbiAgICBpZiAocGlja2VkRXhpc3RpbmdIYW5kbGUpIHtcbiAgICAgIGNvbnN0IHsgZmVhdHVyZUluZGV4LCBwb3NpdGlvbkluZGV4ZXMgfSA9IHBpY2tlZEV4aXN0aW5nSGFuZGxlLnByb3BlcnRpZXM7XG5cbiAgICAgIGxldCB1cGRhdGVkRGF0YTtcbiAgICAgIHRyeSB7XG4gICAgICAgIHVwZGF0ZWREYXRhID0gbmV3IEltbXV0YWJsZUZlYXR1cmVDb2xsZWN0aW9uKHByb3BzLmRhdGEpXG4gICAgICAgICAgLnJlbW92ZVBvc2l0aW9uKGZlYXR1cmVJbmRleCwgcG9zaXRpb25JbmRleGVzKVxuICAgICAgICAgIC5nZXRPYmplY3QoKTtcbiAgICAgIH0gY2F0Y2ggKGlnbm9yZWQpIHtcbiAgICAgICAgLy8gVGhpcyBoYXBwZW5zIGlmIHVzZXIgYXR0ZW1wdHMgdG8gcmVtb3ZlIHRoZSBsYXN0IHBvaW50XG4gICAgICB9XG5cbiAgICAgIGlmICh1cGRhdGVkRGF0YSkge1xuICAgICAgICBwcm9wcy5vbkVkaXQoe1xuICAgICAgICAgIHVwZGF0ZWREYXRhLFxuICAgICAgICAgIGVkaXRUeXBlOiAncmVtb3ZlUG9zaXRpb24nLFxuICAgICAgICAgIGVkaXRDb250ZXh0OiB7XG4gICAgICAgICAgICBmZWF0dXJlSW5kZXhlczogW2ZlYXR1cmVJbmRleF0sXG4gICAgICAgICAgICBwb3NpdGlvbkluZGV4ZXMsXG4gICAgICAgICAgICBwb3NpdGlvbjogcGlja2VkRXhpc3RpbmdIYW5kbGUuZ2VvbWV0cnkuY29vcmRpbmF0ZXMsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChwaWNrZWRJbnRlcm1lZGlhdGVIYW5kbGUpIHtcbiAgICAgIGNvbnN0IHsgZmVhdHVyZUluZGV4LCBwb3NpdGlvbkluZGV4ZXMgfSA9IHBpY2tlZEludGVybWVkaWF0ZUhhbmRsZS5wcm9wZXJ0aWVzO1xuXG4gICAgICBjb25zdCBmZWF0dXJlID0gcHJvcHMuZGF0YS5mZWF0dXJlc1tmZWF0dXJlSW5kZXhdO1xuICAgICAgY29uc3QgY2FuQWRkUG9zaXRpb24gPSAhKFxuICAgICAgICBwcm9wcy5tb2RlQ29uZmlnPy5sb2NrUmVjdGFuZ2xlcyAmJiBmZWF0dXJlPy5wcm9wZXJ0aWVzLnNoYXBlID09PSAnUmVjdGFuZ2xlJ1xuICAgICAgKTtcblxuICAgICAgaWYgKGNhbkFkZFBvc2l0aW9uKSB7XG4gICAgICAgIGNvbnN0IHVwZGF0ZWREYXRhID0gbmV3IEltbXV0YWJsZUZlYXR1cmVDb2xsZWN0aW9uKHByb3BzLmRhdGEpXG4gICAgICAgICAgLmFkZFBvc2l0aW9uKGZlYXR1cmVJbmRleCwgcG9zaXRpb25JbmRleGVzLCBwaWNrZWRJbnRlcm1lZGlhdGVIYW5kbGUuZ2VvbWV0cnkuY29vcmRpbmF0ZXMpXG4gICAgICAgICAgLmdldE9iamVjdCgpO1xuXG4gICAgICAgIGlmICh1cGRhdGVkRGF0YSkge1xuICAgICAgICAgIHByb3BzLm9uRWRpdCh7XG4gICAgICAgICAgICB1cGRhdGVkRGF0YSxcbiAgICAgICAgICAgIGVkaXRUeXBlOiAnYWRkUG9zaXRpb24nLFxuICAgICAgICAgICAgZWRpdENvbnRleHQ6IHtcbiAgICAgICAgICAgICAgZmVhdHVyZUluZGV4ZXM6IFtmZWF0dXJlSW5kZXhdLFxuICAgICAgICAgICAgICBwb3NpdGlvbkluZGV4ZXMsXG4gICAgICAgICAgICAgIHBvc2l0aW9uOiBwaWNrZWRJbnRlcm1lZGlhdGVIYW5kbGUuZ2VvbWV0cnkuY29vcmRpbmF0ZXMsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgaGFuZGxlRHJhZ2dpbmcoZXZlbnQ6IERyYWdnaW5nRXZlbnQsIHByb3BzOiBNb2RlUHJvcHM8RmVhdHVyZUNvbGxlY3Rpb24+KTogdm9pZCB7XG4gICAgY29uc3QgZWRpdEhhbmRsZSA9IGdldFBpY2tlZEVkaXRIYW5kbGUoZXZlbnQucG9pbnRlckRvd25QaWNrcyk7XG5cbiAgICBpZiAoZWRpdEhhbmRsZSkge1xuICAgICAgLy8gQ2FuY2VsIG1hcCBwYW5uaW5nIGlmIHBvaW50ZXIgd2VudCBkb3duIG9uIGFuIGVkaXQgaGFuZGxlXG4gICAgICBldmVudC5jYW5jZWxQYW4oKTtcblxuICAgICAgdGhpcy5fZHJhZ0VkaXRIYW5kbGUoJ21vdmVQb3NpdGlvbicsIHByb3BzLCBlZGl0SGFuZGxlLCBldmVudCk7XG4gICAgfVxuICB9XG5cbiAgX2RyYWdFZGl0SGFuZGxlKFxuICAgIGVkaXRUeXBlOiBzdHJpbmcsXG4gICAgcHJvcHM6IE1vZGVQcm9wczxGZWF0dXJlQ29sbGVjdGlvbj4sXG4gICAgZWRpdEhhbmRsZTogRWRpdEhhbmRsZUZlYXR1cmUsXG4gICAgZXZlbnQ6IFN0b3BEcmFnZ2luZ0V2ZW50IHwgRHJhZ2dpbmdFdmVudFxuICApIHtcbiAgICBjb25zdCBlZGl0SGFuZGxlUHJvcGVydGllcyA9IGVkaXRIYW5kbGUucHJvcGVydGllcztcbiAgICBjb25zdCBlZGl0ZWRGZWF0dXJlID0gcHJvcHMuZGF0YS5mZWF0dXJlc1tlZGl0SGFuZGxlUHJvcGVydGllcy5mZWF0dXJlSW5kZXhdO1xuXG4gICAgbGV0IHVwZGF0ZWREYXRhO1xuICAgIGlmIChwcm9wcy5tb2RlQ29uZmlnPy5sb2NrUmVjdGFuZ2xlcyAmJiBlZGl0ZWRGZWF0dXJlLnByb3BlcnRpZXMuc2hhcGUgPT09ICdSZWN0YW5nbGUnKSB7XG4gICAgICBjb25zdCBjb29yZGluYXRlcyA9IHVwZGF0ZVJlY3RhbmdsZVBvc2l0aW9uKFxuICAgICAgICBlZGl0ZWRGZWF0dXJlIGFzIEZlYXR1cmVPZjxQb2x5Z29uPixcbiAgICAgICAgZWRpdEhhbmRsZVByb3BlcnRpZXMucG9zaXRpb25JbmRleGVzWzFdLFxuICAgICAgICBldmVudC5tYXBDb29yZHNcbiAgICAgICk7XG5cbiAgICAgIHVwZGF0ZWREYXRhID0gbmV3IEltbXV0YWJsZUZlYXR1cmVDb2xsZWN0aW9uKHByb3BzLmRhdGEpXG4gICAgICAgIC5yZXBsYWNlR2VvbWV0cnkoZWRpdEhhbmRsZVByb3BlcnRpZXMuZmVhdHVyZUluZGV4LCB7IGNvb3JkaW5hdGVzLCB0eXBlOiAnUG9seWdvbicgfSlcbiAgICAgICAgLmdldE9iamVjdCgpO1xuICAgIH0gZWxzZSB7XG4gICAgICB1cGRhdGVkRGF0YSA9IG5ldyBJbW11dGFibGVGZWF0dXJlQ29sbGVjdGlvbihwcm9wcy5kYXRhKVxuICAgICAgICAucmVwbGFjZVBvc2l0aW9uKFxuICAgICAgICAgIGVkaXRIYW5kbGVQcm9wZXJ0aWVzLmZlYXR1cmVJbmRleCxcbiAgICAgICAgICBlZGl0SGFuZGxlUHJvcGVydGllcy5wb3NpdGlvbkluZGV4ZXMsXG4gICAgICAgICAgZXZlbnQubWFwQ29vcmRzXG4gICAgICAgIClcbiAgICAgICAgLmdldE9iamVjdCgpO1xuICAgIH1cblxuICAgIHByb3BzLm9uRWRpdCh7XG4gICAgICB1cGRhdGVkRGF0YSxcbiAgICAgIGVkaXRUeXBlLFxuICAgICAgZWRpdENvbnRleHQ6IHtcbiAgICAgICAgZmVhdHVyZUluZGV4ZXM6IFtlZGl0SGFuZGxlUHJvcGVydGllcy5mZWF0dXJlSW5kZXhdLFxuICAgICAgICBwb3NpdGlvbkluZGV4ZXM6IGVkaXRIYW5kbGVQcm9wZXJ0aWVzLnBvc2l0aW9uSW5kZXhlcyxcbiAgICAgICAgcG9zaXRpb246IGV2ZW50Lm1hcENvb3JkcyxcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cblxuICBoYW5kbGVQb2ludGVyTW92ZShldmVudDogUG9pbnRlck1vdmVFdmVudCwgcHJvcHM6IE1vZGVQcm9wczxGZWF0dXJlQ29sbGVjdGlvbj4pOiB2b2lkIHtcbiAgICBjb25zdCBjdXJzb3IgPSB0aGlzLmdldEN1cnNvcihldmVudCk7XG4gICAgcHJvcHMub25VcGRhdGVDdXJzb3IoY3Vyc29yKTtcbiAgfVxuXG4gIGhhbmRsZVN0YXJ0RHJhZ2dpbmcoZXZlbnQ6IFN0YXJ0RHJhZ2dpbmdFdmVudCwgcHJvcHM6IE1vZGVQcm9wczxGZWF0dXJlQ29sbGVjdGlvbj4pIHtcbiAgICBjb25zdCBzZWxlY3RlZEZlYXR1cmVJbmRleGVzID0gcHJvcHMuc2VsZWN0ZWRJbmRleGVzO1xuXG4gICAgY29uc3QgZWRpdEhhbmRsZSA9IGdldFBpY2tlZEludGVybWVkaWF0ZUVkaXRIYW5kbGUoZXZlbnQucGlja3MpO1xuICAgIGlmIChzZWxlY3RlZEZlYXR1cmVJbmRleGVzLmxlbmd0aCAmJiBlZGl0SGFuZGxlKSB7XG4gICAgICBjb25zdCBlZGl0SGFuZGxlUHJvcGVydGllcyA9IGVkaXRIYW5kbGUucHJvcGVydGllcztcblxuICAgICAgY29uc3QgdXBkYXRlZERhdGEgPSBuZXcgSW1tdXRhYmxlRmVhdHVyZUNvbGxlY3Rpb24ocHJvcHMuZGF0YSlcbiAgICAgICAgLmFkZFBvc2l0aW9uKFxuICAgICAgICAgIGVkaXRIYW5kbGVQcm9wZXJ0aWVzLmZlYXR1cmVJbmRleCxcbiAgICAgICAgICBlZGl0SGFuZGxlUHJvcGVydGllcy5wb3NpdGlvbkluZGV4ZXMsXG4gICAgICAgICAgZXZlbnQubWFwQ29vcmRzXG4gICAgICAgIClcbiAgICAgICAgLmdldE9iamVjdCgpO1xuXG4gICAgICBwcm9wcy5vbkVkaXQoe1xuICAgICAgICB1cGRhdGVkRGF0YSxcbiAgICAgICAgZWRpdFR5cGU6ICdhZGRQb3NpdGlvbicsXG4gICAgICAgIGVkaXRDb250ZXh0OiB7XG4gICAgICAgICAgZmVhdHVyZUluZGV4ZXM6IFtlZGl0SGFuZGxlUHJvcGVydGllcy5mZWF0dXJlSW5kZXhdLFxuICAgICAgICAgIHBvc2l0aW9uSW5kZXhlczogZWRpdEhhbmRsZVByb3BlcnRpZXMucG9zaXRpb25JbmRleGVzLFxuICAgICAgICAgIHBvc2l0aW9uOiBldmVudC5tYXBDb29yZHMsXG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBoYW5kbGVTdG9wRHJhZ2dpbmcoZXZlbnQ6IFN0b3BEcmFnZ2luZ0V2ZW50LCBwcm9wczogTW9kZVByb3BzPEZlYXR1cmVDb2xsZWN0aW9uPikge1xuICAgIGNvbnN0IHNlbGVjdGVkRmVhdHVyZUluZGV4ZXMgPSBwcm9wcy5zZWxlY3RlZEluZGV4ZXM7XG4gICAgY29uc3QgZWRpdEhhbmRsZSA9IGdldFBpY2tlZEVkaXRIYW5kbGUoZXZlbnQucGlja3MpO1xuICAgIGlmIChzZWxlY3RlZEZlYXR1cmVJbmRleGVzLmxlbmd0aCAmJiBlZGl0SGFuZGxlKSB7XG4gICAgICB0aGlzLl9kcmFnRWRpdEhhbmRsZSgnZmluaXNoTW92ZVBvc2l0aW9uJywgcHJvcHMsIGVkaXRIYW5kbGUsIGV2ZW50KTtcbiAgICB9XG4gIH1cblxuICBnZXRDdXJzb3IoZXZlbnQ6IFBvaW50ZXJNb3ZlRXZlbnQpOiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCBwaWNrcyA9IChldmVudCAmJiBldmVudC5waWNrcykgfHwgW107XG5cbiAgICBjb25zdCBoYW5kbGVzUGlja2VkID0gZ2V0UGlja2VkRWRpdEhhbmRsZXMocGlja3MpO1xuICAgIGlmIChoYW5kbGVzUGlja2VkLmxlbmd0aCkge1xuICAgICAgcmV0dXJuICdjZWxsJztcbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbn1cbiJdfQ==","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.ResizeCircleMode = void 0;\n\nvar _nearestPointOnLine = _interopRequireDefault(require(\"@turf/nearest-point-on-line\"));\n\nvar _helpers = require(\"@turf/helpers\");\n\nvar _circle = _interopRequireDefault(require(\"@turf/circle\"));\n\nvar _distance = _interopRequireDefault(require(\"@turf/distance\"));\n\nvar _center = _interopRequireDefault(require(\"@turf/center\"));\n\nvar _utils = require(\"../utils\");\n\nvar _geojsonEditMode = require(\"./geojson-edit-mode\");\n\nvar _immutableFeatureCollection = require(\"./immutable-feature-collection\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(n); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar ResizeCircleMode = /*#__PURE__*/function (_GeoJsonEditMode) {\n  _inherits(ResizeCircleMode, _GeoJsonEditMode);\n\n  var _super = _createSuper(ResizeCircleMode);\n\n  function ResizeCircleMode() {\n    var _this;\n\n    _classCallCheck(this, ResizeCircleMode);\n\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    _this = _super.call.apply(_super, [this].concat(args));\n\n    _defineProperty(_assertThisInitialized(_this), \"_selectedEditHandle\", void 0);\n\n    _defineProperty(_assertThisInitialized(_this), \"_isResizing\", false);\n\n    return _this;\n  }\n\n  _createClass(ResizeCircleMode, [{\n    key: \"getGuides\",\n    value: function getGuides(props) {\n      var _this2 = this;\n\n      var handles = [];\n      var selectedFeatureIndexes = props.selectedIndexes;\n      var lastPointerMoveEvent = props.lastPointerMoveEvent;\n      var picks = lastPointerMoveEvent && lastPointerMoveEvent.picks;\n      var mapCoords = lastPointerMoveEvent && lastPointerMoveEvent.mapCoords; // intermediate edit handle\n\n      if (picks && picks.length && mapCoords && selectedFeatureIndexes.length === 1 && !this._isResizing) {\n        var featureAsPick = picks.find(function (pick) {\n          return !pick.isGuide;\n        }); // is the feature in the pick selected\n\n        if (featureAsPick && featureAsPick.object.properties.shape && featureAsPick.object.properties.shape.includes('Circle') && props.selectedIndexes.includes(featureAsPick.index)) {\n          var intermediatePoint = null;\n          var positionIndexPrefix = [];\n          var referencePoint = (0, _helpers.point)(mapCoords); // process all lines of the (single) feature\n\n          (0, _utils.recursivelyTraverseNestedArrays)(featureAsPick.object.geometry.coordinates, [], function (lineString, prefix) {\n            var lineStringFeature = (0, _helpers.lineString)(lineString);\n\n            var candidateIntermediatePoint = _this2.getNearestPoint( // @ts-ignore\n            lineStringFeature, referencePoint, props.modeConfig && props.modeConfig.viewport);\n\n            if (!intermediatePoint || candidateIntermediatePoint.properties.dist < intermediatePoint.properties.dist) {\n              intermediatePoint = candidateIntermediatePoint;\n              positionIndexPrefix = prefix;\n            }\n          }); // tack on the lone intermediate point to the set of handles\n\n          if (intermediatePoint) {\n            var _intermediatePoint = intermediatePoint,\n                position = _intermediatePoint.geometry.coordinates,\n                index = _intermediatePoint.properties.index;\n            handles.push({\n              type: 'Feature',\n              properties: {\n                guideType: 'editHandle',\n                editHandleType: 'intermediate',\n                featureIndex: featureAsPick.index,\n                positionIndexes: [].concat(_toConsumableArray(positionIndexPrefix), [index + 1])\n              },\n              geometry: {\n                type: 'Point',\n                coordinates: position\n              }\n            });\n          }\n        }\n      }\n\n      return {\n        type: 'FeatureCollection',\n        features: handles\n      };\n    } // turf.js does not support elevation for nearestPointOnLine\n\n  }, {\n    key: \"getNearestPoint\",\n    value: function getNearestPoint(line, inPoint, viewport) {\n      var coordinates = line.geometry.coordinates;\n\n      if (coordinates.some(function (coord) {\n        return coord.length > 2;\n      })) {\n        if (viewport) {\n          // This line has elevation, we need to use alternative algorithm\n          return (0, _utils.nearestPointOnProjectedLine)(line, inPoint, viewport);\n        } // eslint-disable-next-line no-console,no-undef\n\n\n        console.log('Editing 3D point but modeConfig.viewport not provided. Falling back to 2D logic.');\n      }\n\n      return (0, _nearestPointOnLine[\"default\"])(line, inPoint);\n    }\n  }, {\n    key: \"handleDragging\",\n    value: function handleDragging(event, props) {\n      var editHandle = (0, _utils.getPickedEditHandle)(event.pointerDownPicks);\n\n      if (editHandle) {\n        // Cancel map panning if pointer went down on an edit handle\n        event.cancelPan();\n        var editHandleProperties = editHandle.properties;\n        var feature = this.getSelectedFeature(props);\n        var center = (0, _center[\"default\"])(feature).geometry.coordinates;\n        var numberOfSteps = Object.entries(feature.geometry.coordinates[0]).length - 1;\n        var radius = Math.max((0, _distance[\"default\"])(center, event.mapCoords), 0.001);\n        var _ref = {},\n            _ref$steps = _ref.steps,\n            steps = _ref$steps === void 0 ? numberOfSteps : _ref$steps;\n        var options = {\n          steps: steps\n        };\n        var updatedFeature = (0, _circle[\"default\"])(center, radius, options);\n        var geometry = updatedFeature.geometry;\n        var updatedData = new _immutableFeatureCollection.ImmutableFeatureCollection(props.data).replaceGeometry(editHandleProperties.featureIndex, geometry).getObject();\n        props.onEdit({\n          updatedData: updatedData,\n          editType: 'unionGeometry',\n          editContext: {\n            featureIndexes: [editHandleProperties.featureIndex]\n          }\n        });\n      }\n    }\n  }, {\n    key: \"handlePointerMove\",\n    value: function handlePointerMove(event, props) {\n      if (!this._isResizing) {\n        var selectedEditHandle = (0, _utils.getPickedEditHandle)(event.picks);\n        this._selectedEditHandle = selectedEditHandle && selectedEditHandle.properties.editHandleType === 'intermediate' ? selectedEditHandle : null;\n      }\n\n      var cursor = this.getCursor(event);\n      props.onUpdateCursor(cursor);\n    }\n  }, {\n    key: \"handleStartDragging\",\n    value: function handleStartDragging(event, props) {\n      if (this._selectedEditHandle) {\n        this._isResizing = true;\n      }\n    }\n  }, {\n    key: \"handleStopDragging\",\n    value: function handleStopDragging(event, props) {\n      if (this._isResizing) {\n        this._selectedEditHandle = null;\n        this._isResizing = false;\n      }\n    }\n  }, {\n    key: \"getCursor\",\n    value: function getCursor(event) {\n      var picks = event && event.picks || [];\n      var handlesPicked = (0, _utils.getPickedEditHandles)(picks);\n\n      if (handlesPicked.length) {\n        return 'cell';\n      }\n\n      return null;\n    }\n  }]);\n\n  return ResizeCircleMode;\n}(_geojsonEditMode.GeoJsonEditMode);\n\nexports.ResizeCircleMode = ResizeCircleMode;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvcmVzaXplLWNpcmNsZS1tb2RlLnRzIl0sIm5hbWVzIjpbIlJlc2l6ZUNpcmNsZU1vZGUiLCJwcm9wcyIsImhhbmRsZXMiLCJzZWxlY3RlZEZlYXR1cmVJbmRleGVzIiwic2VsZWN0ZWRJbmRleGVzIiwibGFzdFBvaW50ZXJNb3ZlRXZlbnQiLCJwaWNrcyIsIm1hcENvb3JkcyIsImxlbmd0aCIsIl9pc1Jlc2l6aW5nIiwiZmVhdHVyZUFzUGljayIsImZpbmQiLCJwaWNrIiwiaXNHdWlkZSIsIm9iamVjdCIsInByb3BlcnRpZXMiLCJzaGFwZSIsImluY2x1ZGVzIiwiaW5kZXgiLCJpbnRlcm1lZGlhdGVQb2ludCIsInBvc2l0aW9uSW5kZXhQcmVmaXgiLCJyZWZlcmVuY2VQb2ludCIsImdlb21ldHJ5IiwiY29vcmRpbmF0ZXMiLCJsaW5lU3RyaW5nIiwicHJlZml4IiwibGluZVN0cmluZ0ZlYXR1cmUiLCJjYW5kaWRhdGVJbnRlcm1lZGlhdGVQb2ludCIsImdldE5lYXJlc3RQb2ludCIsIm1vZGVDb25maWciLCJ2aWV3cG9ydCIsImRpc3QiLCJwb3NpdGlvbiIsInB1c2giLCJ0eXBlIiwiZ3VpZGVUeXBlIiwiZWRpdEhhbmRsZVR5cGUiLCJmZWF0dXJlSW5kZXgiLCJwb3NpdGlvbkluZGV4ZXMiLCJmZWF0dXJlcyIsImxpbmUiLCJpblBvaW50Iiwic29tZSIsImNvb3JkIiwiY29uc29sZSIsImxvZyIsImV2ZW50IiwiZWRpdEhhbmRsZSIsInBvaW50ZXJEb3duUGlja3MiLCJjYW5jZWxQYW4iLCJlZGl0SGFuZGxlUHJvcGVydGllcyIsImZlYXR1cmUiLCJnZXRTZWxlY3RlZEZlYXR1cmUiLCJjZW50ZXIiLCJudW1iZXJPZlN0ZXBzIiwiT2JqZWN0IiwiZW50cmllcyIsInJhZGl1cyIsIk1hdGgiLCJtYXgiLCJzdGVwcyIsIm9wdGlvbnMiLCJ1cGRhdGVkRmVhdHVyZSIsInVwZGF0ZWREYXRhIiwiSW1tdXRhYmxlRmVhdHVyZUNvbGxlY3Rpb24iLCJkYXRhIiwicmVwbGFjZUdlb21ldHJ5IiwiZ2V0T2JqZWN0Iiwib25FZGl0IiwiZWRpdFR5cGUiLCJlZGl0Q29udGV4dCIsImZlYXR1cmVJbmRleGVzIiwic2VsZWN0ZWRFZGl0SGFuZGxlIiwiX3NlbGVjdGVkRWRpdEhhbmRsZSIsImN1cnNvciIsImdldEN1cnNvciIsIm9uVXBkYXRlQ3Vyc29yIiwiaGFuZGxlc1BpY2tlZCIsIkdlb0pzb25FZGl0TW9kZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQWtCQTs7QUFDQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQUVhQSxnQjs7Ozs7Ozs7Ozs7Ozs7Ozs7O2tFQUVHLEs7Ozs7Ozs7OEJBRUpDLEssRUFBNkQ7QUFBQTs7QUFDckUsVUFBTUMsT0FBTyxHQUFHLEVBQWhCO0FBQ0EsVUFBTUMsc0JBQXNCLEdBQUdGLEtBQUssQ0FBQ0csZUFBckM7QUFGcUUsVUFJN0RDLG9CQUo2RCxHQUlwQ0osS0FKb0MsQ0FJN0RJLG9CQUo2RDtBQUtyRSxVQUFNQyxLQUFLLEdBQUdELG9CQUFvQixJQUFJQSxvQkFBb0IsQ0FBQ0MsS0FBM0Q7QUFDQSxVQUFNQyxTQUFTLEdBQUdGLG9CQUFvQixJQUFJQSxvQkFBb0IsQ0FBQ0UsU0FBL0QsQ0FOcUUsQ0FRckU7O0FBQ0EsVUFDRUQsS0FBSyxJQUNMQSxLQUFLLENBQUNFLE1BRE4sSUFFQUQsU0FGQSxJQUdBSixzQkFBc0IsQ0FBQ0ssTUFBdkIsS0FBa0MsQ0FIbEMsSUFJQSxDQUFDLEtBQUtDLFdBTFIsRUFNRTtBQUNBLFlBQU1DLGFBQWEsR0FBR0osS0FBSyxDQUFDSyxJQUFOLENBQVcsVUFBQ0MsSUFBRDtBQUFBLGlCQUFVLENBQUNBLElBQUksQ0FBQ0MsT0FBaEI7QUFBQSxTQUFYLENBQXRCLENBREEsQ0FHQTs7QUFDQSxZQUNFSCxhQUFhLElBQ2JBLGFBQWEsQ0FBQ0ksTUFBZCxDQUFxQkMsVUFBckIsQ0FBZ0ND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dC1wb2ludC1vbi1saW5lJztcbmltcG9ydCB7IHBvaW50LCBsaW5lU3RyaW5nIGFzIHRvTGluZVN0cmluZyB9IGZyb20gJ0B0dXJmL2hlbHBlcnMnO1xuaW1wb3J0IGNpcmNsZSBmcm9tICdAdHVyZi9jaXJjbGUnO1xuaW1wb3J0IGRpc3RhbmNlIGZyb20gJ0B0dXJmL2Rpc3RhbmNlJztcbmltcG9ydCB0dXJmQ2VudGVyIGZyb20gJ0B0dXJmL2NlbnRlcic7XG5pbXBvcnQge1xuICByZWN1cnNpdmVseVRyYXZlcnNlTmVzdGVkQXJyYXlzLFxuICBuZWFyZXN0UG9pbnRPblByb2plY3RlZExpbmUsXG4gIGdldFBpY2tlZEVkaXRIYW5kbGVzLFxuICBnZXRQaWNrZWRFZGl0SGFuZGxlLFxuICBOZWFyZXN0UG9pbnRUeXBlLFxufSBmcm9tICcuLi91dGlscyc7XG5pbXBvcnQgeyBMaW5lU3RyaW5nLCBQb2ludCwgRmVhdHVyZUNvbGxlY3Rpb24sIEZlYXR1cmVPZiB9IGZyb20gJy4uL2dlb2pzb24tdHlwZXMnO1xuaW1wb3J0IHtcbiAgTW9kZVByb3BzLFxuICBQb2ludGVyTW92ZUV2ZW50LFxuICBTdGFydERyYWdnaW5nRXZlbnQsXG4gIFN0b3BEcmFnZ2luZ0V2ZW50LFxuICBEcmFnZ2luZ0V2ZW50LFxuICBWaWV3cG9ydCxcbiAgRWRpdEhhbmRsZUZlYXR1cmUsXG4gIEd1aWRlRmVhdHVyZUNvbGxlY3Rpb24sXG59IGZyb20gJy4uL3R5cGVzJztcbmltcG9ydCB7IEdlb0pzb25FZGl0TW9kZSB9IGZyb20gJy4vZ2VvanNvbi1lZGl0LW1vZGUnO1xuaW1wb3J0IHsgSW1tdXRhYmxlRmVhdHVyZUNvbGxlY3Rpb24gfSBmcm9tICcuL2ltbXV0YWJsZS1mZWF0dXJlLWNvbGxlY3Rpb24nO1xuXG5leHBvcnQgY2xhc3MgUmVzaXplQ2lyY2xlTW9kZSBleHRlbmRzIEdlb0pzb25FZGl0TW9kZSB7XG4gIF9zZWxlY3RlZEVkaXRIYW5kbGU6IEVkaXRIYW5kbGVGZWF0dXJlIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgX2lzUmVzaXppbmcgPSBmYWxzZTtcblxuICBnZXRHdWlkZXMocHJvcHM6IE1vZGVQcm9wczxGZWF0dXJlQ29sbGVjdGlvbj4pOiBHdWlkZUZlYXR1cmVDb2xsZWN0aW9uIHtcbiAgICBjb25zdCBoYW5kbGVzID0gW107XG4gICAgY29uc3Qgc2VsZWN0ZWRGZWF0dXJlSW5kZXhlcyA9IHByb3BzLnNlbGVjdGVkSW5kZXhlcztcblxuICAgIGNvbnN0IHsgbGFzdFBvaW50ZXJNb3ZlRXZlbnQgfSA9IHByb3BzO1xuICAgIGNvbnN0IHBpY2tzID0gbGFzdFBvaW50ZXJNb3ZlRXZlbnQgJiYgbGFzdFBvaW50ZXJNb3ZlRXZlbnQucGlja3M7XG4gICAgY29uc3QgbWFwQ29vcmRzID0gbGFzdFBvaW50ZXJNb3ZlRXZlbnQgJiYgbGFzdFBvaW50ZXJNb3ZlRXZlbnQubWFwQ29vcmRzO1xuXG4gICAgLy8gaW50ZXJtZWRpYXRlIGVkaXQgaGFuZGxlXG4gICAgaWYgKFxuICAgICAgcGlja3MgJiZcbiAgICAgIHBpY2tzLmxlbmd0aCAmJlxuICAgICAgbWFwQ29vcmRzICYmXG4gICAgICBzZWxlY3RlZEZlYXR1cmVJbmRleGVzLmxlbmd0aCA9PT0gMSAmJlxuICAgICAgIXRoaXMuX2lzUmVzaXppbmdcbiAgICApIHtcbiAgICAgIGNvbnN0IGZlYXR1cmVBc1BpY2sgPSBwaWNrcy5maW5kKChwaWNrKSA9PiAhcGljay5pc0d1aWRlKTtcblxuICAgICAgLy8gaXMgdGhlIGZlYXR1cmUgaW4gdGhlIHBpY2sgc2VsZWN0ZWRcbiAgICAgIGlmIChcbiAgICAgICAgZmVhdHVyZUFzUGljayAmJlxuICAgICAgICBmZWF0dXJlQXNQaWNrLm9iamVjdC5wcm9wZXJ0aWVzLnNoYXBlICYmXG4gICAgICAgIGZlYXR1cmVBc1BpY2sub2JqZWN0LnByb3BlcnRpZXMuc2hhcGUuaW5jbHVkZXMoJ0NpcmNsZScpICYmXG4gICAgICAgIHByb3BzLnNlbGVjdGVkSW5kZXhlcy5pbmNsdWRlcyhmZWF0dXJlQXNQaWNrLmluZGV4KVxuICAgICAgKSB7XG4gICAgICAgIGxldCBpbnRlcm1lZGlhdGVQb2ludDogTmVhcmVzdFBvaW50VHlwZSB8IG51bGwgfCB1bmRlZmluZWQgPSBudWxsO1xuICAgICAgICBsZXQgcG9zaXRpb25JbmRleFByZWZpeCA9IFtdO1xuICAgICAgICBjb25zdCByZWZlcmVuY2VQb2ludCA9IHBvaW50KG1hcENvb3Jkcyk7XG4gICAgICAgIC8vIHByb2Nlc3MgYWxsIGxpbmVzIG9mIHRoZSAoc2luZ2xlKSBmZWF0dXJlXG4gICAgICAgIHJlY3Vyc2l2ZWx5VHJhdmVyc2VOZXN0ZWRBcnJheXMoXG4gICAgICAgICAgZmVhdHVyZUFzUGljay5vYmplY3QuZ2VvbWV0cnkuY29vcmRpbmF0ZXMsXG4gICAgICAgICAgW10sXG4gICAgICAgICAgKGxpbmVTdHJpbmcsIHByZWZpeCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgbGluZVN0cmluZ0ZlYXR1cmUgPSB0b0xpbmVTdHJpbmcobGluZVN0cmluZyk7XG4gICAgICAgICAgICBjb25zdCBjYW5kaWRhdGVJbnRlcm1lZGlhdGVQb2ludCA9IHRoaXMuZ2V0TmVhcmVzdFBvaW50KFxuICAgICAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICAgIGxpbmVTdHJpbmdGZWF0dXJlLFxuICAgICAgICAgICAgICByZWZlcmVuY2VQb2ludCxcbiAgICAgICAgICAgICAgcHJvcHMubW9kZUNvbmZpZyAmJiBwcm9wcy5tb2RlQ29uZmlnLnZpZXdwb3J0XG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAhaW50ZXJtZWRpYXRlUG9pbnQgfHxcbiAgICAgICAgICAgICAgY2FuZGlkYXRlSW50ZXJtZWRpYXRlUG9pbnQucHJvcGVydGllcy5kaXN0IDwgaW50ZXJtZWRpYXRlUG9pbnQucHJvcGVydGllcy5kaXN0XG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgaW50ZXJtZWRpYXRlUG9pbnQgPSBjYW5kaWRhdGVJbnRlcm1lZGlhdGVQb2ludDtcbiAgICAgICAgICAgICAgcG9zaXRpb25JbmRleFByZWZpeCA9IHByZWZpeDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICk7XG4gICAgICAgIC8vIHRhY2sgb24gdGhlIGxvbmUgaW50ZXJtZWRpYXRlIHBvaW50IHRvIHRoZSBzZXQgb2YgaGFuZGxlc1xuICAgICAgICBpZiAoaW50ZXJtZWRpYXRlUG9pbnQpIHtcbiAgICAgICAgICBjb25zdCB7XG4gICAgICAgICAgICBnZW9tZXRyeTogeyBjb29yZGluYXRlczogcG9zaXRpb24gfSxcbiAgICAgICAgICAgIHByb3BlcnRpZXM6IHsgaW5kZXggfSxcbiAgICAgICAgICB9ID0gaW50ZXJtZWRpYXRlUG9pbnQ7XG4gICAgICAgICAgaGFuZGxlcy5wdXNoKHtcbiAgICAgICAgICAgIHR5cGU6ICdGZWF0dXJlJyxcbiAgICAgICAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgICAgICAgZ3VpZGVUeXBlOiAnZWRpdEhhbmRsZScsXG4gICAgICAgICAgICAgIGVkaXRIYW5kbGVUeXBlOiAnaW50ZXJtZWRpYXRlJyxcbiAgICAgICAgICAgICAgZmVhdHVyZUluZGV4OiBmZWF0dXJlQXNQaWNrLmluZGV4LFxuICAgICAgICAgICAgICBwb3NpdGlvbkluZGV4ZXM6IFsuLi5wb3NpdGlvbkluZGV4UHJlZml4LCBpbmRleCArIDFdLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGdlb21ldHJ5OiB7XG4gICAgICAgICAgICAgIHR5cGU6ICdQb2ludCcsXG4gICAgICAgICAgICAgIGNvb3JkaW5hdGVzOiBwb3NpdGlvbixcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgdHlwZTogJ0ZlYXR1cmVDb2xsZWN0aW9uJyxcbiAgICAgIGZlYXR1cmVzOiBoYW5kbGVzLFxuICAgIH07XG4gIH1cblxuICAvLyB0dXJmLmpzIGRvZXMgbm90IHN1cHBvcnQgZWxldmF0aW9uIGZvciBuZWFyZXN0UG9pbnRPbkxpbmVcbiAgZ2V0TmVhcmVzdFBvaW50KFxuICAgIGxpbmU6IEZlYXR1cmVPZjxMaW5lU3RyaW5nPixcbiAgICBpblBvaW50OiBGZWF0dXJlT2Y8UG9pbnQ+LFxuICAgIHZpZXdwb3J0OiBWaWV3cG9ydCB8IG51bGwgfCB1bmRlZmluZWRcbiAgKTogTmVhcmVzdFBvaW50VHlwZSB7XG4gICAgY29uc3QgeyBjb29yZGluYXRlcyB9ID0gbGluZS5nZW9tZXRyeTtcbiAgICBpZiAoY29vcmRpbmF0ZXMuc29tZSgoY29vcmQpID0+IGNvb3JkLmxlbmd0aCA+IDIpKSB7XG4gICAgICBpZiAodmlld3BvcnQpIHtcbiAgICAgICAgLy8gVGhpcyBsaW5lIGhhcyBlbGV2YXRpb24sIHdlIG5lZWQgdG8gdXNlIGFsdGVybmF0aXZlIGFsZ29yaXRobVxuICAgICAgICByZXR1cm4gbmVhcmVzdFBvaW50T25Qcm9qZWN0ZWRMaW5lKGxpbmUsIGluUG9pbnQsIHZpZXdwb3J0KTtcbiAgICAgIH1cbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlLG5vLXVuZGVmXG4gICAgICBjb25zb2xlLmxvZyhcbiAgICAgICAgJ0VkaXRpbmcgM0QgcG9pbnQgYnV0IG1vZGVDb25maWcudmlld3BvcnQgbm90IHByb3ZpZGVkLiBGYWxsaW5nIGJhY2sgdG8gMkQgbG9naWMuJ1xuICAgICAgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbmVhcmVzdFBvaW50T25MaW5lKGxpbmUsIGluUG9pbnQpO1xuICB9XG5cbiAgaGFuZGxlRHJhZ2dpbmcoZXZlbnQ6IERyYWdnaW5nRXZlbnQsIHByb3BzOiBNb2RlUHJvcHM8RmVhdHVyZUNvbGxlY3Rpb24+KTogdm9pZCB7XG4gICAgY29uc3QgZWRpdEhhbmRsZSA9IGdldFBpY2tlZEVkaXRIYW5kbGUoZXZlbnQucG9pbnRlckRvd25QaWNrcyk7XG5cbiAgICBpZiAoZWRpdEhhbmRsZSkge1xuICAgICAgLy8gQ2FuY2VsIG1hcCBwYW5uaW5nIGlmIHBvaW50ZXIgd2VudCBkb3duIG9uIGFuIGVkaXQgaGFuZGxlXG4gICAgICBldmVudC5jYW5jZWxQYW4oKTtcblxuICAgICAgY29uc3QgZWRpdEhhbmRsZVByb3BlcnRpZXMgPSBlZGl0SGFuZGxlLnByb3BlcnRpZXM7XG5cbiAgICAgIGNvbnN0IGZlYXR1cmUgPSB0aGlzLmdldFNlbGVjdGVkRmVhdHVyZShwcm9wcyk7XG4gICAgICBjb25zdCBjZW50ZXIgPSB0dXJmQ2VudGVyKGZlYXR1cmUpLmdlb21ldHJ5LmNvb3JkaW5hdGVzO1xuICAgICAgY29uc3QgbnVtYmVyT2ZTdGVwcyA9IE9iamVjdC5lbnRyaWVzKGZlYXR1cmUuZ2VvbWV0cnkuY29vcmRpbmF0ZXNbMF0pLmxlbmd0aCAtIDE7XG4gICAgICBjb25zdCByYWRpdXMgPSBNYXRoLm1heChkaXN0YW5jZShjZW50ZXIsIGV2ZW50Lm1hcENvb3JkcyksIDAuMDAxKTtcblxuICAgICAgY29uc3QgeyBzdGVwcyA9IG51bWJlck9mU3RlcHMgfSA9IHt9O1xuICAgICAgY29uc3Qgb3B0aW9ucyA9IHsgc3RlcHMgfTtcbiAgICAgIGNvbnN0IHVwZGF0ZWRGZWF0dXJlID0gY2lyY2xlKGNlbnRlciwgcmFkaXVzLCBvcHRpb25zKTtcbiAgICAgIGNvbnN0IGdlb21ldHJ5ID0gdXBkYXRlZEZlYXR1cmUuZ2VvbWV0cnk7XG5cbiAgICAgIGNvbnN0IHVwZGF0ZWREYXRhID0gbmV3IEltbXV0YWJsZUZlYXR1cmVDb2xsZWN0aW9uKHByb3BzLmRhdGEpXG4gICAgICAgIC5yZXBsYWNlR2VvbWV0cnkoZWRpdEhhbmRsZVByb3BlcnRpZXMuZmVhdHVyZUluZGV4LCBnZW9tZXRyeSlcbiAgICAgICAgLmdldE9iamVjdCgpO1xuXG4gICAgICBwcm9wcy5vbkVkaXQoe1xuICAgICAgICB1cGRhdGVkRGF0YSxcbiAgICAgICAgZWRpdFR5cGU6ICd1bmlvbkdlb21ldHJ5JyxcbiAgICAgICAgZWRpdENvbnRleHQ6IHtcbiAgICAgICAgICBmZWF0dXJlSW5kZXhlczogW2VkaXRIYW5kbGVQcm9wZXJ0aWVzLmZlYXR1cmVJbmRleF0sXG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBoYW5kbGVQb2ludGVyTW92ZShldmVudDogUG9pbnRlck1vdmVFdmVudCwgcHJvcHM6IE1vZGVQcm9wczxGZWF0dXJlQ29sbGVjdGlvbj4pOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuX2lzUmVzaXppbmcpIHtcbiAgICAgIGNvbnN0IHNlbGVjdGVkRWRpdEhhbmRsZSA9IGdldFBpY2tlZEVkaXRIYW5kbGUoZXZlbnQucGlja3MpO1xuICAgICAgdGhpcy5fc2VsZWN0ZWRFZGl0SGFuZGxlID1cbiAgICAgICAgc2VsZWN0ZWRFZGl0SGFuZGxlICYmIHNlbGVjdGVkRWRpdEhhbmRsZS5wcm9wZXJ0aWVzLmVkaXRIYW5kbGVUeXBlID09PSAnaW50ZXJtZWRpYXRlJ1xuICAgICAgICAgID8gc2VsZWN0ZWRFZGl0SGFuZGxlXG4gICAgICAgICAgOiBudWxsO1xuICAgIH1cblxuICAgIGNvbnN0IGN1cnNvciA9IHRoaXMuZ2V0Q3Vyc29yKGV2ZW50KTtcbiAgICBwcm9wcy5vblVwZGF0ZUN1cnNvcihjdXJzb3IpO1xuICB9XG5cbiAgaGFuZGxlU3RhcnREcmFnZ2luZyhldmVudDogU3RhcnREcmFnZ2luZ0V2ZW50LCBwcm9wczogTW9kZVByb3BzPEZlYXR1cmVDb2xsZWN0aW9uPikge1xuICAgIGlmICh0aGlzLl9zZWxlY3RlZEVkaXRIYW5kbGUpIHtcbiAgICAgIHRoaXMuX2lzUmVzaXppbmcgPSB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIGhhbmRsZVN0b3BEcmFnZ2luZyhldmVudDogU3RvcERyYWdnaW5nRXZlbnQsIHByb3BzOiBNb2RlUHJvcHM8RmVhdHVyZUNvbGxlY3Rpb24+KSB7XG4gICAgaWYgKHRoaXMuX2lzUmVzaXppbmcpIHtcbiAgICAgIHRoaXMuX3NlbGVjdGVkRWRpdEhhbmRsZSA9IG51bGw7XG4gICAgICB0aGlzLl9pc1Jlc2l6aW5nID0gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgZ2V0Q3Vyc29yKGV2ZW50OiBQb2ludGVyTW92ZUV2ZW50KTogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZCB7XG4gICAgY29uc3QgcGlja3MgPSAoZXZlbnQgJiYgZXZlbnQucGlja3MpIHx8IFtdO1xuXG4gICAgY29uc3QgaGFuZGxlc1BpY2tlZCA9IGdldFBpY2tlZEVkaXRIYW5kbGVzKHBpY2tzKTtcbiAgICBpZiAoaGFuZGxlc1BpY2tlZC5sZW5ndGgpIHtcbiAgICAgIHJldHVybiAnY2VsbCc7XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG59XG4iXX0=","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.RotateMode = void 0;\n\nvar _bbox = _interopRequireDefault(require(\"@turf/bbox\"));\n\nvar _centroid = _interopRequireDefault(require(\"@turf/centroid\"));\n\nvar _bearing = _interopRequireDefault(require(\"@turf/bearing\"));\n\nvar _bboxPolygon = _interopRequireDefault(require(\"@turf/bbox-polygon\"));\n\nvar _distance = _interopRequireDefault(require(\"@turf/distance\"));\n\nvar _meta = require(\"@turf/meta\");\n\nvar _invariant = require(\"@turf/invariant\");\n\nvar _helpers = require(\"@turf/helpers\");\n\nvar _transformRotate = _interopRequireDefault(require(\"@turf/transform-rotate\"));\n\nvar _polygonToLine = _interopRequireDefault(require(\"@turf/polygon-to-line\"));\n\nvar _utils = require(\"../utils\");\n\nvar _geojsonEditMode = require(\"./geojson-edit-mode\");\n\nvar _immutableFeatureCollection = require(\"./immutable-feature-collection\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar RotateMode = /*#__PURE__*/function (_GeoJsonEditMode) {\n  _inherits(RotateMode, _GeoJsonEditMode);\n\n  var _super = _createSuper(RotateMode);\n\n  function RotateMode() {\n    var _this;\n\n    _classCallCheck(this, RotateMode);\n\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    _this = _super.call.apply(_super, [this].concat(args));\n\n    _defineProperty(_assertThisInitialized(_this), \"_selectedEditHandle\", void 0);\n\n    _defineProperty(_assertThisInitialized(_this), \"_geometryBeingRotated\", void 0);\n\n    _defineProperty(_assertThisInitialized(_this), \"_isRotating\", false);\n\n    _defineProperty(_assertThisInitialized(_this), \"_isSinglePointGeometrySelected\", function (geometry) {\n      var _ref = geometry || {},\n          features = _ref.features;\n\n      if (Array.isArray(features) && features.length === 1) {\n        // @ts-ignore\n        var _getGeom = (0, _invariant.getGeom)(features[0]),\n            type = _getGeom.type;\n\n        return type === 'Point';\n      }\n\n      return false;\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"getIsRotating\", function () {\n      return _this._isRotating;\n    });\n\n    return _this;\n  }\n\n  _createClass(RotateMode, [{\n    key: \"getGuides\",\n    value: function getGuides(props) {\n      var selectedGeometry = this._geometryBeingRotated || this.getSelectedFeaturesAsFeatureCollection(props);\n\n      if (this._isSinglePointGeometrySelected(selectedGeometry)) {\n        return {\n          type: 'FeatureCollection',\n          features: []\n        };\n      }\n\n      if (this._isRotating) {\n        // Display rotate pivot\n        return (0, _helpers.featureCollection)([(0, _centroid[\"default\"])(selectedGeometry)]);\n      }\n\n      var boundingBox = (0, _bboxPolygon[\"default\"])((0, _bbox[\"default\"])(selectedGeometry));\n      var previousCoord = null;\n      var topEdgeMidpointCoords = null;\n      var longestEdgeLength = 0;\n      (0, _meta.coordEach)(boundingBox, function (coord) {\n        if (previousCoord) {\n          // @ts-ignore\n          var edgeMidpoint = (0, _geojsonEditMode.getIntermediatePosition)(coord, previousCoord);\n\n          if (!topEdgeMidpointCoords || edgeMidpoint[1] > topEdgeMidpointCoords[1]) {\n            // Get the top edge midpoint of the enveloping box\n            topEdgeMidpointCoords = edgeMidpoint;\n          } // Get the length of the longest edge of the enveloping box\n\n\n          var edgeDistance = (0, _distance[\"default\"])(coord, previousCoord);\n          longestEdgeLength = Math.max(longestEdgeLength, edgeDistance);\n        }\n\n        previousCoord = coord;\n      }); // Scale the length of the line between the rotate handler and the enveloping box\n      // relative to the length of the longest edge of the enveloping box\n\n      var rotateHandleCoords = topEdgeMidpointCoords && [topEdgeMidpointCoords[0], topEdgeMidpointCoords[1] + longestEdgeLength / 1000];\n      var lineFromEnvelopeToRotateHandle = (0, _helpers.lineString)([topEdgeMidpointCoords, rotateHandleCoords]);\n      var rotateHandle = (0, _helpers.point)(rotateHandleCoords, {\n        guideType: 'editHandle',\n        editHandleType: 'rotate'\n      }); // @ts-ignore\n\n      return (0, _helpers.featureCollection)([// @ts-ignore\n      (0, _polygonToLine[\"default\"])(boundingBox), // @ts-ignore\n      rotateHandle, // @ts-ignore\n      lineFromEnvelopeToRotateHandle]);\n    }\n  }, {\n    key: \"handleDragging\",\n    value: function handleDragging(event, props) {\n      if (!this._isRotating) {\n        return;\n      }\n\n      var rotateAction = this.getRotateAction(event.pointerDownMapCoords, event.mapCoords, 'rotating', props);\n\n      if (rotateAction) {\n        props.onEdit(rotateAction);\n      }\n\n      event.cancelPan();\n    }\n  }, {\n    key: \"handlePointerMove\",\n    value: function handlePointerMove(event, props) {\n      if (!this._isRotating) {\n        var selectedEditHandle = (0, _utils.getPickedEditHandle)(event.picks);\n        this._selectedEditHandle = selectedEditHandle && selectedEditHandle.properties.editHandleType === 'rotate' ? selectedEditHandle : null;\n      }\n\n      this.updateCursor(props);\n    }\n  }, {\n    key: \"handleStartDragging\",\n    value: function handleStartDragging(event, props) {\n      if (this._selectedEditHandle) {\n        this._isRotating = true;\n        this._geometryBeingRotated = this.getSelectedFeaturesAsFeatureCollection(props);\n      }\n    }\n  }, {\n    key: \"handleStopDragging\",\n    value: function handleStopDragging(event, props) {\n      if (this._isRotating) {\n        // Rotate the geometry\n        var rotateAction = this.getRotateAction(event.pointerDownMapCoords, event.mapCoords, 'rotated', props);\n\n        if (rotateAction) {\n          props.onEdit(rotateAction);\n        }\n\n        this._geometryBeingRotated = null;\n        this._selectedEditHandle = null;\n        this._isRotating = false;\n      }\n    }\n  }, {\n    key: \"updateCursor\",\n    value: function updateCursor(props) {\n      if (this._selectedEditHandle) {\n        // TODO: look at doing SVG cursors to get a better \"rotate\" cursor\n        props.onUpdateCursor('crosshair');\n      } else {\n        props.onUpdateCursor(null);\n      }\n    }\n  }, {\n    key: \"getRotateAction\",\n    value: function getRotateAction(startDragPoint, currentPoint, editType, props) {\n      if (!this._geometryBeingRotated) {\n        return null;\n      }\n\n      var centroid = (0, _centroid[\"default\"])(this._geometryBeingRotated);\n      var angle = getRotationAngle(centroid, startDragPoint, currentPoint); // @ts-ignore\n\n      var rotatedFeatures = (0, _transformRotate[\"default\"])( // @ts-ignore\n      this._geometryBeingRotated, angle, {\n        pivot: centroid\n      });\n      var updatedData = new _immutableFeatureCollection.ImmutableFeatureCollection(props.data);\n      var selectedIndexes = props.selectedIndexes;\n\n      for (var i = 0; i < selectedIndexes.length; i++) {\n        var selectedIndex = selectedIndexes[i];\n        var movedFeature = rotatedFeatures.features[i];\n        updatedData = updatedData.replaceGeometry(selectedIndex, movedFeature.geometry);\n      }\n\n      return {\n        updatedData: updatedData.getObject(),\n        editType: editType,\n        editContext: {\n          featureIndexes: selectedIndexes\n        }\n      };\n    }\n  }]);\n\n  return RotateMode;\n}(_geojsonEditMode.GeoJsonEditMode);\n\nexports.RotateMode = RotateMode;\n\nfunction getRotationAngle(centroid, startDragPoint, currentPoint) {\n  var bearing1 = (0, _bearing[\"default\"])(centroid, startDragPoint);\n  var bearing2 = (0, _bearing[\"default\"])(centroid, currentPoint);\n  return bearing2 - bearing1;\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvcm90YXRlLW1vZGUudHMiXSwibmFtZXMiOlsiUm90YXRlTW9kZSIsImdlb21ldHJ5IiwiZmVhdHVyZXMiLCJBcnJheSIsImlzQXJyYXkiLCJsZW5ndGgiLCJ0eXBlIiwiX2lzUm90YXRpbmciLCJwcm9wcyIsInNlbGVjdGVkR2VvbWV0cnkiLCJfZ2VvbWV0cnlCZWluZ1JvdGF0ZWQiLCJnZXRTZWxlY3RlZEZlYXR1cmVzQXNGZWF0dXJlQ29sbGVjdGlvbiIsIl9pc1NpbmdsZVBvaW50R2VvbWV0cnlTZWxlY3RlZCIsImJvdW5kaW5nQm94IiwicHJldmlvdXNDb29yZCIsInRvcEVkZ2VNaWRwb2ludENvb3JkcyIsImxvbmdlc3RFZGdlTGVuZ3RoIiwiY29vcmQiLCJlZGdlTWlkcG9pbnQiLCJlZGdlRGlzdGFuY2UiLCJNYXRoIiwibWF4Iiwicm90YXRlSGFuZGxlQ29vcmRzIiwibGluZUZyb21FbnZlbG9wZVRvUm90YXRlSGFuZGxlIiwicm90YXRlSGFuZGxlIiwiZ3VpZGVUeXBlIiwiZWRpdEhhbmRsZVR5cGUiLCJldmVudCIsInJvdGF0ZUFjdGlvbiIsImdldFJvdGF0ZUFjdGlvbiIsInBvaW50ZXJEb3duTWFwQ29vcmRzIiwibWFwQ29vcmRzIiwib25FZGl0IiwiY2FuY2VsUGFuIiwic2VsZWN0ZWRFZGl0SGFuZGxlIiwicGlja3MiLCJfc2VsZWN0ZWRFZGl0SGFuZGxlIiwicHJvcGVydGllcyIsInVwZGF0ZUN1cnNvciIsIm9uVXBkYXRlQ3Vyc29yIiwic3RhcnREcmFnUG9pbnQiLCJjdXJyZW50UG9pbnQiLCJlZGl0VHlwZSIsImNlbnRyb2lkIiwiYW5nbGUiLCJnZXRSb3RhdGlvbkFuZ2xlIiwicm90YXRlZEZlYXR1cmVzIiwicGl2b3QiLCJ1cGRhdGVkRGF0YSIsIkltbXV0YWJsZUZlYXR1cmVDb2xsZWN0aW9uIiwiZGF0YSIsInNlbGVjdGVkSW5kZXhlcyIsImkiLCJzZWxlY3RlZEluZGV4IiwibW92ZWRGZWF0dXJlIiwicmVwbGFjZUdlb21ldHJ5IiwiZ2V0T2JqZWN0IiwiZWRpdENvbnRleHQiLCJmZWF0dXJlSW5kZXhlcyIsIkdlb0pzb25FZGl0TW9kZSIsImJlYXJpbmcxIiwiYmVhcmluZzIiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFVQTs7QUFFQTs7QUFDQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQUVhQSxVOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztrRUFHRyxLOztxRkFFbUIsVUFBQ0MsUUFBRCxFQUE2RDtBQUFBLGlCQUN2RUEsUUFBUSxJQUFJLEVBRDJEO0FBQUEsVUFDcEZDLFFBRG9GLFFBQ3BGQSxRQURvRjs7QUFFNUYsVUFBSUMsS0FBSyxDQUFDQyxPQUFOLENBQWNGLFFBQWQsS0FBMkJBLFFBQVEsQ0FBQ0csTUFBVCxLQUFvQixDQUFuRCxFQUFzRDtBQUNwRDtBQURvRCx1QkFFbkMsd0JBQVFILFFBQVEsQ0FBQyxDQUFELENBQWhCLENBRm1DO0FBQUEsWUFFNUNJLElBRjRDLFlBRTVDQSxJQUY0Qzs7QUFHcEQsZUFBT0EsSUFBSSxLQUFLLE9BQWhCO0FBQ0Q7O0FBQ0QsYUFBTyxLQUFQO0FBQ0QsSzs7b0VBRWU7QUFBQSxhQUFNLE1BQUtDLFdBQVg7QUFBQSxLOzs7Ozs7OzhCQUVOQyxLLEVBQTZEO0FBQ3JFLFVBQU1DLGdCQUFnQixHQUNwQixLQUFLQyxxQkFBTCxJQUE4QixLQUFLQyxzQ0FBTCxDQUE0Q0gsS0FBNUMsQ0FEaEM7O0FBR0EsVUFBSSxLQUFLSSw4QkFBTCxDQUFvQ0gsZ0JBQXBDLENBQUosRUFBMkQ7QUFDekQsZUFBTztBQUFFSCxVQUFBQSxJQUFJLEVBQUUsbUJBQVI7QUFBNkJKLFVBQUFBLFFBQVEsRUFBRTtBQUF2QyxTQUFQO0FBQ0Q7O0FBRUQsVUFBSSxLQUFLSyxXQUFULEVBQXNCO0FBQ3BCO0FBQ0EsZUFBTyxnQ0FBa0IsQ0FBQywwQkFBYUUsZ0JBQWIsQ0FBRCxDQUFs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LENBQUMsR0FBRyxDQUFiLEVBQWdCQSxDQUFDLEdBQUdELGVBQWUsQ0FBQzlDLE1BQXBDLEVBQTRDK0MsQ0FBQyxFQUE3QyxFQUFpRDtBQUMvQyxZQUFNQyxhQUFhLEdBQUdGLGVBQWUsQ0FBQ0MsQ0FBRCxDQUFyQztBQUNBLFlBQU1FLFlBQVksR0FBR1IsZUFBZSxDQUFDNUMsUUFBaEIsQ0FBeUJrRCxDQUF6QixDQUFyQjtBQUNBSixRQUFBQSxXQUFXLEdBQUdBLFdBQVcsQ0FBQ08sZUFBWixDQUE0QkYsYUFBNUIsRUFBMkNDLFlBQVksQ0FBQ3JELFFBQXhELENBQWQ7QUFDRDs7QUFFRCxhQUFPO0FBQ0wrQyxRQUFBQSxXQUFXLEVBQUVBLFdBQVcsQ0FBQ1EsU0FBWixFQURSO0FBRUxkLFFBQUFBLFFBQVEsRUFBUkEsUUFGSztBQUdMZSxRQUFBQSxXQUFXLEVBQUU7QUFDWEMsVUFBQUEsY0FBYyxFQUFFUDtBQURMO0FBSFIsT0FBUDtBQU9EOzs7O0VBbEw2QlEsZ0M7Ozs7QUFxTGhDLFNBQVNkLGdCQUFULENBQTBCRixRQUExQixFQUE4Q0gsY0FBOUMsRUFBd0VDLFlBQXhFLEVBQWdHO0FBQzlGLE1BQU1tQixRQUFRLEdBQUcseUJBQVlqQixRQUFaLEVBQXNCSCxjQUF0QixDQUFqQjtBQUNBLE1BQU1xQixRQUFRLEdBQUcseUJBQVlsQixRQUFaLEVBQXNCRixZQUF0QixDQUFqQjtBQUNBLFNBQU9vQixRQUFRLEdBQUdELFFBQWxCO0FBQ0QiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBwcmV0dGllci9wcmV0dGllciAqL1xuaW1wb3J0IGJib3ggZnJvbSAnQHR1cmYvYmJveCc7XG5pbXBvcnQgdHVyZkNlbnRyb2lkIGZyb20gJ0B0dXJmL2NlbnRyb2lkJztcbmltcG9ydCB0dXJmQmVhcmluZyBmcm9tICdAdHVyZi9iZWFyaW5nJztcbmltcG9ydCBiYm94UG9seWdvbiBmcm9tICdAdHVyZi9iYm94LXBvbHlnb24nO1xuaW1wb3J0IHR1cmZEaXN0YW5jZSBmcm9tICdAdHVyZi9kaXN0YW5jZSc7XG5pbXBvcnQgeyBjb29yZEVhY2ggfSBmcm9tICdAdHVyZi9tZXRhJztcbmltcG9ydCB7IGdldEdlb20gfSBmcm9tICdAdHVyZi9pbnZhcmlhbnQnO1xuaW1wb3J0IHsgcG9pbnQsIGZlYXR1cmVDb2xsZWN0aW9uLCBsaW5lU3RyaW5nIH0gZnJvbSAnQHR1cmYvaGVscGVycyc7XG5pbXBvcnQgdHVyZlRyYW5zZm9ybVJvdGF0ZSBmcm9tICdAdHVyZi90cmFuc2Zvcm0tcm90YXRlJztcbmltcG9ydCBwb2x5Z29uVG9MaW5lIGZyb20gJ0B0dXJmL3BvbHlnb24tdG8tbGluZSc7XG5pbXBvcnQge1xuICBQb2ludGVyTW92ZUV2ZW50LFxuICBTdGFydERyYWdnaW5nRXZlbnQsXG4gIFN0b3BEcmFnZ2luZ0V2ZW50LFxuICBEcmFnZ2luZ0V2ZW50LFxuICBNb2RlUHJvcHMsXG4gIEVkaXRIYW5kbGVGZWF0dXJlLFxuICBHdWlkZUZlYXR1cmVDb2xsZWN0aW9uLFxufSBmcm9tICcuLi90eXBlcyc7XG5pbXBvcnQgeyBnZXRQaWNrZWRFZGl0SGFuZGxlIH0gZnJvbSAnLi4vdXRpbHMnO1xuaW1wb3J0IHsgRmVhdHVyZUNvbGxlY3Rpb24sIFBvc2l0aW9uIH0gZnJvbSAnLi4vZ2VvanNvbi10eXBlcyc7XG5pbXBvcnQgeyBHZW9Kc29uRWRpdE1vZGUsIEdlb0pzb25FZGl0QWN0aW9uLCBnZXRJbnRlcm1lZGlhdGVQb3NpdGlvbiB9IGZyb20gJy4vZ2VvanNvbi1lZGl0LW1vZGUnO1xuaW1wb3J0IHsgSW1tdXRhYmxlRmVhdHVyZUNvbGxlY3Rpb24gfSBmcm9tICcuL2ltbXV0YWJsZS1mZWF0dXJlLWNvbGxlY3Rpb24nO1xuXG5leHBvcnQgY2xhc3MgUm90YXRlTW9kZSBleHRlbmRzIEdlb0pzb25FZGl0TW9kZSB7XG4gIF9zZWxlY3RlZEVkaXRIYW5kbGU6IEVkaXRIYW5kbGVGZWF0dXJlIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgX2dlb21ldHJ5QmVpbmdSb3RhdGVkOiBGZWF0dXJlQ29sbGVjdGlvbiB8IG51bGwgfCB1bmRlZmluZWQ7XG4gIF9pc1JvdGF0aW5nID0gZmFsc2U7XG5cbiAgX2lzU2luZ2xlUG9pbnRHZW9tZXRyeVNlbGVjdGVkID0gKGdlb21ldHJ5OiBGZWF0dXJlQ29sbGVjdGlvbiB8IG51bGwgfCB1bmRlZmluZWQpOiBib29sZWFuID0+IHtcbiAgICBjb25zdCB7IGZlYXR1cmVzIH0gPSBnZW9tZXRyeSB8fCB7fTtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShmZWF0dXJlcykgJiYgZmVhdHVyZXMubGVuZ3RoID09PSAxKSB7XG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICBjb25zdCB7IHR5cGUgfSA9IGdldEdlb20oZmVhdHVyZXNbMF0pO1xuICAgICAgcmV0dXJuIHR5cGUgPT09ICdQb2ludCc7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfTtcblxuICBnZXRJc1JvdGF0aW5nID0gKCkgPT4gdGhpcy5faXNSb3RhdGluZztcblxuICBnZXRHdWlkZXMocHJvcHM6IE1vZGVQcm9wczxGZWF0dXJlQ29sbGVjdGlvbj4pOiBHdWlkZUZlYXR1cmVDb2xsZWN0aW9uIHtcbiAgICBjb25zdCBzZWxlY3RlZEdlb21ldHJ5ID1cbiAgICAgIHRoaXMuX2dlb21ldHJ5QmVpbmdSb3RhdGVkIHx8IHRoaXMuZ2V0U2VsZWN0ZWRGZWF0dXJlc0FzRmVhdHVyZUNvbGxlY3Rpb24ocHJvcHMpO1xuXG4gICAgaWYgKHRoaXMuX2lzU2luZ2xlUG9pbnRHZW9tZXRyeVNlbGVjdGVkKHNlbGVjdGVkR2VvbWV0cnkpKSB7XG4gICAgICByZXR1cm4geyB0eXBlOiAnRmVhdHVyZUNvbGxlY3Rpb24nLCBmZWF0dXJlczogW10gfTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5faXNSb3RhdGluZykge1xuICAgICAgLy8gRGlzcGxheSByb3RhdGUgcGl2b3RcbiAgICAgIHJldHVybiBmZWF0dXJlQ29sbGVjdGlvbihbdHVyZkNlbnRyb2lkKHNlbGVjdGVkR2VvbWV0cnkpXSkgYXMgR3VpZGVGZWF0dXJlQ29sbGVjdGlvbjtcbiAgICB9XG5cbiAgICBjb25zdCBib3VuZGluZ0JveCA9IGJib3hQb2x5Z29uKGJib3goc2VsZWN0ZWRHZW9tZXRyeSkpO1xuXG4gICAgbGV0IHByZXZpb3VzQ29vcmQgPSBudWxsO1xuICAgIGxldCB0b3BFZGdlTWlkcG9pbnRDb29yZHMgPSBudWxsO1xuICAgIGxldCBsb25nZXN0RWRnZUxlbmd0aCA9IDA7XG5cbiAgICBjb29yZEVhY2goYm91bmRpbmdCb3gsIChjb29yZCkgPT4ge1xuICAgICAgaWYgKHByZXZpb3VzQ29vcmQpIHtcbiAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICBjb25zdCBlZGdlTWlkcG9pbnQgPSBnZXRJbnRlcm1lZGlhdGVQb3NpdGlvbihjb29yZCwgcHJldmlvdXNDb29yZCk7XG4gICAgICAgIGlmICghdG9wRWRnZU1pZHBvaW50Q29vcmRzIHx8IGVkZ2VNaWRwb2ludFsxXSA+IHRvcEVkZ2VNaWRwb2ludENvb3Jkc1sxXSkge1xuICAgICAgICAgIC8vIEdldCB0aGUgdG9wIGVkZ2UgbWlkcG9pbnQgb2YgdGhlIGVudmVsb3BpbmcgYm94XG4gICAgICAgICAgdG9wRWRnZU1pZHBvaW50Q29vcmRzID0gZWRnZU1pZHBvaW50O1xuICAgICAgICB9XG4gICAgICAgIC8vIEdldCB0aGUgbGVuZ3RoIG9mIHRoZSBsb25nZXN0IGVkZ2Ugb2YgdGhlIGVudmVsb3BpbmcgYm94XG4gICAgICAgIGNvbnN0IGVkZ2VEaXN0YW5jZSA9IHR1cmZEaXN0YW5jZShjb29yZCwgcHJldmlvdXNDb29yZCk7XG4gICAgICAgIGxvbmdlc3RFZGdlTGVuZ3RoID0gTWF0aC5tYXgobG9uZ2VzdEVkZ2VMZW5ndGgsIGVkZ2VEaXN0YW5jZSk7XG4gICAgICB9XG4gICAgICBwcmV2aW91c0Nvb3JkID0gY29vcmQ7XG4gICAgfSk7XG5cbiAgICAvLyBTY2FsZSB0aGUgbGVuZ3RoIG9mIHRoZSBsaW5lIGJldHdlZW4gdGhlIHJvdGF0ZSBoYW5kbGVyIGFuZCB0aGUgZW52ZWxvcGluZyBib3hcbiAgICAvLyByZWxhdGl2ZSB0byB0aGUgbGVuZ3RoIG9mIHRoZSBsb25nZXN0IGVkZ2Ugb2YgdGhlIGVudmVsb3BpbmcgYm94XG4gICAgY29uc3Qgcm90YXRlSGFuZGxlQ29vcmRzID0gdG9wRWRnZU1pZHBvaW50Q29vcmRzICYmIFtcbiAgICAgIHRvcEVkZ2VNaWRwb2ludENvb3Jkc1swXSxcbiAgICAgIHRvcEVkZ2VNaWRwb2ludENvb3Jkc1sxXSArIGxvbmdlc3RFZGdlTGVuZ3RoIC8gMTAwMCxcbiAgICBdO1xuXG4gICAgY29uc3QgbGluZUZyb21FbnZlbG9wZVRvUm90YXRlSGFuZGxlID0gbGluZVN0cmluZyhbdG9wRWRnZU1pZHBvaW50Q29vcmRzLCByb3RhdGVIYW5kbGVDb29yZHNdKTtcbiAgICBjb25zdCByb3RhdGVIYW5kbGUgPSBwb2ludChyb3RhdGVIYW5kbGVDb29yZHMsIHtcbiAgICAgIGd1aWRlVHlwZTogJ2VkaXRIYW5kbGUnLFxuICAgICAgZWRpdEhhbmRsZVR5cGU6ICdyb3RhdGUnLFxuICAgIH0pO1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICByZXR1cm4gZmVhdHVyZUNvbGxlY3Rpb24oW1xuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgcG9seWdvblRvTGluZShib3VuZGluZ0JveCksXG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICByb3RhdGVIYW5kbGUsXG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICBsaW5lRnJvbUVudmVsb3BlVG9Sb3RhdGVIYW5kbGUsXG4gICAgXSk7XG4gIH1cblxuICBoYW5kbGVEcmFnZ2luZyhldmVudDogRHJhZ2dpbmdFdmVudCwgcHJvcHM6IE1vZGVQcm9wczxGZWF0dXJlQ29sbGVjdGlvbj4pIHtcbiAgICBpZiAoIXRoaXMuX2lzUm90YXRpbmcpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCByb3RhdGVBY3Rpb24gPSB0aGlzLmdldFJvdGF0ZUFjdGlvbihcbiAgICAgIGV2ZW50LnBvaW50ZXJEb3duTWFwQ29vcmRzLFxuICAgICAgZXZlbnQubWFwQ29vcmRzLFxuICAgICAgJ3JvdGF0aW5nJyxcbiAgICAgIHByb3BzXG4gICAgKTtcbiAgICBpZiAocm90YXRlQWN0aW9uKSB7XG4gICAgICBwcm9wcy5vbkVkaXQocm90YXRlQWN0aW9uKTtcbiAgICB9XG5cbiAgICBldmVudC5jYW5jZWxQYW4oKTtcbiAgfVxuXG4gIGhhbmRsZVBvaW50ZXJNb3ZlKGV2ZW50OiBQb2ludGVyTW92ZUV2ZW50LCBwcm9wczogTW9kZVByb3BzPEZlYXR1cmVDb2xsZWN0aW9uPikge1xuICAgIGlmICghdGhpcy5faXNSb3RhdGluZykge1xuICAgICAgY29uc3Qgc2VsZWN0ZWRFZGl0SGFuZGxlID0gZ2V0UGlja2VkRWRpdEhhbmRsZShldmVudC5waWNrcyk7XG4gICAgICB0aGlzLl9zZWxlY3RlZEVkaXRIYW5kbGUgPVxuICAgICAgICBzZWxlY3RlZEVkaXRIYW5kbGUgJiYgc2VsZWN0ZWRFZGl0SGFuZGxlLnByb3BlcnRpZXMuZWRpdEhhbmRsZVR5cGUgPT09ICdyb3RhdGUnXG4gICAgICAgICAgPyBzZWxlY3RlZEVkaXRIYW5kbGVcbiAgICAgICAgICA6IG51bGw7XG4gICAgfVxuXG4gICAgdGhpcy51cGRhdGVDdXJzb3IocHJvcHMpO1xuICB9XG5cbiAgaGFuZGxlU3RhcnREcmFnZ2luZyhldmVudDogU3RhcnREcmFnZ2luZ0V2ZW50LCBwcm9wczogTW9kZVByb3BzPEZlYXR1cmVDb2xsZWN0aW9uPikge1xuICAgIGlmICh0aGlzLl9zZWxlY3RlZEVkaXRIYW5kbGUpIHtcbiAgICAgIHRoaXMuX2lzUm90YXRpbmcgPSB0cnVlO1xuICAgICAgdGhpcy5fZ2VvbWV0cnlCZWluZ1JvdGF0ZWQgPSB0aGlzLmdldFNlbGVjdGVkRmVhdHVyZXNBc0ZlYXR1cmVDb2xsZWN0aW9uKHByb3BzKTtcbiAgICB9XG4gIH1cblxuICBoYW5kbGVTdG9wRHJhZ2dpbmcoZXZlbnQ6IFN0b3BEcmFnZ2luZ0V2ZW50LCBwcm9wczogTW9kZVByb3BzPEZlYXR1cmVDb2xsZWN0aW9uPikge1xuICAgIGlmICh0aGlzLl9pc1JvdGF0aW5nKSB7XG4gICAgICAvLyBSb3RhdGUgdGhlIGdlb21ldHJ5XG4gICAgICBjb25zdCByb3RhdGVBY3Rpb24gPSB0aGlzLmdldFJvdGF0ZUFjdGlvbihcbiAgICAgICAgZXZlbnQucG9pbnRlckRvd25NYXBDb29yZHMsXG4gICAgICAgIGV2ZW50Lm1hcENvb3JkcyxcbiAgICAgICAgJ3JvdGF0ZWQnLFxuICAgICAgICBwcm9wc1xuICAgICAgKTtcblxuICAgICAgaWYgKHJvdGF0ZUFjdGlvbikge1xuICAgICAgICBwcm9wcy5vbkVkaXQocm90YXRlQWN0aW9uKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5fZ2VvbWV0cnlCZWluZ1JvdGF0ZWQgPSBudWxsO1xuICAgICAgdGhpcy5fc2VsZWN0ZWRFZGl0SGFuZGxlID0gbnVsbDtcbiAgICAgIHRoaXMuX2lzUm90YXRpbmcgPSBmYWxzZTtcbiAgICB9XG4gIH1cblxuICB1cGRhdGVDdXJzb3IocHJvcHM6IE1vZGVQcm9wczxGZWF0dXJlQ29sbGVjdGlvbj4pIHtcbiAgICBpZiAodGhpcy5fc2VsZWN0ZWRFZGl0SGFuZGxlKSB7XG4gICAgICAvLyBUT0RPOiBsb29rIGF0IGRvaW5nIFNWRyBjdXJzb3JzIHRvIGdldCBhIGJldHRlciBcInJvdGF0ZVwiIGN1cnNvclxuICAgICAgcHJvcHMub25VcGRhdGVDdXJzb3IoJ2Nyb3NzaGFpcicpO1xuICAgIH0gZWxzZSB7XG4gICAgICBwcm9wcy5vblVwZGF0ZUN1cnNvcihudWxsKTtcbiAgICB9XG4gIH1cblxuICBnZXRSb3RhdGVBY3Rpb24oXG4gICAgc3RhcnREcmFnUG9pbnQ6IFBvc2l0aW9uLFxuICAgIGN1cnJlbnRQb2ludDogUG9zaXRpb24sXG4gICAgZWRpdFR5cGU6IHN0cmluZyxcbiAgICBwcm9wczogTW9kZVByb3BzPEZlYXR1cmVDb2xsZWN0aW9uPlxuICApOiBHZW9Kc29uRWRpdEFjdGlvbiB8IG51bGwgfCB1bmRlZmluZWQge1xuICAgIGlmICghdGhpcy5fZ2VvbWV0cnlCZWluZ1JvdGF0ZWQpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGNvbnN0IGNlbnRyb2lkID0gdHVyZkNlbnRyb2lkKHRoaXMuX2dlb21ldHJ5QmVpbmdSb3RhdGVkKTtcbiAgICBjb25zdCBhbmdsZSA9IGdldFJvdGF0aW9uQW5nbGUoY2VudHJvaWQsIHN0YXJ0RHJhZ1BvaW50LCBjdXJyZW50UG9pbnQpO1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBjb25zdCByb3RhdGVkRmVhdHVyZXM6IEZlYXR1cmVDb2xsZWN0aW9uID0gdHVyZlRyYW5zZm9ybVJvdGF0ZShcbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIHRoaXMuX2dlb21ldHJ5QmVpbmdSb3RhdGVkLFxuICAgICAgYW5nbGUsXG4gICAgICB7XG4gICAgICAgIHBpdm90OiBjZW50cm9pZCxcbiAgICAgIH1cbiAgICApO1xuXG4gICAgbGV0IHVwZGF0ZWREYXRhID0gbmV3IEltbXV0YWJsZUZlYXR1cmVDb2xsZWN0aW9uKHByb3BzLmRhdGEpO1xuXG4gICAgY29uc3Qgc2VsZWN0ZWRJbmRleGVzID0gcHJvcHMuc2VsZWN0ZWRJbmRleGVzO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc2VsZWN0ZWRJbmRleGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBjb25zdCBzZWxlY3RlZEluZGV4ID0gc2VsZWN0ZWRJbmRleGVzW2ldO1xuICAgICAgY29uc3QgbW92ZWRGZWF0dXJlID0gcm90YXRlZEZlYXR1cmVzLmZlYXR1cmVzW2ldO1xuICAgICAgdXBkYXRlZERhdGEgPSB1cGRhdGVkRGF0YS5yZXBsYWNlR2VvbWV0cnkoc2VsZWN0ZWRJbmRleCwgbW92ZWRGZWF0dXJlLmdlb21ldHJ5KTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgdXBkYXRlZERhdGE6IHVwZGF0ZWREYXRhLmdldE9iamVjdCgpLFxuICAgICAgZWRpdFR5cGUsXG4gICAgICBlZGl0Q29udGV4dDoge1xuICAgICAgICBmZWF0dXJlSW5kZXhlczogc2VsZWN0ZWRJbmRleGVzLFxuICAgICAgfSxcbiAgICB9O1xuICB9XG59XG5cbmZ1bmN0aW9uIGdldFJvdGF0aW9uQW5nbGUoY2VudHJvaWQ6IFBvc2l0aW9uLCBzdGFydERyYWdQb2ludDogUG9zaXRpb24sIGN1cnJlbnRQb2ludDogUG9zaXRpb24pIHtcbiAgY29uc3QgYmVhcmluZzEgPSB0dXJmQmVhcmluZyhjZW50cm9pZCwgc3RhcnREcmFnUG9pbnQpO1xuICBjb25zdCBiZWFyaW5nMiA9IHR1cmZCZWFyaW5nKGNlbnRyb2lkLCBjdXJyZW50UG9pbnQpO1xuICByZXR1cm4gYmVhcmluZzIgLSBiZWFyaW5nMTtcbn1cbiJdfQ==","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.ScaleMode = void 0;\n\nvar _bbox = _interopRequireDefault(require(\"@turf/bbox\"));\n\nvar _centroid = _interopRequireDefault(require(\"@turf/centroid\"));\n\nvar _bearing = _interopRequireDefault(require(\"@turf/bearing\"));\n\nvar _bboxPolygon = _interopRequireDefault(require(\"@turf/bbox-polygon\"));\n\nvar _helpers = require(\"@turf/helpers\");\n\nvar _polygonToLine = _interopRequireDefault(require(\"@turf/polygon-to-line\"));\n\nvar _meta = require(\"@turf/meta\");\n\nvar _distance = _interopRequireDefault(require(\"@turf/distance\"));\n\nvar _transformScale = _interopRequireDefault(require(\"@turf/transform-scale\"));\n\nvar _invariant = require(\"@turf/invariant\");\n\nvar _utils = require(\"../utils\");\n\nvar _geojsonEditMode = require(\"./geojson-edit-mode\");\n\nvar _immutableFeatureCollection = require(\"./immutable-feature-collection\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(n); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar ScaleMode = /*#__PURE__*/function (_GeoJsonEditMode) {\n  _inherits(ScaleMode, _GeoJsonEditMode);\n\n  var _super = _createSuper(ScaleMode);\n\n  function ScaleMode() {\n    var _this;\n\n    _classCallCheck(this, ScaleMode);\n\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    _this = _super.call.apply(_super, [this].concat(args));\n\n    _defineProperty(_assertThisInitialized(_this), \"_geometryBeingScaled\", void 0);\n\n    _defineProperty(_assertThisInitialized(_this), \"_selectedEditHandle\", void 0);\n\n    _defineProperty(_assertThisInitialized(_this), \"_cornerGuidePoints\", void 0);\n\n    _defineProperty(_assertThisInitialized(_this), \"_cursor\", void 0);\n\n    _defineProperty(_assertThisInitialized(_this), \"_isScaling\", false);\n\n    _defineProperty(_assertThisInitialized(_this), \"_isSinglePointGeometrySelected\", function (geometry) {\n      var _ref = geometry || {},\n          features = _ref.features;\n\n      if (Array.isArray(features) && features.length === 1) {\n        // @ts-ignore\n        var _getGeom = (0, _invariant.getGeom)(features[0]),\n            type = _getGeom.type;\n\n        return type === 'Point';\n      }\n\n      return false;\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"_getOppositeScaleHandle\", function (selectedHandle) {\n      var selectedHandleIndex = selectedHandle && selectedHandle.properties && Array.isArray(selectedHandle.properties.positionIndexes) && selectedHandle.properties.positionIndexes[0];\n\n      if (typeof selectedHandleIndex !== 'number') {\n        return null;\n      }\n\n      var guidePointCount = _this._cornerGuidePoints.length;\n      var oppositeIndex = (selectedHandleIndex + guidePointCount / 2) % guidePointCount;\n      return _this._cornerGuidePoints.find(function (p) {\n        if (!Array.isArray(p.properties.positionIndexes)) {\n          return false;\n        }\n\n        return p.properties.positionIndexes[0] === oppositeIndex;\n      });\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"_getUpdatedData\", function (props, editedData) {\n      var updatedData = new _immutableFeatureCollection.ImmutableFeatureCollection(props.data);\n      var selectedIndexes = props.selectedIndexes;\n\n      for (var i = 0; i < selectedIndexes.length; i++) {\n        var selectedIndex = selectedIndexes[i];\n        var movedFeature = editedData.features[i];\n        updatedData = updatedData.replaceGeometry(selectedIndex, movedFeature.geometry);\n      }\n\n      return updatedData.getObject();\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"isEditHandleSelected\", function () {\n      return Boolean(_this._selectedEditHandle);\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"getScaleAction\", function (startDragPoint, currentPoint, editType, props) {\n      if (!_this._selectedEditHandle) {\n        return null;\n      }\n\n      var oppositeHandle = _this._getOppositeScaleHandle(_this._selectedEditHandle);\n\n      var origin = (0, _invariant.getCoord)(oppositeHandle); // @ts-ignore\n\n      var scaleFactor = getScaleFactor(origin, startDragPoint, currentPoint); // @ts-ignore\n\n      var scaledFeatures = (0, _transformScale[\"default\"])( // @ts-ignore\n      _this._geometryBeingScaled, scaleFactor, {\n        origin: origin\n      });\n      return {\n        updatedData: _this._getUpdatedData(props, scaledFeatures),\n        editType: editType,\n        editContext: {\n          featureIndexes: props.selectedIndexes\n        }\n      };\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"updateCursor\", function (props) {\n      if (_this._selectedEditHandle) {\n        if (_this._cursor) {\n          props.onUpdateCursor(_this._cursor);\n        }\n\n        var cursorGeometry = _this.getSelectedFeaturesAsFeatureCollection(props); // Get resize cursor direction from the hovered scale editHandle (e.g. nesw or nwse)\n\n\n        var centroid = (0, _centroid[\"default\"])(cursorGeometry);\n        var bearing = (0, _bearing[\"default\"])(centroid, _this._selectedEditHandle);\n        var positiveBearing = bearing < 0 ? bearing + 180 : bearing;\n\n        if (positiveBearing >= 0 && positiveBearing <= 90 || positiveBearing >= 180 && positiveBearing <= 270) {\n          _this._cursor = 'nesw-resize';\n          props.onUpdateCursor('nesw-resize');\n        } else {\n          _this._cursor = 'nwse-resize';\n          props.onUpdateCursor('nwse-resize');\n        }\n      } else {\n        props.onUpdateCursor(null);\n        _this._cursor = null;\n      }\n    });\n\n    return _this;\n  }\n\n  _createClass(ScaleMode, [{\n    key: \"handlePointerMove\",\n    value: function handlePointerMove(event, props) {\n      if (!this._isScaling) {\n        var selectedEditHandle = (0, _utils.getPickedEditHandle)(event.picks);\n        this._selectedEditHandle = selectedEditHandle && selectedEditHandle.properties.editHandleType === 'scale' ? selectedEditHandle : null;\n        this.updateCursor(props);\n      }\n    }\n  }, {\n    key: \"handleStartDragging\",\n    value: function handleStartDragging(event, props) {\n      if (this._selectedEditHandle) {\n        this._isScaling = true;\n        this._geometryBeingScaled = this.getSelectedFeaturesAsFeatureCollection(props);\n      }\n    }\n  }, {\n    key: \"handleDragging\",\n    value: function handleDragging(event, props) {\n      if (!this._isScaling) {\n        return;\n      }\n\n      props.onUpdateCursor(this._cursor);\n      var scaleAction = this.getScaleAction(event.pointerDownMapCoords, event.mapCoords, 'scaling', props);\n\n      if (scaleAction) {\n        props.onEdit(scaleAction);\n      }\n\n      event.cancelPan();\n    }\n  }, {\n    key: \"handleStopDragging\",\n    value: function handleStopDragging(event, props) {\n      if (this._isScaling) {\n        // Scale the geometry\n        var scaleAction = this.getScaleAction(event.pointerDownMapCoords, event.mapCoords, 'scaled', props);\n\n        if (scaleAction) {\n          props.onEdit(scaleAction);\n        }\n\n        props.onUpdateCursor(null);\n        this._geometryBeingScaled = null;\n        this._selectedEditHandle = null;\n        this._cursor = null;\n        this._isScaling = false;\n      }\n    }\n  }, {\n    key: \"getGuides\",\n    value: function getGuides(props) {\n      this._cornerGuidePoints = [];\n      var selectedGeometry = this.getSelectedFeaturesAsFeatureCollection(props); // Add buffer to the enveloping box if a single Point feature is selected\n\n      if (this._isSinglePointGeometrySelected(selectedGeometry)) {\n        return {\n          type: 'FeatureCollection',\n          features: []\n        };\n      }\n\n      var boundingBox = (0, _bboxPolygon[\"default\"])((0, _bbox[\"default\"])(selectedGeometry));\n      boundingBox.properties.mode = 'scale';\n      var cornerGuidePoints = [];\n      (0, _meta.coordEach)(boundingBox, function (coord, coordIndex) {\n        if (coordIndex < 4) {\n          // Get corner midpoint guides from the enveloping box\n          var cornerPoint = (0, _helpers.point)(coord, {\n            guideType: 'editHandle',\n            editHandleType: 'scale',\n            positionIndexes: [coordIndex]\n          });\n          cornerGuidePoints.push(cornerPoint);\n        }\n      });\n      this._cornerGuidePoints = cornerGuidePoints; // @ts-ignore\n\n      return (0, _helpers.featureCollection)([(0, _polygonToLine[\"default\"])(boundingBox)].concat(_toConsumableArray(this._cornerGuidePoints)));\n    }\n  }]);\n\n  return ScaleMode;\n}(_geojsonEditMode.GeoJsonEditMode);\n\nexports.ScaleMode = ScaleMode;\n\nfunction getScaleFactor(centroid, startDragPoint, currentPoint) {\n  var startDistance = (0, _distance[\"default\"])(centroid, startDragPoint);\n  var endDistance = (0, _distance[\"default\"])(centroid, currentPoint);\n  return endDistance / startDistance;\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvc2NhbGUtbW9kZS50cyJdLCJuYW1lcyI6WyJTY2FsZU1vZGUiLCJnZW9tZXRyeSIsImZlYXR1cmVzIiwiQXJyYXkiLCJpc0FycmF5IiwibGVuZ3RoIiwidHlwZSIsInNlbGVjdGVkSGFuZGxlIiwic2VsZWN0ZWRIYW5kbGVJbmRleCIsInByb3BlcnRpZXMiLCJwb3NpdGlvbkluZGV4ZXMiLCJndWlkZVBvaW50Q291bnQiLCJfY29ybmVyR3VpZGVQb2ludHMiLCJvcHBvc2l0ZUluZGV4IiwiZmluZCIsInAiLCJwcm9wcyIsImVkaXRlZERhdGEiLCJ1cGRhdGVkRGF0YSIsIkltbXV0YWJsZUZlYXR1cmVDb2xsZWN0aW9uIiwiZGF0YSIsInNlbGVjdGVkSW5kZXhlcyIsImkiLCJzZWxlY3RlZEluZGV4IiwibW92ZWRGZWF0dXJlIiwicmVwbGFjZUdlb21ldHJ5IiwiZ2V0T2JqZWN0IiwiQm9vbGVhbiIsIl9zZWxlY3RlZEVkaXRIYW5kbGUiLCJzdGFydERyYWdQb2ludCIsImN1cnJlbnRQb2ludCIsImVkaXRUeXBlIiwib3Bwb3NpdGVIYW5kbGUiLCJfZ2V0T3Bwb3NpdGVTY2FsZUhhbmRsZSIsIm9yaWdpbiIsInNjYWxlRmFjdG9yIiwiZ2V0U2NhbGVGYWN0b3IiLCJzY2FsZWRGZWF0dXJlcyIsIl9nZW9tZXRyeUJlaW5nU2NhbGVkIiwiX2dldFVwZGF0ZWREYXRhIiwiZWRpdENvbnRleHQiLCJmZWF0dXJlSW5kZXhlcyIsIl9jdXJzb3IiLCJvblVwZGF0ZUN1cnNvciIsImN1cnNvckdlb21ldHJ5IiwiZ2V0U2VsZWN0ZWRGZWF0dXJlc0FzRmVhdHVyZUNvbGxlY3Rpb24iLCJjZW50cm9pZCIsImJlYXJpbmciLCJwb3NpdGl2ZUJlYXJpbmciLCJldmVudCIsIl9pc1NjYWxpbmciLCJzZWxlY3RlZEVkaXRIYW5kbGUiLCJwaWNrcyIsImVkaXRIYW5kbGVUeXBlIiwidXBkYXRlQ3Vyc29yIiwic2NhbGVBY3Rpb24iLCJnZXRTY2FsZUFjdGlvbiIsInBvaW50ZXJEb3duTWFwQ29vcmRzIiwibWFwQ29vcmRzIiwib25FZGl0IiwiY2FuY2VsUGFuIiwic2VsZWN0ZWRHZW9tZXRyeSIsIl9pc1NpbmdsZVBvaW50R2VvbWV0cnlTZWxlY3RlZCIsImJvdW5kaW5nQm94IiwibW9kZSIsImNvcm5lckd1aWRlUG9pbnRzIiwiY29vcmQiLCJjb29yZEluZGV4IiwiY29ybmVyUG9pbnQiLCJndWlkZVR5cGUiLCJwdXNoIiwiR2VvSnNvbkVkaXRNb2RlIiwic3RhcnREaXN0YW5jZSIsImVuZERpc3RhbmNlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBV0E7O0FBQ0E7O0FBQ0E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUFFYUEsUzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2lFQUtFLEs7O3FGQUVvQixVQUFDQyxRQUFELEVBQTZEO0FBQUEsaUJBQ3ZFQSxRQUFRLElBQUksRUFEMkQ7QUFBQSxVQUNwRkMsUUFEb0YsUUFDcEZBLFFBRG9GOztBQUU1RixVQUFJQyxLQUFLLENBQUNDLE9BQU4sQ0FBY0YsUUFBZCxLQUEyQkEsUUFBUSxDQUFDRyxNQUFULEtBQW9CLENBQW5ELEVBQXNEO0FBQ3BEO0FBRG9ELHVCQUVuQyx3QkFBUUgsUUFBUSxDQUFDLENBQUQsQ0FBaEIsQ0FGbUM7QUFBQSxZQUU1Q0ksSUFGNEMsWUFFNUNBLElBRjRDOztBQUdwRCxlQUFPQSxJQUFJLEtBQUssT0FBaEI7QUFDRDs7QUFDRCxhQUFPLEtBQVA7QUFDRCxLOzs4RUFFeUIsVUFBQ0MsY0FBRCxFQUF1QztBQUMvRCxVQUFNQyxtQkFBbUIsR0FDdkJELGNBQWMsSUFDZEEsY0FBYyxDQUFDRSxVQURmLElBRUFOLEtBQUssQ0FBQ0MsT0FBTixDQUFjRyxjQUFjLENBQUNFLFVBQWYsQ0FBMEJDLGVBQXhDLENBRkEsSUFHQUgsY0FBYyxDQUFDRSxVQUFmLENBQTBCQyxlQUExQixDQUEwQyxDQUExQyxDQUpGOztBQU1BLFVBQUksT0FBT0YsbUJBQVAsS0FBK0IsUUFBbkMsRUFBNkM7QUFDM0MsZUFBTyxJQUFQO0FBQ0Q7O0FBQ0QsVUFBTUcsZUFBZSxHQUFHLE1BQUtDLGtCQUFMLENBQXdCUCxNQUFoRDtBQUNBLFVBQU1RLGFBQWEsR0FBRyxDQUFDTCxtQkFBbUIsR0FBR0csZUFBZSxHQUFHLENBQXpDLElBQThDQSxlQUFwRTtBQUNBLGFBQU8sTUFBS0Msa0JBQUwsQ0FBd0JFLElBQXhCLENBQTZCLFVBQUNDLENBQUQsRUFBTztBQUN6QyxZQUFJLENBQUNaLEtBQUssQ0FBQ0MsT0FBTixDQUFjVyxDQUFDLENBQUNOLFVBQUYsQ0FBYUMsZUFBM0IsQ0FBTCxFQUFrRDtBQUNoRCxpQkFBTyxLQUFQO0FBQ0Q7O0FBQ0QsZUFBT0ssQ0FBQyxDQUFDTixVQUFGLENBQWFDLGVBQWIsQ0FBNkIsQ0FBN0IsTUFBb0NHLGFBQTNDO0FBQ0QsT0FMTSxDQUFQO0FBTUQsSzs7c0VBRWlCLFVBQUNHLEtBQUQsRUFBc0NDLFVBQXRDLEVBQXdFO0FBQ3hGLFVBQUlDLFdBQVcsR0FBRyxJQUFJQyxzREFBSixDQUErQkgsS0FBSyxDQUFDSSxJQUFyQyxDQUFsQjtBQUNBLFVBQU1DLGVBQWUsR0FBR0wsS0FBSyxDQUFDSyxlQUE5Qjs7QUFDQSxXQUFLLElBQUlDLENBQUMsR0FBRyxDQUFiLEVBQWdCQSxDQUFDLEdBQUdELGVBQWUsQ0FBQ2hCLE1BQXBDLEVBQTRDaUIsQ0FBQyxFQUE3QyxFQUFpRDtBQUMvQyxZQUFNQyxhQUFhLEdBQUdGLGVBQWUsQ0FBQ0MsQ0FBRCxDQUFyQztBQUNBLFlBQU1FLFlBQVksR0FBR1AsVUFBVSxDQUFDZixRQUFYLENBQW9Cb0IsQ0FBcEIsQ0FBckI7QUFDQUosUUFBQUEsV0FBVyxHQUFHQSxXQUFXLENBQUNPLGVBQVosQ0FBNEJGLGFBQTVCLEVBQTJDQyxZQUFZLENBQUN2QixRQUF4RCxDQUFkO0FBQ0Q7O0FBQ0QsYUFBT2lCLFdBQVcsQ0FBQ1EsU0FBWixFQUFQO0FBQ0QsSzs7MkVBRXNCO0FBQUEsYUFBZUMsT0FBTyxDQUFDLE1BQUtDLG1CQUFOLENBQXRCO0FBQUEsSzs7cUVBRU4sVUFDZkMsY0FEZSxFQUVmQyxZQUZlLEVBR2ZDLFFBSGUsRUFJZmYsS0FKZSxFQUtaO0FBQ0gsVUFBSSxDQUFDLE1BQUtZLG1CQUFWLEVBQStCO0FBQzdCLGVBQU8sSUFBUDtBQUNEOztBQUVELFVBQU1JLGNBQWMsR0FBRyxNQUFLQyx1QkFBTCxDQUE2QixNQUFLTCxtQkFBbEMsQ0FBdkI7O0FBQ0EsVUFBTU0sTUFBTSxHQUFHLHlCQUFTRixjQUFULENBQWYsQ0FORyxDQU9IOztBQUNBLFVBQU1HLFdBQVcsR0FBR0MsY0FBYyxDQUFDRixNQUFELEVBQVNMLGNBQVQsRUFBeUJDLFlBQXpCLENBQWxDLENBUkcsQ0FTSDs7QUFDQSxVQUFNTyxjQUFpQyxHQUFHLGlDQUN4QztBQUNBLFlBQUtDLG9CQUZtQyxFQUd4Q0gsV0FId0MsRUFJeEM7QUFBRUQsUUFBQUEsTUFBTSxFQUFOQTtBQUFGLE9BSndDLENBQTFDO0FBT0EsYUFBTztBQUNMaEIsUUFBQUEsV0FBVyxFQUFFLE1BQUtxQixlQUFMLENBQXFCdkIsS0FBckIsRUFBNEJxQixjQUE1QixDQURSO0FBRUxOLFFBQUFBLFFBQVEsRUFBUkEsUUFGSztBQUdMUyxRQUFBQSxXQUFXLEVBQUU7QUFDWEMsVUFBQUEsY0FBYyxFQUFFekIsS0FBSyxDQUFDSztBQURYO0FBSFIsT0FBUDtBQU9ELEs7O21FQUVjLFVBQUNMLEtBQUQsRUFBeUM7QUFDdEQsVUFBSSxNQUFLWSxtQkFBVCxFQUE4QjtBQUM1QixZQUFJLE1BQUtjLE9BQVQsRUFBa0I7QUFDaEIxQixVQUFBQSxLQUFLLENBQUMyQixjQUFOLENBQXFCLE1BQUtELE9BQTFCO0FBQ0Q7O0FBQ0QsWUFBTUUsY0FBYyxHQUFHLE1BQUtDLHNDQUFMLENBQTRDN0IsS0FBNUMsQ0FBdkIsQ0FKNEIsQ0FNNUI7OztBQUNBLFlBQU04QixRQUFRLEdBQUcsMEJBQWFGLGNBQWIsQ0FBakI7QUFDQSxZQUFNRyxPQUFPLEdBQUcseUJBQVlELFFBQVosRUFBc0IsTUFBS2xCLG1CQUEzQixDQUFoQjtBQUNBLFlBQU1vQixlQUFlLEdBQUdELE9BQU8sR0FBRyxDQUFWLEdBQWNBLE9BQU8sR0FBRyxHQUF4QixHQUE4QkEsT0FBdEQ7O0FBQ0EsWUFDR0MsZUFBZSxJQUFJLENBQW5CLElBQXdCQSxlQUFlLElBQUksRUFBNUMsSUFDQ0EsZUFBZSxJQUFJLEdBQW5CLElBQTBCQSxlQUFlLElBQUksR0FGaEQsRUFHRTtBQUNBLGdCQUFLTixPQUFMLEdBQWUsYUFBZjtBQUNBMUIsVUFBQUEsS0FBSyxDQUFDMkIsY0FBTixDQUFxQixhQUFyQjtBQUNELFNBTkQsTUFNTztBQUNMLGdCQUFLRCxPQUFMLEdBQWUsYUFBZjtBQUNBMUIsVUFBQUEsS0FBSyxDQUFDMkIsY0FBTixDQUFxQixhQUFyQjtBQUNEO0FBQ0YsT0FwQkQsTUFvQk87QUFDTDNCLFFBQUFBLEtBQUssQ0FBQzJCLGNBQU4sQ0FBcUIsSUFBckI7QUFDQSxjQUFLRCxPQUFMLEdBQWUsSUFBZjtBQUNEO0FBQ0YsSzs7Ozs7OztzQ0FFaUJPLEssRUFBeUJqQyxLLEVBQXFDO0FBQzlFLFVBQUksQ0FBQyxLQUFLa0MsVUFBVixFQUFzQjtBQUNwQixZQUFNQyxrQkFBa0IsR0FBRyxnQ0FBb0JGLEtBQUssQ0FBQ0csS0FBMUIsQ0FBM0I7QUFDQSxhQUFLeEIsbUJBQUwsR0FDRXVCLGtCQUFrQixJQUFJQSxrQkFBa0IsQ0FBQzFDLFVBQW5CLENBQThCNEMsY0FBOUIsS0FBaUQsT0FBdkUsR0FDSUYsa0JBREosR0FFSSxJQUhOO0FBS0EsYUFBS0csWUFBTCxDQUFrQnRDLEtBQWxCO0FBQ0Q7QUFDRjs7O3dDQUVtQmlDLEssRUFBMkJqQyxLLEVBQXFDO0FBQ2xGLFVBQUksS0FBS1ksbUJBQVQsRUFBOEI7QUFDNUIsYUFBS3NCLFVBQUwsR0FBa0IsSUFBbEI7QUFDQSxhQUFLWixvQkFBTCxHQUE0QixLQUFLTyxzQ0FBTCxDQUE0QzdCLEtBQTVDLENBQTVCO0FBQ0Q7QUFDRjs7O21DQUVjaUMsSyxFQUFzQmpDLEssRUFBcUM7QUFDeEUsVUFBSSxDQUFDLEtBQUtrQyxVQUFWLEVBQXNCO0FBQ3BCO0FBQ0Q7O0FBRURsQyxNQUFBQSxLQUFLLENBQUMyQixjQUFOLENBQXFCLEtBQUtELE9BQTFCO0FBRUEsVUFBTWEsV0FBVyxHQUFHLEtBQUtDLGNBQUwsQ0FDbEJQLEtBQUssQ0FBQ1Esb0JBRFksRUFFbEJSLEtBQUssQ0FBQ1MsU0FGWSxFQUdsQixTQUhrQixFQUlsQjFDLEtBSmtCLENBQXBCOztBQU1BLFVBQUl1QyxXQUFKLEVBQWlCO0FBQ2Z2QyxRQUFBQSxLQUFLLENBQUMyQyxNQUFOLENBQWFKLFdBQWI7QUFDRDs7QUFFRE4sTUFBQUEsS0FBSyxDQUFDVyxTQUFOO0FBQ0Q7Ozt1Q0FFa0JYLEssRUFBMEJqQyxLLEVBQXFDO0FBQ2hGLFVBQUksS0FBS2tDLFVBQVQsRUFBcUI7QUFDbkI7QUFDQSxZQUFNSyxXQUFXLEdBQUcsS0FBS0MsY0FBTCxDQUNsQlAsS0FBSyxDQUFDUSxvQkFEWSxFQUVsQlIsS0FBSyxDQUFDUyxTQUZZLEVBR2xCLFFBSGtCLEVBSWxCMUMsS0FKa0IsQ0FBcEI7O0FBTUEsWUFBSXVDLFdBQUosRUFBaUI7QUFDZnZDLFVBQUFBLEtBQUssQ0FBQzJDLE1BQU4sQ0FBYUosV0FBYjtBQUNEOztBQUVEdkMsUUFBQUEsS0FBSyxDQUFDMkIsY0FBTixDQUFxQixJQUFyQjtBQUVBLGFBQUtMLG9CQUFMLEdBQTRCLElBQTVCO0FBQ0EsYUFBS1YsbUJBQUwsR0FBMkIsSUFBM0I7QUFDQSxhQUFLYyxPQUFMLEdBQWUsSUFBZjtBQUNBLGFBQUtRLFVBQUwsR0FBa0IsS0FBbEI7QUFDRDtBQUNGOzs7OEJBRVNsQyxLLEVBQTZEO0FBQ3JFLFdBQUtKLGtCQUFMLEdBQTBCLEVBQTFCO0FBQ0EsVUFBTWlELGdCQUFnQixHQUFHLEtBQUtoQixzQ0FBTCxDQUE0QzdCLEtBQTVDLENBQXpCLENBRnFFLENBSXJFOztBQUNBLFVBQUksS0FBSzhDLDhCQUFMLENBQW9DRCxnQkFBcEMsQ0FBSixFQUEyRDtBQUN6RCxlQUFPO0FBQUV2RCxVQUFBQSxJQUFJLEVBQUUsbUJBQVI7QUFBNkJKLFVBQUFBLFFBQVEsRUFBRTtBQUF2QyxTQUFQO0FBQ0Q7O0FBRUQsVUFBTTZELFdBQVcsR0FBRyw2QkFBWSxzQkFBS0YsZ0JBQUwsQ0FBWixDQUFwQjtBQUNBRSxNQUFBQSxXQUFXLENBQUN0RCxVQUFaLENBQXVCdUQsSUFBdkIsR0FBOEIsT0FBOUI7QUFDQSxVQUFNQyxpQkFBaUIsR0FBRyxFQUExQjtBQUVBLDJCQUFVRixXQUFWLEVBQXVCLFVBQUNHLEtBQUQsRUFBUUMsVUFBUixFQUF1QjtBQUM1QyxZQUFJQSxVQUFVLEdBQUcsQ0FBakIsRUFBb0I7QUFDbEI7QUFDQSxjQUFNQyxXQUFXLEdBQUcsb0JBQU1GLEtBQU4sRUFBYTtBQUMvQkcsWUFBQUEsU0FBUyxFQUFFLFlBRG9CO0FBRS9CaEIsWUFBQUEsY0FBYyxFQUFFLE9BRmU7QUFHL0IzQyxZQUFBQSxlQUFlLEVBQUUsQ0FBQ3lELFVBQUQ7QUFIYyxXQUFiLENBQXBCO0FBS0FGLFVBQUFBLGlCQUFpQixDQUFDSyxJQUFsQixDQUF1QkYsV0FBdkI7QUFDRDtBQUNGLE9BVkQ7QUFZQSxXQUFLeEQsa0JBQUwsR0FBMEJxRCxpQkFBMUIsQ0F6QnFFLENBMEJyRTs7QUFDQSxhQUFPLGlDQUFtQiwrQkFBY0YsV0FBZCxDQUFuQiw0QkFBa0QsS0FBS25ELGtCQUF2RCxHQUFQO0FBQ0Q7Ozs7RUFyTTRCMkQsZ0M7Ozs7QUF3TS9CLFNBQVNuQyxjQUFULENBQXdCVSxRQUF4QixFQUE0Q2pCLGNBQTVDLEVBQXNFQyxZQUF0RSxFQUE4RjtBQUM1RixNQUFNMEMsYUFBYSxHQUFHLDBCQUFhMUIsUUFBYixFQUF1QmpCLGNBQXZCLENBQXRCO0FBQ0EsTUFBTTRDLFdBQVcsR0FBRywwQkFBYTNCLFFBQWIsRUFBdUJoQixZQUF2QixDQUFwQjtBQUNBLFNBQU8yQyxXQUFXLEdBQUdELGFBQXJCO0FBQ0QiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBwcmV0dGllci9wcmV0dGllciAqL1xuaW1wb3J0IGJib3ggZnJvbSAnQHR1cmYvYmJveCc7XG5pbXBvcnQgdHVyZkNlbnRyb2lkIGZyb20gJ0B0dXJmL2NlbnRyb2lkJztcbmltcG9ydCB0dXJmQmVhcmluZyBmcm9tICdAdHVyZi9iZWFyaW5nJztcbmltcG9ydCBiYm94UG9seWdvbiBmcm9tICdAdHVyZi9iYm94LXBvbHlnb24nO1xuaW1wb3J0IHsgcG9pbnQsIGZlYXR1cmVDb2xsZWN0aW9uIH0gZnJvbSAnQHR1cmYvaGVscGVycyc7XG5pbXBvcnQgcG9seWdvblRvTGluZSBmcm9tICdAdHVyZi9wb2x5Z29uLXRvLWxpbmUnO1xuaW1wb3J0IHsgY29vcmRFYWNoIH0gZnJvbSAnQHR1cmYvbWV0YSc7XG5pbXBvcnQgdHVyZkRpc3RhbmNlIGZyb20gJ0B0dXJmL2Rpc3RhbmNlJztcbmltcG9ydCB0dXJmVHJhbnNmb3JtU2NhbGUgZnJvbSAnQHR1cmYvdHJhbnNmb3JtLXNjYWxlJztcbmltcG9ydCB7IGdldENvb3JkLCBnZXRHZW9tIH0gZnJvbSAnQHR1cmYvaW52YXJpYW50JztcbmltcG9ydCB7IEZlYXR1cmVDb2xsZWN0aW9uLCBQb3NpdGlvbiB9IGZyb20gJy4uL2dlb2pzb24tdHlwZXMnO1xuaW1wb3J0IHtcbiAgTW9kZVByb3BzLFxuICBQb2ludGVyTW92ZUV2ZW50LFxuICBTdGFydERyYWdnaW5nRXZlbnQsXG4gIFN0b3BEcmFnZ2luZ0V2ZW50LFxuICBEcmFnZ2luZ0V2ZW50LFxuICBFZGl0SGFuZGxlRmVhdHVyZSxcbiAgR3VpZGVGZWF0dXJlQ29sbGVjdGlvbixcbn0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHsgZ2V0UGlja2VkRWRpdEhhbmRsZSB9IGZyb20gJy4uL3V0aWxzJztcbmltcG9ydCB7IEdlb0pzb25FZGl0TW9kZSB9IGZyb20gJy4vZ2VvanNvbi1lZGl0LW1vZGUnO1xuaW1wb3J0IHsgSW1tdXRhYmxlRmVhdHVyZUNvbGxlY3Rpb24gfSBmcm9tICcuL2ltbXV0YWJsZS1mZWF0dXJlLWNvbGxlY3Rpb24nO1xuXG5leHBvcnQgY2xhc3MgU2NhbGVNb2RlIGV4dGVuZHMgR2VvSnNvbkVkaXRNb2RlIHtcbiAgX2dlb21ldHJ5QmVpbmdTY2FsZWQ6IEZlYXR1cmVDb2xsZWN0aW9uIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgX3NlbGVjdGVkRWRpdEhhbmRsZTogRWRpdEhhbmRsZUZlYXR1cmUgfCBudWxsIHwgdW5kZWZpbmVkO1xuICBfY29ybmVyR3VpZGVQb2ludHM6IEFycmF5PEVkaXRIYW5kbGVGZWF0dXJlPjtcbiAgX2N1cnNvcjogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgX2lzU2NhbGluZyA9IGZhbHNlO1xuXG4gIF9pc1NpbmdsZVBvaW50R2VvbWV0cnlTZWxlY3RlZCA9IChnZW9tZXRyeTogRmVhdHVyZUNvbGxlY3Rpb24gfCBudWxsIHwgdW5kZWZpbmVkKTogYm9vbGVhbiA9PiB7XG4gICAgY29uc3QgeyBmZWF0dXJlcyB9ID0gZ2VvbWV0cnkgfHwge307XG4gICAgaWYgKEFycmF5LmlzQXJyYXkoZmVhdHVyZXMpICYmIGZlYXR1cmVzLmxlbmd0aCA9PT0gMSkge1xuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgY29uc3QgeyB0eXBlIH0gPSBnZXRHZW9tKGZlYXR1cmVzWzBdKTtcbiAgICAgIHJldHVybiB0eXBlID09PSAnUG9pbnQnO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH07XG5cbiAgX2dldE9wcG9zaXRlU2NhbGVIYW5kbGUgPSAoc2VsZWN0ZWRIYW5kbGU6IEVkaXRIYW5kbGVGZWF0dXJlKSA9PiB7XG4gICAgY29uc3Qgc2VsZWN0ZWRIYW5kbGVJbmRleCA9XG4gICAgICBzZWxlY3RlZEhhbmRsZSAmJlxuICAgICAgc2VsZWN0ZWRIYW5kbGUucHJvcGVydGllcyAmJlxuICAgICAgQXJyYXkuaXNBcnJheShzZWxlY3RlZEhhbmRsZS5wcm9wZXJ0aWVzLnBvc2l0aW9uSW5kZXhlcykgJiZcbiAgICAgIHNlbGVjdGVkSGFuZGxlLnByb3BlcnRpZXMucG9zaXRpb25JbmRleGVzWzBdO1xuXG4gICAgaWYgKHR5cGVvZiBzZWxlY3RlZEhhbmRsZUluZGV4ICE9PSAnbnVtYmVyJykge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIGNvbnN0IGd1aWRlUG9pbnRDb3VudCA9IHRoaXMuX2Nvcm5lckd1aWRlUG9pbnRzLmxlbmd0aDtcbiAgICBjb25zdCBvcHBvc2l0ZUluZGV4ID0gKHNlbGVjdGVkSGFuZGxlSW5kZXggKyBndWlkZVBvaW50Q291bnQgLyAyKSAlIGd1aWRlUG9pbnRDb3VudDtcbiAgICByZXR1cm4gdGhpcy5fY29ybmVyR3VpZGVQb2ludHMuZmluZCgocCkgPT4ge1xuICAgICAgaWYgKCFBcnJheS5pc0FycmF5KHAucHJvcGVydGllcy5wb3NpdGlvbkluZGV4ZXMpKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBwLnByb3BlcnRpZXMucG9zaXRpb25JbmRleGVzWzBdID09PSBvcHBvc2l0ZUluZGV4O1xuICAgIH0pO1xuICB9O1xuXG4gIF9nZXRVcGRhdGVkRGF0YSA9IChwcm9wczogTW9kZVByb3BzPEZlYXR1cmVDb2xsZWN0aW9uPiwgZWRpdGVkRGF0YTogRmVhdHVyZUNvbGxlY3Rpb24pID0+IHtcbiAgICBsZXQgdXBkYXRlZERhdGEgPSBuZXcgSW1tdXRhYmxlRmVhdHVyZUNvbGxlY3Rpb24ocHJvcHMuZGF0YSk7XG4gICAgY29uc3Qgc2VsZWN0ZWRJbmRleGVzID0gcHJvcHMuc2VsZWN0ZWRJbmRleGVzO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc2VsZWN0ZWRJbmRleGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBjb25zdCBzZWxlY3RlZEluZGV4ID0gc2VsZWN0ZWRJbmRleGVzW2ldO1xuICAgICAgY29uc3QgbW92ZWRGZWF0dXJlID0gZWRpdGVkRGF0YS5mZWF0dXJlc1tpXTtcbiAgICAgIHVwZGF0ZWREYXRhID0gdXBkYXRlZERhdGEucmVwbGFjZUdlb21ldHJ5KHNlbGVjdGVkSW5kZXgsIG1vdmVkRmVhdHVyZS5nZW9tZXRyeSk7XG4gICAgfVxuICAgIHJldHVybiB1cGRhdGVkRGF0YS5nZXRPYmplY3QoKTtcbiAgfTtcblxuICBpc0VkaXRIYW5kbGVTZWxlY3RlZCA9ICgpOiBib29sZWFuID0+IEJvb2xlYW4odGhpcy5fc2VsZWN0ZWRFZGl0SGFuZGxlKTtcblxuICBnZXRTY2FsZUFjdGlvbiA9IChcbiAgICBzdGFydERyYWdQb2ludDogUG9zaXRpb24sXG4gICAgY3VycmVudFBvaW50OiBQb3NpdGlvbixcbiAgICBlZGl0VHlwZTogc3RyaW5nLFxuICAgIHByb3BzOiBNb2RlUHJvcHM8RmVhdHVyZUNvbGxlY3Rpb24+XG4gICkgPT4ge1xuICAgIGlmICghdGhpcy5fc2VsZWN0ZWRFZGl0SGFuZGxlKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBjb25zdCBvcHBvc2l0ZUhhbmRsZSA9IHRoaXMuX2dldE9wcG9zaXRlU2NhbGVIYW5kbGUodGhpcy5fc2VsZWN0ZWRFZGl0SGFuZGxlKTtcbiAgICBjb25zdCBvcmlnaW4gPSBnZXRDb29yZChvcHBvc2l0ZUhhbmRsZSk7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIGNvbnN0IHNjYWxlRmFjdG9yID0gZ2V0U2NhbGVGYWN0b3Iob3JpZ2luLCBzdGFydERyYWdQb2ludCwgY3VycmVudFBvaW50KTtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgY29uc3Qgc2NhbGVkRmVhdHVyZXM6IEZlYXR1cmVDb2xsZWN0aW9uID0gdHVyZlRyYW5zZm9ybVNjYWxlKFxuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgdGhpcy5fZ2VvbWV0cnlCZWluZ1NjYWxlZCxcbiAgICAgIHNjYWxlRmFjdG9yLFxuICAgICAgeyBvcmlnaW4gfVxuICAgICk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgdXBkYXRlZERhdGE6IHRoaXMuX2dldFVwZGF0ZWREYXRhKHByb3BzLCBzY2FsZWRGZWF0dXJlcyksXG4gICAgICBlZGl0VHlwZSxcbiAgICAgIGVkaXRDb250ZXh0OiB7XG4gICAgICAgIGZlYXR1cmVJbmRleGVzOiBwcm9wcy5zZWxlY3RlZEluZGV4ZXMsXG4gICAgICB9LFxuICAgIH07XG4gIH07XG5cbiAgdXBkYXRlQ3Vyc29yID0gKHByb3BzOiBNb2RlUHJvcHM8RmVhdHVyZUNvbGxlY3Rpb24+KSA9PiB7XG4gICAgaWYgKHRoaXMuX3NlbGVjdGVkRWRpdEhhbmRsZSkge1xuICAgICAgaWYgKHRoaXMuX2N1cnNvcikge1xuICAgICAgICBwcm9wcy5vblVwZGF0ZUN1cnNvcih0aGlzLl9jdXJzb3IpO1xuICAgICAgfVxuICAgICAgY29uc3QgY3Vyc29yR2VvbWV0cnkgPSB0aGlzLmdldFNlbGVjdGVkRmVhdHVyZXNBc0ZlYXR1cmVDb2xsZWN0aW9uKHByb3BzKTtcblxuICAgICAgLy8gR2V0IHJlc2l6ZSBjdXJzb3IgZGlyZWN0aW9uIGZyb20gdGhlIGhvdmVyZWQgc2NhbGUgZWRpdEhhbmRsZSAoZS5nLiBuZXN3IG9yIG53c2UpXG4gICAgICBjb25zdCBjZW50cm9pZCA9IHR1cmZDZW50cm9pZChjdXJzb3JHZW9tZXRyeSk7XG4gICAgICBjb25zdCBiZWFyaW5nID0gdHVyZkJlYXJpbmcoY2VudHJvaWQsIHRoaXMuX3NlbGVjdGVkRWRpdEhhbmRsZSk7XG4gICAgICBjb25zdCBwb3NpdGl2ZUJlYXJpbmcgPSBiZWFyaW5nIDwgMCA/IGJlYXJpbmcgKyAxODAgOiBiZWFyaW5nO1xuICAgICAgaWYgKFxuICAgICAgICAocG9zaXRpdmVCZWFyaW5nID49IDAgJiYgcG9zaXRpdmVCZWFyaW5nIDw9IDkwKSB8fFxuICAgICAgICAocG9zaXRpdmVCZWFyaW5nID49IDE4MCAmJiBwb3NpdGl2ZUJlYXJpbmcgPD0gMjcwKVxuICAgICAgKSB7XG4gICAgICAgIHRoaXMuX2N1cnNvciA9ICduZXN3LXJlc2l6ZSc7XG4gICAgICAgIHByb3BzLm9uVXBkYXRlQ3Vyc29yKCduZXN3LXJlc2l6ZScpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5fY3Vyc29yID0gJ253c2UtcmVzaXplJztcbiAgICAgICAgcHJvcHMub25VcGRhdGVDdXJzb3IoJ253c2UtcmVzaXplJyk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHByb3BzLm9uVXBkYXRlQ3Vyc29yKG51bGwpO1xuICAgICAgdGhpcy5fY3Vyc29yID0gbnVsbDtcbiAgICB9XG4gIH07XG5cbiAgaGFuZGxlUG9pbnRlck1vdmUoZXZlbnQ6IFBvaW50ZXJNb3ZlRXZlbnQsIHByb3BzOiBNb2RlUHJvcHM8RmVhdHVyZUNvbGxlY3Rpb24+KSB7XG4gICAgaWYgKCF0aGlzLl9pc1NjYWxpbmcpIHtcbiAgICAgIGNvbnN0IHNlbGVjdGVkRWRpdEhhbmRsZSA9IGdldFBpY2tlZEVkaXRIYW5kbGUoZXZlbnQucGlja3MpO1xuICAgICAgdGhpcy5fc2VsZWN0ZWRFZGl0SGFuZGxlID1cbiAgICAgICAgc2VsZWN0ZWRFZGl0SGFuZGxlICYmIHNlbGVjdGVkRWRpdEhhbmRsZS5wcm9wZXJ0aWVzLmVkaXRIYW5kbGVUeXBlID09PSAnc2NhbGUnXG4gICAgICAgICAgPyBzZWxlY3RlZEVkaXRIYW5kbGVcbiAgICAgICAgICA6IG51bGw7XG5cbiAgICAgIHRoaXMudXBkYXRlQ3Vyc29yKHByb3BzKTtcbiAgICB9XG4gIH1cblxuICBoYW5kbGVTdGFydERyYWdnaW5nKGV2ZW50OiBTdGFydERyYWdnaW5nRXZlbnQsIHByb3BzOiBNb2RlUHJvcHM8RmVhdHVyZUNvbGxlY3Rpb24+KSB7XG4gICAgaWYgKHRoaXMuX3NlbGVjdGVkRWRpdEhhbmRsZSkge1xuICAgICAgdGhpcy5faXNTY2FsaW5nID0gdHJ1ZTtcbiAgICAgIHRoaXMuX2dlb21ldHJ5QmVpbmdTY2FsZWQgPSB0aGlzLmdldFNlbGVjdGVkRmVhdHVyZXNBc0ZlYXR1cmVDb2xsZWN0aW9uKHByb3BzKTtcbiAgICB9XG4gIH1cblxuICBoYW5kbGVEcmFnZ2luZyhldmVudDogRHJhZ2dpbmdFdmVudCwgcHJvcHM6IE1vZGVQcm9wczxGZWF0dXJlQ29sbGVjdGlvbj4pIHtcbiAgICBpZiAoIXRoaXMuX2lzU2NhbGluZykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHByb3BzLm9uVXBkYXRlQ3Vyc29yKHRoaXMuX2N1cnNvcik7XG5cbiAgICBjb25zdCBzY2FsZUFjdGlvbiA9IHRoaXMuZ2V0U2NhbGVBY3Rpb24oXG4gICAgICBldmVudC5wb2ludGVyRG93bk1hcENvb3JkcyxcbiAgICAgIGV2ZW50Lm1hcENvb3JkcyxcbiAgICAgICdzY2FsaW5nJyxcbiAgICAgIHByb3BzXG4gICAgKTtcbiAgICBpZiAoc2NhbGVBY3Rpb24pIHtcbiAgICAgIHByb3BzLm9uRWRpdChzY2FsZUFjdGlvbik7XG4gICAgfVxuXG4gICAgZXZlbnQuY2FuY2VsUGFuKCk7XG4gIH1cblxuICBoYW5kbGVTdG9wRHJhZ2dpbmcoZXZlbnQ6IFN0b3BEcmFnZ2luZ0V2ZW50LCBwcm9wczogTW9kZVByb3BzPEZlYXR1cmVDb2xsZWN0aW9uPikge1xuICAgIGlmICh0aGlzLl9pc1NjYWxpbmcpIHtcbiAgICAgIC8vIFNjYWxlIHRoZSBnZW9tZXRyeVxuICAgICAgY29uc3Qgc2NhbGVBY3Rpb24gPSB0aGlzLmdldFNjYWxlQWN0aW9uKFxuICAgICAgICBldmVudC5wb2ludGVyRG93bk1hcENvb3JkcyxcbiAgICAgICAgZXZlbnQubWFwQ29vcmRzLFxuICAgICAgICAnc2NhbGVkJyxcbiAgICAgICAgcHJvcHNcbiAgICAgICk7XG4gICAgICBpZiAoc2NhbGVBY3Rpb24pIHtcbiAgICAgICAgcHJvcHMub25FZGl0KHNjYWxlQWN0aW9uKTtcbiAgICAgIH1cblxuICAgICAgcHJvcHMub25VcGRhdGVDdXJzb3IobnVsbCk7XG5cbiAgICAgIHRoaXMuX2dlb21ldHJ5QmVpbmdTY2FsZWQgPSBudWxsO1xuICAgICAgdGhpcy5fc2VsZWN0ZWRFZGl0SGFuZGxlID0gbnVsbDtcbiAgICAgIHRoaXMuX2N1cnNvciA9IG51bGw7XG4gICAgICB0aGlzLl9pc1NjYWxpbmcgPSBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBnZXRHdWlkZXMocHJvcHM6IE1vZGVQcm9wczxGZWF0dXJlQ29sbGVjdGlvbj4pOiBHdWlkZUZlYXR1cmVDb2xsZWN0aW9uIHtcbiAgICB0aGlzLl9jb3JuZXJHdWlkZVBvaW50cyA9IFtdO1xuICAgIGNvbnN0IHNlbGVjdGVkR2VvbWV0cnkgPSB0aGlzLmdldFNlbGVjdGVkRmVhdHVyZXNBc0ZlYXR1cmVDb2xsZWN0aW9uKHByb3BzKTtcblxuICAgIC8vIEFkZCBidWZmZXIgdG8gdGhlIGVudmVsb3BpbmcgYm94IGlmIGEgc2luZ2xlIFBvaW50IGZlYXR1cmUgaXMgc2VsZWN0ZWRcbiAgICBpZiAodGhpcy5faXNTaW5nbGVQb2ludEdlb21ldHJ5U2VsZWN0ZWQoc2VsZWN0ZWRHZW9tZXRyeSkpIHtcbiAgICAgIHJldHVybiB7IHR5cGU6ICdGZWF0dXJlQ29sbGVjdGlvbicsIGZlYXR1cmVzOiBbXSB9O1xuICAgIH1cblxuICAgIGNvbnN0IGJvdW5kaW5nQm94ID0gYmJveFBvbHlnb24oYmJveChzZWxlY3RlZEdlb21ldHJ5KSk7XG4gICAgYm91bmRpbmdCb3gucHJvcGVydGllcy5tb2RlID0gJ3NjYWxlJztcbiAgICBjb25zdCBjb3JuZXJHdWlkZVBvaW50cyA9IFtdO1xuXG4gICAgY29vcmRFYWNoKGJvdW5kaW5nQm94LCAoY29vcmQsIGNvb3JkSW5kZXgpID0+IHtcbiAgICAgIGlmIChjb29yZEluZGV4IDwgNCkge1xuICAgICAgICAvLyBHZXQgY29ybmVyIG1pZHBvaW50IGd1aWRlcyBmcm9tIHRoZSBlbnZlbG9waW5nIGJveFxuICAgICAgICBjb25zdCBjb3JuZXJQb2ludCA9IHBvaW50KGNvb3JkLCB7XG4gICAgICAgICAgZ3VpZGVUeXBlOiAnZWRpdEhhbmRsZScsXG4gICAgICAgICAgZWRpdEhhbmRsZVR5cGU6ICdzY2FsZScsXG4gICAgICAgICAgcG9zaXRpb25JbmRleGVzOiBbY29vcmRJbmRleF0sXG4gICAgICAgIH0pO1xuICAgICAgICBjb3JuZXJHdWlkZVBvaW50cy5wdXNoKGNvcm5lclBvaW50KTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHRoaXMuX2Nvcm5lckd1aWRlUG9pbnRzID0gY29ybmVyR3VpZGVQb2ludHM7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHJldHVybiBmZWF0dXJlQ29sbGVjdGlvbihbcG9seWdvblRvTGluZShib3VuZGluZ0JveCksIC4uLnRoaXMuX2Nvcm5lckd1aWRlUG9pbnRzXSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gZ2V0U2NhbGVGYWN0b3IoY2VudHJvaWQ6IFBvc2l0aW9uLCBzdGFydERyYWdQb2ludDogUG9zaXRpb24sIGN1cnJlbnRQb2ludDogUG9zaXRpb24pIHtcbiAgY29uc3Qgc3RhcnREaXN0YW5jZSA9IHR1cmZEaXN0YW5jZShjZW50cm9pZCwgc3RhcnREcmFnUG9pbnQpO1xuICBjb25zdCBlbmREaXN0YW5jZSA9IHR1cmZEaXN0YW5jZShjZW50cm9pZCwgY3VycmVudFBvaW50KTtcbiAgcmV0dXJuIGVuZERpc3RhbmNlIC8gc3RhcnREaXN0YW5jZTtcbn1cbiJdfQ==","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.SnappableMode = void 0;\n\nvar _utils = require(\"../utils\");\n\nvar _geojsonEditMode = require(\"./geojson-edit-mode\");\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _createForOfIteratorHelper(o) { if (typeof Symbol === \"undefined\" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (o = _unsupportedIterableToArray(o))) { var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var it, normalCompletion = true, didErr = false, err; return { s: function s() { it = o[Symbol.iterator](); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it[\"return\"] != null) it[\"return\"](); } finally { if (didErr) throw err; } } }; }\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(n); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar SnappableMode = /*#__PURE__*/function (_GeoJsonEditMode) {\n  _inherits(SnappableMode, _GeoJsonEditMode);\n\n  var _super = _createSuper(SnappableMode);\n\n  function SnappableMode(handler) {\n    var _this;\n\n    _classCallCheck(this, SnappableMode);\n\n    _this = _super.call(this);\n\n    _defineProperty(_assertThisInitialized(_this), \"_handler\", void 0);\n\n    _this._handler = handler;\n    return _this;\n  }\n\n  _createClass(SnappableMode, [{\n    key: \"_getSnappedMouseEvent\",\n    value: function _getSnappedMouseEvent(event, snapSource, snapTarget) {\n      return Object.assign(event, {\n        mapCoords: snapTarget.geometry.coordinates,\n        pointerDownMapCoords: snapSource && snapSource.geometry.coordinates\n      });\n    }\n  }, {\n    key: \"_getPickedSnapTarget\",\n    value: function _getPickedSnapTarget(picks) {\n      return (0, _utils.getPickedEditHandles)(picks).find(function (handle) {\n        return handle.properties.editHandleType === 'snap-target';\n      });\n    }\n  }, {\n    key: \"_getPickedSnapSource\",\n    value: function _getPickedSnapSource(pointerDownPicks) {\n      return (0, _utils.getPickedSnapSourceEditHandle)(pointerDownPicks);\n    }\n  }, {\n    key: \"_getUpdatedSnapSourceHandle\",\n    value: function _getUpdatedSnapSourceHandle(snapSourceHandle, data) {\n      var _snapSourceHandle$pro = snapSourceHandle.properties,\n          featureIndex = _snapSourceHandle$pro.featureIndex,\n          positionIndexes = _snapSourceHandle$pro.positionIndexes;\n\n      if (!Array.isArray(positionIndexes)) {\n        return snapSourceHandle;\n      }\n\n      var snapSourceFeature = data.features[featureIndex]; // $FlowFixMe\n\n      var snapSourceCoordinates = positionIndexes.reduce(function (a, b) {\n        return a[b];\n      }, snapSourceFeature.geometry.coordinates);\n      return _objectSpread({}, snapSourceHandle, {\n        geometry: {\n          type: 'Point',\n          coordinates: snapSourceCoordinates\n        }\n      });\n    } // If additionalSnapTargets is present in modeConfig and is populated, this\n    // method will return those features along with the features\n    // that live in the current layer. Otherwise, this method will simply return the\n    // features from the current layer\n\n  }, {\n    key: \"_getSnapTargets\",\n    value: function _getSnapTargets(props) {\n      var _ref = props.modeConfig || {},\n          additionalSnapTargets = _ref.additionalSnapTargets;\n\n      additionalSnapTargets = additionalSnapTargets || [];\n      var features = [].concat(_toConsumableArray(props.data.features), _toConsumableArray(additionalSnapTargets));\n      return features;\n    }\n  }, {\n    key: \"_getSnapTargetHandles\",\n    value: function _getSnapTargetHandles(props) {\n      var handles = [];\n\n      var features = this._getSnapTargets(props);\n\n      for (var i = 0; i < features.length; i++) {\n        // Filter out the currently selected feature(s)\n        var isCurrentIndexFeatureNotSelected = !props.selectedIndexes.includes(i);\n\n        if (isCurrentIndexFeatureNotSelected) {\n          var geometry = features[i].geometry;\n          handles.push.apply(handles, _toConsumableArray((0, _utils.getEditHandlesForGeometry)(geometry, i, 'snap-target')));\n        }\n      }\n\n      return handles;\n    } // If no snap handle has been picked, only display the edit handles of the\n    // selected feature. If a snap handle has been picked, display said snap handle\n    // along with all snappable points on all non-selected features.\n\n  }, {\n    key: \"getGuides\",\n    value: function getGuides(props) {\n      var modeConfig = props.modeConfig,\n          lastPointerMoveEvent = props.lastPointerMoveEvent;\n\n      var _ref2 = modeConfig || {},\n          enableSnapping = _ref2.enableSnapping;\n\n      var guides = {\n        type: 'FeatureCollection',\n        features: _toConsumableArray(this._handler.getGuides(props).features)\n      };\n\n      if (!enableSnapping) {\n        return guides;\n      }\n\n      var snapSourceHandle = lastPointerMoveEvent && this._getPickedSnapSource(lastPointerMoveEvent.pointerDownPicks); // They started dragging a handle\n      // So render the picked handle (in its updated location) and all possible snap targets\n\n\n      if (snapSourceHandle) {\n        var _guides$features;\n\n        (_guides$features = guides.features).push.apply(_guides$features, _toConsumableArray(this._getSnapTargetHandles(props)).concat([this._getUpdatedSnapSourceHandle(snapSourceHandle, props.data)]));\n\n        return guides;\n      } // Render the possible snap source handles\n\n\n      var features = props.data.features;\n\n      var _iterator = _createForOfIteratorHelper(props.selectedIndexes),\n          _step;\n\n      try {\n        for (_iterator.s(); !(_step = _iterator.n()).done;) {\n          var index = _step.value;\n\n          if (index < features.length) {\n            var _guides$features2;\n\n            var geometry = features[index].geometry;\n\n            (_guides$features2 = guides.features).push.apply(_guides$features2, _toConsumableArray((0, _utils.getEditHandlesForGeometry)(geometry, index, 'snap-source')));\n          }\n        }\n      } catch (err) {\n        _iterator.e(err);\n      } finally {\n        _iterator.f();\n      }\n\n      return guides;\n    }\n  }, {\n    key: \"_getSnapAwareEvent\",\n    value: function _getSnapAwareEvent(event, props) {\n      var snapSource = this._getPickedSnapSource(props.lastPointerMoveEvent.pointerDownPicks);\n\n      var snapTarget = this._getPickedSnapTarget(event.picks);\n\n      return snapSource && snapTarget ? this._getSnappedMouseEvent(event, snapSource, snapTarget) : event;\n    }\n  }, {\n    key: \"handleStartDragging\",\n    value: function handleStartDragging(event, props) {\n      this._handler.handleStartDragging(event, props);\n    }\n  }, {\n    key: \"handleStopDragging\",\n    value: function handleStopDragging(event, props) {\n      this._handler.handleStopDragging(this._getSnapAwareEvent(event, props), props);\n    }\n  }, {\n    key: \"handleDragging\",\n    value: function handleDragging(event, props) {\n      this._handler.handleDragging(this._getSnapAwareEvent(event, props), props);\n    }\n  }, {\n    key: \"handlePointerMove\",\n    value: function handlePointerMove(event, props) {\n      this._handler.handlePointerMove(this._getSnapAwareEvent(event, props), props);\n    }\n  }]);\n\n  return SnappableMode;\n}(_geojsonEditMode.GeoJsonEditMode);\n\nexports.SnappableMode = SnappableMode;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvc25hcHBhYmxlLW1vZGUudHMiXSwibmFtZXMiOlsiU25hcHBhYmxlTW9kZSIsImhhbmRsZXIiLCJfaGFuZGxlciIsImV2ZW50Iiwic25hcFNvdXJjZSIsInNuYXBUYXJnZXQiLCJPYmplY3QiLCJhc3NpZ24iLCJtYXBDb29yZHMiLCJnZW9tZXRyeSIsImNvb3JkaW5hdGVzIiwicG9pbnRlckRvd25NYXBDb29yZHMiLCJwaWNrcyIsImZpbmQiLCJoYW5kbGUiLCJwcm9wZXJ0aWVzIiwiZWRpdEhhbmRsZVR5cGUiLCJwb2ludGVyRG93blBpY2tzIiwic25hcFNvdXJjZUhhbmRsZSIsImRhdGEiLCJmZWF0dXJlSW5kZXgiLCJwb3NpdGlvbkluZGV4ZXMiLCJBcnJheSIsImlzQXJyYXkiLCJzbmFwU291cmNlRmVhdHVyZSIsImZlYXR1cmVzIiwic25hcFNvdXJjZUNvb3JkaW5hdGVzIiwicmVkdWNlIiwiYSIsImIiLCJ0eXBlIiwicHJvcHMiLCJtb2RlQ29uZmlnIiwiYWRkaXRpb25hbFNuYXBUYXJnZXRzIiwiaGFuZGxlcyIsIl9nZXRTbmFwVGFyZ2V0cyIsImkiLCJsZW5ndGgiLCJpc0N1cnJlbnRJbmRleEZlYXR1cmVOb3RTZWxlY3RlZCIsInNlbGVjdGVkSW5kZXhlcyIsImluY2x1ZGVzIiwicHVzaCIsImxhc3RQb2ludGVyTW92ZUV2ZW50IiwiZW5hYmxlU25hcHBpbmciLCJndWlkZXMiLCJnZXRHdWlkZXMiLCJfZ2V0UGlja2VkU25hcFNvdXJjZSIsIl9nZXRTbmFwVGFyZ2V0SGFuZGxlcyIsIl9nZXRVcGRhdGVkU25hcFNvdXJjZUhhbmRsZSIsImluZGV4IiwiX2dldFBpY2tlZFNuYXBUYXJnZXQiLCJfZ2V0U25hcHBlZE1vdXNlRXZlbnQiLCJoYW5kbGVTdGFydERyYWdnaW5nIiwiaGFuZGxlU3RvcERyYWdnaW5nIiwiX2dldFNuYXBBd2FyZUV2ZW50IiwiaGFuZGxlRHJhZ2dpbmciLCJoYW5kbGVQb2ludGVyTW92ZSIsIkdl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S0FBcEU7QUFDRDs7O3NDQUVpQjVCLEssRUFBeUI0QixLLEVBQXFDO0FBQzlFLFdBQUs3QixRQUFMLENBQWNzRCxpQkFBZCxDQUFnQyxLQUFLRixrQkFBTCxDQUF3Qm5ELEtBQXhCLEVBQStCNEIsS0FBL0IsQ0FBaEMsRUFBdUVBLEtBQXZFO0FBQ0Q7Ozs7RUF4SmdDMEIsZ0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQb3NpdGlvbiwgRmVhdHVyZSwgRmVhdHVyZUNvbGxlY3Rpb24gfSBmcm9tICcuLi9nZW9qc29uLXR5cGVzJztcbmltcG9ydCB7XG4gIFBvaW50ZXJNb3ZlRXZlbnQsXG4gIFN0YXJ0RHJhZ2dpbmdFdmVudCxcbiAgU3RvcERyYWdnaW5nRXZlbnQsXG4gIERyYWdnaW5nRXZlbnQsXG4gIE1vZGVQcm9wcyxcbiAgUGljayxcbiAgR3VpZGVGZWF0dXJlQ29sbGVjdGlvbixcbiAgRWRpdEhhbmRsZUZlYXR1cmUsXG59IGZyb20gJy4uL3R5cGVzJztcbmltcG9ydCB7XG4gIGdldFBpY2tlZFNuYXBTb3VyY2VFZGl0SGFuZGxlLFxuICBnZXRQaWNrZWRFZGl0SGFuZGxlcyxcbiAgZ2V0RWRpdEhhbmRsZXNGb3JHZW9tZXRyeSxcbn0gZnJvbSAnLi4vdXRpbHMnO1xuaW1wb3J0IHsgR2VvSnNvbkVkaXRNb2RlIH0gZnJvbSAnLi9nZW9qc29uLWVkaXQtbW9kZSc7XG5cbnR5cGUgTW92ZW1lbnRUeXBlRXZlbnQgPSBQb2ludGVyTW92ZUV2ZW50IHwgU3RhcnREcmFnZ2luZ0V2ZW50IHwgU3RvcERyYWdnaW5nRXZlbnQgfCBEcmFnZ2luZ0V2ZW50O1xuXG5leHBvcnQgY2xhc3MgU25hcHBhYmxlTW9kZSBleHRlbmRzIEdlb0pzb25FZGl0TW9kZSB7XG4gIF9oYW5kbGVyOiBHZW9Kc29uRWRpdE1vZGU7XG5cbiAgY29uc3RydWN0b3IoaGFuZGxlcjogR2VvSnNvbkVkaXRNb2RlKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLl9oYW5kbGVyID0gaGFuZGxlcjtcbiAgfVxuXG4gIF9nZXRTbmFwcGVkTW91c2VFdmVudDxUIGV4dGVuZHMgTW92ZW1lbnRUeXBlRXZlbnQ+KFxuICAgIGV2ZW50OiBULFxuICAgIHNuYXBTb3VyY2U6IEVkaXRIYW5kbGVGZWF0dXJlLFxuICAgIHNuYXBUYXJnZXQ6IEVkaXRIYW5kbGVGZWF0dXJlXG4gICk6IFQge1xuICAgIHJldHVybiBPYmplY3QuYXNzaWduKGV2ZW50LCB7XG4gICAgICBtYXBDb29yZHM6IHNuYXBUYXJnZXQuZ2VvbWV0cnkuY29vcmRpbmF0ZXMsXG4gICAgICBwb2ludGVyRG93bk1hcENvb3Jkczogc25hcFNvdXJjZSAmJiBzbmFwU291cmNlLmdlb21ldHJ5LmNvb3JkaW5hdGVzLFxuICAgIH0pO1xuICB9XG5cbiAgX2dldFBpY2tlZFNuYXBUYXJnZXQocGlja3M6IFBpY2tbXSk6IEVkaXRIYW5kbGVGZWF0dXJlIHwgbnVsbCB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIGdldFBpY2tlZEVkaXRIYW5kbGVzKHBpY2tzKS5maW5kKFxuICAgICAgKGhhbmRsZSkgPT4gaGFuZGxlLnByb3BlcnRpZXMuZWRpdEhhbmRsZVR5cGUgPT09ICdzbmFwLXRhcmdldCdcbiAgICApO1xuICB9XG5cbiAgX2dldFBpY2tlZFNuYXBTb3VyY2UoXG4gICAgcG9pbnRlckRvd25QaWNrczogUGlja1tdIHwgbnVsbCB8IHVuZGVmaW5lZFxuICApOiBFZGl0SGFuZGxlRmVhdHVyZSB8IG51bGwgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiBnZXRQaWNrZWRTbmFwU291cmNlRWRpdEhhbmRsZShwb2ludGVyRG93blBpY2tzKTtcbiAgfVxuXG4gIF9nZXRVcGRhdGVkU25hcFNvdXJjZUhhbmRsZShcbiAgICBzbmFwU291cmNlSGFuZGxlOiBFZGl0SGFuZGxlRmVhdHVyZSxcbiAgICBkYXRhOiBGZWF0dXJlQ29sbGVjdGlvblxuICApOiBFZGl0SGFuZGxlRmVhdHVyZSB7XG4gICAgY29uc3QgeyBmZWF0dXJlSW5kZXgsIHBvc2l0aW9uSW5kZXhlcyB9ID0gc25hcFNvdXJjZUhhbmRsZS5wcm9wZXJ0aWVzO1xuICAgIGlmICghQXJyYXkuaXNBcnJheShwb3NpdGlvbkluZGV4ZXMpKSB7XG4gICAgICByZXR1cm4gc25hcFNvdXJjZUhhbmRsZTtcbiAgICB9XG4gICAgY29uc3Qgc25hcFNvdXJjZUZlYXR1cmUgPSBkYXRhLmZlYXR1cmVzW2ZlYXR1cmVJbmRleF07XG5cbiAgICAvLyAkRmxvd0ZpeE1lXG4gICAgY29uc3Qgc25hcFNvdXJjZUNvb3JkaW5hdGVzOiBQb3NpdGlvbiA9IHBvc2l0aW9uSW5kZXhlcy5yZWR1Y2UoXG4gICAgICAoYTogYW55W10sIGI6IG51bWJlcikgPT4gYVtiXSxcbiAgICAgIHNuYXBTb3VyY2VGZWF0dXJlLmdlb21ldHJ5LmNvb3JkaW5hdGVzXG4gICAgKTtcblxuICAgIHJldHVybiB7XG4gICAgICAuLi5zbmFwU291cmNlSGFuZGxlLFxuICAgICAgZ2VvbWV0cnk6IHtcbiAgICAgICAgdHlwZTogJ1BvaW50JyxcbiAgICAgICAgY29vcmRpbmF0ZXM6IHNuYXBTb3VyY2VDb29yZGluYXRlcyxcbiAgICAgIH0sXG4gICAgfTtcbiAgfVxuXG4gIC8vIElmIGFkZGl0aW9uYWxTbmFwVGFyZ2V0cyBpcyBwcmVzZW50IGluIG1vZGVDb25maWcgYW5kIGlzIHBvcHVsYXRlZCwgdGhpc1xuICAvLyBtZXRob2Qgd2lsbCByZXR1cm4gdGhvc2UgZmVhdHVyZXMgYWxvbmcgd2l0aCB0aGUgZmVhdHVyZXNcbiAgLy8gdGhhdCBsaXZlIGluIHRoZSBjdXJyZW50IGxheWVyLiBPdGhlcndpc2UsIHRoaXMgbWV0aG9kIHdpbGwgc2ltcGx5IHJldHVybiB0aGVcbiAgLy8gZmVhdHVyZXMgZnJvbSB0aGUgY3VycmVudCBsYXllclxuICBfZ2V0U25hcFRhcmdldHMocHJvcHM6IE1vZGVQcm9wczxGZWF0dXJlQ29sbGVjdGlvbj4pOiBGZWF0dXJlW10ge1xuICAgIGxldCB7IGFkZGl0aW9uYWxTbmFwVGFyZ2V0cyB9ID0gcHJvcHMubW9kZUNvbmZpZyB8fCB7fTtcbiAgICBhZGRpdGlvbmFsU25hcFRhcmdldHMgPSBhZGRpdGlvbmFsU25hcFRhcmdldHMgfHwgW107XG5cbiAgICBjb25zdCBmZWF0dXJlcyA9IFsuLi5wcm9wcy5kYXRhLmZlYXR1cmVzLCAuLi5hZGRpdGlvbmFsU25hcFRhcmdldHNdO1xuICAgIHJldHVybiBmZWF0dXJlcztcbiAgfVxuXG4gIF9nZXRTbmFwVGFyZ2V0SGFuZGxlcyhwcm9wczogTW9kZVByb3BzPEZlYXR1cmVDb2xsZWN0aW9uPik6IEVkaXRIYW5kbGVGZWF0dXJlW10ge1xuICAgIGNvbnN0IGhhbmRsZXMgPSBbXTtcbiAgICBjb25zdCBmZWF0dXJlcyA9IHRoaXMuX2dldFNuYXBUYXJnZXRzKHByb3BzKTtcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZmVhdHVyZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIC8vIEZpbHRlciBvdXQgdGhlIGN1cnJlbnRseSBzZWxlY3RlZCBmZWF0dXJlKHMpXG4gICAgICBjb25zdCBpc0N1cnJlbnRJbmRleEZlYXR1cmVOb3RTZWxlY3RlZCA9ICFwcm9wcy5zZWxlY3RlZEluZGV4ZXMuaW5jbHVkZXMoaSk7XG5cbiAgICAgIGlmIChpc0N1cnJlbnRJbmRleEZlYXR1cmVOb3RTZWxlY3RlZCkge1xuICAgICAgICBjb25zdCB7IGdlb21ldHJ5IH0gPSBmZWF0dXJlc1tpXTtcbiAgICAgICAgaGFuZGxlcy5wdXNoKC4uLmdldEVkaXRIYW5kbGVzRm9yR2VvbWV0cnkoZ2VvbWV0cnksIGksICdzbmFwLXRhcmdldCcpKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGhhbmRsZXM7XG4gIH1cblxuICAvLyBJZiBubyBzbmFwIGhhbmRsZSBoYXMgYmVlbiBwaWNrZWQsIG9ubHkgZGlzcGxheSB0aGUgZWRpdCBoYW5kbGVzIG9mIHRoZVxuICAvLyBzZWxlY3RlZCBmZWF0dXJlLiBJZiBhIHNuYXAgaGFuZGxlIGhhcyBiZWVuIHBpY2tlZCwgZGlzcGxheSBzYWlkIHNuYXAgaGFuZGxlXG4gIC8vIGFsb25nIHdpdGggYWxsIHNuYXBwYWJsZSBwb2ludHMgb24gYWxsIG5vbi1zZWxlY3RlZCBmZWF0dXJlcy5cbiAgZ2V0R3VpZGVzKHByb3BzOiBNb2RlUHJvcHM8RmVhdHVyZUNvbGxlY3Rpb24+KTogR3VpZGVGZWF0dXJlQ29sbGVjdGlvbiB7XG4gICAgY29uc3QgeyBtb2RlQ29uZmlnLCBsYXN0UG9pbnRlck1vdmVFdmVudCB9ID0gcHJvcHM7XG4gICAgY29uc3QgeyBlbmFibGVTbmFwcGluZyB9ID0gbW9kZUNvbmZpZyB8fCB7fTtcblxuICAgIGNvbnN0IGd1aWRlczogR3VpZGVGZWF0dXJlQ29sbGVjdGlvbiA9IHtcbiAgICAgIHR5cGU6ICdGZWF0dXJlQ29sbGVjdGlvbicsXG4gICAgICBmZWF0dXJlczogWy4uLnRoaXMuX2hhbmRsZXIuZ2V0R3VpZGVzKHByb3BzKS5mZWF0dXJlc10sXG4gICAgfTtcblxuICAgIGlmICghZW5hYmxlU25hcHBpbmcpIHtcbiAgICAgIHJldHVybiBndWlkZXM7XG4gICAgfVxuXG4gICAgY29uc3Qgc25hcFNvdXJjZUhhbmRsZTogRWRpdEhhbmRsZUZlYXR1cmUgfCBudWxsIHwgdW5kZWZpbmVkID1cbiAgICAgIGxhc3RQb2ludGVyTW92ZUV2ZW50ICYmIHRoaXMuX2dldFBpY2tlZFNuYXBTb3VyY2UobGFzdFBvaW50ZXJNb3ZlRXZlbnQucG9pbnRlckRvd25QaWNrcyk7XG5cbiAgICAvLyBUaGV5IHN0YXJ0ZWQgZHJhZ2dpbmcgYSBoYW5kbGVcbiAgICAvLyBTbyByZW5kZXIgdGhlIHBpY2tlZCBoYW5kbGUgKGluIGl0cyB1cGRhdGVkIGxvY2F0aW9uKSBhbmQgYWxsIHBvc3NpYmxlIHNuYXAgdGFyZ2V0c1xuICAgIGlmIChzbmFwU291cmNlSGFuZGxlKSB7XG4gICAgICBndWlkZXMuZmVhdHVyZXMucHVzaChcbiAgICAgICAgLi4udGhpcy5fZ2V0U25hcFRhcmdldEhhbmRsZXMocHJvcHMpLFxuICAgICAgICB0aGlzLl9nZXRVcGRhdGVkU25hcFNvdXJjZUhhbmRsZShzbmFwU291cmNlSGFuZGxlLCBwcm9wcy5kYXRhKVxuICAgICAgKTtcblxuICAgICAgcmV0dXJuIGd1aWRlcztcbiAgICB9XG5cbiAgICAvLyBSZW5kZXIgdGhlIHBvc3NpYmxlIHNuYXAgc291cmNlIGhhbmRsZXNcbiAgICBjb25zdCB7IGZlYXR1cmVzIH0gPSBwcm9wcy5kYXRhO1xuICAgIGZvciAoY29uc3QgaW5kZXggb2YgcHJvcHMuc2VsZWN0ZWRJbmRleGVzKSB7XG4gICAgICBpZiAoaW5kZXggPCBmZWF0dXJlcy5sZW5ndGgpIHtcbiAgICAgICAgY29uc3QgeyBnZW9tZXRyeSB9ID0gZmVhdHVyZXNbaW5kZXhdO1xuICAgICAgICBndWlkZXMuZmVhdHVyZXMucHVzaCguLi5nZXRFZGl0SGFuZGxlc0Zvckdlb21ldHJ5KGdlb21ldHJ5LCBpbmRleCwgJ3NuYXAtc291cmNlJykpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBndWlkZXM7XG4gIH1cblxuICBfZ2V0U25hcEF3YXJlRXZlbnQ8VCBleHRlbmRzIE1vdmVtZW50VHlwZUV2ZW50PihcbiAgICBldmVudDogVCxcbiAgICBwcm9wczogTW9kZVByb3BzPEZlYXR1cmVDb2xsZWN0aW9uPlxuICApOiBUIHtcbiAgICBjb25zdCBzbmFwU291cmNlID0gdGhpcy5fZ2V0UGlja2VkU25hcFNvdXJjZShwcm9wcy5sYXN0UG9pbnRlck1vdmVFdmVudC5wb2ludGVyRG93blBpY2tzKTtcbiAgICBjb25zdCBzbmFwVGFyZ2V0ID0gdGhpcy5fZ2V0UGlja2VkU25hcFRhcmdldChldmVudC5waWNrcyk7XG5cbiAgICByZXR1cm4gc25hcFNvdXJjZSAmJiBzbmFwVGFyZ2V0XG4gICAgICA/IHRoaXMuX2dldFNuYXBwZWRNb3VzZUV2ZW50KGV2ZW50LCBzbmFwU291cmNlLCBzbmFwVGFyZ2V0KVxuICAgICAgOiBldmVudDtcbiAgfVxuXG4gIGhhbmRsZVN0YXJ0RHJhZ2dpbmcoZXZlbnQ6IFN0YXJ0RHJhZ2dpbmdFdmVudCwgcHJvcHM6IE1vZGVQcm9wczxGZWF0dXJlQ29sbGVjdGlvbj4pIHtcbiAgICB0aGlzLl9oYW5kbGVyLmhhbmRsZVN0YXJ0RHJhZ2dpbmcoZXZlbnQsIHByb3BzKTtcbiAgfVxuXG4gIGhhbmRsZVN0b3BEcmFnZ2luZyhldmVudDogU3RvcERyYWdnaW5nRXZlbnQsIHByb3BzOiBNb2RlUHJvcHM8RmVhdHVyZUNvbGxlY3Rpb24+KSB7XG4gICAgdGhpcy5faGFuZGxlci5oYW5kbGVTdG9wRHJhZ2dpbmcodGhpcy5fZ2V0U25hcEF3YXJlRXZlbnQoZXZlbnQsIHByb3BzKSwgcHJvcHMpO1xuICB9XG5cbiAgaGFuZGxlRHJhZ2dpbmcoZXZlbnQ6IERyYWdnaW5nRXZlbnQsIHByb3BzOiBNb2RlUHJvcHM8RmVhdHVyZUNvbGxlY3Rpb24+KSB7XG4gICAgdGhpcy5faGFuZGxlci5oYW5kbGVEcmFnZ2luZyh0aGlzLl9nZXRTbmFwQXdhcmVFdmVudChldmVudCwgcHJvcHMpLCBwcm9wcyk7XG4gIH1cblxuICBoYW5kbGVQb2ludGVyTW92ZShldmVudDogUG9pbnRlck1vdmVFdmVudCwgcHJvcHM6IE1vZGVQcm9wczxGZWF0dXJlQ29sbGVjdGlvbj4pIHtcbiAgICB0aGlzLl9oYW5kbGVyLmhhbmRsZVBvaW50ZXJNb3ZlKHRoaXMuX2dldFNuYXBBd2FyZUV2ZW50KGV2ZW50LCBwcm9wcyksIHByb3BzKTtcbiAgfVxufVxuIl19","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.SplitPolygonMode = void 0;\n\nvar _booleanPointInPolygon = _interopRequireDefault(require(\"@turf/boolean-point-in-polygon\"));\n\nvar _difference = _interopRequireDefault(require(\"@turf/difference\"));\n\nvar _buffer = _interopRequireDefault(require(\"@turf/buffer\"));\n\nvar _lineIntersect = _interopRequireDefault(require(\"@turf/line-intersect\"));\n\nvar _helpers = require(\"@turf/helpers\");\n\nvar _bearing = _interopRequireDefault(require(\"@turf/bearing\"));\n\nvar _distance = _interopRequireDefault(require(\"@turf/distance\"));\n\nvar _destination = _interopRequireDefault(require(\"@turf/destination\"));\n\nvar _polygonToLine = _interopRequireDefault(require(\"@turf/polygon-to-line\"));\n\nvar _nearestPointOnLine = _interopRequireDefault(require(\"@turf/nearest-point-on-line\"));\n\nvar _utils = require(\"../utils\");\n\nvar _geojsonEditMode = require(\"./geojson-edit-mode\");\n\nvar _immutableFeatureCollection = require(\"./immutable-feature-collection\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(n); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return; var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nvar SplitPolygonMode = /*#__PURE__*/function (_GeoJsonEditMode) {\n  _inherits(SplitPolygonMode, _GeoJsonEditMode);\n\n  var _super = _createSuper(SplitPolygonMode);\n\n  function SplitPolygonMode() {\n    _classCallCheck(this, SplitPolygonMode);\n\n    return _super.apply(this, arguments);\n  }\n\n  _createClass(SplitPolygonMode, [{\n    key: \"calculateMapCoords\",\n    value: function calculateMapCoords(clickSequence, mapCoords, props) {\n      var modeConfig = props.modeConfig;\n\n      if (!modeConfig || !modeConfig.lock90Degree || !clickSequence.length) {\n        return mapCoords;\n      }\n\n      if (clickSequence.length === 1) {\n        // if first point is clicked, then find closest polygon point and build ~90deg vector\n        var firstPoint = clickSequence[0];\n        var selectedGeometry = this.getSelectedGeometry(props); // @ts-ignore\n\n        var feature = (0, _polygonToLine[\"default\"])(selectedGeometry);\n        var lines = feature.type === 'FeatureCollection' ? feature.features : [feature];\n        var minDistance = Number.MAX_SAFE_INTEGER;\n        var closestPoint = null; // If Multipolygon, then we should find nearest polygon line and stick split to it.\n\n        lines.forEach(function (line) {\n          var snapPoint = (0, _nearestPointOnLine[\"default\"])(line, firstPoint);\n          var distanceFromOrigin = (0, _distance[\"default\"])(snapPoint, firstPoint);\n\n          if (minDistance > distanceFromOrigin) {\n            minDistance = distanceFromOrigin;\n            closestPoint = snapPoint;\n          }\n        });\n\n        if (closestPoint) {\n          // closest point is used as 90degree entry to the polygon\n          var lastBearing = (0, _bearing[\"default\"])(firstPoint, closestPoint);\n          var currentDistance = (0, _distance[\"default\"])(firstPoint, mapCoords, {\n            units: 'meters'\n          });\n          return (0, _destination[\"default\"])(firstPoint, currentDistance, lastBearing, {\n            units: 'meters'\n          }).geometry.coordinates;\n        }\n\n        return mapCoords;\n      } // Allow only 90 degree turns\n\n\n      var lastPoint = clickSequence[clickSequence.length - 1];\n\n      var _generatePointsParall = (0, _utils.generatePointsParallelToLinePoints)(clickSequence[clickSequence.length - 2], lastPoint, mapCoords),\n          _generatePointsParall2 = _slicedToArray(_generatePointsParall, 1),\n          approximatePoint = _generatePointsParall2[0]; // align point with current ground\n\n\n      var nearestPt = (0, _nearestPointOnLine[\"default\"])((0, _helpers.lineString)([lastPoint, approximatePoint]), mapCoords).geometry.coordinates;\n      return nearestPt;\n    }\n  }, {\n    key: \"getGuides\",\n    value: function getGuides(props) {\n      var clickSequence = this.getClickSequence();\n      var guides = {\n        type: 'FeatureCollection',\n        features: []\n      };\n\n      if (clickSequence.length === 0 || !props.lastPointerMoveEvent) {\n        // nothing to do yet\n        return guides;\n      }\n\n      var mapCoords = props.lastPointerMoveEvent.mapCoords;\n      guides.features.push({\n        type: 'Feature',\n        properties: {\n          guideType: 'tentative'\n        },\n        geometry: {\n          type: 'LineString',\n          coordinates: [].concat(_toConsumableArray(clickSequence), [this.calculateMapCoords(clickSequence, mapCoords, props)])\n        }\n      });\n      return guides;\n    }\n  }, {\n    key: \"handleClick\",\n    value: function handleClick(event, props) {\n      var tentativeFeature = this.getTentativeGuide(props);\n      var selectedGeometry = this.getSelectedGeometry(props);\n\n      if (!selectedGeometry) {\n        // eslint-disable-next-line no-console,no-undef\n        console.warn('A polygon must be selected for splitting');\n        return;\n      }\n\n      var clickSequence = this.getClickSequence();\n\n      if (tentativeFeature && tentativeFeature.geometry.type === 'LineString') {\n        clickSequence.push(tentativeFeature.geometry.coordinates[tentativeFeature.geometry.coordinates.length - 1]);\n      } else {\n        this.addClickSequence(event);\n      }\n\n      var pt = {\n        type: 'Point',\n        coordinates: clickSequence[clickSequence.length - 1]\n      }; // @ts-ignore\n\n      var isPointInPolygon = (0, _booleanPointInPolygon[\"default\"])(pt, selectedGeometry);\n\n      if (clickSequence.length > 1 && tentativeFeature && !isPointInPolygon) {\n        this.resetClickSequence(); // @ts-ignore\n\n        var isLineInterectingWithPolygon = (0, _lineIntersect[\"default\"])(tentativeFeature, selectedGeometry);\n\n        if (isLineInterectingWithPolygon.features.length === 0) {\n          return;\n        }\n\n        var editAction = this.splitPolygon(tentativeFeature, props);\n\n        if (editAction) {\n          props.onEdit(editAction);\n        }\n      }\n    }\n  }, {\n    key: \"handlePointerMove\",\n    value: function handlePointerMove(event, props) {\n      props.onUpdateCursor('cell');\n    }\n  }, {\n    key: \"splitPolygon\",\n    value: function splitPolygon(tentativeFeature, props) {\n      var selectedGeometry = this.getSelectedGeometry(props);\n      var featureIndex = props.selectedIndexes[0];\n      var modeConfig = props.modeConfig || {}; // Default gap in between the polygon\n\n      var _modeConfig$gap = modeConfig.gap,\n          gap = _modeConfig$gap === void 0 ? 0.1 : _modeConfig$gap,\n          _modeConfig$units = modeConfig.units,\n          units = _modeConfig$units === void 0 ? 'centimeters' : _modeConfig$units;\n\n      if (gap === 0) {\n        gap = 0.1;\n        units = 'centimeters';\n      }\n\n      var buffer = (0, _buffer[\"default\"])(tentativeFeature, gap, {\n        units: units\n      }); // @ts-ignore\n\n      var updatedGeometry = (0, _difference[\"default\"])(selectedGeometry, buffer);\n\n      if (!updatedGeometry) {\n        // eslint-disable-next-line no-console,no-undef\n        console.warn('Canceling edit. Split Polygon erased');\n        return null;\n      }\n\n      var _updatedGeometry$geom = updatedGeometry.geometry,\n          type = _updatedGeometry$geom.type,\n          coordinates = _updatedGeometry$geom.coordinates;\n      var updatedCoordinates = [];\n\n      if (type === 'Polygon') {\n        // Update the coordinates as per Multipolygon\n        // @ts-ignore\n        updatedCoordinates = coordinates.map(function (c) {\n          return [c];\n        });\n      } else {\n        // Handle Case when Multipolygon has holes\n        // @ts-ignore\n        updatedCoordinates = coordinates.reduce(function (agg, prev) {\n          prev.forEach(function (p) {\n            agg.push([p]);\n          });\n          return agg;\n        }, []);\n      } // Update the type to Mulitpolygon\n\n\n      var updatedData = new _immutableFeatureCollection.ImmutableFeatureCollection(props.data).replaceGeometry(featureIndex, {\n        type: 'MultiPolygon',\n        coordinates: updatedCoordinates\n      });\n      var editAction = {\n        updatedData: updatedData.getObject(),\n        editType: 'split',\n        editContext: {\n          featureIndexes: [featureIndex]\n        }\n      };\n      return editAction;\n    }\n  }]);\n\n  return SplitPolygonMode;\n}(_geojsonEditMode.GeoJsonEditMode);\n\nexports.SplitPolygonMode = SplitPolygonMode;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvc3BsaXQtcG9seWdvbi1tb2RlLnRzIl0sIm5hbWVzIjpbIlNwbGl0UG9seWdvbk1vZGUiLCJjbGlja1NlcXVlbmNlIiwibWFwQ29vcmRzIiwicHJvcHMiLCJtb2RlQ29uZmlnIiwibG9jazkwRGVncmVlIiwibGVuZ3RoIiwiZmlyc3RQb2ludCIsInNlbGVjdGVkR2VvbWV0cnkiLCJnZXRTZWxlY3RlZEdlb21ldHJ5IiwiZmVhdHVyZSIsImxpbmVzIiwidHlwZSIsImZlYXR1cmVzIiwibWluRGlzdGFuY2UiLCJOdW1iZXIiLCJNQVhfU0FGRV9JTlRFR0VSIiwiY2xvc2VzdFBvaW50IiwiZm9yRWFjaCIsImxpbmUiLCJzbmFwUG9pbnQiLCJkaXN0YW5jZUZyb21PcmlnaW4iLCJsYXN0QmVhcmluZyIsImN1cnJlbnREaXN0YW5jZSIsInVuaXRzIiwiZ2VvbWV0cnkiLCJjb29yZGluYXRlcyIsImxhc3RQb2ludCIsImFwcHJveGltYXRlUG9pbnQiLCJuZWFyZXN0UHQiLCJnZXRDbGlja1NlcXVlbmNlIiwiZ3VpZGVzIiwibGFzdFBvaW50ZXJNb3ZlRXZlbnQiLCJwdXNoIiwicHJvcGVydGllcyIsImd1aWRlVHlwZSIsImNhbGN1bGF0ZU1hcENvb3JkcyIsImV2ZW50IiwidGVudGF0aXZlRmVhdHVyZSIsImdldFRlbnRhdGl2ZUd1aWRlIiwiY29uc29sZSIsIndhcm4iLCJhZGRDbGlja1NlcXVlbmNlIiwicHQiLCJpc1BvaW50SW5Qb2x5Z29uIiwicmVzZXRDbGlja1NlcXVlbmNlIiwiaXNMaW5lSW50ZXJlY3RpbmdXaXRoUG9seWdvbiIsImVkaXRBY3Rpb24iLCJzcGxpdFBvbHlnb24iLCJvbkVkaXQiLCJvblVwZGF0ZUN1cnNvciIsImZlYXR1cmVJbmRleCIsInNlbGVjdGVkSW5kZXhlcyIsImdhcCIsImJ1ZmZlciIsInVwZGF0ZWRHZW9tZXRyeSIsInVwZGF0ZWRDb29yZGluYXRlcyIsIm1hcCIsImMiLCJyZWR1Y2UiLCJhZ2ciLCJwcmV2IiwicCIsInVwZGF0ZWREYXRhIiwiSW1tdXRhYmxlRmVhdHVyZUNvbGxlY3Rpb24iLCJkYXRhIiwicmVwbGFjZUdlb21ldHJ5IiwiZ2V0T2JqZWN0IiwiZWRpdFR5cGUiLCJlZGl0Q29udGV4dCIsImZlYXR1cmVJbmRleGVzIiwiR2VvSnNvbkVkaXRNb2RlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBU0E7O0FBQ0E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUFFYUEsZ0I7Ozs7Ozs7Ozs7Ozs7dUNBQ1FDLGEsRUFBb0JDLFMsRUFBZ0JDLEssRUFBcUM7QUFDMUYsVUFBTUMsVUFBVSxHQUFHRCxLQUFLLENBQUNDLFVBQXpCOztBQUNBLFVBQUksQ0FBQ0EsVUFBRCxJQUFlLENBQUNBLFVBQVUsQ0FBQ0MsWUFBM0IsSUFBMkMsQ0FBQ0osYUFBYSxDQUFDSyxNQUE5RCxFQUFzRTtBQUNwRSxlQUFPSixTQUFQO0FBQ0Q7O0FBQ0QsVUFBSUQsYUFBYSxDQUFDSyxNQUFkLEtBQXlCLENBQTdCLEVBQWdDO0FBQzlCO0FBQ0EsWUFBTUMsVUFBVSxHQUFHTixhQUFhLENBQUMsQ0FBRCxDQUFoQztBQUNBLFlBQU1PLGdCQUFnQixHQUFHLEtBQUtDLG1CQUFMLENBQXlCTixLQUF6QixDQUF6QixDQUg4QixDQUk5Qjs7QUFDQSxZQUFNTyxPQUFPLEdBQUcsK0JBQWtCRixnQkFBbEIsQ0FBaEI7QUFFQSxZQUFNRyxLQUFLLEdBQUdELE9BQU8sQ0FBQ0UsSUFBUixLQUFpQixtQkFBakIsR0FBdUNGLE9BQU8sQ0FBQ0csUUFBL0MsR0FBMEQsQ0FBQ0gsT0FBRCxDQUF4RTtBQUNBLFlBQUlJLFdBQVcsR0FBR0MsTUFBTSxDQUFDQyxnQkFBekI7QUFDQSxZQUFJQyxZQUFZLEdBQUcsSUFBbkIsQ0FUOEIsQ0FVOUI7O0FBQ0FOLFFBQUFBLEtBQUssQ0FBQ08sT0FB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QjtBQUNBO0FBQ0E0QyxRQUFBQSxrQkFBa0IsR0FBRzlCLFdBQVcsQ0FBQytCLEdBQVosQ0FBZ0IsVUFBQ0MsQ0FBRDtBQUFBLGlCQUFPLENBQUNBLENBQUQsQ0FBUDtBQUFBLFNBQWhCLENBQXJCO0FBQ0QsT0FKRCxNQUlPO0FBQ0w7QUFDQTtBQUNBRixRQUFBQSxrQkFBa0IsR0FBRzlCLFdBQVcsQ0FBQ2lDLE1BQVosQ0FBbUIsVUFBQ0MsR0FBRCxFQUFNQyxJQUFOLEVBQWU7QUFDckRBLFVBQUFBLElBQUksQ0FBQzNDLE9BQUwsQ0FBYSxVQUFDNEMsQ0FBRCxFQUFPO0FBQ2xCRixZQUFBQSxHQUFHLENBQUMzQixJQUFKLENBQVMsQ0FBQzZCLENBQUQsQ0FBVDtBQUNELFdBRkQ7QUFHQSxpQkFBT0YsR0FBUDtBQUNELFNBTG9CLEVBS2xCLEVBTGtCLENBQXJCO0FBTUQsT0FwQ21GLENBc0NwRjs7O0FBQ0EsVUFBTUcsV0FBVyxHQUFHLElBQUlDLHNEQUFKLENBQStCN0QsS0FBSyxDQUFDOEQsSUFBckMsRUFBMkNDLGVBQTNDLENBQTJEZixZQUEzRCxFQUF5RTtBQUMzRnZDLFFBQUFBLElBQUksRUFBRSxjQURxRjtBQUUzRmMsUUFBQUEsV0FBVyxFQUFFOEI7QUFGOEUsT0FBekUsQ0FBcEI7QUFLQSxVQUFNVCxVQUE2QixHQUFHO0FBQ3BDZ0IsUUFBQUEsV0FBVyxFQUFFQSxXQUFXLENBQUNJLFNBQVosRUFEdUI7QUFFcENDLFFBQUFBLFFBQVEsRUFBRSxPQUYwQjtBQUdwQ0MsUUFBQUEsV0FBVyxFQUFFO0FBQ1hDLFVBQUFBLGNBQWMsRUFBRSxDQUFDbkIsWUFBRDtBQURMO0FBSHVCLE9BQXRDO0FBUUEsYUFBT0osVUFBUDtBQUNEOzs7O0VBakxtQ3dCLGdDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGJvb2xlYW5Qb2ludEluUG9seWdvbiBmcm9tICdAdHVyZi9ib29sZWFuLXBvaW50LWluLXBvbHlnb24nO1xuaW1wb3J0IHR1cmZEaWZmZXJlbmNlIGZyb20gJ0B0dXJmL2RpZmZlcmVuY2UnO1xuaW1wb3J0IHR1cmZCdWZmZXIgZnJvbSAnQHR1cmYvYnVmZmVyJztcbmltcG9ydCBsaW5lSW50ZXJzZWN0IGZyb20gJ0B0dXJmL2xpbmUtaW50ZXJzZWN0JztcbmltcG9ydCB7IGxpbmVTdHJpbmcgfSBmcm9tICdAdHVyZi9oZWxwZXJzJztcbmltcG9ydCB0dXJmQmVhcmluZyBmcm9tICdAdHVyZi9iZWFyaW5nJztcbmltcG9ydCB0dXJmRGlzdGFuY2UgZnJvbSAnQHR1cmYvZGlzdGFuY2UnO1xuaW1wb3J0IHR1cmZEZXN0aW5hdGlvbiBmcm9tICdAdHVyZi9kZXN0aW5hdGlvbic7XG5pbXBvcnQgdHVyZlBvbHlnb25Ub0xpbmUgZnJvbSAnQHR1cmYvcG9seWdvbi10by1saW5lJztcbmltcG9ydCBuZWFyZXN0UG9pbnRPbkxpbmUgZnJvbSAnQHR1cmYvbmVhcmVzdC1wb2ludC1vbi1saW5lJztcbmltcG9ydCB7IGdlbmVyYXRlUG9pbnRzUGFyYWxsZWxUb0xpbmVQb2ludHMgfSBmcm9tICcuLi91dGlscyc7XG5pbXBvcnQgeyBGZWF0dXJlQ29sbGVjdGlvbiB9IGZyb20gJy4uL2dlb2pzb24tdHlwZXMnO1xuaW1wb3J0IHtcbiAgQ2xpY2tFdmVudCxcbiAgUG9pbnRlck1vdmVFdmVudCxcbiAgTW9kZVByb3BzLFxuICBHdWlkZUZlYXR1cmVDb2xsZWN0aW9uLFxuICBUZW50YXRpdmVGZWF0dXJlLFxufSBmcm9tICcuLi90eXBlcyc7XG5pbXBvcnQgeyBHZW9Kc29uRWRpdE1vZGUsIEdlb0pzb25FZGl0QWN0aW9uIH0gZnJvbSAnLi9nZW9qc29uLWVkaXQtbW9kZSc7XG5pbXBvcnQgeyBJbW11dGFibGVGZWF0dXJlQ29sbGVjdGlvbiB9IGZyb20gJy4vaW1tdXRhYmxlLWZlYXR1cmUtY29sbGVjdGlvbic7XG5cbmV4cG9ydCBjbGFzcyBTcGxpdFBvbHlnb25Nb2RlIGV4dGVuZHMgR2VvSnNvbkVkaXRNb2RlIHtcbiAgY2FsY3VsYXRlTWFwQ29vcmRzKGNsaWNrU2VxdWVuY2U6IGFueSwgbWFwQ29vcmRzOiBhbnksIHByb3BzOiBNb2RlUHJvcHM8RmVhdHVyZUNvbGxlY3Rpb24+KSB7XG4gICAgY29uc3QgbW9kZUNvbmZpZyA9IHByb3BzLm1vZGVDb25maWc7XG4gICAgaWYgKCFtb2RlQ29uZmlnIHx8ICFtb2RlQ29uZmlnLmxvY2s5MERlZ3JlZSB8fCAhY2xpY2tTZXF1ZW5jZS5sZW5ndGgpIHtcbiAgICAgIHJldHVybiBtYXBDb29yZHM7XG4gICAgfVxuICAgIGlmIChjbGlja1NlcXVlbmNlLmxlbmd0aCA9PT0gMSkge1xuICAgICAgLy8gaWYgZmlyc3QgcG9pbnQgaXMgY2xpY2tlZCwgdGhlbiBmaW5kIGNsb3Nlc3QgcG9seWdvbiBwb2ludCBhbmQgYnVpbGQgfjkwZGVnIHZlY3RvclxuICAgICAgY29uc3QgZmlyc3RQb2ludCA9IGNsaWNrU2VxdWVuY2VbMF07XG4gICAgICBjb25zdCBzZWxlY3RlZEdlb21ldHJ5ID0gdGhpcy5nZXRTZWxlY3RlZEdlb21ldHJ5KHByb3BzKTtcbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIGNvbnN0IGZlYXR1cmUgPSB0dXJmUG9seWdvblRvTGluZShzZWxlY3RlZEdlb21ldHJ5KTtcblxuICAgICAgY29uc3QgbGluZXMgPSBmZWF0dXJlLnR5cGUgPT09ICdGZWF0dXJlQ29sbGVjdGlvbicgPyBmZWF0dXJlLmZlYXR1cmVzIDogW2ZlYXR1cmVdO1xuICAgICAgbGV0IG1pbkRpc3RhbmNlID0gTnVtYmVyLk1BWF9TQUZFX0lOVEVHRVI7XG4gICAgICBsZXQgY2xvc2VzdFBvaW50ID0gbnVsbDtcbiAgICAgIC8vIElmIE11bHRpcG9seWdvbiwgdGhlbiB3ZSBzaG91bGQgZmluZCBuZWFyZXN0IHBvbHlnb24gbGluZSBhbmQgc3RpY2sgc3BsaXQgdG8gaXQuXG4gICAgICBsaW5lcy5mb3JFYWNoKChsaW5lKSA9PiB7XG4gICAgICAgIGNvbnN0IHNuYXBQb2ludCA9IG5lYXJlc3RQb2ludE9uTGluZShsaW5lLCBmaXJzdFBvaW50KTtcbiAgICAgICAgY29uc3QgZGlzdGFuY2VGcm9tT3JpZ2luID0gdHVyZkRpc3RhbmNlKHNuYXBQb2ludCwgZmlyc3RQb2ludCk7XG4gICAgICAgIGlmIChtaW5EaXN0YW5jZSA+IGRpc3RhbmNlRnJvbU9yaWdpbikge1xuICAgICAgICAgIG1pbkRpc3RhbmNlID0gZGlzdGFuY2VGcm9tT3JpZ2luO1xuICAgICAgICAgIGNsb3Nlc3RQb2ludCA9IHNuYXBQb2ludDtcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICAgIGlmIChjbG9zZXN0UG9pbnQpIHtcbiAgICAgICAgLy8gY2xvc2VzdCBwb2ludCBpcyB1c2VkIGFzIDkwZGVncmVlIGVudHJ5IHRvIHRoZSBwb2x5Z29uXG4gICAgICAgIGNvbnN0IGxhc3RCZWFyaW5nID0gdHVyZkJlYXJpbmcoZmlyc3RQb2ludCwgY2xvc2VzdFBvaW50KTtcbiAgICAgICAgY29uc3QgY3VycmVudERpc3RhbmNlID0gdHVyZkRpc3RhbmNlKGZpcnN0UG9pbnQsIG1hcENvb3JkcywgeyB1bml0czogJ21ldGVycycgfSk7XG4gICAgICAgIHJldHVybiB0dXJmRGVzdGluYXRpb24oZmlyc3RQb2ludCwgY3VycmVudERpc3RhbmNlLCBsYXN0QmVhcmluZywge1xuICAgICAgICAgIHVuaXRzOiAnbWV0ZXJzJyxcbiAgICAgICAgfSkuZ2VvbWV0cnkuY29vcmRpbmF0ZXM7XG4gICAgICB9XG4gICAgICByZXR1cm4gbWFwQ29vcmRzO1xuICAgIH1cbiAgICAvLyBBbGxvdyBvbmx5IDkwIGRlZ3JlZSB0dXJuc1xuICAgIGNvbnN0IGxhc3RQb2ludCA9IGNsaWNrU2VxdWVuY2VbY2xpY2tTZXF1ZW5jZS5sZW5ndGggLSAxXTtcbiAgICBjb25zdCBbYXBwcm94aW1hdGVQb2ludF0gPSBnZW5lcmF0ZVBvaW50c1BhcmFsbGVsVG9MaW5lUG9pbnRzKFxuICAgICAgY2xpY2tTZXF1ZW5jZVtjbGlja1NlcXVlbmNlLmxlbmd0aCAtIDJdLFxuICAgICAgbGFzdFBvaW50LFxuICAgICAgbWFwQ29vcmRzXG4gICAgKTtcbiAgICAvLyBhbGlnbiBwb2ludCB3aXRoIGN1cnJlbnQgZ3JvdW5kXG4gICAgY29uc3QgbmVhcmVzdFB0ID0gbmVhcmVzdFBvaW50T25MaW5lKGxpbmVTdHJpbmcoW2xhc3RQb2ludCwgYXBwcm94aW1hdGVQb2ludF0pLCBtYXBDb29yZHMpXG4gICAgICAuZ2VvbWV0cnkuY29vcmRpbmF0ZXM7XG4gICAgcmV0dXJuIG5lYXJlc3RQdDtcbiAgfVxuXG4gIGdldEd1aWRlcyhwcm9wczogTW9kZVByb3BzPEZlYXR1cmVDb2xsZWN0aW9uPik6IEd1aWRlRmVhdHVyZUNvbGxlY3Rpb24ge1xuICAgIGNvbnN0IGNsaWNrU2VxdWVuY2UgPSB0aGlzLmdldENsaWNrU2VxdWVuY2UoKTtcblxuICAgIGNvbnN0IGd1aWRlczogR3VpZGVGZWF0dXJlQ29sbGVjdGlvbiA9IHtcbiAgICAgIHR5cGU6ICdGZWF0dXJlQ29sbGVjdGlvbicsXG4gICAgICBmZWF0dXJlczogW10sXG4gICAgfTtcblxuICAgIGlmIChjbGlja1NlcXVlbmNlLmxlbmd0aCA9PT0gMCB8fCAhcHJvcHMubGFzdFBvaW50ZXJNb3ZlRXZlbnQpIHtcbiAgICAgIC8vIG5vdGhpbmcgdG8gZG8geWV0XG4gICAgICByZXR1cm4gZ3VpZGVzO1xuICAgIH1cblxuICAgIGNvbnN0IHsgbWFwQ29vcmRzIH0gPSBwcm9wcy5sYXN0UG9pbnRlck1vdmVFdmVudDtcblxuICAgIGd1aWRlcy5mZWF0dXJlcy5wdXNoKHtcbiAgICAgIHR5cGU6ICdGZWF0dXJlJyxcbiAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgZ3VpZGVUeXBlOiAndGVudGF0aXZlJyxcbiAgICAgIH0sXG4gICAgICBnZW9tZXRyeToge1xuICAgICAgICB0eXBlOiAnTGluZVN0cmluZycsXG4gICAgICAgIGNvb3JkaW5hdGVzOiBbLi4uY2xpY2tTZXF1ZW5jZSwgdGhpcy5jYWxjdWxhdGVNYXBDb29yZHMoY2xpY2tTZXF1ZW5jZSwgbWFwQ29vcmRzLCBwcm9wcyldLFxuICAgICAgfSxcbiAgICB9KTtcblxuICAgIHJldHVybiBndWlkZXM7XG4gIH1cblxuICBoYW5kbGVDbGljayhldmVudDogQ2xpY2tFdmVudCwgcHJvcHM6IE1vZGVQcm9wczxGZWF0dXJlQ29sbGVjdGlvbj4pIHtcbiAgICBjb25zdCB0ZW50YXRpdmVGZWF0dXJlID0gdGhpcy5nZXRUZW50YXRpdmVHdWlkZShwcm9wcyk7XG5cbiAgICBjb25zdCBzZWxlY3RlZEdlb21ldHJ5ID0gdGhpcy5nZXRTZWxlY3RlZEdlb21ldHJ5KHByb3BzKTtcblxuICAgIGlmICghc2VsZWN0ZWRHZW9tZXRyeSkge1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGUsbm8tdW5kZWZcbiAgICAgIGNvbnNvbGUud2FybignQSBwb2x5Z29uIG11c3QgYmUgc2VsZWN0ZWQgZm9yIHNwbGl0dGluZycpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGNsaWNrU2VxdWVuY2UgPSB0aGlzLmdldENsaWNrU2VxdWVuY2UoKTtcbiAgICBpZiAodGVudGF0aXZlRmVhdHVyZSAmJiB0ZW50YXRpdmVGZWF0dXJlLmdlb21ldHJ5LnR5cGUgPT09ICdMaW5lU3RyaW5nJykge1xuICAgICAgY2xpY2tTZXF1ZW5jZS5wdXNoKFxuICAgICAgICB0ZW50YXRpdmVGZWF0dXJlLmdlb21ldHJ5LmNvb3JkaW5hdGVzW3RlbnRhdGl2ZUZlYXR1cmUuZ2VvbWV0cnkuY29vcmRpbmF0ZXMubGVuZ3RoIC0gMV1cbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuYWRkQ2xpY2tTZXF1ZW5jZShldmVudCk7XG4gICAgfVxuXG4gICAgY29uc3QgcHQgPSB7XG4gICAgICB0eXBlOiAnUG9pbnQnLFxuICAgICAgY29vcmRpbmF0ZXM6IGNsaWNrU2VxdWVuY2VbY2xpY2tTZXF1ZW5jZS5sZW5ndGggLSAxXSxcbiAgICB9O1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBjb25zdCBpc1BvaW50SW5Qb2x5Z29uID0gYm9vbGVhblBvaW50SW5Qb2x5Z29uKHB0LCBzZWxlY3RlZEdlb21ldHJ5KTtcbiAgICBpZiAoY2xpY2tTZXF1ZW5jZS5sZW5ndGggPiAxICYmIHRlbnRhdGl2ZUZlYXR1cmUgJiYgIWlzUG9pbnRJblBvbHlnb24pIHtcbiAgICAgIHRoaXMucmVzZXRDbGlja1NlcXVlbmNlKCk7XG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICBjb25zdCBpc0xpbmVJbnRlcmVjdGluZ1dpdGhQb2x5Z29uID0gbGluZUludGVyc2VjdCh0ZW50YXRpdmVGZWF0dXJlLCBzZWxlY3RlZEdlb21ldHJ5KTtcbiAgICAgIGlmIChpc0xpbmVJbnRlcmVjdGluZ1dpdGhQb2x5Z29uLmZlYXR1cmVzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGVkaXRBY3Rpb24gPSB0aGlzLnNwbGl0UG9seWdvbih0ZW50YXRpdmVGZWF0dXJlLCBwcm9wcyk7XG5cbiAgICAgIGlmIChlZGl0QWN0aW9uKSB7XG4gICAgICAgIHByb3BzLm9uRWRpdChlZGl0QWN0aW9uKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBoYW5kbGVQb2ludGVyTW92ZShldmVudDogUG9pbnRlck1vdmVFdmVudCwgcHJvcHM6IE1vZGVQcm9wczxGZWF0dXJlQ29sbGVjdGlvbj4pIHtcbiAgICBwcm9wcy5vblVwZGF0ZUN1cnNvcignY2VsbCcpO1xuICB9XG5cbiAgc3BsaXRQb2x5Z29uKHRlbnRhdGl2ZUZlYXR1cmU6IFRlbnRhdGl2ZUZlYXR1cmUsIHByb3BzOiBNb2RlUHJvcHM8RmVhdHVyZUNvbGxlY3Rpb24+KSB7XG4gICAgY29uc3Qgc2VsZWN0ZWRHZW9tZXRyeSA9IHRoaXMuZ2V0U2VsZWN0ZWRHZW9tZXRyeShwcm9wcyk7XG4gICAgY29uc3QgZmVhdHVyZUluZGV4ID0gcHJvcHMuc2VsZWN0ZWRJbmRleGVzWzBdO1xuICAgIGNvbnN0IG1vZGVDb25maWcgPSBwcm9wcy5tb2RlQ29uZmlnIHx8IHt9O1xuXG4gICAgLy8gRGVmYXVsdCBnYXAgaW4gYmV0d2VlbiB0aGUgcG9seWdvblxuICAgIGxldCB7IGdhcCA9IDAuMSwgdW5pdHMgPSAnY2VudGltZXRlcnMnIH0gPSBtb2RlQ29uZmlnO1xuICAgIGlmIChnYXAgPT09IDApIHtcbiAgICAgIGdhcCA9IDAuMTtcbiAgICAgIHVuaXRzID0gJ2NlbnRpbWV0ZXJzJztcbiAgICB9XG5cbiAgICBjb25zdCBidWZmZXIgPSB0dXJmQnVmZmVyKHRlbnRhdGl2ZUZlYXR1cmUsIGdhcCwgeyB1bml0cyB9KTtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgY29uc3QgdXBkYXRlZEdlb21ldHJ5ID0gdHVyZkRpZmZlcmVuY2Uoc2VsZWN0ZWRHZW9tZXRyeSwgYnVmZmVyKTtcbiAgICBpZiAoIXVwZGF0ZWRHZW9tZXRyeSkge1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGUsbm8tdW5kZWZcbiAgICAgIGNvbnNvbGUud2FybignQ2FuY2VsaW5nIGVkaXQuIFNwbGl0IFBvbHlnb24gZXJhc2VkJyk7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBjb25zdCB7IHR5cGUsIGNvb3JkaW5hdGVzIH0gPSB1cGRhdGVkR2VvbWV0cnkuZ2VvbWV0cnk7XG4gICAgbGV0IHVwZGF0ZWRDb29yZGluYXRlcyA9IFtdO1xuICAgIGlmICh0eXBlID09PSAnUG9seWdvbicpIHtcbiAgICAgIC8vIFVwZGF0ZSB0aGUgY29vcmRpbmF0ZXMgYXMgcGVyIE11bHRpcG9seWdvblxuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgdXBkYXRlZENvb3JkaW5hdGVzID0gY29vcmRpbmF0ZXMubWFwKChjKSA9PiBbY10pO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBIYW5kbGUgQ2FzZSB3aGVuIE11bHRpcG9seWdvbiBoYXMgaG9sZXNcbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIHVwZGF0ZWRDb29yZGluYXRlcyA9IGNvb3JkaW5hdGVzLnJlZHVjZSgoYWdnLCBwcmV2KSA9PiB7XG4gICAgICAgIHByZXYuZm9yRWFjaCgocCkgPT4ge1xuICAgICAgICAgIGFnZy5wdXNoKFtwXSk7XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gYWdnO1xuICAgICAgfSwgW10pO1xuICAgIH1cblxuICAgIC8vIFVwZGF0ZSB0aGUgdHlwZSB0byBNdWxpdHBvbHlnb25cbiAgICBjb25zdCB1cGRhdGVkRGF0YSA9IG5ldyBJbW11dGFibGVGZWF0dXJlQ29sbGVjdGlvbihwcm9wcy5kYXRhKS5yZXBsYWNlR2VvbWV0cnkoZmVhdHVyZUluZGV4LCB7XG4gICAgICB0eXBlOiAnTXVsdGlQb2x5Z29uJyxcbiAgICAgIGNvb3JkaW5hdGVzOiB1cGRhdGVkQ29vcmRpbmF0ZXMsXG4gICAgfSk7XG5cbiAgICBjb25zdCBlZGl0QWN0aW9uOiBHZW9Kc29uRWRpdEFjdGlvbiA9IHtcbiAgICAgIHVwZGF0ZWREYXRhOiB1cGRhdGVkRGF0YS5nZXRPYmplY3QoKSxcbiAgICAgIGVkaXRUeXBlOiAnc3BsaXQnLFxuICAgICAgZWRpdENvbnRleHQ6IHtcbiAgICAgICAgZmVhdHVyZUluZGV4ZXM6IFtmZWF0dXJlSW5kZXhdLFxuICAgICAgfSxcbiAgICB9O1xuXG4gICAgcmV0dXJuIGVkaXRBY3Rpb247XG4gIH1cbn1cbiJdfQ==","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.ThreeClickPolygonMode = void 0;\n\nvar _geojsonEditMode = require(\"./geojson-edit-mode\");\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _get(target, property, receiver) { if (typeof Reflect !== \"undefined\" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return _get(target, property, receiver || target); }\n\nfunction _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; }\n\nfunction _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nvar ThreeClickPolygonMode = /*#__PURE__*/function (_GeoJsonEditMode) {\n  _inherits(ThreeClickPolygonMode, _GeoJsonEditMode);\n\n  var _super = _createSuper(ThreeClickPolygonMode);\n\n  function ThreeClickPolygonMode() {\n    _classCallCheck(this, ThreeClickPolygonMode);\n\n    return _super.apply(this, arguments);\n  }\n\n  _createClass(ThreeClickPolygonMode, [{\n    key: \"handleClick\",\n    value: function handleClick(event, props) {\n      this.addClickSequence(event);\n      var clickSequence = this.getClickSequence();\n      var tentativeFeature = this.getTentativeGuide(props);\n\n      if (clickSequence.length > 2 && tentativeFeature && tentativeFeature.geometry.type === 'Polygon') {\n        var editAction = this.getAddFeatureOrBooleanPolygonAction(tentativeFeature.geometry, props);\n        this.resetClickSequence();\n\n        if (editAction) {\n          props.onEdit(editAction);\n        }\n      }\n    }\n  }, {\n    key: \"getGuides\",\n    value: function getGuides(props) {\n      var lastPointerMoveEvent = props.lastPointerMoveEvent,\n          modeConfig = props.modeConfig;\n      var clickSequence = this.getClickSequence();\n      var guides = {\n        type: 'FeatureCollection',\n        features: []\n      };\n\n      if (clickSequence.length === 0) {\n        // nothing to do yet\n        return guides;\n      }\n\n      var hoveredCoord = lastPointerMoveEvent.mapCoords;\n\n      if (clickSequence.length === 1) {\n        guides.features.push({\n          type: 'Feature',\n          properties: {\n            guideType: 'tentative'\n          },\n          geometry: {\n            type: 'LineString',\n            coordinates: [clickSequence[0], hoveredCoord]\n          }\n        });\n      } else {\n        var polygon = this.getThreeClickPolygon(clickSequence[0], clickSequence[1], hoveredCoord, modeConfig);\n\n        if (polygon) {\n          guides.features.push({\n            type: 'Feature',\n            properties: {\n              guideType: 'tentative'\n            },\n            geometry: polygon.geometry\n          });\n        }\n      }\n\n      return guides;\n    }\n  }, {\n    key: \"getThreeClickPolygon\",\n    value: function getThreeClickPolygon(coord1, coord2, coord3, modeConfig) {\n      return null;\n    }\n  }, {\n    key: \"handlePointerMove\",\n    value: function handlePointerMove(event, props) {\n      props.onUpdateCursor('cell');\n\n      _get(_getPrototypeOf(ThreeClickPolygonMode.prototype), \"handlePointerMove\", this).call(this, event, props);\n    }\n  }, {\n    key: \"createTentativeFeature\",\n    value: function createTentativeFeature(props) {\n      var lastPointerMoveEvent = props.lastPointerMoveEvent;\n      var clickSequence = this.getClickSequence();\n      var lastCoords = lastPointerMoveEvent ? [lastPointerMoveEvent.mapCoords] : [];\n      var tentativeFeature;\n\n      if (clickSequence.length === 2) {\n        tentativeFeature = this.getThreeClickPolygon(clickSequence[0], clickSequence[1], lastCoords[0], props.modeConfig);\n      }\n\n      return tentativeFeature;\n    }\n  }]);\n\n  return ThreeClickPolygonMode;\n}(_geojsonEditMode.GeoJsonEditMode);\n\nexports.ThreeClickPolygonMode = ThreeClickPolygonMode;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvdGhyZWUtY2xpY2stcG9seWdvbi1tb2RlLnRzIl0sIm5hbWVzIjpbIlRocmVlQ2xpY2tQb2x5Z29uTW9kZSIsImV2ZW50IiwicHJvcHMiLCJhZGRDbGlja1NlcXVlbmNlIiwiY2xpY2tTZXF1ZW5jZSIsImdldENsaWNrU2VxdWVuY2UiLCJ0ZW50YXRpdmVGZWF0dXJlIiwiZ2V0VGVudGF0aXZlR3VpZGUiLCJsZW5ndGgiLCJnZW9tZXRyeSIsInR5cGUiLCJlZGl0QWN0aW9uIiwiZ2V0QWRkRmVhdHVyZU9yQm9vbGVhblBvbHlnb25BY3Rpb24iLCJyZXNldENsaWNrU2VxdWVuY2UiLCJvbkVkaXQiLCJsYXN0UG9pbnRlck1vdmVFdmVudCIsIm1vZGVDb25maWciLCJndWlkZXMiLCJmZWF0dXJlcyIsImhvdmVyZWRDb29yZCIsIm1hcENvb3JkcyIsInB1c2giLCJwcm9wZXJ0aWVzIiwiZ3VpZGVUeXBlIiwiY29vcmRpbmF0ZXMiLCJwb2x5Z29uIiwiZ2V0VGhyZWVDbGlja1BvbHlnb24iLCJjb29yZDEiLCJjb29yZDIiLCJjb29yZDMiLCJvblVwZGF0ZUN1cnNvciIsImxhc3RDb29yZHMiLCJHZW9Kc29uRWRpdE1vZGUiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFRQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQUVhQSxxQjs7Ozs7Ozs7Ozs7OztnQ0FDQ0MsSyxFQUFtQkMsSyxFQUFxQztBQUNsRSxXQUFLQyxnQkFBTCxDQUFzQkYsS0FBdEI7QUFDQSxVQUFNRyxhQUFhLEdBQUcsS0FBS0MsZ0JBQUwsRUFBdEI7QUFDQSxVQUFNQyxnQkFBZ0IsR0FBRyxLQUFLQyxpQkFBTCxDQUF1QkwsS0FBdkIsQ0FBekI7O0FBRUEsVUFDRUUsYUFBYSxDQUFDSSxNQUFkLEdBQXVCLENBQXZCLElBQ0FGLGdCQURBLElBRUFBLGdCQUFnQixDQUFDRyxRQUFqQixDQUEwQkMsSUFBMUIsS0FBbUMsU0FIckMsRUFJRTtBQUNBLFlBQU1DLFVBQVUs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ImltcG9ydCB7XG4gIENsaWNrRXZlbnQsXG4gIFBvaW50ZXJNb3ZlRXZlbnQsXG4gIE1vZGVQcm9wcyxcbiAgR3VpZGVGZWF0dXJlQ29sbGVjdGlvbixcbiAgVGVudGF0aXZlRmVhdHVyZSxcbn0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHsgUG9zaXRpb24sIFBvbHlnb24sIEZlYXR1cmVPZiwgRmVhdHVyZUNvbGxlY3Rpb24gfSBmcm9tICcuLi9nZW9qc29uLXR5cGVzJztcbmltcG9ydCB7IEdlb0pzb25FZGl0TW9kZSB9IGZyb20gJy4vZ2VvanNvbi1lZGl0LW1vZGUnO1xuXG5leHBvcnQgY2xhc3MgVGhyZWVDbGlja1BvbHlnb25Nb2RlIGV4dGVuZHMgR2VvSnNvbkVkaXRNb2RlIHtcbiAgaGFuZGxlQ2xpY2soZXZlbnQ6IENsaWNrRXZlbnQsIHByb3BzOiBNb2RlUHJvcHM8RmVhdHVyZUNvbGxlY3Rpb24+KSB7XG4gICAgdGhpcy5hZGRDbGlja1NlcXVlbmNlKGV2ZW50KTtcbiAgICBjb25zdCBjbGlja1NlcXVlbmNlID0gdGhpcy5nZXRDbGlja1NlcXVlbmNlKCk7XG4gICAgY29uc3QgdGVudGF0aXZlRmVhdHVyZSA9IHRoaXMuZ2V0VGVudGF0aXZlR3VpZGUocHJvcHMpO1xuXG4gICAgaWYgKFxuICAgICAgY2xpY2tTZXF1ZW5jZS5sZW5ndGggPiAyICYmXG4gICAgICB0ZW50YXRpdmVGZWF0dXJlICYmXG4gICAgICB0ZW50YXRpdmVGZWF0dXJlLmdlb21ldHJ5LnR5cGUgPT09ICdQb2x5Z29uJ1xuICAgICkge1xuICAgICAgY29uc3QgZWRpdEFjdGlvbiA9IHRoaXMuZ2V0QWRkRmVhdHVyZU9yQm9vbGVhblBvbHlnb25BY3Rpb24odGVudGF0aXZlRmVhdHVyZS5nZW9tZXRyeSwgcHJvcHMpO1xuICAgICAgdGhpcy5yZXNldENsaWNrU2VxdWVuY2UoKTtcblxuICAgICAgaWYgKGVkaXRBY3Rpb24pIHtcbiAgICAgICAgcHJvcHMub25FZGl0KGVkaXRBY3Rpb24pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGdldEd1aWRlcyhwcm9wczogTW9kZVByb3BzPEZlYXR1cmVDb2xsZWN0aW9uPik6IEd1aWRlRmVhdHVyZUNvbGxlY3Rpb24ge1xuICAgIGNvbnN0IHsgbGFzdFBvaW50ZXJNb3ZlRXZlbnQsIG1vZGVDb25maWcgfSA9IHByb3BzO1xuICAgIGNvbnN0IGNsaWNrU2VxdWVuY2UgPSB0aGlzLmdldENsaWNrU2VxdWVuY2UoKTtcblxuICAgIGNvbnN0IGd1aWRlczogR3VpZGVGZWF0dXJlQ29sbGVjdGlvbiA9IHtcbiAgICAgIHR5cGU6ICdGZWF0dXJlQ29sbGVjdGlvbicsXG4gICAgICBmZWF0dXJlczogW10sXG4gICAgfTtcblxuICAgIGlmIChjbGlja1NlcXVlbmNlLmxlbmd0aCA9PT0gMCkge1xuICAgICAgLy8gbm90aGluZyB0byBkbyB5ZXRcbiAgICAgIHJldHVybiBndWlkZXM7XG4gICAgfVxuXG4gICAgY29uc3QgaG92ZXJlZENvb3JkID0gbGFzdFBvaW50ZXJNb3ZlRXZlbnQubWFwQ29vcmRzO1xuXG4gICAgaWYgKGNsaWNrU2VxdWVuY2UubGVuZ3RoID09PSAxKSB7XG4gICAgICBndWlkZXMuZmVhdHVyZXMucHVzaCh7XG4gICAgICAgIHR5cGU6ICdGZWF0dXJlJyxcbiAgICAgICAgcHJvcGVydGllczoge1xuICAgICAgICAgIGd1aWRlVHlwZTogJ3RlbnRhdGl2ZScsXG4gICAgICAgIH0sXG4gICAgICAgIGdlb21ldHJ5OiB7XG4gICAgICAgICAgdHlwZTogJ0xpbmVTdHJpbmcnLFxuICAgICAgICAgIGNvb3JkaW5hdGVzOiBbY2xpY2tTZXF1ZW5jZVswXSwgaG92ZXJlZENvb3JkXSxcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBwb2x5Z29uID0gdGhpcy5nZXRUaHJlZUNsaWNrUG9seWdvbihcbiAgICAgICAgY2xpY2tTZXF1ZW5jZVswXSxcbiAgICAgICAgY2xpY2tTZXF1ZW5jZVsxXSxcbiAgICAgICAgaG92ZXJlZENvb3JkLFxuICAgICAgICBtb2RlQ29uZmlnXG4gICAgICApO1xuICAgICAgaWYgKHBvbHlnb24pIHtcbiAgICAgICAgZ3VpZGVzLmZlYXR1cmVzLnB1c2goe1xuICAgICAgICAgIHR5cGU6ICdGZWF0dXJlJyxcbiAgICAgICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgICBndWlkZVR5cGU6ICd0ZW50YXRpdmUnLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgZ2VvbWV0cnk6IHBvbHlnb24uZ2VvbWV0cnksXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBndWlkZXM7XG4gIH1cblxuICBnZXRUaHJlZUNsaWNrUG9seWdvbihcbiAgICBjb29yZDE6IFBvc2l0aW9uLFxuICAgIGNvb3JkMjogUG9zaXRpb24sXG4gICAgY29vcmQzOiBQb3NpdGlvbixcbiAgICBtb2RlQ29uZmlnOiBhbnlcbiAgKTogRmVhdHVyZU9mPFBvbHlnb24+IHwgbnVsbCB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBoYW5kbGVQb2ludGVyTW92ZShldmVudDogUG9pbnRlck1vdmVFdmVudCwgcHJvcHM6IE1vZGVQcm9wczxGZWF0dXJlQ29sbGVjdGlvbj4pIHtcbiAgICBwcm9wcy5vblVwZGF0ZUN1cnNvcignY2VsbCcpO1xuICAgIHN1cGVyLmhhbmRsZVBvaW50ZXJNb3ZlKGV2ZW50LCBwcm9wcyk7XG4gIH1cblxuICBjcmVhdGVUZW50YXRpdmVGZWF0dXJlKHByb3BzOiBNb2RlUHJvcHM8RmVhdHVyZUNvbGxlY3Rpb24+KTogVGVudGF0aXZlRmVhdHVyZSB7XG4gICAgY29uc3QgeyBsYXN0UG9pbnRlck1vdmVFdmVudCB9ID0gcHJvcHM7XG4gICAgY29uc3QgY2xpY2tTZXF1ZW5jZSA9IHRoaXMuZ2V0Q2xpY2tTZXF1ZW5jZSgpO1xuXG4gICAgY29uc3QgbGFzdENvb3JkcyA9IGxhc3RQb2ludGVyTW92ZUV2ZW50ID8gW2xhc3RQb2ludGVyTW92ZUV2ZW50Lm1hcENvb3Jkc10gOiBbXTtcblxuICAgIGxldCB0ZW50YXRpdmVGZWF0dXJlO1xuICAgIGlmIChjbGlja1NlcXVlbmNlLmxlbmd0aCA9PT0gMikge1xuICAgICAgdGVudGF0aXZlRmVhdHVyZSA9IHRoaXMuZ2V0VGhyZWVDbGlja1BvbHlnb24oXG4gICAgICAgIGNsaWNrU2VxdWVuY2VbMF0sXG4gICAgICAgIGNsaWNrU2VxdWVuY2VbMV0sXG4gICAgICAgIGxhc3RDb29yZHNbMF0sXG4gICAgICAgIHByb3BzLm1vZGVDb25maWdcbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRlbnRhdGl2ZUZlYXR1cmU7XG4gIH1cbn1cbiJdfQ==","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.TransformMode = void 0;\n\nvar _helpers = require(\"@turf/helpers\");\n\nvar _translateMode = require(\"./translate-mode\");\n\nvar _scaleMode = require(\"./scale-mode\");\n\nvar _rotateMode = require(\"./rotate-mode\");\n\nvar _compositeMode = require(\"./composite-mode\");\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _get(target, property, receiver) { if (typeof Reflect !== \"undefined\" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return _get(target, property, receiver || target); }\n\nfunction _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; }\n\nfunction _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nvar TransformMode = /*#__PURE__*/function (_CompositeMode) {\n  _inherits(TransformMode, _CompositeMode);\n\n  var _super = _createSuper(TransformMode);\n\n  function TransformMode() {\n    _classCallCheck(this, TransformMode);\n\n    return _super.call(this, [new _translateMode.TranslateMode(), new _scaleMode.ScaleMode(), new _rotateMode.RotateMode()]);\n  }\n\n  _createClass(TransformMode, [{\n    key: \"handlePointerMove\",\n    value: function handlePointerMove(event, props) {\n      var updatedCursor = null;\n\n      _get(_getPrototypeOf(TransformMode.prototype), \"handlePointerMove\", this).call(this, event, _objectSpread({}, props, {\n        onUpdateCursor: function onUpdateCursor(cursor) {\n          updatedCursor = cursor || updatedCursor;\n        }\n      }));\n\n      props.onUpdateCursor(updatedCursor);\n    }\n  }, {\n    key: \"handleStartDragging\",\n    value: function handleStartDragging(event, props) {\n      var scaleMode = null;\n      var translateMode = null;\n      var filteredModes = []; // If the user selects a scaling edit handle that overlaps with part of the selected feature,\n      // it is possible for both scale and translate actions to be triggered. This logic prevents\n      // this simultaneous action trigger from happening by putting a higher priority on scaling\n      // since the user needs to be more precise to hover over a scaling edit handle.\n\n      this._modes.forEach(function (mode) {\n        if (mode instanceof _translateMode.TranslateMode) {\n          translateMode = mode;\n        } else {\n          if (mode instanceof _scaleMode.ScaleMode) {\n            scaleMode = mode;\n          }\n\n          filteredModes.push(mode);\n        }\n      });\n\n      if (scaleMode instanceof _scaleMode.ScaleMode && !scaleMode.isEditHandleSelected()) {\n        filteredModes.push(translateMode);\n      }\n\n      filteredModes.filter(Boolean).forEach(function (mode) {\n        return mode.handleStartDragging(event, props);\n      });\n    }\n  }, {\n    key: \"getGuides\",\n    value: function getGuides(props) {\n      var compositeGuides = _get(_getPrototypeOf(TransformMode.prototype), \"getGuides\", this).call(this, props);\n\n      var rotateMode = (this._modes || []).find(function (mode) {\n        return mode instanceof _rotateMode.RotateMode;\n      });\n\n      if (rotateMode instanceof _rotateMode.RotateMode) {\n        var nonEnvelopeGuides = compositeGuides.features.filter(function (guide) {\n          var _ref = guide.properties || {},\n              editHandleType = _ref.editHandleType,\n              mode = _ref.mode; // Both scale and rotate modes have the same enveloping box as a guide - only need one\n\n\n          var guidesToFilterOut = [mode]; // Do not render scaling edit handles if rotating\n\n          if (rotateMode.getIsRotating()) {\n            guidesToFilterOut.push(editHandleType);\n          }\n\n          return !guidesToFilterOut.includes('scale');\n        }); // @ts-ignore\n\n        compositeGuides = (0, _helpers.featureCollection)(nonEnvelopeGuides);\n      }\n\n      return compositeGuides;\n    }\n  }]);\n\n  return TransformMode;\n}(_compositeMode.CompositeMode);\n\nexports.TransformMode = TransformMode;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvdHJhbnNmb3JtLW1vZGUudHMiXSwibmFtZXMiOlsiVHJhbnNmb3JtTW9kZSIsIlRyYW5zbGF0ZU1vZGUiLCJTY2FsZU1vZGUiLCJSb3RhdGVNb2RlIiwiZXZlbnQiLCJwcm9wcyIsInVwZGF0ZWRDdXJzb3IiLCJvblVwZGF0ZUN1cnNvciIsImN1cnNvciIsInNjYWxlTW9kZSIsInRyYW5zbGF0ZU1vZGUiLCJmaWx0ZXJlZE1vZGVzIiwiX21vZGVzIiwiZm9yRWFjaCIsIm1vZGUiLCJwdXNoIiwiaXNFZGl0SGFuZGxlU2VsZWN0ZWQiLCJmaWx0ZXIiLCJCb29sZWFuIiwiaGFuZGxlU3RhcnREcmFnZ2luZyIsImNvbXBvc2l0ZUd1aWRlcyIsInJvdGF0ZU1vZGUiLCJmaW5kIiwibm9uRW52ZWxvcGVHdWlkZXMiLCJmZWF0dXJlcyIsImd1aWRlIiwicHJvcGVydGllcyIsImVkaXRIYW5kbGVUeXBlIiwiZ3VpZGVzVG9GaWx0ZXJPdXQiLCJnZXRJc1JvdGF0aW5nIiwiaW5jbHVkZXMiLCJDb21wb3NpdGVNb2RlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUE7O0FBR0E7O0FBQ0E7O0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUFFYUEsYTs7Ozs7QUFDWCwyQkFBYztBQUFBOztBQUFBLDZCQUNOLENBQUMsSUFBSUMsNEJBQUosRUFBRCxFQUFzQixJQUFJQyxvQkFBSixFQUF0QixFQUF1QyxJQUFJQyxzQkFBSixFQUF2QyxDQURNO0FBRWI7Ozs7c0NBRWlCQyxLLEVBQXlCQyxLLEVBQXFDO0FBQzlFLFVBQUlDLGFBQWEsR0FBRyxJQUFwQjs7QUFDQSwyRkFBd0JGLEtBQXhCLG9CQUNLQyxLQURMO0FBRUVFLFFBQUFBLGNBQWMsRUFBRSx3QkFBQ0MsTUFBRCxFQUFZO0FBQzFCRixVQUFBQSxhQUFhLEdBQUdFLE1BQU0sSUFBSUYsYUFBMUI7QUFDRDtBQUpIOztBQU1BRCxNQUFBQSxLQUFLLENBQUNFLGNBQU4sQ0FBcUJELGFBQXJCO0FBQ0Q7Ozt3Q0FFbUJGLEssRUFBMkJDLEssRUFBcUM7QUFDbEYsVUFBSUksU0FBUyxHQUFHLElBQWhCO0FBQ0EsVUFBSUMsYUFBYSxHQUFHLElBQXBCO0FBQ0EsVUFBTUMsYUFBYSxHQUFHLEVBQXRCLENBSGtGLENBS2xGO0FBQ0E7QUFDQTtBQUNBOztBQUNBLFdBQUtDLE1BQUwsQ0FBWUMsT0FBWixDQUFvQixVQUFDQyxJQUFELEVBQVU7QUFDNUIsWUFBSUEsSUFBSSxZQUFZYiw0QkFBcEIsRUFBbUM7QUFDakNTLFVBQUFBLGFBQWEsR0FBR0ksSUFBaEI7QUFDRCxTQUZELE1BRU87QUFDTCxjQUFJQSxJQUFJLFlBQVlaLG9CQUFwQixFQUErQjtBQUM3Qk8sWUFBQUEsU0FBUyxHQUFHSyxJQUFaO0FBQ0Q7O0FBQ0RILFVBQUFBLGFBQWEsQ0FBQ0ksSUFBZCxDQUFtQkQsSUFBbkI7QUFDRDtBQUNGLE9BVEQ7O0FBV0EsVUFBSUwsU0FBUyxZQUFZUCxvQkFBckIsSUFBa0MsQ0FBQ08sU0FBUyxDQUFDTyxvQkFBVixFQUF2QyxFQUF5RTtBQUN2RUwsUUFBQUEsYUFBYSxDQUFDSSxJQUFkLENBQW1CTCxhQUFuQjtBQUNEOztBQUVEQyxNQUFBQSxhQUFhLENBQUNNLE1BQWQsQ0FBcUJDLE9BQXJCLEVBQThCTCxPQUE5QixDQUFzQyxVQUFDQyxJQUFEO0FBQUEsZUFBVUEsSUFBSSxDQUFDSyxtQkFBTCxDQUF5QmYsS0FBekIsRUFBZ0NDLEtBQWhDLENBQVY7QUFBQSxPQUF0QztBQUNEOzs7OEJBRVNBLEssRUFBcUM7QUFDN0MsVUFBSWUsZUFBZSxnRkFBbUJmLEtBQW5CLENBQW5COztBQUNBLFVBQU1nQixVQUFVLEdBQUcsQ0FBQyxLQUFLVCxNQUFMLElBQWUsRUFBaEIsRUFBb0JVLElBQXBCLENBQXlCLFVBQUNSLElBQUQ7QUFBQSxlQUFVQSxJQUFJLFlBQVlYLHNCQUExQjtBQUFBLE9BQXpCLENBQW5COztBQUVBLFVBQUlrQixVQUFVLFlBQVlsQixzQkFBMUIsRUFBc0M7QUFDcEMsWUFBTW9CLGlCQUFpQixHQUFHSCxlQUFlLENBQUNJLFFBQWhCLENBQXlCUCxNQUF6QixDQUFnQyxVQUFDUSxLQUFELEVBQVc7QUFBQSxxQkFDakNBLEtBQUssQ0FBQ0MsVUFBUCxJQUE2QixFQURLO0FBQUEsY0FDM0RDLGNBRDJELFFBQzNEQSxjQUQyRDtBQUFBLGNBQzNDYixJQUQyQyxRQUMzQ0EsSUFEMkMsRUFFbkU7OztBQUNBLGNBQU1jLGlCQUFpQixHQUFHLENBQUNkLElBQUQsQ0FBMUIsQ0FIbUUsQ0FJbkU7O0FBQ0EsY0FBSU8sVUFBVSxDQUFDUSxhQUFYLEVBQUosRUFBZ0M7QUFDOUJELFlBQUFBLGlCQUFpQixDQUFDYixJQUFsQixDQUF1QlksY0FBdkI7QUFDRDs7QUFDRCxpQkFBTyxDQUFDQyxpQkFBaUIsQ0FBQ0UsUUFBbEIsQ0FBMkIsT0FBM0IsQ0FBUjtBQUNELFNBVHlCLENBQTFCLENBRG9DLENBV3BDOztBQUNBVixRQUFBQSxlQUFlLEdBQUcsZ0NBQWtCRyxpQkFBbEIsQ0FBbEI7QUFDRDs7QUFDRCxhQUFPSCxlQUFQO0FBQ0Q7Ozs7RUE5RGdDVyw0QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGZlYXR1cmVDb2xsZWN0aW9uIH0gZnJvbSAnQHR1cmYvaGVscGVycyc7XG5pbXBvcnQgeyBQb2ludGVyTW92ZUV2ZW50LCBNb2RlUHJvcHMsIFN0YXJ0RHJhZ2dpbmdFdmVudCB9IGZyb20gJy4uL3R5cGVzJztcbmltcG9ydCB7IEZlYXR1cmVDb2xsZWN0aW9uIH0gZnJvbSAnLi4vZ2VvanNvbi10eXBlcyc7XG5pbXBvcnQgeyBUcmFuc2xhdGVNb2RlIH0gZnJvbSAnLi90cmFuc2xhdGUtbW9kZSc7XG5pbXBvcnQgeyBTY2FsZU1vZGUgfSBmcm9tICcuL3NjYWxlLW1vZGUnO1xuaW1wb3J0IHsgUm90YXRlTW9kZSB9IGZyb20gJy4vcm90YXRlLW1vZGUnO1xuXG5pbXBvcnQgeyBDb21wb3NpdGVNb2RlIH0gZnJvbSAnLi9jb21wb3NpdGUtbW9kZSc7XG5cbmV4cG9ydCBjbGFzcyBUcmFuc2Zvcm1Nb2RlIGV4dGVuZHMgQ29tcG9zaXRlTW9kZSB7XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKFtuZXcgVHJhbnNsYXRlTW9kZSgpLCBuZXcgU2NhbGVNb2RlKCksIG5ldyBSb3RhdGVNb2RlKCldKTtcbiAgfVxuXG4gIGhhbmRsZVBvaW50ZXJNb3ZlKGV2ZW50OiBQb2ludGVyTW92ZUV2ZW50LCBwcm9wczogTW9kZVByb3BzPEZlYXR1cmVDb2xsZWN0aW9uPikge1xuICAgIGxldCB1cGRhdGVkQ3Vyc29yID0gbnVsbDtcbiAgICBzdXBlci5oYW5kbGVQb2ludGVyTW92ZShldmVudCwge1xuICAgICAgLi4ucHJvcHMsXG4gICAgICBvblVwZGF0ZUN1cnNvcjogKGN1cnNvcikgPT4ge1xuICAgICAgICB1cGRhdGVkQ3Vyc29yID0gY3Vyc29yIHx8IHVwZGF0ZWRDdXJzb3I7XG4gICAgICB9LFxuICAgIH0pO1xuICAgIHByb3BzLm9uVXBkYXRlQ3Vyc29yKHVwZGF0ZWRDdXJzb3IpO1xuICB9XG5cbiAgaGFuZGxlU3RhcnREcmFnZ2luZyhldmVudDogU3RhcnREcmFnZ2luZ0V2ZW50LCBwcm9wczogTW9kZVByb3BzPEZlYXR1cmVDb2xsZWN0aW9uPikge1xuICAgIGxldCBzY2FsZU1vZGUgPSBudWxsO1xuICAgIGxldCB0cmFuc2xhdGVNb2RlID0gbnVsbDtcbiAgICBjb25zdCBmaWx0ZXJlZE1vZGVzID0gW107XG5cbiAgICAvLyBJZiB0aGUgdXNlciBzZWxlY3RzIGEgc2NhbGluZyBlZGl0IGhhbmRsZSB0aGF0IG92ZXJsYXBzIHdpdGggcGFydCBvZiB0aGUgc2VsZWN0ZWQgZmVhdHVyZSxcbiAgICAvLyBpdCBpcyBwb3NzaWJsZSBmb3IgYm90aCBzY2FsZSBhbmQgdHJhbnNsYXRlIGFjdGlvbnMgdG8gYmUgdHJpZ2dlcmVkLiBUaGlzIGxvZ2ljIHByZXZlbnRzXG4gICAgLy8gdGhpcyBzaW11bHRhbmVvdXMgYWN0aW9uIHRyaWdnZXIgZnJvbSBoYXBwZW5pbmcgYnkgcHV0dGluZyBhIGhpZ2hlciBwcmlvcml0eSBvbiBzY2FsaW5nXG4gICAgLy8gc2luY2UgdGhlIHVzZXIgbmVlZHMgdG8gYmUgbW9yZSBwcmVjaXNlIHRvIGhvdmVyIG92ZXIgYSBzY2FsaW5nIGVkaXQgaGFuZGxlLlxuICAgIHRoaXMuX21vZGVzLmZvckVhY2goKG1vZGUpID0+IHtcbiAgICAgIGlmIChtb2RlIGluc3RhbmNlb2YgVHJhbnNsYXRlTW9kZSkge1xuICAgICAgICB0cmFuc2xhdGVNb2RlID0gbW9kZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChtb2RlIGluc3RhbmNlb2YgU2NhbGVNb2RlKSB7XG4gICAgICAgICAgc2NhbGVNb2RlID0gbW9kZTtcbiAgICAgICAgfVxuICAgICAgICBmaWx0ZXJlZE1vZGVzLnB1c2gobW9kZSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBpZiAoc2NhbGVNb2RlIGluc3RhbmNlb2YgU2NhbGVNb2RlICYmICFzY2FsZU1vZGUuaXNFZGl0SGFuZGxlU2VsZWN0ZWQoKSkge1xuICAgICAgZmlsdGVyZWRNb2Rlcy5wdXNoKHRyYW5zbGF0ZU1vZGUpO1xuICAgIH1cblxuICAgIGZpbHRlcmVkTW9kZXMuZmlsdGVyKEJvb2xlYW4pLmZvckVhY2goKG1vZGUpID0+IG1vZGUuaGFuZGxlU3RhcnREcmFnZ2luZyhldmVudCwgcHJvcHMpKTtcbiAgfVxuXG4gIGdldEd1aWRlcyhwcm9wczogTW9kZVByb3BzPEZlYXR1cmVDb2xsZWN0aW9uPikge1xuICAgIGxldCBjb21wb3NpdGVHdWlkZXMgPSBzdXBlci5nZXRHdWlkZXMocHJvcHMpO1xuICAgIGNvbnN0IHJvdGF0ZU1vZGUgPSAodGhpcy5fbW9kZXMgfHwgW10pLmZpbmQoKG1vZGUpID0+IG1vZGUgaW5zdGFuY2VvZiBSb3RhdGVNb2RlKTtcblxuICAgIGlmIChyb3RhdGVNb2RlIGluc3RhbmNlb2YgUm90YXRlTW9kZSkge1xuICAgICAgY29uc3Qgbm9uRW52ZWxvcGVHdWlkZXMgPSBjb21wb3NpdGVHdWlkZXMuZmVhdHVyZXMuZmlsdGVyKChndWlkZSkgPT4ge1xuICAgICAgICBjb25zdCB7IGVkaXRIYW5kbGVUeXBlLCBtb2RlIH0gPSAoZ3VpZGUucHJvcGVydGllcyBhcyBhbnkpIHx8IHt9O1xuICAgICAgICAvLyBCb3RoIHNjYWxlIGFuZCByb3RhdGUgbW9kZXMgaGF2ZSB0aGUgc2FtZSBlbnZlbG9waW5nIGJveCBhcyBhIGd1aWRlIC0gb25seSBuZWVkIG9uZVxuICAgICAgICBjb25zdCBndWlkZXNUb0ZpbHRlck91dCA9IFttb2RlXTtcbiAgICAgICAgLy8gRG8gbm90IHJlbmRlciBzY2FsaW5nIGVkaXQgaGFuZGxlcyBpZiByb3RhdGluZ1xuICAgICAgICBpZiAocm90YXRlTW9kZS5nZXRJc1JvdGF0aW5nKCkpIHtcbiAgICAgICAgICBndWlkZXNUb0ZpbHRlck91dC5wdXNoKGVkaXRIYW5kbGVUeXBlKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gIWd1aWRlc1RvRmlsdGVyT3V0LmluY2x1ZGVzKCdzY2FsZScpO1xuICAgICAgfSk7XG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICBjb21wb3NpdGVHdWlkZXMgPSBmZWF0dXJlQ29sbGVjdGlvbihub25FbnZlbG9wZUd1aWRlcyk7XG4gICAgfVxuICAgIHJldHVybiBjb21wb3NpdGVHdWlkZXM7XG4gIH1cbn1cbiJdfQ==","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.TranslateMode = void 0;\n\nvar _bearing = _interopRequireDefault(require(\"@turf/bearing\"));\n\nvar _distance = _interopRequireDefault(require(\"@turf/distance\"));\n\nvar _transformTranslate = _interopRequireDefault(require(\"@turf/transform-translate\"));\n\nvar _helpers = require(\"@turf/helpers\");\n\nvar _viewportMercatorProject = _interopRequireDefault(require(\"viewport-mercator-project\"));\n\nvar _utils = require(\"../utils\");\n\nvar _geojsonEditMode = require(\"./geojson-edit-mode\");\n\nvar _immutableFeatureCollection = require(\"./immutable-feature-collection\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar TranslateMode = /*#__PURE__*/function (_GeoJsonEditMode) {\n  _inherits(TranslateMode, _GeoJsonEditMode);\n\n  var _super = _createSuper(TranslateMode);\n\n  function TranslateMode() {\n    var _this;\n\n    _classCallCheck(this, TranslateMode);\n\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    _this = _super.call.apply(_super, [this].concat(args));\n\n    _defineProperty(_assertThisInitialized(_this), \"_geometryBeforeTranslate\", void 0);\n\n    _defineProperty(_assertThisInitialized(_this), \"_isTranslatable\", void 0);\n\n    return _this;\n  }\n\n  _createClass(TranslateMode, [{\n    key: \"handleDragging\",\n    value: function handleDragging(event, props) {\n      if (!this._isTranslatable) {\n        // Nothing to do\n        return;\n      }\n\n      if (this._geometryBeforeTranslate) {\n        // Translate the geometry\n        var editAction = this.getTranslateAction(event.pointerDownMapCoords, event.mapCoords, 'translating', props);\n\n        if (editAction) {\n          props.onEdit(editAction);\n        }\n      } // cancel map panning\n\n\n      event.cancelPan();\n    }\n  }, {\n    key: \"handlePointerMove\",\n    value: function handlePointerMove(event, props) {\n      this._isTranslatable = this.isSelectionPicked(event.pointerDownPicks || event.picks, props);\n      this.updateCursor(props);\n    }\n  }, {\n    key: \"handleStartDragging\",\n    value: function handleStartDragging(event, props) {\n      if (!this._isTranslatable) {\n        return;\n      }\n\n      this._geometryBeforeTranslate = this.getSelectedFeaturesAsFeatureCollection(props);\n    }\n  }, {\n    key: \"handleStopDragging\",\n    value: function handleStopDragging(event, props) {\n      if (this._geometryBeforeTranslate) {\n        // Translate the geometry\n        var editAction = this.getTranslateAction(event.pointerDownMapCoords, event.mapCoords, 'translated', props);\n\n        if (editAction) {\n          props.onEdit(editAction);\n        }\n\n        this._geometryBeforeTranslate = null;\n      }\n    }\n  }, {\n    key: \"updateCursor\",\n    value: function updateCursor(props) {\n      if (this._isTranslatable) {\n        props.onUpdateCursor('move');\n      } else {\n        props.onUpdateCursor(null);\n      }\n    }\n  }, {\n    key: \"getTranslateAction\",\n    value: function getTranslateAction(startDragPoint, currentPoint, editType, props) {\n      var _this2 = this;\n\n      if (!this._geometryBeforeTranslate) {\n        return null;\n      }\n\n      var updatedData = new _immutableFeatureCollection.ImmutableFeatureCollection(props.data);\n      var selectedIndexes = props.selectedIndexes;\n\n      var _ref = props.modeConfig || {},\n          viewportDesc = _ref.viewport,\n          screenSpace = _ref.screenSpace;\n\n      if (viewportDesc && screenSpace) {\n        (function () {\n          var viewport = viewportDesc.project ? viewportDesc : new _viewportMercatorProject[\"default\"](viewportDesc);\n          var from = viewport.project(startDragPoint);\n          var to = viewport.project(currentPoint);\n          var dx = to[0] - from[0];\n          var dy = to[1] - from[1];\n\n          for (var i = 0; i < selectedIndexes.length; i++) {\n            var selectedIndex = selectedIndexes[i];\n            var feature = _this2._geometryBeforeTranslate.features[i];\n            var coordinates = feature.geometry.coordinates;\n\n            if (coordinates) {\n              coordinates = (0, _utils.mapCoords)(coordinates, function (coord) {\n                var pixels = viewport.project(coord);\n\n                if (pixels) {\n                  pixels[0] += dx;\n                  pixels[1] += dy;\n                  return viewport.unproject(pixels);\n                }\n\n                return null;\n              }); // @ts-ignore\n\n              updatedData = updatedData.replaceGeometry(selectedIndex, {\n                type: feature.geometry.type,\n                coordinates: coordinates\n              });\n            }\n          }\n        })();\n      } else {\n        var p1 = (0, _helpers.point)(startDragPoint);\n        var p2 = (0, _helpers.point)(currentPoint);\n        var distanceMoved = (0, _distance[\"default\"])(p1, p2);\n        var direction = (0, _bearing[\"default\"])(p1, p2);\n        var movedFeatures = (0, _transformTranslate[\"default\"])( // @ts-ignore\n        this._geometryBeforeTranslate, distanceMoved, direction);\n\n        for (var i = 0; i < selectedIndexes.length; i++) {\n          var selectedIndex = selectedIndexes[i];\n          var movedFeature = movedFeatures.features[i];\n          updatedData = updatedData.replaceGeometry(selectedIndex, movedFeature.geometry);\n        }\n      }\n\n      return {\n        updatedData: updatedData.getObject(),\n        editType: editType,\n        editContext: {\n          featureIndexes: selectedIndexes\n        }\n      };\n    }\n  }]);\n\n  return TranslateMode;\n}(_geojsonEditMode.GeoJsonEditMode);\n\nexports.TranslateMode = TranslateMode;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvdHJhbnNsYXRlLW1vZGUudHMiXSwibmFtZXMiOlsiVHJhbnNsYXRlTW9kZSIsImV2ZW50IiwicHJvcHMiLCJfaXNUcmFuc2xhdGFibGUiLCJfZ2VvbWV0cnlCZWZvcmVUcmFuc2xhdGUiLCJlZGl0QWN0aW9uIiwiZ2V0VHJhbnNsYXRlQWN0aW9uIiwicG9pbnRlckRvd25NYXBDb29yZHMiLCJtYXBDb29yZHMiLCJvbkVkaXQiLCJjYW5jZWxQYW4iLCJpc1NlbGVjdGlvblBpY2tlZCIsInBvaW50ZXJEb3duUGlja3MiLCJwaWNrcyIsInVwZGF0ZUN1cnNvciIsImdldFNlbGVjdGVkRmVhdHVyZXNBc0ZlYXR1cmVDb2xsZWN0aW9uIiwib25VcGRhdGVDdXJzb3IiLCJzdGFydERyYWdQb2ludCIsImN1cnJlbnRQb2ludCIsImVkaXRUeXBlIiwidXBkYXRlZERhdGEiLCJJbW11dGFibGVGZWF0dXJlQ29sbGVjdGlvbiIsImRhdGEiLCJzZWxlY3RlZEluZGV4ZXMiLCJtb2RlQ29uZmlnIiwidmlld3BvcnREZXNjIiwidmlld3BvcnQiLCJzY3JlZW5TcGFjZSIsInByb2plY3QiLCJXZWJNZXJjYXRvclZpZXdwb3J0IiwiZnJvbSIsInRvIiwiZHgiLCJkeSIsImkiLCJsZW5ndGgiLCJzZWxlY3RlZEluZGV4IiwiZmVhdHVyZSIsImZlYXR1cmVzIiwiY29vcmRpbmF0ZXMiLCJnZW9tZXRyeSIsImNvb3JkIiwicGl4ZWxzIiwidW5wcm9qZWN0IiwicmVwbGFjZUdlb21ldHJ5IiwidHlwZSIsInAxIiwicDIiLCJkaXN0YW5jZU1vdmVkIiwiZGlyZWN0aW9uIiwibW92ZWRGZWF0dXJlcyIsIm1vdmVkRmVhdHVyZSIsImdldE9iamVjdCIsImVkaXRDb250ZXh0IiwiZmVhdHVyZUluZGV4ZXMiLCJHZW9Kc29uRWRpdE1vZGUiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFTQTs7QUFDQTs7QUFDQTs7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QUFNOEIsYUFBYSxHQUFHLDBCQUFhRixFQUFiLEVBQWlCQyxFQUFqQixDQUF0QjtBQUNBLFlBQU1FLFNBQVMsR0FBRyx5QkFBWUgsRUFBWixFQUFnQkMsRUFBaEIsQ0FBbEI7QUFFQSxZQUFNRyxhQUFhLEdBQUcscUNBQ3BCO0FBQ0EsYUFBSzlDLHdCQUZlLEVBR3BCNEMsYUFIb0IsRUFJcEJDLFNBSm9CLENBQXRCOztBQU9BLGFBQUssSUFBSWYsQ0FBQyxHQUFHLENBQWIsRUFBZ0JBLENBQUMsR0FBR1gsZUFBZSxDQUFDWSxNQUFwQyxFQUE0Q0QsQ0FBQyxFQUE3QyxFQUFpRDtBQUMvQyxjQUFNRSxhQUFhLEdBQUdiLGVBQWUsQ0FBQ1csQ0FBRCxDQUFyQztBQUNBLGNBQU1pQixZQUFZLEdBQUdELGFBQWEsQ0FBQ1osUUFBZCxDQUF1QkosQ0FBdkIsQ0FBckI7QUFDQWQsVUFBQUEsV0FBVyxHQUFHQSxXQUFXLENBQUN3QixlQUFaLENBQTRCUixhQUE1QixFQUEyQ2UsWUFBWSxDQUFDWCxRQUF4RCxDQUFkO0FBQ0Q7QUFDRjs7QUFFRCxhQUFPO0FBQ0xwQixRQUFBQSxXQUFXLEVBQUVBLFdBQVcsQ0FBQ2dDLFNBQVosRUFEUjtBQUVMakMsUUFBQUEsUUFBUSxFQUFSQSxRQUZLO0FBR0xrQyxRQUFBQSxXQUFXLEVBQUU7QUFDWEMsVUFBQUEsY0FBYyxFQUFFL0I7QUFETDtBQUhSLE9BQVA7QUFPRDs7OztFQTlJZ0NnQyxnQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0dXJmQmVhcmluZyBmcm9tICdAdHVyZi9iZWFyaW5nJztcbmltcG9ydCB0dXJmRGlzdGFuY2UgZnJvbSAnQHR1cmYvZGlzdGFuY2UnO1xuaW1wb3J0IHR1cmZUcmFuc2Zvcm1UcmFuc2xhdGUgZnJvbSAnQHR1cmYvdHJhbnNmb3JtLXRyYW5zbGF0ZSc7XG5pbXBvcnQgeyBwb2ludCB9IGZyb20gJ0B0dXJmL2hlbHBlcnMnO1xuaW1wb3J0IFdlYk1lcmNhdG9yVmlld3BvcnQgZnJvbSAndmlld3BvcnQtbWVyY2F0b3ItcHJvamVjdCc7XG5pbXBvcnQgeyBGZWF0dXJlQ29sbGVjdGlvbiwgUG9zaXRpb24gfSBmcm9tICcuLi9nZW9qc29uLXR5cGVzJztcbmltcG9ydCB7XG4gIFBvaW50ZXJNb3ZlRXZlbnQsXG4gIFN0YXJ0RHJhZ2dpbmdFdmVudCxcbiAgU3RvcERyYWdnaW5nRXZlbnQsXG4gIERyYWdnaW5nRXZlbnQsXG4gIE1vZGVQcm9wcyxcbn0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHsgbWFwQ29vcmRzIH0gZnJvbSAnLi4vdXRpbHMnO1xuaW1wb3J0IHsgR2VvSnNvbkVkaXRNb2RlLCBHZW9Kc29uRWRpdEFjdGlvbiB9IGZyb20gJy4vZ2VvanNvbi1lZGl0LW1vZGUnO1xuaW1wb3J0IHsgSW1tdXRhYmxlRmVhdHVyZUNvbGxlY3Rpb24gfSBmcm9tICcuL2ltbXV0YWJsZS1mZWF0dXJlLWNvbGxlY3Rpb24nO1xuXG5leHBvcnQgY2xhc3MgVHJhbnNsYXRlTW9kZSBleHRlbmRzIEdlb0pzb25FZGl0TW9kZSB7XG4gIF9nZW9tZXRyeUJlZm9yZVRyYW5zbGF0ZTogRmVhdHVyZUNvbGxlY3Rpb24gfCBudWxsIHwgdW5kZWZpbmVkO1xuICBfaXNUcmFuc2xhdGFibGU6IGJvb2xlYW47XG5cbiAgaGFuZGxlRHJhZ2dpbmcoZXZlbnQ6IERyYWdnaW5nRXZlbnQsIHByb3BzOiBNb2RlUHJvcHM8RmVhdHVyZUNvbGxlY3Rpb24+KSB7XG4gICAgaWYgKCF0aGlzLl9pc1RyYW5zbGF0YWJsZSkge1xuICAgICAgLy8gTm90aGluZyB0byBkb1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh0aGlzLl9nZW9tZXRyeUJlZm9yZVRyYW5zbGF0ZSkge1xuICAgICAgLy8gVHJhbnNsYXRlIHRoZSBnZW9tZXRyeVxuICAgICAgY29uc3QgZWRpdEFjdGlvbiA9IHRoaXMuZ2V0VHJhbnNsYXRlQWN0aW9uKFxuICAgICAgICBldmVudC5wb2ludGVyRG93bk1hcENvb3JkcyxcbiAgICAgICAgZXZlbnQubWFwQ29vcmRzLFxuICAgICAgICAndHJhbnNsYXRpbmcnLFxuICAgICAgICBwcm9wc1xuICAgICAgKTtcblxuICAgICAgaWYgKGVkaXRBY3Rpb24pIHtcbiAgICAgICAgcHJvcHMub25FZGl0KGVkaXRBY3Rpb24pO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIGNhbmNlbCBtYXAgcGFubmluZ1xuICAgIGV2ZW50LmNhbmNlbFBhbigpO1xuICB9XG5cbiAgaGFuZGxlUG9pbnRlck1vdmUoZXZlbnQ6IFBvaW50ZXJNb3ZlRXZlbnQsIHByb3BzOiBNb2RlUHJvcHM8RmVhdHVyZUNvbGxlY3Rpb24+KSB7XG4gICAgdGhpcy5faXNUcmFuc2xhdGFibGUgPSB0aGlzLmlzU2VsZWN0aW9uUGlja2VkKGV2ZW50LnBvaW50ZXJEb3duUGlja3MgfHwgZXZlbnQucGlja3MsIHByb3BzKTtcblxuICAgIHRoaXMudXBkYXRlQ3Vyc29yKHByb3BzKTtcbiAgfVxuXG4gIGhhbmRsZVN0YXJ0RHJhZ2dpbmcoZXZlbnQ6IFN0YXJ0RHJhZ2dpbmdFdmVudCwgcHJvcHM6IE1vZGVQcm9wczxGZWF0dXJlQ29sbGVjdGlvbj4pIHtcbiAgICBpZiAoIXRoaXMuX2lzVHJhbnNsYXRhYmxlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5fZ2VvbWV0cnlCZWZvcmVUcmFuc2xhdGUgPSB0aGlzLmdldFNlbGVjdGVkRmVhdHVyZXNBc0ZlYXR1cmVDb2xsZWN0aW9uKHByb3BzKTtcbiAgfVxuXG4gIGhhbmRsZVN0b3BEcmFnZ2luZyhldmVudDogU3RvcERyYWdnaW5nRXZlbnQsIHByb3BzOiBNb2RlUHJvcHM8RmVhdHVyZUNvbGxlY3Rpb24+KSB7XG4gICAgaWYgKHRoaXMuX2dlb21ldHJ5QmVmb3JlVHJhbnNsYXRlKSB7XG4gICAgICAvLyBUcmFuc2xhdGUgdGhlIGdlb21ldHJ5XG4gICAgICBjb25zdCBlZGl0QWN0aW9uID0gdGhpcy5nZXRUcmFuc2xhdGVBY3Rpb24oXG4gICAgICAgIGV2ZW50LnBvaW50ZXJEb3duTWFwQ29vcmRzLFxuICAgICAgICBldmVudC5tYXBDb29yZHMsXG4gICAgICAgICd0cmFuc2xhdGVkJyxcbiAgICAgICAgcHJvcHNcbiAgICAgICk7XG5cbiAgICAgIGlmIChlZGl0QWN0aW9uKSB7XG4gICAgICAgIHByb3BzLm9uRWRpdChlZGl0QWN0aW9uKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5fZ2VvbWV0cnlCZWZvcmVUcmFuc2xhdGUgPSBudWxsO1xuICAgIH1cbiAgfVxuXG4gIHVwZGF0ZUN1cnNvcihwcm9wczogTW9kZVByb3BzPEZlYXR1cmVDb2xsZWN0aW9uPikge1xuICAgIGlmICh0aGlzLl9pc1RyYW5zbGF0YWJsZSkge1xuICAgICAgcHJvcHMub25VcGRhdGVDdXJzb3IoJ21vdmUnKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcHJvcHMub25VcGRhdGVDdXJzb3IobnVsbCk7XG4gICAgfVxuICB9XG5cbiAgZ2V0VHJhbnNsYXRlQWN0aW9uKFxuICAgIHN0YXJ0RHJhZ1BvaW50OiBQb3NpdGlvbixcbiAgICBjdXJyZW50UG9pbnQ6IFBvc2l0aW9uLFxuICAgIGVkaXRUeXBlOiBzdHJpbmcsXG4gICAgcHJvcHM6IE1vZGVQcm9wczxGZWF0dXJlQ29sbGVjdGlvbj5cbiAgKTogR2VvSnNvbkVkaXRBY3Rpb24gfCBudWxsIHwgdW5kZWZpbmVkIHtcbiAgICBpZiAoIXRoaXMuX2dlb21ldHJ5QmVmb3JlVHJhbnNsYXRlKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBsZXQgdXBkYXRlZERhdGEgPSBuZXcgSW1tdXRhYmxlRmVhdHVyZUNvbGxlY3Rpb24ocHJvcHMuZGF0YSk7XG4gICAgY29uc3Qgc2VsZWN0ZWRJbmRleGVzID0gcHJvcHMuc2VsZWN0ZWRJbmRleGVzO1xuXG4gICAgY29uc3QgeyB2aWV3cG9ydDogdmlld3BvcnREZXNjLCBzY3JlZW5TcGFjZSB9ID0gcHJvcHMubW9kZUNvbmZpZyB8fCB7fTtcblxuICAgIGlmICh2aWV3cG9ydERlc2MgJiYgc2NyZWVuU3BhY2UpIHtcbiAgICAgIGNvbnN0IHZpZXdwb3J0ID0gdmlld3BvcnREZXNjLnByb2plY3QgPyB2aWV3cG9ydERlc2MgOiBuZXcgV2ViTWVyY2F0b3JWaWV3cG9ydCh2aWV3cG9ydERlc2MpO1xuXG4gICAgICBjb25zdCBmcm9tID0gdmlld3BvcnQucHJvamVjdChzdGFydERyYWdQb2ludCk7XG4gICAgICBjb25zdCB0byA9IHZpZXdwb3J0LnByb2plY3QoY3VycmVudFBvaW50KTtcbiAgICAgIGNvbnN0IGR4ID0gdG9bMF0gLSBmcm9tWzBdO1xuICAgICAgY29uc3QgZHkgPSB0b1sxXSAtIGZyb21bMV07XG5cbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc2VsZWN0ZWRJbmRleGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGNvbnN0IHNlbGVjdGVkSW5kZXggPSBzZWxlY3RlZEluZGV4ZXNbaV07XG4gICAgICAgIGNvbnN0IGZlYXR1cmUgPSB0aGlzLl9nZW9tZXRyeUJlZm9yZVRyYW5zbGF0ZS5mZWF0dXJlc1tpXTtcblxuICAgICAgICBsZXQgY29vcmRpbmF0ZXMgPSBmZWF0dXJlLmdlb21ldHJ5LmNvb3JkaW5hdGVzO1xuICAgICAgICBpZiAoY29vcmRpbmF0ZXMpIHtcbiAgICAgICAgICBjb29yZGluYXRlcyA9IG1hcENvb3Jkcyhjb29yZGluYXRlcywgKGNvb3JkKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBwaXhlbHMgPSB2aWV3cG9ydC5wcm9qZWN0KGNvb3JkKTtcbiAgICAgICAgICAgIGlmIChwaXhlbHMpIHtcbiAgICAgICAgICAgICAgcGl4ZWxzWzBdICs9IGR4O1xuICAgICAgICAgICAgICBwaXhlbHNbMV0gKz0gZHk7XG4gICAgICAgICAgICAgIHJldHVybiB2aWV3cG9ydC51bnByb2plY3QocGl4ZWxzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgIHVwZGF0ZWREYXRhID0gdXBkYXRlZERhdGEucmVwbGFjZUdlb21ldHJ5KHNlbGVjdGVkSW5kZXgsIHtcbiAgICAgICAgICAgIHR5cGU6IGZlYXR1cmUuZ2VvbWV0cnkudHlwZSxcbiAgICAgICAgICAgIGNvb3JkaW5hdGVzLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHAxID0gcG9pbnQoc3RhcnREcmFnUG9pbnQpO1xuICAgICAgY29uc3QgcDIgPSBwb2ludChjdXJyZW50UG9pbnQpO1xuXG4gICAgICBjb25zdCBkaXN0YW5jZU1vdmVkID0gdHVyZkRpc3RhbmNlKHAxLCBwMik7XG4gICAgICBjb25zdCBkaXJlY3Rpb24gPSB0dXJmQmVhcmluZyhwMSwgcDIpO1xuXG4gICAgICBjb25zdCBtb3ZlZEZlYXR1cmVzID0gdHVyZlRyYW5zZm9ybVRyYW5zbGF0ZShcbiAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICB0aGlzLl9nZW9tZXRyeUJlZm9yZVRyYW5zbGF0ZSxcbiAgICAgICAgZGlzdGFuY2VNb3ZlZCxcbiAgICAgICAgZGlyZWN0aW9uXG4gICAgICApO1xuXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHNlbGVjdGVkSW5kZXhlcy5sZW5ndGg7IGkrKykge1xuICAgICAgICBjb25zdCBzZWxlY3RlZEluZGV4ID0gc2VsZWN0ZWRJbmRleGVzW2ldO1xuICAgICAgICBjb25zdCBtb3ZlZEZlYXR1cmUgPSBtb3ZlZEZlYXR1cmVzLmZlYXR1cmVzW2ldO1xuICAgICAgICB1cGRhdGVkRGF0YSA9IHVwZGF0ZWREYXRhLnJlcGxhY2VHZW9tZXRyeShzZWxlY3RlZEluZGV4LCBtb3ZlZEZlYXR1cmUuZ2VvbWV0cnkpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICB1cGRhdGVkRGF0YTogdXBkYXRlZERhdGEuZ2V0T2JqZWN0KCksXG4gICAgICBlZGl0VHlwZSxcbiAgICAgIGVkaXRDb250ZXh0OiB7XG4gICAgICAgIGZlYXR1cmVJbmRleGVzOiBzZWxlY3RlZEluZGV4ZXMsXG4gICAgICB9LFxuICAgIH07XG4gIH1cbn1cbiJdfQ==","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.TwoClickPolygonMode = void 0;\n\nvar _geojsonEditMode = require(\"./geojson-edit-mode\");\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _get(target, property, receiver) { if (typeof Reflect !== \"undefined\" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return _get(target, property, receiver || target); }\n\nfunction _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; }\n\nfunction _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nvar TwoClickPolygonMode = /*#__PURE__*/function (_GeoJsonEditMode) {\n  _inherits(TwoClickPolygonMode, _GeoJsonEditMode);\n\n  var _super = _createSuper(TwoClickPolygonMode);\n\n  function TwoClickPolygonMode() {\n    _classCallCheck(this, TwoClickPolygonMode);\n\n    return _super.apply(this, arguments);\n  }\n\n  _createClass(TwoClickPolygonMode, [{\n    key: \"handleClick\",\n    value: function handleClick(event, props) {\n      if (props.modeConfig && props.modeConfig.dragToDraw) {\n        // handled in drag handlers\n        return;\n      }\n\n      this.addClickSequence(event);\n      this.checkAndFinishPolygon(props);\n    }\n  }, {\n    key: \"handleStartDragging\",\n    value: function handleStartDragging(event, props) {\n      if (!props.modeConfig || !props.modeConfig.dragToDraw) {\n        // handled in click handlers\n        return;\n      }\n\n      this.addClickSequence(event);\n      event.cancelPan();\n    }\n  }, {\n    key: \"handleStopDragging\",\n    value: function handleStopDragging(event, props) {\n      if (!props.modeConfig || !props.modeConfig.dragToDraw) {\n        // handled in click handlers\n        return;\n      }\n\n      this.addClickSequence(event);\n      this.checkAndFinishPolygon(props);\n    }\n  }, {\n    key: \"checkAndFinishPolygon\",\n    value: function checkAndFinishPolygon(props) {\n      var clickSequence = this.getClickSequence();\n      var tentativeFeature = this.getTentativeGuide(props);\n\n      if (clickSequence.length > 1 && tentativeFeature && tentativeFeature.geometry.type === 'Polygon') {\n        var feature = {\n          type: 'Feature',\n          properties: {\n            shape: tentativeFeature.properties.shape\n          },\n          geometry: {\n            type: 'Polygon',\n            coordinates: tentativeFeature.geometry.coordinates\n          }\n        };\n        var editAction = this.getAddFeatureOrBooleanPolygonAction(feature, props);\n        this.resetClickSequence();\n\n        if (editAction) {\n          props.onEdit(editAction);\n        }\n      }\n    }\n  }, {\n    key: \"getGuides\",\n    value: function getGuides(props) {\n      var lastPointerMoveEvent = props.lastPointerMoveEvent,\n          modeConfig = props.modeConfig;\n      var clickSequence = this.getClickSequence();\n      var guides = {\n        type: 'FeatureCollection',\n        features: []\n      };\n\n      if (clickSequence.length === 0) {\n        // nothing to do yet\n        return guides;\n      }\n\n      var corner1 = clickSequence[0];\n      var corner2 = lastPointerMoveEvent.mapCoords;\n      var polygon = this.getTwoClickPolygon(corner1, corner2, modeConfig);\n\n      if (polygon) {\n        guides.features.push({\n          type: 'Feature',\n          properties: {\n            shape: polygon.properties && polygon.properties.shape,\n            guideType: 'tentative'\n          },\n          geometry: polygon.geometry\n        });\n      }\n\n      return guides;\n    }\n  }, {\n    key: \"getTwoClickPolygon\",\n    value: function getTwoClickPolygon(coord1, coord2, modeConfig) {\n      return null;\n    }\n  }, {\n    key: \"handlePointerMove\",\n    value: function handlePointerMove(event, props) {\n      props.onUpdateCursor('cell');\n\n      _get(_getPrototypeOf(TwoClickPolygonMode.prototype), \"handlePointerMove\", this).call(this, event, props);\n    }\n  }, {\n    key: \"createTentativeFeature\",\n    value: function createTentativeFeature(props) {\n      var lastPointerMoveEvent = props.lastPointerMoveEvent;\n      var clickSequence = this.getClickSequence();\n      var lastCoords = lastPointerMoveEvent ? [lastPointerMoveEvent.mapCoords] : [];\n      var tentativeFeature;\n\n      if (clickSequence.length === 1) {\n        tentativeFeature = this.getTwoClickPolygon(clickSequence[0], lastCoords[0], props.modeConfig);\n      }\n\n      return tentativeFeature;\n    }\n  }]);\n\n  return TwoClickPolygonMode;\n}(_geojsonEditMode.GeoJsonEditMode);\n\nexports.TwoClickPolygonMode = TwoClickPolygonMode;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvdHdvLWNsaWNrLXBvbHlnb24tbW9kZS50cyJdLCJuYW1lcyI6WyJUd29DbGlja1BvbHlnb25Nb2RlIiwiZXZlbnQiLCJwcm9wcyIsIm1vZGVDb25maWciLCJkcmFnVG9EcmF3IiwiYWRkQ2xpY2tTZXF1ZW5jZSIsImNoZWNrQW5kRmluaXNoUG9seWdvbiIsImNhbmNlbFBhbiIsImNsaWNrU2VxdWVuY2UiLCJnZXRDbGlja1NlcXVlbmNlIiwidGVudGF0aXZlRmVhdHVyZSIsImdldFRlbnRhdGl2ZUd1aWRlIiwibGVuZ3RoIiwiZ2VvbWV0cnkiLCJ0eXBlIiwiZmVhdHVyZSIsInByb3BlcnRpZXMiLCJzaGFwZSIsImNvb3JkaW5hdGVzIiwiZWRpdEFjdGlvbiIsImdldEFkZEZlYXR1cmVPckJvb2xlYW5Qb2x5Z29uQWN0aW9uIiwicmVzZXRDbGlja1NlcXVlbmNlIiwib25FZGl0IiwibGFzdFBvaW50ZXJNb3ZlRXZlbnQiLCJndWlkZXMiLCJmZWF0dXJlcyIsImNvcm5lcjEiLCJjb3JuZXIyIiwibWFwQ29vcmRzIiwicG9seWdvbiIsImdldFR3b0NsaWNrUG9seWdvbiIsInB1c2giLCJndWlkZVR5cGUiLCJjb29yZDEiLCJjb29yZDIiLCJvblVwZGF0ZUN1cnNvciIsImxhc3RDb29yZHMiLCJHZW9Kc29uRWRpdE1vZGUiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFVQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQUVhQSxtQjs7Ozs7Ozs7Ozs7OztnQ0FDQ0MsSyxFQUFtQkMsSyxFQUFxQztBQUNsRSxVQUFJQSxLQUFLLENBQUNDLFVBQU4sSUFBb0JELEtBQUssQ0FBQ0MsVUFBTixDQUFpQkMsVUFBekMsRUFBcUQ7QUFDbkQ7QUFDQTtBQUNEOztBQUVELFdBQUtDLGdCQUFMLENBQXNCSixLQUF0QjtBQUVBLFdBQUtLLHFCQUFMLENBQTJCSixLQUEzQjtBQUNEOzs7d0NBRW1CRCxLLEVBQTJCQyxLLEVBQTJDO0FBQ3hGLFVBQUks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SUFBUDtBQUNEOzs7c0NBRWlCRixLLEVBQXlCQyxLLEVBQXFDO0FBQzlFQSxNQUFBQSxLQUFLLENBQUNpQyxjQUFOLENBQXFCLE1BQXJCOztBQUNBLGlHQUF3QmxDLEtBQXhCLEVBQStCQyxLQUEvQjtBQUNEOzs7MkNBRXNCQSxLLEVBQXVEO0FBQUEsVUFDcEVxQixvQkFEb0UsR0FDM0NyQixLQUQyQyxDQUNwRXFCLG9CQURvRTtBQUU1RSxVQUFNZixhQUFhLEdBQUcsS0FBS0MsZ0JBQUwsRUFBdEI7QUFFQSxVQUFNMkIsVUFBVSxHQUFHYixvQkFBb0IsR0FBRyxDQUFDQSxvQkFBb0IsQ0FBQ0ssU0FBdEIsQ0FBSCxHQUFzQyxFQUE3RTtBQUVBLFVBQUlsQixnQkFBSjs7QUFDQSxVQUFJRixhQUFhLENBQUNJLE1BQWQsS0FBeUIsQ0FBN0IsRUFBZ0M7QUFDOUJGLFFBQUFBLGdCQUFnQixHQUFHLEtBQUtvQixrQkFBTCxDQUF3QnRCLGFBQWEsQ0FBQyxDQUFELENBQXJDLEVBQTBDNEIsVUFBVSxDQUFDLENBQUQsQ0FBcEQsRUFBeURsQyxLQUFLLENBQUNDLFVBQS9ELENBQW5CO0FBQ0Q7O0FBRUQsYUFBT08sZ0JBQVA7QUFDRDs7OztFQXRIc0MyQixnQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENsaWNrRXZlbnQsXG4gIFN0YXJ0RHJhZ2dpbmdFdmVudCxcbiAgU3RvcERyYWdnaW5nRXZlbnQsXG4gIFBvaW50ZXJNb3ZlRXZlbnQsXG4gIE1vZGVQcm9wcyxcbiAgR3VpZGVGZWF0dXJlQ29sbGVjdGlvbixcbiAgVGVudGF0aXZlRmVhdHVyZSxcbn0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHsgUG9seWdvbiwgRmVhdHVyZUNvbGxlY3Rpb24sIEZlYXR1cmVPZiwgUG9zaXRpb24gfSBmcm9tICcuLi9nZW9qc29uLXR5cGVzJztcbmltcG9ydCB7IEdlb0pzb25FZGl0TW9kZSB9IGZyb20gJy4vZ2VvanNvbi1lZGl0LW1vZGUnO1xuXG5leHBvcnQgY2xhc3MgVHdvQ2xpY2tQb2x5Z29uTW9kZSBleHRlbmRzIEdlb0pzb25FZGl0TW9kZSB7XG4gIGhhbmRsZUNsaWNrKGV2ZW50OiBDbGlja0V2ZW50LCBwcm9wczogTW9kZVByb3BzPEZlYXR1cmVDb2xsZWN0aW9uPikge1xuICAgIGlmIChwcm9wcy5tb2RlQ29uZmlnICYmIHByb3BzLm1vZGVDb25maWcuZHJhZ1RvRHJhdykge1xuICAgICAgLy8gaGFuZGxlZCBpbiBkcmFnIGhhbmRsZXJzXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5hZGRDbGlja1NlcXVlbmNlKGV2ZW50KTtcblxuICAgIHRoaXMuY2hlY2tBbmRGaW5pc2hQb2x5Z29uKHByb3BzKTtcbiAgfVxuXG4gIGhhbmRsZVN0YXJ0RHJhZ2dpbmcoZXZlbnQ6IFN0YXJ0RHJhZ2dpbmdFdmVudCwgcHJvcHM6IE1vZGVQcm9wczxGZWF0dXJlQ29sbGVjdGlvbj4pOiB2b2lkIHtcbiAgICBpZiAoIXByb3BzLm1vZGVDb25maWcgfHwgIXByb3BzLm1vZGVDb25maWcuZHJhZ1RvRHJhdykge1xuICAgICAgLy8gaGFuZGxlZCBpbiBjbGljayBoYW5kbGVyc1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuYWRkQ2xpY2tTZXF1ZW5jZShldmVudCk7XG4gICAgZXZlbnQuY2FuY2VsUGFuKCk7XG4gIH1cblxuICBoYW5kbGVTdG9wRHJhZ2dpbmcoZXZlbnQ6IFN0b3BEcmFnZ2luZ0V2ZW50LCBwcm9wczogTW9kZVByb3BzPEZlYXR1cmVDb2xsZWN0aW9uPik6IHZvaWQge1xuICAgIGlmICghcHJvcHMubW9kZUNvbmZpZyB8fCAhcHJvcHMubW9kZUNvbmZpZy5kcmFnVG9EcmF3KSB7XG4gICAgICAvLyBoYW5kbGVkIGluIGNsaWNrIGhhbmRsZXJzXG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuYWRkQ2xpY2tTZXF1ZW5jZShldmVudCk7XG5cbiAgICB0aGlzLmNoZWNrQW5kRmluaXNoUG9seWdvbihwcm9wcyk7XG4gIH1cblxuICBjaGVja0FuZEZpbmlzaFBvbHlnb24ocHJvcHM6IE1vZGVQcm9wczxGZWF0dXJlQ29sbGVjdGlvbj4pIHtcbiAgICBjb25zdCBjbGlja1NlcXVlbmNlID0gdGhpcy5nZXRDbGlja1NlcXVlbmNlKCk7XG4gICAgY29uc3QgdGVudGF0aXZlRmVhdHVyZSA9IHRoaXMuZ2V0VGVudGF0aXZlR3VpZGUocHJvcHMpO1xuXG4gICAgaWYgKFxuICAgICAgY2xpY2tTZXF1ZW5jZS5sZW5ndGggPiAxICYmXG4gICAgICB0ZW50YXRpdmVGZWF0dXJlICYmXG4gICAgICB0ZW50YXRpdmVGZWF0dXJlLmdlb21ldHJ5LnR5cGUgPT09ICdQb2x5Z29uJ1xuICAgICkge1xuICAgICAgY29uc3QgZmVhdHVyZTogRmVhdHVyZU9mPFBvbHlnb24+ID0ge1xuICAgICAgICB0eXBlOiAnRmVhdHVyZScsXG4gICAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgICBzaGFwZTogdGVudGF0aXZlRmVhdHVyZS5wcm9wZXJ0aWVzLnNoYXBlLFxuICAgICAgICB9LFxuICAgICAgICBnZW9tZXRyeToge1xuICAgICAgICAgIHR5cGU6ICdQb2x5Z29uJyxcbiAgICAgICAgICBjb29yZGluYXRlczogdGVudGF0aXZlRmVhdHVyZS5nZW9tZXRyeS5jb29yZGluYXRlcyxcbiAgICAgICAgfSxcbiAgICAgIH07XG4gICAgICBjb25zdCBlZGl0QWN0aW9uID0gdGhpcy5nZXRBZGRGZWF0dXJlT3JCb29sZWFuUG9seWdvbkFjdGlvbihmZWF0dXJlLCBwcm9wcyk7XG5cbiAgICAgIHRoaXMucmVzZXRDbGlja1NlcXVlbmNlKCk7XG5cbiAgICAgIGlmIChlZGl0QWN0aW9uKSB7XG4gICAgICAgIHByb3BzLm9uRWRpdChlZGl0QWN0aW9uKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBnZXRHdWlkZXMocHJvcHM6IE1vZGVQcm9wczxGZWF0dXJlQ29sbGVjdGlvbj4pOiBHdWlkZUZlYXR1cmVDb2xsZWN0aW9uIHtcbiAgICBjb25zdCB7IGxhc3RQb2ludGVyTW92ZUV2ZW50LCBtb2RlQ29uZmlnIH0gPSBwcm9wcztcbiAgICBjb25zdCBjbGlja1NlcXVlbmNlID0gdGhpcy5nZXRDbGlja1NlcXVlbmNlKCk7XG5cbiAgICBjb25zdCBndWlkZXM6IEd1aWRlRmVhdHVyZUNvbGxlY3Rpb24gPSB7XG4gICAgICB0eXBlOiAnRmVhdHVyZUNvbGxlY3Rpb24nLFxuICAgICAgZmVhdHVyZXM6IFtdLFxuICAgIH07XG5cbiAgICBpZiAoY2xpY2tTZXF1ZW5jZS5sZW5ndGggPT09IDApIHtcbiAgICAgIC8vIG5vdGhpbmcgdG8gZG8geWV0XG4gICAgICByZXR1cm4gZ3VpZGVzO1xuICAgIH1cblxuICAgIGNvbnN0IGNvcm5lcjEgPSBjbGlja1NlcXVlbmNlWzBdO1xuICAgIGNvbnN0IGNvcm5lcjIgPSBsYXN0UG9pbnRlck1vdmVFdmVudC5tYXBDb29yZHM7XG5cbiAgICBjb25zdCBwb2x5Z29uID0gdGhpcy5nZXRUd29DbGlja1BvbHlnb24oY29ybmVyMSwgY29ybmVyMiwgbW9kZUNvbmZpZyk7XG4gICAgaWYgKHBvbHlnb24pIHtcbiAgICAgIGd1aWRlcy5mZWF0dXJlcy5wdXNoKHtcbiAgICAgICAgdHlwZTogJ0ZlYXR1cmUnLFxuICAgICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgc2hhcGU6IHBvbHlnb24ucHJvcGVydGllcyAmJiBwb2x5Z29uLnByb3BlcnRpZXMuc2hhcGUsXG4gICAgICAgICAgZ3VpZGVUeXBlOiAndGVudGF0aXZlJyxcbiAgICAgICAgfSxcbiAgICAgICAgZ2VvbWV0cnk6IHBvbHlnb24uZ2VvbWV0cnksXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gZ3VpZGVzO1xuICB9XG5cbiAgZ2V0VHdvQ2xpY2tQb2x5Z29uKFxuICAgIGNvb3JkMTogUG9zaXRpb24sXG4gICAgY29vcmQyOiBQb3NpdGlvbixcbiAgICBtb2RlQ29uZmlnOiBhbnlcbiAgKTogRmVhdHVyZU9mPFBvbHlnb24+IHwgbnVsbCB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBoYW5kbGVQb2ludGVyTW92ZShldmVudDogUG9pbnRlck1vdmVFdmVudCwgcHJvcHM6IE1vZGVQcm9wczxGZWF0dXJlQ29sbGVjdGlvbj4pIHtcbiAgICBwcm9wcy5vblVwZGF0ZUN1cnNvcignY2VsbCcpO1xuICAgIHN1cGVyLmhhbmRsZVBvaW50ZXJNb3ZlKGV2ZW50LCBwcm9wcyk7XG4gIH1cblxuICBjcmVhdGVUZW50YXRpdmVGZWF0dXJlKHByb3BzOiBNb2RlUHJvcHM8RmVhdHVyZUNvbGxlY3Rpb24+KTogVGVudGF0aXZlRmVhdHVyZSB7XG4gICAgY29uc3QgeyBsYXN0UG9pbnRlck1vdmVFdmVudCB9ID0gcHJvcHM7XG4gICAgY29uc3QgY2xpY2tTZXF1ZW5jZSA9IHRoaXMuZ2V0Q2xpY2tTZXF1ZW5jZSgpO1xuXG4gICAgY29uc3QgbGFzdENvb3JkcyA9IGxhc3RQb2ludGVyTW92ZUV2ZW50ID8gW2xhc3RQb2ludGVyTW92ZUV2ZW50Lm1hcENvb3Jkc10gOiBbXTtcblxuICAgIGxldCB0ZW50YXRpdmVGZWF0dXJlO1xuICAgIGlmIChjbGlja1NlcXVlbmNlLmxlbmd0aCA9PT0gMSkge1xuICAgICAgdGVudGF0aXZlRmVhdHVyZSA9IHRoaXMuZ2V0VHdvQ2xpY2tQb2x5Z29uKGNsaWNrU2VxdWVuY2VbMF0sIGxhc3RDb29yZHNbMF0sIHByb3BzLm1vZGVDb25maWcpO1xuICAgIH1cblxuICAgIHJldHVybiB0ZW50YXRpdmVGZWF0dXJlO1xuICB9XG59XG4iXX0=","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.ViewMode = void 0;\n\nvar _geojsonEditMode = require(\"./geojson-edit-mode\");\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nvar ViewMode = /*#__PURE__*/function (_GeoJsonEditMode) {\n  _inherits(ViewMode, _GeoJsonEditMode);\n\n  var _super = _createSuper(ViewMode);\n\n  function ViewMode() {\n    _classCallCheck(this, ViewMode);\n\n    return _super.apply(this, arguments);\n  }\n\n  return ViewMode;\n}(_geojsonEditMode.GeoJsonEditMode);\n\nexports.ViewMode = ViewMode;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvdmlldy1tb2RlLnRzIl0sIm5hbWVzIjpbIlZpZXdNb2RlIiwiR2VvSnNvbkVkaXRNb2RlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBRWFBLFE7Ozs7Ozs7Ozs7OztFQUFpQkMsZ0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBHZW9Kc29uRWRpdE1vZGUgfSBmcm9tICcuL2dlb2pzb24tZWRpdC1tb2RlJztcblxuZXhwb3J0IGNsYXNzIFZpZXdNb2RlIGV4dGVuZHMgR2VvSnNvbkVkaXRNb2RlIHt9XG4iXX0=","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports[\"default\"] = memoize;\n\n// port from @deck.gl/core\nfunction isEqual(a, b) {\n  if (a === b) {\n    return true;\n  }\n\n  if (Array.isArray(a)) {\n    // Special treatment for arrays: compare 1-level deep\n    // This is to support equality of matrix/coordinate props\n    var len = a.length;\n\n    if (!b || b.length !== len) {\n      return false;\n    }\n\n    for (var i = 0; i < len; i++) {\n      if (a[i] !== b[i]) {\n        return false;\n      }\n    }\n\n    return true;\n  }\n\n  return false;\n}\n/**\n * Speed up consecutive function calls by caching the result of calls with identical input\n * https://en.wikipedia.org/wiki/Memoization\n * @param {function} compute - the function to be memoized\n */\n\n\nfunction memoize(compute) {\n  var cachedArgs = {};\n  var cachedResult;\n  return function (args) {\n    for (var key in args) {\n      if (!isEqual(args[key], cachedArgs[key])) {\n        cachedResult = compute(args);\n        cachedArgs = args;\n        break;\n      }\n    }\n\n    return cachedResult;\n  };\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9tZW1vaXplLnRzIl0sIm5hbWVzIjpbImlzRXF1YWwiLCJhIiwiYiIsIkFycmF5IiwiaXNBcnJheSIsImxlbiIsImxlbmd0aCIsImkiLCJtZW1vaXplIiwiY29tcHV0ZSIsImNhY2hlZEFyZ3MiLCJjYWNoZWRSZXN1bHQiLCJhcmdzIiwia2V5Il0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUE7QUFDQSxTQUFTQSxPQUFULENBQWlCQyxDQUFqQixFQUF5QkMsQ0FBekIsRUFBaUM7QUFDL0IsTUFBSUQsQ0FBQyxLQUFLQyxDQUFWLEVBQWE7QUFDWCxXQUFPLElBQVA7QUFDRDs7QUFDRCxNQUFJQyxLQUFLLENBQUNDLE9BQU4sQ0FBY0gsQ0FBZCxDQUFKLEVBQXNCO0FBQ3BCO0FBQ0E7QUFDQSxRQUFNSSxHQUFHLEdBQUdKLENBQUMsQ0FBQ0ssTUFBZDs7QUFDQSxRQUFJLENBQUNKLENBQUQsSUFBTUEsQ0FBQyxDQUFDSSxNQUFGLEtBQWFELEdBQXZCLEVBQTRCO0FBQzFCLGFBQU8sS0FBUDtBQUNEOztBQUVELFNBQUssSUFBSUUsQ0FBQyxHQUFHLENBQWIsRUFBZ0JBLENBQUMsR0FBR0YsR0FBcEIsRUFBeUJFLENBQUMsRUFBMUIsRUFBOEI7QUFDNUIsVUFBSU4sQ0FBQyxDQUFDTSxDQUFELENBQUQsS0FBU0wsQ0FBQyxDQUFDSyxDQUFELENBQWQsRUFBbUI7QUFDakIsZUFBTyxLQUFQO0FBQ0Q7QUFDRjs7QUFDRCxXQUFPLElBQVA7QUFDRDs7QUFDRCxTQUFPLEtBQVA7QUFDRDtBQUVEOzs7Ozs7O0FBS2UsU0FBU0MsT0FBVCxDQUFpQkMsT0FBakIsRUFBb0M7QUFDakQsTUFBSUMsVUFBVSxHQUFHLEVBQWpCO0FBQ0EsTUFBSUMsWUFBSjtBQUVBLFNBQU8sVUFBQ0MsSUFBRCxFQUFlO0FBQ3BCLFNBQUssSUFBTUMsR0FBWCxJQUFrQkQsSUFBbEIsRUFBd0I7QUFDdEIsVUFBSSxDQUFDWixPQUFPLENBQUNZLElBQUksQ0FBQ0MsR0FBRCxDQUFMLEVBQVlILFVBQVUsQ0FBQ0csR0FBRCxDQUF0QixDQUFaLEVBQTBDO0FBQ3hDRixRQUFBQSxZQUFZLEdBQUdGLE9BQU8sQ0FBQ0csSUFBRCxDQUF0QjtBQUNBRixRQUFBQSxVQUFVLEdBQUdFLElBQWI7QUFDQTtBQUNEO0FBQ0Y7O0FBQ0QsV0FBT0QsWUFBUDtBQUNELEdBVEQ7QUFVRCIsInNvdXJjZXNDb250ZW50IjpbIi8vIHBvcnQgZnJvbSBAZGVjay5nbC9jb3JlXG5mdW5jdGlvbiBpc0VxdWFsKGE6IGFueSwgYjogYW55KSB7XG4gIGlmIChhID09PSBiKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgaWYgKEFycmF5LmlzQXJyYXkoYSkpIHtcbiAgICAvLyBTcGVjaWFsIHRyZWF0bWVudCBmb3IgYXJyYXlzOiBjb21wYXJlIDEtbGV2ZWwgZGVlcFxuICAgIC8vIFRoaXMgaXMgdG8gc3VwcG9ydCBlcXVhbGl0eSBvZiBtYXRyaXgvY29vcmRpbmF0ZSBwcm9wc1xuICAgIGNvbnN0IGxlbiA9IGEubGVuZ3RoO1xuICAgIGlmICghYiB8fCBiLmxlbmd0aCAhPT0gbGVuKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgICAgaWYgKGFbaV0gIT09IGJbaV0pIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICByZXR1cm4gZmFsc2U7XG59XG5cbi8qKlxuICogU3BlZWQgdXAgY29uc2VjdXRpdmUgZnVuY3Rpb24gY2FsbHMgYnkgY2FjaGluZyB0aGUgcmVzdWx0IG9mIGNhbGxzIHdpdGggaWRlbnRpY2FsIGlucHV0XG4gKiBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9NZW1vaXphdGlvblxuICogQHBhcmFtIHtmdW5jdGlvbn0gY29tcHV0ZSAtIHRoZSBmdW5jdGlvbiB0byBiZSBtZW1vaXplZFxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBtZW1vaXplKGNvbXB1dGU6IEZ1bmN0aW9uKSB7XG4gIGxldCBjYWNoZWRBcmdzID0ge307XG4gIGxldCBjYWNoZWRSZXN1bHQ7XG5cbiAgcmV0dXJuIChhcmdzOiBhbnkpID0+IHtcbiAgICBmb3IgKGNvbnN0IGtleSBpbiBhcmdzKSB7XG4gICAgICBpZiAoIWlzRXF1YWwoYXJnc1trZXldLCBjYWNoZWRBcmdzW2tleV0pKSB7XG4gICAgICAgIGNhY2hlZFJlc3VsdCA9IGNvbXB1dGUoYXJncyk7XG4gICAgICAgIGNhY2hlZEFyZ3MgPSBhcmdzO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGNhY2hlZFJlc3VsdDtcbiAgfTtcbn1cbiJdfQ==","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.toDeckColor = toDeckColor;\nexports.recursivelyTraverseNestedArrays = recursivelyTraverseNestedArrays;\nexports.generatePointsParallelToLinePoints = generatePointsParallelToLinePoints;\nexports.distance2d = distance2d;\nexports.mix = mix;\nexports.nearestPointOnProjectedLine = nearestPointOnProjectedLine;\nexports.nearestPointOnLine = nearestPointOnLine;\nexports.getPickedEditHandle = getPickedEditHandle;\nexports.getPickedSnapSourceEditHandle = getPickedSnapSourceEditHandle;\nexports.getNonGuidePicks = getNonGuidePicks;\nexports.getPickedExistingEditHandle = getPickedExistingEditHandle;\nexports.getPickedIntermediateEditHandle = getPickedIntermediateEditHandle;\nexports.getPickedEditHandles = getPickedEditHandles;\nexports.getEditHandlesForGeometry = getEditHandlesForGeometry;\nexports.updateRectanglePosition = updateRectanglePosition;\nexports.mapCoords = mapCoords;\n\nvar _destination = _interopRequireDefault(require(\"@turf/destination\"));\n\nvar _bearing = _interopRequireDefault(require(\"@turf/bearing\"));\n\nvar _pointToLineDistance = _interopRequireDefault(require(\"@turf/point-to-line-distance\"));\n\nvar _meta = require(\"@turf/meta\");\n\nvar _helpers = require(\"@turf/helpers\");\n\nvar _invariant = require(\"@turf/invariant\");\n\nvar _viewportMercatorProject = _interopRequireDefault(require(\"viewport-mercator-project\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _iterableToArrayLimit(arr, i) { if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return; var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(n); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction toDeckColor(color) {\n  var defaultColor = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [255, 0, 0, 255];\n\n  if (!Array.isArray(color)) {\n    return defaultColor;\n  }\n\n  return [color[0] * 255, color[1] * 255, color[2] * 255, color[3] * 255];\n} //\n// a GeoJSON helper function that calls the provided function with\n// an argument that is the most deeply-nested array having elements\n// that are arrays of primitives as an argument, e.g.\n//\n// {\n//   \"type\": \"MultiPolygon\",\n//   \"coordinates\": [\n//       [\n//           [[30, 20], [45, 40], [10, 40], [30, 20]]\n//       ],\n//       [\n//           [[15, 5], [40, 10], [10, 20], [5, 10], [15, 5]]\n//       ]\n//   ]\n// }\n//\n// the function would be called on:\n//\n// [[30, 20], [45, 40], [10, 40], [30, 20]]\n//\n// and\n//\n// [[15, 5], [40, 10], [10, 20], [5, 10], [15, 5]]\n//\n\n\nfunction recursivelyTraverseNestedArrays(array, prefix, fn) {\n  if (!Array.isArray(array[0])) {\n    return true;\n  }\n\n  for (var i = 0; i < array.length; i++) {\n    if (recursivelyTraverseNestedArrays(array[i], [].concat(_toConsumableArray(prefix), [i]), fn)) {\n      fn(array, prefix);\n      break;\n    }\n  }\n\n  return false;\n}\n\nfunction generatePointsParallelToLinePoints(p1, p2, mapCoords) {\n  var lineString = {\n    type: 'LineString',\n    coordinates: [p1, p2]\n  };\n  var pt = (0, _helpers.point)(mapCoords);\n  var ddistance = (0, _pointToLineDistance[\"default\"])(pt, lineString);\n  var lineBearing = (0, _bearing[\"default\"])(p1, p2); // Check if current point is to the left or right of line\n  // Line from A=(x1,y1) to B=(x2,y2) a point P=(x,y)\n  // then (x−x1)(y2−y1)−(y−y1)(x2−x1)\n\n  var isPointToLeftOfLine = (mapCoords[0] - p1[0]) * (p2[1] - p1[1]) - (mapCoords[1] - p1[1]) * (p2[0] - p1[0]); // Bearing to draw perpendicular to the line string\n\n  var orthogonalBearing = isPointToLeftOfLine < 0 ? lineBearing - 90 : lineBearing - 270; // Get coordinates for the point p3 and p4 which are perpendicular to the lineString\n  // Add the distance as the current position moves away from the lineString\n\n  var p3 = (0, _destination[\"default\"])(p2, ddistance, orthogonalBearing);\n  var p4 = (0, _destination[\"default\"])(p1, ddistance, orthogonalBearing);\n  return [p3.geometry.coordinates, p4.geometry.coordinates];\n}\n\nfunction distance2d(x1, y1, x2, y2) {\n  var dx = x1 - x2;\n  var dy = y1 - y2;\n  return Math.sqrt(dx * dx + dy * dy);\n}\n\nfunction mix(a, b, ratio) {\n  return b * ratio + a * (1 - ratio);\n}\n\nfunction nearestPointOnProjectedLine(line, inPoint, viewport) {\n  var wmViewport = new _viewportMercatorProject[\"default\"](viewport); // Project the line to viewport, then find the nearest point\n\n  var coordinates = line.geometry.coordinates;\n  var projectedCoords = coordinates.map(function (_ref) {\n    var _ref2 = _slicedToArray(_ref, 3),\n        x = _ref2[0],\n        y = _ref2[1],\n        _ref2$ = _ref2[2],\n        z = _ref2$ === void 0 ? 0 : _ref2$;\n\n    return wmViewport.project([x, y, z]);\n  }); // @ts-ignore\n\n  var _wmViewport$project = wmViewport.project(inPoint.geometry.coordinates),\n      _wmViewport$project2 = _slicedToArray(_wmViewport$project, 2),\n      x = _wmViewport$project2[0],\n      y = _wmViewport$project2[1]; // console.log('projectedCoords', JSON.stringify(projectedCoords));\n\n\n  var minDistance = Infinity;\n  var minPointInfo = {};\n  projectedCoords.forEach(function (_ref3, index) {\n    var _ref4 = _slicedToArray(_ref3, 2),\n        x2 = _ref4[0],\n        y2 = _ref4[1];\n\n    if (index === 0) {\n      return;\n    }\n\n    var _projectedCoords = _slicedToArray(projectedCoords[index - 1], 2),\n        x1 = _projectedCoords[0],\n        y1 = _projectedCoords[1]; // line from projectedCoords[index - 1] to projectedCoords[index]\n    // convert to Ax + By + C = 0\n\n\n    var A = y1 - y2;\n    var B = x2 - x1;\n    var C = x1 * y2 - x2 * y1; // https://en.wikipedia.org/wiki/Distance_from_a_point_to_a_line\n\n    var div = A * A + B * B;\n    var distance = Math.abs(A * x + B * y + C) / Math.sqrt(div); // TODO: Check if inside bounds\n\n    if (distance < minDistance) {\n      minDistance = distance;\n      minPointInfo = {\n        index: index,\n        x0: (B * (B * x - A * y) - A * C) / div,\n        y0: (A * (-B * x + A * y) - B * C) / div\n      };\n    }\n  }); // @ts-ignore\n\n  var _minPointInfo = minPointInfo,\n      index = _minPointInfo.index,\n      x0 = _minPointInfo.x0,\n      y0 = _minPointInfo.y0;\n\n  var _projectedCoords2 = _slicedToArray(projectedCoords[index - 1], 3),\n      x1 = _projectedCoords2[0],\n      y1 = _projectedCoords2[1],\n      _projectedCoords2$ = _projectedCoords2[2],\n      z1 = _projectedCoords2$ === void 0 ? 0 : _projectedCoords2$;\n\n  var _projectedCoords$inde = _slicedToArray(projectedCoords[index], 3),\n      x2 = _projectedCoords$inde[0],\n      y2 = _projectedCoords$inde[1],\n      _projectedCoords$inde2 = _projectedCoords$inde[2],\n      z2 = _projectedCoords$inde2 === void 0 ? 0 : _projectedCoords$inde2; // calculate what ratio of the line we are on to find the proper z\n\n\n  var lineLength = distance2d(x1, y1, x2, y2);\n  var startToPointLength = distance2d(x1, y1, x0, y0);\n  var ratio = startToPointLength / lineLength;\n  var z0 = mix(z1, z2, ratio);\n  return {\n    type: 'Feature',\n    geometry: {\n      type: 'Point',\n      coordinates: wmViewport.unproject([x0, y0, z0])\n    },\n    properties: {\n      // TODO: calculate the distance in proper units\n      dist: minDistance,\n      index: index - 1\n    }\n  };\n}\n\nfunction nearestPointOnLine(lines, inPoint, viewport) {\n  var _lines$geometry, _lines$geometry2;\n\n  var mercator;\n\n  if (viewport) {\n    mercator = new _viewportMercatorProject[\"default\"](viewport);\n  }\n\n  var closestPoint = (0, _helpers.point)([Infinity, Infinity], {\n    dist: Infinity\n  });\n\n  if (!((_lines$geometry = lines.geometry) === null || _lines$geometry === void 0 ? void 0 : _lines$geometry.coordinates.length) || ((_lines$geometry2 = lines.geometry) === null || _lines$geometry2 === void 0 ? void 0 : _lines$geometry2.coordinates.length) < 2) {\n    return closestPoint;\n  } // @ts-ignore\n\n\n  (0, _meta.flattenEach)(lines, function (line) {\n    var coords = (0, _invariant.getCoords)(line); // @ts-ignore\n\n    var pointCoords = (0, _invariant.getCoords)(inPoint);\n    var minDist;\n    var to;\n    var from;\n    var x;\n    var y;\n    var segmentIdx;\n    var dist;\n\n    if (coords.length > 1 && pointCoords.length) {\n      var lineCoordinates;\n      var pointCoordinate; // If viewport is given, then translate these coordinates to pixels to increase precision\n\n      if (mercator) {\n        lineCoordinates = coords.map(function (lineCoordinate) {\n          return mercator.project(lineCoordinate);\n        });\n        pointCoordinate = mercator.project(pointCoords);\n      } else {\n        lineCoordinates = coords;\n        pointCoordinate = pointCoords;\n      }\n\n      for (var n = 1; n < lineCoordinates.length; n++) {\n        if (lineCoordinates[n][0] !== lineCoordinates[n - 1][0]) {\n          var slope = (lineCoordinates[n][1] - lineCoordinates[n - 1][1]) / (lineCoordinates[n][0] - lineCoordinates[n - 1][0]);\n          var inverseSlope = lineCoordinates[n][1] - slope * lineCoordinates[n][0];\n          dist = Math.abs(slope * pointCoordinate[0] + inverseSlope - pointCoordinate[1]) / Math.sqrt(slope * slope + 1);\n        } else dist = Math.abs(pointCoordinate[0] - lineCoordinates[n][0]); // length^2 of line segment\n\n\n        var rl2 = Math.pow(lineCoordinates[n][1] - lineCoordinates[n - 1][1], 2) + Math.pow(lineCoordinates[n][0] - lineCoordinates[n - 1][0], 2); // distance^2 of pt to end line segment\n\n        var ln2 = Math.pow(lineCoordinates[n][1] - pointCoordinate[1], 2) + Math.pow(lineCoordinates[n][0] - pointCoordinate[0], 2); // distance^2 of pt to begin line segment\n\n        var lnm12 = Math.pow(lineCoordinates[n - 1][1] - pointCoordinate[1], 2) + Math.pow(lineCoordinates[n - 1][0] - pointCoordinate[0], 2); // minimum distance^2 of pt to infinite line\n\n        var dist2 = Math.pow(dist, 2); // calculated length^2 of line segment\n\n        var calcrl2 = ln2 - dist2 + lnm12 - dist2; // redefine minimum distance to line segment (not infinite line) if necessary\n\n        if (calcrl2 > rl2) {\n          dist = Math.sqrt(Math.min(ln2, lnm12));\n        }\n\n        if (minDist === null || minDist === undefined || minDist > dist) {\n          // eslint-disable-next-line max-depth\n          if (calcrl2 > rl2) {\n            // eslint-disable-next-line max-depth\n            if (lnm12 < ln2) {\n              to = 0; // nearer to previous point\n\n              from = 1;\n            } else {\n              from = 0; // nearer to current point\n\n              to = 1;\n            }\n          } else {\n            // perpendicular from point intersects line segment\n            to = Math.sqrt(lnm12 - dist2) / Math.sqrt(rl2);\n            from = Math.sqrt(ln2 - dist2) / Math.sqrt(rl2);\n          }\n\n          minDist = dist;\n          segmentIdx = n;\n        }\n      }\n\n      var dx = lineCoordinates[segmentIdx - 1][0] - lineCoordinates[segmentIdx][0];\n      var dy = lineCoordinates[segmentIdx - 1][1] - lineCoordinates[segmentIdx][1];\n      x = lineCoordinates[segmentIdx - 1][0] - dx * to;\n      y = lineCoordinates[segmentIdx - 1][1] - dy * to;\n    } // index needs to be -1 because we have to account for the shift from initial backscan\n\n\n    var snapPoint = {\n      x: x,\n      y: y,\n      idx: segmentIdx - 1,\n      to: to,\n      from: from\n    };\n\n    if (mercator) {\n      var pixelToLatLong = mercator.unproject([snapPoint.x, snapPoint.y]);\n      snapPoint = {\n        x: pixelToLatLong[0],\n        y: pixelToLatLong[1],\n        idx: segmentIdx - 1,\n        to: to,\n        from: from\n      };\n    }\n\n    closestPoint = (0, _helpers.point)([snapPoint.x, snapPoint.y], {\n      dist: Math.abs(snapPoint.from - snapPoint.to),\n      index: snapPoint.idx\n    });\n  });\n  return closestPoint;\n}\n\nfunction getPickedEditHandle(picks) {\n  var handles = getPickedEditHandles(picks);\n  return handles.length ? handles[0] : null;\n}\n\nfunction getPickedSnapSourceEditHandle(picks) {\n  var handles = getPickedEditHandles(picks);\n  return handles.find(function (handle) {\n    return handle.properties.editHandleType === 'snap-source';\n  });\n}\n\nfunction getNonGuidePicks(picks) {\n  return picks && picks.filter(function (pick) {\n    return !pick.isGuide;\n  });\n}\n\nfunction getPickedExistingEditHandle(picks) {\n  var handles = getPickedEditHandles(picks);\n  return handles.find(function (_ref5) {\n    var properties = _ref5.properties;\n    return properties.featureIndex >= 0 && properties.editHandleType === 'existing';\n  });\n}\n\nfunction getPickedIntermediateEditHandle(picks) {\n  var handles = getPickedEditHandles(picks);\n  return handles.find(function (_ref6) {\n    var properties = _ref6.properties;\n    return properties.featureIndex >= 0 && properties.editHandleType === 'intermediate';\n  });\n}\n\nfunction getPickedEditHandles(picks) {\n  var handles = picks && picks.filter(function (pick) {\n    return pick.isGuide && pick.object.properties.guideType === 'editHandle';\n  }).map(function (pick) {\n    return pick.object;\n  }) || [];\n  return handles;\n}\n\nfunction getEditHandlesForGeometry(geometry, featureIndex) {\n  var editHandleType = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'existing';\n  var handles = [];\n\n  switch (geometry.type) {\n    case 'Point':\n      // positions are not nested\n      handles = [{\n        type: 'Feature',\n        properties: {\n          guideType: 'editHandle',\n          editHandleType: editHandleType,\n          positionIndexes: [],\n          featureIndex: featureIndex\n        },\n        geometry: {\n          type: 'Point',\n          coordinates: geometry.coordinates\n        }\n      }];\n      break;\n\n    case 'MultiPoint':\n    case 'LineString':\n      // positions are nested 1 level\n      handles = handles.concat(getEditHandlesForCoordinates(geometry.coordinates, [], featureIndex, editHandleType));\n      break;\n\n    case 'Polygon':\n    case 'MultiLineString':\n      // positions are nested 2 levels\n      for (var a = 0; a < geometry.coordinates.length; a++) {\n        handles = handles.concat(getEditHandlesForCoordinates(geometry.coordinates[a], [a], featureIndex, editHandleType));\n\n        if (geometry.type === 'Polygon') {\n          // Don't repeat the first/last handle for Polygons\n          handles = handles.slice(0, -1);\n        }\n      }\n\n      break;\n\n    case 'MultiPolygon':\n      // positions are nested 3 levels\n      for (var _a = 0; _a < geometry.coordinates.length; _a++) {\n        for (var b = 0; b < geometry.coordinates[_a].length; b++) {\n          handles = handles.concat(getEditHandlesForCoordinates(geometry.coordinates[_a][b], [_a, b], featureIndex, editHandleType)); // Don't repeat the first/last handle for Polygons\n\n          handles = handles.slice(0, -1);\n        }\n      }\n\n      break;\n\n    default:\n      // @ts-ignore\n      throw Error(\"Unhandled geometry type: \".concat(geometry.type));\n  }\n\n  return handles;\n}\n\nfunction getEditHandlesForCoordinates(coordinates, positionIndexPrefix, featureIndex) {\n  var editHandleType = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 'existing';\n  var editHandles = [];\n\n  for (var i = 0; i < coordinates.length; i++) {\n    var position = coordinates[i];\n    editHandles.push({\n      type: 'Feature',\n      properties: {\n        guideType: 'editHandle',\n        positionIndexes: [].concat(_toConsumableArray(positionIndexPrefix), [i]),\n        featureIndex: featureIndex,\n        editHandleType: editHandleType\n      },\n      geometry: {\n        type: 'Point',\n        coordinates: position\n      }\n    });\n  }\n\n  return editHandles;\n}\n/**\n * Calculates coordinates for a feature preserving rectangular shape.\n * @param feature Feature before modification.\n * @param editHandleIndex Index of the point to modify.\n * @param mapCoords New position for the point.\n * @returns Updated coordinates.\n */\n\n\nfunction updateRectanglePosition(feature, editHandleIndex, mapCoords) {\n  var coordinates = feature.geometry.coordinates;\n\n  if (!coordinates) {\n    return null;\n  }\n\n  var points = coordinates[0].slice(0, 4);\n  points[editHandleIndex % 4] = mapCoords;\n  var p0 = points[(editHandleIndex + 2) % 4];\n  var p2 = points[editHandleIndex % 4];\n  points[(editHandleIndex + 1) % 4] = [p2[0], p0[1]];\n  points[(editHandleIndex + 3) % 4] = [p0[0], p2[1]];\n  return [[].concat(_toConsumableArray(points), [points[0]])];\n}\n/** Creates a copy of feature's coordinates.\n * Each position in coordinates is transformed by calling the provided function.\n * @param coords Coordinates of a feature.\n * @param callback A function to transform each coordinate.\n * @retuns Transformed coordinates.\n */\n\n\nfunction mapCoords(coords, callback) {\n  if (typeof coords[0] === 'number') {\n    if (!isNaN(coords[0]) && isFinite(coords[0])) {\n      return callback(coords);\n    }\n\n    return coords;\n  }\n\n  return coords.map(function (coord) {\n    return mapCoords(coord, callback);\n  }).filter(Boolean);\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy91dGlscy50cyJdLCJuYW1lcyI6WyJ0b0RlY2tDb2xvciIsImNvbG9yIiwiZGVmYXVsdENvbG9yIiwiQXJyYXkiLCJpc0FycmF5IiwicmVjdXJzaXZlbHlUcmF2ZXJzZU5lc3RlZEFycmF5cyIsImFycmF5IiwicHJlZml4IiwiZm4iLCJpIiwibGVuZ3RoIiwiZ2VuZXJhdGVQb2ludHNQYXJhbGxlbFRvTGluZVBvaW50cyIsInAxIiwicDIiLCJtYXBDb29yZHMiLCJsaW5lU3RyaW5nIiwidHlwZSIsImNvb3JkaW5hdGVzIiwicHQiLCJkZGlzdGFuY2UiLCJsaW5lQmVhcmluZyIsImlzUG9pbnRUb0xlZnRPZkxpbmUiLCJvcnRob2dvbmFsQmVhcmluZyIsInAzIiwicDQiLCJnZW9tZXRyeSIsImRpc3RhbmNlMmQiLCJ4MSIsInkxIiwieDIiLCJ5MiIsImR4IiwiZHkiLCJNYXRoIiwic3FydCIsIm1peCIsImEiLCJiIiwicmF0aW8iLCJuZWFyZXN0UG9pbnRPblByb2plY3RlZExpbmUiLCJsaW5lIiwiaW5Qb2ludCIsInZpZXdwb3J0Iiwid21WaWV3cG9ydCIsIldlYk1lcmNhdG9yVmlld3BvcnQiLCJwcm9qZWN0ZWRDb29yZHMiLCJtYXAiLCJ4IiwieSIsInoiLCJwcm9qZWN0IiwibWluRGlzdGFuY2UiLCJJbmZpbml0eSIsIm1pblBvaW50SW5mbyIsImZvckVhY2giLCJpbmRleCIsIkEiLCJCIiwiQyIsImRpdiIsImRpc3RhbmNlIiwiYWJzIiwieDAiLCJ5MCIsInoxIiwiejIiLCJsaW5lTGVuZ3RoIiwic3RhcnRUb1BvaW50TGVuZ3RoIiwiejAiLCJ1bnByb2plY3QiLCJwcm9wZXJ0aWVzIiwiZGlzdCIsIm5lYXJlc3RQb2ludE9uTGluZSIsImxpbmVzIiwibWVyY2F0b3IiLCJjbG9zZXN0UG9pbnQiLCJjb29yZHMiLCJwb2ludENvb3JkcyIsIm1pbkRpc3QiLCJ0byIsImZyb20iLCJzZWdtZW50SWR4IiwibGluZUNvb3JkaW5hdGVzIiwicG9pbnRDb29yZGluYXRlIiwibGluZUNvb3JkaW5hdGUiLCJuIiwic2xvcGUiLCJpbnZlcnNlU2xvcGUiLCJybDIiLCJwb3ciLCJsbjIiLCJsbm0xMiIsImRpc3QyIiwiY2FsY3JsMiIsIm1pbiIsInVuZGVmaW5lZCIsInNuYXBQb2ludCIsImlkeCIsInBpeGVsVG9MYXRMb25nIiwiZ2V0UGlja2VkRWRpdEhhbmRsZSIsInBpY2tzIiwiaGFuZGxlcyIsImdldFBpY2tlZEVkaXRIYW5kbGVzIiwiZ2V0UGlja2VkU25hcFNvdXJjZUVkaXRIYW5kbGUiLCJmaW5kIiwiaGFuZGxlIiwiZWRpdEhhbmRsZVR5cGUiLCJnZXROb25HdWlkZVBpY2tzIiwiZmlsdGVyIiwicGljayIsImlzR3VpZGUiLCJnZXRQaWNrZWRFeGlzdGluZ0VkaXRIYW5kbGUiLCJmZWF0dXJlSW5kZXgiLCJnZXRQaWNrZWRJbnRlcm1lZGlhdGVFZGl0SGFuZGxlIiwib2JqZWN0IiwiZ3VpZGVUeXBlIiwiZ2V0RWRpdEhhbmRsZXNGb3JHZW9tZXRyeSIsInBvc2l0aW9uSW5kZXhlcyIsImNvbmNhdCIsImdldEVkaXRIYW5kbGVzRm9yQ29vcmRpbmF0ZXMiLCJzbGljZSIsIkVycm9yIiwicG9zaXRpb25JbmRleFByZWZpeCIsImVkaXRIYW5kbGVzIiwicG9zaXRpb24iLCJwdXNoIiwidXBkYXRlUmVjdGFuZ2xlUG9zaXRpb24iLCJmZWF0dXJlIiwiZWRpdEhhbmRsZUluZGV4IiwicG9pbnRzIiwicDAiLCJjYWxsYmFjayIsImlzTmFOIiwiaXNGaW5pdGUiLCJjb29yZCIsIkJvb2xlYW4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBZU8sU0FBU0EsV0FBVCxDQUNMQyxLQURLLEVBRzZCO0FBQUEsTUFEbENDLFlBQ2tDLHVFQURlLENBQUMsR0FBRCxFQUFNLENBQU4sRUFBUyxDQUFULEVBQVksR0FBWixDQUNm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LEVBQUFBLE1BQU0sQ0FBQyxDQUFDRCxlQUFlLEdBQUcsQ0FBbkIsSUFBd0IsQ0FBekIsQ0FBTixHQUFvQyxDQUFDbkgsRUFBRSxDQUFDLENBQUQsQ0FBSCxFQUFRcUgsRUFBRSxDQUFDLENBQUQsQ0FBVixDQUFwQztBQUNBRCxFQUFBQSxNQUFNLENBQUMsQ0FBQ0QsZUFBZSxHQUFHLENBQW5CLElBQXdCLENBQXpCLENBQU4sR0FBb0MsQ0FBQ0UsRUFBRSxDQUFDLENBQUQsQ0FBSCxFQUFRckgsRUFBRSxDQUFDLENBQUQsQ0FBVixDQUFwQztBQUVBLFNBQU8sOEJBQUtvSCxNQUFMLElBQWFBLE1BQU0sQ0FBQyxDQUFELENBQW5CLEdBQVA7QUFDRDtBQUVEOzs7Ozs7OztBQU1PLFNBQVNuSCxTQUFULENBQ0w4RCxNQURLLEVBRUx1RCxRQUZLLEVBR1c7QUFDaEIsTUFBSSxPQUFPdkQsTUFBTSxDQUFDLENBQUQsQ0FBYixLQUFxQixRQUF6QixFQUFtQztBQUNqQyxRQUFJLENBQUN3RCxLQUFLLENBQUN4RCxNQUFNLENBQUMsQ0FBRCxDQUFQLENBQU4sSUFBcUJ5RCxRQUFRLENBQUN6RCxNQUFNLENBQUMsQ0FBRCxDQUFQLENBQWpDLEVBQThDO0FBQzVDLGFBQU91RCxRQUFRLENBQUN2RCxNQUFELENBQWY7QUFDRDs7QUFDRCxXQUFPQSxNQUFQO0FBQ0Q7O0FBRUQsU0FBUUEsTUFBRCxDQUNKOUIsR0FESSxDQUNBLFVBQUN3RixLQUFELEVBQVc7QUFDZCxXQUFPeEgsU0FBUyxDQUFDd0gsS0FBRCxFQUFRSCxRQUFSLENBQWhCO0FBQ0QsR0FISSxFQUlKdkIsTUFKSSxDQUlHMkIsT0FKSCxDQUFQO0FBS0QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgZGVzdGluYXRpb24gZnJvbSAnQHR1cmYvZGVzdGluYXRpb24nO1xuaW1wb3J0IGJlYXJpbmcgZnJvbSAnQHR1cmYvYmVhcmluZyc7XG5pbXBvcnQgcG9pbnRUb0xpbmVEaXN0YW5jZSBmcm9tICdAdHVyZi9wb2ludC10by1saW5lLWRpc3RhbmNlJztcbmltcG9ydCB7IGZsYXR0ZW5FYWNoIH0gZnJvbSAnQHR1cmYvbWV0YSc7XG5pbXBvcnQgeyBwb2ludCwgTXVsdGlMaW5lU3RyaW5nIH0gZnJvbSAnQHR1cmYvaGVscGVycyc7XG5pbXBvcnQgeyBnZXRDb29yZHMgfSBmcm9tICdAdHVyZi9pbnZhcmlhbnQnO1xuaW1wb3J0IFdlYk1lcmNhdG9yVmlld3BvcnQgZnJvbSAndmlld3BvcnQtbWVyY2F0b3ItcHJvamVjdCc7XG5pbXBvcnQgeyBWaWV3cG9ydCwgUGljaywgRWRpdEhhbmRsZUZlYXR1cmUsIEVkaXRIYW5kbGVUeXBlIH0gZnJvbSAnLi90eXBlcyc7XG5pbXBvcnQge1xuICBHZW9tZXRyeSxcbiAgUG9zaXRpb24sXG4gIFBvaW50LFxuICBMaW5lU3RyaW5nLFxuICBQb2x5Z29uLFxuICBGZWF0dXJlT2YsXG4gIEZlYXR1cmVXaXRoUHJvcHMsXG4gIEFueUNvb3JkaW5hdGVzLFxufSBmcm9tICcuL2dlb2pzb24tdHlwZXMnO1xuXG5leHBvcnQgdHlwZSBOZWFyZXN0UG9pbnRUeXBlID0gRmVhdHVyZVdpdGhQcm9wczxQb2ludCwgeyBkaXN0OiBudW1iZXI7IGluZGV4OiBudW1iZXIgfT47XG5cbmV4cG9ydCBmdW5jdGlvbiB0b0RlY2tDb2xvcihcbiAgY29sb3I/OiBbbnVtYmVyLCBudW1iZXIsIG51bWJlciwgbnVtYmVyXSB8IG51bWJlcixcbiAgZGVmYXVsdENvbG9yOiBbbnVtYmVyLCBudW1iZXIsIG51bWJlciwgbnVtYmVyXSA9IFsyNTUsIDAsIDAsIDI1NV1cbik6IFtudW1iZXIsIG51bWJlciwgbnVtYmVyLCBudW1iZXJdIHtcbiAgaWYgKCFBcnJheS5pc0FycmF5KGNvbG9yKSkge1xuICAgIHJldHVybiBkZWZhdWx0Q29sb3I7XG4gIH1cbiAgcmV0dXJuIFtjb2xvclswXSAqIDI1NSwgY29sb3JbMV0gKiAyNTUsIGNvbG9yWzJdICogMjU1LCBjb2xvclszXSAqIDI1NV07XG59XG5cbi8vXG4vLyBhIEdlb0pTT04gaGVscGVyIGZ1bmN0aW9uIHRoYXQgY2FsbHMgdGhlIHByb3ZpZGVkIGZ1bmN0aW9uIHdpdGhcbi8vIGFuIGFyZ3VtZW50IHRoYXQgaXMgdGhlIG1vc3QgZGVlcGx5LW5lc3RlZCBhcnJheSBoYXZpbmcgZWxlbWVudHNcbi8vIHRoYXQgYXJlIGFycmF5cyBvZiBwcmltaXRpdmVzIGFzIGFuIGFyZ3VtZW50LCBlLmcuXG4vL1xuLy8ge1xuLy8gICBcInR5cGVcIjogXCJNdWx0aVBvbHlnb25cIixcbi8vICAgXCJjb29yZGluYXRlc1wiOiBbXG4vLyAgICAgICBbXG4vLyAgICAgICAgICAgW1szMCwgMjBdLCBbNDUsIDQwXSwgWzEwLCA0MF0sIFszMCwgMjBdXVxuLy8gICAgICAgXSxcbi8vICAgICAgIFtcbi8vICAgICAgICAgICBbWzE1LCA1XSwgWzQwLCAxMF0sIFsxMCwgMjBdLCBbNSwgMTBdLCBbMTUsIDVdXVxuLy8gICAgICAgXVxuLy8gICBdXG4vLyB9XG4vL1xuLy8gdGhlIGZ1bmN0aW9uIHdvdWxkIGJlIGNhbGxlZCBvbjpcbi8vXG4vLyBbWzMwLCAyMF0sIFs0NSwgNDBdLCBbMTAsIDQwXSwgWzMwLCAyMF1dXG4vL1xuLy8gYW5kXG4vL1xuLy8gW1sxNSwgNV0sIFs0MCwgMTBdLCBbMTAsIDIwXSwgWzUsIDEwXSwgWzE1LCA1XV1cbi8vXG5leHBvcnQgZnVuY3Rpb24gcmVjdXJzaXZlbHlUcmF2ZXJzZU5lc3RlZEFycmF5cyhcbiAgYXJyYXk6IEFycmF5PGFueT4sXG4gIHByZWZpeDogQXJyYXk8bnVtYmVyPixcbiAgZm46IEZ1bmN0aW9uXG4pIHtcbiAgaWYgKCFBcnJheS5pc0FycmF5KGFycmF5WzBdKSkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgYXJyYXkubGVuZ3RoOyBpKyspIHtcbiAgICBpZiAocmVjdXJzaXZlbHlUcmF2ZXJzZU5lc3RlZEFycmF5cyhhcnJheVtpXSwgWy4uLnByZWZpeCwgaV0sIGZuKSkge1xuICAgICAgZm4oYXJyYXksIHByZWZpeCk7XG4gICAgICBicmVhaztcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGZhbHNlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2VuZXJhdGVQb2ludHNQYXJhbGxlbFRvTGluZVBvaW50cyhcbiAgcDE6IFBvc2l0aW9uLFxuICBwMjogUG9zaXRpb24sXG4gIG1hcENvb3JkczogUG9zaXRpb25cbik6IFBvc2l0aW9uW10ge1xuICBjb25zdCBsaW5lU3RyaW5nOiBMaW5lU3RyaW5nID0ge1xuICAgIHR5cGU6ICdMaW5lU3RyaW5nJyxcbiAgICBjb29yZGluYXRlczogW3AxLCBwMl0sXG4gIH07XG4gIGNvbnN0IHB0ID0gcG9pbnQobWFwQ29vcmRzKTtcbiAgY29uc3QgZGRpc3RhbmNlID0gcG9pbnRUb0xpbmVEaXN0YW5jZShwdCwgbGluZVN0cmluZyk7XG4gIGNvbnN0IGxpbmVCZWFyaW5nID0gYmVhcmluZyhwMSwgcDIpO1xuXG4gIC8vIENoZWNrIGlmIGN1cnJlbnQgcG9pbnQgaXMgdG8gdGhlIGxlZnQgb3IgcmlnaHQgb2YgbGluZVxuICAvLyBMaW5lIGZyb20gQT0oeDEseTEpIHRvIEI9KHgyLHkyKSBhIHBvaW50IFA9KHgseSlcbiAgLy8gdGhlbiAoeOKIkngxKSh5MuKIknkxKeKIkih54oiSeTEpKHgy4oiSeDEpXG4gIGNvbnN0IGlzUG9pbnRUb0xlZnRPZkxpbmUgPVxuICAgIChtYXBDb29yZHNbMF0gLSBwMVswXSkgKiAocDJbMV0gLSBwMVsxXSkgLSAobWFwQ29vcmRzWzFdIC0gcDFbMV0pICogKHAyWzBdIC0gcDFbMF0pO1xuXG4gIC8vIEJlYXJpbmcgdG8gZHJhdyBwZXJwZW5kaWN1bGFyIHRvIHRoZSBsaW5lIHN0cmluZ1xuICBjb25zdCBvcnRob2dvbmFsQmVhcmluZyA9IGlzUG9pbnRUb0xlZnRPZkxpbmUgPCAwID8gbGluZUJlYXJpbmcgLSA5MCA6IGxpbmVCZWFyaW5nIC0gMjcwO1xuXG4gIC8vIEdldCBjb29yZGluYXRlcyBmb3IgdGhlIHBvaW50IHAzIGFuZCBwNCB3aGljaCBhcmUgcGVycGVuZGljdWxhciB0byB0aGUgbGluZVN0cmluZ1xuICAvLyBBZGQgdGhlIGRpc3RhbmNlIGFzIHRoZSBjdXJyZW50IHBvc2l0aW9uIG1vdmVzIGF3YXkgZnJvbSB0aGUgbGluZVN0cmluZ1xuICBjb25zdCBwMyA9IGRlc3RpbmF0aW9uKHAyLCBkZGlzdGFuY2UsIG9ydGhvZ29uYWxCZWFyaW5nKTtcbiAgY29uc3QgcDQgPSBkZXN0aW5hdGlvbihwMSwgZGRpc3RhbmNlLCBvcnRob2dvbmFsQmVhcmluZyk7XG5cbiAgcmV0dXJuIFtwMy5nZW9tZXRyeS5jb29yZGluYXRlcywgcDQuZ2VvbWV0cnkuY29vcmRpbmF0ZXNdIGFzIFBvc2l0aW9uW107XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkaXN0YW5jZTJkKHgxOiBudW1iZXIsIHkxOiBudW1iZXIsIHgyOiBudW1iZXIsIHkyOiBudW1iZXIpOiBudW1iZXIge1xuICBjb25zdCBkeCA9IHgxIC0geDI7XG4gIGNvbnN0IGR5ID0geTEgLSB5MjtcbiAgcmV0dXJuIE1hdGguc3FydChkeCAqIGR4ICsgZHkgKiBkeSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtaXgoYTogbnVtYmVyLCBiOiBudW1iZXIsIHJhdGlvOiBudW1iZXIpOiBudW1iZXIge1xuICByZXR1cm4gYiAqIHJhdGlvICsgYSAqICgxIC0gcmF0aW8pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbmVhcmVzdFBvaW50T25Qcm9qZWN0ZWRMaW5lKFxuICBsaW5lOiBGZWF0dXJlT2Y8TGluZVN0cmluZz4sXG4gIGluUG9pbnQ6IEZlYXR1cmVPZjxQb2ludD4sXG4gIHZpZXdwb3J0OiBWaWV3cG9ydFxuKTogTmVhcmVzdFBvaW50VHlwZSB7XG4gIGNvbnN0IHdtVmlld3BvcnQgPSBuZXcgV2ViTWVyY2F0b3JWaWV3cG9ydCh2aWV3cG9ydCk7XG4gIC8vIFByb2plY3QgdGhlIGxpbmUgdG8gdmlld3BvcnQsIHRoZW4gZmluZCB0aGUgbmVhcmVzdCBwb2ludFxuICBjb25zdCBjb29yZGluYXRlczogQXJyYXk8QXJyYXk8bnVtYmVyPj4gPSBsaW5lLmdlb21ldHJ5LmNvb3JkaW5hdGVzIGFzIGFueTtcbiAgY29uc3QgcHJvamVjdGVkQ29vcmRzID0gY29vcmRpbmF0ZXMubWFwKChbeCwgeSwgeiA9IDBdKSA9PiB3bVZpZXdwb3J0LnByb2plY3QoW3gsIHksIHpdKSk7XG4gIC8vIEB0cy1pZ25vcmVcbiAgY29uc3QgW3gsIHldID0gd21WaWV3cG9ydC5wcm9qZWN0KGluUG9pbnQuZ2VvbWV0cnkuY29vcmRpbmF0ZXMpO1xuICAvLyBjb25zb2xlLmxvZygncHJvamVjdGVkQ29vcmRzJywgSlNPTi5zdHJpbmdpZnkocHJvamVjdGVkQ29vcmRzKSk7XG5cbiAgbGV0IG1pbkRpc3RhbmNlID0gSW5maW5pdHk7XG4gIGxldCBtaW5Qb2ludEluZm8gPSB7fTtcblxuICBwcm9qZWN0ZWRDb29yZHMuZm9yRWFjaCgoW3gyLCB5Ml0sIGluZGV4KSA9PiB7XG4gICAgaWYgKGluZGV4ID09PSAwKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgW3gxLCB5MV0gPSBwcm9qZWN0ZWRDb29yZHNbaW5kZXggLSAxXTtcblxuICAgIC8vIGxpbmUgZnJvbSBwcm9qZWN0ZWRDb29yZHNbaW5kZXggLSAxXSB0byBwcm9qZWN0ZWRDb29yZHNbaW5kZXhdXG4gICAgLy8gY29udmVydCB0byBBeCArIEJ5ICsgQyA9IDBcbiAgICBjb25zdCBBID0geTEgLSB5MjtcbiAgICBjb25zdCBCID0geDIgLSB4MTtcbiAgICBjb25zdCBDID0geDEgKiB5MiAtIHgyICogeTE7XG5cbiAgICAvLyBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9EaXN0YW5jZV9mcm9tX2FfcG9pbnRfdG9fYV9saW5lXG4gICAgY29uc3QgZGl2ID0gQSAqIEEgKyBCICogQjtcbiAgICBjb25zdCBkaXN0YW5jZSA9IE1hdGguYWJzKEEgKiB4ICsgQiAqIHkgKyBDKSAvIE1hdGguc3FydChkaXYpO1xuXG4gICAgLy8gVE9ETzogQ2hlY2sgaWYgaW5zaWRlIGJvdW5kc1xuXG4gICAgaWYgKGRpc3RhbmNlIDwgbWluRGlzdGFuY2UpIHtcbiAgICAgIG1pbkRpc3RhbmNlID0gZGlzdGFuY2U7XG4gICAgICBtaW5Qb2ludEluZm8gPSB7XG4gICAgICAgIGluZGV4LFxuICAgICAgICB4MDogKEIgKiAoQiAqIHggLSBBICogeSkgLSBBICogQykgLyBkaXYsXG4gICAgICAgIHkwOiAoQSAqICgtQiAqIHggKyBBICogeSkgLSBCICogQykgLyBkaXYsXG4gICAgICB9O1xuICAgIH1cbiAgfSk7XG4gIC8vIEB0cy1pZ25vcmVcbiAgY29uc3QgeyBpbmRleCwgeDAsIHkwIH0gPSBtaW5Qb2ludEluZm87XG4gIGNvbnN0IFt4MSwgeTEsIHoxID0gMF0gPSBwcm9qZWN0ZWRDb29yZHNbaW5kZXggLSAxXTtcbiAgY29uc3QgW3gyLCB5MiwgejIgPSAwXSA9IHByb2plY3RlZENvb3Jkc1tpbmRleF07XG5cbiAgLy8gY2FsY3VsYXRlIHdoYXQgcmF0aW8gb2YgdGhlIGxpbmUgd2UgYXJlIG9uIHRvIGZpbmQgdGhlIHByb3BlciB6XG4gIGNvbnN0IGxpbmVMZW5ndGggPSBkaXN0YW5jZTJkKHgxLCB5MSwgeDIsIHkyKTtcbiAgY29uc3Qgc3RhcnRUb1BvaW50TGVuZ3RoID0gZGlzdGFuY2UyZCh4MSwgeTEsIHgwLCB5MCk7XG4gIGNvbnN0IHJhdGlvID0gc3RhcnRUb1BvaW50TGVuZ3RoIC8gbGluZUxlbmd0aDtcbiAgY29uc3QgejAgPSBtaXgoejEsIHoyLCByYXRpbyk7XG5cbiAgcmV0dXJuIHtcbiAgICB0eXBlOiAnRmVhdHVyZScsXG4gICAgZ2VvbWV0cnk6IHtcbiAgICAgIHR5cGU6ICdQb2ludCcsXG4gICAgICBjb29yZGluYXRlczogd21WaWV3cG9ydC51bnByb2plY3QoW3gwLCB5MCwgejBdKSxcbiAgICB9LFxuICAgIHByb3BlcnRpZXM6IHtcbiAgICAgIC8vIFRPRE86IGNhbGN1bGF0ZSB0aGUgZGlzdGFuY2UgaW4gcHJvcGVyIHVuaXRzXG4gICAgICBkaXN0OiBtaW5EaXN0YW5jZSxcbiAgICAgIGluZGV4OiBpbmRleCAtIDEsXG4gICAgfSxcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG5lYXJlc3RQb2ludE9uTGluZTxHIGV4dGVuZHMgTGluZVN0cmluZyB8IE11bHRpTGluZVN0cmluZz4oXG4gIGxpbmVzOiBGZWF0dXJlT2Y8TGluZVN0cmluZz4sXG4gIGluUG9pbnQ6IEZlYXR1cmVPZjxQb2ludD4sXG4gIHZpZXdwb3J0PzogVmlld3BvcnRcbik6IE5lYXJlc3RQb2ludFR5cGUge1xuICBsZXQgbWVyY2F0b3I7XG5cbiAgaWYgKHZpZXdwb3J0KSB7XG4gICAgbWVyY2F0b3IgPSBuZXcgV2ViTWVyY2F0b3JWaWV3cG9ydCh2aWV3cG9ydCk7XG4gIH1cbiAgbGV0IGNsb3Nlc3RQb2ludDogYW55ID0gcG9pbnQoW0luZmluaXR5LCBJbmZpbml0eV0sIHtcbiAgICBkaXN0OiBJbmZpbml0eSxcbiAgfSk7XG5cbiAgaWYgKCFsaW5lcy5nZW9tZXRyeT8uY29vcmRpbmF0ZXMubGVuZ3RoIHx8IGxpbmVzLmdlb21ldHJ5Py5jb29yZGluYXRlcy5sZW5ndGggPCAyKSB7XG4gICAgcmV0dXJuIGNsb3Nlc3RQb2ludDtcbiAgfVxuXG4gIC8vIEB0cy1pZ25vcmVcbiAgZmxhdHRlbkVhY2gobGluZXMsIChsaW5lOiBhbnkpID0+IHtcbiAgICBjb25zdCBjb29yZHM6IGFueSA9IGdldENvb3JkcyhsaW5lKTtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgY29uc3QgcG9pbnRDb29yZHM6IGFueSA9IGdldENvb3JkcyhpblBvaW50KTtcblxuICAgIGxldCBtaW5EaXN0O1xuICAgIGxldCB0bztcbiAgICBsZXQgZnJvbTtcbiAgICBsZXQgeDtcbiAgICBsZXQgeTtcbiAgICBsZXQgc2VnbWVudElkeDtcbiAgICBsZXQgZGlzdDtcblxuICAgIGlmIChjb29yZHMubGVuZ3RoID4gMSAmJiBwb2ludENvb3Jkcy5sZW5ndGgpIHtcbiAgICAgIGxldCBsaW5lQ29vcmRpbmF0ZXM7XG4gICAgICBsZXQgcG9pbnRDb29yZGluYXRlO1xuXG4gICAgICAvLyBJZiB2aWV3cG9ydCBpcyBnaXZlbiwgdGhlbiB0cmFuc2xhdGUgdGhlc2UgY29vcmRpbmF0ZXMgdG8gcGl4ZWxzIHRvIGluY3JlYXNlIHByZWNpc2lvblxuICAgICAgaWYgKG1lcmNhdG9yKSB7XG4gICAgICAgIGxpbmVDb29yZGluYXRlcyA9IGNvb3Jkcy5tYXAoKGxpbmVDb29yZGluYXRlKSA9PiBtZXJjYXRvci5wcm9qZWN0KGxpbmVDb29yZGluYXRlKSk7XG4gICAgICAgIHBvaW50Q29vcmRpbmF0ZSA9IG1lcmNhdG9yLnByb2plY3QocG9pbnRDb29yZHMpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbGluZUNvb3JkaW5hdGVzID0gY29vcmRzO1xuICAgICAgICBwb2ludENvb3JkaW5hdGUgPSBwb2ludENvb3JkcztcbiAgICAgIH1cblxuICAgICAgZm9yIChsZXQgbiA9IDE7IG4gPCBsaW5lQ29vcmRpbmF0ZXMubGVuZ3RoOyBuKyspIHtcbiAgICAgICAgaWYgKGxpbmVDb29yZGluYXRlc1tuXVswXSAhPT0gbGluZUNvb3JkaW5hdGVzW24gLSAxXVswXSkge1xuICAgICAgICAgIGNvbnN0IHNsb3BlID1cbiAgICAgICAgICAgIChsaW5lQ29vcmRpbmF0ZXNbbl1bMV0gLSBsaW5lQ29vcmRpbmF0ZXNbbiAtIDFdWzFdKSAvXG4gICAgICAgICAgICAobGluZUNvb3JkaW5hdGVzW25dWzBdIC0gbGluZUNvb3JkaW5hdGVzW24gLSAxXVswXSk7XG4gICAgICAgICAgY29uc3QgaW52ZXJzZVNsb3BlID0gbGluZUNvb3JkaW5hdGVzW25dWzFdIC0gc2xvcGUgKiBsaW5lQ29vcmRpbmF0ZXNbbl1bMF07XG5cbiAgICAgICAgICBkaXN0ID1cbiAgICAgICAgICAgIE1hdGguYWJzKHNsb3BlICogcG9pbnRDb29yZGluYXRlWzBdICsgaW52ZXJzZVNsb3BlIC0gcG9pbnRDb29yZGluYXRlWzFdKSAvXG4gICAgICAgICAgICBNYXRoLnNxcnQoc2xvcGUgKiBzbG9wZSArIDEpO1xuICAgICAgICB9IGVsc2UgZGlzdCA9IE1hdGguYWJzKHBvaW50Q29vcmRpbmF0ZVswXSAtIGxpbmVDb29yZGluYXRlc1tuXVswXSk7XG5cbiAgICAgICAgLy8gbGVuZ3RoXjIgb2YgbGluZSBzZWdtZW50XG4gICAgICAgIGNvbnN0IHJsMiA9XG4gICAgICAgICAgTWF0aC5wb3cobGluZUNvb3JkaW5hdGVzW25dWzFdIC0gbGluZUNvb3JkaW5hdGVzW24gLSAxXVsxXSwgMikgK1xuICAgICAgICAgIE1hdGgucG93KGxpbmVDb29yZGluYXRlc1tuXVswXSAtIGxpbmVDb29yZGluYXRlc1tuIC0gMV1bMF0sIDIpO1xuXG4gICAgICAgIC8vIGRpc3RhbmNlXjIgb2YgcHQgdG8gZW5kIGxpbmUgc2VnbWVudFxuICAgICAgICBjb25zdCBsbjIgPVxuICAgICAgICAgIE1hdGgucG93KGxpbmVDb29yZGluYXRlc1tuXVsxXSAtIHBvaW50Q29vcmRpbmF0ZVsxXSwgMikgK1xuICAgICAgICAgIE1hdGgucG93KGxpbmVDb29yZGluYXRlc1tuXVswXSAtIHBvaW50Q29vcmRpbmF0ZVswXSwgMik7XG5cbiAgICAgICAgLy8gZGlzdGFuY2VeMiBvZiBwdCB0byBiZWdpbiBsaW5lIHNlZ21lbnRcbiAgICAgICAgY29uc3QgbG5tMTIgPVxuICAgICAgICAgIE1hdGgucG93KGxpbmVDb29yZGluYXRlc1tuIC0gMV1bMV0gLSBwb2ludENvb3JkaW5hdGVbMV0sIDIpICtcbiAgICAgICAgICBNYXRoLnBvdyhsaW5lQ29vcmRpbmF0ZXNbbiAtIDFdWzBdIC0gcG9pbnRDb29yZGluYXRlWzBdLCAyKTtcblxuICAgICAgICAvLyBtaW5pbXVtIGRpc3RhbmNlXjIgb2YgcHQgdG8gaW5maW5pdGUgbGluZVxuICAgICAgICBjb25zdCBkaXN0MiA9IE1hdGgucG93KGRpc3QsIDIpO1xuXG4gICAgICAgIC8vIGNhbGN1bGF0ZWQgbGVuZ3RoXjIgb2YgbGluZSBzZWdtZW50XG4gICAgICAgIGNvbnN0IGNhbGNybDIgPSBsbjIgLSBkaXN0MiArIGxubTEyIC0gZGlzdDI7XG5cbiAgICAgICAgLy8gcmVkZWZpbmUgbWluaW11bSBkaXN0YW5jZSB0byBsaW5lIHNlZ21lbnQgKG5vdCBpbmZpbml0ZSBsaW5lKSBpZiBuZWNlc3NhcnlcbiAgICAgICAgaWYgKGNhbGNybDIgPiBybDIpIHtcbiAgICAgICAgICBkaXN0ID0gTWF0aC5zcXJ0KE1hdGgubWluKGxuMiwgbG5tMTIpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChtaW5EaXN0ID09PSBudWxsIHx8IG1pbkRpc3QgPT09IHVuZGVmaW5lZCB8fCBtaW5EaXN0ID4gZGlzdCkge1xuICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBtYXgtZGVwdGhcbiAgICAgICAgICBpZiAoY2FsY3JsMiA+IHJsMikge1xuICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG1heC1kZXB0aFxuICAgICAgICAgICAgaWYgKGxubTEyIDwgbG4yKSB7XG4gICAgICAgICAgICAgIHRvID0gMDsgLy8gbmVhcmVyIHRvIHByZXZpb3VzIHBvaW50XG4gICAgICAgICAgICAgIGZyb20gPSAxO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgZnJvbSA9IDA7IC8vIG5lYXJlciB0byBjdXJyZW50IHBvaW50XG4gICAgICAgICAgICAgIHRvID0gMTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gcGVycGVuZGljdWxhciBmcm9tIHBvaW50IGludGVyc2VjdHMgbGluZSBzZWdtZW50XG4gICAgICAgICAgICB0byA9IE1hdGguc3FydChsbm0xMiAtIGRpc3QyKSAvIE1hdGguc3FydChybDIpO1xuICAgICAgICAgICAgZnJvbSA9IE1hdGguc3FydChsbjIgLSBkaXN0MikgLyBNYXRoLnNxcnQocmwyKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgbWluRGlzdCA9IGRpc3Q7XG4gICAgICAgICAgc2VnbWVudElkeCA9IG47XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgY29uc3QgZHggPSBsaW5lQ29vcmRpbmF0ZXNbc2VnbWVudElkeCAtIDFdWzBdIC0gbGluZUNvb3JkaW5hdGVzW3NlZ21lbnRJZHhdWzBdO1xuICAgICAgY29uc3QgZHkgPSBsaW5lQ29vcmRpbmF0ZXNbc2VnbWVudElkeCAtIDFdWzFdIC0gbGluZUNvb3JkaW5hdGVzW3NlZ21lbnRJZHhdWzFdO1xuXG4gICAgICB4ID0gbGluZUNvb3JkaW5hdGVzW3NlZ21lbnRJZHggLSAxXVswXSAtIGR4ICogdG87XG4gICAgICB5ID0gbGluZUNvb3JkaW5hdGVzW3NlZ21lbnRJZHggLSAxXVsxXSAtIGR5ICogdG87XG4gICAgfVxuXG4gICAgLy8gaW5kZXggbmVlZHMgdG8gYmUgLTEgYmVjYXVzZSB3ZSBoYXZlIHRvIGFjY291bnQgZm9yIHRoZSBzaGlmdCBmcm9tIGluaXRpYWwgYmFja3NjYW5cbiAgICBsZXQgc25hcFBvaW50ID0geyB4LCB5LCBpZHg6IHNlZ21lbnRJZHggLSAxLCB0bywgZnJvbSB9O1xuXG4gICAgaWYgKG1lcmNhdG9yKSB7XG4gICAgICBjb25zdCBwaXhlbFRvTGF0TG9uZyA9IG1lcmNhdG9yLnVucHJvamVjdChbc25hcFBvaW50LngsIHNuYXBQb2ludC55XSk7XG4gICAgICBzbmFwUG9pbnQgPSB7XG4gICAgICAgIHg6IHBpeGVsVG9MYXRMb25nWzBdLFxuICAgICAgICB5OiBwaXhlbFRvTGF0TG9uZ1sxXSxcbiAgICAgICAgaWR4OiBzZWdtZW50SWR4IC0gMSxcbiAgICAgICAgdG8sXG4gICAgICAgIGZyb20sXG4gICAgICB9O1xuICAgIH1cblxuICAgIGNsb3Nlc3RQb2ludCA9IHBvaW50KFtzbmFwUG9pbnQueCwgc25hcFBvaW50LnldLCB7XG4gICAgICBkaXN0OiBNYXRoLmFicyhzbmFwUG9pbnQuZnJvbSAtIHNuYXBQb2ludC50byksXG4gICAgICBpbmRleDogc25hcFBvaW50LmlkeCxcbiAgICB9KTtcbiAgfSk7XG5cbiAgcmV0dXJuIGNsb3Nlc3RQb2ludDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFBpY2tlZEVkaXRIYW5kbGUoXG4gIHBpY2tzOiBQaWNrW10gfCBudWxsIHwgdW5kZWZpbmVkXG4pOiBFZGl0SGFuZGxlRmVhdHVyZSB8IG51bGwgfCB1bmRlZmluZWQge1xuICBjb25zdCBoYW5kbGVzID0gZ2V0UGlja2VkRWRpdEhhbmRsZXMocGlja3MpO1xuICByZXR1cm4gaGFuZGxlcy5sZW5ndGggPyBoYW5kbGVzWzBdIDogbnVsbDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFBpY2tlZFNuYXBTb3VyY2VFZGl0SGFuZGxlKFxuICBwaWNrczogUGlja1tdIHwgbnVsbCB8IHVuZGVmaW5lZFxuKTogRWRpdEhhbmRsZUZlYXR1cmUgfCBudWxsIHwgdW5kZWZpbmVkIHtcbiAgY29uc3QgaGFuZGxlcyA9IGdldFBpY2tlZEVkaXRIYW5kbGVzKHBpY2tzKTtcbiAgcmV0dXJuIGhhbmRsZXMuZmluZCgoaGFuZGxlKSA9PiBoYW5kbGUucHJvcGVydGllcy5lZGl0SGFuZGxlVHlwZSA9PT0gJ3NuYXAtc291cmNlJyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXROb25HdWlkZVBpY2tzKHBpY2tzOiBQaWNrW10pOiBQaWNrW10ge1xuICByZXR1cm4gcGlja3MgJiYgcGlja3MuZmlsdGVyKChwaWNrKSA9PiAhcGljay5pc0d1aWRlKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFBpY2tlZEV4aXN0aW5nRWRpdEhhbmRsZShcbiAgcGlja3M6IFBpY2tbXSB8IG51bGwgfCB1bmRlZmluZWRcbik6IEVkaXRIYW5kbGVGZWF0dXJlIHwgbnVsbCB8IHVuZGVmaW5lZCB7XG4gIGNvbnN0IGhhbmRsZXMgPSBnZXRQaWNrZWRFZGl0SGFuZGxlcyhwaWNrcyk7XG4gIHJldHVybiBoYW5kbGVzLmZpbmQoXG4gICAgKHsgcHJvcGVydGllcyB9KSA9PiBwcm9wZXJ0aWVzLmZlYXR1cmVJbmRleCA+PSAwICYmIHByb3BlcnRpZXMuZWRpdEhhbmRsZVR5cGUgPT09ICdleGlzdGluZydcbiAgKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFBpY2tlZEludGVybWVkaWF0ZUVkaXRIYW5kbGUoXG4gIHBpY2tzOiBQaWNrW10gfCBudWxsIHwgdW5kZWZpbmVkXG4pOiBFZGl0SGFuZGxlRmVhdHVyZSB8IG51bGwgfCB1bmRlZmluZWQge1xuICBjb25zdCBoYW5kbGVzID0gZ2V0UGlja2VkRWRpdEhhbmRsZXMocGlja3MpO1xuICByZXR1cm4gaGFuZGxlcy5maW5kKFxuICAgICh7IHByb3BlcnRpZXMgfSkgPT4gcHJvcGVydGllcy5mZWF0dXJlSW5kZXggPj0gMCAmJiBwcm9wZXJ0aWVzLmVkaXRIYW5kbGVUeXBlID09PSAnaW50ZXJtZWRpYXRlJ1xuICApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0UGlja2VkRWRpdEhhbmRsZXMocGlja3M6IFBpY2tbXSB8IG51bGwgfCB1bmRlZmluZWQpOiBFZGl0SGFuZGxlRmVhdHVyZVtdIHtcbiAgY29uc3QgaGFuZGxlcyA9XG4gICAgKHBpY2tzICYmXG4gICAgICBwaWNrc1xuICAgICAgICAuZmlsdGVyKChwaWNrKSA9PiBwaWNrLmlzR3VpZGUgJiYgcGljay5vYmplY3QucHJvcGVydGllcy5ndWlkZVR5cGUgPT09ICdlZGl0SGFuZGxlJylcbiAgICAgICAgLm1hcCgocGljaykgPT4gcGljay5vYmplY3QpKSB8fFxuICAgIFtdO1xuXG4gIHJldHVybiBoYW5kbGVzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0RWRpdEhhbmRsZXNGb3JHZW9tZXRyeShcbiAgZ2VvbWV0cnk6IEdlb21ldHJ5LFxuICBmZWF0dXJlSW5kZXg6IG51bWJlcixcbiAgZWRpdEhhbmRsZVR5cGU6IEVkaXRIYW5kbGVUeXBlID0gJ2V4aXN0aW5nJ1xuKTogRWRpdEhhbmRsZUZlYXR1cmVbXSB7XG4gIGxldCBoYW5kbGVzOiBFZGl0SGFuZGxlRmVhdHVyZVtdID0gW107XG5cbiAgc3dpdGNoIChnZW9tZXRyeS50eXBlKSB7XG4gICAgY2FzZSAnUG9pbnQnOlxuICAgICAgLy8gcG9zaXRpb25zIGFyZSBub3QgbmVzdGVkXG4gICAgICBoYW5kbGVzID0gW1xuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogJ0ZlYXR1cmUnLFxuICAgICAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgICAgIGd1aWRlVHlwZTogJ2VkaXRIYW5kbGUnLFxuICAgICAgICAgICAgZWRpdEhhbmRsZVR5cGUsXG4gICAgICAgICAgICBwb3NpdGlvbkluZGV4ZXM6IFtdLFxuICAgICAgICAgICAgZmVhdHVyZUluZGV4LFxuICAgICAgICAgIH0sXG4gICAgICAgICAgZ2VvbWV0cnk6IHtcbiAgICAgICAgICAgIHR5cGU6ICdQb2ludCcsXG4gICAgICAgICAgICBjb29yZGluYXRlczogZ2VvbWV0cnkuY29vcmRpbmF0ZXMsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIF07XG4gICAgICBicmVhaztcbiAgICBjYXNlICdNdWx0aVBvaW50JzpcbiAgICBjYXNlICdMaW5lU3RyaW5nJzpcbiAgICAgIC8vIHBvc2l0aW9ucyBhcmUgbmVzdGVkIDEgbGV2ZWxcbiAgICAgIGhhbmRsZXMgPSBoYW5kbGVzLmNvbmNhdChcbiAgICAgICAgZ2V0RWRpdEhhbmRsZXNGb3JDb29yZGluYXRlcyhnZW9tZXRyeS5jb29yZGluYXRlcywgW10sIGZlYXR1cmVJbmRleCwgZWRpdEhhbmRsZVR5cGUpXG4gICAgICApO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAnUG9seWdvbic6XG4gICAgY2FzZSAnTXVsdGlMaW5lU3RyaW5nJzpcbiAgICAgIC8vIHBvc2l0aW9ucyBhcmUgbmVzdGVkIDIgbGV2ZWxzXG4gICAgICBmb3IgKGxldCBhID0gMDsgYSA8IGdlb21ldHJ5LmNvb3JkaW5hdGVzLmxlbmd0aDsgYSsrKSB7XG4gICAgICAgIGhhbmRsZXMgPSBoYW5kbGVzLmNvbmNhdChcbiAgICAgICAgICBnZXRFZGl0SGFuZGxlc0ZvckNvb3JkaW5hdGVzKGdlb21ldHJ5LmNvb3JkaW5hdGVzW2FdLCBbYV0sIGZlYXR1cmVJbmRleCwgZWRpdEhhbmRsZVR5cGUpXG4gICAgICAgICk7XG4gICAgICAgIGlmIChnZW9tZXRyeS50eXBlID09PSAnUG9seWdvbicpIHtcbiAgICAgICAgICAvLyBEb24ndCByZXBlYXQgdGhlIGZpcnN0L2xhc3QgaGFuZGxlIGZvciBQb2x5Z29uc1xuICAgICAgICAgIGhhbmRsZXMgPSBoYW5kbGVzLnNsaWNlKDAsIC0xKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBicmVhaztcbiAgICBjYXNlICdNdWx0aVBvbHlnb24nOlxuICAgICAgLy8gcG9zaXRpb25zIGFyZSBuZXN0ZWQgMyBsZXZlbHNcbiAgICAgIGZvciAobGV0IGEgPSAwOyBhIDwgZ2VvbWV0cnkuY29vcmRpbmF0ZXMubGVuZ3RoOyBhKyspIHtcbiAgICAgICAgZm9yIChsZXQgYiA9IDA7IGIgPCBnZW9tZXRyeS5jb29yZGluYXRlc1thXS5sZW5ndGg7IGIrKykge1xuICAgICAgICAgIGhhbmRsZXMgPSBoYW5kbGVzLmNvbmNhdChcbiAgICAgICAgICAgIGdldEVkaXRIYW5kbGVzRm9yQ29vcmRpbmF0ZXMoXG4gICAgICAgICAgICAgIGdlb21ldHJ5LmNvb3JkaW5hdGVzW2FdW2JdLFxuICAgICAgICAgICAgICBbYSwgYl0sXG4gICAgICAgICAgICAgIGZlYXR1cmVJbmRleCxcbiAgICAgICAgICAgICAgZWRpdEhhbmRsZVR5cGVcbiAgICAgICAgICAgIClcbiAgICAgICAgICApO1xuICAgICAgICAgIC8vIERvbid0IHJlcGVhdCB0aGUgZmlyc3QvbGFzdCBoYW5kbGUgZm9yIFBvbHlnb25zXG4gICAgICAgICAgaGFuZGxlcyA9IGhhbmRsZXMuc2xpY2UoMCwgLTEpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGJyZWFrO1xuICAgIGRlZmF1bHQ6XG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICB0aHJvdyBFcnJvcihgVW5oYW5kbGVkIGdlb21ldHJ5IHR5cGU6ICR7Z2VvbWV0cnkudHlwZX1gKTtcbiAgfVxuXG4gIHJldHVybiBoYW5kbGVzO1xufVxuXG5mdW5jdGlvbiBnZXRFZGl0SGFuZGxlc0ZvckNvb3JkaW5hdGVzKFxuICBjb29yZGluYXRlczogYW55W10sXG4gIHBvc2l0aW9uSW5kZXhQcmVmaXg6IG51bWJlcltdLFxuICBmZWF0dXJlSW5kZXg6IG51bWJlcixcbiAgZWRpdEhhbmRsZVR5cGU6IEVkaXRIYW5kbGVUeXBlID0gJ2V4aXN0aW5nJ1xuKTogRWRpdEhhbmRsZUZlYXR1cmVbXSB7XG4gIGNvbnN0IGVkaXRIYW5kbGVzID0gW107XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgY29vcmRpbmF0ZXMubGVuZ3RoOyBpKyspIHtcbiAgICBjb25zdCBwb3NpdGlvbiA9IGNvb3JkaW5hdGVzW2ldO1xuICAgIGVkaXRIYW5kbGVzLnB1c2goe1xuICAgICAgdHlwZTogJ0ZlYXR1cmUnLFxuICAgICAgcHJvcGVydGllczoge1xuICAgICAgICBndWlkZVR5cGU6ICdlZGl0SGFuZGxlJyxcbiAgICAgICAgcG9zaXRpb25JbmRleGVzOiBbLi4ucG9zaXRpb25JbmRleFByZWZpeCwgaV0sXG4gICAgICAgIGZlYXR1cmVJbmRleCxcbiAgICAgICAgZWRpdEhhbmRsZVR5cGUsXG4gICAgICB9LFxuICAgICAgZ2VvbWV0cnk6IHtcbiAgICAgICAgdHlwZTogJ1BvaW50JyxcbiAgICAgICAgY29vcmRpbmF0ZXM6IHBvc2l0aW9uLFxuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuICByZXR1cm4gZWRpdEhhbmRsZXM7XG59XG5cbi8qKlxuICogQ2FsY3VsYXRlcyBjb29yZGluYXRlcyBmb3IgYSBmZWF0dXJlIHByZXNlcnZpbmcgcmVjdGFuZ3VsYXIgc2hhcGUuXG4gKiBAcGFyYW0gZmVhdHVyZSBGZWF0dXJlIGJlZm9yZSBtb2RpZmljYXRpb24uXG4gKiBAcGFyYW0gZWRpdEhhbmRsZUluZGV4IEluZGV4IG9mIHRoZSBwb2ludCB0byBtb2RpZnkuXG4gKiBAcGFyYW0gbWFwQ29vcmRzIE5ldyBwb3NpdGlvbiBmb3IgdGhlIHBvaW50LlxuICogQHJldHVybnMgVXBkYXRlZCBjb29yZGluYXRlcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVwZGF0ZVJlY3RhbmdsZVBvc2l0aW9uKFxuICBmZWF0dXJlOiBGZWF0dXJlT2Y8UG9seWdvbj4sXG4gIGVkaXRIYW5kbGVJbmRleDogbnVtYmVyLFxuICBtYXBDb29yZHM6IFBvc2l0aW9uXG4pOiBQb3NpdGlvbltdW10ge1xuICBjb25zdCBjb29yZGluYXRlcyA9IGZlYXR1cmUuZ2VvbWV0cnkuY29vcmRpbmF0ZXM7XG4gIGlmICghY29vcmRpbmF0ZXMpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGNvbnN0IHBvaW50cyA9IGNvb3JkaW5hdGVzWzBdLnNsaWNlKDAsIDQpO1xuICBwb2ludHNbZWRpdEhhbmRsZUluZGV4ICUgNF0gPSBtYXBDb29yZHM7XG5cbiAgY29uc3QgcDAgPSBwb2ludHNbKGVkaXRIYW5kbGVJbmRleCArIDIpICUgNF07XG4gIGNvbnN0IHAyID0gcG9pbnRzW2VkaXRIYW5kbGVJbmRleCAlIDRdO1xuICBwb2ludHNbKGVkaXRIYW5kbGVJbmRleCArIDEpICUgNF0gPSBbcDJbMF0sIHAwWzFdXTtcbiAgcG9pbnRzWyhlZGl0SGFuZGxlSW5kZXggKyAzKSAlIDRdID0gW3AwWzBdLCBwMlsxXV07XG5cbiAgcmV0dXJuIFtbLi4ucG9pbnRzLCBwb2ludHNbMF1dXTtcbn1cblxuLyoqIENyZWF0ZXMgYSBjb3B5IG9mIGZlYXR1cmUncyBjb29yZGluYXRlcy5cbiAqIEVhY2ggcG9zaXRpb24gaW4gY29vcmRpbmF0ZXMgaXMgdHJhbnNmb3JtZWQgYnkgY2FsbGluZyB0aGUgcHJvdmlkZWQgZnVuY3Rpb24uXG4gKiBAcGFyYW0gY29vcmRzIENvb3JkaW5hdGVzIG9mIGEgZmVhdHVyZS5cbiAqIEBwYXJhbSBjYWxsYmFjayBBIGZ1bmN0aW9uIHRvIHRyYW5zZm9ybSBlYWNoIGNvb3JkaW5hdGUuXG4gKiBAcmV0dW5zIFRyYW5zZm9ybWVkIGNvb3JkaW5hdGVzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gbWFwQ29vcmRzKFxuICBjb29yZHM6IEFueUNvb3JkaW5hdGVzLFxuICBjYWxsYmFjazogKGNvb3JkczogUG9zaXRpb24pID0+IFBvc2l0aW9uXG4pOiBBbnlDb29yZGluYXRlcyB7XG4gIGlmICh0eXBlb2YgY29vcmRzWzBdID09PSAnbnVtYmVyJykge1xuICAgIGlmICghaXNOYU4oY29vcmRzWzBdKSAmJiBpc0Zpbml0ZShjb29yZHNbMF0pKSB7XG4gICAgICByZXR1cm4gY2FsbGJhY2soY29vcmRzIGFzIFBvc2l0aW9uKTtcbiAgICB9XG4gICAgcmV0dXJuIGNvb3JkcztcbiAgfVxuXG4gIHJldHVybiAoY29vcmRzIGFzIFBvc2l0aW9uW10pXG4gICAgLm1hcCgoY29vcmQpID0+IHtcbiAgICAgIHJldHVybiBtYXBDb29yZHMoY29vcmQsIGNhbGxiYWNrKSBhcyBQb3NpdGlvbjtcbiAgICB9KVxuICAgIC5maWx0ZXIoQm9vbGVhbik7XG59XG4iXX0=","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.UNIT = exports.PROJECTED_PIXEL_SIZE_MULTIPLIER = void 0;\n\n/**\n * A multiplier for screen-space width/scale for Arc, Line, Icon and Text layers.\n * Required in order to maintain the same appearance after upgrading to deck.gl v8.5.\n * https://github.com/visgl/deck.gl/blob/master/docs/upgrade-guide.md\n */\nvar PROJECTED_PIXEL_SIZE_MULTIPLIER = 2 / 3;\n/**\n * Unit literal to shader unit number conversion.\n */\n\nexports.PROJECTED_PIXEL_SIZE_MULTIPLIER = PROJECTED_PIXEL_SIZE_MULTIPLIER;\nvar UNIT = {\n  common: 0,\n  meters: 1,\n  pixels: 2\n};\nexports.UNIT = UNIT;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9jb25zdGFudHMudHMiXSwibmFtZXMiOlsiUFJPSkVDVEVEX1BJWEVMX1NJWkVfTVVMVElQTElFUiIsIlVOSVQiLCJjb21tb24iLCJtZXRlcnMiLCJwaXhlbHMiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQTs7Ozs7QUFLTyxJQUFNQSwrQkFBK0IsR0FBRyxJQUFJLENBQTVDO0FBRVA7Ozs7O0FBR08sSUFBTUMsSUFBSSxHQUFHO0FBQ2xCQyxFQUFBQSxNQUFNLEVBQUUsQ0FEVTtBQUVsQkMsRUFBQUEsTUFBTSxFQUFFLENBRlU7QUFHbEJDLEVBQUFBLE1BQU0sRUFBRTtBQUhVLENBQWIiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEEgbXVsdGlwbGllciBmb3Igc2NyZWVuLXNwYWNlIHdpZHRoL3NjYWxlIGZvciBBcmMsIExpbmUsIEljb24gYW5kIFRleHQgbGF5ZXJzLlxuICogUmVxdWlyZWQgaW4gb3JkZXIgdG8gbWFpbnRhaW4gdGhlIHNhbWUgYXBwZWFyYW5jZSBhZnRlciB1cGdyYWRpbmcgdG8gZGVjay5nbCB2OC41LlxuICogaHR0cHM6Ly9naXRodWIuY29tL3Zpc2dsL2RlY2suZ2wvYmxvYi9tYXN0ZXIvZG9jcy91cGdyYWRlLWd1aWRlLm1kXG4gKi9cbmV4cG9ydCBjb25zdCBQUk9KRUNURURfUElYRUxfU0laRV9NVUxUSVBMSUVSID0gMiAvIDM7XG5cbi8qKlxuICogVW5pdCBsaXRlcmFsIHRvIHNoYWRlciB1bml0IG51bWJlciBjb252ZXJzaW9uLlxuICovXG5leHBvcnQgY29uc3QgVU5JVCA9IHtcbiAgY29tbW9uOiAwLFxuICBtZXRlcnM6IDEsXG4gIHBpeGVsczogMixcbn07XG4iXX0=","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nObject.defineProperty(exports, \"ArrowStyles\", {\n  enumerable: true,\n  get: function get() {\n    return _style.ArrowStyles;\n  }\n});\nObject.defineProperty(exports, \"DEFAULT_ARROWS\", {\n  enumerable: true,\n  get: function get() {\n    return _style.DEFAULT_ARROWS;\n  }\n});\nObject.defineProperty(exports, \"MAX_ARROWS\", {\n  enumerable: true,\n  get: function get() {\n    return _style.MAX_ARROWS;\n  }\n});\nObject.defineProperty(exports, \"EditableGeoJsonLayer\", {\n  enumerable: true,\n  get: function get() {\n    return _editableGeojsonLayer[\"default\"];\n  }\n});\nObject.defineProperty(exports, \"EditableH3ClusterLayer\", {\n  enumerable: true,\n  get: function get() {\n    return _editableH3ClusterLayer[\"default\"];\n  }\n});\nObject.defineProperty(exports, \"SelectionLayer\", {\n  enumerable: true,\n  get: function get() {\n    return _selectionLayer[\"default\"];\n  }\n});\nObject.defineProperty(exports, \"ElevatedEditHandleLayer\", {\n  enumerable: true,\n  get: function get() {\n    return _elevatedEditHandleLayer[\"default\"];\n  }\n});\nObject.defineProperty(exports, \"PathOutlineLayer\", {\n  enumerable: true,\n  get: function get() {\n    return _pathOutlineLayer[\"default\"];\n  }\n});\nObject.defineProperty(exports, \"PathMarkerLayer\", {\n  enumerable: true,\n  get: function get() {\n    return _pathMarkerLayer[\"default\"];\n  }\n});\nObject.defineProperty(exports, \"JunctionScatterplotLayer\", {\n  enumerable: true,\n  get: function get() {\n    return _junctionScatterplotLayer[\"default\"];\n  }\n});\nObject.defineProperty(exports, \"toDeckColor\", {\n  enumerable: true,\n  get: function get() {\n    return _utils.toDeckColor;\n  }\n});\n\nvar _style = require(\"./style\");\n\nvar _editableGeojsonLayer = _interopRequireDefault(require(\"./layers/editable-geojson-layer\"));\n\nvar _editableH3ClusterLayer = _interopRequireDefault(require(\"./layers/editable-h3-cluster-layer\"));\n\nvar _selectionLayer = _interopRequireDefault(require(\"./layers/selection-layer\"));\n\nvar _elevatedEditHandleLayer = _interopRequireDefault(require(\"./layers/elevated-edit-handle-layer\"));\n\nvar _pathOutlineLayer = _interopRequireDefault(require(\"./layers/path-outline-layer/path-outline-layer\"));\n\nvar _pathMarkerLayer = _interopRequireDefault(require(\"./layers/path-marker-layer/path-marker-layer\"));\n\nvar _junctionScatterplotLayer = _interopRequireDefault(require(\"./layers/junction-scatterplot-layer\"));\n\nvar _utils = require(\"./utils\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTs7QUFHQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFHQTs7QUFDQTs7QUFDQTs7QUFHQSIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7IEFycm93U3R5bGVzLCBERUZBVUxUX0FSUk9XUywgTUFYX0FSUk9XUyB9IGZyb20gJy4vc3R5bGUnO1xuXG4vLyBMYXllcnNcbmV4cG9ydCB7IGRlZmF1bHQgYXMgRWRpdGFibGVHZW9Kc29uTGF5ZXIgfSBmcm9tICcuL2xheWVycy9lZGl0YWJsZS1nZW9qc29uLWxheWVyJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgRWRpdGFibGVIM0NsdXN0ZXJMYXllciB9IGZyb20gJy4vbGF5ZXJzL2VkaXRhYmxlLWgzLWNsdXN0ZXItbGF5ZXInO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBTZWxlY3Rpb25MYXllciB9IGZyb20gJy4vbGF5ZXJzL3NlbGVjdGlvbi1sYXllcic7XG5leHBvcnQgeyBkZWZhdWx0IGFzIEVsZXZhdGVkRWRpdEhhbmRsZUxheWVyIH0gZnJvbSAnLi9sYXllcnMvZWxldmF0ZWQtZWRpdC1oYW5kbGUtbGF5ZXInO1xuXG4vLyBMYXllcnMgbW92ZWQgZnJvbSBkZWNrLmdsXG5leHBvcnQgeyBkZWZhdWx0IGFzIFBhdGhPdXRsaW5lTGF5ZXIgfSBmcm9tICcuL2xheWVycy9wYXRoLW91dGxpbmUtbGF5ZXIvcGF0aC1vdXRsaW5lLWxheWVyJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgUGF0aE1hcmtlckxheWVyIH0gZnJvbSAnLi9sYXllcnMvcGF0aC1tYXJrZXItbGF5ZXIvcGF0aC1tYXJrZXItbGF5ZXInO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBKdW5jdGlvblNjYXR0ZXJwbG90TGF5ZXIgfSBmcm9tICcuL2xheWVycy9qdW5jdGlvbi1zY2F0dGVycGxvdC1sYXllcic7XG5cbi8vIFV0aWxzXG5leHBvcnQgeyB0b0RlY2tDb2xvciB9IGZyb20gJy4vdXRpbHMnO1xuXG4vLyBUeXBlc1xuZXhwb3J0IHR5cGUgeyBDb2xvciwgVmlld3BvcnQgfSBmcm9tICcuL3R5cGVzJztcbiJdfQ==","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports[\"default\"] = void 0;\n\nvar _layers = require(\"@deck.gl/layers\");\n\nvar _editModes = require(\"@nebula.gl/edit-modes\");\n\nvar _constants = require(\"../constants\");\n\nvar _editableLayer = _interopRequireDefault(require(\"./editable-layer\"));\n\nvar _editablePathLayer = _interopRequireDefault(require(\"./editable-path-layer\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _createForOfIteratorHelper(o) { if (typeof Symbol === \"undefined\" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (o = _unsupportedIterableToArray(o))) { var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var it, normalCompletion = true, didErr = false, err; return { s: function s() { it = o[Symbol.iterator](); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it[\"return\"] != null) it[\"return\"](); } finally { if (didErr) throw err; } } }; }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(n); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _get(target, property, receiver) { if (typeof Reflect !== \"undefined\" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return _get(target, property, receiver || target); }\n\nfunction _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; }\n\nfunction _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar DEFAULT_LINE_COLOR = [0x0, 0x0, 0x0, 0x99];\nvar DEFAULT_FILL_COLOR = [0x0, 0x0, 0x0, 0x90];\nvar DEFAULT_SELECTED_LINE_COLOR = [0x0, 0x0, 0x0, 0xff];\nvar DEFAULT_SELECTED_FILL_COLOR = [0x0, 0x0, 0x90, 0x90];\nvar DEFAULT_TENTATIVE_LINE_COLOR = [0x90, 0x90, 0x90, 0xff];\nvar DEFAULT_TENTATIVE_FILL_COLOR = [0x90, 0x90, 0x90, 0x90];\nvar DEFAULT_EDITING_EXISTING_POINT_COLOR = [0xc0, 0x0, 0x0, 0xff];\nvar DEFAULT_EDITING_INTERMEDIATE_POINT_COLOR = [0x0, 0x0, 0x0, 0x80];\nvar DEFAULT_EDITING_SNAP_POINT_COLOR = [0x7c, 0x00, 0xc0, 0xff];\nvar DEFAULT_EDITING_POINT_OUTLINE_COLOR = [0xff, 0xff, 0xff, 0xff];\nvar DEFAULT_EDITING_EXISTING_POINT_RADIUS = 5;\nvar DEFAULT_EDITING_INTERMEDIATE_POINT_RADIUS = 3;\nvar DEFAULT_EDITING_SNAP_POINT_RADIUS = 7;\nvar DEFAULT_TOOLTIP_FONT_SIZE = 32 * _constants.PROJECTED_PIXEL_SIZE_MULTIPLIER;\nvar DEFAULT_EDIT_MODE = _editModes.DrawPolygonMode;\n\nfunction guideAccessor(accessor) {\n  if (!accessor || typeof accessor !== 'function') {\n    return accessor;\n  }\n\n  return function (guideMaybeWrapped) {\n    return accessor(unwrapGuide(guideMaybeWrapped));\n  };\n} // The object handed to us from deck.gl is different depending on the version of deck.gl used, unwrap as necessary\n\n\nfunction unwrapGuide(guideMaybeWrapped) {\n  if (guideMaybeWrapped.__source) {\n    return guideMaybeWrapped.__source.object;\n  } else if (guideMaybeWrapped.sourceFeature) {\n    return guideMaybeWrapped.sourceFeature.feature;\n  } // It is not wrapped, return as is\n\n\n  return guideMaybeWrapped;\n}\n\nfunction getEditHandleColor(handle) {\n  switch (handle.properties.editHandleType) {\n    case 'existing':\n      return DEFAULT_EDITING_EXISTING_POINT_COLOR;\n\n    case 'snap-source':\n      return DEFAULT_EDITING_SNAP_POINT_COLOR;\n\n    case 'intermediate':\n    default:\n      return DEFAULT_EDITING_INTERMEDIATE_POINT_COLOR;\n  }\n}\n\nfunction getEditHandleOutlineColor(handle) {\n  return DEFAULT_EDITING_POINT_OUTLINE_COLOR;\n}\n\nfunction getEditHandleRadius(handle) {\n  switch (handle.properties.editHandleType) {\n    case 'existing':\n      return DEFAULT_EDITING_EXISTING_POINT_RADIUS;\n\n    case 'snap':\n      return DEFAULT_EDITING_SNAP_POINT_RADIUS;\n\n    case 'intermediate':\n    default:\n      return DEFAULT_EDITING_INTERMEDIATE_POINT_RADIUS;\n  }\n}\n\nvar defaultProps = {\n  mode: DEFAULT_EDIT_MODE,\n  // Edit and interaction events\n  onEdit: function onEdit() {},\n  pickable: true,\n  pickingRadius: 10,\n  pickingDepth: 5,\n  fp64: false,\n  filled: true,\n  stroked: true,\n  lineWidthScale: _constants.PROJECTED_PIXEL_SIZE_MULTIPLIER,\n  lineWidthMinPixels: 1,\n  lineWidthMaxPixels: Number.MAX_SAFE_INTEGER,\n  pickingLineWidthExtraPixels: 0,\n  lineWidthUnits: 'pixels',\n  lineJointRounded: false,\n  lineCapRounded: false,\n  lineMiterLimit: 4,\n  pointRadiusScale: 1,\n  pointRadiusMinPixels: 2,\n  pointRadiusMaxPixels: Number.MAX_SAFE_INTEGER,\n  getLineColor: function getLineColor(feature, isSelected, mode) {\n    return isSelected ? DEFAULT_SELECTED_LINE_COLOR : DEFAULT_LINE_COLOR;\n  },\n  getFillColor: function getFillColor(feature, isSelected, mode) {\n    return isSelected ? DEFAULT_SELECTED_FILL_COLOR : DEFAULT_FILL_COLOR;\n  },\n  getRadius: function getRadius(f) {\n    return f && f.properties && f.properties.radius || f && f.properties && f.properties.size || 1;\n  },\n  getLineWidth: function getLineWidth(f) {\n    return f && f.properties && f.properties.lineWidth || 3;\n  },\n  // Tentative feature rendering\n  getTentativeLineColor: function getTentativeLineColor(f) {\n    return DEFAULT_TENTATIVE_LINE_COLOR;\n  },\n  getTentativeFillColor: function getTentativeFillColor(f) {\n    return DEFAULT_TENTATIVE_FILL_COLOR;\n  },\n  getTentativeLineWidth: function getTentativeLineWidth(f) {\n    return f && f.properties && f.properties.lineWidth || 3;\n  },\n  editHandleType: 'point',\n  // point handles\n  editHandlePointRadiusScale: 1,\n  editHandlePointOutline: true,\n  editHandlePointStrokeWidth: 2,\n  editHandlePointRadiusUnits: 'pixels',\n  editHandlePointRadiusMinPixels: 4,\n  editHandlePointRadiusMaxPixels: 8,\n  getEditHandlePointColor: getEditHandleColor,\n  getEditHandlePointOutlineColor: getEditHandleOutlineColor,\n  getEditHandlePointRadius: getEditHandleRadius,\n  // icon handles\n  editHandleIconAtlas: null,\n  editHandleIconMapping: null,\n  editHandleIconSizeScale: 1,\n  editHandleIconSizeUnits: 'pixels',\n  getEditHandleIcon: function getEditHandleIcon(handle) {\n    return handle.properties.editHandleType;\n  },\n  getEditHandleIconSize: 10,\n  getEditHandleIconColor: getEditHandleColor,\n  getEditHandleIconAngle: 0,\n  // misc\n  billboard: true\n}; // Mapping of mode name to mode class (for legacy purposes)\n\nvar modeNameMapping = {\n  view: _editModes.ViewMode,\n  // Alter modes\n  modify: _editModes.ModifyMode,\n  translate: new _editModes.SnappableMode(new _editModes.TranslateMode()),\n  transform: new _editModes.SnappableMode(new _editModes.TransformMode()),\n  scale: _editModes.ScaleMode,\n  rotate: _editModes.RotateMode,\n  duplicate: _editModes.DuplicateMode,\n  split: _editModes.SplitPolygonMode,\n  extrude: _editModes.ExtrudeMode,\n  elevation: _editModes.ElevationMode,\n  // Draw modes\n  drawPoint: _editModes.DrawPointMode,\n  drawLineString: _editModes.DrawLineStringMode,\n  drawPolygon: _editModes.DrawPolygonMode,\n  drawRectangle: _editModes.DrawRectangleMode,\n  drawSquare: _editModes.DrawSquareMode,\n  drawRectangleFromCenter: _editModes.DrawRectangleFromCenterMode,\n  drawSquareFromCenter: _editModes.DrawSquareFromCenterMode,\n  drawCircleFromCenter: _editModes.DrawCircleFromCenterMode,\n  drawCircleByBoundingBox: _editModes.DrawCircleByDiameterMode,\n  drawEllipseByBoundingBox: _editModes.DrawEllipseByBoundingBoxMode,\n  drawRectangleUsing3Points: _editModes.DrawRectangleUsingThreePointsMode,\n  drawEllipseUsing3Points: _editModes.DrawEllipseUsingThreePointsMode,\n  draw90DegreePolygon: _editModes.Draw90DegreePolygonMode,\n  drawPolygonByDragging: _editModes.DrawPolygonByDraggingMode\n}; // type State = {\n//   mode: GeoJsonEditMode,\n//   tentativeFeature: ?Feature,\n//   editHandles: any[],\n//   selectedFeatures: Feature[]\n// };\n\nvar EditableGeoJsonLayer = /*#__PURE__*/function (_EditableLayer) {\n  _inherits(EditableGeoJsonLayer, _EditableLayer);\n\n  var _super = _createSuper(EditableGeoJsonLayer);\n\n  function EditableGeoJsonLayer() {\n    _classCallCheck(this, EditableGeoJsonLayer);\n\n    return _super.apply(this, arguments);\n  }\n\n  _createClass(EditableGeoJsonLayer, [{\n    key: \"renderLayers\",\n    // setState: ($Shape<State>) => void;\n    value: function renderLayers() {\n      var subLayerProps = this.getSubLayerProps({\n        id: 'geojson',\n        // Proxy most GeoJsonLayer props as-is\n        data: this.props.data,\n        fp64: this.props.fp64,\n        filled: this.props.filled,\n        stroked: this.props.stroked,\n        lineWidthScale: this.props.lineWidthScale,\n        lineWidthMinPixels: this.props.lineWidthMinPixels,\n        lineWidthMaxPixels: this.props.lineWidthMaxPixels,\n        lineWidthUnits: this.props.lineWidthUnits,\n        lineJointRounded: this.props.lineJointRounded,\n        lineCapRounded: this.props.lineCapRounded,\n        lineMiterLimit: this.props.lineMiterLimit,\n        pointRadiusScale: this.props.pointRadiusScale,\n        pointRadiusMinPixels: this.props.pointRadiusMinPixels,\n        pointRadiusMaxPixels: this.props.pointRadiusMaxPixels,\n        getLineColor: this.selectionAwareAccessor(this.props.getLineColor),\n        getFillColor: this.selectionAwareAccessor(this.props.getFillColor),\n        getPointRadius: this.selectionAwareAccessor(this.props.getRadius),\n        getLineWidth: this.selectionAwareAccessor(this.props.getLineWidth),\n        _subLayerProps: {\n          linestrings: {\n            billboard: this.props.billboard,\n            updateTriggers: {\n              // required to update dashed array attribute\n              all: [this.props.selectedFeatureIndexes, this.props.mode]\n            }\n          },\n          'polygons-stroke': {\n            billboard: this.props.billboard,\n            pickingLineWidthExtraPixels: this.props.pickingLineWidthExtraPixels,\n            type: _editablePathLayer[\"default\"],\n            updateTriggers: {\n              // required to update dashed array attribute\n              all: [this.props.selectedFeatureIndexes, this.props.mode]\n            }\n          }\n        },\n        updateTriggers: {\n          getLineColor: [this.props.selectedFeatureIndexes, this.props.mode],\n          getFillColor: [this.props.selectedFeatureIndexes, this.props.mode],\n          getPointRadius: [this.props.selectedFeatureIndexes, this.props.mode],\n          getLineWidth: [this.props.selectedFeatureIndexes, this.props.mode]\n        }\n      });\n      var layers = [new _layers.GeoJsonLayer(subLayerProps)];\n      layers = layers.concat(this.createGuidesLayers(), this.createTooltipsLayers());\n      return layers;\n    }\n  }, {\n    key: \"initializeState\",\n    value: function initializeState() {\n      _get(_getPrototypeOf(EditableGeoJsonLayer.prototype), \"initializeState\", this).call(this);\n\n      this.setState({\n        selectedFeatures: [],\n        editHandles: []\n      });\n    } // TODO: is this the best way to properly update state from an outside event handler?\n\n  }, {\n    key: \"shouldUpdateState\",\n    value: function shouldUpdateState(opts) {\n      // console.log(\n      //   'shouldUpdateState',\n      //   opts.changeFlags.propsOrDataChanged,\n      //   opts.changeFlags.stateChanged\n      // );\n      return _get(_getPrototypeOf(EditableGeoJsonLayer.prototype), \"shouldUpdateState\", this).call(this, opts) || opts.changeFlags.stateChanged;\n    }\n  }, {\n    key: \"updateState\",\n    value: function updateState(_ref) {\n      var props = _ref.props,\n          oldProps = _ref.oldProps,\n          changeFlags = _ref.changeFlags,\n          context = _ref.context;\n\n      _get(_getPrototypeOf(EditableGeoJsonLayer.prototype), \"updateState\", this).call(this, {\n        oldProps: oldProps,\n        props: props,\n        changeFlags: changeFlags,\n        context: context\n      });\n\n      if (changeFlags.propsOrDataChanged) {\n        var modePropChanged = Object.keys(oldProps).length === 0 || props.mode !== oldProps.mode;\n\n        if (modePropChanged) {\n          var _mode;\n\n          if (typeof props.mode === 'function') {\n            // They passed a constructor/class, so new it up\n            var ModeConstructor = props.mode;\n            _mode = new ModeConstructor();\n          } else if (typeof props.mode === 'string') {\n            // Lookup the mode based on its name (for backwards compatibility)\n            _mode = modeNameMapping[props.mode]; // eslint-disable-next-line no-console\n\n            console.warn(\"Deprecated use of passing `mode` as a string. Pass the mode's class constructor instead.\");\n          } else {\n            // Should be an instance of EditMode in this case\n            _mode = props.mode;\n          }\n\n          if (!_mode) {\n            console.warn(\"No mode configured for \".concat(String(props.mode))); // eslint-disable-line no-console,no-undef\n            // Use default mode\n\n            _mode = new DEFAULT_EDIT_MODE();\n          }\n\n          if (_mode !== this.state.mode) {\n            this.setState({\n              mode: _mode,\n              cursor: null\n            });\n          }\n        }\n      }\n\n      var selectedFeatures = [];\n\n      if (Array.isArray(props.selectedFeatureIndexes)) {\n        // TODO: needs improved testing, i.e. checking for duplicates, NaNs, out of range numbers, ...\n        selectedFeatures = props.selectedFeatureIndexes.map(function (elem) {\n          return props.data.features[elem];\n        });\n      }\n\n      this.setState({\n        selectedFeatures: selectedFeatures\n      });\n    }\n  }, {\n    key: \"getModeProps\",\n    value: function getModeProps(props) {\n      var _this = this;\n\n      return {\n        modeConfig: props.modeConfig,\n        data: props.data,\n        selectedIndexes: props.selectedFeatureIndexes,\n        lastPointerMoveEvent: this.state.lastPointerMoveEvent,\n        cursor: this.state.cursor,\n        onEdit: function onEdit(editAction) {\n          // Force a re-render\n          // This supports double-click where we need to ensure that there's a re-render between the two clicks\n          // even though the data wasn't changed, just the internal tentative feature.\n          _this.setNeedsUpdate();\n\n          props.onEdit(editAction);\n        },\n        onUpdateCursor: function onUpdateCursor(cursor) {\n          _this.setState({\n            cursor: cursor\n          });\n        }\n      };\n    }\n  }, {\n    key: \"selectionAwareAccessor\",\n    value: function selectionAwareAccessor(accessor) {\n      var _this2 = this;\n\n      if (typeof accessor !== 'function') {\n        return accessor;\n      }\n\n      return function (feature) {\n        return accessor(feature, _this2.isFeatureSelected(feature), _this2.props.mode);\n      };\n    }\n  }, {\n    key: \"isFeatureSelected\",\n    value: function isFeatureSelected(feature) {\n      if (!this.props.data || !this.props.selectedFeatureIndexes) {\n        return false;\n      }\n\n      if (!this.props.selectedFeatureIndexes.length) {\n        return false;\n      }\n\n      var featureIndex = this.props.data.features.indexOf(feature);\n      return this.props.selectedFeatureIndexes.includes(featureIndex);\n    }\n  }, {\n    key: \"getPickingInfo\",\n    value: function getPickingInfo(_ref2) {\n      var info = _ref2.info,\n          sourceLayer = _ref2.sourceLayer;\n\n      if (sourceLayer.id.endsWith('guides')) {\n        // If user is picking an editing handle, add additional data to the info\n        info.isGuide = true;\n      }\n\n      return info;\n    }\n  }, {\n    key: \"_updateAutoHighlight\",\n    value: function _updateAutoHighlight(info) {\n      // Extra handling for guides\n      if (info === null || info === void 0 ? void 0 : info.sourceLayer) {\n        if (info.isGuide) {\n          var _iterator = _createForOfIteratorHelper(info.sourceLayer.getSubLayers()),\n              _step;\n\n          try {\n            for (_iterator.s(); !(_step = _iterator.n()).done;) {\n              var layer = _step.value;\n              layer.updateAutoHighlight(info);\n            }\n          } catch (err) {\n            _iterator.e(err);\n          } finally {\n            _iterator.f();\n          }\n        } else {\n          info.sourceLayer.updateAutoHighlight(info);\n        }\n      }\n    }\n  }, {\n    key: \"createGuidesLayers\",\n    value: function createGuidesLayers() {\n      var mode = this.getActiveMode();\n      var guides = mode.getGuides(this.getModeProps(this.props));\n\n      if (!guides || !guides.features.length) {\n        return [];\n      }\n\n      var subLayerProps = {\n        linestrings: {\n          billboard: this.props.billboard,\n          autoHighlight: false\n        },\n        'polygons-fill': {\n          autoHighlight: false\n        },\n        'polygons-stroke': {\n          billboard: this.props.billboard\n        }\n      };\n\n      if (this.props.editHandleType === 'icon') {\n        subLayerProps['points-icon'] = {\n          type: _layers.IconLayer,\n          iconAtlas: this.props.editHandleIconAtlas,\n          iconMapping: this.props.editHandleIconMapping,\n          sizeUnits: this.props.editHandleIconSizeUnits,\n          sizeScale: this.props.editHandleIconSizeScale,\n          getIcon: guideAccessor(this.props.getEditHandleIcon),\n          getSize: guideAccessor(this.props.getEditHandleIconSize),\n          getColor: guideAccessor(this.props.getEditHandleIconColor),\n          getAngle: guideAccessor(this.props.getEditHandleIconAngle)\n        };\n      } else {\n        subLayerProps['points-circle'] = {\n          type: _layers.ScatterplotLayer,\n          radiusScale: this.props.editHandlePointRadiusScale,\n          stroked: this.props.editHandlePointOutline,\n          getLineWidth: this.props.editHandlePointStrokeWidth,\n          radiusUnits: this.props.editHandlePointRadiusUnits,\n          radiusMinPixels: this.props.editHandlePointRadiusMinPixels,\n          radiusMaxPixels: this.props.editHandlePointRadiusMaxPixels,\n          getRadius: guideAccessor(this.props.getEditHandlePointRadius),\n          getFillColor: guideAccessor(this.props.getEditHandlePointColor),\n          getLineColor: guideAccessor(this.props.getEditHandlePointOutlineColor)\n        };\n      }\n\n      var layer = new _layers.GeoJsonLayer(this.getSubLayerProps({\n        id: \"guides\",\n        data: guides,\n        fp64: this.props.fp64,\n        _subLayerProps: subLayerProps,\n        lineWidthScale: this.props.lineWidthScale,\n        lineWidthMinPixels: this.props.lineWidthMinPixels,\n        lineWidthMaxPixels: this.props.lineWidthMaxPixels,\n        lineWidthUnits: this.props.lineWidthUnits,\n        lineJointRounded: this.props.lineJointRounded,\n        lineCapRounded: this.props.lineCapRounded,\n        lineMiterLimit: this.props.lineMiterLimit,\n        getLineColor: guideAccessor(this.props.getTentativeLineColor),\n        getLineWidth: guideAccessor(this.props.getTentativeLineWidth),\n        getFillColor: guideAccessor(this.props.getTentativeFillColor),\n        pointType: this.props.editHandleType === 'icon' ? 'icon' : 'circle',\n        iconAtlas: this.props.editHandleIconAtlas\n      }));\n      return [layer];\n    }\n  }, {\n    key: \"createTooltipsLayers\",\n    value: function createTooltipsLayers() {\n      var mode = this.getActiveMode();\n      var tooltips = mode.getTooltips(this.getModeProps(this.props));\n      var layer = new _layers.TextLayer(_objectSpread({\n        getSize: DEFAULT_TOOLTIP_FONT_SIZE\n      }, this.getSubLayerProps({\n        id: \"tooltips\",\n        data: tooltips\n      })));\n      return [layer];\n    }\n  }, {\n    key: \"onLayerClick\",\n    value: function onLayerClick(event) {\n      this.getActiveMode().handleClick(event, this.getModeProps(this.props));\n    }\n  }, {\n    key: \"onLayerKeyUp\",\n    value: function onLayerKeyUp(event) {\n      this.getActiveMode().handleKeyUp(event, this.getModeProps(this.props));\n    }\n  }, {\n    key: \"onStartDragging\",\n    value: function onStartDragging(event) {\n      this.getActiveMode().handleStartDragging(event, this.getModeProps(this.props));\n    }\n  }, {\n    key: \"onDragging\",\n    value: function onDragging(event) {\n      this.getActiveMode().handleDragging(event, this.getModeProps(this.props));\n    }\n  }, {\n    key: \"onStopDragging\",\n    value: function onStopDragging(event) {\n      this.getActiveMode().handleStopDragging(event, this.getModeProps(this.props));\n    }\n  }, {\n    key: \"onPointerMove\",\n    value: function onPointerMove(event) {\n      this.setState({\n        lastPointerMoveEvent: event\n      });\n      this.getActiveMode().handlePointerMove(event, this.getModeProps(this.props));\n    }\n  }, {\n    key: \"getCursor\",\n    value: function getCursor(_ref3) {\n      var isDragging = _ref3.isDragging;\n\n      if (this.state === null || this.state === undefined) {\n        // Layer in 'Awaiting state'\n        return null;\n      }\n\n      var cursor = this.state.cursor;\n\n      if (!cursor) {\n        // default cursor\n        cursor = isDragging ? 'grabbing' : 'grab';\n      }\n\n      return cursor;\n    }\n  }, {\n    key: \"getActiveMode\",\n    value: function getActiveMode() {\n      return this.state.mode;\n    }\n  }]);\n\n  return EditableGeoJsonLayer;\n}(_editableLayer[\"default\"]);\n\nexports[\"default\"] = EditableGeoJsonLayer;\n\n_defineProperty(EditableGeoJsonLayer, \"layerName\", 'EditableGeoJsonLayer');\n\n_defineProperty(EditableGeoJsonLayer, \"defaultProps\", defaultProps);\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9sYXllcnMvZWRpdGFibGUtZ2VvanNvbi1sYXllci50cyJdLCJuYW1lcyI6WyJERUZBVUxUX0xJTkVfQ09MT1IiLCJERUZBVUxUX0ZJTExfQ09MT1IiLCJERUZBVUxUX1NFTEVDVEVEX0xJTkVfQ09MT1IiLCJERUZBVUxUX1NFTEVDVEVEX0ZJTExfQ09MT1IiLCJERUZBVUxUX1RFTlRBVElWRV9MSU5FX0NPTE9SIiwiREVGQVVMVF9URU5UQVRJVkVfRklMTF9DT0xPUiIsIkRFRkFVTFRfRURJVElOR19FWElTVElOR19QT0lOVF9DT0xPUiIsIkRFRkFVTFRfRURJVElOR19JTlRFUk1FRElBVEVfUE9JTlRfQ09MT1IiLCJERUZBVUxUX0VESVRJTkdfU05BUF9QT0lOVF9DT0xPUiIsIkRFRkFVTFRfRURJVElOR19QT0lOVF9PVVRMSU5FX0NPTE9SIiwiREVGQVVMVF9FRElUSU5HX0VYSVNUSU5HX1BPSU5UX1JBRElVUyIsIkRFRkFVTFRfRURJVElOR19JTlRFUk1FRElBVEVfUE9JTlRfUkFESVVTIiwiREVGQVVMVF9FRElUSU5HX1NOQVBfUE9JTlRfUkFESVVTIiwiREVGQVVMVF9UT09MVElQX0ZPTlRfU0laRSIsIlBST0pFQ1RFRF9QSVhFTF9TSVpFX01VTFRJUExJRVIiLCJERUZBVUxUX0VESVRfTU9ERSIsIkRyYXdQb2x5Z29uTW9kZSIsImd1aWRlQWNjZXNzb3IiLCJhY2Nlc3NvciIsImd1aWRlTWF5YmVXcmFwcGVkIiwidW53cmFwR3VpZGUiLCJfX3NvdXJjZSIsIm9iamVjdCIsInNvdXJjZUZlYXR1cmUiLCJmZWF0dXJlIiwiZ2V0RWRpdEhhbmRsZUNvbG9yIiwiaGFuZGxlIiwicHJvcGVydGllcyIsImVkaXRIYW5kbGVUeXBlIiwiZ2V0RWRpdEhhbmRsZU91dGxpbmVDb2xvciIsImdldEVkaXRIYW5kbGVSYWRpdXMiLCJkZWZhdWx0UHJvcHMiLCJtb2RlIiwib25FZGl0IiwicGlja2FibGUiLCJwaWNraW5nUmFkaXVzIiwicGlja2luZ0RlcHRoIiwiZnA2NCIsImZpbGxlZCIsInN0cm9rZWQiLCJsaW5lV2lkdGhTY2FsZSIsImxpbmVXaWR0aE1pblBpeGVscyIsImxpbmVXaWR0aE1heFBpeGVscyIsIk51bWJlciIsIk1BWF9TQUZFX0lOVEVHRVIiLCJwaWNraW5nTGluZVdpZHRoRXh0cmFQaXhlbHMiLCJsaW5lV2lkdGhVbml0cyIsImxpbmVKb2ludFJvdW5kZWQiLCJsaW5lQ2FwUm91bmRlZCIsImxpbmVNaXRlckxpbWl0IiwicG9pbnRSYWRpdXNTY2FsZSIsInBvaW50UmFkaXVzTWluUGl4ZWxzIiwicG9pbnRSYWRpdXNNYXhQaXhlbHMiLCJnZXRMaW5lQ29sb3IiLCJpc1NlbGVjdGVkIiwiZ2V0RmlsbENvbG9yIiwiZ2V0UmFkaXVzIiwiZiIsInJhZGl1cyIsInNpemUiLCJnZXRMaW5lV2lkdGgiLCJsaW5lV2lkdGgiLCJnZXRUZW50YXRpdmVMaW5lQ29sb3IiLCJnZXRUZW50YXRpdmVGaWxsQ29sb3IiLCJnZXRUZW50YXRpdmVMaW5lV2lkdGgiLCJlZGl0SGFuZGxlUG9pbnRSYWRpdXNTY2FsZSIsImVkaXRIYW5kbGVQb2ludE91dGxpbmUiLCJlZGl0SGFuZGxlUG9pbnRTdHJva2VXaWR0aCIsImVkaXRIYW5kbGVQb2ludFJhZGl1c1VuaXRzIiwiZWRpdEhhbmRsZVBvaW50UmFkaXVzTWluUGl4ZWxzIiwiZWRpdEhhbmRsZVBvaW50UmFkaXVzTWF4UGl4ZWxzIiwiZ2V0RWRpdEhhbmRsZVBvaW50Q29sb3IiLCJnZXRFZGl0SGFuZGxlUG9pbnRPdXRsaW5lQ29sb3IiLCJnZXRFZGl0SGFuZGxlUG9pbnRSYWRpdXMiLCJlZGl0SGFuZGxlSWNvbkF0bGFzIiwiZWRpdEhhbmRsZUljb25NYXBwaW5nIiwiZWRpdEhhbmRsZUljb25TaXplU2NhbGUiLCJlZGl0SGFuZGxlSWNvblNpemVVbml0cyIsImdldEVkaXRIYW5kbGVJY29uIiwiZ2V0RWRpdEhhbmRsZUljb25TaXplIiwiZ2V0RWRpdEhhbmRsZUljb25Db2xvciIsImdldEVkaXRIYW5kbGVJY29uQW5nbGUiLCJiaWxsYm9hcmQiLCJtb2RlTmFtZU1hcHBpbmciLCJ2aWV3IiwiVmlld01vZGUiLCJtb2RpZnkiLCJNb2RpZnlNb2RlIiwidHJhbnNsYXRlIiwiU25hcHBhYmxlTW9kZSIsIlRyYW5zbGF0ZU1vZGUiLCJ0cmFuc2Zvcm0iLCJUcmFuc2Zvcm1Nb2RlIiwic2NhbGUiLCJTY2FsZU1vZGUiLCJyb3RhdGUiLCJSb3RhdGVNb2RlIiwiZHVwbGljYXRlIiwiRHVwbGljYXRlTW9kZSIsInNwbGl0IiwiU3BsaXRQb2x5Z29uTW9kZSIsImV4dHJ1ZGUiLCJFeHRydWRlTW9kZSIsImVsZXZhdGlvbiIsIkVsZXZhdGlvbk1vZGUiLCJkcmF3UG9pbnQiLCJEcmF3UG9pbnRNb2RlIiwiZHJhd0xpbmVTdHJpbmciLCJEcmF3TGluZVN0cmluZ01vZGUiLCJkcmF3UG9seWdvbiIsImRyYXdSZWN0YW5nbGUiLCJEcmF3UmVjdGFuZ2xlTW9kZSIsImRyYXdTcXVhcmUiLCJEcmF3U3F1YXJlTW9kZSIsImRyYXdSZWN0YW5nbGVGcm9tQ2VudGVyIiwiRHJhd1JlY3RhbmdsZUZyb21DZW50ZXJNb2RlIiwiZHJhd1NxdWFyZUZyb21DZW50ZXIiLCJEcmF3U3F1YXJlRnJvbUNlbnRlck1vZGUiLCJkcmF3Q2lyY2xlRnJvbUNlbnRlciIsIkRyYXdDaXJjbGVGcm9tQ2VudGVyTW9kZSIsImRyYXdDaXJjbGVCeUJvdW5kaW5nQm94IiwiRHJhd0NpcmNsZUJ5RGlhbWV0ZXJNb2RlIiwiZHJhd0VsbGlwc2VCeUJvdW5kaW5nQm94IiwiRHJhd0VsbGlwc2VCeUJvdW5kaW5nQm94TW9kZSIsImRyYXdSZWN0YW5nbGVVc2luZzNQb2ludHMiLCJEcmF3UmVjdGFuZ2xlVXNpbmdUaHJlZVBvaW50c01vZGUiLCJkcmF3RWxsaXBzZVVzaW5nM1BvaW50cyIsIkRyYXdFbGxpcHNlVXNpbmdUaHJlZVBvaW50c01vZGUiLCJkcmF3OTBEZWdyZWVQb2x5Z29uIiwiRHJhdzkwRGVncmVlUG9seWdvbk1vZGUiLCJkcmF3UG9seWdvbkJ5RHJhZ2dpbmciLCJEcmF3UG9seWdvbkJ5RHJhZ2dpbmdNb2RlIiwiRWRpdGFibGVHZW9Kc29uTGF5ZXIiLCJzdWJMYXllclByb3BzIiwiZ2V0U3ViTGF5ZXJQcm9wcyIsImlkIiwiZGF0YSIsInByb3BzIiwic2VsZWN0aW9uQXdhcmVBY2Nlc3NvciIsImdldFBvaW50UmFkaXVzIiwiX3N1YkxheWVyUHJvcHMiLCJsaW5lc3RyaW5ncyIsInVwZGF0ZVRyaWdnZXJzIiwiYWxsIiwic2VsZWN0ZWRGZWF0dXJlSW5kZXhlcyIsInR5cGUiLCJFZGl0YWJsZVBhdGhMYXllciIsImxheWVycyIsIkdlb0pzb25MYXllciIsImNvbmNhdCIsImNyZWF0ZUd1aWRlc0xheWVycyIsImNyZWF0ZVRvb2x0aXBzTGF5ZXJzIiwic2V0U3RhdGUiLCJzZWxlY3RlZEZlYXR1cmVzIiwiZWRpdEhhbmRsZXMiLCJvcHRzIiwiY2hhbmdlRmxhZ3MiLCJzdGF0ZUNoYW5nZWQiLCJvbGRQcm9wcyIsImNvbnRleHQiLCJwcm9wc09yRGF0YUNoYW5nZWQiLCJtb2RlUHJvcENoYW5nZWQiLCJPYmplY3QiLCJrZXlzIiwibGVuZ3RoIiwiTW9kZUNvbnN0cnVjdG9yIiwiY29uc29sZSIsIndhcm4iLCJTdHJpbmciLCJzdGF0ZSIsImN1cnNvciIsIkFycmF5IiwiaXNBcnJheSIsIm1hcCIsImVsZW0iLCJmZWF0dXJlcyIsIm1vZGVDb25maWciLCJzZWxlY3RlZEluZGV4ZXMiLCJsYXN0UG9pbnRlck1vdmVFdmVudCIsImVkaXRBY3Rpb24iLCJzZXROZWVkc1VwZGF0ZSIsIm9uVXBkYXRlQ3Vyc29yIiwiaXNGZWF0dXJlU2VsZWN0ZWQiLCJmZWF0dXJlSW5kZXgiLCJpbmRleE9mIiwiaW5jbHVkZXMiLCJpbmZvIiwic291cmNlTGF5ZXIiLCJlbmRzV2l0aCIsImlzR3VpZGUiLCJnZXRTdWJMYXllcnMiLCJsYXllciIsInVwZGF0ZUF1dG9IaWdobGlnaHQiLCJnZXRBY3RpdmVNb2RlIiwiZ3VpZGVzIiwiZ2V0R3VpZGVzIiwiZ2V0TW9kZVByb3BzIiwiYXV0b0hpZ2hsaWdodCIsIkljb25MYXllciIsImljb25BdGxhcyIsImljb25NYXBwaW5nIiwic2l6ZVVuaXRzIiwic2l6ZVNjYWxlIiwiZ2V0SWNvbiIsImdldFNpemUiLCJnZXRDb2xvciIsImdldEFuZ2xlIiwiU2NhdHRlcnBsb3RMYXllciIsInJhZGl1c1NjYWxlIiwicmFkaXVzVW5pdHMiLCJyYWRpdXNNaW5QaXhlbHMiLCJyYWRpdXNNYXhQaXhlbHMiLCJwb2ludFR5cGUiLCJ0b29sdGlwcyIsImdldFRvb2x0aXBzIiwiVGV4dExheWVyIiwiZXZlbnQiLCJoYW5kbGVDbGljayIsImhhbmRsZUtleVVwIiwiaGFuZGxlU3RhcnREcmFnZ2luZyIsImhhbmRsZURyYWdnaW5nIiwiaGFuZGxlU3RvcERyYWdnaW5nIiwiaGFuZGxlUG9pbnRlck1vdmUiLCJpc0RyYWdnaW5nIiwidW5kZWZpbmVkIiwiRWRpdGFibGVMYXllciJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUdBOztBQUVBOztBQW9DQTs7QUFFQTs7QUFDQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRUEsSUFBTUEsa0JBQTZCLEdBQUcsQ0FBQyxHQUFELEVBQU0sR0FBTixFQUFXLEdBQVgsRUFBZ0IsSUFBaEIsQ0FBdEM7QUFDQSxJQUFNQyxrQkFBNkIsR0FBRyxDQUFDLEdBQUQsRUFBTSxHQUFOLEVBQVcsR0FBWCxFQUFnQixJQUFoQixDQUF0QztBQUNBLElBQU1DLDJCQUFzQyxHQUFHLENBQUMsR0FBRCxFQUFNLEdBQU4sRUFBVyxHQUFYLEVBQWdCLElBQWhCLENBQS9DO0FBQ0EsSUFBTUMsMkJBQXNDLEdBQUcsQ0FBQyxHQUFELEVBQU0sR0FBTixFQUFXLElBQVgsRUFBaUIsSUFBakIsQ0FBL0M7QUFDQSxJQUFNQyw0QkFBdUMsR0FBRyxDQUFDLElBQUQsRUFBTyxJQUFQLEVBQWEsSUFBYixFQUFtQixJQUFuQixDQUFoRDtBQUNBLElBQU1DLDRCQUF1QyxHQUFHLENBQUMsSUFBRCxF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QUEvQztBQUNEOzs7a0NBRWErRSxLLEVBQXlCO0FBQ3JDLFdBQUtoRSxRQUFMLENBQWM7QUFBRTBCLFFBQUFBLG9CQUFvQixFQUFFc0M7QUFBeEIsT0FBZDtBQUNBLFdBQUt2QixhQUFMLEdBQXFCNkIsaUJBQXJCLENBQXVDTixLQUF2QyxFQUE4QyxLQUFLcEIsWUFBTCxDQUFrQixLQUFLM0QsS0FBdkIsQ0FBOUM7QUFDRDs7O3FDQUVrRDtBQUFBLFVBQXZDc0YsVUFBdUMsU0FBdkNBLFVBQXVDOztBQUNqRCxVQUFJLEtBQUt0RCxLQUFMLEtBQWUsSUFBZixJQUF1QixLQUFLQSxLQUFMLEtBQWV1RCxTQUExQyxFQUFxRDtBQUNuRDtBQUNBLGVBQU8sSUFBUDtBQUNEOztBQUpnRCxVQU0zQ3RELE1BTjJDLEdBTWhDLEtBQUtELEtBTjJCLENBTTNDQyxNQU4yQzs7QUFPakQsVUFBSSxDQUFDQSxNQUFMLEVBQWE7QUFDWDtBQUNBQSxRQUFBQSxNQUFNLEdBQUdxRCxVQUFVLEdBQUcsVUFBSCxHQUFnQixNQUFuQztBQUNEOztBQUNELGFBQU9yRCxNQUFQO0FBQ0Q7OztvQ0FFb0M7QUFDbkMsYUFBTyxLQUFLRCxLQUFMLENBQVd6SSxJQUFsQjtBQUNEOzs7O0VBelUrQ2lNLHlCOzs7O2dCQUE3QjdGLG9CLGVBSUEsc0I7O2dCQUpBQSxvQixrQkFLR3JHLFkiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZW52IGJyb3dzZXIgKi9cblxuaW1wb3J0IHsgUkdCQUNvbG9yIH0gZnJvbSAnQGRlY2suZ2wvY29yZSc7XG5pbXBvcnQgeyBHZW9Kc29uTGF5ZXIsIFNjYXR0ZXJwbG90TGF5ZXIsIEljb25MYXllciwgVGV4dExheWVyIH0gZnJvbSAnQGRlY2suZ2wvbGF5ZXJzJztcblxuaW1wb3J0IHtcbiAgVmlld01vZGUsXG4gIE1vZGlmeU1vZGUsXG4gIFRyYW5zbGF0ZU1vZGUsXG4gIFNjYWxlTW9kZSxcbiAgUm90YXRlTW9kZSxcbiAgRHVwbGljYXRlTW9kZSxcbiAgU3BsaXRQb2x5Z29uTW9kZSxcbiAgRXh0cnVkZU1vZGUsXG4gIEVsZXZhdGlvbk1vZGUsXG4gIERyYXdQb2ludE1vZGUsXG4gIERyYXdMaW5lU3RyaW5nTW9kZSxcbiAgRHJhd1BvbHlnb25Nb2RlLFxuICBEcmF3UmVjdGFuZ2xlTW9kZSxcbiAgRHJhd1NxdWFyZU1vZGUsXG4gIERyYXdSZWN0YW5nbGVGcm9tQ2VudGVyTW9kZSxcbiAgRHJhd1NxdWFyZUZyb21DZW50ZXJNb2RlLFxuICBEcmF3Q2lyY2xlRnJvbUNlbnRlck1vZGUsXG4gIERyYXdDaXJjbGVCeURpYW1ldGVyTW9kZSxcbiAgRHJhd0VsbGlwc2VCeUJvdW5kaW5nQm94TW9kZSxcbiAgRHJhd1JlY3RhbmdsZVVzaW5nVGhyZWVQb2ludHNNb2RlLFxuICBEcmF3RWxsaXBzZVVzaW5nVGhyZWVQb2ludHNNb2RlLFxuICBEcmF3OTBEZWdyZWVQb2x5Z29uTW9kZSxcbiAgRHJhd1BvbHlnb25CeURyYWdnaW5nTW9kZSxcbiAgU25hcHBhYmxlTW9kZSxcbiAgVHJhbnNmb3JtTW9kZSxcbiAgRWRpdEFjdGlvbixcbiAgQ2xpY2tFdmVudCxcbiAgU3RhcnREcmFnZ2luZ0V2ZW50LFxuICBTdG9wRHJhZ2dpbmdFdmVudCxcbiAgRHJhZ2dpbmdFdmVudCxcbiAgUG9pbnRlck1vdmVFdmVudCxcbiAgR2VvSnNvbkVkaXRNb2RlVHlwZSxcbiAgRmVhdHVyZUNvbGxlY3Rpb24sXG59IGZyb20gJ0BuZWJ1bGEuZ2wvZWRpdC1tb2Rlcyc7XG5cbmltcG9ydCB7IFBST0pFQ1RFRF9QSVhFTF9TSVpFX01VTFRJUExJRVIgfSBmcm9tICcuLi9jb25zdGFudHMnO1xuXG5pbXBvcnQgRWRpdGFibGVMYXllciwgeyBFZGl0YWJsZUxheWVyUHJvcHMgfSBmcm9tICcuL2VkaXRhYmxlLWxheWVyJztcbmltcG9ydCBFZGl0YWJsZVBhdGhMYXllciBmcm9tICcuL2VkaXRhYmxlLXBhdGgtbGF5ZXInO1xuXG5jb25zdCBERUZBVUxUX0xJTkVfQ09MT1I6IFJHQkFDb2xvciA9IFsweDAsIDB4MCwgMHgwLCAweDk5XTtcbmNvbnN0IERFRkFVTFRfRklMTF9DT0xPUjogUkdCQUNvbG9yID0gWzB4MCwgMHgwLCAweDAsIDB4OTBdO1xuY29uc3QgREVGQVVMVF9TRUxFQ1RFRF9MSU5FX0NPTE9SOiBSR0JBQ29sb3IgPSBbMHgwLCAweDAsIDB4MCwgMHhmZl07XG5jb25zdCBERUZBVUxUX1NFTEVDVEVEX0ZJTExfQ09MT1I6IFJHQkFDb2xvciA9IFsweDAsIDB4MCwgMHg5MCwgMHg5MF07XG5jb25zdCBERUZBVUxUX1RFTlRBVElWRV9MSU5FX0NPTE9SOiBSR0JBQ29sb3IgPSBbMHg5MCwgMHg5MCwgMHg5MCwgMHhmZl07XG5jb25zdCBERUZBVUxUX1RFTlRBVElWRV9GSUxMX0NPTE9SOiBSR0JBQ29sb3IgPSBbMHg5MCwgMHg5MCwgMHg5MCwgMHg5MF07XG5jb25zdCBERUZBVUxUX0VESVRJTkdfRVhJU1RJTkdfUE9JTlRfQ09MT1I6IFJHQkFDb2xvciA9IFsweGMwLCAweDAsIDB4MCwgMHhmZl07XG5jb25zdCBERUZBVUxUX0VESVRJTkdfSU5URVJNRURJQVRFX1BPSU5UX0NPTE9SOiBSR0JBQ29sb3IgPSBbMHgwLCAweDAsIDB4MCwgMHg4MF07XG5jb25zdCBERUZBVUxUX0VESVRJTkdfU05BUF9QT0lOVF9DT0xPUjogUkdCQUNvbG9yID0gWzB4N2MsIDB4MDAsIDB4YzAsIDB4ZmZdO1xuY29uc3QgREVGQVVMVF9FRElUSU5HX1BPSU5UX09VVExJTkVfQ09MT1I6IFJHQkFDb2xvciA9IFsweGZmLCAweGZmLCAweGZmLCAweGZmXTtcbmNvbnN0IERFRkFVTFRfRURJVElOR19FWElTVElOR19QT0lOVF9SQURJVVMgPSA1O1xuY29uc3QgREVGQVVMVF9FRElUSU5HX0lOVEVSTUVESUFURV9QT0lOVF9SQURJVVMgPSAzO1xuY29uc3QgREVGQVVMVF9FRElUSU5HX1NOQVBfUE9JTlRfUkFESVVTID0gNztcbmNvbnN0IERFRkFVTFRfVE9PTFRJUF9GT05UX1NJWkUgPSAzMiAqIFBST0pFQ1RFRF9QSVhFTF9TSVpFX01VTFRJUExJRVI7XG5cbmNvbnN0IERFRkFVTFRfRURJVF9NT0RFID0gRHJhd1BvbHlnb25Nb2RlO1xuXG5mdW5jdGlvbiBndWlkZUFjY2Vzc29yKGFjY2Vzc29yKSB7XG4gIGlmICghYWNjZXNzb3IgfHwgdHlwZW9mIGFjY2Vzc29yICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgcmV0dXJuIGFjY2Vzc29yO1xuICB9XG4gIHJldHVybiAoZ3VpZGVNYXliZVdyYXBwZWQpID0+IGFjY2Vzc29yKHVud3JhcEd1aWRlKGd1aWRlTWF5YmVXcmFwcGVkKSk7XG59XG5cbi8vIFRoZSBvYmplY3QgaGFuZGVkIHRvIHVzIGZyb20gZGVjay5nbCBpcyBkaWZmZXJlbnQgZGVwZW5kaW5nIG9uIHRoZSB2ZXJzaW9uIG9mIGRlY2suZ2wgdXNlZCwgdW53cmFwIGFzIG5lY2Vzc2FyeVxuZnVuY3Rpb24gdW53cmFwR3VpZGUoZ3VpZGVNYXliZVdyYXBwZWQpIHtcbiAgaWYgKGd1aWRlTWF5YmVXcmFwcGVkLl9fc291cmNlKSB7XG4gICAgcmV0dXJuIGd1aWRlTWF5YmVXcmFwcGVkLl9fc291cmNlLm9iamVjdDtcbiAgfSBlbHNlIGlmIChndWlkZU1heWJlV3JhcHBlZC5zb3VyY2VGZWF0dXJlKSB7XG4gICAgcmV0dXJuIGd1aWRlTWF5YmVXcmFwcGVkLnNvdXJjZUZlYXR1cmUuZmVhdHVyZTtcbiAgfVxuICAvLyBJdCBpcyBub3Qgd3JhcHBlZCwgcmV0dXJuIGFzIGlzXG4gIHJldHVybiBndWlkZU1heWJlV3JhcHBlZDtcbn1cblxuZnVuY3Rpb24gZ2V0RWRpdEhhbmRsZUNvbG9yKGhhbmRsZSkge1xuICBzd2l0Y2ggKGhhbmRsZS5wcm9wZXJ0aWVzLmVkaXRIYW5kbGVUeXBlKSB7XG4gICAgY2FzZSAnZXhpc3RpbmcnOlxuICAgICAgcmV0dXJuIERFRkFVTFRfRURJVElOR19FWElTVElOR19QT0lOVF9DT0xPUjtcbiAgICBjYXNlICdzbmFwLXNvdXJjZSc6XG4gICAgICByZXR1cm4gREVGQVVMVF9FRElUSU5HX1NOQVBfUE9JTlRfQ09MT1I7XG4gICAgY2FzZSAnaW50ZXJtZWRpYXRlJzpcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIERFRkFVTFRfRURJVElOR19JTlRFUk1FRElBVEVfUE9JTlRfQ09MT1I7XG4gIH1cbn1cblxuZnVuY3Rpb24gZ2V0RWRpdEhhbmRsZU91dGxpbmVDb2xvcihoYW5kbGUpIHtcbiAgcmV0dXJuIERFRkFVTFRfRURJVElOR19QT0lOVF9PVVRMSU5FX0NPTE9SO1xufVxuXG5mdW5jdGlvbiBnZXRFZGl0SGFuZGxlUmFkaXVzKGhhbmRsZSkge1xuICBzd2l0Y2ggKGhhbmRsZS5wcm9wZXJ0aWVzLmVkaXRIYW5kbGVUeXBlKSB7XG4gICAgY2FzZSAnZXhpc3RpbmcnOlxuICAgICAgcmV0dXJuIERFRkFVTFRfRURJVElOR19FWElTVElOR19QT0lOVF9SQURJVVM7XG4gICAgY2FzZSAnc25hcCc6XG4gICAgICByZXR1cm4gREVGQVVMVF9FRElUSU5HX1NOQVBfUE9JTlRfUkFESVVTO1xuICAgIGNhc2UgJ2ludGVybWVkaWF0ZSc6XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBERUZBVUxUX0VESVRJTkdfSU5URVJNRURJQVRFX1BPSU5UX1JBRElVUztcbiAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIEVkaXRhYmxlR2VvanNvbkxheWVyUHJvcHM8RD4gZXh0ZW5kcyBFZGl0YWJsZUxheWVyUHJvcHM8RD4ge1xuICBtb2RlPzogYW55O1xuICBtb2RlQ29uZmlnPzogYW55O1xuICBzZWxlY3RlZEZlYXR1cmVJbmRleGVzPzogbnVtYmVyW107XG4gIG9uRWRpdD86ICh1cGRhdGVkRGF0YT8sIGVkaXRUeXBlPzogc3RyaW5nLCBmZWF0dXJlSW5kZXhlcz86IG51bWJlcltdLCBlZGl0Q29udGV4dD8pID0+IHZvaWQ7XG5cbiAgcGlja2FibGU/OiBib29sZWFuO1xuICBwaWNraW5nUmFkaXVzPzogbnVtYmVyO1xuICBwaWNraW5nRGVwdGg/OiBudW1iZXI7XG4gIGZwNjQ/OiBib29sZWFuO1xuICBmaWxsZWQ/OiBib29sZWFuO1xuICBzdHJva2VkPzogYm9vbGVhbjtcbiAgbGluZVdpZHRoU2NhbGU/OiBudW1iZXI7XG4gIGxpbmVXaWR0aE1pblBpeGVscz86IG51bWJlcjtcbiAgbGluZVdpZHRoTWF4UGl4ZWxzPzogbnVtYmVyO1xuICBwaWNraW5nTGluZVdpZHRoRXh0cmFQaXhlbHM/OiBudW1iZXI7XG4gIGxpbmVXaWR0aFVuaXRzPzogc3RyaW5nO1xuICBsaW5lSm9pbnRSb3VuZGVkPzogYm9vbGVhbjtcbiAgbGluZUNhcFJvdW5kZWQ/OiBib29sZWFuO1xuICBsaW5lTWl0ZXJMaW1pdD86IG51bWJlcjtcbiAgcG9pbnRSYWRpdXNTY2FsZT86IG51bWJlcjtcbiAgcG9pbnRSYWRpdXNNaW5QaXhlbHM/OiBudW1iZXI7XG4gIHBvaW50UmFkaXVzTWF4UGl4ZWxzPzogbnVtYmVyO1xuXG4gIGdldExpbmVDb2xvcj86IFJHQkFDb2xvciB8ICgoZmVhdHVyZSwgaXNTZWxlY3RlZCwgbW9kZSkgPT4gUkdCQUNvbG9yKTtcbiAgZ2V0RmlsbENvbG9yPzogUkdCQUNvbG9yIHwgKChmZWF0dXJlLCBpc1NlbGVjdGVkLCBtb2RlKSA9PiBSR0JBQ29sb3IpO1xuICBnZXRSYWRpdXM/OiBudW1iZXIgfCAoKGYpID0+IG51bWJlcik7XG4gIGdldExpbmVXaWR0aD86IG51bWJlciB8ICgoZikgPT4gbnVtYmVyKTtcblxuICBnZXRUZW50YXRpdmVMaW5lQ29sb3I/OiBSR0JBQ29sb3IgfCAoKGZlYXR1cmUsIGlzU2VsZWN0ZWQsIG1vZGUpID0+IFJHQkFDb2xvcik7XG4gIGdldFRlbnRhdGl2ZUZpbGxDb2xvcj86IFJHQkFDb2xvciB8ICgoZmVhdHVyZSwgaXNTZWxlY3RlZCwgbW9kZSkgPT4gUkdCQUNvbG9yKTtcbiAgZ2V0VGVudGF0aXZlTGluZVdpZHRoPzogbnVtYmVyIHwgKChmKSA9PiBudW1iZXIpO1xuXG4gIGVkaXRIYW5kbGVUeXBlPzogc3RyaW5nO1xuXG4gIGVkaXRIYW5kbGVQb2ludFJhZGl1c1NjYWxlPzogbnVtYmVyO1xuICBlZGl0SGFuZGxlUG9pbnRPdXRsaW5lPzogYm9vbGVhbjtcbiAgZWRpdEhhbmRsZVBvaW50U3Ryb2tlV2lkdGg/OiBudW1iZXI7XG4gIGVkaXRIYW5kbGVQb2ludFJhZGl1c1VuaXRzPzogc3RyaW5nO1xuICBlZGl0SGFuZGxlUG9pbnRSYWRpdXNNaW5QaXhlbHM/OiBudW1iZXI7XG4gIGVkaXRIYW5kbGVQb2ludFJhZGl1c01heFBpeGVscz86IG51bWJlcjtcbiAgZ2V0RWRpdEhhbmRsZVBvaW50Q29sb3I/OiBSR0JBQ29sb3IgfCAoKGhhbmRsZSkgPT4gUkdCQUNvbG9yKTtcbiAgZ2V0RWRpdEhhbmRsZVBvaW50T3V0bGluZUNvbG9yPzogUkdCQUNvbG9yIHwgKChoYW5kbGUpID0+IFJHQkFDb2xvcik7XG4gIGdldEVkaXRIYW5kbGVQb2ludFJhZGl1cz86IG51bWJlciB8ICgoaGFuZGxlKSA9PiBudW1iZXIpO1xuXG4gIC8vIGljb24gaGFuZGxlc1xuICBlZGl0SGFuZGxlSWNvbkF0bGFzPzogYW55O1xuICBlZGl0SGFuZGxlSWNvbk1hcHBpbmc/OiBhbnk7XG4gIGVkaXRIYW5kbGVJY29uU2l6ZVNjYWxlPzogbnVtYmVyO1xuICBlZGl0SGFuZGxlSWNvblNpemVVbml0cz86IHN0cmluZztcbiAgZ2V0RWRpdEhhbmRsZUljb24/OiAoaGFuZGxlKSA9PiBzdHJpbmc7XG4gIGdldEVkaXRIYW5kbGVJY29uU2l6ZT86IG51bWJlcjtcbiAgZ2V0RWRpdEhhbmRsZUljb25Db2xvcj86IFJHQkFDb2xvciB8ICgoaGFuZGxlKSA9PiBSR0JBQ29sb3IpO1xuICBnZXRFZGl0SGFuZGxlSWNvbkFuZ2xlPzogbnVtYmVyIHwgKChoYW5kbGUpID0+IG51bWJlcik7XG5cbiAgLy8gbWlzY1xuICBiaWxsYm9hcmQ/OiBib29sZWFuO1xufVxuXG5jb25zdCBkZWZhdWx0UHJvcHM6IEVkaXRhYmxlR2VvanNvbkxheWVyUHJvcHM8YW55PiA9IHtcbiAgbW9kZTogREVGQVVMVF9FRElUX01PREUsXG5cbiAgLy8gRWRpdCBhbmQgaW50ZXJhY3Rpb24gZXZlbnRzXG4gIG9uRWRpdDogKCkgPT4ge30sXG5cbiAgcGlja2FibGU6IHRydWUsXG4gIHBpY2tpbmdSYWRpdXM6IDEwLFxuICBwaWNraW5nRGVwdGg6IDUsXG4gIGZwNjQ6IGZhbHNlLFxuICBmaWxsZWQ6IHRydWUsXG4gIHN0cm9rZWQ6IHRydWUsXG4gIGxpbmVXaWR0aFNjYWxlOiBQUk9KRUNURURfUElYRUxfU0laRV9NVUxUSVBMSUVSLFxuICBsaW5lV2lkdGhNaW5QaXhlbHM6IDEsXG4gIGxpbmVXaWR0aE1heFBpeGVsczogTnVtYmVyLk1BWF9TQUZFX0lOVEVHRVIsXG4gIHBpY2tpbmdMaW5lV2lkdGhFeHRyYVBpeGVsczogMCxcbiAgbGluZVdpZHRoVW5pdHM6ICdwaXhlbHMnLFxuICBsaW5lSm9pbnRSb3VuZGVkOiBmYWxzZSxcbiAgbGluZUNhcFJvdW5kZWQ6IGZhbHNlLFxuICBsaW5lTWl0ZXJMaW1pdDogNCxcbiAgcG9pbnRSYWRpdXNTY2FsZTogMSxcbiAgcG9pbnRSYWRpdXNNaW5QaXhlbHM6IDIsXG4gIHBvaW50UmFkaXVzTWF4UGl4ZWxzOiBOdW1iZXIuTUFYX1NBRkVfSU5URUdFUixcbiAgZ2V0TGluZUNvbG9yOiAoZmVhdHVyZSwgaXNTZWxlY3RlZCwgbW9kZSkgPT5cbiAgICBpc1NlbGVjdGVkID8gREVGQVVMVF9TRUxFQ1RFRF9MSU5FX0NPTE9SIDogREVGQVVMVF9MSU5FX0NPTE9SLFxuICBnZXRGaWxsQ29sb3I6IChmZWF0dXJlLCBpc1NlbGVjdGVkLCBtb2RlKSA9PlxuICAgIGlzU2VsZWN0ZWQgPyBERUZBVUxUX1NFTEVDVEVEX0ZJTExfQ09MT1IgOiBERUZBVUxUX0ZJTExfQ09MT1IsXG4gIGdldFJhZGl1czogKGYpID0+XG4gICAgKGYgJiYgZi5wcm9wZXJ0aWVzICYmIGYucHJvcGVydGllcy5yYWRpdXMpIHx8IChmICYmIGYucHJvcGVydGllcyAmJiBmLnByb3BlcnRpZXMuc2l6ZSkgfHwgMSxcbiAgZ2V0TGluZVdpZHRoOiAoZikgPT4gKGYgJiYgZi5wcm9wZXJ0aWVzICYmIGYucHJvcGVydGllcy5saW5lV2lkdGgpIHx8IDMsXG5cbiAgLy8gVGVudGF0aXZlIGZlYXR1cmUgcmVuZGVyaW5nXG4gIGdldFRlbnRhdGl2ZUxpbmVDb2xvcjogKGYpID0+IERFRkFVTFRfVEVOVEFUSVZFX0xJTkVfQ09MT1IsXG4gIGdldFRlbnRhdGl2ZUZpbGxDb2xvcjogKGYpID0+IERFRkFVTFRfVEVOVEFUSVZFX0ZJTExfQ09MT1IsXG4gIGdldFRlbnRhdGl2ZUxpbmVXaWR0aDogKGYpID0+IChmICYmIGYucHJvcGVydGllcyAmJiBmLnByb3BlcnRpZXMubGluZVdpZHRoKSB8fCAzLFxuXG4gIGVkaXRIYW5kbGVUeXBlOiAncG9pbnQnLFxuXG4gIC8vIHBvaW50IGhhbmRsZXNcbiAgZWRpdEhhbmRsZVBvaW50UmFkaXVzU2NhbGU6IDEsXG4gIGVkaXRIYW5kbGVQb2ludE91dGxpbmU6IHRydWUsXG4gIGVkaXRIYW5kbGVQb2ludFN0cm9rZVdpZHRoOiAyLFxuICBlZGl0SGFuZGxlUG9pbnRSYWRpdXNVbml0czogJ3BpeGVscycsXG4gIGVkaXRIYW5kbGVQb2ludFJhZGl1c01pblBpeGVsczogNCxcbiAgZWRpdEhhbmRsZVBvaW50UmFkaXVzTWF4UGl4ZWxzOiA4LFxuICBnZXRFZGl0SGFuZGxlUG9pbnRDb2xvcjogZ2V0RWRpdEhhbmRsZUNvbG9yLFxuICBnZXRFZGl0SGFuZGxlUG9pbnRPdXRsaW5lQ29sb3I6IGdldEVkaXRIYW5kbGVPdXRsaW5lQ29sb3IsXG4gIGdldEVkaXRIYW5kbGVQb2ludFJhZGl1czogZ2V0RWRpdEhhbmRsZVJhZGl1cyxcblxuICAvLyBpY29uIGhhbmRsZXNcbiAgZWRpdEhhbmRsZUljb25BdGxhczogbnVsbCxcbiAgZWRpdEhhbmRsZUljb25NYXBwaW5nOiBudWxsLFxuICBlZGl0SGFuZGxlSWNvblNpemVTY2FsZTogMSxcbiAgZWRpdEhhbmRsZUljb25TaXplVW5pdHM6ICdwaXhlbHMnLFxuICBnZXRFZGl0SGFuZGxlSWNvbjogKGhhbmRsZSkgPT4gaGFuZGxlLnByb3BlcnRpZXMuZWRpdEhhbmRsZVR5cGUsXG4gIGdldEVkaXRIYW5kbGVJY29uU2l6ZTogMTAsXG4gIGdldEVkaXRIYW5kbGVJY29uQ29sb3I6IGdldEVkaXRIYW5kbGVDb2xvcixcbiAgZ2V0RWRpdEhhbmRsZUljb25BbmdsZTogMCxcblxuICAvLyBtaXNjXG4gIGJpbGxib2FyZDogdHJ1ZSxcbn07XG5cbi8vIE1hcHBpbmcgb2YgbW9kZSBuYW1lIHRvIG1vZGUgY2xhc3MgKGZvciBsZWdhY3kgcHVycG9zZXMpXG5jb25zdCBtb2RlTmFtZU1hcHBpbmcgPSB7XG4gIHZpZXc6IFZpZXdNb2RlLFxuXG4gIC8vIEFsdGVyIG1vZGVzXG4gIG1vZGlmeTogTW9kaWZ5TW9kZSxcbiAgdHJhbnNsYXRlOiBuZXcgU25hcHBhYmxlTW9kZShuZXcgVHJhbnNsYXRlTW9kZSgpKSxcblxuICB0cmFuc2Zvcm06IG5ldyBTbmFwcGFibGVNb2RlKG5ldyBUcmFuc2Zvcm1Nb2RlKCkpLFxuICBzY2FsZTogU2NhbGVNb2RlLFxuICByb3RhdGU6IFJvdGF0ZU1vZGUsXG4gIGR1cGxpY2F0ZTogRHVwbGljYXRlTW9kZSxcbiAgc3BsaXQ6IFNwbGl0UG9seWdvbk1vZGUsXG4gIGV4dHJ1ZGU6IEV4dHJ1ZGVNb2RlLFxuICBlbGV2YXRpb246IEVsZXZhdGlvbk1vZGUsXG5cbiAgLy8gRHJhdyBtb2Rlc1xuICBkcmF3UG9pbnQ6IERyYXdQb2ludE1vZGUsXG4gIGRyYXdMaW5lU3RyaW5nOiBEcmF3TGluZVN0cmluZ01vZGUsXG4gIGRyYXdQb2x5Z29uOiBEcmF3UG9seWdvbk1vZGUsXG4gIGRyYXdSZWN0YW5nbGU6IERyYXdSZWN0YW5nbGVNb2RlLFxuICBkcmF3U3F1YXJlOiBEcmF3U3F1YXJlTW9kZSxcbiAgZHJhd1JlY3RhbmdsZUZyb21DZW50ZXI6IERyYXdSZWN0YW5nbGVGcm9tQ2VudGVyTW9kZSxcbiAgZHJhd1NxdWFyZUZyb21DZW50ZXI6IERyYXdTcXVhcmVGcm9tQ2VudGVyTW9kZSxcbiAgZHJhd0NpcmNsZUZyb21DZW50ZXI6IERyYXdDaXJjbGVGcm9tQ2VudGVyTW9kZSxcbiAgZHJhd0NpcmNsZUJ5Qm91bmRpbmdCb3g6IERyYXdDaXJjbGVCeURpYW1ldGVyTW9kZSxcbiAgZHJhd0VsbGlwc2VCeUJvdW5kaW5nQm94OiBEcmF3RWxsaXBzZUJ5Qm91bmRpbmdCb3hNb2RlLFxuICBkcmF3UmVjdGFuZ2xlVXNpbmczUG9pbnRzOiBEcmF3UmVjdGFuZ2xlVXNpbmdUaHJlZVBvaW50c01vZGUsXG4gIGRyYXdFbGxpcHNlVXNpbmczUG9pbnRzOiBEcmF3RWxsaXBzZVVzaW5nVGhyZWVQb2ludHNNb2RlLFxuICBkcmF3OTBEZWdyZWVQb2x5Z29uOiBEcmF3OTBEZWdyZWVQb2x5Z29uTW9kZSxcbiAgZHJhd1BvbHlnb25CeURyYWdnaW5nOiBEcmF3UG9seWdvbkJ5RHJhZ2dpbmdNb2RlLFxufTtcblxuLy8gdHlwZSBTdGF0ZSA9IHtcbi8vICAgbW9kZTogR2VvSnNvbkVkaXRNb2RlLFxuLy8gICB0ZW50YXRpdmVGZWF0dXJlOiA/RmVhdHVyZSxcbi8vICAgZWRpdEhhbmRsZXM6IGFueVtdLFxuLy8gICBzZWxlY3RlZEZlYXR1cmVzOiBGZWF0dXJlW11cbi8vIH07XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEVkaXRhYmxlR2VvSnNvbkxheWVyIGV4dGVuZHMgRWRpdGFibGVMYXllcjxcbiAgYW55LFxuICBFZGl0YWJsZUdlb2pzb25MYXllclByb3BzPGFueT5cbj4ge1xuICBzdGF0aWMgbGF5ZXJOYW1lID0gJ0VkaXRhYmxlR2VvSnNvbkxheWVyJztcbiAgc3RhdGljIGRlZmF1bHRQcm9wcyA9IGRlZmF1bHRQcm9wcztcblxuICAvLyBzZXRTdGF0ZTogKCRTaGFwZTxTdGF0ZT4pID0+IHZvaWQ7XG4gIHJlbmRlckxheWVycygpIHtcbiAgICBjb25zdCBzdWJMYXllclByb3BzID0gdGhpcy5nZXRTdWJMYXllclByb3BzKHtcbiAgICAgIGlkOiAnZ2VvanNvbicsXG5cbiAgICAgIC8vIFByb3h5IG1vc3QgR2VvSnNvbkxheWVyIHByb3BzIGFzLWlzXG4gICAgICBkYXRhOiB0aGlzLnByb3BzLmRhdGEsXG4gICAgICBmcDY0OiB0aGlzLnByb3BzLmZwNjQsXG4gICAgICBmaWxsZWQ6IHRoaXMucHJvcHMuZmlsbGVkLFxuICAgICAgc3Ryb2tlZDogdGhpcy5wcm9wcy5zdHJva2VkLFxuICAgICAgbGluZVdpZHRoU2NhbGU6IHRoaXMucHJvcHMubGluZVdpZHRoU2NhbGUsXG4gICAgICBsaW5lV2lkdGhNaW5QaXhlbHM6IHRoaXMucHJvcHMubGluZVdpZHRoTWluUGl4ZWxzLFxuICAgICAgbGluZVdpZHRoTWF4UGl4ZWxzOiB0aGlzLnByb3BzLmxpbmVXaWR0aE1heFBpeGVscyxcbiAgICAgIGxpbmVXaWR0aFVuaXRzOiB0aGlzLnByb3BzLmxpbmVXaWR0aFVuaXRzLFxuICAgICAgbGluZUpvaW50Um91bmRlZDogdGhpcy5wcm9wcy5saW5lSm9pbnRSb3VuZGVkLFxuICAgICAgbGluZUNhcFJvdW5kZWQ6IHRoaXMucHJvcHMubGluZUNhcFJvdW5kZWQsXG4gICAgICBsaW5lTWl0ZXJMaW1pdDogdGhpcy5wcm9wcy5saW5lTWl0ZXJMaW1pdCxcbiAgICAgIHBvaW50UmFkaXVzU2NhbGU6IHRoaXMucHJvcHMucG9pbnRSYWRpdXNTY2FsZSxcbiAgICAgIHBvaW50UmFkaXVzTWluUGl4ZWxzOiB0aGlzLnByb3BzLnBvaW50UmFkaXVzTWluUGl4ZWxzLFxuICAgICAgcG9pbnRSYWRpdXNNYXhQaXhlbHM6IHRoaXMucHJvcHMucG9pbnRSYWRpdXNNYXhQaXhlbHMsXG4gICAgICBnZXRMaW5lQ29sb3I6IHRoaXMuc2VsZWN0aW9uQXdhcmVBY2Nlc3Nvcih0aGlzLnByb3BzLmdldExpbmVDb2xvciksXG4gICAgICBnZXRGaWxsQ29sb3I6IHRoaXMuc2VsZWN0aW9uQXdhcmVBY2Nlc3Nvcih0aGlzLnByb3BzLmdldEZpbGxDb2xvciksXG4gICAgICBnZXRQb2ludFJhZGl1czogdGhpcy5zZWxlY3Rpb25Bd2FyZUFjY2Vzc29yKHRoaXMucHJvcHMuZ2V0UmFkaXVzKSxcbiAgICAgIGdldExpbmVXaWR0aDogdGhpcy5zZWxlY3Rpb25Bd2FyZUFjY2Vzc29yKHRoaXMucHJvcHMuZ2V0TGluZVdpZHRoKSxcblxuICAgICAgX3N1YkxheWVyUHJvcHM6IHtcbiAgICAgICAgbGluZXN0cmluZ3M6IHtcbiAgICAgICAgICBiaWxsYm9hcmQ6IHRoaXMucHJvcHMuYmlsbGJvYXJkLFxuICAgICAgICAgIHVwZGF0ZVRyaWdnZXJzOiB7XG4gICAgICAgICAgICAvLyByZXF1aXJlZCB0byB1cGRhdGUgZGFzaGVkIGFycmF5IGF0dHJpYnV0ZVxuICAgICAgICAgICAgYWxsOiBbdGhpcy5wcm9wcy5zZWxlY3RlZEZlYXR1cmVJbmRleGVzLCB0aGlzLnByb3BzLm1vZGVdLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICAgICdwb2x5Z29ucy1zdHJva2UnOiB7XG4gICAgICAgICAgYmlsbGJvYXJkOiB0aGlzLnByb3BzLmJpbGxib2FyZCxcbiAgICAgICAgICBwaWNraW5nTGluZVdpZHRoRXh0cmFQaXhlbHM6IHRoaXMucHJvcHMucGlja2luZ0xpbmVXaWR0aEV4dHJhUGl4ZWxzLFxuICAgICAgICAgIHR5cGU6IEVkaXRhYmxlUGF0aExheWVyLFxuICAgICAgICAgIHVwZGF0ZVRyaWdnZXJzOiB7XG4gICAgICAgICAgICAvLyByZXF1aXJlZCB0byB1cGRhdGUgZGFzaGVkIGFycmF5IGF0dHJpYnV0ZVxuICAgICAgICAgICAgYWxsOiBbdGhpcy5wcm9wcy5zZWxlY3RlZEZlYXR1cmVJbmRleGVzLCB0aGlzLnByb3BzLm1vZGVdLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICB9LFxuXG4gICAgICB1cGRhdGVUcmlnZ2Vyczoge1xuICAgICAgICBnZXRMaW5lQ29sb3I6IFt0aGlzLnByb3BzLnNlbGVjdGVkRmVhdHVyZUluZGV4ZXMsIHRoaXMucHJvcHMubW9kZV0sXG4gICAgICAgIGdldEZpbGxDb2xvcjogW3RoaXMucHJvcHMuc2VsZWN0ZWRGZWF0dXJlSW5kZXhlcywgdGhpcy5wcm9wcy5tb2RlXSxcbiAgICAgICAgZ2V0UG9pbnRSYWRpdXM6IFt0aGlzLnByb3BzLnNlbGVjdGVkRmVhdHVyZUluZGV4ZXMsIHRoaXMucHJvcHMubW9kZV0sXG4gICAgICAgIGdldExpbmVXaWR0aDogW3RoaXMucHJvcHMuc2VsZWN0ZWRGZWF0dXJlSW5kZXhlcywgdGhpcy5wcm9wcy5tb2RlXSxcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICBsZXQgbGF5ZXJzOiBhbnkgPSBbbmV3IEdlb0pzb25MYXllcihzdWJMYXllclByb3BzKV07XG5cbiAgICBsYXllcnMgPSBsYXllcnMuY29uY2F0KHRoaXMuY3JlYXRlR3VpZGVzTGF5ZXJzKCksIHRoaXMuY3JlYXRlVG9vbHRpcHNMYXllcnMoKSk7XG5cbiAgICByZXR1cm4gbGF5ZXJzO1xuICB9XG5cbiAgaW5pdGlhbGl6ZVN0YXRlKCkge1xuICAgIHN1cGVyLmluaXRpYWxpemVTdGF0ZSgpO1xuXG4gICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICBzZWxlY3RlZEZlYXR1cmVzOiBbXSxcbiAgICAgIGVkaXRIYW5kbGVzOiBbXSxcbiAgICB9KTtcbiAgfVxuXG4gIC8vIFRPRE86IGlzIHRoaXMgdGhlIGJlc3Qgd2F5IHRvIHByb3Blcmx5IHVwZGF0ZSBzdGF0ZSBmcm9tIGFuIG91dHNpZGUgZXZlbnQgaGFuZGxlcj9cbiAgc2hvdWxkVXBkYXRlU3RhdGUob3B0czogYW55KSB7XG4gICAgLy8gY29uc29sZS5sb2coXG4gICAgLy8gICAnc2hvdWxkVXBkYXRlU3RhdGUnLFxuICAgIC8vICAgb3B0cy5jaGFuZ2VGbGFncy5wcm9wc09yRGF0YUNoYW5nZWQsXG4gICAgLy8gICBvcHRzLmNoYW5nZUZsYWdzLnN0YXRlQ2hhbmdlZFxuICAgIC8vICk7XG4gICAgcmV0dXJuIHN1cGVyLnNob3VsZFVwZGF0ZVN0YXRlKG9wdHMpIHx8IG9wdHMuY2hhbmdlRmxhZ3Muc3RhdGVDaGFuZ2VkO1xuICB9XG5cbiAgdXBkYXRlU3RhdGUoe1xuICAgIHByb3BzLFxuICAgIG9sZFByb3BzLFxuICAgIGNoYW5nZUZsYWdzLFxuICAgIGNvbnRleHQsXG4gIH06IHtcbiAgICBwcm9wczogRWRpdGFibGVHZW9qc29uTGF5ZXJQcm9wczxhbnk+O1xuICAgIG9sZFByb3BzOiBFZGl0YWJsZUdlb2pzb25MYXllclByb3BzPGFueT47XG4gICAgY2hhbmdlRmxhZ3M6IGFueTtcbiAgICBjb250ZXh0OiBhbnk7XG4gICAgcztcbiAgfSkge1xuICAgIHN1cGVyLnVwZGF0ZVN0YXRlKHsgb2xkUHJvcHMsIHByb3BzLCBjaGFuZ2VGbGFncywgY29udGV4dCB9KTtcblxuICAgIGlmIChjaGFuZ2VGbGFncy5wcm9wc09yRGF0YUNoYW5nZWQpIHtcbiAgICAgIGNvbnN0IG1vZGVQcm9wQ2hhbmdlZCA9IE9iamVjdC5rZXlzKG9sZFByb3BzKS5sZW5ndGggPT09IDAgfHwgcHJvcHMubW9kZSAhPT0gb2xkUHJvcHMubW9kZTtcbiAgICAgIGlmIChtb2RlUHJvcENoYW5nZWQpIHtcbiAgICAgICAgbGV0IG1vZGU7XG4gICAgICAgIGlmICh0eXBlb2YgcHJvcHMubW9kZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgIC8vIFRoZXkgcGFzc2VkIGEgY29uc3RydWN0b3IvY2xhc3MsIHNvIG5ldyBpdCB1cFxuICAgICAgICAgIGNvbnN0IE1vZGVDb25zdHJ1Y3RvciA9IHByb3BzLm1vZGU7XG4gICAgICAgICAgbW9kZSA9IG5ldyBNb2RlQ29uc3RydWN0b3IoKTtcbiAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YgcHJvcHMubW9kZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAvLyBMb29rdXAgdGhlIG1vZGUgYmFzZWQgb24gaXRzIG5hbWUgKGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSlcbiAgICAgICAgICBtb2RlID0gbW9kZU5hbWVNYXBwaW5nW3Byb3BzLm1vZGVdO1xuICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlXG4gICAgICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICAgICAgXCJEZXByZWNhdGVkIHVzZSBvZiBwYXNzaW5nIGBtb2RlYCBhcyBhIHN0cmluZy4gUGFzcyB0aGUgbW9kZSdzIGNsYXNzIGNvbnN0cnVjdG9yIGluc3RlYWQuXCJcbiAgICAgICAgICApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIFNob3VsZCBiZSBhbiBpbnN0YW5jZSBvZiBFZGl0TW9kZSBpbiB0aGlzIGNhc2VcbiAgICAgICAgICBtb2RlID0gcHJvcHMubW9kZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghbW9kZSkge1xuICAgICAgICAgIGNvbnNvbGUud2FybihgTm8gbW9kZSBjb25maWd1cmVkIGZvciAke1N0cmluZyhwcm9wcy5tb2RlKX1gKTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1jb25zb2xlLG5vLXVuZGVmXG4gICAgICAgICAgLy8gVXNlIGRlZmF1bHQgbW9kZVxuICAgICAgICAgIG1vZGUgPSBuZXcgREVGQVVMVF9FRElUX01PREUoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChtb2RlICE9PSB0aGlzLnN0YXRlLm1vZGUpIHtcbiAgICAgICAgICB0aGlzLnNldFN0YXRlKHsgbW9kZSwgY3Vyc29yOiBudWxsIH0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgbGV0IHNlbGVjdGVkRmVhdHVyZXMgPSBbXTtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShwcm9wcy5zZWxlY3RlZEZlYXR1cmVJbmRleGVzKSkge1xuICAgICAgLy8gVE9ETzogbmVlZHMgaW1wcm92ZWQgdGVzdGluZywgaS5lLiBjaGVja2luZyBmb3IgZHVwbGljYXRlcywgTmFOcywgb3V0IG9mIHJhbmdlIG51bWJlcnMsIC4uLlxuICAgICAgc2VsZWN0ZWRGZWF0dXJlcyA9IHByb3BzLnNlbGVjdGVkRmVhdHVyZUluZGV4ZXMubWFwKChlbGVtKSA9PiBwcm9wcy5kYXRhLmZlYXR1cmVzW2VsZW1dKTtcbiAgICB9XG5cbiAgICB0aGlzLnNldFN0YXRlKHsgc2VsZWN0ZWRGZWF0dXJlcyB9KTtcbiAgfVxuXG4gIGdldE1vZGVQcm9wcyhwcm9wczogRWRpdGFibGVHZW9qc29uTGF5ZXJQcm9wczxhbnk+KSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG1vZGVDb25maWc6IHByb3BzLm1vZGVDb25maWcsXG4gICAgICBkYXRhOiBwcm9wcy5kYXRhLFxuICAgICAgc2VsZWN0ZWRJbmRleGVzOiBwcm9wcy5zZWxlY3RlZEZlYXR1cmVJbmRleGVzLFxuICAgICAgbGFzdFBvaW50ZXJNb3ZlRXZlbnQ6IHRoaXMuc3RhdGUubGFzdFBvaW50ZXJNb3ZlRXZlbnQsXG4gICAgICBjdXJzb3I6IHRoaXMuc3RhdGUuY3Vyc29yLFxuICAgICAgb25FZGl0OiAoZWRpdEFjdGlvbjogRWRpdEFjdGlvbjxGZWF0dXJlQ29sbGVjdGlvbj4pID0+IHtcbiAgICAgICAgLy8gRm9yY2UgYSByZS1yZW5kZXJcbiAgICAgICAgLy8gVGhpcyBzdXBwb3J0cyBkb3VibGUtY2xpY2sgd2hlcmUgd2UgbmVlZCB0byBlbnN1cmUgdGhhdCB0aGVyZSdzIGEgcmUtcmVuZGVyIGJldHdlZW4gdGhlIHR3byBjbGlja3NcbiAgICAgICAgLy8gZXZlbiB0aG91Z2ggdGhlIGRhdGEgd2Fzbid0IGNoYW5nZWQsIGp1c3QgdGhlIGludGVybmFsIHRlbnRhdGl2ZSBmZWF0dXJlLlxuICAgICAgICB0aGlzLnNldE5lZWRzVXBkYXRlKCk7XG4gICAgICAgIHByb3BzLm9uRWRpdChlZGl0QWN0aW9uKTtcbiAgICAgIH0sXG4gICAgICBvblVwZGF0ZUN1cnNvcjogKGN1cnNvcjogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZCkgPT4ge1xuICAgICAgICB0aGlzLnNldFN0YXRlKHsgY3Vyc29yIH0pO1xuICAgICAgfSxcbiAgICB9O1xuICB9XG5cbiAgc2VsZWN0aW9uQXdhcmVBY2Nlc3NvcihhY2Nlc3NvcjogYW55KSB7XG4gICAgaWYgKHR5cGVvZiBhY2Nlc3NvciAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgcmV0dXJuIGFjY2Vzc29yO1xuICAgIH1cbiAgICByZXR1cm4gKGZlYXR1cmU6IFJlY29yZDxzdHJpbmcsIGFueT4pID0+XG4gICAgICBhY2Nlc3NvcihmZWF0dXJlLCB0aGlzLmlzRmVhdHVyZVNlbGVjdGVkKGZlYXR1cmUpLCB0aGlzLnByb3BzLm1vZGUpO1xuICB9XG5cbiAgaXNGZWF0dXJlU2VsZWN0ZWQoZmVhdHVyZTogUmVjb3JkPHN0cmluZywgYW55Pikge1xuICAgIGlmICghdGhpcy5wcm9wcy5kYXRhIHx8ICF0aGlzLnByb3BzLnNlbGVjdGVkRmVhdHVyZUluZGV4ZXMpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgaWYgKCF0aGlzLnByb3BzLnNlbGVjdGVkRmVhdHVyZUluZGV4ZXMubGVuZ3RoKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGNvbnN0IGZlYXR1cmVJbmRleCA9IHRoaXMucHJvcHMuZGF0YS5mZWF0dXJlcy5pbmRleE9mKGZlYXR1cmUpO1xuICAgIHJldHVybiB0aGlzLnByb3BzLnNlbGVjdGVkRmVhdHVyZUluZGV4ZXMuaW5jbHVkZXMoZmVhdHVyZUluZGV4KTtcbiAgfVxuXG4gIGdldFBpY2tpbmdJbmZvKHsgaW5mbywgc291cmNlTGF5ZXIgfTogUmVjb3JkPHN0cmluZywgYW55Pikge1xuICAgIGlmIChzb3VyY2VMYXllci5pZC5lbmRzV2l0aCgnZ3VpZGVzJykpIHtcbiAgICAgIC8vIElmIHVzZXIgaXMgcGlja2luZyBhbiBlZGl0aW5nIGhhbmRsZSwgYWRkIGFkZGl0aW9uYWwgZGF0YSB0byB0aGUgaW5mb1xuICAgICAgaW5mby5pc0d1aWRlID0gdHJ1ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gaW5mbztcbiAgfVxuXG4gIF91cGRhdGVBdXRvSGlnaGxpZ2h0KGluZm8pIHtcbiAgICAvLyBFeHRyYSBoYW5kbGluZyBmb3IgZ3VpZGVzXG4gICAgaWYgKGluZm8/LnNvdXJjZUxheWVyKSB7XG4gICAgICBpZiAoaW5mby5pc0d1aWRlKSB7XG4gICAgICAgIGZvciAoY29uc3QgbGF5ZXIgb2YgaW5mby5zb3VyY2VMYXllci5nZXRTdWJMYXllcnMoKSkge1xuICAgICAgICAgIGxheWVyLnVwZGF0ZUF1dG9IaWdobGlnaHQoaW5mbyk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGluZm8uc291cmNlTGF5ZXIudXBkYXRlQXV0b0hpZ2hsaWdodChpbmZvKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBjcmVhdGVHdWlkZXNMYXllcnMoKSB7XG4gICAgY29uc3QgbW9kZSA9IHRoaXMuZ2V0QWN0aXZlTW9kZSgpO1xuICAgIGNvbnN0IGd1aWRlczogRmVhdHVyZUNvbGxlY3Rpb24gPSBtb2RlLmdldEd1aWRlcyh0aGlzLmdldE1vZGVQcm9wcyh0aGlzLnByb3BzKSk7XG5cbiAgICBpZiAoIWd1aWRlcyB8fCAhZ3VpZGVzLmZlYXR1cmVzLmxlbmd0aCkge1xuICAgICAgcmV0dXJuIFtdO1xuICAgIH1cblxuICAgIGNvbnN0IHN1YkxheWVyUHJvcHMgPSB7XG4gICAgICBsaW5lc3RyaW5nczoge1xuICAgICAgICBiaWxsYm9hcmQ6IHRoaXMucHJvcHMuYmlsbGJvYXJkLFxuICAgICAgICBhdXRvSGlnaGxpZ2h0OiBmYWxzZSxcbiAgICAgIH0sXG4gICAgICAncG9seWdvbnMtZmlsbCc6IHtcbiAgICAgICAgYXV0b0hpZ2hsaWdodDogZmFsc2UsXG4gICAgICB9LFxuICAgICAgJ3BvbHlnb25zLXN0cm9rZSc6IHtcbiAgICAgICAgYmlsbGJvYXJkOiB0aGlzLnByb3BzLmJpbGxib2FyZCxcbiAgICAgIH0sXG4gICAgfTtcblxuICAgIGlmICh0aGlzLnByb3BzLmVkaXRIYW5kbGVUeXBlID09PSAnaWNvbicpIHtcbiAgICAgIHN1YkxheWVyUHJvcHNbJ3BvaW50cy1pY29uJ10gPSB7XG4gICAgICAgIHR5cGU6IEljb25MYXllcixcbiAgICAgICAgaWNvbkF0bGFzOiB0aGlzLnByb3BzLmVkaXRIYW5kbGVJY29uQXRsYXMsXG4gICAgICAgIGljb25NYXBwaW5nOiB0aGlzLnByb3BzLmVkaXRIYW5kbGVJY29uTWFwcGluZyxcbiAgICAgICAgc2l6ZVVuaXRzOiB0aGlzLnByb3BzLmVkaXRIYW5kbGVJY29uU2l6ZVVuaXRzLFxuICAgICAgICBzaXplU2NhbGU6IHRoaXMucHJvcHMuZWRpdEhhbmRsZUljb25TaXplU2NhbGUsXG4gICAgICAgIGdldEljb246IGd1aWRlQWNjZXNzb3IodGhpcy5wcm9wcy5nZXRFZGl0SGFuZGxlSWNvbiksXG4gICAgICAgIGdldFNpemU6IGd1aWRlQWNjZXNzb3IodGhpcy5wcm9wcy5nZXRFZGl0SGFuZGxlSWNvblNpemUpLFxuICAgICAgICBnZXRDb2xvcjogZ3VpZGVBY2Nlc3Nvcih0aGlzLnByb3BzLmdldEVkaXRIYW5kbGVJY29uQ29sb3IpLFxuICAgICAgICBnZXRBbmdsZTogZ3VpZGVBY2Nlc3Nvcih0aGlzLnByb3BzLmdldEVkaXRIYW5kbGVJY29uQW5nbGUpLFxuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgc3ViTGF5ZXJQcm9wc1sncG9pbnRzLWNpcmNsZSddID0ge1xuICAgICAgICB0eXBlOiBTY2F0dGVycGxvdExheWVyLFxuICAgICAgICByYWRpdXNTY2FsZTogdGhpcy5wcm9wcy5lZGl0SGFuZGxlUG9pbnRSYWRpdXNTY2FsZSxcbiAgICAgICAgc3Ryb2tlZDogdGhpcy5wcm9wcy5lZGl0SGFuZGxlUG9pbnRPdXRsaW5lLFxuICAgICAgICBnZXRMaW5lV2lkdGg6IHRoaXMucHJvcHMuZWRpdEhhbmRsZVBvaW50U3Ryb2tlV2lkdGgsXG4gICAgICAgIHJhZGl1c1VuaXRzOiB0aGlzLnByb3BzLmVkaXRIYW5kbGVQb2ludFJhZGl1c1VuaXRzLFxuICAgICAgICByYWRpdXNNaW5QaXhlbHM6IHRoaXMucHJvcHMuZWRpdEhhbmRsZVBvaW50UmFkaXVzTWluUGl4ZWxzLFxuICAgICAgICByYWRpdXNNYXhQaXhlbHM6IHRoaXMucHJvcHMuZWRpdEhhbmRsZVBvaW50UmFkaXVzTWF4UGl4ZWxzLFxuICAgICAgICBnZXRSYWRpdXM6IGd1aWRlQWNjZXNzb3IodGhpcy5wcm9wcy5nZXRFZGl0SGFuZGxlUG9pbnRSYWRpdXMpLFxuICAgICAgICBnZXRGaWxsQ29sb3I6IGd1aWRlQWNjZXNzb3IodGhpcy5wcm9wcy5nZXRFZGl0SGFuZGxlUG9pbnRDb2xvciksXG4gICAgICAgIGdldExpbmVDb2xvcjogZ3VpZGVBY2Nlc3Nvcih0aGlzLnByb3BzLmdldEVkaXRIYW5kbGVQb2ludE91dGxpbmVDb2xvciksXG4gICAgICB9O1xuICAgIH1cblxuICAgIGNvbnN0IGxheWVyID0gbmV3IEdlb0pzb25MYXllcihcbiAgICAgIHRoaXMuZ2V0U3ViTGF5ZXJQcm9wcyh7XG4gICAgICAgIGlkOiBgZ3VpZGVzYCxcbiAgICAgICAgZGF0YTogZ3VpZGVzLFxuICAgICAgICBmcDY0OiB0aGlzLnByb3BzLmZwNjQsXG4gICAgICAgIF9zdWJMYXllclByb3BzOiBzdWJMYXllclByb3BzLFxuICAgICAgICBsaW5lV2lkdGhTY2FsZTogdGhpcy5wcm9wcy5saW5lV2lkdGhTY2FsZSxcbiAgICAgICAgbGluZVdpZHRoTWluUGl4ZWxzOiB0aGlzLnByb3BzLmxpbmVXaWR0aE1pblBpeGVscyxcbiAgICAgICAgbGluZVdpZHRoTWF4UGl4ZWxzOiB0aGlzLnByb3BzLmxpbmVXaWR0aE1heFBpeGVscyxcbiAgICAgICAgbGluZVdpZHRoVW5pdHM6IHRoaXMucHJvcHMubGluZVdpZHRoVW5pdHMsXG4gICAgICAgIGxpbmVKb2ludFJvdW5kZWQ6IHRoaXMucHJvcHMubGluZUpvaW50Um91bmRlZCxcbiAgICAgICAgbGluZUNhcFJvdW5kZWQ6IHRoaXMucHJvcHMubGluZUNhcFJvdW5kZWQsXG4gICAgICAgIGxpbmVNaXRlckxpbWl0OiB0aGlzLnByb3BzLmxpbmVNaXRlckxpbWl0LFxuICAgICAgICBnZXRMaW5lQ29sb3I6IGd1aWRlQWNjZXNzb3IodGhpcy5wcm9wcy5nZXRUZW50YXRpdmVMaW5lQ29sb3IpLFxuICAgICAgICBnZXRMaW5lV2lkdGg6IGd1aWRlQWNjZXNzb3IodGhpcy5wcm9wcy5nZXRUZW50YXRpdmVMaW5lV2lkdGgpLFxuICAgICAgICBnZXRGaWxsQ29sb3I6IGd1aWRlQWNjZXNzb3IodGhpcy5wcm9wcy5nZXRUZW50YXRpdmVGaWxsQ29sb3IpLFxuICAgICAgICBwb2ludFR5cGU6IHRoaXMucHJvcHMuZWRpdEhhbmRsZVR5cGUgPT09ICdpY29uJyA/ICdpY29uJyA6ICdjaXJjbGUnLFxuICAgICAgICBpY29uQXRsYXM6IHRoaXMucHJvcHMuZWRpdEhhbmRsZUljb25BdGxhcyxcbiAgICAgIH0pXG4gICAgKTtcblxuICAgIHJldHVybiBbbGF5ZXJdO1xuICB9XG5cbiAgY3JlYXRlVG9vbHRpcHNMYXllcnMoKSB7XG4gICAgY29uc3QgbW9kZSA9IHRoaXMuZ2V0QWN0aXZlTW9kZSgpO1xuICAgIGNvbnN0IHRvb2x0aXBzID0gbW9kZS5nZXRUb29sdGlwcyh0aGlzLmdldE1vZGVQcm9wcyh0aGlzLnByb3BzKSk7XG5cbiAgICBjb25zdCBsYXllciA9IG5ldyBUZXh0TGF5ZXIoe1xuICAgICAgZ2V0U2l6ZTogREVGQVVMVF9UT09MVElQX0ZPTlRfU0laRSxcbiAgICAgIC4uLnRoaXMuZ2V0U3ViTGF5ZXJQcm9wcyh7XG4gICAgICAgIGlkOiBgdG9vbHRpcHNgLFxuICAgICAgICBkYXRhOiB0b29sdGlwcyxcbiAgICAgIH0pLFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIFtsYXllcl07XG4gIH1cblxuICBvbkxheWVyQ2xpY2soZXZlbnQ6IENsaWNrRXZlbnQpIHtcbiAgICB0aGlzLmdldEFjdGl2ZU1vZGUoKS5oYW5kbGVDbGljayhldmVudCwgdGhpcy5nZXRNb2RlUHJvcHModGhpcy5wcm9wcykpO1xuICB9XG5cbiAgb25MYXllcktleVVwKGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgdGhpcy5nZXRBY3RpdmVNb2RlKCkuaGFuZGxlS2V5VXAoZXZlbnQsIHRoaXMuZ2V0TW9kZVByb3BzKHRoaXMucHJvcHMpKTtcbiAgfVxuXG4gIG9uU3RhcnREcmFnZ2luZyhldmVudDogU3RhcnREcmFnZ2luZ0V2ZW50KSB7XG4gICAgdGhpcy5nZXRBY3RpdmVNb2RlKCkuaGFuZGxlU3RhcnREcmFnZ2luZyhldmVudCwgdGhpcy5nZXRNb2RlUHJvcHModGhpcy5wcm9wcykpO1xuICB9XG5cbiAgb25EcmFnZ2luZyhldmVudDogRHJhZ2dpbmdFdmVudCkge1xuICAgIHRoaXMuZ2V0QWN0aXZlTW9kZSgpLmhhbmRsZURyYWdnaW5nKGV2ZW50LCB0aGlzLmdldE1vZGVQcm9wcyh0aGlzLnByb3BzKSk7XG4gIH1cblxuICBvblN0b3BEcmFnZ2luZyhldmVudDogU3RvcERyYWdnaW5nRXZlbnQpIHtcbiAgICB0aGlzLmdldEFjdGl2ZU1vZGUoKS5oYW5kbGVTdG9wRHJhZ2dpbmcoZXZlbnQsIHRoaXMuZ2V0TW9kZVByb3BzKHRoaXMucHJvcHMpKTtcbiAgfVxuXG4gIG9uUG9pbnRlck1vdmUoZXZlbnQ6IFBvaW50ZXJNb3ZlRXZlbnQpIHtcbiAgICB0aGlzLnNldFN0YXRlKHsgbGFzdFBvaW50ZXJNb3ZlRXZlbnQ6IGV2ZW50IH0pO1xuICAgIHRoaXMuZ2V0QWN0aXZlTW9kZSgpLmhhbmRsZVBvaW50ZXJNb3ZlKGV2ZW50LCB0aGlzLmdldE1vZGVQcm9wcyh0aGlzLnByb3BzKSk7XG4gIH1cblxuICBnZXRDdXJzb3IoeyBpc0RyYWdnaW5nIH06IHsgaXNEcmFnZ2luZzogYm9vbGVhbiB9KSB7XG4gICAgaWYgKHRoaXMuc3RhdGUgPT09IG51bGwgfHwgdGhpcy5zdGF0ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAvLyBMYXllciBpbiAnQXdhaXRpbmcgc3RhdGUnXG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBsZXQgeyBjdXJzb3IgfSA9IHRoaXMuc3RhdGU7XG4gICAgaWYgKCFjdXJzb3IpIHtcbiAgICAgIC8vIGRlZmF1bHQgY3Vyc29yXG4gICAgICBjdXJzb3IgPSBpc0RyYWdnaW5nID8gJ2dyYWJiaW5nJyA6ICdncmFiJztcbiAgICB9XG4gICAgcmV0dXJuIGN1cnNvcjtcbiAgfVxuXG4gIGdldEFjdGl2ZU1vZGUoKTogR2VvSnNvbkVkaXRNb2RlVHlwZSB7XG4gICAgcmV0dXJuIHRoaXMuc3RhdGUubW9kZTtcbiAgfVxufVxuIl19","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports[\"default\"] = void 0;\n\nvar _geoLayers = require(\"@deck.gl/geo-layers\");\n\nvar _editModes = require(\"@nebula.gl/edit-modes\");\n\nvar _h3Js = require(\"h3-js\");\n\nvar _constants = require(\"../constants\");\n\nvar _editableGeojsonLayer = _interopRequireDefault(require(\"./editable-geojson-layer\"));\n\nvar _editableLayer = _interopRequireDefault(require(\"./editable-layer\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(n); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _get(target, property, receiver) { if (typeof Reflect !== \"undefined\" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return _get(target, property, receiver || target); }\n\nfunction _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; }\n\nfunction _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar DEFAULT_EDIT_MODE = _editModes.ViewMode;\nvar DEFAULT_H3_RESOLUTION = 9;\nvar EMPTY_FEATURE_COLLECTION = {\n  type: 'FeatureCollection',\n  features: []\n};\n\nvar defaultProps = _objectSpread({\n  mode: DEFAULT_EDIT_MODE\n}, _editableGeojsonLayer[\"default\"].defaultProps, {\n  // h3 layer\n  data: [],\n  selectedIndexes: [],\n  filled: false,\n  stroked: true,\n  lineWidthScale: _constants.PROJECTED_PIXEL_SIZE_MULTIPLIER,\n  lineWidthMinPixels: 1,\n  lineWidthMaxPixels: Number.MAX_SAFE_INTEGER,\n  lineWidthUnits: 'pixels',\n  getHexagons: function getHexagons(d) {\n    return d.hexIds;\n  },\n  getEditedCluster: function getEditedCluster(updatedHexagons, existingCluster) {\n    if (existingCluster) {\n      return _objectSpread({}, existingCluster, {\n        hexIds: updatedHexagons\n      });\n    }\n\n    return {\n      hexIds: updatedHexagons\n    };\n  },\n  resolution: DEFAULT_H3_RESOLUTION\n});\n\nvar EditableH3ClusterLayer = /*#__PURE__*/function (_EditableLayer) {\n  _inherits(EditableH3ClusterLayer, _EditableLayer);\n\n  var _super = _createSuper(EditableH3ClusterLayer);\n\n  function EditableH3ClusterLayer() {\n    _classCallCheck(this, EditableH3ClusterLayer);\n\n    return _super.apply(this, arguments);\n  }\n\n  _createClass(EditableH3ClusterLayer, [{\n    key: \"initializeState\",\n    value: function initializeState() {\n      _get(_getPrototypeOf(EditableH3ClusterLayer.prototype), \"initializeState\", this).call(this);\n\n      this.setState({\n        tentativeHexagonIDs: []\n      });\n    } // convert array of (lng, lat) coords to cluster of hexes\n\n  }, {\n    key: \"getDerivedHexagonIDs\",\n    value: function getDerivedHexagonIDs(coords) {\n      return (0, _h3Js.polyfill)(coords, this.props.resolution, true);\n    } // convert pair of (lng, lat) coords into single hex\n\n  }, {\n    key: \"getDerivedHexagonID\",\n    value: function getDerivedHexagonID(coords) {\n      return (0, _h3Js.geoToH3)(coords[1], coords[0], this.props.resolution);\n    }\n  }, {\n    key: \"renderLayers\",\n    value: function renderLayers() {\n      var _this = this;\n\n      var layers = [new _editableGeojsonLayer[\"default\"](this.getSubLayerProps({\n        id: 'editable-geojson',\n        mode: this.props.mode,\n        data: EMPTY_FEATURE_COLLECTION,\n        selectedFeatureIndexes: [],\n        onEdit: function onEdit(editAction) {\n          var editType = editAction.editType,\n              editContext = editAction.editContext;\n\n          switch (editType) {\n            case 'updateTentativeFeature':\n              // tentative feature updates, updated on every pointer move\n              if (editContext.feature.geometry.type === 'Polygon') {\n                var coords = editContext.feature.geometry.coordinates;\n\n                var hexIDs = _this.getDerivedHexagonIDs(coords);\n\n                _this.setState({\n                  tentativeHexagonIDs: hexIDs\n                });\n              } else if (editContext.feature.geometry.type === 'Point') {\n                var _coords = editContext.feature.geometry.coordinates;\n\n                var hexID = _this.getDerivedHexagonID(_coords);\n\n                _this.setState({\n                  tentativeHexagonIDs: [hexID]\n                });\n              }\n\n              break;\n\n            case 'addFeature':\n              var _updatedData = _toConsumableArray(_this.props.data);\n\n              var modeConfig = _this.props.modeConfig;\n\n              if (!modeConfig || !modeConfig.booleanOperation) {\n                // add new h3 cluster\n                _updatedData.push(_this.props.getEditedCluster(_this.state.tentativeHexagonIDs, null));\n              } else if (_this.props.selectedIndexes.length !== 1) {\n                // eslint-disable-next-line no-console,no-undef\n                console.warn('booleanOperation only supported for single cluster selection');\n              } else {\n                // they're affecting a selected cluster\n                var finalHexagonIDs;\n                var committedHexagonIDs = new Set(_this.getSelectedHexIDs());\n                var tentativeHexagonIDs = new Set(_this.state.tentativeHexagonIDs);\n\n                switch (modeConfig.booleanOperation) {\n                  case 'union':\n                  default:\n                    finalHexagonIDs = _toConsumableArray(new Set([].concat(_toConsumableArray(committedHexagonIDs), _toConsumableArray(tentativeHexagonIDs))));\n                    break;\n\n                  case 'intersection':\n                    finalHexagonIDs = _toConsumableArray(committedHexagonIDs).filter(function (hexID) {\n                      return tentativeHexagonIDs.has(hexID);\n                    });\n                    break;\n\n                  case 'difference':\n                    finalHexagonIDs = _toConsumableArray(committedHexagonIDs).filter(function (hexID) {\n                      return !tentativeHexagonIDs.has(hexID);\n                    });\n                    break;\n                }\n\n                var selectedIndex = _this.props.selectedIndexes[0];\n                var _existingCluster = _this.props.data[selectedIndex];\n                _updatedData[selectedIndex] = _this.props.getEditedCluster(finalHexagonIDs, _existingCluster);\n              }\n\n              _this.setState({\n                tentativeHexagonIDs: []\n              });\n\n              _this.props.onEdit({\n                updatedData: _updatedData\n              });\n\n              break;\n\n            default:\n              break;\n          }\n        }\n      })), new _geoLayers.H3ClusterLayer(this.getSubLayerProps({\n        id: 'hexagons',\n        data: this.props.data,\n        getHexagons: this.props.getHexagons\n      })), new _geoLayers.H3ClusterLayer(this.getSubLayerProps({\n        id: 'tentative-hexagons',\n        data: [{\n          hexIds: this.state.tentativeHexagonIDs\n        }],\n        getHexagons: function getHexagons(d) {\n          return d.hexIds;\n        }\n      }))];\n      return layers;\n    } // because data is an array of hexagon data, we take the cumulative of all selected indexes,\n    // using props.getHexagons to support multiple data types\n\n  }, {\n    key: \"getSelectedHexIDs\",\n    value: function getSelectedHexIDs() {\n      var _this2 = this;\n\n      var cumulativeHexIDs = [];\n      this.props.selectedIndexes.forEach(function (index) {\n        var selectedCluster = _this2.props.data[index];\n\n        var hexIDs = _this2.props.getHexagons(selectedCluster);\n\n        cumulativeHexIDs = cumulativeHexIDs.concat(hexIDs);\n      });\n      return cumulativeHexIDs;\n    }\n  }, {\n    key: \"getCursor\",\n    value: function getCursor(_ref) {\n      var isDragging = _ref.isDragging;\n\n      var _ref2 = this.state || {},\n          cursor = _ref2.cursor;\n\n      if (!cursor) {\n        // default cursor\n        cursor = isDragging ? 'grabbing' : 'grab';\n      }\n\n      return cursor;\n    }\n  }]);\n\n  return EditableH3ClusterLayer;\n}(_editableLayer[\"default\"]);\n\nexports[\"default\"] = EditableH3ClusterLayer;\n\n_defineProperty(EditableH3ClusterLayer, \"layerName\", 'EditableH3ClusterLayer');\n\n_defineProperty(EditableH3ClusterLayer, \"defaultProps\", defaultProps);\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9sYXllcnMvZWRpdGFibGUtaDMtY2x1c3Rlci1sYXllci50cyJdLCJuYW1lcyI6WyJERUZBVUxUX0VESVRfTU9ERSIsIlZpZXdNb2RlIiwiREVGQVVMVF9IM19SRVNPTFVUSU9OIiwiRU1QVFlfRkVBVFVSRV9DT0xMRUNUSU9OIiwidHlwZSIsImZlYXR1cmVzIiwiZGVmYXVsdFByb3BzIiwibW9kZSIsIkVkaXRhYmxlR2VvSnNvbkxheWVyIiwiZGF0YSIsInNlbGVjdGVkSW5kZXhlcyIsImZpbGxlZCIsInN0cm9rZWQiLCJsaW5lV2lkdGhTY2FsZSIsIlBST0pFQ1RFRF9QSVhFTF9TSVpFX01VTFRJUExJRVIiLCJsaW5lV2lkdGhNaW5QaXhlbHMiLCJsaW5lV2lkdGhNYXhQaXhlbHMiLCJOdW1iZXIiLCJNQVhfU0FGRV9JTlRFR0VSIiwibGluZVdpZHRoVW5pdHMiLCJnZXRIZXhhZ29ucyIsImQiLCJoZXhJZHMiLCJnZXRFZGl0ZWRDbHVzdGVyIiwidXBkYXRlZEhleGFnb25zIiwiZXhpc3RpbmdDbHVzdGVyIiwicmVzb2x1dGlvbiIsIkVkaXRhYmxlSDNDbHVzdGVyTGF5ZXIiLCJzZXRTdGF0ZSIsInRlbnRhdGl2ZUhleGFnb25JRHMiLCJjb29yZHMiLCJwcm9wcyIsImxheWVycyIsImdldFN1YkxheWVyUHJvcHMiLCJpZCIsInNlbGVjdGVkRmVhdHVyZUluZGV4ZXMiLCJvbkVkaXQiLCJlZGl0QWN0aW9uIiwiZWRpdFR5cGUiLCJlZGl0Q29udGV4dCIsImZlYXR1cmUiLCJnZW9tZXRyeSIsImNvb3JkaW5hdGVzIiwiaGV4SURzIiwiZ2V0RGVyaXZlZEhleGFnb25JRHMiLCJoZXhJRCIsImdldERlcml2ZWRIZXhhZ29uSUQiLCJ1cGRhdGVkRGF0YSIsIm1vZGVDb25maWciLCJib29sZWFuT3BlcmF0aW9uIiwicHVzaCIsInN0YXRlIiwibGVuZ3RoIiwiY29uc29sZSIsIndhcm4iLCJmaW5hbEhleGFnb25JRHMiLCJjb21taXR0ZWRIZXhhZ29uSURzIiwiU2V0IiwiZ2V0U2VsZWN0ZWRIZXhJRHMiLCJmaWx0ZXIiLCJoYXMiLCJzZWxlY3RlZEluZGV4IiwiSDNDbHVzdGVyTGF5ZXIiLCJjdW11bGF0aXZlSGV4SURzIiwiZm9yRWFjaCIsImluZGV4Iiwic2VsZWN0ZWRDbHVzdGVyIiwiY29uY2F0IiwiaXNEcmFnZ2luZyIsImN1cnNvciIsIkVkaXRhYmxlTGF5ZXIiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFFQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRUEsSUFBTUEsaUJBQWlCLEdBQUdDLG1CQUExQjtBQUNBLElBQU1DLHFCQUFxQixHQUFHLENBQTlCO0FBQ0EsSUFBTUMsd0JBQXdCLEdBQUc7QUFDL0JDLEVBQUFBLElBQUksRUFBRSxtQkFEeUI7QUFFL0JDLEVBQUFBLFFBQVEsRUFBRTtBQUZxQixDQUFqQzs7QUFxQkEsSUFBTUMsWUFBOEM7QUFDbERDLEVBQUFBLElBQUksRUFBRVA7QUFENEMsR0FHL0NRLGlDQUFxQkYsWUFIMEI7QUFLbEQ7QUFDQUcsRUFBQUEsSUFBSSxFQUFFLEVBTjRDO0FBT2xEQyxFQUFBQSxlQUFlLEVBQUUsRUFQaUM7QUFRbERDLEVBQUFBLE1BQU0sRUFBRSxLQVIwQztBQVNsREMsRUFBQUEsT0FBTyxFQUFFLElBVHlDO0FBVWxEQyxFQUFBQSxjQUFjLEVBQUVDLDBDQVZrQztBQVdsREMsRUFBQUEsa0JBQWtCLEVBQUUsQ0FYOEI7QUFZbERDLEVBQUFBLGtCQUFrQixFQUFFQyxNQUFNLENBQUNDLGdCQVp1QjtBQWFsREMsRUFBQUEsY0FBYyxFQUFFLFFBYmtDO0FBY2xEQyxFQUFBQSxXQUFXLEVBQUUscUJBQUNDLENBQUQ7QUFBQSxXQUFPQSxDQUFDLENBQUNDLE1BQVQ7QUFBQSxHQWRxQztBQWVsREMsRUFBQUEsZ0JBQWdCLEVBQUUsMEJBQUNDLGVBQUQsRUFBa0JDLGVBQWxCLEVBQXNDO0FBQ3RELFFBQUlB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LENBQWdCd0QsS0FBaEIsQ0FBeEI7O0FBQ0EsWUFBTXRCLE1BQU0sR0FBRyxNQUFJLENBQUNaLEtBQUwsQ0FBV1gsV0FBWCxDQUF1QjhDLGVBQXZCLENBQWY7O0FBQ0FILFFBQUFBLGdCQUFnQixHQUFHQSxnQkFBZ0IsQ0FBQ0ksTUFBakIsQ0FBd0J4QixNQUF4QixDQUFuQjtBQUNELE9BSkQ7QUFLQSxhQUFPb0IsZ0JBQVA7QUFDRDs7O29DQUVrRDtBQUFBLFVBQXZDSyxVQUF1QyxRQUF2Q0EsVUFBdUM7O0FBQUEsa0JBQ2hDLEtBQUtqQixLQUFMLElBQWMsRUFEa0I7QUFBQSxVQUMzQ2tCLE1BRDJDLFNBQzNDQSxNQUQyQzs7QUFFakQsVUFBSSxDQUFDQSxNQUFMLEVBQWE7QUFDWDtBQUNBQSxRQUFBQSxNQUFNLEdBQUdELFVBQVUsR0FBRyxVQUFILEdBQWdCLE1BQW5DO0FBQ0Q7O0FBQ0QsYUFBT0MsTUFBUDtBQUNEOzs7O0VBekppREMseUI7Ozs7Z0JBQS9CM0Msc0IsZUFJQSx3Qjs7Z0JBSkFBLHNCLGtCQUtHckIsWSIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1lbnYgYnJvd3NlciAqL1xuXG5pbXBvcnQgeyBIM0NsdXN0ZXJMYXllciB9IGZyb20gJ0BkZWNrLmdsL2dlby1sYXllcnMnO1xuaW1wb3J0IHsgVmlld01vZGUgfSBmcm9tICdAbmVidWxhLmdsL2VkaXQtbW9kZXMnO1xuaW1wb3J0IHsgcG9seWZpbGwsIGdlb1RvSDMgfSBmcm9tICdoMy1qcyc7XG5pbXBvcnQgeyBQUk9KRUNURURfUElYRUxfU0laRV9NVUxUSVBMSUVSIH0gZnJvbSAnLi4vY29uc3RhbnRzJztcbmltcG9ydCBFZGl0YWJsZUdlb0pzb25MYXllciBmcm9tICcuL2VkaXRhYmxlLWdlb2pzb24tbGF5ZXInO1xuaW1wb3J0IEVkaXRhYmxlTGF5ZXIsIHsgRWRpdGFibGVMYXllclByb3BzIH0gZnJvbSAnLi9lZGl0YWJsZS1sYXllcic7XG5cbmNvbnN0IERFRkFVTFRfRURJVF9NT0RFID0gVmlld01vZGU7XG5jb25zdCBERUZBVUxUX0gzX1JFU09MVVRJT04gPSA5O1xuY29uc3QgRU1QVFlfRkVBVFVSRV9DT0xMRUNUSU9OID0ge1xuICB0eXBlOiAnRmVhdHVyZUNvbGxlY3Rpb24nLFxuICBmZWF0dXJlczogW10sXG59O1xuXG5leHBvcnQgaW50ZXJmYWNlIEVkaXRhYmxlSDNDbHVzdGVyTGF5ZXJQcm9wczxEPiBleHRlbmRzIEVkaXRhYmxlTGF5ZXJQcm9wczxEPiB7XG4gIHJlc29sdXRpb24/OiBudW1iZXI7XG4gIG1vZGU/OiBhbnk7XG4gIG1vZGVDb25maWc/OiBhbnk7XG4gIHNlbGVjdGVkSW5kZXhlcz86IG51bWJlcltdO1xuICBnZXRFZGl0ZWRDbHVzdGVyPzogKHVwZGF0ZWRIZXhhZ29uczogYW55W10sIGV4aXN0aW5nQ2x1c3RlcjogYW55KSA9PiBhbnk7XG4gIGdldEhleGFnb25zPzogKGQpID0+IG51bWJlcltdO1xuICBvbkVkaXQ/OiAodXBkYXRlZERhdGE/LCBlZGl0VHlwZT86IHN0cmluZywgZmVhdHVyZUluZGV4ZXM/OiBudW1iZXJbXSwgZWRpdENvbnRleHQ/KSA9PiB2b2lkO1xuICBmaWxsZWQ/OiBib29sZWFuO1xuICBzdHJva2VkPzogYm9vbGVhbjtcbiAgbGluZVdpZHRoU2NhbGU/OiBudW1iZXI7XG4gIGxpbmVXaWR0aE1pblBpeGVscz86IG51bWJlcjtcbiAgbGluZVdpZHRoTWF4UGl4ZWxzPzogbnVtYmVyO1xuICBsaW5lV2lkdGhVbml0cz86IHN0cmluZztcbn1cblxuY29uc3QgZGVmYXVsdFByb3BzOiBFZGl0YWJsZUgzQ2x1c3RlckxheWVyUHJvcHM8YW55PiA9IHtcbiAgbW9kZTogREVGQVVMVF9FRElUX01PREUsXG5cbiAgLi4uRWRpdGFibGVHZW9Kc29uTGF5ZXIuZGVmYXVsdFByb3BzLFxuXG4gIC8vIGgzIGxheWVyXG4gIGRhdGE6IFtdLFxuICBzZWxlY3RlZEluZGV4ZXM6IFtdLFxuICBmaWxsZWQ6IGZhbHNlLFxuICBzdHJva2VkOiB0cnVlLFxuICBsaW5lV2lkdGhTY2FsZTogUFJPSkVDVEVEX1BJWEVMX1NJWkVfTVVMVElQTElFUixcbiAgbGluZVdpZHRoTWluUGl4ZWxzOiAxLFxuICBsaW5lV2lkdGhNYXhQaXhlbHM6IE51bWJlci5NQVhfU0FGRV9JTlRFR0VSLFxuICBsaW5lV2lkdGhVbml0czogJ3BpeGVscycsXG4gIGdldEhleGFnb25zOiAoZCkgPT4gZC5oZXhJZHMsXG4gIGdldEVkaXRlZENsdXN0ZXI6ICh1cGRhdGVkSGV4YWdvbnMsIGV4aXN0aW5nQ2x1c3RlcikgPT4ge1xuICAgIGlmIChleGlzdGluZ0NsdXN0ZXIpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLmV4aXN0aW5nQ2x1c3RlcixcbiAgICAgICAgaGV4SWRzOiB1cGRhdGVkSGV4YWdvbnMsXG4gICAgICB9O1xuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgaGV4SWRzOiB1cGRhdGVkSGV4YWdvbnMsXG4gICAgfTtcbiAgfSxcbiAgcmVzb2x1dGlvbjogREVGQVVMVF9IM19SRVNPTFVUSU9OLFxufTtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRWRpdGFibGVIM0NsdXN0ZXJMYXllciBleHRlbmRzIEVkaXRhYmxlTGF5ZXI8XG4gIGFueSxcbiAgRWRpdGFibGVIM0NsdXN0ZXJMYXllclByb3BzPGFueT5cbj4ge1xuICBzdGF0aWMgbGF5ZXJOYW1lID0gJ0VkaXRhYmxlSDNDbHVzdGVyTGF5ZXInO1xuICBzdGF0aWMgZGVmYXVsdFByb3BzID0gZGVmYXVsdFByb3BzO1xuXG4gIGluaXRpYWxpemVTdGF0ZSgpIHtcbiAgICBzdXBlci5pbml0aWFsaXplU3RhdGUoKTtcblxuICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgdGVudGF0aXZlSGV4YWdvbklEczogW10sXG4gICAgfSk7XG4gIH1cblxuICAvLyBjb252ZXJ0IGFycmF5IG9mIChsbmcsIGxhdCkgY29vcmRzIHRvIGNsdXN0ZXIgb2YgaGV4ZXNcbiAgZ2V0RGVyaXZlZEhleGFnb25JRHMoY29vcmRzKSB7XG4gICAgcmV0dXJuIHBvbHlmaWxsKGNvb3JkcywgdGhpcy5wcm9wcy5yZXNvbHV0aW9uLCB0cnVlKTtcbiAgfVxuXG4gIC8vIGNvbnZlcnQgcGFpciBvZiAobG5nLCBsYXQpIGNvb3JkcyBpbnRvIHNpbmdsZSBoZXhcbiAgZ2V0RGVyaXZlZEhleGFnb25JRChjb29yZHMpIHtcbiAgICByZXR1cm4gZ2VvVG9IMyhjb29yZHNbMV0sIGNvb3Jkc1swXSwgdGhpcy5wcm9wcy5yZXNvbHV0aW9uKTtcbiAgfVxuXG4gIHJlbmRlckxheWVycygpIHtcbiAgICBjb25zdCBsYXllcnM6IGFueSA9IFtcbiAgICAgIG5ldyBFZGl0YWJsZUdlb0pzb25MYXllcihcbiAgICAgICAgdGhpcy5nZXRTdWJMYXllclByb3BzKHtcbiAgICAgICAgICBpZDogJ2VkaXRhYmxlLWdlb2pzb24nLFxuXG4gICAgICAgICAgbW9kZTogdGhpcy5wcm9wcy5tb2RlLFxuICAgICAgICAgIGRhdGE6IEVNUFRZX0ZFQVRVUkVfQ09MTEVDVElPTixcbiAgICAgICAgICBzZWxlY3RlZEZlYXR1cmVJbmRleGVzOiBbXSxcblxuICAgICAgICAgIG9uRWRpdDogKGVkaXRBY3Rpb24pID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHsgZWRpdFR5cGUsIGVkaXRDb250ZXh0IH0gPSBlZGl0QWN0aW9uO1xuXG4gICAgICAgICAgICBzd2l0Y2ggKGVkaXRUeXBlKSB7XG4gICAgICAgICAgICAgIGNhc2UgJ3VwZGF0ZVRlbnRhdGl2ZUZlYXR1cmUnOlxuICAgICAgICAgICAgICAgIC8vIHRlbnRhdGl2ZSBmZWF0dXJlIHVwZGF0ZXMsIHVwZGF0ZWQgb24gZXZlcnkgcG9pbnRlciBtb3ZlXG4gICAgICAgICAgICAgICAgaWYgKGVkaXRDb250ZXh0LmZlYXR1cmUuZ2VvbWV0cnkudHlwZSA9PT0gJ1BvbHlnb24nKSB7XG4gICAgICAgICAgICAgICAgICBjb25zdCBjb29yZHMgPSBlZGl0Q29udGV4dC5mZWF0dXJlLmdlb21ldHJ5LmNvb3JkaW5hdGVzO1xuICAgICAgICAgICAgICAgICAgY29uc3QgaGV4SURzID0gdGhpcy5nZXREZXJpdmVkSGV4YWdvbklEcyhjb29yZHMpO1xuXG4gICAgICAgICAgICAgICAgICB0aGlzLnNldFN0YXRlKHsgdGVudGF0aXZlSGV4YWdvbklEczogaGV4SURzIH0pO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoZWRpdENvbnRleHQuZmVhdHVyZS5nZW9tZXRyeS50eXBlID09PSAnUG9pbnQnKSB7XG4gICAgICAgICAgICAgICAgICBjb25zdCBjb29yZHMgPSBlZGl0Q29udGV4dC5mZWF0dXJlLmdlb21ldHJ5LmNvb3JkaW5hdGVzO1xuICAgICAgICAgICAgICAgICAgY29uc3QgaGV4SUQgPSB0aGlzLmdldERlcml2ZWRIZXhhZ29uSUQoY29vcmRzKTtcblxuICAgICAgICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7IHRlbnRhdGl2ZUhleGFnb25JRHM6IFtoZXhJRF0gfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICBjYXNlICdhZGRGZWF0dXJlJzpcbiAgICAgICAgICAgICAgICBjb25zdCB1cGRhdGVkRGF0YSA9IFsuLi50aGlzLnByb3BzLmRhdGFdO1xuICAgICAgICAgICAgICAgIGNvbnN0IHsgbW9kZUNvbmZpZyB9ID0gdGhpcy5wcm9wcztcblxuICAgICAgICAgICAgICAgIGlmICghbW9kZUNvbmZpZyB8fCAhbW9kZUNvbmZpZy5ib29sZWFuT3BlcmF0aW9uKSB7XG4gICAgICAgICAgICAgICAgICAvLyBhZGQgbmV3IGgzIGNsdXN0ZXJcbiAgICAgICAgICAgICAgICAgIHVwZGF0ZWREYXRhLnB1c2goXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucHJvcHMuZ2V0RWRpdGVkQ2x1c3Rlcih0aGlzLnN0YXRlLnRlbnRhdGl2ZUhleGFnb25JRHMsIG51bGwpXG4gICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5wcm9wcy5zZWxlY3RlZEluZGV4ZXMubGVuZ3RoICE9PSAxKSB7XG4gICAgICAgICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZSxuby11bmRlZlxuICAgICAgICAgICAgICAgICAgY29uc29sZS53YXJuKCdib29sZWFuT3BlcmF0aW9uIG9ubHkgc3VwcG9ydGVkIGZvciBzaW5nbGUgY2x1c3RlciBzZWxlY3Rpb24nKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgLy8gdGhleSdyZSBhZmZlY3RpbmcgYSBzZWxlY3RlZCBjbHVzdGVyXG4gICAgICAgICAgICAgICAgICBsZXQgZmluYWxIZXhhZ29uSURzO1xuICAgICAgICAgICAgICAgICAgY29uc3QgY29tbWl0dGVkSGV4YWdvbklEcyA9IG5ldyBTZXQodGhpcy5nZXRTZWxlY3RlZEhleElEcygpKTtcbiAgICAgICAgICAgICAgICAgIGNvbnN0IHRlbnRhdGl2ZUhleGFnb25JRHMgPSBuZXcgU2V0KHRoaXMuc3RhdGUudGVudGF0aXZlSGV4YWdvbklEcyk7XG5cbiAgICAgICAgICAgICAgICAgIHN3aXRjaCAobW9kZUNvbmZpZy5ib29sZWFuT3BlcmF0aW9uKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgJ3VuaW9uJzpcbiAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgICBmaW5hbEhleGFnb25JRHMgPSBbXG4gICAgICAgICAgICAgICAgICAgICAgICAuLi5uZXcgU2V0KFsuLi5jb21taXR0ZWRIZXhhZ29uSURzLCAuLi50ZW50YXRpdmVIZXhhZ29uSURzXSksXG4gICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAnaW50ZXJzZWN0aW9uJzpcbiAgICAgICAgICAgICAgICAgICAgICBmaW5hbEhleGFnb25JRHMgPSBbLi4uY29tbWl0dGVkSGV4YWdvbklEc10uZmlsdGVyKChoZXhJRDogc3RyaW5nKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgdGVudGF0aXZlSGV4YWdvbklEcy5oYXMoaGV4SUQpXG4gICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAnZGlmZmVyZW5jZSc6XG4gICAgICAgICAgICAgICAgICAgICAgZmluYWxIZXhhZ29uSURzID0gWy4uLmNvbW1pdHRlZEhleGFnb25JRHNdLmZpbHRlcihcbiAgICAgICAgICAgICAgICAgICAgICAgIChoZXhJRDogc3RyaW5nKSA9PiAhdGVudGF0aXZlSGV4YWdvbklEcy5oYXMoaGV4SUQpXG4gICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgY29uc3Qgc2VsZWN0ZWRJbmRleCA9IHRoaXMucHJvcHMuc2VsZWN0ZWRJbmRleGVzWzBdO1xuICAgICAgICAgICAgICAgICAgY29uc3QgZXhpc3RpbmdDbHVzdGVyID0gdGhpcy5wcm9wcy5kYXRhW3NlbGVjdGVkSW5kZXhdO1xuICAgICAgICAgICAgICAgICAgdXBkYXRlZERhdGFbc2VsZWN0ZWRJbmRleF0gPSB0aGlzLnByb3BzLmdldEVkaXRlZENsdXN0ZXIoXG4gICAgICAgICAgICAgICAgICAgIGZpbmFsSGV4YWdvbklEcyxcbiAgICAgICAgICAgICAgICAgICAgZXhpc3RpbmdDbHVzdGVyXG4gICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgICAgICAgICAgICAgdGVudGF0aXZlSGV4YWdvbklEczogW10sXG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICB0aGlzLnByb3BzLm9uRWRpdCh7IHVwZGF0ZWREYXRhIH0pO1xuXG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSxcbiAgICAgICAgfSlcbiAgICAgICksXG5cbiAgICAgIG5ldyBIM0NsdXN0ZXJMYXllcihcbiAgICAgICAgdGhpcy5nZXRTdWJMYXllclByb3BzKHtcbiAgICAgICAgICBpZDogJ2hleGFnb25zJyxcbiAgICAgICAgICBkYXRhOiB0aGlzLnByb3BzLmRhdGEsXG4gICAgICAgICAgZ2V0SGV4YWdvbnM6IHRoaXMucHJvcHMuZ2V0SGV4YWdvbnMsXG4gICAgICAgIH0pXG4gICAgICApLFxuICAgICAgbmV3IEgzQ2x1c3RlckxheWVyKFxuICAgICAgICB0aGlzLmdldFN1YkxheWVyUHJvcHMoe1xuICAgICAgICAgIGlkOiAndGVudGF0aXZlLWhleGFnb25zJyxcbiAgICAgICAgICBkYXRhOiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGhleElkczogdGhpcy5zdGF0ZS50ZW50YXRpdmVIZXhhZ29uSURzLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICBdLFxuICAgICAgICAgIGdldEhleGFnb25zOiAoZCkgPT4gZC5oZXhJZHMsXG4gICAgICAgIH0pXG4gICAgICApLFxuICAgIF07XG4gICAgcmV0dXJuIGxheWVycztcbiAgfVxuXG4gIC8vIGJlY2F1c2UgZGF0YSBpcyBhbiBhcnJheSBvZiBoZXhhZ29uIGRhdGEsIHdlIHRha2UgdGhlIGN1bXVsYXRpdmUgb2YgYWxsIHNlbGVjdGVkIGluZGV4ZXMsXG4gIC8vIHVzaW5nIHByb3BzLmdldEhleGFnb25zIHRvIHN1cHBvcnQgbXVsdGlwbGUgZGF0YSB0eXBlc1xuICBnZXRTZWxlY3RlZEhleElEcygpIHtcbiAgICBsZXQgY3VtdWxhdGl2ZUhleElEcyA9IFtdO1xuICAgIHRoaXMucHJvcHMuc2VsZWN0ZWRJbmRleGVzLmZvckVhY2goKGluZGV4KSA9PiB7XG4gICAgICBjb25zdCBzZWxlY3RlZENsdXN0ZXIgPSB0aGlzLnByb3BzLmRhdGFbaW5kZXhdO1xuICAgICAgY29uc3QgaGV4SURzID0gdGhpcy5wcm9wcy5nZXRIZXhhZ29ucyhzZWxlY3RlZENsdXN0ZXIpO1xuICAgICAgY3VtdWxhdGl2ZUhleElEcyA9IGN1bXVsYXRpdmVIZXhJRHMuY29uY2F0KGhleElEcyk7XG4gICAgfSk7XG4gICAgcmV0dXJuIGN1bXVsYXRpdmVIZXhJRHM7XG4gIH1cblxuICBnZXRDdXJzb3IoeyBpc0RyYWdnaW5nIH06IHsgaXNEcmFnZ2luZzogYm9vbGVhbiB9KSB7XG4gICAgbGV0IHsgY3Vyc29yIH0gPSB0aGlzLnN0YXRlIHx8IHt9O1xuICAgIGlmICghY3Vyc29yKSB7XG4gICAgICAvLyBkZWZhdWx0IGN1cnNvclxuICAgICAgY3Vyc29yID0gaXNEcmFnZ2luZyA/ICdncmFiYmluZycgOiAnZ3JhYic7XG4gICAgfVxuICAgIHJldHVybiBjdXJzb3I7XG4gIH1cbn1cbiJdfQ==","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports[\"default\"] = void 0;\n\nvar _core = require(\"@deck.gl/core\");\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _createForOfIteratorHelper(o) { if (typeof Symbol === \"undefined\" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (o = _unsupportedIterableToArray(o))) { var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var it, normalCompletion = true, didErr = false, err; return { s: function s() { it = o[Symbol.iterator](); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it[\"return\"] != null) it[\"return\"](); } finally { if (didErr) throw err; } } }; }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(n); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar EVENT_TYPES = ['anyclick', 'pointermove', 'panstart', 'panmove', 'panend', 'keyup'];\n\nvar EditableLayer = /*#__PURE__*/function (_CompositeLayer) {\n  _inherits(EditableLayer, _CompositeLayer);\n\n  var _super = _createSuper(EditableLayer);\n\n  function EditableLayer() {\n    _classCallCheck(this, EditableLayer);\n\n    return _super.apply(this, arguments);\n  }\n\n  _createClass(EditableLayer, [{\n    key: \"onLayerClick\",\n    // Overridable interaction event handlers\n    value: function onLayerClick(event) {// default implementation - do nothing\n    }\n  }, {\n    key: \"onStartDragging\",\n    value: function onStartDragging(event) {// default implementation - do nothing\n    }\n  }, {\n    key: \"onStopDragging\",\n    value: function onStopDragging(event) {// default implementation - do nothing\n    }\n  }, {\n    key: \"onDragging\",\n    value: function onDragging(event) {// default implementation - do nothing\n    }\n  }, {\n    key: \"onPointerMove\",\n    value: function onPointerMove(event) {// default implementation - do nothing\n    }\n  }, {\n    key: \"onLayerKeyUp\",\n    value: function onLayerKeyUp(event) {} // default implementation - do nothing;\n    // TODO: implement onCancelDragging (e.g. drag off screen)\n\n  }, {\n    key: \"initializeState\",\n    value: function initializeState() {\n      this.setState({\n        _editableLayerState: {\n          // Picked objects at the time the pointer went down\n          pointerDownPicks: null,\n          // Screen coordinates where the pointer went down\n          pointerDownScreenCoords: null,\n          // Ground coordinates where the pointer went down\n          pointerDownMapCoords: null,\n          // Keep track of the mjolnir.js event handler so it can be deregistered\n          eventHandler: this._forwardEventToCurrentLayer.bind(this)\n        }\n      });\n\n      this._addEventHandlers();\n    }\n  }, {\n    key: \"finalizeState\",\n    value: function finalizeState() {\n      this._removeEventHandlers();\n    }\n  }, {\n    key: \"_addEventHandlers\",\n    value: function _addEventHandlers() {\n      // @ts-ignore\n      var eventManager = this.context.deck.eventManager;\n      var eventHandler = this.state._editableLayerState.eventHandler;\n\n      var _iterator = _createForOfIteratorHelper(EVENT_TYPES),\n          _step;\n\n      try {\n        for (_iterator.s(); !(_step = _iterator.n()).done;) {\n          var eventType = _step.value;\n          eventManager.on(eventType, eventHandler, {\n            // give nebula a higher priority so that it can stop propagation to deck.gl's map panning handlers\n            priority: 100\n          });\n        }\n      } catch (err) {\n        _iterator.e(err);\n      } finally {\n        _iterator.f();\n      }\n    }\n  }, {\n    key: \"_removeEventHandlers\",\n    value: function _removeEventHandlers() {\n      // @ts-ignore\n      var eventManager = this.context.deck.eventManager;\n      var eventHandler = this.state._editableLayerState.eventHandler;\n\n      var _iterator2 = _createForOfIteratorHelper(EVENT_TYPES),\n          _step2;\n\n      try {\n        for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n          var eventType = _step2.value;\n          eventManager.off(eventType, eventHandler);\n        }\n      } catch (err) {\n        _iterator2.e(err);\n      } finally {\n        _iterator2.f();\n      }\n    } // A new layer instance is created on every render, so forward the event to the current layer\n    // This means that the first layer instance will stick around to be the event listener, but will forward the event\n    // to the latest layer instance.\n\n  }, {\n    key: \"_forwardEventToCurrentLayer\",\n    value: function _forwardEventToCurrentLayer(event) {\n      var currentLayer = this.getCurrentLayer(); // Use a naming convention to find the event handling function for this event type\n\n      var func = currentLayer[\"_on\".concat(event.type)].bind(currentLayer);\n\n      if (!func) {\n        console.warn(\"no handler for mjolnir.js event \".concat(event.type)); // eslint-disable-line\n\n        return;\n      }\n\n      func(event);\n    }\n  }, {\n    key: \"_onanyclick\",\n    value: function _onanyclick(_ref) {\n      var srcEvent = _ref.srcEvent;\n      var screenCoords = this.getScreenCoords(srcEvent);\n      var mapCoords = this.getMapCoords(screenCoords); // @ts-ignore\n\n      var picks = this.getPicks(screenCoords);\n      this.onLayerClick({\n        mapCoords: mapCoords,\n        // @ts-ignore\n        screenCoords: screenCoords,\n        picks: picks,\n        sourceEvent: srcEvent\n      });\n    }\n  }, {\n    key: \"_onkeyup\",\n    value: function _onkeyup(_ref2) {\n      var srcEvent = _ref2.srcEvent;\n      this.onLayerKeyUp(srcEvent);\n    }\n  }, {\n    key: \"_onpanstart\",\n    value: function _onpanstart(event) {\n      var screenCoords = this.getScreenCoords(event.srcEvent);\n      var mapCoords = this.getMapCoords(screenCoords); // @ts-ignore\n\n      var picks = this.getPicks(screenCoords);\n      this.setState({\n        _editableLayerState: _objectSpread({}, this.state._editableLayerState, {\n          pointerDownScreenCoords: screenCoords,\n          pointerDownMapCoords: mapCoords,\n          pointerDownPicks: picks\n        })\n      });\n      this.onStartDragging({\n        picks: picks,\n        // @ts-ignore\n        screenCoords: screenCoords,\n        // @ts-ignore\n        mapCoords: mapCoords,\n        // @ts-ignore\n        pointerDownScreenCoords: screenCoords,\n        pointerDownMapCoords: mapCoords,\n        cancelPan: event.stopImmediatePropagation,\n        sourceEvent: event.srcEvent\n      });\n    }\n  }, {\n    key: \"_onpanmove\",\n    value: function _onpanmove(event) {\n      var srcEvent = event.srcEvent;\n      var screenCoords = this.getScreenCoords(srcEvent);\n      var mapCoords = this.getMapCoords(screenCoords);\n      var _this$state$_editable = this.state._editableLayerState,\n          pointerDownPicks = _this$state$_editable.pointerDownPicks,\n          pointerDownScreenCoords = _this$state$_editable.pointerDownScreenCoords,\n          pointerDownMapCoords = _this$state$_editable.pointerDownMapCoords; // @ts-ignore\n\n      var picks = this.getPicks(screenCoords);\n      this.onDragging({\n        // @ts-ignore\n        screenCoords: screenCoords,\n        mapCoords: mapCoords,\n        picks: picks,\n        pointerDownPicks: pointerDownPicks,\n        pointerDownScreenCoords: pointerDownScreenCoords,\n        pointerDownMapCoords: pointerDownMapCoords,\n        sourceEvent: srcEvent,\n        cancelPan: event.stopImmediatePropagation // another (hacky) approach for cancelling map panning\n        // const controller = this.context.deck.viewManager.controllers[\n        //   Object.keys(this.context.deck.viewManager.controllers)[0]\n        // ];\n        // controller._state.isDragging = false;\n\n      });\n    }\n  }, {\n    key: \"_onpanend\",\n    value: function _onpanend(_ref3) {\n      var srcEvent = _ref3.srcEvent;\n      var screenCoords = this.getScreenCoords(srcEvent);\n      var mapCoords = this.getMapCoords(screenCoords);\n      var _this$state$_editable2 = this.state._editableLayerState,\n          pointerDownPicks = _this$state$_editable2.pointerDownPicks,\n          pointerDownScreenCoords = _this$state$_editable2.pointerDownScreenCoords,\n          pointerDownMapCoords = _this$state$_editable2.pointerDownMapCoords; // @ts-ignore\n\n      var picks = this.getPicks(screenCoords);\n      this.onStopDragging({\n        picks: picks,\n        // @ts-ignore\n        screenCoords: screenCoords,\n        mapCoords: mapCoords,\n        pointerDownPicks: pointerDownPicks,\n        pointerDownScreenCoords: pointerDownScreenCoords,\n        pointerDownMapCoords: pointerDownMapCoords,\n        sourceEvent: srcEvent\n      });\n      this.setState({\n        _editableLayerState: _objectSpread({}, this.state._editableLayerState, {\n          pointerDownScreenCoords: null,\n          pointerDownMapCoords: null,\n          pointerDownPicks: null\n        })\n      });\n    }\n  }, {\n    key: \"_onpointermove\",\n    value: function _onpointermove(event) {\n      var srcEvent = event.srcEvent;\n      var screenCoords = this.getScreenCoords(srcEvent);\n      var mapCoords = this.getMapCoords(screenCoords);\n      var _this$state$_editable3 = this.state._editableLayerState,\n          pointerDownPicks = _this$state$_editable3.pointerDownPicks,\n          pointerDownScreenCoords = _this$state$_editable3.pointerDownScreenCoords,\n          pointerDownMapCoords = _this$state$_editable3.pointerDownMapCoords; // @ts-ignore\n\n      var picks = this.getPicks(screenCoords);\n      this.onPointerMove({\n        // @ts-ignore\n        screenCoords: screenCoords,\n        mapCoords: mapCoords,\n        picks: picks,\n        pointerDownPicks: pointerDownPicks,\n        pointerDownScreenCoords: pointerDownScreenCoords,\n        pointerDownMapCoords: pointerDownMapCoords,\n        sourceEvent: srcEvent\n      });\n    }\n  }, {\n    key: \"getPicks\",\n    value: function getPicks(screenCoords) {\n      // @ts-ignore\n      return this.context.deck.pickMultipleObjects({\n        x: screenCoords[0],\n        y: screenCoords[1],\n        layerIds: [this.props.id],\n        radius: this.props.pickingRadius,\n        depth: this.props.pickingDepth\n      });\n    }\n  }, {\n    key: \"getScreenCoords\",\n    value: function getScreenCoords(pointerEvent) {\n      return [pointerEvent.clientX - this.context.gl.canvas.getBoundingClientRect().left, pointerEvent.clientY - this.context.gl.canvas.getBoundingClientRect().top];\n    }\n  }, {\n    key: \"getMapCoords\",\n    value: function getMapCoords(screenCoords) {\n      // @ts-ignore\n      return this.context.viewport.unproject([screenCoords[0], screenCoords[1]]);\n    }\n  }]);\n\n  return EditableLayer;\n}(_core.CompositeLayer);\n\nexports[\"default\"] = EditableLayer;\n\n_defineProperty(EditableLayer, \"layerName\", 'EditableLayer');\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9sYXllcnMvZWRpdGFibGUtbGF5ZXIudHMiXSwibmFtZXMiOlsiRVZFTlRfVFlQRVMiLCJFZGl0YWJsZUxheWVyIiwiZXZlbnQiLCJzZXRTdGF0ZSIsIl9lZGl0YWJsZUxheWVyU3RhdGUiLCJwb2ludGVyRG93blBpY2tzIiwicG9pbnRlckRvd25TY3JlZW5Db29yZHMiLCJwb2ludGVyRG93bk1hcENvb3JkcyIsImV2ZW50SGFuZGxlciIsIl9mb3J3YXJkRXZlbnRUb0N1cnJlbnRMYXllciIsImJpbmQiLCJfYWRkRXZlbnRIYW5kbGVycyIsIl9yZW1vdmVFdmVudEhhbmRsZXJzIiwiZXZlbnRNYW5hZ2VyIiwiY29udGV4dCIsImRlY2siLCJzdGF0ZSIsImV2ZW50VHlwZSIsIm9uIiwicHJpb3JpdHkiLCJvZmYiLCJjdXJyZW50TGF5ZXIiLCJnZXRDdXJyZW50TGF5ZXIiLCJmdW5jIiwidHlwZSIsImNvbnNvbGUiLCJ3YXJuIiwic3JjRXZlbnQiLCJzY3JlZW5Db29yZHMiLCJnZXRTY3JlZW5Db29yZHMiLCJtYXBDb29yZHMiLCJnZXRNYXBDb29yZHMiLCJwaWNrcyIsImdldFBpY2tzIiwib25MYXllckNsaWNrIiwic291cmNlRXZlbnQiLCJvbkxheWVyS2V5VXAiLCJvblN0YXJ0RHJhZ2dpbmciLCJjYW5jZWxQYW4iLCJzdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24iLCJvbkRyYWdnaW5nIiwib25TdG9wRHJhZ2dpbmciLCJvblBvaW50ZXJNb3ZlIiwicGlja011bHRpcGxlT2JqZWN0cyIsIngiLCJ5IiwibGF5ZXJJZHMiLCJwcm9wcyIsImlkIiwicmFkaXVzIiwicGlja2luZ1JhZGl1cyIsImRlcHRoIiwicGlja2luZ0RlcHRoIiwicG9pbnRlckV2ZW50IiwiY2xpZW50WCIsImdsIiwiY2FudmFzIiwiZ2V0Qm91bmRpbmdDbGllbnRSZWN0IiwibGVmdCIsImNsaWVudFkiLCJ0b3AiLCJ2aWV3cG9ydCIsInVucHJvamVjdCIsIkNvbXBvc2l0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QWIsRUFBa0JBLFlBQVksQ0FBQyxDQUFELENBQTlCLENBQWhDLENBQVA7QUFDRDs7OztFQXpQT21DLG9COzs7O2dCQUhXOUQsYSxlQUlBLGUiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZW52IGJyb3dzZXIgKi9cblxuaW1wb3J0IHsgQ29tcG9zaXRlTGF5ZXIgfSBmcm9tICdAZGVjay5nbC9jb3JlJztcbmltcG9ydCB7IENvbXBvc2l0ZUxheWVyUHJvcHMgfSBmcm9tICdAZGVjay5nbC9jb3JlL2xpYi9jb21wb3NpdGUtbGF5ZXInO1xuaW1wb3J0IHtcbiAgQ2xpY2tFdmVudCxcbiAgU3RhcnREcmFnZ2luZ0V2ZW50LFxuICBTdG9wRHJhZ2dpbmdFdmVudCxcbiAgRHJhZ2dpbmdFdmVudCxcbiAgUG9pbnRlck1vdmVFdmVudCxcbiAgUG9zaXRpb24sXG59IGZyb20gJ0BuZWJ1bGEuZ2wvZWRpdC1tb2Rlcyc7XG5cbmNvbnN0IEVWRU5UX1RZUEVTID0gWydhbnljbGljaycsICdwb2ludGVybW92ZScsICdwYW5zdGFydCcsICdwYW5tb3ZlJywgJ3BhbmVuZCcsICdrZXl1cCddO1xuXG5leHBvcnQgaW50ZXJmYWNlIEVkaXRhYmxlTGF5ZXJQcm9wczxEPiBleHRlbmRzIENvbXBvc2l0ZUxheWVyUHJvcHM8RD4ge1xuICBwaWNraW5nUmFkaXVzPzogbnVtYmVyO1xuICBwaWNraW5nRGVwdGg/OiBudW1iZXI7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEVkaXRhYmxlTGF5ZXI8XG4gIEQsXG4gIFAgZXh0ZW5kcyBFZGl0YWJsZUxheWVyUHJvcHM8RD4gPSBFZGl0YWJsZUxheWVyUHJvcHM8RD5cbj4gZXh0ZW5kcyBDb21wb3NpdGVMYXllcjxELCBQPiB7XG4gIHN0YXRpYyBsYXllck5hbWUgPSAnRWRpdGFibGVMYXllcic7XG5cbiAgLy8gT3ZlcnJpZGFibGUgaW50ZXJhY3Rpb24gZXZlbnQgaGFuZGxlcnNcbiAgb25MYXllckNsaWNrKGV2ZW50OiBDbGlja0V2ZW50KSB7XG4gICAgLy8gZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiAtIGRvIG5vdGhpbmdcbiAgfVxuXG4gIG9uU3RhcnREcmFnZ2luZyhldmVudDogU3RhcnREcmFnZ2luZ0V2ZW50KSB7XG4gICAgLy8gZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiAtIGRvIG5vdGhpbmdcbiAgfVxuXG4gIG9uU3RvcERyYWdnaW5nKGV2ZW50OiBTdG9wRHJhZ2dpbmdFdmVudCkge1xuICAgIC8vIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gLSBkbyBub3RoaW5nXG4gIH1cblxuICBvbkRyYWdnaW5nKGV2ZW50OiBEcmFnZ2luZ0V2ZW50KSB7XG4gICAgLy8gZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiAtIGRvIG5vdGhpbmdcbiAgfVxuXG4gIG9uUG9pbnRlck1vdmUoZXZlbnQ6IFBvaW50ZXJNb3ZlRXZlbnQpIHtcbiAgICAvLyBkZWZhdWx0IGltcGxlbWVudGF0aW9uIC0gZG8gbm90aGluZ1xuICB9XG5cbiAgb25MYXllcktleVVwKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgLy8gZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiAtIGRvIG5vdGhpbmc7XG4gIH1cbiAgLy8gVE9ETzogaW1wbGVtZW50IG9uQ2FuY2VsRHJhZ2dpbmcgKGUuZy4gZHJhZyBvZmYgc2NyZWVuKVxuXG4gIGluaXRpYWxpemVTdGF0ZSgpIHtcbiAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgIF9lZGl0YWJsZUxheWVyU3RhdGU6IHtcbiAgICAgICAgLy8gUGlja2VkIG9iamVjdHMgYXQgdGhlIHRpbWUgdGhlIHBvaW50ZXIgd2VudCBkb3duXG4gICAgICAgIHBvaW50ZXJEb3duUGlja3M6IG51bGwsXG4gICAgICAgIC8vIFNjcmVlbiBjb29yZGluYXRlcyB3aGVyZSB0aGUgcG9pbnRlciB3ZW50IGRvd25cbiAgICAgICAgcG9pbnRlckRvd25TY3JlZW5Db29yZHM6IG51bGwsXG4gICAgICAgIC8vIEdyb3VuZCBjb29yZGluYXRlcyB3aGVyZSB0aGUgcG9pbnRlciB3ZW50IGRvd25cbiAgICAgICAgcG9pbnRlckRvd25NYXBDb29yZHM6IG51bGwsXG5cbiAgICAgICAgLy8gS2VlcCB0cmFjayBvZiB0aGUgbWpvbG5pci5qcyBldmVudCBoYW5kbGVyIHNvIGl0IGNhbiBiZSBkZXJlZ2lzdGVyZWRcbiAgICAgICAgZXZlbnRIYW5kbGVyOiB0aGlzLl9mb3J3YXJkRXZlbnRUb0N1cnJlbnRMYXllci5iaW5kKHRoaXMpLFxuICAgICAgfSxcbiAgICB9KTtcblxuICAgIHRoaXMuX2FkZEV2ZW50SGFuZGxlcnMoKTtcbiAgfVxuXG4gIGZpbmFsaXplU3RhdGUoKSB7XG4gICAgdGhpcy5fcmVtb3ZlRXZlbnRIYW5kbGVycygpO1xuICB9XG5cbiAgX2FkZEV2ZW50SGFuZGxlcnMoKSB7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIGNvbnN0IHsgZXZlbnRNYW5hZ2VyIH0gPSB0aGlzLmNvbnRleHQuZGVjaztcbiAgICBjb25zdCB7IGV2ZW50SGFuZGxlciB9ID0gdGhpcy5zdGF0ZS5fZWRpdGFibGVMYXllclN0YXRlO1xuXG4gICAgZm9yIChjb25zdCBldmVudFR5cGUgb2YgRVZFTlRfVFlQRVMpIHtcbiAgICAgIGV2ZW50TWFuYWdlci5vbihldmVudFR5cGUsIGV2ZW50SGFuZGxlciwge1xuICAgICAgICAvLyBnaXZlIG5lYnVsYSBhIGhpZ2hlciBwcmlvcml0eSBzbyB0aGF0IGl0IGNhbiBzdG9wIHByb3BhZ2F0aW9uIHRvIGRlY2suZ2wncyBtYXAgcGFubmluZyBoYW5kbGVyc1xuICAgICAgICBwcmlvcml0eTogMTAwLFxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgX3JlbW92ZUV2ZW50SGFuZGxlcnMoKSB7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIGNvbnN0IHsgZXZlbnRNYW5hZ2VyIH0gPSB0aGlzLmNvbnRleHQuZGVjaztcbiAgICBjb25zdCB7IGV2ZW50SGFuZGxlciB9ID0gdGhpcy5zdGF0ZS5fZWRpdGFibGVMYXllclN0YXRlO1xuXG4gICAgZm9yIChjb25zdCBldmVudFR5cGUgb2YgRVZFTlRfVFlQRVMpIHtcbiAgICAgIGV2ZW50TWFuYWdlci5vZmYoZXZlbnRUeXBlLCBldmVudEhhbmRsZXIpO1xuICAgIH1cbiAgfVxuXG4gIC8vIEEgbmV3IGxheWVyIGluc3RhbmNlIGlzIGNyZWF0ZWQgb24gZXZlcnkgcmVuZGVyLCBzbyBmb3J3YXJkIHRoZSBldmVudCB0byB0aGUgY3VycmVudCBsYXllclxuICAvLyBUaGlzIG1lYW5zIHRoYXQgdGhlIGZpcnN0IGxheWVyIGluc3RhbmNlIHdpbGwgc3RpY2sgYXJvdW5kIHRvIGJlIHRoZSBldmVudCBsaXN0ZW5lciwgYnV0IHdpbGwgZm9yd2FyZCB0aGUgZXZlbnRcbiAgLy8gdG8gdGhlIGxhdGVzdCBsYXllciBpbnN0YW5jZS5cbiAgX2ZvcndhcmRFdmVudFRvQ3VycmVudExheWVyKGV2ZW50OiBhbnkpIHtcbiAgICBjb25zdCBjdXJyZW50TGF5ZXIgPSB0aGlzLmdldEN1cnJlbnRMYXllcigpO1xuXG4gICAgLy8gVXNlIGEgbmFtaW5nIGNvbnZlbnRpb24gdG8gZmluZCB0aGUgZXZlbnQgaGFuZGxpbmcgZnVuY3Rpb24gZm9yIHRoaXMgZXZlbnQgdHlwZVxuICAgIGNvbnN0IGZ1bmMgPSBjdXJyZW50TGF5ZXJbYF9vbiR7ZXZlbnQudHlwZX1gXS5iaW5kKGN1cnJlbnRMYXllcik7XG4gICAgaWYgKCFmdW5jKSB7XG4gICAgICBjb25zb2xlLndhcm4oYG5vIGhhbmRsZXIgZm9yIG1qb2xuaXIuanMgZXZlbnQgJHtldmVudC50eXBlfWApOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lXG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGZ1bmMoZXZlbnQpO1xuICB9XG5cbiAgX29uYW55Y2xpY2soeyBzcmNFdmVudCB9OiBhbnkpIHtcbiAgICBjb25zdCBzY3JlZW5Db29yZHMgPSB0aGlzLmdldFNjcmVlbkNvb3JkcyhzcmNFdmVudCk7XG4gICAgY29uc3QgbWFwQ29vcmRzID0gdGhpcy5nZXRNYXBDb29yZHMoc2NyZWVuQ29vcmRzKTtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgY29uc3QgcGlja3MgPSB0aGlzLmdldFBpY2tzKHNjcmVlbkNvb3Jkcyk7XG5cbiAgICB0aGlzLm9uTGF5ZXJDbGljayh7XG4gICAgICBtYXBDb29yZHMsXG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICBzY3JlZW5Db29yZHMsXG4gICAgICBwaWNrcyxcbiAgICAgIHNvdXJjZUV2ZW50OiBzcmNFdmVudCxcbiAgICB9KTtcbiAgfVxuXG4gIF9vbmtleXVwKHsgc3JjRXZlbnQgfTogeyBzcmNFdmVudDogS2V5Ym9hcmRFdmVudCB9KSB7XG4gICAgdGhpcy5vbkxheWVyS2V5VXAoc3JjRXZlbnQpO1xuICB9XG5cbiAgX29ucGFuc3RhcnQoZXZlbnQ6IGFueSkge1xuICAgIGNvbnN0IHNjcmVlbkNvb3JkcyA9IHRoaXMuZ2V0U2NyZWVuQ29vcmRzKGV2ZW50LnNyY0V2ZW50KTtcbiAgICBjb25zdCBtYXBDb29yZHMgPSB0aGlzLmdldE1hcENvb3JkcyhzY3JlZW5Db29yZHMpO1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBjb25zdCBwaWNrcyA9IHRoaXMuZ2V0UGlja3Moc2NyZWVuQ29vcmRzKTtcblxuICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgX2VkaXRhYmxlTGF5ZXJTdGF0ZToge1xuICAgICAgICAuLi50aGlzLnN0YXRlLl9lZGl0YWJsZUxheWVyU3RhdGUsXG4gICAgICAgIHBvaW50ZXJEb3duU2NyZWVuQ29vcmRzOiBzY3JlZW5Db29yZHMsXG4gICAgICAgIHBvaW50ZXJEb3duTWFwQ29vcmRzOiBtYXBDb29yZHMsXG4gICAgICAgIHBvaW50ZXJEb3duUGlja3M6IHBpY2tzLFxuICAgICAgfSxcbiAgICB9KTtcblxuICAgIHRoaXMub25TdGFydERyYWdnaW5nKHtcbiAgICAgIHBpY2tzLFxuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgc2NyZWVuQ29vcmRzLFxuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgbWFwQ29vcmRzLFxuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgcG9pbnRlckRvd25TY3JlZW5Db29yZHM6IHNjcmVlbkNvb3JkcyxcbiAgICAgIHBvaW50ZXJEb3duTWFwQ29vcmRzOiBtYXBDb29yZHMsXG4gICAgICBjYW5jZWxQYW46IGV2ZW50LnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbixcbiAgICAgIHNvdXJjZUV2ZW50OiBldmVudC5zcmNFdmVudCxcbiAgICB9KTtcbiAgfVxuXG4gIF9vbnBhbm1vdmUoZXZlbnQ6IGFueSkge1xuICAgIGNvbnN0IHsgc3JjRXZlbnQgfSA9IGV2ZW50O1xuICAgIGNvbnN0IHNjcmVlbkNvb3JkcyA9IHRoaXMuZ2V0U2NyZWVuQ29vcmRzKHNyY0V2ZW50KTtcbiAgICBjb25zdCBtYXBDb29yZHMgPSB0aGlzLmdldE1hcENvb3JkcyhzY3JlZW5Db29yZHMpO1xuXG4gICAgY29uc3Qge1xuICAgICAgcG9pbnRlckRvd25QaWNrcyxcbiAgICAgIHBvaW50ZXJEb3duU2NyZWVuQ29vcmRzLFxuICAgICAgcG9pbnRlckRvd25NYXBDb29yZHMsXG4gICAgfSA9IHRoaXMuc3RhdGUuX2VkaXRhYmxlTGF5ZXJTdGF0ZTtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgY29uc3QgcGlja3MgPSB0aGlzLmdldFBpY2tzKHNjcmVlbkNvb3Jkcyk7XG5cbiAgICB0aGlzLm9uRHJhZ2dpbmcoe1xuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgc2NyZWVuQ29vcmRzLFxuICAgICAgbWFwQ29vcmRzLFxuICAgICAgcGlja3MsXG4gICAgICBwb2ludGVyRG93blBpY2tzLFxuICAgICAgcG9pbnRlckRvd25TY3JlZW5Db29yZHMsXG4gICAgICBwb2ludGVyRG93bk1hcENvb3JkcyxcbiAgICAgIHNvdXJjZUV2ZW50OiBzcmNFdmVudCxcbiAgICAgIGNhbmNlbFBhbjogZXZlbnQuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uLFxuICAgICAgLy8gYW5vdGhlciAoaGFja3kpIGFwcHJvYWNoIGZvciBjYW5jZWxsaW5nIG1hcCBwYW5uaW5nXG4gICAgICAvLyBjb25zdCBjb250cm9sbGVyID0gdGhpcy5jb250ZXh0LmRlY2sudmlld01hbmFnZXIuY29udHJvbGxlcnNbXG4gICAgICAvLyAgIE9iamVjdC5rZXlzKHRoaXMuY29udGV4dC5kZWNrLnZpZXdNYW5hZ2VyLmNvbnRyb2xsZXJzKVswXVxuICAgICAgLy8gXTtcbiAgICAgIC8vIGNvbnRyb2xsZXIuX3N0YXRlLmlzRHJhZ2dpbmcgPSBmYWxzZTtcbiAgICB9KTtcbiAgfVxuXG4gIF9vbnBhbmVuZCh7IHNyY0V2ZW50IH06IGFueSkge1xuICAgIGNvbnN0IHNjcmVlbkNvb3JkcyA9IHRoaXMuZ2V0U2NyZWVuQ29vcmRzKHNyY0V2ZW50KTtcbiAgICBjb25zdCBtYXBDb29yZHMgPSB0aGlzLmdldE1hcENvb3JkcyhzY3JlZW5Db29yZHMpO1xuXG4gICAgY29uc3Qge1xuICAgICAgcG9pbnRlckRvd25QaWNrcyxcbiAgICAgIHBvaW50ZXJEb3duU2NyZWVuQ29vcmRzLFxuICAgICAgcG9pbnRlckRvd25NYXBDb29yZHMsXG4gICAgfSA9IHRoaXMuc3RhdGUuX2VkaXRhYmxlTGF5ZXJTdGF0ZTtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgY29uc3QgcGlja3MgPSB0aGlzLmdldFBpY2tzKHNjcmVlbkNvb3Jkcyk7XG5cbiAgICB0aGlzLm9uU3RvcERyYWdnaW5nKHtcbiAgICAgIHBpY2tzLFxuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgc2NyZWVuQ29vcmRzLFxuICAgICAgbWFwQ29vcmRzLFxuICAgICAgcG9pbnRlckRvd25QaWNrcyxcbiAgICAgIHBvaW50ZXJEb3duU2NyZWVuQ29vcmRzLFxuICAgICAgcG9pbnRlckRvd25NYXBDb29yZHMsXG4gICAgICBzb3VyY2VFdmVudDogc3JjRXZlbnQsXG4gICAgfSk7XG5cbiAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgIF9lZGl0YWJsZUxheWVyU3RhdGU6IHtcbiAgICAgICAgLi4udGhpcy5zdGF0ZS5fZWRpdGFibGVMYXllclN0YXRlLFxuICAgICAgICBwb2ludGVyRG93blNjcmVlbkNvb3JkczogbnVsbCxcbiAgICAgICAgcG9pbnRlckRvd25NYXBDb29yZHM6IG51bGwsXG4gICAgICAgIHBvaW50ZXJEb3duUGlja3M6IG51bGwsXG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgX29ucG9pbnRlcm1vdmUoZXZlbnQ6IGFueSkge1xuICAgIGNvbnN0IHsgc3JjRXZlbnQgfSA9IGV2ZW50O1xuICAgIGNvbnN0IHNjcmVlbkNvb3JkcyA9IHRoaXMuZ2V0U2NyZWVuQ29vcmRzKHNyY0V2ZW50KTtcbiAgICBjb25zdCBtYXBDb29yZHMgPSB0aGlzLmdldE1hcENvb3JkcyhzY3JlZW5Db29yZHMpO1xuXG4gICAgY29uc3Qge1xuICAgICAgcG9pbnRlckRvd25QaWNrcyxcbiAgICAgIHBvaW50ZXJEb3duU2NyZWVuQ29vcmRzLFxuICAgICAgcG9pbnRlckRvd25NYXBDb29yZHMsXG4gICAgfSA9IHRoaXMuc3RhdGUuX2VkaXRhYmxlTGF5ZXJTdGF0ZTtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgY29uc3QgcGlja3MgPSB0aGlzLmdldFBpY2tzKHNjcmVlbkNvb3Jkcyk7XG5cbiAgICB0aGlzLm9uUG9pbnRlck1vdmUoe1xuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgc2NyZWVuQ29vcmRzLFxuICAgICAgbWFwQ29vcmRzLFxuICAgICAgcGlja3MsXG4gICAgICBwb2ludGVyRG93blBpY2tzLFxuICAgICAgcG9pbnRlckRvd25TY3JlZW5Db29yZHMsXG4gICAgICBwb2ludGVyRG93bk1hcENvb3JkcyxcbiAgICAgIHNvdXJjZUV2ZW50OiBzcmNFdmVudCxcbiAgICB9KTtcbiAgfVxuXG4gIGdldFBpY2tzKHNjcmVlbkNvb3JkczogW251bWJlciwgbnVtYmVyXSkge1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICByZXR1cm4gdGhpcy5jb250ZXh0LmRlY2sucGlja011bHRpcGxlT2JqZWN0cyh7XG4gICAgICB4OiBzY3JlZW5Db29yZHNbMF0sXG4gICAgICB5OiBzY3JlZW5Db29yZHNbMV0sXG4gICAgICBsYXllcklkczogW3RoaXMucHJvcHMuaWRdLFxuICAgICAgcmFkaXVzOiB0aGlzLnByb3BzLnBpY2tpbmdSYWRpdXMsXG4gICAgICBkZXB0aDogdGhpcy5wcm9wcy5waWNraW5nRGVwdGgsXG4gICAgfSk7XG4gIH1cblxuICBnZXRTY3JlZW5Db29yZHMocG9pbnRlckV2ZW50OiBhbnkpOiBQb3NpdGlvbiB7XG4gICAgcmV0dXJuIFtcbiAgICAgIHBvaW50ZXJFdmVudC5jbGllbnRYIC1cbiAgICAgICAgKHRoaXMuY29udGV4dC5nbC5jYW52YXMgYXMgSFRNTENhbnZhc0VsZW1lbnQpLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmxlZnQsXG4gICAgICBwb2ludGVyRXZlbnQuY2xpZW50WSAtXG4gICAgICAgICh0aGlzLmNvbnRleHQuZ2wuY2FudmFzIGFzIEhUTUxDYW52YXNFbGVtZW50KS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS50b3AsXG4gICAgXTtcbiAgfVxuXG4gIGdldE1hcENvb3JkcyhzY3JlZW5Db29yZHM6IFBvc2l0aW9uKTogUG9zaXRpb24ge1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICByZXR1cm4gdGhpcy5jb250ZXh0LnZpZXdwb3J0LnVucHJvamVjdChbc2NyZWVuQ29vcmRzWzBdLCBzY3JlZW5Db29yZHNbMV1dKTtcbiAgfVxufVxuIl19","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports[\"default\"] = void 0;\n\nvar _layers = require(\"@deck.gl/layers\");\n\nvar _utils = require(\"../utils\");\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _get(target, property, receiver) { if (typeof Reflect !== \"undefined\" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return _get(target, property, receiver || target); }\n\nfunction _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; }\n\nfunction _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar defaultProps = _objectSpread({}, _layers.PathLayer.defaultProps, {\n  pickingLineWidthExtraPixels: {\n    type: 'number',\n    min: 0,\n    value: Number.MAX_SAFE_INTEGER\n  }\n});\n\nvar EditablePathLayer = /*#__PURE__*/function (_PathLayer) {\n  _inherits(EditablePathLayer, _PathLayer);\n\n  var _super = _createSuper(EditablePathLayer);\n\n  function EditablePathLayer() {\n    _classCallCheck(this, EditablePathLayer);\n\n    return _super.apply(this, arguments);\n  }\n\n  _createClass(EditablePathLayer, [{\n    key: \"getShaders\",\n    value: function getShaders() {\n      var _shaders$inject;\n\n      var shaders = _get(_getPrototypeOf(EditablePathLayer.prototype), \"getShaders\", this).call(this);\n\n      shaders.vs = (0, _utils.insertBefore)(shaders.vs, 'vec3 width;', \"\\n       if(picking_uActive){\\n        widthPixels.xy += pickingLineWidthExtraPixels;\\n       }\\n      \");\n      return _objectSpread({}, shaders, {\n        inject: _objectSpread({}, shaders.inject || {}, {\n          'vs:#decl': (((_shaders$inject = shaders.inject) === null || _shaders$inject === void 0 ? void 0 : _shaders$inject['vs:#decl']) || '').concat(\"uniform float pickingLineWidthExtraPixels;\")\n        })\n      });\n    }\n  }, {\n    key: \"draw\",\n    value: function draw(props) {\n      _get(_getPrototypeOf(EditablePathLayer.prototype), \"draw\", this).call(this, _objectSpread({}, props, {\n        uniforms: _objectSpread({}, props.uniforms, {\n          pickingLineWidthExtraPixels: this.props.pickingLineWidthExtraPixels\n        })\n      }));\n    }\n  }]);\n\n  return EditablePathLayer;\n}(_layers.PathLayer);\n\nexports[\"default\"] = EditablePathLayer;\nEditablePathLayer.defaultProps = defaultProps;\nEditablePathLayer.layerName = 'EditablePathLayer';\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9sYXllcnMvZWRpdGFibGUtcGF0aC1sYXllci50cyJdLCJuYW1lcyI6WyJkZWZhdWx0UHJvcHMiLCJQYXRoTGF5ZXIiLCJwaWNraW5nTGluZVdpZHRoRXh0cmFQaXhlbHMiLCJ0eXBlIiwibWluIiwidmFsdWUiLCJOdW1iZXIiLCJNQVhfU0FGRV9JTlRFR0VSIiwiRWRpdGFibGVQYXRoTGF5ZXIiLCJzaGFkZXJzIiwidnMiLCJpbmplY3QiLCJjb25jYXQiLCJwcm9wcyIsInVuaWZvcm1zIiwibGF5ZXJOYW1lIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUE7O0FBRUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFNQSxJQUFNQSxZQUFZLHFCQUNiQyxrQkFBVUQsWUFERztBQUVoQkUsRUFBQUEsMkJBQTJCLEVBQUU7QUFBRUMsSUFBQUEsSUFBSSxFQUFFLFFBQVI7QUFBa0JDLElBQUFBLEdBQUcsRUFBRSxDQUF2QjtBQUEwQkMsSUFBQUEsS0FBSyxFQUFFQyxNQUFNLENBQUNDO0FBQXhDO0FBRmIsRUFBbEI7O0lBS3FCQyxpQjs7Ozs7Ozs7Ozs7OztpQ0FDTjtBQUFBOztBQUNYLFVBQU1DLE9BQU8sb0ZBQWI7O0FBRUFBLE1BQUFBLE9BQU8sQ0FBQ0MsRUFBUixHQUFhLHlCQUNYRCxPQUFPLENBQUNDLEVBREcsRUFFWCxhQUZXLDRHQUFiO0FBVUEsK0JBQ0tELE9BREw7QUFFRUUsUUFBQUEsTUFBTSxvQkFDQUYsT0FBTyxDQUFDRSxNQUFSLElBQWtCLEVBRGxCO0FBRUosc0JBQVksQ0FBQyxvQkFBQUYsT0FBTyxDQUFDRSxNQUFSLG9FQUFpQixVQUFqQixNQUFnQyxFQUFqQyxFQUFxQ0MsTUFBckM7QUFGUjtBQUZSO0FBU0Q7Ozt5QkFFSUMsSyxFQUFPO0FBQ1Ysb0dBQ0tBLEtBREw7QUFFRUMsUUFBQUEsUUFBUSxvQkFDSEQsS0FBSyxDQUFDQyxRQURIO0FBRU5aLFVBQUFBLDJCQUEyQixFQUFFLEtBQUtXLEtBQUwsQ0FBV1g7QUFGbEM7QUFGVjtBQU9EOzs7O0VBakM0Q0QsaUI7OztBQW9DL0NPLGlCQUFpQixDQUFDUixZQUFsQixHQUFpQ0EsWUFBakM7QUFDQVEsaUJBQWlCLENBQUNPLFNBQWxCLEdBQThCLG1CQUE5QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBhdGhMYXllciwgUGF0aExheWVyUHJvcHMgfSBmcm9tICdAZGVjay5nbC9sYXllcnMnO1xuXG5pbXBvcnQgeyBpbnNlcnRCZWZvcmUgfSBmcm9tICcuLi91dGlscyc7XG5cbmludGVyZmFjZSBFZGl0YWJsZVBhdGhMYXllclByb3BzIGV4dGVuZHMgUGF0aExheWVyUHJvcHM8YW55PiB7XG4gIHBpY2tpbmdMaW5lV2lkdGhFeHRyYVBpeGVscz86IG51bWJlcjtcbn1cblxuY29uc3QgZGVmYXVsdFByb3BzID0ge1xuICAuLi5QYXRoTGF5ZXIuZGVmYXVsdFByb3BzLFxuICBwaWNraW5nTGluZVdpZHRoRXh0cmFQaXhlbHM6IHsgdHlwZTogJ251bWJlcicsIG1pbjogMCwgdmFsdWU6IE51bWJlci5NQVhfU0FGRV9JTlRFR0VSIH0sXG59O1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBFZGl0YWJsZVBhdGhMYXllciBleHRlbmRzIFBhdGhMYXllcjxhbnksIEVkaXRhYmxlUGF0aExheWVyUHJvcHM+IHtcbiAgZ2V0U2hhZGVycygpIHtcbiAgICBjb25zdCBzaGFkZXJzID0gc3VwZXIuZ2V0U2hhZGVycygpO1xuXG4gICAgc2hhZGVycy52cyA9IGluc2VydEJlZm9yZShcbiAgICAgIHNoYWRlcnMudnMsXG4gICAgICAndmVjMyB3aWR0aDsnLFxuICAgICAgYFxuICAgICAgIGlmKHBpY2tpbmdfdUFjdGl2ZSl7XG4gICAgICAgIHdpZHRoUGl4ZWxzLnh5ICs9IHBpY2tpbmdMaW5lV2lkdGhFeHRyYVBpeGVscztcbiAgICAgICB9XG4gICAgICBgXG4gICAgKTtcblxuICAgIHJldHVybiB7XG4gICAgICAuLi5zaGFkZXJzLFxuICAgICAgaW5qZWN0OiB7XG4gICAgICAgIC4uLihzaGFkZXJzLmluamVjdCB8fCB7fSksXG4gICAgICAgICd2czojZGVjbCc6IChzaGFkZXJzLmluamVjdD8uWyd2czojZGVjbCddIHx8ICcnKS5jb25jYXQoXG4gICAgICAgICAgYHVuaWZvcm0gZmxvYXQgcGlja2luZ0xpbmVXaWR0aEV4dHJhUGl4ZWxzO2BcbiAgICAgICAgKSxcbiAgICAgIH0sXG4gICAgfTtcbiAgfVxuXG4gIGRyYXcocHJvcHMpIHtcbiAgICBzdXBlci5kcmF3KHtcbiAgICAgIC4uLnByb3BzLFxuICAgICAgdW5pZm9ybXM6IHtcbiAgICAgICAgLi4ucHJvcHMudW5pZm9ybXMsXG4gICAgICAgIHBpY2tpbmdMaW5lV2lkdGhFeHRyYVBpeGVsczogdGhpcy5wcm9wcy5waWNraW5nTGluZVdpZHRoRXh0cmFQaXhlbHMsXG4gICAgICB9LFxuICAgIH0pO1xuICB9XG59XG5cbkVkaXRhYmxlUGF0aExheWVyLmRlZmF1bHRQcm9wcyA9IGRlZmF1bHRQcm9wcztcbkVkaXRhYmxlUGF0aExheWVyLmxheWVyTmFtZSA9ICdFZGl0YWJsZVBhdGhMYXllcic7XG4iXX0=","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports[\"default\"] = void 0;\n\nvar _core = require(\"@deck.gl/core\");\n\nvar _layers = require(\"@deck.gl/layers\");\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar defaultProps = {};\n\nvar ElevatedEditHandleLayer = /*#__PURE__*/function (_CompositeLayer) {\n  _inherits(ElevatedEditHandleLayer, _CompositeLayer);\n\n  var _super = _createSuper(ElevatedEditHandleLayer);\n\n  function ElevatedEditHandleLayer() {\n    _classCallCheck(this, ElevatedEditHandleLayer);\n\n    return _super.apply(this, arguments);\n  }\n\n  _createClass(ElevatedEditHandleLayer, [{\n    key: \"renderLayers\",\n    value: function renderLayers() {\n      var handles = new _layers.ScatterplotLayer(Object.assign({}, this.props, {\n        id: \"\".concat(this.props.id, \"-ScatterplotLayer\"),\n        data: this.props.data\n      }));\n      var lines = new _layers.LineLayer(Object.assign({}, this.props, {\n        id: \"\".concat(this.props.id, \"-LineLayer\"),\n        data: this.props.data,\n        pickable: false,\n        getSourcePosition: function getSourcePosition(_ref) {\n          var position = _ref.position;\n          return [position[0], position[1], 0];\n        },\n        getTargetPosition: function getTargetPosition(_ref2) {\n          var position = _ref2.position;\n          return [position[0], position[1], position[2] || 0];\n        },\n        getColor: [150, 150, 150, 200],\n        getStrokeWidth: 3\n      }));\n      return [handles, lines];\n    }\n  }]);\n\n  return ElevatedEditHandleLayer;\n}(_core.CompositeLayer);\n\nexports[\"default\"] = ElevatedEditHandleLayer;\n\n_defineProperty(ElevatedEditHandleLayer, \"layerName\", 'ElevatedEditHandleLayer');\n\n_defineProperty(ElevatedEditHandleLayer, \"defaultProps\", defaultProps);\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9sYXllcnMvZWxldmF0ZWQtZWRpdC1oYW5kbGUtbGF5ZXIudHMiXSwibmFtZXMiOlsiZGVmYXVsdFByb3BzIiwiRWxldmF0ZWRFZGl0SGFuZGxlTGF5ZXIiLCJoYW5kbGVzIiwiU2NhdHRlcnBsb3RMYXllciIsIk9iamVjdCIsImFzc2lnbiIsInByb3BzIiwiaWQiLCJkYXRhIiwibGluZXMiLCJMaW5lTGF5ZXIiLCJwaWNrYWJsZSIsImdldFNvdXJjZVBvc2l0aW9uIiwicG9zaXRpb24iLCJnZXRUYXJnZXRQb3NpdGlvbiIsImdldENvbG9yIiwiZ2V0U3Ryb2tlV2lkdGgiLCJDb21wb3NpdGVMYXllciJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUVBOztBQUNBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVBLElBQU1BLFlBQVksR0FBRyxFQUFyQjs7SUFFcUJDLHVCOzs7Ozs7Ozs7Ozs7O21DQUdKO0FBQ2IsVUFBTUMsT0FBTyxHQUFHLElBQUlDLHdCQUFKLENBQ2RDLE1BQU0sQ0FBQ0MsTUFBUCxDQUFjLEVBQWQsRUFBa0IsS0FBS0MsS0FBdkIsRUFBOEI7QUFDNUJDLFFBQUFBLEVBQUUsWUFBSyxLQUFLRCxLQUFMLENBQVdDLEVBQWhCLHNCQUQwQjtBQUU1QkMsUUFBQUEsSUFBSSxFQUFFLEtBQUtGLEtBQUwsQ0FBV0U7QUFGVyxPQUE5QixDQURjLENBQWhCO0FBT0EsVUFBTUMsS0FBSyxHQUFHLElBQUlDLGlCQUFKLENBQ1pOLE1BQU0sQ0FBQ0MsTUFBUCxDQUFjLEVBQWQsRUFBa0IsS0FBS0MsS0FBdkIsRUFBOEI7QUFDNUJDLFFBQUFBLEVBQUUsWUFBSyxLQUFLRCxLQUFMLENBQVdDLEVBQWhCLGVBRDBCO0FBRTVCQyxRQUFBQSxJQUFJLEVBQUUsS0FBS0YsS0FBTCxDQUFXRSxJQUZXO0FBRzVCRyxRQUFBQSxRQUFRLEVBQUUsS0FIa0I7QUFJNUJDLFFBQUFBLGlCQUFpQixFQUFFO0FBQUEsY0FBR0MsUUFBSCxRQUFHQSxRQUFIO0FBQUEsaUJBQWtCLENBQUNBLFFBQVEsQ0FBQyxDQUFELENBQVQsRUFBY0EsUUFBUSxDQUFDLENBQUQsQ0FBdEIsRUFBMkIsQ0FBM0IsQ0FBbEI7QUFBQSxTQUpTO0FBSzVCQyxRQUFBQSxpQkFBaUIsRUFBRTtBQUFBLGNBQUdELFFBQUgsU0FBR0EsUUFBSDtBQUFBLGlCQUFrQixDQUFDQSxRQUFRLENBQUMsQ0FBRCxDQUFULEVBQWNBLFFBQVEsQ0FBQyxDQUFELENBQXRCLEVBQTJCQSxRQUFRLENBQUMsQ0FBRCxDQUFSLElBQWUsQ0FBMUMsQ0FBbEI7QUFBQSxTQUxTO0FBTTVCRSxRQUFBQSxRQUFRLEVBQUUsQ0FBQyxHQUFELEVBQU0sR0FBTixFQUFXLEdBQVgsRUFBZ0IsR0FBaEIsQ0FOa0I7QUFPNUJDLFFBQUFBLGNBQWMsRUFBRTtBQVBZLE9BQTlCLENBRFksQ0FBZDtBQVlBLGFBQU8sQ0FBQ2QsT0FBRCxFQUFVTyxLQUFWLENBQVA7QUFDRDs7OztFQXhCa0RRLG9COzs7O2dCQUFoQ2hCLHVCLGVBQ0EseUI7O2dCQURBQSx1QixrQkFFR0QsWSIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1lbnYgYnJvd3NlciAqL1xuXG5pbXBvcnQgeyBDb21wb3NpdGVMYXllciB9IGZyb20gJ0BkZWNrLmdsL2NvcmUnO1xuaW1wb3J0IHsgU2NhdHRlcnBsb3RMYXllciwgTGluZUxheWVyIH0gZnJvbSAnQGRlY2suZ2wvbGF5ZXJzJztcblxuY29uc3QgZGVmYXVsdFByb3BzID0ge307XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEVsZXZhdGVkRWRpdEhhbmRsZUxheWVyIGV4dGVuZHMgQ29tcG9zaXRlTGF5ZXI8YW55PiB7XG4gIHN0YXRpYyBsYXllck5hbWUgPSAnRWxldmF0ZWRFZGl0SGFuZGxlTGF5ZXInO1xuICBzdGF0aWMgZGVmYXVsdFByb3BzID0gZGVmYXVsdFByb3BzO1xuICByZW5kZXJMYXllcnMoKSB7XG4gICAgY29uc3QgaGFuZGxlcyA9IG5ldyBTY2F0dGVycGxvdExheWVyKFxuICAgICAgT2JqZWN0LmFzc2lnbih7fSwgdGhpcy5wcm9wcywge1xuICAgICAgICBpZDogYCR7dGhpcy5wcm9wcy5pZH0tU2NhdHRlcnBsb3RMYXllcmAsXG4gICAgICAgIGRhdGE6IHRoaXMucHJvcHMuZGF0YSxcbiAgICAgIH0pXG4gICAgKTtcblxuICAgIGNvbnN0IGxpbmVzID0gbmV3IExpbmVMYXllcihcbiAgICAgIE9iamVjdC5hc3NpZ24oe30sIHRoaXMucHJvcHMsIHtcbiAgICAgICAgaWQ6IGAke3RoaXMucHJvcHMuaWR9LUxpbmVMYXllcmAsXG4gICAgICAgIGRhdGE6IHRoaXMucHJvcHMuZGF0YSxcbiAgICAgICAgcGlja2FibGU6IGZhbHNlLFxuICAgICAgICBnZXRTb3VyY2VQb3NpdGlvbjogKHsgcG9zaXRpb24gfSkgPT4gW3Bvc2l0aW9uWzBdLCBwb3NpdGlvblsxXSwgMF0sXG4gICAgICAgIGdldFRhcmdldFBvc2l0aW9uOiAoeyBwb3NpdGlvbiB9KSA9PiBbcG9zaXRpb25bMF0sIHBvc2l0aW9uWzFdLCBwb3NpdGlvblsyXSB8fCAwXSxcbiAgICAgICAgZ2V0Q29sb3I6IFsxNTAsIDE1MCwgMTUwLCAyMDBdLFxuICAgICAgICBnZXRTdHJva2VXaWR0aDogMyxcbiAgICAgIH0pXG4gICAgKTtcblxuICAgIHJldHVybiBbaGFuZGxlcywgbGluZXNdO1xuICB9XG59XG4iXX0=","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports[\"default\"] = void 0;\n\nvar _core = require(\"@deck.gl/core\");\n\nvar _layers = require(\"@deck.gl/layers\");\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar JunctionScatterplotLayer = /*#__PURE__*/function (_CompositeLayer) {\n  _inherits(JunctionScatterplotLayer, _CompositeLayer);\n\n  var _super = _createSuper(JunctionScatterplotLayer);\n\n  function JunctionScatterplotLayer() {\n    _classCallCheck(this, JunctionScatterplotLayer);\n\n    return _super.apply(this, arguments);\n  }\n\n  _createClass(JunctionScatterplotLayer, [{\n    key: \"renderLayers\",\n    value: function renderLayers() {\n      var _this$props = this.props,\n          id = _this$props.id,\n          getFillColor = _this$props.getFillColor,\n          getStrokeColor = _this$props.getStrokeColor,\n          getInnerRadius = _this$props.getInnerRadius,\n          updateTriggers = _this$props.updateTriggers; // data needs to be passed explicitly after deck.gl 5.3\n\n      return [// the full circles\n      new _layers.ScatterplotLayer(_objectSpread({}, this.props, {\n        id: \"\".concat(id, \"-full\"),\n        data: this.props.data,\n        getLineColor: getStrokeColor,\n        updateTriggers: _objectSpread({}, updateTriggers, {\n          getStrokeColor: updateTriggers.getStrokeColor\n        })\n      })), // the inner part\n      new _layers.ScatterplotLayer(_objectSpread({}, this.props, {\n        id: \"\".concat(id, \"-inner\"),\n        data: this.props.data,\n        getFillColor: getFillColor,\n        getRadius: getInnerRadius,\n        pickable: false,\n        updateTriggers: _objectSpread({}, updateTriggers, {\n          getFillColor: updateTriggers.getFillColor,\n          getRadius: updateTriggers.getInnerRadius\n        })\n      }))];\n    }\n  }]);\n\n  return JunctionScatterplotLayer;\n}(_core.CompositeLayer);\n\nexports[\"default\"] = JunctionScatterplotLayer;\n\n_defineProperty(JunctionScatterplotLayer, \"layerName\", 'JunctionScatterplotLayer');\n\n_defineProperty(JunctionScatterplotLayer, \"defaultProps\", _objectSpread({}, _layers.ScatterplotLayer.defaultProps, {\n  getFillColor: function getFillColor(d) {\n    return [0, 0, 0, 255];\n  },\n  getStrokeColor: function getStrokeColor(d) {\n    return [255, 255, 255, 255];\n  },\n  getInnerRadius: function getInnerRadius(d) {\n    return 1;\n  }\n}));\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9sYXllcnMvanVuY3Rpb24tc2NhdHRlcnBsb3QtbGF5ZXIudHMiXSwibmFtZXMiOlsiSnVuY3Rpb25TY2F0dGVycGxvdExheWVyIiwicHJvcHMiLCJpZCIsImdldEZpbGxDb2xvciIsImdldFN0cm9rZUNvbG9yIiwiZ2V0SW5uZXJSYWRpdXMiLCJ1cGRhdGVUcmlnZ2VycyIsIlNjYXR0ZXJwbG90TGF5ZXIiLCJkYXRhIiwiZ2V0TGluZUNvbG9yIiwiZ2V0UmFkaXVzIiwicGlja2FibGUiLCJDb21wb3NpdGVMYXllciIsImRlZmF1bHRQcm9wcyIsImQiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQTs7QUFDQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBU3FCQSx3Qjs7Ozs7Ozs7Ozs7OzttQ0FZSjtBQUFBLHdCQUNnRSxLQUFLQyxLQURyRTtBQUFBLFVBQ0xDLEVBREssZUFDTEEsRUFESztBQUFBLFVBQ0RDLFlBREMsZUFDREEsWUFEQztBQUFBLFVBQ2FDLGNBRGIsZUFDYUEsY0FEYjtBQUFBLFVBQzZCQyxjQUQ3QixlQUM2QkEsY0FEN0I7QUFBQSxVQUM2Q0MsY0FEN0MsZUFDNkNBLGNBRDdDLEVBR2I7O0FBQ0EsYUFBTyxDQUNMO0FBQ0EsVUFBSUMsd0JBQUosbUJBQ0ssS0FBS04sS0FEVjtBQUVFQyxRQUFBQSxFQUFFLFlBQUtBLEVBQUwsVUFGSjtBQUdFTSxRQUFBQSxJQUFJLEVBQUUsS0FBS1AsS0FBTCxDQUFXTyxJQUhuQjtBQUlFQyxRQUFBQSxZQUFZLEVBQUVMLGNBSmhCO0FBS0VFLFFBQUFBLGNBQWMsb0JBQ1RBLGNBRFM7QUFFWkYsVUFBQUEsY0FBYyxFQUFFRSxjQUFjLENBQUNGO0FBRm5CO0FBTGhCLFNBRkssRUFXRDtBQUNKLFVBQUlHLHdCQUFKLG1CQUNLLEtBQUtOLEtBRFY7QUFFRUMsUUFBQUEsRUFBRSxZQUFLQSxFQUFMLFdBRko7QUFHRU0sUUFBQUEsSUFBSSxFQUFFLEtBQUtQLEtBQUwsQ0FBV08sSUFIbkI7QUFJRUwsUUFBQUEsWUFBWSxFQUFaQSxZQUpGO0FBS0VPLFFBQUFBLFNBQVMsRUFBRUwsY0FMYjtBQU1FTSxRQUFBQSxRQUFRLEVBQUUsS0FOWjtBQU9FTCxRQUFBQSxjQUFjLG9CQUNUQSxjQURTO0FBRVpILFVBQUFBLFlBQVksRUFBRUcsY0FBYyxDQUFDSCxZQUZqQjtBQUdaTyxVQUFBQSxTQUFTLEVBQUVKLGNBQWMsQ0FBQ0Q7QUFIZDtBQVBoQixTQVpLLENBQVA7QUEwQkQ7Ozs7RUExQ21ETyxvQjs7OztnQkFBakNaLHdCLGVBSUEsMEI7O2dCQUpBQSx3QixvQ0FNZE8seUJBQWlCTSxZO0FBQ3BCVixFQUFBQSxZQUFZLEVBQUUsc0JBQUNXLENBQUQ7QUFBQSxXQUFPLENBQUMsQ0FBRCxFQUFJLENBQUosRUFBTyxDQUFQLEVBQVUsR0FBVixDQUFQO0FBQUEsRztBQUNkVixFQUFBQSxjQUFjLEVBQUUsd0JBQUNVLENBQUQ7QUFBQSxXQUFPLENBQUMsR0FBRCxFQUFNLEdBQU4sRUFBVyxHQUFYLEVBQWdCLEdBQWhCLENBQVA7QUFBQSxHO0FBQ2hCVCxFQUFBQSxjQUFjLEVBQUUsd0JBQUNTLENBQUQ7QUFBQSxXQUFPLENBQVA7QUFBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvc2l0ZUxheWVyLCBSR0JBQ29sb3IgfSBmcm9tICdAZGVjay5nbC9jb3JlJztcbmltcG9ydCB7IFNjYXR0ZXJwbG90TGF5ZXIgfSBmcm9tICdAZGVjay5nbC9sYXllcnMnO1xuaW1wb3J0IHsgQ29tcG9zaXRlTGF5ZXJQcm9wcyB9IGZyb20gJ0BkZWNrLmdsL2NvcmUvbGliL2NvbXBvc2l0ZS1sYXllcic7XG5cbmludGVyZmFjZSBKdW5jdGlvblNjYXR0ZXJwbG90TGF5ZXJQcm9wcyBleHRlbmRzIENvbXBvc2l0ZUxheWVyUHJvcHM8YW55PiB7XG4gIGdldEZpbGxDb2xvcj86IFJHQkFDb2xvciB8ICgoZCkgPT4gUkdCQUNvbG9yKTtcbiAgZ2V0U3Ryb2tlQ29sb3I/OiBSR0JBQ29sb3IgfCAoKGQpID0+IFJHQkFDb2xvcik7XG4gIGdldElubmVyUmFkaXVzPzogbnVtYmVyIHwgKChkKSA9PiBudW1iZXIpO1xufVxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBKdW5jdGlvblNjYXR0ZXJwbG90TGF5ZXIgZXh0ZW5kcyBDb21wb3NpdGVMYXllcjxcbiAgYW55LFxuICBKdW5jdGlvblNjYXR0ZXJwbG90TGF5ZXJQcm9wc1xuPiB7XG4gIHN0YXRpYyBsYXllck5hbWUgPSAnSnVuY3Rpb25TY2F0dGVycGxvdExheWVyJztcbiAgc3RhdGljIGRlZmF1bHRQcm9wczogSnVuY3Rpb25TY2F0dGVycGxvdExheWVyUHJvcHMgPSB7XG4gICAgLi4uU2NhdHRlcnBsb3RMYXllci5kZWZhdWx0UHJvcHMsXG4gICAgZ2V0RmlsbENvbG9yOiAoZCkgPT4gWzAsIDAsIDAsIDI1NV0sXG4gICAgZ2V0U3Ryb2tlQ29sb3I6IChkKSA9PiBbMjU1LCAyNTUsIDI1NSwgMjU1XSxcbiAgICBnZXRJbm5lclJhZGl1czogKGQpID0+IDEsXG4gIH07XG5cbiAgcmVuZGVyTGF5ZXJzKCkge1xuICAgIGNvbnN0IHsgaWQsIGdldEZpbGxDb2xvciwgZ2V0U3Ryb2tlQ29sb3IsIGdldElubmVyUmFkaXVzLCB1cGRhdGVUcmlnZ2VycyB9ID0gdGhpcy5wcm9wcztcblxuICAgIC8vIGRhdGEgbmVlZHMgdG8gYmUgcGFzc2VkIGV4cGxpY2l0bHkgYWZ0ZXIgZGVjay5nbCA1LjNcbiAgICByZXR1cm4gW1xuICAgICAgLy8gdGhlIGZ1bGwgY2lyY2xlc1xuICAgICAgbmV3IFNjYXR0ZXJwbG90TGF5ZXIoe1xuICAgICAgICAuLi50aGlzLnByb3BzLFxuICAgICAgICBpZDogYCR7aWR9LWZ1bGxgLFxuICAgICAgICBkYXRhOiB0aGlzLnByb3BzLmRhdGEsXG4gICAgICAgIGdldExpbmVDb2xvcjogZ2V0U3Ryb2tlQ29sb3IsXG4gICAgICAgIHVwZGF0ZVRyaWdnZXJzOiB7XG4gICAgICAgICAgLi4udXBkYXRlVHJpZ2dlcnMsXG4gICAgICAgICAgZ2V0U3Ryb2tlQ29sb3I6IHVwZGF0ZVRyaWdnZXJzLmdldFN0cm9rZUNvbG9yLFxuICAgICAgICB9LFxuICAgICAgfSksIC8vIHRoZSBpbm5lciBwYXJ0XG4gICAgICBuZXcgU2NhdHRlcnBsb3RMYXllcih7XG4gICAgICAgIC4uLnRoaXMucHJvcHMsXG4gICAgICAgIGlkOiBgJHtpZH0taW5uZXJgLFxuICAgICAgICBkYXRhOiB0aGlzLnByb3BzLmRhdGEsXG4gICAgICAgIGdldEZpbGxDb2xvcixcbiAgICAgICAgZ2V0UmFkaXVzOiBnZXRJbm5lclJhZGl1cyxcbiAgICAgICAgcGlja2FibGU6IGZhbHNlLFxuICAgICAgICB1cGRhdGVUcmlnZ2Vyczoge1xuICAgICAgICAgIC4uLnVwZGF0ZVRyaWdnZXJzLFxuICAgICAgICAgIGdldEZpbGxDb2xvcjogdXBkYXRlVHJpZ2dlcnMuZ2V0RmlsbENvbG9yLFxuICAgICAgICAgIGdldFJhZGl1czogdXBkYXRlVHJpZ2dlcnMuZ2V0SW5uZXJSYWRpdXMsXG4gICAgICAgIH0sXG4gICAgICB9KSxcbiAgICBdO1xuICB9XG59XG4iXX0=","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports[\"default\"] = void 0;\n\nvar _core = require(\"@luma.gl/core\");\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nvar Arrow2DGeometry = /*#__PURE__*/function (_Geometry) {\n  _inherits(Arrow2DGeometry, _Geometry);\n\n  var _super = _createSuper(Arrow2DGeometry);\n\n  function Arrow2DGeometry() {\n    var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n    _classCallCheck(this, Arrow2DGeometry);\n\n    return _super.call(this, Object.assign({}, opts, {\n      attributes: getArrowAttributes(opts)\n    }));\n  }\n\n  return Arrow2DGeometry;\n}(_core.Geometry);\n\nexports[\"default\"] = Arrow2DGeometry;\n\nfunction getArrowAttributes(_ref) {\n  var _ref$length = _ref.length,\n      length = _ref$length === void 0 ? 1 : _ref$length,\n      _ref$headSize = _ref.headSize,\n      headSize = _ref$headSize === void 0 ? 0.2 : _ref$headSize,\n      _ref$tailWidth = _ref.tailWidth,\n      tailWidth = _ref$tailWidth === void 0 ? 0.05 : _ref$tailWidth,\n      _ref$tailStart = _ref.tailStart,\n      tailStart = _ref$tailStart === void 0 ? 0.05 : _ref$tailStart;\n  var texCoords = [// HEAD\n  0.5, 1.0, 0, 0.5 - headSize / 2, 1.0 - headSize, 0, 0.5 + headSize / 2, 1.0 - headSize, 0, 0.5 - tailWidth / 2, tailStart, 0, 0.5 + tailWidth / 2, 1.0 - headSize, 0, 0.5 + tailWidth / 2, tailStart, 0, 0.5 - tailWidth / 2, tailStart, 0, 0.5 - tailWidth / 2, 1.0 - headSize, 0, 0.5 + tailWidth / 2, 1.0 - headSize, 0];\n  var normals = [0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1]; // Center and scale\n\n  var positions = new Array(texCoords.length);\n\n  for (var i = 0; i < texCoords.length / 3; i++) {\n    var i3 = i * 3;\n    positions[i3 + 0] = (texCoords[i3 + 0] - 0.5) * length;\n    positions[i3 + 1] = (texCoords[i3 + 1] - 0.5) * length;\n    positions[i3 + 2] = 0;\n  }\n\n  return {\n    positions: new Float32Array(positions),\n    normals: new Float32Array(normals),\n    texCoords: new Float32Array(texCoords)\n  };\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9sYXllcnMvcGF0aC1tYXJrZXItbGF5ZXIvYXJyb3ctMmQtZ2VvbWV0cnkudHMiXSwibmFtZXMiOlsiQXJyb3cyREdlb21ldHJ5Iiwib3B0cyIsIk9iamVjdCIsImFzc2lnbiIsImF0dHJpYnV0ZXMiLCJnZXRBcnJvd0F0dHJpYnV0ZXMiLCJHZW9tZXRyeSIsImxlbmd0aCIsImhlYWRTaXplIiwidGFpbFdpZHRoIiwidGFpbFN0YXJ0IiwidGV4Q29vcmRzIiwibm9ybWFscyIsInBvc2l0aW9ucyIsIkFycmF5IiwiaSIsImkzIiwiRmxvYXQzMkFycmF5Il0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBRXFCQSxlOzs7OztBQUNuQiw2QkFBdUI7QUFBQSxRQUFYQyxJQUFXLHVFQUFKLEVBQUk7O0FBQUE7O0FBQUEsNkJBRW5CQyxNQUFNLENBQUNDLE1BQVAsQ0FBYyxFQUFkLEVBQWtCRixJQUFsQixFQUF3QjtBQUN0QkcsTUFBQUEsVUFBVSxFQUFFQyxrQkFBa0IsQ0FBQ0osSUFBRDtBQURSLEtBQXhCLENBRm1CO0FBTXRCOzs7RUFQMENLLGM7Ozs7QUFVN0MsU0FBU0Qsa0JBQVQsT0FBZ0c7QUFBQSx5QkFBbEVFLE1BQWtFO0FBQUEsTUFBbEVBLE1BQWtFLDRCQUF6RCxDQUF5RDtBQUFBLDJCQUF0REMsUUFBc0Q7QUFBQSxNQUF0REEsUUFBc0QsOEJBQTNDLEdBQTJDO0FBQUEsNEJBQXRDQyxTQUFzQztBQUFBLE1BQXRDQSxTQUFzQywrQkFBMUIsSUFBMEI7QUFBQSw0QkFBcEJDLFNBQW9CO0FBQUEsTUFBcEJBLFNBQW9CLCtCQUFSLElBQVE7QUFDOUYsTUFBTUMsU0FBUyxHQUFHLENBQ2hCO0FBQ0EsS0FGZ0IsRUFHaEIsR0FIZ0IsRUFJaEIsQ0FKZ0IsRUFLaEIsTUFBTUgsUUFBUSxHQUFHLENBTEQsRUFNaEIsTUFBTUEsUUFOVSxFQU9oQixDQVBnQixFQVFoQixNQUFNQSxRQUFRLEdBQUcsQ0FSRCxFQVNoQixNQUFNQSxRQVRVLEVBVWhCLENBVmdCLEVBV2hCLE1BQU1DLFNBQVMsR0FBRyxDQVhGLEVBWWhCQyxTQVpnQixFQWFoQixDQWJnQixFQWNoQixNQUFNRCxTQUFTLEdBQUcsQ0FkRixFQWVoQixNQUFNRCxRQWZVLEVBZ0JoQixDQWhCZ0IsRUFpQmhCLE1BQU1DLFNBQVMsR0FBRyxDQWpCRixFQWtCaEJDLFNBbEJnQixFQW1CaEIsQ0FuQmdCLEVBb0JoQixNQUFNRCxTQUFTLEdBQUcsQ0FwQkYsRUFxQmhCQyxTQXJCZ0IsRUFzQmhCLENBdEJnQixFQXVCaEIsTUFBTUQsU0FBUyxHQUFHLENBdkJGLEVBd0JoQixNQUFNRCxRQXhCVSxFQXlCaEIsQ0F6QmdCLEVBMEJoQixNQUFNQyxTQUFTLEdBQUcsQ0ExQkYsRUEyQmhCLE1BQU1ELFFBM0JVLEVBNEJoQixDQTVCZ0IsQ0FBbEI7QUErQkEsTUFBTUksT0FBTyxHQUFHLENBQUMsQ0FBRCxFQUFJLENBQUosRUFBTyxDQUFQLEVBQVUsQ0FBVixFQUFhLENBQWIsRUFBZ0IsQ0FBaEIsRUFBbUIsQ0FBbkIsRUFBc0IsQ0FBdEIsRUFBeUIsQ0FBekIsRUFBNEIsQ0FBNUIsRUFBK0IsQ0FBL0IsRUFBa0MsQ0FBbEMsRUFBcUMsQ0FBckMsRUFBd0MsQ0FBeEMsRUFBMkMsQ0FBM0MsRUFBOEMsQ0FBOUMsRUFBaUQsQ0FBakQsRUFBb0QsQ0FBcEQsRUFBdUQsQ0FBdkQsRUFBMEQsQ0FBMUQsRUFBNkQsQ0FBN0QsRUFBZ0UsQ0FBaEUsRUFBbUUsQ0FBbkUsRUFBc0UsQ0FBdEUsRUFBeUUsQ0FBekUsRUFBNEUsQ0FBNUUsRUFBK0UsQ0FBL0UsQ0FBaEIsQ0FoQzhGLENBa0M5Rjs7QUFDQSxNQUFNQyxTQUFTLEdBQUcsSUFBSUMsS0FBSixDQUFVSCxTQUFTLENBQUNKLE1BQXBCLENBQWxCOztBQUNBLE9BQUssSUFBSVEsQ0FBQyxHQUFHLENBQWIsRUFBZ0JBLENBQUMsR0FBR0osU0FBUyxDQUFDSixNQUFWLEdBQW1CLENBQXZDLEVBQTBDUSxDQUFDLEVBQTNDLEVBQStDO0FBQzdDLFFBQU1DLEVBQUUsR0FBR0QsQ0FBQyxHQUFHLENBQWY7QUFDQUYsSUFBQUEsU0FBUyxDQUFDRyxFQUFFLEdBQUcsQ0FBTixDQUFULEdBQW9CLENBQUNMLFNBQVMsQ0FBQ0ssRUFBRSxHQUFHLENBQU4sQ0FBVCxHQUFvQixHQUFyQixJQUE0QlQsTUFBaEQ7QUFDQU0sSUFBQUEsU0FBUyxDQUFDRyxFQUFFLEdBQUcsQ0FBTixDQUFULEdBQW9CLENBQUNMLFNBQVMsQ0FBQ0ssRUFBRSxHQUFHLENBQU4sQ0FBVCxHQUFvQixHQUFyQixJQUE0QlQsTUFBaEQ7QUFDQU0sSUFBQUEsU0FBUyxDQUFDRyxFQUFFLEdBQUcsQ0FBTixDQUFULEdBQW9CLENBQXBCO0FBQ0Q7O0FBQ0QsU0FBTztBQUNMSCxJQUFBQSxTQUFTLEVBQUUsSUFBSUksWUFBSixDQUFpQkosU0FBakIsQ0FETjtBQUVMRCxJQUFBQSxPQUFPLEVBQUUsSUFBSUssWUFBSixDQUFpQkwsT0FBakIsQ0FGSjtBQUdMRCxJQUFBQSxTQUFTLEVBQUUsSUFBSU0sWUFBSixDQUFpQk4sU0FBakI7QUFITixHQUFQO0FBS0QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBHZW9tZXRyeSB9IGZyb20gJ0BsdW1hLmdsL2NvcmUnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBBcnJvdzJER2VvbWV0cnkgZXh0ZW5kcyBHZW9tZXRyeSB7XG4gIGNvbnN0cnVjdG9yKG9wdHMgPSB7fSkge1xuICAgIHN1cGVyKFxuICAgICAgT2JqZWN0LmFzc2lnbih7fSwgb3B0cywge1xuICAgICAgICBhdHRyaWJ1dGVzOiBnZXRBcnJvd0F0dHJpYnV0ZXMob3B0cyksXG4gICAgICB9KVxuICAgICk7XG4gIH1cbn1cblxuZnVuY3Rpb24gZ2V0QXJyb3dBdHRyaWJ1dGVzKHsgbGVuZ3RoID0gMSwgaGVhZFNpemUgPSAwLjIsIHRhaWxXaWR0aCA9IDAuMDUsIHRhaWxTdGFydCA9IDAuMDUgfSkge1xuICBjb25zdCB0ZXhDb29yZHMgPSBbXG4gICAgLy8gSEVBRFxuICAgIDAuNSxcbiAgICAxLjAsXG4gICAgMCxcbiAgICAwLjUgLSBoZWFkU2l6ZSAvIDIsXG4gICAgMS4wIC0gaGVhZFNpemUsXG4gICAgMCxcbiAgICAwLjUgKyBoZWFkU2l6ZSAvIDIsXG4gICAgMS4wIC0gaGVhZFNpemUsXG4gICAgMCxcbiAgICAwLjUgLSB0YWlsV2lkdGggLyAyLFxuICAgIHRhaWxTdGFydCxcbiAgICAwLFxuICAgIDAuNSArIHRhaWxXaWR0aCAvIDIsXG4gICAgMS4wIC0gaGVhZFNpemUsXG4gICAgMCxcbiAgICAwLjUgKyB0YWlsV2lkdGggLyAyLFxuICAgIHRhaWxTdGFydCxcbiAgICAwLFxuICAgIDAuNSAtIHRhaWxXaWR0aCAvIDIsXG4gICAgdGFpbFN0YXJ0LFxuICAgIDAsXG4gICAgMC41IC0gdGFpbFdpZHRoIC8gMixcbiAgICAxLjAgLSBoZWFkU2l6ZSxcbiAgICAwLFxuICAgIDAuNSArIHRhaWxXaWR0aCAvIDIsXG4gICAgMS4wIC0gaGVhZFNpemUsXG4gICAgMCxcbiAgXTtcblxuICBjb25zdCBub3JtYWxzID0gWzAsIDAsIDEsIDAsIDAsIDEsIDAsIDAsIDEsIDAsIDAsIDEsIDAsIDAsIDEsIDAsIDAsIDEsIDAsIDAsIDEsIDAsIDAsIDEsIDAsIDAsIDFdO1xuXG4gIC8vIENlbnRlciBhbmQgc2NhbGVcbiAgY29uc3QgcG9zaXRpb25zID0gbmV3IEFycmF5KHRleENvb3Jkcy5sZW5ndGgpO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IHRleENvb3Jkcy5sZW5ndGggLyAzOyBpKyspIHtcbiAgICBjb25zdCBpMyA9IGkgKiAzO1xuICAgIHBvc2l0aW9uc1tpMyArIDBdID0gKHRleENvb3Jkc1tpMyArIDBdIC0gMC41KSAqIGxlbmd0aDtcbiAgICBwb3NpdGlvbnNbaTMgKyAxXSA9ICh0ZXhDb29yZHNbaTMgKyAxXSAtIDAuNSkgKiBsZW5ndGg7XG4gICAgcG9zaXRpb25zW2kzICsgMl0gPSAwO1xuICB9XG4gIHJldHVybiB7XG4gICAgcG9zaXRpb25zOiBuZXcgRmxvYXQzMkFycmF5KHBvc2l0aW9ucyksXG4gICAgbm9ybWFsczogbmV3IEZsb2F0MzJBcnJheShub3JtYWxzKSxcbiAgICB0ZXhDb29yZHM6IG5ldyBGbG9hdDMyQXJyYXkodGV4Q29vcmRzKSxcbiAgfTtcbn1cbiJdfQ==","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports[\"default\"] = createPathMarkers;\n\nvar _math = require(\"math.gl\");\n\nfunction _createForOfIteratorHelper(o) { if (typeof Symbol === \"undefined\" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (o = _unsupportedIterableToArray(o))) { var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var it, normalCompletion = true, didErr = false, err; return { s: function s() { it = o[Symbol.iterator](); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it[\"return\"] != null) it[\"return\"](); } finally { if (didErr) throw err; } } }; }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(n); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction getLineLength(vPoints) {\n  // calculate total length\n  var lineLength = 0;\n\n  for (var i = 0; i < vPoints.length - 1; i++) {\n    lineLength += vPoints[i].distance(vPoints[i + 1]);\n  }\n\n  return lineLength;\n}\n\nvar DEFAULT_COLOR = [0, 0, 0, 255];\nvar DEFAULT_DIRECTION = {\n  forward: true,\n  backward: false\n};\n\nfunction createPathMarkers(_ref) {\n  var data = _ref.data,\n      _ref$getPath = _ref.getPath,\n      getPath = _ref$getPath === void 0 ? function (x) {\n    return x.path;\n  } : _ref$getPath,\n      _ref$getDirection = _ref.getDirection,\n      getDirection = _ref$getDirection === void 0 ? function (x) {\n    return x.direction;\n  } : _ref$getDirection,\n      _ref$getColor = _ref.getColor,\n      getColor = _ref$getColor === void 0 ? function (x) {\n    return DEFAULT_COLOR;\n  } : _ref$getColor,\n      _ref$getMarkerPercent = _ref.getMarkerPercentages,\n      getMarkerPercentages = _ref$getMarkerPercent === void 0 ? function (x, info) {\n    return [0.5];\n  } : _ref$getMarkerPercent,\n      projectFlat = _ref.projectFlat;\n  var markers = [];\n\n  var _iterator = _createForOfIteratorHelper(data),\n      _step;\n\n  try {\n    for (_iterator.s(); !(_step = _iterator.n()).done;) {\n      var object = _step.value;\n      var path = getPath(object);\n      var direction = getDirection(object) || DEFAULT_DIRECTION;\n      var color = getColor(object);\n      var vPoints = path.map(function (p) {\n        return new _math.Vector2(p);\n      });\n      var vPointsReverse = vPoints.slice(0).reverse(); // calculate total length\n\n      var lineLength = getLineLength(vPoints); // Ask for where to put markers\n      // @ts-ignore\n\n      var percentages = getMarkerPercentages(object, {\n        lineLength: lineLength\n      }); // Create the markers\n\n      var _iterator2 = _createForOfIteratorHelper(percentages),\n          _step2;\n\n      try {\n        for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n          var percentage = _step2.value;\n\n          if (direction.forward) {\n            var marker = createMarkerAlongPath({\n              path: vPoints,\n              percentage: percentage,\n              lineLength: lineLength,\n              color: color,\n              object: object,\n              projectFlat: projectFlat\n            });\n            markers.push(marker);\n          }\n\n          if (direction.backward) {\n            var _marker = createMarkerAlongPath({\n              path: vPointsReverse,\n              percentage: percentage,\n              lineLength: lineLength,\n              color: color,\n              object: object,\n              projectFlat: projectFlat\n            });\n\n            markers.push(_marker);\n          }\n        }\n      } catch (err) {\n        _iterator2.e(err);\n      } finally {\n        _iterator2.f();\n      }\n    }\n  } catch (err) {\n    _iterator.e(err);\n  } finally {\n    _iterator.f();\n  }\n\n  return markers;\n}\n\nfunction createMarkerAlongPath(_ref2) {\n  var path = _ref2.path,\n      percentage = _ref2.percentage,\n      lineLength = _ref2.lineLength,\n      color = _ref2.color,\n      object = _ref2.object,\n      projectFlat = _ref2.projectFlat;\n  var distanceAlong = lineLength * percentage;\n  var currentDistance = 0;\n  var previousDistance = 0;\n  var i = 0;\n\n  for (i = 0; i < path.length - 1; i++) {\n    currentDistance += path[i].distance(path[i + 1]);\n\n    if (currentDistance > distanceAlong) {\n      break;\n    }\n\n    previousDistance = currentDistance;\n  } // If reached the end of the loop without exiting early,\n  // undo the final increment to avoid a null-pointer exception\n\n\n  if (i === path.length - 1) {\n    i -= 1;\n  }\n\n  var vDirection = path[i + 1].clone().subtract(path[i]).normalize();\n  var along = distanceAlong - previousDistance;\n  var vCenter = vDirection.clone().multiply(new _math.Vector2(along, along)).add(path[i]);\n  var vDirection2 = new _math.Vector2(projectFlat(path[i + 1])).subtract(projectFlat(path[i]));\n  var angle = vDirection2.verticalAngle() * 180 / Math.PI;\n  return {\n    position: [vCenter.x, vCenter.y, 0],\n    angle: angle,\n    color: color,\n    object: object\n  };\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9sYXllcnMvcGF0aC1tYXJrZXItbGF5ZXIvY3JlYXRlLXBhdGgtbWFya2Vycy50cyJdLCJuYW1lcyI6WyJnZXRMaW5lTGVuZ3RoIiwidlBvaW50cyIsImxpbmVMZW5ndGgiLCJpIiwibGVuZ3RoIiwiZGlzdGFuY2UiLCJERUZBVUxUX0NPTE9SIiwiREVGQVVMVF9ESVJFQ1RJT04iLCJmb3J3YXJkIiwiYmFja3dhcmQiLCJjcmVhdGVQYXRoTWFya2VycyIsImRhdGEiLCJnZXRQYXRoIiwieCIsInBhdGgiLCJnZXREaXJlY3Rpb24iLCJkaXJlY3Rpb24iLCJnZXRDb2xvciIsImdldE1hcmtlclBlcmNlbnRhZ2VzIiwiaW5mbyIsInByb2plY3RGbGF0IiwibWFya2VycyIsIm9iamVjdCIsImNvbG9yIiwibWFwIiwicCIsIlZlY3RvcjIiLCJ2UG9pbnRzUmV2ZXJzZSIsInNsaWNlIiwicmV2ZXJzZSIsInBlcmNlbnRhZ2VzIiwicGVyY2VudGFnZSIsIm1hcmtlciIsImNyZWF0ZU1hcmtlckFsb25nUGF0aCIsInB1c2giLCJkaXN0YW5jZUFsb25nIiwiY3VycmVudERpc3RhbmNlIiwicHJldmlvdXNEaXN0YW5jZSIsInZEaXJlY3Rpb24iLCJjbG9uZSIsInN1YnRyYWN0Iiwibm9ybWFsaXplIiwiYWxvbmciLCJ2Q2VudGVyIiwibXVsdGlwbHkiLCJhZGQiLCJ2RGlyZWN0aW9uMiIsImFuZ2xlIiwidmVydGljYWxBbmdsZSIsIk1hdGgiLCJQSSIsInBvc2l0aW9uIiwieSJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBOzs7Ozs7OztBQUVBLFNBQVNBLGFBQVQsQ0FBdUJDLE9BQXZCLEVBQWdDO0FBQzlCO0FBQ0EsTUFBSUMsVUFBVSxHQUFHLENBQWpCOztBQUNBLE9BQUssSUFBSUMsQ0FBQyxHQUFHLENBQWIsRUFBZ0JBLENBQUMsR0FBR0YsT0FBTyxDQUFDRyxNQUFSLEdBQWlCLENBQXJDLEVBQXdDRCxDQUFDLEVBQXpDLEVBQTZDO0FBQzND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IGdldExpbmVMZW5ndGgodlBvaW50cykge1xuICAvLyBjYWxjdWxhdGUgdG90YWwgbGVuZ3RoXG4gIGxldCBsaW5lTGVuZ3RoID0gMDtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCB2UG9pbnRzLmxlbmd0aCAtIDE7IGkrKykge1xuICAgIGxpbmVMZW5ndGggKz0gdlBvaW50c1tpXS5kaXN0YW5jZSh2UG9pbnRzW2kgKyAxXSk7XG4gIH1cbiAgcmV0dXJuIGxpbmVMZW5ndGg7XG59XG5cbmNvbnN0IERFRkFVTFRfQ09MT1IgPSBbMCwgMCwgMCwgMjU1XTtcbmNvbnN0IERFRkFVTFRfRElSRUNUSU9OID0geyBmb3J3YXJkOiB0cnVlLCBiYWNrd2FyZDogZmFsc2UgfTtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gY3JlYXRlUGF0aE1hcmtlcnMoe1xuICBkYXRhLFxuICBnZXRQYXRoID0gKHgpID0+IHgucGF0aCxcbiAgZ2V0RGlyZWN0aW9uID0gKHgpID0+IHguZGlyZWN0aW9uLFxuICBnZXRDb2xvciA9ICh4KSA9PiBERUZBVUxUX0NPTE9SLFxuICBnZXRNYXJrZXJQZXJjZW50YWdlcyA9ICh4LCBpbmZvKSA9PiBbMC41XSxcbiAgcHJvamVjdEZsYXQsXG59KSB7XG4gIGNvbnN0IG1hcmtlcnMgPSBbXTtcblxuICBmb3IgKGNvbnN0IG9iamVjdCBvZiBkYXRhKSB7XG4gICAgY29uc3QgcGF0aCA9IGdldFBhdGgob2JqZWN0KTtcbiAgICBjb25zdCBkaXJlY3Rpb24gPSBnZXREaXJlY3Rpb24ob2JqZWN0KSB8fCBERUZBVUxUX0RJUkVDVElPTjtcbiAgICBjb25zdCBjb2xvciA9IGdldENvbG9yKG9iamVjdCk7XG5cbiAgICBjb25zdCB2UG9pbnRzID0gcGF0aC5tYXAoKHApID0+IG5ldyBWZWN0b3IyKHApKTtcbiAgICBjb25zdCB2UG9pbnRzUmV2ZXJzZSA9IHZQb2ludHMuc2xpY2UoMCkucmV2ZXJzZSgpO1xuXG4gICAgLy8gY2FsY3VsYXRlIHRvdGFsIGxlbmd0aFxuICAgIGNvbnN0IGxpbmVMZW5ndGggPSBnZXRMaW5lTGVuZ3RoKHZQb2ludHMpO1xuXG4gICAgLy8gQXNrIGZvciB3aGVyZSB0byBwdXQgbWFya2Vyc1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBjb25zdCBwZXJjZW50YWdlcyA9IGdldE1hcmtlclBlcmNlbnRhZ2VzKG9iamVjdCwgeyBsaW5lTGVuZ3RoIH0pO1xuXG4gICAgLy8gQ3JlYXRlIHRoZSBtYXJrZXJzXG4gICAgZm9yIChjb25zdCBwZXJjZW50YWdlIG9mIHBlcmNlbnRhZ2VzKSB7XG4gICAgICBpZiAoZGlyZWN0aW9uLmZvcndhcmQpIHtcbiAgICAgICAgY29uc3QgbWFya2VyID0gY3JlYXRlTWFya2VyQWxvbmdQYXRoKHtcbiAgICAgICAgICBwYXRoOiB2UG9pbnRzLFxuICAgICAgICAgIHBlcmNlbnRhZ2UsXG4gICAgICAgICAgbGluZUxlbmd0aCxcbiAgICAgICAgICBjb2xvcixcbiAgICAgICAgICBvYmplY3QsXG4gICAgICAgICAgcHJvamVjdEZsYXQsXG4gICAgICAgIH0pO1xuICAgICAgICBtYXJrZXJzLnB1c2gobWFya2VyKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGRpcmVjdGlvbi5iYWNrd2FyZCkge1xuICAgICAgICBjb25zdCBtYXJrZXIgPSBjcmVhdGVNYXJrZXJBbG9uZ1BhdGgoe1xuICAgICAgICAgIHBhdGg6IHZQb2ludHNSZXZlcnNlLFxuICAgICAgICAgIHBlcmNlbnRhZ2UsXG4gICAgICAgICAgbGluZUxlbmd0aCxcbiAgICAgICAgICBjb2xvcixcbiAgICAgICAgICBvYmplY3QsXG4gICAgICAgICAgcHJvamVjdEZsYXQsXG4gICAgICAgIH0pO1xuICAgICAgICBtYXJrZXJzLnB1c2gobWFya2VyKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gbWFya2Vycztcbn1cblxuZnVuY3Rpb24gY3JlYXRlTWFya2VyQWxvbmdQYXRoKHsgcGF0aCwgcGVyY2VudGFnZSwgbGluZUxlbmd0aCwgY29sb3IsIG9iamVjdCwgcHJvamVjdEZsYXQgfSkge1xuICBjb25zdCBkaXN0YW5jZUFsb25nID0gbGluZUxlbmd0aCAqIHBlcmNlbnRhZ2U7XG4gIGxldCBjdXJyZW50RGlzdGFuY2UgPSAwO1xuICBsZXQgcHJldmlvdXNEaXN0YW5jZSA9IDA7XG4gIGxldCBpID0gMDtcbiAgZm9yIChpID0gMDsgaSA8IHBhdGgubGVuZ3RoIC0gMTsgaSsrKSB7XG4gICAgY3VycmVudERpc3RhbmNlICs9IHBhdGhbaV0uZGlzdGFuY2UocGF0aFtpICsgMV0pO1xuICAgIGlmIChjdXJyZW50RGlzdGFuY2UgPiBkaXN0YW5jZUFsb25nKSB7XG4gICAgICBicmVhaztcbiAgICB9XG4gICAgcHJldmlvdXNEaXN0YW5jZSA9IGN1cnJlbnREaXN0YW5jZTtcbiAgfVxuXG4gIC8vIElmIHJlYWNoZWQgdGhlIGVuZCBvZiB0aGUgbG9vcCB3aXRob3V0IGV4aXRpbmcgZWFybHksXG4gIC8vIHVuZG8gdGhlIGZpbmFsIGluY3JlbWVudCB0byBhdm9pZCBhIG51bGwtcG9pbnRlciBleGNlcHRpb25cbiAgaWYgKGkgPT09IHBhdGgubGVuZ3RoIC0gMSkge1xuICAgIGkgLT0gMTtcbiAgfVxuXG4gIGNvbnN0IHZEaXJlY3Rpb24gPSBwYXRoW2kgKyAxXS5jbG9uZSgpLnN1YnRyYWN0KHBhdGhbaV0pLm5vcm1hbGl6ZSgpO1xuICBjb25zdCBhbG9uZyA9IGRpc3RhbmNlQWxvbmcgLSBwcmV2aW91c0Rpc3RhbmNlO1xuICBjb25zdCB2Q2VudGVyID0gdkRpcmVjdGlvbi5jbG9uZSgpLm11bHRpcGx5KG5ldyBWZWN0b3IyKGFsb25nLCBhbG9uZykpLmFkZChwYXRoW2ldKTtcblxuICBjb25zdCB2RGlyZWN0aW9uMiA9IG5ldyBWZWN0b3IyKHByb2plY3RGbGF0KHBhdGhbaSArIDFdKSkuc3VidHJhY3QocHJvamVjdEZsYXQocGF0aFtpXSkpO1xuXG4gIGNvbnN0IGFuZ2xlID0gKHZEaXJlY3Rpb24yLnZlcnRpY2FsQW5nbGUoKSAqIDE4MCkgLyBNYXRoLlBJO1xuXG4gIHJldHVybiB7IHBvc2l0aW9uOiBbdkNlbnRlci54LCB2Q2VudGVyLnksIDBdLCBhbmdsZSwgY29sb3IsIG9iamVjdCB9O1xufVxuIl19","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports[\"default\"] = void 0;\n\nvar _core = require(\"@deck.gl/core\");\n\nvar _layers = require(\"@deck.gl/layers\");\n\nvar _meshLayers = require(\"@deck.gl/mesh-layers\");\n\nvar _pathOutlineLayer = _interopRequireDefault(require(\"../path-outline-layer/path-outline-layer\"));\n\nvar _arrow2dGeometry = _interopRequireDefault(require(\"./arrow-2d-geometry\"));\n\nvar _createPathMarkers = _interopRequireDefault(require(\"./create-path-markers\"));\n\nvar _polyline = require(\"./polyline\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(n); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return; var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar DISTANCE_FOR_MULTI_ARROWS = 0.1;\nvar ARROW_HEAD_SIZE = 0.2;\nvar ARROW_TAIL_WIDTH = 0.05; // const ARROW_CENTER_ADJUST = -0.8;\n\nvar DEFAULT_MARKER_LAYER = _meshLayers.SimpleMeshLayer;\nvar DEFAULT_MARKER_LAYER_PROPS = {\n  mesh: new _arrow2dGeometry[\"default\"]({\n    headSize: ARROW_HEAD_SIZE,\n    tailWidth: ARROW_TAIL_WIDTH\n  })\n};\nvar defaultProps = Object.assign({}, _pathOutlineLayer[\"default\"].defaultProps, {\n  MarkerLayer: DEFAULT_MARKER_LAYER,\n  markerLayerProps: DEFAULT_MARKER_LAYER_PROPS,\n  sizeScale: 100,\n  fp64: false,\n  highlightIndex: -1,\n  highlightPoint: null,\n  getPath: function getPath(x) {\n    return x.path;\n  },\n  getColor: function getColor(x) {\n    return x.color;\n  },\n  getMarkerColor: function getMarkerColor(x) {\n    return [0, 0, 0, 255];\n  },\n  getDirection: function getDirection(x) {\n    return x.direction;\n  },\n  getMarkerPercentages: function getMarkerPercentages(object, _ref) {\n    var lineLength = _ref.lineLength;\n    return lineLength > DISTANCE_FOR_MULTI_ARROWS ? [0.25, 0.5, 0.75] : [0.5];\n  }\n});\n\nvar PathMarkerLayer = /*#__PURE__*/function (_CompositeLayer) {\n  _inherits(PathMarkerLayer, _CompositeLayer);\n\n  var _super = _createSuper(PathMarkerLayer);\n\n  function PathMarkerLayer() {\n    _classCallCheck(this, PathMarkerLayer);\n\n    return _super.apply(this, arguments);\n  }\n\n  _createClass(PathMarkerLayer, [{\n    key: \"initializeState\",\n    value: function initializeState() {\n      this.state = {\n        markers: [],\n        mesh: new _arrow2dGeometry[\"default\"]({\n          headSize: ARROW_HEAD_SIZE,\n          tailWidth: ARROW_TAIL_WIDTH\n        }),\n        closestPoint: null\n      };\n    } // @ts-ignore\n\n  }, {\n    key: \"projectFlat\",\n    value: function projectFlat(xyz, viewport, coordinateSystem, coordinateOrigin) {\n      if (coordinateSystem === _core.COORDINATE_SYSTEM.METER_OFFSETS) {\n        var _viewport$metersToLng = viewport.metersToLngLatDelta(xyz),\n            _viewport$metersToLng2 = _slicedToArray(_viewport$metersToLng, 2),\n            dx = _viewport$metersToLng2[0],\n            dy = _viewport$metersToLng2[1];\n\n        var _coordinateOrigin = _slicedToArray(coordinateOrigin, 2),\n            _x = _coordinateOrigin[0],\n            y = _coordinateOrigin[1];\n\n        return viewport.projectFlat([_x + dx, dy + y]);\n      } else if (coordinateSystem === _core.COORDINATE_SYSTEM.LNGLAT_OFFSETS) {\n        var _xyz = _slicedToArray(xyz, 2),\n            _dx = _xyz[0],\n            _dy = _xyz[1];\n\n        var _coordinateOrigin2 = _slicedToArray(coordinateOrigin, 2),\n            _x2 = _coordinateOrigin2[0],\n            _y = _coordinateOrigin2[1];\n\n        return viewport.projectFlat([_x2 + _dx, _dy + _y]);\n      }\n\n      return viewport.projectFlat(xyz);\n    }\n  }, {\n    key: \"updateState\",\n    value: function updateState(_ref2) {\n      var _this = this;\n\n      var props = _ref2.props,\n          oldProps = _ref2.oldProps,\n          changeFlags = _ref2.changeFlags;\n\n      if (changeFlags.dataChanged || changeFlags.updateTriggersChanged) {\n        var _this$props = this.props,\n            data = _this$props.data,\n            getPath = _this$props.getPath,\n            getDirection = _this$props.getDirection,\n            getMarkerColor = _this$props.getMarkerColor,\n            getMarkerPercentages = _this$props.getMarkerPercentages,\n            coordinateSystem = _this$props.coordinateSystem,\n            coordinateOrigin = _this$props.coordinateOrigin; // @ts-ignore\n\n        var viewport = this.context.viewport;\n\n        var projectFlat = function projectFlat(o) {\n          return _this.projectFlat(o, viewport, coordinateSystem, coordinateOrigin);\n        };\n\n        this.state.markers = (0, _createPathMarkers[\"default\"])({\n          data: data,\n          getPath: getPath,\n          getDirection: getDirection,\n          getColor: getMarkerColor,\n          getMarkerPercentages: getMarkerPercentages,\n          projectFlat: projectFlat\n        });\n\n        this._recalculateClosestPoint();\n      }\n\n      if (changeFlags.propsChanged) {\n        if (props.point !== oldProps.point) {\n          this._recalculateClosestPoint();\n        }\n      }\n    }\n  }, {\n    key: \"_recalculateClosestPoint\",\n    value: function _recalculateClosestPoint() {\n      var _this$props2 = this.props,\n          highlightPoint = _this$props2.highlightPoint,\n          highlightIndex = _this$props2.highlightIndex;\n\n      if (highlightPoint && highlightIndex >= 0) {\n        var object = this.props.data[highlightIndex];\n        var points = this.props.getPath(object);\n\n        var _getClosestPointOnPol = (0, _polyline.getClosestPointOnPolyline)({\n          points: points,\n          p: highlightPoint\n        }),\n            point = _getClosestPointOnPol.point;\n\n        this.state.closestPoints = [{\n          position: point\n        }];\n      } else {\n        this.state.closestPoints = [];\n      }\n    }\n  }, {\n    key: \"getPickingInfo\",\n    value: function getPickingInfo(_ref3) {\n      var info = _ref3.info;\n      return Object.assign(info, {\n        // override object with picked feature\n        object: info.object && info.object.path || info.object\n      });\n    }\n  }, {\n    key: \"renderLayers\",\n    value: function renderLayers() {\n      return [new _pathOutlineLayer[\"default\"](this.props, // @ts-ignore\n      this.getSubLayerProps({\n        id: 'paths',\n        // Note: data has to be passed explicitly like this to avoid being empty\n        data: this.props.data\n      })), new this.props.MarkerLayer(this.getSubLayerProps(Object.assign({}, this.props.markerLayerProps, {\n        id: 'markers',\n        data: this.state.markers,\n        getOrientation: function getOrientation(x) {\n          return [0, -x.angle, 0];\n        },\n        getColor: function getColor(x) {\n          return x.color;\n        },\n        sizeScale: this.props.sizeScale,\n        fp64: this.props.fp64,\n        pickable: false,\n        parameters: {\n          blend: false,\n          depthTest: false\n        }\n      }))), this.state.closestPoints && new _layers.ScatterplotLayer({\n        id: \"\".concat(this.props.id, \"-highlight\"),\n        data: this.state.closestPoints,\n        // @ts-ignore\n        fp64: this.props.fp64\n      })];\n    }\n  }]);\n\n  return PathMarkerLayer;\n}(_core.CompositeLayer);\n\nexports[\"default\"] = PathMarkerLayer;\n\n_defineProperty(PathMarkerLayer, \"layerName\", 'PathMarkerLayer');\n\n_defineProperty(PathMarkerLayer, \"defaultProps\", defaultProps);\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9sYXllcnMvcGF0aC1tYXJrZXItbGF5ZXIvcGF0aC1tYXJrZXItbGF5ZXIudHMiXSwibmFtZXMiOlsiRElTVEFOQ0VfRk9SX01VTFRJX0FSUk9XUyIsIkFSUk9XX0hFQURfU0laRSIsIkFSUk9XX1RBSUxfV0lEVEgiLCJERUZBVUxUX01BUktFUl9MQVlFUiIsIlNpbXBsZU1lc2hMYXllciIsIkRFRkFVTFRfTUFSS0VSX0xBWUVSX1BST1BTIiwibWVzaCIsIkFycm93MkRHZW9tZXRyeSIsImhlYWRTaXplIiwidGFpbFdpZHRoIiwiZGVmYXVsdFByb3BzIiwiT2JqZWN0IiwiYXNzaWduIiwiUGF0aE91dGxpbmVMYXllciIsIk1hcmtlckxheWVyIiwibWFya2VyTGF5ZXJQcm9wcyIsInNpemVTY2FsZSIsImZwNjQiLCJoaWdobGlnaHRJbmRleCIsImhpZ2hsaWdodFBvaW50IiwiZ2V0UGF0aCIsIngiLCJwYXRoIiwiZ2V0Q29sb3IiLCJjb2xvciIsImdldE1hcmtlckNvbG9yIiwiZ2V0RGlyZWN0aW9uIiwiZGlyZWN0aW9uIiwiZ2V0TWFya2VyUGVyY2VudGFnZXMiLCJvYmplY3QiLCJsaW5lTGVuZ3RoIiwiUGF0aE1hcmtlckxheWVyIiwic3RhdGUiLCJtYXJrZXJzIiwiY2xvc2VzdFBvaW50IiwieHl6Iiwidmlld3BvcnQiLCJjb29yZGluYXRlU3lzdGVtIiwiY29vcmRpbmF0ZU9yaWdpbiIsIkNPT1JESU5BVEVfU1lTVEVNIiwiTUVURVJfT0ZGU0VUUyIsIm1ldGVyc1RvTG5nTGF0RGVsdGEiLCJkeCIsImR5IiwieSIsInByb2plY3RGbGF0IiwiTE5HTEFUX09GRlNFVFMiLCJwcm9wcyIsIm9sZFByb3BzIiwiY2hhbmdlRmxhZ3MiLCJkYXRhQ2hhbmdlZCIsInVwZGF0ZVRyaWdnZXJzQ2hhbmdlZCIsImRhdGEiLCJjb250ZXh0IiwibyIsIl9yZWNhbGN1bGF0ZUNsb3Nlc3RQb2ludCIsInByb3BzQ2hhbmdlZCIsInBvaW50IiwicG9pbnRzIiwicCIsImNsb3Nlc3RQb2ludHMiLCJwb3NpdGlvbiIsImluZm8iLCJnZXRTdWJMYXllclByb3BzIiwiaWQiLCJnZXRPcmllbnRhdGlvbiIsImFuZ2xlIiwicGlja2FibGUiLCJwYXJhbWV0ZXJzIiwiYmxlbmQiLCJkZXB0aFRlc3QiLCJTY2F0dGVycGxvdExheWVyIiwiQ29tcG9zaXRlTGF5ZXIiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFFQTs7QUFDQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVBLElBQU1BLHlCQUF5QixHQUFHLEdBQWxDO0FBQ0EsSUFBTUMsZUFBZSxHQUFHLEdBQXhCO0FBQ0EsSUFBTUMsZ0JBQWdCLEdBQUcsSUFBekIsQyxDQUNBOztBQUVBLElBQU1DLG9CQUFvQixHQUFHQywyQkFBN0I7QUFlQSxJQUFNQywwQkFBMEIsR0FBRztBQUNqQ0MsRUFBQUEsSUFBSSxFQUFFLElBQUlDLDJCQUFKLENBQW9CO0FBQUVDLElBQUFBLFFBQVEsRUFBRVAsZUFBWjtBQUE2QlEsSUFBQUEsU0FBUyxFQUFFUDtBQUF4QyxHQUFwQjtBQUQyQixDQUFuQztBQUlBLElBQU1RLFlBQXVDLEdBQUdDLE1BQU0sQ0FBQ0MsTUFBUCxDQUFjLEVBQWQsRUFBa0JDLDZCQUFpQkgsWUFBbkMsRUFBaUQ7QUFDL0ZJLEVBQUFBLFdBQVcsRUFBRVgsb0JBRGtGO0FBRS9GWSxFQUFBQSxnQkFBZ0IsRUFBRVYsMEJBRjZFO0FBSS9GVyxFQUFBQSxTQUFTLEVBQUUsR0FKb0Y7QUFLL0ZDLEVBQUFBLElBQUksRUFBRSxLQUx5RjtBQU8vRkMsRUFBQUEsY0FBYyxFQUFFLENBQUMsQ0FQOEU7QUFRL0ZDLEVBQUFBLGNBQWMsRUFBRSxJQVIrRTtBQVUvRkMsRUFBQUEsT0FBTyxFQUFFLGlCQUFDQyxDQUFEO0FBQUEsV0FBT0EsQ0FBQyxDQUFDQyxJQUFUO0FBQUEsR0FWc0Y7QUFXL0ZDLEVBQUFBLFFBQVEsRUFBRSxrQkFBQ0Ys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LFFBQUFBLFNBQVMsRUFBRSxLQUFLK0IsS0FBTCxDQUFXL0IsU0FMdUI7QUFNN0NDLFFBQUFBLElBQUksRUFBRSxLQUFLOEIsS0FBTCxDQUFXOUIsSUFONEI7QUFPN0NrRCxRQUFBQSxRQUFRLEVBQUUsS0FQbUM7QUFRN0NDLFFBQUFBLFVBQVUsRUFBRTtBQUNWQyxVQUFBQSxLQUFLLEVBQUUsS0FERztBQUVWQyxVQUFBQSxTQUFTLEVBQUU7QUFGRDtBQVJpQyxPQUEvQyxDQURGLENBREYsQ0FWSyxFQTJCTCxLQUFLdEMsS0FBTCxDQUFXNEIsYUFBWCxJQUNFLElBQUlXLHdCQUFKLENBQXFCO0FBQ25CUCxRQUFBQSxFQUFFLFlBQUssS0FBS2pCLEtBQUwsQ0FBV2lCLEVBQWhCLGVBRGlCO0FBRW5CWixRQUFBQSxJQUFJLEVBQUUsS0FBS3BCLEtBQUwsQ0FBVzRCLGFBRkU7QUFHbkI7QUFDQTNDLFFBQUFBLElBQUksRUFBRSxLQUFLOEIsS0FBTCxDQUFXOUI7QUFKRSxPQUFyQixDQTVCRyxDQUFQO0FBbUNEOzs7O0VBcEgwQ3VELG9COzs7O2dCQUF4QnpDLGUsZUFDQSxpQjs7Z0JBREFBLGUsa0JBRUdyQixZIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9zaXRlTGF5ZXIsIENPT1JESU5BVEVfU1lTVEVNIH0gZnJvbSAnQGRlY2suZ2wvY29yZSc7XG5pbXBvcnQgeyBTY2F0dGVycGxvdExheWVyIH0gZnJvbSAnQGRlY2suZ2wvbGF5ZXJzJztcbmltcG9ydCB7IFNpbXBsZU1lc2hMYXllciB9IGZyb20gJ0BkZWNrLmdsL21lc2gtbGF5ZXJzJztcbmltcG9ydCBQYXRoT3V0bGluZUxheWVyLCB7IFBhdGhPdXRsaW5lTGF5ZXJQcm9wcyB9IGZyb20gJy4uL3BhdGgtb3V0bGluZS1sYXllci9wYXRoLW91dGxpbmUtbGF5ZXInO1xuaW1wb3J0IEFycm93MkRHZW9tZXRyeSBmcm9tICcuL2Fycm93LTJkLWdlb21ldHJ5JztcblxuaW1wb3J0IGNyZWF0ZVBhdGhNYXJrZXJzIGZyb20gJy4vY3JlYXRlLXBhdGgtbWFya2Vycyc7XG5pbXBvcnQgeyBnZXRDbG9zZXN0UG9pbnRPblBvbHlsaW5lIH0gZnJvbSAnLi9wb2x5bGluZSc7XG5cbmNvbnN0IERJU1RBTkNFX0ZPUl9NVUxUSV9BUlJPV1MgPSAwLjE7XG5jb25zdCBBUlJPV19IRUFEX1NJWkUgPSAwLjI7XG5jb25zdCBBUlJPV19UQUlMX1dJRFRIID0gMC4wNTtcbi8vIGNvbnN0IEFSUk9XX0NFTlRFUl9BREpVU1QgPSAtMC44O1xuXG5jb25zdCBERUZBVUxUX01BUktFUl9MQVlFUiA9IFNpbXBsZU1lc2hMYXllcjtcblxuZXhwb3J0IGludGVyZmFjZSBQYXRoTWFya2VyTGF5ZXJQcm9wczxEPiBleHRlbmRzIFBhdGhPdXRsaW5lTGF5ZXJQcm9wczxEPiB7XG4gIGdldERpcmVjdGlvbj86ICh4KSA9PiBhbnk7XG4gIGdldE1hcmtlckNvbG9yPzogKHgpID0+IG51bWJlcltdO1xuICBnZXRNYXJrZXJQZXJjZW50YWdlcz86ICh4OiBhbnksIGluZm86IGFueSkgPT4gbnVtYmVyW107XG4gIGhpZ2hsaWdodFBvaW50PzogYW55O1xuICBoaWdobGlnaHRJbmRleD86IG51bWJlcjtcbiAgTWFya2VyTGF5ZXI/OiBhbnk7XG4gIG1hcmtlckxheWVyUHJvcHM/OiBhbnk7XG4gIHNpemVTY2FsZT86IG51bWJlcjtcbiAgZnA2ND86IGJvb2xlYW47XG4gIG5lYnVsYUxheWVyPzogYW55O1xufVxuXG5jb25zdCBERUZBVUxUX01BUktFUl9MQVlFUl9QUk9QUyA9IHtcbiAgbWVzaDogbmV3IEFycm93MkRHZW9tZXRyeSh7IGhlYWRTaXplOiBBUlJPV19IRUFEX1NJWkUsIHRhaWxXaWR0aDogQVJST1dfVEFJTF9XSURUSCB9KSxcbn07XG5cbmNvbnN0IGRlZmF1bHRQcm9wczogUGF0aE1hcmtlckxheWVyUHJvcHM8YW55PiA9IE9iamVjdC5hc3NpZ24oe30sIFBhdGhPdXRsaW5lTGF5ZXIuZGVmYXVsdFByb3BzLCB7XG4gIE1hcmtlckxheWVyOiBERUZBVUxUX01BUktFUl9MQVlFUixcbiAgbWFya2VyTGF5ZXJQcm9wczogREVGQVVMVF9NQVJLRVJfTEFZRVJfUFJPUFMsXG5cbiAgc2l6ZVNjYWxlOiAxMDAsXG4gIGZwNjQ6IGZhbHNlLFxuXG4gIGhpZ2hsaWdodEluZGV4OiAtMSxcbiAgaGlnaGxpZ2h0UG9pbnQ6IG51bGwsXG5cbiAgZ2V0UGF0aDogKHgpID0+IHgucGF0aCxcbiAgZ2V0Q29sb3I6ICh4KSA9PiB4LmNvbG9yLFxuICBnZXRNYXJrZXJDb2xvcjogKHgpID0+IFswLCAwLCAwLCAyNTVdLFxuICBnZXREaXJlY3Rpb246ICh4KSA9PiB4LmRpcmVjdGlvbixcbiAgZ2V0TWFya2VyUGVyY2VudGFnZXM6IChvYmplY3QsIHsgbGluZUxlbmd0aCB9KSA9PlxuICAgIGxpbmVMZW5ndGggPiBESVNUQU5DRV9GT1JfTVVMVElfQVJST1dTID8gWzAuMjUsIDAuNSwgMC43NV0gOiBbMC41XSxcbn0pO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBQYXRoTWFya2VyTGF5ZXIgZXh0ZW5kcyBDb21wb3NpdGVMYXllcjxhbnksIFBhdGhNYXJrZXJMYXllclByb3BzPGFueT4+IHtcbiAgc3RhdGljIGxheWVyTmFtZSA9ICdQYXRoTWFya2VyTGF5ZXInO1xuICBzdGF0aWMgZGVmYXVsdFByb3BzID0gZGVmYXVsdFByb3BzO1xuXG4gIGluaXRpYWxpemVTdGF0ZSgpIHtcbiAgICB0aGlzLnN0YXRlID0ge1xuICAgICAgbWFya2VyczogW10sXG4gICAgICBtZXNoOiBuZXcgQXJyb3cyREdlb21ldHJ5KHsgaGVhZFNpemU6IEFSUk9XX0hFQURfU0laRSwgdGFpbFdpZHRoOiBBUlJPV19UQUlMX1dJRFRIIH0pLFxuICAgICAgY2xvc2VzdFBvaW50OiBudWxsLFxuICAgIH07XG4gIH1cbiAgLy8gQHRzLWlnbm9yZVxuICBwcm9qZWN0RmxhdCh4eXosIHZpZXdwb3J0LCBjb29yZGluYXRlU3lzdGVtLCBjb29yZGluYXRlT3JpZ2luKSB7XG4gICAgaWYgKGNvb3JkaW5hdGVTeXN0ZW0gPT09IENPT1JESU5BVEVfU1lTVEVNLk1FVEVSX09GRlNFVFMpIHtcbiAgICAgIGNvbnN0IFtkeCwgZHldID0gdmlld3BvcnQubWV0ZXJzVG9MbmdMYXREZWx0YSh4eXopO1xuICAgICAgY29uc3QgW3gsIHldID0gY29vcmRpbmF0ZU9yaWdpbjtcbiAgICAgIHJldHVybiB2aWV3cG9ydC5wcm9qZWN0RmxhdChbeCArIGR4LCBkeSArIHldKTtcbiAgICB9IGVsc2UgaWYgKGNvb3JkaW5hdGVTeXN0ZW0gPT09IENPT1JESU5BVEVfU1lTVEVNLkxOR0xBVF9PRkZTRVRTKSB7XG4gICAgICBjb25zdCBbZHgsIGR5XSA9IHh5ejtcbiAgICAgIGNvbnN0IFt4LCB5XSA9IGNvb3JkaW5hdGVPcmlnaW47XG4gICAgICByZXR1cm4gdmlld3BvcnQucHJvamVjdEZsYXQoW3ggKyBkeCwgZHkgKyB5XSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZpZXdwb3J0LnByb2plY3RGbGF0KHh5eik7XG4gIH1cblxuICB1cGRhdGVTdGF0ZSh7IHByb3BzLCBvbGRQcm9wcywgY2hhbmdlRmxhZ3MgfSkge1xuICAgIGlmIChjaGFuZ2VGbGFncy5kYXRhQ2hhbmdlZCB8fCBjaGFuZ2VGbGFncy51cGRhdGVUcmlnZ2Vyc0NoYW5nZWQpIHtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgZGF0YSxcbiAgICAgICAgZ2V0UGF0aCxcbiAgICAgICAgZ2V0RGlyZWN0aW9uLFxuICAgICAgICBnZXRNYXJrZXJDb2xvcixcbiAgICAgICAgZ2V0TWFya2VyUGVyY2VudGFnZXMsXG4gICAgICAgIGNvb3JkaW5hdGVTeXN0ZW0sXG4gICAgICAgIGNvb3JkaW5hdGVPcmlnaW4sXG4gICAgICB9ID0gdGhpcy5wcm9wcztcbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIGNvbnN0IHsgdmlld3BvcnQgfSA9IHRoaXMuY29udGV4dDtcbiAgICAgIGNvbnN0IHByb2plY3RGbGF0ID0gKG8pID0+IHRoaXMucHJvamVjdEZsYXQobywgdmlld3BvcnQsIGNvb3JkaW5hdGVTeXN0ZW0sIGNvb3JkaW5hdGVPcmlnaW4pO1xuICAgICAgdGhpcy5zdGF0ZS5tYXJrZXJzID0gY3JlYXRlUGF0aE1hcmtlcnMoe1xuICAgICAgICBkYXRhLFxuICAgICAgICBnZXRQYXRoLFxuICAgICAgICBnZXREaXJlY3Rpb24sXG4gICAgICAgIGdldENvbG9yOiBnZXRNYXJrZXJDb2xvcixcbiAgICAgICAgZ2V0TWFya2VyUGVyY2VudGFnZXMsXG4gICAgICAgIHByb2plY3RGbGF0LFxuICAgICAgfSk7XG4gICAgICB0aGlzLl9yZWNhbGN1bGF0ZUNsb3Nlc3RQb2ludCgpO1xuICAgIH1cbiAgICBpZiAoY2hhbmdlRmxhZ3MucHJvcHNDaGFuZ2VkKSB7XG4gICAgICBpZiAocHJvcHMucG9pbnQgIT09IG9sZFByb3BzLnBvaW50KSB7XG4gICAgICAgIHRoaXMuX3JlY2FsY3VsYXRlQ2xvc2VzdFBvaW50KCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgX3JlY2FsY3VsYXRlQ2xvc2VzdFBvaW50KCkge1xuICAgIGNvbnN0IHsgaGlnaGxpZ2h0UG9pbnQsIGhpZ2hsaWdodEluZGV4IH0gPSB0aGlzLnByb3BzO1xuICAgIGlmIChoaWdobGlnaHRQb2ludCAmJiBoaWdobGlnaHRJbmRleCA+PSAwKSB7XG4gICAgICBjb25zdCBvYmplY3QgPSB0aGlzLnByb3BzLmRhdGFbaGlnaGxpZ2h0SW5kZXhdO1xuICAgICAgY29uc3QgcG9pbnRzID0gdGhpcy5wcm9wcy5nZXRQYXRoKG9iamVjdCk7XG4gICAgICBjb25zdCB7IHBvaW50IH0gPSBnZXRDbG9zZXN0UG9pbnRPblBvbHlsaW5lKHsgcG9pbnRzLCBwOiBoaWdobGlnaHRQb2ludCB9KTtcbiAgICAgIHRoaXMuc3RhdGUuY2xvc2VzdFBvaW50cyA9IFtcbiAgICAgICAge1xuICAgICAgICAgIHBvc2l0aW9uOiBwb2ludCxcbiAgICAgICAgfSxcbiAgICAgIF07XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc3RhdGUuY2xvc2VzdFBvaW50cyA9IFtdO1xuICAgIH1cbiAgfVxuXG4gIGdldFBpY2tpbmdJbmZvKHsgaW5mbyB9KSB7XG4gICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oaW5mbywge1xuICAgICAgLy8gb3ZlcnJpZGUgb2JqZWN0IHdpdGggcGlja2VkIGZlYXR1cmVcbiAgICAgIG9iamVjdDogKGluZm8ub2JqZWN0ICYmIGluZm8ub2JqZWN0LnBhdGgpIHx8IGluZm8ub2JqZWN0LFxuICAgIH0pO1xuICB9XG5cbiAgcmVuZGVyTGF5ZXJzKCkge1xuICAgIHJldHVybiBbXG4gICAgICBuZXcgUGF0aE91dGxpbmVMYXllcihcbiAgICAgICAgdGhpcy5wcm9wcyxcbiAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICB0aGlzLmdldFN1YkxheWVyUHJvcHMoe1xuICAgICAgICAgIGlkOiAncGF0aHMnLFxuICAgICAgICAgIC8vIE5vdGU6IGRhdGEgaGFzIHRvIGJlIHBhc3NlZCBleHBsaWNpdGx5IGxpa2UgdGhpcyB0byBhdm9pZCBiZWluZyBlbXB0eVxuICAgICAgICAgIGRhdGE6IHRoaXMucHJvcHMuZGF0YSxcbiAgICAgICAgfSlcbiAgICAgICksXG4gICAgICBuZXcgdGhpcy5wcm9wcy5NYXJrZXJMYXllcihcbiAgICAgICAgdGhpcy5nZXRTdWJMYXllclByb3BzKFxuICAgICAgICAgIE9iamVjdC5hc3NpZ24oe30sIHRoaXMucHJvcHMubWFya2VyTGF5ZXJQcm9wcywge1xuICAgICAgICAgICAgaWQ6ICdtYXJrZXJzJyxcbiAgICAgICAgICAgIGRhdGE6IHRoaXMuc3RhdGUubWFya2VycyxcbiAgICAgICAgICAgIGdldE9yaWVudGF0aW9uOiAoeCkgPT4gWzAsIC14LmFuZ2xlLCAwXSxcbiAgICAgICAgICAgIGdldENvbG9yOiAoeCkgPT4geC5jb2xvcixcbiAgICAgICAgICAgIHNpemVTY2FsZTogdGhpcy5wcm9wcy5zaXplU2NhbGUsXG4gICAgICAgICAgICBmcDY0OiB0aGlzLnByb3BzLmZwNjQsXG4gICAgICAgICAgICBwaWNrYWJsZTogZmFsc2UsXG4gICAgICAgICAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICAgICAgICAgIGJsZW5kOiBmYWxzZSxcbiAgICAgICAgICAgICAgZGVwdGhUZXN0OiBmYWxzZSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSlcbiAgICAgICAgKVxuICAgICAgKSxcbiAgICAgIHRoaXMuc3RhdGUuY2xvc2VzdFBvaW50cyAmJlxuICAgICAgICBuZXcgU2NhdHRlcnBsb3RMYXllcih7XG4gICAgICAgICAgaWQ6IGAke3RoaXMucHJvcHMuaWR9LWhpZ2hsaWdodGAsXG4gICAgICAgICAgZGF0YTogdGhpcy5zdGF0ZS5jbG9zZXN0UG9pbnRzLFxuICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICBmcDY0OiB0aGlzLnByb3BzLmZwNjQsXG4gICAgICAgIH0pLFxuICAgIF07XG4gIH1cbn1cbiJdfQ==","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.getClosestPointOnLine = getClosestPointOnLine;\nexports.getClosestPointOnPolyline = getClosestPointOnPolyline;\n\nvar _math = require(\"math.gl\");\n\n// Return the closest point on a line segment\nfunction getClosestPointOnLine(_ref) {\n  var p = _ref.p,\n      p1 = _ref.p1,\n      p2 = _ref.p2,\n      _ref$clampToLine = _ref.clampToLine,\n      clampToLine = _ref$clampToLine === void 0 ? true : _ref$clampToLine;\n  var lineVector = new _math.Vector3(p2).subtract(p1);\n  var pointVector = new _math.Vector3(p).subtract(p1);\n  var dotProduct = lineVector.dot(pointVector);\n\n  if (clampToLine) {\n    dotProduct = (0, _math.clamp)(dotProduct, 0, 1);\n  } // @ts-ignore\n\n\n  return lineVector.lerp(dotProduct);\n} // Return the closest point on a line segment\n\n\nfunction getClosestPointOnPolyline(_ref2) {\n  var p = _ref2.p,\n      points = _ref2.points;\n  p = new _math.Vector3(p);\n  var pClosest = null;\n  var distanceSquared = Infinity;\n  var index = -1;\n\n  for (var i = 0; i < points.length - 1; ++i) {\n    var p1 = points[i];\n    var p2 = points[i + 1];\n    var pClosestOnLine = getClosestPointOnLine({\n      p: p,\n      p1: p1,\n      p2: p2\n    });\n    var distanceToLineSquared = p.distanceSquared(pClosestOnLine);\n\n    if (distanceToLineSquared < distanceSquared) {\n      distanceSquared = distanceToLineSquared;\n      pClosest = pClosestOnLine;\n      index = i;\n    }\n  }\n\n  return {\n    point: pClosest,\n    index: index,\n    p1: points[index],\n    p2: points[index + 1],\n    distanceSquared: distanceSquared,\n    distance: Math.sqrt(distanceSquared)\n  };\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9sYXllcnMvcGF0aC1tYXJrZXItbGF5ZXIvcG9seWxpbmUudHMiXSwibmFtZXMiOlsiZ2V0Q2xvc2VzdFBvaW50T25MaW5lIiwicCIsInAxIiwicDIiLCJjbGFtcFRvTGluZSIsImxpbmVWZWN0b3IiLCJWZWN0b3IzIiwic3VidHJhY3QiLCJwb2ludFZlY3RvciIsImRvdFByb2R1Y3QiLCJkb3QiLCJsZXJwIiwiZ2V0Q2xvc2VzdFBvaW50T25Qb2x5bGluZSIsInBvaW50cyIsInBDbG9zZXN0IiwiZGlzdGFuY2VTcXVhcmVkIiwiSW5maW5pdHkiLCJpbmRleCIsImkiLCJsZW5ndGgiLCJwQ2xvc2VzdE9uTGluZSIsImRpc3RhbmNlVG9MaW5lU3F1YXJlZCIsInBvaW50IiwiZGlzdGFuY2UiLCJNYXRoIiwic3FydCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQTs7QUFFQTtBQUNPLFNBQVNBLHFCQUFULE9BQWtFO0FBQUEsTUFBakNDLENBQWlDLFFBQWpDQSxDQUFpQztBQUFBLE1BQTlCQyxFQUE4QixRQUE5QkEsRUFBOEI7QUFBQSxNQUExQkMsRUFBMEIsUUFBMUJBLEVBQTBCO0FBQUEsOEJBQXRCQyxXQUFzQjtBQUFBLE1BQXRCQSxXQUFzQixpQ0FBUixJQUFRO0FBQ3ZFLE1BQU1DLFVBQVUsR0FBRyxJQUFJQyxhQUFKLENBQVlILEVBQVosRUFBZ0JJLFFBQWhCLENBQXlCTCxFQUF6QixDQUFuQjtBQUNBLE1BQU1NLFdBQVcsR0FBRyxJQUFJRixhQUFKLENBQVlMLENBQVosRUFBZU0sUUFBZixDQUF3QkwsRUFBeEIsQ0FBcEI7QUFDQSxNQUFJTyxVQUFVLEdBQUdKLFVBQVUsQ0FBQ0ssR0FBWCxDQUFlRixXQUFmLENBQWpCOztBQUNBLE1BQUlKLFdBQUosRUFBaUI7QUFDZkssSUFBQUEsVUFBVSxHQUFHLGlCQUFNQSxVQUFOLEVBQWtCLENBQWxCLEVBQXFCLENBQXJCLENBQWI7QUFDRCxHQU5zRSxDQU92RTs7O0FBQ0EsU0FBT0osVUFBVSxDQUFDTSxJQUFYLENBQWdCRixVQUFoQixDQUFQO0FBQ0QsQyxDQUVEOzs7QUFDTyxTQUFTRyx5QkFBVCxRQUFrRDtBQUFBLE1BQWJYLENBQWEsU0FBYkEsQ0FBYTtBQUFBLE1BQVZZLE1BQVUsU0FBVkEsTUFBVTtBQUN2RFosRUFBQUEsQ0FBQyxHQUFHLElBQUlLLGFBQUosQ0FBWUwsQ0FBWixDQUFKO0FBQ0EsTUFBSWEsUUFBUSxHQUFHLElBQWY7QUFDQSxNQUFJQyxlQUFlLEdBQUdDLFFBQXRCO0FBQ0EsTUFBSUMsS0FBSyxHQUFHLENBQUMsQ0FBYjs7QUFDQSxPQUFLLElBQUlDLENBQUMsR0FBRyxDQUFiLEVBQWdCQSxDQUFDLEdBQUdMLE1BQU0sQ0FBQ00sTUFBUCxHQUFnQixDQUFwQyxFQUF1QyxFQUFFRCxDQUF6QyxFQUE0QztBQUMxQyxRQUFNaEIsRUFBRSxHQUFHVyxNQUFNLENBQUNLLENBQUQsQ0FBakI7QUFDQSxRQUFNZixFQUFFLEdBQUdVLE1BQU0sQ0FBQ0ssQ0FBQyxHQUFHLENBQUwsQ0FBakI7QUFDQSxRQUFNRSxjQUFjLEdBQUdwQixxQkFBcUIsQ0FBQztBQUFFQyxNQUFBQSxDQUFDLEVBQURBLENBQUY7QUFBS0MsTUFBQUEsRUFBRSxFQUFGQSxFQUFMO0FBQVNDLE1BQUFBLEVBQUUsRUFBRkE7QUFBVCxLQUFELENBQTVDO0FBQ0EsUUFBTWtCLHFCQUFxQixHQUFHcEIsQ0FBQyxDQUFDYyxlQUFGLENBQWtCSyxjQUFsQixDQUE5Qjs7QUFDQSxRQUFJQyxxQkFBcUIsR0FBR04sZUFBNUIsRUFBNkM7QUFDM0NBLE1BQUFBLGVBQWUsR0FBR00scUJBQWxCO0FBQ0FQLE1BQUFBLFFBQVEsR0FBR00sY0FBWDtBQUNBSCxNQUFBQSxLQUFLLEdBQUdDLENBQVI7QUFDRDtBQUNGOztBQUNELFNBQU87QUFDTEksSUFBQUEsS0FBSyxFQUFFUixRQURGO0FBRUxHLElBQUFBLEtBQUssRUFBTEEsS0FGSztBQUdMZixJQUFBQSxFQUFFLEVBQUVXLE1BQU0sQ0FBQ0ksS0FBRCxDQUhMO0FBSUxkLElBQUFBLEVBQUUsRUFBRVUsTUFBTSxDQUFDSSxLQUFLLEdBQUcsQ0FBVCxDQUpMO0FBS0xGLElBQUFBLGVBQWUsRUFBZkEsZUFMSztBQU1MUSxJQUFBQSxRQUFRLEVBQUVDLElBQUksQ0FBQ0MsSUFBTCxDQUFVVixlQUFWO0FBTkwsR0FBUDtBQVFEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVmVjdG9yMywgY2xhbXAgfSBmcm9tICdtYXRoLmdsJztcblxuLy8gUmV0dXJuIHRoZSBjbG9zZXN0IHBvaW50IG9uIGEgbGluZSBzZWdtZW50XG5leHBvcnQgZnVuY3Rpb24gZ2V0Q2xvc2VzdFBvaW50T25MaW5lKHsgcCwgcDEsIHAyLCBjbGFtcFRvTGluZSA9IHRydWUgfSkge1xuICBjb25zdCBsaW5lVmVjdG9yID0gbmV3IFZlY3RvcjMocDIpLnN1YnRyYWN0KHAxKTtcbiAgY29uc3QgcG9pbnRWZWN0b3IgPSBuZXcgVmVjdG9yMyhwKS5zdWJ0cmFjdChwMSk7XG4gIGxldCBkb3RQcm9kdWN0ID0gbGluZVZlY3Rvci5kb3QocG9pbnRWZWN0b3IpO1xuICBpZiAoY2xhbXBUb0xpbmUpIHtcbiAgICBkb3RQcm9kdWN0ID0gY2xhbXAoZG90UHJvZHVjdCwgMCwgMSk7XG4gIH1cbiAgLy8gQHRzLWlnbm9yZVxuICByZXR1cm4gbGluZVZlY3Rvci5sZXJwKGRvdFByb2R1Y3QpO1xufVxuXG4vLyBSZXR1cm4gdGhlIGNsb3Nlc3QgcG9pbnQgb24gYSBsaW5lIHNlZ21lbnRcbmV4cG9ydCBmdW5jdGlvbiBnZXRDbG9zZXN0UG9pbnRPblBvbHlsaW5lKHsgcCwgcG9pbnRzIH0pIHtcbiAgcCA9IG5ldyBWZWN0b3IzKHApO1xuICBsZXQgcENsb3Nlc3QgPSBudWxsO1xuICBsZXQgZGlzdGFuY2VTcXVhcmVkID0gSW5maW5pdHk7XG4gIGxldCBpbmRleCA9IC0xO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IHBvaW50cy5sZW5ndGggLSAxOyArK2kpIHtcbiAgICBjb25zdCBwMSA9IHBvaW50c1tpXTtcbiAgICBjb25zdCBwMiA9IHBvaW50c1tpICsgMV07XG4gICAgY29uc3QgcENsb3Nlc3RPbkxpbmUgPSBnZXRDbG9zZXN0UG9pbnRPbkxpbmUoeyBwLCBwMSwgcDIgfSk7XG4gICAgY29uc3QgZGlzdGFuY2VUb0xpbmVTcXVhcmVkID0gcC5kaXN0YW5jZVNxdWFyZWQocENsb3Nlc3RPbkxpbmUpO1xuICAgIGlmIChkaXN0YW5jZVRvTGluZVNxdWFyZWQgPCBkaXN0YW5jZVNxdWFyZWQpIHtcbiAgICAgIGRpc3RhbmNlU3F1YXJlZCA9IGRpc3RhbmNlVG9MaW5lU3F1YXJlZDtcbiAgICAgIHBDbG9zZXN0ID0gcENsb3Nlc3RPbkxpbmU7XG4gICAgICBpbmRleCA9IGk7XG4gICAgfVxuICB9XG4gIHJldHVybiB7XG4gICAgcG9pbnQ6IHBDbG9zZXN0LFxuICAgIGluZGV4LFxuICAgIHAxOiBwb2ludHNbaW5kZXhdLFxuICAgIHAyOiBwb2ludHNbaW5kZXggKyAxXSxcbiAgICBkaXN0YW5jZVNxdWFyZWQsXG4gICAgZGlzdGFuY2U6IE1hdGguc3FydChkaXN0YW5jZVNxdWFyZWQpLFxuICB9O1xufVxuIl19","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports[\"default\"] = void 0;\n\nvar _layers = require(\"@deck.gl/layers\");\n\nvar _constants = _interopRequireDefault(require(\"@luma.gl/constants\"));\n\nvar _core = require(\"@luma.gl/core\");\n\nvar _outline = _interopRequireDefault(require(\"../../shaderlib/outline/outline\"));\n\nvar _constants2 = require(\"../../constants\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _get(target, property, receiver) { if (typeof Reflect !== \"undefined\" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return _get(target, property, receiver || target); }\n\nfunction _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; }\n\nfunction _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n// TODO - this should be built into assembleShaders\nfunction injectShaderCode(_ref) {\n  var source = _ref.source,\n      _ref$code = _ref.code,\n      code = _ref$code === void 0 ? '' : _ref$code;\n  var INJECT_CODE = /}[^{}]*$/;\n  return source.replace(INJECT_CODE, code.concat('\\n}\\n'));\n}\n\nvar VS_CODE = \"  outline_setUV(gl_Position);\\n  outline_setZLevel(instanceZLevel);\\n\";\nvar FS_CODE = \"  gl_FragColor = outline_filterColor(gl_FragColor);\\n\";\nvar defaultProps = {\n  getZLevel: function getZLevel() {\n    return 0;\n  }\n};\n\nvar PathOutlineLayer = /*#__PURE__*/function (_PathLayer) {\n  _inherits(PathOutlineLayer, _PathLayer);\n\n  var _super = _createSuper(PathOutlineLayer);\n\n  function PathOutlineLayer() {\n    _classCallCheck(this, PathOutlineLayer);\n\n    return _super.apply(this, arguments);\n  }\n\n  _createClass(PathOutlineLayer, [{\n    key: \"getShaders\",\n    // Override getShaders to inject the outline module\n    value: function getShaders() {\n      var shaders = _get(_getPrototypeOf(PathOutlineLayer.prototype), \"getShaders\", this).call(this);\n\n      return Object.assign({}, shaders, {\n        modules: shaders.modules.concat([_outline[\"default\"]]),\n        vs: injectShaderCode({\n          source: shaders.vs,\n          code: VS_CODE\n        }),\n        fs: injectShaderCode({\n          source: shaders.fs,\n          code: FS_CODE\n        })\n      });\n    }\n  }, {\n    key: \"initializeState\",\n    value: function initializeState(context) {\n      _get(_getPrototypeOf(PathOutlineLayer.prototype), \"initializeState\", this).call(this, context); // Create an outline \"shadow\" map\n      // TODO - we should create a single outlineMap for all layers\n\n\n      this.setState({\n        outlineFramebuffer: new _core.Framebuffer(context.gl),\n        dummyTexture: new _core.Texture2D(context.gl)\n      }); // Create an attribute manager\n\n      this.state.attributeManager.addInstanced({\n        instanceZLevel: {\n          size: 1,\n          type: _constants[\"default\"].UNSIGNED_BYTE,\n          accessor: 'getZLevel'\n        }\n      });\n    } // Override draw to add render module\n\n  }, {\n    key: \"draw\",\n    value: function draw(_ref2) {\n      var _ref2$moduleParameter = _ref2.moduleParameters,\n          moduleParameters = _ref2$moduleParameter === void 0 ? {} : _ref2$moduleParameter,\n          parameters = _ref2.parameters,\n          uniforms = _ref2.uniforms,\n          context = _ref2.context;\n      // Need to calculate same uniforms as base layer\n      var _this$props = this.props,\n          jointRounded = _this$props.jointRounded,\n          capRounded = _this$props.capRounded,\n          billboard = _this$props.billboard,\n          miterLimit = _this$props.miterLimit,\n          widthUnits = _this$props.widthUnits,\n          widthScale = _this$props.widthScale,\n          widthMinPixels = _this$props.widthMinPixels,\n          widthMaxPixels = _this$props.widthMaxPixels;\n      uniforms = Object.assign({}, uniforms, {\n        jointType: Number(jointRounded),\n        capType: Number(capRounded),\n        billboard: billboard,\n        widthUnits: _constants2.UNIT[widthUnits],\n        widthScale: widthScale,\n        miterLimit: miterLimit,\n        widthMinPixels: widthMinPixels,\n        widthMaxPixels: widthMaxPixels\n      }); // Render the outline shadowmap (based on segment z orders)\n\n      var _this$state = this.state,\n          outlineFramebuffer = _this$state.outlineFramebuffer,\n          dummyTexture = _this$state.dummyTexture;\n      outlineFramebuffer.resize();\n      outlineFramebuffer.clear({\n        color: true,\n        depth: true\n      });\n      this.state.model.updateModuleSettings({\n        outlineEnabled: true,\n        outlineRenderShadowmap: true,\n        outlineShadowmap: dummyTexture\n      });\n      this.state.model.draw({\n        uniforms: Object.assign({}, uniforms, {\n          jointType: 0,\n          widthScale: this.props.widthScale * 1.3\n        }),\n        parameters: {\n          depthTest: false,\n          // Biggest value needs to go into buffer\n          blendEquation: _constants[\"default\"].MAX\n        },\n        framebuffer: outlineFramebuffer\n      }); // Now use the outline shadowmap to render the lines (with outlines)\n\n      this.state.model.updateModuleSettings({\n        outlineEnabled: true,\n        outlineRenderShadowmap: false,\n        outlineShadowmap: outlineFramebuffer\n      });\n      this.state.model.draw({\n        uniforms: Object.assign({}, uniforms, {\n          jointType: Number(jointRounded),\n          capType: Number(capRounded),\n          widthScale: this.props.widthScale\n        }),\n        parameters: {\n          depthTest: false\n        }\n      });\n    }\n  }]);\n\n  return PathOutlineLayer;\n}(_layers.PathLayer);\n\nexports[\"default\"] = PathOutlineLayer;\n\n_defineProperty(PathOutlineLayer, \"layerName\", 'PathOutlineLayer');\n\n_defineProperty(PathOutlineLayer, \"defaultProps\", defaultProps);\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9sYXllcnMvcGF0aC1vdXRsaW5lLWxheWVyL3BhdGgtb3V0bGluZS1sYXllci50cyJdLCJuYW1lcyI6WyJpbmplY3RTaGFkZXJDb2RlIiwic291cmNlIiwiY29kZSIsIklOSkVDVF9DT0RFIiwicmVwbGFjZSIsImNvbmNhdCIsIlZTX0NPREUiLCJGU19DT0RFIiwiZGVmYXVsdFByb3BzIiwiZ2V0WkxldmVsIiwiUGF0aE91dGxpbmVMYXllciIsInNoYWRlcnMiLCJPYmplY3QiLCJhc3NpZ24iLCJtb2R1bGVzIiwib3V0bGluZSIsInZzIiwiZnMiLCJjb250ZXh0Iiwic2V0U3RhdGUiLCJvdXRsaW5lRnJhbWVidWZmZXIiLCJGcmFtZWJ1ZmZlciIsImdsIiwiZHVtbXlUZXh0dXJlIiwiVGV4dHVyZTJEIiwic3RhdGUiLCJhdHRyaWJ1dGVNYW5hZ2VyIiwiYWRkSW5zdGFuY2VkIiwiaW5zdGFuY2VaTGV2ZWwiLCJzaXplIiwidHlwZSIsIkdMIiwiVU5TSUdORURfQllURSIsImFjY2Vzc29yIiwibW9kdWxlUGFyYW1ldGVycyIsInBhcmFtZXRlcnMiLCJ1bmlmb3JtcyIsInByb3BzIiwiam9pbnRSb3VuZGVkIiwiY2FwUm91bmRlZCIsImJpbGxib2FyZCIsIm1pdGVyTGltaXQiLCJ3aWR0aFVuaXRzIiwid2lkdGhTY2FsZSIsIndpZHRoTWluUGl4ZWxzIiwid2lkdGhNYXhQaXhlbHMiLCJqb2ludFR5cGUiLCJOdW1iZXIiLCJjYXBUeXBlIiwiVU5JVCIsInJlc2l6ZSIsImNsZWFyIiwiY29sb3IiLCJkZXB0aCIsIm1vZGVsIiwidXBkYXRlTW9kdWxlU2V0dGluZ3MiLCJvdXRsaW5lRW5hYmxlZCIsIm91dGxpbmVSZW5kZXJTaGFkb3dtYXAiLCJvdXRsaW5lU2hhZG93bWFwIiwiZHJhdyIsImRlcHRoVGVzdCIsImJsZW5kRXF1YXRpb24iLCJNQVgiLCJmcmFtZWJ1ZmZlciIsIlBhdGhMYXllciJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFB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S0FERDtBQUVWO0FBQ0FDLFVBQUFBLGFBQWEsRUFBRTlCLHNCQUFHK0I7QUFIUixTQUxRO0FBVXBCQyxRQUFBQSxXQUFXLEVBQUUzQztBQVZPLE9BQXRCLEVBbkM2RCxDQWdEN0Q7O0FBQ0EsV0FBS0ssS0FBTCxDQUFXNkIsS0FBWCxDQUFpQkMsb0JBQWpCLENBQXNDO0FBQ3BDQyxRQUFBQSxjQUFjLEVBQUUsSUFEb0I7QUFFcENDLFFBQUFBLHNCQUFzQixFQUFFLEtBRlk7QUFHcENDLFFBQUFBLGdCQUFnQixFQUFFdEM7QUFIa0IsT0FBdEM7QUFLQSxXQUFLSyxLQUFMLENBQVc2QixLQUFYLENBQWlCSyxJQUFqQixDQUFzQjtBQUNwQnZCLFFBQUFBLFFBQVEsRUFBRXhCLE1BQU0sQ0FBQ0MsTUFBUCxDQUFjLEVBQWQsRUFBa0J1QixRQUFsQixFQUE0QjtBQUNwQ1UsVUFBQUEsU0FBUyxFQUFFQyxNQUFNLENBQUNULFlBQUQsQ0FEbUI7QUFFcENVLFVBQUFBLE9BQU8sRUFBRUQsTUFBTSxDQUFDUixVQUFELENBRnFCO0FBR3BDSSxVQUFBQSxVQUFVLEVBQUUsS0FBS04sS0FBTCxDQUFXTTtBQUhhLFNBQTVCLENBRFU7QUFNcEJSLFFBQUFBLFVBQVUsRUFBRTtBQUNWeUIsVUFBQUEsU0FBUyxFQUFFO0FBREQ7QUFOUSxPQUF0QjtBQVVEOzs7O0VBbkdPSSxpQjs7OztnQkFIV3RELGdCLGVBSUEsa0I7O2dCQUpBQSxnQixrQkFLR0YsWSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBhdGhMYXllciB9IGZyb20gJ0BkZWNrLmdsL2xheWVycyc7XG5pbXBvcnQgeyBQYXRoTGF5ZXJQcm9wcyB9IGZyb20gJ0BkZWNrLmdsL2xheWVycy9wYXRoLWxheWVyL3BhdGgtbGF5ZXInO1xuaW1wb3J0IEdMIGZyb20gJ0BsdW1hLmdsL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBGcmFtZWJ1ZmZlciwgVGV4dHVyZTJEIH0gZnJvbSAnQGx1bWEuZ2wvY29yZSc7XG5pbXBvcnQgb3V0bGluZSBmcm9tICcuLi8uLi9zaGFkZXJsaWIvb3V0bGluZS9vdXRsaW5lJztcbmltcG9ydCB7IFVOSVQgfSBmcm9tICcuLi8uLi9jb25zdGFudHMnO1xuXG4vLyBUT0RPIC0gdGhpcyBzaG91bGQgYmUgYnVpbHQgaW50byBhc3NlbWJsZVNoYWRlcnNcbmZ1bmN0aW9uIGluamVjdFNoYWRlckNvZGUoeyBzb3VyY2UsIGNvZGUgPSAnJyB9KSB7XG4gIGNvbnN0IElOSkVDVF9DT0RFID0gL31bXnt9XSokLztcbiAgcmV0dXJuIHNvdXJjZS5yZXBsYWNlKElOSkVDVF9DT0RFLCBjb2RlLmNvbmNhdCgnXFxufVxcbicpKTtcbn1cblxuY29uc3QgVlNfQ09ERSA9IGBcXFxuICBvdXRsaW5lX3NldFVWKGdsX1Bvc2l0aW9uKTtcbiAgb3V0bGluZV9zZXRaTGV2ZWwoaW5zdGFuY2VaTGV2ZWwpO1xuYDtcblxuY29uc3QgRlNfQ09ERSA9IGBcXFxuICBnbF9GcmFnQ29sb3IgPSBvdXRsaW5lX2ZpbHRlckNvbG9yKGdsX0ZyYWdDb2xvcik7XG5gO1xuXG5leHBvcnQgaW50ZXJmYWNlIFBhdGhPdXRsaW5lTGF5ZXJQcm9wczxEPiBleHRlbmRzIFBhdGhMYXllclByb3BzPEQ+IHtcbiAgZGFzaEp1c3RpZmllZD86IGJvb2xlYW47XG4gIGdldERhc2hBcnJheT86IFtudW1iZXIsIG51bWJlcl0gfCAoKGQ6IEQpID0+IFtudW1iZXIsIG51bWJlcl0gfCBudWxsKTtcbiAgZ2V0WkxldmVsPzogKGQ6IEQsIGluZGV4OiBudW1iZXIpID0+IG51bWJlcjtcbn1cblxuY29uc3QgZGVmYXVsdFByb3BzOiBQYXRoT3V0bGluZUxheWVyUHJvcHM8YW55PiA9IHtcbiAgZ2V0WkxldmVsOiAoKSA9PiAwLFxufTtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUGF0aE91dGxpbmVMYXllcjxcbiAgRCxcbiAgUCBleHRlbmRzIFBhdGhPdXRsaW5lTGF5ZXJQcm9wczxEPiA9IFBhdGhPdXRsaW5lTGF5ZXJQcm9wczxEPlxuPiBleHRlbmRzIFBhdGhMYXllcjxELCBQPiB7XG4gIHN0YXRpYyBsYXllck5hbWUgPSAnUGF0aE91dGxpbmVMYXllcic7XG4gIHN0YXRpYyBkZWZhdWx0UHJvcHMgPSBkZWZhdWx0UHJvcHM7XG5cbiAgLy8gT3ZlcnJpZGUgZ2V0U2hhZGVycyB0byBpbmplY3QgdGhlIG91dGxpbmUgbW9kdWxlXG4gIGdldFNoYWRlcnMoKSB7XG4gICAgY29uc3Qgc2hhZGVycyA9IHN1cGVyLmdldFNoYWRlcnMoKTtcbiAgICByZXR1cm4gT2JqZWN0LmFzc2lnbih7fSwgc2hhZGVycywge1xuICAgICAgbW9kdWxlczogc2hhZGVycy5tb2R1bGVzLmNvbmNhdChbb3V0bGluZV0pLFxuICAgICAgdnM6IGluamVjdFNoYWRlckNvZGUoeyBzb3VyY2U6IHNoYWRlcnMudnMsIGNvZGU6IFZTX0NPREUgfSksXG4gICAgICBmczogaW5qZWN0U2hhZGVyQ29kZSh7IHNvdXJjZTogc2hhZGVycy5mcywgY29kZTogRlNfQ09ERSB9KSxcbiAgICB9KTtcbiAgfVxuXG4gIGluaXRpYWxpemVTdGF0ZShjb250ZXh0OiBhbnkpIHtcbiAgICBzdXBlci5pbml0aWFsaXplU3RhdGUoY29udGV4dCk7XG5cbiAgICAvLyBDcmVhdGUgYW4gb3V0bGluZSBcInNoYWRvd1wiIG1hcFxuICAgIC8vIFRPRE8gLSB3ZSBzaG91bGQgY3JlYXRlIGEgc2luZ2xlIG91dGxpbmVNYXAgZm9yIGFsbCBsYXllcnNcbiAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgIG91dGxpbmVGcmFtZWJ1ZmZlcjogbmV3IEZyYW1lYnVmZmVyKGNvbnRleHQuZ2wpLFxuICAgICAgZHVtbXlUZXh0dXJlOiBuZXcgVGV4dHVyZTJEKGNvbnRleHQuZ2wpLFxuICAgIH0pO1xuXG4gICAgLy8gQ3JlYXRlIGFuIGF0dHJpYnV0ZSBtYW5hZ2VyXG4gICAgdGhpcy5zdGF0ZS5hdHRyaWJ1dGVNYW5hZ2VyLmFkZEluc3RhbmNlZCh7XG4gICAgICBpbnN0YW5jZVpMZXZlbDoge1xuICAgICAgICBzaXplOiAxLFxuICAgICAgICB0eXBlOiBHTC5VTlNJR05FRF9CWVRFLFxuICAgICAgICBhY2Nlc3NvcjogJ2dldFpMZXZlbCcsXG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgLy8gT3ZlcnJpZGUgZHJhdyB0byBhZGQgcmVuZGVyIG1vZHVsZVxuICBkcmF3KHsgbW9kdWxlUGFyYW1ldGVycyA9IHt9LCBwYXJhbWV0ZXJzLCB1bmlmb3JtcywgY29udGV4dCB9KSB7XG4gICAgLy8gTmVlZCB0byBjYWxjdWxhdGUgc2FtZSB1bmlmb3JtcyBhcyBiYXNlIGxheWVyXG4gICAgY29uc3Qge1xuICAgICAgam9pbnRSb3VuZGVkLFxuICAgICAgY2FwUm91bmRlZCxcbiAgICAgIGJpbGxib2FyZCxcbiAgICAgIG1pdGVyTGltaXQsXG4gICAgICB3aWR0aFVuaXRzLFxuICAgICAgd2lkdGhTY2FsZSxcbiAgICAgIHdpZHRoTWluUGl4ZWxzLFxuICAgICAgd2lkdGhNYXhQaXhlbHMsXG4gICAgfSA9IHRoaXMucHJvcHM7XG5cbiAgICB1bmlmb3JtcyA9IE9iamVjdC5hc3NpZ24oe30sIHVuaWZvcm1zLCB7XG4gICAgICBqb2ludFR5cGU6IE51bWJlcihqb2ludFJvdW5kZWQpLFxuICAgICAgY2FwVHlwZTogTnVtYmVyKGNhcFJvdW5kZWQpLFxuICAgICAgYmlsbGJvYXJkLFxuICAgICAgd2lkdGhVbml0czogVU5JVFt3aWR0aFVuaXRzXSxcbiAgICAgIHdpZHRoU2NhbGUsXG4gICAgICBtaXRlckxpbWl0LFxuICAgICAgd2lkdGhNaW5QaXhlbHMsXG4gICAgICB3aWR0aE1heFBpeGVscyxcbiAgICB9KTtcblxuICAgIC8vIFJlbmRlciB0aGUgb3V0bGluZSBzaGFkb3dtYXAgKGJhc2VkIG9uIHNlZ21lbnQgeiBvcmRlcnMpXG4gICAgY29uc3QgeyBvdXRsaW5lRnJhbWVidWZmZXIsIGR1bW15VGV4dHVyZSB9ID0gdGhpcy5zdGF0ZTtcbiAgICBvdXRsaW5lRnJhbWVidWZmZXIucmVzaXplKCk7XG4gICAgb3V0bGluZUZyYW1lYnVmZmVyLmNsZWFyKHsgY29sb3I6IHRydWUsIGRlcHRoOiB0cnVlIH0pO1xuXG4gICAgdGhpcy5zdGF0ZS5tb2RlbC51cGRhdGVNb2R1bGVTZXR0aW5ncyh7XG4gICAgICBvdXRsaW5lRW5hYmxlZDogdHJ1ZSxcbiAgICAgIG91dGxpbmVSZW5kZXJTaGFkb3dtYXA6IHRydWUsXG4gICAgICBvdXRsaW5lU2hhZG93bWFwOiBkdW1teVRleHR1cmUsXG4gICAgfSk7XG5cbiAgICB0aGlzLnN0YXRlLm1vZGVsLmRyYXcoe1xuICAgICAgdW5pZm9ybXM6IE9iamVjdC5hc3NpZ24oe30sIHVuaWZvcm1zLCB7XG4gICAgICAgIGpvaW50VHlwZTogMCxcbiAgICAgICAgd2lkdGhTY2FsZTogdGhpcy5wcm9wcy53aWR0aFNjYWxlICogMS4zLFxuICAgICAgfSksXG4gICAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICAgIGRlcHRoVGVzdDogZmFsc2UsXG4gICAgICAgIC8vIEJpZ2dlc3QgdmFsdWUgbmVlZHMgdG8gZ28gaW50byBidWZmZXJcbiAgICAgICAgYmxlbmRFcXVhdGlvbjogR0wuTUFYLFxuICAgICAgfSxcbiAgICAgIGZyYW1lYnVmZmVyOiBvdXRsaW5lRnJhbWVidWZmZXIsXG4gICAgfSk7XG5cbiAgICAvLyBOb3cgdXNlIHRoZSBvdXRsaW5lIHNoYWRvd21hcCB0byByZW5kZXIgdGhlIGxpbmVzICh3aXRoIG91dGxpbmVzKVxuICAgIHRoaXMuc3RhdGUubW9kZWwudXBkYXRlTW9kdWxlU2V0dGluZ3Moe1xuICAgICAgb3V0bGluZUVuYWJsZWQ6IHRydWUsXG4gICAgICBvdXRsaW5lUmVuZGVyU2hhZG93bWFwOiBmYWxzZSxcbiAgICAgIG91dGxpbmVTaGFkb3dtYXA6IG91dGxpbmVGcmFtZWJ1ZmZlcixcbiAgICB9KTtcbiAgICB0aGlzLnN0YXRlLm1vZGVsLmRyYXcoe1xuICAgICAgdW5pZm9ybXM6IE9iamVjdC5hc3NpZ24oe30sIHVuaWZvcm1zLCB7XG4gICAgICAgIGpvaW50VHlwZTogTnVtYmVyKGpvaW50Um91bmRlZCksXG4gICAgICAgIGNhcFR5cGU6IE51bWJlcihjYXBSb3VuZGVkKSxcbiAgICAgICAgd2lkdGhTY2FsZTogdGhpcy5wcm9wcy53aWR0aFNjYWxlLFxuICAgICAgfSksXG4gICAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICAgIGRlcHRoVGVzdDogZmFsc2UsXG4gICAgICB9LFxuICAgIH0pO1xuICB9XG59XG4iXX0=","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports[\"default\"] = exports.SELECTION_TYPE = void 0;\n\nvar _core = require(\"@deck.gl/core\");\n\nvar _layers = require(\"@deck.gl/layers\");\n\nvar _helpers = require(\"@turf/helpers\");\n\nvar _buffer = _interopRequireDefault(require(\"@turf/buffer\"));\n\nvar _difference = _interopRequireDefault(require(\"@turf/difference\"));\n\nvar _editModes = require(\"@nebula.gl/edit-modes\");\n\nvar _editableGeojsonLayer = _interopRequireDefault(require(\"./editable-geojson-layer\"));\n\nvar _MODE_MAP;\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(n); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return; var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar SELECTION_TYPE = {\n  NONE: null,\n  RECTANGLE: 'rectangle',\n  POLYGON: 'polygon'\n};\nexports.SELECTION_TYPE = SELECTION_TYPE;\nvar MODE_MAP = (_MODE_MAP = {}, _defineProperty(_MODE_MAP, SELECTION_TYPE.RECTANGLE, _editModes.DrawRectangleMode), _defineProperty(_MODE_MAP, SELECTION_TYPE.POLYGON, _editModes.DrawPolygonMode), _MODE_MAP);\n\nvar MODE_CONFIG_MAP = _defineProperty({}, SELECTION_TYPE.RECTANGLE, {\n  dragToDraw: true\n});\n\nvar defaultProps = {\n  selectionType: SELECTION_TYPE.RECTANGLE,\n  layerIds: [],\n  onSelect: function onSelect() {}\n};\nvar EMPTY_DATA = {\n  type: 'FeatureCollection',\n  features: []\n};\nvar EXPANSION_KM = 50;\nvar LAYER_ID_GEOJSON = 'selection-geojson';\nvar LAYER_ID_BLOCKER = 'selection-blocker';\nvar PASS_THROUGH_PROPS = ['lineWidthScale', 'lineWidthMinPixels', 'lineWidthMaxPixels', 'lineWidthUnits', 'lineJointRounded', 'lineCapRounded', 'lineMiterLimit', 'pointRadiusScale', 'pointRadiusMinPixels', 'pointRadiusMaxPixels', 'lineDashJustified', 'getLineColor', 'getFillColor', 'getRadius', 'getLineWidth', 'getLineDashArray', 'getTentativeLineDashArray', 'getTentativeLineColor', 'getTentativeFillColor', 'getTentativeLineWidth'];\n\nvar SelectionLayer = /*#__PURE__*/function (_CompositeLayer) {\n  _inherits(SelectionLayer, _CompositeLayer);\n\n  var _super = _createSuper(SelectionLayer);\n\n  function SelectionLayer() {\n    _classCallCheck(this, SelectionLayer);\n\n    return _super.apply(this, arguments);\n  }\n\n  _createClass(SelectionLayer, [{\n    key: \"_selectRectangleObjects\",\n    value: function _selectRectangleObjects(coordinates) {\n      var _this$props = this.props,\n          layerIds = _this$props.layerIds,\n          onSelect = _this$props.onSelect; // @ts-ignore\n\n      var _this$context$viewpor = this.context.viewport.project(coordinates[0][0]),\n          _this$context$viewpor2 = _slicedToArray(_this$context$viewpor, 2),\n          x1 = _this$context$viewpor2[0],\n          y1 = _this$context$viewpor2[1]; // @ts-ignore\n\n\n      var _this$context$viewpor3 = this.context.viewport.project(coordinates[0][2]),\n          _this$context$viewpor4 = _slicedToArray(_this$context$viewpor3, 2),\n          x2 = _this$context$viewpor4[0],\n          y2 = _this$context$viewpor4[1]; // @ts-ignore\n\n\n      var pickingInfos = this.context.deck.pickObjects({\n        x: Math.min(x1, x2),\n        y: Math.min(y1, y2),\n        width: Math.abs(x2 - x1),\n        height: Math.abs(y2 - y1),\n        layerIds: layerIds\n      });\n      onSelect({\n        pickingInfos: pickingInfos\n      });\n    }\n  }, {\n    key: \"_selectPolygonObjects\",\n    value: function _selectPolygonObjects(coordinates) {\n      var _this = this;\n\n      var _this$props2 = this.props,\n          layerIds = _this$props2.layerIds,\n          onSelect = _this$props2.onSelect; // @ts-ignore\n\n      var mousePoints = coordinates[0].map(function (c) {\n        return _this.context.viewport.project(c);\n      });\n      var allX = mousePoints.map(function (mousePoint) {\n        return mousePoint[0];\n      });\n      var allY = mousePoints.map(function (mousePoint) {\n        return mousePoint[1];\n      });\n      var x = Math.min.apply(Math, _toConsumableArray(allX));\n      var y = Math.min.apply(Math, _toConsumableArray(allY));\n      var maxX = Math.max.apply(Math, _toConsumableArray(allX));\n      var maxY = Math.max.apply(Math, _toConsumableArray(allY)); // Use a polygon to hide the outside, because pickObjects()\n      // does not support polygons\n\n      var landPointsPoly = (0, _helpers.polygon)(coordinates);\n      var bigBuffer = (0, _buffer[\"default\"])(landPointsPoly, EXPANSION_KM);\n      var bigPolygon;\n\n      try {\n        // turfDifference throws an exception if the polygon\n        // intersects with itself (TODO: check if true in all versions)\n        bigPolygon = (0, _difference[\"default\"])(bigBuffer, landPointsPoly);\n      } catch (e) {\n        // invalid selection polygon\n        console.log('turfDifference() error', e); // eslint-disable-line\n\n        return;\n      }\n\n      this.setState({\n        pendingPolygonSelection: {\n          bigPolygon: bigPolygon\n        }\n      });\n      var blockerId = \"\".concat(this.props.id, \"-\").concat(LAYER_ID_BLOCKER); // HACK, find a better way\n\n      setTimeout(function () {\n        // @ts-ignore\n        var pickingInfos = _this.context.deck.pickObjects({\n          x: x,\n          y: y,\n          width: maxX - x,\n          height: maxY - y,\n          layerIds: [blockerId].concat(_toConsumableArray(layerIds))\n        });\n\n        onSelect({\n          pickingInfos: pickingInfos.filter(function (item) {\n            return item.layer.id !== _this.props.id;\n          })\n        });\n      }, 250);\n    }\n  }, {\n    key: \"renderLayers\",\n    value: function renderLayers() {\n      var _this2 = this;\n\n      var pendingPolygonSelection = this.state.pendingPolygonSelection;\n      var mode = MODE_MAP[this.props.selectionType] || _editModes.ViewMode;\n      var modeConfig = MODE_CONFIG_MAP[this.props.selectionType];\n      var inheritedProps = {};\n      PASS_THROUGH_PROPS.forEach(function (p) {\n        if (_this2.props[p] !== undefined) inheritedProps[p] = _this2.props[p];\n      });\n      var layers = [new _editableGeojsonLayer[\"default\"](this.getSubLayerProps(_objectSpread({\n        id: LAYER_ID_GEOJSON,\n        pickable: true,\n        mode: mode,\n        modeConfig: modeConfig,\n        selectedFeatureIndexes: [],\n        data: EMPTY_DATA,\n        onEdit: function onEdit(_ref) {\n          var updatedData = _ref.updatedData,\n              editType = _ref.editType;\n\n          if (editType === 'addFeature') {\n            var coordinates = updatedData.features[0].geometry.coordinates;\n\n            if (_this2.props.selectionType === SELECTION_TYPE.RECTANGLE) {\n              _this2._selectRectangleObjects(coordinates);\n            } else if (_this2.props.selectionType === SELECTION_TYPE.POLYGON) {\n              _this2._selectPolygonObjects(coordinates);\n            }\n          }\n        }\n      }, inheritedProps)))];\n\n      if (pendingPolygonSelection) {\n        var bigPolygon = pendingPolygonSelection.bigPolygon;\n        layers.push( // @ts-ignore\n        new _layers.PolygonLayer( // @ts-ignore\n        this.getSubLayerProps({\n          id: LAYER_ID_BLOCKER,\n          pickable: true,\n          stroked: false,\n          opacity: 1.0,\n          data: [bigPolygon],\n          getLineColor: function getLineColor(obj) {\n            return [0, 0, 0, 1];\n          },\n          getFillColor: function getFillColor(obj) {\n            return [0, 0, 0, 1];\n          },\n          getPolygon: function getPolygon(o) {\n            return o.geometry.coordinates;\n          }\n        })));\n      }\n\n      return layers;\n    }\n  }, {\n    key: \"shouldUpdateState\",\n    value: function shouldUpdateState(_ref2) {\n      var _ref2$changeFlags = _ref2.changeFlags,\n          stateChanged = _ref2$changeFlags.stateChanged,\n          propsOrDataChanged = _ref2$changeFlags.propsOrDataChanged;\n      return stateChanged || propsOrDataChanged;\n    }\n  }]);\n\n  return SelectionLayer;\n}(_core.CompositeLayer);\n\nexports[\"default\"] = SelectionLayer;\n\n_defineProperty(SelectionLayer, \"layerName\", 'SelectionLayer');\n\n_defineProperty(SelectionLayer, \"defaultProps\", defaultProps);\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9sYXllcnMvc2VsZWN0aW9uLWxheWVyLnRzIl0sIm5hbWVzIjpbIlNFTEVDVElPTl9UWVBFIiwiTk9ORSIsIlJFQ1RBTkdMRSIsIlBPTFlHT04iLCJNT0RFX01BUCIsIkRyYXdSZWN0YW5nbGVNb2RlIiwiRHJhd1BvbHlnb25Nb2RlIiwiTU9ERV9DT05GSUdfTUFQIiwiZHJhZ1RvRHJhdyIsImRlZmF1bHRQcm9wcyIsInNlbGVjdGlvblR5cGUiLCJsYXllcklkcyIsIm9uU2VsZWN0IiwiRU1QVFlfREFUQSIsInR5cGUiLCJmZWF0dXJlcyIsIkVYUEFOU0lPTl9LTSIsIkxBWUVSX0lEX0dFT0pTT04iLCJMQVlFUl9JRF9CTE9DS0VSIiwiUEFTU19USFJPVUdIX1BST1BTIiwiU2VsZWN0aW9uTGF5ZXIiLCJjb29yZGluYXRlcyIsInByb3BzIiwiY29udGV4dCIsInZpZXdwb3J0IiwicHJvamVjdCIsIngxIiwieTEiLCJ4MiIsInkyIiwicGlja2luZ0luZm9zIiwiZGVjayIsInBpY2tPYmplY3RzIiwieCIsIk1hdGgiLCJtaW4iLCJ5Iiwid2lkdGgiLCJhYnMiLCJoZWlnaHQiLCJtb3VzZVBvaW50cyIsIm1hcCIsImMiLCJhbGxYIiwibW91c2VQb2ludCIsImFsbFkiLCJtYXhYIiwibWF4IiwibWF4WSIsImxhbmRQb2ludHNQb2x5IiwiYmlnQnVmZmVyIiwiYmlnUG9seWdvbiIsImUiLCJjb25zb2xlIiwibG9nIiwic2V0U3RhdGUiLCJwZW5kaW5nUG9seWdvblNlbGVjdGlvbiIsImJsb2NrZXJJZCIsImlkIiwic2V0VGltZW91dCIsImZpbHRlciIsIml0ZW0iLCJsYXllciIsInN0YXRlIiwibW9kZSIsIlZpZXdNb2RlIiwibW9kZUNvbmZpZyIsImluaGVyaXRlZFByb3BzIiwiZm9yRWFjaCIsInAiLCJ1bmRlZmluZWQiLCJsYXllcnMiLCJFZGl0YWJsZUdlb0pzb25MYXllciIsImdldFN1YkxheWVyUHJvcHMiLCJwaWNrYWJsZSIsInNlbGVjdGVkRmVhdHVyZUluZGV4ZXMiLCJkYXRhIiwib25FZGl0IiwidXBkYXRlZERhdGEiLCJlZGl0VHlwZSIsImdlb21ldHJ5IiwiX3NlbGVjdFJlY3RhbmdsZU9iamVjdHMiLCJfc2VsZWN0UG9seWdvbk9iamVjdHMiLCJwdXNoIiwiUG9seWdvbkxheWVyIiwic3Ryb2tlZCIsIm9wYWNpdHkiLCJnZXRMaW5lQ29sb3IiLCJvYmoiLCJnZXRGaWxsQ29sb3IiLCJnZXRQb2x5Z29uIiwibyIsImNoYW5nZUZsYWdzIiwic3RhdGVDaGFuZ2VkIiwicHJvcHNPckRhdGFDaGFuZ2VkIiwiQ29tcG9zaXRlTGF5ZXIiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFFQTs7QUFDQTs7QUFFQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRU8sSUFBTUEsY0FBYyxHQUFHO0FBQzVCQyxFQUFBQSxJQUFJLEVBQUUsSUFEc0I7QUFFNUJDLEVBQUFBLFNBQVMsRUFBRSxXQUZpQjtBQUc1QkMsRUFBQUEsT0FBTyxFQUFFO0FBSG1CLENBQXZCOztBQU1QLElBQU1DLFFBQVEsK0NBQ1hKLGNBQWMsQ0FBQ0UsU0FESixFQUNnQkcsNEJBRGhCLDhCQUVYTCxjQUFjLENBQUNHLE9BRkosRUFFY0csMEJBRmQsYUFBZDs7QUFLQSxJQUFNQyxlQUFlLHVCQUNsQlAsY0FBYyxDQUFDRSxTQURHLEVBQ1M7QUFBRU0sRUFBQUEsVUFBVSxFQUFFO0FBQWQsQ0FEVCxDQUFyQjs7QUFVQSxJQUFNQyxZQUFpQyxHQUFHO0FBQ3hDQyxFQUFBQSxhQUFhLEVBQUVWLGNBQWMsQ0FBQ0UsU0FEVTtBQUV4Q1MsRUFBQUEsUUFBUSxFQUFFLEVBRjhCO0FBR3hDQyxFQUFBQSxRQUFRLEVBQUUsb0JBQU0sQ0FBRTtBQUhzQixDQUExQztBQU1BLElBQU1DLFVBQVUsR0FBRztBQUNqQkMsRUFBQUEsSUFBSSxFQUFFLG1CQURXO0FBRWpCQyxFQUFBQSxRQUFRLEVBQUU7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QUQsRUFBSSxDQUFKLEVBQU8sQ0FBUCxFQUFVLENBQVYsQ0FBVDtBQUFBLFdBTk07QUFPcEJDLFVBQUFBLFlBQVksRUFBRSxzQkFBQ0QsR0FBRDtBQUFBLG1CQUFTLENBQUMsQ0FBRCxFQUFJLENBQUosRUFBTyxDQUFQLEVBQVUsQ0FBVixDQUFUO0FBQUEsV0FQTTtBQVFwQkUsVUFBQUEsVUFBVSxFQUFFLG9CQUFDQyxDQUFEO0FBQUEsbUJBQU9BLENBQUMsQ0FBQ1gsUUFBRixDQUFXM0QsV0FBbEI7QUFBQTtBQVJRLFNBQXRCLENBRkYsQ0FGRjtBQWdCRDs7QUFFRCxhQUFPa0QsTUFBUDtBQUNEOzs7NkNBRTZGO0FBQUEsb0NBQTFFcUIsV0FBMEU7QUFBQSxVQUEzREMsWUFBMkQscUJBQTNEQSxZQUEyRDtBQUFBLFVBQTdDQyxrQkFBNkMscUJBQTdDQSxrQkFBNkM7QUFDNUYsYUFBT0QsWUFBWSxJQUFJQyxrQkFBdkI7QUFDRDs7OztFQXZJT0Msb0I7Ozs7Z0JBSFczRSxjLGVBSUEsZ0I7O2dCQUpBQSxjLGtCQUtHWCxZIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWVudiBicm93c2VyICovXG5cbmltcG9ydCB7IENvbXBvc2l0ZUxheWVyIH0gZnJvbSAnQGRlY2suZ2wvY29yZSc7XG5pbXBvcnQgeyBQb2x5Z29uTGF5ZXIgfSBmcm9tICdAZGVjay5nbC9sYXllcnMnO1xuaW1wb3J0IHsgQ29tcG9zaXRlTGF5ZXJQcm9wcyB9IGZyb20gJ0BkZWNrLmdsL2NvcmUvbGliL2NvbXBvc2l0ZS1sYXllcic7XG5pbXBvcnQgeyBwb2x5Z29uIH0gZnJvbSAnQHR1cmYvaGVscGVycyc7XG5pbXBvcnQgdHVyZkJ1ZmZlciBmcm9tICdAdHVyZi9idWZmZXInO1xuaW1wb3J0IHR1cmZEaWZmZXJlbmNlIGZyb20gJ0B0dXJmL2RpZmZlcmVuY2UnO1xuaW1wb3J0IHsgRHJhd1JlY3RhbmdsZU1vZGUsIERyYXdQb2x5Z29uTW9kZSwgVmlld01vZGUgfSBmcm9tICdAbmVidWxhLmdsL2VkaXQtbW9kZXMnO1xuXG5pbXBvcnQgRWRpdGFibGVHZW9Kc29uTGF5ZXIgZnJvbSAnLi9lZGl0YWJsZS1nZW9qc29uLWxheWVyJztcblxuZXhwb3J0IGNvbnN0IFNFTEVDVElPTl9UWVBFID0ge1xuICBOT05FOiBudWxsLFxuICBSRUNUQU5HTEU6ICdyZWN0YW5nbGUnLFxuICBQT0xZR09OOiAncG9seWdvbicsXG59O1xuXG5jb25zdCBNT0RFX01BUCA9IHtcbiAgW1NFTEVDVElPTl9UWVBFLlJFQ1RBTkdMRV06IERyYXdSZWN0YW5nbGVNb2RlLFxuICBbU0VMRUNUSU9OX1RZUEUuUE9MWUdPTl06IERyYXdQb2x5Z29uTW9kZSxcbn07XG5cbmNvbnN0IE1PREVfQ09ORklHX01BUCA9IHtcbiAgW1NFTEVDVElPTl9UWVBFLlJFQ1RBTkdMRV06IHsgZHJhZ1RvRHJhdzogdHJ1ZSB9LFxufTtcblxuaW50ZXJmYWNlIFNlbGVjdGlvbkxheWVyUHJvcHMgZXh0ZW5kcyBDb21wb3NpdGVMYXllclByb3BzPGFueT4ge1xuICBsYXllcklkczogYW55W107XG4gIG9uU2VsZWN0OiAoaW5mbzogYW55KSA9PiBhbnk7XG4gIHNlbGVjdGlvblR5cGU6IHN0cmluZyB8IG51bGw7XG59XG5cbmNvbnN0IGRlZmF1bHRQcm9wczogU2VsZWN0aW9uTGF5ZXJQcm9wcyA9IHtcbiAgc2VsZWN0aW9uVHlwZTogU0VMRUNUSU9OX1RZUEUuUkVDVEFOR0xFLFxuICBsYXllcklkczogW10sXG4gIG9uU2VsZWN0OiAoKSA9PiB7fSxcbn07XG5cbmNvbnN0IEVNUFRZX0RBVEEgPSB7XG4gIHR5cGU6ICdGZWF0dXJlQ29sbGVjdGlvbicsXG4gIGZlYXR1cmVzOiBbXSxcbn07XG5cbmNvbnN0IEVYUEFOU0lPTl9LTSA9IDUwO1xuY29uc3QgTEFZRVJfSURfR0VPSlNPTiA9ICdzZWxlY3Rpb24tZ2VvanNvbic7XG5jb25zdCBMQVlFUl9JRF9CTE9DS0VSID0gJ3NlbGVjdGlvbi1ibG9ja2VyJztcblxuY29uc3QgUEFTU19USFJPVUdIX1BST1BTID0gW1xuICAnbGluZVdpZHRoU2NhbGUnLFxuICAnbGluZVdpZHRoTWluUGl4ZWxzJyxcbiAgJ2xpbmVXaWR0aE1heFBpeGVscycsXG4gICdsaW5lV2lkdGhVbml0cycsXG4gICdsaW5lSm9pbnRSb3VuZGVkJyxcbiAgJ2xpbmVDYXBSb3VuZGVkJyxcbiAgJ2xpbmVNaXRlckxpbWl0JyxcbiAgJ3BvaW50UmFkaXVzU2NhbGUnLFxuICAncG9pbnRSYWRpdXNNaW5QaXhlbHMnLFxuICAncG9pbnRSYWRpdXNNYXhQaXhlbHMnLFxuICAnbGluZURhc2hKdXN0aWZpZWQnLFxuICAnZ2V0TGluZUNvbG9yJyxcbiAgJ2dldEZpbGxDb2xvcicsXG4gICdnZXRSYWRpdXMnLFxuICAnZ2V0TGluZVdpZHRoJyxcbiAgJ2dldExpbmVEYXNoQXJyYXknLFxuICAnZ2V0VGVudGF0aXZlTGluZURhc2hBcnJheScsXG4gICdnZXRUZW50YXRpdmVMaW5lQ29sb3InLFxuICAnZ2V0VGVudGF0aXZlRmlsbENvbG9yJyxcbiAgJ2dldFRlbnRhdGl2ZUxpbmVXaWR0aCcsXG5dO1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgU2VsZWN0aW9uTGF5ZXI8XG4gIEQsXG4gIFAgZXh0ZW5kcyBTZWxlY3Rpb25MYXllclByb3BzID0gU2VsZWN0aW9uTGF5ZXJQcm9wc1xuPiBleHRlbmRzIENvbXBvc2l0ZUxheWVyPEQsIFA+IHtcbiAgc3RhdGljIGxheWVyTmFtZSA9ICdTZWxlY3Rpb25MYXllcic7XG4gIHN0YXRpYyBkZWZhdWx0UHJvcHMgPSBkZWZhdWx0UHJvcHM7XG5cbiAgX3NlbGVjdFJlY3RhbmdsZU9iamVjdHMoY29vcmRpbmF0ZXM6IGFueSkge1xuICAgIGNvbnN0IHsgbGF5ZXJJZHMsIG9uU2VsZWN0IH0gPSB0aGlzLnByb3BzO1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBjb25zdCBbeDEsIHkxXSA9IHRoaXMuY29udGV4dC52aWV3cG9ydC5wcm9qZWN0KGNvb3JkaW5hdGVzWzBdWzBdKTtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgY29uc3QgW3gyLCB5Ml0gPSB0aGlzLmNvbnRleHQudmlld3BvcnQucHJvamVjdChjb29yZGluYXRlc1swXVsyXSk7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIGNvbnN0IHBpY2tpbmdJbmZvcyA9IHRoaXMuY29udGV4dC5kZWNrLnBpY2tPYmplY3RzKHtcbiAgICAgIHg6IE1hdGgubWluKHgxLCB4MiksXG4gICAgICB5OiBNYXRoLm1pbih5MSwgeTIpLFxuICAgICAgd2lkdGg6IE1hdGguYWJzKHgyIC0geDEpLFxuICAgICAgaGVpZ2h0OiBNYXRoLmFicyh5MiAtIHkxKSxcbiAgICAgIGxheWVySWRzLFxuICAgIH0pO1xuXG4gICAgb25TZWxlY3QoeyBwaWNraW5nSW5mb3MgfSk7XG4gIH1cblxuICBfc2VsZWN0UG9seWdvbk9iamVjdHMoY29vcmRpbmF0ZXM6IGFueSkge1xuICAgIGNvbnN0IHsgbGF5ZXJJZHMsIG9uU2VsZWN0IH0gPSB0aGlzLnByb3BzO1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBjb25zdCBtb3VzZVBvaW50cyA9IGNvb3JkaW5hdGVzWzBdLm1hcCgoYykgPT4gdGhpcy5jb250ZXh0LnZpZXdwb3J0LnByb2plY3QoYykpO1xuXG4gICAgY29uc3QgYWxsWCA9IG1vdXNlUG9pbnRzLm1hcCgobW91c2VQb2ludCkgPT4gbW91c2VQb2ludFswXSk7XG4gICAgY29uc3QgYWxsWSA9IG1vdXNlUG9pbnRzLm1hcCgobW91c2VQb2ludCkgPT4gbW91c2VQb2ludFsxXSk7XG4gICAgY29uc3QgeCA9IE1hdGgubWluKC4uLmFsbFgpO1xuICAgIGNvbnN0IHkgPSBNYXRoLm1pbiguLi5hbGxZKTtcbiAgICBjb25zdCBtYXhYID0gTWF0aC5tYXgoLi4uYWxsWCk7XG4gICAgY29uc3QgbWF4WSA9IE1hdGgubWF4KC4uLmFsbFkpO1xuXG4gICAgLy8gVXNlIGEgcG9seWdvbiB0byBoaWRlIHRoZSBvdXRzaWRlLCBiZWNhdXNlIHBpY2tPYmplY3RzKClcbiAgICAvLyBkb2VzIG5vdCBzdXBwb3J0IHBvbHlnb25zXG4gICAgY29uc3QgbGFuZFBvaW50c1BvbHkgPSBwb2x5Z29uKGNvb3JkaW5hdGVzKTtcbiAgICBjb25zdCBiaWdCdWZmZXIgPSB0dXJmQnVmZmVyKGxhbmRQb2ludHNQb2x5LCBFWFBBTlNJT05fS00pO1xuICAgIGxldCBiaWdQb2x5Z29uO1xuICAgIHRyeSB7XG4gICAgICAvLyB0dXJmRGlmZmVyZW5jZSB0aHJvd3MgYW4gZXhjZXB0aW9uIGlmIHRoZSBwb2x5Z29uXG4gICAgICAvLyBpbnRlcnNlY3RzIHdpdGggaXRzZWxmIChUT0RPOiBjaGVjayBpZiB0cnVlIGluIGFsbCB2ZXJzaW9ucylcbiAgICAgIGJpZ1BvbHlnb24gPSB0dXJmRGlmZmVyZW5jZShiaWdCdWZmZXIsIGxhbmRQb2ludHNQb2x5KTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICAvLyBpbnZhbGlkIHNlbGVjdGlvbiBwb2x5Z29uXG4gICAgICBjb25zb2xlLmxvZygndHVyZkRpZmZlcmVuY2UoKSBlcnJvcicsIGUpOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICBwZW5kaW5nUG9seWdvblNlbGVjdGlvbjoge1xuICAgICAgICBiaWdQb2x5Z29uLFxuICAgICAgfSxcbiAgICB9KTtcblxuICAgIGNvbnN0IGJsb2NrZXJJZCA9IGAke3RoaXMucHJvcHMuaWR9LSR7TEFZRVJfSURfQkxPQ0tFUn1gO1xuXG4gICAgLy8gSEFDSywgZmluZCBhIGJldHRlciB3YXlcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIGNvbnN0IHBpY2tpbmdJbmZvcyA9IHRoaXMuY29udGV4dC5kZWNrLnBpY2tPYmplY3RzKHtcbiAgICAgICAgeCxcbiAgICAgICAgeSxcbiAgICAgICAgd2lkdGg6IG1heFggLSB4LFxuICAgICAgICBoZWlnaHQ6IG1heFkgLSB5LFxuICAgICAgICBsYXllcklkczogW2Jsb2NrZXJJZCwgLi4ubGF5ZXJJZHNdLFxuICAgICAgfSk7XG5cbiAgICAgIG9uU2VsZWN0KHtcbiAgICAgICAgcGlja2luZ0luZm9zOiBwaWNraW5nSW5mb3MuZmlsdGVyKChpdGVtKSA9PiBpdGVtLmxheWVyLmlkICE9PSB0aGlzLnByb3BzLmlkKSxcbiAgICAgIH0pO1xuICAgIH0sIDI1MCk7XG4gIH1cblxuICByZW5kZXJMYXllcnMoKSB7XG4gICAgY29uc3QgeyBwZW5kaW5nUG9seWdvblNlbGVjdGlvbiB9ID0gdGhpcy5zdGF0ZTtcblxuICAgIGNvbnN0IG1vZGUgPSBNT0RFX01BUFt0aGlzLnByb3BzLnNlbGVjdGlvblR5cGVdIHx8IFZpZXdNb2RlO1xuICAgIGNvbnN0IG1vZGVDb25maWcgPSBNT0RFX0NPTkZJR19NQVBbdGhpcy5wcm9wcy5zZWxlY3Rpb25UeXBlXTtcblxuICAgIGNvbnN0IGluaGVyaXRlZFByb3BzID0ge307XG4gICAgUEFTU19USFJPVUdIX1BST1BTLmZvckVhY2goKHApID0+IHtcbiAgICAgIGlmICh0aGlzLnByb3BzW3BdICE9PSB1bmRlZmluZWQpIGluaGVyaXRlZFByb3BzW3BdID0gdGhpcy5wcm9wc1twXTtcbiAgICB9KTtcblxuICAgIGNvbnN0IGxheWVycyA9IFtcbiAgICAgIG5ldyBFZGl0YWJsZUdlb0pzb25MYXllcihcbiAgICAgICAgdGhpcy5nZXRTdWJMYXllclByb3BzKHtcbiAgICAgICAgICBpZDogTEFZRVJfSURfR0VPSlNPTixcbiAgICAgICAgICBwaWNrYWJsZTogdHJ1ZSxcbiAgICAgICAgICBtb2RlLFxuICAgICAgICAgIG1vZGVDb25maWcsXG4gICAgICAgICAgc2VsZWN0ZWRGZWF0dXJlSW5kZXhlczogW10sXG4gICAgICAgICAgZGF0YTogRU1QVFlfREFUQSxcbiAgICAgICAgICBvbkVkaXQ6ICh7IHVwZGF0ZWREYXRhLCBlZGl0VHlwZSB9KSA9PiB7XG4gICAgICAgICAgICBpZiAoZWRpdFR5cGUgPT09ICdhZGRGZWF0dXJlJykge1xuICAgICAgICAgICAgICBjb25zdCB7IGNvb3JkaW5hdGVzIH0gPSB1cGRhdGVkRGF0YS5mZWF0dXJlc1swXS5nZW9tZXRyeTtcblxuICAgICAgICAgICAgICBpZiAodGhpcy5wcm9wcy5zZWxlY3Rpb25UeXBlID09PSBTRUxFQ1RJT05fVFlQRS5SRUNUQU5HTEUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9zZWxlY3RSZWN0YW5nbGVPYmplY3RzKGNvb3JkaW5hdGVzKTtcbiAgICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLnByb3BzLnNlbGVjdGlvblR5cGUgPT09IFNFTEVDVElPTl9UWVBFLlBPTFlHT04pIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9zZWxlY3RQb2x5Z29uT2JqZWN0cyhjb29yZGluYXRlcyk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9LFxuICAgICAgICAgIC4uLmluaGVyaXRlZFByb3BzLFxuICAgICAgICB9KVxuICAgICAgKSxcbiAgICBdO1xuXG4gICAgaWYgKHBlbmRpbmdQb2x5Z29uU2VsZWN0aW9uKSB7XG4gICAgICBjb25zdCB7IGJpZ1BvbHlnb24gfSA9IHBlbmRpbmdQb2x5Z29uU2VsZWN0aW9uO1xuICAgICAgbGF5ZXJzLnB1c2goXG4gICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgbmV3IFBvbHlnb25MYXllcihcbiAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgdGhpcy5nZXRTdWJMYXllclByb3BzKHtcbiAgICAgICAgICAgIGlkOiBMQVlFUl9JRF9CTE9DS0VSLFxuICAgICAgICAgICAgcGlja2FibGU6IHRydWUsXG4gICAgICAgICAgICBzdHJva2VkOiBmYWxzZSxcbiAgICAgICAgICAgIG9wYWNpdHk6IDEuMCxcbiAgICAgICAgICAgIGRhdGE6IFtiaWdQb2x5Z29uXSxcbiAgICAgICAgICAgIGdldExpbmVDb2xvcjogKG9iaikgPT4gWzAsIDAsIDAsIDFdLFxuICAgICAgICAgICAgZ2V0RmlsbENvbG9yOiAob2JqKSA9PiBbMCwgMCwgMCwgMV0sXG4gICAgICAgICAgICBnZXRQb2x5Z29uOiAobykgPT4gby5nZW9tZXRyeS5jb29yZGluYXRlcyxcbiAgICAgICAgICB9KVxuICAgICAgICApXG4gICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiBsYXllcnM7XG4gIH1cblxuICBzaG91bGRVcGRhdGVTdGF0ZSh7IGNoYW5nZUZsYWdzOiB7IHN0YXRlQ2hhbmdlZCwgcHJvcHNPckRhdGFDaGFuZ2VkIH0gfTogUmVjb3JkPHN0cmluZywgYW55Pikge1xuICAgIHJldHVybiBzdGF0ZUNoYW5nZWQgfHwgcHJvcHNPckRhdGFDaGFuZ2VkO1xuICB9XG59XG4iXX0=","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports[\"default\"] = void 0;\n\n/* eslint-disable camelcase */\nvar INITIAL_STATE = {\n  outlineEnabled: false,\n  outlineRenderShadowmap: false,\n  outlineShadowmap: null\n};\n\nfunction getUniforms() {\n  var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : INITIAL_STATE,\n      outlineEnabled = _ref.outlineEnabled,\n      outlineRenderShadowmap = _ref.outlineRenderShadowmap,\n      outlineShadowmap = _ref.outlineShadowmap;\n\n  var uniforms = {};\n\n  if (outlineEnabled !== undefined) {\n    // ? 1.0 : 0.0;\n    uniforms.outline_uEnabled = outlineEnabled;\n  }\n\n  if (outlineRenderShadowmap !== undefined) {\n    // ? 1.0 : 0.0;\n    uniforms.outline_uRenderOutlines = outlineRenderShadowmap;\n  }\n\n  if (outlineShadowmap !== undefined) {\n    uniforms.outline_uShadowmap = outlineShadowmap;\n  }\n\n  return uniforms;\n}\n\nvar vs = \"attribute float instanceZLevel;\\nvarying float outline_vzLevel;\\nvarying vec4 outline_vPosition;\\n\\n// Set the z level for the outline shadowmap rendering\\nvoid outline_setZLevel(float zLevel) {\\n  outline_vzLevel = zLevel;\\n}\\n\\n// Store an adjusted position for texture2DProj\\nvoid outline_setUV(vec4 position) {\\n  // mat4(\\n  //   0.5, 0.0, 0.0, 0.0,\\n  //   0.0, 0.5, 0.0, 0.0,\\n  //   0.0, 0.0, 0.5, 0.0,\\n  //   0.5, 0.5, 0.5, 1.0\\n  // ) * position;\\n  outline_vPosition = vec4(position.xyz * 0.5 + position.w * 0.5, position.w);\\n}\\n\";\nvar fs = \"uniform bool outline_uEnabled;\\nuniform bool outline_uRenderOutlines;\\nuniform sampler2D outline_uShadowmap;\\n\\nvarying float outline_vzLevel;\\n// varying vec2 outline_vUV;\\nvarying vec4 outline_vPosition;\\n\\nconst float OUTLINE_Z_LEVEL_ERROR = 0.01;\\n\\n// Return a darker color in shadowmap\\nvec4 outline_filterShadowColor(vec4 color) {\\n  return vec4(outline_vzLevel / 255., outline_vzLevel / 255., outline_vzLevel / 255., 1.);\\n}\\n\\n// Return a darker color if in shadowmap\\nvec4 outline_filterDarkenColor(vec4 color) {\\n  if (outline_uEnabled) {\\n    float maxZLevel;\\n    if (outline_vPosition.q > 0.0) {\\n      maxZLevel = texture2DProj(outline_uShadowmap, outline_vPosition).r * 255.;\\n    } else {\\n      discard;\\n    }\\n    if (maxZLevel < outline_vzLevel + OUTLINE_Z_LEVEL_ERROR) {\\n      vec4(color.rgb * 0.5, color.a);\\n    } else {\\n      discard;\\n    }\\n  }\\n  return color;\\n}\\n\\n// if enabled and rendering outlines - Render depth to shadowmap\\n// if enabled and rendering colors - Return a darker color if in shadowmap\\n// if disabled, just return color\\nvec4 outline_filterColor(vec4 color) {\\n  if (outline_uEnabled) {\\n    return outline_uRenderOutlines ?\\n      outline_filterShadowColor(color) :\\n      outline_filterDarkenColor(color);\\n  }\\n  return color;\\n}\\n\";\nvar _default = {\n  name: 'outline',\n  vs: vs,\n  fs: fs,\n  getUniforms: getUniforms\n};\nexports[\"default\"] = _default;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9zaGFkZXJsaWIvb3V0bGluZS9vdXRsaW5lLnRzIl0sIm5hbWVzIjpbIklOSVRJQUxfU1RBVEUiLCJvdXRsaW5lRW5hYmxlZCIsIm91dGxpbmVSZW5kZXJTaGFkb3dtYXAiLCJvdXRsaW5lU2hhZG93bWFwIiwiZ2V0VW5pZm9ybXMiLCJ1bmlmb3JtcyIsInVuZGVmaW5lZCIsIm91dGxpbmVfdUVuYWJsZWQiLCJvdXRsaW5lX3VSZW5kZXJPdXRsaW5lcyIsIm91dGxpbmVfdVNoYWRvd21hcCIsInZzIiwiZnMiLCJuYW1lIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUE7QUFDQSxJQUFNQSxhQUFrQyxHQUFHO0FBQ3pDQyxFQUFBQSxjQUFjLEVBQUUsS0FEeUI7QUFFekNDLEVBQUFBLHNCQUFzQixFQUFFLEtBRmlCO0FBR3pDQyxFQUFBQSxnQkFBZ0IsRUFBRTtBQUh1QixDQUEzQzs7QUFNQSxTQUFTQyxXQUFULEdBQW1HO0FBQUEsaUZBQWZKLGFBQWU7QUFBQSxNQUE1RUMsY0FBNEUsUUFBNUVBLGNBQTRFO0FBQUEsTUFBNURDLHNCQUE0RCxRQUE1REEsc0JBQTREO0FBQUEsTUFBcENDLGdCQUFvQyxRQUFwQ0EsZ0JBQW9DOztBQUNqRyxNQUFNRSxRQUE2QixHQUFHLEVBQXRDOztBQUNBLE1BQUlKLGNBQWMsS0FBS0ssU0FBdkIsRUFBa0M7QUFDaEM7QUFDQUQsSUFBQUEsUUFBUSxDQUFDRSxnQkFBVCxHQUE0Qk4sY0FBNUI7QUFDRDs7QUFDRCxNQUFJQyxzQkFBc0IsS0FBS0ksU0FBL0IsRUFBMEM7QUFDeEM7QUFDQUQsSUFBQUEsUUFBUSxDQUFDRyx1QkFBVCxHQUFtQ04sc0JBQW5DO0FBQ0Q7O0FBQ0QsTUFBSUMsZ0JBQWdCLEtBQUtHLFNBQXpCLEVBQW9DO0FBQ2xDRCxJQUFBQSxRQUFRLENBQUNJLGtCQUFULEdBQThCTixnQkFBOUI7QUFDRDs7QUFDRCxTQUFPRSxRQUFQO0FBQ0Q7O0FBRUQsSUFBTUssRUFBRSxtaUJBQVI7QUFzQkEsSUFBTUMsRUFBRSw0d0NBQVI7ZUErQ2U7QUFDYkMsRUFBQUEsSUFBSSxFQUFFLFNBRE87QUFFYkYsRUFBQUEsRUFBRSxFQUFGQSxFQUZhO0FBR2JDLEVBQUFBLEVBQUUsRUFBRkEsRUFIYTtBQUliUCxFQUFBQSxXQUFXLEVBQVhBO0FBSmEsQyIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIGNhbWVsY2FzZSAqL1xuY29uc3QgSU5JVElBTF9TVEFURTogUmVjb3JkPHN0cmluZywgYW55PiA9IHtcbiAgb3V0bGluZUVuYWJsZWQ6IGZhbHNlLFxuICBvdXRsaW5lUmVuZGVyU2hhZG93bWFwOiBmYWxzZSxcbiAgb3V0bGluZVNoYWRvd21hcDogbnVsbCxcbn07XG5cbmZ1bmN0aW9uIGdldFVuaWZvcm1zKHsgb3V0bGluZUVuYWJsZWQsIG91dGxpbmVSZW5kZXJTaGFkb3dtYXAsIG91dGxpbmVTaGFkb3dtYXAgfSA9IElOSVRJQUxfU1RBVEUpIHtcbiAgY29uc3QgdW5pZm9ybXM6IFJlY29yZDxzdHJpbmcsIGFueT4gPSB7fTtcbiAgaWYgKG91dGxpbmVFbmFibGVkICE9PSB1bmRlZmluZWQpIHtcbiAgICAvLyA/IDEuMCA6IDAuMDtcbiAgICB1bmlmb3Jtcy5vdXRsaW5lX3VFbmFibGVkID0gb3V0bGluZUVuYWJsZWQ7XG4gIH1cbiAgaWYgKG91dGxpbmVSZW5kZXJTaGFkb3dtYXAgIT09IHVuZGVmaW5lZCkge1xuICAgIC8vID8gMS4wIDogMC4wO1xuICAgIHVuaWZvcm1zLm91dGxpbmVfdVJlbmRlck91dGxpbmVzID0gb3V0bGluZVJlbmRlclNoYWRvd21hcDtcbiAgfVxuICBpZiAob3V0bGluZVNoYWRvd21hcCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgdW5pZm9ybXMub3V0bGluZV91U2hhZG93bWFwID0gb3V0bGluZVNoYWRvd21hcDtcbiAgfVxuICByZXR1cm4gdW5pZm9ybXM7XG59XG5cbmNvbnN0IHZzID0gYFxcXG5hdHRyaWJ1dGUgZmxvYXQgaW5zdGFuY2VaTGV2ZWw7XG52YXJ5aW5nIGZsb2F0IG91dGxpbmVfdnpMZXZlbDtcbnZhcnlpbmcgdmVjNCBvdXRsaW5lX3ZQb3NpdGlvbjtcblxuLy8gU2V0IHRoZSB6IGxldmVsIGZvciB0aGUgb3V0bGluZSBzaGFkb3dtYXAgcmVuZGVyaW5nXG52b2lkIG91dGxpbmVfc2V0WkxldmVsKGZsb2F0IHpMZXZlbCkge1xuICBvdXRsaW5lX3Z6TGV2ZWwgPSB6TGV2ZWw7XG59XG5cbi8vIFN0b3JlIGFuIGFkanVzdGVkIHBvc2l0aW9uIGZvciB0ZXh0dXJlMkRQcm9qXG52b2lkIG91dGxpbmVfc2V0VVYodmVjNCBwb3NpdGlvbikge1xuICAvLyBtYXQ0KFxuICAvLyAgIDAuNSwgMC4wLCAwLjAsIDAuMCxcbiAgLy8gICAwLjAsIDAuNSwgMC4wLCAwLjAsXG4gIC8vICAgMC4wLCAwLjAsIDAuNSwgMC4wLFxuICAvLyAgIDAuNSwgMC41LCAwLjUsIDEuMFxuICAvLyApICogcG9zaXRpb247XG4gIG91dGxpbmVfdlBvc2l0aW9uID0gdmVjNChwb3NpdGlvbi54eXogKiAwLjUgKyBwb3NpdGlvbi53ICogMC41LCBwb3NpdGlvbi53KTtcbn1cbmA7XG5cbmNvbnN0IGZzID0gYFxcXG51bmlmb3JtIGJvb2wgb3V0bGluZV91RW5hYmxlZDtcbnVuaWZvcm0gYm9vbCBvdXRsaW5lX3VSZW5kZXJPdXRsaW5lcztcbnVuaWZvcm0gc2FtcGxlcjJEIG91dGxpbmVfdVNoYWRvd21hcDtcblxudmFyeWluZyBmbG9hdCBvdXRsaW5lX3Z6TGV2ZWw7XG4vLyB2YXJ5aW5nIHZlYzIgb3V0bGluZV92VVY7XG52YXJ5aW5nIHZlYzQgb3V0bGluZV92UG9zaXRpb247XG5cbmNvbnN0IGZsb2F0IE9VVExJTkVfWl9MRVZFTF9FUlJPUiA9IDAuMDE7XG5cbi8vIFJldHVybiBhIGRhcmtlciBjb2xvciBpbiBzaGFkb3dtYXBcbnZlYzQgb3V0bGluZV9maWx0ZXJTaGFkb3dDb2xvcih2ZWM0IGNvbG9yKSB7XG4gIHJldHVybiB2ZWM0KG91dGxpbmVfdnpMZXZlbCAvIDI1NS4sIG91dGxpbmVfdnpMZXZlbCAvIDI1NS4sIG91dGxpbmVfdnpMZXZlbCAvIDI1NS4sIDEuKTtcbn1cblxuLy8gUmV0dXJuIGEgZGFya2VyIGNvbG9yIGlmIGluIHNoYWRvd21hcFxudmVjNCBvdXRsaW5lX2ZpbHRlckRhcmtlbkNvbG9yKHZlYzQgY29sb3IpIHtcbiAgaWYgKG91dGxpbmVfdUVuYWJsZWQpIHtcbiAgICBmbG9hdCBtYXhaTGV2ZWw7XG4gICAgaWYgKG91dGxpbmVfdlBvc2l0aW9uLnEgPiAwLjApIHtcbiAgICAgIG1heFpMZXZlbCA9IHRleHR1cmUyRFByb2oob3V0bGluZV91U2hhZG93bWFwLCBvdXRsaW5lX3ZQb3NpdGlvbikuciAqIDI1NS47XG4gICAgfSBlbHNlIHtcbiAgICAgIGRpc2NhcmQ7XG4gICAgfVxuICAgIGlmIChtYXhaTGV2ZWwgPCBvdXRsaW5lX3Z6TGV2ZWwgKyBPVVRMSU5FX1pfTEVWRUxfRVJST1IpIHtcbiAgICAgIHZlYzQoY29sb3IucmdiICogMC41LCBjb2xvci5hKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZGlzY2FyZDtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGNvbG9yO1xufVxuXG4vLyBpZiBlbmFibGVkIGFuZCByZW5kZXJpbmcgb3V0bGluZXMgLSBSZW5kZXIgZGVwdGggdG8gc2hhZG93bWFwXG4vLyBpZiBlbmFibGVkIGFuZCByZW5kZXJpbmcgY29sb3JzIC0gUmV0dXJuIGEgZGFya2VyIGNvbG9yIGlmIGluIHNoYWRvd21hcFxuLy8gaWYgZGlzYWJsZWQsIGp1c3QgcmV0dXJuIGNvbG9yXG52ZWM0IG91dGxpbmVfZmlsdGVyQ29sb3IodmVjNCBjb2xvcikge1xuICBpZiAob3V0bGluZV91RW5hYmxlZCkge1xuICAgIHJldHVybiBvdXRsaW5lX3VSZW5kZXJPdXRsaW5lcyA/XG4gICAgICBvdXRsaW5lX2ZpbHRlclNoYWRvd0NvbG9yKGNvbG9yKSA6XG4gICAgICBvdXRsaW5lX2ZpbHRlckRhcmtlbkNvbG9yKGNvbG9yKTtcbiAgfVxuICByZXR1cm4gY29sb3I7XG59XG5gO1xuXG5leHBvcnQgZGVmYXVsdCB7XG4gIG5hbWU6ICdvdXRsaW5lJyxcbiAgdnMsXG4gIGZzLFxuICBnZXRVbmlmb3Jtcyxcbn07XG4iXX0=","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.MAX_ARROWS = exports.DEFAULT_ARROWS = exports.ArrowStyles = void 0;\n// Describes the arrow style of polylines\nvar ArrowStyles = {\n  NONE: 0,\n  FORWARD: 1,\n  BACKWARD: 2,\n  BOTH: 3\n};\nexports.ArrowStyles = ArrowStyles;\nvar DEFAULT_ARROWS = 1;\nexports.DEFAULT_ARROWS = DEFAULT_ARROWS;\nvar MAX_ARROWS = 3;\nexports.MAX_ARROWS = MAX_ARROWS;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9zdHlsZS50cyJdLCJuYW1lcyI6WyJBcnJvd1N0eWxlcyIsIk5PTkUiLCJGT1JXQVJEIiwiQkFDS1dBUkQiLCJCT1RIIiwiREVGQVVMVF9BUlJPV1MiLCJNQVhfQVJST1dTIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQTtBQUNPLElBQU1BLFdBQVcsR0FBRztBQUN6QkMsRUFBQUEsSUFBSSxFQUFFLENBRG1CO0FBRXpCQyxFQUFBQSxPQUFPLEVBQUUsQ0FGZ0I7QUFHekJDLEVBQUFBLFFBQVEsRUFBRSxDQUhlO0FBSXpCQyxFQUFBQSxJQUFJLEVBQUU7QUFKbUIsQ0FBcEI7O0FBT0EsSUFBTUMsY0FBYyxHQUFHLENBQXZCOztBQUNBLElBQU1DLFVBQVUsR0FBRyxDQUFuQiIsInNvdXJjZXNDb250ZW50IjpbIi8vIERlc2NyaWJlcyB0aGUgYXJyb3cgc3R5bGUgb2YgcG9seWxpbmVzXG5leHBvcnQgY29uc3QgQXJyb3dTdHlsZXMgPSB7XG4gIE5PTkU6IDAsXG4gIEZPUldBUkQ6IDEsXG4gIEJBQ0tXQVJEOiAyLFxuICBCT1RIOiAzLFxufTtcblxuZXhwb3J0IGNvbnN0IERFRkFVTFRfQVJST1dTID0gMTtcbmV4cG9ydCBjb25zdCBNQVhfQVJST1dTID0gMztcbiJdfQ==","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.toDeckColor = toDeckColor;\nexports.recursivelyTraverseNestedArrays = recursivelyTraverseNestedArrays;\nexports.generatePointsParallelToLinePoints = generatePointsParallelToLinePoints;\nexports.distance2d = distance2d;\nexports.mix = mix;\nexports.nearestPointOnProjectedLine = nearestPointOnProjectedLine;\nexports.insertBefore = insertBefore;\n\nvar _destination = _interopRequireDefault(require(\"@turf/destination\"));\n\nvar _bearing = _interopRequireDefault(require(\"@turf/bearing\"));\n\nvar _pointToLineDistance = _interopRequireDefault(require(\"@turf/point-to-line-distance\"));\n\nvar _helpers = require(\"@turf/helpers\");\n\nvar _viewportMercatorProject = _interopRequireDefault(require(\"viewport-mercator-project\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _iterableToArrayLimit(arr, i) { if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return; var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(n); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction toDeckColor(color) {\n  var defaultColor = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [255, 0, 0, 255];\n\n  if (!Array.isArray(color)) {\n    return defaultColor;\n  }\n\n  return [color[0] * 255, color[1] * 255, color[2] * 255, color[3] * 255];\n} //\n// a GeoJSON helper function that calls the provided function with\n// an argument that is the most deeply-nested array having elements\n// that are arrays of primitives as an argument, e.g.\n//\n// {\n//   \"type\": \"MultiPolygon\",\n//   \"coordinates\": [\n//       [\n//           [[30, 20], [45, 40], [10, 40], [30, 20]]\n//       ],\n//       [\n//           [[15, 5], [40, 10], [10, 20], [5, 10], [15, 5]]\n//       ]\n//   ]\n// }\n//\n// the function would be called on:\n//\n// [[30, 20], [45, 40], [10, 40], [30, 20]]\n//\n// and\n//\n// [[15, 5], [40, 10], [10, 20], [5, 10], [15, 5]]\n//\n\n\nfunction recursivelyTraverseNestedArrays(array, prefix, fn) {\n  if (!Array.isArray(array[0])) {\n    return true;\n  }\n\n  for (var i = 0; i < array.length; i++) {\n    if (recursivelyTraverseNestedArrays(array[i], [].concat(_toConsumableArray(prefix), [i]), fn)) {\n      fn(array, prefix);\n      break;\n    }\n  }\n\n  return false;\n}\n\nfunction generatePointsParallelToLinePoints(p1, p2, groundCoords) {\n  var lineString = {\n    type: 'LineString',\n    coordinates: [p1, p2]\n  };\n  var pt = (0, _helpers.point)(groundCoords);\n  var ddistance = (0, _pointToLineDistance[\"default\"])(pt, lineString);\n  var lineBearing = (0, _bearing[\"default\"])(p1, p2); // Check if current point is to the left or right of line\n  // Line from A=(x1,y1) to B=(x2,y2) a point P=(x,y)\n  // then (x−x1)(y2−y1)−(y−y1)(x2−x1)\n\n  var isPointToLeftOfLine = (groundCoords[0] - p1[0]) * (p2[1] - p1[1]) - (groundCoords[1] - p1[1]) * (p2[0] - p1[0]); // Bearing to draw perpendicular to the line string\n\n  var orthogonalBearing = isPointToLeftOfLine < 0 ? lineBearing - 90 : lineBearing - 270; // Get coordinates for the point p3 and p4 which are perpendicular to the lineString\n  // Add the distance as the current position moves away from the lineString\n\n  var p3 = (0, _destination[\"default\"])(p2, ddistance, orthogonalBearing);\n  var p4 = (0, _destination[\"default\"])(p1, ddistance, orthogonalBearing); //@ts-ignore\n\n  return [p3.geometry.coordinates, p4.geometry.coordinates];\n}\n\nfunction distance2d(x1, y1, x2, y2) {\n  var dx = x1 - x2;\n  var dy = y1 - y2;\n  return Math.sqrt(dx * dx + dy * dy);\n}\n\nfunction mix(a, b, ratio) {\n  return b * ratio + a * (1 - ratio);\n}\n\nfunction nearestPointOnProjectedLine(line, inPoint, viewport) {\n  var wmViewport = new _viewportMercatorProject[\"default\"](viewport); // Project the line to viewport, then find the nearest point\n\n  var coordinates = line.geometry.coordinates;\n  var projectedCoords = coordinates.map(function (_ref) {\n    var _ref2 = _slicedToArray(_ref, 3),\n        x = _ref2[0],\n        y = _ref2[1],\n        _ref2$ = _ref2[2],\n        z = _ref2$ === void 0 ? 0 : _ref2$;\n\n    return wmViewport.project([x, y, z]);\n  }); //@ts-ignore\n\n  var _wmViewport$project = wmViewport.project(inPoint.geometry.coordinates),\n      _wmViewport$project2 = _slicedToArray(_wmViewport$project, 2),\n      x = _wmViewport$project2[0],\n      y = _wmViewport$project2[1]; // console.log('projectedCoords', JSON.stringify(projectedCoords));\n\n\n  var minDistance = Infinity;\n  var minPointInfo = {};\n  projectedCoords.forEach(function (_ref3, index) {\n    var _ref4 = _slicedToArray(_ref3, 2),\n        x2 = _ref4[0],\n        y2 = _ref4[1];\n\n    if (index === 0) {\n      return;\n    }\n\n    var _projectedCoords = _slicedToArray(projectedCoords[index - 1], 2),\n        x1 = _projectedCoords[0],\n        y1 = _projectedCoords[1]; // line from projectedCoords[index - 1] to projectedCoords[index]\n    // convert to Ax + By + C = 0\n\n\n    var A = y1 - y2;\n    var B = x2 - x1;\n    var C = x1 * y2 - x2 * y1; // https://en.wikipedia.org/wiki/Distance_from_a_point_to_a_line\n\n    var div = A * A + B * B;\n    var distance = Math.abs(A * x + B * y + C) / Math.sqrt(div); // TODO: Check if inside bounds\n\n    if (distance < minDistance) {\n      minDistance = distance;\n      minPointInfo = {\n        index: index,\n        x0: (B * (B * x - A * y) - A * C) / div,\n        y0: (A * (-B * x + A * y) - B * C) / div\n      };\n    }\n  }); //@ts-ignore\n\n  var _minPointInfo = minPointInfo,\n      index = _minPointInfo.index,\n      x0 = _minPointInfo.x0,\n      y0 = _minPointInfo.y0;\n\n  var _projectedCoords2 = _slicedToArray(projectedCoords[index - 1], 3),\n      x1 = _projectedCoords2[0],\n      y1 = _projectedCoords2[1],\n      _projectedCoords2$ = _projectedCoords2[2],\n      z1 = _projectedCoords2$ === void 0 ? 0 : _projectedCoords2$;\n\n  var _projectedCoords$inde = _slicedToArray(projectedCoords[index], 3),\n      x2 = _projectedCoords$inde[0],\n      y2 = _projectedCoords$inde[1],\n      _projectedCoords$inde2 = _projectedCoords$inde[2],\n      z2 = _projectedCoords$inde2 === void 0 ? 0 : _projectedCoords$inde2; // calculate what ratio of the line we are on to find the proper z\n\n\n  var lineLength = distance2d(x1, y1, x2, y2);\n  var startToPointLength = distance2d(x1, y1, x0, y0);\n  var ratio = startToPointLength / lineLength;\n  var z0 = mix(z1, z2, ratio);\n  return {\n    type: 'Feature',\n    geometry: {\n      type: 'Point',\n      coordinates: wmViewport.unproject([x0, y0, z0])\n    },\n    properties: {\n      // TODO: calculate the distance in proper units\n      dist: minDistance,\n      index: index - 1\n    }\n  };\n}\n/**\n * Inserts toInsert string into base string before insertBefore string.\n * @param base A string to insert into.\n * @param insertBefore A sub string in `base` string to insert before.\n * @param toInsert A string to insert.\n * @returns Combined string. `base` string if `insertBefore` string isn't found.\n */\n\n\nfunction insertBefore(base, insertBefore, toInsert) {\n  var at = base.indexOf(insertBefore);\n\n  if (at < 0) {\n    return base;\n  }\n\n  return base.slice(0, at) + toInsert + base.slice(at);\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy91dGlscy50cyJdLCJuYW1lcyI6WyJ0b0RlY2tDb2xvciIsImNvbG9yIiwiZGVmYXVsdENvbG9yIiwiQXJyYXkiLCJpc0FycmF5IiwicmVjdXJzaXZlbHlUcmF2ZXJzZU5lc3RlZEFycmF5cyIsImFycmF5IiwicHJlZml4IiwiZm4iLCJpIiwibGVuZ3RoIiwiZ2VuZXJhdGVQb2ludHNQYXJhbGxlbFRvTGluZVBvaW50cyIsInAxIiwicDIiLCJncm91bmRDb29yZHMiLCJsaW5lU3RyaW5nIiwidHlwZSIsImNvb3JkaW5hdGVzIiwicHQiLCJkZGlzdGFuY2UiLCJsaW5lQmVhcmluZyIsImlzUG9pbnRUb0xlZnRPZkxpbmUiLCJvcnRob2dvbmFsQmVhcmluZyIsInAzIiwicDQiLCJnZW9tZXRyeSIsImRpc3RhbmNlMmQiLCJ4MSIsInkxIiwieDIiLCJ5MiIsImR4IiwiZHkiLCJNYXRoIiwic3FydCIsIm1peCIsImEiLCJiIiwicmF0aW8iLCJuZWFyZXN0UG9pbnRPblByb2plY3RlZExpbmUiLCJsaW5lIiwiaW5Qb2ludCIsInZpZXdwb3J0Iiwid21WaWV3cG9ydCIsIldlYk1lcmNhdG9yVmlld3BvcnQiLCJwcm9qZWN0ZWRDb29yZHMiLCJtYXAiLCJ4IiwieSIsInoiLCJwcm9qZWN0IiwibWluRGlzdGFuY2UiLCJJbmZpbml0eSIsIm1pblBvaW50SW5mbyIsImZvckVhY2giLCJpbmRleCIsIkEiLCJCIiwiQyIsImRpdiIsImRpc3RhbmNlIiwiYWJzIiwieDAiLCJ5MCIsInoxIiwiejIiLCJsaW5lTGVuZ3RoIiwic3RhcnRUb1BvaW50TGVuZ3RoIiwiejAiLCJ1bnByb2plY3QiLCJwcm9wZXJ0aWVzIiwiZGlzdCIsImluc2VydEJlZm9yZSIsImJhc2UiLCJ0b0luc2VydCIsImF0IiwiaW5kZXhPZiIsInNsaWNlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBU0E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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VUFBVSxDQUFDMEIsU0FBWCxDQUFxQixDQUFDUCxFQUFELEVBQUtDLEVBQUwsRUFBU0ssRUFBVCxDQUFyQjtBQUZMLEtBRkw7QUFNTEUsSUFBQUEsVUFBVSxFQUFFO0FBQ1Y7QUFDQUMsTUFBQUEsSUFBSSxFQUFFcEIsV0FGSTtBQUdWSSxNQUFBQSxLQUFLLEVBQUVBLEtBQUssR0FBRztBQUhMO0FBTlAsR0FBUDtBQVlEO0FBRUQ7Ozs7Ozs7OztBQU9PLFNBQVNpQixZQUFULENBQXNCQyxJQUF0QixFQUFvQ0QsWUFBcEMsRUFBMERFLFFBQTFELEVBQW9GO0FBQ3pGLE1BQU1DLEVBQUUsR0FBR0YsSUFBSSxDQUFDRyxPQUFMLENBQWFKLFlBQWIsQ0FBWDs7QUFDQSxNQUFJRyxFQUFFLEdBQUcsQ0FBVCxFQUFZO0FBQ1YsV0FBT0YsSUFBUDtBQUNEOztBQUNELFNBQU9BLElBQUksQ0FBQ0ksS0FBTCxDQUFXLENBQVgsRUFBY0YsRUFBZCxJQUFvQkQsUUFBcEIsR0FBK0JELElBQUksQ0FBQ0ksS0FBTCxDQUFXRixFQUFYLENBQXRDO0FBQ0QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgZGVzdGluYXRpb24gZnJvbSAnQHR1cmYvZGVzdGluYXRpb24nO1xuaW1wb3J0IGJlYXJpbmcgZnJvbSAnQHR1cmYvYmVhcmluZyc7XG5pbXBvcnQgcG9pbnRUb0xpbmVEaXN0YW5jZSBmcm9tICdAdHVyZi9wb2ludC10by1saW5lLWRpc3RhbmNlJztcbmltcG9ydCB7IHBvaW50IH0gZnJvbSAnQHR1cmYvaGVscGVycyc7XG5pbXBvcnQge1xuICBQb3NpdGlvbixcbiAgUG9pbnQsXG4gIExpbmVTdHJpbmcsXG4gIEZlYXR1cmVPZixcbiAgRmVhdHVyZVdpdGhQcm9wcyxcbiAgVmlld3BvcnQsXG59IGZyb20gJ0BuZWJ1bGEuZ2wvZWRpdC1tb2Rlcyc7XG5pbXBvcnQgV2ViTWVyY2F0b3JWaWV3cG9ydCBmcm9tICd2aWV3cG9ydC1tZXJjYXRvci1wcm9qZWN0JztcblxuLy8gVE9ETyBlZGl0LW1vZGVzOiBkZWxldGUgYW5kIHVzZSBlZGl0LW1vZGVzL3V0aWxzIGluc3RlYWRcblxuZXhwb3J0IHR5cGUgTmVhcmVzdFBvaW50VHlwZSA9IEZlYXR1cmVXaXRoUHJvcHM8UG9pbnQsIHsgZGlzdDogbnVtYmVyOyBpbmRleDogbnVtYmVyIH0+O1xuXG5leHBvcnQgZnVuY3Rpb24gdG9EZWNrQ29sb3IoXG4gIGNvbG9yPzogW251bWJlciwgbnVtYmVyLCBudW1iZXIsIG51bWJlcl0gfCBudW1iZXIsXG4gIGRlZmF1bHRDb2xvcjogW251bWJlciwgbnVtYmVyLCBudW1iZXIsIG51bWJlcl0gPSBbMjU1LCAwLCAwLCAyNTVdXG4pOiBbbnVtYmVyLCBudW1iZXIsIG51bWJlciwgbnVtYmVyXSB7XG4gIGlmICghQXJyYXkuaXNBcnJheShjb2xvcikpIHtcbiAgICByZXR1cm4gZGVmYXVsdENvbG9yO1xuICB9XG4gIHJldHVybiBbY29sb3JbMF0gKiAyNTUsIGNvbG9yWzFdICogMjU1LCBjb2xvclsyXSAqIDI1NSwgY29sb3JbM10gKiAyNTVdO1xufVxuXG4vL1xuLy8gYSBHZW9KU09OIGhlbHBlciBmdW5jdGlvbiB0aGF0IGNhbGxzIHRoZSBwcm92aWRlZCBmdW5jdGlvbiB3aXRoXG4vLyBhbiBhcmd1bWVudCB0aGF0IGlzIHRoZSBtb3N0IGRlZXBseS1uZXN0ZWQgYXJyYXkgaGF2aW5nIGVsZW1lbnRzXG4vLyB0aGF0IGFyZSBhcnJheXMgb2YgcHJpbWl0aXZlcyBhcyBhbiBhcmd1bWVudCwgZS5nLlxuLy9cbi8vIHtcbi8vICAgXCJ0eXBlXCI6IFwiTXVsdGlQb2x5Z29uXCIsXG4vLyAgIFwiY29vcmRpbmF0ZXNcIjogW1xuLy8gICAgICAgW1xuLy8gICAgICAgICAgIFtbMzAsIDIwXSwgWzQ1LCA0MF0sIFsxMCwgNDBdLCBbMzAsIDIwXV1cbi8vICAgICAgIF0sXG4vLyAgICAgICBbXG4vLyAgICAgICAgICAgW1sxNSwgNV0sIFs0MCwgMTBdLCBbMTAsIDIwXSwgWzUsIDEwXSwgWzE1LCA1XV1cbi8vICAgICAgIF1cbi8vICAgXVxuLy8gfVxuLy9cbi8vIHRoZSBmdW5jdGlvbiB3b3VsZCBiZSBjYWxsZWQgb246XG4vL1xuLy8gW1szMCwgMjBdLCBbNDUsIDQwXSwgWzEwLCA0MF0sIFszMCwgMjBdXVxuLy9cbi8vIGFuZFxuLy9cbi8vIFtbMTUsIDVdLCBbNDAsIDEwXSwgWzEwLCAyMF0sIFs1LCAxMF0sIFsxNSwgNV1dXG4vL1xuZXhwb3J0IGZ1bmN0aW9uIHJlY3Vyc2l2ZWx5VHJhdmVyc2VOZXN0ZWRBcnJheXMoXG4gIGFycmF5OiBBcnJheTxhbnk+LFxuICBwcmVmaXg6IEFycmF5PG51bWJlcj4sXG4gIGZuOiBGdW5jdGlvblxuKSB7XG4gIGlmICghQXJyYXkuaXNBcnJheShhcnJheVswXSkpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICBmb3IgKGxldCBpID0gMDsgaSA8IGFycmF5Lmxlbmd0aDsgaSsrKSB7XG4gICAgaWYgKHJlY3Vyc2l2ZWx5VHJhdmVyc2VOZXN0ZWRBcnJheXMoYXJyYXlbaV0sIFsuLi5wcmVmaXgsIGldLCBmbikpIHtcbiAgICAgIGZuKGFycmF5LCBwcmVmaXgpO1xuICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG4gIHJldHVybiBmYWxzZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdlbmVyYXRlUG9pbnRzUGFyYWxsZWxUb0xpbmVQb2ludHMoXG4gIHAxOiBQb3NpdGlvbixcbiAgcDI6IFBvc2l0aW9uLFxuICBncm91bmRDb29yZHM6IFBvc2l0aW9uXG4pOiBQb3NpdGlvbltdIHtcbiAgY29uc3QgbGluZVN0cmluZzogTGluZVN0cmluZyA9IHtcbiAgICB0eXBlOiAnTGluZVN0cmluZycsXG4gICAgY29vcmRpbmF0ZXM6IFtwMSwgcDJdLFxuICB9O1xuICBjb25zdCBwdCA9IHBvaW50KGdyb3VuZENvb3Jkcyk7XG4gIGNvbnN0IGRkaXN0YW5jZSA9IHBvaW50VG9MaW5lRGlzdGFuY2UocHQsIGxpbmVTdHJpbmcpO1xuICBjb25zdCBsaW5lQmVhcmluZyA9IGJlYXJpbmcocDEsIHAyKTtcblxuICAvLyBDaGVjayBpZiBjdXJyZW50IHBvaW50IGlzIHRvIHRoZSBsZWZ0IG9yIHJpZ2h0IG9mIGxpbmVcbiAgLy8gTGluZSBmcm9tIEE9KHgxLHkxKSB0byBCPSh4Mix5MikgYSBwb2ludCBQPSh4LHkpXG4gIC8vIHRoZW4gKHjiiJJ4MSkoeTLiiJJ5MSniiJIoeeKIknkxKSh4MuKIkngxKVxuICBjb25zdCBpc1BvaW50VG9MZWZ0T2ZMaW5lID1cbiAgICAoZ3JvdW5kQ29vcmRzWzBdIC0gcDFbMF0pICogKHAyWzFdIC0gcDFbMV0pIC0gKGdyb3VuZENvb3Jkc1sxXSAtIHAxWzFdKSAqIChwMlswXSAtIHAxWzBdKTtcblxuICAvLyBCZWFyaW5nIHRvIGRyYXcgcGVycGVuZGljdWxhciB0byB0aGUgbGluZSBzdHJpbmdcbiAgY29uc3Qgb3J0aG9nb25hbEJlYXJpbmcgPSBpc1BvaW50VG9MZWZ0T2ZMaW5lIDwgMCA/IGxpbmVCZWFyaW5nIC0gOTAgOiBsaW5lQmVhcmluZyAtIDI3MDtcblxuICAvLyBHZXQgY29vcmRpbmF0ZXMgZm9yIHRoZSBwb2ludCBwMyBhbmQgcDQgd2hpY2ggYXJlIHBlcnBlbmRpY3VsYXIgdG8gdGhlIGxpbmVTdHJpbmdcbiAgLy8gQWRkIHRoZSBkaXN0YW5jZSBhcyB0aGUgY3VycmVudCBwb3NpdGlvbiBtb3ZlcyBhd2F5IGZyb20gdGhlIGxpbmVTdHJpbmdcbiAgY29uc3QgcDMgPSBkZXN0aW5hdGlvbihwMiwgZGRpc3RhbmNlLCBvcnRob2dvbmFsQmVhcmluZyk7XG4gIGNvbnN0IHA0ID0gZGVzdGluYXRpb24ocDEsIGRkaXN0YW5jZSwgb3J0aG9nb25hbEJlYXJpbmcpO1xuICAvL0B0cy1pZ25vcmVcbiAgcmV0dXJuIFtwMy5nZW9tZXRyeS5jb29yZGluYXRlcywgcDQuZ2VvbWV0cnkuY29vcmRpbmF0ZXNdO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZGlzdGFuY2UyZCh4MTogbnVtYmVyLCB5MTogbnVtYmVyLCB4MjogbnVtYmVyLCB5MjogbnVtYmVyKTogbnVtYmVyIHtcbiAgY29uc3QgZHggPSB4MSAtIHgyO1xuICBjb25zdCBkeSA9IHkxIC0geTI7XG4gIHJldHVybiBNYXRoLnNxcnQoZHggKiBkeCArIGR5ICogZHkpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWl4KGE6IG51bWJlciwgYjogbnVtYmVyLCByYXRpbzogbnVtYmVyKTogbnVtYmVyIHtcbiAgcmV0dXJuIGIgKiByYXRpbyArIGEgKiAoMSAtIHJhdGlvKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG5lYXJlc3RQb2ludE9uUHJvamVjdGVkTGluZShcbiAgbGluZTogRmVhdHVyZU9mPExpbmVTdHJpbmc+LFxuICBpblBvaW50OiBGZWF0dXJlT2Y8UG9pbnQ+LFxuICB2aWV3cG9ydDogVmlld3BvcnRcbik6IE5lYXJlc3RQb2ludFR5cGUge1xuICBjb25zdCB3bVZpZXdwb3J0ID0gbmV3IFdlYk1lcmNhdG9yVmlld3BvcnQodmlld3BvcnQpO1xuICAvLyBQcm9qZWN0IHRoZSBsaW5lIHRvIHZpZXdwb3J0LCB0aGVuIGZpbmQgdGhlIG5lYXJlc3QgcG9pbnRcbiAgY29uc3QgY29vcmRpbmF0ZXM6IEFycmF5PEFycmF5PG51bWJlcj4+ID0gbGluZS5nZW9tZXRyeS5jb29yZGluYXRlcyBhcyBhbnk7XG4gIGNvbnN0IHByb2plY3RlZENvb3JkcyA9IGNvb3JkaW5hdGVzLm1hcCgoW3gsIHksIHogPSAwXSkgPT4gd21WaWV3cG9ydC5wcm9qZWN0KFt4LCB5LCB6XSkpO1xuICAvL0B0cy1pZ25vcmVcbiAgY29uc3QgW3gsIHldID0gd21WaWV3cG9ydC5wcm9qZWN0KGluUG9pbnQuZ2VvbWV0cnkuY29vcmRpbmF0ZXMpO1xuICAvLyBjb25zb2xlLmxvZygncHJvamVjdGVkQ29vcmRzJywgSlNPTi5zdHJpbmdpZnkocHJvamVjdGVkQ29vcmRzKSk7XG5cbiAgbGV0IG1pbkRpc3RhbmNlID0gSW5maW5pdHk7XG4gIGxldCBtaW5Qb2ludEluZm8gPSB7fTtcblxuICBwcm9qZWN0ZWRDb29yZHMuZm9yRWFjaCgoW3gyLCB5Ml0sIGluZGV4KSA9PiB7XG4gICAgaWYgKGluZGV4ID09PSAwKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgW3gxLCB5MV0gPSBwcm9qZWN0ZWRDb29yZHNbaW5kZXggLSAxXTtcblxuICAgIC8vIGxpbmUgZnJvbSBwcm9qZWN0ZWRDb29yZHNbaW5kZXggLSAxXSB0byBwcm9qZWN0ZWRDb29yZHNbaW5kZXhdXG4gICAgLy8gY29udmVydCB0byBBeCArIEJ5ICsgQyA9IDBcbiAgICBjb25zdCBBID0geTEgLSB5MjtcbiAgICBjb25zdCBCID0geDIgLSB4MTtcbiAgICBjb25zdCBDID0geDEgKiB5MiAtIHgyICogeTE7XG5cbiAgICAvLyBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9EaXN0YW5jZV9mcm9tX2FfcG9pbnRfdG9fYV9saW5lXG4gICAgY29uc3QgZGl2ID0gQSAqIEEgKyBCICogQjtcbiAgICBjb25zdCBkaXN0YW5jZSA9IE1hdGguYWJzKEEgKiB4ICsgQiAqIHkgKyBDKSAvIE1hdGguc3FydChkaXYpO1xuXG4gICAgLy8gVE9ETzogQ2hlY2sgaWYgaW5zaWRlIGJvdW5kc1xuXG4gICAgaWYgKGRpc3RhbmNlIDwgbWluRGlzdGFuY2UpIHtcbiAgICAgIG1pbkRpc3RhbmNlID0gZGlzdGFuY2U7XG4gICAgICBtaW5Qb2ludEluZm8gPSB7XG4gICAgICAgIGluZGV4LFxuICAgICAgICB4MDogKEIgKiAoQiAqIHggLSBBICogeSkgLSBBICogQykgLyBkaXYsXG4gICAgICAgIHkwOiAoQSAqICgtQiAqIHggKyBBICogeSkgLSBCICogQykgLyBkaXYsXG4gICAgICB9O1xuICAgIH1cbiAgfSk7XG4gIC8vQHRzLWlnbm9yZVxuICBjb25zdCB7IGluZGV4LCB4MCwgeTAgfSA9IG1pblBvaW50SW5mbztcbiAgY29uc3QgW3gxLCB5MSwgejEgPSAwXSA9IHByb2plY3RlZENvb3Jkc1tpbmRleCAtIDFdO1xuICBjb25zdCBbeDIsIHkyLCB6MiA9IDBdID0gcHJvamVjdGVkQ29vcmRzW2luZGV4XTtcblxuICAvLyBjYWxjdWxhdGUgd2hhdCByYXRpbyBvZiB0aGUgbGluZSB3ZSBhcmUgb24gdG8gZmluZCB0aGUgcHJvcGVyIHpcbiAgY29uc3QgbGluZUxlbmd0aCA9IGRpc3RhbmNlMmQoeDEsIHkxLCB4MiwgeTIpO1xuICBjb25zdCBzdGFydFRvUG9pbnRMZW5ndGggPSBkaXN0YW5jZTJkKHgxLCB5MSwgeDAsIHkwKTtcbiAgY29uc3QgcmF0aW8gPSBzdGFydFRvUG9pbnRMZW5ndGggLyBsaW5lTGVuZ3RoO1xuICBjb25zdCB6MCA9IG1peCh6MSwgejIsIHJhdGlvKTtcblxuICByZXR1cm4ge1xuICAgIHR5cGU6ICdGZWF0dXJlJyxcbiAgICBnZW9tZXRyeToge1xuICAgICAgdHlwZTogJ1BvaW50JyxcbiAgICAgIGNvb3JkaW5hdGVzOiB3bVZpZXdwb3J0LnVucHJvamVjdChbeDAsIHkwLCB6MF0pLFxuICAgIH0sXG4gICAgcHJvcGVydGllczoge1xuICAgICAgLy8gVE9ETzogY2FsY3VsYXRlIHRoZSBkaXN0YW5jZSBpbiBwcm9wZXIgdW5pdHNcbiAgICAgIGRpc3Q6IG1pbkRpc3RhbmNlLFxuICAgICAgaW5kZXg6IGluZGV4IC0gMSxcbiAgICB9LFxuICB9O1xufVxuXG4vKipcbiAqIEluc2VydHMgdG9JbnNlcnQgc3RyaW5nIGludG8gYmFzZSBzdHJpbmcgYmVmb3JlIGluc2VydEJlZm9yZSBzdHJpbmcuXG4gKiBAcGFyYW0gYmFzZSBBIHN0cmluZyB0byBpbnNlcnQgaW50by5cbiAqIEBwYXJhbSBpbnNlcnRCZWZvcmUgQSBzdWIgc3RyaW5nIGluIGBiYXNlYCBzdHJpbmcgdG8gaW5zZXJ0IGJlZm9yZS5cbiAqIEBwYXJhbSB0b0luc2VydCBBIHN0cmluZyB0byBpbnNlcnQuXG4gKiBAcmV0dXJucyBDb21iaW5lZCBzdHJpbmcuIGBiYXNlYCBzdHJpbmcgaWYgYGluc2VydEJlZm9yZWAgc3RyaW5nIGlzbid0IGZvdW5kLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaW5zZXJ0QmVmb3JlKGJhc2U6IHN0cmluZywgaW5zZXJ0QmVmb3JlOiBzdHJpbmcsIHRvSW5zZXJ0OiBzdHJpbmcpOiBzdHJpbmcge1xuICBjb25zdCBhdCA9IGJhc2UuaW5kZXhPZihpbnNlcnRCZWZvcmUpO1xuICBpZiAoYXQgPCAwKSB7XG4gICAgcmV0dXJuIGJhc2U7XG4gIH1cbiAgcmV0dXJuIGJhc2Uuc2xpY2UoMCwgYXQpICsgdG9JbnNlcnQgKyBiYXNlLnNsaWNlKGF0KTtcbn1cbiJdfQ==","import isBrowser from './is-browser';\nimport isElectron from './is-electron';\nconst window = globalThis;\nexport function isMobile() {\n  return typeof window.orientation !== 'undefined';\n}\nexport default function getBrowser(mockUserAgent) {\n  if (!mockUserAgent && !isBrowser()) {\n    return 'Node';\n  }\n\n  if (isElectron(mockUserAgent)) {\n    return 'Electron';\n  }\n\n  const navigator_ = typeof navigator !== 'undefined' ? navigator : {};\n  const userAgent = mockUserAgent || navigator_.userAgent || '';\n\n  if (userAgent.indexOf('Edge') > -1) {\n    return 'Edge';\n  }\n\n  const isMSIE = userAgent.indexOf('MSIE ') !== -1;\n  const isTrident = userAgent.indexOf('Trident/') !== -1;\n\n  if (isMSIE || isTrident) {\n    return 'IE';\n  }\n\n  if (window.chrome) {\n    return 'Chrome';\n  }\n\n  if (window.safari) {\n    return 'Safari';\n  }\n\n  if (window.mozInnerScreenX) {\n    return 'Firefox';\n  }\n\n  return 'Unknown';\n}\n//# sourceMappingURL=get-browser.js.map","import isElectron from './is-electron';\nexport default function isBrowser() {\n  const isNode = typeof process === 'object' && String(process) === '[object process]' && !process.browser;\n  return !isNode || isElectron();\n}\nexport function isBrowserMainThread() {\n  return isBrowser() && typeof document !== 'undefined';\n}\n//# sourceMappingURL=is-browser.js.map","export default function isElectron(mockUserAgent) {\n  if (typeof window !== 'undefined' && typeof window.process === 'object' && window.process.type === 'renderer') {\n    return true;\n  }\n\n  if (typeof process !== 'undefined' && typeof process.versions === 'object' && Boolean(process.versions['electron'])) {\n    return true;\n  }\n\n  const realUserAgent = typeof navigator === 'object' && typeof navigator.userAgent === 'string' && navigator.userAgent;\n  const userAgent = mockUserAgent || realUserAgent;\n\n  if (userAgent && userAgent.indexOf('Electron') >= 0) {\n    return true;\n  }\n\n  return false;\n}\n//# sourceMappingURL=is-electron.js.map","import checkIfBrowser from '../lib/is-browser';\nexport { self, window, global, document, process, console } from '../lib/globals';\nexport const VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'untranspiled source';\nexport const isBrowser = checkIfBrowser();\n//# sourceMappingURL=globals.js.map","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\n\nfunction getStorage(type) {\n  try {\n    const storage = window[type];\n    const x = '__storage_test__';\n    storage.setItem(x, x);\n    storage.removeItem(x);\n    return storage;\n  } catch (e) {\n    return null;\n  }\n}\n\nexport class LocalStorage {\n  constructor(id, defaultConfig) {\n    let type = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'sessionStorage';\n\n    _defineProperty(this, \"storage\", void 0);\n\n    _defineProperty(this, \"id\", void 0);\n\n    _defineProperty(this, \"config\", void 0);\n\n    this.storage = getStorage(type);\n    this.id = id;\n    this.config = defaultConfig;\n\n    this._loadConfiguration();\n  }\n\n  getConfiguration() {\n    return this.config;\n  }\n\n  setConfiguration(configuration) {\n    Object.assign(this.config, configuration);\n\n    if (this.storage) {\n      const serialized = JSON.stringify(this.config);\n      this.storage.setItem(this.id, serialized);\n    }\n  }\n\n  _loadConfiguration() {\n    let configuration = {};\n\n    if (this.storage) {\n      const serializedConfiguration = this.storage.getItem(this.id);\n      configuration = serializedConfiguration ? JSON.parse(serializedConfiguration) : {};\n    }\n\n    Object.assign(this.config, configuration);\n    return this;\n  }\n\n}\n//# sourceMappingURL=local-storage.js.map","export function formatTime(ms) {\n  let formatted;\n\n  if (ms < 10) {\n    formatted = \"\".concat(ms.toFixed(2), \"ms\");\n  } else if (ms < 100) {\n    formatted = \"\".concat(ms.toFixed(1), \"ms\");\n  } else if (ms < 1000) {\n    formatted = \"\".concat(ms.toFixed(0), \"ms\");\n  } else {\n    formatted = \"\".concat((ms / 1000).toFixed(2), \"s\");\n  }\n\n  return formatted;\n}\nexport function leftPad(string) {\n  let length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 8;\n  const padLength = Math.max(length - string.length, 0);\n  return \"\".concat(' '.repeat(padLength)).concat(string);\n}\nexport function rightPad(string) {\n  let length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 8;\n  const padLength = Math.max(length - string.length, 0);\n  return \"\".concat(string).concat(' '.repeat(padLength));\n}\nexport function formatValue(v) {\n  let opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n  const EPSILON = 1e-16;\n  const {\n    isInteger = false\n  } = opts;\n\n  if (Array.isArray(v) || ArrayBuffer.isView(v)) {\n    return formatArrayValue(v, opts);\n  }\n\n  if (!Number.isFinite(v)) {\n    return String(v);\n  }\n\n  if (Math.abs(v) < EPSILON) {\n    return isInteger ? '0' : '0.';\n  }\n\n  if (isInteger) {\n    return v.toFixed(0);\n  }\n\n  if (Math.abs(v) > 100 && Math.abs(v) < 10000) {\n    return v.toFixed(0);\n  }\n\n  const string = v.toPrecision(2);\n  const decimal = string.indexOf('.0');\n  return decimal === string.length - 2 ? string.slice(0, -1) : string;\n}\n\nfunction formatArrayValue(v, opts) {\n  const {\n    maxElts = 16,\n    size = 1\n  } = opts;\n  let string = '[';\n\n  for (let i = 0; i < v.length && i < maxElts; ++i) {\n    if (i > 0) {\n      string += \",\".concat(i % size === 0 ? ' ' : '');\n    }\n\n    string += formatValue(v[i], opts);\n  }\n\n  const terminator = v.length > maxElts ? '...' : ']';\n  return \"\".concat(string).concat(terminator);\n}\n\nexport function formatImage(image, message, scale) {\n  let maxWidth = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 600;\n  const imageUrl = image.src.replace(/\\(/g, '%28').replace(/\\)/g, '%29');\n\n  if (image.width > maxWidth) {\n    scale = Math.min(scale, maxWidth / image.width);\n  }\n\n  const width = image.width * scale;\n  const height = image.height * scale;\n  const style = ['font-size:1px;', \"padding:\".concat(Math.floor(height / 2), \"px \").concat(Math.floor(width / 2), \"px;\"), \"line-height:\".concat(height, \"px;\"), \"background:url(\".concat(imageUrl, \");\"), \"background-size:\".concat(width, \"px \").concat(height, \"px;\"), 'color:transparent;'].join('');\n  return [\"\".concat(message, \" %c+\"), style];\n}\n//# sourceMappingURL=formatters.js.map","import { isBrowser } from '@probe.gl/env';\nexport let COLOR;\n\n(function (COLOR) {\n  COLOR[COLOR[\"BLACK\"] = 30] = \"BLACK\";\n  COLOR[COLOR[\"RED\"] = 31] = \"RED\";\n  COLOR[COLOR[\"GREEN\"] = 32] = \"GREEN\";\n  COLOR[COLOR[\"YELLOW\"] = 33] = \"YELLOW\";\n  COLOR[COLOR[\"BLUE\"] = 34] = \"BLUE\";\n  COLOR[COLOR[\"MAGENTA\"] = 35] = \"MAGENTA\";\n  COLOR[COLOR[\"CYAN\"] = 36] = \"CYAN\";\n  COLOR[COLOR[\"WHITE\"] = 37] = \"WHITE\";\n  COLOR[COLOR[\"BRIGHT_BLACK\"] = 90] = \"BRIGHT_BLACK\";\n  COLOR[COLOR[\"BRIGHT_RED\"] = 91] = \"BRIGHT_RED\";\n  COLOR[COLOR[\"BRIGHT_GREEN\"] = 92] = \"BRIGHT_GREEN\";\n  COLOR[COLOR[\"BRIGHT_YELLOW\"] = 93] = \"BRIGHT_YELLOW\";\n  COLOR[COLOR[\"BRIGHT_BLUE\"] = 94] = \"BRIGHT_BLUE\";\n  COLOR[COLOR[\"BRIGHT_MAGENTA\"] = 95] = \"BRIGHT_MAGENTA\";\n  COLOR[COLOR[\"BRIGHT_CYAN\"] = 96] = \"BRIGHT_CYAN\";\n  COLOR[COLOR[\"BRIGHT_WHITE\"] = 97] = \"BRIGHT_WHITE\";\n})(COLOR || (COLOR = {}));\n\nfunction getColor(color) {\n  return typeof color === 'string' ? COLOR[color.toUpperCase()] || COLOR.WHITE : color;\n}\n\nexport function addColor(string, color, background) {\n  if (!isBrowser && typeof string === 'string') {\n    if (color) {\n      color = getColor(color);\n      string = \"\\x1B[\".concat(color, \"m\").concat(string, \"\\x1B[39m\");\n    }\n\n    if (background) {\n      color = getColor(background);\n      string = \"\\x1B[\".concat(background + 10, \"m\").concat(string, \"\\x1B[49m\");\n    }\n  }\n\n  return string;\n}\n//# sourceMappingURL=color.js.map","export default function assert(condition, message) {\n  if (!condition) {\n    throw new Error(message || 'Assertion failed');\n  }\n}\n//# sourceMappingURL=assert.js.map","const globals = {\n  self: typeof self !== 'undefined' && self,\n  window: typeof window !== 'undefined' && window,\n  global: typeof global !== 'undefined' && global,\n  document: typeof document !== 'undefined' && document,\n  process: typeof process === 'object' && process\n};\nconst global_ = globalThis;\nconst self_ = globals.self || globals.window || globals.global;\nconst window_ = globals.window || globals.self || globals.global;\nconst document_ = globals.document || {};\nconst process_ = globals.process || {};\nconst console_ = console;\nexport { self_ as self, window_ as window, global_ as global, document_ as document, process_ as process, console_ as console };\n//# sourceMappingURL=globals.js.map","import { window, process, isBrowser } from '@probe.gl/env';\nexport function getHiResTimestamp() {\n  let timestamp;\n\n  if (isBrowser && 'performance' in window) {\n    var _window$performance, _window$performance$n;\n\n    timestamp = window === null || window === void 0 ? void 0 : (_window$performance = window.performance) === null || _window$performance === void 0 ? void 0 : (_window$performance$n = _window$performance.now) === null || _window$performance$n === void 0 ? void 0 : _window$performance$n.call(_window$performance);\n  } else if ('hrtime' in process) {\n    var _process$hrtime;\n\n    const timeParts = process === null || process === void 0 ? void 0 : (_process$hrtime = process.hrtime) === null || _process$hrtime === void 0 ? void 0 : _process$hrtime.call(process);\n    timestamp = timeParts[0] * 1000 + timeParts[1] / 1e6;\n  } else {\n    timestamp = Date.now();\n  }\n\n  return timestamp;\n}\n//# sourceMappingURL=hi-res-timestamp.js.map","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { VERSION, isBrowser } from '@probe.gl/env';\nimport { LocalStorage } from './utils/local-storage';\nimport { formatImage, formatTime, leftPad } from './utils/formatters';\nimport { addColor } from './utils/color';\nimport { autobind } from './utils/autobind';\nimport assert from './utils/assert';\nimport { getHiResTimestamp } from './utils/hi-res-timestamp';\nconst originalConsole = {\n  debug: isBrowser ? console.debug || console.log : console.log,\n  log: console.log,\n  info: console.info,\n  warn: console.warn,\n  error: console.error\n};\nconst DEFAULT_SETTINGS = {\n  enabled: true,\n  level: 0\n};\n\nfunction noop() {}\n\nconst cache = {};\nconst ONCE = {\n  once: true\n};\nexport class Log {\n  constructor() {\n    let {\n      id\n    } = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {\n      id: ''\n    };\n\n    _defineProperty(this, \"id\", void 0);\n\n    _defineProperty(this, \"VERSION\", VERSION);\n\n    _defineProperty(this, \"_startTs\", getHiResTimestamp());\n\n    _defineProperty(this, \"_deltaTs\", getHiResTimestamp());\n\n    _defineProperty(this, \"_storage\", void 0);\n\n    _defineProperty(this, \"userData\", {});\n\n    _defineProperty(this, \"LOG_THROTTLE_TIMEOUT\", 0);\n\n    this.id = id;\n    this.userData = {};\n    this._storage = new LocalStorage(\"__probe-\".concat(this.id, \"__\"), DEFAULT_SETTINGS);\n    this.timeStamp(\"\".concat(this.id, \" started\"));\n    autobind(this);\n    Object.seal(this);\n  }\n\n  set level(newLevel) {\n    this.setLevel(newLevel);\n  }\n\n  get level() {\n    return this.getLevel();\n  }\n\n  isEnabled() {\n    return this._storage.config.enabled;\n  }\n\n  getLevel() {\n    return this._storage.config.level;\n  }\n\n  getTotal() {\n    return Number((getHiResTimestamp() - this._startTs).toPrecision(10));\n  }\n\n  getDelta() {\n    return Number((getHiResTimestamp() - this._deltaTs).toPrecision(10));\n  }\n\n  set priority(newPriority) {\n    this.level = newPriority;\n  }\n\n  get priority() {\n    return this.level;\n  }\n\n  getPriority() {\n    return this.level;\n  }\n\n  enable() {\n    let enabled = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n\n    this._storage.setConfiguration({\n      enabled\n    });\n\n    return this;\n  }\n\n  setLevel(level) {\n    this._storage.setConfiguration({\n      level\n    });\n\n    return this;\n  }\n\n  get(setting) {\n    return this._storage.config[setting];\n  }\n\n  set(setting, value) {\n    this._storage.setConfiguration({\n      [setting]: value\n    });\n  }\n\n  settings() {\n    if (console.table) {\n      console.table(this._storage.config);\n    } else {\n      console.log(this._storage.config);\n    }\n  }\n\n  assert(condition, message) {\n    assert(condition, message);\n  }\n\n  warn(message) {\n    return this._getLogFunction(0, message, originalConsole.warn, arguments, ONCE);\n  }\n\n  error(message) {\n    return this._getLogFunction(0, message, originalConsole.error, arguments);\n  }\n\n  deprecated(oldUsage, newUsage) {\n    return this.warn(\"`\".concat(oldUsage, \"` is deprecated and will be removed in a later version. Use `\").concat(newUsage, \"` instead\"));\n  }\n\n  removed(oldUsage, newUsage) {\n    return this.error(\"`\".concat(oldUsage, \"` has been removed. Use `\").concat(newUsage, \"` instead\"));\n  }\n\n  probe(logLevel, message) {\n    return this._getLogFunction(logLevel, message, originalConsole.log, arguments, {\n      time: true,\n      once: true\n    });\n  }\n\n  log(logLevel, message) {\n    return this._getLogFunction(logLevel, message, originalConsole.debug, arguments);\n  }\n\n  info(logLevel, message) {\n    return this._getLogFunction(logLevel, message, console.info, arguments);\n  }\n\n  once(logLevel, message) {\n    for (var _len = arguments.length, args = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {\n      args[_key - 2] = arguments[_key];\n    }\n\n    return this._getLogFunction(logLevel, message, originalConsole.debug || originalConsole.info, arguments, ONCE);\n  }\n\n  table(logLevel, table, columns) {\n    if (table) {\n      return this._getLogFunction(logLevel, table, console.table || noop, columns && [columns], {\n        tag: getTableHeader(table)\n      });\n    }\n\n    return noop;\n  }\n\n  image(_ref) {\n    let {\n      logLevel,\n      priority,\n      image,\n      message = '',\n      scale = 1\n    } = _ref;\n\n    if (!this._shouldLog(logLevel || priority)) {\n      return noop;\n    }\n\n    return isBrowser ? logImageInBrowser({\n      image,\n      message,\n      scale\n    }) : logImageInNode({\n      image,\n      message,\n      scale\n    });\n  }\n\n  time(logLevel, message) {\n    return this._getLogFunction(logLevel, message, console.time ? console.time : console.info);\n  }\n\n  timeEnd(logLevel, message) {\n    return this._getLogFunction(logLevel, message, console.timeEnd ? console.timeEnd : console.info);\n  }\n\n  timeStamp(logLevel, message) {\n    return this._getLogFunction(logLevel, message, console.timeStamp || noop);\n  }\n\n  group(logLevel, message) {\n    let opts = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {\n      collapsed: false\n    };\n    const options = normalizeArguments({\n      logLevel,\n      message,\n      opts\n    });\n    const {\n      collapsed\n    } = opts;\n    options.method = (collapsed ? console.groupCollapsed : console.group) || console.info;\n    return this._getLogFunction(options);\n  }\n\n  groupCollapsed(logLevel, message) {\n    let opts = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n    return this.group(logLevel, message, Object.assign({}, opts, {\n      collapsed: true\n    }));\n  }\n\n  groupEnd(logLevel) {\n    return this._getLogFunction(logLevel, '', console.groupEnd || noop);\n  }\n\n  withGroup(logLevel, message, func) {\n    this.group(logLevel, message)();\n\n    try {\n      func();\n    } finally {\n      this.groupEnd(logLevel)();\n    }\n  }\n\n  trace() {\n    if (console.trace) {\n      console.trace();\n    }\n  }\n\n  _shouldLog(logLevel) {\n    return this.isEnabled() && this.getLevel() >= normalizeLogLevel(logLevel);\n  }\n\n  _getLogFunction(logLevel, message, method, args, opts) {\n    if (this._shouldLog(logLevel)) {\n      opts = normalizeArguments({\n        logLevel,\n        message,\n        args,\n        opts\n      });\n      method = method || opts.method;\n      assert(method);\n      opts.total = this.getTotal();\n      opts.delta = this.getDelta();\n      this._deltaTs = getHiResTimestamp();\n      const tag = opts.tag || opts.message;\n\n      if (opts.once) {\n        if (!cache[tag]) {\n          cache[tag] = getHiResTimestamp();\n        } else {\n          return noop;\n        }\n      }\n\n      message = decorateMessage(this.id, opts.message, opts);\n      return method.bind(console, message, ...opts.args);\n    }\n\n    return noop;\n  }\n\n}\n\n_defineProperty(Log, \"VERSION\", VERSION);\n\nfunction normalizeLogLevel(logLevel) {\n  if (!logLevel) {\n    return 0;\n  }\n\n  let resolvedLevel;\n\n  switch (typeof logLevel) {\n    case 'number':\n      resolvedLevel = logLevel;\n      break;\n\n    case 'object':\n      resolvedLevel = logLevel.logLevel || logLevel.priority || 0;\n      break;\n\n    default:\n      return 0;\n  }\n\n  assert(Number.isFinite(resolvedLevel) && resolvedLevel >= 0);\n  return resolvedLevel;\n}\n\nexport function normalizeArguments(opts) {\n  const {\n    logLevel,\n    message\n  } = opts;\n  opts.logLevel = normalizeLogLevel(logLevel);\n  const args = opts.args ? Array.from(opts.args) : [];\n\n  while (args.length && args.shift() !== message) {}\n\n  switch (typeof logLevel) {\n    case 'string':\n    case 'function':\n      if (message !== undefined) {\n        args.unshift(message);\n      }\n\n      opts.message = logLevel;\n      break;\n\n    case 'object':\n      Object.assign(opts, logLevel);\n      break;\n\n    default:\n  }\n\n  if (typeof opts.message === 'function') {\n    opts.message = opts.message();\n  }\n\n  const messageType = typeof opts.message;\n  assert(messageType === 'string' || messageType === 'object');\n  return Object.assign(opts, {\n    args\n  }, opts.opts);\n}\n\nfunction decorateMessage(id, message, opts) {\n  if (typeof message === 'string') {\n    const time = opts.time ? leftPad(formatTime(opts.total)) : '';\n    message = opts.time ? \"\".concat(id, \": \").concat(time, \"  \").concat(message) : \"\".concat(id, \": \").concat(message);\n    message = addColor(message, opts.color, opts.background);\n  }\n\n  return message;\n}\n\nfunction logImageInNode(_ref2) {\n  let {\n    image,\n    message = '',\n    scale = 1\n  } = _ref2;\n  console.warn('removed');\n  return noop;\n}\n\nfunction logImageInBrowser(_ref3) {\n  let {\n    image,\n    message = '',\n    scale = 1\n  } = _ref3;\n\n  if (typeof image === 'string') {\n    const img = new Image();\n\n    img.onload = () => {\n      const args = formatImage(img, message, scale);\n      console.log(...args);\n    };\n\n    img.src = image;\n    return noop;\n  }\n\n  const element = image.nodeName || '';\n\n  if (element.toLowerCase() === 'img') {\n    console.log(...formatImage(image, message, scale));\n    return noop;\n  }\n\n  if (element.toLowerCase() === 'canvas') {\n    const img = new Image();\n\n    img.onload = () => console.log(...formatImage(img, message, scale));\n\n    img.src = image.toDataURL();\n    return noop;\n  }\n\n  return noop;\n}\n\nfunction getTableHeader(table) {\n  for (const key in table) {\n    for (const title in table[key]) {\n      return title || 'untitled';\n    }\n  }\n\n  return 'empty';\n}\n//# sourceMappingURL=log.js.map","export function autobind(obj) {\n  let predefined = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : ['constructor'];\n  const proto = Object.getPrototypeOf(obj);\n  const propNames = Object.getOwnPropertyNames(proto);\n\n  for (const key of propNames) {\n    if (typeof obj[key] === 'function') {\n      if (!predefined.find(name => key === name)) {\n        obj[key] = obj[key].bind(obj);\n      }\n    }\n  }\n}\n//# sourceMappingURL=autobind.js.map","export default function getHiResTimestamp() {\n  let timestamp;\n\n  if (typeof window !== 'undefined' && window.performance) {\n    timestamp = window.performance.now();\n  } else if (typeof process !== 'undefined' && process.hrtime) {\n    const timeParts = process.hrtime();\n    timestamp = timeParts[0] * 1000 + timeParts[1] / 1e6;\n  } else {\n    timestamp = Date.now();\n  }\n\n  return timestamp;\n}\n//# sourceMappingURL=hi-res-timestamp.js.map","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport getHiResTimestamp from '../utils/hi-res-timestamp';\nexport default class Stat {\n  constructor(name, type) {\n    _defineProperty(this, \"name\", void 0);\n\n    _defineProperty(this, \"type\", void 0);\n\n    _defineProperty(this, \"sampleSize\", 1);\n\n    _defineProperty(this, \"time\", void 0);\n\n    _defineProperty(this, \"count\", void 0);\n\n    _defineProperty(this, \"samples\", void 0);\n\n    _defineProperty(this, \"lastTiming\", void 0);\n\n    _defineProperty(this, \"lastSampleTime\", void 0);\n\n    _defineProperty(this, \"lastSampleCount\", void 0);\n\n    _defineProperty(this, \"_count\", 0);\n\n    _defineProperty(this, \"_time\", 0);\n\n    _defineProperty(this, \"_samples\", 0);\n\n    _defineProperty(this, \"_startTime\", 0);\n\n    _defineProperty(this, \"_timerPending\", false);\n\n    this.name = name;\n    this.type = type;\n    this.reset();\n  }\n\n  setSampleSize(samples) {\n    this.sampleSize = samples;\n    return this;\n  }\n\n  incrementCount() {\n    this.addCount(1);\n    return this;\n  }\n\n  decrementCount() {\n    this.subtractCount(1);\n    return this;\n  }\n\n  addCount(value) {\n    this._count += value;\n    this._samples++;\n\n    this._checkSampling();\n\n    return this;\n  }\n\n  subtractCount(value) {\n    this._count -= value;\n    this._samples++;\n\n    this._checkSampling();\n\n    return this;\n  }\n\n  addTime(time) {\n    this._time += time;\n    this.lastTiming = time;\n    this._samples++;\n\n    this._checkSampling();\n\n    return this;\n  }\n\n  timeStart() {\n    this._startTime = getHiResTimestamp();\n    this._timerPending = true;\n    return this;\n  }\n\n  timeEnd() {\n    if (!this._timerPending) {\n      return this;\n    }\n\n    this.addTime(getHiResTimestamp() - this._startTime);\n    this._timerPending = false;\n\n    this._checkSampling();\n\n    return this;\n  }\n\n  getSampleAverageCount() {\n    return this.sampleSize > 0 ? this.lastSampleCount / this.sampleSize : 0;\n  }\n\n  getSampleAverageTime() {\n    return this.sampleSize > 0 ? this.lastSampleTime / this.sampleSize : 0;\n  }\n\n  getSampleHz() {\n    return this.lastSampleTime > 0 ? this.sampleSize / (this.lastSampleTime / 1000) : 0;\n  }\n\n  getAverageCount() {\n    return this.samples > 0 ? this.count / this.samples : 0;\n  }\n\n  getAverageTime() {\n    return this.samples > 0 ? this.time / this.samples : 0;\n  }\n\n  getHz() {\n    return this.time > 0 ? this.samples / (this.time / 1000) : 0;\n  }\n\n  reset() {\n    this.time = 0;\n    this.count = 0;\n    this.samples = 0;\n    this.lastTiming = 0;\n    this.lastSampleTime = 0;\n    this.lastSampleCount = 0;\n    this._count = 0;\n    this._time = 0;\n    this._samples = 0;\n    this._startTime = 0;\n    this._timerPending = false;\n    return this;\n  }\n\n  _checkSampling() {\n    if (this._samples === this.sampleSize) {\n      this.lastSampleTime = this._time;\n      this.lastSampleCount = this._count;\n      this.count += this._count;\n      this.time += this._time;\n      this.samples += this._samples;\n      this._time = 0;\n      this._count = 0;\n      this._samples = 0;\n    }\n  }\n\n}\n//# sourceMappingURL=stat.js.map","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport Stat from './stat';\nexport default class Stats {\n  constructor(options) {\n    _defineProperty(this, \"id\", void 0);\n\n    _defineProperty(this, \"stats\", {});\n\n    this.id = options.id;\n    this.stats = {};\n\n    this._initializeStats(options.stats);\n\n    Object.seal(this);\n  }\n\n  get(name) {\n    let type = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'count';\n    return this._getOrCreate({\n      name,\n      type\n    });\n  }\n\n  get size() {\n    return Object.keys(this.stats).length;\n  }\n\n  reset() {\n    for (const key in this.stats) {\n      this.stats[key].reset();\n    }\n\n    return this;\n  }\n\n  forEach(fn) {\n    for (const key in this.stats) {\n      fn(this.stats[key]);\n    }\n  }\n\n  getTable() {\n    const table = {};\n    this.forEach(stat => {\n      table[stat.name] = {\n        time: stat.time || 0,\n        count: stat.count || 0,\n        average: stat.getAverageTime() || 0,\n        hz: stat.getHz() || 0\n      };\n    });\n    return table;\n  }\n\n  _initializeStats() {\n    let stats = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n    stats.forEach(stat => this._getOrCreate(stat));\n  }\n\n  _getOrCreate(stat) {\n    if (!stat || !stat.name) {\n      return null;\n    }\n\n    const {\n      name,\n      type\n    } = stat;\n\n    if (!this.stats[name]) {\n      if (stat instanceof Stat) {\n        this.stats[name] = stat;\n      } else {\n        this.stats[name] = new Stat(name, type);\n      }\n    }\n\n    return this.stats[name];\n  }\n\n}\n//# sourceMappingURL=stats.js.map","import { jsx, jsxs, Fragment } from 'react/jsx-runtime';\nimport { createContext, useContext, memo, useState, useRef, useEffect, PureComponent, useMemo, Children, isValidElement, cloneElement, createRef } from 'react';\nimport * as ReactDOM from 'react-dom';\nimport { createPortal } from 'react-dom';\n\nfunction _typeof(o) {\n  \"@babel/helpers - typeof\";\n\n  return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) {\n    return typeof o;\n  } : function (o) {\n    return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n  }, _typeof(o);\n}\n\nfunction toPrimitive(t, r) {\n  if (\"object\" != _typeof(t) || !t) return t;\n  var e = t[Symbol.toPrimitive];\n  if (void 0 !== e) {\n    var i = e.call(t, r || \"default\");\n    if (\"object\" != _typeof(i)) return i;\n    throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n  }\n  return (\"string\" === r ? String : Number)(t);\n}\n\nfunction toPropertyKey(t) {\n  var i = toPrimitive(t, \"string\");\n  return \"symbol\" == _typeof(i) ? i : i + \"\";\n}\n\nfunction _defineProperty(e, r, t) {\n  return (r = toPropertyKey(r)) in e ? Object.defineProperty(e, r, {\n    value: t,\n    enumerable: !0,\n    configurable: !0,\n    writable: !0\n  }) : e[r] = t, e;\n}\n\nfunction getDefaultExportFromCjs$1 (x) {\n\treturn x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;\n}\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\nvar invariant_1;\nvar hasRequiredInvariant;\nfunction requireInvariant() {\n  if (hasRequiredInvariant) return invariant_1;\n  hasRequiredInvariant = 1;\n\n  /**\n   * Use invariant() to assert state which your program assumes to be true.\n   *\n   * Provide sprintf-style format (only %s is supported) and arguments\n   * to provide information about what broke and what you were\n   * expecting.\n   *\n   * The invariant message will be stripped in production, but the invariant\n   * will remain to ensure logic does not differ in production.\n   */\n\n  var NODE_ENV = process.env.NODE_ENV;\n  var invariant = function invariant(condition, format, a, b, c, d, e, f) {\n    if (NODE_ENV !== 'production') {\n      if (format === undefined) {\n        throw new Error('invariant requires an error message argument');\n      }\n    }\n    if (!condition) {\n      var error;\n      if (format === undefined) {\n        error = new Error('Minified exception occurred; use the non-minified dev environment ' + 'for the full error message and additional helpful warnings.');\n      } else {\n        var args = [a, b, c, d, e, f];\n        var argIndex = 0;\n        error = new Error(format.replace(/%s/g, function () {\n          return args[argIndex++];\n        }));\n        error.name = 'Invariant Violation';\n      }\n      error.framesToPop = 1; // we don't care about invariant's own frame\n      throw error;\n    }\n  };\n  invariant_1 = invariant;\n  return invariant_1;\n}\n\nvar invariantExports = requireInvariant();\nvar invariant = /*@__PURE__*/getDefaultExportFromCjs$1(invariantExports);\n\nvar MapContext = createContext(null);\nfunction useGoogleMap() {\n  invariant(!!useContext, 'useGoogleMap is React hook and requires React version 16.8+');\n  var map = useContext(MapContext);\n  invariant(!!map, 'useGoogleMap needs a GoogleMap available up in the tree');\n  return map;\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction reduce(obj, fn, acc) {\n  return Object.keys(obj).reduce(function reducer(newAcc, key) {\n    return fn(newAcc, obj[key], key);\n  }, acc);\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction forEach(obj, fn) {\n  Object.keys(obj).forEach(key => {\n    return fn(obj[key], key);\n  });\n}\n\n/* global google */\n/* eslint-disable filenames/match-regex */\nfunction applyUpdaterToNextProps(\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nupdaterMap,\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nprevProps,\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nnextProps,\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ninstance\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\n) {\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  var map = {};\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  var iter = (fn, key) => {\n    var nextValue = nextProps[key];\n    if (nextValue !== prevProps[key]) {\n      map[key] = nextValue;\n      fn(instance, nextValue);\n    }\n  };\n  forEach(updaterMap, iter);\n  return map;\n}\nfunction registerEvents(\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nprops,\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ninstance, eventMap) {\n  var registeredList = reduce(eventMap, function reducer(acc, googleEventName,\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  onEventName) {\n    if (typeof props[onEventName] === 'function') {\n      acc.push(google.maps.event.addListener(instance, googleEventName, props[onEventName]));\n    }\n    return acc;\n  }, []);\n  return registeredList;\n}\nfunction unregisterEvent(registered) {\n  google.maps.event.removeListener(registered);\n}\nfunction unregisterEvents() {\n  var events = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n  events.forEach(unregisterEvent);\n}\nfunction applyUpdatersToPropsAndRegisterEvents(_ref) {\n  var {\n    updaterMap,\n    eventMap,\n    prevProps,\n    nextProps,\n    instance\n  } = _ref;\n  var registeredEvents = registerEvents(nextProps, instance, eventMap);\n  applyUpdaterToNextProps(updaterMap, prevProps, nextProps, instance);\n  return registeredEvents;\n}\n\nvar eventMap$i = {\n  onDblClick: 'dblclick',\n  onDragEnd: 'dragend',\n  onDragStart: 'dragstart',\n  onMapTypeIdChanged: 'maptypeid_changed',\n  onMouseMove: 'mousemove',\n  onMouseOut: 'mouseout',\n  onMouseOver: 'mouseover',\n  onMouseDown: 'mousedown',\n  onMouseUp: 'mouseup',\n  onRightClick: 'rightclick',\n  onTilesLoaded: 'tilesloaded',\n  onBoundsChanged: 'bounds_changed',\n  onCenterChanged: 'center_changed',\n  onClick: 'click',\n  onDrag: 'drag',\n  onHeadingChanged: 'heading_changed',\n  onIdle: 'idle',\n  onProjectionChanged: 'projection_changed',\n  onResize: 'resize',\n  onTiltChanged: 'tilt_changed',\n  onZoomChanged: 'zoom_changed'\n};\nvar updaterMap$i = {\n  extraMapTypes(map, extra) {\n    extra.forEach(function forEachExtra(it, i) {\n      map.mapTypes.set(String(i), it);\n    });\n  },\n  center(map, center) {\n    map.setCenter(center);\n  },\n  clickableIcons(map, clickable) {\n    map.setClickableIcons(clickable);\n  },\n  heading(map, heading) {\n    map.setHeading(heading);\n  },\n  mapTypeId(map, mapTypeId) {\n    map.setMapTypeId(mapTypeId);\n  },\n  options(map, options) {\n    map.setOptions(options);\n  },\n  streetView(map, streetView) {\n    map.setStreetView(streetView);\n  },\n  tilt(map, tilt) {\n    map.setTilt(tilt);\n  },\n  zoom(map, zoom) {\n    map.setZoom(zoom);\n  }\n};\n// TODO: unfinished!\nfunction GoogleMapFunctional(_ref) {\n  var {\n    children,\n    options,\n    id,\n    mapContainerStyle,\n    mapContainerClassName,\n    center,\n    // clickableIcons,\n    // extraMapTypes,\n    // heading,\n    // mapTypeId,\n    onClick,\n    onDblClick,\n    onDrag,\n    onDragEnd,\n    onDragStart,\n    onMouseMove,\n    onMouseOut,\n    onMouseOver,\n    onMouseDown,\n    onMouseUp,\n    onRightClick,\n    // onMapTypeIdChanged,\n    // onTilesLoaded,\n    // onBoundsChanged,\n    onCenterChanged,\n    // onHeadingChanged,\n    // onIdle,\n    // onProjectionChanged,\n    // onResize,\n    // onTiltChanged,\n    // onZoomChanged,\n    onLoad,\n    onUnmount\n  } = _ref;\n  var [map, setMap] = useState(null);\n  var ref = useRef(null);\n  // const [extraMapTypesListener, setExtraMapTypesListener] = useState<google.maps.MapsEventListener | null>(null)\n  var [centerChangedListener, setCenterChangedListener] = useState(null);\n  var [dblclickListener, setDblclickListener] = useState(null);\n  var [dragendListener, setDragendListener] = useState(null);\n  var [dragstartListener, setDragstartListener] = useState(null);\n  var [mousedownListener, setMousedownListener] = useState(null);\n  var [mousemoveListener, setMousemoveListener] = useState(null);\n  var [mouseoutListener, setMouseoutListener] = useState(null);\n  var [mouseoverListener, setMouseoverListener] = useState(null);\n  var [mouseupListener, setMouseupListener] = useState(null);\n  var [rightclickListener, setRightclickListener] = useState(null);\n  var [clickListener, setClickListener] = useState(null);\n  var [dragListener, setDragListener] = useState(null);\n  // Order does matter\n  useEffect(() => {\n    if (options && map !== null) {\n      map.setOptions(options);\n    }\n  }, [map, options]);\n  useEffect(() => {\n    if (map !== null && typeof center !== 'undefined') {\n      map.setCenter(center);\n    }\n  }, [map, center]);\n  useEffect(() => {\n    if (map && onDblClick) {\n      if (dblclickListener !== null) {\n        google.maps.event.removeListener(dblclickListener);\n      }\n      setDblclickListener(google.maps.event.addListener(map, 'dblclick', onDblClick));\n    }\n  }, [onDblClick]);\n  useEffect(() => {\n    if (map && onDragEnd) {\n      if (dragendListener !== null) {\n        google.maps.event.removeListener(dragendListener);\n      }\n      setDragendListener(google.maps.event.addListener(map, 'dragend', onDragEnd));\n    }\n  }, [onDragEnd]);\n  useEffect(() => {\n    if (map && onDragStart) {\n      if (dragstartListener !== null) {\n        google.maps.event.removeListener(dragstartListener);\n      }\n      setDragstartListener(google.maps.event.addListener(map, 'dragstart', onDragStart));\n    }\n  }, [onDragStart]);\n  useEffect(() => {\n    if (map && onMouseDown) {\n      if (mousedownListener !== null) {\n        google.maps.event.removeListener(mousedownListener);\n      }\n      setMousedownListener(google.maps.event.addListener(map, 'mousedown', onMouseDown));\n    }\n  }, [onMouseDown]);\n  useEffect(() => {\n    if (map && onMouseMove) {\n      if (mousemoveListener !== null) {\n        google.maps.event.removeListener(mousemoveListener);\n      }\n      setMousemoveListener(google.maps.event.addListener(map, 'mousemove', onMouseMove));\n    }\n  }, [onMouseMove]);\n  useEffect(() => {\n    if (map && onMouseOut) {\n      if (mouseoutListener !== null) {\n        google.maps.event.removeListener(mouseoutListener);\n      }\n      setMouseoutListener(google.maps.event.addListener(map, 'mouseout', onMouseOut));\n    }\n  }, [onMouseOut]);\n  useEffect(() => {\n    if (map && onMouseOver) {\n      if (mouseoverListener !== null) {\n        google.maps.event.removeListener(mouseoverListener);\n      }\n      setMouseoverListener(google.maps.event.addListener(map, 'mouseover', onMouseOver));\n    }\n  }, [onMouseOver]);\n  useEffect(() => {\n    if (map && onMouseUp) {\n      if (mouseupListener !== null) {\n        google.maps.event.removeListener(mouseupListener);\n      }\n      setMouseupListener(google.maps.event.addListener(map, 'mouseup', onMouseUp));\n    }\n  }, [onMouseUp]);\n  useEffect(() => {\n    if (map && onRightClick) {\n      if (rightclickListener !== null) {\n        google.maps.event.removeListener(rightclickListener);\n      }\n      setRightclickListener(google.maps.event.addListener(map, 'rightclick', onRightClick));\n    }\n  }, [onRightClick]);\n  useEffect(() => {\n    if (map && onClick) {\n      if (clickListener !== null) {\n        google.maps.event.removeListener(clickListener);\n      }\n      setClickListener(google.maps.event.addListener(map, 'click', onClick));\n    }\n  }, [onClick]);\n  useEffect(() => {\n    if (map && onDrag) {\n      if (dragListener !== null) {\n        google.maps.event.removeListener(dragListener);\n      }\n      setDragListener(google.maps.event.addListener(map, 'drag', onDrag));\n    }\n  }, [onDrag]);\n  useEffect(() => {\n    if (map && onCenterChanged) {\n      if (centerChangedListener !== null) {\n        google.maps.event.removeListener(centerChangedListener);\n      }\n      setCenterChangedListener(google.maps.event.addListener(map, 'center_changed', onCenterChanged));\n    }\n  }, [onClick]);\n  useEffect(() => {\n    var map = ref.current === null ? null : new google.maps.Map(ref.current, options);\n    setMap(map);\n    if (map !== null && onLoad) {\n      onLoad(map);\n    }\n    return () => {\n      if (map !== null) {\n        if (onUnmount) {\n          onUnmount(map);\n        }\n      }\n    };\n  }, []);\n  return jsx(\"div\", {\n    id: id,\n    ref: ref,\n    style: mapContainerStyle,\n    className: mapContainerClassName,\n    children: jsx(MapContext.Provider, {\n      value: map,\n      children: map !== null ? children : null\n    })\n  });\n}\nmemo(GoogleMapFunctional);\nclass GoogleMap extends PureComponent {\n  constructor() {\n    super(...arguments);\n    _defineProperty(this, \"state\", {\n      map: null\n    });\n    _defineProperty(this, \"registeredEvents\", []);\n    _defineProperty(this, \"mapRef\", null);\n    _defineProperty(this, \"getInstance\", () => {\n      if (this.mapRef === null) {\n        return null;\n      }\n      return new google.maps.Map(this.mapRef, this.props.options);\n    });\n    _defineProperty(this, \"panTo\", latLng => {\n      var map = this.getInstance();\n      if (map) {\n        map.panTo(latLng);\n      }\n    });\n    _defineProperty(this, \"setMapCallback\", () => {\n      if (this.state.map !== null) {\n        if (this.props.onLoad) {\n          this.props.onLoad(this.state.map);\n        }\n      }\n    });\n    _defineProperty(this, \"getRef\", ref => {\n      this.mapRef = ref;\n    });\n  }\n  componentDidMount() {\n    var map = this.getInstance();\n    this.registeredEvents = applyUpdatersToPropsAndRegisterEvents({\n      updaterMap: updaterMap$i,\n      eventMap: eventMap$i,\n      prevProps: {},\n      nextProps: this.props,\n      instance: map\n    });\n    this.setState(function setMap() {\n      return {\n        map\n      };\n    }, this.setMapCallback);\n  }\n  componentDidUpdate(prevProps) {\n    if (this.state.map !== null) {\n      unregisterEvents(this.registeredEvents);\n      this.registeredEvents = applyUpdatersToPropsAndRegisterEvents({\n        updaterMap: updaterMap$i,\n        eventMap: eventMap$i,\n        prevProps,\n        nextProps: this.props,\n        instance: this.state.map\n      });\n    }\n  }\n  componentWillUnmount() {\n    if (this.state.map !== null) {\n      if (this.props.onUnmount) {\n        this.props.onUnmount(this.state.map);\n      }\n      unregisterEvents(this.registeredEvents);\n    }\n  }\n  render() {\n    return jsx(\"div\", {\n      id: this.props.id,\n      ref: this.getRef,\n      style: this.props.mapContainerStyle,\n      className: this.props.mapContainerClassName,\n      children: jsx(MapContext.Provider, {\n        value: this.state.map,\n        children: this.state.map !== null ? this.props.children : null\n      })\n    });\n  }\n}\n\nfunction asyncGeneratorStep(n, t, e, r, o, a, c) {\n  try {\n    var i = n[a](c),\n      u = i.value;\n  } catch (n) {\n    return void e(n);\n  }\n  i.done ? t(u) : Promise.resolve(u).then(r, o);\n}\nfunction _asyncToGenerator(n) {\n  return function () {\n    var t = this,\n      e = arguments;\n    return new Promise(function (r, o) {\n      var a = n.apply(t, e);\n      function _next(n) {\n        asyncGeneratorStep(a, r, o, _next, _throw, \"next\", n);\n      }\n      function _throw(n) {\n        asyncGeneratorStep(a, r, o, _next, _throw, \"throw\", n);\n      }\n      _next(void 0);\n    });\n  };\n}\n\nfunction makeLoadScriptUrl(_ref) {\n  var {\n    googleMapsApiKey,\n    googleMapsClientId,\n    version = 'weekly',\n    language,\n    region,\n    libraries,\n    channel,\n    mapIds,\n    authReferrerPolicy,\n    apiUrl = 'https://maps.googleapis.com'\n  } = _ref;\n  var params = [];\n  invariant(googleMapsApiKey && googleMapsClientId || !(googleMapsApiKey && googleMapsClientId), 'You need to specify either googleMapsApiKey or googleMapsClientId for @react-google-maps/api load script to work. You cannot use both at the same time.');\n  if (googleMapsApiKey) {\n    params.push(\"key=\".concat(googleMapsApiKey));\n  } else if (googleMapsClientId) {\n    params.push(\"client=\".concat(googleMapsClientId));\n  }\n  if (version) {\n    params.push(\"v=\".concat(version));\n  }\n  if (language) {\n    params.push(\"language=\".concat(language));\n  }\n  if (region) {\n    params.push(\"region=\".concat(region));\n  }\n  if (libraries && libraries.length) {\n    params.push(\"libraries=\".concat(libraries.sort().join(',')));\n  }\n  if (channel) {\n    params.push(\"channel=\".concat(channel));\n  }\n  if (mapIds && mapIds.length) {\n    params.push(\"map_ids=\".concat(mapIds.join(',')));\n  }\n  if (authReferrerPolicy) {\n    params.push(\"auth_referrer_policy=\".concat(authReferrerPolicy));\n  }\n  params.push('loading=async');\n  params.push('callback=initMap');\n  return \"\".concat(apiUrl, \"/maps/api/js?\").concat(params.join('&'));\n}\n\nvar isBrowser = typeof document !== 'undefined';\n\nfunction injectScript(_ref) {\n  var {\n    url,\n    id,\n    nonce\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  } = _ref;\n  if (!isBrowser) {\n    return Promise.reject(new Error('document is undefined'));\n  }\n  return new Promise(function injectScriptCallback(resolve, reject) {\n    var existingScript = document.getElementById(id);\n    var windowWithGoogleMap = window;\n    if (existingScript) {\n      // Same script id/url: keep same script\n      var dataStateAttribute = existingScript.getAttribute('data-state');\n      if (existingScript.src === url && dataStateAttribute !== 'error') {\n        if (dataStateAttribute === 'ready') {\n          return resolve(id);\n        } else {\n          var originalInitMap = windowWithGoogleMap.initMap;\n          var originalErrorCallback = existingScript.onerror;\n          windowWithGoogleMap.initMap = function initMap() {\n            if (originalInitMap) {\n              originalInitMap();\n            }\n            resolve(id);\n          };\n          existingScript.onerror = function (err) {\n            if (originalErrorCallback) {\n              originalErrorCallback(err);\n            }\n            reject(err);\n          };\n          return;\n        }\n      }\n      // Same script id, but either\n      // 1. requested URL is different\n      // 2. script failed to load\n      else {\n        existingScript.remove();\n      }\n    }\n    var script = document.createElement('script');\n    script.type = 'text/javascript';\n    script.src = url;\n    script.id = id;\n    script.async = true;\n    script.nonce = nonce || '';\n    script.onerror = function onerror(err) {\n      script.setAttribute('data-state', 'error');\n      reject(err);\n    };\n    windowWithGoogleMap.initMap = function onload() {\n      script.setAttribute('data-state', 'ready');\n      resolve(id);\n    };\n    document.head.appendChild(script);\n  }).catch(err => {\n    console.error('injectScript error: ', err);\n    throw err;\n  });\n}\n\nfunction isGoogleFontStyle(element) {\n  // 'Roboto' or 'Google Sans Text' font download\n  var href = element.href;\n  if (href && (href.indexOf('https://fonts.googleapis.com/css?family=Roboto') === 0 || href.indexOf('https://fonts.googleapis.com/css?family=Google+Sans+Text') === 0)) {\n    return true;\n  }\n  // font style elements\n  if (\n  // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n  // @ts-ignore\n  element.tagName.toLowerCase() === 'style' &&\n  // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n  // @ts-ignore\n  element.styleSheet &&\n  // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n  // @ts-ignore\n  element.styleSheet.cssText &&\n  // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n  // @ts-ignore\n  element.styleSheet.cssText.replace('\\r\\n', '').indexOf('.gm-style') === 0) {\n    // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n    // @ts-ignore\n    element.styleSheet.cssText = '';\n    return true;\n  }\n  // font style elements for other browsers\n  if (\n  // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n  // @ts-ignore\n  element.tagName.toLowerCase() === 'style' &&\n  // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n  // @ts-ignore\n  element.innerHTML &&\n  // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n  // @ts-ignore\n  element.innerHTML.replace('\\r\\n', '').indexOf('.gm-style') === 0) {\n    // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n    // @ts-ignore\n    element.innerHTML = '';\n    return true;\n  }\n  // when google tries to add empty style\n  if (\n  // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n  // @ts-ignore\n  element.tagName.toLowerCase() === 'style' &&\n  // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n  // @ts-ignore\n  !element.styleSheet &&\n  // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n  // @ts-ignore\n  !element.innerHTML) {\n    return true;\n  }\n  return false;\n}\n// Preventing the Google Maps library from downloading an extra font\nfunction preventGoogleFonts() {\n  // we override these methods only for one particular head element\n  // default methods for other elements are not affected\n  var head = document.getElementsByTagName('head')[0];\n  if (head) {\n    var trueInsertBefore = head.insertBefore.bind(head);\n    // TODO: adding return before reflect solves the TS issue\n    head.insertBefore = function insertBefore(newElement, referenceElement) {\n      if (!isGoogleFontStyle(newElement)) {\n        Reflect.apply(trueInsertBefore, head, [newElement, referenceElement]);\n      }\n      return newElement;\n    };\n    var trueAppend = head.appendChild.bind(head);\n    // TODO: adding return before reflect solves the TS issue\n    head.appendChild = function appendChild(textNode) {\n      if (!isGoogleFontStyle(textNode)) {\n        Reflect.apply(trueAppend, head, [textNode]);\n      }\n      return textNode;\n    };\n  }\n}\n\nvar cleaningUp = false;\nfunction DefaultLoadingElement() {\n  return jsx(\"div\", {\n    children: \"Loading...\"\n  });\n}\nvar defaultLoadScriptProps = {\n  id: 'script-loader',\n  version: 'weekly'\n};\nclass LoadScript extends PureComponent {\n  constructor() {\n    super(...arguments);\n    _defineProperty(this, \"check\", null);\n    _defineProperty(this, \"state\", {\n      loaded: false\n    });\n    _defineProperty(this, \"cleanupCallback\", () => {\n      // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n      // @ts-ignore\n      delete window.google.maps;\n      this.injectScript();\n    });\n    _defineProperty(this, \"isCleaningUp\", /*#__PURE__*/_asyncToGenerator(function* () {\n      function promiseCallback(resolve) {\n        if (!cleaningUp) {\n          resolve();\n        } else {\n          if (isBrowser) {\n            var timer = window.setInterval(function interval() {\n              if (!cleaningUp) {\n                window.clearInterval(timer);\n                resolve();\n              }\n            }, 1);\n          }\n        }\n        return;\n      }\n      return new Promise(promiseCallback);\n    }));\n    _defineProperty(this, \"cleanup\", () => {\n      cleaningUp = true;\n      var script = document.getElementById(this.props.id);\n      if (script && script.parentNode) {\n        script.parentNode.removeChild(script);\n      }\n      Array.prototype.slice.call(document.getElementsByTagName('script')).filter(function filter(script) {\n        return typeof script.src === 'string' && script.src.includes('maps.googleapis');\n      }).forEach(function forEach(script) {\n        if (script.parentNode) {\n          script.parentNode.removeChild(script);\n        }\n      });\n      Array.prototype.slice.call(document.getElementsByTagName('link')).filter(function filter(link) {\n        return link.href === 'https://fonts.googleapis.com/css?family=Roboto:300,400,500,700|Google+Sans';\n      }).forEach(function forEach(link) {\n        if (link.parentNode) {\n          link.parentNode.removeChild(link);\n        }\n      });\n      Array.prototype.slice.call(document.getElementsByTagName('style')).filter(function filter(style) {\n        return style.innerText !== undefined && style.innerText.length > 0 && style.innerText.includes('.gm-');\n      }).forEach(function forEach(style) {\n        if (style.parentNode) {\n          style.parentNode.removeChild(style);\n        }\n      });\n    });\n    _defineProperty(this, \"injectScript\", () => {\n      if (this.props.preventGoogleFontsLoading) {\n        preventGoogleFonts();\n      }\n      invariant(!!this.props.id, 'LoadScript requires \"id\" prop to be a string: %s', this.props.id);\n      var injectScriptOptions = {\n        id: this.props.id,\n        nonce: this.props.nonce,\n        url: makeLoadScriptUrl(this.props)\n      };\n      injectScript(injectScriptOptions).then(() => {\n        if (this.props.onLoad) {\n          this.props.onLoad();\n        }\n        this.setState(function setLoaded() {\n          return {\n            loaded: true\n          };\n        });\n        return;\n      }).catch(err => {\n        if (this.props.onError) {\n          this.props.onError(err);\n        }\n        console.error(\"\\n          There has been an Error with loading Google Maps API script, please check that you provided correct google API key (\".concat(this.props.googleMapsApiKey || '-', \") or Client ID (\").concat(this.props.googleMapsClientId || '-', \") to <LoadScript />\\n          Otherwise it is a Network issue.\\n        \"));\n      });\n    });\n    _defineProperty(this, \"getRef\", el => {\n      this.check = el;\n    });\n  }\n  componentDidMount() {\n    if (isBrowser) {\n      if (window.google && window.google.maps && !cleaningUp) {\n        console.error('google api is already presented');\n        return;\n      }\n      this.isCleaningUp().then(this.injectScript).catch(function error(err) {\n        console.error('Error at injecting script after cleaning up: ', err);\n      });\n    }\n  }\n  componentDidUpdate(prevProps) {\n    if (this.props.libraries !== prevProps.libraries) {\n      console.warn('Performance warning! LoadScript has been reloaded unintentionally! You should not pass `libraries` prop as new array. Please keep an array of libraries as static class property for Components and PureComponents, or just a const variable outside of component, or somewhere in config files or ENV variables');\n    }\n    if (isBrowser && prevProps.language !== this.props.language) {\n      this.cleanup();\n      // TODO: refactor to use gDSFP maybe... wait for hooks refactoring.\n      this.setState(function setLoaded() {\n        return {\n          loaded: false\n        };\n      }, this.cleanupCallback);\n    }\n  }\n  componentWillUnmount() {\n    if (isBrowser) {\n      this.cleanup();\n      var timeoutCallback = () => {\n        if (!this.check) {\n          // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n          // @ts-ignore\n          delete window.google;\n          cleaningUp = false;\n        }\n      };\n      window.setTimeout(timeoutCallback, 1);\n      if (this.props.onUnmount) {\n        this.props.onUnmount();\n      }\n    }\n  }\n  render() {\n    return jsxs(Fragment, {\n      children: [jsx(\"div\", {\n        ref: this.getRef\n      }), this.state.loaded ? this.props.children : this.props.loadingElement || jsx(DefaultLoadingElement, {})]\n    });\n  }\n}\n_defineProperty(LoadScript, \"defaultProps\", defaultLoadScriptProps);\n\nfunction _objectWithoutPropertiesLoose(r, e) {\n  if (null == r) return {};\n  var t = {};\n  for (var n in r) if ({}.hasOwnProperty.call(r, n)) {\n    if (e.includes(n)) continue;\n    t[n] = r[n];\n  }\n  return t;\n}\n\nfunction _objectWithoutProperties(e, t) {\n  if (null == e) return {};\n  var o,\n    r,\n    i = _objectWithoutPropertiesLoose(e, t);\n  if (Object.getOwnPropertySymbols) {\n    var s = Object.getOwnPropertySymbols(e);\n    for (r = 0; r < s.length; r++) o = s[r], t.includes(o) || {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]);\n  }\n  return i;\n}\n\n/* eslint-disable filenames/match-regex */\nvar previouslyLoadedUrl;\nfunction useLoadScript(_ref) {\n  var {\n    id = defaultLoadScriptProps.id,\n    version = defaultLoadScriptProps.version,\n    nonce,\n    googleMapsApiKey,\n    googleMapsClientId,\n    language,\n    region,\n    libraries,\n    preventGoogleFontsLoading,\n    channel,\n    mapIds,\n    authReferrerPolicy,\n    apiUrl = \"https://maps.googleapis.com\"\n  } = _ref;\n  var isMounted = useRef(false);\n  var [isLoaded, setLoaded] = useState(false);\n  var [loadError, setLoadError] = useState(undefined);\n  useEffect(function trackMountedState() {\n    isMounted.current = true;\n    return () => {\n      isMounted.current = false;\n    };\n  }, []);\n  useEffect(function applyPreventGoogleFonts() {\n    if (isBrowser && preventGoogleFontsLoading) {\n      preventGoogleFonts();\n    }\n  }, [preventGoogleFontsLoading]);\n  useEffect(function validateLoadedState() {\n    if (isLoaded) {\n      invariant(!!window.google, 'useLoadScript was marked as loaded, but window.google is not present. Something went wrong.');\n    }\n  }, [isLoaded]);\n  var url = makeLoadScriptUrl({\n    version,\n    googleMapsApiKey,\n    googleMapsClientId,\n    language,\n    region,\n    libraries,\n    channel,\n    mapIds,\n    authReferrerPolicy,\n    apiUrl\n  });\n  useEffect(function loadScriptAndModifyLoadedState() {\n    if (!isBrowser) {\n      return;\n    }\n    function setLoadedIfMounted() {\n      if (isMounted.current) {\n        setLoaded(true);\n        previouslyLoadedUrl = url;\n      }\n    }\n    if (window.google && window.google.maps && previouslyLoadedUrl === url) {\n      setLoadedIfMounted();\n      return;\n    }\n    injectScript({\n      id,\n      url,\n      nonce\n    }).then(setLoadedIfMounted).catch(function handleInjectError(err) {\n      if (isMounted.current) {\n        setLoadError(err);\n      }\n      console.warn(\"\\n        There has been an Error with loading Google Maps API script, please check that you provided correct google API key (\".concat(googleMapsApiKey || '-', \") or Client ID (\").concat(googleMapsClientId || '-', \")\\n        Otherwise it is a Network issue.\\n      \"));\n      console.error(err);\n    });\n  }, [id, url, nonce]);\n  var prevLibraries = useRef(undefined);\n  useEffect(function checkPerformance() {\n    if (prevLibraries.current && libraries !== prevLibraries.current) {\n      console.warn('Performance warning! LoadScript has been reloaded unintentionally! You should not pass `libraries` prop as new array. Please keep an array of libraries as static class property for Components and PureComponents, or just a const variable outside of component, or somewhere in config files or ENV variables');\n    }\n    prevLibraries.current = libraries;\n  }, [libraries]);\n  return {\n    isLoaded,\n    loadError,\n    url\n  };\n}\n\nvar _excluded$1 = [\"loadingElement\", \"onLoad\", \"onError\", \"onUnmount\", \"children\"];\nvar defaultLoadingElement = jsx(DefaultLoadingElement, {});\nfunction LoadScriptNext(_ref) {\n  var {\n      loadingElement,\n      onLoad,\n      onError,\n      onUnmount,\n      children\n    } = _ref,\n    hookOptions = _objectWithoutProperties(_ref, _excluded$1);\n  var {\n    isLoaded,\n    loadError\n  } = useLoadScript(hookOptions);\n  useEffect(function handleOnLoad() {\n    if (isLoaded && typeof onLoad === 'function') {\n      onLoad();\n    }\n  }, [isLoaded, onLoad]);\n  useEffect(function handleOnError() {\n    if (loadError && typeof onError === 'function') {\n      onError(loadError);\n    }\n  }, [loadError, onError]);\n  useEffect(function handleOnUnmount() {\n    return () => {\n      if (onUnmount) {\n        onUnmount();\n      }\n    };\n  }, [onUnmount]);\n  return isLoaded ? children : loadingElement || defaultLoadingElement;\n}\nvar LoadScriptNext$1 = memo(LoadScriptNext);\n\n/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol */\n\nfunction __awaiter(thisArg, _arguments, P, generator) {\n  function adopt(value) {\n    return value instanceof P ? value : new P(function (resolve) {\n      resolve(value);\n    });\n  }\n  return new (P || (P = Promise))(function (resolve, reject) {\n    function fulfilled(value) {\n      try {\n        step(generator.next(value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n    function rejected(value) {\n      try {\n        step(generator[\"throw\"](value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n    function step(result) {\n      result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n    }\n    step((generator = generator.apply(thisArg, [])).next());\n  });\n}\ntypeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n  var e = new Error(message);\n  return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\nfunction getDefaultExportFromCjs(x) {\n  return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;\n}\n\n// do not edit .js files directly - edit src/index.jst\n\nvar fastDeepEqual$1 = function equal(a, b) {\n  if (a === b) return true;\n  if (a && b && typeof a == 'object' && typeof b == 'object') {\n    if (a.constructor !== b.constructor) return false;\n    var length, i, keys;\n    if (Array.isArray(a)) {\n      length = a.length;\n      if (length != b.length) return false;\n      for (i = length; i-- !== 0;) if (!equal(a[i], b[i])) return false;\n      return true;\n    }\n    if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags;\n    if (a.valueOf !== Object.prototype.valueOf) return a.valueOf() === b.valueOf();\n    if (a.toString !== Object.prototype.toString) return a.toString() === b.toString();\n    keys = Object.keys(a);\n    length = keys.length;\n    if (length !== Object.keys(b).length) return false;\n    for (i = length; i-- !== 0;) if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\n    for (i = length; i-- !== 0;) {\n      var key = keys[i];\n      if (!equal(a[key], b[key])) return false;\n    }\n    return true;\n  }\n\n  // true if both NaN, false otherwise\n  return a !== a && b !== b;\n};\nvar isEqual = /*@__PURE__*/getDefaultExportFromCjs(fastDeepEqual$1);\n\n/**\n * Copyright 2019 Google LLC. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at.\n *\n *      Http://www.apache.org/licenses/LICENSE-2.0.\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nvar DEFAULT_ID = \"__googleMapsScriptId\";\n/**\n * The status of the [[Loader]].\n */\nvar LoaderStatus;\n(function (LoaderStatus) {\n  LoaderStatus[LoaderStatus[\"INITIALIZED\"] = 0] = \"INITIALIZED\";\n  LoaderStatus[LoaderStatus[\"LOADING\"] = 1] = \"LOADING\";\n  LoaderStatus[LoaderStatus[\"SUCCESS\"] = 2] = \"SUCCESS\";\n  LoaderStatus[LoaderStatus[\"FAILURE\"] = 3] = \"FAILURE\";\n})(LoaderStatus || (LoaderStatus = {}));\n/**\n * [[Loader]] makes it easier to add Google Maps JavaScript API to your application\n * dynamically using\n * [Promises](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise).\n * It works by dynamically creating and appending a script node to the the\n * document head and wrapping the callback function so as to return a promise.\n *\n * ```\n * const loader = new Loader({\n *   apiKey: \"\",\n *   version: \"weekly\",\n *   libraries: [\"places\"]\n * });\n *\n * loader.load().then((google) => {\n *   const map = new google.maps.Map(...)\n * })\n * ```\n */\nclass Loader {\n  /**\n   * Creates an instance of Loader using [[LoaderOptions]]. No defaults are set\n   * using this library, instead the defaults are set by the Google Maps\n   * JavaScript API server.\n   *\n   * ```\n   * const loader = Loader({apiKey, version: 'weekly', libraries: ['places']});\n   * ```\n   */\n  constructor(_ref) {\n    var {\n      apiKey,\n      authReferrerPolicy,\n      channel,\n      client,\n      id = DEFAULT_ID,\n      language,\n      libraries = [],\n      mapIds,\n      nonce,\n      region,\n      retries = 3,\n      url = \"https://maps.googleapis.com/maps/api/js\",\n      version\n    } = _ref;\n    this.callbacks = [];\n    this.done = false;\n    this.loading = false;\n    this.errors = [];\n    this.apiKey = apiKey;\n    this.authReferrerPolicy = authReferrerPolicy;\n    this.channel = channel;\n    this.client = client;\n    this.id = id || DEFAULT_ID; // Do not allow empty string\n    this.language = language;\n    this.libraries = libraries;\n    this.mapIds = mapIds;\n    this.nonce = nonce;\n    this.region = region;\n    this.retries = retries;\n    this.url = url;\n    this.version = version;\n    if (Loader.instance) {\n      if (!isEqual(this.options, Loader.instance.options)) {\n        throw new Error(\"Loader must not be called again with different options. \".concat(JSON.stringify(this.options), \" !== \").concat(JSON.stringify(Loader.instance.options)));\n      }\n      return Loader.instance;\n    }\n    Loader.instance = this;\n  }\n  get options() {\n    return {\n      version: this.version,\n      apiKey: this.apiKey,\n      channel: this.channel,\n      client: this.client,\n      id: this.id,\n      libraries: this.libraries,\n      language: this.language,\n      region: this.region,\n      mapIds: this.mapIds,\n      nonce: this.nonce,\n      url: this.url,\n      authReferrerPolicy: this.authReferrerPolicy\n    };\n  }\n  get status() {\n    if (this.errors.length) {\n      return LoaderStatus.FAILURE;\n    }\n    if (this.done) {\n      return LoaderStatus.SUCCESS;\n    }\n    if (this.loading) {\n      return LoaderStatus.LOADING;\n    }\n    return LoaderStatus.INITIALIZED;\n  }\n  get failed() {\n    return this.done && !this.loading && this.errors.length >= this.retries + 1;\n  }\n  /**\n   * CreateUrl returns the Google Maps JavaScript API script url given the [[LoaderOptions]].\n   *\n   * @ignore\n   * @deprecated\n   */\n  createUrl() {\n    var url = this.url;\n    url += \"?callback=__googleMapsCallback&loading=async\";\n    if (this.apiKey) {\n      url += \"&key=\".concat(this.apiKey);\n    }\n    if (this.channel) {\n      url += \"&channel=\".concat(this.channel);\n    }\n    if (this.client) {\n      url += \"&client=\".concat(this.client);\n    }\n    if (this.libraries.length > 0) {\n      url += \"&libraries=\".concat(this.libraries.join(\",\"));\n    }\n    if (this.language) {\n      url += \"&language=\".concat(this.language);\n    }\n    if (this.region) {\n      url += \"&region=\".concat(this.region);\n    }\n    if (this.version) {\n      url += \"&v=\".concat(this.version);\n    }\n    if (this.mapIds) {\n      url += \"&map_ids=\".concat(this.mapIds.join(\",\"));\n    }\n    if (this.authReferrerPolicy) {\n      url += \"&auth_referrer_policy=\".concat(this.authReferrerPolicy);\n    }\n    return url;\n  }\n  deleteScript() {\n    var script = document.getElementById(this.id);\n    if (script) {\n      script.remove();\n    }\n  }\n  /**\n   * Load the Google Maps JavaScript API script and return a Promise.\n   * @deprecated, use importLibrary() instead.\n   */\n  load() {\n    return this.loadPromise();\n  }\n  /**\n   * Load the Google Maps JavaScript API script and return a Promise.\n   *\n   * @ignore\n   * @deprecated, use importLibrary() instead.\n   */\n  loadPromise() {\n    return new Promise((resolve, reject) => {\n      this.loadCallback(err => {\n        if (!err) {\n          resolve(window.google);\n        } else {\n          reject(err.error);\n        }\n      });\n    });\n  }\n  importLibrary(name) {\n    this.execute();\n    return google.maps.importLibrary(name);\n  }\n  /**\n   * Load the Google Maps JavaScript API script with a callback.\n   * @deprecated, use importLibrary() instead.\n   */\n  loadCallback(fn) {\n    this.callbacks.push(fn);\n    this.execute();\n  }\n  /**\n   * Set the script on document.\n   */\n  setScript() {\n    var _a, _b;\n    if (document.getElementById(this.id)) {\n      // TODO wrap onerror callback for cases where the script was loaded elsewhere\n      this.callback();\n      return;\n    }\n    var params = {\n      key: this.apiKey,\n      channel: this.channel,\n      client: this.client,\n      libraries: this.libraries.length && this.libraries,\n      v: this.version,\n      mapIds: this.mapIds,\n      language: this.language,\n      region: this.region,\n      authReferrerPolicy: this.authReferrerPolicy\n    };\n    // keep the URL minimal:\n    Object.keys(params).forEach(\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    key => !params[key] && delete params[key]);\n    if (!((_b = (_a = window === null || window === void 0 ? void 0 : window.google) === null || _a === void 0 ? void 0 : _a.maps) === null || _b === void 0 ? void 0 : _b.importLibrary)) {\n      // tweaked copy of https://developers.google.com/maps/documentation/javascript/load-maps-js-api#dynamic-library-import\n      // which also sets the base url, the id, and the nonce\n      /* eslint-disable */\n      (g => {\n        // @ts-ignore\n        var h,\n          a,\n          k,\n          p = \"The Google Maps JavaScript API\",\n          c = \"google\",\n          l = \"importLibrary\",\n          q = \"__ib__\",\n          m = document,\n          b = window;\n        // @ts-ignore\n        b = b[c] || (b[c] = {});\n        // @ts-ignore\n        var d = b.maps || (b.maps = {}),\n          r = new Set(),\n          e = new URLSearchParams(),\n          u = () =>\n          // @ts-ignore\n          h || (h = new Promise((f, n) => __awaiter(this, void 0, void 0, function* () {\n            var _a;\n            yield a = m.createElement(\"script\");\n            a.id = this.id;\n            e.set(\"libraries\", [...r] + \"\");\n            // @ts-ignore\n            for (k in g) e.set(k.replace(/[A-Z]/g, t => \"_\" + t[0].toLowerCase()), g[k]);\n            e.set(\"callback\", c + \".maps.\" + q);\n            a.src = this.url + \"?\" + e;\n            d[q] = f;\n            a.onerror = () => h = n(Error(p + \" could not load.\"));\n            // @ts-ignore\n            a.nonce = this.nonce || ((_a = m.querySelector(\"script[nonce]\")) === null || _a === void 0 ? void 0 : _a.nonce) || \"\";\n            m.head.append(a);\n          })));\n        // @ts-ignore\n        d[l] ? console.warn(p + \" only loads once. Ignoring:\", g) : d[l] = function (f) {\n          for (var _len = arguments.length, n = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n            n[_key - 1] = arguments[_key];\n          }\n          return r.add(f) && u().then(() => d[l](f, ...n));\n        };\n      })(params);\n      /* eslint-enable */\n    }\n    // While most libraries populate the global namespace when loaded via bootstrap params,\n    // this is not the case for \"marker\" when used with the inline bootstrap loader\n    // (and maybe others in the future). So ensure there is an importLibrary for each:\n    var libraryPromises = this.libraries.map(library => this.importLibrary(library));\n    // ensure at least one library, to kick off loading...\n    if (!libraryPromises.length) {\n      libraryPromises.push(this.importLibrary(\"core\"));\n    }\n    Promise.all(libraryPromises).then(() => this.callback(), error => {\n      var event = new ErrorEvent(\"error\", {\n        error\n      }); // for backwards compat\n      this.loadErrorCallback(event);\n    });\n  }\n  /**\n   * Reset the loader state.\n   */\n  reset() {\n    this.deleteScript();\n    this.done = false;\n    this.loading = false;\n    this.errors = [];\n    this.onerrorEvent = null;\n  }\n  resetIfRetryingFailed() {\n    if (this.failed) {\n      this.reset();\n    }\n  }\n  loadErrorCallback(e) {\n    this.errors.push(e);\n    if (this.errors.length <= this.retries) {\n      var delay = this.errors.length * Math.pow(2, this.errors.length);\n      console.error(\"Failed to load Google Maps script, retrying in \".concat(delay, \" ms.\"));\n      setTimeout(() => {\n        this.deleteScript();\n        this.setScript();\n      }, delay);\n    } else {\n      this.onerrorEvent = e;\n      this.callback();\n    }\n  }\n  callback() {\n    this.done = true;\n    this.loading = false;\n    this.callbacks.forEach(cb => {\n      cb(this.onerrorEvent);\n    });\n    this.callbacks = [];\n  }\n  execute() {\n    this.resetIfRetryingFailed();\n    if (this.loading) {\n      // do nothing but wait\n      return;\n    }\n    if (this.done) {\n      this.callback();\n    } else {\n      // short circuit and warn if google.maps is already loaded\n      if (window.google && window.google.maps && window.google.maps.version) {\n        console.warn(\"Google Maps already loaded outside @googlemaps/js-api-loader. \" + \"This may result in undesirable behavior as options and script parameters may not match.\");\n        this.callback();\n        return;\n      }\n      this.loading = true;\n      this.setScript();\n    }\n  }\n}\n\nvar defaultLibraries = ['maps'];\nfunction useJsApiLoader(_ref) {\n  var {\n    id = defaultLoadScriptProps.id,\n    version = defaultLoadScriptProps.version,\n    nonce,\n    googleMapsApiKey,\n    // googleMapsClientId,\n    language,\n    region,\n    libraries = defaultLibraries,\n    preventGoogleFontsLoading,\n    // channel,\n    mapIds,\n    authReferrerPolicy\n  } = _ref;\n  var isMounted = useRef(false);\n  var [isLoaded, setLoaded] = useState(false);\n  var [loadError, setLoadError] = useState(undefined);\n  useEffect(function trackMountedState() {\n    isMounted.current = true;\n    return () => {\n      isMounted.current = false;\n    };\n  }, []);\n  var loader = useMemo(() => {\n    return new Loader({\n      id,\n      apiKey: googleMapsApiKey,\n      version,\n      libraries,\n      language: language || 'en',\n      region: region || 'US',\n      mapIds: mapIds || [],\n      nonce: nonce || '',\n      authReferrerPolicy: authReferrerPolicy || 'origin'\n    });\n  }, [id, googleMapsApiKey, version, libraries, language, region, mapIds, nonce, authReferrerPolicy]);\n  useEffect(function effect() {\n    if (isLoaded) {\n      return;\n    } else {\n      loader.load().then(() => {\n        if (isMounted.current) {\n          setLoaded(true);\n        }\n        return;\n      }).catch(error => {\n        setLoadError(error);\n      });\n    }\n  }, []);\n  useEffect(() => {\n    if (isBrowser && preventGoogleFontsLoading) {\n      preventGoogleFonts();\n    }\n  }, [preventGoogleFontsLoading]);\n  var prevLibraries = useRef();\n  useEffect(() => {\n    if (prevLibraries.current && libraries !== prevLibraries.current) {\n      console.warn('Performance warning! LoadScript has been reloaded unintentionally! You should not pass `libraries` prop as new array. Please keep an array of libraries as static class property for Components and PureComponents, or just a const variable outside of component, or somewhere in config files or ENV variables');\n    }\n    prevLibraries.current = libraries;\n  }, [libraries]);\n  return {\n    isLoaded,\n    loadError\n  };\n}\n\nfunction ownKeys$f(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread$f(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$f(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$f(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nvar eventMap$h = {};\nvar updaterMap$h = {\n  options(instance, options) {\n    instance.setOptions(options);\n  }\n};\nfunction TrafficLayerFunctional(_ref) {\n  var {\n    options,\n    onLoad,\n    onUnmount\n  } = _ref;\n  var map = useContext(MapContext);\n  var [instance, setInstance] = useState(null);\n  // Order does matter\n  useEffect(() => {\n    if (instance !== null) {\n      instance.setMap(map);\n    }\n  }, [map]);\n  useEffect(() => {\n    if (options && instance !== null) {\n      instance.setOptions(options);\n    }\n  }, [instance, options]);\n  useEffect(() => {\n    var trafficLayer = new google.maps.TrafficLayer(_objectSpread$f(_objectSpread$f({}, options), {}, {\n      map\n    }));\n    setInstance(trafficLayer);\n    if (onLoad) {\n      onLoad(trafficLayer);\n    }\n    return () => {\n      if (instance !== null) {\n        if (onUnmount) {\n          onUnmount(instance);\n        }\n        instance.setMap(null);\n      }\n    };\n  }, []);\n  return null;\n}\nvar TrafficLayerF = memo(TrafficLayerFunctional);\nclass TrafficLayer extends PureComponent {\n  constructor() {\n    super(...arguments);\n    _defineProperty(this, \"state\", {\n      trafficLayer: null\n    });\n    _defineProperty(this, \"setTrafficLayerCallback\", () => {\n      if (this.state.trafficLayer !== null && this.props.onLoad) {\n        this.props.onLoad(this.state.trafficLayer);\n      }\n    });\n    _defineProperty(this, \"registeredEvents\", []);\n  }\n  componentDidMount() {\n    var trafficLayer = new google.maps.TrafficLayer(_objectSpread$f(_objectSpread$f({}, this.props.options), {}, {\n      map: this.context\n    }));\n    this.registeredEvents = applyUpdatersToPropsAndRegisterEvents({\n      updaterMap: updaterMap$h,\n      eventMap: eventMap$h,\n      prevProps: {},\n      nextProps: this.props,\n      instance: trafficLayer\n    });\n    this.setState(function setTrafficLayer() {\n      return {\n        trafficLayer\n      };\n    }, this.setTrafficLayerCallback);\n  }\n  componentDidUpdate(prevProps) {\n    if (this.state.trafficLayer !== null) {\n      unregisterEvents(this.registeredEvents);\n      this.registeredEvents = applyUpdatersToPropsAndRegisterEvents({\n        updaterMap: updaterMap$h,\n        eventMap: eventMap$h,\n        prevProps,\n        nextProps: this.props,\n        instance: this.state.trafficLayer\n      });\n    }\n  }\n  componentWillUnmount() {\n    if (this.state.trafficLayer !== null) {\n      if (this.props.onUnmount) {\n        this.props.onUnmount(this.state.trafficLayer);\n      }\n      unregisterEvents(this.registeredEvents);\n      this.state.trafficLayer.setMap(null);\n    }\n  }\n  render() {\n    return null;\n  }\n}\n_defineProperty(TrafficLayer, \"contextType\", MapContext);\n\nfunction BicyclingLayerFunctional(_ref) {\n  var {\n    onLoad,\n    onUnmount\n  } = _ref;\n  var map = useContext(MapContext);\n  var [instance, setInstance] = useState(null);\n  // Order does matter\n  useEffect(() => {\n    if (instance !== null) {\n      instance.setMap(map);\n    }\n  }, [map]);\n  useEffect(() => {\n    var bicyclingLayer = new google.maps.BicyclingLayer();\n    setInstance(bicyclingLayer);\n    bicyclingLayer.setMap(map);\n    if (onLoad) {\n      onLoad(bicyclingLayer);\n    }\n    return () => {\n      if (bicyclingLayer !== null) {\n        if (onUnmount) {\n          onUnmount(bicyclingLayer);\n        }\n        bicyclingLayer.setMap(null);\n      }\n    };\n  }, []);\n  return null;\n}\nvar BicyclingLayerF = memo(BicyclingLayerFunctional);\nclass BicyclingLayer extends PureComponent {\n  constructor() {\n    super(...arguments);\n    _defineProperty(this, \"state\", {\n      bicyclingLayer: null\n    });\n    _defineProperty(this, \"setBicyclingLayerCallback\", () => {\n      if (this.state.bicyclingLayer !== null) {\n        this.state.bicyclingLayer.setMap(this.context);\n        if (this.props.onLoad) {\n          this.props.onLoad(this.state.bicyclingLayer);\n        }\n      }\n    });\n  }\n  componentDidMount() {\n    var bicyclingLayer = new google.maps.BicyclingLayer();\n    this.setState(() => {\n      return {\n        bicyclingLayer\n      };\n    }, this.setBicyclingLayerCallback);\n  }\n  componentWillUnmount() {\n    if (this.state.bicyclingLayer !== null) {\n      if (this.props.onUnmount) {\n        this.props.onUnmount(this.state.bicyclingLayer);\n      }\n      this.state.bicyclingLayer.setMap(null);\n    }\n  }\n  render() {\n    return null;\n  }\n}\n_defineProperty(BicyclingLayer, \"contextType\", MapContext);\n\nfunction TransitLayerFunctional(_ref) {\n  var {\n    onLoad,\n    onUnmount\n  } = _ref;\n  var map = useContext(MapContext);\n  var [instance, setInstance] = useState(null);\n  // Order does matter\n  useEffect(() => {\n    if (instance !== null) {\n      instance.setMap(map);\n    }\n  }, [map]);\n  useEffect(() => {\n    var transitLayer = new google.maps.TransitLayer();\n    setInstance(transitLayer);\n    transitLayer.setMap(map);\n    if (onLoad) {\n      onLoad(transitLayer);\n    }\n    return () => {\n      if (instance !== null) {\n        if (onUnmount) {\n          onUnmount(instance);\n        }\n        instance.setMap(null);\n      }\n    };\n  }, []);\n  return null;\n}\nvar TransitLayerF = memo(TransitLayerFunctional);\nclass TransitLayer extends PureComponent {\n  constructor() {\n    super(...arguments);\n    _defineProperty(this, \"state\", {\n      transitLayer: null\n    });\n    _defineProperty(this, \"setTransitLayerCallback\", () => {\n      if (this.state.transitLayer !== null) {\n        this.state.transitLayer.setMap(this.context);\n        if (this.props.onLoad) {\n          this.props.onLoad(this.state.transitLayer);\n        }\n      }\n    });\n  }\n  componentDidMount() {\n    var transitLayer = new google.maps.TransitLayer();\n    this.setState(function setTransitLayer() {\n      return {\n        transitLayer\n      };\n    }, this.setTransitLayerCallback);\n  }\n  componentWillUnmount() {\n    if (this.state.transitLayer !== null) {\n      if (this.props.onUnmount) {\n        this.props.onUnmount(this.state.transitLayer);\n      }\n      this.state.transitLayer.setMap(null);\n    }\n  }\n  render() {\n    return null;\n  }\n}\n_defineProperty(TransitLayer, \"contextType\", MapContext);\n\nfunction ownKeys$e(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread$e(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$e(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$e(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nvar eventMap$g = {\n  onCircleComplete: 'circlecomplete',\n  onMarkerComplete: 'markercomplete',\n  onOverlayComplete: 'overlaycomplete',\n  onPolygonComplete: 'polygoncomplete',\n  onPolylineComplete: 'polylinecomplete',\n  onRectangleComplete: 'rectanglecomplete'\n};\nvar updaterMap$g = {\n  drawingMode(instance, drawingMode) {\n    instance.setDrawingMode(drawingMode);\n  },\n  options(instance, options) {\n    instance.setOptions(options);\n  }\n};\nfunction DrawingManagerFunctional(_ref) {\n  var {\n    options,\n    drawingMode,\n    onCircleComplete,\n    onMarkerComplete,\n    onOverlayComplete,\n    onPolygonComplete,\n    onPolylineComplete,\n    onRectangleComplete,\n    onLoad,\n    onUnmount\n  } = _ref;\n  var map = useContext(MapContext);\n  var [instance, setInstance] = useState(null);\n  var [circlecompleteListener, setCircleCompleteListener] = useState(null);\n  var [markercompleteListener, setMarkerCompleteListener] = useState(null);\n  var [overlaycompleteListener, setOverlayCompleteListener] = useState(null);\n  var [polygoncompleteListener, setPolygonCompleteListener] = useState(null);\n  var [polylinecompleteListener, setPolylineCompleteListener] = useState(null);\n  var [rectanglecompleteListener, setRectangleCompleteListener] = useState(null);\n  // Order does matter\n  useEffect(() => {\n    if (instance !== null) {\n      instance.setMap(map);\n    }\n  }, [map]);\n  useEffect(() => {\n    if (options && instance !== null) {\n      instance.setOptions(options);\n    }\n  }, [instance, options]);\n  useEffect(() => {\n    if (instance !== null) {\n      instance.setDrawingMode(drawingMode !== null && drawingMode !== void 0 ? drawingMode : null);\n    }\n  }, [instance, drawingMode]);\n  useEffect(() => {\n    if (instance && onCircleComplete) {\n      if (circlecompleteListener !== null) {\n        google.maps.event.removeListener(circlecompleteListener);\n      }\n      setCircleCompleteListener(google.maps.event.addListener(instance, 'circlecomplete', onCircleComplete));\n    }\n  }, [instance, onCircleComplete]);\n  useEffect(() => {\n    if (instance && onMarkerComplete) {\n      if (markercompleteListener !== null) {\n        google.maps.event.removeListener(markercompleteListener);\n      }\n      setMarkerCompleteListener(google.maps.event.addListener(instance, 'markercomplete', onMarkerComplete));\n    }\n  }, [instance, onMarkerComplete]);\n  useEffect(() => {\n    if (instance && onOverlayComplete) {\n      if (overlaycompleteListener !== null) {\n        google.maps.event.removeListener(overlaycompleteListener);\n      }\n      setOverlayCompleteListener(google.maps.event.addListener(instance, 'overlaycomplete', onOverlayComplete));\n    }\n  }, [instance, onOverlayComplete]);\n  useEffect(() => {\n    if (instance && onPolygonComplete) {\n      if (polygoncompleteListener !== null) {\n        google.maps.event.removeListener(polygoncompleteListener);\n      }\n      setPolygonCompleteListener(google.maps.event.addListener(instance, 'polygoncomplete', onPolygonComplete));\n    }\n  }, [instance, onPolygonComplete]);\n  useEffect(() => {\n    if (instance && onPolylineComplete) {\n      if (polylinecompleteListener !== null) {\n        google.maps.event.removeListener(polylinecompleteListener);\n      }\n      setPolylineCompleteListener(google.maps.event.addListener(instance, 'polylinecomplete', onPolylineComplete));\n    }\n  }, [instance, onPolylineComplete]);\n  useEffect(() => {\n    if (instance && onRectangleComplete) {\n      if (rectanglecompleteListener !== null) {\n        google.maps.event.removeListener(rectanglecompleteListener);\n      }\n      setRectangleCompleteListener(google.maps.event.addListener(instance, 'rectanglecomplete', onRectangleComplete));\n    }\n  }, [instance, onRectangleComplete]);\n  useEffect(() => {\n    invariant(!!google.maps.drawing, \"Did you include prop libraries={['drawing']} in the URL? %s\", google.maps.drawing);\n    var drawingManager = new google.maps.drawing.DrawingManager(_objectSpread$e(_objectSpread$e({}, options), {}, {\n      map\n    }));\n    if (drawingMode) {\n      drawingManager.setDrawingMode(drawingMode);\n    }\n    if (onCircleComplete) {\n      setCircleCompleteListener(google.maps.event.addListener(drawingManager, 'circlecomplete', onCircleComplete));\n    }\n    if (onMarkerComplete) {\n      setMarkerCompleteListener(google.maps.event.addListener(drawingManager, 'markercomplete', onMarkerComplete));\n    }\n    if (onOverlayComplete) {\n      setOverlayCompleteListener(google.maps.event.addListener(drawingManager, 'overlaycomplete', onOverlayComplete));\n    }\n    if (onPolygonComplete) {\n      setPolygonCompleteListener(google.maps.event.addListener(drawingManager, 'polygoncomplete', onPolygonComplete));\n    }\n    if (onPolylineComplete) {\n      setPolylineCompleteListener(google.maps.event.addListener(drawingManager, 'polylinecomplete', onPolylineComplete));\n    }\n    if (onRectangleComplete) {\n      setRectangleCompleteListener(google.maps.event.addListener(drawingManager, 'rectanglecomplete', onRectangleComplete));\n    }\n    setInstance(drawingManager);\n    if (onLoad) {\n      onLoad(drawingManager);\n    }\n    return () => {\n      if (instance !== null) {\n        if (circlecompleteListener) {\n          google.maps.event.removeListener(circlecompleteListener);\n        }\n        if (markercompleteListener) {\n          google.maps.event.removeListener(markercompleteListener);\n        }\n        if (overlaycompleteListener) {\n          google.maps.event.removeListener(overlaycompleteListener);\n        }\n        if (polygoncompleteListener) {\n          google.maps.event.removeListener(polygoncompleteListener);\n        }\n        if (polylinecompleteListener) {\n          google.maps.event.removeListener(polylinecompleteListener);\n        }\n        if (rectanglecompleteListener) {\n          google.maps.event.removeListener(rectanglecompleteListener);\n        }\n        if (onUnmount) {\n          onUnmount(instance);\n        }\n        instance.setMap(null);\n      }\n    };\n  }, []);\n  return null;\n}\nvar DrawingManagerF = memo(DrawingManagerFunctional);\nclass DrawingManager extends PureComponent {\n  constructor(props) {\n    super(props);\n    _defineProperty(this, \"registeredEvents\", []);\n    _defineProperty(this, \"state\", {\n      drawingManager: null\n    });\n    _defineProperty(this, \"setDrawingManagerCallback\", () => {\n      if (this.state.drawingManager !== null && this.props.onLoad) {\n        this.props.onLoad(this.state.drawingManager);\n      }\n    });\n    invariant(!!google.maps.drawing, \"Did you include prop libraries={['drawing']} in the URL? %s\", google.maps.drawing);\n  }\n  componentDidMount() {\n    var drawingManager = new google.maps.drawing.DrawingManager(_objectSpread$e(_objectSpread$e({}, this.props.options), {}, {\n      map: this.context\n    }));\n    this.registeredEvents = applyUpdatersToPropsAndRegisterEvents({\n      updaterMap: updaterMap$g,\n      eventMap: eventMap$g,\n      prevProps: {},\n      nextProps: this.props,\n      instance: drawingManager\n    });\n    this.setState(function setDrawingManager() {\n      return {\n        drawingManager\n      };\n    }, this.setDrawingManagerCallback);\n  }\n  componentDidUpdate(prevProps) {\n    if (this.state.drawingManager !== null) {\n      unregisterEvents(this.registeredEvents);\n      this.registeredEvents = applyUpdatersToPropsAndRegisterEvents({\n        updaterMap: updaterMap$g,\n        eventMap: eventMap$g,\n        prevProps,\n        nextProps: this.props,\n        instance: this.state.drawingManager\n      });\n    }\n  }\n  componentWillUnmount() {\n    if (this.state.drawingManager !== null) {\n      if (this.props.onUnmount) {\n        this.props.onUnmount(this.state.drawingManager);\n      }\n      unregisterEvents(this.registeredEvents);\n      this.state.drawingManager.setMap(null);\n    }\n  }\n  render() {\n    return null;\n  }\n}\n_defineProperty(DrawingManager, \"contextType\", MapContext);\n\nfunction ownKeys$d(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread$d(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$d(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$d(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nvar eventMap$f = {\n  onAnimationChanged: 'animation_changed',\n  onClick: 'click',\n  onClickableChanged: 'clickable_changed',\n  onCursorChanged: 'cursor_changed',\n  onDblClick: 'dblclick',\n  onDrag: 'drag',\n  onDragEnd: 'dragend',\n  onDraggableChanged: 'draggable_changed',\n  onDragStart: 'dragstart',\n  onFlatChanged: 'flat_changed',\n  onIconChanged: 'icon_changed',\n  onMouseDown: 'mousedown',\n  onMouseOut: 'mouseout',\n  onMouseOver: 'mouseover',\n  onMouseUp: 'mouseup',\n  onPositionChanged: 'position_changed',\n  onRightClick: 'rightclick',\n  onShapeChanged: 'shape_changed',\n  onTitleChanged: 'title_changed',\n  onVisibleChanged: 'visible_changed',\n  onZindexChanged: 'zindex_changed'\n};\nvar updaterMap$f = {\n  animation(instance, animation) {\n    instance.setAnimation(animation);\n  },\n  clickable(instance, clickable) {\n    instance.setClickable(clickable);\n  },\n  cursor(instance, cursor) {\n    instance.setCursor(cursor);\n  },\n  draggable(instance, draggable) {\n    instance.setDraggable(draggable);\n  },\n  icon(instance, icon) {\n    instance.setIcon(icon);\n  },\n  label(instance, label) {\n    instance.setLabel(label);\n  },\n  map(instance, map) {\n    instance.setMap(map);\n  },\n  opacity(instance, opacity) {\n    instance.setOpacity(opacity);\n  },\n  options(instance, options) {\n    instance.setOptions(options);\n  },\n  position(instance, position) {\n    instance.setPosition(position);\n  },\n  shape(instance, shape) {\n    instance.setShape(shape);\n  },\n  title(instance, title) {\n    instance.setTitle(title);\n  },\n  visible(instance, visible) {\n    instance.setVisible(visible);\n  },\n  zIndex(instance, zIndex) {\n    instance.setZIndex(zIndex);\n  }\n};\nvar defaultOptions$5 = {};\nfunction MarkerFunctional(_ref) {\n  var {\n    position,\n    options,\n    clusterer,\n    noClustererRedraw,\n    children,\n    draggable,\n    visible,\n    animation,\n    clickable,\n    cursor,\n    icon,\n    label,\n    opacity,\n    shape,\n    title,\n    zIndex,\n    onClick,\n    onDblClick,\n    onDrag,\n    onDragEnd,\n    onDragStart,\n    onMouseOut,\n    onMouseOver,\n    onMouseUp,\n    onMouseDown,\n    onRightClick,\n    onClickableChanged,\n    onCursorChanged,\n    onAnimationChanged,\n    onDraggableChanged,\n    onFlatChanged,\n    onIconChanged,\n    onPositionChanged,\n    onShapeChanged,\n    onTitleChanged,\n    onVisibleChanged,\n    onZindexChanged,\n    onLoad,\n    onUnmount\n  } = _ref;\n  var map = useContext(MapContext);\n  var [instance, setInstance] = useState(null);\n  var [dblclickListener, setDblclickListener] = useState(null);\n  var [dragendListener, setDragendListener] = useState(null);\n  var [dragstartListener, setDragstartListener] = useState(null);\n  var [mousedownListener, setMousedownListener] = useState(null);\n  var [mouseoutListener, setMouseoutListener] = useState(null);\n  var [mouseoverListener, setMouseoverListener] = useState(null);\n  var [mouseupListener, setMouseupListener] = useState(null);\n  var [rightclickListener, setRightclickListener] = useState(null);\n  var [clickListener, setClickListener] = useState(null);\n  var [dragListener, setDragListener] = useState(null);\n  var [clickableChangedListener, setClickableChangedListener] = useState(null);\n  var [cursorChangedListener, setCursorChangedListener] = useState(null);\n  var [animationChangedListener, setAnimationChangedListener] = useState(null);\n  var [draggableChangedListener, setDraggableChangedListener] = useState(null);\n  var [flatChangedListener, setFlatChangedListener] = useState(null);\n  var [iconChangedListener, setIconChangedListener] = useState(null);\n  var [positionChangedListener, setPositionChangedListener] = useState(null);\n  var [shapeChangedListener, setShapeChangedListener] = useState(null);\n  var [titleChangedListener, setTitleChangedListener] = useState(null);\n  var [visibleChangedListener, setVisibleChangedListener] = useState(null);\n  var [zIndexChangedListener, setZindexChangedListener] = useState(null);\n  // Order does matter\n  useEffect(() => {\n    if (instance !== null) {\n      instance.setMap(map);\n    }\n  }, [map]);\n  useEffect(() => {\n    if (typeof options !== 'undefined' && instance !== null) {\n      instance.setOptions(options);\n    }\n  }, [instance, options]);\n  useEffect(() => {\n    if (typeof draggable !== 'undefined' && instance !== null) {\n      instance.setDraggable(draggable);\n    }\n  }, [instance, draggable]);\n  useEffect(() => {\n    if (position && instance !== null) {\n      instance.setPosition(position);\n    }\n  }, [instance, position]);\n  useEffect(() => {\n    if (typeof visible !== 'undefined' && instance !== null) {\n      instance.setVisible(visible);\n    }\n  }, [instance, visible]);\n  useEffect(() => {\n    instance === null || instance === void 0 || instance.setAnimation(animation);\n  }, [instance, animation]);\n  useEffect(() => {\n    if (instance && clickable !== undefined) {\n      instance.setClickable(clickable);\n    }\n  }, [instance, clickable]);\n  useEffect(() => {\n    if (instance && cursor !== undefined) {\n      instance.setCursor(cursor);\n    }\n  }, [instance, cursor]);\n  useEffect(() => {\n    if (instance && icon !== undefined) {\n      instance.setIcon(icon);\n    }\n  }, [instance, icon]);\n  useEffect(() => {\n    if (instance && label !== undefined) {\n      instance.setLabel(label);\n    }\n  }, [instance, label]);\n  useEffect(() => {\n    if (instance && opacity !== undefined) {\n      instance.setOpacity(opacity);\n    }\n  }, [instance, opacity]);\n  useEffect(() => {\n    if (instance && shape !== undefined) {\n      instance.setShape(shape);\n    }\n  }, [instance, shape]);\n  useEffect(() => {\n    if (instance && title !== undefined) {\n      instance.setTitle(title);\n    }\n  }, [instance, title]);\n  useEffect(() => {\n    if (instance && zIndex !== undefined) {\n      instance.setZIndex(zIndex);\n    }\n  }, [instance, zIndex]);\n  useEffect(() => {\n    if (instance && onDblClick) {\n      if (dblclickListener !== null) {\n        google.maps.event.removeListener(dblclickListener);\n      }\n      setDblclickListener(google.maps.event.addListener(instance, 'dblclick', onDblClick));\n    }\n  }, [onDblClick]);\n  useEffect(() => {\n    if (instance && onDragEnd) {\n      if (dragendListener !== null) {\n        google.maps.event.removeListener(dragendListener);\n      }\n      setDragendListener(google.maps.event.addListener(instance, 'dragend', onDragEnd));\n    }\n  }, [onDragEnd]);\n  useEffect(() => {\n    if (instance && onDragStart) {\n      if (dragstartListener !== null) {\n        google.maps.event.removeListener(dragstartListener);\n      }\n      setDragstartListener(google.maps.event.addListener(instance, 'dragstart', onDragStart));\n    }\n  }, [onDragStart]);\n  useEffect(() => {\n    if (instance && onMouseDown) {\n      if (mousedownListener !== null) {\n        google.maps.event.removeListener(mousedownListener);\n      }\n      setMousedownListener(google.maps.event.addListener(instance, 'mousedown', onMouseDown));\n    }\n  }, [onMouseDown]);\n  useEffect(() => {\n    if (instance && onMouseOut) {\n      if (mouseoutListener !== null) {\n        google.maps.event.removeListener(mouseoutListener);\n      }\n      setMouseoutListener(google.maps.event.addListener(instance, 'mouseout', onMouseOut));\n    }\n  }, [onMouseOut]);\n  useEffect(() => {\n    if (instance && onMouseOver) {\n      if (mouseoverListener !== null) {\n        google.maps.event.removeListener(mouseoverListener);\n      }\n      setMouseoverListener(google.maps.event.addListener(instance, 'mouseover', onMouseOver));\n    }\n  }, [onMouseOver]);\n  useEffect(() => {\n    if (instance && onMouseUp) {\n      if (mouseupListener !== null) {\n        google.maps.event.removeListener(mouseupListener);\n      }\n      setMouseupListener(google.maps.event.addListener(instance, 'mouseup', onMouseUp));\n    }\n  }, [onMouseUp]);\n  useEffect(() => {\n    if (instance && onRightClick) {\n      if (rightclickListener !== null) {\n        google.maps.event.removeListener(rightclickListener);\n      }\n      setRightclickListener(google.maps.event.addListener(instance, 'rightclick', onRightClick));\n    }\n  }, [onRightClick]);\n  useEffect(() => {\n    if (instance && onClick) {\n      if (clickListener !== null) {\n        google.maps.event.removeListener(clickListener);\n      }\n      setClickListener(google.maps.event.addListener(instance, 'click', onClick));\n    }\n  }, [onClick]);\n  useEffect(() => {\n    if (instance && onDrag) {\n      if (dragListener !== null) {\n        google.maps.event.removeListener(dragListener);\n      }\n      setDragListener(google.maps.event.addListener(instance, 'drag', onDrag));\n    }\n  }, [onDrag]);\n  useEffect(() => {\n    if (instance && onClickableChanged) {\n      if (clickableChangedListener !== null) {\n        google.maps.event.removeListener(clickableChangedListener);\n      }\n      setClickableChangedListener(google.maps.event.addListener(instance, 'clickable_changed', onClickableChanged));\n    }\n  }, [onClickableChanged]);\n  useEffect(() => {\n    if (instance && onCursorChanged) {\n      if (cursorChangedListener !== null) {\n        google.maps.event.removeListener(cursorChangedListener);\n      }\n      setCursorChangedListener(google.maps.event.addListener(instance, 'cursor_changed', onCursorChanged));\n    }\n  }, [onCursorChanged]);\n  useEffect(() => {\n    if (instance && onAnimationChanged) {\n      if (animationChangedListener !== null) {\n        google.maps.event.removeListener(animationChangedListener);\n      }\n      setAnimationChangedListener(google.maps.event.addListener(instance, 'animation_changed', onAnimationChanged));\n    }\n  }, [onAnimationChanged]);\n  useEffect(() => {\n    if (instance && onDraggableChanged) {\n      if (draggableChangedListener !== null) {\n        google.maps.event.removeListener(draggableChangedListener);\n      }\n      setDraggableChangedListener(google.maps.event.addListener(instance, 'draggable_changed', onDraggableChanged));\n    }\n  }, [onDraggableChanged]);\n  useEffect(() => {\n    if (instance && onFlatChanged) {\n      if (flatChangedListener !== null) {\n        google.maps.event.removeListener(flatChangedListener);\n      }\n      setFlatChangedListener(google.maps.event.addListener(instance, 'flat_changed', onFlatChanged));\n    }\n  }, [onFlatChanged]);\n  useEffect(() => {\n    if (instance && onIconChanged) {\n      if (iconChangedListener !== null) {\n        google.maps.event.removeListener(iconChangedListener);\n      }\n      setIconChangedListener(google.maps.event.addListener(instance, 'icon_changed', onIconChanged));\n    }\n  }, [onIconChanged]);\n  useEffect(() => {\n    if (instance && onPositionChanged) {\n      if (positionChangedListener !== null) {\n        google.maps.event.removeListener(positionChangedListener);\n      }\n      setPositionChangedListener(google.maps.event.addListener(instance, 'position_changed', onPositionChanged));\n    }\n  }, [onPositionChanged]);\n  useEffect(() => {\n    if (instance && onShapeChanged) {\n      if (shapeChangedListener !== null) {\n        google.maps.event.removeListener(shapeChangedListener);\n      }\n      setShapeChangedListener(google.maps.event.addListener(instance, 'shape_changed', onShapeChanged));\n    }\n  }, [onShapeChanged]);\n  useEffect(() => {\n    if (instance && onTitleChanged) {\n      if (titleChangedListener !== null) {\n        google.maps.event.removeListener(titleChangedListener);\n      }\n      setTitleChangedListener(google.maps.event.addListener(instance, 'title_changed', onTitleChanged));\n    }\n  }, [onTitleChanged]);\n  useEffect(() => {\n    if (instance && onVisibleChanged) {\n      if (visibleChangedListener !== null) {\n        google.maps.event.removeListener(visibleChangedListener);\n      }\n      setVisibleChangedListener(google.maps.event.addListener(instance, 'visible_changed', onVisibleChanged));\n    }\n  }, [onVisibleChanged]);\n  useEffect(() => {\n    if (instance && onZindexChanged) {\n      if (zIndexChangedListener !== null) {\n        google.maps.event.removeListener(zIndexChangedListener);\n      }\n      setZindexChangedListener(google.maps.event.addListener(instance, 'zindex_changed', onZindexChanged));\n    }\n  }, [onZindexChanged]);\n  useEffect(() => {\n    var markerOptions = _objectSpread$d(_objectSpread$d(_objectSpread$d({}, options || defaultOptions$5), clusterer ? defaultOptions$5 : {\n      map\n    }), {}, {\n      position\n    });\n    var marker = new google.maps.Marker(markerOptions);\n    if (clusterer) {\n      clusterer.addMarker(marker, !!noClustererRedraw);\n    } else {\n      marker.setMap(map);\n    }\n    if (position) {\n      marker.setPosition(position);\n    }\n    if (typeof visible !== 'undefined') {\n      marker.setVisible(visible);\n    }\n    if (typeof draggable !== 'undefined') {\n      marker.setDraggable(draggable);\n    }\n    if (typeof clickable !== 'undefined') {\n      marker.setClickable(clickable);\n    }\n    if (typeof cursor === 'string') {\n      marker.setCursor(cursor);\n    }\n    if (icon) {\n      marker.setIcon(icon);\n    }\n    if (typeof label !== 'undefined') {\n      marker.setLabel(label);\n    }\n    if (typeof opacity !== 'undefined') {\n      marker.setOpacity(opacity);\n    }\n    if (shape) {\n      marker.setShape(shape);\n    }\n    if (typeof title === 'string') {\n      marker.setTitle(title);\n    }\n    if (typeof zIndex === 'number') {\n      marker.setZIndex(zIndex);\n    }\n    if (onDblClick) {\n      setDblclickListener(google.maps.event.addListener(marker, 'dblclick', onDblClick));\n    }\n    if (onDragEnd) {\n      setDragendListener(google.maps.event.addListener(marker, 'dragend', onDragEnd));\n    }\n    if (onDragStart) {\n      setDragstartListener(google.maps.event.addListener(marker, 'dragstart', onDragStart));\n    }\n    if (onMouseDown) {\n      setMousedownListener(google.maps.event.addListener(marker, 'mousedown', onMouseDown));\n    }\n    if (onMouseOut) {\n      setMouseoutListener(google.maps.event.addListener(marker, 'mouseout', onMouseOut));\n    }\n    if (onMouseOver) {\n      setMouseoverListener(google.maps.event.addListener(marker, 'mouseover', onMouseOver));\n    }\n    if (onMouseUp) {\n      setMouseupListener(google.maps.event.addListener(marker, 'mouseup', onMouseUp));\n    }\n    if (onRightClick) {\n      setRightclickListener(google.maps.event.addListener(marker, 'rightclick', onRightClick));\n    }\n    if (onClick) {\n      setClickListener(google.maps.event.addListener(marker, 'click', onClick));\n    }\n    if (onDrag) {\n      setDragListener(google.maps.event.addListener(marker, 'drag', onDrag));\n    }\n    if (onClickableChanged) {\n      setClickableChangedListener(google.maps.event.addListener(marker, 'clickable_changed', onClickableChanged));\n    }\n    if (onCursorChanged) {\n      setCursorChangedListener(google.maps.event.addListener(marker, 'cursor_changed', onCursorChanged));\n    }\n    if (onAnimationChanged) {\n      setAnimationChangedListener(google.maps.event.addListener(marker, 'animation_changed', onAnimationChanged));\n    }\n    if (onDraggableChanged) {\n      setDraggableChangedListener(google.maps.event.addListener(marker, 'draggable_changed', onDraggableChanged));\n    }\n    if (onFlatChanged) {\n      setFlatChangedListener(google.maps.event.addListener(marker, 'flat_changed', onFlatChanged));\n    }\n    if (onIconChanged) {\n      setIconChangedListener(google.maps.event.addListener(marker, 'icon_changed', onIconChanged));\n    }\n    if (onPositionChanged) {\n      setPositionChangedListener(google.maps.event.addListener(marker, 'position_changed', onPositionChanged));\n    }\n    if (onShapeChanged) {\n      setShapeChangedListener(google.maps.event.addListener(marker, 'shape_changed', onShapeChanged));\n    }\n    if (onTitleChanged) {\n      setTitleChangedListener(google.maps.event.addListener(marker, 'title_changed', onTitleChanged));\n    }\n    if (onVisibleChanged) {\n      setVisibleChangedListener(google.maps.event.addListener(marker, 'visible_changed', onVisibleChanged));\n    }\n    if (onZindexChanged) {\n      setZindexChangedListener(google.maps.event.addListener(marker, 'zindex_changed', onZindexChanged));\n    }\n    setInstance(marker);\n    if (onLoad) {\n      onLoad(marker);\n    }\n    return () => {\n      if (dblclickListener !== null) {\n        google.maps.event.removeListener(dblclickListener);\n      }\n      if (dragendListener !== null) {\n        google.maps.event.removeListener(dragendListener);\n      }\n      if (dragstartListener !== null) {\n        google.maps.event.removeListener(dragstartListener);\n      }\n      if (mousedownListener !== null) {\n        google.maps.event.removeListener(mousedownListener);\n      }\n      if (mouseoutListener !== null) {\n        google.maps.event.removeListener(mouseoutListener);\n      }\n      if (mouseoverListener !== null) {\n        google.maps.event.removeListener(mouseoverListener);\n      }\n      if (mouseupListener !== null) {\n        google.maps.event.removeListener(mouseupListener);\n      }\n      if (rightclickListener !== null) {\n        google.maps.event.removeListener(rightclickListener);\n      }\n      if (clickListener !== null) {\n        google.maps.event.removeListener(clickListener);\n      }\n      if (clickableChangedListener !== null) {\n        google.maps.event.removeListener(clickableChangedListener);\n      }\n      if (cursorChangedListener !== null) {\n        google.maps.event.removeListener(cursorChangedListener);\n      }\n      if (animationChangedListener !== null) {\n        google.maps.event.removeListener(animationChangedListener);\n      }\n      if (draggableChangedListener !== null) {\n        google.maps.event.removeListener(draggableChangedListener);\n      }\n      if (flatChangedListener !== null) {\n        google.maps.event.removeListener(flatChangedListener);\n      }\n      if (iconChangedListener !== null) {\n        google.maps.event.removeListener(iconChangedListener);\n      }\n      if (positionChangedListener !== null) {\n        google.maps.event.removeListener(positionChangedListener);\n      }\n      if (titleChangedListener !== null) {\n        google.maps.event.removeListener(titleChangedListener);\n      }\n      if (visibleChangedListener !== null) {\n        google.maps.event.removeListener(visibleChangedListener);\n      }\n      if (zIndexChangedListener !== null) {\n        google.maps.event.removeListener(zIndexChangedListener);\n      }\n      if (onUnmount) {\n        onUnmount(marker);\n      }\n      if (clusterer) {\n        clusterer.removeMarker(marker, !!noClustererRedraw);\n      } else if (marker) {\n        marker.setMap(null);\n      }\n    };\n  }, []);\n  var chx = useMemo(() => {\n    return children ? Children.map(children, child => {\n      if (!isValidElement(child)) {\n        return child;\n      }\n      var elementChild = child;\n      return cloneElement(elementChild, {\n        anchor: instance\n      });\n    }) : null;\n  }, [children, instance]);\n  return jsx(Fragment, {\n    children: chx\n  }) || null;\n}\nvar MarkerF = memo(MarkerFunctional);\nclass Marker extends PureComponent {\n  constructor() {\n    super(...arguments);\n    _defineProperty(this, \"registeredEvents\", []);\n  }\n  componentDidMount() {\n    var _this = this;\n    return _asyncToGenerator(function* () {\n      var markerOptions = _objectSpread$d(_objectSpread$d(_objectSpread$d({}, _this.props.options || defaultOptions$5), _this.props.clusterer ? defaultOptions$5 : {\n        map: _this.context\n      }), {}, {\n        position: _this.props.position\n      });\n      // Unfortunately we can't just do this in the contstructor, because the\n      // `MapContext` might not be filled in yet.\n      _this.marker = new google.maps.Marker(markerOptions);\n      if (_this.props.clusterer) {\n        _this.props.clusterer.addMarker(_this.marker, !!_this.props.noClustererRedraw);\n      } else {\n        _this.marker.setMap(_this.context);\n      }\n      _this.registeredEvents = applyUpdatersToPropsAndRegisterEvents({\n        updaterMap: updaterMap$f,\n        eventMap: eventMap$f,\n        prevProps: {},\n        nextProps: _this.props,\n        instance: _this.marker\n      });\n      if (_this.props.onLoad) {\n        _this.props.onLoad(_this.marker);\n      }\n    })();\n  }\n  componentDidUpdate(prevProps) {\n    if (this.marker) {\n      unregisterEvents(this.registeredEvents);\n      this.registeredEvents = applyUpdatersToPropsAndRegisterEvents({\n        updaterMap: updaterMap$f,\n        eventMap: eventMap$f,\n        prevProps,\n        nextProps: this.props,\n        instance: this.marker\n      });\n    }\n  }\n  componentWillUnmount() {\n    if (!this.marker) {\n      return;\n    }\n    if (this.props.onUnmount) {\n      this.props.onUnmount(this.marker);\n    }\n    unregisterEvents(this.registeredEvents);\n    if (this.props.clusterer) {\n      this.props.clusterer.removeMarker(this.marker, !!this.props.noClustererRedraw);\n    } else if (this.marker) {\n      this.marker.setMap(null);\n    }\n  }\n  render() {\n    var children = this.props.children ? Children.map(this.props.children, child => {\n      if (!isValidElement(child)) {\n        return child;\n      }\n      var elementChild = child;\n      return cloneElement(elementChild, {\n        anchor: this.marker\n      });\n    }) : null;\n    return children || null;\n  }\n}\n_defineProperty(Marker, \"contextType\", MapContext);\n\nvar ClusterIcon = /** @class */function () {\n  function ClusterIcon(cluster, styles) {\n    cluster.getClusterer().extend(ClusterIcon, google.maps.OverlayView);\n    this.cluster = cluster;\n    this.clusterClassName = this.cluster.getClusterer().getClusterClass();\n    this.className = this.clusterClassName;\n    this.styles = styles;\n    this.center = undefined;\n    this.div = null;\n    this.sums = null;\n    this.visible = false;\n    this.boundsChangedListener = null;\n    this.url = '';\n    this.height = 0;\n    this.width = 0;\n    this.anchorText = [0, 0];\n    this.anchorIcon = [0, 0];\n    this.textColor = 'black';\n    this.textSize = 11;\n    this.textDecoration = 'none';\n    this.fontWeight = 'bold';\n    this.fontStyle = 'normal';\n    this.fontFamily = 'Arial,sans-serif';\n    this.backgroundPosition = '0 0';\n    this.cMouseDownInCluster = null;\n    this.cDraggingMapByCluster = null;\n    this.timeOut = null;\n    this.setMap(cluster.getMap()); // Note: this causes onAdd to be called\n    this.onBoundsChanged = this.onBoundsChanged.bind(this);\n    this.onMouseDown = this.onMouseDown.bind(this);\n    this.onClick = this.onClick.bind(this);\n    this.onMouseOver = this.onMouseOver.bind(this);\n    this.onMouseOut = this.onMouseOut.bind(this);\n    this.onAdd = this.onAdd.bind(this);\n    this.onRemove = this.onRemove.bind(this);\n    this.draw = this.draw.bind(this);\n    this.hide = this.hide.bind(this);\n    this.show = this.show.bind(this);\n    this.useStyle = this.useStyle.bind(this);\n    this.setCenter = this.setCenter.bind(this);\n    this.getPosFromLatLng = this.getPosFromLatLng.bind(this);\n  }\n  ClusterIcon.prototype.onBoundsChanged = function () {\n    this.cDraggingMapByCluster = this.cMouseDownInCluster;\n  };\n  ClusterIcon.prototype.onMouseDown = function () {\n    this.cMouseDownInCluster = true;\n    this.cDraggingMapByCluster = false;\n  };\n  ClusterIcon.prototype.onClick = function (event) {\n    this.cMouseDownInCluster = false;\n    if (!this.cDraggingMapByCluster) {\n      var markerClusterer_1 = this.cluster.getClusterer();\n      /**\n       * This event is fired when a cluster marker is clicked.\n       * @name MarkerClusterer#click\n       * @param {Cluster} c The cluster that was clicked.\n       * @event\n       */\n      google.maps.event.trigger(markerClusterer_1, 'click', this.cluster);\n      google.maps.event.trigger(markerClusterer_1, 'clusterclick', this.cluster); // deprecated name\n      // The default click handler follows. Disable it by setting\n      // the zoomOnClick property to false.\n      if (markerClusterer_1.getZoomOnClick()) {\n        // Zoom into the cluster.\n        var maxZoom_1 = markerClusterer_1.getMaxZoom();\n        var bounds_1 = this.cluster.getBounds();\n        var map = markerClusterer_1.getMap();\n        if (map !== null && 'fitBounds' in map) {\n          map.fitBounds(bounds_1);\n        }\n        // There is a fix for Issue 170 here:\n        this.timeOut = window.setTimeout(function () {\n          var map = markerClusterer_1.getMap();\n          if (map !== null) {\n            if ('fitBounds' in map) {\n              map.fitBounds(bounds_1);\n            }\n            var zoom = map.getZoom() || 0;\n            // Don't zoom beyond the max zoom level\n            if (maxZoom_1 !== null && zoom > maxZoom_1) {\n              map.setZoom(maxZoom_1 + 1);\n            }\n          }\n        }, 100);\n      }\n      // Prevent event propagation to the map:\n      event.cancelBubble = true;\n      if (event.stopPropagation) {\n        event.stopPropagation();\n      }\n    }\n  };\n  ClusterIcon.prototype.onMouseOver = function () {\n    /**\n     * This event is fired when the mouse moves over a cluster marker.\n     * @name MarkerClusterer#mouseover\n     * @param {Cluster} c The cluster that the mouse moved over.\n     * @event\n     */\n    google.maps.event.trigger(this.cluster.getClusterer(), 'mouseover', this.cluster);\n  };\n  ClusterIcon.prototype.onMouseOut = function () {\n    /**\n     * This event is fired when the mouse moves out of a cluster marker.\n     * @name MarkerClusterer#mouseout\n     * @param {Cluster} c The cluster that the mouse moved out of.\n     * @event\n     */\n    google.maps.event.trigger(this.cluster.getClusterer(), 'mouseout', this.cluster);\n  };\n  ClusterIcon.prototype.onAdd = function () {\n    var _a;\n    this.div = document.createElement('div');\n    this.div.className = this.className;\n    if (this.visible) {\n      this.show();\n    }\n    (_a = this.getPanes()) === null || _a === void 0 ? void 0 : _a.overlayMouseTarget.appendChild(this.div);\n    var map = this.getMap();\n    if (map !== null) {\n      // Fix for Issue 157\n      this.boundsChangedListener = google.maps.event.addListener(map, 'bounds_changed', this.onBoundsChanged);\n      this.div.addEventListener('mousedown', this.onMouseDown);\n      this.div.addEventListener('click', this.onClick);\n      this.div.addEventListener('mouseover', this.onMouseOver);\n      this.div.addEventListener('mouseout', this.onMouseOut);\n    }\n  };\n  ClusterIcon.prototype.onRemove = function () {\n    if (this.div && this.div.parentNode) {\n      this.hide();\n      if (this.boundsChangedListener !== null) {\n        google.maps.event.removeListener(this.boundsChangedListener);\n      }\n      this.div.removeEventListener('mousedown', this.onMouseDown);\n      this.div.removeEventListener('click', this.onClick);\n      this.div.removeEventListener('mouseover', this.onMouseOver);\n      this.div.removeEventListener('mouseout', this.onMouseOut);\n      this.div.parentNode.removeChild(this.div);\n      if (this.timeOut !== null) {\n        window.clearTimeout(this.timeOut);\n        this.timeOut = null;\n      }\n      this.div = null;\n    }\n  };\n  ClusterIcon.prototype.draw = function () {\n    if (this.visible && this.div !== null && this.center) {\n      var pos = this.getPosFromLatLng(this.center);\n      this.div.style.top = pos !== null ? \"\".concat(pos.y, \"px\") : '0';\n      this.div.style.left = pos !== null ? \"\".concat(pos.x, \"px\") : '0';\n    }\n  };\n  ClusterIcon.prototype.hide = function () {\n    if (this.div) {\n      this.div.style.display = 'none';\n    }\n    this.visible = false;\n  };\n  ClusterIcon.prototype.show = function () {\n    var _a, _b, _c, _d, _e, _f;\n    if (this.div && this.center) {\n      var divTitle = this.sums === null || typeof this.sums.title === 'undefined' || this.sums.title === '' ? this.cluster.getClusterer().getTitle() : this.sums.title;\n      // NOTE: values must be specified in px units\n      var bp = this.backgroundPosition.split(' ');\n      var spriteH = parseInt(((_a = bp[0]) === null || _a === void 0 ? void 0 : _a.replace(/^\\s+|\\s+$/g, '')) || '0', 10);\n      var spriteV = parseInt(((_b = bp[1]) === null || _b === void 0 ? void 0 : _b.replace(/^\\s+|\\s+$/g, '')) || '0', 10);\n      var pos = this.getPosFromLatLng(this.center);\n      this.div.className = this.className;\n      this.div.setAttribute('style', \"cursor: pointer; position: absolute; top: \".concat(pos !== null ? \"\".concat(pos.y, \"px\") : '0', \"; left: \").concat(pos !== null ? \"\".concat(pos.x, \"px\") : '0', \"; width: \").concat(this.width, \"px; height: \").concat(this.height, \"px; \"));\n      var img = document.createElement('img');\n      img.alt = divTitle;\n      img.src = this.url;\n      img.width = this.width;\n      img.height = this.height;\n      img.setAttribute('style', \"position: absolute; top: \".concat(spriteV, \"px; left: \").concat(spriteH, \"px\"));\n      if (!this.cluster.getClusterer().enableRetinaIcons) {\n        img.style.clip = \"rect(-\".concat(spriteV, \"px, -\").concat(spriteH + this.width, \"px, -\").concat(spriteV + this.height, \", -\").concat(spriteH, \")\");\n      }\n      var textElm = document.createElement('div');\n      textElm.setAttribute('style', \"position: absolute; top: \".concat(this.anchorText[0], \"px; left: \").concat(this.anchorText[1], \"px; color: \").concat(this.textColor, \"; font-size: \").concat(this.textSize, \"px; font-family: \").concat(this.fontFamily, \"; font-weight: \").concat(this.fontWeight, \"; fontStyle: \").concat(this.fontStyle, \"; text-decoration: \").concat(this.textDecoration, \"; text-align: center; width: \").concat(this.width, \"px; line-height: \").concat(this.height, \"px\"));\n      if ((_c = this.sums) === null || _c === void 0 ? void 0 : _c.text) textElm.innerText = \"\".concat((_d = this.sums) === null || _d === void 0 ? void 0 : _d.text);\n      if ((_e = this.sums) === null || _e === void 0 ? void 0 : _e.html) textElm.innerHTML = \"\".concat((_f = this.sums) === null || _f === void 0 ? void 0 : _f.html);\n      this.div.innerHTML = '';\n      this.div.appendChild(img);\n      this.div.appendChild(textElm);\n      this.div.title = divTitle;\n      this.div.style.display = '';\n    }\n    this.visible = true;\n  };\n  ClusterIcon.prototype.useStyle = function (sums) {\n    this.sums = sums;\n    var styles = this.cluster.getClusterer().getStyles();\n    var style = styles[Math.min(styles.length - 1, Math.max(0, sums.index - 1))];\n    if (style) {\n      this.url = style.url;\n      this.height = style.height;\n      this.width = style.width;\n      if (style.className) {\n        this.className = \"\".concat(this.clusterClassName, \" \").concat(style.className);\n      }\n      this.anchorText = style.anchorText || [0, 0];\n      this.anchorIcon = style.anchorIcon || [this.height / 2, this.width / 2];\n      this.textColor = style.textColor || 'black';\n      this.textSize = style.textSize || 11;\n      this.textDecoration = style.textDecoration || 'none';\n      this.fontWeight = style.fontWeight || 'bold';\n      this.fontStyle = style.fontStyle || 'normal';\n      this.fontFamily = style.fontFamily || 'Arial,sans-serif';\n      this.backgroundPosition = style.backgroundPosition || '0 0';\n    }\n  };\n  ClusterIcon.prototype.setCenter = function (center) {\n    this.center = center;\n  };\n  ClusterIcon.prototype.getPosFromLatLng = function (latlng) {\n    var pos = this.getProjection().fromLatLngToDivPixel(latlng);\n    if (pos !== null) {\n      pos.x -= this.anchorIcon[1];\n      pos.y -= this.anchorIcon[0];\n    }\n    return pos;\n  };\n  return ClusterIcon;\n}();\n\n/* global google */\nvar Cluster$1 = /** @class */function () {\n  function Cluster(markerClusterer) {\n    this.markerClusterer = markerClusterer;\n    this.map = this.markerClusterer.getMap();\n    this.gridSize = this.markerClusterer.getGridSize();\n    this.minClusterSize = this.markerClusterer.getMinimumClusterSize();\n    this.averageCenter = this.markerClusterer.getAverageCenter();\n    this.markers = [];\n    this.center = undefined;\n    this.bounds = null;\n    this.clusterIcon = new ClusterIcon(this, this.markerClusterer.getStyles());\n    this.getSize = this.getSize.bind(this);\n    this.getMarkers = this.getMarkers.bind(this);\n    this.getCenter = this.getCenter.bind(this);\n    this.getMap = this.getMap.bind(this);\n    this.getClusterer = this.getClusterer.bind(this);\n    this.getBounds = this.getBounds.bind(this);\n    this.remove = this.remove.bind(this);\n    this.addMarker = this.addMarker.bind(this);\n    this.isMarkerInClusterBounds = this.isMarkerInClusterBounds.bind(this);\n    this.calculateBounds = this.calculateBounds.bind(this);\n    this.updateIcon = this.updateIcon.bind(this);\n    this.isMarkerAlreadyAdded = this.isMarkerAlreadyAdded.bind(this);\n  }\n  Cluster.prototype.getSize = function () {\n    return this.markers.length;\n  };\n  Cluster.prototype.getMarkers = function () {\n    return this.markers;\n  };\n  Cluster.prototype.getCenter = function () {\n    return this.center;\n  };\n  Cluster.prototype.getMap = function () {\n    return this.map;\n  };\n  Cluster.prototype.getClusterer = function () {\n    return this.markerClusterer;\n  };\n  Cluster.prototype.getBounds = function () {\n    var bounds = new google.maps.LatLngBounds(this.center, this.center);\n    var markers = this.getMarkers();\n    for (var _i = 0, markers_1 = markers; _i < markers_1.length; _i++) {\n      var marker = markers_1[_i];\n      var position = marker.getPosition();\n      if (position) {\n        bounds.extend(position);\n      }\n    }\n    return bounds;\n  };\n  Cluster.prototype.remove = function () {\n    this.clusterIcon.setMap(null);\n    this.markers = [];\n    // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n    // @ts-ignore\n    delete this.markers;\n  };\n  Cluster.prototype.addMarker = function (marker) {\n    var _a;\n    if (this.isMarkerAlreadyAdded(marker)) {\n      return false;\n    }\n    if (!this.center) {\n      var position = marker.getPosition();\n      if (position) {\n        this.center = position;\n        this.calculateBounds();\n      }\n    } else {\n      if (this.averageCenter) {\n        var position = marker.getPosition();\n        if (position) {\n          var length_1 = this.markers.length + 1;\n          this.center = new google.maps.LatLng((this.center.lat() * (length_1 - 1) + position.lat()) / length_1, (this.center.lng() * (length_1 - 1) + position.lng()) / length_1);\n          this.calculateBounds();\n        }\n      }\n    }\n    marker.isAdded = true;\n    this.markers.push(marker);\n    var mCount = this.markers.length;\n    var maxZoom = this.markerClusterer.getMaxZoom();\n    var zoom = (_a = this.map) === null || _a === void 0 ? void 0 : _a.getZoom();\n    if (maxZoom !== null && typeof zoom !== 'undefined' && zoom > maxZoom) {\n      // Zoomed in past max zoom, so show the marker.\n      if (marker.getMap() !== this.map) {\n        marker.setMap(this.map);\n      }\n    } else if (mCount < this.minClusterSize) {\n      // Min cluster size not reached so show the marker.\n      if (marker.getMap() !== this.map) {\n        marker.setMap(this.map);\n      }\n    } else if (mCount === this.minClusterSize) {\n      // Hide the markers that were showing.\n      for (var _i = 0, _b = this.markers; _i < _b.length; _i++) {\n        var markerElement = _b[_i];\n        markerElement.setMap(null);\n      }\n    } else {\n      marker.setMap(null);\n    }\n    return true;\n  };\n  Cluster.prototype.isMarkerInClusterBounds = function (marker) {\n    if (this.bounds !== null) {\n      var position = marker.getPosition();\n      if (position) {\n        return this.bounds.contains(position);\n      }\n    }\n    return false;\n  };\n  Cluster.prototype.calculateBounds = function () {\n    this.bounds = this.markerClusterer.getExtendedBounds(new google.maps.LatLngBounds(this.center, this.center));\n  };\n  Cluster.prototype.updateIcon = function () {\n    var _a;\n    var mCount = this.markers.length;\n    var maxZoom = this.markerClusterer.getMaxZoom();\n    var zoom = (_a = this.map) === null || _a === void 0 ? void 0 : _a.getZoom();\n    if (maxZoom !== null && typeof zoom !== 'undefined' && zoom > maxZoom) {\n      this.clusterIcon.hide();\n      return;\n    }\n    if (mCount < this.minClusterSize) {\n      // Min cluster size not yet reached.\n      this.clusterIcon.hide();\n      return;\n    }\n    if (this.center) {\n      this.clusterIcon.setCenter(this.center);\n    }\n    this.clusterIcon.useStyle(this.markerClusterer.getCalculator()(this.markers, this.markerClusterer.getStyles().length));\n    this.clusterIcon.show();\n  };\n  Cluster.prototype.isMarkerAlreadyAdded = function (marker) {\n    if (this.markers.includes) {\n      return this.markers.includes(marker);\n    }\n    for (var i = 0; i < this.markers.length; i++) {\n      if (marker === this.markers[i]) {\n        return true;\n      }\n    }\n    return false;\n  };\n  return Cluster;\n}();\n\n/* global google */\n/* eslint-disable filenames/match-regex */\n/**\n * Supports up to 9007199254740991 (Number.MAX_SAFE_INTEGER) markers\n * which is not a problem as max array length is 4294967296 (2**32)\n */\nfunction CALCULATOR(markers, numStyles) {\n  var count = markers.length;\n  var numberOfDigits = count.toString().length;\n  var index = Math.min(numberOfDigits, numStyles);\n  return {\n    text: count.toString(),\n    index: index,\n    title: ''\n  };\n}\nvar BATCH_SIZE = 2000;\nvar BATCH_SIZE_IE = 500;\nvar IMAGE_PATH = 'https://developers.google.com/maps/documentation/javascript/examples/markerclusterer/m';\nvar IMAGE_EXTENSION = 'png';\nvar IMAGE_SIZES = [53, 56, 66, 78, 90];\nvar CLUSTERER_CLASS = 'cluster';\nvar Clusterer = /** @class */function () {\n  function Clusterer(map, optMarkers, optOptions) {\n    if (optMarkers === void 0) {\n      optMarkers = [];\n    }\n    if (optOptions === void 0) {\n      optOptions = {};\n    }\n    this.getMinimumClusterSize = this.getMinimumClusterSize.bind(this);\n    this.setMinimumClusterSize = this.setMinimumClusterSize.bind(this);\n    this.getEnableRetinaIcons = this.getEnableRetinaIcons.bind(this);\n    this.setEnableRetinaIcons = this.setEnableRetinaIcons.bind(this);\n    this.addToClosestCluster = this.addToClosestCluster.bind(this);\n    this.getImageExtension = this.getImageExtension.bind(this);\n    this.setImageExtension = this.setImageExtension.bind(this);\n    this.getExtendedBounds = this.getExtendedBounds.bind(this);\n    this.getAverageCenter = this.getAverageCenter.bind(this);\n    this.setAverageCenter = this.setAverageCenter.bind(this);\n    this.getTotalClusters = this.getTotalClusters.bind(this);\n    this.fitMapToMarkers = this.fitMapToMarkers.bind(this);\n    this.getIgnoreHidden = this.getIgnoreHidden.bind(this);\n    this.setIgnoreHidden = this.setIgnoreHidden.bind(this);\n    this.getClusterClass = this.getClusterClass.bind(this);\n    this.setClusterClass = this.setClusterClass.bind(this);\n    this.getTotalMarkers = this.getTotalMarkers.bind(this);\n    this.getZoomOnClick = this.getZoomOnClick.bind(this);\n    this.setZoomOnClick = this.setZoomOnClick.bind(this);\n    this.getBatchSizeIE = this.getBatchSizeIE.bind(this);\n    this.setBatchSizeIE = this.setBatchSizeIE.bind(this);\n    this.createClusters = this.createClusters.bind(this);\n    this.onZoomChanged = this.onZoomChanged.bind(this);\n    this.getImageSizes = this.getImageSizes.bind(this);\n    this.setImageSizes = this.setImageSizes.bind(this);\n    this.getCalculator = this.getCalculator.bind(this);\n    this.setCalculator = this.setCalculator.bind(this);\n    this.removeMarkers = this.removeMarkers.bind(this);\n    this.resetViewport = this.resetViewport.bind(this);\n    this.getImagePath = this.getImagePath.bind(this);\n    this.setImagePath = this.setImagePath.bind(this);\n    this.pushMarkerTo = this.pushMarkerTo.bind(this);\n    this.removeMarker = this.removeMarker.bind(this);\n    this.clearMarkers = this.clearMarkers.bind(this);\n    this.setupStyles = this.setupStyles.bind(this);\n    this.getGridSize = this.getGridSize.bind(this);\n    this.setGridSize = this.setGridSize.bind(this);\n    this.getClusters = this.getClusters.bind(this);\n    this.getMaxZoom = this.getMaxZoom.bind(this);\n    this.setMaxZoom = this.setMaxZoom.bind(this);\n    this.getMarkers = this.getMarkers.bind(this);\n    this.addMarkers = this.addMarkers.bind(this);\n    this.getStyles = this.getStyles.bind(this);\n    this.setStyles = this.setStyles.bind(this);\n    this.addMarker = this.addMarker.bind(this);\n    this.onRemove = this.onRemove.bind(this);\n    this.getTitle = this.getTitle.bind(this);\n    this.setTitle = this.setTitle.bind(this);\n    this.repaint = this.repaint.bind(this);\n    this.onIdle = this.onIdle.bind(this);\n    this.redraw = this.redraw.bind(this);\n    this.onAdd = this.onAdd.bind(this);\n    this.draw = this.draw.bind(this);\n    this.extend = this.extend.bind(this);\n    this.extend(Clusterer, google.maps.OverlayView);\n    this.markers = [];\n    this.clusters = [];\n    this.listeners = [];\n    this.activeMap = null;\n    this.ready = false;\n    this.gridSize = optOptions.gridSize || 60;\n    this.minClusterSize = optOptions.minimumClusterSize || 2;\n    this.maxZoom = optOptions.maxZoom || null;\n    this.styles = optOptions.styles || [];\n    this.title = optOptions.title || '';\n    this.zoomOnClick = true;\n    if (optOptions.zoomOnClick !== undefined) {\n      this.zoomOnClick = optOptions.zoomOnClick;\n    }\n    this.averageCenter = false;\n    if (optOptions.averageCenter !== undefined) {\n      this.averageCenter = optOptions.averageCenter;\n    }\n    this.ignoreHidden = false;\n    if (optOptions.ignoreHidden !== undefined) {\n      this.ignoreHidden = optOptions.ignoreHidden;\n    }\n    this.enableRetinaIcons = false;\n    if (optOptions.enableRetinaIcons !== undefined) {\n      this.enableRetinaIcons = optOptions.enableRetinaIcons;\n    }\n    this.imagePath = optOptions.imagePath || IMAGE_PATH;\n    this.imageExtension = optOptions.imageExtension || IMAGE_EXTENSION;\n    this.imageSizes = optOptions.imageSizes || IMAGE_SIZES;\n    this.calculator = optOptions.calculator || CALCULATOR;\n    this.batchSize = optOptions.batchSize || BATCH_SIZE;\n    this.batchSizeIE = optOptions.batchSizeIE || BATCH_SIZE_IE;\n    this.clusterClass = optOptions.clusterClass || CLUSTERER_CLASS;\n    if (navigator.userAgent.toLowerCase().indexOf('msie') !== -1) {\n      // Try to avoid IE timeout when processing a huge number of markers:\n      this.batchSize = this.batchSizeIE;\n    }\n    this.timerRefStatic = null;\n    this.setupStyles();\n    this.addMarkers(optMarkers, true);\n    this.setMap(map); // Note: this causes onAdd to be called\n  }\n  Clusterer.prototype.onZoomChanged = function () {\n    var _a, _b;\n    this.resetViewport(false);\n    // Workaround for this Google bug: when map is at level 0 and \"-\" of\n    // zoom slider is clicked, a \"zoom_changed\" event is fired even though\n    // the map doesn't zoom out any further. In this situation, no \"idle\"\n    // event is triggered so the cluster markers that have been removed\n    // do not get redrawn. Same goes for a zoom in at maxZoom.\n    if (((_a = this.getMap()) === null || _a === void 0 ? void 0 : _a.getZoom()) === (this.get('minZoom') || 0) || ((_b = this.getMap()) === null || _b === void 0 ? void 0 : _b.getZoom()) === this.get('maxZoom')) {\n      google.maps.event.trigger(this, 'idle');\n    }\n  };\n  Clusterer.prototype.onIdle = function () {\n    this.redraw();\n  };\n  Clusterer.prototype.onAdd = function () {\n    var map = this.getMap();\n    this.activeMap = map;\n    this.ready = true;\n    this.repaint();\n    if (map !== null) {\n      // Add the map event listeners\n      this.listeners = [google.maps.event.addListener(map, 'zoom_changed', this.onZoomChanged), google.maps.event.addListener(map, 'idle', this.onIdle)];\n    }\n  };\n  Clusterer.prototype.onRemove = function () {\n    // Put all the managed markers back on the map:\n    for (var _i = 0, _a = this.markers; _i < _a.length; _i++) {\n      var marker = _a[_i];\n      if (marker.getMap() !== this.activeMap) {\n        marker.setMap(this.activeMap);\n      }\n    }\n    // Remove all clusters:\n    for (var _b = 0, _c = this.clusters; _b < _c.length; _b++) {\n      var cluster = _c[_b];\n      cluster.remove();\n    }\n    this.clusters = [];\n    // Remove map event listeners:\n    for (var _d = 0, _e = this.listeners; _d < _e.length; _d++) {\n      var listener = _e[_d];\n      google.maps.event.removeListener(listener);\n    }\n    this.listeners = [];\n    this.activeMap = null;\n    this.ready = false;\n  };\n  Clusterer.prototype.draw = function () {\n    return;\n  };\n  Clusterer.prototype.getMap = function () {\n    return null;\n  };\n  Clusterer.prototype.getPanes = function () {\n    return null;\n  };\n  Clusterer.prototype.getProjection = function () {\n    return {\n      fromContainerPixelToLatLng: function fromContainerPixelToLatLng() {\n        return null;\n      },\n      fromDivPixelToLatLng: function fromDivPixelToLatLng() {\n        return null;\n      },\n      fromLatLngToContainerPixel: function fromLatLngToContainerPixel() {\n        return null;\n      },\n      fromLatLngToDivPixel: function fromLatLngToDivPixel() {\n        return null;\n      },\n      getVisibleRegion: function getVisibleRegion() {\n        return null;\n      },\n      getWorldWidth: function getWorldWidth() {\n        return 0;\n      }\n    };\n  };\n  Clusterer.prototype.setMap = function () {\n    return;\n  };\n  Clusterer.prototype.addListener = function () {\n    return {\n      remove: function remove() {\n        return;\n      }\n    };\n  };\n  Clusterer.prototype.bindTo = function () {\n    return;\n  };\n  Clusterer.prototype.get = function () {\n    return;\n  };\n  Clusterer.prototype.notify = function () {\n    return;\n  };\n  Clusterer.prototype.set = function () {\n    return;\n  };\n  Clusterer.prototype.setValues = function () {\n    return;\n  };\n  Clusterer.prototype.unbind = function () {\n    return;\n  };\n  Clusterer.prototype.unbindAll = function () {\n    return;\n  };\n  Clusterer.prototype.setupStyles = function () {\n    if (this.styles.length > 0) {\n      return;\n    }\n    for (var i = 0; i < this.imageSizes.length; i++) {\n      this.styles.push({\n        url: \"\".concat(this.imagePath + (i + 1), \".\").concat(this.imageExtension),\n        height: this.imageSizes[i] || 0,\n        width: this.imageSizes[i] || 0\n      });\n    }\n  };\n  Clusterer.prototype.fitMapToMarkers = function () {\n    var markers = this.getMarkers();\n    var bounds = new google.maps.LatLngBounds();\n    for (var _i = 0, markers_1 = markers; _i < markers_1.length; _i++) {\n      var marker = markers_1[_i];\n      var position = marker.getPosition();\n      if (position) {\n        bounds.extend(position);\n      }\n    }\n    var map = this.getMap();\n    if (map !== null && 'fitBounds' in map) {\n      map.fitBounds(bounds);\n    }\n  };\n  Clusterer.prototype.getGridSize = function () {\n    return this.gridSize;\n  };\n  Clusterer.prototype.setGridSize = function (gridSize) {\n    this.gridSize = gridSize;\n  };\n  Clusterer.prototype.getMinimumClusterSize = function () {\n    return this.minClusterSize;\n  };\n  Clusterer.prototype.setMinimumClusterSize = function (minimumClusterSize) {\n    this.minClusterSize = minimumClusterSize;\n  };\n  Clusterer.prototype.getMaxZoom = function () {\n    return this.maxZoom;\n  };\n  Clusterer.prototype.setMaxZoom = function (maxZoom) {\n    this.maxZoom = maxZoom;\n  };\n  Clusterer.prototype.getStyles = function () {\n    return this.styles;\n  };\n  Clusterer.prototype.setStyles = function (styles) {\n    this.styles = styles;\n  };\n  Clusterer.prototype.getTitle = function () {\n    return this.title;\n  };\n  Clusterer.prototype.setTitle = function (title) {\n    this.title = title;\n  };\n  Clusterer.prototype.getZoomOnClick = function () {\n    return this.zoomOnClick;\n  };\n  Clusterer.prototype.setZoomOnClick = function (zoomOnClick) {\n    this.zoomOnClick = zoomOnClick;\n  };\n  Clusterer.prototype.getAverageCenter = function () {\n    return this.averageCenter;\n  };\n  Clusterer.prototype.setAverageCenter = function (averageCenter) {\n    this.averageCenter = averageCenter;\n  };\n  Clusterer.prototype.getIgnoreHidden = function () {\n    return this.ignoreHidden;\n  };\n  Clusterer.prototype.setIgnoreHidden = function (ignoreHidden) {\n    this.ignoreHidden = ignoreHidden;\n  };\n  Clusterer.prototype.getEnableRetinaIcons = function () {\n    return this.enableRetinaIcons;\n  };\n  Clusterer.prototype.setEnableRetinaIcons = function (enableRetinaIcons) {\n    this.enableRetinaIcons = enableRetinaIcons;\n  };\n  Clusterer.prototype.getImageExtension = function () {\n    return this.imageExtension;\n  };\n  Clusterer.prototype.setImageExtension = function (imageExtension) {\n    this.imageExtension = imageExtension;\n  };\n  Clusterer.prototype.getImagePath = function () {\n    return this.imagePath;\n  };\n  Clusterer.prototype.setImagePath = function (imagePath) {\n    this.imagePath = imagePath;\n  };\n  Clusterer.prototype.getImageSizes = function () {\n    return this.imageSizes;\n  };\n  Clusterer.prototype.setImageSizes = function (imageSizes) {\n    this.imageSizes = imageSizes;\n  };\n  Clusterer.prototype.getCalculator = function () {\n    return this.calculator;\n  };\n  Clusterer.prototype.setCalculator = function (calculator) {\n    this.calculator = calculator;\n  };\n  Clusterer.prototype.getBatchSizeIE = function () {\n    return this.batchSizeIE;\n  };\n  Clusterer.prototype.setBatchSizeIE = function (batchSizeIE) {\n    this.batchSizeIE = batchSizeIE;\n  };\n  Clusterer.prototype.getClusterClass = function () {\n    return this.clusterClass;\n  };\n  Clusterer.prototype.setClusterClass = function (clusterClass) {\n    this.clusterClass = clusterClass;\n  };\n  Clusterer.prototype.getMarkers = function () {\n    return this.markers;\n  };\n  Clusterer.prototype.getTotalMarkers = function () {\n    return this.markers.length;\n  };\n  Clusterer.prototype.getClusters = function () {\n    return this.clusters;\n  };\n  Clusterer.prototype.getTotalClusters = function () {\n    return this.clusters.length;\n  };\n  Clusterer.prototype.addMarker = function (marker, optNoDraw) {\n    this.pushMarkerTo(marker);\n    if (!optNoDraw) {\n      this.redraw();\n    }\n  };\n  Clusterer.prototype.addMarkers = function (markers, optNoDraw) {\n    for (var key in markers) {\n      if (Object.prototype.hasOwnProperty.call(markers, key)) {\n        var marker = markers[key];\n        if (marker) {\n          this.pushMarkerTo(marker);\n        }\n      }\n    }\n    if (!optNoDraw) {\n      this.redraw();\n    }\n  };\n  Clusterer.prototype.pushMarkerTo = function (marker) {\n    var _this = this;\n    // If the marker is draggable add a listener so we can update the clusters on the dragend:\n    if (marker.getDraggable()) {\n      google.maps.event.addListener(marker, 'dragend', function () {\n        if (_this.ready) {\n          marker.isAdded = false;\n          _this.repaint();\n        }\n      });\n    }\n    marker.isAdded = false;\n    this.markers.push(marker);\n  };\n  Clusterer.prototype.removeMarker_ = function (marker) {\n    var index = -1;\n    if (this.markers.indexOf) {\n      index = this.markers.indexOf(marker);\n    } else {\n      for (var i = 0; i < this.markers.length; i++) {\n        if (marker === this.markers[i]) {\n          index = i;\n          break;\n        }\n      }\n    }\n    if (index === -1) {\n      // Marker is not in our list of markers, so do nothing:\n      return false;\n    }\n    marker.setMap(null);\n    this.markers.splice(index, 1); // Remove the marker from the list of managed markers\n    return true;\n  };\n  Clusterer.prototype.removeMarker = function (marker, optNoDraw) {\n    var removed = this.removeMarker_(marker);\n    if (!optNoDraw && removed) {\n      this.repaint();\n    }\n    return removed;\n  };\n  Clusterer.prototype.removeMarkers = function (markers, optNoDraw) {\n    var removed = false;\n    for (var _i = 0, markers_2 = markers; _i < markers_2.length; _i++) {\n      var marker = markers_2[_i];\n      removed = removed || this.removeMarker_(marker);\n    }\n    if (!optNoDraw && removed) {\n      this.repaint();\n    }\n    return removed;\n  };\n  Clusterer.prototype.clearMarkers = function () {\n    this.resetViewport(true);\n    this.markers = [];\n  };\n  Clusterer.prototype.repaint = function () {\n    var oldClusters = this.clusters.slice();\n    this.clusters = [];\n    this.resetViewport(false);\n    this.redraw();\n    // Remove the old clusters.\n    // Do it in a timeout to prevent blinking effect.\n    setTimeout(function timeout() {\n      for (var _i = 0, oldClusters_1 = oldClusters; _i < oldClusters_1.length; _i++) {\n        var oldCluster = oldClusters_1[_i];\n        oldCluster.remove();\n      }\n    }, 0);\n  };\n  Clusterer.prototype.getExtendedBounds = function (bounds) {\n    var projection = this.getProjection();\n    // Convert the points to pixels and the extend out by the grid size.\n    var trPix = projection.fromLatLngToDivPixel(\n    // Turn the bounds into latlng.\n    new google.maps.LatLng(bounds.getNorthEast().lat(), bounds.getNorthEast().lng()));\n    if (trPix !== null) {\n      trPix.x += this.gridSize;\n      trPix.y -= this.gridSize;\n    }\n    var blPix = projection.fromLatLngToDivPixel(\n    // Turn the bounds into latlng.\n    new google.maps.LatLng(bounds.getSouthWest().lat(), bounds.getSouthWest().lng()));\n    if (blPix !== null) {\n      blPix.x -= this.gridSize;\n      blPix.y += this.gridSize;\n    }\n    // Extend the bounds to contain the new bounds.\n    if (trPix !== null) {\n      // Convert the pixel points back to LatLng nw\n      var point1 = projection.fromDivPixelToLatLng(trPix);\n      if (point1 !== null) {\n        bounds.extend(point1);\n      }\n    }\n    if (blPix !== null) {\n      // Convert the pixel points back to LatLng sw\n      var point2 = projection.fromDivPixelToLatLng(blPix);\n      if (point2 !== null) {\n        bounds.extend(point2);\n      }\n    }\n    return bounds;\n  };\n  Clusterer.prototype.redraw = function () {\n    // Redraws all the clusters.\n    this.createClusters(0);\n  };\n  Clusterer.prototype.resetViewport = function (optHide) {\n    // Remove all the clusters\n    for (var _i = 0, _a = this.clusters; _i < _a.length; _i++) {\n      var cluster = _a[_i];\n      cluster.remove();\n    }\n    this.clusters = [];\n    // Reset the markers to not be added and to be removed from the map.\n    for (var _b = 0, _c = this.markers; _b < _c.length; _b++) {\n      var marker = _c[_b];\n      marker.isAdded = false;\n      if (optHide) {\n        marker.setMap(null);\n      }\n    }\n  };\n  Clusterer.prototype.distanceBetweenPoints = function (p1, p2) {\n    var R = 6371; // Radius of the Earth in km\n    var dLat = (p2.lat() - p1.lat()) * Math.PI / 180;\n    var dLon = (p2.lng() - p1.lng()) * Math.PI / 180;\n    var a = Math.sin(dLat / 2) * Math.sin(dLat / 2) + Math.cos(p1.lat() * Math.PI / 180) * Math.cos(p2.lat() * Math.PI / 180) * Math.sin(dLon / 2) * Math.sin(dLon / 2);\n    return R * (2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a)));\n  };\n  Clusterer.prototype.isMarkerInBounds = function (marker, bounds) {\n    var position = marker.getPosition();\n    if (position) {\n      return bounds.contains(position);\n    }\n    return false;\n  };\n  Clusterer.prototype.addToClosestCluster = function (marker) {\n    var cluster;\n    var distance = 40000; // Some large number\n    var clusterToAddTo = null;\n    for (var _i = 0, _a = this.clusters; _i < _a.length; _i++) {\n      var clusterElement = _a[_i];\n      cluster = clusterElement;\n      var center = cluster.getCenter();\n      var position = marker.getPosition();\n      if (center && position) {\n        var d = this.distanceBetweenPoints(center, position);\n        if (d < distance) {\n          distance = d;\n          clusterToAddTo = cluster;\n        }\n      }\n    }\n    if (clusterToAddTo && clusterToAddTo.isMarkerInClusterBounds(marker)) {\n      clusterToAddTo.addMarker(marker);\n    } else {\n      cluster = new Cluster$1(this);\n      cluster.addMarker(marker);\n      this.clusters.push(cluster);\n    }\n  };\n  Clusterer.prototype.createClusters = function (iFirst) {\n    var _this = this;\n    if (!this.ready) {\n      return;\n    }\n    // Cancel previous batch processing if we're working on the first batch:\n    if (iFirst === 0) {\n      /**\n       * This event is fired when the <code>Clusterer</code> begins\n       *  clustering markers.\n       * @name Clusterer#clusteringbegin\n       * @param {Clusterer} mc The Clusterer whose markers are being clustered.\n       * @event\n       */\n      google.maps.event.trigger(this, 'clusteringbegin', this);\n      if (this.timerRefStatic !== null) {\n        window.clearTimeout(this.timerRefStatic);\n        // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n        // @ts-ignore\n        delete this.timerRefStatic;\n      }\n    }\n    var map = this.getMap();\n    var bounds = map !== null && 'getBounds' in map ? map.getBounds() : null;\n    var zoom = (map === null || map === void 0 ? void 0 : map.getZoom()) || 0;\n    // Get our current map view bounds.\n    // Create a new bounds object so we don't affect the map.\n    //\n    // See Comments 9 & 11 on Issue 3651 relating to this workaround for a Google Maps bug:\n    var mapBounds = zoom > 3 ? new google.maps.LatLngBounds(bounds === null || bounds === void 0 ? void 0 : bounds.getSouthWest(), bounds === null || bounds === void 0 ? void 0 : bounds.getNorthEast()) : new google.maps.LatLngBounds(new google.maps.LatLng(85.02070771743472, -178.48388434375), new google.maps.LatLng(-85.08136444384544, 178.00048865625));\n    var extendedMapBounds = this.getExtendedBounds(mapBounds);\n    var iLast = Math.min(iFirst + this.batchSize, this.markers.length);\n    for (var i = iFirst; i < iLast; i++) {\n      var marker = this.markers[i];\n      if (marker && !marker.isAdded && this.isMarkerInBounds(marker, extendedMapBounds) && (!this.ignoreHidden || this.ignoreHidden && marker.getVisible())) {\n        this.addToClosestCluster(marker);\n      }\n    }\n    if (iLast < this.markers.length) {\n      this.timerRefStatic = window.setTimeout(function () {\n        _this.createClusters(iLast);\n      }, 0);\n    } else {\n      this.timerRefStatic = null;\n      /**\n       * This event is fired when the <code>Clusterer</code> stops\n       *  clustering markers.\n       * @name Clusterer#clusteringend\n       * @param {Clusterer} mc The Clusterer whose markers are being clustered.\n       * @event\n       */\n      google.maps.event.trigger(this, 'clusteringend', this);\n      for (var _i = 0, _a = this.clusters; _i < _a.length; _i++) {\n        var cluster = _a[_i];\n        cluster.updateIcon();\n      }\n    }\n  };\n  Clusterer.prototype.extend = function (obj1, obj2) {\n    return function applyExtend(object) {\n      for (var property in object.prototype) {\n        // eslint-disable-next-line @typescript-eslint/ban-types\n        var prop = property;\n        // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n        // @ts-ignore\n        this.prototype[prop] = object.prototype[prop];\n      }\n      return this;\n    }.apply(obj1, [obj2]);\n  };\n  return Clusterer;\n}();\n\nfunction ownKeys$c(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread$c(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$c(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$c(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nvar eventMap$e = {\n  onClick: 'click',\n  onClusteringBegin: 'clusteringbegin',\n  onClusteringEnd: 'clusteringend',\n  onMouseOut: 'mouseout',\n  onMouseOver: 'mouseover'\n};\nvar updaterMap$e = {\n  averageCenter(instance, averageCenter) {\n    instance.setAverageCenter(averageCenter);\n  },\n  batchSizeIE(instance, batchSizeIE) {\n    instance.setBatchSizeIE(batchSizeIE);\n  },\n  calculator(instance, calculator) {\n    instance.setCalculator(calculator);\n  },\n  clusterClass(instance, clusterClass) {\n    instance.setClusterClass(clusterClass);\n  },\n  enableRetinaIcons(instance, enableRetinaIcons) {\n    instance.setEnableRetinaIcons(enableRetinaIcons);\n  },\n  gridSize(instance, gridSize) {\n    instance.setGridSize(gridSize);\n  },\n  ignoreHidden(instance, ignoreHidden) {\n    instance.setIgnoreHidden(ignoreHidden);\n  },\n  imageExtension(instance, imageExtension) {\n    instance.setImageExtension(imageExtension);\n  },\n  imagePath(instance, imagePath) {\n    instance.setImagePath(imagePath);\n  },\n  imageSizes(instance, imageSizes) {\n    instance.setImageSizes(imageSizes);\n  },\n  maxZoom(instance, maxZoom) {\n    instance.setMaxZoom(maxZoom);\n  },\n  minimumClusterSize(instance, minimumClusterSize) {\n    instance.setMinimumClusterSize(minimumClusterSize);\n  },\n  styles(instance, styles) {\n    instance.setStyles(styles);\n  },\n  title(instance, title) {\n    instance.setTitle(title);\n  },\n  zoomOnClick(instance, zoomOnClick) {\n    instance.setZoomOnClick(zoomOnClick);\n  }\n};\nvar defaultOptions$4 = {};\nfunction MarkerClustererFunctional(props) {\n  var {\n    children,\n    options,\n    averageCenter,\n    batchSizeIE,\n    calculator,\n    clusterClass,\n    enableRetinaIcons,\n    gridSize,\n    ignoreHidden,\n    imageExtension,\n    imagePath,\n    imageSizes,\n    maxZoom,\n    minimumClusterSize,\n    styles,\n    title,\n    zoomOnClick,\n    onClick,\n    onClusteringBegin,\n    onClusteringEnd,\n    onMouseOver,\n    onMouseOut,\n    onLoad,\n    onUnmount\n  } = props;\n  var [instance, setInstance] = useState(null);\n  var map = useContext(MapContext);\n  var [clickListener, setClickListener] = useState(null);\n  var [clusteringBeginListener, setClusteringBeginListener] = useState(null);\n  var [clusteringEndListener, setClusteringEndListener] = useState(null);\n  var [mouseoutListener, setMouseoutListener] = useState(null);\n  var [mouseoverListener, setMouseoverListener] = useState(null);\n  useEffect(() => {\n    if (instance && onMouseOut) {\n      if (mouseoutListener !== null) {\n        google.maps.event.removeListener(mouseoutListener);\n      }\n      setMouseoutListener(google.maps.event.addListener(instance, eventMap$e.onMouseOut, onMouseOut));\n    }\n  }, [onMouseOut]);\n  useEffect(() => {\n    if (instance && onMouseOver) {\n      if (mouseoverListener !== null) {\n        google.maps.event.removeListener(mouseoverListener);\n      }\n      setMouseoverListener(google.maps.event.addListener(instance, eventMap$e.onMouseOver, onMouseOver));\n    }\n  }, [onMouseOver]);\n  useEffect(() => {\n    if (instance && onClick) {\n      if (clickListener !== null) {\n        google.maps.event.removeListener(clickListener);\n      }\n      setClickListener(google.maps.event.addListener(instance, eventMap$e.onClick, onClick));\n    }\n  }, [onClick]);\n  useEffect(() => {\n    if (instance && onClusteringBegin) {\n      if (clusteringBeginListener !== null) {\n        google.maps.event.removeListener(clusteringBeginListener);\n      }\n      setClusteringBeginListener(google.maps.event.addListener(instance, eventMap$e.onClusteringBegin, onClusteringBegin));\n    }\n  }, [onClusteringBegin]);\n  useEffect(() => {\n    if (instance && onClusteringEnd) {\n      if (clusteringEndListener !== null) {\n        google.maps.event.removeListener(clusteringEndListener);\n      }\n      setClusteringBeginListener(google.maps.event.addListener(instance, eventMap$e.onClusteringEnd, onClusteringEnd));\n    }\n  }, [onClusteringEnd]);\n  useEffect(() => {\n    if (typeof averageCenter !== 'undefined' && instance !== null) {\n      updaterMap$e.averageCenter(instance, averageCenter);\n    }\n  }, [instance, averageCenter]);\n  useEffect(() => {\n    if (typeof batchSizeIE !== 'undefined' && instance !== null) {\n      updaterMap$e.batchSizeIE(instance, batchSizeIE);\n    }\n  }, [instance, batchSizeIE]);\n  useEffect(() => {\n    if (typeof calculator !== 'undefined' && instance !== null) {\n      updaterMap$e.calculator(instance, calculator);\n    }\n  }, [instance, calculator]);\n  useEffect(() => {\n    if (typeof clusterClass !== 'undefined' && instance !== null) {\n      updaterMap$e.clusterClass(instance, clusterClass);\n    }\n  }, [instance, clusterClass]);\n  useEffect(() => {\n    if (typeof enableRetinaIcons !== 'undefined' && instance !== null) {\n      updaterMap$e.enableRetinaIcons(instance, enableRetinaIcons);\n    }\n  }, [instance, enableRetinaIcons]);\n  useEffect(() => {\n    if (typeof gridSize !== 'undefined' && instance !== null) {\n      updaterMap$e.gridSize(instance, gridSize);\n    }\n  }, [instance, gridSize]);\n  useEffect(() => {\n    if (typeof ignoreHidden !== 'undefined' && instance !== null) {\n      updaterMap$e.ignoreHidden(instance, ignoreHidden);\n    }\n  }, [instance, ignoreHidden]);\n  useEffect(() => {\n    if (typeof imageExtension !== 'undefined' && instance !== null) {\n      updaterMap$e.imageExtension(instance, imageExtension);\n    }\n  }, [instance, imageExtension]);\n  useEffect(() => {\n    if (typeof imagePath !== 'undefined' && instance !== null) {\n      updaterMap$e.imagePath(instance, imagePath);\n    }\n  }, [instance, imagePath]);\n  useEffect(() => {\n    if (typeof imageSizes !== 'undefined' && instance !== null) {\n      updaterMap$e.imageSizes(instance, imageSizes);\n    }\n  }, [instance, imageSizes]);\n  useEffect(() => {\n    if (typeof maxZoom !== 'undefined' && instance !== null) {\n      updaterMap$e.maxZoom(instance, maxZoom);\n    }\n  }, [instance, maxZoom]);\n  useEffect(() => {\n    if (typeof minimumClusterSize !== 'undefined' && instance !== null) {\n      updaterMap$e.minimumClusterSize(instance, minimumClusterSize);\n    }\n  }, [instance, minimumClusterSize]);\n  useEffect(() => {\n    if (typeof styles !== 'undefined' && instance !== null) {\n      updaterMap$e.styles(instance, styles);\n    }\n  }, [instance, styles]);\n  useEffect(() => {\n    if (typeof title !== 'undefined' && instance !== null) {\n      updaterMap$e.title(instance, title);\n    }\n  }, [instance, title]);\n  useEffect(() => {\n    if (typeof zoomOnClick !== 'undefined' && instance !== null) {\n      updaterMap$e.zoomOnClick(instance, zoomOnClick);\n    }\n  }, [instance, zoomOnClick]);\n  useEffect(() => {\n    if (!map) return;\n    var clustererOptions = _objectSpread$c({}, options || defaultOptions$4);\n    var clusterer = new Clusterer(map, [], clustererOptions);\n    if (averageCenter) {\n      updaterMap$e.averageCenter(clusterer, averageCenter);\n    }\n    if (batchSizeIE) {\n      updaterMap$e.batchSizeIE(clusterer, batchSizeIE);\n    }\n    if (calculator) {\n      updaterMap$e.calculator(clusterer, calculator);\n    }\n    if (clusterClass) {\n      updaterMap$e.clusterClass(clusterer, clusterClass);\n    }\n    if (enableRetinaIcons) {\n      updaterMap$e.enableRetinaIcons(clusterer, enableRetinaIcons);\n    }\n    if (gridSize) {\n      updaterMap$e.gridSize(clusterer, gridSize);\n    }\n    if (ignoreHidden) {\n      updaterMap$e.ignoreHidden(clusterer, ignoreHidden);\n    }\n    if (imageExtension) {\n      updaterMap$e.imageExtension(clusterer, imageExtension);\n    }\n    if (imagePath) {\n      updaterMap$e.imagePath(clusterer, imagePath);\n    }\n    if (imageSizes) {\n      updaterMap$e.imageSizes(clusterer, imageSizes);\n    }\n    if (maxZoom) {\n      updaterMap$e.maxZoom(clusterer, maxZoom);\n    }\n    if (minimumClusterSize) {\n      updaterMap$e.minimumClusterSize(clusterer, minimumClusterSize);\n    }\n    if (styles) {\n      updaterMap$e.styles(clusterer, styles);\n    }\n    if (title) {\n      updaterMap$e.title(clusterer, title);\n    }\n    if (zoomOnClick) {\n      updaterMap$e.zoomOnClick(clusterer, zoomOnClick);\n    }\n    if (onMouseOut) {\n      setMouseoutListener(google.maps.event.addListener(clusterer, eventMap$e.onMouseOut, onMouseOut));\n    }\n    if (onMouseOver) {\n      setMouseoverListener(google.maps.event.addListener(clusterer, eventMap$e.onMouseOver, onMouseOver));\n    }\n    if (onClick) {\n      setClickListener(google.maps.event.addListener(clusterer, eventMap$e.onClick, onClick));\n    }\n    if (onClusteringBegin) {\n      setClusteringBeginListener(google.maps.event.addListener(clusterer, eventMap$e.onClusteringBegin, onClusteringBegin));\n    }\n    if (onClusteringEnd) {\n      setClusteringEndListener(google.maps.event.addListener(clusterer, eventMap$e.onClusteringEnd, onClusteringEnd));\n    }\n    setInstance(clusterer);\n    if (onLoad) {\n      onLoad(clusterer);\n    }\n    return () => {\n      if (mouseoutListener !== null) {\n        google.maps.event.removeListener(mouseoutListener);\n      }\n      if (mouseoverListener !== null) {\n        google.maps.event.removeListener(mouseoverListener);\n      }\n      if (clickListener !== null) {\n        google.maps.event.removeListener(clickListener);\n      }\n      if (clusteringBeginListener !== null) {\n        google.maps.event.removeListener(clusteringBeginListener);\n      }\n      if (clusteringEndListener !== null) {\n        google.maps.event.removeListener(clusteringEndListener);\n      }\n      if (onUnmount) {\n        onUnmount(clusterer);\n      }\n    };\n  }, []);\n  return instance !== null ? children(instance) || null : null;\n}\nvar MarkerClustererF = memo(MarkerClustererFunctional);\nclass ClustererComponent extends PureComponent {\n  constructor() {\n    super(...arguments);\n    _defineProperty(this, \"registeredEvents\", []);\n    _defineProperty(this, \"state\", {\n      markerClusterer: null\n    });\n    _defineProperty(this, \"setClustererCallback\", () => {\n      if (this.state.markerClusterer !== null && this.props.onLoad) {\n        this.props.onLoad(this.state.markerClusterer);\n      }\n    });\n  }\n  componentDidMount() {\n    if (this.context) {\n      var markerClusterer = new Clusterer(this.context, [], this.props.options);\n      this.registeredEvents = applyUpdatersToPropsAndRegisterEvents({\n        updaterMap: updaterMap$e,\n        eventMap: eventMap$e,\n        prevProps: {},\n        nextProps: this.props,\n        instance: markerClusterer\n      });\n      this.setState(() => {\n        return {\n          markerClusterer\n        };\n      }, this.setClustererCallback);\n    }\n  }\n  componentDidUpdate(prevProps) {\n    if (this.state.markerClusterer) {\n      unregisterEvents(this.registeredEvents);\n      this.registeredEvents = applyUpdatersToPropsAndRegisterEvents({\n        updaterMap: updaterMap$e,\n        eventMap: eventMap$e,\n        prevProps,\n        nextProps: this.props,\n        instance: this.state.markerClusterer\n      });\n    }\n  }\n  componentWillUnmount() {\n    if (this.state.markerClusterer !== null) {\n      if (this.props.onUnmount) {\n        this.props.onUnmount(this.state.markerClusterer);\n      }\n      unregisterEvents(this.registeredEvents);\n      // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n      // @ts-ignore\n      this.state.markerClusterer.setMap(null);\n    }\n  }\n  render() {\n    return this.state.markerClusterer !== null ? this.props.children(this.state.markerClusterer) : null;\n  }\n}\n_defineProperty(ClustererComponent, \"contextType\", MapContext);\n\n// This handler prevents an event in the InfoBox from being passed on to the map.\nfunction cancelHandler(event) {\n  event.cancelBubble = true;\n  if (event.stopPropagation) {\n    event.stopPropagation();\n  }\n}\nvar InfoBox = /** @class */function () {\n  function InfoBox(options) {\n    if (options === void 0) {\n      options = {};\n    }\n    this.getCloseClickHandler = this.getCloseClickHandler.bind(this);\n    this.closeClickHandler = this.closeClickHandler.bind(this);\n    this.createInfoBoxDiv = this.createInfoBoxDiv.bind(this);\n    this.addClickHandler = this.addClickHandler.bind(this);\n    this.getCloseBoxImg = this.getCloseBoxImg.bind(this);\n    this.getBoxWidths = this.getBoxWidths.bind(this);\n    this.setBoxStyle = this.setBoxStyle.bind(this);\n    this.setPosition = this.setPosition.bind(this);\n    this.getPosition = this.getPosition.bind(this);\n    this.setOptions = this.setOptions.bind(this);\n    this.setContent = this.setContent.bind(this);\n    this.setVisible = this.setVisible.bind(this);\n    this.getContent = this.getContent.bind(this);\n    this.getVisible = this.getVisible.bind(this);\n    this.setZIndex = this.setZIndex.bind(this);\n    this.getZIndex = this.getZIndex.bind(this);\n    this.onRemove = this.onRemove.bind(this);\n    this.panBox = this.panBox.bind(this);\n    this.extend = this.extend.bind(this);\n    this.close = this.close.bind(this);\n    this.draw = this.draw.bind(this);\n    this.show = this.show.bind(this);\n    this.hide = this.hide.bind(this);\n    this.open = this.open.bind(this);\n    this.extend(InfoBox, google.maps.OverlayView);\n    // Standard options (in common with google.maps.InfoWindow):\n    this.content = options.content || '';\n    this.disableAutoPan = options.disableAutoPan || false;\n    this.maxWidth = options.maxWidth || 0;\n    this.pixelOffset = options.pixelOffset || new google.maps.Size(0, 0);\n    this.position = options.position || new google.maps.LatLng(0, 0);\n    this.zIndex = options.zIndex || null;\n    // Additional options (unique to InfoBox):\n    this.boxClass = options.boxClass || 'infoBox';\n    this.boxStyle = options.boxStyle || {};\n    this.closeBoxMargin = options.closeBoxMargin || '2px';\n    this.closeBoxURL = options.closeBoxURL || 'http://www.google.com/intl/en_us/mapfiles/close.gif';\n    if (options.closeBoxURL === '') {\n      this.closeBoxURL = '';\n    }\n    this.infoBoxClearance = options.infoBoxClearance || new google.maps.Size(1, 1);\n    if (typeof options.visible === 'undefined') {\n      if (typeof options.isHidden === 'undefined') {\n        options.visible = true;\n      } else {\n        options.visible = !options.isHidden;\n      }\n    }\n    this.isHidden = !options.visible;\n    this.alignBottom = options.alignBottom || false;\n    this.pane = options.pane || 'floatPane';\n    this.enableEventPropagation = options.enableEventPropagation || false;\n    this.div = null;\n    this.closeListener = null;\n    this.moveListener = null;\n    this.mapListener = null;\n    this.contextListener = null;\n    this.eventListeners = null;\n    this.fixedWidthSet = null;\n  }\n  InfoBox.prototype.createInfoBoxDiv = function () {\n    var _this = this;\n    // This handler ignores the current event in the InfoBox and conditionally prevents\n    // the event from being passed on to the map. It is used for the contextmenu event.\n    var ignoreHandler = function ignoreHandler(event) {\n      event.returnValue = false;\n      if (event.preventDefault) {\n        event.preventDefault();\n      }\n      if (!_this.enableEventPropagation) {\n        cancelHandler(event);\n      }\n    };\n    if (!this.div) {\n      this.div = document.createElement('div');\n      this.setBoxStyle();\n      if (typeof this.content === 'string') {\n        this.div.innerHTML = this.getCloseBoxImg() + this.content;\n      } else {\n        this.div.innerHTML = this.getCloseBoxImg();\n        this.div.appendChild(this.content);\n      }\n      var panes = this.getPanes();\n      if (panes !== null) {\n        panes[this.pane].appendChild(this.div); // Add the InfoBox div to the DOM\n      }\n      this.addClickHandler();\n      if (this.div.style.width) {\n        this.fixedWidthSet = true;\n      } else {\n        if (this.maxWidth !== 0 && this.div.offsetWidth > this.maxWidth) {\n          this.div.style.width = this.maxWidth + 'px';\n          this.fixedWidthSet = true;\n        } else {\n          // The following code is needed to overcome problems with MSIE\n          var bw = this.getBoxWidths();\n          this.div.style.width = this.div.offsetWidth - bw.left - bw.right + 'px';\n          this.fixedWidthSet = false;\n        }\n      }\n      this.panBox(this.disableAutoPan);\n      if (!this.enableEventPropagation) {\n        this.eventListeners = [];\n        // Cancel event propagation.\n        // Note: mousemove not included (to resolve Issue 152)\n        var events = ['mousedown', 'mouseover', 'mouseout', 'mouseup', 'click', 'dblclick', 'touchstart', 'touchend', 'touchmove'];\n        for (var _i = 0, events_1 = events; _i < events_1.length; _i++) {\n          var event_1 = events_1[_i];\n          this.eventListeners.push(google.maps.event.addListener(this.div, event_1, cancelHandler));\n        }\n        // Workaround for Google bug that causes the cursor to change to a pointer\n        // when the mouse moves over a marker underneath InfoBox.\n        this.eventListeners.push(google.maps.event.addListener(this.div, 'mouseover', function () {\n          if (_this.div) {\n            _this.div.style.cursor = 'default';\n          }\n        }));\n      }\n      this.contextListener = google.maps.event.addListener(this.div, 'contextmenu', ignoreHandler);\n      /**\n       * This event is fired when the DIV containing the InfoBox's content is attached to the DOM.\n       * @name InfoBox#domready\n       * @event\n       */\n      google.maps.event.trigger(this, 'domready');\n    }\n  };\n  InfoBox.prototype.getCloseBoxImg = function () {\n    var img = '';\n    if (this.closeBoxURL !== '') {\n      img = '<img alt=\"\"';\n      img += ' aria-hidden=\"true\"';\n      img += \" src='\" + this.closeBoxURL + \"'\";\n      img += ' align=right'; // Do this because Opera chokes on style='float: right;'\n      img += \" style='\";\n      img += ' position: relative;'; // Required by MSIE\n      img += ' cursor: pointer;';\n      img += ' margin: ' + this.closeBoxMargin + ';';\n      img += \"'>\";\n    }\n    return img;\n  };\n  InfoBox.prototype.addClickHandler = function () {\n    this.closeListener = this.div && this.div.firstChild && this.closeBoxURL !== '' ? google.maps.event.addListener(this.div.firstChild, 'click', this.getCloseClickHandler()) : null;\n  };\n  InfoBox.prototype.closeClickHandler = function (event) {\n    // 1.0.3 fix: Always prevent propagation of a close box click to the map:\n    event.cancelBubble = true;\n    if (event.stopPropagation) {\n      event.stopPropagation();\n    }\n    /**\n     * This event is fired when the InfoBox's close box is clicked.\n     * @name InfoBox#closeclick\n     * @event\n     */\n    google.maps.event.trigger(this, 'closeclick');\n    this.close();\n  };\n  InfoBox.prototype.getCloseClickHandler = function () {\n    return this.closeClickHandler;\n  };\n  InfoBox.prototype.panBox = function (disablePan) {\n    if (this.div && !disablePan) {\n      // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n      // @ts-ignore\n      var map = this.getMap();\n      // Only pan if attached to map, not panorama\n      if (map instanceof google.maps.Map) {\n        var xOffset = 0;\n        var yOffset = 0;\n        var bounds = map.getBounds();\n        if (bounds && !bounds.contains(this.position)) {\n          // Marker not in visible area of map, so set center\n          // of map to the marker position first.\n          map.setCenter(this.position);\n        }\n        var mapDiv = map.getDiv();\n        // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n        // @ts-ignore\n        var mapWidth = mapDiv.offsetWidth;\n        // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n        // @ts-ignore\n        var mapHeight = mapDiv.offsetHeight;\n        var iwOffsetX = this.pixelOffset.width;\n        var iwOffsetY = this.pixelOffset.height;\n        var iwWidth = this.div.offsetWidth;\n        var iwHeight = this.div.offsetHeight;\n        var padX = this.infoBoxClearance.width;\n        var padY = this.infoBoxClearance.height;\n        // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n        // @ts-ignore\n        var projection = this.getProjection();\n        var pixPosition = projection.fromLatLngToContainerPixel(this.position);\n        if (pixPosition !== null) {\n          if (pixPosition.x < -iwOffsetX + padX) {\n            xOffset = pixPosition.x + iwOffsetX - padX;\n          } else if (pixPosition.x + iwWidth + iwOffsetX + padX > mapWidth) {\n            xOffset = pixPosition.x + iwWidth + iwOffsetX + padX - mapWidth;\n          }\n          if (this.alignBottom) {\n            if (pixPosition.y < -iwOffsetY + padY + iwHeight) {\n              yOffset = pixPosition.y + iwOffsetY - padY - iwHeight;\n            } else if (pixPosition.y + iwOffsetY + padY > mapHeight) {\n              yOffset = pixPosition.y + iwOffsetY + padY - mapHeight;\n            }\n          } else {\n            if (pixPosition.y < -iwOffsetY + padY) {\n              yOffset = pixPosition.y + iwOffsetY - padY;\n            } else if (pixPosition.y + iwHeight + iwOffsetY + padY > mapHeight) {\n              yOffset = pixPosition.y + iwHeight + iwOffsetY + padY - mapHeight;\n            }\n          }\n        }\n        if (!(xOffset === 0 && yOffset === 0)) {\n          // Move the map to the shifted center.\n          map.panBy(xOffset, yOffset);\n        }\n      }\n    }\n  };\n  InfoBox.prototype.setBoxStyle = function () {\n    if (this.div) {\n      // Apply style values from the style sheet defined in the boxClass parameter:\n      this.div.className = this.boxClass;\n      // Clear existing inline style values:\n      this.div.style.cssText = '';\n      // Apply style values defined in the boxStyle parameter:\n      var boxStyle = this.boxStyle;\n      for (var i in boxStyle) {\n        if (Object.prototype.hasOwnProperty.call(boxStyle, i)) {\n          // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n          // @ts-ignore\n          this.div.style[i] = boxStyle[i];\n        }\n      }\n      // Fix for iOS disappearing InfoBox problem\n      // See http://stackoverflow.com/questions/9229535/google-maps-markers-disappear-at-certain-zoom-level-only-on-iphone-ipad\n      this.div.style.webkitTransform = 'translateZ(0)';\n      // Fix up opacity style for benefit of MSIE\n      if (typeof this.div.style.opacity !== 'undefined' && this.div.style.opacity !== '') {\n        // See http://www.quirksmode.org/css/opacity.html\n        var opacity = parseFloat(this.div.style.opacity || '');\n        // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n        // @ts-ignore\n        this.div.style.msFilter = '\"progid:DXImageTransform.Microsoft.Alpha(Opacity=' + opacity * 100 + ')\"';\n        this.div.style.filter = 'alpha(opacity=' + opacity * 100 + ')';\n      }\n      // Apply required styles\n      this.div.style.position = 'absolute';\n      this.div.style.visibility = 'hidden';\n      if (this.zIndex !== null) {\n        this.div.style.zIndex = this.zIndex + '';\n      }\n      if (!this.div.style.overflow) {\n        this.div.style.overflow = 'auto';\n      }\n    }\n  };\n  InfoBox.prototype.getBoxWidths = function () {\n    var bw = {\n      top: 0,\n      bottom: 0,\n      left: 0,\n      right: 0\n    };\n    if (!this.div) {\n      return bw;\n    }\n    if (document.defaultView) {\n      var ownerDocument = this.div.ownerDocument;\n      var computedStyle = ownerDocument && ownerDocument.defaultView ? ownerDocument.defaultView.getComputedStyle(this.div, '') : null;\n      if (computedStyle) {\n        // The computed styles are always in pixel units (good!)\n        bw.top = parseInt(computedStyle.borderTopWidth || '', 10) || 0;\n        bw.bottom = parseInt(computedStyle.borderBottomWidth || '', 10) || 0;\n        bw.left = parseInt(computedStyle.borderLeftWidth || '', 10) || 0;\n        bw.right = parseInt(computedStyle.borderRightWidth || '', 10) || 0;\n      }\n    } else if (\n    // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n    // @ts-ignore\n    document.documentElement.currentStyle // MSIE\n    ) {\n      // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n      // @ts-ignore\n      var currentStyle = this.div.currentStyle;\n      if (currentStyle) {\n        // The current styles may not be in pixel units, but assume they are (bad!)\n        bw.top = parseInt(currentStyle.borderTopWidth || '', 10) || 0;\n        bw.bottom = parseInt(currentStyle.borderBottomWidth || '', 10) || 0;\n        bw.left = parseInt(currentStyle.borderLeftWidth || '', 10) || 0;\n        bw.right = parseInt(currentStyle.borderRightWidth || '', 10) || 0;\n      }\n    }\n    return bw;\n  };\n  InfoBox.prototype.onRemove = function () {\n    if (this.div && this.div.parentNode) {\n      this.div.parentNode.removeChild(this.div);\n      this.div = null;\n    }\n  };\n  InfoBox.prototype.draw = function () {\n    this.createInfoBoxDiv();\n    if (this.div) {\n      // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n      // @ts-ignore\n      var projection = this.getProjection();\n      var pixPosition = projection.fromLatLngToDivPixel(this.position);\n      if (pixPosition !== null) {\n        this.div.style.left = pixPosition.x + this.pixelOffset.width + 'px';\n        if (this.alignBottom) {\n          this.div.style.bottom = -(pixPosition.y + this.pixelOffset.height) + 'px';\n        } else {\n          this.div.style.top = pixPosition.y + this.pixelOffset.height + 'px';\n        }\n      }\n      if (this.isHidden) {\n        this.div.style.visibility = 'hidden';\n      } else {\n        this.div.style.visibility = 'visible';\n      }\n    }\n  };\n  InfoBox.prototype.setOptions = function (options) {\n    if (options === void 0) {\n      options = {};\n    }\n    if (typeof options.boxClass !== 'undefined') {\n      // Must be first\n      this.boxClass = options.boxClass;\n      this.setBoxStyle();\n    }\n    if (typeof options.boxStyle !== 'undefined') {\n      // Must be second\n      this.boxStyle = options.boxStyle;\n      this.setBoxStyle();\n    }\n    if (typeof options.content !== 'undefined') {\n      this.setContent(options.content);\n    }\n    if (typeof options.disableAutoPan !== 'undefined') {\n      this.disableAutoPan = options.disableAutoPan;\n    }\n    if (typeof options.maxWidth !== 'undefined') {\n      this.maxWidth = options.maxWidth;\n    }\n    if (typeof options.pixelOffset !== 'undefined') {\n      this.pixelOffset = options.pixelOffset;\n    }\n    if (typeof options.alignBottom !== 'undefined') {\n      this.alignBottom = options.alignBottom;\n    }\n    if (typeof options.position !== 'undefined') {\n      this.setPosition(options.position);\n    }\n    if (typeof options.zIndex !== 'undefined') {\n      this.setZIndex(options.zIndex);\n    }\n    if (typeof options.closeBoxMargin !== 'undefined') {\n      this.closeBoxMargin = options.closeBoxMargin;\n    }\n    if (typeof options.closeBoxURL !== 'undefined') {\n      this.closeBoxURL = options.closeBoxURL;\n    }\n    if (typeof options.infoBoxClearance !== 'undefined') {\n      this.infoBoxClearance = options.infoBoxClearance;\n    }\n    if (typeof options.isHidden !== 'undefined') {\n      this.isHidden = options.isHidden;\n    }\n    if (typeof options.visible !== 'undefined') {\n      this.isHidden = !options.visible;\n    }\n    if (typeof options.enableEventPropagation !== 'undefined') {\n      this.enableEventPropagation = options.enableEventPropagation;\n    }\n    if (this.div) {\n      this.draw();\n    }\n  };\n  InfoBox.prototype.setContent = function (content) {\n    this.content = content;\n    if (this.div) {\n      if (this.closeListener) {\n        google.maps.event.removeListener(this.closeListener);\n        this.closeListener = null;\n      }\n      // Odd code required to make things work with MSIE.\n      if (!this.fixedWidthSet) {\n        this.div.style.width = '';\n      }\n      if (typeof content === 'string') {\n        this.div.innerHTML = this.getCloseBoxImg() + content;\n      } else {\n        this.div.innerHTML = this.getCloseBoxImg();\n        this.div.appendChild(content);\n      }\n      // Perverse code required to make things work with MSIE.\n      // (Ensures the close box does, in fact, float to the right.)\n      if (!this.fixedWidthSet) {\n        this.div.style.width = this.div.offsetWidth + 'px';\n        if (typeof content === 'string') {\n          this.div.innerHTML = this.getCloseBoxImg() + content;\n        } else {\n          this.div.innerHTML = this.getCloseBoxImg();\n          this.div.appendChild(content);\n        }\n      }\n      this.addClickHandler();\n    }\n    /**\n     * This event is fired when the content of the InfoBox changes.\n     * @name InfoBox#content_changed\n     * @event\n     */\n    google.maps.event.trigger(this, 'content_changed');\n  };\n  InfoBox.prototype.setPosition = function (latLng) {\n    this.position = latLng;\n    if (this.div) {\n      this.draw();\n    }\n    /**\n     * This event is fired when the position of the InfoBox changes.\n     * @name InfoBox#position_changed\n     * @event\n     */\n    google.maps.event.trigger(this, 'position_changed');\n  };\n  InfoBox.prototype.setVisible = function (isVisible) {\n    this.isHidden = !isVisible;\n    if (this.div) {\n      this.div.style.visibility = this.isHidden ? 'hidden' : 'visible';\n    }\n  };\n  InfoBox.prototype.setZIndex = function (index) {\n    this.zIndex = index;\n    if (this.div) {\n      this.div.style.zIndex = index + '';\n    }\n    /**\n     * This event is fired when the zIndex of the InfoBox changes.\n     * @name InfoBox#zindex_changed\n     * @event\n     */\n    google.maps.event.trigger(this, 'zindex_changed');\n  };\n  InfoBox.prototype.getContent = function () {\n    return this.content;\n  };\n  InfoBox.prototype.getPosition = function () {\n    return this.position;\n  };\n  InfoBox.prototype.getZIndex = function () {\n    return this.zIndex;\n  };\n  InfoBox.prototype.getVisible = function () {\n    var map = this.getMap();\n    return typeof map === 'undefined' || map === null ? false : !this.isHidden;\n  };\n  InfoBox.prototype.show = function () {\n    this.isHidden = false;\n    if (this.div) {\n      this.div.style.visibility = 'visible';\n    }\n  };\n  InfoBox.prototype.hide = function () {\n    this.isHidden = true;\n    if (this.div) {\n      this.div.style.visibility = 'hidden';\n    }\n  };\n  InfoBox.prototype.open = function (map, anchor) {\n    var _this = this;\n    if (anchor) {\n      // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n      // @ts-ignore\n      this.position = anchor.getPosition();\n      this.moveListener = google.maps.event.addListener(anchor, 'position_changed', function () {\n        // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n        // @ts-ignore\n        var position = anchor.getPosition();\n        _this.setPosition(position);\n      });\n      this.mapListener = google.maps.event.addListener(anchor, 'map_changed', function () {\n        // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n        // @ts-ignore\n        _this.setMap(anchor.map);\n      });\n    }\n    this.setMap(map);\n    if (this.div) {\n      this.panBox();\n    }\n  };\n  InfoBox.prototype.close = function () {\n    if (this.closeListener) {\n      google.maps.event.removeListener(this.closeListener);\n      this.closeListener = null;\n    }\n    if (this.eventListeners) {\n      for (var _i = 0, _a = this.eventListeners; _i < _a.length; _i++) {\n        var eventListener = _a[_i];\n        google.maps.event.removeListener(eventListener);\n      }\n      this.eventListeners = null;\n    }\n    if (this.moveListener) {\n      google.maps.event.removeListener(this.moveListener);\n      this.moveListener = null;\n    }\n    if (this.mapListener) {\n      google.maps.event.removeListener(this.mapListener);\n      this.mapListener = null;\n    }\n    if (this.contextListener) {\n      google.maps.event.removeListener(this.contextListener);\n      this.contextListener = null;\n    }\n    // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n    // @ts-ignore\n    this.setMap(null);\n  };\n  InfoBox.prototype.extend = function (obj1, obj2) {\n    return function applyExtend(object) {\n      for (var property in object.prototype) {\n        if (!Object.prototype.hasOwnProperty.call(this, property)) {\n          // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n          // @ts-ignore\n          this.prototype[property] = object.prototype[property];\n        }\n      }\n      return this;\n    }.apply(obj1, [obj2]);\n  };\n  return InfoBox;\n}();\n\nvar _excluded = [\"position\"],\n  _excluded2 = [\"position\"];\nfunction ownKeys$b(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread$b(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$b(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$b(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nvar eventMap$d = {\n  onCloseClick: 'closeclick',\n  onContentChanged: 'content_changed',\n  onDomReady: 'domready',\n  onPositionChanged: 'position_changed',\n  onZindexChanged: 'zindex_changed'\n};\nvar updaterMap$d = {\n  options(instance, options) {\n    instance.setOptions(options);\n  },\n  position(instance, position) {\n    if (position instanceof google.maps.LatLng) {\n      instance.setPosition(position);\n    } else {\n      instance.setPosition(new google.maps.LatLng(position.lat, position.lng));\n    }\n  },\n  visible(instance, visible) {\n    instance.setVisible(visible);\n  },\n  zIndex(instance, zIndex) {\n    instance.setZIndex(zIndex);\n  }\n};\nvar defaultOptions$3 = {};\nfunction InfoBoxFunctional(_ref) {\n  var {\n    children,\n    anchor,\n    options,\n    position,\n    zIndex,\n    onCloseClick,\n    onDomReady,\n    onContentChanged,\n    onPositionChanged,\n    onZindexChanged,\n    onLoad,\n    onUnmount\n  } = _ref;\n  var map = useContext(MapContext);\n  var [instance, setInstance] = useState(null);\n  var [closeClickListener, setCloseClickListener] = useState(null);\n  var [domReadyClickListener, setDomReadyClickListener] = useState(null);\n  var [contentChangedClickListener, setContentChangedClickListener] = useState(null);\n  var [positionChangedClickListener, setPositionChangedClickListener] = useState(null);\n  var [zIndexChangedClickListener, setZindexChangedClickListener] = useState(null);\n  var containerElementRef = useRef(null);\n  // Order does matter\n  useEffect(() => {\n    if (map && instance !== null) {\n      instance.close();\n      if (anchor) {\n        instance.open(map, anchor);\n      } else if (instance.getPosition()) {\n        instance.open(map);\n      }\n    }\n  }, [map, instance, anchor]);\n  useEffect(() => {\n    if (options && instance !== null) {\n      instance.setOptions(options);\n    }\n  }, [instance, options]);\n  useEffect(() => {\n    if (position && instance !== null) {\n      var positionLatLng = position instanceof google.maps.LatLng ? position :\n      // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n      // @ts-ignore\n      new google.maps.LatLng(position.lat, position.lng);\n      instance.setPosition(positionLatLng);\n    }\n  }, [position]);\n  useEffect(() => {\n    if (typeof zIndex === 'number' && instance !== null) {\n      instance.setZIndex(zIndex);\n    }\n  }, [zIndex]);\n  useEffect(() => {\n    if (instance && onCloseClick) {\n      if (closeClickListener !== null) {\n        google.maps.event.removeListener(closeClickListener);\n      }\n      setCloseClickListener(google.maps.event.addListener(instance, 'closeclick', onCloseClick));\n    }\n  }, [onCloseClick]);\n  useEffect(() => {\n    if (instance && onDomReady) {\n      if (domReadyClickListener !== null) {\n        google.maps.event.removeListener(domReadyClickListener);\n      }\n      setDomReadyClickListener(google.maps.event.addListener(instance, 'domready', onDomReady));\n    }\n  }, [onDomReady]);\n  useEffect(() => {\n    if (instance && onContentChanged) {\n      if (contentChangedClickListener !== null) {\n        google.maps.event.removeListener(contentChangedClickListener);\n      }\n      setContentChangedClickListener(google.maps.event.addListener(instance, 'content_changed', onContentChanged));\n    }\n  }, [onContentChanged]);\n  useEffect(() => {\n    if (instance && onPositionChanged) {\n      if (positionChangedClickListener !== null) {\n        google.maps.event.removeListener(positionChangedClickListener);\n      }\n      setPositionChangedClickListener(google.maps.event.addListener(instance, 'position_changed', onPositionChanged));\n    }\n  }, [onPositionChanged]);\n  useEffect(() => {\n    if (instance && onZindexChanged) {\n      if (zIndexChangedClickListener !== null) {\n        google.maps.event.removeListener(zIndexChangedClickListener);\n      }\n      setZindexChangedClickListener(google.maps.event.addListener(instance, 'zindex_changed', onZindexChanged));\n    }\n  }, [onZindexChanged]);\n  useEffect(() => {\n    if (map) {\n      var _ref2 = options || defaultOptions$3,\n        {\n          position: _position\n        } = _ref2,\n        infoBoxOptions = _objectWithoutProperties(_ref2, _excluded);\n      var positionLatLng;\n      if (_position && !(_position instanceof google.maps.LatLng)) {\n        // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n        // @ts-ignore\n        positionLatLng = new google.maps.LatLng(_position.lat, _position.lng);\n      }\n      var infoBox = new InfoBox(_objectSpread$b(_objectSpread$b({}, infoBoxOptions), positionLatLng ? {\n        position: positionLatLng\n      } : {}));\n      containerElementRef.current = document.createElement('div');\n      setInstance(infoBox);\n      if (onCloseClick) {\n        setCloseClickListener(google.maps.event.addListener(infoBox, 'closeclick', onCloseClick));\n      }\n      if (onDomReady) {\n        setDomReadyClickListener(google.maps.event.addListener(infoBox, 'domready', onDomReady));\n      }\n      if (onContentChanged) {\n        setContentChangedClickListener(google.maps.event.addListener(infoBox, 'content_changed', onContentChanged));\n      }\n      if (onPositionChanged) {\n        setPositionChangedClickListener(google.maps.event.addListener(infoBox, 'position_changed', onPositionChanged));\n      }\n      if (onZindexChanged) {\n        setZindexChangedClickListener(google.maps.event.addListener(infoBox, 'zindex_changed', onZindexChanged));\n      }\n      infoBox.setContent(containerElementRef.current);\n      if (anchor) {\n        infoBox.open(map, anchor);\n      } else if (infoBox.getPosition()) {\n        infoBox.open(map);\n      } else {\n        invariant(false, 'You must provide either an anchor or a position prop for <InfoBox>.');\n      }\n      if (onLoad) {\n        onLoad(infoBox);\n      }\n    }\n    return () => {\n      if (instance !== null) {\n        if (closeClickListener) {\n          google.maps.event.removeListener(closeClickListener);\n        }\n        if (contentChangedClickListener) {\n          google.maps.event.removeListener(contentChangedClickListener);\n        }\n        if (domReadyClickListener) {\n          google.maps.event.removeListener(domReadyClickListener);\n        }\n        if (positionChangedClickListener) {\n          google.maps.event.removeListener(positionChangedClickListener);\n        }\n        if (zIndexChangedClickListener) {\n          google.maps.event.removeListener(zIndexChangedClickListener);\n        }\n        if (onUnmount) {\n          onUnmount(instance);\n        }\n        instance.close();\n      }\n    };\n  }, []);\n  return containerElementRef.current ? createPortal(Children.only(children), containerElementRef.current) : null;\n}\nvar InfoBoxF = memo(InfoBoxFunctional);\nclass InfoBoxComponent extends PureComponent {\n  constructor() {\n    super(...arguments);\n    _defineProperty(this, \"registeredEvents\", []);\n    _defineProperty(this, \"containerElement\", null);\n    _defineProperty(this, \"state\", {\n      infoBox: null\n    });\n    _defineProperty(this, \"open\", (infoBox, anchor) => {\n      if (anchor) {\n        if (this.context !== null) {\n          infoBox.open(this.context, anchor);\n        }\n      } else if (infoBox.getPosition()) {\n        if (this.context !== null) {\n          infoBox.open(this.context);\n        }\n      } else {\n        invariant(false, 'You must provide either an anchor or a position prop for <InfoBox>.');\n      }\n    });\n    _defineProperty(this, \"setInfoBoxCallback\", () => {\n      if (this.state.infoBox !== null && this.containerElement !== null) {\n        this.state.infoBox.setContent(this.containerElement);\n        this.open(this.state.infoBox, this.props.anchor);\n        if (this.props.onLoad) {\n          this.props.onLoad(this.state.infoBox);\n        }\n      }\n    });\n  }\n  componentDidMount() {\n    var _ref3 = this.props.options || {},\n      {\n        position\n      } = _ref3,\n      infoBoxOptions = _objectWithoutProperties(_ref3, _excluded2);\n    var positionLatLng;\n    if (position && !(position instanceof google.maps.LatLng)) {\n      // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n      // @ts-ignore\n      positionLatLng = new google.maps.LatLng(position.lat, position.lng);\n    }\n    var infoBox = new InfoBox(_objectSpread$b(_objectSpread$b({}, infoBoxOptions), positionLatLng ? {\n      position: positionLatLng\n    } : {}));\n    this.containerElement = document.createElement('div');\n    this.registeredEvents = applyUpdatersToPropsAndRegisterEvents({\n      updaterMap: updaterMap$d,\n      eventMap: eventMap$d,\n      prevProps: {},\n      nextProps: this.props,\n      instance: infoBox\n    });\n    this.setState({\n      infoBox\n    }, this.setInfoBoxCallback);\n  }\n  componentDidUpdate(prevProps) {\n    var {\n      infoBox\n    } = this.state;\n    if (infoBox !== null) {\n      unregisterEvents(this.registeredEvents);\n      this.registeredEvents = applyUpdatersToPropsAndRegisterEvents({\n        updaterMap: updaterMap$d,\n        eventMap: eventMap$d,\n        prevProps,\n        nextProps: this.props,\n        instance: infoBox\n      });\n    }\n  }\n  componentWillUnmount() {\n    var {\n      onUnmount\n    } = this.props;\n    var {\n      infoBox\n    } = this.state;\n    if (infoBox !== null) {\n      if (onUnmount) {\n        onUnmount(infoBox);\n      }\n      unregisterEvents(this.registeredEvents);\n      infoBox.close();\n    }\n  }\n  render() {\n    return this.containerElement ? createPortal(Children.only(this.props.children), this.containerElement) : null;\n  }\n}\n_defineProperty(InfoBoxComponent, \"contextType\", MapContext);\n\nvar fastDeepEqual;\nvar hasRequiredFastDeepEqual;\nfunction requireFastDeepEqual() {\n  if (hasRequiredFastDeepEqual) return fastDeepEqual;\n  hasRequiredFastDeepEqual = 1;\n\n  // do not edit .js files directly - edit src/index.jst\n\n  fastDeepEqual = function equal(a, b) {\n    if (a === b) return true;\n    if (a && b && typeof a == 'object' && typeof b == 'object') {\n      if (a.constructor !== b.constructor) return false;\n      var length, i, keys;\n      if (Array.isArray(a)) {\n        length = a.length;\n        if (length != b.length) return false;\n        for (i = length; i-- !== 0;) if (!equal(a[i], b[i])) return false;\n        return true;\n      }\n      if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags;\n      if (a.valueOf !== Object.prototype.valueOf) return a.valueOf() === b.valueOf();\n      if (a.toString !== Object.prototype.toString) return a.toString() === b.toString();\n      keys = Object.keys(a);\n      length = keys.length;\n      if (length !== Object.keys(b).length) return false;\n      for (i = length; i-- !== 0;) if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\n      for (i = length; i-- !== 0;) {\n        var key = keys[i];\n        if (!equal(a[key], b[key])) return false;\n      }\n      return true;\n    }\n\n    // true if both NaN, false otherwise\n    return a !== a && b !== b;\n  };\n  return fastDeepEqual;\n}\n\nvar fastDeepEqualExports = requireFastDeepEqual();\nvar equal = /*@__PURE__*/getDefaultExportFromCjs$1(fastDeepEqualExports);\n\nvar ARRAY_TYPES = [Int8Array, Uint8Array, Uint8ClampedArray, Int16Array, Uint16Array, Int32Array, Uint32Array, Float32Array, Float64Array];\n\n/** @typedef {Int8ArrayConstructor | Uint8ArrayConstructor | Uint8ClampedArrayConstructor | Int16ArrayConstructor | Uint16ArrayConstructor | Int32ArrayConstructor | Uint32ArrayConstructor | Float32ArrayConstructor | Float64ArrayConstructor} TypedArrayConstructor */\n\nvar VERSION = 1; // serialized format version\nvar HEADER_SIZE = 8;\nclass KDBush {\n  /**\n   * Creates an index from raw `ArrayBuffer` data.\n   * @param {ArrayBuffer} data\n   */\n  static from(data) {\n    if (!(data instanceof ArrayBuffer)) {\n      throw new Error('Data must be an instance of ArrayBuffer.');\n    }\n    var [magic, versionAndType] = new Uint8Array(data, 0, 2);\n    if (magic !== 0xdb) {\n      throw new Error('Data does not appear to be in a KDBush format.');\n    }\n    var version = versionAndType >> 4;\n    if (version !== VERSION) {\n      throw new Error(\"Got v\".concat(version, \" data when expected v\").concat(VERSION, \".\"));\n    }\n    var ArrayType = ARRAY_TYPES[versionAndType & 0x0f];\n    if (!ArrayType) {\n      throw new Error('Unrecognized array type.');\n    }\n    var [nodeSize] = new Uint16Array(data, 2, 1);\n    var [numItems] = new Uint32Array(data, 4, 1);\n    return new KDBush(numItems, nodeSize, ArrayType, data);\n  }\n\n  /**\n   * Creates an index that will hold a given number of items.\n   * @param {number} numItems\n   * @param {number} [nodeSize=64] Size of the KD-tree node (64 by default).\n   * @param {TypedArrayConstructor} [ArrayType=Float64Array] The array type used for coordinates storage (`Float64Array` by default).\n   * @param {ArrayBuffer} [data] (For internal use only)\n   */\n  constructor(numItems) {\n    var nodeSize = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 64;\n    var ArrayType = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : Float64Array;\n    var data = arguments.length > 3 ? arguments[3] : undefined;\n    if (isNaN(numItems) || numItems < 0) throw new Error(\"Unpexpected numItems value: \".concat(numItems, \".\"));\n    this.numItems = +numItems;\n    this.nodeSize = Math.min(Math.max(+nodeSize, 2), 65535);\n    this.ArrayType = ArrayType;\n    this.IndexArrayType = numItems < 65536 ? Uint16Array : Uint32Array;\n    var arrayTypeIndex = ARRAY_TYPES.indexOf(this.ArrayType);\n    var coordsByteSize = numItems * 2 * this.ArrayType.BYTES_PER_ELEMENT;\n    var idsByteSize = numItems * this.IndexArrayType.BYTES_PER_ELEMENT;\n    var padCoords = (8 - idsByteSize % 8) % 8;\n    if (arrayTypeIndex < 0) {\n      throw new Error(\"Unexpected typed array class: \".concat(ArrayType, \".\"));\n    }\n    if (data && data instanceof ArrayBuffer) {\n      // reconstruct an index from a buffer\n      this.data = data;\n      this.ids = new this.IndexArrayType(this.data, HEADER_SIZE, numItems);\n      this.coords = new this.ArrayType(this.data, HEADER_SIZE + idsByteSize + padCoords, numItems * 2);\n      this._pos = numItems * 2;\n      this._finished = true;\n    } else {\n      // initialize a new index\n      this.data = new ArrayBuffer(HEADER_SIZE + coordsByteSize + idsByteSize + padCoords);\n      this.ids = new this.IndexArrayType(this.data, HEADER_SIZE, numItems);\n      this.coords = new this.ArrayType(this.data, HEADER_SIZE + idsByteSize + padCoords, numItems * 2);\n      this._pos = 0;\n      this._finished = false;\n\n      // set header\n      new Uint8Array(this.data, 0, 2).set([0xdb, (VERSION << 4) + arrayTypeIndex]);\n      new Uint16Array(this.data, 2, 1)[0] = nodeSize;\n      new Uint32Array(this.data, 4, 1)[0] = numItems;\n    }\n  }\n\n  /**\n   * Add a point to the index.\n   * @param {number} x\n   * @param {number} y\n   * @returns {number} An incremental index associated with the added item (starting from `0`).\n   */\n  add(x, y) {\n    var index = this._pos >> 1;\n    this.ids[index] = index;\n    this.coords[this._pos++] = x;\n    this.coords[this._pos++] = y;\n    return index;\n  }\n\n  /**\n   * Perform indexing of the added points.\n   */\n  finish() {\n    var numAdded = this._pos >> 1;\n    if (numAdded !== this.numItems) {\n      throw new Error(\"Added \".concat(numAdded, \" items when expected \").concat(this.numItems, \".\"));\n    }\n    // kd-sort both arrays for efficient search\n    sort(this.ids, this.coords, this.nodeSize, 0, this.numItems - 1, 0);\n    this._finished = true;\n    return this;\n  }\n\n  /**\n   * Search the index for items within a given bounding box.\n   * @param {number} minX\n   * @param {number} minY\n   * @param {number} maxX\n   * @param {number} maxY\n   * @returns {number[]} An array of indices correponding to the found items.\n   */\n  range(minX, minY, maxX, maxY) {\n    if (!this._finished) throw new Error('Data not yet indexed - call index.finish().');\n    var {\n      ids,\n      coords,\n      nodeSize\n    } = this;\n    var stack = [0, ids.length - 1, 0];\n    var result = [];\n\n    // recursively search for items in range in the kd-sorted arrays\n    while (stack.length) {\n      var axis = stack.pop() || 0;\n      var right = stack.pop() || 0;\n      var left = stack.pop() || 0;\n\n      // if we reached \"tree node\", search linearly\n      if (right - left <= nodeSize) {\n        for (var i = left; i <= right; i++) {\n          var _x = coords[2 * i];\n          var _y = coords[2 * i + 1];\n          if (_x >= minX && _x <= maxX && _y >= minY && _y <= maxY) result.push(ids[i]);\n        }\n        continue;\n      }\n\n      // otherwise find the middle index\n      var m = left + right >> 1;\n\n      // include the middle item if it's in range\n      var x = coords[2 * m];\n      var y = coords[2 * m + 1];\n      if (x >= minX && x <= maxX && y >= minY && y <= maxY) result.push(ids[m]);\n\n      // queue search in halves that intersect the query\n      if (axis === 0 ? minX <= x : minY <= y) {\n        stack.push(left);\n        stack.push(m - 1);\n        stack.push(1 - axis);\n      }\n      if (axis === 0 ? maxX >= x : maxY >= y) {\n        stack.push(m + 1);\n        stack.push(right);\n        stack.push(1 - axis);\n      }\n    }\n    return result;\n  }\n\n  /**\n   * Search the index for items within a given radius.\n   * @param {number} qx\n   * @param {number} qy\n   * @param {number} r Query radius.\n   * @returns {number[]} An array of indices correponding to the found items.\n   */\n  within(qx, qy, r) {\n    if (!this._finished) throw new Error('Data not yet indexed - call index.finish().');\n    var {\n      ids,\n      coords,\n      nodeSize\n    } = this;\n    var stack = [0, ids.length - 1, 0];\n    var result = [];\n    var r2 = r * r;\n\n    // recursively search for items within radius in the kd-sorted arrays\n    while (stack.length) {\n      var axis = stack.pop() || 0;\n      var right = stack.pop() || 0;\n      var left = stack.pop() || 0;\n\n      // if we reached \"tree node\", search linearly\n      if (right - left <= nodeSize) {\n        for (var i = left; i <= right; i++) {\n          if (sqDist(coords[2 * i], coords[2 * i + 1], qx, qy) <= r2) result.push(ids[i]);\n        }\n        continue;\n      }\n\n      // otherwise find the middle index\n      var m = left + right >> 1;\n\n      // include the middle item if it's in range\n      var x = coords[2 * m];\n      var y = coords[2 * m + 1];\n      if (sqDist(x, y, qx, qy) <= r2) result.push(ids[m]);\n\n      // queue search in halves that intersect the query\n      if (axis === 0 ? qx - r <= x : qy - r <= y) {\n        stack.push(left);\n        stack.push(m - 1);\n        stack.push(1 - axis);\n      }\n      if (axis === 0 ? qx + r >= x : qy + r >= y) {\n        stack.push(m + 1);\n        stack.push(right);\n        stack.push(1 - axis);\n      }\n    }\n    return result;\n  }\n}\n\n/**\n * @param {Uint16Array | Uint32Array} ids\n * @param {InstanceType<TypedArrayConstructor>} coords\n * @param {number} nodeSize\n * @param {number} left\n * @param {number} right\n * @param {number} axis\n */\nfunction sort(ids, coords, nodeSize, left, right, axis) {\n  if (right - left <= nodeSize) return;\n  var m = left + right >> 1; // middle index\n\n  // sort ids and coords around the middle index so that the halves lie\n  // either left/right or top/bottom correspondingly (taking turns)\n  select(ids, coords, m, left, right, axis);\n\n  // recursively kd-sort first half and second half on the opposite axis\n  sort(ids, coords, nodeSize, left, m - 1, 1 - axis);\n  sort(ids, coords, nodeSize, m + 1, right, 1 - axis);\n}\n\n/**\n * Custom Floyd-Rivest selection algorithm: sort ids and coords so that\n * [left..k-1] items are smaller than k-th item (on either x or y axis)\n * @param {Uint16Array | Uint32Array} ids\n * @param {InstanceType<TypedArrayConstructor>} coords\n * @param {number} k\n * @param {number} left\n * @param {number} right\n * @param {number} axis\n */\nfunction select(ids, coords, k, left, right, axis) {\n  while (right > left) {\n    if (right - left > 600) {\n      var n = right - left + 1;\n      var m = k - left + 1;\n      var z = Math.log(n);\n      var s = 0.5 * Math.exp(2 * z / 3);\n      var sd = 0.5 * Math.sqrt(z * s * (n - s) / n) * (m - n / 2 < 0 ? -1 : 1);\n      var newLeft = Math.max(left, Math.floor(k - m * s / n + sd));\n      var newRight = Math.min(right, Math.floor(k + (n - m) * s / n + sd));\n      select(ids, coords, k, newLeft, newRight, axis);\n    }\n    var t = coords[2 * k + axis];\n    var i = left;\n    var j = right;\n    swapItem(ids, coords, left, k);\n    if (coords[2 * right + axis] > t) swapItem(ids, coords, left, right);\n    while (i < j) {\n      swapItem(ids, coords, i, j);\n      i++;\n      j--;\n      while (coords[2 * i + axis] < t) i++;\n      while (coords[2 * j + axis] > t) j--;\n    }\n    if (coords[2 * left + axis] === t) swapItem(ids, coords, left, j);else {\n      j++;\n      swapItem(ids, coords, j, right);\n    }\n    if (j <= k) left = j + 1;\n    if (k <= j) right = j - 1;\n  }\n}\n\n/**\n * @param {Uint16Array | Uint32Array} ids\n * @param {InstanceType<TypedArrayConstructor>} coords\n * @param {number} i\n * @param {number} j\n */\nfunction swapItem(ids, coords, i, j) {\n  swap(ids, i, j);\n  swap(coords, 2 * i, 2 * j);\n  swap(coords, 2 * i + 1, 2 * j + 1);\n}\n\n/**\n * @param {InstanceType<TypedArrayConstructor>} arr\n * @param {number} i\n * @param {number} j\n */\nfunction swap(arr, i, j) {\n  var tmp = arr[i];\n  arr[i] = arr[j];\n  arr[j] = tmp;\n}\n\n/**\n * @param {number} ax\n * @param {number} ay\n * @param {number} bx\n * @param {number} by\n */\nfunction sqDist(ax, ay, bx, by) {\n  var dx = ax - bx;\n  var dy = ay - by;\n  return dx * dx + dy * dy;\n}\n\nvar defaultOptions$2 = {\n  minZoom: 0,\n  // min zoom to generate clusters on\n  maxZoom: 16,\n  // max zoom level to cluster the points on\n  minPoints: 2,\n  // minimum points to form a cluster\n  radius: 40,\n  // cluster radius in pixels\n  extent: 512,\n  // tile extent (radius is calculated relative to it)\n  nodeSize: 64,\n  // size of the KD-tree leaf node, affects performance\n  log: false,\n  // whether to log timing info\n\n  // whether to generate numeric ids for input features (in vector tiles)\n  generateId: false,\n  // a reduce function for calculating custom cluster properties\n  reduce: null,\n  // (accumulated, props) => { accumulated.sum += props.sum; }\n\n  // properties to use for individual points when running the reducer\n  map: props => props // props => ({sum: props.my_value})\n};\nvar fround = Math.fround || (tmp => x => {\n  tmp[0] = +x;\n  return tmp[0];\n})(new Float32Array(1));\nvar OFFSET_ZOOM = 2;\nvar OFFSET_ID = 3;\nvar OFFSET_PARENT = 4;\nvar OFFSET_NUM = 5;\nvar OFFSET_PROP = 6;\nclass Supercluster {\n  constructor(options) {\n    this.options = Object.assign(Object.create(defaultOptions$2), options);\n    this.trees = new Array(this.options.maxZoom + 1);\n    this.stride = this.options.reduce ? 7 : 6;\n    this.clusterProps = [];\n  }\n  load(points) {\n    var {\n      log,\n      minZoom,\n      maxZoom\n    } = this.options;\n    if (log) console.time('total time');\n    var timerId = \"prepare \".concat(points.length, \" points\");\n    if (log) console.time(timerId);\n    this.points = points;\n\n    // generate a cluster object for each point and index input points into a KD-tree\n    var data = [];\n    for (var i = 0; i < points.length; i++) {\n      var p = points[i];\n      if (!p.geometry) continue;\n      var [lng, lat] = p.geometry.coordinates;\n      var x = fround(lngX(lng));\n      var y = fround(latY(lat));\n      // store internal point/cluster data in flat numeric arrays for performance\n      data.push(x, y,\n      // projected point coordinates\n      Infinity,\n      // the last zoom the point was processed at\n      i,\n      // index of the source feature in the original input array\n      -1,\n      // parent cluster id\n      1 // number of points in a cluster\n      );\n      if (this.options.reduce) data.push(0); // noop\n    }\n    var tree = this.trees[maxZoom + 1] = this._createTree(data);\n    if (log) console.timeEnd(timerId);\n\n    // cluster points on max zoom, then cluster the results on previous zoom, etc.;\n    // results in a cluster hierarchy across zoom levels\n    for (var z = maxZoom; z >= minZoom; z--) {\n      var now = +Date.now();\n\n      // create a new set of clusters for the zoom and index them with a KD-tree\n      tree = this.trees[z] = this._createTree(this._cluster(tree, z));\n      if (log) console.log('z%d: %d clusters in %dms', z, tree.numItems, +Date.now() - now);\n    }\n    if (log) console.timeEnd('total time');\n    return this;\n  }\n  getClusters(bbox, zoom) {\n    var minLng = ((bbox[0] + 180) % 360 + 360) % 360 - 180;\n    var minLat = Math.max(-90, Math.min(90, bbox[1]));\n    var maxLng = bbox[2] === 180 ? 180 : ((bbox[2] + 180) % 360 + 360) % 360 - 180;\n    var maxLat = Math.max(-90, Math.min(90, bbox[3]));\n    if (bbox[2] - bbox[0] >= 360) {\n      minLng = -180;\n      maxLng = 180;\n    } else if (minLng > maxLng) {\n      var easternHem = this.getClusters([minLng, minLat, 180, maxLat], zoom);\n      var westernHem = this.getClusters([-180, minLat, maxLng, maxLat], zoom);\n      return easternHem.concat(westernHem);\n    }\n    var tree = this.trees[this._limitZoom(zoom)];\n    var ids = tree.range(lngX(minLng), latY(maxLat), lngX(maxLng), latY(minLat));\n    var data = tree.data;\n    var clusters = [];\n    for (var id of ids) {\n      var k = this.stride * id;\n      clusters.push(data[k + OFFSET_NUM] > 1 ? getClusterJSON(data, k, this.clusterProps) : this.points[data[k + OFFSET_ID]]);\n    }\n    return clusters;\n  }\n  getChildren(clusterId) {\n    var originId = this._getOriginId(clusterId);\n    var originZoom = this._getOriginZoom(clusterId);\n    var errorMsg = 'No cluster with the specified id.';\n    var tree = this.trees[originZoom];\n    if (!tree) throw new Error(errorMsg);\n    var data = tree.data;\n    if (originId * this.stride >= data.length) throw new Error(errorMsg);\n    var r = this.options.radius / (this.options.extent * Math.pow(2, originZoom - 1));\n    var x = data[originId * this.stride];\n    var y = data[originId * this.stride + 1];\n    var ids = tree.within(x, y, r);\n    var children = [];\n    for (var id of ids) {\n      var k = id * this.stride;\n      if (data[k + OFFSET_PARENT] === clusterId) {\n        children.push(data[k + OFFSET_NUM] > 1 ? getClusterJSON(data, k, this.clusterProps) : this.points[data[k + OFFSET_ID]]);\n      }\n    }\n    if (children.length === 0) throw new Error(errorMsg);\n    return children;\n  }\n  getLeaves(clusterId, limit, offset) {\n    limit = limit || 10;\n    offset = offset || 0;\n    var leaves = [];\n    this._appendLeaves(leaves, clusterId, limit, offset, 0);\n    return leaves;\n  }\n  getTile(z, x, y) {\n    var tree = this.trees[this._limitZoom(z)];\n    var z2 = Math.pow(2, z);\n    var {\n      extent,\n      radius\n    } = this.options;\n    var p = radius / extent;\n    var top = (y - p) / z2;\n    var bottom = (y + 1 + p) / z2;\n    var tile = {\n      features: []\n    };\n    this._addTileFeatures(tree.range((x - p) / z2, top, (x + 1 + p) / z2, bottom), tree.data, x, y, z2, tile);\n    if (x === 0) {\n      this._addTileFeatures(tree.range(1 - p / z2, top, 1, bottom), tree.data, z2, y, z2, tile);\n    }\n    if (x === z2 - 1) {\n      this._addTileFeatures(tree.range(0, top, p / z2, bottom), tree.data, -1, y, z2, tile);\n    }\n    return tile.features.length ? tile : null;\n  }\n  getClusterExpansionZoom(clusterId) {\n    var expansionZoom = this._getOriginZoom(clusterId) - 1;\n    while (expansionZoom <= this.options.maxZoom) {\n      var children = this.getChildren(clusterId);\n      expansionZoom++;\n      if (children.length !== 1) break;\n      clusterId = children[0].properties.cluster_id;\n    }\n    return expansionZoom;\n  }\n  _appendLeaves(result, clusterId, limit, offset, skipped) {\n    var children = this.getChildren(clusterId);\n    for (var child of children) {\n      var props = child.properties;\n      if (props && props.cluster) {\n        if (skipped + props.point_count <= offset) {\n          // skip the whole cluster\n          skipped += props.point_count;\n        } else {\n          // enter the cluster\n          skipped = this._appendLeaves(result, props.cluster_id, limit, offset, skipped);\n          // exit the cluster\n        }\n      } else if (skipped < offset) {\n        // skip a single point\n        skipped++;\n      } else {\n        // add a single point\n        result.push(child);\n      }\n      if (result.length === limit) break;\n    }\n    return skipped;\n  }\n  _createTree(data) {\n    var tree = new KDBush(data.length / this.stride | 0, this.options.nodeSize, Float32Array);\n    for (var i = 0; i < data.length; i += this.stride) tree.add(data[i], data[i + 1]);\n    tree.finish();\n    tree.data = data;\n    return tree;\n  }\n  _addTileFeatures(ids, data, x, y, z2, tile) {\n    for (var i of ids) {\n      var k = i * this.stride;\n      var isCluster = data[k + OFFSET_NUM] > 1;\n      var tags = void 0,\n        px = void 0,\n        py = void 0;\n      if (isCluster) {\n        tags = getClusterProperties(data, k, this.clusterProps);\n        px = data[k];\n        py = data[k + 1];\n      } else {\n        var p = this.points[data[k + OFFSET_ID]];\n        tags = p.properties;\n        var [lng, lat] = p.geometry.coordinates;\n        px = lngX(lng);\n        py = latY(lat);\n      }\n      var f = {\n        type: 1,\n        geometry: [[Math.round(this.options.extent * (px * z2 - x)), Math.round(this.options.extent * (py * z2 - y))]],\n        tags\n      };\n\n      // assign id\n      var id = void 0;\n      if (isCluster || this.options.generateId) {\n        // optionally generate id for points\n        id = data[k + OFFSET_ID];\n      } else {\n        // keep id if already assigned\n        id = this.points[data[k + OFFSET_ID]].id;\n      }\n      if (id !== undefined) f.id = id;\n      tile.features.push(f);\n    }\n  }\n  _limitZoom(z) {\n    return Math.max(this.options.minZoom, Math.min(Math.floor(+z), this.options.maxZoom + 1));\n  }\n  _cluster(tree, zoom) {\n    var {\n      radius,\n      extent,\n      reduce,\n      minPoints\n    } = this.options;\n    var r = radius / (extent * Math.pow(2, zoom));\n    var data = tree.data;\n    var nextData = [];\n    var stride = this.stride;\n\n    // loop through each point\n    for (var i = 0; i < data.length; i += stride) {\n      // if we've already visited the point at this zoom level, skip it\n      if (data[i + OFFSET_ZOOM] <= zoom) continue;\n      data[i + OFFSET_ZOOM] = zoom;\n\n      // find all nearby points\n      var x = data[i];\n      var y = data[i + 1];\n      var neighborIds = tree.within(data[i], data[i + 1], r);\n      var numPointsOrigin = data[i + OFFSET_NUM];\n      var numPoints = numPointsOrigin;\n\n      // count the number of points in a potential cluster\n      for (var neighborId of neighborIds) {\n        var k = neighborId * stride;\n        // filter out neighbors that are already processed\n        if (data[k + OFFSET_ZOOM] > zoom) numPoints += data[k + OFFSET_NUM];\n      }\n\n      // if there were neighbors to merge, and there are enough points to form a cluster\n      if (numPoints > numPointsOrigin && numPoints >= minPoints) {\n        var wx = x * numPointsOrigin;\n        var wy = y * numPointsOrigin;\n        var clusterProperties = void 0;\n        var clusterPropIndex = -1;\n\n        // encode both zoom and point index on which the cluster originated -- offset by total length of features\n        var id = ((i / stride | 0) << 5) + (zoom + 1) + this.points.length;\n        for (var _neighborId of neighborIds) {\n          var _k = _neighborId * stride;\n          if (data[_k + OFFSET_ZOOM] <= zoom) continue;\n          data[_k + OFFSET_ZOOM] = zoom; // save the zoom (so it doesn't get processed twice)\n\n          var numPoints2 = data[_k + OFFSET_NUM];\n          wx += data[_k] * numPoints2; // accumulate coordinates for calculating weighted center\n          wy += data[_k + 1] * numPoints2;\n          data[_k + OFFSET_PARENT] = id;\n          if (reduce) {\n            if (!clusterProperties) {\n              clusterProperties = this._map(data, i, true);\n              clusterPropIndex = this.clusterProps.length;\n              this.clusterProps.push(clusterProperties);\n            }\n            reduce(clusterProperties, this._map(data, _k));\n          }\n        }\n        data[i + OFFSET_PARENT] = id;\n        nextData.push(wx / numPoints, wy / numPoints, Infinity, id, -1, numPoints);\n        if (reduce) nextData.push(clusterPropIndex);\n      } else {\n        // left points as unclustered\n        for (var j = 0; j < stride; j++) nextData.push(data[i + j]);\n        if (numPoints > 1) {\n          for (var _neighborId2 of neighborIds) {\n            var _k2 = _neighborId2 * stride;\n            if (data[_k2 + OFFSET_ZOOM] <= zoom) continue;\n            data[_k2 + OFFSET_ZOOM] = zoom;\n            for (var _j = 0; _j < stride; _j++) nextData.push(data[_k2 + _j]);\n          }\n        }\n      }\n    }\n    return nextData;\n  }\n\n  // get index of the point from which the cluster originated\n  _getOriginId(clusterId) {\n    return clusterId - this.points.length >> 5;\n  }\n\n  // get zoom of the point from which the cluster originated\n  _getOriginZoom(clusterId) {\n    return (clusterId - this.points.length) % 32;\n  }\n  _map(data, i, clone) {\n    if (data[i + OFFSET_NUM] > 1) {\n      var props = this.clusterProps[data[i + OFFSET_PROP]];\n      return clone ? Object.assign({}, props) : props;\n    }\n    var original = this.points[data[i + OFFSET_ID]].properties;\n    var result = this.options.map(original);\n    return clone && result === original ? Object.assign({}, result) : result;\n  }\n}\nfunction getClusterJSON(data, i, clusterProps) {\n  return {\n    type: 'Feature',\n    id: data[i + OFFSET_ID],\n    properties: getClusterProperties(data, i, clusterProps),\n    geometry: {\n      type: 'Point',\n      coordinates: [xLng(data[i]), yLat(data[i + 1])]\n    }\n  };\n}\nfunction getClusterProperties(data, i, clusterProps) {\n  var count = data[i + OFFSET_NUM];\n  var abbrev = count >= 10000 ? \"\".concat(Math.round(count / 1000), \"k\") : count >= 1000 ? \"\".concat(Math.round(count / 100) / 10, \"k\") : count;\n  var propIndex = data[i + OFFSET_PROP];\n  var properties = propIndex === -1 ? {} : Object.assign({}, clusterProps[propIndex]);\n  return Object.assign(properties, {\n    cluster: true,\n    cluster_id: data[i + OFFSET_ID],\n    point_count: count,\n    point_count_abbreviated: abbrev\n  });\n}\n\n// longitude/latitude to spherical mercator in [0..1] range\nfunction lngX(lng) {\n  return lng / 360 + 0.5;\n}\nfunction latY(lat) {\n  var sin = Math.sin(lat * Math.PI / 180);\n  var y = 0.5 - 0.25 * Math.log((1 + sin) / (1 - sin)) / Math.PI;\n  return y < 0 ? 0 : y > 1 ? 1 : y;\n}\n\n// spherical mercator to longitude/latitude\nfunction xLng(x) {\n  return (x - 0.5) * 360;\n}\nfunction yLat(y) {\n  var y2 = (180 - y * 360) * Math.PI / 180;\n  return 360 * Math.atan(Math.exp(y2)) / Math.PI - 90;\n}\n\n/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\n\nfunction __rest(s, e) {\n  var t = {};\n  for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n  if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n    if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n  }\n  return t;\n}\n\n/**\n * Copyright 2023 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * util class that creates a common set of convenience functions to wrap\n * shared behavior of Advanced Markers and Markers.\n */\nclass MarkerUtils {\n  static isAdvancedMarkerAvailable(map) {\n    return google.maps.marker && map.getMapCapabilities().isAdvancedMarkersAvailable === true;\n  }\n  static isAdvancedMarker(marker) {\n    return google.maps.marker && marker instanceof google.maps.marker.AdvancedMarkerElement;\n  }\n  static setMap(marker, map) {\n    if (this.isAdvancedMarker(marker)) {\n      marker.map = map;\n    } else {\n      marker.setMap(map);\n    }\n  }\n  static getPosition(marker) {\n    // SuperClusterAlgorithm.calculate expects a LatLng instance so we fake it for Adv Markers\n    if (this.isAdvancedMarker(marker)) {\n      if (marker.position) {\n        if (marker.position instanceof google.maps.LatLng) {\n          return marker.position;\n        }\n        // since we can't cast to LatLngLiteral for reasons =(\n        if (marker.position.lat && marker.position.lng) {\n          return new google.maps.LatLng(marker.position.lat, marker.position.lng);\n        }\n      }\n      return new google.maps.LatLng(null);\n    }\n    return marker.getPosition();\n  }\n  static getVisible(marker) {\n    if (this.isAdvancedMarker(marker)) {\n      /**\n       * Always return true for Advanced Markers because the clusterer\n       * uses getVisible as a way to count legacy markers not as an actual\n       * indicator of visibility for some reason. Even when markers are hidden\n       * Marker.getVisible returns `true` and this is used to set the marker count\n       * on the cluster. See the behavior of Cluster.count\n       */\n      return true;\n    }\n    return marker.getVisible();\n  }\n}\n\n/**\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nclass Cluster {\n  constructor(_ref) {\n    var {\n      markers,\n      position\n    } = _ref;\n    this.markers = markers;\n    if (position) {\n      if (position instanceof google.maps.LatLng) {\n        this._position = position;\n      } else {\n        this._position = new google.maps.LatLng(position);\n      }\n    }\n  }\n  get bounds() {\n    if (this.markers.length === 0 && !this._position) {\n      return;\n    }\n    var bounds = new google.maps.LatLngBounds(this._position, this._position);\n    for (var marker of this.markers) {\n      bounds.extend(MarkerUtils.getPosition(marker));\n    }\n    return bounds;\n  }\n  get position() {\n    return this._position || this.bounds.getCenter();\n  }\n  /**\n   * Get the count of **visible** markers.\n   */\n  get count() {\n    return this.markers.filter(m => MarkerUtils.getVisible(m)).length;\n  }\n  /**\n   * Add a marker to the cluster.\n   */\n  push(marker) {\n    this.markers.push(marker);\n  }\n  /**\n   * Cleanup references and remove marker from map.\n   */\n  delete() {\n    if (this.marker) {\n      MarkerUtils.setMap(this.marker, null);\n      this.marker = undefined;\n    }\n    this.markers.length = 0;\n  }\n}\n\n/**\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Returns the markers visible in a padded map viewport\n *\n * @param map\n * @param mapCanvasProjection\n * @param markers The list of marker to filter\n * @param viewportPaddingPixels The padding in pixel\n * @returns The list of markers in the padded viewport\n */\nvar filterMarkersToPaddedViewport = (map, mapCanvasProjection, markers, viewportPaddingPixels) => {\n  var extendedMapBounds = extendBoundsToPaddedViewport(map.getBounds(), mapCanvasProjection, viewportPaddingPixels);\n  return markers.filter(marker => extendedMapBounds.contains(MarkerUtils.getPosition(marker)));\n};\n/**\n * Extends a bounds by a number of pixels in each direction\n */\nvar extendBoundsToPaddedViewport = (bounds, projection, numPixels) => {\n  var {\n    northEast,\n    southWest\n  } = latLngBoundsToPixelBounds(bounds, projection);\n  var extendedPixelBounds = extendPixelBounds({\n    northEast,\n    southWest\n  }, numPixels);\n  return pixelBoundsToLatLngBounds(extendedPixelBounds, projection);\n};\n/**\n * Gets the extended bounds as a bbox [westLng, southLat, eastLng, northLat]\n */\nvar getPaddedViewport = (bounds, projection, pixels) => {\n  var extended = extendBoundsToPaddedViewport(bounds, projection, pixels);\n  var ne = extended.getNorthEast();\n  var sw = extended.getSouthWest();\n  return [sw.lng(), sw.lat(), ne.lng(), ne.lat()];\n};\n/**\n * Returns the distance between 2 positions.\n *\n * @hidden\n */\nvar distanceBetweenPoints = (p1, p2) => {\n  var R = 6371; // Radius of the Earth in km\n  var dLat = (p2.lat - p1.lat) * Math.PI / 180;\n  var dLon = (p2.lng - p1.lng) * Math.PI / 180;\n  var sinDLat = Math.sin(dLat / 2);\n  var sinDLon = Math.sin(dLon / 2);\n  var a = sinDLat * sinDLat + Math.cos(p1.lat * Math.PI / 180) * Math.cos(p2.lat * Math.PI / 180) * sinDLon * sinDLon;\n  var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));\n  return R * c;\n};\n/**\n * Converts a LatLng bound to pixels.\n *\n * @hidden\n */\nvar latLngBoundsToPixelBounds = (bounds, projection) => {\n  return {\n    northEast: projection.fromLatLngToDivPixel(bounds.getNorthEast()),\n    southWest: projection.fromLatLngToDivPixel(bounds.getSouthWest())\n  };\n};\n/**\n * Extends a pixel bounds by numPixels in all directions.\n *\n * @hidden\n */\nvar extendPixelBounds = (_ref2, numPixels) => {\n  var {\n    northEast,\n    southWest\n  } = _ref2;\n  northEast.x += numPixels;\n  northEast.y -= numPixels;\n  southWest.x -= numPixels;\n  southWest.y += numPixels;\n  return {\n    northEast,\n    southWest\n  };\n};\n/**\n * @hidden\n */\nvar pixelBoundsToLatLngBounds = (_ref3, projection) => {\n  var {\n    northEast,\n    southWest\n  } = _ref3;\n  var sw = projection.fromDivPixelToLatLng(southWest);\n  var ne = projection.fromDivPixelToLatLng(northEast);\n  return new google.maps.LatLngBounds(sw, ne);\n};\n\n/**\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * @hidden\n */\nclass AbstractAlgorithm {\n  constructor(_ref4) {\n    var {\n      maxZoom = 16\n    } = _ref4;\n    this.maxZoom = maxZoom;\n  }\n  /**\n   * Helper function to bypass clustering based upon some map state such as\n   * zoom, number of markers, etc.\n   *\n   * ```typescript\n   *  cluster({markers, map}: AlgorithmInput): Cluster[] {\n   *    if (shouldBypassClustering(map)) {\n   *      return this.noop({markers})\n   *    }\n   * }\n   * ```\n   */\n  noop(_ref5) {\n    var {\n      markers\n    } = _ref5;\n    return noop$1(markers);\n  }\n}\n/**\n * Abstract viewport algorithm proves a class to filter markers by a padded\n * viewport. This is a common optimization.\n *\n * @hidden\n */\nclass AbstractViewportAlgorithm extends AbstractAlgorithm {\n  constructor(_a) {\n    var {\n        viewportPadding = 60\n      } = _a,\n      options = __rest(_a, [\"viewportPadding\"]);\n    super(options);\n    this.viewportPadding = 60;\n    this.viewportPadding = viewportPadding;\n  }\n  calculate(_ref6) {\n    var {\n      markers,\n      map,\n      mapCanvasProjection\n    } = _ref6;\n    if (map.getZoom() >= this.maxZoom) {\n      return {\n        clusters: this.noop({\n          markers\n        }),\n        changed: false\n      };\n    }\n    return {\n      clusters: this.cluster({\n        markers: filterMarkersToPaddedViewport(map, mapCanvasProjection, markers, this.viewportPadding),\n        map,\n        mapCanvasProjection\n      })\n    };\n  }\n}\n/**\n * @hidden\n */\nvar noop$1 = markers => {\n  var clusters = markers.map(marker => new Cluster({\n    position: MarkerUtils.getPosition(marker),\n    markers: [marker]\n  }));\n  return clusters;\n};\n\n/**\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * The default Grid algorithm historically used in Google Maps marker\n * clustering.\n *\n * The Grid algorithm does not implement caching and markers may flash as the\n * viewport changes. Instead use {@link SuperClusterAlgorithm}.\n */\nclass GridAlgorithm extends AbstractViewportAlgorithm {\n  constructor(_a) {\n    var {\n        maxDistance = 40000,\n        gridSize = 40\n      } = _a,\n      options = __rest(_a, [\"maxDistance\", \"gridSize\"]);\n    super(options);\n    this.clusters = [];\n    this.state = {\n      zoom: -1\n    };\n    this.maxDistance = maxDistance;\n    this.gridSize = gridSize;\n  }\n  calculate(_ref7) {\n    var {\n      markers,\n      map,\n      mapCanvasProjection\n    } = _ref7;\n    var state = {\n      zoom: map.getZoom()\n    };\n    var changed = false;\n    if (this.state.zoom >= this.maxZoom && state.zoom >= this.maxZoom) ;else {\n      changed = !equal(this.state, state);\n    }\n    this.state = state;\n    if (map.getZoom() >= this.maxZoom) {\n      return {\n        clusters: this.noop({\n          markers\n        }),\n        changed\n      };\n    }\n    return {\n      clusters: this.cluster({\n        markers: filterMarkersToPaddedViewport(map, mapCanvasProjection, markers, this.viewportPadding),\n        map,\n        mapCanvasProjection\n      })\n    };\n  }\n  cluster(_ref8) {\n    var {\n      markers,\n      map,\n      mapCanvasProjection\n    } = _ref8;\n    this.clusters = [];\n    markers.forEach(marker => {\n      this.addToClosestCluster(marker, map, mapCanvasProjection);\n    });\n    return this.clusters;\n  }\n  addToClosestCluster(marker, map, projection) {\n    var maxDistance = this.maxDistance; // Some large number\n    var cluster = null;\n    for (var i = 0; i < this.clusters.length; i++) {\n      var candidate = this.clusters[i];\n      var distance = distanceBetweenPoints(candidate.bounds.getCenter().toJSON(), MarkerUtils.getPosition(marker).toJSON());\n      if (distance < maxDistance) {\n        maxDistance = distance;\n        cluster = candidate;\n      }\n    }\n    if (cluster && extendBoundsToPaddedViewport(cluster.bounds, projection, this.gridSize).contains(MarkerUtils.getPosition(marker))) {\n      cluster.push(marker);\n    } else {\n      var _cluster = new Cluster({\n        markers: [marker]\n      });\n      this.clusters.push(_cluster);\n    }\n  }\n}\n\n/**\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Noop algorithm does not generate any clusters or filter markers by the an extended viewport.\n */\nclass NoopAlgorithm extends AbstractAlgorithm {\n  constructor(_a) {\n    var options = __rest(_a, []);\n    super(options);\n  }\n  calculate(_ref9) {\n    var {\n      markers,\n      map,\n      mapCanvasProjection\n    } = _ref9;\n    return {\n      clusters: this.cluster({\n        markers,\n        map,\n        mapCanvasProjection\n      }),\n      changed: false\n    };\n  }\n  cluster(input) {\n    return this.noop(input);\n  }\n}\n\n/**\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * A very fast JavaScript algorithm for geospatial point clustering using KD trees.\n *\n * @see https://www.npmjs.com/package/supercluster for more information on options.\n */\nclass SuperClusterAlgorithm extends AbstractAlgorithm {\n  constructor(_a) {\n    var {\n        maxZoom,\n        radius = 60\n      } = _a,\n      options = __rest(_a, [\"maxZoom\", \"radius\"]);\n    super({\n      maxZoom\n    });\n    this.state = {\n      zoom: -1\n    };\n    this.superCluster = new Supercluster(Object.assign({\n      maxZoom: this.maxZoom,\n      radius\n    }, options));\n  }\n  calculate(input) {\n    var changed = false;\n    var state = {\n      zoom: input.map.getZoom()\n    };\n    if (!equal(input.markers, this.markers)) {\n      changed = true;\n      // TODO use proxy to avoid copy?\n      this.markers = [...input.markers];\n      var points = this.markers.map(marker => {\n        var position = MarkerUtils.getPosition(marker);\n        var coordinates = [position.lng(), position.lat()];\n        return {\n          type: \"Feature\",\n          geometry: {\n            type: \"Point\",\n            coordinates\n          },\n          properties: {\n            marker\n          }\n        };\n      });\n      this.superCluster.load(points);\n    }\n    if (!changed) {\n      if (this.state.zoom <= this.maxZoom || state.zoom <= this.maxZoom) {\n        changed = !equal(this.state, state);\n      }\n    }\n    this.state = state;\n    if (changed) {\n      this.clusters = this.cluster(input);\n    }\n    return {\n      clusters: this.clusters,\n      changed\n    };\n  }\n  cluster(_ref10) {\n    var {\n      map\n    } = _ref10;\n    return this.superCluster.getClusters([-180, -90, 180, 90], Math.round(map.getZoom())).map(feature => this.transformCluster(feature));\n  }\n  transformCluster(_ref11) {\n    var {\n      geometry: {\n        coordinates: [lng, lat]\n      },\n      properties\n    } = _ref11;\n    if (properties.cluster) {\n      return new Cluster({\n        markers: this.superCluster.getLeaves(properties.cluster_id, Infinity).map(leaf => leaf.properties.marker),\n        position: {\n          lat,\n          lng\n        }\n      });\n    }\n    var marker = properties.marker;\n    return new Cluster({\n      markers: [marker],\n      position: MarkerUtils.getPosition(marker)\n    });\n  }\n}\n\n/**\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * A very fast JavaScript algorithm for geospatial point clustering using KD trees.\n *\n * @see https://www.npmjs.com/package/supercluster for more information on options.\n */\nclass SuperClusterViewportAlgorithm extends AbstractViewportAlgorithm {\n  constructor(_a) {\n    var {\n        maxZoom,\n        radius = 60,\n        viewportPadding = 60\n      } = _a,\n      options = __rest(_a, [\"maxZoom\", \"radius\", \"viewportPadding\"]);\n    super({\n      maxZoom,\n      viewportPadding\n    });\n    this.superCluster = new Supercluster(Object.assign({\n      maxZoom: this.maxZoom,\n      radius\n    }, options));\n    this.state = {\n      zoom: -1,\n      view: [0, 0, 0, 0]\n    };\n  }\n  calculate(input) {\n    var state = {\n      zoom: Math.round(input.map.getZoom()),\n      view: getPaddedViewport(input.map.getBounds(), input.mapCanvasProjection, this.viewportPadding)\n    };\n    var changed = !equal(this.state, state);\n    if (!equal(input.markers, this.markers)) {\n      changed = true;\n      // TODO use proxy to avoid copy?\n      this.markers = [...input.markers];\n      var points = this.markers.map(marker => {\n        var position = MarkerUtils.getPosition(marker);\n        var coordinates = [position.lng(), position.lat()];\n        return {\n          type: \"Feature\",\n          geometry: {\n            type: \"Point\",\n            coordinates\n          },\n          properties: {\n            marker\n          }\n        };\n      });\n      this.superCluster.load(points);\n    }\n    if (changed) {\n      this.clusters = this.cluster(input);\n      this.state = state;\n    }\n    return {\n      clusters: this.clusters,\n      changed\n    };\n  }\n  cluster(_ref12) {\n    var {\n      map,\n      mapCanvasProjection\n    } = _ref12;\n    /* recalculate new state because we can't use the cached version. */\n    var state = {\n      zoom: Math.round(map.getZoom()),\n      view: getPaddedViewport(map.getBounds(), mapCanvasProjection, this.viewportPadding)\n    };\n    return this.superCluster.getClusters(state.view, state.zoom).map(feature => this.transformCluster(feature));\n  }\n  transformCluster(_ref13) {\n    var {\n      geometry: {\n        coordinates: [lng, lat]\n      },\n      properties\n    } = _ref13;\n    if (properties.cluster) {\n      return new Cluster({\n        markers: this.superCluster.getLeaves(properties.cluster_id, Infinity).map(leaf => leaf.properties.marker),\n        position: {\n          lat,\n          lng\n        }\n      });\n    }\n    var marker = properties.marker;\n    return new Cluster({\n      markers: [marker],\n      position: MarkerUtils.getPosition(marker)\n    });\n  }\n}\n\n/**\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Provides statistics on all clusters in the current render cycle for use in {@link Renderer.render}.\n */\nclass ClusterStats {\n  constructor(markers, clusters) {\n    this.markers = {\n      sum: markers.length\n    };\n    var clusterMarkerCounts = clusters.map(a => a.count);\n    var clusterMarkerSum = clusterMarkerCounts.reduce((a, b) => a + b, 0);\n    this.clusters = {\n      count: clusters.length,\n      markers: {\n        mean: clusterMarkerSum / clusters.length,\n        sum: clusterMarkerSum,\n        min: Math.min(...clusterMarkerCounts),\n        max: Math.max(...clusterMarkerCounts)\n      }\n    };\n  }\n}\nclass DefaultRenderer {\n  /**\n   * The default render function for the library used by {@link MarkerClusterer}.\n   *\n   * Currently set to use the following:\n   *\n   * ```typescript\n   * // change color if this cluster has more markers than the mean cluster\n   * const color =\n   *   count > Math.max(10, stats.clusters.markers.mean)\n   *     ? \"#ff0000\"\n   *     : \"#0000ff\";\n   *\n   * // create svg url with fill color\n   * const svg = window.btoa(`\n   * <svg fill=\"${color}\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 240 240\">\n   *   <circle cx=\"120\" cy=\"120\" opacity=\".6\" r=\"70\" />\n   *   <circle cx=\"120\" cy=\"120\" opacity=\".3\" r=\"90\" />\n   *   <circle cx=\"120\" cy=\"120\" opacity=\".2\" r=\"110\" />\n   *   <circle cx=\"120\" cy=\"120\" opacity=\".1\" r=\"130\" />\n   * </svg>`);\n   *\n   * // create marker using svg icon\n   * return new google.maps.Marker({\n   *   position,\n   *   icon: {\n   *     url: `data:image/svg+xml;base64,${svg}`,\n   *     scaledSize: new google.maps.Size(45, 45),\n   *   },\n   *   label: {\n   *     text: String(count),\n   *     color: \"rgba(255,255,255,0.9)\",\n   *     fontSize: \"12px\",\n   *   },\n   *   // adjust zIndex to be above other markers\n   *   zIndex: 1000 + count,\n   * });\n   * ```\n   */\n  render(_ref14, stats, map) {\n    var {\n      count,\n      position\n    } = _ref14;\n    // change color if this cluster has more markers than the mean cluster\n    var color = count > Math.max(10, stats.clusters.markers.mean) ? \"#ff0000\" : \"#0000ff\";\n    // create svg literal with fill color\n    var svg = \"<svg fill=\\\"\".concat(color, \"\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 240 240\\\" width=\\\"50\\\" height=\\\"50\\\">\\n<circle cx=\\\"120\\\" cy=\\\"120\\\" opacity=\\\".6\\\" r=\\\"70\\\" />\\n<circle cx=\\\"120\\\" cy=\\\"120\\\" opacity=\\\".3\\\" r=\\\"90\\\" />\\n<circle cx=\\\"120\\\" cy=\\\"120\\\" opacity=\\\".2\\\" r=\\\"110\\\" />\\n<text x=\\\"50%\\\" y=\\\"50%\\\" style=\\\"fill:#fff\\\" text-anchor=\\\"middle\\\" font-size=\\\"50\\\" dominant-baseline=\\\"middle\\\" font-family=\\\"roboto,arial,sans-serif\\\">\").concat(count, \"</text>\\n</svg>\");\n    var title = \"Cluster of \".concat(count, \" markers\"),\n      // adjust zIndex to be above other markers\n      zIndex = Number(google.maps.Marker.MAX_ZINDEX) + count;\n    if (MarkerUtils.isAdvancedMarkerAvailable(map)) {\n      // create cluster SVG element\n      var parser = new DOMParser();\n      var svgEl = parser.parseFromString(svg, \"image/svg+xml\").documentElement;\n      svgEl.setAttribute(\"transform\", \"translate(0 25)\");\n      var _clusterOptions = {\n        map,\n        position,\n        zIndex,\n        title,\n        content: svgEl\n      };\n      return new google.maps.marker.AdvancedMarkerElement(_clusterOptions);\n    }\n    var clusterOptions = {\n      position,\n      zIndex,\n      title,\n      icon: {\n        url: \"data:image/svg+xml;base64,\".concat(btoa(svg)),\n        anchor: new google.maps.Point(25, 25)\n      }\n    };\n    return new google.maps.Marker(clusterOptions);\n  }\n}\n\n/**\n * Copyright 2019 Google LLC. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Extends an object's prototype by another's.\n *\n * @param type1 The Type to be extended.\n * @param type2 The Type to extend with.\n * @ignore\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction extend(type1, type2) {\n  /* istanbul ignore next */\n  // eslint-disable-next-line prefer-const\n  for (var property in type2.prototype) {\n    type1.prototype[property] = type2.prototype[property];\n  }\n}\n/**\n * @ignore\n */\nclass OverlayViewSafe {\n  constructor() {\n    // MarkerClusterer implements google.maps.OverlayView interface. We use the\n    // extend function to extend MarkerClusterer with google.maps.OverlayView\n    // because it might not always be available when the code is defined so we\n    // look for it at the last possible moment. If it doesn't exist now then\n    // there is no point going ahead :)\n    extend(OverlayViewSafe, google.maps.OverlayView);\n  }\n}\n\n/**\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nvar MarkerClustererEvents;\n(function (MarkerClustererEvents) {\n  MarkerClustererEvents[\"CLUSTERING_BEGIN\"] = \"clusteringbegin\";\n  MarkerClustererEvents[\"CLUSTERING_END\"] = \"clusteringend\";\n  MarkerClustererEvents[\"CLUSTER_CLICK\"] = \"click\";\n})(MarkerClustererEvents || (MarkerClustererEvents = {}));\nvar defaultOnClusterClickHandler = (_, cluster, map) => {\n  map.fitBounds(cluster.bounds);\n};\n/**\n * MarkerClusterer creates and manages per-zoom-level clusters for large amounts\n * of markers. See {@link MarkerClustererOptions} for more details.\n *\n */\nclass MarkerClusterer extends OverlayViewSafe {\n  constructor(_ref15) {\n    var {\n      map,\n      markers = [],\n      algorithmOptions = {},\n      algorithm = new SuperClusterAlgorithm(algorithmOptions),\n      renderer = new DefaultRenderer(),\n      onClusterClick = defaultOnClusterClickHandler\n    } = _ref15;\n    super();\n    this.markers = [...markers];\n    this.clusters = [];\n    this.algorithm = algorithm;\n    this.renderer = renderer;\n    this.onClusterClick = onClusterClick;\n    if (map) {\n      this.setMap(map);\n    }\n  }\n  addMarker(marker, noDraw) {\n    if (this.markers.includes(marker)) {\n      return;\n    }\n    this.markers.push(marker);\n    if (!noDraw) {\n      this.render();\n    }\n  }\n  addMarkers(markers, noDraw) {\n    markers.forEach(marker => {\n      this.addMarker(marker, true);\n    });\n    if (!noDraw) {\n      this.render();\n    }\n  }\n  removeMarker(marker, noDraw) {\n    var index = this.markers.indexOf(marker);\n    if (index === -1) {\n      // Marker is not in our list of markers, so do nothing:\n      return false;\n    }\n    MarkerUtils.setMap(marker, null);\n    this.markers.splice(index, 1); // Remove the marker from the list of managed markers\n    if (!noDraw) {\n      this.render();\n    }\n    return true;\n  }\n  removeMarkers(markers, noDraw) {\n    var removed = false;\n    markers.forEach(marker => {\n      removed = this.removeMarker(marker, true) || removed;\n    });\n    if (removed && !noDraw) {\n      this.render();\n    }\n    return removed;\n  }\n  clearMarkers(noDraw) {\n    this.markers.length = 0;\n    if (!noDraw) {\n      this.render();\n    }\n  }\n  /**\n   * Recalculates and draws all the marker clusters.\n   */\n  render() {\n    var map = this.getMap();\n    if (map instanceof google.maps.Map && map.getProjection()) {\n      google.maps.event.trigger(this, MarkerClustererEvents.CLUSTERING_BEGIN, this);\n      var {\n        clusters,\n        changed\n      } = this.algorithm.calculate({\n        markers: this.markers,\n        map,\n        mapCanvasProjection: this.getProjection()\n      });\n      // Allow algorithms to return flag on whether the clusters/markers have changed.\n      if (changed || changed == undefined) {\n        // Accumulate the markers of the clusters composed of a single marker.\n        // Those clusters directly use the marker.\n        // Clusters with more than one markers use a group marker generated by a renderer.\n        var singleMarker = new Set();\n        for (var cluster of clusters) {\n          if (cluster.markers.length == 1) {\n            singleMarker.add(cluster.markers[0]);\n          }\n        }\n        var groupMarkers = [];\n        // Iterate the clusters that are currently rendered.\n        for (var _cluster2 of this.clusters) {\n          if (_cluster2.marker == null) {\n            continue;\n          }\n          if (_cluster2.markers.length == 1) {\n            if (!singleMarker.has(_cluster2.marker)) {\n              // The marker:\n              // - was previously rendered because it is from a cluster with 1 marker,\n              // - should no more be rendered as it is not in singleMarker.\n              MarkerUtils.setMap(_cluster2.marker, null);\n            }\n          } else {\n            // Delay the removal of old group markers to avoid flickering.\n            groupMarkers.push(_cluster2.marker);\n          }\n        }\n        this.clusters = clusters;\n        this.renderClusters();\n        // Delayed removal of the markers of the former groups.\n        requestAnimationFrame(() => groupMarkers.forEach(marker => MarkerUtils.setMap(marker, null)));\n      }\n      google.maps.event.trigger(this, MarkerClustererEvents.CLUSTERING_END, this);\n    }\n  }\n  onAdd() {\n    this.idleListener = this.getMap().addListener(\"idle\", this.render.bind(this));\n    this.render();\n  }\n  onRemove() {\n    google.maps.event.removeListener(this.idleListener);\n    this.reset();\n  }\n  reset() {\n    this.markers.forEach(marker => MarkerUtils.setMap(marker, null));\n    this.clusters.forEach(cluster => cluster.delete());\n    this.clusters = [];\n  }\n  renderClusters() {\n    // Generate stats to pass to renderers.\n    var stats = new ClusterStats(this.markers, this.clusters);\n    var map = this.getMap();\n    this.clusters.forEach(cluster => {\n      if (cluster.markers.length === 1) {\n        cluster.marker = cluster.markers[0];\n      } else {\n        // Generate the marker to represent the group.\n        cluster.marker = this.renderer.render(cluster, stats, map);\n        // Make sure all individual markers are removed from the map.\n        cluster.markers.forEach(marker => MarkerUtils.setMap(marker, null));\n        if (this.onClusterClick) {\n          cluster.marker.addListener(\"click\", /* istanbul ignore next */\n          event => {\n            google.maps.event.trigger(this, MarkerClustererEvents.CLUSTER_CLICK, cluster);\n            this.onClusterClick(event, cluster, map);\n          });\n        }\n      }\n      MarkerUtils.setMap(cluster.marker, map);\n    });\n  }\n}\n\nvar index_esm = /*#__PURE__*/Object.freeze({\n  __proto__: null,\n  AbstractAlgorithm: AbstractAlgorithm,\n  AbstractViewportAlgorithm: AbstractViewportAlgorithm,\n  Cluster: Cluster,\n  ClusterStats: ClusterStats,\n  DefaultRenderer: DefaultRenderer,\n  GridAlgorithm: GridAlgorithm,\n  MarkerClusterer: MarkerClusterer,\n  get MarkerClustererEvents () { return MarkerClustererEvents; },\n  MarkerUtils: MarkerUtils,\n  NoopAlgorithm: NoopAlgorithm,\n  SuperClusterAlgorithm: SuperClusterAlgorithm,\n  SuperClusterViewportAlgorithm: SuperClusterViewportAlgorithm,\n  defaultOnClusterClickHandler: defaultOnClusterClickHandler,\n  distanceBetweenPoints: distanceBetweenPoints,\n  extendBoundsToPaddedViewport: extendBoundsToPaddedViewport,\n  extendPixelBounds: extendPixelBounds,\n  filterMarkersToPaddedViewport: filterMarkersToPaddedViewport,\n  getPaddedViewport: getPaddedViewport,\n  noop: noop$1,\n  pixelBoundsToLatLngBounds: pixelBoundsToLatLngBounds\n});\n\nfunction ownKeys$a(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread$a(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$a(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$a(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction useGoogleMarkerClusterer(options) {\n  var map = useGoogleMap();\n  var [markerClusterer, setMarkerClusterer] = useState(null);\n  useEffect(() => {\n    if (map && markerClusterer === null) {\n      var markerCluster = new MarkerClusterer(_objectSpread$a(_objectSpread$a({}, options), {}, {\n        map\n      }));\n      setMarkerClusterer(markerCluster);\n    }\n  }, [map]);\n  return markerClusterer;\n}\n/** Wrapper around [@googlemaps/markerclusterer](https://github.com/googlemaps/js-markerclusterer)\n *\n * Accepts {@link  MarkerClustererOptionsSubset} which is a subset of  {@link MarkerClustererOptions}\n */\nfunction GoogleMarkerClusterer(_ref) {\n  var {\n    children,\n    options\n  } = _ref;\n  var markerClusterer = useGoogleMarkerClusterer(options);\n  return markerClusterer !== null ? children(markerClusterer) : null;\n}\nvar GoogleMarkerClusterer$1 = memo(GoogleMarkerClusterer);\n\nvar eventMap$c = {\n  onCloseClick: 'closeclick',\n  onContentChanged: 'content_changed',\n  onDomReady: 'domready',\n  onPositionChanged: 'position_changed',\n  onZindexChanged: 'zindex_changed'\n};\nvar updaterMap$c = {\n  options(instance, options) {\n    instance.setOptions(options);\n  },\n  position(instance, position) {\n    instance.setPosition(position);\n  },\n  zIndex(instance, zIndex) {\n    instance.setZIndex(zIndex);\n  }\n};\nfunction InfoWindowFunctional(_ref) {\n  var {\n    children,\n    anchor,\n    options,\n    position,\n    zIndex,\n    onCloseClick,\n    onDomReady,\n    onContentChanged,\n    onPositionChanged,\n    onZindexChanged,\n    onLoad,\n    onUnmount\n  } = _ref;\n  var map = useContext(MapContext);\n  var [instance, setInstance] = useState(null);\n  var [closeclickListener, setCloseClickListener] = useState(null);\n  var [domreadyclickListener, setDomReadyClickListener] = useState(null);\n  var [contentchangedclickListener, setContentChangedClickListener] = useState(null);\n  var [positionchangedclickListener, setPositionChangedClickListener] = useState(null);\n  var [zindexchangedclickListener, setZindexChangedClickListener] = useState(null);\n  var containerElementRef = useRef(null);\n  // Order does matter\n  useEffect(() => {\n    if (instance !== null) {\n      instance.close();\n      if (anchor) {\n        instance.open(map, anchor);\n      } else if (instance.getPosition()) {\n        instance.open(map);\n      }\n    }\n  }, [map, instance, anchor]);\n  useEffect(() => {\n    if (options && instance !== null) {\n      instance.setOptions(options);\n    }\n  }, [instance, options]);\n  useEffect(() => {\n    if (position && instance !== null) {\n      instance.setPosition(position);\n    }\n  }, [position]);\n  useEffect(() => {\n    if (typeof zIndex === 'number' && instance !== null) {\n      instance.setZIndex(zIndex);\n    }\n  }, [zIndex]);\n  useEffect(() => {\n    if (instance && onCloseClick) {\n      if (closeclickListener !== null) {\n        google.maps.event.removeListener(closeclickListener);\n      }\n      setCloseClickListener(google.maps.event.addListener(instance, 'closeclick', onCloseClick));\n    }\n  }, [onCloseClick]);\n  useEffect(() => {\n    if (instance && onDomReady) {\n      if (domreadyclickListener !== null) {\n        google.maps.event.removeListener(domreadyclickListener);\n      }\n      setDomReadyClickListener(google.maps.event.addListener(instance, 'domready', onDomReady));\n    }\n  }, [onDomReady]);\n  useEffect(() => {\n    if (instance && onContentChanged) {\n      if (contentchangedclickListener !== null) {\n        google.maps.event.removeListener(contentchangedclickListener);\n      }\n      setContentChangedClickListener(google.maps.event.addListener(instance, 'content_changed', onContentChanged));\n    }\n  }, [onContentChanged]);\n  useEffect(() => {\n    if (instance && onPositionChanged) {\n      if (positionchangedclickListener !== null) {\n        google.maps.event.removeListener(positionchangedclickListener);\n      }\n      setPositionChangedClickListener(google.maps.event.addListener(instance, 'position_changed', onPositionChanged));\n    }\n  }, [onPositionChanged]);\n  useEffect(() => {\n    if (instance && onZindexChanged) {\n      if (zindexchangedclickListener !== null) {\n        google.maps.event.removeListener(zindexchangedclickListener);\n      }\n      setZindexChangedClickListener(google.maps.event.addListener(instance, 'zindex_changed', onZindexChanged));\n    }\n  }, [onZindexChanged]);\n  useEffect(() => {\n    var infoWindow = new google.maps.InfoWindow(options);\n    setInstance(infoWindow);\n    containerElementRef.current = document.createElement('div');\n    if (onCloseClick) {\n      setCloseClickListener(google.maps.event.addListener(infoWindow, 'closeclick', onCloseClick));\n    }\n    if (onDomReady) {\n      setDomReadyClickListener(google.maps.event.addListener(infoWindow, 'domready', onDomReady));\n    }\n    if (onContentChanged) {\n      setContentChangedClickListener(google.maps.event.addListener(infoWindow, 'content_changed', onContentChanged));\n    }\n    if (onPositionChanged) {\n      setPositionChangedClickListener(google.maps.event.addListener(infoWindow, 'position_changed', onPositionChanged));\n    }\n    if (onZindexChanged) {\n      setZindexChangedClickListener(google.maps.event.addListener(infoWindow, 'zindex_changed', onZindexChanged));\n    }\n    infoWindow.setContent(containerElementRef.current);\n    if (position) {\n      infoWindow.setPosition(position);\n    }\n    if (zIndex) {\n      infoWindow.setZIndex(zIndex);\n    }\n    if (anchor) {\n      infoWindow.open(map, anchor);\n    } else if (infoWindow.getPosition()) {\n      infoWindow.open(map);\n    } else {\n      invariant(false, \"You must provide either an anchor (typically render it inside a <Marker>) or a position props for <InfoWindow>.\");\n    }\n    if (onLoad) {\n      onLoad(infoWindow);\n    }\n    return () => {\n      if (closeclickListener) {\n        google.maps.event.removeListener(closeclickListener);\n      }\n      if (contentchangedclickListener) {\n        google.maps.event.removeListener(contentchangedclickListener);\n      }\n      if (domreadyclickListener) {\n        google.maps.event.removeListener(domreadyclickListener);\n      }\n      if (positionchangedclickListener) {\n        google.maps.event.removeListener(positionchangedclickListener);\n      }\n      if (zindexchangedclickListener) {\n        google.maps.event.removeListener(zindexchangedclickListener);\n      }\n      if (onUnmount) {\n        onUnmount(infoWindow);\n      }\n      infoWindow.close();\n    };\n  }, []);\n  return containerElementRef.current ? createPortal(Children.only(children), containerElementRef.current) : null;\n}\nvar InfoWindowF = memo(InfoWindowFunctional);\nclass InfoWindow extends PureComponent {\n  constructor() {\n    super(...arguments);\n    _defineProperty(this, \"registeredEvents\", []);\n    _defineProperty(this, \"containerElement\", null);\n    _defineProperty(this, \"state\", {\n      infoWindow: null\n    });\n    _defineProperty(this, \"open\", (infoWindow, anchor) => {\n      if (anchor) {\n        infoWindow.open(this.context, anchor);\n      } else if (infoWindow.getPosition()) {\n        infoWindow.open(this.context);\n      } else {\n        invariant(false, \"You must provide either an anchor (typically render it inside a <Marker>) or a position props for <InfoWindow>.\");\n      }\n    });\n    _defineProperty(this, \"setInfoWindowCallback\", () => {\n      if (this.state.infoWindow !== null && this.containerElement !== null) {\n        this.state.infoWindow.setContent(this.containerElement);\n        this.open(this.state.infoWindow, this.props.anchor);\n        if (this.props.onLoad) {\n          this.props.onLoad(this.state.infoWindow);\n        }\n      }\n    });\n  }\n  componentDidMount() {\n    var infoWindow = new google.maps.InfoWindow(this.props.options);\n    this.containerElement = document.createElement('div');\n    this.registeredEvents = applyUpdatersToPropsAndRegisterEvents({\n      updaterMap: updaterMap$c,\n      eventMap: eventMap$c,\n      prevProps: {},\n      nextProps: this.props,\n      instance: infoWindow\n    });\n    this.setState(() => {\n      return {\n        infoWindow\n      };\n    }, this.setInfoWindowCallback);\n  }\n  componentDidUpdate(prevProps) {\n    if (this.state.infoWindow !== null) {\n      unregisterEvents(this.registeredEvents);\n      this.registeredEvents = applyUpdatersToPropsAndRegisterEvents({\n        updaterMap: updaterMap$c,\n        eventMap: eventMap$c,\n        prevProps,\n        nextProps: this.props,\n        instance: this.state.infoWindow\n      });\n    }\n  }\n  componentWillUnmount() {\n    if (this.state.infoWindow !== null) {\n      unregisterEvents(this.registeredEvents);\n      if (this.props.onUnmount) {\n        this.props.onUnmount(this.state.infoWindow);\n      }\n      this.state.infoWindow.close();\n    }\n  }\n  render() {\n    return this.containerElement ? createPortal(Children.only(this.props.children), this.containerElement) : null;\n  }\n}\n_defineProperty(InfoWindow, \"contextType\", MapContext);\n\nfunction ownKeys$9(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread$9(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$9(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$9(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nvar eventMap$b = {\n  onClick: 'click',\n  onDblClick: 'dblclick',\n  onDrag: 'drag',\n  onDragEnd: 'dragend',\n  onDragStart: 'dragstart',\n  onMouseDown: 'mousedown',\n  onMouseMove: 'mousemove',\n  onMouseOut: 'mouseout',\n  onMouseOver: 'mouseover',\n  onMouseUp: 'mouseup',\n  onRightClick: 'rightclick'\n};\nvar updaterMap$b = {\n  draggable(instance, draggable) {\n    instance.setDraggable(draggable);\n  },\n  editable(instance, editable) {\n    instance.setEditable(editable);\n  },\n  map(instance, map) {\n    instance.setMap(map);\n  },\n  options(instance, options) {\n    instance.setOptions(options);\n  },\n  path(instance, path) {\n    instance.setPath(path);\n  },\n  visible(instance, visible) {\n    instance.setVisible(visible);\n  }\n};\nvar defaultOptions$1 = {};\nfunction PolylineFunctional(_ref) {\n  var {\n    options,\n    draggable,\n    editable,\n    visible,\n    path,\n    onDblClick,\n    onDragEnd,\n    onDragStart,\n    onMouseDown,\n    onMouseMove,\n    onMouseOut,\n    onMouseOver,\n    onMouseUp,\n    onRightClick,\n    onClick,\n    onDrag,\n    onLoad,\n    onUnmount\n  } = _ref;\n  var map = useContext(MapContext);\n  var [instance, setInstance] = useState(null);\n  var [dblclickListener, setDblclickListener] = useState(null);\n  var [dragendListener, setDragendListener] = useState(null);\n  var [dragstartListener, setDragstartListener] = useState(null);\n  var [mousedownListener, setMousedownListener] = useState(null);\n  var [mousemoveListener, setMousemoveListener] = useState(null);\n  var [mouseoutListener, setMouseoutListener] = useState(null);\n  var [mouseoverListener, setMouseoverListener] = useState(null);\n  var [mouseupListener, setMouseupListener] = useState(null);\n  var [rightclickListener, setRightclickListener] = useState(null);\n  var [clickListener, setClickListener] = useState(null);\n  var [dragListener, setDragListener] = useState(null);\n  // Order does matter\n  useEffect(() => {\n    if (instance !== null) {\n      instance.setMap(map);\n    }\n  }, [map]);\n  useEffect(() => {\n    if (typeof options !== 'undefined' && instance !== null) {\n      instance.setOptions(options);\n    }\n  }, [instance, options]);\n  useEffect(() => {\n    if (typeof draggable !== 'undefined' && instance !== null) {\n      instance.setDraggable(draggable);\n    }\n  }, [instance, draggable]);\n  useEffect(() => {\n    if (typeof editable !== 'undefined' && instance !== null) {\n      instance.setEditable(editable);\n    }\n  }, [instance, editable]);\n  useEffect(() => {\n    if (typeof visible !== 'undefined' && instance !== null) {\n      instance.setVisible(visible);\n    }\n  }, [instance, visible]);\n  useEffect(() => {\n    if (typeof path !== 'undefined' && instance !== null) {\n      instance.setPath(path);\n    }\n  }, [instance, path]);\n  useEffect(() => {\n    if (instance && onDblClick) {\n      if (dblclickListener !== null) {\n        google.maps.event.removeListener(dblclickListener);\n      }\n      setDblclickListener(google.maps.event.addListener(instance, 'dblclick', onDblClick));\n    }\n  }, [onDblClick]);\n  useEffect(() => {\n    if (instance && onDragEnd) {\n      if (dragendListener !== null) {\n        google.maps.event.removeListener(dragendListener);\n      }\n      setDragendListener(google.maps.event.addListener(instance, 'dragend', onDragEnd));\n    }\n  }, [onDragEnd]);\n  useEffect(() => {\n    if (instance && onDragStart) {\n      if (dragstartListener !== null) {\n        google.maps.event.removeListener(dragstartListener);\n      }\n      setDragstartListener(google.maps.event.addListener(instance, 'dragstart', onDragStart));\n    }\n  }, [onDragStart]);\n  useEffect(() => {\n    if (instance && onMouseDown) {\n      if (mousedownListener !== null) {\n        google.maps.event.removeListener(mousedownListener);\n      }\n      setMousedownListener(google.maps.event.addListener(instance, 'mousedown', onMouseDown));\n    }\n  }, [onMouseDown]);\n  useEffect(() => {\n    if (instance && onMouseMove) {\n      if (mousemoveListener !== null) {\n        google.maps.event.removeListener(mousemoveListener);\n      }\n      setMousemoveListener(google.maps.event.addListener(instance, 'mousemove', onMouseMove));\n    }\n  }, [onMouseMove]);\n  useEffect(() => {\n    if (instance && onMouseOut) {\n      if (mouseoutListener !== null) {\n        google.maps.event.removeListener(mouseoutListener);\n      }\n      setMouseoutListener(google.maps.event.addListener(instance, 'mouseout', onMouseOut));\n    }\n  }, [onMouseOut]);\n  useEffect(() => {\n    if (instance && onMouseOver) {\n      if (mouseoverListener !== null) {\n        google.maps.event.removeListener(mouseoverListener);\n      }\n      setMouseoverListener(google.maps.event.addListener(instance, 'mouseover', onMouseOver));\n    }\n  }, [onMouseOver]);\n  useEffect(() => {\n    if (instance && onMouseUp) {\n      if (mouseupListener !== null) {\n        google.maps.event.removeListener(mouseupListener);\n      }\n      setMouseupListener(google.maps.event.addListener(instance, 'mouseup', onMouseUp));\n    }\n  }, [onMouseUp]);\n  useEffect(() => {\n    if (instance && onRightClick) {\n      if (rightclickListener !== null) {\n        google.maps.event.removeListener(rightclickListener);\n      }\n      setRightclickListener(google.maps.event.addListener(instance, 'rightclick', onRightClick));\n    }\n  }, [onRightClick]);\n  useEffect(() => {\n    if (instance && onClick) {\n      if (clickListener !== null) {\n        google.maps.event.removeListener(clickListener);\n      }\n      setClickListener(google.maps.event.addListener(instance, 'click', onClick));\n    }\n  }, [onClick]);\n  useEffect(() => {\n    if (instance && onDrag) {\n      if (dragListener !== null) {\n        google.maps.event.removeListener(dragListener);\n      }\n      setDragListener(google.maps.event.addListener(instance, 'drag', onDrag));\n    }\n  }, [onDrag]);\n  useEffect(() => {\n    var polyline = new google.maps.Polyline(_objectSpread$9(_objectSpread$9({}, options || defaultOptions$1), {}, {\n      map\n    }));\n    if (path) {\n      polyline.setPath(path);\n    }\n    if (typeof visible !== 'undefined') {\n      polyline.setVisible(visible);\n    }\n    if (typeof editable !== 'undefined') {\n      polyline.setEditable(editable);\n    }\n    if (typeof draggable !== 'undefined') {\n      polyline.setDraggable(draggable);\n    }\n    if (onDblClick) {\n      setDblclickListener(google.maps.event.addListener(polyline, 'dblclick', onDblClick));\n    }\n    if (onDragEnd) {\n      setDragendListener(google.maps.event.addListener(polyline, 'dragend', onDragEnd));\n    }\n    if (onDragStart) {\n      setDragstartListener(google.maps.event.addListener(polyline, 'dragstart', onDragStart));\n    }\n    if (onMouseDown) {\n      setMousedownListener(google.maps.event.addListener(polyline, 'mousedown', onMouseDown));\n    }\n    if (onMouseMove) {\n      setMousemoveListener(google.maps.event.addListener(polyline, 'mousemove', onMouseMove));\n    }\n    if (onMouseOut) {\n      setMouseoutListener(google.maps.event.addListener(polyline, 'mouseout', onMouseOut));\n    }\n    if (onMouseOver) {\n      setMouseoverListener(google.maps.event.addListener(polyline, 'mouseover', onMouseOver));\n    }\n    if (onMouseUp) {\n      setMouseupListener(google.maps.event.addListener(polyline, 'mouseup', onMouseUp));\n    }\n    if (onRightClick) {\n      setRightclickListener(google.maps.event.addListener(polyline, 'rightclick', onRightClick));\n    }\n    if (onClick) {\n      setClickListener(google.maps.event.addListener(polyline, 'click', onClick));\n    }\n    if (onDrag) {\n      setDragListener(google.maps.event.addListener(polyline, 'drag', onDrag));\n    }\n    setInstance(polyline);\n    if (onLoad) {\n      onLoad(polyline);\n    }\n    return () => {\n      if (dblclickListener !== null) {\n        google.maps.event.removeListener(dblclickListener);\n      }\n      if (dragendListener !== null) {\n        google.maps.event.removeListener(dragendListener);\n      }\n      if (dragstartListener !== null) {\n        google.maps.event.removeListener(dragstartListener);\n      }\n      if (mousedownListener !== null) {\n        google.maps.event.removeListener(mousedownListener);\n      }\n      if (mousemoveListener !== null) {\n        google.maps.event.removeListener(mousemoveListener);\n      }\n      if (mouseoutListener !== null) {\n        google.maps.event.removeListener(mouseoutListener);\n      }\n      if (mouseoverListener !== null) {\n        google.maps.event.removeListener(mouseoverListener);\n      }\n      if (mouseupListener !== null) {\n        google.maps.event.removeListener(mouseupListener);\n      }\n      if (rightclickListener !== null) {\n        google.maps.event.removeListener(rightclickListener);\n      }\n      if (clickListener !== null) {\n        google.maps.event.removeListener(clickListener);\n      }\n      if (onUnmount) {\n        onUnmount(polyline);\n      }\n      polyline.setMap(null);\n    };\n  }, []);\n  return null;\n}\nvar PolylineF = memo(PolylineFunctional);\nclass Polyline extends PureComponent {\n  constructor() {\n    super(...arguments);\n    _defineProperty(this, \"registeredEvents\", []);\n    _defineProperty(this, \"state\", {\n      polyline: null\n    });\n    _defineProperty(this, \"setPolylineCallback\", () => {\n      if (this.state.polyline !== null && this.props.onLoad) {\n        this.props.onLoad(this.state.polyline);\n      }\n    });\n  }\n  componentDidMount() {\n    var polyline = new google.maps.Polyline(_objectSpread$9(_objectSpread$9({}, this.props.options), {}, {\n      map: this.context\n    }));\n    this.registeredEvents = applyUpdatersToPropsAndRegisterEvents({\n      updaterMap: updaterMap$b,\n      eventMap: eventMap$b,\n      prevProps: {},\n      nextProps: this.props,\n      instance: polyline\n    });\n    this.setState(function setPolyline() {\n      return {\n        polyline\n      };\n    }, this.setPolylineCallback);\n  }\n  componentDidUpdate(prevProps) {\n    if (this.state.polyline !== null) {\n      unregisterEvents(this.registeredEvents);\n      this.registeredEvents = applyUpdatersToPropsAndRegisterEvents({\n        updaterMap: updaterMap$b,\n        eventMap: eventMap$b,\n        prevProps,\n        nextProps: this.props,\n        instance: this.state.polyline\n      });\n    }\n  }\n  componentWillUnmount() {\n    if (this.state.polyline === null) {\n      return;\n    }\n    if (this.props.onUnmount) {\n      this.props.onUnmount(this.state.polyline);\n    }\n    unregisterEvents(this.registeredEvents);\n    this.state.polyline.setMap(null);\n  }\n  render() {\n    return null;\n  }\n}\n_defineProperty(Polyline, \"contextType\", MapContext);\n\nfunction ownKeys$8(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread$8(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$8(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$8(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nvar eventMap$a = {\n  onClick: 'click',\n  onDblClick: 'dblclick',\n  onDrag: 'drag',\n  onDragEnd: 'dragend',\n  onDragStart: 'dragstart',\n  onMouseDown: 'mousedown',\n  onMouseMove: 'mousemove',\n  onMouseOut: 'mouseout',\n  onMouseOver: 'mouseover',\n  onMouseUp: 'mouseup',\n  onRightClick: 'rightclick'\n};\nvar updaterMap$a = {\n  draggable(instance, draggable) {\n    instance.setDraggable(draggable);\n  },\n  editable(instance, editable) {\n    instance.setEditable(editable);\n  },\n  map(instance, map) {\n    instance.setMap(map);\n  },\n  options(instance, options) {\n    instance.setOptions(options);\n  },\n  path(instance, path) {\n    instance.setPath(path);\n  },\n  paths(instance, paths) {\n    instance.setPaths(paths);\n  },\n  visible(instance, visible) {\n    instance.setVisible(visible);\n  }\n};\nfunction PolygonFunctional(_ref) {\n  var {\n    options,\n    draggable,\n    editable,\n    visible,\n    path,\n    paths,\n    onDblClick,\n    onDragEnd,\n    onDragStart,\n    onMouseDown,\n    onMouseMove,\n    onMouseOut,\n    onMouseOver,\n    onMouseUp,\n    onRightClick,\n    onClick,\n    onDrag,\n    onLoad,\n    onUnmount,\n    onEdit\n  } = _ref;\n  var map = useContext(MapContext);\n  var [instance, setInstance] = useState(null);\n  var [dblclickListener, setDblclickListener] = useState(null);\n  var [dragendListener, setDragendListener] = useState(null);\n  var [dragstartListener, setDragstartListener] = useState(null);\n  var [mousedownListener, setMousedownListener] = useState(null);\n  var [mousemoveListener, setMousemoveListener] = useState(null);\n  var [mouseoutListener, setMouseoutListener] = useState(null);\n  var [mouseoverListener, setMouseoverListener] = useState(null);\n  var [mouseupListener, setMouseupListener] = useState(null);\n  var [rightclickListener, setRightclickListener] = useState(null);\n  var [clickListener, setClickListener] = useState(null);\n  var [dragListener, setDragListener] = useState(null);\n  // Order does matter\n  useEffect(() => {\n    if (instance !== null) {\n      instance.setMap(map);\n    }\n  }, [map]);\n  useEffect(() => {\n    if (typeof options !== 'undefined' && instance !== null) {\n      instance.setOptions(options);\n    }\n  }, [instance, options]);\n  useEffect(() => {\n    if (typeof draggable !== 'undefined' && instance !== null) {\n      instance.setDraggable(draggable);\n    }\n  }, [instance, draggable]);\n  useEffect(() => {\n    if (typeof editable !== 'undefined' && instance !== null) {\n      instance.setEditable(editable);\n    }\n  }, [instance, editable]);\n  useEffect(() => {\n    if (typeof visible !== 'undefined' && instance !== null) {\n      instance.setVisible(visible);\n    }\n  }, [instance, visible]);\n  useEffect(() => {\n    if (typeof path !== 'undefined' && instance !== null) {\n      instance.setPath(path);\n    }\n  }, [instance, path]);\n  useEffect(() => {\n    if (typeof paths !== 'undefined' && instance !== null) {\n      instance.setPaths(paths);\n    }\n  }, [instance, paths]);\n  useEffect(() => {\n    if (instance && typeof onDblClick === 'function') {\n      if (dblclickListener !== null) {\n        google.maps.event.removeListener(dblclickListener);\n      }\n      setDblclickListener(google.maps.event.addListener(instance, 'dblclick', onDblClick));\n    }\n  }, [onDblClick]);\n  useEffect(() => {\n    if (!instance) {\n      return;\n    }\n    google.maps.event.addListener(instance.getPath(), 'insert_at', () => {\n      onEdit === null || onEdit === void 0 || onEdit(instance);\n    });\n    google.maps.event.addListener(instance.getPath(), 'set_at', () => {\n      onEdit === null || onEdit === void 0 || onEdit(instance);\n    });\n    google.maps.event.addListener(instance.getPath(), 'remove_at', () => {\n      onEdit === null || onEdit === void 0 || onEdit(instance);\n    });\n  }, [instance, onEdit]);\n  useEffect(() => {\n    if (instance && typeof onDragEnd === 'function') {\n      if (dragendListener !== null) {\n        google.maps.event.removeListener(dragendListener);\n      }\n      setDragendListener(google.maps.event.addListener(instance, 'dragend', onDragEnd));\n    }\n  }, [onDragEnd]);\n  useEffect(() => {\n    if (instance && typeof onDragStart === 'function') {\n      if (dragstartListener !== null) {\n        google.maps.event.removeListener(dragstartListener);\n      }\n      setDragstartListener(google.maps.event.addListener(instance, 'dragstart', onDragStart));\n    }\n  }, [onDragStart]);\n  useEffect(() => {\n    if (instance && typeof onMouseDown === 'function') {\n      if (mousedownListener !== null) {\n        google.maps.event.removeListener(mousedownListener);\n      }\n      setMousedownListener(google.maps.event.addListener(instance, 'mousedown', onMouseDown));\n    }\n  }, [onMouseDown]);\n  useEffect(() => {\n    if (instance && typeof onMouseMove === 'function') {\n      if (mousemoveListener !== null) {\n        google.maps.event.removeListener(mousemoveListener);\n      }\n      setMousemoveListener(google.maps.event.addListener(instance, 'mousemove', onMouseMove));\n    }\n  }, [onMouseMove]);\n  useEffect(() => {\n    if (instance && typeof onMouseOut === 'function') {\n      if (mouseoutListener !== null) {\n        google.maps.event.removeListener(mouseoutListener);\n      }\n      setMouseoutListener(google.maps.event.addListener(instance, 'mouseout', onMouseOut));\n    }\n  }, [onMouseOut]);\n  useEffect(() => {\n    if (instance && typeof onMouseOver === 'function') {\n      if (mouseoverListener !== null) {\n        google.maps.event.removeListener(mouseoverListener);\n      }\n      setMouseoverListener(google.maps.event.addListener(instance, 'mouseover', onMouseOver));\n    }\n  }, [onMouseOver]);\n  useEffect(() => {\n    if (instance && typeof onMouseUp === 'function') {\n      if (mouseupListener !== null) {\n        google.maps.event.removeListener(mouseupListener);\n      }\n      setMouseupListener(google.maps.event.addListener(instance, 'mouseup', onMouseUp));\n    }\n  }, [onMouseUp]);\n  useEffect(() => {\n    if (instance && typeof onRightClick === 'function') {\n      if (rightclickListener !== null) {\n        google.maps.event.removeListener(rightclickListener);\n      }\n      setRightclickListener(google.maps.event.addListener(instance, 'rightclick', onRightClick));\n    }\n  }, [onRightClick]);\n  useEffect(() => {\n    if (instance && typeof onClick === 'function') {\n      if (clickListener !== null) {\n        google.maps.event.removeListener(clickListener);\n      }\n      setClickListener(google.maps.event.addListener(instance, 'click', onClick));\n    }\n  }, [onClick]);\n  useEffect(() => {\n    if (instance && typeof onDrag === 'function') {\n      if (dragListener !== null) {\n        google.maps.event.removeListener(dragListener);\n      }\n      setDragListener(google.maps.event.addListener(instance, 'drag', onDrag));\n    }\n  }, [onDrag]);\n  useEffect(() => {\n    var polygon = new google.maps.Polygon(_objectSpread$8(_objectSpread$8({}, options), {}, {\n      map\n    }));\n    if (path) {\n      polygon.setPath(path);\n    }\n    if (paths) {\n      polygon.setPaths(paths);\n    }\n    if (typeof visible !== 'undefined') {\n      polygon.setVisible(visible);\n    }\n    if (typeof editable !== 'undefined') {\n      polygon.setEditable(editable);\n    }\n    if (typeof draggable !== 'undefined') {\n      polygon.setDraggable(draggable);\n    }\n    if (onDblClick) {\n      setDblclickListener(google.maps.event.addListener(polygon, 'dblclick', onDblClick));\n    }\n    if (onDragEnd) {\n      setDragendListener(google.maps.event.addListener(polygon, 'dragend', onDragEnd));\n    }\n    if (onDragStart) {\n      setDragstartListener(google.maps.event.addListener(polygon, 'dragstart', onDragStart));\n    }\n    if (onMouseDown) {\n      setMousedownListener(google.maps.event.addListener(polygon, 'mousedown', onMouseDown));\n    }\n    if (onMouseMove) {\n      setMousemoveListener(google.maps.event.addListener(polygon, 'mousemove', onMouseMove));\n    }\n    if (onMouseOut) {\n      setMouseoutListener(google.maps.event.addListener(polygon, 'mouseout', onMouseOut));\n    }\n    if (onMouseOver) {\n      setMouseoverListener(google.maps.event.addListener(polygon, 'mouseover', onMouseOver));\n    }\n    if (onMouseUp) {\n      setMouseupListener(google.maps.event.addListener(polygon, 'mouseup', onMouseUp));\n    }\n    if (onRightClick) {\n      setRightclickListener(google.maps.event.addListener(polygon, 'rightclick', onRightClick));\n    }\n    if (onClick) {\n      setClickListener(google.maps.event.addListener(polygon, 'click', onClick));\n    }\n    if (onDrag) {\n      setDragListener(google.maps.event.addListener(polygon, 'drag', onDrag));\n    }\n    setInstance(polygon);\n    if (onLoad) {\n      onLoad(polygon);\n    }\n    return () => {\n      if (dblclickListener !== null) {\n        google.maps.event.removeListener(dblclickListener);\n      }\n      if (dragendListener !== null) {\n        google.maps.event.removeListener(dragendListener);\n      }\n      if (dragstartListener !== null) {\n        google.maps.event.removeListener(dragstartListener);\n      }\n      if (mousedownListener !== null) {\n        google.maps.event.removeListener(mousedownListener);\n      }\n      if (mousemoveListener !== null) {\n        google.maps.event.removeListener(mousemoveListener);\n      }\n      if (mouseoutListener !== null) {\n        google.maps.event.removeListener(mouseoutListener);\n      }\n      if (mouseoverListener !== null) {\n        google.maps.event.removeListener(mouseoverListener);\n      }\n      if (mouseupListener !== null) {\n        google.maps.event.removeListener(mouseupListener);\n      }\n      if (rightclickListener !== null) {\n        google.maps.event.removeListener(rightclickListener);\n      }\n      if (clickListener !== null) {\n        google.maps.event.removeListener(clickListener);\n      }\n      if (onUnmount) {\n        onUnmount(polygon);\n      }\n      polygon.setMap(null);\n    };\n  }, []);\n  return null;\n}\nvar PolygonF = memo(PolygonFunctional);\nclass Polygon extends PureComponent {\n  constructor() {\n    super(...arguments);\n    _defineProperty(this, \"registeredEvents\", []);\n  }\n  componentDidMount() {\n    var polygonOptions = this.props.options || {};\n    this.polygon = new google.maps.Polygon(polygonOptions);\n    this.polygon.setMap(this.context);\n    this.registeredEvents = applyUpdatersToPropsAndRegisterEvents({\n      updaterMap: updaterMap$a,\n      eventMap: eventMap$a,\n      prevProps: {},\n      nextProps: this.props,\n      instance: this.polygon\n    });\n    if (this.props.onLoad) {\n      this.props.onLoad(this.polygon);\n    }\n  }\n  componentDidUpdate(prevProps) {\n    if (this.polygon) {\n      unregisterEvents(this.registeredEvents);\n      this.registeredEvents = applyUpdatersToPropsAndRegisterEvents({\n        updaterMap: updaterMap$a,\n        eventMap: eventMap$a,\n        prevProps,\n        nextProps: this.props,\n        instance: this.polygon\n      });\n    }\n  }\n  componentWillUnmount() {\n    if (this.polygon) {\n      if (this.props.onUnmount) {\n        this.props.onUnmount(this.polygon);\n      }\n      unregisterEvents(this.registeredEvents);\n      if (this.polygon) {\n        this.polygon.setMap(null);\n      }\n    }\n  }\n  render() {\n    return null;\n  }\n}\n_defineProperty(Polygon, \"contextType\", MapContext);\n\nfunction ownKeys$7(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread$7(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$7(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$7(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nvar eventMap$9 = {\n  onBoundsChanged: 'bounds_changed',\n  onClick: 'click',\n  onDblClick: 'dblclick',\n  onDrag: 'drag',\n  onDragEnd: 'dragend',\n  onDragStart: 'dragstart',\n  onMouseDown: 'mousedown',\n  onMouseMove: 'mousemove',\n  onMouseOut: 'mouseout',\n  onMouseOver: 'mouseover',\n  onMouseUp: 'mouseup',\n  onRightClick: 'rightclick'\n};\nvar updaterMap$9 = {\n  bounds(instance, bounds) {\n    instance.setBounds(bounds);\n  },\n  draggable(instance, draggable) {\n    instance.setDraggable(draggable);\n  },\n  editable(instance, editable) {\n    instance.setEditable(editable);\n  },\n  map(instance, map) {\n    instance.setMap(map);\n  },\n  options(instance, options) {\n    instance.setOptions(options);\n  },\n  visible(instance, visible) {\n    instance.setVisible(visible);\n  }\n};\nfunction RectangleFunctional(_ref) {\n  var {\n    options,\n    bounds,\n    draggable,\n    editable,\n    visible,\n    onDblClick,\n    onDragEnd,\n    onDragStart,\n    onMouseDown,\n    onMouseMove,\n    onMouseOut,\n    onMouseOver,\n    onMouseUp,\n    onRightClick,\n    onClick,\n    onDrag,\n    onBoundsChanged,\n    onLoad,\n    onUnmount\n  } = _ref;\n  var map = useContext(MapContext);\n  var [instance, setInstance] = useState(null);\n  var [dblclickListener, setDblclickListener] = useState(null);\n  var [dragendListener, setDragendListener] = useState(null);\n  var [dragstartListener, setDragstartListener] = useState(null);\n  var [mousedownListener, setMousedownListener] = useState(null);\n  var [mousemoveListener, setMousemoveListener] = useState(null);\n  var [mouseoutListener, setMouseoutListener] = useState(null);\n  var [mouseoverListener, setMouseoverListener] = useState(null);\n  var [mouseupListener, setMouseupListener] = useState(null);\n  var [rightClickListener, setRightClickListener] = useState(null);\n  var [clickListener, setClickListener] = useState(null);\n  var [dragListener, setDragListener] = useState(null);\n  var [boundsChangedListener, setBoundsChangedListener] = useState(null);\n  // Order does matter\n  useEffect(() => {\n    if (instance !== null) {\n      instance.setMap(map);\n    }\n  }, [map]);\n  useEffect(() => {\n    if (typeof options !== 'undefined' && instance !== null) {\n      instance.setOptions(options);\n    }\n  }, [instance, options]);\n  useEffect(() => {\n    if (typeof draggable !== 'undefined' && instance !== null) {\n      instance.setDraggable(draggable);\n    }\n  }, [instance, draggable]);\n  useEffect(() => {\n    if (typeof editable !== 'undefined' && instance !== null) {\n      instance.setEditable(editable);\n    }\n  }, [instance, editable]);\n  useEffect(() => {\n    if (typeof visible !== 'undefined' && instance !== null) {\n      instance.setVisible(visible);\n    }\n  }, [instance, visible]);\n  useEffect(() => {\n    if (typeof bounds !== 'undefined' && instance !== null) {\n      instance.setBounds(bounds);\n    }\n  }, [instance, bounds]);\n  useEffect(() => {\n    if (instance && onDblClick) {\n      if (dblclickListener !== null) {\n        google.maps.event.removeListener(dblclickListener);\n      }\n      setDblclickListener(google.maps.event.addListener(instance, 'dblclick', onDblClick));\n    }\n  }, [onDblClick]);\n  useEffect(() => {\n    if (instance && onDragEnd) {\n      if (dragendListener !== null) {\n        google.maps.event.removeListener(dragendListener);\n      }\n      setDragendListener(google.maps.event.addListener(instance, 'dragend', onDragEnd));\n    }\n  }, [onDragEnd]);\n  useEffect(() => {\n    if (instance && onDragStart) {\n      if (dragstartListener !== null) {\n        google.maps.event.removeListener(dragstartListener);\n      }\n      setDragstartListener(google.maps.event.addListener(instance, 'dragstart', onDragStart));\n    }\n  }, [onDragStart]);\n  useEffect(() => {\n    if (instance && onMouseDown) {\n      if (mousedownListener !== null) {\n        google.maps.event.removeListener(mousedownListener);\n      }\n      setMousedownListener(google.maps.event.addListener(instance, 'mousedown', onMouseDown));\n    }\n  }, [onMouseDown]);\n  useEffect(() => {\n    if (instance && onMouseMove) {\n      if (mousemoveListener !== null) {\n        google.maps.event.removeListener(mousemoveListener);\n      }\n      setMousemoveListener(google.maps.event.addListener(instance, 'mousemove', onMouseMove));\n    }\n  }, [onMouseMove]);\n  useEffect(() => {\n    if (instance && onMouseOut) {\n      if (mouseoutListener !== null) {\n        google.maps.event.removeListener(mouseoutListener);\n      }\n      setMouseoutListener(google.maps.event.addListener(instance, 'mouseout', onMouseOut));\n    }\n  }, [onMouseOut]);\n  useEffect(() => {\n    if (instance && onMouseOver) {\n      if (mouseoverListener !== null) {\n        google.maps.event.removeListener(mouseoverListener);\n      }\n      setMouseoverListener(google.maps.event.addListener(instance, 'mouseover', onMouseOver));\n    }\n  }, [onMouseOver]);\n  useEffect(() => {\n    if (instance && onMouseUp) {\n      if (mouseupListener !== null) {\n        google.maps.event.removeListener(mouseupListener);\n      }\n      setMouseupListener(google.maps.event.addListener(instance, 'mouseup', onMouseUp));\n    }\n  }, [onMouseUp]);\n  useEffect(() => {\n    if (instance && onRightClick) {\n      if (rightClickListener !== null) {\n        google.maps.event.removeListener(rightClickListener);\n      }\n      setRightClickListener(google.maps.event.addListener(instance, 'rightclick', onRightClick));\n    }\n  }, [onRightClick]);\n  useEffect(() => {\n    if (instance && onClick) {\n      if (clickListener !== null) {\n        google.maps.event.removeListener(clickListener);\n      }\n      setClickListener(google.maps.event.addListener(instance, 'click', onClick));\n    }\n  }, [onClick]);\n  useEffect(() => {\n    if (instance && onDrag) {\n      if (dragListener !== null) {\n        google.maps.event.removeListener(dragListener);\n      }\n      setDragListener(google.maps.event.addListener(instance, 'drag', onDrag));\n    }\n  }, [onDrag]);\n  useEffect(() => {\n    if (instance && onBoundsChanged) {\n      if (boundsChangedListener !== null) {\n        google.maps.event.removeListener(boundsChangedListener);\n      }\n      setBoundsChangedListener(google.maps.event.addListener(instance, 'bounds_changed', onBoundsChanged));\n    }\n  }, [onBoundsChanged]);\n  useEffect(() => {\n    var rectangle = new google.maps.Rectangle(_objectSpread$7(_objectSpread$7({}, options), {}, {\n      map\n    }));\n    if (typeof visible !== 'undefined') {\n      rectangle.setVisible(visible);\n    }\n    if (typeof editable !== 'undefined') {\n      rectangle.setEditable(editable);\n    }\n    if (typeof draggable !== 'undefined') {\n      rectangle.setDraggable(draggable);\n    }\n    if (typeof bounds !== 'undefined') {\n      rectangle.setBounds(bounds);\n    }\n    if (onDblClick) {\n      setDblclickListener(google.maps.event.addListener(rectangle, 'dblclick', onDblClick));\n    }\n    if (onDragEnd) {\n      setDragendListener(google.maps.event.addListener(rectangle, 'dragend', onDragEnd));\n    }\n    if (onDragStart) {\n      setDragstartListener(google.maps.event.addListener(rectangle, 'dragstart', onDragStart));\n    }\n    if (onMouseDown) {\n      setMousedownListener(google.maps.event.addListener(rectangle, 'mousedown', onMouseDown));\n    }\n    if (onMouseMove) {\n      setMousemoveListener(google.maps.event.addListener(rectangle, 'mousemove', onMouseMove));\n    }\n    if (onMouseOut) {\n      setMouseoutListener(google.maps.event.addListener(rectangle, 'mouseout', onMouseOut));\n    }\n    if (onMouseOver) {\n      setMouseoverListener(google.maps.event.addListener(rectangle, 'mouseover', onMouseOver));\n    }\n    if (onMouseUp) {\n      setMouseupListener(google.maps.event.addListener(rectangle, 'mouseup', onMouseUp));\n    }\n    if (onRightClick) {\n      setRightClickListener(google.maps.event.addListener(rectangle, 'rightclick', onRightClick));\n    }\n    if (onClick) {\n      setClickListener(google.maps.event.addListener(rectangle, 'click', onClick));\n    }\n    if (onDrag) {\n      setDragListener(google.maps.event.addListener(rectangle, 'drag', onDrag));\n    }\n    if (onBoundsChanged) {\n      setBoundsChangedListener(google.maps.event.addListener(rectangle, 'bounds_changed', onBoundsChanged));\n    }\n    setInstance(rectangle);\n    if (onLoad) {\n      onLoad(rectangle);\n    }\n    return () => {\n      if (dblclickListener !== null) {\n        google.maps.event.removeListener(dblclickListener);\n      }\n      if (dragendListener !== null) {\n        google.maps.event.removeListener(dragendListener);\n      }\n      if (dragstartListener !== null) {\n        google.maps.event.removeListener(dragstartListener);\n      }\n      if (mousedownListener !== null) {\n        google.maps.event.removeListener(mousedownListener);\n      }\n      if (mousemoveListener !== null) {\n        google.maps.event.removeListener(mousemoveListener);\n      }\n      if (mouseoutListener !== null) {\n        google.maps.event.removeListener(mouseoutListener);\n      }\n      if (mouseoverListener !== null) {\n        google.maps.event.removeListener(mouseoverListener);\n      }\n      if (mouseupListener !== null) {\n        google.maps.event.removeListener(mouseupListener);\n      }\n      if (rightClickListener !== null) {\n        google.maps.event.removeListener(rightClickListener);\n      }\n      if (clickListener !== null) {\n        google.maps.event.removeListener(clickListener);\n      }\n      if (dragListener !== null) {\n        google.maps.event.removeListener(dragListener);\n      }\n      if (boundsChangedListener !== null) {\n        google.maps.event.removeListener(boundsChangedListener);\n      }\n      if (onUnmount) {\n        onUnmount(rectangle);\n      }\n      rectangle.setMap(null);\n    };\n  }, []);\n  return null;\n}\nvar RectangleF = memo(RectangleFunctional);\nclass Rectangle extends PureComponent {\n  constructor() {\n    super(...arguments);\n    _defineProperty(this, \"registeredEvents\", []);\n    _defineProperty(this, \"state\", {\n      rectangle: null\n    });\n    _defineProperty(this, \"setRectangleCallback\", () => {\n      if (this.state.rectangle !== null && this.props.onLoad) {\n        this.props.onLoad(this.state.rectangle);\n      }\n    });\n  }\n  componentDidMount() {\n    var rectangle = new google.maps.Rectangle(_objectSpread$7(_objectSpread$7({}, this.props.options), {}, {\n      map: this.context\n    }));\n    this.registeredEvents = applyUpdatersToPropsAndRegisterEvents({\n      updaterMap: updaterMap$9,\n      eventMap: eventMap$9,\n      prevProps: {},\n      nextProps: this.props,\n      instance: rectangle\n    });\n    this.setState(function setRectangle() {\n      return {\n        rectangle\n      };\n    }, this.setRectangleCallback);\n  }\n  componentDidUpdate(prevProps) {\n    if (this.state.rectangle !== null) {\n      unregisterEvents(this.registeredEvents);\n      this.registeredEvents = applyUpdatersToPropsAndRegisterEvents({\n        updaterMap: updaterMap$9,\n        eventMap: eventMap$9,\n        prevProps,\n        nextProps: this.props,\n        instance: this.state.rectangle\n      });\n    }\n  }\n  componentWillUnmount() {\n    if (this.state.rectangle !== null) {\n      if (this.props.onUnmount) {\n        this.props.onUnmount(this.state.rectangle);\n      }\n      unregisterEvents(this.registeredEvents);\n      this.state.rectangle.setMap(null);\n    }\n  }\n  render() {\n    return null;\n  }\n}\n_defineProperty(Rectangle, \"contextType\", MapContext);\n\nfunction ownKeys$6(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread$6(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$6(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$6(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nvar eventMap$8 = {\n  onCenterChanged: 'center_changed',\n  onRadiusChanged: 'radius_changed',\n  onClick: 'click',\n  onDblClick: 'dblclick',\n  onDrag: 'drag',\n  onDragEnd: 'dragend',\n  onDragStart: 'dragstart',\n  onMouseDown: 'mousedown',\n  onMouseMove: 'mousemove',\n  onMouseOut: 'mouseout',\n  onMouseOver: 'mouseover',\n  onMouseUp: 'mouseup',\n  onRightClick: 'rightclick'\n};\nvar updaterMap$8 = {\n  center(instance, center) {\n    instance.setCenter(center);\n  },\n  draggable(instance, draggable) {\n    instance.setDraggable(draggable);\n  },\n  editable(instance, editable) {\n    instance.setEditable(editable);\n  },\n  map(instance, map) {\n    instance.setMap(map);\n  },\n  options(instance, options) {\n    instance.setOptions(options);\n  },\n  radius(instance, radius) {\n    instance.setRadius(radius);\n  },\n  visible(instance, visible) {\n    instance.setVisible(visible);\n  }\n};\nvar defaultOptions = {};\nfunction CircleFunctional(_ref) {\n  var {\n    options,\n    center,\n    radius,\n    draggable,\n    editable,\n    visible,\n    onDblClick,\n    onDragEnd,\n    onDragStart,\n    onMouseDown,\n    onMouseMove,\n    onMouseOut,\n    onMouseOver,\n    onMouseUp,\n    onRightClick,\n    onClick,\n    onDrag,\n    onCenterChanged,\n    onRadiusChanged,\n    onLoad,\n    onUnmount\n  } = _ref;\n  var map = useContext(MapContext);\n  var [instance, setInstance] = useState(null);\n  var [dblclickListener, setDblclickListener] = useState(null);\n  var [dragendListener, setDragendListener] = useState(null);\n  var [dragstartListener, setDragstartListener] = useState(null);\n  var [mousedownListener, setMousedownListener] = useState(null);\n  var [mousemoveListener, setMousemoveListener] = useState(null);\n  var [mouseoutListener, setMouseoutListener] = useState(null);\n  var [mouseoverListener, setMouseoverListener] = useState(null);\n  var [mouseupListener, setMouseupListener] = useState(null);\n  var [rightclickListener, setRightclickListener] = useState(null);\n  var [clickListener, setClickListener] = useState(null);\n  var [dragListener, setDragListener] = useState(null);\n  var [centerChangedListener, setCenterChangedListener] = useState(null);\n  var [radiusChangedListener, setRadiusChangedListener] = useState(null);\n  // Order does matter\n  useEffect(() => {\n    if (instance !== null) {\n      instance.setMap(map);\n    }\n  }, [map]);\n  useEffect(() => {\n    if (typeof options !== 'undefined' && instance !== null) {\n      instance.setOptions(options);\n    }\n  }, [instance, options]);\n  useEffect(() => {\n    if (typeof draggable !== 'undefined' && instance !== null) {\n      instance.setDraggable(draggable);\n    }\n  }, [instance, draggable]);\n  useEffect(() => {\n    if (typeof editable !== 'undefined' && instance !== null) {\n      instance.setEditable(editable);\n    }\n  }, [instance, editable]);\n  useEffect(() => {\n    if (typeof visible !== 'undefined' && instance !== null) {\n      instance.setVisible(visible);\n    }\n  }, [instance, visible]);\n  useEffect(() => {\n    if (typeof radius === 'number' && instance !== null) {\n      instance.setRadius(radius);\n    }\n  }, [instance, radius]);\n  useEffect(() => {\n    if (typeof center !== 'undefined' && instance !== null) {\n      instance.setCenter(center);\n    }\n  }, [instance, center]);\n  useEffect(() => {\n    if (instance && onDblClick) {\n      if (dblclickListener !== null) {\n        google.maps.event.removeListener(dblclickListener);\n      }\n      setDblclickListener(google.maps.event.addListener(instance, 'dblclick', onDblClick));\n    }\n  }, [onDblClick]);\n  useEffect(() => {\n    if (instance && onDragEnd) {\n      if (dragendListener !== null) {\n        google.maps.event.removeListener(dragendListener);\n      }\n      setDragendListener(google.maps.event.addListener(instance, 'dragend', onDragEnd));\n    }\n  }, [onDragEnd]);\n  useEffect(() => {\n    if (instance && onDragStart) {\n      if (dragstartListener !== null) {\n        google.maps.event.removeListener(dragstartListener);\n      }\n      setDragstartListener(google.maps.event.addListener(instance, 'dragstart', onDragStart));\n    }\n  }, [onDragStart]);\n  useEffect(() => {\n    if (instance && onMouseDown) {\n      if (mousedownListener !== null) {\n        google.maps.event.removeListener(mousedownListener);\n      }\n      setMousedownListener(google.maps.event.addListener(instance, 'mousedown', onMouseDown));\n    }\n  }, [onMouseDown]);\n  useEffect(() => {\n    if (instance && onMouseMove) {\n      if (mousemoveListener !== null) {\n        google.maps.event.removeListener(mousemoveListener);\n      }\n      setMousemoveListener(google.maps.event.addListener(instance, 'mousemove', onMouseMove));\n    }\n  }, [onMouseMove]);\n  useEffect(() => {\n    if (instance && onMouseOut) {\n      if (mouseoutListener !== null) {\n        google.maps.event.removeListener(mouseoutListener);\n      }\n      setMouseoutListener(google.maps.event.addListener(instance, 'mouseout', onMouseOut));\n    }\n  }, [onMouseOut]);\n  useEffect(() => {\n    if (instance && onMouseOver) {\n      if (mouseoverListener !== null) {\n        google.maps.event.removeListener(mouseoverListener);\n      }\n      setMouseoverListener(google.maps.event.addListener(instance, 'mouseover', onMouseOver));\n    }\n  }, [onMouseOver]);\n  useEffect(() => {\n    if (instance && onMouseUp) {\n      if (mouseupListener !== null) {\n        google.maps.event.removeListener(mouseupListener);\n      }\n      setMouseupListener(google.maps.event.addListener(instance, 'mouseup', onMouseUp));\n    }\n  }, [onMouseUp]);\n  useEffect(() => {\n    if (instance && onRightClick) {\n      if (rightclickListener !== null) {\n        google.maps.event.removeListener(rightclickListener);\n      }\n      setRightclickListener(google.maps.event.addListener(instance, 'rightclick', onRightClick));\n    }\n  }, [onRightClick]);\n  useEffect(() => {\n    if (instance && onClick) {\n      if (clickListener !== null) {\n        google.maps.event.removeListener(clickListener);\n      }\n      setClickListener(google.maps.event.addListener(instance, 'click', onClick));\n    }\n  }, [onClick]);\n  useEffect(() => {\n    if (instance && onDrag) {\n      if (dragListener !== null) {\n        google.maps.event.removeListener(dragListener);\n      }\n      setDragListener(google.maps.event.addListener(instance, 'drag', onDrag));\n    }\n  }, [onDrag]);\n  useEffect(() => {\n    if (instance && onCenterChanged) {\n      if (centerChangedListener !== null) {\n        google.maps.event.removeListener(centerChangedListener);\n      }\n      setCenterChangedListener(google.maps.event.addListener(instance, 'center_changed', onCenterChanged));\n    }\n  }, [onClick]);\n  useEffect(() => {\n    if (instance && onRadiusChanged) {\n      if (radiusChangedListener !== null) {\n        google.maps.event.removeListener(radiusChangedListener);\n      }\n      setRadiusChangedListener(google.maps.event.addListener(instance, 'radius_changed', onRadiusChanged));\n    }\n  }, [onRadiusChanged]);\n  useEffect(() => {\n    var circle = new google.maps.Circle(_objectSpread$6(_objectSpread$6({}, options || defaultOptions), {}, {\n      map\n    }));\n    if (typeof radius === 'number') {\n      circle.setRadius(radius);\n    }\n    if (typeof center !== 'undefined') {\n      circle.setCenter(center);\n    }\n    if (typeof radius === 'number') {\n      circle.setRadius(radius);\n    }\n    if (typeof visible !== 'undefined') {\n      circle.setVisible(visible);\n    }\n    if (typeof editable !== 'undefined') {\n      circle.setEditable(editable);\n    }\n    if (typeof draggable !== 'undefined') {\n      circle.setDraggable(draggable);\n    }\n    if (onDblClick) {\n      setDblclickListener(google.maps.event.addListener(circle, 'dblclick', onDblClick));\n    }\n    if (onDragEnd) {\n      setDragendListener(google.maps.event.addListener(circle, 'dragend', onDragEnd));\n    }\n    if (onDragStart) {\n      setDragstartListener(google.maps.event.addListener(circle, 'dragstart', onDragStart));\n    }\n    if (onMouseDown) {\n      setMousedownListener(google.maps.event.addListener(circle, 'mousedown', onMouseDown));\n    }\n    if (onMouseMove) {\n      setMousemoveListener(google.maps.event.addListener(circle, 'mousemove', onMouseMove));\n    }\n    if (onMouseOut) {\n      setMouseoutListener(google.maps.event.addListener(circle, 'mouseout', onMouseOut));\n    }\n    if (onMouseOver) {\n      setMouseoverListener(google.maps.event.addListener(circle, 'mouseover', onMouseOver));\n    }\n    if (onMouseUp) {\n      setMouseupListener(google.maps.event.addListener(circle, 'mouseup', onMouseUp));\n    }\n    if (onRightClick) {\n      setRightclickListener(google.maps.event.addListener(circle, 'rightclick', onRightClick));\n    }\n    if (onClick) {\n      setClickListener(google.maps.event.addListener(circle, 'click', onClick));\n    }\n    if (onDrag) {\n      setDragListener(google.maps.event.addListener(circle, 'drag', onDrag));\n    }\n    if (onCenterChanged) {\n      setCenterChangedListener(google.maps.event.addListener(circle, 'center_changed', onCenterChanged));\n    }\n    if (onRadiusChanged) {\n      setRadiusChangedListener(google.maps.event.addListener(circle, 'radius_changed', onRadiusChanged));\n    }\n    setInstance(circle);\n    if (onLoad) {\n      onLoad(circle);\n    }\n    return () => {\n      if (dblclickListener !== null) {\n        google.maps.event.removeListener(dblclickListener);\n      }\n      if (dragendListener !== null) {\n        google.maps.event.removeListener(dragendListener);\n      }\n      if (dragstartListener !== null) {\n        google.maps.event.removeListener(dragstartListener);\n      }\n      if (mousedownListener !== null) {\n        google.maps.event.removeListener(mousedownListener);\n      }\n      if (mousemoveListener !== null) {\n        google.maps.event.removeListener(mousemoveListener);\n      }\n      if (mouseoutListener !== null) {\n        google.maps.event.removeListener(mouseoutListener);\n      }\n      if (mouseoverListener !== null) {\n        google.maps.event.removeListener(mouseoverListener);\n      }\n      if (mouseupListener !== null) {\n        google.maps.event.removeListener(mouseupListener);\n      }\n      if (rightclickListener !== null) {\n        google.maps.event.removeListener(rightclickListener);\n      }\n      if (clickListener !== null) {\n        google.maps.event.removeListener(clickListener);\n      }\n      if (centerChangedListener !== null) {\n        google.maps.event.removeListener(centerChangedListener);\n      }\n      if (radiusChangedListener !== null) {\n        google.maps.event.removeListener(radiusChangedListener);\n      }\n      if (onUnmount) {\n        onUnmount(circle);\n      }\n      circle.setMap(null);\n    };\n  }, []);\n  return null;\n}\nvar CircleF = memo(CircleFunctional);\nclass Circle extends PureComponent {\n  constructor() {\n    super(...arguments);\n    _defineProperty(this, \"registeredEvents\", []);\n    _defineProperty(this, \"state\", {\n      circle: null\n    });\n    _defineProperty(this, \"setCircleCallback\", () => {\n      if (this.state.circle !== null && this.props.onLoad) {\n        this.props.onLoad(this.state.circle);\n      }\n    });\n  }\n  componentDidMount() {\n    var circle = new google.maps.Circle(_objectSpread$6(_objectSpread$6({}, this.props.options), {}, {\n      map: this.context\n    }));\n    this.registeredEvents = applyUpdatersToPropsAndRegisterEvents({\n      updaterMap: updaterMap$8,\n      eventMap: eventMap$8,\n      prevProps: {},\n      nextProps: this.props,\n      instance: circle\n    });\n    this.setState(function setCircle() {\n      return {\n        circle\n      };\n    }, this.setCircleCallback);\n  }\n  componentDidUpdate(prevProps) {\n    if (this.state.circle !== null) {\n      unregisterEvents(this.registeredEvents);\n      this.registeredEvents = applyUpdatersToPropsAndRegisterEvents({\n        updaterMap: updaterMap$8,\n        eventMap: eventMap$8,\n        prevProps,\n        nextProps: this.props,\n        instance: this.state.circle\n      });\n    }\n  }\n  componentWillUnmount() {\n    if (this.state.circle !== null) {\n      var _this$state$circle;\n      if (this.props.onUnmount) {\n        this.props.onUnmount(this.state.circle);\n      }\n      unregisterEvents(this.registeredEvents);\n      (_this$state$circle = this.state.circle) === null || _this$state$circle === void 0 || _this$state$circle.setMap(null);\n    }\n  }\n  render() {\n    return null;\n  }\n}\n_defineProperty(Circle, \"contextType\", MapContext);\n\nfunction ownKeys$5(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread$5(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$5(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$5(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nvar eventMap$7 = {\n  onClick: 'click',\n  onDblClick: 'dblclick',\n  onMouseDown: 'mousedown',\n  onMouseOut: 'mouseout',\n  onMouseOver: 'mouseover',\n  onMouseUp: 'mouseup',\n  onRightClick: 'rightclick',\n  onAddFeature: 'addfeature',\n  onRemoveFeature: 'removefeature',\n  onRemoveProperty: 'removeproperty',\n  onSetGeometry: 'setgeometry',\n  onSetProperty: 'setproperty'\n};\nvar updaterMap$7 = {\n  add(instance, feature) {\n    instance.add(feature);\n  },\n  addgeojson(instance, geojson, options) {\n    instance.addGeoJson(geojson, options);\n  },\n  contains(instance, feature) {\n    instance.contains(feature);\n  },\n  foreach(instance, callback) {\n    instance.forEach(callback);\n  },\n  loadgeojson(instance, url, options, callback) {\n    instance.loadGeoJson(url, options, callback);\n  },\n  overridestyle(instance, feature, style) {\n    instance.overrideStyle(feature, style);\n  },\n  remove(instance, feature) {\n    instance.remove(feature);\n  },\n  revertstyle(instance, feature) {\n    instance.revertStyle(feature);\n  },\n  controlposition(instance, controlPosition) {\n    instance.setControlPosition(controlPosition);\n  },\n  controls(instance, controls) {\n    instance.setControls(controls);\n  },\n  drawingmode(instance, mode) {\n    instance.setDrawingMode(mode);\n  },\n  map(instance, map) {\n    instance.setMap(map);\n  },\n  style(instance, style) {\n    instance.setStyle(style);\n  },\n  togeojson(instance, callback) {\n    instance.toGeoJson(callback);\n  }\n};\nfunction DataFunctional(_ref) {\n  var {\n    options,\n    onClick,\n    onDblClick,\n    onMouseDown,\n    onMouseMove,\n    onMouseOut,\n    onMouseOver,\n    onMouseUp,\n    onRightClick,\n    onAddFeature,\n    onRemoveFeature,\n    onRemoveProperty,\n    onSetGeometry,\n    onSetProperty,\n    onLoad,\n    onUnmount\n  } = _ref;\n  var map = useContext(MapContext);\n  var [instance, setInstance] = useState(null);\n  var [dblclickListener, setDblclickListener] = useState(null);\n  var [mousedownListener, setMousedownListener] = useState(null);\n  var [mousemoveListener, setMousemoveListener] = useState(null);\n  var [mouseoutListener, setMouseoutListener] = useState(null);\n  var [mouseoverListener, setMouseoverListener] = useState(null);\n  var [mouseupListener, setMouseupListener] = useState(null);\n  var [rightclickListener, setRightclickListener] = useState(null);\n  var [clickListener, setClickListener] = useState(null);\n  var [addFeatureListener, setAddFeatureListener] = useState(null);\n  var [removeFeatureListener, setRemoveFeatureListener] = useState(null);\n  var [removePropertyListener, setRemovePropertyListener] = useState(null);\n  var [setGeometryListener, setSetGeometryListener] = useState(null);\n  var [setPropertyListener, setSetPropertyListener] = useState(null);\n  // Order does matter\n  useEffect(() => {\n    if (instance !== null) {\n      instance.setMap(map);\n    }\n  }, [map]);\n  useEffect(() => {\n    if (instance && onDblClick) {\n      if (dblclickListener !== null) {\n        google.maps.event.removeListener(dblclickListener);\n      }\n      setDblclickListener(google.maps.event.addListener(instance, 'dblclick', onDblClick));\n    }\n  }, [onDblClick]);\n  useEffect(() => {\n    if (instance && onMouseDown) {\n      if (mousedownListener !== null) {\n        google.maps.event.removeListener(mousedownListener);\n      }\n      setMousedownListener(google.maps.event.addListener(instance, 'mousedown', onMouseDown));\n    }\n  }, [onMouseDown]);\n  useEffect(() => {\n    if (instance && onMouseMove) {\n      if (mousemoveListener !== null) {\n        google.maps.event.removeListener(mousemoveListener);\n      }\n      setMousemoveListener(google.maps.event.addListener(instance, 'mousemove', onMouseMove));\n    }\n  }, [onMouseMove]);\n  useEffect(() => {\n    if (instance && onMouseOut) {\n      if (mouseoutListener !== null) {\n        google.maps.event.removeListener(mouseoutListener);\n      }\n      setMouseoutListener(google.maps.event.addListener(instance, 'mouseout', onMouseOut));\n    }\n  }, [onMouseOut]);\n  useEffect(() => {\n    if (instance && onMouseOver) {\n      if (mouseoverListener !== null) {\n        google.maps.event.removeListener(mouseoverListener);\n      }\n      setMouseoverListener(google.maps.event.addListener(instance, 'mouseover', onMouseOver));\n    }\n  }, [onMouseOver]);\n  useEffect(() => {\n    if (instance && onMouseUp) {\n      if (mouseupListener !== null) {\n        google.maps.event.removeListener(mouseupListener);\n      }\n      setMouseupListener(google.maps.event.addListener(instance, 'mouseup', onMouseUp));\n    }\n  }, [onMouseUp]);\n  useEffect(() => {\n    if (instance && onRightClick) {\n      if (rightclickListener !== null) {\n        google.maps.event.removeListener(rightclickListener);\n      }\n      setRightclickListener(google.maps.event.addListener(instance, 'rightclick', onRightClick));\n    }\n  }, [onRightClick]);\n  useEffect(() => {\n    if (instance && onClick) {\n      if (clickListener !== null) {\n        google.maps.event.removeListener(clickListener);\n      }\n      setClickListener(google.maps.event.addListener(instance, 'click', onClick));\n    }\n  }, [onClick]);\n  useEffect(() => {\n    if (instance && onAddFeature) {\n      if (addFeatureListener !== null) {\n        google.maps.event.removeListener(addFeatureListener);\n      }\n      setAddFeatureListener(google.maps.event.addListener(instance, 'addfeature', onAddFeature));\n    }\n  }, [onAddFeature]);\n  useEffect(() => {\n    if (instance && onRemoveFeature) {\n      if (removeFeatureListener !== null) {\n        google.maps.event.removeListener(removeFeatureListener);\n      }\n      setRemoveFeatureListener(google.maps.event.addListener(instance, 'removefeature', onRemoveFeature));\n    }\n  }, [onRemoveFeature]);\n  useEffect(() => {\n    if (instance && onRemoveProperty) {\n      if (removePropertyListener !== null) {\n        google.maps.event.removeListener(removePropertyListener);\n      }\n      setRemovePropertyListener(google.maps.event.addListener(instance, 'removeproperty', onRemoveProperty));\n    }\n  }, [onRemoveProperty]);\n  useEffect(() => {\n    if (instance && onSetGeometry) {\n      if (setGeometryListener !== null) {\n        google.maps.event.removeListener(setGeometryListener);\n      }\n      setSetGeometryListener(google.maps.event.addListener(instance, 'setgeometry', onSetGeometry));\n    }\n  }, [onSetGeometry]);\n  useEffect(() => {\n    if (instance && onSetProperty) {\n      if (setPropertyListener !== null) {\n        google.maps.event.removeListener(setPropertyListener);\n      }\n      setSetPropertyListener(google.maps.event.addListener(instance, 'setproperty', onSetProperty));\n    }\n  }, [onSetProperty]);\n  useEffect(() => {\n    if (map !== null) {\n      var data = new google.maps.Data(_objectSpread$5(_objectSpread$5({}, options), {}, {\n        map\n      }));\n      if (onDblClick) {\n        setDblclickListener(google.maps.event.addListener(data, 'dblclick', onDblClick));\n      }\n      if (onMouseDown) {\n        setMousedownListener(google.maps.event.addListener(data, 'mousedown', onMouseDown));\n      }\n      if (onMouseMove) {\n        setMousemoveListener(google.maps.event.addListener(data, 'mousemove', onMouseMove));\n      }\n      if (onMouseOut) {\n        setMouseoutListener(google.maps.event.addListener(data, 'mouseout', onMouseOut));\n      }\n      if (onMouseOver) {\n        setMouseoverListener(google.maps.event.addListener(data, 'mouseover', onMouseOver));\n      }\n      if (onMouseUp) {\n        setMouseupListener(google.maps.event.addListener(data, 'mouseup', onMouseUp));\n      }\n      if (onRightClick) {\n        setRightclickListener(google.maps.event.addListener(data, 'rightclick', onRightClick));\n      }\n      if (onClick) {\n        setClickListener(google.maps.event.addListener(data, 'click', onClick));\n      }\n      if (onAddFeature) {\n        setAddFeatureListener(google.maps.event.addListener(data, 'addfeature', onAddFeature));\n      }\n      if (onRemoveFeature) {\n        setRemoveFeatureListener(google.maps.event.addListener(data, 'removefeature', onRemoveFeature));\n      }\n      if (onRemoveProperty) {\n        setRemovePropertyListener(google.maps.event.addListener(data, 'removeproperty', onRemoveProperty));\n      }\n      if (onSetGeometry) {\n        setSetGeometryListener(google.maps.event.addListener(data, 'setgeometry', onSetGeometry));\n      }\n      if (onSetProperty) {\n        setSetPropertyListener(google.maps.event.addListener(data, 'setproperty', onSetProperty));\n      }\n      setInstance(data);\n      if (onLoad) {\n        onLoad(data);\n      }\n    }\n    return () => {\n      if (instance) {\n        if (dblclickListener !== null) {\n          google.maps.event.removeListener(dblclickListener);\n        }\n        if (mousedownListener !== null) {\n          google.maps.event.removeListener(mousedownListener);\n        }\n        if (mousemoveListener !== null) {\n          google.maps.event.removeListener(mousemoveListener);\n        }\n        if (mouseoutListener !== null) {\n          google.maps.event.removeListener(mouseoutListener);\n        }\n        if (mouseoverListener !== null) {\n          google.maps.event.removeListener(mouseoverListener);\n        }\n        if (mouseupListener !== null) {\n          google.maps.event.removeListener(mouseupListener);\n        }\n        if (rightclickListener !== null) {\n          google.maps.event.removeListener(rightclickListener);\n        }\n        if (clickListener !== null) {\n          google.maps.event.removeListener(clickListener);\n        }\n        if (addFeatureListener !== null) {\n          google.maps.event.removeListener(addFeatureListener);\n        }\n        if (removeFeatureListener !== null) {\n          google.maps.event.removeListener(removeFeatureListener);\n        }\n        if (removePropertyListener !== null) {\n          google.maps.event.removeListener(removePropertyListener);\n        }\n        if (setGeometryListener !== null) {\n          google.maps.event.removeListener(setGeometryListener);\n        }\n        if (setPropertyListener !== null) {\n          google.maps.event.removeListener(setPropertyListener);\n        }\n        if (onUnmount) {\n          onUnmount(instance);\n        }\n        instance.setMap(null);\n      }\n    };\n  }, []);\n  return null;\n}\nvar DataF = memo(DataFunctional);\nclass Data extends PureComponent {\n  constructor() {\n    super(...arguments);\n    _defineProperty(this, \"registeredEvents\", []);\n    _defineProperty(this, \"state\", {\n      data: null\n    });\n    _defineProperty(this, \"setDataCallback\", () => {\n      if (this.state.data !== null && this.props.onLoad) {\n        this.props.onLoad(this.state.data);\n      }\n    });\n  }\n  componentDidMount() {\n    if (this.context !== null) {\n      var data = new google.maps.Data(_objectSpread$5(_objectSpread$5({}, this.props.options), {}, {\n        map: this.context\n      }));\n      this.registeredEvents = applyUpdatersToPropsAndRegisterEvents({\n        updaterMap: updaterMap$7,\n        eventMap: eventMap$7,\n        prevProps: {},\n        nextProps: this.props,\n        instance: data\n      });\n      this.setState(() => {\n        return {\n          data\n        };\n      }, this.setDataCallback);\n    }\n  }\n  componentDidUpdate(prevProps) {\n    if (this.state.data !== null) {\n      unregisterEvents(this.registeredEvents);\n      this.registeredEvents = applyUpdatersToPropsAndRegisterEvents({\n        updaterMap: updaterMap$7,\n        eventMap: eventMap$7,\n        prevProps,\n        nextProps: this.props,\n        instance: this.state.data\n      });\n    }\n  }\n  componentWillUnmount() {\n    if (this.state.data !== null) {\n      if (this.props.onUnmount) {\n        this.props.onUnmount(this.state.data);\n      }\n      unregisterEvents(this.registeredEvents);\n      if (this.state.data) {\n        this.state.data.setMap(null);\n      }\n    }\n  }\n  render() {\n    return null;\n  }\n}\n_defineProperty(Data, \"contextType\", MapContext);\n\nfunction ownKeys$4(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread$4(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$4(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$4(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nvar eventMap$6 = {\n  onClick: 'click',\n  onDefaultViewportChanged: 'defaultviewport_changed',\n  onStatusChanged: 'status_changed'\n};\nvar updaterMap$6 = {\n  options(instance, options) {\n    instance.setOptions(options);\n  },\n  url(instance, url) {\n    instance.setUrl(url);\n  },\n  zIndex(instance, zIndex) {\n    instance.setZIndex(zIndex);\n  }\n};\nclass KmlLayer extends PureComponent {\n  constructor() {\n    super(...arguments);\n    _defineProperty(this, \"registeredEvents\", []);\n    _defineProperty(this, \"state\", {\n      kmlLayer: null\n    });\n    _defineProperty(this, \"setKmlLayerCallback\", () => {\n      if (this.state.kmlLayer !== null && this.props.onLoad) {\n        this.props.onLoad(this.state.kmlLayer);\n      }\n    });\n  }\n  componentDidMount() {\n    var kmlLayer = new google.maps.KmlLayer(_objectSpread$4(_objectSpread$4({}, this.props.options), {}, {\n      map: this.context\n    }));\n    this.registeredEvents = applyUpdatersToPropsAndRegisterEvents({\n      updaterMap: updaterMap$6,\n      eventMap: eventMap$6,\n      prevProps: {},\n      nextProps: this.props,\n      instance: kmlLayer\n    });\n    this.setState(function setLmlLayer() {\n      return {\n        kmlLayer\n      };\n    }, this.setKmlLayerCallback);\n  }\n  componentDidUpdate(prevProps) {\n    if (this.state.kmlLayer !== null) {\n      unregisterEvents(this.registeredEvents);\n      this.registeredEvents = applyUpdatersToPropsAndRegisterEvents({\n        updaterMap: updaterMap$6,\n        eventMap: eventMap$6,\n        prevProps,\n        nextProps: this.props,\n        instance: this.state.kmlLayer\n      });\n    }\n  }\n  componentWillUnmount() {\n    if (this.state.kmlLayer !== null) {\n      if (this.props.onUnmount) {\n        this.props.onUnmount(this.state.kmlLayer);\n      }\n      unregisterEvents(this.registeredEvents);\n      this.state.kmlLayer.setMap(null);\n    }\n  }\n  render() {\n    return null;\n  }\n}\n_defineProperty(KmlLayer, \"contextType\", MapContext);\n\nfunction getOffsetOverride(containerElement, getPixelPositionOffset) {\n  return typeof getPixelPositionOffset === 'function' ? getPixelPositionOffset(containerElement.offsetWidth, containerElement.offsetHeight) : {\n    x: 0,\n    y: 0\n  };\n}\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction createLatLng(inst, Type) {\n  return new Type(inst.lat, inst.lng);\n}\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction createLatLngBounds(inst, Type) {\n  return new Type(new google.maps.LatLng(inst.ne.lat, inst.ne.lng), new google.maps.LatLng(inst.sw.lat, inst.sw.lng));\n}\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction ensureOfType(inst,\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype,\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfactory\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\n) {\n  return inst instanceof type ? inst : factory(inst, type);\n}\nfunction ensureOfTypeBounds(inst,\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype,\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfactory\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\n) {\n  return inst instanceof type ? inst : factory(inst, type);\n}\nfunction getLayoutStylesByBounds(mapCanvasProjection, offset, bounds) {\n  var ne = mapCanvasProjection && mapCanvasProjection.fromLatLngToDivPixel(bounds.getNorthEast());\n  var sw = mapCanvasProjection && mapCanvasProjection.fromLatLngToDivPixel(bounds.getSouthWest());\n  if (ne && sw) {\n    return {\n      left: \"\".concat(sw.x + offset.x, \"px\"),\n      top: \"\".concat(ne.y + offset.y, \"px\"),\n      width: \"\".concat(ne.x - sw.x - offset.x, \"px\"),\n      height: \"\".concat(sw.y - ne.y - offset.y, \"px\")\n    };\n  }\n  return {\n    left: '-9999px',\n    top: '-9999px'\n  };\n}\nfunction getLayoutStylesByPosition(mapCanvasProjection, offset, position) {\n  var point = mapCanvasProjection && mapCanvasProjection.fromLatLngToDivPixel(position);\n  if (point) {\n    var {\n      x,\n      y\n    } = point;\n    return {\n      left: \"\".concat(x + offset.x, \"px\"),\n      top: \"\".concat(y + offset.y, \"px\")\n    };\n  }\n  return {\n    left: '-9999px',\n    top: '-9999px'\n  };\n}\nfunction getLayoutStyles(mapCanvasProjection, offset, bounds, position) {\n  return bounds !== undefined ? getLayoutStylesByBounds(mapCanvasProjection, offset, ensureOfTypeBounds(bounds, google.maps.LatLngBounds, createLatLngBounds)) : getLayoutStylesByPosition(mapCanvasProjection, offset, ensureOfType(position, google.maps.LatLng, createLatLng));\n}\nfunction arePositionsEqual(currentPosition, previousPosition) {\n  return currentPosition.left === previousPosition.left && currentPosition.top === previousPosition.top && currentPosition.width === previousPosition.height && currentPosition.height === previousPosition.height;\n}\n\nfunction ownKeys$3(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread$3(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$3(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$3(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction createOverlay(container, pane, position, bounds, getPixelPositionOffset) {\n  class Overlay extends google.maps.OverlayView {\n    constructor(container, pane, position, bounds) {\n      super();\n      this.container = container;\n      this.pane = pane;\n      this.position = position;\n      this.bounds = bounds;\n    }\n    onAdd() {\n      var _this$getPanes;\n      var pane = (_this$getPanes = this.getPanes()) === null || _this$getPanes === void 0 ? void 0 : _this$getPanes[this.pane];\n      pane === null || pane === void 0 || pane.appendChild(this.container);\n    }\n    draw() {\n      var projection = this.getProjection();\n      var offset = _objectSpread$3({}, this.container ? getOffsetOverride(this.container, getPixelPositionOffset) : {\n        x: 0,\n        y: 0\n      });\n      var layoutStyles = getLayoutStyles(projection, offset, this.bounds, this.position);\n      for (var [key, value] of Object.entries(layoutStyles)) {\n        // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n        // @ts-ignore\n        this.container.style[key] = value;\n      }\n    }\n    onRemove() {\n      if (this.container.parentNode !== null) {\n        this.container.parentNode.removeChild(this.container);\n      }\n    }\n  }\n  return new Overlay(container, pane, position, bounds);\n}\n\nfunction ownKeys$2(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread$2(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$2(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$2(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction convertToLatLngString(latLngLike) {\n  if (!latLngLike) {\n    return '';\n  }\n  var latLng = latLngLike instanceof google.maps.LatLng ? latLngLike : new google.maps.LatLng(latLngLike.lat, latLngLike.lng);\n  return latLng + '';\n}\nfunction convertToLatLngBoundsString(latLngBoundsLike) {\n  if (!latLngBoundsLike) {\n    return '';\n  }\n  var latLngBounds = latLngBoundsLike instanceof google.maps.LatLngBounds ? latLngBoundsLike : new google.maps.LatLngBounds(new google.maps.LatLng(latLngBoundsLike.south, latLngBoundsLike.east), new google.maps.LatLng(latLngBoundsLike.north, latLngBoundsLike.west));\n  return latLngBounds + '';\n}\nvar FLOAT_PANE = \"floatPane\";\nvar MAP_PANE = \"mapPane\";\nvar MARKER_LAYER = \"markerLayer\";\nvar OVERLAY_LAYER = \"overlayLayer\";\nvar OVERLAY_MOUSE_TARGET = \"overlayMouseTarget\";\nfunction OverlayViewFunctional(_ref) {\n  var {\n    position,\n    bounds,\n    mapPaneName,\n    zIndex,\n    onLoad,\n    onUnmount,\n    getPixelPositionOffset,\n    children\n  } = _ref;\n  var map = useContext(MapContext);\n  var container = useMemo(() => {\n    var div = document.createElement('div');\n    div.style.position = 'absolute';\n    return div;\n  }, []);\n  var overlay = useMemo(() => {\n    return createOverlay(container, mapPaneName, position, bounds, getPixelPositionOffset);\n  }, [container, mapPaneName, position, bounds]);\n  useEffect(() => {\n    onLoad === null || onLoad === void 0 || onLoad(overlay);\n    overlay === null || overlay === void 0 || overlay.setMap(map);\n    return () => {\n      onUnmount === null || onUnmount === void 0 || onUnmount(overlay);\n      overlay === null || overlay === void 0 || overlay.setMap(null);\n    };\n  }, [map, overlay]);\n  // to move the container to the foreground and background\n  useEffect(() => {\n    container.style.zIndex = \"\".concat(zIndex);\n  }, [zIndex, container]);\n  return ReactDOM.createPortal(children, container);\n}\nvar OverlayViewF = memo(OverlayViewFunctional);\nclass OverlayView extends PureComponent {\n  constructor(props) {\n    super(props);\n    _defineProperty(this, \"state\", {\n      paneEl: null,\n      containerStyle: {\n        // set initial position\n        position: 'absolute'\n      }\n    });\n    _defineProperty(this, \"updatePane\", () => {\n      var mapPaneName = this.props.mapPaneName;\n      // https://developers.google.com/maps/documentation/javascript/3.exp/reference#MapPanes\n      var mapPanes = this.overlayView.getPanes();\n      invariant(!!mapPaneName, \"OverlayView requires props.mapPaneName but got %s\", mapPaneName);\n      if (mapPanes) {\n        this.setState({\n          paneEl: mapPanes[mapPaneName]\n        });\n      } else {\n        this.setState({\n          paneEl: null\n        });\n      }\n    });\n    _defineProperty(this, \"onAdd\", () => {\n      var _this$props$onLoad, _this$props;\n      this.updatePane();\n      (_this$props$onLoad = (_this$props = this.props).onLoad) === null || _this$props$onLoad === void 0 || _this$props$onLoad.call(_this$props, this.overlayView);\n    });\n    _defineProperty(this, \"onPositionElement\", () => {\n      var mapCanvasProjection = this.overlayView.getProjection();\n      var offset = _objectSpread$2({\n        x: 0,\n        y: 0\n      }, this.containerRef.current ? getOffsetOverride(this.containerRef.current, this.props.getPixelPositionOffset) : {});\n      var layoutStyles = getLayoutStyles(mapCanvasProjection, offset, this.props.bounds, this.props.position);\n      if (!arePositionsEqual(layoutStyles, {\n        // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n        // @ts-ignore\n        left: this.state.containerStyle.left,\n        // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n        // @ts-ignore\n        top: this.state.containerStyle.top,\n        // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n        // @ts-ignore\n        width: this.state.containerStyle.width,\n        // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n        // @ts-ignore\n        height: this.state.containerStyle.height\n      })) {\n        var _layoutStyles$top, _layoutStyles$left, _layoutStyles$width, _layoutStyles$height;\n        this.setState({\n          containerStyle: {\n            top: (_layoutStyles$top = layoutStyles.top) !== null && _layoutStyles$top !== void 0 ? _layoutStyles$top : 0,\n            left: (_layoutStyles$left = layoutStyles.left) !== null && _layoutStyles$left !== void 0 ? _layoutStyles$left : 0,\n            width: (_layoutStyles$width = layoutStyles.width) !== null && _layoutStyles$width !== void 0 ? _layoutStyles$width : 0,\n            height: (_layoutStyles$height = layoutStyles.height) !== null && _layoutStyles$height !== void 0 ? _layoutStyles$height : 0,\n            position: 'absolute'\n          }\n        });\n      }\n    });\n    _defineProperty(this, \"draw\", () => {\n      this.onPositionElement();\n    });\n    _defineProperty(this, \"onRemove\", () => {\n      var _this$props$onUnmount, _this$props2;\n      this.setState(() => ({\n        paneEl: null\n      }));\n      (_this$props$onUnmount = (_this$props2 = this.props).onUnmount) === null || _this$props$onUnmount === void 0 || _this$props$onUnmount.call(_this$props2, this.overlayView);\n    });\n    this.containerRef = createRef();\n    // You must implement three methods: onAdd(), draw(), and onRemove().\n    var overlayView = new google.maps.OverlayView();\n    overlayView.onAdd = this.onAdd;\n    overlayView.draw = this.draw;\n    overlayView.onRemove = this.onRemove;\n    this.overlayView = overlayView;\n  }\n  componentDidMount() {\n    this.overlayView.setMap(this.context);\n  }\n  componentDidUpdate(prevProps) {\n    var prevPositionString = convertToLatLngString(prevProps.position);\n    var positionString = convertToLatLngString(this.props.position);\n    var prevBoundsString = convertToLatLngBoundsString(prevProps.bounds);\n    var boundsString = convertToLatLngBoundsString(this.props.bounds);\n    if (prevPositionString !== positionString || prevBoundsString !== boundsString) {\n      this.overlayView.draw();\n    }\n    if (prevProps.mapPaneName !== this.props.mapPaneName) {\n      this.updatePane();\n    }\n  }\n  componentWillUnmount() {\n    this.overlayView.setMap(null);\n  }\n  render() {\n    var paneEl = this.state.paneEl;\n    if (paneEl) {\n      return ReactDOM.createPortal(jsx(\"div\", {\n        ref: this.containerRef,\n        style: this.state.containerStyle,\n        children: Children.only(this.props.children)\n      }), paneEl);\n    } else {\n      return null;\n    }\n  }\n}\n_defineProperty(OverlayView, \"FLOAT_PANE\", \"floatPane\");\n_defineProperty(OverlayView, \"MAP_PANE\", \"mapPane\");\n_defineProperty(OverlayView, \"MARKER_LAYER\", \"markerLayer\");\n_defineProperty(OverlayView, \"OVERLAY_LAYER\", \"overlayLayer\");\n_defineProperty(OverlayView, \"OVERLAY_MOUSE_TARGET\", \"overlayMouseTarget\");\n_defineProperty(OverlayView, \"contextType\", MapContext);\n\nfunction noop() {\n  return;\n}\n\nfunction ownKeys$1(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread$1(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$1(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$1(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nvar eventMap$5 = {\n  onDblClick: 'dblclick',\n  onClick: 'click'\n};\nvar updaterMap$5 = {\n  opacity(instance, opacity) {\n    instance.setOpacity(opacity);\n  }\n};\nfunction GroundOverlayFunctional(_ref) {\n  var {\n    url,\n    bounds,\n    options,\n    visible\n  } = _ref;\n  var map = useContext(MapContext);\n  var imageBounds = new google.maps.LatLngBounds(new google.maps.LatLng(bounds.south, bounds.west), new google.maps.LatLng(bounds.north, bounds.east));\n  var groundOverlay = useMemo(() => {\n    return new google.maps.GroundOverlay(url, imageBounds, options);\n  }, []);\n  useEffect(() => {\n    if (groundOverlay !== null) {\n      groundOverlay.setMap(map);\n    }\n  }, [map]);\n  useEffect(() => {\n    if (typeof url !== 'undefined' && groundOverlay !== null) {\n      groundOverlay.set('url', url);\n      groundOverlay.setMap(map);\n    }\n  }, [groundOverlay, url]);\n  useEffect(() => {\n    if (typeof visible !== 'undefined' && groundOverlay !== null) {\n      groundOverlay.setOpacity(visible ? 1 : 0);\n    }\n  }, [groundOverlay, visible]);\n  useEffect(() => {\n    var newBounds = new google.maps.LatLngBounds(new google.maps.LatLng(bounds.south, bounds.west), new google.maps.LatLng(bounds.north, bounds.east));\n    if (typeof bounds !== 'undefined' && groundOverlay !== null) {\n      groundOverlay.set('bounds', newBounds);\n      groundOverlay.setMap(map);\n    }\n  }, [groundOverlay, bounds]);\n  return null;\n}\nvar GroundOverlayF = memo(GroundOverlayFunctional);\nclass GroundOverlay extends PureComponent {\n  constructor() {\n    super(...arguments);\n    _defineProperty(this, \"registeredEvents\", []);\n    _defineProperty(this, \"state\", {\n      groundOverlay: null\n    });\n    _defineProperty(this, \"setGroundOverlayCallback\", () => {\n      if (this.state.groundOverlay !== null && this.props.onLoad) {\n        this.props.onLoad(this.state.groundOverlay);\n      }\n    });\n  }\n  componentDidMount() {\n    invariant(!!this.props.url || !!this.props.bounds, \"For GroundOverlay, url and bounds are passed in to constructor and are immutable after instantiated. This is the behavior of Google Maps JavaScript API v3 ( See https://developers.google.com/maps/documentation/javascript/reference#GroundOverlay) Hence, use the corresponding two props provided by `react-google-maps-api`, url and bounds. In some cases, you'll need the GroundOverlay component to reflect the changes of url and bounds. You can leverage the React's key property to remount the component. Typically, just `key={url}` would serve your need. See https://github.com/tomchentw/react-google-maps/issues/655\");\n    var groundOverlay = new google.maps.GroundOverlay(this.props.url, this.props.bounds, _objectSpread$1(_objectSpread$1({}, this.props.options), {}, {\n      map: this.context\n    }));\n    this.registeredEvents = applyUpdatersToPropsAndRegisterEvents({\n      updaterMap: updaterMap$5,\n      eventMap: eventMap$5,\n      prevProps: {},\n      nextProps: this.props,\n      instance: groundOverlay\n    });\n    this.setState(function setGroundOverlay() {\n      return {\n        groundOverlay\n      };\n    }, this.setGroundOverlayCallback);\n  }\n  componentDidUpdate(prevProps) {\n    if (this.state.groundOverlay !== null) {\n      unregisterEvents(this.registeredEvents);\n      this.registeredEvents = applyUpdatersToPropsAndRegisterEvents({\n        updaterMap: updaterMap$5,\n        eventMap: eventMap$5,\n        prevProps,\n        nextProps: this.props,\n        instance: this.state.groundOverlay\n      });\n    }\n  }\n  componentWillUnmount() {\n    if (this.state.groundOverlay) {\n      if (this.props.onUnmount) {\n        this.props.onUnmount(this.state.groundOverlay);\n      }\n      this.state.groundOverlay.setMap(null);\n    }\n  }\n  render() {\n    return null;\n  }\n}\n_defineProperty(GroundOverlay, \"defaultProps\", {\n  onLoad: noop\n});\n_defineProperty(GroundOverlay, \"contextType\", MapContext);\n\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nvar eventMap$4 = {};\nvar updaterMap$4 = {\n  data(instance, data) {\n    instance.setData(data);\n  },\n  map(instance, map) {\n    instance.setMap(map);\n  },\n  options(instance, options) {\n    instance.setOptions(options);\n  }\n};\nfunction HeatmapLayerFunctional(_ref) {\n  var {\n    data,\n    onLoad,\n    onUnmount,\n    options\n  } = _ref;\n  var map = useContext(MapContext);\n  var [instance, setInstance] = useState(null);\n  useEffect(() => {\n    if (!google.maps.visualization) {\n      invariant(!!google.maps.visualization, 'Did you include prop libraries={[\"visualization\"]} in useJsApiScript? %s', google.maps.visualization);\n    }\n  }, []);\n  useEffect(() => {\n    invariant(!!data, 'data property is required in HeatmapLayer %s', data);\n  }, [data]);\n  // Order does matter\n  useEffect(() => {\n    if (instance !== null) {\n      instance.setMap(map);\n    }\n  }, [map]);\n  useEffect(() => {\n    if (options && instance !== null) {\n      instance.setOptions(options);\n    }\n  }, [instance, options]);\n  useEffect(() => {\n    var heatmapLayer = new google.maps.visualization.HeatmapLayer(_objectSpread(_objectSpread({}, options), {}, {\n      data,\n      map\n    }));\n    setInstance(heatmapLayer);\n    if (onLoad) {\n      onLoad(heatmapLayer);\n    }\n    return () => {\n      if (instance !== null) {\n        if (onUnmount) {\n          onUnmount(instance);\n        }\n        instance.setMap(null);\n      }\n    };\n  }, []);\n  return null;\n}\nvar HeatmapLayerF = memo(HeatmapLayerFunctional);\nclass HeatmapLayer extends PureComponent {\n  constructor() {\n    super(...arguments);\n    _defineProperty(this, \"registeredEvents\", []);\n    _defineProperty(this, \"state\", {\n      heatmapLayer: null\n    });\n    _defineProperty(this, \"setHeatmapLayerCallback\", () => {\n      if (this.state.heatmapLayer !== null && this.props.onLoad) {\n        this.props.onLoad(this.state.heatmapLayer);\n      }\n    });\n  }\n  componentDidMount() {\n    invariant(!!google.maps.visualization, 'Did you include prop libraries={[\"visualization\"]} to <LoadScript />? %s', google.maps.visualization);\n    invariant(!!this.props.data, 'data property is required in HeatmapLayer %s', this.props.data);\n    var heatmapLayer = new google.maps.visualization.HeatmapLayer(_objectSpread(_objectSpread({}, this.props.options), {}, {\n      data: this.props.data,\n      map: this.context\n    }));\n    this.registeredEvents = applyUpdatersToPropsAndRegisterEvents({\n      updaterMap: updaterMap$4,\n      eventMap: eventMap$4,\n      prevProps: {},\n      nextProps: this.props,\n      instance: heatmapLayer\n    });\n    this.setState(function setHeatmapLayer() {\n      return {\n        heatmapLayer\n      };\n    }, this.setHeatmapLayerCallback);\n  }\n  componentDidUpdate(prevProps) {\n    unregisterEvents(this.registeredEvents);\n    this.registeredEvents = applyUpdatersToPropsAndRegisterEvents({\n      updaterMap: updaterMap$4,\n      eventMap: eventMap$4,\n      prevProps,\n      nextProps: this.props,\n      instance: this.state.heatmapLayer\n    });\n  }\n  componentWillUnmount() {\n    if (this.state.heatmapLayer !== null) {\n      if (this.props.onUnmount) {\n        this.props.onUnmount(this.state.heatmapLayer);\n      }\n      unregisterEvents(this.registeredEvents);\n      this.state.heatmapLayer.setMap(null);\n    }\n  }\n  render() {\n    return null;\n  }\n}\n_defineProperty(HeatmapLayer, \"contextType\", MapContext);\n\nvar eventMap$3 = {\n  onCloseClick: 'closeclick',\n  onPanoChanged: 'pano_changed',\n  onPositionChanged: 'position_changed',\n  onPovChanged: 'pov_changed',\n  onResize: 'resize',\n  onStatusChanged: 'status_changed',\n  onVisibleChanged: 'visible_changed',\n  onZoomChanged: 'zoom_changed'\n};\nvar updaterMap$3 = {\n  register(instance, provider, options) {\n    instance.registerPanoProvider(provider, options);\n  },\n  links(instance, links) {\n    instance.setLinks(links);\n  },\n  motionTracking(instance, motionTracking) {\n    instance.setMotionTracking(motionTracking);\n  },\n  options(instance, options) {\n    instance.setOptions(options);\n  },\n  pano(instance, pano) {\n    instance.setPano(pano);\n  },\n  position(instance, position) {\n    instance.setPosition(position);\n  },\n  pov(instance, pov) {\n    instance.setPov(pov);\n  },\n  visible(instance, visible) {\n    instance.setVisible(visible);\n  },\n  zoom(instance, zoom) {\n    instance.setZoom(zoom);\n  }\n};\nclass StreetViewPanorama extends PureComponent {\n  constructor() {\n    super(...arguments);\n    _defineProperty(this, \"registeredEvents\", []);\n    _defineProperty(this, \"state\", {\n      streetViewPanorama: null\n    });\n    _defineProperty(this, \"setStreetViewPanoramaCallback\", () => {\n      if (this.state.streetViewPanorama !== null && this.props.onLoad) {\n        this.props.onLoad(this.state.streetViewPanorama);\n      }\n    });\n  }\n  componentDidMount() {\n    var _this$context$getStre, _this$context;\n    var streetViewPanorama = (_this$context$getStre = (_this$context = this.context) === null || _this$context === void 0 ? void 0 : _this$context.getStreetView()) !== null && _this$context$getStre !== void 0 ? _this$context$getStre : null;\n    this.registeredEvents = applyUpdatersToPropsAndRegisterEvents({\n      updaterMap: updaterMap$3,\n      eventMap: eventMap$3,\n      prevProps: {},\n      nextProps: this.props,\n      instance: streetViewPanorama\n    });\n    this.setState(() => {\n      return {\n        streetViewPanorama\n      };\n    }, this.setStreetViewPanoramaCallback);\n  }\n  componentDidUpdate(prevProps) {\n    if (this.state.streetViewPanorama !== null) {\n      unregisterEvents(this.registeredEvents);\n      this.registeredEvents = applyUpdatersToPropsAndRegisterEvents({\n        updaterMap: updaterMap$3,\n        eventMap: eventMap$3,\n        prevProps,\n        nextProps: this.props,\n        instance: this.state.streetViewPanorama\n      });\n    }\n  }\n  componentWillUnmount() {\n    if (this.state.streetViewPanorama !== null) {\n      if (this.props.onUnmount) {\n        this.props.onUnmount(this.state.streetViewPanorama);\n      }\n      unregisterEvents(this.registeredEvents);\n      this.state.streetViewPanorama.setVisible(false);\n    }\n  }\n  render() {\n    return null;\n  }\n}\n_defineProperty(StreetViewPanorama, \"contextType\", MapContext);\n\nclass StreetViewService extends PureComponent {\n  constructor() {\n    super(...arguments);\n    _defineProperty(this, \"state\", {\n      streetViewService: null\n    });\n    _defineProperty(this, \"setStreetViewServiceCallback\", () => {\n      if (this.state.streetViewService !== null && this.props.onLoad) {\n        this.props.onLoad(this.state.streetViewService);\n      }\n    });\n  }\n  componentDidMount() {\n    var streetViewService = new google.maps.StreetViewService();\n    this.setState(function setStreetViewService() {\n      return {\n        streetViewService\n      };\n    }, this.setStreetViewServiceCallback);\n  }\n  componentWillUnmount() {\n    if (this.state.streetViewService !== null && this.props.onUnmount) {\n      this.props.onUnmount(this.state.streetViewService);\n    }\n  }\n  render() {\n    return null;\n  }\n}\n_defineProperty(StreetViewService, \"contextType\", MapContext);\n\nclass DirectionsService extends PureComponent {\n  constructor() {\n    super(...arguments);\n    _defineProperty(this, \"state\", {\n      directionsService: null\n    });\n    _defineProperty(this, \"setDirectionsServiceCallback\", () => {\n      if (this.state.directionsService !== null && this.props.onLoad) {\n        this.props.onLoad(this.state.directionsService);\n      }\n    });\n  }\n  componentDidMount() {\n    invariant(!!this.props.options, 'DirectionsService expected options object as parameter, but got %s', this.props.options);\n    var directionsService = new google.maps.DirectionsService();\n    this.setState(function setDirectionsService() {\n      return {\n        directionsService\n      };\n    }, this.setDirectionsServiceCallback);\n  }\n  componentDidUpdate() {\n    if (this.state.directionsService !== null) {\n      this.state.directionsService.route(this.props.options, this.props.callback);\n    }\n  }\n  componentWillUnmount() {\n    if (this.state.directionsService !== null) {\n      if (this.props.onUnmount) {\n        this.props.onUnmount(this.state.directionsService);\n      }\n    }\n  }\n  render() {\n    return null;\n  }\n}\n\nvar eventMap$2 = {\n  onDirectionsChanged: 'directions_changed'\n};\nvar updaterMap$2 = {\n  directions(instance, directions) {\n    instance.setDirections(directions);\n  },\n  map(instance, map) {\n    instance.setMap(map);\n  },\n  options(instance, options) {\n    instance.setOptions(options);\n  },\n  panel(instance, panel) {\n    instance.setPanel(panel);\n  },\n  routeIndex(instance, routeIndex) {\n    instance.setRouteIndex(routeIndex);\n  }\n};\nclass DirectionsRenderer extends PureComponent {\n  constructor() {\n    super(...arguments);\n    _defineProperty(this, \"registeredEvents\", []);\n    _defineProperty(this, \"state\", {\n      directionsRenderer: null\n    });\n    _defineProperty(this, \"setDirectionsRendererCallback\", () => {\n      if (this.state.directionsRenderer !== null) {\n        this.state.directionsRenderer.setMap(this.context);\n        if (this.props.onLoad) {\n          this.props.onLoad(this.state.directionsRenderer);\n        }\n      }\n    });\n  }\n  componentDidMount() {\n    var directionsRenderer = new google.maps.DirectionsRenderer(this.props.options);\n    this.registeredEvents = applyUpdatersToPropsAndRegisterEvents({\n      updaterMap: updaterMap$2,\n      eventMap: eventMap$2,\n      prevProps: {},\n      nextProps: this.props,\n      instance: directionsRenderer\n    });\n    this.setState(function setDirectionsRenderer() {\n      return {\n        directionsRenderer\n      };\n    }, this.setDirectionsRendererCallback);\n  }\n  componentDidUpdate(prevProps) {\n    if (this.state.directionsRenderer !== null) {\n      unregisterEvents(this.registeredEvents);\n      this.registeredEvents = applyUpdatersToPropsAndRegisterEvents({\n        updaterMap: updaterMap$2,\n        eventMap: eventMap$2,\n        prevProps,\n        nextProps: this.props,\n        instance: this.state.directionsRenderer\n      });\n    }\n  }\n  componentWillUnmount() {\n    if (this.state.directionsRenderer !== null) {\n      if (this.props.onUnmount) {\n        this.props.onUnmount(this.state.directionsRenderer);\n      }\n      unregisterEvents(this.registeredEvents);\n      if (this.state.directionsRenderer) {\n        this.state.directionsRenderer.setMap(null);\n      }\n    }\n  }\n  render() {\n    return null;\n  }\n}\n_defineProperty(DirectionsRenderer, \"contextType\", MapContext);\n\nclass DistanceMatrixService extends PureComponent {\n  constructor() {\n    super(...arguments);\n    _defineProperty(this, \"state\", {\n      distanceMatrixService: null\n    });\n    _defineProperty(this, \"setDistanceMatrixServiceCallback\", () => {\n      if (this.state.distanceMatrixService !== null && this.props.onLoad) {\n        this.props.onLoad(this.state.distanceMatrixService);\n      }\n    });\n  }\n  componentDidMount() {\n    invariant(!!this.props.options, 'DistanceMatrixService expected options object as parameter, but go %s', this.props.options);\n    var distanceMatrixService = new google.maps.DistanceMatrixService();\n    this.setState(function setDistanceMatrixService() {\n      return {\n        distanceMatrixService\n      };\n    }, this.setDistanceMatrixServiceCallback);\n  }\n  componentDidUpdate() {\n    if (this.state.distanceMatrixService !== null) {\n      this.state.distanceMatrixService.getDistanceMatrix(this.props.options, this.props.callback);\n    }\n  }\n  componentWillUnmount() {\n    if (this.state.distanceMatrixService !== null && this.props.onUnmount) {\n      this.props.onUnmount(this.state.distanceMatrixService);\n    }\n  }\n  render() {\n    return null;\n  }\n}\n\nvar eventMap$1 = {\n  onPlacesChanged: 'places_changed'\n};\nvar updaterMap$1 = {\n  bounds(instance, bounds) {\n    instance.setBounds(bounds);\n  }\n};\nclass StandaloneSearchBox extends PureComponent {\n  constructor() {\n    super(...arguments);\n    _defineProperty(this, \"registeredEvents\", []);\n    _defineProperty(this, \"containerElement\", createRef());\n    _defineProperty(this, \"state\", {\n      searchBox: null\n    });\n    _defineProperty(this, \"setSearchBoxCallback\", () => {\n      if (this.state.searchBox !== null && this.props.onLoad) {\n        this.props.onLoad(this.state.searchBox);\n      }\n    });\n  }\n  componentDidMount() {\n    invariant(!!google.maps.places, 'You need to provide libraries={[\"places\"]} prop to <LoadScript /> component %s', google.maps.places);\n    if (this.containerElement !== null && this.containerElement.current !== null) {\n      var input = this.containerElement.current.querySelector('input');\n      if (input !== null) {\n        var searchBox = new google.maps.places.SearchBox(input, this.props.options);\n        this.registeredEvents = applyUpdatersToPropsAndRegisterEvents({\n          updaterMap: updaterMap$1,\n          eventMap: eventMap$1,\n          prevProps: {},\n          nextProps: this.props,\n          instance: searchBox\n        });\n        this.setState(function setSearchBox() {\n          return {\n            searchBox\n          };\n        }, this.setSearchBoxCallback);\n      }\n    }\n  }\n  componentDidUpdate(prevProps) {\n    if (this.state.searchBox !== null) {\n      unregisterEvents(this.registeredEvents);\n      this.registeredEvents = applyUpdatersToPropsAndRegisterEvents({\n        updaterMap: updaterMap$1,\n        eventMap: eventMap$1,\n        prevProps,\n        nextProps: this.props,\n        instance: this.state.searchBox\n      });\n    }\n  }\n  componentWillUnmount() {\n    if (this.state.searchBox !== null) {\n      if (this.props.onUnmount) {\n        this.props.onUnmount(this.state.searchBox);\n      }\n      unregisterEvents(this.registeredEvents);\n    }\n  }\n  render() {\n    return jsx(\"div\", {\n      ref: this.containerElement,\n      children: Children.only(this.props.children)\n    });\n  }\n}\n_defineProperty(StandaloneSearchBox, \"contextType\", MapContext);\n\nvar eventMap = {\n  onPlaceChanged: 'place_changed'\n};\nvar updaterMap = {\n  bounds(instance, bounds) {\n    instance.setBounds(bounds);\n  },\n  restrictions(instance, restrictions) {\n    instance.setComponentRestrictions(restrictions);\n  },\n  fields(instance, fields) {\n    instance.setFields(fields);\n  },\n  options(instance, options) {\n    instance.setOptions(options);\n  },\n  types(instance, types) {\n    instance.setTypes(types);\n  }\n};\nclass Autocomplete extends PureComponent {\n  constructor() {\n    super(...arguments);\n    _defineProperty(this, \"registeredEvents\", []);\n    _defineProperty(this, \"containerElement\", createRef());\n    _defineProperty(this, \"state\", {\n      autocomplete: null\n    });\n    _defineProperty(this, \"setAutocompleteCallback\", () => {\n      if (this.state.autocomplete !== null && this.props.onLoad) {\n        this.props.onLoad(this.state.autocomplete);\n      }\n    });\n  }\n  componentDidMount() {\n    var _this$containerElemen;\n    invariant(!!google.maps.places, 'You need to provide libraries={[\"places\"]} prop to <LoadScript /> component %s', google.maps.places);\n    // TODO: why current could be equal null?\n    var input = (_this$containerElemen = this.containerElement.current) === null || _this$containerElemen === void 0 ? void 0 : _this$containerElemen.querySelector('input');\n    if (input) {\n      var autocomplete = new google.maps.places.Autocomplete(input, this.props.options);\n      this.registeredEvents = applyUpdatersToPropsAndRegisterEvents({\n        updaterMap,\n        eventMap,\n        prevProps: {},\n        nextProps: this.props,\n        instance: autocomplete\n      });\n      this.setState(() => {\n        return {\n          autocomplete\n        };\n      }, this.setAutocompleteCallback);\n    }\n  }\n  componentDidUpdate(prevProps) {\n    unregisterEvents(this.registeredEvents);\n    this.registeredEvents = applyUpdatersToPropsAndRegisterEvents({\n      updaterMap,\n      eventMap,\n      prevProps,\n      nextProps: this.props,\n      instance: this.state.autocomplete\n    });\n  }\n  componentWillUnmount() {\n    if (this.state.autocomplete !== null) {\n      unregisterEvents(this.registeredEvents);\n    }\n  }\n  render() {\n    return jsx(\"div\", {\n      ref: this.containerElement,\n      className: this.props.className,\n      children: Children.only(this.props.children)\n    });\n  }\n}\n_defineProperty(Autocomplete, \"defaultProps\", {\n  className: ''\n});\n_defineProperty(Autocomplete, \"contextType\", MapContext);\n\nexport { Autocomplete, BicyclingLayer, BicyclingLayerF, Circle, CircleF, Data, DataF, DirectionsRenderer, DirectionsService, DistanceMatrixService, DrawingManager, DrawingManagerF, FLOAT_PANE, GoogleMap, index_esm as GoogleMapsMarkerClusterer, GoogleMarkerClusterer$1 as GoogleMarkerClusterer, GroundOverlay, GroundOverlayF, HeatmapLayer, HeatmapLayerF, InfoBoxComponent as InfoBox, InfoBoxF, InfoWindow, InfoWindowF, KmlLayer, LoadScript, LoadScriptNext$1 as LoadScriptNext, MAP_PANE, MARKER_LAYER, MapContext, Marker, ClustererComponent as MarkerClusterer, MarkerClustererF, MarkerF, OVERLAY_LAYER, OVERLAY_MOUSE_TARGET, OverlayView, OverlayViewF, Polygon, PolygonF, Polyline, PolylineF, Rectangle, RectangleF, StandaloneSearchBox, StreetViewPanorama, StreetViewService, TrafficLayer, TrafficLayerF, TransitLayer, TransitLayerF, useGoogleMap, useJsApiLoader, useLoadScript };\n//# sourceMappingURL=esm.js.map\n","/** A function that accepts a potential \"extra argument\" value to be injected later,\r\n * and returns an instance of the thunk middleware that uses that value\r\n */\nfunction createThunkMiddleware(extraArgument) {\n  // Standard Redux middleware definition pattern:\n  // See: https://redux.js.org/tutorials/fundamentals/part-4-store#writing-custom-middleware\n  var middleware = function middleware(_ref) {\n    var dispatch = _ref.dispatch,\n        getState = _ref.getState;\n    return function (next) {\n      return function (action) {\n        // The thunk middleware looks for any functions that were passed to `store.dispatch`.\n        // If this \"action\" is really a function, call it and return the result.\n        if (typeof action === 'function') {\n          // Inject the store's `dispatch` and `getState` methods, as well as any \"extra arg\"\n          return action(dispatch, getState, extraArgument);\n        } // Otherwise, pass the action down the middleware chain as usual\n\n\n        return next(action);\n      };\n    };\n  };\n\n  return middleware;\n}\n\nvar thunk = createThunkMiddleware(); // Attach the factory function so users can create a customized version\n// with whatever \"extra arg\" they want to inject into their thunks\n\nthunk.withExtraArgument = createThunkMiddleware;\nexport default thunk;","var __extends = (this && this.__extends) || (function () {\r\n    var extendStatics = function (d, b) {\r\n        extendStatics = Object.setPrototypeOf ||\r\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n        return extendStatics(d, b);\r\n    };\r\n    return function (d, b) {\r\n        if (typeof b !== \"function\" && b !== null)\r\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n        extendStatics(d, b);\r\n        function __() { this.constructor = d; }\r\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n    };\r\n})();\r\nvar __generator = (this && this.__generator) || function (thisArg, body) {\r\n    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n    return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n    function verb(n) { return function (v) { return step([n, v]); }; }\r\n    function step(op) {\r\n        if (f) throw new TypeError(\"Generator is already executing.\");\r\n        while (_) try {\r\n            if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n            if (y = 0, t) op = [op[0] & 2, t.value];\r\n            switch (op[0]) {\r\n                case 0: case 1: t = op; break;\r\n                case 4: _.label++; return { value: op[1], done: false };\r\n                case 5: _.label++; y = op[1]; op = [0]; continue;\r\n                case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n                default:\r\n                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n                    if (t[2]) _.ops.pop();\r\n                    _.trys.pop(); continue;\r\n            }\r\n            op = body.call(thisArg, _);\r\n        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n    }\r\n};\r\nvar __spreadArray = (this && this.__spreadArray) || function (to, from) {\r\n    for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\r\n        to[j] = from[i];\r\n    return to;\r\n};\r\nvar __defProp = Object.defineProperty;\r\nvar __defProps = Object.defineProperties;\r\nvar __getOwnPropDescs = Object.getOwnPropertyDescriptors;\r\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\r\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\r\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\r\nvar __defNormalProp = function (obj, key, value) { return key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value: value }) : obj[key] = value; };\r\nvar __spreadValues = function (a, b) {\r\n    for (var prop in b || (b = {}))\r\n        if (__hasOwnProp.call(b, prop))\r\n            __defNormalProp(a, prop, b[prop]);\r\n    if (__getOwnPropSymbols)\r\n        for (var _i = 0, _c = __getOwnPropSymbols(b); _i < _c.length; _i++) {\r\n            var prop = _c[_i];\r\n            if (__propIsEnum.call(b, prop))\r\n                __defNormalProp(a, prop, b[prop]);\r\n        }\r\n    return a;\r\n};\r\nvar __spreadProps = function (a, b) { return __defProps(a, __getOwnPropDescs(b)); };\r\nvar __async = function (__this, __arguments, generator) {\r\n    return new Promise(function (resolve, reject) {\r\n        var fulfilled = function (value) {\r\n            try {\r\n                step(generator.next(value));\r\n            }\r\n            catch (e) {\r\n                reject(e);\r\n            }\r\n        };\r\n        var rejected = function (value) {\r\n            try {\r\n                step(generator.throw(value));\r\n            }\r\n            catch (e) {\r\n                reject(e);\r\n            }\r\n        };\r\n        var step = function (x) { return x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected); };\r\n        step((generator = generator.apply(__this, __arguments)).next());\r\n    });\r\n};\r\n// src/index.ts\r\nimport { enableES5 } from \"immer\";\r\nexport * from \"redux\";\r\nimport { default as default2, current as current2, freeze, original, isDraft as isDraft4 } from \"immer\";\r\nimport { createSelector as createSelector2 } from \"reselect\";\r\n// src/createDraftSafeSelector.ts\r\nimport { current, isDraft } from \"immer\";\r\nimport { createSelector } from \"reselect\";\r\nvar createDraftSafeSelector = function () {\r\n    var args = [];\r\n    for (var _i = 0; _i < arguments.length; _i++) {\r\n        args[_i] = arguments[_i];\r\n    }\r\n    var selector = createSelector.apply(void 0, args);\r\n    var wrappedSelector = function (value) {\r\n        var rest = [];\r\n        for (var _i = 1; _i < arguments.length; _i++) {\r\n            rest[_i - 1] = arguments[_i];\r\n        }\r\n        return selector.apply(void 0, __spreadArray([isDraft(value) ? current(value) : value], rest));\r\n    };\r\n    return wrappedSelector;\r\n};\r\n// src/configureStore.ts\r\nimport { createStore, compose as compose2, applyMiddleware, combineReducers } from \"redux\";\r\n// src/devtoolsExtension.ts\r\nimport { compose } from \"redux\";\r\nvar composeWithDevTools = typeof window !== \"undefined\" && window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ ? window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ : function () {\r\n    if (arguments.length === 0)\r\n        return void 0;\r\n    if (typeof arguments[0] === \"object\")\r\n        return compose;\r\n    return compose.apply(null, arguments);\r\n};\r\nvar devToolsEnhancer = typeof window !== \"undefined\" && window.__REDUX_DEVTOOLS_EXTENSION__ ? window.__REDUX_DEVTOOLS_EXTENSION__ : function () {\r\n    return function (noop2) {\r\n        return noop2;\r\n    };\r\n};\r\n// src/isPlainObject.ts\r\nfunction isPlainObject(value) {\r\n    if (typeof value !== \"object\" || value === null)\r\n        return false;\r\n    var proto = Object.getPrototypeOf(value);\r\n    if (proto === null)\r\n        return true;\r\n    var baseProto = proto;\r\n    while (Object.getPrototypeOf(baseProto) !== null) {\r\n        baseProto = Object.getPrototypeOf(baseProto);\r\n    }\r\n    return proto === baseProto;\r\n}\r\n// src/getDefaultMiddleware.ts\r\nimport thunkMiddleware from \"redux-thunk\";\r\n// src/utils.ts\r\nimport createNextState, { isDraftable } from \"immer\";\r\nfunction getTimeMeasureUtils(maxDelay, fnName) {\r\n    var elapsed = 0;\r\n    return {\r\n        measureTime: function (fn) {\r\n            var started = Date.now();\r\n            try {\r\n                return fn();\r\n            }\r\n            finally {\r\n                var finished = Date.now();\r\n                elapsed += finished - started;\r\n            }\r\n        },\r\n        warnIfExceeded: function () {\r\n            if (elapsed > maxDelay) {\r\n                console.warn(fnName + \" took \" + elapsed + \"ms, which is more than the warning threshold of \" + maxDelay + \"ms. \\nIf your state or actions are very large, you may want to disable the middleware as it might cause too much of a slowdown in development mode. See https://redux-toolkit.js.org/api/getDefaultMiddleware for instructions.\\nIt is disabled in production builds, so you don't need to worry about that.\");\r\n            }\r\n        }\r\n    };\r\n}\r\nvar MiddlewareArray = /** @class */ (function (_super) {\r\n    __extends(MiddlewareArray, _super);\r\n    function MiddlewareArray() {\r\n        var args = [];\r\n        for (var _i = 0; _i < arguments.length; _i++) {\r\n            args[_i] = arguments[_i];\r\n        }\r\n        var _this = _super.apply(this, args) || this;\r\n        Object.setPrototypeOf(_this, MiddlewareArray.prototype);\r\n        return _this;\r\n    }\r\n    Object.defineProperty(MiddlewareArray, Symbol.species, {\r\n        get: function () {\r\n            return MiddlewareArray;\r\n        },\r\n        enumerable: false,\r\n        configurable: true\r\n    });\r\n    MiddlewareArray.prototype.concat = function () {\r\n        var arr = [];\r\n        for (var _i = 0; _i < arguments.length; _i++) {\r\n            arr[_i] = arguments[_i];\r\n        }\r\n        return _super.prototype.concat.apply(this, arr);\r\n    };\r\n    MiddlewareArray.prototype.prepend = function () {\r\n        var arr = [];\r\n        for (var _i = 0; _i < arguments.length; _i++) {\r\n            arr[_i] = arguments[_i];\r\n        }\r\n        if (arr.length === 1 && Array.isArray(arr[0])) {\r\n            return new (MiddlewareArray.bind.apply(MiddlewareArray, __spreadArray([void 0], arr[0].concat(this))))();\r\n        }\r\n        return new (MiddlewareArray.bind.apply(MiddlewareArray, __spreadArray([void 0], arr.concat(this))))();\r\n    };\r\n    return MiddlewareArray;\r\n}(Array));\r\nfunction freezeDraftable(val) {\r\n    return isDraftable(val) ? createNextState(val, function () {\r\n    }) : val;\r\n}\r\n// src/immutableStateInvariantMiddleware.ts\r\nvar isProduction = process.env.NODE_ENV === \"production\";\r\nvar prefix = \"Invariant failed\";\r\nfunction invariant(condition, message) {\r\n    if (condition) {\r\n        return;\r\n    }\r\n    if (isProduction) {\r\n        throw new Error(prefix);\r\n    }\r\n    throw new Error(prefix + \": \" + (message || \"\"));\r\n}\r\nfunction stringify(obj, serializer, indent, decycler) {\r\n    return JSON.stringify(obj, getSerialize(serializer, decycler), indent);\r\n}\r\nfunction getSerialize(serializer, decycler) {\r\n    var stack = [], keys = [];\r\n    if (!decycler)\r\n        decycler = function (_, value) {\r\n            if (stack[0] === value)\r\n                return \"[Circular ~]\";\r\n            return \"[Circular ~.\" + keys.slice(0, stack.indexOf(value)).join(\".\") + \"]\";\r\n        };\r\n    return function (key, value) {\r\n        if (stack.length > 0) {\r\n            var thisPos = stack.indexOf(this);\r\n            ~thisPos ? stack.splice(thisPos + 1) : stack.push(this);\r\n            ~thisPos ? keys.splice(thisPos, Infinity, key) : keys.push(key);\r\n            if (~stack.indexOf(value))\r\n                value = decycler.call(this, key, value);\r\n        }\r\n        else\r\n            stack.push(value);\r\n        return serializer == null ? value : serializer.call(this, key, value);\r\n    };\r\n}\r\nfunction isImmutableDefault(value) {\r\n    return typeof value !== \"object\" || value == null || Object.isFrozen(value);\r\n}\r\nfunction trackForMutations(isImmutable, ignorePaths, obj) {\r\n    var trackedProperties = trackProperties(isImmutable, ignorePaths, obj);\r\n    return {\r\n        detectMutations: function () {\r\n            return detectMutations(isImmutable, ignorePaths, trackedProperties, obj);\r\n        }\r\n    };\r\n}\r\nfunction trackProperties(isImmutable, ignorePaths, obj, path) {\r\n    if (ignorePaths === void 0) { ignorePaths = []; }\r\n    if (path === void 0) { path = \"\"; }\r\n    var tracked = { value: obj };\r\n    if (!isImmutable(obj)) {\r\n        tracked.children = {};\r\n        for (var key in obj) {\r\n            var childPath = path ? path + \".\" + key : key;\r\n            if (ignorePaths.length && ignorePaths.indexOf(childPath) !== -1) {\r\n                continue;\r\n            }\r\n            tracked.children[key] = trackProperties(isImmutable, ignorePaths, obj[key], childPath);\r\n        }\r\n    }\r\n    return tracked;\r\n}\r\nfunction detectMutations(isImmutable, ignoredPaths, trackedProperty, obj, sameParentRef, path) {\r\n    if (ignoredPaths === void 0) { ignoredPaths = []; }\r\n    if (sameParentRef === void 0) { sameParentRef = false; }\r\n    if (path === void 0) { path = \"\"; }\r\n    var prevObj = trackedProperty ? trackedProperty.value : void 0;\r\n    var sameRef = prevObj === obj;\r\n    if (sameParentRef && !sameRef && !Number.isNaN(obj)) {\r\n        return { wasMutated: true, path: path };\r\n    }\r\n    if (isImmutable(prevObj) || isImmutable(obj)) {\r\n        return { wasMutated: false };\r\n    }\r\n    var keysToDetect = {};\r\n    for (var key in trackedProperty.children) {\r\n        keysToDetect[key] = true;\r\n    }\r\n    for (var key in obj) {\r\n        keysToDetect[key] = true;\r\n    }\r\n    var hasIgnoredPaths = ignoredPaths.length > 0;\r\n    var _loop_1 = function (key) {\r\n        var nestedPath = path ? path + \".\" + key : key;\r\n        if (hasIgnoredPaths) {\r\n            var hasMatches = ignoredPaths.some(function (ignored) {\r\n                if (ignored instanceof RegExp) {\r\n                    return ignored.test(nestedPath);\r\n                }\r\n                return nestedPath === ignored;\r\n            });\r\n            if (hasMatches) {\r\n                return \"continue\";\r\n            }\r\n        }\r\n        var result = detectMutations(isImmutable, ignoredPaths, trackedProperty.children[key], obj[key], sameRef, nestedPath);\r\n        if (result.wasMutated) {\r\n            return { value: result };\r\n        }\r\n    };\r\n    for (var key in keysToDetect) {\r\n        var state_1 = _loop_1(key);\r\n        if (typeof state_1 === \"object\")\r\n            return state_1.value;\r\n    }\r\n    return { wasMutated: false };\r\n}\r\nfunction createImmutableStateInvariantMiddleware(options) {\r\n    if (options === void 0) { options = {}; }\r\n    if (process.env.NODE_ENV === \"production\") {\r\n        return function () { return function (next) { return function (action) { return next(action); }; }; };\r\n    }\r\n    var _c = options.isImmutable, isImmutable = _c === void 0 ? isImmutableDefault : _c, ignoredPaths = options.ignoredPaths, _d = options.warnAfter, warnAfter = _d === void 0 ? 32 : _d, ignore = options.ignore;\r\n    ignoredPaths = ignoredPaths || ignore;\r\n    var track = trackForMutations.bind(null, isImmutable, ignoredPaths);\r\n    return function (_c) {\r\n        var getState = _c.getState;\r\n        var state = getState();\r\n        var tracker = track(state);\r\n        var result;\r\n        return function (next) { return function (action) {\r\n            var measureUtils = getTimeMeasureUtils(warnAfter, \"ImmutableStateInvariantMiddleware\");\r\n            measureUtils.measureTime(function () {\r\n                state = getState();\r\n                result = tracker.detectMutations();\r\n                tracker = track(state);\r\n                invariant(!result.wasMutated, \"A state mutation was detected between dispatches, in the path '\" + (result.path || \"\") + \"'.  This may cause incorrect behavior. (https://redux.js.org/style-guide/style-guide#do-not-mutate-state)\");\r\n            });\r\n            var dispatchedAction = next(action);\r\n            measureUtils.measureTime(function () {\r\n                state = getState();\r\n                result = tracker.detectMutations();\r\n                tracker = track(state);\r\n                result.wasMutated && invariant(!result.wasMutated, \"A state mutation was detected inside a dispatch, in the path: \" + (result.path || \"\") + \". Take a look at the reducer(s) handling the action \" + stringify(action) + \". (https://redux.js.org/style-guide/style-guide#do-not-mutate-state)\");\r\n            });\r\n            measureUtils.warnIfExceeded();\r\n            return dispatchedAction;\r\n        }; };\r\n    };\r\n}\r\n// src/serializableStateInvariantMiddleware.ts\r\nfunction isPlain(val) {\r\n    var type = typeof val;\r\n    return val == null || type === \"string\" || type === \"boolean\" || type === \"number\" || Array.isArray(val) || isPlainObject(val);\r\n}\r\nfunction findNonSerializableValue(value, path, isSerializable, getEntries, ignoredPaths, cache) {\r\n    if (path === void 0) { path = \"\"; }\r\n    if (isSerializable === void 0) { isSerializable = isPlain; }\r\n    if (ignoredPaths === void 0) { ignoredPaths = []; }\r\n    var foundNestedSerializable;\r\n    if (!isSerializable(value)) {\r\n        return {\r\n            keyPath: path || \"<root>\",\r\n            value: value\r\n        };\r\n    }\r\n    if (typeof value !== \"object\" || value === null) {\r\n        return false;\r\n    }\r\n    if (cache == null ? void 0 : cache.has(value))\r\n        return false;\r\n    var entries = getEntries != null ? getEntries(value) : Object.entries(value);\r\n    var hasIgnoredPaths = ignoredPaths.length > 0;\r\n    var _loop_2 = function (key, nestedValue) {\r\n        var nestedPath = path ? path + \".\" + key : key;\r\n        if (hasIgnoredPaths) {\r\n            var hasMatches = ignoredPaths.some(function (ignored) {\r\n                if (ignored instanceof RegExp) {\r\n                    return ignored.test(nestedPath);\r\n                }\r\n                return nestedPath === ignored;\r\n            });\r\n            if (hasMatches) {\r\n                return \"continue\";\r\n            }\r\n        }\r\n        if (!isSerializable(nestedValue)) {\r\n            return { value: {\r\n                    keyPath: nestedPath,\r\n                    value: nestedValue\r\n                } };\r\n        }\r\n        if (typeof nestedValue === \"object\") {\r\n            foundNestedSerializable = findNonSerializableValue(nestedValue, nestedPath, isSerializable, getEntries, ignoredPaths, cache);\r\n            if (foundNestedSerializable) {\r\n                return { value: foundNestedSerializable };\r\n            }\r\n        }\r\n    };\r\n    for (var _i = 0, entries_1 = entries; _i < entries_1.length; _i++) {\r\n        var _c = entries_1[_i], key = _c[0], nestedValue = _c[1];\r\n        var state_2 = _loop_2(key, nestedValue);\r\n        if (typeof state_2 === \"object\")\r\n            return state_2.value;\r\n    }\r\n    if (cache && isNestedFrozen(value))\r\n        cache.add(value);\r\n    return false;\r\n}\r\nfunction isNestedFrozen(value) {\r\n    if (!Object.isFrozen(value))\r\n        return false;\r\n    for (var _i = 0, _c = Object.values(value); _i < _c.length; _i++) {\r\n        var nestedValue = _c[_i];\r\n        if (typeof nestedValue !== \"object\" || nestedValue === null)\r\n            continue;\r\n        if (!isNestedFrozen(nestedValue))\r\n            return false;\r\n    }\r\n    return true;\r\n}\r\nfunction createSerializableStateInvariantMiddleware(options) {\r\n    if (options === void 0) { options = {}; }\r\n    if (process.env.NODE_ENV === \"production\") {\r\n        return function () { return function (next) { return function (action) { return next(action); }; }; };\r\n    }\r\n    var _c = options.isSerializable, isSerializable = _c === void 0 ? isPlain : _c, getEntries = options.getEntries, _d = options.ignoredActions, ignoredActions = _d === void 0 ? [] : _d, _e = options.ignoredActionPaths, ignoredActionPaths = _e === void 0 ? [\"meta.arg\", \"meta.baseQueryMeta\"] : _e, _f = options.ignoredPaths, ignoredPaths = _f === void 0 ? [] : _f, _g = options.warnAfter, warnAfter = _g === void 0 ? 32 : _g, _h = options.ignoreState, ignoreState = _h === void 0 ? false : _h, _j = options.ignoreActions, ignoreActions = _j === void 0 ? false : _j, _k = options.disableCache, disableCache = _k === void 0 ? false : _k;\r\n    var cache = !disableCache && WeakSet ? new WeakSet() : void 0;\r\n    return function (storeAPI) { return function (next) { return function (action) {\r\n        var result = next(action);\r\n        var measureUtils = getTimeMeasureUtils(warnAfter, \"SerializableStateInvariantMiddleware\");\r\n        if (!ignoreActions && !(ignoredActions.length && ignoredActions.indexOf(action.type) !== -1)) {\r\n            measureUtils.measureTime(function () {\r\n                var foundActionNonSerializableValue = findNonSerializableValue(action, \"\", isSerializable, getEntries, ignoredActionPaths, cache);\r\n                if (foundActionNonSerializableValue) {\r\n                    var keyPath = foundActionNonSerializableValue.keyPath, value = foundActionNonSerializableValue.value;\r\n                    console.error(\"A non-serializable value was detected in an action, in the path: `\" + keyPath + \"`. Value:\", value, \"\\nTake a look at the logic that dispatched this action: \", action, \"\\n(See https://redux.js.org/faq/actions#why-should-type-be-a-string-or-at-least-serializable-why-should-my-action-types-be-constants)\", \"\\n(To allow non-serializable values see: https://redux-toolkit.js.org/usage/usage-guide#working-with-non-serializable-data)\");\r\n                }\r\n            });\r\n        }\r\n        if (!ignoreState) {\r\n            measureUtils.measureTime(function () {\r\n                var state = storeAPI.getState();\r\n                var foundStateNonSerializableValue = findNonSerializableValue(state, \"\", isSerializable, getEntries, ignoredPaths, cache);\r\n                if (foundStateNonSerializableValue) {\r\n                    var keyPath = foundStateNonSerializableValue.keyPath, value = foundStateNonSerializableValue.value;\r\n                    console.error(\"A non-serializable value was detected in the state, in the path: `\" + keyPath + \"`. Value:\", value, \"\\nTake a look at the reducer(s) handling this action type: \" + action.type + \".\\n(See https://redux.js.org/faq/organizing-state#can-i-put-functions-promises-or-other-non-serializable-items-in-my-store-state)\");\r\n                }\r\n            });\r\n            measureUtils.warnIfExceeded();\r\n        }\r\n        return result;\r\n    }; }; };\r\n}\r\n// src/getDefaultMiddleware.ts\r\nfunction isBoolean(x) {\r\n    return typeof x === \"boolean\";\r\n}\r\nfunction curryGetDefaultMiddleware() {\r\n    return function curriedGetDefaultMiddleware(options) {\r\n        return getDefaultMiddleware(options);\r\n    };\r\n}\r\nfunction getDefaultMiddleware(options) {\r\n    if (options === void 0) { options = {}; }\r\n    var _c = options.thunk, thunk = _c === void 0 ? true : _c, _d = options.immutableCheck, immutableCheck = _d === void 0 ? true : _d, _e = options.serializableCheck, serializableCheck = _e === void 0 ? true : _e;\r\n    var middlewareArray = new MiddlewareArray();\r\n    if (thunk) {\r\n        if (isBoolean(thunk)) {\r\n            middlewareArray.push(thunkMiddleware);\r\n        }\r\n        else {\r\n            middlewareArray.push(thunkMiddleware.withExtraArgument(thunk.extraArgument));\r\n        }\r\n    }\r\n    if (process.env.NODE_ENV !== \"production\") {\r\n        if (immutableCheck) {\r\n            var immutableOptions = {};\r\n            if (!isBoolean(immutableCheck)) {\r\n                immutableOptions = immutableCheck;\r\n            }\r\n            middlewareArray.unshift(createImmutableStateInvariantMiddleware(immutableOptions));\r\n        }\r\n        if (serializableCheck) {\r\n            var serializableOptions = {};\r\n            if (!isBoolean(serializableCheck)) {\r\n                serializableOptions = serializableCheck;\r\n            }\r\n            middlewareArray.push(createSerializableStateInvariantMiddleware(serializableOptions));\r\n        }\r\n    }\r\n    return middlewareArray;\r\n}\r\n// src/configureStore.ts\r\nvar IS_PRODUCTION = process.env.NODE_ENV === \"production\";\r\nfunction configureStore(options) {\r\n    var curriedGetDefaultMiddleware = curryGetDefaultMiddleware();\r\n    var _c = options || {}, _d = _c.reducer, reducer = _d === void 0 ? void 0 : _d, _e = _c.middleware, middleware = _e === void 0 ? curriedGetDefaultMiddleware() : _e, _f = _c.devTools, devTools = _f === void 0 ? true : _f, _g = _c.preloadedState, preloadedState = _g === void 0 ? void 0 : _g, _h = _c.enhancers, enhancers = _h === void 0 ? void 0 : _h;\r\n    var rootReducer;\r\n    if (typeof reducer === \"function\") {\r\n        rootReducer = reducer;\r\n    }\r\n    else if (isPlainObject(reducer)) {\r\n        rootReducer = combineReducers(reducer);\r\n    }\r\n    else {\r\n        throw new Error('\"reducer\" is a required argument, and must be a function or an object of functions that can be passed to combineReducers');\r\n    }\r\n    var finalMiddleware = middleware;\r\n    if (typeof finalMiddleware === \"function\") {\r\n        finalMiddleware = finalMiddleware(curriedGetDefaultMiddleware);\r\n        if (!IS_PRODUCTION && !Array.isArray(finalMiddleware)) {\r\n            throw new Error(\"when using a middleware builder function, an array of middleware must be returned\");\r\n        }\r\n    }\r\n    if (!IS_PRODUCTION && finalMiddleware.some(function (item) { return typeof item !== \"function\"; })) {\r\n        throw new Error(\"each middleware provided to configureStore must be a function\");\r\n    }\r\n    var middlewareEnhancer = applyMiddleware.apply(void 0, finalMiddleware);\r\n    var finalCompose = compose2;\r\n    if (devTools) {\r\n        finalCompose = composeWithDevTools(__spreadValues({\r\n            trace: !IS_PRODUCTION\r\n        }, typeof devTools === \"object\" && devTools));\r\n    }\r\n    var storeEnhancers = [middlewareEnhancer];\r\n    if (Array.isArray(enhancers)) {\r\n        storeEnhancers = __spreadArray([middlewareEnhancer], enhancers);\r\n    }\r\n    else if (typeof enhancers === \"function\") {\r\n        storeEnhancers = enhancers(storeEnhancers);\r\n    }\r\n    var composedEnhancer = finalCompose.apply(void 0, storeEnhancers);\r\n    return createStore(rootReducer, preloadedState, composedEnhancer);\r\n}\r\n// src/createAction.ts\r\nfunction createAction(type, prepareAction) {\r\n    function actionCreator() {\r\n        var args = [];\r\n        for (var _i = 0; _i < arguments.length; _i++) {\r\n            args[_i] = arguments[_i];\r\n        }\r\n        if (prepareAction) {\r\n            var prepared = prepareAction.apply(void 0, args);\r\n            if (!prepared) {\r\n                throw new Error(\"prepareAction did not return an object\");\r\n            }\r\n            return __spreadValues(__spreadValues({\r\n                type: type,\r\n                payload: prepared.payload\r\n            }, \"meta\" in prepared && { meta: prepared.meta }), \"error\" in prepared && { error: prepared.error });\r\n        }\r\n        return { type: type, payload: args[0] };\r\n    }\r\n    actionCreator.toString = function () { return \"\" + type; };\r\n    actionCreator.type = type;\r\n    actionCreator.match = function (action) { return action.type === type; };\r\n    return actionCreator;\r\n}\r\nfunction isFSA(action) {\r\n    return isPlainObject(action) && typeof action.type === \"string\" && Object.keys(action).every(isValidKey);\r\n}\r\nfunction isValidKey(key) {\r\n    return [\"type\", \"payload\", \"error\", \"meta\"].indexOf(key) > -1;\r\n}\r\nfunction getType(actionCreator) {\r\n    return \"\" + actionCreator;\r\n}\r\n// src/createReducer.ts\r\nimport createNextState2, { isDraft as isDraft2, isDraftable as isDraftable2 } from \"immer\";\r\n// src/mapBuilders.ts\r\nfunction executeReducerBuilderCallback(builderCallback) {\r\n    var actionsMap = {};\r\n    var actionMatchers = [];\r\n    var defaultCaseReducer;\r\n    var builder = {\r\n        addCase: function (typeOrActionCreator, reducer) {\r\n            if (process.env.NODE_ENV !== \"production\") {\r\n                if (actionMatchers.length > 0) {\r\n                    throw new Error(\"`builder.addCase` should only be called before calling `builder.addMatcher`\");\r\n                }\r\n                if (defaultCaseReducer) {\r\n                    throw new Error(\"`builder.addCase` should only be called before calling `builder.addDefaultCase`\");\r\n                }\r\n            }\r\n            var type = typeof typeOrActionCreator === \"string\" ? typeOrActionCreator : typeOrActionCreator.type;\r\n            if (type in actionsMap) {\r\n                throw new Error(\"addCase cannot be called with two reducers for the same action type\");\r\n            }\r\n            actionsMap[type] = reducer;\r\n            return builder;\r\n        },\r\n        addMatcher: function (matcher, reducer) {\r\n            if (process.env.NODE_ENV !== \"production\") {\r\n                if (defaultCaseReducer) {\r\n                    throw new Error(\"`builder.addMatcher` should only be called before calling `builder.addDefaultCase`\");\r\n                }\r\n            }\r\n            actionMatchers.push({ matcher: matcher, reducer: reducer });\r\n            return builder;\r\n        },\r\n        addDefaultCase: function (reducer) {\r\n            if (process.env.NODE_ENV !== \"production\") {\r\n                if (defaultCaseReducer) {\r\n                    throw new Error(\"`builder.addDefaultCase` can only be called once\");\r\n                }\r\n            }\r\n            defaultCaseReducer = reducer;\r\n            return builder;\r\n        }\r\n    };\r\n    builderCallback(builder);\r\n    return [actionsMap, actionMatchers, defaultCaseReducer];\r\n}\r\n// src/createReducer.ts\r\nfunction isStateFunction(x) {\r\n    return typeof x === \"function\";\r\n}\r\nvar hasWarnedAboutObjectNotation = false;\r\nfunction createReducer(initialState, mapOrBuilderCallback, actionMatchers, defaultCaseReducer) {\r\n    if (actionMatchers === void 0) { actionMatchers = []; }\r\n    if (process.env.NODE_ENV !== \"production\") {\r\n        if (typeof mapOrBuilderCallback === \"object\") {\r\n            if (!hasWarnedAboutObjectNotation) {\r\n                hasWarnedAboutObjectNotation = true;\r\n                console.warn(\"The object notation for `createReducer` is deprecated, and will be removed in RTK 2.0. Please use the 'builder callback' notation instead: https://redux-toolkit.js.org/api/createReducer\");\r\n            }\r\n        }\r\n    }\r\n    var _c = typeof mapOrBuilderCallback === \"function\" ? executeReducerBuilderCallback(mapOrBuilderCallback) : [mapOrBuilderCallback, actionMatchers, defaultCaseReducer], actionsMap = _c[0], finalActionMatchers = _c[1], finalDefaultCaseReducer = _c[2];\r\n    var getInitialState;\r\n    if (isStateFunction(initialState)) {\r\n        getInitialState = function () { return freezeDraftable(initialState()); };\r\n    }\r\n    else {\r\n        var frozenInitialState_1 = freezeDraftable(initialState);\r\n        getInitialState = function () { return frozenInitialState_1; };\r\n    }\r\n    function reducer(state, action) {\r\n        if (state === void 0) { state = getInitialState(); }\r\n        var caseReducers = __spreadArray([\r\n            actionsMap[action.type]\r\n        ], finalActionMatchers.filter(function (_c) {\r\n            var matcher = _c.matcher;\r\n            return matcher(action);\r\n        }).map(function (_c) {\r\n            var reducer2 = _c.reducer;\r\n            return reducer2;\r\n        }));\r\n        if (caseReducers.filter(function (cr) { return !!cr; }).length === 0) {\r\n            caseReducers = [finalDefaultCaseReducer];\r\n        }\r\n        return caseReducers.reduce(function (previousState, caseReducer) {\r\n            if (caseReducer) {\r\n                if (isDraft2(previousState)) {\r\n                    var draft = previousState;\r\n                    var result = caseReducer(draft, action);\r\n                    if (result === void 0) {\r\n                        return previousState;\r\n                    }\r\n                    return result;\r\n                }\r\n                else if (!isDraftable2(previousState)) {\r\n                    var result = caseReducer(previousState, action);\r\n                    if (result === void 0) {\r\n                        if (previousState === null) {\r\n                            return previousState;\r\n                        }\r\n                        throw Error(\"A case reducer on a non-draftable value must not return undefined\");\r\n                    }\r\n                    return result;\r\n                }\r\n                else {\r\n                    return createNextState2(previousState, function (draft) {\r\n                        return caseReducer(draft, action);\r\n                    });\r\n                }\r\n            }\r\n            return previousState;\r\n        }, state);\r\n    }\r\n    reducer.getInitialState = getInitialState;\r\n    return reducer;\r\n}\r\n// src/createSlice.ts\r\nvar hasWarnedAboutObjectNotation2 = false;\r\nfunction getType2(slice, actionKey) {\r\n    return slice + \"/\" + actionKey;\r\n}\r\nfunction createSlice(options) {\r\n    var name = options.name;\r\n    if (!name) {\r\n        throw new Error(\"`name` is a required option for createSlice\");\r\n    }\r\n    if (typeof process !== \"undefined\" && process.env.NODE_ENV === \"development\") {\r\n        if (options.initialState === void 0) {\r\n            console.error(\"You must provide an `initialState` value that is not `undefined`. You may have misspelled `initialState`\");\r\n        }\r\n    }\r\n    var initialState = typeof options.initialState == \"function\" ? options.initialState : freezeDraftable(options.initialState);\r\n    var reducers = options.reducers || {};\r\n    var reducerNames = Object.keys(reducers);\r\n    var sliceCaseReducersByName = {};\r\n    var sliceCaseReducersByType = {};\r\n    var actionCreators = {};\r\n    reducerNames.forEach(function (reducerName) {\r\n        var maybeReducerWithPrepare = reducers[reducerName];\r\n        var type = getType2(name, reducerName);\r\n        var caseReducer;\r\n        var prepareCallback;\r\n        if (\"reducer\" in maybeReducerWithPrepare) {\r\n            caseReducer = maybeReducerWithPrepare.reducer;\r\n            prepareCallback = maybeReducerWithPrepare.prepare;\r\n        }\r\n        else {\r\n            caseReducer = maybeReducerWithPrepare;\r\n        }\r\n        sliceCaseReducersByName[reducerName] = caseReducer;\r\n        sliceCaseReducersByType[type] = caseReducer;\r\n        actionCreators[reducerName] = prepareCallback ? createAction(type, prepareCallback) : createAction(type);\r\n    });\r\n    function buildReducer() {\r\n        if (process.env.NODE_ENV !== \"production\") {\r\n            if (typeof options.extraReducers === \"object\") {\r\n                if (!hasWarnedAboutObjectNotation2) {\r\n                    hasWarnedAboutObjectNotation2 = true;\r\n                    console.warn(\"The object notation for `createSlice.extraReducers` is deprecated, and will be removed in RTK 2.0. Please use the 'builder callback' notation instead: https://redux-toolkit.js.org/api/createSlice\");\r\n                }\r\n            }\r\n        }\r\n        var _c = typeof options.extraReducers === \"function\" ? executeReducerBuilderCallback(options.extraReducers) : [options.extraReducers], _d = _c[0], extraReducers = _d === void 0 ? {} : _d, _e = _c[1], actionMatchers = _e === void 0 ? [] : _e, _f = _c[2], defaultCaseReducer = _f === void 0 ? void 0 : _f;\r\n        var finalCaseReducers = __spreadValues(__spreadValues({}, extraReducers), sliceCaseReducersByType);\r\n        return createReducer(initialState, function (builder) {\r\n            for (var key in finalCaseReducers) {\r\n                builder.addCase(key, finalCaseReducers[key]);\r\n            }\r\n            for (var _i = 0, actionMatchers_1 = actionMatchers; _i < actionMatchers_1.length; _i++) {\r\n                var m = actionMatchers_1[_i];\r\n                builder.addMatcher(m.matcher, m.reducer);\r\n            }\r\n            if (defaultCaseReducer) {\r\n                builder.addDefaultCase(defaultCaseReducer);\r\n            }\r\n        });\r\n    }\r\n    var _reducer;\r\n    return {\r\n        name: name,\r\n        reducer: function (state, action) {\r\n            if (!_reducer)\r\n                _reducer = buildReducer();\r\n            return _reducer(state, action);\r\n        },\r\n        actions: actionCreators,\r\n        caseReducers: sliceCaseReducersByName,\r\n        getInitialState: function () {\r\n            if (!_reducer)\r\n                _reducer = buildReducer();\r\n            return _reducer.getInitialState();\r\n        }\r\n    };\r\n}\r\n// src/entities/entity_state.ts\r\nfunction getInitialEntityState() {\r\n    return {\r\n        ids: [],\r\n        entities: {}\r\n    };\r\n}\r\nfunction createInitialStateFactory() {\r\n    function getInitialState(additionalState) {\r\n        if (additionalState === void 0) { additionalState = {}; }\r\n        return Object.assign(getInitialEntityState(), additionalState);\r\n    }\r\n    return { getInitialState: getInitialState };\r\n}\r\n// src/entities/state_selectors.ts\r\nfunction createSelectorsFactory() {\r\n    function getSelectors(selectState) {\r\n        var selectIds = function (state) { return state.ids; };\r\n        var selectEntities = function (state) { return state.entities; };\r\n        var selectAll = createDraftSafeSelector(selectIds, selectEntities, function (ids, entities) { return ids.map(function (id) { return entities[id]; }); });\r\n        var selectId = function (_, id) { return id; };\r\n        var selectById = function (entities, id) { return entities[id]; };\r\n        var selectTotal = createDraftSafeSelector(selectIds, function (ids) { return ids.length; });\r\n        if (!selectState) {\r\n            return {\r\n                selectIds: selectIds,\r\n                selectEntities: selectEntities,\r\n                selectAll: selectAll,\r\n                selectTotal: selectTotal,\r\n                selectById: createDraftSafeSelector(selectEntities, selectId, selectById)\r\n            };\r\n        }\r\n        var selectGlobalizedEntities = createDraftSafeSelector(selectState, selectEntities);\r\n        return {\r\n            selectIds: createDraftSafeSelector(selectState, selectIds),\r\n            selectEntities: selectGlobalizedEntities,\r\n            selectAll: createDraftSafeSelector(selectState, selectAll),\r\n            selectTotal: createDraftSafeSelector(selectState, selectTotal),\r\n            selectById: createDraftSafeSelector(selectGlobalizedEntities, selectId, selectById)\r\n        };\r\n    }\r\n    return { getSelectors: getSelectors };\r\n}\r\n// src/entities/state_adapter.ts\r\nimport createNextState3, { isDraft as isDraft3 } from \"immer\";\r\nfunction createSingleArgumentStateOperator(mutator) {\r\n    var operator = createStateOperator(function (_, state) { return mutator(state); });\r\n    return function operation(state) {\r\n        return operator(state, void 0);\r\n    };\r\n}\r\nfunction createStateOperator(mutator) {\r\n    return function operation(state, arg) {\r\n        function isPayloadActionArgument(arg2) {\r\n            return isFSA(arg2);\r\n        }\r\n        var runMutator = function (draft) {\r\n            if (isPayloadActionArgument(arg)) {\r\n                mutator(arg.payload, draft);\r\n            }\r\n            else {\r\n                mutator(arg, draft);\r\n            }\r\n        };\r\n        if (isDraft3(state)) {\r\n            runMutator(state);\r\n            return state;\r\n        }\r\n        else {\r\n            return createNextState3(state, runMutator);\r\n        }\r\n    };\r\n}\r\n// src/entities/utils.ts\r\nfunction selectIdValue(entity, selectId) {\r\n    var key = selectId(entity);\r\n    if (process.env.NODE_ENV !== \"production\" && key === void 0) {\r\n        console.warn(\"The entity passed to the `selectId` implementation returned undefined.\", \"You should probably provide your own `selectId` implementation.\", \"The entity that was passed:\", entity, \"The `selectId` implementation:\", selectId.toString());\r\n    }\r\n    return key;\r\n}\r\nfunction ensureEntitiesArray(entities) {\r\n    if (!Array.isArray(entities)) {\r\n        entities = Object.values(entities);\r\n    }\r\n    return entities;\r\n}\r\nfunction splitAddedUpdatedEntities(newEntities, selectId, state) {\r\n    newEntities = ensureEntitiesArray(newEntities);\r\n    var added = [];\r\n    var updated = [];\r\n    for (var _i = 0, newEntities_1 = newEntities; _i < newEntities_1.length; _i++) {\r\n        var entity = newEntities_1[_i];\r\n        var id = selectIdValue(entity, selectId);\r\n        if (id in state.entities) {\r\n            updated.push({ id: id, changes: entity });\r\n        }\r\n        else {\r\n            added.push(entity);\r\n        }\r\n    }\r\n    return [added, updated];\r\n}\r\n// src/entities/unsorted_state_adapter.ts\r\nfunction createUnsortedStateAdapter(selectId) {\r\n    function addOneMutably(entity, state) {\r\n        var key = selectIdValue(entity, selectId);\r\n        if (key in state.entities) {\r\n            return;\r\n        }\r\n        state.ids.push(key);\r\n        state.entities[key] = entity;\r\n    }\r\n    function addManyMutably(newEntities, state) {\r\n        newEntities = ensureEntitiesArray(newEntities);\r\n        for (var _i = 0, newEntities_2 = newEntities; _i < newEntities_2.length; _i++) {\r\n            var entity = newEntities_2[_i];\r\n            addOneMutably(entity, state);\r\n        }\r\n    }\r\n    function setOneMutably(entity, state) {\r\n        var key = selectIdValue(entity, selectId);\r\n        if (!(key in state.entities)) {\r\n            state.ids.push(key);\r\n        }\r\n        state.entities[key] = entity;\r\n    }\r\n    function setManyMutably(newEntities, state) {\r\n        newEntities = ensureEntitiesArray(newEntities);\r\n        for (var _i = 0, newEntities_3 = newEntities; _i < newEntities_3.length; _i++) {\r\n            var entity = newEntities_3[_i];\r\n            setOneMutably(entity, state);\r\n        }\r\n    }\r\n    function setAllMutably(newEntities, state) {\r\n        newEntities = ensureEntitiesArray(newEntities);\r\n        state.ids = [];\r\n        state.entities = {};\r\n        addManyMutably(newEntities, state);\r\n    }\r\n    function removeOneMutably(key, state) {\r\n        return removeManyMutably([key], state);\r\n    }\r\n    function removeManyMutably(keys, state) {\r\n        var didMutate = false;\r\n        keys.forEach(function (key) {\r\n            if (key in state.entities) {\r\n                delete state.entities[key];\r\n                didMutate = true;\r\n            }\r\n        });\r\n        if (didMutate) {\r\n            state.ids = state.ids.filter(function (id) { return id in state.entities; });\r\n        }\r\n    }\r\n    function removeAllMutably(state) {\r\n        Object.assign(state, {\r\n            ids: [],\r\n            entities: {}\r\n        });\r\n    }\r\n    function takeNewKey(keys, update, state) {\r\n        var original2 = state.entities[update.id];\r\n        var updated = Object.assign({}, original2, update.changes);\r\n        var newKey = selectIdValue(updated, selectId);\r\n        var hasNewKey = newKey !== update.id;\r\n        if (hasNewKey) {\r\n            keys[update.id] = newKey;\r\n            delete state.entities[update.id];\r\n        }\r\n        state.entities[newKey] = updated;\r\n        return hasNewKey;\r\n    }\r\n    function updateOneMutably(update, state) {\r\n        return updateManyMutably([update], state);\r\n    }\r\n    function updateManyMutably(updates, state) {\r\n        var newKeys = {};\r\n        var updatesPerEntity = {};\r\n        updates.forEach(function (update) {\r\n            if (update.id in state.entities) {\r\n                updatesPerEntity[update.id] = {\r\n                    id: update.id,\r\n                    changes: __spreadValues(__spreadValues({}, updatesPerEntity[update.id] ? updatesPerEntity[update.id].changes : null), update.changes)\r\n                };\r\n            }\r\n        });\r\n        updates = Object.values(updatesPerEntity);\r\n        var didMutateEntities = updates.length > 0;\r\n        if (didMutateEntities) {\r\n            var didMutateIds = updates.filter(function (update) { return takeNewKey(newKeys, update, state); }).length > 0;\r\n            if (didMutateIds) {\r\n                state.ids = Object.keys(state.entities);\r\n            }\r\n        }\r\n    }\r\n    function upsertOneMutably(entity, state) {\r\n        return upsertManyMutably([entity], state);\r\n    }\r\n    function upsertManyMutably(newEntities, state) {\r\n        var _c = splitAddedUpdatedEntities(newEntities, selectId, state), added = _c[0], updated = _c[1];\r\n        updateManyMutably(updated, state);\r\n        addManyMutably(added, state);\r\n    }\r\n    return {\r\n        removeAll: createSingleArgumentStateOperator(removeAllMutably),\r\n        addOne: createStateOperator(addOneMutably),\r\n        addMany: createStateOperator(addManyMutably),\r\n        setOne: createStateOperator(setOneMutably),\r\n        setMany: createStateOperator(setManyMutably),\r\n        setAll: createStateOperator(setAllMutably),\r\n        updateOne: createStateOperator(updateOneMutably),\r\n        updateMany: createStateOperator(updateManyMutably),\r\n        upsertOne: createStateOperator(upsertOneMutably),\r\n        upsertMany: createStateOperator(upsertManyMutably),\r\n        removeOne: createStateOperator(removeOneMutably),\r\n        removeMany: createStateOperator(removeManyMutably)\r\n    };\r\n}\r\n// src/entities/sorted_state_adapter.ts\r\nfunction createSortedStateAdapter(selectId, sort) {\r\n    var _c = createUnsortedStateAdapter(selectId), removeOne = _c.removeOne, removeMany = _c.removeMany, removeAll = _c.removeAll;\r\n    function addOneMutably(entity, state) {\r\n        return addManyMutably([entity], state);\r\n    }\r\n    function addManyMutably(newEntities, state) {\r\n        newEntities = ensureEntitiesArray(newEntities);\r\n        var models = newEntities.filter(function (model) { return !(selectIdValue(model, selectId) in state.entities); });\r\n        if (models.length !== 0) {\r\n            merge(models, state);\r\n        }\r\n    }\r\n    function setOneMutably(entity, state) {\r\n        return setManyMutably([entity], state);\r\n    }\r\n    function setManyMutably(newEntities, state) {\r\n        newEntities = ensureEntitiesArray(newEntities);\r\n        if (newEntities.length !== 0) {\r\n            merge(newEntities, state);\r\n        }\r\n    }\r\n    function setAllMutably(newEntities, state) {\r\n        newEntities = ensureEntitiesArray(newEntities);\r\n        state.entities = {};\r\n        state.ids = [];\r\n        addManyMutably(newEntities, state);\r\n    }\r\n    function updateOneMutably(update, state) {\r\n        return updateManyMutably([update], state);\r\n    }\r\n    function updateManyMutably(updates, state) {\r\n        var appliedUpdates = false;\r\n        for (var _i = 0, updates_1 = updates; _i < updates_1.length; _i++) {\r\n            var update = updates_1[_i];\r\n            var entity = state.entities[update.id];\r\n            if (!entity) {\r\n                continue;\r\n            }\r\n            appliedUpdates = true;\r\n            Object.assign(entity, update.changes);\r\n            var newId = selectId(entity);\r\n            if (update.id !== newId) {\r\n                delete state.entities[update.id];\r\n                state.entities[newId] = entity;\r\n            }\r\n        }\r\n        if (appliedUpdates) {\r\n            resortEntities(state);\r\n        }\r\n    }\r\n    function upsertOneMutably(entity, state) {\r\n        return upsertManyMutably([entity], state);\r\n    }\r\n    function upsertManyMutably(newEntities, state) {\r\n        var _c = splitAddedUpdatedEntities(newEntities, selectId, state), added = _c[0], updated = _c[1];\r\n        updateManyMutably(updated, state);\r\n        addManyMutably(added, state);\r\n    }\r\n    function areArraysEqual(a, b) {\r\n        if (a.length !== b.length) {\r\n            return false;\r\n        }\r\n        for (var i = 0; i < a.length && i < b.length; i++) {\r\n            if (a[i] === b[i]) {\r\n                continue;\r\n            }\r\n            return false;\r\n        }\r\n        return true;\r\n    }\r\n    function merge(models, state) {\r\n        models.forEach(function (model) {\r\n            state.entities[selectId(model)] = model;\r\n        });\r\n        resortEntities(state);\r\n    }\r\n    function resortEntities(state) {\r\n        var allEntities = Object.values(state.entities);\r\n        allEntities.sort(sort);\r\n        var newSortedIds = allEntities.map(selectId);\r\n        var ids = state.ids;\r\n        if (!areArraysEqual(ids, newSortedIds)) {\r\n            state.ids = newSortedIds;\r\n        }\r\n    }\r\n    return {\r\n        removeOne: removeOne,\r\n        removeMany: removeMany,\r\n        removeAll: removeAll,\r\n        addOne: createStateOperator(addOneMutably),\r\n        updateOne: createStateOperator(updateOneMutably),\r\n        upsertOne: createStateOperator(upsertOneMutably),\r\n        setOne: createStateOperator(setOneMutably),\r\n        setMany: createStateOperator(setManyMutably),\r\n        setAll: createStateOperator(setAllMutably),\r\n        addMany: createStateOperator(addManyMutably),\r\n        updateMany: createStateOperator(updateManyMutably),\r\n        upsertMany: createStateOperator(upsertManyMutably)\r\n    };\r\n}\r\n// src/entities/create_adapter.ts\r\nfunction createEntityAdapter(options) {\r\n    if (options === void 0) { options = {}; }\r\n    var _c = __spreadValues({\r\n        sortComparer: false,\r\n        selectId: function (instance) { return instance.id; }\r\n    }, options), selectId = _c.selectId, sortComparer = _c.sortComparer;\r\n    var stateFactory = createInitialStateFactory();\r\n    var selectorsFactory = createSelectorsFactory();\r\n    var stateAdapter = sortComparer ? createSortedStateAdapter(selectId, sortComparer) : createUnsortedStateAdapter(selectId);\r\n    return __spreadValues(__spreadValues(__spreadValues({\r\n        selectId: selectId,\r\n        sortComparer: sortComparer\r\n    }, stateFactory), selectorsFactory), stateAdapter);\r\n}\r\n// src/nanoid.ts\r\nvar urlAlphabet = \"ModuleSymbhasOwnPr-0123456789ABCDEFGHNRVfgctiUvz_KqYTJkLxpZXIjQW\";\r\nvar nanoid = function (size) {\r\n    if (size === void 0) { size = 21; }\r\n    var id = \"\";\r\n    var i = size;\r\n    while (i--) {\r\n        id += urlAlphabet[Math.random() * 64 | 0];\r\n    }\r\n    return id;\r\n};\r\n// src/createAsyncThunk.ts\r\nvar commonProperties = [\r\n    \"name\",\r\n    \"message\",\r\n    \"stack\",\r\n    \"code\"\r\n];\r\nvar RejectWithValue = /** @class */ (function () {\r\n    function RejectWithValue(payload, meta) {\r\n        this.payload = payload;\r\n        this.meta = meta;\r\n    }\r\n    return RejectWithValue;\r\n}());\r\nvar FulfillWithMeta = /** @class */ (function () {\r\n    function FulfillWithMeta(payload, meta) {\r\n        this.payload = payload;\r\n        this.meta = meta;\r\n    }\r\n    return FulfillWithMeta;\r\n}());\r\nvar miniSerializeError = function (value) {\r\n    if (typeof value === \"object\" && value !== null) {\r\n        var simpleError = {};\r\n        for (var _i = 0, commonProperties_1 = commonProperties; _i < commonProperties_1.length; _i++) {\r\n            var property = commonProperties_1[_i];\r\n            if (typeof value[property] === \"string\") {\r\n                simpleError[property] = value[property];\r\n            }\r\n        }\r\n        return simpleError;\r\n    }\r\n    return { message: String(value) };\r\n};\r\nvar createAsyncThunk = (function () {\r\n    function createAsyncThunk2(typePrefix, payloadCreator, options) {\r\n        var fulfilled = createAction(typePrefix + \"/fulfilled\", function (payload, requestId, arg, meta) { return ({\r\n            payload: payload,\r\n            meta: __spreadProps(__spreadValues({}, meta || {}), {\r\n                arg: arg,\r\n                requestId: requestId,\r\n                requestStatus: \"fulfilled\"\r\n            })\r\n        }); });\r\n        var pending = createAction(typePrefix + \"/pending\", function (requestId, arg, meta) { return ({\r\n            payload: void 0,\r\n            meta: __spreadProps(__spreadValues({}, meta || {}), {\r\n                arg: arg,\r\n                requestId: requestId,\r\n                requestStatus: \"pending\"\r\n            })\r\n        }); });\r\n        var rejected = createAction(typePrefix + \"/rejected\", function (error, requestId, arg, payload, meta) { return ({\r\n            payload: payload,\r\n            error: (options && options.serializeError || miniSerializeError)(error || \"Rejected\"),\r\n            meta: __spreadProps(__spreadValues({}, meta || {}), {\r\n                arg: arg,\r\n                requestId: requestId,\r\n                rejectedWithValue: !!payload,\r\n                requestStatus: \"rejected\",\r\n                aborted: (error == null ? void 0 : error.name) === \"AbortError\",\r\n                condition: (error == null ? void 0 : error.name) === \"ConditionError\"\r\n            })\r\n        }); });\r\n        var displayedWarning = false;\r\n        var AC = typeof AbortController !== \"undefined\" ? AbortController : /** @class */ (function () {\r\n            function class_1() {\r\n                this.signal = {\r\n                    aborted: false,\r\n                    addEventListener: function () {\r\n                    },\r\n                    dispatchEvent: function () {\r\n                        return false;\r\n                    },\r\n                    onabort: function () {\r\n                    },\r\n                    removeEventListener: function () {\r\n                    },\r\n                    reason: void 0,\r\n                    throwIfAborted: function () {\r\n                    }\r\n                };\r\n            }\r\n            class_1.prototype.abort = function () {\r\n                if (process.env.NODE_ENV !== \"production\") {\r\n                    if (!displayedWarning) {\r\n                        displayedWarning = true;\r\n                        console.info(\"This platform does not implement AbortController. \\nIf you want to use the AbortController to react to `abort` events, please consider importing a polyfill like 'abortcontroller-polyfill/dist/abortcontroller-polyfill-only'.\");\r\n                    }\r\n                }\r\n            };\r\n            return class_1;\r\n        }());\r\n        function actionCreator(arg) {\r\n            return function (dispatch, getState, extra) {\r\n                var requestId = (options == null ? void 0 : options.idGenerator) ? options.idGenerator(arg) : nanoid();\r\n                var abortController = new AC();\r\n                var abortReason;\r\n                var started = false;\r\n                function abort(reason) {\r\n                    abortReason = reason;\r\n                    abortController.abort();\r\n                }\r\n                var promise2 = function () {\r\n                    return __async(this, null, function () {\r\n                        var _a, _b, finalAction, conditionResult, abortedPromise, err_1, skipDispatch;\r\n                        return __generator(this, function (_c) {\r\n                            switch (_c.label) {\r\n                                case 0:\r\n                                    _c.trys.push([0, 4, , 5]);\r\n                                    conditionResult = (_a = options == null ? void 0 : options.condition) == null ? void 0 : _a.call(options, arg, { getState: getState, extra: extra });\r\n                                    if (!isThenable(conditionResult)) return [3 /*break*/, 2];\r\n                                    return [4 /*yield*/, conditionResult];\r\n                                case 1:\r\n                                    conditionResult = _c.sent();\r\n                                    _c.label = 2;\r\n                                case 2:\r\n                                    if (conditionResult === false || abortController.signal.aborted) {\r\n                                        throw {\r\n                                            name: \"ConditionError\",\r\n                                            message: \"Aborted due to condition callback returning false.\"\r\n                                        };\r\n                                    }\r\n                                    started = true;\r\n                                    abortedPromise = new Promise(function (_, reject) { return abortController.signal.addEventListener(\"abort\", function () { return reject({\r\n                                        name: \"AbortError\",\r\n                                        message: abortReason || \"Aborted\"\r\n                                    }); }); });\r\n                                    dispatch(pending(requestId, arg, (_b = options == null ? void 0 : options.getPendingMeta) == null ? void 0 : _b.call(options, { requestId: requestId, arg: arg }, { getState: getState, extra: extra })));\r\n                                    return [4 /*yield*/, Promise.race([\r\n                                            abortedPromise,\r\n                                            Promise.resolve(payloadCreator(arg, {\r\n                                                dispatch: dispatch,\r\n                                                getState: getState,\r\n                                                extra: extra,\r\n                                                requestId: requestId,\r\n                                                signal: abortController.signal,\r\n                                                abort: abort,\r\n                                                rejectWithValue: function (value, meta) {\r\n                                                    return new RejectWithValue(value, meta);\r\n                                                },\r\n                                                fulfillWithValue: function (value, meta) {\r\n                                                    return new FulfillWithMeta(value, meta);\r\n                                                }\r\n                                            })).then(function (result) {\r\n                                                if (result instanceof RejectWithValue) {\r\n                                                    throw result;\r\n                                                }\r\n                                                if (result instanceof FulfillWithMeta) {\r\n                                                    return fulfilled(result.payload, requestId, arg, result.meta);\r\n                                                }\r\n                                                return fulfilled(result, requestId, arg);\r\n                                            })\r\n                                        ])];\r\n                                case 3:\r\n                                    finalAction = _c.sent();\r\n                                    return [3 /*break*/, 5];\r\n                                case 4:\r\n                                    err_1 = _c.sent();\r\n                                    finalAction = err_1 instanceof RejectWithValue ? rejected(null, requestId, arg, err_1.payload, err_1.meta) : rejected(err_1, requestId, arg);\r\n                                    return [3 /*break*/, 5];\r\n                                case 5:\r\n                                    skipDispatch = options && !options.dispatchConditionRejection && rejected.match(finalAction) && finalAction.meta.condition;\r\n                                    if (!skipDispatch) {\r\n                                        dispatch(finalAction);\r\n                                    }\r\n                                    return [2 /*return*/, finalAction];\r\n                            }\r\n                        });\r\n                    });\r\n                }();\r\n                return Object.assign(promise2, {\r\n                    abort: abort,\r\n                    requestId: requestId,\r\n                    arg: arg,\r\n                    unwrap: function () {\r\n                        return promise2.then(unwrapResult);\r\n                    }\r\n                });\r\n            };\r\n        }\r\n        return Object.assign(actionCreator, {\r\n            pending: pending,\r\n            rejected: rejected,\r\n            fulfilled: fulfilled,\r\n            typePrefix: typePrefix\r\n        });\r\n    }\r\n    createAsyncThunk2.withTypes = function () { return createAsyncThunk2; };\r\n    return createAsyncThunk2;\r\n})();\r\nfunction unwrapResult(action) {\r\n    if (action.meta && action.meta.rejectedWithValue) {\r\n        throw action.payload;\r\n    }\r\n    if (action.error) {\r\n        throw action.error;\r\n    }\r\n    return action.payload;\r\n}\r\nfunction isThenable(value) {\r\n    return value !== null && typeof value === \"object\" && typeof value.then === \"function\";\r\n}\r\n// src/tsHelpers.ts\r\nvar hasMatchFunction = function (v) {\r\n    return v && typeof v.match === \"function\";\r\n};\r\n// src/matchers.ts\r\nvar matches = function (matcher, action) {\r\n    if (hasMatchFunction(matcher)) {\r\n        return matcher.match(action);\r\n    }\r\n    else {\r\n        return matcher(action);\r\n    }\r\n};\r\nfunction isAnyOf() {\r\n    var matchers = [];\r\n    for (var _i = 0; _i < arguments.length; _i++) {\r\n        matchers[_i] = arguments[_i];\r\n    }\r\n    return function (action) {\r\n        return matchers.some(function (matcher) { return matches(matcher, action); });\r\n    };\r\n}\r\nfunction isAllOf() {\r\n    var matchers = [];\r\n    for (var _i = 0; _i < arguments.length; _i++) {\r\n        matchers[_i] = arguments[_i];\r\n    }\r\n    return function (action) {\r\n        return matchers.every(function (matcher) { return matches(matcher, action); });\r\n    };\r\n}\r\nfunction hasExpectedRequestMetadata(action, validStatus) {\r\n    if (!action || !action.meta)\r\n        return false;\r\n    var hasValidRequestId = typeof action.meta.requestId === \"string\";\r\n    var hasValidRequestStatus = validStatus.indexOf(action.meta.requestStatus) > -1;\r\n    return hasValidRequestId && hasValidRequestStatus;\r\n}\r\nfunction isAsyncThunkArray(a) {\r\n    return typeof a[0] === \"function\" && \"pending\" in a[0] && \"fulfilled\" in a[0] && \"rejected\" in a[0];\r\n}\r\nfunction isPending() {\r\n    var asyncThunks = [];\r\n    for (var _i = 0; _i < arguments.length; _i++) {\r\n        asyncThunks[_i] = arguments[_i];\r\n    }\r\n    if (asyncThunks.length === 0) {\r\n        return function (action) { return hasExpectedRequestMetadata(action, [\"pending\"]); };\r\n    }\r\n    if (!isAsyncThunkArray(asyncThunks)) {\r\n        return isPending()(asyncThunks[0]);\r\n    }\r\n    return function (action) {\r\n        var matchers = asyncThunks.map(function (asyncThunk) { return asyncThunk.pending; });\r\n        var combinedMatcher = isAnyOf.apply(void 0, matchers);\r\n        return combinedMatcher(action);\r\n    };\r\n}\r\nfunction isRejected() {\r\n    var asyncThunks = [];\r\n    for (var _i = 0; _i < arguments.length; _i++) {\r\n        asyncThunks[_i] = arguments[_i];\r\n    }\r\n    if (asyncThunks.length === 0) {\r\n        return function (action) { return hasExpectedRequestMetadata(action, [\"rejected\"]); };\r\n    }\r\n    if (!isAsyncThunkArray(asyncThunks)) {\r\n        return isRejected()(asyncThunks[0]);\r\n    }\r\n    return function (action) {\r\n        var matchers = asyncThunks.map(function (asyncThunk) { return asyncThunk.rejected; });\r\n        var combinedMatcher = isAnyOf.apply(void 0, matchers);\r\n        return combinedMatcher(action);\r\n    };\r\n}\r\nfunction isRejectedWithValue() {\r\n    var asyncThunks = [];\r\n    for (var _i = 0; _i < arguments.length; _i++) {\r\n        asyncThunks[_i] = arguments[_i];\r\n    }\r\n    var hasFlag = function (action) {\r\n        return action && action.meta && action.meta.rejectedWithValue;\r\n    };\r\n    if (asyncThunks.length === 0) {\r\n        return function (action) {\r\n            var combinedMatcher = isAllOf(isRejected.apply(void 0, asyncThunks), hasFlag);\r\n            return combinedMatcher(action);\r\n        };\r\n    }\r\n    if (!isAsyncThunkArray(asyncThunks)) {\r\n        return isRejectedWithValue()(asyncThunks[0]);\r\n    }\r\n    return function (action) {\r\n        var combinedMatcher = isAllOf(isRejected.apply(void 0, asyncThunks), hasFlag);\r\n        return combinedMatcher(action);\r\n    };\r\n}\r\nfunction isFulfilled() {\r\n    var asyncThunks = [];\r\n    for (var _i = 0; _i < arguments.length; _i++) {\r\n        asyncThunks[_i] = arguments[_i];\r\n    }\r\n    if (asyncThunks.length === 0) {\r\n        return function (action) { return hasExpectedRequestMetadata(action, [\"fulfilled\"]); };\r\n    }\r\n    if (!isAsyncThunkArray(asyncThunks)) {\r\n        return isFulfilled()(asyncThunks[0]);\r\n    }\r\n    return function (action) {\r\n        var matchers = asyncThunks.map(function (asyncThunk) { return asyncThunk.fulfilled; });\r\n        var combinedMatcher = isAnyOf.apply(void 0, matchers);\r\n        return combinedMatcher(action);\r\n    };\r\n}\r\nfunction isAsyncThunkAction() {\r\n    var asyncThunks = [];\r\n    for (var _i = 0; _i < arguments.length; _i++) {\r\n        asyncThunks[_i] = arguments[_i];\r\n    }\r\n    if (asyncThunks.length === 0) {\r\n        return function (action) { return hasExpectedRequestMetadata(action, [\"pending\", \"fulfilled\", \"rejected\"]); };\r\n    }\r\n    if (!isAsyncThunkArray(asyncThunks)) {\r\n        return isAsyncThunkAction()(asyncThunks[0]);\r\n    }\r\n    return function (action) {\r\n        var matchers = [];\r\n        for (var _i = 0, asyncThunks_1 = asyncThunks; _i < asyncThunks_1.length; _i++) {\r\n            var asyncThunk = asyncThunks_1[_i];\r\n            matchers.push(asyncThunk.pending, asyncThunk.rejected, asyncThunk.fulfilled);\r\n        }\r\n        var combinedMatcher = isAnyOf.apply(void 0, matchers);\r\n        return combinedMatcher(action);\r\n    };\r\n}\r\n// src/listenerMiddleware/utils.ts\r\nvar assertFunction = function (func, expected) {\r\n    if (typeof func !== \"function\") {\r\n        throw new TypeError(expected + \" is not a function\");\r\n    }\r\n};\r\nvar noop = function () {\r\n};\r\nvar catchRejection = function (promise2, onError) {\r\n    if (onError === void 0) { onError = noop; }\r\n    promise2.catch(onError);\r\n    return promise2;\r\n};\r\nvar addAbortSignalListener = function (abortSignal, callback) {\r\n    abortSignal.addEventListener(\"abort\", callback, { once: true });\r\n    return function () { return abortSignal.removeEventListener(\"abort\", callback); };\r\n};\r\nvar abortControllerWithReason = function (abortController, reason) {\r\n    var signal = abortController.signal;\r\n    if (signal.aborted) {\r\n        return;\r\n    }\r\n    if (!(\"reason\" in signal)) {\r\n        Object.defineProperty(signal, \"reason\", {\r\n            enumerable: true,\r\n            value: reason,\r\n            configurable: true,\r\n            writable: true\r\n        });\r\n    }\r\n    ;\r\n    abortController.abort(reason);\r\n};\r\n// src/listenerMiddleware/exceptions.ts\r\nvar task = \"task\";\r\nvar listener = \"listener\";\r\nvar completed = \"completed\";\r\nvar cancelled = \"cancelled\";\r\nvar taskCancelled = \"task-\" + cancelled;\r\nvar taskCompleted = \"task-\" + completed;\r\nvar listenerCancelled = listener + \"-\" + cancelled;\r\nvar listenerCompleted = listener + \"-\" + completed;\r\nvar TaskAbortError = /** @class */ (function () {\r\n    function TaskAbortError(code) {\r\n        this.code = code;\r\n        this.name = \"TaskAbortError\";\r\n        this.message = task + \" \" + cancelled + \" (reason: \" + code + \")\";\r\n    }\r\n    return TaskAbortError;\r\n}());\r\n// src/listenerMiddleware/task.ts\r\nvar validateActive = function (signal) {\r\n    if (signal.aborted) {\r\n        throw new TaskAbortError(signal.reason);\r\n    }\r\n};\r\nfunction raceWithSignal(signal, promise2) {\r\n    var cleanup = noop;\r\n    return new Promise(function (resolve, reject) {\r\n        var notifyRejection = function () { return reject(new TaskAbortError(signal.reason)); };\r\n        if (signal.aborted) {\r\n            notifyRejection();\r\n            return;\r\n        }\r\n        cleanup = addAbortSignalListener(signal, notifyRejection);\r\n        promise2.finally(function () { return cleanup(); }).then(resolve, reject);\r\n    }).finally(function () {\r\n        cleanup = noop;\r\n    });\r\n}\r\nvar runTask = function (task2, cleanUp) { return __async(void 0, null, function () {\r\n    var value, error_1;\r\n    return __generator(this, function (_c) {\r\n        switch (_c.label) {\r\n            case 0:\r\n                _c.trys.push([0, 3, 4, 5]);\r\n                return [4 /*yield*/, Promise.resolve()];\r\n            case 1:\r\n                _c.sent();\r\n                return [4 /*yield*/, task2()];\r\n            case 2:\r\n                value = _c.sent();\r\n                return [2 /*return*/, {\r\n                        status: \"ok\",\r\n                        value: value\r\n                    }];\r\n            case 3:\r\n                error_1 = _c.sent();\r\n                return [2 /*return*/, {\r\n                        status: error_1 instanceof TaskAbortError ? \"cancelled\" : \"rejected\",\r\n                        error: error_1\r\n                    }];\r\n            case 4:\r\n                cleanUp == null ? void 0 : cleanUp();\r\n                return [7 /*endfinally*/];\r\n            case 5: return [2 /*return*/];\r\n        }\r\n    });\r\n}); };\r\nvar createPause = function (signal) {\r\n    return function (promise2) {\r\n        return catchRejection(raceWithSignal(signal, promise2).then(function (output) {\r\n            validateActive(signal);\r\n            return output;\r\n        }));\r\n    };\r\n};\r\nvar createDelay = function (signal) {\r\n    var pause = createPause(signal);\r\n    return function (timeoutMs) {\r\n        return pause(new Promise(function (resolve) { return setTimeout(resolve, timeoutMs); }));\r\n    };\r\n};\r\n// src/listenerMiddleware/index.ts\r\nvar assign = Object.assign;\r\nvar INTERNAL_NIL_TOKEN = {};\r\nvar alm = \"listenerMiddleware\";\r\nvar createFork = function (parentAbortSignal) {\r\n    var linkControllers = function (controller) { return addAbortSignalListener(parentAbortSignal, function () { return abortControllerWithReason(controller, parentAbortSignal.reason); }); };\r\n    return function (taskExecutor) {\r\n        assertFunction(taskExecutor, \"taskExecutor\");\r\n        var childAbortController = new AbortController();\r\n        linkControllers(childAbortController);\r\n        var result = runTask(function () { return __async(void 0, null, function () {\r\n            var result2;\r\n            return __generator(this, function (_c) {\r\n                switch (_c.label) {\r\n                    case 0:\r\n                        validateActive(parentAbortSignal);\r\n                        validateActive(childAbortController.signal);\r\n                        return [4 /*yield*/, taskExecutor({\r\n                                pause: createPause(childAbortController.signal),\r\n                                delay: createDelay(childAbortController.signal),\r\n                                signal: childAbortController.signal\r\n                            })];\r\n                    case 1:\r\n                        result2 = _c.sent();\r\n                        validateActive(childAbortController.signal);\r\n                        return [2 /*return*/, result2];\r\n                }\r\n            });\r\n        }); }, function () { return abortControllerWithReason(childAbortController, taskCompleted); });\r\n        return {\r\n            result: createPause(parentAbortSignal)(result),\r\n            cancel: function () {\r\n                abortControllerWithReason(childAbortController, taskCancelled);\r\n            }\r\n        };\r\n    };\r\n};\r\nvar createTakePattern = function (startListening, signal) {\r\n    var take = function (predicate, timeout) { return __async(void 0, null, function () {\r\n        var unsubscribe, tuplePromise, promises, output;\r\n        return __generator(this, function (_c) {\r\n            switch (_c.label) {\r\n                case 0:\r\n                    validateActive(signal);\r\n                    unsubscribe = function () {\r\n                    };\r\n                    tuplePromise = new Promise(function (resolve, reject) {\r\n                        var stopListening = startListening({\r\n                            predicate: predicate,\r\n                            effect: function (action, listenerApi) {\r\n                                listenerApi.unsubscribe();\r\n                                resolve([\r\n                                    action,\r\n                                    listenerApi.getState(),\r\n                                    listenerApi.getOriginalState()\r\n                                ]);\r\n                            }\r\n                        });\r\n                        unsubscribe = function () {\r\n                            stopListening();\r\n                            reject();\r\n                        };\r\n                    });\r\n                    promises = [\r\n                        tuplePromise\r\n                    ];\r\n                    if (timeout != null) {\r\n                        promises.push(new Promise(function (resolve) { return setTimeout(resolve, timeout, null); }));\r\n                    }\r\n                    _c.label = 1;\r\n                case 1:\r\n                    _c.trys.push([1, , 3, 4]);\r\n                    return [4 /*yield*/, raceWithSignal(signal, Promise.race(promises))];\r\n                case 2:\r\n                    output = _c.sent();\r\n                    validateActive(signal);\r\n                    return [2 /*return*/, output];\r\n                case 3:\r\n                    unsubscribe();\r\n                    return [7 /*endfinally*/];\r\n                case 4: return [2 /*return*/];\r\n            }\r\n        });\r\n    }); };\r\n    return function (predicate, timeout) { return catchRejection(take(predicate, timeout)); };\r\n};\r\nvar getListenerEntryPropsFrom = function (options) {\r\n    var type = options.type, actionCreator = options.actionCreator, matcher = options.matcher, predicate = options.predicate, effect = options.effect;\r\n    if (type) {\r\n        predicate = createAction(type).match;\r\n    }\r\n    else if (actionCreator) {\r\n        type = actionCreator.type;\r\n        predicate = actionCreator.match;\r\n    }\r\n    else if (matcher) {\r\n        predicate = matcher;\r\n    }\r\n    else if (predicate) {\r\n    }\r\n    else {\r\n        throw new Error(\"Creating or removing a listener requires one of the known fields for matching an action\");\r\n    }\r\n    assertFunction(effect, \"options.listener\");\r\n    return { predicate: predicate, type: type, effect: effect };\r\n};\r\nvar createListenerEntry = function (options) {\r\n    var _c = getListenerEntryPropsFrom(options), type = _c.type, predicate = _c.predicate, effect = _c.effect;\r\n    var id = nanoid();\r\n    var entry = {\r\n        id: id,\r\n        effect: effect,\r\n        type: type,\r\n        predicate: predicate,\r\n        pending: new Set(),\r\n        unsubscribe: function () {\r\n            throw new Error(\"Unsubscribe not initialized\");\r\n        }\r\n    };\r\n    return entry;\r\n};\r\nvar cancelActiveListeners = function (entry) {\r\n    entry.pending.forEach(function (controller) {\r\n        abortControllerWithReason(controller, listenerCancelled);\r\n    });\r\n};\r\nvar createClearListenerMiddleware = function (listenerMap) {\r\n    return function () {\r\n        listenerMap.forEach(cancelActiveListeners);\r\n        listenerMap.clear();\r\n    };\r\n};\r\nvar safelyNotifyError = function (errorHandler, errorToNotify, errorInfo) {\r\n    try {\r\n        errorHandler(errorToNotify, errorInfo);\r\n    }\r\n    catch (errorHandlerError) {\r\n        setTimeout(function () {\r\n            throw errorHandlerError;\r\n        }, 0);\r\n    }\r\n};\r\nvar addListener = createAction(alm + \"/add\");\r\nvar clearAllListeners = createAction(alm + \"/removeAll\");\r\nvar removeListener = createAction(alm + \"/remove\");\r\nvar defaultErrorHandler = function () {\r\n    var args = [];\r\n    for (var _i = 0; _i < arguments.length; _i++) {\r\n        args[_i] = arguments[_i];\r\n    }\r\n    console.error.apply(console, __spreadArray([alm + \"/error\"], args));\r\n};\r\nfunction createListenerMiddleware(middlewareOptions) {\r\n    var _this = this;\r\n    if (middlewareOptions === void 0) { middlewareOptions = {}; }\r\n    var listenerMap = new Map();\r\n    var extra = middlewareOptions.extra, _c = middlewareOptions.onError, onError = _c === void 0 ? defaultErrorHandler : _c;\r\n    assertFunction(onError, \"onError\");\r\n    var insertEntry = function (entry) {\r\n        entry.unsubscribe = function () { return listenerMap.delete(entry.id); };\r\n        listenerMap.set(entry.id, entry);\r\n        return function (cancelOptions) {\r\n            entry.unsubscribe();\r\n            if (cancelOptions == null ? void 0 : cancelOptions.cancelActive) {\r\n                cancelActiveListeners(entry);\r\n            }\r\n        };\r\n    };\r\n    var findListenerEntry = function (comparator) {\r\n        for (var _i = 0, _c = Array.from(listenerMap.values()); _i < _c.length; _i++) {\r\n            var entry = _c[_i];\r\n            if (comparator(entry)) {\r\n                return entry;\r\n            }\r\n        }\r\n        return void 0;\r\n    };\r\n    var startListening = function (options) {\r\n        var entry = findListenerEntry(function (existingEntry) { return existingEntry.effect === options.effect; });\r\n        if (!entry) {\r\n            entry = createListenerEntry(options);\r\n        }\r\n        return insertEntry(entry);\r\n    };\r\n    var stopListening = function (options) {\r\n        var _c = getListenerEntryPropsFrom(options), type = _c.type, effect = _c.effect, predicate = _c.predicate;\r\n        var entry = findListenerEntry(function (entry2) {\r\n            var matchPredicateOrType = typeof type === \"string\" ? entry2.type === type : entry2.predicate === predicate;\r\n            return matchPredicateOrType && entry2.effect === effect;\r\n        });\r\n        if (entry) {\r\n            entry.unsubscribe();\r\n            if (options.cancelActive) {\r\n                cancelActiveListeners(entry);\r\n            }\r\n        }\r\n        return !!entry;\r\n    };\r\n    var notifyListener = function (entry, action, api, getOriginalState) { return __async(_this, null, function () {\r\n        var internalTaskController, take, listenerError_1;\r\n        return __generator(this, function (_c) {\r\n            switch (_c.label) {\r\n                case 0:\r\n                    internalTaskController = new AbortController();\r\n                    take = createTakePattern(startListening, internalTaskController.signal);\r\n                    _c.label = 1;\r\n                case 1:\r\n                    _c.trys.push([1, 3, 4, 5]);\r\n                    entry.pending.add(internalTaskController);\r\n                    return [4 /*yield*/, Promise.resolve(entry.effect(action, assign({}, api, {\r\n                            getOriginalState: getOriginalState,\r\n                            condition: function (predicate, timeout) { return take(predicate, timeout).then(Boolean); },\r\n                            take: take,\r\n                            delay: createDelay(internalTaskController.signal),\r\n                            pause: createPause(internalTaskController.signal),\r\n                            extra: extra,\r\n                            signal: internalTaskController.signal,\r\n                            fork: createFork(internalTaskController.signal),\r\n                            unsubscribe: entry.unsubscribe,\r\n                            subscribe: function () {\r\n                                listenerMap.set(entry.id, entry);\r\n                            },\r\n                            cancelActiveListeners: function () {\r\n                                entry.pending.forEach(function (controller, _, set) {\r\n                                    if (controller !== internalTaskController) {\r\n                                        abortControllerWithReason(controller, listenerCancelled);\r\n                                        set.delete(controller);\r\n                                    }\r\n                                });\r\n                            }\r\n                        })))];\r\n                case 2:\r\n                    _c.sent();\r\n                    return [3 /*break*/, 5];\r\n                case 3:\r\n                    listenerError_1 = _c.sent();\r\n                    if (!(listenerError_1 instanceof TaskAbortError)) {\r\n                        safelyNotifyError(onError, listenerError_1, {\r\n                            raisedBy: \"effect\"\r\n                        });\r\n                    }\r\n                    return [3 /*break*/, 5];\r\n                case 4:\r\n                    abortControllerWithReason(internalTaskController, listenerCompleted);\r\n                    entry.pending.delete(internalTaskController);\r\n                    return [7 /*endfinally*/];\r\n                case 5: return [2 /*return*/];\r\n            }\r\n        });\r\n    }); };\r\n    var clearListenerMiddleware = createClearListenerMiddleware(listenerMap);\r\n    var middleware = function (api) { return function (next) { return function (action) {\r\n        if (addListener.match(action)) {\r\n            return startListening(action.payload);\r\n        }\r\n        if (clearAllListeners.match(action)) {\r\n            clearListenerMiddleware();\r\n            return;\r\n        }\r\n        if (removeListener.match(action)) {\r\n            return stopListening(action.payload);\r\n        }\r\n        var originalState = api.getState();\r\n        var getOriginalState = function () {\r\n            if (originalState === INTERNAL_NIL_TOKEN) {\r\n                throw new Error(alm + \": getOriginalState can only be called synchronously\");\r\n            }\r\n            return originalState;\r\n        };\r\n        var result;\r\n        try {\r\n            result = next(action);\r\n            if (listenerMap.size > 0) {\r\n                var currentState = api.getState();\r\n                var listenerEntries = Array.from(listenerMap.values());\r\n                for (var _i = 0, listenerEntries_1 = listenerEntries; _i < listenerEntries_1.length; _i++) {\r\n                    var entry = listenerEntries_1[_i];\r\n                    var runListener = false;\r\n                    try {\r\n                        runListener = entry.predicate(action, currentState, originalState);\r\n                    }\r\n                    catch (predicateError) {\r\n                        runListener = false;\r\n                        safelyNotifyError(onError, predicateError, {\r\n                            raisedBy: \"predicate\"\r\n                        });\r\n                    }\r\n                    if (!runListener) {\r\n                        continue;\r\n                    }\r\n                    notifyListener(entry, action, api, getOriginalState);\r\n                }\r\n            }\r\n        }\r\n        finally {\r\n            originalState = INTERNAL_NIL_TOKEN;\r\n        }\r\n        return result;\r\n    }; }; };\r\n    return {\r\n        middleware: middleware,\r\n        startListening: startListening,\r\n        stopListening: stopListening,\r\n        clearListeners: clearListenerMiddleware\r\n    };\r\n}\r\n// src/autoBatchEnhancer.ts\r\nvar SHOULD_AUTOBATCH = \"RTK_autoBatch\";\r\nvar prepareAutoBatched = function () { return function (payload) {\r\n    var _c;\r\n    return ({\r\n        payload: payload,\r\n        meta: (_c = {}, _c[SHOULD_AUTOBATCH] = true, _c)\r\n    });\r\n}; };\r\nvar promise;\r\nvar queueMicrotaskShim = typeof queueMicrotask === \"function\" ? queueMicrotask.bind(typeof window !== \"undefined\" ? window : typeof global !== \"undefined\" ? global : globalThis) : function (cb) { return (promise || (promise = Promise.resolve())).then(cb).catch(function (err) { return setTimeout(function () {\r\n    throw err;\r\n}, 0); }); };\r\nvar createQueueWithTimer = function (timeout) {\r\n    return function (notify) {\r\n        setTimeout(notify, timeout);\r\n    };\r\n};\r\nvar rAF = typeof window !== \"undefined\" && window.requestAnimationFrame ? window.requestAnimationFrame : createQueueWithTimer(10);\r\nvar autoBatchEnhancer = function (options) {\r\n    if (options === void 0) { options = { type: \"raf\" }; }\r\n    return function (next) { return function () {\r\n        var args = [];\r\n        for (var _i = 0; _i < arguments.length; _i++) {\r\n            args[_i] = arguments[_i];\r\n        }\r\n        var store = next.apply(void 0, args);\r\n        var notifying = true;\r\n        var shouldNotifyAtEndOfTick = false;\r\n        var notificationQueued = false;\r\n        var listeners = new Set();\r\n        var queueCallback = options.type === \"tick\" ? queueMicrotaskShim : options.type === \"raf\" ? rAF : options.type === \"callback\" ? options.queueNotification : createQueueWithTimer(options.timeout);\r\n        var notifyListeners = function () {\r\n            notificationQueued = false;\r\n            if (shouldNotifyAtEndOfTick) {\r\n                shouldNotifyAtEndOfTick = false;\r\n                listeners.forEach(function (l) { return l(); });\r\n            }\r\n        };\r\n        return Object.assign({}, store, {\r\n            subscribe: function (listener2) {\r\n                var wrappedListener = function () { return notifying && listener2(); };\r\n                var unsubscribe = store.subscribe(wrappedListener);\r\n                listeners.add(listener2);\r\n                return function () {\r\n                    unsubscribe();\r\n                    listeners.delete(listener2);\r\n                };\r\n            },\r\n            dispatch: function (action) {\r\n                var _a;\r\n                try {\r\n                    notifying = !((_a = action == null ? void 0 : action.meta) == null ? void 0 : _a[SHOULD_AUTOBATCH]);\r\n                    shouldNotifyAtEndOfTick = !notifying;\r\n                    if (shouldNotifyAtEndOfTick) {\r\n                        if (!notificationQueued) {\r\n                            notificationQueued = true;\r\n                            queueCallback(notifyListeners);\r\n                        }\r\n                    }\r\n                    return store.dispatch(action);\r\n                }\r\n                finally {\r\n                    notifying = true;\r\n                }\r\n            }\r\n        });\r\n    }; };\r\n};\r\n// src/index.ts\r\nenableES5();\r\nexport { MiddlewareArray, SHOULD_AUTOBATCH, TaskAbortError, addListener, autoBatchEnhancer, clearAllListeners, configureStore, createAction, createAsyncThunk, createDraftSafeSelector, createEntityAdapter, createImmutableStateInvariantMiddleware, createListenerMiddleware, default2 as createNextState, createReducer, createSelector2 as createSelector, createSerializableStateInvariantMiddleware, createSlice, current2 as current, findNonSerializableValue, freeze, getDefaultMiddleware, getType, isAllOf, isAnyOf, isAsyncThunkAction, isDraft4 as isDraft, isFulfilled, isImmutableDefault, isPending, isPlain, isPlainObject, isRejected, isRejectedWithValue, miniSerializeError, nanoid, original, prepareAutoBatched, removeListener, unwrapResult };\r\n//# sourceMappingURL=redux-toolkit.esm.js.map","/**\n * @remix-run/router v1.0.5\n *\n * Copyright (c) Remix Software Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE.md file in the root directory of this source tree.\n *\n * @license MIT\n */\nfunction _extends() {\n  _extends = Object.assign ? Object.assign.bind() : function (target) {\n    for (var i = 1; i < arguments.length; i++) {\n      var source = arguments[i];\n\n      for (var key in source) {\n        if (Object.prototype.hasOwnProperty.call(source, key)) {\n          target[key] = source[key];\n        }\n      }\n    }\n\n    return target;\n  };\n  return _extends.apply(this, arguments);\n}\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Types and Constants\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Actions represent the type of change to a location value.\n */\nvar Action;\n\n(function (Action) {\n  /**\n   * A POP indicates a change to an arbitrary index in the history stack, such\n   * as a back or forward navigation. It does not describe the direction of the\n   * navigation, only that the current index changed.\n   *\n   * Note: This is the default action for newly created history objects.\n   */\n  Action[\"Pop\"] = \"POP\";\n  /**\n   * A PUSH indicates a new entry being added to the history stack, such as when\n   * a link is clicked and a new page loads. When this happens, all subsequent\n   * entries in the stack are lost.\n   */\n\n  Action[\"Push\"] = \"PUSH\";\n  /**\n   * A REPLACE indicates the entry at the current index in the history stack\n   * being replaced by a new one.\n   */\n\n  Action[\"Replace\"] = \"REPLACE\";\n})(Action || (Action = {}));\n\nconst PopStateEventType = \"popstate\";\n/**\n * Memory history stores the current location in memory. It is designed for use\n * in stateful non-browser environments like tests and React Native.\n */\n\nfunction createMemoryHistory(options) {\n  if (options === void 0) {\n    options = {};\n  }\n\n  let {\n    initialEntries = [\"/\"],\n    initialIndex,\n    v5Compat = false\n  } = options;\n  let entries; // Declare so we can access from createMemoryLocation\n\n  entries = initialEntries.map((entry, index) => createMemoryLocation(entry, typeof entry === \"string\" ? null : entry.state, index === 0 ? \"default\" : undefined));\n  let index = clampIndex(initialIndex == null ? entries.length - 1 : initialIndex);\n  let action = Action.Pop;\n  let listener = null;\n\n  function clampIndex(n) {\n    return Math.min(Math.max(n, 0), entries.length - 1);\n  }\n\n  function getCurrentLocation() {\n    return entries[index];\n  }\n\n  function createMemoryLocation(to, state, key) {\n    if (state === void 0) {\n      state = null;\n    }\n\n    let location = createLocation(entries ? getCurrentLocation().pathname : \"/\", to, state, key);\n    warning$1(location.pathname.charAt(0) === \"/\", \"relative pathnames are not supported in memory history: \" + JSON.stringify(to));\n    return location;\n  }\n\n  let history = {\n    get index() {\n      return index;\n    },\n\n    get action() {\n      return action;\n    },\n\n    get location() {\n      return getCurrentLocation();\n    },\n\n    createHref(to) {\n      return typeof to === \"string\" ? to : createPath(to);\n    },\n\n    encodeLocation(to) {\n      let path = typeof to === \"string\" ? parsePath(to) : to;\n      return {\n        pathname: path.pathname || \"\",\n        search: path.search || \"\",\n        hash: path.hash || \"\"\n      };\n    },\n\n    push(to, state) {\n      action = Action.Push;\n      let nextLocation = createMemoryLocation(to, state);\n      index += 1;\n      entries.splice(index, entries.length, nextLocation);\n\n      if (v5Compat && listener) {\n        listener({\n          action,\n          location: nextLocation\n        });\n      }\n    },\n\n    replace(to, state) {\n      action = Action.Replace;\n      let nextLocation = createMemoryLocation(to, state);\n      entries[index] = nextLocation;\n\n      if (v5Compat && listener) {\n        listener({\n          action,\n          location: nextLocation\n        });\n      }\n    },\n\n    go(delta) {\n      action = Action.Pop;\n      index = clampIndex(index + delta);\n\n      if (listener) {\n        listener({\n          action,\n          location: getCurrentLocation()\n        });\n      }\n    },\n\n    listen(fn) {\n      listener = fn;\n      return () => {\n        listener = null;\n      };\n    }\n\n  };\n  return history;\n}\n/**\n * Browser history stores the location in regular URLs. This is the standard for\n * most web apps, but it requires some configuration on the server to ensure you\n * serve the same app at multiple URLs.\n *\n * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#createbrowserhistory\n */\n\nfunction createBrowserHistory(options) {\n  if (options === void 0) {\n    options = {};\n  }\n\n  function createBrowserLocation(window, globalHistory) {\n    let {\n      pathname,\n      search,\n      hash\n    } = window.location;\n    return createLocation(\"\", {\n      pathname,\n      search,\n      hash\n    }, // state defaults to `null` because `window.history.state` does\n    globalHistory.state && globalHistory.state.usr || null, globalHistory.state && globalHistory.state.key || \"default\");\n  }\n\n  function createBrowserHref(window, to) {\n    return typeof to === \"string\" ? to : createPath(to);\n  }\n\n  return getUrlBasedHistory(createBrowserLocation, createBrowserHref, null, options);\n}\n/**\n * Hash history stores the location in window.location.hash. This makes it ideal\n * for situations where you don't want to send the location to the server for\n * some reason, either because you do cannot configure it or the URL space is\n * reserved for something else.\n *\n * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#createhashhistory\n */\n\nfunction createHashHistory(options) {\n  if (options === void 0) {\n    options = {};\n  }\n\n  function createHashLocation(window, globalHistory) {\n    let {\n      pathname = \"/\",\n      search = \"\",\n      hash = \"\"\n    } = parsePath(window.location.hash.substr(1));\n    return createLocation(\"\", {\n      pathname,\n      search,\n      hash\n    }, // state defaults to `null` because `window.history.state` does\n    globalHistory.state && globalHistory.state.usr || null, globalHistory.state && globalHistory.state.key || \"default\");\n  }\n\n  function createHashHref(window, to) {\n    let base = window.document.querySelector(\"base\");\n    let href = \"\";\n\n    if (base && base.getAttribute(\"href\")) {\n      let url = window.location.href;\n      let hashIndex = url.indexOf(\"#\");\n      href = hashIndex === -1 ? url : url.slice(0, hashIndex);\n    }\n\n    return href + \"#\" + (typeof to === \"string\" ? to : createPath(to));\n  }\n\n  function validateHashLocation(location, to) {\n    warning$1(location.pathname.charAt(0) === \"/\", \"relative pathnames are not supported in hash history.push(\" + JSON.stringify(to) + \")\");\n  }\n\n  return getUrlBasedHistory(createHashLocation, createHashHref, validateHashLocation, options);\n}\nfunction invariant(value, message) {\n  if (value === false || value === null || typeof value === \"undefined\") {\n    throw new Error(message);\n  }\n}\n\nfunction warning$1(cond, message) {\n  if (!cond) {\n    // eslint-disable-next-line no-console\n    if (typeof console !== \"undefined\") console.warn(message);\n\n    try {\n      // Welcome to debugging history!\n      //\n      // This error is thrown as a convenience so you can more easily\n      // find the source for a warning that appears in the console by\n      // enabling \"pause on exceptions\" in your JavaScript debugger.\n      throw new Error(message); // eslint-disable-next-line no-empty\n    } catch (e) {}\n  }\n}\n\nfunction createKey() {\n  return Math.random().toString(36).substr(2, 8);\n}\n/**\n * For browser-based histories, we combine the state and key into an object\n */\n\n\nfunction getHistoryState(location) {\n  return {\n    usr: location.state,\n    key: location.key\n  };\n}\n/**\n * Creates a Location object with a unique key from the given Path\n */\n\n\nfunction createLocation(current, to, state, key) {\n  if (state === void 0) {\n    state = null;\n  }\n\n  let location = _extends({\n    pathname: typeof current === \"string\" ? current : current.pathname,\n    search: \"\",\n    hash: \"\"\n  }, typeof to === \"string\" ? parsePath(to) : to, {\n    state,\n    // TODO: This could be cleaned up.  push/replace should probably just take\n    // full Locations now and avoid the need to run through this flow at all\n    // But that's a pretty big refactor to the current test suite so going to\n    // keep as is for the time being and just let any incoming keys take precedence\n    key: to && to.key || key || createKey()\n  });\n\n  return location;\n}\n/**\n * Creates a string URL path from the given pathname, search, and hash components.\n */\n\nfunction createPath(_ref) {\n  let {\n    pathname = \"/\",\n    search = \"\",\n    hash = \"\"\n  } = _ref;\n  if (search && search !== \"?\") pathname += search.charAt(0) === \"?\" ? search : \"?\" + search;\n  if (hash && hash !== \"#\") pathname += hash.charAt(0) === \"#\" ? hash : \"#\" + hash;\n  return pathname;\n}\n/**\n * Parses a string URL path into its separate pathname, search, and hash components.\n */\n\nfunction parsePath(path) {\n  let parsedPath = {};\n\n  if (path) {\n    let hashIndex = path.indexOf(\"#\");\n\n    if (hashIndex >= 0) {\n      parsedPath.hash = path.substr(hashIndex);\n      path = path.substr(0, hashIndex);\n    }\n\n    let searchIndex = path.indexOf(\"?\");\n\n    if (searchIndex >= 0) {\n      parsedPath.search = path.substr(searchIndex);\n      path = path.substr(0, searchIndex);\n    }\n\n    if (path) {\n      parsedPath.pathname = path;\n    }\n  }\n\n  return parsedPath;\n}\nfunction createClientSideURL(location) {\n  // window.location.origin is \"null\" (the literal string value) in Firefox\n  // under certain conditions, notably when serving from a local HTML file\n  // See https://bugzilla.mozilla.org/show_bug.cgi?id=878297\n  let base = typeof window !== \"undefined\" && typeof window.location !== \"undefined\" && window.location.origin !== \"null\" ? window.location.origin : window.location.href;\n  let href = typeof location === \"string\" ? location : createPath(location);\n  invariant(base, \"No window.location.(origin|href) available to create URL for href: \" + href);\n  return new URL(href, base);\n}\n\nfunction getUrlBasedHistory(getLocation, createHref, validateLocation, options) {\n  if (options === void 0) {\n    options = {};\n  }\n\n  let {\n    window = document.defaultView,\n    v5Compat = false\n  } = options;\n  let globalHistory = window.history;\n  let action = Action.Pop;\n  let listener = null;\n\n  function handlePop() {\n    action = Action.Pop;\n\n    if (listener) {\n      listener({\n        action,\n        location: history.location\n      });\n    }\n  }\n\n  function push(to, state) {\n    action = Action.Push;\n    let location = createLocation(history.location, to, state);\n    if (validateLocation) validateLocation(location, to);\n    let historyState = getHistoryState(location);\n    let url = history.createHref(location); // try...catch because iOS limits us to 100 pushState calls :/\n\n    try {\n      globalHistory.pushState(historyState, \"\", url);\n    } catch (error) {\n      // They are going to lose state here, but there is no real\n      // way to warn them about it since the page will refresh...\n      window.location.assign(url);\n    }\n\n    if (v5Compat && listener) {\n      listener({\n        action,\n        location: history.location\n      });\n    }\n  }\n\n  function replace(to, state) {\n    action = Action.Replace;\n    let location = createLocation(history.location, to, state);\n    if (validateLocation) validateLocation(location, to);\n    let historyState = getHistoryState(location);\n    let url = history.createHref(location);\n    globalHistory.replaceState(historyState, \"\", url);\n\n    if (v5Compat && listener) {\n      listener({\n        action,\n        location: history.location\n      });\n    }\n  }\n\n  let history = {\n    get action() {\n      return action;\n    },\n\n    get location() {\n      return getLocation(window, globalHistory);\n    },\n\n    listen(fn) {\n      if (listener) {\n        throw new Error(\"A history only accepts one active listener\");\n      }\n\n      window.addEventListener(PopStateEventType, handlePop);\n      listener = fn;\n      return () => {\n        window.removeEventListener(PopStateEventType, handlePop);\n        listener = null;\n      };\n    },\n\n    createHref(to) {\n      return createHref(window, to);\n    },\n\n    encodeLocation(to) {\n      // Encode a Location the same way window.location would\n      let url = createClientSideURL(typeof to === \"string\" ? to : createPath(to));\n      return {\n        pathname: url.pathname,\n        search: url.search,\n        hash: url.hash\n      };\n    },\n\n    push,\n    replace,\n\n    go(n) {\n      return globalHistory.go(n);\n    }\n\n  };\n  return history;\n} //#endregion\n\nvar ResultType;\n\n(function (ResultType) {\n  ResultType[\"data\"] = \"data\";\n  ResultType[\"deferred\"] = \"deferred\";\n  ResultType[\"redirect\"] = \"redirect\";\n  ResultType[\"error\"] = \"error\";\n})(ResultType || (ResultType = {}));\n\nfunction isIndexRoute(route) {\n  return route.index === true;\n} // Walk the route tree generating unique IDs where necessary so we are working\n// solely with AgnosticDataRouteObject's within the Router\n\n\nfunction convertRoutesToDataRoutes(routes, parentPath, allIds) {\n  if (parentPath === void 0) {\n    parentPath = [];\n  }\n\n  if (allIds === void 0) {\n    allIds = new Set();\n  }\n\n  return routes.map((route, index) => {\n    let treePath = [...parentPath, index];\n    let id = typeof route.id === \"string\" ? route.id : treePath.join(\"-\");\n    invariant(route.index !== true || !route.children, \"Cannot specify children on an index route\");\n    invariant(!allIds.has(id), \"Found a route id collision on id \\\"\" + id + \"\\\".  Route \" + \"id's must be globally unique within Data Router usages\");\n    allIds.add(id);\n\n    if (isIndexRoute(route)) {\n      let indexRoute = _extends({}, route, {\n        id\n      });\n\n      return indexRoute;\n    } else {\n      let pathOrLayoutRoute = _extends({}, route, {\n        id,\n        children: route.children ? convertRoutesToDataRoutes(route.children, treePath, allIds) : undefined\n      });\n\n      return pathOrLayoutRoute;\n    }\n  });\n}\n/**\n * Matches the given routes to a location and returns the match data.\n *\n * @see https://reactrouter.com/utils/match-routes\n */\n\nfunction matchRoutes(routes, locationArg, basename) {\n  if (basename === void 0) {\n    basename = \"/\";\n  }\n\n  let location = typeof locationArg === \"string\" ? parsePath(locationArg) : locationArg;\n  let pathname = stripBasename(location.pathname || \"/\", basename);\n\n  if (pathname == null) {\n    return null;\n  }\n\n  let branches = flattenRoutes(routes);\n  rankRouteBranches(branches);\n  let matches = null;\n\n  for (let i = 0; matches == null && i < branches.length; ++i) {\n    matches = matchRouteBranch(branches[i], // Incoming pathnames are generally encoded from either window.location\n    // or from router.navigate, but we want to match against the unencoded\n    // paths in the route definitions.  Memory router locations won't be\n    // encoded here but there also shouldn't be anything to decode so this\n    // should be a safe operation.  This avoids needing matchRoutes to be\n    // history-aware.\n    safelyDecodeURI(pathname));\n  }\n\n  return matches;\n}\n\nfunction flattenRoutes(routes, branches, parentsMeta, parentPath) {\n  if (branches === void 0) {\n    branches = [];\n  }\n\n  if (parentsMeta === void 0) {\n    parentsMeta = [];\n  }\n\n  if (parentPath === void 0) {\n    parentPath = \"\";\n  }\n\n  routes.forEach((route, index) => {\n    let meta = {\n      relativePath: route.path || \"\",\n      caseSensitive: route.caseSensitive === true,\n      childrenIndex: index,\n      route\n    };\n\n    if (meta.relativePath.startsWith(\"/\")) {\n      invariant(meta.relativePath.startsWith(parentPath), \"Absolute route path \\\"\" + meta.relativePath + \"\\\" nested under path \" + (\"\\\"\" + parentPath + \"\\\" is not valid. An absolute child route path \") + \"must start with the combined path of all its parent routes.\");\n      meta.relativePath = meta.relativePath.slice(parentPath.length);\n    }\n\n    let path = joinPaths([parentPath, meta.relativePath]);\n    let routesMeta = parentsMeta.concat(meta); // Add the children before adding this route to the array so we traverse the\n    // route tree depth-first and child routes appear before their parents in\n    // the \"flattened\" version.\n\n    if (route.children && route.children.length > 0) {\n      invariant( // Our types know better, but runtime JS may not!\n      // @ts-expect-error\n      route.index !== true, \"Index routes must not have child routes. Please remove \" + (\"all child routes from route path \\\"\" + path + \"\\\".\"));\n      flattenRoutes(route.children, branches, routesMeta, path);\n    } // Routes without a path shouldn't ever match by themselves unless they are\n    // index routes, so don't add them to the list of possible branches.\n\n\n    if (route.path == null && !route.index) {\n      return;\n    }\n\n    branches.push({\n      path,\n      score: computeScore(path, route.index),\n      routesMeta\n    });\n  });\n  return branches;\n}\n\nfunction rankRouteBranches(branches) {\n  branches.sort((a, b) => a.score !== b.score ? b.score - a.score // Higher score first\n  : compareIndexes(a.routesMeta.map(meta => meta.childrenIndex), b.routesMeta.map(meta => meta.childrenIndex)));\n}\n\nconst paramRe = /^:\\w+$/;\nconst dynamicSegmentValue = 3;\nconst indexRouteValue = 2;\nconst emptySegmentValue = 1;\nconst staticSegmentValue = 10;\nconst splatPenalty = -2;\n\nconst isSplat = s => s === \"*\";\n\nfunction computeScore(path, index) {\n  let segments = path.split(\"/\");\n  let initialScore = segments.length;\n\n  if (segments.some(isSplat)) {\n    initialScore += splatPenalty;\n  }\n\n  if (index) {\n    initialScore += indexRouteValue;\n  }\n\n  return segments.filter(s => !isSplat(s)).reduce((score, segment) => score + (paramRe.test(segment) ? dynamicSegmentValue : segment === \"\" ? emptySegmentValue : staticSegmentValue), initialScore);\n}\n\nfunction compareIndexes(a, b) {\n  let siblings = a.length === b.length && a.slice(0, -1).every((n, i) => n === b[i]);\n  return siblings ? // If two routes are siblings, we should try to match the earlier sibling\n  // first. This allows people to have fine-grained control over the matching\n  // behavior by simply putting routes with identical paths in the order they\n  // want them tried.\n  a[a.length - 1] - b[b.length - 1] : // Otherwise, it doesn't really make sense to rank non-siblings by index,\n  // so they sort equally.\n  0;\n}\n\nfunction matchRouteBranch(branch, pathname) {\n  let {\n    routesMeta\n  } = branch;\n  let matchedParams = {};\n  let matchedPathname = \"/\";\n  let matches = [];\n\n  for (let i = 0; i < routesMeta.length; ++i) {\n    let meta = routesMeta[i];\n    let end = i === routesMeta.length - 1;\n    let remainingPathname = matchedPathname === \"/\" ? pathname : pathname.slice(matchedPathname.length) || \"/\";\n    let match = matchPath({\n      path: meta.relativePath,\n      caseSensitive: meta.caseSensitive,\n      end\n    }, remainingPathname);\n    if (!match) return null;\n    Object.assign(matchedParams, match.params);\n    let route = meta.route;\n    matches.push({\n      // TODO: Can this as be avoided?\n      params: matchedParams,\n      pathname: joinPaths([matchedPathname, match.pathname]),\n      pathnameBase: normalizePathname(joinPaths([matchedPathname, match.pathnameBase])),\n      route\n    });\n\n    if (match.pathnameBase !== \"/\") {\n      matchedPathname = joinPaths([matchedPathname, match.pathnameBase]);\n    }\n  }\n\n  return matches;\n}\n/**\n * Returns a path with params interpolated.\n *\n * @see https://reactrouter.com/utils/generate-path\n */\n\n\nfunction generatePath(path, params) {\n  if (params === void 0) {\n    params = {};\n  }\n\n  return path.replace(/:(\\w+)/g, (_, key) => {\n    invariant(params[key] != null, \"Missing \\\":\" + key + \"\\\" param\");\n    return params[key];\n  }).replace(/(\\/?)\\*/, (_, prefix, __, str) => {\n    const star = \"*\";\n\n    if (params[star] == null) {\n      // If no splat was provided, trim the trailing slash _unless_ it's\n      // the entire path\n      return str === \"/*\" ? \"/\" : \"\";\n    } // Apply the splat\n\n\n    return \"\" + prefix + params[star];\n  });\n}\n/**\n * Performs pattern matching on a URL pathname and returns information about\n * the match.\n *\n * @see https://reactrouter.com/utils/match-path\n */\n\nfunction matchPath(pattern, pathname) {\n  if (typeof pattern === \"string\") {\n    pattern = {\n      path: pattern,\n      caseSensitive: false,\n      end: true\n    };\n  }\n\n  let [matcher, paramNames] = compilePath(pattern.path, pattern.caseSensitive, pattern.end);\n  let match = pathname.match(matcher);\n  if (!match) return null;\n  let matchedPathname = match[0];\n  let pathnameBase = matchedPathname.replace(/(.)\\/+$/, \"$1\");\n  let captureGroups = match.slice(1);\n  let params = paramNames.reduce((memo, paramName, index) => {\n    // We need to compute the pathnameBase here using the raw splat value\n    // instead of using params[\"*\"] later because it will be decoded then\n    if (paramName === \"*\") {\n      let splatValue = captureGroups[index] || \"\";\n      pathnameBase = matchedPathname.slice(0, matchedPathname.length - splatValue.length).replace(/(.)\\/+$/, \"$1\");\n    }\n\n    memo[paramName] = safelyDecodeURIComponent(captureGroups[index] || \"\", paramName);\n    return memo;\n  }, {});\n  return {\n    params,\n    pathname: matchedPathname,\n    pathnameBase,\n    pattern\n  };\n}\n\nfunction compilePath(path, caseSensitive, end) {\n  if (caseSensitive === void 0) {\n    caseSensitive = false;\n  }\n\n  if (end === void 0) {\n    end = true;\n  }\n\n  warning(path === \"*\" || !path.endsWith(\"*\") || path.endsWith(\"/*\"), \"Route path \\\"\" + path + \"\\\" will be treated as if it were \" + (\"\\\"\" + path.replace(/\\*$/, \"/*\") + \"\\\" because the `*` character must \") + \"always follow a `/` in the pattern. To get rid of this warning, \" + (\"please change the route path to \\\"\" + path.replace(/\\*$/, \"/*\") + \"\\\".\"));\n  let paramNames = [];\n  let regexpSource = \"^\" + path.replace(/\\/*\\*?$/, \"\") // Ignore trailing / and /*, we'll handle it below\n  .replace(/^\\/*/, \"/\") // Make sure it has a leading /\n  .replace(/[\\\\.*+^$?{}|()[\\]]/g, \"\\\\$&\") // Escape special regex chars\n  .replace(/:(\\w+)/g, (_, paramName) => {\n    paramNames.push(paramName);\n    return \"([^\\\\/]+)\";\n  });\n\n  if (path.endsWith(\"*\")) {\n    paramNames.push(\"*\");\n    regexpSource += path === \"*\" || path === \"/*\" ? \"(.*)$\" // Already matched the initial /, just match the rest\n    : \"(?:\\\\/(.+)|\\\\/*)$\"; // Don't include the / in params[\"*\"]\n  } else if (end) {\n    // When matching to the end, ignore trailing slashes\n    regexpSource += \"\\\\/*$\";\n  } else if (path !== \"\" && path !== \"/\") {\n    // If our path is non-empty and contains anything beyond an initial slash,\n    // then we have _some_ form of path in our regex so we should expect to\n    // match only if we find the end of this path segment.  Look for an optional\n    // non-captured trailing slash (to match a portion of the URL) or the end\n    // of the path (if we've matched to the end).  We used to do this with a\n    // word boundary but that gives false positives on routes like\n    // /user-preferences since `-` counts as a word boundary.\n    regexpSource += \"(?:(?=\\\\/|$))\";\n  } else ;\n\n  let matcher = new RegExp(regexpSource, caseSensitive ? undefined : \"i\");\n  return [matcher, paramNames];\n}\n\nfunction safelyDecodeURI(value) {\n  try {\n    return decodeURI(value);\n  } catch (error) {\n    warning(false, \"The URL path \\\"\" + value + \"\\\" could not be decoded because it is is a \" + \"malformed URL segment. This is probably due to a bad percent \" + (\"encoding (\" + error + \").\"));\n    return value;\n  }\n}\n\nfunction safelyDecodeURIComponent(value, paramName) {\n  try {\n    return decodeURIComponent(value);\n  } catch (error) {\n    warning(false, \"The value for the URL param \\\"\" + paramName + \"\\\" will not be decoded because\" + (\" the string \\\"\" + value + \"\\\" is a malformed URL segment. This is probably\") + (\" due to a bad percent encoding (\" + error + \").\"));\n    return value;\n  }\n}\n/**\n * @private\n */\n\n\nfunction stripBasename(pathname, basename) {\n  if (basename === \"/\") return pathname;\n\n  if (!pathname.toLowerCase().startsWith(basename.toLowerCase())) {\n    return null;\n  } // We want to leave trailing slash behavior in the user's control, so if they\n  // specify a basename with a trailing slash, we should support it\n\n\n  let startIndex = basename.endsWith(\"/\") ? basename.length - 1 : basename.length;\n  let nextChar = pathname.charAt(startIndex);\n\n  if (nextChar && nextChar !== \"/\") {\n    // pathname does not start with basename/\n    return null;\n  }\n\n  return pathname.slice(startIndex) || \"/\";\n}\n/**\n * @private\n */\n\nfunction warning(cond, message) {\n  if (!cond) {\n    // eslint-disable-next-line no-console\n    if (typeof console !== \"undefined\") console.warn(message);\n\n    try {\n      // Welcome to debugging React Router!\n      //\n      // This error is thrown as a convenience so you can more easily\n      // find the source for a warning that appears in the console by\n      // enabling \"pause on exceptions\" in your JavaScript debugger.\n      throw new Error(message); // eslint-disable-next-line no-empty\n    } catch (e) {}\n  }\n}\n/**\n * Returns a resolved path object relative to the given pathname.\n *\n * @see https://reactrouter.com/utils/resolve-path\n */\n\nfunction resolvePath(to, fromPathname) {\n  if (fromPathname === void 0) {\n    fromPathname = \"/\";\n  }\n\n  let {\n    pathname: toPathname,\n    search = \"\",\n    hash = \"\"\n  } = typeof to === \"string\" ? parsePath(to) : to;\n  let pathname = toPathname ? toPathname.startsWith(\"/\") ? toPathname : resolvePathname(toPathname, fromPathname) : fromPathname;\n  return {\n    pathname,\n    search: normalizeSearch(search),\n    hash: normalizeHash(hash)\n  };\n}\n\nfunction resolvePathname(relativePath, fromPathname) {\n  let segments = fromPathname.replace(/\\/+$/, \"\").split(\"/\");\n  let relativeSegments = relativePath.split(\"/\");\n  relativeSegments.forEach(segment => {\n    if (segment === \"..\") {\n      // Keep the root \"\" segment so the pathname starts at /\n      if (segments.length > 1) segments.pop();\n    } else if (segment !== \".\") {\n      segments.push(segment);\n    }\n  });\n  return segments.length > 1 ? segments.join(\"/\") : \"/\";\n}\n\nfunction getInvalidPathError(char, field, dest, path) {\n  return \"Cannot include a '\" + char + \"' character in a manually specified \" + (\"`to.\" + field + \"` field [\" + JSON.stringify(path) + \"].  Please separate it out to the \") + (\"`to.\" + dest + \"` field. Alternatively you may provide the full path as \") + \"a string in <Link to=\\\"...\\\"> and the router will parse it for you.\";\n}\n/**\n * @private\n *\n * When processing relative navigation we want to ignore ancestor routes that\n * do not contribute to the path, such that index/pathless layout routes don't\n * interfere.\n *\n * For example, when moving a route element into an index route and/or a\n * pathless layout route, relative link behavior contained within should stay\n * the same.  Both of the following examples should link back to the root:\n *\n *   <Route path=\"/\">\n *     <Route path=\"accounts\" element={<Link to=\"..\"}>\n *   </Route>\n *\n *   <Route path=\"/\">\n *     <Route path=\"accounts\">\n *       <Route element={<AccountsLayout />}>       // <-- Does not contribute\n *         <Route index element={<Link to=\"..\"} />  // <-- Does not contribute\n *       </Route\n *     </Route>\n *   </Route>\n */\n\n\nfunction getPathContributingMatches(matches) {\n  return matches.filter((match, index) => index === 0 || match.route.path && match.route.path.length > 0);\n}\n/**\n * @private\n */\n\nfunction resolveTo(toArg, routePathnames, locationPathname, isPathRelative) {\n  if (isPathRelative === void 0) {\n    isPathRelative = false;\n  }\n\n  let to;\n\n  if (typeof toArg === \"string\") {\n    to = parsePath(toArg);\n  } else {\n    to = _extends({}, toArg);\n    invariant(!to.pathname || !to.pathname.includes(\"?\"), getInvalidPathError(\"?\", \"pathname\", \"search\", to));\n    invariant(!to.pathname || !to.pathname.includes(\"#\"), getInvalidPathError(\"#\", \"pathname\", \"hash\", to));\n    invariant(!to.search || !to.search.includes(\"#\"), getInvalidPathError(\"#\", \"search\", \"hash\", to));\n  }\n\n  let isEmptyPath = toArg === \"\" || to.pathname === \"\";\n  let toPathname = isEmptyPath ? \"/\" : to.pathname;\n  let from; // Routing is relative to the current pathname if explicitly requested.\n  //\n  // If a pathname is explicitly provided in `to`, it should be relative to the\n  // route context. This is explained in `Note on `<Link to>` values` in our\n  // migration guide from v5 as a means of disambiguation between `to` values\n  // that begin with `/` and those that do not. However, this is problematic for\n  // `to` values that do not provide a pathname. `to` can simply be a search or\n  // hash string, in which case we should assume that the navigation is relative\n  // to the current location's pathname and *not* the route pathname.\n\n  if (isPathRelative || toPathname == null) {\n    from = locationPathname;\n  } else {\n    let routePathnameIndex = routePathnames.length - 1;\n\n    if (toPathname.startsWith(\"..\")) {\n      let toSegments = toPathname.split(\"/\"); // Each leading .. segment means \"go up one route\" instead of \"go up one\n      // URL segment\".  This is a key difference from how <a href> works and a\n      // major reason we call this a \"to\" value instead of a \"href\".\n\n      while (toSegments[0] === \"..\") {\n        toSegments.shift();\n        routePathnameIndex -= 1;\n      }\n\n      to.pathname = toSegments.join(\"/\");\n    } // If there are more \"..\" segments than parent routes, resolve relative to\n    // the root / URL.\n\n\n    from = routePathnameIndex >= 0 ? routePathnames[routePathnameIndex] : \"/\";\n  }\n\n  let path = resolvePath(to, from); // Ensure the pathname has a trailing slash if the original \"to\" had one\n\n  let hasExplicitTrailingSlash = toPathname && toPathname !== \"/\" && toPathname.endsWith(\"/\"); // Or if this was a link to the current path which has a trailing slash\n\n  let hasCurrentTrailingSlash = (isEmptyPath || toPathname === \".\") && locationPathname.endsWith(\"/\");\n\n  if (!path.pathname.endsWith(\"/\") && (hasExplicitTrailingSlash || hasCurrentTrailingSlash)) {\n    path.pathname += \"/\";\n  }\n\n  return path;\n}\n/**\n * @private\n */\n\nfunction getToPathname(to) {\n  // Empty strings should be treated the same as / paths\n  return to === \"\" || to.pathname === \"\" ? \"/\" : typeof to === \"string\" ? parsePath(to).pathname : to.pathname;\n}\n/**\n * @private\n */\n\nconst joinPaths = paths => paths.join(\"/\").replace(/\\/\\/+/g, \"/\");\n/**\n * @private\n */\n\nconst normalizePathname = pathname => pathname.replace(/\\/+$/, \"\").replace(/^\\/*/, \"/\");\n/**\n * @private\n */\n\nconst normalizeSearch = search => !search || search === \"?\" ? \"\" : search.startsWith(\"?\") ? search : \"?\" + search;\n/**\n * @private\n */\n\nconst normalizeHash = hash => !hash || hash === \"#\" ? \"\" : hash.startsWith(\"#\") ? hash : \"#\" + hash;\n/**\n * This is a shortcut for creating `application/json` responses. Converts `data`\n * to JSON and sets the `Content-Type` header.\n */\n\nconst json = function json(data, init) {\n  if (init === void 0) {\n    init = {};\n  }\n\n  let responseInit = typeof init === \"number\" ? {\n    status: init\n  } : init;\n  let headers = new Headers(responseInit.headers);\n\n  if (!headers.has(\"Content-Type\")) {\n    headers.set(\"Content-Type\", \"application/json; charset=utf-8\");\n  }\n\n  return new Response(JSON.stringify(data), _extends({}, responseInit, {\n    headers\n  }));\n};\nclass AbortedDeferredError extends Error {}\nclass DeferredData {\n  constructor(data) {\n    this.pendingKeys = new Set();\n    this.subscriber = undefined;\n    invariant(data && typeof data === \"object\" && !Array.isArray(data), \"defer() only accepts plain objects\"); // Set up an AbortController + Promise we can race against to exit early\n    // cancellation\n\n    let reject;\n    this.abortPromise = new Promise((_, r) => reject = r);\n    this.controller = new AbortController();\n\n    let onAbort = () => reject(new AbortedDeferredError(\"Deferred data aborted\"));\n\n    this.unlistenAbortSignal = () => this.controller.signal.removeEventListener(\"abort\", onAbort);\n\n    this.controller.signal.addEventListener(\"abort\", onAbort);\n    this.data = Object.entries(data).reduce((acc, _ref) => {\n      let [key, value] = _ref;\n      return Object.assign(acc, {\n        [key]: this.trackPromise(key, value)\n      });\n    }, {});\n  }\n\n  trackPromise(key, value) {\n    if (!(value instanceof Promise)) {\n      return value;\n    }\n\n    this.pendingKeys.add(key); // We store a little wrapper promise that will be extended with\n    // _data/_error props upon resolve/reject\n\n    let promise = Promise.race([value, this.abortPromise]).then(data => this.onSettle(promise, key, null, data), error => this.onSettle(promise, key, error)); // Register rejection listeners to avoid uncaught promise rejections on\n    // errors or aborted deferred values\n\n    promise.catch(() => {});\n    Object.defineProperty(promise, \"_tracked\", {\n      get: () => true\n    });\n    return promise;\n  }\n\n  onSettle(promise, key, error, data) {\n    if (this.controller.signal.aborted && error instanceof AbortedDeferredError) {\n      this.unlistenAbortSignal();\n      Object.defineProperty(promise, \"_error\", {\n        get: () => error\n      });\n      return Promise.reject(error);\n    }\n\n    this.pendingKeys.delete(key);\n\n    if (this.done) {\n      // Nothing left to abort!\n      this.unlistenAbortSignal();\n    }\n\n    const subscriber = this.subscriber;\n\n    if (error) {\n      Object.defineProperty(promise, \"_error\", {\n        get: () => error\n      });\n      subscriber && subscriber(false);\n      return Promise.reject(error);\n    }\n\n    Object.defineProperty(promise, \"_data\", {\n      get: () => data\n    });\n    subscriber && subscriber(false);\n    return data;\n  }\n\n  subscribe(fn) {\n    this.subscriber = fn;\n  }\n\n  cancel() {\n    this.controller.abort();\n    this.pendingKeys.forEach((v, k) => this.pendingKeys.delete(k));\n    let subscriber = this.subscriber;\n    subscriber && subscriber(true);\n  }\n\n  async resolveData(signal) {\n    let aborted = false;\n\n    if (!this.done) {\n      let onAbort = () => this.cancel();\n\n      signal.addEventListener(\"abort\", onAbort);\n      aborted = await new Promise(resolve => {\n        this.subscribe(aborted => {\n          signal.removeEventListener(\"abort\", onAbort);\n\n          if (aborted || this.done) {\n            resolve(aborted);\n          }\n        });\n      });\n    }\n\n    return aborted;\n  }\n\n  get done() {\n    return this.pendingKeys.size === 0;\n  }\n\n  get unwrappedData() {\n    invariant(this.data !== null && this.done, \"Can only unwrap data on initialized and settled deferreds\");\n    return Object.entries(this.data).reduce((acc, _ref2) => {\n      let [key, value] = _ref2;\n      return Object.assign(acc, {\n        [key]: unwrapTrackedPromise(value)\n      });\n    }, {});\n  }\n\n}\n\nfunction isTrackedPromise(value) {\n  return value instanceof Promise && value._tracked === true;\n}\n\nfunction unwrapTrackedPromise(value) {\n  if (!isTrackedPromise(value)) {\n    return value;\n  }\n\n  if (value._error) {\n    throw value._error;\n  }\n\n  return value._data;\n}\n\nfunction defer(data) {\n  return new DeferredData(data);\n}\n/**\n * A redirect response. Sets the status code and the `Location` header.\n * Defaults to \"302 Found\".\n */\n\nconst redirect = function redirect(url, init) {\n  if (init === void 0) {\n    init = 302;\n  }\n\n  let responseInit = init;\n\n  if (typeof responseInit === \"number\") {\n    responseInit = {\n      status: responseInit\n    };\n  } else if (typeof responseInit.status === \"undefined\") {\n    responseInit.status = 302;\n  }\n\n  let headers = new Headers(responseInit.headers);\n  headers.set(\"Location\", url);\n  return new Response(null, _extends({}, responseInit, {\n    headers\n  }));\n};\n/**\n * @private\n * Utility class we use to hold auto-unwrapped 4xx/5xx Response bodies\n */\n\nclass ErrorResponse {\n  constructor(status, statusText, data, internal) {\n    if (internal === void 0) {\n      internal = false;\n    }\n\n    this.status = status;\n    this.statusText = statusText || \"\";\n    this.internal = internal;\n\n    if (data instanceof Error) {\n      this.data = data.toString();\n      this.error = data;\n    } else {\n      this.data = data;\n    }\n  }\n\n}\n/**\n * Check if the given error is an ErrorResponse generated from a 4xx/5xx\n * Response throw from an action/loader\n */\n\nfunction isRouteErrorResponse(e) {\n  return e instanceof ErrorResponse;\n}\n\nconst validActionMethodsArr = [\"post\", \"put\", \"patch\", \"delete\"];\nconst validActionMethods = new Set(validActionMethodsArr);\nconst validRequestMethodsArr = [\"get\", ...validActionMethodsArr];\nconst validRequestMethods = new Set(validRequestMethodsArr);\nconst redirectStatusCodes = new Set([301, 302, 303, 307, 308]);\nconst redirectPreserveMethodStatusCodes = new Set([307, 308]);\nconst IDLE_NAVIGATION = {\n  state: \"idle\",\n  location: undefined,\n  formMethod: undefined,\n  formAction: undefined,\n  formEncType: undefined,\n  formData: undefined\n};\nconst IDLE_FETCHER = {\n  state: \"idle\",\n  data: undefined,\n  formMethod: undefined,\n  formAction: undefined,\n  formEncType: undefined,\n  formData: undefined\n};\nconst isBrowser = typeof window !== \"undefined\" && typeof window.document !== \"undefined\" && typeof window.document.createElement !== \"undefined\";\nconst isServer = !isBrowser; //#endregion\n////////////////////////////////////////////////////////////////////////////////\n//#region createRouter\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Create a router and listen to history POP navigations\n */\n\nfunction createRouter(init) {\n  invariant(init.routes.length > 0, \"You must provide a non-empty routes array to createRouter\");\n  let dataRoutes = convertRoutesToDataRoutes(init.routes); // Cleanup function for history\n\n  let unlistenHistory = null; // Externally-provided functions to call on all state changes\n\n  let subscribers = new Set(); // Externally-provided object to hold scroll restoration locations during routing\n\n  let savedScrollPositions = null; // Externally-provided function to get scroll restoration keys\n\n  let getScrollRestorationKey = null; // Externally-provided function to get current scroll position\n\n  let getScrollPosition = null; // One-time flag to control the initial hydration scroll restoration.  Because\n  // we don't get the saved positions from <ScrollRestoration /> until _after_\n  // the initial render, we need to manually trigger a separate updateState to\n  // send along the restoreScrollPosition\n\n  let initialScrollRestored = false;\n  let initialMatches = matchRoutes(dataRoutes, init.history.location, init.basename);\n  let initialErrors = null;\n\n  if (initialMatches == null) {\n    // If we do not match a user-provided-route, fall back to the root\n    // to allow the error boundary to take over\n    let error = getInternalRouterError(404, {\n      pathname: init.history.location.pathname\n    });\n    let {\n      matches,\n      route\n    } = getShortCircuitMatches(dataRoutes);\n    initialMatches = matches;\n    initialErrors = {\n      [route.id]: error\n    };\n  }\n\n  let initialized = !initialMatches.some(m => m.route.loader) || init.hydrationData != null;\n  let router;\n  let state = {\n    historyAction: init.history.action,\n    location: init.history.location,\n    matches: initialMatches,\n    initialized,\n    navigation: IDLE_NAVIGATION,\n    restoreScrollPosition: null,\n    preventScrollReset: false,\n    revalidation: \"idle\",\n    loaderData: init.hydrationData && init.hydrationData.loaderData || {},\n    actionData: init.hydrationData && init.hydrationData.actionData || null,\n    errors: init.hydrationData && init.hydrationData.errors || initialErrors,\n    fetchers: new Map()\n  }; // -- Stateful internal variables to manage navigations --\n  // Current navigation in progress (to be committed in completeNavigation)\n\n  let pendingAction = Action.Pop; // Should the current navigation prevent the scroll reset if scroll cannot\n  // be restored?\n\n  let pendingPreventScrollReset = false; // AbortController for the active navigation\n\n  let pendingNavigationController; // We use this to avoid touching history in completeNavigation if a\n  // revalidation is entirely uninterrupted\n\n  let isUninterruptedRevalidation = false; // Use this internal flag to force revalidation of all loaders:\n  //  - submissions (completed or interrupted)\n  //  - useRevalidate()\n  //  - X-Remix-Revalidate (from redirect)\n\n  let isRevalidationRequired = false; // Use this internal array to capture routes that require revalidation due\n  // to a cancelled deferred on action submission\n\n  let cancelledDeferredRoutes = []; // Use this internal array to capture fetcher loads that were cancelled by an\n  // action navigation and require revalidation\n\n  let cancelledFetcherLoads = []; // AbortControllers for any in-flight fetchers\n\n  let fetchControllers = new Map(); // Track loads based on the order in which they started\n\n  let incrementingLoadId = 0; // Track the outstanding pending navigation data load to be compared against\n  // the globally incrementing load when a fetcher load lands after a completed\n  // navigation\n\n  let pendingNavigationLoadId = -1; // Fetchers that triggered data reloads as a result of their actions\n\n  let fetchReloadIds = new Map(); // Fetchers that triggered redirect navigations from their actions\n\n  let fetchRedirectIds = new Set(); // Most recent href/match for fetcher.load calls for fetchers\n\n  let fetchLoadMatches = new Map(); // Store DeferredData instances for active route matches.  When a\n  // route loader returns defer() we stick one in here.  Then, when a nested\n  // promise resolves we update loaderData.  If a new navigation starts we\n  // cancel active deferreds for eliminated routes.\n\n  let activeDeferreds = new Map(); // Initialize the router, all side effects should be kicked off from here.\n  // Implemented as a Fluent API for ease of:\n  //   let router = createRouter(init).initialize();\n\n  function initialize() {\n    // If history informs us of a POP navigation, start the navigation but do not update\n    // state.  We'll update our own state once the navigation completes\n    unlistenHistory = init.history.listen(_ref => {\n      let {\n        action: historyAction,\n        location\n      } = _ref;\n      return startNavigation(historyAction, location);\n    }); // Kick off initial data load if needed.  Use Pop to avoid modifying history\n\n    if (!state.initialized) {\n      startNavigation(Action.Pop, state.location);\n    }\n\n    return router;\n  } // Clean up a router and it's side effects\n\n\n  function dispose() {\n    if (unlistenHistory) {\n      unlistenHistory();\n    }\n\n    subscribers.clear();\n    pendingNavigationController && pendingNavigationController.abort();\n    state.fetchers.forEach((_, key) => deleteFetcher(key));\n  } // Subscribe to state updates for the router\n\n\n  function subscribe(fn) {\n    subscribers.add(fn);\n    return () => subscribers.delete(fn);\n  } // Update our state and notify the calling context of the change\n\n\n  function updateState(newState) {\n    state = _extends({}, state, newState);\n    subscribers.forEach(subscriber => subscriber(state));\n  } // Complete a navigation returning the state.navigation back to the IDLE_NAVIGATION\n  // and setting state.[historyAction/location/matches] to the new route.\n  // - Location is a required param\n  // - Navigation will always be set to IDLE_NAVIGATION\n  // - Can pass any other state in newState\n\n\n  function completeNavigation(location, newState) {\n    var _state$navigation$for;\n\n    // Deduce if we're in a loading/actionReload state:\n    // - We have committed actionData in the store\n    // - The current navigation was a submission\n    // - We're past the submitting state and into the loading state\n    // - The location we've finished loading is different from the submission\n    //   location, indicating we redirected from the action (avoids false\n    //   positives for loading/submissionRedirect when actionData returned\n    //   on a prior submission)\n    let isActionReload = state.actionData != null && state.navigation.formMethod != null && state.navigation.state === \"loading\" && ((_state$navigation$for = state.navigation.formAction) == null ? void 0 : _state$navigation$for.split(\"?\")[0]) === location.pathname; // Always preserve any existing loaderData from re-used routes\n\n    let newLoaderData = newState.loaderData ? {\n      loaderData: mergeLoaderData(state.loaderData, newState.loaderData, newState.matches || [])\n    } : {};\n    updateState(_extends({}, isActionReload ? {} : {\n      actionData: null\n    }, newState, newLoaderData, {\n      historyAction: pendingAction,\n      location,\n      initialized: true,\n      navigation: IDLE_NAVIGATION,\n      revalidation: \"idle\",\n      // Don't restore on submission navigations\n      restoreScrollPosition: state.navigation.formData ? false : getSavedScrollPosition(location, newState.matches || state.matches),\n      preventScrollReset: pendingPreventScrollReset\n    }));\n\n    if (isUninterruptedRevalidation) ; else if (pendingAction === Action.Pop) ; else if (pendingAction === Action.Push) {\n      init.history.push(location, location.state);\n    } else if (pendingAction === Action.Replace) {\n      init.history.replace(location, location.state);\n    } // Reset stateful navigation vars\n\n\n    pendingAction = Action.Pop;\n    pendingPreventScrollReset = false;\n    isUninterruptedRevalidation = false;\n    isRevalidationRequired = false;\n    cancelledDeferredRoutes = [];\n    cancelledFetcherLoads = [];\n  } // Trigger a navigation event, which can either be a numerical POP or a PUSH\n  // replace with an optional submission\n\n\n  async function navigate(to, opts) {\n    if (typeof to === \"number\") {\n      init.history.go(to);\n      return;\n    }\n\n    let {\n      path,\n      submission,\n      error\n    } = normalizeNavigateOptions(to, opts);\n    let location = createLocation(state.location, path, opts && opts.state); // When using navigate as a PUSH/REPLACE we aren't reading an already-encoded\n    // URL from window.location, so we need to encode it here so the behavior\n    // remains the same as POP and non-data-router usages.  new URL() does all\n    // the same encoding we'd get from a history.pushState/window.location read\n    // without having to touch history\n\n    location = _extends({}, location, init.history.encodeLocation(location));\n    let historyAction = (opts && opts.replace) === true || submission != null ? Action.Replace : Action.Push;\n    let preventScrollReset = opts && \"preventScrollReset\" in opts ? opts.preventScrollReset === true : undefined;\n    return await startNavigation(historyAction, location, {\n      submission,\n      // Send through the formData serialization error if we have one so we can\n      // render at the right error boundary after we match routes\n      pendingError: error,\n      preventScrollReset,\n      replace: opts && opts.replace\n    });\n  } // Revalidate all current loaders.  If a navigation is in progress or if this\n  // is interrupted by a navigation, allow this to \"succeed\" by calling all\n  // loaders during the next loader round\n\n\n  function revalidate() {\n    interruptActiveLoads();\n    updateState({\n      revalidation: \"loading\"\n    }); // If we're currently submitting an action, we don't need to start a new\n    // navigation, we'll just let the follow up loader execution call all loaders\n\n    if (state.navigation.state === \"submitting\") {\n      return;\n    } // If we're currently in an idle state, start a new navigation for the current\n    // action/location and mark it as uninterrupted, which will skip the history\n    // update in completeNavigation\n\n\n    if (state.navigation.state === \"idle\") {\n      startNavigation(state.historyAction, state.location, {\n        startUninterruptedRevalidation: true\n      });\n      return;\n    } // Otherwise, if we're currently in a loading state, just start a new\n    // navigation to the navigation.location but do not trigger an uninterrupted\n    // revalidation so that history correctly updates once the navigation completes\n\n\n    startNavigation(pendingAction || state.historyAction, state.navigation.location, {\n      overrideNavigation: state.navigation\n    });\n  } // Start a navigation to the given action/location.  Can optionally provide a\n  // overrideNavigation which will override the normalLoad in the case of a redirect\n  // navigation\n\n\n  async function startNavigation(historyAction, location, opts) {\n    // Abort any in-progress navigations and start a new one. Unset any ongoing\n    // uninterrupted revalidations unless told otherwise, since we want this\n    // new navigation to update history normally\n    pendingNavigationController && pendingNavigationController.abort();\n    pendingNavigationController = null;\n    pendingAction = historyAction;\n    isUninterruptedRevalidation = (opts && opts.startUninterruptedRevalidation) === true; // Save the current scroll position every time we start a new navigation,\n    // and track whether we should reset scroll on completion\n\n    saveScrollPosition(state.location, state.matches);\n    pendingPreventScrollReset = (opts && opts.preventScrollReset) === true;\n    let loadingNavigation = opts && opts.overrideNavigation;\n    let matches = matchRoutes(dataRoutes, location, init.basename); // Short circuit with a 404 on the root error boundary if we match nothing\n\n    if (!matches) {\n      let error = getInternalRouterError(404, {\n        pathname: location.pathname\n      });\n      let {\n        matches: notFoundMatches,\n        route\n      } = getShortCircuitMatches(dataRoutes); // Cancel all pending deferred on 404s since we don't keep any routes\n\n      cancelActiveDeferreds();\n      completeNavigation(location, {\n        matches: notFoundMatches,\n        loaderData: {},\n        errors: {\n          [route.id]: error\n        }\n      });\n      return;\n    } // Short circuit if it's only a hash change\n\n\n    if (isHashChangeOnly(state.location, location)) {\n      completeNavigation(location, {\n        matches\n      });\n      return;\n    } // Create a controller/Request for this navigation\n\n\n    pendingNavigationController = new AbortController();\n    let request = createClientSideRequest(location, pendingNavigationController.signal, opts && opts.submission);\n    let pendingActionData;\n    let pendingError;\n\n    if (opts && opts.pendingError) {\n      // If we have a pendingError, it means the user attempted a GET submission\n      // with binary FormData so assign here and skip to handleLoaders.  That\n      // way we handle calling loaders above the boundary etc.  It's not really\n      // different from an actionError in that sense.\n      pendingError = {\n        [findNearestBoundary(matches).route.id]: opts.pendingError\n      };\n    } else if (opts && opts.submission) {\n      // Call action if we received an action submission\n      let actionOutput = await handleAction(request, location, opts.submission, matches, {\n        replace: opts.replace\n      });\n\n      if (actionOutput.shortCircuited) {\n        return;\n      }\n\n      pendingActionData = actionOutput.pendingActionData;\n      pendingError = actionOutput.pendingActionError;\n\n      let navigation = _extends({\n        state: \"loading\",\n        location\n      }, opts.submission);\n\n      loadingNavigation = navigation; // Create a GET request for the loaders\n\n      request = new Request(request.url, {\n        signal: request.signal\n      });\n    } // Call loaders\n\n\n    let {\n      shortCircuited,\n      loaderData,\n      errors\n    } = await handleLoaders(request, location, matches, loadingNavigation, opts && opts.submission, opts && opts.replace, pendingActionData, pendingError);\n\n    if (shortCircuited) {\n      return;\n    } // Clean up now that the action/loaders have completed.  Don't clean up if\n    // we short circuited because pendingNavigationController will have already\n    // been assigned to a new controller for the next navigation\n\n\n    pendingNavigationController = null;\n    completeNavigation(location, {\n      matches,\n      loaderData,\n      errors\n    });\n  } // Call the action matched by the leaf route for this navigation and handle\n  // redirects/errors\n\n\n  async function handleAction(request, location, submission, matches, opts) {\n    interruptActiveLoads(); // Put us in a submitting state\n\n    let navigation = _extends({\n      state: \"submitting\",\n      location\n    }, submission);\n\n    updateState({\n      navigation\n    }); // Call our action and get the result\n\n    let result;\n    let actionMatch = getTargetMatch(matches, location);\n\n    if (!actionMatch.route.action) {\n      result = {\n        type: ResultType.error,\n        error: getInternalRouterError(405, {\n          method: request.method,\n          pathname: location.pathname,\n          routeId: actionMatch.route.id\n        })\n      };\n    } else {\n      result = await callLoaderOrAction(\"action\", request, actionMatch, matches, router.basename);\n\n      if (request.signal.aborted) {\n        return {\n          shortCircuited: true\n        };\n      }\n    }\n\n    if (isRedirectResult(result)) {\n      await startRedirectNavigation(state, result, opts && opts.replace === true);\n      return {\n        shortCircuited: true\n      };\n    }\n\n    if (isErrorResult(result)) {\n      // Store off the pending error - we use it to determine which loaders\n      // to call and will commit it when we complete the navigation\n      let boundaryMatch = findNearestBoundary(matches, actionMatch.route.id); // By default, all submissions are REPLACE navigations, but if the\n      // action threw an error that'll be rendered in an errorElement, we fall\n      // back to PUSH so that the user can use the back button to get back to\n      // the pre-submission form location to try again\n\n      if ((opts && opts.replace) !== true) {\n        pendingAction = Action.Push;\n      }\n\n      return {\n        pendingActionError: {\n          [boundaryMatch.route.id]: result.error\n        }\n      };\n    }\n\n    if (isDeferredResult(result)) {\n      throw new Error(\"defer() is not supported in actions\");\n    }\n\n    return {\n      pendingActionData: {\n        [actionMatch.route.id]: result.data\n      }\n    };\n  } // Call all applicable loaders for the given matches, handling redirects,\n  // errors, etc.\n\n\n  async function handleLoaders(request, location, matches, overrideNavigation, submission, replace, pendingActionData, pendingError) {\n    // Figure out the right navigation we want to use for data loading\n    let loadingNavigation = overrideNavigation;\n\n    if (!loadingNavigation) {\n      let navigation = {\n        state: \"loading\",\n        location,\n        formMethod: undefined,\n        formAction: undefined,\n        formEncType: undefined,\n        formData: undefined\n      };\n      loadingNavigation = navigation;\n    }\n\n    let [matchesToLoad, revalidatingFetchers] = getMatchesToLoad(state, matches, submission, location, isRevalidationRequired, cancelledDeferredRoutes, cancelledFetcherLoads, pendingActionData, pendingError, fetchLoadMatches); // Cancel pending deferreds for no-longer-matched routes or routes we're\n    // about to reload.  Note that if this is an action reload we would have\n    // already cancelled all pending deferreds so this would be a no-op\n\n    cancelActiveDeferreds(routeId => !(matches && matches.some(m => m.route.id === routeId)) || matchesToLoad && matchesToLoad.some(m => m.route.id === routeId)); // Short circuit if we have no loaders to run\n\n    if (matchesToLoad.length === 0 && revalidatingFetchers.length === 0) {\n      completeNavigation(location, {\n        matches,\n        loaderData: mergeLoaderData(state.loaderData, {}, matches),\n        // Commit pending error if we're short circuiting\n        errors: pendingError || null,\n        actionData: pendingActionData || null\n      });\n      return {\n        shortCircuited: true\n      };\n    } // If this is an uninterrupted revalidation, we remain in our current idle\n    // state.  If not, we need to switch to our loading state and load data,\n    // preserving any new action data or existing action data (in the case of\n    // a revalidation interrupting an actionReload)\n\n\n    if (!isUninterruptedRevalidation) {\n      revalidatingFetchers.forEach(_ref2 => {\n        let [key] = _ref2;\n        let fetcher = state.fetchers.get(key);\n        let revalidatingFetcher = {\n          state: \"loading\",\n          data: fetcher && fetcher.data,\n          formMethod: undefined,\n          formAction: undefined,\n          formEncType: undefined,\n          formData: undefined\n        };\n        state.fetchers.set(key, revalidatingFetcher);\n      });\n      updateState(_extends({\n        navigation: loadingNavigation,\n        actionData: pendingActionData || state.actionData || null\n      }, revalidatingFetchers.length > 0 ? {\n        fetchers: new Map(state.fetchers)\n      } : {}));\n    }\n\n    pendingNavigationLoadId = ++incrementingLoadId;\n    revalidatingFetchers.forEach(_ref3 => {\n      let [key] = _ref3;\n      return fetchControllers.set(key, pendingNavigationController);\n    });\n    let {\n      results,\n      loaderResults,\n      fetcherResults\n    } = await callLoadersAndMaybeResolveData(state.matches, matches, matchesToLoad, revalidatingFetchers, request);\n\n    if (request.signal.aborted) {\n      return {\n        shortCircuited: true\n      };\n    } // Clean up _after_ loaders have completed.  Don't clean up if we short\n    // circuited because fetchControllers would have been aborted and\n    // reassigned to new controllers for the next navigation\n\n\n    revalidatingFetchers.forEach(_ref4 => {\n      let [key] = _ref4;\n      return fetchControllers.delete(key);\n    }); // If any loaders returned a redirect Response, start a new REPLACE navigation\n\n    let redirect = findRedirect(results);\n\n    if (redirect) {\n      await startRedirectNavigation(state, redirect, replace);\n      return {\n        shortCircuited: true\n      };\n    } // Process and commit output from loaders\n\n\n    let {\n      loaderData,\n      errors\n    } = processLoaderData(state, matches, matchesToLoad, loaderResults, pendingError, revalidatingFetchers, fetcherResults, activeDeferreds); // Wire up subscribers to update loaderData as promises settle\n\n    activeDeferreds.forEach((deferredData, routeId) => {\n      deferredData.subscribe(aborted => {\n        // Note: No need to updateState here since the TrackedPromise on\n        // loaderData is stable across resolve/reject\n        // Remove this instance if we were aborted or if promises have settled\n        if (aborted || deferredData.done) {\n          activeDeferreds.delete(routeId);\n        }\n      });\n    });\n    markFetchRedirectsDone();\n    let didAbortFetchLoads = abortStaleFetchLoads(pendingNavigationLoadId);\n    return _extends({\n      loaderData,\n      errors\n    }, didAbortFetchLoads || revalidatingFetchers.length > 0 ? {\n      fetchers: new Map(state.fetchers)\n    } : {});\n  }\n\n  function getFetcher(key) {\n    return state.fetchers.get(key) || IDLE_FETCHER;\n  } // Trigger a fetcher load/submit for the given fetcher key\n\n\n  function fetch(key, routeId, href, opts) {\n    if (isServer) {\n      throw new Error(\"router.fetch() was called during the server render, but it shouldn't be. \" + \"You are likely calling a useFetcher() method in the body of your component. \" + \"Try moving it to a useEffect or a callback.\");\n    }\n\n    if (fetchControllers.has(key)) abortFetcher(key);\n    let matches = matchRoutes(dataRoutes, href, init.basename);\n\n    if (!matches) {\n      setFetcherError(key, routeId, getInternalRouterError(404, {\n        pathname: href\n      }));\n      return;\n    }\n\n    let {\n      path,\n      submission\n    } = normalizeNavigateOptions(href, opts, true);\n    let match = getTargetMatch(matches, path);\n\n    if (submission) {\n      handleFetcherAction(key, routeId, path, match, matches, submission);\n      return;\n    } // Store off the match so we can call it's shouldRevalidate on subsequent\n    // revalidations\n\n\n    fetchLoadMatches.set(key, [path, match, matches]);\n    handleFetcherLoader(key, routeId, path, match, matches);\n  } // Call the action for the matched fetcher.submit(), and then handle redirects,\n  // errors, and revalidation\n\n\n  async function handleFetcherAction(key, routeId, path, match, requestMatches, submission) {\n    interruptActiveLoads();\n    fetchLoadMatches.delete(key);\n\n    if (!match.route.action) {\n      let error = getInternalRouterError(405, {\n        method: submission.formMethod,\n        pathname: path,\n        routeId: routeId\n      });\n      setFetcherError(key, routeId, error);\n      return;\n    } // Put this fetcher into it's submitting state\n\n\n    let existingFetcher = state.fetchers.get(key);\n\n    let fetcher = _extends({\n      state: \"submitting\"\n    }, submission, {\n      data: existingFetcher && existingFetcher.data\n    });\n\n    state.fetchers.set(key, fetcher);\n    updateState({\n      fetchers: new Map(state.fetchers)\n    }); // Call the action for the fetcher\n\n    let abortController = new AbortController();\n    let fetchRequest = createClientSideRequest(path, abortController.signal, submission);\n    fetchControllers.set(key, abortController);\n    let actionResult = await callLoaderOrAction(\"action\", fetchRequest, match, requestMatches, router.basename);\n\n    if (fetchRequest.signal.aborted) {\n      // We can delete this so long as we weren't aborted by ou our own fetcher\n      // re-submit which would have put _new_ controller is in fetchControllers\n      if (fetchControllers.get(key) === abortController) {\n        fetchControllers.delete(key);\n      }\n\n      return;\n    }\n\n    if (isRedirectResult(actionResult)) {\n      fetchControllers.delete(key);\n      fetchRedirectIds.add(key);\n\n      let loadingFetcher = _extends({\n        state: \"loading\"\n      }, submission, {\n        data: undefined\n      });\n\n      state.fetchers.set(key, loadingFetcher);\n      updateState({\n        fetchers: new Map(state.fetchers)\n      });\n      return startRedirectNavigation(state, actionResult);\n    } // Process any non-redirect errors thrown\n\n\n    if (isErrorResult(actionResult)) {\n      setFetcherError(key, routeId, actionResult.error);\n      return;\n    }\n\n    if (isDeferredResult(actionResult)) {\n      invariant(false, \"defer() is not supported in actions\");\n    } // Start the data load for current matches, or the next location if we're\n    // in the middle of a navigation\n\n\n    let nextLocation = state.navigation.location || state.location;\n    let revalidationRequest = createClientSideRequest(nextLocation, abortController.signal);\n    let matches = state.navigation.state !== \"idle\" ? matchRoutes(dataRoutes, state.navigation.location, init.basename) : state.matches;\n    invariant(matches, \"Didn't find any matches after fetcher action\");\n    let loadId = ++incrementingLoadId;\n    fetchReloadIds.set(key, loadId);\n\n    let loadFetcher = _extends({\n      state: \"loading\",\n      data: actionResult.data\n    }, submission);\n\n    state.fetchers.set(key, loadFetcher);\n    let [matchesToLoad, revalidatingFetchers] = getMatchesToLoad(state, matches, submission, nextLocation, isRevalidationRequired, cancelledDeferredRoutes, cancelledFetcherLoads, {\n      [match.route.id]: actionResult.data\n    }, undefined, // No need to send through errors since we short circuit above\n    fetchLoadMatches); // Put all revalidating fetchers into the loading state, except for the\n    // current fetcher which we want to keep in it's current loading state which\n    // contains it's action submission info + action data\n\n    revalidatingFetchers.filter(_ref5 => {\n      let [staleKey] = _ref5;\n      return staleKey !== key;\n    }).forEach(_ref6 => {\n      let [staleKey] = _ref6;\n      let existingFetcher = state.fetchers.get(staleKey);\n      let revalidatingFetcher = {\n        state: \"loading\",\n        data: existingFetcher && existingFetcher.data,\n        formMethod: undefined,\n        formAction: undefined,\n        formEncType: undefined,\n        formData: undefined\n      };\n      state.fetchers.set(staleKey, revalidatingFetcher);\n      fetchControllers.set(staleKey, abortController);\n    });\n    updateState({\n      fetchers: new Map(state.fetchers)\n    });\n    let {\n      results,\n      loaderResults,\n      fetcherResults\n    } = await callLoadersAndMaybeResolveData(state.matches, matches, matchesToLoad, revalidatingFetchers, revalidationRequest);\n\n    if (abortController.signal.aborted) {\n      return;\n    }\n\n    fetchReloadIds.delete(key);\n    fetchControllers.delete(key);\n    revalidatingFetchers.forEach(_ref7 => {\n      let [staleKey] = _ref7;\n      return fetchControllers.delete(staleKey);\n    });\n    let redirect = findRedirect(results);\n\n    if (redirect) {\n      return startRedirectNavigation(state, redirect);\n    } // Process and commit output from loaders\n\n\n    let {\n      loaderData,\n      errors\n    } = processLoaderData(state, state.matches, matchesToLoad, loaderResults, undefined, revalidatingFetchers, fetcherResults, activeDeferreds);\n    let doneFetcher = {\n      state: \"idle\",\n      data: actionResult.data,\n      formMethod: undefined,\n      formAction: undefined,\n      formEncType: undefined,\n      formData: undefined\n    };\n    state.fetchers.set(key, doneFetcher);\n    let didAbortFetchLoads = abortStaleFetchLoads(loadId); // If we are currently in a navigation loading state and this fetcher is\n    // more recent than the navigation, we want the newer data so abort the\n    // navigation and complete it with the fetcher data\n\n    if (state.navigation.state === \"loading\" && loadId > pendingNavigationLoadId) {\n      invariant(pendingAction, \"Expected pending action\");\n      pendingNavigationController && pendingNavigationController.abort();\n      completeNavigation(state.navigation.location, {\n        matches,\n        loaderData,\n        errors,\n        fetchers: new Map(state.fetchers)\n      });\n    } else {\n      // otherwise just update with the fetcher data, preserving any existing\n      // loaderData for loaders that did not need to reload.  We have to\n      // manually merge here since we aren't going through completeNavigation\n      updateState(_extends({\n        errors,\n        loaderData: mergeLoaderData(state.loaderData, loaderData, matches)\n      }, didAbortFetchLoads ? {\n        fetchers: new Map(state.fetchers)\n      } : {}));\n      isRevalidationRequired = false;\n    }\n  } // Call the matched loader for fetcher.load(), handling redirects, errors, etc.\n\n\n  async function handleFetcherLoader(key, routeId, path, match, matches) {\n    let existingFetcher = state.fetchers.get(key); // Put this fetcher into it's loading state\n\n    let loadingFetcher = {\n      state: \"loading\",\n      formMethod: undefined,\n      formAction: undefined,\n      formEncType: undefined,\n      formData: undefined,\n      data: existingFetcher && existingFetcher.data\n    };\n    state.fetchers.set(key, loadingFetcher);\n    updateState({\n      fetchers: new Map(state.fetchers)\n    }); // Call the loader for this fetcher route match\n\n    let abortController = new AbortController();\n    let fetchRequest = createClientSideRequest(path, abortController.signal);\n    fetchControllers.set(key, abortController);\n    let result = await callLoaderOrAction(\"loader\", fetchRequest, match, matches, router.basename); // Deferred isn't supported or fetcher loads, await everything and treat it\n    // as a normal load.  resolveDeferredData will return undefined if this\n    // fetcher gets aborted, so we just leave result untouched and short circuit\n    // below if that happens\n\n    if (isDeferredResult(result)) {\n      result = (await resolveDeferredData(result, fetchRequest.signal, true)) || result;\n    } // We can delete this so long as we weren't aborted by ou our own fetcher\n    // re-load which would have put _new_ controller is in fetchControllers\n\n\n    if (fetchControllers.get(key) === abortController) {\n      fetchControllers.delete(key);\n    }\n\n    if (fetchRequest.signal.aborted) {\n      return;\n    } // If the loader threw a redirect Response, start a new REPLACE navigation\n\n\n    if (isRedirectResult(result)) {\n      await startRedirectNavigation(state, result);\n      return;\n    } // Process any non-redirect errors thrown\n\n\n    if (isErrorResult(result)) {\n      let boundaryMatch = findNearestBoundary(state.matches, routeId);\n      state.fetchers.delete(key); // TODO: In remix, this would reset to IDLE_NAVIGATION if it was a catch -\n      // do we need to behave any differently with our non-redirect errors?\n      // What if it was a non-redirect Response?\n\n      updateState({\n        fetchers: new Map(state.fetchers),\n        errors: {\n          [boundaryMatch.route.id]: result.error\n        }\n      });\n      return;\n    }\n\n    invariant(!isDeferredResult(result), \"Unhandled fetcher deferred data\"); // Put the fetcher back into an idle state\n\n    let doneFetcher = {\n      state: \"idle\",\n      data: result.data,\n      formMethod: undefined,\n      formAction: undefined,\n      formEncType: undefined,\n      formData: undefined\n    };\n    state.fetchers.set(key, doneFetcher);\n    updateState({\n      fetchers: new Map(state.fetchers)\n    });\n  }\n  /**\n   * Utility function to handle redirects returned from an action or loader.\n   * Normally, a redirect \"replaces\" the navigation that triggered it.  So, for\n   * example:\n   *\n   *  - user is on /a\n   *  - user clicks a link to /b\n   *  - loader for /b redirects to /c\n   *\n   * In a non-JS app the browser would track the in-flight navigation to /b and\n   * then replace it with /c when it encountered the redirect response.  In\n   * the end it would only ever update the URL bar with /c.\n   *\n   * In client-side routing using pushState/replaceState, we aim to emulate\n   * this behavior and we also do not update history until the end of the\n   * navigation (including processed redirects).  This means that we never\n   * actually touch history until we've processed redirects, so we just use\n   * the history action from the original navigation (PUSH or REPLACE).\n   */\n\n\n  async function startRedirectNavigation(state, redirect, replace) {\n    var _window;\n\n    if (redirect.revalidate) {\n      isRevalidationRequired = true;\n    }\n\n    let redirectLocation = createLocation(state.location, redirect.location);\n    invariant(redirectLocation, \"Expected a location on the redirect navigation\"); // Check if this an external redirect that goes to a new origin\n\n    if (typeof ((_window = window) == null ? void 0 : _window.location) !== \"undefined\") {\n      let newOrigin = createClientSideURL(redirect.location).origin;\n\n      if (window.location.origin !== newOrigin) {\n        if (replace) {\n          window.location.replace(redirect.location);\n        } else {\n          window.location.assign(redirect.location);\n        }\n\n        return;\n      }\n    } // There's no need to abort on redirects, since we don't detect the\n    // redirect until the action/loaders have settled\n\n\n    pendingNavigationController = null;\n    let redirectHistoryAction = replace === true ? Action.Replace : Action.Push;\n    let {\n      formMethod,\n      formAction,\n      formEncType,\n      formData\n    } = state.navigation; // If this was a 307/308 submission we want to preserve the HTTP method and\n    // re-submit the POST/PUT/PATCH/DELETE as a submission navigation to the\n    // redirected location\n\n    if (redirectPreserveMethodStatusCodes.has(redirect.status) && formMethod && isSubmissionMethod(formMethod) && formEncType && formData) {\n      await startNavigation(redirectHistoryAction, redirectLocation, {\n        submission: {\n          formMethod,\n          formAction: redirect.location,\n          formEncType,\n          formData\n        }\n      });\n    } else {\n      // Otherwise, we kick off a new loading navigation, preserving the\n      // submission info for the duration of this navigation\n      await startNavigation(redirectHistoryAction, redirectLocation, {\n        overrideNavigation: {\n          state: \"loading\",\n          location: redirectLocation,\n          formMethod: formMethod || undefined,\n          formAction: formAction || undefined,\n          formEncType: formEncType || undefined,\n          formData: formData || undefined\n        }\n      });\n    }\n  }\n\n  async function callLoadersAndMaybeResolveData(currentMatches, matches, matchesToLoad, fetchersToLoad, request) {\n    // Call all navigation loaders and revalidating fetcher loaders in parallel,\n    // then slice off the results into separate arrays so we can handle them\n    // accordingly\n    let results = await Promise.all([...matchesToLoad.map(match => callLoaderOrAction(\"loader\", request, match, matches, router.basename)), ...fetchersToLoad.map(_ref8 => {\n      let [, href, match, fetchMatches] = _ref8;\n      return callLoaderOrAction(\"loader\", createClientSideRequest(href, request.signal), match, fetchMatches, router.basename);\n    })]);\n    let loaderResults = results.slice(0, matchesToLoad.length);\n    let fetcherResults = results.slice(matchesToLoad.length);\n    await Promise.all([resolveDeferredResults(currentMatches, matchesToLoad, loaderResults, request.signal, false, state.loaderData), resolveDeferredResults(currentMatches, fetchersToLoad.map(_ref9 => {\n      let [,, match] = _ref9;\n      return match;\n    }), fetcherResults, request.signal, true)]);\n    return {\n      results,\n      loaderResults,\n      fetcherResults\n    };\n  }\n\n  function interruptActiveLoads() {\n    // Every interruption triggers a revalidation\n    isRevalidationRequired = true; // Cancel pending route-level deferreds and mark cancelled routes for\n    // revalidation\n\n    cancelledDeferredRoutes.push(...cancelActiveDeferreds()); // Abort in-flight fetcher loads\n\n    fetchLoadMatches.forEach((_, key) => {\n      if (fetchControllers.has(key)) {\n        cancelledFetcherLoads.push(key);\n        abortFetcher(key);\n      }\n    });\n  }\n\n  function setFetcherError(key, routeId, error) {\n    let boundaryMatch = findNearestBoundary(state.matches, routeId);\n    deleteFetcher(key);\n    updateState({\n      errors: {\n        [boundaryMatch.route.id]: error\n      },\n      fetchers: new Map(state.fetchers)\n    });\n  }\n\n  function deleteFetcher(key) {\n    if (fetchControllers.has(key)) abortFetcher(key);\n    fetchLoadMatches.delete(key);\n    fetchReloadIds.delete(key);\n    fetchRedirectIds.delete(key);\n    state.fetchers.delete(key);\n  }\n\n  function abortFetcher(key) {\n    let controller = fetchControllers.get(key);\n    invariant(controller, \"Expected fetch controller: \" + key);\n    controller.abort();\n    fetchControllers.delete(key);\n  }\n\n  function markFetchersDone(keys) {\n    for (let key of keys) {\n      let fetcher = getFetcher(key);\n      let doneFetcher = {\n        state: \"idle\",\n        data: fetcher.data,\n        formMethod: undefined,\n        formAction: undefined,\n        formEncType: undefined,\n        formData: undefined\n      };\n      state.fetchers.set(key, doneFetcher);\n    }\n  }\n\n  function markFetchRedirectsDone() {\n    let doneKeys = [];\n\n    for (let key of fetchRedirectIds) {\n      let fetcher = state.fetchers.get(key);\n      invariant(fetcher, \"Expected fetcher: \" + key);\n\n      if (fetcher.state === \"loading\") {\n        fetchRedirectIds.delete(key);\n        doneKeys.push(key);\n      }\n    }\n\n    markFetchersDone(doneKeys);\n  }\n\n  function abortStaleFetchLoads(landedId) {\n    let yeetedKeys = [];\n\n    for (let [key, id] of fetchReloadIds) {\n      if (id < landedId) {\n        let fetcher = state.fetchers.get(key);\n        invariant(fetcher, \"Expected fetcher: \" + key);\n\n        if (fetcher.state === \"loading\") {\n          abortFetcher(key);\n          fetchReloadIds.delete(key);\n          yeetedKeys.push(key);\n        }\n      }\n    }\n\n    markFetchersDone(yeetedKeys);\n    return yeetedKeys.length > 0;\n  }\n\n  function cancelActiveDeferreds(predicate) {\n    let cancelledRouteIds = [];\n    activeDeferreds.forEach((dfd, routeId) => {\n      if (!predicate || predicate(routeId)) {\n        // Cancel the deferred - but do not remove from activeDeferreds here -\n        // we rely on the subscribers to do that so our tests can assert proper\n        // cleanup via _internalActiveDeferreds\n        dfd.cancel();\n        cancelledRouteIds.push(routeId);\n        activeDeferreds.delete(routeId);\n      }\n    });\n    return cancelledRouteIds;\n  } // Opt in to capturing and reporting scroll positions during navigations,\n  // used by the <ScrollRestoration> component\n\n\n  function enableScrollRestoration(positions, getPosition, getKey) {\n    savedScrollPositions = positions;\n    getScrollPosition = getPosition;\n\n    getScrollRestorationKey = getKey || (location => location.key); // Perform initial hydration scroll restoration, since we miss the boat on\n    // the initial updateState() because we've not yet rendered <ScrollRestoration/>\n    // and therefore have no savedScrollPositions available\n\n\n    if (!initialScrollRestored && state.navigation === IDLE_NAVIGATION) {\n      initialScrollRestored = true;\n      let y = getSavedScrollPosition(state.location, state.matches);\n\n      if (y != null) {\n        updateState({\n          restoreScrollPosition: y\n        });\n      }\n    }\n\n    return () => {\n      savedScrollPositions = null;\n      getScrollPosition = null;\n      getScrollRestorationKey = null;\n    };\n  }\n\n  function saveScrollPosition(location, matches) {\n    if (savedScrollPositions && getScrollRestorationKey && getScrollPosition) {\n      let userMatches = matches.map(m => createUseMatchesMatch(m, state.loaderData));\n      let key = getScrollRestorationKey(location, userMatches) || location.key;\n      savedScrollPositions[key] = getScrollPosition();\n    }\n  }\n\n  function getSavedScrollPosition(location, matches) {\n    if (savedScrollPositions && getScrollRestorationKey && getScrollPosition) {\n      let userMatches = matches.map(m => createUseMatchesMatch(m, state.loaderData));\n      let key = getScrollRestorationKey(location, userMatches) || location.key;\n      let y = savedScrollPositions[key];\n\n      if (typeof y === \"number\") {\n        return y;\n      }\n    }\n\n    return null;\n  }\n\n  router = {\n    get basename() {\n      return init.basename;\n    },\n\n    get state() {\n      return state;\n    },\n\n    get routes() {\n      return dataRoutes;\n    },\n\n    initialize,\n    subscribe,\n    enableScrollRestoration,\n    navigate,\n    fetch,\n    revalidate,\n    // Passthrough to history-aware createHref used by useHref so we get proper\n    // hash-aware URLs in DOM paths\n    createHref: to => init.history.createHref(to),\n    encodeLocation: to => init.history.encodeLocation(to),\n    getFetcher,\n    deleteFetcher,\n    dispose,\n    _internalFetchControllers: fetchControllers,\n    _internalActiveDeferreds: activeDeferreds\n  };\n  return router;\n} //#endregion\n////////////////////////////////////////////////////////////////////////////////\n//#region createStaticHandler\n////////////////////////////////////////////////////////////////////////////////\n\nfunction unstable_createStaticHandler(routes, opts) {\n  invariant(routes.length > 0, \"You must provide a non-empty routes array to unstable_createStaticHandler\");\n  let dataRoutes = convertRoutesToDataRoutes(routes);\n  let basename = (opts ? opts.basename : null) || \"/\";\n  /**\n   * The query() method is intended for document requests, in which we want to\n   * call an optional action and potentially multiple loaders for all nested\n   * routes.  It returns a StaticHandlerContext object, which is very similar\n   * to the router state (location, loaderData, actionData, errors, etc.) and\n   * also adds SSR-specific information such as the statusCode and headers\n   * from action/loaders Responses.\n   *\n   * It _should_ never throw and should report all errors through the\n   * returned context.errors object, properly associating errors to their error\n   * boundary.  Additionally, it tracks _deepestRenderedBoundaryId which can be\n   * used to emulate React error boundaries during SSr by performing a second\n   * pass only down to the boundaryId.\n   *\n   * The one exception where we do not return a StaticHandlerContext is when a\n   * redirect response is returned or thrown from any action/loader.  We\n   * propagate that out and return the raw Response so the HTTP server can\n   * return it directly.\n   */\n\n  async function query(request, _temp) {\n    let {\n      requestContext\n    } = _temp === void 0 ? {} : _temp;\n    let url = new URL(request.url);\n    let method = request.method.toLowerCase();\n    let location = createLocation(\"\", createPath(url), null, \"default\");\n    let matches = matchRoutes(dataRoutes, location, basename); // SSR supports HEAD requests while SPA doesn't\n\n    if (!isValidMethod(method) && method !== \"head\") {\n      let error = getInternalRouterError(405, {\n        method\n      });\n      let {\n        matches: methodNotAllowedMatches,\n        route\n      } = getShortCircuitMatches(dataRoutes);\n      return {\n        basename,\n        location,\n        matches: methodNotAllowedMatches,\n        loaderData: {},\n        actionData: null,\n        errors: {\n          [route.id]: error\n        },\n        statusCode: error.status,\n        loaderHeaders: {},\n        actionHeaders: {}\n      };\n    } else if (!matches) {\n      let error = getInternalRouterError(404, {\n        pathname: location.pathname\n      });\n      let {\n        matches: notFoundMatches,\n        route\n      } = getShortCircuitMatches(dataRoutes);\n      return {\n        basename,\n        location,\n        matches: notFoundMatches,\n        loaderData: {},\n        actionData: null,\n        errors: {\n          [route.id]: error\n        },\n        statusCode: error.status,\n        loaderHeaders: {},\n        actionHeaders: {}\n      };\n    }\n\n    let result = await queryImpl(request, location, matches, requestContext);\n\n    if (isResponse(result)) {\n      return result;\n    } // When returning StaticHandlerContext, we patch back in the location here\n    // since we need it for React Context.  But this helps keep our submit and\n    // loadRouteData operating on a Request instead of a Location\n\n\n    return _extends({\n      location,\n      basename\n    }, result);\n  }\n  /**\n   * The queryRoute() method is intended for targeted route requests, either\n   * for fetch ?_data requests or resource route requests.  In this case, we\n   * are only ever calling a single action or loader, and we are returning the\n   * returned value directly.  In most cases, this will be a Response returned\n   * from the action/loader, but it may be a primitive or other value as well -\n   * and in such cases the calling context should handle that accordingly.\n   *\n   * We do respect the throw/return differentiation, so if an action/loader\n   * throws, then this method will throw the value.  This is important so we\n   * can do proper boundary identification in Remix where a thrown Response\n   * must go to the Catch Boundary but a returned Response is happy-path.\n   *\n   * One thing to note is that any Router-initiated Errors that make sense\n   * to associate with a status code will be thrown as an ErrorResponse\n   * instance which include the raw Error, such that the calling context can\n   * serialize the error as they see fit while including the proper response\n   * code.  Examples here are 404 and 405 errors that occur prior to reaching\n   * any user-defined loaders.\n   */\n\n\n  async function queryRoute(request, _temp2) {\n    let {\n      routeId,\n      requestContext\n    } = _temp2 === void 0 ? {} : _temp2;\n    let url = new URL(request.url);\n    let method = request.method.toLowerCase();\n    let location = createLocation(\"\", createPath(url), null, \"default\");\n    let matches = matchRoutes(dataRoutes, location, basename); // SSR supports HEAD requests while SPA doesn't\n\n    if (!isValidMethod(method) && method !== \"head\") {\n      throw getInternalRouterError(405, {\n        method\n      });\n    } else if (!matches) {\n      throw getInternalRouterError(404, {\n        pathname: location.pathname\n      });\n    }\n\n    let match = routeId ? matches.find(m => m.route.id === routeId) : getTargetMatch(matches, location);\n\n    if (routeId && !match) {\n      throw getInternalRouterError(403, {\n        pathname: location.pathname,\n        routeId\n      });\n    } else if (!match) {\n      // This should never hit I don't think?\n      throw getInternalRouterError(404, {\n        pathname: location.pathname\n      });\n    }\n\n    let result = await queryImpl(request, location, matches, requestContext, match);\n\n    if (isResponse(result)) {\n      return result;\n    }\n\n    let error = result.errors ? Object.values(result.errors)[0] : undefined;\n\n    if (error !== undefined) {\n      // If we got back result.errors, that means the loader/action threw\n      // _something_ that wasn't a Response, but it's not guaranteed/required\n      // to be an `instanceof Error` either, so we have to use throw here to\n      // preserve the \"error\" state outside of queryImpl.\n      throw error;\n    } // Pick off the right state value to return\n\n\n    let routeData = [result.actionData, result.loaderData].find(v => v);\n    return Object.values(routeData || {})[0];\n  }\n\n  async function queryImpl(request, location, matches, requestContext, routeMatch) {\n    invariant(request.signal, \"query()/queryRoute() requests must contain an AbortController signal\");\n\n    try {\n      if (isSubmissionMethod(request.method.toLowerCase())) {\n        let result = await submit(request, matches, routeMatch || getTargetMatch(matches, location), requestContext, routeMatch != null);\n        return result;\n      }\n\n      let result = await loadRouteData(request, matches, requestContext, routeMatch);\n      return isResponse(result) ? result : _extends({}, result, {\n        actionData: null,\n        actionHeaders: {}\n      });\n    } catch (e) {\n      // If the user threw/returned a Response in callLoaderOrAction, we throw\n      // it to bail out and then return or throw here based on whether the user\n      // returned or threw\n      if (isQueryRouteResponse(e)) {\n        if (e.type === ResultType.error && !isRedirectResponse(e.response)) {\n          throw e.response;\n        }\n\n        return e.response;\n      } // Redirects are always returned since they don't propagate to catch\n      // boundaries\n\n\n      if (isRedirectResponse(e)) {\n        return e;\n      }\n\n      throw e;\n    }\n  }\n\n  async function submit(request, matches, actionMatch, requestContext, isRouteRequest) {\n    let result;\n\n    if (!actionMatch.route.action) {\n      let error = getInternalRouterError(405, {\n        method: request.method,\n        pathname: new URL(request.url).pathname,\n        routeId: actionMatch.route.id\n      });\n\n      if (isRouteRequest) {\n        throw error;\n      }\n\n      result = {\n        type: ResultType.error,\n        error\n      };\n    } else {\n      result = await callLoaderOrAction(\"action\", request, actionMatch, matches, basename, true, isRouteRequest, requestContext);\n\n      if (request.signal.aborted) {\n        let method = isRouteRequest ? \"queryRoute\" : \"query\";\n        throw new Error(method + \"() call aborted\");\n      }\n    }\n\n    if (isRedirectResult(result)) {\n      // Uhhhh - this should never happen, we should always throw these from\n      // callLoaderOrAction, but the type narrowing here keeps TS happy and we\n      // can get back on the \"throw all redirect responses\" train here should\n      // this ever happen :/\n      throw new Response(null, {\n        status: result.status,\n        headers: {\n          Location: result.location\n        }\n      });\n    }\n\n    if (isDeferredResult(result)) {\n      throw new Error(\"defer() is not supported in actions\");\n    }\n\n    if (isRouteRequest) {\n      // Note: This should only be non-Response values if we get here, since\n      // isRouteRequest should throw any Response received in callLoaderOrAction\n      if (isErrorResult(result)) {\n        throw result.error;\n      }\n\n      return {\n        matches: [actionMatch],\n        loaderData: {},\n        actionData: {\n          [actionMatch.route.id]: result.data\n        },\n        errors: null,\n        // Note: statusCode + headers are unused here since queryRoute will\n        // return the raw Response or value\n        statusCode: 200,\n        loaderHeaders: {},\n        actionHeaders: {}\n      };\n    }\n\n    if (isErrorResult(result)) {\n      // Store off the pending error - we use it to determine which loaders\n      // to call and will commit it when we complete the navigation\n      let boundaryMatch = findNearestBoundary(matches, actionMatch.route.id);\n      let context = await loadRouteData(request, matches, requestContext, undefined, {\n        [boundaryMatch.route.id]: result.error\n      }); // action status codes take precedence over loader status codes\n\n      return _extends({}, context, {\n        statusCode: isRouteErrorResponse(result.error) ? result.error.status : 500,\n        actionData: null,\n        actionHeaders: _extends({}, result.headers ? {\n          [actionMatch.route.id]: result.headers\n        } : {})\n      });\n    } // Create a GET request for the loaders\n\n\n    let loaderRequest = new Request(request.url, {\n      signal: request.signal\n    });\n    let context = await loadRouteData(loaderRequest, matches, requestContext);\n    return _extends({}, context, result.statusCode ? {\n      statusCode: result.statusCode\n    } : {}, {\n      actionData: {\n        [actionMatch.route.id]: result.data\n      },\n      actionHeaders: _extends({}, result.headers ? {\n        [actionMatch.route.id]: result.headers\n      } : {})\n    });\n  }\n\n  async function loadRouteData(request, matches, requestContext, routeMatch, pendingActionError) {\n    let isRouteRequest = routeMatch != null; // Short circuit if we have no loaders to run (queryRoute())\n\n    if (isRouteRequest && !(routeMatch != null && routeMatch.route.loader)) {\n      throw getInternalRouterError(400, {\n        method: request.method,\n        pathname: new URL(request.url).pathname,\n        routeId: routeMatch == null ? void 0 : routeMatch.route.id\n      });\n    }\n\n    let requestMatches = routeMatch ? [routeMatch] : getLoaderMatchesUntilBoundary(matches, Object.keys(pendingActionError || {})[0]);\n    let matchesToLoad = requestMatches.filter(m => m.route.loader); // Short circuit if we have no loaders to run (query())\n\n    if (matchesToLoad.length === 0) {\n      return {\n        matches,\n        loaderData: {},\n        errors: pendingActionError || null,\n        statusCode: 200,\n        loaderHeaders: {}\n      };\n    }\n\n    let results = await Promise.all([...matchesToLoad.map(match => callLoaderOrAction(\"loader\", request, match, matches, basename, true, isRouteRequest, requestContext))]);\n\n    if (request.signal.aborted) {\n      let method = isRouteRequest ? \"queryRoute\" : \"query\";\n      throw new Error(method + \"() call aborted\");\n    } // Can't do anything with these without the Remix side of things, so just\n    // cancel them for now\n\n\n    results.forEach(result => {\n      if (isDeferredResult(result)) {\n        result.deferredData.cancel();\n      }\n    }); // Process and commit output from loaders\n\n    let context = processRouteLoaderData(matches, matchesToLoad, results, pendingActionError);\n    return _extends({}, context, {\n      matches\n    });\n  }\n\n  return {\n    dataRoutes,\n    query,\n    queryRoute\n  };\n} //#endregion\n////////////////////////////////////////////////////////////////////////////////\n//#region Helpers\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Given an existing StaticHandlerContext and an error thrown at render time,\n * provide an updated StaticHandlerContext suitable for a second SSR render\n */\n\nfunction getStaticContextFromError(routes, context, error) {\n  let newContext = _extends({}, context, {\n    statusCode: 500,\n    errors: {\n      [context._deepestRenderedBoundaryId || routes[0].id]: error\n    }\n  });\n\n  return newContext;\n}\n\nfunction isSubmissionNavigation(opts) {\n  return opts != null && \"formData\" in opts;\n} // Normalize navigation options by converting formMethod=GET formData objects to\n// URLSearchParams so they behave identically to links with query params\n\n\nfunction normalizeNavigateOptions(to, opts, isFetcher) {\n  if (isFetcher === void 0) {\n    isFetcher = false;\n  }\n\n  let path = typeof to === \"string\" ? to : createPath(to); // Return location verbatim on non-submission navigations\n\n  if (!opts || !isSubmissionNavigation(opts)) {\n    return {\n      path\n    };\n  }\n\n  if (opts.formMethod && !isValidMethod(opts.formMethod)) {\n    return {\n      path,\n      error: getInternalRouterError(405, {\n        method: opts.formMethod\n      })\n    };\n  } // Create a Submission on non-GET navigations\n\n\n  if (opts.formMethod && isSubmissionMethod(opts.formMethod)) {\n    return {\n      path,\n      submission: {\n        formMethod: opts.formMethod,\n        formAction: stripHashFromPath(path),\n        formEncType: opts && opts.formEncType || \"application/x-www-form-urlencoded\",\n        formData: opts.formData\n      }\n    };\n  } // Flatten submission onto URLSearchParams for GET submissions\n\n\n  let parsedPath = parsePath(path);\n\n  try {\n    let searchParams = convertFormDataToSearchParams(opts.formData); // Since fetcher GET submissions only run a single loader (as opposed to\n    // navigation GET submissions which run all loaders), we need to preserve\n    // any incoming ?index params\n\n    if (isFetcher && parsedPath.search && hasNakedIndexQuery(parsedPath.search)) {\n      searchParams.append(\"index\", \"\");\n    }\n\n    parsedPath.search = \"?\" + searchParams;\n  } catch (e) {\n    return {\n      path,\n      error: getInternalRouterError(400)\n    };\n  }\n\n  return {\n    path: createPath(parsedPath)\n  };\n} // Filter out all routes below any caught error as they aren't going to\n// render so we don't need to load them\n\n\nfunction getLoaderMatchesUntilBoundary(matches, boundaryId) {\n  let boundaryMatches = matches;\n\n  if (boundaryId) {\n    let index = matches.findIndex(m => m.route.id === boundaryId);\n\n    if (index >= 0) {\n      boundaryMatches = matches.slice(0, index);\n    }\n  }\n\n  return boundaryMatches;\n}\n\nfunction getMatchesToLoad(state, matches, submission, location, isRevalidationRequired, cancelledDeferredRoutes, cancelledFetcherLoads, pendingActionData, pendingError, fetchLoadMatches) {\n  let actionResult = pendingError ? Object.values(pendingError)[0] : pendingActionData ? Object.values(pendingActionData)[0] : null; // Pick navigation matches that are net-new or qualify for revalidation\n\n  let boundaryId = pendingError ? Object.keys(pendingError)[0] : undefined;\n  let boundaryMatches = getLoaderMatchesUntilBoundary(matches, boundaryId);\n  let navigationMatches = boundaryMatches.filter((match, index) => match.route.loader != null && (isNewLoader(state.loaderData, state.matches[index], match) || // If this route had a pending deferred cancelled it must be revalidated\n  cancelledDeferredRoutes.some(id => id === match.route.id) || shouldRevalidateLoader(state.location, state.matches[index], submission, location, match, isRevalidationRequired, actionResult))); // Pick fetcher.loads that need to be revalidated\n\n  let revalidatingFetchers = [];\n  fetchLoadMatches && fetchLoadMatches.forEach((_ref10, key) => {\n    let [href, match, fetchMatches] = _ref10;\n\n    // This fetcher was cancelled from a prior action submission - force reload\n    if (cancelledFetcherLoads.includes(key)) {\n      revalidatingFetchers.push([key, href, match, fetchMatches]);\n    } else if (isRevalidationRequired) {\n      let shouldRevalidate = shouldRevalidateLoader(href, match, submission, href, match, isRevalidationRequired, actionResult);\n\n      if (shouldRevalidate) {\n        revalidatingFetchers.push([key, href, match, fetchMatches]);\n      }\n    }\n  });\n  return [navigationMatches, revalidatingFetchers];\n}\n\nfunction isNewLoader(currentLoaderData, currentMatch, match) {\n  let isNew = // [a] -> [a, b]\n  !currentMatch || // [a, b] -> [a, c]\n  match.route.id !== currentMatch.route.id; // Handle the case that we don't have data for a re-used route, potentially\n  // from a prior error or from a cancelled pending deferred\n\n  let isMissingData = currentLoaderData[match.route.id] === undefined; // Always load if this is a net-new route or we don't yet have data\n\n  return isNew || isMissingData;\n}\n\nfunction isNewRouteInstance(currentMatch, match) {\n  let currentPath = currentMatch.route.path;\n  return (// param change for this match, /users/123 -> /users/456\n    currentMatch.pathname !== match.pathname || // splat param changed, which is not present in match.path\n    // e.g. /files/images/avatar.jpg -> files/finances.xls\n    currentPath && currentPath.endsWith(\"*\") && currentMatch.params[\"*\"] !== match.params[\"*\"]\n  );\n}\n\nfunction shouldRevalidateLoader(currentLocation, currentMatch, submission, location, match, isRevalidationRequired, actionResult) {\n  let currentUrl = createClientSideURL(currentLocation);\n  let currentParams = currentMatch.params;\n  let nextUrl = createClientSideURL(location);\n  let nextParams = match.params; // This is the default implementation as to when we revalidate.  If the route\n  // provides it's own implementation, then we give them full control but\n  // provide this value so they can leverage it if needed after they check\n  // their own specific use cases\n  // Note that fetchers always provide the same current/next locations so the\n  // URL-based checks here don't apply to fetcher shouldRevalidate calls\n\n  let defaultShouldRevalidate = isNewRouteInstance(currentMatch, match) || // Clicked the same link, resubmitted a GET form\n  currentUrl.toString() === nextUrl.toString() || // Search params affect all loaders\n  currentUrl.search !== nextUrl.search || // Forced revalidation due to submission, useRevalidate, or X-Remix-Revalidate\n  isRevalidationRequired;\n\n  if (match.route.shouldRevalidate) {\n    let routeChoice = match.route.shouldRevalidate(_extends({\n      currentUrl,\n      currentParams,\n      nextUrl,\n      nextParams\n    }, submission, {\n      actionResult,\n      defaultShouldRevalidate\n    }));\n\n    if (typeof routeChoice === \"boolean\") {\n      return routeChoice;\n    }\n  }\n\n  return defaultShouldRevalidate;\n}\n\nasync function callLoaderOrAction(type, request, match, matches, basename, isStaticRequest, isRouteRequest, requestContext) {\n  if (basename === void 0) {\n    basename = \"/\";\n  }\n\n  if (isStaticRequest === void 0) {\n    isStaticRequest = false;\n  }\n\n  if (isRouteRequest === void 0) {\n    isRouteRequest = false;\n  }\n\n  let resultType;\n  let result; // Setup a promise we can race against so that abort signals short circuit\n\n  let reject;\n  let abortPromise = new Promise((_, r) => reject = r);\n\n  let onReject = () => reject();\n\n  request.signal.addEventListener(\"abort\", onReject);\n\n  try {\n    let handler = match.route[type];\n    invariant(handler, \"Could not find the \" + type + \" to run on the \\\"\" + match.route.id + \"\\\" route\");\n    result = await Promise.race([handler({\n      request,\n      params: match.params,\n      context: requestContext\n    }), abortPromise]);\n    invariant(result !== undefined, \"You defined \" + (type === \"action\" ? \"an action\" : \"a loader\") + \" for route \" + (\"\\\"\" + match.route.id + \"\\\" but didn't return anything from your `\" + type + \"` \") + \"function. Please return a value or `null`.\");\n  } catch (e) {\n    resultType = ResultType.error;\n    result = e;\n  } finally {\n    request.signal.removeEventListener(\"abort\", onReject);\n  }\n\n  if (isResponse(result)) {\n    let status = result.status; // Process redirects\n\n    if (redirectStatusCodes.has(status)) {\n      let location = result.headers.get(\"Location\");\n      invariant(location, \"Redirects returned/thrown from loaders/actions must have a Location header\");\n      let isAbsolute = /^[a-z+]+:\\/\\//i.test(location) || location.startsWith(\"//\"); // Support relative routing in internal redirects\n\n      if (!isAbsolute) {\n        let activeMatches = matches.slice(0, matches.indexOf(match) + 1);\n        let routePathnames = getPathContributingMatches(activeMatches).map(match => match.pathnameBase);\n        let resolvedLocation = resolveTo(location, routePathnames, new URL(request.url).pathname);\n        invariant(createPath(resolvedLocation), \"Unable to resolve redirect location: \" + location); // Prepend the basename to the redirect location if we have one\n\n        if (basename) {\n          let path = resolvedLocation.pathname;\n          resolvedLocation.pathname = path === \"/\" ? basename : joinPaths([basename, path]);\n        }\n\n        location = createPath(resolvedLocation);\n      } // Don't process redirects in the router during static requests requests.\n      // Instead, throw the Response and let the server handle it with an HTTP\n      // redirect.  We also update the Location header in place in this flow so\n      // basename and relative routing is taken into account\n\n\n      if (isStaticRequest) {\n        result.headers.set(\"Location\", location);\n        throw result;\n      }\n\n      return {\n        type: ResultType.redirect,\n        status,\n        location,\n        revalidate: result.headers.get(\"X-Remix-Revalidate\") !== null\n      };\n    } // For SSR single-route requests, we want to hand Responses back directly\n    // without unwrapping.  We do this with the QueryRouteResponse wrapper\n    // interface so we can know whether it was returned or thrown\n\n\n    if (isRouteRequest) {\n      // eslint-disable-next-line no-throw-literal\n      throw {\n        type: resultType || ResultType.data,\n        response: result\n      };\n    }\n\n    let data;\n    let contentType = result.headers.get(\"Content-Type\");\n\n    if (contentType && contentType.startsWith(\"application/json\")) {\n      data = await result.json();\n    } else {\n      data = await result.text();\n    }\n\n    if (resultType === ResultType.error) {\n      return {\n        type: resultType,\n        error: new ErrorResponse(status, result.statusText, data),\n        headers: result.headers\n      };\n    }\n\n    return {\n      type: ResultType.data,\n      data,\n      statusCode: result.status,\n      headers: result.headers\n    };\n  }\n\n  if (resultType === ResultType.error) {\n    return {\n      type: resultType,\n      error: result\n    };\n  }\n\n  if (result instanceof DeferredData) {\n    return {\n      type: ResultType.deferred,\n      deferredData: result\n    };\n  }\n\n  return {\n    type: ResultType.data,\n    data: result\n  };\n} // Utility method for creating the Request instances for loaders/actions during\n// client-side navigations and fetches.  During SSR we will always have a\n// Request instance from the static handler (query/queryRoute)\n\n\nfunction createClientSideRequest(location, signal, submission) {\n  let url = createClientSideURL(stripHashFromPath(location)).toString();\n  let init = {\n    signal\n  };\n\n  if (submission) {\n    let {\n      formMethod,\n      formEncType,\n      formData\n    } = submission;\n    init.method = formMethod.toUpperCase();\n    init.body = formEncType === \"application/x-www-form-urlencoded\" ? convertFormDataToSearchParams(formData) : formData;\n  } // Content-Type is inferred (https://fetch.spec.whatwg.org/#dom-request)\n\n\n  return new Request(url, init);\n}\n\nfunction convertFormDataToSearchParams(formData) {\n  let searchParams = new URLSearchParams();\n\n  for (let [key, value] of formData.entries()) {\n    invariant(typeof value === \"string\", 'File inputs are not supported with encType \"application/x-www-form-urlencoded\", ' + 'please use \"multipart/form-data\" instead.');\n    searchParams.append(key, value);\n  }\n\n  return searchParams;\n}\n\nfunction processRouteLoaderData(matches, matchesToLoad, results, pendingError, activeDeferreds) {\n  // Fill in loaderData/errors from our loaders\n  let loaderData = {};\n  let errors = null;\n  let statusCode;\n  let foundError = false;\n  let loaderHeaders = {}; // Process loader results into state.loaderData/state.errors\n\n  results.forEach((result, index) => {\n    let id = matchesToLoad[index].route.id;\n    invariant(!isRedirectResult(result), \"Cannot handle redirect results in processLoaderData\");\n\n    if (isErrorResult(result)) {\n      // Look upwards from the matched route for the closest ancestor\n      // error boundary, defaulting to the root match\n      let boundaryMatch = findNearestBoundary(matches, id);\n      let error = result.error; // If we have a pending action error, we report it at the highest-route\n      // that throws a loader error, and then clear it out to indicate that\n      // it was consumed\n\n      if (pendingError) {\n        error = Object.values(pendingError)[0];\n        pendingError = undefined;\n      }\n\n      errors = Object.assign(errors || {}, {\n        [boundaryMatch.route.id]: error\n      }); // Once we find our first (highest) error, we set the status code and\n      // prevent deeper status codes from overriding\n\n      if (!foundError) {\n        foundError = true;\n        statusCode = isRouteErrorResponse(result.error) ? result.error.status : 500;\n      }\n\n      if (result.headers) {\n        loaderHeaders[id] = result.headers;\n      }\n    } else if (isDeferredResult(result)) {\n      activeDeferreds && activeDeferreds.set(id, result.deferredData);\n      loaderData[id] = result.deferredData.data; // TODO: Add statusCode/headers once we wire up streaming in Remix\n    } else {\n      loaderData[id] = result.data; // Error status codes always override success status codes, but if all\n      // loaders are successful we take the deepest status code.\n\n      if (result.statusCode != null && result.statusCode !== 200 && !foundError) {\n        statusCode = result.statusCode;\n      }\n\n      if (result.headers) {\n        loaderHeaders[id] = result.headers;\n      }\n    }\n  }); // If we didn't consume the pending action error (i.e., all loaders\n  // resolved), then consume it here\n\n  if (pendingError) {\n    errors = pendingError;\n  }\n\n  return {\n    loaderData,\n    errors,\n    statusCode: statusCode || 200,\n    loaderHeaders\n  };\n}\n\nfunction processLoaderData(state, matches, matchesToLoad, results, pendingError, revalidatingFetchers, fetcherResults, activeDeferreds) {\n  let {\n    loaderData,\n    errors\n  } = processRouteLoaderData(matches, matchesToLoad, results, pendingError, activeDeferreds); // Process results from our revalidating fetchers\n\n  for (let index = 0; index < revalidatingFetchers.length; index++) {\n    let [key,, match] = revalidatingFetchers[index];\n    invariant(fetcherResults !== undefined && fetcherResults[index] !== undefined, \"Did not find corresponding fetcher result\");\n    let result = fetcherResults[index]; // Process fetcher non-redirect errors\n\n    if (isErrorResult(result)) {\n      let boundaryMatch = findNearestBoundary(state.matches, match.route.id);\n\n      if (!(errors && errors[boundaryMatch.route.id])) {\n        errors = _extends({}, errors, {\n          [boundaryMatch.route.id]: result.error\n        });\n      }\n\n      state.fetchers.delete(key);\n    } else if (isRedirectResult(result)) {\n      // Should never get here, redirects should get processed above, but we\n      // keep this to type narrow to a success result in the else\n      throw new Error(\"Unhandled fetcher revalidation redirect\");\n    } else if (isDeferredResult(result)) {\n      // Should never get here, deferred data should be awaited for fetchers\n      // in resolveDeferredResults\n      throw new Error(\"Unhandled fetcher deferred data\");\n    } else {\n      let doneFetcher = {\n        state: \"idle\",\n        data: result.data,\n        formMethod: undefined,\n        formAction: undefined,\n        formEncType: undefined,\n        formData: undefined\n      };\n      state.fetchers.set(key, doneFetcher);\n    }\n  }\n\n  return {\n    loaderData,\n    errors\n  };\n}\n\nfunction mergeLoaderData(loaderData, newLoaderData, matches) {\n  let mergedLoaderData = _extends({}, newLoaderData);\n\n  matches.forEach(match => {\n    let id = match.route.id;\n\n    if (newLoaderData[id] === undefined && loaderData[id] !== undefined) {\n      mergedLoaderData[id] = loaderData[id];\n    }\n  });\n  return mergedLoaderData;\n} // Find the nearest error boundary, looking upwards from the leaf route (or the\n// route specified by routeId) for the closest ancestor error boundary,\n// defaulting to the root match\n\n\nfunction findNearestBoundary(matches, routeId) {\n  let eligibleMatches = routeId ? matches.slice(0, matches.findIndex(m => m.route.id === routeId) + 1) : [...matches];\n  return eligibleMatches.reverse().find(m => m.route.hasErrorBoundary === true) || matches[0];\n}\n\nfunction getShortCircuitMatches(routes) {\n  // Prefer a root layout route if present, otherwise shim in a route object\n  let route = routes.find(r => r.index || !r.path || r.path === \"/\") || {\n    id: \"__shim-error-route__\"\n  };\n  return {\n    matches: [{\n      params: {},\n      pathname: \"\",\n      pathnameBase: \"\",\n      route\n    }],\n    route\n  };\n}\n\nfunction getInternalRouterError(status, _temp3) {\n  let {\n    pathname,\n    routeId,\n    method\n  } = _temp3 === void 0 ? {} : _temp3;\n  let statusText = \"Unknown Server Error\";\n  let errorMessage = \"Unknown @remix-run/router error\";\n\n  if (status === 400) {\n    statusText = \"Bad Request\";\n\n    if (method && pathname && routeId) {\n      errorMessage = \"You made a \" + method + \" request to \\\"\" + pathname + \"\\\" but \" + (\"did not provide a `loader` for route \\\"\" + routeId + \"\\\", \") + \"so there is no way to handle the request.\";\n    } else {\n      errorMessage = \"Cannot submit binary form data using GET\";\n    }\n  } else if (status === 403) {\n    statusText = \"Forbidden\";\n    errorMessage = \"Route \\\"\" + routeId + \"\\\" does not match URL \\\"\" + pathname + \"\\\"\";\n  } else if (status === 404) {\n    statusText = \"Not Found\";\n    errorMessage = \"No route matches URL \\\"\" + pathname + \"\\\"\";\n  } else if (status === 405) {\n    statusText = \"Method Not Allowed\";\n\n    if (method && pathname && routeId) {\n      errorMessage = \"You made a \" + method.toUpperCase() + \" request to \\\"\" + pathname + \"\\\" but \" + (\"did not provide an `action` for route \\\"\" + routeId + \"\\\", \") + \"so there is no way to handle the request.\";\n    } else if (method) {\n      errorMessage = \"Invalid request method \\\"\" + method.toUpperCase() + \"\\\"\";\n    }\n  }\n\n  return new ErrorResponse(status || 500, statusText, new Error(errorMessage), true);\n} // Find any returned redirect errors, starting from the lowest match\n\n\nfunction findRedirect(results) {\n  for (let i = results.length - 1; i >= 0; i--) {\n    let result = results[i];\n\n    if (isRedirectResult(result)) {\n      return result;\n    }\n  }\n}\n\nfunction stripHashFromPath(path) {\n  let parsedPath = typeof path === \"string\" ? parsePath(path) : path;\n  return createPath(_extends({}, parsedPath, {\n    hash: \"\"\n  }));\n}\n\nfunction isHashChangeOnly(a, b) {\n  return a.pathname === b.pathname && a.search === b.search && a.hash !== b.hash;\n}\n\nfunction isDeferredResult(result) {\n  return result.type === ResultType.deferred;\n}\n\nfunction isErrorResult(result) {\n  return result.type === ResultType.error;\n}\n\nfunction isRedirectResult(result) {\n  return (result && result.type) === ResultType.redirect;\n}\n\nfunction isResponse(value) {\n  return value != null && typeof value.status === \"number\" && typeof value.statusText === \"string\" && typeof value.headers === \"object\" && typeof value.body !== \"undefined\";\n}\n\nfunction isRedirectResponse(result) {\n  if (!isResponse(result)) {\n    return false;\n  }\n\n  let status = result.status;\n  let location = result.headers.get(\"Location\");\n  return status >= 300 && status <= 399 && location != null;\n}\n\nfunction isQueryRouteResponse(obj) {\n  return obj && isResponse(obj.response) && (obj.type === ResultType.data || ResultType.error);\n}\n\nfunction isValidMethod(method) {\n  return validRequestMethods.has(method);\n}\n\nfunction isSubmissionMethod(method) {\n  return validActionMethods.has(method);\n}\n\nasync function resolveDeferredResults(currentMatches, matchesToLoad, results, signal, isFetcher, currentLoaderData) {\n  for (let index = 0; index < results.length; index++) {\n    let result = results[index];\n    let match = matchesToLoad[index];\n    let currentMatch = currentMatches.find(m => m.route.id === match.route.id);\n    let isRevalidatingLoader = currentMatch != null && !isNewRouteInstance(currentMatch, match) && (currentLoaderData && currentLoaderData[match.route.id]) !== undefined;\n\n    if (isDeferredResult(result) && (isFetcher || isRevalidatingLoader)) {\n      // Note: we do not have to touch activeDeferreds here since we race them\n      // against the signal in resolveDeferredData and they'll get aborted\n      // there if needed\n      await resolveDeferredData(result, signal, isFetcher).then(result => {\n        if (result) {\n          results[index] = result || results[index];\n        }\n      });\n    }\n  }\n}\n\nasync function resolveDeferredData(result, signal, unwrap) {\n  if (unwrap === void 0) {\n    unwrap = false;\n  }\n\n  let aborted = await result.deferredData.resolveData(signal);\n\n  if (aborted) {\n    return;\n  }\n\n  if (unwrap) {\n    try {\n      return {\n        type: ResultType.data,\n        data: result.deferredData.unwrappedData\n      };\n    } catch (e) {\n      // Handle any TrackedPromise._error values encountered while unwrapping\n      return {\n        type: ResultType.error,\n        error: e\n      };\n    }\n  }\n\n  return {\n    type: ResultType.data,\n    data: result.deferredData.data\n  };\n}\n\nfunction hasNakedIndexQuery(search) {\n  return new URLSearchParams(search).getAll(\"index\").some(v => v === \"\");\n} // Note: This should match the format exported by useMatches, so if you change\n// this please also change that :)  Eventually we'll DRY this up\n\n\nfunction createUseMatchesMatch(match, loaderData) {\n  let {\n    route,\n    pathname,\n    params\n  } = match;\n  return {\n    id: route.id,\n    pathname,\n    params,\n    data: loaderData[route.id],\n    handle: route.handle\n  };\n}\n\nfunction getTargetMatch(matches, location) {\n  let search = typeof location === \"string\" ? parsePath(location).search : location.search;\n\n  if (matches[matches.length - 1].route.index && hasNakedIndexQuery(search || \"\")) {\n    // Return the leaf index route when index is present\n    return matches[matches.length - 1];\n  } // Otherwise grab the deepest \"path contributing\" match (ignoring index and\n  // pathless layout routes)\n\n\n  let pathMatches = getPathContributingMatches(matches);\n  return pathMatches[pathMatches.length - 1];\n} //#endregion\n\nexport { AbortedDeferredError, Action, ErrorResponse, IDLE_FETCHER, IDLE_NAVIGATION, convertRoutesToDataRoutes as UNSAFE_convertRoutesToDataRoutes, getPathContributingMatches as UNSAFE_getPathContributingMatches, createBrowserHistory, createHashHistory, createMemoryHistory, createPath, createRouter, defer, generatePath, getStaticContextFromError, getToPathname, invariant, isRouteErrorResponse, joinPaths, json, matchPath, matchRoutes, normalizePathname, parsePath, redirect, resolvePath, resolveTo, stripBasename, unstable_createStaticHandler, warning };\n//# sourceMappingURL=router.js.map\n","import { getAuthenticationToken, storeAuthTokenInCache, getCacheAuthToken } from './authToken';\nimport { getEmbedConfig } from './embed/embedConfig';\nimport { initMixpanel } from './mixpanel-service';\nimport { AuthType, EmbedEvent, } from './types';\nimport { getDOMNode, getRedirectUrl, getSSOMarker } from './utils';\nimport { EndPoints, fetchAuthPostService, fetchAuthService, fetchBasicAuthService, fetchLogoutService, } from './utils/authService';\nimport { isActiveService } from './utils/authService/tokenizedAuthService';\nimport { logger } from './utils/logger';\nimport { getSessionInfo, getPreauthInfo } from './utils/sessionInfoService';\nimport { ERROR_MESSAGE } from './errors';\nimport { resetAllCachedServices } from './utils/resetServices';\nexport let loggedInStatus = false;\nexport let samlAuthWindow = null;\nexport let samlCompletionPromise = null;\nlet releaseVersion = '';\nexport const SSO_REDIRECTION_MARKER_GUID = '5e16222e-ef02-43e9-9fbd-24226bf3ce5b';\n/**\n * Enum for auth failure types.\n * This value is passed to the listener for {@link AuthStatus.FAILURE}.\n * @group Authentication / Init\n */\nexport var AuthFailureType;\n(function (AuthFailureType) {\n    /**\n     * Authentication failed in the SDK authentication flow.\n     *\n     * Emitted when `init()` or auto-authentication cannot establish a logged-in session.\n     * For example, this can happen because of an invalid token, an auth request failure,\n     * or an auth promise rejection.\n     */\n    AuthFailureType[\"SDK\"] = \"SDK\";\n    /**\n     * Browser cookie access is blocked for the embedded app.\n     *\n     * Emitted when the iframe reports that required cookies\n     * cannot be read or sent, commonly due to third-party cookie restrictions.\n     */\n    AuthFailureType[\"NO_COOKIE_ACCESS\"] = \"NO_COOKIE_ACCESS\";\n    /**\n     * The current authentication token or session has expired.\n     *\n     * Emitted when the embed receives an auth-expiry signal and starts auth refresh\n     * handling.\n     */\n    AuthFailureType[\"EXPIRY\"] = \"EXPIRY\";\n    /**\n     * A generic authentication failure that does not match a more specific type.\n     *\n     * Emitted as a fallback for app-reported auth failures in standard auth flows.\n     */\n    AuthFailureType[\"OTHER\"] = \"OTHER\";\n    /**\n     * The user session timed out due to inactivity.\n     *\n     * Emitted when the app reports an idle-session timeout.\n     */\n    AuthFailureType[\"IDLE_SESSION_TIMEOUT\"] = \"IDLE_SESSION_TIMEOUT\";\n    /**\n     * The app reports that the user is unauthenticated.\n     *\n     * Used primarily to classify unauthenticated failures in Embedded SSO flows.\n     */\n    AuthFailureType[\"UNAUTHENTICATED_FAILURE\"] = \"UNAUTHENTICATED_FAILURE\";\n})(AuthFailureType || (AuthFailureType = {}));\n/**\n * Enum for auth status emitted by the emitter returned from {@link init}.\n * @group Authentication / Init\n */\nexport var AuthStatus;\n(function (AuthStatus) {\n    /**\n     * Emits when the SDK fails to authenticate.\n     */\n    AuthStatus[\"FAILURE\"] = \"FAILURE\";\n    /**\n     * Emits when the SDK authentication step completes\n     * successfully (e.g., token exchange, cookie set).\n     * This fires before any iframe is rendered. Use\n     * this to know that auth passed and it is safe to\n     * proceed with rendering. The callback receives no\n     * arguments.\n     * @example\n     * ```js\n     * const authEE = init({ ... });\n     * authEE.on(AuthStatus.SDK_SUCCESS, () => {\n     *     // Auth done, iframe not loaded yet\n     * });\n     * ```\n     */\n    AuthStatus[\"SDK_SUCCESS\"] = \"SDK_SUCCESS\";\n    /**\n     * @hidden\n     * Emits when iframe is loaded and session\n     * information is available.\n     */\n    AuthStatus[\"SESSION_INFO_SUCCESS\"] = \"SESSION_INFO_SUCCESS\";\n    /**\n     * Emits when the ThoughtSpot app inside the\n     * embedded iframe confirms its session is active.\n     * This fires after the iframe loads and sends back an `AuthInit` event.\n     * @param sessionInfo Information about the user session, with details like `userGUID`.\n     * @see EmbedEvent.AuthInit\n     * @example\n     * ```js\n     * const authEE = init({ ... });\n     * authEE.on(AuthStatus.SUCCESS, (sessionInfo) => {\n     *     // App is loaded and authenticated\n     *     console.log(sessionInfo.userGUID);\n     * });\n     * ```\n     */\n    AuthStatus[\"SUCCESS\"] = \"SUCCESS\";\n    /**\n     * Emits when a user logs out\n     */\n    AuthStatus[\"LOGOUT\"] = \"LOGOUT\";\n    /**\n     * Emitted when inPopup is true in the SAMLRedirect flow and the\n     * popup is waiting to be triggered either programmatically\n     * or by the trigger button.\n     * @version SDK: 1.19.0\n     */\n    AuthStatus[\"WAITING_FOR_POPUP\"] = \"WAITING_FOR_POPUP\";\n    /**\n     * Emitted when the SAML popup is closed without authentication\n     */\n    AuthStatus[\"SAML_POPUP_CLOSED_NO_AUTH\"] = \"SAML_POPUP_CLOSED_NO_AUTH\";\n})(AuthStatus || (AuthStatus = {}));\n/**\n * Events which can be triggered on the emitter returned from {@link init}.\n * @group Authentication / Init\n */\nexport var AuthEvent;\n(function (AuthEvent) {\n    /**\n     * Manually trigger the SSO popup. This is useful when\n     * authStatus is SAMLRedirect/OIDCRedirect and inPopup is set to true\n     */\n    AuthEvent[\"TRIGGER_SSO_POPUP\"] = \"TRIGGER_SSO_POPUP\";\n})(AuthEvent || (AuthEvent = {}));\nlet authEE;\n/**\n *\n */\nexport function getAuthEE() {\n    return authEE;\n}\n/**\n *\n * @param eventEmitter\n */\nexport function setAuthEE(eventEmitter) {\n    authEE = eventEmitter;\n}\n/**\n *\n */\nexport function notifyAuthSDKSuccess() {\n    if (!authEE) {\n        logger.error(ERROR_MESSAGE.SDK_NOT_INITIALIZED);\n        return;\n    }\n    authEE.emit(AuthStatus.SDK_SUCCESS);\n}\n/**\n *\n */\nexport async function notifyAuthSuccess() {\n    if (!authEE) {\n        logger.error(ERROR_MESSAGE.SDK_NOT_INITIALIZED);\n        return;\n    }\n    try {\n        getPreauthInfo();\n        const sessionInfo = await getSessionInfo();\n        authEE.emit(AuthStatus.SUCCESS, sessionInfo);\n    }\n    catch (e) {\n        logger.error(ERROR_MESSAGE.SESSION_INFO_FAILED);\n    }\n}\n/**\n *\n * @param failureType\n */\nexport function notifyAuthFailure(failureType) {\n    if (!authEE) {\n        logger.error(ERROR_MESSAGE.SDK_NOT_INITIALIZED);\n        return;\n    }\n    authEE.emit(AuthStatus.FAILURE, failureType);\n}\n/**\n *\n */\nexport function notifyLogout() {\n    if (!authEE) {\n        logger.error(ERROR_MESSAGE.SDK_NOT_INITIALIZED);\n        return;\n    }\n    authEE.emit(AuthStatus.LOGOUT);\n}\n/**\n * Check if we are logged into the ThoughtSpot cluster\n * @param thoughtSpotHost The ThoughtSpot cluster hostname or IP\n */\nasync function isLoggedIn(thoughtSpotHost) {\n    try {\n        const response = await isActiveService(thoughtSpotHost);\n        return response;\n    }\n    catch (e) {\n        return false;\n    }\n}\n/**\n * Services to be called after the login is successful,\n * This should be called after the cookie is set for cookie auth or\n * after the token is set for cookieless.\n * @return {Promise<void>}\n * @example\n * ```js\n * await postLoginService();\n * ```\n * @version SDK: 1.28.3 | ThoughtSpot: *\n */\nexport async function postLoginService() {\n    try {\n        getPreauthInfo();\n        const sessionInfo = await getSessionInfo();\n        releaseVersion = sessionInfo.releaseVersion;\n        const embedConfig = getEmbedConfig();\n        if (!embedConfig.disableSDKTracking) {\n            initMixpanel(sessionInfo);\n        }\n    }\n    catch (e) {\n        logger.error('Post login services failed.', e.message, e);\n    }\n}\n/**\n * Return releaseVersion if available\n */\nexport function getReleaseVersion() {\n    return releaseVersion;\n}\n/**\n * Check if we are stuck at the SSO redirect URL\n */\nfunction isAtSSORedirectUrl() {\n    return window.location.href.indexOf(getSSOMarker(SSO_REDIRECTION_MARKER_GUID)) >= 0;\n}\n/**\n * Remove the SSO redirect URL marker\n */\nfunction removeSSORedirectUrlMarker() {\n    // Note (sunny): This will leave a # around even if it was not in the URL\n    // to begin with. Trying to remove the hash by changing window.location will\n    // reload the page which we don't want. We'll live with adding an\n    // unnecessary hash to the parent page URL until we find any use case where\n    // that creates an issue.\n    // Replace any occurrences of ?ssoMarker=guid or &ssoMarker=guid.\n    let updatedHash = window.location.hash.replace(`?${getSSOMarker(SSO_REDIRECTION_MARKER_GUID)}`, '');\n    updatedHash = updatedHash.replace(`&${getSSOMarker(SSO_REDIRECTION_MARKER_GUID)}`, '');\n    window.location.hash = updatedHash;\n}\n/**\n * Perform token based authentication\n * @param embedConfig The embed configuration\n */\nexport const doTokenAuth = async (embedConfig) => {\n    const { thoughtSpotHost, username, authEndpoint, getAuthToken, } = embedConfig;\n    if (!authEndpoint && !getAuthToken) {\n        throw new Error('Either auth endpoint or getAuthToken function must be provided');\n    }\n    loggedInStatus = await isLoggedIn(thoughtSpotHost);\n    if (!loggedInStatus) {\n        let authToken;\n        try {\n            authToken = await getAuthenticationToken(embedConfig);\n        }\n        catch (e) {\n            loggedInStatus = false;\n            throw e;\n        }\n        let resp;\n        try {\n            resp = await fetchAuthPostService(thoughtSpotHost, username, authToken);\n        }\n        catch (e) {\n            resp = await fetchAuthService(thoughtSpotHost, username, authToken);\n        }\n        // token login issues a 302 when successful\n        loggedInStatus = resp.ok || resp.type === 'opaqueredirect';\n        if (loggedInStatus && embedConfig.detectCookieAccessSlow) {\n            // When 3rd party cookie access is blocked, this will fail because\n            // cookies will not be sent with the call.\n            loggedInStatus = await isLoggedIn(thoughtSpotHost);\n        }\n    }\n    return loggedInStatus;\n};\n/**\n * Validate embedConfig parameters required for cookielessTokenAuth\n * @param embedConfig The embed configuration\n */\nexport const doCookielessTokenAuth = async (embedConfig) => {\n    const { authEndpoint, getAuthToken } = embedConfig;\n    if (!authEndpoint && !getAuthToken) {\n        throw new Error('Either auth endpoint or getAuthToken function must be provided');\n    }\n    let authSuccess = false;\n    try {\n        const authToken = await getAuthenticationToken(embedConfig);\n        if (authToken) {\n            authSuccess = true;\n        }\n    }\n    catch {\n        authSuccess = false;\n    }\n    return authSuccess;\n};\n/**\n * Perform basic authentication to the ThoughtSpot cluster using the cluster\n * credentials.\n *\n * Warning: This feature is primarily intended for developer testing. It is\n * strongly advised not to use this authentication method in production.\n * @param embedConfig The embed configuration\n */\nexport const doBasicAuth = async (embedConfig) => {\n    const { thoughtSpotHost, username, password } = embedConfig;\n    const loggedIn = await isLoggedIn(thoughtSpotHost);\n    if (!loggedIn) {\n        const response = await fetchBasicAuthService(thoughtSpotHost, username, password);\n        loggedInStatus = response.ok;\n        if (embedConfig.detectCookieAccessSlow) {\n            loggedInStatus = await isLoggedIn(thoughtSpotHost);\n        }\n    }\n    else {\n        loggedInStatus = true;\n    }\n    return loggedInStatus;\n};\n/**\n *\n * @param ssoURL\n * @param triggerContainer\n * @param triggerText\n */\nasync function samlPopupFlow(ssoURL, triggerContainer, triggerText) {\n    let popupClosedCheck;\n    const openPopup = () => {\n        if (samlAuthWindow === null || samlAuthWindow.closed) {\n            samlAuthWindow = window.open(ssoURL, '_blank', 'location=no,height=570,width=520,scrollbars=yes,status=yes');\n            if (samlAuthWindow) {\n                popupClosedCheck = setInterval(() => {\n                    if (samlAuthWindow.closed) {\n                        clearInterval(popupClosedCheck);\n                        if (samlCompletionPromise && !samlCompletionResolved) {\n                            authEE === null || authEE === void 0 ? void 0 : authEE.emit(AuthStatus.SAML_POPUP_CLOSED_NO_AUTH);\n                        }\n                    }\n                }, 500);\n            }\n        }\n        else {\n            samlAuthWindow.focus();\n        }\n    };\n    let samlCompletionResolved = false;\n    authEE === null || authEE === void 0 ? void 0 : authEE.emit(AuthStatus.WAITING_FOR_POPUP);\n    const containerEl = getDOMNode(triggerContainer);\n    if (containerEl) {\n        containerEl.innerHTML = '<button id=\"ts-auth-btn\" class=\"ts-auth-btn\" style=\"margin: auto;\"></button>';\n        const authElem = document.getElementById('ts-auth-btn');\n        authElem.textContent = triggerText;\n        authElem.addEventListener('click', openPopup, { once: true });\n    }\n    samlCompletionPromise = samlCompletionPromise || new Promise((resolve, reject) => {\n        window.addEventListener('message', (e) => {\n            if (e.data.type === EmbedEvent.SAMLComplete) {\n                if (e.data.accessToken) {\n                    const decodedToken = decodeURIComponent(e.data.accessToken);\n                    storeAuthTokenInCache(decodedToken);\n                }\n                samlCompletionResolved = true;\n                if (popupClosedCheck) {\n                    clearInterval(popupClosedCheck);\n                }\n                e.source.close();\n                resolve();\n            }\n        });\n    });\n    authEE === null || authEE === void 0 ? void 0 : authEE.once(AuthEvent.TRIGGER_SSO_POPUP, openPopup);\n    return samlCompletionPromise;\n}\n/**\n * Perform SAML authentication\n * @param embedConfig The embed configuration\n * @param ssoEndPoint\n */\nconst doSSOAuth = async (embedConfig, ssoEndPoint) => {\n    const { thoughtSpotHost } = embedConfig;\n    const loggedIn = await isLoggedIn(thoughtSpotHost);\n    if (loggedIn) {\n        if (isAtSSORedirectUrl()) {\n            removeSSORedirectUrlMarker();\n        }\n        loggedInStatus = true;\n        return;\n    }\n    // we have already tried authentication and it did not succeed, restore\n    // the current URL to the original one and invoke the callback.\n    if (isAtSSORedirectUrl()) {\n        removeSSORedirectUrlMarker();\n        loggedInStatus = false;\n        return;\n    }\n    const ssoURL = `${thoughtSpotHost}${ssoEndPoint}`;\n    if (embedConfig.inPopup) {\n        await samlPopupFlow(ssoURL, embedConfig.authTriggerContainer, embedConfig.authTriggerText);\n        const cachedToken = getCacheAuthToken();\n        if (cachedToken) {\n            loggedInStatus = true;\n        }\n        else {\n            loggedInStatus = await isLoggedIn(thoughtSpotHost);\n        }\n        return;\n    }\n    window.location.href = ssoURL;\n};\nexport const doSamlAuth = async (embedConfig) => {\n    const { thoughtSpotHost } = embedConfig;\n    // redirect for SSO, when the SSO authentication is done, this page will be\n    // loaded again and the same JS will execute again.\n    const ssoRedirectUrl = embedConfig.inPopup\n        ? `${thoughtSpotHost}/v2/#/embed/saml-complete`\n        : getRedirectUrl(window.location.href, SSO_REDIRECTION_MARKER_GUID, embedConfig.redirectPath);\n    // bring back the page to the same URL\n    const ssoEndPoint = `${EndPoints.SAML_LOGIN_TEMPLATE(encodeURIComponent(ssoRedirectUrl))}`;\n    await doSSOAuth(embedConfig, ssoEndPoint);\n    return loggedInStatus;\n};\nexport const doOIDCAuth = async (embedConfig) => {\n    const { thoughtSpotHost } = embedConfig;\n    // redirect for SSO, when the SSO authentication is done, this page will be\n    // loaded again and the same JS will execute again.\n    const ssoRedirectUrl = embedConfig.noRedirect || embedConfig.inPopup\n        ? `${thoughtSpotHost}/v2/#/embed/saml-complete`\n        : getRedirectUrl(window.location.href, SSO_REDIRECTION_MARKER_GUID, embedConfig.redirectPath);\n    // bring back the page to the same URL\n    const baseEndpoint = `${EndPoints.OIDC_LOGIN_TEMPLATE(encodeURIComponent(ssoRedirectUrl))}`;\n    const ssoEndPoint = `${baseEndpoint}${baseEndpoint.includes('?') ? '&' : '?'}forceSAMLAutoRedirect=true`;\n    await doSSOAuth(embedConfig, ssoEndPoint);\n    return loggedInStatus;\n};\nexport const logout = async (embedConfig) => {\n    const { thoughtSpotHost } = embedConfig;\n    await fetchLogoutService(thoughtSpotHost);\n    resetAllCachedServices();\n    const thoughtspotIframes = document.querySelectorAll(\"[data-ts-iframe='true']\");\n    if (thoughtspotIframes === null || thoughtspotIframes === void 0 ? void 0 : thoughtspotIframes.length) {\n        thoughtspotIframes.forEach((el) => {\n            el.parentElement.innerHTML = embedConfig.loginFailedMessage;\n        });\n    }\n    loggedInStatus = false;\n    return loggedInStatus;\n};\n/**\n * Perform authentication on the ThoughtSpot cluster\n * @param embedConfig The embed configuration\n */\nexport const authenticate = async (embedConfig) => {\n    const { authType } = embedConfig;\n    switch (authType) {\n        case AuthType.SSO:\n        case AuthType.SAMLRedirect:\n        case AuthType.SAML:\n            return doSamlAuth(embedConfig);\n        case AuthType.OIDC:\n        case AuthType.OIDCRedirect:\n            return doOIDCAuth(embedConfig);\n        case AuthType.AuthServer:\n        case AuthType.TrustedAuthToken:\n            return doTokenAuth(embedConfig);\n        case AuthType.TrustedAuthTokenCookieless:\n            return doCookielessTokenAuth(embedConfig);\n        case AuthType.Basic:\n            return doBasicAuth(embedConfig);\n        default:\n            return Promise.resolve(true);\n    }\n};\n/**\n * Check if we are authenticated to the ThoughtSpot cluster\n */\nexport const isAuthenticated = () => loggedInStatus;\n//# sourceMappingURL=auth.js.map","import { ERROR_MESSAGE } from './errors';\nimport { getValueFromWindow, storeValueInWindow, formatTemplate } from './utils';\nimport { fetchAuthTokenService, verifyTokenService } from './utils/authService/authService';\nimport { logger } from './utils/logger';\nconst cacheAuthTokenKey = 'cachedAuthToken';\nexport const getCacheAuthToken = () => getValueFromWindow(cacheAuthTokenKey);\nexport const storeAuthTokenInCache = (token) => {\n    storeValueInWindow(cacheAuthTokenKey, token);\n};\n// This method can be used to get the authToken using the embedConfig\n/**\n *\n * @param embedConfig\n */\nexport async function getAuthenticationToken(embedConfig, skipvalidation = false) {\n    const cachedAuthToken = getCacheAuthToken();\n    // Since we don't have token validation enabled , we cannot tell if the\n    // cached token is valid or not. So we will always fetch a new token.\n    if (cachedAuthToken && !embedConfig.disableTokenVerification && !skipvalidation) {\n        let isCachedTokenStillValid;\n        try {\n            isCachedTokenStillValid = await validateAuthToken(embedConfig, cachedAuthToken, true);\n        }\n        catch {\n            isCachedTokenStillValid = false;\n        }\n        if (isCachedTokenStillValid)\n            return cachedAuthToken;\n    }\n    const { authEndpoint, getAuthToken } = embedConfig;\n    let authToken = null;\n    if (getAuthToken) {\n        authToken = await getAuthToken();\n    }\n    else {\n        const response = await fetchAuthTokenService(authEndpoint);\n        authToken = await response.text();\n    }\n    try {\n        // this will throw error if the token is not valid\n        await validateAuthToken(embedConfig, authToken);\n    }\n    catch (e) {\n        logger.error(`${ERROR_MESSAGE.INVALID_TOKEN_ERROR} Error : ${e.message}`);\n        throw e;\n    }\n    storeAuthTokenInCache(authToken);\n    return authToken;\n}\nexport const validateAuthToken = async (embedConfig, authToken, suppressAlert) => {\n    // even if token verification is disabled, we will still validate\n    // that the token is a string before proceeding.\n    if (typeof authToken !== 'string') {\n        const errorMessage = formatTemplate(ERROR_MESSAGE.INVALID_TOKEN_TYPE_ERROR, {\n            invalidType: typeof authToken,\n        });\n        logger.error(errorMessage);\n        throw new Error(errorMessage);\n    }\n    const cachedAuthToken = getCacheAuthToken();\n    if (embedConfig.disableTokenVerification) {\n        logger.info('Token verification is disabled. Assuming token is valid.');\n        return true;\n    }\n    try {\n        const isTokenValid = await verifyTokenService(embedConfig.thoughtSpotHost, authToken);\n        if (isTokenValid)\n            return true;\n    }\n    catch {\n        return false;\n    }\n    if (cachedAuthToken && cachedAuthToken === authToken) {\n        if (!embedConfig.suppressErrorAlerts && !suppressAlert) {\n            alert(ERROR_MESSAGE.DUPLICATE_TOKEN_ERR);\n        }\n        throw new Error(ERROR_MESSAGE.DUPLICATE_TOKEN_ERR);\n    }\n    else {\n        throw new Error(ERROR_MESSAGE.INVALID_TOKEN_ERROR);\n    }\n};\n/**\n * Resets the auth token and a new token will be fetched on the next request.\n * @example\n * ```js\n * resetCachedAuthToken();\n * ```\n * @version SDK: 1.28.0 | ThoughtSpot: *\n * @group Authentication / Init\n */\nexport const resetCachedAuthToken = () => {\n    storeAuthTokenInCache(null);\n};\n//# sourceMappingURL=authToken.js.map","import { ERROR_MESSAGE } from './errors';\n/**\n * Copyright (c) 2023\n *\n * Utilities related to reading configuration objects\n * @summary Config-related utils\n * @author Ayon Ghosh <ayon.ghosh@thoughtspot.com>\n */\nconst urlRegex = new RegExp([\n    '(^(https?:)//)?',\n    '(([^:/?#]*)(?::([0-9]+))?)',\n    '(/{0,1}[^?#]*)',\n    '(\\\\?[^#]*|)',\n    '(#.*|)$', // hash\n].join(''));\n/**\n * Parse and construct the ThoughtSpot hostname or IP address\n * from the embed configuration object.\n * @param config\n */\nexport const getThoughtSpotHost = (config) => {\n    if (!config.thoughtSpotHost) {\n        throw new Error(ERROR_MESSAGE.INVALID_THOUGHTSPOT_HOST);\n    }\n    const urlParts = config.thoughtSpotHost.match(urlRegex);\n    if (!urlParts) {\n        throw new Error(ERROR_MESSAGE.INVALID_THOUGHTSPOT_HOST);\n    }\n    const protocol = urlParts[2] || window.location.protocol;\n    const host = urlParts[3];\n    let path = urlParts[6];\n    // Lose the trailing / if any\n    if (path.charAt(path.length - 1) === '/') {\n        path = path.substring(0, path.length - 1);\n    }\n    // const urlParams = urlParts[7];\n    // const hash = urlParts[8];\n    return `${protocol}//${host}${path}`;\n};\nexport const getV2BasePath = (config) => {\n    if (config.basepath) {\n        return config.basepath;\n    }\n    const tsHost = getThoughtSpotHost(config);\n    // This is to handle when e2e's. Search is run on pods for\n    // comp-blink-test-pipeline with baseUrl=https://localhost:8443.\n    // This is to handle when the developer is developing in their local\n    // environment.\n    if (tsHost.includes('://localhost') && !tsHost.includes(':8443')) {\n        return '';\n    }\n    return 'v2';\n};\n/**\n * It is a good idea to keep URLs under 2000 chars.\n * If this is ever breached, since we pass view configuration through\n * URL params, we would like to log a warning.\n * Reference: https://stackoverflow.com/questions/417142/what-is-the-maximum-length-of-a-url-in-different-browsers\n */\nexport const URL_MAX_LENGTH = 2000;\n/**\n * The default CSS dimensions of the embedded app\n */\nexport const DEFAULT_EMBED_WIDTH = '100%';\nexport const DEFAULT_EMBED_HEIGHT = '100%';\n//# sourceMappingURL=config.js.map","/**\n * Copyright (c) 2022\n *\n * Full application embedding\n * https://developers.thoughtspot.com/docs/?pageid=full-embed\n * @summary Full app embed\n * @module\n * @author Ayon Ghosh <ayon.ghosh@thoughtspot.com>\n */\nimport { logger } from '../utils/logger';\nimport { calculateVisibleElementData, getEffectiveClippingAncestors, getQueryParamString, getScrollableAncestors, isUndefined, isValidCssMargin, setParamIfDefined } from '../utils';\nimport { Param, HostEvent, EmbedEvent, } from '../types';\nimport { V1Embed } from './ts-embed';\nimport { buildSpotterSidebarAppInitData } from './spotter-utils';\nimport { buildSpotterVizAppInitData } from './spotter-viz-utils';\n/**\n * Pages within the ThoughtSpot app that can be embedded.\n */\nexport var Page;\n(function (Page) {\n    /**\n     * Home page\n     */\n    Page[\"Home\"] = \"home\";\n    /**\n     * Search page\n     */\n    Page[\"Search\"] = \"search\";\n    /**\n     * Saved answers listing page\n     */\n    Page[\"Answers\"] = \"answers\";\n    /**\n     * Liveboards listing page\n     */\n    Page[\"Liveboards\"] = \"liveboards\";\n    /**\n     * @hidden\n     */\n    Page[\"Pinboards\"] = \"pinboards\";\n    /**\n     * Data management page\n     */\n    Page[\"Data\"] = \"data\";\n    /**\n     * SpotIQ listing page\n     */\n    Page[\"SpotIQ\"] = \"insights\";\n    /**\n     *  Monitor Alerts Page\n     */\n    Page[\"Monitor\"] = \"monitor\";\n})(Page || (Page = {}));\n/**\n * Define the initial state of column custom group accordions\n * in data panel v2.\n */\nexport var DataPanelCustomColumnGroupsAccordionState;\n(function (DataPanelCustomColumnGroupsAccordionState) {\n    /**\n     * Expand all the accordion initially in data panel v2.\n     */\n    DataPanelCustomColumnGroupsAccordionState[\"EXPAND_ALL\"] = \"EXPAND_ALL\";\n    /**\n     * Collapse all the accordions initially in data panel v2.\n     */\n    DataPanelCustomColumnGroupsAccordionState[\"COLLAPSE_ALL\"] = \"COLLAPSE_ALL\";\n    /**\n     * Expand the first accordion and collapse the rest.\n     */\n    DataPanelCustomColumnGroupsAccordionState[\"EXPAND_FIRST\"] = \"EXPAND_FIRST\";\n})(DataPanelCustomColumnGroupsAccordionState || (DataPanelCustomColumnGroupsAccordionState = {}));\nexport var HomePageSearchBarMode;\n(function (HomePageSearchBarMode) {\n    HomePageSearchBarMode[\"OBJECT_SEARCH\"] = \"objectSearch\";\n    HomePageSearchBarMode[\"AI_ANSWER\"] = \"aiAnswer\";\n    HomePageSearchBarMode[\"NONE\"] = \"none\";\n})(HomePageSearchBarMode || (HomePageSearchBarMode = {}));\n/**\n * Define the version of the primary navbar\n * @version SDK: 1.40.0 | ThoughtSpot: 10.11.0.cl\n */\nexport var PrimaryNavbarVersion;\n(function (PrimaryNavbarVersion) {\n    /**\n     * Sliding (v3) introduces a new left-side navigation hub featuring a tab switcher,\n     * along with updates to the top navigation bar.\n     * It serves as the foundational version of the PrimaryNavBar.\n     */\n    PrimaryNavbarVersion[\"Sliding\"] = \"v3\";\n})(PrimaryNavbarVersion || (PrimaryNavbarVersion = {}));\n/**\n * Define the version of the home page\n * @version SDK: 1.40.0 | ThoughtSpot: 10.11.0.cl\n */\nexport var HomePage;\n(function (HomePage) {\n    /**\n     * Modular (v2) introduces the updated Modular Home Experience.\n     * It serves as the foundational version of the home page.\n     */\n    HomePage[\"Modular\"] = \"v2\";\n    /**\n     * ModularWithStylingChanges (v3) introduces Modular Home Experience\n     * with styling changes.\n     */\n    HomePage[\"ModularWithStylingChanges\"] = \"v3\";\n    /**\n     * Focused (v4) introduces the V4 homepage experience\n     * in which Watchlist and recents and incorporated together\n     * to form a more focused homepage.\n     * Pre-requisite : spotter enablement\n     * @version SDK: 1.50.0 | ThoughtSpot Cloud: 26.7.0.cl\n     */\n    HomePage[\"Focused\"] = \"v4\";\n})(HomePage || (HomePage = {}));\n/**\n * Define the version of the list page\n * @version SDK: 1.40.0 | ThoughtSpot: 10.12.0.cl\n */\nexport var ListPage;\n(function (ListPage) {\n    /**\n     * List (v2) is the traditional List Experience.\n     * It serves as the foundational version of the list page.\n     */\n    ListPage[\"List\"] = \"v2\";\n    /**\n     * ListWithUXChanges (v3) introduces the new updated list page with UX changes.\n     */\n    ListPage[\"ListWithUXChanges\"] = \"v3\";\n})(ListPage || (ListPage = {}));\n/**\n * Embeds full ThoughtSpot experience in a host application.\n * @group Embed components\n */\nexport class AppEmbed extends V1Embed {\n    constructor(domSelector, viewConfig) {\n        viewConfig.embedComponentType = 'AppEmbed';\n        super(domSelector, viewConfig);\n        this.defaultHeight = 500;\n        this.lazyLoadScrollContainers = [];\n        this.sendFullHeightLazyLoadData = () => {\n            const data = calculateVisibleElementData(this.iFrame, this.viewConfig.enableScrollableContainerLazyLoading);\n            // this should be fired only if the lazyLoadingForFullHeight and fullHeight are true\n            if (this.viewConfig.lazyLoadingForFullHeight && this.viewConfig.fullHeight) {\n                this.trigger(HostEvent.VisibleEmbedCoordinates, data);\n            }\n        };\n        /**\n         * This is a handler for the RequestVisibleEmbedCoordinates event.\n         * It is used to send the visible coordinates data to the host application.\n         * @param data The event payload\n         * @param responder The responder function\n         */\n        this.requestVisibleEmbedCoordinatesHandler = (data, responder) => {\n            logger.info('Sending RequestVisibleEmbedCoordinates', data);\n            const visibleCoordinatesData = calculateVisibleElementData(this.iFrame, this.viewConfig.enableScrollableContainerLazyLoading);\n            responder({ type: EmbedEvent.RequestVisibleEmbedCoordinates, data: visibleCoordinatesData });\n        };\n        /**\n         * Set the iframe height as per the computed height received\n         * from the ThoughtSpot app.\n         * @param data The event payload\n         */\n        this.updateIFrameHeight = (data) => {\n            this.setIFrameHeight(Math.max(data.data, this.defaultHeight));\n            this.sendFullHeightLazyLoadData();\n        };\n        this.embedIframeCenter = (data, responder) => {\n            const obj = this.getIframeCenter();\n            responder({ type: EmbedEvent.EmbedIframeCenter, data: obj });\n        };\n        this.setIframeHeightForNonEmbedLiveboard = (data) => {\n            const { height: frameHeight } = this.viewConfig.frameParams || {};\n            const liveboardRelatedRoutes = [\n                '/pinboard/',\n                '/insights/pinboard/',\n                '/schedules/',\n                '/embed/viz/',\n                '/embed/insights/viz/',\n                '/liveboard/',\n                '/insights/liveboard/',\n                '/tsl-editor/PINBOARD_ANSWER_BOOK/',\n                '/import-tsl/PINBOARD_ANSWER_BOOK/',\n            ];\n            if (liveboardRelatedRoutes.some((path) => data.data.currentPath.startsWith(path))) {\n                // Ignore the height reset of the frame, if the navigation is\n                // only within the liveboard page.\n                return;\n            }\n            this.setIFrameHeight(frameHeight || this.defaultHeight);\n        };\n        if (this.viewConfig.fullHeight === true) {\n            this.on(EmbedEvent.RouteChange, this.setIframeHeightForNonEmbedLiveboard);\n            this.on(EmbedEvent.EmbedHeight, this.updateIFrameHeight);\n            this.on(EmbedEvent.EmbedIframeCenter, this.embedIframeCenter);\n            this.on(EmbedEvent.RequestVisibleEmbedCoordinates, this.requestVisibleEmbedCoordinatesHandler);\n        }\n    }\n    /**\n     * Extends the default APP_INIT payload with `embedParams.spotterSidebarConfig`\n     * so the conv-assist app can read sidebar configuration on initialisation.\n     *\n     * Precedence for `enablePastConversationsSidebar`:\n     * `spotterSidebarConfig.enablePastConversationsSidebar` wins over the\n     * deprecated top-level `enablePastConversationsSidebar` flag; if the former\n     * is absent the latter is used as a fallback.\n     *\n     * An invalid `spotterDocumentationUrl` triggers a validation error and is\n     * excluded from the payload rather than forwarded to the app.\n     */\n    async getAppInitData() {\n        const defaultAppInitData = await super.getAppInitData();\n        const sidebarInitData = buildSpotterSidebarAppInitData(defaultAppInitData, this.viewConfig, this.handleError.bind(this));\n        return buildSpotterVizAppInitData(sidebarInitData, this.viewConfig);\n    }\n    /**\n     * Constructs a map of parameters to be passed on to the\n     * embedded Liveboard or visualization.\n     */\n    getEmbedParams() {\n        const { tag, hideTagFilterChips, hideObjects, liveboardV2, showPrimaryNavbar, disableProfileAndHelp, hideHamburger, hideObjectSearch, hideNotification, hideApplicationSwitcher, hideOrgSwitcher, enableSearchAssist, newConnectionsExperience, fullHeight, dataPanelV2 = true, hideLiveboardHeader = false, showLiveboardTitle = true, showLiveboardDescription = true, showMaskedFilterChip = false, isLiveboardMasterpiecesEnabled = false, newChartsLibrary, hideHomepageLeftNav = false, modularHomeExperience = false, isLiveboardHeaderSticky = true, enableAskSage, collapseSearchBarInitially = false, enable2ColumnLayout, enableCustomColumnGroups = false, dataPanelCustomGroupsAccordionInitialState = DataPanelCustomColumnGroupsAccordionState.EXPAND_ALL, collapseSearchBar = true, isLiveboardCompactHeaderEnabled = false, showLiveboardVerifiedBadge = true, showLiveboardReverifyBanner = true, hideIrrelevantChipsInLiveboardTabs = false, isEnhancedFilterInteractivityEnabled = false, homePageSearchBarMode, isUnifiedSearchExperienceEnabled = true, enablePendoHelp = true, discoveryExperience, coverAndFilterOptionInPDF = false, isLiveboardStylingAndGroupingEnabled, isPNGInScheduledEmailsEnabled = false, isLiveboardXLSXCSVDownloadEnabled = false, isGranularXLSXCSVSchedulesEnabled = false, isCentralizedLiveboardFilterUXEnabled = false, isLinkParametersEnabled, updatedSpotterChatPrompt, enableStopAnswerGenerationEmbed, spotterChatConfig, minimumHeight, isThisPeriodInDateFiltersEnabled, enableHomepageAnnouncement = false, isContinuousLiveboardPDFEnabled = false, enableLiveboardDataCache, } = this.viewConfig;\n        let params = {};\n        params[Param.PrimaryNavHidden] = !showPrimaryNavbar;\n        params[Param.HideProfleAndHelp] = !!disableProfileAndHelp;\n        params[Param.HideApplicationSwitcher] = !!hideApplicationSwitcher;\n        params[Param.HideOrgSwitcher] = !!hideOrgSwitcher;\n        params[Param.HideLiveboardHeader] = hideLiveboardHeader;\n        params[Param.ShowLiveboardTitle] = showLiveboardTitle;\n        params[Param.ShowLiveboardDescription] = !!showLiveboardDescription;\n        params[Param.ShowMaskedFilterChip] = showMaskedFilterChip;\n        params[Param.IsLiveboardMasterpiecesEnabled] = isLiveboardMasterpiecesEnabled;\n        if (newChartsLibrary !== undefined) {\n            params[Param.EnableNewChartLibrary] = newChartsLibrary;\n        }\n        params[Param.LiveboardHeaderSticky] = isLiveboardHeaderSticky;\n        params[Param.IsFullAppEmbed] = true;\n        params[Param.LiveboardHeaderV2] = isLiveboardCompactHeaderEnabled;\n        params[Param.IsEnhancedFilterInteractivityEnabled] = isEnhancedFilterInteractivityEnabled;\n        params[Param.ShowLiveboardVerifiedBadge] = showLiveboardVerifiedBadge;\n        params[Param.ShowLiveboardReverifyBanner] = showLiveboardReverifyBanner;\n        params[Param.HideIrrelevantFiltersInTab] = hideIrrelevantChipsInLiveboardTabs;\n        if (isUnifiedSearchExperienceEnabled !== undefined) {\n            params[Param.IsUnifiedSearchExperienceEnabled] = isUnifiedSearchExperienceEnabled;\n        }\n        params[Param.CoverAndFilterOptionInPDF] = !!coverAndFilterOptionInPDF;\n        params = this.getBaseQueryParams(params);\n        if (!isUndefined(updatedSpotterChatPrompt)) {\n            params[Param.UpdatedSpotterChatPrompt] = !!updatedSpotterChatPrompt;\n        }\n        if (!isUndefined(enableStopAnswerGenerationEmbed)) {\n            params[Param.EnableStopAnswerGenerationEmbed] = !!enableStopAnswerGenerationEmbed;\n        }\n        // Handle spotterChatConfig params\n        if (spotterChatConfig) {\n            const { hideToolResponseCardBranding, toolResponseCardBrandingLabel, spotterFileUploadEnabled, spotterFileUploadFileTypes, } = spotterChatConfig;\n            setParamIfDefined(params, Param.HideToolResponseCardBranding, hideToolResponseCardBranding, true);\n            setParamIfDefined(params, Param.ToolResponseCardBrandingLabel, toolResponseCardBrandingLabel);\n            if (spotterFileUploadEnabled !== undefined) {\n                params[Param.SpotterFileUploadEnabled] = spotterFileUploadEnabled;\n            }\n            if (spotterFileUploadFileTypes !== undefined) {\n                params[Param.SpotterFileUploadFileTypes] = JSON.stringify(spotterFileUploadFileTypes);\n            }\n        }\n        if (hideObjectSearch) {\n            params[Param.HideObjectSearch] = !!hideObjectSearch;\n        }\n        if (hideHamburger) {\n            params[Param.HideHamburger] = !!hideHamburger;\n        }\n        if (hideNotification) {\n            params[Param.HideNotification] = !!hideNotification;\n        }\n        if (fullHeight === true) {\n            params[Param.fullHeight] = true;\n            if (this.viewConfig.lazyLoadingForFullHeight) {\n                params[Param.IsLazyLoadingForEmbedEnabled] = true;\n                if (isValidCssMargin(this.viewConfig.lazyLoadingMargin)) {\n                    params[Param.RootMarginForLazyLoad] = this.viewConfig.lazyLoadingMargin;\n                }\n            }\n        }\n        if (tag) {\n            params[Param.Tag] = tag;\n        }\n        if (hideObjects && hideObjects.length) {\n            params[Param.HideObjects] = JSON.stringify(hideObjects);\n        }\n        if (liveboardV2 !== undefined) {\n            params[Param.LiveboardV2Enabled] = liveboardV2;\n        }\n        if (enableSearchAssist !== undefined) {\n            params[Param.EnableSearchAssist] = enableSearchAssist;\n        }\n        if (newConnectionsExperience !== undefined) {\n            params[Param.EnableConnectionNewExperience] = newConnectionsExperience;\n        }\n        if (enable2ColumnLayout !== undefined) {\n            params[Param.Enable2ColumnLayout] = enable2ColumnLayout;\n        }\n        if (enableAskSage) {\n            params[Param.enableAskSage] = enableAskSage;\n        }\n        if (homePageSearchBarMode) {\n            params[Param.HomePageSearchBarMode] = homePageSearchBarMode;\n        }\n        if (enablePendoHelp !== undefined) {\n            params[Param.EnablePendoHelp] = enablePendoHelp;\n        }\n        if (isLiveboardStylingAndGroupingEnabled !== undefined) {\n            params[Param.IsLiveboardStylingAndGroupingEnabled] = isLiveboardStylingAndGroupingEnabled;\n        }\n        if (isPNGInScheduledEmailsEnabled !== undefined) {\n            params[Param.isPNGInScheduledEmailsEnabled] = isPNGInScheduledEmailsEnabled;\n        }\n        if (isLiveboardXLSXCSVDownloadEnabled !== undefined) {\n            params[Param.isLiveboardXLSXCSVDownloadEnabled] = isLiveboardXLSXCSVDownloadEnabled;\n        }\n        if (isGranularXLSXCSVSchedulesEnabled !== undefined) {\n            params[Param.isGranularXLSXCSVSchedulesEnabled] = isGranularXLSXCSVSchedulesEnabled;\n        }\n        if (hideTagFilterChips !== undefined) {\n            params[Param.HideTagFilterChips] = hideTagFilterChips;\n        }\n        if (isLinkParametersEnabled !== undefined) {\n            params[Param.isLinkParametersEnabled] = isLinkParametersEnabled;\n        }\n        if (isCentralizedLiveboardFilterUXEnabled != undefined) {\n            params[Param.isCentralizedLiveboardFilterUXEnabled] = isCentralizedLiveboardFilterUXEnabled;\n        }\n        if (isThisPeriodInDateFiltersEnabled !== undefined) {\n            params[Param.IsThisPeriodInDateFiltersEnabled] = isThisPeriodInDateFiltersEnabled;\n        }\n        if (enableHomepageAnnouncement !== undefined) {\n            params[Param.EnableHomepageAnnouncement] = enableHomepageAnnouncement;\n        }\n        if (isContinuousLiveboardPDFEnabled !== undefined) {\n            params[Param.IsWYSIWYGLiveboardPDFEnabled] = isContinuousLiveboardPDFEnabled;\n        }\n        this.defaultHeight = minimumHeight || this.defaultHeight;\n        if (enableLiveboardDataCache !== undefined) {\n            params[Param.EnableLiveboardDataCache] = enableLiveboardDataCache;\n        }\n        params[Param.DataPanelV2Enabled] = dataPanelV2;\n        params[Param.HideHomepageLeftNav] = hideHomepageLeftNav;\n        params[Param.ModularHomeExperienceEnabled] = modularHomeExperience;\n        params[Param.CollapseSearchBarInitially] = collapseSearchBarInitially || collapseSearchBar;\n        params[Param.EnableCustomColumnGroups] = enableCustomColumnGroups;\n        if (dataPanelCustomGroupsAccordionInitialState\n            === DataPanelCustomColumnGroupsAccordionState.COLLAPSE_ALL\n            || dataPanelCustomGroupsAccordionInitialState\n                === DataPanelCustomColumnGroupsAccordionState.EXPAND_FIRST) {\n            params[Param.DataPanelCustomGroupsAccordionInitialState] = dataPanelCustomGroupsAccordionInitialState;\n        }\n        else {\n            params[Param.DataPanelCustomGroupsAccordionInitialState] = DataPanelCustomColumnGroupsAccordionState.EXPAND_ALL;\n        }\n        if (modularHomeExperience !== undefined) {\n            params[Param.ModularHomeExperienceEnabled] = modularHomeExperience;\n        }\n        // Set navigation to v2 by default to avoid problems like the app\n        // switcher (9-dot menu) not showing when v3 navigation is turned on\n        // at the cluster level.\n        // To use v3 navigation, we must manually set the discoveryExperience\n        // settings.\n        params[Param.NavigationVersion] = 'v2';\n        // Set homePageVersion to v2 by default to reset the LD flag value\n        // for the homepageVersion.\n        params[Param.HomepageVersion] = 'v2';\n        if (discoveryExperience) {\n            // primaryNavbarVersion v3 will enabled the new left navigation\n            if (discoveryExperience.primaryNavbarVersion === PrimaryNavbarVersion.Sliding) {\n                params[Param.NavigationVersion] = discoveryExperience.primaryNavbarVersion;\n                // Enable the modularHomeExperience when Sliding is enabled.\n                params[Param.ModularHomeExperienceEnabled] = true;\n            }\n            // homePage v2 will enable the modular home page\n            // and it will override the modularHomeExperience value\n            if (discoveryExperience.homePage === HomePage.Modular) {\n                params[Param.ModularHomeExperienceEnabled] = true;\n            }\n            // ModularWithStylingChanges (v3) introduces the styling changes\n            // to the Modular Homepage.\n            // v3 will be the base version of homePageVersion.\n            if (discoveryExperience.homePage === HomePage.ModularWithStylingChanges) {\n                params[Param.HomepageVersion] = HomePage.ModularWithStylingChanges;\n            }\n            // listPageVersion can be changed to v2 or v3\n            if (discoveryExperience.listPageVersion !== undefined) {\n                params[Param.ListPageVersion] = discoveryExperience.listPageVersion;\n            }\n            if (discoveryExperience.homePage === HomePage.Focused) {\n                params[Param.HomepageVersion] = HomePage.Focused;\n            }\n        }\n        const queryParams = getQueryParamString(params, true);\n        return queryParams;\n    }\n    /**\n     * Constructs the URL of the ThoughtSpot app page to be rendered.\n     * @param pageId The ID of the page to be embedded.\n     */\n    getIFrameSrc() {\n        const { pageId, path, modularHomeExperience } = this.viewConfig;\n        const pageRoute = this.formatPath(path) || this.getPageRoute(pageId, modularHomeExperience);\n        let url = `${this.getRootIframeSrc()}/${pageRoute}`;\n        const tsPostHashParams = this.getThoughtSpotPostUrlParams();\n        url = `${url}${tsPostHashParams}`;\n        return url;\n    }\n    /**\n     * Gets the ThoughtSpot route of the page for a particular page ID.\n     * @param pageId The identifier for a page in the ThoughtSpot app.\n     * @param modularHomeExperience\n     */\n    getPageRoute(pageId, modularHomeExperience = false) {\n        switch (pageId) {\n            case Page.Search:\n                return 'answer';\n            case Page.Answers:\n                return modularHomeExperience ? 'home/answers' : 'answers';\n            case Page.Liveboards:\n                return modularHomeExperience ? 'home/liveboards' : 'pinboards';\n            case Page.Pinboards:\n                return modularHomeExperience ? 'home/liveboards' : 'pinboards';\n            case Page.Data:\n                return 'data/tables';\n            case Page.SpotIQ:\n                return modularHomeExperience ? 'home/spotiq-analysis' : 'insights/results';\n            case Page.Monitor:\n                return modularHomeExperience ? 'home/monitor-alerts' : 'insights/monitor-alerts';\n            case Page.Home:\n            default:\n                return 'home';\n        }\n    }\n    /**\n     * Formats the path provided by the user.\n     * @param path The URL path.\n     * @returns The URL path that the embedded app understands.\n     */\n    formatPath(path) {\n        if (!path) {\n            return null;\n        }\n        // remove leading slash\n        if (path.indexOf('/') === 0) {\n            return path.substring(1);\n        }\n        return path;\n    }\n    /**\n     * Navigate to particular page for app embed. eg:answers/pinboards/home\n     * This is used for embedding answers, pinboards, visualizations and full application\n     * only.\n     * @param path string | number The string, set to iframe src and navigate to new page\n     * eg: appEmbed.navigateToPage('pinboards')\n     * When used with `noReload` (default: true) this can also be a number\n     * like 1/-1 to go forward/back.\n     * @param noReload boolean Trigger the navigation without reloading the page\n     * @version SDK: 1.12.0 | ThoughtSpot: 8.4.0.cl, 8.4.1-sw\n     */\n    navigateToPage(path, noReload = false) {\n        if (!this.iFrame) {\n            logger.log('Please call render before invoking this method');\n            return;\n        }\n        if (noReload) {\n            this.trigger(HostEvent.Navigate, path);\n        }\n        else {\n            if (typeof path !== 'string') {\n                logger.warn('Path can only by a string when triggered without noReload');\n                return;\n            }\n            const iframeSrc = this.iFrame.src;\n            const embedPath = '#/embed';\n            const currentPath = iframeSrc.includes(embedPath) ? embedPath : '#';\n            this.iFrame.src = `${iframeSrc.split(currentPath)[0]}${currentPath}/${path.replace(/^\\/?#?\\//, '')}`;\n        }\n    }\n    /**\n     * Destroys the ThoughtSpot embed, and remove any nodes from the DOM.\n     * @version SDK: 1.39.0 | ThoughtSpot: 10.10.0.cl\n     */\n    destroy() {\n        super.destroy();\n        this.unregisterLazyLoadEvents();\n    }\n    postRender() {\n        this.registerLazyLoadEvents();\n    }\n    registerLazyLoadEvents() {\n        if (!this.iFrame) {\n            return;\n        }\n        if (this.viewConfig.fullHeight && this.viewConfig.lazyLoadingForFullHeight) {\n            this.unregisterLazyLoadEvents();\n            // TODO: Use passive: true, install modernizr to check for passive\n            window.addEventListener('resize', this.sendFullHeightLazyLoadData);\n            window.addEventListener('scroll', this.sendFullHeightLazyLoadData, true);\n            if (!this.viewConfig.enableScrollableContainerLazyLoading) {\n                return;\n            }\n            this.lazyLoadScrollContainers = getScrollableAncestors(this.iFrame);\n            this.lazyLoadScrollContainers.forEach((scrollContainer) => {\n                scrollContainer.addEventListener('scroll', this.sendFullHeightLazyLoadData);\n            });\n            if (typeof ResizeObserver !== 'undefined') {\n                const resizeTargets = new Set([\n                    this.iFrame.parentElement,\n                    ...getEffectiveClippingAncestors(this.iFrame),\n                ].filter(Boolean));\n                this.lazyLoadResizeObserver = new ResizeObserver(this.sendFullHeightLazyLoadData);\n                resizeTargets.forEach((resizeTarget) => {\n                    this.lazyLoadResizeObserver.observe(resizeTarget);\n                });\n            }\n        }\n    }\n    unregisterLazyLoadEvents() {\n        var _a;\n        if (this.viewConfig.fullHeight && this.viewConfig.lazyLoadingForFullHeight) {\n            window.removeEventListener('resize', this.sendFullHeightLazyLoadData);\n            window.removeEventListener('scroll', this.sendFullHeightLazyLoadData, true);\n            (_a = this.lazyLoadResizeObserver) === null || _a === void 0 ? void 0 : _a.disconnect();\n            this.lazyLoadResizeObserver = undefined;\n            this.lazyLoadScrollContainers.forEach((scrollContainer) => {\n                scrollContainer.removeEventListener('scroll', this.sendFullHeightLazyLoadData);\n            });\n            this.lazyLoadScrollContainers = [];\n        }\n    }\n    /**\n     * Renders the embedded application pages in the ThoughtSpot app.\n     * @param renderOptions An object containing the page ID\n     * to be embedded.\n     */\n    async render() {\n        await super.render();\n        const src = this.getIFrameSrc();\n        await this.renderV1Embed(src);\n        this.postRender();\n        return this;\n    }\n}\n//# sourceMappingURL=app.js.map","import { getEmbedConfig } from '../embed/embedConfig';\nimport { logger } from './logger';\nimport { ERROR_MESSAGE } from '../errors';\nvar ReportType;\n(function (ReportType) {\n    ReportType[\"CSP_VIOLATION\"] = \"csp-violation\";\n    ReportType[\"DEPRECATION\"] = \"deprecation\";\n    ReportType[\"INTERVENTION\"] = \"intervention\";\n})(ReportType || (ReportType = {}));\nlet globalObserver = null;\n/**\n * Register a global ReportingObserver to capture all unhandled errors\n * @param overrideExisting boolean to override existing observer\n * @returns ReportingObserver | null\n */\nexport function registerReportingObserver(overrideExisting = false) {\n    if (!(window.ReportingObserver)) {\n        logger.warn(ERROR_MESSAGE.MISSING_REPORTING_OBSERVER);\n        return null;\n    }\n    if (overrideExisting) {\n        resetGlobalReportingObserver();\n    }\n    if (globalObserver) {\n        return globalObserver;\n    }\n    const embedConfig = getEmbedConfig();\n    globalObserver = new ReportingObserver((reports) => {\n        reports.forEach((report) => {\n            const { type, url, body } = report;\n            const reportBody = body;\n            const isThoughtSpotHost = url\n                && url.startsWith(embedConfig.thoughtSpotHost);\n            const isFrameHostError = type === ReportType.CSP_VIOLATION\n                && reportBody.effectiveDirective === 'frame-ancestors';\n            if (isThoughtSpotHost && isFrameHostError) {\n                if (!embedConfig.suppressErrorAlerts) {\n                    alert(ERROR_MESSAGE.CSP_VIOLATION_ALERT);\n                }\n                logger.error(ERROR_MESSAGE.CSP_FRAME_HOST_VIOLATION_LOG_MESSAGE);\n            }\n        });\n    }, { buffered: true });\n    globalObserver.observe();\n    return globalObserver;\n}\n/**\n * Get the global ReportingObserver\n * @returns - ReportingObserver | null\n */\nexport function getGlobalReportingObserver() {\n    return globalObserver;\n}\n/**\n * Resets the global ReportingObserver\n */\nexport function resetGlobalReportingObserver() {\n    if (globalObserver)\n        globalObserver.disconnect();\n    globalObserver = null;\n}\n//# sourceMappingURL=reporting.js.map","/**\n * Copyright (c) 2022\n *\n * Base classes\n * @summary Base classes\n * @author Ayon Ghosh <ayon.ghosh@thoughtspot.com>\n */\nimport EventEmitter from 'eventemitter3';\nimport { registerReportingObserver } from '../utils/reporting';\nimport { logger, setGlobalLogLevelOverride } from '../utils/logger';\nimport { tokenizedFetch } from '../tokenizedFetch';\nimport { EndPoints } from '../utils/authService/authService';\nimport { getThoughtSpotHost } from '../config';\nimport { AuthType, LogLevel, Param, PrefetchFeatures, } from '../types';\nimport { authenticate, logout as _logout, AuthFailureType, notifyAuthFailure, notifyAuthSDKSuccess, notifyAuthSuccess, notifyLogout, setAuthEE, postLoginService, } from '../auth';\nimport '../utils/with-resolvers-polyfill';\nimport { uploadMixpanelEvent, MIXPANEL_EVENT } from '../mixpanel-service';\nimport { getEmbedConfig, setEmbedConfig } from './embedConfig';\nimport { getQueryParamString, getValueFromWindow, isWindowUndefined, storeValueInWindow } from '../utils';\nimport { resetAllCachedServices } from '../utils/resetServices';\nimport { reload } from '../utils/processTrigger';\nconst CONFIG_DEFAULTS = {\n    loginFailedMessage: 'Not logged in',\n    authTriggerText: 'Authorize',\n    authType: AuthType.None,\n    logLevel: LogLevel.ERROR,\n    waitForCleanupOnDestroy: false,\n    cleanupTimeout: 5000,\n};\nexport let authPromise;\nexport const getAuthPromise = () => authPromise;\nexport { notifyAuthFailure, notifyAuthSDKSuccess, notifyAuthSuccess, notifyLogout, };\n/**\n * Perform authentication on the ThoughtSpot app as applicable.\n */\nexport const handleAuth = () => {\n    authPromise = authenticate(getEmbedConfig());\n    authPromise.then((isLoggedIn) => {\n        if (!isLoggedIn) {\n            notifyAuthFailure(AuthFailureType.SDK);\n        }\n        else {\n            // Post login service is called after successful login.\n            postLoginService();\n            notifyAuthSDKSuccess();\n        }\n    }, () => {\n        notifyAuthFailure(AuthFailureType.SDK);\n    });\n    return authPromise;\n};\nconst hostUrlToFeatureUrl = {\n    [PrefetchFeatures.SearchEmbed]: (url, flags) => `${url}v2/?${flags}#/embed/answer`,\n    [PrefetchFeatures.LiveboardEmbed]: (url, flags) => `${url}?${flags}`,\n    [PrefetchFeatures.FullApp]: (url, flags) => `${url}?${flags}`,\n    [PrefetchFeatures.VizEmbed]: (url, flags) => `${url}?${flags}`,\n};\n/**\n * Prefetches static resources from the specified URL. Web browsers can then cache the\n * prefetched resources and serve them from the user's local disk to provide faster access\n * to your app.\n * @param url The URL provided for prefetch\n * @param prefetchFeatures Specify features which needs to be prefetched.\n * @param additionalFlags This can be used to add any URL flag.\n * @version SDK: 1.4.0 | ThoughtSpot: ts7.sep.cl, 7.2.1\n * @group Global methods\n */\nexport const prefetch = (url, prefetchFeatures, additionalFlags) => {\n    var _a;\n    if (url === '') {\n        logger.warn('The prefetch method does not have a valid URL');\n    }\n    else {\n        const features = prefetchFeatures || [PrefetchFeatures.FullApp];\n        let hostUrl = url || getEmbedConfig().thoughtSpotHost;\n        const prefetchFlags = {\n            [Param.EmbedApp]: true,\n            ...(_a = getEmbedConfig()) === null || _a === void 0 ? void 0 : _a.additionalFlags,\n            ...additionalFlags,\n        };\n        hostUrl = hostUrl[hostUrl.length - 1] === '/' ? hostUrl : `${hostUrl}/`;\n        Array.from(new Set(features\n            .map((feature) => hostUrlToFeatureUrl[feature](hostUrl, getQueryParamString(prefetchFlags)))))\n            .forEach((prefetchUrl, index) => {\n            const iFrame = document.createElement('iframe');\n            iFrame.src = prefetchUrl;\n            iFrame.style.width = '0';\n            iFrame.style.height = '0';\n            iFrame.style.border = '0';\n            // Make it 'fixed' to keep it in a different stacking\n            // context. This should solve the focus behaviours inside\n            // the iframe from interfering with main body.\n            iFrame.style.position = 'fixed';\n            // Push it out of viewport.\n            iFrame.style.top = '100vh';\n            iFrame.style.left = '100vw';\n            iFrame.classList.add('prefetchIframe');\n            iFrame.classList.add(`prefetchIframeNum-${index}`);\n            document.body.appendChild(iFrame);\n        });\n    }\n};\n/**\n *\n * @param embedConfig\n */\nfunction sanity(embedConfig) {\n    if (embedConfig.thoughtSpotHost === undefined) {\n        throw new Error('ThoughtSpot host not provided');\n    }\n    if (embedConfig.authType === AuthType.TrustedAuthToken) {\n        if (!embedConfig.authEndpoint && typeof embedConfig.getAuthToken !== 'function') {\n            throw new Error('Trusted auth should provide either authEndpoint or getAuthToken');\n        }\n    }\n}\n/**\n *\n * @param embedConfig\n */\nfunction backwardCompat(embedConfig) {\n    const newConfig = { ...embedConfig };\n    if (embedConfig.noRedirect !== undefined && embedConfig.inPopup === undefined) {\n        newConfig.inPopup = embedConfig.noRedirect;\n    }\n    return newConfig;\n}\nconst initFlagKey = 'initFlagKey';\nexport const createAndSetInitPromise = () => {\n    if (isWindowUndefined())\n        return;\n    const { promise: initPromise, resolve: initPromiseResolve,\n    // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n    // @ts-ignore\n     } = Promise.withResolvers();\n    const initFlagStore = {\n        initPromise,\n        isInitCalled: false,\n        isInitCompleted: false,\n        initPromiseResolve,\n    };\n    storeValueInWindow(initFlagKey, initFlagStore, {\n        // In case of diff imports the promise might be already set\n        ignoreIfAlreadyExists: true,\n    });\n    initPromise.finally(() => {\n        const curVal = getValueFromWindow(initFlagKey);\n        if (!curVal) {\n            logger.error('initFlagStore missing when marking init complete');\n            return;\n        }\n        curVal.isInitCompleted = true;\n        storeValueInWindow(initFlagKey, curVal);\n    });\n};\ncreateAndSetInitPromise();\nexport const getInitPromise = () => { var _a; return (_a = getValueFromWindow(initFlagKey)) === null || _a === void 0 ? void 0 : _a.initPromise; };\nexport const getIsInitCompleted = () => { var _a; return !!((_a = getValueFromWindow(initFlagKey)) === null || _a === void 0 ? void 0 : _a.isInitCompleted); };\nexport const getIsInitCalled = () => { var _a; return !!((_a = getValueFromWindow(initFlagKey)) === null || _a === void 0 ? void 0 : _a.isInitCalled); };\n/**\n * Initializes the Visual Embed SDK globally and perform\n * authentication if applicable. This function needs to be called before any ThoughtSpot\n * component like Liveboard etc can be embedded. But need not wait for AuthEvent.SUCCESS\n * to actually embed. That is handled internally.\n * @param embedConfig The configuration object containing ThoughtSpot host,\n * authentication mechanism and so on.\n * @example\n * ```js\n *   const authStatus = init({\n *     thoughtSpotHost: 'https://my.thoughtspot.cloud',\n *     authType: AuthType.None,\n *   });\n *   authStatus.on(AuthStatus.FAILURE, (reason) => { // do something here });\n * ```\n * @returns {@link AuthEventEmitter} event emitter which emits events on authentication success,\n *      failure and logout. See {@link AuthStatus}\n * @version SDK: 1.0.0 | ThoughtSpot ts7.april.cl, 7.2.1\n * @group Authentication / Init\n */\nexport const init = (embedConfig) => {\n    var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l;\n    if (isWindowUndefined())\n        return null;\n    sanity(embedConfig);\n    resetAllCachedServices();\n    embedConfig = setEmbedConfig(backwardCompat({\n        ...CONFIG_DEFAULTS,\n        ...embedConfig,\n        thoughtSpotHost: getThoughtSpotHost(embedConfig),\n    }));\n    setGlobalLogLevelOverride(embedConfig.logLevel);\n    registerReportingObserver();\n    const authEE = new EventEmitter();\n    setAuthEE(authEE);\n    handleAuth();\n    const { password, ...configToTrack } = getEmbedConfig();\n    uploadMixpanelEvent(MIXPANEL_EVENT.VISUAL_SDK_CALLED_INIT, {\n        ...configToTrack,\n        usedCustomizationSheet: ((_b = (_a = embedConfig.customizations) === null || _a === void 0 ? void 0 : _a.style) === null || _b === void 0 ? void 0 : _b.customCSSUrl) != null,\n        usedCustomizationVariables: ((_e = (_d = (_c = embedConfig.customizations) === null || _c === void 0 ? void 0 : _c.style) === null || _d === void 0 ? void 0 : _d.customCSS) === null || _e === void 0 ? void 0 : _e.variables) != null,\n        usedCustomizationRules: ((_h = (_g = (_f = embedConfig.customizations) === null || _f === void 0 ? void 0 : _f.style) === null || _g === void 0 ? void 0 : _g.customCSS) === null || _h === void 0 ? void 0 : _h.rules_UNSTABLE) != null,\n        usedCustomizationStrings: !!((_k = (_j = embedConfig.customizations) === null || _j === void 0 ? void 0 : _j.content) === null || _k === void 0 ? void 0 : _k.strings),\n        usedCustomizationIconSprite: !!((_l = embedConfig.customizations) === null || _l === void 0 ? void 0 : _l.iconSpriteUrl),\n    });\n    if (getEmbedConfig().callPrefetch) {\n        prefetch(getEmbedConfig().thoughtSpotHost);\n    }\n    // Resolves the promise created in the initPromiseKey\n    getValueFromWindow(initFlagKey).initPromiseResolve(authEE);\n    getValueFromWindow(initFlagKey).isInitCalled = true;\n    return authEE;\n};\n/**\n *\n */\nexport function disableAutoLogin() {\n    getEmbedConfig().autoLogin = false;\n}\n/**\n * Logs out from ThoughtSpot. This also sets the autoLogin flag to false, to\n * prevent the SDK from automatically logging in again.\n *\n * You can call the `init` method again to re login, if autoLogin is set to\n * true in this second call it will be honored.\n * @param doNotDisableAutoLogin This flag when passed will not disable autoLogin\n * @returns Promise which resolves when logout completes.\n * @version SDK: 1.10.1 | ThoughtSpot: 8.2.0.cl, 8.4.1-sw\n * @group Global methods\n */\nexport const logout = (doNotDisableAutoLogin = false) => {\n    if (!doNotDisableAutoLogin) {\n        disableAutoLogin();\n    }\n    return _logout(getEmbedConfig()).then((isLoggedIn) => {\n        notifyLogout();\n        return isLoggedIn;\n    });\n};\nlet renderQueue = Promise.resolve();\n/**\n * Renders functions in a queue, resolves to next function only after the callback next\n * is called\n * @param fn The function being registered\n */\nexport const renderInQueue = (fn) => {\n    const { queueMultiRenders = false } = getEmbedConfig();\n    if (queueMultiRenders) {\n        renderQueue = renderQueue.then(() => new Promise((res) => fn(res)));\n        return renderQueue;\n    }\n    // Sending an empty function to keep it consistent with the above usage.\n    return fn(() => { });\n};\n/**\n * Imports TML representation of the metadata objects into ThoughtSpot.\n * @param data\n * @returns imports TML data into ThoughtSpot\n * @example\n * ```js\n *  executeTML({\n * //Array of metadata Tmls in string format\n *      metadata_tmls: [\n *          \"'\\''{\\\"guid\\\":\\\"9bd202f5-d431-44bf-9a07-b4f7be372125\\\",\n *          \\\"liveboard\\\":{\\\"name\\\":\\\"Parameters Liveboard\\\"}}'\\''\"\n *      ],\n *      import_policy: 'PARTIAL', // Specifies the import policy for the TML import.\n *      create_new: false, // If selected, creates TML objects with new GUIDs.\n *  }).then(result => {\n *      console.log(result);\n *  }).catch(error => {\n *      console.error(error);\n *  });\n * ```\n * @version SDK: 1.23.0 | ThoughtSpot: 9.4.0.cl\n * @group Global methods\n */\nexport const executeTML = async (data) => {\n    try {\n        sanity(getEmbedConfig());\n    }\n    catch (err) {\n        return Promise.reject(err);\n    }\n    const { thoughtSpotHost, authType } = getEmbedConfig();\n    const headers = {\n        'Content-Type': 'application/json',\n        'x-requested-by': 'ThoughtSpot',\n    };\n    const payload = {\n        metadata_tmls: data.metadata_tmls,\n        import_policy: data.import_policy || 'PARTIAL',\n        create_new: data.create_new || false,\n    };\n    return tokenizedFetch(`${thoughtSpotHost}${EndPoints.EXECUTE_TML}`, {\n        method: 'POST',\n        headers,\n        body: JSON.stringify(payload),\n        credentials: 'include',\n    })\n        .then((response) => {\n        if (!response.ok) {\n            throw new Error(`Failed to import TML data: ${response.status} - ${response.statusText}`);\n        }\n        return response.json();\n    })\n        .catch((error) => {\n        throw error;\n    });\n};\n/**\n * Exports TML representation of the metadata objects from ThoughtSpot in JSON or YAML\n * format.\n * @param data\n * @returns exports TML data\n * @example\n * ```js\n * exportTML({\n *   metadata: [\n *     {\n *       type: \"LIVEBOARD\", //Metadata Type\n *       identifier: \"9bd202f5-d431-44bf-9a07-b4f7be372125\" //Metadata Id\n *     }\n *   ],\n *   export_associated: false,//indicates whether to export associated metadata objects\n *   export_fqn: false, //Adds FQNs of the referenced objects.For example, if you are\n *                      //exporting a Liveboard and its associated objects, the API\n *                      //returns the Liveboard TML data with the FQNs of the referenced\n *                      //worksheet. If the exported TML data includes FQNs, you don't need\n *                      //to manually add FQNs of the referenced objects during TML import.\n *   edoc_format: \"JSON\" //It takes JSON or YAML value\n * }).then(result => {\n *   console.log(result);\n * }).catch(error => {\n *   console.error(error);\n * });\n * ```\n * @version SDK: 1.23.0 | ThoughtSpot: 9.4.0.cl\n * @group Global methods\n */\nexport const exportTML = async (data) => {\n    const { thoughtSpotHost, authType } = getEmbedConfig();\n    try {\n        sanity(getEmbedConfig());\n    }\n    catch (err) {\n        return Promise.reject(err);\n    }\n    const payload = {\n        metadata: data.metadata,\n        export_associated: data.export_associated || false,\n        export_fqn: data.export_fqn || false,\n        edoc_format: data.edoc_format || 'YAML',\n    };\n    const headers = {\n        'Content-Type': 'application/json',\n        'x-requested-by': 'ThoughtSpot',\n    };\n    return tokenizedFetch(`${thoughtSpotHost}${EndPoints.EXPORT_TML}`, {\n        method: 'POST',\n        headers,\n        body: JSON.stringify(payload),\n        credentials: 'include',\n    })\n        .then((response) => {\n        if (!response.ok) {\n            throw new Error(`Failed to export TML: ${response.status} - ${response.statusText}`);\n        }\n        return response.json();\n    })\n        .catch((error) => {\n        throw error;\n    });\n};\n// For testing purposes only\n/**\n *\n */\nexport function reset() {\n    setEmbedConfig({});\n    setAuthEE(null);\n    authPromise = null;\n}\n/**\n * Reloads the ThoughtSpot iframe.\n * @version SDK: 1.43.1\n * @param iFrame\n * @group Global methods\n */\nexport const reloadIframe = (iFrame) => {\n    if (!iFrame) {\n        logger.warn('reloadIframe called with no iFrame element.');\n        return;\n    }\n    reload(iFrame);\n};\n//# sourceMappingURL=base.js.map","import { Param } from '../types';\nimport { TsEmbed } from './ts-embed';\nimport { Conversation as ConversationService } from '../utils/graphql/nlsService/conversation-service';\nimport { getEmbedConfig } from './embedConfig';\nimport { getQueryParamString } from '../utils';\nexport class ConversationMessage extends TsEmbed {\n    constructor(container, viewConfig) {\n        viewConfig.embedComponentType = 'bodyless-conversation';\n        super(container, viewConfig);\n        this.viewConfig = viewConfig;\n    }\n    getEmbedParamsObject() {\n        var _a;\n        const queryParams = this.getBaseQueryParams();\n        queryParams[Param.HideActions] = [...((_a = queryParams[Param.HideActions]) !== null && _a !== void 0 ? _a : [])];\n        queryParams[Param.isSpotterAgentEmbed] = true;\n        return queryParams;\n    }\n    getIframeSrc() {\n        const { sessionId, genNo, acSessionId, acGenNo, convId, messageId, } = this.viewConfig;\n        const path = 'conv-assist-answer';\n        const queryParams = this.getEmbedParamsObject();\n        let query = '';\n        const queryParamsString = getQueryParamString(queryParams, true);\n        if (queryParamsString) {\n            query = `?${queryParamsString}`;\n        }\n        const tsPostHashParams = this.getThoughtSpotPostUrlParams({\n            sessionId,\n            genNo,\n            acSessionId,\n            acGenNo,\n            convId,\n            messageId,\n        });\n        return `${this.getEmbedBasePath(query)}/embed/${path}${tsPostHashParams}`;\n    }\n    async render() {\n        await super.render();\n        const src = this.getIframeSrc();\n        await this.renderIFrame(src);\n        return this;\n    }\n}\n/**\n * Create a conversation embed, which can be integrated inside\n * chatbots or other conversational interfaces.\n * @version SDK: 1.37.0 | ThoughtSpot: 10.9.0.cl\n * @group Embed components\n * @example\n * ```js\n * import { SpotterAgentEmbed } from '@thoughtspot/visual-embed-sdk';\n *\n * const conversation = new SpotterAgentEmbed({\n *  worksheetId: 'worksheetId',\n * });\n *\n * const { container, error } = await conversation.sendMessage('show me sales by region');\n *\n * // append the container to the DOM\n * document.body.appendChild(container); // or to any other element\n * ```\n */\nexport class SpotterAgentEmbed {\n    constructor(viewConfig) {\n        this.viewConfig = viewConfig;\n        const embedConfig = getEmbedConfig();\n        this.conversationService = new ConversationService(embedConfig.thoughtSpotHost, viewConfig.worksheetId);\n    }\n    async sendMessage(userMessage) {\n        const { data, error } = await this.conversationService.sendMessage(userMessage);\n        if (error) {\n            return { error };\n        }\n        const container = document.createElement('div');\n        const embed = new ConversationMessage(container, {\n            ...this.viewConfig,\n            convId: data.convId,\n            messageId: data.messageId,\n            sessionId: data.sessionId,\n            genNo: data.genNo,\n            acSessionId: data.stateKey.transactionId,\n            acGenNo: data.stateKey.generationNumber,\n        });\n        await embed.render();\n        return { container, viz: embed };\n    }\n    /**\n     * Send a message to the conversation service and return only the data.\n     * @param userMessage - The message to send to the conversation service.\n     * @returns The data from the conversation service.\n     */\n    async sendMessageData(userMessage) {\n        try {\n            const { data, error } = await this.conversationService.sendMessage(userMessage);\n            if (error) {\n                return { error };\n            }\n            return { data: {\n                    convId: data.convId,\n                    messageId: data.messageId,\n                    sessionId: data.sessionId,\n                    genNo: data.genNo,\n                    acSessionId: data.stateKey.transactionId,\n                    acGenNo: data.stateKey.generationNumber,\n                } };\n        }\n        catch (error) {\n            return { error: error };\n        }\n    }\n}\n/**\n * Create a conversation embed, which can be integrated inside\n * chatbots or other conversational interfaces.\n * Use {@link SpotterAgentEmbed} instead\n * @deprecated from SDK: 1.39.0 | ThoughtSpot: 10.10.0.cl\n * @group Embed components\n * @example\n * ```js\n * import { SpotterAgentEmbed } from '@thoughtspot/visual-embed-sdk';\n *\n * const conversation = new SpotterAgentEmbed({\n *  worksheetId: 'worksheetId',\n * });\n *\n * const { container, error } = await conversation.sendMessage('show me sales by region');\n *\n * // append the container to the DOM\n * document.body.appendChild(container); // or to any other element\n * ```\n */\nexport class BodylessConversation extends SpotterAgentEmbed {\n    constructor(viewConfig) {\n        super(viewConfig);\n    }\n}\n//# sourceMappingURL=bodyless-conversation.js.map","import { ERROR_MESSAGE } from '../errors';\nimport { Param, ErrorDetailsTypes, EmbedErrorCodes } from '../types';\nimport { TsEmbed } from './ts-embed';\nimport { buildSpotterSidebarAppInitData } from './spotter-utils';\nimport { getQueryParamString, getFilterQuery, getRuntimeParameters, setParamIfDefined } from '../utils';\n/**\n * Embed ThoughtSpot AI Conversation.\n * @version SDK: 1.37.0 | ThoughtSpot: 10.9.0.cl\n * @group Embed components\n * @example\n * ```js\n * const conversation = new SpotterEmbed('#tsEmbed', {\n *   worksheetId: 'worksheetId',\n *   searchOptions: {\n *     searchQuery: 'searchQuery',\n *   },\n * });\n * conversation.render();\n * ```\n */\nexport class SpotterEmbed extends TsEmbed {\n    constructor(container, viewConfig) {\n        viewConfig = {\n            embedComponentType: 'conversation',\n            excludeRuntimeFiltersfromURL: true,\n            excludeRuntimeParametersfromURL: true,\n            ...viewConfig,\n        };\n        super(container, viewConfig);\n        this.viewConfig = viewConfig;\n    }\n    /**\n     * Extends the default APP_INIT payload with `embedParams.spotterSidebarConfig`\n     * so the conv-assist app can read sidebar configuration on initialisation.\n     *\n     * Precedence for `enablePastConversationsSidebar`:\n     * `spotterSidebarConfig.enablePastConversationsSidebar` wins over the\n     * deprecated top-level `enablePastConversationsSidebar` flag; if the former\n     * is absent the latter is used as a fallback.\n     *\n     * An invalid `spotterDocumentationUrl` triggers a validation error and is\n     * excluded from the payload rather than forwarded to the app.\n     */\n    async getAppInitData() {\n        const defaultAppInitData = await super.getAppInitData();\n        return buildSpotterSidebarAppInitData(defaultAppInitData, this.viewConfig, this.handleError.bind(this));\n    }\n    getEmbedParamsObject() {\n        const { worksheetId, searchOptions, disableSourceSelection, hideSourceSelection, dataPanelV2, showSpotterLimitations, hideSampleQuestions, runtimeFilters, excludeRuntimeFiltersfromURL, runtimeParameters, excludeRuntimeParametersfromURL, updatedSpotterChatPrompt, enableStopAnswerGenerationEmbed, spotterChatConfig, } = this.viewConfig;\n        if (!worksheetId) {\n            this.handleError({\n                errorType: ErrorDetailsTypes.VALIDATION_ERROR,\n                message: ERROR_MESSAGE.SPOTTER_EMBED_WORKSHEED_ID_NOT_FOUND,\n                code: EmbedErrorCodes.WORKSHEET_ID_NOT_FOUND,\n                error: ERROR_MESSAGE.SPOTTER_EMBED_WORKSHEED_ID_NOT_FOUND,\n            });\n        }\n        const queryParams = this.getBaseQueryParams();\n        queryParams[Param.SpotterEnabled] = true;\n        // Boolean params\n        setParamIfDefined(queryParams, Param.DisableSourceSelection, disableSourceSelection, true);\n        setParamIfDefined(queryParams, Param.HideSourceSelection, hideSourceSelection, true);\n        setParamIfDefined(queryParams, Param.DataPanelV2Enabled, dataPanelV2, true);\n        setParamIfDefined(queryParams, Param.ShowSpotterLimitations, showSpotterLimitations, true);\n        setParamIfDefined(queryParams, Param.HideSampleQuestions, hideSampleQuestions, true);\n        setParamIfDefined(queryParams, Param.UpdatedSpotterChatPrompt, updatedSpotterChatPrompt, true);\n        setParamIfDefined(queryParams, Param.EnableStopAnswerGenerationEmbed, enableStopAnswerGenerationEmbed, true);\n        // Handle spotterChatConfig params\n        if (spotterChatConfig) {\n            const { hideToolResponseCardBranding, toolResponseCardBrandingLabel, spotterFileUploadEnabled, spotterFileUploadFileTypes, } = spotterChatConfig;\n            setParamIfDefined(queryParams, Param.HideToolResponseCardBranding, hideToolResponseCardBranding, true);\n            setParamIfDefined(queryParams, Param.ToolResponseCardBrandingLabel, toolResponseCardBrandingLabel);\n            setParamIfDefined(queryParams, Param.SpotterFileUploadEnabled, spotterFileUploadEnabled, true);\n            if (spotterFileUploadFileTypes !== undefined) {\n                queryParams[Param.SpotterFileUploadFileTypes] = JSON.stringify(spotterFileUploadFileTypes);\n            }\n        }\n        return queryParams;\n    }\n    getIframeSrc() {\n        const { worksheetId, searchOptions, runtimeFilters, excludeRuntimeFiltersfromURL, runtimeParameters, excludeRuntimeParametersfromURL, } = this.viewConfig;\n        const path = 'insights/conv-assist';\n        const queryParams = this.getEmbedParamsObject();\n        let query = '';\n        const queryParamsString = getQueryParamString(queryParams, true);\n        if (queryParamsString) {\n            query = `?${queryParamsString}`;\n        }\n        const filterQuery = getFilterQuery(runtimeFilters || []);\n        if (filterQuery && !excludeRuntimeFiltersfromURL) {\n            query += `&${filterQuery}`;\n        }\n        const parameterQuery = getRuntimeParameters(runtimeParameters || []);\n        if (parameterQuery && !excludeRuntimeParametersfromURL) {\n            query += `&${parameterQuery}`;\n        }\n        const tsPostHashParams = this.getThoughtSpotPostUrlParams({\n            worksheet: worksheetId,\n            query: (searchOptions === null || searchOptions === void 0 ? void 0 : searchOptions.searchQuery) || '',\n        });\n        return `${this.getEmbedBasePath(query)}/embed/${path}${tsPostHashParams}`;\n    }\n    async render() {\n        await super.render();\n        const src = this.getIframeSrc();\n        await this.renderIFrame(src);\n        return this;\n    }\n}\n/**\n * Embed ThoughtSpot AI Conversation.\n * Use {@link SpotterEmbed} instead\n * @version SDK: 1.37.0 | ThoughtSpot: 10.9.0.cl\n * @deprecated from SDK: 1.39.0 | ThoughtSpot: 10.10.0.cl\n * @group Embed components\n * @example\n * ```js\n * const conversation = new SpotterEmbed('#tsEmbed', {\n *   worksheetId: 'worksheetId',\n *   searchOptions: {\n *     searchQuery: 'searchQuery',\n *   },\n * });\n * conversation.render();\n * ```\n */\nexport class ConversationEmbed extends SpotterEmbed {\n    constructor(container, viewConfig) {\n        viewConfig = {\n            embedComponentType: 'conversation',\n            excludeRuntimeFiltersfromURL: true,\n            excludeRuntimeParametersfromURL: true,\n            ...viewConfig,\n        };\n        super(container, viewConfig);\n        this.viewConfig = viewConfig;\n    }\n}\n//# sourceMappingURL=conversation.js.map","import { getValueFromWindow, storeValueInWindow } from '../utils';\nconst configKey = 'embedConfig';\n/**\n * Gets the embed configuration settings that were used to\n * initialize the SDK.\n * @returns {@link EmbedConfig}\n *\n * @example\n * ```js\n * import { getInitConfig } from '@thoughtspot/visual-embed-sdk';\n * // Call the getInitConfig method to retrieve the embed configuration\n * const config = getInitConfig();\n * // Log the configuration settings\n * console.log(config);\n * ```\n * Returns the link:https://developers.thoughtspot.com/docs/Interface_EmbedConfig[EmbedConfig]\n * object, which contains the configuration settings used to\n * initialize the SDK, including the following:\n *\n *  - `thoughtSpotHost` - ThoughtSpot host URL\n *  - `authType`: The authentication method used. For example,\n * `AuthServerCookieless` for  `AuthType.TrustedAuthTokenCookieless`\n *  - `customizations` - Style, text, and icon customization settings\n *  that were applied during the SDK initialization.\n *\n * The following JSON output shows the embed configuration\n * settings returned from the code in the previous example:\n *\n * @example\n * ```json\n * {\n *   \"thoughtSpotHost\": \"https://{ThoughtSpot-Host}\",\n *   \"authType\": \"AuthServerCookieless\",\n *   \"customizations\": {\n *    \"style\": {\n *        \"customCSS\": {\n *        \"variables\": {\n *            \"--ts-var-button--secondary-background\": \"#7492d5\",\n *            \"--ts-var-button--secondary--hovers-background\": \"#aac2f8\",\n *            \"--ts-var-root-background\": \"#f1f4f8\"\n *          }\n *        }\n *      }\n *    },\n *   \"loginFailedMessage\": \"Login failed, please try again\",\n *   \"authTriggerText\": \"Authorize\",\n *   \"disableTokenVerification\": true,\n *   \"authTriggerContainer\": \"#your-own-div\"\n *  }\n * ```\n * @version SDK: 1.19.0 | ThoughtSpot: 9.0.0.cl, 9.0.1.sw, and later\n * @group Global methods\n */\nexport const getEmbedConfig = () => getValueFromWindow(configKey) || {};\n/**\n * Sets the configuration embed was initialized with.\n * And returns the new configuration.\n * @param newConfig The configuration to set.\n * @version SDK: 1.27.0 | ThoughtSpot: 9.8.0.cl, 9.8.1.sw, and later\n * @group Global methods\n */\nexport const setEmbedConfig = (newConfig) => {\n    storeValueInWindow(configKey, newConfig);\n    return getValueFromWindow(configKey);\n};\n//# sourceMappingURL=embedConfig.js.map","import { HostEvent } from '../../types';\nexport var UIPassthroughEvent;\n(function (UIPassthroughEvent) {\n    UIPassthroughEvent[\"PinAnswerToLiveboard\"] = \"addVizToPinboard\";\n    UIPassthroughEvent[\"SaveAnswer\"] = \"saveAnswer\";\n    UIPassthroughEvent[\"GetDiscoverabilityStatus\"] = \"getDiscoverabilityStatus\";\n    UIPassthroughEvent[\"GetAvailableUIPassthroughs\"] = \"getAvailableUiPassthroughs\";\n    UIPassthroughEvent[\"GetAnswerConfig\"] = \"getAnswerPageConfig\";\n    UIPassthroughEvent[\"GetLiveboardConfig\"] = \"getPinboardPageConfig\";\n    UIPassthroughEvent[\"GetUnsavedAnswerTML\"] = \"getUnsavedAnswerTML\";\n    UIPassthroughEvent[\"UpdateFilters\"] = \"updateFilters\";\n    UIPassthroughEvent[\"Drilldown\"] = \"drillDown\";\n    UIPassthroughEvent[\"GetAnswerSession\"] = \"getAnswerSession\";\n    UIPassthroughEvent[\"GetFilters\"] = \"getFilters\";\n    UIPassthroughEvent[\"GetIframeUrl\"] = \"getIframeUrl\";\n    UIPassthroughEvent[\"GetParameters\"] = \"getParameters\";\n    UIPassthroughEvent[\"GetTML\"] = \"getTML\";\n    UIPassthroughEvent[\"GetTabs\"] = \"getTabs\";\n    UIPassthroughEvent[\"GetExportRequestForCurrentPinboard\"] = \"getExportRequestForCurrentPinboard\";\n})(UIPassthroughEvent || (UIPassthroughEvent = {}));\n//# sourceMappingURL=contracts.js.map","/**\n * Copyright (c) 2022\n *\n * Embed a ThoughtSpot Liveboard or visualization\n * https://developers.thoughtspot.com/docs/embed-liveboard\n * https://developers.thoughtspot.com/docs/embed-a-viz\n * @summary Liveboard & visualization embed\n * @author Ayon Ghosh <ayon.ghosh@thoughtspot.com>\n */\nimport { getPreview } from '../utils/graphql/preview-service';\nimport { ERROR_MESSAGE } from '../errors';\nimport { EmbedEvent, Param, HostEvent, ErrorDetailsTypes, EmbedErrorCodes, } from '../types';\nimport { calculateVisibleElementData, getEffectiveClippingAncestors, getQueryParamString, getScrollableAncestors, isUndefined, isValidCssMargin, setParamIfDefined } from '../utils';\nimport { V1Embed } from './ts-embed';\nimport { addPreviewStylesIfNotPresent } from '../utils/global-styles';\nimport { logger } from '../utils/logger';\nimport { buildSpotterVizAppInitData } from './spotter-viz-utils';\n/**\n * Embed a ThoughtSpot Liveboard or visualization. When rendered it already\n * waits for the authentication to complete, so you need not wait for\n * `AuthStatus.SUCCESS`.\n * @group Embed components\n * @example\n * ```js\n * import { .. } from '@thoughtspot/visual-embed-sdk';\n * init({ ... });\n * const embed = new LiveboardEmbed(\"#container\", {\n *   liveboardId: <your-id-here>,\n * // .. other params here.\n * })\n * ```\n */\nexport class LiveboardEmbed extends V1Embed {\n    constructor(domSelector, viewConfig) {\n        viewConfig.embedComponentType = 'LiveboardEmbed';\n        super(domSelector, viewConfig);\n        this.defaultHeight = 500;\n        this.lazyLoadScrollContainers = [];\n        this.sendFullHeightLazyLoadData = () => {\n            const data = calculateVisibleElementData(this.iFrame, this.viewConfig.enableScrollableContainerLazyLoading);\n            // this should be fired only if the lazyLoadingForFullHeight and fullHeight are true\n            if (this.viewConfig.lazyLoadingForFullHeight && this.viewConfig.fullHeight) {\n                this.trigger(HostEvent.VisibleEmbedCoordinates, data);\n            }\n        };\n        /**\n         * This is a handler for the RequestVisibleEmbedCoordinates event.\n         * It is used to send the visible coordinates data to the host application.\n         * @param data The event payload\n         * @param responder The responder function\n         */\n        this.requestVisibleEmbedCoordinatesHandler = (data, responder) => {\n            logger.info('Sending RequestVisibleEmbedCoordinates', data);\n            const visibleCoordinatesData = calculateVisibleElementData(this.iFrame, this.viewConfig.enableScrollableContainerLazyLoading);\n            responder({ type: EmbedEvent.RequestVisibleEmbedCoordinates, data: visibleCoordinatesData });\n        };\n        /**\n         * Set the iframe height as per the computed height received\n         * from the ThoughtSpot app.\n         * @param data The event payload\n         */\n        this.updateIFrameHeight = (data) => {\n            this.setIFrameHeight(Math.max(data.data, this.defaultHeight));\n            this.sendFullHeightLazyLoadData();\n        };\n        this.embedIframeCenter = (data, responder) => {\n            const obj = this.getIframeCenter();\n            responder({ type: EmbedEvent.EmbedIframeCenter, data: obj });\n        };\n        this.setIframeHeightForNonEmbedLiveboard = (data) => {\n            const { height: frameHeight } = this.viewConfig.frameParams || {};\n            const liveboardRelatedRoutes = [\n                '/pinboard/',\n                '/insights/pinboard/',\n                '/schedules/',\n                '/embed/viz/',\n                '/embed/insights/viz/',\n                '/liveboard/',\n                '/insights/liveboard/',\n                '/tsl-editor/PINBOARD_ANSWER_BOOK/',\n                '/import-tsl/PINBOARD_ANSWER_BOOK/',\n            ];\n            if (liveboardRelatedRoutes.some((path) => data.data.currentPath.startsWith(path))) {\n                // Ignore the height reset of the frame, if the navigation is\n                // only within the liveboard page.\n                return;\n            }\n            this.setIFrameHeight(frameHeight || this.defaultHeight);\n        };\n        /**\n         * @hidden\n         * Internal state to track the current liveboard id.\n         * This is used to navigate to the correct liveboard when the prerender is visible.\n         */\n        this.currentLiveboardState = {\n            liveboardId: this.viewConfig.liveboardId,\n            vizId: this.viewConfig.vizId,\n            activeTabId: this.viewConfig.activeTabId,\n            personalizedViewId: this.viewConfig.personalizedViewId,\n        };\n        if (this.viewConfig.fullHeight === true) {\n            if (this.viewConfig.vizId) {\n                logger.warn('Full height is currently only supported for Liveboard embeds.' +\n                    'Using full height with vizId might lead to unexpected behavior.');\n            }\n            this.on(EmbedEvent.RouteChange, this.setIframeHeightForNonEmbedLiveboard);\n            this.on(EmbedEvent.EmbedHeight, this.updateIFrameHeight);\n            this.on(EmbedEvent.EmbedIframeCenter, this.embedIframeCenter);\n            this.on(EmbedEvent.RequestVisibleEmbedCoordinates, this.requestVisibleEmbedCoordinatesHandler);\n        }\n    }\n    async getAppInitData() {\n        const defaultAppInitData = await super.getAppInitData();\n        return buildSpotterVizAppInitData(defaultAppInitData, this.viewConfig);\n    }\n    /**\n     * Construct a map of params to be passed on to the\n     * embedded Liveboard or visualization.\n     */\n    getEmbedParams() {\n        const params = this.getEmbedParamsObject();\n        const queryParams = getQueryParamString(params, true);\n        return queryParams;\n    }\n    getEmbedParamsObject() {\n        let params = {};\n        params = this.getBaseQueryParams(params);\n        const { enableVizTransformations, fullHeight, defaultHeight, minimumHeight, visibleVizs, liveboardV2, vizId, hideTabPanel, activeTabId, hideLiveboardHeader, showLiveboardDescription, showLiveboardTitle, isLiveboardHeaderSticky = true, isLiveboardCompactHeaderEnabled = false, showLiveboardVerifiedBadge = true, showLiveboardReverifyBanner = true, hideIrrelevantChipsInLiveboardTabs = false, showMaskedFilterChip = false, isLiveboardMasterpiecesEnabled = false, newChartsLibrary, isEnhancedFilterInteractivityEnabled = false, enableAskSage, enable2ColumnLayout, dataPanelV2 = true, enableCustomColumnGroups = false, oAuthPollingInterval, isForceRedirect, dataSourceId, coverAndFilterOptionInPDF = false, isLiveboardStylingAndGroupingEnabled, isPNGInScheduledEmailsEnabled = false, isLiveboardXLSXCSVDownloadEnabled = false, isGranularXLSXCSVSchedulesEnabled = false, showSpotterLimitations, isCentralizedLiveboardFilterUXEnabled = false, isLinkParametersEnabled, updatedSpotterChatPrompt, enableStopAnswerGenerationEmbed, spotterChatConfig, isThisPeriodInDateFiltersEnabled, isContinuousLiveboardPDFEnabled = false, enableLiveboardDataCache, } = this.viewConfig;\n        const preventLiveboardFilterRemoval = this.viewConfig.preventLiveboardFilterRemoval\n            || this.viewConfig.preventPinboardFilterRemoval;\n        if (fullHeight === true) {\n            params[Param.fullHeight] = true;\n            if (this.viewConfig.lazyLoadingForFullHeight) {\n                params[Param.IsLazyLoadingForEmbedEnabled] = true;\n                if (isValidCssMargin(this.viewConfig.lazyLoadingMargin)) {\n                    params[Param.RootMarginForLazyLoad] = this.viewConfig.lazyLoadingMargin;\n                }\n            }\n        }\n        this.defaultHeight = minimumHeight || defaultHeight || this.defaultHeight;\n        if (enableVizTransformations !== undefined) {\n            params[Param.EnableVizTransformations] = enableVizTransformations.toString();\n        }\n        if (preventLiveboardFilterRemoval) {\n            params[Param.preventLiveboardFilterRemoval] = true;\n        }\n        if (!isUndefined(updatedSpotterChatPrompt)) {\n            params[Param.UpdatedSpotterChatPrompt] = !!updatedSpotterChatPrompt;\n        }\n        if (!isUndefined(enableStopAnswerGenerationEmbed)) {\n            params[Param.EnableStopAnswerGenerationEmbed] = !!enableStopAnswerGenerationEmbed;\n        }\n        if (visibleVizs) {\n            params[Param.visibleVizs] = visibleVizs;\n        }\n        params[Param.livedBoardEmbed] = true;\n        if (vizId) {\n            params[Param.vizEmbed] = true;\n        }\n        if (liveboardV2 !== undefined) {\n            params[Param.LiveboardV2Enabled] = liveboardV2;\n        }\n        if (enable2ColumnLayout !== undefined) {\n            params[Param.Enable2ColumnLayout] = enable2ColumnLayout;\n        }\n        if (hideTabPanel) {\n            params[Param.HideTabPanel] = hideTabPanel;\n        }\n        if (hideLiveboardHeader) {\n            params[Param.HideLiveboardHeader] = hideLiveboardHeader;\n        }\n        if (showLiveboardDescription) {\n            params[Param.ShowLiveboardDescription] = showLiveboardDescription;\n        }\n        if (showLiveboardTitle) {\n            params[Param.ShowLiveboardTitle] = showLiveboardTitle;\n        }\n        if (enableAskSage) {\n            params[Param.enableAskSage] = enableAskSage;\n        }\n        if (oAuthPollingInterval !== undefined) {\n            params[Param.OauthPollingInterval] = oAuthPollingInterval;\n        }\n        if (isForceRedirect) {\n            params[Param.IsForceRedirect] = isForceRedirect;\n        }\n        if (dataSourceId !== undefined) {\n            params[Param.DataSourceId] = dataSourceId;\n        }\n        if (isLiveboardStylingAndGroupingEnabled !== undefined) {\n            params[Param.IsLiveboardStylingAndGroupingEnabled] = isLiveboardStylingAndGroupingEnabled;\n        }\n        if (isPNGInScheduledEmailsEnabled !== undefined) {\n            params[Param.isPNGInScheduledEmailsEnabled] = isPNGInScheduledEmailsEnabled;\n        }\n        if (isLiveboardXLSXCSVDownloadEnabled !== undefined) {\n            params[Param.isLiveboardXLSXCSVDownloadEnabled] = isLiveboardXLSXCSVDownloadEnabled;\n        }\n        if (isGranularXLSXCSVSchedulesEnabled !== undefined) {\n            params[Param.isGranularXLSXCSVSchedulesEnabled] = isGranularXLSXCSVSchedulesEnabled;\n        }\n        if (showSpotterLimitations !== undefined) {\n            params[Param.ShowSpotterLimitations] = showSpotterLimitations;\n        }\n        // Handle spotterChatConfig params\n        if (spotterChatConfig) {\n            const { hideToolResponseCardBranding, toolResponseCardBrandingLabel, spotterFileUploadEnabled, spotterFileUploadFileTypes, } = spotterChatConfig;\n            setParamIfDefined(params, Param.HideToolResponseCardBranding, hideToolResponseCardBranding, true);\n            setParamIfDefined(params, Param.ToolResponseCardBrandingLabel, toolResponseCardBrandingLabel);\n            if (spotterFileUploadEnabled !== undefined) {\n                params[Param.SpotterFileUploadEnabled] = spotterFileUploadEnabled;\n            }\n            if (spotterFileUploadFileTypes !== undefined) {\n                params[Param.SpotterFileUploadFileTypes] = JSON.stringify(spotterFileUploadFileTypes);\n            }\n        }\n        if (isLinkParametersEnabled !== undefined) {\n            params[Param.isLinkParametersEnabled] = isLinkParametersEnabled;\n        }\n        if (isCentralizedLiveboardFilterUXEnabled !== undefined) {\n            params[Param.isCentralizedLiveboardFilterUXEnabled] = isCentralizedLiveboardFilterUXEnabled;\n        }\n        if (isThisPeriodInDateFiltersEnabled !== undefined) {\n            params[Param.IsThisPeriodInDateFiltersEnabled] = isThisPeriodInDateFiltersEnabled;\n        }\n        if (isContinuousLiveboardPDFEnabled !== undefined) {\n            params[Param.IsWYSIWYGLiveboardPDFEnabled] = isContinuousLiveboardPDFEnabled;\n        }\n        if (enableLiveboardDataCache !== undefined) {\n            params[Param.EnableLiveboardDataCache] = enableLiveboardDataCache;\n        }\n        if (newChartsLibrary !== undefined) {\n            params[Param.EnableNewChartLibrary] = newChartsLibrary;\n        }\n        params[Param.LiveboardHeaderSticky] = isLiveboardHeaderSticky;\n        params[Param.LiveboardHeaderV2] = isLiveboardCompactHeaderEnabled;\n        params[Param.ShowLiveboardVerifiedBadge] = showLiveboardVerifiedBadge;\n        params[Param.ShowLiveboardReverifyBanner] = showLiveboardReverifyBanner;\n        params[Param.HideIrrelevantFiltersInTab] = hideIrrelevantChipsInLiveboardTabs;\n        params[Param.ShowMaskedFilterChip] = showMaskedFilterChip;\n        params[Param.IsLiveboardMasterpiecesEnabled] = isLiveboardMasterpiecesEnabled;\n        params[Param.IsEnhancedFilterInteractivityEnabled] = isEnhancedFilterInteractivityEnabled;\n        params[Param.DataPanelV2Enabled] = dataPanelV2;\n        params[Param.EnableCustomColumnGroups] = enableCustomColumnGroups;\n        params[Param.CoverAndFilterOptionInPDF] = coverAndFilterOptionInPDF;\n        const queryParams = getQueryParamString(params, true);\n        return params;\n    }\n    getIframeSuffixSrc(liveboardId, vizId, activeTabId, personalizedViewId) {\n        // Extract view from liveboardId if passed along with it (legacy\n        // approach)\n        // View must be appended as query param at the end, not\n        // embedded in path\n        let liveboardGuid = liveboardId;\n        let legacyViewId;\n        if (liveboardId === null || liveboardId === void 0 ? void 0 : liveboardId.includes('?')) {\n            const [id, query] = liveboardId.split('?');\n            liveboardGuid = id;\n            const params = new URLSearchParams(query);\n            legacyViewId = params.get('view') || undefined;\n        }\n        // personalizedViewId takes precedence over legacyViewId (when passed\n        // as part of liveboardId)\n        const effectiveViewId = personalizedViewId || legacyViewId;\n        let suffix = `/embed/viz/${liveboardGuid}`;\n        if (activeTabId) {\n            suffix = `${suffix}/tab/${activeTabId}`;\n        }\n        if (vizId) {\n            suffix = `${suffix}/${vizId}`;\n        }\n        const additionalParams = {};\n        if (effectiveViewId) {\n            additionalParams.view = effectiveViewId;\n        }\n        const tsPostHashParams = this.getThoughtSpotPostUrlParams(additionalParams);\n        suffix = `${suffix}${tsPostHashParams}`;\n        return suffix;\n    }\n    /**\n     * Construct the URL of the embedded ThoughtSpot Liveboard or visualization\n     * to be loaded within the iFrame.\n     */\n    getIFrameSrc() {\n        var _a;\n        const { vizId, activeTabId, personalizedViewId } = this.viewConfig;\n        const liveboardId = (_a = this.viewConfig.liveboardId) !== null && _a !== void 0 ? _a : this.viewConfig.pinboardId;\n        if (!liveboardId) {\n            this.handleError({\n                errorType: ErrorDetailsTypes.VALIDATION_ERROR,\n                message: ERROR_MESSAGE.LIVEBOARD_VIZ_ID_VALIDATION,\n                code: EmbedErrorCodes.LIVEBOARD_ID_MISSING,\n                error: ERROR_MESSAGE.LIVEBOARD_VIZ_ID_VALIDATION,\n            });\n        }\n        return `${this.getRootIframeSrc()}${this.getIframeSuffixSrc(liveboardId, vizId, activeTabId, personalizedViewId)}`;\n    }\n    setActiveTab(data) {\n        if (!this.viewConfig.vizId) {\n            const prefixPath = this.iFrame.src.split('#/')[1].split('/tab')[0];\n            const path = `${prefixPath}/tab/${data.tabId}`;\n            super.trigger(HostEvent.Navigate, path);\n        }\n    }\n    async showPreviewLoader() {\n        if (!this.viewConfig.showPreviewLoader || !this.viewConfig.vizId) {\n            return;\n        }\n        try {\n            const preview = await getPreview(this.thoughtSpotHost, this.viewConfig.vizId, this.viewConfig.liveboardId);\n            if (!preview.vizContent) {\n                return;\n            }\n            addPreviewStylesIfNotPresent();\n            const div = document.createElement('div');\n            div.innerHTML = `\n                <div class=ts-viz-preview-loader>\n                    ${preview.vizContent}\n                </div>\n                `;\n            const previewDiv = div.firstElementChild;\n            this.hostElement.appendChild(previewDiv);\n            this.hostElement.style.position = 'relative';\n            this.on(EmbedEvent.Data, () => {\n                previewDiv.remove();\n            });\n        }\n        catch (error) {\n            console.error('Error fetching preview', error);\n        }\n    }\n    beforePrerenderVisible() {\n        super.beforePrerenderVisible();\n        const embedObj = this.getPreRenderObj();\n        this.executeAfterEmbedContainerLoaded(() => {\n            this.navigateToLiveboard(this.viewConfig.liveboardId, this.viewConfig.vizId, this.viewConfig.activeTabId, this.viewConfig.personalizedViewId);\n            if (embedObj) {\n                embedObj.currentLiveboardState = {\n                    liveboardId: this.viewConfig.liveboardId,\n                    vizId: this.viewConfig.vizId,\n                    activeTabId: this.viewConfig.activeTabId,\n                    personalizedViewId: this.viewConfig.personalizedViewId,\n                };\n            }\n        });\n    }\n    async handleRenderForPrerender() {\n        if (isUndefined(this.viewConfig.liveboardId)) {\n            return this.prerenderGeneric();\n        }\n        return super.handleRenderForPrerender();\n    }\n    /**\n     * Triggers an event to the embedded app\n     * @param {HostEvent} messageType The event type\n     * @param {any} data The payload to send with the message\n     * @returns A promise that resolves with the response from the embedded app\n     */\n    trigger(messageType, data = {}, context) {\n        const dataWithVizId = data;\n        if (messageType === HostEvent.SetActiveTab) {\n            this.setActiveTab(data);\n            return Promise.resolve(null);\n        }\n        if (typeof dataWithVizId === 'object' && this.viewConfig.vizId) {\n            dataWithVizId.vizId = this.viewConfig.vizId;\n        }\n        return super.trigger(messageType, dataWithVizId, context);\n    }\n    /**\n     * Destroys the ThoughtSpot embed, and remove any nodes from the DOM.\n     * @version SDK: 1.39.0 | ThoughtSpot: 10.10.0.cl\n     */\n    destroy() {\n        super.destroy();\n        this.unregisterLazyLoadEvents();\n    }\n    postRender() {\n        this.registerLazyLoadEvents();\n    }\n    registerLazyLoadEvents() {\n        if (!this.iFrame) {\n            return;\n        }\n        if (this.viewConfig.fullHeight && this.viewConfig.lazyLoadingForFullHeight) {\n            this.unregisterLazyLoadEvents();\n            // TODO: Use passive: true, install modernizr to check for passive\n            window.addEventListener('resize', this.sendFullHeightLazyLoadData);\n            window.addEventListener('scroll', this.sendFullHeightLazyLoadData, true);\n            if (!this.viewConfig.enableScrollableContainerLazyLoading) {\n                return;\n            }\n            this.lazyLoadScrollContainers = getScrollableAncestors(this.iFrame);\n            this.lazyLoadScrollContainers.forEach((scrollContainer) => {\n                scrollContainer.addEventListener('scroll', this.sendFullHeightLazyLoadData);\n            });\n            if (typeof ResizeObserver !== 'undefined') {\n                const resizeTargets = new Set([\n                    this.iFrame.parentElement,\n                    ...getEffectiveClippingAncestors(this.iFrame),\n                ].filter(Boolean));\n                this.lazyLoadResizeObserver = new ResizeObserver(this.sendFullHeightLazyLoadData);\n                resizeTargets.forEach((resizeTarget) => {\n                    this.lazyLoadResizeObserver.observe(resizeTarget);\n                });\n            }\n        }\n    }\n    unregisterLazyLoadEvents() {\n        var _a;\n        if (this.viewConfig.fullHeight && this.viewConfig.lazyLoadingForFullHeight) {\n            window.removeEventListener('resize', this.sendFullHeightLazyLoadData);\n            window.removeEventListener('scroll', this.sendFullHeightLazyLoadData, true);\n            (_a = this.lazyLoadResizeObserver) === null || _a === void 0 ? void 0 : _a.disconnect();\n            this.lazyLoadResizeObserver = undefined;\n            this.lazyLoadScrollContainers.forEach((scrollContainer) => {\n                scrollContainer.removeEventListener('scroll', this.sendFullHeightLazyLoadData);\n            });\n            this.lazyLoadScrollContainers = [];\n        }\n    }\n    /**\n     * Render an embedded ThoughtSpot Liveboard or visualization\n     * @param renderOptions An object specifying the Liveboard ID,\n     * visualization ID and the runtime filters.\n     */\n    async render() {\n        await super.render();\n        const src = this.getIFrameSrc();\n        await this.renderV1Embed(src);\n        this.showPreviewLoader();\n        this.postRender();\n        return this;\n    }\n    navigateToLiveboard(liveboardId, vizId, activeTabId, personalizedViewId) {\n        const path = this.getIframeSuffixSrc(liveboardId, vizId, activeTabId, personalizedViewId);\n        this.viewConfig.liveboardId = liveboardId;\n        this.viewConfig.activeTabId = activeTabId;\n        this.viewConfig.vizId = vizId;\n        this.viewConfig.personalizedViewId = personalizedViewId;\n        if (this.isRendered) {\n            this.trigger(HostEvent.Navigate, path.substring(1));\n        }\n        else if (this.viewConfig.preRenderId) {\n            this.preRender(true);\n        }\n        else {\n            this.render();\n        }\n    }\n    /**\n     * Returns the full url of the Liveboard/visualization which can be used to open\n     * this Liveboard inside the full ThoughtSpot application in a new tab.\n     * @returns url string\n     */\n    getLiveboardUrl() {\n        let url = `${this.thoughtSpotHost}/#/pinboard/${this.viewConfig.liveboardId}`;\n        if (this.viewConfig.activeTabId) {\n            url = `${url}/tab/${this.viewConfig.activeTabId}`;\n        }\n        if (this.viewConfig.vizId) {\n            url = `${url}/${this.viewConfig.vizId}`;\n        }\n        if (this.viewConfig.personalizedViewId) {\n            url = `${url}?view=${this.viewConfig.personalizedViewId}`;\n        }\n        return url;\n    }\n}\n/**\n * @hidden\n */\nexport class PinboardEmbed extends LiveboardEmbed {\n}\n//# sourceMappingURL=liveboard.js.map","import { graphqlQuery } from \"./graphql-request\";\nexport const getPreviewQuery = `\nquery GetEurekaVizSnapshots(\n    $vizId: String!, $liveboardId: String!) {\n    getEurekaVizSnapshot(\n      id: $vizId\n      reportBookId: $liveboardId\n      reportBookType: \"PINBOARD_ANSWER_BOOK\"\n      version: 9999999\n    ) {\n      id\n      vizContent\n      snapshotType\n      createdMs\n    }\n  } \n`;\n/**\n *\n * @param thoughtSpotHost\n * @param vizId\n * @param liveboardId\n */\nexport async function getPreview(thoughtSpotHost, vizId, liveboardId) {\n    return graphqlQuery({\n        query: getPreviewQuery,\n        variables: { vizId, liveboardId },\n        thoughtSpotHost,\n    });\n}\n//# sourceMappingURL=preview-service.js.map","export const addPreviewStylesIfNotPresent = () => {\n    const styleEl = document.getElementById('ts-preview-style');\n    if (styleEl) {\n        return;\n    }\n    const previewStyles = `\n        <link rel=\"stylesheet\" href=\"https://cdn.jsdelivr.net/npm/ag-grid-community@32.0.2/styles/ag-grid.min.css\" integrity=\"sha384-PvEsKa6emq5KYa9mf+Q7eYF5C2OCacYzZ+hBngp21NA4o1A9iU9smnytEmqUFbEZ\" crossorigin=\"anonymous\">\n        <style id=\"ts-preview-style\">\n           .ts-viz-preview-loader {\n                position: absolute;\n                top: 0;\n                left: 0;\n                right: 0;\n                bottom: 0;\n                display: flex;\n                justify-content: center;\n                align-items: center;\n                background: linear-gradient(-45deg, #eee 40%, #fafafa 50%, #eee 60%);\n                background-size: 300%;\n                background-position-x: 100%;\n                animation: shimmer 1s infinite linear;\n                z-index: 999;\n                filter: grayscale(0.2);\n           }\n\n           @keyframes shimmer {\n                to {\n                    background-position-x: 0%\n                }\n           }\n\n           .ts-viz-preview-loader .table-module__fullContainer {\n                width: 100%;\n                height: 100%;\n           }\n        </style>\n    `;\n    document.head.insertAdjacentHTML('beforeend', previewStyles);\n};\n//# sourceMappingURL=global-styles.js.map","import { Param } from '../types';\nimport { getQueryParamString } from '../utils';\nimport { TsEmbed } from './ts-embed';\n/**\n * Embed ThoughtSpot search bar\n * @version SDK: 1.18.0 | ThoughtSpot: 8.10.0.cl, 9.0.1-sw\n * @group Embed components\n */\nexport class SearchBarEmbed extends TsEmbed {\n    constructor(domSelector, viewConfig) {\n        super(domSelector);\n        this.embedComponentType = 'SearchBarEmbed';\n        this.viewConfig = viewConfig;\n    }\n    getEmbedParamsObject() {\n        var _a;\n        const { searchOptions, dataSource, dataSources, useLastSelectedSources = false, excludeSearchTokenStringFromURL, } = this.viewConfig;\n        const queryParams = this.getBaseQueryParams();\n        queryParams[Param.HideActions] = [...((_a = queryParams[Param.HideActions]) !== null && _a !== void 0 ? _a : [])];\n        if (dataSources && dataSources.length) {\n            queryParams[Param.DataSources] = JSON.stringify(dataSources);\n        }\n        if (dataSource) {\n            queryParams[Param.DataSources] = `[\"${dataSource}\"]`;\n        }\n        if (searchOptions === null || searchOptions === void 0 ? void 0 : searchOptions.searchTokenString) {\n            if (!excludeSearchTokenStringFromURL) {\n                queryParams[Param.searchTokenString] = encodeURIComponent(searchOptions.searchTokenString);\n            }\n            if (searchOptions.executeSearch) {\n                queryParams[Param.executeSearch] = true;\n            }\n        }\n        queryParams[Param.UseLastSelectedDataSource] = useLastSelectedSources;\n        if (dataSource || dataSources) {\n            queryParams[Param.UseLastSelectedDataSource] = false;\n        }\n        queryParams[Param.searchEmbed] = true;\n        return queryParams;\n    }\n    /**\n     * Construct the URL of the embedded ThoughtSpot search to be\n     * loaded in the iframe\n     * @param dataSources A list of data source GUIDs\n     */\n    getIFrameSrc() {\n        const queryParams = this.getEmbedParamsObject();\n        const path = 'search-bar-embed';\n        let query = '';\n        const queryParamsString = getQueryParamString(queryParams, true);\n        if (queryParamsString) {\n            query = `?${queryParamsString}`;\n        }\n        const tsPostHashParams = this.getThoughtSpotPostUrlParams();\n        return `${this.getEmbedBasePath(query)}/embed/${path}${tsPostHashParams}`;\n    }\n    /**\n     * Render the embedded ThoughtSpot search\n     */\n    async render() {\n        await super.render();\n        const src = this.getIFrameSrc();\n        await this.renderIFrame(src);\n        return this;\n    }\n    getSearchInitData() {\n        return {\n            searchOptions: this.viewConfig.excludeSearchTokenStringFromURL\n                ? this.viewConfig.searchOptions\n                : null,\n        };\n    }\n    async getAppInitData() {\n        const defaultAppInitData = await super.getAppInitData();\n        return { ...defaultAppInitData, ...this.getSearchInitData() };\n    }\n}\n//# sourceMappingURL=search-bar.js.map","/**\n * Copyright (c) 2022\n *\n * Embed ThoughtSpot search or a saved answer.\n * https://developers.thoughtspot.com/docs/search-embed\n * @summary Search embed\n * @author Ayon Ghosh <ayon.ghosh@thoughtspot.com>\n */\nimport { DataSourceVisualMode, Param, Action, } from '../types';\nimport { getQueryParamString, checkReleaseVersionInBeta, getFilterQuery, getRuntimeParameters, } from '../utils';\nimport { TsEmbed } from './ts-embed';\nimport { ERROR_MESSAGE } from '../errors';\nimport { getAuthPromise } from './base';\nimport { getReleaseVersion } from '../auth';\nimport { getEmbedConfig } from './embedConfig';\n/**\n * Define the initial state of column custom group accordions\n * in data panel v2.\n */\nexport var DataPanelCustomColumnGroupsAccordionState;\n(function (DataPanelCustomColumnGroupsAccordionState) {\n    /**\n     * Expand all the accordion initially in data panel v2.\n     */\n    DataPanelCustomColumnGroupsAccordionState[\"EXPAND_ALL\"] = \"EXPAND_ALL\";\n    /**\n     * Collapse all the accordions initially in data panel v2.\n     */\n    DataPanelCustomColumnGroupsAccordionState[\"COLLAPSE_ALL\"] = \"COLLAPSE_ALL\";\n    /**\n     * Expand the first accordion and collapse the rest.\n     */\n    DataPanelCustomColumnGroupsAccordionState[\"EXPAND_FIRST\"] = \"EXPAND_FIRST\";\n})(DataPanelCustomColumnGroupsAccordionState || (DataPanelCustomColumnGroupsAccordionState = {}));\nexport const HiddenActionItemByDefaultForSearchEmbed = [\n    Action.EditACopy,\n    Action.SaveAsView,\n    Action.UpdateTML,\n    Action.EditTML,\n    Action.AnswerDelete,\n];\n/**\n * Embed ThoughtSpot search\n * @group Embed components\n */\nexport class SearchEmbed extends TsEmbed {\n    constructor(domSelector, viewConfig) {\n        viewConfig = {\n            embedComponentType: 'SearchEmbed',\n            excludeRuntimeFiltersfromURL: true,\n            excludeRuntimeParametersfromURL: true,\n            ...viewConfig,\n        };\n        super(domSelector, viewConfig);\n    }\n    /**\n     * Get the state of the data sources panel that the embedded\n     * ThoughtSpot search will be initialized with.\n     */\n    getDataSourceMode() {\n        let dataSourceMode = DataSourceVisualMode.Expanded;\n        if (this.viewConfig.collapseDataSources === true\n            || this.viewConfig.collapseDataPanel === true) {\n            dataSourceMode = DataSourceVisualMode.Collapsed;\n        }\n        if (this.viewConfig.hideDataSources === true) {\n            dataSourceMode = DataSourceVisualMode.Hidden;\n        }\n        return dataSourceMode;\n    }\n    getSearchInitData() {\n        var _a;\n        return {\n            ...(this.viewConfig.excludeSearchTokenStringFromURL ? {\n                searchOptions: {\n                    searchTokenString: (_a = this.viewConfig.searchOptions) === null || _a === void 0 ? void 0 : _a.searchTokenString,\n                },\n            } : {}),\n        };\n    }\n    async getAppInitData() {\n        const defaultAppInitData = await super.getAppInitData();\n        const result = {\n            ...defaultAppInitData,\n            ...this.getSearchInitData(),\n        };\n        if (this.viewConfig.visualOverrides) {\n            result.embedParams = {\n                ...(defaultAppInitData.embedParams || {}),\n                visualOverridesParams: this.viewConfig.visualOverrides,\n            };\n        }\n        return result;\n    }\n    getEmbedParamsObject() {\n        var _a;\n        const { hideResults, enableSearchAssist, forceTable, searchOptions, runtimeFilters, dataSource, dataSources, excludeRuntimeFiltersfromURL, hideSearchBar, dataPanelV2 = true, useLastSelectedSources = false, runtimeParameters, collapseSearchBarInitially = false, enableCustomColumnGroups = false, dataPanelCustomGroupsAccordionInitialState = DataPanelCustomColumnGroupsAccordionState.EXPAND_ALL, focusSearchBarOnRender = true, excludeRuntimeParametersfromURL, excludeSearchTokenStringFromURL, collapseSearchBar = true, isThisPeriodInDateFiltersEnabled, newChartsLibrary, } = this.viewConfig;\n        const queryParams = this.getBaseQueryParams();\n        queryParams[Param.HideActions] = [\n            ...((_a = queryParams[Param.HideActions]) !== null && _a !== void 0 ? _a : []),\n            ...HiddenActionItemByDefaultForSearchEmbed,\n        ];\n        if (dataSources && dataSources.length) {\n            queryParams[Param.DataSources] = JSON.stringify(dataSources);\n        }\n        if (dataSource) {\n            queryParams[Param.DataSources] = `[\"${dataSource}\"]`;\n        }\n        if (searchOptions === null || searchOptions === void 0 ? void 0 : searchOptions.searchTokenString) {\n            if (!excludeSearchTokenStringFromURL) {\n                queryParams[Param.searchTokenString] = encodeURIComponent(searchOptions.searchTokenString);\n            }\n            if (searchOptions.executeSearch) {\n                queryParams[Param.executeSearch] = true;\n            }\n        }\n        if (enableSearchAssist) {\n            queryParams[Param.EnableSearchAssist] = true;\n        }\n        if (hideResults) {\n            queryParams[Param.HideResult] = true;\n        }\n        if (forceTable) {\n            queryParams[Param.ForceTable] = true;\n        }\n        if (hideSearchBar) {\n            queryParams[Param.HideSearchBar] = true;\n        }\n        if (!focusSearchBarOnRender) {\n            queryParams[Param.FocusSearchBarOnRender] = focusSearchBarOnRender;\n        }\n        if (isThisPeriodInDateFiltersEnabled !== undefined) {\n            queryParams[Param.IsThisPeriodInDateFiltersEnabled] = isThisPeriodInDateFiltersEnabled;\n        }\n        if (newChartsLibrary !== undefined) {\n            queryParams[Param.EnableNewChartLibrary] = newChartsLibrary;\n        }\n        queryParams[Param.DataPanelV2Enabled] = dataPanelV2;\n        queryParams[Param.DataSourceMode] = this.getDataSourceMode();\n        queryParams[Param.UseLastSelectedDataSource] = useLastSelectedSources;\n        if (dataSource || dataSources) {\n            queryParams[Param.UseLastSelectedDataSource] = false;\n        }\n        queryParams[Param.searchEmbed] = true;\n        queryParams[Param.CollapseSearchBarInitially] = collapseSearchBarInitially || collapseSearchBar;\n        queryParams[Param.EnableCustomColumnGroups] = enableCustomColumnGroups;\n        if (dataPanelCustomGroupsAccordionInitialState\n            === DataPanelCustomColumnGroupsAccordionState.COLLAPSE_ALL\n            || dataPanelCustomGroupsAccordionInitialState\n                === DataPanelCustomColumnGroupsAccordionState.EXPAND_FIRST) {\n            queryParams[Param.DataPanelCustomGroupsAccordionInitialState] = dataPanelCustomGroupsAccordionInitialState;\n        }\n        else {\n            queryParams[Param.DataPanelCustomGroupsAccordionInitialState] = DataPanelCustomColumnGroupsAccordionState.EXPAND_ALL;\n        }\n        return queryParams;\n    }\n    getEmbedParams() {\n        const { runtimeParameters, runtimeFilters, excludeRuntimeParametersfromURL, excludeRuntimeFiltersfromURL, } = this.viewConfig;\n        const queryParams = this.getEmbedParamsObject();\n        let query = '';\n        const queryParamsString = getQueryParamString(queryParams, true);\n        if (queryParamsString) {\n            query = `?${queryParamsString}`;\n        }\n        const parameterQuery = getRuntimeParameters(runtimeParameters || []);\n        if (parameterQuery && !excludeRuntimeParametersfromURL)\n            query += `&${parameterQuery}`;\n        const filterQuery = getFilterQuery(runtimeFilters || []);\n        if (filterQuery && !excludeRuntimeFiltersfromURL) {\n            query += `&${filterQuery}`;\n        }\n        return query;\n    }\n    /**\n     * Construct the URL of the embedded ThoughtSpot search to be\n     * loaded in the iframe\n     * @param answerId The GUID of a saved answer\n     * @param dataSources A list of data source GUIDs\n     */\n    getIFrameSrc() {\n        const { answerId } = this.viewConfig;\n        const answerPath = answerId ? `saved-answer/${answerId}` : 'answer';\n        const tsPostHashParams = this.getThoughtSpotPostUrlParams();\n        return `${this.getRootIframeSrc()}/embed/${answerPath}${tsPostHashParams}`;\n    }\n    /**\n     * Render the embedded ThoughtSpot search\n     */\n    async render() {\n        await super.render();\n        const { answerId } = this.viewConfig;\n        const src = this.getIFrameSrc();\n        await this.renderIFrame(src);\n        getAuthPromise().then(() => {\n            if (checkReleaseVersionInBeta(getReleaseVersion(), getEmbedConfig().suppressSearchEmbedBetaWarning\n                || getEmbedConfig().suppressErrorAlerts)) {\n                alert(ERROR_MESSAGE.SEARCHEMBED_BETA_WRANING_MESSAGE);\n            }\n        });\n        return this;\n    }\n}\n//# sourceMappingURL=search.js.map","import { ErrorDetailsTypes, EmbedErrorCodes } from '../types';\nimport { validateHttpUrl } from '../utils';\nimport { ERROR_MESSAGE } from '../errors';\n/**\n * Resolves enablePastConversationsSidebar with\n * spotterSidebarConfig taking precedence over the\n * standalone flag.\n */\nexport const resolveEnablePastConversationsSidebar = (params) => (params.spotterSidebarConfigValue !== undefined\n    ? params.spotterSidebarConfigValue\n    : params.standaloneValue);\nexport function buildSpotterSidebarAppInitData(defaultAppInitData, viewConfig, handleError) {\n    const { spotterSidebarConfig, enablePastConversationsSidebar, visualOverrides } = viewConfig;\n    const resolvedEnablePastConversations = resolveEnablePastConversationsSidebar({\n        spotterSidebarConfigValue: spotterSidebarConfig === null || spotterSidebarConfig === void 0 ? void 0 : spotterSidebarConfig.enablePastConversationsSidebar,\n        standaloneValue: enablePastConversationsSidebar,\n    });\n    const hasConfig = spotterSidebarConfig || resolvedEnablePastConversations !== undefined;\n    if (!hasConfig) {\n        if (visualOverrides === undefined) {\n            return defaultAppInitData;\n        }\n        return {\n            ...defaultAppInitData,\n            embedParams: { visualOverridesParams: visualOverrides },\n        };\n    }\n    const resolvedSidebarConfig = {\n        ...spotterSidebarConfig,\n        ...(resolvedEnablePastConversations !== undefined && {\n            enablePastConversationsSidebar: resolvedEnablePastConversations,\n        }),\n    };\n    if (resolvedSidebarConfig.spotterDocumentationUrl !== undefined) {\n        const [isValid, validationError] = validateHttpUrl(resolvedSidebarConfig.spotterDocumentationUrl);\n        if (!isValid) {\n            handleError({\n                errorType: ErrorDetailsTypes.VALIDATION_ERROR,\n                message: ERROR_MESSAGE.INVALID_SPOTTER_DOCUMENTATION_URL,\n                code: EmbedErrorCodes.INVALID_URL,\n                error: (validationError === null || validationError === void 0 ? void 0 : validationError.message) || ERROR_MESSAGE.INVALID_SPOTTER_DOCUMENTATION_URL,\n            });\n            delete resolvedSidebarConfig.spotterDocumentationUrl;\n        }\n    }\n    return {\n        ...defaultAppInitData,\n        embedParams: {\n            ...(defaultAppInitData.embedParams || {}),\n            spotterSidebarConfig: resolvedSidebarConfig,\n            ...(visualOverrides !== undefined ? { visualOverridesParams: visualOverrides } : {}),\n        },\n    };\n}\n//# sourceMappingURL=spotter-utils.js.map","export function buildSpotterVizAppInitData(initData, viewConfig) {\n    const { spotterViz } = viewConfig;\n    if (!spotterViz)\n        return initData;\n    return {\n        ...initData,\n        embedParams: {\n            ...(initData.embedParams || {}),\n            spotterVizConfig: spotterViz,\n        },\n    };\n}\n//# sourceMappingURL=spotter-viz-utils.js.map","import { CustomActionsPosition, CustomActionTarget } from '../types';\nimport { arrayIncludesString } from '../utils';\nimport sortBy from 'lodash/sortBy';\nimport { CUSTOM_ACTIONS_ERROR_MESSAGE } from '../errors';\nimport { logger } from './logger';\n/**\n * Configuration for custom action validation rules.\n * Defines allowed positions, metadata IDs, data model IDs, and fields for each target\n * type.\n *\n */\nconst customActionValidationConfig = {\n    [CustomActionTarget.LIVEBOARD]: {\n        positions: [CustomActionsPosition.PRIMARY, CustomActionsPosition.MENU],\n        allowedMetadataIds: ['liveboardIds'],\n        allowedDataModelIds: [],\n        allowedFields: ['name', 'id', 'position', 'target', 'metadataIds', 'orgIds', 'groupIds'],\n    },\n    [CustomActionTarget.VIZ]: {\n        positions: [CustomActionsPosition.MENU, CustomActionsPosition.PRIMARY, CustomActionsPosition.CONTEXTMENU],\n        allowedMetadataIds: ['liveboardIds', 'vizIds', 'answerIds'],\n        allowedDataModelIds: ['modelIds', 'modelColumnNames'],\n        allowedFields: ['name', 'id', 'position', 'target', 'metadataIds', 'orgIds', 'groupIds', 'dataModelIds'],\n    },\n    [CustomActionTarget.ANSWER]: {\n        positions: [CustomActionsPosition.MENU, CustomActionsPosition.PRIMARY, CustomActionsPosition.CONTEXTMENU],\n        allowedMetadataIds: ['answerIds'],\n        allowedDataModelIds: ['modelIds', 'modelColumnNames'],\n        allowedFields: ['name', 'id', 'position', 'target', 'metadataIds', 'orgIds', 'groupIds', 'dataModelIds'],\n    },\n    [CustomActionTarget.SPOTTER]: {\n        positions: [CustomActionsPosition.MENU, CustomActionsPosition.CONTEXTMENU],\n        allowedMetadataIds: [],\n        allowedDataModelIds: ['modelIds'],\n        allowedFields: ['name', 'id', 'position', 'target', 'orgIds', 'groupIds', 'dataModelIds'],\n    },\n};\n/**\n * Validates a single custom action based on its target type\n * @param action - The custom action to validate\n * @param primaryActionsPerTarget - Map to track primary actions per target\n * @returns CustomActionValidation with isValid flag and reason string\n *\n * @hidden\n */\nconst validateCustomAction = (action, primaryActionsPerTarget) => {\n    const { id: actionId, target: targetType, position, metadataIds, dataModelIds } = action;\n    // Check if target type is supported\n    if (!customActionValidationConfig[targetType]) {\n        const errorMessage = CUSTOM_ACTIONS_ERROR_MESSAGE.UNSUPPORTED_TARGET(actionId, targetType);\n        return { isValid: false, errors: [errorMessage] };\n    }\n    const config = customActionValidationConfig[targetType];\n    const errors = [];\n    // Validate position\n    if (!arrayIncludesString(config.positions, position)) {\n        const supportedPositions = config.positions.join(', ');\n        errors.push(CUSTOM_ACTIONS_ERROR_MESSAGE.INVALID_POSITION(position, targetType, supportedPositions));\n    }\n    // Validate metadata IDs\n    if (metadataIds) {\n        const invalidMetadataIds = Object.keys(metadataIds).filter((key) => !arrayIncludesString(config.allowedMetadataIds, key));\n        if (invalidMetadataIds.length > 0) {\n            const supportedMetadataIds = config.allowedMetadataIds.length > 0 ? config.allowedMetadataIds.join(', ') : 'none';\n            errors.push(CUSTOM_ACTIONS_ERROR_MESSAGE.INVALID_METADATA_IDS(targetType, invalidMetadataIds, supportedMetadataIds));\n        }\n    }\n    // Validate data model IDs\n    if (dataModelIds) {\n        const invalidDataModelIds = Object.keys(dataModelIds).filter((key) => !arrayIncludesString(config.allowedDataModelIds, key));\n        if (invalidDataModelIds.length > 0) {\n            const supportedDataModelIds = config.allowedDataModelIds.length > 0 ? config.allowedDataModelIds.join(', ') : 'none';\n            errors.push(CUSTOM_ACTIONS_ERROR_MESSAGE.INVALID_DATA_MODEL_IDS(targetType, invalidDataModelIds, supportedDataModelIds));\n        }\n    }\n    // Validate allowed fields\n    const actionKeys = Object.keys(action);\n    const invalidFields = actionKeys.filter((key) => !arrayIncludesString(config.allowedFields, key));\n    if (invalidFields.length > 0) {\n        const supportedFields = config.allowedFields.join(', ');\n        errors.push(CUSTOM_ACTIONS_ERROR_MESSAGE.INVALID_FIELDS(targetType, invalidFields, supportedFields));\n    }\n    return {\n        isValid: errors.length === 0,\n        errors,\n    };\n};\n/**\n * Validates basic action structure and required fields\n * @param action - The action to validate\n * @returns Object containing validation result and missing fields\n *\n * @hidden\n */\nconst validateActionStructure = (action) => {\n    if (!action || typeof action !== 'object') {\n        return { isValid: false, missingFields: [] };\n    }\n    // Check for all missing required fields\n    const missingFields = ['id', 'name', 'target', 'position'].filter(field => !action[field]);\n    return { isValid: missingFields.length === 0, missingFields };\n};\n/**\n * Checks for duplicate IDs among actions\n * @param actions - Array of actions to check\n * @returns Object containing filtered actions and duplicate errors\n *\n * @hidden\n */\nconst filterDuplicateIds = (actions) => {\n    const idMap = actions.reduce((map, action) => {\n        const list = map.get(action.id) || [];\n        list.push(action);\n        map.set(action.id, list);\n        return map;\n    }, new Map());\n    const { actions: actionsWithUniqueIds, errors } = Array.from(idMap.entries()).reduce((acc, [id, actionsWithSameId]) => {\n        if (actionsWithSameId.length === 1) {\n            acc.actions.push(actionsWithSameId[0]);\n        }\n        else {\n            // Keep the first action and add error for duplicates\n            acc.actions.push(actionsWithSameId[0]);\n            const duplicateNames = actionsWithSameId.slice(1).map(action => action.name);\n            acc.errors.push(CUSTOM_ACTIONS_ERROR_MESSAGE.DUPLICATE_IDS(id, duplicateNames, actionsWithSameId[0].name));\n        }\n        return acc;\n    }, { actions: [], errors: [] });\n    return { actions: actionsWithUniqueIds, errors };\n};\n/**\n * Validates and processes custom actions\n * @param customActions - Array of custom actions to validate\n * @returns Object containing valid actions and any validation errors\n */\nexport const getCustomActions = (customActions) => {\n    const errors = [];\n    const primaryActionsPerTarget = new Map();\n    if (!customActions || !Array.isArray(customActions)) {\n        return { actions: [], errors: [] };\n    }\n    // Step 1: Handle invalid actions first (null, undefined, missing required\n    // fields)\n    const validActions = customActions.filter(action => {\n        const validation = validateActionStructure(action);\n        if (!validation.isValid) {\n            if (!action || typeof action !== 'object') {\n                errors.push(CUSTOM_ACTIONS_ERROR_MESSAGE.INVALID_ACTION_OBJECT);\n            }\n            else {\n                errors.push(CUSTOM_ACTIONS_ERROR_MESSAGE.MISSING_REQUIRED_FIELDS(action.id, validation.missingFields));\n            }\n            return false;\n        }\n        return true;\n    });\n    // Step 2: Check for duplicate IDs among valid actions\n    const { actions: actionsWithUniqueIds, errors: duplicateErrors } = filterDuplicateIds(validActions);\n    // Add duplicate errors to the errors array\n    duplicateErrors.forEach(error => errors.push(error));\n    // Step 3: Validate actions with unique IDs\n    const finalValidActions = [];\n    actionsWithUniqueIds.forEach((action) => {\n        const { isValid, errors: validationErrors } = validateCustomAction(action, primaryActionsPerTarget);\n        validationErrors.forEach(error => errors.push(error));\n        if (isValid) {\n            finalValidActions.push(action);\n        }\n    });\n    // Step 4: Collect warnings for long custom action names\n    const MAX_ACTION_NAME_LENGTH = 30;\n    const warnings = finalValidActions\n        .filter(action => action.name.length > MAX_ACTION_NAME_LENGTH)\n        .map(action => `Custom action name '${action.name}' exceeds ${MAX_ACTION_NAME_LENGTH} characters. This may cause display or truncation issues in the UI.`);\n    if (warnings.length > 0) {\n        logger.warn(warnings);\n    }\n    const sortedActions = sortBy(finalValidActions, (a) => a.name.toLocaleLowerCase());\n    return {\n        actions: sortedActions,\n        errors: errors,\n    };\n};\n//# sourceMappingURL=custom-actions.js.map","import { getEmbedConfig } from '../embed/embedConfig';\nimport { disableAutoLogin, notifyAuthFailure, notifyAuthSuccess, notifyLogout, } from '../embed/base';\nimport { AuthFailureType } from '../auth';\nimport { AuthType, EmbedEvent } from '../types';\nimport { AnswerService } from './graphql/answerService/answerService';\nimport { resetCachedAuthToken } from '../authToken';\nimport { ERROR_MESSAGE } from '../errors';\nimport { handleExitPresentMode } from '../utils';\nimport { resetCachedPreauthInfo, resetCachedSessionInfo } from './sessionInfoService';\n/**\n * Process the ExitPresentMode event and handle default fullscreen exit\n * @param e - The event data\n */\nfunction processExitPresentMode(e) {\n    var _a;\n    const embedConfig = getEmbedConfig();\n    const disableFullscreenPresentation = (_a = embedConfig === null || embedConfig === void 0 ? void 0 : embedConfig.disableFullscreenPresentation) !== null && _a !== void 0 ? _a : true;\n    if (!disableFullscreenPresentation) {\n        handleExitPresentMode();\n    }\n}\n/**\n * Clears the cached preauth and session info.\n */\nfunction processClearInfoCache() {\n    resetCachedPreauthInfo();\n    resetCachedSessionInfo();\n}\n/**\n *\n * @param e\n * @param thoughtSpotHost\n */\nexport function processCustomAction(e, thoughtSpotHost) {\n    const { session, embedAnswerData, contextMenuPoints } = e.data;\n    const answerService = new AnswerService(session, embedAnswerData || {}, thoughtSpotHost, contextMenuPoints === null || contextMenuPoints === void 0 ? void 0 : contextMenuPoints.selectedPoints);\n    return {\n        ...e,\n        answerService,\n    };\n}\n/**\n * Responds to AuthInit sent from host signifying successful authentication in host.\n * @param e\n * @returns {any}\n */\nfunction processAuthInit(e) {\n    var _a, _b;\n    notifyAuthSuccess();\n    // Expose only allowed details (eg: userGUID) back to SDK users.\n    return {\n        ...e,\n        data: {\n            userGUID: ((_a = e.data) === null || _a === void 0 ? void 0 : _a.userGUID) || ((_b = e.payload) === null || _b === void 0 ? void 0 : _b.userGUID),\n        },\n    };\n}\n/**\n *\n * @param e\n * @param containerEl\n */\nfunction processNoCookieAccess(e, containerEl) {\n    const { loginFailedMessage, suppressNoCookieAccessAlert, ignoreNoCookieAccess, suppressErrorAlerts, } = getEmbedConfig();\n    if (!ignoreNoCookieAccess) {\n        if (!suppressNoCookieAccessAlert && !suppressErrorAlerts) {\n            alert(ERROR_MESSAGE.THIRD_PARTY_COOKIE_BLOCKED_ALERT);\n        }\n        containerEl.innerHTML = loginFailedMessage;\n    }\n    notifyAuthFailure(AuthFailureType.NO_COOKIE_ACCESS);\n    return e;\n}\n/**\n *\n * @param e\n * @param containerEl\n */\nexport function processAuthFailure(e, containerEl) {\n    var _a;\n    const { loginFailedMessage, authType, disableLoginFailurePage, autoLogin, } = getEmbedConfig();\n    const isEmbeddedSSO = authType === AuthType.EmbeddedSSO;\n    const isTrustedAuth = authType === AuthType.TrustedAuthToken || authType === AuthType.TrustedAuthTokenCookieless;\n    const isEmbeddedSSOInfoFailure = isEmbeddedSSO && ((_a = e === null || e === void 0 ? void 0 : e.data) === null || _a === void 0 ? void 0 : _a.type) === AuthFailureType.UNAUTHENTICATED_FAILURE;\n    if (autoLogin && isTrustedAuth) {\n        containerEl.innerHTML = loginFailedMessage;\n        notifyAuthFailure(AuthFailureType.IDLE_SESSION_TIMEOUT);\n    }\n    else if (authType !== AuthType.None && !disableLoginFailurePage && !isEmbeddedSSOInfoFailure) {\n        containerEl.innerHTML = loginFailedMessage;\n        notifyAuthFailure(AuthFailureType.OTHER);\n    }\n    resetCachedAuthToken();\n    return e;\n}\n/**\n *\n * @param e\n * @param containerEl\n */\nfunction processAuthLogout(e, containerEl) {\n    const { loginFailedMessage } = getEmbedConfig();\n    containerEl.innerHTML = loginFailedMessage;\n    resetCachedAuthToken();\n    disableAutoLogin();\n    notifyLogout();\n    return e;\n}\n/**\n *\n * @param type\n * @param e\n * @param thoughtSpotHost\n * @param containerEl\n */\nexport function processEventData(type, eventData, thoughtSpotHost, containerEl) {\n    switch (type) {\n        case EmbedEvent.CustomAction:\n            return processCustomAction(eventData, thoughtSpotHost);\n        case EmbedEvent.AuthInit:\n            return processAuthInit(eventData);\n        case EmbedEvent.NoCookieAccess:\n            return processNoCookieAccess(eventData, containerEl);\n        case EmbedEvent.AuthFailure:\n            return processAuthFailure(eventData, containerEl);\n        case EmbedEvent.AuthLogout:\n            return processAuthLogout(eventData, containerEl);\n        case EmbedEvent.ExitPresentMode:\n            return processExitPresentMode(eventData);\n        case EmbedEvent.CLEAR_INFO_CACHE:\n            return processClearInfoCache();\n        default:\n    }\n    return eventData;\n}\n//# sourceMappingURL=processData.js.map","import { EmbedErrorCodes, EmbedEvent, ErrorDetailsTypes } from '../../types';\nimport { ERROR_MESSAGE } from '../../errors';\nimport { embedEventStatus } from '../../utils';\nexport function isValidUpdateFiltersPayload(payload) {\n    if (!payload)\n        return false;\n    const isValidFilter = (f) => {\n        const hasColumn = typeof f.column === 'string' || typeof f.columnName === 'string';\n        const hasOperator = typeof f.oper === 'string' || typeof f.operator === 'string';\n        const hasValues = Array.isArray(f.values);\n        const validType = !f.type || typeof f.type === 'string';\n        return hasColumn && hasOperator && hasValues && validType;\n    };\n    const hasValidFilter = payload.filter && isValidFilter(payload.filter);\n    const hasValidFilters = Array.isArray(payload.filters) && payload.filters.length > 0 && payload.filters.every(isValidFilter);\n    return !!(hasValidFilter || hasValidFilters);\n}\nexport function isValidDrillDownPayload(payload) {\n    if (!payload)\n        return false;\n    const points = payload.points;\n    if (!points || typeof points !== 'object')\n        return false;\n    const hasClickedPoint = 'clickedPoint' in points && points.clickedPoint != null;\n    const hasSelectedPoints = Array.isArray(points.selectedPoints) && points.selectedPoints.length > 0;\n    return hasClickedPoint || hasSelectedPoints;\n}\nexport function createValidationError(message) {\n    const err = new Error(message);\n    err.isValidationError = true;\n    err.embedErrorDetails = {\n        type: EmbedEvent.Error,\n        data: {\n            errorType: ErrorDetailsTypes.VALIDATION_ERROR,\n            message,\n            code: EmbedErrorCodes.HOST_EVENT_VALIDATION,\n            error: message\n        },\n        status: embedEventStatus.END\n    };\n    throw err;\n}\nexport function throwUpdateFiltersValidationError() {\n    createValidationError(ERROR_MESSAGE.UPDATEFILTERS_INVALID_PAYLOAD);\n}\nexport function throwDrillDownValidationError() {\n    createValidationError(ERROR_MESSAGE.DRILLDOWN_INVALID_PAYLOAD);\n}\n//# sourceMappingURL=utils.js.map","import { HostEvent } from '../../types';\nimport { processTrigger as processTriggerService } from '../../utils/processTrigger';\nimport { getEmbedConfig } from '../embedConfig';\nimport { isValidUpdateFiltersPayload, isValidDrillDownPayload, throwUpdateFiltersValidationError, throwDrillDownValidationError, } from './utils';\nimport { UIPassthroughEvent, } from './contracts';\n/**\n * Maps HostEvent to its corresponding UIPassthroughEvent.\n * Includes both custom-handler events (Pin, SaveAnswer, UpdateFilters, DrillDown)\n * and getter events (GetAnswerSession, GetFilters, etc.) that use getDataWithPassthroughFallback.\n */\nconst PASSTHROUGH_MAP = {\n    // Custom handlers (setters with special logic)\n    [HostEvent.Pin]: UIPassthroughEvent.PinAnswerToLiveboard,\n    [HostEvent.SaveAnswer]: UIPassthroughEvent.SaveAnswer,\n    [HostEvent.UpdateFilters]: UIPassthroughEvent.UpdateFilters,\n    [HostEvent.DrillDown]: UIPassthroughEvent.Drilldown,\n    // Getters (use getDataWithPassthroughFallback)\n    [HostEvent.GetAnswerSession]: UIPassthroughEvent.GetAnswerSession,\n    [HostEvent.GetFilters]: UIPassthroughEvent.GetFilters,\n    [HostEvent.GetIframeUrl]: UIPassthroughEvent.GetIframeUrl,\n    [HostEvent.GetParameters]: UIPassthroughEvent.GetParameters,\n    [HostEvent.GetTML]: UIPassthroughEvent.GetTML,\n    [HostEvent.GetTabs]: UIPassthroughEvent.GetTabs,\n    [HostEvent.getExportRequestForCurrentPinboard]: UIPassthroughEvent.GetExportRequestForCurrentPinboard,\n};\nexport class HostEventClient {\n    constructor(iFrame) {\n        /** Cached list of available UI passthrough keys from the embedded app */\n        this.availablePassthroughKeysCache = null;\n        this.iFrame = iFrame;\n        this.customHandlers = {\n            [HostEvent.Pin]: (p, c) => this.handlePinEvent(p, c),\n            [HostEvent.SaveAnswer]: (p, c) => this.handleSaveAnswerEvent(p, c),\n            [HostEvent.UpdateFilters]: (p, c) => this.handleUpdateFiltersEvent(p, c),\n            [HostEvent.DrillDown]: (p, c) => this.handleDrillDownEvent(p, c),\n        };\n    }\n    /**\n     * A wrapper over process trigger to\n     * @param {HostEvent} message Host event to send\n     * @param {any} data Data to send with the host event\n     * @returns {Promise<any>} - the response from the process trigger\n     */\n    async processTrigger(message, data, context) {\n        if (!this.iFrame) {\n            throw new Error('Iframe element is not set');\n        }\n        const thoughtspotHost = getEmbedConfig().thoughtSpotHost;\n        return processTriggerService(this.iFrame, message, thoughtspotHost, data, context);\n    }\n    async handleHostEventWithParam(apiName, parameters, context) {\n        var _a, _b, _c, _d;\n        const response = (_b = (_a = (await this.triggerUIPassthroughApi(apiName, parameters, context))) === null || _a === void 0 ? void 0 : _a.find) === null || _b === void 0 ? void 0 : _b.call(_a, (r) => r.error || r.value);\n        if (!response) {\n            const error = `No answer found${parameters.vizId ? ` for vizId: ${parameters.vizId}` : ''}.`;\n            throw { error };\n        }\n        const errors = response.error\n            || ((_c = response.value) === null || _c === void 0 ? void 0 : _c.errors)\n            || ((_d = response.value) === null || _d === void 0 ? void 0 : _d.error);\n        if (errors) {\n            const message = typeof errors === 'string' ? errors : JSON.stringify(errors);\n            throw { error: message };\n        }\n        return { ...response.value };\n    }\n    async hostEventFallback(hostEvent, data, context) {\n        return this.processTrigger(hostEvent, data, context);\n    }\n    /**\n     * For getter events that return data. Tries UI passthrough first;\n     * if the app doesn't support it (no response data), falls back to\n     * the legacy host event channel. Real errors are thrown as-is.\n     */\n    async getDataWithPassthroughFallback(passthroughEvent, hostEvent, payload, context) {\n        var _a, _b, _c;\n        const response = await this.triggerUIPassthroughApi(passthroughEvent, payload || {}, context);\n        const matched = (_a = response === null || response === void 0 ? void 0 : response.find) === null || _a === void 0 ? void 0 : _a.call(response, (r) => r.error || r.value);\n        if (!matched) {\n            return this.hostEventFallback(hostEvent, payload, context);\n        }\n        const errors = matched.error\n            || ((_b = matched.value) === null || _b === void 0 ? void 0 : _b.errors)\n            || ((_c = matched.value) === null || _c === void 0 ? void 0 : _c.error);\n        if (errors) {\n            const message = typeof errors === 'string' ? errors : JSON.stringify(errors);\n            throw new Error(message);\n        }\n        return { ...matched.value };\n    }\n    /**\n     * Setter for the iframe element used for host events\n     * @param {HTMLIFrameElement} iFrame - the iframe element to set\n     */\n    setIframeElement(iFrame) {\n        this.iFrame = iFrame;\n    }\n    /**\n     * Fetches the list of available UI passthrough keys from the embedded app.\n     * Result is cached for the session. Returns empty array on failure.\n     */\n    async getAvailableUIPassthroughKeys(context) {\n        var _a, _b;\n        if (this.availablePassthroughKeysCache !== null) {\n            return this.availablePassthroughKeysCache;\n        }\n        try {\n            const response = await this.triggerUIPassthroughApi(UIPassthroughEvent.GetAvailableUIPassthroughs, {}, context);\n            const matched = (_a = response === null || response === void 0 ? void 0 : response.find) === null || _a === void 0 ? void 0 : _a.call(response, (r) => r.value && !r.error);\n            const keys = (_b = matched === null || matched === void 0 ? void 0 : matched.value) === null || _b === void 0 ? void 0 : _b.keys;\n            this.availablePassthroughKeysCache = Array.isArray(keys) ? keys : [];\n            return this.availablePassthroughKeysCache;\n        }\n        catch {\n            return [];\n        }\n    }\n    async triggerUIPassthroughApi(apiName, parameters, context) {\n        const res = await this.processTrigger(HostEvent.UIPassthrough, {\n            type: apiName,\n            parameters,\n        }, context);\n        return res;\n    }\n    async handlePinEvent(payload, context) {\n        var _a, _b;\n        if (!payload || !('newVizName' in payload)) {\n            return this.hostEventFallback(HostEvent.Pin, payload, context);\n        }\n        const formattedPayload = {\n            ...payload,\n            pinboardId: (_a = payload.liveboardId) !== null && _a !== void 0 ? _a : payload.pinboardId,\n            newPinboardName: (_b = payload.newLiveboardName) !== null && _b !== void 0 ? _b : payload.newPinboardName,\n        };\n        const data = await this.handleHostEventWithParam(UIPassthroughEvent.PinAnswerToLiveboard, formattedPayload, context);\n        return {\n            ...data,\n            liveboardId: data.pinboardId,\n        };\n    }\n    async handleSaveAnswerEvent(payload, context) {\n        var _a, _b, _c, _d;\n        if (!payload || !('name' in payload) || !('description' in payload)) {\n            // Save is the fallback for SaveAnswer\n            return this.hostEventFallback(HostEvent.Save, payload, context);\n        }\n        const data = await this.handleHostEventWithParam(UIPassthroughEvent.SaveAnswer, payload, context);\n        return {\n            ...data,\n            answerId: (_d = (_c = (_b = (_a = data === null || data === void 0 ? void 0 : data.saveResponse) === null || _a === void 0 ? void 0 : _a.data) === null || _b === void 0 ? void 0 : _b.Answer__save) === null || _c === void 0 ? void 0 : _c.answer) === null || _d === void 0 ? void 0 : _d.id,\n        };\n    }\n    handleUpdateFiltersEvent(payload, context) {\n        if (!isValidUpdateFiltersPayload(payload)) {\n            throwUpdateFiltersValidationError();\n        }\n        return this.handleHostEventWithParam(UIPassthroughEvent.UpdateFilters, payload, context);\n    }\n    handleDrillDownEvent(payload, context) {\n        if (!isValidDrillDownPayload(payload)) {\n            throwDrillDownValidationError();\n        }\n        return this.handleHostEventWithParam(UIPassthroughEvent.Drilldown, payload, context);\n    }\n    /**\n     * Dispatches a host event using the appropriate channel:\n     * 1. If the embedded app supports UI passthrough for this event, use it (custom handler or getter).\n     * 2. Otherwise fall back to the legacy host event channel.\n     *\n     * @param hostEvent - The host event to trigger\n     * @param payload - Optional payload for the event\n     * @param context - Optional context (e.g. vizId) for scoped operations\n     */\n    async triggerHostEvent(hostEvent, payload, context) {\n        const customHandler = this.customHandlers[hostEvent];\n        const passthroughEvent = PASSTHROUGH_MAP[hostEvent];\n        // If embedded app supports passthrough but not this event, use legacy channel\n        const keys = passthroughEvent ? await this.getAvailableUIPassthroughKeys(context) : [];\n        if (passthroughEvent && keys.length > 0 && !keys.includes(passthroughEvent)) {\n            return this.hostEventFallback(hostEvent, payload, context);\n        }\n        // Custom handler (setters) > getter passthrough > legacy fallback\n        return (customHandler\n            ? customHandler(payload, context)\n            : passthroughEvent\n                ? this.getDataWithPassthroughFallback(passthroughEvent, hostEvent, payload, context)\n                : this.hostEventFallback(hostEvent, payload, context));\n    }\n}\n//# sourceMappingURL=host-event-client.js.map","import { getThoughtSpotHost } from \"./config\";\nimport { getEmbedConfig } from \"./embed/embedConfig\";\nimport { ERROR_MESSAGE } from \"./errors\";\nimport { InterceptedApiType, EmbedEvent, EmbedErrorCodes, ErrorDetailsTypes } from \"./types\";\nimport { embedEventStatus } from \"./utils\";\nimport { logger } from \"./utils/logger\";\nconst DefaultInterceptUrlsMap = {\n    [InterceptedApiType.AnswerData]: [\n        '/prism/?op=GetChartWithData',\n        '/prism/?op=GetTableWithHeadlineData',\n        '/prism/?op=GetTableWithData',\n    ],\n    [InterceptedApiType.LiveboardData]: [\n        '/prism/?op=LoadContextBook'\n    ],\n};\nconst formatInterceptUrl = (url) => {\n    const host = getThoughtSpotHost(getEmbedConfig());\n    if (url.startsWith('/'))\n        return `${host}${url}`;\n    return url;\n};\n/**\n * Converts user passed url values to proper urls\n * [ANSER_DATA] => ['https://host/pris/op?=op']\n * @param interceptUrls\n * @returns\n */\nconst processInterceptUrls = (interceptUrls) => {\n    let processedUrls = [...interceptUrls];\n    Object.entries(DefaultInterceptUrlsMap).forEach(([apiType, apiTypeUrls]) => {\n        if (!processedUrls.includes(apiType))\n            return;\n        processedUrls = processedUrls.filter(url => url !== apiType);\n        processedUrls = [...processedUrls, ...apiTypeUrls];\n    });\n    return processedUrls.map(url => formatInterceptUrl(url));\n};\n/**\n * Returns the data to be sent to embed to setup intercepts\n * the urls to intercept, timeout etc\n * @param viewConfig\n * @returns\n */\nexport const getInterceptInitData = (viewConfig) => {\n    const combinedUrls = [...(viewConfig.interceptUrls || [])];\n    if (viewConfig.isOnBeforeGetVizDataInterceptEnabled) {\n        combinedUrls.push(InterceptedApiType.AnswerData);\n    }\n    const shouldInterceptAll = combinedUrls.includes(InterceptedApiType.ALL);\n    const interceptUrls = shouldInterceptAll ? [InterceptedApiType.ALL] : processInterceptUrls(combinedUrls);\n    const interceptTimeout = viewConfig.interceptTimeout;\n    return {\n        interceptUrls,\n        interceptTimeout,\n    };\n};\nconst parseJson = (jsonString) => {\n    try {\n        const json = JSON.parse(jsonString);\n        return [json, null];\n    }\n    catch (error) {\n        return [null, error];\n    }\n};\n/**\n * Parse the api intercept data and return the parsed data and error if any\n * Embed returns the input and init from the fetch call\n */\nconst parseInterceptData = (eventDataString) => {\n    try {\n        const [parsedData, error] = parseJson(eventDataString);\n        if (error) {\n            return [null, error];\n        }\n        const { input, init } = parsedData;\n        const [parsedBody, bodyParseError] = parseJson(init.body);\n        if (!bodyParseError) {\n            init.body = parsedBody;\n        }\n        const parsedInit = { input, init };\n        return [parsedInit, null];\n    }\n    catch (error) {\n        return [null, error];\n    }\n};\nconst getUrlType = (url) => {\n    for (const [apiType, apiTypeUrls] of Object.entries(DefaultInterceptUrlsMap)) {\n        if (apiTypeUrls.includes(url))\n            return apiType;\n    }\n    // TODO: have a unknown type maybe ??\n    return InterceptedApiType.ALL;\n};\n/**\n * Handle Api intercept event and simulate legacy onBeforeGetVizDataIntercept event\n *\n * embed sends -> ApiIntercept -> we send\n *  ApiIntercept\n *  OnBeforeGetVizDataIntercept (if url is part of DefaultUrlMap.AnswerData)\n *\n * @param params\n * @returns\n */\nexport const handleInterceptEvent = async (params) => {\n    var _a, _b, _c, _d, _e;\n    const { eventData, executeEvent, viewConfig, getUnsavedAnswerTml } = params;\n    const [interceptData, bodyParseError] = parseInterceptData(eventData.data);\n    if (bodyParseError) {\n        const errorDetails = {\n            errorType: ErrorDetailsTypes.API,\n            message: ERROR_MESSAGE.ERROR_PARSING_API_INTERCEPT_BODY,\n            code: EmbedErrorCodes.PARSING_API_INTERCEPT_BODY_ERROR,\n            error: ERROR_MESSAGE.ERROR_PARSING_API_INTERCEPT_BODY,\n        };\n        executeEvent(EmbedEvent.Error, errorDetails);\n        logger.error('Error parsing request body', bodyParseError);\n        return;\n    }\n    const { input: requestUrl, init } = interceptData;\n    const sessionId = (_c = (_b = (_a = init === null || init === void 0 ? void 0 : init.body) === null || _a === void 0 ? void 0 : _a.variables) === null || _b === void 0 ? void 0 : _b.session) === null || _c === void 0 ? void 0 : _c.sessionId;\n    const vizId = (_e = (_d = init === null || init === void 0 ? void 0 : init.body) === null || _d === void 0 ? void 0 : _d.variables) === null || _e === void 0 ? void 0 : _e.contextBookId;\n    const answerDataUrls = DefaultInterceptUrlsMap[InterceptedApiType.AnswerData];\n    const legacyInterceptEnabled = viewConfig.isOnBeforeGetVizDataInterceptEnabled;\n    const isAnswerDataUrl = answerDataUrls.includes(requestUrl);\n    const sendLegacyIntercept = isAnswerDataUrl && legacyInterceptEnabled;\n    if (sendLegacyIntercept) {\n        const answerTml = await getUnsavedAnswerTml({ sessionId, vizId });\n        // Build the legacy payload for backwards compatibility\n        const legacyPayload = {\n            data: {\n                data: answerTml,\n                status: embedEventStatus.END,\n                type: EmbedEvent.OnBeforeGetVizDataIntercept\n            }\n        };\n        executeEvent(EmbedEvent.OnBeforeGetVizDataIntercept, legacyPayload);\n    }\n    const urlType = getUrlType(requestUrl);\n    executeEvent(EmbedEvent.ApiIntercept, { ...interceptData, urlType });\n};\n/**\n * Support both the legacy and new format of the api intercept response\n * @param payload\n * @returns\n */\nexport const processApiInterceptResponse = (payload) => {\n    var _a;\n    const isLegacyFormat = (_a = payload === null || payload === void 0 ? void 0 : payload.data) === null || _a === void 0 ? void 0 : _a.error;\n    if (isLegacyFormat) {\n        return processLegacyInterceptResponse(payload);\n    }\n    return payload;\n};\nexport const processLegacyInterceptResponse = (payload) => {\n    var _a, _b, _c, _d, _e;\n    const errorText = (_b = (_a = payload === null || payload === void 0 ? void 0 : payload.data) === null || _a === void 0 ? void 0 : _a.error) === null || _b === void 0 ? void 0 : _b.errorText;\n    const errorDescription = (_d = (_c = payload === null || payload === void 0 ? void 0 : payload.data) === null || _c === void 0 ? void 0 : _c.error) === null || _d === void 0 ? void 0 : _d.errorDescription;\n    const payloadToSend = {\n        execute: (_e = payload === null || payload === void 0 ? void 0 : payload.data) === null || _e === void 0 ? void 0 : _e.execute,\n        response: {\n            body: {\n                errors: [\n                    {\n                        title: errorText,\n                        description: errorDescription,\n                        isUserError: true,\n                    },\n                ],\n                data: {},\n            },\n        },\n    };\n    return { data: payloadToSend };\n};\n//# sourceMappingURL=api-intercept.js.map","/**\n * Copyright (c) 2022\n *\n * Base classes\n * @summary Base classes\n * @author Ayon Ghosh <ayon.ghosh@thoughtspot.com>\n */\nimport isEmpty from 'lodash/isEmpty';\nimport isObject from 'lodash/isObject';\nimport { UIPassthroughEvent, } from './hostEventClient/contracts';\nimport { logger } from '../utils/logger';\nimport { getAuthenticationToken } from '../authToken';\nimport { AnswerService } from '../utils/graphql/answerService/answerService';\nimport { getEncodedQueryParamsString, getCssDimension, getOffsetTop, embedEventStatus, setAttributes, getCustomisations, getRuntimeFilters, getDOMNode, getFilterQuery, getQueryParamString, getRuntimeParameters, setStyleProperties, removeStyleProperties, getHostEventsConfig, } from '../utils';\nimport { getCustomActions } from '../utils/custom-actions';\nimport { getThoughtSpotHost, URL_MAX_LENGTH, DEFAULT_EMBED_WIDTH, DEFAULT_EMBED_HEIGHT, getV2BasePath, } from '../config';\nimport { AuthType, HostEvent, EmbedEvent, Action, Param, ContextMenuTriggerOptions, ErrorDetailsTypes, EmbedErrorCodes, } from '../types';\nimport { uploadMixpanelEvent, MIXPANEL_EVENT } from '../mixpanel-service';\nimport { processEventData, processAuthFailure } from '../utils/processData';\nimport { version } from '../utils/sdk-version';\nimport { getAuthPromise, renderInQueue, handleAuth, notifyAuthFailure, getInitPromise, getIsInitCalled, getIsInitCompleted, } from './base';\nimport { AuthFailureType } from '../auth';\nimport { getEmbedConfig } from './embedConfig';\nimport { ERROR_MESSAGE } from '../errors';\nimport { getPreauthInfo } from '../utils/sessionInfoService';\nimport { HostEventClient } from './hostEventClient/host-event-client';\nimport { getInterceptInitData, handleInterceptEvent, processApiInterceptResponse, processLegacyInterceptResponse, } from '../api-intercept';\n/**\n * Global prefix for all ThoughtSpot postHash Params.\n */\nexport const THOUGHTSPOT_PARAM_PREFIX = 'ts-';\nconst TS_EMBED_ID = '_thoughtspot-embed';\n/**\n * The event id map from v2 event names to v1 event id\n * v1 events are the classic embed events implemented in Blink v1\n * We cannot rename v1 event types to maintain backward compatibility\n * @internal\n */\nconst V1EventMap = {};\n/**\n * Base class for embedding v2 experience\n * Note: the v2 version of ThoughtSpot Blink is built on the new stack:\n * React+GraphQL\n */\nexport class TsEmbed {\n    /**\n     * Setter for the iframe element\n     * @param {HTMLIFrameElement} iFrame HTMLIFrameElement\n     */\n    setIframeElement(iFrame) {\n        this.iFrame = iFrame;\n        this.hostEventClient.setIframeElement(iFrame);\n    }\n    constructor(domSelector, viewConfig) {\n        /**\n         * The key to store the embed instance in the DOM node\n         */\n        this.embedNodeKey = '__tsEmbed';\n        this.isAppInitialized = false;\n        /**\n         * Should we encode URL Query Params using base64 encoding which ThoughtSpot\n         * will generate for embedding. This provides additional security to\n         * ThoughtSpot clusters against Cross site scripting attacks.\n         * @default false\n         */\n        this.shouldEncodeUrlQueryParams = false;\n        this.defaultHiddenActions = [Action.ReportError];\n        /**\n         * Handler for fullscreen change events\n         */\n        this.fullscreenChangeHandler = null;\n        this.subscribedListeners = {};\n        this.messageEventListener = (event) => {\n            const eventType = this.getEventType(event);\n            const eventPort = this.getEventPort(event);\n            const eventData = this.formatEventData(event, eventType);\n            if (event.source === this.iFrame.contentWindow) {\n                const processedEventData = processEventData(eventType, eventData, this.thoughtSpotHost, this.isPreRendered ? this.preRenderWrapper : this.hostElement);\n                if (eventType === EmbedEvent.ApiIntercept) {\n                    this.handleApiInterceptEvent({ eventData, eventPort });\n                    return;\n                }\n                this.executeCallbacks(eventType, processedEventData, eventPort);\n            }\n        };\n        /**\n         * Send Custom style as part of payload of APP_INIT\n         * @param _\n         * @param responder\n         */\n        this.appInitCb = async (_, responder) => {\n            try {\n                const appInitData = await this.getAppInitData();\n                this.isAppInitialized = true;\n                responder({\n                    type: EmbedEvent.APP_INIT,\n                    data: appInitData,\n                });\n            }\n            catch (e) {\n                logger.error(`AppInit failed, Error : ${e === null || e === void 0 ? void 0 : e.message}`);\n            }\n        };\n        this.handleAuthFailure = (error) => {\n            logger.error(`${ERROR_MESSAGE.INVALID_TOKEN_ERROR} Error : ${error === null || error === void 0 ? void 0 : error.message}`);\n            processAuthFailure(error, this.isPreRendered ? this.preRenderWrapper : this.hostElement);\n        };\n        /**\n         * Refresh the auth token if the autoLogin is true and the authType is TrustedAuthTokenCookieless\n         * @param _\n         * @param responder\n         */\n        this.tokenRefresh = async (_, responder) => {\n            try {\n                await this.refreshAuthTokenForCookieless(responder, EmbedEvent.RefreshAuthToken, true);\n            }\n            catch (e) {\n                this.handleAuthFailure(e);\n            }\n        };\n        /**\n         * Sends updated auth token to the iFrame to avoid user logout\n         * @param _\n         * @param responder\n         */\n        this.updateAuthToken = async (_, responder) => {\n            const { authType, autoLogin: autoLoginConfig } = this.embedConfig;\n            // Default autoLogin: true for cookieless if undefined/null, otherwise\n            // false\n            const autoLogin = autoLoginConfig !== null && autoLoginConfig !== void 0 ? autoLoginConfig : authType === AuthType.TrustedAuthTokenCookieless;\n            try {\n                await this.refreshAuthTokenForCookieless(responder, EmbedEvent.AuthExpire, false);\n            }\n            catch (e) {\n                this.handleAuthFailure(e);\n            }\n            if (autoLogin && authType !== AuthType.TrustedAuthTokenCookieless) {\n                handleAuth();\n            }\n            notifyAuthFailure(AuthFailureType.EXPIRY);\n        };\n        /**\n         * Auto Login and send updated authToken to the iFrame to avoid user session logout\n         * @param _\n         * @param responder\n         */\n        this.idleSessionTimeout = (_, responder) => {\n            handleAuth()\n                .then(async () => {\n                let authToken = '';\n                try {\n                    authToken = await getAuthenticationToken(this.embedConfig);\n                    responder({\n                        type: EmbedEvent.IdleSessionTimeout,\n                        data: { authToken },\n                    });\n                }\n                catch (e) {\n                    this.handleAuthFailure(e);\n                }\n            })\n                .catch((e) => {\n                logger.error(`Auto Login failed, Error : ${e === null || e === void 0 ? void 0 : e.message}`);\n            });\n            notifyAuthFailure(AuthFailureType.IDLE_SESSION_TIMEOUT);\n        };\n        /**\n         * Register APP_INIT event and sendback init payload\n         */\n        this.registerAppInit = () => {\n            this.on(EmbedEvent.APP_INIT, this.appInitCb, { start: false }, true);\n            this.on(EmbedEvent.AuthExpire, this.updateAuthToken, { start: false }, true);\n            this.on(EmbedEvent.IdleSessionTimeout, this.idleSessionTimeout, { start: false }, true);\n            const embedListenerReadyHandler = this.createEmbedContainerHandler(EmbedEvent.EmbedListenerReady);\n            this.on(EmbedEvent.EmbedListenerReady, embedListenerReadyHandler, { start: false }, true);\n            const authInitHandler = this.createEmbedContainerHandler(EmbedEvent.AuthInit);\n            this.on(EmbedEvent.AuthInit, authInitHandler, { start: false }, true);\n            this.on(EmbedEvent.RefreshAuthToken, this.tokenRefresh, { start: false }, true);\n        };\n        this.showPreRenderByDefault = false;\n        /**\n         * We can process the customer given payload before sending it to the embed port\n         * Embed event handler -> responder -> createEmbedEventResponder -> send response\n         * @param eventPort The event port for a specific MessageChannel\n         * @param eventType The event type\n         * @returns\n         */\n        this.createEmbedEventResponder = (eventPort, eventType) => {\n            const getPayloadToSend = (payload) => {\n                if (eventType === EmbedEvent.OnBeforeGetVizDataIntercept) {\n                    return processLegacyInterceptResponse(payload);\n                }\n                if (eventType === EmbedEvent.ApiIntercept) {\n                    return processApiInterceptResponse(payload);\n                }\n                return payload;\n            };\n            return (payload) => {\n                const payloadToSend = getPayloadToSend(payload);\n                this.triggerEventOnPort(eventPort, payloadToSend);\n            };\n        };\n        /**\n         * @hidden\n         * Internal state to track if the embed container is loaded.\n         * This is used to trigger events after the embed container is loaded.\n         */\n        this.isEmbedContainerLoaded = false;\n        /**\n         * @hidden\n         * Internal state to track the callbacks to be executed after the embed container\n         * is loaded.\n         * This is used to trigger events after the embed container is loaded.\n         */\n        this.embedContainerReadyCallbacks = [];\n        this.createEmbedContainerHandler = (source) => () => {\n            const processEmbedContainerReady = () => {\n                logger.debug('processEmbedContainerReady');\n                this.isEmbedContainerLoaded = true;\n                this.executeEmbedContainerReadyCallbacks();\n            };\n            if (source === EmbedEvent.AuthInit) {\n                const AUTH_INIT_FALLBACK_DELAY = 1000;\n                // Wait for 1 second to ensure the embed container is loaded\n                // This is a workaround to ensure the embed container is loaded\n                // this is needed until all clusters have EmbedListenerReady event\n                setTimeout(processEmbedContainerReady, AUTH_INIT_FALLBACK_DELAY);\n            }\n            else if (source === EmbedEvent.EmbedListenerReady) {\n                processEmbedContainerReady();\n            }\n        };\n        this.hostElement = getDOMNode(domSelector);\n        this.eventHandlerMap = new Map();\n        this.isError = false;\n        this.viewConfig = {\n            excludeRuntimeFiltersfromURL: true,\n            excludeRuntimeParametersfromURL: true,\n            ...viewConfig,\n        };\n        this.registerAppInit();\n        uploadMixpanelEvent(MIXPANEL_EVENT.VISUAL_SDK_EMBED_CREATE, {\n            ...viewConfig,\n        });\n        const embedConfig = getEmbedConfig();\n        if (embedConfig) {\n            this.embedConfig = embedConfig;\n            this.thoughtSpotHost = getThoughtSpotHost(embedConfig);\n            this.thoughtSpotV2Base = getV2BasePath(embedConfig);\n        }\n        this.hostEventClient = new HostEventClient(this.iFrame);\n        this.shouldWaitForRenderPromise = !getIsInitCompleted();\n        const afterInit = () => {\n            // Prefer the config captured at construction time; fall back to\n            // getEmbedConfig() for the case where init()\n            // hadn't been called yet.\n            this.embedConfig = embedConfig !== null && embedConfig !== void 0 ? embedConfig : getEmbedConfig();\n            if (!this.embedConfig) {\n                logger.error('embedConfig unavailable in afterInit; init() may not have completed');\n                return;\n            }\n            if (!this.embedConfig.authTriggerContainer && !this.embedConfig.useEventForSAMLPopup) {\n                this.embedConfig.authTriggerContainer = domSelector;\n            }\n            this.thoughtSpotHost = getThoughtSpotHost(this.embedConfig);\n            this.thoughtSpotV2Base = getV2BasePath(this.embedConfig);\n            this.shouldEncodeUrlQueryParams = this.embedConfig.shouldEncodeUrlQueryParams;\n        };\n        if (!this.shouldWaitForRenderPromise) {\n            afterInit();\n        }\n        else {\n            this.isReadyForRenderPromise = getInitPromise()\n                .then(afterInit)\n                .catch((err) => {\n                logger.error('SDK init failed before embed could be configured', err);\n                this.throwInitError();\n            })\n                .finally(() => {\n                this.shouldWaitForRenderPromise = false;\n            });\n        }\n    }\n    /**\n     * Throws error encountered during initialization.\n     */\n    throwInitError() {\n        this.handleError({\n            errorType: ErrorDetailsTypes.VALIDATION_ERROR,\n            message: ERROR_MESSAGE.INIT_SDK_REQUIRED,\n            code: EmbedErrorCodes.INIT_ERROR,\n            error: ERROR_MESSAGE.INIT_SDK_REQUIRED,\n        });\n    }\n    /**\n     * Handles errors within the SDK\n     * @param error The error message or object\n     * @param errorDetails The error details\n     */\n    handleError(errorDetails) {\n        this.isError = true;\n        this.executeCallbacks(EmbedEvent.Error, errorDetails);\n        // Log error\n        logger.error(errorDetails);\n    }\n    /**\n     * Extracts the type field from the event payload\n     * @param event The window message event\n     */\n    getEventType(event) {\n        var _a, _b;\n        return ((_a = event.data) === null || _a === void 0 ? void 0 : _a.type) || ((_b = event.data) === null || _b === void 0 ? void 0 : _b.__type);\n    }\n    /**\n     * Extracts the port field from the event payload\n     * @param event  The window message event\n     * @returns\n     */\n    getEventPort(event) {\n        if (event.ports.length && event.ports[0]) {\n            return event.ports[0];\n        }\n        return null;\n    }\n    /**\n     * Checks if preauth cache is enabled\n     * from the view config and embed config\n     * @returns boolean\n     */\n    isPreAuthCacheEnabled() {\n        // Disable preauth cache when:\n        // 1. overrideOrgId is present since:\n        //    - cached auth info would be for wrong org\n        //    - info call response changes for each different overrideOrgId\n        // 2. disablePreauthCache is explicitly set to true\n        // 3. FullAppEmbed has primary navbar visible since:\n        //    - primary navbar requires fresh auth state for navigation\n        //    - cached auth may not reflect current user permissions\n        const isDisabled = this.viewConfig.overrideOrgId !== undefined ||\n            this.embedConfig.disablePreauthCache === true ||\n            this.isFullAppEmbedWithVisiblePrimaryNavbar();\n        return !isDisabled;\n    }\n    /**\n     * Checks if current embed is FullAppEmbed with visible primary navbar\n     * @returns boolean\n     */\n    isFullAppEmbedWithVisiblePrimaryNavbar() {\n        const appViewConfig = this.viewConfig;\n        // Check if this is a FullAppEmbed (AppEmbed)\n        // showPrimaryNavbar defaults to true if not explicitly set to false\n        return (appViewConfig.embedComponentType === 'AppEmbed' &&\n            appViewConfig.showPrimaryNavbar === true);\n    }\n    /**\n     * fix for ts7.sep.cl\n     * will be removed for ts7.oct.cl\n     * @param event\n     * @param eventType\n     * @hidden\n     */\n    formatEventData(event, eventType) {\n        const eventData = {\n            ...event.data,\n            type: eventType,\n        };\n        if (!eventData.data) {\n            eventData.data = event.data.payload;\n        }\n        return eventData;\n    }\n    /**\n     * Subscribe to network events (online/offline) that should\n     * work regardless of auth status\n     */\n    subscribeToNetworkEvents() {\n        this.unsubscribeToNetworkEvents();\n        const onlineEventListener = (e) => {\n            this.trigger(HostEvent.Reload);\n        };\n        window.addEventListener('online', onlineEventListener);\n        const offlineEventListener = (e) => {\n            const errorDetails = {\n                errorType: ErrorDetailsTypes.NETWORK,\n                message: ERROR_MESSAGE.OFFLINE_WARNING,\n                code: EmbedErrorCodes.NETWORK_ERROR,\n                offlineWarning: ERROR_MESSAGE.OFFLINE_WARNING,\n            };\n            this.executeCallbacks(EmbedEvent.Error, errorDetails);\n            logger.warn(errorDetails);\n        };\n        window.addEventListener('offline', offlineEventListener);\n        this.subscribedListeners.online = onlineEventListener;\n        this.subscribedListeners.offline = offlineEventListener;\n    }\n    handleApiInterceptEvent({ eventData, eventPort, }) {\n        const executeEvent = (_eventType, data) => {\n            this.executeCallbacks(_eventType, data, eventPort);\n        };\n        const getUnsavedAnswerTml = async (props) => {\n            var _a, _b;\n            const response = await this.triggerUIPassThrough(UIPassthroughEvent.GetUnsavedAnswerTML, props);\n            return (_b = (_a = response.filter((item) => item.value)) === null || _a === void 0 ? void 0 : _a[0]) === null || _b === void 0 ? void 0 : _b.value;\n        };\n        handleInterceptEvent({\n            eventData,\n            executeEvent,\n            viewConfig: this.viewConfig,\n            getUnsavedAnswerTml,\n        });\n    }\n    /**\n     * Subscribe to message events that depend on successful iframe setup\n     */\n    subscribeToMessageEvents() {\n        this.unsubscribeToMessageEvents();\n        window.addEventListener('message', this.messageEventListener);\n        this.subscribedListeners.message = this.messageEventListener;\n    }\n    /**\n     * Adds event listeners for both network and message events.\n     * This maintains backward compatibility with the existing method.\n     * Adds a global event listener to window for \"message\" events.\n     * ThoughtSpot detects if a particular event is targeted to this\n     * embed instance through an identifier contained in the payload,\n     * and executes the registered callbacks accordingly.\n     */\n    subscribeToEvents() {\n        this.subscribeToNetworkEvents();\n        this.subscribeToMessageEvents();\n    }\n    unsubscribeToNetworkEvents() {\n        if (this.subscribedListeners.online) {\n            window.removeEventListener('online', this.subscribedListeners.online);\n            delete this.subscribedListeners.online;\n        }\n        if (this.subscribedListeners.offline) {\n            window.removeEventListener('offline', this.subscribedListeners.offline);\n            delete this.subscribedListeners.offline;\n        }\n    }\n    unsubscribeToMessageEvents() {\n        if (this.subscribedListeners.message) {\n            window.removeEventListener('message', this.subscribedListeners.message);\n            delete this.subscribedListeners.message;\n        }\n    }\n    unsubscribeToEvents() {\n        Object.keys(this.subscribedListeners).forEach((key) => {\n            window.removeEventListener(key, this.subscribedListeners[key]);\n        });\n    }\n    async getAuthTokenForCookielessInit() {\n        let authToken = '';\n        if (this.embedConfig.authType !== AuthType.TrustedAuthTokenCookieless)\n            return authToken;\n        try {\n            authToken = await getAuthenticationToken(this.embedConfig);\n        }\n        catch (e) {\n            processAuthFailure(e, this.isPreRendered ? this.preRenderWrapper : this.hostElement);\n            throw e;\n        }\n        return authToken;\n    }\n    async getDefaultAppInitData() {\n        var _a, _b, _c;\n        const authToken = await this.getAuthTokenForCookielessInit();\n        const customActionsResult = getCustomActions([\n            ...(this.viewConfig.customActions || []),\n            ...(this.embedConfig.customActions || []),\n        ]);\n        if (customActionsResult.errors.length > 0) {\n            this.handleError({\n                errorType: ErrorDetailsTypes.VALIDATION_ERROR,\n                message: customActionsResult.errors,\n                code: EmbedErrorCodes.CUSTOM_ACTION_VALIDATION,\n                error: {\n                    type: EmbedErrorCodes.CUSTOM_ACTION_VALIDATION,\n                    message: customActionsResult.errors,\n                },\n            });\n        }\n        const baseInitData = {\n            customisations: getCustomisations(this.embedConfig, this.viewConfig),\n            authToken,\n            runtimeFilterParams: this.viewConfig.excludeRuntimeFiltersfromURL\n                ? getRuntimeFilters(this.viewConfig.runtimeFilters)\n                : null,\n            runtimeParameterParams: this.viewConfig.excludeRuntimeParametersfromURL\n                ? getRuntimeParameters(this.viewConfig.runtimeParameters || [])\n                : null,\n            hiddenHomepageModules: this.viewConfig.hiddenHomepageModules || [],\n            reorderedHomepageModules: this.viewConfig.reorderedHomepageModules || [],\n            hostConfig: this.embedConfig.hostConfig,\n            hiddenHomeLeftNavItems: ((_a = this.viewConfig) === null || _a === void 0 ? void 0 : _a.hiddenHomeLeftNavItems)\n                ? (_b = this.viewConfig) === null || _b === void 0 ? void 0 : _b.hiddenHomeLeftNavItems\n                : [],\n            customVariablesForThirdPartyTools: this.embedConfig.customVariablesForThirdPartyTools || {},\n            hiddenListColumns: this.viewConfig.hiddenListColumns || [],\n            customActions: customActionsResult.actions,\n            embedExpiryInAuthToken: (_c = this.viewConfig.refreshAuthTokenOnNearExpiry) !== null && _c !== void 0 ? _c : true,\n            ...getInterceptInitData(this.viewConfig),\n            ...getHostEventsConfig(this.viewConfig),\n        };\n        return baseInitData;\n    }\n    async getAppInitData() {\n        return this.getDefaultAppInitData();\n    }\n    /**\n     * Helper method to refresh/update auth token for TrustedAuthTokenCookieless auth type\n     * @param responder - Function to send response back\n     * @param eventType - The embed event type to send\n     * @param forceRefresh - Whether to force refresh the token\n     * @returns Promise that resolves if token was refreshed, rejects otherwise\n     */\n    async refreshAuthTokenForCookieless(responder, eventType, forceRefresh = false) {\n        const { authType, autoLogin } = this.embedConfig;\n        const isAutoLoginTrue = autoLogin !== null && autoLogin !== void 0 ? autoLogin : authType === AuthType.TrustedAuthTokenCookieless;\n        if (isAutoLoginTrue && authType === AuthType.TrustedAuthTokenCookieless) {\n            const authToken = await getAuthenticationToken(this.embedConfig, forceRefresh);\n            responder({\n                type: eventType,\n                data: { authToken },\n            });\n        }\n    }\n    /**\n     * Constructs the base URL string to load the ThoughtSpot app.\n     * @param query\n     */\n    getEmbedBasePath(query) {\n        let queryString = query.startsWith('?') ? query : `?${query}`;\n        if (this.shouldEncodeUrlQueryParams) {\n            queryString = `?base64UrlEncodedFlags=${getEncodedQueryParamsString(queryString.substr(1))}`;\n        }\n        const basePath = [this.thoughtSpotHost, this.thoughtSpotV2Base, queryString]\n            .filter((x) => x.length > 0)\n            .join('/');\n        return `${basePath}#`;\n    }\n    async getUpdateEmbedParamsObject() {\n        let queryParams = this.getEmbedParamsObject();\n        const appInitData = await this.getAppInitData();\n        queryParams = { ...this.viewConfig, ...queryParams, ...appInitData };\n        return queryParams;\n    }\n    /**\n     * Common query params set for all the embed modes.\n     * @param queryParams\n     * @returns queryParams\n     */\n    getBaseQueryParams(queryParams = {}) {\n        var _a, _b, _c, _d;\n        let hostAppUrl = ((_a = window === null || window === void 0 ? void 0 : window.location) === null || _a === void 0 ? void 0 : _a.host) || '';\n        // The below check is needed because TS Cloud firewall, blocks\n        // localhost/127.0.0.1 in any url param.\n        if (hostAppUrl.includes('localhost') || hostAppUrl.includes('127.0.0.1')) {\n            hostAppUrl = 'local-host';\n        }\n        const blockNonEmbedFullAppAccess = (_b = this.embedConfig.blockNonEmbedFullAppAccess) !== null && _b !== void 0 ? _b : true;\n        queryParams[Param.EmbedApp] = true;\n        queryParams[Param.HostAppUrl] = encodeURIComponent(hostAppUrl);\n        queryParams[Param.ViewPortHeight] = window.innerHeight;\n        queryParams[Param.ViewPortWidth] = window.innerWidth;\n        queryParams[Param.Version] = version;\n        queryParams[Param.AuthType] = this.embedConfig.authType;\n        queryParams[Param.blockNonEmbedFullAppAccess] = blockNonEmbedFullAppAccess;\n        queryParams[Param.AutoLogin] = this.embedConfig.autoLogin;\n        if (this.embedConfig.disableLoginRedirect === true || this.embedConfig.autoLogin === true) {\n            queryParams[Param.DisableLoginRedirect] = true;\n        }\n        if (this.embedConfig.authType === AuthType.EmbeddedSSO) {\n            queryParams[Param.ForceSAMLAutoRedirect] = true;\n        }\n        if (this.embedConfig.authType === AuthType.TrustedAuthTokenCookieless) {\n            queryParams[Param.cookieless] = true;\n        }\n        if (this.embedConfig.pendoTrackingKey) {\n            queryParams[Param.PendoTrackingKey] = this.embedConfig.pendoTrackingKey;\n        }\n        if (this.embedConfig.numberFormatLocale) {\n            queryParams[Param.NumberFormatLocale] = this.embedConfig.numberFormatLocale;\n        }\n        if (this.embedConfig.dateFormatLocale) {\n            queryParams[Param.DateFormatLocale] = this.embedConfig.dateFormatLocale;\n        }\n        if (this.embedConfig.currencyFormat) {\n            queryParams[Param.CurrencyFormat] = this.embedConfig.currencyFormat;\n        }\n        const { disabledActions, disabledActionReason, hiddenActions, visibleActions, hiddenTabs, visibleTabs, showAlerts, additionalFlags: additionalFlagsFromView, locale, customizations, contextMenuTrigger, linkOverride, enableLinkOverridesV2, insertInToSlide, disableRedirectionLinksInNewTab, overrideOrgId, exposeTranslationIDs, primaryAction, } = this.viewConfig;\n        const { additionalFlags: additionalFlagsFromInit } = this.embedConfig;\n        const additionalFlags = {\n            ...additionalFlagsFromInit,\n            ...additionalFlagsFromView,\n        };\n        if (Array.isArray(visibleActions) && Array.isArray(hiddenActions)) {\n            this.handleError({\n                errorType: ErrorDetailsTypes.VALIDATION_ERROR,\n                message: ERROR_MESSAGE.CONFLICTING_ACTIONS_CONFIG,\n                code: EmbedErrorCodes.CONFLICTING_ACTIONS_CONFIG,\n                error: ERROR_MESSAGE.CONFLICTING_ACTIONS_CONFIG,\n            });\n            return queryParams;\n        }\n        if (Array.isArray(visibleTabs) && Array.isArray(hiddenTabs)) {\n            this.handleError({\n                errorType: ErrorDetailsTypes.VALIDATION_ERROR,\n                message: ERROR_MESSAGE.CONFLICTING_TABS_CONFIG,\n                code: EmbedErrorCodes.CONFLICTING_TABS_CONFIG,\n                error: ERROR_MESSAGE.CONFLICTING_TABS_CONFIG,\n            });\n            return queryParams;\n        }\n        if (primaryAction) {\n            queryParams[Param.PrimaryAction] = primaryAction;\n        }\n        if (disabledActions === null || disabledActions === void 0 ? void 0 : disabledActions.length) {\n            queryParams[Param.DisableActions] = disabledActions;\n        }\n        if (disabledActionReason) {\n            queryParams[Param.DisableActionReason] = disabledActionReason;\n        }\n        if (exposeTranslationIDs) {\n            queryParams[Param.ExposeTranslationIDs] = exposeTranslationIDs;\n        }\n        queryParams[Param.HideActions] = [...this.defaultHiddenActions, ...(hiddenActions !== null && hiddenActions !== void 0 ? hiddenActions : [])];\n        if (Array.isArray(visibleActions)) {\n            queryParams[Param.VisibleActions] = visibleActions;\n        }\n        if (Array.isArray(hiddenTabs)) {\n            queryParams[Param.HiddenTabs] = hiddenTabs;\n        }\n        if (Array.isArray(visibleTabs)) {\n            queryParams[Param.VisibleTabs] = visibleTabs;\n        }\n        /**\n         * Default behavior for context menu will be left-click\n         *  from version 9.2.0.cl the user have an option to override context\n         *  menu click\n         */\n        if (contextMenuTrigger === ContextMenuTriggerOptions.LEFT_CLICK) {\n            queryParams[Param.ContextMenuTrigger] = 'left';\n        }\n        else if (contextMenuTrigger === ContextMenuTriggerOptions.RIGHT_CLICK) {\n            queryParams[Param.ContextMenuTrigger] = 'right';\n        }\n        else if (contextMenuTrigger === ContextMenuTriggerOptions.BOTH_CLICKS) {\n            queryParams[Param.ContextMenuTrigger] = 'both';\n        }\n        const embedCustomizations = this.embedConfig.customizations;\n        const spriteUrl = (customizations === null || customizations === void 0 ? void 0 : customizations.iconSpriteUrl) || (embedCustomizations === null || embedCustomizations === void 0 ? void 0 : embedCustomizations.iconSpriteUrl);\n        if (spriteUrl) {\n            queryParams[Param.IconSpriteUrl] = spriteUrl.replace('https://', '');\n        }\n        const stringIDsUrl = ((_c = customizations === null || customizations === void 0 ? void 0 : customizations.content) === null || _c === void 0 ? void 0 : _c.stringIDsUrl) || ((_d = embedCustomizations === null || embedCustomizations === void 0 ? void 0 : embedCustomizations.content) === null || _d === void 0 ? void 0 : _d.stringIDsUrl);\n        if (stringIDsUrl) {\n            queryParams[Param.StringIDsUrl] = stringIDsUrl;\n        }\n        if (showAlerts !== undefined) {\n            queryParams[Param.ShowAlerts] = showAlerts;\n        }\n        if (locale !== undefined) {\n            queryParams[Param.Locale] = locale;\n        }\n        if (!disableRedirectionLinksInNewTab && (enableLinkOverridesV2 || linkOverride)) {\n            queryParams[Param.EnableLinkOverridesV2] = true;\n            queryParams[Param.LinkOverride] = true;\n        }\n        if (insertInToSlide) {\n            queryParams[Param.ShowInsertToSlide] = insertInToSlide;\n        }\n        if (disableRedirectionLinksInNewTab) {\n            queryParams[Param.DisableRedirectionLinksInNewTab] = disableRedirectionLinksInNewTab;\n        }\n        if (overrideOrgId !== undefined) {\n            queryParams[Param.OverrideOrgId] = overrideOrgId;\n        }\n        if (this.isPreAuthCacheEnabled()) {\n            queryParams[Param.preAuthCache] = true;\n        }\n        queryParams[Param.OverrideNativeConsole] = true;\n        queryParams[Param.ClientLogLevel] = this.embedConfig.logLevel;\n        if (isObject(additionalFlags) && !isEmpty(additionalFlags)) {\n            Object.assign(queryParams, additionalFlags);\n        }\n        // Do not add any flags below this, as we want additional flags to\n        // override other flags\n        return queryParams;\n    }\n    /**\n     * Constructs the base URL string to load v1 of the ThoughtSpot app.\n     * This is used for embedding Liveboards, visualizations, and full application.\n     * @param queryString The query string to append to the URL.\n     * @param isAppEmbed A Boolean parameter to specify if you are embedding\n     * the full application.\n     */\n    getV1EmbedBasePath(queryString) {\n        const queryParams = this.shouldEncodeUrlQueryParams\n            ? `?base64UrlEncodedFlags=${getEncodedQueryParamsString(queryString)}`\n            : `?${queryString}`;\n        const host = this.thoughtSpotHost;\n        const path = `${host}/${queryParams}#`;\n        return path;\n    }\n    getEmbedParams() {\n        const queryParams = this.getEmbedParamsObject();\n        return getQueryParamString(queryParams);\n    }\n    getEmbedParamsObject() {\n        const params = this.getBaseQueryParams();\n        return params;\n    }\n    getRootIframeSrc() {\n        const query = this.getEmbedParams();\n        return this.getEmbedBasePath(query);\n    }\n    createIframeEl(frameSrc) {\n        const iFrame = document.createElement('iframe');\n        iFrame.src = frameSrc;\n        iFrame.id = TS_EMBED_ID;\n        iFrame.setAttribute('data-ts-iframe', 'true');\n        // according to screenfull.js documentation\n        // allowFullscreen, webkitallowfullscreen and mozallowfullscreen must be\n        // true\n        iFrame.allowFullscreen = true;\n        // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n        // @ts-ignore\n        iFrame.webkitallowfullscreen = true;\n        // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n        // @ts-ignore\n        iFrame.mozallowfullscreen = true;\n        // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n        // @ts-ignore\n        iFrame.allow = 'clipboard-read; clipboard-write; fullscreen; local-network-access;';\n        const frameParams = this.viewConfig.frameParams;\n        const { height: frameHeight, width: frameWidth, ...restParams } = frameParams || {};\n        const width = getCssDimension(frameWidth || DEFAULT_EMBED_WIDTH);\n        const height = getCssDimension(frameHeight || DEFAULT_EMBED_HEIGHT);\n        setAttributes(iFrame, restParams);\n        iFrame.style.width = `${width}`;\n        iFrame.style.height = `${height}`;\n        // Set minimum height to the frame so that,\n        // scaling down on the fullheight doesn't make it too small.\n        iFrame.style.minHeight = `${height}`;\n        iFrame.style.border = '0';\n        iFrame.name = 'ThoughtSpot Embedded Analytics';\n        return iFrame;\n    }\n    /**\n     * Returns true if this embed instance is configured for pre-rendering.\n     */\n    isPreRenderEmbed() {\n        return !!this.viewConfig.preRenderId;\n    }\n    handleInsertionIntoDOM(child) {\n        if (this.isPreRenderEmbed()) {\n            this.insertIntoDOMForPreRender(child);\n        }\n        else {\n            this.insertIntoDOM(child);\n        }\n        if (this.insertedDomEl instanceof Node) {\n            this.insertedDomEl[this.embedNodeKey] = this;\n        }\n        if (this.preRenderWrapper) {\n            this.preRenderWrapper[this.embedNodeKey] = this;\n        }\n    }\n    /**\n     * Renders the embedded ThoughtSpot app in an iframe and sets up\n     * event listeners.\n     * @param url - The URL of the embedded ThoughtSpot app.\n     */\n    async renderIFrame(url) {\n        if (this.isError) {\n            return null;\n        }\n        if (!this.thoughtSpotHost) {\n            this.throwInitError();\n        }\n        if (url.length > URL_MAX_LENGTH) {\n            // warn: The URL is too long\n        }\n        return renderInQueue((nextInQueue) => {\n            var _a;\n            const initTimestamp = Date.now();\n            this.executeCallbacks(EmbedEvent.Init, {\n                data: {\n                    timestamp: initTimestamp,\n                },\n                type: EmbedEvent.Init,\n            });\n            uploadMixpanelEvent(MIXPANEL_EVENT.VISUAL_SDK_RENDER_START);\n            // Always subscribe to network events, regardless of auth status\n            this.subscribeToNetworkEvents();\n            return (_a = getAuthPromise()) === null || _a === void 0 ? void 0 : _a.then((isLoggedIn) => {\n                if (!isLoggedIn) {\n                    this.handleInsertionIntoDOM(this.embedConfig.loginFailedMessage);\n                    return;\n                }\n                this.setIframeElement(this.iFrame || this.createIframeEl(url));\n                this.iFrame.addEventListener('load', () => {\n                    nextInQueue();\n                    const loadTimestamp = Date.now();\n                    this.executeCallbacks(EmbedEvent.Load, {\n                        data: {\n                            timestamp: loadTimestamp,\n                        },\n                        type: EmbedEvent.Load,\n                    });\n                    uploadMixpanelEvent(MIXPANEL_EVENT.VISUAL_SDK_RENDER_COMPLETE, {\n                        elWidth: this.iFrame.clientWidth,\n                        elHeight: this.iFrame.clientHeight,\n                        timeTookToLoad: loadTimestamp - initTimestamp,\n                    });\n                    // Send info event  if preauth cache is enabled\n                    if (this.isPreAuthCacheEnabled()) {\n                        getPreauthInfo().then((data) => {\n                            if (data === null || data === void 0 ? void 0 : data.info) {\n                                this.trigger(HostEvent.InfoSuccess, data);\n                            }\n                        });\n                    }\n                    // Setup fullscreen change handler after iframe is\n                    // loaded and ready\n                    this.setupFullscreenChangeHandler();\n                });\n                this.iFrame.addEventListener('error', () => {\n                    nextInQueue();\n                });\n                this.handleInsertionIntoDOM(this.iFrame);\n                const prefetchIframe = document.querySelectorAll('.prefetchIframe');\n                if (prefetchIframe.length) {\n                    prefetchIframe.forEach((el) => {\n                        el.remove();\n                    });\n                }\n                // Subscribe to message events only after successful\n                // auth and iframe setup\n                this.subscribeToMessageEvents();\n            }).catch((error) => {\n                nextInQueue();\n                uploadMixpanelEvent(MIXPANEL_EVENT.VISUAL_SDK_RENDER_FAILED, {\n                    error: JSON.stringify(error),\n                });\n                this.handleInsertionIntoDOM(this.embedConfig.loginFailedMessage);\n                this.handleError({\n                    errorType: ErrorDetailsTypes.API,\n                    message: error.message || ERROR_MESSAGE.LOGIN_FAILED,\n                    code: EmbedErrorCodes.LOGIN_FAILED,\n                    error: error,\n                });\n            });\n        });\n    }\n    createPreRenderWrapper() {\n        var _a;\n        const preRenderIds = this.getPreRenderIds();\n        (_a = document.getElementById(preRenderIds.wrapper)) === null || _a === void 0 ? void 0 : _a.remove();\n        const preRenderWrapper = document.createElement('div');\n        preRenderWrapper.id = preRenderIds.wrapper;\n        const initialPreRenderWrapperStyle = {\n            position: 'absolute',\n            top: '0',\n            left: '0',\n            width: '100vw',\n            height: '100vh',\n        };\n        setStyleProperties(preRenderWrapper, initialPreRenderWrapperStyle);\n        return preRenderWrapper;\n    }\n    /**\n     * Checks for an existing pre-rendered component and connects to it.\n     *\n     * If a matching pre-rendered component is found in the DOM, this method\n     * sets the internal properties of the embed object to reference it.\n     *\n     * @returns True if a connection was successfully established, false otherwise.\n     */\n    connectPreRendered() {\n        const preRenderIds = this.getPreRenderIds();\n        const preRenderWrapperElement = document.getElementById(preRenderIds.wrapper);\n        this.preRenderWrapper = this.preRenderWrapper || preRenderWrapperElement;\n        this.preRenderChild = this.preRenderChild || document.getElementById(preRenderIds.child);\n        if (this.preRenderWrapper && this.preRenderChild) {\n            this.isPreRendered = true;\n            if (this.preRenderChild instanceof HTMLIFrameElement) {\n                this.setIframeElement(this.preRenderChild);\n            }\n            this.isRendered = true;\n        }\n        return this.isPreRenderConnected();\n    }\n    isPreRenderConnected() {\n        return Boolean(this.preRenderWrapper && this.preRenderChild);\n    }\n    createPreRenderChild(child) {\n        var _a;\n        const preRenderIds = this.getPreRenderIds();\n        (_a = document.getElementById(preRenderIds.child)) === null || _a === void 0 ? void 0 : _a.remove();\n        if (child instanceof HTMLElement) {\n            child.id = preRenderIds.child;\n            return child;\n        }\n        const divChildNode = document.createElement('div');\n        setStyleProperties(divChildNode, { width: '100%', height: '100%' });\n        divChildNode.id = preRenderIds.child;\n        if (typeof child === 'string') {\n            divChildNode.innerHTML = child;\n        }\n        else {\n            divChildNode.appendChild(child);\n        }\n        return divChildNode;\n    }\n    /**\n     * Creates the in-flow placeholder div inserted into the host element when\n     * showPreRender() is called. The wrapper observes this element to stay\n     * aligned with the host layout.\n     */\n    createPreRenderPlaceholder() {\n        const placeholder = document.createElement('div');\n        const id = this.getPreRenderIds();\n        const { width: frameWidth, height: frameHeight } = this.viewConfig.frameParams || {};\n        const width = getCssDimension(frameWidth || DEFAULT_EMBED_WIDTH);\n        const height = getCssDimension(frameHeight || DEFAULT_EMBED_HEIGHT);\n        placeholder.style.width = width;\n        placeholder.style.height = height;\n        // we can improve this , lol\n        placeholder.id = id.placeHolder;\n        return placeholder;\n    }\n    insertIntoDOMForPreRender(child) {\n        const preRenderChild = this.createPreRenderChild(child);\n        const preRenderWrapper = this.createPreRenderWrapper();\n        preRenderWrapper.appendChild(preRenderChild);\n        this.preRenderChild = preRenderChild;\n        this.preRenderWrapper = preRenderWrapper;\n        if (preRenderChild instanceof HTMLIFrameElement) {\n            this.setIframeElement(preRenderChild);\n        }\n        if (this.iFrame) {\n            this.iFrame.style.height = '100%';\n            this.iFrame.style.width = '100%';\n        }\n        if (this.showPreRenderByDefault) {\n            this.showPreRender();\n        }\n        else {\n            this.hidePreRender();\n        }\n        document.body.appendChild(preRenderWrapper);\n    }\n    insertIntoDOM(child) {\n        var _a;\n        if (this.viewConfig.insertAsSibling) {\n            if (typeof child === 'string') {\n                const div = document.createElement('div');\n                div.innerHTML = child;\n                div.id = TS_EMBED_ID;\n                child = div;\n            }\n            if (((_a = this.hostElement.nextElementSibling) === null || _a === void 0 ? void 0 : _a.id) === TS_EMBED_ID) {\n                this.hostElement.nextElementSibling.remove();\n            }\n            this.hostElement.parentElement.insertBefore(child, this.hostElement.nextSibling);\n            this.insertedDomEl = child;\n        }\n        else if (typeof child === 'string') {\n            this.hostElement.innerHTML = child;\n            this.insertedDomEl = this.hostElement.children[0];\n        }\n        else {\n            this.hostElement.innerHTML = '';\n            this.hostElement.appendChild(child);\n            this.insertedDomEl = child;\n        }\n    }\n    /**\n     * Sets the height of the iframe\n     * @param height The height in pixels\n     */\n    setIFrameHeight(height) {\n        if (this.isPreRendered) {\n            if (this.insertedDomEl) {\n                this.insertedDomEl.style.height = getCssDimension(height);\n            }\n            else if (this.preRenderWrapper) {\n                this.preRenderWrapper.style.height = getCssDimension(height);\n            }\n        }\n        else {\n            // normal (non-preRender) mode: size the iframe directly\n            this.iFrame.style.height = getCssDimension(height);\n        }\n    }\n    shouldSkipEvent(eventType, data) {\n        var _a, _b, _c;\n        const errorType = (_a = data === null || data === void 0 ? void 0 : data.errorType) !== null && _a !== void 0 ? _a : (_b = data === null || data === void 0 ? void 0 : data.data) === null || _b === void 0 ? void 0 : _b.code;\n        if (eventType === EmbedEvent.Error &&\n            errorType === EmbedErrorCodes.HOST_EVENT_VALIDATION &&\n            (!getHostEventsConfig(this.viewConfig).useHostEventsV2 ||\n                getHostEventsConfig(this.viewConfig).shouldBypassPayloadValidation)) {\n            logger.warn(`Host Event Validation failed: ${(_c = data === null || data === void 0 ? void 0 : data.data) === null || _c === void 0 ? void 0 : _c.message}`);\n            return true;\n        }\n        return false;\n    }\n    /**\n     * Executes all registered event handlers for a particular event type\n     * @param eventType The event type\n     * @param data The payload invoked with the event handler\n     * @param eventPort The event Port for a specific MessageChannel\n     */\n    executeCallbacks(eventType, data, eventPort) {\n        if (this.shouldSkipEvent(eventType, data))\n            return;\n        const eventHandlers = this.eventHandlerMap.get(eventType) || [];\n        const allHandlers = this.eventHandlerMap.get(EmbedEvent.ALL) || [];\n        const callbacks = [...eventHandlers, ...allHandlers];\n        const dataStatus = (data === null || data === void 0 ? void 0 : data.status) || embedEventStatus.END;\n        callbacks.forEach((callbackObj) => {\n            if (\n            // When start status is true it trigger only start releated\n            // payload\n            (callbackObj.options.start && dataStatus === embedEventStatus.START) ||\n                // When start status is false it trigger only end releated\n                // payload\n                (!callbackObj.options.start && dataStatus === embedEventStatus.END)) {\n                const responder = this.createEmbedEventResponder(eventPort, eventType);\n                callbackObj.callback(data, responder);\n            }\n        });\n    }\n    /**\n     * Returns the ThoughtSpot hostname or IP address.\n     */\n    getThoughtSpotHost() {\n        return this.thoughtSpotHost;\n    }\n    /**\n     * Gets the v1 event type (if applicable) for the EmbedEvent type\n     * @param eventType The v2 event type\n     * @returns The corresponding v1 event type if one exists\n     * or else the v2 event type itself\n     */\n    getCompatibleEventType(eventType) {\n        return V1EventMap[eventType] || eventType;\n    }\n    /**\n     * Calculates the iframe center for the current visible viewPort\n     * of iframe using Scroll position of Host App, offsetTop for iframe\n     * in Host app. ViewPort height of the tab.\n     * @returns iframe Center in visible viewport,\n     *  Iframe height,\n     *  View port height.\n     */\n    getIframeCenter() {\n        const offsetTopClient = getOffsetTop(this.iFrame);\n        const scrollTopClient = window.scrollY;\n        const viewPortHeight = window.innerHeight;\n        const iframeHeight = this.iFrame.offsetHeight;\n        const iframeScrolled = scrollTopClient - offsetTopClient;\n        let iframeVisibleViewPort;\n        let iframeOffset;\n        if (iframeScrolled < 0) {\n            iframeVisibleViewPort = viewPortHeight - (offsetTopClient - scrollTopClient);\n            iframeVisibleViewPort = Math.min(iframeHeight, iframeVisibleViewPort);\n            iframeOffset = 0;\n        }\n        else {\n            iframeVisibleViewPort = Math.min(iframeHeight - iframeScrolled, viewPortHeight);\n            iframeOffset = iframeScrolled;\n        }\n        const iframeCenter = iframeOffset + iframeVisibleViewPort / 2;\n        return {\n            iframeCenter,\n            iframeScrolled,\n            iframeHeight,\n            viewPortHeight,\n            iframeVisibleViewPort,\n        };\n    }\n    /**\n     * Registers an event listener to trigger an alert when the ThoughtSpot app\n     * sends an event of a particular message type to the host application.\n     * @param messageType The message type\n     * @param callback A callback as a function\n     * @param options The message options\n     * @param isSelf\n     * @param isRegisteredBySDK\n     * @example\n     * ```js\n     * tsEmbed.on(EmbedEvent.Error, (data) => {\n     *   console.error(data);\n     * });\n     * ```\n     * @example\n     * ```js\n     * tsEmbed.on(EmbedEvent.Save, (data) => {\n     *   console.log(\"Answer save clicked\", data);\n     * }, {\n     *   start: true // This will trigger the callback on start of save\n     * });\n     * ```\n     */\n    on(messageType, callback, options = { start: false }, isRegisteredBySDK = false) {\n        uploadMixpanelEvent(`${MIXPANEL_EVENT.VISUAL_SDK_ON}-${messageType}`, {\n            isRegisteredBySDK,\n        });\n        if (this.isRendered) {\n            logger.warn('Please register event handlers before calling render');\n        }\n        const callbacks = this.eventHandlerMap.get(messageType) || [];\n        callbacks.push({ options, callback });\n        this.eventHandlerMap.set(messageType, callbacks);\n        return this;\n    }\n    /**\n     * Removes an event listener for a particular event type.\n     * @param messageType The message type\n     * @param callback The callback to remove\n     * @example\n     * ```js\n     * const errorHandler = (data) => { console.error(data); };\n     * tsEmbed.on(EmbedEvent.Error, errorHandler);\n     * tsEmbed.off(EmbedEvent.Error, errorHandler);\n     * ```\n     */\n    off(messageType, callback) {\n        const callbacks = this.eventHandlerMap.get(messageType) || [];\n        const index = callbacks.findIndex((cb) => cb.callback === callback);\n        if (index > -1) {\n            callbacks.splice(index, 1);\n        }\n        return this;\n    }\n    /**\n     * Triggers an event on specific Port registered against\n     * for the EmbedEvent\n     * @param eventType The message type\n     * @param data The payload to send\n     * @param eventPort\n     * @param payload\n     */\n    triggerEventOnPort(eventPort, payload) {\n        if (eventPort) {\n            try {\n                eventPort.postMessage({\n                    type: payload.type,\n                    data: payload.data,\n                });\n            }\n            catch (e) {\n                eventPort.postMessage({ error: e });\n                logger.log(e);\n            }\n        }\n        else {\n            logger.log('Event Port is not defined');\n        }\n    }\n    getPreRenderObj() {\n        var _a;\n        const embedObj = (_a = this.preRenderWrapper) === null || _a === void 0 ? void 0 : _a[this.embedNodeKey];\n        if (embedObj === this) {\n            logger.info('embedObj is same as this');\n        }\n        return embedObj;\n    }\n    checkEmbedContainerLoaded() {\n        if (this.isEmbedContainerLoaded)\n            return true;\n        const preRenderObj = this.getPreRenderObj();\n        if (preRenderObj && preRenderObj.isEmbedContainerLoaded) {\n            this.isEmbedContainerLoaded = true;\n        }\n        return this.isEmbedContainerLoaded;\n    }\n    executeEmbedContainerReadyCallbacks() {\n        logger.debug('executePendingEvents', this.embedContainerReadyCallbacks);\n        this.embedContainerReadyCallbacks.forEach((callback) => {\n            callback === null || callback === void 0 ? void 0 : callback();\n        });\n        this.embedContainerReadyCallbacks = [];\n    }\n    /**\n     * Executes a callback after the embed container is loaded.\n     * @param callback The callback to execute\n     */\n    executeAfterEmbedContainerLoaded(callback) {\n        if (this.checkEmbedContainerLoaded()) {\n            callback === null || callback === void 0 ? void 0 : callback();\n        }\n        else {\n            logger.debug('pushing callback to embedContainerReadyCallbacks', callback);\n            this.embedContainerReadyCallbacks.push(callback);\n        }\n    }\n    /**\n     * Triggers an event to the embedded app\n     * @param {HostEvent} messageType The event type\n     * @param {any} data The payload to send with the message\n     * @param {ContextType} context Optional context type to specify the context from which the event is triggered.\n     * Use ContextType.Search for search answer context, ContextType.Answer for answer/explore context,\n     * ContextType.Liveboard for liveboard context, or ContextType.Spotter for spotter context.\n     * Available from SDK version 1.45.2 | ThoughtSpot: 26.3.0.cl\n     * @returns A promise that resolves with the response from the embedded app\n     * @example\n     * ```js\n     * // Trigger Pin event with context (SDK: 1.45.2+)\n     * import { HostEvent, ContextType } from '@thoughtspot/visual-embed-sdk';\n     * embed.trigger(HostEvent.Pin, {\n     *   vizId: \"123\",\n     *   liveboardId: \"456\"\n     * }, ContextType.Search);\n     * ```\n     * @version SDK: 1.45.2 | ThoughtSpot: 26.3.0.cl (for context parameter)\n     */\n    async trigger(messageType, data = {}, context) {\n        uploadMixpanelEvent(`${MIXPANEL_EVENT.VISUAL_SDK_TRIGGER}-${messageType}`);\n        if (!this.isRendered) {\n            this.handleError({\n                errorType: ErrorDetailsTypes.VALIDATION_ERROR,\n                message: ERROR_MESSAGE.RENDER_BEFORE_EVENTS_REQUIRED,\n                code: EmbedErrorCodes.RENDER_NOT_CALLED,\n                error: ERROR_MESSAGE.RENDER_BEFORE_EVENTS_REQUIRED,\n            });\n            return null;\n        }\n        if (!messageType) {\n            this.handleError({\n                errorType: ErrorDetailsTypes.VALIDATION_ERROR,\n                message: ERROR_MESSAGE.HOST_EVENT_TYPE_UNDEFINED,\n                code: EmbedErrorCodes.HOST_EVENT_TYPE_UNDEFINED,\n                error: ERROR_MESSAGE.HOST_EVENT_TYPE_UNDEFINED,\n            });\n            return null;\n        }\n        // Check if iframe exists before triggering -\n        // this prevents the error when auth fails\n        if (!this.iFrame) {\n            logger.debug(`Cannot trigger ${messageType} - iframe not available (likely due to auth failure)`);\n            return null;\n        }\n        // send an empty object, this is needed for liveboard default handlers\n        return this.hostEventClient.triggerHostEvent(messageType, data, context).catch((err) => {\n            var _a;\n            if (err === null || err === void 0 ? void 0 : err.isValidationError) {\n                const errorDetails = (_a = err.embedErrorDetails) !== null && _a !== void 0 ? _a : {\n                    errorType: ErrorDetailsTypes.VALIDATION_ERROR,\n                    message: err.message || ERROR_MESSAGE.UPDATEFILTERS_INVALID_PAYLOAD,\n                    code: EmbedErrorCodes.UPDATEFILTERS_INVALID_PAYLOAD,\n                    error: err.message,\n                };\n                this.handleError(errorDetails);\n            }\n            throw err;\n        });\n    }\n    /**\n     * Triggers an event to the embedded app, skipping the UI flow.\n     * @param {UIPassthroughEvent} apiName - The name of the API to be triggered.\n     * @param {UIPassthroughRequest} parameters - The parameters to be passed to the API.\n     * @returns {Promise<UIPassthroughRequest>} - A promise that resolves with the response\n     * from the embedded app.\n     */\n    async triggerUIPassThrough(apiName, parameters) {\n        const response = this.hostEventClient.triggerUIPassthroughApi(apiName, parameters);\n        return response;\n    }\n    /**\n     * Marks the ThoughtSpot object to have been rendered\n     * Needs to be overridden by subclasses to do the actual\n     * rendering of the iframe.\n     * @param args\n     */\n    async render() {\n        if (!getIsInitCalled()) {\n            logger.error(ERROR_MESSAGE.RENDER_CALLED_BEFORE_INIT);\n        }\n        if (this.shouldWaitForRenderPromise)\n            await this.isReadyForRenderPromise;\n        this.isRendered = true;\n        return this;\n    }\n    getIframeSrc() {\n        return '';\n    }\n    handleRenderForPrerender() {\n        return this.render();\n    }\n    /**\n     * Context object for the embedded component.\n     * @returns {ContextObject} The current context object containing the page type and object ids.\n     * @example\n     * ```js\n     * const context = await embed.getCurrentContext();\n     * console.log(context);\n     *\n     * // Example output\n     * {\n     *   stack: [\n     *     {\n     *       name: 'Liveboard',\n     *       type: ContextType.Liveboard,\n     *       objectIds: {\n     *         liveboardId: '123',\n     *       },\n     *     },\n     *   ],\n     *   currentContext: {\n     *     name: 'Liveboard',\n     *     type: ContextType.Liveboard,\n     *     objectIds: {\n     *       liveboardId: '123',\n     *     },\n     *   },\n     * }\n     * ```\n     * @version SDK: 1.45.2 | ThoughtSpot: 26.3.0.cl\n     */\n    async getCurrentContext() {\n        return new Promise((resolve) => {\n            this.executeAfterEmbedContainerLoaded(async () => {\n                const context = await this.trigger(HostEvent.GetPageContext, {});\n                resolve(context);\n            });\n        });\n    }\n    /**\n     * Generates the event name for a \"Subscribed\" embed event.\n     *\n     * This helper appends the \"Subscribed\" suffix to a given host or action event,\n     * allowing you to listen for subscription lifecycle events in a consistent format.\n     *\n     * @param eventName - The host or action event to generate the subscribed event name for.\n     * @returns The formatted event name (e.g., \"Save Subscribed\").\n     *\n     * @version SDK: 1.47.2 | ThoughtSpot: 26.3.0.cl\n     */\n    subscribedEvent(eventName) {\n        return `${eventName} ${EmbedEvent.Subscribed}`;\n    }\n    /**\n     * Creates the preRender shell\n     * @param showPreRenderByDefault - Show the preRender after render, hidden by default\n     */\n    async preRender(showPreRenderByDefault = false, replaceExistingPreRender = false) {\n        if (!this.viewConfig.preRenderId) {\n            logger.error(ERROR_MESSAGE.PRERENDER_ID_MISSING);\n            return this;\n        }\n        this.isPreRendered = true;\n        this.showPreRenderByDefault = showPreRenderByDefault;\n        const isAlreadyRendered = this.connectPreRendered();\n        if (isAlreadyRendered && !replaceExistingPreRender) {\n            if (this.showPreRenderByDefault) {\n                this.showPreRender();\n            }\n            return this;\n        }\n        return this.handleRenderForPrerender();\n    }\n    /**\n     * Get the Post Url Params for THOUGHTSPOT from the current\n     * host app URL.\n     * THOUGHTSPOT URL params starts with a prefix \"ts-\"\n     * @version SDK: 1.14.0 | ThoughtSpot: 8.4.0.cl, 8.4.1-sw\n     */\n    getThoughtSpotPostUrlParams(additionalParams = {}) {\n        const urlHash = window.location.hash;\n        const queryParams = window.location.search;\n        const postHashParams = urlHash.split('?');\n        const postURLParams = postHashParams[postHashParams.length - 1];\n        const queryParamsObj = new URLSearchParams(queryParams);\n        const postURLParamsObj = new URLSearchParams(postURLParams);\n        const params = new URLSearchParams();\n        const addKeyValuePairCb = (value, key) => {\n            if (key.startsWith(THOUGHTSPOT_PARAM_PREFIX)) {\n                params.append(key, value);\n            }\n        };\n        queryParamsObj.forEach(addKeyValuePairCb);\n        postURLParamsObj.forEach(addKeyValuePairCb);\n        Object.entries(additionalParams).forEach(([k, v]) => params.append(k, v));\n        let tsParams = params.toString();\n        tsParams = tsParams ? `?${tsParams}` : '';\n        return tsParams;\n    }\n    /**\n     * Destroys the ThoughtSpot embed, and remove any nodes from the DOM.\n     * @version SDK: 1.19.1 | ThoughtSpot: *\n     */\n    destroy() {\n        var _a, _b, _c;\n        try {\n            this.removeFullscreenChangeHandler();\n            this.unsubscribeToEvents();\n            (_a = this.preRenderWrapper) === null || _a === void 0 ? void 0 : _a.remove();\n            if (!this.isRendered) {\n                return;\n            }\n            if (!getEmbedConfig().waitForCleanupOnDestroy) {\n                this.trigger(HostEvent.DestroyEmbed);\n                (_c = (_b = this.insertedDomEl) === null || _b === void 0 ? void 0 : _b.parentNode) === null || _c === void 0 ? void 0 : _c.removeChild(this.insertedDomEl);\n            }\n            else {\n                const cleanupTimeout = getEmbedConfig().cleanupTimeout;\n                Promise.race([\n                    this.trigger(HostEvent.DestroyEmbed),\n                    new Promise((resolve) => setTimeout(resolve, cleanupTimeout)),\n                ])\n                    .catch((e) => {\n                    logger.log('Error destroying TS Embed', e);\n                })\n                    .finally(() => {\n                    var _a, _b;\n                    try {\n                        (_b = (_a = this.insertedDomEl) === null || _a === void 0 ? void 0 : _a.parentNode) === null || _b === void 0 ? void 0 : _b.removeChild(this.insertedDomEl);\n                    }\n                    catch (e) {\n                        logger.log('Error removing DOM element on destroy', e);\n                    }\n                });\n            }\n        }\n        catch (e) {\n            logger.log('Error destroying TS Embed', e);\n        }\n    }\n    getUnderlyingFrameElement() {\n        return this.iFrame;\n    }\n    /**\n     * Prerenders a generic instance of the TS component.\n     * This means without the path but with the flags already applied.\n     * This is useful for prerendering the component in the background.\n     * @version SDK: 1.22.0\n     * @returns\n     */\n    async prerenderGeneric() {\n        if (!getIsInitCalled()) {\n            logger.error(ERROR_MESSAGE.RENDER_CALLED_BEFORE_INIT);\n        }\n        if (this.shouldWaitForRenderPromise)\n            await this.isReadyForRenderPromise;\n        const prerenderFrameSrc = this.getRootIframeSrc();\n        this.isRendered = true;\n        return this.renderIFrame(prerenderFrameSrc);\n    }\n    beforePrerenderVisible() {\n        // We can ignore this as its a bit expensive and the newer customers\n        // have moved on to UpdateEmbedParams supported clusters\n        // this.validatePreRenderViewConfig(this.viewConfig); removed in #517\n        logger.debug('triggering UpdateEmbedParams', this.viewConfig);\n        this.executeAfterEmbedContainerLoaded(async () => {\n            try {\n                const params = await this.getUpdateEmbedParamsObject();\n                this.trigger(HostEvent.UpdateEmbedParams, params);\n            }\n            catch (error) {\n                logger.error(ERROR_MESSAGE.UPDATE_PARAMS_FAILED, error);\n                this.handleError({\n                    errorType: ErrorDetailsTypes.API,\n                    message: (error === null || error === void 0 ? void 0 : error.message) || ERROR_MESSAGE.UPDATE_PARAMS_FAILED,\n                    code: EmbedErrorCodes.UPDATE_PARAMS_FAILED,\n                    error: (error === null || error === void 0 ? void 0 : error.message) || error,\n                });\n            }\n        });\n    }\n    /**\n     * Displays the pre-rendered component inside the host element.\n     * If the component has not been pre-rendered yet, it initiates rendering first.\n     * Inserts a placeholder element into the host and positions the pre-render\n     * wrapper to overlay it.\n     */\n    async showPreRender() {\n        var _a;\n        if (this.shouldWaitForRenderPromise)\n            await this.isReadyForRenderPromise;\n        if (!this.viewConfig.preRenderId) {\n            logger.error(ERROR_MESSAGE.PRERENDER_ID_MISSING);\n            return this;\n        }\n        if (!this.isPreRenderConnected()) {\n            // this will call showPreRender down the line\n            return this.preRender(true);\n        }\n        this.isRendered = true;\n        this.beforePrerenderVisible();\n        if (this.hostElement) {\n            this.insertedDomEl = this.createPreRenderPlaceholder();\n            if (this.viewConfig.fullHeight) {\n                // If fullHeight has already sized the wrapper, seed the placeholder\n                // with the same height so syncPreRenderStyle gets an accurate rect.\n                const existingHeight = this.preRenderWrapper.style.height;\n                if (existingHeight) {\n                    this.insertedDomEl.style.height = existingHeight;\n                }\n            }\n            const placeHolderId = this.getPreRenderIds().placeHolder;\n            const oldEle = this.hostElement.querySelector(`#${placeHolderId}`);\n            if (oldEle) {\n                this.hostElement.removeChild(oldEle);\n            }\n            this.hostElement.appendChild(this.insertedDomEl);\n            this.syncPreRenderStyle();\n            if (!this.viewConfig.doNotTrackPreRenderSize) {\n                const observeTarget = (_a = this.insertedDomEl) !== null && _a !== void 0 ? _a : this.hostElement;\n                this.resizeObserver = new ResizeObserver((entries) => {\n                    entries.forEach((entry) => {\n                        if (entry.contentRect && entry.target === observeTarget) {\n                            setStyleProperties(this.preRenderWrapper, {\n                                width: `${entry.contentRect.width}px`,\n                                height: `${entry.contentRect.height}px`,\n                            });\n                        }\n                    });\n                });\n                this.resizeObserver.observe(observeTarget);\n            }\n        }\n        removeStyleProperties(this.preRenderWrapper, [\n            'z-index',\n            'opacity',\n            'pointer-events',\n            'overflow',\n        ]);\n        this.subscribeToEvents();\n        // Setup fullscreen change handler for prerendered components\n        if (this.iFrame) {\n            this.setupFullscreenChangeHandler();\n        }\n        return this;\n    }\n    getPreRenderPlaceHolderElement() {\n        return this.insertedDomEl;\n    }\n    /**\n     * Synchronizes the style properties of the PreRender component with the embedding\n     * element. This function adjusts the position, width, and height of the PreRender\n     * component\n     * to match the dimensions and position of the embedding element.\n     * @throws {Error} Throws an error if the embedding element (passed as domSelector)\n     * is not defined or not found.\n     */\n    syncPreRenderStyle() {\n        if (!this.isPreRenderConnected() || !this.getPreRenderPlaceHolderElement()) {\n            logger.error(ERROR_MESSAGE.SYNC_STYLE_CALLED_BEFORE_RENDER);\n            return;\n        }\n        const elBoundingClient = this.getPreRenderPlaceHolderElement().getBoundingClientRect();\n        setStyleProperties(this.preRenderWrapper, {\n            top: `${elBoundingClient.y + window.scrollY}px`,\n            left: `${elBoundingClient.x + window.scrollX}px`,\n            width: `${elBoundingClient.width}px`,\n            height: `${elBoundingClient.height}px`,\n            position: 'absolute',\n        });\n    }\n    /**\n     * Hides the PreRender component if it is available.\n     * If the component is not preRendered, it issues a warning.\n     */\n    hidePreRender() {\n        logger.debug('HidePreRender Called');\n        if (!this.isPreRenderConnected()) {\n            // if the embed component is not preRendered , nothing to hide\n            logger.warn('PreRender should be called before hiding it using hidePreRender.');\n            return;\n        }\n        const preRenderHideStyles = {\n            opacity: '0',\n            pointerEvents: 'none',\n            zIndex: '-1000',\n            position: 'absolute',\n            top: '0',\n            left: '0',\n            overflow: 'hidden',\n        };\n        setStyleProperties(this.preRenderWrapper, preRenderHideStyles);\n        if (this.resizeObserver) {\n            this.resizeObserver.disconnect();\n        }\n        const placeHolderEle = this.getPreRenderPlaceHolderElement();\n        if (placeHolderEle) {\n            placeHolderEle.parentElement.removeChild(placeHolderEle);\n        }\n        this.unsubscribeToEvents();\n    }\n    /**\n     * Retrieves unique HTML element IDs for PreRender-related elements.\n     * These IDs are constructed based on the provided 'preRenderId' from 'viewConfig'.\n     * @returns {object} An object containing the IDs for the PreRender elements.\n     * @property {string} wrapper - The HTML element ID for the PreRender wrapper.\n     * @property {string} child - The HTML element ID for the PreRender child.\n     */\n    getPreRenderIds() {\n        return {\n            wrapper: `tsEmbed-pre-render-wrapper-${this.viewConfig.preRenderId}`,\n            child: `tsEmbed-pre-render-child-${this.viewConfig.preRenderId}`,\n            placeHolder: `tsEmbed-pre-render-placeholder-${this.viewConfig.preRenderId}`,\n        };\n    }\n    /**\n     * Returns the answerService which can be used to make arbitrary graphql calls on top\n     * session.\n     * @param vizId [Optional] to get for a specific viz in case of a Liveboard.\n     * @version SDK: 1.25.0 | ThoughtSpot: 9.10.0\n     */\n    async getAnswerService(vizId) {\n        const { session } = await this.trigger(HostEvent.GetAnswerSession, vizId ? { vizId } : {});\n        return new AnswerService(session, null, this.embedConfig.thoughtSpotHost);\n    }\n    /**\n     * Set up fullscreen change detection to automatically trigger ExitPresentMode\n     * when user exits fullscreen mode\n     */\n    setupFullscreenChangeHandler() {\n        var _a;\n        const embedConfig = getEmbedConfig();\n        const disableFullscreenPresentation = (_a = embedConfig === null || embedConfig === void 0 ? void 0 : embedConfig.disableFullscreenPresentation) !== null && _a !== void 0 ? _a : true;\n        if (disableFullscreenPresentation) {\n            return;\n        }\n        if (this.fullscreenChangeHandler) {\n            document.removeEventListener('fullscreenchange', this.fullscreenChangeHandler);\n        }\n        this.fullscreenChangeHandler = () => {\n            const isFullscreen = !!document.fullscreenElement;\n            if (!isFullscreen) {\n                logger.info('Exited fullscreen mode - triggering ExitPresentMode');\n                // Only trigger if iframe is available and contentWindow is\n                // accessible\n                if (this.iFrame && this.iFrame.contentWindow) {\n                    this.trigger(HostEvent.ExitPresentMode);\n                }\n                else {\n                    logger.debug('Skipping ExitPresentMode - iframe contentWindow not available');\n                }\n            }\n        };\n        document.addEventListener('fullscreenchange', this.fullscreenChangeHandler);\n    }\n    /**\n     * Remove fullscreen change handler\n     */\n    removeFullscreenChangeHandler() {\n        if (this.fullscreenChangeHandler) {\n            document.removeEventListener('fullscreenchange', this.fullscreenChangeHandler);\n            this.fullscreenChangeHandler = null;\n        }\n    }\n}\n/**\n * Base class for embedding v1 experience\n * Note: The v1 version of ThoughtSpot Blink works on the AngularJS stack\n * which is currently under migration to v2\n * @inheritdoc\n */\nexport class V1Embed extends TsEmbed {\n    constructor(domSelector, viewConfig) {\n        super(domSelector, viewConfig);\n        /**\n         * Only for testing purposes.\n         * @hidden\n         */\n        this.test__executeCallbacks = this.executeCallbacks;\n        this.viewConfig = {\n            excludeRuntimeFiltersfromURL: true,\n            excludeRuntimeParametersfromURL: true,\n            ...viewConfig,\n        };\n    }\n    /**\n     * Render the app in an iframe and set up event handlers\n     * @param iframeSrc\n     */\n    renderV1Embed(iframeSrc) {\n        return this.renderIFrame(iframeSrc);\n    }\n    getRootIframeSrc() {\n        const queryParams = this.getEmbedParams();\n        let queryString = queryParams;\n        if (!this.viewConfig.excludeRuntimeParametersfromURL) {\n            const runtimeParameters = this.viewConfig.runtimeParameters;\n            const parameterQuery = getRuntimeParameters(runtimeParameters || []);\n            queryString = [parameterQuery, queryParams].filter(Boolean).join('&');\n        }\n        if (!this.viewConfig.excludeRuntimeFiltersfromURL) {\n            const runtimeFilters = this.viewConfig.runtimeFilters;\n            const filterQuery = getFilterQuery(runtimeFilters || []);\n            queryString = [filterQuery, queryString].filter(Boolean).join('&');\n        }\n        return this.viewConfig.enableV2Shell_experimental\n            ? this.getEmbedBasePath(queryString)\n            : this.getV1EmbedBasePath(queryString);\n    }\n    /**\n     * @inheritdoc\n     * @example\n     * ```js\n     * tsEmbed.on(EmbedEvent.Error, (data) => {\n     *   console.error(data);\n     * });\n     * ```\n     * @example\n     * ```js\n     * tsEmbed.on(EmbedEvent.Save, (data) => {\n     *   console.log(\"Answer save clicked\", data);\n     * }, {\n     *   start: true // This will trigger the callback on start of save\n     * });\n     * ```\n     */\n    on(messageType, callback, options = { start: false }) {\n        const eventType = this.getCompatibleEventType(messageType);\n        return super.on(eventType, callback, options);\n    }\n}\n//# sourceMappingURL=ts-embed.js.map","export const ERROR_MESSAGE = {\n    INVALID_THOUGHTSPOT_HOST: 'Error parsing ThoughtSpot host. Please provide a valid URL.',\n    SPOTTER_EMBED_WORKSHEED_ID_NOT_FOUND: 'Please select a Model to get started',\n    LIVEBOARD_VIZ_ID_VALIDATION: 'Please select a Liveboard to embed.',\n    TRIGGER_TIMED_OUT: 'Trigger timed-out in getting a response',\n    SEARCHEMBED_BETA_WRANING_MESSAGE: 'SearchEmbed is in Beta in this release.',\n    THIRD_PARTY_COOKIE_BLOCKED_ALERT: 'Third-party cookie access is blocked on this browser. Please allow third-party cookies for this to work properly. \\nYou can use `suppressNoCookieAccessAlert` to suppress this message.',\n    DUPLICATE_TOKEN_ERR: 'Duplicate token. Please issue a new token every time getAuthToken callback is called. See https://developers.thoughtspot.com/docs/?pageid=embed-auth#trusted-auth-embed for more details.',\n    SDK_NOT_INITIALIZED: 'SDK not initialized',\n    SESSION_INFO_FAILED: 'Failed to get session information',\n    INVALID_TOKEN_ERROR: 'Received invalid token from getAuthToken callback or authToken endpoint.',\n    INVALID_TOKEN_TYPE_ERROR: 'Expected getAuthToken to return a string, but received a {invalidType}.',\n    MIXPANEL_TOKEN_NOT_FOUND: 'Mixpanel token not found in session info',\n    PRERENDER_ID_MISSING: 'PreRender ID is required for preRender',\n    SYNC_STYLE_CALLED_BEFORE_RENDER: 'PreRender should be called before using syncPreRenderStyle',\n    CSP_VIOLATION_ALERT: 'CSP violation detected. Please check the console errors for more details.',\n    CSP_FRAME_HOST_VIOLATION_LOG_MESSAGE: 'Please set up CSP correctly for the application to start working. For more information, see https://developers.thoughtspot.com/docs/security-settings#csp-viz-embed-hosts. \\n If the issue persists, refer to https://developers.thoughtspot.com/docs/security-settings#csp-viz-embed-hosts',\n    MISSING_REPORTING_OBSERVER: 'ReportingObserver not supported',\n    RENDER_CALLED_BEFORE_INIT: 'Looks like render was called before calling init, the render won\\'t start until init is called.\\nFor more info check\\n1. https://developers.thoughtspot.com/docs/Function_init#_init\\n2.https://developers.thoughtspot.com/docs/getting-started#initSdk',\n    SPOTTER_AGENT_NOT_INITIALIZED: 'SpotterAgent not initialized',\n    OFFLINE_WARNING: 'Network not Detected. Embed is offline. Please reconnect and refresh',\n    INIT_SDK_REQUIRED: 'You need to init the ThoughtSpot SDK module first',\n    CONFLICTING_ACTIONS_CONFIG: 'You cannot have both hidden actions and visible actions',\n    CONFLICTING_TABS_CONFIG: 'You cannot have both hidden Tabs and visible Tabs',\n    RENDER_BEFORE_EVENTS_REQUIRED: 'Please call render before triggering events',\n    HOST_EVENT_TYPE_UNDEFINED: 'Host event type is undefined',\n    LOGIN_FAILED: 'Login failed',\n    ERROR_PARSING_API_INTERCEPT_BODY: 'Error parsing api intercept body',\n    SSR_ENVIRONMENT_ERROR: 'SSR environment detected. This function cannot be called in SSR environment.',\n    UPDATE_PARAMS_FAILED: 'Failed to update embed parameters',\n    INVALID_SPOTTER_DOCUMENTATION_URL: 'Invalid spotterDocumentationUrl. Please provide a valid http or https URL.',\n    UPDATEFILTERS_INVALID_PAYLOAD: 'UpdateFilters requires a valid filter or filters array. Expected: { filter: { column, oper, values } } or { filters: [{ column, oper, values }, ...] }',\n    DRILLDOWN_INVALID_PAYLOAD: 'DrillDown requires a valid points object. Expected: { points: { clickedPoint?, selectedPoints? }, autoDrillDown?, vizId? }',\n};\nexport const CUSTOM_ACTIONS_ERROR_MESSAGE = {\n    INVALID_ACTION_OBJECT: 'Custom Action Validation Error: Invalid action object provided',\n    MISSING_REQUIRED_FIELDS: (id, missingFields) => `Custom Action Validation Error for '${id}': Missing required fields: ${missingFields.join(', ')}`,\n    UNSUPPORTED_TARGET: (id, targetType) => `Custom Action Validation Error for '${id}': Target type '${targetType}' is not supported`,\n    INVALID_POSITION: (position, targetType, supportedPositions) => `Position '${position}' is not supported for ${targetType.toLowerCase()}-level custom actions. Supported positions: ${supportedPositions}`,\n    INVALID_METADATA_IDS: (targetType, invalidIds, supportedIds) => `Invalid metadata IDs for ${targetType.toLowerCase()}-level custom actions: ${invalidIds.join(', ')}. Supported metadata IDs: ${supportedIds}`,\n    INVALID_DATA_MODEL_IDS: (targetType, invalidIds, supportedIds) => `Invalid data model IDs for ${targetType.toLowerCase()}-level custom actions: ${invalidIds.join(', ')}. Supported data model IDs: ${supportedIds}`,\n    INVALID_FIELDS: (targetType, invalidFields, supportedFields) => `Invalid fields for ${targetType.toLowerCase()}-level custom actions: ${invalidFields.join(', ')}. Supported fields: ${supportedFields}`,\n    DUPLICATE_IDS: (id, duplicateNames, keptName) => `Duplicate custom action ID '${id}' found. Actions with names '${duplicateNames.join(\"', '\")}' will be ignored. Keeping '${keptName}'.`,\n};\n//# sourceMappingURL=errors.js.map","import { Param } from \"../types\";\nimport { TsEmbed } from \"./ts-embed\";\nimport { getQueryParamString } from \"../utils\";\n/**\n * Starts an automatic renderer that watches the DOM for iframes containing\n * the `tsmcp=true` query parameter and replaces them with fully configured\n * ThoughtSpot embed iframes. The query parameter is automatically added by\n * the ThoughtSpot MCP server.\n *\n * A {@link MutationObserver} is set up on `document.body` to detect both\n * directly added iframes and iframes nested within added container elements.\n * Each matching iframe is replaced in-place with a new ThoughtSpot embed\n * iframe that merges the original iframe's query parameters with the SDK\n * embed parameters.\n *\n * Call {@link MutationObserver.disconnect | observer.disconnect()} on the\n * returned observer to stop monitoring the DOM.\n *\n * @param viewConfig - Optional configuration for the auto-rendered embeds.\n *   Accepts all properties from {@link AutoMCPFrameRendererViewConfig}.\n *   Defaults to an empty config.\n * @returns A {@link MutationObserver} instance that is actively observing\n *   `document.body`. Disconnect it when monitoring is no longer needed.\n *\n * @example\n * ```js\n * import { startAutoMCPFrameRenderer } from '@thoughtspot/visual-embed-sdk';\n *\n * // Start watching the DOM for tsmcp iframes\n * const observer = startAutoMCPFrameRenderer({\n *   // optional view config overrides\n * });\n *\n * // Later, stop watching\n * observer.disconnect();\n * ```\n *\n * @example\n * Detailed example of how to use the auto-frame renderer:\n * [Python React Agent Simple UI](https://github.com/thoughtspot/developer-examples/tree/main/mcp/python-react-agent-simple-ui)\n */\nexport function startAutoMCPFrameRenderer(viewConfig = {}) {\n    const replaceWithMCPIframe = (iframe) => {\n        const autoMCPFrameRenderer = new AutoFrameRenderer(viewConfig);\n        autoMCPFrameRenderer.replaceIframe(iframe);\n    };\n    const observer = new MutationObserver((mutations) => {\n        for (const mutation of mutations) {\n            for (const node of Array.from(mutation.addedNodes)) {\n                if (node instanceof HTMLIFrameElement && isTSMCPIframe(node)) {\n                    replaceWithMCPIframe(node);\n                }\n                if (node instanceof HTMLElement) {\n                    node.querySelectorAll('iframe').forEach((iframe) => {\n                        if (isTSMCPIframe(iframe)) {\n                            replaceWithMCPIframe(iframe);\n                        }\n                    });\n                }\n            }\n        }\n    });\n    observer.observe(document.body, { childList: true, subtree: true });\n    return observer;\n}\nfunction isTSMCPIframe(iframe) {\n    try {\n        const url = new URL(iframe.src);\n        return url.searchParams.get(Param.Tsmcp) === 'true';\n    }\n    catch (e) {\n        // The iframe src might not be a valid URL (e.g., 'about:blank').\n        return false;\n    }\n}\n/**\n * Embed component that automatically replaces a plain iframe with a\n * ThoughtSpot embed iframe. It merges the SDK's embed parameters with\n * the original iframe's query parameters (stripping the `tsmcp` marker)\n * and swaps the original iframe element in the DOM.\n *\n * This class is used internally by {@link startAutoMCPFrameRenderer} and\n * is not intended to be instantiated directly.\n */\nclass AutoFrameRenderer extends TsEmbed {\n    constructor(viewConfig) {\n        viewConfig.embedComponentType = 'auto-frame-renderer';\n        const container = document.createElement('div');\n        super(container, viewConfig);\n        this.viewConfig = viewConfig;\n    }\n    /**\n     * Builds the final iframe `src` by merging the SDK embed parameters\n     * with the query parameters already present on the source iframe URL.\n     * The `tsmcp` marker param is removed so it does not propagate to the\n     * ThoughtSpot application.\n     *\n     * @param sourceSrc - The original iframe's `src` URL string.\n     * @returns The constructed URL to use for the ThoughtSpot embed iframe.\n     */\n    getMCPIframeSrc(sourceSrc) {\n        const queryParams = this.getEmbedParamsObject();\n        const sourceURL = new URL(sourceSrc);\n        const existingQueryParams = sourceURL.searchParams;\n        const existingQueryParamsObject = Object.fromEntries(existingQueryParams);\n        delete existingQueryParamsObject[Param.Tsmcp];\n        const mergedQueryParams = { ...queryParams, ...existingQueryParamsObject };\n        const mergedQueryParamsString = getQueryParamString(mergedQueryParams, true);\n        const queryString = mergedQueryParamsString ? `?${mergedQueryParamsString}` : '';\n        const frameSrc = `${this.getEmbedBasePath(queryString)}${sourceURL.hash.replace('#', '')}`;\n        return frameSrc;\n    }\n    /**\n     * Overrides the base insertion behavior so the new embed iframe\n     * replaces the original iframe in-place rather than being appended\n     * to a container element. Falls back to the default behavior when\n     * no iframe has been set for replacement.\n     */\n    handleInsertionIntoDOM(child) {\n        if (this.frameToReplace) {\n            this.frameToReplace.replaceWith(child);\n        }\n        else {\n            super.handleInsertionIntoDOM(child);\n        }\n    }\n    /**\n     * Replaces the given iframe with a new ThoughtSpot embed iframe.\n     *\n     * The original iframe's `src` is used to derive the embed URL, and\n     * once the new iframe is rendered it takes the original's place in\n     * the DOM tree.\n     *\n     * @param iframe - The existing `<iframe>` element to replace.\n     */\n    async replaceIframe(iframe) {\n        this.frameToReplace = iframe;\n        if (this.shouldWaitForRenderPromise) {\n            await this.isReadyForRenderPromise;\n        }\n        const src = this.getMCPIframeSrc(iframe.src);\n        await this.renderIFrame(src);\n        this.isRendered = true;\n    }\n}\n//# sourceMappingURL=auto-frame-renderer.js.map","import * as mixpanel from 'mixpanel-browser';\nimport { logger } from './utils/logger';\nimport { ERROR_MESSAGE } from './errors';\nimport { version } from './utils/sdk-version';\nexport const EndPoints = {\n    CONFIG: '/callosum/v1/system/config',\n};\n// Needed to avoid error in CJS builds on some bundlers.\nconst mixpanelLib = mixpanel.default || mixpanel;\nlet mixpanelInstance;\n/**\n * Enum of mixpanel events\n * @hidden\n */\nexport const MIXPANEL_EVENT = {\n    VISUAL_SDK_RENDER_START: 'visual-sdk-render-start',\n    VISUAL_SDK_CALLED_INIT: 'visual-sdk-called-init',\n    VISUAL_SDK_RENDER_COMPLETE: 'visual-sdk-render-complete',\n    VISUAL_SDK_RENDER_FAILED: 'visual-sdk-render-failed',\n    VISUAL_SDK_TRIGGER: 'visual-sdk-trigger',\n    VISUAL_SDK_ON: 'visual-sdk-on',\n    VISUAL_SDK_IFRAME_LOAD_PERFORMANCE: 'visual-sdk-iframe-load-performance',\n    VISUAL_SDK_EMBED_CREATE: 'visual-sdk-embed-create',\n    VERCEL_INTEGRATION_COMPLETED: 'vercel-integration-completed',\n};\nlet isMixpanelInitialized = false;\nlet eventQueue = [];\n/**\n * Pushes the event with its Property key-value map to mixpanel.\n * @param eventId\n * @param eventProps\n */\nexport function uploadMixpanelEvent(eventId, eventProps = {}) {\n    if (!isMixpanelInitialized) {\n        eventQueue.push({ eventId, eventProps });\n        return;\n    }\n    mixpanelInstance.track(eventId, eventProps);\n}\n/**\n *\n */\nfunction emptyQueue() {\n    if (!isMixpanelInitialized) {\n        return;\n    }\n    eventQueue.forEach((event) => {\n        uploadMixpanelEvent(event.eventId, event.eventProps);\n    });\n    eventQueue = [];\n}\n/**\n *\n * @param sessionInfo\n */\nexport function initMixpanel(sessionInfo) {\n    var _a;\n    if (!sessionInfo || !sessionInfo.mixpanelToken) {\n        logger.error(ERROR_MESSAGE.MIXPANEL_TOKEN_NOT_FOUND);\n        return;\n    }\n    // On a public cluster the user is anonymous, so don't set the identify to\n    // userGUID\n    const isPublicCluster = !!sessionInfo.isPublicUser;\n    const token = sessionInfo.mixpanelToken;\n    try {\n        if (token) {\n            mixpanelInstance = mixpanelLib.init(token, undefined, 'tsEmbed');\n            if (!isPublicCluster) {\n                mixpanelInstance.identify(sessionInfo.userGUID);\n            }\n            mixpanelInstance.register_once({\n                clusterId: sessionInfo.clusterId,\n                clusterName: sessionInfo.clusterName,\n                releaseVersion: sessionInfo.releaseVersion,\n                hostAppUrl: ((_a = window === null || window === void 0 ? void 0 : window.location) === null || _a === void 0 ? void 0 : _a.host) || '',\n                sdkVersion: version,\n            });\n            isMixpanelInitialized = true;\n            emptyQueue();\n        }\n    }\n    catch (e) {\n        logger.error('Error initializing mixpanel', e);\n    }\n}\n/**\n *\n */\nexport function testResetMixpanel() {\n    isMixpanelInitialized = false;\n    eventQueue = [];\n}\n//# sourceMappingURL=mixpanel-service.js.map","var has = Object.prototype.hasOwnProperty;\n\nfunction find(iter, tar, key) {\n\tfor (key of iter.keys()) {\n\t\tif (dequal(key, tar)) return key;\n\t}\n}\n\nexport function dequal(foo, bar) {\n\tvar ctor, len, tmp;\n\tif (foo === bar) return true;\n\n\tif (foo && bar && (ctor=foo.constructor) === bar.constructor) {\n\t\tif (ctor === Date) return foo.getTime() === bar.getTime();\n\t\tif (ctor === RegExp) return foo.toString() === bar.toString();\n\n\t\tif (ctor === Array) {\n\t\t\tif ((len=foo.length) === bar.length) {\n\t\t\t\twhile (len-- && dequal(foo[len], bar[len]));\n\t\t\t}\n\t\t\treturn len === -1;\n\t\t}\n\n\t\tif (ctor === Set) {\n\t\t\tif (foo.size !== bar.size) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tfor (len of foo) {\n\t\t\t\ttmp = len;\n\t\t\t\tif (tmp && typeof tmp === 'object') {\n\t\t\t\t\ttmp = find(bar, tmp);\n\t\t\t\t\tif (!tmp) return false;\n\t\t\t\t}\n\t\t\t\tif (!bar.has(tmp)) return false;\n\t\t\t}\n\t\t\treturn true;\n\t\t}\n\n\t\tif (ctor === Map) {\n\t\t\tif (foo.size !== bar.size) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tfor (len of foo) {\n\t\t\t\ttmp = len[0];\n\t\t\t\tif (tmp && typeof tmp === 'object') {\n\t\t\t\t\ttmp = find(bar, tmp);\n\t\t\t\t\tif (!tmp) return false;\n\t\t\t\t}\n\t\t\t\tif (!dequal(len[1], bar.get(tmp))) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t}\n\n\t\tif (ctor === ArrayBuffer) {\n\t\t\tfoo = new Uint8Array(foo);\n\t\t\tbar = new Uint8Array(bar);\n\t\t} else if (ctor === DataView) {\n\t\t\tif ((len=foo.byteLength) === bar.byteLength) {\n\t\t\t\twhile (len-- && foo.getInt8(len) === bar.getInt8(len));\n\t\t\t}\n\t\t\treturn len === -1;\n\t\t}\n\n\t\tif (ArrayBuffer.isView(foo)) {\n\t\t\tif ((len=foo.byteLength) === bar.byteLength) {\n\t\t\t\twhile (len-- && foo[len] === bar[len]);\n\t\t\t}\n\t\t\treturn len === -1;\n\t\t}\n\n\t\tif (!ctor || typeof foo === 'object') {\n\t\t\tlen = 0;\n\t\t\tfor (ctor in foo) {\n\t\t\t\tif (has.call(foo, ctor) && ++len && !has.call(bar, ctor)) return false;\n\t\t\t\tif (!(ctor in bar) || !dequal(foo[ctor], bar[ctor])) return false;\n\t\t\t}\n\t\t\treturn Object.keys(bar).length === len;\n\t\t}\n\t}\n\n\treturn foo !== foo && bar !== bar;\n}\n","'use client';\nimport React, { useRef, useCallback } from 'react';\nimport useDeepCompareEffect from 'use-deep-compare-effect';\nimport { deepMerge } from '../utils';\nimport { SearchBarEmbed as _SearchBarEmbed } from '../embed/search-bar';\nimport { SearchEmbed as _SearchEmbed } from '../embed/search';\nimport { AppEmbed as _AppEmbed } from '../embed/app';\nimport { LiveboardEmbed as _LiveboardEmbed } from '../embed/liveboard';\nimport { SpotterAgentEmbed as _SpotterAgentEmbed, ConversationMessage as _ConversationMessage } from '../embed/bodyless-conversation';\nimport { getViewPropsAndListeners } from './util';\nimport { SpotterEmbed as _SpotterEmbed, ConversationEmbed as _ConversationEmbed } from '../embed/conversation';\nimport { init } from '../embed/base';\nimport { ERROR_MESSAGE } from '../errors';\nconst componentFactory = (EmbedConstructor, \n// isPreRenderedComponent: Specifies whether the component being returned is\n// intended for preRendering. If set to true, the component will call the\n// Embed.preRender() method instead of the usual render method, and it will\n// not be destroyed when the component is unmounted.\nisPreRenderedComponent = false) => {\n    const Component = React.forwardRef((props, forwardedRef) => {\n        const ref = React.useRef(null);\n        const { className, style, ...embedProps } = props;\n        const { viewConfig, listeners } = getViewPropsAndListeners(embedProps);\n        const handleDestroy = (tsEmbed) => {\n            // do not destroy if it is a preRender component\n            if (isPreRenderedComponent)\n                return;\n            // if component is connected to a preRendered component\n            if (props.preRenderId) {\n                tsEmbed.hidePreRender();\n                return;\n            }\n            tsEmbed.destroy();\n        };\n        const handlePreRenderRendering = (tsEmbed) => {\n            tsEmbed.preRender();\n        };\n        const handleDefaultRendering = (tsEmbed) => {\n            // if component is connected to a preRendered component\n            if (props.preRenderId) {\n                tsEmbed.showPreRender();\n                return;\n            }\n            tsEmbed.render();\n        };\n        const handleRendering = (tsEmbed) => {\n            if (isPreRenderedComponent) {\n                handlePreRenderRendering(tsEmbed);\n                return;\n            }\n            handleDefaultRendering(tsEmbed);\n        };\n        useDeepCompareEffect(() => {\n            const tsEmbed = new EmbedConstructor(ref.current, deepMerge({\n                insertAsSibling: viewConfig.insertAsSibling,\n                frameParams: {\n                    class: viewConfig.insertAsSibling ? className || '' : '',\n                },\n            }, viewConfig));\n            Object.keys(listeners).forEach((eventName) => {\n                tsEmbed.on(eventName, listeners[eventName]);\n            });\n            handleRendering(tsEmbed);\n            if (forwardedRef) {\n                forwardedRef.current = tsEmbed;\n            }\n            return () => {\n                handleDestroy(tsEmbed);\n            };\n        }, [viewConfig, listeners]);\n        const preRenderStyles = isPreRenderedComponent ? { display: 'none' } : {};\n        // We dont add any component for preRenderedComponent\n        if (isPreRenderedComponent)\n            return React.createElement(React.Fragment, null);\n        return viewConfig.insertAsSibling ? (React.createElement(\"span\", { \"data-testid\": \"tsEmbed\", ref: ref, style: { position: 'absolute', ...preRenderStyles } })) : (React.createElement(\"div\", { \"data-testid\": \"tsEmbed\", ref: ref, style: { ...style, ...preRenderStyles }, className: `ts-embed-container ${className}` }));\n    });\n    Component.displayName = EmbedConstructor.name || 'EmbedComponent';\n    return Component;\n};\n/**\n * React component for Search Embed.\n * @example\n * ```tsx\n * function Search() {\n *  return <SearchEmbed\n *      dataSource=\"dataSourceId\"\n *      searchOptions={{ searchTokenString: \"[revenue]\" }}\n *  />\n * }\n * ```\n */\nexport const SearchEmbed = componentFactory(_SearchEmbed);\nexport const PreRenderedSearchEmbed = componentFactory(_SearchEmbed, true);\n/**\n * React component for Full app Embed.\n * @example\n * ```tsx\n * function App() {\n *  return <AppEmbed\n *      showPrimaryNavbar={false}\n *      pageId={Page.Liveboards}\n *      onError={(error) => console.error(error)}\n *  />\n * }\n * ```\n */\nexport const AppEmbed = componentFactory(_AppEmbed);\n/**\n * React component for PreRendered App embed.\n *\n * PreRenderedAppEmbed will preRender the AppEmbed and will be hidden by\n * default.\n *\n * AppEmbed with preRenderId passed will call showPreRender on the embed.\n * @example\n * ```tsx\n * function LandingPageComponent() {\n *  return <PreRenderedAppEmbed preRenderId=\"someId\" showPrimaryNavbar={false} />\n * }\n * ```\n * function MyComponent() {\n *  return <AppEmbed preRenderId=\"someId\" showPrimaryNavbar={false} />\n * }\n * ```\n */\nexport const PreRenderedAppEmbed = componentFactory(_AppEmbed, true);\n/**\n * React component for Liveboard embed.\n * @example\n * ```tsx\n * function Liveboard() {\n *  return <LiveboardEmbed\n *      liveboardId=\"liveboardId\"\n *      fullHeight={true} {/* default false *\\/}\n *      onLiveboardRendered={() => console.log('Liveboard rendered')}\n *      vizId=\"vizId\" {/* if doing viz embed *\\/}\n *  />\n * }\n * ```\n */\nexport const LiveboardEmbed = componentFactory(_LiveboardEmbed);\nexport const PinboardEmbed = LiveboardEmbed;\n/**\n * React component for PreRendered Liveboard embed.\n *\n * PreRenderedLiveboardEmbed will preRender the liveboard and will be hidden by default.\n *\n * LiveboardEmbed with preRenderId passed will call showPreRender on the embed.\n *\n * If LiveboardEmbed is rendered before PreRenderedLiveboardEmbed is rendered it\n * tries to preRender the LiveboardEmbed, so it is recommended to pass the\n * liveboardId to both the components.\n * @example\n * ```tsx\n * function LandingPageComponent() {\n *  return <PreRenderedLiveboardEmbed preRenderId=\"someId\" liveboardId=\"libId\" />\n * }\n * ```\n * function MyComponent() {\n *  return <LiveboardEmbed preRenderId=\"someId\" liveboardId=\"libId\" />\n * }\n * ```\n */\nexport const PreRenderedLiveboardEmbed = componentFactory(_LiveboardEmbed, true);\nexport const PreRenderedPinboardEmbed = PreRenderedLiveboardEmbed;\n/**\n * React component for Search bar embed.\n * @example\n * ```tsx\n * function SearchBar() {\n *  return <SearchBarEmbed\n *      dataSource=\"dataSourceId\"\n *      searchOptions={{ searchTokenString: \"[revenue]\" }}\n *  />\n * }\n * ```\n */\nexport const SearchBarEmbed = componentFactory(_SearchBarEmbed);\n/**\n * React component for PreRendered SearchBar embed.\n *\n * PreRenderedSearchBarEmbed will preRender the SearchBarEmbed and will be hidden by\n * default.\n *\n * SearchBarEmbed with preRenderId passed will call showPreRender on the embed.\n * @example\n * ```tsx\n * function LandingPageComponent() {\n *  return <PreRenderedSearchBarEmbed preRenderId=\"someId\"  dataSource=\"dataSourceId\" />\n * }\n * ```\n * function MyComponent() {\n *  return <SearchBarEmbed preRenderId=\"someId\"  dataSource=\"dataSourceId\" />\n * }\n * ```\n */\nexport const PreRenderedSearchBarEmbed = componentFactory(_SearchBarEmbed, true);\n/**\n * React component for LLM based conversation BI.\n * @example\n * ```tsx\n * function Sage() {\n *  return <SpotterEmbed\n *      worksheetId=\"<worksheet-id-here>\"\n *      searchOptions={{\n *          searchQuery: \"<search query to start with>\"\n *      }}\n *      ... other view config props or event listeners.\n *  />\n * }\n * ```\n */\nexport const SpotterEmbed = componentFactory(_SpotterEmbed);\n/**\n * React component for LLM based conversation BI.\n * Use {@link SpotterEmbed} instead\n * @deprecated from SDK: 1.39.0 | ThoughtSpot: 10.10.0.cl\n * @example\n * ```tsx\n * function Sage() {\n *  return <ConversationEmbed\n *      worksheetId=\"<worksheet-id-here>\"\n *      searchOptions={{\n *          searchQuery: \"<search query to start with>\"\n *      }}\n *      ... other view config props or event listeners.\n *  />\n * }\n * ```\n */\nexport const ConversationEmbed = componentFactory(_ConversationEmbed);\nexport const ConversationMessage = componentFactory(_ConversationMessage);\n/**\n * React component for displaying individual conversation messages from SpotterAgent.\n *\n * This component renders a single message response from your ThoughtSpot conversation,\n * showing charts, visualizations, or text responses based on the user's query.\n *\n * @version SDK: 1.39.0 | ThoughtSpot: 10.11.0.cl\n * @example\n * ```tsx\n * const { sendMessage } = useSpotterAgent({ worksheetId: 'worksheetId' });\n * const result = await sendMessage('show me sales by region');\n *\n * if (!result.error) {\n *   // Simple usage - just pass the message data\n *   <SpotterMessage message={result.message} />\n *\n *   // With optional query for context\n *   <SpotterMessage\n *     message={result.message}\n *     query={result.query}\n *   />\n * }\n * ```\n */\nexport const SpotterMessage = React.forwardRef((props, ref) => {\n    const { message, query: _, ...otherProps } = props;\n    return (React.createElement(ConversationMessage, { ref: ref, ...message, ...otherProps }));\n});\nSpotterMessage.displayName = 'SpotterMessage';\n/**\n * React component for PreRendered Conversation embed.\n *\n * PreRenderedConversationEmbed will preRender the SpotterEmbed and will be hidden by\n * default.\n *\n * SpotterEmbed with preRenderId passed will call showPreRender on the embed.\n * @example\n * ```tsx\n * function LandingPageComponent() {\n *  return <PreRenderedConversationEmbed preRenderId=\"someId\" worksheetId={\"id-\"} />\n * }\n * ```\n * function MyComponent() {\n *  return <SpotterEmbed preRenderId=\"someId\" worksheetId=\"id\" />\n * }\n * ```\n */\nexport const PreRenderedConversationEmbed = componentFactory(_SpotterEmbed, true);\n/**\n * Get a reference to the embed component to trigger events on the component.\n * @example\n * ```\n * function Component() {\n * const ref = useEmbedRef();\n * useEffect(() => {\n * ref.current.trigger(\n *  EmbedEvent.UpdateRuntimeFilter,\n *  [{ columnName: 'name', operator: 'EQ', values: ['value']}]);\n * }, [])\n * return <LiveboardEmbed ref={ref} liveboardId={<id>} />\n * }\n * ```\n * @returns {React.MutableRefObject<T extends TsEmbed>} ref\n */\nexport function useEmbedRef() {\n    return React.useRef(null);\n}\n/**\n *\n * @version SDK: 1.36.2 | ThoughtSpot: *\n * @param config - EmbedConfig\n * @returns AuthEventEmitter\n * @example\n * ```\n * function Component() {\n *  const authEE = useInit({ ...initConfig });\n *  return <LiveboardEmbed ref={ref} liveboardId={<id>} />\n * }\n * ```\n */\nexport function useInit(config) {\n    const ref = useRef(null);\n    useDeepCompareEffect(() => {\n        const authEE = init(config);\n        ref.current = authEE;\n    }, [config]);\n    return ref;\n}\n/**\n * React hook for interacting with SpotterAgent AI conversations.\n *\n * This hook provides a sendMessage function that allows you to send natural language\n * queries to your data and get back AI-generated responses with visualizations.\n *\n * @version SDK: 1.39.0 | ThoughtSpot: 10.11.0.cl\n * @param config - Configuration object containing worksheetId and other options\n * @returns Object with sendMessage function that returns conversation results\n * @example\n * ```tsx\n * const { sendMessage } = useSpotterAgent({ worksheetId: 'worksheetId' });\n *\n * const handleQuery = async () => {\n *   const result = await sendMessage('show me sales by region');\n *\n *   if (!result.error) {\n *     // Display the message response\n *     <SpotterMessage message={result.message} />\n *   } else {\n *     console.error('Error:', result.error);\n *   }\n * };\n * ```\n */\nexport function useSpotterAgent(config) {\n    const serviceRef = useRef(null);\n    useDeepCompareEffect(() => {\n        if (serviceRef.current) {\n            serviceRef.current = null;\n        }\n        serviceRef.current = new _SpotterAgentEmbed(config);\n        return () => {\n            serviceRef.current = null;\n        };\n    }, [config]);\n    const sendMessage = useCallback(async (query) => {\n        if (!serviceRef.current) {\n            return { error: new Error(ERROR_MESSAGE.SPOTTER_AGENT_NOT_INITIALIZED) };\n        }\n        const result = await serviceRef.current.sendMessageData(query);\n        if (result.error) {\n            return { error: result.error };\n        }\n        return {\n            query: query,\n            message: {\n                ...result.data,\n                worksheetId: config.worksheetId,\n            },\n        };\n    }, [config.worksheetId]);\n    return {\n        sendMessage,\n    };\n}\nexport { Page, RuntimeFilterOp, EmbedEvent, HostEvent, Action, HomeLeftNavItem, HomepageModule, LogLevel, getSessionInfo, ListPageColumns, CustomActionsPosition, } from '../index';\n//# sourceMappingURL=index.js.map","import { EmbedEvent } from '../types';\n/**\n *\n * @param props\n */\nexport function getViewPropsAndListeners(props) {\n    return Object.keys(props).reduce((accu, key) => {\n        if (key.startsWith('on')) {\n            const eventName = key.substr(2);\n            accu.listeners[EmbedEvent[eventName]] = props[key];\n        }\n        else {\n            accu.viewConfig[key] = props[key];\n        }\n        return accu;\n    }, {\n        viewConfig: {},\n        listeners: {},\n    });\n}\n//# sourceMappingURL=util.js.map","import * as React from 'react';\nimport { dequal } from 'dequal';\n\nfunction checkDeps(deps) {\n  if (!deps || !deps.length) {\n    throw new Error('useDeepCompareEffect should not be used with no dependencies. Use React.useEffect instead.');\n  }\n\n  if (deps.every(isPrimitive)) {\n    throw new Error('useDeepCompareEffect should not be used with dependencies that are all primitive values. Use React.useEffect instead.');\n  }\n}\n\nfunction isPrimitive(val) {\n  return val == null || /^[sbn]/.test(typeof val);\n}\n/**\n * @param value the value to be memoized (usually a dependency list)\n * @returns a momoized version of the value as long as it remains deeply equal\n */\n\n\nfunction useDeepCompareMemoize(value) {\n  var ref = React.useRef(value);\n  var signalRef = React.useRef(0);\n\n  if (!dequal(value, ref.current)) {\n    ref.current = value;\n    signalRef.current += 1;\n  } // eslint-disable-next-line react-hooks/exhaustive-deps\n\n\n  return React.useMemo(function () {\n    return ref.current;\n  }, [signalRef.current]);\n}\n\nfunction useDeepCompareEffect(callback, dependencies) {\n  if (process.env.NODE_ENV !== 'production') {\n    checkDeps(dependencies);\n  } // eslint-disable-next-line react-hooks/exhaustive-deps\n\n\n  return React.useEffect(callback, useDeepCompareMemoize(dependencies));\n}\n\nfunction useDeepCompareEffectNoCheck(callback, dependencies) {\n  // eslint-disable-next-line react-hooks/exhaustive-deps\n  return React.useEffect(callback, useDeepCompareMemoize(dependencies));\n}\n\nexport { useDeepCompareEffect as default, useDeepCompareEffectNoCheck, useDeepCompareMemoize };\n","import { getAuthenticationToken, getCacheAuthToken } from './authToken';\nimport { getEmbedConfig } from './embed/embedConfig';\nimport { AuthType } from './types';\n/**\n * Fetch wrapper that adds the authentication token to the request.\n * Use this to call the ThoughtSpot APIs when using the visual embed sdk.\n * The interface for this method is the same as Web `Fetch`.\n * @param input\n * @param init\n * @example\n * ```js\n * tokenizedFetch(\"<TS_ORIGIN>/api/rest/2.0/auth/session/user\", {\n *   // .. fetch options ..\n * });\n * ```\n * @version SDK: 1.28.0\n * @group Global methods\n */\nexport const tokenizedFetch = async (input, init) => {\n    const embedConfig = getEmbedConfig();\n    const options = { ...init };\n    let token;\n    if (embedConfig.authType !== AuthType.TrustedAuthTokenCookieless) {\n        token = getCacheAuthToken();\n        if (!token) {\n            return fetch(input, { ...options, credentials: 'include' });\n        }\n    }\n    else {\n        token = await getAuthenticationToken(embedConfig);\n    }\n    const req = new Request(input, options);\n    if (token) {\n        req.headers.append('Authorization', `Bearer ${token}`);\n    }\n    return fetch(req);\n};\n//# sourceMappingURL=tokenizedFetch.js.map","/**\n * Copyright (c) 2023\n *\n * TypeScript type definitions for ThoughtSpot Visual Embed SDK\n * @summary Type definitions for Embed SDK\n * @author Ayon Ghosh <ayon.ghosh@thoughtspot.com>\n */\n/**\n * The authentication mechanism for allowing access to\n * the embedded app\n * @group Authentication / Init\n */\nexport var AuthType;\n(function (AuthType) {\n    /**\n     * No authentication on the SDK. Pass-through to the embedded App. Alias for\n     * `Passthrough`.\n     * @example\n     * ```js\n     * init({\n     *   // ...\n     *   authType: AuthType.None,\n     *  });\n     * ```\n     */\n    AuthType[\"None\"] = \"None\";\n    /**\n     * Passthrough SSO to the embedded application within the iframe. Requires least\n     * configuration, but may not be supported by all IDPs. This will behave like `None`\n     * if SSO is not configured on ThoughtSpot.\n     *\n     * To use this:\n     * Your SAML or OpenID provider must allow iframe redirects.\n     * For example, if you are using Okta as IdP, you can enable iframe embedding.\n     * @version SDK: 1.15.0 | ThoughtSpot: 8.8.0.cl\n     * @example\n     * ```js\n     * init({\n     *   // ...\n     *   authType: AuthType.EmbeddedSSO,\n     *  });\n     * ```\n     */\n    AuthType[\"EmbeddedSSO\"] = \"EmbeddedSSO\";\n    /**\n     * SSO using SAML, Use {@link SAMLRedirect} instead\n     * @deprecated This option is deprecated.\n     * @hidden\n     */\n    AuthType[\"SSO\"] = \"SSO_SAML\";\n    /**\n     * SSO using SAML, Use {@link SAMLRedirect} instead\n     * @deprecated This option is deprecated.\n     * @hidden\n     */\n    // eslint-disable-next-line @typescript-eslint/no-duplicate-enum-values\n    AuthType[\"SAML\"] = \"SSO_SAML\";\n    /**\n     * SSO using SAML\n     * Makes the host application redirect to the SAML IdP. Use this\n     * if your IdP does not allow itself to be embedded.\n     *\n     * This redirects the host application to the SAML IdP. The host application\n     * will be redirected back to the ThoughtSpot app after authentication.\n     * @example\n     * ```js\n     * init({\n     *   // ...\n     *   authType: AuthType.SAMLRedirect,\n     *  });\n     * ```\n     *\n     * This opens the SAML IdP in a popup window. The popup is triggered\n     * when the user clicks the trigger button. The popup window will be\n     * closed automatically after authentication.\n     * @example\n     * ```js\n     * init({\n     *   // ...\n     *   authType: AuthType.SAMLRedirect,\n     *   authTriggerText: 'Login with SAML',\n     *   authTriggerContainer: '#tsEmbed',\n     *   inPopup: true,\n     * });\n     * ```\n     *\n     * Can also use the event to trigger the popup flow. Works the same\n     * as the above example.\n     * @example\n     * ```js\n     * const authEE = init({\n     *  // ...\n     *  authType: AuthType.SAMLRedirect,\n     *  inPopup: true,\n     * });\n     *\n     * someButtonOnYourPage.addEventListener('click', () => {\n     *  authEE.emit(AuthEvent.TRIGGER_SSO_POPUP);\n     * });\n     * ```\n     */\n    // eslint-disable-next-line @typescript-eslint/no-duplicate-enum-values\n    AuthType[\"SAMLRedirect\"] = \"SSO_SAML\";\n    /**\n     * SSO using OIDC\n     * SSO using OIDC, Use {@link OIDCRedirect} instead\n     * @deprecated This option is deprecated.\n     * @hidden\n     */\n    AuthType[\"OIDC\"] = \"SSO_OIDC\";\n    /**\n     * SSO using OIDC\n     * Will make the host application redirect to the OIDC IdP.\n     * See code samples in {@link SAMLRedirect}.\n     */\n    // eslint-disable-next-line @typescript-eslint/no-duplicate-enum-values\n    AuthType[\"OIDCRedirect\"] = \"SSO_OIDC\";\n    /**\n     * Trusted authentication server\n     * Use {@link TrustedAuth} instead\n     * @deprecated This option is deprecated.\n     * @hidden\n     */\n    AuthType[\"AuthServer\"] = \"AuthServer\";\n    /**\n     * Trusted authentication server. Use your own authentication server\n     * which returns a bearer token, generated using the `secret_key` obtained\n     * from ThoughtSpot.\n     * @example\n     * ```js\n     * init({\n     *  // ...\n     *  authType: AuthType.TrustedAuthToken,\n     *  getAuthToken: () => {\n     *    return fetch('https://my-backend.app/ts-token')\n     *      .then((response) => response.json())\n     *      .then((data) => data.token);\n     *  }\n     * });\n     * ```\n     */\n    // eslint-disable-next-line @typescript-eslint/no-duplicate-enum-values\n    AuthType[\"TrustedAuthToken\"] = \"AuthServer\";\n    /**\n     * Trusted authentication server Cookieless, Use your own authentication\n     * server which returns a bearer token, generated using the `secret_key`\n     * obtained from ThoughtSpot. This uses a cookieless authentication\n     * approach, recommended to bypass the third-party cookie-blocking restriction\n     * implemented by some browsers.\n     * @version SDK: 1.22.0 | ThoughtSpot: 9.3.0.cl, 9.5.1.sw\n     * @example\n     * ```js\n     * init({\n     *  // ...\n     *  authType: AuthType.TrustedAuthTokenCookieless,\n     *  getAuthToken: () => {\n     *    return fetch('https://my-backend.app/ts-token')\n     *      .then((response) => response.json())\n     *      .then((data) => data.token);\n     *  }\n     * });\n     * ```\n     */\n    AuthType[\"TrustedAuthTokenCookieless\"] = \"AuthServerCookieless\";\n    /**\n     * Use the ThoughtSpot login API to authenticate to the cluster directly.\n     *\n     * Warning: This feature is primarily intended for developer testing. It is\n     * strongly advised not to use this authentication method in production.\n     */\n    AuthType[\"Basic\"] = \"Basic\";\n})(AuthType || (AuthType = {}));\n/**\n *\n * **Note**:  This attribute is not supported in the classic (V1) homepage experience.\n *\n */\nexport var HomeLeftNavItem;\n(function (HomeLeftNavItem) {\n    /**\n     * The *Search data* option in\n     * the *Insights* left navigation panel.\n     * @version SDK: 1.28.0 | ThoughtSpot: 9.12.5.cl\n     */\n    HomeLeftNavItem[\"SearchData\"] = \"search-data\";\n    /**\n     * The *Home* menu option in\n     * the *Insights* left navigation panel.\n     * @version SDK: 1.28.0 | ThoughtSpot: 9.12.5.cl\n     */\n    HomeLeftNavItem[\"Home\"] = \"insights-home\";\n    /**\n     * The *Liveboards* menu option in\n     * the *Insights* left navigation panel.\n     * @version SDK: 1.28.0 | ThoughtSpot: 9.12.5.cl\n     */\n    HomeLeftNavItem[\"Liveboards\"] = \"liveboards\";\n    /**\n     * The *Answers* menu option in\n     * the *Insights* left navigation panel.\n     * @version SDK: 1.28.0 | ThoughtSpot: 9.12.5.cl\n     */\n    HomeLeftNavItem[\"Answers\"] = \"answers\";\n    /**\n     * The *Monitor subscriptions* menu option in\n     * the *Insights* left navigation panel.\n     * @version SDK: 1.28.0 | ThoughtSpot: 9.12.5.cl\n     */\n    HomeLeftNavItem[\"MonitorSubscription\"] = \"monitor-alerts\";\n    /**\n     * The *SpotIQ analysis* menu option in\n     * the *Insights* left navigation panel.\n     * @version SDK: 1.28.0 | ThoughtSpot: 9.12.5.cl\n     */\n    HomeLeftNavItem[\"SpotIQAnalysis\"] = \"spotiq-analysis\";\n    /**\n     * The *Liveboard schedules* menu option in\n     * the *Insights* left navigation panel.\n     * @version SDK: 1.34.0 | ThoughtSpot: 10.3.0.cl\n     */\n    HomeLeftNavItem[\"LiveboardSchedules\"] = \"liveboard-schedules\";\n    /**\n     * The create option in the *Insights*\n     * left navigation panel.\n     * Available in the V3 navigation experience.\n     * @version SDK: 1.40.0 | ThoughtSpot: 10.11.0.cl\n     */\n    HomeLeftNavItem[\"Create\"] = \"create\";\n    /**\n     * The *Spotter* menu option in the *Insights*\n     * left navigation panel.\n     * Available in the V3 navigation experience.\n     * @version SDK: 1.40.0 | ThoughtSpot: 10.11.0.cl\n     */\n    HomeLeftNavItem[\"Spotter\"] = \"spotter\";\n    /**\n     * The *Favorites* section in the *Insights*\n     * left navigation panel.\n     * Available in the V3 navigation experience.\n     * @version SDK: 1.41.0 | ThoughtSpot: 10.12.0.cl\n     */\n    HomeLeftNavItem[\"Favorites\"] = \"favorites\";\n})(HomeLeftNavItem || (HomeLeftNavItem = {}));\n/**\n * A map of the supported runtime filter operations\n */\nexport var RuntimeFilterOp;\n(function (RuntimeFilterOp) {\n    /**\n     * Equals\n     */\n    RuntimeFilterOp[\"EQ\"] = \"EQ\";\n    /**\n     * Does not equal\n     */\n    RuntimeFilterOp[\"NE\"] = \"NE\";\n    /**\n     * Less than\n     */\n    RuntimeFilterOp[\"LT\"] = \"LT\";\n    /**\n     * Less than or equal to\n     */\n    RuntimeFilterOp[\"LE\"] = \"LE\";\n    /**\n     * Greater than\n     */\n    RuntimeFilterOp[\"GT\"] = \"GT\";\n    /**\n     * Greater than or equal to\n     */\n    RuntimeFilterOp[\"GE\"] = \"GE\";\n    /**\n     * Contains\n     */\n    RuntimeFilterOp[\"CONTAINS\"] = \"CONTAINS\";\n    /**\n     * Begins with\n     */\n    RuntimeFilterOp[\"BEGINS_WITH\"] = \"BEGINS_WITH\";\n    /**\n     * Ends with\n     */\n    RuntimeFilterOp[\"ENDS_WITH\"] = \"ENDS_WITH\";\n    /**\n     * Between, inclusive of higher value\n     */\n    RuntimeFilterOp[\"BW_INC_MAX\"] = \"BW_INC_MAX\";\n    /**\n     * Between, inclusive of lower value\n     */\n    RuntimeFilterOp[\"BW_INC_MIN\"] = \"BW_INC_MIN\";\n    /**\n     * Between, inclusive of both higher and lower value\n     */\n    RuntimeFilterOp[\"BW_INC\"] = \"BW_INC\";\n    /**\n     * Between, non-inclusive\n     */\n    RuntimeFilterOp[\"BW\"] = \"BW\";\n    /**\n     * Is included in this list of values\n     */\n    RuntimeFilterOp[\"IN\"] = \"IN\";\n    /**\n     * Is not included in this list of values\n     */\n    RuntimeFilterOp[\"NOT_IN\"] = \"NOT_IN\";\n})(RuntimeFilterOp || (RuntimeFilterOp = {}));\n/**\n * Home page modules that can be hidden\n * via `hiddenHomepageModules` and reordered via\n * `reorderedHomepageModules`.\n *\n * **Note**: This option is not supported in the classic (v1) experience.\n * @version SDK: 1.28.0 | ThoughtSpot: 9.12.5.cl, 10.1.0.sw\n */\nexport var HomepageModule;\n(function (HomepageModule) {\n    /**\n     * Search bar\n     */\n    HomepageModule[\"Search\"] = \"SEARCH\";\n    /**\n     * KPI watchlist module\n     */\n    HomepageModule[\"Watchlist\"] = \"WATCHLIST\";\n    /**\n     * Favorite module\n     */\n    HomepageModule[\"Favorite\"] = \"FAVORITE\";\n    /**\n     * List of answers and Liveboards\n     */\n    HomepageModule[\"MyLibrary\"] = \"MY_LIBRARY\";\n    /**\n     * Trending list\n     */\n    HomepageModule[\"Trending\"] = \"TRENDING\";\n    /**\n     * Learning videos\n     */\n    HomepageModule[\"Learning\"] = \"LEARNING\";\n})(HomepageModule || (HomepageModule = {}));\n/**\n * List page columns that can be hidden.\n * **Note**: This option is applicable to full app embedding only.\n * @version SDK: 1.38.0 | ThoughtSpot: 10.9.0.cl\n */\nexport var ListPageColumns;\n(function (ListPageColumns) {\n    /**\n     * Favorites\n     */\n    ListPageColumns[\"Favorites\"] = \"FAVOURITE\";\n    /**\n     * Favourite Use {@link ListPageColumns.Favorites} instead.\n     * @deprecated This option is deprecated.\n     */\n    ListPageColumns[\"Favourite\"] = \"FAVOURITE\";\n    /**\n     * Tags\n     */\n    ListPageColumns[\"Tags\"] = \"TAGS\";\n    /**\n     * Author\n     */\n    ListPageColumns[\"Author\"] = \"AUTHOR\";\n    /**\n     * Last viewed/Last modified\n     */\n    ListPageColumns[\"DateSort\"] = \"DATE_SORT\";\n    /**\n     * Share\n     */\n    ListPageColumns[\"Share\"] = \"SHARE\";\n    /**\n     * Verified badge/column\n     */\n    ListPageColumns[\"Verified\"] = \"VERIFIED\";\n})(ListPageColumns || (ListPageColumns = {}));\n/**\n * Event types emitted by the embedded ThoughtSpot application.\n *\n * To add an event listener use the corresponding\n * {@link LiveboardEmbed.on} or {@link AppEmbed.on} or {@link SearchEmbed.on} method.\n *  @example\n * ```js\n * import { EmbedEvent } from '@thoughtspot/visual-embed-sdk';\n * // Or\n * // const { EmbedEvent } = window.tsembed;\n *\n * // create the liveboard embed.\n *\n * liveboardEmbed.on(EmbedEvent.Drilldown, (drilldown) => {\n *   console.log('Drilldown event', drilldown);\n * }));\n * ```\n *\n * If you are using React components for embedding, you can register to any\n * events from the `EmbedEvent` list by using the `on<EventName>` convention.\n * For example,`onAlert`, `onCopyToClipboard` and so on.\n *  @example\n * ```js\n * // ...\n * const MyComponent = ({ dataSources }) => {\n *      const onLoad = () => {\n *      console.log(EmbedEvent.Load, {});\n *      };\n *\n *      return (\n *          <SearchEmbed\n *              dataSources={dataSources}\n *              onLoad = {logEvent(\"Load\")}\n *          />\n *     );\n * };\n * ```\n * @group Events\n */\nexport var EmbedEvent;\n(function (EmbedEvent) {\n    /**\n     * Rendering has initialized.\n     * @example\n     * ```js\n     * liveboardEmbed.on(EmbedEvent.Init, showLoader)\n     *  //show a loader\n     * function showLoader() {\n     * document.getElementById(\"loader\");\n     * }\n     * ```\n     * @returns timestamp - The timestamp when the event was generated.\n     */\n    EmbedEvent[\"Init\"] = \"init\";\n    /**\n     * Authentication has either succeeded or failed.\n     * @version SDK: 1.1.0 | ThoughtSpot: ts7.may.cl, 8.4.1.sw\n     * @example\n     * ```js\n     * appEmbed.on(EmbedEvent.AuthInit, payload => {\n     *    console.log('AuthInit', payload);\n     * })\n     * ```\n     * @returns isLoggedIn - A Boolean specifying whether authentication was successful.\n     */\n    EmbedEvent[\"AuthInit\"] = \"authInit\";\n    /**\n     * The embed object container has loaded.\n     * @returns timestamp - The timestamp when the event was generated.\n     * @version SDK: 1.1.0 | ThoughtSpot: ts7.may.cl, 8.4.1.sw\n     * @example\n     * ```js\n     * liveboardEmbed.on(EmbedEvent.Load, hideLoader)\n     *    //hide loader\n     * function hideLoader() {\n     *   document.getElementById(\"loader\");\n     * }\n     * ```\n     */\n    EmbedEvent[\"Load\"] = \"load\";\n    /**\n     * Data pertaining to an Answer, Liveboard or Spotter visualization is received.\n     * The event payload includes the raw data of the object.\n     * @return data -  Answer of Liveboard data\n     * @version SDK: 1.1.0 | ThoughtSpot: ts7.may.cl, 8.4.1.sw\n     * @example\n     * ```js\n     * liveboardEmbed.on(EmbedEvent.Data, payload => {\n     *    console.log('data', payload);\n     * })\n     * ```\n     * @important\n     */\n    EmbedEvent[\"Data\"] = \"data\";\n    /**\n     * Search query has been updated by the user.\n     * @version SDK: 1.4.0 | ThoughtSpot: ts7.sep.cl, 8.4.1.sw\n     * @example\n     * ```js\n     * searchEmbed.on(EmbedEvent.QueryChanged, payload => console.log('data', payload))\n     * ```\n     */\n    EmbedEvent[\"QueryChanged\"] = \"queryChanged\";\n    /**\n     * A drill-down operation has been performed.\n     * @version SDK: 1.1.0 | ThoughtSpot: ts7.may.cl, 8.4.1.sw\n     * @returns additionalFilters - Any additional filters applied\n     * @returns drillDownColumns - The columns on which drill down was performed\n     * @returns nonFilteredColumns - The columns that were not filtered\n     * @example\n     * ```js\n     * searchEmbed.on(EmbedEvent.DrillDown, {\n     *    points: {\n     *        clickedPoint,\n     *        selectedPoints: selectedPoint\n     *    },\n     *    autoDrillDown: true,\n     * })\n     * ```\n     * In this example, `VizPointDoubleClick` event is used for\n     * triggering the `DrillDown` event when an area or specific\n     * data point on a table or chart is double-clicked.\n     * @example\n     * ```js\n     * searchEmbed.on(EmbedEvent.VizPointDoubleClick, (payload) => {\n     *   console.log(payload);\n     *   const clickedPoint = payload.data.clickedPoint;\n     *   const selectedPoint = payload.data.selectedPoints;\n     *   console.log('>>> called', clickedPoint);\n     *   embed.trigger(HostEvent.DrillDown, {\n     *      points: {\n     *      clickedPoint,\n     *          selectedPoints: selectedPoint\n     *     },\n     *   autoDrillDown: true,\n     *     })\n     * })\n     * ```\n     */\n    EmbedEvent[\"Drilldown\"] = \"drillDown\";\n    /**\n     * One or more data sources have been selected.\n     * @returns dataSourceIds - the list of data sources\n     * @version SDK: 1.1.0 | ThoughtSpot: ts7.may.cl, 8.4.1.sw\n     * @example\n     * ```js\n     * searchEmbed.on(EmbedEvent.DataSourceSelected, payload => {\n     *    console.log('DataSourceSelected', payload);\n     * })\n     * ```\n     */\n    EmbedEvent[\"DataSourceSelected\"] = \"dataSourceSelected\";\n    /**\n     * One or more data columns have been selected.\n     * @returns columnIds - the list of columns\n     * @version SDK: 1.10.0 | ThoughtSpot: 8.2.0.cl, 8.4.1.sw\n     * @example\n     * ```js\n     * appEmbed.on(EmbedEvent.AddRemoveColumns, payload => {\n     *   console.log('AddRemoveColumns', payload);\n     * })\n     * ```\n     */\n    EmbedEvent[\"AddRemoveColumns\"] = \"addRemoveColumns\";\n    /**\n     * A custom action has been triggered.\n     * @returns actionId - ID of the custom action\n     * @returns payload {@link CustomActionPayload} - Response payload with the\n     * Answer or Liveboard data\n     * @version SDK: 1.1.0 | ThoughtSpot: ts7.may.cl, 8.4.1.sw\n     * @example\n     * ```js\n     * appEmbed.on(EmbedEvent.customAction, payload => {\n     *     const data = payload.data;\n     *     if (data.id === 'insert Custom Action ID here') {\n     *         console.log('Custom Action event:', data.embedAnswerData);\n     *     }\n     * })\n     * ```\n     */\n    EmbedEvent[\"CustomAction\"] = \"customAction\";\n    /**\n     * Listen to double click actions on a visualization.\n     * @return ContextMenuInputPoints - Data point that is double-clicked\n     * @version SDK: 1.5.0 | ThoughtSpot: ts7.oct.cl, 7.2.1\n     * @example\n     * ```js\n     * LiveboardEmbed.on(EmbedEvent.VizPointDoubleClick, payload => {\n     *      console.log('VizPointDoubleClick', payload);\n     * })\n     * ```\n     */\n    EmbedEvent[\"VizPointDoubleClick\"] = \"vizPointDoubleClick\";\n    /**\n     * Listen to clicks on a visualization in a Liveboard or Search result.\n     * @return viz, clickedPoint - metadata about the point that is clicked\n     * @version SDK: 1.11.0 | ThoughtSpot: 8.3.0.cl, 8.4.1.sw\n     * @important\n     * @example\n     * ```js\n     * embed.on(EmbedEvent.VizPointClick, ({data}) => {\n     *   console.log(\n     *    data.vizId, // viz id\n     *    data.clickedPoint.selectedAttributes[0].value,\n     *    data.clickedPoint.selectedAttributes[0].column.name,\n     *    data.clickedPoint.selectedMeasures[0].value,\n     *    data.clickedPoint.selectedMeasures[0].column.name,\n     *   )\n     * });\n     * ```\n     */\n    EmbedEvent[\"VizPointClick\"] = \"vizPointClick\";\n    /**\n     * Fired when an error occurs in the embedded component.\n     *\n     * **Important:** This event fires for many reasons — including internal\n     * validation warnings (e.g. `HOST_EVENT_VALIDATION`), configuration issues,\n     * and transient errors that ThoughtSpot already handles gracefully inside the\n     * iframe. **Do not call `embed.destroy()` or unmount the embed component on\n     * every error.** Doing so will tear down the iframe and abort all in-flight\n     * requests, causing the embed to fail entirely.\n     *\n     * Only treat the following codes as unrecoverable:\n     * - `INIT_ERROR` — SDK was not initialised before render\n     * - `LOGIN_FAILED` — authentication could not be completed\n     *\n     * All other error codes should be logged and inspected, not acted upon\n     * destructively.\n     *\n     * **Note:** There is currently no dedicated event for a true unrecoverable\n     * crash. A future `EmbedEvent.FatalError` event is planned to give customers\n     * a clean signal for when the embed cannot recover and needs to be torn down.\n     *\n     * Error types include:\n     * `API` - API call failure.\n     * `FULLSCREEN` - Error when presenting a Liveboard in full screen mode.\n     * `VALIDATION_ERROR` - Internal host event or configuration validation warning.\n     *\n     * For more information, see https://developers.thoughtspot.com/docs/events-app-integration#errorType\n     * @returns error - An error object or message\n     * @version SDK: 1.1.0 | ThoughtSpot: ts7.may.cl, 8.4.1.sw\n     * @example\n     * ```js\n     * // Recommended pattern — only destroy on truly fatal errors\n     * embed.on(EmbedEvent.Error, (error) => {\n     *   const FATAL_CODES = ['INIT_ERROR', 'LOGIN_FAILED'];\n     *   if (FATAL_CODES.includes(error.data?.code)) {\n     *     embed.destroy();\n     *     return;\n     *   }\n     *   // Log all other errors — do not destroy\n     *   console.warn('Embed error (non-fatal):', error);\n     * });\n     * ```\n     * @example\n     * ```js\n     * // API error\n     * SearchEmbed.on(EmbedEvent.Error, (error) => {\n     *   console.log(error);\n     *   // { errorType: \"API\", message: '...', code: '...' }\n     * });\n     * ```\n     */\n    EmbedEvent[\"Error\"] = \"Error\";\n    /**\n     * The embedded object has sent an alert.\n     * @returns alert - An alert object\n     * @version SDK: 1.1.0 | ThoughtSpot: ts7.may.cl, 8.4.1.sw\n     * @example\n     * ```js\n     * searchEmbed.on(EmbedEvent.Alert)\n     * ```\n     */\n    EmbedEvent[\"Alert\"] = \"alert\";\n    /**\n     * The ThoughtSpot authentication session has expired.\n     * @version SDK: 1.4.0 | ThoughtSpot: ts7.sep.cl, 8.4.1.sw\n     * @example\n     * ```js\n     * appEmbed.on(EmbedEvent.AuthExpire, showAuthExpired)\n     * //show auth expired banner\n     * function showAuthExpired() {\n     *    document.getElementById(\"authExpiredBanner\");\n     * }\n     * ```\n     */\n    EmbedEvent[\"AuthExpire\"] = \"ThoughtspotAuthExpired\";\n    /**\n     * ThoughtSpot failed to validate the auth session.\n     * @hidden\n     */\n    EmbedEvent[\"AuthFailure\"] = \"ThoughtspotAuthFailure\";\n    /**\n     * ThoughtSpot failed to re validate the auth session.\n     * @hidden\n     */\n    EmbedEvent[\"IdleSessionTimeout\"] = \"IdleSessionTimeout\";\n    /**\n     * ThoughtSpot failed to validate the auth session.\n     * @hidden\n     */\n    EmbedEvent[\"AuthLogout\"] = \"ThoughtspotAuthLogout\";\n    /**\n     * The height of the embedded Liveboard or visualization has been computed.\n     * @returns data - The height of the embedded Liveboard or visualization\n     * @hidden\n     */\n    EmbedEvent[\"EmbedHeight\"] = \"EMBED_HEIGHT\";\n    /**\n     * The center of visible iframe viewport is calculated.\n     * @returns data - The center of the visible Iframe viewport.\n     * @hidden\n     */\n    EmbedEvent[\"EmbedIframeCenter\"] = \"EmbedIframeCenter\";\n    /**\n     * Emitted when the **Get Data** action is initiated.\n     * Applicable to `SearchBarEmbed` only.\n     * @version SDK: 1.19.0 | ThoughtSpot: 9.0.0.cl, 9.0.1.sw\n     * @example\n     * ```js\n     * searchbarEmbed.on(EmbedEvent.GetDataClick)\n     *  .then(data => {\n     *  console.log('Answer Data:', data);\n     * })\n     * ```\n     */\n    EmbedEvent[\"GetDataClick\"] = \"getDataClick\";\n    /**\n     * Detects the route change.\n     * @version SDK: 1.7.0 | ThoughtSpot: 8.0.0.cl, 8.4.1.sw\n     * @example\n     * ```js\n     * searchEmbed.on(EmbedEvent.RouteChange, payload =>\n     *    console.log('data', payload))\n     * ```\n     */\n    EmbedEvent[\"RouteChange\"] = \"ROUTE_CHANGE\";\n    /**\n     * The v1 event type for Data\n     * @hidden\n     */\n    EmbedEvent[\"V1Data\"] = \"exportVizDataToParent\";\n    /**\n     * Emitted when the embed does not have cookie access. This happens\n     * when third-party cookies are blocked by Safari or other\n     * web browsers. `NoCookieAccess` can trigger.\n     * @example\n     * ```js\n     * appEmbed.on(EmbedEvent.NoCookieAccess)\n     * ```\n     * @version SDK: 1.1.0 | ThoughtSpot: ts7.may.cl, 7.2.1.sw\n     */\n    EmbedEvent[\"NoCookieAccess\"] = \"noCookieAccess\";\n    /**\n     * Emitted when SAML is complete\n     * @private\n     * @hidden\n     */\n    EmbedEvent[\"SAMLComplete\"] = \"samlComplete\";\n    /**\n     * Emitted when any modal is opened in the app\n     * @version SDK: 1.6.0 | ThoughtSpot: ts8.nov.cl, 8.4.1.sw\n     * @example\n     * ```js\n     * appEmbed.on(EmbedEvent.DialogOpen, payload => {\n     *    console.log('dialog open', payload);\n     *  })\n     * ```\n     */\n    EmbedEvent[\"DialogOpen\"] = \"dialog-open\";\n    /**\n     * Emitted when any modal is closed in the app\n     * @version SDK: 1.6.0 | ThoughtSpot: ts8.nov.cl, 8.4.1.sw\n     * @example\n     * ```js\n     * appEmbed.on(EmbedEvent.DialogClose, payload => {\n     *     console.log('dialog close', payload);\n     * })\n     * ```\n     */\n    EmbedEvent[\"DialogClose\"] = \"dialog-close\";\n    /**\n     * Emitted when the Liveboard shell loads.\n     * You can use this event as a hook to trigger\n     * other events on the rendered Liveboard.\n     * @version SDK: 1.9.1 | ThoughtSpot: 8.1.0.cl, 8.4.1.sw\n     * @example\n     * ```js\n     * liveboardEmbed.on(EmbedEvent.LiveboardRendered, payload => {\n           console.log('Liveboard is rendered', payload);\n       })\n     * ```\n     * The following example shows how to trigger\n     * `SetVisibleVizs` event using LiveboardRendered embed event:\n     * @example\n     * ```js\n     * const embedRef = useEmbedRef();\n     * const onLiveboardRendered = () => {\n     * embed.trigger(HostEvent.SetVisibleVizs, ['viz1', 'viz2']);\n     * };\n     * ```\n     */\n    EmbedEvent[\"LiveboardRendered\"] = \"PinboardRendered\";\n    /**\n     * Emits all events.\n     * @version SDK: 1.10.0 | ThoughtSpot: 8.2.0.cl, 8.4.1.sw\n     * @example\n     * ```js\n     * appEmbed.on(EmbedEvent.ALL, payload => {\n     *  console.log('Embed Events', payload)\n     * })\n     * ```\n     */\n    EmbedEvent[\"ALL\"] = \"*\";\n    /**\n     * Emitted when an Answer is saved in the app.\n     * Use start:true to subscribe to when save is initiated, or end:true to subscribe to when save is completed. Default is end:true.\n     * @version SDK: 1.11.0 | ThoughtSpot: 8.3.0.cl, 8.4.1.sw\n     * @example\n     * ```js\n     * //Emit when action starts\n     *  searchEmbed.on(EmbedEvent.Save, payload => {\n     *    console.log('Save', payload)\n     *  }, {\n     *    start: true\n     * })\n     * //emit when action ends\n     * searchEmbed.on(EmbedEvent.Save, payload => {\n     *    console.log('Save', payload)\n     * })\n     * ```\n     */\n    EmbedEvent[\"Save\"] = \"save\";\n    /**\n     * Emitted when the download action is triggered on an Answer.\n     *\n     * **Note**: This event is deprecated in v1.21.0.\n     * To fire an event when a download action is initiated on a chart or table,\n     * use `EmbedEvent.DownloadAsPng`, `EmbedEvent.DownloadAsPDF`,\n     * `EmbedEvent.DownloadAsCSV`, or `EmbedEvent.DownloadAsXLSX`\n     * @version SDK: 1.11.0 | ThoughtSpot: 8.3.0.cl, 8.4.1.sw\n     * @example\n     * ```js\n     * liveboardEmbed.on(EmbedEvent.Download, {\n     * vizId: '730496d6-6903-4601-937e-2c691821af3c'\n     * })\n     * ```\n     */\n    EmbedEvent[\"Download\"] = \"download\";\n    /**\n     * Emitted when the download action is triggered on an Answer.\n     *  Use start:true to subscribe to when download is initiated, or end:true to\n     *  subscribe to when download is completed. Default is end:true.\n     * @version SDK: 1.21.0 | ThoughtSpot: 9.2.0.cl, 9.4.0.sw\n     * @example\n     * ```js\n     * //emit when action starts\n     * searchEmbed.on(EmbedEvent.DownloadAsPng, payload => {\n     *   console.log('download PNG', payload)}, {start: true })\n     * //emit when action ends\n     * searchEmbed.on(EmbedEvent.DownloadAsPng, payload => {\n     *   console.log('download PNG', payload)})\n     * ```\n     */\n    EmbedEvent[\"DownloadAsPng\"] = \"downloadAsPng\";\n    /**\n     * Emitted when the Download as PDF action is triggered on an Answer\n     *  Use start:true to subscribe to when download as PDF is initiated, or end:true to\n     *  subscribe to when download as PDF is completed. Default is end:true.\n     * @version SDK: 1.11.0 | ThoughtSpot: 8.3.0.cl, 8.4.1.sw\n     * @example\n     * ```js\n     * //emit when action starts\n     * searchEmbed.on(EmbedEvent.DownloadAsPdf, payload => {\n     *   console.log('download PDF', payload)}, {start: true })\n     * //emit when action ends\n     * searchEmbed.on(EmbedEvent.DownloadAsPdf, payload => {\n     *   console.log('download PDF', payload)})\n     * ```\n     */\n    EmbedEvent[\"DownloadAsPdf\"] = \"downloadAsPdf\";\n    /**\n     * Emitted when the Download as CSV action is triggered on an Answer.\n     *  Use start:true to subscribe to when download as CSV is initiated, or end:true to\n     *  subscribe to when download as CSV is completed. Default is end:true.\n     * @version SDK: 1.11.0 | ThoughtSpot: 8.3.0.cl, 8.4.1.sw\n     * @example\n     * ```js\n     * //emit when action starts\n     * searchEmbed.on(EmbedEvent.DownloadAsCSV, payload => {\n     *   console.log('download CSV', payload)}, {start: true })\n     * //emit when action ends\n     * searchEmbed.on(EmbedEvent.DownloadAsCSV, payload => {\n     *    console.log('download CSV', payload)})\n     * ```\n     */\n    EmbedEvent[\"DownloadAsCsv\"] = \"downloadAsCsv\";\n    /**\n     * Emitted when the Download as XLSX action is triggered on an Answer.\n     *  Use start:true to subscribe to when download as XLSX is initiated, or end:true to\n     *  subscribe to when download as XLSX is completed. Default is end:true.\n     * @version SDK: 1.11.0 | ThoughtSpot: 8.3.0.cl, 8.4.1.sw\n     * @example\n     * ```js\n     * //emit when action starts\n     * searchEmbed.on(EmbedEvent.DownloadAsXlsx, payload => {\n     *   console.log('download Xlsx', payload)}, { start: true })\n     * //emit when action ends\n     * searchEmbed.on(EmbedEvent.DownloadAsXlsx, payload => {\n     *   console.log('download Xlsx', payload)})\n     * ```\n     */\n    EmbedEvent[\"DownloadAsXlsx\"] = \"downloadAsXlsx\";\n    /**\n     * Emitted when the Download Liveboard as Continuous PDF action is triggered\n     * on a Liveboard.\n     * @version SDK: 1.48.0 | ThoughtSpot: 26.5.0.cl\n     * @example\n     * ```js\n     * liveboardEmbed.on(EmbedEvent.DownloadLiveboardAsContinuousPDF, payload => {\n     *   console.log('download liveboard as continuous PDF', payload)})\n     * ```\n     */\n    EmbedEvent[\"DownloadLiveboardAsContinuousPDF\"] = \"downloadLiveboardAsContinuousPDF\";\n    /**\n     * Emitted when an Answer is deleted in the app\n     *  Use start:true to subscribe to when delete is initiated, or end:true to subscribe\n     *  to when delete is completed. Default is end:true.\n     * @version SDK: 1.11.0 | ThoughtSpot: 8.3.0.cl, 8.4.1.sw\n     * @example\n     * ```js\n     * //emit when action starts\n     * appEmbed.on(EmbedEvent.AnswerDelete, payload => {\n     *    console.log('delete answer', payload)}, {start: true })\n     * //trigger when action is completed\n     * appEmbed.on(EmbedEvent.AnswerDelete, payload => {\n     *    console.log('delete answer', payload)})\n     * ```\n     */\n    EmbedEvent[\"AnswerDelete\"] = \"answerDelete\";\n    /**\n     * Emitted when the AI Highlights action is triggered on a Liveboard\n     * @version SDK: 1.44.0 | ThoughtSpot: 10.15.0.cl\n     * @example\n     * ```js\n     * liveboardEmbed.on(EmbedEvent.AIHighlights, (payload) => {\n     *   console.log('AI Highlights', payload);\n     * })\n     * ```\n     */\n    EmbedEvent[\"AIHighlights\"] = \"AIHighlights\";\n    /**\n     * Emitted when a user initiates the Pin action to\n     *  add an Answer to a Liveboard.\n     *  Use start:true to subscribe to when pin is initiated, or end:true to subscribe to\n     *  when pin is completed. Default is end:true.\n     * @version SDK: 1.11.0 | ThoughtSpot: 8.3.0.cl, 8.4.1.sw\n     * @example\n     * ```js\n     * //emit when action starts\n     * searchEmbed.on(EmbedEvent.Pin, payload => {\n     *    console.log('pin', payload)\n     * }, {\n     * start: true\n     * })\n     * //emit when action ends\n     * searchEmbed.on(EmbedEvent.Pin, payload => {\n     *    console.log('pin', payload)\n     * })\n     * ```\n     */\n    EmbedEvent[\"Pin\"] = \"pin\";\n    /**\n     * Emitted when SpotIQ analysis is triggered\n     * @version SDK: 1.11.0 | ThoughtSpot: 8.3.0.cl, 8.4.1.sw\n     * @example\n     * ```js\n     * //emit when action starts\n     * searchEmbed.on(EmbedEvent.SpotIQAnalyze, payload => {\n     *   console.log('SpotIQAnalyze', payload)\n     * }, {\n     * start: true\n     * })\n     * //emit when action ends\n     * searchEmbed.on(EmbedEvent.SpotIQAnalyze, payload => {\n     *   console.log('SpotIQ analyze', payload)\n     * })\n     * ```\n     */\n    EmbedEvent[\"SpotIQAnalyze\"] = \"spotIQAnalyze\";\n    /**\n     * Emitted when a user shares an object with another user or group\n     * @version SDK: 1.11.0 | ThoughtSpot: 8.3.0.cl, 8.4.1.sw\n     * @example\n     * ```js\n     * //emit when action starts\n     * searchEmbed.on(EmbedEvent.Share, payload => {\n     *    console.log('Share', payload)\n     * }, {\n     * start: true\n     * })\n     * //emit when action ends\n     * searchEmbed.on(EmbedEvent.Share, payload => {\n     *   console.log('Share', payload)\n     * })\n     * ```\n     */\n    EmbedEvent[\"Share\"] = \"share\";\n    /**\n     * Emitted when a user clicks the **Include** action to include a specific value or\n     * data on a chart or table.\n     * @version SDK: 1.11.0 | ThoughtSpot: 8.3.0.cl, 8.4.1.sw\n     * @example\n     * ```js\n     * appEmbed.on(EmbedEvent.DrillInclude, payload => {\n     *    console.log('Drill include', payload);\n     * })\n     * ```\n     */\n    EmbedEvent[\"DrillInclude\"] = \"context-menu-item-include\";\n    /**\n     * Emitted when a user clicks the **Exclude** action to exclude a specific value or\n     * data on a chart or table\n     * @version SDK: 1.11.0 | ThoughtSpot: 8.3.0.cl, 8.4.1.sw\n     * @example\n     * ```js\n     * appEmbed.on(EmbedEvent.DrillExclude, payload => {\n     *     console.log('Drill exclude', payload);\n     * })\n     * ```\n     */\n    EmbedEvent[\"DrillExclude\"] = \"context-menu-item-exclude\";\n    /**\n     * Emitted when a column value is copied in the embedded app.\n     * @version SDK: 1.11.0 | ThoughtSpot: 8.3.0.cl, 8.4.1.sw\n     * @example\n     * ```js\n     * searchEmbed.on(EmbedEvent.CopyToClipboard, payload => {\n     *    console.log('copy to clipboard', payload);\n     * })\n     * ```\n     */\n    EmbedEvent[\"CopyToClipboard\"] = \"context-menu-item-copy-to-clipboard\";\n    /**\n     * Emitted when a user clicks the **Update TML** action on\n     * embedded Liveboard.\n     * @version SDK: 1.11.0 | ThoughtSpot: 8.3.0.cl, 8.4.1.sw\n     * @example\n     * ```js\n     * liveboardEmbed.on(EmbedEvent.UpdateTML)\n     * })\n     * ```\n     */\n    EmbedEvent[\"UpdateTML\"] = \"updateTSL\";\n    /**\n     * Emitted when a user clicks the **Edit TML** action\n     * on an embedded Liveboard.\n     * @version SDK: 1.11.0 | ThoughtSpot: 8.3.0.cl, 8.4.1.sw\n     * @example\n     * ```js\n     * appEmbed.on(EmbedEvent.EditTML, payload => {\n     *    console.log('Edit TML', payload);\n     * })\n     * ```\n     */\n    EmbedEvent[\"EditTML\"] = \"editTSL\";\n    /**\n     * Emitted when the **Export TML** action is triggered on an\n     * an embedded object in the app\n     *  Use start:true to subscribe to when export is initiated, or end:true to subscribe\n     *  to when export is completed. Default is end:true.\n     * @version SDK: 1.11.0 | ThoughtSpot: 8.3.0.cl, 8.4.1.sw\n     * @example\n     * ```js\n     * //emit when action starts\n     * searchEmbed.on(EmbedEvent.ExportTML, payload => {\n     *     console.log('Export TML', payload)}, { start: true })\n     * //emit when action ends\n     * searchEmbed.on(EmbedEvent.ExportTML, payload => {\n     *     console.log('Export TML', payload)})\n     * ```\n     */\n    EmbedEvent[\"ExportTML\"] = \"exportTSL\";\n    /**\n     * Emitted when an Answer is saved as a View.\n     * @version SDK: 1.11.0 | ThoughtSpot: 8.3.0.cl, 8.4.1.sw\n     * @example\n     * ```js\n     * appEmbed.on(EmbedEvent.SaveAsView, payload => {\n     *    console.log('View', payload);\n     * })\n     * ```\n     */\n    EmbedEvent[\"SaveAsView\"] = \"saveAsView\";\n    /**\n     * Emitted when the user creates a copy of an Answer.\n     *  Use start:true to subscribe to when copy and edit is initiated, or end:true to\n     *  subscribe to when copy and edit is completed. Default is end:true.\n     * @version SDK: 1.11.0 | ThoughtSpot: 8.3.0.cl, 8.4.1.sw\n     * @example\n     * ```js\n     * //emit when action starts\n     * appEmbed.on(EmbedEvent.CopyAEdit, payload => {\n     *    console.log('Copy and edit', payload)}, {start: true })\n     * //emit when action ends\n     * appEmbed.on(EmbedEvent.CopyAEdit, payload => {\n     *    console.log('Copy and edit', payload)})\n     * ```\n     */\n    EmbedEvent[\"CopyAEdit\"] = \"copyAEdit\";\n    /**\n     * Emitted when a user clicks *Show underlying data* on an Answer.\n     * @version SDK: 1.11.0 | ThoughtSpot: 8.3.0.cl, 8.4.1.sw\n     * @example\n     * ```js\n     * liveboardEmbed.on(EmbedEvent.ShowUnderlyingData, payload => {\n     *    console.log('show data', payload);\n     * })\n     * ```\n     */\n    EmbedEvent[\"ShowUnderlyingData\"] = \"showUnderlyingData\";\n    /**\n     * Emitted when an Answer is switched to a chart or table view.\n     * @version SDK: 1.11.0 | ThoughtSpot: 8.3.0.cl, 8.4.1.sw\n     * @example\n     * ```js\n     * searchEmbed.on(EmbedEvent.AnswerChartSwitcher, payload => {\n     *    console.log('switch view', payload);\n     * })\n     * ```\n     */\n    EmbedEvent[\"AnswerChartSwitcher\"] = \"answerChartSwitcher\";\n    /**\n     * Internal event to communicate the initial settings back to the ThoughtSpot app\n     * @hidden\n     */\n    EmbedEvent[\"APP_INIT\"] = \"appInit\";\n    /**\n     * Internal event to clear the cached info\n     * @hidden\n     */\n    EmbedEvent[\"CLEAR_INFO_CACHE\"] = \"clearInfoCache\";\n    /**\n     * Emitted when a user clicks **Show Liveboard details** on a Liveboard\n     * @version SDK: 1.15.0 | ThoughtSpot: 8.7.0.cl, 8.8.1.sw\n     * @example\n     * ```js\n     * liveboardEmbed.on(EmbedEvent.LiveboardInfo, payload => {\n     *    console.log('Liveboard details', payload);\n     * })\n     * ```\n     */\n    EmbedEvent[\"LiveboardInfo\"] = \"pinboardInfo\";\n    /**\n     * Emitted when a user clicks on the Favorite icon on a Liveboard\n     * @version SDK: 1.15.0 | ThoughtSpot: 8.7.0.cl, 8.8.1.sw\n     * @example\n     * ```js\n     * liveboardEmbed.on(EmbedEvent.AddToFavorites, payload => {\n     *    console.log('favorites', payload);\n     * })\n     * ```\n     */\n    EmbedEvent[\"AddToFavorites\"] = \"addToFavorites\";\n    /**\n     * Emitted when a user clicks **Schedule** on a Liveboard\n     * @version SDK: 1.15.0 | ThoughtSpot: 8.7.0.cl, 8.8.1.sw\n     * @example\n     * ```js\n     * liveboardEmbed.on(EmbedEvent.Schedule, payload => {\n     *    console.log('Liveboard schedule', payload);\n     * })\n     * ```\n     */\n    EmbedEvent[\"Schedule\"] = \"subscription\";\n    /**\n     * Emitted when a user clicks **Edit** on a Liveboard or visualization\n     * @version SDK: 1.15.0 | ThoughtSpot: 8.7.0.cl, 8.8.1.sw\n     * @example\n     * ```js\n     * liveboardEmbed.on(EmbedEvent.Edit, payload => {\n     *    console.log('Liveboard edit', payload);\n     * })\n     * ```\n     */\n    EmbedEvent[\"Edit\"] = \"edit\";\n    /**\n     * Emitted when a user clicks *Make a copy* on a Liveboard\n     * @version SDK: 1.15.0 | ThoughtSpot: 8.7.0.cl, 8.8.1.sw\n     * @example\n     * ```js\n     * liveboardEmbed.on(EmbedEvent.MakeACopy, payload => {\n     *    console.log('Copy', payload);\n     * })\n     * ```\n     */\n    EmbedEvent[\"MakeACopy\"] = \"makeACopy\";\n    /**\n     * Emitted when a user clicks **Present** on a Liveboard or visualization\n     * @version SDK: 1.15.0 | ThoughtSpot: 8.7.0.cl, 8.8.1.sw\n     * @example\n     * ```js\n     * liveboardEmbed.on(EmbedEvent.Present)\n     * ```\n     * @example\n     * ```js\n     * liveboardEmbed.on(EmbedEvent.Present, {\n     *   vizId: '730496d6-6903-4601-937e-2c691821af3c'})\n     * })\n     * ```\n     */\n    EmbedEvent[\"Present\"] = \"present\";\n    /**\n     * Emitted when a user clicks **Delete** on a visualization\n     * @version SDK: 1.15.0 | ThoughtSpot: 8.7.0.cl, 8.8.1.sw\n     * @example\n     * ```js\n     * liveboardEmbed.on(EmbedEvent.Delete,\n     *   {vizId: '730496d6-6903-4601-937e-2c691821af3c'})\n     * ```\n     */\n    EmbedEvent[\"Delete\"] = \"delete\";\n    /**\n     * Emitted when a user clicks Manage schedules on a Liveboard\n     * @version SDK: 1.15.0 | ThoughtSpot: 8.7.0.cl, 8.8.1.sw\n     * @example\n     * ```js\n     * liveboardEmbed.on(EmbedEvent.SchedulesList)\n     * ```\n     */\n    EmbedEvent[\"SchedulesList\"] = \"schedule-list\";\n    /**\n     * Emitted when a user clicks **Cancel** in edit mode on a Liveboard\n     * @version SDK: 1.15.0 | ThoughtSpot: 8.7.0.cl, 8.8.1.sw\n     * @example\n     * ```js\n     * liveboardEmbed.on(EmbedEvent.Cancel)\n     * ```\n     */\n    EmbedEvent[\"Cancel\"] = \"cancel\";\n    /**\n     * Emitted when a user clicks **Explore** on a visualization\n     * @version SDK: 1.15.0 | ThoughtSpot: 8.7.0.cl, 8.8.1.sw\n     * @example\n     * ```js\n     * liveboardEmbed.on(EmbedEvent.Explore,  {\n     *   vizId: '730496d6-6903-4601-937e-2c691821af3c'})\n     * ```\n     */\n    EmbedEvent[\"Explore\"] = \"explore\";\n    /**\n     * Emitted when a user clicks **Copy link** action on a visualization.\n     * @version SDK: 1.15.0 | ThoughtSpot: 8.7.0.cl, 8.8.1.sw\n     * @example\n     * ```js\n     * liveboardEmbed.on(EmbedEvent.CopyLink, {\n     *   vizId: '730496d6-6903-4601-937e-2c691821af3c'})\n     * ```\n     */\n    EmbedEvent[\"CopyLink\"] = \"embedDocument\";\n    /**\n     * Emitted when a user interacts with cross filters on a\n     * visualization or Liveboard.\n     * @version SDK: 1.21.0 | ThoughtSpot: 9.2.0.cl, 9.5.0.sw\n     * @example\n     * ```js\n     * liveboardEmbed.on(EmbedEvent.CrossFilterChanged, {\n     *    vizId: '730496d6-6903-4601-937e-2c691821af3c'})\n     * ```\n     */\n    EmbedEvent[\"CrossFilterChanged\"] = \"cross-filter-changed\";\n    /**\n     * Emitted when a user right clicks on a visualization (chart or table)\n     * @version SDK: 1.21.0 | ThoughtSpot: 9.2.0.cl, 9.5.0.sw\n     * @example\n     * ```js\n     * LiveboardEmbed.on(EmbedEvent.VizPointRightClick, payload => {\n     *    console.log('VizPointClick', payload)\n     * })\n     * ```\n     */\n    EmbedEvent[\"VizPointRightClick\"] = \"vizPointRightClick\";\n    /**\n     * Emitted when a user clicks **Insert to slide** on a visualization\n     * @hidden\n     */\n    EmbedEvent[\"InsertIntoSlide\"] = \"insertInToSlide\";\n    /**\n     * Emitted when a user changes any filter on a Liveboard.\n     * Returns filter type and name, column name and ID, and runtime\n     * filter details.\n     * @example\n     *\n     * ```js\n     * LiveboardEmbed.on(EmbedEvent.FilterChanged, (payload) => {\n     *    console.log('payload', payload);\n     * })\n     * ```\n     * @version SDK: 1.23.0 | ThoughtSpot: 9.4.0.cl, 9.5.0.sw\n     */\n    EmbedEvent[\"FilterChanged\"] = \"filterChanged\";\n    /**\n     * Emitted when a user updates a connection on the **Data** page\n     * @version SDK: 1.27.0 | ThoughtSpot: 9.8.0.cl, 9.8.0.sw\n     */\n    EmbedEvent[\"UpdateConnection\"] = \"updateConnection\";\n    /**\n     * Emitted when a user updates a connection on the **Data** page\n     * @version SDK: 1.27.0 | ThoughtSpot: 9.8.0.cl, 9.8.0.sw\n     */\n    EmbedEvent[\"CreateConnection\"] = \"createConnection\";\n    /**\n     * Emitted when name, status (private or public) or filter values of a\n     * Personalised view is updated.\n     * This event is deprecated. Use {@link EmbedEvent.UpdatePersonalizedView} instead.\n     * @returns viewName: string\n     * @returns viewId: string\n     * @returns liveboardId: string\n     * @returns isPublic: boolean\n     * @version SDK: 1.26.0 | ThoughtSpot: 9.7.0.cl, 9.8.0.sw\n     * @deprecated SDK: 1.48.0 | ThoughtSpot: 26.5.0.cl\n     */\n    EmbedEvent[\"UpdatePersonalisedView\"] = \"updatePersonalisedView\";\n    /**\n     * Emitted when name, status (private or public) or filter values of a\n     * Personalized view is updated.\n     * @returns viewName: string\n     * @returns viewId: string\n     * @returns liveboardId: string\n     * @returns isPublic: boolean\n     * @version SDK: 1.48.0 | ThoughtSpot: 26.5.0.cl\n     */\n    EmbedEvent[\"UpdatePersonalizedView\"] = \"updatePersonalisedView\";\n    /**\n     * Emitted when a Personalised view is saved.\n     * This event is deprecated. Use {@link EmbedEvent.SavePersonalizedView} instead.\n     * @returns viewName: string\n     * @returns viewId: string\n     * @returns liveboardId: string\n     * @returns isPublic: boolean\n     * @version SDK: 1.26.0 | ThoughtSpot: 9.7.0.cl, 9.8.0.sw\n     * @deprecated SDK: 1.48.0 | ThoughtSpot: 26.5.0.cl\n     */\n    EmbedEvent[\"SavePersonalisedView\"] = \"savePersonalisedView\";\n    /**\n     * Emitted when a Personalized view is saved.\n     * @returns viewName: string\n     * @returns viewId: string\n     * @returns liveboardId: string\n     * @returns isPublic: boolean\n     * @version SDK: 1.48.0 | ThoughtSpot: 26.5.0.cl\n     */\n    EmbedEvent[\"SavePersonalizedView\"] = \"savePersonalisedView\";\n    /**\n     * Emitted when a Liveboard is reset.\n     * @returns viewName: string\n     * @returns viewId: string\n     * @returns liveboardId: string\n     * @returns isPublic: boolean\n     * @version SDK: 1.26.0 | ThoughtSpot: 9.7.0.cl, 9.8.0.sw\n     */\n    EmbedEvent[\"ResetLiveboard\"] = \"resetLiveboard\";\n    /**\n     * Emitted when a PersonalisedView is deleted.\n     * This event is deprecated. Use {@link EmbedEvent.DeletePersonalizedView} instead.\n     * @returns views: string[]\n     * @returns liveboardId: string\n     * @version SDK: 1.26.0 | ThoughtSpot: 9.7.0.cl, 9.8.0.sw\n     * @deprecated SDK: 1.48.0 | ThoughtSpot: 26.5.0.cl\n     */\n    EmbedEvent[\"DeletePersonalisedView\"] = \"deletePersonalisedView\";\n    /**\n     * Emitted when a PersonalizedView is deleted.\n     * @returns views: string[]\n     * @returns liveboardId: string\n     * @version SDK: 1.48.0 | ThoughtSpot: 26.5.0.cl\n     */\n    EmbedEvent[\"DeletePersonalizedView\"] = \"deletePersonalisedView\";\n    /**\n     * Emitted when a user selects a different Personalized View or\n     * resets to the original/default view on a Liveboard.\n     * @example\n     * ```js\n     * liveboardEmbed.on(EmbedEvent.ChangePersonalizedView, (data) => {\n     *   console.log(data.viewName);    // 'Q4 Revenue' or 'Original View'\n     *   console.log(data.viewId);      // '2a021a12-...' or null (default)\n     *   console.log(data.liveboardId); // 'abc123...'\n     *   console.log(data.isPublic);    // true | false\n     * })\n     * ```\n     * @returns viewName: string - Name of the selected view,\n     *   or 'Original View' when reset to default.\n     * @returns viewId: string | null - GUID of the selected view,\n     *   or null when reset to default.\n     * @returns liveboardId: string\n     * @returns isPublic: boolean\n     * @version SDK: 1.48.0 | ThoughtSpot: 26.5.0.cl\n     */\n    EmbedEvent[\"ChangePersonalizedView\"] = \"changePersonalisedView\";\n    /**\n     * Emitted when a user creates a Worksheet.\n     * @version SDK: 1.27.0 | ThoughtSpot: 9.8.0.cl, 9.8.0.sw\n     */\n    EmbedEvent[\"CreateWorksheet\"] = \"createWorksheet\";\n    /**\n     * Emitted when the *Ask Sage* is initialized.\n     * @returns viewName: string\n     * @returns viewId: string\n     * @returns liveboardId: string\n     * @returns isPublic: boolean\n     * @version SDK: 1.29.0 | ThoughtSpot Cloud: 9.12.0.cl\n     */\n    EmbedEvent[\"AskSageInit\"] = \"AskSageInit\";\n    /**\n     * Emitted when a Liveboard or visualization is renamed.\n     * @version SDK: 1.28.0 | ThoughtSpot: 9.10.5.cl, 10.1.0.sw\n     */\n    EmbedEvent[\"Rename\"] = \"rename\";\n    /**\n     *\n     * This event allows developers to intercept search execution\n     * and implement logic that decides whether Search Data should return\n     * data or block the search operation.\n     *\n     * **Prerequisite**: Set`isOnBeforeGetVizDataInterceptEnabled` to `true`\n     * to ensure that `EmbedEvent.OnBeforeGetVizDataIntercept` is emitted\n     * when the embedding application user tries to run a search query.\n     *\n     * This framework applies only to `AppEmbed` and `SearchEmbed`.\n     * @param - Includes the following parameters:\n     * - `payload`: The payload received from the embed related to the Data API call.\n     * - `responder`: Contains elements that let developers define whether ThoughtSpot\n     *   will run or block the search operation, and if blocked, which error message to\n     *   provide.\n     * - `execute` - When `execute` returns `true`, the search is run.\n     * When `execute` returns `false`, the search is not executed.\n     * - `error` - Developers can customize the user-facing error message when `execute`\n     * is `false` by using the `error` parameters in `responder`.\n     * - `errorText` - The error message text shown to the user.\n     * @version SDK: 1.29.0 | ThoughtSpot: 10.3.0.cl\n     * @example\n     *\n     * This example blocks search operation and returns a custom error message:\n     * ```js\n     * embed.on(EmbedEvent.OnBeforeGetVizDataIntercept, (payload, responder) => {\n     *   responder({\n     *     data: {\n     *       execute: false,\n     *       error: {\n     *         // Provide a custom error message to explain why the search did not run.\n     *         errorText: 'This search query cannot be run. Please contact your administrator for more details.',\n     *       },\n     *     },\n     *   });\n     * })\n     * ```\n     * @example\n     *\n     * This example allows the search operation to run\n     * unless the query contains both `sales` and `county`,\n     * and returns a custom error message if the query is rejected:\n     * ```js\n     * embed.on(EmbedEvent.OnBeforeGetVizDataIntercept, (payload, responder) => {\n     *   // Record the search query submitted by the end user.\n     *   const query = payload.data.data.answer.search_query;\n     *\n     *   responder({\n     *     data: {\n     *       // Returns true as long as the query does not include both `sales` and `county`.\n     *       execute: !(query.includes('sales') && query.includes('county')),\n     *       error: {\n     *         // Provide a custom error message when the query is blocked by your logic.\n     *         errorText:\n     *           \"You can't use this query: \"\n     *           + query\n     *           + \". The 'sales' measure can never be used at the 'county' level. \"\n     *           + \"Please try another measure or remove 'county' from your search.\",\n     *       },\n     *     },\n     *   });\n     * })\n     * ```\n     */\n    EmbedEvent[\"OnBeforeGetVizDataIntercept\"] = \"onBeforeGetVizDataIntercept\";\n    /**\n     * Emitted when parameter changes in an Answer\n     * or Liveboard.\n     * ```js\n     * liveboardEmbed.on(EmbedEvent.ParameterChanged, (payload) => {\n     *     console.log('payload', payload);\n     * })\n     * ```\n     * @version SDK: 1.29.0 | ThoughtSpot: 10.3.0.cl\n     */\n    EmbedEvent[\"ParameterChanged\"] = \"parameterChanged\";\n    /**\n     * Emits when a table visualization is rendered in\n     * the ThoughtSpot embedded app.\n     *\n     * You can also use this event as a hook to trigger host events\n     * such as `HostEvent.TransformTableVizData` on the table visualization.\n     * The event payload contains the data used in the rendered table.\n     * You can extract the relevant data from the payload\n     * stored in `payload.data.data.columnDataLite`.\n     *\n     * `columnDataLite` is a multidimensional array that contains\n     * data values for each column, which was used in the query to\n     * generate the table visualization. To find and modify specific cell data,\n     * you can either loop through the array or directly access a cell if\n     * you know its position and data index.\n     *\n     * In the following code sample, the first cell in the first column\n     * (`columnDataLite[0].dataValue[0]`) is set to `new fob`.\n     * Note that any changes made to the data in the payload will only update the\n     * visual presentation and do not affect the underlying data.\n     * To persist data value modifications after a reload or during chart\n     * interactions such as drill down, ensure that the modified\n     * payload in the `columnDataLite` is passed on to\n     * `HostEvent.TransformTableVizData` and trigger an update to\n     * the table visualization.\n     *\n     * If the Row-Level Security (RLS) rules are applied on the\n     * Model, exercise caution when changing column\n     * or table cell values to maintain data security.\n     *\n     * @example\n     * ```js\n     * searchEmbed.on(EmbedEvent.TableVizRendered, (payload) => {\n     *      console.log(payload);\n     *      const columnDataLite = payload.data.data.columnDataLite;\n     *      columnDataLite[0].dataValue[0]=\"new fob\";\n     *      console.log('>>> new Data', columnDataLite);\n     *      searchEmbed.trigger(HostEvent.TransformTableVizData, columnDataLite);\n     * })\n     * ```\n     * @version SDK: 1.37.0 | ThoughtSpot: 10.8.0.cl\n     */\n    EmbedEvent[\"TableVizRendered\"] = \"TableVizRendered\";\n    /**\n     * Emitted when the liveboard is created from pin modal or Liveboard list page.\n     * You can use this event as a hook to trigger\n     * other events on liveboard creation.\n     *\n     * ```js\n     * liveboardEmbed.on(EmbedEvent.CreateLiveboard, (payload) => {\n     *     console.log('payload', payload);\n     * })\n     * ```\n     * @version SDK: 1.37.0 | ThoughtSpot: 10.8.0.cl\n     */\n    EmbedEvent[\"CreateLiveboard\"] = \"createLiveboard\";\n    /**\n     * Emitted when a user creates a Model.\n     * @version SDK: 1.37.0 | ThoughtSpot: 10.8.0.cl\n     */\n    EmbedEvent[\"CreateModel\"] = \"createModel\";\n    /**\n     * @hidden\n     * Emitted when a user exits present mode.\n     * @version SDK: 1.40.0 | ThoughtSpot: 10.11.0.cl\n     */\n    EmbedEvent[\"ExitPresentMode\"] = \"exitPresentMode\";\n    /**\n     * Emitted when a user requests the full height lazy load data.\n     * @version SDK: 1.39.0 | ThoughtSpot: 10.10.0.cl\n     * @hidden\n     */\n    EmbedEvent[\"RequestVisibleEmbedCoordinates\"] = \"requestVisibleEmbedCoordinates\";\n    /**\n     * Emitted when Spotter response is text data\n     * @example\n     * ```js\n     * spotterEmbed.on(EmbedEvent.SpotterData, (payload) => {\n     *     console.log('payload', payload);\n     * })\n     * ```\n     * @version SDK: 1.39.0 | ThoughtSpot: 10.10.0.cl\n     */\n    EmbedEvent[\"SpotterData\"] = \"SpotterData\";\n    /**\n     * Emitted when user opens up the data source preview modal in Spotter embed.\n     * @example\n     * ```js\n     * spotterEmbed.on(EmbedEvent.PreviewSpotterData, (payload) => {\n     *     console.log('payload', payload);\n     * })\n     * ```\n     * @version SDK: 1.39.0 | ThoughtSpot: 10.10.0.cl\n     */\n    EmbedEvent[\"PreviewSpotterData\"] = \"PreviewSpotterData\";\n    /**\n     * Emitted when user opens up the Add to Coaching modal on any visualization in Spotter Embed.\n     * @example\n     * ```js\n     * spotterEmbed.on(EmbedEvent.AddToCoaching, (payload) => {\n     *     console.log('payload', payload);\n     * })\n     * ```\n     * @version SDK: 1.45.0 | ThoughtSpot: 26.2.0.cl\n     */\n    EmbedEvent[\"AddToCoaching\"] = \"addToCoaching\";\n    /**\n     * Emitted when user opens up the data model instructions modal in Spotter embed.\n     * @example\n     * ```js\n     * spotterEmbed.on(EmbedEvent.DataModelInstructions, (payload) => {\n     *     console.log('payload', payload);\n     * })\n     * ```\n     * @version SDK: 1.46.0 | ThoughtSpot: 26.3.0.cl\n     */\n    EmbedEvent[\"DataModelInstructions\"] = \"DataModelInstructions\";\n    /**\n     * Emitted when the Spotter query is triggered in Spotter embed.\n     * @example\n     * ```js\n     * spotterEmbed.on(EmbedEvent.SpotterQueryTriggered, (payload) => {\n     *     console.log('payload', payload);\n     * })\n     * ```\n     * @version SDK: 1.39.0 | ThoughtSpot: 10.10.0.cl\n     */\n    EmbedEvent[\"SpotterQueryTriggered\"] = \"SpotterQueryTriggered\";\n    /**\n     * Emitted when the last Spotter query is edited in Spotter embed.\n     * @example\n     * ```js\n     * spotterEmbed.on(EmbedEvent.LastPromptEdited, (payload) => {\n     *     console.log('payload', payload);\n     * })\n     * ```\n     * @version SDK: 1.39.0 | ThoughtSpot: 10.10.0.cl\n     */\n    EmbedEvent[\"LastPromptEdited\"] = \"LastPromptEdited\";\n    /**\n     * Emitted when the last Spotter query is deleted in Spotter embed.\n     * @example\n     * ```js\n     * spotterEmbed.on(EmbedEvent.LastPromptDeleted, (payload) => {\n     *     console.log('payload', payload);\n     * })\n     * ```\n     * @version SDK: 1.39.0 | ThoughtSpot: 10.10.0.cl\n     */\n    EmbedEvent[\"LastPromptDeleted\"] = \"LastPromptDeleted\";\n    /**\n     * Emitted when the conversation is reset in Spotter embed.\n     * @example\n     * ```js\n     * spotterEmbed.on(EmbedEvent.ResetSpotterConversation, (payload) => {\n     *     console.log('payload', payload);\n     * })\n     * ```\n     * @version SDK: 1.39.0 | ThoughtSpot: 10.10.0.cl\n     */\n    EmbedEvent[\"ResetSpotterConversation\"] = \"ResetSpotterConversation\";\n    /**\n     * Emitted when the *Spotter* is initialized.\n     * @example\n     * ```js\n     * spotterEmbed.on(EmbedEvent.SpotterInit, (payload) => {\n     *     console.log('payload', payload);\n     * })\n     * ```\n     * @version SDK: 1.41.0 | ThoughtSpot: 10.12.0.cl\n     */\n    EmbedEvent[\"SpotterInit\"] = \"spotterInit\";\n    /**\n     * Emitted when a *Spotter* conversation has been successfully created.\n     * @example\n     * ```js\n     * spotterEmbed.on(EmbedEvent.SpotterLoadComplete, (payload) => {\n     *     console.log('payload', payload);\n     * })\n     * ```\n     * @version SDK: 1.44.0 | ThoughtSpot: 26.2.0.cl\n     */\n    EmbedEvent[\"SpotterLoadComplete\"] = \"spotterLoadComplete\";\n    /**\n     * @hidden\n     * Triggers when the embed listener is ready to receive events.\n     * This is used to trigger events after the embed container is loaded.\n     * @example\n     * ```js\n     * liveboardEmbed.on(EmbedEvent.EmbedListenerReady, () => {\n     *     console.log('EmbedListenerReady');\n     * })\n     * ```\n     */\n    EmbedEvent[\"EmbedListenerReady\"] = \"EmbedListenerReady\";\n    /**\n     * Emitted when the organization is switched.\n     * @example\n     * ```js\n     * appEmbed.on(EmbedEvent.OrgSwitched, (payload) => {\n     *     console.log('payload', payload);\n     * })\n     * ```\n     * @version SDK: 1.41.0 | ThoughtSpot: 10.12.0.cl\n     */\n    EmbedEvent[\"OrgSwitched\"] = \"orgSwitched\";\n    /**\n     * Emitted when the user intercepts a URL.\n     *\n     * Supported on all embed types.\n     *\n     * @example\n     *\n     * ```js\n     * embed.on(EmbedEvent.ApiIntercept, (payload, responder) => {\n     *     console.log('payload', payload);\n     *     responder({\n     *         data: {\n     *             execute: false,\n     *             error: {\n     *                 errorText: 'Error Occurred',\n     *             }\n     *         }\n     *     })\n     * })\n     * ```\n     *\n     * ```js\n     * // We can also send a response for the intercepted api\n     * embed.on(EmbedEvent.ApiIntercept, (payload, responder) => {\n     *     console.log('payload', payload);\n     *     responder({\n     *         data: {\n     *             execute: false,\n     *             response: {\n     *                body: {\n     *                    data: {\n     *                       // Some api response\n     *                    },\n     *                }\n     *             }\n     *         }\n     *     })\n     * })\n     *\n     * // here embed will use the response from the responder as the response for the api\n     * ```\n     *\n     * ```js\n     * // We can also send error in response for the intercepted api\n     * embed.on(EmbedEvent.ApiIntercept, (payload, responder) => {\n     *     console.log('payload', payload);\n     *     responder({\n     *         data: {\n     *             execute: false,\n     *             response: {\n     *                body: {\n     *                    errors: [{\n     *                      title: 'Error Occurred',\n     *                      description: 'Error Description',\n     *                      isUserError: true,\n     *                    }],\n     *                    data: {},\n     *                },\n     *             }\n     *         }\n     *     })\n     * })\n     * ```\n     * @version SDK: 1.43.0 | ThoughtSpot: 10.15.0.cl\n     */\n    EmbedEvent[\"ApiIntercept\"] = \"ApiIntercept\";\n    /**\n     * Emitted when a Spotter conversation is renamed.\n     * @example\n     * ```js\n     * spotterEmbed.on(EmbedEvent.SpotterConversationRenamed, (payload) => {\n     *     console.log('Conversation renamed', payload);\n     *     // payload: { convId: string, oldTitle: string, newTitle: string }\n     * })\n     * ```\n     * @version SDK: 1.46.0 | ThoughtSpot: 26.3.0.cl\n     */\n    EmbedEvent[\"SpotterConversationRenamed\"] = \"spotterConversationRenamed\";\n    /**\n     * Emitted when a Spotter conversation is deleted.\n     * @example\n     * ```js\n     * spotterEmbed.on(EmbedEvent.SpotterConversationDeleted, (payload) => {\n     *     console.log('Conversation deleted', payload);\n     *     // payload: { convId: string, title: string }\n     * })\n     * ```\n     * @version SDK: 1.46.0 | ThoughtSpot: 26.3.0.cl\n     */\n    EmbedEvent[\"SpotterConversationDeleted\"] = \"spotterConversationDeleted\";\n    /**\n     * Emitted when a Spotter conversation is selected/clicked.\n     * @example\n     * ```js\n     * spotterEmbed.on(EmbedEvent.SpotterConversationSelected, (payload) => {\n     *     console.log('Conversation selected', payload);\n     *     // payload: { convId: string, title: string, worksheetId: string }\n     * })\n     * ```\n     * @version SDK: 1.46.0 | ThoughtSpot: 26.3.0.cl\n     */\n    EmbedEvent[\"SpotterConversationSelected\"] = \"spotterConversationSelected\";\n    /**\n     * @hidden\n     * Emitted when the auth token is about to get expired and needs to be refreshed.\n     * @example\n     * ```js\n     * embed.on(EmbedEvent.RefreshAuthToken, (payload) => {\n     *     console.log('payload', payload);\n     * })\n     * ```\n     * @version SDK: 1.45.2 | ThoughtSpot: 26.3.0.cl\n     */\n    EmbedEvent[\"RefreshAuthToken\"] = \"RefreshAuthToken\";\n    /**\n     * Triggered whenever the page context changes, returning the current context along with the navigation stack.\n     * @example\n     * ```js\n     * embed.on(EmbedEvent.EmbedPageContextChanged, (payload) => {\n     *     console.log('payload', payload);\n     * })\n     * ```\n     * @version SDK: 1.47.2 | ThoughtSpot: 26.3.0.cl\n     */\n    EmbedEvent[\"EmbedPageContextChanged\"] = \"EmbedPageContextChanged\";\n    /**\n     * Represents a special embed event that is triggered whenever any host event is subscribed.\n     *\n     * You can listen to this event when you need to dispatch a host event during load or render,\n     * particularly in situations where timing issues may occur.\n     *\n     * @example\n     * ```js\n     * embed.on(`${HostEvent.Save} Subscribed`, () => {\n     *     // make action\n     * });\n     * ```\n     *\n     * @example\n     * ```js\n     * embed.on(subscribedEvent(HostEvent.Save), () => {\n     *     // make action\n     * });\n     * ```\n     * @version SDK: 1.48.0 | ThoughtSpot: 26.4.0.cl\n     */\n    EmbedEvent[\"Subscribed\"] = \"Subscribed\";\n    /**\n     * Emitted when a user clicks the **Send Test Email** button in the\n     * Liveboard schedule modal. Requires `isSendNowLiveboardSchedulingEnabled`\n     * to be enabled.\n     * @example\n     * ```js\n     * liveboardEmbed.on(EmbedEvent.SendTestScheduleEmail, (payload) => {\n     *     console.log('Send test email', payload);\n     *     // payload: { liveboardId: string, sendToSelf: boolean }\n     * })\n     * ```\n     * @version SDK: 1.48.0 | ThoughtSpot Cloud: 26.5.0.cl\n     */\n    EmbedEvent[\"SendTestScheduleEmail\"] = \"sendTestScheduleEmail\";\n    /**\n     * Emitted when the SpotterViz panel mounts in embed mode.\n     * @version SDK: 1.50.0 | ThoughtSpot Cloud: 26.7.0.cl\n     * @example\n     * ```js\n     * liveboardEmbed.on(EmbedEvent.SpotterVizInit, (payload) => {\n     *     console.log('SpotterViz initialized', payload);\n     *     // payload: { liveboardId: string }\n     * })\n     * ```\n     */\n    EmbedEvent[\"SpotterVizInit\"] = \"SpotterVizInit\";\n    /**\n     * Emitted when the user submits a prompt in the SpotterViz panel.\n     * @version SDK: 1.50.0 | ThoughtSpot Cloud: 26.7.0.cl\n     * @example\n     * ```js\n     * liveboardEmbed.on(EmbedEvent.SpotterVizQueryTriggered, (payload) => {\n     *     console.log('SpotterViz query triggered', payload);\n     *     // payload: { query: string, sessionId: string }\n     * })\n     * ```\n     */\n    EmbedEvent[\"SpotterVizQueryTriggered\"] = \"SpotterVizQueryTriggered\";\n    /**\n     * Emitted when the SpotterViz agent finishes responding.\n     * @version SDK: 1.50.0 | ThoughtSpot Cloud: 26.7.0.cl\n     * @example\n     * ```js\n     * liveboardEmbed.on(EmbedEvent.SpotterVizResponseComplete, (payload) => {\n     *     console.log('SpotterViz response complete', payload);\n     *     // payload: { sessionId: string, messageId: string }\n     * })\n     * ```\n     */\n    EmbedEvent[\"SpotterVizResponseComplete\"] = \"SpotterVizResponseComplete\";\n    /**\n     * Emitted when a checkpoint is created in the SpotterViz panel.\n     * @version SDK: 1.50.0 | ThoughtSpot Cloud: 26.7.0.cl\n     * @example\n     * ```js\n     * liveboardEmbed.on(EmbedEvent.SpotterVizCheckpointCreated, (payload) => {\n     *     console.log('SpotterViz checkpoint created', payload);\n     *     // payload: { checkpointId: string, source: string, label: string }\n     * })\n     * ```\n     */\n    EmbedEvent[\"SpotterVizCheckpointCreated\"] = \"SpotterVizCheckpointCreated\";\n    /**\n     * Emitted when a checkpoint is restored in the SpotterViz panel.\n     * @version SDK: 1.50.0 | ThoughtSpot Cloud: 26.7.0.cl\n     * @example\n     * ```js\n     * liveboardEmbed.on(EmbedEvent.SpotterVizCheckpointRestored, (payload) => {\n     *     console.log('SpotterViz checkpoint restored', payload);\n     *     // payload: { checkpointId: string, newGenNumber: number }\n     * })\n     * ```\n     */\n    EmbedEvent[\"SpotterVizCheckpointRestored\"] = \"SpotterVizCheckpointRestored\";\n    /**\n     * Emitted when an error occurs in the SpotterViz panel.\n     * @version SDK: 1.50.0 | ThoughtSpot Cloud: 26.7.0.cl\n     * @example\n     * ```js\n     * liveboardEmbed.on(EmbedEvent.SpotterVizError, (payload) => {\n     *     console.log('SpotterViz error', payload);\n     * })\n     * ```\n     */\n    EmbedEvent[\"SpotterVizError\"] = \"SpotterVizError\";\n    /**\n     * Emitted when the SpotterViz panel is closed.\n     * @version SDK: 1.50.0 | ThoughtSpot Cloud: 26.7.0.cl\n     * @example\n     * ```js\n     * liveboardEmbed.on(EmbedEvent.SpotterVizClosed, (payload) => {\n     *     console.log('SpotterViz panel closed', payload);\n     * })\n     * ```\n     */\n    EmbedEvent[\"SpotterVizClosed\"] = \"SpotterVizClosed\";\n    /**\n     * Emitted when a user clicks the **Refresh** button in the\n     * Liveboard header. Requires `enableLiveboardDataCache`\n     * to be enabled.\n     * @example\n     * ```js\n     * liveboardEmbed.on(EmbedEvent.RefreshLiveboardBrowserCache, (payload) => {\n     *     console.log('Liveboard browser cache refreshed', payload);\n     *     // payload: { liveboardId: string }\n     * })\n     * ```\n     * @version SDK: 1.49.0 | ThoughtSpot Cloud: 26.6.0.cl\n     */\n    EmbedEvent[\"RefreshLiveboardBrowserCache\"] = \"refreshLiveboardBrowserCache\";\n})(EmbedEvent || (EmbedEvent = {}));\n/**\n * Event types that can be triggered by the host application\n * to the embedded ThoughtSpot app.\n *\n * To trigger an event use the corresponding\n * {@link LiveboardEmbed.trigger} or {@link AppEmbed.trigger} or {@link\n * SearchEmbed.trigger} method.\n * @example\n * ```js\n * import { HostEvent } from '@thoughtspot/visual-embed-sdk';\n * // Or\n * // const { HostEvent } = window.tsembed;\n *\n * // create the liveboard embed.\n *\n * liveboardEmbed.trigger(HostEvent.UpdateRuntimeFilters, [\n *   { columnName: 'state', operator: RuntimeFilterOp.EQ, values: [\"california\"]}\n * ]);\n * ```\n * @example\n * If using React components to embed, use the format shown in this example:\n *\n * ```js\n *  const selectVizs = () => {\n *      embedRef.current.trigger(HostEvent.SetVisibleVizs, [\n *         \"715e4613-c891-4884-be44-aa8d13701c06\",\n *         \"3f84d633-e325-44b2-be25-c6650e5a49cf\"\n *      ]);\n *    };\n * ```\n *\n *\n * You can also attach an Embed event to a Host event to trigger\n * a specific action as shown in this example:\n * @example\n * ```js\n *  const EmbeddedComponent = () => {\n *       const embedRef = useRef(null); // import { useRef } from react\n *       const onLiveboardRendered = () => {\n *          embedRef.current.trigger(HostEvent.SetVisibleVizs, ['viz1', 'viz2']);\n *      };\n *\n *      return (\n *          <LiveboardEmbed\n *              ref={embedRef}\n *              liveboardId=\"<liveboard-guid>\"\n *              onLiveboardRendered={onLiveboardRendered}\n *          />\n *      );\n *  }\n * ```\n *\n * **Context Parameter (SDK: 1.45.2+)**\n *\n * Starting from SDK version 1.45.2 | ThoughtSpot: 26.3.0.cl, you can optionally pass a\n * `ContextType` as the third parameter to the `trigger` method to specify the context\n * from which the event is triggered. This helps ThoughtSpot understand the current page\n * context (Search, Answer, Liveboard, or Spotter) for better event handling.\n *\n * @example\n * ```js\n * import { HostEvent, ContextType } from '@thoughtspot/visual-embed-sdk';\n *\n * // Trigger Pin event with Search context\n * appEmbed.trigger(HostEvent.Pin, {\n *     vizId: \"123\",\n *     liveboardId: \"456\"\n * }, ContextType.Search);\n * ```\n *\n * @group Events\n */\nexport var HostEvent;\n(function (HostEvent) {\n    /**\n     * Triggers a search operation with the search tokens specified in\n     * the search query string.\n     * Supported in `AppEmbed` and `SearchEmbed` deployments.\n     * Includes the following properties:\n     * @param - Includes the following keys:\n     * - `searchQuery`: Query string with search tokens.\n     * - `dataSources`: Data source GUID to search on.\n     *   Although an array, only a single source is supported.\n     * - `execute`: Executes search and updates the existing query.\n     * @example\n     * ```js\n     * searchEmbed.trigger(HostEvent.Search, {\n         searchQuery: \"[sales] by [item type]\",\n         dataSources: [\"cd252e5c-b552-49a8-821d-3eadaa049cca\"],\n         execute: true\n       });\n     * ```\n     * @example\n     * ```js\n     * // Trigger search from search context\n     * import { ContextType } from '@thoughtspot/visual-embed-sdk';\n     * appEmbed.trigger(HostEvent.Search, {\n     *     searchQuery: \"[revenue] by [region]\",\n     *     dataSources: [\"cd252e5c-b552-49a8-821d-3eadaa049cca\"],\n     *     execute: true\n     * }, ContextType.Search);\n     * ```\n     */\n    HostEvent[\"Search\"] = \"search\";\n    /**\n     * Triggers a drill on certain points of the specified column\n     * Includes the following properties:\n     * @param - Includes the following keys:\n     * - `points`: An object containing `selectedPoints` and/or `clickedPoint`\n     *   to drill to. For example, `{ selectedPoints: [] }`.\n     * - `columnGuid`: Optional. GUID of the column to drill by. If not provided,\n     *   it will auto drill by the configured column.\n     * - `autoDrillDown`: Optional. If `true`, the drill down will be done automatically\n     *   on the most popular column.\n     * - `vizId` (TS >= 9.8.0): Optional. The GUID of the visualization to drill in case\n     *   of a Liveboard. In Spotter embed, `vizId` refers to the Answer ID and is\n     *   **required**.\n     * @example\n     * ```js\n     * searchEmbed.on(EmbedEvent.VizPointDoubleClick, (payload) => {\n     *       console.log(payload);\n     *       const clickedPoint = payload.data.clickedPoint;\n     *       const selectedPoint = payload.data.selectedPoints;\n     *       console.log('>>> called', clickedPoint);\n     *       searchEmbed.trigger(HostEvent.DrillDown, {\n     *             points: {\n     *                  clickedPoint,\n     *                  selectedPoints: selectedPoint\n     *             },\n     *             autoDrillDown: true,\n     *       });\n     * })\n     * ```\n     * @example\n     * ```js\n     *  // Works with TS 9.8.0 and above\n     *\n     *  liveboardEmbed.on(EmbedEvent.VizPointDoubleClick, (payload) => {\n     *    console.log(payload);\n     *    const clickedPoint = payload.data.clickedPoint;\n     *    const selectedPoint = payload.data.selectedPoints;\n     *    console.log('>>> called', clickedPoint);\n     *    liveboardEmbed.trigger(HostEvent.DrillDown, {\n     *      points: {\n     *        clickedPoint,\n     *        selectedPoints: selectedPoint\n     *      },\n     *      columnGuid: \"<guid of the column to drill>\",\n     *      vizId: payload.data.vizId\n     *    });\n     *  })\n     * ```\n     * @example\n     * ```js\n     * // Drill down from answer context\n     * import { ContextType } from '@thoughtspot/visual-embed-sdk';\n     * appEmbed.trigger(HostEvent.DrillDown, {\n     *     points: { clickedPoint, selectedPoints },\n     *     autoDrillDown: true\n     * }, ContextType.Answer);\n     * ```\n     * @example\n     * ```js\n     * // Drill down from search context\n     * import { ContextType } from '@thoughtspot/visual-embed-sdk';\n     * searchEmbed.trigger(HostEvent.DrillDown, {\n     *     points: { clickedPoint, selectedPoints },\n     *     columnGuid: \"column-guid\"\n     * }, ContextType.Search);\n     * ```\n     * @version SDK: 1.5.0 | ThoughtSpot: ts7.oct.cl, 7.2.1\n     */\n    HostEvent[\"DrillDown\"] = \"triggerDrillDown\";\n    /**\n     * Apply filters\n     * @hidden\n     */\n    HostEvent[\"Filter\"] = \"filter\";\n    /**\n     * Reload the Answer or visualization\n     * @hidden\n     */\n    HostEvent[\"Reload\"] = \"reload\";\n    /**\n     * Get iframe URL for the current embed view.\n     * @example\n     * ```js\n     * const url = embed.trigger(HostEvent.GetIframeUrl);\n     * console.log(\"iFrameURL\",url);\n     * ```\n     * @example\n     * ```js\n     * // Get iframe URL from specific context\n     * import { ContextType } from '@thoughtspot/visual-embed-sdk';\n     * const url = await appEmbed.trigger(HostEvent.GetIframeUrl, {}, ContextType.Answer);\n     * console.log(\"iFrameURL\", url);\n     * ```\n     * @version SDK: 1.35.0 | ThoughtSpot: 10.4.0.cl\n     */\n    HostEvent[\"GetIframeUrl\"] = \"GetIframeUrl\";\n    /**\n     * Display specific visualizations on a Liveboard.\n     * @param - An array of GUIDs of the visualization to show. The visualization IDs not passed\n     *  in this parameter will be hidden.\n     * @example\n     * ```js\n     * liveboardEmbed.trigger(HostEvent.SetVisibleVizs, [\n     *  '730496d6-6903-4601-937e-2c691821af3c',\n     *  'd547ec54-2a37-4516-a222-2b06719af726'])\n     * ```\n     * @example\n     * ```js\n     * // Set visible vizs from liveboard context\n     * import { ContextType } from '@thoughtspot/visual-embed-sdk';\n     * liveboardEmbed.trigger(HostEvent.SetVisibleVizs, [\n     *     '730496d6-6903-4601-937e-2c691821af3c',\n     *     'd547ec54-2a37-4516-a222-2b06719af726'\n     * ], ContextType.Liveboard);\n     * ```\n     * @version SDK: 1.6.0 | ThoughtSpot: ts8.nov.cl, 8.4.1.sw\n     */\n    HostEvent[\"SetVisibleVizs\"] = \"SetPinboardVisibleVizs\";\n    /**\n     * Set a Liveboard tab as an active tab.\n     * @param - tabId - string of id of Tab to show\n     * @example\n     * ```js\n     * liveboardEmbed.trigger(HostEvent.SetActiveTab,{\n     *  tabId:'730496d6-6903-4601-937e-2c691821af3c'\n     * })\n     * ```\n     * @example\n     * ```js\n     * // Set active tab from liveboard context\n     * import { ContextType } from '@thoughtspot/visual-embed-sdk';\n     * liveboardEmbed.trigger(HostEvent.SetActiveTab, {\n     *     tabId: '730496d6-6903-4601-937e-2c691821af3c'\n     * }, ContextType.Liveboard);\n     * ```\n     * @version SDK: 1.24.0 | ThoughtSpot: 9.5.0.cl, 9.5.1-sw\n     */\n    HostEvent[\"SetActiveTab\"] = \"SetActiveTab\";\n    /**\n     * Updates the runtime filters applied on a Liveboard. The filter\n     * attributes passed with this event are appended to the existing runtime\n     * filters applied on a Liveboard.\n     *\n     * **Note**: `HostEvent.UpdateRuntimeFilters` is supported in `LiveboardEmbed`\n     * and `AppEmbed` only. In full application embedding, this event updates\n     * the runtime filters applied on the Liveboard and saved Answer objects.\n     *\n     * @param - Array of {@link RuntimeFilter} objects. Each item includes:\n     * - `columnName`: Name of the column to filter on.\n     * - `operator`: {@link RuntimeFilterOp} to apply. For more information, see\n     *   link:https://developers.thoughtspot.com/docs/runtime-filters#rtOperator[Developer Documentation].\n     * - `values`: List of operands. Some operators such as EQ and LE allow a single\n     *   value, whereas BW and IN accept multiple values.\n     *\n     * **Note**: Updating runtime filters resets the ThoughtSpot\n     * object to its original state and applies new filter conditions.\n     * Any user changes (like drilling into a visualization)\n     * will be cleared, restoring the original visualization\n     * with the updated filters.\n     *\n\n     * @example\n     * ```js\n     * liveboardEmbed.trigger(HostEvent.UpdateRuntimeFilters, [\n     *   {columnName: \"state\",operator: RuntimeFilterOp.EQ,values: [\"michigan\"]},\n     *   {columnName: \"item type\",operator: RuntimeFilterOp.EQ,values: [\"Jackets\"]}\n     * ])\n     * ```\n     * @example\n     * ```js\n     * // Update runtime filters from liveboard context\n     * import { ContextType } from '@thoughtspot/visual-embed-sdk';\n     * liveboardEmbed.trigger(HostEvent.UpdateRuntimeFilters, [\n     *     {columnName: \"region\", operator: RuntimeFilterOp.EQ, values: [\"west\"]},\n     *     {columnName: \"product\", operator: RuntimeFilterOp.IN, values: [\"shoes\", \"boots\"]}\n     * ], ContextType.Liveboard);\n     * ```\n     * @version SDK: 1.9.0 | ThoughtSpot: 8.1.0.cl, 8.4.1.sw\n     * @important\n     */\n    HostEvent[\"UpdateRuntimeFilters\"] = \"UpdateRuntimeFilters\";\n    /**\n     * Navigate to a specific page in the embedded ThoughtSpot application.\n     * This is the same as calling `appEmbed.navigateToPage(path, true)`.\n     * @param - `path` - the path to navigate to go forward or back. The path value can\n     * be a number; for example, `1`, `-1`.\n     * @example\n     * ```js\n     * appEmbed.navigateToPage(-1)\n     * ```\n     * @version SDK: 1.12.0 | ThoughtSpot: 8.4.0.cl, 8.4.1.sw\n     */\n    HostEvent[\"Navigate\"] = \"Navigate\";\n    /**\n     * Open the filter panel for a particular column.\n     * Works with Search and Liveboard embed.\n     * @param - { columnId: string,\n     *  name: string,\n     *  type: ATTRIBUTE/MEASURE,\n     *  dataType: INT64/CHAR/DATE }\n     * @example\n     * ```js\n     * searchEmbed.trigger(HostEvent.OpenFilter,\n     *  {column: { columnId: '<column-GUID>', name: 'column name', type: 'ATTRIBUTE', dataType: 'INT64'}})\n     * ```\n     * @example\n     * ```js\n     * LiveboardEmbed.trigger(HostEvent.OpenFilter,\n     *   { column: {columnId: '<column-GUID>'}})\n     * ```\n     * @example\n     * ```js\n     * // Open filter from search context\n     * import { ContextType } from '@thoughtspot/visual-embed-sdk';\n     * searchEmbed.trigger(HostEvent.OpenFilter, {\n     *     column: { columnId: '<column-GUID>', name: 'region', type: 'ATTRIBUTE', dataType: 'CHAR'}\n     * }, ContextType.Search);\n     * ```\n     * @version SDK: 1.21.0 | ThoughtSpot: 9.2.0.cl\n     */\n    HostEvent[\"OpenFilter\"] = \"openFilter\";\n    /**\n     * Add columns to the current search query.\n     * @param - { columnIds: string[] }\n     * @example\n     * ```js\n     * searchEmbed.trigger(HostEvent.AddColumns, { columnIds: ['<column-GUID>','<column-GUID>'] })\n     * ```\n     * @example\n     * ```js\n     * // Add columns from search context\n     * import { ContextType } from '@thoughtspot/visual-embed-sdk';\n     * searchEmbed.trigger(HostEvent.AddColumns, {\n     *     columnIds: ['col-guid-1', 'col-guid-2']\n     * }, ContextType.Search);\n     * ```\n     * @version SDK: 1.21.0 | ThoughtSpot: 9.2.0.cl\n     */\n    HostEvent[\"AddColumns\"] = \"addColumns\";\n    /**\n     * Remove a column from the current search query.\n     * @param - { columnId: string }\n     * @example\n     * ```js\n     * searchEmbed.trigger(HostEvent.RemoveColumn, { columnId: '<column-Guid>' })\n     * ```\n     * @example\n     * ```js\n     * // Remove column from search context\n     * import { ContextType } from '@thoughtspot/visual-embed-sdk';\n     * searchEmbed.trigger(HostEvent.RemoveColumn, {\n     *     columnId: 'column-guid'\n     * }, ContextType.Search);\n     * ```\n     * @version SDK: 1.21.0 | ThoughtSpot: 9.2.0.cl\n     */\n    HostEvent[\"RemoveColumn\"] = \"removeColumn\";\n    /**\n     * Get the transient state of a Liveboard as encoded content.\n     * This includes unsaved and ad hoc changes such as\n     * Liveboard filters, runtime filters applied on visualizations on a\n     * Liveboard, and Liveboard layout, changes to visualizations such as\n     * sorting, toggling of legends, and data drill down.\n     * For more information, see\n     * link:https://developers.thoughtspot.com/docs/fetch-data-and-report-apis#transient-lb-content[Liveboard data with unsaved changes].\n     * @example\n     * ```js\n     * liveboardEmbed.trigger(HostEvent.getExportRequestForCurrentPinboard).then(\n     * data=>console.log(data))\n     * ```\n     * @version SDK: 1.13.0 | ThoughtSpot: 8.5.0.cl, 8.8.1.sw\n     */\n    HostEvent[\"getExportRequestForCurrentPinboard\"] = \"getExportRequestForCurrentPinboard\";\n    /**\n     * Trigger **Pin** action on an embedded object.\n     * If no parameters are defined, the pin action is triggered\n     * for the Answer that the user is currently on\n     * and a modal opens for Liveboard selection.\n     * To add an Answer or visualization to a Liveboard programmatically without\n     * requiring additional user input via the *Pin to Liveboard* modal, define\n     * the following parameters:\n     *\n     * @param - Includes the following keys:\n     * - `vizId`: GUID of the saved Answer or Spotter visualization ID to pin to a\n     * Liveboard.\n     *   Optional when pinning a new chart or table generated from a Search query.\n     *   **Required** in Spotter Embed.\n     * - `liveboardId`: GUID of the Liveboard to pin an Answer. If there is no Liveboard,\n     *   specify the `newLiveboardName` parameter to create a new Liveboard.\n     * - `tabId`: GUID of the Liveboard tab. Adds the Answer to the Liveboard tab\n     *   specified in the code.\n     * - `newVizName`: Name string for the Answer or visualization. If defined,\n     *   this parameter adds a new visualization object or creates a copy of the\n     *   Answer or visualization specified in `vizId`.\n     *   Required.\n     * - `newLiveboardName`: Name string for the Liveboard.\n     *   Creates a new Liveboard object with the specified name.\n     * - `newTabName`: Name of the tab. Adds a new tab Liveboard specified\n     *   in the code.\n     *\n     * @example\n     * ```js\n     * const pinResponse = await appEmbed.trigger(HostEvent.Pin, {\n     *     vizId: \"123\",\n     *     newVizName: \"Sales by region\",\n     *     liveboardId: \"123\",\n     *     tabId: \"123\"\n     *  });\n     * ```\n     * @example\n     * ```js\n     * const pinResponse = await appEmbed.trigger(HostEvent.Pin, {\n     *     newVizName: \"Total sales of Jackets\",\n     *     liveboardId: \"123\"\n     *  });\n     * ```\n     *\n     * @example\n     * ```js\n     * const pinResponse = await searchEmbed.trigger(HostEvent.Pin, {\n     *     newVizName: \"Sales by state\",\n     *     newLiveboardName: \"Sales\",\n     *     newTabName: \"Products\"\n     *  });\n     * ```\n     * @example\n     * ```js\n     * appEmbed.trigger(HostEvent.Pin)\n     * ```\n     * @example\n     * ```js\n\n    * // You can use the Data event dispatched on each answer creation to get the vizId and use in Pin host event.\n    * let latestSpotterVizId = '';\n    * spotterEmbed.on(EmbedEvent.Data, (payload) => {\n    *   latestSpotterVizId = payload.data.id;\n    * });\n    *\n    * spotterEmbed.trigger(HostEvent.Pin, { vizId: latestSpotterVizId });\n    * ```\n     * @example\n     * ```js\n     * // Using context parameter to specify the context type (SDK: 1.45.2+)\n     * // Pin from a search answer context\n     * import { ContextType } from '@thoughtspot/visual-embed-sdk';\n     * appEmbed.trigger(HostEvent.Pin, {\n     *     vizId: \"123\",\n     *     newVizName: \"Sales by region\",\n     *     liveboardId: \"456\"\n     *  }, ContextType.Search);\n     * ```\n     * @example\n     * ```js\n     * // Pin from an answer context (explore modal/page) (SDK: 1.45.2+)\n     * import { ContextType } from '@thoughtspot/visual-embed-sdk';\n     * appEmbed.trigger(HostEvent.Pin, {\n     *     vizId: \"789\",\n     *     newVizName: \"Revenue trends\",\n     *     liveboardId: \"456\"\n     *  }, ContextType.Answer);\n     * ```\n     * @example\n     * ```js\n     * // Pin from a spotter context (SDK: 1.45.2+)\n     * import { ContextType } from '@thoughtspot/visual-embed-sdk';\n     * appEmbed.trigger(HostEvent.Pin, {\n     *     vizId: latestSpotterVizId,\n     *     newVizName: \"AI-generated insights\",\n     *     liveboardId: \"456\"\n     *  }, ContextType.Spotter);\n     * ```\n     *\n     * @version SDK: 1.15.0 | ThoughtSpot: 8.7.0.cl, 8.8.1.sw\n     */\n    HostEvent[\"Pin\"] = \"pin\";\n    /**\n     * Trigger the **Show Liveboard details** action\n     * on an embedded Liveboard.\n     * @example\n     * ```js\n     * liveboardEmbed.trigger(HostEvent.LiveboardInfo)\n     *```\n     * @example\n     * ```js\n     * // Show liveboard info from liveboard context\n     * import { ContextType } from '@thoughtspot/visual-embed-sdk';\n     * liveboardEmbed.trigger(HostEvent.LiveboardInfo, {}, ContextType.Liveboard);\n     * ```\n     * @version SDK: 1.15.0 | ThoughtSpot: 8.7.0.cl, 8.8.1.sw\n     */\n    HostEvent[\"LiveboardInfo\"] = \"pinboardInfo\";\n    /**\n     * Trigger the **Schedule** action on an embedded Liveboard.\n     * @example\n     * ```js\n     *  liveboardEmbed.trigger(HostEvent.Schedule)\n     * ```\n     * @example\n     * ```js\n     * // Schedule from liveboard context\n     * import { ContextType } from '@thoughtspot/visual-embed-sdk';\n     * liveboardEmbed.trigger(HostEvent.Schedule, {}, ContextType.Liveboard);\n     * ```\n     * @version SDK: 1.15.0 | ThoughtSpot: 8.7.0.cl, 8.8.1.sw\n     */\n    HostEvent[\"Schedule\"] = \"subscription\";\n    /**\n     * Trigger the **Manage schedule** action on an embedded Liveboard\n     * @example\n     * ```js\n     *  liveboardEmbed.trigger(HostEvent.ScheduleList)\n     * ```\n     * @example\n     * ```js\n     * // Manage schedules from liveboard context\n     * import { ContextType } from '@thoughtspot/visual-embed-sdk';\n     * liveboardEmbed.trigger(HostEvent.ScheduleList, {}, ContextType.Liveboard);\n     * ```\n     * @version SDK: 1.15.0 | ThoughtSpot: 8.7.0.cl, 8.8.1.sw\n     */\n    HostEvent[\"SchedulesList\"] = \"schedule-list\";\n    /**\n     * Trigger the **Export TML** action on an embedded Liveboard or\n     * Answer.\n     * @example\n     * ```js\n     * liveboardEmbed.trigger(HostEvent.ExportTML)\n     * ```\n     * @example\n     * ```js\n     * // Export TML from liveboard context\n     * import { ContextType } from '@thoughtspot/visual-embed-sdk';\n     * liveboardEmbed.trigger(HostEvent.ExportTML, {}, ContextType.Liveboard);\n     * ```\n     * @example\n     * ```js\n     * // Export TML from search-answer context\n     * import { ContextType } from '@thoughtspot/visual-embed-sdk';\n     * appEmbed.trigger(HostEvent.ExportTML, {}, ContextType.Search);\n     * ```\n     * @version SDK: 1.15.0 | ThoughtSpot: 8.7.0.cl, 8.8.1.sw\n     */\n    HostEvent[\"ExportTML\"] = \"exportTSL\";\n    /**\n     * Trigger the **Edit TML** action on an embedded Liveboard or\n     * saved Answers in the full application embedding.\n     * @example\n     * ```js\n     * liveboardEmbed.trigger(HostEvent.EditTML)\n     * ```\n     * @example\n     * ```js\n     * // Edit TML from liveboard context\n     * import { ContextType } from '@thoughtspot/visual-embed-sdk';\n     * liveboardEmbed.trigger(HostEvent.EditTML, {}, ContextType.Liveboard);\n     * ```\n     * @example\n     * ```js\n     * // Edit TML from search-answer context\n     * import { ContextType } from '@thoughtspot/visual-embed-sdk';\n     * appEmbed.trigger(HostEvent.EditTML, {}, ContextType.Search);\n     * ```\n     * @version SDK: 1.15.0 | ThoughtSpot: 8.7.0.cl, 8.8.1.sw\n     */\n    HostEvent[\"EditTML\"] = \"editTSL\";\n    /**\n     * Trigger the **Update TML** action on an embedded Liveboard.\n     * @example\n     * ```js\n     * liveboardEmbed.trigger(HostEvent.UpdateTML)\n     * ```\n     * @example\n     * ```js\n     * // Update TML from liveboard context\n     * import { ContextType } from '@thoughtspot/visual-embed-sdk';\n     * liveboardEmbed.trigger(HostEvent.UpdateTML, {}, ContextType.Liveboard);\n     * ```\n     * @version SDK: 1.15.0 | ThoughtSpot: 8.7.0.cl, 8.8.1.sw\n     */\n    HostEvent[\"UpdateTML\"] = \"updateTSL\";\n    /**\n     * Trigger the **Download PDF** action on an embedded Liveboard,\n     * visualization or Answer.\n     *\n     * @param - `vizId` refers to the Answer ID in Spotter embed and is required in Spotter embed.\n     *\n     * **NOTE**: The **Download** > **PDF** action is available on\n     * visualizations and Answers if the data is in tabular format.\n     * @example\n     * ```js\n     * liveboardEmbed.trigger(HostEvent.DownloadAsPdf)\n     * ```\n     * @example\n     * ```js\n\n    * // You can use the Data event dispatched on each answer creation to get the vizId and use in DownloadAsPdf host event.\n    * let latestSpotterVizId = '';\n    * spotterEmbed.on(EmbedEvent.Data, (payload) => {\n    *   latestSpotterVizId = payload.data.id;\n    * });\n    *\n    * spotterEmbed.trigger(HostEvent.DownloadAsPdf, { vizId: latestSpotterVizId });\n    * ```\n     * @example\n     * ```js\n     * // Download as PDF from search-answer context\n     * import { ContextType } from '@thoughtspot/visual-embed-sdk';\n     * appEmbed.trigger(HostEvent.DownloadAsPdf, {}, ContextType.Search);\n     * ```\n     * @example\n     * ```js\n     * // Download as PDF from liveboard context\n     * import { ContextType } from '@thoughtspot/visual-embed-sdk';\n     * liveboardEmbed.trigger(HostEvent.DownloadAsPdf, {}, ContextType.Liveboard);\n     * ```\n     *\n     * @version SDK: 1.15.0 | ThoughtSpot: 8.7.0.cl, 8.8.1.sw\n     */\n    HostEvent[\"DownloadAsPdf\"] = \"downloadAsPdf\";\n    /**\n     * Trigger the **Download Liveboard as Continuous PDF** action on an\n     * embedded Liveboard.\n     *\n     * @example\n     * ```js\n     * liveboardEmbed.trigger(HostEvent.DownloadLiveboardAsContinuousPDF)\n     * ```\n     *\n     * @version SDK: 1.48.0 | ThoughtSpot: 26.5.0.cl\n     */\n    HostEvent[\"DownloadLiveboardAsContinuousPDF\"] = \"downloadLiveboardAsContinuousPDF\";\n    /**\n     * Trigger the **AI Highlights** action on an embedded Liveboard\n     *\n     * @example\n     * ```js\n     * liveboardEmbed.trigger(HostEvent.AIHighlights)\n     * ```\n     * @version SDK: 1.44.0 | ThoughtSpot: 10.15.0.cl\n     */\n    HostEvent[\"AIHighlights\"] = \"AIHighlights\";\n    /**\n     * Trigger the **Make a copy** action on a Liveboard,\n     * visualization, or Answer page.\n     * @example\n     * ```js\n     * liveboardEmbed.trigger(HostEvent.MakeACopy)\n     * ```\n     * @example\n     * ```js\n     * liveboardEmbed.trigger(HostEvent.MakeACopy, {\n     * vizId: '730496d6-6903-4601-937e-2c691821af3c'})\n     * ```\n     * @example\n     * ```js\n     * vizEmbed.trigger(HostEvent.MakeACopy)\n     * ```\n     * @example\n     * ```js\n     * searchEmbed.trigger(HostEvent.MakeACopy)\n     * ```\n     * @example\n     * ```js\n     * // You can use the Data event dispatched on each answer creation to get the vizId and use in MakeACopy host event.\n     * let latestSpotterVizId = '';\n     * spotterEmbed.on(EmbedEvent.Data, (payload) => {\n     *   latestSpotterVizId = payload.data.id;\n     * });\n     *\n     * spotterEmbed.trigger(HostEvent.MakeACopy, { vizId: latestSpotterVizId });\n     * ```\n     * @example\n     * ```js\n     * // Make a copy from answer context\n     * import { ContextType } from '@thoughtspot/visual-embed-sdk';\n     * appEmbed.trigger(HostEvent.MakeACopy, {}, ContextType.Answer);\n     * ```\n     * @example\n     * ```js\n     * // Make a copy from search context\n     * import { ContextType } from '@thoughtspot/visual-embed-sdk';\n     * appEmbed.trigger(HostEvent.MakeACopy, {}, ContextType.Search);\n     * ```\n     * @version SDK: 1.15.0 | ThoughtSpot: 8.7.0.cl, 8.8.1.sw\n     */\n    HostEvent[\"MakeACopy\"] = \"makeACopy\";\n    /**\n     * Trigger the **Delete** action for a Liveboard.\n     * @example\n     * ```js\n     * appEmbed.trigger(HostEvent.Remove)\n     * ```\n     * @version SDK: 1.15.0 | ThoughtSpot: 8.7.0.cl, 8.8.1.sw\n     * @example\n     * ```js\n     * liveboardEmbed.trigger(HostEvent.Remove)\n     * ```\n     * @version SDK: 1.37.0 | ThoughtSpot: 10.8.0.cl, 10.10.0.sw\n     */\n    HostEvent[\"Remove\"] = \"delete\";\n    /**\n     * Trigger the **Explore** action on a visualization.\n     * @param - an object with `vizId` as a key\n     * @example\n     * ```js\n     * liveboardEmbed.trigger(HostEvent.Explore, {vizId: '730496d6-6903-4601-937e-2c691821af3c'})\n     * ```\n     * @example\n     * ```js\n     * // Explore from liveboard context\n     * import { ContextType } from '@thoughtspot/visual-embed-sdk';\n     * liveboardEmbed.trigger(HostEvent.Explore, {\n     *     vizId: '730496d6-6903-4601-937e-2c691821af3c'\n     * }, ContextType.Liveboard);\n     * ```\n     * @version SDK: 1.15.0 | ThoughtSpot: 8.7.0.cl, 8.8.1.sw\n     */\n    HostEvent[\"Explore\"] = \"explore\";\n    /**\n     * Trigger the **Create alert** action on a KPI chart\n     * in a Liveboard or saved Answer.\n     * @param - an object with `vizId` as a key\n     * @example\n     * ```js\n     * liveboardEmbed.trigger(HostEvent.CreateMonitor, {\n     *  vizId: '730496d6-6903-4601-937e-2c691821af3c'\n     * })\n     * ```\n     * @example\n     * ```js\n     * searchEmbed.trigger(HostEvent.CreateMonitor)\n     * ```\n     * @example\n     * ```js\n     * // Create monitor from answer context\n     * import { ContextType } from '@thoughtspot/visual-embed-sdk';\n     * appEmbed.trigger(HostEvent.CreateMonitor, {}, ContextType.Answer);\n     * ```\n     * @example\n     * ```js\n     * // Create monitor from liveboard context\n     * import { ContextType } from '@thoughtspot/visual-embed-sdk';\n     * liveboardEmbed.trigger(HostEvent.CreateMonitor, {\n     *     vizId: '730496d6-6903-4601-937e-2c691821af3c'\n     * }, ContextType.Liveboard);\n     * ```\n     * @version SDK: 1.15.0 | ThoughtSpot: 8.7.0.cl, 8.8.1.sw\n     */\n    HostEvent[\"CreateMonitor\"] = \"createMonitor\";\n    /**\n     * Trigger the **Manage alerts** action on a KPI chart\n     * in a visualization or saved Answer.\n     * @param - an object with `vizId` as a key\n     * @example\n     * ```js\n     * liveboardEmbed.trigger(HostEvent.ManageMonitor, {\n     *  vizId: '730496d6-6903-4601-937e-2c691821af3c'\n     * })\n     * ```\n     * @example\n     * ```js\n     * searchEmbed.trigger(HostEvent.ManageMonitor)\n     * ```\n     * @example\n     * ```js\n     * vizEmbed.trigger(HostEvent.ManageMonitor)\n     * ```\n     * @example\n     * ```js\n     * // Manage monitor from answer context\n     * import { ContextType } from '@thoughtspot/visual-embed-sdk';\n     * appEmbed.trigger(HostEvent.ManageMonitor, {}, ContextType.Answer);\n     * ```\n     * @example\n     * ```js\n     * // Manage monitor from liveboard context\n     * import { ContextType } from '@thoughtspot/visual-embed-sdk';\n     * liveboardEmbed.trigger(HostEvent.ManageMonitor, {\n     *     vizId: '730496d6-6903-4601-937e-2c691821af3c'\n     * }, ContextType.Liveboard);\n     * ```\n     * @version SDK: 1.15.0 | ThoughtSpot: 8.7.0.cl, 8.8.1.sw\n     */\n    HostEvent[\"ManageMonitor\"] = \"manageMonitor\";\n    /**\n     * Trigger the **Edit** action on a Liveboard or a visualization\n     * on a Liveboard.\n     *\n     * This event is not supported in visualization embed and search embed.\n     * @param - Object parameter. Includes the following keys:\n     * - `vizId`: To trigger the action for a specific visualization in Liveboard embed,\n     *   pass in `vizId` as a key. In Spotter embed, `vizId` refers to the Answer ID and\n     *   is **required**.\n     *\n     * @example\n     * ```js\n     * liveboardEmbed.trigger(HostEvent.Edit)\n     * ```\n     * ```js\n     * liveboardEmbed.trigger(HostEvent.Edit, {vizId:\n     * '730496d6-6903-4601-937e-2c691821af3c'})\n     * ```\n     * @example\n     * ```js\n     * spotterEmbed.trigger(HostEvent.Edit);\n     * ```\n     * @example\n     * ```js\n     * // Using context parameter to edit liveboard context\n     * import { ContextType } from '@thoughtspot/visual-embed-sdk';\n     * liveboardEmbed.trigger(HostEvent.Edit, {}, ContextType.Liveboard);\n     * ```\n     * @example\n     * ```js\n     * // Edit from search context\n     * import { ContextType } from '@thoughtspot/visual-embed-sdk';\n     * appEmbed.trigger(HostEvent.Edit, {}, ContextType.Search);\n     * ```\n     * * @example\n     * ```js\n     * // Edit from spotter context\n     * import { ContextType } from '@thoughtspot/visual-embed-sdk';\n     * appEmbed.trigger(HostEvent.Edit, {\n     *     vizId: '730496d6-6903-4601-937e-2c691821af3c'\n     * }, ContextType.Spotter);\n     * ```\n     * @version SDK: 1.15.0 | ThoughtSpot: 8.7.0.cl, 8.8.1.sw\n     */\n    HostEvent[\"Edit\"] = \"edit\";\n    /**\n     * Trigger the **Copy link** action on a Liveboard or visualization\n     * @param - object - to trigger the action for a\n     * specific visualization in Liveboard embed, pass in `vizId` as a key\n     * @example\n     * ```js\n     * liveboardEmbed.trigger(HostEvent.CopyLink)\n     * ```\n     * ```js\n     * liveboardEmbed.trigger(HostEvent.CopyLink, {vizId: '730496d6-6903-4601-937e-2c691821af3c'})\n     * ```\n     * ```js\n     * vizEmbed.trigger(HostEvent.CopyLink)\n     * ```\n     * @example\n     * ```js\n     * // Copy link from liveboard context\n     * import { ContextType } from '@thoughtspot/visual-embed-sdk';\n     * liveboardEmbed.trigger(HostEvent.CopyLink, {}, ContextType.Liveboard);\n     * ```\n     * @example\n     * ```js\n     * // Copy link from liveboard visualization context\n     * import { ContextType } from '@thoughtspot/visual-embed-sdk';\n     * liveboardEmbed.trigger(HostEvent.CopyLink, {\n     *     vizId: '730496d6-6903-4601-937e-2c691821af3c'\n     * }, ContextType.Liveboard);\n     * ```\n     * @example\n     * ```js\n     * // Copy link from liveboard context\n     * import { ContextType } from '@thoughtspot/visual-embed-sdk';\n     * liveboardEmbed.trigger(HostEvent.CopyLink, {}, ContextType.Liveboard);\n     * ```\n     * @example\n     * ```js\n     * // Copy link from liveboard visualization context\n     * import { ContextType } from '@thoughtspot/visual-embed-sdk';\n     * liveboardEmbed.trigger(HostEvent.CopyLink, {\n     *     vizId: '730496d6-6903-4601-937e-2c691821af3c'\n     * }, ContextType.Liveboard);\n     * ```\n     * @version SDK: 1.15.0 | ThoughtSpot: 8.7.0.cl, 8.8.1.sw\n     */\n    HostEvent[\"CopyLink\"] = \"embedDocument\";\n    /**\n     * Trigger the **Present** action on a Liveboard or visualization\n     * @param - object - to trigger the action for a specific visualization\n     *  in Liveboard embed, pass in `vizId` as a key\n     * @example\n     * ```js\n     * liveboardEmbed.trigger(HostEvent.Present)\n     * ```\n     * ```js\n     * liveboardEmbed.trigger(HostEvent.Present, {vizId: '730496d6-6903-4601-937e-2c691821af3c'})\n     * ```\n     * ```js\n     * vizEmbed.trigger(HostEvent.Present)\n     * ```\n     * @example\n     * ```js\n     * // Present from liveboard visualization context\n     * import { ContextType } from '@thoughtspot/visual-embed-sdk';\n     * liveboardEmbed.trigger(HostEvent.Present, {\n     *     vizId: '730496d6-6903-4601-937e-2c691821af3c'\n     * }, ContextType.Liveboard);\n     * ```\n     * @example\n     * ```js\n     * // Present from liveboard context\n     * import { ContextType } from '@thoughtspot/visual-embed-sdk';\n     * liveboardEmbed.trigger(HostEvent.Present, {}, ContextType.Liveboard);\n     * ```\n     * @example\n     * ```js\n     * // Present from liveboard visualization context\n     * import { ContextType } from '@thoughtspot/visual-embed-sdk';\n     * liveboardEmbed.trigger(HostEvent.Present, {\n     *     vizId: '730496d6-6903-4601-937e-2c691821af3c'\n     * }, ContextType.Liveboard);\n     * ```\n     * @example\n     * ```js\n     * // Present from liveboard context\n     * import { ContextType } from '@thoughtspot/visual-embed-sdk';\n     * liveboardEmbed.trigger(HostEvent.Present, {}, ContextType.Liveboard);\n     * ```\n     * @version SDK: 1.15.0 | ThoughtSpot: 8.7.0.cl, 8.8.1.sw\n     */\n    HostEvent[\"Present\"] = \"present\";\n    /**\n     * Get TML for the current search.\n     * @example\n     * ```js\n     * searchEmbed.trigger(HostEvent.GetTML).then((tml) => {\n     *   console.log(\n     *      tml.answer.search_query // TML representation of the search query\n     *   );\n     * })\n     * ```\n     * @example\n     * ```js\n     * // You can use the Data event dispatched on each answer creation to get the vizId and use in GetTML host event.\n     * let latestSpotterVizId = '';\n     * spotterEmbed.on(EmbedEvent.Data, (payload) => {\n     *   latestSpotterVizId = payload.data.id;\n     * });\n     *\n     * spotterEmbed.trigger(HostEvent.GetTML, {\n     *   vizId: latestSpotterVizId\n     * }).then((tml) => {\n     *   console.log(\n     *      tml.answer.search_query // TML representation of the search query\n     *   );\n     * })\n     * ```\n     * @example\n     * ```js\n     * // Get TML from search context\n     * import { ContextType } from '@thoughtspot/visual-embed-sdk';\n     * appEmbed.trigger(HostEvent.GetTML, {}, ContextType.Search).then((tml) => {\n     *   console.log(tml.answer.search_query);\n     * });\n     * ```\n     * @example\n     * ```js\n     * // Get TML from search-answer context\n     * import { ContextType } from '@thoughtspot/visual-embed-sdk';\n     * appEmbed.trigger(HostEvent.GetTML, {}, ContextType.Search).then((tml) => {\n     *   console.log(tml.answer);\n     * });\n     * ```\n     * @version SDK: 1.18.0 | ThoughtSpot: 8.10.0.cl, 9.0.1.sw\n     * @important\n     */\n    HostEvent[\"GetTML\"] = \"getTML\";\n    /**\n     * Trigger the **Show underlying data** action on a\n     * chart or table.\n     *\n     * @param - an object with vizId as a key\n     * @example\n     * ```js\n     * liveboardEmbed.trigger(HostEvent.ShowUnderlyingData, {vizId:\n     * '730496d6-6903-4601-937e-2c691821af3c'})\n     * ```\n     * ```js\n     * vizEmbed.trigger(HostEvent.ShowUnderlyingData)\n     * ```\n     * ```js\n     * searchEmbed.trigger(HostEvent.ShowUnderlyingData)\n     * ```\n     * @example\n     * ```js\n     * // Show underlying data from liveboard visualization context\n     * import { ContextType } from '@thoughtspot/visual-embed-sdk';\n     * appEmbed.trigger(HostEvent.ShowUnderlyingData, {\n     *     vizId: '730496d6-6903-4601-937e-2c691821af3c'\n     * }, ContextType.Liveboard);\n     * ```\n     * @example\n     * ```js\n     * // Show underlying data from search context\n     * import { ContextType } from '@thoughtspot/visual-embed-sdk';\n     * appEmbed.trigger(HostEvent.ShowUnderlyingData, {}, ContextType.Search);\n     * ```\n     * @version SDK: 1.19.0 | ThoughtSpot: 9.0.0.cl, 9.0.1.sw\n     */\n    HostEvent[\"ShowUnderlyingData\"] = \"showUnderlyingData\";\n    /**\n     * Trigger the **Delete** action for a visualization\n     * in an embedded Liveboard, or a chart or table\n     * generated from Search.\n     * @param - Liveboard embed takes an object with `vizId` as a key.\n     * Can be left empty if embedding Search or visualization.\n     * @example\n     * ```js\n     * liveboardEmbed.trigger(HostEvent.Delete, {vizId:\n     * '730496d6-6903-4601-937e-2c691821af3c'})\n     * ```\n     * ```js\n     * searchEmbed.trigger(HostEvent.Delete)\n     * ```\n     * @example\n     * ```js\n     * // Delete from liveboard context\n     * import { ContextType } from '@thoughtspot/visual-embed-sdk';\n     * liveboardEmbed.trigger(HostEvent.Delete, {}, ContextType.Liveboard);\n     * ```\n     * @example\n     * ```js\n     * // Delete from search context\n     * import { ContextType } from '@thoughtspot/visual-embed-sdk';\n     * appEmbed.trigger(HostEvent.Delete, {}, ContextType.Search);\n     * ```\n     * @version SDK: 1.19.0 | ThoughtSpot: 9.0.0.cl, 9.0.1.sw\n     */\n    HostEvent[\"Delete\"] = \"onDeleteAnswer\";\n    /**\n     * Trigger the **SpotIQ analyze** action on a\n     * chart or table.\n     * @param - Liveboard embed takes `vizId` as a\n     * key. Can be left undefined when embedding Search or\n     * visualization.\n     * @example\n     * ```js\n     * liveboardEmbed.trigger(HostEvent.SpotIQAnalyze, {vizId:\n     * '730496d6-6903-4601-937e-2c691821af3c'})\n     * ```\n     * ```js\n     * vizEmbed.trigger(HostEvent.SpotIQAnalyze)\n     * ```\n     * ```js\n     * searchEmbed.trigger(HostEvent.SpotIQAnalyze)\n     * ```\n     * @example\n     * ```js\n     * // SpotIQ analyze from search-answer context\n     * import { ContextType } from '@thoughtspot/visual-embed-sdk';\n     * appEmbed.trigger(HostEvent.SpotIQAnalyze, { vizId: '730496d6-6903-4601-937e-2c691821af3c' }, ContextType.Search);\n     * ```\n     * @example\n     * ```js\n     * // SpotIQ analyze from search context\n     * import { ContextType } from '@thoughtspot/visual-embed-sdk';\n     * liveboardEmbed.trigger(HostEvent.SpotIQAnalyze, {\n     *     vizId: '730496d6-6903-4601-937e-2c691821af3c'\n     * }, ContextType.Liveboard);\n     * ```\n     * @version SDK: 1.19.0 | ThoughtSpot: 9.0.0.cl, 9.0.1.sw\n     */\n    HostEvent[\"SpotIQAnalyze\"] = \"spotIQAnalyze\";\n    /**\n     * Trigger the **Download** action on charts in\n     * the embedded view.\n     * Use {@link HostEvent.DownloadAsPng} instead.\n     *\n     * @version SDK: 1.19.0 | ThoughtSpot: 9.0.0.cl, 9.0.1.sw\n     *\n     * @deprecated from SDK: 1.21.0 | ThoughtSpot: 9.2.0.cl ,9.4.1.sw\n     * @param - `vizId` refers to the Visualization ID in Spotter embed and is required in Spotter embed.\n     * @example\n     * ```js\n     * liveboardEmbed.trigger(HostEvent.Download, {vizId:\n     * '730496d6-6903-4601-937e-2c691821af3c'})\n     * ```\n     * ```js\n     * embed.trigger(HostEvent.Download)\n     * ```\n     * ```js\n     * // You can use the Data event dispatched on each answer creation to get the vizId and use in Download host event.\n     * let latestSpotterVizId = '';\n     * spotterEmbed.on(EmbedEvent.Data, (payload) => {\n     *   latestSpotterVizId = payload.data.id;\n     * });\n     *\n     * spotterEmbed.trigger(HostEvent.Download, { vizId: latestSpotterVizId });\n     * ```\n     */\n    HostEvent[\"Download\"] = \"downloadAsPng\";\n    /**\n     * Trigger the **Download** > **PNG** action on\n     * charts in the embedded view.\n     * @example\n     * ```js\n     * liveboardEmbed.trigger(HostEvent.DownloadAsPng,\n     * {vizId:'730496d6-6903-4601-937e-2c691821af3c'})\n     *\n     * vizEmbed.trigger(HostEvent.DownloadAsPng)\n     *\n     * searchEmbed.trigger(HostEvent.DownloadAsPng)\n     *\n     * // You can use the Data event dispatched on each answer creation to get the vizId and use in DownloadAsPng host event.\n     * let latestSpotterVizId = '';\n     * spotterEmbed.on(EmbedEvent.Data, (payload) => {\n     *   latestSpotterVizId = payload.data.id;\n     * });\n     *\n     * spotterEmbed.trigger(HostEvent.DownloadAsPng, { vizId: latestSpotterVizId });\n     * ```\n     * @example\n     * ```js\n     * // Download as PNG from search-answer context\n     * import { ContextType } from '@thoughtspot/visual-embed-sdk';\n     * appEmbed.trigger(HostEvent.DownloadAsPng, {}, ContextType.Search);\n     * ```\n     *\n     * @version SDK: 1.21.0 | ThoughtSpot: 9.2.0.cl, 9.4.1.sw\n     */\n    // eslint-disable-next-line @typescript-eslint/no-duplicate-enum-values\n    HostEvent[\"DownloadAsPng\"] = \"downloadAsPng\";\n    /**\n     * Trigger the **Download** > **CSV**  action on tables in\n     * the embedded view.\n     * @param - `vizId` refers to the Visualization ID in Spotter embed and is required in Spotter embed.\n     * @example\n     * ```js\n     * liveboardEmbed.trigger(HostEvent.DownloadAsCsv, {vizId:\n     * '730496d6-6903-4601-937e-2c691821af3c'})\n     * ```\n     * ```js\n     * vizEmbed.trigger(HostEvent.DownloadAsCsv)\n     * ```\n     * ```js\n     * searchEmbed.trigger(HostEvent.DownloadAsCsv)\n     * ```\n     * ```js\n     * // You can use the Data event dispatched on each answer creation to get the vizId and use in DownloadAsCsv host event.\n     * let latestSpotterVizId = '';\n     * spotterEmbed.on(EmbedEvent.Data, (payload) => {\n     *   latestSpotterVizId = payload.data.id;\n     * });\n     *\n     * spotterEmbed.trigger(HostEvent.DownloadAsCsv, { vizId: latestSpotterVizId });\n     * ```\n     * @example\n     * ```js\n     * // Download as CSV from search-answer context\n     * import { ContextType } from '@thoughtspot/visual-embed-sdk';\n     * appEmbed.trigger(HostEvent.DownloadAsCsv, {}, ContextType.Search);\n     * ```\n     * @example\n     * ```js\n     * // Download as CSV from search context\n     * import { ContextType } from '@thoughtspot/visual-embed-sdk';\n     * searchEmbed.trigger(HostEvent.DownloadAsCsv, {}, ContextType.Search);\n     * ```\n     * @version SDK: 1.19.0 | ThoughtSpot: 9.0.0.cl, 9.0.1.sw\n     */\n    HostEvent[\"DownloadAsCsv\"] = \"downloadAsCSV\";\n    /**\n     * Trigger the **Download** > **XLSX**  action on tables\n     * in the embedded view.\n     * @param - `vizId` refers to the Visualization ID in Spotter embed and is required in Spotter embed.\n     * @example\n     * ```js\n     * liveboardEmbed.trigger(HostEvent.DownloadAsXlsx, {vizId:\n     * '730496d6-6903-4601-937e-2c691821af3c'})\n     * ```\n     * ```js\n     * vizEmbed.trigger(HostEvent.DownloadAsXlsx)\n     * ```\n     * ```js\n     * searchEmbed.trigger(HostEvent.DownloadAsXlsx)\n     * ```\n     * ```js\n     * // You can use the Data event dispatched on each answer creation to get the vizId and use in DownloadAsXlsx host event.\n     * let latestSpotterVizId = '';\n     * spotterEmbed.on(EmbedEvent.Data, (payload) => {\n     *   latestSpotterVizId = payload.data.id;\n     * });\n     *\n     * spotterEmbed.trigger(HostEvent.DownloadAsXlsx, { vizId: latestSpotterVizId });\n     * ```\n     * @example\n     * ```js\n     * // Download as XLSX from answer context\n     * import { ContextType } from '@thoughtspot/visual-embed-sdk';\n     * appEmbed.trigger(HostEvent.DownloadAsXlsx, {}, ContextType.Answer);\n     * ```\n     * @example\n     * ```js\n     * // Download as XLSX from search context\n     * import { ContextType } from '@thoughtspot/visual-embed-sdk';\n     * searchEmbed.trigger(HostEvent.DownloadAsXlsx, {}, ContextType.Search);\n     * ```\n     * @version SDK: 1.19.0 | ThoughtSpot: 9.0.0.cl, 9.0.1.sw\n     */\n    HostEvent[\"DownloadAsXlsx\"] = \"downloadAsXLSX\";\n    /**\n     * Trigger the **Share** action on an embedded\n     * Liveboard or Answer.\n     * @example\n     * ```js\n     * liveboardEmbed.trigger(HostEvent.Share)\n     * ```\n     * ```js\n     * searchEmbed.trigger(HostEvent.Share)\n     * ```\n     * @example\n     * ```js\n     * // Share from Liveboard context\n     * import { ContextType } from '@thoughtspot/visual-embed-sdk';\n     * liveboardEmbed.trigger(HostEvent.Share, {}, ContextType.Liveboard);\n     * ```\n     * @example\n     * ```js\n     * // Share from search-answer context\n     * import { ContextType } from '@thoughtspot/visual-embed-sdk';\n     * appEmbed.trigger(HostEvent.Share, {}, ContextType.Search);\n     * ```\n     * @version SDK: 1.19.0 | ThoughtSpot: 9.0.0.cl, 9.0.1.sw\n     */\n    HostEvent[\"Share\"] = \"share\";\n    /**\n     * Trigger the **Save** action on a Liveboard, Answer, or Spotter.\n     * Saves the changes.\n     *\n     * @param - `vizId` refers to the Spotter Visualization Id used in Spotter embed.\n     * It is required and can be retrieved from the data embed event.\n     *\n     * @example\n     * ```js\n     * // Save changes in a Liveboard\n     * liveboardEmbed.trigger(HostEvent.Save)\n     * ```\n     *\n     * ```js\n     * // Save the current Answer in Search embed\n     * searchEmbed.trigger(HostEvent.Save)\n     * ```\n     *\n     * ```js\n     * // Save a Visualization in Spotter (requires vizId)\n     * spotterEmbed.trigger(HostEvent.Save, {\n     *   vizId: \"730496d6-6903-4601-937e-2c691821af3c\"\n     * })\n     * ```\n     *\n     * ```js\n     * // How to get the vizId in Spotter?\n     *\n     * // You can use the Data event dispatched on each answer creation to get the vizId.\n     * let latestSpotterVizId = '';\n     * spotterEmbed.on(EmbedEvent.Data, (payload) => {\n     *   latestSpotterVizId = payload.data.id;\n     * });\n     *\n     * spotterEmbed.trigger(HostEvent.Save, { vizId: latestSpotterVizId });\n     * ```\n     * @example\n     * ```js\n     * // Save from answer context\n     * import { ContextType } from '@thoughtspot/visual-embed-sdk';\n     * appEmbed.trigger(HostEvent.Save, {}, ContextType.Answer);\n     * ```\n     * @example\n     * ```js\n     * // Save from search context\n     * import { ContextType } from '@thoughtspot/visual-embed-sdk';\n     * searchEmbed.trigger(HostEvent.Save, {}, ContextType.Search);\n     * ```\n     *\n     * @version SDK: 1.19.0 | ThoughtSpot: 9.0.0.cl, 9.0.1.sw\n     */\n    HostEvent[\"Save\"] = \"save\";\n    /**\n     * Trigger the **Sync to Sheets** action on an embedded visualization or Answer\n     * Sends data from an Answer or Liveboard visualization to a Google sheet.\n     * @param - an object with `vizId` as a key\n     * @example\n     * ```js\n     * liveboardEmbed.trigger(HostEvent.SyncToSheets, {vizId:\n     * '730496d6-6903-4601-937e-2c691821af3c'})\n     * ```\n     * ```js\n     * vizEmbed.trigger(HostEvent.SyncToSheets)\n     * ```\n     * @example\n     * ```js\n     * // Sync to sheets from answer context\n     * import { ContextType } from '@thoughtspot/visual-embed-sdk';\n     * appEmbed.trigger(HostEvent.SyncToSheets, {}, ContextType.Answer);\n     * ```\n     * @example\n     * ```js\n     * // Sync to sheets from liveboard context\n     * import { ContextType } from '@thoughtspot/visual-embed-sdk';\n     * liveboardEmbed.trigger(HostEvent.SyncToSheets, {\n     *     vizId: '730496d6-6903-4601-937e-2c691821af3c'\n     * }, ContextType.Liveboard);\n     * ```\n     * @version SDK: 1.19.0 | ThoughtSpot: 9.0.0.cl, 9.0.1.sw\n     */\n    HostEvent[\"SyncToSheets\"] = \"sync-to-sheets\";\n    /**\n     * Trigger the **Sync to Other Apps** action on an embedded visualization or Answer\n     * Sends data from an Answer or Liveboard visualization to third-party apps such\n     * as Slack, Salesforce, Microsoft Teams, ServiceNow and so on.\n     * @param - an object with vizId as a key\n     * @example\n     * ```js\n     * liveboardEmbed.trigger(HostEvent.SyncToOtherApps, {vizId:\n     * '730496d6-6903-4601-937e-2c691821af3c'})\n     * ```\n     * ```js\n     * vizEmbed.trigger(HostEvent.SyncToOtherApps)\n     * ```\n     * @example\n     * ```js\n     * // Sync to other apps from answer context\n     * import { ContextType } from '@thoughtspot/visual-embed-sdk';\n     * appEmbed.trigger(HostEvent.SyncToOtherApps, {}, ContextType.Answer);\n     * ```\n     * @example\n     * ```js\n     * // Sync to other apps from liveboard context\n     * import { ContextType } from '@thoughtspot/visual-embed-sdk';\n     * liveboardEmbed.trigger(HostEvent.SyncToOtherApps, {\n     *     vizId: '730496d6-6903-4601-937e-2c691821af3c'\n     * }, ContextType.Liveboard);\n     * ```\n     * @version SDK: 1.19.0 | ThoughtSpot: 9.0.0.cl, 9.0.1.sw\n     */\n    HostEvent[\"SyncToOtherApps\"] = \"sync-to-other-apps\";\n    /**\n     * Trigger the **Manage pipelines** action on an embedded\n     * visualization or Answer.\n     * Allows users to manage ThoughtSpot Sync pipelines.\n     * @param - an object with `vizId` as a key\n     * @example\n     * ```js\n     * liveboardEmbed.trigger(HostEvent.ManagePipelines, {vizId:\n     * '730496d6-6903-4601-937e-2c691821af3c'})\n     * ```\n     * ```js\n     * vizEmbed.trigger(HostEvent.ManagePipelines)\n     * ```\n     * @example\n     * ```js\n     * // Manage pipelines from answer context\n     * import { ContextType } from '@thoughtspot/visual-embed-sdk';\n     * appEmbed.trigger(HostEvent.ManagePipelines, {}, ContextType.Answer);\n     * ```\n     * @example\n     * ```js\n     * // Manage pipelines from liveboard context\n     * import { ContextType } from '@thoughtspot/visual-embed-sdk';\n     * liveboardEmbed.trigger(HostEvent.ManagePipelines, {\n     *     vizId: '730496d6-6903-4601-937e-2c691821af3c'\n     * }, ContextType.Liveboard);\n     * ```\n     * @version SDK: 1.19.0 | ThoughtSpot: 9.0.0.cl, 9.0.1.sw\n     */\n    HostEvent[\"ManagePipelines\"] = \"manage-pipeline\";\n    /**\n     * Reset search operation on the Search or Answer page.\n     * @example\n     * ```js\n     * searchEmbed.trigger(HostEvent.ResetSearch)\n     * ```\n     * ```js\n     * appEmbed.trigger(HostEvent.ResetSearch)\n     * ```\n     * @example\n     * ```js\n     * // Reset search from search context\n     * import { ContextType } from '@thoughtspot/visual-embed-sdk';\n     * searchEmbed.trigger(HostEvent.ResetSearch, {}, ContextType.Search);\n     * ```\n     * @version SDK: 1.21.0 | ThoughtSpot: 9.2.0.cl, 9.0.1.sw\n     */\n    HostEvent[\"ResetSearch\"] = \"resetSearch\";\n    /**\n     * Get details of filters applied on the Liveboard.\n     * Returns arrays containing Liveboard filter and runtime filter elements.\n     * @example\n     * ```js\n     * const data = await liveboardEmbed.trigger(HostEvent.GetFilters);\n     *     console.log('data', data);\n     * ```\n     * @example\n     * ```js\n     * // Get filters from liveboard context\n     * import { ContextType } from '@thoughtspot/visual-embed-sdk';\n     * const data = await liveboardEmbed.trigger(HostEvent.GetFilters, {}, ContextType.Liveboard);\n     * console.log('filters', data);\n     * ```\n     * @version SDK: 1.23.0 | ThoughtSpot: 9.4.0.cl\n     */\n    HostEvent[\"GetFilters\"] = \"getFilters\";\n    /**\n     * Update one or several filters applied on a Liveboard.\n     * @param - Includes the following keys:\n     * - `filter`: A single filter object containing column name, filter operator, and\n     * values.\n     * - `filters`: Multiple filter objects with column name, filter operator,\n     * and values for each.\n     *\n     * Each filter object must include the following attributes:\n     *\n     * `column` - Name of the column to filter on.\n     *\n     * `oper`  - Filter operator, for example, EQ, IN, CONTAINS.\n     *  For information about the supported filter operators,\n     *  see link:https://developers.thoughtspot.com/docs/runtime-filters#rtOperator[Developer Documentation].\n     *\n     * `values` - An array of one or several values. The value definition on the\n     *  data type you choose to filter on. For a complete list of supported data types,\n     *  see\n     *  link:https://developers.thoughtspot.com/docs/runtime-filters#_supported_data_types[Supported\n     *  data types].\n     *\n     * `type`  - To update filters for date time, specify the date format type.\n     * For more information and examples, see link:https://developers.thoughtspot.com/docs/embed-liveboard#_date_filters[Date filters].\n     * @example\n     * ```js\n     *\n     * liveboardEmbed.trigger(HostEvent.UpdateFilters, {\n     *     filter: {\n     *         column: \"item type\",\n     *         oper: \"IN\",\n     *         values: [\"bags\",\"shirts\"]\n     *        }\n     *    });\n     * ```\n     * @example\n     * ```js\n     *\n     * liveboardEmbed.trigger(HostEvent.UpdateFilters, {\n     *     filter: {\n     *         column: \"date\",\n     *         oper: \"EQ\",\n     *         values: [\"JULY\",\"2023\"],\n     *         type: \"MONTH_YEAR\"\n     *        }\n     *    });\n     * ```\n     * @example\n     *\n     * ```js\n     * liveboardEmbed.trigger(HostEvent.UpdateFilters, {\n     *  filters: [{\n     *      column: \"Item Type\",\n     *      oper: 'IN',\n     *      values: [\"bags\",\"shirts\"]\n     *  },\n     *    {\n     *      column: \"Region\",\n     *      oper: 'IN',\n     *      values: [\"West\",\"Midwest\"]\n     *  },\n     *    {\n     *      column: \"Date\",\n     *      oper: 'EQ',\n     *      values: [\"2023-07-31\"],\n     *      type: \"EXACT_DATE\"\n     *    }]\n     * });\n     * ```\n     * If there are multiple columns with the same name, consider\n     * using `WORKSHEET_NAME::COLUMN_NAME` format.\n     *\n     * @example\n     *\n     * ```js\n     * liveboardEmbed.trigger(HostEvent.UpdateFilters, {\n     *  filters: [{\n     *      column: \"(Sample) Retail - Apparel::city\",\n     *      oper: 'IN',\n     *      values: [\"atlanta\"]\n     *  },\n     *  {\n     *      column: \"(Sample) Retail - Apparel::Region\",\n     *      oper: 'IN',\n     *      values: [\"West\",\"Midwest\"]\n     *  }]\n     * });\n     * ```\n     * @example\n     * ```js\n     * // Update filters from liveboard context\n     * import { ContextType } from '@thoughtspot/visual-embed-sdk';\n     * liveboardEmbed.trigger(HostEvent.UpdateFilters, {\n     *     filter: {\n     *         column: \"item type\",\n     *         oper: \"IN\",\n     *         values: [\"shoes\", \"boots\"]\n     *     }\n     * }, ContextType.Liveboard);\n     * ```\n     * @version SDK: 1.23.0 | ThoughtSpot: 9.4.0.cl\n     */\n    HostEvent[\"UpdateFilters\"] = \"updateFilters\";\n    /**\n     * Get tab details for the current Liveboard.\n     * @example\n     * ```js\n     * liveboardEmbed.trigger(HostEvent.GetTabs).then((tabDetails) => {\n     *   console.log(\n     *      tabDetails // TabDetails of current Liveboard\n     *   );\n     * })\n     * ```\n     * @example\n     * ```js\n     * // Get tabs from liveboard context\n     * import { ContextType } from '@thoughtspot/visual-embed-sdk';\n     * liveboardEmbed.trigger(HostEvent.GetTabs, {}, ContextType.Liveboard).then((tabDetails) => {\n     *     console.log('tabs', tabDetails);\n     * });\n     * ```\n     * @version SDK: 1.26.0 | ThoughtSpot: 9.7.0.cl\n     */\n    HostEvent[\"GetTabs\"] = \"getTabs\";\n    /**\n     * Set the visible tabs on a Liveboard.\n     * @param - an array of ids of tabs to show, the IDs not passed\n     *          will be hidden.\n     * @example\n     * ```js\n     * liveboardEmbed.trigger(HostEvent.SetVisibleTabs, [\n     *  '430496d6-6903-4601-937e-2c691821af3c',\n     *  'f547ec54-2a37-4516-a222-2b06719af726'])\n     * ```\n     * @example\n     * ```js\n     * // Set visible tabs from liveboard context\n     * import { ContextType } from '@thoughtspot/visual-embed-sdk';\n     * liveboardEmbed.trigger(HostEvent.SetVisibleTabs, [\n     *     '430496d6-6903-4601-937e-2c691821af3c',\n     *     'f547ec54-2a37-4516-a222-2b06719af726'\n     * ], ContextType.Liveboard);\n     * ```\n     * @version SDK: 1.26.0 | ThoughtSpot: 9.7.0.cl, 9.8.0.sw\n     */\n    HostEvent[\"SetVisibleTabs\"] = \"SetPinboardVisibleTabs\";\n    /**\n     * Set the hidden tabs on a Liveboard.\n     * @param - an array of the IDs of the tabs to hide.\n     * The IDs not passed will be shown.\n     * @example\n     * ```js\n     * liveboardEmbed.trigger(HostEvent.SetHiddenTabs, [\n     *  '630496d6-6903-4601-937e-2c691821af3c',\n     *  'i547ec54-2a37-4516-a222-2b06719af726'])\n     * ```\n     * @example\n     * ```js\n     * // Set hidden tabs from liveboard context\n     * import { ContextType } from '@thoughtspot/visual-embed-sdk';\n     * liveboardEmbed.trigger(HostEvent.SetHiddenTabs, [\n     *     '630496d6-6903-4601-937e-2c691821af3c',\n     *     'i547ec54-2a37-4516-a222-2b06719af726'\n     * ], ContextType.Liveboard);\n     * ```\n     * @version SDK: 1.26.0 | ThoughtSpot: 9.7.0.cl, 9.8.0.sw\n     */\n    HostEvent[\"SetHiddenTabs\"] = \"SetPinboardHiddenTabs\";\n    /**\n     * Get the Answer session for a Search or\n     * Liveboard visualization.\n     *\n     * Note: This event is not typically used directly. Instead, use the\n     * `getAnswerService()` method on the embed instance to get an AnswerService\n     * object that provides a more convenient interface for working with answers.\n     *\n     * @example\n     * ```js\n     * // Preferred way to get an AnswerService\n     * const service = await embed.getAnswerService();\n     *\n     * // Alternative direct usage (not recommended)\n     * const {session} = await embed.trigger(\n     *  HostEvent.GetAnswerSession, {\n     *      vizId: '123', // For Liveboard Visualization.\n     *  })\n     * ```\n     * @example\n     * ```js\n     * // Preferred way to get an AnswerService\n     * const service = await embed.getAnswerService();\n     *\n     * // Alternative direct usage (not recommended)\n     * const {session} = await embed.trigger( HostEvent.GetAnswerSession )\n     * ```\n     * @version SDK: 1.26.0 | ThoughtSpot: 9.10.0.cl, 10.1.0.sw\n     */\n    HostEvent[\"GetAnswerSession\"] = \"getAnswerSession\";\n    /**\n     * Trigger the *Ask Sage* action for visualizations\n     * @example\n     * ```js\n     * liveboardEmbed.trigger(HostEvent.AskSage,\n     * {vizId:'730496d6-6903-4601-937e-2c691821af3c'})\n     * ```\n     * @version SDK: 1.29.0 | ThoughtSpot Cloud: 9.12.0.cl\n     */\n    HostEvent[\"AskSage\"] = \"AskSage\";\n    /**\n     * Trigger cross filter update action on a Liveboard.\n     *\n     * @example\n     * ```js\n     * liveboardEmbed.trigger(HostEvent.UpdateCrossFilter, {\n     *      vizId: 'b535c760-8bbe-4e6f-bb26-af56b4129a1e',\n     *      conditions: [\n     *      { columnName: 'Category', values: ['mfgr#12','mfgr#14'] },\n     *      { columnName: 'color', values: ['mint','hot'] },\n     *    ],\n     * });\n     * ```\n     * @version SDK: 1.29.0 | ThoughtSpot Cloud: 10.0.0.cl, 10.1.0.sw\n     */\n    HostEvent[\"UpdateCrossFilter\"] = \"UpdateCrossFilter\";\n    /**\n     * Trigger reset action for a personalized Liveboard view.\n     * This event is deprecated. Use {@link HostEvent.ResetLiveboardPersonalizedView} instead.\n     * @example\n     * ```js\n     * liveboardEmbed.trigger(HostEvent.ResetLiveboardPersonalisedView);\n     * ```\n     * @version SDK: 1.29.0 | ThoughtSpot Cloud: 10.1.0.cl, 10.1.0.sw\n     * @deprecated SDK: 1.48.0 | ThoughtSpot: 26.5.0.cl\n     */\n    HostEvent[\"ResetLiveboardPersonalisedView\"] = \"ResetLiveboardPersonalisedView\";\n    /**\n     * Trigger reset action for a personalized Liveboard view.\n     * @example\n     * ```js\n     * liveboardEmbed.trigger(HostEvent.ResetLiveboardPersonalizedView);\n     * ```\n     * @version SDK: 1.48.0 | ThoughtSpot: 26.5.0.cl\n     */\n    HostEvent[\"ResetLiveboardPersonalizedView\"] = \"ResetLiveboardPersonalisedView\";\n    /**\n     * Triggers an action to update Parameter values on embedded\n     * Answers, Liveboard, and Spotter answer in Edit mode.\n     * @param - Includes the following keys for each item:\n     * - `name`: Name of the parameter.\n     * - `value`: The value to set for the parameter.\n     * - `isVisibleToUser`: Optional. To control the visibility of the parameter chip.\n     *\n     * @example\n     * ```js\n     * liveboardEmbed.trigger(HostEvent.UpdateParameters, [{\n     *   name: \"Integer Range Param\",\n     *   value: 10,\n     *   isVisibleToUser: false\n     * }])\n     * ```\n     * @example\n     * ```js\n     * // Update parameters from liveboard context\n     * import { ContextType } from '@thoughtspot/visual-embed-sdk';\n     * liveboardEmbed.trigger(HostEvent.UpdateParameters, [{\n     *     name: \"Region Param\",\n     *     value: \"West\",\n     *     isVisibleToUser: true\n     * }], ContextType.Liveboard);\n     * ```\n     * @version SDK: 1.29.0 | ThoughtSpot: 10.1.0.cl, 10.1.0.sw\n     */\n    HostEvent[\"UpdateParameters\"] = \"UpdateParameters\";\n    /**\n     * Triggers GetParameters to fetch the runtime Parameters.\n     * @param - `vizId` refers to the Answer ID in Spotter embed and is required in Spotter embed.\n     * ```js\n     * liveboardEmbed.trigger(HostEvent.GetParameters).then((parameter) => {\n     *  console.log('parameters', parameter);\n     * });\n     * ```\n     * ```js\n     * // You can use the Data event dispatched on each answer creation to get the vizId and use in GetParameters host event.\n     * let latestSpotterVizId = '';\n     * spotterEmbed.on(EmbedEvent.Data, (payload) => {\n     *   latestSpotterVizId = payload.data.id;\n     * });\n     *\n     * spotterEmbed.trigger(HostEvent.GetParameters, { vizId: latestSpotterVizId });\n     *```\n     * @example\n     * ```js\n     * // Get parameters from liveboard context\n     * import { ContextType } from '@thoughtspot/visual-embed-sdk';\n     * liveboardEmbed.trigger(HostEvent.GetParameters, {},\n     * ContextType.Liveboard).then((parameters) => {\n     *     console.log('parameters', parameters);\n     * });\n     * ```\n     * @version SDK: 1.29.0 | ThoughtSpot: 10.1.0.cl, 10.1.0.sw\n     */\n    HostEvent[\"GetParameters\"] = \"GetParameters\";\n    /**\n     * Triggers an event to update a personalized view of a Liveboard.\n     * This event is deprecated. Use {@link HostEvent.UpdatePersonalizedView} instead.\n     * ```js\n     * liveboardEmbed.trigger(HostEvent.UpdatePersonalisedView, {viewId: '1234'})\n     * ```\n     * @example\n     * ```js\n     * // Update personalized view from liveboard context\n     * import { ContextType } from '@thoughtspot/visual-embed-sdk';\n     * liveboardEmbed.trigger(HostEvent.UpdatePersonalisedView, {\n     *     viewId: '1234'\n     * }, ContextType.Liveboard);\n     * ```\n     * @version SDK: 1.36.0 | ThoughtSpot: 10.6.0.cl\n     * @deprecated SDK: 1.48.0 | ThoughtSpot: 26.5.0.cl\n     */\n    HostEvent[\"UpdatePersonalisedView\"] = \"UpdatePersonalisedView\";\n    /**\n     * Triggers an event to update a personalized view of a Liveboard.\n     * ```js\n     * liveboardEmbed.trigger(HostEvent.UpdatePersonalisedView, {viewId: '1234'})\n     * ```\n     * @version SDK: 1.48.0 | ThoughtSpot: 26.5.0.cl\n     */\n    HostEvent[\"UpdatePersonalizedView\"] = \"UpdatePersonalisedView\";\n    /**\n     * Triggers selection of a specific Personalized View on a\n     * Liveboard without reloading the embed. Pass either a\n     * `viewId` (GUID) or `viewName`. If both are provided, `viewId` takes precedence.\n     * If neither is provided, the Liveboard resets to the original/default view.\n     * When a `viewName` is provided and multiple views share\n     * the same name, the first match is selected.\n     * @example\n     * ```js\n     * liveboardEmbed.trigger(\n     *   HostEvent.SelectPersonalizedView,\n     *   { viewId: '2a021a12-1aed-425d-984b-141ee916ce72' },\n     * )\n     * ```\n     * @example\n     * ```js\n     * // Select by name\n     * liveboardEmbed.trigger(\n     *   HostEvent.SelectPersonalizedView,\n     *   { viewName: 'Dr Smith Cardiology' },\n     * )\n     * ```\n     * @example\n     * ```js\n     * // Reset to default view\n     * liveboardEmbed.trigger(\n     *   HostEvent.SelectPersonalizedView,\n     *   {},\n     * )\n     * ```\n     * @version SDK: 1.48.0 | ThoughtSpot: 26.5.0.cl\n     */\n    HostEvent[\"SelectPersonalizedView\"] = \"SelectPersonalisedView\";\n    /**\n     * @hidden\n     * Notify when info call is completed successfully\n     * ```js\n     * liveboardEmbed.trigger(HostEvent.InfoSuccess, data);\n     * ```\n     * @version SDK: 1.36.0 | ThoughtSpot: 10.6.0.cl\n     */\n    HostEvent[\"InfoSuccess\"] = \"InfoSuccess\";\n    /**\n     * Trigger the save action for an Answer.\n     * To programmatically save an answer without opening the\n     * *Describe your Answer* modal, define the `name` and `description`\n     * properties.\n     * If no parameters are specified, the save action is\n     * triggered with a modal to prompt users to\n     * add a name and description for the Answer.\n     * @param - Includes the following keys:\n     * - `vizId`: Refers to the Answer ID in Spotter embed and is **required** in Spotter\n     * embed.\n     * - `name`: Optional. Name string for the Answer.\n     * - `description`: Optional. Description text for the Answer.\n     * @example\n     * ```js\n     * const saveAnswerResponse = await searchEmbed.trigger(HostEvent.SaveAnswer, {\n     *      name: \"Sales by states\",\n     *      description: \"Total sales by states in MidWest\"\n     *   });\n     * ```\n     * @example\n     * ```js\n     * // You can use the Data event dispatched on each answer creation to get the vizId and use in SaveAnswer host event.\n     * let latestSpotterVizId = '';\n     * spotterEmbed.on(EmbedEvent.Data, (payload) => {\n     *   latestSpotterVizId = payload.data.id;\n     * });\n     *\n     * spotterEmbed.trigger(HostEvent.SaveAnswer, { vizId: latestSpotterVizId });\n     * ```\n     * @example\n     * ```js\n     * // Using context parameter to save answer from search context\n     * import { ContextType } from '@thoughtspot/visual-embed-sdk';\n     * const saveAnswerResponse = await appEmbed.trigger(HostEvent.SaveAnswer, {\n     *      name: \"Regional sales analysis\",\n     *      description: \"Sales breakdown by region\"\n     *   }, ContextType.Search);\n     * ```\n     * @example\n     * ```js\n     * // Save answer from answer context (explore modal)\n     * import { ContextType } from '@thoughtspot/visual-embed-sdk';\n     * const saveAnswerResponse = await appEmbed.trigger(HostEvent.SaveAnswer, {\n     *      name: \"Modified analysis\",\n     *      description: \"Updated from explore view\"\n     *   }, ContextType.Answer);\n     * ```\n     * @example\n     * ```js\n     * // Save answer from spotter context\n     * import { ContextType } from '@thoughtspot/visual-embed-sdk';\n     * const saveAnswerResponse = await appEmbed.trigger(HostEvent.SaveAnswer, {\n     *      vizId: latestSpotterVizId,\n     *      name: \"AI insights\",\n     *      description: \"Generated from Spotter\"\n     *   }, ContextType.Spotter);\n     * ```\n     * @version SDK: 1.36.0 | ThoughtSpot: 10.6.0.cl\n     */\n    HostEvent[\"SaveAnswer\"] = \"saveAnswer\";\n    /**\n     * EmbedApi\n     * @hidden\n     */\n    HostEvent[\"UIPassthrough\"] = \"UiPassthrough\";\n    /**\n     * Triggers the table visualization re-render with the updated data.\n     * Includes the following properties:\n     * @param - `columnDataLite` - an array of object containing the\n     * data value modifications retrieved from the `EmbedEvent.TableVizRendered`\n     * payload.For example, { columnDataLite: []}`.\n     *\n     * @example\n     * ```js\n     * searchEmbed.on(EmbedEvent.TableVizRendered, (payload) => {\n     *      console.log(payload);\n     *      const columnDataLite = payload.data.data.columnDataLite;\n     *      columnDataLite[0].dataValue[0]=\"new fob\";\n     *      console.log('>>> new Data', columnDataLite);\n     *      searchEmbed.trigger(HostEvent.TransformTableVizData, columnDataLite);\n     * })\n     * ```\n     * @version SDK: 1.37.0 | ThoughtSpot: 10.8.0.cl\n     */\n    HostEvent[\"TransformTableVizData\"] = \"TransformTableVizData\";\n    /**\n     * Triggers a search operation with the search tokens specified in\n     * the search query string in spotter embed.\n     * @param - Includes the following keys:\n     * - `query`: Text string in Natural Language format.\n     * - `executeSearch`: Boolean to execute search and update search query.\n     * @example\n     * ```js\n     * spotterEmbed.trigger(HostEvent.SpotterSearch, {\n     *  query: 'revenue per year',\n     *  executeSearch: true,\n     * })\n     * ```\n     * @example\n     * ```js\n     * // Spotter search from spotter context\n     * import { ContextType } from '@thoughtspot/visual-embed-sdk';\n     * spotterEmbed.trigger(HostEvent.SpotterSearch, {\n     *     query: 'sales by region',\n     *     executeSearch: true\n     * }, ContextType.Spotter);\n     * ```\n     * @version SDK: 1.40.0 | ThoughtSpot: 10.11.0.cl\n     */\n    HostEvent[\"SpotterSearch\"] = \"SpotterSearch\";\n    /**\n     * Edits the last prompt in spotter embed.\n     * @param - `query`: Text string\n     * @example\n     * ```js\n     * spotterEmbed.trigger(HostEvent.EditLastPrompt, \"revenue per year\");\n     * ```\n     * @example\n     * ```js\n     * // Edit last prompt from spotter context\n     * import { ContextType } from '@thoughtspot/visual-embed-sdk';\n     * spotterEmbed.trigger(HostEvent.EditLastPrompt, \"sales by region\", ContextType.Spotter);\n     * ```\n     * @version SDK: 1.40.0 | ThoughtSpot: 10.11.0.cl\n     */\n    HostEvent[\"EditLastPrompt\"] = \"EditLastPrompt\";\n    /**\n     * Opens the data source preview modal in Spotter Embed.\n     * @example\n     * ```js\n     * spotterEmbed.trigger(HostEvent.PreviewSpotterData);\n     * ```\n     * @example\n     * ```js\n     * // Preview spotter data from spotter context\n     * import { ContextType } from '@thoughtspot/visual-embed-sdk';\n     * spotterEmbed.trigger(HostEvent.PreviewSpotterData, {}, ContextType.Spotter);\n     * ```\n     * @version SDK: 1.40.0 | ThoughtSpot: 10.11.0.cl\n     */\n    HostEvent[\"PreviewSpotterData\"] = \"PreviewSpotterData\";\n    /**\n     * Opens the Add to Coaching modal from a visualization in Spotter Embed.\n     * @param - `vizId ` refers to the Visualization ID in Spotter embed and is required.\n     * @example\n     * ```js\n     * spotterEmbed.trigger(HostEvent.AddToCoaching, { vizId: '730496d6-6903-4601-937e-2c691821af3c' });\n     *\n     * ```\n     * @version SDK: 1.45.0 | ThoughtSpot: 26.2.0.cl\n     */\n    HostEvent[\"AddToCoaching\"] = \"addToCoaching\";\n    /**\n     * Opens the data model instructions modal in Spotter Embed.\n     * @example\n     * ```js\n     * spotterEmbed.trigger(HostEvent.DataModelInstructions);\n     * ```\n     * @version SDK: 1.46.0 | ThoughtSpot: 26.3.0.cl\n     */\n    HostEvent[\"DataModelInstructions\"] = \"DataModelInstructions\";\n    /**\n     * Resets the Spotter Embed Conversation.\n     * @example\n     * ```js\n     * spotterEmbed.trigger(HostEvent.ResetSpotterConversation);\n     * ```\n     * @version SDK: 1.40.0 | ThoughtSpot: 10.11.0.cl\n     */\n    HostEvent[\"ResetSpotterConversation\"] = \"ResetSpotterConversation\";\n    /**\n     * Deletes the last prompt in spotter embed.\n     * @example\n     * ```js\n     * spotterEmbed.trigger(HostEvent.DeleteLastPrompt);\n     * ```\n     * @version SDK: 1.40.0 | ThoughtSpot: 10.11.0.cl\n     */\n    HostEvent[\"DeleteLastPrompt\"] = \"DeleteLastPrompt\";\n    /**\n     * Toggle the visualization to chart or table view.\n     * @param - `vizId ` refers to the Visualization ID in Spotter embed and is required.\n     * @example\n     * ```js\n     * let latestSpotterVizId = '';\n     * spotterEmbed.on(EmbedEvent.Data, (payload) => {\n     *   latestSpotterVizId = payload.data.id;\n     * });\n     *\n     * spotterEmbed.trigger(HostEvent.AnswerChartSwitcher, { vizId: latestSpotterVizId });\n     * ```\n     * @version SDK: 1.40.0 | ThoughtSpot: 10.11.0.cl\n     */\n    HostEvent[\"AnswerChartSwitcher\"] = \"answerChartSwitcher\";\n    /**\n     * @hidden\n     * Trigger exit from presentation mode when user exits fullscreen.\n     * This is automatically triggered by the SDK when fullscreen mode is exited.\n     * ```js\n     * liveboardEmbed.trigger(HostEvent.ExitPresentMode);\n     * ```\n     * @version SDK: 1.40.0 | ThoughtSpot: 10.11.0.cl\n     */\n    HostEvent[\"ExitPresentMode\"] = \"exitPresentMode\";\n    /**\n     * Triggers the full height lazy load data.\n     * @example\n     * ```js\n     * liveboardEmbed.on(EmbedEvent.RequestVisibleEmbedCoordinates, (payload) => {\n     *      console.log(payload);\n     * });\n     * ```\n     * @version SDK: 1.39.0 | ThoughtSpot: 10.10.0.cl\n     *\n     * @hidden\n     */\n    HostEvent[\"VisibleEmbedCoordinates\"] = \"visibleEmbedCoordinates\";\n    /**\n     * Trigger the *Spotter* action for visualizations present on the liveboard's vizzes.\n     * @param - `vizId` refers to the Visualization ID in Spotter embed and is required.\n     * @example\n     * ```js\n     * let latestSpotterVizId = '';\n     * spotterEmbed.on(EmbedEvent.Data, (payload) => {\n     *   latestSpotterVizId = payload.data.id;\n     * });\n     *\n     * spotterEmbed.trigger(HostEvent.AskSpotter, { vizId: latestSpotterVizId });\n     * ```\n     * @version SDK: 1.41.0 | ThoughtSpot: 10.12.0.cl\n     */\n    HostEvent[\"AskSpotter\"] = \"AskSpotter\";\n    /**\n     * @hidden\n     * Triggers the update of the embed params.\n     *\n     * @example\n     * ```js\n     * liveboardEmbed.trigger(HostEvent.UpdateEmbedParams, viewConfig);\n     * ```\n     */\n    HostEvent[\"UpdateEmbedParams\"] = \"updateEmbedParams\";\n    /**\n     * Triggered when the embed needs to be destroyed. This is used to clean up any embed-related resources internally.\n     * @example\n     * ```js\n     * liveboardEmbed.trigger(HostEvent.DestroyEmbed);\n     * ```\n     * @version SDK: 1.41.0 | ThoughtSpot: 10.12.0.cl\n     */\n    HostEvent[\"DestroyEmbed\"] = \"EmbedDestroyed\";\n    /**\n     * Triggers a new conversation in Spotter embed.\n     *\n     * This feature is available only when chat history is enabled on your ThoughtSpot\n     * instance. Contact your admin or ThoughtSpot Support to enable chat history on your\n     * instance.\n     *\n     * @example\n     * ```js\n     * spotterEmbed.trigger(HostEvent.StartNewSpotterConversation);\n     * ```\n     * @version SDK: 1.45.0 | ThoughtSpot: 26.2.0.cl\n     */\n    HostEvent[\"StartNewSpotterConversation\"] = \"StartNewSpotterConversation\";\n    /**\n     * @hidden\n     * Get the current context of the embedded page.\n     *\n     * @example\n     * ```js\n     * const context = await liveboardEmbed.trigger(HostEvent.GetPageContext);\n     * ```\n     * @version SDK: 1.45.0 | ThoughtSpot: 26.2.0.cl\n     */\n    HostEvent[\"GetPageContext\"] = \"GetPageContext\";\n    /**\n     * Trigger the **Send Test Email** action in the Liveboard schedule modal.\n     * Sends a test schedule email to self or all recipients.\n     * Requires `isSendNowLiveboardSchedulingEnabled` to be enabled.\n     * @example\n     * ```js\n     * liveboardEmbed.trigger(HostEvent.SendTestScheduleEmail, {\n     *     sendToSelf: true,\n     * })\n     * ```\n     * @example\n     * ```js\n     * // Send to all recipients\n     * liveboardEmbed.trigger(HostEvent.SendTestScheduleEmail, {\n     *     sendToSelf: false,\n     * })\n     * ```\n     * @version SDK: 1.48.0 | ThoughtSpot Cloud: 26.5.0.cl\n     */\n    HostEvent[\"SendTestScheduleEmail\"] = \"sendTestScheduleEmail\";\n    /**\n     * Sends a user message (prompt) to the SpotterViz panel programmatically.\n     * @version SDK: 1.50.0 | ThoughtSpot Cloud: 26.7.0.cl\n     * @param query - the prompt text to send.\n     * @example\n     * ```js\n     * liveboardEmbed.trigger(HostEvent.SpotterVizSendUserMessage, {\n     *     query: 'Show me revenue by region',\n     * });\n     * ```\n     */\n    HostEvent[\"SpotterVizSendUserMessage\"] = \"SpotterVizSendUserMessage\";\n    /**\n     * Initializes a new SpotterViz conversation.\n     * @version SDK: 1.50.0 | ThoughtSpot Cloud: 26.7.0.cl\n     * @example\n     * ```js\n     * liveboardEmbed.trigger(HostEvent.InitSpotterVizConversation);\n     * ```\n     */\n    HostEvent[\"InitSpotterVizConversation\"] = \"InitSpotterVizConversation\";\n    /**\n     * Clears browser cache and fetches new data for liveboard ChartViz Containers.\n     * Requires `enableLiveboardDataCache` to be enabled.\n     * @example\n     * ```js\n     * liveboardEmbed.trigger(HostEvent.RefreshLiveboardBrowserCache);\n     * ```\n     * @version SDK: 1.49.0 | ThoughtSpot Cloud: 26.6.0.cl\n     */\n    HostEvent[\"RefreshLiveboardBrowserCache\"] = \"refreshLiveboardBrowserCache\";\n})(HostEvent || (HostEvent = {}));\n/**\n * The different visual modes that the data sources panel within\n * search could appear in, such as hidden, collapsed, or expanded.\n */\nexport var DataSourceVisualMode;\n(function (DataSourceVisualMode) {\n    /**\n     * The data source panel is hidden.\n     */\n    DataSourceVisualMode[\"Hidden\"] = \"hide\";\n    /**\n     * The data source panel is collapsed, but the user can manually expand it.\n     */\n    DataSourceVisualMode[\"Collapsed\"] = \"collapse\";\n    /**\n     * The data source panel is expanded, but the user can manually collapse it.\n     */\n    DataSourceVisualMode[\"Expanded\"] = \"expand\";\n})(DataSourceVisualMode || (DataSourceVisualMode = {}));\n/**\n * The query params passed down to the embedded ThoughtSpot app\n * containing configuration and/or visual information.\n */\nexport var Param;\n(function (Param) {\n    Param[\"Tsmcp\"] = \"tsmcp\";\n    Param[\"EmbedApp\"] = \"embedApp\";\n    Param[\"DataSources\"] = \"dataSources\";\n    Param[\"DataSourceMode\"] = \"dataSourceMode\";\n    Param[\"DisableActions\"] = \"disableAction\";\n    Param[\"DisableActionReason\"] = \"disableHint\";\n    Param[\"ForceTable\"] = \"forceTable\";\n    Param[\"preventLiveboardFilterRemoval\"] = \"preventPinboardFilterRemoval\";\n    Param[\"SearchQuery\"] = \"searchQuery\";\n    Param[\"HideActions\"] = \"hideAction\";\n    Param[\"HideObjects\"] = \"hideObjects\";\n    Param[\"HostAppUrl\"] = \"hostAppUrl\";\n    Param[\"EnableVizTransformations\"] = \"enableVizTransform\";\n    Param[\"EnableSearchAssist\"] = \"enableSearchAssist\";\n    Param[\"EnableConnectionNewExperience\"] = \"newConnectionsExperience\";\n    Param[\"EnablePendoHelp\"] = \"enablePendoHelp\";\n    Param[\"HideResult\"] = \"hideResult\";\n    Param[\"UseLastSelectedDataSource\"] = \"useLastSelectedSources\";\n    Param[\"Tag\"] = \"tag\";\n    Param[\"HideTagFilterChips\"] = \"hideTagFilterChips\";\n    Param[\"AutoLogin\"] = \"autoLogin\";\n    Param[\"searchTokenString\"] = \"searchTokenString\";\n    Param[\"executeSearch\"] = \"executeSearch\";\n    Param[\"fullHeight\"] = \"isFullHeightPinboard\";\n    Param[\"livedBoardEmbed\"] = \"isLiveboardEmbed\";\n    Param[\"searchEmbed\"] = \"isSearchEmbed\";\n    Param[\"vizEmbed\"] = \"isVizEmbed\";\n    Param[\"StringIDsUrl\"] = \"overrideStringIDsUrl\";\n    Param[\"Version\"] = \"sdkVersion\";\n    Param[\"ViewPortHeight\"] = \"viewPortHeight\";\n    Param[\"ViewPortWidth\"] = \"viewPortWidth\";\n    Param[\"VisibleActions\"] = \"visibleAction\";\n    Param[\"DisableLoginRedirect\"] = \"disableLoginRedirect\";\n    Param[\"visibleVizs\"] = \"pinboardVisibleVizs\";\n    Param[\"LiveboardV2Enabled\"] = \"isPinboardV2Enabled\";\n    Param[\"DataPanelV2Enabled\"] = \"enableDataPanelV2\";\n    Param[\"ShowAlerts\"] = \"showAlerts\";\n    Param[\"Locale\"] = \"locale\";\n    Param[\"CustomStyle\"] = \"customStyle\";\n    Param[\"ForceSAMLAutoRedirect\"] = \"forceSAMLAutoRedirect\";\n    // eslint-disable-next-line @typescript-eslint/no-shadow\n    Param[\"AuthType\"] = \"authType\";\n    Param[\"IconSpriteUrl\"] = \"iconSprite\";\n    Param[\"cookieless\"] = \"cookieless\";\n    // Deprecated: `isContextMenuEnabledOnLeftClick`\n    // Introduced: `contextMenuEnabledOnWhichClick` with values: 'left',\n    // 'right', or 'both'. This update only affects ThoughtSpot URL parameters\n    // and does not impact existing workflows or use cases. Added support for\n    // 'both' clicks in `contextMenuTrigger` configuration.\n    Param[\"ContextMenuTrigger\"] = \"contextMenuEnabledOnWhichClick\";\n    Param[\"LinkOverride\"] = \"linkOverride\";\n    Param[\"EnableLinkOverridesV2\"] = \"enableLinkOverridesV2\";\n    Param[\"blockNonEmbedFullAppAccess\"] = \"blockNonEmbedFullAppAccess\";\n    Param[\"ShowInsertToSlide\"] = \"insertInToSlide\";\n    Param[\"PrimaryNavHidden\"] = \"primaryNavHidden\";\n    Param[\"HideProfleAndHelp\"] = \"profileAndHelpInNavBarHidden\";\n    Param[\"NavigationVersion\"] = \"navigationVersion\";\n    Param[\"HideHamburger\"] = \"hideHamburger\";\n    Param[\"HideObjectSearch\"] = \"hideObjectSearch\";\n    Param[\"HideNotification\"] = \"hideNotification\";\n    Param[\"HideApplicationSwitcher\"] = \"applicationSwitcherHidden\";\n    Param[\"HideOrgSwitcher\"] = \"orgSwitcherHidden\";\n    Param[\"HideWorksheetSelector\"] = \"hideWorksheetSelector\";\n    Param[\"DisableWorksheetChange\"] = \"disableWorksheetChange\";\n    Param[\"HideSourceSelection\"] = \"hideSourceSelection\";\n    Param[\"DisableSourceSelection\"] = \"disableSourceSelection\";\n    Param[\"HideEurekaResults\"] = \"hideEurekaResults\";\n    Param[\"HideEurekaSuggestions\"] = \"hideEurekaSuggestions\";\n    Param[\"HideAutocompleteSuggestions\"] = \"hideAutocompleteSuggestions\";\n    Param[\"HideLiveboardHeader\"] = \"hideLiveboardHeader\";\n    Param[\"ShowLiveboardDescription\"] = \"showLiveboardDescription\";\n    Param[\"ShowLiveboardTitle\"] = \"showLiveboardTitle\";\n    Param[\"ShowMaskedFilterChip\"] = \"showMaskedFilterChip\";\n    Param[\"IsLiveboardMasterpiecesEnabled\"] = \"isLiveboardMasterpiecesEnabled\";\n    Param[\"EnableNewChartLibrary\"] = \"muzeChartPhase1EnabledGA\";\n    Param[\"HiddenTabs\"] = \"hideTabs\";\n    Param[\"VisibleTabs\"] = \"visibleTabs\";\n    Param[\"HideTabPanel\"] = \"hideTabPanel\";\n    Param[\"HideSampleQuestions\"] = \"hideSampleQuestions\";\n    Param[\"WorksheetId\"] = \"worksheet\";\n    Param[\"Query\"] = \"query\";\n    Param[\"HideHomepageLeftNav\"] = \"hideHomepageLeftNav\";\n    Param[\"ModularHomeExperienceEnabled\"] = \"modularHomeExperience\";\n    Param[\"HomepageVersion\"] = \"homepageVersion\";\n    Param[\"ListPageVersion\"] = \"listpageVersion\";\n    Param[\"PendoTrackingKey\"] = \"additionalPendoKey\";\n    Param[\"LiveboardHeaderSticky\"] = \"isLiveboardHeaderSticky\";\n    Param[\"IsProductTour\"] = \"isProductTour\";\n    Param[\"HideSearchBarTitle\"] = \"hideSearchBarTitle\";\n    Param[\"HideSageAnswerHeader\"] = \"hideSageAnswerHeader\";\n    Param[\"HideSearchBar\"] = \"hideSearchBar\";\n    Param[\"ClientLogLevel\"] = \"clientLogLevel\";\n    Param[\"ExposeTranslationIDs\"] = \"exposeTranslationIDs\";\n    Param[\"OverrideNativeConsole\"] = \"overrideConsoleLogs\";\n    Param[\"enableAskSage\"] = \"enableAskSage\";\n    Param[\"CollapseSearchBarInitially\"] = \"collapseSearchBarInitially\";\n    Param[\"DataPanelCustomGroupsAccordionInitialState\"] = \"dataPanelCustomGroupsAccordionInitialState\";\n    Param[\"EnableCustomColumnGroups\"] = \"enableCustomColumnGroups\";\n    Param[\"DateFormatLocale\"] = \"dateFormatLocale\";\n    Param[\"NumberFormatLocale\"] = \"numberFormatLocale\";\n    Param[\"CurrencyFormat\"] = \"currencyFormat\";\n    Param[\"Enable2ColumnLayout\"] = \"enable2ColumnLayout\";\n    Param[\"IsFullAppEmbed\"] = \"isFullAppEmbed\";\n    Param[\"IsOnBeforeGetVizDataInterceptEnabled\"] = \"isOnBeforeGetVizDataInterceptEnabled\";\n    Param[\"FocusSearchBarOnRender\"] = \"focusSearchBarOnRender\";\n    Param[\"DisableRedirectionLinksInNewTab\"] = \"disableRedirectionLinksInNewTab\";\n    Param[\"HomePageSearchBarMode\"] = \"homePageSearchBarMode\";\n    Param[\"ShowLiveboardVerifiedBadge\"] = \"showLiveboardVerifiedBadge\";\n    Param[\"ShowLiveboardReverifyBanner\"] = \"showLiveboardReverifyBanner\";\n    Param[\"LiveboardHeaderV2\"] = \"isLiveboardHeaderV2Enabled\";\n    Param[\"HideIrrelevantFiltersInTab\"] = \"hideIrrelevantFiltersAtTabLevel\";\n    Param[\"IsEnhancedFilterInteractivityEnabled\"] = \"isLiveboardPermissionV2Enabled\";\n    Param[\"SpotterEnabled\"] = \"isSpotterExperienceEnabled\";\n    Param[\"IsUnifiedSearchExperienceEnabled\"] = \"isUnifiedSearchExperienceEnabled\";\n    Param[\"OverrideOrgId\"] = \"orgId\";\n    Param[\"OauthPollingInterval\"] = \"oAuthPollingInterval\";\n    Param[\"IsForceRedirect\"] = \"isForceRedirect\";\n    Param[\"DataSourceId\"] = \"dataSourceId\";\n    Param[\"preAuthCache\"] = \"preAuthCache\";\n    Param[\"ShowSpotterLimitations\"] = \"showSpotterLimitations\";\n    Param[\"CoverAndFilterOptionInPDF\"] = \"arePdfCoverFilterPageCheckboxesEnabled\";\n    Param[\"PrimaryAction\"] = \"primaryAction\";\n    Param[\"isSpotterAgentEmbed\"] = \"isSpotterAgentEmbed\";\n    Param[\"IsLiveboardStylingAndGroupingEnabled\"] = \"isLiveboardStylingAndGroupingEnabled\";\n    Param[\"IsLazyLoadingForEmbedEnabled\"] = \"isLazyLoadingForEmbedEnabled\";\n    Param[\"RootMarginForLazyLoad\"] = \"rootMarginForLazyLoad\";\n    Param[\"isPNGInScheduledEmailsEnabled\"] = \"isPNGInScheduledEmailsEnabled\";\n    Param[\"IsWYSIWYGLiveboardPDFEnabled\"] = \"isWYSIWYGLiveboardPDFEnabled\";\n    Param[\"isLiveboardXLSXCSVDownloadEnabled\"] = \"isLiveboardXLSXCSVDownloadEnabled\";\n    Param[\"isGranularXLSXCSVSchedulesEnabled\"] = \"isGranularXLSXCSVSchedulesEnabled\";\n    Param[\"isSendNowLiveboardSchedulingEnabled\"] = \"isSendNowLiveboardSchedulingEnabled\";\n    Param[\"isCentralizedLiveboardFilterUXEnabled\"] = \"isCentralizedLiveboardFilterUXEnabled\";\n    Param[\"isLinkParametersEnabled\"] = \"isLinkParametersEnabled\";\n    Param[\"EnablePastConversationsSidebar\"] = \"enablePastConversationsSidebar\";\n    Param[\"UpdatedSpotterChatPrompt\"] = \"updatedSpotterChatPrompt\";\n    Param[\"EnableStopAnswerGenerationEmbed\"] = \"enableStopAnswerGenerationEmbed\";\n    Param[\"SpotterSidebarTitle\"] = \"spotterSidebarTitle\";\n    Param[\"SpotterSidebarDefaultExpanded\"] = \"spotterSidebarDefaultExpanded\";\n    Param[\"SpotterChatRenameLabel\"] = \"spotterChatRenameLabel\";\n    Param[\"SpotterChatDeleteLabel\"] = \"spotterChatDeleteLabel\";\n    Param[\"SpotterDeleteConversationModalTitle\"] = \"spotterDeleteConversationModalTitle\";\n    Param[\"SpotterPastConversationAlertMessage\"] = \"spotterPastConversationAlertMessage\";\n    Param[\"SpotterDocumentationUrl\"] = \"spotterDocumentationUrl\";\n    Param[\"SpotterBestPracticesLabel\"] = \"spotterBestPracticesLabel\";\n    Param[\"SpotterConversationsBatchSize\"] = \"spotterConversationsBatchSize\";\n    Param[\"SpotterNewChatButtonTitle\"] = \"spotterNewChatButtonTitle\";\n    Param[\"IsThisPeriodInDateFiltersEnabled\"] = \"isThisPeriodInDateFiltersEnabled\";\n    Param[\"HideToolResponseCardBranding\"] = \"hideToolResponseCardBranding\";\n    Param[\"ToolResponseCardBrandingLabel\"] = \"toolResponseCardBrandingLabel\";\n    Param[\"EnableHomepageAnnouncement\"] = \"enableHomepageAnnouncement\";\n    Param[\"EnableLiveboardDataCache\"] = \"enableLiveboardDataCache\";\n    Param[\"SpotterFileUploadEnabled\"] = \"spotterFileUploadEnabled\";\n    Param[\"SpotterFileUploadFileTypes\"] = \"spotterFileUploadFileTypes\";\n})(Param || (Param = {}));\n/**\n * ThoughtSpot application pages include actions and menu commands\n * for various user-initiated operations. These actions are represented\n * as enumeration members in the SDK. To control actions in the embedded view:\n * - disabledActions — the action is grayed out and still visible, but non-interactive (user can see but not click).\n * - hiddenActions — the action is completely removed from the UI (user cannot see it at all).\n * - visibleActions — allowlist, only these actions are shown; all others are hidden.\n *\n * Use disabledActions to disable (gray out) an action.\n * Use hiddenActions to hide (fully remove) an action.\n * Use visibleActions to show only specific actions.\n * @example\n * ```js\n * const embed = new LiveboardEmbed('#tsEmbed', {\n *    ... //other embed view config\n *    visibleActions: [Action.Save, Action.Edit, Action.Present, Action.Explore],\n *    disabledActions: [Action.Download],\n *    //hiddenActions: [], // Set either this or visibleActions\n * })\n * ```\n * @example\n * ```js\n * const embed = new LiveboardEmbed('#tsEmbed', {\n *    ... //other embed view config\n *    //visibleActions: [],\n *    disabledActions: [Action.Download],\n *    hiddenActions: [Action.Edit, Action.Explore],\n * })\n * ```\n * See also link:https://developers.thoughtspot.com/docs/actions[Developer Documentation].\n */\nexport var Action;\n(function (Action) {\n    /**\n     * The **Save** action on an Answer or Liveboard.\n     * Allows users to save the changes.\n     * @example\n     * ```js\n     * disabledActions: [Action.Save]\n     * ```\n     */\n    Action[\"Save\"] = \"save\";\n    /**\n     * @hidden\n     */\n    Action[\"Update\"] = \"update\";\n    /**\n     * @hidden\n     */\n    Action[\"SaveUntitled\"] = \"saveUntitled\";\n    /**\n     * The **Save as View** action on the Answer\n     * page. Saves an Answer as a View object in the full\n     * application embedding mode.\n     * @example\n     * ```js\n     * disabledActions: [Action.SaveAsView]\n     * ```\n     */\n    Action[\"SaveAsView\"] = \"saveAsView\";\n    /**\n     * The **Make a copy** action on a Liveboard or Answer\n     * page. Creates a copy of the Liveboard.\n     * In LiveboardEmbed, the **Make a copy** action is not available for\n     * visualizations in the embedded Liveboard view.\n     * In AppEmbed, the **Make a copy** action is available on both\n     * Liveboards and visualizations.\n     * @example\n     * ```js\n     * disabledActions: [Action.MakeACopy]\n     * ```\n     */\n    Action[\"MakeACopy\"] = \"makeACopy\";\n    /**\n     * The **Copy and Edit** action on a Liveboard.\n     * This action is now replaced with `Action.MakeACopy`.\n     * @example\n     * ```js\n     * disabledActions: [Action.EditACopy]\n     * ```\n     */\n    Action[\"EditACopy\"] = \"editACopy\";\n    /**\n     * The **Copy link** menu action on a Liveboard visualization.\n     * Copies the visualization URL\n     * @example\n     * ```js\n     * disabledActions: [Action.CopyLink]\n     * ```\n     */\n    Action[\"CopyLink\"] = \"embedDocument\";\n    /**\n     * @hidden\n     */\n    Action[\"ResetLayout\"] = \"resetLayout\";\n    /**\n     * The **Schedule** menu action on a Liveboard.\n     * Allows scheduling a Liveboard job, for example,\n     * sending periodic notifications.\n     * @example\n     * ```js\n     * disabledActions: [Action.Schedule]\n     * ```\n     */\n    Action[\"Schedule\"] = \"subscription\";\n    /**\n     * The **Manage schedules** menu action on a Liveboard.\n     * Allows users to manage scheduled Liveboard jobs.\n     * @example\n     * ```js\n     * disabledActions: [Action.SchedulesList]\n     * ```\n     */\n    Action[\"SchedulesList\"] = \"schedule-list\";\n    /**\n     * The **Share** action on a Liveboard, Answer, or Model.\n     * Allows users to share an object with other users and groups.\n     * @example\n     * ```js\n     * disabledActions: [Action.Share]\n     * ```\n     */\n    Action[\"Share\"] = \"share\";\n    /**\n     * The **Add filter** action on a Liveboard page.\n     * Allows adding filters to visualizations on a Liveboard.\n     * @example\n     * ```js\n     * disabledActions: [Action.AddFilter]\n     * ```\n     */\n    Action[\"AddFilter\"] = \"addFilter\";\n    /**\n     * The **Add Data Panel Objects** action on the data panel v2.\n     * Allows to show action menu to add different objects (such as\n     * formulas, Parameters) in data panel new experience.\n     * @example\n     * ```js\n     * disabledActions: [Action.AddDataPanelObjects]\n     * ```\n     * @version SDK: 1.32.0 | ThoughtSpot: 10.0.0.cl, 10.1.0.sw\n     */\n    Action[\"AddDataPanelObjects\"] = \"addDataPanelObjects\";\n    /**\n     * The filter configuration options for a Liveboard.\n     * The configuration options are available when adding\n     * filters on a Liveboard.\n     *\n     * @example\n     * ```js\n     * disabledActions: [Action.ConfigureFilter]\n     * ```\n     */\n    Action[\"ConfigureFilter\"] = \"configureFilter\";\n    /**\n     * The **Collapse data sources** icon on the Search page.\n     * Collapses the panel showing data sources.\n     *\n     * @example\n     * ```js\n     * disabledActions: [Action.CollapseDataPanel]\n     * ```\n     * @version SDK: 1.1.0 | ThoughtSpot Cloud: ts7.may.cl, 8.4.1.sw\n     */\n    Action[\"CollapseDataSources\"] = \"collapseDataSources\";\n    /**\n     * The **Collapse data panel** icon on the Search page.\n     * Collapses the data panel view.\n     *\n     * @version SDK: 1.34.0 | ThoughtSpot Cloud: 10.3.0.cl\n     *\n     * @example\n     * ```js\n     * disabledActions: [Action.CollapseDataPanel]\n     * ```\n     */\n    Action[\"CollapseDataPanel\"] = \"collapseDataPanel\";\n    /**\n     * The **Choose sources** button on Search page.\n     * Allows selecting data sources for search queries.\n     * @example\n     * ```js\n     * disabledActions: [Action.ChooseDataSources]\n     * ```\n     */\n    Action[\"ChooseDataSources\"] = \"chooseDataSources\";\n    /**\n     * The **Create formula** action on a Search or Answer page.\n     * Allows adding formulas to an Answer.\n     * @example\n     * ```js\n     * disabledActions: [Action.AddFormula]\n     * ```\n     */\n    Action[\"AddFormula\"] = \"addFormula\";\n    /**\n     * The **Add parameter** action on a Liveboard or Answer.\n     * Allows adding Parameters to a Liveboard or Answer.\n     * @example\n     * ```js\n     * disabledActions: [Action.AddParameter]\n     * ```\n     */\n    Action[\"AddParameter\"] = \"addParameter\";\n    /**\n     * The **Add Column Set** action on a Answer.\n     * Allows adding column sets to a Answer.\n     * @example\n     * ```js\n     * disabledActions: [Action.AddColumnSet]\n     * ```\n     * @version SDK: 1.32.0 | ThoughtSpot: 10.0.0.cl, 10.1.0.sw\n     */\n    Action[\"AddColumnSet\"] = \"addSimpleCohort\";\n    /**\n     * The **Add Query Set** action on a Answer.\n     * Allows adding query sets to a Answer.\n     * @example\n     * ```js\n     * disabledActions: [Action.AddQuerySet]\n     * ```\n     * @version SDK: 1.32.0 | ThoughtSpot: 10.0.0.cl, 10.1.0.sw\n     */\n    Action[\"AddQuerySet\"] = \"addAdvancedCohort\";\n    /**\n     * @hidden\n     */\n    Action[\"SearchOnTop\"] = \"searchOnTop\";\n    /**\n     * The **SpotIQ analyze** menu action on a visualization or\n     * Answer page.\n     * @example\n     * ```js\n     * disabledActions: [Action.SpotIQAnalyze]\n     * ```\n     */\n    Action[\"SpotIQAnalyze\"] = \"spotIQAnalyze\";\n    /**\n     * @hidden\n     */\n    Action[\"ExplainInsight\"] = \"explainInsight\";\n    /**\n     * @hidden\n     */\n    Action[\"SpotIQFollow\"] = \"spotIQFollow\";\n    /**\n     * The Share action for a Liveboard visualization.\n     */\n    Action[\"ShareViz\"] = \"shareViz\";\n    /**\n     * @hidden\n     */\n    Action[\"ReplaySearch\"] = \"replaySearch\";\n    /**\n     * The **Show underlying data** menu action on a\n     * visualization or Answer page.\n     * Displays detailed information and raw data\n     * for a given visualization.\n     * @example\n     * ```js\n     * disabledActions: [Action.ShowUnderlyingData]\n     * ```\n     */\n    Action[\"ShowUnderlyingData\"] = \"showUnderlyingData\";\n    /**\n     * The **Download** menu action on Liveboard\n     * visualizations and Answers.\n     * Allows downloading a visualization or Answer.\n     * @example\n     * ```js\n     * disabledActions: [Action.DownloadAsPng]\n     * ```\n     */\n    Action[\"Download\"] = \"download\";\n    /**\n     * The **Download** > **PNG** menu action for charts on a Liveboard\n     * or Answer page.\n     * Downloads a visualization or Answer as a PNG file.\n     * @example\n     * ```js\n     * disabledActions: [Action.DownloadAsPng]\n     * ```\n     */\n    Action[\"DownloadAsPng\"] = \"downloadAsPng\";\n    /**\n     *\n     *The **Download PDF** action that downloads a Liveboard,\n     * visualization, or Answer as a PDF file.\n     *\n     * **NOTE**: The **Download** > **PDF** option is available for\n     * tables in visualizations and Answers.\n     * @example\n     * ```js\n     * disabledActions: [Action.DownloadAsPdf]\n     * ```\n     */\n    Action[\"DownloadAsPdf\"] = \"downloadAsPdf\";\n    /**\n     * The **Download** > **CSV** menu action for tables on a Liveboard\n     * or Answer page.\n     * Downloads a visualization or Answer in the XLSX format.\n     * @example\n     * ```js\n     * disabledActions: [Action.DownloadAsCsv]\n     * ```\n     */\n    Action[\"DownloadAsCsv\"] = \"downloadAsCSV\";\n    /**\n     * The **Download** > **XLSX** menu action for tables on a Liveboard\n     * or Answer page.\n     * Downloads a visualization or Answer in the XLSX format.\n     * @example\n     * ```js\n     * disabledActions: [Action.DownloadAsXlsx]\n     * ```\n     */\n    Action[\"DownloadAsXlsx\"] = \"downloadAsXLSX\";\n    /**\n     * The **Download Liveboard** menu action on a Liveboard.\n     * Allows downloading the entire Liveboard.\n     * @example\n     * ```js\n     * disabledActions: [Action.DownloadLiveboard]\n     * ```\n     * @version SDK: 1.48.0 | ThoughtSpot: 26.5.0.cl\n     */\n    Action[\"DownloadLiveboard\"] = \"downloadLiveboard\";\n    /**\n     * The **Download Liveboard as Continuous PDF** menu action on a Liveboard.\n     * Allows downloading the entire Liveboard as a continuous PDF.\n     * @example\n     * ```js\n     * disabledActions: [Action.DownloadLiveboardAsContinuousPDF]\n     * ```\n     * @version SDK: 1.48.0 | ThoughtSpot: 26.5.0.cl\n     */\n    Action[\"DownloadLiveboardAsContinuousPDF\"] = \"downloadLiveboardAsContinuousPDF\";\n    /**\n     * The Download Liveboard as A4 PDF menu action on a Liveboard.\n     * Allows downloading the entire Liveboard as an A4 PDF.\n     * Requires {@link Action.DownloadLiveboard} as a parent action when\n     * {@link LiveboardViewConfig.isLiveboardXLSXCSVDownloadEnabled} or\n     * {@link LiveboardViewConfig.isContinuousLiveboardPDFEnabled} flags are enabled.\n     * Use this instead of {@link Action.DownloadAsPdf} when either flag is on.\n     * @version SDK: 1.50.0 | ThoughtSpot Cloud: 26.7.0.cl\n     * @example\n     * ```js\n     * disabledActions: [Action.DownloadLiveboardAsA4Pdf]\n     * ```\n     */\n    Action[\"DownloadLiveboardAsA4Pdf\"] = \"downloadLiveboardAsA4Pdf\";\n    /**\n     * The **Download Liveboard as XLSX** menu action on a Liveboard.\n     * Allows downloading the entire Liveboard as an XLSX file.\n     * @example\n     * ```js\n     * disabledActions: [Action.DownloadLiveboardAsXlsx]\n     * ```\n     * @version SDK: 1.48.0 | ThoughtSpot: 26.5.0.cl\n     */\n    Action[\"DownloadLiveboardAsXlsx\"] = \"downloadLiveboardAsXlsx\";\n    /**\n     * The **Download Liveboard as CSV** menu action on a Liveboard.\n     * Allows downloading the entire Liveboard as a CSV file.\n     * @example\n     * ```js\n     * disabledActions: [Action.DownloadLiveboardAsCsv]\n     * ```\n     * @version SDK: 1.48.0 | ThoughtSpot: 26.5.0.cl\n     */\n    Action[\"DownloadLiveboardAsCsv\"] = \"downloadLiveboardAsCsv\";\n    /**\n     * @hidden\n     */\n    Action[\"DownloadTrace\"] = \"downloadTrace\";\n    /**\n     * The **Export TML** menu action on a Liveboard, Answer, and\n     * the Data Workspace pages for data objects and connections.\n     *\n     * Allows exporting an object as a TML file.\n     *\n     * @example\n     * ```js\n     * disabledActions: [Action.ExportTML]\n     * ```\n     */\n    Action[\"ExportTML\"] = \"exportTSL\";\n    /**\n     * The **Import TML** menu action on the\n     * *Data Workspace* > *Utilities* page.\n     * Imports TML representation of ThoughtSpot objects.\n     * @example\n     * ```js\n     * disabledActions: [Action.ImportTML]\n     * ```\n     */\n    Action[\"ImportTML\"] = \"importTSL\";\n    /**\n     * The **Update TML** menu action for Liveboards and Answers.\n     * Updates TML representation of ThoughtSpot objects.\n     * @example\n     * ```js\n     * disabledActions: [Action.UpdateTML]\n     * ```\n     */\n    Action[\"UpdateTML\"] = \"updateTSL\";\n    /**\n     * The **Edit TML** menu action for Liveboards and Answers.\n     * Opens the TML editor.\n     * @example\n     * ```js\n     * disabledActions: [Action.EditTML]\n     * ```\n     */\n    Action[\"EditTML\"] = \"editTSL\";\n    /**\n     * The **Present** menu action for Liveboards and Answers.\n     * Allows presenting a Liveboard or visualization in\n     * slideshow mode.\n     * @example\n     * ```js\n     * disabledActions: [Action.Present]\n     * ```\n     */\n    Action[\"Present\"] = \"present\";\n    /**\n     * The visualization tile resize option.\n     * Also available via More `...` options menu on a visualization.\n     * Allows resizing visualization tiles and switching\n     * between different preset layout option.\n     *\n     * @example\n     * ```js\n     * disabledActions: [Action.ToggleSize]\n     * ```\n     */\n    Action[\"ToggleSize\"] = \"toggleSize\";\n    /**\n     * The *Edit* action on the Liveboard page and in the\n     * visualization menu.\n     * Opens a Liveboard or visualization in edit mode.\n     * @example\n     * ```js\n     * disabledActions: [Action.Edit]\n     * ```\n     */\n    Action[\"Edit\"] = \"edit\";\n    /**\n     * The text edit option for Liveboard and visualization titles.\n     * @example\n     * ```js\n     * disabledActions: [Action.EditTitle]\n     * ```\n     */\n    Action[\"EditTitle\"] = \"editTitle\";\n    /**\n     * The **Delete** action on a Liveboard, *Liveboards* and\n     * *Answers* list pages in full application embedding.\n     *\n     * @example\n     * ```js\n     * disabledActions: [Action.Remove]\n     * ```\n     */\n    Action[\"Remove\"] = \"delete\";\n    /**\n     * @hidden\n     */\n    Action[\"Ungroup\"] = \"ungroup\";\n    /**\n     * @hidden\n     */\n    Action[\"Describe\"] = \"describe\";\n    /**\n     * @hidden\n     */\n    Action[\"Relate\"] = \"relate\";\n    /**\n     * @hidden\n     */\n    Action[\"CustomizeHeadlines\"] = \"customizeHeadlines\";\n    /**\n     * @hidden\n     */\n    Action[\"PinboardInfo\"] = \"pinboardInfo\";\n    /**\n     * The **Show Liveboard details** menu action on a Liveboard.\n     * Displays details such as the name, description, and\n     * author of the Liveboard, and timestamp of Liveboard creation\n     * and update.\n     * @example\n     * ```js\n     * disabledActions: [Action.LiveboardInfo]\n     * ```\n     */\n    // eslint-disable-next-line @typescript-eslint/no-duplicate-enum-values\n    Action[\"LiveboardInfo\"] = \"pinboardInfo\";\n    /**\n     * @hidden\n     */\n    Action[\"SendAnswerFeedback\"] = \"sendFeedback\";\n    /**\n     * @hidden\n     */\n    Action[\"DownloadEmbraceQueries\"] = \"downloadEmbraceQueries\";\n    /**\n     * The **Pin** menu action on an Answer or\n     * Search results page.\n     * @example\n     * ```js\n     * disabledActions: [Action.Pin]\n     * ```\n     */\n    Action[\"Pin\"] = \"pin\";\n    /**\n     * @hidden\n     */\n    Action[\"AnalysisInfo\"] = \"analysisInfo\";\n    /**\n     * The **Schedule** menu action on a Liveboard.\n     * Allows scheduling a Liveboard job.\n     * @example\n     * ```js\n     * disabledActions: [Action.Subscription]\n     * ```\n     */\n    // eslint-disable-next-line @typescript-eslint/no-duplicate-enum-values\n    Action[\"Subscription\"] = \"subscription\";\n    /**\n     * The **Explore** action on Liveboard visualizations\n     * @example\n     * ```js\n     * disabledActions: [Action.Explore]\n     * ```\n     */\n    Action[\"Explore\"] = \"explore\";\n    /**\n     * The contextual menu action to include a specific data point\n     * when drilling down a table or chart on an Answer.\n     *\n     * @example\n     * ```js\n     * disabledActions: [Action.DrillInclude]\n     * ```\n     */\n    Action[\"DrillInclude\"] = \"context-menu-item-include\";\n    /**\n     * The contextual menu action to exclude a specific data point\n     * when drilling down a table or chart on an Answer.\n     * @example\n     * ```js\n     * disabledActions: [Action.DrillInclude]\n     * ```\n     */\n    Action[\"DrillExclude\"] = \"context-menu-item-exclude\";\n    /**\n     * The **Copy to clipboard** menu action on tables in an Answer\n     * or Liveboard.\n     * Copies the selected data point.\n     * @example\n     * ```js\n     * disabledActions: [Action.CopyToClipboard]\n     * ```\n     */\n    Action[\"CopyToClipboard\"] = \"context-menu-item-copy-to-clipboard\";\n    Action[\"CopyAndEdit\"] = \"context-menu-item-copy-and-edit\";\n    /**\n     * @hidden\n     */\n    Action[\"DrillEdit\"] = \"context-menu-item-edit\";\n    Action[\"EditMeasure\"] = \"context-menu-item-edit-measure\";\n    Action[\"Separator\"] = \"context-menu-item-separator\";\n    /**\n     * The **Drill down** menu action on Answers and Liveboard\n     * visualizations.\n     * Allows drilling down to a specific data point on a chart or table.\n     * @example\n     * ```js\n     * disabledActions: [Action.DrillDown]\n     * ```\n     */\n    Action[\"DrillDown\"] = \"DRILL\";\n    /**\n     * The request access action on Liveboards.\n     * Allows users with view permissions to request edit access to a Liveboard.\n     * @example\n     * ```js\n     * disabledActions: [Action.RequestAccess]\n     * ```\n     */\n    Action[\"RequestAccess\"] = \"requestAccess\";\n    /**\n     * Controls the display and availability of the **Query visualizer** and\n     * **Query SQL** buttons in the Query details panel on the Answer page.\n     *\n     * **Query visualizer** - Displays the tables and filters used in the search query.\n     * **Query SQL** - Displays the SQL statements used to retrieve data for the query.\n     *\n     * Note: This action ID only affects the visibility of the buttons within the\n     * Query details panel. It does not control the visibility\n     * of the query details icon on the Answer page.\n     * @example\n     * ```js\n     * disabledActions: [Action.QueryDetailsButtons]\n     * ```\n     */\n    Action[\"QueryDetailsButtons\"] = \"queryDetailsButtons\";\n    /**\n     * The **Delete** action for Answers in the full application\n     * embedding mode.\n     * @example\n     * ```js\n     * disabledActions: [Action.AnswerDelete]\n     * ```\n     * @version SDK: 1.9.0 | ThoughtSpot: 8.1.0.cl, 8.4.1.sw\n     */\n    Action[\"AnswerDelete\"] = \"onDeleteAnswer\";\n    /**\n     * The chart switcher icon on Answer page and\n     * visualizations in edit mode.\n     * Allows switching to the table or chart mode\n     * when editing a visualization.\n     * @example\n     * ```js\n     * disabledActions: [Action.AnswerChartSwitcher]\n     * ```\n     * @version SDK: 1.9.0 | ThoughtSpot: 8.1.0.cl, 8.4.1.sw\n     */\n    Action[\"AnswerChartSwitcher\"] = \"answerChartSwitcher\";\n    /**\n     * The Favorites icon (*) for Answers,\n     * Liveboard, and data objects like Model,\n     * Tables and Views.\n     * Allows adding an object to the user's favorites list.\n     * @example\n     * ```js\n     * disabledActions: [Action.AddToFavorites]\n     * ```\n     * @version SDK: 1.9.0 | ThoughtSpot: 8.1.0.cl, 8.4.1.sw\n     */\n    Action[\"AddToFavorites\"] = \"addToFavorites\";\n    /**\n     * The edit icon on Liveboards (Classic experience).\n     * @example\n     * ```js\n     * disabledActions: [Action.EditDetails]\n     * ```\n     * @version SDK: 1.9.0 | ThoughtSpot: 8.1.0.cl, 8.4.1.sw\n     */\n    Action[\"EditDetails\"] = \"editDetails\";\n    /**\n     * The *Create alert* action for KPI charts.\n     * Allows users to schedule threshold-based alerts\n     * for KPI charts.\n     * @example\n     * ```js\n     * disabledActions: [Action.CreateMonitor]\n     * ```\n     * @version SDK: 1.11.0 | ThoughtSpot: 8.3.0.cl, 8.4.1.sw\n     */\n    Action[\"CreateMonitor\"] = \"createMonitor\";\n    /**\n     * @version SDK: 1.11.1 | ThoughtSpot: 8.3.0.cl, 8.4.1.sw\n     * @deprecated This action is deprecated. It was used for reporting errors.\n     * @example\n     * ```js\n     * disabledActions: [Action.ReportError]\n     * ```\n     */\n    Action[\"ReportError\"] = \"reportError\";\n    /**\n     * The **Sync to sheets** action on Answers and Liveboard visualizations.\n     * Allows sending data to a Google Sheet.\n     * @example\n     * ```js\n     * disabledActions: [Action.SyncToSheets]\n     * ```\n     * @version SDK: 1.18.0 | ThoughtSpot: 8.10.0.cl, 9.0.1.sw\n     */\n    Action[\"SyncToSheets\"] = \"sync-to-sheets\";\n    /**\n     * The **Sync to other apps** action on Answers and Liveboard visualizations.\n     * Allows sending data to third-party apps like Slack, Salesforce,\n     * Microsoft Teams, and so on.\n     * @example\n     * ```js\n     * disabledActions: [Action.SyncToOtherApps]\n     * ```\n     * @version SDK: 1.18.0 | ThoughtSpot: 8.10.0.cl, 9.0.1.sw\n     */\n    Action[\"SyncToOtherApps\"] = \"sync-to-other-apps\";\n    /**\n     * The **Manage pipelines** action on Answers and Liveboard visualizations.\n     * Allows users to manage data sync pipelines to third-party apps.\n     * @example\n     * ```js\n     * disabledActions: [Action.ManagePipelines]\n     * ```\n     * @version SDK: 1.18.0 | ThoughtSpot: 8.10.0.cl, 9.0.1.sw\n     */\n    Action[\"ManagePipelines\"] = \"manage-pipeline\";\n    /**\n     * The **Filter** action on Liveboard visualizations.\n     * Allows users to apply cross-filters on a Liveboard.\n     * @example\n     * ```js\n     * disabledActions: [Action.CrossFilter]\n     * ```\n     * @version SDK: 1.21.0 | ThoughtSpot: 9.2.0.cl, 9.8.0.sw\n     */\n    Action[\"CrossFilter\"] = \"context-menu-item-cross-filter\";\n    /**\n     * The **Sync to Slack** action on Liveboard visualizations.\n     * Allows sending data to third-party apps like Slack.\n     * @example\n     * ```js\n     * disabledActions: [Action.SyncToSlack]\n     * ```\n     * @version SDK: 1.32.0 | ThoughtSpot Cloud: 10.1.0.cl\n     */\n    Action[\"SyncToSlack\"] = \"syncToSlack\";\n    /**\n     * The **Sync to Teams** action on Liveboard visualizations.\n     * Allows sending data to third-party apps like Microsoft Teams.\n     * @example\n     * ```js\n     * disabledActions: [Action.SyncToTeams]\n     * ```\n     * @version SDK: 1.32.0 | ThoughtSpot Cloud: 10.1.0.cl\n     */\n    Action[\"SyncToTeams\"] = \"syncToTeams\";\n    /**\n     * The **Remove** action that appears when cross filters are applied\n     * on a Liveboard.\n     * Removes filters applied to a visualization.\n     * @example\n     * ```js\n     * disabledActions: [Action.RemoveCrossFilter]\n     * ```\n     * @version SDK: 1.21.0 | ThoughtSpot: 9.2.0.cl, 9.5.1.sw\n     */\n    Action[\"RemoveCrossFilter\"] = \"context-menu-item-remove-cross-filter\";\n    /**\n     * The **Aggregate** option in the chart axis or the\n     * table column customization menu.\n     * Provides aggregation options to analyze the data on a chart or table.\n     * @example\n     * ```js\n     * disabledActions: [Action.AxisMenuAggregate]\n     * ```\n     * @version SDK: 1.21.0 | ThoughtSpot: 9.2.0.cl, 9.5.1.sw\n     */\n    Action[\"AxisMenuAggregate\"] = \"axisMenuAggregate\";\n    /**\n     * The **Time bucket** option in the chart axis or table column\n     * customization menu.\n     * Allows defining time metric for date comparison.\n     * @example\n     * ```js\n     * disabledActions: [Action.AxisMenuTimeBucket]\n     * ```\n     * @version SDK: 1.21.0 | ThoughtSpot: 9.2.0.cl, 9.5.1.sw\n     */\n    Action[\"AxisMenuTimeBucket\"] = \"axisMenuTimeBucket\";\n    /**\n     * The **Filter** action in the chart axis or table column\n     * customization menu.\n     * Allows adding, editing, or removing filters.\n     *\n     * @example\n     * ```js\n     * disabledActions: [Action.AxisMenuFilter]\n     * ```\n     * @version SDK: 1.21.0 | ThoughtSpot: 9.2.0.cl, 9.5.1.sw\n     */\n    Action[\"AxisMenuFilter\"] = \"axisMenuFilter\";\n    /**\n     * The **Conditional formatting** action on chart or table.\n     * Allows adding rules for conditional formatting of data\n     * points on a chart or table.\n     * @example\n     * ```js\n     * disabledActions: [Action.AxisMenuConditionalFormat]\n     * ```\n     * @version SDK: 1.21.0 | ThoughtSpot: 9.2.0.cl, 9.5.1.sw\n     */\n    Action[\"AxisMenuConditionalFormat\"] = \"axisMenuConditionalFormat\";\n    /**\n     * The **Sort** menu action on a table or chart axis\n     * Sorts data in ascending or descending order.\n     * Allows adding, editing, or removing filters.\n     * @example\n     * ```js\n     * disabledActions: [Action.AxisMenuConditionalFormat]\n     * ```\n     * @version SDK: 1.21.0 | ThoughtSpot: 9.2.0.cl, 9.5.1.sw\n     */\n    Action[\"AxisMenuSort\"] = \"axisMenuSort\";\n    /**\n     * The **Group** option in the chart axis or table column\n     * customization menu.\n     * Allows grouping data points if the axes use the same\n     * unit of measurement and a similar scale.\n     * @example\n     * ```js\n     * disabledActions: [Action.AxisMenuGroup]\n     * ```\n     * @version SDK: 1.21.0 | ThoughtSpot: 9.2.0.cl, 9.5.1.sw\n     */\n    Action[\"AxisMenuGroup\"] = \"axisMenuGroup\";\n    /**\n     * The **Position** option in the axis customization menu.\n     * Allows changing the position of the axis to the\n     * left or right side of the chart.\n     * @example\n     * ```js\n     * disabledActions: [Action.AxisMenuPosition]\n     * ```\n     * @version SDK: 1.21.0 | ThoughtSpot: 9.2.0.cl, 9.5.1.sw\n     */\n    Action[\"AxisMenuPosition\"] = \"axisMenuPosition\";\n    /**\n     * The **Rename** option in the chart axis or table column customization menu.\n     * Renames the axis label on a chart or the column header on a table.\n     * @example\n     * ```js\n     * disabledActions: [Action.AxisMenuRename]\n     * ```\n     * @version SDK: 1.21.0 | ThoughtSpot: 9.2.0.cl, 9.5.1.sw\n     */\n    Action[\"AxisMenuRename\"] = \"axisMenuRename\";\n    /**\n     * The **Edit** action in the axis customization menu.\n     * Allows editing the axis name, position, minimum and maximum values,\n     * and format of a column.\n     * @example\n     * ```js\n     * disabledActions: [Action.AxisMenuEdit]\n     * ```\n     * @version SDK: 1.21.0 | ThoughtSpot: 9.2.0.cl, 9.5.1.sw\n     */\n    Action[\"AxisMenuEdit\"] = \"axisMenuEdit\";\n    /**\n     * The **Number format** action to customize the format of\n     * the data labels on a chart or table.\n     * @example\n     * ```js\n     * disabledActions: [Action.AxisMenuNumberFormat]\n     * ```\n     * @version SDK: 1.21.0 | ThoughtSpot: 9.2.0.cl, 9.5.1.sw\n     */\n    Action[\"AxisMenuNumberFormat\"] = \"axisMenuNumberFormat\";\n    /**\n     * The **Text wrapping** action on a table.\n     * Wraps or clips column text on a table.\n     * @example\n     * ```js\n     * disabledActions: [Action.AxisMenuTextWrapping]\n     * ```\n     * @version SDK: 1.21.0 | ThoughtSpot: 9.2.0.cl, 9.5.1.sw\n     */\n    Action[\"AxisMenuTextWrapping\"] = \"axisMenuTextWrapping\";\n    /**\n     * The **Remove** action in the chart axis or table column\n     * customization menu.\n     * Removes the data labels from a chart or the column of a\n     * table visualization.\n     * @example\n     * ```js\n     * disabledActions: [Action.AxisMenuRemove]\n     * ```\n     * @version SDK: 1.21.0 | ThoughtSpot: 9.2.0.cl, 9.5.1.sw\n     */\n    Action[\"AxisMenuRemove\"] = \"axisMenuRemove\";\n    /**\n     * The **Compare with** action in the chart axis customization menu.\n     * Allows comparing data across dimensions or measures.\n     * @example\n     * ```js\n     * disabledActions: [Action.AxisMenuCompare]\n     * ```\n     * @version SDK: 1.50.0 | ThoughtSpot: 26.7.0.cl\n     */\n    Action[\"AxisMenuCompare\"] = \"axisMenuCompare\";\n    /**\n     * The **Merge with** action in the chart axis customization menu.\n     * Allows merging data across dimensions or measures.\n     * @example\n     * ```js\n     * disabledActions: [Action.AxisMenuMerge]\n     * ```\n     * @version SDK: 1.50.0 | ThoughtSpot: 26.7.0.cl\n     */\n    Action[\"AxisMenuMerge\"] = \"axisMenuMerge\";\n    /**\n     * @hidden\n     */\n    Action[\"InsertInToSlide\"] = \"insertInToSlide\";\n    /**\n     * The **Rename** menu action on Liveboards and visualizations.\n     * Allows renaming a Liveboard or visualization.\n     * @example\n     * ```js\n     * disabledActions: [Action.RenameModalTitleDescription]\n     * ```\n     * @version SDK: 1.23.0 | ThoughtSpot: 9.4.0.cl, 9.8.0.sw\n     */\n    Action[\"RenameModalTitleDescription\"] = \"renameModalTitleDescription\";\n    /**\n     * The *Request verification* action on a Liveboard.\n     * Initiates a request for Liveboard verification.\n     * @example\n     * ```js\n     * disabledActions: [Action.RequestVerification]\n     * ```\n     * @version SDK: 1.25.0 | ThoughtSpot: 9.6.0.cl, 10.1.0.sw\n     */\n    Action[\"RequestVerification\"] = \"requestVerification\";\n    /**\n     *\n     * Allows users to mark a Liveboard as verified.\n     * @example\n     * ```js\n     * disabledActions: [Action.MarkAsVerified]\n     * ```\n     * @version SDK: 1.25.0 | ThoughtSpot: 9.6.0.cl, 10.1.0.sw\n     */\n    Action[\"MarkAsVerified\"] = \"markAsVerified\";\n    /**\n     * The **Add Tab** action on a Liveboard.\n     * Allows adding a new tab to a Liveboard view.\n     * @example\n     * ```js\n     * disabledActions: [Action.AddTab]\n     * ```\n     * @version SDK: 1.26.0 | ThoughtSpot: 9.7.0.cl, 9.8.0.sw\n     */\n    Action[\"AddTab\"] = \"addTab\";\n    /**\n     *\n     * Initiates contextual change analysis on KPI charts.\n     * @example\n     * ```js\n     * disabledActions: [Action.EnableContextualChangeAnalysis]\n     * ```\n     * @version SDK: 1.25.0 | ThoughtSpot Cloud: 9.6.0.cl\n     */\n    Action[\"EnableContextualChangeAnalysis\"] = \"enableContextualChangeAnalysis\";\n    /**\n     * Action ID to hide or disable Iterative Change Analysis option\n     * in the contextual change analysis Insight charts context menu.\n     *\n     * @example\n     * ```js\n     * disabledActions: [Action.EnableIterativeChangeAnalysis]\n     * ```\n     * @version SDK: 1.41.0 | ThoughtSpot Cloud: 9.12.0.cl\n     */\n    Action[\"EnableIterativeChangeAnalysis\"] = \"enableIterativeChangeAnalysis\";\n    /**\n     * Action ID to hide or disable Natural Language Search query.\n     *\n     * @example\n     * ```js\n     * disabledActions: [Action.ShowSageQuery]\n     * ```\n     * @version SDK: 1.26.0 | ThoughtSpot Cloud: 9.7.0.cl\n     */\n    Action[\"ShowSageQuery\"] = \"showSageQuery\";\n    /**\n     *\n     * Action ID to hide or disable the edit option for the\n     * results generated from the\n     * Natural Language Search query.\n     *\n     * @example\n     * ```js\n     * disabledActions: [Action.EditSageAnswer]\n     * ```\n     * @version SDK: 1.26.0 | ThoughtSpot Cloud: 9.7.0.cl\n     */\n    Action[\"EditSageAnswer\"] = \"editSageAnswer\";\n    /**\n     * The feedback widget for AI-generated Answers.\n     * Allows users to send feedback on the Answers generated\n     * from a Natural Language Search query.\n     *\n     * @example\n     * ```js\n     * disabledActions: [Action.SageAnswerFeedback]\n     * ```\n     * @version SDK: 1.26.0 | ThoughtSpot: 9.7.0.cl\n     */\n    Action[\"SageAnswerFeedback\"] = \"sageAnswerFeedback\";\n    /**\n     *\n     * @example\n     * ```js\n     * disabledActions: [Action.ModifySageAnswer]\n     * ```\n     * @version SDK: 1.26.0 | ThoughtSpot: 9.7.0.cl\n     */\n    Action[\"ModifySageAnswer\"] = \"modifySageAnswer\";\n    /**\n     * The **Move to Tab** menu action on visualizations in Liveboard edit mode.\n     * Allows moving a visualization to a different tab.\n     * @example\n     * ```js\n     * disabledActions: [Action.MoveToTab]\n     * ```\n     */\n    Action[\"MoveToTab\"] = \"onContainerMove\";\n    /**\n     * The **Manage Alerts** menu action on KPI visualizations.\n     * Allows creating, viewing, and editing monitor\n     * alerts for a KPI chart.\n     *\n     * @example\n     * ```js\n     * disabledActions: [Action.ManageMonitor]\n     * ```\n     */\n    Action[\"ManageMonitor\"] = \"manageMonitor\";\n    /**\n     * The Liveboard Personalised Views dropdown.\n     * Allows navigating to a personalized Liveboard View.\n     * This action is deprecated. Use {@link Action.PersonalizedViewsDropdown} instead.\n     *  @example\n     * ```js\n     * disabledActions: [Action.PersonalisedViewsDropdown]\n     * ```\n     *  @version SDK: 1.26.0 | ThoughtSpot: 9.7.0.cl, 10.1.0.sw\n     * @deprecated SDK: 1.48.0 | ThoughtSpot: 26.5.0.cl\n     */\n    Action[\"PersonalisedViewsDropdown\"] = \"personalisedViewsDropdown\";\n    /**\n     * The Liveboard Personalized Views dropdown.\n     * Allows navigating to a personalized Liveboard View.\n     *  @example\n     * ```js\n     * disabledActions: [Action.PersonalizedViewsDropdown]\n     * ```\n     * @version SDK: 1.48.0 | ThoughtSpot: 26.5.0.cl\n     */\n    Action[\"PersonalizedViewsDropdown\"] = \"personalisedViewsDropdown\";\n    /**\n     * Action ID for show or hide the user details on a\n     * Liveboard (Recently visited / social proof)\n     *  @example\n     * ```js\n     * disabledActions: [Action.LiveboardUsers]\n     * ```\n     *  @version SDK: 1.26.0 | ThoughtSpot: 9.7.0.cl, 10.1.0.sw\n     */\n    Action[\"LiveboardUsers\"] = \"liveboardUsers\";\n    /**\n     * Action ID for the Parent TML action\n     * The parent action **TML** must be included to access TML-related options\n     * within the cascading menu (specific to the Answer page)\n     * @example\n     * ```js\n     * // to include specific TML actions\n     * visibleActions: [Action.TML, Action.ExportTML, Action.EditTML]\n     *\n     * ```\n     * @example\n     * ```js\n     * hiddenAction: [Action.TML] // hide all TML actions\n     * disabledActions: [Action.TML] // to disable all TML actions\n     * ```\n     * @version SDK: 1.28.3 | ThoughtSpot: 9.12.0.cl, 10.1.0.sw\n     */\n    Action[\"TML\"] = \"tml\";\n    /**\n     * The **Create Liveboard* action on\n     * the Liveboards page and the Pin modal.\n     * Allows users to create a Liveboard.\n     *\n     * @example\n     * ```js\n     * hiddenAction: [Action.CreateLiveboard]\n     * disabledActions: [Action.CreateLiveboard]\n     * ```\n     * @version SDK: 1.32.0 | ThoughtSpot: 10.1.0.cl, 10.1.0.sw\n     */\n    Action[\"CreateLiveboard\"] = \"createLiveboard\";\n    /**\n     * Action ID for to hide or disable the\n     * Verified Liveboard banner.\n     *  @example\n     * ```js\n     * hiddenAction: [Action.VerifiedLiveboard]\n     * ```\n     *  @version SDK: 1.29.0 | ThoughtSpot: 9.10.0.cl, 10.1.0.sw\n     */\n    Action[\"VerifiedLiveboard\"] = \"verifiedLiveboard\";\n    /**\n     * Action ID for the *Ask Sage* In Natural Language Search embed,\n     * *Spotter* in Liveboard, full app, and Spotter embed.\n     *\n     * Allows initiating a conversation with ThoughtSpot AI analyst.\n     *\n     *  @example\n     * ```js\n     * hiddenAction: [Action.AskAi]\n     * ```\n     *  @version SDK: 1.29.0 | ThoughtSpot Cloud: 9.12.0.cl\n     */\n    Action[\"AskAi\"] = \"AskAi\";\n    /**\n     * The **Add KPI to Watchlist** action on Home page watchlist.\n     * Adds a KPI chart to the watchlist on the Home page.\n     * @example\n     * ```js\n     * disabledActions: [Action.AddToWatchlist]\n     * ```\n     * @version SDK: 1.27.9 | ThoughtSpot Cloud: 9.12.5.cl\n     */\n    Action[\"AddToWatchlist\"] = \"addToWatchlist\";\n    /**\n     * The **Remove from watchlist** menu action on KPI watchlist.\n     * Removes a KPI chart from the watchlist on the Home page.\n     * @example\n     * ```js\n     * disabledActions: [Action.RemoveFromWatchlist]\n     * ```\n     * @version SDK: 1.27.9 | ThoughtSpot: 9.12.5.cl\n     */\n    Action[\"RemoveFromWatchlist\"] = \"removeFromWatchlist\";\n    /**\n     * The **Organize Favourites** action on Homepage\n     * *Favorites* module.\n     * This action is deprecated. Use {@link Action.OrganizeFavorites} instead.\n     *\n     * @example\n     * ```js\n     * disabledActions: [Action.OrganiseFavourites]\n     * ```\n     * @version SDK: 1.32.0 | ThoughtSpot: 10.0.0.cl\n     * @deprecated SDK: 1.48.0 | ThoughtSpot: 26.5.0.cl\n     */\n    Action[\"OrganiseFavourites\"] = \"organiseFavourites\";\n    /**\n     * The **Organize Favorites** action on Homepage\n     * *Favorites* module.\n     *\n     * @example\n     * ```js\n     * disabledActions: [Action.OrganizeFavorites]\n     * ```\n     * @version SDK: 1.48.0 | ThoughtSpot: 26.5.0.cl\n     */\n    Action[\"OrganizeFavorites\"] = \"organiseFavourites\";\n    /**\n     * The **AI Highlights** action on a Liveboard.\n     *\n     *  @example\n     * ```js\n     * hiddenAction: [Action.AIHighlights]\n     * ```\n     *  @version SDK: 1.27.10 | ThoughtSpot Cloud: 9.12.5.cl\n     */\n    Action[\"AIHighlights\"] = \"AIHighlights\";\n    /**\n     * The *Edit* action on the *Liveboard Schedules* page\n     * (new Homepage experience).\n     * Allows editing Liveboard schedules.\n     *\n     * @example\n     * ```js\n     * disabledActions: [Action.EditScheduleHomepage]\n     * ```\n     *  @version SDK: 1.34.0 | ThoughtSpot Cloud: 10.3.0.cl\n     */\n    Action[\"EditScheduleHomepage\"] = \"editScheduleHomepage\";\n    /**\n     * The *Pause* action on the *Liveboard Schedules* page\n     * Pauses a scheduled Liveboard job.\n     * @example\n     * ```js\n     * disabledActions: [Action.PauseScheduleHomepage]\n     * ```\n     *  @version SDK: 1.34.0 | ThoughtSpot Cloud: 10.3.0.cl\n     */\n    Action[\"PauseScheduleHomepage\"] = \"pauseScheduleHomepage\";\n    /**\n     * The **View run history** action **Liveboard Schedules** page.\n     * Allows viewing schedule run history.\n     * @example\n     * ```js\n     * disabledActions: [Action.ViewScheduleRunHomepage]\n     * ```\n     *  @version SDK: 1.34.0 | ThoughtSpot: 10.3.0.cl\n     */\n    Action[\"ViewScheduleRunHomepage\"] = \"viewScheduleRunHomepage\";\n    /**\n     * Action ID to hide or disable the\n     * unsubscribe option for Liveboard schedules.\n     * @example\n     * ```js\n     * disabledActions: [Action.UnsubscribeScheduleHomepage]\n     * ```\n     *  @version SDK: 1.34.0 | ThoughtSpot: 10.3.0.cl\n     */\n    Action[\"UnsubscribeScheduleHomepage\"] = \"unsubscribeScheduleHomepage\";\n    /**\n     * The **Manage Tags** action on Homepage Favourite Module.\n     * @example\n     * ```js\n     * disabledActions: [Action.ManageTags]\n     * ```\n     * @version SDK: 1.34.0 | ThoughtSpot Cloud: 10.3.0.cl\n     */\n    Action[\"ManageTags\"] = \"manageTags\";\n    /**\n     * The **Delete** action on the **Liveboard Schedules* page.\n     * Deletes a Liveboard schedule.\n     * @example\n     * ```js\n     * disabledActions: [Action.DeleteScheduleHomepage]\n     * ```\n     *  @version SDK: 1.34.0 | ThoughtSpot: 10.3.0.cl\n     */\n    Action[\"DeleteScheduleHomepage\"] = \"deleteScheduleHomepage\";\n    /**\n     * The **Analyze CTA** action on KPI chart.\n     * @example\n     * ```js\n     * disabledActions: [Action.KPIAnalysisCTA]\n     * ```\n     *  @version SDK: 1.34.0 | ThoughtSpot Cloud: 10.3.0.cl\n     */\n    Action[\"KPIAnalysisCTA\"] = \"kpiAnalysisCTA\";\n    /**\n     * Action ID for disabling chip reorder in Answer and Liveboard\n     * @example\n     * ```js\n     * const disabledActions = [Action.DisableChipReorder]\n     * ```\n     * @version SDK: 1.36.0 | ThoughtSpot Cloud: 10.6.0.cl\n     */\n    Action[\"DisableChipReorder\"] = \"disableChipReorder\";\n    /**\n     * Action ID to show, hide, or disable filters\n     * in a Liveboard tab.\n     *\n     *  @example\n     * ```js\n     * hiddenAction: [Action.ChangeFilterVisibilityInTab]\n     * ```\n     *  @version SDK: 1.36.0 | ThoughtSpot Cloud: 10.6.0.cl\n     */\n    Action[\"ChangeFilterVisibilityInTab\"] = \"changeFilterVisibilityInTab\";\n    /**\n     * The **Data model instructions** button on the Spotter interface.\n     * Allows opening the data model instructions modal.\n     *\n     *  @example\n     * ```js\n     * hiddenAction: [Action.DataModelInstructions]\n     * ```\n     *  @version SDK: 1.46.0 | ThoughtSpot Cloud: 26.3.0.cl\n     */\n    Action[\"DataModelInstructions\"] = \"DataModelInstructions\";\n    /**\n     * The **Preview data** button on the Spotter interface.\n     * Allows previewing the data used for Spotter queries.\n     *\n     *  @example\n     * ```js\n     * hiddenAction: [Action.PreviewDataSpotter]\n     * ```\n     *  @version SDK: 1.36.0 | ThoughtSpot Cloud: 10.6.0.cl\n     */\n    Action[\"PreviewDataSpotter\"] = \"previewDataSpotter\";\n    /**\n     * The **Reset** link on the Spotter interface.\n     * Resets the conversation with Spotter.\n     *\n     *  @example\n     * ```js\n     * hiddenAction: [Action.ResetSpotterChat]\n     * ```\n     *  @version SDK: 1.36.0 | ThoughtSpot Cloud: 10.6.0.cl\n     */\n    Action[\"ResetSpotterChat\"] = \"resetSpotterChat\";\n    /**\n     * Action ID for hide or disable the\n     * Spotter feedback widget.\n     *\n     *  @example\n     * ```js\n     * hiddenAction: [Action.SpotterFeedback]\n     * ```\n     *  @version SDK: 1.36.0 | ThoughtSpot Cloud: 10.6.0.cl\n     */\n    Action[\"SpotterFeedback\"] = \"spotterFeedback\";\n    /**\n     * Action ID for hide or disable\n     * the previous prompt edit option in Spotter.\n     *\n     *  @example\n     * ```js\n     * hiddenAction: [Action.EditPreviousPrompt]\n     * ```\n     *  @version SDK: 1.36.0 | ThoughtSpot Cloud: 10.6.0.cl\n     */\n    Action[\"EditPreviousPrompt\"] = \"editPreviousPrompt\";\n    /**\n     * Action ID for hide or disable\n     * the previous prompt deletion option in Spotter.\n     *\n     *  @example\n     * ```js\n     * hiddenAction: [Action.DeletePreviousPrompt]\n     * ```\n     *  @version SDK: 1.36.0 | ThoughtSpot Cloud: 10.6.0.cl\n     */\n    Action[\"DeletePreviousPrompt\"] = \"deletePreviousPrompt\";\n    /**\n     * Action ID for hide or disable editing tokens generated from\n     * Spotter results.\n     *  @example\n     * ```js\n     * hiddenAction: [Action.EditTokens]\n     * ```\n     *  @version SDK: 1.36.0 | ThoughtSpot Cloud: 10.6.0.cl\n     */\n    Action[\"EditTokens\"] = \"editTokens\";\n    /**\n     * Action ID for hiding rename option for Column rename\n     *  @example\n     * ```js\n     * hiddenAction: [Action.ColumnRename]\n     * ```\n     *  @version SDK: 1.37.0 | ThoughtSpot Cloud: 10.8.0.cl\n     */\n    Action[\"ColumnRename\"] = \"columnRename\";\n    /**\n     * Action ID for hide checkboxes for include or exclude\n     * cover and filter pages in the Liveboard PDF\n     *  @example\n     * ```js\n     * hiddenAction: [Action.CoverAndFilterOptionInPDF]\n     * ```\n     *  @version SDK: 1.37.0 | ThoughtSpot Cloud: 10.8.0.cl\n     */\n    Action[\"CoverAndFilterOptionInPDF\"] = \"coverAndFilterOptionInPDF\";\n    /**\n     * Action ID to hide or disable the Coaching workflow in Spotter conversations.\n     * When disabled, users cannot access **Add to Coaching** workflow in conversation.\n     * The **Add to Coaching** feature allows adding reference questions and\n     * business terms to improve Spotter’s responses. This feature is generally available\n     * (GA) from version 26.2.0.cl and enabled by default on embed deployments.\n     *  @example\n     * ```js\n     * hiddenAction: [Action.InConversationTraining]\n     * disabledActions: [Action.InConversationTraining]\n     *\n     * ```\n     *  @version SDK: 1.39.0 | ThoughtSpot Cloud: 10.10.0.cl\n     */\n    Action[\"InConversationTraining\"] = \"InConversationTraining\";\n    /**\n     * Action ID to hide the warnings banner in\n     * Spotter results. It's an EA feature and\n     * handled by LD.\n     *  @example\n     * ```js\n     * hiddenAction: [Action.SpotterWarningsBanner]\n     * ```\n     *  @version SDK: 1.41.0 | ThoughtSpot Cloud: 10.13.0.cl\n     */\n    Action[\"SpotterWarningsBanner\"] = \"SpotterWarningsBanner\";\n    /**\n     * Action ID to hide the warnings border on the knowledge\n     * card in Spotter results. It's an EA feature and\n     * handled by LD.\n     *  @example\n     * ```js\n     * hiddenAction: [Action.SpotterWarningsOnTokens]\n     * ```\n     *  @version SDK: 1.41.0 | ThoughtSpot Cloud: 10.13.0.cl\n     */\n    Action[\"SpotterWarningsOnTokens\"] = \"SpotterWarningsOnTokens\";\n    /**\n     * Action ID to disable the click event handler on knowledge\n     * card in Spotter results. It's an EA feature and\n     * handled by LD.\n     *  @example\n     * ```js\n     * hiddenAction: [Action.SpotterTokenQuickEdit]\n     * ```\n     *  @version SDK: 1.41.0 | ThoughtSpot Cloud: 10.13.0.cl\n     */\n    Action[\"SpotterTokenQuickEdit\"] = \"SpotterTokenQuickEdit\";\n    /**\n     * The **PNG screenshot in email** option in the schedule email dialog.\n     * Includes a PNG screenshot in the notification email body.\n     * @example\n     * ```js\n     * disabledActions: [Action.PngScreenshotInEmail]\n     * ```\n     * ```\n     *  @version SDK: 1.42.0 | ThoughtSpot Cloud: 10.14.0.cl\n     */\n    Action[\"PngScreenshotInEmail\"] = \"pngScreenshotInEmail\";\n    /**\n     * The **Remove attachment** action in the schedule email dialog.\n     * Removes an attachment from the email configuration.\n     * @example\n     * ```js\n     * disabledActions: [Action.RemoveAttachment]\n     * ```\n     * ```\n     * ```\n     *  @version SDK: 1.42.0 | ThoughtSpot Cloud: 10.14.0.cl\n     */\n    Action[\"RemoveAttachment\"] = \"removeAttachment\";\n    /**\n     * The **Style panel** on a Liveboard.\n     * Controls the visibility of the Liveboard style panel.\n     * @example\n     * ```js\n     * hiddenActions: [Action.LiveboardStylePanel]\n     * ```\n     * @version SDK: 1.43.0 | ThoughtSpot Cloud: 10.15.0.cl\n     */\n    Action[\"LiveboardStylePanel\"] = \"liveboardStylePanel\";\n    /**\n     * The **Publish** action for Liveboards, Answers and Models.\n     * Opens the publishing modal. It's a parent action for the\n     * **Manage Publishing** and **Unpublish** actions if the object\n     * is already published, otherwise appears standalone.\n     * @example\n     * ```js\n     * hiddenActions: [Action.Publish]\n     * disabledActions: [Action.Publish]\n     * ```\n     * @version SDK: 1.45.0 | ThoughtSpot Cloud: 26.2.0.cl\n     */\n    Action[\"Publish\"] = \"publish\";\n    /**\n     * The **Manage Publishing** action for Liveboards, Answers and Models.\n     * Opens the same publishing modal as the **Publish** action.\n     * Appears as a child action to the **Publish** action if the\n     * object is already published.\n     * @example\n     * ```js\n     * hiddenActions: [Action.ManagePublishing]\n     * disabledActions: [Action.ManagePublishing]\n     * ```\n     * @version SDK: 1.45.0 | ThoughtSpot Cloud: 26.2.0.cl\n     */\n    Action[\"ManagePublishing\"] = \"managePublishing\";\n    /**\n     * The **Unpublish** action for Liveboards, Answers and Models.\n     * Opens the unpublishing modal. Appears as a child action to\n     * the **Publish** action if the object is already published.\n     * @example\n     * ```js\n     * hiddenActions: [Action.Unpublish]\n     * disabledActions: [Action.Unpublish]\n     * ```\n     * @version SDK: 1.45.0 | ThoughtSpot Cloud: 26.2.0.cl\n     */\n    Action[\"Unpublish\"] = \"unpublish\";\n    /**\n     * The **Parameterize** action for Tables and Connections.\n     * Opens the parameterization modal.\n     * @example\n     * ```js\n     * hiddenActions: [Action.Parameterize]\n     * disabledActions: [Action.Parameterize]\n     * ```\n     * @version SDK: 1.45.0 | ThoughtSpot Cloud: 26.2.0.cl\n     */\n    Action[\"Parameterize\"] = \"parameterise\";\n    /**\n     * The **Move to Group** menu action on a Liveboard.\n     * Allows moving a visualization to a different group.\n     * @example\n     * ```js\n     * disabledActions: [Action.MoveToGroup]\n     * ```\n     * @version SDK: 1.44.0 | ThoughtSpot Cloud: 26.2.0.cl\n     */\n    Action[\"MoveToGroup\"] = \"moveToGroup\";\n    /**\n     * The **Move out of Group** menu action on a Liveboard.\n     * Allows moving a visualization out of a group.\n     * @example\n     * ```js\n     * disabledActions: [Action.MoveOutOfGroup]\n     * ```\n     * @version SDK: 1.44.0 | ThoughtSpot Cloud: 26.2.0.cl\n     */\n    Action[\"MoveOutOfGroup\"] = \"moveOutOfGroup\";\n    /**\n     * The **Create Group** menu action on a Liveboard.\n     * Allows creating a new group.\n     * @example\n     * ```js\n     * disabledActions: [Action.CreateGroup]\n     * ```\n     * @version SDK: 1.44.0 | ThoughtSpot Cloud: 26.2.0.cl\n     */\n    Action[\"CreateGroup\"] = \"createGroup\";\n    /**\n     * The **Ungroup Liveboard Group** menu action on a Liveboard.\n     * Allows ungrouping a liveboard group.\n     * @example\n     * ```js\n     * disabledActions: [Action.UngroupLiveboardGroup]\n     * ```\n     * @version SDK: 1.44.0 | ThoughtSpot Cloud: 26.2.0.cl\n     */\n    Action[\"UngroupLiveboardGroup\"] = \"ungroupLiveboardGroup\";\n    /**\n     * Controls visibility of the sidebar header (title and toggle button)\n     * in the Spotter past conversations sidebar.\n     * @example\n     * ```js\n     * hiddenActions: [Action.SpotterSidebarHeader]\n     * ```\n     * @version SDK: 1.46.0 | ThoughtSpot Cloud: 26.3.0.cl\n     */\n    Action[\"SpotterSidebarHeader\"] = \"spotterSidebarHeader\";\n    /**\n     * Controls visibility of the sidebar footer (documentation link)\n     * in the Spotter past conversations sidebar.\n     * @example\n     * ```js\n     * hiddenActions: [Action.SpotterSidebarFooter]\n     * ```\n     * @version SDK: 1.46.0 | ThoughtSpot Cloud: 26.3.0.cl\n     */\n    Action[\"SpotterSidebarFooter\"] = \"spotterSidebarFooter\";\n    /**\n     * Controls visibility and disable state of the sidebar toggle/expand button\n     * in the Spotter past conversations sidebar.\n     * @example\n     * ```js\n     * disabledActions: [Action.SpotterSidebarToggle]\n     * ```\n     * @version SDK: 1.46.0 | ThoughtSpot Cloud: 26.3.0.cl\n     */\n    Action[\"SpotterSidebarToggle\"] = \"spotterSidebarToggle\";\n    /**\n     * Controls visibility and disable state of the \"New Chat\" button\n     * in the Spotter past conversations sidebar.\n     * @example\n     * ```js\n     * disabledActions: [Action.SpotterNewChat]\n     * ```\n     * @version SDK: 1.46.0 | ThoughtSpot Cloud: 26.3.0.cl\n     */\n    Action[\"SpotterNewChat\"] = \"spotterNewChat\";\n    /**\n     * Controls visibility of the past conversation banner alert\n     * in the Spotter interface.\n     * @example\n     * ```js\n     * hiddenActions: [Action.SpotterPastChatBanner]\n     * ```\n     * @version SDK: 1.46.0 | ThoughtSpot Cloud: 26.3.0.cl\n     */\n    Action[\"SpotterPastChatBanner\"] = \"spotterPastChatBanner\";\n    /**\n     * Controls visibility and disable state of the conversation edit menu\n     * (three-dot menu) in the Spotter past conversations sidebar.\n     * @example\n     * ```js\n     * disabledActions: [Action.SpotterChatMenu]\n     * ```\n     * @version SDK: 1.46.0 | ThoughtSpot Cloud: 26.3.0.cl\n     */\n    Action[\"SpotterChatMenu\"] = \"spotterChatMenu\";\n    /**\n     * Controls visibility and disable state of the rename action\n     * in the Spotter conversation edit menu.\n     * @example\n     * ```js\n     * disabledActions: [Action.SpotterChatRename]\n     * ```\n     * @version SDK: 1.46.0 | ThoughtSpot Cloud: 26.3.0.cl\n     */\n    Action[\"SpotterChatRename\"] = \"spotterChatRename\";\n    /**\n     * Controls visibility and disable state of the delete action\n     * in the Spotter conversation edit menu.\n     * @example\n     * ```js\n     * disabledActions: [Action.SpotterChatDelete]\n     * ```\n     * @version SDK: 1.46.0 | ThoughtSpot Cloud: 26.3.0.cl\n     */\n    Action[\"SpotterChatDelete\"] = \"spotterChatDelete\";\n    /**\n     * Controls visibility and disable state of the documentation/best practices\n     * link in the Spotter sidebar footer.\n     * @example\n     * ```js\n     * disabledActions: [Action.SpotterDocs]\n     * ```\n     * @version SDK: 1.46.0 | ThoughtSpot Cloud: 26.3.0.cl\n     */\n    Action[\"SpotterDocs\"] = \"spotterDocs\";\n    /**\n     * Controls visibility and disable state of the connector resources\n     * section in the Spotter chat interface.\n     * @example\n     * ```js\n     * hiddenActions: [Action.SpotterChatConnectorResources]\n     * disabledActions: [Action.SpotterChatConnectorResources]\n     * ```\n     * @version SDK: 1.48.0 | ThoughtSpot Cloud: 26.5.0.cl\n     */\n    Action[\"SpotterChatConnectorResources\"] = \"spotterChatConnectorResources\";\n    /**\n     * Controls visibility and disable state of the connectors\n     * in the Spotter chat interface.\n     * @example\n     * ```js\n     * hiddenActions: [Action.SpotterChatConnectors]\n     * disabledActions: [Action.SpotterChatConnectors]\n     * ```\n     * @version SDK: 1.48.0 | ThoughtSpot Cloud: 26.5.0.cl\n     */\n    Action[\"SpotterChatConnectors\"] = \"spotterChatConnectors\";\n    /**\n     * Controls visibility and disable state of the mode switcher\n     * in the Spotter chat interface.\n     * @example\n     * ```js\n     * hiddenActions: [Action.SpotterChatModeSwitcher]\n     * disabledActions: [Action.SpotterChatModeSwitcher]\n     * ```\n     * @version SDK: 1.48.0 | ThoughtSpot Cloud: 26.5.0.cl\n     */\n    Action[\"SpotterChatModeSwitcher\"] = \"spotterChatModeSwitcher\";\n    /**\n     * The **Include current period** checkbox for date filters.\n     * Controls the visibility and availability of the option to include\n     * the current time period in filter results.\n     * @example\n     * ```js\n     * hiddenActions: [Action.IncludeCurrentPeriod]\n     * disabledActions: [Action.IncludeCurrentPeriod]\n     * ```\n     * @version SDK: 1.45.0 | ThoughtSpot: 26.4.0.cl\n     */\n    Action[\"IncludeCurrentPeriod\"] = \"includeCurrentPeriod\";\n    /**\n     * The **Send Test Email** button in the Liveboard schedule modal.\n     * Allows sending a test schedule email to self or all recipients.\n     * Requires `isSendNowLiveboardSchedulingEnabled` to be enabled.\n     * @example\n     * ```js\n     * disabledActions: [Action.SendTestScheduleEmail]\n     * hiddenActions: [Action.SendTestScheduleEmail]\n     * ```\n     * @version SDK: 1.48.0 | ThoughtSpot Cloud: 26.5.0.cl\n     */\n    Action[\"SendTestScheduleEmail\"] = \"sendTestScheduleEmail\";\n    /**\n     * The thumbs up/down feedback buttons in the SpotterViz panel.\n     * Visible by default.\n     * @version SDK: 1.50.0 | ThoughtSpot Cloud: 26.7.0.cl\n     * @example\n     * ```js\n     * hiddenActions: [Action.SpotterVizFeedback]\n     * disabledActions: [Action.SpotterVizFeedback]\n     * ```\n     */\n    Action[\"SpotterVizFeedback\"] = \"spotterVizFeedback\";\n    /**\n     * The version restore button on checkpoint cards in the SpotterViz panel.\n     * Visible by default.\n     * @version SDK: 1.50.0 | ThoughtSpot Cloud: 26.7.0.cl\n     * @example\n     * ```js\n     * hiddenActions: [Action.SpotterVizCheckpointRestore]\n     * disabledActions: [Action.SpotterVizCheckpointRestore]\n     * ```\n     */\n    Action[\"SpotterVizCheckpointRestore\"] = \"spotterVizCheckpointRestore\";\n    /**\n     * The **SpotterViz** button in the top edit header.\n     * Visible by default.\n     * @version SDK: 1.50.0 | ThoughtSpot Cloud: 26.7.0.cl\n     * @example\n     * ```js\n     * hiddenActions: [Action.SpotterViz]\n     * disabledActions: [Action.SpotterViz]\n     * ```\n     */\n    Action[\"SpotterViz\"] = \"spotterViz\";\n    /**\n     * Clears browser cache and fetches new data for liveboard ChartViz Containers.\n     * Requires `enableLiveboardDataCache` to be enabled.\n     * @example\n     * ```js\n     * disabledActions: [Action.RefreshLiveboardBrowserCache]\n     * hiddenActions: [Action.RefreshLiveboardBrowserCache]\n     * ```\n     * @version SDK: 1.49.0 | ThoughtSpot Cloud: 26.6.0.cl\n     */\n    Action[\"RefreshLiveboardBrowserCache\"] = \"refreshLiveboardBrowserCache\";\n})(Action || (Action = {}));\nexport var PrefetchFeatures;\n(function (PrefetchFeatures) {\n    PrefetchFeatures[\"FullApp\"] = \"FullApp\";\n    PrefetchFeatures[\"SearchEmbed\"] = \"SearchEmbed\";\n    PrefetchFeatures[\"LiveboardEmbed\"] = \"LiveboardEmbed\";\n    PrefetchFeatures[\"VizEmbed\"] = \"VizEmbed\";\n})(PrefetchFeatures || (PrefetchFeatures = {}));\n/**\n * Enum for options to change context trigger.\n * The `BOTH_CLICKS` option is available from 10.8.0.cl.\n */\nexport var ContextMenuTriggerOptions;\n(function (ContextMenuTriggerOptions) {\n    ContextMenuTriggerOptions[\"LEFT_CLICK\"] = \"left-click\";\n    ContextMenuTriggerOptions[\"RIGHT_CLICK\"] = \"right-click\";\n    ContextMenuTriggerOptions[\"BOTH_CLICKS\"] = \"both-clicks\";\n})(ContextMenuTriggerOptions || (ContextMenuTriggerOptions = {}));\n/**\n * Enum options to show custom actions at different\n * positions in the application.\n */\nexport var CustomActionsPosition;\n(function (CustomActionsPosition) {\n    /**\n     * Shows the action as a primary button\n     * in the toolbar area of the embed.\n     */\n    CustomActionsPosition[\"PRIMARY\"] = \"PRIMARY\";\n    /**\n     * Shows the action inside the \"More\" menu\n     * (three-dot overflow menu).\n     */\n    CustomActionsPosition[\"MENU\"] = \"MENU\";\n    /**\n     * Shows the action in the right-click\n     * context menu. Only supported for\n     * {@link CustomActionTarget.VIZ},\n     * {@link CustomActionTarget.ANSWER}, and\n     * {@link CustomActionTarget.SPOTTER} targets.\n     */\n    CustomActionsPosition[\"CONTEXTMENU\"] = \"CONTEXTMENU\";\n})(CustomActionsPosition || (CustomActionsPosition = {}));\n/**\n * Enum options to mention the target of the code-based custom action.\n * The target determines which type of ThoughtSpot object the action is\n * associated with, and also controls which positions and scoping options\n * are available.\n */\nexport var CustomActionTarget;\n(function (CustomActionTarget) {\n    /**\n     * Action applies at the Liveboard level.\n     * Supported positions:\n     * {@link CustomActionsPosition.PRIMARY},\n     * {@link CustomActionsPosition.MENU}.\n     * Can be scoped with\n     * `metadataIds.liveboardIds`,\n     * `orgIds`, and `groupIds`.\n     */\n    CustomActionTarget[\"LIVEBOARD\"] = \"LIVEBOARD\";\n    /**\n     * Action applies to individual\n     * visualizations (charts/tables).\n     * Supported positions:\n     * {@link CustomActionsPosition.PRIMARY},\n     * {@link CustomActionsPosition.MENU},\n     * {@link CustomActionsPosition.CONTEXTMENU}.\n     * Can be scoped with `metadataIds`\n     * (answerIds, liveboardIds, vizIds),\n     * `dataModelIds` (modelIds,\n     * modelColumnNames), `orgIds`,\n     * and `groupIds`.\n     */\n    CustomActionTarget[\"VIZ\"] = \"VIZ\";\n    /**\n     * Action applies to saved or unsaved\n     * Answers. Supported positions:\n     * {@link CustomActionsPosition.PRIMARY},\n     * {@link CustomActionsPosition.MENU},\n     * {@link CustomActionsPosition.CONTEXTMENU}.\n     * Can be scoped with\n     * `metadataIds.answerIds`,\n     * `dataModelIds` (modelIds,\n     * modelColumnNames), `orgIds`,\n     * and `groupIds`.\n     */\n    CustomActionTarget[\"ANSWER\"] = \"ANSWER\";\n    /**\n     * Action applies to Spotter\n     * (AI-powered search).\n     * Supported positions:\n     * {@link CustomActionsPosition.MENU},\n     * {@link CustomActionsPosition.CONTEXTMENU}.\n     * Can be scoped with\n     * `dataModelIds.modelIds`,\n     * `orgIds`, and `groupIds`.\n     */\n    CustomActionTarget[\"SPOTTER\"] = \"SPOTTER\";\n})(CustomActionTarget || (CustomActionTarget = {}));\n/**\n * Enum options to show or suppress Visual Embed SDK and\n * ThoughtSpot application logs in the console output.\n * This attribute doesn't support suppressing\n * browser warnings or errors.\n */\nexport var LogLevel;\n(function (LogLevel) {\n    /**\n     * No application or SDK-related logs will be logged\n     * in the console output.\n     * @example\n     * ```js\n     * init({\n     *   ... //other embed view config,\n     *  logLevel: LogLevel.SILENT,\n     * })\n     * ```\n     * @version SDK: 1.26.7 | ThoughtSpot Cloud: 9.10.0.cl\n     */\n    LogLevel[\"SILENT\"] = \"SILENT\";\n    /**\n     * Log only errors in the console output.\n     * @example\n     * ```js\n     * init({\n     *   ... //other embed view config,\n     *  logLevel: LogLevel.ERROR,\n     * })\n     * ```\n     * @version SDK: 1.26.7 | ThoughtSpot Cloud: 9.10.0.cl\n     */\n    LogLevel[\"ERROR\"] = \"ERROR\";\n    /**\n     * Log only warnings and errors in the console output.\n     * @example\n     * ```js\n     * init({\n     *   ... //other embed view config,\n     *  logLevel: LogLevel.WARN,\n     * })\n     * ```\n     * @version SDK: 1.26.7 | ThoughtSpot Cloud: 9.10.0.cl\n     */\n    LogLevel[\"WARN\"] = \"WARN\";\n    /**\n     * Log only the information alerts, warnings, and errors\n     * in the console output.\n     * @example\n     * ```js\n     * init({\n     *   ... //other embed view config,\n     *  logLevel: LogLevel.INFO,\n     * })\n     * ```\n     * @version SDK: 1.26.7 | ThoughtSpot Cloud: 9.10.0.cl\n     */\n    LogLevel[\"INFO\"] = \"INFO\";\n    /**\n     * Log debug messages, warnings, information alerts,\n     * and errors in the console output.\n     * @example\n     * ```js\n     * init({\n     *   ... //other embed view config,\n     *  logLevel: LogLevel.DEBUG,\n     * })\n     * ```\n     * @version SDK: 1.26.7 | ThoughtSpot Cloud: 9.10.0.cl\n     */\n    LogLevel[\"DEBUG\"] = \"DEBUG\";\n    /**\n     * All logs will be logged in the browser console.\n     * @example\n     * ```js\n     * init({\n     *   ... //other embed view config,\n     *  logLevel: LogLevel.TRACE,\n     * })\n     * ```\n     * @version SDK: 1.26.7 | ThoughtSpot Cloud: 9.10.0.cl\n     */\n    LogLevel[\"TRACE\"] = \"TRACE\";\n})(LogLevel || (LogLevel = {}));\n/**\n * Error types emitted by embedded components.\n *\n * These enum values categorize different types of errors that can occur during\n * the lifecycle of an embedded ThoughtSpot component.\n * Use {@link EmbedErrorDetailsEvent} and {@link EmbedErrorCodes} to handle specific errors.\n * @version SDK: 1.44.2 | ThoughtSpot: 26.2.0.cl\n * @group Error Handling\n *\n * @example\n * Handle specific error types\n * ```js\n * embed.on(EmbedEvent.Error, (error) => {\n *   switch (error.errorType) {\n *     case ErrorDetailsTypes.API:\n *       console.error('API error:', error.message);\n *       break;\n *     case ErrorDetailsTypes.VALIDATION_ERROR:\n *       console.error('Validation error:', error.message);\n *       break;\n *     case ErrorDetailsTypes.NETWORK:\n *       console.error('Network error:', error.message);\n *       break;\n *     default:\n *       console.error('Unknown error:', error);\n *   }\n * });\n * ```\n */\nexport var ErrorDetailsTypes;\n(function (ErrorDetailsTypes) {\n    /** API call failure */\n    ErrorDetailsTypes[\"API\"] = \"API\";\n    /** General validation error */\n    ErrorDetailsTypes[\"VALIDATION_ERROR\"] = \"VALIDATION_ERROR\";\n    /** Network connectivity or request error */\n    ErrorDetailsTypes[\"NETWORK\"] = \"NETWORK\";\n})(ErrorDetailsTypes || (ErrorDetailsTypes = {}));\n/**\n * Error codes for identifying specific issues in embedded ThoughtSpot components. Use\n * {@link EmbedErrorDetailsEvent}  and  {@link ErrorDetailsTypes} codes for precise error\n * handling and debugging.\n *\n * @version SDK: 1.44.2 | ThoughtSpot: 26.2.0.cl\n * @group Error Handling\n\n * @example\n * Handle specific error codes in the error event handler\n * ```js\n * embed.on(EmbedEvent.Error, (error) => {\n *   switch (error.code) {\n *     case EmbedErrorCodes.WORKSHEET_ID_NOT_FOUND:\n *       console.error('Worksheet ID not found:', error.message);\n *       break;\n *     case EmbedErrorCodes.LIVEBOARD_ID_MISSING:\n *       console.error('Liveboard ID is missing:', error.message);\n *       break;\n *     case EmbedErrorCodes.CONFLICTING_ACTIONS_CONFIG:\n *       console.error('Conflicting actions configuration:', error.message);\n *       break;\n *     case EmbedErrorCodes.CONFLICTING_TABS_CONFIG:\n *       console.error('Conflicting tabs configuration:', error.message);\n *       break;\n *     default:\n *       console.error('Unknown error:', error);\n *   }\n * });\n * ```\n * */\nexport var EmbedErrorCodes;\n(function (EmbedErrorCodes) {\n    /** Worksheet ID not found or does not exist */\n    EmbedErrorCodes[\"WORKSHEET_ID_NOT_FOUND\"] = \"WORKSHEET_ID_NOT_FOUND\";\n    /** Required Liveboard ID is missing from configuration */\n    EmbedErrorCodes[\"LIVEBOARD_ID_MISSING\"] = \"LIVEBOARD_ID_MISSING\";\n    /** Conflicting action configuration detected */\n    EmbedErrorCodes[\"CONFLICTING_ACTIONS_CONFIG\"] = \"CONFLICTING_ACTIONS_CONFIG\";\n    /** Conflicting tab configuration detected  */\n    EmbedErrorCodes[\"CONFLICTING_TABS_CONFIG\"] = \"CONFLICTING_TABS_CONFIG\";\n    /** Error during component initialization */\n    EmbedErrorCodes[\"INIT_ERROR\"] = \"INIT_ERROR\";\n    /** Network connectivity or request error */\n    EmbedErrorCodes[\"NETWORK_ERROR\"] = \"NETWORK_ERROR\";\n    /** Custom action validation failed */\n    EmbedErrorCodes[\"CUSTOM_ACTION_VALIDATION\"] = \"CUSTOM_ACTION_VALIDATION\";\n    /** Authentication/login failed */\n    EmbedErrorCodes[\"LOGIN_FAILED\"] = \"LOGIN_FAILED\";\n    /** Render method was not called before attempting to use the component */\n    EmbedErrorCodes[\"RENDER_NOT_CALLED\"] = \"RENDER_NOT_CALLED\";\n    /** Host event type is undefined or invalid */\n    EmbedErrorCodes[\"HOST_EVENT_TYPE_UNDEFINED\"] = \"HOST_EVENT_TYPE_UNDEFINED\";\n    /** Error parsing api intercept body */\n    EmbedErrorCodes[\"PARSING_API_INTERCEPT_BODY_ERROR\"] = \"PARSING_API_INTERCEPT_BODY_ERROR\";\n    /** Failed to update embed parameters during pre-render */\n    EmbedErrorCodes[\"UPDATE_PARAMS_FAILED\"] = \"UPDATE_PARAMS_FAILED\";\n    /** Invalid URL provided in configuration */\n    EmbedErrorCodes[\"INVALID_URL\"] = \"INVALID_URL\";\n    /** Host event payload validation failed */\n    EmbedErrorCodes[\"HOST_EVENT_VALIDATION\"] = \"HOST_EVENT_VALIDATION\";\n    /** UpdateFilters payload is invalid - missing or malformed filter/filters */\n    EmbedErrorCodes[\"UPDATEFILTERS_INVALID_PAYLOAD\"] = \"UPDATEFILTERS_INVALID_PAYLOAD\";\n    /** DrillDown payload is invalid - missing or malformed points */\n    EmbedErrorCodes[\"DRILLDOWN_INVALID_PAYLOAD\"] = \"DRILLDOWN_INVALID_PAYLOAD\";\n})(EmbedErrorCodes || (EmbedErrorCodes = {}));\n/**\n * Context types for specifying the page context when triggering host events.\n * Used as the third parameter in the `trigger` method to help ThoughtSpot\n * understand the current page context for better event handling.\n *\n * @example\n * ```js\n * import { HostEvent, ContextType } from '@thoughtspot/visual-embed-sdk';\n *\n * // Trigger an event with specific context\n * embed.trigger(HostEvent.Pin, { vizId: \"123\", liveboardId: \"456\" }, ContextType.Search);\n * ```\n *\n * @version SDK: 1.45.2 | ThoughtSpot: 26.3.0.cl\n * @group Events\n */\nexport var ContextType;\n(function (ContextType) {\n    /**\n     * Search answer context for search page or edit viz dialog on liveboard page.\n     */\n    ContextType[\"Search\"] = \"search-answer\";\n    /**\n     * Liveboard context for liveboard page.\n     */\n    ContextType[\"Liveboard\"] = \"liveboard\";\n    /**\n     * Answer context for explore modal/page on liveboard page.\n     */\n    ContextType[\"Answer\"] = \"answer\";\n    /**\n     * Spotter context for spotter modal/page.\n     */\n    ContextType[\"Spotter\"] = \"spotter\";\n    /**\n     * Other context for any other generic page.\n     */\n    ContextType[\"Other\"] = \"other\";\n})(ContextType || (ContextType = {}));\n/**\n * Enum for the type of API intercepted\n */\nexport var InterceptedApiType;\n(function (InterceptedApiType) {\n    /**\n     * The apis that are use to get the data for the embed\n     */\n    InterceptedApiType[\"AnswerData\"] = \"AnswerData\";\n    /**\n     * This will intercept all the apis\n     */\n    InterceptedApiType[\"ALL\"] = \"ALL\";\n    /**\n     * The apis that are use to get the data for the liveboard\n     */\n    InterceptedApiType[\"LiveboardData\"] = \"LiveboardData\";\n})(InterceptedApiType || (InterceptedApiType = {}));\n/**\n * Data label filter operators\n * @group Visual Overrides\n */\nexport var DataLabelFilterOperator;\n(function (DataLabelFilterOperator) {\n    /** Greater than */\n    DataLabelFilterOperator[\"GreaterThan\"] = \"GREATER_THAN\";\n    /** Less than */\n    DataLabelFilterOperator[\"LessThan\"] = \"LESS_THAN\";\n    /** Greater than or equal to */\n    DataLabelFilterOperator[\"GreaterThanOrEqualTo\"] = \"GREATER_THAN_OR_EQUAL_TO\";\n    /** Less than or equal to */\n    DataLabelFilterOperator[\"LessThanOrEqualTo\"] = \"LESS_THAN_OR_EQUAL_TO\";\n    /** Equal to */\n    DataLabelFilterOperator[\"EqualTo\"] = \"EQUAL_TO\";\n    /** Not equal to */\n    DataLabelFilterOperator[\"NotEqualTo\"] = \"NOT_EQUAL_TO\";\n})(DataLabelFilterOperator || (DataLabelFilterOperator = {}));\n/**\n * Conditional formatting operators\n * @group Visual Overrides\n */\nexport var ConditionalFormattingOperator;\n(function (ConditionalFormattingOperator) {\n    /** Is equal to */\n    ConditionalFormattingOperator[\"Is\"] = \"IS\";\n    /** Is not equal to */\n    ConditionalFormattingOperator[\"IsNot\"] = \"IS_NOT\";\n    /** Contains */\n    ConditionalFormattingOperator[\"Contains\"] = \"CONTAINS\";\n    /** Does not contain */\n    ConditionalFormattingOperator[\"DoesNotContain\"] = \"DOES_NOT_CONTAIN\";\n    /** Starts with */\n    ConditionalFormattingOperator[\"StartsWith\"] = \"STARTS_WITH\";\n    /** Ends with */\n    ConditionalFormattingOperator[\"EndsWith\"] = \"ENDS_WITH\";\n    /** Greater than */\n    ConditionalFormattingOperator[\"GreaterThan\"] = \"GREATER_THAN\";\n    /** Less than */\n    ConditionalFormattingOperator[\"LessThan\"] = \"LESS_THAN\";\n    /** Greater than or equal to */\n    ConditionalFormattingOperator[\"GreaterThanEqualTo\"] = \"GREATER_THAN_EQUAL_TO\";\n    /** Less than or equal to */\n    ConditionalFormattingOperator[\"LessThanEqualTo\"] = \"LESS_THAN_EQUAL_TO\";\n    /** Equal to */\n    ConditionalFormattingOperator[\"EqualTo\"] = \"EQUAL_TO\";\n    /** Not equal to */\n    ConditionalFormattingOperator[\"NotEqualTo\"] = \"NOT_EQUAL_TO\";\n    /** Is between */\n    ConditionalFormattingOperator[\"IsBetween\"] = \"IS_BETWEEN\";\n    /** Is null */\n    ConditionalFormattingOperator[\"IsNull\"] = \"IS_NULL\";\n    /** Is not null */\n    ConditionalFormattingOperator[\"IsNotNull\"] = \"IS_NOT_NULL\";\n})(ConditionalFormattingOperator || (ConditionalFormattingOperator = {}));\n/**\n * Background format types for conditional formatting\n * @group Visual Overrides\n */\nexport var BackgroundFormatType;\n(function (BackgroundFormatType) {\n    /** Solid color background */\n    BackgroundFormatType[\"Solid\"] = \"SOLID\";\n    /** Gradient background */\n    BackgroundFormatType[\"Gradient\"] = \"GRADIENT\";\n})(BackgroundFormatType || (BackgroundFormatType = {}));\n/**\n * Comparison types for conditional formatting\n * @group Visual Overrides\n */\nexport var ConditionalFormattingComparisonType;\n(function (ConditionalFormattingComparisonType) {\n    /** Value-based comparison */\n    ConditionalFormattingComparisonType[\"ValueBased\"] = \"VALUE_BASED\";\n    /** Column-based comparison */\n    ConditionalFormattingComparisonType[\"ColumnBased\"] = \"COLUMN_BASED\";\n    /** Parameter-based comparison */\n    ConditionalFormattingComparisonType[\"ParameterBased\"] = \"PARAMETER_BASED\";\n})(ConditionalFormattingComparisonType || (ConditionalFormattingComparisonType = {}));\n/**\n * Legend position options\n * @group Visual Overrides\n */\nexport var LegendPosition;\n(function (LegendPosition) {\n    /** Position legend at the top */\n    LegendPosition[\"Top\"] = \"top\";\n    /** Position legend at the bottom */\n    LegendPosition[\"Bottom\"] = \"bottom\";\n    /** Position legend on the left */\n    LegendPosition[\"Left\"] = \"left\";\n    /** Position legend on the right */\n    LegendPosition[\"Right\"] = \"right\";\n})(LegendPosition || (LegendPosition = {}));\n/**\n * Table theme options\n * @group Visual Overrides\n */\nexport var TableTheme;\n(function (TableTheme) {\n    /** Outline theme */\n    TableTheme[\"Outline\"] = \"OUTLINE\";\n    /** Row theme */\n    TableTheme[\"Row\"] = \"ROW\";\n    /** Zebra theme */\n    TableTheme[\"Zebra\"] = \"ZEBRA\";\n})(TableTheme || (TableTheme = {}));\n/**\n * Table content density options\n * @group Visual Overrides\n */\nexport var TableContentDensity;\n(function (TableContentDensity) {\n    /** Regular density */\n    TableContentDensity[\"Regular\"] = \"REGULAR\";\n    /** Compact density */\n    TableContentDensity[\"Compact\"] = \"COMPACT\";\n})(TableContentDensity || (TableContentDensity = {}));\n//# sourceMappingURL=types.js.map","// istanbul ignore next\nconst isObject = (obj) => {\n    if (typeof obj === \"object\" && obj !== null) {\n        if (typeof Object.getPrototypeOf === \"function\") {\n            const prototype = Object.getPrototypeOf(obj);\n            return prototype === Object.prototype || prototype === null;\n        }\n        return Object.prototype.toString.call(obj) === \"[object Object]\";\n    }\n    return false;\n};\nconst merge = (...objects) => objects.reduce((result, current) => {\n    if (Array.isArray(current)) {\n        throw new TypeError(\"Arguments provided to ts-deepmerge must be objects, not arrays.\");\n    }\n    Object.keys(current).forEach((key) => {\n        if ([\"__proto__\", \"constructor\", \"prototype\"].includes(key)) {\n            return;\n        }\n        if (Array.isArray(result[key]) && Array.isArray(current[key])) {\n            result[key] = merge.options.mergeArrays\n                ? Array.from(new Set(result[key].concat(current[key])))\n                : current[key];\n        }\n        else if (isObject(result[key]) && isObject(current[key])) {\n            result[key] = merge(result[key], current[key]);\n        }\n        else {\n            result[key] = current[key];\n        }\n    });\n    return result;\n}, {});\nconst defaultOptions = {\n    mergeArrays: true,\n};\nmerge.options = defaultOptions;\nmerge.withOptions = (options, ...objects) => {\n    merge.options = Object.assign({ mergeArrays: true }, options);\n    const result = merge(...objects);\n    merge.options = defaultOptions;\n    return result;\n};\nexport default merge;\n","/**\n * Copyright (c) 2023\n *\n * Common utility functions for ThoughtSpot Visual Embed SDK\n * @summary Utils\n * @author Ayon Ghosh <ayon.ghosh@thoughtspot.com>\n */\nimport merge from 'ts-deepmerge';\nimport { logger } from './utils/logger';\nimport { ERROR_MESSAGE } from './errors';\n/**\n * Construct a runtime filters query string from the given filters.\n * Refer to the following docs for more details on runtime filter syntax:\n * https://cloud-docs.thoughtspot.com/admin/ts-cloud/apply-runtime-filter.html\n * https://cloud-docs.thoughtspot.com/admin/ts-cloud/runtime-filter-operators.html\n * @param runtimeFilters\n */\nexport const getFilterQuery = (runtimeFilters) => {\n    if (runtimeFilters && runtimeFilters.length) {\n        const filters = runtimeFilters.map((filter, valueIndex) => {\n            const index = valueIndex + 1;\n            const filterExpr = [];\n            filterExpr.push(`col${index}=${encodeURIComponent(filter.columnName)}`);\n            filterExpr.push(`op${index}=${filter.operator}`);\n            filterExpr.push(filter.values.map((value) => {\n                const encodedValue = typeof value === 'bigint' ? value.toString() : value;\n                return `val${index}=${encodeURIComponent(String(encodedValue))}`;\n            }).join('&'));\n            return filterExpr.join('&');\n        });\n        return `${filters.join('&')}`;\n    }\n    return null;\n};\n/**\n * Construct a runtime parameter override query string from the given option.\n * @param runtimeParameters\n */\nexport const getRuntimeParameters = (runtimeParameters) => {\n    if (runtimeParameters && runtimeParameters.length) {\n        const params = runtimeParameters.map((param, valueIndex) => {\n            const index = valueIndex + 1;\n            const filterExpr = [];\n            filterExpr.push(`param${index}=${encodeURIComponent(param.name)}`);\n            filterExpr.push(`paramVal${index}=${encodeURIComponent(param.value)}`);\n            return filterExpr.join('&');\n        });\n        return `${params.join('&')}`;\n    }\n    return null;\n};\n/**\n * Convert a value to a string representation to be sent as a query\n * parameter to the ThoughtSpot app.\n * @param value Any parameter value\n */\nconst serializeParam = (value) => {\n    // do not serialize primitive types\n    if (typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean') {\n        return value;\n    }\n    return JSON.stringify(value);\n};\n/**\n * Convert a value to a string:\n * in case of an array, we convert it to CSV.\n * in case of any other type, we directly return the value.\n * @param value\n */\nconst paramToString = (value) => (Array.isArray(value) ? value.join(',') : value);\n/**\n * Return a query param string composed from the given params object\n * @param queryParams\n * @param shouldSerializeParamValues\n */\nexport const getQueryParamString = (queryParams, shouldSerializeParamValues = false) => {\n    const qp = [];\n    const params = Object.keys(queryParams);\n    params.forEach((key) => {\n        const val = queryParams[key];\n        if (val !== undefined) {\n            const serializedValue = shouldSerializeParamValues\n                ? serializeParam(val)\n                : paramToString(val);\n            qp.push(`${key}=${serializedValue}`);\n        }\n    });\n    if (qp.length) {\n        return qp.join('&');\n    }\n    return null;\n};\n/**\n * Get a string representation of a dimension value in CSS\n * If numeric, it is considered in pixels.\n * @param value\n */\nexport const getCssDimension = (value) => {\n    if (typeof value === 'number') {\n        return `${value}px`;\n    }\n    return value;\n};\n/**\n * Validates if a string is a valid CSS margin value.\n * @param value - The string to validate\n * @returns true if the value is a valid CSS margin value, false otherwise\n */\nexport const isValidCssMargin = (value) => {\n    if (isUndefined(value)) {\n        return false;\n    }\n    if (typeof value !== 'string') {\n        logger.error('Please provide a valid lazyLoadingMargin value (e.g., \"10px\")');\n        return false;\n    }\n    // This pattern allows for an optional negative sign, and numbers\n    // that can be integers or decimals (including leading dot).\n    const cssUnitPattern = /^-?(\\d+(\\.\\d*)?|\\.\\d+)(px|em|rem|%|vh|vw)$/i;\n    const parts = value.trim().split(/\\s+/);\n    if (parts.length > 4) {\n        logger.error('Please provide a valid lazyLoadingMargin value (e.g., \"10px\")');\n        return false;\n    }\n    const isValid = parts.every(part => {\n        const trimmedPart = part.trim();\n        return trimmedPart.toLowerCase() === 'auto' || trimmedPart === '0' || cssUnitPattern.test(trimmedPart);\n    });\n    if (!isValid) {\n        logger.error('Please provide a valid lazyLoadingMargin value (e.g., \"10px\")');\n        return false;\n    }\n    return true;\n};\nexport const getSSOMarker = (markerId) => {\n    const encStringToAppend = encodeURIComponent(markerId);\n    return `tsSSOMarker=${encStringToAppend}`;\n};\n/**\n * Append a string to a URL's hash fragment\n * @param url A URL\n * @param stringToAppend The string to append to the URL hash\n */\nexport const appendToUrlHash = (url, stringToAppend) => {\n    let outputUrl = url;\n    const encStringToAppend = encodeURIComponent(stringToAppend);\n    const marker = `tsSSOMarker=${encStringToAppend}`;\n    let splitAdder = '';\n    if (url.indexOf('#') >= 0) {\n        // If second half of hash contains a '?' already add a '&' instead of\n        // '?' which appends to query params.\n        splitAdder = url.split('#')[1].indexOf('?') >= 0 ? '&' : '?';\n    }\n    else {\n        splitAdder = '#?';\n    }\n    outputUrl = `${outputUrl}${splitAdder}${marker}`;\n    return outputUrl;\n};\n/**\n *\n * @param url\n * @param stringToAppend\n * @param path\n */\nexport function getRedirectUrl(url, stringToAppend, path = '') {\n    const targetUrl = path ? new URL(path, window.location.origin).href : url;\n    return appendToUrlHash(targetUrl, stringToAppend);\n}\nexport const getEncodedQueryParamsString = (queryString) => {\n    if (!queryString) {\n        return queryString;\n    }\n    return btoa(queryString).replace(/\\+/g, '-').replace(/\\//g, '_').replace(/=+$/, '');\n};\nexport const getOffsetTop = (element) => {\n    const rect = element.getBoundingClientRect();\n    return rect.top + window.scrollY;\n};\nexport const embedEventStatus = {\n    START: 'start',\n    END: 'end',\n};\nexport const setAttributes = (element, attributes) => {\n    Object.keys(attributes).forEach((key) => {\n        element.setAttribute(key, attributes[key].toString());\n    });\n};\nconst isCloudRelease = (version) => version.endsWith('.cl');\n/* For Search Embed: ReleaseVersionInBeta */\nexport const checkReleaseVersionInBeta = (releaseVersion, suppressBetaWarning) => {\n    if (releaseVersion !== '' && !isCloudRelease(releaseVersion)) {\n        const splittedReleaseVersion = releaseVersion.split('.');\n        const majorVersion = Number(splittedReleaseVersion[0]);\n        const isBetaVersion = majorVersion < 8;\n        return !suppressBetaWarning && isBetaVersion;\n    }\n    return false;\n};\nexport const getCustomisations = (embedConfig, viewConfig) => {\n    var _a, _b, _c, _d;\n    const customizationsFromViewConfig = viewConfig.customizations;\n    const customizationsFromEmbedConfig = embedConfig.customizations\n        || embedConfig.customisations;\n    const customizations = {\n        style: {\n            ...customizationsFromEmbedConfig === null || customizationsFromEmbedConfig === void 0 ? void 0 : customizationsFromEmbedConfig.style,\n            ...customizationsFromViewConfig === null || customizationsFromViewConfig === void 0 ? void 0 : customizationsFromViewConfig.style,\n            customCSS: {\n                ...(_a = customizationsFromEmbedConfig === null || customizationsFromEmbedConfig === void 0 ? void 0 : customizationsFromEmbedConfig.style) === null || _a === void 0 ? void 0 : _a.customCSS,\n                ...(_b = customizationsFromViewConfig === null || customizationsFromViewConfig === void 0 ? void 0 : customizationsFromViewConfig.style) === null || _b === void 0 ? void 0 : _b.customCSS,\n            },\n            customCSSUrl: ((_c = customizationsFromViewConfig === null || customizationsFromViewConfig === void 0 ? void 0 : customizationsFromViewConfig.style) === null || _c === void 0 ? void 0 : _c.customCSSUrl)\n                || ((_d = customizationsFromEmbedConfig === null || customizationsFromEmbedConfig === void 0 ? void 0 : customizationsFromEmbedConfig.style) === null || _d === void 0 ? void 0 : _d.customCSSUrl),\n        },\n        content: {\n            ...customizationsFromEmbedConfig === null || customizationsFromEmbedConfig === void 0 ? void 0 : customizationsFromEmbedConfig.content,\n            ...customizationsFromViewConfig === null || customizationsFromViewConfig === void 0 ? void 0 : customizationsFromViewConfig.content,\n        },\n    };\n    return customizations;\n};\nexport const getRuntimeFilters = (runtimefilters) => getFilterQuery(runtimefilters || []);\n/**\n * Gets a reference to the DOM node given\n * a selector.\n * @param domSelector\n */\nexport function getDOMNode(domSelector) {\n    return typeof domSelector === 'string' ? document.querySelector(domSelector) : domSelector;\n}\nexport const deepMerge = (target, source) => merge(target, source);\nexport const getOperationNameFromQuery = (query) => {\n    const regex = /(?:query|mutation)\\s+(\\w+)/;\n    const matches = query.match(regex);\n    return matches === null || matches === void 0 ? void 0 : matches[1];\n};\n/**\n *\n * @param obj\n */\nexport function removeTypename(obj) {\n    if (!obj || typeof obj !== 'object')\n        return obj;\n    for (const key in obj) {\n        if (key === '__typename') {\n            delete obj[key];\n        }\n        else if (typeof obj[key] === 'object') {\n            removeTypename(obj[key]);\n        }\n    }\n    return obj;\n}\n/**\n * Sets the specified style properties on an HTML element.\n * @param {HTMLElement} element - The HTML element to which the styles should be applied.\n * @param {Partial<CSSStyleDeclaration>} styleProperties - An object containing style\n * property names and their values.\n * @example\n * // Apply styles to an element\n * const element = document.getElementById('myElement');\n * const styles = {\n *   backgroundColor: 'red',\n *   fontSize: '16px',\n * };\n * setStyleProperties(element, styles);\n */\nexport const setStyleProperties = (element, styleProperties) => {\n    if (!(element === null || element === void 0 ? void 0 : element.style))\n        return;\n    Object.keys(styleProperties).forEach((styleProperty) => {\n        const styleKey = styleProperty;\n        const value = styleProperties[styleKey];\n        if (value !== undefined) {\n            element.style[styleKey] = value.toString();\n        }\n    });\n};\n/**\n * Removes specified style properties from an HTML element.\n * @param {HTMLElement} element - The HTML element from which the styles should be removed.\n * @param {string[]} styleProperties - An array of style property names to be removed.\n * @example\n * // Remove styles from an element\n * const element = document.getElementById('myElement');\n * element.style.backgroundColor = 'red';\n * const propertiesToRemove = ['backgroundColor'];\n * removeStyleProperties(element, propertiesToRemove);\n */\nexport const removeStyleProperties = (element, styleProperties) => {\n    if (!(element === null || element === void 0 ? void 0 : element.style))\n        return;\n    styleProperties.forEach((styleProperty) => {\n        element.style.removeProperty(styleProperty);\n    });\n};\nexport const isUndefined = (value) => value === undefined;\n// Return if the value is a string, double or boolean.\nexport const getTypeFromValue = (value) => {\n    if (typeof value === 'string') {\n        return ['char', 'string'];\n    }\n    if (typeof value === 'number') {\n        return ['double', 'double'];\n    }\n    if (typeof value === 'boolean') {\n        return ['boolean', 'boolean'];\n    }\n    return ['', ''];\n};\nconst sdkWindowKey = '_tsEmbedSDK';\n/**\n * Stores a value in the global `window` object under the `_tsEmbedSDK` namespace.\n * @param key - The key under which the value will be stored.\n * @param value - The value to store.\n * @param options - Additional options.\n * @param options.ignoreIfAlreadyExists - Does not set if value for key is set.\n *\n * @returns The stored value.\n *\n * @version SDK: 1.36.2 | ThoughtSpot: *\n */\nexport function storeValueInWindow(key, value, options = {}) {\n    if (isWindowUndefined())\n        return value;\n    if (!window[sdkWindowKey]) {\n        window[sdkWindowKey] = {};\n    }\n    if (options.ignoreIfAlreadyExists && key in window[sdkWindowKey]) {\n        return window[sdkWindowKey][key];\n    }\n    window[sdkWindowKey][key] = value;\n    return value;\n}\n/**\n * Retrieves a stored value from the global\n * `window` object under the `_tsEmbedSDK` namespace.\n * Returns undefined in SSR environment.\n */\nexport const getValueFromWindow = (key) => {\n    var _a;\n    if (isWindowUndefined())\n        return undefined;\n    return (_a = window === null || window === void 0 ? void 0 : window[sdkWindowKey]) === null || _a === void 0 ? void 0 : _a[key];\n};\n/**\n * Check if an array includes a string value\n * @param arr - The array to check\n * @param key - The string to search for\n * @returns boolean indicating if the string is found in the array\n */\nexport const arrayIncludesString = (arr, key) => {\n    return arr.some(item => typeof item === 'string' && item === key);\n};\n/**\n * Resets the key if it exists in the `window` object under the `_tsEmbedSDK` key.\n * Returns true if the key was reset, false otherwise.\n * @param key - Key to reset\n * @returns - boolean indicating if the key was reset\n */\nexport function resetValueFromWindow(key) {\n    if (isWindowUndefined())\n        return false;\n    if (key in window[sdkWindowKey]) {\n        delete window[sdkWindowKey][key];\n        return true;\n    }\n    return false;\n}\n/**\n * Check if the document is currently in fullscreen mode\n */\nconst isInFullscreen = () => {\n    return !!(document.fullscreenElement ||\n        document.webkitFullscreenElement ||\n        document.mozFullScreenElement ||\n        document.msFullscreenElement);\n};\n/**\n * Handle Present HostEvent by entering fullscreen mode\n * @param iframe The iframe element to make fullscreen\n */\nexport const handlePresentEvent = async (iframe) => {\n    if (isInFullscreen()) {\n        return; // Already in fullscreen\n    }\n    // Browser-specific methods to enter fullscreen mode\n    const fullscreenMethods = [\n        'requestFullscreen',\n        'webkitRequestFullscreen',\n        'mozRequestFullScreen',\n        'msRequestFullscreen' // IE/Edge\n    ];\n    for (const method of fullscreenMethods) {\n        if (typeof iframe[method] === 'function') {\n            try {\n                const result = iframe[method]();\n                await Promise.resolve(result);\n                return;\n            }\n            catch (error) {\n                logger.warn(`Failed to enter fullscreen using ${method}:`, error);\n            }\n        }\n    }\n    logger.error('Fullscreen API is not supported by this browser.');\n};\n/**\n * Handle ExitPresentMode EmbedEvent by exiting fullscreen mode\n */\nexport const handleExitPresentMode = async () => {\n    if (!isInFullscreen()) {\n        return; // Not in fullscreen\n    }\n    const exitFullscreenMethods = [\n        'exitFullscreen',\n        'webkitExitFullscreen',\n        'mozCancelFullScreen',\n        'msExitFullscreen' // IE/Edge\n    ];\n    // Try each method until one works\n    for (const method of exitFullscreenMethods) {\n        if (typeof document[method] === 'function') {\n            try {\n                const result = document[method]();\n                await Promise.resolve(result);\n                return;\n            }\n            catch (error) {\n                logger.warn(`Failed to exit fullscreen using ${method}:`, error);\n            }\n        }\n    }\n    logger.warn('Exit fullscreen API is not supported by this browser.');\n};\nconst scrollableOverflowPattern = /(auto|scroll|overlay)/;\nconst clippingOverflowPattern = /(auto|scroll|overlay|hidden|clip)/;\nconst getParentElementAcrossShadowRoot = (element) => {\n    var _a;\n    if (element.parentElement) {\n        return element.parentElement;\n    }\n    const rootNode = (_a = element.getRootNode) === null || _a === void 0 ? void 0 : _a.call(element);\n    if (typeof ShadowRoot !== 'undefined' && rootNode instanceof ShadowRoot) {\n        return rootNode.host;\n    }\n    return null;\n};\nconst hasMatchingOverflow = (element, overflowPattern) => {\n    const style = window.getComputedStyle(element);\n    return style ? overflowPattern.test(style.overflow + style.overflowX + style.overflowY) : false;\n};\nexport const getScrollableAncestors = (element) => {\n    const ancestors = [];\n    if (!element) {\n        return ancestors;\n    }\n    let parent = getParentElementAcrossShadowRoot(element);\n    while (parent && parent !== document.body && parent !== document.documentElement) {\n        if (hasMatchingOverflow(parent, scrollableOverflowPattern)) {\n            ancestors.push(parent);\n        }\n        parent = getParentElementAcrossShadowRoot(parent);\n    }\n    return ancestors;\n};\nexport const getClippingAncestors = (element) => {\n    const ancestors = [];\n    if (!element) {\n        return ancestors;\n    }\n    let parent = getParentElementAcrossShadowRoot(element);\n    while (parent && parent !== document.body && parent !== document.documentElement) {\n        if (hasMatchingOverflow(parent, clippingOverflowPattern)) {\n            ancestors.push(parent);\n        }\n        parent = getParentElementAcrossShadowRoot(parent);\n    }\n    return ancestors;\n};\nconst getIntersectedRect = (rect, clipRect) => ({\n    top: Math.max(rect.top, clipRect.top),\n    left: Math.max(rect.left, clipRect.left),\n    bottom: Math.min(rect.bottom, clipRect.bottom),\n    right: Math.min(rect.right, clipRect.right),\n});\nconst isSameVisibleRect = (rectA, rectB) => rectA.top === rectB.top\n    && rectA.left === rectB.left\n    && rectA.bottom === rectB.bottom\n    && rectA.right === rectB.right;\nexport const getEffectiveClippingAncestors = (element) => {\n    if (!element) {\n        return [];\n    }\n    const elementRect = element.getBoundingClientRect();\n    let clipRect = {\n        top: 0,\n        left: 0,\n        bottom: window.innerHeight,\n        right: window.innerWidth,\n    };\n    return getClippingAncestors(element).filter((ancestor) => {\n        const currentVisibleRect = getIntersectedRect(elementRect, clipRect);\n        const nextClipRect = getIntersectedRect(clipRect, ancestor.getBoundingClientRect());\n        const nextVisibleRect = getIntersectedRect(elementRect, nextClipRect);\n        const clipsElement = !isSameVisibleRect(currentVisibleRect, nextVisibleRect);\n        clipRect = nextClipRect;\n        return clipsElement;\n    });\n};\nexport const calculateVisibleElementData = (element, useClippingAncestors = false) => {\n    if (!element) {\n        return {\n            top: 0,\n            height: 0,\n            left: 0,\n            width: 0,\n        };\n    }\n    const rect = element.getBoundingClientRect();\n    let clipTop = 0;\n    let clipLeft = 0;\n    let clipBottom = window.innerHeight;\n    let clipRight = window.innerWidth;\n    if (useClippingAncestors) {\n        getEffectiveClippingAncestors(element).forEach((ancestor) => {\n            const ancestorRect = ancestor.getBoundingClientRect();\n            clipTop = Math.max(clipTop, ancestorRect.top);\n            clipLeft = Math.max(clipLeft, ancestorRect.left);\n            clipBottom = Math.min(clipBottom, ancestorRect.bottom);\n            clipRight = Math.min(clipRight, ancestorRect.right);\n        });\n    }\n    const frameRelativeTop = Math.max(rect.top, clipTop);\n    const frameRelativeLeft = Math.max(rect.left, clipLeft);\n    const frameRelativeBottom = Math.min(clipBottom, rect.bottom);\n    const frameRelativeRight = Math.min(clipRight, rect.right);\n    const data = {\n        top: Math.max(0, clipTop - rect.top),\n        height: Math.max(0, frameRelativeBottom - frameRelativeTop),\n        left: Math.max(0, clipLeft - rect.left),\n        width: Math.max(0, frameRelativeRight - frameRelativeLeft),\n    };\n    return data;\n};\n/**\n * Replaces placeholders in a template string with provided values.\n * Placeholders should be in the format {key}.\n * @param template - The template string with placeholders\n * @param values - An object containing key-value pairs to replace placeholders\n * @returns The template string with placeholders replaced\n * @example\n * formatTemplate('Hello {name}, you are {age} years old', { name: 'John', age: 30 })\n * // Returns: 'Hello John, you are 30 years old'\n *\n * formatTemplate('Expected {type}, but received {actual}', { type: 'string', actual: 'number' })\n * // Returns: 'Expected string, but received number'\n */\nexport const formatTemplate = (template, values) => {\n    // This regex /\\{(\\w+)\\}/g finds all placeholders in the format {word} \n    // and captures the word inside the braces for replacement.\n    return template.replace(/\\{(\\w+)\\}/g, (match, key) => {\n        return values[key] !== undefined ? String(values[key]) : match;\n    });\n};\nexport const getHostEventsConfig = (viewConfig) => {\n    return {\n        shouldBypassPayloadValidation: viewConfig.shouldBypassPayloadValidation,\n        useHostEventsV2: viewConfig.useHostEventsV2,\n    };\n};\n/**\n * Check if the window is undefined\n * If the window is undefined, it means the code is running in a SSR environment.\n * @returns true if the window is undefined, false otherwise\n *\n */\nexport const isWindowUndefined = () => {\n    if (typeof window === 'undefined') {\n        logger.error(ERROR_MESSAGE.SSR_ENVIRONMENT_ERROR);\n        return true;\n    }\n    return false;\n};\n/**\n * Validates that a URL uses only http: or https: protocols.\n * Returns a tuple of [isValid, error] so the caller can handle validation errors.\n * @param url - The URL string to validate\n * @returns [true, null] if valid, [false, Error] if invalid\n */\nexport const validateHttpUrl = (url) => {\n    try {\n        const parsedUrl = new URL(url);\n        if (parsedUrl.protocol !== 'http:' && parsedUrl.protocol !== 'https:') {\n            return [false, new Error(`Invalid protocol: ${parsedUrl.protocol}. Only http: and https: are allowed.`)];\n        }\n        return [true, null];\n    }\n    catch (error) {\n        return [false, error instanceof Error ? error : new Error(String(error))];\n    }\n};\n/**\n * Sets a query parameter if the value is defined.\n * @param queryParams - The query params object to modify\n * @param param - The parameter key\n * @param value - The value to set\n * @param asBoolean - If true, coerces value to boolean\n */\nexport const setParamIfDefined = (queryParams, param, value, asBoolean = false) => {\n    if (value !== undefined) {\n        queryParams[param] = asBoolean ? !!value : value;\n    }\n};\n//# sourceMappingURL=utils.js.map","import { logger } from '../logger';\nexport const EndPoints = {\n    AUTH_VERIFICATION: '/callosum/v1/session/info',\n    SESSION_INFO: '/callosum/v1/session/info',\n    PREAUTH_INFO: '/prism/preauth/info',\n    SAML_LOGIN_TEMPLATE: (targetUrl) => `/callosum/v1/saml/login?targetURLPath=${targetUrl}`,\n    OIDC_LOGIN_TEMPLATE: (targetUrl) => `/callosum/v1/oidc/login?targetURLPath=${targetUrl}`,\n    TOKEN_LOGIN: '/callosum/v1/session/login/token',\n    BASIC_LOGIN: '/callosum/v1/session/login',\n    LOGOUT: '/callosum/v1/session/logout',\n    EXECUTE_TML: '/api/rest/2.0/metadata/tml/import',\n    EXPORT_TML: '/api/rest/2.0/metadata/tml/export',\n    IS_ACTIVE: '/callosum/v1/session/isactive',\n};\n/**\n *\n * @param url\n * @param options\n */\nfunction failureLoggedFetch(url, options = {}) {\n    return fetch(url, options).then(async (r) => {\n        var _a;\n        if (!r.ok && r.type !== 'opaqueredirect' && r.type !== 'opaque') {\n            logger.error('Failure', await ((_a = r.text) === null || _a === void 0 ? void 0 : _a.call(r)));\n        }\n        return r;\n    });\n}\n/**\n * Service to validate a auth token against a ThoughtSpot host.\n * @param thoughtSpotHost : ThoughtSpot host to verify the token against.\n * @param authToken : Auth token to verify.\n */\nexport async function verifyTokenService(thoughtSpotHost, authToken) {\n    const authVerificationUrl = `${thoughtSpotHost}${EndPoints.IS_ACTIVE}`;\n    try {\n        const res = await fetch(authVerificationUrl, {\n            headers: {\n                Authorization: `Bearer ${authToken}`,\n                'x-requested-by': 'ThoughtSpot',\n            },\n            credentials: 'omit',\n        });\n        return res.ok;\n    }\n    catch (e) {\n        logger.warn(`Token Verification Service failed : ${e.message}`);\n    }\n    return false;\n}\n/**\n *\n * @param authEndpoint\n */\nexport async function fetchAuthTokenService(authEndpoint) {\n    return fetch(authEndpoint);\n}\n/**\n *\n * @param thoughtSpotHost\n * @param username\n * @param authToken\n */\nexport async function fetchAuthService(thoughtSpotHost, username, authToken) {\n    const fetchUrlParams = username\n        ? `username=${username}&auth_token=${authToken}`\n        : `auth_token=${authToken}`;\n    return failureLoggedFetch(`${thoughtSpotHost}${EndPoints.TOKEN_LOGIN}?${fetchUrlParams}`, {\n        credentials: 'include',\n        // We do not want to follow the redirect, as it starts giving a CORS\n        // error\n        redirect: 'manual',\n    });\n}\n/**\n *\n * @param thoughtSpotHost\n * @param username\n * @param authToken\n */\nexport async function fetchAuthPostService(thoughtSpotHost, username, authToken) {\n    const bodyPrams = username\n        ? `username=${encodeURIComponent(username)}&auth_token=${encodeURIComponent(authToken)}`\n        : `auth_token=${encodeURIComponent(authToken)}`;\n    return failureLoggedFetch(`${thoughtSpotHost}${EndPoints.TOKEN_LOGIN}`, {\n        method: 'POST',\n        headers: {\n            'content-type': 'application/x-www-form-urlencoded',\n            'x-requested-by': 'ThoughtSpot',\n        },\n        body: bodyPrams,\n        credentials: 'include',\n        // We do not want to follow the redirect, as it starts giving a CORS\n        // error\n        redirect: 'manual',\n    });\n}\n/**\n *\n * @param thoughtSpotHost\n * @param username\n * @param password\n */\nexport async function fetchBasicAuthService(thoughtSpotHost, username, password) {\n    return failureLoggedFetch(`${thoughtSpotHost}${EndPoints.BASIC_LOGIN}`, {\n        method: 'POST',\n        headers: {\n            'content-type': 'application/x-www-form-urlencoded',\n            'x-requested-by': 'ThoughtSpot',\n        },\n        body: `username=${encodeURIComponent(username)}&password=${encodeURIComponent(password)}`,\n        credentials: 'include',\n    });\n}\n//# sourceMappingURL=authService.js.map","import { tokenizedFetch } from '../../tokenizedFetch';\nimport { logger } from '../logger';\nimport { EndPoints } from './authService';\n/**\n *\n * @param url\n * @param options\n */\nfunction tokenizedFailureLoggedFetch(url, options = {}) {\n    return tokenizedFetch(url, options).then(async (r) => {\n        var _a;\n        if (!r.ok && r.type !== 'opaqueredirect' && r.type !== 'opaque') {\n            logger.error(`Failed to fetch ${url}`, await ((_a = r.text) === null || _a === void 0 ? void 0 : _a.call(r)));\n        }\n        return r;\n    });\n}\n/**\n * Fetches the session info from the ThoughtSpot server.\n * @param thoughtspotHost\n * @returns {Promise<any>}\n * @example\n * ```js\n *  const response = await sessionInfoService();\n * ```\n */\nexport async function fetchPreauthInfoService(thoughtspotHost) {\n    const sessionInfoPath = `${thoughtspotHost}${EndPoints.PREAUTH_INFO}`;\n    const handleError = (e) => {\n        const error = new Error(`Failed to fetch auth info: ${e.message || e.statusText}`);\n        error.status = e.status; // Attach the status code to the error object\n        throw error;\n    };\n    try {\n        const response = await tokenizedFailureLoggedFetch(sessionInfoPath);\n        return response;\n    }\n    catch (e) {\n        handleError(e);\n        return null;\n    }\n}\n/**\n * Fetches the session info from the ThoughtSpot server.\n * @param thoughtspotHost\n * @returns {Promise<any>}\n * @example\n * ```js\n *  const response = await sessionInfoService();\n * ```\n */\nexport async function fetchSessionInfoService(thoughtspotHost) {\n    const sessionInfoPath = `${thoughtspotHost}${EndPoints.SESSION_INFO}`;\n    const response = await tokenizedFailureLoggedFetch(sessionInfoPath);\n    if (!response.ok) {\n        throw new Error(`Failed to fetch session info: ${response.statusText}`);\n    }\n    const data = await response.json();\n    return data;\n}\n/**\n *\n * @param thoughtSpotHost\n */\nexport async function fetchLogoutService(thoughtSpotHost) {\n    return tokenizedFailureLoggedFetch(`${thoughtSpotHost}${EndPoints.LOGOUT}`, {\n        credentials: 'include',\n        method: 'POST',\n        headers: {\n            'x-requested-by': 'ThoughtSpot',\n        },\n    });\n}\n/**\n * Is active service to check if the user is logged in.\n * @param thoughtSpotHost\n * @version SDK: 1.28.4 | ThoughtSpot: *\n */\nexport async function isActiveService(thoughtSpotHost) {\n    const isActiveUrl = `${thoughtSpotHost}${EndPoints.IS_ACTIVE}`;\n    try {\n        const res = await tokenizedFetch(isActiveUrl, {\n            credentials: 'include',\n        });\n        return res.ok;\n    }\n    catch (e) {\n        logger.warn(`Is Logged In Service failed : ${e.message}`);\n    }\n    return false;\n}\n//# sourceMappingURL=tokenizedAuthService.js.map","import { graphqlQuery } from './graphql-request';\nexport const getSourceDetailQuery = `\n    query GetSourceDetail($ids: [GUID!]!) {\n        getSourceDetailById(ids: $ids, type: LOGICAL_TABLE) {\n        id\n        name\n        description\n        authorName\n        authorDisplayName\n        isExternal\n        type\n        created\n        modified\n        columns {\n            id\n            name\n            author\n            authorDisplayName\n            description\n            dataType\n            type\n            modified\n            ownerName\n            owner\n            dataRecency\n            sources {\n            tableId\n            tableName\n            columnId\n            columnName\n            __typename\n            }\n            synonyms\n            cohortAnswerId\n            __typename\n        }\n        relationships\n        destinationRelationships\n        dataSourceId\n        __typename\n        }\n    }  \n`;\nconst sourceDetailCache = new Map();\n/**\n *\n * @param thoughtSpotHost\n * @param sourceId\n */\nexport async function getSourceDetail(thoughtSpotHost, sourceId) {\n    if (sourceDetailCache.get(sourceId)) {\n        return sourceDetailCache.get(sourceId);\n    }\n    const details = await graphqlQuery({\n        query: getSourceDetailQuery,\n        variables: {\n            ids: [sourceId],\n        },\n        thoughtSpotHost,\n    });\n    const souceDetails = details[0];\n    if (souceDetails) {\n        sourceDetailCache.set(sourceId, souceDetails);\n    }\n    return souceDetails;\n}\n//# sourceMappingURL=sourceService.js.map","const bachSessionId = `\nid {\n    sessionId\n    genNo\n    acSession {\n        sessionId\n        genNo\n    }\n}\n`;\nexport const getUnaggregatedAnswerSession = `\nmutation GetUnAggregatedAnswerSession($session: BachSessionIdInput!, $columns: [UserPointSelectionInput!]!) {\n    Answer__getUnaggregatedAnswer(session: $session, columns: $columns) {\n        ${bachSessionId}\n        answer {\n            visualizations {\n                ... on TableViz {\n                    columns {\n                        column {\n                            id\n                            name\n                            referencedColumns {\n                                guid\n                                displayName\n                            }\n                        }\n                    }\n                }\n            }\n        }\n    }\n}  \n`;\nexport const removeColumns = `\nmutation RemoveColumns($session: BachSessionIdInput!, $logicalColumnIds: [GUID!], $columnIds: [GUID!]) {\n    Answer__removeColumns(\n        session: $session\n        logicalColumnIds: $logicalColumnIds\n        columnIds: $columnIds\n        ) {\n            ${bachSessionId}\n    }\n}\n    `;\nexport const addColumns = `\n    mutation AddColumns($session: BachSessionIdInput!, $columns: [AnswerColumnInfo!]!) {\n        Answer__addColumn(session: $session, columns: $columns) {\n            ${bachSessionId}\n        }\n    }\n    `;\nexport const addFilter = `\n    mutation AddUpdateFilter($session: BachSessionIdInput!, $params: AddUpdateFilterInput!) {\n        Answer__addUpdateFilter(session: $session, params: $params) {\n            ${bachSessionId}\n        }\n    }\n`;\nexport const getAnswer = `\n    query GetAnswer($session: BachSessionIdInput!) {\n        getAnswer(session: $session) {\n            ${bachSessionId}\n            answer {\n                id\n                name\n                description\n                displayMode\n                sources {\n                    header {\n                        guid\n                        displayName\n                    }\n                }\n                filterGroups {\n                    columnInfo {\n                        name\n                        referencedColumns {\n                            guid\n                            displayName\n                        }\n                    }\n                    filters {\n                        filterContent {\n                            filterType\n                            negate\n                            value {\n                                key\n                            }\n                        }\n                    }\n                }\n                metadata {\n                    author\n                    authorId\n                    createdAt\n                    isDiscoverable\n                    isHidden\n                    modifiedAt\n                }\n                visualizations {\n                    ... on TableViz {\n                        id\n                        columns {\n                            column {\n                                id\n                                name\n                                referencedColumns {\n                                    guid\n                                    displayName\n                                }\n                            }\n                        }\n                    }\n                    ... on ChartViz {\n                        id\n                    }\n                }\n            }\n        }\n    }\n\n`;\nexport const getAnswerData = `\n    query GetTableWithHeadlineData($session: BachSessionIdInput!, $deadline: Int!, $dataPaginationParams: DataPaginationParamsInput!) {\n        getAnswer(session: $session) {\n            ${bachSessionId}\n            answer {\n                id\n                visualizations {\n                    id\n                    ... on TableViz {\n                        columns {\n                            column {\n                                id\n                                name\n                                type\n                                aggregationType\n                                dataType\n                            }\n                        }\n                        data(deadline: $deadline, pagination: $dataPaginationParams)\n                    }          \n                }\n            }\n        }\n    }\n`;\nexport const addVizToLiveboard = `\n    mutation AddVizToLiveboard(liveboardId: GUID!, session: BachSessionIdInput!, tabId: GUID, vizId: GUID!) {\n        Answer__addVizToPinboard(\n            pinboardId: liveboardId\n\n            session: $session\n\n            tabId: $tabId\n\n            vizId: $vizId\n        ) {\n            ${bachSessionId}\n        }\n    }\n`;\nexport const getSQLQuery = `\n    mutation GetSQLQuery($session: BachSessionIdInput!) {\n        Answer__getQuery(session: $session) {\n            sql\n        }\n    }\n`;\nexport const updateDisplayMode = `\n   mutation UpdateDisplayMode(\n    $session: BachSessionIdInput!\n    $displayMode: DisplayMode\n) {\n    Answer__updateProperties(session: $session, displayMode: $displayMode) {\n        id {\n            sessionId\n            genNo\n            acSession {\n                sessionId\n                genNo\n            }\n        }\n        answer {\n            id\n            displayMode\n            suggestedDisplayMode\n        }\n    }\n}\n`;\nexport const getAnswerTML = `\nmutation GetUnsavedAnswerTML($session: BachSessionIdInput!, $exportDependencies: Boolean, $formatType:  EDocFormatType, $exportPermissions: Boolean, $exportFqn: Boolean) {\n  UnsavedAnswer_getTML(\n    session: $session\n    exportDependencies: $exportDependencies\n    formatType: $formatType\n    exportPermissions: $exportPermissions\n    exportFqn: $exportFqn\n  ) {\n    zipFile\n    object {\n      edoc\n      name\n      type\n      __typename\n    }\n    __typename\n  }\n}`;\n//# sourceMappingURL=answer-queries.js.map","// import YAML from 'yaml';\nimport { tokenizedFetch } from '../../../tokenizedFetch';\nimport { deepMerge, getTypeFromValue, removeTypename } from '../../../utils';\nimport { graphqlQuery } from '../graphql-request';\nimport { getSourceDetail } from '../sourceService';\nimport * as queries from './answer-queries';\nexport var OperationType;\n(function (OperationType) {\n    OperationType[\"GetChartWithData\"] = \"GetChartWithData\";\n    OperationType[\"GetTableWithHeadlineData\"] = \"GetTableWithHeadlineData\";\n})(OperationType || (OperationType = {}));\nexport const DATA_TYPES = ['DATE', 'DATE_TIME', 'TIME'];\n/**\n * AnswerService provides a simple way to work with ThoughtSpot Answers.\n *\n * This service allows you to interact with ThoughtSpot Answers programmatically,\n * making it easy to customize visualizations, filter data, and extract insights\n * directly from your application.\n *\n * You can use this service to:\n *\n * - Add or remove columns from Answers (`addColumns`, `removeColumns`,\n * `addColumnsByName`)\n * - Apply filters to Answers (`addFilter`)\n * - Get data from Answers in different formats (JSON, CSV, PNG) (`fetchData`,\n * `fetchCSVBlob`, `fetchPNGBlob`)\n * - Get data for specific points in visualizations\n * (`getUnderlyingDataForPoint`)\n * - Run custom queries (`executeQuery`)\n * - Add visualizations to Liveboards (`addDisplayedVizToLiveboard`)\n *\n * @example\n * ```js\n * // Get the answer service\n * embed.on(EmbedEvent.Data, async (e) => {\n *     const service = await embed.getAnswerService();\n *\n *     // Add columns to the answer\n *     await service.addColumnsByName([\"Sales\", \"Region\"]);\n *\n *     // Get the data\n *     const data = await service.fetchData();\n *     console.log(data);\n * });\n * ```\n *\n * @example\n * ```js\n * // Get data for a point in a visualization\n * embed.on(EmbedEvent.CustomAction, async (e) => {\n *     const underlying = await e.answerService.getUnderlyingDataForPoint([\n *       'Product Name',\n *       'Sales Amount'\n *     ]);\n *\n *     const data = await underlying.fetchData(0, 100);\n *     console.log(data);\n * });\n * ```\n *\n * @version SDK: 1.25.0 | ThoughtSpot: 9.10.0.cl\n * @group Events\n */\nexport class AnswerService {\n    /**\n     * Should not need to be called directly.\n     * @param session\n     * @param answer\n     * @param thoughtSpotHost\n     * @param selectedPoints\n     */\n    constructor(session, answer, thoughtSpotHost, selectedPoints) {\n        this.session = session;\n        this.thoughtSpotHost = thoughtSpotHost;\n        this.selectedPoints = selectedPoints;\n        this.tmlOverride = {};\n        this.session = removeTypename(session);\n        this.answer = answer;\n    }\n    /**\n     * Get the details about the source used in the answer.\n     * This can be used to get the list of all columns in the data source for example.\n     */\n    async getSourceDetail() {\n        const sourceId = (await this.getAnswer()).sources[0].header.guid;\n        return getSourceDetail(this.thoughtSpotHost, sourceId);\n    }\n    /**\n     * Remove columnIds and return updated answer session.\n     * @param columnIds\n     * @returns\n     */\n    async removeColumns(columnIds) {\n        return this.executeQuery(queries.removeColumns, {\n            logicalColumnIds: columnIds,\n        });\n    }\n    /**\n     * Add columnIds and return updated answer session.\n     * @param columnIds\n     * @returns\n     */\n    async addColumns(columnIds) {\n        return this.executeQuery(queries.addColumns, {\n            columns: columnIds.map((colId) => ({ logicalColumnId: colId })),\n        });\n    }\n    /**\n     * Add columns by names and return updated answer session.\n     * @param columnNames\n     * @returns\n     * @example\n     * ```js\n     * embed.on(EmbedEvent.Data, async (e) => {\n     *    const service = await embed.getAnswerService();\n     *    await service.addColumnsByName([\n     *      \"col name 1\",\n     *      \"col name 2\"\n     *    ]);\n     *    console.log(await service.fetchData());\n     * });\n     * ```\n     */\n    async addColumnsByName(columnNames) {\n        const sourceDetail = await this.getSourceDetail();\n        const columnGuids = getGuidsFromColumnNames(sourceDetail, columnNames);\n        return this.addColumns([...columnGuids]);\n    }\n    /**\n     * Add a filter to the answer.\n     * @param columnName\n     * @param operator\n     * @param values\n     * @returns\n     */\n    async addFilter(columnName, operator, values) {\n        const sourceDetail = await this.getSourceDetail();\n        const columnGuids = getGuidsFromColumnNames(sourceDetail, [columnName]);\n        return this.executeQuery(queries.addFilter, {\n            params: {\n                filterContent: [{\n                        filterType: operator,\n                        value: values.map((v) => {\n                            const [type, prefix] = getTypeFromValue(v);\n                            return {\n                                type: type.toUpperCase(),\n                                [`${prefix}Value`]: v,\n                            };\n                        }),\n                    }],\n                filterGroupId: {\n                    logicalColumnId: columnGuids.values().next().value,\n                },\n            },\n        });\n    }\n    async updateDisplayMode(displayMode = \"TABLE_MODE\") {\n        return this.executeQuery(queries.updateDisplayMode, {\n            displayMode,\n        });\n    }\n    async getSQLQuery(fetchSQLWithAllColumns = false) {\n        if (fetchSQLWithAllColumns) {\n            await this.updateDisplayMode(\"TABLE_MODE\");\n        }\n        const { sql } = await this.executeQuery(queries.getSQLQuery, {});\n        return sql;\n    }\n    /**\n     * Fetch data from the answer.\n     * @param offset\n     * @param size\n     * @returns\n     */\n    async fetchData(offset = 0, size = 1000) {\n        const { answer } = await this.executeQuery(queries.getAnswerData, {\n            deadline: 0,\n            dataPaginationParams: {\n                isClientPaginated: true,\n                offset,\n                size,\n            },\n        });\n        const { columns, data } = answer.visualizations.find((viz) => !!viz.data) || {};\n        return {\n            columns,\n            data,\n        };\n    }\n    /**\n     * Fetch the data for the answer as a CSV blob. This might be\n     * quicker for larger data.\n     * @param userLocale\n     * @param includeInfo Include the CSV header in the output\n     * @returns Response\n     */\n    async fetchCSVBlob(userLocale = 'en-us', includeInfo = false) {\n        const fetchUrl = this.getFetchCSVBlobUrl(userLocale, includeInfo);\n        return tokenizedFetch(fetchUrl, {\n            credentials: 'include',\n        });\n    }\n    /**\n     * Fetch the data for the answer as a PNG blob. This might be\n     * quicker for larger data.\n     * @param userLocale\n     * @param includeInfo\n     * @param omitBackground Omit the background in the PNG\n     * @param deviceScaleFactor The scale factor for the PNG\n     * @return Response\n     */\n    async fetchPNGBlob(userLocale = 'en-us', omitBackground = false, deviceScaleFactor = 2) {\n        const fetchUrl = this.getFetchPNGBlobUrl(userLocale, omitBackground, deviceScaleFactor);\n        return tokenizedFetch(fetchUrl, {\n            credentials: 'include',\n        });\n    }\n    /**\n     * Just get the internal URL for this answer's data\n     * as a CSV blob.\n     * @param userLocale\n     * @param includeInfo\n     * @returns\n     */\n    getFetchCSVBlobUrl(userLocale = 'en-us', includeInfo = false) {\n        return `${this.thoughtSpotHost}/prism/download/answer/csv?sessionId=${this.session.sessionId}&genNo=${this.session.genNo}&userLocale=${userLocale}&exportFileName=data&hideCsvHeader=${!includeInfo}`;\n    }\n    /**\n     * Just get the internal URL for this answer's data\n     * as a PNG blob.\n     * @param userLocale\n     * @param omitBackground\n     * @param deviceScaleFactor\n     */\n    getFetchPNGBlobUrl(userLocale = 'en-us', omitBackground = false, deviceScaleFactor = 2) {\n        return `${this.thoughtSpotHost}/prism/download/answer/png?sessionId=${this.session.sessionId}&deviceScaleFactor=${deviceScaleFactor}&omitBackground=${omitBackground}&genNo=${this.session.genNo}&userLocale=${userLocale}&exportFileName=data`;\n    }\n    /**\n     * Get underlying data given a point and the output column names.\n     * In case of a context menu action, the selectedPoints are\n     * automatically passed.\n     * @param outputColumnNames\n     * @param selectedPoints\n     * @example\n     * ```js\n     *  embed.on(EmbedEvent.CustomAction, e => {\n     *     const underlying = await e.answerService.getUnderlyingDataForPoint([\n     *       'col name 1' // The column should exist in the data source.\n     *     ]);\n     *     const data = await underlying.fetchData(0, 100);\n     *  })\n     * ```\n     * @version SDK: 1.25.0 | ThoughtSpot: 9.10.0.cl\n     */\n    async getUnderlyingDataForPoint(outputColumnNames, selectedPoints) {\n        if (!selectedPoints && !this.selectedPoints) {\n            throw new Error('Needs to be triggered in context of a point');\n        }\n        if (!selectedPoints) {\n            selectedPoints = getSelectedPointsForUnderlyingDataQuery(this.selectedPoints);\n        }\n        const sourceDetail = await this.getSourceDetail();\n        const ouputColumnGuids = getGuidsFromColumnNames(sourceDetail, outputColumnNames);\n        const unAggAnswer = await graphqlQuery({\n            query: queries.getUnaggregatedAnswerSession,\n            variables: {\n                session: this.session,\n                columns: selectedPoints,\n            },\n            thoughtSpotHost: this.thoughtSpotHost,\n        });\n        const unaggAnswerSession = new AnswerService(unAggAnswer.id, unAggAnswer.answer, this.thoughtSpotHost);\n        const currentColumns = new Set(unAggAnswer.answer.visualizations[0].columns\n            .map((c) => c.column.referencedColumns[0].guid));\n        const columnsToAdd = [...ouputColumnGuids].filter((col) => !currentColumns.has(col));\n        if (columnsToAdd.length) {\n            await unaggAnswerSession.addColumns(columnsToAdd);\n        }\n        const columnsToRemove = [...currentColumns].filter((col) => !ouputColumnGuids.has(col));\n        if (columnsToRemove.length) {\n            await unaggAnswerSession.removeColumns(columnsToRemove);\n        }\n        return unaggAnswerSession;\n    }\n    /**\n     * Execute a custom graphql query in the context of the answer.\n     * @param query graphql query\n     * @param variables graphql variables\n     * @returns\n     */\n    async executeQuery(query, variables) {\n        const data = await graphqlQuery({\n            query,\n            variables: {\n                session: this.session,\n                ...variables,\n            },\n            thoughtSpotHost: this.thoughtSpotHost,\n            isCompositeQuery: false,\n        });\n        this.session = deepMerge(this.session, (data === null || data === void 0 ? void 0 : data.id) || {});\n        return data;\n    }\n    /**\n     * Get the internal session details for the answer.\n     * @returns\n     */\n    getSession() {\n        return this.session;\n    }\n    async getAnswer() {\n        if (this.answer) {\n            return this.answer;\n        }\n        this.answer = this.executeQuery(queries.getAnswer, {}).then((data) => data === null || data === void 0 ? void 0 : data.answer);\n        return this.answer;\n    }\n    async getTML() {\n        const { object } = await this.executeQuery(queries.getAnswerTML, {});\n        const edoc = object[0].edoc;\n        const YAML = await import('yaml');\n        const parsedDoc = YAML.parse(edoc);\n        return {\n            answer: {\n                ...parsedDoc.answer,\n                ...this.tmlOverride,\n            },\n        };\n    }\n    async addDisplayedVizToLiveboard(liveboardId) {\n        const { displayMode, visualizations } = await this.getAnswer();\n        const viz = getDisplayedViz(visualizations, displayMode);\n        return this.executeQuery(queries.addVizToLiveboard, {\n            liveboardId,\n            vizId: viz.id,\n        });\n    }\n    setTMLOverride(override) {\n        this.tmlOverride = override;\n    }\n}\n/**\n *\n * @param sourceDetail\n * @param colNames\n */\nfunction getGuidsFromColumnNames(sourceDetail, colNames) {\n    const cols = sourceDetail.columns.reduce((colSet, col) => {\n        colSet[col.name.toLowerCase()] = col;\n        return colSet;\n    }, {});\n    return new Set(colNames.map((colName) => {\n        const col = cols[colName.toLowerCase()];\n        return col.id;\n    }));\n}\n/**\n *\n * @param selectedPoints\n */\nfunction getSelectedPointsForUnderlyingDataQuery(selectedPoints) {\n    const underlyingDataPoint = [];\n    /**\n     *\n     * @param colVal\n     */\n    function addPointFromColVal(colVal) {\n        var _a;\n        const dataType = colVal.column.dataType;\n        const id = colVal.column.id;\n        let dataValue;\n        if (DATA_TYPES.includes(dataType)) {\n            if (Number.isFinite(colVal.value)) {\n                dataValue = [{\n                        epochRange: {\n                            startEpoch: colVal.value,\n                        },\n                    }];\n                // Case for custom calendar.\n            }\n            else if ((_a = colVal.value) === null || _a === void 0 ? void 0 : _a.v) {\n                dataValue = [{\n                        epochRange: {\n                            startEpoch: colVal.value.v.s,\n                            endEpoch: colVal.value.v.e,\n                        },\n                    }];\n            }\n        }\n        else {\n            dataValue = [{ value: colVal.value }];\n        }\n        underlyingDataPoint.push({\n            columnId: colVal.column.id,\n            dataValue,\n        });\n    }\n    selectedPoints.forEach((p) => {\n        p.selectedAttributes.forEach(addPointFromColVal);\n    });\n    return underlyingDataPoint;\n}\n/**\n *\n * @param visualizations\n * @param displayMode\n */\nfunction getDisplayedViz(visualizations, displayMode) {\n    if (displayMode === 'CHART_MODE') {\n        return visualizations.find((viz) => viz.__typename === 'ChartViz');\n    }\n    return visualizations.find((viz) => viz.__typename === 'TableViz');\n}\n//# sourceMappingURL=answerService.js.map","import { tokenizedFetch } from '../../tokenizedFetch';\nimport { getOperationNameFromQuery } from '../../utils';\n/**\n *\n * @param root0\n * @param root0.query\n * @param root0.variables\n * @param root0.thoughtSpotHost\n * @param root0.isCompositeQuery\n */\nexport async function graphqlQuery({ query, variables, thoughtSpotHost, isCompositeQuery = false, }) {\n    const operationName = getOperationNameFromQuery(query);\n    try {\n        const response = await tokenizedFetch(`${thoughtSpotHost}/prism/?op=${operationName}`, {\n            method: 'POST',\n            headers: {\n                'content-type': 'application/json;charset=UTF-8',\n                'x-requested-by': 'ThoughtSpot',\n                accept: '*/*',\n                'accept-language': 'en-us',\n            },\n            body: JSON.stringify({\n                operationName,\n                query,\n                variables,\n            }),\n            credentials: 'include',\n        });\n        const result = await response.json();\n        const dataValues = Object.values(result.data);\n        return (isCompositeQuery) ? result.data : dataValues[0];\n    }\n    catch (error) {\n        return error;\n    }\n}\n//# sourceMappingURL=graphql-request.js.map","import { LogLevel } from '../types';\nimport { version } from './sdk-version';\nconst logFunctions = {\n    [LogLevel.SILENT]: () => undefined,\n    [LogLevel.ERROR]: console.error,\n    [LogLevel.WARN]: console.warn,\n    [LogLevel.INFO]: console.info,\n    [LogLevel.DEBUG]: console.debug,\n    [LogLevel.TRACE]: console.trace,\n};\nlet globalLogLevelOverride = LogLevel.TRACE;\nconst setGlobalLogLevelOverride = (logLevel) => {\n    globalLogLevelOverride = logLevel;\n};\nconst logLevelToNumber = {\n    [LogLevel.SILENT]: 0,\n    [LogLevel.ERROR]: 1,\n    [LogLevel.WARN]: 2,\n    [LogLevel.INFO]: 3,\n    [LogLevel.DEBUG]: 4,\n    [LogLevel.TRACE]: 5,\n};\nconst compareLogLevels = (logLevel1, logLevel2) => {\n    const logLevel1Index = logLevelToNumber[logLevel1];\n    const logLevel2Index = logLevelToNumber[logLevel2];\n    return logLevel1Index - logLevel2Index;\n};\nclass Logger {\n    constructor() {\n        this.logLevel = LogLevel.ERROR;\n        this.setLogLevel = (newLogLevel) => {\n            this.logLevel = newLogLevel;\n        };\n        this.getLogLevel = () => this.logLevel;\n    }\n    canLog(logLevel) {\n        if (logLevel === LogLevel.SILENT)\n            return false;\n        if (globalLogLevelOverride !== undefined) {\n            return compareLogLevels(globalLogLevelOverride, logLevel) >= 0;\n        }\n        return compareLogLevels(this.logLevel, logLevel) >= 0;\n    }\n    logMessages(args, logLevel) {\n        if (this.canLog(logLevel)) {\n            const logFn = logFunctions[logLevel];\n            if (logFn) {\n                logFn(`[vesdk-${version}]`, ...args);\n            }\n        }\n    }\n    log(...args) {\n        this.info(args);\n    }\n    info(...args) {\n        this.logMessages(args, LogLevel.INFO);\n    }\n    debug(...args) {\n        this.logMessages(args, LogLevel.DEBUG);\n    }\n    trace(...args) {\n        this.logMessages(args, LogLevel.TRACE);\n    }\n    error(...args) {\n        this.logMessages(args, LogLevel.ERROR);\n    }\n    warn(...args) {\n        this.logMessages(args, LogLevel.WARN);\n    }\n}\nconst logger = new Logger();\nexport { LogLevel, logger, setGlobalLogLevelOverride };\n//# sourceMappingURL=logger.js.map","import { ERROR_MESSAGE } from '../errors';\nimport { HostEvent } from '../types';\nimport { logger } from '../utils/logger';\nimport { handlePresentEvent } from '../utils';\nimport { getEmbedConfig } from '../embed/embedConfig';\n/**\n * Reloads the ThoughtSpot iframe.\n * @param iFrame\n */\nexport const reload = (iFrame) => {\n    const src = iFrame.src;\n    iFrame.src = '';\n    setTimeout(() => {\n        iFrame.src = src;\n    }, 100);\n};\n/**\n * Post iframe message.\n * @param iFrame\n * @param message\n * @param message.type\n * @param message.data\n * @param message.context\n * @param thoughtSpotHost\n * @param channel\n */\nfunction postIframeMessage(iFrame, message, thoughtSpotHost, channel) {\n    var _a;\n    return (_a = iFrame.contentWindow) === null || _a === void 0 ? void 0 : _a.postMessage(message, thoughtSpotHost, [channel === null || channel === void 0 ? void 0 : channel.port2]);\n}\nexport const TRIGGER_TIMEOUT = 30000;\n/**\n *\n * @param iFrame\n * @param messageType\n * @param thoughtSpotHost\n * @param data\n * @param context\n */\nexport function processTrigger(iFrame, messageType, thoughtSpotHost, data, context) {\n    return new Promise((res, rej) => {\n        var _a;\n        if (messageType === HostEvent.Reload) {\n            reload(iFrame);\n            return res(null);\n        }\n        if (messageType === HostEvent.Present) {\n            const embedConfig = getEmbedConfig();\n            const disableFullscreenPresentation = (_a = embedConfig === null || embedConfig === void 0 ? void 0 : embedConfig.disableFullscreenPresentation) !== null && _a !== void 0 ? _a : true;\n            if (!disableFullscreenPresentation) {\n                handlePresentEvent(iFrame);\n            }\n            else {\n                logger.warn('Fullscreen presentation mode is disabled. Set disableFullscreenPresentation: false to enable this feature.');\n            }\n        }\n        const channel = new MessageChannel();\n        channel.port1.onmessage = ({ data: responseData }) => {\n            var _a;\n            channel.port1.close();\n            const error = (responseData === null || responseData === void 0 ? void 0 : responseData.error) || ((_a = responseData === null || responseData === void 0 ? void 0 : responseData.data) === null || _a === void 0 ? void 0 : _a.error);\n            if (error) {\n                rej(error);\n            }\n            else {\n                res(responseData);\n            }\n        };\n        // Close the messageChannel and resolve the promise if timeout.\n        setTimeout(() => {\n            channel.port1.close();\n            res(new Error(ERROR_MESSAGE.TRIGGER_TIMED_OUT));\n        }, TRIGGER_TIMEOUT);\n        return postIframeMessage(iFrame, { type: messageType, data, context }, thoughtSpotHost, channel);\n    });\n}\n//# sourceMappingURL=processTrigger.js.map","import { resetCachedAuthToken } from '../authToken';\nimport { resetCachedPreauthInfo, resetCachedSessionInfo } from './sessionInfoService';\n/**\n * This function resets all the services that are cached in the SDK.\n * This is to be called when the user logs out of the application and also\n * when init is called again.\n * @version SDK: 1.30.2 | ThoughtSpot: *\n */\nexport function resetAllCachedServices() {\n    resetCachedAuthToken();\n    resetCachedSessionInfo();\n    resetCachedPreauthInfo();\n}\n//# sourceMappingURL=resetServices.js.map","import pkg from '../../package.json';\nexport const { version } = pkg;\n//# sourceMappingURL=sdk-version.js.map","import { getEmbedConfig } from '../embed/embedConfig';\nimport { fetchSessionInfoService, fetchPreauthInfoService } from './authService';\nlet sessionInfo = null;\nlet preauthInfo = null;\n/**\n * Processes the session info response and returns the session info object.\n *  @param preauthInfoResp {any} Response from the session info API.\n *  @returns {PreauthInfo} The session info object.\n *  @example ```js\n *  const preauthInfoResp = await fetch(sessionInfoPath);\n *  const sessionInfo = await formatPreauthInfo(preauthInfoResp);\n *  console.log(sessionInfo);\n *  ```\n * @version SDK: 1.28.3 | ThoughtSpot: *\n */\nexport const formatPreauthInfo = async (preauthInfoResp) => {\n    var _a;\n    try {\n        // Convert Headers to a plain object\n        const headers = {};\n        (_a = preauthInfoResp === null || preauthInfoResp === void 0 ? void 0 : preauthInfoResp.headers) === null || _a === void 0 ? void 0 : _a.forEach((value, key) => {\n            headers[key] = value;\n        });\n        const data = await preauthInfoResp.json();\n        return {\n            ...data,\n            status: 200,\n            headers,\n        };\n    }\n    catch (error) {\n        return null;\n    }\n};\n/**\n * Returns the session info object and caches it for future use.\n * Once fetched the session info object is cached and returned from the cache on\n * subsequent calls.\n * @example ```js\n * const preauthInfo = await getPreauthInfo();\n * console.log(preauthInfo);\n * ```\n * @version SDK: 1.28.3 | ThoughtSpot: *\n * @returns {Promise<SessionInfo>} The session info object.\n */\nexport async function getPreauthInfo(allowCache = true) {\n    if (!allowCache || !preauthInfo) {\n        try {\n            const host = getEmbedConfig().thoughtSpotHost;\n            const sessionResponse = await fetchPreauthInfoService(host);\n            const processedPreauthInfo = await formatPreauthInfo(sessionResponse);\n            preauthInfo = processedPreauthInfo;\n        }\n        catch (error) {\n            return null;\n        }\n    }\n    return preauthInfo;\n}\n/**\n * Returns the cached session info object and caches it for future use.\n * Once fetched the session info object is cached and returned from the cache on\n * subsequent calls.\n * This cache is cleared when inti is called OR resetCachedSessionInfo is called.\n * @example ```js\n * const sessionInfo = await getSessionInfo();\n * console.log(sessionInfo);\n * ```\n * @version SDK: 1.28.3 | ThoughtSpot: *\n * @returns {Promise<SessionInfo>} The session info object.\n */\nexport async function getSessionInfo() {\n    if (!sessionInfo) {\n        const host = getEmbedConfig().thoughtSpotHost;\n        const sessionResponse = await fetchSessionInfoService(host);\n        const processedSessionInfo = getSessionDetails(sessionResponse);\n        sessionInfo = processedSessionInfo;\n    }\n    return sessionInfo;\n}\n/**\n * Returns the cached session info object. If the client is not authenticated the\n * function will return null.\n * @example ```js\n * const sessionInfo = getCachedSessionInfo();\n * if (sessionInfo) {\n *   console.log(sessionInfo);\n * } else {\n *   console.log('Not authenticated');\n * }\n * ```\n * @returns {SessionInfo | null} The session info object.\n * @version SDK: 1.28.3 | ThoughtSpot: *\n */\nexport function getCachedSessionInfo() {\n    return sessionInfo;\n}\n/**\n * Processes the session info response and returns the session info object.\n *  @param sessionInfoResp {any} Response from the session info API.\n *  @returns {SessionInfo} The session info object.\n *  @example ```js\n *  const sessionInfoResp = await fetch(sessionInfoPath);\n *  const sessionInfo = getSessionDetails(sessionInfoResp);\n *  console.log(sessionInfo);\n *  ```\n * @version SDK: 1.28.3 | ThoughtSpot: *\n */\nexport const getSessionDetails = (sessionInfoResp) => {\n    const devMixpanelToken = sessionInfoResp.configInfo.mixpanelConfig.devSdkKey;\n    const prodMixpanelToken = sessionInfoResp.configInfo.mixpanelConfig.prodSdkKey;\n    const mixpanelToken = sessionInfoResp.configInfo.mixpanelConfig.production\n        ? prodMixpanelToken\n        : devMixpanelToken;\n    return {\n        userGUID: sessionInfoResp.userGUID,\n        mixpanelToken,\n        isPublicUser: sessionInfoResp.configInfo.isPublicUser,\n        releaseVersion: sessionInfoResp.releaseVersion,\n        clusterId: sessionInfoResp.configInfo.selfClusterId,\n        clusterName: sessionInfoResp.configInfo.selfClusterName,\n        ...sessionInfoResp,\n    };\n};\n/**\n * Resets the cached session info object and forces a new fetch on the next call.\n * @example ```js\n * resetCachedSessionInfo();\n * const sessionInfo = await getSessionInfo();\n * console.log(sessionInfo);\n * ```\n * @version SDK: 1.28.3 | ThoughtSpot: *\n * @returns {void}\n */\nexport function resetCachedSessionInfo() {\n    sessionInfo = null;\n}\n/**\n * Resets the cached preauth info object and forces a new fetch on the next call.\n * @example ```js\n * resetCachedPreauthInfo();\n * const preauthInfo = await getPreauthInfo();\n * console.log(preauthInfo);\n * ```\n * @version SDK: 1.28.3 | ThoughtSpot: *\n * @returns {void}\n */\nexport function resetCachedPreauthInfo() {\n    preauthInfo = null;\n}\n//# sourceMappingURL=sessionInfoService.js.map","if (typeof Promise.withResolvers === 'undefined') {\n    Promise.withResolvers = () => {\n        let resolve;\n        let reject;\n        const promise = new Promise((res, rej) => {\n            resolve = res;\n            reject = rej;\n        });\n        return { promise, resolve, reject };\n    };\n}\n//# sourceMappingURL=with-resolvers-polyfill.js.map","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n    return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar bearing_1 = __importDefault(require(\"@turf/bearing\"));\nvar destination_1 = __importDefault(require(\"@turf/destination\"));\nvar distance_1 = __importDefault(require(\"@turf/distance\"));\nvar helpers_1 = require(\"@turf/helpers\");\nvar invariant_1 = require(\"@turf/invariant\");\n/**\n * Takes a {@link LineString} and returns a {@link Point} at a specified distance along the line.\n *\n * @name along\n * @param {Feature<LineString>} line input line\n * @param {number} distance distance along the line\n * @param {Object} [options] Optional parameters\n * @param {string} [options.units=\"kilometers\"] can be degrees, radians, miles, or kilometers\n * @returns {Feature<Point>} Point `distance` `units` along the line\n * @example\n * var line = turf.lineString([[-83, 30], [-84, 36], [-78, 41]]);\n * var options = {units: 'miles'};\n *\n * var along = turf.along(line, 200, options);\n *\n * //addToMap\n * var addToMap = [along, line]\n */\nfunction along(line, distance, options) {\n    if (options === void 0) { options = {}; }\n    // Get Coords\n    var geom = invariant_1.getGeom(line);\n    var coords = geom.coordinates;\n    var travelled = 0;\n    for (var i = 0; i < coords.length; i++) {\n        if (distance >= travelled && i === coords.length - 1) {\n            break;\n        }\n        else if (travelled >= distance) {\n            var overshot = distance - travelled;\n            if (!overshot) {\n                return helpers_1.point(coords[i]);\n            }\n            else {\n                var direction = bearing_1.default(coords[i], coords[i - 1]) - 180;\n                var interpolated = destination_1.default(coords[i], overshot, direction, options);\n                return interpolated;\n            }\n        }\n        else {\n            travelled += distance_1.default(coords[i], coords[i + 1], options);\n        }\n    }\n    return helpers_1.point(coords[coords.length - 1]);\n}\nexports.default = along;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * @module helpers\n */\n/**\n * Earth Radius used with the Harvesine formula and approximates using a spherical (non-ellipsoid) Earth.\n *\n * @memberof helpers\n * @type {number}\n */\nexports.earthRadius = 6371008.8;\n/**\n * Unit of measurement factors using a spherical (non-ellipsoid) earth radius.\n *\n * @memberof helpers\n * @type {Object}\n */\nexports.factors = {\n    centimeters: exports.earthRadius * 100,\n    centimetres: exports.earthRadius * 100,\n    degrees: exports.earthRadius / 111325,\n    feet: exports.earthRadius * 3.28084,\n    inches: exports.earthRadius * 39.37,\n    kilometers: exports.earthRadius / 1000,\n    kilometres: exports.earthRadius / 1000,\n    meters: exports.earthRadius,\n    metres: exports.earthRadius,\n    miles: exports.earthRadius / 1609.344,\n    millimeters: exports.earthRadius * 1000,\n    millimetres: exports.earthRadius * 1000,\n    nauticalmiles: exports.earthRadius / 1852,\n    radians: 1,\n    yards: exports.earthRadius * 1.0936,\n};\n/**\n * Units of measurement factors based on 1 meter.\n *\n * @memberof helpers\n * @type {Object}\n */\nexports.unitsFactors = {\n    centimeters: 100,\n    centimetres: 100,\n    degrees: 1 / 111325,\n    feet: 3.28084,\n    inches: 39.37,\n    kilometers: 1 / 1000,\n    kilometres: 1 / 1000,\n    meters: 1,\n    metres: 1,\n    miles: 1 / 1609.344,\n    millimeters: 1000,\n    millimetres: 1000,\n    nauticalmiles: 1 / 1852,\n    radians: 1 / exports.earthRadius,\n    yards: 1.0936133,\n};\n/**\n * Area of measurement factors based on 1 square meter.\n *\n * @memberof helpers\n * @type {Object}\n */\nexports.areaFactors = {\n    acres: 0.000247105,\n    centimeters: 10000,\n    centimetres: 10000,\n    feet: 10.763910417,\n    hectares: 0.0001,\n    inches: 1550.003100006,\n    kilometers: 0.000001,\n    kilometres: 0.000001,\n    meters: 1,\n    metres: 1,\n    miles: 3.86e-7,\n    millimeters: 1000000,\n    millimetres: 1000000,\n    yards: 1.195990046,\n};\n/**\n * Wraps a GeoJSON {@link Geometry} in a GeoJSON {@link Feature}.\n *\n * @name feature\n * @param {Geometry} geometry input geometry\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} a GeoJSON Feature\n * @example\n * var geometry = {\n *   \"type\": \"Point\",\n *   \"coordinates\": [110, 50]\n * };\n *\n * var feature = turf.feature(geometry);\n *\n * //=feature\n */\nfunction feature(geom, properties, options) {\n    if (options === void 0) { options = {}; }\n    var feat = { type: \"Feature\" };\n    if (options.id === 0 || options.id) {\n        feat.id = options.id;\n    }\n    if (options.bbox) {\n        feat.bbox = options.bbox;\n    }\n    feat.properties = properties || {};\n    feat.geometry = geom;\n    return feat;\n}\nexports.feature = feature;\n/**\n * Creates a GeoJSON {@link Geometry} from a Geometry string type & coordinates.\n * For GeometryCollection type use `helpers.geometryCollection`\n *\n * @name geometry\n * @param {string} type Geometry Type\n * @param {Array<any>} coordinates Coordinates\n * @param {Object} [options={}] Optional Parameters\n * @returns {Geometry} a GeoJSON Geometry\n * @example\n * var type = \"Point\";\n * var coordinates = [110, 50];\n * var geometry = turf.geometry(type, coordinates);\n * // => geometry\n */\nfunction geometry(type, coordinates, _options) {\n    if (_options === void 0) { _options = {}; }\n    switch (type) {\n        case \"Point\":\n            return point(coordinates).geometry;\n        case \"LineString\":\n            return lineString(coordinates).geometry;\n        case \"Polygon\":\n            return polygon(coordinates).geometry;\n        case \"MultiPoint\":\n            return multiPoint(coordinates).geometry;\n        case \"MultiLineString\":\n            return multiLineString(coordinates).geometry;\n        case \"MultiPolygon\":\n            return multiPolygon(coordinates).geometry;\n        default:\n            throw new Error(type + \" is invalid\");\n    }\n}\nexports.geometry = geometry;\n/**\n * Creates a {@link Point} {@link Feature} from a Position.\n *\n * @name point\n * @param {Array<number>} coordinates longitude, latitude position (each in decimal degrees)\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<Point>} a Point feature\n * @example\n * var point = turf.point([-75.343, 39.984]);\n *\n * //=point\n */\nfunction point(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    if (!coordinates) {\n        throw new Error(\"coordinates is required\");\n    }\n    if (!Array.isArray(coordinates)) {\n        throw new Error(\"coordinates must be an Array\");\n    }\n    if (coordinates.length < 2) {\n        throw new Error(\"coordinates must be at least 2 numbers long\");\n    }\n    if (!isNumber(coordinates[0]) || !isNumber(coordinates[1])) {\n        throw new Error(\"coordinates must contain numbers\");\n    }\n    var geom = {\n        type: \"Point\",\n        coordinates: coordinates,\n    };\n    return feature(geom, properties, options);\n}\nexports.point = point;\n/**\n * Creates a {@link Point} {@link FeatureCollection} from an Array of Point coordinates.\n *\n * @name points\n * @param {Array<Array<number>>} coordinates an array of Points\n * @param {Object} [properties={}] Translate these properties to each Feature\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north]\n * associated with the FeatureCollection\n * @param {string|number} [options.id] Identifier associated with the FeatureCollection\n * @returns {FeatureCollection<Point>} Point Feature\n * @example\n * var points = turf.points([\n *   [-75, 39],\n *   [-80, 45],\n *   [-78, 50]\n * ]);\n *\n * //=points\n */\nfunction points(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    return featureCollection(coordinates.map(function (coords) {\n        return point(coords, properties);\n    }), options);\n}\nexports.points = points;\n/**\n * Creates a {@link Polygon} {@link Feature} from an Array of LinearRings.\n *\n * @name polygon\n * @param {Array<Array<Array<number>>>} coordinates an array of LinearRings\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<Polygon>} Polygon Feature\n * @example\n * var polygon = turf.polygon([[[-5, 52], [-4, 56], [-2, 51], [-7, 54], [-5, 52]]], { name: 'poly1' });\n *\n * //=polygon\n */\nfunction polygon(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    for (var _i = 0, coordinates_1 = coordinates; _i < coordinates_1.length; _i++) {\n        var ring = coordinates_1[_i];\n        if (ring.length < 4) {\n            throw new Error(\"Each LinearRing of a Polygon must have 4 or more Positions.\");\n        }\n        for (var j = 0; j < ring[ring.length - 1].length; j++) {\n            // Check if first point of Polygon contains two numbers\n            if (ring[ring.length - 1][j] !== ring[0][j]) {\n                throw new Error(\"First and last Position are not equivalent.\");\n            }\n        }\n    }\n    var geom = {\n        type: \"Polygon\",\n        coordinates: coordinates,\n    };\n    return feature(geom, properties, options);\n}\nexports.polygon = polygon;\n/**\n * Creates a {@link Polygon} {@link FeatureCollection} from an Array of Polygon coordinates.\n *\n * @name polygons\n * @param {Array<Array<Array<Array<number>>>>} coordinates an array of Polygon coordinates\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the FeatureCollection\n * @returns {FeatureCollection<Polygon>} Polygon FeatureCollection\n * @example\n * var polygons = turf.polygons([\n *   [[[-5, 52], [-4, 56], [-2, 51], [-7, 54], [-5, 52]]],\n *   [[[-15, 42], [-14, 46], [-12, 41], [-17, 44], [-15, 42]]],\n * ]);\n *\n * //=polygons\n */\nfunction polygons(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    return featureCollection(coordinates.map(function (coords) {\n        return polygon(coords, properties);\n    }), options);\n}\nexports.polygons = polygons;\n/**\n * Creates a {@link LineString} {@link Feature} from an Array of Positions.\n *\n * @name lineString\n * @param {Array<Array<number>>} coordinates an array of Positions\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<LineString>} LineString Feature\n * @example\n * var linestring1 = turf.lineString([[-24, 63], [-23, 60], [-25, 65], [-20, 69]], {name: 'line 1'});\n * var linestring2 = turf.lineString([[-14, 43], [-13, 40], [-15, 45], [-10, 49]], {name: 'line 2'});\n *\n * //=linestring1\n * //=linestring2\n */\nfunction lineString(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    if (coordinates.length < 2) {\n        throw new Error(\"coordinates must be an array of two or more positions\");\n    }\n    var geom = {\n        type: \"LineString\",\n        coordinates: coordinates,\n    };\n    return feature(geom, properties, options);\n}\nexports.lineString = lineString;\n/**\n * Creates a {@link LineString} {@link FeatureCollection} from an Array of LineString coordinates.\n *\n * @name lineStrings\n * @param {Array<Array<Array<number>>>} coordinates an array of LinearRings\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north]\n * associated with the FeatureCollection\n * @param {string|number} [options.id] Identifier associated with the FeatureCollection\n * @returns {FeatureCollection<LineString>} LineString FeatureCollection\n * @example\n * var linestrings = turf.lineStrings([\n *   [[-24, 63], [-23, 60], [-25, 65], [-20, 69]],\n *   [[-14, 43], [-13, 40], [-15, 45], [-10, 49]]\n * ]);\n *\n * //=linestrings\n */\nfunction lineStrings(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    return featureCollection(coordinates.map(function (coords) {\n        return lineString(coords, properties);\n    }), options);\n}\nexports.lineStrings = lineStrings;\n/**\n * Takes one or more {@link Feature|Features} and creates a {@link FeatureCollection}.\n *\n * @name featureCollection\n * @param {Feature[]} features input features\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {FeatureCollection} FeatureCollection of Features\n * @example\n * var locationA = turf.point([-75.343, 39.984], {name: 'Location A'});\n * var locationB = turf.point([-75.833, 39.284], {name: 'Location B'});\n * var locationC = turf.point([-75.534, 39.123], {name: 'Location C'});\n *\n * var collection = turf.featureCollection([\n *   locationA,\n *   locationB,\n *   locationC\n * ]);\n *\n * //=collection\n */\nfunction featureCollection(features, options) {\n    if (options === void 0) { options = {}; }\n    var fc = { type: \"FeatureCollection\" };\n    if (options.id) {\n        fc.id = options.id;\n    }\n    if (options.bbox) {\n        fc.bbox = options.bbox;\n    }\n    fc.features = features;\n    return fc;\n}\nexports.featureCollection = featureCollection;\n/**\n * Creates a {@link Feature<MultiLineString>} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name multiLineString\n * @param {Array<Array<Array<number>>>} coordinates an array of LineStrings\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<MultiLineString>} a MultiLineString feature\n * @throws {Error} if no coordinates are passed\n * @example\n * var multiLine = turf.multiLineString([[[0,0],[10,10]]]);\n *\n * //=multiLine\n */\nfunction multiLineString(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    var geom = {\n        type: \"MultiLineString\",\n        coordinates: coordinates,\n    };\n    return feature(geom, properties, options);\n}\nexports.multiLineString = multiLineString;\n/**\n * Creates a {@link Feature<MultiPoint>} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name multiPoint\n * @param {Array<Array<number>>} coordinates an array of Positions\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<MultiPoint>} a MultiPoint feature\n * @throws {Error} if no coordinates are passed\n * @example\n * var multiPt = turf.multiPoint([[0,0],[10,10]]);\n *\n * //=multiPt\n */\nfunction multiPoint(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    var geom = {\n        type: \"MultiPoint\",\n        coordinates: coordinates,\n    };\n    return feature(geom, properties, options);\n}\nexports.multiPoint = multiPoint;\n/**\n * Creates a {@link Feature<MultiPolygon>} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name multiPolygon\n * @param {Array<Array<Array<Array<number>>>>} coordinates an array of Polygons\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<MultiPolygon>} a multipolygon feature\n * @throws {Error} if no coordinates are passed\n * @example\n * var multiPoly = turf.multiPolygon([[[[0,0],[0,10],[10,10],[10,0],[0,0]]]]);\n *\n * //=multiPoly\n *\n */\nfunction multiPolygon(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    var geom = {\n        type: \"MultiPolygon\",\n        coordinates: coordinates,\n    };\n    return feature(geom, properties, options);\n}\nexports.multiPolygon = multiPolygon;\n/**\n * Creates a {@link Feature<GeometryCollection>} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name geometryCollection\n * @param {Array<Geometry>} geometries an array of GeoJSON Geometries\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<GeometryCollection>} a GeoJSON GeometryCollection Feature\n * @example\n * var pt = turf.geometry(\"Point\", [100, 0]);\n * var line = turf.geometry(\"LineString\", [[101, 0], [102, 1]]);\n * var collection = turf.geometryCollection([pt, line]);\n *\n * // => collection\n */\nfunction geometryCollection(geometries, properties, options) {\n    if (options === void 0) { options = {}; }\n    var geom = {\n        type: \"GeometryCollection\",\n        geometries: geometries,\n    };\n    return feature(geom, properties, options);\n}\nexports.geometryCollection = geometryCollection;\n/**\n * Round number to precision\n *\n * @param {number} num Number\n * @param {number} [precision=0] Precision\n * @returns {number} rounded number\n * @example\n * turf.round(120.4321)\n * //=120\n *\n * turf.round(120.4321, 2)\n * //=120.43\n */\nfunction round(num, precision) {\n    if (precision === void 0) { precision = 0; }\n    if (precision && !(precision >= 0)) {\n        throw new Error(\"precision must be a positive number\");\n    }\n    var multiplier = Math.pow(10, precision || 0);\n    return Math.round(num * multiplier) / multiplier;\n}\nexports.round = round;\n/**\n * Convert a distance measurement (assuming a spherical Earth) from radians to a more friendly unit.\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet\n *\n * @name radiansToLength\n * @param {number} radians in radians across the sphere\n * @param {string} [units=\"kilometers\"] can be degrees, radians, miles, inches, yards, metres,\n * meters, kilometres, kilometers.\n * @returns {number} distance\n */\nfunction radiansToLength(radians, units) {\n    if (units === void 0) { units = \"kilometers\"; }\n    var factor = exports.factors[units];\n    if (!factor) {\n        throw new Error(units + \" units is invalid\");\n    }\n    return radians * factor;\n}\nexports.radiansToLength = radiansToLength;\n/**\n * Convert a distance measurement (assuming a spherical Earth) from a real-world unit into radians\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet\n *\n * @name lengthToRadians\n * @param {number} distance in real units\n * @param {string} [units=\"kilometers\"] can be degrees, radians, miles, inches, yards, metres,\n * meters, kilometres, kilometers.\n * @returns {number} radians\n */\nfunction lengthToRadians(distance, units) {\n    if (units === void 0) { units = \"kilometers\"; }\n    var factor = exports.factors[units];\n    if (!factor) {\n        throw new Error(units + \" units is invalid\");\n    }\n    return distance / factor;\n}\nexports.lengthToRadians = lengthToRadians;\n/**\n * Convert a distance measurement (assuming a spherical Earth) from a real-world unit into degrees\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, centimeters, kilometres, feet\n *\n * @name lengthToDegrees\n * @param {number} distance in real units\n * @param {string} [units=\"kilometers\"] can be degrees, radians, miles, inches, yards, metres,\n * meters, kilometres, kilometers.\n * @returns {number} degrees\n */\nfunction lengthToDegrees(distance, units) {\n    return radiansToDegrees(lengthToRadians(distance, units));\n}\nexports.lengthToDegrees = lengthToDegrees;\n/**\n * Converts any bearing angle from the north line direction (positive clockwise)\n * and returns an angle between 0-360 degrees (positive clockwise), 0 being the north line\n *\n * @name bearingToAzimuth\n * @param {number} bearing angle, between -180 and +180 degrees\n * @returns {number} angle between 0 and 360 degrees\n */\nfunction bearingToAzimuth(bearing) {\n    var angle = bearing % 360;\n    if (angle < 0) {\n        angle += 360;\n    }\n    return angle;\n}\nexports.bearingToAzimuth = bearingToAzimuth;\n/**\n * Converts an angle in radians to degrees\n *\n * @name radiansToDegrees\n * @param {number} radians angle in radians\n * @returns {number} degrees between 0 and 360 degrees\n */\nfunction radiansToDegrees(radians) {\n    var degrees = radians % (2 * Math.PI);\n    return (degrees * 180) / Math.PI;\n}\nexports.radiansToDegrees = radiansToDegrees;\n/**\n * Converts an angle in degrees to radians\n *\n * @name degreesToRadians\n * @param {number} degrees angle between 0 and 360 degrees\n * @returns {number} angle in radians\n */\nfunction degreesToRadians(degrees) {\n    var radians = degrees % 360;\n    return (radians * Math.PI) / 180;\n}\nexports.degreesToRadians = degreesToRadians;\n/**\n * Converts a length to the requested unit.\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet\n *\n * @param {number} length to be converted\n * @param {Units} [originalUnit=\"kilometers\"] of the length\n * @param {Units} [finalUnit=\"kilometers\"] returned unit\n * @returns {number} the converted length\n */\nfunction convertLength(length, originalUnit, finalUnit) {\n    if (originalUnit === void 0) { originalUnit = \"kilometers\"; }\n    if (finalUnit === void 0) { finalUnit = \"kilometers\"; }\n    if (!(length >= 0)) {\n        throw new Error(\"length must be a positive number\");\n    }\n    return radiansToLength(lengthToRadians(length, originalUnit), finalUnit);\n}\nexports.convertLength = convertLength;\n/**\n * Converts a area to the requested unit.\n * Valid units: kilometers, kilometres, meters, metres, centimetres, millimeters, acres, miles, yards, feet, inches, hectares\n * @param {number} area to be converted\n * @param {Units} [originalUnit=\"meters\"] of the distance\n * @param {Units} [finalUnit=\"kilometers\"] returned unit\n * @returns {number} the converted area\n */\nfunction convertArea(area, originalUnit, finalUnit) {\n    if (originalUnit === void 0) { originalUnit = \"meters\"; }\n    if (finalUnit === void 0) { finalUnit = \"kilometers\"; }\n    if (!(area >= 0)) {\n        throw new Error(\"area must be a positive number\");\n    }\n    var startFactor = exports.areaFactors[originalUnit];\n    if (!startFactor) {\n        throw new Error(\"invalid original units\");\n    }\n    var finalFactor = exports.areaFactors[finalUnit];\n    if (!finalFactor) {\n        throw new Error(\"invalid final units\");\n    }\n    return (area / startFactor) * finalFactor;\n}\nexports.convertArea = convertArea;\n/**\n * isNumber\n *\n * @param {*} num Number to validate\n * @returns {boolean} true/false\n * @example\n * turf.isNumber(123)\n * //=true\n * turf.isNumber('foo')\n * //=false\n */\nfunction isNumber(num) {\n    return !isNaN(num) && num !== null && !Array.isArray(num);\n}\nexports.isNumber = isNumber;\n/**\n * isObject\n *\n * @param {*} input variable to validate\n * @returns {boolean} true/false\n * @example\n * turf.isObject({elevation: 10})\n * //=true\n * turf.isObject('foo')\n * //=false\n */\nfunction isObject(input) {\n    return !!input && input.constructor === Object;\n}\nexports.isObject = isObject;\n/**\n * Validate BBox\n *\n * @private\n * @param {Array<number>} bbox BBox to validate\n * @returns {void}\n * @throws Error if BBox is not valid\n * @example\n * validateBBox([-180, -40, 110, 50])\n * //=OK\n * validateBBox([-180, -40])\n * //=Error\n * validateBBox('Foo')\n * //=Error\n * validateBBox(5)\n * //=Error\n * validateBBox(null)\n * //=Error\n * validateBBox(undefined)\n * //=Error\n */\nfunction validateBBox(bbox) {\n    if (!bbox) {\n        throw new Error(\"bbox is required\");\n    }\n    if (!Array.isArray(bbox)) {\n        throw new Error(\"bbox must be an Array\");\n    }\n    if (bbox.length !== 4 && bbox.length !== 6) {\n        throw new Error(\"bbox must be an Array of 4 or 6 numbers\");\n    }\n    bbox.forEach(function (num) {\n        if (!isNumber(num)) {\n            throw new Error(\"bbox must only contain numbers\");\n        }\n    });\n}\nexports.validateBBox = validateBBox;\n/**\n * Validate Id\n *\n * @private\n * @param {string|number} id Id to validate\n * @returns {void}\n * @throws Error if Id is not valid\n * @example\n * validateId([-180, -40, 110, 50])\n * //=Error\n * validateId([-180, -40])\n * //=Error\n * validateId('Foo')\n * //=OK\n * validateId(5)\n * //=OK\n * validateId(null)\n * //=Error\n * validateId(undefined)\n * //=Error\n */\nfunction validateId(id) {\n    if (!id) {\n        throw new Error(\"id is required\");\n    }\n    if ([\"string\", \"number\"].indexOf(typeof id) === -1) {\n        throw new Error(\"id must be a number or a string\");\n    }\n}\nexports.validateId = validateId;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar helpers_1 = require(\"@turf/helpers\");\n/**\n * Unwrap a coordinate from a Point Feature, Geometry or a single coordinate.\n *\n * @name getCoord\n * @param {Array<number>|Geometry<Point>|Feature<Point>} coord GeoJSON Point or an Array of numbers\n * @returns {Array<number>} coordinates\n * @example\n * var pt = turf.point([10, 10]);\n *\n * var coord = turf.getCoord(pt);\n * //= [10, 10]\n */\nfunction getCoord(coord) {\n    if (!coord) {\n        throw new Error(\"coord is required\");\n    }\n    if (!Array.isArray(coord)) {\n        if (coord.type === \"Feature\" &&\n            coord.geometry !== null &&\n            coord.geometry.type === \"Point\") {\n            return coord.geometry.coordinates;\n        }\n        if (coord.type === \"Point\") {\n            return coord.coordinates;\n        }\n    }\n    if (Array.isArray(coord) &&\n        coord.length >= 2 &&\n        !Array.isArray(coord[0]) &&\n        !Array.isArray(coord[1])) {\n        return coord;\n    }\n    throw new Error(\"coord must be GeoJSON Point or an Array of numbers\");\n}\nexports.getCoord = getCoord;\n/**\n * Unwrap coordinates from a Feature, Geometry Object or an Array\n *\n * @name getCoords\n * @param {Array<any>|Geometry|Feature} coords Feature, Geometry Object or an Array\n * @returns {Array<any>} coordinates\n * @example\n * var poly = turf.polygon([[[119.32, -8.7], [119.55, -8.69], [119.51, -8.54], [119.32, -8.7]]]);\n *\n * var coords = turf.getCoords(poly);\n * //= [[[119.32, -8.7], [119.55, -8.69], [119.51, -8.54], [119.32, -8.7]]]\n */\nfunction getCoords(coords) {\n    if (Array.isArray(coords)) {\n        return coords;\n    }\n    // Feature\n    if (coords.type === \"Feature\") {\n        if (coords.geometry !== null) {\n            return coords.geometry.coordinates;\n        }\n    }\n    else {\n        // Geometry\n        if (coords.coordinates) {\n            return coords.coordinates;\n        }\n    }\n    throw new Error(\"coords must be GeoJSON Feature, Geometry Object or an Array\");\n}\nexports.getCoords = getCoords;\n/**\n * Checks if coordinates contains a number\n *\n * @name containsNumber\n * @param {Array<any>} coordinates GeoJSON Coordinates\n * @returns {boolean} true if Array contains a number\n */\nfunction containsNumber(coordinates) {\n    if (coordinates.length > 1 &&\n        helpers_1.isNumber(coordinates[0]) &&\n        helpers_1.isNumber(coordinates[1])) {\n        return true;\n    }\n    if (Array.isArray(coordinates[0]) && coordinates[0].length) {\n        return containsNumber(coordinates[0]);\n    }\n    throw new Error(\"coordinates must only contain numbers\");\n}\nexports.containsNumber = containsNumber;\n/**\n * Enforce expectations about types of GeoJSON objects for Turf.\n *\n * @name geojsonType\n * @param {GeoJSON} value any GeoJSON object\n * @param {string} type expected GeoJSON type\n * @param {string} name name of calling function\n * @throws {Error} if value is not the expected type.\n */\nfunction geojsonType(value, type, name) {\n    if (!type || !name) {\n        throw new Error(\"type and name required\");\n    }\n    if (!value || value.type !== type) {\n        throw new Error(\"Invalid input to \" +\n            name +\n            \": must be a \" +\n            type +\n            \", given \" +\n            value.type);\n    }\n}\nexports.geojsonType = geojsonType;\n/**\n * Enforce expectations about types of {@link Feature} inputs for Turf.\n * Internally this uses {@link geojsonType} to judge geometry types.\n *\n * @name featureOf\n * @param {Feature} feature a feature with an expected geometry type\n * @param {string} type expected GeoJSON type\n * @param {string} name name of calling function\n * @throws {Error} error if value is not the expected type.\n */\nfunction featureOf(feature, type, name) {\n    if (!feature) {\n        throw new Error(\"No feature passed\");\n    }\n    if (!name) {\n        throw new Error(\".featureOf() requires a name\");\n    }\n    if (!feature || feature.type !== \"Feature\" || !feature.geometry) {\n        throw new Error(\"Invalid input to \" + name + \", Feature with geometry required\");\n    }\n    if (!feature.geometry || feature.geometry.type !== type) {\n        throw new Error(\"Invalid input to \" +\n            name +\n            \": must be a \" +\n            type +\n            \", given \" +\n            feature.geometry.type);\n    }\n}\nexports.featureOf = featureOf;\n/**\n * Enforce expectations about types of {@link FeatureCollection} inputs for Turf.\n * Internally this uses {@link geojsonType} to judge geometry types.\n *\n * @name collectionOf\n * @param {FeatureCollection} featureCollection a FeatureCollection for which features will be judged\n * @param {string} type expected GeoJSON type\n * @param {string} name name of calling function\n * @throws {Error} if value is not the expected type.\n */\nfunction collectionOf(featureCollection, type, name) {\n    if (!featureCollection) {\n        throw new Error(\"No featureCollection passed\");\n    }\n    if (!name) {\n        throw new Error(\".collectionOf() requires a name\");\n    }\n    if (!featureCollection || featureCollection.type !== \"FeatureCollection\") {\n        throw new Error(\"Invalid input to \" + name + \", FeatureCollection required\");\n    }\n    for (var _i = 0, _a = featureCollection.features; _i < _a.length; _i++) {\n        var feature = _a[_i];\n        if (!feature || feature.type !== \"Feature\" || !feature.geometry) {\n            throw new Error(\"Invalid input to \" + name + \", Feature with geometry required\");\n        }\n        if (!feature.geometry || feature.geometry.type !== type) {\n            throw new Error(\"Invalid input to \" +\n                name +\n                \": must be a \" +\n                type +\n                \", given \" +\n                feature.geometry.type);\n        }\n    }\n}\nexports.collectionOf = collectionOf;\n/**\n * Get Geometry from Feature or Geometry Object\n *\n * @param {Feature|Geometry} geojson GeoJSON Feature or Geometry Object\n * @returns {Geometry|null} GeoJSON Geometry Object\n * @throws {Error} if geojson is not a Feature or Geometry Object\n * @example\n * var point = {\n *   \"type\": \"Feature\",\n *   \"properties\": {},\n *   \"geometry\": {\n *     \"type\": \"Point\",\n *     \"coordinates\": [110, 40]\n *   }\n * }\n * var geom = turf.getGeom(point)\n * //={\"type\": \"Point\", \"coordinates\": [110, 40]}\n */\nfunction getGeom(geojson) {\n    if (geojson.type === \"Feature\") {\n        return geojson.geometry;\n    }\n    return geojson;\n}\nexports.getGeom = getGeom;\n/**\n * Get GeoJSON object's type, Geometry type is prioritize.\n *\n * @param {GeoJSON} geojson GeoJSON object\n * @param {string} [name=\"geojson\"] name of the variable to display in error message (unused)\n * @returns {string} GeoJSON type\n * @example\n * var point = {\n *   \"type\": \"Feature\",\n *   \"properties\": {},\n *   \"geometry\": {\n *     \"type\": \"Point\",\n *     \"coordinates\": [110, 40]\n *   }\n * }\n * var geom = turf.getType(point)\n * //=\"Point\"\n */\nfunction getType(geojson, _name) {\n    if (geojson.type === \"FeatureCollection\") {\n        return \"FeatureCollection\";\n    }\n    if (geojson.type === \"GeometryCollection\") {\n        return \"GeometryCollection\";\n    }\n    if (geojson.type === \"Feature\" && geojson.geometry !== null) {\n        return geojson.geometry.type;\n    }\n    return geojson.type;\n}\nexports.getType = getType;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar meta_1 = require(\"@turf/meta\");\n// Note: change RADIUS => earthRadius\nvar RADIUS = 6378137;\n/**\n * Takes one or more features and returns their area in square meters.\n *\n * @name area\n * @param {GeoJSON} geojson input GeoJSON feature(s)\n * @returns {number} area in square meters\n * @example\n * var polygon = turf.polygon([[[125, -15], [113, -22], [154, -27], [144, -15], [125, -15]]]);\n *\n * var area = turf.area(polygon);\n *\n * //addToMap\n * var addToMap = [polygon]\n * polygon.properties.area = area\n */\nfunction area(geojson) {\n    return meta_1.geomReduce(geojson, function (value, geom) {\n        return value + calculateArea(geom);\n    }, 0);\n}\nexports.default = area;\n/**\n * Calculate Area\n *\n * @private\n * @param {Geometry} geom GeoJSON Geometries\n * @returns {number} area\n */\nfunction calculateArea(geom) {\n    var total = 0;\n    var i;\n    switch (geom.type) {\n        case \"Polygon\":\n            return polygonArea(geom.coordinates);\n        case \"MultiPolygon\":\n            for (i = 0; i < geom.coordinates.length; i++) {\n                total += polygonArea(geom.coordinates[i]);\n            }\n            return total;\n        case \"Point\":\n        case \"MultiPoint\":\n        case \"LineString\":\n        case \"MultiLineString\":\n            return 0;\n    }\n    return 0;\n}\nfunction polygonArea(coords) {\n    var total = 0;\n    if (coords && coords.length > 0) {\n        total += Math.abs(ringArea(coords[0]));\n        for (var i = 1; i < coords.length; i++) {\n            total -= Math.abs(ringArea(coords[i]));\n        }\n    }\n    return total;\n}\n/**\n * @private\n * Calculate the approximate area of the polygon were it projected onto the earth.\n * Note that this area will be positive if ring is oriented clockwise, otherwise it will be negative.\n *\n * Reference:\n * Robert. G. Chamberlain and William H. Duquette, \"Some Algorithms for Polygons on a Sphere\",\n * JPL Publication 07-03, Jet Propulsion\n * Laboratory, Pasadena, CA, June 2007 https://trs.jpl.nasa.gov/handle/2014/40409\n *\n * @param {Array<Array<number>>} coords Ring Coordinates\n * @returns {number} The approximate signed geodesic area of the polygon in square meters.\n */\nfunction ringArea(coords) {\n    var p1;\n    var p2;\n    var p3;\n    var lowerIndex;\n    var middleIndex;\n    var upperIndex;\n    var i;\n    var total = 0;\n    var coordsLength = coords.length;\n    if (coordsLength > 2) {\n        for (i = 0; i < coordsLength; i++) {\n            if (i === coordsLength - 2) {\n                // i = N-2\n                lowerIndex = coordsLength - 2;\n                middleIndex = coordsLength - 1;\n                upperIndex = 0;\n            }\n            else if (i === coordsLength - 1) {\n                // i = N-1\n                lowerIndex = coordsLength - 1;\n                middleIndex = 0;\n                upperIndex = 1;\n            }\n            else {\n                // i = 0 to N-3\n                lowerIndex = i;\n                middleIndex = i + 1;\n                upperIndex = i + 2;\n            }\n            p1 = coords[lowerIndex];\n            p2 = coords[middleIndex];\n            p3 = coords[upperIndex];\n            total += (rad(p3[0]) - rad(p1[0])) * Math.sin(rad(p2[1]));\n        }\n        total = (total * RADIUS * RADIUS) / 2;\n    }\n    return total;\n}\nfunction rad(num) {\n    return (num * Math.PI) / 180;\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * @module helpers\n */\n/**\n * Earth Radius used with the Harvesine formula and approximates using a spherical (non-ellipsoid) Earth.\n *\n * @memberof helpers\n * @type {number}\n */\nexports.earthRadius = 6371008.8;\n/**\n * Unit of measurement factors using a spherical (non-ellipsoid) earth radius.\n *\n * @memberof helpers\n * @type {Object}\n */\nexports.factors = {\n    centimeters: exports.earthRadius * 100,\n    centimetres: exports.earthRadius * 100,\n    degrees: exports.earthRadius / 111325,\n    feet: exports.earthRadius * 3.28084,\n    inches: exports.earthRadius * 39.37,\n    kilometers: exports.earthRadius / 1000,\n    kilometres: exports.earthRadius / 1000,\n    meters: exports.earthRadius,\n    metres: exports.earthRadius,\n    miles: exports.earthRadius / 1609.344,\n    millimeters: exports.earthRadius * 1000,\n    millimetres: exports.earthRadius * 1000,\n    nauticalmiles: exports.earthRadius / 1852,\n    radians: 1,\n    yards: exports.earthRadius * 1.0936,\n};\n/**\n * Units of measurement factors based on 1 meter.\n *\n * @memberof helpers\n * @type {Object}\n */\nexports.unitsFactors = {\n    centimeters: 100,\n    centimetres: 100,\n    degrees: 1 / 111325,\n    feet: 3.28084,\n    inches: 39.37,\n    kilometers: 1 / 1000,\n    kilometres: 1 / 1000,\n    meters: 1,\n    metres: 1,\n    miles: 1 / 1609.344,\n    millimeters: 1000,\n    millimetres: 1000,\n    nauticalmiles: 1 / 1852,\n    radians: 1 / exports.earthRadius,\n    yards: 1.0936133,\n};\n/**\n * Area of measurement factors based on 1 square meter.\n *\n * @memberof helpers\n * @type {Object}\n */\nexports.areaFactors = {\n    acres: 0.000247105,\n    centimeters: 10000,\n    centimetres: 10000,\n    feet: 10.763910417,\n    hectares: 0.0001,\n    inches: 1550.003100006,\n    kilometers: 0.000001,\n    kilometres: 0.000001,\n    meters: 1,\n    metres: 1,\n    miles: 3.86e-7,\n    millimeters: 1000000,\n    millimetres: 1000000,\n    yards: 1.195990046,\n};\n/**\n * Wraps a GeoJSON {@link Geometry} in a GeoJSON {@link Feature}.\n *\n * @name feature\n * @param {Geometry} geometry input geometry\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} a GeoJSON Feature\n * @example\n * var geometry = {\n *   \"type\": \"Point\",\n *   \"coordinates\": [110, 50]\n * };\n *\n * var feature = turf.feature(geometry);\n *\n * //=feature\n */\nfunction feature(geom, properties, options) {\n    if (options === void 0) { options = {}; }\n    var feat = { type: \"Feature\" };\n    if (options.id === 0 || options.id) {\n        feat.id = options.id;\n    }\n    if (options.bbox) {\n        feat.bbox = options.bbox;\n    }\n    feat.properties = properties || {};\n    feat.geometry = geom;\n    return feat;\n}\nexports.feature = feature;\n/**\n * Creates a GeoJSON {@link Geometry} from a Geometry string type & coordinates.\n * For GeometryCollection type use `helpers.geometryCollection`\n *\n * @name geometry\n * @param {string} type Geometry Type\n * @param {Array<any>} coordinates Coordinates\n * @param {Object} [options={}] Optional Parameters\n * @returns {Geometry} a GeoJSON Geometry\n * @example\n * var type = \"Point\";\n * var coordinates = [110, 50];\n * var geometry = turf.geometry(type, coordinates);\n * // => geometry\n */\nfunction geometry(type, coordinates, _options) {\n    if (_options === void 0) { _options = {}; }\n    switch (type) {\n        case \"Point\":\n            return point(coordinates).geometry;\n        case \"LineString\":\n            return lineString(coordinates).geometry;\n        case \"Polygon\":\n            return polygon(coordinates).geometry;\n        case \"MultiPoint\":\n            return multiPoint(coordinates).geometry;\n        case \"MultiLineString\":\n            return multiLineString(coordinates).geometry;\n        case \"MultiPolygon\":\n            return multiPolygon(coordinates).geometry;\n        default:\n            throw new Error(type + \" is invalid\");\n    }\n}\nexports.geometry = geometry;\n/**\n * Creates a {@link Point} {@link Feature} from a Position.\n *\n * @name point\n * @param {Array<number>} coordinates longitude, latitude position (each in decimal degrees)\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<Point>} a Point feature\n * @example\n * var point = turf.point([-75.343, 39.984]);\n *\n * //=point\n */\nfunction point(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    if (!coordinates) {\n        throw new Error(\"coordinates is required\");\n    }\n    if (!Array.isArray(coordinates)) {\n        throw new Error(\"coordinates must be an Array\");\n    }\n    if (coordinates.length < 2) {\n        throw new Error(\"coordinates must be at least 2 numbers long\");\n    }\n    if (!isNumber(coordinates[0]) || !isNumber(coordinates[1])) {\n        throw new Error(\"coordinates must contain numbers\");\n    }\n    var geom = {\n        type: \"Point\",\n        coordinates: coordinates,\n    };\n    return feature(geom, properties, options);\n}\nexports.point = point;\n/**\n * Creates a {@link Point} {@link FeatureCollection} from an Array of Point coordinates.\n *\n * @name points\n * @param {Array<Array<number>>} coordinates an array of Points\n * @param {Object} [properties={}] Translate these properties to each Feature\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north]\n * associated with the FeatureCollection\n * @param {string|number} [options.id] Identifier associated with the FeatureCollection\n * @returns {FeatureCollection<Point>} Point Feature\n * @example\n * var points = turf.points([\n *   [-75, 39],\n *   [-80, 45],\n *   [-78, 50]\n * ]);\n *\n * //=points\n */\nfunction points(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    return featureCollection(coordinates.map(function (coords) {\n        return point(coords, properties);\n    }), options);\n}\nexports.points = points;\n/**\n * Creates a {@link Polygon} {@link Feature} from an Array of LinearRings.\n *\n * @name polygon\n * @param {Array<Array<Array<number>>>} coordinates an array of LinearRings\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<Polygon>} Polygon Feature\n * @example\n * var polygon = turf.polygon([[[-5, 52], [-4, 56], [-2, 51], [-7, 54], [-5, 52]]], { name: 'poly1' });\n *\n * //=polygon\n */\nfunction polygon(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    for (var _i = 0, coordinates_1 = coordinates; _i < coordinates_1.length; _i++) {\n        var ring = coordinates_1[_i];\n        if (ring.length < 4) {\n            throw new Error(\"Each LinearRing of a Polygon must have 4 or more Positions.\");\n        }\n        for (var j = 0; j < ring[ring.length - 1].length; j++) {\n            // Check if first point of Polygon contains two numbers\n            if (ring[ring.length - 1][j] !== ring[0][j]) {\n                throw new Error(\"First and last Position are not equivalent.\");\n            }\n        }\n    }\n    var geom = {\n        type: \"Polygon\",\n        coordinates: coordinates,\n    };\n    return feature(geom, properties, options);\n}\nexports.polygon = polygon;\n/**\n * Creates a {@link Polygon} {@link FeatureCollection} from an Array of Polygon coordinates.\n *\n * @name polygons\n * @param {Array<Array<Array<Array<number>>>>} coordinates an array of Polygon coordinates\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the FeatureCollection\n * @returns {FeatureCollection<Polygon>} Polygon FeatureCollection\n * @example\n * var polygons = turf.polygons([\n *   [[[-5, 52], [-4, 56], [-2, 51], [-7, 54], [-5, 52]]],\n *   [[[-15, 42], [-14, 46], [-12, 41], [-17, 44], [-15, 42]]],\n * ]);\n *\n * //=polygons\n */\nfunction polygons(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    return featureCollection(coordinates.map(function (coords) {\n        return polygon(coords, properties);\n    }), options);\n}\nexports.polygons = polygons;\n/**\n * Creates a {@link LineString} {@link Feature} from an Array of Positions.\n *\n * @name lineString\n * @param {Array<Array<number>>} coordinates an array of Positions\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<LineString>} LineString Feature\n * @example\n * var linestring1 = turf.lineString([[-24, 63], [-23, 60], [-25, 65], [-20, 69]], {name: 'line 1'});\n * var linestring2 = turf.lineString([[-14, 43], [-13, 40], [-15, 45], [-10, 49]], {name: 'line 2'});\n *\n * //=linestring1\n * //=linestring2\n */\nfunction lineString(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    if (coordinates.length < 2) {\n        throw new Error(\"coordinates must be an array of two or more positions\");\n    }\n    var geom = {\n        type: \"LineString\",\n        coordinates: coordinates,\n    };\n    return feature(geom, properties, options);\n}\nexports.lineString = lineString;\n/**\n * Creates a {@link LineString} {@link FeatureCollection} from an Array of LineString coordinates.\n *\n * @name lineStrings\n * @param {Array<Array<Array<number>>>} coordinates an array of LinearRings\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north]\n * associated with the FeatureCollection\n * @param {string|number} [options.id] Identifier associated with the FeatureCollection\n * @returns {FeatureCollection<LineString>} LineString FeatureCollection\n * @example\n * var linestrings = turf.lineStrings([\n *   [[-24, 63], [-23, 60], [-25, 65], [-20, 69]],\n *   [[-14, 43], [-13, 40], [-15, 45], [-10, 49]]\n * ]);\n *\n * //=linestrings\n */\nfunction lineStrings(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    return featureCollection(coordinates.map(function (coords) {\n        return lineString(coords, properties);\n    }), options);\n}\nexports.lineStrings = lineStrings;\n/**\n * Takes one or more {@link Feature|Features} and creates a {@link FeatureCollection}.\n *\n * @name featureCollection\n * @param {Feature[]} features input features\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {FeatureCollection} FeatureCollection of Features\n * @example\n * var locationA = turf.point([-75.343, 39.984], {name: 'Location A'});\n * var locationB = turf.point([-75.833, 39.284], {name: 'Location B'});\n * var locationC = turf.point([-75.534, 39.123], {name: 'Location C'});\n *\n * var collection = turf.featureCollection([\n *   locationA,\n *   locationB,\n *   locationC\n * ]);\n *\n * //=collection\n */\nfunction featureCollection(features, options) {\n    if (options === void 0) { options = {}; }\n    var fc = { type: \"FeatureCollection\" };\n    if (options.id) {\n        fc.id = options.id;\n    }\n    if (options.bbox) {\n        fc.bbox = options.bbox;\n    }\n    fc.features = features;\n    return fc;\n}\nexports.featureCollection = featureCollection;\n/**\n * Creates a {@link Feature<MultiLineString>} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name multiLineString\n * @param {Array<Array<Array<number>>>} coordinates an array of LineStrings\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<MultiLineString>} a MultiLineString feature\n * @throws {Error} if no coordinates are passed\n * @example\n * var multiLine = turf.multiLineString([[[0,0],[10,10]]]);\n *\n * //=multiLine\n */\nfunction multiLineString(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    var geom = {\n        type: \"MultiLineString\",\n        coordinates: coordinates,\n    };\n    return feature(geom, properties, options);\n}\nexports.multiLineString = multiLineString;\n/**\n * Creates a {@link Feature<MultiPoint>} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name multiPoint\n * @param {Array<Array<number>>} coordinates an array of Positions\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<MultiPoint>} a MultiPoint feature\n * @throws {Error} if no coordinates are passed\n * @example\n * var multiPt = turf.multiPoint([[0,0],[10,10]]);\n *\n * //=multiPt\n */\nfunction multiPoint(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    var geom = {\n        type: \"MultiPoint\",\n        coordinates: coordinates,\n    };\n    return feature(geom, properties, options);\n}\nexports.multiPoint = multiPoint;\n/**\n * Creates a {@link Feature<MultiPolygon>} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name multiPolygon\n * @param {Array<Array<Array<Array<number>>>>} coordinates an array of Polygons\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<MultiPolygon>} a multipolygon feature\n * @throws {Error} if no coordinates are passed\n * @example\n * var multiPoly = turf.multiPolygon([[[[0,0],[0,10],[10,10],[10,0],[0,0]]]]);\n *\n * //=multiPoly\n *\n */\nfunction multiPolygon(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    var geom = {\n        type: \"MultiPolygon\",\n        coordinates: coordinates,\n    };\n    return feature(geom, properties, options);\n}\nexports.multiPolygon = multiPolygon;\n/**\n * Creates a {@link Feature<GeometryCollection>} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name geometryCollection\n * @param {Array<Geometry>} geometries an array of GeoJSON Geometries\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<GeometryCollection>} a GeoJSON GeometryCollection Feature\n * @example\n * var pt = turf.geometry(\"Point\", [100, 0]);\n * var line = turf.geometry(\"LineString\", [[101, 0], [102, 1]]);\n * var collection = turf.geometryCollection([pt, line]);\n *\n * // => collection\n */\nfunction geometryCollection(geometries, properties, options) {\n    if (options === void 0) { options = {}; }\n    var geom = {\n        type: \"GeometryCollection\",\n        geometries: geometries,\n    };\n    return feature(geom, properties, options);\n}\nexports.geometryCollection = geometryCollection;\n/**\n * Round number to precision\n *\n * @param {number} num Number\n * @param {number} [precision=0] Precision\n * @returns {number} rounded number\n * @example\n * turf.round(120.4321)\n * //=120\n *\n * turf.round(120.4321, 2)\n * //=120.43\n */\nfunction round(num, precision) {\n    if (precision === void 0) { precision = 0; }\n    if (precision && !(precision >= 0)) {\n        throw new Error(\"precision must be a positive number\");\n    }\n    var multiplier = Math.pow(10, precision || 0);\n    return Math.round(num * multiplier) / multiplier;\n}\nexports.round = round;\n/**\n * Convert a distance measurement (assuming a spherical Earth) from radians to a more friendly unit.\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet\n *\n * @name radiansToLength\n * @param {number} radians in radians across the sphere\n * @param {string} [units=\"kilometers\"] can be degrees, radians, miles, inches, yards, metres,\n * meters, kilometres, kilometers.\n * @returns {number} distance\n */\nfunction radiansToLength(radians, units) {\n    if (units === void 0) { units = \"kilometers\"; }\n    var factor = exports.factors[units];\n    if (!factor) {\n        throw new Error(units + \" units is invalid\");\n    }\n    return radians * factor;\n}\nexports.radiansToLength = radiansToLength;\n/**\n * Convert a distance measurement (assuming a spherical Earth) from a real-world unit into radians\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet\n *\n * @name lengthToRadians\n * @param {number} distance in real units\n * @param {string} [units=\"kilometers\"] can be degrees, radians, miles, inches, yards, metres,\n * meters, kilometres, kilometers.\n * @returns {number} radians\n */\nfunction lengthToRadians(distance, units) {\n    if (units === void 0) { units = \"kilometers\"; }\n    var factor = exports.factors[units];\n    if (!factor) {\n        throw new Error(units + \" units is invalid\");\n    }\n    return distance / factor;\n}\nexports.lengthToRadians = lengthToRadians;\n/**\n * Convert a distance measurement (assuming a spherical Earth) from a real-world unit into degrees\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, centimeters, kilometres, feet\n *\n * @name lengthToDegrees\n * @param {number} distance in real units\n * @param {string} [units=\"kilometers\"] can be degrees, radians, miles, inches, yards, metres,\n * meters, kilometres, kilometers.\n * @returns {number} degrees\n */\nfunction lengthToDegrees(distance, units) {\n    return radiansToDegrees(lengthToRadians(distance, units));\n}\nexports.lengthToDegrees = lengthToDegrees;\n/**\n * Converts any bearing angle from the north line direction (positive clockwise)\n * and returns an angle between 0-360 degrees (positive clockwise), 0 being the north line\n *\n * @name bearingToAzimuth\n * @param {number} bearing angle, between -180 and +180 degrees\n * @returns {number} angle between 0 and 360 degrees\n */\nfunction bearingToAzimuth(bearing) {\n    var angle = bearing % 360;\n    if (angle < 0) {\n        angle += 360;\n    }\n    return angle;\n}\nexports.bearingToAzimuth = bearingToAzimuth;\n/**\n * Converts an angle in radians to degrees\n *\n * @name radiansToDegrees\n * @param {number} radians angle in radians\n * @returns {number} degrees between 0 and 360 degrees\n */\nfunction radiansToDegrees(radians) {\n    var degrees = radians % (2 * Math.PI);\n    return (degrees * 180) / Math.PI;\n}\nexports.radiansToDegrees = radiansToDegrees;\n/**\n * Converts an angle in degrees to radians\n *\n * @name degreesToRadians\n * @param {number} degrees angle between 0 and 360 degrees\n * @returns {number} angle in radians\n */\nfunction degreesToRadians(degrees) {\n    var radians = degrees % 360;\n    return (radians * Math.PI) / 180;\n}\nexports.degreesToRadians = degreesToRadians;\n/**\n * Converts a length to the requested unit.\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet\n *\n * @param {number} length to be converted\n * @param {Units} [originalUnit=\"kilometers\"] of the length\n * @param {Units} [finalUnit=\"kilometers\"] returned unit\n * @returns {number} the converted length\n */\nfunction convertLength(length, originalUnit, finalUnit) {\n    if (originalUnit === void 0) { originalUnit = \"kilometers\"; }\n    if (finalUnit === void 0) { finalUnit = \"kilometers\"; }\n    if (!(length >= 0)) {\n        throw new Error(\"length must be a positive number\");\n    }\n    return radiansToLength(lengthToRadians(length, originalUnit), finalUnit);\n}\nexports.convertLength = convertLength;\n/**\n * Converts a area to the requested unit.\n * Valid units: kilometers, kilometres, meters, metres, centimetres, millimeters, acres, miles, yards, feet, inches, hectares\n * @param {number} area to be converted\n * @param {Units} [originalUnit=\"meters\"] of the distance\n * @param {Units} [finalUnit=\"kilometers\"] returned unit\n * @returns {number} the converted area\n */\nfunction convertArea(area, originalUnit, finalUnit) {\n    if (originalUnit === void 0) { originalUnit = \"meters\"; }\n    if (finalUnit === void 0) { finalUnit = \"kilometers\"; }\n    if (!(area >= 0)) {\n        throw new Error(\"area must be a positive number\");\n    }\n    var startFactor = exports.areaFactors[originalUnit];\n    if (!startFactor) {\n        throw new Error(\"invalid original units\");\n    }\n    var finalFactor = exports.areaFactors[finalUnit];\n    if (!finalFactor) {\n        throw new Error(\"invalid final units\");\n    }\n    return (area / startFactor) * finalFactor;\n}\nexports.convertArea = convertArea;\n/**\n * isNumber\n *\n * @param {*} num Number to validate\n * @returns {boolean} true/false\n * @example\n * turf.isNumber(123)\n * //=true\n * turf.isNumber('foo')\n * //=false\n */\nfunction isNumber(num) {\n    return !isNaN(num) && num !== null && !Array.isArray(num);\n}\nexports.isNumber = isNumber;\n/**\n * isObject\n *\n * @param {*} input variable to validate\n * @returns {boolean} true/false\n * @example\n * turf.isObject({elevation: 10})\n * //=true\n * turf.isObject('foo')\n * //=false\n */\nfunction isObject(input) {\n    return !!input && input.constructor === Object;\n}\nexports.isObject = isObject;\n/**\n * Validate BBox\n *\n * @private\n * @param {Array<number>} bbox BBox to validate\n * @returns {void}\n * @throws Error if BBox is not valid\n * @example\n * validateBBox([-180, -40, 110, 50])\n * //=OK\n * validateBBox([-180, -40])\n * //=Error\n * validateBBox('Foo')\n * //=Error\n * validateBBox(5)\n * //=Error\n * validateBBox(null)\n * //=Error\n * validateBBox(undefined)\n * //=Error\n */\nfunction validateBBox(bbox) {\n    if (!bbox) {\n        throw new Error(\"bbox is required\");\n    }\n    if (!Array.isArray(bbox)) {\n        throw new Error(\"bbox must be an Array\");\n    }\n    if (bbox.length !== 4 && bbox.length !== 6) {\n        throw new Error(\"bbox must be an Array of 4 or 6 numbers\");\n    }\n    bbox.forEach(function (num) {\n        if (!isNumber(num)) {\n            throw new Error(\"bbox must only contain numbers\");\n        }\n    });\n}\nexports.validateBBox = validateBBox;\n/**\n * Validate Id\n *\n * @private\n * @param {string|number} id Id to validate\n * @returns {void}\n * @throws Error if Id is not valid\n * @example\n * validateId([-180, -40, 110, 50])\n * //=Error\n * validateId([-180, -40])\n * //=Error\n * validateId('Foo')\n * //=OK\n * validateId(5)\n * //=OK\n * validateId(null)\n * //=Error\n * validateId(undefined)\n * //=Error\n */\nfunction validateId(id) {\n    if (!id) {\n        throw new Error(\"id is required\");\n    }\n    if ([\"string\", \"number\"].indexOf(typeof id) === -1) {\n        throw new Error(\"id must be a number or a string\");\n    }\n}\nexports.validateId = validateId;\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nvar helpers = require('@turf/helpers');\n\n/**\n * Callback for coordEach\n *\n * @callback coordEachCallback\n * @param {Array<number>} currentCoord The current coordinate being processed.\n * @param {number} coordIndex The current index of the coordinate being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n * @param {number} geometryIndex The current index of the Geometry being processed.\n */\n\n/**\n * Iterate over coordinates in any GeoJSON object, similar to Array.forEach()\n *\n * @name coordEach\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (currentCoord, coordIndex, featureIndex, multiFeatureIndex)\n * @param {boolean} [excludeWrapCoord=false] whether or not to include the final coordinate of LinearRings that wraps the ring in its iteration.\n * @returns {void}\n * @example\n * var features = turf.featureCollection([\n *   turf.point([26, 37], {\"foo\": \"bar\"}),\n *   turf.point([36, 53], {\"hello\": \"world\"})\n * ]);\n *\n * turf.coordEach(features, function (currentCoord, coordIndex, featureIndex, multiFeatureIndex, geometryIndex) {\n *   //=currentCoord\n *   //=coordIndex\n *   //=featureIndex\n *   //=multiFeatureIndex\n *   //=geometryIndex\n * });\n */\nfunction coordEach(geojson, callback, excludeWrapCoord) {\n  // Handles null Geometry -- Skips this GeoJSON\n  if (geojson === null) return;\n  var j,\n    k,\n    l,\n    geometry,\n    stopG,\n    coords,\n    geometryMaybeCollection,\n    wrapShrink = 0,\n    coordIndex = 0,\n    isGeometryCollection,\n    type = geojson.type,\n    isFeatureCollection = type === \"FeatureCollection\",\n    isFeature = type === \"Feature\",\n    stop = isFeatureCollection ? geojson.features.length : 1;\n\n  // This logic may look a little weird. The reason why it is that way\n  // is because it's trying to be fast. GeoJSON supports multiple kinds\n  // of objects at its root: FeatureCollection, Features, Geometries.\n  // This function has the responsibility of handling all of them, and that\n  // means that some of the `for` loops you see below actually just don't apply\n  // to certain inputs. For instance, if you give this just a\n  // Point geometry, then both loops are short-circuited and all we do\n  // is gradually rename the input until it's called 'geometry'.\n  //\n  // This also aims to allocate as few resources as possible: just a\n  // few numbers and booleans, rather than any temporary arrays as would\n  // be required with the normalization approach.\n  for (var featureIndex = 0; featureIndex < stop; featureIndex++) {\n    geometryMaybeCollection = isFeatureCollection\n      ? geojson.features[featureIndex].geometry\n      : isFeature\n      ? geojson.geometry\n      : geojson;\n    isGeometryCollection = geometryMaybeCollection\n      ? geometryMaybeCollection.type === \"GeometryCollection\"\n      : false;\n    stopG = isGeometryCollection\n      ? geometryMaybeCollection.geometries.length\n      : 1;\n\n    for (var geomIndex = 0; geomIndex < stopG; geomIndex++) {\n      var multiFeatureIndex = 0;\n      var geometryIndex = 0;\n      geometry = isGeometryCollection\n        ? geometryMaybeCollection.geometries[geomIndex]\n        : geometryMaybeCollection;\n\n      // Handles null Geometry -- Skips this geometry\n      if (geometry === null) continue;\n      coords = geometry.coordinates;\n      var geomType = geometry.type;\n\n      wrapShrink =\n        excludeWrapCoord &&\n        (geomType === \"Polygon\" || geomType === \"MultiPolygon\")\n          ? 1\n          : 0;\n\n      switch (geomType) {\n        case null:\n          break;\n        case \"Point\":\n          if (\n            callback(\n              coords,\n              coordIndex,\n              featureIndex,\n              multiFeatureIndex,\n              geometryIndex\n            ) === false\n          )\n            return false;\n          coordIndex++;\n          multiFeatureIndex++;\n          break;\n        case \"LineString\":\n        case \"MultiPoint\":\n          for (j = 0; j < coords.length; j++) {\n            if (\n              callback(\n                coords[j],\n                coordIndex,\n                featureIndex,\n                multiFeatureIndex,\n                geometryIndex\n              ) === false\n            )\n              return false;\n            coordIndex++;\n            if (geomType === \"MultiPoint\") multiFeatureIndex++;\n          }\n          if (geomType === \"LineString\") multiFeatureIndex++;\n          break;\n        case \"Polygon\":\n        case \"MultiLineString\":\n          for (j = 0; j < coords.length; j++) {\n            for (k = 0; k < coords[j].length - wrapShrink; k++) {\n              if (\n                callback(\n                  coords[j][k],\n                  coordIndex,\n                  featureIndex,\n                  multiFeatureIndex,\n                  geometryIndex\n                ) === false\n              )\n                return false;\n              coordIndex++;\n            }\n            if (geomType === \"MultiLineString\") multiFeatureIndex++;\n            if (geomType === \"Polygon\") geometryIndex++;\n          }\n          if (geomType === \"Polygon\") multiFeatureIndex++;\n          break;\n        case \"MultiPolygon\":\n          for (j = 0; j < coords.length; j++) {\n            geometryIndex = 0;\n            for (k = 0; k < coords[j].length; k++) {\n              for (l = 0; l < coords[j][k].length - wrapShrink; l++) {\n                if (\n                  callback(\n                    coords[j][k][l],\n                    coordIndex,\n                    featureIndex,\n                    multiFeatureIndex,\n                    geometryIndex\n                  ) === false\n                )\n                  return false;\n                coordIndex++;\n              }\n              geometryIndex++;\n            }\n            multiFeatureIndex++;\n          }\n          break;\n        case \"GeometryCollection\":\n          for (j = 0; j < geometry.geometries.length; j++)\n            if (\n              coordEach(geometry.geometries[j], callback, excludeWrapCoord) ===\n              false\n            )\n              return false;\n          break;\n        default:\n          throw new Error(\"Unknown Geometry Type\");\n      }\n    }\n  }\n}\n\n/**\n * Callback for coordReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n *  - The previousValue argument is initialValue.\n *  - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n *  - The previousValue argument is the value of the first element present in the array.\n *  - The currentValue argument is the value of the second element present in the array.\n *\n * @callback coordReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Array<number>} currentCoord The current coordinate being processed.\n * @param {number} coordIndex The current index of the coordinate being processed.\n * Starts at index 0, if an initialValue is provided, and at index 1 otherwise.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n * @param {number} geometryIndex The current index of the Geometry being processed.\n */\n\n/**\n * Reduce coordinates in any GeoJSON object, similar to Array.reduce()\n *\n * @name coordReduce\n * @param {FeatureCollection|Geometry|Feature} geojson any GeoJSON object\n * @param {Function} callback a method that takes (previousValue, currentCoord, coordIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @param {boolean} [excludeWrapCoord=false] whether or not to include the final coordinate of LinearRings that wraps the ring in its iteration.\n * @returns {*} The value that results from the reduction.\n * @example\n * var features = turf.featureCollection([\n *   turf.point([26, 37], {\"foo\": \"bar\"}),\n *   turf.point([36, 53], {\"hello\": \"world\"})\n * ]);\n *\n * turf.coordReduce(features, function (previousValue, currentCoord, coordIndex, featureIndex, multiFeatureIndex, geometryIndex) {\n *   //=previousValue\n *   //=currentCoord\n *   //=coordIndex\n *   //=featureIndex\n *   //=multiFeatureIndex\n *   //=geometryIndex\n *   return currentCoord;\n * });\n */\nfunction coordReduce(geojson, callback, initialValue, excludeWrapCoord) {\n  var previousValue = initialValue;\n  coordEach(\n    geojson,\n    function (\n      currentCoord,\n      coordIndex,\n      featureIndex,\n      multiFeatureIndex,\n      geometryIndex\n    ) {\n      if (coordIndex === 0 && initialValue === undefined)\n        previousValue = currentCoord;\n      else\n        previousValue = callback(\n          previousValue,\n          currentCoord,\n          coordIndex,\n          featureIndex,\n          multiFeatureIndex,\n          geometryIndex\n        );\n    },\n    excludeWrapCoord\n  );\n  return previousValue;\n}\n\n/**\n * Callback for propEach\n *\n * @callback propEachCallback\n * @param {Object} currentProperties The current Properties being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n */\n\n/**\n * Iterate over properties in any GeoJSON object, similar to Array.forEach()\n *\n * @name propEach\n * @param {FeatureCollection|Feature} geojson any GeoJSON object\n * @param {Function} callback a method that takes (currentProperties, featureIndex)\n * @returns {void}\n * @example\n * var features = turf.featureCollection([\n *     turf.point([26, 37], {foo: 'bar'}),\n *     turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * turf.propEach(features, function (currentProperties, featureIndex) {\n *   //=currentProperties\n *   //=featureIndex\n * });\n */\nfunction propEach(geojson, callback) {\n  var i;\n  switch (geojson.type) {\n    case \"FeatureCollection\":\n      for (i = 0; i < geojson.features.length; i++) {\n        if (callback(geojson.features[i].properties, i) === false) break;\n      }\n      break;\n    case \"Feature\":\n      callback(geojson.properties, 0);\n      break;\n  }\n}\n\n/**\n * Callback for propReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n *  - The previousValue argument is initialValue.\n *  - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n *  - The previousValue argument is the value of the first element present in the array.\n *  - The currentValue argument is the value of the second element present in the array.\n *\n * @callback propReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {*} currentProperties The current Properties being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n */\n\n/**\n * Reduce properties in any GeoJSON object into a single value,\n * similar to how Array.reduce works. However, in this case we lazily run\n * the reduction, so an array of all properties is unnecessary.\n *\n * @name propReduce\n * @param {FeatureCollection|Feature} geojson any GeoJSON object\n * @param {Function} callback a method that takes (previousValue, currentProperties, featureIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {*} The value that results from the reduction.\n * @example\n * var features = turf.featureCollection([\n *     turf.point([26, 37], {foo: 'bar'}),\n *     turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * turf.propReduce(features, function (previousValue, currentProperties, featureIndex) {\n *   //=previousValue\n *   //=currentProperties\n *   //=featureIndex\n *   return currentProperties\n * });\n */\nfunction propReduce(geojson, callback, initialValue) {\n  var previousValue = initialValue;\n  propEach(geojson, function (currentProperties, featureIndex) {\n    if (featureIndex === 0 && initialValue === undefined)\n      previousValue = currentProperties;\n    else\n      previousValue = callback(previousValue, currentProperties, featureIndex);\n  });\n  return previousValue;\n}\n\n/**\n * Callback for featureEach\n *\n * @callback featureEachCallback\n * @param {Feature<any>} currentFeature The current Feature being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n */\n\n/**\n * Iterate over features in any GeoJSON object, similar to\n * Array.forEach.\n *\n * @name featureEach\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (currentFeature, featureIndex)\n * @returns {void}\n * @example\n * var features = turf.featureCollection([\n *   turf.point([26, 37], {foo: 'bar'}),\n *   turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * turf.featureEach(features, function (currentFeature, featureIndex) {\n *   //=currentFeature\n *   //=featureIndex\n * });\n */\nfunction featureEach(geojson, callback) {\n  if (geojson.type === \"Feature\") {\n    callback(geojson, 0);\n  } else if (geojson.type === \"FeatureCollection\") {\n    for (var i = 0; i < geojson.features.length; i++) {\n      if (callback(geojson.features[i], i) === false) break;\n    }\n  }\n}\n\n/**\n * Callback for featureReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n *  - The previousValue argument is initialValue.\n *  - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n *  - The previousValue argument is the value of the first element present in the array.\n *  - The currentValue argument is the value of the second element present in the array.\n *\n * @callback featureReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Feature} currentFeature The current Feature being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n */\n\n/**\n * Reduce features in any GeoJSON object, similar to Array.reduce().\n *\n * @name featureReduce\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (previousValue, currentFeature, featureIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {*} The value that results from the reduction.\n * @example\n * var features = turf.featureCollection([\n *   turf.point([26, 37], {\"foo\": \"bar\"}),\n *   turf.point([36, 53], {\"hello\": \"world\"})\n * ]);\n *\n * turf.featureReduce(features, function (previousValue, currentFeature, featureIndex) {\n *   //=previousValue\n *   //=currentFeature\n *   //=featureIndex\n *   return currentFeature\n * });\n */\nfunction featureReduce(geojson, callback, initialValue) {\n  var previousValue = initialValue;\n  featureEach(geojson, function (currentFeature, featureIndex) {\n    if (featureIndex === 0 && initialValue === undefined)\n      previousValue = currentFeature;\n    else previousValue = callback(previousValue, currentFeature, featureIndex);\n  });\n  return previousValue;\n}\n\n/**\n * Get all coordinates from any GeoJSON object.\n *\n * @name coordAll\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @returns {Array<Array<number>>} coordinate position array\n * @example\n * var features = turf.featureCollection([\n *   turf.point([26, 37], {foo: 'bar'}),\n *   turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * var coords = turf.coordAll(features);\n * //= [[26, 37], [36, 53]]\n */\nfunction coordAll(geojson) {\n  var coords = [];\n  coordEach(geojson, function (coord) {\n    coords.push(coord);\n  });\n  return coords;\n}\n\n/**\n * Callback for geomEach\n *\n * @callback geomEachCallback\n * @param {Geometry} currentGeometry The current Geometry being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {Object} featureProperties The current Feature Properties being processed.\n * @param {Array<number>} featureBBox The current Feature BBox being processed.\n * @param {number|string} featureId The current Feature Id being processed.\n */\n\n/**\n * Iterate over each geometry in any GeoJSON object, similar to Array.forEach()\n *\n * @name geomEach\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (currentGeometry, featureIndex, featureProperties, featureBBox, featureId)\n * @returns {void}\n * @example\n * var features = turf.featureCollection([\n *     turf.point([26, 37], {foo: 'bar'}),\n *     turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * turf.geomEach(features, function (currentGeometry, featureIndex, featureProperties, featureBBox, featureId) {\n *   //=currentGeometry\n *   //=featureIndex\n *   //=featureProperties\n *   //=featureBBox\n *   //=featureId\n * });\n */\nfunction geomEach(geojson, callback) {\n  var i,\n    j,\n    g,\n    geometry,\n    stopG,\n    geometryMaybeCollection,\n    isGeometryCollection,\n    featureProperties,\n    featureBBox,\n    featureId,\n    featureIndex = 0,\n    isFeatureCollection = geojson.type === \"FeatureCollection\",\n    isFeature = geojson.type === \"Feature\",\n    stop = isFeatureCollection ? geojson.features.length : 1;\n\n  // This logic may look a little weird. The reason why it is that way\n  // is because it's trying to be fast. GeoJSON supports multiple kinds\n  // of objects at its root: FeatureCollection, Features, Geometries.\n  // This function has the responsibility of handling all of them, and that\n  // means that some of the `for` loops you see below actually just don't apply\n  // to certain inputs. For instance, if you give this just a\n  // Point geometry, then both loops are short-circuited and all we do\n  // is gradually rename the input until it's called 'geometry'.\n  //\n  // This also aims to allocate as few resources as possible: just a\n  // few numbers and booleans, rather than any temporary arrays as would\n  // be required with the normalization approach.\n  for (i = 0; i < stop; i++) {\n    geometryMaybeCollection = isFeatureCollection\n      ? geojson.features[i].geometry\n      : isFeature\n      ? geojson.geometry\n      : geojson;\n    featureProperties = isFeatureCollection\n      ? geojson.features[i].properties\n      : isFeature\n      ? geojson.properties\n      : {};\n    featureBBox = isFeatureCollection\n      ? geojson.features[i].bbox\n      : isFeature\n      ? geojson.bbox\n      : undefined;\n    featureId = isFeatureCollection\n      ? geojson.features[i].id\n      : isFeature\n      ? geojson.id\n      : undefined;\n    isGeometryCollection = geometryMaybeCollection\n      ? geometryMaybeCollection.type === \"GeometryCollection\"\n      : false;\n    stopG = isGeometryCollection\n      ? geometryMaybeCollection.geometries.length\n      : 1;\n\n    for (g = 0; g < stopG; g++) {\n      geometry = isGeometryCollection\n        ? geometryMaybeCollection.geometries[g]\n        : geometryMaybeCollection;\n\n      // Handle null Geometry\n      if (geometry === null) {\n        if (\n          callback(\n            null,\n            featureIndex,\n            featureProperties,\n            featureBBox,\n            featureId\n          ) === false\n        )\n          return false;\n        continue;\n      }\n      switch (geometry.type) {\n        case \"Point\":\n        case \"LineString\":\n        case \"MultiPoint\":\n        case \"Polygon\":\n        case \"MultiLineString\":\n        case \"MultiPolygon\": {\n          if (\n            callback(\n              geometry,\n              featureIndex,\n              featureProperties,\n              featureBBox,\n              featureId\n            ) === false\n          )\n            return false;\n          break;\n        }\n        case \"GeometryCollection\": {\n          for (j = 0; j < geometry.geometries.length; j++) {\n            if (\n              callback(\n                geometry.geometries[j],\n                featureIndex,\n                featureProperties,\n                featureBBox,\n                featureId\n              ) === false\n            )\n              return false;\n          }\n          break;\n        }\n        default:\n          throw new Error(\"Unknown Geometry Type\");\n      }\n    }\n    // Only increase `featureIndex` per each feature\n    featureIndex++;\n  }\n}\n\n/**\n * Callback for geomReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n *  - The previousValue argument is initialValue.\n *  - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n *  - The previousValue argument is the value of the first element present in the array.\n *  - The currentValue argument is the value of the second element present in the array.\n *\n * @callback geomReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Geometry} currentGeometry The current Geometry being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {Object} featureProperties The current Feature Properties being processed.\n * @param {Array<number>} featureBBox The current Feature BBox being processed.\n * @param {number|string} featureId The current Feature Id being processed.\n */\n\n/**\n * Reduce geometry in any GeoJSON object, similar to Array.reduce().\n *\n * @name geomReduce\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (previousValue, currentGeometry, featureIndex, featureProperties, featureBBox, featureId)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {*} The value that results from the reduction.\n * @example\n * var features = turf.featureCollection([\n *     turf.point([26, 37], {foo: 'bar'}),\n *     turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * turf.geomReduce(features, function (previousValue, currentGeometry, featureIndex, featureProperties, featureBBox, featureId) {\n *   //=previousValue\n *   //=currentGeometry\n *   //=featureIndex\n *   //=featureProperties\n *   //=featureBBox\n *   //=featureId\n *   return currentGeometry\n * });\n */\nfunction geomReduce(geojson, callback, initialValue) {\n  var previousValue = initialValue;\n  geomEach(\n    geojson,\n    function (\n      currentGeometry,\n      featureIndex,\n      featureProperties,\n      featureBBox,\n      featureId\n    ) {\n      if (featureIndex === 0 && initialValue === undefined)\n        previousValue = currentGeometry;\n      else\n        previousValue = callback(\n          previousValue,\n          currentGeometry,\n          featureIndex,\n          featureProperties,\n          featureBBox,\n          featureId\n        );\n    }\n  );\n  return previousValue;\n}\n\n/**\n * Callback for flattenEach\n *\n * @callback flattenEachCallback\n * @param {Feature} currentFeature The current flattened feature being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n */\n\n/**\n * Iterate over flattened features in any GeoJSON object, similar to\n * Array.forEach.\n *\n * @name flattenEach\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (currentFeature, featureIndex, multiFeatureIndex)\n * @example\n * var features = turf.featureCollection([\n *     turf.point([26, 37], {foo: 'bar'}),\n *     turf.multiPoint([[40, 30], [36, 53]], {hello: 'world'})\n * ]);\n *\n * turf.flattenEach(features, function (currentFeature, featureIndex, multiFeatureIndex) {\n *   //=currentFeature\n *   //=featureIndex\n *   //=multiFeatureIndex\n * });\n */\nfunction flattenEach(geojson, callback) {\n  geomEach(geojson, function (geometry, featureIndex, properties, bbox, id) {\n    // Callback for single geometry\n    var type = geometry === null ? null : geometry.type;\n    switch (type) {\n      case null:\n      case \"Point\":\n      case \"LineString\":\n      case \"Polygon\":\n        if (\n          callback(\n            helpers.feature(geometry, properties, { bbox: bbox, id: id }),\n            featureIndex,\n            0\n          ) === false\n        )\n          return false;\n        return;\n    }\n\n    var geomType;\n\n    // Callback for multi-geometry\n    switch (type) {\n      case \"MultiPoint\":\n        geomType = \"Point\";\n        break;\n      case \"MultiLineString\":\n        geomType = \"LineString\";\n        break;\n      case \"MultiPolygon\":\n        geomType = \"Polygon\";\n        break;\n    }\n\n    for (\n      var multiFeatureIndex = 0;\n      multiFeatureIndex < geometry.coordinates.length;\n      multiFeatureIndex++\n    ) {\n      var coordinate = geometry.coordinates[multiFeatureIndex];\n      var geom = {\n        type: geomType,\n        coordinates: coordinate,\n      };\n      if (\n        callback(helpers.feature(geom, properties), featureIndex, multiFeatureIndex) ===\n        false\n      )\n        return false;\n    }\n  });\n}\n\n/**\n * Callback for flattenReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n *  - The previousValue argument is initialValue.\n *  - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n *  - The previousValue argument is the value of the first element present in the array.\n *  - The currentValue argument is the value of the second element present in the array.\n *\n * @callback flattenReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Feature} currentFeature The current Feature being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n */\n\n/**\n * Reduce flattened features in any GeoJSON object, similar to Array.reduce().\n *\n * @name flattenReduce\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (previousValue, currentFeature, featureIndex, multiFeatureIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {*} The value that results from the reduction.\n * @example\n * var features = turf.featureCollection([\n *     turf.point([26, 37], {foo: 'bar'}),\n *     turf.multiPoint([[40, 30], [36, 53]], {hello: 'world'})\n * ]);\n *\n * turf.flattenReduce(features, function (previousValue, currentFeature, featureIndex, multiFeatureIndex) {\n *   //=previousValue\n *   //=currentFeature\n *   //=featureIndex\n *   //=multiFeatureIndex\n *   return currentFeature\n * });\n */\nfunction flattenReduce(geojson, callback, initialValue) {\n  var previousValue = initialValue;\n  flattenEach(\n    geojson,\n    function (currentFeature, featureIndex, multiFeatureIndex) {\n      if (\n        featureIndex === 0 &&\n        multiFeatureIndex === 0 &&\n        initialValue === undefined\n      )\n        previousValue = currentFeature;\n      else\n        previousValue = callback(\n          previousValue,\n          currentFeature,\n          featureIndex,\n          multiFeatureIndex\n        );\n    }\n  );\n  return previousValue;\n}\n\n/**\n * Callback for segmentEach\n *\n * @callback segmentEachCallback\n * @param {Feature<LineString>} currentSegment The current Segment being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n * @param {number} geometryIndex The current index of the Geometry being processed.\n * @param {number} segmentIndex The current index of the Segment being processed.\n * @returns {void}\n */\n\n/**\n * Iterate over 2-vertex line segment in any GeoJSON object, similar to Array.forEach()\n * (Multi)Point geometries do not contain segments therefore they are ignored during this operation.\n *\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON\n * @param {Function} callback a method that takes (currentSegment, featureIndex, multiFeatureIndex, geometryIndex, segmentIndex)\n * @returns {void}\n * @example\n * var polygon = turf.polygon([[[-50, 5], [-40, -10], [-50, -10], [-40, 5], [-50, 5]]]);\n *\n * // Iterate over GeoJSON by 2-vertex segments\n * turf.segmentEach(polygon, function (currentSegment, featureIndex, multiFeatureIndex, geometryIndex, segmentIndex) {\n *   //=currentSegment\n *   //=featureIndex\n *   //=multiFeatureIndex\n *   //=geometryIndex\n *   //=segmentIndex\n * });\n *\n * // Calculate the total number of segments\n * var total = 0;\n * turf.segmentEach(polygon, function () {\n *     total++;\n * });\n */\nfunction segmentEach(geojson, callback) {\n  flattenEach(geojson, function (feature, featureIndex, multiFeatureIndex) {\n    var segmentIndex = 0;\n\n    // Exclude null Geometries\n    if (!feature.geometry) return;\n    // (Multi)Point geometries do not contain segments therefore they are ignored during this operation.\n    var type = feature.geometry.type;\n    if (type === \"Point\" || type === \"MultiPoint\") return;\n\n    // Generate 2-vertex line segments\n    var previousCoords;\n    var previousFeatureIndex = 0;\n    var previousMultiIndex = 0;\n    var prevGeomIndex = 0;\n    if (\n      coordEach(\n        feature,\n        function (\n          currentCoord,\n          coordIndex,\n          featureIndexCoord,\n          multiPartIndexCoord,\n          geometryIndex\n        ) {\n          // Simulating a meta.coordReduce() since `reduce` operations cannot be stopped by returning `false`\n          if (\n            previousCoords === undefined ||\n            featureIndex > previousFeatureIndex ||\n            multiPartIndexCoord > previousMultiIndex ||\n            geometryIndex > prevGeomIndex\n          ) {\n            previousCoords = currentCoord;\n            previousFeatureIndex = featureIndex;\n            previousMultiIndex = multiPartIndexCoord;\n            prevGeomIndex = geometryIndex;\n            segmentIndex = 0;\n            return;\n          }\n          var currentSegment = helpers.lineString(\n            [previousCoords, currentCoord],\n            feature.properties\n          );\n          if (\n            callback(\n              currentSegment,\n              featureIndex,\n              multiFeatureIndex,\n              geometryIndex,\n              segmentIndex\n            ) === false\n          )\n            return false;\n          segmentIndex++;\n          previousCoords = currentCoord;\n        }\n      ) === false\n    )\n      return false;\n  });\n}\n\n/**\n * Callback for segmentReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n *  - The previousValue argument is initialValue.\n *  - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n *  - The previousValue argument is the value of the first element present in the array.\n *  - The currentValue argument is the value of the second element present in the array.\n *\n * @callback segmentReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Feature<LineString>} currentSegment The current Segment being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n * @param {number} geometryIndex The current index of the Geometry being processed.\n * @param {number} segmentIndex The current index of the Segment being processed.\n */\n\n/**\n * Reduce 2-vertex line segment in any GeoJSON object, similar to Array.reduce()\n * (Multi)Point geometries do not contain segments therefore they are ignored during this operation.\n *\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON\n * @param {Function} callback a method that takes (previousValue, currentSegment, currentIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {void}\n * @example\n * var polygon = turf.polygon([[[-50, 5], [-40, -10], [-50, -10], [-40, 5], [-50, 5]]]);\n *\n * // Iterate over GeoJSON by 2-vertex segments\n * turf.segmentReduce(polygon, function (previousSegment, currentSegment, featureIndex, multiFeatureIndex, geometryIndex, segmentIndex) {\n *   //= previousSegment\n *   //= currentSegment\n *   //= featureIndex\n *   //= multiFeatureIndex\n *   //= geometryIndex\n *   //= segmentIndex\n *   return currentSegment\n * });\n *\n * // Calculate the total number of segments\n * var initialValue = 0\n * var total = turf.segmentReduce(polygon, function (previousValue) {\n *     previousValue++;\n *     return previousValue;\n * }, initialValue);\n */\nfunction segmentReduce(geojson, callback, initialValue) {\n  var previousValue = initialValue;\n  var started = false;\n  segmentEach(\n    geojson,\n    function (\n      currentSegment,\n      featureIndex,\n      multiFeatureIndex,\n      geometryIndex,\n      segmentIndex\n    ) {\n      if (started === false && initialValue === undefined)\n        previousValue = currentSegment;\n      else\n        previousValue = callback(\n          previousValue,\n          currentSegment,\n          featureIndex,\n          multiFeatureIndex,\n          geometryIndex,\n          segmentIndex\n        );\n      started = true;\n    }\n  );\n  return previousValue;\n}\n\n/**\n * Callback for lineEach\n *\n * @callback lineEachCallback\n * @param {Feature<LineString>} currentLine The current LineString|LinearRing being processed\n * @param {number} featureIndex The current index of the Feature being processed\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed\n * @param {number} geometryIndex The current index of the Geometry being processed\n */\n\n/**\n * Iterate over line or ring coordinates in LineString, Polygon, MultiLineString, MultiPolygon Features or Geometries,\n * similar to Array.forEach.\n *\n * @name lineEach\n * @param {Geometry|Feature<LineString|Polygon|MultiLineString|MultiPolygon>} geojson object\n * @param {Function} callback a method that takes (currentLine, featureIndex, multiFeatureIndex, geometryIndex)\n * @example\n * var multiLine = turf.multiLineString([\n *   [[26, 37], [35, 45]],\n *   [[36, 53], [38, 50], [41, 55]]\n * ]);\n *\n * turf.lineEach(multiLine, function (currentLine, featureIndex, multiFeatureIndex, geometryIndex) {\n *   //=currentLine\n *   //=featureIndex\n *   //=multiFeatureIndex\n *   //=geometryIndex\n * });\n */\nfunction lineEach(geojson, callback) {\n  // validation\n  if (!geojson) throw new Error(\"geojson is required\");\n\n  flattenEach(geojson, function (feature, featureIndex, multiFeatureIndex) {\n    if (feature.geometry === null) return;\n    var type = feature.geometry.type;\n    var coords = feature.geometry.coordinates;\n    switch (type) {\n      case \"LineString\":\n        if (callback(feature, featureIndex, multiFeatureIndex, 0, 0) === false)\n          return false;\n        break;\n      case \"Polygon\":\n        for (\n          var geometryIndex = 0;\n          geometryIndex < coords.length;\n          geometryIndex++\n        ) {\n          if (\n            callback(\n              helpers.lineString(coords[geometryIndex], feature.properties),\n              featureIndex,\n              multiFeatureIndex,\n              geometryIndex\n            ) === false\n          )\n            return false;\n        }\n        break;\n    }\n  });\n}\n\n/**\n * Callback for lineReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n *  - The previousValue argument is initialValue.\n *  - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n *  - The previousValue argument is the value of the first element present in the array.\n *  - The currentValue argument is the value of the second element present in the array.\n *\n * @callback lineReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Feature<LineString>} currentLine The current LineString|LinearRing being processed.\n * @param {number} featureIndex The current index of the Feature being processed\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed\n * @param {number} geometryIndex The current index of the Geometry being processed\n */\n\n/**\n * Reduce features in any GeoJSON object, similar to Array.reduce().\n *\n * @name lineReduce\n * @param {Geometry|Feature<LineString|Polygon|MultiLineString|MultiPolygon>} geojson object\n * @param {Function} callback a method that takes (previousValue, currentLine, featureIndex, multiFeatureIndex, geometryIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {*} The value that results from the reduction.\n * @example\n * var multiPoly = turf.multiPolygon([\n *   turf.polygon([[[12,48],[2,41],[24,38],[12,48]], [[9,44],[13,41],[13,45],[9,44]]]),\n *   turf.polygon([[[5, 5], [0, 0], [2, 2], [4, 4], [5, 5]]])\n * ]);\n *\n * turf.lineReduce(multiPoly, function (previousValue, currentLine, featureIndex, multiFeatureIndex, geometryIndex) {\n *   //=previousValue\n *   //=currentLine\n *   //=featureIndex\n *   //=multiFeatureIndex\n *   //=geometryIndex\n *   return currentLine\n * });\n */\nfunction lineReduce(geojson, callback, initialValue) {\n  var previousValue = initialValue;\n  lineEach(\n    geojson,\n    function (currentLine, featureIndex, multiFeatureIndex, geometryIndex) {\n      if (featureIndex === 0 && initialValue === undefined)\n        previousValue = currentLine;\n      else\n        previousValue = callback(\n          previousValue,\n          currentLine,\n          featureIndex,\n          multiFeatureIndex,\n          geometryIndex\n        );\n    }\n  );\n  return previousValue;\n}\n\n/**\n * Finds a particular 2-vertex LineString Segment from a GeoJSON using `@turf/meta` indexes.\n *\n * Negative indexes are permitted.\n * Point & MultiPoint will always return null.\n *\n * @param {FeatureCollection|Feature|Geometry} geojson Any GeoJSON Feature or Geometry\n * @param {Object} [options={}] Optional parameters\n * @param {number} [options.featureIndex=0] Feature Index\n * @param {number} [options.multiFeatureIndex=0] Multi-Feature Index\n * @param {number} [options.geometryIndex=0] Geometry Index\n * @param {number} [options.segmentIndex=0] Segment Index\n * @param {Object} [options.properties={}] Translate Properties to output LineString\n * @param {BBox} [options.bbox={}] Translate BBox to output LineString\n * @param {number|string} [options.id={}] Translate Id to output LineString\n * @returns {Feature<LineString>} 2-vertex GeoJSON Feature LineString\n * @example\n * var multiLine = turf.multiLineString([\n *     [[10, 10], [50, 30], [30, 40]],\n *     [[-10, -10], [-50, -30], [-30, -40]]\n * ]);\n *\n * // First Segment (defaults are 0)\n * turf.findSegment(multiLine);\n * // => Feature<LineString<[[10, 10], [50, 30]]>>\n *\n * // First Segment of 2nd Multi Feature\n * turf.findSegment(multiLine, {multiFeatureIndex: 1});\n * // => Feature<LineString<[[-10, -10], [-50, -30]]>>\n *\n * // Last Segment of Last Multi Feature\n * turf.findSegment(multiLine, {multiFeatureIndex: -1, segmentIndex: -1});\n * // => Feature<LineString<[[-50, -30], [-30, -40]]>>\n */\nfunction findSegment(geojson, options) {\n  // Optional Parameters\n  options = options || {};\n  if (!helpers.isObject(options)) throw new Error(\"options is invalid\");\n  var featureIndex = options.featureIndex || 0;\n  var multiFeatureIndex = options.multiFeatureIndex || 0;\n  var geometryIndex = options.geometryIndex || 0;\n  var segmentIndex = options.segmentIndex || 0;\n\n  // Find FeatureIndex\n  var properties = options.properties;\n  var geometry;\n\n  switch (geojson.type) {\n    case \"FeatureCollection\":\n      if (featureIndex < 0)\n        featureIndex = geojson.features.length + featureIndex;\n      properties = properties || geojson.features[featureIndex].properties;\n      geometry = geojson.features[featureIndex].geometry;\n      break;\n    case \"Feature\":\n      properties = properties || geojson.properties;\n      geometry = geojson.geometry;\n      break;\n    case \"Point\":\n    case \"MultiPoint\":\n      return null;\n    case \"LineString\":\n    case \"Polygon\":\n    case \"MultiLineString\":\n    case \"MultiPolygon\":\n      geometry = geojson;\n      break;\n    default:\n      throw new Error(\"geojson is invalid\");\n  }\n\n  // Find SegmentIndex\n  if (geometry === null) return null;\n  var coords = geometry.coordinates;\n  switch (geometry.type) {\n    case \"Point\":\n    case \"MultiPoint\":\n      return null;\n    case \"LineString\":\n      if (segmentIndex < 0) segmentIndex = coords.length + segmentIndex - 1;\n      return helpers.lineString(\n        [coords[segmentIndex], coords[segmentIndex + 1]],\n        properties,\n        options\n      );\n    case \"Polygon\":\n      if (geometryIndex < 0) geometryIndex = coords.length + geometryIndex;\n      if (segmentIndex < 0)\n        segmentIndex = coords[geometryIndex].length + segmentIndex - 1;\n      return helpers.lineString(\n        [\n          coords[geometryIndex][segmentIndex],\n          coords[geometryIndex][segmentIndex + 1],\n        ],\n        properties,\n        options\n      );\n    case \"MultiLineString\":\n      if (multiFeatureIndex < 0)\n        multiFeatureIndex = coords.length + multiFeatureIndex;\n      if (segmentIndex < 0)\n        segmentIndex = coords[multiFeatureIndex].length + segmentIndex - 1;\n      return helpers.lineString(\n        [\n          coords[multiFeatureIndex][segmentIndex],\n          coords[multiFeatureIndex][segmentIndex + 1],\n        ],\n        properties,\n        options\n      );\n    case \"MultiPolygon\":\n      if (multiFeatureIndex < 0)\n        multiFeatureIndex = coords.length + multiFeatureIndex;\n      if (geometryIndex < 0)\n        geometryIndex = coords[multiFeatureIndex].length + geometryIndex;\n      if (segmentIndex < 0)\n        segmentIndex =\n          coords[multiFeatureIndex][geometryIndex].length - segmentIndex - 1;\n      return helpers.lineString(\n        [\n          coords[multiFeatureIndex][geometryIndex][segmentIndex],\n          coords[multiFeatureIndex][geometryIndex][segmentIndex + 1],\n        ],\n        properties,\n        options\n      );\n  }\n  throw new Error(\"geojson is invalid\");\n}\n\n/**\n * Finds a particular Point from a GeoJSON using `@turf/meta` indexes.\n *\n * Negative indexes are permitted.\n *\n * @param {FeatureCollection|Feature|Geometry} geojson Any GeoJSON Feature or Geometry\n * @param {Object} [options={}] Optional parameters\n * @param {number} [options.featureIndex=0] Feature Index\n * @param {number} [options.multiFeatureIndex=0] Multi-Feature Index\n * @param {number} [options.geometryIndex=0] Geometry Index\n * @param {number} [options.coordIndex=0] Coord Index\n * @param {Object} [options.properties={}] Translate Properties to output Point\n * @param {BBox} [options.bbox={}] Translate BBox to output Point\n * @param {number|string} [options.id={}] Translate Id to output Point\n * @returns {Feature<Point>} 2-vertex GeoJSON Feature Point\n * @example\n * var multiLine = turf.multiLineString([\n *     [[10, 10], [50, 30], [30, 40]],\n *     [[-10, -10], [-50, -30], [-30, -40]]\n * ]);\n *\n * // First Segment (defaults are 0)\n * turf.findPoint(multiLine);\n * // => Feature<Point<[10, 10]>>\n *\n * // First Segment of the 2nd Multi-Feature\n * turf.findPoint(multiLine, {multiFeatureIndex: 1});\n * // => Feature<Point<[-10, -10]>>\n *\n * // Last Segment of last Multi-Feature\n * turf.findPoint(multiLine, {multiFeatureIndex: -1, coordIndex: -1});\n * // => Feature<Point<[-30, -40]>>\n */\nfunction findPoint(geojson, options) {\n  // Optional Parameters\n  options = options || {};\n  if (!helpers.isObject(options)) throw new Error(\"options is invalid\");\n  var featureIndex = options.featureIndex || 0;\n  var multiFeatureIndex = options.multiFeatureIndex || 0;\n  var geometryIndex = options.geometryIndex || 0;\n  var coordIndex = options.coordIndex || 0;\n\n  // Find FeatureIndex\n  var properties = options.properties;\n  var geometry;\n\n  switch (geojson.type) {\n    case \"FeatureCollection\":\n      if (featureIndex < 0)\n        featureIndex = geojson.features.length + featureIndex;\n      properties = properties || geojson.features[featureIndex].properties;\n      geometry = geojson.features[featureIndex].geometry;\n      break;\n    case \"Feature\":\n      properties = properties || geojson.properties;\n      geometry = geojson.geometry;\n      break;\n    case \"Point\":\n    case \"MultiPoint\":\n      return null;\n    case \"LineString\":\n    case \"Polygon\":\n    case \"MultiLineString\":\n    case \"MultiPolygon\":\n      geometry = geojson;\n      break;\n    default:\n      throw new Error(\"geojson is invalid\");\n  }\n\n  // Find Coord Index\n  if (geometry === null) return null;\n  var coords = geometry.coordinates;\n  switch (geometry.type) {\n    case \"Point\":\n      return helpers.point(coords, properties, options);\n    case \"MultiPoint\":\n      if (multiFeatureIndex < 0)\n        multiFeatureIndex = coords.length + multiFeatureIndex;\n      return helpers.point(coords[multiFeatureIndex], properties, options);\n    case \"LineString\":\n      if (coordIndex < 0) coordIndex = coords.length + coordIndex;\n      return helpers.point(coords[coordIndex], properties, options);\n    case \"Polygon\":\n      if (geometryIndex < 0) geometryIndex = coords.length + geometryIndex;\n      if (coordIndex < 0)\n        coordIndex = coords[geometryIndex].length + coordIndex;\n      return helpers.point(coords[geometryIndex][coordIndex], properties, options);\n    case \"MultiLineString\":\n      if (multiFeatureIndex < 0)\n        multiFeatureIndex = coords.length + multiFeatureIndex;\n      if (coordIndex < 0)\n        coordIndex = coords[multiFeatureIndex].length + coordIndex;\n      return helpers.point(coords[multiFeatureIndex][coordIndex], properties, options);\n    case \"MultiPolygon\":\n      if (multiFeatureIndex < 0)\n        multiFeatureIndex = coords.length + multiFeatureIndex;\n      if (geometryIndex < 0)\n        geometryIndex = coords[multiFeatureIndex].length + geometryIndex;\n      if (coordIndex < 0)\n        coordIndex =\n          coords[multiFeatureIndex][geometryIndex].length - coordIndex;\n      return helpers.point(\n        coords[multiFeatureIndex][geometryIndex][coordIndex],\n        properties,\n        options\n      );\n  }\n  throw new Error(\"geojson is invalid\");\n}\n\nexports.coordAll = coordAll;\nexports.coordEach = coordEach;\nexports.coordReduce = coordReduce;\nexports.featureEach = featureEach;\nexports.featureReduce = featureReduce;\nexports.findPoint = findPoint;\nexports.findSegment = findSegment;\nexports.flattenEach = flattenEach;\nexports.flattenReduce = flattenReduce;\nexports.geomEach = geomEach;\nexports.geomReduce = geomReduce;\nexports.lineEach = lineEach;\nexports.lineReduce = lineReduce;\nexports.propEach = propEach;\nexports.propReduce = propReduce;\nexports.segmentEach = segmentEach;\nexports.segmentReduce = segmentReduce;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar helpers_1 = require(\"@turf/helpers\");\nvar invariant_1 = require(\"@turf/invariant\");\nvar lineclip_1 = require(\"./lib/lineclip\");\n/**\n * Takes a {@link Feature} and a bbox and clips the feature to the bbox using\n * [lineclip](https://github.com/mapbox/lineclip).\n * May result in degenerate edges when clipping Polygons.\n *\n * @name bboxClip\n * @param {Feature<LineString|MultiLineString|Polygon|MultiPolygon>} feature feature to clip to the bbox\n * @param {BBox} bbox extent in [minX, minY, maxX, maxY] order\n * @returns {Feature<LineString|MultiLineString|Polygon|MultiPolygon>} clipped Feature\n * @example\n * var bbox = [0, 0, 10, 10];\n * var poly = turf.polygon([[[2, 2], [8, 4], [12, 8], [3, 7], [2, 2]]]);\n *\n * var clipped = turf.bboxClip(poly, bbox);\n *\n * //addToMap\n * var addToMap = [bbox, poly, clipped]\n */\nfunction bboxClip(feature, bbox) {\n    var geom = invariant_1.getGeom(feature);\n    var type = geom.type;\n    var properties = feature.type === \"Feature\" ? feature.properties : {};\n    var coords = geom.coordinates;\n    switch (type) {\n        case \"LineString\":\n        case \"MultiLineString\": {\n            var lines_1 = [];\n            if (type === \"LineString\") {\n                coords = [coords];\n            }\n            coords.forEach(function (line) {\n                lineclip_1.lineclip(line, bbox, lines_1);\n            });\n            if (lines_1.length === 1) {\n                return helpers_1.lineString(lines_1[0], properties);\n            }\n            return helpers_1.multiLineString(lines_1, properties);\n        }\n        case \"Polygon\":\n            return helpers_1.polygon(clipPolygon(coords, bbox), properties);\n        case \"MultiPolygon\":\n            return helpers_1.multiPolygon(coords.map(function (poly) {\n                return clipPolygon(poly, bbox);\n            }), properties);\n        default:\n            throw new Error(\"geometry \" + type + \" not supported\");\n    }\n}\nexports.default = bboxClip;\nfunction clipPolygon(rings, bbox) {\n    var outRings = [];\n    for (var _i = 0, rings_1 = rings; _i < rings_1.length; _i++) {\n        var ring = rings_1[_i];\n        var clipped = lineclip_1.polygonclip(ring, bbox);\n        if (clipped.length > 0) {\n            if (clipped[0][0] !== clipped[clipped.length - 1][0] ||\n                clipped[0][1] !== clipped[clipped.length - 1][1]) {\n                clipped.push(clipped[0]);\n            }\n            if (clipped.length >= 4) {\n                outRings.push(clipped);\n            }\n        }\n    }\n    return outRings;\n}\n","\"use strict\";\n// Cohen-Sutherland line clipping algorithm, adapted to efficiently\n// handle polylines rather than just segments\nObject.defineProperty(exports, \"__esModule\", { value: true });\nfunction lineclip(points, bbox, result) {\n    var len = points.length, codeA = bitCode(points[0], bbox), part = [], i, codeB, lastCode;\n    var a;\n    var b;\n    if (!result)\n        result = [];\n    for (i = 1; i < len; i++) {\n        a = points[i - 1];\n        b = points[i];\n        codeB = lastCode = bitCode(b, bbox);\n        while (true) {\n            if (!(codeA | codeB)) {\n                // accept\n                part.push(a);\n                if (codeB !== lastCode) {\n                    // segment went outside\n                    part.push(b);\n                    if (i < len - 1) {\n                        // start a new line\n                        result.push(part);\n                        part = [];\n                    }\n                }\n                else if (i === len - 1) {\n                    part.push(b);\n                }\n                break;\n            }\n            else if (codeA & codeB) {\n                // trivial reject\n                break;\n            }\n            else if (codeA) {\n                // a outside, intersect with clip edge\n                a = intersect(a, b, codeA, bbox);\n                codeA = bitCode(a, bbox);\n            }\n            else {\n                // b outside\n                b = intersect(a, b, codeB, bbox);\n                codeB = bitCode(b, bbox);\n            }\n        }\n        codeA = lastCode;\n    }\n    if (part.length)\n        result.push(part);\n    return result;\n}\nexports.lineclip = lineclip;\n// Sutherland-Hodgeman polygon clipping algorithm\nfunction polygonclip(points, bbox) {\n    var result, edge, prev, prevInside, i, p, inside;\n    // clip against each side of the clip rectangle\n    for (edge = 1; edge <= 8; edge *= 2) {\n        result = [];\n        prev = points[points.length - 1];\n        prevInside = !(bitCode(prev, bbox) & edge);\n        for (i = 0; i < points.length; i++) {\n            p = points[i];\n            inside = !(bitCode(p, bbox) & edge);\n            // if segment goes through the clip window, add an intersection\n            if (inside !== prevInside)\n                result.push(intersect(prev, p, edge, bbox));\n            if (inside)\n                result.push(p); // add a point if it's inside\n            prev = p;\n            prevInside = inside;\n        }\n        points = result;\n        if (!points.length)\n            break;\n    }\n    return result;\n}\nexports.polygonclip = polygonclip;\n// intersect a segment against one of the 4 lines that make up the bbox\nfunction intersect(a, b, edge, bbox) {\n    return edge & 8\n        ? [a[0] + ((b[0] - a[0]) * (bbox[3] - a[1])) / (b[1] - a[1]), bbox[3]] // top\n        : edge & 4\n            ? [a[0] + ((b[0] - a[0]) * (bbox[1] - a[1])) / (b[1] - a[1]), bbox[1]] // bottom\n            : edge & 2\n                ? [bbox[2], a[1] + ((b[1] - a[1]) * (bbox[2] - a[0])) / (b[0] - a[0])] // right\n                : edge & 1\n                    ? [bbox[0], a[1] + ((b[1] - a[1]) * (bbox[0] - a[0])) / (b[0] - a[0])] // left\n                    : null;\n}\n// bit code reflects the point position relative to the bbox:\n//         left  mid  right\n//    top  1001  1000  1010\n//    mid  0001  0000  0010\n// bottom  0101  0100  0110\nfunction bitCode(p, bbox) {\n    var code = 0;\n    if (p[0] < bbox[0])\n        code |= 1;\n    // left\n    else if (p[0] > bbox[2])\n        code |= 2; // right\n    if (p[1] < bbox[1])\n        code |= 4;\n    // bottom\n    else if (p[1] > bbox[3])\n        code |= 8; // top\n    return code;\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * @module helpers\n */\n/**\n * Earth Radius used with the Harvesine formula and approximates using a spherical (non-ellipsoid) Earth.\n *\n * @memberof helpers\n * @type {number}\n */\nexports.earthRadius = 6371008.8;\n/**\n * Unit of measurement factors using a spherical (non-ellipsoid) earth radius.\n *\n * @memberof helpers\n * @type {Object}\n */\nexports.factors = {\n    centimeters: exports.earthRadius * 100,\n    centimetres: exports.earthRadius * 100,\n    degrees: exports.earthRadius / 111325,\n    feet: exports.earthRadius * 3.28084,\n    inches: exports.earthRadius * 39.37,\n    kilometers: exports.earthRadius / 1000,\n    kilometres: exports.earthRadius / 1000,\n    meters: exports.earthRadius,\n    metres: exports.earthRadius,\n    miles: exports.earthRadius / 1609.344,\n    millimeters: exports.earthRadius * 1000,\n    millimetres: exports.earthRadius * 1000,\n    nauticalmiles: exports.earthRadius / 1852,\n    radians: 1,\n    yards: exports.earthRadius * 1.0936,\n};\n/**\n * Units of measurement factors based on 1 meter.\n *\n * @memberof helpers\n * @type {Object}\n */\nexports.unitsFactors = {\n    centimeters: 100,\n    centimetres: 100,\n    degrees: 1 / 111325,\n    feet: 3.28084,\n    inches: 39.37,\n    kilometers: 1 / 1000,\n    kilometres: 1 / 1000,\n    meters: 1,\n    metres: 1,\n    miles: 1 / 1609.344,\n    millimeters: 1000,\n    millimetres: 1000,\n    nauticalmiles: 1 / 1852,\n    radians: 1 / exports.earthRadius,\n    yards: 1.0936133,\n};\n/**\n * Area of measurement factors based on 1 square meter.\n *\n * @memberof helpers\n * @type {Object}\n */\nexports.areaFactors = {\n    acres: 0.000247105,\n    centimeters: 10000,\n    centimetres: 10000,\n    feet: 10.763910417,\n    hectares: 0.0001,\n    inches: 1550.003100006,\n    kilometers: 0.000001,\n    kilometres: 0.000001,\n    meters: 1,\n    metres: 1,\n    miles: 3.86e-7,\n    millimeters: 1000000,\n    millimetres: 1000000,\n    yards: 1.195990046,\n};\n/**\n * Wraps a GeoJSON {@link Geometry} in a GeoJSON {@link Feature}.\n *\n * @name feature\n * @param {Geometry} geometry input geometry\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} a GeoJSON Feature\n * @example\n * var geometry = {\n *   \"type\": \"Point\",\n *   \"coordinates\": [110, 50]\n * };\n *\n * var feature = turf.feature(geometry);\n *\n * //=feature\n */\nfunction feature(geom, properties, options) {\n    if (options === void 0) { options = {}; }\n    var feat = { type: \"Feature\" };\n    if (options.id === 0 || options.id) {\n        feat.id = options.id;\n    }\n    if (options.bbox) {\n        feat.bbox = options.bbox;\n    }\n    feat.properties = properties || {};\n    feat.geometry = geom;\n    return feat;\n}\nexports.feature = feature;\n/**\n * Creates a GeoJSON {@link Geometry} from a Geometry string type & coordinates.\n * For GeometryCollection type use `helpers.geometryCollection`\n *\n * @name geometry\n * @param {string} type Geometry Type\n * @param {Array<any>} coordinates Coordinates\n * @param {Object} [options={}] Optional Parameters\n * @returns {Geometry} a GeoJSON Geometry\n * @example\n * var type = \"Point\";\n * var coordinates = [110, 50];\n * var geometry = turf.geometry(type, coordinates);\n * // => geometry\n */\nfunction geometry(type, coordinates, _options) {\n    if (_options === void 0) { _options = {}; }\n    switch (type) {\n        case \"Point\":\n            return point(coordinates).geometry;\n        case \"LineString\":\n            return lineString(coordinates).geometry;\n        case \"Polygon\":\n            return polygon(coordinates).geometry;\n        case \"MultiPoint\":\n            return multiPoint(coordinates).geometry;\n        case \"MultiLineString\":\n            return multiLineString(coordinates).geometry;\n        case \"MultiPolygon\":\n            return multiPolygon(coordinates).geometry;\n        default:\n            throw new Error(type + \" is invalid\");\n    }\n}\nexports.geometry = geometry;\n/**\n * Creates a {@link Point} {@link Feature} from a Position.\n *\n * @name point\n * @param {Array<number>} coordinates longitude, latitude position (each in decimal degrees)\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<Point>} a Point feature\n * @example\n * var point = turf.point([-75.343, 39.984]);\n *\n * //=point\n */\nfunction point(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    if (!coordinates) {\n        throw new Error(\"coordinates is required\");\n    }\n    if (!Array.isArray(coordinates)) {\n        throw new Error(\"coordinates must be an Array\");\n    }\n    if (coordinates.length < 2) {\n        throw new Error(\"coordinates must be at least 2 numbers long\");\n    }\n    if (!isNumber(coordinates[0]) || !isNumber(coordinates[1])) {\n        throw new Error(\"coordinates must contain numbers\");\n    }\n    var geom = {\n        type: \"Point\",\n        coordinates: coordinates,\n    };\n    return feature(geom, properties, options);\n}\nexports.point = point;\n/**\n * Creates a {@link Point} {@link FeatureCollection} from an Array of Point coordinates.\n *\n * @name points\n * @param {Array<Array<number>>} coordinates an array of Points\n * @param {Object} [properties={}] Translate these properties to each Feature\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north]\n * associated with the FeatureCollection\n * @param {string|number} [options.id] Identifier associated with the FeatureCollection\n * @returns {FeatureCollection<Point>} Point Feature\n * @example\n * var points = turf.points([\n *   [-75, 39],\n *   [-80, 45],\n *   [-78, 50]\n * ]);\n *\n * //=points\n */\nfunction points(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    return featureCollection(coordinates.map(function (coords) {\n        return point(coords, properties);\n    }), options);\n}\nexports.points = points;\n/**\n * Creates a {@link Polygon} {@link Feature} from an Array of LinearRings.\n *\n * @name polygon\n * @param {Array<Array<Array<number>>>} coordinates an array of LinearRings\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<Polygon>} Polygon Feature\n * @example\n * var polygon = turf.polygon([[[-5, 52], [-4, 56], [-2, 51], [-7, 54], [-5, 52]]], { name: 'poly1' });\n *\n * //=polygon\n */\nfunction polygon(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    for (var _i = 0, coordinates_1 = coordinates; _i < coordinates_1.length; _i++) {\n        var ring = coordinates_1[_i];\n        if (ring.length < 4) {\n            throw new Error(\"Each LinearRing of a Polygon must have 4 or more Positions.\");\n        }\n        for (var j = 0; j < ring[ring.length - 1].length; j++) {\n            // Check if first point of Polygon contains two numbers\n            if (ring[ring.length - 1][j] !== ring[0][j]) {\n                throw new Error(\"First and last Position are not equivalent.\");\n            }\n        }\n    }\n    var geom = {\n        type: \"Polygon\",\n        coordinates: coordinates,\n    };\n    return feature(geom, properties, options);\n}\nexports.polygon = polygon;\n/**\n * Creates a {@link Polygon} {@link FeatureCollection} from an Array of Polygon coordinates.\n *\n * @name polygons\n * @param {Array<Array<Array<Array<number>>>>} coordinates an array of Polygon coordinates\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the FeatureCollection\n * @returns {FeatureCollection<Polygon>} Polygon FeatureCollection\n * @example\n * var polygons = turf.polygons([\n *   [[[-5, 52], [-4, 56], [-2, 51], [-7, 54], [-5, 52]]],\n *   [[[-15, 42], [-14, 46], [-12, 41], [-17, 44], [-15, 42]]],\n * ]);\n *\n * //=polygons\n */\nfunction polygons(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    return featureCollection(coordinates.map(function (coords) {\n        return polygon(coords, properties);\n    }), options);\n}\nexports.polygons = polygons;\n/**\n * Creates a {@link LineString} {@link Feature} from an Array of Positions.\n *\n * @name lineString\n * @param {Array<Array<number>>} coordinates an array of Positions\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<LineString>} LineString Feature\n * @example\n * var linestring1 = turf.lineString([[-24, 63], [-23, 60], [-25, 65], [-20, 69]], {name: 'line 1'});\n * var linestring2 = turf.lineString([[-14, 43], [-13, 40], [-15, 45], [-10, 49]], {name: 'line 2'});\n *\n * //=linestring1\n * //=linestring2\n */\nfunction lineString(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    if (coordinates.length < 2) {\n        throw new Error(\"coordinates must be an array of two or more positions\");\n    }\n    var geom = {\n        type: \"LineString\",\n        coordinates: coordinates,\n    };\n    return feature(geom, properties, options);\n}\nexports.lineString = lineString;\n/**\n * Creates a {@link LineString} {@link FeatureCollection} from an Array of LineString coordinates.\n *\n * @name lineStrings\n * @param {Array<Array<Array<number>>>} coordinates an array of LinearRings\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north]\n * associated with the FeatureCollection\n * @param {string|number} [options.id] Identifier associated with the FeatureCollection\n * @returns {FeatureCollection<LineString>} LineString FeatureCollection\n * @example\n * var linestrings = turf.lineStrings([\n *   [[-24, 63], [-23, 60], [-25, 65], [-20, 69]],\n *   [[-14, 43], [-13, 40], [-15, 45], [-10, 49]]\n * ]);\n *\n * //=linestrings\n */\nfunction lineStrings(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    return featureCollection(coordinates.map(function (coords) {\n        return lineString(coords, properties);\n    }), options);\n}\nexports.lineStrings = lineStrings;\n/**\n * Takes one or more {@link Feature|Features} and creates a {@link FeatureCollection}.\n *\n * @name featureCollection\n * @param {Feature[]} features input features\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {FeatureCollection} FeatureCollection of Features\n * @example\n * var locationA = turf.point([-75.343, 39.984], {name: 'Location A'});\n * var locationB = turf.point([-75.833, 39.284], {name: 'Location B'});\n * var locationC = turf.point([-75.534, 39.123], {name: 'Location C'});\n *\n * var collection = turf.featureCollection([\n *   locationA,\n *   locationB,\n *   locationC\n * ]);\n *\n * //=collection\n */\nfunction featureCollection(features, options) {\n    if (options === void 0) { options = {}; }\n    var fc = { type: \"FeatureCollection\" };\n    if (options.id) {\n        fc.id = options.id;\n    }\n    if (options.bbox) {\n        fc.bbox = options.bbox;\n    }\n    fc.features = features;\n    return fc;\n}\nexports.featureCollection = featureCollection;\n/**\n * Creates a {@link Feature<MultiLineString>} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name multiLineString\n * @param {Array<Array<Array<number>>>} coordinates an array of LineStrings\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<MultiLineString>} a MultiLineString feature\n * @throws {Error} if no coordinates are passed\n * @example\n * var multiLine = turf.multiLineString([[[0,0],[10,10]]]);\n *\n * //=multiLine\n */\nfunction multiLineString(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    var geom = {\n        type: \"MultiLineString\",\n        coordinates: coordinates,\n    };\n    return feature(geom, properties, options);\n}\nexports.multiLineString = multiLineString;\n/**\n * Creates a {@link Feature<MultiPoint>} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name multiPoint\n * @param {Array<Array<number>>} coordinates an array of Positions\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<MultiPoint>} a MultiPoint feature\n * @throws {Error} if no coordinates are passed\n * @example\n * var multiPt = turf.multiPoint([[0,0],[10,10]]);\n *\n * //=multiPt\n */\nfunction multiPoint(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    var geom = {\n        type: \"MultiPoint\",\n        coordinates: coordinates,\n    };\n    return feature(geom, properties, options);\n}\nexports.multiPoint = multiPoint;\n/**\n * Creates a {@link Feature<MultiPolygon>} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name multiPolygon\n * @param {Array<Array<Array<Array<number>>>>} coordinates an array of Polygons\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<MultiPolygon>} a multipolygon feature\n * @throws {Error} if no coordinates are passed\n * @example\n * var multiPoly = turf.multiPolygon([[[[0,0],[0,10],[10,10],[10,0],[0,0]]]]);\n *\n * //=multiPoly\n *\n */\nfunction multiPolygon(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    var geom = {\n        type: \"MultiPolygon\",\n        coordinates: coordinates,\n    };\n    return feature(geom, properties, options);\n}\nexports.multiPolygon = multiPolygon;\n/**\n * Creates a {@link Feature<GeometryCollection>} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name geometryCollection\n * @param {Array<Geometry>} geometries an array of GeoJSON Geometries\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<GeometryCollection>} a GeoJSON GeometryCollection Feature\n * @example\n * var pt = turf.geometry(\"Point\", [100, 0]);\n * var line = turf.geometry(\"LineString\", [[101, 0], [102, 1]]);\n * var collection = turf.geometryCollection([pt, line]);\n *\n * // => collection\n */\nfunction geometryCollection(geometries, properties, options) {\n    if (options === void 0) { options = {}; }\n    var geom = {\n        type: \"GeometryCollection\",\n        geometries: geometries,\n    };\n    return feature(geom, properties, options);\n}\nexports.geometryCollection = geometryCollection;\n/**\n * Round number to precision\n *\n * @param {number} num Number\n * @param {number} [precision=0] Precision\n * @returns {number} rounded number\n * @example\n * turf.round(120.4321)\n * //=120\n *\n * turf.round(120.4321, 2)\n * //=120.43\n */\nfunction round(num, precision) {\n    if (precision === void 0) { precision = 0; }\n    if (precision && !(precision >= 0)) {\n        throw new Error(\"precision must be a positive number\");\n    }\n    var multiplier = Math.pow(10, precision || 0);\n    return Math.round(num * multiplier) / multiplier;\n}\nexports.round = round;\n/**\n * Convert a distance measurement (assuming a spherical Earth) from radians to a more friendly unit.\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet\n *\n * @name radiansToLength\n * @param {number} radians in radians across the sphere\n * @param {string} [units=\"kilometers\"] can be degrees, radians, miles, inches, yards, metres,\n * meters, kilometres, kilometers.\n * @returns {number} distance\n */\nfunction radiansToLength(radians, units) {\n    if (units === void 0) { units = \"kilometers\"; }\n    var factor = exports.factors[units];\n    if (!factor) {\n        throw new Error(units + \" units is invalid\");\n    }\n    return radians * factor;\n}\nexports.radiansToLength = radiansToLength;\n/**\n * Convert a distance measurement (assuming a spherical Earth) from a real-world unit into radians\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet\n *\n * @name lengthToRadians\n * @param {number} distance in real units\n * @param {string} [units=\"kilometers\"] can be degrees, radians, miles, inches, yards, metres,\n * meters, kilometres, kilometers.\n * @returns {number} radians\n */\nfunction lengthToRadians(distance, units) {\n    if (units === void 0) { units = \"kilometers\"; }\n    var factor = exports.factors[units];\n    if (!factor) {\n        throw new Error(units + \" units is invalid\");\n    }\n    return distance / factor;\n}\nexports.lengthToRadians = lengthToRadians;\n/**\n * Convert a distance measurement (assuming a spherical Earth) from a real-world unit into degrees\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, centimeters, kilometres, feet\n *\n * @name lengthToDegrees\n * @param {number} distance in real units\n * @param {string} [units=\"kilometers\"] can be degrees, radians, miles, inches, yards, metres,\n * meters, kilometres, kilometers.\n * @returns {number} degrees\n */\nfunction lengthToDegrees(distance, units) {\n    return radiansToDegrees(lengthToRadians(distance, units));\n}\nexports.lengthToDegrees = lengthToDegrees;\n/**\n * Converts any bearing angle from the north line direction (positive clockwise)\n * and returns an angle between 0-360 degrees (positive clockwise), 0 being the north line\n *\n * @name bearingToAzimuth\n * @param {number} bearing angle, between -180 and +180 degrees\n * @returns {number} angle between 0 and 360 degrees\n */\nfunction bearingToAzimuth(bearing) {\n    var angle = bearing % 360;\n    if (angle < 0) {\n        angle += 360;\n    }\n    return angle;\n}\nexports.bearingToAzimuth = bearingToAzimuth;\n/**\n * Converts an angle in radians to degrees\n *\n * @name radiansToDegrees\n * @param {number} radians angle in radians\n * @returns {number} degrees between 0 and 360 degrees\n */\nfunction radiansToDegrees(radians) {\n    var degrees = radians % (2 * Math.PI);\n    return (degrees * 180) / Math.PI;\n}\nexports.radiansToDegrees = radiansToDegrees;\n/**\n * Converts an angle in degrees to radians\n *\n * @name degreesToRadians\n * @param {number} degrees angle between 0 and 360 degrees\n * @returns {number} angle in radians\n */\nfunction degreesToRadians(degrees) {\n    var radians = degrees % 360;\n    return (radians * Math.PI) / 180;\n}\nexports.degreesToRadians = degreesToRadians;\n/**\n * Converts a length to the requested unit.\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet\n *\n * @param {number} length to be converted\n * @param {Units} [originalUnit=\"kilometers\"] of the length\n * @param {Units} [finalUnit=\"kilometers\"] returned unit\n * @returns {number} the converted length\n */\nfunction convertLength(length, originalUnit, finalUnit) {\n    if (originalUnit === void 0) { originalUnit = \"kilometers\"; }\n    if (finalUnit === void 0) { finalUnit = \"kilometers\"; }\n    if (!(length >= 0)) {\n        throw new Error(\"length must be a positive number\");\n    }\n    return radiansToLength(lengthToRadians(length, originalUnit), finalUnit);\n}\nexports.convertLength = convertLength;\n/**\n * Converts a area to the requested unit.\n * Valid units: kilometers, kilometres, meters, metres, centimetres, millimeters, acres, miles, yards, feet, inches, hectares\n * @param {number} area to be converted\n * @param {Units} [originalUnit=\"meters\"] of the distance\n * @param {Units} [finalUnit=\"kilometers\"] returned unit\n * @returns {number} the converted area\n */\nfunction convertArea(area, originalUnit, finalUnit) {\n    if (originalUnit === void 0) { originalUnit = \"meters\"; }\n    if (finalUnit === void 0) { finalUnit = \"kilometers\"; }\n    if (!(area >= 0)) {\n        throw new Error(\"area must be a positive number\");\n    }\n    var startFactor = exports.areaFactors[originalUnit];\n    if (!startFactor) {\n        throw new Error(\"invalid original units\");\n    }\n    var finalFactor = exports.areaFactors[finalUnit];\n    if (!finalFactor) {\n        throw new Error(\"invalid final units\");\n    }\n    return (area / startFactor) * finalFactor;\n}\nexports.convertArea = convertArea;\n/**\n * isNumber\n *\n * @param {*} num Number to validate\n * @returns {boolean} true/false\n * @example\n * turf.isNumber(123)\n * //=true\n * turf.isNumber('foo')\n * //=false\n */\nfunction isNumber(num) {\n    return !isNaN(num) && num !== null && !Array.isArray(num);\n}\nexports.isNumber = isNumber;\n/**\n * isObject\n *\n * @param {*} input variable to validate\n * @returns {boolean} true/false\n * @example\n * turf.isObject({elevation: 10})\n * //=true\n * turf.isObject('foo')\n * //=false\n */\nfunction isObject(input) {\n    return !!input && input.constructor === Object;\n}\nexports.isObject = isObject;\n/**\n * Validate BBox\n *\n * @private\n * @param {Array<number>} bbox BBox to validate\n * @returns {void}\n * @throws Error if BBox is not valid\n * @example\n * validateBBox([-180, -40, 110, 50])\n * //=OK\n * validateBBox([-180, -40])\n * //=Error\n * validateBBox('Foo')\n * //=Error\n * validateBBox(5)\n * //=Error\n * validateBBox(null)\n * //=Error\n * validateBBox(undefined)\n * //=Error\n */\nfunction validateBBox(bbox) {\n    if (!bbox) {\n        throw new Error(\"bbox is required\");\n    }\n    if (!Array.isArray(bbox)) {\n        throw new Error(\"bbox must be an Array\");\n    }\n    if (bbox.length !== 4 && bbox.length !== 6) {\n        throw new Error(\"bbox must be an Array of 4 or 6 numbers\");\n    }\n    bbox.forEach(function (num) {\n        if (!isNumber(num)) {\n            throw new Error(\"bbox must only contain numbers\");\n        }\n    });\n}\nexports.validateBBox = validateBBox;\n/**\n * Validate Id\n *\n * @private\n * @param {string|number} id Id to validate\n * @returns {void}\n * @throws Error if Id is not valid\n * @example\n * validateId([-180, -40, 110, 50])\n * //=Error\n * validateId([-180, -40])\n * //=Error\n * validateId('Foo')\n * //=OK\n * validateId(5)\n * //=OK\n * validateId(null)\n * //=Error\n * validateId(undefined)\n * //=Error\n */\nfunction validateId(id) {\n    if (!id) {\n        throw new Error(\"id is required\");\n    }\n    if ([\"string\", \"number\"].indexOf(typeof id) === -1) {\n        throw new Error(\"id must be a number or a string\");\n    }\n}\nexports.validateId = validateId;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar helpers_1 = require(\"@turf/helpers\");\n/**\n * Unwrap a coordinate from a Point Feature, Geometry or a single coordinate.\n *\n * @name getCoord\n * @param {Array<number>|Geometry<Point>|Feature<Point>} coord GeoJSON Point or an Array of numbers\n * @returns {Array<number>} coordinates\n * @example\n * var pt = turf.point([10, 10]);\n *\n * var coord = turf.getCoord(pt);\n * //= [10, 10]\n */\nfunction getCoord(coord) {\n    if (!coord) {\n        throw new Error(\"coord is required\");\n    }\n    if (!Array.isArray(coord)) {\n        if (coord.type === \"Feature\" &&\n            coord.geometry !== null &&\n            coord.geometry.type === \"Point\") {\n            return coord.geometry.coordinates;\n        }\n        if (coord.type === \"Point\") {\n            return coord.coordinates;\n        }\n    }\n    if (Array.isArray(coord) &&\n        coord.length >= 2 &&\n        !Array.isArray(coord[0]) &&\n        !Array.isArray(coord[1])) {\n        return coord;\n    }\n    throw new Error(\"coord must be GeoJSON Point or an Array of numbers\");\n}\nexports.getCoord = getCoord;\n/**\n * Unwrap coordinates from a Feature, Geometry Object or an Array\n *\n * @name getCoords\n * @param {Array<any>|Geometry|Feature} coords Feature, Geometry Object or an Array\n * @returns {Array<any>} coordinates\n * @example\n * var poly = turf.polygon([[[119.32, -8.7], [119.55, -8.69], [119.51, -8.54], [119.32, -8.7]]]);\n *\n * var coords = turf.getCoords(poly);\n * //= [[[119.32, -8.7], [119.55, -8.69], [119.51, -8.54], [119.32, -8.7]]]\n */\nfunction getCoords(coords) {\n    if (Array.isArray(coords)) {\n        return coords;\n    }\n    // Feature\n    if (coords.type === \"Feature\") {\n        if (coords.geometry !== null) {\n            return coords.geometry.coordinates;\n        }\n    }\n    else {\n        // Geometry\n        if (coords.coordinates) {\n            return coords.coordinates;\n        }\n    }\n    throw new Error(\"coords must be GeoJSON Feature, Geometry Object or an Array\");\n}\nexports.getCoords = getCoords;\n/**\n * Checks if coordinates contains a number\n *\n * @name containsNumber\n * @param {Array<any>} coordinates GeoJSON Coordinates\n * @returns {boolean} true if Array contains a number\n */\nfunction containsNumber(coordinates) {\n    if (coordinates.length > 1 &&\n        helpers_1.isNumber(coordinates[0]) &&\n        helpers_1.isNumber(coordinates[1])) {\n        return true;\n    }\n    if (Array.isArray(coordinates[0]) && coordinates[0].length) {\n        return containsNumber(coordinates[0]);\n    }\n    throw new Error(\"coordinates must only contain numbers\");\n}\nexports.containsNumber = containsNumber;\n/**\n * Enforce expectations about types of GeoJSON objects for Turf.\n *\n * @name geojsonType\n * @param {GeoJSON} value any GeoJSON object\n * @param {string} type expected GeoJSON type\n * @param {string} name name of calling function\n * @throws {Error} if value is not the expected type.\n */\nfunction geojsonType(value, type, name) {\n    if (!type || !name) {\n        throw new Error(\"type and name required\");\n    }\n    if (!value || value.type !== type) {\n        throw new Error(\"Invalid input to \" +\n            name +\n            \": must be a \" +\n            type +\n            \", given \" +\n            value.type);\n    }\n}\nexports.geojsonType = geojsonType;\n/**\n * Enforce expectations about types of {@link Feature} inputs for Turf.\n * Internally this uses {@link geojsonType} to judge geometry types.\n *\n * @name featureOf\n * @param {Feature} feature a feature with an expected geometry type\n * @param {string} type expected GeoJSON type\n * @param {string} name name of calling function\n * @throws {Error} error if value is not the expected type.\n */\nfunction featureOf(feature, type, name) {\n    if (!feature) {\n        throw new Error(\"No feature passed\");\n    }\n    if (!name) {\n        throw new Error(\".featureOf() requires a name\");\n    }\n    if (!feature || feature.type !== \"Feature\" || !feature.geometry) {\n        throw new Error(\"Invalid input to \" + name + \", Feature with geometry required\");\n    }\n    if (!feature.geometry || feature.geometry.type !== type) {\n        throw new Error(\"Invalid input to \" +\n            name +\n            \": must be a \" +\n            type +\n            \", given \" +\n            feature.geometry.type);\n    }\n}\nexports.featureOf = featureOf;\n/**\n * Enforce expectations about types of {@link FeatureCollection} inputs for Turf.\n * Internally this uses {@link geojsonType} to judge geometry types.\n *\n * @name collectionOf\n * @param {FeatureCollection} featureCollection a FeatureCollection for which features will be judged\n * @param {string} type expected GeoJSON type\n * @param {string} name name of calling function\n * @throws {Error} if value is not the expected type.\n */\nfunction collectionOf(featureCollection, type, name) {\n    if (!featureCollection) {\n        throw new Error(\"No featureCollection passed\");\n    }\n    if (!name) {\n        throw new Error(\".collectionOf() requires a name\");\n    }\n    if (!featureCollection || featureCollection.type !== \"FeatureCollection\") {\n        throw new Error(\"Invalid input to \" + name + \", FeatureCollection required\");\n    }\n    for (var _i = 0, _a = featureCollection.features; _i < _a.length; _i++) {\n        var feature = _a[_i];\n        if (!feature || feature.type !== \"Feature\" || !feature.geometry) {\n            throw new Error(\"Invalid input to \" + name + \", Feature with geometry required\");\n        }\n        if (!feature.geometry || feature.geometry.type !== type) {\n            throw new Error(\"Invalid input to \" +\n                name +\n                \": must be a \" +\n                type +\n                \", given \" +\n                feature.geometry.type);\n        }\n    }\n}\nexports.collectionOf = collectionOf;\n/**\n * Get Geometry from Feature or Geometry Object\n *\n * @param {Feature|Geometry} geojson GeoJSON Feature or Geometry Object\n * @returns {Geometry|null} GeoJSON Geometry Object\n * @throws {Error} if geojson is not a Feature or Geometry Object\n * @example\n * var point = {\n *   \"type\": \"Feature\",\n *   \"properties\": {},\n *   \"geometry\": {\n *     \"type\": \"Point\",\n *     \"coordinates\": [110, 40]\n *   }\n * }\n * var geom = turf.getGeom(point)\n * //={\"type\": \"Point\", \"coordinates\": [110, 40]}\n */\nfunction getGeom(geojson) {\n    if (geojson.type === \"Feature\") {\n        return geojson.geometry;\n    }\n    return geojson;\n}\nexports.getGeom = getGeom;\n/**\n * Get GeoJSON object's type, Geometry type is prioritize.\n *\n * @param {GeoJSON} geojson GeoJSON object\n * @param {string} [name=\"geojson\"] name of the variable to display in error message (unused)\n * @returns {string} GeoJSON type\n * @example\n * var point = {\n *   \"type\": \"Feature\",\n *   \"properties\": {},\n *   \"geometry\": {\n *     \"type\": \"Point\",\n *     \"coordinates\": [110, 40]\n *   }\n * }\n * var geom = turf.getType(point)\n * //=\"Point\"\n */\nfunction getType(geojson, _name) {\n    if (geojson.type === \"FeatureCollection\") {\n        return \"FeatureCollection\";\n    }\n    if (geojson.type === \"GeometryCollection\") {\n        return \"GeometryCollection\";\n    }\n    if (geojson.type === \"Feature\" && geojson.geometry !== null) {\n        return geojson.geometry.type;\n    }\n    return geojson.type;\n}\nexports.getType = getType;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar helpers_1 = require(\"@turf/helpers\");\n/**\n * Takes a bbox and returns an equivalent {@link Polygon|polygon}.\n *\n * @name bboxPolygon\n * @param {BBox} bbox extent in [minX, minY, maxX, maxY] order\n * @param {Object} [options={}] Optional parameters\n * @param {Properties} [options.properties={}] Translate properties to Polygon\n * @param {string|number} [options.id={}] Translate Id to Polygon\n * @returns {Feature<Polygon>} a Polygon representation of the bounding box\n * @example\n * var bbox = [0, 0, 10, 10];\n *\n * var poly = turf.bboxPolygon(bbox);\n *\n * //addToMap\n * var addToMap = [poly]\n */\nfunction bboxPolygon(bbox, options) {\n    if (options === void 0) { options = {}; }\n    // Convert BBox positions to Numbers\n    // No performance loss for including Number()\n    // https://github.com/Turfjs/turf/issues/1119\n    var west = Number(bbox[0]);\n    var south = Number(bbox[1]);\n    var east = Number(bbox[2]);\n    var north = Number(bbox[3]);\n    if (bbox.length === 6) {\n        throw new Error(\"@turf/bbox-polygon does not support BBox with 6 positions\");\n    }\n    var lowLeft = [west, south];\n    var topLeft = [west, north];\n    var topRight = [east, north];\n    var lowRight = [east, south];\n    return helpers_1.polygon([[lowLeft, lowRight, topRight, topLeft, lowLeft]], options.properties, { bbox: bbox, id: options.id });\n}\nexports.default = bboxPolygon;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * @module helpers\n */\n/**\n * Earth Radius used with the Harvesine formula and approximates using a spherical (non-ellipsoid) Earth.\n *\n * @memberof helpers\n * @type {number}\n */\nexports.earthRadius = 6371008.8;\n/**\n * Unit of measurement factors using a spherical (non-ellipsoid) earth radius.\n *\n * @memberof helpers\n * @type {Object}\n */\nexports.factors = {\n    centimeters: exports.earthRadius * 100,\n    centimetres: exports.earthRadius * 100,\n    degrees: exports.earthRadius / 111325,\n    feet: exports.earthRadius * 3.28084,\n    inches: exports.earthRadius * 39.37,\n    kilometers: exports.earthRadius / 1000,\n    kilometres: exports.earthRadius / 1000,\n    meters: exports.earthRadius,\n    metres: exports.earthRadius,\n    miles: exports.earthRadius / 1609.344,\n    millimeters: exports.earthRadius * 1000,\n    millimetres: exports.earthRadius * 1000,\n    nauticalmiles: exports.earthRadius / 1852,\n    radians: 1,\n    yards: exports.earthRadius * 1.0936,\n};\n/**\n * Units of measurement factors based on 1 meter.\n *\n * @memberof helpers\n * @type {Object}\n */\nexports.unitsFactors = {\n    centimeters: 100,\n    centimetres: 100,\n    degrees: 1 / 111325,\n    feet: 3.28084,\n    inches: 39.37,\n    kilometers: 1 / 1000,\n    kilometres: 1 / 1000,\n    meters: 1,\n    metres: 1,\n    miles: 1 / 1609.344,\n    millimeters: 1000,\n    millimetres: 1000,\n    nauticalmiles: 1 / 1852,\n    radians: 1 / exports.earthRadius,\n    yards: 1.0936133,\n};\n/**\n * Area of measurement factors based on 1 square meter.\n *\n * @memberof helpers\n * @type {Object}\n */\nexports.areaFactors = {\n    acres: 0.000247105,\n    centimeters: 10000,\n    centimetres: 10000,\n    feet: 10.763910417,\n    hectares: 0.0001,\n    inches: 1550.003100006,\n    kilometers: 0.000001,\n    kilometres: 0.000001,\n    meters: 1,\n    metres: 1,\n    miles: 3.86e-7,\n    millimeters: 1000000,\n    millimetres: 1000000,\n    yards: 1.195990046,\n};\n/**\n * Wraps a GeoJSON {@link Geometry} in a GeoJSON {@link Feature}.\n *\n * @name feature\n * @param {Geometry} geometry input geometry\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} a GeoJSON Feature\n * @example\n * var geometry = {\n *   \"type\": \"Point\",\n *   \"coordinates\": [110, 50]\n * };\n *\n * var feature = turf.feature(geometry);\n *\n * //=feature\n */\nfunction feature(geom, properties, options) {\n    if (options === void 0) { options = {}; }\n    var feat = { type: \"Feature\" };\n    if (options.id === 0 || options.id) {\n        feat.id = options.id;\n    }\n    if (options.bbox) {\n        feat.bbox = options.bbox;\n    }\n    feat.properties = properties || {};\n    feat.geometry = geom;\n    return feat;\n}\nexports.feature = feature;\n/**\n * Creates a GeoJSON {@link Geometry} from a Geometry string type & coordinates.\n * For GeometryCollection type use `helpers.geometryCollection`\n *\n * @name geometry\n * @param {string} type Geometry Type\n * @param {Array<any>} coordinates Coordinates\n * @param {Object} [options={}] Optional Parameters\n * @returns {Geometry} a GeoJSON Geometry\n * @example\n * var type = \"Point\";\n * var coordinates = [110, 50];\n * var geometry = turf.geometry(type, coordinates);\n * // => geometry\n */\nfunction geometry(type, coordinates, _options) {\n    if (_options === void 0) { _options = {}; }\n    switch (type) {\n        case \"Point\":\n            return point(coordinates).geometry;\n        case \"LineString\":\n            return lineString(coordinates).geometry;\n        case \"Polygon\":\n            return polygon(coordinates).geometry;\n        case \"MultiPoint\":\n            return multiPoint(coordinates).geometry;\n        case \"MultiLineString\":\n            return multiLineString(coordinates).geometry;\n        case \"MultiPolygon\":\n            return multiPolygon(coordinates).geometry;\n        default:\n            throw new Error(type + \" is invalid\");\n    }\n}\nexports.geometry = geometry;\n/**\n * Creates a {@link Point} {@link Feature} from a Position.\n *\n * @name point\n * @param {Array<number>} coordinates longitude, latitude position (each in decimal degrees)\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<Point>} a Point feature\n * @example\n * var point = turf.point([-75.343, 39.984]);\n *\n * //=point\n */\nfunction point(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    if (!coordinates) {\n        throw new Error(\"coordinates is required\");\n    }\n    if (!Array.isArray(coordinates)) {\n        throw new Error(\"coordinates must be an Array\");\n    }\n    if (coordinates.length < 2) {\n        throw new Error(\"coordinates must be at least 2 numbers long\");\n    }\n    if (!isNumber(coordinates[0]) || !isNumber(coordinates[1])) {\n        throw new Error(\"coordinates must contain numbers\");\n    }\n    var geom = {\n        type: \"Point\",\n        coordinates: coordinates,\n    };\n    return feature(geom, properties, options);\n}\nexports.point = point;\n/**\n * Creates a {@link Point} {@link FeatureCollection} from an Array of Point coordinates.\n *\n * @name points\n * @param {Array<Array<number>>} coordinates an array of Points\n * @param {Object} [properties={}] Translate these properties to each Feature\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north]\n * associated with the FeatureCollection\n * @param {string|number} [options.id] Identifier associated with the FeatureCollection\n * @returns {FeatureCollection<Point>} Point Feature\n * @example\n * var points = turf.points([\n *   [-75, 39],\n *   [-80, 45],\n *   [-78, 50]\n * ]);\n *\n * //=points\n */\nfunction points(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    return featureCollection(coordinates.map(function (coords) {\n        return point(coords, properties);\n    }), options);\n}\nexports.points = points;\n/**\n * Creates a {@link Polygon} {@link Feature} from an Array of LinearRings.\n *\n * @name polygon\n * @param {Array<Array<Array<number>>>} coordinates an array of LinearRings\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<Polygon>} Polygon Feature\n * @example\n * var polygon = turf.polygon([[[-5, 52], [-4, 56], [-2, 51], [-7, 54], [-5, 52]]], { name: 'poly1' });\n *\n * //=polygon\n */\nfunction polygon(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    for (var _i = 0, coordinates_1 = coordinates; _i < coordinates_1.length; _i++) {\n        var ring = coordinates_1[_i];\n        if (ring.length < 4) {\n            throw new Error(\"Each LinearRing of a Polygon must have 4 or more Positions.\");\n        }\n        for (var j = 0; j < ring[ring.length - 1].length; j++) {\n            // Check if first point of Polygon contains two numbers\n            if (ring[ring.length - 1][j] !== ring[0][j]) {\n                throw new Error(\"First and last Position are not equivalent.\");\n            }\n        }\n    }\n    var geom = {\n        type: \"Polygon\",\n        coordinates: coordinates,\n    };\n    return feature(geom, properties, options);\n}\nexports.polygon = polygon;\n/**\n * Creates a {@link Polygon} {@link FeatureCollection} from an Array of Polygon coordinates.\n *\n * @name polygons\n * @param {Array<Array<Array<Array<number>>>>} coordinates an array of Polygon coordinates\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the FeatureCollection\n * @returns {FeatureCollection<Polygon>} Polygon FeatureCollection\n * @example\n * var polygons = turf.polygons([\n *   [[[-5, 52], [-4, 56], [-2, 51], [-7, 54], [-5, 52]]],\n *   [[[-15, 42], [-14, 46], [-12, 41], [-17, 44], [-15, 42]]],\n * ]);\n *\n * //=polygons\n */\nfunction polygons(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    return featureCollection(coordinates.map(function (coords) {\n        return polygon(coords, properties);\n    }), options);\n}\nexports.polygons = polygons;\n/**\n * Creates a {@link LineString} {@link Feature} from an Array of Positions.\n *\n * @name lineString\n * @param {Array<Array<number>>} coordinates an array of Positions\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<LineString>} LineString Feature\n * @example\n * var linestring1 = turf.lineString([[-24, 63], [-23, 60], [-25, 65], [-20, 69]], {name: 'line 1'});\n * var linestring2 = turf.lineString([[-14, 43], [-13, 40], [-15, 45], [-10, 49]], {name: 'line 2'});\n *\n * //=linestring1\n * //=linestring2\n */\nfunction lineString(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    if (coordinates.length < 2) {\n        throw new Error(\"coordinates must be an array of two or more positions\");\n    }\n    var geom = {\n        type: \"LineString\",\n        coordinates: coordinates,\n    };\n    return feature(geom, properties, options);\n}\nexports.lineString = lineString;\n/**\n * Creates a {@link LineString} {@link FeatureCollection} from an Array of LineString coordinates.\n *\n * @name lineStrings\n * @param {Array<Array<Array<number>>>} coordinates an array of LinearRings\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north]\n * associated with the FeatureCollection\n * @param {string|number} [options.id] Identifier associated with the FeatureCollection\n * @returns {FeatureCollection<LineString>} LineString FeatureCollection\n * @example\n * var linestrings = turf.lineStrings([\n *   [[-24, 63], [-23, 60], [-25, 65], [-20, 69]],\n *   [[-14, 43], [-13, 40], [-15, 45], [-10, 49]]\n * ]);\n *\n * //=linestrings\n */\nfunction lineStrings(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    return featureCollection(coordinates.map(function (coords) {\n        return lineString(coords, properties);\n    }), options);\n}\nexports.lineStrings = lineStrings;\n/**\n * Takes one or more {@link Feature|Features} and creates a {@link FeatureCollection}.\n *\n * @name featureCollection\n * @param {Feature[]} features input features\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {FeatureCollection} FeatureCollection of Features\n * @example\n * var locationA = turf.point([-75.343, 39.984], {name: 'Location A'});\n * var locationB = turf.point([-75.833, 39.284], {name: 'Location B'});\n * var locationC = turf.point([-75.534, 39.123], {name: 'Location C'});\n *\n * var collection = turf.featureCollection([\n *   locationA,\n *   locationB,\n *   locationC\n * ]);\n *\n * //=collection\n */\nfunction featureCollection(features, options) {\n    if (options === void 0) { options = {}; }\n    var fc = { type: \"FeatureCollection\" };\n    if (options.id) {\n        fc.id = options.id;\n    }\n    if (options.bbox) {\n        fc.bbox = options.bbox;\n    }\n    fc.features = features;\n    return fc;\n}\nexports.featureCollection = featureCollection;\n/**\n * Creates a {@link Feature<MultiLineString>} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name multiLineString\n * @param {Array<Array<Array<number>>>} coordinates an array of LineStrings\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<MultiLineString>} a MultiLineString feature\n * @throws {Error} if no coordinates are passed\n * @example\n * var multiLine = turf.multiLineString([[[0,0],[10,10]]]);\n *\n * //=multiLine\n */\nfunction multiLineString(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    var geom = {\n        type: \"MultiLineString\",\n        coordinates: coordinates,\n    };\n    return feature(geom, properties, options);\n}\nexports.multiLineString = multiLineString;\n/**\n * Creates a {@link Feature<MultiPoint>} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name multiPoint\n * @param {Array<Array<number>>} coordinates an array of Positions\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<MultiPoint>} a MultiPoint feature\n * @throws {Error} if no coordinates are passed\n * @example\n * var multiPt = turf.multiPoint([[0,0],[10,10]]);\n *\n * //=multiPt\n */\nfunction multiPoint(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    var geom = {\n        type: \"MultiPoint\",\n        coordinates: coordinates,\n    };\n    return feature(geom, properties, options);\n}\nexports.multiPoint = multiPoint;\n/**\n * Creates a {@link Feature<MultiPolygon>} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name multiPolygon\n * @param {Array<Array<Array<Array<number>>>>} coordinates an array of Polygons\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<MultiPolygon>} a multipolygon feature\n * @throws {Error} if no coordinates are passed\n * @example\n * var multiPoly = turf.multiPolygon([[[[0,0],[0,10],[10,10],[10,0],[0,0]]]]);\n *\n * //=multiPoly\n *\n */\nfunction multiPolygon(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    var geom = {\n        type: \"MultiPolygon\",\n        coordinates: coordinates,\n    };\n    return feature(geom, properties, options);\n}\nexports.multiPolygon = multiPolygon;\n/**\n * Creates a {@link Feature<GeometryCollection>} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name geometryCollection\n * @param {Array<Geometry>} geometries an array of GeoJSON Geometries\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<GeometryCollection>} a GeoJSON GeometryCollection Feature\n * @example\n * var pt = turf.geometry(\"Point\", [100, 0]);\n * var line = turf.geometry(\"LineString\", [[101, 0], [102, 1]]);\n * var collection = turf.geometryCollection([pt, line]);\n *\n * // => collection\n */\nfunction geometryCollection(geometries, properties, options) {\n    if (options === void 0) { options = {}; }\n    var geom = {\n        type: \"GeometryCollection\",\n        geometries: geometries,\n    };\n    return feature(geom, properties, options);\n}\nexports.geometryCollection = geometryCollection;\n/**\n * Round number to precision\n *\n * @param {number} num Number\n * @param {number} [precision=0] Precision\n * @returns {number} rounded number\n * @example\n * turf.round(120.4321)\n * //=120\n *\n * turf.round(120.4321, 2)\n * //=120.43\n */\nfunction round(num, precision) {\n    if (precision === void 0) { precision = 0; }\n    if (precision && !(precision >= 0)) {\n        throw new Error(\"precision must be a positive number\");\n    }\n    var multiplier = Math.pow(10, precision || 0);\n    return Math.round(num * multiplier) / multiplier;\n}\nexports.round = round;\n/**\n * Convert a distance measurement (assuming a spherical Earth) from radians to a more friendly unit.\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet\n *\n * @name radiansToLength\n * @param {number} radians in radians across the sphere\n * @param {string} [units=\"kilometers\"] can be degrees, radians, miles, inches, yards, metres,\n * meters, kilometres, kilometers.\n * @returns {number} distance\n */\nfunction radiansToLength(radians, units) {\n    if (units === void 0) { units = \"kilometers\"; }\n    var factor = exports.factors[units];\n    if (!factor) {\n        throw new Error(units + \" units is invalid\");\n    }\n    return radians * factor;\n}\nexports.radiansToLength = radiansToLength;\n/**\n * Convert a distance measurement (assuming a spherical Earth) from a real-world unit into radians\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet\n *\n * @name lengthToRadians\n * @param {number} distance in real units\n * @param {string} [units=\"kilometers\"] can be degrees, radians, miles, inches, yards, metres,\n * meters, kilometres, kilometers.\n * @returns {number} radians\n */\nfunction lengthToRadians(distance, units) {\n    if (units === void 0) { units = \"kilometers\"; }\n    var factor = exports.factors[units];\n    if (!factor) {\n        throw new Error(units + \" units is invalid\");\n    }\n    return distance / factor;\n}\nexports.lengthToRadians = lengthToRadians;\n/**\n * Convert a distance measurement (assuming a spherical Earth) from a real-world unit into degrees\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, centimeters, kilometres, feet\n *\n * @name lengthToDegrees\n * @param {number} distance in real units\n * @param {string} [units=\"kilometers\"] can be degrees, radians, miles, inches, yards, metres,\n * meters, kilometres, kilometers.\n * @returns {number} degrees\n */\nfunction lengthToDegrees(distance, units) {\n    return radiansToDegrees(lengthToRadians(distance, units));\n}\nexports.lengthToDegrees = lengthToDegrees;\n/**\n * Converts any bearing angle from the north line direction (positive clockwise)\n * and returns an angle between 0-360 degrees (positive clockwise), 0 being the north line\n *\n * @name bearingToAzimuth\n * @param {number} bearing angle, between -180 and +180 degrees\n * @returns {number} angle between 0 and 360 degrees\n */\nfunction bearingToAzimuth(bearing) {\n    var angle = bearing % 360;\n    if (angle < 0) {\n        angle += 360;\n    }\n    return angle;\n}\nexports.bearingToAzimuth = bearingToAzimuth;\n/**\n * Converts an angle in radians to degrees\n *\n * @name radiansToDegrees\n * @param {number} radians angle in radians\n * @returns {number} degrees between 0 and 360 degrees\n */\nfunction radiansToDegrees(radians) {\n    var degrees = radians % (2 * Math.PI);\n    return (degrees * 180) / Math.PI;\n}\nexports.radiansToDegrees = radiansToDegrees;\n/**\n * Converts an angle in degrees to radians\n *\n * @name degreesToRadians\n * @param {number} degrees angle between 0 and 360 degrees\n * @returns {number} angle in radians\n */\nfunction degreesToRadians(degrees) {\n    var radians = degrees % 360;\n    return (radians * Math.PI) / 180;\n}\nexports.degreesToRadians = degreesToRadians;\n/**\n * Converts a length to the requested unit.\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet\n *\n * @param {number} length to be converted\n * @param {Units} [originalUnit=\"kilometers\"] of the length\n * @param {Units} [finalUnit=\"kilometers\"] returned unit\n * @returns {number} the converted length\n */\nfunction convertLength(length, originalUnit, finalUnit) {\n    if (originalUnit === void 0) { originalUnit = \"kilometers\"; }\n    if (finalUnit === void 0) { finalUnit = \"kilometers\"; }\n    if (!(length >= 0)) {\n        throw new Error(\"length must be a positive number\");\n    }\n    return radiansToLength(lengthToRadians(length, originalUnit), finalUnit);\n}\nexports.convertLength = convertLength;\n/**\n * Converts a area to the requested unit.\n * Valid units: kilometers, kilometres, meters, metres, centimetres, millimeters, acres, miles, yards, feet, inches, hectares\n * @param {number} area to be converted\n * @param {Units} [originalUnit=\"meters\"] of the distance\n * @param {Units} [finalUnit=\"kilometers\"] returned unit\n * @returns {number} the converted area\n */\nfunction convertArea(area, originalUnit, finalUnit) {\n    if (originalUnit === void 0) { originalUnit = \"meters\"; }\n    if (finalUnit === void 0) { finalUnit = \"kilometers\"; }\n    if (!(area >= 0)) {\n        throw new Error(\"area must be a positive number\");\n    }\n    var startFactor = exports.areaFactors[originalUnit];\n    if (!startFactor) {\n        throw new Error(\"invalid original units\");\n    }\n    var finalFactor = exports.areaFactors[finalUnit];\n    if (!finalFactor) {\n        throw new Error(\"invalid final units\");\n    }\n    return (area / startFactor) * finalFactor;\n}\nexports.convertArea = convertArea;\n/**\n * isNumber\n *\n * @param {*} num Number to validate\n * @returns {boolean} true/false\n * @example\n * turf.isNumber(123)\n * //=true\n * turf.isNumber('foo')\n * //=false\n */\nfunction isNumber(num) {\n    return !isNaN(num) && num !== null && !Array.isArray(num);\n}\nexports.isNumber = isNumber;\n/**\n * isObject\n *\n * @param {*} input variable to validate\n * @returns {boolean} true/false\n * @example\n * turf.isObject({elevation: 10})\n * //=true\n * turf.isObject('foo')\n * //=false\n */\nfunction isObject(input) {\n    return !!input && input.constructor === Object;\n}\nexports.isObject = isObject;\n/**\n * Validate BBox\n *\n * @private\n * @param {Array<number>} bbox BBox to validate\n * @returns {void}\n * @throws Error if BBox is not valid\n * @example\n * validateBBox([-180, -40, 110, 50])\n * //=OK\n * validateBBox([-180, -40])\n * //=Error\n * validateBBox('Foo')\n * //=Error\n * validateBBox(5)\n * //=Error\n * validateBBox(null)\n * //=Error\n * validateBBox(undefined)\n * //=Error\n */\nfunction validateBBox(bbox) {\n    if (!bbox) {\n        throw new Error(\"bbox is required\");\n    }\n    if (!Array.isArray(bbox)) {\n        throw new Error(\"bbox must be an Array\");\n    }\n    if (bbox.length !== 4 && bbox.length !== 6) {\n        throw new Error(\"bbox must be an Array of 4 or 6 numbers\");\n    }\n    bbox.forEach(function (num) {\n        if (!isNumber(num)) {\n            throw new Error(\"bbox must only contain numbers\");\n        }\n    });\n}\nexports.validateBBox = validateBBox;\n/**\n * Validate Id\n *\n * @private\n * @param {string|number} id Id to validate\n * @returns {void}\n * @throws Error if Id is not valid\n * @example\n * validateId([-180, -40, 110, 50])\n * //=Error\n * validateId([-180, -40])\n * //=Error\n * validateId('Foo')\n * //=OK\n * validateId(5)\n * //=OK\n * validateId(null)\n * //=Error\n * validateId(undefined)\n * //=Error\n */\nfunction validateId(id) {\n    if (!id) {\n        throw new Error(\"id is required\");\n    }\n    if ([\"string\", \"number\"].indexOf(typeof id) === -1) {\n        throw new Error(\"id must be a number or a string\");\n    }\n}\nexports.validateId = validateId;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar meta_1 = require(\"@turf/meta\");\n/**\n * Takes a set of features, calculates the bbox of all input features, and returns a bounding box.\n *\n * @name bbox\n * @param {GeoJSON} geojson any GeoJSON object\n * @returns {BBox} bbox extent in [minX, minY, maxX, maxY] order\n * @example\n * var line = turf.lineString([[-74, 40], [-78, 42], [-82, 35]]);\n * var bbox = turf.bbox(line);\n * var bboxPolygon = turf.bboxPolygon(bbox);\n *\n * //addToMap\n * var addToMap = [line, bboxPolygon]\n */\nfunction bbox(geojson) {\n    var result = [Infinity, Infinity, -Infinity, -Infinity];\n    meta_1.coordEach(geojson, function (coord) {\n        if (result[0] > coord[0]) {\n            result[0] = coord[0];\n        }\n        if (result[1] > coord[1]) {\n            result[1] = coord[1];\n        }\n        if (result[2] < coord[0]) {\n            result[2] = coord[0];\n        }\n        if (result[3] < coord[1]) {\n            result[3] = coord[1];\n        }\n    });\n    return result;\n}\nbbox[\"default\"] = bbox;\nexports.default = bbox;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * @module helpers\n */\n/**\n * Earth Radius used with the Harvesine formula and approximates using a spherical (non-ellipsoid) Earth.\n *\n * @memberof helpers\n * @type {number}\n */\nexports.earthRadius = 6371008.8;\n/**\n * Unit of measurement factors using a spherical (non-ellipsoid) earth radius.\n *\n * @memberof helpers\n * @type {Object}\n */\nexports.factors = {\n    centimeters: exports.earthRadius * 100,\n    centimetres: exports.earthRadius * 100,\n    degrees: exports.earthRadius / 111325,\n    feet: exports.earthRadius * 3.28084,\n    inches: exports.earthRadius * 39.37,\n    kilometers: exports.earthRadius / 1000,\n    kilometres: exports.earthRadius / 1000,\n    meters: exports.earthRadius,\n    metres: exports.earthRadius,\n    miles: exports.earthRadius / 1609.344,\n    millimeters: exports.earthRadius * 1000,\n    millimetres: exports.earthRadius * 1000,\n    nauticalmiles: exports.earthRadius / 1852,\n    radians: 1,\n    yards: exports.earthRadius * 1.0936,\n};\n/**\n * Units of measurement factors based on 1 meter.\n *\n * @memberof helpers\n * @type {Object}\n */\nexports.unitsFactors = {\n    centimeters: 100,\n    centimetres: 100,\n    degrees: 1 / 111325,\n    feet: 3.28084,\n    inches: 39.37,\n    kilometers: 1 / 1000,\n    kilometres: 1 / 1000,\n    meters: 1,\n    metres: 1,\n    miles: 1 / 1609.344,\n    millimeters: 1000,\n    millimetres: 1000,\n    nauticalmiles: 1 / 1852,\n    radians: 1 / exports.earthRadius,\n    yards: 1.0936133,\n};\n/**\n * Area of measurement factors based on 1 square meter.\n *\n * @memberof helpers\n * @type {Object}\n */\nexports.areaFactors = {\n    acres: 0.000247105,\n    centimeters: 10000,\n    centimetres: 10000,\n    feet: 10.763910417,\n    hectares: 0.0001,\n    inches: 1550.003100006,\n    kilometers: 0.000001,\n    kilometres: 0.000001,\n    meters: 1,\n    metres: 1,\n    miles: 3.86e-7,\n    millimeters: 1000000,\n    millimetres: 1000000,\n    yards: 1.195990046,\n};\n/**\n * Wraps a GeoJSON {@link Geometry} in a GeoJSON {@link Feature}.\n *\n * @name feature\n * @param {Geometry} geometry input geometry\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} a GeoJSON Feature\n * @example\n * var geometry = {\n *   \"type\": \"Point\",\n *   \"coordinates\": [110, 50]\n * };\n *\n * var feature = turf.feature(geometry);\n *\n * //=feature\n */\nfunction feature(geom, properties, options) {\n    if (options === void 0) { options = {}; }\n    var feat = { type: \"Feature\" };\n    if (options.id === 0 || options.id) {\n        feat.id = options.id;\n    }\n    if (options.bbox) {\n        feat.bbox = options.bbox;\n    }\n    feat.properties = properties || {};\n    feat.geometry = geom;\n    return feat;\n}\nexports.feature = feature;\n/**\n * Creates a GeoJSON {@link Geometry} from a Geometry string type & coordinates.\n * For GeometryCollection type use `helpers.geometryCollection`\n *\n * @name geometry\n * @param {string} type Geometry Type\n * @param {Array<any>} coordinates Coordinates\n * @param {Object} [options={}] Optional Parameters\n * @returns {Geometry} a GeoJSON Geometry\n * @example\n * var type = \"Point\";\n * var coordinates = [110, 50];\n * var geometry = turf.geometry(type, coordinates);\n * // => geometry\n */\nfunction geometry(type, coordinates, _options) {\n    if (_options === void 0) { _options = {}; }\n    switch (type) {\n        case \"Point\":\n            return point(coordinates).geometry;\n        case \"LineString\":\n            return lineString(coordinates).geometry;\n        case \"Polygon\":\n            return polygon(coordinates).geometry;\n        case \"MultiPoint\":\n            return multiPoint(coordinates).geometry;\n        case \"MultiLineString\":\n            return multiLineString(coordinates).geometry;\n        case \"MultiPolygon\":\n            return multiPolygon(coordinates).geometry;\n        default:\n            throw new Error(type + \" is invalid\");\n    }\n}\nexports.geometry = geometry;\n/**\n * Creates a {@link Point} {@link Feature} from a Position.\n *\n * @name point\n * @param {Array<number>} coordinates longitude, latitude position (each in decimal degrees)\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<Point>} a Point feature\n * @example\n * var point = turf.point([-75.343, 39.984]);\n *\n * //=point\n */\nfunction point(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    if (!coordinates) {\n        throw new Error(\"coordinates is required\");\n    }\n    if (!Array.isArray(coordinates)) {\n        throw new Error(\"coordinates must be an Array\");\n    }\n    if (coordinates.length < 2) {\n        throw new Error(\"coordinates must be at least 2 numbers long\");\n    }\n    if (!isNumber(coordinates[0]) || !isNumber(coordinates[1])) {\n        throw new Error(\"coordinates must contain numbers\");\n    }\n    var geom = {\n        type: \"Point\",\n        coordinates: coordinates,\n    };\n    return feature(geom, properties, options);\n}\nexports.point = point;\n/**\n * Creates a {@link Point} {@link FeatureCollection} from an Array of Point coordinates.\n *\n * @name points\n * @param {Array<Array<number>>} coordinates an array of Points\n * @param {Object} [properties={}] Translate these properties to each Feature\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north]\n * associated with the FeatureCollection\n * @param {string|number} [options.id] Identifier associated with the FeatureCollection\n * @returns {FeatureCollection<Point>} Point Feature\n * @example\n * var points = turf.points([\n *   [-75, 39],\n *   [-80, 45],\n *   [-78, 50]\n * ]);\n *\n * //=points\n */\nfunction points(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    return featureCollection(coordinates.map(function (coords) {\n        return point(coords, properties);\n    }), options);\n}\nexports.points = points;\n/**\n * Creates a {@link Polygon} {@link Feature} from an Array of LinearRings.\n *\n * @name polygon\n * @param {Array<Array<Array<number>>>} coordinates an array of LinearRings\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<Polygon>} Polygon Feature\n * @example\n * var polygon = turf.polygon([[[-5, 52], [-4, 56], [-2, 51], [-7, 54], [-5, 52]]], { name: 'poly1' });\n *\n * //=polygon\n */\nfunction polygon(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    for (var _i = 0, coordinates_1 = coordinates; _i < coordinates_1.length; _i++) {\n        var ring = coordinates_1[_i];\n        if (ring.length < 4) {\n            throw new Error(\"Each LinearRing of a Polygon must have 4 or more Positions.\");\n        }\n        for (var j = 0; j < ring[ring.length - 1].length; j++) {\n            // Check if first point of Polygon contains two numbers\n            if (ring[ring.length - 1][j] !== ring[0][j]) {\n                throw new Error(\"First and last Position are not equivalent.\");\n            }\n        }\n    }\n    var geom = {\n        type: \"Polygon\",\n        coordinates: coordinates,\n    };\n    return feature(geom, properties, options);\n}\nexports.polygon = polygon;\n/**\n * Creates a {@link Polygon} {@link FeatureCollection} from an Array of Polygon coordinates.\n *\n * @name polygons\n * @param {Array<Array<Array<Array<number>>>>} coordinates an array of Polygon coordinates\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the FeatureCollection\n * @returns {FeatureCollection<Polygon>} Polygon FeatureCollection\n * @example\n * var polygons = turf.polygons([\n *   [[[-5, 52], [-4, 56], [-2, 51], [-7, 54], [-5, 52]]],\n *   [[[-15, 42], [-14, 46], [-12, 41], [-17, 44], [-15, 42]]],\n * ]);\n *\n * //=polygons\n */\nfunction polygons(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    return featureCollection(coordinates.map(function (coords) {\n        return polygon(coords, properties);\n    }), options);\n}\nexports.polygons = polygons;\n/**\n * Creates a {@link LineString} {@link Feature} from an Array of Positions.\n *\n * @name lineString\n * @param {Array<Array<number>>} coordinates an array of Positions\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<LineString>} LineString Feature\n * @example\n * var linestring1 = turf.lineString([[-24, 63], [-23, 60], [-25, 65], [-20, 69]], {name: 'line 1'});\n * var linestring2 = turf.lineString([[-14, 43], [-13, 40], [-15, 45], [-10, 49]], {name: 'line 2'});\n *\n * //=linestring1\n * //=linestring2\n */\nfunction lineString(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    if (coordinates.length < 2) {\n        throw new Error(\"coordinates must be an array of two or more positions\");\n    }\n    var geom = {\n        type: \"LineString\",\n        coordinates: coordinates,\n    };\n    return feature(geom, properties, options);\n}\nexports.lineString = lineString;\n/**\n * Creates a {@link LineString} {@link FeatureCollection} from an Array of LineString coordinates.\n *\n * @name lineStrings\n * @param {Array<Array<Array<number>>>} coordinates an array of LinearRings\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north]\n * associated with the FeatureCollection\n * @param {string|number} [options.id] Identifier associated with the FeatureCollection\n * @returns {FeatureCollection<LineString>} LineString FeatureCollection\n * @example\n * var linestrings = turf.lineStrings([\n *   [[-24, 63], [-23, 60], [-25, 65], [-20, 69]],\n *   [[-14, 43], [-13, 40], [-15, 45], [-10, 49]]\n * ]);\n *\n * //=linestrings\n */\nfunction lineStrings(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    return featureCollection(coordinates.map(function (coords) {\n        return lineString(coords, properties);\n    }), options);\n}\nexports.lineStrings = lineStrings;\n/**\n * Takes one or more {@link Feature|Features} and creates a {@link FeatureCollection}.\n *\n * @name featureCollection\n * @param {Feature[]} features input features\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {FeatureCollection} FeatureCollection of Features\n * @example\n * var locationA = turf.point([-75.343, 39.984], {name: 'Location A'});\n * var locationB = turf.point([-75.833, 39.284], {name: 'Location B'});\n * var locationC = turf.point([-75.534, 39.123], {name: 'Location C'});\n *\n * var collection = turf.featureCollection([\n *   locationA,\n *   locationB,\n *   locationC\n * ]);\n *\n * //=collection\n */\nfunction featureCollection(features, options) {\n    if (options === void 0) { options = {}; }\n    var fc = { type: \"FeatureCollection\" };\n    if (options.id) {\n        fc.id = options.id;\n    }\n    if (options.bbox) {\n        fc.bbox = options.bbox;\n    }\n    fc.features = features;\n    return fc;\n}\nexports.featureCollection = featureCollection;\n/**\n * Creates a {@link Feature<MultiLineString>} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name multiLineString\n * @param {Array<Array<Array<number>>>} coordinates an array of LineStrings\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<MultiLineString>} a MultiLineString feature\n * @throws {Error} if no coordinates are passed\n * @example\n * var multiLine = turf.multiLineString([[[0,0],[10,10]]]);\n *\n * //=multiLine\n */\nfunction multiLineString(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    var geom = {\n        type: \"MultiLineString\",\n        coordinates: coordinates,\n    };\n    return feature(geom, properties, options);\n}\nexports.multiLineString = multiLineString;\n/**\n * Creates a {@link Feature<MultiPoint>} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name multiPoint\n * @param {Array<Array<number>>} coordinates an array of Positions\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<MultiPoint>} a MultiPoint feature\n * @throws {Error} if no coordinates are passed\n * @example\n * var multiPt = turf.multiPoint([[0,0],[10,10]]);\n *\n * //=multiPt\n */\nfunction multiPoint(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    var geom = {\n        type: \"MultiPoint\",\n        coordinates: coordinates,\n    };\n    return feature(geom, properties, options);\n}\nexports.multiPoint = multiPoint;\n/**\n * Creates a {@link Feature<MultiPolygon>} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name multiPolygon\n * @param {Array<Array<Array<Array<number>>>>} coordinates an array of Polygons\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<MultiPolygon>} a multipolygon feature\n * @throws {Error} if no coordinates are passed\n * @example\n * var multiPoly = turf.multiPolygon([[[[0,0],[0,10],[10,10],[10,0],[0,0]]]]);\n *\n * //=multiPoly\n *\n */\nfunction multiPolygon(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    var geom = {\n        type: \"MultiPolygon\",\n        coordinates: coordinates,\n    };\n    return feature(geom, properties, options);\n}\nexports.multiPolygon = multiPolygon;\n/**\n * Creates a {@link Feature<GeometryCollection>} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name geometryCollection\n * @param {Array<Geometry>} geometries an array of GeoJSON Geometries\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<GeometryCollection>} a GeoJSON GeometryCollection Feature\n * @example\n * var pt = turf.geometry(\"Point\", [100, 0]);\n * var line = turf.geometry(\"LineString\", [[101, 0], [102, 1]]);\n * var collection = turf.geometryCollection([pt, line]);\n *\n * // => collection\n */\nfunction geometryCollection(geometries, properties, options) {\n    if (options === void 0) { options = {}; }\n    var geom = {\n        type: \"GeometryCollection\",\n        geometries: geometries,\n    };\n    return feature(geom, properties, options);\n}\nexports.geometryCollection = geometryCollection;\n/**\n * Round number to precision\n *\n * @param {number} num Number\n * @param {number} [precision=0] Precision\n * @returns {number} rounded number\n * @example\n * turf.round(120.4321)\n * //=120\n *\n * turf.round(120.4321, 2)\n * //=120.43\n */\nfunction round(num, precision) {\n    if (precision === void 0) { precision = 0; }\n    if (precision && !(precision >= 0)) {\n        throw new Error(\"precision must be a positive number\");\n    }\n    var multiplier = Math.pow(10, precision || 0);\n    return Math.round(num * multiplier) / multiplier;\n}\nexports.round = round;\n/**\n * Convert a distance measurement (assuming a spherical Earth) from radians to a more friendly unit.\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet\n *\n * @name radiansToLength\n * @param {number} radians in radians across the sphere\n * @param {string} [units=\"kilometers\"] can be degrees, radians, miles, inches, yards, metres,\n * meters, kilometres, kilometers.\n * @returns {number} distance\n */\nfunction radiansToLength(radians, units) {\n    if (units === void 0) { units = \"kilometers\"; }\n    var factor = exports.factors[units];\n    if (!factor) {\n        throw new Error(units + \" units is invalid\");\n    }\n    return radians * factor;\n}\nexports.radiansToLength = radiansToLength;\n/**\n * Convert a distance measurement (assuming a spherical Earth) from a real-world unit into radians\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet\n *\n * @name lengthToRadians\n * @param {number} distance in real units\n * @param {string} [units=\"kilometers\"] can be degrees, radians, miles, inches, yards, metres,\n * meters, kilometres, kilometers.\n * @returns {number} radians\n */\nfunction lengthToRadians(distance, units) {\n    if (units === void 0) { units = \"kilometers\"; }\n    var factor = exports.factors[units];\n    if (!factor) {\n        throw new Error(units + \" units is invalid\");\n    }\n    return distance / factor;\n}\nexports.lengthToRadians = lengthToRadians;\n/**\n * Convert a distance measurement (assuming a spherical Earth) from a real-world unit into degrees\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, centimeters, kilometres, feet\n *\n * @name lengthToDegrees\n * @param {number} distance in real units\n * @param {string} [units=\"kilometers\"] can be degrees, radians, miles, inches, yards, metres,\n * meters, kilometres, kilometers.\n * @returns {number} degrees\n */\nfunction lengthToDegrees(distance, units) {\n    return radiansToDegrees(lengthToRadians(distance, units));\n}\nexports.lengthToDegrees = lengthToDegrees;\n/**\n * Converts any bearing angle from the north line direction (positive clockwise)\n * and returns an angle between 0-360 degrees (positive clockwise), 0 being the north line\n *\n * @name bearingToAzimuth\n * @param {number} bearing angle, between -180 and +180 degrees\n * @returns {number} angle between 0 and 360 degrees\n */\nfunction bearingToAzimuth(bearing) {\n    var angle = bearing % 360;\n    if (angle < 0) {\n        angle += 360;\n    }\n    return angle;\n}\nexports.bearingToAzimuth = bearingToAzimuth;\n/**\n * Converts an angle in radians to degrees\n *\n * @name radiansToDegrees\n * @param {number} radians angle in radians\n * @returns {number} degrees between 0 and 360 degrees\n */\nfunction radiansToDegrees(radians) {\n    var degrees = radians % (2 * Math.PI);\n    return (degrees * 180) / Math.PI;\n}\nexports.radiansToDegrees = radiansToDegrees;\n/**\n * Converts an angle in degrees to radians\n *\n * @name degreesToRadians\n * @param {number} degrees angle between 0 and 360 degrees\n * @returns {number} angle in radians\n */\nfunction degreesToRadians(degrees) {\n    var radians = degrees % 360;\n    return (radians * Math.PI) / 180;\n}\nexports.degreesToRadians = degreesToRadians;\n/**\n * Converts a length to the requested unit.\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet\n *\n * @param {number} length to be converted\n * @param {Units} [originalUnit=\"kilometers\"] of the length\n * @param {Units} [finalUnit=\"kilometers\"] returned unit\n * @returns {number} the converted length\n */\nfunction convertLength(length, originalUnit, finalUnit) {\n    if (originalUnit === void 0) { originalUnit = \"kilometers\"; }\n    if (finalUnit === void 0) { finalUnit = \"kilometers\"; }\n    if (!(length >= 0)) {\n        throw new Error(\"length must be a positive number\");\n    }\n    return radiansToLength(lengthToRadians(length, originalUnit), finalUnit);\n}\nexports.convertLength = convertLength;\n/**\n * Converts a area to the requested unit.\n * Valid units: kilometers, kilometres, meters, metres, centimetres, millimeters, acres, miles, yards, feet, inches, hectares\n * @param {number} area to be converted\n * @param {Units} [originalUnit=\"meters\"] of the distance\n * @param {Units} [finalUnit=\"kilometers\"] returned unit\n * @returns {number} the converted area\n */\nfunction convertArea(area, originalUnit, finalUnit) {\n    if (originalUnit === void 0) { originalUnit = \"meters\"; }\n    if (finalUnit === void 0) { finalUnit = \"kilometers\"; }\n    if (!(area >= 0)) {\n        throw new Error(\"area must be a positive number\");\n    }\n    var startFactor = exports.areaFactors[originalUnit];\n    if (!startFactor) {\n        throw new Error(\"invalid original units\");\n    }\n    var finalFactor = exports.areaFactors[finalUnit];\n    if (!finalFactor) {\n        throw new Error(\"invalid final units\");\n    }\n    return (area / startFactor) * finalFactor;\n}\nexports.convertArea = convertArea;\n/**\n * isNumber\n *\n * @param {*} num Number to validate\n * @returns {boolean} true/false\n * @example\n * turf.isNumber(123)\n * //=true\n * turf.isNumber('foo')\n * //=false\n */\nfunction isNumber(num) {\n    return !isNaN(num) && num !== null && !Array.isArray(num);\n}\nexports.isNumber = isNumber;\n/**\n * isObject\n *\n * @param {*} input variable to validate\n * @returns {boolean} true/false\n * @example\n * turf.isObject({elevation: 10})\n * //=true\n * turf.isObject('foo')\n * //=false\n */\nfunction isObject(input) {\n    return !!input && input.constructor === Object;\n}\nexports.isObject = isObject;\n/**\n * Validate BBox\n *\n * @private\n * @param {Array<number>} bbox BBox to validate\n * @returns {void}\n * @throws Error if BBox is not valid\n * @example\n * validateBBox([-180, -40, 110, 50])\n * //=OK\n * validateBBox([-180, -40])\n * //=Error\n * validateBBox('Foo')\n * //=Error\n * validateBBox(5)\n * //=Error\n * validateBBox(null)\n * //=Error\n * validateBBox(undefined)\n * //=Error\n */\nfunction validateBBox(bbox) {\n    if (!bbox) {\n        throw new Error(\"bbox is required\");\n    }\n    if (!Array.isArray(bbox)) {\n        throw new Error(\"bbox must be an Array\");\n    }\n    if (bbox.length !== 4 && bbox.length !== 6) {\n        throw new Error(\"bbox must be an Array of 4 or 6 numbers\");\n    }\n    bbox.forEach(function (num) {\n        if (!isNumber(num)) {\n            throw new Error(\"bbox must only contain numbers\");\n        }\n    });\n}\nexports.validateBBox = validateBBox;\n/**\n * Validate Id\n *\n * @private\n * @param {string|number} id Id to validate\n * @returns {void}\n * @throws Error if Id is not valid\n * @example\n * validateId([-180, -40, 110, 50])\n * //=Error\n * validateId([-180, -40])\n * //=Error\n * validateId('Foo')\n * //=OK\n * validateId(5)\n * //=OK\n * validateId(null)\n * //=Error\n * validateId(undefined)\n * //=Error\n */\nfunction validateId(id) {\n    if (!id) {\n        throw new Error(\"id is required\");\n    }\n    if ([\"string\", \"number\"].indexOf(typeof id) === -1) {\n        throw new Error(\"id must be a number or a string\");\n    }\n}\nexports.validateId = validateId;\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nvar helpers = require('@turf/helpers');\n\n/**\n * Callback for coordEach\n *\n * @callback coordEachCallback\n * @param {Array<number>} currentCoord The current coordinate being processed.\n * @param {number} coordIndex The current index of the coordinate being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n * @param {number} geometryIndex The current index of the Geometry being processed.\n */\n\n/**\n * Iterate over coordinates in any GeoJSON object, similar to Array.forEach()\n *\n * @name coordEach\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (currentCoord, coordIndex, featureIndex, multiFeatureIndex)\n * @param {boolean} [excludeWrapCoord=false] whether or not to include the final coordinate of LinearRings that wraps the ring in its iteration.\n * @returns {void}\n * @example\n * var features = turf.featureCollection([\n *   turf.point([26, 37], {\"foo\": \"bar\"}),\n *   turf.point([36, 53], {\"hello\": \"world\"})\n * ]);\n *\n * turf.coordEach(features, function (currentCoord, coordIndex, featureIndex, multiFeatureIndex, geometryIndex) {\n *   //=currentCoord\n *   //=coordIndex\n *   //=featureIndex\n *   //=multiFeatureIndex\n *   //=geometryIndex\n * });\n */\nfunction coordEach(geojson, callback, excludeWrapCoord) {\n  // Handles null Geometry -- Skips this GeoJSON\n  if (geojson === null) return;\n  var j,\n    k,\n    l,\n    geometry,\n    stopG,\n    coords,\n    geometryMaybeCollection,\n    wrapShrink = 0,\n    coordIndex = 0,\n    isGeometryCollection,\n    type = geojson.type,\n    isFeatureCollection = type === \"FeatureCollection\",\n    isFeature = type === \"Feature\",\n    stop = isFeatureCollection ? geojson.features.length : 1;\n\n  // This logic may look a little weird. The reason why it is that way\n  // is because it's trying to be fast. GeoJSON supports multiple kinds\n  // of objects at its root: FeatureCollection, Features, Geometries.\n  // This function has the responsibility of handling all of them, and that\n  // means that some of the `for` loops you see below actually just don't apply\n  // to certain inputs. For instance, if you give this just a\n  // Point geometry, then both loops are short-circuited and all we do\n  // is gradually rename the input until it's called 'geometry'.\n  //\n  // This also aims to allocate as few resources as possible: just a\n  // few numbers and booleans, rather than any temporary arrays as would\n  // be required with the normalization approach.\n  for (var featureIndex = 0; featureIndex < stop; featureIndex++) {\n    geometryMaybeCollection = isFeatureCollection\n      ? geojson.features[featureIndex].geometry\n      : isFeature\n      ? geojson.geometry\n      : geojson;\n    isGeometryCollection = geometryMaybeCollection\n      ? geometryMaybeCollection.type === \"GeometryCollection\"\n      : false;\n    stopG = isGeometryCollection\n      ? geometryMaybeCollection.geometries.length\n      : 1;\n\n    for (var geomIndex = 0; geomIndex < stopG; geomIndex++) {\n      var multiFeatureIndex = 0;\n      var geometryIndex = 0;\n      geometry = isGeometryCollection\n        ? geometryMaybeCollection.geometries[geomIndex]\n        : geometryMaybeCollection;\n\n      // Handles null Geometry -- Skips this geometry\n      if (geometry === null) continue;\n      coords = geometry.coordinates;\n      var geomType = geometry.type;\n\n      wrapShrink =\n        excludeWrapCoord &&\n        (geomType === \"Polygon\" || geomType === \"MultiPolygon\")\n          ? 1\n          : 0;\n\n      switch (geomType) {\n        case null:\n          break;\n        case \"Point\":\n          if (\n            callback(\n              coords,\n              coordIndex,\n              featureIndex,\n              multiFeatureIndex,\n              geometryIndex\n            ) === false\n          )\n            return false;\n          coordIndex++;\n          multiFeatureIndex++;\n          break;\n        case \"LineString\":\n        case \"MultiPoint\":\n          for (j = 0; j < coords.length; j++) {\n            if (\n              callback(\n                coords[j],\n                coordIndex,\n                featureIndex,\n                multiFeatureIndex,\n                geometryIndex\n              ) === false\n            )\n              return false;\n            coordIndex++;\n            if (geomType === \"MultiPoint\") multiFeatureIndex++;\n          }\n          if (geomType === \"LineString\") multiFeatureIndex++;\n          break;\n        case \"Polygon\":\n        case \"MultiLineString\":\n          for (j = 0; j < coords.length; j++) {\n            for (k = 0; k < coords[j].length - wrapShrink; k++) {\n              if (\n                callback(\n                  coords[j][k],\n                  coordIndex,\n                  featureIndex,\n                  multiFeatureIndex,\n                  geometryIndex\n                ) === false\n              )\n                return false;\n              coordIndex++;\n            }\n            if (geomType === \"MultiLineString\") multiFeatureIndex++;\n            if (geomType === \"Polygon\") geometryIndex++;\n          }\n          if (geomType === \"Polygon\") multiFeatureIndex++;\n          break;\n        case \"MultiPolygon\":\n          for (j = 0; j < coords.length; j++) {\n            geometryIndex = 0;\n            for (k = 0; k < coords[j].length; k++) {\n              for (l = 0; l < coords[j][k].length - wrapShrink; l++) {\n                if (\n                  callback(\n                    coords[j][k][l],\n                    coordIndex,\n                    featureIndex,\n                    multiFeatureIndex,\n                    geometryIndex\n                  ) === false\n                )\n                  return false;\n                coordIndex++;\n              }\n              geometryIndex++;\n            }\n            multiFeatureIndex++;\n          }\n          break;\n        case \"GeometryCollection\":\n          for (j = 0; j < geometry.geometries.length; j++)\n            if (\n              coordEach(geometry.geometries[j], callback, excludeWrapCoord) ===\n              false\n            )\n              return false;\n          break;\n        default:\n          throw new Error(\"Unknown Geometry Type\");\n      }\n    }\n  }\n}\n\n/**\n * Callback for coordReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n *  - The previousValue argument is initialValue.\n *  - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n *  - The previousValue argument is the value of the first element present in the array.\n *  - The currentValue argument is the value of the second element present in the array.\n *\n * @callback coordReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Array<number>} currentCoord The current coordinate being processed.\n * @param {number} coordIndex The current index of the coordinate being processed.\n * Starts at index 0, if an initialValue is provided, and at index 1 otherwise.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n * @param {number} geometryIndex The current index of the Geometry being processed.\n */\n\n/**\n * Reduce coordinates in any GeoJSON object, similar to Array.reduce()\n *\n * @name coordReduce\n * @param {FeatureCollection|Geometry|Feature} geojson any GeoJSON object\n * @param {Function} callback a method that takes (previousValue, currentCoord, coordIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @param {boolean} [excludeWrapCoord=false] whether or not to include the final coordinate of LinearRings that wraps the ring in its iteration.\n * @returns {*} The value that results from the reduction.\n * @example\n * var features = turf.featureCollection([\n *   turf.point([26, 37], {\"foo\": \"bar\"}),\n *   turf.point([36, 53], {\"hello\": \"world\"})\n * ]);\n *\n * turf.coordReduce(features, function (previousValue, currentCoord, coordIndex, featureIndex, multiFeatureIndex, geometryIndex) {\n *   //=previousValue\n *   //=currentCoord\n *   //=coordIndex\n *   //=featureIndex\n *   //=multiFeatureIndex\n *   //=geometryIndex\n *   return currentCoord;\n * });\n */\nfunction coordReduce(geojson, callback, initialValue, excludeWrapCoord) {\n  var previousValue = initialValue;\n  coordEach(\n    geojson,\n    function (\n      currentCoord,\n      coordIndex,\n      featureIndex,\n      multiFeatureIndex,\n      geometryIndex\n    ) {\n      if (coordIndex === 0 && initialValue === undefined)\n        previousValue = currentCoord;\n      else\n        previousValue = callback(\n          previousValue,\n          currentCoord,\n          coordIndex,\n          featureIndex,\n          multiFeatureIndex,\n          geometryIndex\n        );\n    },\n    excludeWrapCoord\n  );\n  return previousValue;\n}\n\n/**\n * Callback for propEach\n *\n * @callback propEachCallback\n * @param {Object} currentProperties The current Properties being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n */\n\n/**\n * Iterate over properties in any GeoJSON object, similar to Array.forEach()\n *\n * @name propEach\n * @param {FeatureCollection|Feature} geojson any GeoJSON object\n * @param {Function} callback a method that takes (currentProperties, featureIndex)\n * @returns {void}\n * @example\n * var features = turf.featureCollection([\n *     turf.point([26, 37], {foo: 'bar'}),\n *     turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * turf.propEach(features, function (currentProperties, featureIndex) {\n *   //=currentProperties\n *   //=featureIndex\n * });\n */\nfunction propEach(geojson, callback) {\n  var i;\n  switch (geojson.type) {\n    case \"FeatureCollection\":\n      for (i = 0; i < geojson.features.length; i++) {\n        if (callback(geojson.features[i].properties, i) === false) break;\n      }\n      break;\n    case \"Feature\":\n      callback(geojson.properties, 0);\n      break;\n  }\n}\n\n/**\n * Callback for propReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n *  - The previousValue argument is initialValue.\n *  - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n *  - The previousValue argument is the value of the first element present in the array.\n *  - The currentValue argument is the value of the second element present in the array.\n *\n * @callback propReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {*} currentProperties The current Properties being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n */\n\n/**\n * Reduce properties in any GeoJSON object into a single value,\n * similar to how Array.reduce works. However, in this case we lazily run\n * the reduction, so an array of all properties is unnecessary.\n *\n * @name propReduce\n * @param {FeatureCollection|Feature} geojson any GeoJSON object\n * @param {Function} callback a method that takes (previousValue, currentProperties, featureIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {*} The value that results from the reduction.\n * @example\n * var features = turf.featureCollection([\n *     turf.point([26, 37], {foo: 'bar'}),\n *     turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * turf.propReduce(features, function (previousValue, currentProperties, featureIndex) {\n *   //=previousValue\n *   //=currentProperties\n *   //=featureIndex\n *   return currentProperties\n * });\n */\nfunction propReduce(geojson, callback, initialValue) {\n  var previousValue = initialValue;\n  propEach(geojson, function (currentProperties, featureIndex) {\n    if (featureIndex === 0 && initialValue === undefined)\n      previousValue = currentProperties;\n    else\n      previousValue = callback(previousValue, currentProperties, featureIndex);\n  });\n  return previousValue;\n}\n\n/**\n * Callback for featureEach\n *\n * @callback featureEachCallback\n * @param {Feature<any>} currentFeature The current Feature being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n */\n\n/**\n * Iterate over features in any GeoJSON object, similar to\n * Array.forEach.\n *\n * @name featureEach\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (currentFeature, featureIndex)\n * @returns {void}\n * @example\n * var features = turf.featureCollection([\n *   turf.point([26, 37], {foo: 'bar'}),\n *   turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * turf.featureEach(features, function (currentFeature, featureIndex) {\n *   //=currentFeature\n *   //=featureIndex\n * });\n */\nfunction featureEach(geojson, callback) {\n  if (geojson.type === \"Feature\") {\n    callback(geojson, 0);\n  } else if (geojson.type === \"FeatureCollection\") {\n    for (var i = 0; i < geojson.features.length; i++) {\n      if (callback(geojson.features[i], i) === false) break;\n    }\n  }\n}\n\n/**\n * Callback for featureReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n *  - The previousValue argument is initialValue.\n *  - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n *  - The previousValue argument is the value of the first element present in the array.\n *  - The currentValue argument is the value of the second element present in the array.\n *\n * @callback featureReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Feature} currentFeature The current Feature being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n */\n\n/**\n * Reduce features in any GeoJSON object, similar to Array.reduce().\n *\n * @name featureReduce\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (previousValue, currentFeature, featureIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {*} The value that results from the reduction.\n * @example\n * var features = turf.featureCollection([\n *   turf.point([26, 37], {\"foo\": \"bar\"}),\n *   turf.point([36, 53], {\"hello\": \"world\"})\n * ]);\n *\n * turf.featureReduce(features, function (previousValue, currentFeature, featureIndex) {\n *   //=previousValue\n *   //=currentFeature\n *   //=featureIndex\n *   return currentFeature\n * });\n */\nfunction featureReduce(geojson, callback, initialValue) {\n  var previousValue = initialValue;\n  featureEach(geojson, function (currentFeature, featureIndex) {\n    if (featureIndex === 0 && initialValue === undefined)\n      previousValue = currentFeature;\n    else previousValue = callback(previousValue, currentFeature, featureIndex);\n  });\n  return previousValue;\n}\n\n/**\n * Get all coordinates from any GeoJSON object.\n *\n * @name coordAll\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @returns {Array<Array<number>>} coordinate position array\n * @example\n * var features = turf.featureCollection([\n *   turf.point([26, 37], {foo: 'bar'}),\n *   turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * var coords = turf.coordAll(features);\n * //= [[26, 37], [36, 53]]\n */\nfunction coordAll(geojson) {\n  var coords = [];\n  coordEach(geojson, function (coord) {\n    coords.push(coord);\n  });\n  return coords;\n}\n\n/**\n * Callback for geomEach\n *\n * @callback geomEachCallback\n * @param {Geometry} currentGeometry The current Geometry being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {Object} featureProperties The current Feature Properties being processed.\n * @param {Array<number>} featureBBox The current Feature BBox being processed.\n * @param {number|string} featureId The current Feature Id being processed.\n */\n\n/**\n * Iterate over each geometry in any GeoJSON object, similar to Array.forEach()\n *\n * @name geomEach\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (currentGeometry, featureIndex, featureProperties, featureBBox, featureId)\n * @returns {void}\n * @example\n * var features = turf.featureCollection([\n *     turf.point([26, 37], {foo: 'bar'}),\n *     turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * turf.geomEach(features, function (currentGeometry, featureIndex, featureProperties, featureBBox, featureId) {\n *   //=currentGeometry\n *   //=featureIndex\n *   //=featureProperties\n *   //=featureBBox\n *   //=featureId\n * });\n */\nfunction geomEach(geojson, callback) {\n  var i,\n    j,\n    g,\n    geometry,\n    stopG,\n    geometryMaybeCollection,\n    isGeometryCollection,\n    featureProperties,\n    featureBBox,\n    featureId,\n    featureIndex = 0,\n    isFeatureCollection = geojson.type === \"FeatureCollection\",\n    isFeature = geojson.type === \"Feature\",\n    stop = isFeatureCollection ? geojson.features.length : 1;\n\n  // This logic may look a little weird. The reason why it is that way\n  // is because it's trying to be fast. GeoJSON supports multiple kinds\n  // of objects at its root: FeatureCollection, Features, Geometries.\n  // This function has the responsibility of handling all of them, and that\n  // means that some of the `for` loops you see below actually just don't apply\n  // to certain inputs. For instance, if you give this just a\n  // Point geometry, then both loops are short-circuited and all we do\n  // is gradually rename the input until it's called 'geometry'.\n  //\n  // This also aims to allocate as few resources as possible: just a\n  // few numbers and booleans, rather than any temporary arrays as would\n  // be required with the normalization approach.\n  for (i = 0; i < stop; i++) {\n    geometryMaybeCollection = isFeatureCollection\n      ? geojson.features[i].geometry\n      : isFeature\n      ? geojson.geometry\n      : geojson;\n    featureProperties = isFeatureCollection\n      ? geojson.features[i].properties\n      : isFeature\n      ? geojson.properties\n      : {};\n    featureBBox = isFeatureCollection\n      ? geojson.features[i].bbox\n      : isFeature\n      ? geojson.bbox\n      : undefined;\n    featureId = isFeatureCollection\n      ? geojson.features[i].id\n      : isFeature\n      ? geojson.id\n      : undefined;\n    isGeometryCollection = geometryMaybeCollection\n      ? geometryMaybeCollection.type === \"GeometryCollection\"\n      : false;\n    stopG = isGeometryCollection\n      ? geometryMaybeCollection.geometries.length\n      : 1;\n\n    for (g = 0; g < stopG; g++) {\n      geometry = isGeometryCollection\n        ? geometryMaybeCollection.geometries[g]\n        : geometryMaybeCollection;\n\n      // Handle null Geometry\n      if (geometry === null) {\n        if (\n          callback(\n            null,\n            featureIndex,\n            featureProperties,\n            featureBBox,\n            featureId\n          ) === false\n        )\n          return false;\n        continue;\n      }\n      switch (geometry.type) {\n        case \"Point\":\n        case \"LineString\":\n        case \"MultiPoint\":\n        case \"Polygon\":\n        case \"MultiLineString\":\n        case \"MultiPolygon\": {\n          if (\n            callback(\n              geometry,\n              featureIndex,\n              featureProperties,\n              featureBBox,\n              featureId\n            ) === false\n          )\n            return false;\n          break;\n        }\n        case \"GeometryCollection\": {\n          for (j = 0; j < geometry.geometries.length; j++) {\n            if (\n              callback(\n                geometry.geometries[j],\n                featureIndex,\n                featureProperties,\n                featureBBox,\n                featureId\n              ) === false\n            )\n              return false;\n          }\n          break;\n        }\n        default:\n          throw new Error(\"Unknown Geometry Type\");\n      }\n    }\n    // Only increase `featureIndex` per each feature\n    featureIndex++;\n  }\n}\n\n/**\n * Callback for geomReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n *  - The previousValue argument is initialValue.\n *  - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n *  - The previousValue argument is the value of the first element present in the array.\n *  - The currentValue argument is the value of the second element present in the array.\n *\n * @callback geomReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Geometry} currentGeometry The current Geometry being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {Object} featureProperties The current Feature Properties being processed.\n * @param {Array<number>} featureBBox The current Feature BBox being processed.\n * @param {number|string} featureId The current Feature Id being processed.\n */\n\n/**\n * Reduce geometry in any GeoJSON object, similar to Array.reduce().\n *\n * @name geomReduce\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (previousValue, currentGeometry, featureIndex, featureProperties, featureBBox, featureId)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {*} The value that results from the reduction.\n * @example\n * var features = turf.featureCollection([\n *     turf.point([26, 37], {foo: 'bar'}),\n *     turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * turf.geomReduce(features, function (previousValue, currentGeometry, featureIndex, featureProperties, featureBBox, featureId) {\n *   //=previousValue\n *   //=currentGeometry\n *   //=featureIndex\n *   //=featureProperties\n *   //=featureBBox\n *   //=featureId\n *   return currentGeometry\n * });\n */\nfunction geomReduce(geojson, callback, initialValue) {\n  var previousValue = initialValue;\n  geomEach(\n    geojson,\n    function (\n      currentGeometry,\n      featureIndex,\n      featureProperties,\n      featureBBox,\n      featureId\n    ) {\n      if (featureIndex === 0 && initialValue === undefined)\n        previousValue = currentGeometry;\n      else\n        previousValue = callback(\n          previousValue,\n          currentGeometry,\n          featureIndex,\n          featureProperties,\n          featureBBox,\n          featureId\n        );\n    }\n  );\n  return previousValue;\n}\n\n/**\n * Callback for flattenEach\n *\n * @callback flattenEachCallback\n * @param {Feature} currentFeature The current flattened feature being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n */\n\n/**\n * Iterate over flattened features in any GeoJSON object, similar to\n * Array.forEach.\n *\n * @name flattenEach\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (currentFeature, featureIndex, multiFeatureIndex)\n * @example\n * var features = turf.featureCollection([\n *     turf.point([26, 37], {foo: 'bar'}),\n *     turf.multiPoint([[40, 30], [36, 53]], {hello: 'world'})\n * ]);\n *\n * turf.flattenEach(features, function (currentFeature, featureIndex, multiFeatureIndex) {\n *   //=currentFeature\n *   //=featureIndex\n *   //=multiFeatureIndex\n * });\n */\nfunction flattenEach(geojson, callback) {\n  geomEach(geojson, function (geometry, featureIndex, properties, bbox, id) {\n    // Callback for single geometry\n    var type = geometry === null ? null : geometry.type;\n    switch (type) {\n      case null:\n      case \"Point\":\n      case \"LineString\":\n      case \"Polygon\":\n        if (\n          callback(\n            helpers.feature(geometry, properties, { bbox: bbox, id: id }),\n            featureIndex,\n            0\n          ) === false\n        )\n          return false;\n        return;\n    }\n\n    var geomType;\n\n    // Callback for multi-geometry\n    switch (type) {\n      case \"MultiPoint\":\n        geomType = \"Point\";\n        break;\n      case \"MultiLineString\":\n        geomType = \"LineString\";\n        break;\n      case \"MultiPolygon\":\n        geomType = \"Polygon\";\n        break;\n    }\n\n    for (\n      var multiFeatureIndex = 0;\n      multiFeatureIndex < geometry.coordinates.length;\n      multiFeatureIndex++\n    ) {\n      var coordinate = geometry.coordinates[multiFeatureIndex];\n      var geom = {\n        type: geomType,\n        coordinates: coordinate,\n      };\n      if (\n        callback(helpers.feature(geom, properties), featureIndex, multiFeatureIndex) ===\n        false\n      )\n        return false;\n    }\n  });\n}\n\n/**\n * Callback for flattenReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n *  - The previousValue argument is initialValue.\n *  - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n *  - The previousValue argument is the value of the first element present in the array.\n *  - The currentValue argument is the value of the second element present in the array.\n *\n * @callback flattenReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Feature} currentFeature The current Feature being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n */\n\n/**\n * Reduce flattened features in any GeoJSON object, similar to Array.reduce().\n *\n * @name flattenReduce\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (previousValue, currentFeature, featureIndex, multiFeatureIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {*} The value that results from the reduction.\n * @example\n * var features = turf.featureCollection([\n *     turf.point([26, 37], {foo: 'bar'}),\n *     turf.multiPoint([[40, 30], [36, 53]], {hello: 'world'})\n * ]);\n *\n * turf.flattenReduce(features, function (previousValue, currentFeature, featureIndex, multiFeatureIndex) {\n *   //=previousValue\n *   //=currentFeature\n *   //=featureIndex\n *   //=multiFeatureIndex\n *   return currentFeature\n * });\n */\nfunction flattenReduce(geojson, callback, initialValue) {\n  var previousValue = initialValue;\n  flattenEach(\n    geojson,\n    function (currentFeature, featureIndex, multiFeatureIndex) {\n      if (\n        featureIndex === 0 &&\n        multiFeatureIndex === 0 &&\n        initialValue === undefined\n      )\n        previousValue = currentFeature;\n      else\n        previousValue = callback(\n          previousValue,\n          currentFeature,\n          featureIndex,\n          multiFeatureIndex\n        );\n    }\n  );\n  return previousValue;\n}\n\n/**\n * Callback for segmentEach\n *\n * @callback segmentEachCallback\n * @param {Feature<LineString>} currentSegment The current Segment being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n * @param {number} geometryIndex The current index of the Geometry being processed.\n * @param {number} segmentIndex The current index of the Segment being processed.\n * @returns {void}\n */\n\n/**\n * Iterate over 2-vertex line segment in any GeoJSON object, similar to Array.forEach()\n * (Multi)Point geometries do not contain segments therefore they are ignored during this operation.\n *\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON\n * @param {Function} callback a method that takes (currentSegment, featureIndex, multiFeatureIndex, geometryIndex, segmentIndex)\n * @returns {void}\n * @example\n * var polygon = turf.polygon([[[-50, 5], [-40, -10], [-50, -10], [-40, 5], [-50, 5]]]);\n *\n * // Iterate over GeoJSON by 2-vertex segments\n * turf.segmentEach(polygon, function (currentSegment, featureIndex, multiFeatureIndex, geometryIndex, segmentIndex) {\n *   //=currentSegment\n *   //=featureIndex\n *   //=multiFeatureIndex\n *   //=geometryIndex\n *   //=segmentIndex\n * });\n *\n * // Calculate the total number of segments\n * var total = 0;\n * turf.segmentEach(polygon, function () {\n *     total++;\n * });\n */\nfunction segmentEach(geojson, callback) {\n  flattenEach(geojson, function (feature, featureIndex, multiFeatureIndex) {\n    var segmentIndex = 0;\n\n    // Exclude null Geometries\n    if (!feature.geometry) return;\n    // (Multi)Point geometries do not contain segments therefore they are ignored during this operation.\n    var type = feature.geometry.type;\n    if (type === \"Point\" || type === \"MultiPoint\") return;\n\n    // Generate 2-vertex line segments\n    var previousCoords;\n    var previousFeatureIndex = 0;\n    var previousMultiIndex = 0;\n    var prevGeomIndex = 0;\n    if (\n      coordEach(\n        feature,\n        function (\n          currentCoord,\n          coordIndex,\n          featureIndexCoord,\n          multiPartIndexCoord,\n          geometryIndex\n        ) {\n          // Simulating a meta.coordReduce() since `reduce` operations cannot be stopped by returning `false`\n          if (\n            previousCoords === undefined ||\n            featureIndex > previousFeatureIndex ||\n            multiPartIndexCoord > previousMultiIndex ||\n            geometryIndex > prevGeomIndex\n          ) {\n            previousCoords = currentCoord;\n            previousFeatureIndex = featureIndex;\n            previousMultiIndex = multiPartIndexCoord;\n            prevGeomIndex = geometryIndex;\n            segmentIndex = 0;\n            return;\n          }\n          var currentSegment = helpers.lineString(\n            [previousCoords, currentCoord],\n            feature.properties\n          );\n          if (\n            callback(\n              currentSegment,\n              featureIndex,\n              multiFeatureIndex,\n              geometryIndex,\n              segmentIndex\n            ) === false\n          )\n            return false;\n          segmentIndex++;\n          previousCoords = currentCoord;\n        }\n      ) === false\n    )\n      return false;\n  });\n}\n\n/**\n * Callback for segmentReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n *  - The previousValue argument is initialValue.\n *  - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n *  - The previousValue argument is the value of the first element present in the array.\n *  - The currentValue argument is the value of the second element present in the array.\n *\n * @callback segmentReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Feature<LineString>} currentSegment The current Segment being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n * @param {number} geometryIndex The current index of the Geometry being processed.\n * @param {number} segmentIndex The current index of the Segment being processed.\n */\n\n/**\n * Reduce 2-vertex line segment in any GeoJSON object, similar to Array.reduce()\n * (Multi)Point geometries do not contain segments therefore they are ignored during this operation.\n *\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON\n * @param {Function} callback a method that takes (previousValue, currentSegment, currentIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {void}\n * @example\n * var polygon = turf.polygon([[[-50, 5], [-40, -10], [-50, -10], [-40, 5], [-50, 5]]]);\n *\n * // Iterate over GeoJSON by 2-vertex segments\n * turf.segmentReduce(polygon, function (previousSegment, currentSegment, featureIndex, multiFeatureIndex, geometryIndex, segmentIndex) {\n *   //= previousSegment\n *   //= currentSegment\n *   //= featureIndex\n *   //= multiFeatureIndex\n *   //= geometryIndex\n *   //= segmentIndex\n *   return currentSegment\n * });\n *\n * // Calculate the total number of segments\n * var initialValue = 0\n * var total = turf.segmentReduce(polygon, function (previousValue) {\n *     previousValue++;\n *     return previousValue;\n * }, initialValue);\n */\nfunction segmentReduce(geojson, callback, initialValue) {\n  var previousValue = initialValue;\n  var started = false;\n  segmentEach(\n    geojson,\n    function (\n      currentSegment,\n      featureIndex,\n      multiFeatureIndex,\n      geometryIndex,\n      segmentIndex\n    ) {\n      if (started === false && initialValue === undefined)\n        previousValue = currentSegment;\n      else\n        previousValue = callback(\n          previousValue,\n          currentSegment,\n          featureIndex,\n          multiFeatureIndex,\n          geometryIndex,\n          segmentIndex\n        );\n      started = true;\n    }\n  );\n  return previousValue;\n}\n\n/**\n * Callback for lineEach\n *\n * @callback lineEachCallback\n * @param {Feature<LineString>} currentLine The current LineString|LinearRing being processed\n * @param {number} featureIndex The current index of the Feature being processed\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed\n * @param {number} geometryIndex The current index of the Geometry being processed\n */\n\n/**\n * Iterate over line or ring coordinates in LineString, Polygon, MultiLineString, MultiPolygon Features or Geometries,\n * similar to Array.forEach.\n *\n * @name lineEach\n * @param {Geometry|Feature<LineString|Polygon|MultiLineString|MultiPolygon>} geojson object\n * @param {Function} callback a method that takes (currentLine, featureIndex, multiFeatureIndex, geometryIndex)\n * @example\n * var multiLine = turf.multiLineString([\n *   [[26, 37], [35, 45]],\n *   [[36, 53], [38, 50], [41, 55]]\n * ]);\n *\n * turf.lineEach(multiLine, function (currentLine, featureIndex, multiFeatureIndex, geometryIndex) {\n *   //=currentLine\n *   //=featureIndex\n *   //=multiFeatureIndex\n *   //=geometryIndex\n * });\n */\nfunction lineEach(geojson, callback) {\n  // validation\n  if (!geojson) throw new Error(\"geojson is required\");\n\n  flattenEach(geojson, function (feature, featureIndex, multiFeatureIndex) {\n    if (feature.geometry === null) return;\n    var type = feature.geometry.type;\n    var coords = feature.geometry.coordinates;\n    switch (type) {\n      case \"LineString\":\n        if (callback(feature, featureIndex, multiFeatureIndex, 0, 0) === false)\n          return false;\n        break;\n      case \"Polygon\":\n        for (\n          var geometryIndex = 0;\n          geometryIndex < coords.length;\n          geometryIndex++\n        ) {\n          if (\n            callback(\n              helpers.lineString(coords[geometryIndex], feature.properties),\n              featureIndex,\n              multiFeatureIndex,\n              geometryIndex\n            ) === false\n          )\n            return false;\n        }\n        break;\n    }\n  });\n}\n\n/**\n * Callback for lineReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n *  - The previousValue argument is initialValue.\n *  - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n *  - The previousValue argument is the value of the first element present in the array.\n *  - The currentValue argument is the value of the second element present in the array.\n *\n * @callback lineReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Feature<LineString>} currentLine The current LineString|LinearRing being processed.\n * @param {number} featureIndex The current index of the Feature being processed\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed\n * @param {number} geometryIndex The current index of the Geometry being processed\n */\n\n/**\n * Reduce features in any GeoJSON object, similar to Array.reduce().\n *\n * @name lineReduce\n * @param {Geometry|Feature<LineString|Polygon|MultiLineString|MultiPolygon>} geojson object\n * @param {Function} callback a method that takes (previousValue, currentLine, featureIndex, multiFeatureIndex, geometryIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {*} The value that results from the reduction.\n * @example\n * var multiPoly = turf.multiPolygon([\n *   turf.polygon([[[12,48],[2,41],[24,38],[12,48]], [[9,44],[13,41],[13,45],[9,44]]]),\n *   turf.polygon([[[5, 5], [0, 0], [2, 2], [4, 4], [5, 5]]])\n * ]);\n *\n * turf.lineReduce(multiPoly, function (previousValue, currentLine, featureIndex, multiFeatureIndex, geometryIndex) {\n *   //=previousValue\n *   //=currentLine\n *   //=featureIndex\n *   //=multiFeatureIndex\n *   //=geometryIndex\n *   return currentLine\n * });\n */\nfunction lineReduce(geojson, callback, initialValue) {\n  var previousValue = initialValue;\n  lineEach(\n    geojson,\n    function (currentLine, featureIndex, multiFeatureIndex, geometryIndex) {\n      if (featureIndex === 0 && initialValue === undefined)\n        previousValue = currentLine;\n      else\n        previousValue = callback(\n          previousValue,\n          currentLine,\n          featureIndex,\n          multiFeatureIndex,\n          geometryIndex\n        );\n    }\n  );\n  return previousValue;\n}\n\n/**\n * Finds a particular 2-vertex LineString Segment from a GeoJSON using `@turf/meta` indexes.\n *\n * Negative indexes are permitted.\n * Point & MultiPoint will always return null.\n *\n * @param {FeatureCollection|Feature|Geometry} geojson Any GeoJSON Feature or Geometry\n * @param {Object} [options={}] Optional parameters\n * @param {number} [options.featureIndex=0] Feature Index\n * @param {number} [options.multiFeatureIndex=0] Multi-Feature Index\n * @param {number} [options.geometryIndex=0] Geometry Index\n * @param {number} [options.segmentIndex=0] Segment Index\n * @param {Object} [options.properties={}] Translate Properties to output LineString\n * @param {BBox} [options.bbox={}] Translate BBox to output LineString\n * @param {number|string} [options.id={}] Translate Id to output LineString\n * @returns {Feature<LineString>} 2-vertex GeoJSON Feature LineString\n * @example\n * var multiLine = turf.multiLineString([\n *     [[10, 10], [50, 30], [30, 40]],\n *     [[-10, -10], [-50, -30], [-30, -40]]\n * ]);\n *\n * // First Segment (defaults are 0)\n * turf.findSegment(multiLine);\n * // => Feature<LineString<[[10, 10], [50, 30]]>>\n *\n * // First Segment of 2nd Multi Feature\n * turf.findSegment(multiLine, {multiFeatureIndex: 1});\n * // => Feature<LineString<[[-10, -10], [-50, -30]]>>\n *\n * // Last Segment of Last Multi Feature\n * turf.findSegment(multiLine, {multiFeatureIndex: -1, segmentIndex: -1});\n * // => Feature<LineString<[[-50, -30], [-30, -40]]>>\n */\nfunction findSegment(geojson, options) {\n  // Optional Parameters\n  options = options || {};\n  if (!helpers.isObject(options)) throw new Error(\"options is invalid\");\n  var featureIndex = options.featureIndex || 0;\n  var multiFeatureIndex = options.multiFeatureIndex || 0;\n  var geometryIndex = options.geometryIndex || 0;\n  var segmentIndex = options.segmentIndex || 0;\n\n  // Find FeatureIndex\n  var properties = options.properties;\n  var geometry;\n\n  switch (geojson.type) {\n    case \"FeatureCollection\":\n      if (featureIndex < 0)\n        featureIndex = geojson.features.length + featureIndex;\n      properties = properties || geojson.features[featureIndex].properties;\n      geometry = geojson.features[featureIndex].geometry;\n      break;\n    case \"Feature\":\n      properties = properties || geojson.properties;\n      geometry = geojson.geometry;\n      break;\n    case \"Point\":\n    case \"MultiPoint\":\n      return null;\n    case \"LineString\":\n    case \"Polygon\":\n    case \"MultiLineString\":\n    case \"MultiPolygon\":\n      geometry = geojson;\n      break;\n    default:\n      throw new Error(\"geojson is invalid\");\n  }\n\n  // Find SegmentIndex\n  if (geometry === null) return null;\n  var coords = geometry.coordinates;\n  switch (geometry.type) {\n    case \"Point\":\n    case \"MultiPoint\":\n      return null;\n    case \"LineString\":\n      if (segmentIndex < 0) segmentIndex = coords.length + segmentIndex - 1;\n      return helpers.lineString(\n        [coords[segmentIndex], coords[segmentIndex + 1]],\n        properties,\n        options\n      );\n    case \"Polygon\":\n      if (geometryIndex < 0) geometryIndex = coords.length + geometryIndex;\n      if (segmentIndex < 0)\n        segmentIndex = coords[geometryIndex].length + segmentIndex - 1;\n      return helpers.lineString(\n        [\n          coords[geometryIndex][segmentIndex],\n          coords[geometryIndex][segmentIndex + 1],\n        ],\n        properties,\n        options\n      );\n    case \"MultiLineString\":\n      if (multiFeatureIndex < 0)\n        multiFeatureIndex = coords.length + multiFeatureIndex;\n      if (segmentIndex < 0)\n        segmentIndex = coords[multiFeatureIndex].length + segmentIndex - 1;\n      return helpers.lineString(\n        [\n          coords[multiFeatureIndex][segmentIndex],\n          coords[multiFeatureIndex][segmentIndex + 1],\n        ],\n        properties,\n        options\n      );\n    case \"MultiPolygon\":\n      if (multiFeatureIndex < 0)\n        multiFeatureIndex = coords.length + multiFeatureIndex;\n      if (geometryIndex < 0)\n        geometryIndex = coords[multiFeatureIndex].length + geometryIndex;\n      if (segmentIndex < 0)\n        segmentIndex =\n          coords[multiFeatureIndex][geometryIndex].length - segmentIndex - 1;\n      return helpers.lineString(\n        [\n          coords[multiFeatureIndex][geometryIndex][segmentIndex],\n          coords[multiFeatureIndex][geometryIndex][segmentIndex + 1],\n        ],\n        properties,\n        options\n      );\n  }\n  throw new Error(\"geojson is invalid\");\n}\n\n/**\n * Finds a particular Point from a GeoJSON using `@turf/meta` indexes.\n *\n * Negative indexes are permitted.\n *\n * @param {FeatureCollection|Feature|Geometry} geojson Any GeoJSON Feature or Geometry\n * @param {Object} [options={}] Optional parameters\n * @param {number} [options.featureIndex=0] Feature Index\n * @param {number} [options.multiFeatureIndex=0] Multi-Feature Index\n * @param {number} [options.geometryIndex=0] Geometry Index\n * @param {number} [options.coordIndex=0] Coord Index\n * @param {Object} [options.properties={}] Translate Properties to output Point\n * @param {BBox} [options.bbox={}] Translate BBox to output Point\n * @param {number|string} [options.id={}] Translate Id to output Point\n * @returns {Feature<Point>} 2-vertex GeoJSON Feature Point\n * @example\n * var multiLine = turf.multiLineString([\n *     [[10, 10], [50, 30], [30, 40]],\n *     [[-10, -10], [-50, -30], [-30, -40]]\n * ]);\n *\n * // First Segment (defaults are 0)\n * turf.findPoint(multiLine);\n * // => Feature<Point<[10, 10]>>\n *\n * // First Segment of the 2nd Multi-Feature\n * turf.findPoint(multiLine, {multiFeatureIndex: 1});\n * // => Feature<Point<[-10, -10]>>\n *\n * // Last Segment of last Multi-Feature\n * turf.findPoint(multiLine, {multiFeatureIndex: -1, coordIndex: -1});\n * // => Feature<Point<[-30, -40]>>\n */\nfunction findPoint(geojson, options) {\n  // Optional Parameters\n  options = options || {};\n  if (!helpers.isObject(options)) throw new Error(\"options is invalid\");\n  var featureIndex = options.featureIndex || 0;\n  var multiFeatureIndex = options.multiFeatureIndex || 0;\n  var geometryIndex = options.geometryIndex || 0;\n  var coordIndex = options.coordIndex || 0;\n\n  // Find FeatureIndex\n  var properties = options.properties;\n  var geometry;\n\n  switch (geojson.type) {\n    case \"FeatureCollection\":\n      if (featureIndex < 0)\n        featureIndex = geojson.features.length + featureIndex;\n      properties = properties || geojson.features[featureIndex].properties;\n      geometry = geojson.features[featureIndex].geometry;\n      break;\n    case \"Feature\":\n      properties = properties || geojson.properties;\n      geometry = geojson.geometry;\n      break;\n    case \"Point\":\n    case \"MultiPoint\":\n      return null;\n    case \"LineString\":\n    case \"Polygon\":\n    case \"MultiLineString\":\n    case \"MultiPolygon\":\n      geometry = geojson;\n      break;\n    default:\n      throw new Error(\"geojson is invalid\");\n  }\n\n  // Find Coord Index\n  if (geometry === null) return null;\n  var coords = geometry.coordinates;\n  switch (geometry.type) {\n    case \"Point\":\n      return helpers.point(coords, properties, options);\n    case \"MultiPoint\":\n      if (multiFeatureIndex < 0)\n        multiFeatureIndex = coords.length + multiFeatureIndex;\n      return helpers.point(coords[multiFeatureIndex], properties, options);\n    case \"LineString\":\n      if (coordIndex < 0) coordIndex = coords.length + coordIndex;\n      return helpers.point(coords[coordIndex], properties, options);\n    case \"Polygon\":\n      if (geometryIndex < 0) geometryIndex = coords.length + geometryIndex;\n      if (coordIndex < 0)\n        coordIndex = coords[geometryIndex].length + coordIndex;\n      return helpers.point(coords[geometryIndex][coordIndex], properties, options);\n    case \"MultiLineString\":\n      if (multiFeatureIndex < 0)\n        multiFeatureIndex = coords.length + multiFeatureIndex;\n      if (coordIndex < 0)\n        coordIndex = coords[multiFeatureIndex].length + coordIndex;\n      return helpers.point(coords[multiFeatureIndex][coordIndex], properties, options);\n    case \"MultiPolygon\":\n      if (multiFeatureIndex < 0)\n        multiFeatureIndex = coords.length + multiFeatureIndex;\n      if (geometryIndex < 0)\n        geometryIndex = coords[multiFeatureIndex].length + geometryIndex;\n      if (coordIndex < 0)\n        coordIndex =\n          coords[multiFeatureIndex][geometryIndex].length - coordIndex;\n      return helpers.point(\n        coords[multiFeatureIndex][geometryIndex][coordIndex],\n        properties,\n        options\n      );\n  }\n  throw new Error(\"geojson is invalid\");\n}\n\nexports.coordAll = coordAll;\nexports.coordEach = coordEach;\nexports.coordReduce = coordReduce;\nexports.featureEach = featureEach;\nexports.featureReduce = featureReduce;\nexports.findPoint = findPoint;\nexports.findSegment = findSegment;\nexports.flattenEach = flattenEach;\nexports.flattenReduce = flattenReduce;\nexports.geomEach = geomEach;\nexports.geomReduce = geomReduce;\nexports.lineEach = lineEach;\nexports.lineReduce = lineReduce;\nexports.propEach = propEach;\nexports.propReduce = propReduce;\nexports.segmentEach = segmentEach;\nexports.segmentReduce = segmentReduce;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar helpers_1 = require(\"@turf/helpers\");\nvar invariant_1 = require(\"@turf/invariant\");\n// http://en.wikipedia.org/wiki/Haversine_formula\n// http://www.movable-type.co.uk/scripts/latlong.html\n/**\n * Takes two {@link Point|points} and finds the geographic bearing between them,\n * i.e. the angle measured in degrees from the north line (0 degrees)\n *\n * @name bearing\n * @param {Coord} start starting Point\n * @param {Coord} end ending Point\n * @param {Object} [options={}] Optional parameters\n * @param {boolean} [options.final=false] calculates the final bearing if true\n * @returns {number} bearing in decimal degrees, between -180 and 180 degrees (positive clockwise)\n * @example\n * var point1 = turf.point([-75.343, 39.984]);\n * var point2 = turf.point([-75.534, 39.123]);\n *\n * var bearing = turf.bearing(point1, point2);\n *\n * //addToMap\n * var addToMap = [point1, point2]\n * point1.properties['marker-color'] = '#f00'\n * point2.properties['marker-color'] = '#0f0'\n * point1.properties.bearing = bearing\n */\nfunction bearing(start, end, options) {\n    if (options === void 0) { options = {}; }\n    // Reverse calculation\n    if (options.final === true) {\n        return calculateFinalBearing(start, end);\n    }\n    var coordinates1 = invariant_1.getCoord(start);\n    var coordinates2 = invariant_1.getCoord(end);\n    var lon1 = helpers_1.degreesToRadians(coordinates1[0]);\n    var lon2 = helpers_1.degreesToRadians(coordinates2[0]);\n    var lat1 = helpers_1.degreesToRadians(coordinates1[1]);\n    var lat2 = helpers_1.degreesToRadians(coordinates2[1]);\n    var a = Math.sin(lon2 - lon1) * Math.cos(lat2);\n    var b = Math.cos(lat1) * Math.sin(lat2) -\n        Math.sin(lat1) * Math.cos(lat2) * Math.cos(lon2 - lon1);\n    return helpers_1.radiansToDegrees(Math.atan2(a, b));\n}\nexports.default = bearing;\n/**\n * Calculates Final Bearing\n *\n * @private\n * @param {Coord} start starting Point\n * @param {Coord} end ending Point\n * @returns {number} bearing\n */\nfunction calculateFinalBearing(start, end) {\n    // Swap start & end\n    var bear = bearing(end, start);\n    bear = (bear + 180) % 360;\n    return bear;\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * @module helpers\n */\n/**\n * Earth Radius used with the Harvesine formula and approximates using a spherical (non-ellipsoid) Earth.\n *\n * @memberof helpers\n * @type {number}\n */\nexports.earthRadius = 6371008.8;\n/**\n * Unit of measurement factors using a spherical (non-ellipsoid) earth radius.\n *\n * @memberof helpers\n * @type {Object}\n */\nexports.factors = {\n    centimeters: exports.earthRadius * 100,\n    centimetres: exports.earthRadius * 100,\n    degrees: exports.earthRadius / 111325,\n    feet: exports.earthRadius * 3.28084,\n    inches: exports.earthRadius * 39.37,\n    kilometers: exports.earthRadius / 1000,\n    kilometres: exports.earthRadius / 1000,\n    meters: exports.earthRadius,\n    metres: exports.earthRadius,\n    miles: exports.earthRadius / 1609.344,\n    millimeters: exports.earthRadius * 1000,\n    millimetres: exports.earthRadius * 1000,\n    nauticalmiles: exports.earthRadius / 1852,\n    radians: 1,\n    yards: exports.earthRadius * 1.0936,\n};\n/**\n * Units of measurement factors based on 1 meter.\n *\n * @memberof helpers\n * @type {Object}\n */\nexports.unitsFactors = {\n    centimeters: 100,\n    centimetres: 100,\n    degrees: 1 / 111325,\n    feet: 3.28084,\n    inches: 39.37,\n    kilometers: 1 / 1000,\n    kilometres: 1 / 1000,\n    meters: 1,\n    metres: 1,\n    miles: 1 / 1609.344,\n    millimeters: 1000,\n    millimetres: 1000,\n    nauticalmiles: 1 / 1852,\n    radians: 1 / exports.earthRadius,\n    yards: 1.0936133,\n};\n/**\n * Area of measurement factors based on 1 square meter.\n *\n * @memberof helpers\n * @type {Object}\n */\nexports.areaFactors = {\n    acres: 0.000247105,\n    centimeters: 10000,\n    centimetres: 10000,\n    feet: 10.763910417,\n    hectares: 0.0001,\n    inches: 1550.003100006,\n    kilometers: 0.000001,\n    kilometres: 0.000001,\n    meters: 1,\n    metres: 1,\n    miles: 3.86e-7,\n    millimeters: 1000000,\n    millimetres: 1000000,\n    yards: 1.195990046,\n};\n/**\n * Wraps a GeoJSON {@link Geometry} in a GeoJSON {@link Feature}.\n *\n * @name feature\n * @param {Geometry} geometry input geometry\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} a GeoJSON Feature\n * @example\n * var geometry = {\n *   \"type\": \"Point\",\n *   \"coordinates\": [110, 50]\n * };\n *\n * var feature = turf.feature(geometry);\n *\n * //=feature\n */\nfunction feature(geom, properties, options) {\n    if (options === void 0) { options = {}; }\n    var feat = { type: \"Feature\" };\n    if (options.id === 0 || options.id) {\n        feat.id = options.id;\n    }\n    if (options.bbox) {\n        feat.bbox = options.bbox;\n    }\n    feat.properties = properties || {};\n    feat.geometry = geom;\n    return feat;\n}\nexports.feature = feature;\n/**\n * Creates a GeoJSON {@link Geometry} from a Geometry string type & coordinates.\n * For GeometryCollection type use `helpers.geometryCollection`\n *\n * @name geometry\n * @param {string} type Geometry Type\n * @param {Array<any>} coordinates Coordinates\n * @param {Object} [options={}] Optional Parameters\n * @returns {Geometry} a GeoJSON Geometry\n * @example\n * var type = \"Point\";\n * var coordinates = [110, 50];\n * var geometry = turf.geometry(type, coordinates);\n * // => geometry\n */\nfunction geometry(type, coordinates, _options) {\n    if (_options === void 0) { _options = {}; }\n    switch (type) {\n        case \"Point\":\n            return point(coordinates).geometry;\n        case \"LineString\":\n            return lineString(coordinates).geometry;\n        case \"Polygon\":\n            return polygon(coordinates).geometry;\n        case \"MultiPoint\":\n            return multiPoint(coordinates).geometry;\n        case \"MultiLineString\":\n            return multiLineString(coordinates).geometry;\n        case \"MultiPolygon\":\n            return multiPolygon(coordinates).geometry;\n        default:\n            throw new Error(type + \" is invalid\");\n    }\n}\nexports.geometry = geometry;\n/**\n * Creates a {@link Point} {@link Feature} from a Position.\n *\n * @name point\n * @param {Array<number>} coordinates longitude, latitude position (each in decimal degrees)\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<Point>} a Point feature\n * @example\n * var point = turf.point([-75.343, 39.984]);\n *\n * //=point\n */\nfunction point(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    if (!coordinates) {\n        throw new Error(\"coordinates is required\");\n    }\n    if (!Array.isArray(coordinates)) {\n        throw new Error(\"coordinates must be an Array\");\n    }\n    if (coordinates.length < 2) {\n        throw new Error(\"coordinates must be at least 2 numbers long\");\n    }\n    if (!isNumber(coordinates[0]) || !isNumber(coordinates[1])) {\n        throw new Error(\"coordinates must contain numbers\");\n    }\n    var geom = {\n        type: \"Point\",\n        coordinates: coordinates,\n    };\n    return feature(geom, properties, options);\n}\nexports.point = point;\n/**\n * Creates a {@link Point} {@link FeatureCollection} from an Array of Point coordinates.\n *\n * @name points\n * @param {Array<Array<number>>} coordinates an array of Points\n * @param {Object} [properties={}] Translate these properties to each Feature\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north]\n * associated with the FeatureCollection\n * @param {string|number} [options.id] Identifier associated with the FeatureCollection\n * @returns {FeatureCollection<Point>} Point Feature\n * @example\n * var points = turf.points([\n *   [-75, 39],\n *   [-80, 45],\n *   [-78, 50]\n * ]);\n *\n * //=points\n */\nfunction points(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    return featureCollection(coordinates.map(function (coords) {\n        return point(coords, properties);\n    }), options);\n}\nexports.points = points;\n/**\n * Creates a {@link Polygon} {@link Feature} from an Array of LinearRings.\n *\n * @name polygon\n * @param {Array<Array<Array<number>>>} coordinates an array of LinearRings\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<Polygon>} Polygon Feature\n * @example\n * var polygon = turf.polygon([[[-5, 52], [-4, 56], [-2, 51], [-7, 54], [-5, 52]]], { name: 'poly1' });\n *\n * //=polygon\n */\nfunction polygon(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    for (var _i = 0, coordinates_1 = coordinates; _i < coordinates_1.length; _i++) {\n        var ring = coordinates_1[_i];\n        if (ring.length < 4) {\n            throw new Error(\"Each LinearRing of a Polygon must have 4 or more Positions.\");\n        }\n        for (var j = 0; j < ring[ring.length - 1].length; j++) {\n            // Check if first point of Polygon contains two numbers\n            if (ring[ring.length - 1][j] !== ring[0][j]) {\n                throw new Error(\"First and last Position are not equivalent.\");\n            }\n        }\n    }\n    var geom = {\n        type: \"Polygon\",\n        coordinates: coordinates,\n    };\n    return feature(geom, properties, options);\n}\nexports.polygon = polygon;\n/**\n * Creates a {@link Polygon} {@link FeatureCollection} from an Array of Polygon coordinates.\n *\n * @name polygons\n * @param {Array<Array<Array<Array<number>>>>} coordinates an array of Polygon coordinates\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the FeatureCollection\n * @returns {FeatureCollection<Polygon>} Polygon FeatureCollection\n * @example\n * var polygons = turf.polygons([\n *   [[[-5, 52], [-4, 56], [-2, 51], [-7, 54], [-5, 52]]],\n *   [[[-15, 42], [-14, 46], [-12, 41], [-17, 44], [-15, 42]]],\n * ]);\n *\n * //=polygons\n */\nfunction polygons(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    return featureCollection(coordinates.map(function (coords) {\n        return polygon(coords, properties);\n    }), options);\n}\nexports.polygons = polygons;\n/**\n * Creates a {@link LineString} {@link Feature} from an Array of Positions.\n *\n * @name lineString\n * @param {Array<Array<number>>} coordinates an array of Positions\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<LineString>} LineString Feature\n * @example\n * var linestring1 = turf.lineString([[-24, 63], [-23, 60], [-25, 65], [-20, 69]], {name: 'line 1'});\n * var linestring2 = turf.lineString([[-14, 43], [-13, 40], [-15, 45], [-10, 49]], {name: 'line 2'});\n *\n * //=linestring1\n * //=linestring2\n */\nfunction lineString(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    if (coordinates.length < 2) {\n        throw new Error(\"coordinates must be an array of two or more positions\");\n    }\n    var geom = {\n        type: \"LineString\",\n        coordinates: coordinates,\n    };\n    return feature(geom, properties, options);\n}\nexports.lineString = lineString;\n/**\n * Creates a {@link LineString} {@link FeatureCollection} from an Array of LineString coordinates.\n *\n * @name lineStrings\n * @param {Array<Array<Array<number>>>} coordinates an array of LinearRings\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north]\n * associated with the FeatureCollection\n * @param {string|number} [options.id] Identifier associated with the FeatureCollection\n * @returns {FeatureCollection<LineString>} LineString FeatureCollection\n * @example\n * var linestrings = turf.lineStrings([\n *   [[-24, 63], [-23, 60], [-25, 65], [-20, 69]],\n *   [[-14, 43], [-13, 40], [-15, 45], [-10, 49]]\n * ]);\n *\n * //=linestrings\n */\nfunction lineStrings(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    return featureCollection(coordinates.map(function (coords) {\n        return lineString(coords, properties);\n    }), options);\n}\nexports.lineStrings = lineStrings;\n/**\n * Takes one or more {@link Feature|Features} and creates a {@link FeatureCollection}.\n *\n * @name featureCollection\n * @param {Feature[]} features input features\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {FeatureCollection} FeatureCollection of Features\n * @example\n * var locationA = turf.point([-75.343, 39.984], {name: 'Location A'});\n * var locationB = turf.point([-75.833, 39.284], {name: 'Location B'});\n * var locationC = turf.point([-75.534, 39.123], {name: 'Location C'});\n *\n * var collection = turf.featureCollection([\n *   locationA,\n *   locationB,\n *   locationC\n * ]);\n *\n * //=collection\n */\nfunction featureCollection(features, options) {\n    if (options === void 0) { options = {}; }\n    var fc = { type: \"FeatureCollection\" };\n    if (options.id) {\n        fc.id = options.id;\n    }\n    if (options.bbox) {\n        fc.bbox = options.bbox;\n    }\n    fc.features = features;\n    return fc;\n}\nexports.featureCollection = featureCollection;\n/**\n * Creates a {@link Feature<MultiLineString>} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name multiLineString\n * @param {Array<Array<Array<number>>>} coordinates an array of LineStrings\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<MultiLineString>} a MultiLineString feature\n * @throws {Error} if no coordinates are passed\n * @example\n * var multiLine = turf.multiLineString([[[0,0],[10,10]]]);\n *\n * //=multiLine\n */\nfunction multiLineString(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    var geom = {\n        type: \"MultiLineString\",\n        coordinates: coordinates,\n    };\n    return feature(geom, properties, options);\n}\nexports.multiLineString = multiLineString;\n/**\n * Creates a {@link Feature<MultiPoint>} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name multiPoint\n * @param {Array<Array<number>>} coordinates an array of Positions\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<MultiPoint>} a MultiPoint feature\n * @throws {Error} if no coordinates are passed\n * @example\n * var multiPt = turf.multiPoint([[0,0],[10,10]]);\n *\n * //=multiPt\n */\nfunction multiPoint(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    var geom = {\n        type: \"MultiPoint\",\n        coordinates: coordinates,\n    };\n    return feature(geom, properties, options);\n}\nexports.multiPoint = multiPoint;\n/**\n * Creates a {@link Feature<MultiPolygon>} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name multiPolygon\n * @param {Array<Array<Array<Array<number>>>>} coordinates an array of Polygons\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<MultiPolygon>} a multipolygon feature\n * @throws {Error} if no coordinates are passed\n * @example\n * var multiPoly = turf.multiPolygon([[[[0,0],[0,10],[10,10],[10,0],[0,0]]]]);\n *\n * //=multiPoly\n *\n */\nfunction multiPolygon(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    var geom = {\n        type: \"MultiPolygon\",\n        coordinates: coordinates,\n    };\n    return feature(geom, properties, options);\n}\nexports.multiPolygon = multiPolygon;\n/**\n * Creates a {@link Feature<GeometryCollection>} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name geometryCollection\n * @param {Array<Geometry>} geometries an array of GeoJSON Geometries\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<GeometryCollection>} a GeoJSON GeometryCollection Feature\n * @example\n * var pt = turf.geometry(\"Point\", [100, 0]);\n * var line = turf.geometry(\"LineString\", [[101, 0], [102, 1]]);\n * var collection = turf.geometryCollection([pt, line]);\n *\n * // => collection\n */\nfunction geometryCollection(geometries, properties, options) {\n    if (options === void 0) { options = {}; }\n    var geom = {\n        type: \"GeometryCollection\",\n        geometries: geometries,\n    };\n    return feature(geom, properties, options);\n}\nexports.geometryCollection = geometryCollection;\n/**\n * Round number to precision\n *\n * @param {number} num Number\n * @param {number} [precision=0] Precision\n * @returns {number} rounded number\n * @example\n * turf.round(120.4321)\n * //=120\n *\n * turf.round(120.4321, 2)\n * //=120.43\n */\nfunction round(num, precision) {\n    if (precision === void 0) { precision = 0; }\n    if (precision && !(precision >= 0)) {\n        throw new Error(\"precision must be a positive number\");\n    }\n    var multiplier = Math.pow(10, precision || 0);\n    return Math.round(num * multiplier) / multiplier;\n}\nexports.round = round;\n/**\n * Convert a distance measurement (assuming a spherical Earth) from radians to a more friendly unit.\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet\n *\n * @name radiansToLength\n * @param {number} radians in radians across the sphere\n * @param {string} [units=\"kilometers\"] can be degrees, radians, miles, inches, yards, metres,\n * meters, kilometres, kilometers.\n * @returns {number} distance\n */\nfunction radiansToLength(radians, units) {\n    if (units === void 0) { units = \"kilometers\"; }\n    var factor = exports.factors[units];\n    if (!factor) {\n        throw new Error(units + \" units is invalid\");\n    }\n    return radians * factor;\n}\nexports.radiansToLength = radiansToLength;\n/**\n * Convert a distance measurement (assuming a spherical Earth) from a real-world unit into radians\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet\n *\n * @name lengthToRadians\n * @param {number} distance in real units\n * @param {string} [units=\"kilometers\"] can be degrees, radians, miles, inches, yards, metres,\n * meters, kilometres, kilometers.\n * @returns {number} radians\n */\nfunction lengthToRadians(distance, units) {\n    if (units === void 0) { units = \"kilometers\"; }\n    var factor = exports.factors[units];\n    if (!factor) {\n        throw new Error(units + \" units is invalid\");\n    }\n    return distance / factor;\n}\nexports.lengthToRadians = lengthToRadians;\n/**\n * Convert a distance measurement (assuming a spherical Earth) from a real-world unit into degrees\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, centimeters, kilometres, feet\n *\n * @name lengthToDegrees\n * @param {number} distance in real units\n * @param {string} [units=\"kilometers\"] can be degrees, radians, miles, inches, yards, metres,\n * meters, kilometres, kilometers.\n * @returns {number} degrees\n */\nfunction lengthToDegrees(distance, units) {\n    return radiansToDegrees(lengthToRadians(distance, units));\n}\nexports.lengthToDegrees = lengthToDegrees;\n/**\n * Converts any bearing angle from the north line direction (positive clockwise)\n * and returns an angle between 0-360 degrees (positive clockwise), 0 being the north line\n *\n * @name bearingToAzimuth\n * @param {number} bearing angle, between -180 and +180 degrees\n * @returns {number} angle between 0 and 360 degrees\n */\nfunction bearingToAzimuth(bearing) {\n    var angle = bearing % 360;\n    if (angle < 0) {\n        angle += 360;\n    }\n    return angle;\n}\nexports.bearingToAzimuth = bearingToAzimuth;\n/**\n * Converts an angle in radians to degrees\n *\n * @name radiansToDegrees\n * @param {number} radians angle in radians\n * @returns {number} degrees between 0 and 360 degrees\n */\nfunction radiansToDegrees(radians) {\n    var degrees = radians % (2 * Math.PI);\n    return (degrees * 180) / Math.PI;\n}\nexports.radiansToDegrees = radiansToDegrees;\n/**\n * Converts an angle in degrees to radians\n *\n * @name degreesToRadians\n * @param {number} degrees angle between 0 and 360 degrees\n * @returns {number} angle in radians\n */\nfunction degreesToRadians(degrees) {\n    var radians = degrees % 360;\n    return (radians * Math.PI) / 180;\n}\nexports.degreesToRadians = degreesToRadians;\n/**\n * Converts a length to the requested unit.\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet\n *\n * @param {number} length to be converted\n * @param {Units} [originalUnit=\"kilometers\"] of the length\n * @param {Units} [finalUnit=\"kilometers\"] returned unit\n * @returns {number} the converted length\n */\nfunction convertLength(length, originalUnit, finalUnit) {\n    if (originalUnit === void 0) { originalUnit = \"kilometers\"; }\n    if (finalUnit === void 0) { finalUnit = \"kilometers\"; }\n    if (!(length >= 0)) {\n        throw new Error(\"length must be a positive number\");\n    }\n    return radiansToLength(lengthToRadians(length, originalUnit), finalUnit);\n}\nexports.convertLength = convertLength;\n/**\n * Converts a area to the requested unit.\n * Valid units: kilometers, kilometres, meters, metres, centimetres, millimeters, acres, miles, yards, feet, inches, hectares\n * @param {number} area to be converted\n * @param {Units} [originalUnit=\"meters\"] of the distance\n * @param {Units} [finalUnit=\"kilometers\"] returned unit\n * @returns {number} the converted area\n */\nfunction convertArea(area, originalUnit, finalUnit) {\n    if (originalUnit === void 0) { originalUnit = \"meters\"; }\n    if (finalUnit === void 0) { finalUnit = \"kilometers\"; }\n    if (!(area >= 0)) {\n        throw new Error(\"area must be a positive number\");\n    }\n    var startFactor = exports.areaFactors[originalUnit];\n    if (!startFactor) {\n        throw new Error(\"invalid original units\");\n    }\n    var finalFactor = exports.areaFactors[finalUnit];\n    if (!finalFactor) {\n        throw new Error(\"invalid final units\");\n    }\n    return (area / startFactor) * finalFactor;\n}\nexports.convertArea = convertArea;\n/**\n * isNumber\n *\n * @param {*} num Number to validate\n * @returns {boolean} true/false\n * @example\n * turf.isNumber(123)\n * //=true\n * turf.isNumber('foo')\n * //=false\n */\nfunction isNumber(num) {\n    return !isNaN(num) && num !== null && !Array.isArray(num);\n}\nexports.isNumber = isNumber;\n/**\n * isObject\n *\n * @param {*} input variable to validate\n * @returns {boolean} true/false\n * @example\n * turf.isObject({elevation: 10})\n * //=true\n * turf.isObject('foo')\n * //=false\n */\nfunction isObject(input) {\n    return !!input && input.constructor === Object;\n}\nexports.isObject = isObject;\n/**\n * Validate BBox\n *\n * @private\n * @param {Array<number>} bbox BBox to validate\n * @returns {void}\n * @throws Error if BBox is not valid\n * @example\n * validateBBox([-180, -40, 110, 50])\n * //=OK\n * validateBBox([-180, -40])\n * //=Error\n * validateBBox('Foo')\n * //=Error\n * validateBBox(5)\n * //=Error\n * validateBBox(null)\n * //=Error\n * validateBBox(undefined)\n * //=Error\n */\nfunction validateBBox(bbox) {\n    if (!bbox) {\n        throw new Error(\"bbox is required\");\n    }\n    if (!Array.isArray(bbox)) {\n        throw new Error(\"bbox must be an Array\");\n    }\n    if (bbox.length !== 4 && bbox.length !== 6) {\n        throw new Error(\"bbox must be an Array of 4 or 6 numbers\");\n    }\n    bbox.forEach(function (num) {\n        if (!isNumber(num)) {\n            throw new Error(\"bbox must only contain numbers\");\n        }\n    });\n}\nexports.validateBBox = validateBBox;\n/**\n * Validate Id\n *\n * @private\n * @param {string|number} id Id to validate\n * @returns {void}\n * @throws Error if Id is not valid\n * @example\n * validateId([-180, -40, 110, 50])\n * //=Error\n * validateId([-180, -40])\n * //=Error\n * validateId('Foo')\n * //=OK\n * validateId(5)\n * //=OK\n * validateId(null)\n * //=Error\n * validateId(undefined)\n * //=Error\n */\nfunction validateId(id) {\n    if (!id) {\n        throw new Error(\"id is required\");\n    }\n    if ([\"string\", \"number\"].indexOf(typeof id) === -1) {\n        throw new Error(\"id must be a number or a string\");\n    }\n}\nexports.validateId = validateId;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar helpers_1 = require(\"@turf/helpers\");\n/**\n * Unwrap a coordinate from a Point Feature, Geometry or a single coordinate.\n *\n * @name getCoord\n * @param {Array<number>|Geometry<Point>|Feature<Point>} coord GeoJSON Point or an Array of numbers\n * @returns {Array<number>} coordinates\n * @example\n * var pt = turf.point([10, 10]);\n *\n * var coord = turf.getCoord(pt);\n * //= [10, 10]\n */\nfunction getCoord(coord) {\n    if (!coord) {\n        throw new Error(\"coord is required\");\n    }\n    if (!Array.isArray(coord)) {\n        if (coord.type === \"Feature\" &&\n            coord.geometry !== null &&\n            coord.geometry.type === \"Point\") {\n            return coord.geometry.coordinates;\n        }\n        if (coord.type === \"Point\") {\n            return coord.coordinates;\n        }\n    }\n    if (Array.isArray(coord) &&\n        coord.length >= 2 &&\n        !Array.isArray(coord[0]) &&\n        !Array.isArray(coord[1])) {\n        return coord;\n    }\n    throw new Error(\"coord must be GeoJSON Point or an Array of numbers\");\n}\nexports.getCoord = getCoord;\n/**\n * Unwrap coordinates from a Feature, Geometry Object or an Array\n *\n * @name getCoords\n * @param {Array<any>|Geometry|Feature} coords Feature, Geometry Object or an Array\n * @returns {Array<any>} coordinates\n * @example\n * var poly = turf.polygon([[[119.32, -8.7], [119.55, -8.69], [119.51, -8.54], [119.32, -8.7]]]);\n *\n * var coords = turf.getCoords(poly);\n * //= [[[119.32, -8.7], [119.55, -8.69], [119.51, -8.54], [119.32, -8.7]]]\n */\nfunction getCoords(coords) {\n    if (Array.isArray(coords)) {\n        return coords;\n    }\n    // Feature\n    if (coords.type === \"Feature\") {\n        if (coords.geometry !== null) {\n            return coords.geometry.coordinates;\n        }\n    }\n    else {\n        // Geometry\n        if (coords.coordinates) {\n            return coords.coordinates;\n        }\n    }\n    throw new Error(\"coords must be GeoJSON Feature, Geometry Object or an Array\");\n}\nexports.getCoords = getCoords;\n/**\n * Checks if coordinates contains a number\n *\n * @name containsNumber\n * @param {Array<any>} coordinates GeoJSON Coordinates\n * @returns {boolean} true if Array contains a number\n */\nfunction containsNumber(coordinates) {\n    if (coordinates.length > 1 &&\n        helpers_1.isNumber(coordinates[0]) &&\n        helpers_1.isNumber(coordinates[1])) {\n        return true;\n    }\n    if (Array.isArray(coordinates[0]) && coordinates[0].length) {\n        return containsNumber(coordinates[0]);\n    }\n    throw new Error(\"coordinates must only contain numbers\");\n}\nexports.containsNumber = containsNumber;\n/**\n * Enforce expectations about types of GeoJSON objects for Turf.\n *\n * @name geojsonType\n * @param {GeoJSON} value any GeoJSON object\n * @param {string} type expected GeoJSON type\n * @param {string} name name of calling function\n * @throws {Error} if value is not the expected type.\n */\nfunction geojsonType(value, type, name) {\n    if (!type || !name) {\n        throw new Error(\"type and name required\");\n    }\n    if (!value || value.type !== type) {\n        throw new Error(\"Invalid input to \" +\n            name +\n            \": must be a \" +\n            type +\n            \", given \" +\n            value.type);\n    }\n}\nexports.geojsonType = geojsonType;\n/**\n * Enforce expectations about types of {@link Feature} inputs for Turf.\n * Internally this uses {@link geojsonType} to judge geometry types.\n *\n * @name featureOf\n * @param {Feature} feature a feature with an expected geometry type\n * @param {string} type expected GeoJSON type\n * @param {string} name name of calling function\n * @throws {Error} error if value is not the expected type.\n */\nfunction featureOf(feature, type, name) {\n    if (!feature) {\n        throw new Error(\"No feature passed\");\n    }\n    if (!name) {\n        throw new Error(\".featureOf() requires a name\");\n    }\n    if (!feature || feature.type !== \"Feature\" || !feature.geometry) {\n        throw new Error(\"Invalid input to \" + name + \", Feature with geometry required\");\n    }\n    if (!feature.geometry || feature.geometry.type !== type) {\n        throw new Error(\"Invalid input to \" +\n            name +\n            \": must be a \" +\n            type +\n            \", given \" +\n            feature.geometry.type);\n    }\n}\nexports.featureOf = featureOf;\n/**\n * Enforce expectations about types of {@link FeatureCollection} inputs for Turf.\n * Internally this uses {@link geojsonType} to judge geometry types.\n *\n * @name collectionOf\n * @param {FeatureCollection} featureCollection a FeatureCollection for which features will be judged\n * @param {string} type expected GeoJSON type\n * @param {string} name name of calling function\n * @throws {Error} if value is not the expected type.\n */\nfunction collectionOf(featureCollection, type, name) {\n    if (!featureCollection) {\n        throw new Error(\"No featureCollection passed\");\n    }\n    if (!name) {\n        throw new Error(\".collectionOf() requires a name\");\n    }\n    if (!featureCollection || featureCollection.type !== \"FeatureCollection\") {\n        throw new Error(\"Invalid input to \" + name + \", FeatureCollection required\");\n    }\n    for (var _i = 0, _a = featureCollection.features; _i < _a.length; _i++) {\n        var feature = _a[_i];\n        if (!feature || feature.type !== \"Feature\" || !feature.geometry) {\n            throw new Error(\"Invalid input to \" + name + \", Feature with geometry required\");\n        }\n        if (!feature.geometry || feature.geometry.type !== type) {\n            throw new Error(\"Invalid input to \" +\n                name +\n                \": must be a \" +\n                type +\n                \", given \" +\n                feature.geometry.type);\n        }\n    }\n}\nexports.collectionOf = collectionOf;\n/**\n * Get Geometry from Feature or Geometry Object\n *\n * @param {Feature|Geometry} geojson GeoJSON Feature or Geometry Object\n * @returns {Geometry|null} GeoJSON Geometry Object\n * @throws {Error} if geojson is not a Feature or Geometry Object\n * @example\n * var point = {\n *   \"type\": \"Feature\",\n *   \"properties\": {},\n *   \"geometry\": {\n *     \"type\": \"Point\",\n *     \"coordinates\": [110, 40]\n *   }\n * }\n * var geom = turf.getGeom(point)\n * //={\"type\": \"Point\", \"coordinates\": [110, 40]}\n */\nfunction getGeom(geojson) {\n    if (geojson.type === \"Feature\") {\n        return geojson.geometry;\n    }\n    return geojson;\n}\nexports.getGeom = getGeom;\n/**\n * Get GeoJSON object's type, Geometry type is prioritize.\n *\n * @param {GeoJSON} geojson GeoJSON object\n * @param {string} [name=\"geojson\"] name of the variable to display in error message (unused)\n * @returns {string} GeoJSON type\n * @example\n * var point = {\n *   \"type\": \"Feature\",\n *   \"properties\": {},\n *   \"geometry\": {\n *     \"type\": \"Point\",\n *     \"coordinates\": [110, 40]\n *   }\n * }\n * var geom = turf.getType(point)\n * //=\"Point\"\n */\nfunction getType(geojson, _name) {\n    if (geojson.type === \"FeatureCollection\") {\n        return \"FeatureCollection\";\n    }\n    if (geojson.type === \"GeometryCollection\") {\n        return \"GeometryCollection\";\n    }\n    if (geojson.type === \"Feature\" && geojson.geometry !== null) {\n        return geojson.geometry.type;\n    }\n    return geojson.type;\n}\nexports.getType = getType;\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n    return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar boolean_point_in_polygon_1 = __importDefault(require(\"@turf/boolean-point-in-polygon\"));\nvar line_intersect_1 = __importDefault(require(\"@turf/line-intersect\"));\nvar meta_1 = require(\"@turf/meta\");\nvar polygon_to_line_1 = __importDefault(require(\"@turf/polygon-to-line\"));\n/**\n * Boolean-disjoint returns (TRUE) if the intersection of the two geometries is an empty set.\n *\n * @name booleanDisjoint\n * @param {Geometry|Feature<any>} feature1 GeoJSON Feature or Geometry\n * @param {Geometry|Feature<any>} feature2 GeoJSON Feature or Geometry\n * @returns {boolean} true/false\n * @example\n * var point = turf.point([2, 2]);\n * var line = turf.lineString([[1, 1], [1, 2], [1, 3], [1, 4]]);\n *\n * turf.booleanDisjoint(line, point);\n * //=true\n */\nfunction booleanDisjoint(feature1, feature2) {\n    var bool = true;\n    meta_1.flattenEach(feature1, function (flatten1) {\n        meta_1.flattenEach(feature2, function (flatten2) {\n            if (bool === false) {\n                return false;\n            }\n            bool = disjoint(flatten1.geometry, flatten2.geometry);\n        });\n    });\n    return bool;\n}\n/**\n * Disjoint operation for simple Geometries (Point/LineString/Polygon)\n *\n * @private\n * @param {Geometry<any>} geom1 GeoJSON Geometry\n * @param {Geometry<any>} geom2 GeoJSON Geometry\n * @returns {boolean} true/false\n */\nfunction disjoint(geom1, geom2) {\n    switch (geom1.type) {\n        case \"Point\":\n            switch (geom2.type) {\n                case \"Point\":\n                    return !compareCoords(geom1.coordinates, geom2.coordinates);\n                case \"LineString\":\n                    return !isPointOnLine(geom2, geom1);\n                case \"Polygon\":\n                    return !boolean_point_in_polygon_1.default(geom1, geom2);\n            }\n            /* istanbul ignore next */\n            break;\n        case \"LineString\":\n            switch (geom2.type) {\n                case \"Point\":\n                    return !isPointOnLine(geom1, geom2);\n                case \"LineString\":\n                    return !isLineOnLine(geom1, geom2);\n                case \"Polygon\":\n                    return !isLineInPoly(geom2, geom1);\n            }\n            /* istanbul ignore next */\n            break;\n        case \"Polygon\":\n            switch (geom2.type) {\n                case \"Point\":\n                    return !boolean_point_in_polygon_1.default(geom2, geom1);\n                case \"LineString\":\n                    return !isLineInPoly(geom1, geom2);\n                case \"Polygon\":\n                    return !isPolyInPoly(geom2, geom1);\n            }\n    }\n    return false;\n}\n// http://stackoverflow.com/a/11908158/1979085\nfunction isPointOnLine(lineString, pt) {\n    for (var i = 0; i < lineString.coordinates.length - 1; i++) {\n        if (isPointOnLineSegment(lineString.coordinates[i], lineString.coordinates[i + 1], pt.coordinates)) {\n            return true;\n        }\n    }\n    return false;\n}\nfunction isLineOnLine(lineString1, lineString2) {\n    var doLinesIntersect = line_intersect_1.default(lineString1, lineString2);\n    if (doLinesIntersect.features.length > 0) {\n        return true;\n    }\n    return false;\n}\nfunction isLineInPoly(polygon, lineString) {\n    for (var _i = 0, _a = lineString.coordinates; _i < _a.length; _i++) {\n        var coord = _a[_i];\n        if (boolean_point_in_polygon_1.default(coord, polygon)) {\n            return true;\n        }\n    }\n    var doLinesIntersect = line_intersect_1.default(lineString, polygon_to_line_1.default(polygon));\n    if (doLinesIntersect.features.length > 0) {\n        return true;\n    }\n    return false;\n}\n/**\n * Is Polygon (geom1) in Polygon (geom2)\n * Only takes into account outer rings\n * See http://stackoverflow.com/a/4833823/1979085\n *\n * @private\n * @param {Geometry|Feature<Polygon>} feature1 Polygon1\n * @param {Geometry|Feature<Polygon>} feature2 Polygon2\n * @returns {boolean} true/false\n */\nfunction isPolyInPoly(feature1, feature2) {\n    for (var _i = 0, _a = feature1.coordinates[0]; _i < _a.length; _i++) {\n        var coord1 = _a[_i];\n        if (boolean_point_in_polygon_1.default(coord1, feature2)) {\n            return true;\n        }\n    }\n    for (var _b = 0, _c = feature2.coordinates[0]; _b < _c.length; _b++) {\n        var coord2 = _c[_b];\n        if (boolean_point_in_polygon_1.default(coord2, feature1)) {\n            return true;\n        }\n    }\n    var doLinesIntersect = line_intersect_1.default(polygon_to_line_1.default(feature1), polygon_to_line_1.default(feature2));\n    if (doLinesIntersect.features.length > 0) {\n        return true;\n    }\n    return false;\n}\nfunction isPointOnLineSegment(lineSegmentStart, lineSegmentEnd, pt) {\n    var dxc = pt[0] - lineSegmentStart[0];\n    var dyc = pt[1] - lineSegmentStart[1];\n    var dxl = lineSegmentEnd[0] - lineSegmentStart[0];\n    var dyl = lineSegmentEnd[1] - lineSegmentStart[1];\n    var cross = dxc * dyl - dyc * dxl;\n    if (cross !== 0) {\n        return false;\n    }\n    if (Math.abs(dxl) >= Math.abs(dyl)) {\n        if (dxl > 0) {\n            return lineSegmentStart[0] <= pt[0] && pt[0] <= lineSegmentEnd[0];\n        }\n        else {\n            return lineSegmentEnd[0] <= pt[0] && pt[0] <= lineSegmentStart[0];\n        }\n    }\n    else if (dyl > 0) {\n        return lineSegmentStart[1] <= pt[1] && pt[1] <= lineSegmentEnd[1];\n    }\n    else {\n        return lineSegmentEnd[1] <= pt[1] && pt[1] <= lineSegmentStart[1];\n    }\n}\n/**\n * compareCoords\n *\n * @private\n * @param {Position} pair1 point [x,y]\n * @param {Position} pair2 point [x,y]\n * @returns {boolean} true/false if coord pairs match\n */\nfunction compareCoords(pair1, pair2) {\n    return pair1[0] === pair2[0] && pair1[1] === pair2[1];\n}\nexports.default = booleanDisjoint;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * @module helpers\n */\n/**\n * Earth Radius used with the Harvesine formula and approximates using a spherical (non-ellipsoid) Earth.\n *\n * @memberof helpers\n * @type {number}\n */\nexports.earthRadius = 6371008.8;\n/**\n * Unit of measurement factors using a spherical (non-ellipsoid) earth radius.\n *\n * @memberof helpers\n * @type {Object}\n */\nexports.factors = {\n    centimeters: exports.earthRadius * 100,\n    centimetres: exports.earthRadius * 100,\n    degrees: exports.earthRadius / 111325,\n    feet: exports.earthRadius * 3.28084,\n    inches: exports.earthRadius * 39.37,\n    kilometers: exports.earthRadius / 1000,\n    kilometres: exports.earthRadius / 1000,\n    meters: exports.earthRadius,\n    metres: exports.earthRadius,\n    miles: exports.earthRadius / 1609.344,\n    millimeters: exports.earthRadius * 1000,\n    millimetres: exports.earthRadius * 1000,\n    nauticalmiles: exports.earthRadius / 1852,\n    radians: 1,\n    yards: exports.earthRadius * 1.0936,\n};\n/**\n * Units of measurement factors based on 1 meter.\n *\n * @memberof helpers\n * @type {Object}\n */\nexports.unitsFactors = {\n    centimeters: 100,\n    centimetres: 100,\n    degrees: 1 / 111325,\n    feet: 3.28084,\n    inches: 39.37,\n    kilometers: 1 / 1000,\n    kilometres: 1 / 1000,\n    meters: 1,\n    metres: 1,\n    miles: 1 / 1609.344,\n    millimeters: 1000,\n    millimetres: 1000,\n    nauticalmiles: 1 / 1852,\n    radians: 1 / exports.earthRadius,\n    yards: 1.0936133,\n};\n/**\n * Area of measurement factors based on 1 square meter.\n *\n * @memberof helpers\n * @type {Object}\n */\nexports.areaFactors = {\n    acres: 0.000247105,\n    centimeters: 10000,\n    centimetres: 10000,\n    feet: 10.763910417,\n    hectares: 0.0001,\n    inches: 1550.003100006,\n    kilometers: 0.000001,\n    kilometres: 0.000001,\n    meters: 1,\n    metres: 1,\n    miles: 3.86e-7,\n    millimeters: 1000000,\n    millimetres: 1000000,\n    yards: 1.195990046,\n};\n/**\n * Wraps a GeoJSON {@link Geometry} in a GeoJSON {@link Feature}.\n *\n * @name feature\n * @param {Geometry} geometry input geometry\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} a GeoJSON Feature\n * @example\n * var geometry = {\n *   \"type\": \"Point\",\n *   \"coordinates\": [110, 50]\n * };\n *\n * var feature = turf.feature(geometry);\n *\n * //=feature\n */\nfunction feature(geom, properties, options) {\n    if (options === void 0) { options = {}; }\n    var feat = { type: \"Feature\" };\n    if (options.id === 0 || options.id) {\n        feat.id = options.id;\n    }\n    if (options.bbox) {\n        feat.bbox = options.bbox;\n    }\n    feat.properties = properties || {};\n    feat.geometry = geom;\n    return feat;\n}\nexports.feature = feature;\n/**\n * Creates a GeoJSON {@link Geometry} from a Geometry string type & coordinates.\n * For GeometryCollection type use `helpers.geometryCollection`\n *\n * @name geometry\n * @param {string} type Geometry Type\n * @param {Array<any>} coordinates Coordinates\n * @param {Object} [options={}] Optional Parameters\n * @returns {Geometry} a GeoJSON Geometry\n * @example\n * var type = \"Point\";\n * var coordinates = [110, 50];\n * var geometry = turf.geometry(type, coordinates);\n * // => geometry\n */\nfunction geometry(type, coordinates, _options) {\n    if (_options === void 0) { _options = {}; }\n    switch (type) {\n        case \"Point\":\n            return point(coordinates).geometry;\n        case \"LineString\":\n            return lineString(coordinates).geometry;\n        case \"Polygon\":\n            return polygon(coordinates).geometry;\n        case \"MultiPoint\":\n            return multiPoint(coordinates).geometry;\n        case \"MultiLineString\":\n            return multiLineString(coordinates).geometry;\n        case \"MultiPolygon\":\n            return multiPolygon(coordinates).geometry;\n        default:\n            throw new Error(type + \" is invalid\");\n    }\n}\nexports.geometry = geometry;\n/**\n * Creates a {@link Point} {@link Feature} from a Position.\n *\n * @name point\n * @param {Array<number>} coordinates longitude, latitude position (each in decimal degrees)\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<Point>} a Point feature\n * @example\n * var point = turf.point([-75.343, 39.984]);\n *\n * //=point\n */\nfunction point(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    if (!coordinates) {\n        throw new Error(\"coordinates is required\");\n    }\n    if (!Array.isArray(coordinates)) {\n        throw new Error(\"coordinates must be an Array\");\n    }\n    if (coordinates.length < 2) {\n        throw new Error(\"coordinates must be at least 2 numbers long\");\n    }\n    if (!isNumber(coordinates[0]) || !isNumber(coordinates[1])) {\n        throw new Error(\"coordinates must contain numbers\");\n    }\n    var geom = {\n        type: \"Point\",\n        coordinates: coordinates,\n    };\n    return feature(geom, properties, options);\n}\nexports.point = point;\n/**\n * Creates a {@link Point} {@link FeatureCollection} from an Array of Point coordinates.\n *\n * @name points\n * @param {Array<Array<number>>} coordinates an array of Points\n * @param {Object} [properties={}] Translate these properties to each Feature\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north]\n * associated with the FeatureCollection\n * @param {string|number} [options.id] Identifier associated with the FeatureCollection\n * @returns {FeatureCollection<Point>} Point Feature\n * @example\n * var points = turf.points([\n *   [-75, 39],\n *   [-80, 45],\n *   [-78, 50]\n * ]);\n *\n * //=points\n */\nfunction points(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    return featureCollection(coordinates.map(function (coords) {\n        return point(coords, properties);\n    }), options);\n}\nexports.points = points;\n/**\n * Creates a {@link Polygon} {@link Feature} from an Array of LinearRings.\n *\n * @name polygon\n * @param {Array<Array<Array<number>>>} coordinates an array of LinearRings\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<Polygon>} Polygon Feature\n * @example\n * var polygon = turf.polygon([[[-5, 52], [-4, 56], [-2, 51], [-7, 54], [-5, 52]]], { name: 'poly1' });\n *\n * //=polygon\n */\nfunction polygon(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    for (var _i = 0, coordinates_1 = coordinates; _i < coordinates_1.length; _i++) {\n        var ring = coordinates_1[_i];\n        if (ring.length < 4) {\n            throw new Error(\"Each LinearRing of a Polygon must have 4 or more Positions.\");\n        }\n        for (var j = 0; j < ring[ring.length - 1].length; j++) {\n            // Check if first point of Polygon contains two numbers\n            if (ring[ring.length - 1][j] !== ring[0][j]) {\n                throw new Error(\"First and last Position are not equivalent.\");\n            }\n        }\n    }\n    var geom = {\n        type: \"Polygon\",\n        coordinates: coordinates,\n    };\n    return feature(geom, properties, options);\n}\nexports.polygon = polygon;\n/**\n * Creates a {@link Polygon} {@link FeatureCollection} from an Array of Polygon coordinates.\n *\n * @name polygons\n * @param {Array<Array<Array<Array<number>>>>} coordinates an array of Polygon coordinates\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the FeatureCollection\n * @returns {FeatureCollection<Polygon>} Polygon FeatureCollection\n * @example\n * var polygons = turf.polygons([\n *   [[[-5, 52], [-4, 56], [-2, 51], [-7, 54], [-5, 52]]],\n *   [[[-15, 42], [-14, 46], [-12, 41], [-17, 44], [-15, 42]]],\n * ]);\n *\n * //=polygons\n */\nfunction polygons(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    return featureCollection(coordinates.map(function (coords) {\n        return polygon(coords, properties);\n    }), options);\n}\nexports.polygons = polygons;\n/**\n * Creates a {@link LineString} {@link Feature} from an Array of Positions.\n *\n * @name lineString\n * @param {Array<Array<number>>} coordinates an array of Positions\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<LineString>} LineString Feature\n * @example\n * var linestring1 = turf.lineString([[-24, 63], [-23, 60], [-25, 65], [-20, 69]], {name: 'line 1'});\n * var linestring2 = turf.lineString([[-14, 43], [-13, 40], [-15, 45], [-10, 49]], {name: 'line 2'});\n *\n * //=linestring1\n * //=linestring2\n */\nfunction lineString(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    if (coordinates.length < 2) {\n        throw new Error(\"coordinates must be an array of two or more positions\");\n    }\n    var geom = {\n        type: \"LineString\",\n        coordinates: coordinates,\n    };\n    return feature(geom, properties, options);\n}\nexports.lineString = lineString;\n/**\n * Creates a {@link LineString} {@link FeatureCollection} from an Array of LineString coordinates.\n *\n * @name lineStrings\n * @param {Array<Array<Array<number>>>} coordinates an array of LinearRings\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north]\n * associated with the FeatureCollection\n * @param {string|number} [options.id] Identifier associated with the FeatureCollection\n * @returns {FeatureCollection<LineString>} LineString FeatureCollection\n * @example\n * var linestrings = turf.lineStrings([\n *   [[-24, 63], [-23, 60], [-25, 65], [-20, 69]],\n *   [[-14, 43], [-13, 40], [-15, 45], [-10, 49]]\n * ]);\n *\n * //=linestrings\n */\nfunction lineStrings(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    return featureCollection(coordinates.map(function (coords) {\n        return lineString(coords, properties);\n    }), options);\n}\nexports.lineStrings = lineStrings;\n/**\n * Takes one or more {@link Feature|Features} and creates a {@link FeatureCollection}.\n *\n * @name featureCollection\n * @param {Feature[]} features input features\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {FeatureCollection} FeatureCollection of Features\n * @example\n * var locationA = turf.point([-75.343, 39.984], {name: 'Location A'});\n * var locationB = turf.point([-75.833, 39.284], {name: 'Location B'});\n * var locationC = turf.point([-75.534, 39.123], {name: 'Location C'});\n *\n * var collection = turf.featureCollection([\n *   locationA,\n *   locationB,\n *   locationC\n * ]);\n *\n * //=collection\n */\nfunction featureCollection(features, options) {\n    if (options === void 0) { options = {}; }\n    var fc = { type: \"FeatureCollection\" };\n    if (options.id) {\n        fc.id = options.id;\n    }\n    if (options.bbox) {\n        fc.bbox = options.bbox;\n    }\n    fc.features = features;\n    return fc;\n}\nexports.featureCollection = featureCollection;\n/**\n * Creates a {@link Feature<MultiLineString>} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name multiLineString\n * @param {Array<Array<Array<number>>>} coordinates an array of LineStrings\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<MultiLineString>} a MultiLineString feature\n * @throws {Error} if no coordinates are passed\n * @example\n * var multiLine = turf.multiLineString([[[0,0],[10,10]]]);\n *\n * //=multiLine\n */\nfunction multiLineString(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    var geom = {\n        type: \"MultiLineString\",\n        coordinates: coordinates,\n    };\n    return feature(geom, properties, options);\n}\nexports.multiLineString = multiLineString;\n/**\n * Creates a {@link Feature<MultiPoint>} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name multiPoint\n * @param {Array<Array<number>>} coordinates an array of Positions\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<MultiPoint>} a MultiPoint feature\n * @throws {Error} if no coordinates are passed\n * @example\n * var multiPt = turf.multiPoint([[0,0],[10,10]]);\n *\n * //=multiPt\n */\nfunction multiPoint(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    var geom = {\n        type: \"MultiPoint\",\n        coordinates: coordinates,\n    };\n    return feature(geom, properties, options);\n}\nexports.multiPoint = multiPoint;\n/**\n * Creates a {@link Feature<MultiPolygon>} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name multiPolygon\n * @param {Array<Array<Array<Array<number>>>>} coordinates an array of Polygons\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<MultiPolygon>} a multipolygon feature\n * @throws {Error} if no coordinates are passed\n * @example\n * var multiPoly = turf.multiPolygon([[[[0,0],[0,10],[10,10],[10,0],[0,0]]]]);\n *\n * //=multiPoly\n *\n */\nfunction multiPolygon(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    var geom = {\n        type: \"MultiPolygon\",\n        coordinates: coordinates,\n    };\n    return feature(geom, properties, options);\n}\nexports.multiPolygon = multiPolygon;\n/**\n * Creates a {@link Feature<GeometryCollection>} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name geometryCollection\n * @param {Array<Geometry>} geometries an array of GeoJSON Geometries\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<GeometryCollection>} a GeoJSON GeometryCollection Feature\n * @example\n * var pt = turf.geometry(\"Point\", [100, 0]);\n * var line = turf.geometry(\"LineString\", [[101, 0], [102, 1]]);\n * var collection = turf.geometryCollection([pt, line]);\n *\n * // => collection\n */\nfunction geometryCollection(geometries, properties, options) {\n    if (options === void 0) { options = {}; }\n    var geom = {\n        type: \"GeometryCollection\",\n        geometries: geometries,\n    };\n    return feature(geom, properties, options);\n}\nexports.geometryCollection = geometryCollection;\n/**\n * Round number to precision\n *\n * @param {number} num Number\n * @param {number} [precision=0] Precision\n * @returns {number} rounded number\n * @example\n * turf.round(120.4321)\n * //=120\n *\n * turf.round(120.4321, 2)\n * //=120.43\n */\nfunction round(num, precision) {\n    if (precision === void 0) { precision = 0; }\n    if (precision && !(precision >= 0)) {\n        throw new Error(\"precision must be a positive number\");\n    }\n    var multiplier = Math.pow(10, precision || 0);\n    return Math.round(num * multiplier) / multiplier;\n}\nexports.round = round;\n/**\n * Convert a distance measurement (assuming a spherical Earth) from radians to a more friendly unit.\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet\n *\n * @name radiansToLength\n * @param {number} radians in radians across the sphere\n * @param {string} [units=\"kilometers\"] can be degrees, radians, miles, inches, yards, metres,\n * meters, kilometres, kilometers.\n * @returns {number} distance\n */\nfunction radiansToLength(radians, units) {\n    if (units === void 0) { units = \"kilometers\"; }\n    var factor = exports.factors[units];\n    if (!factor) {\n        throw new Error(units + \" units is invalid\");\n    }\n    return radians * factor;\n}\nexports.radiansToLength = radiansToLength;\n/**\n * Convert a distance measurement (assuming a spherical Earth) from a real-world unit into radians\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet\n *\n * @name lengthToRadians\n * @param {number} distance in real units\n * @param {string} [units=\"kilometers\"] can be degrees, radians, miles, inches, yards, metres,\n * meters, kilometres, kilometers.\n * @returns {number} radians\n */\nfunction lengthToRadians(distance, units) {\n    if (units === void 0) { units = \"kilometers\"; }\n    var factor = exports.factors[units];\n    if (!factor) {\n        throw new Error(units + \" units is invalid\");\n    }\n    return distance / factor;\n}\nexports.lengthToRadians = lengthToRadians;\n/**\n * Convert a distance measurement (assuming a spherical Earth) from a real-world unit into degrees\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, centimeters, kilometres, feet\n *\n * @name lengthToDegrees\n * @param {number} distance in real units\n * @param {string} [units=\"kilometers\"] can be degrees, radians, miles, inches, yards, metres,\n * meters, kilometres, kilometers.\n * @returns {number} degrees\n */\nfunction lengthToDegrees(distance, units) {\n    return radiansToDegrees(lengthToRadians(distance, units));\n}\nexports.lengthToDegrees = lengthToDegrees;\n/**\n * Converts any bearing angle from the north line direction (positive clockwise)\n * and returns an angle between 0-360 degrees (positive clockwise), 0 being the north line\n *\n * @name bearingToAzimuth\n * @param {number} bearing angle, between -180 and +180 degrees\n * @returns {number} angle between 0 and 360 degrees\n */\nfunction bearingToAzimuth(bearing) {\n    var angle = bearing % 360;\n    if (angle < 0) {\n        angle += 360;\n    }\n    return angle;\n}\nexports.bearingToAzimuth = bearingToAzimuth;\n/**\n * Converts an angle in radians to degrees\n *\n * @name radiansToDegrees\n * @param {number} radians angle in radians\n * @returns {number} degrees between 0 and 360 degrees\n */\nfunction radiansToDegrees(radians) {\n    var degrees = radians % (2 * Math.PI);\n    return (degrees * 180) / Math.PI;\n}\nexports.radiansToDegrees = radiansToDegrees;\n/**\n * Converts an angle in degrees to radians\n *\n * @name degreesToRadians\n * @param {number} degrees angle between 0 and 360 degrees\n * @returns {number} angle in radians\n */\nfunction degreesToRadians(degrees) {\n    var radians = degrees % 360;\n    return (radians * Math.PI) / 180;\n}\nexports.degreesToRadians = degreesToRadians;\n/**\n * Converts a length to the requested unit.\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet\n *\n * @param {number} length to be converted\n * @param {Units} [originalUnit=\"kilometers\"] of the length\n * @param {Units} [finalUnit=\"kilometers\"] returned unit\n * @returns {number} the converted length\n */\nfunction convertLength(length, originalUnit, finalUnit) {\n    if (originalUnit === void 0) { originalUnit = \"kilometers\"; }\n    if (finalUnit === void 0) { finalUnit = \"kilometers\"; }\n    if (!(length >= 0)) {\n        throw new Error(\"length must be a positive number\");\n    }\n    return radiansToLength(lengthToRadians(length, originalUnit), finalUnit);\n}\nexports.convertLength = convertLength;\n/**\n * Converts a area to the requested unit.\n * Valid units: kilometers, kilometres, meters, metres, centimetres, millimeters, acres, miles, yards, feet, inches, hectares\n * @param {number} area to be converted\n * @param {Units} [originalUnit=\"meters\"] of the distance\n * @param {Units} [finalUnit=\"kilometers\"] returned unit\n * @returns {number} the converted area\n */\nfunction convertArea(area, originalUnit, finalUnit) {\n    if (originalUnit === void 0) { originalUnit = \"meters\"; }\n    if (finalUnit === void 0) { finalUnit = \"kilometers\"; }\n    if (!(area >= 0)) {\n        throw new Error(\"area must be a positive number\");\n    }\n    var startFactor = exports.areaFactors[originalUnit];\n    if (!startFactor) {\n        throw new Error(\"invalid original units\");\n    }\n    var finalFactor = exports.areaFactors[finalUnit];\n    if (!finalFactor) {\n        throw new Error(\"invalid final units\");\n    }\n    return (area / startFactor) * finalFactor;\n}\nexports.convertArea = convertArea;\n/**\n * isNumber\n *\n * @param {*} num Number to validate\n * @returns {boolean} true/false\n * @example\n * turf.isNumber(123)\n * //=true\n * turf.isNumber('foo')\n * //=false\n */\nfunction isNumber(num) {\n    return !isNaN(num) && num !== null && !Array.isArray(num);\n}\nexports.isNumber = isNumber;\n/**\n * isObject\n *\n * @param {*} input variable to validate\n * @returns {boolean} true/false\n * @example\n * turf.isObject({elevation: 10})\n * //=true\n * turf.isObject('foo')\n * //=false\n */\nfunction isObject(input) {\n    return !!input && input.constructor === Object;\n}\nexports.isObject = isObject;\n/**\n * Validate BBox\n *\n * @private\n * @param {Array<number>} bbox BBox to validate\n * @returns {void}\n * @throws Error if BBox is not valid\n * @example\n * validateBBox([-180, -40, 110, 50])\n * //=OK\n * validateBBox([-180, -40])\n * //=Error\n * validateBBox('Foo')\n * //=Error\n * validateBBox(5)\n * //=Error\n * validateBBox(null)\n * //=Error\n * validateBBox(undefined)\n * //=Error\n */\nfunction validateBBox(bbox) {\n    if (!bbox) {\n        throw new Error(\"bbox is required\");\n    }\n    if (!Array.isArray(bbox)) {\n        throw new Error(\"bbox must be an Array\");\n    }\n    if (bbox.length !== 4 && bbox.length !== 6) {\n        throw new Error(\"bbox must be an Array of 4 or 6 numbers\");\n    }\n    bbox.forEach(function (num) {\n        if (!isNumber(num)) {\n            throw new Error(\"bbox must only contain numbers\");\n        }\n    });\n}\nexports.validateBBox = validateBBox;\n/**\n * Validate Id\n *\n * @private\n * @param {string|number} id Id to validate\n * @returns {void}\n * @throws Error if Id is not valid\n * @example\n * validateId([-180, -40, 110, 50])\n * //=Error\n * validateId([-180, -40])\n * //=Error\n * validateId('Foo')\n * //=OK\n * validateId(5)\n * //=OK\n * validateId(null)\n * //=Error\n * validateId(undefined)\n * //=Error\n */\nfunction validateId(id) {\n    if (!id) {\n        throw new Error(\"id is required\");\n    }\n    if ([\"string\", \"number\"].indexOf(typeof id) === -1) {\n        throw new Error(\"id must be a number or a string\");\n    }\n}\nexports.validateId = validateId;\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nvar helpers = require('@turf/helpers');\n\n/**\n * Callback for coordEach\n *\n * @callback coordEachCallback\n * @param {Array<number>} currentCoord The current coordinate being processed.\n * @param {number} coordIndex The current index of the coordinate being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n * @param {number} geometryIndex The current index of the Geometry being processed.\n */\n\n/**\n * Iterate over coordinates in any GeoJSON object, similar to Array.forEach()\n *\n * @name coordEach\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (currentCoord, coordIndex, featureIndex, multiFeatureIndex)\n * @param {boolean} [excludeWrapCoord=false] whether or not to include the final coordinate of LinearRings that wraps the ring in its iteration.\n * @returns {void}\n * @example\n * var features = turf.featureCollection([\n *   turf.point([26, 37], {\"foo\": \"bar\"}),\n *   turf.point([36, 53], {\"hello\": \"world\"})\n * ]);\n *\n * turf.coordEach(features, function (currentCoord, coordIndex, featureIndex, multiFeatureIndex, geometryIndex) {\n *   //=currentCoord\n *   //=coordIndex\n *   //=featureIndex\n *   //=multiFeatureIndex\n *   //=geometryIndex\n * });\n */\nfunction coordEach(geojson, callback, excludeWrapCoord) {\n  // Handles null Geometry -- Skips this GeoJSON\n  if (geojson === null) return;\n  var j,\n    k,\n    l,\n    geometry,\n    stopG,\n    coords,\n    geometryMaybeCollection,\n    wrapShrink = 0,\n    coordIndex = 0,\n    isGeometryCollection,\n    type = geojson.type,\n    isFeatureCollection = type === \"FeatureCollection\",\n    isFeature = type === \"Feature\",\n    stop = isFeatureCollection ? geojson.features.length : 1;\n\n  // This logic may look a little weird. The reason why it is that way\n  // is because it's trying to be fast. GeoJSON supports multiple kinds\n  // of objects at its root: FeatureCollection, Features, Geometries.\n  // This function has the responsibility of handling all of them, and that\n  // means that some of the `for` loops you see below actually just don't apply\n  // to certain inputs. For instance, if you give this just a\n  // Point geometry, then both loops are short-circuited and all we do\n  // is gradually rename the input until it's called 'geometry'.\n  //\n  // This also aims to allocate as few resources as possible: just a\n  // few numbers and booleans, rather than any temporary arrays as would\n  // be required with the normalization approach.\n  for (var featureIndex = 0; featureIndex < stop; featureIndex++) {\n    geometryMaybeCollection = isFeatureCollection\n      ? geojson.features[featureIndex].geometry\n      : isFeature\n      ? geojson.geometry\n      : geojson;\n    isGeometryCollection = geometryMaybeCollection\n      ? geometryMaybeCollection.type === \"GeometryCollection\"\n      : false;\n    stopG = isGeometryCollection\n      ? geometryMaybeCollection.geometries.length\n      : 1;\n\n    for (var geomIndex = 0; geomIndex < stopG; geomIndex++) {\n      var multiFeatureIndex = 0;\n      var geometryIndex = 0;\n      geometry = isGeometryCollection\n        ? geometryMaybeCollection.geometries[geomIndex]\n        : geometryMaybeCollection;\n\n      // Handles null Geometry -- Skips this geometry\n      if (geometry === null) continue;\n      coords = geometry.coordinates;\n      var geomType = geometry.type;\n\n      wrapShrink =\n        excludeWrapCoord &&\n        (geomType === \"Polygon\" || geomType === \"MultiPolygon\")\n          ? 1\n          : 0;\n\n      switch (geomType) {\n        case null:\n          break;\n        case \"Point\":\n          if (\n            callback(\n              coords,\n              coordIndex,\n              featureIndex,\n              multiFeatureIndex,\n              geometryIndex\n            ) === false\n          )\n            return false;\n          coordIndex++;\n          multiFeatureIndex++;\n          break;\n        case \"LineString\":\n        case \"MultiPoint\":\n          for (j = 0; j < coords.length; j++) {\n            if (\n              callback(\n                coords[j],\n                coordIndex,\n                featureIndex,\n                multiFeatureIndex,\n                geometryIndex\n              ) === false\n            )\n              return false;\n            coordIndex++;\n            if (geomType === \"MultiPoint\") multiFeatureIndex++;\n          }\n          if (geomType === \"LineString\") multiFeatureIndex++;\n          break;\n        case \"Polygon\":\n        case \"MultiLineString\":\n          for (j = 0; j < coords.length; j++) {\n            for (k = 0; k < coords[j].length - wrapShrink; k++) {\n              if (\n                callback(\n                  coords[j][k],\n                  coordIndex,\n                  featureIndex,\n                  multiFeatureIndex,\n                  geometryIndex\n                ) === false\n              )\n                return false;\n              coordIndex++;\n            }\n            if (geomType === \"MultiLineString\") multiFeatureIndex++;\n            if (geomType === \"Polygon\") geometryIndex++;\n          }\n          if (geomType === \"Polygon\") multiFeatureIndex++;\n          break;\n        case \"MultiPolygon\":\n          for (j = 0; j < coords.length; j++) {\n            geometryIndex = 0;\n            for (k = 0; k < coords[j].length; k++) {\n              for (l = 0; l < coords[j][k].length - wrapShrink; l++) {\n                if (\n                  callback(\n                    coords[j][k][l],\n                    coordIndex,\n                    featureIndex,\n                    multiFeatureIndex,\n                    geometryIndex\n                  ) === false\n                )\n                  return false;\n                coordIndex++;\n              }\n              geometryIndex++;\n            }\n            multiFeatureIndex++;\n          }\n          break;\n        case \"GeometryCollection\":\n          for (j = 0; j < geometry.geometries.length; j++)\n            if (\n              coordEach(geometry.geometries[j], callback, excludeWrapCoord) ===\n              false\n            )\n              return false;\n          break;\n        default:\n          throw new Error(\"Unknown Geometry Type\");\n      }\n    }\n  }\n}\n\n/**\n * Callback for coordReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n *  - The previousValue argument is initialValue.\n *  - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n *  - The previousValue argument is the value of the first element present in the array.\n *  - The currentValue argument is the value of the second element present in the array.\n *\n * @callback coordReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Array<number>} currentCoord The current coordinate being processed.\n * @param {number} coordIndex The current index of the coordinate being processed.\n * Starts at index 0, if an initialValue is provided, and at index 1 otherwise.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n * @param {number} geometryIndex The current index of the Geometry being processed.\n */\n\n/**\n * Reduce coordinates in any GeoJSON object, similar to Array.reduce()\n *\n * @name coordReduce\n * @param {FeatureCollection|Geometry|Feature} geojson any GeoJSON object\n * @param {Function} callback a method that takes (previousValue, currentCoord, coordIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @param {boolean} [excludeWrapCoord=false] whether or not to include the final coordinate of LinearRings that wraps the ring in its iteration.\n * @returns {*} The value that results from the reduction.\n * @example\n * var features = turf.featureCollection([\n *   turf.point([26, 37], {\"foo\": \"bar\"}),\n *   turf.point([36, 53], {\"hello\": \"world\"})\n * ]);\n *\n * turf.coordReduce(features, function (previousValue, currentCoord, coordIndex, featureIndex, multiFeatureIndex, geometryIndex) {\n *   //=previousValue\n *   //=currentCoord\n *   //=coordIndex\n *   //=featureIndex\n *   //=multiFeatureIndex\n *   //=geometryIndex\n *   return currentCoord;\n * });\n */\nfunction coordReduce(geojson, callback, initialValue, excludeWrapCoord) {\n  var previousValue = initialValue;\n  coordEach(\n    geojson,\n    function (\n      currentCoord,\n      coordIndex,\n      featureIndex,\n      multiFeatureIndex,\n      geometryIndex\n    ) {\n      if (coordIndex === 0 && initialValue === undefined)\n        previousValue = currentCoord;\n      else\n        previousValue = callback(\n          previousValue,\n          currentCoord,\n          coordIndex,\n          featureIndex,\n          multiFeatureIndex,\n          geometryIndex\n        );\n    },\n    excludeWrapCoord\n  );\n  return previousValue;\n}\n\n/**\n * Callback for propEach\n *\n * @callback propEachCallback\n * @param {Object} currentProperties The current Properties being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n */\n\n/**\n * Iterate over properties in any GeoJSON object, similar to Array.forEach()\n *\n * @name propEach\n * @param {FeatureCollection|Feature} geojson any GeoJSON object\n * @param {Function} callback a method that takes (currentProperties, featureIndex)\n * @returns {void}\n * @example\n * var features = turf.featureCollection([\n *     turf.point([26, 37], {foo: 'bar'}),\n *     turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * turf.propEach(features, function (currentProperties, featureIndex) {\n *   //=currentProperties\n *   //=featureIndex\n * });\n */\nfunction propEach(geojson, callback) {\n  var i;\n  switch (geojson.type) {\n    case \"FeatureCollection\":\n      for (i = 0; i < geojson.features.length; i++) {\n        if (callback(geojson.features[i].properties, i) === false) break;\n      }\n      break;\n    case \"Feature\":\n      callback(geojson.properties, 0);\n      break;\n  }\n}\n\n/**\n * Callback for propReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n *  - The previousValue argument is initialValue.\n *  - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n *  - The previousValue argument is the value of the first element present in the array.\n *  - The currentValue argument is the value of the second element present in the array.\n *\n * @callback propReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {*} currentProperties The current Properties being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n */\n\n/**\n * Reduce properties in any GeoJSON object into a single value,\n * similar to how Array.reduce works. However, in this case we lazily run\n * the reduction, so an array of all properties is unnecessary.\n *\n * @name propReduce\n * @param {FeatureCollection|Feature} geojson any GeoJSON object\n * @param {Function} callback a method that takes (previousValue, currentProperties, featureIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {*} The value that results from the reduction.\n * @example\n * var features = turf.featureCollection([\n *     turf.point([26, 37], {foo: 'bar'}),\n *     turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * turf.propReduce(features, function (previousValue, currentProperties, featureIndex) {\n *   //=previousValue\n *   //=currentProperties\n *   //=featureIndex\n *   return currentProperties\n * });\n */\nfunction propReduce(geojson, callback, initialValue) {\n  var previousValue = initialValue;\n  propEach(geojson, function (currentProperties, featureIndex) {\n    if (featureIndex === 0 && initialValue === undefined)\n      previousValue = currentProperties;\n    else\n      previousValue = callback(previousValue, currentProperties, featureIndex);\n  });\n  return previousValue;\n}\n\n/**\n * Callback for featureEach\n *\n * @callback featureEachCallback\n * @param {Feature<any>} currentFeature The current Feature being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n */\n\n/**\n * Iterate over features in any GeoJSON object, similar to\n * Array.forEach.\n *\n * @name featureEach\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (currentFeature, featureIndex)\n * @returns {void}\n * @example\n * var features = turf.featureCollection([\n *   turf.point([26, 37], {foo: 'bar'}),\n *   turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * turf.featureEach(features, function (currentFeature, featureIndex) {\n *   //=currentFeature\n *   //=featureIndex\n * });\n */\nfunction featureEach(geojson, callback) {\n  if (geojson.type === \"Feature\") {\n    callback(geojson, 0);\n  } else if (geojson.type === \"FeatureCollection\") {\n    for (var i = 0; i < geojson.features.length; i++) {\n      if (callback(geojson.features[i], i) === false) break;\n    }\n  }\n}\n\n/**\n * Callback for featureReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n *  - The previousValue argument is initialValue.\n *  - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n *  - The previousValue argument is the value of the first element present in the array.\n *  - The currentValue argument is the value of the second element present in the array.\n *\n * @callback featureReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Feature} currentFeature The current Feature being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n */\n\n/**\n * Reduce features in any GeoJSON object, similar to Array.reduce().\n *\n * @name featureReduce\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (previousValue, currentFeature, featureIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {*} The value that results from the reduction.\n * @example\n * var features = turf.featureCollection([\n *   turf.point([26, 37], {\"foo\": \"bar\"}),\n *   turf.point([36, 53], {\"hello\": \"world\"})\n * ]);\n *\n * turf.featureReduce(features, function (previousValue, currentFeature, featureIndex) {\n *   //=previousValue\n *   //=currentFeature\n *   //=featureIndex\n *   return currentFeature\n * });\n */\nfunction featureReduce(geojson, callback, initialValue) {\n  var previousValue = initialValue;\n  featureEach(geojson, function (currentFeature, featureIndex) {\n    if (featureIndex === 0 && initialValue === undefined)\n      previousValue = currentFeature;\n    else previousValue = callback(previousValue, currentFeature, featureIndex);\n  });\n  return previousValue;\n}\n\n/**\n * Get all coordinates from any GeoJSON object.\n *\n * @name coordAll\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @returns {Array<Array<number>>} coordinate position array\n * @example\n * var features = turf.featureCollection([\n *   turf.point([26, 37], {foo: 'bar'}),\n *   turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * var coords = turf.coordAll(features);\n * //= [[26, 37], [36, 53]]\n */\nfunction coordAll(geojson) {\n  var coords = [];\n  coordEach(geojson, function (coord) {\n    coords.push(coord);\n  });\n  return coords;\n}\n\n/**\n * Callback for geomEach\n *\n * @callback geomEachCallback\n * @param {Geometry} currentGeometry The current Geometry being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {Object} featureProperties The current Feature Properties being processed.\n * @param {Array<number>} featureBBox The current Feature BBox being processed.\n * @param {number|string} featureId The current Feature Id being processed.\n */\n\n/**\n * Iterate over each geometry in any GeoJSON object, similar to Array.forEach()\n *\n * @name geomEach\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (currentGeometry, featureIndex, featureProperties, featureBBox, featureId)\n * @returns {void}\n * @example\n * var features = turf.featureCollection([\n *     turf.point([26, 37], {foo: 'bar'}),\n *     turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * turf.geomEach(features, function (currentGeometry, featureIndex, featureProperties, featureBBox, featureId) {\n *   //=currentGeometry\n *   //=featureIndex\n *   //=featureProperties\n *   //=featureBBox\n *   //=featureId\n * });\n */\nfunction geomEach(geojson, callback) {\n  var i,\n    j,\n    g,\n    geometry,\n    stopG,\n    geometryMaybeCollection,\n    isGeometryCollection,\n    featureProperties,\n    featureBBox,\n    featureId,\n    featureIndex = 0,\n    isFeatureCollection = geojson.type === \"FeatureCollection\",\n    isFeature = geojson.type === \"Feature\",\n    stop = isFeatureCollection ? geojson.features.length : 1;\n\n  // This logic may look a little weird. The reason why it is that way\n  // is because it's trying to be fast. GeoJSON supports multiple kinds\n  // of objects at its root: FeatureCollection, Features, Geometries.\n  // This function has the responsibility of handling all of them, and that\n  // means that some of the `for` loops you see below actually just don't apply\n  // to certain inputs. For instance, if you give this just a\n  // Point geometry, then both loops are short-circuited and all we do\n  // is gradually rename the input until it's called 'geometry'.\n  //\n  // This also aims to allocate as few resources as possible: just a\n  // few numbers and booleans, rather than any temporary arrays as would\n  // be required with the normalization approach.\n  for (i = 0; i < stop; i++) {\n    geometryMaybeCollection = isFeatureCollection\n      ? geojson.features[i].geometry\n      : isFeature\n      ? geojson.geometry\n      : geojson;\n    featureProperties = isFeatureCollection\n      ? geojson.features[i].properties\n      : isFeature\n      ? geojson.properties\n      : {};\n    featureBBox = isFeatureCollection\n      ? geojson.features[i].bbox\n      : isFeature\n      ? geojson.bbox\n      : undefined;\n    featureId = isFeatureCollection\n      ? geojson.features[i].id\n      : isFeature\n      ? geojson.id\n      : undefined;\n    isGeometryCollection = geometryMaybeCollection\n      ? geometryMaybeCollection.type === \"GeometryCollection\"\n      : false;\n    stopG = isGeometryCollection\n      ? geometryMaybeCollection.geometries.length\n      : 1;\n\n    for (g = 0; g < stopG; g++) {\n      geometry = isGeometryCollection\n        ? geometryMaybeCollection.geometries[g]\n        : geometryMaybeCollection;\n\n      // Handle null Geometry\n      if (geometry === null) {\n        if (\n          callback(\n            null,\n            featureIndex,\n            featureProperties,\n            featureBBox,\n            featureId\n          ) === false\n        )\n          return false;\n        continue;\n      }\n      switch (geometry.type) {\n        case \"Point\":\n        case \"LineString\":\n        case \"MultiPoint\":\n        case \"Polygon\":\n        case \"MultiLineString\":\n        case \"MultiPolygon\": {\n          if (\n            callback(\n              geometry,\n              featureIndex,\n              featureProperties,\n              featureBBox,\n              featureId\n            ) === false\n          )\n            return false;\n          break;\n        }\n        case \"GeometryCollection\": {\n          for (j = 0; j < geometry.geometries.length; j++) {\n            if (\n              callback(\n                geometry.geometries[j],\n                featureIndex,\n                featureProperties,\n                featureBBox,\n                featureId\n              ) === false\n            )\n              return false;\n          }\n          break;\n        }\n        default:\n          throw new Error(\"Unknown Geometry Type\");\n      }\n    }\n    // Only increase `featureIndex` per each feature\n    featureIndex++;\n  }\n}\n\n/**\n * Callback for geomReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n *  - The previousValue argument is initialValue.\n *  - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n *  - The previousValue argument is the value of the first element present in the array.\n *  - The currentValue argument is the value of the second element present in the array.\n *\n * @callback geomReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Geometry} currentGeometry The current Geometry being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {Object} featureProperties The current Feature Properties being processed.\n * @param {Array<number>} featureBBox The current Feature BBox being processed.\n * @param {number|string} featureId The current Feature Id being processed.\n */\n\n/**\n * Reduce geometry in any GeoJSON object, similar to Array.reduce().\n *\n * @name geomReduce\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (previousValue, currentGeometry, featureIndex, featureProperties, featureBBox, featureId)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {*} The value that results from the reduction.\n * @example\n * var features = turf.featureCollection([\n *     turf.point([26, 37], {foo: 'bar'}),\n *     turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * turf.geomReduce(features, function (previousValue, currentGeometry, featureIndex, featureProperties, featureBBox, featureId) {\n *   //=previousValue\n *   //=currentGeometry\n *   //=featureIndex\n *   //=featureProperties\n *   //=featureBBox\n *   //=featureId\n *   return currentGeometry\n * });\n */\nfunction geomReduce(geojson, callback, initialValue) {\n  var previousValue = initialValue;\n  geomEach(\n    geojson,\n    function (\n      currentGeometry,\n      featureIndex,\n      featureProperties,\n      featureBBox,\n      featureId\n    ) {\n      if (featureIndex === 0 && initialValue === undefined)\n        previousValue = currentGeometry;\n      else\n        previousValue = callback(\n          previousValue,\n          currentGeometry,\n          featureIndex,\n          featureProperties,\n          featureBBox,\n          featureId\n        );\n    }\n  );\n  return previousValue;\n}\n\n/**\n * Callback for flattenEach\n *\n * @callback flattenEachCallback\n * @param {Feature} currentFeature The current flattened feature being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n */\n\n/**\n * Iterate over flattened features in any GeoJSON object, similar to\n * Array.forEach.\n *\n * @name flattenEach\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (currentFeature, featureIndex, multiFeatureIndex)\n * @example\n * var features = turf.featureCollection([\n *     turf.point([26, 37], {foo: 'bar'}),\n *     turf.multiPoint([[40, 30], [36, 53]], {hello: 'world'})\n * ]);\n *\n * turf.flattenEach(features, function (currentFeature, featureIndex, multiFeatureIndex) {\n *   //=currentFeature\n *   //=featureIndex\n *   //=multiFeatureIndex\n * });\n */\nfunction flattenEach(geojson, callback) {\n  geomEach(geojson, function (geometry, featureIndex, properties, bbox, id) {\n    // Callback for single geometry\n    var type = geometry === null ? null : geometry.type;\n    switch (type) {\n      case null:\n      case \"Point\":\n      case \"LineString\":\n      case \"Polygon\":\n        if (\n          callback(\n            helpers.feature(geometry, properties, { bbox: bbox, id: id }),\n            featureIndex,\n            0\n          ) === false\n        )\n          return false;\n        return;\n    }\n\n    var geomType;\n\n    // Callback for multi-geometry\n    switch (type) {\n      case \"MultiPoint\":\n        geomType = \"Point\";\n        break;\n      case \"MultiLineString\":\n        geomType = \"LineString\";\n        break;\n      case \"MultiPolygon\":\n        geomType = \"Polygon\";\n        break;\n    }\n\n    for (\n      var multiFeatureIndex = 0;\n      multiFeatureIndex < geometry.coordinates.length;\n      multiFeatureIndex++\n    ) {\n      var coordinate = geometry.coordinates[multiFeatureIndex];\n      var geom = {\n        type: geomType,\n        coordinates: coordinate,\n      };\n      if (\n        callback(helpers.feature(geom, properties), featureIndex, multiFeatureIndex) ===\n        false\n      )\n        return false;\n    }\n  });\n}\n\n/**\n * Callback for flattenReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n *  - The previousValue argument is initialValue.\n *  - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n *  - The previousValue argument is the value of the first element present in the array.\n *  - The currentValue argument is the value of the second element present in the array.\n *\n * @callback flattenReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Feature} currentFeature The current Feature being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n */\n\n/**\n * Reduce flattened features in any GeoJSON object, similar to Array.reduce().\n *\n * @name flattenReduce\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (previousValue, currentFeature, featureIndex, multiFeatureIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {*} The value that results from the reduction.\n * @example\n * var features = turf.featureCollection([\n *     turf.point([26, 37], {foo: 'bar'}),\n *     turf.multiPoint([[40, 30], [36, 53]], {hello: 'world'})\n * ]);\n *\n * turf.flattenReduce(features, function (previousValue, currentFeature, featureIndex, multiFeatureIndex) {\n *   //=previousValue\n *   //=currentFeature\n *   //=featureIndex\n *   //=multiFeatureIndex\n *   return currentFeature\n * });\n */\nfunction flattenReduce(geojson, callback, initialValue) {\n  var previousValue = initialValue;\n  flattenEach(\n    geojson,\n    function (currentFeature, featureIndex, multiFeatureIndex) {\n      if (\n        featureIndex === 0 &&\n        multiFeatureIndex === 0 &&\n        initialValue === undefined\n      )\n        previousValue = currentFeature;\n      else\n        previousValue = callback(\n          previousValue,\n          currentFeature,\n          featureIndex,\n          multiFeatureIndex\n        );\n    }\n  );\n  return previousValue;\n}\n\n/**\n * Callback for segmentEach\n *\n * @callback segmentEachCallback\n * @param {Feature<LineString>} currentSegment The current Segment being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n * @param {number} geometryIndex The current index of the Geometry being processed.\n * @param {number} segmentIndex The current index of the Segment being processed.\n * @returns {void}\n */\n\n/**\n * Iterate over 2-vertex line segment in any GeoJSON object, similar to Array.forEach()\n * (Multi)Point geometries do not contain segments therefore they are ignored during this operation.\n *\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON\n * @param {Function} callback a method that takes (currentSegment, featureIndex, multiFeatureIndex, geometryIndex, segmentIndex)\n * @returns {void}\n * @example\n * var polygon = turf.polygon([[[-50, 5], [-40, -10], [-50, -10], [-40, 5], [-50, 5]]]);\n *\n * // Iterate over GeoJSON by 2-vertex segments\n * turf.segmentEach(polygon, function (currentSegment, featureIndex, multiFeatureIndex, geometryIndex, segmentIndex) {\n *   //=currentSegment\n *   //=featureIndex\n *   //=multiFeatureIndex\n *   //=geometryIndex\n *   //=segmentIndex\n * });\n *\n * // Calculate the total number of segments\n * var total = 0;\n * turf.segmentEach(polygon, function () {\n *     total++;\n * });\n */\nfunction segmentEach(geojson, callback) {\n  flattenEach(geojson, function (feature, featureIndex, multiFeatureIndex) {\n    var segmentIndex = 0;\n\n    // Exclude null Geometries\n    if (!feature.geometry) return;\n    // (Multi)Point geometries do not contain segments therefore they are ignored during this operation.\n    var type = feature.geometry.type;\n    if (type === \"Point\" || type === \"MultiPoint\") return;\n\n    // Generate 2-vertex line segments\n    var previousCoords;\n    var previousFeatureIndex = 0;\n    var previousMultiIndex = 0;\n    var prevGeomIndex = 0;\n    if (\n      coordEach(\n        feature,\n        function (\n          currentCoord,\n          coordIndex,\n          featureIndexCoord,\n          multiPartIndexCoord,\n          geometryIndex\n        ) {\n          // Simulating a meta.coordReduce() since `reduce` operations cannot be stopped by returning `false`\n          if (\n            previousCoords === undefined ||\n            featureIndex > previousFeatureIndex ||\n            multiPartIndexCoord > previousMultiIndex ||\n            geometryIndex > prevGeomIndex\n          ) {\n            previousCoords = currentCoord;\n            previousFeatureIndex = featureIndex;\n            previousMultiIndex = multiPartIndexCoord;\n            prevGeomIndex = geometryIndex;\n            segmentIndex = 0;\n            return;\n          }\n          var currentSegment = helpers.lineString(\n            [previousCoords, currentCoord],\n            feature.properties\n          );\n          if (\n            callback(\n              currentSegment,\n              featureIndex,\n              multiFeatureIndex,\n              geometryIndex,\n              segmentIndex\n            ) === false\n          )\n            return false;\n          segmentIndex++;\n          previousCoords = currentCoord;\n        }\n      ) === false\n    )\n      return false;\n  });\n}\n\n/**\n * Callback for segmentReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n *  - The previousValue argument is initialValue.\n *  - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n *  - The previousValue argument is the value of the first element present in the array.\n *  - The currentValue argument is the value of the second element present in the array.\n *\n * @callback segmentReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Feature<LineString>} currentSegment The current Segment being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n * @param {number} geometryIndex The current index of the Geometry being processed.\n * @param {number} segmentIndex The current index of the Segment being processed.\n */\n\n/**\n * Reduce 2-vertex line segment in any GeoJSON object, similar to Array.reduce()\n * (Multi)Point geometries do not contain segments therefore they are ignored during this operation.\n *\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON\n * @param {Function} callback a method that takes (previousValue, currentSegment, currentIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {void}\n * @example\n * var polygon = turf.polygon([[[-50, 5], [-40, -10], [-50, -10], [-40, 5], [-50, 5]]]);\n *\n * // Iterate over GeoJSON by 2-vertex segments\n * turf.segmentReduce(polygon, function (previousSegment, currentSegment, featureIndex, multiFeatureIndex, geometryIndex, segmentIndex) {\n *   //= previousSegment\n *   //= currentSegment\n *   //= featureIndex\n *   //= multiFeatureIndex\n *   //= geometryIndex\n *   //= segmentIndex\n *   return currentSegment\n * });\n *\n * // Calculate the total number of segments\n * var initialValue = 0\n * var total = turf.segmentReduce(polygon, function (previousValue) {\n *     previousValue++;\n *     return previousValue;\n * }, initialValue);\n */\nfunction segmentReduce(geojson, callback, initialValue) {\n  var previousValue = initialValue;\n  var started = false;\n  segmentEach(\n    geojson,\n    function (\n      currentSegment,\n      featureIndex,\n      multiFeatureIndex,\n      geometryIndex,\n      segmentIndex\n    ) {\n      if (started === false && initialValue === undefined)\n        previousValue = currentSegment;\n      else\n        previousValue = callback(\n          previousValue,\n          currentSegment,\n          featureIndex,\n          multiFeatureIndex,\n          geometryIndex,\n          segmentIndex\n        );\n      started = true;\n    }\n  );\n  return previousValue;\n}\n\n/**\n * Callback for lineEach\n *\n * @callback lineEachCallback\n * @param {Feature<LineString>} currentLine The current LineString|LinearRing being processed\n * @param {number} featureIndex The current index of the Feature being processed\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed\n * @param {number} geometryIndex The current index of the Geometry being processed\n */\n\n/**\n * Iterate over line or ring coordinates in LineString, Polygon, MultiLineString, MultiPolygon Features or Geometries,\n * similar to Array.forEach.\n *\n * @name lineEach\n * @param {Geometry|Feature<LineString|Polygon|MultiLineString|MultiPolygon>} geojson object\n * @param {Function} callback a method that takes (currentLine, featureIndex, multiFeatureIndex, geometryIndex)\n * @example\n * var multiLine = turf.multiLineString([\n *   [[26, 37], [35, 45]],\n *   [[36, 53], [38, 50], [41, 55]]\n * ]);\n *\n * turf.lineEach(multiLine, function (currentLine, featureIndex, multiFeatureIndex, geometryIndex) {\n *   //=currentLine\n *   //=featureIndex\n *   //=multiFeatureIndex\n *   //=geometryIndex\n * });\n */\nfunction lineEach(geojson, callback) {\n  // validation\n  if (!geojson) throw new Error(\"geojson is required\");\n\n  flattenEach(geojson, function (feature, featureIndex, multiFeatureIndex) {\n    if (feature.geometry === null) return;\n    var type = feature.geometry.type;\n    var coords = feature.geometry.coordinates;\n    switch (type) {\n      case \"LineString\":\n        if (callback(feature, featureIndex, multiFeatureIndex, 0, 0) === false)\n          return false;\n        break;\n      case \"Polygon\":\n        for (\n          var geometryIndex = 0;\n          geometryIndex < coords.length;\n          geometryIndex++\n        ) {\n          if (\n            callback(\n              helpers.lineString(coords[geometryIndex], feature.properties),\n              featureIndex,\n              multiFeatureIndex,\n              geometryIndex\n            ) === false\n          )\n            return false;\n        }\n        break;\n    }\n  });\n}\n\n/**\n * Callback for lineReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n *  - The previousValue argument is initialValue.\n *  - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n *  - The previousValue argument is the value of the first element present in the array.\n *  - The currentValue argument is the value of the second element present in the array.\n *\n * @callback lineReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Feature<LineString>} currentLine The current LineString|LinearRing being processed.\n * @param {number} featureIndex The current index of the Feature being processed\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed\n * @param {number} geometryIndex The current index of the Geometry being processed\n */\n\n/**\n * Reduce features in any GeoJSON object, similar to Array.reduce().\n *\n * @name lineReduce\n * @param {Geometry|Feature<LineString|Polygon|MultiLineString|MultiPolygon>} geojson object\n * @param {Function} callback a method that takes (previousValue, currentLine, featureIndex, multiFeatureIndex, geometryIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {*} The value that results from the reduction.\n * @example\n * var multiPoly = turf.multiPolygon([\n *   turf.polygon([[[12,48],[2,41],[24,38],[12,48]], [[9,44],[13,41],[13,45],[9,44]]]),\n *   turf.polygon([[[5, 5], [0, 0], [2, 2], [4, 4], [5, 5]]])\n * ]);\n *\n * turf.lineReduce(multiPoly, function (previousValue, currentLine, featureIndex, multiFeatureIndex, geometryIndex) {\n *   //=previousValue\n *   //=currentLine\n *   //=featureIndex\n *   //=multiFeatureIndex\n *   //=geometryIndex\n *   return currentLine\n * });\n */\nfunction lineReduce(geojson, callback, initialValue) {\n  var previousValue = initialValue;\n  lineEach(\n    geojson,\n    function (currentLine, featureIndex, multiFeatureIndex, geometryIndex) {\n      if (featureIndex === 0 && initialValue === undefined)\n        previousValue = currentLine;\n      else\n        previousValue = callback(\n          previousValue,\n          currentLine,\n          featureIndex,\n          multiFeatureIndex,\n          geometryIndex\n        );\n    }\n  );\n  return previousValue;\n}\n\n/**\n * Finds a particular 2-vertex LineString Segment from a GeoJSON using `@turf/meta` indexes.\n *\n * Negative indexes are permitted.\n * Point & MultiPoint will always return null.\n *\n * @param {FeatureCollection|Feature|Geometry} geojson Any GeoJSON Feature or Geometry\n * @param {Object} [options={}] Optional parameters\n * @param {number} [options.featureIndex=0] Feature Index\n * @param {number} [options.multiFeatureIndex=0] Multi-Feature Index\n * @param {number} [options.geometryIndex=0] Geometry Index\n * @param {number} [options.segmentIndex=0] Segment Index\n * @param {Object} [options.properties={}] Translate Properties to output LineString\n * @param {BBox} [options.bbox={}] Translate BBox to output LineString\n * @param {number|string} [options.id={}] Translate Id to output LineString\n * @returns {Feature<LineString>} 2-vertex GeoJSON Feature LineString\n * @example\n * var multiLine = turf.multiLineString([\n *     [[10, 10], [50, 30], [30, 40]],\n *     [[-10, -10], [-50, -30], [-30, -40]]\n * ]);\n *\n * // First Segment (defaults are 0)\n * turf.findSegment(multiLine);\n * // => Feature<LineString<[[10, 10], [50, 30]]>>\n *\n * // First Segment of 2nd Multi Feature\n * turf.findSegment(multiLine, {multiFeatureIndex: 1});\n * // => Feature<LineString<[[-10, -10], [-50, -30]]>>\n *\n * // Last Segment of Last Multi Feature\n * turf.findSegment(multiLine, {multiFeatureIndex: -1, segmentIndex: -1});\n * // => Feature<LineString<[[-50, -30], [-30, -40]]>>\n */\nfunction findSegment(geojson, options) {\n  // Optional Parameters\n  options = options || {};\n  if (!helpers.isObject(options)) throw new Error(\"options is invalid\");\n  var featureIndex = options.featureIndex || 0;\n  var multiFeatureIndex = options.multiFeatureIndex || 0;\n  var geometryIndex = options.geometryIndex || 0;\n  var segmentIndex = options.segmentIndex || 0;\n\n  // Find FeatureIndex\n  var properties = options.properties;\n  var geometry;\n\n  switch (geojson.type) {\n    case \"FeatureCollection\":\n      if (featureIndex < 0)\n        featureIndex = geojson.features.length + featureIndex;\n      properties = properties || geojson.features[featureIndex].properties;\n      geometry = geojson.features[featureIndex].geometry;\n      break;\n    case \"Feature\":\n      properties = properties || geojson.properties;\n      geometry = geojson.geometry;\n      break;\n    case \"Point\":\n    case \"MultiPoint\":\n      return null;\n    case \"LineString\":\n    case \"Polygon\":\n    case \"MultiLineString\":\n    case \"MultiPolygon\":\n      geometry = geojson;\n      break;\n    default:\n      throw new Error(\"geojson is invalid\");\n  }\n\n  // Find SegmentIndex\n  if (geometry === null) return null;\n  var coords = geometry.coordinates;\n  switch (geometry.type) {\n    case \"Point\":\n    case \"MultiPoint\":\n      return null;\n    case \"LineString\":\n      if (segmentIndex < 0) segmentIndex = coords.length + segmentIndex - 1;\n      return helpers.lineString(\n        [coords[segmentIndex], coords[segmentIndex + 1]],\n        properties,\n        options\n      );\n    case \"Polygon\":\n      if (geometryIndex < 0) geometryIndex = coords.length + geometryIndex;\n      if (segmentIndex < 0)\n        segmentIndex = coords[geometryIndex].length + segmentIndex - 1;\n      return helpers.lineString(\n        [\n          coords[geometryIndex][segmentIndex],\n          coords[geometryIndex][segmentIndex + 1],\n        ],\n        properties,\n        options\n      );\n    case \"MultiLineString\":\n      if (multiFeatureIndex < 0)\n        multiFeatureIndex = coords.length + multiFeatureIndex;\n      if (segmentIndex < 0)\n        segmentIndex = coords[multiFeatureIndex].length + segmentIndex - 1;\n      return helpers.lineString(\n        [\n          coords[multiFeatureIndex][segmentIndex],\n          coords[multiFeatureIndex][segmentIndex + 1],\n        ],\n        properties,\n        options\n      );\n    case \"MultiPolygon\":\n      if (multiFeatureIndex < 0)\n        multiFeatureIndex = coords.length + multiFeatureIndex;\n      if (geometryIndex < 0)\n        geometryIndex = coords[multiFeatureIndex].length + geometryIndex;\n      if (segmentIndex < 0)\n        segmentIndex =\n          coords[multiFeatureIndex][geometryIndex].length - segmentIndex - 1;\n      return helpers.lineString(\n        [\n          coords[multiFeatureIndex][geometryIndex][segmentIndex],\n          coords[multiFeatureIndex][geometryIndex][segmentIndex + 1],\n        ],\n        properties,\n        options\n      );\n  }\n  throw new Error(\"geojson is invalid\");\n}\n\n/**\n * Finds a particular Point from a GeoJSON using `@turf/meta` indexes.\n *\n * Negative indexes are permitted.\n *\n * @param {FeatureCollection|Feature|Geometry} geojson Any GeoJSON Feature or Geometry\n * @param {Object} [options={}] Optional parameters\n * @param {number} [options.featureIndex=0] Feature Index\n * @param {number} [options.multiFeatureIndex=0] Multi-Feature Index\n * @param {number} [options.geometryIndex=0] Geometry Index\n * @param {number} [options.coordIndex=0] Coord Index\n * @param {Object} [options.properties={}] Translate Properties to output Point\n * @param {BBox} [options.bbox={}] Translate BBox to output Point\n * @param {number|string} [options.id={}] Translate Id to output Point\n * @returns {Feature<Point>} 2-vertex GeoJSON Feature Point\n * @example\n * var multiLine = turf.multiLineString([\n *     [[10, 10], [50, 30], [30, 40]],\n *     [[-10, -10], [-50, -30], [-30, -40]]\n * ]);\n *\n * // First Segment (defaults are 0)\n * turf.findPoint(multiLine);\n * // => Feature<Point<[10, 10]>>\n *\n * // First Segment of the 2nd Multi-Feature\n * turf.findPoint(multiLine, {multiFeatureIndex: 1});\n * // => Feature<Point<[-10, -10]>>\n *\n * // Last Segment of last Multi-Feature\n * turf.findPoint(multiLine, {multiFeatureIndex: -1, coordIndex: -1});\n * // => Feature<Point<[-30, -40]>>\n */\nfunction findPoint(geojson, options) {\n  // Optional Parameters\n  options = options || {};\n  if (!helpers.isObject(options)) throw new Error(\"options is invalid\");\n  var featureIndex = options.featureIndex || 0;\n  var multiFeatureIndex = options.multiFeatureIndex || 0;\n  var geometryIndex = options.geometryIndex || 0;\n  var coordIndex = options.coordIndex || 0;\n\n  // Find FeatureIndex\n  var properties = options.properties;\n  var geometry;\n\n  switch (geojson.type) {\n    case \"FeatureCollection\":\n      if (featureIndex < 0)\n        featureIndex = geojson.features.length + featureIndex;\n      properties = properties || geojson.features[featureIndex].properties;\n      geometry = geojson.features[featureIndex].geometry;\n      break;\n    case \"Feature\":\n      properties = properties || geojson.properties;\n      geometry = geojson.geometry;\n      break;\n    case \"Point\":\n    case \"MultiPoint\":\n      return null;\n    case \"LineString\":\n    case \"Polygon\":\n    case \"MultiLineString\":\n    case \"MultiPolygon\":\n      geometry = geojson;\n      break;\n    default:\n      throw new Error(\"geojson is invalid\");\n  }\n\n  // Find Coord Index\n  if (geometry === null) return null;\n  var coords = geometry.coordinates;\n  switch (geometry.type) {\n    case \"Point\":\n      return helpers.point(coords, properties, options);\n    case \"MultiPoint\":\n      if (multiFeatureIndex < 0)\n        multiFeatureIndex = coords.length + multiFeatureIndex;\n      return helpers.point(coords[multiFeatureIndex], properties, options);\n    case \"LineString\":\n      if (coordIndex < 0) coordIndex = coords.length + coordIndex;\n      return helpers.point(coords[coordIndex], properties, options);\n    case \"Polygon\":\n      if (geometryIndex < 0) geometryIndex = coords.length + geometryIndex;\n      if (coordIndex < 0)\n        coordIndex = coords[geometryIndex].length + coordIndex;\n      return helpers.point(coords[geometryIndex][coordIndex], properties, options);\n    case \"MultiLineString\":\n      if (multiFeatureIndex < 0)\n        multiFeatureIndex = coords.length + multiFeatureIndex;\n      if (coordIndex < 0)\n        coordIndex = coords[multiFeatureIndex].length + coordIndex;\n      return helpers.point(coords[multiFeatureIndex][coordIndex], properties, options);\n    case \"MultiPolygon\":\n      if (multiFeatureIndex < 0)\n        multiFeatureIndex = coords.length + multiFeatureIndex;\n      if (geometryIndex < 0)\n        geometryIndex = coords[multiFeatureIndex].length + geometryIndex;\n      if (coordIndex < 0)\n        coordIndex =\n          coords[multiFeatureIndex][geometryIndex].length - coordIndex;\n      return helpers.point(\n        coords[multiFeatureIndex][geometryIndex][coordIndex],\n        properties,\n        options\n      );\n  }\n  throw new Error(\"geojson is invalid\");\n}\n\nexports.coordAll = coordAll;\nexports.coordEach = coordEach;\nexports.coordReduce = coordReduce;\nexports.featureEach = featureEach;\nexports.featureReduce = featureReduce;\nexports.findPoint = findPoint;\nexports.findSegment = findSegment;\nexports.flattenEach = flattenEach;\nexports.flattenReduce = flattenReduce;\nexports.geomEach = geomEach;\nexports.geomReduce = geomReduce;\nexports.lineEach = lineEach;\nexports.lineReduce = lineReduce;\nexports.propEach = propEach;\nexports.propReduce = propReduce;\nexports.segmentEach = segmentEach;\nexports.segmentReduce = segmentReduce;\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n    return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar boolean_disjoint_1 = __importDefault(require(\"@turf/boolean-disjoint\"));\nvar meta_1 = require(\"@turf/meta\");\n/**\n * Boolean-intersects returns (TRUE) two geometries intersect.\n *\n * @name booleanIntersects\n * @param {Geometry|Feature<any>} feature1 GeoJSON Feature or Geometry\n * @param {Geometry|Feature<any>} feature2 GeoJSON Feature or Geometry\n * @returns {boolean} true/false\n * @example\n * var point = turf.point([2, 2]);\n * var line = turf.lineString([[1, 1], [1, 2], [1, 3], [1, 4]]);\n *\n * turf.booleanIntersects(line, point);\n * //=true\n */\nfunction booleanIntersects(feature1, feature2) {\n    var bool = false;\n    meta_1.flattenEach(feature1, function (flatten1) {\n        meta_1.flattenEach(feature2, function (flatten2) {\n            if (bool === true) {\n                return true;\n            }\n            bool = !boolean_disjoint_1.default(flatten1.geometry, flatten2.geometry);\n        });\n    });\n    return bool;\n}\nexports.default = booleanIntersects;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * @module helpers\n */\n/**\n * Earth Radius used with the Harvesine formula and approximates using a spherical (non-ellipsoid) Earth.\n *\n * @memberof helpers\n * @type {number}\n */\nexports.earthRadius = 6371008.8;\n/**\n * Unit of measurement factors using a spherical (non-ellipsoid) earth radius.\n *\n * @memberof helpers\n * @type {Object}\n */\nexports.factors = {\n    centimeters: exports.earthRadius * 100,\n    centimetres: exports.earthRadius * 100,\n    degrees: exports.earthRadius / 111325,\n    feet: exports.earthRadius * 3.28084,\n    inches: exports.earthRadius * 39.37,\n    kilometers: exports.earthRadius / 1000,\n    kilometres: exports.earthRadius / 1000,\n    meters: exports.earthRadius,\n    metres: exports.earthRadius,\n    miles: exports.earthRadius / 1609.344,\n    millimeters: exports.earthRadius * 1000,\n    millimetres: exports.earthRadius * 1000,\n    nauticalmiles: exports.earthRadius / 1852,\n    radians: 1,\n    yards: exports.earthRadius * 1.0936,\n};\n/**\n * Units of measurement factors based on 1 meter.\n *\n * @memberof helpers\n * @type {Object}\n */\nexports.unitsFactors = {\n    centimeters: 100,\n    centimetres: 100,\n    degrees: 1 / 111325,\n    feet: 3.28084,\n    inches: 39.37,\n    kilometers: 1 / 1000,\n    kilometres: 1 / 1000,\n    meters: 1,\n    metres: 1,\n    miles: 1 / 1609.344,\n    millimeters: 1000,\n    millimetres: 1000,\n    nauticalmiles: 1 / 1852,\n    radians: 1 / exports.earthRadius,\n    yards: 1.0936133,\n};\n/**\n * Area of measurement factors based on 1 square meter.\n *\n * @memberof helpers\n * @type {Object}\n */\nexports.areaFactors = {\n    acres: 0.000247105,\n    centimeters: 10000,\n    centimetres: 10000,\n    feet: 10.763910417,\n    hectares: 0.0001,\n    inches: 1550.003100006,\n    kilometers: 0.000001,\n    kilometres: 0.000001,\n    meters: 1,\n    metres: 1,\n    miles: 3.86e-7,\n    millimeters: 1000000,\n    millimetres: 1000000,\n    yards: 1.195990046,\n};\n/**\n * Wraps a GeoJSON {@link Geometry} in a GeoJSON {@link Feature}.\n *\n * @name feature\n * @param {Geometry} geometry input geometry\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} a GeoJSON Feature\n * @example\n * var geometry = {\n *   \"type\": \"Point\",\n *   \"coordinates\": [110, 50]\n * };\n *\n * var feature = turf.feature(geometry);\n *\n * //=feature\n */\nfunction feature(geom, properties, options) {\n    if (options === void 0) { options = {}; }\n    var feat = { type: \"Feature\" };\n    if (options.id === 0 || options.id) {\n        feat.id = options.id;\n    }\n    if (options.bbox) {\n        feat.bbox = options.bbox;\n    }\n    feat.properties = properties || {};\n    feat.geometry = geom;\n    return feat;\n}\nexports.feature = feature;\n/**\n * Creates a GeoJSON {@link Geometry} from a Geometry string type & coordinates.\n * For GeometryCollection type use `helpers.geometryCollection`\n *\n * @name geometry\n * @param {string} type Geometry Type\n * @param {Array<any>} coordinates Coordinates\n * @param {Object} [options={}] Optional Parameters\n * @returns {Geometry} a GeoJSON Geometry\n * @example\n * var type = \"Point\";\n * var coordinates = [110, 50];\n * var geometry = turf.geometry(type, coordinates);\n * // => geometry\n */\nfunction geometry(type, coordinates, _options) {\n    if (_options === void 0) { _options = {}; }\n    switch (type) {\n        case \"Point\":\n            return point(coordinates).geometry;\n        case \"LineString\":\n            return lineString(coordinates).geometry;\n        case \"Polygon\":\n            return polygon(coordinates).geometry;\n        case \"MultiPoint\":\n            return multiPoint(coordinates).geometry;\n        case \"MultiLineString\":\n            return multiLineString(coordinates).geometry;\n        case \"MultiPolygon\":\n            return multiPolygon(coordinates).geometry;\n        default:\n            throw new Error(type + \" is invalid\");\n    }\n}\nexports.geometry = geometry;\n/**\n * Creates a {@link Point} {@link Feature} from a Position.\n *\n * @name point\n * @param {Array<number>} coordinates longitude, latitude position (each in decimal degrees)\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<Point>} a Point feature\n * @example\n * var point = turf.point([-75.343, 39.984]);\n *\n * //=point\n */\nfunction point(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    if (!coordinates) {\n        throw new Error(\"coordinates is required\");\n    }\n    if (!Array.isArray(coordinates)) {\n        throw new Error(\"coordinates must be an Array\");\n    }\n    if (coordinates.length < 2) {\n        throw new Error(\"coordinates must be at least 2 numbers long\");\n    }\n    if (!isNumber(coordinates[0]) || !isNumber(coordinates[1])) {\n        throw new Error(\"coordinates must contain numbers\");\n    }\n    var geom = {\n        type: \"Point\",\n        coordinates: coordinates,\n    };\n    return feature(geom, properties, options);\n}\nexports.point = point;\n/**\n * Creates a {@link Point} {@link FeatureCollection} from an Array of Point coordinates.\n *\n * @name points\n * @param {Array<Array<number>>} coordinates an array of Points\n * @param {Object} [properties={}] Translate these properties to each Feature\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north]\n * associated with the FeatureCollection\n * @param {string|number} [options.id] Identifier associated with the FeatureCollection\n * @returns {FeatureCollection<Point>} Point Feature\n * @example\n * var points = turf.points([\n *   [-75, 39],\n *   [-80, 45],\n *   [-78, 50]\n * ]);\n *\n * //=points\n */\nfunction points(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    return featureCollection(coordinates.map(function (coords) {\n        return point(coords, properties);\n    }), options);\n}\nexports.points = points;\n/**\n * Creates a {@link Polygon} {@link Feature} from an Array of LinearRings.\n *\n * @name polygon\n * @param {Array<Array<Array<number>>>} coordinates an array of LinearRings\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<Polygon>} Polygon Feature\n * @example\n * var polygon = turf.polygon([[[-5, 52], [-4, 56], [-2, 51], [-7, 54], [-5, 52]]], { name: 'poly1' });\n *\n * //=polygon\n */\nfunction polygon(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    for (var _i = 0, coordinates_1 = coordinates; _i < coordinates_1.length; _i++) {\n        var ring = coordinates_1[_i];\n        if (ring.length < 4) {\n            throw new Error(\"Each LinearRing of a Polygon must have 4 or more Positions.\");\n        }\n        for (var j = 0; j < ring[ring.length - 1].length; j++) {\n            // Check if first point of Polygon contains two numbers\n            if (ring[ring.length - 1][j] !== ring[0][j]) {\n                throw new Error(\"First and last Position are not equivalent.\");\n            }\n        }\n    }\n    var geom = {\n        type: \"Polygon\",\n        coordinates: coordinates,\n    };\n    return feature(geom, properties, options);\n}\nexports.polygon = polygon;\n/**\n * Creates a {@link Polygon} {@link FeatureCollection} from an Array of Polygon coordinates.\n *\n * @name polygons\n * @param {Array<Array<Array<Array<number>>>>} coordinates an array of Polygon coordinates\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the FeatureCollection\n * @returns {FeatureCollection<Polygon>} Polygon FeatureCollection\n * @example\n * var polygons = turf.polygons([\n *   [[[-5, 52], [-4, 56], [-2, 51], [-7, 54], [-5, 52]]],\n *   [[[-15, 42], [-14, 46], [-12, 41], [-17, 44], [-15, 42]]],\n * ]);\n *\n * //=polygons\n */\nfunction polygons(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    return featureCollection(coordinates.map(function (coords) {\n        return polygon(coords, properties);\n    }), options);\n}\nexports.polygons = polygons;\n/**\n * Creates a {@link LineString} {@link Feature} from an Array of Positions.\n *\n * @name lineString\n * @param {Array<Array<number>>} coordinates an array of Positions\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<LineString>} LineString Feature\n * @example\n * var linestring1 = turf.lineString([[-24, 63], [-23, 60], [-25, 65], [-20, 69]], {name: 'line 1'});\n * var linestring2 = turf.lineString([[-14, 43], [-13, 40], [-15, 45], [-10, 49]], {name: 'line 2'});\n *\n * //=linestring1\n * //=linestring2\n */\nfunction lineString(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    if (coordinates.length < 2) {\n        throw new Error(\"coordinates must be an array of two or more positions\");\n    }\n    var geom = {\n        type: \"LineString\",\n        coordinates: coordinates,\n    };\n    return feature(geom, properties, options);\n}\nexports.lineString = lineString;\n/**\n * Creates a {@link LineString} {@link FeatureCollection} from an Array of LineString coordinates.\n *\n * @name lineStrings\n * @param {Array<Array<Array<number>>>} coordinates an array of LinearRings\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north]\n * associated with the FeatureCollection\n * @param {string|number} [options.id] Identifier associated with the FeatureCollection\n * @returns {FeatureCollection<LineString>} LineString FeatureCollection\n * @example\n * var linestrings = turf.lineStrings([\n *   [[-24, 63], [-23, 60], [-25, 65], [-20, 69]],\n *   [[-14, 43], [-13, 40], [-15, 45], [-10, 49]]\n * ]);\n *\n * //=linestrings\n */\nfunction lineStrings(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    return featureCollection(coordinates.map(function (coords) {\n        return lineString(coords, properties);\n    }), options);\n}\nexports.lineStrings = lineStrings;\n/**\n * Takes one or more {@link Feature|Features} and creates a {@link FeatureCollection}.\n *\n * @name featureCollection\n * @param {Feature[]} features input features\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {FeatureCollection} FeatureCollection of Features\n * @example\n * var locationA = turf.point([-75.343, 39.984], {name: 'Location A'});\n * var locationB = turf.point([-75.833, 39.284], {name: 'Location B'});\n * var locationC = turf.point([-75.534, 39.123], {name: 'Location C'});\n *\n * var collection = turf.featureCollection([\n *   locationA,\n *   locationB,\n *   locationC\n * ]);\n *\n * //=collection\n */\nfunction featureCollection(features, options) {\n    if (options === void 0) { options = {}; }\n    var fc = { type: \"FeatureCollection\" };\n    if (options.id) {\n        fc.id = options.id;\n    }\n    if (options.bbox) {\n        fc.bbox = options.bbox;\n    }\n    fc.features = features;\n    return fc;\n}\nexports.featureCollection = featureCollection;\n/**\n * Creates a {@link Feature<MultiLineString>} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name multiLineString\n * @param {Array<Array<Array<number>>>} coordinates an array of LineStrings\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<MultiLineString>} a MultiLineString feature\n * @throws {Error} if no coordinates are passed\n * @example\n * var multiLine = turf.multiLineString([[[0,0],[10,10]]]);\n *\n * //=multiLine\n */\nfunction multiLineString(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    var geom = {\n        type: \"MultiLineString\",\n        coordinates: coordinates,\n    };\n    return feature(geom, properties, options);\n}\nexports.multiLineString = multiLineString;\n/**\n * Creates a {@link Feature<MultiPoint>} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name multiPoint\n * @param {Array<Array<number>>} coordinates an array of Positions\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<MultiPoint>} a MultiPoint feature\n * @throws {Error} if no coordinates are passed\n * @example\n * var multiPt = turf.multiPoint([[0,0],[10,10]]);\n *\n * //=multiPt\n */\nfunction multiPoint(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    var geom = {\n        type: \"MultiPoint\",\n        coordinates: coordinates,\n    };\n    return feature(geom, properties, options);\n}\nexports.multiPoint = multiPoint;\n/**\n * Creates a {@link Feature<MultiPolygon>} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name multiPolygon\n * @param {Array<Array<Array<Array<number>>>>} coordinates an array of Polygons\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<MultiPolygon>} a multipolygon feature\n * @throws {Error} if no coordinates are passed\n * @example\n * var multiPoly = turf.multiPolygon([[[[0,0],[0,10],[10,10],[10,0],[0,0]]]]);\n *\n * //=multiPoly\n *\n */\nfunction multiPolygon(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    var geom = {\n        type: \"MultiPolygon\",\n        coordinates: coordinates,\n    };\n    return feature(geom, properties, options);\n}\nexports.multiPolygon = multiPolygon;\n/**\n * Creates a {@link Feature<GeometryCollection>} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name geometryCollection\n * @param {Array<Geometry>} geometries an array of GeoJSON Geometries\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<GeometryCollection>} a GeoJSON GeometryCollection Feature\n * @example\n * var pt = turf.geometry(\"Point\", [100, 0]);\n * var line = turf.geometry(\"LineString\", [[101, 0], [102, 1]]);\n * var collection = turf.geometryCollection([pt, line]);\n *\n * // => collection\n */\nfunction geometryCollection(geometries, properties, options) {\n    if (options === void 0) { options = {}; }\n    var geom = {\n        type: \"GeometryCollection\",\n        geometries: geometries,\n    };\n    return feature(geom, properties, options);\n}\nexports.geometryCollection = geometryCollection;\n/**\n * Round number to precision\n *\n * @param {number} num Number\n * @param {number} [precision=0] Precision\n * @returns {number} rounded number\n * @example\n * turf.round(120.4321)\n * //=120\n *\n * turf.round(120.4321, 2)\n * //=120.43\n */\nfunction round(num, precision) {\n    if (precision === void 0) { precision = 0; }\n    if (precision && !(precision >= 0)) {\n        throw new Error(\"precision must be a positive number\");\n    }\n    var multiplier = Math.pow(10, precision || 0);\n    return Math.round(num * multiplier) / multiplier;\n}\nexports.round = round;\n/**\n * Convert a distance measurement (assuming a spherical Earth) from radians to a more friendly unit.\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet\n *\n * @name radiansToLength\n * @param {number} radians in radians across the sphere\n * @param {string} [units=\"kilometers\"] can be degrees, radians, miles, inches, yards, metres,\n * meters, kilometres, kilometers.\n * @returns {number} distance\n */\nfunction radiansToLength(radians, units) {\n    if (units === void 0) { units = \"kilometers\"; }\n    var factor = exports.factors[units];\n    if (!factor) {\n        throw new Error(units + \" units is invalid\");\n    }\n    return radians * factor;\n}\nexports.radiansToLength = radiansToLength;\n/**\n * Convert a distance measurement (assuming a spherical Earth) from a real-world unit into radians\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet\n *\n * @name lengthToRadians\n * @param {number} distance in real units\n * @param {string} [units=\"kilometers\"] can be degrees, radians, miles, inches, yards, metres,\n * meters, kilometres, kilometers.\n * @returns {number} radians\n */\nfunction lengthToRadians(distance, units) {\n    if (units === void 0) { units = \"kilometers\"; }\n    var factor = exports.factors[units];\n    if (!factor) {\n        throw new Error(units + \" units is invalid\");\n    }\n    return distance / factor;\n}\nexports.lengthToRadians = lengthToRadians;\n/**\n * Convert a distance measurement (assuming a spherical Earth) from a real-world unit into degrees\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, centimeters, kilometres, feet\n *\n * @name lengthToDegrees\n * @param {number} distance in real units\n * @param {string} [units=\"kilometers\"] can be degrees, radians, miles, inches, yards, metres,\n * meters, kilometres, kilometers.\n * @returns {number} degrees\n */\nfunction lengthToDegrees(distance, units) {\n    return radiansToDegrees(lengthToRadians(distance, units));\n}\nexports.lengthToDegrees = lengthToDegrees;\n/**\n * Converts any bearing angle from the north line direction (positive clockwise)\n * and returns an angle between 0-360 degrees (positive clockwise), 0 being the north line\n *\n * @name bearingToAzimuth\n * @param {number} bearing angle, between -180 and +180 degrees\n * @returns {number} angle between 0 and 360 degrees\n */\nfunction bearingToAzimuth(bearing) {\n    var angle = bearing % 360;\n    if (angle < 0) {\n        angle += 360;\n    }\n    return angle;\n}\nexports.bearingToAzimuth = bearingToAzimuth;\n/**\n * Converts an angle in radians to degrees\n *\n * @name radiansToDegrees\n * @param {number} radians angle in radians\n * @returns {number} degrees between 0 and 360 degrees\n */\nfunction radiansToDegrees(radians) {\n    var degrees = radians % (2 * Math.PI);\n    return (degrees * 180) / Math.PI;\n}\nexports.radiansToDegrees = radiansToDegrees;\n/**\n * Converts an angle in degrees to radians\n *\n * @name degreesToRadians\n * @param {number} degrees angle between 0 and 360 degrees\n * @returns {number} angle in radians\n */\nfunction degreesToRadians(degrees) {\n    var radians = degrees % 360;\n    return (radians * Math.PI) / 180;\n}\nexports.degreesToRadians = degreesToRadians;\n/**\n * Converts a length to the requested unit.\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet\n *\n * @param {number} length to be converted\n * @param {Units} [originalUnit=\"kilometers\"] of the length\n * @param {Units} [finalUnit=\"kilometers\"] returned unit\n * @returns {number} the converted length\n */\nfunction convertLength(length, originalUnit, finalUnit) {\n    if (originalUnit === void 0) { originalUnit = \"kilometers\"; }\n    if (finalUnit === void 0) { finalUnit = \"kilometers\"; }\n    if (!(length >= 0)) {\n        throw new Error(\"length must be a positive number\");\n    }\n    return radiansToLength(lengthToRadians(length, originalUnit), finalUnit);\n}\nexports.convertLength = convertLength;\n/**\n * Converts a area to the requested unit.\n * Valid units: kilometers, kilometres, meters, metres, centimetres, millimeters, acres, miles, yards, feet, inches, hectares\n * @param {number} area to be converted\n * @param {Units} [originalUnit=\"meters\"] of the distance\n * @param {Units} [finalUnit=\"kilometers\"] returned unit\n * @returns {number} the converted area\n */\nfunction convertArea(area, originalUnit, finalUnit) {\n    if (originalUnit === void 0) { originalUnit = \"meters\"; }\n    if (finalUnit === void 0) { finalUnit = \"kilometers\"; }\n    if (!(area >= 0)) {\n        throw new Error(\"area must be a positive number\");\n    }\n    var startFactor = exports.areaFactors[originalUnit];\n    if (!startFactor) {\n        throw new Error(\"invalid original units\");\n    }\n    var finalFactor = exports.areaFactors[finalUnit];\n    if (!finalFactor) {\n        throw new Error(\"invalid final units\");\n    }\n    return (area / startFactor) * finalFactor;\n}\nexports.convertArea = convertArea;\n/**\n * isNumber\n *\n * @param {*} num Number to validate\n * @returns {boolean} true/false\n * @example\n * turf.isNumber(123)\n * //=true\n * turf.isNumber('foo')\n * //=false\n */\nfunction isNumber(num) {\n    return !isNaN(num) && num !== null && !Array.isArray(num);\n}\nexports.isNumber = isNumber;\n/**\n * isObject\n *\n * @param {*} input variable to validate\n * @returns {boolean} true/false\n * @example\n * turf.isObject({elevation: 10})\n * //=true\n * turf.isObject('foo')\n * //=false\n */\nfunction isObject(input) {\n    return !!input && input.constructor === Object;\n}\nexports.isObject = isObject;\n/**\n * Validate BBox\n *\n * @private\n * @param {Array<number>} bbox BBox to validate\n * @returns {void}\n * @throws Error if BBox is not valid\n * @example\n * validateBBox([-180, -40, 110, 50])\n * //=OK\n * validateBBox([-180, -40])\n * //=Error\n * validateBBox('Foo')\n * //=Error\n * validateBBox(5)\n * //=Error\n * validateBBox(null)\n * //=Error\n * validateBBox(undefined)\n * //=Error\n */\nfunction validateBBox(bbox) {\n    if (!bbox) {\n        throw new Error(\"bbox is required\");\n    }\n    if (!Array.isArray(bbox)) {\n        throw new Error(\"bbox must be an Array\");\n    }\n    if (bbox.length !== 4 && bbox.length !== 6) {\n        throw new Error(\"bbox must be an Array of 4 or 6 numbers\");\n    }\n    bbox.forEach(function (num) {\n        if (!isNumber(num)) {\n            throw new Error(\"bbox must only contain numbers\");\n        }\n    });\n}\nexports.validateBBox = validateBBox;\n/**\n * Validate Id\n *\n * @private\n * @param {string|number} id Id to validate\n * @returns {void}\n * @throws Error if Id is not valid\n * @example\n * validateId([-180, -40, 110, 50])\n * //=Error\n * validateId([-180, -40])\n * //=Error\n * validateId('Foo')\n * //=OK\n * validateId(5)\n * //=OK\n * validateId(null)\n * //=Error\n * validateId(undefined)\n * //=Error\n */\nfunction validateId(id) {\n    if (!id) {\n        throw new Error(\"id is required\");\n    }\n    if ([\"string\", \"number\"].indexOf(typeof id) === -1) {\n        throw new Error(\"id must be a number or a string\");\n    }\n}\nexports.validateId = validateId;\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nvar helpers = require('@turf/helpers');\n\n/**\n * Callback for coordEach\n *\n * @callback coordEachCallback\n * @param {Array<number>} currentCoord The current coordinate being processed.\n * @param {number} coordIndex The current index of the coordinate being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n * @param {number} geometryIndex The current index of the Geometry being processed.\n */\n\n/**\n * Iterate over coordinates in any GeoJSON object, similar to Array.forEach()\n *\n * @name coordEach\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (currentCoord, coordIndex, featureIndex, multiFeatureIndex)\n * @param {boolean} [excludeWrapCoord=false] whether or not to include the final coordinate of LinearRings that wraps the ring in its iteration.\n * @returns {void}\n * @example\n * var features = turf.featureCollection([\n *   turf.point([26, 37], {\"foo\": \"bar\"}),\n *   turf.point([36, 53], {\"hello\": \"world\"})\n * ]);\n *\n * turf.coordEach(features, function (currentCoord, coordIndex, featureIndex, multiFeatureIndex, geometryIndex) {\n *   //=currentCoord\n *   //=coordIndex\n *   //=featureIndex\n *   //=multiFeatureIndex\n *   //=geometryIndex\n * });\n */\nfunction coordEach(geojson, callback, excludeWrapCoord) {\n  // Handles null Geometry -- Skips this GeoJSON\n  if (geojson === null) return;\n  var j,\n    k,\n    l,\n    geometry,\n    stopG,\n    coords,\n    geometryMaybeCollection,\n    wrapShrink = 0,\n    coordIndex = 0,\n    isGeometryCollection,\n    type = geojson.type,\n    isFeatureCollection = type === \"FeatureCollection\",\n    isFeature = type === \"Feature\",\n    stop = isFeatureCollection ? geojson.features.length : 1;\n\n  // This logic may look a little weird. The reason why it is that way\n  // is because it's trying to be fast. GeoJSON supports multiple kinds\n  // of objects at its root: FeatureCollection, Features, Geometries.\n  // This function has the responsibility of handling all of them, and that\n  // means that some of the `for` loops you see below actually just don't apply\n  // to certain inputs. For instance, if you give this just a\n  // Point geometry, then both loops are short-circuited and all we do\n  // is gradually rename the input until it's called 'geometry'.\n  //\n  // This also aims to allocate as few resources as possible: just a\n  // few numbers and booleans, rather than any temporary arrays as would\n  // be required with the normalization approach.\n  for (var featureIndex = 0; featureIndex < stop; featureIndex++) {\n    geometryMaybeCollection = isFeatureCollection\n      ? geojson.features[featureIndex].geometry\n      : isFeature\n      ? geojson.geometry\n      : geojson;\n    isGeometryCollection = geometryMaybeCollection\n      ? geometryMaybeCollection.type === \"GeometryCollection\"\n      : false;\n    stopG = isGeometryCollection\n      ? geometryMaybeCollection.geometries.length\n      : 1;\n\n    for (var geomIndex = 0; geomIndex < stopG; geomIndex++) {\n      var multiFeatureIndex = 0;\n      var geometryIndex = 0;\n      geometry = isGeometryCollection\n        ? geometryMaybeCollection.geometries[geomIndex]\n        : geometryMaybeCollection;\n\n      // Handles null Geometry -- Skips this geometry\n      if (geometry === null) continue;\n      coords = geometry.coordinates;\n      var geomType = geometry.type;\n\n      wrapShrink =\n        excludeWrapCoord &&\n        (geomType === \"Polygon\" || geomType === \"MultiPolygon\")\n          ? 1\n          : 0;\n\n      switch (geomType) {\n        case null:\n          break;\n        case \"Point\":\n          if (\n            callback(\n              coords,\n              coordIndex,\n              featureIndex,\n              multiFeatureIndex,\n              geometryIndex\n            ) === false\n          )\n            return false;\n          coordIndex++;\n          multiFeatureIndex++;\n          break;\n        case \"LineString\":\n        case \"MultiPoint\":\n          for (j = 0; j < coords.length; j++) {\n            if (\n              callback(\n                coords[j],\n                coordIndex,\n                featureIndex,\n                multiFeatureIndex,\n                geometryIndex\n              ) === false\n            )\n              return false;\n            coordIndex++;\n            if (geomType === \"MultiPoint\") multiFeatureIndex++;\n          }\n          if (geomType === \"LineString\") multiFeatureIndex++;\n          break;\n        case \"Polygon\":\n        case \"MultiLineString\":\n          for (j = 0; j < coords.length; j++) {\n            for (k = 0; k < coords[j].length - wrapShrink; k++) {\n              if (\n                callback(\n                  coords[j][k],\n                  coordIndex,\n                  featureIndex,\n                  multiFeatureIndex,\n                  geometryIndex\n                ) === false\n              )\n                return false;\n              coordIndex++;\n            }\n            if (geomType === \"MultiLineString\") multiFeatureIndex++;\n            if (geomType === \"Polygon\") geometryIndex++;\n          }\n          if (geomType === \"Polygon\") multiFeatureIndex++;\n          break;\n        case \"MultiPolygon\":\n          for (j = 0; j < coords.length; j++) {\n            geometryIndex = 0;\n            for (k = 0; k < coords[j].length; k++) {\n              for (l = 0; l < coords[j][k].length - wrapShrink; l++) {\n                if (\n                  callback(\n                    coords[j][k][l],\n                    coordIndex,\n                    featureIndex,\n                    multiFeatureIndex,\n                    geometryIndex\n                  ) === false\n                )\n                  return false;\n                coordIndex++;\n              }\n              geometryIndex++;\n            }\n            multiFeatureIndex++;\n          }\n          break;\n        case \"GeometryCollection\":\n          for (j = 0; j < geometry.geometries.length; j++)\n            if (\n              coordEach(geometry.geometries[j], callback, excludeWrapCoord) ===\n              false\n            )\n              return false;\n          break;\n        default:\n          throw new Error(\"Unknown Geometry Type\");\n      }\n    }\n  }\n}\n\n/**\n * Callback for coordReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n *  - The previousValue argument is initialValue.\n *  - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n *  - The previousValue argument is the value of the first element present in the array.\n *  - The currentValue argument is the value of the second element present in the array.\n *\n * @callback coordReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Array<number>} currentCoord The current coordinate being processed.\n * @param {number} coordIndex The current index of the coordinate being processed.\n * Starts at index 0, if an initialValue is provided, and at index 1 otherwise.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n * @param {number} geometryIndex The current index of the Geometry being processed.\n */\n\n/**\n * Reduce coordinates in any GeoJSON object, similar to Array.reduce()\n *\n * @name coordReduce\n * @param {FeatureCollection|Geometry|Feature} geojson any GeoJSON object\n * @param {Function} callback a method that takes (previousValue, currentCoord, coordIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @param {boolean} [excludeWrapCoord=false] whether or not to include the final coordinate of LinearRings that wraps the ring in its iteration.\n * @returns {*} The value that results from the reduction.\n * @example\n * var features = turf.featureCollection([\n *   turf.point([26, 37], {\"foo\": \"bar\"}),\n *   turf.point([36, 53], {\"hello\": \"world\"})\n * ]);\n *\n * turf.coordReduce(features, function (previousValue, currentCoord, coordIndex, featureIndex, multiFeatureIndex, geometryIndex) {\n *   //=previousValue\n *   //=currentCoord\n *   //=coordIndex\n *   //=featureIndex\n *   //=multiFeatureIndex\n *   //=geometryIndex\n *   return currentCoord;\n * });\n */\nfunction coordReduce(geojson, callback, initialValue, excludeWrapCoord) {\n  var previousValue = initialValue;\n  coordEach(\n    geojson,\n    function (\n      currentCoord,\n      coordIndex,\n      featureIndex,\n      multiFeatureIndex,\n      geometryIndex\n    ) {\n      if (coordIndex === 0 && initialValue === undefined)\n        previousValue = currentCoord;\n      else\n        previousValue = callback(\n          previousValue,\n          currentCoord,\n          coordIndex,\n          featureIndex,\n          multiFeatureIndex,\n          geometryIndex\n        );\n    },\n    excludeWrapCoord\n  );\n  return previousValue;\n}\n\n/**\n * Callback for propEach\n *\n * @callback propEachCallback\n * @param {Object} currentProperties The current Properties being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n */\n\n/**\n * Iterate over properties in any GeoJSON object, similar to Array.forEach()\n *\n * @name propEach\n * @param {FeatureCollection|Feature} geojson any GeoJSON object\n * @param {Function} callback a method that takes (currentProperties, featureIndex)\n * @returns {void}\n * @example\n * var features = turf.featureCollection([\n *     turf.point([26, 37], {foo: 'bar'}),\n *     turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * turf.propEach(features, function (currentProperties, featureIndex) {\n *   //=currentProperties\n *   //=featureIndex\n * });\n */\nfunction propEach(geojson, callback) {\n  var i;\n  switch (geojson.type) {\n    case \"FeatureCollection\":\n      for (i = 0; i < geojson.features.length; i++) {\n        if (callback(geojson.features[i].properties, i) === false) break;\n      }\n      break;\n    case \"Feature\":\n      callback(geojson.properties, 0);\n      break;\n  }\n}\n\n/**\n * Callback for propReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n *  - The previousValue argument is initialValue.\n *  - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n *  - The previousValue argument is the value of the first element present in the array.\n *  - The currentValue argument is the value of the second element present in the array.\n *\n * @callback propReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {*} currentProperties The current Properties being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n */\n\n/**\n * Reduce properties in any GeoJSON object into a single value,\n * similar to how Array.reduce works. However, in this case we lazily run\n * the reduction, so an array of all properties is unnecessary.\n *\n * @name propReduce\n * @param {FeatureCollection|Feature} geojson any GeoJSON object\n * @param {Function} callback a method that takes (previousValue, currentProperties, featureIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {*} The value that results from the reduction.\n * @example\n * var features = turf.featureCollection([\n *     turf.point([26, 37], {foo: 'bar'}),\n *     turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * turf.propReduce(features, function (previousValue, currentProperties, featureIndex) {\n *   //=previousValue\n *   //=currentProperties\n *   //=featureIndex\n *   return currentProperties\n * });\n */\nfunction propReduce(geojson, callback, initialValue) {\n  var previousValue = initialValue;\n  propEach(geojson, function (currentProperties, featureIndex) {\n    if (featureIndex === 0 && initialValue === undefined)\n      previousValue = currentProperties;\n    else\n      previousValue = callback(previousValue, currentProperties, featureIndex);\n  });\n  return previousValue;\n}\n\n/**\n * Callback for featureEach\n *\n * @callback featureEachCallback\n * @param {Feature<any>} currentFeature The current Feature being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n */\n\n/**\n * Iterate over features in any GeoJSON object, similar to\n * Array.forEach.\n *\n * @name featureEach\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (currentFeature, featureIndex)\n * @returns {void}\n * @example\n * var features = turf.featureCollection([\n *   turf.point([26, 37], {foo: 'bar'}),\n *   turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * turf.featureEach(features, function (currentFeature, featureIndex) {\n *   //=currentFeature\n *   //=featureIndex\n * });\n */\nfunction featureEach(geojson, callback) {\n  if (geojson.type === \"Feature\") {\n    callback(geojson, 0);\n  } else if (geojson.type === \"FeatureCollection\") {\n    for (var i = 0; i < geojson.features.length; i++) {\n      if (callback(geojson.features[i], i) === false) break;\n    }\n  }\n}\n\n/**\n * Callback for featureReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n *  - The previousValue argument is initialValue.\n *  - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n *  - The previousValue argument is the value of the first element present in the array.\n *  - The currentValue argument is the value of the second element present in the array.\n *\n * @callback featureReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Feature} currentFeature The current Feature being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n */\n\n/**\n * Reduce features in any GeoJSON object, similar to Array.reduce().\n *\n * @name featureReduce\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (previousValue, currentFeature, featureIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {*} The value that results from the reduction.\n * @example\n * var features = turf.featureCollection([\n *   turf.point([26, 37], {\"foo\": \"bar\"}),\n *   turf.point([36, 53], {\"hello\": \"world\"})\n * ]);\n *\n * turf.featureReduce(features, function (previousValue, currentFeature, featureIndex) {\n *   //=previousValue\n *   //=currentFeature\n *   //=featureIndex\n *   return currentFeature\n * });\n */\nfunction featureReduce(geojson, callback, initialValue) {\n  var previousValue = initialValue;\n  featureEach(geojson, function (currentFeature, featureIndex) {\n    if (featureIndex === 0 && initialValue === undefined)\n      previousValue = currentFeature;\n    else previousValue = callback(previousValue, currentFeature, featureIndex);\n  });\n  return previousValue;\n}\n\n/**\n * Get all coordinates from any GeoJSON object.\n *\n * @name coordAll\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @returns {Array<Array<number>>} coordinate position array\n * @example\n * var features = turf.featureCollection([\n *   turf.point([26, 37], {foo: 'bar'}),\n *   turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * var coords = turf.coordAll(features);\n * //= [[26, 37], [36, 53]]\n */\nfunction coordAll(geojson) {\n  var coords = [];\n  coordEach(geojson, function (coord) {\n    coords.push(coord);\n  });\n  return coords;\n}\n\n/**\n * Callback for geomEach\n *\n * @callback geomEachCallback\n * @param {Geometry} currentGeometry The current Geometry being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {Object} featureProperties The current Feature Properties being processed.\n * @param {Array<number>} featureBBox The current Feature BBox being processed.\n * @param {number|string} featureId The current Feature Id being processed.\n */\n\n/**\n * Iterate over each geometry in any GeoJSON object, similar to Array.forEach()\n *\n * @name geomEach\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (currentGeometry, featureIndex, featureProperties, featureBBox, featureId)\n * @returns {void}\n * @example\n * var features = turf.featureCollection([\n *     turf.point([26, 37], {foo: 'bar'}),\n *     turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * turf.geomEach(features, function (currentGeometry, featureIndex, featureProperties, featureBBox, featureId) {\n *   //=currentGeometry\n *   //=featureIndex\n *   //=featureProperties\n *   //=featureBBox\n *   //=featureId\n * });\n */\nfunction geomEach(geojson, callback) {\n  var i,\n    j,\n    g,\n    geometry,\n    stopG,\n    geometryMaybeCollection,\n    isGeometryCollection,\n    featureProperties,\n    featureBBox,\n    featureId,\n    featureIndex = 0,\n    isFeatureCollection = geojson.type === \"FeatureCollection\",\n    isFeature = geojson.type === \"Feature\",\n    stop = isFeatureCollection ? geojson.features.length : 1;\n\n  // This logic may look a little weird. The reason why it is that way\n  // is because it's trying to be fast. GeoJSON supports multiple kinds\n  // of objects at its root: FeatureCollection, Features, Geometries.\n  // This function has the responsibility of handling all of them, and that\n  // means that some of the `for` loops you see below actually just don't apply\n  // to certain inputs. For instance, if you give this just a\n  // Point geometry, then both loops are short-circuited and all we do\n  // is gradually rename the input until it's called 'geometry'.\n  //\n  // This also aims to allocate as few resources as possible: just a\n  // few numbers and booleans, rather than any temporary arrays as would\n  // be required with the normalization approach.\n  for (i = 0; i < stop; i++) {\n    geometryMaybeCollection = isFeatureCollection\n      ? geojson.features[i].geometry\n      : isFeature\n      ? geojson.geometry\n      : geojson;\n    featureProperties = isFeatureCollection\n      ? geojson.features[i].properties\n      : isFeature\n      ? geojson.properties\n      : {};\n    featureBBox = isFeatureCollection\n      ? geojson.features[i].bbox\n      : isFeature\n      ? geojson.bbox\n      : undefined;\n    featureId = isFeatureCollection\n      ? geojson.features[i].id\n      : isFeature\n      ? geojson.id\n      : undefined;\n    isGeometryCollection = geometryMaybeCollection\n      ? geometryMaybeCollection.type === \"GeometryCollection\"\n      : false;\n    stopG = isGeometryCollection\n      ? geometryMaybeCollection.geometries.length\n      : 1;\n\n    for (g = 0; g < stopG; g++) {\n      geometry = isGeometryCollection\n        ? geometryMaybeCollection.geometries[g]\n        : geometryMaybeCollection;\n\n      // Handle null Geometry\n      if (geometry === null) {\n        if (\n          callback(\n            null,\n            featureIndex,\n            featureProperties,\n            featureBBox,\n            featureId\n          ) === false\n        )\n          return false;\n        continue;\n      }\n      switch (geometry.type) {\n        case \"Point\":\n        case \"LineString\":\n        case \"MultiPoint\":\n        case \"Polygon\":\n        case \"MultiLineString\":\n        case \"MultiPolygon\": {\n          if (\n            callback(\n              geometry,\n              featureIndex,\n              featureProperties,\n              featureBBox,\n              featureId\n            ) === false\n          )\n            return false;\n          break;\n        }\n        case \"GeometryCollection\": {\n          for (j = 0; j < geometry.geometries.length; j++) {\n            if (\n              callback(\n                geometry.geometries[j],\n                featureIndex,\n                featureProperties,\n                featureBBox,\n                featureId\n              ) === false\n            )\n              return false;\n          }\n          break;\n        }\n        default:\n          throw new Error(\"Unknown Geometry Type\");\n      }\n    }\n    // Only increase `featureIndex` per each feature\n    featureIndex++;\n  }\n}\n\n/**\n * Callback for geomReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n *  - The previousValue argument is initialValue.\n *  - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n *  - The previousValue argument is the value of the first element present in the array.\n *  - The currentValue argument is the value of the second element present in the array.\n *\n * @callback geomReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Geometry} currentGeometry The current Geometry being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {Object} featureProperties The current Feature Properties being processed.\n * @param {Array<number>} featureBBox The current Feature BBox being processed.\n * @param {number|string} featureId The current Feature Id being processed.\n */\n\n/**\n * Reduce geometry in any GeoJSON object, similar to Array.reduce().\n *\n * @name geomReduce\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (previousValue, currentGeometry, featureIndex, featureProperties, featureBBox, featureId)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {*} The value that results from the reduction.\n * @example\n * var features = turf.featureCollection([\n *     turf.point([26, 37], {foo: 'bar'}),\n *     turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * turf.geomReduce(features, function (previousValue, currentGeometry, featureIndex, featureProperties, featureBBox, featureId) {\n *   //=previousValue\n *   //=currentGeometry\n *   //=featureIndex\n *   //=featureProperties\n *   //=featureBBox\n *   //=featureId\n *   return currentGeometry\n * });\n */\nfunction geomReduce(geojson, callback, initialValue) {\n  var previousValue = initialValue;\n  geomEach(\n    geojson,\n    function (\n      currentGeometry,\n      featureIndex,\n      featureProperties,\n      featureBBox,\n      featureId\n    ) {\n      if (featureIndex === 0 && initialValue === undefined)\n        previousValue = currentGeometry;\n      else\n        previousValue = callback(\n          previousValue,\n          currentGeometry,\n          featureIndex,\n          featureProperties,\n          featureBBox,\n          featureId\n        );\n    }\n  );\n  return previousValue;\n}\n\n/**\n * Callback for flattenEach\n *\n * @callback flattenEachCallback\n * @param {Feature} currentFeature The current flattened feature being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n */\n\n/**\n * Iterate over flattened features in any GeoJSON object, similar to\n * Array.forEach.\n *\n * @name flattenEach\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (currentFeature, featureIndex, multiFeatureIndex)\n * @example\n * var features = turf.featureCollection([\n *     turf.point([26, 37], {foo: 'bar'}),\n *     turf.multiPoint([[40, 30], [36, 53]], {hello: 'world'})\n * ]);\n *\n * turf.flattenEach(features, function (currentFeature, featureIndex, multiFeatureIndex) {\n *   //=currentFeature\n *   //=featureIndex\n *   //=multiFeatureIndex\n * });\n */\nfunction flattenEach(geojson, callback) {\n  geomEach(geojson, function (geometry, featureIndex, properties, bbox, id) {\n    // Callback for single geometry\n    var type = geometry === null ? null : geometry.type;\n    switch (type) {\n      case null:\n      case \"Point\":\n      case \"LineString\":\n      case \"Polygon\":\n        if (\n          callback(\n            helpers.feature(geometry, properties, { bbox: bbox, id: id }),\n            featureIndex,\n            0\n          ) === false\n        )\n          return false;\n        return;\n    }\n\n    var geomType;\n\n    // Callback for multi-geometry\n    switch (type) {\n      case \"MultiPoint\":\n        geomType = \"Point\";\n        break;\n      case \"MultiLineString\":\n        geomType = \"LineString\";\n        break;\n      case \"MultiPolygon\":\n        geomType = \"Polygon\";\n        break;\n    }\n\n    for (\n      var multiFeatureIndex = 0;\n      multiFeatureIndex < geometry.coordinates.length;\n      multiFeatureIndex++\n    ) {\n      var coordinate = geometry.coordinates[multiFeatureIndex];\n      var geom = {\n        type: geomType,\n        coordinates: coordinate,\n      };\n      if (\n        callback(helpers.feature(geom, properties), featureIndex, multiFeatureIndex) ===\n        false\n      )\n        return false;\n    }\n  });\n}\n\n/**\n * Callback for flattenReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n *  - The previousValue argument is initialValue.\n *  - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n *  - The previousValue argument is the value of the first element present in the array.\n *  - The currentValue argument is the value of the second element present in the array.\n *\n * @callback flattenReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Feature} currentFeature The current Feature being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n */\n\n/**\n * Reduce flattened features in any GeoJSON object, similar to Array.reduce().\n *\n * @name flattenReduce\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (previousValue, currentFeature, featureIndex, multiFeatureIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {*} The value that results from the reduction.\n * @example\n * var features = turf.featureCollection([\n *     turf.point([26, 37], {foo: 'bar'}),\n *     turf.multiPoint([[40, 30], [36, 53]], {hello: 'world'})\n * ]);\n *\n * turf.flattenReduce(features, function (previousValue, currentFeature, featureIndex, multiFeatureIndex) {\n *   //=previousValue\n *   //=currentFeature\n *   //=featureIndex\n *   //=multiFeatureIndex\n *   return currentFeature\n * });\n */\nfunction flattenReduce(geojson, callback, initialValue) {\n  var previousValue = initialValue;\n  flattenEach(\n    geojson,\n    function (currentFeature, featureIndex, multiFeatureIndex) {\n      if (\n        featureIndex === 0 &&\n        multiFeatureIndex === 0 &&\n        initialValue === undefined\n      )\n        previousValue = currentFeature;\n      else\n        previousValue = callback(\n          previousValue,\n          currentFeature,\n          featureIndex,\n          multiFeatureIndex\n        );\n    }\n  );\n  return previousValue;\n}\n\n/**\n * Callback for segmentEach\n *\n * @callback segmentEachCallback\n * @param {Feature<LineString>} currentSegment The current Segment being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n * @param {number} geometryIndex The current index of the Geometry being processed.\n * @param {number} segmentIndex The current index of the Segment being processed.\n * @returns {void}\n */\n\n/**\n * Iterate over 2-vertex line segment in any GeoJSON object, similar to Array.forEach()\n * (Multi)Point geometries do not contain segments therefore they are ignored during this operation.\n *\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON\n * @param {Function} callback a method that takes (currentSegment, featureIndex, multiFeatureIndex, geometryIndex, segmentIndex)\n * @returns {void}\n * @example\n * var polygon = turf.polygon([[[-50, 5], [-40, -10], [-50, -10], [-40, 5], [-50, 5]]]);\n *\n * // Iterate over GeoJSON by 2-vertex segments\n * turf.segmentEach(polygon, function (currentSegment, featureIndex, multiFeatureIndex, geometryIndex, segmentIndex) {\n *   //=currentSegment\n *   //=featureIndex\n *   //=multiFeatureIndex\n *   //=geometryIndex\n *   //=segmentIndex\n * });\n *\n * // Calculate the total number of segments\n * var total = 0;\n * turf.segmentEach(polygon, function () {\n *     total++;\n * });\n */\nfunction segmentEach(geojson, callback) {\n  flattenEach(geojson, function (feature, featureIndex, multiFeatureIndex) {\n    var segmentIndex = 0;\n\n    // Exclude null Geometries\n    if (!feature.geometry) return;\n    // (Multi)Point geometries do not contain segments therefore they are ignored during this operation.\n    var type = feature.geometry.type;\n    if (type === \"Point\" || type === \"MultiPoint\") return;\n\n    // Generate 2-vertex line segments\n    var previousCoords;\n    var previousFeatureIndex = 0;\n    var previousMultiIndex = 0;\n    var prevGeomIndex = 0;\n    if (\n      coordEach(\n        feature,\n        function (\n          currentCoord,\n          coordIndex,\n          featureIndexCoord,\n          multiPartIndexCoord,\n          geometryIndex\n        ) {\n          // Simulating a meta.coordReduce() since `reduce` operations cannot be stopped by returning `false`\n          if (\n            previousCoords === undefined ||\n            featureIndex > previousFeatureIndex ||\n            multiPartIndexCoord > previousMultiIndex ||\n            geometryIndex > prevGeomIndex\n          ) {\n            previousCoords = currentCoord;\n            previousFeatureIndex = featureIndex;\n            previousMultiIndex = multiPartIndexCoord;\n            prevGeomIndex = geometryIndex;\n            segmentIndex = 0;\n            return;\n          }\n          var currentSegment = helpers.lineString(\n            [previousCoords, currentCoord],\n            feature.properties\n          );\n          if (\n            callback(\n              currentSegment,\n              featureIndex,\n              multiFeatureIndex,\n              geometryIndex,\n              segmentIndex\n            ) === false\n          )\n            return false;\n          segmentIndex++;\n          previousCoords = currentCoord;\n        }\n      ) === false\n    )\n      return false;\n  });\n}\n\n/**\n * Callback for segmentReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n *  - The previousValue argument is initialValue.\n *  - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n *  - The previousValue argument is the value of the first element present in the array.\n *  - The currentValue argument is the value of the second element present in the array.\n *\n * @callback segmentReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Feature<LineString>} currentSegment The current Segment being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n * @param {number} geometryIndex The current index of the Geometry being processed.\n * @param {number} segmentIndex The current index of the Segment being processed.\n */\n\n/**\n * Reduce 2-vertex line segment in any GeoJSON object, similar to Array.reduce()\n * (Multi)Point geometries do not contain segments therefore they are ignored during this operation.\n *\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON\n * @param {Function} callback a method that takes (previousValue, currentSegment, currentIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {void}\n * @example\n * var polygon = turf.polygon([[[-50, 5], [-40, -10], [-50, -10], [-40, 5], [-50, 5]]]);\n *\n * // Iterate over GeoJSON by 2-vertex segments\n * turf.segmentReduce(polygon, function (previousSegment, currentSegment, featureIndex, multiFeatureIndex, geometryIndex, segmentIndex) {\n *   //= previousSegment\n *   //= currentSegment\n *   //= featureIndex\n *   //= multiFeatureIndex\n *   //= geometryIndex\n *   //= segmentIndex\n *   return currentSegment\n * });\n *\n * // Calculate the total number of segments\n * var initialValue = 0\n * var total = turf.segmentReduce(polygon, function (previousValue) {\n *     previousValue++;\n *     return previousValue;\n * }, initialValue);\n */\nfunction segmentReduce(geojson, callback, initialValue) {\n  var previousValue = initialValue;\n  var started = false;\n  segmentEach(\n    geojson,\n    function (\n      currentSegment,\n      featureIndex,\n      multiFeatureIndex,\n      geometryIndex,\n      segmentIndex\n    ) {\n      if (started === false && initialValue === undefined)\n        previousValue = currentSegment;\n      else\n        previousValue = callback(\n          previousValue,\n          currentSegment,\n          featureIndex,\n          multiFeatureIndex,\n          geometryIndex,\n          segmentIndex\n        );\n      started = true;\n    }\n  );\n  return previousValue;\n}\n\n/**\n * Callback for lineEach\n *\n * @callback lineEachCallback\n * @param {Feature<LineString>} currentLine The current LineString|LinearRing being processed\n * @param {number} featureIndex The current index of the Feature being processed\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed\n * @param {number} geometryIndex The current index of the Geometry being processed\n */\n\n/**\n * Iterate over line or ring coordinates in LineString, Polygon, MultiLineString, MultiPolygon Features or Geometries,\n * similar to Array.forEach.\n *\n * @name lineEach\n * @param {Geometry|Feature<LineString|Polygon|MultiLineString|MultiPolygon>} geojson object\n * @param {Function} callback a method that takes (currentLine, featureIndex, multiFeatureIndex, geometryIndex)\n * @example\n * var multiLine = turf.multiLineString([\n *   [[26, 37], [35, 45]],\n *   [[36, 53], [38, 50], [41, 55]]\n * ]);\n *\n * turf.lineEach(multiLine, function (currentLine, featureIndex, multiFeatureIndex, geometryIndex) {\n *   //=currentLine\n *   //=featureIndex\n *   //=multiFeatureIndex\n *   //=geometryIndex\n * });\n */\nfunction lineEach(geojson, callback) {\n  // validation\n  if (!geojson) throw new Error(\"geojson is required\");\n\n  flattenEach(geojson, function (feature, featureIndex, multiFeatureIndex) {\n    if (feature.geometry === null) return;\n    var type = feature.geometry.type;\n    var coords = feature.geometry.coordinates;\n    switch (type) {\n      case \"LineString\":\n        if (callback(feature, featureIndex, multiFeatureIndex, 0, 0) === false)\n          return false;\n        break;\n      case \"Polygon\":\n        for (\n          var geometryIndex = 0;\n          geometryIndex < coords.length;\n          geometryIndex++\n        ) {\n          if (\n            callback(\n              helpers.lineString(coords[geometryIndex], feature.properties),\n              featureIndex,\n              multiFeatureIndex,\n              geometryIndex\n            ) === false\n          )\n            return false;\n        }\n        break;\n    }\n  });\n}\n\n/**\n * Callback for lineReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n *  - The previousValue argument is initialValue.\n *  - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n *  - The previousValue argument is the value of the first element present in the array.\n *  - The currentValue argument is the value of the second element present in the array.\n *\n * @callback lineReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Feature<LineString>} currentLine The current LineString|LinearRing being processed.\n * @param {number} featureIndex The current index of the Feature being processed\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed\n * @param {number} geometryIndex The current index of the Geometry being processed\n */\n\n/**\n * Reduce features in any GeoJSON object, similar to Array.reduce().\n *\n * @name lineReduce\n * @param {Geometry|Feature<LineString|Polygon|MultiLineString|MultiPolygon>} geojson object\n * @param {Function} callback a method that takes (previousValue, currentLine, featureIndex, multiFeatureIndex, geometryIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {*} The value that results from the reduction.\n * @example\n * var multiPoly = turf.multiPolygon([\n *   turf.polygon([[[12,48],[2,41],[24,38],[12,48]], [[9,44],[13,41],[13,45],[9,44]]]),\n *   turf.polygon([[[5, 5], [0, 0], [2, 2], [4, 4], [5, 5]]])\n * ]);\n *\n * turf.lineReduce(multiPoly, function (previousValue, currentLine, featureIndex, multiFeatureIndex, geometryIndex) {\n *   //=previousValue\n *   //=currentLine\n *   //=featureIndex\n *   //=multiFeatureIndex\n *   //=geometryIndex\n *   return currentLine\n * });\n */\nfunction lineReduce(geojson, callback, initialValue) {\n  var previousValue = initialValue;\n  lineEach(\n    geojson,\n    function (currentLine, featureIndex, multiFeatureIndex, geometryIndex) {\n      if (featureIndex === 0 && initialValue === undefined)\n        previousValue = currentLine;\n      else\n        previousValue = callback(\n          previousValue,\n          currentLine,\n          featureIndex,\n          multiFeatureIndex,\n          geometryIndex\n        );\n    }\n  );\n  return previousValue;\n}\n\n/**\n * Finds a particular 2-vertex LineString Segment from a GeoJSON using `@turf/meta` indexes.\n *\n * Negative indexes are permitted.\n * Point & MultiPoint will always return null.\n *\n * @param {FeatureCollection|Feature|Geometry} geojson Any GeoJSON Feature or Geometry\n * @param {Object} [options={}] Optional parameters\n * @param {number} [options.featureIndex=0] Feature Index\n * @param {number} [options.multiFeatureIndex=0] Multi-Feature Index\n * @param {number} [options.geometryIndex=0] Geometry Index\n * @param {number} [options.segmentIndex=0] Segment Index\n * @param {Object} [options.properties={}] Translate Properties to output LineString\n * @param {BBox} [options.bbox={}] Translate BBox to output LineString\n * @param {number|string} [options.id={}] Translate Id to output LineString\n * @returns {Feature<LineString>} 2-vertex GeoJSON Feature LineString\n * @example\n * var multiLine = turf.multiLineString([\n *     [[10, 10], [50, 30], [30, 40]],\n *     [[-10, -10], [-50, -30], [-30, -40]]\n * ]);\n *\n * // First Segment (defaults are 0)\n * turf.findSegment(multiLine);\n * // => Feature<LineString<[[10, 10], [50, 30]]>>\n *\n * // First Segment of 2nd Multi Feature\n * turf.findSegment(multiLine, {multiFeatureIndex: 1});\n * // => Feature<LineString<[[-10, -10], [-50, -30]]>>\n *\n * // Last Segment of Last Multi Feature\n * turf.findSegment(multiLine, {multiFeatureIndex: -1, segmentIndex: -1});\n * // => Feature<LineString<[[-50, -30], [-30, -40]]>>\n */\nfunction findSegment(geojson, options) {\n  // Optional Parameters\n  options = options || {};\n  if (!helpers.isObject(options)) throw new Error(\"options is invalid\");\n  var featureIndex = options.featureIndex || 0;\n  var multiFeatureIndex = options.multiFeatureIndex || 0;\n  var geometryIndex = options.geometryIndex || 0;\n  var segmentIndex = options.segmentIndex || 0;\n\n  // Find FeatureIndex\n  var properties = options.properties;\n  var geometry;\n\n  switch (geojson.type) {\n    case \"FeatureCollection\":\n      if (featureIndex < 0)\n        featureIndex = geojson.features.length + featureIndex;\n      properties = properties || geojson.features[featureIndex].properties;\n      geometry = geojson.features[featureIndex].geometry;\n      break;\n    case \"Feature\":\n      properties = properties || geojson.properties;\n      geometry = geojson.geometry;\n      break;\n    case \"Point\":\n    case \"MultiPoint\":\n      return null;\n    case \"LineString\":\n    case \"Polygon\":\n    case \"MultiLineString\":\n    case \"MultiPolygon\":\n      geometry = geojson;\n      break;\n    default:\n      throw new Error(\"geojson is invalid\");\n  }\n\n  // Find SegmentIndex\n  if (geometry === null) return null;\n  var coords = geometry.coordinates;\n  switch (geometry.type) {\n    case \"Point\":\n    case \"MultiPoint\":\n      return null;\n    case \"LineString\":\n      if (segmentIndex < 0) segmentIndex = coords.length + segmentIndex - 1;\n      return helpers.lineString(\n        [coords[segmentIndex], coords[segmentIndex + 1]],\n        properties,\n        options\n      );\n    case \"Polygon\":\n      if (geometryIndex < 0) geometryIndex = coords.length + geometryIndex;\n      if (segmentIndex < 0)\n        segmentIndex = coords[geometryIndex].length + segmentIndex - 1;\n      return helpers.lineString(\n        [\n          coords[geometryIndex][segmentIndex],\n          coords[geometryIndex][segmentIndex + 1],\n        ],\n        properties,\n        options\n      );\n    case \"MultiLineString\":\n      if (multiFeatureIndex < 0)\n        multiFeatureIndex = coords.length + multiFeatureIndex;\n      if (segmentIndex < 0)\n        segmentIndex = coords[multiFeatureIndex].length + segmentIndex - 1;\n      return helpers.lineString(\n        [\n          coords[multiFeatureIndex][segmentIndex],\n          coords[multiFeatureIndex][segmentIndex + 1],\n        ],\n        properties,\n        options\n      );\n    case \"MultiPolygon\":\n      if (multiFeatureIndex < 0)\n        multiFeatureIndex = coords.length + multiFeatureIndex;\n      if (geometryIndex < 0)\n        geometryIndex = coords[multiFeatureIndex].length + geometryIndex;\n      if (segmentIndex < 0)\n        segmentIndex =\n          coords[multiFeatureIndex][geometryIndex].length - segmentIndex - 1;\n      return helpers.lineString(\n        [\n          coords[multiFeatureIndex][geometryIndex][segmentIndex],\n          coords[multiFeatureIndex][geometryIndex][segmentIndex + 1],\n        ],\n        properties,\n        options\n      );\n  }\n  throw new Error(\"geojson is invalid\");\n}\n\n/**\n * Finds a particular Point from a GeoJSON using `@turf/meta` indexes.\n *\n * Negative indexes are permitted.\n *\n * @param {FeatureCollection|Feature|Geometry} geojson Any GeoJSON Feature or Geometry\n * @param {Object} [options={}] Optional parameters\n * @param {number} [options.featureIndex=0] Feature Index\n * @param {number} [options.multiFeatureIndex=0] Multi-Feature Index\n * @param {number} [options.geometryIndex=0] Geometry Index\n * @param {number} [options.coordIndex=0] Coord Index\n * @param {Object} [options.properties={}] Translate Properties to output Point\n * @param {BBox} [options.bbox={}] Translate BBox to output Point\n * @param {number|string} [options.id={}] Translate Id to output Point\n * @returns {Feature<Point>} 2-vertex GeoJSON Feature Point\n * @example\n * var multiLine = turf.multiLineString([\n *     [[10, 10], [50, 30], [30, 40]],\n *     [[-10, -10], [-50, -30], [-30, -40]]\n * ]);\n *\n * // First Segment (defaults are 0)\n * turf.findPoint(multiLine);\n * // => Feature<Point<[10, 10]>>\n *\n * // First Segment of the 2nd Multi-Feature\n * turf.findPoint(multiLine, {multiFeatureIndex: 1});\n * // => Feature<Point<[-10, -10]>>\n *\n * // Last Segment of last Multi-Feature\n * turf.findPoint(multiLine, {multiFeatureIndex: -1, coordIndex: -1});\n * // => Feature<Point<[-30, -40]>>\n */\nfunction findPoint(geojson, options) {\n  // Optional Parameters\n  options = options || {};\n  if (!helpers.isObject(options)) throw new Error(\"options is invalid\");\n  var featureIndex = options.featureIndex || 0;\n  var multiFeatureIndex = options.multiFeatureIndex || 0;\n  var geometryIndex = options.geometryIndex || 0;\n  var coordIndex = options.coordIndex || 0;\n\n  // Find FeatureIndex\n  var properties = options.properties;\n  var geometry;\n\n  switch (geojson.type) {\n    case \"FeatureCollection\":\n      if (featureIndex < 0)\n        featureIndex = geojson.features.length + featureIndex;\n      properties = properties || geojson.features[featureIndex].properties;\n      geometry = geojson.features[featureIndex].geometry;\n      break;\n    case \"Feature\":\n      properties = properties || geojson.properties;\n      geometry = geojson.geometry;\n      break;\n    case \"Point\":\n    case \"MultiPoint\":\n      return null;\n    case \"LineString\":\n    case \"Polygon\":\n    case \"MultiLineString\":\n    case \"MultiPolygon\":\n      geometry = geojson;\n      break;\n    default:\n      throw new Error(\"geojson is invalid\");\n  }\n\n  // Find Coord Index\n  if (geometry === null) return null;\n  var coords = geometry.coordinates;\n  switch (geometry.type) {\n    case \"Point\":\n      return helpers.point(coords, properties, options);\n    case \"MultiPoint\":\n      if (multiFeatureIndex < 0)\n        multiFeatureIndex = coords.length + multiFeatureIndex;\n      return helpers.point(coords[multiFeatureIndex], properties, options);\n    case \"LineString\":\n      if (coordIndex < 0) coordIndex = coords.length + coordIndex;\n      return helpers.point(coords[coordIndex], properties, options);\n    case \"Polygon\":\n      if (geometryIndex < 0) geometryIndex = coords.length + geometryIndex;\n      if (coordIndex < 0)\n        coordIndex = coords[geometryIndex].length + coordIndex;\n      return helpers.point(coords[geometryIndex][coordIndex], properties, options);\n    case \"MultiLineString\":\n      if (multiFeatureIndex < 0)\n        multiFeatureIndex = coords.length + multiFeatureIndex;\n      if (coordIndex < 0)\n        coordIndex = coords[multiFeatureIndex].length + coordIndex;\n      return helpers.point(coords[multiFeatureIndex][coordIndex], properties, options);\n    case \"MultiPolygon\":\n      if (multiFeatureIndex < 0)\n        multiFeatureIndex = coords.length + multiFeatureIndex;\n      if (geometryIndex < 0)\n        geometryIndex = coords[multiFeatureIndex].length + geometryIndex;\n      if (coordIndex < 0)\n        coordIndex =\n          coords[multiFeatureIndex][geometryIndex].length - coordIndex;\n      return helpers.point(\n        coords[multiFeatureIndex][geometryIndex][coordIndex],\n        properties,\n        options\n      );\n  }\n  throw new Error(\"geojson is invalid\");\n}\n\nexports.coordAll = coordAll;\nexports.coordEach = coordEach;\nexports.coordReduce = coordReduce;\nexports.featureEach = featureEach;\nexports.featureReduce = featureReduce;\nexports.findPoint = findPoint;\nexports.findSegment = findSegment;\nexports.flattenEach = flattenEach;\nexports.flattenReduce = flattenReduce;\nexports.geomEach = geomEach;\nexports.geomReduce = geomReduce;\nexports.lineEach = lineEach;\nexports.lineReduce = lineReduce;\nexports.propEach = propEach;\nexports.propReduce = propReduce;\nexports.segmentEach = segmentEach;\nexports.segmentReduce = segmentReduce;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar invariant_1 = require(\"@turf/invariant\");\n// http://en.wikipedia.org/wiki/Even%E2%80%93odd_rule\n// modified from: https://github.com/substack/point-in-polygon/blob/master/index.js\n// which was modified from http://www.ecse.rpi.edu/Homepages/wrf/Research/Short_Notes/pnpoly.html\n/**\n * Takes a {@link Point} and a {@link Polygon} or {@link MultiPolygon} and determines if the point\n * resides inside the polygon. The polygon can be convex or concave. The function accounts for holes.\n *\n * @name booleanPointInPolygon\n * @param {Coord} point input point\n * @param {Feature<Polygon|MultiPolygon>} polygon input polygon or multipolygon\n * @param {Object} [options={}] Optional parameters\n * @param {boolean} [options.ignoreBoundary=false] True if polygon boundary should be ignored when determining if\n * the point is inside the polygon otherwise false.\n * @returns {boolean} `true` if the Point is inside the Polygon; `false` if the Point is not inside the Polygon\n * @example\n * var pt = turf.point([-77, 44]);\n * var poly = turf.polygon([[\n *   [-81, 41],\n *   [-81, 47],\n *   [-72, 47],\n *   [-72, 41],\n *   [-81, 41]\n * ]]);\n *\n * turf.booleanPointInPolygon(pt, poly);\n * //= true\n */\nfunction booleanPointInPolygon(point, polygon, options) {\n    if (options === void 0) { options = {}; }\n    // validation\n    if (!point) {\n        throw new Error(\"point is required\");\n    }\n    if (!polygon) {\n        throw new Error(\"polygon is required\");\n    }\n    var pt = invariant_1.getCoord(point);\n    var geom = invariant_1.getGeom(polygon);\n    var type = geom.type;\n    var bbox = polygon.bbox;\n    var polys = geom.coordinates;\n    // Quick elimination if point is not inside bbox\n    if (bbox && inBBox(pt, bbox) === false) {\n        return false;\n    }\n    // normalize to multipolygon\n    if (type === \"Polygon\") {\n        polys = [polys];\n    }\n    var insidePoly = false;\n    for (var i = 0; i < polys.length && !insidePoly; i++) {\n        // check if it is in the outer ring first\n        if (inRing(pt, polys[i][0], options.ignoreBoundary)) {\n            var inHole = false;\n            var k = 1;\n            // check for the point in any of the holes\n            while (k < polys[i].length && !inHole) {\n                if (inRing(pt, polys[i][k], !options.ignoreBoundary)) {\n                    inHole = true;\n                }\n                k++;\n            }\n            if (!inHole) {\n                insidePoly = true;\n            }\n        }\n    }\n    return insidePoly;\n}\nexports.default = booleanPointInPolygon;\n/**\n * inRing\n *\n * @private\n * @param {Array<number>} pt [x,y]\n * @param {Array<Array<number>>} ring [[x,y], [x,y],..]\n * @param {boolean} ignoreBoundary ignoreBoundary\n * @returns {boolean} inRing\n */\nfunction inRing(pt, ring, ignoreBoundary) {\n    var isInside = false;\n    if (ring[0][0] === ring[ring.length - 1][0] &&\n        ring[0][1] === ring[ring.length - 1][1]) {\n        ring = ring.slice(0, ring.length - 1);\n    }\n    for (var i = 0, j = ring.length - 1; i < ring.length; j = i++) {\n        var xi = ring[i][0];\n        var yi = ring[i][1];\n        var xj = ring[j][0];\n        var yj = ring[j][1];\n        var onBoundary = pt[1] * (xi - xj) + yi * (xj - pt[0]) + yj * (pt[0] - xi) === 0 &&\n            (xi - pt[0]) * (xj - pt[0]) <= 0 &&\n            (yi - pt[1]) * (yj - pt[1]) <= 0;\n        if (onBoundary) {\n            return !ignoreBoundary;\n        }\n        var intersect = yi > pt[1] !== yj > pt[1] &&\n            pt[0] < ((xj - xi) * (pt[1] - yi)) / (yj - yi) + xi;\n        if (intersect) {\n            isInside = !isInside;\n        }\n    }\n    return isInside;\n}\n/**\n * inBBox\n *\n * @private\n * @param {Position} pt point [x,y]\n * @param {BBox} bbox BBox [west, south, east, north]\n * @returns {boolean} true/false if point is inside BBox\n */\nfunction inBBox(pt, bbox) {\n    return (bbox[0] <= pt[0] && bbox[1] <= pt[1] && bbox[2] >= pt[0] && bbox[3] >= pt[1]);\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * @module helpers\n */\n/**\n * Earth Radius used with the Harvesine formula and approximates using a spherical (non-ellipsoid) Earth.\n *\n * @memberof helpers\n * @type {number}\n */\nexports.earthRadius = 6371008.8;\n/**\n * Unit of measurement factors using a spherical (non-ellipsoid) earth radius.\n *\n * @memberof helpers\n * @type {Object}\n */\nexports.factors = {\n    centimeters: exports.earthRadius * 100,\n    centimetres: exports.earthRadius * 100,\n    degrees: exports.earthRadius / 111325,\n    feet: exports.earthRadius * 3.28084,\n    inches: exports.earthRadius * 39.37,\n    kilometers: exports.earthRadius / 1000,\n    kilometres: exports.earthRadius / 1000,\n    meters: exports.earthRadius,\n    metres: exports.earthRadius,\n    miles: exports.earthRadius / 1609.344,\n    millimeters: exports.earthRadius * 1000,\n    millimetres: exports.earthRadius * 1000,\n    nauticalmiles: exports.earthRadius / 1852,\n    radians: 1,\n    yards: exports.earthRadius * 1.0936,\n};\n/**\n * Units of measurement factors based on 1 meter.\n *\n * @memberof helpers\n * @type {Object}\n */\nexports.unitsFactors = {\n    centimeters: 100,\n    centimetres: 100,\n    degrees: 1 / 111325,\n    feet: 3.28084,\n    inches: 39.37,\n    kilometers: 1 / 1000,\n    kilometres: 1 / 1000,\n    meters: 1,\n    metres: 1,\n    miles: 1 / 1609.344,\n    millimeters: 1000,\n    millimetres: 1000,\n    nauticalmiles: 1 / 1852,\n    radians: 1 / exports.earthRadius,\n    yards: 1.0936133,\n};\n/**\n * Area of measurement factors based on 1 square meter.\n *\n * @memberof helpers\n * @type {Object}\n */\nexports.areaFactors = {\n    acres: 0.000247105,\n    centimeters: 10000,\n    centimetres: 10000,\n    feet: 10.763910417,\n    hectares: 0.0001,\n    inches: 1550.003100006,\n    kilometers: 0.000001,\n    kilometres: 0.000001,\n    meters: 1,\n    metres: 1,\n    miles: 3.86e-7,\n    millimeters: 1000000,\n    millimetres: 1000000,\n    yards: 1.195990046,\n};\n/**\n * Wraps a GeoJSON {@link Geometry} in a GeoJSON {@link Feature}.\n *\n * @name feature\n * @param {Geometry} geometry input geometry\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} a GeoJSON Feature\n * @example\n * var geometry = {\n *   \"type\": \"Point\",\n *   \"coordinates\": [110, 50]\n * };\n *\n * var feature = turf.feature(geometry);\n *\n * //=feature\n */\nfunction feature(geom, properties, options) {\n    if (options === void 0) { options = {}; }\n    var feat = { type: \"Feature\" };\n    if (options.id === 0 || options.id) {\n        feat.id = options.id;\n    }\n    if (options.bbox) {\n        feat.bbox = options.bbox;\n    }\n    feat.properties = properties || {};\n    feat.geometry = geom;\n    return feat;\n}\nexports.feature = feature;\n/**\n * Creates a GeoJSON {@link Geometry} from a Geometry string type & coordinates.\n * For GeometryCollection type use `helpers.geometryCollection`\n *\n * @name geometry\n * @param {string} type Geometry Type\n * @param {Array<any>} coordinates Coordinates\n * @param {Object} [options={}] Optional Parameters\n * @returns {Geometry} a GeoJSON Geometry\n * @example\n * var type = \"Point\";\n * var coordinates = [110, 50];\n * var geometry = turf.geometry(type, coordinates);\n * // => geometry\n */\nfunction geometry(type, coordinates, _options) {\n    if (_options === void 0) { _options = {}; }\n    switch (type) {\n        case \"Point\":\n            return point(coordinates).geometry;\n        case \"LineString\":\n            return lineString(coordinates).geometry;\n        case \"Polygon\":\n            return polygon(coordinates).geometry;\n        case \"MultiPoint\":\n            return multiPoint(coordinates).geometry;\n        case \"MultiLineString\":\n            return multiLineString(coordinates).geometry;\n        case \"MultiPolygon\":\n            return multiPolygon(coordinates).geometry;\n        default:\n            throw new Error(type + \" is invalid\");\n    }\n}\nexports.geometry = geometry;\n/**\n * Creates a {@link Point} {@link Feature} from a Position.\n *\n * @name point\n * @param {Array<number>} coordinates longitude, latitude position (each in decimal degrees)\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<Point>} a Point feature\n * @example\n * var point = turf.point([-75.343, 39.984]);\n *\n * //=point\n */\nfunction point(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    if (!coordinates) {\n        throw new Error(\"coordinates is required\");\n    }\n    if (!Array.isArray(coordinates)) {\n        throw new Error(\"coordinates must be an Array\");\n    }\n    if (coordinates.length < 2) {\n        throw new Error(\"coordinates must be at least 2 numbers long\");\n    }\n    if (!isNumber(coordinates[0]) || !isNumber(coordinates[1])) {\n        throw new Error(\"coordinates must contain numbers\");\n    }\n    var geom = {\n        type: \"Point\",\n        coordinates: coordinates,\n    };\n    return feature(geom, properties, options);\n}\nexports.point = point;\n/**\n * Creates a {@link Point} {@link FeatureCollection} from an Array of Point coordinates.\n *\n * @name points\n * @param {Array<Array<number>>} coordinates an array of Points\n * @param {Object} [properties={}] Translate these properties to each Feature\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north]\n * associated with the FeatureCollection\n * @param {string|number} [options.id] Identifier associated with the FeatureCollection\n * @returns {FeatureCollection<Point>} Point Feature\n * @example\n * var points = turf.points([\n *   [-75, 39],\n *   [-80, 45],\n *   [-78, 50]\n * ]);\n *\n * //=points\n */\nfunction points(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    return featureCollection(coordinates.map(function (coords) {\n        return point(coords, properties);\n    }), options);\n}\nexports.points = points;\n/**\n * Creates a {@link Polygon} {@link Feature} from an Array of LinearRings.\n *\n * @name polygon\n * @param {Array<Array<Array<number>>>} coordinates an array of LinearRings\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<Polygon>} Polygon Feature\n * @example\n * var polygon = turf.polygon([[[-5, 52], [-4, 56], [-2, 51], [-7, 54], [-5, 52]]], { name: 'poly1' });\n *\n * //=polygon\n */\nfunction polygon(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    for (var _i = 0, coordinates_1 = coordinates; _i < coordinates_1.length; _i++) {\n        var ring = coordinates_1[_i];\n        if (ring.length < 4) {\n            throw new Error(\"Each LinearRing of a Polygon must have 4 or more Positions.\");\n        }\n        for (var j = 0; j < ring[ring.length - 1].length; j++) {\n            // Check if first point of Polygon contains two numbers\n            if (ring[ring.length - 1][j] !== ring[0][j]) {\n                throw new Error(\"First and last Position are not equivalent.\");\n            }\n        }\n    }\n    var geom = {\n        type: \"Polygon\",\n        coordinates: coordinates,\n    };\n    return feature(geom, properties, options);\n}\nexports.polygon = polygon;\n/**\n * Creates a {@link Polygon} {@link FeatureCollection} from an Array of Polygon coordinates.\n *\n * @name polygons\n * @param {Array<Array<Array<Array<number>>>>} coordinates an array of Polygon coordinates\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the FeatureCollection\n * @returns {FeatureCollection<Polygon>} Polygon FeatureCollection\n * @example\n * var polygons = turf.polygons([\n *   [[[-5, 52], [-4, 56], [-2, 51], [-7, 54], [-5, 52]]],\n *   [[[-15, 42], [-14, 46], [-12, 41], [-17, 44], [-15, 42]]],\n * ]);\n *\n * //=polygons\n */\nfunction polygons(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    return featureCollection(coordinates.map(function (coords) {\n        return polygon(coords, properties);\n    }), options);\n}\nexports.polygons = polygons;\n/**\n * Creates a {@link LineString} {@link Feature} from an Array of Positions.\n *\n * @name lineString\n * @param {Array<Array<number>>} coordinates an array of Positions\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<LineString>} LineString Feature\n * @example\n * var linestring1 = turf.lineString([[-24, 63], [-23, 60], [-25, 65], [-20, 69]], {name: 'line 1'});\n * var linestring2 = turf.lineString([[-14, 43], [-13, 40], [-15, 45], [-10, 49]], {name: 'line 2'});\n *\n * //=linestring1\n * //=linestring2\n */\nfunction lineString(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    if (coordinates.length < 2) {\n        throw new Error(\"coordinates must be an array of two or more positions\");\n    }\n    var geom = {\n        type: \"LineString\",\n        coordinates: coordinates,\n    };\n    return feature(geom, properties, options);\n}\nexports.lineString = lineString;\n/**\n * Creates a {@link LineString} {@link FeatureCollection} from an Array of LineString coordinates.\n *\n * @name lineStrings\n * @param {Array<Array<Array<number>>>} coordinates an array of LinearRings\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north]\n * associated with the FeatureCollection\n * @param {string|number} [options.id] Identifier associated with the FeatureCollection\n * @returns {FeatureCollection<LineString>} LineString FeatureCollection\n * @example\n * var linestrings = turf.lineStrings([\n *   [[-24, 63], [-23, 60], [-25, 65], [-20, 69]],\n *   [[-14, 43], [-13, 40], [-15, 45], [-10, 49]]\n * ]);\n *\n * //=linestrings\n */\nfunction lineStrings(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    return featureCollection(coordinates.map(function (coords) {\n        return lineString(coords, properties);\n    }), options);\n}\nexports.lineStrings = lineStrings;\n/**\n * Takes one or more {@link Feature|Features} and creates a {@link FeatureCollection}.\n *\n * @name featureCollection\n * @param {Feature[]} features input features\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {FeatureCollection} FeatureCollection of Features\n * @example\n * var locationA = turf.point([-75.343, 39.984], {name: 'Location A'});\n * var locationB = turf.point([-75.833, 39.284], {name: 'Location B'});\n * var locationC = turf.point([-75.534, 39.123], {name: 'Location C'});\n *\n * var collection = turf.featureCollection([\n *   locationA,\n *   locationB,\n *   locationC\n * ]);\n *\n * //=collection\n */\nfunction featureCollection(features, options) {\n    if (options === void 0) { options = {}; }\n    var fc = { type: \"FeatureCollection\" };\n    if (options.id) {\n        fc.id = options.id;\n    }\n    if (options.bbox) {\n        fc.bbox = options.bbox;\n    }\n    fc.features = features;\n    return fc;\n}\nexports.featureCollection = featureCollection;\n/**\n * Creates a {@link Feature<MultiLineString>} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name multiLineString\n * @param {Array<Array<Array<number>>>} coordinates an array of LineStrings\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<MultiLineString>} a MultiLineString feature\n * @throws {Error} if no coordinates are passed\n * @example\n * var multiLine = turf.multiLineString([[[0,0],[10,10]]]);\n *\n * //=multiLine\n */\nfunction multiLineString(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    var geom = {\n        type: \"MultiLineString\",\n        coordinates: coordinates,\n    };\n    return feature(geom, properties, options);\n}\nexports.multiLineString = multiLineString;\n/**\n * Creates a {@link Feature<MultiPoint>} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name multiPoint\n * @param {Array<Array<number>>} coordinates an array of Positions\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<MultiPoint>} a MultiPoint feature\n * @throws {Error} if no coordinates are passed\n * @example\n * var multiPt = turf.multiPoint([[0,0],[10,10]]);\n *\n * //=multiPt\n */\nfunction multiPoint(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    var geom = {\n        type: \"MultiPoint\",\n        coordinates: coordinates,\n    };\n    return feature(geom, properties, options);\n}\nexports.multiPoint = multiPoint;\n/**\n * Creates a {@link Feature<MultiPolygon>} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name multiPolygon\n * @param {Array<Array<Array<Array<number>>>>} coordinates an array of Polygons\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<MultiPolygon>} a multipolygon feature\n * @throws {Error} if no coordinates are passed\n * @example\n * var multiPoly = turf.multiPolygon([[[[0,0],[0,10],[10,10],[10,0],[0,0]]]]);\n *\n * //=multiPoly\n *\n */\nfunction multiPolygon(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    var geom = {\n        type: \"MultiPolygon\",\n        coordinates: coordinates,\n    };\n    return feature(geom, properties, options);\n}\nexports.multiPolygon = multiPolygon;\n/**\n * Creates a {@link Feature<GeometryCollection>} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name geometryCollection\n * @param {Array<Geometry>} geometries an array of GeoJSON Geometries\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<GeometryCollection>} a GeoJSON GeometryCollection Feature\n * @example\n * var pt = turf.geometry(\"Point\", [100, 0]);\n * var line = turf.geometry(\"LineString\", [[101, 0], [102, 1]]);\n * var collection = turf.geometryCollection([pt, line]);\n *\n * // => collection\n */\nfunction geometryCollection(geometries, properties, options) {\n    if (options === void 0) { options = {}; }\n    var geom = {\n        type: \"GeometryCollection\",\n        geometries: geometries,\n    };\n    return feature(geom, properties, options);\n}\nexports.geometryCollection = geometryCollection;\n/**\n * Round number to precision\n *\n * @param {number} num Number\n * @param {number} [precision=0] Precision\n * @returns {number} rounded number\n * @example\n * turf.round(120.4321)\n * //=120\n *\n * turf.round(120.4321, 2)\n * //=120.43\n */\nfunction round(num, precision) {\n    if (precision === void 0) { precision = 0; }\n    if (precision && !(precision >= 0)) {\n        throw new Error(\"precision must be a positive number\");\n    }\n    var multiplier = Math.pow(10, precision || 0);\n    return Math.round(num * multiplier) / multiplier;\n}\nexports.round = round;\n/**\n * Convert a distance measurement (assuming a spherical Earth) from radians to a more friendly unit.\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet\n *\n * @name radiansToLength\n * @param {number} radians in radians across the sphere\n * @param {string} [units=\"kilometers\"] can be degrees, radians, miles, inches, yards, metres,\n * meters, kilometres, kilometers.\n * @returns {number} distance\n */\nfunction radiansToLength(radians, units) {\n    if (units === void 0) { units = \"kilometers\"; }\n    var factor = exports.factors[units];\n    if (!factor) {\n        throw new Error(units + \" units is invalid\");\n    }\n    return radians * factor;\n}\nexports.radiansToLength = radiansToLength;\n/**\n * Convert a distance measurement (assuming a spherical Earth) from a real-world unit into radians\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet\n *\n * @name lengthToRadians\n * @param {number} distance in real units\n * @param {string} [units=\"kilometers\"] can be degrees, radians, miles, inches, yards, metres,\n * meters, kilometres, kilometers.\n * @returns {number} radians\n */\nfunction lengthToRadians(distance, units) {\n    if (units === void 0) { units = \"kilometers\"; }\n    var factor = exports.factors[units];\n    if (!factor) {\n        throw new Error(units + \" units is invalid\");\n    }\n    return distance / factor;\n}\nexports.lengthToRadians = lengthToRadians;\n/**\n * Convert a distance measurement (assuming a spherical Earth) from a real-world unit into degrees\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, centimeters, kilometres, feet\n *\n * @name lengthToDegrees\n * @param {number} distance in real units\n * @param {string} [units=\"kilometers\"] can be degrees, radians, miles, inches, yards, metres,\n * meters, kilometres, kilometers.\n * @returns {number} degrees\n */\nfunction lengthToDegrees(distance, units) {\n    return radiansToDegrees(lengthToRadians(distance, units));\n}\nexports.lengthToDegrees = lengthToDegrees;\n/**\n * Converts any bearing angle from the north line direction (positive clockwise)\n * and returns an angle between 0-360 degrees (positive clockwise), 0 being the north line\n *\n * @name bearingToAzimuth\n * @param {number} bearing angle, between -180 and +180 degrees\n * @returns {number} angle between 0 and 360 degrees\n */\nfunction bearingToAzimuth(bearing) {\n    var angle = bearing % 360;\n    if (angle < 0) {\n        angle += 360;\n    }\n    return angle;\n}\nexports.bearingToAzimuth = bearingToAzimuth;\n/**\n * Converts an angle in radians to degrees\n *\n * @name radiansToDegrees\n * @param {number} radians angle in radians\n * @returns {number} degrees between 0 and 360 degrees\n */\nfunction radiansToDegrees(radians) {\n    var degrees = radians % (2 * Math.PI);\n    return (degrees * 180) / Math.PI;\n}\nexports.radiansToDegrees = radiansToDegrees;\n/**\n * Converts an angle in degrees to radians\n *\n * @name degreesToRadians\n * @param {number} degrees angle between 0 and 360 degrees\n * @returns {number} angle in radians\n */\nfunction degreesToRadians(degrees) {\n    var radians = degrees % 360;\n    return (radians * Math.PI) / 180;\n}\nexports.degreesToRadians = degreesToRadians;\n/**\n * Converts a length to the requested unit.\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet\n *\n * @param {number} length to be converted\n * @param {Units} [originalUnit=\"kilometers\"] of the length\n * @param {Units} [finalUnit=\"kilometers\"] returned unit\n * @returns {number} the converted length\n */\nfunction convertLength(length, originalUnit, finalUnit) {\n    if (originalUnit === void 0) { originalUnit = \"kilometers\"; }\n    if (finalUnit === void 0) { finalUnit = \"kilometers\"; }\n    if (!(length >= 0)) {\n        throw new Error(\"length must be a positive number\");\n    }\n    return radiansToLength(lengthToRadians(length, originalUnit), finalUnit);\n}\nexports.convertLength = convertLength;\n/**\n * Converts a area to the requested unit.\n * Valid units: kilometers, kilometres, meters, metres, centimetres, millimeters, acres, miles, yards, feet, inches, hectares\n * @param {number} area to be converted\n * @param {Units} [originalUnit=\"meters\"] of the distance\n * @param {Units} [finalUnit=\"kilometers\"] returned unit\n * @returns {number} the converted area\n */\nfunction convertArea(area, originalUnit, finalUnit) {\n    if (originalUnit === void 0) { originalUnit = \"meters\"; }\n    if (finalUnit === void 0) { finalUnit = \"kilometers\"; }\n    if (!(area >= 0)) {\n        throw new Error(\"area must be a positive number\");\n    }\n    var startFactor = exports.areaFactors[originalUnit];\n    if (!startFactor) {\n        throw new Error(\"invalid original units\");\n    }\n    var finalFactor = exports.areaFactors[finalUnit];\n    if (!finalFactor) {\n        throw new Error(\"invalid final units\");\n    }\n    return (area / startFactor) * finalFactor;\n}\nexports.convertArea = convertArea;\n/**\n * isNumber\n *\n * @param {*} num Number to validate\n * @returns {boolean} true/false\n * @example\n * turf.isNumber(123)\n * //=true\n * turf.isNumber('foo')\n * //=false\n */\nfunction isNumber(num) {\n    return !isNaN(num) && num !== null && !Array.isArray(num);\n}\nexports.isNumber = isNumber;\n/**\n * isObject\n *\n * @param {*} input variable to validate\n * @returns {boolean} true/false\n * @example\n * turf.isObject({elevation: 10})\n * //=true\n * turf.isObject('foo')\n * //=false\n */\nfunction isObject(input) {\n    return !!input && input.constructor === Object;\n}\nexports.isObject = isObject;\n/**\n * Validate BBox\n *\n * @private\n * @param {Array<number>} bbox BBox to validate\n * @returns {void}\n * @throws Error if BBox is not valid\n * @example\n * validateBBox([-180, -40, 110, 50])\n * //=OK\n * validateBBox([-180, -40])\n * //=Error\n * validateBBox('Foo')\n * //=Error\n * validateBBox(5)\n * //=Error\n * validateBBox(null)\n * //=Error\n * validateBBox(undefined)\n * //=Error\n */\nfunction validateBBox(bbox) {\n    if (!bbox) {\n        throw new Error(\"bbox is required\");\n    }\n    if (!Array.isArray(bbox)) {\n        throw new Error(\"bbox must be an Array\");\n    }\n    if (bbox.length !== 4 && bbox.length !== 6) {\n        throw new Error(\"bbox must be an Array of 4 or 6 numbers\");\n    }\n    bbox.forEach(function (num) {\n        if (!isNumber(num)) {\n            throw new Error(\"bbox must only contain numbers\");\n        }\n    });\n}\nexports.validateBBox = validateBBox;\n/**\n * Validate Id\n *\n * @private\n * @param {string|number} id Id to validate\n * @returns {void}\n * @throws Error if Id is not valid\n * @example\n * validateId([-180, -40, 110, 50])\n * //=Error\n * validateId([-180, -40])\n * //=Error\n * validateId('Foo')\n * //=OK\n * validateId(5)\n * //=OK\n * validateId(null)\n * //=Error\n * validateId(undefined)\n * //=Error\n */\nfunction validateId(id) {\n    if (!id) {\n        throw new Error(\"id is required\");\n    }\n    if ([\"string\", \"number\"].indexOf(typeof id) === -1) {\n        throw new Error(\"id must be a number or a string\");\n    }\n}\nexports.validateId = validateId;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar helpers_1 = require(\"@turf/helpers\");\n/**\n * Unwrap a coordinate from a Point Feature, Geometry or a single coordinate.\n *\n * @name getCoord\n * @param {Array<number>|Geometry<Point>|Feature<Point>} coord GeoJSON Point or an Array of numbers\n * @returns {Array<number>} coordinates\n * @example\n * var pt = turf.point([10, 10]);\n *\n * var coord = turf.getCoord(pt);\n * //= [10, 10]\n */\nfunction getCoord(coord) {\n    if (!coord) {\n        throw new Error(\"coord is required\");\n    }\n    if (!Array.isArray(coord)) {\n        if (coord.type === \"Feature\" &&\n            coord.geometry !== null &&\n            coord.geometry.type === \"Point\") {\n            return coord.geometry.coordinates;\n        }\n        if (coord.type === \"Point\") {\n            return coord.coordinates;\n        }\n    }\n    if (Array.isArray(coord) &&\n        coord.length >= 2 &&\n        !Array.isArray(coord[0]) &&\n        !Array.isArray(coord[1])) {\n        return coord;\n    }\n    throw new Error(\"coord must be GeoJSON Point or an Array of numbers\");\n}\nexports.getCoord = getCoord;\n/**\n * Unwrap coordinates from a Feature, Geometry Object or an Array\n *\n * @name getCoords\n * @param {Array<any>|Geometry|Feature} coords Feature, Geometry Object or an Array\n * @returns {Array<any>} coordinates\n * @example\n * var poly = turf.polygon([[[119.32, -8.7], [119.55, -8.69], [119.51, -8.54], [119.32, -8.7]]]);\n *\n * var coords = turf.getCoords(poly);\n * //= [[[119.32, -8.7], [119.55, -8.69], [119.51, -8.54], [119.32, -8.7]]]\n */\nfunction getCoords(coords) {\n    if (Array.isArray(coords)) {\n        return coords;\n    }\n    // Feature\n    if (coords.type === \"Feature\") {\n        if (coords.geometry !== null) {\n            return coords.geometry.coordinates;\n        }\n    }\n    else {\n        // Geometry\n        if (coords.coordinates) {\n            return coords.coordinates;\n        }\n    }\n    throw new Error(\"coords must be GeoJSON Feature, Geometry Object or an Array\");\n}\nexports.getCoords = getCoords;\n/**\n * Checks if coordinates contains a number\n *\n * @name containsNumber\n * @param {Array<any>} coordinates GeoJSON Coordinates\n * @returns {boolean} true if Array contains a number\n */\nfunction containsNumber(coordinates) {\n    if (coordinates.length > 1 &&\n        helpers_1.isNumber(coordinates[0]) &&\n        helpers_1.isNumber(coordinates[1])) {\n        return true;\n    }\n    if (Array.isArray(coordinates[0]) && coordinates[0].length) {\n        return containsNumber(coordinates[0]);\n    }\n    throw new Error(\"coordinates must only contain numbers\");\n}\nexports.containsNumber = containsNumber;\n/**\n * Enforce expectations about types of GeoJSON objects for Turf.\n *\n * @name geojsonType\n * @param {GeoJSON} value any GeoJSON object\n * @param {string} type expected GeoJSON type\n * @param {string} name name of calling function\n * @throws {Error} if value is not the expected type.\n */\nfunction geojsonType(value, type, name) {\n    if (!type || !name) {\n        throw new Error(\"type and name required\");\n    }\n    if (!value || value.type !== type) {\n        throw new Error(\"Invalid input to \" +\n            name +\n            \": must be a \" +\n            type +\n            \", given \" +\n            value.type);\n    }\n}\nexports.geojsonType = geojsonType;\n/**\n * Enforce expectations about types of {@link Feature} inputs for Turf.\n * Internally this uses {@link geojsonType} to judge geometry types.\n *\n * @name featureOf\n * @param {Feature} feature a feature with an expected geometry type\n * @param {string} type expected GeoJSON type\n * @param {string} name name of calling function\n * @throws {Error} error if value is not the expected type.\n */\nfunction featureOf(feature, type, name) {\n    if (!feature) {\n        throw new Error(\"No feature passed\");\n    }\n    if (!name) {\n        throw new Error(\".featureOf() requires a name\");\n    }\n    if (!feature || feature.type !== \"Feature\" || !feature.geometry) {\n        throw new Error(\"Invalid input to \" + name + \", Feature with geometry required\");\n    }\n    if (!feature.geometry || feature.geometry.type !== type) {\n        throw new Error(\"Invalid input to \" +\n            name +\n            \": must be a \" +\n            type +\n            \", given \" +\n            feature.geometry.type);\n    }\n}\nexports.featureOf = featureOf;\n/**\n * Enforce expectations about types of {@link FeatureCollection} inputs for Turf.\n * Internally this uses {@link geojsonType} to judge geometry types.\n *\n * @name collectionOf\n * @param {FeatureCollection} featureCollection a FeatureCollection for which features will be judged\n * @param {string} type expected GeoJSON type\n * @param {string} name name of calling function\n * @throws {Error} if value is not the expected type.\n */\nfunction collectionOf(featureCollection, type, name) {\n    if (!featureCollection) {\n        throw new Error(\"No featureCollection passed\");\n    }\n    if (!name) {\n        throw new Error(\".collectionOf() requires a name\");\n    }\n    if (!featureCollection || featureCollection.type !== \"FeatureCollection\") {\n        throw new Error(\"Invalid input to \" + name + \", FeatureCollection required\");\n    }\n    for (var _i = 0, _a = featureCollection.features; _i < _a.length; _i++) {\n        var feature = _a[_i];\n        if (!feature || feature.type !== \"Feature\" || !feature.geometry) {\n            throw new Error(\"Invalid input to \" + name + \", Feature with geometry required\");\n        }\n        if (!feature.geometry || feature.geometry.type !== type) {\n            throw new Error(\"Invalid input to \" +\n                name +\n                \": must be a \" +\n                type +\n                \", given \" +\n                feature.geometry.type);\n        }\n    }\n}\nexports.collectionOf = collectionOf;\n/**\n * Get Geometry from Feature or Geometry Object\n *\n * @param {Feature|Geometry} geojson GeoJSON Feature or Geometry Object\n * @returns {Geometry|null} GeoJSON Geometry Object\n * @throws {Error} if geojson is not a Feature or Geometry Object\n * @example\n * var point = {\n *   \"type\": \"Feature\",\n *   \"properties\": {},\n *   \"geometry\": {\n *     \"type\": \"Point\",\n *     \"coordinates\": [110, 40]\n *   }\n * }\n * var geom = turf.getGeom(point)\n * //={\"type\": \"Point\", \"coordinates\": [110, 40]}\n */\nfunction getGeom(geojson) {\n    if (geojson.type === \"Feature\") {\n        return geojson.geometry;\n    }\n    return geojson;\n}\nexports.getGeom = getGeom;\n/**\n * Get GeoJSON object's type, Geometry type is prioritize.\n *\n * @param {GeoJSON} geojson GeoJSON object\n * @param {string} [name=\"geojson\"] name of the variable to display in error message (unused)\n * @returns {string} GeoJSON type\n * @example\n * var point = {\n *   \"type\": \"Feature\",\n *   \"properties\": {},\n *   \"geometry\": {\n *     \"type\": \"Point\",\n *     \"coordinates\": [110, 40]\n *   }\n * }\n * var geom = turf.getType(point)\n * //=\"Point\"\n */\nfunction getType(geojson, _name) {\n    if (geojson.type === \"FeatureCollection\") {\n        return \"FeatureCollection\";\n    }\n    if (geojson.type === \"GeometryCollection\") {\n        return \"GeometryCollection\";\n    }\n    if (geojson.type === \"Feature\" && geojson.geometry !== null) {\n        return geojson.geometry.type;\n    }\n    return geojson.type;\n}\nexports.getType = getType;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar invariant_1 = require(\"@turf/invariant\");\n/**\n * Returns true if a point is on a line. Accepts a optional parameter to ignore the\n * start and end vertices of the linestring.\n *\n * @name booleanPointOnLine\n * @param {Coord} pt GeoJSON Point\n * @param {Feature<LineString>} line GeoJSON LineString\n * @param {Object} [options={}] Optional parameters\n * @param {boolean} [options.ignoreEndVertices=false] whether to ignore the start and end vertices.\n * @param {number} [options.epsilon] Fractional number to compare with the cross product result. Useful for dealing with floating points such as lng/lat points\n * @returns {boolean} true/false\n * @example\n * var pt = turf.point([0, 0]);\n * var line = turf.lineString([[-1, -1],[1, 1],[1.5, 2.2]]);\n * var isPointOnLine = turf.booleanPointOnLine(pt, line);\n * //=true\n */\nfunction booleanPointOnLine(pt, line, options) {\n    if (options === void 0) { options = {}; }\n    // Normalize inputs\n    var ptCoords = invariant_1.getCoord(pt);\n    var lineCoords = invariant_1.getCoords(line);\n    // Main\n    for (var i = 0; i < lineCoords.length - 1; i++) {\n        var ignoreBoundary = false;\n        if (options.ignoreEndVertices) {\n            if (i === 0) {\n                ignoreBoundary = \"start\";\n            }\n            if (i === lineCoords.length - 2) {\n                ignoreBoundary = \"end\";\n            }\n            if (i === 0 && i + 1 === lineCoords.length - 1) {\n                ignoreBoundary = \"both\";\n            }\n        }\n        if (isPointOnLineSegment(lineCoords[i], lineCoords[i + 1], ptCoords, ignoreBoundary, typeof options.epsilon === \"undefined\" ? null : options.epsilon)) {\n            return true;\n        }\n    }\n    return false;\n}\n// See http://stackoverflow.com/a/4833823/1979085\n// See https://stackoverflow.com/a/328122/1048847\n/**\n * @private\n * @param {Position} lineSegmentStart coord pair of start of line\n * @param {Position} lineSegmentEnd coord pair of end of line\n * @param {Position} pt coord pair of point to check\n * @param {boolean|string} excludeBoundary whether the point is allowed to fall on the line ends.\n * @param {number} epsilon Fractional number to compare with the cross product result. Useful for dealing with floating points such as lng/lat points\n * If true which end to ignore.\n * @returns {boolean} true/false\n */\nfunction isPointOnLineSegment(lineSegmentStart, lineSegmentEnd, pt, excludeBoundary, epsilon) {\n    var x = pt[0];\n    var y = pt[1];\n    var x1 = lineSegmentStart[0];\n    var y1 = lineSegmentStart[1];\n    var x2 = lineSegmentEnd[0];\n    var y2 = lineSegmentEnd[1];\n    var dxc = pt[0] - x1;\n    var dyc = pt[1] - y1;\n    var dxl = x2 - x1;\n    var dyl = y2 - y1;\n    var cross = dxc * dyl - dyc * dxl;\n    if (epsilon !== null) {\n        if (Math.abs(cross) > epsilon) {\n            return false;\n        }\n    }\n    else if (cross !== 0) {\n        return false;\n    }\n    if (!excludeBoundary) {\n        if (Math.abs(dxl) >= Math.abs(dyl)) {\n            return dxl > 0 ? x1 <= x && x <= x2 : x2 <= x && x <= x1;\n        }\n        return dyl > 0 ? y1 <= y && y <= y2 : y2 <= y && y <= y1;\n    }\n    else if (excludeBoundary === \"start\") {\n        if (Math.abs(dxl) >= Math.abs(dyl)) {\n            return dxl > 0 ? x1 < x && x <= x2 : x2 <= x && x < x1;\n        }\n        return dyl > 0 ? y1 < y && y <= y2 : y2 <= y && y < y1;\n    }\n    else if (excludeBoundary === \"end\") {\n        if (Math.abs(dxl) >= Math.abs(dyl)) {\n            return dxl > 0 ? x1 <= x && x < x2 : x2 < x && x <= x1;\n        }\n        return dyl > 0 ? y1 <= y && y < y2 : y2 < y && y <= y1;\n    }\n    else if (excludeBoundary === \"both\") {\n        if (Math.abs(dxl) >= Math.abs(dyl)) {\n            return dxl > 0 ? x1 < x && x < x2 : x2 < x && x < x1;\n        }\n        return dyl > 0 ? y1 < y && y < y2 : y2 < y && y < y1;\n    }\n    return false;\n}\nexports.default = booleanPointOnLine;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * @module helpers\n */\n/**\n * Earth Radius used with the Harvesine formula and approximates using a spherical (non-ellipsoid) Earth.\n *\n * @memberof helpers\n * @type {number}\n */\nexports.earthRadius = 6371008.8;\n/**\n * Unit of measurement factors using a spherical (non-ellipsoid) earth radius.\n *\n * @memberof helpers\n * @type {Object}\n */\nexports.factors = {\n    centimeters: exports.earthRadius * 100,\n    centimetres: exports.earthRadius * 100,\n    degrees: exports.earthRadius / 111325,\n    feet: exports.earthRadius * 3.28084,\n    inches: exports.earthRadius * 39.37,\n    kilometers: exports.earthRadius / 1000,\n    kilometres: exports.earthRadius / 1000,\n    meters: exports.earthRadius,\n    metres: exports.earthRadius,\n    miles: exports.earthRadius / 1609.344,\n    millimeters: exports.earthRadius * 1000,\n    millimetres: exports.earthRadius * 1000,\n    nauticalmiles: exports.earthRadius / 1852,\n    radians: 1,\n    yards: exports.earthRadius * 1.0936,\n};\n/**\n * Units of measurement factors based on 1 meter.\n *\n * @memberof helpers\n * @type {Object}\n */\nexports.unitsFactors = {\n    centimeters: 100,\n    centimetres: 100,\n    degrees: 1 / 111325,\n    feet: 3.28084,\n    inches: 39.37,\n    kilometers: 1 / 1000,\n    kilometres: 1 / 1000,\n    meters: 1,\n    metres: 1,\n    miles: 1 / 1609.344,\n    millimeters: 1000,\n    millimetres: 1000,\n    nauticalmiles: 1 / 1852,\n    radians: 1 / exports.earthRadius,\n    yards: 1.0936133,\n};\n/**\n * Area of measurement factors based on 1 square meter.\n *\n * @memberof helpers\n * @type {Object}\n */\nexports.areaFactors = {\n    acres: 0.000247105,\n    centimeters: 10000,\n    centimetres: 10000,\n    feet: 10.763910417,\n    hectares: 0.0001,\n    inches: 1550.003100006,\n    kilometers: 0.000001,\n    kilometres: 0.000001,\n    meters: 1,\n    metres: 1,\n    miles: 3.86e-7,\n    millimeters: 1000000,\n    millimetres: 1000000,\n    yards: 1.195990046,\n};\n/**\n * Wraps a GeoJSON {@link Geometry} in a GeoJSON {@link Feature}.\n *\n * @name feature\n * @param {Geometry} geometry input geometry\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} a GeoJSON Feature\n * @example\n * var geometry = {\n *   \"type\": \"Point\",\n *   \"coordinates\": [110, 50]\n * };\n *\n * var feature = turf.feature(geometry);\n *\n * //=feature\n */\nfunction feature(geom, properties, options) {\n    if (options === void 0) { options = {}; }\n    var feat = { type: \"Feature\" };\n    if (options.id === 0 || options.id) {\n        feat.id = options.id;\n    }\n    if (options.bbox) {\n        feat.bbox = options.bbox;\n    }\n    feat.properties = properties || {};\n    feat.geometry = geom;\n    return feat;\n}\nexports.feature = feature;\n/**\n * Creates a GeoJSON {@link Geometry} from a Geometry string type & coordinates.\n * For GeometryCollection type use `helpers.geometryCollection`\n *\n * @name geometry\n * @param {string} type Geometry Type\n * @param {Array<any>} coordinates Coordinates\n * @param {Object} [options={}] Optional Parameters\n * @returns {Geometry} a GeoJSON Geometry\n * @example\n * var type = \"Point\";\n * var coordinates = [110, 50];\n * var geometry = turf.geometry(type, coordinates);\n * // => geometry\n */\nfunction geometry(type, coordinates, _options) {\n    if (_options === void 0) { _options = {}; }\n    switch (type) {\n        case \"Point\":\n            return point(coordinates).geometry;\n        case \"LineString\":\n            return lineString(coordinates).geometry;\n        case \"Polygon\":\n            return polygon(coordinates).geometry;\n        case \"MultiPoint\":\n            return multiPoint(coordinates).geometry;\n        case \"MultiLineString\":\n            return multiLineString(coordinates).geometry;\n        case \"MultiPolygon\":\n            return multiPolygon(coordinates).geometry;\n        default:\n            throw new Error(type + \" is invalid\");\n    }\n}\nexports.geometry = geometry;\n/**\n * Creates a {@link Point} {@link Feature} from a Position.\n *\n * @name point\n * @param {Array<number>} coordinates longitude, latitude position (each in decimal degrees)\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<Point>} a Point feature\n * @example\n * var point = turf.point([-75.343, 39.984]);\n *\n * //=point\n */\nfunction point(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    if (!coordinates) {\n        throw new Error(\"coordinates is required\");\n    }\n    if (!Array.isArray(coordinates)) {\n        throw new Error(\"coordinates must be an Array\");\n    }\n    if (coordinates.length < 2) {\n        throw new Error(\"coordinates must be at least 2 numbers long\");\n    }\n    if (!isNumber(coordinates[0]) || !isNumber(coordinates[1])) {\n        throw new Error(\"coordinates must contain numbers\");\n    }\n    var geom = {\n        type: \"Point\",\n        coordinates: coordinates,\n    };\n    return feature(geom, properties, options);\n}\nexports.point = point;\n/**\n * Creates a {@link Point} {@link FeatureCollection} from an Array of Point coordinates.\n *\n * @name points\n * @param {Array<Array<number>>} coordinates an array of Points\n * @param {Object} [properties={}] Translate these properties to each Feature\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north]\n * associated with the FeatureCollection\n * @param {string|number} [options.id] Identifier associated with the FeatureCollection\n * @returns {FeatureCollection<Point>} Point Feature\n * @example\n * var points = turf.points([\n *   [-75, 39],\n *   [-80, 45],\n *   [-78, 50]\n * ]);\n *\n * //=points\n */\nfunction points(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    return featureCollection(coordinates.map(function (coords) {\n        return point(coords, properties);\n    }), options);\n}\nexports.points = points;\n/**\n * Creates a {@link Polygon} {@link Feature} from an Array of LinearRings.\n *\n * @name polygon\n * @param {Array<Array<Array<number>>>} coordinates an array of LinearRings\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<Polygon>} Polygon Feature\n * @example\n * var polygon = turf.polygon([[[-5, 52], [-4, 56], [-2, 51], [-7, 54], [-5, 52]]], { name: 'poly1' });\n *\n * //=polygon\n */\nfunction polygon(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    for (var _i = 0, coordinates_1 = coordinates; _i < coordinates_1.length; _i++) {\n        var ring = coordinates_1[_i];\n        if (ring.length < 4) {\n            throw new Error(\"Each LinearRing of a Polygon must have 4 or more Positions.\");\n        }\n        for (var j = 0; j < ring[ring.length - 1].length; j++) {\n            // Check if first point of Polygon contains two numbers\n            if (ring[ring.length - 1][j] !== ring[0][j]) {\n                throw new Error(\"First and last Position are not equivalent.\");\n            }\n        }\n    }\n    var geom = {\n        type: \"Polygon\",\n        coordinates: coordinates,\n    };\n    return feature(geom, properties, options);\n}\nexports.polygon = polygon;\n/**\n * Creates a {@link Polygon} {@link FeatureCollection} from an Array of Polygon coordinates.\n *\n * @name polygons\n * @param {Array<Array<Array<Array<number>>>>} coordinates an array of Polygon coordinates\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the FeatureCollection\n * @returns {FeatureCollection<Polygon>} Polygon FeatureCollection\n * @example\n * var polygons = turf.polygons([\n *   [[[-5, 52], [-4, 56], [-2, 51], [-7, 54], [-5, 52]]],\n *   [[[-15, 42], [-14, 46], [-12, 41], [-17, 44], [-15, 42]]],\n * ]);\n *\n * //=polygons\n */\nfunction polygons(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    return featureCollection(coordinates.map(function (coords) {\n        return polygon(coords, properties);\n    }), options);\n}\nexports.polygons = polygons;\n/**\n * Creates a {@link LineString} {@link Feature} from an Array of Positions.\n *\n * @name lineString\n * @param {Array<Array<number>>} coordinates an array of Positions\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<LineString>} LineString Feature\n * @example\n * var linestring1 = turf.lineString([[-24, 63], [-23, 60], [-25, 65], [-20, 69]], {name: 'line 1'});\n * var linestring2 = turf.lineString([[-14, 43], [-13, 40], [-15, 45], [-10, 49]], {name: 'line 2'});\n *\n * //=linestring1\n * //=linestring2\n */\nfunction lineString(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    if (coordinates.length < 2) {\n        throw new Error(\"coordinates must be an array of two or more positions\");\n    }\n    var geom = {\n        type: \"LineString\",\n        coordinates: coordinates,\n    };\n    return feature(geom, properties, options);\n}\nexports.lineString = lineString;\n/**\n * Creates a {@link LineString} {@link FeatureCollection} from an Array of LineString coordinates.\n *\n * @name lineStrings\n * @param {Array<Array<Array<number>>>} coordinates an array of LinearRings\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north]\n * associated with the FeatureCollection\n * @param {string|number} [options.id] Identifier associated with the FeatureCollection\n * @returns {FeatureCollection<LineString>} LineString FeatureCollection\n * @example\n * var linestrings = turf.lineStrings([\n *   [[-24, 63], [-23, 60], [-25, 65], [-20, 69]],\n *   [[-14, 43], [-13, 40], [-15, 45], [-10, 49]]\n * ]);\n *\n * //=linestrings\n */\nfunction lineStrings(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    return featureCollection(coordinates.map(function (coords) {\n        return lineString(coords, properties);\n    }), options);\n}\nexports.lineStrings = lineStrings;\n/**\n * Takes one or more {@link Feature|Features} and creates a {@link FeatureCollection}.\n *\n * @name featureCollection\n * @param {Feature[]} features input features\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {FeatureCollection} FeatureCollection of Features\n * @example\n * var locationA = turf.point([-75.343, 39.984], {name: 'Location A'});\n * var locationB = turf.point([-75.833, 39.284], {name: 'Location B'});\n * var locationC = turf.point([-75.534, 39.123], {name: 'Location C'});\n *\n * var collection = turf.featureCollection([\n *   locationA,\n *   locationB,\n *   locationC\n * ]);\n *\n * //=collection\n */\nfunction featureCollection(features, options) {\n    if (options === void 0) { options = {}; }\n    var fc = { type: \"FeatureCollection\" };\n    if (options.id) {\n        fc.id = options.id;\n    }\n    if (options.bbox) {\n        fc.bbox = options.bbox;\n    }\n    fc.features = features;\n    return fc;\n}\nexports.featureCollection = featureCollection;\n/**\n * Creates a {@link Feature<MultiLineString>} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name multiLineString\n * @param {Array<Array<Array<number>>>} coordinates an array of LineStrings\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<MultiLineString>} a MultiLineString feature\n * @throws {Error} if no coordinates are passed\n * @example\n * var multiLine = turf.multiLineString([[[0,0],[10,10]]]);\n *\n * //=multiLine\n */\nfunction multiLineString(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    var geom = {\n        type: \"MultiLineString\",\n        coordinates: coordinates,\n    };\n    return feature(geom, properties, options);\n}\nexports.multiLineString = multiLineString;\n/**\n * Creates a {@link Feature<MultiPoint>} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name multiPoint\n * @param {Array<Array<number>>} coordinates an array of Positions\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<MultiPoint>} a MultiPoint feature\n * @throws {Error} if no coordinates are passed\n * @example\n * var multiPt = turf.multiPoint([[0,0],[10,10]]);\n *\n * //=multiPt\n */\nfunction multiPoint(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    var geom = {\n        type: \"MultiPoint\",\n        coordinates: coordinates,\n    };\n    return feature(geom, properties, options);\n}\nexports.multiPoint = multiPoint;\n/**\n * Creates a {@link Feature<MultiPolygon>} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name multiPolygon\n * @param {Array<Array<Array<Array<number>>>>} coordinates an array of Polygons\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<MultiPolygon>} a multipolygon feature\n * @throws {Error} if no coordinates are passed\n * @example\n * var multiPoly = turf.multiPolygon([[[[0,0],[0,10],[10,10],[10,0],[0,0]]]]);\n *\n * //=multiPoly\n *\n */\nfunction multiPolygon(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    var geom = {\n        type: \"MultiPolygon\",\n        coordinates: coordinates,\n    };\n    return feature(geom, properties, options);\n}\nexports.multiPolygon = multiPolygon;\n/**\n * Creates a {@link Feature<GeometryCollection>} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name geometryCollection\n * @param {Array<Geometry>} geometries an array of GeoJSON Geometries\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<GeometryCollection>} a GeoJSON GeometryCollection Feature\n * @example\n * var pt = turf.geometry(\"Point\", [100, 0]);\n * var line = turf.geometry(\"LineString\", [[101, 0], [102, 1]]);\n * var collection = turf.geometryCollection([pt, line]);\n *\n * // => collection\n */\nfunction geometryCollection(geometries, properties, options) {\n    if (options === void 0) { options = {}; }\n    var geom = {\n        type: \"GeometryCollection\",\n        geometries: geometries,\n    };\n    return feature(geom, properties, options);\n}\nexports.geometryCollection = geometryCollection;\n/**\n * Round number to precision\n *\n * @param {number} num Number\n * @param {number} [precision=0] Precision\n * @returns {number} rounded number\n * @example\n * turf.round(120.4321)\n * //=120\n *\n * turf.round(120.4321, 2)\n * //=120.43\n */\nfunction round(num, precision) {\n    if (precision === void 0) { precision = 0; }\n    if (precision && !(precision >= 0)) {\n        throw new Error(\"precision must be a positive number\");\n    }\n    var multiplier = Math.pow(10, precision || 0);\n    return Math.round(num * multiplier) / multiplier;\n}\nexports.round = round;\n/**\n * Convert a distance measurement (assuming a spherical Earth) from radians to a more friendly unit.\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet\n *\n * @name radiansToLength\n * @param {number} radians in radians across the sphere\n * @param {string} [units=\"kilometers\"] can be degrees, radians, miles, inches, yards, metres,\n * meters, kilometres, kilometers.\n * @returns {number} distance\n */\nfunction radiansToLength(radians, units) {\n    if (units === void 0) { units = \"kilometers\"; }\n    var factor = exports.factors[units];\n    if (!factor) {\n        throw new Error(units + \" units is invalid\");\n    }\n    return radians * factor;\n}\nexports.radiansToLength = radiansToLength;\n/**\n * Convert a distance measurement (assuming a spherical Earth) from a real-world unit into radians\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet\n *\n * @name lengthToRadians\n * @param {number} distance in real units\n * @param {string} [units=\"kilometers\"] can be degrees, radians, miles, inches, yards, metres,\n * meters, kilometres, kilometers.\n * @returns {number} radians\n */\nfunction lengthToRadians(distance, units) {\n    if (units === void 0) { units = \"kilometers\"; }\n    var factor = exports.factors[units];\n    if (!factor) {\n        throw new Error(units + \" units is invalid\");\n    }\n    return distance / factor;\n}\nexports.lengthToRadians = lengthToRadians;\n/**\n * Convert a distance measurement (assuming a spherical Earth) from a real-world unit into degrees\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, centimeters, kilometres, feet\n *\n * @name lengthToDegrees\n * @param {number} distance in real units\n * @param {string} [units=\"kilometers\"] can be degrees, radians, miles, inches, yards, metres,\n * meters, kilometres, kilometers.\n * @returns {number} degrees\n */\nfunction lengthToDegrees(distance, units) {\n    return radiansToDegrees(lengthToRadians(distance, units));\n}\nexports.lengthToDegrees = lengthToDegrees;\n/**\n * Converts any bearing angle from the north line direction (positive clockwise)\n * and returns an angle between 0-360 degrees (positive clockwise), 0 being the north line\n *\n * @name bearingToAzimuth\n * @param {number} bearing angle, between -180 and +180 degrees\n * @returns {number} angle between 0 and 360 degrees\n */\nfunction bearingToAzimuth(bearing) {\n    var angle = bearing % 360;\n    if (angle < 0) {\n        angle += 360;\n    }\n    return angle;\n}\nexports.bearingToAzimuth = bearingToAzimuth;\n/**\n * Converts an angle in radians to degrees\n *\n * @name radiansToDegrees\n * @param {number} radians angle in radians\n * @returns {number} degrees between 0 and 360 degrees\n */\nfunction radiansToDegrees(radians) {\n    var degrees = radians % (2 * Math.PI);\n    return (degrees * 180) / Math.PI;\n}\nexports.radiansToDegrees = radiansToDegrees;\n/**\n * Converts an angle in degrees to radians\n *\n * @name degreesToRadians\n * @param {number} degrees angle between 0 and 360 degrees\n * @returns {number} angle in radians\n */\nfunction degreesToRadians(degrees) {\n    var radians = degrees % 360;\n    return (radians * Math.PI) / 180;\n}\nexports.degreesToRadians = degreesToRadians;\n/**\n * Converts a length to the requested unit.\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet\n *\n * @param {number} length to be converted\n * @param {Units} [originalUnit=\"kilometers\"] of the length\n * @param {Units} [finalUnit=\"kilometers\"] returned unit\n * @returns {number} the converted length\n */\nfunction convertLength(length, originalUnit, finalUnit) {\n    if (originalUnit === void 0) { originalUnit = \"kilometers\"; }\n    if (finalUnit === void 0) { finalUnit = \"kilometers\"; }\n    if (!(length >= 0)) {\n        throw new Error(\"length must be a positive number\");\n    }\n    return radiansToLength(lengthToRadians(length, originalUnit), finalUnit);\n}\nexports.convertLength = convertLength;\n/**\n * Converts a area to the requested unit.\n * Valid units: kilometers, kilometres, meters, metres, centimetres, millimeters, acres, miles, yards, feet, inches, hectares\n * @param {number} area to be converted\n * @param {Units} [originalUnit=\"meters\"] of the distance\n * @param {Units} [finalUnit=\"kilometers\"] returned unit\n * @returns {number} the converted area\n */\nfunction convertArea(area, originalUnit, finalUnit) {\n    if (originalUnit === void 0) { originalUnit = \"meters\"; }\n    if (finalUnit === void 0) { finalUnit = \"kilometers\"; }\n    if (!(area >= 0)) {\n        throw new Error(\"area must be a positive number\");\n    }\n    var startFactor = exports.areaFactors[originalUnit];\n    if (!startFactor) {\n        throw new Error(\"invalid original units\");\n    }\n    var finalFactor = exports.areaFactors[finalUnit];\n    if (!finalFactor) {\n        throw new Error(\"invalid final units\");\n    }\n    return (area / startFactor) * finalFactor;\n}\nexports.convertArea = convertArea;\n/**\n * isNumber\n *\n * @param {*} num Number to validate\n * @returns {boolean} true/false\n * @example\n * turf.isNumber(123)\n * //=true\n * turf.isNumber('foo')\n * //=false\n */\nfunction isNumber(num) {\n    return !isNaN(num) && num !== null && !Array.isArray(num);\n}\nexports.isNumber = isNumber;\n/**\n * isObject\n *\n * @param {*} input variable to validate\n * @returns {boolean} true/false\n * @example\n * turf.isObject({elevation: 10})\n * //=true\n * turf.isObject('foo')\n * //=false\n */\nfunction isObject(input) {\n    return !!input && input.constructor === Object;\n}\nexports.isObject = isObject;\n/**\n * Validate BBox\n *\n * @private\n * @param {Array<number>} bbox BBox to validate\n * @returns {void}\n * @throws Error if BBox is not valid\n * @example\n * validateBBox([-180, -40, 110, 50])\n * //=OK\n * validateBBox([-180, -40])\n * //=Error\n * validateBBox('Foo')\n * //=Error\n * validateBBox(5)\n * //=Error\n * validateBBox(null)\n * //=Error\n * validateBBox(undefined)\n * //=Error\n */\nfunction validateBBox(bbox) {\n    if (!bbox) {\n        throw new Error(\"bbox is required\");\n    }\n    if (!Array.isArray(bbox)) {\n        throw new Error(\"bbox must be an Array\");\n    }\n    if (bbox.length !== 4 && bbox.length !== 6) {\n        throw new Error(\"bbox must be an Array of 4 or 6 numbers\");\n    }\n    bbox.forEach(function (num) {\n        if (!isNumber(num)) {\n            throw new Error(\"bbox must only contain numbers\");\n        }\n    });\n}\nexports.validateBBox = validateBBox;\n/**\n * Validate Id\n *\n * @private\n * @param {string|number} id Id to validate\n * @returns {void}\n * @throws Error if Id is not valid\n * @example\n * validateId([-180, -40, 110, 50])\n * //=Error\n * validateId([-180, -40])\n * //=Error\n * validateId('Foo')\n * //=OK\n * validateId(5)\n * //=OK\n * validateId(null)\n * //=Error\n * validateId(undefined)\n * //=Error\n */\nfunction validateId(id) {\n    if (!id) {\n        throw new Error(\"id is required\");\n    }\n    if ([\"string\", \"number\"].indexOf(typeof id) === -1) {\n        throw new Error(\"id must be a number or a string\");\n    }\n}\nexports.validateId = validateId;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar helpers_1 = require(\"@turf/helpers\");\n/**\n * Unwrap a coordinate from a Point Feature, Geometry or a single coordinate.\n *\n * @name getCoord\n * @param {Array<number>|Geometry<Point>|Feature<Point>} coord GeoJSON Point or an Array of numbers\n * @returns {Array<number>} coordinates\n * @example\n * var pt = turf.point([10, 10]);\n *\n * var coord = turf.getCoord(pt);\n * //= [10, 10]\n */\nfunction getCoord(coord) {\n    if (!coord) {\n        throw new Error(\"coord is required\");\n    }\n    if (!Array.isArray(coord)) {\n        if (coord.type === \"Feature\" &&\n            coord.geometry !== null &&\n            coord.geometry.type === \"Point\") {\n            return coord.geometry.coordinates;\n        }\n        if (coord.type === \"Point\") {\n            return coord.coordinates;\n        }\n    }\n    if (Array.isArray(coord) &&\n        coord.length >= 2 &&\n        !Array.isArray(coord[0]) &&\n        !Array.isArray(coord[1])) {\n        return coord;\n    }\n    throw new Error(\"coord must be GeoJSON Point or an Array of numbers\");\n}\nexports.getCoord = getCoord;\n/**\n * Unwrap coordinates from a Feature, Geometry Object or an Array\n *\n * @name getCoords\n * @param {Array<any>|Geometry|Feature} coords Feature, Geometry Object or an Array\n * @returns {Array<any>} coordinates\n * @example\n * var poly = turf.polygon([[[119.32, -8.7], [119.55, -8.69], [119.51, -8.54], [119.32, -8.7]]]);\n *\n * var coords = turf.getCoords(poly);\n * //= [[[119.32, -8.7], [119.55, -8.69], [119.51, -8.54], [119.32, -8.7]]]\n */\nfunction getCoords(coords) {\n    if (Array.isArray(coords)) {\n        return coords;\n    }\n    // Feature\n    if (coords.type === \"Feature\") {\n        if (coords.geometry !== null) {\n            return coords.geometry.coordinates;\n        }\n    }\n    else {\n        // Geometry\n        if (coords.coordinates) {\n            return coords.coordinates;\n        }\n    }\n    throw new Error(\"coords must be GeoJSON Feature, Geometry Object or an Array\");\n}\nexports.getCoords = getCoords;\n/**\n * Checks if coordinates contains a number\n *\n * @name containsNumber\n * @param {Array<any>} coordinates GeoJSON Coordinates\n * @returns {boolean} true if Array contains a number\n */\nfunction containsNumber(coordinates) {\n    if (coordinates.length > 1 &&\n        helpers_1.isNumber(coordinates[0]) &&\n        helpers_1.isNumber(coordinates[1])) {\n        return true;\n    }\n    if (Array.isArray(coordinates[0]) && coordinates[0].length) {\n        return containsNumber(coordinates[0]);\n    }\n    throw new Error(\"coordinates must only contain numbers\");\n}\nexports.containsNumber = containsNumber;\n/**\n * Enforce expectations about types of GeoJSON objects for Turf.\n *\n * @name geojsonType\n * @param {GeoJSON} value any GeoJSON object\n * @param {string} type expected GeoJSON type\n * @param {string} name name of calling function\n * @throws {Error} if value is not the expected type.\n */\nfunction geojsonType(value, type, name) {\n    if (!type || !name) {\n        throw new Error(\"type and name required\");\n    }\n    if (!value || value.type !== type) {\n        throw new Error(\"Invalid input to \" +\n            name +\n            \": must be a \" +\n            type +\n            \", given \" +\n            value.type);\n    }\n}\nexports.geojsonType = geojsonType;\n/**\n * Enforce expectations about types of {@link Feature} inputs for Turf.\n * Internally this uses {@link geojsonType} to judge geometry types.\n *\n * @name featureOf\n * @param {Feature} feature a feature with an expected geometry type\n * @param {string} type expected GeoJSON type\n * @param {string} name name of calling function\n * @throws {Error} error if value is not the expected type.\n */\nfunction featureOf(feature, type, name) {\n    if (!feature) {\n        throw new Error(\"No feature passed\");\n    }\n    if (!name) {\n        throw new Error(\".featureOf() requires a name\");\n    }\n    if (!feature || feature.type !== \"Feature\" || !feature.geometry) {\n        throw new Error(\"Invalid input to \" + name + \", Feature with geometry required\");\n    }\n    if (!feature.geometry || feature.geometry.type !== type) {\n        throw new Error(\"Invalid input to \" +\n            name +\n            \": must be a \" +\n            type +\n            \", given \" +\n            feature.geometry.type);\n    }\n}\nexports.featureOf = featureOf;\n/**\n * Enforce expectations about types of {@link FeatureCollection} inputs for Turf.\n * Internally this uses {@link geojsonType} to judge geometry types.\n *\n * @name collectionOf\n * @param {FeatureCollection} featureCollection a FeatureCollection for which features will be judged\n * @param {string} type expected GeoJSON type\n * @param {string} name name of calling function\n * @throws {Error} if value is not the expected type.\n */\nfunction collectionOf(featureCollection, type, name) {\n    if (!featureCollection) {\n        throw new Error(\"No featureCollection passed\");\n    }\n    if (!name) {\n        throw new Error(\".collectionOf() requires a name\");\n    }\n    if (!featureCollection || featureCollection.type !== \"FeatureCollection\") {\n        throw new Error(\"Invalid input to \" + name + \", FeatureCollection required\");\n    }\n    for (var _i = 0, _a = featureCollection.features; _i < _a.length; _i++) {\n        var feature = _a[_i];\n        if (!feature || feature.type !== \"Feature\" || !feature.geometry) {\n            throw new Error(\"Invalid input to \" + name + \", Feature with geometry required\");\n        }\n        if (!feature.geometry || feature.geometry.type !== type) {\n            throw new Error(\"Invalid input to \" +\n                name +\n                \": must be a \" +\n                type +\n                \", given \" +\n                feature.geometry.type);\n        }\n    }\n}\nexports.collectionOf = collectionOf;\n/**\n * Get Geometry from Feature or Geometry Object\n *\n * @param {Feature|Geometry} geojson GeoJSON Feature or Geometry Object\n * @returns {Geometry|null} GeoJSON Geometry Object\n * @throws {Error} if geojson is not a Feature or Geometry Object\n * @example\n * var point = {\n *   \"type\": \"Feature\",\n *   \"properties\": {},\n *   \"geometry\": {\n *     \"type\": \"Point\",\n *     \"coordinates\": [110, 40]\n *   }\n * }\n * var geom = turf.getGeom(point)\n * //={\"type\": \"Point\", \"coordinates\": [110, 40]}\n */\nfunction getGeom(geojson) {\n    if (geojson.type === \"Feature\") {\n        return geojson.geometry;\n    }\n    return geojson;\n}\nexports.getGeom = getGeom;\n/**\n * Get GeoJSON object's type, Geometry type is prioritize.\n *\n * @param {GeoJSON} geojson GeoJSON object\n * @param {string} [name=\"geojson\"] name of the variable to display in error message (unused)\n * @returns {string} GeoJSON type\n * @example\n * var point = {\n *   \"type\": \"Feature\",\n *   \"properties\": {},\n *   \"geometry\": {\n *     \"type\": \"Point\",\n *     \"coordinates\": [110, 40]\n *   }\n * }\n * var geom = turf.getType(point)\n * //=\"Point\"\n */\nfunction getType(geojson, _name) {\n    if (geojson.type === \"FeatureCollection\") {\n        return \"FeatureCollection\";\n    }\n    if (geojson.type === \"GeometryCollection\") {\n        return \"GeometryCollection\";\n    }\n    if (geojson.type === \"Feature\" && geojson.geometry !== null) {\n        return geojson.geometry.type;\n    }\n    return geojson.type;\n}\nexports.getType = getType;\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n    return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar bbox_1 = __importDefault(require(\"@turf/bbox\"));\nvar boolean_point_on_line_1 = __importDefault(require(\"@turf/boolean-point-on-line\"));\nvar boolean_point_in_polygon_1 = __importDefault(require(\"@turf/boolean-point-in-polygon\"));\nvar invariant_1 = require(\"@turf/invariant\");\n/**\n * Boolean-within returns true if the first geometry is completely within the second geometry.\n * The interiors of both geometries must intersect and, the interior and boundary of the primary (geometry a)\n * must not intersect the exterior of the secondary (geometry b).\n * Boolean-within returns the exact opposite result of the `@turf/boolean-contains`.\n *\n * @name booleanWithin\n * @param {Geometry|Feature<any>} feature1 GeoJSON Feature or Geometry\n * @param {Geometry|Feature<any>} feature2 GeoJSON Feature or Geometry\n * @returns {boolean} true/false\n * @example\n * var line = turf.lineString([[1, 1], [1, 2], [1, 3], [1, 4]]);\n * var point = turf.point([1, 2]);\n *\n * turf.booleanWithin(point, line);\n * //=true\n */\nfunction booleanWithin(feature1, feature2) {\n    var geom1 = invariant_1.getGeom(feature1);\n    var geom2 = invariant_1.getGeom(feature2);\n    var type1 = geom1.type;\n    var type2 = geom2.type;\n    switch (type1) {\n        case \"Point\":\n            switch (type2) {\n                case \"MultiPoint\":\n                    return isPointInMultiPoint(geom1, geom2);\n                case \"LineString\":\n                    return boolean_point_on_line_1.default(geom1, geom2, { ignoreEndVertices: true });\n                case \"Polygon\":\n                case \"MultiPolygon\":\n                    return boolean_point_in_polygon_1.default(geom1, geom2, { ignoreBoundary: true });\n                default:\n                    throw new Error(\"feature2 \" + type2 + \" geometry not supported\");\n            }\n        case \"MultiPoint\":\n            switch (type2) {\n                case \"MultiPoint\":\n                    return isMultiPointInMultiPoint(geom1, geom2);\n                case \"LineString\":\n                    return isMultiPointOnLine(geom1, geom2);\n                case \"Polygon\":\n                case \"MultiPolygon\":\n                    return isMultiPointInPoly(geom1, geom2);\n                default:\n                    throw new Error(\"feature2 \" + type2 + \" geometry not supported\");\n            }\n        case \"LineString\":\n            switch (type2) {\n                case \"LineString\":\n                    return isLineOnLine(geom1, geom2);\n                case \"Polygon\":\n                case \"MultiPolygon\":\n                    return isLineInPoly(geom1, geom2);\n                default:\n                    throw new Error(\"feature2 \" + type2 + \" geometry not supported\");\n            }\n        case \"Polygon\":\n            switch (type2) {\n                case \"Polygon\":\n                case \"MultiPolygon\":\n                    return isPolyInPoly(geom1, geom2);\n                default:\n                    throw new Error(\"feature2 \" + type2 + \" geometry not supported\");\n            }\n        default:\n            throw new Error(\"feature1 \" + type1 + \" geometry not supported\");\n    }\n}\nfunction isPointInMultiPoint(point, multiPoint) {\n    var i;\n    var output = false;\n    for (i = 0; i < multiPoint.coordinates.length; i++) {\n        if (compareCoords(multiPoint.coordinates[i], point.coordinates)) {\n            output = true;\n            break;\n        }\n    }\n    return output;\n}\nfunction isMultiPointInMultiPoint(multiPoint1, multiPoint2) {\n    for (var i = 0; i < multiPoint1.coordinates.length; i++) {\n        var anyMatch = false;\n        for (var i2 = 0; i2 < multiPoint2.coordinates.length; i2++) {\n            if (compareCoords(multiPoint1.coordinates[i], multiPoint2.coordinates[i2])) {\n                anyMatch = true;\n            }\n        }\n        if (!anyMatch) {\n            return false;\n        }\n    }\n    return true;\n}\nfunction isMultiPointOnLine(multiPoint, lineString) {\n    var foundInsidePoint = false;\n    for (var i = 0; i < multiPoint.coordinates.length; i++) {\n        if (!boolean_point_on_line_1.default(multiPoint.coordinates[i], lineString)) {\n            return false;\n        }\n        if (!foundInsidePoint) {\n            foundInsidePoint = boolean_point_on_line_1.default(multiPoint.coordinates[i], lineString, { ignoreEndVertices: true });\n        }\n    }\n    return foundInsidePoint;\n}\nfunction isMultiPointInPoly(multiPoint, polygon) {\n    var output = true;\n    var oneInside = false;\n    var isInside = false;\n    for (var i = 0; i < multiPoint.coordinates.length; i++) {\n        isInside = boolean_point_in_polygon_1.default(multiPoint.coordinates[1], polygon);\n        if (!isInside) {\n            output = false;\n            break;\n        }\n        if (!oneInside) {\n            isInside = boolean_point_in_polygon_1.default(multiPoint.coordinates[1], polygon, {\n                ignoreBoundary: true,\n            });\n        }\n    }\n    return output && isInside;\n}\nfunction isLineOnLine(lineString1, lineString2) {\n    for (var i = 0; i < lineString1.coordinates.length; i++) {\n        if (!boolean_point_on_line_1.default(lineString1.coordinates[i], lineString2)) {\n            return false;\n        }\n    }\n    return true;\n}\nfunction isLineInPoly(linestring, polygon) {\n    var polyBbox = bbox_1.default(polygon);\n    var lineBbox = bbox_1.default(linestring);\n    if (!doBBoxOverlap(polyBbox, lineBbox)) {\n        return false;\n    }\n    var foundInsidePoint = false;\n    for (var i = 0; i < linestring.coordinates.length - 1; i++) {\n        if (!boolean_point_in_polygon_1.default(linestring.coordinates[i], polygon)) {\n            return false;\n        }\n        if (!foundInsidePoint) {\n            foundInsidePoint = boolean_point_in_polygon_1.default(linestring.coordinates[i], polygon, { ignoreBoundary: true });\n        }\n        if (!foundInsidePoint) {\n            var midpoint = getMidpoint(linestring.coordinates[i], linestring.coordinates[i + 1]);\n            foundInsidePoint = boolean_point_in_polygon_1.default(midpoint, polygon, {\n                ignoreBoundary: true,\n            });\n        }\n    }\n    return foundInsidePoint;\n}\n/**\n * Is Polygon2 in Polygon1\n * Only takes into account outer rings\n *\n * @private\n * @param {Polygon} geometry1\n * @param {Polygon|MultiPolygon} geometry2\n * @returns {boolean} true/false\n */\nfunction isPolyInPoly(geometry1, geometry2) {\n    var poly1Bbox = bbox_1.default(geometry1);\n    var poly2Bbox = bbox_1.default(geometry2);\n    if (!doBBoxOverlap(poly2Bbox, poly1Bbox)) {\n        return false;\n    }\n    for (var i = 0; i < geometry1.coordinates[0].length; i++) {\n        if (!boolean_point_in_polygon_1.default(geometry1.coordinates[0][i], geometry2)) {\n            return false;\n        }\n    }\n    return true;\n}\nfunction doBBoxOverlap(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}\n/**\n * compareCoords\n *\n * @private\n * @param {Position} pair1 point [x,y]\n * @param {Position} pair2 point [x,y]\n * @returns {boolean} true/false if coord pairs match\n */\nfunction compareCoords(pair1, pair2) {\n    return pair1[0] === pair2[0] && pair1[1] === pair2[1];\n}\n/**\n * getMidpoint\n *\n * @private\n * @param {Position} pair1 point [x,y]\n * @param {Position} pair2 point [x,y]\n * @returns {Position} midpoint of pair1 and pair2\n */\nfunction getMidpoint(pair1, pair2) {\n    return [(pair1[0] + pair2[0]) / 2, (pair1[1] + pair2[1]) / 2];\n}\nexports.default = booleanWithin;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * @module helpers\n */\n/**\n * Earth Radius used with the Harvesine formula and approximates using a spherical (non-ellipsoid) Earth.\n *\n * @memberof helpers\n * @type {number}\n */\nexports.earthRadius = 6371008.8;\n/**\n * Unit of measurement factors using a spherical (non-ellipsoid) earth radius.\n *\n * @memberof helpers\n * @type {Object}\n */\nexports.factors = {\n    centimeters: exports.earthRadius * 100,\n    centimetres: exports.earthRadius * 100,\n    degrees: exports.earthRadius / 111325,\n    feet: exports.earthRadius * 3.28084,\n    inches: exports.earthRadius * 39.37,\n    kilometers: exports.earthRadius / 1000,\n    kilometres: exports.earthRadius / 1000,\n    meters: exports.earthRadius,\n    metres: exports.earthRadius,\n    miles: exports.earthRadius / 1609.344,\n    millimeters: exports.earthRadius * 1000,\n    millimetres: exports.earthRadius * 1000,\n    nauticalmiles: exports.earthRadius / 1852,\n    radians: 1,\n    yards: exports.earthRadius * 1.0936,\n};\n/**\n * Units of measurement factors based on 1 meter.\n *\n * @memberof helpers\n * @type {Object}\n */\nexports.unitsFactors = {\n    centimeters: 100,\n    centimetres: 100,\n    degrees: 1 / 111325,\n    feet: 3.28084,\n    inches: 39.37,\n    kilometers: 1 / 1000,\n    kilometres: 1 / 1000,\n    meters: 1,\n    metres: 1,\n    miles: 1 / 1609.344,\n    millimeters: 1000,\n    millimetres: 1000,\n    nauticalmiles: 1 / 1852,\n    radians: 1 / exports.earthRadius,\n    yards: 1.0936133,\n};\n/**\n * Area of measurement factors based on 1 square meter.\n *\n * @memberof helpers\n * @type {Object}\n */\nexports.areaFactors = {\n    acres: 0.000247105,\n    centimeters: 10000,\n    centimetres: 10000,\n    feet: 10.763910417,\n    hectares: 0.0001,\n    inches: 1550.003100006,\n    kilometers: 0.000001,\n    kilometres: 0.000001,\n    meters: 1,\n    metres: 1,\n    miles: 3.86e-7,\n    millimeters: 1000000,\n    millimetres: 1000000,\n    yards: 1.195990046,\n};\n/**\n * Wraps a GeoJSON {@link Geometry} in a GeoJSON {@link Feature}.\n *\n * @name feature\n * @param {Geometry} geometry input geometry\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} a GeoJSON Feature\n * @example\n * var geometry = {\n *   \"type\": \"Point\",\n *   \"coordinates\": [110, 50]\n * };\n *\n * var feature = turf.feature(geometry);\n *\n * //=feature\n */\nfunction feature(geom, properties, options) {\n    if (options === void 0) { options = {}; }\n    var feat = { type: \"Feature\" };\n    if (options.id === 0 || options.id) {\n        feat.id = options.id;\n    }\n    if (options.bbox) {\n        feat.bbox = options.bbox;\n    }\n    feat.properties = properties || {};\n    feat.geometry = geom;\n    return feat;\n}\nexports.feature = feature;\n/**\n * Creates a GeoJSON {@link Geometry} from a Geometry string type & coordinates.\n * For GeometryCollection type use `helpers.geometryCollection`\n *\n * @name geometry\n * @param {string} type Geometry Type\n * @param {Array<any>} coordinates Coordinates\n * @param {Object} [options={}] Optional Parameters\n * @returns {Geometry} a GeoJSON Geometry\n * @example\n * var type = \"Point\";\n * var coordinates = [110, 50];\n * var geometry = turf.geometry(type, coordinates);\n * // => geometry\n */\nfunction geometry(type, coordinates, _options) {\n    if (_options === void 0) { _options = {}; }\n    switch (type) {\n        case \"Point\":\n            return point(coordinates).geometry;\n        case \"LineString\":\n            return lineString(coordinates).geometry;\n        case \"Polygon\":\n            return polygon(coordinates).geometry;\n        case \"MultiPoint\":\n            return multiPoint(coordinates).geometry;\n        case \"MultiLineString\":\n            return multiLineString(coordinates).geometry;\n        case \"MultiPolygon\":\n            return multiPolygon(coordinates).geometry;\n        default:\n            throw new Error(type + \" is invalid\");\n    }\n}\nexports.geometry = geometry;\n/**\n * Creates a {@link Point} {@link Feature} from a Position.\n *\n * @name point\n * @param {Array<number>} coordinates longitude, latitude position (each in decimal degrees)\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<Point>} a Point feature\n * @example\n * var point = turf.point([-75.343, 39.984]);\n *\n * //=point\n */\nfunction point(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    if (!coordinates) {\n        throw new Error(\"coordinates is required\");\n    }\n    if (!Array.isArray(coordinates)) {\n        throw new Error(\"coordinates must be an Array\");\n    }\n    if (coordinates.length < 2) {\n        throw new Error(\"coordinates must be at least 2 numbers long\");\n    }\n    if (!isNumber(coordinates[0]) || !isNumber(coordinates[1])) {\n        throw new Error(\"coordinates must contain numbers\");\n    }\n    var geom = {\n        type: \"Point\",\n        coordinates: coordinates,\n    };\n    return feature(geom, properties, options);\n}\nexports.point = point;\n/**\n * Creates a {@link Point} {@link FeatureCollection} from an Array of Point coordinates.\n *\n * @name points\n * @param {Array<Array<number>>} coordinates an array of Points\n * @param {Object} [properties={}] Translate these properties to each Feature\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north]\n * associated with the FeatureCollection\n * @param {string|number} [options.id] Identifier associated with the FeatureCollection\n * @returns {FeatureCollection<Point>} Point Feature\n * @example\n * var points = turf.points([\n *   [-75, 39],\n *   [-80, 45],\n *   [-78, 50]\n * ]);\n *\n * //=points\n */\nfunction points(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    return featureCollection(coordinates.map(function (coords) {\n        return point(coords, properties);\n    }), options);\n}\nexports.points = points;\n/**\n * Creates a {@link Polygon} {@link Feature} from an Array of LinearRings.\n *\n * @name polygon\n * @param {Array<Array<Array<number>>>} coordinates an array of LinearRings\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<Polygon>} Polygon Feature\n * @example\n * var polygon = turf.polygon([[[-5, 52], [-4, 56], [-2, 51], [-7, 54], [-5, 52]]], { name: 'poly1' });\n *\n * //=polygon\n */\nfunction polygon(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    for (var _i = 0, coordinates_1 = coordinates; _i < coordinates_1.length; _i++) {\n        var ring = coordinates_1[_i];\n        if (ring.length < 4) {\n            throw new Error(\"Each LinearRing of a Polygon must have 4 or more Positions.\");\n        }\n        for (var j = 0; j < ring[ring.length - 1].length; j++) {\n            // Check if first point of Polygon contains two numbers\n            if (ring[ring.length - 1][j] !== ring[0][j]) {\n                throw new Error(\"First and last Position are not equivalent.\");\n            }\n        }\n    }\n    var geom = {\n        type: \"Polygon\",\n        coordinates: coordinates,\n    };\n    return feature(geom, properties, options);\n}\nexports.polygon = polygon;\n/**\n * Creates a {@link Polygon} {@link FeatureCollection} from an Array of Polygon coordinates.\n *\n * @name polygons\n * @param {Array<Array<Array<Array<number>>>>} coordinates an array of Polygon coordinates\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the FeatureCollection\n * @returns {FeatureCollection<Polygon>} Polygon FeatureCollection\n * @example\n * var polygons = turf.polygons([\n *   [[[-5, 52], [-4, 56], [-2, 51], [-7, 54], [-5, 52]]],\n *   [[[-15, 42], [-14, 46], [-12, 41], [-17, 44], [-15, 42]]],\n * ]);\n *\n * //=polygons\n */\nfunction polygons(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    return featureCollection(coordinates.map(function (coords) {\n        return polygon(coords, properties);\n    }), options);\n}\nexports.polygons = polygons;\n/**\n * Creates a {@link LineString} {@link Feature} from an Array of Positions.\n *\n * @name lineString\n * @param {Array<Array<number>>} coordinates an array of Positions\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<LineString>} LineString Feature\n * @example\n * var linestring1 = turf.lineString([[-24, 63], [-23, 60], [-25, 65], [-20, 69]], {name: 'line 1'});\n * var linestring2 = turf.lineString([[-14, 43], [-13, 40], [-15, 45], [-10, 49]], {name: 'line 2'});\n *\n * //=linestring1\n * //=linestring2\n */\nfunction lineString(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    if (coordinates.length < 2) {\n        throw new Error(\"coordinates must be an array of two or more positions\");\n    }\n    var geom = {\n        type: \"LineString\",\n        coordinates: coordinates,\n    };\n    return feature(geom, properties, options);\n}\nexports.lineString = lineString;\n/**\n * Creates a {@link LineString} {@link FeatureCollection} from an Array of LineString coordinates.\n *\n * @name lineStrings\n * @param {Array<Array<Array<number>>>} coordinates an array of LinearRings\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north]\n * associated with the FeatureCollection\n * @param {string|number} [options.id] Identifier associated with the FeatureCollection\n * @returns {FeatureCollection<LineString>} LineString FeatureCollection\n * @example\n * var linestrings = turf.lineStrings([\n *   [[-24, 63], [-23, 60], [-25, 65], [-20, 69]],\n *   [[-14, 43], [-13, 40], [-15, 45], [-10, 49]]\n * ]);\n *\n * //=linestrings\n */\nfunction lineStrings(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    return featureCollection(coordinates.map(function (coords) {\n        return lineString(coords, properties);\n    }), options);\n}\nexports.lineStrings = lineStrings;\n/**\n * Takes one or more {@link Feature|Features} and creates a {@link FeatureCollection}.\n *\n * @name featureCollection\n * @param {Feature[]} features input features\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {FeatureCollection} FeatureCollection of Features\n * @example\n * var locationA = turf.point([-75.343, 39.984], {name: 'Location A'});\n * var locationB = turf.point([-75.833, 39.284], {name: 'Location B'});\n * var locationC = turf.point([-75.534, 39.123], {name: 'Location C'});\n *\n * var collection = turf.featureCollection([\n *   locationA,\n *   locationB,\n *   locationC\n * ]);\n *\n * //=collection\n */\nfunction featureCollection(features, options) {\n    if (options === void 0) { options = {}; }\n    var fc = { type: \"FeatureCollection\" };\n    if (options.id) {\n        fc.id = options.id;\n    }\n    if (options.bbox) {\n        fc.bbox = options.bbox;\n    }\n    fc.features = features;\n    return fc;\n}\nexports.featureCollection = featureCollection;\n/**\n * Creates a {@link Feature<MultiLineString>} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name multiLineString\n * @param {Array<Array<Array<number>>>} coordinates an array of LineStrings\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<MultiLineString>} a MultiLineString feature\n * @throws {Error} if no coordinates are passed\n * @example\n * var multiLine = turf.multiLineString([[[0,0],[10,10]]]);\n *\n * //=multiLine\n */\nfunction multiLineString(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    var geom = {\n        type: \"MultiLineString\",\n        coordinates: coordinates,\n    };\n    return feature(geom, properties, options);\n}\nexports.multiLineString = multiLineString;\n/**\n * Creates a {@link Feature<MultiPoint>} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name multiPoint\n * @param {Array<Array<number>>} coordinates an array of Positions\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<MultiPoint>} a MultiPoint feature\n * @throws {Error} if no coordinates are passed\n * @example\n * var multiPt = turf.multiPoint([[0,0],[10,10]]);\n *\n * //=multiPt\n */\nfunction multiPoint(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    var geom = {\n        type: \"MultiPoint\",\n        coordinates: coordinates,\n    };\n    return feature(geom, properties, options);\n}\nexports.multiPoint = multiPoint;\n/**\n * Creates a {@link Feature<MultiPolygon>} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name multiPolygon\n * @param {Array<Array<Array<Array<number>>>>} coordinates an array of Polygons\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<MultiPolygon>} a multipolygon feature\n * @throws {Error} if no coordinates are passed\n * @example\n * var multiPoly = turf.multiPolygon([[[[0,0],[0,10],[10,10],[10,0],[0,0]]]]);\n *\n * //=multiPoly\n *\n */\nfunction multiPolygon(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    var geom = {\n        type: \"MultiPolygon\",\n        coordinates: coordinates,\n    };\n    return feature(geom, properties, options);\n}\nexports.multiPolygon = multiPolygon;\n/**\n * Creates a {@link Feature<GeometryCollection>} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name geometryCollection\n * @param {Array<Geometry>} geometries an array of GeoJSON Geometries\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<GeometryCollection>} a GeoJSON GeometryCollection Feature\n * @example\n * var pt = turf.geometry(\"Point\", [100, 0]);\n * var line = turf.geometry(\"LineString\", [[101, 0], [102, 1]]);\n * var collection = turf.geometryCollection([pt, line]);\n *\n * // => collection\n */\nfunction geometryCollection(geometries, properties, options) {\n    if (options === void 0) { options = {}; }\n    var geom = {\n        type: \"GeometryCollection\",\n        geometries: geometries,\n    };\n    return feature(geom, properties, options);\n}\nexports.geometryCollection = geometryCollection;\n/**\n * Round number to precision\n *\n * @param {number} num Number\n * @param {number} [precision=0] Precision\n * @returns {number} rounded number\n * @example\n * turf.round(120.4321)\n * //=120\n *\n * turf.round(120.4321, 2)\n * //=120.43\n */\nfunction round(num, precision) {\n    if (precision === void 0) { precision = 0; }\n    if (precision && !(precision >= 0)) {\n        throw new Error(\"precision must be a positive number\");\n    }\n    var multiplier = Math.pow(10, precision || 0);\n    return Math.round(num * multiplier) / multiplier;\n}\nexports.round = round;\n/**\n * Convert a distance measurement (assuming a spherical Earth) from radians to a more friendly unit.\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet\n *\n * @name radiansToLength\n * @param {number} radians in radians across the sphere\n * @param {string} [units=\"kilometers\"] can be degrees, radians, miles, inches, yards, metres,\n * meters, kilometres, kilometers.\n * @returns {number} distance\n */\nfunction radiansToLength(radians, units) {\n    if (units === void 0) { units = \"kilometers\"; }\n    var factor = exports.factors[units];\n    if (!factor) {\n        throw new Error(units + \" units is invalid\");\n    }\n    return radians * factor;\n}\nexports.radiansToLength = radiansToLength;\n/**\n * Convert a distance measurement (assuming a spherical Earth) from a real-world unit into radians\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet\n *\n * @name lengthToRadians\n * @param {number} distance in real units\n * @param {string} [units=\"kilometers\"] can be degrees, radians, miles, inches, yards, metres,\n * meters, kilometres, kilometers.\n * @returns {number} radians\n */\nfunction lengthToRadians(distance, units) {\n    if (units === void 0) { units = \"kilometers\"; }\n    var factor = exports.factors[units];\n    if (!factor) {\n        throw new Error(units + \" units is invalid\");\n    }\n    return distance / factor;\n}\nexports.lengthToRadians = lengthToRadians;\n/**\n * Convert a distance measurement (assuming a spherical Earth) from a real-world unit into degrees\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, centimeters, kilometres, feet\n *\n * @name lengthToDegrees\n * @param {number} distance in real units\n * @param {string} [units=\"kilometers\"] can be degrees, radians, miles, inches, yards, metres,\n * meters, kilometres, kilometers.\n * @returns {number} degrees\n */\nfunction lengthToDegrees(distance, units) {\n    return radiansToDegrees(lengthToRadians(distance, units));\n}\nexports.lengthToDegrees = lengthToDegrees;\n/**\n * Converts any bearing angle from the north line direction (positive clockwise)\n * and returns an angle between 0-360 degrees (positive clockwise), 0 being the north line\n *\n * @name bearingToAzimuth\n * @param {number} bearing angle, between -180 and +180 degrees\n * @returns {number} angle between 0 and 360 degrees\n */\nfunction bearingToAzimuth(bearing) {\n    var angle = bearing % 360;\n    if (angle < 0) {\n        angle += 360;\n    }\n    return angle;\n}\nexports.bearingToAzimuth = bearingToAzimuth;\n/**\n * Converts an angle in radians to degrees\n *\n * @name radiansToDegrees\n * @param {number} radians angle in radians\n * @returns {number} degrees between 0 and 360 degrees\n */\nfunction radiansToDegrees(radians) {\n    var degrees = radians % (2 * Math.PI);\n    return (degrees * 180) / Math.PI;\n}\nexports.radiansToDegrees = radiansToDegrees;\n/**\n * Converts an angle in degrees to radians\n *\n * @name degreesToRadians\n * @param {number} degrees angle between 0 and 360 degrees\n * @returns {number} angle in radians\n */\nfunction degreesToRadians(degrees) {\n    var radians = degrees % 360;\n    return (radians * Math.PI) / 180;\n}\nexports.degreesToRadians = degreesToRadians;\n/**\n * Converts a length to the requested unit.\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet\n *\n * @param {number} length to be converted\n * @param {Units} [originalUnit=\"kilometers\"] of the length\n * @param {Units} [finalUnit=\"kilometers\"] returned unit\n * @returns {number} the converted length\n */\nfunction convertLength(length, originalUnit, finalUnit) {\n    if (originalUnit === void 0) { originalUnit = \"kilometers\"; }\n    if (finalUnit === void 0) { finalUnit = \"kilometers\"; }\n    if (!(length >= 0)) {\n        throw new Error(\"length must be a positive number\");\n    }\n    return radiansToLength(lengthToRadians(length, originalUnit), finalUnit);\n}\nexports.convertLength = convertLength;\n/**\n * Converts a area to the requested unit.\n * Valid units: kilometers, kilometres, meters, metres, centimetres, millimeters, acres, miles, yards, feet, inches, hectares\n * @param {number} area to be converted\n * @param {Units} [originalUnit=\"meters\"] of the distance\n * @param {Units} [finalUnit=\"kilometers\"] returned unit\n * @returns {number} the converted area\n */\nfunction convertArea(area, originalUnit, finalUnit) {\n    if (originalUnit === void 0) { originalUnit = \"meters\"; }\n    if (finalUnit === void 0) { finalUnit = \"kilometers\"; }\n    if (!(area >= 0)) {\n        throw new Error(\"area must be a positive number\");\n    }\n    var startFactor = exports.areaFactors[originalUnit];\n    if (!startFactor) {\n        throw new Error(\"invalid original units\");\n    }\n    var finalFactor = exports.areaFactors[finalUnit];\n    if (!finalFactor) {\n        throw new Error(\"invalid final units\");\n    }\n    return (area / startFactor) * finalFactor;\n}\nexports.convertArea = convertArea;\n/**\n * isNumber\n *\n * @param {*} num Number to validate\n * @returns {boolean} true/false\n * @example\n * turf.isNumber(123)\n * //=true\n * turf.isNumber('foo')\n * //=false\n */\nfunction isNumber(num) {\n    return !isNaN(num) && num !== null && !Array.isArray(num);\n}\nexports.isNumber = isNumber;\n/**\n * isObject\n *\n * @param {*} input variable to validate\n * @returns {boolean} true/false\n * @example\n * turf.isObject({elevation: 10})\n * //=true\n * turf.isObject('foo')\n * //=false\n */\nfunction isObject(input) {\n    return !!input && input.constructor === Object;\n}\nexports.isObject = isObject;\n/**\n * Validate BBox\n *\n * @private\n * @param {Array<number>} bbox BBox to validate\n * @returns {void}\n * @throws Error if BBox is not valid\n * @example\n * validateBBox([-180, -40, 110, 50])\n * //=OK\n * validateBBox([-180, -40])\n * //=Error\n * validateBBox('Foo')\n * //=Error\n * validateBBox(5)\n * //=Error\n * validateBBox(null)\n * //=Error\n * validateBBox(undefined)\n * //=Error\n */\nfunction validateBBox(bbox) {\n    if (!bbox) {\n        throw new Error(\"bbox is required\");\n    }\n    if (!Array.isArray(bbox)) {\n        throw new Error(\"bbox must be an Array\");\n    }\n    if (bbox.length !== 4 && bbox.length !== 6) {\n        throw new Error(\"bbox must be an Array of 4 or 6 numbers\");\n    }\n    bbox.forEach(function (num) {\n        if (!isNumber(num)) {\n            throw new Error(\"bbox must only contain numbers\");\n        }\n    });\n}\nexports.validateBBox = validateBBox;\n/**\n * Validate Id\n *\n * @private\n * @param {string|number} id Id to validate\n * @returns {void}\n * @throws Error if Id is not valid\n * @example\n * validateId([-180, -40, 110, 50])\n * //=Error\n * validateId([-180, -40])\n * //=Error\n * validateId('Foo')\n * //=OK\n * validateId(5)\n * //=OK\n * validateId(null)\n * //=Error\n * validateId(undefined)\n * //=Error\n */\nfunction validateId(id) {\n    if (!id) {\n        throw new Error(\"id is required\");\n    }\n    if ([\"string\", \"number\"].indexOf(typeof id) === -1) {\n        throw new Error(\"id must be a number or a string\");\n    }\n}\nexports.validateId = validateId;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar helpers_1 = require(\"@turf/helpers\");\n/**\n * Unwrap a coordinate from a Point Feature, Geometry or a single coordinate.\n *\n * @name getCoord\n * @param {Array<number>|Geometry<Point>|Feature<Point>} coord GeoJSON Point or an Array of numbers\n * @returns {Array<number>} coordinates\n * @example\n * var pt = turf.point([10, 10]);\n *\n * var coord = turf.getCoord(pt);\n * //= [10, 10]\n */\nfunction getCoord(coord) {\n    if (!coord) {\n        throw new Error(\"coord is required\");\n    }\n    if (!Array.isArray(coord)) {\n        if (coord.type === \"Feature\" &&\n            coord.geometry !== null &&\n            coord.geometry.type === \"Point\") {\n            return coord.geometry.coordinates;\n        }\n        if (coord.type === \"Point\") {\n            return coord.coordinates;\n        }\n    }\n    if (Array.isArray(coord) &&\n        coord.length >= 2 &&\n        !Array.isArray(coord[0]) &&\n        !Array.isArray(coord[1])) {\n        return coord;\n    }\n    throw new Error(\"coord must be GeoJSON Point or an Array of numbers\");\n}\nexports.getCoord = getCoord;\n/**\n * Unwrap coordinates from a Feature, Geometry Object or an Array\n *\n * @name getCoords\n * @param {Array<any>|Geometry|Feature} coords Feature, Geometry Object or an Array\n * @returns {Array<any>} coordinates\n * @example\n * var poly = turf.polygon([[[119.32, -8.7], [119.55, -8.69], [119.51, -8.54], [119.32, -8.7]]]);\n *\n * var coords = turf.getCoords(poly);\n * //= [[[119.32, -8.7], [119.55, -8.69], [119.51, -8.54], [119.32, -8.7]]]\n */\nfunction getCoords(coords) {\n    if (Array.isArray(coords)) {\n        return coords;\n    }\n    // Feature\n    if (coords.type === \"Feature\") {\n        if (coords.geometry !== null) {\n            return coords.geometry.coordinates;\n        }\n    }\n    else {\n        // Geometry\n        if (coords.coordinates) {\n            return coords.coordinates;\n        }\n    }\n    throw new Error(\"coords must be GeoJSON Feature, Geometry Object or an Array\");\n}\nexports.getCoords = getCoords;\n/**\n * Checks if coordinates contains a number\n *\n * @name containsNumber\n * @param {Array<any>} coordinates GeoJSON Coordinates\n * @returns {boolean} true if Array contains a number\n */\nfunction containsNumber(coordinates) {\n    if (coordinates.length > 1 &&\n        helpers_1.isNumber(coordinates[0]) &&\n        helpers_1.isNumber(coordinates[1])) {\n        return true;\n    }\n    if (Array.isArray(coordinates[0]) && coordinates[0].length) {\n        return containsNumber(coordinates[0]);\n    }\n    throw new Error(\"coordinates must only contain numbers\");\n}\nexports.containsNumber = containsNumber;\n/**\n * Enforce expectations about types of GeoJSON objects for Turf.\n *\n * @name geojsonType\n * @param {GeoJSON} value any GeoJSON object\n * @param {string} type expected GeoJSON type\n * @param {string} name name of calling function\n * @throws {Error} if value is not the expected type.\n */\nfunction geojsonType(value, type, name) {\n    if (!type || !name) {\n        throw new Error(\"type and name required\");\n    }\n    if (!value || value.type !== type) {\n        throw new Error(\"Invalid input to \" +\n            name +\n            \": must be a \" +\n            type +\n            \", given \" +\n            value.type);\n    }\n}\nexports.geojsonType = geojsonType;\n/**\n * Enforce expectations about types of {@link Feature} inputs for Turf.\n * Internally this uses {@link geojsonType} to judge geometry types.\n *\n * @name featureOf\n * @param {Feature} feature a feature with an expected geometry type\n * @param {string} type expected GeoJSON type\n * @param {string} name name of calling function\n * @throws {Error} error if value is not the expected type.\n */\nfunction featureOf(feature, type, name) {\n    if (!feature) {\n        throw new Error(\"No feature passed\");\n    }\n    if (!name) {\n        throw new Error(\".featureOf() requires a name\");\n    }\n    if (!feature || feature.type !== \"Feature\" || !feature.geometry) {\n        throw new Error(\"Invalid input to \" + name + \", Feature with geometry required\");\n    }\n    if (!feature.geometry || feature.geometry.type !== type) {\n        throw new Error(\"Invalid input to \" +\n            name +\n            \": must be a \" +\n            type +\n            \", given \" +\n            feature.geometry.type);\n    }\n}\nexports.featureOf = featureOf;\n/**\n * Enforce expectations about types of {@link FeatureCollection} inputs for Turf.\n * Internally this uses {@link geojsonType} to judge geometry types.\n *\n * @name collectionOf\n * @param {FeatureCollection} featureCollection a FeatureCollection for which features will be judged\n * @param {string} type expected GeoJSON type\n * @param {string} name name of calling function\n * @throws {Error} if value is not the expected type.\n */\nfunction collectionOf(featureCollection, type, name) {\n    if (!featureCollection) {\n        throw new Error(\"No featureCollection passed\");\n    }\n    if (!name) {\n        throw new Error(\".collectionOf() requires a name\");\n    }\n    if (!featureCollection || featureCollection.type !== \"FeatureCollection\") {\n        throw new Error(\"Invalid input to \" + name + \", FeatureCollection required\");\n    }\n    for (var _i = 0, _a = featureCollection.features; _i < _a.length; _i++) {\n        var feature = _a[_i];\n        if (!feature || feature.type !== \"Feature\" || !feature.geometry) {\n            throw new Error(\"Invalid input to \" + name + \", Feature with geometry required\");\n        }\n        if (!feature.geometry || feature.geometry.type !== type) {\n            throw new Error(\"Invalid input to \" +\n                name +\n                \": must be a \" +\n                type +\n                \", given \" +\n                feature.geometry.type);\n        }\n    }\n}\nexports.collectionOf = collectionOf;\n/**\n * Get Geometry from Feature or Geometry Object\n *\n * @param {Feature|Geometry} geojson GeoJSON Feature or Geometry Object\n * @returns {Geometry|null} GeoJSON Geometry Object\n * @throws {Error} if geojson is not a Feature or Geometry Object\n * @example\n * var point = {\n *   \"type\": \"Feature\",\n *   \"properties\": {},\n *   \"geometry\": {\n *     \"type\": \"Point\",\n *     \"coordinates\": [110, 40]\n *   }\n * }\n * var geom = turf.getGeom(point)\n * //={\"type\": \"Point\", \"coordinates\": [110, 40]}\n */\nfunction getGeom(geojson) {\n    if (geojson.type === \"Feature\") {\n        return geojson.geometry;\n    }\n    return geojson;\n}\nexports.getGeom = getGeom;\n/**\n * Get GeoJSON object's type, Geometry type is prioritize.\n *\n * @param {GeoJSON} geojson GeoJSON object\n * @param {string} [name=\"geojson\"] name of the variable to display in error message (unused)\n * @returns {string} GeoJSON type\n * @example\n * var point = {\n *   \"type\": \"Feature\",\n *   \"properties\": {},\n *   \"geometry\": {\n *     \"type\": \"Point\",\n *     \"coordinates\": [110, 40]\n *   }\n * }\n * var geom = turf.getType(point)\n * //=\"Point\"\n */\nfunction getType(geojson, _name) {\n    if (geojson.type === \"FeatureCollection\") {\n        return \"FeatureCollection\";\n    }\n    if (geojson.type === \"GeometryCollection\") {\n        return \"GeometryCollection\";\n    }\n    if (geojson.type === \"Feature\" && geojson.geometry !== null) {\n        return geojson.geometry.type;\n    }\n    return geojson.type;\n}\nexports.getType = getType;\n","'use strict';\n\nvar center = require('@turf/center');\nvar turfJsts = require('turf-jsts');\nvar meta = require('@turf/meta');\nvar d3Geo = require('d3-geo');\nvar helpers = require('@turf/helpers');\n\nfunction _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }\n\nvar center__default = /*#__PURE__*/_interopDefaultLegacy(center);\n\n/**\n * Calculates a buffer for input features for a given radius. Units supported are miles, kilometers, and degrees.\n *\n * When using a negative radius, the resulting geometry may be invalid if\n * it's too small compared to the radius magnitude. If the input is a\n * FeatureCollection, only valid members will be returned in the output\n * FeatureCollection - i.e., the output collection may have fewer members than\n * the input, or even be empty.\n *\n * @name buffer\n * @param {FeatureCollection|Geometry|Feature<any>} geojson input to be buffered\n * @param {number} radius distance to draw the buffer (negative values are allowed)\n * @param {Object} [options={}] Optional parameters\n * @param {string} [options.units=\"kilometers\"] any of the options supported by turf units\n * @param {number} [options.steps=8] number of steps\n * @returns {FeatureCollection|Feature<Polygon|MultiPolygon>|undefined} buffered features\n * @example\n * var point = turf.point([-90.548630, 14.616599]);\n * var buffered = turf.buffer(point, 500, {units: 'miles'});\n *\n * //addToMap\n * var addToMap = [point, buffered]\n */\nfunction buffer(geojson, radius, options) {\n  // Optional params\n  options = options || {};\n\n  // use user supplied options or default values\n  var units = options.units || \"kilometers\";\n  var steps = options.steps || 8;\n\n  // validation\n  if (!geojson) throw new Error(\"geojson is required\");\n  if (typeof options !== \"object\") throw new Error(\"options must be an object\");\n  if (typeof steps !== \"number\") throw new Error(\"steps must be an number\");\n\n  // Allow negative buffers (\"erosion\") or zero-sized buffers (\"repair geometry\")\n  if (radius === undefined) throw new Error(\"radius is required\");\n  if (steps <= 0) throw new Error(\"steps must be greater than 0\");\n\n  var results = [];\n  switch (geojson.type) {\n    case \"GeometryCollection\":\n      meta.geomEach(geojson, function (geometry) {\n        var buffered = bufferFeature(geometry, radius, units, steps);\n        if (buffered) results.push(buffered);\n      });\n      return helpers.featureCollection(results);\n    case \"FeatureCollection\":\n      meta.featureEach(geojson, function (feature) {\n        var multiBuffered = bufferFeature(feature, radius, units, steps);\n        if (multiBuffered) {\n          meta.featureEach(multiBuffered, function (buffered) {\n            if (buffered) results.push(buffered);\n          });\n        }\n      });\n      return helpers.featureCollection(results);\n  }\n  return bufferFeature(geojson, radius, units, steps);\n}\n\n/**\n * Buffer single Feature/Geometry\n *\n * @private\n * @param {Feature<any>} geojson input to be buffered\n * @param {number} radius distance to draw the buffer\n * @param {string} [units='kilometers'] any of the options supported by turf units\n * @param {number} [steps=8] number of steps\n * @returns {Feature<Polygon|MultiPolygon>} buffered feature\n */\nfunction bufferFeature(geojson, radius, units, steps) {\n  var properties = geojson.properties || {};\n  var geometry = geojson.type === \"Feature\" ? geojson.geometry : geojson;\n\n  // Geometry Types faster than jsts\n  if (geometry.type === \"GeometryCollection\") {\n    var results = [];\n    meta.geomEach(geojson, function (geometry) {\n      var buffered = bufferFeature(geometry, radius, units, steps);\n      if (buffered) results.push(buffered);\n    });\n    return helpers.featureCollection(results);\n  }\n\n  // Project GeoJSON to Azimuthal Equidistant projection (convert to Meters)\n  var projection = defineProjection(geometry);\n  var projected = {\n    type: geometry.type,\n    coordinates: projectCoords(geometry.coordinates, projection),\n  };\n\n  // JSTS buffer operation\n  var reader = new turfJsts.GeoJSONReader();\n  var geom = reader.read(projected);\n  var distance = helpers.radiansToLength(helpers.lengthToRadians(radius, units), \"meters\");\n  var buffered = turfJsts.BufferOp.bufferOp(geom, distance, steps);\n  var writer = new turfJsts.GeoJSONWriter();\n  buffered = writer.write(buffered);\n\n  // Detect if empty geometries\n  if (coordsIsNaN(buffered.coordinates)) return undefined;\n\n  // Unproject coordinates (convert to Degrees)\n  var result = {\n    type: buffered.type,\n    coordinates: unprojectCoords(buffered.coordinates, projection),\n  };\n\n  return helpers.feature(result, properties);\n}\n\n/**\n * Coordinates isNaN\n *\n * @private\n * @param {Array<any>} coords GeoJSON Coordinates\n * @returns {boolean} if NaN exists\n */\nfunction coordsIsNaN(coords) {\n  if (Array.isArray(coords[0])) return coordsIsNaN(coords[0]);\n  return isNaN(coords[0]);\n}\n\n/**\n * Project coordinates to projection\n *\n * @private\n * @param {Array<any>} coords to project\n * @param {GeoProjection} proj D3 Geo Projection\n * @returns {Array<any>} projected coordinates\n */\nfunction projectCoords(coords, proj) {\n  if (typeof coords[0] !== \"object\") return proj(coords);\n  return coords.map(function (coord) {\n    return projectCoords(coord, proj);\n  });\n}\n\n/**\n * Un-Project coordinates to projection\n *\n * @private\n * @param {Array<any>} coords to un-project\n * @param {GeoProjection} proj D3 Geo Projection\n * @returns {Array<any>} un-projected coordinates\n */\nfunction unprojectCoords(coords, proj) {\n  if (typeof coords[0] !== \"object\") return proj.invert(coords);\n  return coords.map(function (coord) {\n    return unprojectCoords(coord, proj);\n  });\n}\n\n/**\n * Define Azimuthal Equidistant projection\n *\n * @private\n * @param {Geometry|Feature<any>} geojson Base projection on center of GeoJSON\n * @returns {GeoProjection} D3 Geo Azimuthal Equidistant Projection\n */\nfunction defineProjection(geojson) {\n  var coords = center__default['default'](geojson).geometry.coordinates;\n  var rotation = [-coords[0], -coords[1]];\n  return d3Geo.geoAzimuthalEquidistant().rotate(rotation).scale(helpers.earthRadius);\n}\n\nmodule.exports = buffer;\nmodule.exports.default = buffer;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * @module helpers\n */\n/**\n * Earth Radius used with the Harvesine formula and approximates using a spherical (non-ellipsoid) Earth.\n *\n * @memberof helpers\n * @type {number}\n */\nexports.earthRadius = 6371008.8;\n/**\n * Unit of measurement factors using a spherical (non-ellipsoid) earth radius.\n *\n * @memberof helpers\n * @type {Object}\n */\nexports.factors = {\n    centimeters: exports.earthRadius * 100,\n    centimetres: exports.earthRadius * 100,\n    degrees: exports.earthRadius / 111325,\n    feet: exports.earthRadius * 3.28084,\n    inches: exports.earthRadius * 39.37,\n    kilometers: exports.earthRadius / 1000,\n    kilometres: exports.earthRadius / 1000,\n    meters: exports.earthRadius,\n    metres: exports.earthRadius,\n    miles: exports.earthRadius / 1609.344,\n    millimeters: exports.earthRadius * 1000,\n    millimetres: exports.earthRadius * 1000,\n    nauticalmiles: exports.earthRadius / 1852,\n    radians: 1,\n    yards: exports.earthRadius * 1.0936,\n};\n/**\n * Units of measurement factors based on 1 meter.\n *\n * @memberof helpers\n * @type {Object}\n */\nexports.unitsFactors = {\n    centimeters: 100,\n    centimetres: 100,\n    degrees: 1 / 111325,\n    feet: 3.28084,\n    inches: 39.37,\n    kilometers: 1 / 1000,\n    kilometres: 1 / 1000,\n    meters: 1,\n    metres: 1,\n    miles: 1 / 1609.344,\n    millimeters: 1000,\n    millimetres: 1000,\n    nauticalmiles: 1 / 1852,\n    radians: 1 / exports.earthRadius,\n    yards: 1.0936133,\n};\n/**\n * Area of measurement factors based on 1 square meter.\n *\n * @memberof helpers\n * @type {Object}\n */\nexports.areaFactors = {\n    acres: 0.000247105,\n    centimeters: 10000,\n    centimetres: 10000,\n    feet: 10.763910417,\n    hectares: 0.0001,\n    inches: 1550.003100006,\n    kilometers: 0.000001,\n    kilometres: 0.000001,\n    meters: 1,\n    metres: 1,\n    miles: 3.86e-7,\n    millimeters: 1000000,\n    millimetres: 1000000,\n    yards: 1.195990046,\n};\n/**\n * Wraps a GeoJSON {@link Geometry} in a GeoJSON {@link Feature}.\n *\n * @name feature\n * @param {Geometry} geometry input geometry\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} a GeoJSON Feature\n * @example\n * var geometry = {\n *   \"type\": \"Point\",\n *   \"coordinates\": [110, 50]\n * };\n *\n * var feature = turf.feature(geometry);\n *\n * //=feature\n */\nfunction feature(geom, properties, options) {\n    if (options === void 0) { options = {}; }\n    var feat = { type: \"Feature\" };\n    if (options.id === 0 || options.id) {\n        feat.id = options.id;\n    }\n    if (options.bbox) {\n        feat.bbox = options.bbox;\n    }\n    feat.properties = properties || {};\n    feat.geometry = geom;\n    return feat;\n}\nexports.feature = feature;\n/**\n * Creates a GeoJSON {@link Geometry} from a Geometry string type & coordinates.\n * For GeometryCollection type use `helpers.geometryCollection`\n *\n * @name geometry\n * @param {string} type Geometry Type\n * @param {Array<any>} coordinates Coordinates\n * @param {Object} [options={}] Optional Parameters\n * @returns {Geometry} a GeoJSON Geometry\n * @example\n * var type = \"Point\";\n * var coordinates = [110, 50];\n * var geometry = turf.geometry(type, coordinates);\n * // => geometry\n */\nfunction geometry(type, coordinates, _options) {\n    if (_options === void 0) { _options = {}; }\n    switch (type) {\n        case \"Point\":\n            return point(coordinates).geometry;\n        case \"LineString\":\n            return lineString(coordinates).geometry;\n        case \"Polygon\":\n            return polygon(coordinates).geometry;\n        case \"MultiPoint\":\n            return multiPoint(coordinates).geometry;\n        case \"MultiLineString\":\n            return multiLineString(coordinates).geometry;\n        case \"MultiPolygon\":\n            return multiPolygon(coordinates).geometry;\n        default:\n            throw new Error(type + \" is invalid\");\n    }\n}\nexports.geometry = geometry;\n/**\n * Creates a {@link Point} {@link Feature} from a Position.\n *\n * @name point\n * @param {Array<number>} coordinates longitude, latitude position (each in decimal degrees)\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<Point>} a Point feature\n * @example\n * var point = turf.point([-75.343, 39.984]);\n *\n * //=point\n */\nfunction point(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    if (!coordinates) {\n        throw new Error(\"coordinates is required\");\n    }\n    if (!Array.isArray(coordinates)) {\n        throw new Error(\"coordinates must be an Array\");\n    }\n    if (coordinates.length < 2) {\n        throw new Error(\"coordinates must be at least 2 numbers long\");\n    }\n    if (!isNumber(coordinates[0]) || !isNumber(coordinates[1])) {\n        throw new Error(\"coordinates must contain numbers\");\n    }\n    var geom = {\n        type: \"Point\",\n        coordinates: coordinates,\n    };\n    return feature(geom, properties, options);\n}\nexports.point = point;\n/**\n * Creates a {@link Point} {@link FeatureCollection} from an Array of Point coordinates.\n *\n * @name points\n * @param {Array<Array<number>>} coordinates an array of Points\n * @param {Object} [properties={}] Translate these properties to each Feature\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north]\n * associated with the FeatureCollection\n * @param {string|number} [options.id] Identifier associated with the FeatureCollection\n * @returns {FeatureCollection<Point>} Point Feature\n * @example\n * var points = turf.points([\n *   [-75, 39],\n *   [-80, 45],\n *   [-78, 50]\n * ]);\n *\n * //=points\n */\nfunction points(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    return featureCollection(coordinates.map(function (coords) {\n        return point(coords, properties);\n    }), options);\n}\nexports.points = points;\n/**\n * Creates a {@link Polygon} {@link Feature} from an Array of LinearRings.\n *\n * @name polygon\n * @param {Array<Array<Array<number>>>} coordinates an array of LinearRings\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<Polygon>} Polygon Feature\n * @example\n * var polygon = turf.polygon([[[-5, 52], [-4, 56], [-2, 51], [-7, 54], [-5, 52]]], { name: 'poly1' });\n *\n * //=polygon\n */\nfunction polygon(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    for (var _i = 0, coordinates_1 = coordinates; _i < coordinates_1.length; _i++) {\n        var ring = coordinates_1[_i];\n        if (ring.length < 4) {\n            throw new Error(\"Each LinearRing of a Polygon must have 4 or more Positions.\");\n        }\n        for (var j = 0; j < ring[ring.length - 1].length; j++) {\n            // Check if first point of Polygon contains two numbers\n            if (ring[ring.length - 1][j] !== ring[0][j]) {\n                throw new Error(\"First and last Position are not equivalent.\");\n            }\n        }\n    }\n    var geom = {\n        type: \"Polygon\",\n        coordinates: coordinates,\n    };\n    return feature(geom, properties, options);\n}\nexports.polygon = polygon;\n/**\n * Creates a {@link Polygon} {@link FeatureCollection} from an Array of Polygon coordinates.\n *\n * @name polygons\n * @param {Array<Array<Array<Array<number>>>>} coordinates an array of Polygon coordinates\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the FeatureCollection\n * @returns {FeatureCollection<Polygon>} Polygon FeatureCollection\n * @example\n * var polygons = turf.polygons([\n *   [[[-5, 52], [-4, 56], [-2, 51], [-7, 54], [-5, 52]]],\n *   [[[-15, 42], [-14, 46], [-12, 41], [-17, 44], [-15, 42]]],\n * ]);\n *\n * //=polygons\n */\nfunction polygons(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    return featureCollection(coordinates.map(function (coords) {\n        return polygon(coords, properties);\n    }), options);\n}\nexports.polygons = polygons;\n/**\n * Creates a {@link LineString} {@link Feature} from an Array of Positions.\n *\n * @name lineString\n * @param {Array<Array<number>>} coordinates an array of Positions\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<LineString>} LineString Feature\n * @example\n * var linestring1 = turf.lineString([[-24, 63], [-23, 60], [-25, 65], [-20, 69]], {name: 'line 1'});\n * var linestring2 = turf.lineString([[-14, 43], [-13, 40], [-15, 45], [-10, 49]], {name: 'line 2'});\n *\n * //=linestring1\n * //=linestring2\n */\nfunction lineString(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    if (coordinates.length < 2) {\n        throw new Error(\"coordinates must be an array of two or more positions\");\n    }\n    var geom = {\n        type: \"LineString\",\n        coordinates: coordinates,\n    };\n    return feature(geom, properties, options);\n}\nexports.lineString = lineString;\n/**\n * Creates a {@link LineString} {@link FeatureCollection} from an Array of LineString coordinates.\n *\n * @name lineStrings\n * @param {Array<Array<Array<number>>>} coordinates an array of LinearRings\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north]\n * associated with the FeatureCollection\n * @param {string|number} [options.id] Identifier associated with the FeatureCollection\n * @returns {FeatureCollection<LineString>} LineString FeatureCollection\n * @example\n * var linestrings = turf.lineStrings([\n *   [[-24, 63], [-23, 60], [-25, 65], [-20, 69]],\n *   [[-14, 43], [-13, 40], [-15, 45], [-10, 49]]\n * ]);\n *\n * //=linestrings\n */\nfunction lineStrings(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    return featureCollection(coordinates.map(function (coords) {\n        return lineString(coords, properties);\n    }), options);\n}\nexports.lineStrings = lineStrings;\n/**\n * Takes one or more {@link Feature|Features} and creates a {@link FeatureCollection}.\n *\n * @name featureCollection\n * @param {Feature[]} features input features\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {FeatureCollection} FeatureCollection of Features\n * @example\n * var locationA = turf.point([-75.343, 39.984], {name: 'Location A'});\n * var locationB = turf.point([-75.833, 39.284], {name: 'Location B'});\n * var locationC = turf.point([-75.534, 39.123], {name: 'Location C'});\n *\n * var collection = turf.featureCollection([\n *   locationA,\n *   locationB,\n *   locationC\n * ]);\n *\n * //=collection\n */\nfunction featureCollection(features, options) {\n    if (options === void 0) { options = {}; }\n    var fc = { type: \"FeatureCollection\" };\n    if (options.id) {\n        fc.id = options.id;\n    }\n    if (options.bbox) {\n        fc.bbox = options.bbox;\n    }\n    fc.features = features;\n    return fc;\n}\nexports.featureCollection = featureCollection;\n/**\n * Creates a {@link Feature<MultiLineString>} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name multiLineString\n * @param {Array<Array<Array<number>>>} coordinates an array of LineStrings\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<MultiLineString>} a MultiLineString feature\n * @throws {Error} if no coordinates are passed\n * @example\n * var multiLine = turf.multiLineString([[[0,0],[10,10]]]);\n *\n * //=multiLine\n */\nfunction multiLineString(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    var geom = {\n        type: \"MultiLineString\",\n        coordinates: coordinates,\n    };\n    return feature(geom, properties, options);\n}\nexports.multiLineString = multiLineString;\n/**\n * Creates a {@link Feature<MultiPoint>} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name multiPoint\n * @param {Array<Array<number>>} coordinates an array of Positions\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<MultiPoint>} a MultiPoint feature\n * @throws {Error} if no coordinates are passed\n * @example\n * var multiPt = turf.multiPoint([[0,0],[10,10]]);\n *\n * //=multiPt\n */\nfunction multiPoint(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    var geom = {\n        type: \"MultiPoint\",\n        coordinates: coordinates,\n    };\n    return feature(geom, properties, options);\n}\nexports.multiPoint = multiPoint;\n/**\n * Creates a {@link Feature<MultiPolygon>} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name multiPolygon\n * @param {Array<Array<Array<Array<number>>>>} coordinates an array of Polygons\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<MultiPolygon>} a multipolygon feature\n * @throws {Error} if no coordinates are passed\n * @example\n * var multiPoly = turf.multiPolygon([[[[0,0],[0,10],[10,10],[10,0],[0,0]]]]);\n *\n * //=multiPoly\n *\n */\nfunction multiPolygon(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    var geom = {\n        type: \"MultiPolygon\",\n        coordinates: coordinates,\n    };\n    return feature(geom, properties, options);\n}\nexports.multiPolygon = multiPolygon;\n/**\n * Creates a {@link Feature<GeometryCollection>} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name geometryCollection\n * @param {Array<Geometry>} geometries an array of GeoJSON Geometries\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<GeometryCollection>} a GeoJSON GeometryCollection Feature\n * @example\n * var pt = turf.geometry(\"Point\", [100, 0]);\n * var line = turf.geometry(\"LineString\", [[101, 0], [102, 1]]);\n * var collection = turf.geometryCollection([pt, line]);\n *\n * // => collection\n */\nfunction geometryCollection(geometries, properties, options) {\n    if (options === void 0) { options = {}; }\n    var geom = {\n        type: \"GeometryCollection\",\n        geometries: geometries,\n    };\n    return feature(geom, properties, options);\n}\nexports.geometryCollection = geometryCollection;\n/**\n * Round number to precision\n *\n * @param {number} num Number\n * @param {number} [precision=0] Precision\n * @returns {number} rounded number\n * @example\n * turf.round(120.4321)\n * //=120\n *\n * turf.round(120.4321, 2)\n * //=120.43\n */\nfunction round(num, precision) {\n    if (precision === void 0) { precision = 0; }\n    if (precision && !(precision >= 0)) {\n        throw new Error(\"precision must be a positive number\");\n    }\n    var multiplier = Math.pow(10, precision || 0);\n    return Math.round(num * multiplier) / multiplier;\n}\nexports.round = round;\n/**\n * Convert a distance measurement (assuming a spherical Earth) from radians to a more friendly unit.\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet\n *\n * @name radiansToLength\n * @param {number} radians in radians across the sphere\n * @param {string} [units=\"kilometers\"] can be degrees, radians, miles, inches, yards, metres,\n * meters, kilometres, kilometers.\n * @returns {number} distance\n */\nfunction radiansToLength(radians, units) {\n    if (units === void 0) { units = \"kilometers\"; }\n    var factor = exports.factors[units];\n    if (!factor) {\n        throw new Error(units + \" units is invalid\");\n    }\n    return radians * factor;\n}\nexports.radiansToLength = radiansToLength;\n/**\n * Convert a distance measurement (assuming a spherical Earth) from a real-world unit into radians\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet\n *\n * @name lengthToRadians\n * @param {number} distance in real units\n * @param {string} [units=\"kilometers\"] can be degrees, radians, miles, inches, yards, metres,\n * meters, kilometres, kilometers.\n * @returns {number} radians\n */\nfunction lengthToRadians(distance, units) {\n    if (units === void 0) { units = \"kilometers\"; }\n    var factor = exports.factors[units];\n    if (!factor) {\n        throw new Error(units + \" units is invalid\");\n    }\n    return distance / factor;\n}\nexports.lengthToRadians = lengthToRadians;\n/**\n * Convert a distance measurement (assuming a spherical Earth) from a real-world unit into degrees\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, centimeters, kilometres, feet\n *\n * @name lengthToDegrees\n * @param {number} distance in real units\n * @param {string} [units=\"kilometers\"] can be degrees, radians, miles, inches, yards, metres,\n * meters, kilometres, kilometers.\n * @returns {number} degrees\n */\nfunction lengthToDegrees(distance, units) {\n    return radiansToDegrees(lengthToRadians(distance, units));\n}\nexports.lengthToDegrees = lengthToDegrees;\n/**\n * Converts any bearing angle from the north line direction (positive clockwise)\n * and returns an angle between 0-360 degrees (positive clockwise), 0 being the north line\n *\n * @name bearingToAzimuth\n * @param {number} bearing angle, between -180 and +180 degrees\n * @returns {number} angle between 0 and 360 degrees\n */\nfunction bearingToAzimuth(bearing) {\n    var angle = bearing % 360;\n    if (angle < 0) {\n        angle += 360;\n    }\n    return angle;\n}\nexports.bearingToAzimuth = bearingToAzimuth;\n/**\n * Converts an angle in radians to degrees\n *\n * @name radiansToDegrees\n * @param {number} radians angle in radians\n * @returns {number} degrees between 0 and 360 degrees\n */\nfunction radiansToDegrees(radians) {\n    var degrees = radians % (2 * Math.PI);\n    return (degrees * 180) / Math.PI;\n}\nexports.radiansToDegrees = radiansToDegrees;\n/**\n * Converts an angle in degrees to radians\n *\n * @name degreesToRadians\n * @param {number} degrees angle between 0 and 360 degrees\n * @returns {number} angle in radians\n */\nfunction degreesToRadians(degrees) {\n    var radians = degrees % 360;\n    return (radians * Math.PI) / 180;\n}\nexports.degreesToRadians = degreesToRadians;\n/**\n * Converts a length to the requested unit.\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet\n *\n * @param {number} length to be converted\n * @param {Units} [originalUnit=\"kilometers\"] of the length\n * @param {Units} [finalUnit=\"kilometers\"] returned unit\n * @returns {number} the converted length\n */\nfunction convertLength(length, originalUnit, finalUnit) {\n    if (originalUnit === void 0) { originalUnit = \"kilometers\"; }\n    if (finalUnit === void 0) { finalUnit = \"kilometers\"; }\n    if (!(length >= 0)) {\n        throw new Error(\"length must be a positive number\");\n    }\n    return radiansToLength(lengthToRadians(length, originalUnit), finalUnit);\n}\nexports.convertLength = convertLength;\n/**\n * Converts a area to the requested unit.\n * Valid units: kilometers, kilometres, meters, metres, centimetres, millimeters, acres, miles, yards, feet, inches, hectares\n * @param {number} area to be converted\n * @param {Units} [originalUnit=\"meters\"] of the distance\n * @param {Units} [finalUnit=\"kilometers\"] returned unit\n * @returns {number} the converted area\n */\nfunction convertArea(area, originalUnit, finalUnit) {\n    if (originalUnit === void 0) { originalUnit = \"meters\"; }\n    if (finalUnit === void 0) { finalUnit = \"kilometers\"; }\n    if (!(area >= 0)) {\n        throw new Error(\"area must be a positive number\");\n    }\n    var startFactor = exports.areaFactors[originalUnit];\n    if (!startFactor) {\n        throw new Error(\"invalid original units\");\n    }\n    var finalFactor = exports.areaFactors[finalUnit];\n    if (!finalFactor) {\n        throw new Error(\"invalid final units\");\n    }\n    return (area / startFactor) * finalFactor;\n}\nexports.convertArea = convertArea;\n/**\n * isNumber\n *\n * @param {*} num Number to validate\n * @returns {boolean} true/false\n * @example\n * turf.isNumber(123)\n * //=true\n * turf.isNumber('foo')\n * //=false\n */\nfunction isNumber(num) {\n    return !isNaN(num) && num !== null && !Array.isArray(num);\n}\nexports.isNumber = isNumber;\n/**\n * isObject\n *\n * @param {*} input variable to validate\n * @returns {boolean} true/false\n * @example\n * turf.isObject({elevation: 10})\n * //=true\n * turf.isObject('foo')\n * //=false\n */\nfunction isObject(input) {\n    return !!input && input.constructor === Object;\n}\nexports.isObject = isObject;\n/**\n * Validate BBox\n *\n * @private\n * @param {Array<number>} bbox BBox to validate\n * @returns {void}\n * @throws Error if BBox is not valid\n * @example\n * validateBBox([-180, -40, 110, 50])\n * //=OK\n * validateBBox([-180, -40])\n * //=Error\n * validateBBox('Foo')\n * //=Error\n * validateBBox(5)\n * //=Error\n * validateBBox(null)\n * //=Error\n * validateBBox(undefined)\n * //=Error\n */\nfunction validateBBox(bbox) {\n    if (!bbox) {\n        throw new Error(\"bbox is required\");\n    }\n    if (!Array.isArray(bbox)) {\n        throw new Error(\"bbox must be an Array\");\n    }\n    if (bbox.length !== 4 && bbox.length !== 6) {\n        throw new Error(\"bbox must be an Array of 4 or 6 numbers\");\n    }\n    bbox.forEach(function (num) {\n        if (!isNumber(num)) {\n            throw new Error(\"bbox must only contain numbers\");\n        }\n    });\n}\nexports.validateBBox = validateBBox;\n/**\n * Validate Id\n *\n * @private\n * @param {string|number} id Id to validate\n * @returns {void}\n * @throws Error if Id is not valid\n * @example\n * validateId([-180, -40, 110, 50])\n * //=Error\n * validateId([-180, -40])\n * //=Error\n * validateId('Foo')\n * //=OK\n * validateId(5)\n * //=OK\n * validateId(null)\n * //=Error\n * validateId(undefined)\n * //=Error\n */\nfunction validateId(id) {\n    if (!id) {\n        throw new Error(\"id is required\");\n    }\n    if ([\"string\", \"number\"].indexOf(typeof id) === -1) {\n        throw new Error(\"id must be a number or a string\");\n    }\n}\nexports.validateId = validateId;\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nvar helpers = require('@turf/helpers');\n\n/**\n * Callback for coordEach\n *\n * @callback coordEachCallback\n * @param {Array<number>} currentCoord The current coordinate being processed.\n * @param {number} coordIndex The current index of the coordinate being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n * @param {number} geometryIndex The current index of the Geometry being processed.\n */\n\n/**\n * Iterate over coordinates in any GeoJSON object, similar to Array.forEach()\n *\n * @name coordEach\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (currentCoord, coordIndex, featureIndex, multiFeatureIndex)\n * @param {boolean} [excludeWrapCoord=false] whether or not to include the final coordinate of LinearRings that wraps the ring in its iteration.\n * @returns {void}\n * @example\n * var features = turf.featureCollection([\n *   turf.point([26, 37], {\"foo\": \"bar\"}),\n *   turf.point([36, 53], {\"hello\": \"world\"})\n * ]);\n *\n * turf.coordEach(features, function (currentCoord, coordIndex, featureIndex, multiFeatureIndex, geometryIndex) {\n *   //=currentCoord\n *   //=coordIndex\n *   //=featureIndex\n *   //=multiFeatureIndex\n *   //=geometryIndex\n * });\n */\nfunction coordEach(geojson, callback, excludeWrapCoord) {\n  // Handles null Geometry -- Skips this GeoJSON\n  if (geojson === null) return;\n  var j,\n    k,\n    l,\n    geometry,\n    stopG,\n    coords,\n    geometryMaybeCollection,\n    wrapShrink = 0,\n    coordIndex = 0,\n    isGeometryCollection,\n    type = geojson.type,\n    isFeatureCollection = type === \"FeatureCollection\",\n    isFeature = type === \"Feature\",\n    stop = isFeatureCollection ? geojson.features.length : 1;\n\n  // This logic may look a little weird. The reason why it is that way\n  // is because it's trying to be fast. GeoJSON supports multiple kinds\n  // of objects at its root: FeatureCollection, Features, Geometries.\n  // This function has the responsibility of handling all of them, and that\n  // means that some of the `for` loops you see below actually just don't apply\n  // to certain inputs. For instance, if you give this just a\n  // Point geometry, then both loops are short-circuited and all we do\n  // is gradually rename the input until it's called 'geometry'.\n  //\n  // This also aims to allocate as few resources as possible: just a\n  // few numbers and booleans, rather than any temporary arrays as would\n  // be required with the normalization approach.\n  for (var featureIndex = 0; featureIndex < stop; featureIndex++) {\n    geometryMaybeCollection = isFeatureCollection\n      ? geojson.features[featureIndex].geometry\n      : isFeature\n      ? geojson.geometry\n      : geojson;\n    isGeometryCollection = geometryMaybeCollection\n      ? geometryMaybeCollection.type === \"GeometryCollection\"\n      : false;\n    stopG = isGeometryCollection\n      ? geometryMaybeCollection.geometries.length\n      : 1;\n\n    for (var geomIndex = 0; geomIndex < stopG; geomIndex++) {\n      var multiFeatureIndex = 0;\n      var geometryIndex = 0;\n      geometry = isGeometryCollection\n        ? geometryMaybeCollection.geometries[geomIndex]\n        : geometryMaybeCollection;\n\n      // Handles null Geometry -- Skips this geometry\n      if (geometry === null) continue;\n      coords = geometry.coordinates;\n      var geomType = geometry.type;\n\n      wrapShrink =\n        excludeWrapCoord &&\n        (geomType === \"Polygon\" || geomType === \"MultiPolygon\")\n          ? 1\n          : 0;\n\n      switch (geomType) {\n        case null:\n          break;\n        case \"Point\":\n          if (\n            callback(\n              coords,\n              coordIndex,\n              featureIndex,\n              multiFeatureIndex,\n              geometryIndex\n            ) === false\n          )\n            return false;\n          coordIndex++;\n          multiFeatureIndex++;\n          break;\n        case \"LineString\":\n        case \"MultiPoint\":\n          for (j = 0; j < coords.length; j++) {\n            if (\n              callback(\n                coords[j],\n                coordIndex,\n                featureIndex,\n                multiFeatureIndex,\n                geometryIndex\n              ) === false\n            )\n              return false;\n            coordIndex++;\n            if (geomType === \"MultiPoint\") multiFeatureIndex++;\n          }\n          if (geomType === \"LineString\") multiFeatureIndex++;\n          break;\n        case \"Polygon\":\n        case \"MultiLineString\":\n          for (j = 0; j < coords.length; j++) {\n            for (k = 0; k < coords[j].length - wrapShrink; k++) {\n              if (\n                callback(\n                  coords[j][k],\n                  coordIndex,\n                  featureIndex,\n                  multiFeatureIndex,\n                  geometryIndex\n                ) === false\n              )\n                return false;\n              coordIndex++;\n            }\n            if (geomType === \"MultiLineString\") multiFeatureIndex++;\n            if (geomType === \"Polygon\") geometryIndex++;\n          }\n          if (geomType === \"Polygon\") multiFeatureIndex++;\n          break;\n        case \"MultiPolygon\":\n          for (j = 0; j < coords.length; j++) {\n            geometryIndex = 0;\n            for (k = 0; k < coords[j].length; k++) {\n              for (l = 0; l < coords[j][k].length - wrapShrink; l++) {\n                if (\n                  callback(\n                    coords[j][k][l],\n                    coordIndex,\n                    featureIndex,\n                    multiFeatureIndex,\n                    geometryIndex\n                  ) === false\n                )\n                  return false;\n                coordIndex++;\n              }\n              geometryIndex++;\n            }\n            multiFeatureIndex++;\n          }\n          break;\n        case \"GeometryCollection\":\n          for (j = 0; j < geometry.geometries.length; j++)\n            if (\n              coordEach(geometry.geometries[j], callback, excludeWrapCoord) ===\n              false\n            )\n              return false;\n          break;\n        default:\n          throw new Error(\"Unknown Geometry Type\");\n      }\n    }\n  }\n}\n\n/**\n * Callback for coordReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n *  - The previousValue argument is initialValue.\n *  - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n *  - The previousValue argument is the value of the first element present in the array.\n *  - The currentValue argument is the value of the second element present in the array.\n *\n * @callback coordReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Array<number>} currentCoord The current coordinate being processed.\n * @param {number} coordIndex The current index of the coordinate being processed.\n * Starts at index 0, if an initialValue is provided, and at index 1 otherwise.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n * @param {number} geometryIndex The current index of the Geometry being processed.\n */\n\n/**\n * Reduce coordinates in any GeoJSON object, similar to Array.reduce()\n *\n * @name coordReduce\n * @param {FeatureCollection|Geometry|Feature} geojson any GeoJSON object\n * @param {Function} callback a method that takes (previousValue, currentCoord, coordIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @param {boolean} [excludeWrapCoord=false] whether or not to include the final coordinate of LinearRings that wraps the ring in its iteration.\n * @returns {*} The value that results from the reduction.\n * @example\n * var features = turf.featureCollection([\n *   turf.point([26, 37], {\"foo\": \"bar\"}),\n *   turf.point([36, 53], {\"hello\": \"world\"})\n * ]);\n *\n * turf.coordReduce(features, function (previousValue, currentCoord, coordIndex, featureIndex, multiFeatureIndex, geometryIndex) {\n *   //=previousValue\n *   //=currentCoord\n *   //=coordIndex\n *   //=featureIndex\n *   //=multiFeatureIndex\n *   //=geometryIndex\n *   return currentCoord;\n * });\n */\nfunction coordReduce(geojson, callback, initialValue, excludeWrapCoord) {\n  var previousValue = initialValue;\n  coordEach(\n    geojson,\n    function (\n      currentCoord,\n      coordIndex,\n      featureIndex,\n      multiFeatureIndex,\n      geometryIndex\n    ) {\n      if (coordIndex === 0 && initialValue === undefined)\n        previousValue = currentCoord;\n      else\n        previousValue = callback(\n          previousValue,\n          currentCoord,\n          coordIndex,\n          featureIndex,\n          multiFeatureIndex,\n          geometryIndex\n        );\n    },\n    excludeWrapCoord\n  );\n  return previousValue;\n}\n\n/**\n * Callback for propEach\n *\n * @callback propEachCallback\n * @param {Object} currentProperties The current Properties being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n */\n\n/**\n * Iterate over properties in any GeoJSON object, similar to Array.forEach()\n *\n * @name propEach\n * @param {FeatureCollection|Feature} geojson any GeoJSON object\n * @param {Function} callback a method that takes (currentProperties, featureIndex)\n * @returns {void}\n * @example\n * var features = turf.featureCollection([\n *     turf.point([26, 37], {foo: 'bar'}),\n *     turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * turf.propEach(features, function (currentProperties, featureIndex) {\n *   //=currentProperties\n *   //=featureIndex\n * });\n */\nfunction propEach(geojson, callback) {\n  var i;\n  switch (geojson.type) {\n    case \"FeatureCollection\":\n      for (i = 0; i < geojson.features.length; i++) {\n        if (callback(geojson.features[i].properties, i) === false) break;\n      }\n      break;\n    case \"Feature\":\n      callback(geojson.properties, 0);\n      break;\n  }\n}\n\n/**\n * Callback for propReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n *  - The previousValue argument is initialValue.\n *  - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n *  - The previousValue argument is the value of the first element present in the array.\n *  - The currentValue argument is the value of the second element present in the array.\n *\n * @callback propReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {*} currentProperties The current Properties being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n */\n\n/**\n * Reduce properties in any GeoJSON object into a single value,\n * similar to how Array.reduce works. However, in this case we lazily run\n * the reduction, so an array of all properties is unnecessary.\n *\n * @name propReduce\n * @param {FeatureCollection|Feature} geojson any GeoJSON object\n * @param {Function} callback a method that takes (previousValue, currentProperties, featureIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {*} The value that results from the reduction.\n * @example\n * var features = turf.featureCollection([\n *     turf.point([26, 37], {foo: 'bar'}),\n *     turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * turf.propReduce(features, function (previousValue, currentProperties, featureIndex) {\n *   //=previousValue\n *   //=currentProperties\n *   //=featureIndex\n *   return currentProperties\n * });\n */\nfunction propReduce(geojson, callback, initialValue) {\n  var previousValue = initialValue;\n  propEach(geojson, function (currentProperties, featureIndex) {\n    if (featureIndex === 0 && initialValue === undefined)\n      previousValue = currentProperties;\n    else\n      previousValue = callback(previousValue, currentProperties, featureIndex);\n  });\n  return previousValue;\n}\n\n/**\n * Callback for featureEach\n *\n * @callback featureEachCallback\n * @param {Feature<any>} currentFeature The current Feature being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n */\n\n/**\n * Iterate over features in any GeoJSON object, similar to\n * Array.forEach.\n *\n * @name featureEach\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (currentFeature, featureIndex)\n * @returns {void}\n * @example\n * var features = turf.featureCollection([\n *   turf.point([26, 37], {foo: 'bar'}),\n *   turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * turf.featureEach(features, function (currentFeature, featureIndex) {\n *   //=currentFeature\n *   //=featureIndex\n * });\n */\nfunction featureEach(geojson, callback) {\n  if (geojson.type === \"Feature\") {\n    callback(geojson, 0);\n  } else if (geojson.type === \"FeatureCollection\") {\n    for (var i = 0; i < geojson.features.length; i++) {\n      if (callback(geojson.features[i], i) === false) break;\n    }\n  }\n}\n\n/**\n * Callback for featureReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n *  - The previousValue argument is initialValue.\n *  - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n *  - The previousValue argument is the value of the first element present in the array.\n *  - The currentValue argument is the value of the second element present in the array.\n *\n * @callback featureReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Feature} currentFeature The current Feature being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n */\n\n/**\n * Reduce features in any GeoJSON object, similar to Array.reduce().\n *\n * @name featureReduce\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (previousValue, currentFeature, featureIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {*} The value that results from the reduction.\n * @example\n * var features = turf.featureCollection([\n *   turf.point([26, 37], {\"foo\": \"bar\"}),\n *   turf.point([36, 53], {\"hello\": \"world\"})\n * ]);\n *\n * turf.featureReduce(features, function (previousValue, currentFeature, featureIndex) {\n *   //=previousValue\n *   //=currentFeature\n *   //=featureIndex\n *   return currentFeature\n * });\n */\nfunction featureReduce(geojson, callback, initialValue) {\n  var previousValue = initialValue;\n  featureEach(geojson, function (currentFeature, featureIndex) {\n    if (featureIndex === 0 && initialValue === undefined)\n      previousValue = currentFeature;\n    else previousValue = callback(previousValue, currentFeature, featureIndex);\n  });\n  return previousValue;\n}\n\n/**\n * Get all coordinates from any GeoJSON object.\n *\n * @name coordAll\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @returns {Array<Array<number>>} coordinate position array\n * @example\n * var features = turf.featureCollection([\n *   turf.point([26, 37], {foo: 'bar'}),\n *   turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * var coords = turf.coordAll(features);\n * //= [[26, 37], [36, 53]]\n */\nfunction coordAll(geojson) {\n  var coords = [];\n  coordEach(geojson, function (coord) {\n    coords.push(coord);\n  });\n  return coords;\n}\n\n/**\n * Callback for geomEach\n *\n * @callback geomEachCallback\n * @param {Geometry} currentGeometry The current Geometry being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {Object} featureProperties The current Feature Properties being processed.\n * @param {Array<number>} featureBBox The current Feature BBox being processed.\n * @param {number|string} featureId The current Feature Id being processed.\n */\n\n/**\n * Iterate over each geometry in any GeoJSON object, similar to Array.forEach()\n *\n * @name geomEach\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (currentGeometry, featureIndex, featureProperties, featureBBox, featureId)\n * @returns {void}\n * @example\n * var features = turf.featureCollection([\n *     turf.point([26, 37], {foo: 'bar'}),\n *     turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * turf.geomEach(features, function (currentGeometry, featureIndex, featureProperties, featureBBox, featureId) {\n *   //=currentGeometry\n *   //=featureIndex\n *   //=featureProperties\n *   //=featureBBox\n *   //=featureId\n * });\n */\nfunction geomEach(geojson, callback) {\n  var i,\n    j,\n    g,\n    geometry,\n    stopG,\n    geometryMaybeCollection,\n    isGeometryCollection,\n    featureProperties,\n    featureBBox,\n    featureId,\n    featureIndex = 0,\n    isFeatureCollection = geojson.type === \"FeatureCollection\",\n    isFeature = geojson.type === \"Feature\",\n    stop = isFeatureCollection ? geojson.features.length : 1;\n\n  // This logic may look a little weird. The reason why it is that way\n  // is because it's trying to be fast. GeoJSON supports multiple kinds\n  // of objects at its root: FeatureCollection, Features, Geometries.\n  // This function has the responsibility of handling all of them, and that\n  // means that some of the `for` loops you see below actually just don't apply\n  // to certain inputs. For instance, if you give this just a\n  // Point geometry, then both loops are short-circuited and all we do\n  // is gradually rename the input until it's called 'geometry'.\n  //\n  // This also aims to allocate as few resources as possible: just a\n  // few numbers and booleans, rather than any temporary arrays as would\n  // be required with the normalization approach.\n  for (i = 0; i < stop; i++) {\n    geometryMaybeCollection = isFeatureCollection\n      ? geojson.features[i].geometry\n      : isFeature\n      ? geojson.geometry\n      : geojson;\n    featureProperties = isFeatureCollection\n      ? geojson.features[i].properties\n      : isFeature\n      ? geojson.properties\n      : {};\n    featureBBox = isFeatureCollection\n      ? geojson.features[i].bbox\n      : isFeature\n      ? geojson.bbox\n      : undefined;\n    featureId = isFeatureCollection\n      ? geojson.features[i].id\n      : isFeature\n      ? geojson.id\n      : undefined;\n    isGeometryCollection = geometryMaybeCollection\n      ? geometryMaybeCollection.type === \"GeometryCollection\"\n      : false;\n    stopG = isGeometryCollection\n      ? geometryMaybeCollection.geometries.length\n      : 1;\n\n    for (g = 0; g < stopG; g++) {\n      geometry = isGeometryCollection\n        ? geometryMaybeCollection.geometries[g]\n        : geometryMaybeCollection;\n\n      // Handle null Geometry\n      if (geometry === null) {\n        if (\n          callback(\n            null,\n            featureIndex,\n            featureProperties,\n            featureBBox,\n            featureId\n          ) === false\n        )\n          return false;\n        continue;\n      }\n      switch (geometry.type) {\n        case \"Point\":\n        case \"LineString\":\n        case \"MultiPoint\":\n        case \"Polygon\":\n        case \"MultiLineString\":\n        case \"MultiPolygon\": {\n          if (\n            callback(\n              geometry,\n              featureIndex,\n              featureProperties,\n              featureBBox,\n              featureId\n            ) === false\n          )\n            return false;\n          break;\n        }\n        case \"GeometryCollection\": {\n          for (j = 0; j < geometry.geometries.length; j++) {\n            if (\n              callback(\n                geometry.geometries[j],\n                featureIndex,\n                featureProperties,\n                featureBBox,\n                featureId\n              ) === false\n            )\n              return false;\n          }\n          break;\n        }\n        default:\n          throw new Error(\"Unknown Geometry Type\");\n      }\n    }\n    // Only increase `featureIndex` per each feature\n    featureIndex++;\n  }\n}\n\n/**\n * Callback for geomReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n *  - The previousValue argument is initialValue.\n *  - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n *  - The previousValue argument is the value of the first element present in the array.\n *  - The currentValue argument is the value of the second element present in the array.\n *\n * @callback geomReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Geometry} currentGeometry The current Geometry being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {Object} featureProperties The current Feature Properties being processed.\n * @param {Array<number>} featureBBox The current Feature BBox being processed.\n * @param {number|string} featureId The current Feature Id being processed.\n */\n\n/**\n * Reduce geometry in any GeoJSON object, similar to Array.reduce().\n *\n * @name geomReduce\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (previousValue, currentGeometry, featureIndex, featureProperties, featureBBox, featureId)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {*} The value that results from the reduction.\n * @example\n * var features = turf.featureCollection([\n *     turf.point([26, 37], {foo: 'bar'}),\n *     turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * turf.geomReduce(features, function (previousValue, currentGeometry, featureIndex, featureProperties, featureBBox, featureId) {\n *   //=previousValue\n *   //=currentGeometry\n *   //=featureIndex\n *   //=featureProperties\n *   //=featureBBox\n *   //=featureId\n *   return currentGeometry\n * });\n */\nfunction geomReduce(geojson, callback, initialValue) {\n  var previousValue = initialValue;\n  geomEach(\n    geojson,\n    function (\n      currentGeometry,\n      featureIndex,\n      featureProperties,\n      featureBBox,\n      featureId\n    ) {\n      if (featureIndex === 0 && initialValue === undefined)\n        previousValue = currentGeometry;\n      else\n        previousValue = callback(\n          previousValue,\n          currentGeometry,\n          featureIndex,\n          featureProperties,\n          featureBBox,\n          featureId\n        );\n    }\n  );\n  return previousValue;\n}\n\n/**\n * Callback for flattenEach\n *\n * @callback flattenEachCallback\n * @param {Feature} currentFeature The current flattened feature being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n */\n\n/**\n * Iterate over flattened features in any GeoJSON object, similar to\n * Array.forEach.\n *\n * @name flattenEach\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (currentFeature, featureIndex, multiFeatureIndex)\n * @example\n * var features = turf.featureCollection([\n *     turf.point([26, 37], {foo: 'bar'}),\n *     turf.multiPoint([[40, 30], [36, 53]], {hello: 'world'})\n * ]);\n *\n * turf.flattenEach(features, function (currentFeature, featureIndex, multiFeatureIndex) {\n *   //=currentFeature\n *   //=featureIndex\n *   //=multiFeatureIndex\n * });\n */\nfunction flattenEach(geojson, callback) {\n  geomEach(geojson, function (geometry, featureIndex, properties, bbox, id) {\n    // Callback for single geometry\n    var type = geometry === null ? null : geometry.type;\n    switch (type) {\n      case null:\n      case \"Point\":\n      case \"LineString\":\n      case \"Polygon\":\n        if (\n          callback(\n            helpers.feature(geometry, properties, { bbox: bbox, id: id }),\n            featureIndex,\n            0\n          ) === false\n        )\n          return false;\n        return;\n    }\n\n    var geomType;\n\n    // Callback for multi-geometry\n    switch (type) {\n      case \"MultiPoint\":\n        geomType = \"Point\";\n        break;\n      case \"MultiLineString\":\n        geomType = \"LineString\";\n        break;\n      case \"MultiPolygon\":\n        geomType = \"Polygon\";\n        break;\n    }\n\n    for (\n      var multiFeatureIndex = 0;\n      multiFeatureIndex < geometry.coordinates.length;\n      multiFeatureIndex++\n    ) {\n      var coordinate = geometry.coordinates[multiFeatureIndex];\n      var geom = {\n        type: geomType,\n        coordinates: coordinate,\n      };\n      if (\n        callback(helpers.feature(geom, properties), featureIndex, multiFeatureIndex) ===\n        false\n      )\n        return false;\n    }\n  });\n}\n\n/**\n * Callback for flattenReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n *  - The previousValue argument is initialValue.\n *  - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n *  - The previousValue argument is the value of the first element present in the array.\n *  - The currentValue argument is the value of the second element present in the array.\n *\n * @callback flattenReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Feature} currentFeature The current Feature being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n */\n\n/**\n * Reduce flattened features in any GeoJSON object, similar to Array.reduce().\n *\n * @name flattenReduce\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (previousValue, currentFeature, featureIndex, multiFeatureIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {*} The value that results from the reduction.\n * @example\n * var features = turf.featureCollection([\n *     turf.point([26, 37], {foo: 'bar'}),\n *     turf.multiPoint([[40, 30], [36, 53]], {hello: 'world'})\n * ]);\n *\n * turf.flattenReduce(features, function (previousValue, currentFeature, featureIndex, multiFeatureIndex) {\n *   //=previousValue\n *   //=currentFeature\n *   //=featureIndex\n *   //=multiFeatureIndex\n *   return currentFeature\n * });\n */\nfunction flattenReduce(geojson, callback, initialValue) {\n  var previousValue = initialValue;\n  flattenEach(\n    geojson,\n    function (currentFeature, featureIndex, multiFeatureIndex) {\n      if (\n        featureIndex === 0 &&\n        multiFeatureIndex === 0 &&\n        initialValue === undefined\n      )\n        previousValue = currentFeature;\n      else\n        previousValue = callback(\n          previousValue,\n          currentFeature,\n          featureIndex,\n          multiFeatureIndex\n        );\n    }\n  );\n  return previousValue;\n}\n\n/**\n * Callback for segmentEach\n *\n * @callback segmentEachCallback\n * @param {Feature<LineString>} currentSegment The current Segment being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n * @param {number} geometryIndex The current index of the Geometry being processed.\n * @param {number} segmentIndex The current index of the Segment being processed.\n * @returns {void}\n */\n\n/**\n * Iterate over 2-vertex line segment in any GeoJSON object, similar to Array.forEach()\n * (Multi)Point geometries do not contain segments therefore they are ignored during this operation.\n *\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON\n * @param {Function} callback a method that takes (currentSegment, featureIndex, multiFeatureIndex, geometryIndex, segmentIndex)\n * @returns {void}\n * @example\n * var polygon = turf.polygon([[[-50, 5], [-40, -10], [-50, -10], [-40, 5], [-50, 5]]]);\n *\n * // Iterate over GeoJSON by 2-vertex segments\n * turf.segmentEach(polygon, function (currentSegment, featureIndex, multiFeatureIndex, geometryIndex, segmentIndex) {\n *   //=currentSegment\n *   //=featureIndex\n *   //=multiFeatureIndex\n *   //=geometryIndex\n *   //=segmentIndex\n * });\n *\n * // Calculate the total number of segments\n * var total = 0;\n * turf.segmentEach(polygon, function () {\n *     total++;\n * });\n */\nfunction segmentEach(geojson, callback) {\n  flattenEach(geojson, function (feature, featureIndex, multiFeatureIndex) {\n    var segmentIndex = 0;\n\n    // Exclude null Geometries\n    if (!feature.geometry) return;\n    // (Multi)Point geometries do not contain segments therefore they are ignored during this operation.\n    var type = feature.geometry.type;\n    if (type === \"Point\" || type === \"MultiPoint\") return;\n\n    // Generate 2-vertex line segments\n    var previousCoords;\n    var previousFeatureIndex = 0;\n    var previousMultiIndex = 0;\n    var prevGeomIndex = 0;\n    if (\n      coordEach(\n        feature,\n        function (\n          currentCoord,\n          coordIndex,\n          featureIndexCoord,\n          multiPartIndexCoord,\n          geometryIndex\n        ) {\n          // Simulating a meta.coordReduce() since `reduce` operations cannot be stopped by returning `false`\n          if (\n            previousCoords === undefined ||\n            featureIndex > previousFeatureIndex ||\n            multiPartIndexCoord > previousMultiIndex ||\n            geometryIndex > prevGeomIndex\n          ) {\n            previousCoords = currentCoord;\n            previousFeatureIndex = featureIndex;\n            previousMultiIndex = multiPartIndexCoord;\n            prevGeomIndex = geometryIndex;\n            segmentIndex = 0;\n            return;\n          }\n          var currentSegment = helpers.lineString(\n            [previousCoords, currentCoord],\n            feature.properties\n          );\n          if (\n            callback(\n              currentSegment,\n              featureIndex,\n              multiFeatureIndex,\n              geometryIndex,\n              segmentIndex\n            ) === false\n          )\n            return false;\n          segmentIndex++;\n          previousCoords = currentCoord;\n        }\n      ) === false\n    )\n      return false;\n  });\n}\n\n/**\n * Callback for segmentReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n *  - The previousValue argument is initialValue.\n *  - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n *  - The previousValue argument is the value of the first element present in the array.\n *  - The currentValue argument is the value of the second element present in the array.\n *\n * @callback segmentReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Feature<LineString>} currentSegment The current Segment being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n * @param {number} geometryIndex The current index of the Geometry being processed.\n * @param {number} segmentIndex The current index of the Segment being processed.\n */\n\n/**\n * Reduce 2-vertex line segment in any GeoJSON object, similar to Array.reduce()\n * (Multi)Point geometries do not contain segments therefore they are ignored during this operation.\n *\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON\n * @param {Function} callback a method that takes (previousValue, currentSegment, currentIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {void}\n * @example\n * var polygon = turf.polygon([[[-50, 5], [-40, -10], [-50, -10], [-40, 5], [-50, 5]]]);\n *\n * // Iterate over GeoJSON by 2-vertex segments\n * turf.segmentReduce(polygon, function (previousSegment, currentSegment, featureIndex, multiFeatureIndex, geometryIndex, segmentIndex) {\n *   //= previousSegment\n *   //= currentSegment\n *   //= featureIndex\n *   //= multiFeatureIndex\n *   //= geometryIndex\n *   //= segmentIndex\n *   return currentSegment\n * });\n *\n * // Calculate the total number of segments\n * var initialValue = 0\n * var total = turf.segmentReduce(polygon, function (previousValue) {\n *     previousValue++;\n *     return previousValue;\n * }, initialValue);\n */\nfunction segmentReduce(geojson, callback, initialValue) {\n  var previousValue = initialValue;\n  var started = false;\n  segmentEach(\n    geojson,\n    function (\n      currentSegment,\n      featureIndex,\n      multiFeatureIndex,\n      geometryIndex,\n      segmentIndex\n    ) {\n      if (started === false && initialValue === undefined)\n        previousValue = currentSegment;\n      else\n        previousValue = callback(\n          previousValue,\n          currentSegment,\n          featureIndex,\n          multiFeatureIndex,\n          geometryIndex,\n          segmentIndex\n        );\n      started = true;\n    }\n  );\n  return previousValue;\n}\n\n/**\n * Callback for lineEach\n *\n * @callback lineEachCallback\n * @param {Feature<LineString>} currentLine The current LineString|LinearRing being processed\n * @param {number} featureIndex The current index of the Feature being processed\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed\n * @param {number} geometryIndex The current index of the Geometry being processed\n */\n\n/**\n * Iterate over line or ring coordinates in LineString, Polygon, MultiLineString, MultiPolygon Features or Geometries,\n * similar to Array.forEach.\n *\n * @name lineEach\n * @param {Geometry|Feature<LineString|Polygon|MultiLineString|MultiPolygon>} geojson object\n * @param {Function} callback a method that takes (currentLine, featureIndex, multiFeatureIndex, geometryIndex)\n * @example\n * var multiLine = turf.multiLineString([\n *   [[26, 37], [35, 45]],\n *   [[36, 53], [38, 50], [41, 55]]\n * ]);\n *\n * turf.lineEach(multiLine, function (currentLine, featureIndex, multiFeatureIndex, geometryIndex) {\n *   //=currentLine\n *   //=featureIndex\n *   //=multiFeatureIndex\n *   //=geometryIndex\n * });\n */\nfunction lineEach(geojson, callback) {\n  // validation\n  if (!geojson) throw new Error(\"geojson is required\");\n\n  flattenEach(geojson, function (feature, featureIndex, multiFeatureIndex) {\n    if (feature.geometry === null) return;\n    var type = feature.geometry.type;\n    var coords = feature.geometry.coordinates;\n    switch (type) {\n      case \"LineString\":\n        if (callback(feature, featureIndex, multiFeatureIndex, 0, 0) === false)\n          return false;\n        break;\n      case \"Polygon\":\n        for (\n          var geometryIndex = 0;\n          geometryIndex < coords.length;\n          geometryIndex++\n        ) {\n          if (\n            callback(\n              helpers.lineString(coords[geometryIndex], feature.properties),\n              featureIndex,\n              multiFeatureIndex,\n              geometryIndex\n            ) === false\n          )\n            return false;\n        }\n        break;\n    }\n  });\n}\n\n/**\n * Callback for lineReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n *  - The previousValue argument is initialValue.\n *  - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n *  - The previousValue argument is the value of the first element present in the array.\n *  - The currentValue argument is the value of the second element present in the array.\n *\n * @callback lineReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Feature<LineString>} currentLine The current LineString|LinearRing being processed.\n * @param {number} featureIndex The current index of the Feature being processed\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed\n * @param {number} geometryIndex The current index of the Geometry being processed\n */\n\n/**\n * Reduce features in any GeoJSON object, similar to Array.reduce().\n *\n * @name lineReduce\n * @param {Geometry|Feature<LineString|Polygon|MultiLineString|MultiPolygon>} geojson object\n * @param {Function} callback a method that takes (previousValue, currentLine, featureIndex, multiFeatureIndex, geometryIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {*} The value that results from the reduction.\n * @example\n * var multiPoly = turf.multiPolygon([\n *   turf.polygon([[[12,48],[2,41],[24,38],[12,48]], [[9,44],[13,41],[13,45],[9,44]]]),\n *   turf.polygon([[[5, 5], [0, 0], [2, 2], [4, 4], [5, 5]]])\n * ]);\n *\n * turf.lineReduce(multiPoly, function (previousValue, currentLine, featureIndex, multiFeatureIndex, geometryIndex) {\n *   //=previousValue\n *   //=currentLine\n *   //=featureIndex\n *   //=multiFeatureIndex\n *   //=geometryIndex\n *   return currentLine\n * });\n */\nfunction lineReduce(geojson, callback, initialValue) {\n  var previousValue = initialValue;\n  lineEach(\n    geojson,\n    function (currentLine, featureIndex, multiFeatureIndex, geometryIndex) {\n      if (featureIndex === 0 && initialValue === undefined)\n        previousValue = currentLine;\n      else\n        previousValue = callback(\n          previousValue,\n          currentLine,\n          featureIndex,\n          multiFeatureIndex,\n          geometryIndex\n        );\n    }\n  );\n  return previousValue;\n}\n\n/**\n * Finds a particular 2-vertex LineString Segment from a GeoJSON using `@turf/meta` indexes.\n *\n * Negative indexes are permitted.\n * Point & MultiPoint will always return null.\n *\n * @param {FeatureCollection|Feature|Geometry} geojson Any GeoJSON Feature or Geometry\n * @param {Object} [options={}] Optional parameters\n * @param {number} [options.featureIndex=0] Feature Index\n * @param {number} [options.multiFeatureIndex=0] Multi-Feature Index\n * @param {number} [options.geometryIndex=0] Geometry Index\n * @param {number} [options.segmentIndex=0] Segment Index\n * @param {Object} [options.properties={}] Translate Properties to output LineString\n * @param {BBox} [options.bbox={}] Translate BBox to output LineString\n * @param {number|string} [options.id={}] Translate Id to output LineString\n * @returns {Feature<LineString>} 2-vertex GeoJSON Feature LineString\n * @example\n * var multiLine = turf.multiLineString([\n *     [[10, 10], [50, 30], [30, 40]],\n *     [[-10, -10], [-50, -30], [-30, -40]]\n * ]);\n *\n * // First Segment (defaults are 0)\n * turf.findSegment(multiLine);\n * // => Feature<LineString<[[10, 10], [50, 30]]>>\n *\n * // First Segment of 2nd Multi Feature\n * turf.findSegment(multiLine, {multiFeatureIndex: 1});\n * // => Feature<LineString<[[-10, -10], [-50, -30]]>>\n *\n * // Last Segment of Last Multi Feature\n * turf.findSegment(multiLine, {multiFeatureIndex: -1, segmentIndex: -1});\n * // => Feature<LineString<[[-50, -30], [-30, -40]]>>\n */\nfunction findSegment(geojson, options) {\n  // Optional Parameters\n  options = options || {};\n  if (!helpers.isObject(options)) throw new Error(\"options is invalid\");\n  var featureIndex = options.featureIndex || 0;\n  var multiFeatureIndex = options.multiFeatureIndex || 0;\n  var geometryIndex = options.geometryIndex || 0;\n  var segmentIndex = options.segmentIndex || 0;\n\n  // Find FeatureIndex\n  var properties = options.properties;\n  var geometry;\n\n  switch (geojson.type) {\n    case \"FeatureCollection\":\n      if (featureIndex < 0)\n        featureIndex = geojson.features.length + featureIndex;\n      properties = properties || geojson.features[featureIndex].properties;\n      geometry = geojson.features[featureIndex].geometry;\n      break;\n    case \"Feature\":\n      properties = properties || geojson.properties;\n      geometry = geojson.geometry;\n      break;\n    case \"Point\":\n    case \"MultiPoint\":\n      return null;\n    case \"LineString\":\n    case \"Polygon\":\n    case \"MultiLineString\":\n    case \"MultiPolygon\":\n      geometry = geojson;\n      break;\n    default:\n      throw new Error(\"geojson is invalid\");\n  }\n\n  // Find SegmentIndex\n  if (geometry === null) return null;\n  var coords = geometry.coordinates;\n  switch (geometry.type) {\n    case \"Point\":\n    case \"MultiPoint\":\n      return null;\n    case \"LineString\":\n      if (segmentIndex < 0) segmentIndex = coords.length + segmentIndex - 1;\n      return helpers.lineString(\n        [coords[segmentIndex], coords[segmentIndex + 1]],\n        properties,\n        options\n      );\n    case \"Polygon\":\n      if (geometryIndex < 0) geometryIndex = coords.length + geometryIndex;\n      if (segmentIndex < 0)\n        segmentIndex = coords[geometryIndex].length + segmentIndex - 1;\n      return helpers.lineString(\n        [\n          coords[geometryIndex][segmentIndex],\n          coords[geometryIndex][segmentIndex + 1],\n        ],\n        properties,\n        options\n      );\n    case \"MultiLineString\":\n      if (multiFeatureIndex < 0)\n        multiFeatureIndex = coords.length + multiFeatureIndex;\n      if (segmentIndex < 0)\n        segmentIndex = coords[multiFeatureIndex].length + segmentIndex - 1;\n      return helpers.lineString(\n        [\n          coords[multiFeatureIndex][segmentIndex],\n          coords[multiFeatureIndex][segmentIndex + 1],\n        ],\n        properties,\n        options\n      );\n    case \"MultiPolygon\":\n      if (multiFeatureIndex < 0)\n        multiFeatureIndex = coords.length + multiFeatureIndex;\n      if (geometryIndex < 0)\n        geometryIndex = coords[multiFeatureIndex].length + geometryIndex;\n      if (segmentIndex < 0)\n        segmentIndex =\n          coords[multiFeatureIndex][geometryIndex].length - segmentIndex - 1;\n      return helpers.lineString(\n        [\n          coords[multiFeatureIndex][geometryIndex][segmentIndex],\n          coords[multiFeatureIndex][geometryIndex][segmentIndex + 1],\n        ],\n        properties,\n        options\n      );\n  }\n  throw new Error(\"geojson is invalid\");\n}\n\n/**\n * Finds a particular Point from a GeoJSON using `@turf/meta` indexes.\n *\n * Negative indexes are permitted.\n *\n * @param {FeatureCollection|Feature|Geometry} geojson Any GeoJSON Feature or Geometry\n * @param {Object} [options={}] Optional parameters\n * @param {number} [options.featureIndex=0] Feature Index\n * @param {number} [options.multiFeatureIndex=0] Multi-Feature Index\n * @param {number} [options.geometryIndex=0] Geometry Index\n * @param {number} [options.coordIndex=0] Coord Index\n * @param {Object} [options.properties={}] Translate Properties to output Point\n * @param {BBox} [options.bbox={}] Translate BBox to output Point\n * @param {number|string} [options.id={}] Translate Id to output Point\n * @returns {Feature<Point>} 2-vertex GeoJSON Feature Point\n * @example\n * var multiLine = turf.multiLineString([\n *     [[10, 10], [50, 30], [30, 40]],\n *     [[-10, -10], [-50, -30], [-30, -40]]\n * ]);\n *\n * // First Segment (defaults are 0)\n * turf.findPoint(multiLine);\n * // => Feature<Point<[10, 10]>>\n *\n * // First Segment of the 2nd Multi-Feature\n * turf.findPoint(multiLine, {multiFeatureIndex: 1});\n * // => Feature<Point<[-10, -10]>>\n *\n * // Last Segment of last Multi-Feature\n * turf.findPoint(multiLine, {multiFeatureIndex: -1, coordIndex: -1});\n * // => Feature<Point<[-30, -40]>>\n */\nfunction findPoint(geojson, options) {\n  // Optional Parameters\n  options = options || {};\n  if (!helpers.isObject(options)) throw new Error(\"options is invalid\");\n  var featureIndex = options.featureIndex || 0;\n  var multiFeatureIndex = options.multiFeatureIndex || 0;\n  var geometryIndex = options.geometryIndex || 0;\n  var coordIndex = options.coordIndex || 0;\n\n  // Find FeatureIndex\n  var properties = options.properties;\n  var geometry;\n\n  switch (geojson.type) {\n    case \"FeatureCollection\":\n      if (featureIndex < 0)\n        featureIndex = geojson.features.length + featureIndex;\n      properties = properties || geojson.features[featureIndex].properties;\n      geometry = geojson.features[featureIndex].geometry;\n      break;\n    case \"Feature\":\n      properties = properties || geojson.properties;\n      geometry = geojson.geometry;\n      break;\n    case \"Point\":\n    case \"MultiPoint\":\n      return null;\n    case \"LineString\":\n    case \"Polygon\":\n    case \"MultiLineString\":\n    case \"MultiPolygon\":\n      geometry = geojson;\n      break;\n    default:\n      throw new Error(\"geojson is invalid\");\n  }\n\n  // Find Coord Index\n  if (geometry === null) return null;\n  var coords = geometry.coordinates;\n  switch (geometry.type) {\n    case \"Point\":\n      return helpers.point(coords, properties, options);\n    case \"MultiPoint\":\n      if (multiFeatureIndex < 0)\n        multiFeatureIndex = coords.length + multiFeatureIndex;\n      return helpers.point(coords[multiFeatureIndex], properties, options);\n    case \"LineString\":\n      if (coordIndex < 0) coordIndex = coords.length + coordIndex;\n      return helpers.point(coords[coordIndex], properties, options);\n    case \"Polygon\":\n      if (geometryIndex < 0) geometryIndex = coords.length + geometryIndex;\n      if (coordIndex < 0)\n        coordIndex = coords[geometryIndex].length + coordIndex;\n      return helpers.point(coords[geometryIndex][coordIndex], properties, options);\n    case \"MultiLineString\":\n      if (multiFeatureIndex < 0)\n        multiFeatureIndex = coords.length + multiFeatureIndex;\n      if (coordIndex < 0)\n        coordIndex = coords[multiFeatureIndex].length + coordIndex;\n      return helpers.point(coords[multiFeatureIndex][coordIndex], properties, options);\n    case \"MultiPolygon\":\n      if (multiFeatureIndex < 0)\n        multiFeatureIndex = coords.length + multiFeatureIndex;\n      if (geometryIndex < 0)\n        geometryIndex = coords[multiFeatureIndex].length + geometryIndex;\n      if (coordIndex < 0)\n        coordIndex =\n          coords[multiFeatureIndex][geometryIndex].length - coordIndex;\n      return helpers.point(\n        coords[multiFeatureIndex][geometryIndex][coordIndex],\n        properties,\n        options\n      );\n  }\n  throw new Error(\"geojson is invalid\");\n}\n\nexports.coordAll = coordAll;\nexports.coordEach = coordEach;\nexports.coordReduce = coordReduce;\nexports.featureEach = featureEach;\nexports.featureReduce = featureReduce;\nexports.findPoint = findPoint;\nexports.findSegment = findSegment;\nexports.flattenEach = flattenEach;\nexports.flattenReduce = flattenReduce;\nexports.geomEach = geomEach;\nexports.geomReduce = geomReduce;\nexports.lineEach = lineEach;\nexports.lineReduce = lineReduce;\nexports.propEach = propEach;\nexports.propReduce = propReduce;\nexports.segmentEach = segmentEach;\nexports.segmentReduce = segmentReduce;\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n    return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar bbox_1 = __importDefault(require(\"@turf/bbox\"));\nvar helpers_1 = require(\"@turf/helpers\");\n/**\n * Takes a {@link Feature} or {@link FeatureCollection} and returns the absolute center point of all features.\n *\n * @name center\n * @param {GeoJSON} geojson GeoJSON to be centered\n * @param {Object} [options={}] Optional parameters\n * @param {Object} [options.properties={}] Translate GeoJSON Properties to Point\n * @param {Object} [options.bbox={}] Translate GeoJSON BBox to Point\n * @param {Object} [options.id={}] Translate GeoJSON Id to Point\n * @returns {Feature<Point>} a Point feature at the absolute center point of all input features\n * @example\n * var features = turf.points([\n *   [-97.522259, 35.4691],\n *   [-97.502754, 35.463455],\n *   [-97.508269, 35.463245]\n * ]);\n *\n * var center = turf.center(features);\n *\n * //addToMap\n * var addToMap = [features, center]\n * center.properties['marker-size'] = 'large';\n * center.properties['marker-color'] = '#000';\n */\nfunction center(geojson, options) {\n    if (options === void 0) { options = {}; }\n    var ext = bbox_1.default(geojson);\n    var x = (ext[0] + ext[2]) / 2;\n    var y = (ext[1] + ext[3]) / 2;\n    return helpers_1.point([x, y], options.properties, options);\n}\nexports.default = center;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * @module helpers\n */\n/**\n * Earth Radius used with the Harvesine formula and approximates using a spherical (non-ellipsoid) Earth.\n *\n * @memberof helpers\n * @type {number}\n */\nexports.earthRadius = 6371008.8;\n/**\n * Unit of measurement factors using a spherical (non-ellipsoid) earth radius.\n *\n * @memberof helpers\n * @type {Object}\n */\nexports.factors = {\n    centimeters: exports.earthRadius * 100,\n    centimetres: exports.earthRadius * 100,\n    degrees: exports.earthRadius / 111325,\n    feet: exports.earthRadius * 3.28084,\n    inches: exports.earthRadius * 39.37,\n    kilometers: exports.earthRadius / 1000,\n    kilometres: exports.earthRadius / 1000,\n    meters: exports.earthRadius,\n    metres: exports.earthRadius,\n    miles: exports.earthRadius / 1609.344,\n    millimeters: exports.earthRadius * 1000,\n    millimetres: exports.earthRadius * 1000,\n    nauticalmiles: exports.earthRadius / 1852,\n    radians: 1,\n    yards: exports.earthRadius * 1.0936,\n};\n/**\n * Units of measurement factors based on 1 meter.\n *\n * @memberof helpers\n * @type {Object}\n */\nexports.unitsFactors = {\n    centimeters: 100,\n    centimetres: 100,\n    degrees: 1 / 111325,\n    feet: 3.28084,\n    inches: 39.37,\n    kilometers: 1 / 1000,\n    kilometres: 1 / 1000,\n    meters: 1,\n    metres: 1,\n    miles: 1 / 1609.344,\n    millimeters: 1000,\n    millimetres: 1000,\n    nauticalmiles: 1 / 1852,\n    radians: 1 / exports.earthRadius,\n    yards: 1.0936133,\n};\n/**\n * Area of measurement factors based on 1 square meter.\n *\n * @memberof helpers\n * @type {Object}\n */\nexports.areaFactors = {\n    acres: 0.000247105,\n    centimeters: 10000,\n    centimetres: 10000,\n    feet: 10.763910417,\n    hectares: 0.0001,\n    inches: 1550.003100006,\n    kilometers: 0.000001,\n    kilometres: 0.000001,\n    meters: 1,\n    metres: 1,\n    miles: 3.86e-7,\n    millimeters: 1000000,\n    millimetres: 1000000,\n    yards: 1.195990046,\n};\n/**\n * Wraps a GeoJSON {@link Geometry} in a GeoJSON {@link Feature}.\n *\n * @name feature\n * @param {Geometry} geometry input geometry\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} a GeoJSON Feature\n * @example\n * var geometry = {\n *   \"type\": \"Point\",\n *   \"coordinates\": [110, 50]\n * };\n *\n * var feature = turf.feature(geometry);\n *\n * //=feature\n */\nfunction feature(geom, properties, options) {\n    if (options === void 0) { options = {}; }\n    var feat = { type: \"Feature\" };\n    if (options.id === 0 || options.id) {\n        feat.id = options.id;\n    }\n    if (options.bbox) {\n        feat.bbox = options.bbox;\n    }\n    feat.properties = properties || {};\n    feat.geometry = geom;\n    return feat;\n}\nexports.feature = feature;\n/**\n * Creates a GeoJSON {@link Geometry} from a Geometry string type & coordinates.\n * For GeometryCollection type use `helpers.geometryCollection`\n *\n * @name geometry\n * @param {string} type Geometry Type\n * @param {Array<any>} coordinates Coordinates\n * @param {Object} [options={}] Optional Parameters\n * @returns {Geometry} a GeoJSON Geometry\n * @example\n * var type = \"Point\";\n * var coordinates = [110, 50];\n * var geometry = turf.geometry(type, coordinates);\n * // => geometry\n */\nfunction geometry(type, coordinates, _options) {\n    if (_options === void 0) { _options = {}; }\n    switch (type) {\n        case \"Point\":\n            return point(coordinates).geometry;\n        case \"LineString\":\n            return lineString(coordinates).geometry;\n        case \"Polygon\":\n            return polygon(coordinates).geometry;\n        case \"MultiPoint\":\n            return multiPoint(coordinates).geometry;\n        case \"MultiLineString\":\n            return multiLineString(coordinates).geometry;\n        case \"MultiPolygon\":\n            return multiPolygon(coordinates).geometry;\n        default:\n            throw new Error(type + \" is invalid\");\n    }\n}\nexports.geometry = geometry;\n/**\n * Creates a {@link Point} {@link Feature} from a Position.\n *\n * @name point\n * @param {Array<number>} coordinates longitude, latitude position (each in decimal degrees)\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<Point>} a Point feature\n * @example\n * var point = turf.point([-75.343, 39.984]);\n *\n * //=point\n */\nfunction point(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    if (!coordinates) {\n        throw new Error(\"coordinates is required\");\n    }\n    if (!Array.isArray(coordinates)) {\n        throw new Error(\"coordinates must be an Array\");\n    }\n    if (coordinates.length < 2) {\n        throw new Error(\"coordinates must be at least 2 numbers long\");\n    }\n    if (!isNumber(coordinates[0]) || !isNumber(coordinates[1])) {\n        throw new Error(\"coordinates must contain numbers\");\n    }\n    var geom = {\n        type: \"Point\",\n        coordinates: coordinates,\n    };\n    return feature(geom, properties, options);\n}\nexports.point = point;\n/**\n * Creates a {@link Point} {@link FeatureCollection} from an Array of Point coordinates.\n *\n * @name points\n * @param {Array<Array<number>>} coordinates an array of Points\n * @param {Object} [properties={}] Translate these properties to each Feature\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north]\n * associated with the FeatureCollection\n * @param {string|number} [options.id] Identifier associated with the FeatureCollection\n * @returns {FeatureCollection<Point>} Point Feature\n * @example\n * var points = turf.points([\n *   [-75, 39],\n *   [-80, 45],\n *   [-78, 50]\n * ]);\n *\n * //=points\n */\nfunction points(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    return featureCollection(coordinates.map(function (coords) {\n        return point(coords, properties);\n    }), options);\n}\nexports.points = points;\n/**\n * Creates a {@link Polygon} {@link Feature} from an Array of LinearRings.\n *\n * @name polygon\n * @param {Array<Array<Array<number>>>} coordinates an array of LinearRings\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<Polygon>} Polygon Feature\n * @example\n * var polygon = turf.polygon([[[-5, 52], [-4, 56], [-2, 51], [-7, 54], [-5, 52]]], { name: 'poly1' });\n *\n * //=polygon\n */\nfunction polygon(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    for (var _i = 0, coordinates_1 = coordinates; _i < coordinates_1.length; _i++) {\n        var ring = coordinates_1[_i];\n        if (ring.length < 4) {\n            throw new Error(\"Each LinearRing of a Polygon must have 4 or more Positions.\");\n        }\n        for (var j = 0; j < ring[ring.length - 1].length; j++) {\n            // Check if first point of Polygon contains two numbers\n            if (ring[ring.length - 1][j] !== ring[0][j]) {\n                throw new Error(\"First and last Position are not equivalent.\");\n            }\n        }\n    }\n    var geom = {\n        type: \"Polygon\",\n        coordinates: coordinates,\n    };\n    return feature(geom, properties, options);\n}\nexports.polygon = polygon;\n/**\n * Creates a {@link Polygon} {@link FeatureCollection} from an Array of Polygon coordinates.\n *\n * @name polygons\n * @param {Array<Array<Array<Array<number>>>>} coordinates an array of Polygon coordinates\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the FeatureCollection\n * @returns {FeatureCollection<Polygon>} Polygon FeatureCollection\n * @example\n * var polygons = turf.polygons([\n *   [[[-5, 52], [-4, 56], [-2, 51], [-7, 54], [-5, 52]]],\n *   [[[-15, 42], [-14, 46], [-12, 41], [-17, 44], [-15, 42]]],\n * ]);\n *\n * //=polygons\n */\nfunction polygons(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    return featureCollection(coordinates.map(function (coords) {\n        return polygon(coords, properties);\n    }), options);\n}\nexports.polygons = polygons;\n/**\n * Creates a {@link LineString} {@link Feature} from an Array of Positions.\n *\n * @name lineString\n * @param {Array<Array<number>>} coordinates an array of Positions\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<LineString>} LineString Feature\n * @example\n * var linestring1 = turf.lineString([[-24, 63], [-23, 60], [-25, 65], [-20, 69]], {name: 'line 1'});\n * var linestring2 = turf.lineString([[-14, 43], [-13, 40], [-15, 45], [-10, 49]], {name: 'line 2'});\n *\n * //=linestring1\n * //=linestring2\n */\nfunction lineString(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    if (coordinates.length < 2) {\n        throw new Error(\"coordinates must be an array of two or more positions\");\n    }\n    var geom = {\n        type: \"LineString\",\n        coordinates: coordinates,\n    };\n    return feature(geom, properties, options);\n}\nexports.lineString = lineString;\n/**\n * Creates a {@link LineString} {@link FeatureCollection} from an Array of LineString coordinates.\n *\n * @name lineStrings\n * @param {Array<Array<Array<number>>>} coordinates an array of LinearRings\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north]\n * associated with the FeatureCollection\n * @param {string|number} [options.id] Identifier associated with the FeatureCollection\n * @returns {FeatureCollection<LineString>} LineString FeatureCollection\n * @example\n * var linestrings = turf.lineStrings([\n *   [[-24, 63], [-23, 60], [-25, 65], [-20, 69]],\n *   [[-14, 43], [-13, 40], [-15, 45], [-10, 49]]\n * ]);\n *\n * //=linestrings\n */\nfunction lineStrings(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    return featureCollection(coordinates.map(function (coords) {\n        return lineString(coords, properties);\n    }), options);\n}\nexports.lineStrings = lineStrings;\n/**\n * Takes one or more {@link Feature|Features} and creates a {@link FeatureCollection}.\n *\n * @name featureCollection\n * @param {Feature[]} features input features\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {FeatureCollection} FeatureCollection of Features\n * @example\n * var locationA = turf.point([-75.343, 39.984], {name: 'Location A'});\n * var locationB = turf.point([-75.833, 39.284], {name: 'Location B'});\n * var locationC = turf.point([-75.534, 39.123], {name: 'Location C'});\n *\n * var collection = turf.featureCollection([\n *   locationA,\n *   locationB,\n *   locationC\n * ]);\n *\n * //=collection\n */\nfunction featureCollection(features, options) {\n    if (options === void 0) { options = {}; }\n    var fc = { type: \"FeatureCollection\" };\n    if (options.id) {\n        fc.id = options.id;\n    }\n    if (options.bbox) {\n        fc.bbox = options.bbox;\n    }\n    fc.features = features;\n    return fc;\n}\nexports.featureCollection = featureCollection;\n/**\n * Creates a {@link Feature<MultiLineString>} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name multiLineString\n * @param {Array<Array<Array<number>>>} coordinates an array of LineStrings\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<MultiLineString>} a MultiLineString feature\n * @throws {Error} if no coordinates are passed\n * @example\n * var multiLine = turf.multiLineString([[[0,0],[10,10]]]);\n *\n * //=multiLine\n */\nfunction multiLineString(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    var geom = {\n        type: \"MultiLineString\",\n        coordinates: coordinates,\n    };\n    return feature(geom, properties, options);\n}\nexports.multiLineString = multiLineString;\n/**\n * Creates a {@link Feature<MultiPoint>} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name multiPoint\n * @param {Array<Array<number>>} coordinates an array of Positions\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<MultiPoint>} a MultiPoint feature\n * @throws {Error} if no coordinates are passed\n * @example\n * var multiPt = turf.multiPoint([[0,0],[10,10]]);\n *\n * //=multiPt\n */\nfunction multiPoint(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    var geom = {\n        type: \"MultiPoint\",\n        coordinates: coordinates,\n    };\n    return feature(geom, properties, options);\n}\nexports.multiPoint = multiPoint;\n/**\n * Creates a {@link Feature<MultiPolygon>} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name multiPolygon\n * @param {Array<Array<Array<Array<number>>>>} coordinates an array of Polygons\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<MultiPolygon>} a multipolygon feature\n * @throws {Error} if no coordinates are passed\n * @example\n * var multiPoly = turf.multiPolygon([[[[0,0],[0,10],[10,10],[10,0],[0,0]]]]);\n *\n * //=multiPoly\n *\n */\nfunction multiPolygon(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    var geom = {\n        type: \"MultiPolygon\",\n        coordinates: coordinates,\n    };\n    return feature(geom, properties, options);\n}\nexports.multiPolygon = multiPolygon;\n/**\n * Creates a {@link Feature<GeometryCollection>} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name geometryCollection\n * @param {Array<Geometry>} geometries an array of GeoJSON Geometries\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<GeometryCollection>} a GeoJSON GeometryCollection Feature\n * @example\n * var pt = turf.geometry(\"Point\", [100, 0]);\n * var line = turf.geometry(\"LineString\", [[101, 0], [102, 1]]);\n * var collection = turf.geometryCollection([pt, line]);\n *\n * // => collection\n */\nfunction geometryCollection(geometries, properties, options) {\n    if (options === void 0) { options = {}; }\n    var geom = {\n        type: \"GeometryCollection\",\n        geometries: geometries,\n    };\n    return feature(geom, properties, options);\n}\nexports.geometryCollection = geometryCollection;\n/**\n * Round number to precision\n *\n * @param {number} num Number\n * @param {number} [precision=0] Precision\n * @returns {number} rounded number\n * @example\n * turf.round(120.4321)\n * //=120\n *\n * turf.round(120.4321, 2)\n * //=120.43\n */\nfunction round(num, precision) {\n    if (precision === void 0) { precision = 0; }\n    if (precision && !(precision >= 0)) {\n        throw new Error(\"precision must be a positive number\");\n    }\n    var multiplier = Math.pow(10, precision || 0);\n    return Math.round(num * multiplier) / multiplier;\n}\nexports.round = round;\n/**\n * Convert a distance measurement (assuming a spherical Earth) from radians to a more friendly unit.\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet\n *\n * @name radiansToLength\n * @param {number} radians in radians across the sphere\n * @param {string} [units=\"kilometers\"] can be degrees, radians, miles, inches, yards, metres,\n * meters, kilometres, kilometers.\n * @returns {number} distance\n */\nfunction radiansToLength(radians, units) {\n    if (units === void 0) { units = \"kilometers\"; }\n    var factor = exports.factors[units];\n    if (!factor) {\n        throw new Error(units + \" units is invalid\");\n    }\n    return radians * factor;\n}\nexports.radiansToLength = radiansToLength;\n/**\n * Convert a distance measurement (assuming a spherical Earth) from a real-world unit into radians\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet\n *\n * @name lengthToRadians\n * @param {number} distance in real units\n * @param {string} [units=\"kilometers\"] can be degrees, radians, miles, inches, yards, metres,\n * meters, kilometres, kilometers.\n * @returns {number} radians\n */\nfunction lengthToRadians(distance, units) {\n    if (units === void 0) { units = \"kilometers\"; }\n    var factor = exports.factors[units];\n    if (!factor) {\n        throw new Error(units + \" units is invalid\");\n    }\n    return distance / factor;\n}\nexports.lengthToRadians = lengthToRadians;\n/**\n * Convert a distance measurement (assuming a spherical Earth) from a real-world unit into degrees\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, centimeters, kilometres, feet\n *\n * @name lengthToDegrees\n * @param {number} distance in real units\n * @param {string} [units=\"kilometers\"] can be degrees, radians, miles, inches, yards, metres,\n * meters, kilometres, kilometers.\n * @returns {number} degrees\n */\nfunction lengthToDegrees(distance, units) {\n    return radiansToDegrees(lengthToRadians(distance, units));\n}\nexports.lengthToDegrees = lengthToDegrees;\n/**\n * Converts any bearing angle from the north line direction (positive clockwise)\n * and returns an angle between 0-360 degrees (positive clockwise), 0 being the north line\n *\n * @name bearingToAzimuth\n * @param {number} bearing angle, between -180 and +180 degrees\n * @returns {number} angle between 0 and 360 degrees\n */\nfunction bearingToAzimuth(bearing) {\n    var angle = bearing % 360;\n    if (angle < 0) {\n        angle += 360;\n    }\n    return angle;\n}\nexports.bearingToAzimuth = bearingToAzimuth;\n/**\n * Converts an angle in radians to degrees\n *\n * @name radiansToDegrees\n * @param {number} radians angle in radians\n * @returns {number} degrees between 0 and 360 degrees\n */\nfunction radiansToDegrees(radians) {\n    var degrees = radians % (2 * Math.PI);\n    return (degrees * 180) / Math.PI;\n}\nexports.radiansToDegrees = radiansToDegrees;\n/**\n * Converts an angle in degrees to radians\n *\n * @name degreesToRadians\n * @param {number} degrees angle between 0 and 360 degrees\n * @returns {number} angle in radians\n */\nfunction degreesToRadians(degrees) {\n    var radians = degrees % 360;\n    return (radians * Math.PI) / 180;\n}\nexports.degreesToRadians = degreesToRadians;\n/**\n * Converts a length to the requested unit.\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet\n *\n * @param {number} length to be converted\n * @param {Units} [originalUnit=\"kilometers\"] of the length\n * @param {Units} [finalUnit=\"kilometers\"] returned unit\n * @returns {number} the converted length\n */\nfunction convertLength(length, originalUnit, finalUnit) {\n    if (originalUnit === void 0) { originalUnit = \"kilometers\"; }\n    if (finalUnit === void 0) { finalUnit = \"kilometers\"; }\n    if (!(length >= 0)) {\n        throw new Error(\"length must be a positive number\");\n    }\n    return radiansToLength(lengthToRadians(length, originalUnit), finalUnit);\n}\nexports.convertLength = convertLength;\n/**\n * Converts a area to the requested unit.\n * Valid units: kilometers, kilometres, meters, metres, centimetres, millimeters, acres, miles, yards, feet, inches, hectares\n * @param {number} area to be converted\n * @param {Units} [originalUnit=\"meters\"] of the distance\n * @param {Units} [finalUnit=\"kilometers\"] returned unit\n * @returns {number} the converted area\n */\nfunction convertArea(area, originalUnit, finalUnit) {\n    if (originalUnit === void 0) { originalUnit = \"meters\"; }\n    if (finalUnit === void 0) { finalUnit = \"kilometers\"; }\n    if (!(area >= 0)) {\n        throw new Error(\"area must be a positive number\");\n    }\n    var startFactor = exports.areaFactors[originalUnit];\n    if (!startFactor) {\n        throw new Error(\"invalid original units\");\n    }\n    var finalFactor = exports.areaFactors[finalUnit];\n    if (!finalFactor) {\n        throw new Error(\"invalid final units\");\n    }\n    return (area / startFactor) * finalFactor;\n}\nexports.convertArea = convertArea;\n/**\n * isNumber\n *\n * @param {*} num Number to validate\n * @returns {boolean} true/false\n * @example\n * turf.isNumber(123)\n * //=true\n * turf.isNumber('foo')\n * //=false\n */\nfunction isNumber(num) {\n    return !isNaN(num) && num !== null && !Array.isArray(num);\n}\nexports.isNumber = isNumber;\n/**\n * isObject\n *\n * @param {*} input variable to validate\n * @returns {boolean} true/false\n * @example\n * turf.isObject({elevation: 10})\n * //=true\n * turf.isObject('foo')\n * //=false\n */\nfunction isObject(input) {\n    return !!input && input.constructor === Object;\n}\nexports.isObject = isObject;\n/**\n * Validate BBox\n *\n * @private\n * @param {Array<number>} bbox BBox to validate\n * @returns {void}\n * @throws Error if BBox is not valid\n * @example\n * validateBBox([-180, -40, 110, 50])\n * //=OK\n * validateBBox([-180, -40])\n * //=Error\n * validateBBox('Foo')\n * //=Error\n * validateBBox(5)\n * //=Error\n * validateBBox(null)\n * //=Error\n * validateBBox(undefined)\n * //=Error\n */\nfunction validateBBox(bbox) {\n    if (!bbox) {\n        throw new Error(\"bbox is required\");\n    }\n    if (!Array.isArray(bbox)) {\n        throw new Error(\"bbox must be an Array\");\n    }\n    if (bbox.length !== 4 && bbox.length !== 6) {\n        throw new Error(\"bbox must be an Array of 4 or 6 numbers\");\n    }\n    bbox.forEach(function (num) {\n        if (!isNumber(num)) {\n            throw new Error(\"bbox must only contain numbers\");\n        }\n    });\n}\nexports.validateBBox = validateBBox;\n/**\n * Validate Id\n *\n * @private\n * @param {string|number} id Id to validate\n * @returns {void}\n * @throws Error if Id is not valid\n * @example\n * validateId([-180, -40, 110, 50])\n * //=Error\n * validateId([-180, -40])\n * //=Error\n * validateId('Foo')\n * //=OK\n * validateId(5)\n * //=OK\n * validateId(null)\n * //=Error\n * validateId(undefined)\n * //=Error\n */\nfunction validateId(id) {\n    if (!id) {\n        throw new Error(\"id is required\");\n    }\n    if ([\"string\", \"number\"].indexOf(typeof id) === -1) {\n        throw new Error(\"id must be a number or a string\");\n    }\n}\nexports.validateId = validateId;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar meta_1 = require(\"@turf/meta\");\nvar helpers_1 = require(\"@turf/helpers\");\n/**\n * Takes one or more features and calculates the centroid using the mean of all vertices.\n * This lessens the effect of small islands and artifacts when calculating the centroid of a set of polygons.\n *\n * @name centroid\n * @param {GeoJSON} geojson GeoJSON to be centered\n * @param {Object} [options={}] Optional Parameters\n * @param {Object} [options.properties={}] an Object that is used as the {@link Feature}'s properties\n * @returns {Feature<Point>} the centroid of the input features\n * @example\n * var polygon = turf.polygon([[[-81, 41], [-88, 36], [-84, 31], [-80, 33], [-77, 39], [-81, 41]]]);\n *\n * var centroid = turf.centroid(polygon);\n *\n * //addToMap\n * var addToMap = [polygon, centroid]\n */\nfunction centroid(geojson, options) {\n    if (options === void 0) { options = {}; }\n    var xSum = 0;\n    var ySum = 0;\n    var len = 0;\n    meta_1.coordEach(geojson, function (coord) {\n        xSum += coord[0];\n        ySum += coord[1];\n        len++;\n    }, true);\n    return helpers_1.point([xSum / len, ySum / len], options.properties);\n}\nexports.default = centroid;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * @module helpers\n */\n/**\n * Earth Radius used with the Harvesine formula and approximates using a spherical (non-ellipsoid) Earth.\n *\n * @memberof helpers\n * @type {number}\n */\nexports.earthRadius = 6371008.8;\n/**\n * Unit of measurement factors using a spherical (non-ellipsoid) earth radius.\n *\n * @memberof helpers\n * @type {Object}\n */\nexports.factors = {\n    centimeters: exports.earthRadius * 100,\n    centimetres: exports.earthRadius * 100,\n    degrees: exports.earthRadius / 111325,\n    feet: exports.earthRadius * 3.28084,\n    inches: exports.earthRadius * 39.37,\n    kilometers: exports.earthRadius / 1000,\n    kilometres: exports.earthRadius / 1000,\n    meters: exports.earthRadius,\n    metres: exports.earthRadius,\n    miles: exports.earthRadius / 1609.344,\n    millimeters: exports.earthRadius * 1000,\n    millimetres: exports.earthRadius * 1000,\n    nauticalmiles: exports.earthRadius / 1852,\n    radians: 1,\n    yards: exports.earthRadius * 1.0936,\n};\n/**\n * Units of measurement factors based on 1 meter.\n *\n * @memberof helpers\n * @type {Object}\n */\nexports.unitsFactors = {\n    centimeters: 100,\n    centimetres: 100,\n    degrees: 1 / 111325,\n    feet: 3.28084,\n    inches: 39.37,\n    kilometers: 1 / 1000,\n    kilometres: 1 / 1000,\n    meters: 1,\n    metres: 1,\n    miles: 1 / 1609.344,\n    millimeters: 1000,\n    millimetres: 1000,\n    nauticalmiles: 1 / 1852,\n    radians: 1 / exports.earthRadius,\n    yards: 1.0936133,\n};\n/**\n * Area of measurement factors based on 1 square meter.\n *\n * @memberof helpers\n * @type {Object}\n */\nexports.areaFactors = {\n    acres: 0.000247105,\n    centimeters: 10000,\n    centimetres: 10000,\n    feet: 10.763910417,\n    hectares: 0.0001,\n    inches: 1550.003100006,\n    kilometers: 0.000001,\n    kilometres: 0.000001,\n    meters: 1,\n    metres: 1,\n    miles: 3.86e-7,\n    millimeters: 1000000,\n    millimetres: 1000000,\n    yards: 1.195990046,\n};\n/**\n * Wraps a GeoJSON {@link Geometry} in a GeoJSON {@link Feature}.\n *\n * @name feature\n * @param {Geometry} geometry input geometry\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} a GeoJSON Feature\n * @example\n * var geometry = {\n *   \"type\": \"Point\",\n *   \"coordinates\": [110, 50]\n * };\n *\n * var feature = turf.feature(geometry);\n *\n * //=feature\n */\nfunction feature(geom, properties, options) {\n    if (options === void 0) { options = {}; }\n    var feat = { type: \"Feature\" };\n    if (options.id === 0 || options.id) {\n        feat.id = options.id;\n    }\n    if (options.bbox) {\n        feat.bbox = options.bbox;\n    }\n    feat.properties = properties || {};\n    feat.geometry = geom;\n    return feat;\n}\nexports.feature = feature;\n/**\n * Creates a GeoJSON {@link Geometry} from a Geometry string type & coordinates.\n * For GeometryCollection type use `helpers.geometryCollection`\n *\n * @name geometry\n * @param {string} type Geometry Type\n * @param {Array<any>} coordinates Coordinates\n * @param {Object} [options={}] Optional Parameters\n * @returns {Geometry} a GeoJSON Geometry\n * @example\n * var type = \"Point\";\n * var coordinates = [110, 50];\n * var geometry = turf.geometry(type, coordinates);\n * // => geometry\n */\nfunction geometry(type, coordinates, _options) {\n    if (_options === void 0) { _options = {}; }\n    switch (type) {\n        case \"Point\":\n            return point(coordinates).geometry;\n        case \"LineString\":\n            return lineString(coordinates).geometry;\n        case \"Polygon\":\n            return polygon(coordinates).geometry;\n        case \"MultiPoint\":\n            return multiPoint(coordinates).geometry;\n        case \"MultiLineString\":\n            return multiLineString(coordinates).geometry;\n        case \"MultiPolygon\":\n            return multiPolygon(coordinates).geometry;\n        default:\n            throw new Error(type + \" is invalid\");\n    }\n}\nexports.geometry = geometry;\n/**\n * Creates a {@link Point} {@link Feature} from a Position.\n *\n * @name point\n * @param {Array<number>} coordinates longitude, latitude position (each in decimal degrees)\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<Point>} a Point feature\n * @example\n * var point = turf.point([-75.343, 39.984]);\n *\n * //=point\n */\nfunction point(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    if (!coordinates) {\n        throw new Error(\"coordinates is required\");\n    }\n    if (!Array.isArray(coordinates)) {\n        throw new Error(\"coordinates must be an Array\");\n    }\n    if (coordinates.length < 2) {\n        throw new Error(\"coordinates must be at least 2 numbers long\");\n    }\n    if (!isNumber(coordinates[0]) || !isNumber(coordinates[1])) {\n        throw new Error(\"coordinates must contain numbers\");\n    }\n    var geom = {\n        type: \"Point\",\n        coordinates: coordinates,\n    };\n    return feature(geom, properties, options);\n}\nexports.point = point;\n/**\n * Creates a {@link Point} {@link FeatureCollection} from an Array of Point coordinates.\n *\n * @name points\n * @param {Array<Array<number>>} coordinates an array of Points\n * @param {Object} [properties={}] Translate these properties to each Feature\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north]\n * associated with the FeatureCollection\n * @param {string|number} [options.id] Identifier associated with the FeatureCollection\n * @returns {FeatureCollection<Point>} Point Feature\n * @example\n * var points = turf.points([\n *   [-75, 39],\n *   [-80, 45],\n *   [-78, 50]\n * ]);\n *\n * //=points\n */\nfunction points(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    return featureCollection(coordinates.map(function (coords) {\n        return point(coords, properties);\n    }), options);\n}\nexports.points = points;\n/**\n * Creates a {@link Polygon} {@link Feature} from an Array of LinearRings.\n *\n * @name polygon\n * @param {Array<Array<Array<number>>>} coordinates an array of LinearRings\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<Polygon>} Polygon Feature\n * @example\n * var polygon = turf.polygon([[[-5, 52], [-4, 56], [-2, 51], [-7, 54], [-5, 52]]], { name: 'poly1' });\n *\n * //=polygon\n */\nfunction polygon(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    for (var _i = 0, coordinates_1 = coordinates; _i < coordinates_1.length; _i++) {\n        var ring = coordinates_1[_i];\n        if (ring.length < 4) {\n            throw new Error(\"Each LinearRing of a Polygon must have 4 or more Positions.\");\n        }\n        for (var j = 0; j < ring[ring.length - 1].length; j++) {\n            // Check if first point of Polygon contains two numbers\n            if (ring[ring.length - 1][j] !== ring[0][j]) {\n                throw new Error(\"First and last Position are not equivalent.\");\n            }\n        }\n    }\n    var geom = {\n        type: \"Polygon\",\n        coordinates: coordinates,\n    };\n    return feature(geom, properties, options);\n}\nexports.polygon = polygon;\n/**\n * Creates a {@link Polygon} {@link FeatureCollection} from an Array of Polygon coordinates.\n *\n * @name polygons\n * @param {Array<Array<Array<Array<number>>>>} coordinates an array of Polygon coordinates\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the FeatureCollection\n * @returns {FeatureCollection<Polygon>} Polygon FeatureCollection\n * @example\n * var polygons = turf.polygons([\n *   [[[-5, 52], [-4, 56], [-2, 51], [-7, 54], [-5, 52]]],\n *   [[[-15, 42], [-14, 46], [-12, 41], [-17, 44], [-15, 42]]],\n * ]);\n *\n * //=polygons\n */\nfunction polygons(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    return featureCollection(coordinates.map(function (coords) {\n        return polygon(coords, properties);\n    }), options);\n}\nexports.polygons = polygons;\n/**\n * Creates a {@link LineString} {@link Feature} from an Array of Positions.\n *\n * @name lineString\n * @param {Array<Array<number>>} coordinates an array of Positions\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<LineString>} LineString Feature\n * @example\n * var linestring1 = turf.lineString([[-24, 63], [-23, 60], [-25, 65], [-20, 69]], {name: 'line 1'});\n * var linestring2 = turf.lineString([[-14, 43], [-13, 40], [-15, 45], [-10, 49]], {name: 'line 2'});\n *\n * //=linestring1\n * //=linestring2\n */\nfunction lineString(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    if (coordinates.length < 2) {\n        throw new Error(\"coordinates must be an array of two or more positions\");\n    }\n    var geom = {\n        type: \"LineString\",\n        coordinates: coordinates,\n    };\n    return feature(geom, properties, options);\n}\nexports.lineString = lineString;\n/**\n * Creates a {@link LineString} {@link FeatureCollection} from an Array of LineString coordinates.\n *\n * @name lineStrings\n * @param {Array<Array<Array<number>>>} coordinates an array of LinearRings\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north]\n * associated with the FeatureCollection\n * @param {string|number} [options.id] Identifier associated with the FeatureCollection\n * @returns {FeatureCollection<LineString>} LineString FeatureCollection\n * @example\n * var linestrings = turf.lineStrings([\n *   [[-24, 63], [-23, 60], [-25, 65], [-20, 69]],\n *   [[-14, 43], [-13, 40], [-15, 45], [-10, 49]]\n * ]);\n *\n * //=linestrings\n */\nfunction lineStrings(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    return featureCollection(coordinates.map(function (coords) {\n        return lineString(coords, properties);\n    }), options);\n}\nexports.lineStrings = lineStrings;\n/**\n * Takes one or more {@link Feature|Features} and creates a {@link FeatureCollection}.\n *\n * @name featureCollection\n * @param {Feature[]} features input features\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {FeatureCollection} FeatureCollection of Features\n * @example\n * var locationA = turf.point([-75.343, 39.984], {name: 'Location A'});\n * var locationB = turf.point([-75.833, 39.284], {name: 'Location B'});\n * var locationC = turf.point([-75.534, 39.123], {name: 'Location C'});\n *\n * var collection = turf.featureCollection([\n *   locationA,\n *   locationB,\n *   locationC\n * ]);\n *\n * //=collection\n */\nfunction featureCollection(features, options) {\n    if (options === void 0) { options = {}; }\n    var fc = { type: \"FeatureCollection\" };\n    if (options.id) {\n        fc.id = options.id;\n    }\n    if (options.bbox) {\n        fc.bbox = options.bbox;\n    }\n    fc.features = features;\n    return fc;\n}\nexports.featureCollection = featureCollection;\n/**\n * Creates a {@link Feature<MultiLineString>} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name multiLineString\n * @param {Array<Array<Array<number>>>} coordinates an array of LineStrings\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<MultiLineString>} a MultiLineString feature\n * @throws {Error} if no coordinates are passed\n * @example\n * var multiLine = turf.multiLineString([[[0,0],[10,10]]]);\n *\n * //=multiLine\n */\nfunction multiLineString(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    var geom = {\n        type: \"MultiLineString\",\n        coordinates: coordinates,\n    };\n    return feature(geom, properties, options);\n}\nexports.multiLineString = multiLineString;\n/**\n * Creates a {@link Feature<MultiPoint>} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name multiPoint\n * @param {Array<Array<number>>} coordinates an array of Positions\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<MultiPoint>} a MultiPoint feature\n * @throws {Error} if no coordinates are passed\n * @example\n * var multiPt = turf.multiPoint([[0,0],[10,10]]);\n *\n * //=multiPt\n */\nfunction multiPoint(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    var geom = {\n        type: \"MultiPoint\",\n        coordinates: coordinates,\n    };\n    return feature(geom, properties, options);\n}\nexports.multiPoint = multiPoint;\n/**\n * Creates a {@link Feature<MultiPolygon>} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name multiPolygon\n * @param {Array<Array<Array<Array<number>>>>} coordinates an array of Polygons\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<MultiPolygon>} a multipolygon feature\n * @throws {Error} if no coordinates are passed\n * @example\n * var multiPoly = turf.multiPolygon([[[[0,0],[0,10],[10,10],[10,0],[0,0]]]]);\n *\n * //=multiPoly\n *\n */\nfunction multiPolygon(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    var geom = {\n        type: \"MultiPolygon\",\n        coordinates: coordinates,\n    };\n    return feature(geom, properties, options);\n}\nexports.multiPolygon = multiPolygon;\n/**\n * Creates a {@link Feature<GeometryCollection>} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name geometryCollection\n * @param {Array<Geometry>} geometries an array of GeoJSON Geometries\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<GeometryCollection>} a GeoJSON GeometryCollection Feature\n * @example\n * var pt = turf.geometry(\"Point\", [100, 0]);\n * var line = turf.geometry(\"LineString\", [[101, 0], [102, 1]]);\n * var collection = turf.geometryCollection([pt, line]);\n *\n * // => collection\n */\nfunction geometryCollection(geometries, properties, options) {\n    if (options === void 0) { options = {}; }\n    var geom = {\n        type: \"GeometryCollection\",\n        geometries: geometries,\n    };\n    return feature(geom, properties, options);\n}\nexports.geometryCollection = geometryCollection;\n/**\n * Round number to precision\n *\n * @param {number} num Number\n * @param {number} [precision=0] Precision\n * @returns {number} rounded number\n * @example\n * turf.round(120.4321)\n * //=120\n *\n * turf.round(120.4321, 2)\n * //=120.43\n */\nfunction round(num, precision) {\n    if (precision === void 0) { precision = 0; }\n    if (precision && !(precision >= 0)) {\n        throw new Error(\"precision must be a positive number\");\n    }\n    var multiplier = Math.pow(10, precision || 0);\n    return Math.round(num * multiplier) / multiplier;\n}\nexports.round = round;\n/**\n * Convert a distance measurement (assuming a spherical Earth) from radians to a more friendly unit.\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet\n *\n * @name radiansToLength\n * @param {number} radians in radians across the sphere\n * @param {string} [units=\"kilometers\"] can be degrees, radians, miles, inches, yards, metres,\n * meters, kilometres, kilometers.\n * @returns {number} distance\n */\nfunction radiansToLength(radians, units) {\n    if (units === void 0) { units = \"kilometers\"; }\n    var factor = exports.factors[units];\n    if (!factor) {\n        throw new Error(units + \" units is invalid\");\n    }\n    return radians * factor;\n}\nexports.radiansToLength = radiansToLength;\n/**\n * Convert a distance measurement (assuming a spherical Earth) from a real-world unit into radians\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet\n *\n * @name lengthToRadians\n * @param {number} distance in real units\n * @param {string} [units=\"kilometers\"] can be degrees, radians, miles, inches, yards, metres,\n * meters, kilometres, kilometers.\n * @returns {number} radians\n */\nfunction lengthToRadians(distance, units) {\n    if (units === void 0) { units = \"kilometers\"; }\n    var factor = exports.factors[units];\n    if (!factor) {\n        throw new Error(units + \" units is invalid\");\n    }\n    return distance / factor;\n}\nexports.lengthToRadians = lengthToRadians;\n/**\n * Convert a distance measurement (assuming a spherical Earth) from a real-world unit into degrees\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, centimeters, kilometres, feet\n *\n * @name lengthToDegrees\n * @param {number} distance in real units\n * @param {string} [units=\"kilometers\"] can be degrees, radians, miles, inches, yards, metres,\n * meters, kilometres, kilometers.\n * @returns {number} degrees\n */\nfunction lengthToDegrees(distance, units) {\n    return radiansToDegrees(lengthToRadians(distance, units));\n}\nexports.lengthToDegrees = lengthToDegrees;\n/**\n * Converts any bearing angle from the north line direction (positive clockwise)\n * and returns an angle between 0-360 degrees (positive clockwise), 0 being the north line\n *\n * @name bearingToAzimuth\n * @param {number} bearing angle, between -180 and +180 degrees\n * @returns {number} angle between 0 and 360 degrees\n */\nfunction bearingToAzimuth(bearing) {\n    var angle = bearing % 360;\n    if (angle < 0) {\n        angle += 360;\n    }\n    return angle;\n}\nexports.bearingToAzimuth = bearingToAzimuth;\n/**\n * Converts an angle in radians to degrees\n *\n * @name radiansToDegrees\n * @param {number} radians angle in radians\n * @returns {number} degrees between 0 and 360 degrees\n */\nfunction radiansToDegrees(radians) {\n    var degrees = radians % (2 * Math.PI);\n    return (degrees * 180) / Math.PI;\n}\nexports.radiansToDegrees = radiansToDegrees;\n/**\n * Converts an angle in degrees to radians\n *\n * @name degreesToRadians\n * @param {number} degrees angle between 0 and 360 degrees\n * @returns {number} angle in radians\n */\nfunction degreesToRadians(degrees) {\n    var radians = degrees % 360;\n    return (radians * Math.PI) / 180;\n}\nexports.degreesToRadians = degreesToRadians;\n/**\n * Converts a length to the requested unit.\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet\n *\n * @param {number} length to be converted\n * @param {Units} [originalUnit=\"kilometers\"] of the length\n * @param {Units} [finalUnit=\"kilometers\"] returned unit\n * @returns {number} the converted length\n */\nfunction convertLength(length, originalUnit, finalUnit) {\n    if (originalUnit === void 0) { originalUnit = \"kilometers\"; }\n    if (finalUnit === void 0) { finalUnit = \"kilometers\"; }\n    if (!(length >= 0)) {\n        throw new Error(\"length must be a positive number\");\n    }\n    return radiansToLength(lengthToRadians(length, originalUnit), finalUnit);\n}\nexports.convertLength = convertLength;\n/**\n * Converts a area to the requested unit.\n * Valid units: kilometers, kilometres, meters, metres, centimetres, millimeters, acres, miles, yards, feet, inches, hectares\n * @param {number} area to be converted\n * @param {Units} [originalUnit=\"meters\"] of the distance\n * @param {Units} [finalUnit=\"kilometers\"] returned unit\n * @returns {number} the converted area\n */\nfunction convertArea(area, originalUnit, finalUnit) {\n    if (originalUnit === void 0) { originalUnit = \"meters\"; }\n    if (finalUnit === void 0) { finalUnit = \"kilometers\"; }\n    if (!(area >= 0)) {\n        throw new Error(\"area must be a positive number\");\n    }\n    var startFactor = exports.areaFactors[originalUnit];\n    if (!startFactor) {\n        throw new Error(\"invalid original units\");\n    }\n    var finalFactor = exports.areaFactors[finalUnit];\n    if (!finalFactor) {\n        throw new Error(\"invalid final units\");\n    }\n    return (area / startFactor) * finalFactor;\n}\nexports.convertArea = convertArea;\n/**\n * isNumber\n *\n * @param {*} num Number to validate\n * @returns {boolean} true/false\n * @example\n * turf.isNumber(123)\n * //=true\n * turf.isNumber('foo')\n * //=false\n */\nfunction isNumber(num) {\n    return !isNaN(num) && num !== null && !Array.isArray(num);\n}\nexports.isNumber = isNumber;\n/**\n * isObject\n *\n * @param {*} input variable to validate\n * @returns {boolean} true/false\n * @example\n * turf.isObject({elevation: 10})\n * //=true\n * turf.isObject('foo')\n * //=false\n */\nfunction isObject(input) {\n    return !!input && input.constructor === Object;\n}\nexports.isObject = isObject;\n/**\n * Validate BBox\n *\n * @private\n * @param {Array<number>} bbox BBox to validate\n * @returns {void}\n * @throws Error if BBox is not valid\n * @example\n * validateBBox([-180, -40, 110, 50])\n * //=OK\n * validateBBox([-180, -40])\n * //=Error\n * validateBBox('Foo')\n * //=Error\n * validateBBox(5)\n * //=Error\n * validateBBox(null)\n * //=Error\n * validateBBox(undefined)\n * //=Error\n */\nfunction validateBBox(bbox) {\n    if (!bbox) {\n        throw new Error(\"bbox is required\");\n    }\n    if (!Array.isArray(bbox)) {\n        throw new Error(\"bbox must be an Array\");\n    }\n    if (bbox.length !== 4 && bbox.length !== 6) {\n        throw new Error(\"bbox must be an Array of 4 or 6 numbers\");\n    }\n    bbox.forEach(function (num) {\n        if (!isNumber(num)) {\n            throw new Error(\"bbox must only contain numbers\");\n        }\n    });\n}\nexports.validateBBox = validateBBox;\n/**\n * Validate Id\n *\n * @private\n * @param {string|number} id Id to validate\n * @returns {void}\n * @throws Error if Id is not valid\n * @example\n * validateId([-180, -40, 110, 50])\n * //=Error\n * validateId([-180, -40])\n * //=Error\n * validateId('Foo')\n * //=OK\n * validateId(5)\n * //=OK\n * validateId(null)\n * //=Error\n * validateId(undefined)\n * //=Error\n */\nfunction validateId(id) {\n    if (!id) {\n        throw new Error(\"id is required\");\n    }\n    if ([\"string\", \"number\"].indexOf(typeof id) === -1) {\n        throw new Error(\"id must be a number or a string\");\n    }\n}\nexports.validateId = validateId;\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nvar helpers = require('@turf/helpers');\n\n/**\n * Callback for coordEach\n *\n * @callback coordEachCallback\n * @param {Array<number>} currentCoord The current coordinate being processed.\n * @param {number} coordIndex The current index of the coordinate being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n * @param {number} geometryIndex The current index of the Geometry being processed.\n */\n\n/**\n * Iterate over coordinates in any GeoJSON object, similar to Array.forEach()\n *\n * @name coordEach\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (currentCoord, coordIndex, featureIndex, multiFeatureIndex)\n * @param {boolean} [excludeWrapCoord=false] whether or not to include the final coordinate of LinearRings that wraps the ring in its iteration.\n * @returns {void}\n * @example\n * var features = turf.featureCollection([\n *   turf.point([26, 37], {\"foo\": \"bar\"}),\n *   turf.point([36, 53], {\"hello\": \"world\"})\n * ]);\n *\n * turf.coordEach(features, function (currentCoord, coordIndex, featureIndex, multiFeatureIndex, geometryIndex) {\n *   //=currentCoord\n *   //=coordIndex\n *   //=featureIndex\n *   //=multiFeatureIndex\n *   //=geometryIndex\n * });\n */\nfunction coordEach(geojson, callback, excludeWrapCoord) {\n  // Handles null Geometry -- Skips this GeoJSON\n  if (geojson === null) return;\n  var j,\n    k,\n    l,\n    geometry,\n    stopG,\n    coords,\n    geometryMaybeCollection,\n    wrapShrink = 0,\n    coordIndex = 0,\n    isGeometryCollection,\n    type = geojson.type,\n    isFeatureCollection = type === \"FeatureCollection\",\n    isFeature = type === \"Feature\",\n    stop = isFeatureCollection ? geojson.features.length : 1;\n\n  // This logic may look a little weird. The reason why it is that way\n  // is because it's trying to be fast. GeoJSON supports multiple kinds\n  // of objects at its root: FeatureCollection, Features, Geometries.\n  // This function has the responsibility of handling all of them, and that\n  // means that some of the `for` loops you see below actually just don't apply\n  // to certain inputs. For instance, if you give this just a\n  // Point geometry, then both loops are short-circuited and all we do\n  // is gradually rename the input until it's called 'geometry'.\n  //\n  // This also aims to allocate as few resources as possible: just a\n  // few numbers and booleans, rather than any temporary arrays as would\n  // be required with the normalization approach.\n  for (var featureIndex = 0; featureIndex < stop; featureIndex++) {\n    geometryMaybeCollection = isFeatureCollection\n      ? geojson.features[featureIndex].geometry\n      : isFeature\n      ? geojson.geometry\n      : geojson;\n    isGeometryCollection = geometryMaybeCollection\n      ? geometryMaybeCollection.type === \"GeometryCollection\"\n      : false;\n    stopG = isGeometryCollection\n      ? geometryMaybeCollection.geometries.length\n      : 1;\n\n    for (var geomIndex = 0; geomIndex < stopG; geomIndex++) {\n      var multiFeatureIndex = 0;\n      var geometryIndex = 0;\n      geometry = isGeometryCollection\n        ? geometryMaybeCollection.geometries[geomIndex]\n        : geometryMaybeCollection;\n\n      // Handles null Geometry -- Skips this geometry\n      if (geometry === null) continue;\n      coords = geometry.coordinates;\n      var geomType = geometry.type;\n\n      wrapShrink =\n        excludeWrapCoord &&\n        (geomType === \"Polygon\" || geomType === \"MultiPolygon\")\n          ? 1\n          : 0;\n\n      switch (geomType) {\n        case null:\n          break;\n        case \"Point\":\n          if (\n            callback(\n              coords,\n              coordIndex,\n              featureIndex,\n              multiFeatureIndex,\n              geometryIndex\n            ) === false\n          )\n            return false;\n          coordIndex++;\n          multiFeatureIndex++;\n          break;\n        case \"LineString\":\n        case \"MultiPoint\":\n          for (j = 0; j < coords.length; j++) {\n            if (\n              callback(\n                coords[j],\n                coordIndex,\n                featureIndex,\n                multiFeatureIndex,\n                geometryIndex\n              ) === false\n            )\n              return false;\n            coordIndex++;\n            if (geomType === \"MultiPoint\") multiFeatureIndex++;\n          }\n          if (geomType === \"LineString\") multiFeatureIndex++;\n          break;\n        case \"Polygon\":\n        case \"MultiLineString\":\n          for (j = 0; j < coords.length; j++) {\n            for (k = 0; k < coords[j].length - wrapShrink; k++) {\n              if (\n                callback(\n                  coords[j][k],\n                  coordIndex,\n                  featureIndex,\n                  multiFeatureIndex,\n                  geometryIndex\n                ) === false\n              )\n                return false;\n              coordIndex++;\n            }\n            if (geomType === \"MultiLineString\") multiFeatureIndex++;\n            if (geomType === \"Polygon\") geometryIndex++;\n          }\n          if (geomType === \"Polygon\") multiFeatureIndex++;\n          break;\n        case \"MultiPolygon\":\n          for (j = 0; j < coords.length; j++) {\n            geometryIndex = 0;\n            for (k = 0; k < coords[j].length; k++) {\n              for (l = 0; l < coords[j][k].length - wrapShrink; l++) {\n                if (\n                  callback(\n                    coords[j][k][l],\n                    coordIndex,\n                    featureIndex,\n                    multiFeatureIndex,\n                    geometryIndex\n                  ) === false\n                )\n                  return false;\n                coordIndex++;\n              }\n              geometryIndex++;\n            }\n            multiFeatureIndex++;\n          }\n          break;\n        case \"GeometryCollection\":\n          for (j = 0; j < geometry.geometries.length; j++)\n            if (\n              coordEach(geometry.geometries[j], callback, excludeWrapCoord) ===\n              false\n            )\n              return false;\n          break;\n        default:\n          throw new Error(\"Unknown Geometry Type\");\n      }\n    }\n  }\n}\n\n/**\n * Callback for coordReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n *  - The previousValue argument is initialValue.\n *  - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n *  - The previousValue argument is the value of the first element present in the array.\n *  - The currentValue argument is the value of the second element present in the array.\n *\n * @callback coordReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Array<number>} currentCoord The current coordinate being processed.\n * @param {number} coordIndex The current index of the coordinate being processed.\n * Starts at index 0, if an initialValue is provided, and at index 1 otherwise.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n * @param {number} geometryIndex The current index of the Geometry being processed.\n */\n\n/**\n * Reduce coordinates in any GeoJSON object, similar to Array.reduce()\n *\n * @name coordReduce\n * @param {FeatureCollection|Geometry|Feature} geojson any GeoJSON object\n * @param {Function} callback a method that takes (previousValue, currentCoord, coordIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @param {boolean} [excludeWrapCoord=false] whether or not to include the final coordinate of LinearRings that wraps the ring in its iteration.\n * @returns {*} The value that results from the reduction.\n * @example\n * var features = turf.featureCollection([\n *   turf.point([26, 37], {\"foo\": \"bar\"}),\n *   turf.point([36, 53], {\"hello\": \"world\"})\n * ]);\n *\n * turf.coordReduce(features, function (previousValue, currentCoord, coordIndex, featureIndex, multiFeatureIndex, geometryIndex) {\n *   //=previousValue\n *   //=currentCoord\n *   //=coordIndex\n *   //=featureIndex\n *   //=multiFeatureIndex\n *   //=geometryIndex\n *   return currentCoord;\n * });\n */\nfunction coordReduce(geojson, callback, initialValue, excludeWrapCoord) {\n  var previousValue = initialValue;\n  coordEach(\n    geojson,\n    function (\n      currentCoord,\n      coordIndex,\n      featureIndex,\n      multiFeatureIndex,\n      geometryIndex\n    ) {\n      if (coordIndex === 0 && initialValue === undefined)\n        previousValue = currentCoord;\n      else\n        previousValue = callback(\n          previousValue,\n          currentCoord,\n          coordIndex,\n          featureIndex,\n          multiFeatureIndex,\n          geometryIndex\n        );\n    },\n    excludeWrapCoord\n  );\n  return previousValue;\n}\n\n/**\n * Callback for propEach\n *\n * @callback propEachCallback\n * @param {Object} currentProperties The current Properties being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n */\n\n/**\n * Iterate over properties in any GeoJSON object, similar to Array.forEach()\n *\n * @name propEach\n * @param {FeatureCollection|Feature} geojson any GeoJSON object\n * @param {Function} callback a method that takes (currentProperties, featureIndex)\n * @returns {void}\n * @example\n * var features = turf.featureCollection([\n *     turf.point([26, 37], {foo: 'bar'}),\n *     turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * turf.propEach(features, function (currentProperties, featureIndex) {\n *   //=currentProperties\n *   //=featureIndex\n * });\n */\nfunction propEach(geojson, callback) {\n  var i;\n  switch (geojson.type) {\n    case \"FeatureCollection\":\n      for (i = 0; i < geojson.features.length; i++) {\n        if (callback(geojson.features[i].properties, i) === false) break;\n      }\n      break;\n    case \"Feature\":\n      callback(geojson.properties, 0);\n      break;\n  }\n}\n\n/**\n * Callback for propReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n *  - The previousValue argument is initialValue.\n *  - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n *  - The previousValue argument is the value of the first element present in the array.\n *  - The currentValue argument is the value of the second element present in the array.\n *\n * @callback propReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {*} currentProperties The current Properties being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n */\n\n/**\n * Reduce properties in any GeoJSON object into a single value,\n * similar to how Array.reduce works. However, in this case we lazily run\n * the reduction, so an array of all properties is unnecessary.\n *\n * @name propReduce\n * @param {FeatureCollection|Feature} geojson any GeoJSON object\n * @param {Function} callback a method that takes (previousValue, currentProperties, featureIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {*} The value that results from the reduction.\n * @example\n * var features = turf.featureCollection([\n *     turf.point([26, 37], {foo: 'bar'}),\n *     turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * turf.propReduce(features, function (previousValue, currentProperties, featureIndex) {\n *   //=previousValue\n *   //=currentProperties\n *   //=featureIndex\n *   return currentProperties\n * });\n */\nfunction propReduce(geojson, callback, initialValue) {\n  var previousValue = initialValue;\n  propEach(geojson, function (currentProperties, featureIndex) {\n    if (featureIndex === 0 && initialValue === undefined)\n      previousValue = currentProperties;\n    else\n      previousValue = callback(previousValue, currentProperties, featureIndex);\n  });\n  return previousValue;\n}\n\n/**\n * Callback for featureEach\n *\n * @callback featureEachCallback\n * @param {Feature<any>} currentFeature The current Feature being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n */\n\n/**\n * Iterate over features in any GeoJSON object, similar to\n * Array.forEach.\n *\n * @name featureEach\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (currentFeature, featureIndex)\n * @returns {void}\n * @example\n * var features = turf.featureCollection([\n *   turf.point([26, 37], {foo: 'bar'}),\n *   turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * turf.featureEach(features, function (currentFeature, featureIndex) {\n *   //=currentFeature\n *   //=featureIndex\n * });\n */\nfunction featureEach(geojson, callback) {\n  if (geojson.type === \"Feature\") {\n    callback(geojson, 0);\n  } else if (geojson.type === \"FeatureCollection\") {\n    for (var i = 0; i < geojson.features.length; i++) {\n      if (callback(geojson.features[i], i) === false) break;\n    }\n  }\n}\n\n/**\n * Callback for featureReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n *  - The previousValue argument is initialValue.\n *  - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n *  - The previousValue argument is the value of the first element present in the array.\n *  - The currentValue argument is the value of the second element present in the array.\n *\n * @callback featureReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Feature} currentFeature The current Feature being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n */\n\n/**\n * Reduce features in any GeoJSON object, similar to Array.reduce().\n *\n * @name featureReduce\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (previousValue, currentFeature, featureIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {*} The value that results from the reduction.\n * @example\n * var features = turf.featureCollection([\n *   turf.point([26, 37], {\"foo\": \"bar\"}),\n *   turf.point([36, 53], {\"hello\": \"world\"})\n * ]);\n *\n * turf.featureReduce(features, function (previousValue, currentFeature, featureIndex) {\n *   //=previousValue\n *   //=currentFeature\n *   //=featureIndex\n *   return currentFeature\n * });\n */\nfunction featureReduce(geojson, callback, initialValue) {\n  var previousValue = initialValue;\n  featureEach(geojson, function (currentFeature, featureIndex) {\n    if (featureIndex === 0 && initialValue === undefined)\n      previousValue = currentFeature;\n    else previousValue = callback(previousValue, currentFeature, featureIndex);\n  });\n  return previousValue;\n}\n\n/**\n * Get all coordinates from any GeoJSON object.\n *\n * @name coordAll\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @returns {Array<Array<number>>} coordinate position array\n * @example\n * var features = turf.featureCollection([\n *   turf.point([26, 37], {foo: 'bar'}),\n *   turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * var coords = turf.coordAll(features);\n * //= [[26, 37], [36, 53]]\n */\nfunction coordAll(geojson) {\n  var coords = [];\n  coordEach(geojson, function (coord) {\n    coords.push(coord);\n  });\n  return coords;\n}\n\n/**\n * Callback for geomEach\n *\n * @callback geomEachCallback\n * @param {Geometry} currentGeometry The current Geometry being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {Object} featureProperties The current Feature Properties being processed.\n * @param {Array<number>} featureBBox The current Feature BBox being processed.\n * @param {number|string} featureId The current Feature Id being processed.\n */\n\n/**\n * Iterate over each geometry in any GeoJSON object, similar to Array.forEach()\n *\n * @name geomEach\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (currentGeometry, featureIndex, featureProperties, featureBBox, featureId)\n * @returns {void}\n * @example\n * var features = turf.featureCollection([\n *     turf.point([26, 37], {foo: 'bar'}),\n *     turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * turf.geomEach(features, function (currentGeometry, featureIndex, featureProperties, featureBBox, featureId) {\n *   //=currentGeometry\n *   //=featureIndex\n *   //=featureProperties\n *   //=featureBBox\n *   //=featureId\n * });\n */\nfunction geomEach(geojson, callback) {\n  var i,\n    j,\n    g,\n    geometry,\n    stopG,\n    geometryMaybeCollection,\n    isGeometryCollection,\n    featureProperties,\n    featureBBox,\n    featureId,\n    featureIndex = 0,\n    isFeatureCollection = geojson.type === \"FeatureCollection\",\n    isFeature = geojson.type === \"Feature\",\n    stop = isFeatureCollection ? geojson.features.length : 1;\n\n  // This logic may look a little weird. The reason why it is that way\n  // is because it's trying to be fast. GeoJSON supports multiple kinds\n  // of objects at its root: FeatureCollection, Features, Geometries.\n  // This function has the responsibility of handling all of them, and that\n  // means that some of the `for` loops you see below actually just don't apply\n  // to certain inputs. For instance, if you give this just a\n  // Point geometry, then both loops are short-circuited and all we do\n  // is gradually rename the input until it's called 'geometry'.\n  //\n  // This also aims to allocate as few resources as possible: just a\n  // few numbers and booleans, rather than any temporary arrays as would\n  // be required with the normalization approach.\n  for (i = 0; i < stop; i++) {\n    geometryMaybeCollection = isFeatureCollection\n      ? geojson.features[i].geometry\n      : isFeature\n      ? geojson.geometry\n      : geojson;\n    featureProperties = isFeatureCollection\n      ? geojson.features[i].properties\n      : isFeature\n      ? geojson.properties\n      : {};\n    featureBBox = isFeatureCollection\n      ? geojson.features[i].bbox\n      : isFeature\n      ? geojson.bbox\n      : undefined;\n    featureId = isFeatureCollection\n      ? geojson.features[i].id\n      : isFeature\n      ? geojson.id\n      : undefined;\n    isGeometryCollection = geometryMaybeCollection\n      ? geometryMaybeCollection.type === \"GeometryCollection\"\n      : false;\n    stopG = isGeometryCollection\n      ? geometryMaybeCollection.geometries.length\n      : 1;\n\n    for (g = 0; g < stopG; g++) {\n      geometry = isGeometryCollection\n        ? geometryMaybeCollection.geometries[g]\n        : geometryMaybeCollection;\n\n      // Handle null Geometry\n      if (geometry === null) {\n        if (\n          callback(\n            null,\n            featureIndex,\n            featureProperties,\n            featureBBox,\n            featureId\n          ) === false\n        )\n          return false;\n        continue;\n      }\n      switch (geometry.type) {\n        case \"Point\":\n        case \"LineString\":\n        case \"MultiPoint\":\n        case \"Polygon\":\n        case \"MultiLineString\":\n        case \"MultiPolygon\": {\n          if (\n            callback(\n              geometry,\n              featureIndex,\n              featureProperties,\n              featureBBox,\n              featureId\n            ) === false\n          )\n            return false;\n          break;\n        }\n        case \"GeometryCollection\": {\n          for (j = 0; j < geometry.geometries.length; j++) {\n            if (\n              callback(\n                geometry.geometries[j],\n                featureIndex,\n                featureProperties,\n                featureBBox,\n                featureId\n              ) === false\n            )\n              return false;\n          }\n          break;\n        }\n        default:\n          throw new Error(\"Unknown Geometry Type\");\n      }\n    }\n    // Only increase `featureIndex` per each feature\n    featureIndex++;\n  }\n}\n\n/**\n * Callback for geomReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n *  - The previousValue argument is initialValue.\n *  - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n *  - The previousValue argument is the value of the first element present in the array.\n *  - The currentValue argument is the value of the second element present in the array.\n *\n * @callback geomReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Geometry} currentGeometry The current Geometry being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {Object} featureProperties The current Feature Properties being processed.\n * @param {Array<number>} featureBBox The current Feature BBox being processed.\n * @param {number|string} featureId The current Feature Id being processed.\n */\n\n/**\n * Reduce geometry in any GeoJSON object, similar to Array.reduce().\n *\n * @name geomReduce\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (previousValue, currentGeometry, featureIndex, featureProperties, featureBBox, featureId)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {*} The value that results from the reduction.\n * @example\n * var features = turf.featureCollection([\n *     turf.point([26, 37], {foo: 'bar'}),\n *     turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * turf.geomReduce(features, function (previousValue, currentGeometry, featureIndex, featureProperties, featureBBox, featureId) {\n *   //=previousValue\n *   //=currentGeometry\n *   //=featureIndex\n *   //=featureProperties\n *   //=featureBBox\n *   //=featureId\n *   return currentGeometry\n * });\n */\nfunction geomReduce(geojson, callback, initialValue) {\n  var previousValue = initialValue;\n  geomEach(\n    geojson,\n    function (\n      currentGeometry,\n      featureIndex,\n      featureProperties,\n      featureBBox,\n      featureId\n    ) {\n      if (featureIndex === 0 && initialValue === undefined)\n        previousValue = currentGeometry;\n      else\n        previousValue = callback(\n          previousValue,\n          currentGeometry,\n          featureIndex,\n          featureProperties,\n          featureBBox,\n          featureId\n        );\n    }\n  );\n  return previousValue;\n}\n\n/**\n * Callback for flattenEach\n *\n * @callback flattenEachCallback\n * @param {Feature} currentFeature The current flattened feature being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n */\n\n/**\n * Iterate over flattened features in any GeoJSON object, similar to\n * Array.forEach.\n *\n * @name flattenEach\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (currentFeature, featureIndex, multiFeatureIndex)\n * @example\n * var features = turf.featureCollection([\n *     turf.point([26, 37], {foo: 'bar'}),\n *     turf.multiPoint([[40, 30], [36, 53]], {hello: 'world'})\n * ]);\n *\n * turf.flattenEach(features, function (currentFeature, featureIndex, multiFeatureIndex) {\n *   //=currentFeature\n *   //=featureIndex\n *   //=multiFeatureIndex\n * });\n */\nfunction flattenEach(geojson, callback) {\n  geomEach(geojson, function (geometry, featureIndex, properties, bbox, id) {\n    // Callback for single geometry\n    var type = geometry === null ? null : geometry.type;\n    switch (type) {\n      case null:\n      case \"Point\":\n      case \"LineString\":\n      case \"Polygon\":\n        if (\n          callback(\n            helpers.feature(geometry, properties, { bbox: bbox, id: id }),\n            featureIndex,\n            0\n          ) === false\n        )\n          return false;\n        return;\n    }\n\n    var geomType;\n\n    // Callback for multi-geometry\n    switch (type) {\n      case \"MultiPoint\":\n        geomType = \"Point\";\n        break;\n      case \"MultiLineString\":\n        geomType = \"LineString\";\n        break;\n      case \"MultiPolygon\":\n        geomType = \"Polygon\";\n        break;\n    }\n\n    for (\n      var multiFeatureIndex = 0;\n      multiFeatureIndex < geometry.coordinates.length;\n      multiFeatureIndex++\n    ) {\n      var coordinate = geometry.coordinates[multiFeatureIndex];\n      var geom = {\n        type: geomType,\n        coordinates: coordinate,\n      };\n      if (\n        callback(helpers.feature(geom, properties), featureIndex, multiFeatureIndex) ===\n        false\n      )\n        return false;\n    }\n  });\n}\n\n/**\n * Callback for flattenReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n *  - The previousValue argument is initialValue.\n *  - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n *  - The previousValue argument is the value of the first element present in the array.\n *  - The currentValue argument is the value of the second element present in the array.\n *\n * @callback flattenReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Feature} currentFeature The current Feature being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n */\n\n/**\n * Reduce flattened features in any GeoJSON object, similar to Array.reduce().\n *\n * @name flattenReduce\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (previousValue, currentFeature, featureIndex, multiFeatureIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {*} The value that results from the reduction.\n * @example\n * var features = turf.featureCollection([\n *     turf.point([26, 37], {foo: 'bar'}),\n *     turf.multiPoint([[40, 30], [36, 53]], {hello: 'world'})\n * ]);\n *\n * turf.flattenReduce(features, function (previousValue, currentFeature, featureIndex, multiFeatureIndex) {\n *   //=previousValue\n *   //=currentFeature\n *   //=featureIndex\n *   //=multiFeatureIndex\n *   return currentFeature\n * });\n */\nfunction flattenReduce(geojson, callback, initialValue) {\n  var previousValue = initialValue;\n  flattenEach(\n    geojson,\n    function (currentFeature, featureIndex, multiFeatureIndex) {\n      if (\n        featureIndex === 0 &&\n        multiFeatureIndex === 0 &&\n        initialValue === undefined\n      )\n        previousValue = currentFeature;\n      else\n        previousValue = callback(\n          previousValue,\n          currentFeature,\n          featureIndex,\n          multiFeatureIndex\n        );\n    }\n  );\n  return previousValue;\n}\n\n/**\n * Callback for segmentEach\n *\n * @callback segmentEachCallback\n * @param {Feature<LineString>} currentSegment The current Segment being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n * @param {number} geometryIndex The current index of the Geometry being processed.\n * @param {number} segmentIndex The current index of the Segment being processed.\n * @returns {void}\n */\n\n/**\n * Iterate over 2-vertex line segment in any GeoJSON object, similar to Array.forEach()\n * (Multi)Point geometries do not contain segments therefore they are ignored during this operation.\n *\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON\n * @param {Function} callback a method that takes (currentSegment, featureIndex, multiFeatureIndex, geometryIndex, segmentIndex)\n * @returns {void}\n * @example\n * var polygon = turf.polygon([[[-50, 5], [-40, -10], [-50, -10], [-40, 5], [-50, 5]]]);\n *\n * // Iterate over GeoJSON by 2-vertex segments\n * turf.segmentEach(polygon, function (currentSegment, featureIndex, multiFeatureIndex, geometryIndex, segmentIndex) {\n *   //=currentSegment\n *   //=featureIndex\n *   //=multiFeatureIndex\n *   //=geometryIndex\n *   //=segmentIndex\n * });\n *\n * // Calculate the total number of segments\n * var total = 0;\n * turf.segmentEach(polygon, function () {\n *     total++;\n * });\n */\nfunction segmentEach(geojson, callback) {\n  flattenEach(geojson, function (feature, featureIndex, multiFeatureIndex) {\n    var segmentIndex = 0;\n\n    // Exclude null Geometries\n    if (!feature.geometry) return;\n    // (Multi)Point geometries do not contain segments therefore they are ignored during this operation.\n    var type = feature.geometry.type;\n    if (type === \"Point\" || type === \"MultiPoint\") return;\n\n    // Generate 2-vertex line segments\n    var previousCoords;\n    var previousFeatureIndex = 0;\n    var previousMultiIndex = 0;\n    var prevGeomIndex = 0;\n    if (\n      coordEach(\n        feature,\n        function (\n          currentCoord,\n          coordIndex,\n          featureIndexCoord,\n          multiPartIndexCoord,\n          geometryIndex\n        ) {\n          // Simulating a meta.coordReduce() since `reduce` operations cannot be stopped by returning `false`\n          if (\n            previousCoords === undefined ||\n            featureIndex > previousFeatureIndex ||\n            multiPartIndexCoord > previousMultiIndex ||\n            geometryIndex > prevGeomIndex\n          ) {\n            previousCoords = currentCoord;\n            previousFeatureIndex = featureIndex;\n            previousMultiIndex = multiPartIndexCoord;\n            prevGeomIndex = geometryIndex;\n            segmentIndex = 0;\n            return;\n          }\n          var currentSegment = helpers.lineString(\n            [previousCoords, currentCoord],\n            feature.properties\n          );\n          if (\n            callback(\n              currentSegment,\n              featureIndex,\n              multiFeatureIndex,\n              geometryIndex,\n              segmentIndex\n            ) === false\n          )\n            return false;\n          segmentIndex++;\n          previousCoords = currentCoord;\n        }\n      ) === false\n    )\n      return false;\n  });\n}\n\n/**\n * Callback for segmentReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n *  - The previousValue argument is initialValue.\n *  - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n *  - The previousValue argument is the value of the first element present in the array.\n *  - The currentValue argument is the value of the second element present in the array.\n *\n * @callback segmentReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Feature<LineString>} currentSegment The current Segment being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n * @param {number} geometryIndex The current index of the Geometry being processed.\n * @param {number} segmentIndex The current index of the Segment being processed.\n */\n\n/**\n * Reduce 2-vertex line segment in any GeoJSON object, similar to Array.reduce()\n * (Multi)Point geometries do not contain segments therefore they are ignored during this operation.\n *\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON\n * @param {Function} callback a method that takes (previousValue, currentSegment, currentIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {void}\n * @example\n * var polygon = turf.polygon([[[-50, 5], [-40, -10], [-50, -10], [-40, 5], [-50, 5]]]);\n *\n * // Iterate over GeoJSON by 2-vertex segments\n * turf.segmentReduce(polygon, function (previousSegment, currentSegment, featureIndex, multiFeatureIndex, geometryIndex, segmentIndex) {\n *   //= previousSegment\n *   //= currentSegment\n *   //= featureIndex\n *   //= multiFeatureIndex\n *   //= geometryIndex\n *   //= segmentIndex\n *   return currentSegment\n * });\n *\n * // Calculate the total number of segments\n * var initialValue = 0\n * var total = turf.segmentReduce(polygon, function (previousValue) {\n *     previousValue++;\n *     return previousValue;\n * }, initialValue);\n */\nfunction segmentReduce(geojson, callback, initialValue) {\n  var previousValue = initialValue;\n  var started = false;\n  segmentEach(\n    geojson,\n    function (\n      currentSegment,\n      featureIndex,\n      multiFeatureIndex,\n      geometryIndex,\n      segmentIndex\n    ) {\n      if (started === false && initialValue === undefined)\n        previousValue = currentSegment;\n      else\n        previousValue = callback(\n          previousValue,\n          currentSegment,\n          featureIndex,\n          multiFeatureIndex,\n          geometryIndex,\n          segmentIndex\n        );\n      started = true;\n    }\n  );\n  return previousValue;\n}\n\n/**\n * Callback for lineEach\n *\n * @callback lineEachCallback\n * @param {Feature<LineString>} currentLine The current LineString|LinearRing being processed\n * @param {number} featureIndex The current index of the Feature being processed\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed\n * @param {number} geometryIndex The current index of the Geometry being processed\n */\n\n/**\n * Iterate over line or ring coordinates in LineString, Polygon, MultiLineString, MultiPolygon Features or Geometries,\n * similar to Array.forEach.\n *\n * @name lineEach\n * @param {Geometry|Feature<LineString|Polygon|MultiLineString|MultiPolygon>} geojson object\n * @param {Function} callback a method that takes (currentLine, featureIndex, multiFeatureIndex, geometryIndex)\n * @example\n * var multiLine = turf.multiLineString([\n *   [[26, 37], [35, 45]],\n *   [[36, 53], [38, 50], [41, 55]]\n * ]);\n *\n * turf.lineEach(multiLine, function (currentLine, featureIndex, multiFeatureIndex, geometryIndex) {\n *   //=currentLine\n *   //=featureIndex\n *   //=multiFeatureIndex\n *   //=geometryIndex\n * });\n */\nfunction lineEach(geojson, callback) {\n  // validation\n  if (!geojson) throw new Error(\"geojson is required\");\n\n  flattenEach(geojson, function (feature, featureIndex, multiFeatureIndex) {\n    if (feature.geometry === null) return;\n    var type = feature.geometry.type;\n    var coords = feature.geometry.coordinates;\n    switch (type) {\n      case \"LineString\":\n        if (callback(feature, featureIndex, multiFeatureIndex, 0, 0) === false)\n          return false;\n        break;\n      case \"Polygon\":\n        for (\n          var geometryIndex = 0;\n          geometryIndex < coords.length;\n          geometryIndex++\n        ) {\n          if (\n            callback(\n              helpers.lineString(coords[geometryIndex], feature.properties),\n              featureIndex,\n              multiFeatureIndex,\n              geometryIndex\n            ) === false\n          )\n            return false;\n        }\n        break;\n    }\n  });\n}\n\n/**\n * Callback for lineReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n *  - The previousValue argument is initialValue.\n *  - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n *  - The previousValue argument is the value of the first element present in the array.\n *  - The currentValue argument is the value of the second element present in the array.\n *\n * @callback lineReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Feature<LineString>} currentLine The current LineString|LinearRing being processed.\n * @param {number} featureIndex The current index of the Feature being processed\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed\n * @param {number} geometryIndex The current index of the Geometry being processed\n */\n\n/**\n * Reduce features in any GeoJSON object, similar to Array.reduce().\n *\n * @name lineReduce\n * @param {Geometry|Feature<LineString|Polygon|MultiLineString|MultiPolygon>} geojson object\n * @param {Function} callback a method that takes (previousValue, currentLine, featureIndex, multiFeatureIndex, geometryIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {*} The value that results from the reduction.\n * @example\n * var multiPoly = turf.multiPolygon([\n *   turf.polygon([[[12,48],[2,41],[24,38],[12,48]], [[9,44],[13,41],[13,45],[9,44]]]),\n *   turf.polygon([[[5, 5], [0, 0], [2, 2], [4, 4], [5, 5]]])\n * ]);\n *\n * turf.lineReduce(multiPoly, function (previousValue, currentLine, featureIndex, multiFeatureIndex, geometryIndex) {\n *   //=previousValue\n *   //=currentLine\n *   //=featureIndex\n *   //=multiFeatureIndex\n *   //=geometryIndex\n *   return currentLine\n * });\n */\nfunction lineReduce(geojson, callback, initialValue) {\n  var previousValue = initialValue;\n  lineEach(\n    geojson,\n    function (currentLine, featureIndex, multiFeatureIndex, geometryIndex) {\n      if (featureIndex === 0 && initialValue === undefined)\n        previousValue = currentLine;\n      else\n        previousValue = callback(\n          previousValue,\n          currentLine,\n          featureIndex,\n          multiFeatureIndex,\n          geometryIndex\n        );\n    }\n  );\n  return previousValue;\n}\n\n/**\n * Finds a particular 2-vertex LineString Segment from a GeoJSON using `@turf/meta` indexes.\n *\n * Negative indexes are permitted.\n * Point & MultiPoint will always return null.\n *\n * @param {FeatureCollection|Feature|Geometry} geojson Any GeoJSON Feature or Geometry\n * @param {Object} [options={}] Optional parameters\n * @param {number} [options.featureIndex=0] Feature Index\n * @param {number} [options.multiFeatureIndex=0] Multi-Feature Index\n * @param {number} [options.geometryIndex=0] Geometry Index\n * @param {number} [options.segmentIndex=0] Segment Index\n * @param {Object} [options.properties={}] Translate Properties to output LineString\n * @param {BBox} [options.bbox={}] Translate BBox to output LineString\n * @param {number|string} [options.id={}] Translate Id to output LineString\n * @returns {Feature<LineString>} 2-vertex GeoJSON Feature LineString\n * @example\n * var multiLine = turf.multiLineString([\n *     [[10, 10], [50, 30], [30, 40]],\n *     [[-10, -10], [-50, -30], [-30, -40]]\n * ]);\n *\n * // First Segment (defaults are 0)\n * turf.findSegment(multiLine);\n * // => Feature<LineString<[[10, 10], [50, 30]]>>\n *\n * // First Segment of 2nd Multi Feature\n * turf.findSegment(multiLine, {multiFeatureIndex: 1});\n * // => Feature<LineString<[[-10, -10], [-50, -30]]>>\n *\n * // Last Segment of Last Multi Feature\n * turf.findSegment(multiLine, {multiFeatureIndex: -1, segmentIndex: -1});\n * // => Feature<LineString<[[-50, -30], [-30, -40]]>>\n */\nfunction findSegment(geojson, options) {\n  // Optional Parameters\n  options = options || {};\n  if (!helpers.isObject(options)) throw new Error(\"options is invalid\");\n  var featureIndex = options.featureIndex || 0;\n  var multiFeatureIndex = options.multiFeatureIndex || 0;\n  var geometryIndex = options.geometryIndex || 0;\n  var segmentIndex = options.segmentIndex || 0;\n\n  // Find FeatureIndex\n  var properties = options.properties;\n  var geometry;\n\n  switch (geojson.type) {\n    case \"FeatureCollection\":\n      if (featureIndex < 0)\n        featureIndex = geojson.features.length + featureIndex;\n      properties = properties || geojson.features[featureIndex].properties;\n      geometry = geojson.features[featureIndex].geometry;\n      break;\n    case \"Feature\":\n      properties = properties || geojson.properties;\n      geometry = geojson.geometry;\n      break;\n    case \"Point\":\n    case \"MultiPoint\":\n      return null;\n    case \"LineString\":\n    case \"Polygon\":\n    case \"MultiLineString\":\n    case \"MultiPolygon\":\n      geometry = geojson;\n      break;\n    default:\n      throw new Error(\"geojson is invalid\");\n  }\n\n  // Find SegmentIndex\n  if (geometry === null) return null;\n  var coords = geometry.coordinates;\n  switch (geometry.type) {\n    case \"Point\":\n    case \"MultiPoint\":\n      return null;\n    case \"LineString\":\n      if (segmentIndex < 0) segmentIndex = coords.length + segmentIndex - 1;\n      return helpers.lineString(\n        [coords[segmentIndex], coords[segmentIndex + 1]],\n        properties,\n        options\n      );\n    case \"Polygon\":\n      if (geometryIndex < 0) geometryIndex = coords.length + geometryIndex;\n      if (segmentIndex < 0)\n        segmentIndex = coords[geometryIndex].length + segmentIndex - 1;\n      return helpers.lineString(\n        [\n          coords[geometryIndex][segmentIndex],\n          coords[geometryIndex][segmentIndex + 1],\n        ],\n        properties,\n        options\n      );\n    case \"MultiLineString\":\n      if (multiFeatureIndex < 0)\n        multiFeatureIndex = coords.length + multiFeatureIndex;\n      if (segmentIndex < 0)\n        segmentIndex = coords[multiFeatureIndex].length + segmentIndex - 1;\n      return helpers.lineString(\n        [\n          coords[multiFeatureIndex][segmentIndex],\n          coords[multiFeatureIndex][segmentIndex + 1],\n        ],\n        properties,\n        options\n      );\n    case \"MultiPolygon\":\n      if (multiFeatureIndex < 0)\n        multiFeatureIndex = coords.length + multiFeatureIndex;\n      if (geometryIndex < 0)\n        geometryIndex = coords[multiFeatureIndex].length + geometryIndex;\n      if (segmentIndex < 0)\n        segmentIndex =\n          coords[multiFeatureIndex][geometryIndex].length - segmentIndex - 1;\n      return helpers.lineString(\n        [\n          coords[multiFeatureIndex][geometryIndex][segmentIndex],\n          coords[multiFeatureIndex][geometryIndex][segmentIndex + 1],\n        ],\n        properties,\n        options\n      );\n  }\n  throw new Error(\"geojson is invalid\");\n}\n\n/**\n * Finds a particular Point from a GeoJSON using `@turf/meta` indexes.\n *\n * Negative indexes are permitted.\n *\n * @param {FeatureCollection|Feature|Geometry} geojson Any GeoJSON Feature or Geometry\n * @param {Object} [options={}] Optional parameters\n * @param {number} [options.featureIndex=0] Feature Index\n * @param {number} [options.multiFeatureIndex=0] Multi-Feature Index\n * @param {number} [options.geometryIndex=0] Geometry Index\n * @param {number} [options.coordIndex=0] Coord Index\n * @param {Object} [options.properties={}] Translate Properties to output Point\n * @param {BBox} [options.bbox={}] Translate BBox to output Point\n * @param {number|string} [options.id={}] Translate Id to output Point\n * @returns {Feature<Point>} 2-vertex GeoJSON Feature Point\n * @example\n * var multiLine = turf.multiLineString([\n *     [[10, 10], [50, 30], [30, 40]],\n *     [[-10, -10], [-50, -30], [-30, -40]]\n * ]);\n *\n * // First Segment (defaults are 0)\n * turf.findPoint(multiLine);\n * // => Feature<Point<[10, 10]>>\n *\n * // First Segment of the 2nd Multi-Feature\n * turf.findPoint(multiLine, {multiFeatureIndex: 1});\n * // => Feature<Point<[-10, -10]>>\n *\n * // Last Segment of last Multi-Feature\n * turf.findPoint(multiLine, {multiFeatureIndex: -1, coordIndex: -1});\n * // => Feature<Point<[-30, -40]>>\n */\nfunction findPoint(geojson, options) {\n  // Optional Parameters\n  options = options || {};\n  if (!helpers.isObject(options)) throw new Error(\"options is invalid\");\n  var featureIndex = options.featureIndex || 0;\n  var multiFeatureIndex = options.multiFeatureIndex || 0;\n  var geometryIndex = options.geometryIndex || 0;\n  var coordIndex = options.coordIndex || 0;\n\n  // Find FeatureIndex\n  var properties = options.properties;\n  var geometry;\n\n  switch (geojson.type) {\n    case \"FeatureCollection\":\n      if (featureIndex < 0)\n        featureIndex = geojson.features.length + featureIndex;\n      properties = properties || geojson.features[featureIndex].properties;\n      geometry = geojson.features[featureIndex].geometry;\n      break;\n    case \"Feature\":\n      properties = properties || geojson.properties;\n      geometry = geojson.geometry;\n      break;\n    case \"Point\":\n    case \"MultiPoint\":\n      return null;\n    case \"LineString\":\n    case \"Polygon\":\n    case \"MultiLineString\":\n    case \"MultiPolygon\":\n      geometry = geojson;\n      break;\n    default:\n      throw new Error(\"geojson is invalid\");\n  }\n\n  // Find Coord Index\n  if (geometry === null) return null;\n  var coords = geometry.coordinates;\n  switch (geometry.type) {\n    case \"Point\":\n      return helpers.point(coords, properties, options);\n    case \"MultiPoint\":\n      if (multiFeatureIndex < 0)\n        multiFeatureIndex = coords.length + multiFeatureIndex;\n      return helpers.point(coords[multiFeatureIndex], properties, options);\n    case \"LineString\":\n      if (coordIndex < 0) coordIndex = coords.length + coordIndex;\n      return helpers.point(coords[coordIndex], properties, options);\n    case \"Polygon\":\n      if (geometryIndex < 0) geometryIndex = coords.length + geometryIndex;\n      if (coordIndex < 0)\n        coordIndex = coords[geometryIndex].length + coordIndex;\n      return helpers.point(coords[geometryIndex][coordIndex], properties, options);\n    case \"MultiLineString\":\n      if (multiFeatureIndex < 0)\n        multiFeatureIndex = coords.length + multiFeatureIndex;\n      if (coordIndex < 0)\n        coordIndex = coords[multiFeatureIndex].length + coordIndex;\n      return helpers.point(coords[multiFeatureIndex][coordIndex], properties, options);\n    case \"MultiPolygon\":\n      if (multiFeatureIndex < 0)\n        multiFeatureIndex = coords.length + multiFeatureIndex;\n      if (geometryIndex < 0)\n        geometryIndex = coords[multiFeatureIndex].length + geometryIndex;\n      if (coordIndex < 0)\n        coordIndex =\n          coords[multiFeatureIndex][geometryIndex].length - coordIndex;\n      return helpers.point(\n        coords[multiFeatureIndex][geometryIndex][coordIndex],\n        properties,\n        options\n      );\n  }\n  throw new Error(\"geojson is invalid\");\n}\n\nexports.coordAll = coordAll;\nexports.coordEach = coordEach;\nexports.coordReduce = coordReduce;\nexports.featureEach = featureEach;\nexports.featureReduce = featureReduce;\nexports.findPoint = findPoint;\nexports.findSegment = findSegment;\nexports.flattenEach = flattenEach;\nexports.flattenReduce = flattenReduce;\nexports.geomEach = geomEach;\nexports.geomReduce = geomReduce;\nexports.lineEach = lineEach;\nexports.lineReduce = lineReduce;\nexports.propEach = propEach;\nexports.propReduce = propReduce;\nexports.segmentEach = segmentEach;\nexports.segmentReduce = segmentReduce;\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n    return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar destination_1 = __importDefault(require(\"@turf/destination\"));\nvar helpers_1 = require(\"@turf/helpers\");\n/**\n * Takes a {@link Point} and calculates the circle polygon given a radius in degrees, radians, miles, or kilometers; and steps for precision.\n *\n * @name circle\n * @param {Feature<Point>|number[]} center center point\n * @param {number} radius radius of the circle\n * @param {Object} [options={}] Optional parameters\n * @param {number} [options.steps=64] number of steps\n * @param {string} [options.units='kilometers'] miles, kilometers, degrees, or radians\n * @param {Object} [options.properties={}] properties\n * @returns {Feature<Polygon>} circle polygon\n * @example\n * var center = [-75.343, 39.984];\n * var radius = 5;\n * var options = {steps: 10, units: 'kilometers', properties: {foo: 'bar'}};\n * var circle = turf.circle(center, radius, options);\n *\n * //addToMap\n * var addToMap = [turf.point(center), circle]\n */\nfunction circle(center, radius, options) {\n    if (options === void 0) { options = {}; }\n    // default params\n    var steps = options.steps || 64;\n    var properties = options.properties\n        ? options.properties\n        : !Array.isArray(center) && center.type === \"Feature\" && center.properties\n            ? center.properties\n            : {};\n    // main\n    var coordinates = [];\n    for (var i = 0; i < steps; i++) {\n        coordinates.push(destination_1.default(center, radius, (i * -360) / steps, options).geometry\n            .coordinates);\n    }\n    coordinates.push(coordinates[0]);\n    return helpers_1.polygon([coordinates], properties);\n}\nexports.default = circle;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * @module helpers\n */\n/**\n * Earth Radius used with the Harvesine formula and approximates using a spherical (non-ellipsoid) Earth.\n *\n * @memberof helpers\n * @type {number}\n */\nexports.earthRadius = 6371008.8;\n/**\n * Unit of measurement factors using a spherical (non-ellipsoid) earth radius.\n *\n * @memberof helpers\n * @type {Object}\n */\nexports.factors = {\n    centimeters: exports.earthRadius * 100,\n    centimetres: exports.earthRadius * 100,\n    degrees: exports.earthRadius / 111325,\n    feet: exports.earthRadius * 3.28084,\n    inches: exports.earthRadius * 39.37,\n    kilometers: exports.earthRadius / 1000,\n    kilometres: exports.earthRadius / 1000,\n    meters: exports.earthRadius,\n    metres: exports.earthRadius,\n    miles: exports.earthRadius / 1609.344,\n    millimeters: exports.earthRadius * 1000,\n    millimetres: exports.earthRadius * 1000,\n    nauticalmiles: exports.earthRadius / 1852,\n    radians: 1,\n    yards: exports.earthRadius * 1.0936,\n};\n/**\n * Units of measurement factors based on 1 meter.\n *\n * @memberof helpers\n * @type {Object}\n */\nexports.unitsFactors = {\n    centimeters: 100,\n    centimetres: 100,\n    degrees: 1 / 111325,\n    feet: 3.28084,\n    inches: 39.37,\n    kilometers: 1 / 1000,\n    kilometres: 1 / 1000,\n    meters: 1,\n    metres: 1,\n    miles: 1 / 1609.344,\n    millimeters: 1000,\n    millimetres: 1000,\n    nauticalmiles: 1 / 1852,\n    radians: 1 / exports.earthRadius,\n    yards: 1.0936133,\n};\n/**\n * Area of measurement factors based on 1 square meter.\n *\n * @memberof helpers\n * @type {Object}\n */\nexports.areaFactors = {\n    acres: 0.000247105,\n    centimeters: 10000,\n    centimetres: 10000,\n    feet: 10.763910417,\n    hectares: 0.0001,\n    inches: 1550.003100006,\n    kilometers: 0.000001,\n    kilometres: 0.000001,\n    meters: 1,\n    metres: 1,\n    miles: 3.86e-7,\n    millimeters: 1000000,\n    millimetres: 1000000,\n    yards: 1.195990046,\n};\n/**\n * Wraps a GeoJSON {@link Geometry} in a GeoJSON {@link Feature}.\n *\n * @name feature\n * @param {Geometry} geometry input geometry\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} a GeoJSON Feature\n * @example\n * var geometry = {\n *   \"type\": \"Point\",\n *   \"coordinates\": [110, 50]\n * };\n *\n * var feature = turf.feature(geometry);\n *\n * //=feature\n */\nfunction feature(geom, properties, options) {\n    if (options === void 0) { options = {}; }\n    var feat = { type: \"Feature\" };\n    if (options.id === 0 || options.id) {\n        feat.id = options.id;\n    }\n    if (options.bbox) {\n        feat.bbox = options.bbox;\n    }\n    feat.properties = properties || {};\n    feat.geometry = geom;\n    return feat;\n}\nexports.feature = feature;\n/**\n * Creates a GeoJSON {@link Geometry} from a Geometry string type & coordinates.\n * For GeometryCollection type use `helpers.geometryCollection`\n *\n * @name geometry\n * @param {string} type Geometry Type\n * @param {Array<any>} coordinates Coordinates\n * @param {Object} [options={}] Optional Parameters\n * @returns {Geometry} a GeoJSON Geometry\n * @example\n * var type = \"Point\";\n * var coordinates = [110, 50];\n * var geometry = turf.geometry(type, coordinates);\n * // => geometry\n */\nfunction geometry(type, coordinates, _options) {\n    if (_options === void 0) { _options = {}; }\n    switch (type) {\n        case \"Point\":\n            return point(coordinates).geometry;\n        case \"LineString\":\n            return lineString(coordinates).geometry;\n        case \"Polygon\":\n            return polygon(coordinates).geometry;\n        case \"MultiPoint\":\n            return multiPoint(coordinates).geometry;\n        case \"MultiLineString\":\n            return multiLineString(coordinates).geometry;\n        case \"MultiPolygon\":\n            return multiPolygon(coordinates).geometry;\n        default:\n            throw new Error(type + \" is invalid\");\n    }\n}\nexports.geometry = geometry;\n/**\n * Creates a {@link Point} {@link Feature} from a Position.\n *\n * @name point\n * @param {Array<number>} coordinates longitude, latitude position (each in decimal degrees)\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<Point>} a Point feature\n * @example\n * var point = turf.point([-75.343, 39.984]);\n *\n * //=point\n */\nfunction point(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    if (!coordinates) {\n        throw new Error(\"coordinates is required\");\n    }\n    if (!Array.isArray(coordinates)) {\n        throw new Error(\"coordinates must be an Array\");\n    }\n    if (coordinates.length < 2) {\n        throw new Error(\"coordinates must be at least 2 numbers long\");\n    }\n    if (!isNumber(coordinates[0]) || !isNumber(coordinates[1])) {\n        throw new Error(\"coordinates must contain numbers\");\n    }\n    var geom = {\n        type: \"Point\",\n        coordinates: coordinates,\n    };\n    return feature(geom, properties, options);\n}\nexports.point = point;\n/**\n * Creates a {@link Point} {@link FeatureCollection} from an Array of Point coordinates.\n *\n * @name points\n * @param {Array<Array<number>>} coordinates an array of Points\n * @param {Object} [properties={}] Translate these properties to each Feature\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north]\n * associated with the FeatureCollection\n * @param {string|number} [options.id] Identifier associated with the FeatureCollection\n * @returns {FeatureCollection<Point>} Point Feature\n * @example\n * var points = turf.points([\n *   [-75, 39],\n *   [-80, 45],\n *   [-78, 50]\n * ]);\n *\n * //=points\n */\nfunction points(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    return featureCollection(coordinates.map(function (coords) {\n        return point(coords, properties);\n    }), options);\n}\nexports.points = points;\n/**\n * Creates a {@link Polygon} {@link Feature} from an Array of LinearRings.\n *\n * @name polygon\n * @param {Array<Array<Array<number>>>} coordinates an array of LinearRings\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<Polygon>} Polygon Feature\n * @example\n * var polygon = turf.polygon([[[-5, 52], [-4, 56], [-2, 51], [-7, 54], [-5, 52]]], { name: 'poly1' });\n *\n * //=polygon\n */\nfunction polygon(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    for (var _i = 0, coordinates_1 = coordinates; _i < coordinates_1.length; _i++) {\n        var ring = coordinates_1[_i];\n        if (ring.length < 4) {\n            throw new Error(\"Each LinearRing of a Polygon must have 4 or more Positions.\");\n        }\n        for (var j = 0; j < ring[ring.length - 1].length; j++) {\n            // Check if first point of Polygon contains two numbers\n            if (ring[ring.length - 1][j] !== ring[0][j]) {\n                throw new Error(\"First and last Position are not equivalent.\");\n            }\n        }\n    }\n    var geom = {\n        type: \"Polygon\",\n        coordinates: coordinates,\n    };\n    return feature(geom, properties, options);\n}\nexports.polygon = polygon;\n/**\n * Creates a {@link Polygon} {@link FeatureCollection} from an Array of Polygon coordinates.\n *\n * @name polygons\n * @param {Array<Array<Array<Array<number>>>>} coordinates an array of Polygon coordinates\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the FeatureCollection\n * @returns {FeatureCollection<Polygon>} Polygon FeatureCollection\n * @example\n * var polygons = turf.polygons([\n *   [[[-5, 52], [-4, 56], [-2, 51], [-7, 54], [-5, 52]]],\n *   [[[-15, 42], [-14, 46], [-12, 41], [-17, 44], [-15, 42]]],\n * ]);\n *\n * //=polygons\n */\nfunction polygons(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    return featureCollection(coordinates.map(function (coords) {\n        return polygon(coords, properties);\n    }), options);\n}\nexports.polygons = polygons;\n/**\n * Creates a {@link LineString} {@link Feature} from an Array of Positions.\n *\n * @name lineString\n * @param {Array<Array<number>>} coordinates an array of Positions\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<LineString>} LineString Feature\n * @example\n * var linestring1 = turf.lineString([[-24, 63], [-23, 60], [-25, 65], [-20, 69]], {name: 'line 1'});\n * var linestring2 = turf.lineString([[-14, 43], [-13, 40], [-15, 45], [-10, 49]], {name: 'line 2'});\n *\n * //=linestring1\n * //=linestring2\n */\nfunction lineString(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    if (coordinates.length < 2) {\n        throw new Error(\"coordinates must be an array of two or more positions\");\n    }\n    var geom = {\n        type: \"LineString\",\n        coordinates: coordinates,\n    };\n    return feature(geom, properties, options);\n}\nexports.lineString = lineString;\n/**\n * Creates a {@link LineString} {@link FeatureCollection} from an Array of LineString coordinates.\n *\n * @name lineStrings\n * @param {Array<Array<Array<number>>>} coordinates an array of LinearRings\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north]\n * associated with the FeatureCollection\n * @param {string|number} [options.id] Identifier associated with the FeatureCollection\n * @returns {FeatureCollection<LineString>} LineString FeatureCollection\n * @example\n * var linestrings = turf.lineStrings([\n *   [[-24, 63], [-23, 60], [-25, 65], [-20, 69]],\n *   [[-14, 43], [-13, 40], [-15, 45], [-10, 49]]\n * ]);\n *\n * //=linestrings\n */\nfunction lineStrings(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    return featureCollection(coordinates.map(function (coords) {\n        return lineString(coords, properties);\n    }), options);\n}\nexports.lineStrings = lineStrings;\n/**\n * Takes one or more {@link Feature|Features} and creates a {@link FeatureCollection}.\n *\n * @name featureCollection\n * @param {Feature[]} features input features\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {FeatureCollection} FeatureCollection of Features\n * @example\n * var locationA = turf.point([-75.343, 39.984], {name: 'Location A'});\n * var locationB = turf.point([-75.833, 39.284], {name: 'Location B'});\n * var locationC = turf.point([-75.534, 39.123], {name: 'Location C'});\n *\n * var collection = turf.featureCollection([\n *   locationA,\n *   locationB,\n *   locationC\n * ]);\n *\n * //=collection\n */\nfunction featureCollection(features, options) {\n    if (options === void 0) { options = {}; }\n    var fc = { type: \"FeatureCollection\" };\n    if (options.id) {\n        fc.id = options.id;\n    }\n    if (options.bbox) {\n        fc.bbox = options.bbox;\n    }\n    fc.features = features;\n    return fc;\n}\nexports.featureCollection = featureCollection;\n/**\n * Creates a {@link Feature<MultiLineString>} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name multiLineString\n * @param {Array<Array<Array<number>>>} coordinates an array of LineStrings\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<MultiLineString>} a MultiLineString feature\n * @throws {Error} if no coordinates are passed\n * @example\n * var multiLine = turf.multiLineString([[[0,0],[10,10]]]);\n *\n * //=multiLine\n */\nfunction multiLineString(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    var geom = {\n        type: \"MultiLineString\",\n        coordinates: coordinates,\n    };\n    return feature(geom, properties, options);\n}\nexports.multiLineString = multiLineString;\n/**\n * Creates a {@link Feature<MultiPoint>} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name multiPoint\n * @param {Array<Array<number>>} coordinates an array of Positions\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<MultiPoint>} a MultiPoint feature\n * @throws {Error} if no coordinates are passed\n * @example\n * var multiPt = turf.multiPoint([[0,0],[10,10]]);\n *\n * //=multiPt\n */\nfunction multiPoint(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    var geom = {\n        type: \"MultiPoint\",\n        coordinates: coordinates,\n    };\n    return feature(geom, properties, options);\n}\nexports.multiPoint = multiPoint;\n/**\n * Creates a {@link Feature<MultiPolygon>} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name multiPolygon\n * @param {Array<Array<Array<Array<number>>>>} coordinates an array of Polygons\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<MultiPolygon>} a multipolygon feature\n * @throws {Error} if no coordinates are passed\n * @example\n * var multiPoly = turf.multiPolygon([[[[0,0],[0,10],[10,10],[10,0],[0,0]]]]);\n *\n * //=multiPoly\n *\n */\nfunction multiPolygon(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    var geom = {\n        type: \"MultiPolygon\",\n        coordinates: coordinates,\n    };\n    return feature(geom, properties, options);\n}\nexports.multiPolygon = multiPolygon;\n/**\n * Creates a {@link Feature<GeometryCollection>} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name geometryCollection\n * @param {Array<Geometry>} geometries an array of GeoJSON Geometries\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<GeometryCollection>} a GeoJSON GeometryCollection Feature\n * @example\n * var pt = turf.geometry(\"Point\", [100, 0]);\n * var line = turf.geometry(\"LineString\", [[101, 0], [102, 1]]);\n * var collection = turf.geometryCollection([pt, line]);\n *\n * // => collection\n */\nfunction geometryCollection(geometries, properties, options) {\n    if (options === void 0) { options = {}; }\n    var geom = {\n        type: \"GeometryCollection\",\n        geometries: geometries,\n    };\n    return feature(geom, properties, options);\n}\nexports.geometryCollection = geometryCollection;\n/**\n * Round number to precision\n *\n * @param {number} num Number\n * @param {number} [precision=0] Precision\n * @returns {number} rounded number\n * @example\n * turf.round(120.4321)\n * //=120\n *\n * turf.round(120.4321, 2)\n * //=120.43\n */\nfunction round(num, precision) {\n    if (precision === void 0) { precision = 0; }\n    if (precision && !(precision >= 0)) {\n        throw new Error(\"precision must be a positive number\");\n    }\n    var multiplier = Math.pow(10, precision || 0);\n    return Math.round(num * multiplier) / multiplier;\n}\nexports.round = round;\n/**\n * Convert a distance measurement (assuming a spherical Earth) from radians to a more friendly unit.\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet\n *\n * @name radiansToLength\n * @param {number} radians in radians across the sphere\n * @param {string} [units=\"kilometers\"] can be degrees, radians, miles, inches, yards, metres,\n * meters, kilometres, kilometers.\n * @returns {number} distance\n */\nfunction radiansToLength(radians, units) {\n    if (units === void 0) { units = \"kilometers\"; }\n    var factor = exports.factors[units];\n    if (!factor) {\n        throw new Error(units + \" units is invalid\");\n    }\n    return radians * factor;\n}\nexports.radiansToLength = radiansToLength;\n/**\n * Convert a distance measurement (assuming a spherical Earth) from a real-world unit into radians\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet\n *\n * @name lengthToRadians\n * @param {number} distance in real units\n * @param {string} [units=\"kilometers\"] can be degrees, radians, miles, inches, yards, metres,\n * meters, kilometres, kilometers.\n * @returns {number} radians\n */\nfunction lengthToRadians(distance, units) {\n    if (units === void 0) { units = \"kilometers\"; }\n    var factor = exports.factors[units];\n    if (!factor) {\n        throw new Error(units + \" units is invalid\");\n    }\n    return distance / factor;\n}\nexports.lengthToRadians = lengthToRadians;\n/**\n * Convert a distance measurement (assuming a spherical Earth) from a real-world unit into degrees\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, centimeters, kilometres, feet\n *\n * @name lengthToDegrees\n * @param {number} distance in real units\n * @param {string} [units=\"kilometers\"] can be degrees, radians, miles, inches, yards, metres,\n * meters, kilometres, kilometers.\n * @returns {number} degrees\n */\nfunction lengthToDegrees(distance, units) {\n    return radiansToDegrees(lengthToRadians(distance, units));\n}\nexports.lengthToDegrees = lengthToDegrees;\n/**\n * Converts any bearing angle from the north line direction (positive clockwise)\n * and returns an angle between 0-360 degrees (positive clockwise), 0 being the north line\n *\n * @name bearingToAzimuth\n * @param {number} bearing angle, between -180 and +180 degrees\n * @returns {number} angle between 0 and 360 degrees\n */\nfunction bearingToAzimuth(bearing) {\n    var angle = bearing % 360;\n    if (angle < 0) {\n        angle += 360;\n    }\n    return angle;\n}\nexports.bearingToAzimuth = bearingToAzimuth;\n/**\n * Converts an angle in radians to degrees\n *\n * @name radiansToDegrees\n * @param {number} radians angle in radians\n * @returns {number} degrees between 0 and 360 degrees\n */\nfunction radiansToDegrees(radians) {\n    var degrees = radians % (2 * Math.PI);\n    return (degrees * 180) / Math.PI;\n}\nexports.radiansToDegrees = radiansToDegrees;\n/**\n * Converts an angle in degrees to radians\n *\n * @name degreesToRadians\n * @param {number} degrees angle between 0 and 360 degrees\n * @returns {number} angle in radians\n */\nfunction degreesToRadians(degrees) {\n    var radians = degrees % 360;\n    return (radians * Math.PI) / 180;\n}\nexports.degreesToRadians = degreesToRadians;\n/**\n * Converts a length to the requested unit.\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet\n *\n * @param {number} length to be converted\n * @param {Units} [originalUnit=\"kilometers\"] of the length\n * @param {Units} [finalUnit=\"kilometers\"] returned unit\n * @returns {number} the converted length\n */\nfunction convertLength(length, originalUnit, finalUnit) {\n    if (originalUnit === void 0) { originalUnit = \"kilometers\"; }\n    if (finalUnit === void 0) { finalUnit = \"kilometers\"; }\n    if (!(length >= 0)) {\n        throw new Error(\"length must be a positive number\");\n    }\n    return radiansToLength(lengthToRadians(length, originalUnit), finalUnit);\n}\nexports.convertLength = convertLength;\n/**\n * Converts a area to the requested unit.\n * Valid units: kilometers, kilometres, meters, metres, centimetres, millimeters, acres, miles, yards, feet, inches, hectares\n * @param {number} area to be converted\n * @param {Units} [originalUnit=\"meters\"] of the distance\n * @param {Units} [finalUnit=\"kilometers\"] returned unit\n * @returns {number} the converted area\n */\nfunction convertArea(area, originalUnit, finalUnit) {\n    if (originalUnit === void 0) { originalUnit = \"meters\"; }\n    if (finalUnit === void 0) { finalUnit = \"kilometers\"; }\n    if (!(area >= 0)) {\n        throw new Error(\"area must be a positive number\");\n    }\n    var startFactor = exports.areaFactors[originalUnit];\n    if (!startFactor) {\n        throw new Error(\"invalid original units\");\n    }\n    var finalFactor = exports.areaFactors[finalUnit];\n    if (!finalFactor) {\n        throw new Error(\"invalid final units\");\n    }\n    return (area / startFactor) * finalFactor;\n}\nexports.convertArea = convertArea;\n/**\n * isNumber\n *\n * @param {*} num Number to validate\n * @returns {boolean} true/false\n * @example\n * turf.isNumber(123)\n * //=true\n * turf.isNumber('foo')\n * //=false\n */\nfunction isNumber(num) {\n    return !isNaN(num) && num !== null && !Array.isArray(num);\n}\nexports.isNumber = isNumber;\n/**\n * isObject\n *\n * @param {*} input variable to validate\n * @returns {boolean} true/false\n * @example\n * turf.isObject({elevation: 10})\n * //=true\n * turf.isObject('foo')\n * //=false\n */\nfunction isObject(input) {\n    return !!input && input.constructor === Object;\n}\nexports.isObject = isObject;\n/**\n * Validate BBox\n *\n * @private\n * @param {Array<number>} bbox BBox to validate\n * @returns {void}\n * @throws Error if BBox is not valid\n * @example\n * validateBBox([-180, -40, 110, 50])\n * //=OK\n * validateBBox([-180, -40])\n * //=Error\n * validateBBox('Foo')\n * //=Error\n * validateBBox(5)\n * //=Error\n * validateBBox(null)\n * //=Error\n * validateBBox(undefined)\n * //=Error\n */\nfunction validateBBox(bbox) {\n    if (!bbox) {\n        throw new Error(\"bbox is required\");\n    }\n    if (!Array.isArray(bbox)) {\n        throw new Error(\"bbox must be an Array\");\n    }\n    if (bbox.length !== 4 && bbox.length !== 6) {\n        throw new Error(\"bbox must be an Array of 4 or 6 numbers\");\n    }\n    bbox.forEach(function (num) {\n        if (!isNumber(num)) {\n            throw new Error(\"bbox must only contain numbers\");\n        }\n    });\n}\nexports.validateBBox = validateBBox;\n/**\n * Validate Id\n *\n * @private\n * @param {string|number} id Id to validate\n * @returns {void}\n * @throws Error if Id is not valid\n * @example\n * validateId([-180, -40, 110, 50])\n * //=Error\n * validateId([-180, -40])\n * //=Error\n * validateId('Foo')\n * //=OK\n * validateId(5)\n * //=OK\n * validateId(null)\n * //=Error\n * validateId(undefined)\n * //=Error\n */\nfunction validateId(id) {\n    if (!id) {\n        throw new Error(\"id is required\");\n    }\n    if ([\"string\", \"number\"].indexOf(typeof id) === -1) {\n        throw new Error(\"id must be a number or a string\");\n    }\n}\nexports.validateId = validateId;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n// http://en.wikipedia.org/wiki/Haversine_formula\n// http://www.movable-type.co.uk/scripts/latlong.html\nvar helpers_1 = require(\"@turf/helpers\");\nvar invariant_1 = require(\"@turf/invariant\");\n/**\n * Takes a {@link Point} and calculates the location of a destination point given a distance in\n * degrees, radians, miles, or kilometers; and bearing in degrees.\n * This uses the [Haversine formula](http://en.wikipedia.org/wiki/Haversine_formula) to account for global curvature.\n *\n * @name destination\n * @param {Coord} origin starting point\n * @param {number} distance distance from the origin point\n * @param {number} bearing ranging from -180 to 180\n * @param {Object} [options={}] Optional parameters\n * @param {string} [options.units='kilometers'] miles, kilometers, degrees, or radians\n * @param {Object} [options.properties={}] Translate properties to Point\n * @returns {Feature<Point>} destination point\n * @example\n * var point = turf.point([-75.343, 39.984]);\n * var distance = 50;\n * var bearing = 90;\n * var options = {units: 'miles'};\n *\n * var destination = turf.destination(point, distance, bearing, options);\n *\n * //addToMap\n * var addToMap = [point, destination]\n * destination.properties['marker-color'] = '#f00';\n * point.properties['marker-color'] = '#0f0';\n */\nfunction destination(origin, distance, bearing, options) {\n    if (options === void 0) { options = {}; }\n    // Handle input\n    var coordinates1 = invariant_1.getCoord(origin);\n    var longitude1 = helpers_1.degreesToRadians(coordinates1[0]);\n    var latitude1 = helpers_1.degreesToRadians(coordinates1[1]);\n    var bearingRad = helpers_1.degreesToRadians(bearing);\n    var radians = helpers_1.lengthToRadians(distance, options.units);\n    // Main\n    var latitude2 = Math.asin(Math.sin(latitude1) * Math.cos(radians) +\n        Math.cos(latitude1) * Math.sin(radians) * Math.cos(bearingRad));\n    var longitude2 = longitude1 +\n        Math.atan2(Math.sin(bearingRad) * Math.sin(radians) * Math.cos(latitude1), Math.cos(radians) - Math.sin(latitude1) * Math.sin(latitude2));\n    var lng = helpers_1.radiansToDegrees(longitude2);\n    var lat = helpers_1.radiansToDegrees(latitude2);\n    return helpers_1.point([lng, lat], options.properties);\n}\nexports.default = destination;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * @module helpers\n */\n/**\n * Earth Radius used with the Harvesine formula and approximates using a spherical (non-ellipsoid) Earth.\n *\n * @memberof helpers\n * @type {number}\n */\nexports.earthRadius = 6371008.8;\n/**\n * Unit of measurement factors using a spherical (non-ellipsoid) earth radius.\n *\n * @memberof helpers\n * @type {Object}\n */\nexports.factors = {\n    centimeters: exports.earthRadius * 100,\n    centimetres: exports.earthRadius * 100,\n    degrees: exports.earthRadius / 111325,\n    feet: exports.earthRadius * 3.28084,\n    inches: exports.earthRadius * 39.37,\n    kilometers: exports.earthRadius / 1000,\n    kilometres: exports.earthRadius / 1000,\n    meters: exports.earthRadius,\n    metres: exports.earthRadius,\n    miles: exports.earthRadius / 1609.344,\n    millimeters: exports.earthRadius * 1000,\n    millimetres: exports.earthRadius * 1000,\n    nauticalmiles: exports.earthRadius / 1852,\n    radians: 1,\n    yards: exports.earthRadius * 1.0936,\n};\n/**\n * Units of measurement factors based on 1 meter.\n *\n * @memberof helpers\n * @type {Object}\n */\nexports.unitsFactors = {\n    centimeters: 100,\n    centimetres: 100,\n    degrees: 1 / 111325,\n    feet: 3.28084,\n    inches: 39.37,\n    kilometers: 1 / 1000,\n    kilometres: 1 / 1000,\n    meters: 1,\n    metres: 1,\n    miles: 1 / 1609.344,\n    millimeters: 1000,\n    millimetres: 1000,\n    nauticalmiles: 1 / 1852,\n    radians: 1 / exports.earthRadius,\n    yards: 1.0936133,\n};\n/**\n * Area of measurement factors based on 1 square meter.\n *\n * @memberof helpers\n * @type {Object}\n */\nexports.areaFactors = {\n    acres: 0.000247105,\n    centimeters: 10000,\n    centimetres: 10000,\n    feet: 10.763910417,\n    hectares: 0.0001,\n    inches: 1550.003100006,\n    kilometers: 0.000001,\n    kilometres: 0.000001,\n    meters: 1,\n    metres: 1,\n    miles: 3.86e-7,\n    millimeters: 1000000,\n    millimetres: 1000000,\n    yards: 1.195990046,\n};\n/**\n * Wraps a GeoJSON {@link Geometry} in a GeoJSON {@link Feature}.\n *\n * @name feature\n * @param {Geometry} geometry input geometry\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} a GeoJSON Feature\n * @example\n * var geometry = {\n *   \"type\": \"Point\",\n *   \"coordinates\": [110, 50]\n * };\n *\n * var feature = turf.feature(geometry);\n *\n * //=feature\n */\nfunction feature(geom, properties, options) {\n    if (options === void 0) { options = {}; }\n    var feat = { type: \"Feature\" };\n    if (options.id === 0 || options.id) {\n        feat.id = options.id;\n    }\n    if (options.bbox) {\n        feat.bbox = options.bbox;\n    }\n    feat.properties = properties || {};\n    feat.geometry = geom;\n    return feat;\n}\nexports.feature = feature;\n/**\n * Creates a GeoJSON {@link Geometry} from a Geometry string type & coordinates.\n * For GeometryCollection type use `helpers.geometryCollection`\n *\n * @name geometry\n * @param {string} type Geometry Type\n * @param {Array<any>} coordinates Coordinates\n * @param {Object} [options={}] Optional Parameters\n * @returns {Geometry} a GeoJSON Geometry\n * @example\n * var type = \"Point\";\n * var coordinates = [110, 50];\n * var geometry = turf.geometry(type, coordinates);\n * // => geometry\n */\nfunction geometry(type, coordinates, _options) {\n    if (_options === void 0) { _options = {}; }\n    switch (type) {\n        case \"Point\":\n            return point(coordinates).geometry;\n        case \"LineString\":\n            return lineString(coordinates).geometry;\n        case \"Polygon\":\n            return polygon(coordinates).geometry;\n        case \"MultiPoint\":\n            return multiPoint(coordinates).geometry;\n        case \"MultiLineString\":\n            return multiLineString(coordinates).geometry;\n        case \"MultiPolygon\":\n            return multiPolygon(coordinates).geometry;\n        default:\n            throw new Error(type + \" is invalid\");\n    }\n}\nexports.geometry = geometry;\n/**\n * Creates a {@link Point} {@link Feature} from a Position.\n *\n * @name point\n * @param {Array<number>} coordinates longitude, latitude position (each in decimal degrees)\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<Point>} a Point feature\n * @example\n * var point = turf.point([-75.343, 39.984]);\n *\n * //=point\n */\nfunction point(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    if (!coordinates) {\n        throw new Error(\"coordinates is required\");\n    }\n    if (!Array.isArray(coordinates)) {\n        throw new Error(\"coordinates must be an Array\");\n    }\n    if (coordinates.length < 2) {\n        throw new Error(\"coordinates must be at least 2 numbers long\");\n    }\n    if (!isNumber(coordinates[0]) || !isNumber(coordinates[1])) {\n        throw new Error(\"coordinates must contain numbers\");\n    }\n    var geom = {\n        type: \"Point\",\n        coordinates: coordinates,\n    };\n    return feature(geom, properties, options);\n}\nexports.point = point;\n/**\n * Creates a {@link Point} {@link FeatureCollection} from an Array of Point coordinates.\n *\n * @name points\n * @param {Array<Array<number>>} coordinates an array of Points\n * @param {Object} [properties={}] Translate these properties to each Feature\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north]\n * associated with the FeatureCollection\n * @param {string|number} [options.id] Identifier associated with the FeatureCollection\n * @returns {FeatureCollection<Point>} Point Feature\n * @example\n * var points = turf.points([\n *   [-75, 39],\n *   [-80, 45],\n *   [-78, 50]\n * ]);\n *\n * //=points\n */\nfunction points(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    return featureCollection(coordinates.map(function (coords) {\n        return point(coords, properties);\n    }), options);\n}\nexports.points = points;\n/**\n * Creates a {@link Polygon} {@link Feature} from an Array of LinearRings.\n *\n * @name polygon\n * @param {Array<Array<Array<number>>>} coordinates an array of LinearRings\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<Polygon>} Polygon Feature\n * @example\n * var polygon = turf.polygon([[[-5, 52], [-4, 56], [-2, 51], [-7, 54], [-5, 52]]], { name: 'poly1' });\n *\n * //=polygon\n */\nfunction polygon(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    for (var _i = 0, coordinates_1 = coordinates; _i < coordinates_1.length; _i++) {\n        var ring = coordinates_1[_i];\n        if (ring.length < 4) {\n            throw new Error(\"Each LinearRing of a Polygon must have 4 or more Positions.\");\n        }\n        for (var j = 0; j < ring[ring.length - 1].length; j++) {\n            // Check if first point of Polygon contains two numbers\n            if (ring[ring.length - 1][j] !== ring[0][j]) {\n                throw new Error(\"First and last Position are not equivalent.\");\n            }\n        }\n    }\n    var geom = {\n        type: \"Polygon\",\n        coordinates: coordinates,\n    };\n    return feature(geom, properties, options);\n}\nexports.polygon = polygon;\n/**\n * Creates a {@link Polygon} {@link FeatureCollection} from an Array of Polygon coordinates.\n *\n * @name polygons\n * @param {Array<Array<Array<Array<number>>>>} coordinates an array of Polygon coordinates\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the FeatureCollection\n * @returns {FeatureCollection<Polygon>} Polygon FeatureCollection\n * @example\n * var polygons = turf.polygons([\n *   [[[-5, 52], [-4, 56], [-2, 51], [-7, 54], [-5, 52]]],\n *   [[[-15, 42], [-14, 46], [-12, 41], [-17, 44], [-15, 42]]],\n * ]);\n *\n * //=polygons\n */\nfunction polygons(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    return featureCollection(coordinates.map(function (coords) {\n        return polygon(coords, properties);\n    }), options);\n}\nexports.polygons = polygons;\n/**\n * Creates a {@link LineString} {@link Feature} from an Array of Positions.\n *\n * @name lineString\n * @param {Array<Array<number>>} coordinates an array of Positions\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<LineString>} LineString Feature\n * @example\n * var linestring1 = turf.lineString([[-24, 63], [-23, 60], [-25, 65], [-20, 69]], {name: 'line 1'});\n * var linestring2 = turf.lineString([[-14, 43], [-13, 40], [-15, 45], [-10, 49]], {name: 'line 2'});\n *\n * //=linestring1\n * //=linestring2\n */\nfunction lineString(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    if (coordinates.length < 2) {\n        throw new Error(\"coordinates must be an array of two or more positions\");\n    }\n    var geom = {\n        type: \"LineString\",\n        coordinates: coordinates,\n    };\n    return feature(geom, properties, options);\n}\nexports.lineString = lineString;\n/**\n * Creates a {@link LineString} {@link FeatureCollection} from an Array of LineString coordinates.\n *\n * @name lineStrings\n * @param {Array<Array<Array<number>>>} coordinates an array of LinearRings\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north]\n * associated with the FeatureCollection\n * @param {string|number} [options.id] Identifier associated with the FeatureCollection\n * @returns {FeatureCollection<LineString>} LineString FeatureCollection\n * @example\n * var linestrings = turf.lineStrings([\n *   [[-24, 63], [-23, 60], [-25, 65], [-20, 69]],\n *   [[-14, 43], [-13, 40], [-15, 45], [-10, 49]]\n * ]);\n *\n * //=linestrings\n */\nfunction lineStrings(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    return featureCollection(coordinates.map(function (coords) {\n        return lineString(coords, properties);\n    }), options);\n}\nexports.lineStrings = lineStrings;\n/**\n * Takes one or more {@link Feature|Features} and creates a {@link FeatureCollection}.\n *\n * @name featureCollection\n * @param {Feature[]} features input features\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {FeatureCollection} FeatureCollection of Features\n * @example\n * var locationA = turf.point([-75.343, 39.984], {name: 'Location A'});\n * var locationB = turf.point([-75.833, 39.284], {name: 'Location B'});\n * var locationC = turf.point([-75.534, 39.123], {name: 'Location C'});\n *\n * var collection = turf.featureCollection([\n *   locationA,\n *   locationB,\n *   locationC\n * ]);\n *\n * //=collection\n */\nfunction featureCollection(features, options) {\n    if (options === void 0) { options = {}; }\n    var fc = { type: \"FeatureCollection\" };\n    if (options.id) {\n        fc.id = options.id;\n    }\n    if (options.bbox) {\n        fc.bbox = options.bbox;\n    }\n    fc.features = features;\n    return fc;\n}\nexports.featureCollection = featureCollection;\n/**\n * Creates a {@link Feature<MultiLineString>} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name multiLineString\n * @param {Array<Array<Array<number>>>} coordinates an array of LineStrings\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<MultiLineString>} a MultiLineString feature\n * @throws {Error} if no coordinates are passed\n * @example\n * var multiLine = turf.multiLineString([[[0,0],[10,10]]]);\n *\n * //=multiLine\n */\nfunction multiLineString(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    var geom = {\n        type: \"MultiLineString\",\n        coordinates: coordinates,\n    };\n    return feature(geom, properties, options);\n}\nexports.multiLineString = multiLineString;\n/**\n * Creates a {@link Feature<MultiPoint>} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name multiPoint\n * @param {Array<Array<number>>} coordinates an array of Positions\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<MultiPoint>} a MultiPoint feature\n * @throws {Error} if no coordinates are passed\n * @example\n * var multiPt = turf.multiPoint([[0,0],[10,10]]);\n *\n * //=multiPt\n */\nfunction multiPoint(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    var geom = {\n        type: \"MultiPoint\",\n        coordinates: coordinates,\n    };\n    return feature(geom, properties, options);\n}\nexports.multiPoint = multiPoint;\n/**\n * Creates a {@link Feature<MultiPolygon>} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name multiPolygon\n * @param {Array<Array<Array<Array<number>>>>} coordinates an array of Polygons\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<MultiPolygon>} a multipolygon feature\n * @throws {Error} if no coordinates are passed\n * @example\n * var multiPoly = turf.multiPolygon([[[[0,0],[0,10],[10,10],[10,0],[0,0]]]]);\n *\n * //=multiPoly\n *\n */\nfunction multiPolygon(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    var geom = {\n        type: \"MultiPolygon\",\n        coordinates: coordinates,\n    };\n    return feature(geom, properties, options);\n}\nexports.multiPolygon = multiPolygon;\n/**\n * Creates a {@link Feature<GeometryCollection>} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name geometryCollection\n * @param {Array<Geometry>} geometries an array of GeoJSON Geometries\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<GeometryCollection>} a GeoJSON GeometryCollection Feature\n * @example\n * var pt = turf.geometry(\"Point\", [100, 0]);\n * var line = turf.geometry(\"LineString\", [[101, 0], [102, 1]]);\n * var collection = turf.geometryCollection([pt, line]);\n *\n * // => collection\n */\nfunction geometryCollection(geometries, properties, options) {\n    if (options === void 0) { options = {}; }\n    var geom = {\n        type: \"GeometryCollection\",\n        geometries: geometries,\n    };\n    return feature(geom, properties, options);\n}\nexports.geometryCollection = geometryCollection;\n/**\n * Round number to precision\n *\n * @param {number} num Number\n * @param {number} [precision=0] Precision\n * @returns {number} rounded number\n * @example\n * turf.round(120.4321)\n * //=120\n *\n * turf.round(120.4321, 2)\n * //=120.43\n */\nfunction round(num, precision) {\n    if (precision === void 0) { precision = 0; }\n    if (precision && !(precision >= 0)) {\n        throw new Error(\"precision must be a positive number\");\n    }\n    var multiplier = Math.pow(10, precision || 0);\n    return Math.round(num * multiplier) / multiplier;\n}\nexports.round = round;\n/**\n * Convert a distance measurement (assuming a spherical Earth) from radians to a more friendly unit.\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet\n *\n * @name radiansToLength\n * @param {number} radians in radians across the sphere\n * @param {string} [units=\"kilometers\"] can be degrees, radians, miles, inches, yards, metres,\n * meters, kilometres, kilometers.\n * @returns {number} distance\n */\nfunction radiansToLength(radians, units) {\n    if (units === void 0) { units = \"kilometers\"; }\n    var factor = exports.factors[units];\n    if (!factor) {\n        throw new Error(units + \" units is invalid\");\n    }\n    return radians * factor;\n}\nexports.radiansToLength = radiansToLength;\n/**\n * Convert a distance measurement (assuming a spherical Earth) from a real-world unit into radians\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet\n *\n * @name lengthToRadians\n * @param {number} distance in real units\n * @param {string} [units=\"kilometers\"] can be degrees, radians, miles, inches, yards, metres,\n * meters, kilometres, kilometers.\n * @returns {number} radians\n */\nfunction lengthToRadians(distance, units) {\n    if (units === void 0) { units = \"kilometers\"; }\n    var factor = exports.factors[units];\n    if (!factor) {\n        throw new Error(units + \" units is invalid\");\n    }\n    return distance / factor;\n}\nexports.lengthToRadians = lengthToRadians;\n/**\n * Convert a distance measurement (assuming a spherical Earth) from a real-world unit into degrees\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, centimeters, kilometres, feet\n *\n * @name lengthToDegrees\n * @param {number} distance in real units\n * @param {string} [units=\"kilometers\"] can be degrees, radians, miles, inches, yards, metres,\n * meters, kilometres, kilometers.\n * @returns {number} degrees\n */\nfunction lengthToDegrees(distance, units) {\n    return radiansToDegrees(lengthToRadians(distance, units));\n}\nexports.lengthToDegrees = lengthToDegrees;\n/**\n * Converts any bearing angle from the north line direction (positive clockwise)\n * and returns an angle between 0-360 degrees (positive clockwise), 0 being the north line\n *\n * @name bearingToAzimuth\n * @param {number} bearing angle, between -180 and +180 degrees\n * @returns {number} angle between 0 and 360 degrees\n */\nfunction bearingToAzimuth(bearing) {\n    var angle = bearing % 360;\n    if (angle < 0) {\n        angle += 360;\n    }\n    return angle;\n}\nexports.bearingToAzimuth = bearingToAzimuth;\n/**\n * Converts an angle in radians to degrees\n *\n * @name radiansToDegrees\n * @param {number} radians angle in radians\n * @returns {number} degrees between 0 and 360 degrees\n */\nfunction radiansToDegrees(radians) {\n    var degrees = radians % (2 * Math.PI);\n    return (degrees * 180) / Math.PI;\n}\nexports.radiansToDegrees = radiansToDegrees;\n/**\n * Converts an angle in degrees to radians\n *\n * @name degreesToRadians\n * @param {number} degrees angle between 0 and 360 degrees\n * @returns {number} angle in radians\n */\nfunction degreesToRadians(degrees) {\n    var radians = degrees % 360;\n    return (radians * Math.PI) / 180;\n}\nexports.degreesToRadians = degreesToRadians;\n/**\n * Converts a length to the requested unit.\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet\n *\n * @param {number} length to be converted\n * @param {Units} [originalUnit=\"kilometers\"] of the length\n * @param {Units} [finalUnit=\"kilometers\"] returned unit\n * @returns {number} the converted length\n */\nfunction convertLength(length, originalUnit, finalUnit) {\n    if (originalUnit === void 0) { originalUnit = \"kilometers\"; }\n    if (finalUnit === void 0) { finalUnit = \"kilometers\"; }\n    if (!(length >= 0)) {\n        throw new Error(\"length must be a positive number\");\n    }\n    return radiansToLength(lengthToRadians(length, originalUnit), finalUnit);\n}\nexports.convertLength = convertLength;\n/**\n * Converts a area to the requested unit.\n * Valid units: kilometers, kilometres, meters, metres, centimetres, millimeters, acres, miles, yards, feet, inches, hectares\n * @param {number} area to be converted\n * @param {Units} [originalUnit=\"meters\"] of the distance\n * @param {Units} [finalUnit=\"kilometers\"] returned unit\n * @returns {number} the converted area\n */\nfunction convertArea(area, originalUnit, finalUnit) {\n    if (originalUnit === void 0) { originalUnit = \"meters\"; }\n    if (finalUnit === void 0) { finalUnit = \"kilometers\"; }\n    if (!(area >= 0)) {\n        throw new Error(\"area must be a positive number\");\n    }\n    var startFactor = exports.areaFactors[originalUnit];\n    if (!startFactor) {\n        throw new Error(\"invalid original units\");\n    }\n    var finalFactor = exports.areaFactors[finalUnit];\n    if (!finalFactor) {\n        throw new Error(\"invalid final units\");\n    }\n    return (area / startFactor) * finalFactor;\n}\nexports.convertArea = convertArea;\n/**\n * isNumber\n *\n * @param {*} num Number to validate\n * @returns {boolean} true/false\n * @example\n * turf.isNumber(123)\n * //=true\n * turf.isNumber('foo')\n * //=false\n */\nfunction isNumber(num) {\n    return !isNaN(num) && num !== null && !Array.isArray(num);\n}\nexports.isNumber = isNumber;\n/**\n * isObject\n *\n * @param {*} input variable to validate\n * @returns {boolean} true/false\n * @example\n * turf.isObject({elevation: 10})\n * //=true\n * turf.isObject('foo')\n * //=false\n */\nfunction isObject(input) {\n    return !!input && input.constructor === Object;\n}\nexports.isObject = isObject;\n/**\n * Validate BBox\n *\n * @private\n * @param {Array<number>} bbox BBox to validate\n * @returns {void}\n * @throws Error if BBox is not valid\n * @example\n * validateBBox([-180, -40, 110, 50])\n * //=OK\n * validateBBox([-180, -40])\n * //=Error\n * validateBBox('Foo')\n * //=Error\n * validateBBox(5)\n * //=Error\n * validateBBox(null)\n * //=Error\n * validateBBox(undefined)\n * //=Error\n */\nfunction validateBBox(bbox) {\n    if (!bbox) {\n        throw new Error(\"bbox is required\");\n    }\n    if (!Array.isArray(bbox)) {\n        throw new Error(\"bbox must be an Array\");\n    }\n    if (bbox.length !== 4 && bbox.length !== 6) {\n        throw new Error(\"bbox must be an Array of 4 or 6 numbers\");\n    }\n    bbox.forEach(function (num) {\n        if (!isNumber(num)) {\n            throw new Error(\"bbox must only contain numbers\");\n        }\n    });\n}\nexports.validateBBox = validateBBox;\n/**\n * Validate Id\n *\n * @private\n * @param {string|number} id Id to validate\n * @returns {void}\n * @throws Error if Id is not valid\n * @example\n * validateId([-180, -40, 110, 50])\n * //=Error\n * validateId([-180, -40])\n * //=Error\n * validateId('Foo')\n * //=OK\n * validateId(5)\n * //=OK\n * validateId(null)\n * //=Error\n * validateId(undefined)\n * //=Error\n */\nfunction validateId(id) {\n    if (!id) {\n        throw new Error(\"id is required\");\n    }\n    if ([\"string\", \"number\"].indexOf(typeof id) === -1) {\n        throw new Error(\"id must be a number or a string\");\n    }\n}\nexports.validateId = validateId;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar helpers_1 = require(\"@turf/helpers\");\n/**\n * Unwrap a coordinate from a Point Feature, Geometry or a single coordinate.\n *\n * @name getCoord\n * @param {Array<number>|Geometry<Point>|Feature<Point>} coord GeoJSON Point or an Array of numbers\n * @returns {Array<number>} coordinates\n * @example\n * var pt = turf.point([10, 10]);\n *\n * var coord = turf.getCoord(pt);\n * //= [10, 10]\n */\nfunction getCoord(coord) {\n    if (!coord) {\n        throw new Error(\"coord is required\");\n    }\n    if (!Array.isArray(coord)) {\n        if (coord.type === \"Feature\" &&\n            coord.geometry !== null &&\n            coord.geometry.type === \"Point\") {\n            return coord.geometry.coordinates;\n        }\n        if (coord.type === \"Point\") {\n            return coord.coordinates;\n        }\n    }\n    if (Array.isArray(coord) &&\n        coord.length >= 2 &&\n        !Array.isArray(coord[0]) &&\n        !Array.isArray(coord[1])) {\n        return coord;\n    }\n    throw new Error(\"coord must be GeoJSON Point or an Array of numbers\");\n}\nexports.getCoord = getCoord;\n/**\n * Unwrap coordinates from a Feature, Geometry Object or an Array\n *\n * @name getCoords\n * @param {Array<any>|Geometry|Feature} coords Feature, Geometry Object or an Array\n * @returns {Array<any>} coordinates\n * @example\n * var poly = turf.polygon([[[119.32, -8.7], [119.55, -8.69], [119.51, -8.54], [119.32, -8.7]]]);\n *\n * var coords = turf.getCoords(poly);\n * //= [[[119.32, -8.7], [119.55, -8.69], [119.51, -8.54], [119.32, -8.7]]]\n */\nfunction getCoords(coords) {\n    if (Array.isArray(coords)) {\n        return coords;\n    }\n    // Feature\n    if (coords.type === \"Feature\") {\n        if (coords.geometry !== null) {\n            return coords.geometry.coordinates;\n        }\n    }\n    else {\n        // Geometry\n        if (coords.coordinates) {\n            return coords.coordinates;\n        }\n    }\n    throw new Error(\"coords must be GeoJSON Feature, Geometry Object or an Array\");\n}\nexports.getCoords = getCoords;\n/**\n * Checks if coordinates contains a number\n *\n * @name containsNumber\n * @param {Array<any>} coordinates GeoJSON Coordinates\n * @returns {boolean} true if Array contains a number\n */\nfunction containsNumber(coordinates) {\n    if (coordinates.length > 1 &&\n        helpers_1.isNumber(coordinates[0]) &&\n        helpers_1.isNumber(coordinates[1])) {\n        return true;\n    }\n    if (Array.isArray(coordinates[0]) && coordinates[0].length) {\n        return containsNumber(coordinates[0]);\n    }\n    throw new Error(\"coordinates must only contain numbers\");\n}\nexports.containsNumber = containsNumber;\n/**\n * Enforce expectations about types of GeoJSON objects for Turf.\n *\n * @name geojsonType\n * @param {GeoJSON} value any GeoJSON object\n * @param {string} type expected GeoJSON type\n * @param {string} name name of calling function\n * @throws {Error} if value is not the expected type.\n */\nfunction geojsonType(value, type, name) {\n    if (!type || !name) {\n        throw new Error(\"type and name required\");\n    }\n    if (!value || value.type !== type) {\n        throw new Error(\"Invalid input to \" +\n            name +\n            \": must be a \" +\n            type +\n            \", given \" +\n            value.type);\n    }\n}\nexports.geojsonType = geojsonType;\n/**\n * Enforce expectations about types of {@link Feature} inputs for Turf.\n * Internally this uses {@link geojsonType} to judge geometry types.\n *\n * @name featureOf\n * @param {Feature} feature a feature with an expected geometry type\n * @param {string} type expected GeoJSON type\n * @param {string} name name of calling function\n * @throws {Error} error if value is not the expected type.\n */\nfunction featureOf(feature, type, name) {\n    if (!feature) {\n        throw new Error(\"No feature passed\");\n    }\n    if (!name) {\n        throw new Error(\".featureOf() requires a name\");\n    }\n    if (!feature || feature.type !== \"Feature\" || !feature.geometry) {\n        throw new Error(\"Invalid input to \" + name + \", Feature with geometry required\");\n    }\n    if (!feature.geometry || feature.geometry.type !== type) {\n        throw new Error(\"Invalid input to \" +\n            name +\n            \": must be a \" +\n            type +\n            \", given \" +\n            feature.geometry.type);\n    }\n}\nexports.featureOf = featureOf;\n/**\n * Enforce expectations about types of {@link FeatureCollection} inputs for Turf.\n * Internally this uses {@link geojsonType} to judge geometry types.\n *\n * @name collectionOf\n * @param {FeatureCollection} featureCollection a FeatureCollection for which features will be judged\n * @param {string} type expected GeoJSON type\n * @param {string} name name of calling function\n * @throws {Error} if value is not the expected type.\n */\nfunction collectionOf(featureCollection, type, name) {\n    if (!featureCollection) {\n        throw new Error(\"No featureCollection passed\");\n    }\n    if (!name) {\n        throw new Error(\".collectionOf() requires a name\");\n    }\n    if (!featureCollection || featureCollection.type !== \"FeatureCollection\") {\n        throw new Error(\"Invalid input to \" + name + \", FeatureCollection required\");\n    }\n    for (var _i = 0, _a = featureCollection.features; _i < _a.length; _i++) {\n        var feature = _a[_i];\n        if (!feature || feature.type !== \"Feature\" || !feature.geometry) {\n            throw new Error(\"Invalid input to \" + name + \", Feature with geometry required\");\n        }\n        if (!feature.geometry || feature.geometry.type !== type) {\n            throw new Error(\"Invalid input to \" +\n                name +\n                \": must be a \" +\n                type +\n                \", given \" +\n                feature.geometry.type);\n        }\n    }\n}\nexports.collectionOf = collectionOf;\n/**\n * Get Geometry from Feature or Geometry Object\n *\n * @param {Feature|Geometry} geojson GeoJSON Feature or Geometry Object\n * @returns {Geometry|null} GeoJSON Geometry Object\n * @throws {Error} if geojson is not a Feature or Geometry Object\n * @example\n * var point = {\n *   \"type\": \"Feature\",\n *   \"properties\": {},\n *   \"geometry\": {\n *     \"type\": \"Point\",\n *     \"coordinates\": [110, 40]\n *   }\n * }\n * var geom = turf.getGeom(point)\n * //={\"type\": \"Point\", \"coordinates\": [110, 40]}\n */\nfunction getGeom(geojson) {\n    if (geojson.type === \"Feature\") {\n        return geojson.geometry;\n    }\n    return geojson;\n}\nexports.getGeom = getGeom;\n/**\n * Get GeoJSON object's type, Geometry type is prioritize.\n *\n * @param {GeoJSON} geojson GeoJSON object\n * @param {string} [name=\"geojson\"] name of the variable to display in error message (unused)\n * @returns {string} GeoJSON type\n * @example\n * var point = {\n *   \"type\": \"Feature\",\n *   \"properties\": {},\n *   \"geometry\": {\n *     \"type\": \"Point\",\n *     \"coordinates\": [110, 40]\n *   }\n * }\n * var geom = turf.getType(point)\n * //=\"Point\"\n */\nfunction getType(geojson, _name) {\n    if (geojson.type === \"FeatureCollection\") {\n        return \"FeatureCollection\";\n    }\n    if (geojson.type === \"GeometryCollection\") {\n        return \"GeometryCollection\";\n    }\n    if (geojson.type === \"Feature\" && geojson.geometry !== null) {\n        return geojson.geometry.type;\n    }\n    return geojson.type;\n}\nexports.getType = getType;\n","'use strict';\n\nvar polygonClipping = require('polygon-clipping');\nvar helpers = require('@turf/helpers');\nvar invariant = require('@turf/invariant');\n\nfunction _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }\n\nvar polygonClipping__default = /*#__PURE__*/_interopDefaultLegacy(polygonClipping);\n\n/**\n * Finds the difference between two {@link Polygon|polygons} by clipping the second polygon from the first.\n *\n * @name difference\n * @param {Feature<Polygon|MultiPolygon>} polygon1 input Polygon feature\n * @param {Feature<Polygon|MultiPolygon>} polygon2 Polygon feature to difference from polygon1\n * @returns {Feature<Polygon|MultiPolygon>|null} a Polygon or MultiPolygon feature showing the area of `polygon1` excluding the area of `polygon2` (if empty returns `null`)\n * @example\n * var polygon1 = turf.polygon([[\n *   [128, -26],\n *   [141, -26],\n *   [141, -21],\n *   [128, -21],\n *   [128, -26]\n * ]], {\n *   \"fill\": \"#F00\",\n *   \"fill-opacity\": 0.1\n * });\n * var polygon2 = turf.polygon([[\n *   [126, -28],\n *   [140, -28],\n *   [140, -20],\n *   [126, -20],\n *   [126, -28]\n * ]], {\n *   \"fill\": \"#00F\",\n *   \"fill-opacity\": 0.1\n * });\n *\n * var difference = turf.difference(polygon1, polygon2);\n *\n * //addToMap\n * var addToMap = [polygon1, polygon2, difference];\n */\nfunction difference(polygon1, polygon2) {\n  var geom1 = invariant.getGeom(polygon1);\n  var geom2 = invariant.getGeom(polygon2);\n  var properties = polygon1.properties || {};\n\n  var differenced = polygonClipping__default['default'].difference(\n    geom1.coordinates,\n    geom2.coordinates\n  );\n  if (differenced.length === 0) return null;\n  if (differenced.length === 1) return helpers.polygon(differenced[0], properties);\n  return helpers.multiPolygon(differenced, properties);\n}\n\nmodule.exports = difference;\nmodule.exports.default = difference;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * @module helpers\n */\n/**\n * Earth Radius used with the Harvesine formula and approximates using a spherical (non-ellipsoid) Earth.\n *\n * @memberof helpers\n * @type {number}\n */\nexports.earthRadius = 6371008.8;\n/**\n * Unit of measurement factors using a spherical (non-ellipsoid) earth radius.\n *\n * @memberof helpers\n * @type {Object}\n */\nexports.factors = {\n    centimeters: exports.earthRadius * 100,\n    centimetres: exports.earthRadius * 100,\n    degrees: exports.earthRadius / 111325,\n    feet: exports.earthRadius * 3.28084,\n    inches: exports.earthRadius * 39.37,\n    kilometers: exports.earthRadius / 1000,\n    kilometres: exports.earthRadius / 1000,\n    meters: exports.earthRadius,\n    metres: exports.earthRadius,\n    miles: exports.earthRadius / 1609.344,\n    millimeters: exports.earthRadius * 1000,\n    millimetres: exports.earthRadius * 1000,\n    nauticalmiles: exports.earthRadius / 1852,\n    radians: 1,\n    yards: exports.earthRadius * 1.0936,\n};\n/**\n * Units of measurement factors based on 1 meter.\n *\n * @memberof helpers\n * @type {Object}\n */\nexports.unitsFactors = {\n    centimeters: 100,\n    centimetres: 100,\n    degrees: 1 / 111325,\n    feet: 3.28084,\n    inches: 39.37,\n    kilometers: 1 / 1000,\n    kilometres: 1 / 1000,\n    meters: 1,\n    metres: 1,\n    miles: 1 / 1609.344,\n    millimeters: 1000,\n    millimetres: 1000,\n    nauticalmiles: 1 / 1852,\n    radians: 1 / exports.earthRadius,\n    yards: 1.0936133,\n};\n/**\n * Area of measurement factors based on 1 square meter.\n *\n * @memberof helpers\n * @type {Object}\n */\nexports.areaFactors = {\n    acres: 0.000247105,\n    centimeters: 10000,\n    centimetres: 10000,\n    feet: 10.763910417,\n    hectares: 0.0001,\n    inches: 1550.003100006,\n    kilometers: 0.000001,\n    kilometres: 0.000001,\n    meters: 1,\n    metres: 1,\n    miles: 3.86e-7,\n    millimeters: 1000000,\n    millimetres: 1000000,\n    yards: 1.195990046,\n};\n/**\n * Wraps a GeoJSON {@link Geometry} in a GeoJSON {@link Feature}.\n *\n * @name feature\n * @param {Geometry} geometry input geometry\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} a GeoJSON Feature\n * @example\n * var geometry = {\n *   \"type\": \"Point\",\n *   \"coordinates\": [110, 50]\n * };\n *\n * var feature = turf.feature(geometry);\n *\n * //=feature\n */\nfunction feature(geom, properties, options) {\n    if (options === void 0) { options = {}; }\n    var feat = { type: \"Feature\" };\n    if (options.id === 0 || options.id) {\n        feat.id = options.id;\n    }\n    if (options.bbox) {\n        feat.bbox = options.bbox;\n    }\n    feat.properties = properties || {};\n    feat.geometry = geom;\n    return feat;\n}\nexports.feature = feature;\n/**\n * Creates a GeoJSON {@link Geometry} from a Geometry string type & coordinates.\n * For GeometryCollection type use `helpers.geometryCollection`\n *\n * @name geometry\n * @param {string} type Geometry Type\n * @param {Array<any>} coordinates Coordinates\n * @param {Object} [options={}] Optional Parameters\n * @returns {Geometry} a GeoJSON Geometry\n * @example\n * var type = \"Point\";\n * var coordinates = [110, 50];\n * var geometry = turf.geometry(type, coordinates);\n * // => geometry\n */\nfunction geometry(type, coordinates, _options) {\n    if (_options === void 0) { _options = {}; }\n    switch (type) {\n        case \"Point\":\n            return point(coordinates).geometry;\n        case \"LineString\":\n            return lineString(coordinates).geometry;\n        case \"Polygon\":\n            return polygon(coordinates).geometry;\n        case \"MultiPoint\":\n            return multiPoint(coordinates).geometry;\n        case \"MultiLineString\":\n            return multiLineString(coordinates).geometry;\n        case \"MultiPolygon\":\n            return multiPolygon(coordinates).geometry;\n        default:\n            throw new Error(type + \" is invalid\");\n    }\n}\nexports.geometry = geometry;\n/**\n * Creates a {@link Point} {@link Feature} from a Position.\n *\n * @name point\n * @param {Array<number>} coordinates longitude, latitude position (each in decimal degrees)\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<Point>} a Point feature\n * @example\n * var point = turf.point([-75.343, 39.984]);\n *\n * //=point\n */\nfunction point(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    if (!coordinates) {\n        throw new Error(\"coordinates is required\");\n    }\n    if (!Array.isArray(coordinates)) {\n        throw new Error(\"coordinates must be an Array\");\n    }\n    if (coordinates.length < 2) {\n        throw new Error(\"coordinates must be at least 2 numbers long\");\n    }\n    if (!isNumber(coordinates[0]) || !isNumber(coordinates[1])) {\n        throw new Error(\"coordinates must contain numbers\");\n    }\n    var geom = {\n        type: \"Point\",\n        coordinates: coordinates,\n    };\n    return feature(geom, properties, options);\n}\nexports.point = point;\n/**\n * Creates a {@link Point} {@link FeatureCollection} from an Array of Point coordinates.\n *\n * @name points\n * @param {Array<Array<number>>} coordinates an array of Points\n * @param {Object} [properties={}] Translate these properties to each Feature\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north]\n * associated with the FeatureCollection\n * @param {string|number} [options.id] Identifier associated with the FeatureCollection\n * @returns {FeatureCollection<Point>} Point Feature\n * @example\n * var points = turf.points([\n *   [-75, 39],\n *   [-80, 45],\n *   [-78, 50]\n * ]);\n *\n * //=points\n */\nfunction points(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    return featureCollection(coordinates.map(function (coords) {\n        return point(coords, properties);\n    }), options);\n}\nexports.points = points;\n/**\n * Creates a {@link Polygon} {@link Feature} from an Array of LinearRings.\n *\n * @name polygon\n * @param {Array<Array<Array<number>>>} coordinates an array of LinearRings\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<Polygon>} Polygon Feature\n * @example\n * var polygon = turf.polygon([[[-5, 52], [-4, 56], [-2, 51], [-7, 54], [-5, 52]]], { name: 'poly1' });\n *\n * //=polygon\n */\nfunction polygon(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    for (var _i = 0, coordinates_1 = coordinates; _i < coordinates_1.length; _i++) {\n        var ring = coordinates_1[_i];\n        if (ring.length < 4) {\n            throw new Error(\"Each LinearRing of a Polygon must have 4 or more Positions.\");\n        }\n        for (var j = 0; j < ring[ring.length - 1].length; j++) {\n            // Check if first point of Polygon contains two numbers\n            if (ring[ring.length - 1][j] !== ring[0][j]) {\n                throw new Error(\"First and last Position are not equivalent.\");\n            }\n        }\n    }\n    var geom = {\n        type: \"Polygon\",\n        coordinates: coordinates,\n    };\n    return feature(geom, properties, options);\n}\nexports.polygon = polygon;\n/**\n * Creates a {@link Polygon} {@link FeatureCollection} from an Array of Polygon coordinates.\n *\n * @name polygons\n * @param {Array<Array<Array<Array<number>>>>} coordinates an array of Polygon coordinates\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the FeatureCollection\n * @returns {FeatureCollection<Polygon>} Polygon FeatureCollection\n * @example\n * var polygons = turf.polygons([\n *   [[[-5, 52], [-4, 56], [-2, 51], [-7, 54], [-5, 52]]],\n *   [[[-15, 42], [-14, 46], [-12, 41], [-17, 44], [-15, 42]]],\n * ]);\n *\n * //=polygons\n */\nfunction polygons(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    return featureCollection(coordinates.map(function (coords) {\n        return polygon(coords, properties);\n    }), options);\n}\nexports.polygons = polygons;\n/**\n * Creates a {@link LineString} {@link Feature} from an Array of Positions.\n *\n * @name lineString\n * @param {Array<Array<number>>} coordinates an array of Positions\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<LineString>} LineString Feature\n * @example\n * var linestring1 = turf.lineString([[-24, 63], [-23, 60], [-25, 65], [-20, 69]], {name: 'line 1'});\n * var linestring2 = turf.lineString([[-14, 43], [-13, 40], [-15, 45], [-10, 49]], {name: 'line 2'});\n *\n * //=linestring1\n * //=linestring2\n */\nfunction lineString(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    if (coordinates.length < 2) {\n        throw new Error(\"coordinates must be an array of two or more positions\");\n    }\n    var geom = {\n        type: \"LineString\",\n        coordinates: coordinates,\n    };\n    return feature(geom, properties, options);\n}\nexports.lineString = lineString;\n/**\n * Creates a {@link LineString} {@link FeatureCollection} from an Array of LineString coordinates.\n *\n * @name lineStrings\n * @param {Array<Array<Array<number>>>} coordinates an array of LinearRings\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north]\n * associated with the FeatureCollection\n * @param {string|number} [options.id] Identifier associated with the FeatureCollection\n * @returns {FeatureCollection<LineString>} LineString FeatureCollection\n * @example\n * var linestrings = turf.lineStrings([\n *   [[-24, 63], [-23, 60], [-25, 65], [-20, 69]],\n *   [[-14, 43], [-13, 40], [-15, 45], [-10, 49]]\n * ]);\n *\n * //=linestrings\n */\nfunction lineStrings(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    return featureCollection(coordinates.map(function (coords) {\n        return lineString(coords, properties);\n    }), options);\n}\nexports.lineStrings = lineStrings;\n/**\n * Takes one or more {@link Feature|Features} and creates a {@link FeatureCollection}.\n *\n * @name featureCollection\n * @param {Feature[]} features input features\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {FeatureCollection} FeatureCollection of Features\n * @example\n * var locationA = turf.point([-75.343, 39.984], {name: 'Location A'});\n * var locationB = turf.point([-75.833, 39.284], {name: 'Location B'});\n * var locationC = turf.point([-75.534, 39.123], {name: 'Location C'});\n *\n * var collection = turf.featureCollection([\n *   locationA,\n *   locationB,\n *   locationC\n * ]);\n *\n * //=collection\n */\nfunction featureCollection(features, options) {\n    if (options === void 0) { options = {}; }\n    var fc = { type: \"FeatureCollection\" };\n    if (options.id) {\n        fc.id = options.id;\n    }\n    if (options.bbox) {\n        fc.bbox = options.bbox;\n    }\n    fc.features = features;\n    return fc;\n}\nexports.featureCollection = featureCollection;\n/**\n * Creates a {@link Feature<MultiLineString>} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name multiLineString\n * @param {Array<Array<Array<number>>>} coordinates an array of LineStrings\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<MultiLineString>} a MultiLineString feature\n * @throws {Error} if no coordinates are passed\n * @example\n * var multiLine = turf.multiLineString([[[0,0],[10,10]]]);\n *\n * //=multiLine\n */\nfunction multiLineString(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    var geom = {\n        type: \"MultiLineString\",\n        coordinates: coordinates,\n    };\n    return feature(geom, properties, options);\n}\nexports.multiLineString = multiLineString;\n/**\n * Creates a {@link Feature<MultiPoint>} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name multiPoint\n * @param {Array<Array<number>>} coordinates an array of Positions\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<MultiPoint>} a MultiPoint feature\n * @throws {Error} if no coordinates are passed\n * @example\n * var multiPt = turf.multiPoint([[0,0],[10,10]]);\n *\n * //=multiPt\n */\nfunction multiPoint(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    var geom = {\n        type: \"MultiPoint\",\n        coordinates: coordinates,\n    };\n    return feature(geom, properties, options);\n}\nexports.multiPoint = multiPoint;\n/**\n * Creates a {@link Feature<MultiPolygon>} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name multiPolygon\n * @param {Array<Array<Array<Array<number>>>>} coordinates an array of Polygons\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<MultiPolygon>} a multipolygon feature\n * @throws {Error} if no coordinates are passed\n * @example\n * var multiPoly = turf.multiPolygon([[[[0,0],[0,10],[10,10],[10,0],[0,0]]]]);\n *\n * //=multiPoly\n *\n */\nfunction multiPolygon(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    var geom = {\n        type: \"MultiPolygon\",\n        coordinates: coordinates,\n    };\n    return feature(geom, properties, options);\n}\nexports.multiPolygon = multiPolygon;\n/**\n * Creates a {@link Feature<GeometryCollection>} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name geometryCollection\n * @param {Array<Geometry>} geometries an array of GeoJSON Geometries\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<GeometryCollection>} a GeoJSON GeometryCollection Feature\n * @example\n * var pt = turf.geometry(\"Point\", [100, 0]);\n * var line = turf.geometry(\"LineString\", [[101, 0], [102, 1]]);\n * var collection = turf.geometryCollection([pt, line]);\n *\n * // => collection\n */\nfunction geometryCollection(geometries, properties, options) {\n    if (options === void 0) { options = {}; }\n    var geom = {\n        type: \"GeometryCollection\",\n        geometries: geometries,\n    };\n    return feature(geom, properties, options);\n}\nexports.geometryCollection = geometryCollection;\n/**\n * Round number to precision\n *\n * @param {number} num Number\n * @param {number} [precision=0] Precision\n * @returns {number} rounded number\n * @example\n * turf.round(120.4321)\n * //=120\n *\n * turf.round(120.4321, 2)\n * //=120.43\n */\nfunction round(num, precision) {\n    if (precision === void 0) { precision = 0; }\n    if (precision && !(precision >= 0)) {\n        throw new Error(\"precision must be a positive number\");\n    }\n    var multiplier = Math.pow(10, precision || 0);\n    return Math.round(num * multiplier) / multiplier;\n}\nexports.round = round;\n/**\n * Convert a distance measurement (assuming a spherical Earth) from radians to a more friendly unit.\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet\n *\n * @name radiansToLength\n * @param {number} radians in radians across the sphere\n * @param {string} [units=\"kilometers\"] can be degrees, radians, miles, inches, yards, metres,\n * meters, kilometres, kilometers.\n * @returns {number} distance\n */\nfunction radiansToLength(radians, units) {\n    if (units === void 0) { units = \"kilometers\"; }\n    var factor = exports.factors[units];\n    if (!factor) {\n        throw new Error(units + \" units is invalid\");\n    }\n    return radians * factor;\n}\nexports.radiansToLength = radiansToLength;\n/**\n * Convert a distance measurement (assuming a spherical Earth) from a real-world unit into radians\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet\n *\n * @name lengthToRadians\n * @param {number} distance in real units\n * @param {string} [units=\"kilometers\"] can be degrees, radians, miles, inches, yards, metres,\n * meters, kilometres, kilometers.\n * @returns {number} radians\n */\nfunction lengthToRadians(distance, units) {\n    if (units === void 0) { units = \"kilometers\"; }\n    var factor = exports.factors[units];\n    if (!factor) {\n        throw new Error(units + \" units is invalid\");\n    }\n    return distance / factor;\n}\nexports.lengthToRadians = lengthToRadians;\n/**\n * Convert a distance measurement (assuming a spherical Earth) from a real-world unit into degrees\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, centimeters, kilometres, feet\n *\n * @name lengthToDegrees\n * @param {number} distance in real units\n * @param {string} [units=\"kilometers\"] can be degrees, radians, miles, inches, yards, metres,\n * meters, kilometres, kilometers.\n * @returns {number} degrees\n */\nfunction lengthToDegrees(distance, units) {\n    return radiansToDegrees(lengthToRadians(distance, units));\n}\nexports.lengthToDegrees = lengthToDegrees;\n/**\n * Converts any bearing angle from the north line direction (positive clockwise)\n * and returns an angle between 0-360 degrees (positive clockwise), 0 being the north line\n *\n * @name bearingToAzimuth\n * @param {number} bearing angle, between -180 and +180 degrees\n * @returns {number} angle between 0 and 360 degrees\n */\nfunction bearingToAzimuth(bearing) {\n    var angle = bearing % 360;\n    if (angle < 0) {\n        angle += 360;\n    }\n    return angle;\n}\nexports.bearingToAzimuth = bearingToAzimuth;\n/**\n * Converts an angle in radians to degrees\n *\n * @name radiansToDegrees\n * @param {number} radians angle in radians\n * @returns {number} degrees between 0 and 360 degrees\n */\nfunction radiansToDegrees(radians) {\n    var degrees = radians % (2 * Math.PI);\n    return (degrees * 180) / Math.PI;\n}\nexports.radiansToDegrees = radiansToDegrees;\n/**\n * Converts an angle in degrees to radians\n *\n * @name degreesToRadians\n * @param {number} degrees angle between 0 and 360 degrees\n * @returns {number} angle in radians\n */\nfunction degreesToRadians(degrees) {\n    var radians = degrees % 360;\n    return (radians * Math.PI) / 180;\n}\nexports.degreesToRadians = degreesToRadians;\n/**\n * Converts a length to the requested unit.\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet\n *\n * @param {number} length to be converted\n * @param {Units} [originalUnit=\"kilometers\"] of the length\n * @param {Units} [finalUnit=\"kilometers\"] returned unit\n * @returns {number} the converted length\n */\nfunction convertLength(length, originalUnit, finalUnit) {\n    if (originalUnit === void 0) { originalUnit = \"kilometers\"; }\n    if (finalUnit === void 0) { finalUnit = \"kilometers\"; }\n    if (!(length >= 0)) {\n        throw new Error(\"length must be a positive number\");\n    }\n    return radiansToLength(lengthToRadians(length, originalUnit), finalUnit);\n}\nexports.convertLength = convertLength;\n/**\n * Converts a area to the requested unit.\n * Valid units: kilometers, kilometres, meters, metres, centimetres, millimeters, acres, miles, yards, feet, inches, hectares\n * @param {number} area to be converted\n * @param {Units} [originalUnit=\"meters\"] of the distance\n * @param {Units} [finalUnit=\"kilometers\"] returned unit\n * @returns {number} the converted area\n */\nfunction convertArea(area, originalUnit, finalUnit) {\n    if (originalUnit === void 0) { originalUnit = \"meters\"; }\n    if (finalUnit === void 0) { finalUnit = \"kilometers\"; }\n    if (!(area >= 0)) {\n        throw new Error(\"area must be a positive number\");\n    }\n    var startFactor = exports.areaFactors[originalUnit];\n    if (!startFactor) {\n        throw new Error(\"invalid original units\");\n    }\n    var finalFactor = exports.areaFactors[finalUnit];\n    if (!finalFactor) {\n        throw new Error(\"invalid final units\");\n    }\n    return (area / startFactor) * finalFactor;\n}\nexports.convertArea = convertArea;\n/**\n * isNumber\n *\n * @param {*} num Number to validate\n * @returns {boolean} true/false\n * @example\n * turf.isNumber(123)\n * //=true\n * turf.isNumber('foo')\n * //=false\n */\nfunction isNumber(num) {\n    return !isNaN(num) && num !== null && !Array.isArray(num);\n}\nexports.isNumber = isNumber;\n/**\n * isObject\n *\n * @param {*} input variable to validate\n * @returns {boolean} true/false\n * @example\n * turf.isObject({elevation: 10})\n * //=true\n * turf.isObject('foo')\n * //=false\n */\nfunction isObject(input) {\n    return !!input && input.constructor === Object;\n}\nexports.isObject = isObject;\n/**\n * Validate BBox\n *\n * @private\n * @param {Array<number>} bbox BBox to validate\n * @returns {void}\n * @throws Error if BBox is not valid\n * @example\n * validateBBox([-180, -40, 110, 50])\n * //=OK\n * validateBBox([-180, -40])\n * //=Error\n * validateBBox('Foo')\n * //=Error\n * validateBBox(5)\n * //=Error\n * validateBBox(null)\n * //=Error\n * validateBBox(undefined)\n * //=Error\n */\nfunction validateBBox(bbox) {\n    if (!bbox) {\n        throw new Error(\"bbox is required\");\n    }\n    if (!Array.isArray(bbox)) {\n        throw new Error(\"bbox must be an Array\");\n    }\n    if (bbox.length !== 4 && bbox.length !== 6) {\n        throw new Error(\"bbox must be an Array of 4 or 6 numbers\");\n    }\n    bbox.forEach(function (num) {\n        if (!isNumber(num)) {\n            throw new Error(\"bbox must only contain numbers\");\n        }\n    });\n}\nexports.validateBBox = validateBBox;\n/**\n * Validate Id\n *\n * @private\n * @param {string|number} id Id to validate\n * @returns {void}\n * @throws Error if Id is not valid\n * @example\n * validateId([-180, -40, 110, 50])\n * //=Error\n * validateId([-180, -40])\n * //=Error\n * validateId('Foo')\n * //=OK\n * validateId(5)\n * //=OK\n * validateId(null)\n * //=Error\n * validateId(undefined)\n * //=Error\n */\nfunction validateId(id) {\n    if (!id) {\n        throw new Error(\"id is required\");\n    }\n    if ([\"string\", \"number\"].indexOf(typeof id) === -1) {\n        throw new Error(\"id must be a number or a string\");\n    }\n}\nexports.validateId = validateId;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar helpers_1 = require(\"@turf/helpers\");\n/**\n * Unwrap a coordinate from a Point Feature, Geometry or a single coordinate.\n *\n * @name getCoord\n * @param {Array<number>|Geometry<Point>|Feature<Point>} coord GeoJSON Point or an Array of numbers\n * @returns {Array<number>} coordinates\n * @example\n * var pt = turf.point([10, 10]);\n *\n * var coord = turf.getCoord(pt);\n * //= [10, 10]\n */\nfunction getCoord(coord) {\n    if (!coord) {\n        throw new Error(\"coord is required\");\n    }\n    if (!Array.isArray(coord)) {\n        if (coord.type === \"Feature\" &&\n            coord.geometry !== null &&\n            coord.geometry.type === \"Point\") {\n            return coord.geometry.coordinates;\n        }\n        if (coord.type === \"Point\") {\n            return coord.coordinates;\n        }\n    }\n    if (Array.isArray(coord) &&\n        coord.length >= 2 &&\n        !Array.isArray(coord[0]) &&\n        !Array.isArray(coord[1])) {\n        return coord;\n    }\n    throw new Error(\"coord must be GeoJSON Point or an Array of numbers\");\n}\nexports.getCoord = getCoord;\n/**\n * Unwrap coordinates from a Feature, Geometry Object or an Array\n *\n * @name getCoords\n * @param {Array<any>|Geometry|Feature} coords Feature, Geometry Object or an Array\n * @returns {Array<any>} coordinates\n * @example\n * var poly = turf.polygon([[[119.32, -8.7], [119.55, -8.69], [119.51, -8.54], [119.32, -8.7]]]);\n *\n * var coords = turf.getCoords(poly);\n * //= [[[119.32, -8.7], [119.55, -8.69], [119.51, -8.54], [119.32, -8.7]]]\n */\nfunction getCoords(coords) {\n    if (Array.isArray(coords)) {\n        return coords;\n    }\n    // Feature\n    if (coords.type === \"Feature\") {\n        if (coords.geometry !== null) {\n            return coords.geometry.coordinates;\n        }\n    }\n    else {\n        // Geometry\n        if (coords.coordinates) {\n            return coords.coordinates;\n        }\n    }\n    throw new Error(\"coords must be GeoJSON Feature, Geometry Object or an Array\");\n}\nexports.getCoords = getCoords;\n/**\n * Checks if coordinates contains a number\n *\n * @name containsNumber\n * @param {Array<any>} coordinates GeoJSON Coordinates\n * @returns {boolean} true if Array contains a number\n */\nfunction containsNumber(coordinates) {\n    if (coordinates.length > 1 &&\n        helpers_1.isNumber(coordinates[0]) &&\n        helpers_1.isNumber(coordinates[1])) {\n        return true;\n    }\n    if (Array.isArray(coordinates[0]) && coordinates[0].length) {\n        return containsNumber(coordinates[0]);\n    }\n    throw new Error(\"coordinates must only contain numbers\");\n}\nexports.containsNumber = containsNumber;\n/**\n * Enforce expectations about types of GeoJSON objects for Turf.\n *\n * @name geojsonType\n * @param {GeoJSON} value any GeoJSON object\n * @param {string} type expected GeoJSON type\n * @param {string} name name of calling function\n * @throws {Error} if value is not the expected type.\n */\nfunction geojsonType(value, type, name) {\n    if (!type || !name) {\n        throw new Error(\"type and name required\");\n    }\n    if (!value || value.type !== type) {\n        throw new Error(\"Invalid input to \" +\n            name +\n            \": must be a \" +\n            type +\n            \", given \" +\n            value.type);\n    }\n}\nexports.geojsonType = geojsonType;\n/**\n * Enforce expectations about types of {@link Feature} inputs for Turf.\n * Internally this uses {@link geojsonType} to judge geometry types.\n *\n * @name featureOf\n * @param {Feature} feature a feature with an expected geometry type\n * @param {string} type expected GeoJSON type\n * @param {string} name name of calling function\n * @throws {Error} error if value is not the expected type.\n */\nfunction featureOf(feature, type, name) {\n    if (!feature) {\n        throw new Error(\"No feature passed\");\n    }\n    if (!name) {\n        throw new Error(\".featureOf() requires a name\");\n    }\n    if (!feature || feature.type !== \"Feature\" || !feature.geometry) {\n        throw new Error(\"Invalid input to \" + name + \", Feature with geometry required\");\n    }\n    if (!feature.geometry || feature.geometry.type !== type) {\n        throw new Error(\"Invalid input to \" +\n            name +\n            \": must be a \" +\n            type +\n            \", given \" +\n            feature.geometry.type);\n    }\n}\nexports.featureOf = featureOf;\n/**\n * Enforce expectations about types of {@link FeatureCollection} inputs for Turf.\n * Internally this uses {@link geojsonType} to judge geometry types.\n *\n * @name collectionOf\n * @param {FeatureCollection} featureCollection a FeatureCollection for which features will be judged\n * @param {string} type expected GeoJSON type\n * @param {string} name name of calling function\n * @throws {Error} if value is not the expected type.\n */\nfunction collectionOf(featureCollection, type, name) {\n    if (!featureCollection) {\n        throw new Error(\"No featureCollection passed\");\n    }\n    if (!name) {\n        throw new Error(\".collectionOf() requires a name\");\n    }\n    if (!featureCollection || featureCollection.type !== \"FeatureCollection\") {\n        throw new Error(\"Invalid input to \" + name + \", FeatureCollection required\");\n    }\n    for (var _i = 0, _a = featureCollection.features; _i < _a.length; _i++) {\n        var feature = _a[_i];\n        if (!feature || feature.type !== \"Feature\" || !feature.geometry) {\n            throw new Error(\"Invalid input to \" + name + \", Feature with geometry required\");\n        }\n        if (!feature.geometry || feature.geometry.type !== type) {\n            throw new Error(\"Invalid input to \" +\n                name +\n                \": must be a \" +\n                type +\n                \", given \" +\n                feature.geometry.type);\n        }\n    }\n}\nexports.collectionOf = collectionOf;\n/**\n * Get Geometry from Feature or Geometry Object\n *\n * @param {Feature|Geometry} geojson GeoJSON Feature or Geometry Object\n * @returns {Geometry|null} GeoJSON Geometry Object\n * @throws {Error} if geojson is not a Feature or Geometry Object\n * @example\n * var point = {\n *   \"type\": \"Feature\",\n *   \"properties\": {},\n *   \"geometry\": {\n *     \"type\": \"Point\",\n *     \"coordinates\": [110, 40]\n *   }\n * }\n * var geom = turf.getGeom(point)\n * //={\"type\": \"Point\", \"coordinates\": [110, 40]}\n */\nfunction getGeom(geojson) {\n    if (geojson.type === \"Feature\") {\n        return geojson.geometry;\n    }\n    return geojson;\n}\nexports.getGeom = getGeom;\n/**\n * Get GeoJSON object's type, Geometry type is prioritize.\n *\n * @param {GeoJSON} geojson GeoJSON object\n * @param {string} [name=\"geojson\"] name of the variable to display in error message (unused)\n * @returns {string} GeoJSON type\n * @example\n * var point = {\n *   \"type\": \"Feature\",\n *   \"properties\": {},\n *   \"geometry\": {\n *     \"type\": \"Point\",\n *     \"coordinates\": [110, 40]\n *   }\n * }\n * var geom = turf.getType(point)\n * //=\"Point\"\n */\nfunction getType(geojson, _name) {\n    if (geojson.type === \"FeatureCollection\") {\n        return \"FeatureCollection\";\n    }\n    if (geojson.type === \"GeometryCollection\") {\n        return \"GeometryCollection\";\n    }\n    if (geojson.type === \"Feature\" && geojson.geometry !== null) {\n        return geojson.geometry.type;\n    }\n    return geojson.type;\n}\nexports.getType = getType;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar invariant_1 = require(\"@turf/invariant\");\nvar helpers_1 = require(\"@turf/helpers\");\n//http://en.wikipedia.org/wiki/Haversine_formula\n//http://www.movable-type.co.uk/scripts/latlong.html\n/**\n * Calculates the distance between two {@link Point|points} in degrees, radians, miles, or kilometers.\n * This uses the [Haversine formula](http://en.wikipedia.org/wiki/Haversine_formula) to account for global curvature.\n *\n * @name distance\n * @param {Coord | Point} from origin point or coordinate\n * @param {Coord | Point} to destination point or coordinate\n * @param {Object} [options={}] Optional parameters\n * @param {string} [options.units='kilometers'] can be degrees, radians, miles, or kilometers\n * @returns {number} distance between the two points\n * @example\n * var from = turf.point([-75.343, 39.984]);\n * var to = turf.point([-75.534, 39.123]);\n * var options = {units: 'miles'};\n *\n * var distance = turf.distance(from, to, options);\n *\n * //addToMap\n * var addToMap = [from, to];\n * from.properties.distance = distance;\n * to.properties.distance = distance;\n */\nfunction distance(from, to, options) {\n    if (options === void 0) { options = {}; }\n    var coordinates1 = invariant_1.getCoord(from);\n    var coordinates2 = invariant_1.getCoord(to);\n    var dLat = helpers_1.degreesToRadians(coordinates2[1] - coordinates1[1]);\n    var dLon = helpers_1.degreesToRadians(coordinates2[0] - coordinates1[0]);\n    var lat1 = helpers_1.degreesToRadians(coordinates1[1]);\n    var lat2 = helpers_1.degreesToRadians(coordinates2[1]);\n    var a = Math.pow(Math.sin(dLat / 2), 2) +\n        Math.pow(Math.sin(dLon / 2), 2) * Math.cos(lat1) * Math.cos(lat2);\n    return helpers_1.radiansToLength(2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a)), options.units);\n}\nexports.default = distance;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * @module helpers\n */\n/**\n * Earth Radius used with the Harvesine formula and approximates using a spherical (non-ellipsoid) Earth.\n *\n * @memberof helpers\n * @type {number}\n */\nexports.earthRadius = 6371008.8;\n/**\n * Unit of measurement factors using a spherical (non-ellipsoid) earth radius.\n *\n * @memberof helpers\n * @type {Object}\n */\nexports.factors = {\n    centimeters: exports.earthRadius * 100,\n    centimetres: exports.earthRadius * 100,\n    degrees: exports.earthRadius / 111325,\n    feet: exports.earthRadius * 3.28084,\n    inches: exports.earthRadius * 39.37,\n    kilometers: exports.earthRadius / 1000,\n    kilometres: exports.earthRadius / 1000,\n    meters: exports.earthRadius,\n    metres: exports.earthRadius,\n    miles: exports.earthRadius / 1609.344,\n    millimeters: exports.earthRadius * 1000,\n    millimetres: exports.earthRadius * 1000,\n    nauticalmiles: exports.earthRadius / 1852,\n    radians: 1,\n    yards: exports.earthRadius * 1.0936,\n};\n/**\n * Units of measurement factors based on 1 meter.\n *\n * @memberof helpers\n * @type {Object}\n */\nexports.unitsFactors = {\n    centimeters: 100,\n    centimetres: 100,\n    degrees: 1 / 111325,\n    feet: 3.28084,\n    inches: 39.37,\n    kilometers: 1 / 1000,\n    kilometres: 1 / 1000,\n    meters: 1,\n    metres: 1,\n    miles: 1 / 1609.344,\n    millimeters: 1000,\n    millimetres: 1000,\n    nauticalmiles: 1 / 1852,\n    radians: 1 / exports.earthRadius,\n    yards: 1.0936133,\n};\n/**\n * Area of measurement factors based on 1 square meter.\n *\n * @memberof helpers\n * @type {Object}\n */\nexports.areaFactors = {\n    acres: 0.000247105,\n    centimeters: 10000,\n    centimetres: 10000,\n    feet: 10.763910417,\n    hectares: 0.0001,\n    inches: 1550.003100006,\n    kilometers: 0.000001,\n    kilometres: 0.000001,\n    meters: 1,\n    metres: 1,\n    miles: 3.86e-7,\n    millimeters: 1000000,\n    millimetres: 1000000,\n    yards: 1.195990046,\n};\n/**\n * Wraps a GeoJSON {@link Geometry} in a GeoJSON {@link Feature}.\n *\n * @name feature\n * @param {Geometry} geometry input geometry\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} a GeoJSON Feature\n * @example\n * var geometry = {\n *   \"type\": \"Point\",\n *   \"coordinates\": [110, 50]\n * };\n *\n * var feature = turf.feature(geometry);\n *\n * //=feature\n */\nfunction feature(geom, properties, options) {\n    if (options === void 0) { options = {}; }\n    var feat = { type: \"Feature\" };\n    if (options.id === 0 || options.id) {\n        feat.id = options.id;\n    }\n    if (options.bbox) {\n        feat.bbox = options.bbox;\n    }\n    feat.properties = properties || {};\n    feat.geometry = geom;\n    return feat;\n}\nexports.feature = feature;\n/**\n * Creates a GeoJSON {@link Geometry} from a Geometry string type & coordinates.\n * For GeometryCollection type use `helpers.geometryCollection`\n *\n * @name geometry\n * @param {string} type Geometry Type\n * @param {Array<any>} coordinates Coordinates\n * @param {Object} [options={}] Optional Parameters\n * @returns {Geometry} a GeoJSON Geometry\n * @example\n * var type = \"Point\";\n * var coordinates = [110, 50];\n * var geometry = turf.geometry(type, coordinates);\n * // => geometry\n */\nfunction geometry(type, coordinates, _options) {\n    if (_options === void 0) { _options = {}; }\n    switch (type) {\n        case \"Point\":\n            return point(coordinates).geometry;\n        case \"LineString\":\n            return lineString(coordinates).geometry;\n        case \"Polygon\":\n            return polygon(coordinates).geometry;\n        case \"MultiPoint\":\n            return multiPoint(coordinates).geometry;\n        case \"MultiLineString\":\n            return multiLineString(coordinates).geometry;\n        case \"MultiPolygon\":\n            return multiPolygon(coordinates).geometry;\n        default:\n            throw new Error(type + \" is invalid\");\n    }\n}\nexports.geometry = geometry;\n/**\n * Creates a {@link Point} {@link Feature} from a Position.\n *\n * @name point\n * @param {Array<number>} coordinates longitude, latitude position (each in decimal degrees)\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<Point>} a Point feature\n * @example\n * var point = turf.point([-75.343, 39.984]);\n *\n * //=point\n */\nfunction point(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    if (!coordinates) {\n        throw new Error(\"coordinates is required\");\n    }\n    if (!Array.isArray(coordinates)) {\n        throw new Error(\"coordinates must be an Array\");\n    }\n    if (coordinates.length < 2) {\n        throw new Error(\"coordinates must be at least 2 numbers long\");\n    }\n    if (!isNumber(coordinates[0]) || !isNumber(coordinates[1])) {\n        throw new Error(\"coordinates must contain numbers\");\n    }\n    var geom = {\n        type: \"Point\",\n        coordinates: coordinates,\n    };\n    return feature(geom, properties, options);\n}\nexports.point = point;\n/**\n * Creates a {@link Point} {@link FeatureCollection} from an Array of Point coordinates.\n *\n * @name points\n * @param {Array<Array<number>>} coordinates an array of Points\n * @param {Object} [properties={}] Translate these properties to each Feature\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north]\n * associated with the FeatureCollection\n * @param {string|number} [options.id] Identifier associated with the FeatureCollection\n * @returns {FeatureCollection<Point>} Point Feature\n * @example\n * var points = turf.points([\n *   [-75, 39],\n *   [-80, 45],\n *   [-78, 50]\n * ]);\n *\n * //=points\n */\nfunction points(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    return featureCollection(coordinates.map(function (coords) {\n        return point(coords, properties);\n    }), options);\n}\nexports.points = points;\n/**\n * Creates a {@link Polygon} {@link Feature} from an Array of LinearRings.\n *\n * @name polygon\n * @param {Array<Array<Array<number>>>} coordinates an array of LinearRings\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<Polygon>} Polygon Feature\n * @example\n * var polygon = turf.polygon([[[-5, 52], [-4, 56], [-2, 51], [-7, 54], [-5, 52]]], { name: 'poly1' });\n *\n * //=polygon\n */\nfunction polygon(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    for (var _i = 0, coordinates_1 = coordinates; _i < coordinates_1.length; _i++) {\n        var ring = coordinates_1[_i];\n        if (ring.length < 4) {\n            throw new Error(\"Each LinearRing of a Polygon must have 4 or more Positions.\");\n        }\n        for (var j = 0; j < ring[ring.length - 1].length; j++) {\n            // Check if first point of Polygon contains two numbers\n            if (ring[ring.length - 1][j] !== ring[0][j]) {\n                throw new Error(\"First and last Position are not equivalent.\");\n            }\n        }\n    }\n    var geom = {\n        type: \"Polygon\",\n        coordinates: coordinates,\n    };\n    return feature(geom, properties, options);\n}\nexports.polygon = polygon;\n/**\n * Creates a {@link Polygon} {@link FeatureCollection} from an Array of Polygon coordinates.\n *\n * @name polygons\n * @param {Array<Array<Array<Array<number>>>>} coordinates an array of Polygon coordinates\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the FeatureCollection\n * @returns {FeatureCollection<Polygon>} Polygon FeatureCollection\n * @example\n * var polygons = turf.polygons([\n *   [[[-5, 52], [-4, 56], [-2, 51], [-7, 54], [-5, 52]]],\n *   [[[-15, 42], [-14, 46], [-12, 41], [-17, 44], [-15, 42]]],\n * ]);\n *\n * //=polygons\n */\nfunction polygons(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    return featureCollection(coordinates.map(function (coords) {\n        return polygon(coords, properties);\n    }), options);\n}\nexports.polygons = polygons;\n/**\n * Creates a {@link LineString} {@link Feature} from an Array of Positions.\n *\n * @name lineString\n * @param {Array<Array<number>>} coordinates an array of Positions\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<LineString>} LineString Feature\n * @example\n * var linestring1 = turf.lineString([[-24, 63], [-23, 60], [-25, 65], [-20, 69]], {name: 'line 1'});\n * var linestring2 = turf.lineString([[-14, 43], [-13, 40], [-15, 45], [-10, 49]], {name: 'line 2'});\n *\n * //=linestring1\n * //=linestring2\n */\nfunction lineString(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    if (coordinates.length < 2) {\n        throw new Error(\"coordinates must be an array of two or more positions\");\n    }\n    var geom = {\n        type: \"LineString\",\n        coordinates: coordinates,\n    };\n    return feature(geom, properties, options);\n}\nexports.lineString = lineString;\n/**\n * Creates a {@link LineString} {@link FeatureCollection} from an Array of LineString coordinates.\n *\n * @name lineStrings\n * @param {Array<Array<Array<number>>>} coordinates an array of LinearRings\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north]\n * associated with the FeatureCollection\n * @param {string|number} [options.id] Identifier associated with the FeatureCollection\n * @returns {FeatureCollection<LineString>} LineString FeatureCollection\n * @example\n * var linestrings = turf.lineStrings([\n *   [[-24, 63], [-23, 60], [-25, 65], [-20, 69]],\n *   [[-14, 43], [-13, 40], [-15, 45], [-10, 49]]\n * ]);\n *\n * //=linestrings\n */\nfunction lineStrings(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    return featureCollection(coordinates.map(function (coords) {\n        return lineString(coords, properties);\n    }), options);\n}\nexports.lineStrings = lineStrings;\n/**\n * Takes one or more {@link Feature|Features} and creates a {@link FeatureCollection}.\n *\n * @name featureCollection\n * @param {Feature[]} features input features\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {FeatureCollection} FeatureCollection of Features\n * @example\n * var locationA = turf.point([-75.343, 39.984], {name: 'Location A'});\n * var locationB = turf.point([-75.833, 39.284], {name: 'Location B'});\n * var locationC = turf.point([-75.534, 39.123], {name: 'Location C'});\n *\n * var collection = turf.featureCollection([\n *   locationA,\n *   locationB,\n *   locationC\n * ]);\n *\n * //=collection\n */\nfunction featureCollection(features, options) {\n    if (options === void 0) { options = {}; }\n    var fc = { type: \"FeatureCollection\" };\n    if (options.id) {\n        fc.id = options.id;\n    }\n    if (options.bbox) {\n        fc.bbox = options.bbox;\n    }\n    fc.features = features;\n    return fc;\n}\nexports.featureCollection = featureCollection;\n/**\n * Creates a {@link Feature<MultiLineString>} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name multiLineString\n * @param {Array<Array<Array<number>>>} coordinates an array of LineStrings\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<MultiLineString>} a MultiLineString feature\n * @throws {Error} if no coordinates are passed\n * @example\n * var multiLine = turf.multiLineString([[[0,0],[10,10]]]);\n *\n * //=multiLine\n */\nfunction multiLineString(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    var geom = {\n        type: \"MultiLineString\",\n        coordinates: coordinates,\n    };\n    return feature(geom, properties, options);\n}\nexports.multiLineString = multiLineString;\n/**\n * Creates a {@link Feature<MultiPoint>} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name multiPoint\n * @param {Array<Array<number>>} coordinates an array of Positions\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<MultiPoint>} a MultiPoint feature\n * @throws {Error} if no coordinates are passed\n * @example\n * var multiPt = turf.multiPoint([[0,0],[10,10]]);\n *\n * //=multiPt\n */\nfunction multiPoint(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    var geom = {\n        type: \"MultiPoint\",\n        coordinates: coordinates,\n    };\n    return feature(geom, properties, options);\n}\nexports.multiPoint = multiPoint;\n/**\n * Creates a {@link Feature<MultiPolygon>} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name multiPolygon\n * @param {Array<Array<Array<Array<number>>>>} coordinates an array of Polygons\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<MultiPolygon>} a multipolygon feature\n * @throws {Error} if no coordinates are passed\n * @example\n * var multiPoly = turf.multiPolygon([[[[0,0],[0,10],[10,10],[10,0],[0,0]]]]);\n *\n * //=multiPoly\n *\n */\nfunction multiPolygon(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    var geom = {\n        type: \"MultiPolygon\",\n        coordinates: coordinates,\n    };\n    return feature(geom, properties, options);\n}\nexports.multiPolygon = multiPolygon;\n/**\n * Creates a {@link Feature<GeometryCollection>} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name geometryCollection\n * @param {Array<Geometry>} geometries an array of GeoJSON Geometries\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<GeometryCollection>} a GeoJSON GeometryCollection Feature\n * @example\n * var pt = turf.geometry(\"Point\", [100, 0]);\n * var line = turf.geometry(\"LineString\", [[101, 0], [102, 1]]);\n * var collection = turf.geometryCollection([pt, line]);\n *\n * // => collection\n */\nfunction geometryCollection(geometries, properties, options) {\n    if (options === void 0) { options = {}; }\n    var geom = {\n        type: \"GeometryCollection\",\n        geometries: geometries,\n    };\n    return feature(geom, properties, options);\n}\nexports.geometryCollection = geometryCollection;\n/**\n * Round number to precision\n *\n * @param {number} num Number\n * @param {number} [precision=0] Precision\n * @returns {number} rounded number\n * @example\n * turf.round(120.4321)\n * //=120\n *\n * turf.round(120.4321, 2)\n * //=120.43\n */\nfunction round(num, precision) {\n    if (precision === void 0) { precision = 0; }\n    if (precision && !(precision >= 0)) {\n        throw new Error(\"precision must be a positive number\");\n    }\n    var multiplier = Math.pow(10, precision || 0);\n    return Math.round(num * multiplier) / multiplier;\n}\nexports.round = round;\n/**\n * Convert a distance measurement (assuming a spherical Earth) from radians to a more friendly unit.\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet\n *\n * @name radiansToLength\n * @param {number} radians in radians across the sphere\n * @param {string} [units=\"kilometers\"] can be degrees, radians, miles, inches, yards, metres,\n * meters, kilometres, kilometers.\n * @returns {number} distance\n */\nfunction radiansToLength(radians, units) {\n    if (units === void 0) { units = \"kilometers\"; }\n    var factor = exports.factors[units];\n    if (!factor) {\n        throw new Error(units + \" units is invalid\");\n    }\n    return radians * factor;\n}\nexports.radiansToLength = radiansToLength;\n/**\n * Convert a distance measurement (assuming a spherical Earth) from a real-world unit into radians\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet\n *\n * @name lengthToRadians\n * @param {number} distance in real units\n * @param {string} [units=\"kilometers\"] can be degrees, radians, miles, inches, yards, metres,\n * meters, kilometres, kilometers.\n * @returns {number} radians\n */\nfunction lengthToRadians(distance, units) {\n    if (units === void 0) { units = \"kilometers\"; }\n    var factor = exports.factors[units];\n    if (!factor) {\n        throw new Error(units + \" units is invalid\");\n    }\n    return distance / factor;\n}\nexports.lengthToRadians = lengthToRadians;\n/**\n * Convert a distance measurement (assuming a spherical Earth) from a real-world unit into degrees\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, centimeters, kilometres, feet\n *\n * @name lengthToDegrees\n * @param {number} distance in real units\n * @param {string} [units=\"kilometers\"] can be degrees, radians, miles, inches, yards, metres,\n * meters, kilometres, kilometers.\n * @returns {number} degrees\n */\nfunction lengthToDegrees(distance, units) {\n    return radiansToDegrees(lengthToRadians(distance, units));\n}\nexports.lengthToDegrees = lengthToDegrees;\n/**\n * Converts any bearing angle from the north line direction (positive clockwise)\n * and returns an angle between 0-360 degrees (positive clockwise), 0 being the north line\n *\n * @name bearingToAzimuth\n * @param {number} bearing angle, between -180 and +180 degrees\n * @returns {number} angle between 0 and 360 degrees\n */\nfunction bearingToAzimuth(bearing) {\n    var angle = bearing % 360;\n    if (angle < 0) {\n        angle += 360;\n    }\n    return angle;\n}\nexports.bearingToAzimuth = bearingToAzimuth;\n/**\n * Converts an angle in radians to degrees\n *\n * @name radiansToDegrees\n * @param {number} radians angle in radians\n * @returns {number} degrees between 0 and 360 degrees\n */\nfunction radiansToDegrees(radians) {\n    var degrees = radians % (2 * Math.PI);\n    return (degrees * 180) / Math.PI;\n}\nexports.radiansToDegrees = radiansToDegrees;\n/**\n * Converts an angle in degrees to radians\n *\n * @name degreesToRadians\n * @param {number} degrees angle between 0 and 360 degrees\n * @returns {number} angle in radians\n */\nfunction degreesToRadians(degrees) {\n    var radians = degrees % 360;\n    return (radians * Math.PI) / 180;\n}\nexports.degreesToRadians = degreesToRadians;\n/**\n * Converts a length to the requested unit.\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet\n *\n * @param {number} length to be converted\n * @param {Units} [originalUnit=\"kilometers\"] of the length\n * @param {Units} [finalUnit=\"kilometers\"] returned unit\n * @returns {number} the converted length\n */\nfunction convertLength(length, originalUnit, finalUnit) {\n    if (originalUnit === void 0) { originalUnit = \"kilometers\"; }\n    if (finalUnit === void 0) { finalUnit = \"kilometers\"; }\n    if (!(length >= 0)) {\n        throw new Error(\"length must be a positive number\");\n    }\n    return radiansToLength(lengthToRadians(length, originalUnit), finalUnit);\n}\nexports.convertLength = convertLength;\n/**\n * Converts a area to the requested unit.\n * Valid units: kilometers, kilometres, meters, metres, centimetres, millimeters, acres, miles, yards, feet, inches, hectares\n * @param {number} area to be converted\n * @param {Units} [originalUnit=\"meters\"] of the distance\n * @param {Units} [finalUnit=\"kilometers\"] returned unit\n * @returns {number} the converted area\n */\nfunction convertArea(area, originalUnit, finalUnit) {\n    if (originalUnit === void 0) { originalUnit = \"meters\"; }\n    if (finalUnit === void 0) { finalUnit = \"kilometers\"; }\n    if (!(area >= 0)) {\n        throw new Error(\"area must be a positive number\");\n    }\n    var startFactor = exports.areaFactors[originalUnit];\n    if (!startFactor) {\n        throw new Error(\"invalid original units\");\n    }\n    var finalFactor = exports.areaFactors[finalUnit];\n    if (!finalFactor) {\n        throw new Error(\"invalid final units\");\n    }\n    return (area / startFactor) * finalFactor;\n}\nexports.convertArea = convertArea;\n/**\n * isNumber\n *\n * @param {*} num Number to validate\n * @returns {boolean} true/false\n * @example\n * turf.isNumber(123)\n * //=true\n * turf.isNumber('foo')\n * //=false\n */\nfunction isNumber(num) {\n    return !isNaN(num) && num !== null && !Array.isArray(num);\n}\nexports.isNumber = isNumber;\n/**\n * isObject\n *\n * @param {*} input variable to validate\n * @returns {boolean} true/false\n * @example\n * turf.isObject({elevation: 10})\n * //=true\n * turf.isObject('foo')\n * //=false\n */\nfunction isObject(input) {\n    return !!input && input.constructor === Object;\n}\nexports.isObject = isObject;\n/**\n * Validate BBox\n *\n * @private\n * @param {Array<number>} bbox BBox to validate\n * @returns {void}\n * @throws Error if BBox is not valid\n * @example\n * validateBBox([-180, -40, 110, 50])\n * //=OK\n * validateBBox([-180, -40])\n * //=Error\n * validateBBox('Foo')\n * //=Error\n * validateBBox(5)\n * //=Error\n * validateBBox(null)\n * //=Error\n * validateBBox(undefined)\n * //=Error\n */\nfunction validateBBox(bbox) {\n    if (!bbox) {\n        throw new Error(\"bbox is required\");\n    }\n    if (!Array.isArray(bbox)) {\n        throw new Error(\"bbox must be an Array\");\n    }\n    if (bbox.length !== 4 && bbox.length !== 6) {\n        throw new Error(\"bbox must be an Array of 4 or 6 numbers\");\n    }\n    bbox.forEach(function (num) {\n        if (!isNumber(num)) {\n            throw new Error(\"bbox must only contain numbers\");\n        }\n    });\n}\nexports.validateBBox = validateBBox;\n/**\n * Validate Id\n *\n * @private\n * @param {string|number} id Id to validate\n * @returns {void}\n * @throws Error if Id is not valid\n * @example\n * validateId([-180, -40, 110, 50])\n * //=Error\n * validateId([-180, -40])\n * //=Error\n * validateId('Foo')\n * //=OK\n * validateId(5)\n * //=OK\n * validateId(null)\n * //=Error\n * validateId(undefined)\n * //=Error\n */\nfunction validateId(id) {\n    if (!id) {\n        throw new Error(\"id is required\");\n    }\n    if ([\"string\", \"number\"].indexOf(typeof id) === -1) {\n        throw new Error(\"id must be a number or a string\");\n    }\n}\nexports.validateId = validateId;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar helpers_1 = require(\"@turf/helpers\");\n/**\n * Unwrap a coordinate from a Point Feature, Geometry or a single coordinate.\n *\n * @name getCoord\n * @param {Array<number>|Geometry<Point>|Feature<Point>} coord GeoJSON Point or an Array of numbers\n * @returns {Array<number>} coordinates\n * @example\n * var pt = turf.point([10, 10]);\n *\n * var coord = turf.getCoord(pt);\n * //= [10, 10]\n */\nfunction getCoord(coord) {\n    if (!coord) {\n        throw new Error(\"coord is required\");\n    }\n    if (!Array.isArray(coord)) {\n        if (coord.type === \"Feature\" &&\n            coord.geometry !== null &&\n            coord.geometry.type === \"Point\") {\n            return coord.geometry.coordinates;\n        }\n        if (coord.type === \"Point\") {\n            return coord.coordinates;\n        }\n    }\n    if (Array.isArray(coord) &&\n        coord.length >= 2 &&\n        !Array.isArray(coord[0]) &&\n        !Array.isArray(coord[1])) {\n        return coord;\n    }\n    throw new Error(\"coord must be GeoJSON Point or an Array of numbers\");\n}\nexports.getCoord = getCoord;\n/**\n * Unwrap coordinates from a Feature, Geometry Object or an Array\n *\n * @name getCoords\n * @param {Array<any>|Geometry|Feature} coords Feature, Geometry Object or an Array\n * @returns {Array<any>} coordinates\n * @example\n * var poly = turf.polygon([[[119.32, -8.7], [119.55, -8.69], [119.51, -8.54], [119.32, -8.7]]]);\n *\n * var coords = turf.getCoords(poly);\n * //= [[[119.32, -8.7], [119.55, -8.69], [119.51, -8.54], [119.32, -8.7]]]\n */\nfunction getCoords(coords) {\n    if (Array.isArray(coords)) {\n        return coords;\n    }\n    // Feature\n    if (coords.type === \"Feature\") {\n        if (coords.geometry !== null) {\n            return coords.geometry.coordinates;\n        }\n    }\n    else {\n        // Geometry\n        if (coords.coordinates) {\n            return coords.coordinates;\n        }\n    }\n    throw new Error(\"coords must be GeoJSON Feature, Geometry Object or an Array\");\n}\nexports.getCoords = getCoords;\n/**\n * Checks if coordinates contains a number\n *\n * @name containsNumber\n * @param {Array<any>} coordinates GeoJSON Coordinates\n * @returns {boolean} true if Array contains a number\n */\nfunction containsNumber(coordinates) {\n    if (coordinates.length > 1 &&\n        helpers_1.isNumber(coordinates[0]) &&\n        helpers_1.isNumber(coordinates[1])) {\n        return true;\n    }\n    if (Array.isArray(coordinates[0]) && coordinates[0].length) {\n        return containsNumber(coordinates[0]);\n    }\n    throw new Error(\"coordinates must only contain numbers\");\n}\nexports.containsNumber = containsNumber;\n/**\n * Enforce expectations about types of GeoJSON objects for Turf.\n *\n * @name geojsonType\n * @param {GeoJSON} value any GeoJSON object\n * @param {string} type expected GeoJSON type\n * @param {string} name name of calling function\n * @throws {Error} if value is not the expected type.\n */\nfunction geojsonType(value, type, name) {\n    if (!type || !name) {\n        throw new Error(\"type and name required\");\n    }\n    if (!value || value.type !== type) {\n        throw new Error(\"Invalid input to \" +\n            name +\n            \": must be a \" +\n            type +\n            \", given \" +\n            value.type);\n    }\n}\nexports.geojsonType = geojsonType;\n/**\n * Enforce expectations about types of {@link Feature} inputs for Turf.\n * Internally this uses {@link geojsonType} to judge geometry types.\n *\n * @name featureOf\n * @param {Feature} feature a feature with an expected geometry type\n * @param {string} type expected GeoJSON type\n * @param {string} name name of calling function\n * @throws {Error} error if value is not the expected type.\n */\nfunction featureOf(feature, type, name) {\n    if (!feature) {\n        throw new Error(\"No feature passed\");\n    }\n    if (!name) {\n        throw new Error(\".featureOf() requires a name\");\n    }\n    if (!feature || feature.type !== \"Feature\" || !feature.geometry) {\n        throw new Error(\"Invalid input to \" + name + \", Feature with geometry required\");\n    }\n    if (!feature.geometry || feature.geometry.type !== type) {\n        throw new Error(\"Invalid input to \" +\n            name +\n            \": must be a \" +\n            type +\n            \", given \" +\n            feature.geometry.type);\n    }\n}\nexports.featureOf = featureOf;\n/**\n * Enforce expectations about types of {@link FeatureCollection} inputs for Turf.\n * Internally this uses {@link geojsonType} to judge geometry types.\n *\n * @name collectionOf\n * @param {FeatureCollection} featureCollection a FeatureCollection for which features will be judged\n * @param {string} type expected GeoJSON type\n * @param {string} name name of calling function\n * @throws {Error} if value is not the expected type.\n */\nfunction collectionOf(featureCollection, type, name) {\n    if (!featureCollection) {\n        throw new Error(\"No featureCollection passed\");\n    }\n    if (!name) {\n        throw new Error(\".collectionOf() requires a name\");\n    }\n    if (!featureCollection || featureCollection.type !== \"FeatureCollection\") {\n        throw new Error(\"Invalid input to \" + name + \", FeatureCollection required\");\n    }\n    for (var _i = 0, _a = featureCollection.features; _i < _a.length; _i++) {\n        var feature = _a[_i];\n        if (!feature || feature.type !== \"Feature\" || !feature.geometry) {\n            throw new Error(\"Invalid input to \" + name + \", Feature with geometry required\");\n        }\n        if (!feature.geometry || feature.geometry.type !== type) {\n            throw new Error(\"Invalid input to \" +\n                name +\n                \": must be a \" +\n                type +\n                \", given \" +\n                feature.geometry.type);\n        }\n    }\n}\nexports.collectionOf = collectionOf;\n/**\n * Get Geometry from Feature or Geometry Object\n *\n * @param {Feature|Geometry} geojson GeoJSON Feature or Geometry Object\n * @returns {Geometry|null} GeoJSON Geometry Object\n * @throws {Error} if geojson is not a Feature or Geometry Object\n * @example\n * var point = {\n *   \"type\": \"Feature\",\n *   \"properties\": {},\n *   \"geometry\": {\n *     \"type\": \"Point\",\n *     \"coordinates\": [110, 40]\n *   }\n * }\n * var geom = turf.getGeom(point)\n * //={\"type\": \"Point\", \"coordinates\": [110, 40]}\n */\nfunction getGeom(geojson) {\n    if (geojson.type === \"Feature\") {\n        return geojson.geometry;\n    }\n    return geojson;\n}\nexports.getGeom = getGeom;\n/**\n * Get GeoJSON object's type, Geometry type is prioritize.\n *\n * @param {GeoJSON} geojson GeoJSON object\n * @param {string} [name=\"geojson\"] name of the variable to display in error message (unused)\n * @returns {string} GeoJSON type\n * @example\n * var point = {\n *   \"type\": \"Feature\",\n *   \"properties\": {},\n *   \"geometry\": {\n *     \"type\": \"Point\",\n *     \"coordinates\": [110, 40]\n *   }\n * }\n * var geom = turf.getType(point)\n * //=\"Point\"\n */\nfunction getType(geojson, _name) {\n    if (geojson.type === \"FeatureCollection\") {\n        return \"FeatureCollection\";\n    }\n    if (geojson.type === \"GeometryCollection\") {\n        return \"GeometryCollection\";\n    }\n    if (geojson.type === \"Feature\" && geojson.geometry !== null) {\n        return geojson.geometry.type;\n    }\n    return geojson.type;\n}\nexports.getType = getType;\n","'use strict';\n\nvar helpers = require('@turf/helpers');\nvar rhumbDestination = require('@turf/rhumb-destination');\nvar transformRotate = require('@turf/transform-rotate');\nvar invariant = require('@turf/invariant');\n\nfunction _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }\n\nvar rhumbDestination__default = /*#__PURE__*/_interopDefaultLegacy(rhumbDestination);\nvar transformRotate__default = /*#__PURE__*/_interopDefaultLegacy(transformRotate);\n\n/**\n * Takes a {@link Point} and calculates the ellipse polygon given two semi-axes expressed in variable units and steps for precision.\n *\n * @param {Coord} center center point\n * @param {number} xSemiAxis semi (major) axis of the ellipse along the x-axis\n * @param {number} ySemiAxis semi (minor) axis of the ellipse along the y-axis\n * @param {Object} [options={}] Optional parameters\n * @param {number} [options.angle=0] angle of rotation in decimal degrees, positive clockwise\n * @param {Coord} [options.pivot='origin'] point around which the rotation will be performed\n * @param {number} [options.steps=64] number of steps\n * @param {string} [options.units='kilometers'] unit of measurement for axes\n * @param {Object} [options.properties={}] properties\n * @returns {Feature<Polygon>} ellipse polygon\n * @example\n * var center = [-75, 40];\n * var xSemiAxis = 5;\n * var ySemiAxis = 2;\n * var ellipse = turf.ellipse(center, xSemiAxis, ySemiAxis);\n *\n * //addToMap\n * var addToMap = [turf.point(center), ellipse]\n */\nfunction ellipse(center, xSemiAxis, ySemiAxis, options) {\n  // Optional params\n  options = options || {};\n  var steps = options.steps || 64;\n  var units = options.units || \"kilometers\";\n  var angle = options.angle || 0;\n  var pivot = options.pivot || center;\n  var properties = options.properties || center.properties || {};\n\n  // validation\n  if (!center) throw new Error(\"center is required\");\n  if (!xSemiAxis) throw new Error(\"xSemiAxis is required\");\n  if (!ySemiAxis) throw new Error(\"ySemiAxis is required\");\n  if (!helpers.isObject(options)) throw new Error(\"options must be an object\");\n  if (!helpers.isNumber(steps)) throw new Error(\"steps must be a number\");\n  if (!helpers.isNumber(angle)) throw new Error(\"angle must be a number\");\n\n  var centerCoords = invariant.getCoord(center);\n  if (units === \"degrees\") {\n    var angleRad = helpers.degreesToRadians(angle);\n  } else {\n    xSemiAxis = rhumbDestination__default['default'](center, xSemiAxis, 90, { units: units });\n    ySemiAxis = rhumbDestination__default['default'](center, ySemiAxis, 0, { units: units });\n    xSemiAxis = invariant.getCoord(xSemiAxis)[0] - centerCoords[0];\n    ySemiAxis = invariant.getCoord(ySemiAxis)[1] - centerCoords[1];\n  }\n\n  var coordinates = [];\n  for (var i = 0; i < steps; i += 1) {\n    var stepAngle = (i * -360) / steps;\n    var x =\n      (xSemiAxis * ySemiAxis) /\n      Math.sqrt(\n        Math.pow(ySemiAxis, 2) +\n          Math.pow(xSemiAxis, 2) * Math.pow(getTanDeg(stepAngle), 2)\n      );\n    var y =\n      (xSemiAxis * ySemiAxis) /\n      Math.sqrt(\n        Math.pow(xSemiAxis, 2) +\n          Math.pow(ySemiAxis, 2) / Math.pow(getTanDeg(stepAngle), 2)\n      );\n\n    if (stepAngle < -90 && stepAngle >= -270) x = -x;\n    if (stepAngle < -180 && stepAngle >= -360) y = -y;\n    if (units === \"degrees\") {\n      var newx = x * Math.cos(angleRad) + y * Math.sin(angleRad);\n      var newy = y * Math.cos(angleRad) - x * Math.sin(angleRad);\n      x = newx;\n      y = newy;\n    }\n\n    coordinates.push([x + centerCoords[0], y + centerCoords[1]]);\n  }\n  coordinates.push(coordinates[0]);\n  if (units === \"degrees\") {\n    return helpers.polygon([coordinates], properties);\n  } else {\n    return transformRotate__default['default'](helpers.polygon([coordinates], properties), angle, {\n      pivot: pivot,\n    });\n  }\n}\n\n/**\n * Get Tan Degrees\n *\n * @private\n * @param {number} deg Degrees\n * @returns {number} Tan Degrees\n */\nfunction getTanDeg(deg) {\n  var rad = (deg * Math.PI) / 180;\n  return Math.tan(rad);\n}\n\nmodule.exports = ellipse;\nmodule.exports.default = ellipse;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * @module helpers\n */\n/**\n * Earth Radius used with the Harvesine formula and approximates using a spherical (non-ellipsoid) Earth.\n *\n * @memberof helpers\n * @type {number}\n */\nexports.earthRadius = 6371008.8;\n/**\n * Unit of measurement factors using a spherical (non-ellipsoid) earth radius.\n *\n * @memberof helpers\n * @type {Object}\n */\nexports.factors = {\n    centimeters: exports.earthRadius * 100,\n    centimetres: exports.earthRadius * 100,\n    degrees: exports.earthRadius / 111325,\n    feet: exports.earthRadius * 3.28084,\n    inches: exports.earthRadius * 39.37,\n    kilometers: exports.earthRadius / 1000,\n    kilometres: exports.earthRadius / 1000,\n    meters: exports.earthRadius,\n    metres: exports.earthRadius,\n    miles: exports.earthRadius / 1609.344,\n    millimeters: exports.earthRadius * 1000,\n    millimetres: exports.earthRadius * 1000,\n    nauticalmiles: exports.earthRadius / 1852,\n    radians: 1,\n    yards: exports.earthRadius * 1.0936,\n};\n/**\n * Units of measurement factors based on 1 meter.\n *\n * @memberof helpers\n * @type {Object}\n */\nexports.unitsFactors = {\n    centimeters: 100,\n    centimetres: 100,\n    degrees: 1 / 111325,\n    feet: 3.28084,\n    inches: 39.37,\n    kilometers: 1 / 1000,\n    kilometres: 1 / 1000,\n    meters: 1,\n    metres: 1,\n    miles: 1 / 1609.344,\n    millimeters: 1000,\n    millimetres: 1000,\n    nauticalmiles: 1 / 1852,\n    radians: 1 / exports.earthRadius,\n    yards: 1.0936133,\n};\n/**\n * Area of measurement factors based on 1 square meter.\n *\n * @memberof helpers\n * @type {Object}\n */\nexports.areaFactors = {\n    acres: 0.000247105,\n    centimeters: 10000,\n    centimetres: 10000,\n    feet: 10.763910417,\n    hectares: 0.0001,\n    inches: 1550.003100006,\n    kilometers: 0.000001,\n    kilometres: 0.000001,\n    meters: 1,\n    metres: 1,\n    miles: 3.86e-7,\n    millimeters: 1000000,\n    millimetres: 1000000,\n    yards: 1.195990046,\n};\n/**\n * Wraps a GeoJSON {@link Geometry} in a GeoJSON {@link Feature}.\n *\n * @name feature\n * @param {Geometry} geometry input geometry\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} a GeoJSON Feature\n * @example\n * var geometry = {\n *   \"type\": \"Point\",\n *   \"coordinates\": [110, 50]\n * };\n *\n * var feature = turf.feature(geometry);\n *\n * //=feature\n */\nfunction feature(geom, properties, options) {\n    if (options === void 0) { options = {}; }\n    var feat = { type: \"Feature\" };\n    if (options.id === 0 || options.id) {\n        feat.id = options.id;\n    }\n    if (options.bbox) {\n        feat.bbox = options.bbox;\n    }\n    feat.properties = properties || {};\n    feat.geometry = geom;\n    return feat;\n}\nexports.feature = feature;\n/**\n * Creates a GeoJSON {@link Geometry} from a Geometry string type & coordinates.\n * For GeometryCollection type use `helpers.geometryCollection`\n *\n * @name geometry\n * @param {string} type Geometry Type\n * @param {Array<any>} coordinates Coordinates\n * @param {Object} [options={}] Optional Parameters\n * @returns {Geometry} a GeoJSON Geometry\n * @example\n * var type = \"Point\";\n * var coordinates = [110, 50];\n * var geometry = turf.geometry(type, coordinates);\n * // => geometry\n */\nfunction geometry(type, coordinates, _options) {\n    if (_options === void 0) { _options = {}; }\n    switch (type) {\n        case \"Point\":\n            return point(coordinates).geometry;\n        case \"LineString\":\n            return lineString(coordinates).geometry;\n        case \"Polygon\":\n            return polygon(coordinates).geometry;\n        case \"MultiPoint\":\n            return multiPoint(coordinates).geometry;\n        case \"MultiLineString\":\n            return multiLineString(coordinates).geometry;\n        case \"MultiPolygon\":\n            return multiPolygon(coordinates).geometry;\n        default:\n            throw new Error(type + \" is invalid\");\n    }\n}\nexports.geometry = geometry;\n/**\n * Creates a {@link Point} {@link Feature} from a Position.\n *\n * @name point\n * @param {Array<number>} coordinates longitude, latitude position (each in decimal degrees)\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<Point>} a Point feature\n * @example\n * var point = turf.point([-75.343, 39.984]);\n *\n * //=point\n */\nfunction point(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    if (!coordinates) {\n        throw new Error(\"coordinates is required\");\n    }\n    if (!Array.isArray(coordinates)) {\n        throw new Error(\"coordinates must be an Array\");\n    }\n    if (coordinates.length < 2) {\n        throw new Error(\"coordinates must be at least 2 numbers long\");\n    }\n    if (!isNumber(coordinates[0]) || !isNumber(coordinates[1])) {\n        throw new Error(\"coordinates must contain numbers\");\n    }\n    var geom = {\n        type: \"Point\",\n        coordinates: coordinates,\n    };\n    return feature(geom, properties, options);\n}\nexports.point = point;\n/**\n * Creates a {@link Point} {@link FeatureCollection} from an Array of Point coordinates.\n *\n * @name points\n * @param {Array<Array<number>>} coordinates an array of Points\n * @param {Object} [properties={}] Translate these properties to each Feature\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north]\n * associated with the FeatureCollection\n * @param {string|number} [options.id] Identifier associated with the FeatureCollection\n * @returns {FeatureCollection<Point>} Point Feature\n * @example\n * var points = turf.points([\n *   [-75, 39],\n *   [-80, 45],\n *   [-78, 50]\n * ]);\n *\n * //=points\n */\nfunction points(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    return featureCollection(coordinates.map(function (coords) {\n        return point(coords, properties);\n    }), options);\n}\nexports.points = points;\n/**\n * Creates a {@link Polygon} {@link Feature} from an Array of LinearRings.\n *\n * @name polygon\n * @param {Array<Array<Array<number>>>} coordinates an array of LinearRings\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<Polygon>} Polygon Feature\n * @example\n * var polygon = turf.polygon([[[-5, 52], [-4, 56], [-2, 51], [-7, 54], [-5, 52]]], { name: 'poly1' });\n *\n * //=polygon\n */\nfunction polygon(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    for (var _i = 0, coordinates_1 = coordinates; _i < coordinates_1.length; _i++) {\n        var ring = coordinates_1[_i];\n        if (ring.length < 4) {\n            throw new Error(\"Each LinearRing of a Polygon must have 4 or more Positions.\");\n        }\n        for (var j = 0; j < ring[ring.length - 1].length; j++) {\n            // Check if first point of Polygon contains two numbers\n            if (ring[ring.length - 1][j] !== ring[0][j]) {\n                throw new Error(\"First and last Position are not equivalent.\");\n            }\n        }\n    }\n    var geom = {\n        type: \"Polygon\",\n        coordinates: coordinates,\n    };\n    return feature(geom, properties, options);\n}\nexports.polygon = polygon;\n/**\n * Creates a {@link Polygon} {@link FeatureCollection} from an Array of Polygon coordinates.\n *\n * @name polygons\n * @param {Array<Array<Array<Array<number>>>>} coordinates an array of Polygon coordinates\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the FeatureCollection\n * @returns {FeatureCollection<Polygon>} Polygon FeatureCollection\n * @example\n * var polygons = turf.polygons([\n *   [[[-5, 52], [-4, 56], [-2, 51], [-7, 54], [-5, 52]]],\n *   [[[-15, 42], [-14, 46], [-12, 41], [-17, 44], [-15, 42]]],\n * ]);\n *\n * //=polygons\n */\nfunction polygons(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    return featureCollection(coordinates.map(function (coords) {\n        return polygon(coords, properties);\n    }), options);\n}\nexports.polygons = polygons;\n/**\n * Creates a {@link LineString} {@link Feature} from an Array of Positions.\n *\n * @name lineString\n * @param {Array<Array<number>>} coordinates an array of Positions\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<LineString>} LineString Feature\n * @example\n * var linestring1 = turf.lineString([[-24, 63], [-23, 60], [-25, 65], [-20, 69]], {name: 'line 1'});\n * var linestring2 = turf.lineString([[-14, 43], [-13, 40], [-15, 45], [-10, 49]], {name: 'line 2'});\n *\n * //=linestring1\n * //=linestring2\n */\nfunction lineString(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    if (coordinates.length < 2) {\n        throw new Error(\"coordinates must be an array of two or more positions\");\n    }\n    var geom = {\n        type: \"LineString\",\n        coordinates: coordinates,\n    };\n    return feature(geom, properties, options);\n}\nexports.lineString = lineString;\n/**\n * Creates a {@link LineString} {@link FeatureCollection} from an Array of LineString coordinates.\n *\n * @name lineStrings\n * @param {Array<Array<Array<number>>>} coordinates an array of LinearRings\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north]\n * associated with the FeatureCollection\n * @param {string|number} [options.id] Identifier associated with the FeatureCollection\n * @returns {FeatureCollection<LineString>} LineString FeatureCollection\n * @example\n * var linestrings = turf.lineStrings([\n *   [[-24, 63], [-23, 60], [-25, 65], [-20, 69]],\n *   [[-14, 43], [-13, 40], [-15, 45], [-10, 49]]\n * ]);\n *\n * //=linestrings\n */\nfunction lineStrings(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    return featureCollection(coordinates.map(function (coords) {\n        return lineString(coords, properties);\n    }), options);\n}\nexports.lineStrings = lineStrings;\n/**\n * Takes one or more {@link Feature|Features} and creates a {@link FeatureCollection}.\n *\n * @name featureCollection\n * @param {Feature[]} features input features\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {FeatureCollection} FeatureCollection of Features\n * @example\n * var locationA = turf.point([-75.343, 39.984], {name: 'Location A'});\n * var locationB = turf.point([-75.833, 39.284], {name: 'Location B'});\n * var locationC = turf.point([-75.534, 39.123], {name: 'Location C'});\n *\n * var collection = turf.featureCollection([\n *   locationA,\n *   locationB,\n *   locationC\n * ]);\n *\n * //=collection\n */\nfunction featureCollection(features, options) {\n    if (options === void 0) { options = {}; }\n    var fc = { type: \"FeatureCollection\" };\n    if (options.id) {\n        fc.id = options.id;\n    }\n    if (options.bbox) {\n        fc.bbox = options.bbox;\n    }\n    fc.features = features;\n    return fc;\n}\nexports.featureCollection = featureCollection;\n/**\n * Creates a {@link Feature<MultiLineString>} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name multiLineString\n * @param {Array<Array<Array<number>>>} coordinates an array of LineStrings\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<MultiLineString>} a MultiLineString feature\n * @throws {Error} if no coordinates are passed\n * @example\n * var multiLine = turf.multiLineString([[[0,0],[10,10]]]);\n *\n * //=multiLine\n */\nfunction multiLineString(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    var geom = {\n        type: \"MultiLineString\",\n        coordinates: coordinates,\n    };\n    return feature(geom, properties, options);\n}\nexports.multiLineString = multiLineString;\n/**\n * Creates a {@link Feature<MultiPoint>} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name multiPoint\n * @param {Array<Array<number>>} coordinates an array of Positions\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<MultiPoint>} a MultiPoint feature\n * @throws {Error} if no coordinates are passed\n * @example\n * var multiPt = turf.multiPoint([[0,0],[10,10]]);\n *\n * //=multiPt\n */\nfunction multiPoint(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    var geom = {\n        type: \"MultiPoint\",\n        coordinates: coordinates,\n    };\n    return feature(geom, properties, options);\n}\nexports.multiPoint = multiPoint;\n/**\n * Creates a {@link Feature<MultiPolygon>} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name multiPolygon\n * @param {Array<Array<Array<Array<number>>>>} coordinates an array of Polygons\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<MultiPolygon>} a multipolygon feature\n * @throws {Error} if no coordinates are passed\n * @example\n * var multiPoly = turf.multiPolygon([[[[0,0],[0,10],[10,10],[10,0],[0,0]]]]);\n *\n * //=multiPoly\n *\n */\nfunction multiPolygon(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    var geom = {\n        type: \"MultiPolygon\",\n        coordinates: coordinates,\n    };\n    return feature(geom, properties, options);\n}\nexports.multiPolygon = multiPolygon;\n/**\n * Creates a {@link Feature<GeometryCollection>} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name geometryCollection\n * @param {Array<Geometry>} geometries an array of GeoJSON Geometries\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<GeometryCollection>} a GeoJSON GeometryCollection Feature\n * @example\n * var pt = turf.geometry(\"Point\", [100, 0]);\n * var line = turf.geometry(\"LineString\", [[101, 0], [102, 1]]);\n * var collection = turf.geometryCollection([pt, line]);\n *\n * // => collection\n */\nfunction geometryCollection(geometries, properties, options) {\n    if (options === void 0) { options = {}; }\n    var geom = {\n        type: \"GeometryCollection\",\n        geometries: geometries,\n    };\n    return feature(geom, properties, options);\n}\nexports.geometryCollection = geometryCollection;\n/**\n * Round number to precision\n *\n * @param {number} num Number\n * @param {number} [precision=0] Precision\n * @returns {number} rounded number\n * @example\n * turf.round(120.4321)\n * //=120\n *\n * turf.round(120.4321, 2)\n * //=120.43\n */\nfunction round(num, precision) {\n    if (precision === void 0) { precision = 0; }\n    if (precision && !(precision >= 0)) {\n        throw new Error(\"precision must be a positive number\");\n    }\n    var multiplier = Math.pow(10, precision || 0);\n    return Math.round(num * multiplier) / multiplier;\n}\nexports.round = round;\n/**\n * Convert a distance measurement (assuming a spherical Earth) from radians to a more friendly unit.\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet\n *\n * @name radiansToLength\n * @param {number} radians in radians across the sphere\n * @param {string} [units=\"kilometers\"] can be degrees, radians, miles, inches, yards, metres,\n * meters, kilometres, kilometers.\n * @returns {number} distance\n */\nfunction radiansToLength(radians, units) {\n    if (units === void 0) { units = \"kilometers\"; }\n    var factor = exports.factors[units];\n    if (!factor) {\n        throw new Error(units + \" units is invalid\");\n    }\n    return radians * factor;\n}\nexports.radiansToLength = radiansToLength;\n/**\n * Convert a distance measurement (assuming a spherical Earth) from a real-world unit into radians\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet\n *\n * @name lengthToRadians\n * @param {number} distance in real units\n * @param {string} [units=\"kilometers\"] can be degrees, radians, miles, inches, yards, metres,\n * meters, kilometres, kilometers.\n * @returns {number} radians\n */\nfunction lengthToRadians(distance, units) {\n    if (units === void 0) { units = \"kilometers\"; }\n    var factor = exports.factors[units];\n    if (!factor) {\n        throw new Error(units + \" units is invalid\");\n    }\n    return distance / factor;\n}\nexports.lengthToRadians = lengthToRadians;\n/**\n * Convert a distance measurement (assuming a spherical Earth) from a real-world unit into degrees\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, centimeters, kilometres, feet\n *\n * @name lengthToDegrees\n * @param {number} distance in real units\n * @param {string} [units=\"kilometers\"] can be degrees, radians, miles, inches, yards, metres,\n * meters, kilometres, kilometers.\n * @returns {number} degrees\n */\nfunction lengthToDegrees(distance, units) {\n    return radiansToDegrees(lengthToRadians(distance, units));\n}\nexports.lengthToDegrees = lengthToDegrees;\n/**\n * Converts any bearing angle from the north line direction (positive clockwise)\n * and returns an angle between 0-360 degrees (positive clockwise), 0 being the north line\n *\n * @name bearingToAzimuth\n * @param {number} bearing angle, between -180 and +180 degrees\n * @returns {number} angle between 0 and 360 degrees\n */\nfunction bearingToAzimuth(bearing) {\n    var angle = bearing % 360;\n    if (angle < 0) {\n        angle += 360;\n    }\n    return angle;\n}\nexports.bearingToAzimuth = bearingToAzimuth;\n/**\n * Converts an angle in radians to degrees\n *\n * @name radiansToDegrees\n * @param {number} radians angle in radians\n * @returns {number} degrees between 0 and 360 degrees\n */\nfunction radiansToDegrees(radians) {\n    var degrees = radians % (2 * Math.PI);\n    return (degrees * 180) / Math.PI;\n}\nexports.radiansToDegrees = radiansToDegrees;\n/**\n * Converts an angle in degrees to radians\n *\n * @name degreesToRadians\n * @param {number} degrees angle between 0 and 360 degrees\n * @returns {number} angle in radians\n */\nfunction degreesToRadians(degrees) {\n    var radians = degrees % 360;\n    return (radians * Math.PI) / 180;\n}\nexports.degreesToRadians = degreesToRadians;\n/**\n * Converts a length to the requested unit.\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet\n *\n * @param {number} length to be converted\n * @param {Units} [originalUnit=\"kilometers\"] of the length\n * @param {Units} [finalUnit=\"kilometers\"] returned unit\n * @returns {number} the converted length\n */\nfunction convertLength(length, originalUnit, finalUnit) {\n    if (originalUnit === void 0) { originalUnit = \"kilometers\"; }\n    if (finalUnit === void 0) { finalUnit = \"kilometers\"; }\n    if (!(length >= 0)) {\n        throw new Error(\"length must be a positive number\");\n    }\n    return radiansToLength(lengthToRadians(length, originalUnit), finalUnit);\n}\nexports.convertLength = convertLength;\n/**\n * Converts a area to the requested unit.\n * Valid units: kilometers, kilometres, meters, metres, centimetres, millimeters, acres, miles, yards, feet, inches, hectares\n * @param {number} area to be converted\n * @param {Units} [originalUnit=\"meters\"] of the distance\n * @param {Units} [finalUnit=\"kilometers\"] returned unit\n * @returns {number} the converted area\n */\nfunction convertArea(area, originalUnit, finalUnit) {\n    if (originalUnit === void 0) { originalUnit = \"meters\"; }\n    if (finalUnit === void 0) { finalUnit = \"kilometers\"; }\n    if (!(area >= 0)) {\n        throw new Error(\"area must be a positive number\");\n    }\n    var startFactor = exports.areaFactors[originalUnit];\n    if (!startFactor) {\n        throw new Error(\"invalid original units\");\n    }\n    var finalFactor = exports.areaFactors[finalUnit];\n    if (!finalFactor) {\n        throw new Error(\"invalid final units\");\n    }\n    return (area / startFactor) * finalFactor;\n}\nexports.convertArea = convertArea;\n/**\n * isNumber\n *\n * @param {*} num Number to validate\n * @returns {boolean} true/false\n * @example\n * turf.isNumber(123)\n * //=true\n * turf.isNumber('foo')\n * //=false\n */\nfunction isNumber(num) {\n    return !isNaN(num) && num !== null && !Array.isArray(num);\n}\nexports.isNumber = isNumber;\n/**\n * isObject\n *\n * @param {*} input variable to validate\n * @returns {boolean} true/false\n * @example\n * turf.isObject({elevation: 10})\n * //=true\n * turf.isObject('foo')\n * //=false\n */\nfunction isObject(input) {\n    return !!input && input.constructor === Object;\n}\nexports.isObject = isObject;\n/**\n * Validate BBox\n *\n * @private\n * @param {Array<number>} bbox BBox to validate\n * @returns {void}\n * @throws Error if BBox is not valid\n * @example\n * validateBBox([-180, -40, 110, 50])\n * //=OK\n * validateBBox([-180, -40])\n * //=Error\n * validateBBox('Foo')\n * //=Error\n * validateBBox(5)\n * //=Error\n * validateBBox(null)\n * //=Error\n * validateBBox(undefined)\n * //=Error\n */\nfunction validateBBox(bbox) {\n    if (!bbox) {\n        throw new Error(\"bbox is required\");\n    }\n    if (!Array.isArray(bbox)) {\n        throw new Error(\"bbox must be an Array\");\n    }\n    if (bbox.length !== 4 && bbox.length !== 6) {\n        throw new Error(\"bbox must be an Array of 4 or 6 numbers\");\n    }\n    bbox.forEach(function (num) {\n        if (!isNumber(num)) {\n            throw new Error(\"bbox must only contain numbers\");\n        }\n    });\n}\nexports.validateBBox = validateBBox;\n/**\n * Validate Id\n *\n * @private\n * @param {string|number} id Id to validate\n * @returns {void}\n * @throws Error if Id is not valid\n * @example\n * validateId([-180, -40, 110, 50])\n * //=Error\n * validateId([-180, -40])\n * //=Error\n * validateId('Foo')\n * //=OK\n * validateId(5)\n * //=OK\n * validateId(null)\n * //=Error\n * validateId(undefined)\n * //=Error\n */\nfunction validateId(id) {\n    if (!id) {\n        throw new Error(\"id is required\");\n    }\n    if ([\"string\", \"number\"].indexOf(typeof id) === -1) {\n        throw new Error(\"id must be a number or a string\");\n    }\n}\nexports.validateId = validateId;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar helpers_1 = require(\"@turf/helpers\");\n/**\n * Unwrap a coordinate from a Point Feature, Geometry or a single coordinate.\n *\n * @name getCoord\n * @param {Array<number>|Geometry<Point>|Feature<Point>} coord GeoJSON Point or an Array of numbers\n * @returns {Array<number>} coordinates\n * @example\n * var pt = turf.point([10, 10]);\n *\n * var coord = turf.getCoord(pt);\n * //= [10, 10]\n */\nfunction getCoord(coord) {\n    if (!coord) {\n        throw new Error(\"coord is required\");\n    }\n    if (!Array.isArray(coord)) {\n        if (coord.type === \"Feature\" &&\n            coord.geometry !== null &&\n            coord.geometry.type === \"Point\") {\n            return coord.geometry.coordinates;\n        }\n        if (coord.type === \"Point\") {\n            return coord.coordinates;\n        }\n    }\n    if (Array.isArray(coord) &&\n        coord.length >= 2 &&\n        !Array.isArray(coord[0]) &&\n        !Array.isArray(coord[1])) {\n        return coord;\n    }\n    throw new Error(\"coord must be GeoJSON Point or an Array of numbers\");\n}\nexports.getCoord = getCoord;\n/**\n * Unwrap coordinates from a Feature, Geometry Object or an Array\n *\n * @name getCoords\n * @param {Array<any>|Geometry|Feature} coords Feature, Geometry Object or an Array\n * @returns {Array<any>} coordinates\n * @example\n * var poly = turf.polygon([[[119.32, -8.7], [119.55, -8.69], [119.51, -8.54], [119.32, -8.7]]]);\n *\n * var coords = turf.getCoords(poly);\n * //= [[[119.32, -8.7], [119.55, -8.69], [119.51, -8.54], [119.32, -8.7]]]\n */\nfunction getCoords(coords) {\n    if (Array.isArray(coords)) {\n        return coords;\n    }\n    // Feature\n    if (coords.type === \"Feature\") {\n        if (coords.geometry !== null) {\n            return coords.geometry.coordinates;\n        }\n    }\n    else {\n        // Geometry\n        if (coords.coordinates) {\n            return coords.coordinates;\n        }\n    }\n    throw new Error(\"coords must be GeoJSON Feature, Geometry Object or an Array\");\n}\nexports.getCoords = getCoords;\n/**\n * Checks if coordinates contains a number\n *\n * @name containsNumber\n * @param {Array<any>} coordinates GeoJSON Coordinates\n * @returns {boolean} true if Array contains a number\n */\nfunction containsNumber(coordinates) {\n    if (coordinates.length > 1 &&\n        helpers_1.isNumber(coordinates[0]) &&\n        helpers_1.isNumber(coordinates[1])) {\n        return true;\n    }\n    if (Array.isArray(coordinates[0]) && coordinates[0].length) {\n        return containsNumber(coordinates[0]);\n    }\n    throw new Error(\"coordinates must only contain numbers\");\n}\nexports.containsNumber = containsNumber;\n/**\n * Enforce expectations about types of GeoJSON objects for Turf.\n *\n * @name geojsonType\n * @param {GeoJSON} value any GeoJSON object\n * @param {string} type expected GeoJSON type\n * @param {string} name name of calling function\n * @throws {Error} if value is not the expected type.\n */\nfunction geojsonType(value, type, name) {\n    if (!type || !name) {\n        throw new Error(\"type and name required\");\n    }\n    if (!value || value.type !== type) {\n        throw new Error(\"Invalid input to \" +\n            name +\n            \": must be a \" +\n            type +\n            \", given \" +\n            value.type);\n    }\n}\nexports.geojsonType = geojsonType;\n/**\n * Enforce expectations about types of {@link Feature} inputs for Turf.\n * Internally this uses {@link geojsonType} to judge geometry types.\n *\n * @name featureOf\n * @param {Feature} feature a feature with an expected geometry type\n * @param {string} type expected GeoJSON type\n * @param {string} name name of calling function\n * @throws {Error} error if value is not the expected type.\n */\nfunction featureOf(feature, type, name) {\n    if (!feature) {\n        throw new Error(\"No feature passed\");\n    }\n    if (!name) {\n        throw new Error(\".featureOf() requires a name\");\n    }\n    if (!feature || feature.type !== \"Feature\" || !feature.geometry) {\n        throw new Error(\"Invalid input to \" + name + \", Feature with geometry required\");\n    }\n    if (!feature.geometry || feature.geometry.type !== type) {\n        throw new Error(\"Invalid input to \" +\n            name +\n            \": must be a \" +\n            type +\n            \", given \" +\n            feature.geometry.type);\n    }\n}\nexports.featureOf = featureOf;\n/**\n * Enforce expectations about types of {@link FeatureCollection} inputs for Turf.\n * Internally this uses {@link geojsonType} to judge geometry types.\n *\n * @name collectionOf\n * @param {FeatureCollection} featureCollection a FeatureCollection for which features will be judged\n * @param {string} type expected GeoJSON type\n * @param {string} name name of calling function\n * @throws {Error} if value is not the expected type.\n */\nfunction collectionOf(featureCollection, type, name) {\n    if (!featureCollection) {\n        throw new Error(\"No featureCollection passed\");\n    }\n    if (!name) {\n        throw new Error(\".collectionOf() requires a name\");\n    }\n    if (!featureCollection || featureCollection.type !== \"FeatureCollection\") {\n        throw new Error(\"Invalid input to \" + name + \", FeatureCollection required\");\n    }\n    for (var _i = 0, _a = featureCollection.features; _i < _a.length; _i++) {\n        var feature = _a[_i];\n        if (!feature || feature.type !== \"Feature\" || !feature.geometry) {\n            throw new Error(\"Invalid input to \" + name + \", Feature with geometry required\");\n        }\n        if (!feature.geometry || feature.geometry.type !== type) {\n            throw new Error(\"Invalid input to \" +\n                name +\n                \": must be a \" +\n                type +\n                \", given \" +\n                feature.geometry.type);\n        }\n    }\n}\nexports.collectionOf = collectionOf;\n/**\n * Get Geometry from Feature or Geometry Object\n *\n * @param {Feature|Geometry} geojson GeoJSON Feature or Geometry Object\n * @returns {Geometry|null} GeoJSON Geometry Object\n * @throws {Error} if geojson is not a Feature or Geometry Object\n * @example\n * var point = {\n *   \"type\": \"Feature\",\n *   \"properties\": {},\n *   \"geometry\": {\n *     \"type\": \"Point\",\n *     \"coordinates\": [110, 40]\n *   }\n * }\n * var geom = turf.getGeom(point)\n * //={\"type\": \"Point\", \"coordinates\": [110, 40]}\n */\nfunction getGeom(geojson) {\n    if (geojson.type === \"Feature\") {\n        return geojson.geometry;\n    }\n    return geojson;\n}\nexports.getGeom = getGeom;\n/**\n * Get GeoJSON object's type, Geometry type is prioritize.\n *\n * @param {GeoJSON} geojson GeoJSON object\n * @param {string} [name=\"geojson\"] name of the variable to display in error message (unused)\n * @returns {string} GeoJSON type\n * @example\n * var point = {\n *   \"type\": \"Feature\",\n *   \"properties\": {},\n *   \"geometry\": {\n *     \"type\": \"Point\",\n *     \"coordinates\": [110, 40]\n *   }\n * }\n * var geom = turf.getType(point)\n * //=\"Point\"\n */\nfunction getType(geojson, _name) {\n    if (geojson.type === \"FeatureCollection\") {\n        return \"FeatureCollection\";\n    }\n    if (geojson.type === \"GeometryCollection\") {\n        return \"GeometryCollection\";\n    }\n    if (geojson.type === \"Feature\" && geojson.geometry !== null) {\n        return geojson.geometry.type;\n    }\n    return geojson.type;\n}\nexports.getType = getType;\n","/**\n * Earth Radius used with the Harvesine formula and approximates using a spherical (non-ellipsoid) Earth.\n */\nvar earthRadius = 6371008.8;\n\n/**\n * Unit of measurement factors using a spherical (non-ellipsoid) earth radius.\n */\nvar factors = {\n    meters: earthRadius,\n    metres: earthRadius,\n    millimeters: earthRadius * 1000,\n    millimetres: earthRadius * 1000,\n    centimeters: earthRadius * 100,\n    centimetres: earthRadius * 100,\n    kilometers: earthRadius / 1000,\n    kilometres: earthRadius / 1000,\n    miles: earthRadius / 1609.344,\n    nauticalmiles: earthRadius / 1852,\n    inches: earthRadius * 39.370,\n    yards: earthRadius / 1.0936,\n    feet: earthRadius * 3.28084,\n    radians: 1,\n    degrees: earthRadius / 111325,\n};\n\n/**\n * Units of measurement factors based on 1 meter.\n */\nvar unitsFactors = {\n    meters: 1,\n    metres: 1,\n    millimeters: 1000,\n    millimetres: 1000,\n    centimeters: 100,\n    centimetres: 100,\n    kilometers: 1 / 1000,\n    kilometres: 1 / 1000,\n    miles: 1 / 1609.344,\n    nauticalmiles: 1 / 1852,\n    inches: 39.370,\n    yards: 1 / 1.0936,\n    feet: 3.28084,\n    radians: 1 / earthRadius,\n    degrees: 1 / 111325,\n};\n\n/**\n * Area of measurement factors based on 1 square meter.\n */\nvar areaFactors = {\n    meters: 1,\n    metres: 1,\n    millimeters: 1000000,\n    millimetres: 1000000,\n    centimeters: 10000,\n    centimetres: 10000,\n    kilometers: 0.000001,\n    kilometres: 0.000001,\n    acres: 0.000247105,\n    miles: 3.86e-7,\n    yards: 1.195990046,\n    feet: 10.763910417,\n    inches: 1550.003100006\n};\n\n/**\n * Wraps a GeoJSON {@link Geometry} in a GeoJSON {@link Feature}.\n *\n * @name feature\n * @param {Geometry} geometry input geometry\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} a GeoJSON Feature\n * @example\n * var geometry = {\n *   \"type\": \"Point\",\n *   \"coordinates\": [110, 50]\n * };\n *\n * var feature = turf.feature(geometry);\n *\n * //=feature\n */\nfunction feature(geometry, properties, options) {\n    // Optional Parameters\n    options = options || {};\n    if (!isObject(options)) throw new Error('options is invalid');\n    var bbox = options.bbox;\n    var id = options.id;\n\n    // Validation\n    if (geometry === undefined) throw new Error('geometry is required');\n    if (properties && properties.constructor !== Object) throw new Error('properties must be an Object');\n    if (bbox) validateBBox(bbox);\n    if (id) validateId(id);\n\n    // Main\n    var feat = {type: 'Feature'};\n    if (id) feat.id = id;\n    if (bbox) feat.bbox = bbox;\n    feat.properties = properties || {};\n    feat.geometry = geometry;\n    return feat;\n}\n\n/**\n * Creates a GeoJSON {@link Geometry} from a Geometry string type & coordinates.\n * For GeometryCollection type use `helpers.geometryCollection`\n *\n * @name geometry\n * @param {string} type Geometry Type\n * @param {Array<number>} coordinates Coordinates\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Geometry\n * @returns {Geometry} a GeoJSON Geometry\n * @example\n * var type = 'Point';\n * var coordinates = [110, 50];\n *\n * var geometry = turf.geometry(type, coordinates);\n *\n * //=geometry\n */\nfunction geometry(type, coordinates, options) {\n    // Optional Parameters\n    options = options || {};\n    if (!isObject(options)) throw new Error('options is invalid');\n    var bbox = options.bbox;\n\n    // Validation\n    if (!type) throw new Error('type is required');\n    if (!coordinates) throw new Error('coordinates is required');\n    if (!Array.isArray(coordinates)) throw new Error('coordinates must be an Array');\n    if (bbox) validateBBox(bbox);\n\n    // Main\n    var geom;\n    switch (type) {\n    case 'Point': geom = point(coordinates).geometry; break;\n    case 'LineString': geom = lineString(coordinates).geometry; break;\n    case 'Polygon': geom = polygon(coordinates).geometry; break;\n    case 'MultiPoint': geom = multiPoint(coordinates).geometry; break;\n    case 'MultiLineString': geom = multiLineString(coordinates).geometry; break;\n    case 'MultiPolygon': geom = multiPolygon(coordinates).geometry; break;\n    default: throw new Error(type + ' is invalid');\n    }\n    if (bbox) geom.bbox = bbox;\n    return geom;\n}\n\n/**\n * Creates a {@link Point} {@link Feature} from a Position.\n *\n * @name point\n * @param {Array<number>} coordinates longitude, latitude position (each in decimal degrees)\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<Point>} a Point feature\n * @example\n * var point = turf.point([-75.343, 39.984]);\n *\n * //=point\n */\nfunction point(coordinates, properties, options) {\n    if (!coordinates) throw new Error('coordinates is required');\n    if (!Array.isArray(coordinates)) throw new Error('coordinates must be an Array');\n    if (coordinates.length < 2) throw new Error('coordinates must be at least 2 numbers long');\n    if (!isNumber(coordinates[0]) || !isNumber(coordinates[1])) throw new Error('coordinates must contain numbers');\n\n    return feature({\n        type: 'Point',\n        coordinates: coordinates\n    }, properties, options);\n}\n\n/**\n * Creates a {@link Point} {@link FeatureCollection} from an Array of Point coordinates.\n *\n * @name points\n * @param {Array<Array<number>>} coordinates an array of Points\n * @param {Object} [properties={}] Translate these properties to each Feature\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the FeatureCollection\n * @param {string|number} [options.id] Identifier associated with the FeatureCollection\n * @returns {FeatureCollection<Point>} Point Feature\n * @example\n * var points = turf.points([\n *   [-75, 39],\n *   [-80, 45],\n *   [-78, 50]\n * ]);\n *\n * //=points\n */\nfunction points(coordinates, properties, options) {\n    if (!coordinates) throw new Error('coordinates is required');\n    if (!Array.isArray(coordinates)) throw new Error('coordinates must be an Array');\n\n    return featureCollection(coordinates.map(function (coords) {\n        return point(coords, properties);\n    }), options);\n}\n\n/**\n * Creates a {@link Polygon} {@link Feature} from an Array of LinearRings.\n *\n * @name polygon\n * @param {Array<Array<Array<number>>>} coordinates an array of LinearRings\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<Polygon>} Polygon Feature\n * @example\n * var polygon = turf.polygon([[[-5, 52], [-4, 56], [-2, 51], [-7, 54], [-5, 52]]], { name: 'poly1' });\n *\n * //=polygon\n */\nfunction polygon(coordinates, properties, options) {\n    if (!coordinates) throw new Error('coordinates is required');\n\n    for (var i = 0; i < coordinates.length; i++) {\n        var ring = coordinates[i];\n        if (ring.length < 4) {\n            throw new Error('Each LinearRing of a Polygon must have 4 or more Positions.');\n        }\n        for (var j = 0; j < ring[ring.length - 1].length; j++) {\n            // Check if first point of Polygon contains two numbers\n            if (i === 0 && j === 0 && !isNumber(ring[0][0]) || !isNumber(ring[0][1])) throw new Error('coordinates must contain numbers');\n            if (ring[ring.length - 1][j] !== ring[0][j]) {\n                throw new Error('First and last Position are not equivalent.');\n            }\n        }\n    }\n\n    return feature({\n        type: 'Polygon',\n        coordinates: coordinates\n    }, properties, options);\n}\n\n/**\n * Creates a {@link Polygon} {@link FeatureCollection} from an Array of Polygon coordinates.\n *\n * @name polygons\n * @param {Array<Array<Array<Array<number>>>>} coordinates an array of Polygon coordinates\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the FeatureCollection\n * @returns {FeatureCollection<Polygon>} Polygon FeatureCollection\n * @example\n * var polygons = turf.polygons([\n *   [[[-5, 52], [-4, 56], [-2, 51], [-7, 54], [-5, 52]]],\n *   [[[-15, 42], [-14, 46], [-12, 41], [-17, 44], [-15, 42]]],\n * ]);\n *\n * //=polygons\n */\nfunction polygons(coordinates, properties, options) {\n    if (!coordinates) throw new Error('coordinates is required');\n    if (!Array.isArray(coordinates)) throw new Error('coordinates must be an Array');\n\n    return featureCollection(coordinates.map(function (coords) {\n        return polygon(coords, properties);\n    }), options);\n}\n\n/**\n * Creates a {@link LineString} {@link Feature} from an Array of Positions.\n *\n * @name lineString\n * @param {Array<Array<number>>} coordinates an array of Positions\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<LineString>} LineString Feature\n * @example\n * var linestring1 = turf.lineString([[-24, 63], [-23, 60], [-25, 65], [-20, 69]], {name: 'line 1'});\n * var linestring2 = turf.lineString([[-14, 43], [-13, 40], [-15, 45], [-10, 49]], {name: 'line 2'});\n *\n * //=linestring1\n * //=linestring2\n */\nfunction lineString(coordinates, properties, options) {\n    if (!coordinates) throw new Error('coordinates is required');\n    if (coordinates.length < 2) throw new Error('coordinates must be an array of two or more positions');\n    // Check if first point of LineString contains two numbers\n    if (!isNumber(coordinates[0][1]) || !isNumber(coordinates[0][1])) throw new Error('coordinates must contain numbers');\n\n    return feature({\n        type: 'LineString',\n        coordinates: coordinates\n    }, properties, options);\n}\n\n/**\n * Creates a {@link LineString} {@link FeatureCollection} from an Array of LineString coordinates.\n *\n * @name lineStrings\n * @param {Array<Array<number>>} coordinates an array of LinearRings\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the FeatureCollection\n * @param {string|number} [options.id] Identifier associated with the FeatureCollection\n * @returns {FeatureCollection<LineString>} LineString FeatureCollection\n * @example\n * var linestrings = turf.lineStrings([\n *   [[-24, 63], [-23, 60], [-25, 65], [-20, 69]],\n *   [[-14, 43], [-13, 40], [-15, 45], [-10, 49]]\n * ]);\n *\n * //=linestrings\n */\nfunction lineStrings(coordinates, properties, options) {\n    if (!coordinates) throw new Error('coordinates is required');\n    if (!Array.isArray(coordinates)) throw new Error('coordinates must be an Array');\n\n    return featureCollection(coordinates.map(function (coords) {\n        return lineString(coords, properties);\n    }), options);\n}\n\n/**\n * Takes one or more {@link Feature|Features} and creates a {@link FeatureCollection}.\n *\n * @name featureCollection\n * @param {Feature[]} features input features\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {FeatureCollection} FeatureCollection of Features\n * @example\n * var locationA = turf.point([-75.343, 39.984], {name: 'Location A'});\n * var locationB = turf.point([-75.833, 39.284], {name: 'Location B'});\n * var locationC = turf.point([-75.534, 39.123], {name: 'Location C'});\n *\n * var collection = turf.featureCollection([\n *   locationA,\n *   locationB,\n *   locationC\n * ]);\n *\n * //=collection\n */\nfunction featureCollection(features, options) {\n    // Optional Parameters\n    options = options || {};\n    if (!isObject(options)) throw new Error('options is invalid');\n    var bbox = options.bbox;\n    var id = options.id;\n\n    // Validation\n    if (!features) throw new Error('No features passed');\n    if (!Array.isArray(features)) throw new Error('features must be an Array');\n    if (bbox) validateBBox(bbox);\n    if (id) validateId(id);\n\n    // Main\n    var fc = {type: 'FeatureCollection'};\n    if (id) fc.id = id;\n    if (bbox) fc.bbox = bbox;\n    fc.features = features;\n    return fc;\n}\n\n/**\n * Creates a {@link Feature<MultiLineString>} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name multiLineString\n * @param {Array<Array<Array<number>>>} coordinates an array of LineStrings\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<MultiLineString>} a MultiLineString feature\n * @throws {Error} if no coordinates are passed\n * @example\n * var multiLine = turf.multiLineString([[[0,0],[10,10]]]);\n *\n * //=multiLine\n */\nfunction multiLineString(coordinates, properties, options) {\n    if (!coordinates) throw new Error('coordinates is required');\n\n    return feature({\n        type: 'MultiLineString',\n        coordinates: coordinates\n    }, properties, options);\n}\n\n/**\n * Creates a {@link Feature<MultiPoint>} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name multiPoint\n * @param {Array<Array<number>>} coordinates an array of Positions\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<MultiPoint>} a MultiPoint feature\n * @throws {Error} if no coordinates are passed\n * @example\n * var multiPt = turf.multiPoint([[0,0],[10,10]]);\n *\n * //=multiPt\n */\nfunction multiPoint(coordinates, properties, options) {\n    if (!coordinates) throw new Error('coordinates is required');\n\n    return feature({\n        type: 'MultiPoint',\n        coordinates: coordinates\n    }, properties, options);\n}\n\n/**\n * Creates a {@link Feature<MultiPolygon>} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name multiPolygon\n * @param {Array<Array<Array<Array<number>>>>} coordinates an array of Polygons\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<MultiPolygon>} a multipolygon feature\n * @throws {Error} if no coordinates are passed\n * @example\n * var multiPoly = turf.multiPolygon([[[[0,0],[0,10],[10,10],[10,0],[0,0]]]]);\n *\n * //=multiPoly\n *\n */\nfunction multiPolygon(coordinates, properties, options) {\n    if (!coordinates) throw new Error('coordinates is required');\n\n    return feature({\n        type: 'MultiPolygon',\n        coordinates: coordinates\n    }, properties, options);\n}\n\n/**\n * Creates a {@link Feature<GeometryCollection>} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name geometryCollection\n * @param {Array<Geometry>} geometries an array of GeoJSON Geometries\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<GeometryCollection>} a GeoJSON GeometryCollection Feature\n * @example\n * var pt = {\n *     \"type\": \"Point\",\n *       \"coordinates\": [100, 0]\n *     };\n * var line = {\n *     \"type\": \"LineString\",\n *     \"coordinates\": [ [101, 0], [102, 1] ]\n *   };\n * var collection = turf.geometryCollection([pt, line]);\n *\n * //=collection\n */\nfunction geometryCollection(geometries, properties, options) {\n    if (!geometries) throw new Error('geometries is required');\n    if (!Array.isArray(geometries)) throw new Error('geometries must be an Array');\n\n    return feature({\n        type: 'GeometryCollection',\n        geometries: geometries\n    }, properties, options);\n}\n\n/**\n * Round number to precision\n *\n * @param {number} num Number\n * @param {number} [precision=0] Precision\n * @returns {number} rounded number\n * @example\n * turf.round(120.4321)\n * //=120\n *\n * turf.round(120.4321, 2)\n * //=120.43\n */\nfunction round(num, precision) {\n    if (num === undefined || num === null || isNaN(num)) throw new Error('num is required');\n    if (precision && !(precision >= 0)) throw new Error('precision must be a positive number');\n    var multiplier = Math.pow(10, precision || 0);\n    return Math.round(num * multiplier) / multiplier;\n}\n\n/**\n * Convert a distance measurement (assuming a spherical Earth) from radians to a more friendly unit.\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet\n *\n * @name radiansToLength\n * @param {number} radians in radians across the sphere\n * @param {string} [units='kilometers'] can be degrees, radians, miles, or kilometers inches, yards, metres, meters, kilometres, kilometers.\n * @returns {number} distance\n */\nfunction radiansToLength(radians, units) {\n    if (radians === undefined || radians === null) throw new Error('radians is required');\n\n    if (units && typeof units !== 'string') throw new Error('units must be a string');\n    var factor = factors[units || 'kilometers'];\n    if (!factor) throw new Error(units + ' units is invalid');\n    return radians * factor;\n}\n\n/**\n * Convert a distance measurement (assuming a spherical Earth) from a real-world unit into radians\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet\n *\n * @name lengthToRadians\n * @param {number} distance in real units\n * @param {string} [units='kilometers'] can be degrees, radians, miles, or kilometers inches, yards, metres, meters, kilometres, kilometers.\n * @returns {number} radians\n */\nfunction lengthToRadians(distance, units) {\n    if (distance === undefined || distance === null) throw new Error('distance is required');\n\n    if (units && typeof units !== 'string') throw new Error('units must be a string');\n    var factor = factors[units || 'kilometers'];\n    if (!factor) throw new Error(units + ' units is invalid');\n    return distance / factor;\n}\n\n/**\n * Convert a distance measurement (assuming a spherical Earth) from a real-world unit into degrees\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, centimeters, kilometres, feet\n *\n * @name lengthToDegrees\n * @param {number} distance in real units\n * @param {string} [units='kilometers'] can be degrees, radians, miles, or kilometers inches, yards, metres, meters, kilometres, kilometers.\n * @returns {number} degrees\n */\nfunction lengthToDegrees(distance, units) {\n    return radiansToDegrees(lengthToRadians(distance, units));\n}\n\n/**\n * Converts any bearing angle from the north line direction (positive clockwise)\n * and returns an angle between 0-360 degrees (positive clockwise), 0 being the north line\n *\n * @name bearingToAzimuth\n * @param {number} bearing angle, between -180 and +180 degrees\n * @returns {number} angle between 0 and 360 degrees\n */\nfunction bearingToAzimuth(bearing) {\n    if (bearing === null || bearing === undefined) throw new Error('bearing is required');\n\n    var angle = bearing % 360;\n    if (angle < 0) angle += 360;\n    return angle;\n}\n\n/**\n * Converts an angle in radians to degrees\n *\n * @name radiansToDegrees\n * @param {number} radians angle in radians\n * @returns {number} degrees between 0 and 360 degrees\n */\nfunction radiansToDegrees(radians) {\n    if (radians === null || radians === undefined) throw new Error('radians is required');\n\n    var degrees = radians % (2 * Math.PI);\n    return degrees * 180 / Math.PI;\n}\n\n/**\n * Converts an angle in degrees to radians\n *\n * @name degreesToRadians\n * @param {number} degrees angle between 0 and 360 degrees\n * @returns {number} angle in radians\n */\nfunction degreesToRadians(degrees) {\n    if (degrees === null || degrees === undefined) throw new Error('degrees is required');\n\n    var radians = degrees % 360;\n    return radians * Math.PI / 180;\n}\n\n/**\n * Converts a length to the requested unit.\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet\n *\n * @param {number} length to be converted\n * @param {string} originalUnit of the length\n * @param {string} [finalUnit='kilometers'] returned unit\n * @returns {number} the converted length\n */\nfunction convertLength(length, originalUnit, finalUnit) {\n    if (length === null || length === undefined) throw new Error('length is required');\n    if (!(length >= 0)) throw new Error('length must be a positive number');\n\n    return radiansToLength(lengthToRadians(length, originalUnit), finalUnit || 'kilometers');\n}\n\n/**\n * Converts a area to the requested unit.\n * Valid units: kilometers, kilometres, meters, metres, centimetres, millimeters, acres, miles, yards, feet, inches\n * @param {number} area to be converted\n * @param {string} [originalUnit='meters'] of the distance\n * @param {string} [finalUnit='kilometers'] returned unit\n * @returns {number} the converted distance\n */\nfunction convertArea(area, originalUnit, finalUnit) {\n    if (area === null || area === undefined) throw new Error('area is required');\n    if (!(area >= 0)) throw new Error('area must be a positive number');\n\n    var startFactor = areaFactors[originalUnit || 'meters'];\n    if (!startFactor) throw new Error('invalid original units');\n\n    var finalFactor = areaFactors[finalUnit || 'kilometers'];\n    if (!finalFactor) throw new Error('invalid final units');\n\n    return (area / startFactor) * finalFactor;\n}\n\n/**\n * isNumber\n *\n * @param {*} num Number to validate\n * @returns {boolean} true/false\n * @example\n * turf.isNumber(123)\n * //=true\n * turf.isNumber('foo')\n * //=false\n */\nfunction isNumber(num) {\n    return !isNaN(num) && num !== null && !Array.isArray(num);\n}\n\n/**\n * isObject\n *\n * @param {*} input variable to validate\n * @returns {boolean} true/false\n * @example\n * turf.isObject({elevation: 10})\n * //=true\n * turf.isObject('foo')\n * //=false\n */\nfunction isObject(input) {\n    return (!!input) && (input.constructor === Object);\n}\n\n/**\n * Validate BBox\n *\n * @private\n * @param {Array<number>} bbox BBox to validate\n * @returns {void}\n * @throws Error if BBox is not valid\n * @example\n * validateBBox([-180, -40, 110, 50])\n * //=OK\n * validateBBox([-180, -40])\n * //=Error\n * validateBBox('Foo')\n * //=Error\n * validateBBox(5)\n * //=Error\n * validateBBox(null)\n * //=Error\n * validateBBox(undefined)\n * //=Error\n */\nfunction validateBBox(bbox) {\n    if (!bbox) throw new Error('bbox is required');\n    if (!Array.isArray(bbox)) throw new Error('bbox must be an Array');\n    if (bbox.length !== 4 && bbox.length !== 6) throw new Error('bbox must be an Array of 4 or 6 numbers');\n    bbox.forEach(function (num) {\n        if (!isNumber(num)) throw new Error('bbox must only contain numbers');\n    });\n}\n\n/**\n * Validate Id\n *\n * @private\n * @param {string|number} id Id to validate\n * @returns {void}\n * @throws Error if Id is not valid\n * @example\n * validateId([-180, -40, 110, 50])\n * //=Error\n * validateId([-180, -40])\n * //=Error\n * validateId('Foo')\n * //=OK\n * validateId(5)\n * //=OK\n * validateId(null)\n * //=Error\n * validateId(undefined)\n * //=Error\n */\nfunction validateId(id) {\n    if (!id) throw new Error('id is required');\n    if (['string', 'number'].indexOf(typeof id) === -1) throw new Error('id must be a number or a string');\n}\n\n// Deprecated methods\nfunction radians2degrees() {\n    throw new Error('method has been renamed to `radiansToDegrees`');\n}\n\nfunction degrees2radians() {\n    throw new Error('method has been renamed to `degreesToRadians`');\n}\n\nfunction distanceToDegrees() {\n    throw new Error('method has been renamed to `lengthToDegrees`');\n}\n\nfunction distanceToRadians() {\n    throw new Error('method has been renamed to `lengthToRadians`');\n}\n\nfunction radiansToDistance() {\n    throw new Error('method has been renamed to `radiansToLength`');\n}\n\nfunction bearingToAngle() {\n    throw new Error('method has been renamed to `bearingToAzimuth`');\n}\n\nfunction convertDistance() {\n    throw new Error('method has been renamed to `convertLength`');\n}\n\nexport { earthRadius, factors, unitsFactors, areaFactors, feature, geometry, point, points, polygon, polygons, lineString, lineStrings, featureCollection, multiLineString, multiPoint, multiPolygon, geometryCollection, round, radiansToLength, lengthToRadians, lengthToDegrees, bearingToAzimuth, radiansToDegrees, degreesToRadians, convertLength, convertArea, isNumber, isObject, validateBBox, validateId, radians2degrees, degrees2radians, distanceToDegrees, distanceToRadians, radiansToDistance, bearingToAngle, convertDistance };\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n    return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar helpers_1 = require(\"@turf/helpers\");\nvar invariant_1 = require(\"@turf/invariant\");\nvar polygon_clipping_1 = __importDefault(require(\"polygon-clipping\"));\n/**\n * Takes two {@link Polygon|polygon} or {@link MultiPolygon|multi-polygon} geometries and\n * finds their polygonal intersection. If they don't intersect, returns null.\n *\n * @name intersect\n * @param {Feature<Polygon | MultiPolygon>} poly1 the first polygon or multipolygon\n * @param {Feature<Polygon | MultiPolygon>} poly2 the second polygon or multipolygon\n * @param {Object} [options={}] Optional Parameters\n * @param {Object} [options.properties={}] Translate GeoJSON Properties to Feature\n * @returns {Feature|null} returns a feature representing the area they share (either a {@link Polygon} or\n * {@link MultiPolygon}). If they do not share any area, returns `null`.\n * @example\n * var poly1 = turf.polygon([[\n *   [-122.801742, 45.48565],\n *   [-122.801742, 45.60491],\n *   [-122.584762, 45.60491],\n *   [-122.584762, 45.48565],\n *   [-122.801742, 45.48565]\n * ]]);\n *\n * var poly2 = turf.polygon([[\n *   [-122.520217, 45.535693],\n *   [-122.64038, 45.553967],\n *   [-122.720031, 45.526554],\n *   [-122.669906, 45.507309],\n *   [-122.723464, 45.446643],\n *   [-122.532577, 45.408574],\n *   [-122.487258, 45.477466],\n *   [-122.520217, 45.535693]\n * ]]);\n *\n * var intersection = turf.intersect(poly1, poly2);\n *\n * //addToMap\n * var addToMap = [poly1, poly2, intersection];\n */\nfunction intersect(poly1, poly2, options) {\n    if (options === void 0) { options = {}; }\n    var geom1 = invariant_1.getGeom(poly1);\n    var geom2 = invariant_1.getGeom(poly2);\n    var intersection = polygon_clipping_1.default.intersection(geom1.coordinates, geom2.coordinates);\n    if (intersection.length === 0)\n        return null;\n    if (intersection.length === 1)\n        return helpers_1.polygon(intersection[0], options.properties);\n    return helpers_1.multiPolygon(intersection, options.properties);\n}\nexports.default = intersect;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * @module helpers\n */\n/**\n * Earth Radius used with the Harvesine formula and approximates using a spherical (non-ellipsoid) Earth.\n *\n * @memberof helpers\n * @type {number}\n */\nexports.earthRadius = 6371008.8;\n/**\n * Unit of measurement factors using a spherical (non-ellipsoid) earth radius.\n *\n * @memberof helpers\n * @type {Object}\n */\nexports.factors = {\n    centimeters: exports.earthRadius * 100,\n    centimetres: exports.earthRadius * 100,\n    degrees: exports.earthRadius / 111325,\n    feet: exports.earthRadius * 3.28084,\n    inches: exports.earthRadius * 39.37,\n    kilometers: exports.earthRadius / 1000,\n    kilometres: exports.earthRadius / 1000,\n    meters: exports.earthRadius,\n    metres: exports.earthRadius,\n    miles: exports.earthRadius / 1609.344,\n    millimeters: exports.earthRadius * 1000,\n    millimetres: exports.earthRadius * 1000,\n    nauticalmiles: exports.earthRadius / 1852,\n    radians: 1,\n    yards: exports.earthRadius * 1.0936,\n};\n/**\n * Units of measurement factors based on 1 meter.\n *\n * @memberof helpers\n * @type {Object}\n */\nexports.unitsFactors = {\n    centimeters: 100,\n    centimetres: 100,\n    degrees: 1 / 111325,\n    feet: 3.28084,\n    inches: 39.37,\n    kilometers: 1 / 1000,\n    kilometres: 1 / 1000,\n    meters: 1,\n    metres: 1,\n    miles: 1 / 1609.344,\n    millimeters: 1000,\n    millimetres: 1000,\n    nauticalmiles: 1 / 1852,\n    radians: 1 / exports.earthRadius,\n    yards: 1.0936133,\n};\n/**\n * Area of measurement factors based on 1 square meter.\n *\n * @memberof helpers\n * @type {Object}\n */\nexports.areaFactors = {\n    acres: 0.000247105,\n    centimeters: 10000,\n    centimetres: 10000,\n    feet: 10.763910417,\n    hectares: 0.0001,\n    inches: 1550.003100006,\n    kilometers: 0.000001,\n    kilometres: 0.000001,\n    meters: 1,\n    metres: 1,\n    miles: 3.86e-7,\n    millimeters: 1000000,\n    millimetres: 1000000,\n    yards: 1.195990046,\n};\n/**\n * Wraps a GeoJSON {@link Geometry} in a GeoJSON {@link Feature}.\n *\n * @name feature\n * @param {Geometry} geometry input geometry\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} a GeoJSON Feature\n * @example\n * var geometry = {\n *   \"type\": \"Point\",\n *   \"coordinates\": [110, 50]\n * };\n *\n * var feature = turf.feature(geometry);\n *\n * //=feature\n */\nfunction feature(geom, properties, options) {\n    if (options === void 0) { options = {}; }\n    var feat = { type: \"Feature\" };\n    if (options.id === 0 || options.id) {\n        feat.id = options.id;\n    }\n    if (options.bbox) {\n        feat.bbox = options.bbox;\n    }\n    feat.properties = properties || {};\n    feat.geometry = geom;\n    return feat;\n}\nexports.feature = feature;\n/**\n * Creates a GeoJSON {@link Geometry} from a Geometry string type & coordinates.\n * For GeometryCollection type use `helpers.geometryCollection`\n *\n * @name geometry\n * @param {string} type Geometry Type\n * @param {Array<any>} coordinates Coordinates\n * @param {Object} [options={}] Optional Parameters\n * @returns {Geometry} a GeoJSON Geometry\n * @example\n * var type = \"Point\";\n * var coordinates = [110, 50];\n * var geometry = turf.geometry(type, coordinates);\n * // => geometry\n */\nfunction geometry(type, coordinates, _options) {\n    if (_options === void 0) { _options = {}; }\n    switch (type) {\n        case \"Point\":\n            return point(coordinates).geometry;\n        case \"LineString\":\n            return lineString(coordinates).geometry;\n        case \"Polygon\":\n            return polygon(coordinates).geometry;\n        case \"MultiPoint\":\n            return multiPoint(coordinates).geometry;\n        case \"MultiLineString\":\n            return multiLineString(coordinates).geometry;\n        case \"MultiPolygon\":\n            return multiPolygon(coordinates).geometry;\n        default:\n            throw new Error(type + \" is invalid\");\n    }\n}\nexports.geometry = geometry;\n/**\n * Creates a {@link Point} {@link Feature} from a Position.\n *\n * @name point\n * @param {Array<number>} coordinates longitude, latitude position (each in decimal degrees)\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<Point>} a Point feature\n * @example\n * var point = turf.point([-75.343, 39.984]);\n *\n * //=point\n */\nfunction point(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    if (!coordinates) {\n        throw new Error(\"coordinates is required\");\n    }\n    if (!Array.isArray(coordinates)) {\n        throw new Error(\"coordinates must be an Array\");\n    }\n    if (coordinates.length < 2) {\n        throw new Error(\"coordinates must be at least 2 numbers long\");\n    }\n    if (!isNumber(coordinates[0]) || !isNumber(coordinates[1])) {\n        throw new Error(\"coordinates must contain numbers\");\n    }\n    var geom = {\n        type: \"Point\",\n        coordinates: coordinates,\n    };\n    return feature(geom, properties, options);\n}\nexports.point = point;\n/**\n * Creates a {@link Point} {@link FeatureCollection} from an Array of Point coordinates.\n *\n * @name points\n * @param {Array<Array<number>>} coordinates an array of Points\n * @param {Object} [properties={}] Translate these properties to each Feature\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north]\n * associated with the FeatureCollection\n * @param {string|number} [options.id] Identifier associated with the FeatureCollection\n * @returns {FeatureCollection<Point>} Point Feature\n * @example\n * var points = turf.points([\n *   [-75, 39],\n *   [-80, 45],\n *   [-78, 50]\n * ]);\n *\n * //=points\n */\nfunction points(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    return featureCollection(coordinates.map(function (coords) {\n        return point(coords, properties);\n    }), options);\n}\nexports.points = points;\n/**\n * Creates a {@link Polygon} {@link Feature} from an Array of LinearRings.\n *\n * @name polygon\n * @param {Array<Array<Array<number>>>} coordinates an array of LinearRings\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<Polygon>} Polygon Feature\n * @example\n * var polygon = turf.polygon([[[-5, 52], [-4, 56], [-2, 51], [-7, 54], [-5, 52]]], { name: 'poly1' });\n *\n * //=polygon\n */\nfunction polygon(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    for (var _i = 0, coordinates_1 = coordinates; _i < coordinates_1.length; _i++) {\n        var ring = coordinates_1[_i];\n        if (ring.length < 4) {\n            throw new Error(\"Each LinearRing of a Polygon must have 4 or more Positions.\");\n        }\n        for (var j = 0; j < ring[ring.length - 1].length; j++) {\n            // Check if first point of Polygon contains two numbers\n            if (ring[ring.length - 1][j] !== ring[0][j]) {\n                throw new Error(\"First and last Position are not equivalent.\");\n            }\n        }\n    }\n    var geom = {\n        type: \"Polygon\",\n        coordinates: coordinates,\n    };\n    return feature(geom, properties, options);\n}\nexports.polygon = polygon;\n/**\n * Creates a {@link Polygon} {@link FeatureCollection} from an Array of Polygon coordinates.\n *\n * @name polygons\n * @param {Array<Array<Array<Array<number>>>>} coordinates an array of Polygon coordinates\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the FeatureCollection\n * @returns {FeatureCollection<Polygon>} Polygon FeatureCollection\n * @example\n * var polygons = turf.polygons([\n *   [[[-5, 52], [-4, 56], [-2, 51], [-7, 54], [-5, 52]]],\n *   [[[-15, 42], [-14, 46], [-12, 41], [-17, 44], [-15, 42]]],\n * ]);\n *\n * //=polygons\n */\nfunction polygons(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    return featureCollection(coordinates.map(function (coords) {\n        return polygon(coords, properties);\n    }), options);\n}\nexports.polygons = polygons;\n/**\n * Creates a {@link LineString} {@link Feature} from an Array of Positions.\n *\n * @name lineString\n * @param {Array<Array<number>>} coordinates an array of Positions\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<LineString>} LineString Feature\n * @example\n * var linestring1 = turf.lineString([[-24, 63], [-23, 60], [-25, 65], [-20, 69]], {name: 'line 1'});\n * var linestring2 = turf.lineString([[-14, 43], [-13, 40], [-15, 45], [-10, 49]], {name: 'line 2'});\n *\n * //=linestring1\n * //=linestring2\n */\nfunction lineString(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    if (coordinates.length < 2) {\n        throw new Error(\"coordinates must be an array of two or more positions\");\n    }\n    var geom = {\n        type: \"LineString\",\n        coordinates: coordinates,\n    };\n    return feature(geom, properties, options);\n}\nexports.lineString = lineString;\n/**\n * Creates a {@link LineString} {@link FeatureCollection} from an Array of LineString coordinates.\n *\n * @name lineStrings\n * @param {Array<Array<Array<number>>>} coordinates an array of LinearRings\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north]\n * associated with the FeatureCollection\n * @param {string|number} [options.id] Identifier associated with the FeatureCollection\n * @returns {FeatureCollection<LineString>} LineString FeatureCollection\n * @example\n * var linestrings = turf.lineStrings([\n *   [[-24, 63], [-23, 60], [-25, 65], [-20, 69]],\n *   [[-14, 43], [-13, 40], [-15, 45], [-10, 49]]\n * ]);\n *\n * //=linestrings\n */\nfunction lineStrings(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    return featureCollection(coordinates.map(function (coords) {\n        return lineString(coords, properties);\n    }), options);\n}\nexports.lineStrings = lineStrings;\n/**\n * Takes one or more {@link Feature|Features} and creates a {@link FeatureCollection}.\n *\n * @name featureCollection\n * @param {Feature[]} features input features\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {FeatureCollection} FeatureCollection of Features\n * @example\n * var locationA = turf.point([-75.343, 39.984], {name: 'Location A'});\n * var locationB = turf.point([-75.833, 39.284], {name: 'Location B'});\n * var locationC = turf.point([-75.534, 39.123], {name: 'Location C'});\n *\n * var collection = turf.featureCollection([\n *   locationA,\n *   locationB,\n *   locationC\n * ]);\n *\n * //=collection\n */\nfunction featureCollection(features, options) {\n    if (options === void 0) { options = {}; }\n    var fc = { type: \"FeatureCollection\" };\n    if (options.id) {\n        fc.id = options.id;\n    }\n    if (options.bbox) {\n        fc.bbox = options.bbox;\n    }\n    fc.features = features;\n    return fc;\n}\nexports.featureCollection = featureCollection;\n/**\n * Creates a {@link Feature<MultiLineString>} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name multiLineString\n * @param {Array<Array<Array<number>>>} coordinates an array of LineStrings\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<MultiLineString>} a MultiLineString feature\n * @throws {Error} if no coordinates are passed\n * @example\n * var multiLine = turf.multiLineString([[[0,0],[10,10]]]);\n *\n * //=multiLine\n */\nfunction multiLineString(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    var geom = {\n        type: \"MultiLineString\",\n        coordinates: coordinates,\n    };\n    return feature(geom, properties, options);\n}\nexports.multiLineString = multiLineString;\n/**\n * Creates a {@link Feature<MultiPoint>} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name multiPoint\n * @param {Array<Array<number>>} coordinates an array of Positions\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<MultiPoint>} a MultiPoint feature\n * @throws {Error} if no coordinates are passed\n * @example\n * var multiPt = turf.multiPoint([[0,0],[10,10]]);\n *\n * //=multiPt\n */\nfunction multiPoint(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    var geom = {\n        type: \"MultiPoint\",\n        coordinates: coordinates,\n    };\n    return feature(geom, properties, options);\n}\nexports.multiPoint = multiPoint;\n/**\n * Creates a {@link Feature<MultiPolygon>} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name multiPolygon\n * @param {Array<Array<Array<Array<number>>>>} coordinates an array of Polygons\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<MultiPolygon>} a multipolygon feature\n * @throws {Error} if no coordinates are passed\n * @example\n * var multiPoly = turf.multiPolygon([[[[0,0],[0,10],[10,10],[10,0],[0,0]]]]);\n *\n * //=multiPoly\n *\n */\nfunction multiPolygon(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    var geom = {\n        type: \"MultiPolygon\",\n        coordinates: coordinates,\n    };\n    return feature(geom, properties, options);\n}\nexports.multiPolygon = multiPolygon;\n/**\n * Creates a {@link Feature<GeometryCollection>} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name geometryCollection\n * @param {Array<Geometry>} geometries an array of GeoJSON Geometries\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<GeometryCollection>} a GeoJSON GeometryCollection Feature\n * @example\n * var pt = turf.geometry(\"Point\", [100, 0]);\n * var line = turf.geometry(\"LineString\", [[101, 0], [102, 1]]);\n * var collection = turf.geometryCollection([pt, line]);\n *\n * // => collection\n */\nfunction geometryCollection(geometries, properties, options) {\n    if (options === void 0) { options = {}; }\n    var geom = {\n        type: \"GeometryCollection\",\n        geometries: geometries,\n    };\n    return feature(geom, properties, options);\n}\nexports.geometryCollection = geometryCollection;\n/**\n * Round number to precision\n *\n * @param {number} num Number\n * @param {number} [precision=0] Precision\n * @returns {number} rounded number\n * @example\n * turf.round(120.4321)\n * //=120\n *\n * turf.round(120.4321, 2)\n * //=120.43\n */\nfunction round(num, precision) {\n    if (precision === void 0) { precision = 0; }\n    if (precision && !(precision >= 0)) {\n        throw new Error(\"precision must be a positive number\");\n    }\n    var multiplier = Math.pow(10, precision || 0);\n    return Math.round(num * multiplier) / multiplier;\n}\nexports.round = round;\n/**\n * Convert a distance measurement (assuming a spherical Earth) from radians to a more friendly unit.\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet\n *\n * @name radiansToLength\n * @param {number} radians in radians across the sphere\n * @param {string} [units=\"kilometers\"] can be degrees, radians, miles, inches, yards, metres,\n * meters, kilometres, kilometers.\n * @returns {number} distance\n */\nfunction radiansToLength(radians, units) {\n    if (units === void 0) { units = \"kilometers\"; }\n    var factor = exports.factors[units];\n    if (!factor) {\n        throw new Error(units + \" units is invalid\");\n    }\n    return radians * factor;\n}\nexports.radiansToLength = radiansToLength;\n/**\n * Convert a distance measurement (assuming a spherical Earth) from a real-world unit into radians\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet\n *\n * @name lengthToRadians\n * @param {number} distance in real units\n * @param {string} [units=\"kilometers\"] can be degrees, radians, miles, inches, yards, metres,\n * meters, kilometres, kilometers.\n * @returns {number} radians\n */\nfunction lengthToRadians(distance, units) {\n    if (units === void 0) { units = \"kilometers\"; }\n    var factor = exports.factors[units];\n    if (!factor) {\n        throw new Error(units + \" units is invalid\");\n    }\n    return distance / factor;\n}\nexports.lengthToRadians = lengthToRadians;\n/**\n * Convert a distance measurement (assuming a spherical Earth) from a real-world unit into degrees\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, centimeters, kilometres, feet\n *\n * @name lengthToDegrees\n * @param {number} distance in real units\n * @param {string} [units=\"kilometers\"] can be degrees, radians, miles, inches, yards, metres,\n * meters, kilometres, kilometers.\n * @returns {number} degrees\n */\nfunction lengthToDegrees(distance, units) {\n    return radiansToDegrees(lengthToRadians(distance, units));\n}\nexports.lengthToDegrees = lengthToDegrees;\n/**\n * Converts any bearing angle from the north line direction (positive clockwise)\n * and returns an angle between 0-360 degrees (positive clockwise), 0 being the north line\n *\n * @name bearingToAzimuth\n * @param {number} bearing angle, between -180 and +180 degrees\n * @returns {number} angle between 0 and 360 degrees\n */\nfunction bearingToAzimuth(bearing) {\n    var angle = bearing % 360;\n    if (angle < 0) {\n        angle += 360;\n    }\n    return angle;\n}\nexports.bearingToAzimuth = bearingToAzimuth;\n/**\n * Converts an angle in radians to degrees\n *\n * @name radiansToDegrees\n * @param {number} radians angle in radians\n * @returns {number} degrees between 0 and 360 degrees\n */\nfunction radiansToDegrees(radians) {\n    var degrees = radians % (2 * Math.PI);\n    return (degrees * 180) / Math.PI;\n}\nexports.radiansToDegrees = radiansToDegrees;\n/**\n * Converts an angle in degrees to radians\n *\n * @name degreesToRadians\n * @param {number} degrees angle between 0 and 360 degrees\n * @returns {number} angle in radians\n */\nfunction degreesToRadians(degrees) {\n    var radians = degrees % 360;\n    return (radians * Math.PI) / 180;\n}\nexports.degreesToRadians = degreesToRadians;\n/**\n * Converts a length to the requested unit.\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet\n *\n * @param {number} length to be converted\n * @param {Units} [originalUnit=\"kilometers\"] of the length\n * @param {Units} [finalUnit=\"kilometers\"] returned unit\n * @returns {number} the converted length\n */\nfunction convertLength(length, originalUnit, finalUnit) {\n    if (originalUnit === void 0) { originalUnit = \"kilometers\"; }\n    if (finalUnit === void 0) { finalUnit = \"kilometers\"; }\n    if (!(length >= 0)) {\n        throw new Error(\"length must be a positive number\");\n    }\n    return radiansToLength(lengthToRadians(length, originalUnit), finalUnit);\n}\nexports.convertLength = convertLength;\n/**\n * Converts a area to the requested unit.\n * Valid units: kilometers, kilometres, meters, metres, centimetres, millimeters, acres, miles, yards, feet, inches, hectares\n * @param {number} area to be converted\n * @param {Units} [originalUnit=\"meters\"] of the distance\n * @param {Units} [finalUnit=\"kilometers\"] returned unit\n * @returns {number} the converted area\n */\nfunction convertArea(area, originalUnit, finalUnit) {\n    if (originalUnit === void 0) { originalUnit = \"meters\"; }\n    if (finalUnit === void 0) { finalUnit = \"kilometers\"; }\n    if (!(area >= 0)) {\n        throw new Error(\"area must be a positive number\");\n    }\n    var startFactor = exports.areaFactors[originalUnit];\n    if (!startFactor) {\n        throw new Error(\"invalid original units\");\n    }\n    var finalFactor = exports.areaFactors[finalUnit];\n    if (!finalFactor) {\n        throw new Error(\"invalid final units\");\n    }\n    return (area / startFactor) * finalFactor;\n}\nexports.convertArea = convertArea;\n/**\n * isNumber\n *\n * @param {*} num Number to validate\n * @returns {boolean} true/false\n * @example\n * turf.isNumber(123)\n * //=true\n * turf.isNumber('foo')\n * //=false\n */\nfunction isNumber(num) {\n    return !isNaN(num) && num !== null && !Array.isArray(num);\n}\nexports.isNumber = isNumber;\n/**\n * isObject\n *\n * @param {*} input variable to validate\n * @returns {boolean} true/false\n * @example\n * turf.isObject({elevation: 10})\n * //=true\n * turf.isObject('foo')\n * //=false\n */\nfunction isObject(input) {\n    return !!input && input.constructor === Object;\n}\nexports.isObject = isObject;\n/**\n * Validate BBox\n *\n * @private\n * @param {Array<number>} bbox BBox to validate\n * @returns {void}\n * @throws Error if BBox is not valid\n * @example\n * validateBBox([-180, -40, 110, 50])\n * //=OK\n * validateBBox([-180, -40])\n * //=Error\n * validateBBox('Foo')\n * //=Error\n * validateBBox(5)\n * //=Error\n * validateBBox(null)\n * //=Error\n * validateBBox(undefined)\n * //=Error\n */\nfunction validateBBox(bbox) {\n    if (!bbox) {\n        throw new Error(\"bbox is required\");\n    }\n    if (!Array.isArray(bbox)) {\n        throw new Error(\"bbox must be an Array\");\n    }\n    if (bbox.length !== 4 && bbox.length !== 6) {\n        throw new Error(\"bbox must be an Array of 4 or 6 numbers\");\n    }\n    bbox.forEach(function (num) {\n        if (!isNumber(num)) {\n            throw new Error(\"bbox must only contain numbers\");\n        }\n    });\n}\nexports.validateBBox = validateBBox;\n/**\n * Validate Id\n *\n * @private\n * @param {string|number} id Id to validate\n * @returns {void}\n * @throws Error if Id is not valid\n * @example\n * validateId([-180, -40, 110, 50])\n * //=Error\n * validateId([-180, -40])\n * //=Error\n * validateId('Foo')\n * //=OK\n * validateId(5)\n * //=OK\n * validateId(null)\n * //=Error\n * validateId(undefined)\n * //=Error\n */\nfunction validateId(id) {\n    if (!id) {\n        throw new Error(\"id is required\");\n    }\n    if ([\"string\", \"number\"].indexOf(typeof id) === -1) {\n        throw new Error(\"id must be a number or a string\");\n    }\n}\nexports.validateId = validateId;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar helpers_1 = require(\"@turf/helpers\");\n/**\n * Unwrap a coordinate from a Point Feature, Geometry or a single coordinate.\n *\n * @name getCoord\n * @param {Array<number>|Geometry<Point>|Feature<Point>} coord GeoJSON Point or an Array of numbers\n * @returns {Array<number>} coordinates\n * @example\n * var pt = turf.point([10, 10]);\n *\n * var coord = turf.getCoord(pt);\n * //= [10, 10]\n */\nfunction getCoord(coord) {\n    if (!coord) {\n        throw new Error(\"coord is required\");\n    }\n    if (!Array.isArray(coord)) {\n        if (coord.type === \"Feature\" &&\n            coord.geometry !== null &&\n            coord.geometry.type === \"Point\") {\n            return coord.geometry.coordinates;\n        }\n        if (coord.type === \"Point\") {\n            return coord.coordinates;\n        }\n    }\n    if (Array.isArray(coord) &&\n        coord.length >= 2 &&\n        !Array.isArray(coord[0]) &&\n        !Array.isArray(coord[1])) {\n        return coord;\n    }\n    throw new Error(\"coord must be GeoJSON Point or an Array of numbers\");\n}\nexports.getCoord = getCoord;\n/**\n * Unwrap coordinates from a Feature, Geometry Object or an Array\n *\n * @name getCoords\n * @param {Array<any>|Geometry|Feature} coords Feature, Geometry Object or an Array\n * @returns {Array<any>} coordinates\n * @example\n * var poly = turf.polygon([[[119.32, -8.7], [119.55, -8.69], [119.51, -8.54], [119.32, -8.7]]]);\n *\n * var coords = turf.getCoords(poly);\n * //= [[[119.32, -8.7], [119.55, -8.69], [119.51, -8.54], [119.32, -8.7]]]\n */\nfunction getCoords(coords) {\n    if (Array.isArray(coords)) {\n        return coords;\n    }\n    // Feature\n    if (coords.type === \"Feature\") {\n        if (coords.geometry !== null) {\n            return coords.geometry.coordinates;\n        }\n    }\n    else {\n        // Geometry\n        if (coords.coordinates) {\n            return coords.coordinates;\n        }\n    }\n    throw new Error(\"coords must be GeoJSON Feature, Geometry Object or an Array\");\n}\nexports.getCoords = getCoords;\n/**\n * Checks if coordinates contains a number\n *\n * @name containsNumber\n * @param {Array<any>} coordinates GeoJSON Coordinates\n * @returns {boolean} true if Array contains a number\n */\nfunction containsNumber(coordinates) {\n    if (coordinates.length > 1 &&\n        helpers_1.isNumber(coordinates[0]) &&\n        helpers_1.isNumber(coordinates[1])) {\n        return true;\n    }\n    if (Array.isArray(coordinates[0]) && coordinates[0].length) {\n        return containsNumber(coordinates[0]);\n    }\n    throw new Error(\"coordinates must only contain numbers\");\n}\nexports.containsNumber = containsNumber;\n/**\n * Enforce expectations about types of GeoJSON objects for Turf.\n *\n * @name geojsonType\n * @param {GeoJSON} value any GeoJSON object\n * @param {string} type expected GeoJSON type\n * @param {string} name name of calling function\n * @throws {Error} if value is not the expected type.\n */\nfunction geojsonType(value, type, name) {\n    if (!type || !name) {\n        throw new Error(\"type and name required\");\n    }\n    if (!value || value.type !== type) {\n        throw new Error(\"Invalid input to \" +\n            name +\n            \": must be a \" +\n            type +\n            \", given \" +\n            value.type);\n    }\n}\nexports.geojsonType = geojsonType;\n/**\n * Enforce expectations about types of {@link Feature} inputs for Turf.\n * Internally this uses {@link geojsonType} to judge geometry types.\n *\n * @name featureOf\n * @param {Feature} feature a feature with an expected geometry type\n * @param {string} type expected GeoJSON type\n * @param {string} name name of calling function\n * @throws {Error} error if value is not the expected type.\n */\nfunction featureOf(feature, type, name) {\n    if (!feature) {\n        throw new Error(\"No feature passed\");\n    }\n    if (!name) {\n        throw new Error(\".featureOf() requires a name\");\n    }\n    if (!feature || feature.type !== \"Feature\" || !feature.geometry) {\n        throw new Error(\"Invalid input to \" + name + \", Feature with geometry required\");\n    }\n    if (!feature.geometry || feature.geometry.type !== type) {\n        throw new Error(\"Invalid input to \" +\n            name +\n            \": must be a \" +\n            type +\n            \", given \" +\n            feature.geometry.type);\n    }\n}\nexports.featureOf = featureOf;\n/**\n * Enforce expectations about types of {@link FeatureCollection} inputs for Turf.\n * Internally this uses {@link geojsonType} to judge geometry types.\n *\n * @name collectionOf\n * @param {FeatureCollection} featureCollection a FeatureCollection for which features will be judged\n * @param {string} type expected GeoJSON type\n * @param {string} name name of calling function\n * @throws {Error} if value is not the expected type.\n */\nfunction collectionOf(featureCollection, type, name) {\n    if (!featureCollection) {\n        throw new Error(\"No featureCollection passed\");\n    }\n    if (!name) {\n        throw new Error(\".collectionOf() requires a name\");\n    }\n    if (!featureCollection || featureCollection.type !== \"FeatureCollection\") {\n        throw new Error(\"Invalid input to \" + name + \", FeatureCollection required\");\n    }\n    for (var _i = 0, _a = featureCollection.features; _i < _a.length; _i++) {\n        var feature = _a[_i];\n        if (!feature || feature.type !== \"Feature\" || !feature.geometry) {\n            throw new Error(\"Invalid input to \" + name + \", Feature with geometry required\");\n        }\n        if (!feature.geometry || feature.geometry.type !== type) {\n            throw new Error(\"Invalid input to \" +\n                name +\n                \": must be a \" +\n                type +\n                \", given \" +\n                feature.geometry.type);\n        }\n    }\n}\nexports.collectionOf = collectionOf;\n/**\n * Get Geometry from Feature or Geometry Object\n *\n * @param {Feature|Geometry} geojson GeoJSON Feature or Geometry Object\n * @returns {Geometry|null} GeoJSON Geometry Object\n * @throws {Error} if geojson is not a Feature or Geometry Object\n * @example\n * var point = {\n *   \"type\": \"Feature\",\n *   \"properties\": {},\n *   \"geometry\": {\n *     \"type\": \"Point\",\n *     \"coordinates\": [110, 40]\n *   }\n * }\n * var geom = turf.getGeom(point)\n * //={\"type\": \"Point\", \"coordinates\": [110, 40]}\n */\nfunction getGeom(geojson) {\n    if (geojson.type === \"Feature\") {\n        return geojson.geometry;\n    }\n    return geojson;\n}\nexports.getGeom = getGeom;\n/**\n * Get GeoJSON object's type, Geometry type is prioritize.\n *\n * @param {GeoJSON} geojson GeoJSON object\n * @param {string} [name=\"geojson\"] name of the variable to display in error message (unused)\n * @returns {string} GeoJSON type\n * @example\n * var point = {\n *   \"type\": \"Feature\",\n *   \"properties\": {},\n *   \"geometry\": {\n *     \"type\": \"Point\",\n *     \"coordinates\": [110, 40]\n *   }\n * }\n * var geom = turf.getType(point)\n * //=\"Point\"\n */\nfunction getType(geojson, _name) {\n    if (geojson.type === \"FeatureCollection\") {\n        return \"FeatureCollection\";\n    }\n    if (geojson.type === \"GeometryCollection\") {\n        return \"GeometryCollection\";\n    }\n    if (geojson.type === \"Feature\" && geojson.geometry !== null) {\n        return geojson.geometry.type;\n    }\n    return geojson.type;\n}\nexports.getType = getType;\n","import { isNumber } from '@turf/helpers';\n\n/**\n * Unwrap a coordinate from a Point Feature, Geometry or a single coordinate.\n *\n * @name getCoord\n * @param {Array<number>|Geometry<Point>|Feature<Point>} coord GeoJSON Point or an Array of numbers\n * @returns {Array<number>} coordinates\n * @example\n * var pt = turf.point([10, 10]);\n *\n * var coord = turf.getCoord(pt);\n * //= [10, 10]\n */\nfunction getCoord(coord) {\n    if (!coord) throw new Error('coord is required');\n    if (coord.type === 'Feature' && coord.geometry !== null && coord.geometry.type === 'Point') return coord.geometry.coordinates;\n    if (coord.type === 'Point') return coord.coordinates;\n    if (Array.isArray(coord) && coord.length >= 2 && coord[0].length === undefined && coord[1].length === undefined) return coord;\n\n    throw new Error('coord must be GeoJSON Point or an Array of numbers');\n}\n\n/**\n * Unwrap coordinates from a Feature, Geometry Object or an Array\n *\n * @name getCoords\n * @param {Array<any>|Geometry|Feature} coords Feature, Geometry Object or an Array\n * @returns {Array<any>} coordinates\n * @example\n * var poly = turf.polygon([[[119.32, -8.7], [119.55, -8.69], [119.51, -8.54], [119.32, -8.7]]]);\n *\n * var coords = turf.getCoords(poly);\n * //= [[[119.32, -8.7], [119.55, -8.69], [119.51, -8.54], [119.32, -8.7]]]\n */\nfunction getCoords(coords) {\n    if (!coords) throw new Error('coords is required');\n\n    // Feature\n    if (coords.type === 'Feature' && coords.geometry !== null) return coords.geometry.coordinates;\n\n    // Geometry\n    if (coords.coordinates) return coords.coordinates;\n\n    // Array of numbers\n    if (Array.isArray(coords)) return coords;\n\n    throw new Error('coords must be GeoJSON Feature, Geometry Object or an Array');\n}\n\n/**\n * Checks if coordinates contains a number\n *\n * @name containsNumber\n * @param {Array<any>} coordinates GeoJSON Coordinates\n * @returns {boolean} true if Array contains a number\n */\nfunction containsNumber(coordinates) {\n    if (coordinates.length > 1 && isNumber(coordinates[0]) && isNumber(coordinates[1])) {\n        return true;\n    }\n\n    if (Array.isArray(coordinates[0]) && coordinates[0].length) {\n        return containsNumber(coordinates[0]);\n    }\n    throw new Error('coordinates must only contain numbers');\n}\n\n/**\n * Enforce expectations about types of GeoJSON objects for Turf.\n *\n * @name geojsonType\n * @param {GeoJSON} value any GeoJSON object\n * @param {string} type expected GeoJSON type\n * @param {string} name name of calling function\n * @throws {Error} if value is not the expected type.\n */\nfunction geojsonType(value, type, name) {\n    if (!type || !name) throw new Error('type and name required');\n\n    if (!value || value.type !== type) {\n        throw new Error('Invalid input to ' + name + ': must be a ' + type + ', given ' + value.type);\n    }\n}\n\n/**\n * Enforce expectations about types of {@link Feature} inputs for Turf.\n * Internally this uses {@link geojsonType} to judge geometry types.\n *\n * @name featureOf\n * @param {Feature} feature a feature with an expected geometry type\n * @param {string} type expected GeoJSON type\n * @param {string} name name of calling function\n * @throws {Error} error if value is not the expected type.\n */\nfunction featureOf(feature, type, name) {\n    if (!feature) throw new Error('No feature passed');\n    if (!name) throw new Error('.featureOf() requires a name');\n    if (!feature || feature.type !== 'Feature' || !feature.geometry) {\n        throw new Error('Invalid input to ' + name + ', Feature with geometry required');\n    }\n    if (!feature.geometry || feature.geometry.type !== type) {\n        throw new Error('Invalid input to ' + name + ': must be a ' + type + ', given ' + feature.geometry.type);\n    }\n}\n\n/**\n * Enforce expectations about types of {@link FeatureCollection} inputs for Turf.\n * Internally this uses {@link geojsonType} to judge geometry types.\n *\n * @name collectionOf\n * @param {FeatureCollection} featureCollection a FeatureCollection for which features will be judged\n * @param {string} type expected GeoJSON type\n * @param {string} name name of calling function\n * @throws {Error} if value is not the expected type.\n */\nfunction collectionOf(featureCollection, type, name) {\n    if (!featureCollection) throw new Error('No featureCollection passed');\n    if (!name) throw new Error('.collectionOf() requires a name');\n    if (!featureCollection || featureCollection.type !== 'FeatureCollection') {\n        throw new Error('Invalid input to ' + name + ', FeatureCollection required');\n    }\n    for (var i = 0; i < featureCollection.features.length; i++) {\n        var feature = featureCollection.features[i];\n        if (!feature || feature.type !== 'Feature' || !feature.geometry) {\n            throw new Error('Invalid input to ' + name + ', Feature with geometry required');\n        }\n        if (!feature.geometry || feature.geometry.type !== type) {\n            throw new Error('Invalid input to ' + name + ': must be a ' + type + ', given ' + feature.geometry.type);\n        }\n    }\n}\n\n/**\n * Get Geometry from Feature or Geometry Object\n *\n * @param {Feature|Geometry} geojson GeoJSON Feature or Geometry Object\n * @returns {Geometry|null} GeoJSON Geometry Object\n * @throws {Error} if geojson is not a Feature or Geometry Object\n * @example\n * var point = {\n *   \"type\": \"Feature\",\n *   \"properties\": {},\n *   \"geometry\": {\n *     \"type\": \"Point\",\n *     \"coordinates\": [110, 40]\n *   }\n * }\n * var geom = turf.getGeom(point)\n * //={\"type\": \"Point\", \"coordinates\": [110, 40]}\n */\nfunction getGeom(geojson) {\n    if (!geojson) throw new Error('geojson is required');\n    if (geojson.geometry !== undefined) return geojson.geometry;\n    if (geojson.coordinates || geojson.geometries) return geojson;\n    throw new Error('geojson must be a valid Feature or Geometry Object');\n}\n\n/**\n * Get Geometry Type from Feature or Geometry Object\n *\n * @throws {Error} **DEPRECATED** in v5.0.0 in favor of getType\n */\nfunction getGeomType() {\n    throw new Error('invariant.getGeomType has been deprecated in v5.0 in favor of invariant.getType');\n}\n\n/**\n * Get GeoJSON object's type, Geometry type is prioritize.\n *\n * @param {GeoJSON} geojson GeoJSON object\n * @param {string} [name=\"geojson\"] name of the variable to display in error message\n * @returns {string} GeoJSON type\n * @example\n * var point = {\n *   \"type\": \"Feature\",\n *   \"properties\": {},\n *   \"geometry\": {\n *     \"type\": \"Point\",\n *     \"coordinates\": [110, 40]\n *   }\n * }\n * var geom = turf.getType(point)\n * //=\"Point\"\n */\nfunction getType(geojson, name) {\n    if (!geojson) throw new Error((name || 'geojson') + ' is required');\n    // GeoJSON Feature & GeometryCollection\n    if (geojson.geometry && geojson.geometry.type) return geojson.geometry.type;\n    // GeoJSON Geometry & FeatureCollection\n    if (geojson.type) return geojson.type;\n    throw new Error((name || 'geojson') + ' is invalid');\n}\n\nexport { getCoord, getCoords, containsNumber, geojsonType, featureOf, collectionOf, getGeom, getGeomType, getType };\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n    return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar helpers_1 = require(\"@turf/helpers\");\nvar invariant_1 = require(\"@turf/invariant\");\nvar line_segment_1 = __importDefault(require(\"@turf/line-segment\"));\nvar meta_1 = require(\"@turf/meta\");\nvar geojson_rbush_1 = __importDefault(require(\"geojson-rbush\"));\n/**\n * Takes any LineString or Polygon GeoJSON and returns the intersecting point(s).\n *\n * @name lineIntersect\n * @param {GeoJSON} line1 any LineString or Polygon\n * @param {GeoJSON} line2 any LineString or Polygon\n * @returns {FeatureCollection<Point>} point(s) that intersect both\n * @example\n * var line1 = turf.lineString([[126, -11], [129, -21]]);\n * var line2 = turf.lineString([[123, -18], [131, -14]]);\n * var intersects = turf.lineIntersect(line1, line2);\n *\n * //addToMap\n * var addToMap = [line1, line2, intersects]\n */\nfunction lineIntersect(line1, line2) {\n    var unique = {};\n    var results = [];\n    // First, normalize geometries to features\n    // Then, handle simple 2-vertex segments\n    if (line1.type === \"LineString\") {\n        line1 = helpers_1.feature(line1);\n    }\n    if (line2.type === \"LineString\") {\n        line2 = helpers_1.feature(line2);\n    }\n    if (line1.type === \"Feature\" &&\n        line2.type === \"Feature\" &&\n        line1.geometry !== null &&\n        line2.geometry !== null &&\n        line1.geometry.type === \"LineString\" &&\n        line2.geometry.type === \"LineString\" &&\n        line1.geometry.coordinates.length === 2 &&\n        line2.geometry.coordinates.length === 2) {\n        var intersect = intersects(line1, line2);\n        if (intersect) {\n            results.push(intersect);\n        }\n        return helpers_1.featureCollection(results);\n    }\n    // Handles complex GeoJSON Geometries\n    var tree = geojson_rbush_1.default();\n    tree.load(line_segment_1.default(line2));\n    meta_1.featureEach(line_segment_1.default(line1), function (segment) {\n        meta_1.featureEach(tree.search(segment), function (match) {\n            var intersect = intersects(segment, match);\n            if (intersect) {\n                // prevent duplicate points https://github.com/Turfjs/turf/issues/688\n                var key = invariant_1.getCoords(intersect).join(\",\");\n                if (!unique[key]) {\n                    unique[key] = true;\n                    results.push(intersect);\n                }\n            }\n        });\n    });\n    return helpers_1.featureCollection(results);\n}\n/**\n * Find a point that intersects LineStrings with two coordinates each\n *\n * @private\n * @param {Feature<LineString>} line1 GeoJSON LineString (Must only contain 2 coordinates)\n * @param {Feature<LineString>} line2 GeoJSON LineString (Must only contain 2 coordinates)\n * @returns {Feature<Point>} intersecting GeoJSON Point\n */\nfunction intersects(line1, line2) {\n    var coords1 = invariant_1.getCoords(line1);\n    var coords2 = invariant_1.getCoords(line2);\n    if (coords1.length !== 2) {\n        throw new Error(\"<intersects> line1 must only contain 2 coordinates\");\n    }\n    if (coords2.length !== 2) {\n        throw new Error(\"<intersects> line2 must only contain 2 coordinates\");\n    }\n    var x1 = coords1[0][0];\n    var y1 = coords1[0][1];\n    var x2 = coords1[1][0];\n    var y2 = coords1[1][1];\n    var x3 = coords2[0][0];\n    var y3 = coords2[0][1];\n    var x4 = coords2[1][0];\n    var y4 = coords2[1][1];\n    var denom = (y4 - y3) * (x2 - x1) - (x4 - x3) * (y2 - y1);\n    var numeA = (x4 - x3) * (y1 - y3) - (y4 - y3) * (x1 - x3);\n    var numeB = (x2 - x1) * (y1 - y3) - (y2 - y1) * (x1 - x3);\n    if (denom === 0) {\n        if (numeA === 0 && numeB === 0) {\n            return null;\n        }\n        return null;\n    }\n    var uA = numeA / denom;\n    var uB = numeB / denom;\n    if (uA >= 0 && uA <= 1 && uB >= 0 && uB <= 1) {\n        var x = x1 + uA * (x2 - x1);\n        var y = y1 + uA * (y2 - y1);\n        return helpers_1.point([x, y]);\n    }\n    return null;\n}\nexports.default = lineIntersect;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * @module helpers\n */\n/**\n * Earth Radius used with the Harvesine formula and approximates using a spherical (non-ellipsoid) Earth.\n *\n * @memberof helpers\n * @type {number}\n */\nexports.earthRadius = 6371008.8;\n/**\n * Unit of measurement factors using a spherical (non-ellipsoid) earth radius.\n *\n * @memberof helpers\n * @type {Object}\n */\nexports.factors = {\n    centimeters: exports.earthRadius * 100,\n    centimetres: exports.earthRadius * 100,\n    degrees: exports.earthRadius / 111325,\n    feet: exports.earthRadius * 3.28084,\n    inches: exports.earthRadius * 39.37,\n    kilometers: exports.earthRadius / 1000,\n    kilometres: exports.earthRadius / 1000,\n    meters: exports.earthRadius,\n    metres: exports.earthRadius,\n    miles: exports.earthRadius / 1609.344,\n    millimeters: exports.earthRadius * 1000,\n    millimetres: exports.earthRadius * 1000,\n    nauticalmiles: exports.earthRadius / 1852,\n    radians: 1,\n    yards: exports.earthRadius * 1.0936,\n};\n/**\n * Units of measurement factors based on 1 meter.\n *\n * @memberof helpers\n * @type {Object}\n */\nexports.unitsFactors = {\n    centimeters: 100,\n    centimetres: 100,\n    degrees: 1 / 111325,\n    feet: 3.28084,\n    inches: 39.37,\n    kilometers: 1 / 1000,\n    kilometres: 1 / 1000,\n    meters: 1,\n    metres: 1,\n    miles: 1 / 1609.344,\n    millimeters: 1000,\n    millimetres: 1000,\n    nauticalmiles: 1 / 1852,\n    radians: 1 / exports.earthRadius,\n    yards: 1.0936133,\n};\n/**\n * Area of measurement factors based on 1 square meter.\n *\n * @memberof helpers\n * @type {Object}\n */\nexports.areaFactors = {\n    acres: 0.000247105,\n    centimeters: 10000,\n    centimetres: 10000,\n    feet: 10.763910417,\n    hectares: 0.0001,\n    inches: 1550.003100006,\n    kilometers: 0.000001,\n    kilometres: 0.000001,\n    meters: 1,\n    metres: 1,\n    miles: 3.86e-7,\n    millimeters: 1000000,\n    millimetres: 1000000,\n    yards: 1.195990046,\n};\n/**\n * Wraps a GeoJSON {@link Geometry} in a GeoJSON {@link Feature}.\n *\n * @name feature\n * @param {Geometry} geometry input geometry\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} a GeoJSON Feature\n * @example\n * var geometry = {\n *   \"type\": \"Point\",\n *   \"coordinates\": [110, 50]\n * };\n *\n * var feature = turf.feature(geometry);\n *\n * //=feature\n */\nfunction feature(geom, properties, options) {\n    if (options === void 0) { options = {}; }\n    var feat = { type: \"Feature\" };\n    if (options.id === 0 || options.id) {\n        feat.id = options.id;\n    }\n    if (options.bbox) {\n        feat.bbox = options.bbox;\n    }\n    feat.properties = properties || {};\n    feat.geometry = geom;\n    return feat;\n}\nexports.feature = feature;\n/**\n * Creates a GeoJSON {@link Geometry} from a Geometry string type & coordinates.\n * For GeometryCollection type use `helpers.geometryCollection`\n *\n * @name geometry\n * @param {string} type Geometry Type\n * @param {Array<any>} coordinates Coordinates\n * @param {Object} [options={}] Optional Parameters\n * @returns {Geometry} a GeoJSON Geometry\n * @example\n * var type = \"Point\";\n * var coordinates = [110, 50];\n * var geometry = turf.geometry(type, coordinates);\n * // => geometry\n */\nfunction geometry(type, coordinates, _options) {\n    if (_options === void 0) { _options = {}; }\n    switch (type) {\n        case \"Point\":\n            return point(coordinates).geometry;\n        case \"LineString\":\n            return lineString(coordinates).geometry;\n        case \"Polygon\":\n            return polygon(coordinates).geometry;\n        case \"MultiPoint\":\n            return multiPoint(coordinates).geometry;\n        case \"MultiLineString\":\n            return multiLineString(coordinates).geometry;\n        case \"MultiPolygon\":\n            return multiPolygon(coordinates).geometry;\n        default:\n            throw new Error(type + \" is invalid\");\n    }\n}\nexports.geometry = geometry;\n/**\n * Creates a {@link Point} {@link Feature} from a Position.\n *\n * @name point\n * @param {Array<number>} coordinates longitude, latitude position (each in decimal degrees)\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<Point>} a Point feature\n * @example\n * var point = turf.point([-75.343, 39.984]);\n *\n * //=point\n */\nfunction point(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    if (!coordinates) {\n        throw new Error(\"coordinates is required\");\n    }\n    if (!Array.isArray(coordinates)) {\n        throw new Error(\"coordinates must be an Array\");\n    }\n    if (coordinates.length < 2) {\n        throw new Error(\"coordinates must be at least 2 numbers long\");\n    }\n    if (!isNumber(coordinates[0]) || !isNumber(coordinates[1])) {\n        throw new Error(\"coordinates must contain numbers\");\n    }\n    var geom = {\n        type: \"Point\",\n        coordinates: coordinates,\n    };\n    return feature(geom, properties, options);\n}\nexports.point = point;\n/**\n * Creates a {@link Point} {@link FeatureCollection} from an Array of Point coordinates.\n *\n * @name points\n * @param {Array<Array<number>>} coordinates an array of Points\n * @param {Object} [properties={}] Translate these properties to each Feature\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north]\n * associated with the FeatureCollection\n * @param {string|number} [options.id] Identifier associated with the FeatureCollection\n * @returns {FeatureCollection<Point>} Point Feature\n * @example\n * var points = turf.points([\n *   [-75, 39],\n *   [-80, 45],\n *   [-78, 50]\n * ]);\n *\n * //=points\n */\nfunction points(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    return featureCollection(coordinates.map(function (coords) {\n        return point(coords, properties);\n    }), options);\n}\nexports.points = points;\n/**\n * Creates a {@link Polygon} {@link Feature} from an Array of LinearRings.\n *\n * @name polygon\n * @param {Array<Array<Array<number>>>} coordinates an array of LinearRings\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<Polygon>} Polygon Feature\n * @example\n * var polygon = turf.polygon([[[-5, 52], [-4, 56], [-2, 51], [-7, 54], [-5, 52]]], { name: 'poly1' });\n *\n * //=polygon\n */\nfunction polygon(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    for (var _i = 0, coordinates_1 = coordinates; _i < coordinates_1.length; _i++) {\n        var ring = coordinates_1[_i];\n        if (ring.length < 4) {\n            throw new Error(\"Each LinearRing of a Polygon must have 4 or more Positions.\");\n        }\n        for (var j = 0; j < ring[ring.length - 1].length; j++) {\n            // Check if first point of Polygon contains two numbers\n            if (ring[ring.length - 1][j] !== ring[0][j]) {\n                throw new Error(\"First and last Position are not equivalent.\");\n            }\n        }\n    }\n    var geom = {\n        type: \"Polygon\",\n        coordinates: coordinates,\n    };\n    return feature(geom, properties, options);\n}\nexports.polygon = polygon;\n/**\n * Creates a {@link Polygon} {@link FeatureCollection} from an Array of Polygon coordinates.\n *\n * @name polygons\n * @param {Array<Array<Array<Array<number>>>>} coordinates an array of Polygon coordinates\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the FeatureCollection\n * @returns {FeatureCollection<Polygon>} Polygon FeatureCollection\n * @example\n * var polygons = turf.polygons([\n *   [[[-5, 52], [-4, 56], [-2, 51], [-7, 54], [-5, 52]]],\n *   [[[-15, 42], [-14, 46], [-12, 41], [-17, 44], [-15, 42]]],\n * ]);\n *\n * //=polygons\n */\nfunction polygons(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    return featureCollection(coordinates.map(function (coords) {\n        return polygon(coords, properties);\n    }), options);\n}\nexports.polygons = polygons;\n/**\n * Creates a {@link LineString} {@link Feature} from an Array of Positions.\n *\n * @name lineString\n * @param {Array<Array<number>>} coordinates an array of Positions\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<LineString>} LineString Feature\n * @example\n * var linestring1 = turf.lineString([[-24, 63], [-23, 60], [-25, 65], [-20, 69]], {name: 'line 1'});\n * var linestring2 = turf.lineString([[-14, 43], [-13, 40], [-15, 45], [-10, 49]], {name: 'line 2'});\n *\n * //=linestring1\n * //=linestring2\n */\nfunction lineString(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    if (coordinates.length < 2) {\n        throw new Error(\"coordinates must be an array of two or more positions\");\n    }\n    var geom = {\n        type: \"LineString\",\n        coordinates: coordinates,\n    };\n    return feature(geom, properties, options);\n}\nexports.lineString = lineString;\n/**\n * Creates a {@link LineString} {@link FeatureCollection} from an Array of LineString coordinates.\n *\n * @name lineStrings\n * @param {Array<Array<Array<number>>>} coordinates an array of LinearRings\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north]\n * associated with the FeatureCollection\n * @param {string|number} [options.id] Identifier associated with the FeatureCollection\n * @returns {FeatureCollection<LineString>} LineString FeatureCollection\n * @example\n * var linestrings = turf.lineStrings([\n *   [[-24, 63], [-23, 60], [-25, 65], [-20, 69]],\n *   [[-14, 43], [-13, 40], [-15, 45], [-10, 49]]\n * ]);\n *\n * //=linestrings\n */\nfunction lineStrings(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    return featureCollection(coordinates.map(function (coords) {\n        return lineString(coords, properties);\n    }), options);\n}\nexports.lineStrings = lineStrings;\n/**\n * Takes one or more {@link Feature|Features} and creates a {@link FeatureCollection}.\n *\n * @name featureCollection\n * @param {Feature[]} features input features\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {FeatureCollection} FeatureCollection of Features\n * @example\n * var locationA = turf.point([-75.343, 39.984], {name: 'Location A'});\n * var locationB = turf.point([-75.833, 39.284], {name: 'Location B'});\n * var locationC = turf.point([-75.534, 39.123], {name: 'Location C'});\n *\n * var collection = turf.featureCollection([\n *   locationA,\n *   locationB,\n *   locationC\n * ]);\n *\n * //=collection\n */\nfunction featureCollection(features, options) {\n    if (options === void 0) { options = {}; }\n    var fc = { type: \"FeatureCollection\" };\n    if (options.id) {\n        fc.id = options.id;\n    }\n    if (options.bbox) {\n        fc.bbox = options.bbox;\n    }\n    fc.features = features;\n    return fc;\n}\nexports.featureCollection = featureCollection;\n/**\n * Creates a {@link Feature<MultiLineString>} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name multiLineString\n * @param {Array<Array<Array<number>>>} coordinates an array of LineStrings\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<MultiLineString>} a MultiLineString feature\n * @throws {Error} if no coordinates are passed\n * @example\n * var multiLine = turf.multiLineString([[[0,0],[10,10]]]);\n *\n * //=multiLine\n */\nfunction multiLineString(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    var geom = {\n        type: \"MultiLineString\",\n        coordinates: coordinates,\n    };\n    return feature(geom, properties, options);\n}\nexports.multiLineString = multiLineString;\n/**\n * Creates a {@link Feature<MultiPoint>} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name multiPoint\n * @param {Array<Array<number>>} coordinates an array of Positions\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<MultiPoint>} a MultiPoint feature\n * @throws {Error} if no coordinates are passed\n * @example\n * var multiPt = turf.multiPoint([[0,0],[10,10]]);\n *\n * //=multiPt\n */\nfunction multiPoint(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    var geom = {\n        type: \"MultiPoint\",\n        coordinates: coordinates,\n    };\n    return feature(geom, properties, options);\n}\nexports.multiPoint = multiPoint;\n/**\n * Creates a {@link Feature<MultiPolygon>} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name multiPolygon\n * @param {Array<Array<Array<Array<number>>>>} coordinates an array of Polygons\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<MultiPolygon>} a multipolygon feature\n * @throws {Error} if no coordinates are passed\n * @example\n * var multiPoly = turf.multiPolygon([[[[0,0],[0,10],[10,10],[10,0],[0,0]]]]);\n *\n * //=multiPoly\n *\n */\nfunction multiPolygon(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    var geom = {\n        type: \"MultiPolygon\",\n        coordinates: coordinates,\n    };\n    return feature(geom, properties, options);\n}\nexports.multiPolygon = multiPolygon;\n/**\n * Creates a {@link Feature<GeometryCollection>} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name geometryCollection\n * @param {Array<Geometry>} geometries an array of GeoJSON Geometries\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<GeometryCollection>} a GeoJSON GeometryCollection Feature\n * @example\n * var pt = turf.geometry(\"Point\", [100, 0]);\n * var line = turf.geometry(\"LineString\", [[101, 0], [102, 1]]);\n * var collection = turf.geometryCollection([pt, line]);\n *\n * // => collection\n */\nfunction geometryCollection(geometries, properties, options) {\n    if (options === void 0) { options = {}; }\n    var geom = {\n        type: \"GeometryCollection\",\n        geometries: geometries,\n    };\n    return feature(geom, properties, options);\n}\nexports.geometryCollection = geometryCollection;\n/**\n * Round number to precision\n *\n * @param {number} num Number\n * @param {number} [precision=0] Precision\n * @returns {number} rounded number\n * @example\n * turf.round(120.4321)\n * //=120\n *\n * turf.round(120.4321, 2)\n * //=120.43\n */\nfunction round(num, precision) {\n    if (precision === void 0) { precision = 0; }\n    if (precision && !(precision >= 0)) {\n        throw new Error(\"precision must be a positive number\");\n    }\n    var multiplier = Math.pow(10, precision || 0);\n    return Math.round(num * multiplier) / multiplier;\n}\nexports.round = round;\n/**\n * Convert a distance measurement (assuming a spherical Earth) from radians to a more friendly unit.\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet\n *\n * @name radiansToLength\n * @param {number} radians in radians across the sphere\n * @param {string} [units=\"kilometers\"] can be degrees, radians, miles, inches, yards, metres,\n * meters, kilometres, kilometers.\n * @returns {number} distance\n */\nfunction radiansToLength(radians, units) {\n    if (units === void 0) { units = \"kilometers\"; }\n    var factor = exports.factors[units];\n    if (!factor) {\n        throw new Error(units + \" units is invalid\");\n    }\n    return radians * factor;\n}\nexports.radiansToLength = radiansToLength;\n/**\n * Convert a distance measurement (assuming a spherical Earth) from a real-world unit into radians\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet\n *\n * @name lengthToRadians\n * @param {number} distance in real units\n * @param {string} [units=\"kilometers\"] can be degrees, radians, miles, inches, yards, metres,\n * meters, kilometres, kilometers.\n * @returns {number} radians\n */\nfunction lengthToRadians(distance, units) {\n    if (units === void 0) { units = \"kilometers\"; }\n    var factor = exports.factors[units];\n    if (!factor) {\n        throw new Error(units + \" units is invalid\");\n    }\n    return distance / factor;\n}\nexports.lengthToRadians = lengthToRadians;\n/**\n * Convert a distance measurement (assuming a spherical Earth) from a real-world unit into degrees\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, centimeters, kilometres, feet\n *\n * @name lengthToDegrees\n * @param {number} distance in real units\n * @param {string} [units=\"kilometers\"] can be degrees, radians, miles, inches, yards, metres,\n * meters, kilometres, kilometers.\n * @returns {number} degrees\n */\nfunction lengthToDegrees(distance, units) {\n    return radiansToDegrees(lengthToRadians(distance, units));\n}\nexports.lengthToDegrees = lengthToDegrees;\n/**\n * Converts any bearing angle from the north line direction (positive clockwise)\n * and returns an angle between 0-360 degrees (positive clockwise), 0 being the north line\n *\n * @name bearingToAzimuth\n * @param {number} bearing angle, between -180 and +180 degrees\n * @returns {number} angle between 0 and 360 degrees\n */\nfunction bearingToAzimuth(bearing) {\n    var angle = bearing % 360;\n    if (angle < 0) {\n        angle += 360;\n    }\n    return angle;\n}\nexports.bearingToAzimuth = bearingToAzimuth;\n/**\n * Converts an angle in radians to degrees\n *\n * @name radiansToDegrees\n * @param {number} radians angle in radians\n * @returns {number} degrees between 0 and 360 degrees\n */\nfunction radiansToDegrees(radians) {\n    var degrees = radians % (2 * Math.PI);\n    return (degrees * 180) / Math.PI;\n}\nexports.radiansToDegrees = radiansToDegrees;\n/**\n * Converts an angle in degrees to radians\n *\n * @name degreesToRadians\n * @param {number} degrees angle between 0 and 360 degrees\n * @returns {number} angle in radians\n */\nfunction degreesToRadians(degrees) {\n    var radians = degrees % 360;\n    return (radians * Math.PI) / 180;\n}\nexports.degreesToRadians = degreesToRadians;\n/**\n * Converts a length to the requested unit.\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet\n *\n * @param {number} length to be converted\n * @param {Units} [originalUnit=\"kilometers\"] of the length\n * @param {Units} [finalUnit=\"kilometers\"] returned unit\n * @returns {number} the converted length\n */\nfunction convertLength(length, originalUnit, finalUnit) {\n    if (originalUnit === void 0) { originalUnit = \"kilometers\"; }\n    if (finalUnit === void 0) { finalUnit = \"kilometers\"; }\n    if (!(length >= 0)) {\n        throw new Error(\"length must be a positive number\");\n    }\n    return radiansToLength(lengthToRadians(length, originalUnit), finalUnit);\n}\nexports.convertLength = convertLength;\n/**\n * Converts a area to the requested unit.\n * Valid units: kilometers, kilometres, meters, metres, centimetres, millimeters, acres, miles, yards, feet, inches, hectares\n * @param {number} area to be converted\n * @param {Units} [originalUnit=\"meters\"] of the distance\n * @param {Units} [finalUnit=\"kilometers\"] returned unit\n * @returns {number} the converted area\n */\nfunction convertArea(area, originalUnit, finalUnit) {\n    if (originalUnit === void 0) { originalUnit = \"meters\"; }\n    if (finalUnit === void 0) { finalUnit = \"kilometers\"; }\n    if (!(area >= 0)) {\n        throw new Error(\"area must be a positive number\");\n    }\n    var startFactor = exports.areaFactors[originalUnit];\n    if (!startFactor) {\n        throw new Error(\"invalid original units\");\n    }\n    var finalFactor = exports.areaFactors[finalUnit];\n    if (!finalFactor) {\n        throw new Error(\"invalid final units\");\n    }\n    return (area / startFactor) * finalFactor;\n}\nexports.convertArea = convertArea;\n/**\n * isNumber\n *\n * @param {*} num Number to validate\n * @returns {boolean} true/false\n * @example\n * turf.isNumber(123)\n * //=true\n * turf.isNumber('foo')\n * //=false\n */\nfunction isNumber(num) {\n    return !isNaN(num) && num !== null && !Array.isArray(num);\n}\nexports.isNumber = isNumber;\n/**\n * isObject\n *\n * @param {*} input variable to validate\n * @returns {boolean} true/false\n * @example\n * turf.isObject({elevation: 10})\n * //=true\n * turf.isObject('foo')\n * //=false\n */\nfunction isObject(input) {\n    return !!input && input.constructor === Object;\n}\nexports.isObject = isObject;\n/**\n * Validate BBox\n *\n * @private\n * @param {Array<number>} bbox BBox to validate\n * @returns {void}\n * @throws Error if BBox is not valid\n * @example\n * validateBBox([-180, -40, 110, 50])\n * //=OK\n * validateBBox([-180, -40])\n * //=Error\n * validateBBox('Foo')\n * //=Error\n * validateBBox(5)\n * //=Error\n * validateBBox(null)\n * //=Error\n * validateBBox(undefined)\n * //=Error\n */\nfunction validateBBox(bbox) {\n    if (!bbox) {\n        throw new Error(\"bbox is required\");\n    }\n    if (!Array.isArray(bbox)) {\n        throw new Error(\"bbox must be an Array\");\n    }\n    if (bbox.length !== 4 && bbox.length !== 6) {\n        throw new Error(\"bbox must be an Array of 4 or 6 numbers\");\n    }\n    bbox.forEach(function (num) {\n        if (!isNumber(num)) {\n            throw new Error(\"bbox must only contain numbers\");\n        }\n    });\n}\nexports.validateBBox = validateBBox;\n/**\n * Validate Id\n *\n * @private\n * @param {string|number} id Id to validate\n * @returns {void}\n * @throws Error if Id is not valid\n * @example\n * validateId([-180, -40, 110, 50])\n * //=Error\n * validateId([-180, -40])\n * //=Error\n * validateId('Foo')\n * //=OK\n * validateId(5)\n * //=OK\n * validateId(null)\n * //=Error\n * validateId(undefined)\n * //=Error\n */\nfunction validateId(id) {\n    if (!id) {\n        throw new Error(\"id is required\");\n    }\n    if ([\"string\", \"number\"].indexOf(typeof id) === -1) {\n        throw new Error(\"id must be a number or a string\");\n    }\n}\nexports.validateId = validateId;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar helpers_1 = require(\"@turf/helpers\");\n/**\n * Unwrap a coordinate from a Point Feature, Geometry or a single coordinate.\n *\n * @name getCoord\n * @param {Array<number>|Geometry<Point>|Feature<Point>} coord GeoJSON Point or an Array of numbers\n * @returns {Array<number>} coordinates\n * @example\n * var pt = turf.point([10, 10]);\n *\n * var coord = turf.getCoord(pt);\n * //= [10, 10]\n */\nfunction getCoord(coord) {\n    if (!coord) {\n        throw new Error(\"coord is required\");\n    }\n    if (!Array.isArray(coord)) {\n        if (coord.type === \"Feature\" &&\n            coord.geometry !== null &&\n            coord.geometry.type === \"Point\") {\n            return coord.geometry.coordinates;\n        }\n        if (coord.type === \"Point\") {\n            return coord.coordinates;\n        }\n    }\n    if (Array.isArray(coord) &&\n        coord.length >= 2 &&\n        !Array.isArray(coord[0]) &&\n        !Array.isArray(coord[1])) {\n        return coord;\n    }\n    throw new Error(\"coord must be GeoJSON Point or an Array of numbers\");\n}\nexports.getCoord = getCoord;\n/**\n * Unwrap coordinates from a Feature, Geometry Object or an Array\n *\n * @name getCoords\n * @param {Array<any>|Geometry|Feature} coords Feature, Geometry Object or an Array\n * @returns {Array<any>} coordinates\n * @example\n * var poly = turf.polygon([[[119.32, -8.7], [119.55, -8.69], [119.51, -8.54], [119.32, -8.7]]]);\n *\n * var coords = turf.getCoords(poly);\n * //= [[[119.32, -8.7], [119.55, -8.69], [119.51, -8.54], [119.32, -8.7]]]\n */\nfunction getCoords(coords) {\n    if (Array.isArray(coords)) {\n        return coords;\n    }\n    // Feature\n    if (coords.type === \"Feature\") {\n        if (coords.geometry !== null) {\n            return coords.geometry.coordinates;\n        }\n    }\n    else {\n        // Geometry\n        if (coords.coordinates) {\n            return coords.coordinates;\n        }\n    }\n    throw new Error(\"coords must be GeoJSON Feature, Geometry Object or an Array\");\n}\nexports.getCoords = getCoords;\n/**\n * Checks if coordinates contains a number\n *\n * @name containsNumber\n * @param {Array<any>} coordinates GeoJSON Coordinates\n * @returns {boolean} true if Array contains a number\n */\nfunction containsNumber(coordinates) {\n    if (coordinates.length > 1 &&\n        helpers_1.isNumber(coordinates[0]) &&\n        helpers_1.isNumber(coordinates[1])) {\n        return true;\n    }\n    if (Array.isArray(coordinates[0]) && coordinates[0].length) {\n        return containsNumber(coordinates[0]);\n    }\n    throw new Error(\"coordinates must only contain numbers\");\n}\nexports.containsNumber = containsNumber;\n/**\n * Enforce expectations about types of GeoJSON objects for Turf.\n *\n * @name geojsonType\n * @param {GeoJSON} value any GeoJSON object\n * @param {string} type expected GeoJSON type\n * @param {string} name name of calling function\n * @throws {Error} if value is not the expected type.\n */\nfunction geojsonType(value, type, name) {\n    if (!type || !name) {\n        throw new Error(\"type and name required\");\n    }\n    if (!value || value.type !== type) {\n        throw new Error(\"Invalid input to \" +\n            name +\n            \": must be a \" +\n            type +\n            \", given \" +\n            value.type);\n    }\n}\nexports.geojsonType = geojsonType;\n/**\n * Enforce expectations about types of {@link Feature} inputs for Turf.\n * Internally this uses {@link geojsonType} to judge geometry types.\n *\n * @name featureOf\n * @param {Feature} feature a feature with an expected geometry type\n * @param {string} type expected GeoJSON type\n * @param {string} name name of calling function\n * @throws {Error} error if value is not the expected type.\n */\nfunction featureOf(feature, type, name) {\n    if (!feature) {\n        throw new Error(\"No feature passed\");\n    }\n    if (!name) {\n        throw new Error(\".featureOf() requires a name\");\n    }\n    if (!feature || feature.type !== \"Feature\" || !feature.geometry) {\n        throw new Error(\"Invalid input to \" + name + \", Feature with geometry required\");\n    }\n    if (!feature.geometry || feature.geometry.type !== type) {\n        throw new Error(\"Invalid input to \" +\n            name +\n            \": must be a \" +\n            type +\n            \", given \" +\n            feature.geometry.type);\n    }\n}\nexports.featureOf = featureOf;\n/**\n * Enforce expectations about types of {@link FeatureCollection} inputs for Turf.\n * Internally this uses {@link geojsonType} to judge geometry types.\n *\n * @name collectionOf\n * @param {FeatureCollection} featureCollection a FeatureCollection for which features will be judged\n * @param {string} type expected GeoJSON type\n * @param {string} name name of calling function\n * @throws {Error} if value is not the expected type.\n */\nfunction collectionOf(featureCollection, type, name) {\n    if (!featureCollection) {\n        throw new Error(\"No featureCollection passed\");\n    }\n    if (!name) {\n        throw new Error(\".collectionOf() requires a name\");\n    }\n    if (!featureCollection || featureCollection.type !== \"FeatureCollection\") {\n        throw new Error(\"Invalid input to \" + name + \", FeatureCollection required\");\n    }\n    for (var _i = 0, _a = featureCollection.features; _i < _a.length; _i++) {\n        var feature = _a[_i];\n        if (!feature || feature.type !== \"Feature\" || !feature.geometry) {\n            throw new Error(\"Invalid input to \" + name + \", Feature with geometry required\");\n        }\n        if (!feature.geometry || feature.geometry.type !== type) {\n            throw new Error(\"Invalid input to \" +\n                name +\n                \": must be a \" +\n                type +\n                \", given \" +\n                feature.geometry.type);\n        }\n    }\n}\nexports.collectionOf = collectionOf;\n/**\n * Get Geometry from Feature or Geometry Object\n *\n * @param {Feature|Geometry} geojson GeoJSON Feature or Geometry Object\n * @returns {Geometry|null} GeoJSON Geometry Object\n * @throws {Error} if geojson is not a Feature or Geometry Object\n * @example\n * var point = {\n *   \"type\": \"Feature\",\n *   \"properties\": {},\n *   \"geometry\": {\n *     \"type\": \"Point\",\n *     \"coordinates\": [110, 40]\n *   }\n * }\n * var geom = turf.getGeom(point)\n * //={\"type\": \"Point\", \"coordinates\": [110, 40]}\n */\nfunction getGeom(geojson) {\n    if (geojson.type === \"Feature\") {\n        return geojson.geometry;\n    }\n    return geojson;\n}\nexports.getGeom = getGeom;\n/**\n * Get GeoJSON object's type, Geometry type is prioritize.\n *\n * @param {GeoJSON} geojson GeoJSON object\n * @param {string} [name=\"geojson\"] name of the variable to display in error message (unused)\n * @returns {string} GeoJSON type\n * @example\n * var point = {\n *   \"type\": \"Feature\",\n *   \"properties\": {},\n *   \"geometry\": {\n *     \"type\": \"Point\",\n *     \"coordinates\": [110, 40]\n *   }\n * }\n * var geom = turf.getType(point)\n * //=\"Point\"\n */\nfunction getType(geojson, _name) {\n    if (geojson.type === \"FeatureCollection\") {\n        return \"FeatureCollection\";\n    }\n    if (geojson.type === \"GeometryCollection\") {\n        return \"GeometryCollection\";\n    }\n    if (geojson.type === \"Feature\" && geojson.geometry !== null) {\n        return geojson.geometry.type;\n    }\n    return geojson.type;\n}\nexports.getType = getType;\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nvar helpers = require('@turf/helpers');\n\n/**\n * Callback for coordEach\n *\n * @callback coordEachCallback\n * @param {Array<number>} currentCoord The current coordinate being processed.\n * @param {number} coordIndex The current index of the coordinate being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n * @param {number} geometryIndex The current index of the Geometry being processed.\n */\n\n/**\n * Iterate over coordinates in any GeoJSON object, similar to Array.forEach()\n *\n * @name coordEach\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (currentCoord, coordIndex, featureIndex, multiFeatureIndex)\n * @param {boolean} [excludeWrapCoord=false] whether or not to include the final coordinate of LinearRings that wraps the ring in its iteration.\n * @returns {void}\n * @example\n * var features = turf.featureCollection([\n *   turf.point([26, 37], {\"foo\": \"bar\"}),\n *   turf.point([36, 53], {\"hello\": \"world\"})\n * ]);\n *\n * turf.coordEach(features, function (currentCoord, coordIndex, featureIndex, multiFeatureIndex, geometryIndex) {\n *   //=currentCoord\n *   //=coordIndex\n *   //=featureIndex\n *   //=multiFeatureIndex\n *   //=geometryIndex\n * });\n */\nfunction coordEach(geojson, callback, excludeWrapCoord) {\n  // Handles null Geometry -- Skips this GeoJSON\n  if (geojson === null) return;\n  var j,\n    k,\n    l,\n    geometry,\n    stopG,\n    coords,\n    geometryMaybeCollection,\n    wrapShrink = 0,\n    coordIndex = 0,\n    isGeometryCollection,\n    type = geojson.type,\n    isFeatureCollection = type === \"FeatureCollection\",\n    isFeature = type === \"Feature\",\n    stop = isFeatureCollection ? geojson.features.length : 1;\n\n  // This logic may look a little weird. The reason why it is that way\n  // is because it's trying to be fast. GeoJSON supports multiple kinds\n  // of objects at its root: FeatureCollection, Features, Geometries.\n  // This function has the responsibility of handling all of them, and that\n  // means that some of the `for` loops you see below actually just don't apply\n  // to certain inputs. For instance, if you give this just a\n  // Point geometry, then both loops are short-circuited and all we do\n  // is gradually rename the input until it's called 'geometry'.\n  //\n  // This also aims to allocate as few resources as possible: just a\n  // few numbers and booleans, rather than any temporary arrays as would\n  // be required with the normalization approach.\n  for (var featureIndex = 0; featureIndex < stop; featureIndex++) {\n    geometryMaybeCollection = isFeatureCollection\n      ? geojson.features[featureIndex].geometry\n      : isFeature\n      ? geojson.geometry\n      : geojson;\n    isGeometryCollection = geometryMaybeCollection\n      ? geometryMaybeCollection.type === \"GeometryCollection\"\n      : false;\n    stopG = isGeometryCollection\n      ? geometryMaybeCollection.geometries.length\n      : 1;\n\n    for (var geomIndex = 0; geomIndex < stopG; geomIndex++) {\n      var multiFeatureIndex = 0;\n      var geometryIndex = 0;\n      geometry = isGeometryCollection\n        ? geometryMaybeCollection.geometries[geomIndex]\n        : geometryMaybeCollection;\n\n      // Handles null Geometry -- Skips this geometry\n      if (geometry === null) continue;\n      coords = geometry.coordinates;\n      var geomType = geometry.type;\n\n      wrapShrink =\n        excludeWrapCoord &&\n        (geomType === \"Polygon\" || geomType === \"MultiPolygon\")\n          ? 1\n          : 0;\n\n      switch (geomType) {\n        case null:\n          break;\n        case \"Point\":\n          if (\n            callback(\n              coords,\n              coordIndex,\n              featureIndex,\n              multiFeatureIndex,\n              geometryIndex\n            ) === false\n          )\n            return false;\n          coordIndex++;\n          multiFeatureIndex++;\n          break;\n        case \"LineString\":\n        case \"MultiPoint\":\n          for (j = 0; j < coords.length; j++) {\n            if (\n              callback(\n                coords[j],\n                coordIndex,\n                featureIndex,\n                multiFeatureIndex,\n                geometryIndex\n              ) === false\n            )\n              return false;\n            coordIndex++;\n            if (geomType === \"MultiPoint\") multiFeatureIndex++;\n          }\n          if (geomType === \"LineString\") multiFeatureIndex++;\n          break;\n        case \"Polygon\":\n        case \"MultiLineString\":\n          for (j = 0; j < coords.length; j++) {\n            for (k = 0; k < coords[j].length - wrapShrink; k++) {\n              if (\n                callback(\n                  coords[j][k],\n                  coordIndex,\n                  featureIndex,\n                  multiFeatureIndex,\n                  geometryIndex\n                ) === false\n              )\n                return false;\n              coordIndex++;\n            }\n            if (geomType === \"MultiLineString\") multiFeatureIndex++;\n            if (geomType === \"Polygon\") geometryIndex++;\n          }\n          if (geomType === \"Polygon\") multiFeatureIndex++;\n          break;\n        case \"MultiPolygon\":\n          for (j = 0; j < coords.length; j++) {\n            geometryIndex = 0;\n            for (k = 0; k < coords[j].length; k++) {\n              for (l = 0; l < coords[j][k].length - wrapShrink; l++) {\n                if (\n                  callback(\n                    coords[j][k][l],\n                    coordIndex,\n                    featureIndex,\n                    multiFeatureIndex,\n                    geometryIndex\n                  ) === false\n                )\n                  return false;\n                coordIndex++;\n              }\n              geometryIndex++;\n            }\n            multiFeatureIndex++;\n          }\n          break;\n        case \"GeometryCollection\":\n          for (j = 0; j < geometry.geometries.length; j++)\n            if (\n              coordEach(geometry.geometries[j], callback, excludeWrapCoord) ===\n              false\n            )\n              return false;\n          break;\n        default:\n          throw new Error(\"Unknown Geometry Type\");\n      }\n    }\n  }\n}\n\n/**\n * Callback for coordReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n *  - The previousValue argument is initialValue.\n *  - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n *  - The previousValue argument is the value of the first element present in the array.\n *  - The currentValue argument is the value of the second element present in the array.\n *\n * @callback coordReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Array<number>} currentCoord The current coordinate being processed.\n * @param {number} coordIndex The current index of the coordinate being processed.\n * Starts at index 0, if an initialValue is provided, and at index 1 otherwise.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n * @param {number} geometryIndex The current index of the Geometry being processed.\n */\n\n/**\n * Reduce coordinates in any GeoJSON object, similar to Array.reduce()\n *\n * @name coordReduce\n * @param {FeatureCollection|Geometry|Feature} geojson any GeoJSON object\n * @param {Function} callback a method that takes (previousValue, currentCoord, coordIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @param {boolean} [excludeWrapCoord=false] whether or not to include the final coordinate of LinearRings that wraps the ring in its iteration.\n * @returns {*} The value that results from the reduction.\n * @example\n * var features = turf.featureCollection([\n *   turf.point([26, 37], {\"foo\": \"bar\"}),\n *   turf.point([36, 53], {\"hello\": \"world\"})\n * ]);\n *\n * turf.coordReduce(features, function (previousValue, currentCoord, coordIndex, featureIndex, multiFeatureIndex, geometryIndex) {\n *   //=previousValue\n *   //=currentCoord\n *   //=coordIndex\n *   //=featureIndex\n *   //=multiFeatureIndex\n *   //=geometryIndex\n *   return currentCoord;\n * });\n */\nfunction coordReduce(geojson, callback, initialValue, excludeWrapCoord) {\n  var previousValue = initialValue;\n  coordEach(\n    geojson,\n    function (\n      currentCoord,\n      coordIndex,\n      featureIndex,\n      multiFeatureIndex,\n      geometryIndex\n    ) {\n      if (coordIndex === 0 && initialValue === undefined)\n        previousValue = currentCoord;\n      else\n        previousValue = callback(\n          previousValue,\n          currentCoord,\n          coordIndex,\n          featureIndex,\n          multiFeatureIndex,\n          geometryIndex\n        );\n    },\n    excludeWrapCoord\n  );\n  return previousValue;\n}\n\n/**\n * Callback for propEach\n *\n * @callback propEachCallback\n * @param {Object} currentProperties The current Properties being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n */\n\n/**\n * Iterate over properties in any GeoJSON object, similar to Array.forEach()\n *\n * @name propEach\n * @param {FeatureCollection|Feature} geojson any GeoJSON object\n * @param {Function} callback a method that takes (currentProperties, featureIndex)\n * @returns {void}\n * @example\n * var features = turf.featureCollection([\n *     turf.point([26, 37], {foo: 'bar'}),\n *     turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * turf.propEach(features, function (currentProperties, featureIndex) {\n *   //=currentProperties\n *   //=featureIndex\n * });\n */\nfunction propEach(geojson, callback) {\n  var i;\n  switch (geojson.type) {\n    case \"FeatureCollection\":\n      for (i = 0; i < geojson.features.length; i++) {\n        if (callback(geojson.features[i].properties, i) === false) break;\n      }\n      break;\n    case \"Feature\":\n      callback(geojson.properties, 0);\n      break;\n  }\n}\n\n/**\n * Callback for propReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n *  - The previousValue argument is initialValue.\n *  - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n *  - The previousValue argument is the value of the first element present in the array.\n *  - The currentValue argument is the value of the second element present in the array.\n *\n * @callback propReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {*} currentProperties The current Properties being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n */\n\n/**\n * Reduce properties in any GeoJSON object into a single value,\n * similar to how Array.reduce works. However, in this case we lazily run\n * the reduction, so an array of all properties is unnecessary.\n *\n * @name propReduce\n * @param {FeatureCollection|Feature} geojson any GeoJSON object\n * @param {Function} callback a method that takes (previousValue, currentProperties, featureIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {*} The value that results from the reduction.\n * @example\n * var features = turf.featureCollection([\n *     turf.point([26, 37], {foo: 'bar'}),\n *     turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * turf.propReduce(features, function (previousValue, currentProperties, featureIndex) {\n *   //=previousValue\n *   //=currentProperties\n *   //=featureIndex\n *   return currentProperties\n * });\n */\nfunction propReduce(geojson, callback, initialValue) {\n  var previousValue = initialValue;\n  propEach(geojson, function (currentProperties, featureIndex) {\n    if (featureIndex === 0 && initialValue === undefined)\n      previousValue = currentProperties;\n    else\n      previousValue = callback(previousValue, currentProperties, featureIndex);\n  });\n  return previousValue;\n}\n\n/**\n * Callback for featureEach\n *\n * @callback featureEachCallback\n * @param {Feature<any>} currentFeature The current Feature being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n */\n\n/**\n * Iterate over features in any GeoJSON object, similar to\n * Array.forEach.\n *\n * @name featureEach\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (currentFeature, featureIndex)\n * @returns {void}\n * @example\n * var features = turf.featureCollection([\n *   turf.point([26, 37], {foo: 'bar'}),\n *   turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * turf.featureEach(features, function (currentFeature, featureIndex) {\n *   //=currentFeature\n *   //=featureIndex\n * });\n */\nfunction featureEach(geojson, callback) {\n  if (geojson.type === \"Feature\") {\n    callback(geojson, 0);\n  } else if (geojson.type === \"FeatureCollection\") {\n    for (var i = 0; i < geojson.features.length; i++) {\n      if (callback(geojson.features[i], i) === false) break;\n    }\n  }\n}\n\n/**\n * Callback for featureReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n *  - The previousValue argument is initialValue.\n *  - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n *  - The previousValue argument is the value of the first element present in the array.\n *  - The currentValue argument is the value of the second element present in the array.\n *\n * @callback featureReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Feature} currentFeature The current Feature being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n */\n\n/**\n * Reduce features in any GeoJSON object, similar to Array.reduce().\n *\n * @name featureReduce\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (previousValue, currentFeature, featureIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {*} The value that results from the reduction.\n * @example\n * var features = turf.featureCollection([\n *   turf.point([26, 37], {\"foo\": \"bar\"}),\n *   turf.point([36, 53], {\"hello\": \"world\"})\n * ]);\n *\n * turf.featureReduce(features, function (previousValue, currentFeature, featureIndex) {\n *   //=previousValue\n *   //=currentFeature\n *   //=featureIndex\n *   return currentFeature\n * });\n */\nfunction featureReduce(geojson, callback, initialValue) {\n  var previousValue = initialValue;\n  featureEach(geojson, function (currentFeature, featureIndex) {\n    if (featureIndex === 0 && initialValue === undefined)\n      previousValue = currentFeature;\n    else previousValue = callback(previousValue, currentFeature, featureIndex);\n  });\n  return previousValue;\n}\n\n/**\n * Get all coordinates from any GeoJSON object.\n *\n * @name coordAll\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @returns {Array<Array<number>>} coordinate position array\n * @example\n * var features = turf.featureCollection([\n *   turf.point([26, 37], {foo: 'bar'}),\n *   turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * var coords = turf.coordAll(features);\n * //= [[26, 37], [36, 53]]\n */\nfunction coordAll(geojson) {\n  var coords = [];\n  coordEach(geojson, function (coord) {\n    coords.push(coord);\n  });\n  return coords;\n}\n\n/**\n * Callback for geomEach\n *\n * @callback geomEachCallback\n * @param {Geometry} currentGeometry The current Geometry being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {Object} featureProperties The current Feature Properties being processed.\n * @param {Array<number>} featureBBox The current Feature BBox being processed.\n * @param {number|string} featureId The current Feature Id being processed.\n */\n\n/**\n * Iterate over each geometry in any GeoJSON object, similar to Array.forEach()\n *\n * @name geomEach\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (currentGeometry, featureIndex, featureProperties, featureBBox, featureId)\n * @returns {void}\n * @example\n * var features = turf.featureCollection([\n *     turf.point([26, 37], {foo: 'bar'}),\n *     turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * turf.geomEach(features, function (currentGeometry, featureIndex, featureProperties, featureBBox, featureId) {\n *   //=currentGeometry\n *   //=featureIndex\n *   //=featureProperties\n *   //=featureBBox\n *   //=featureId\n * });\n */\nfunction geomEach(geojson, callback) {\n  var i,\n    j,\n    g,\n    geometry,\n    stopG,\n    geometryMaybeCollection,\n    isGeometryCollection,\n    featureProperties,\n    featureBBox,\n    featureId,\n    featureIndex = 0,\n    isFeatureCollection = geojson.type === \"FeatureCollection\",\n    isFeature = geojson.type === \"Feature\",\n    stop = isFeatureCollection ? geojson.features.length : 1;\n\n  // This logic may look a little weird. The reason why it is that way\n  // is because it's trying to be fast. GeoJSON supports multiple kinds\n  // of objects at its root: FeatureCollection, Features, Geometries.\n  // This function has the responsibility of handling all of them, and that\n  // means that some of the `for` loops you see below actually just don't apply\n  // to certain inputs. For instance, if you give this just a\n  // Point geometry, then both loops are short-circuited and all we do\n  // is gradually rename the input until it's called 'geometry'.\n  //\n  // This also aims to allocate as few resources as possible: just a\n  // few numbers and booleans, rather than any temporary arrays as would\n  // be required with the normalization approach.\n  for (i = 0; i < stop; i++) {\n    geometryMaybeCollection = isFeatureCollection\n      ? geojson.features[i].geometry\n      : isFeature\n      ? geojson.geometry\n      : geojson;\n    featureProperties = isFeatureCollection\n      ? geojson.features[i].properties\n      : isFeature\n      ? geojson.properties\n      : {};\n    featureBBox = isFeatureCollection\n      ? geojson.features[i].bbox\n      : isFeature\n      ? geojson.bbox\n      : undefined;\n    featureId = isFeatureCollection\n      ? geojson.features[i].id\n      : isFeature\n      ? geojson.id\n      : undefined;\n    isGeometryCollection = geometryMaybeCollection\n      ? geometryMaybeCollection.type === \"GeometryCollection\"\n      : false;\n    stopG = isGeometryCollection\n      ? geometryMaybeCollection.geometries.length\n      : 1;\n\n    for (g = 0; g < stopG; g++) {\n      geometry = isGeometryCollection\n        ? geometryMaybeCollection.geometries[g]\n        : geometryMaybeCollection;\n\n      // Handle null Geometry\n      if (geometry === null) {\n        if (\n          callback(\n            null,\n            featureIndex,\n            featureProperties,\n            featureBBox,\n            featureId\n          ) === false\n        )\n          return false;\n        continue;\n      }\n      switch (geometry.type) {\n        case \"Point\":\n        case \"LineString\":\n        case \"MultiPoint\":\n        case \"Polygon\":\n        case \"MultiLineString\":\n        case \"MultiPolygon\": {\n          if (\n            callback(\n              geometry,\n              featureIndex,\n              featureProperties,\n              featureBBox,\n              featureId\n            ) === false\n          )\n            return false;\n          break;\n        }\n        case \"GeometryCollection\": {\n          for (j = 0; j < geometry.geometries.length; j++) {\n            if (\n              callback(\n                geometry.geometries[j],\n                featureIndex,\n                featureProperties,\n                featureBBox,\n                featureId\n              ) === false\n            )\n              return false;\n          }\n          break;\n        }\n        default:\n          throw new Error(\"Unknown Geometry Type\");\n      }\n    }\n    // Only increase `featureIndex` per each feature\n    featureIndex++;\n  }\n}\n\n/**\n * Callback for geomReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n *  - The previousValue argument is initialValue.\n *  - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n *  - The previousValue argument is the value of the first element present in the array.\n *  - The currentValue argument is the value of the second element present in the array.\n *\n * @callback geomReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Geometry} currentGeometry The current Geometry being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {Object} featureProperties The current Feature Properties being processed.\n * @param {Array<number>} featureBBox The current Feature BBox being processed.\n * @param {number|string} featureId The current Feature Id being processed.\n */\n\n/**\n * Reduce geometry in any GeoJSON object, similar to Array.reduce().\n *\n * @name geomReduce\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (previousValue, currentGeometry, featureIndex, featureProperties, featureBBox, featureId)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {*} The value that results from the reduction.\n * @example\n * var features = turf.featureCollection([\n *     turf.point([26, 37], {foo: 'bar'}),\n *     turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * turf.geomReduce(features, function (previousValue, currentGeometry, featureIndex, featureProperties, featureBBox, featureId) {\n *   //=previousValue\n *   //=currentGeometry\n *   //=featureIndex\n *   //=featureProperties\n *   //=featureBBox\n *   //=featureId\n *   return currentGeometry\n * });\n */\nfunction geomReduce(geojson, callback, initialValue) {\n  var previousValue = initialValue;\n  geomEach(\n    geojson,\n    function (\n      currentGeometry,\n      featureIndex,\n      featureProperties,\n      featureBBox,\n      featureId\n    ) {\n      if (featureIndex === 0 && initialValue === undefined)\n        previousValue = currentGeometry;\n      else\n        previousValue = callback(\n          previousValue,\n          currentGeometry,\n          featureIndex,\n          featureProperties,\n          featureBBox,\n          featureId\n        );\n    }\n  );\n  return previousValue;\n}\n\n/**\n * Callback for flattenEach\n *\n * @callback flattenEachCallback\n * @param {Feature} currentFeature The current flattened feature being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n */\n\n/**\n * Iterate over flattened features in any GeoJSON object, similar to\n * Array.forEach.\n *\n * @name flattenEach\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (currentFeature, featureIndex, multiFeatureIndex)\n * @example\n * var features = turf.featureCollection([\n *     turf.point([26, 37], {foo: 'bar'}),\n *     turf.multiPoint([[40, 30], [36, 53]], {hello: 'world'})\n * ]);\n *\n * turf.flattenEach(features, function (currentFeature, featureIndex, multiFeatureIndex) {\n *   //=currentFeature\n *   //=featureIndex\n *   //=multiFeatureIndex\n * });\n */\nfunction flattenEach(geojson, callback) {\n  geomEach(geojson, function (geometry, featureIndex, properties, bbox, id) {\n    // Callback for single geometry\n    var type = geometry === null ? null : geometry.type;\n    switch (type) {\n      case null:\n      case \"Point\":\n      case \"LineString\":\n      case \"Polygon\":\n        if (\n          callback(\n            helpers.feature(geometry, properties, { bbox: bbox, id: id }),\n            featureIndex,\n            0\n          ) === false\n        )\n          return false;\n        return;\n    }\n\n    var geomType;\n\n    // Callback for multi-geometry\n    switch (type) {\n      case \"MultiPoint\":\n        geomType = \"Point\";\n        break;\n      case \"MultiLineString\":\n        geomType = \"LineString\";\n        break;\n      case \"MultiPolygon\":\n        geomType = \"Polygon\";\n        break;\n    }\n\n    for (\n      var multiFeatureIndex = 0;\n      multiFeatureIndex < geometry.coordinates.length;\n      multiFeatureIndex++\n    ) {\n      var coordinate = geometry.coordinates[multiFeatureIndex];\n      var geom = {\n        type: geomType,\n        coordinates: coordinate,\n      };\n      if (\n        callback(helpers.feature(geom, properties), featureIndex, multiFeatureIndex) ===\n        false\n      )\n        return false;\n    }\n  });\n}\n\n/**\n * Callback for flattenReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n *  - The previousValue argument is initialValue.\n *  - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n *  - The previousValue argument is the value of the first element present in the array.\n *  - The currentValue argument is the value of the second element present in the array.\n *\n * @callback flattenReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Feature} currentFeature The current Feature being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n */\n\n/**\n * Reduce flattened features in any GeoJSON object, similar to Array.reduce().\n *\n * @name flattenReduce\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (previousValue, currentFeature, featureIndex, multiFeatureIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {*} The value that results from the reduction.\n * @example\n * var features = turf.featureCollection([\n *     turf.point([26, 37], {foo: 'bar'}),\n *     turf.multiPoint([[40, 30], [36, 53]], {hello: 'world'})\n * ]);\n *\n * turf.flattenReduce(features, function (previousValue, currentFeature, featureIndex, multiFeatureIndex) {\n *   //=previousValue\n *   //=currentFeature\n *   //=featureIndex\n *   //=multiFeatureIndex\n *   return currentFeature\n * });\n */\nfunction flattenReduce(geojson, callback, initialValue) {\n  var previousValue = initialValue;\n  flattenEach(\n    geojson,\n    function (currentFeature, featureIndex, multiFeatureIndex) {\n      if (\n        featureIndex === 0 &&\n        multiFeatureIndex === 0 &&\n        initialValue === undefined\n      )\n        previousValue = currentFeature;\n      else\n        previousValue = callback(\n          previousValue,\n          currentFeature,\n          featureIndex,\n          multiFeatureIndex\n        );\n    }\n  );\n  return previousValue;\n}\n\n/**\n * Callback for segmentEach\n *\n * @callback segmentEachCallback\n * @param {Feature<LineString>} currentSegment The current Segment being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n * @param {number} geometryIndex The current index of the Geometry being processed.\n * @param {number} segmentIndex The current index of the Segment being processed.\n * @returns {void}\n */\n\n/**\n * Iterate over 2-vertex line segment in any GeoJSON object, similar to Array.forEach()\n * (Multi)Point geometries do not contain segments therefore they are ignored during this operation.\n *\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON\n * @param {Function} callback a method that takes (currentSegment, featureIndex, multiFeatureIndex, geometryIndex, segmentIndex)\n * @returns {void}\n * @example\n * var polygon = turf.polygon([[[-50, 5], [-40, -10], [-50, -10], [-40, 5], [-50, 5]]]);\n *\n * // Iterate over GeoJSON by 2-vertex segments\n * turf.segmentEach(polygon, function (currentSegment, featureIndex, multiFeatureIndex, geometryIndex, segmentIndex) {\n *   //=currentSegment\n *   //=featureIndex\n *   //=multiFeatureIndex\n *   //=geometryIndex\n *   //=segmentIndex\n * });\n *\n * // Calculate the total number of segments\n * var total = 0;\n * turf.segmentEach(polygon, function () {\n *     total++;\n * });\n */\nfunction segmentEach(geojson, callback) {\n  flattenEach(geojson, function (feature, featureIndex, multiFeatureIndex) {\n    var segmentIndex = 0;\n\n    // Exclude null Geometries\n    if (!feature.geometry) return;\n    // (Multi)Point geometries do not contain segments therefore they are ignored during this operation.\n    var type = feature.geometry.type;\n    if (type === \"Point\" || type === \"MultiPoint\") return;\n\n    // Generate 2-vertex line segments\n    var previousCoords;\n    var previousFeatureIndex = 0;\n    var previousMultiIndex = 0;\n    var prevGeomIndex = 0;\n    if (\n      coordEach(\n        feature,\n        function (\n          currentCoord,\n          coordIndex,\n          featureIndexCoord,\n          multiPartIndexCoord,\n          geometryIndex\n        ) {\n          // Simulating a meta.coordReduce() since `reduce` operations cannot be stopped by returning `false`\n          if (\n            previousCoords === undefined ||\n            featureIndex > previousFeatureIndex ||\n            multiPartIndexCoord > previousMultiIndex ||\n            geometryIndex > prevGeomIndex\n          ) {\n            previousCoords = currentCoord;\n            previousFeatureIndex = featureIndex;\n            previousMultiIndex = multiPartIndexCoord;\n            prevGeomIndex = geometryIndex;\n            segmentIndex = 0;\n            return;\n          }\n          var currentSegment = helpers.lineString(\n            [previousCoords, currentCoord],\n            feature.properties\n          );\n          if (\n            callback(\n              currentSegment,\n              featureIndex,\n              multiFeatureIndex,\n              geometryIndex,\n              segmentIndex\n            ) === false\n          )\n            return false;\n          segmentIndex++;\n          previousCoords = currentCoord;\n        }\n      ) === false\n    )\n      return false;\n  });\n}\n\n/**\n * Callback for segmentReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n *  - The previousValue argument is initialValue.\n *  - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n *  - The previousValue argument is the value of the first element present in the array.\n *  - The currentValue argument is the value of the second element present in the array.\n *\n * @callback segmentReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Feature<LineString>} currentSegment The current Segment being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n * @param {number} geometryIndex The current index of the Geometry being processed.\n * @param {number} segmentIndex The current index of the Segment being processed.\n */\n\n/**\n * Reduce 2-vertex line segment in any GeoJSON object, similar to Array.reduce()\n * (Multi)Point geometries do not contain segments therefore they are ignored during this operation.\n *\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON\n * @param {Function} callback a method that takes (previousValue, currentSegment, currentIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {void}\n * @example\n * var polygon = turf.polygon([[[-50, 5], [-40, -10], [-50, -10], [-40, 5], [-50, 5]]]);\n *\n * // Iterate over GeoJSON by 2-vertex segments\n * turf.segmentReduce(polygon, function (previousSegment, currentSegment, featureIndex, multiFeatureIndex, geometryIndex, segmentIndex) {\n *   //= previousSegment\n *   //= currentSegment\n *   //= featureIndex\n *   //= multiFeatureIndex\n *   //= geometryIndex\n *   //= segmentIndex\n *   return currentSegment\n * });\n *\n * // Calculate the total number of segments\n * var initialValue = 0\n * var total = turf.segmentReduce(polygon, function (previousValue) {\n *     previousValue++;\n *     return previousValue;\n * }, initialValue);\n */\nfunction segmentReduce(geojson, callback, initialValue) {\n  var previousValue = initialValue;\n  var started = false;\n  segmentEach(\n    geojson,\n    function (\n      currentSegment,\n      featureIndex,\n      multiFeatureIndex,\n      geometryIndex,\n      segmentIndex\n    ) {\n      if (started === false && initialValue === undefined)\n        previousValue = currentSegment;\n      else\n        previousValue = callback(\n          previousValue,\n          currentSegment,\n          featureIndex,\n          multiFeatureIndex,\n          geometryIndex,\n          segmentIndex\n        );\n      started = true;\n    }\n  );\n  return previousValue;\n}\n\n/**\n * Callback for lineEach\n *\n * @callback lineEachCallback\n * @param {Feature<LineString>} currentLine The current LineString|LinearRing being processed\n * @param {number} featureIndex The current index of the Feature being processed\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed\n * @param {number} geometryIndex The current index of the Geometry being processed\n */\n\n/**\n * Iterate over line or ring coordinates in LineString, Polygon, MultiLineString, MultiPolygon Features or Geometries,\n * similar to Array.forEach.\n *\n * @name lineEach\n * @param {Geometry|Feature<LineString|Polygon|MultiLineString|MultiPolygon>} geojson object\n * @param {Function} callback a method that takes (currentLine, featureIndex, multiFeatureIndex, geometryIndex)\n * @example\n * var multiLine = turf.multiLineString([\n *   [[26, 37], [35, 45]],\n *   [[36, 53], [38, 50], [41, 55]]\n * ]);\n *\n * turf.lineEach(multiLine, function (currentLine, featureIndex, multiFeatureIndex, geometryIndex) {\n *   //=currentLine\n *   //=featureIndex\n *   //=multiFeatureIndex\n *   //=geometryIndex\n * });\n */\nfunction lineEach(geojson, callback) {\n  // validation\n  if (!geojson) throw new Error(\"geojson is required\");\n\n  flattenEach(geojson, function (feature, featureIndex, multiFeatureIndex) {\n    if (feature.geometry === null) return;\n    var type = feature.geometry.type;\n    var coords = feature.geometry.coordinates;\n    switch (type) {\n      case \"LineString\":\n        if (callback(feature, featureIndex, multiFeatureIndex, 0, 0) === false)\n          return false;\n        break;\n      case \"Polygon\":\n        for (\n          var geometryIndex = 0;\n          geometryIndex < coords.length;\n          geometryIndex++\n        ) {\n          if (\n            callback(\n              helpers.lineString(coords[geometryIndex], feature.properties),\n              featureIndex,\n              multiFeatureIndex,\n              geometryIndex\n            ) === false\n          )\n            return false;\n        }\n        break;\n    }\n  });\n}\n\n/**\n * Callback for lineReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n *  - The previousValue argument is initialValue.\n *  - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n *  - The previousValue argument is the value of the first element present in the array.\n *  - The currentValue argument is the value of the second element present in the array.\n *\n * @callback lineReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Feature<LineString>} currentLine The current LineString|LinearRing being processed.\n * @param {number} featureIndex The current index of the Feature being processed\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed\n * @param {number} geometryIndex The current index of the Geometry being processed\n */\n\n/**\n * Reduce features in any GeoJSON object, similar to Array.reduce().\n *\n * @name lineReduce\n * @param {Geometry|Feature<LineString|Polygon|MultiLineString|MultiPolygon>} geojson object\n * @param {Function} callback a method that takes (previousValue, currentLine, featureIndex, multiFeatureIndex, geometryIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {*} The value that results from the reduction.\n * @example\n * var multiPoly = turf.multiPolygon([\n *   turf.polygon([[[12,48],[2,41],[24,38],[12,48]], [[9,44],[13,41],[13,45],[9,44]]]),\n *   turf.polygon([[[5, 5], [0, 0], [2, 2], [4, 4], [5, 5]]])\n * ]);\n *\n * turf.lineReduce(multiPoly, function (previousValue, currentLine, featureIndex, multiFeatureIndex, geometryIndex) {\n *   //=previousValue\n *   //=currentLine\n *   //=featureIndex\n *   //=multiFeatureIndex\n *   //=geometryIndex\n *   return currentLine\n * });\n */\nfunction lineReduce(geojson, callback, initialValue) {\n  var previousValue = initialValue;\n  lineEach(\n    geojson,\n    function (currentLine, featureIndex, multiFeatureIndex, geometryIndex) {\n      if (featureIndex === 0 && initialValue === undefined)\n        previousValue = currentLine;\n      else\n        previousValue = callback(\n          previousValue,\n          currentLine,\n          featureIndex,\n          multiFeatureIndex,\n          geometryIndex\n        );\n    }\n  );\n  return previousValue;\n}\n\n/**\n * Finds a particular 2-vertex LineString Segment from a GeoJSON using `@turf/meta` indexes.\n *\n * Negative indexes are permitted.\n * Point & MultiPoint will always return null.\n *\n * @param {FeatureCollection|Feature|Geometry} geojson Any GeoJSON Feature or Geometry\n * @param {Object} [options={}] Optional parameters\n * @param {number} [options.featureIndex=0] Feature Index\n * @param {number} [options.multiFeatureIndex=0] Multi-Feature Index\n * @param {number} [options.geometryIndex=0] Geometry Index\n * @param {number} [options.segmentIndex=0] Segment Index\n * @param {Object} [options.properties={}] Translate Properties to output LineString\n * @param {BBox} [options.bbox={}] Translate BBox to output LineString\n * @param {number|string} [options.id={}] Translate Id to output LineString\n * @returns {Feature<LineString>} 2-vertex GeoJSON Feature LineString\n * @example\n * var multiLine = turf.multiLineString([\n *     [[10, 10], [50, 30], [30, 40]],\n *     [[-10, -10], [-50, -30], [-30, -40]]\n * ]);\n *\n * // First Segment (defaults are 0)\n * turf.findSegment(multiLine);\n * // => Feature<LineString<[[10, 10], [50, 30]]>>\n *\n * // First Segment of 2nd Multi Feature\n * turf.findSegment(multiLine, {multiFeatureIndex: 1});\n * // => Feature<LineString<[[-10, -10], [-50, -30]]>>\n *\n * // Last Segment of Last Multi Feature\n * turf.findSegment(multiLine, {multiFeatureIndex: -1, segmentIndex: -1});\n * // => Feature<LineString<[[-50, -30], [-30, -40]]>>\n */\nfunction findSegment(geojson, options) {\n  // Optional Parameters\n  options = options || {};\n  if (!helpers.isObject(options)) throw new Error(\"options is invalid\");\n  var featureIndex = options.featureIndex || 0;\n  var multiFeatureIndex = options.multiFeatureIndex || 0;\n  var geometryIndex = options.geometryIndex || 0;\n  var segmentIndex = options.segmentIndex || 0;\n\n  // Find FeatureIndex\n  var properties = options.properties;\n  var geometry;\n\n  switch (geojson.type) {\n    case \"FeatureCollection\":\n      if (featureIndex < 0)\n        featureIndex = geojson.features.length + featureIndex;\n      properties = properties || geojson.features[featureIndex].properties;\n      geometry = geojson.features[featureIndex].geometry;\n      break;\n    case \"Feature\":\n      properties = properties || geojson.properties;\n      geometry = geojson.geometry;\n      break;\n    case \"Point\":\n    case \"MultiPoint\":\n      return null;\n    case \"LineString\":\n    case \"Polygon\":\n    case \"MultiLineString\":\n    case \"MultiPolygon\":\n      geometry = geojson;\n      break;\n    default:\n      throw new Error(\"geojson is invalid\");\n  }\n\n  // Find SegmentIndex\n  if (geometry === null) return null;\n  var coords = geometry.coordinates;\n  switch (geometry.type) {\n    case \"Point\":\n    case \"MultiPoint\":\n      return null;\n    case \"LineString\":\n      if (segmentIndex < 0) segmentIndex = coords.length + segmentIndex - 1;\n      return helpers.lineString(\n        [coords[segmentIndex], coords[segmentIndex + 1]],\n        properties,\n        options\n      );\n    case \"Polygon\":\n      if (geometryIndex < 0) geometryIndex = coords.length + geometryIndex;\n      if (segmentIndex < 0)\n        segmentIndex = coords[geometryIndex].length + segmentIndex - 1;\n      return helpers.lineString(\n        [\n          coords[geometryIndex][segmentIndex],\n          coords[geometryIndex][segmentIndex + 1],\n        ],\n        properties,\n        options\n      );\n    case \"MultiLineString\":\n      if (multiFeatureIndex < 0)\n        multiFeatureIndex = coords.length + multiFeatureIndex;\n      if (segmentIndex < 0)\n        segmentIndex = coords[multiFeatureIndex].length + segmentIndex - 1;\n      return helpers.lineString(\n        [\n          coords[multiFeatureIndex][segmentIndex],\n          coords[multiFeatureIndex][segmentIndex + 1],\n        ],\n        properties,\n        options\n      );\n    case \"MultiPolygon\":\n      if (multiFeatureIndex < 0)\n        multiFeatureIndex = coords.length + multiFeatureIndex;\n      if (geometryIndex < 0)\n        geometryIndex = coords[multiFeatureIndex].length + geometryIndex;\n      if (segmentIndex < 0)\n        segmentIndex =\n          coords[multiFeatureIndex][geometryIndex].length - segmentIndex - 1;\n      return helpers.lineString(\n        [\n          coords[multiFeatureIndex][geometryIndex][segmentIndex],\n          coords[multiFeatureIndex][geometryIndex][segmentIndex + 1],\n        ],\n        properties,\n        options\n      );\n  }\n  throw new Error(\"geojson is invalid\");\n}\n\n/**\n * Finds a particular Point from a GeoJSON using `@turf/meta` indexes.\n *\n * Negative indexes are permitted.\n *\n * @param {FeatureCollection|Feature|Geometry} geojson Any GeoJSON Feature or Geometry\n * @param {Object} [options={}] Optional parameters\n * @param {number} [options.featureIndex=0] Feature Index\n * @param {number} [options.multiFeatureIndex=0] Multi-Feature Index\n * @param {number} [options.geometryIndex=0] Geometry Index\n * @param {number} [options.coordIndex=0] Coord Index\n * @param {Object} [options.properties={}] Translate Properties to output Point\n * @param {BBox} [options.bbox={}] Translate BBox to output Point\n * @param {number|string} [options.id={}] Translate Id to output Point\n * @returns {Feature<Point>} 2-vertex GeoJSON Feature Point\n * @example\n * var multiLine = turf.multiLineString([\n *     [[10, 10], [50, 30], [30, 40]],\n *     [[-10, -10], [-50, -30], [-30, -40]]\n * ]);\n *\n * // First Segment (defaults are 0)\n * turf.findPoint(multiLine);\n * // => Feature<Point<[10, 10]>>\n *\n * // First Segment of the 2nd Multi-Feature\n * turf.findPoint(multiLine, {multiFeatureIndex: 1});\n * // => Feature<Point<[-10, -10]>>\n *\n * // Last Segment of last Multi-Feature\n * turf.findPoint(multiLine, {multiFeatureIndex: -1, coordIndex: -1});\n * // => Feature<Point<[-30, -40]>>\n */\nfunction findPoint(geojson, options) {\n  // Optional Parameters\n  options = options || {};\n  if (!helpers.isObject(options)) throw new Error(\"options is invalid\");\n  var featureIndex = options.featureIndex || 0;\n  var multiFeatureIndex = options.multiFeatureIndex || 0;\n  var geometryIndex = options.geometryIndex || 0;\n  var coordIndex = options.coordIndex || 0;\n\n  // Find FeatureIndex\n  var properties = options.properties;\n  var geometry;\n\n  switch (geojson.type) {\n    case \"FeatureCollection\":\n      if (featureIndex < 0)\n        featureIndex = geojson.features.length + featureIndex;\n      properties = properties || geojson.features[featureIndex].properties;\n      geometry = geojson.features[featureIndex].geometry;\n      break;\n    case \"Feature\":\n      properties = properties || geojson.properties;\n      geometry = geojson.geometry;\n      break;\n    case \"Point\":\n    case \"MultiPoint\":\n      return null;\n    case \"LineString\":\n    case \"Polygon\":\n    case \"MultiLineString\":\n    case \"MultiPolygon\":\n      geometry = geojson;\n      break;\n    default:\n      throw new Error(\"geojson is invalid\");\n  }\n\n  // Find Coord Index\n  if (geometry === null) return null;\n  var coords = geometry.coordinates;\n  switch (geometry.type) {\n    case \"Point\":\n      return helpers.point(coords, properties, options);\n    case \"MultiPoint\":\n      if (multiFeatureIndex < 0)\n        multiFeatureIndex = coords.length + multiFeatureIndex;\n      return helpers.point(coords[multiFeatureIndex], properties, options);\n    case \"LineString\":\n      if (coordIndex < 0) coordIndex = coords.length + coordIndex;\n      return helpers.point(coords[coordIndex], properties, options);\n    case \"Polygon\":\n      if (geometryIndex < 0) geometryIndex = coords.length + geometryIndex;\n      if (coordIndex < 0)\n        coordIndex = coords[geometryIndex].length + coordIndex;\n      return helpers.point(coords[geometryIndex][coordIndex], properties, options);\n    case \"MultiLineString\":\n      if (multiFeatureIndex < 0)\n        multiFeatureIndex = coords.length + multiFeatureIndex;\n      if (coordIndex < 0)\n        coordIndex = coords[multiFeatureIndex].length + coordIndex;\n      return helpers.point(coords[multiFeatureIndex][coordIndex], properties, options);\n    case \"MultiPolygon\":\n      if (multiFeatureIndex < 0)\n        multiFeatureIndex = coords.length + multiFeatureIndex;\n      if (geometryIndex < 0)\n        geometryIndex = coords[multiFeatureIndex].length + geometryIndex;\n      if (coordIndex < 0)\n        coordIndex =\n          coords[multiFeatureIndex][geometryIndex].length - coordIndex;\n      return helpers.point(\n        coords[multiFeatureIndex][geometryIndex][coordIndex],\n        properties,\n        options\n      );\n  }\n  throw new Error(\"geojson is invalid\");\n}\n\nexports.coordAll = coordAll;\nexports.coordEach = coordEach;\nexports.coordReduce = coordReduce;\nexports.featureEach = featureEach;\nexports.featureReduce = featureReduce;\nexports.findPoint = findPoint;\nexports.findSegment = findSegment;\nexports.flattenEach = flattenEach;\nexports.flattenReduce = flattenReduce;\nexports.geomEach = geomEach;\nexports.geomReduce = geomReduce;\nexports.lineEach = lineEach;\nexports.lineReduce = lineReduce;\nexports.propEach = propEach;\nexports.propReduce = propReduce;\nexports.segmentEach = segmentEach;\nexports.segmentReduce = segmentReduce;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar helpers_1 = require(\"@turf/helpers\");\nvar invariant_1 = require(\"@turf/invariant\");\nvar meta_1 = require(\"@turf/meta\");\n/**\n * Creates a {@link FeatureCollection} of 2-vertex {@link LineString} segments from a\n * {@link LineString|(Multi)LineString} or {@link Polygon|(Multi)Polygon}.\n *\n * @name lineSegment\n * @param {GeoJSON} geojson GeoJSON Polygon or LineString\n * @returns {FeatureCollection<LineString>} 2-vertex line segments\n * @example\n * var polygon = turf.polygon([[[-50, 5], [-40, -10], [-50, -10], [-40, 5], [-50, 5]]]);\n * var segments = turf.lineSegment(polygon);\n *\n * //addToMap\n * var addToMap = [polygon, segments]\n */\nfunction lineSegment(geojson) {\n    if (!geojson) {\n        throw new Error(\"geojson is required\");\n    }\n    var results = [];\n    meta_1.flattenEach(geojson, function (feature) {\n        lineSegmentFeature(feature, results);\n    });\n    return helpers_1.featureCollection(results);\n}\n/**\n * Line Segment\n *\n * @private\n * @param {Feature<LineString|Polygon>} geojson Line or polygon feature\n * @param {Array} results push to results\n * @returns {void}\n */\nfunction lineSegmentFeature(geojson, results) {\n    var coords = [];\n    var geometry = geojson.geometry;\n    if (geometry !== null) {\n        switch (geometry.type) {\n            case \"Polygon\":\n                coords = invariant_1.getCoords(geometry);\n                break;\n            case \"LineString\":\n                coords = [invariant_1.getCoords(geometry)];\n        }\n        coords.forEach(function (coord) {\n            var segments = createSegments(coord, geojson.properties);\n            segments.forEach(function (segment) {\n                segment.id = results.length;\n                results.push(segment);\n            });\n        });\n    }\n}\n/**\n * Create Segments from LineString coordinates\n *\n * @private\n * @param {Array<Array<number>>} coords LineString coordinates\n * @param {*} properties GeoJSON properties\n * @returns {Array<Feature<LineString>>} line segments\n */\nfunction createSegments(coords, properties) {\n    var segments = [];\n    coords.reduce(function (previousCoords, currentCoords) {\n        var segment = helpers_1.lineString([previousCoords, currentCoords], properties);\n        segment.bbox = bbox(previousCoords, currentCoords);\n        segments.push(segment);\n        return currentCoords;\n    });\n    return segments;\n}\n/**\n * Create BBox between two coordinates (faster than @turf/bbox)\n *\n * @private\n * @param {Array<number>} coords1 Point coordinate\n * @param {Array<number>} coords2 Point coordinate\n * @returns {BBox} [west, south, east, north]\n */\nfunction bbox(coords1, coords2) {\n    var x1 = coords1[0];\n    var y1 = coords1[1];\n    var x2 = coords2[0];\n    var y2 = coords2[1];\n    var west = x1 < x2 ? x1 : x2;\n    var south = y1 < y2 ? y1 : y2;\n    var east = x1 > x2 ? x1 : x2;\n    var north = y1 > y2 ? y1 : y2;\n    return [west, south, east, north];\n}\nexports.default = lineSegment;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * @module helpers\n */\n/**\n * Earth Radius used with the Harvesine formula and approximates using a spherical (non-ellipsoid) Earth.\n *\n * @memberof helpers\n * @type {number}\n */\nexports.earthRadius = 6371008.8;\n/**\n * Unit of measurement factors using a spherical (non-ellipsoid) earth radius.\n *\n * @memberof helpers\n * @type {Object}\n */\nexports.factors = {\n    centimeters: exports.earthRadius * 100,\n    centimetres: exports.earthRadius * 100,\n    degrees: exports.earthRadius / 111325,\n    feet: exports.earthRadius * 3.28084,\n    inches: exports.earthRadius * 39.37,\n    kilometers: exports.earthRadius / 1000,\n    kilometres: exports.earthRadius / 1000,\n    meters: exports.earthRadius,\n    metres: exports.earthRadius,\n    miles: exports.earthRadius / 1609.344,\n    millimeters: exports.earthRadius * 1000,\n    millimetres: exports.earthRadius * 1000,\n    nauticalmiles: exports.earthRadius / 1852,\n    radians: 1,\n    yards: exports.earthRadius * 1.0936,\n};\n/**\n * Units of measurement factors based on 1 meter.\n *\n * @memberof helpers\n * @type {Object}\n */\nexports.unitsFactors = {\n    centimeters: 100,\n    centimetres: 100,\n    degrees: 1 / 111325,\n    feet: 3.28084,\n    inches: 39.37,\n    kilometers: 1 / 1000,\n    kilometres: 1 / 1000,\n    meters: 1,\n    metres: 1,\n    miles: 1 / 1609.344,\n    millimeters: 1000,\n    millimetres: 1000,\n    nauticalmiles: 1 / 1852,\n    radians: 1 / exports.earthRadius,\n    yards: 1.0936133,\n};\n/**\n * Area of measurement factors based on 1 square meter.\n *\n * @memberof helpers\n * @type {Object}\n */\nexports.areaFactors = {\n    acres: 0.000247105,\n    centimeters: 10000,\n    centimetres: 10000,\n    feet: 10.763910417,\n    hectares: 0.0001,\n    inches: 1550.003100006,\n    kilometers: 0.000001,\n    kilometres: 0.000001,\n    meters: 1,\n    metres: 1,\n    miles: 3.86e-7,\n    millimeters: 1000000,\n    millimetres: 1000000,\n    yards: 1.195990046,\n};\n/**\n * Wraps a GeoJSON {@link Geometry} in a GeoJSON {@link Feature}.\n *\n * @name feature\n * @param {Geometry} geometry input geometry\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} a GeoJSON Feature\n * @example\n * var geometry = {\n *   \"type\": \"Point\",\n *   \"coordinates\": [110, 50]\n * };\n *\n * var feature = turf.feature(geometry);\n *\n * //=feature\n */\nfunction feature(geom, properties, options) {\n    if (options === void 0) { options = {}; }\n    var feat = { type: \"Feature\" };\n    if (options.id === 0 || options.id) {\n        feat.id = options.id;\n    }\n    if (options.bbox) {\n        feat.bbox = options.bbox;\n    }\n    feat.properties = properties || {};\n    feat.geometry = geom;\n    return feat;\n}\nexports.feature = feature;\n/**\n * Creates a GeoJSON {@link Geometry} from a Geometry string type & coordinates.\n * For GeometryCollection type use `helpers.geometryCollection`\n *\n * @name geometry\n * @param {string} type Geometry Type\n * @param {Array<any>} coordinates Coordinates\n * @param {Object} [options={}] Optional Parameters\n * @returns {Geometry} a GeoJSON Geometry\n * @example\n * var type = \"Point\";\n * var coordinates = [110, 50];\n * var geometry = turf.geometry(type, coordinates);\n * // => geometry\n */\nfunction geometry(type, coordinates, _options) {\n    if (_options === void 0) { _options = {}; }\n    switch (type) {\n        case \"Point\":\n            return point(coordinates).geometry;\n        case \"LineString\":\n            return lineString(coordinates).geometry;\n        case \"Polygon\":\n            return polygon(coordinates).geometry;\n        case \"MultiPoint\":\n            return multiPoint(coordinates).geometry;\n        case \"MultiLineString\":\n            return multiLineString(coordinates).geometry;\n        case \"MultiPolygon\":\n            return multiPolygon(coordinates).geometry;\n        default:\n            throw new Error(type + \" is invalid\");\n    }\n}\nexports.geometry = geometry;\n/**\n * Creates a {@link Point} {@link Feature} from a Position.\n *\n * @name point\n * @param {Array<number>} coordinates longitude, latitude position (each in decimal degrees)\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<Point>} a Point feature\n * @example\n * var point = turf.point([-75.343, 39.984]);\n *\n * //=point\n */\nfunction point(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    if (!coordinates) {\n        throw new Error(\"coordinates is required\");\n    }\n    if (!Array.isArray(coordinates)) {\n        throw new Error(\"coordinates must be an Array\");\n    }\n    if (coordinates.length < 2) {\n        throw new Error(\"coordinates must be at least 2 numbers long\");\n    }\n    if (!isNumber(coordinates[0]) || !isNumber(coordinates[1])) {\n        throw new Error(\"coordinates must contain numbers\");\n    }\n    var geom = {\n        type: \"Point\",\n        coordinates: coordinates,\n    };\n    return feature(geom, properties, options);\n}\nexports.point = point;\n/**\n * Creates a {@link Point} {@link FeatureCollection} from an Array of Point coordinates.\n *\n * @name points\n * @param {Array<Array<number>>} coordinates an array of Points\n * @param {Object} [properties={}] Translate these properties to each Feature\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north]\n * associated with the FeatureCollection\n * @param {string|number} [options.id] Identifier associated with the FeatureCollection\n * @returns {FeatureCollection<Point>} Point Feature\n * @example\n * var points = turf.points([\n *   [-75, 39],\n *   [-80, 45],\n *   [-78, 50]\n * ]);\n *\n * //=points\n */\nfunction points(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    return featureCollection(coordinates.map(function (coords) {\n        return point(coords, properties);\n    }), options);\n}\nexports.points = points;\n/**\n * Creates a {@link Polygon} {@link Feature} from an Array of LinearRings.\n *\n * @name polygon\n * @param {Array<Array<Array<number>>>} coordinates an array of LinearRings\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<Polygon>} Polygon Feature\n * @example\n * var polygon = turf.polygon([[[-5, 52], [-4, 56], [-2, 51], [-7, 54], [-5, 52]]], { name: 'poly1' });\n *\n * //=polygon\n */\nfunction polygon(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    for (var _i = 0, coordinates_1 = coordinates; _i < coordinates_1.length; _i++) {\n        var ring = coordinates_1[_i];\n        if (ring.length < 4) {\n            throw new Error(\"Each LinearRing of a Polygon must have 4 or more Positions.\");\n        }\n        for (var j = 0; j < ring[ring.length - 1].length; j++) {\n            // Check if first point of Polygon contains two numbers\n            if (ring[ring.length - 1][j] !== ring[0][j]) {\n                throw new Error(\"First and last Position are not equivalent.\");\n            }\n        }\n    }\n    var geom = {\n        type: \"Polygon\",\n        coordinates: coordinates,\n    };\n    return feature(geom, properties, options);\n}\nexports.polygon = polygon;\n/**\n * Creates a {@link Polygon} {@link FeatureCollection} from an Array of Polygon coordinates.\n *\n * @name polygons\n * @param {Array<Array<Array<Array<number>>>>} coordinates an array of Polygon coordinates\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the FeatureCollection\n * @returns {FeatureCollection<Polygon>} Polygon FeatureCollection\n * @example\n * var polygons = turf.polygons([\n *   [[[-5, 52], [-4, 56], [-2, 51], [-7, 54], [-5, 52]]],\n *   [[[-15, 42], [-14, 46], [-12, 41], [-17, 44], [-15, 42]]],\n * ]);\n *\n * //=polygons\n */\nfunction polygons(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    return featureCollection(coordinates.map(function (coords) {\n        return polygon(coords, properties);\n    }), options);\n}\nexports.polygons = polygons;\n/**\n * Creates a {@link LineString} {@link Feature} from an Array of Positions.\n *\n * @name lineString\n * @param {Array<Array<number>>} coordinates an array of Positions\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<LineString>} LineString Feature\n * @example\n * var linestring1 = turf.lineString([[-24, 63], [-23, 60], [-25, 65], [-20, 69]], {name: 'line 1'});\n * var linestring2 = turf.lineString([[-14, 43], [-13, 40], [-15, 45], [-10, 49]], {name: 'line 2'});\n *\n * //=linestring1\n * //=linestring2\n */\nfunction lineString(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    if (coordinates.length < 2) {\n        throw new Error(\"coordinates must be an array of two or more positions\");\n    }\n    var geom = {\n        type: \"LineString\",\n        coordinates: coordinates,\n    };\n    return feature(geom, properties, options);\n}\nexports.lineString = lineString;\n/**\n * Creates a {@link LineString} {@link FeatureCollection} from an Array of LineString coordinates.\n *\n * @name lineStrings\n * @param {Array<Array<Array<number>>>} coordinates an array of LinearRings\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north]\n * associated with the FeatureCollection\n * @param {string|number} [options.id] Identifier associated with the FeatureCollection\n * @returns {FeatureCollection<LineString>} LineString FeatureCollection\n * @example\n * var linestrings = turf.lineStrings([\n *   [[-24, 63], [-23, 60], [-25, 65], [-20, 69]],\n *   [[-14, 43], [-13, 40], [-15, 45], [-10, 49]]\n * ]);\n *\n * //=linestrings\n */\nfunction lineStrings(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    return featureCollection(coordinates.map(function (coords) {\n        return lineString(coords, properties);\n    }), options);\n}\nexports.lineStrings = lineStrings;\n/**\n * Takes one or more {@link Feature|Features} and creates a {@link FeatureCollection}.\n *\n * @name featureCollection\n * @param {Feature[]} features input features\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {FeatureCollection} FeatureCollection of Features\n * @example\n * var locationA = turf.point([-75.343, 39.984], {name: 'Location A'});\n * var locationB = turf.point([-75.833, 39.284], {name: 'Location B'});\n * var locationC = turf.point([-75.534, 39.123], {name: 'Location C'});\n *\n * var collection = turf.featureCollection([\n *   locationA,\n *   locationB,\n *   locationC\n * ]);\n *\n * //=collection\n */\nfunction featureCollection(features, options) {\n    if (options === void 0) { options = {}; }\n    var fc = { type: \"FeatureCollection\" };\n    if (options.id) {\n        fc.id = options.id;\n    }\n    if (options.bbox) {\n        fc.bbox = options.bbox;\n    }\n    fc.features = features;\n    return fc;\n}\nexports.featureCollection = featureCollection;\n/**\n * Creates a {@link Feature<MultiLineString>} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name multiLineString\n * @param {Array<Array<Array<number>>>} coordinates an array of LineStrings\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<MultiLineString>} a MultiLineString feature\n * @throws {Error} if no coordinates are passed\n * @example\n * var multiLine = turf.multiLineString([[[0,0],[10,10]]]);\n *\n * //=multiLine\n */\nfunction multiLineString(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    var geom = {\n        type: \"MultiLineString\",\n        coordinates: coordinates,\n    };\n    return feature(geom, properties, options);\n}\nexports.multiLineString = multiLineString;\n/**\n * Creates a {@link Feature<MultiPoint>} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name multiPoint\n * @param {Array<Array<number>>} coordinates an array of Positions\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<MultiPoint>} a MultiPoint feature\n * @throws {Error} if no coordinates are passed\n * @example\n * var multiPt = turf.multiPoint([[0,0],[10,10]]);\n *\n * //=multiPt\n */\nfunction multiPoint(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    var geom = {\n        type: \"MultiPoint\",\n        coordinates: coordinates,\n    };\n    return feature(geom, properties, options);\n}\nexports.multiPoint = multiPoint;\n/**\n * Creates a {@link Feature<MultiPolygon>} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name multiPolygon\n * @param {Array<Array<Array<Array<number>>>>} coordinates an array of Polygons\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<MultiPolygon>} a multipolygon feature\n * @throws {Error} if no coordinates are passed\n * @example\n * var multiPoly = turf.multiPolygon([[[[0,0],[0,10],[10,10],[10,0],[0,0]]]]);\n *\n * //=multiPoly\n *\n */\nfunction multiPolygon(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    var geom = {\n        type: \"MultiPolygon\",\n        coordinates: coordinates,\n    };\n    return feature(geom, properties, options);\n}\nexports.multiPolygon = multiPolygon;\n/**\n * Creates a {@link Feature<GeometryCollection>} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name geometryCollection\n * @param {Array<Geometry>} geometries an array of GeoJSON Geometries\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<GeometryCollection>} a GeoJSON GeometryCollection Feature\n * @example\n * var pt = turf.geometry(\"Point\", [100, 0]);\n * var line = turf.geometry(\"LineString\", [[101, 0], [102, 1]]);\n * var collection = turf.geometryCollection([pt, line]);\n *\n * // => collection\n */\nfunction geometryCollection(geometries, properties, options) {\n    if (options === void 0) { options = {}; }\n    var geom = {\n        type: \"GeometryCollection\",\n        geometries: geometries,\n    };\n    return feature(geom, properties, options);\n}\nexports.geometryCollection = geometryCollection;\n/**\n * Round number to precision\n *\n * @param {number} num Number\n * @param {number} [precision=0] Precision\n * @returns {number} rounded number\n * @example\n * turf.round(120.4321)\n * //=120\n *\n * turf.round(120.4321, 2)\n * //=120.43\n */\nfunction round(num, precision) {\n    if (precision === void 0) { precision = 0; }\n    if (precision && !(precision >= 0)) {\n        throw new Error(\"precision must be a positive number\");\n    }\n    var multiplier = Math.pow(10, precision || 0);\n    return Math.round(num * multiplier) / multiplier;\n}\nexports.round = round;\n/**\n * Convert a distance measurement (assuming a spherical Earth) from radians to a more friendly unit.\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet\n *\n * @name radiansToLength\n * @param {number} radians in radians across the sphere\n * @param {string} [units=\"kilometers\"] can be degrees, radians, miles, inches, yards, metres,\n * meters, kilometres, kilometers.\n * @returns {number} distance\n */\nfunction radiansToLength(radians, units) {\n    if (units === void 0) { units = \"kilometers\"; }\n    var factor = exports.factors[units];\n    if (!factor) {\n        throw new Error(units + \" units is invalid\");\n    }\n    return radians * factor;\n}\nexports.radiansToLength = radiansToLength;\n/**\n * Convert a distance measurement (assuming a spherical Earth) from a real-world unit into radians\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet\n *\n * @name lengthToRadians\n * @param {number} distance in real units\n * @param {string} [units=\"kilometers\"] can be degrees, radians, miles, inches, yards, metres,\n * meters, kilometres, kilometers.\n * @returns {number} radians\n */\nfunction lengthToRadians(distance, units) {\n    if (units === void 0) { units = \"kilometers\"; }\n    var factor = exports.factors[units];\n    if (!factor) {\n        throw new Error(units + \" units is invalid\");\n    }\n    return distance / factor;\n}\nexports.lengthToRadians = lengthToRadians;\n/**\n * Convert a distance measurement (assuming a spherical Earth) from a real-world unit into degrees\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, centimeters, kilometres, feet\n *\n * @name lengthToDegrees\n * @param {number} distance in real units\n * @param {string} [units=\"kilometers\"] can be degrees, radians, miles, inches, yards, metres,\n * meters, kilometres, kilometers.\n * @returns {number} degrees\n */\nfunction lengthToDegrees(distance, units) {\n    return radiansToDegrees(lengthToRadians(distance, units));\n}\nexports.lengthToDegrees = lengthToDegrees;\n/**\n * Converts any bearing angle from the north line direction (positive clockwise)\n * and returns an angle between 0-360 degrees (positive clockwise), 0 being the north line\n *\n * @name bearingToAzimuth\n * @param {number} bearing angle, between -180 and +180 degrees\n * @returns {number} angle between 0 and 360 degrees\n */\nfunction bearingToAzimuth(bearing) {\n    var angle = bearing % 360;\n    if (angle < 0) {\n        angle += 360;\n    }\n    return angle;\n}\nexports.bearingToAzimuth = bearingToAzimuth;\n/**\n * Converts an angle in radians to degrees\n *\n * @name radiansToDegrees\n * @param {number} radians angle in radians\n * @returns {number} degrees between 0 and 360 degrees\n */\nfunction radiansToDegrees(radians) {\n    var degrees = radians % (2 * Math.PI);\n    return (degrees * 180) / Math.PI;\n}\nexports.radiansToDegrees = radiansToDegrees;\n/**\n * Converts an angle in degrees to radians\n *\n * @name degreesToRadians\n * @param {number} degrees angle between 0 and 360 degrees\n * @returns {number} angle in radians\n */\nfunction degreesToRadians(degrees) {\n    var radians = degrees % 360;\n    return (radians * Math.PI) / 180;\n}\nexports.degreesToRadians = degreesToRadians;\n/**\n * Converts a length to the requested unit.\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet\n *\n * @param {number} length to be converted\n * @param {Units} [originalUnit=\"kilometers\"] of the length\n * @param {Units} [finalUnit=\"kilometers\"] returned unit\n * @returns {number} the converted length\n */\nfunction convertLength(length, originalUnit, finalUnit) {\n    if (originalUnit === void 0) { originalUnit = \"kilometers\"; }\n    if (finalUnit === void 0) { finalUnit = \"kilometers\"; }\n    if (!(length >= 0)) {\n        throw new Error(\"length must be a positive number\");\n    }\n    return radiansToLength(lengthToRadians(length, originalUnit), finalUnit);\n}\nexports.convertLength = convertLength;\n/**\n * Converts a area to the requested unit.\n * Valid units: kilometers, kilometres, meters, metres, centimetres, millimeters, acres, miles, yards, feet, inches, hectares\n * @param {number} area to be converted\n * @param {Units} [originalUnit=\"meters\"] of the distance\n * @param {Units} [finalUnit=\"kilometers\"] returned unit\n * @returns {number} the converted area\n */\nfunction convertArea(area, originalUnit, finalUnit) {\n    if (originalUnit === void 0) { originalUnit = \"meters\"; }\n    if (finalUnit === void 0) { finalUnit = \"kilometers\"; }\n    if (!(area >= 0)) {\n        throw new Error(\"area must be a positive number\");\n    }\n    var startFactor = exports.areaFactors[originalUnit];\n    if (!startFactor) {\n        throw new Error(\"invalid original units\");\n    }\n    var finalFactor = exports.areaFactors[finalUnit];\n    if (!finalFactor) {\n        throw new Error(\"invalid final units\");\n    }\n    return (area / startFactor) * finalFactor;\n}\nexports.convertArea = convertArea;\n/**\n * isNumber\n *\n * @param {*} num Number to validate\n * @returns {boolean} true/false\n * @example\n * turf.isNumber(123)\n * //=true\n * turf.isNumber('foo')\n * //=false\n */\nfunction isNumber(num) {\n    return !isNaN(num) && num !== null && !Array.isArray(num);\n}\nexports.isNumber = isNumber;\n/**\n * isObject\n *\n * @param {*} input variable to validate\n * @returns {boolean} true/false\n * @example\n * turf.isObject({elevation: 10})\n * //=true\n * turf.isObject('foo')\n * //=false\n */\nfunction isObject(input) {\n    return !!input && input.constructor === Object;\n}\nexports.isObject = isObject;\n/**\n * Validate BBox\n *\n * @private\n * @param {Array<number>} bbox BBox to validate\n * @returns {void}\n * @throws Error if BBox is not valid\n * @example\n * validateBBox([-180, -40, 110, 50])\n * //=OK\n * validateBBox([-180, -40])\n * //=Error\n * validateBBox('Foo')\n * //=Error\n * validateBBox(5)\n * //=Error\n * validateBBox(null)\n * //=Error\n * validateBBox(undefined)\n * //=Error\n */\nfunction validateBBox(bbox) {\n    if (!bbox) {\n        throw new Error(\"bbox is required\");\n    }\n    if (!Array.isArray(bbox)) {\n        throw new Error(\"bbox must be an Array\");\n    }\n    if (bbox.length !== 4 && bbox.length !== 6) {\n        throw new Error(\"bbox must be an Array of 4 or 6 numbers\");\n    }\n    bbox.forEach(function (num) {\n        if (!isNumber(num)) {\n            throw new Error(\"bbox must only contain numbers\");\n        }\n    });\n}\nexports.validateBBox = validateBBox;\n/**\n * Validate Id\n *\n * @private\n * @param {string|number} id Id to validate\n * @returns {void}\n * @throws Error if Id is not valid\n * @example\n * validateId([-180, -40, 110, 50])\n * //=Error\n * validateId([-180, -40])\n * //=Error\n * validateId('Foo')\n * //=OK\n * validateId(5)\n * //=OK\n * validateId(null)\n * //=Error\n * validateId(undefined)\n * //=Error\n */\nfunction validateId(id) {\n    if (!id) {\n        throw new Error(\"id is required\");\n    }\n    if ([\"string\", \"number\"].indexOf(typeof id) === -1) {\n        throw new Error(\"id must be a number or a string\");\n    }\n}\nexports.validateId = validateId;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar helpers_1 = require(\"@turf/helpers\");\n/**\n * Unwrap a coordinate from a Point Feature, Geometry or a single coordinate.\n *\n * @name getCoord\n * @param {Array<number>|Geometry<Point>|Feature<Point>} coord GeoJSON Point or an Array of numbers\n * @returns {Array<number>} coordinates\n * @example\n * var pt = turf.point([10, 10]);\n *\n * var coord = turf.getCoord(pt);\n * //= [10, 10]\n */\nfunction getCoord(coord) {\n    if (!coord) {\n        throw new Error(\"coord is required\");\n    }\n    if (!Array.isArray(coord)) {\n        if (coord.type === \"Feature\" &&\n            coord.geometry !== null &&\n            coord.geometry.type === \"Point\") {\n            return coord.geometry.coordinates;\n        }\n        if (coord.type === \"Point\") {\n            return coord.coordinates;\n        }\n    }\n    if (Array.isArray(coord) &&\n        coord.length >= 2 &&\n        !Array.isArray(coord[0]) &&\n        !Array.isArray(coord[1])) {\n        return coord;\n    }\n    throw new Error(\"coord must be GeoJSON Point or an Array of numbers\");\n}\nexports.getCoord = getCoord;\n/**\n * Unwrap coordinates from a Feature, Geometry Object or an Array\n *\n * @name getCoords\n * @param {Array<any>|Geometry|Feature} coords Feature, Geometry Object or an Array\n * @returns {Array<any>} coordinates\n * @example\n * var poly = turf.polygon([[[119.32, -8.7], [119.55, -8.69], [119.51, -8.54], [119.32, -8.7]]]);\n *\n * var coords = turf.getCoords(poly);\n * //= [[[119.32, -8.7], [119.55, -8.69], [119.51, -8.54], [119.32, -8.7]]]\n */\nfunction getCoords(coords) {\n    if (Array.isArray(coords)) {\n        return coords;\n    }\n    // Feature\n    if (coords.type === \"Feature\") {\n        if (coords.geometry !== null) {\n            return coords.geometry.coordinates;\n        }\n    }\n    else {\n        // Geometry\n        if (coords.coordinates) {\n            return coords.coordinates;\n        }\n    }\n    throw new Error(\"coords must be GeoJSON Feature, Geometry Object or an Array\");\n}\nexports.getCoords = getCoords;\n/**\n * Checks if coordinates contains a number\n *\n * @name containsNumber\n * @param {Array<any>} coordinates GeoJSON Coordinates\n * @returns {boolean} true if Array contains a number\n */\nfunction containsNumber(coordinates) {\n    if (coordinates.length > 1 &&\n        helpers_1.isNumber(coordinates[0]) &&\n        helpers_1.isNumber(coordinates[1])) {\n        return true;\n    }\n    if (Array.isArray(coordinates[0]) && coordinates[0].length) {\n        return containsNumber(coordinates[0]);\n    }\n    throw new Error(\"coordinates must only contain numbers\");\n}\nexports.containsNumber = containsNumber;\n/**\n * Enforce expectations about types of GeoJSON objects for Turf.\n *\n * @name geojsonType\n * @param {GeoJSON} value any GeoJSON object\n * @param {string} type expected GeoJSON type\n * @param {string} name name of calling function\n * @throws {Error} if value is not the expected type.\n */\nfunction geojsonType(value, type, name) {\n    if (!type || !name) {\n        throw new Error(\"type and name required\");\n    }\n    if (!value || value.type !== type) {\n        throw new Error(\"Invalid input to \" +\n            name +\n            \": must be a \" +\n            type +\n            \", given \" +\n            value.type);\n    }\n}\nexports.geojsonType = geojsonType;\n/**\n * Enforce expectations about types of {@link Feature} inputs for Turf.\n * Internally this uses {@link geojsonType} to judge geometry types.\n *\n * @name featureOf\n * @param {Feature} feature a feature with an expected geometry type\n * @param {string} type expected GeoJSON type\n * @param {string} name name of calling function\n * @throws {Error} error if value is not the expected type.\n */\nfunction featureOf(feature, type, name) {\n    if (!feature) {\n        throw new Error(\"No feature passed\");\n    }\n    if (!name) {\n        throw new Error(\".featureOf() requires a name\");\n    }\n    if (!feature || feature.type !== \"Feature\" || !feature.geometry) {\n        throw new Error(\"Invalid input to \" + name + \", Feature with geometry required\");\n    }\n    if (!feature.geometry || feature.geometry.type !== type) {\n        throw new Error(\"Invalid input to \" +\n            name +\n            \": must be a \" +\n            type +\n            \", given \" +\n            feature.geometry.type);\n    }\n}\nexports.featureOf = featureOf;\n/**\n * Enforce expectations about types of {@link FeatureCollection} inputs for Turf.\n * Internally this uses {@link geojsonType} to judge geometry types.\n *\n * @name collectionOf\n * @param {FeatureCollection} featureCollection a FeatureCollection for which features will be judged\n * @param {string} type expected GeoJSON type\n * @param {string} name name of calling function\n * @throws {Error} if value is not the expected type.\n */\nfunction collectionOf(featureCollection, type, name) {\n    if (!featureCollection) {\n        throw new Error(\"No featureCollection passed\");\n    }\n    if (!name) {\n        throw new Error(\".collectionOf() requires a name\");\n    }\n    if (!featureCollection || featureCollection.type !== \"FeatureCollection\") {\n        throw new Error(\"Invalid input to \" + name + \", FeatureCollection required\");\n    }\n    for (var _i = 0, _a = featureCollection.features; _i < _a.length; _i++) {\n        var feature = _a[_i];\n        if (!feature || feature.type !== \"Feature\" || !feature.geometry) {\n            throw new Error(\"Invalid input to \" + name + \", Feature with geometry required\");\n        }\n        if (!feature.geometry || feature.geometry.type !== type) {\n            throw new Error(\"Invalid input to \" +\n                name +\n                \": must be a \" +\n                type +\n                \", given \" +\n                feature.geometry.type);\n        }\n    }\n}\nexports.collectionOf = collectionOf;\n/**\n * Get Geometry from Feature or Geometry Object\n *\n * @param {Feature|Geometry} geojson GeoJSON Feature or Geometry Object\n * @returns {Geometry|null} GeoJSON Geometry Object\n * @throws {Error} if geojson is not a Feature or Geometry Object\n * @example\n * var point = {\n *   \"type\": \"Feature\",\n *   \"properties\": {},\n *   \"geometry\": {\n *     \"type\": \"Point\",\n *     \"coordinates\": [110, 40]\n *   }\n * }\n * var geom = turf.getGeom(point)\n * //={\"type\": \"Point\", \"coordinates\": [110, 40]}\n */\nfunction getGeom(geojson) {\n    if (geojson.type === \"Feature\") {\n        return geojson.geometry;\n    }\n    return geojson;\n}\nexports.getGeom = getGeom;\n/**\n * Get GeoJSON object's type, Geometry type is prioritize.\n *\n * @param {GeoJSON} geojson GeoJSON object\n * @param {string} [name=\"geojson\"] name of the variable to display in error message (unused)\n * @returns {string} GeoJSON type\n * @example\n * var point = {\n *   \"type\": \"Feature\",\n *   \"properties\": {},\n *   \"geometry\": {\n *     \"type\": \"Point\",\n *     \"coordinates\": [110, 40]\n *   }\n * }\n * var geom = turf.getType(point)\n * //=\"Point\"\n */\nfunction getType(geojson, _name) {\n    if (geojson.type === \"FeatureCollection\") {\n        return \"FeatureCollection\";\n    }\n    if (geojson.type === \"GeometryCollection\") {\n        return \"GeometryCollection\";\n    }\n    if (geojson.type === \"Feature\" && geojson.geometry !== null) {\n        return geojson.geometry.type;\n    }\n    return geojson.type;\n}\nexports.getType = getType;\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nvar helpers = require('@turf/helpers');\n\n/**\n * Callback for coordEach\n *\n * @callback coordEachCallback\n * @param {Array<number>} currentCoord The current coordinate being processed.\n * @param {number} coordIndex The current index of the coordinate being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n * @param {number} geometryIndex The current index of the Geometry being processed.\n */\n\n/**\n * Iterate over coordinates in any GeoJSON object, similar to Array.forEach()\n *\n * @name coordEach\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (currentCoord, coordIndex, featureIndex, multiFeatureIndex)\n * @param {boolean} [excludeWrapCoord=false] whether or not to include the final coordinate of LinearRings that wraps the ring in its iteration.\n * @returns {void}\n * @example\n * var features = turf.featureCollection([\n *   turf.point([26, 37], {\"foo\": \"bar\"}),\n *   turf.point([36, 53], {\"hello\": \"world\"})\n * ]);\n *\n * turf.coordEach(features, function (currentCoord, coordIndex, featureIndex, multiFeatureIndex, geometryIndex) {\n *   //=currentCoord\n *   //=coordIndex\n *   //=featureIndex\n *   //=multiFeatureIndex\n *   //=geometryIndex\n * });\n */\nfunction coordEach(geojson, callback, excludeWrapCoord) {\n  // Handles null Geometry -- Skips this GeoJSON\n  if (geojson === null) return;\n  var j,\n    k,\n    l,\n    geometry,\n    stopG,\n    coords,\n    geometryMaybeCollection,\n    wrapShrink = 0,\n    coordIndex = 0,\n    isGeometryCollection,\n    type = geojson.type,\n    isFeatureCollection = type === \"FeatureCollection\",\n    isFeature = type === \"Feature\",\n    stop = isFeatureCollection ? geojson.features.length : 1;\n\n  // This logic may look a little weird. The reason why it is that way\n  // is because it's trying to be fast. GeoJSON supports multiple kinds\n  // of objects at its root: FeatureCollection, Features, Geometries.\n  // This function has the responsibility of handling all of them, and that\n  // means that some of the `for` loops you see below actually just don't apply\n  // to certain inputs. For instance, if you give this just a\n  // Point geometry, then both loops are short-circuited and all we do\n  // is gradually rename the input until it's called 'geometry'.\n  //\n  // This also aims to allocate as few resources as possible: just a\n  // few numbers and booleans, rather than any temporary arrays as would\n  // be required with the normalization approach.\n  for (var featureIndex = 0; featureIndex < stop; featureIndex++) {\n    geometryMaybeCollection = isFeatureCollection\n      ? geojson.features[featureIndex].geometry\n      : isFeature\n      ? geojson.geometry\n      : geojson;\n    isGeometryCollection = geometryMaybeCollection\n      ? geometryMaybeCollection.type === \"GeometryCollection\"\n      : false;\n    stopG = isGeometryCollection\n      ? geometryMaybeCollection.geometries.length\n      : 1;\n\n    for (var geomIndex = 0; geomIndex < stopG; geomIndex++) {\n      var multiFeatureIndex = 0;\n      var geometryIndex = 0;\n      geometry = isGeometryCollection\n        ? geometryMaybeCollection.geometries[geomIndex]\n        : geometryMaybeCollection;\n\n      // Handles null Geometry -- Skips this geometry\n      if (geometry === null) continue;\n      coords = geometry.coordinates;\n      var geomType = geometry.type;\n\n      wrapShrink =\n        excludeWrapCoord &&\n        (geomType === \"Polygon\" || geomType === \"MultiPolygon\")\n          ? 1\n          : 0;\n\n      switch (geomType) {\n        case null:\n          break;\n        case \"Point\":\n          if (\n            callback(\n              coords,\n              coordIndex,\n              featureIndex,\n              multiFeatureIndex,\n              geometryIndex\n            ) === false\n          )\n            return false;\n          coordIndex++;\n          multiFeatureIndex++;\n          break;\n        case \"LineString\":\n        case \"MultiPoint\":\n          for (j = 0; j < coords.length; j++) {\n            if (\n              callback(\n                coords[j],\n                coordIndex,\n                featureIndex,\n                multiFeatureIndex,\n                geometryIndex\n              ) === false\n            )\n              return false;\n            coordIndex++;\n            if (geomType === \"MultiPoint\") multiFeatureIndex++;\n          }\n          if (geomType === \"LineString\") multiFeatureIndex++;\n          break;\n        case \"Polygon\":\n        case \"MultiLineString\":\n          for (j = 0; j < coords.length; j++) {\n            for (k = 0; k < coords[j].length - wrapShrink; k++) {\n              if (\n                callback(\n                  coords[j][k],\n                  coordIndex,\n                  featureIndex,\n                  multiFeatureIndex,\n                  geometryIndex\n                ) === false\n              )\n                return false;\n              coordIndex++;\n            }\n            if (geomType === \"MultiLineString\") multiFeatureIndex++;\n            if (geomType === \"Polygon\") geometryIndex++;\n          }\n          if (geomType === \"Polygon\") multiFeatureIndex++;\n          break;\n        case \"MultiPolygon\":\n          for (j = 0; j < coords.length; j++) {\n            geometryIndex = 0;\n            for (k = 0; k < coords[j].length; k++) {\n              for (l = 0; l < coords[j][k].length - wrapShrink; l++) {\n                if (\n                  callback(\n                    coords[j][k][l],\n                    coordIndex,\n                    featureIndex,\n                    multiFeatureIndex,\n                    geometryIndex\n                  ) === false\n                )\n                  return false;\n                coordIndex++;\n              }\n              geometryIndex++;\n            }\n            multiFeatureIndex++;\n          }\n          break;\n        case \"GeometryCollection\":\n          for (j = 0; j < geometry.geometries.length; j++)\n            if (\n              coordEach(geometry.geometries[j], callback, excludeWrapCoord) ===\n              false\n            )\n              return false;\n          break;\n        default:\n          throw new Error(\"Unknown Geometry Type\");\n      }\n    }\n  }\n}\n\n/**\n * Callback for coordReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n *  - The previousValue argument is initialValue.\n *  - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n *  - The previousValue argument is the value of the first element present in the array.\n *  - The currentValue argument is the value of the second element present in the array.\n *\n * @callback coordReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Array<number>} currentCoord The current coordinate being processed.\n * @param {number} coordIndex The current index of the coordinate being processed.\n * Starts at index 0, if an initialValue is provided, and at index 1 otherwise.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n * @param {number} geometryIndex The current index of the Geometry being processed.\n */\n\n/**\n * Reduce coordinates in any GeoJSON object, similar to Array.reduce()\n *\n * @name coordReduce\n * @param {FeatureCollection|Geometry|Feature} geojson any GeoJSON object\n * @param {Function} callback a method that takes (previousValue, currentCoord, coordIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @param {boolean} [excludeWrapCoord=false] whether or not to include the final coordinate of LinearRings that wraps the ring in its iteration.\n * @returns {*} The value that results from the reduction.\n * @example\n * var features = turf.featureCollection([\n *   turf.point([26, 37], {\"foo\": \"bar\"}),\n *   turf.point([36, 53], {\"hello\": \"world\"})\n * ]);\n *\n * turf.coordReduce(features, function (previousValue, currentCoord, coordIndex, featureIndex, multiFeatureIndex, geometryIndex) {\n *   //=previousValue\n *   //=currentCoord\n *   //=coordIndex\n *   //=featureIndex\n *   //=multiFeatureIndex\n *   //=geometryIndex\n *   return currentCoord;\n * });\n */\nfunction coordReduce(geojson, callback, initialValue, excludeWrapCoord) {\n  var previousValue = initialValue;\n  coordEach(\n    geojson,\n    function (\n      currentCoord,\n      coordIndex,\n      featureIndex,\n      multiFeatureIndex,\n      geometryIndex\n    ) {\n      if (coordIndex === 0 && initialValue === undefined)\n        previousValue = currentCoord;\n      else\n        previousValue = callback(\n          previousValue,\n          currentCoord,\n          coordIndex,\n          featureIndex,\n          multiFeatureIndex,\n          geometryIndex\n        );\n    },\n    excludeWrapCoord\n  );\n  return previousValue;\n}\n\n/**\n * Callback for propEach\n *\n * @callback propEachCallback\n * @param {Object} currentProperties The current Properties being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n */\n\n/**\n * Iterate over properties in any GeoJSON object, similar to Array.forEach()\n *\n * @name propEach\n * @param {FeatureCollection|Feature} geojson any GeoJSON object\n * @param {Function} callback a method that takes (currentProperties, featureIndex)\n * @returns {void}\n * @example\n * var features = turf.featureCollection([\n *     turf.point([26, 37], {foo: 'bar'}),\n *     turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * turf.propEach(features, function (currentProperties, featureIndex) {\n *   //=currentProperties\n *   //=featureIndex\n * });\n */\nfunction propEach(geojson, callback) {\n  var i;\n  switch (geojson.type) {\n    case \"FeatureCollection\":\n      for (i = 0; i < geojson.features.length; i++) {\n        if (callback(geojson.features[i].properties, i) === false) break;\n      }\n      break;\n    case \"Feature\":\n      callback(geojson.properties, 0);\n      break;\n  }\n}\n\n/**\n * Callback for propReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n *  - The previousValue argument is initialValue.\n *  - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n *  - The previousValue argument is the value of the first element present in the array.\n *  - The currentValue argument is the value of the second element present in the array.\n *\n * @callback propReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {*} currentProperties The current Properties being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n */\n\n/**\n * Reduce properties in any GeoJSON object into a single value,\n * similar to how Array.reduce works. However, in this case we lazily run\n * the reduction, so an array of all properties is unnecessary.\n *\n * @name propReduce\n * @param {FeatureCollection|Feature} geojson any GeoJSON object\n * @param {Function} callback a method that takes (previousValue, currentProperties, featureIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {*} The value that results from the reduction.\n * @example\n * var features = turf.featureCollection([\n *     turf.point([26, 37], {foo: 'bar'}),\n *     turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * turf.propReduce(features, function (previousValue, currentProperties, featureIndex) {\n *   //=previousValue\n *   //=currentProperties\n *   //=featureIndex\n *   return currentProperties\n * });\n */\nfunction propReduce(geojson, callback, initialValue) {\n  var previousValue = initialValue;\n  propEach(geojson, function (currentProperties, featureIndex) {\n    if (featureIndex === 0 && initialValue === undefined)\n      previousValue = currentProperties;\n    else\n      previousValue = callback(previousValue, currentProperties, featureIndex);\n  });\n  return previousValue;\n}\n\n/**\n * Callback for featureEach\n *\n * @callback featureEachCallback\n * @param {Feature<any>} currentFeature The current Feature being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n */\n\n/**\n * Iterate over features in any GeoJSON object, similar to\n * Array.forEach.\n *\n * @name featureEach\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (currentFeature, featureIndex)\n * @returns {void}\n * @example\n * var features = turf.featureCollection([\n *   turf.point([26, 37], {foo: 'bar'}),\n *   turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * turf.featureEach(features, function (currentFeature, featureIndex) {\n *   //=currentFeature\n *   //=featureIndex\n * });\n */\nfunction featureEach(geojson, callback) {\n  if (geojson.type === \"Feature\") {\n    callback(geojson, 0);\n  } else if (geojson.type === \"FeatureCollection\") {\n    for (var i = 0; i < geojson.features.length; i++) {\n      if (callback(geojson.features[i], i) === false) break;\n    }\n  }\n}\n\n/**\n * Callback for featureReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n *  - The previousValue argument is initialValue.\n *  - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n *  - The previousValue argument is the value of the first element present in the array.\n *  - The currentValue argument is the value of the second element present in the array.\n *\n * @callback featureReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Feature} currentFeature The current Feature being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n */\n\n/**\n * Reduce features in any GeoJSON object, similar to Array.reduce().\n *\n * @name featureReduce\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (previousValue, currentFeature, featureIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {*} The value that results from the reduction.\n * @example\n * var features = turf.featureCollection([\n *   turf.point([26, 37], {\"foo\": \"bar\"}),\n *   turf.point([36, 53], {\"hello\": \"world\"})\n * ]);\n *\n * turf.featureReduce(features, function (previousValue, currentFeature, featureIndex) {\n *   //=previousValue\n *   //=currentFeature\n *   //=featureIndex\n *   return currentFeature\n * });\n */\nfunction featureReduce(geojson, callback, initialValue) {\n  var previousValue = initialValue;\n  featureEach(geojson, function (currentFeature, featureIndex) {\n    if (featureIndex === 0 && initialValue === undefined)\n      previousValue = currentFeature;\n    else previousValue = callback(previousValue, currentFeature, featureIndex);\n  });\n  return previousValue;\n}\n\n/**\n * Get all coordinates from any GeoJSON object.\n *\n * @name coordAll\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @returns {Array<Array<number>>} coordinate position array\n * @example\n * var features = turf.featureCollection([\n *   turf.point([26, 37], {foo: 'bar'}),\n *   turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * var coords = turf.coordAll(features);\n * //= [[26, 37], [36, 53]]\n */\nfunction coordAll(geojson) {\n  var coords = [];\n  coordEach(geojson, function (coord) {\n    coords.push(coord);\n  });\n  return coords;\n}\n\n/**\n * Callback for geomEach\n *\n * @callback geomEachCallback\n * @param {Geometry} currentGeometry The current Geometry being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {Object} featureProperties The current Feature Properties being processed.\n * @param {Array<number>} featureBBox The current Feature BBox being processed.\n * @param {number|string} featureId The current Feature Id being processed.\n */\n\n/**\n * Iterate over each geometry in any GeoJSON object, similar to Array.forEach()\n *\n * @name geomEach\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (currentGeometry, featureIndex, featureProperties, featureBBox, featureId)\n * @returns {void}\n * @example\n * var features = turf.featureCollection([\n *     turf.point([26, 37], {foo: 'bar'}),\n *     turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * turf.geomEach(features, function (currentGeometry, featureIndex, featureProperties, featureBBox, featureId) {\n *   //=currentGeometry\n *   //=featureIndex\n *   //=featureProperties\n *   //=featureBBox\n *   //=featureId\n * });\n */\nfunction geomEach(geojson, callback) {\n  var i,\n    j,\n    g,\n    geometry,\n    stopG,\n    geometryMaybeCollection,\n    isGeometryCollection,\n    featureProperties,\n    featureBBox,\n    featureId,\n    featureIndex = 0,\n    isFeatureCollection = geojson.type === \"FeatureCollection\",\n    isFeature = geojson.type === \"Feature\",\n    stop = isFeatureCollection ? geojson.features.length : 1;\n\n  // This logic may look a little weird. The reason why it is that way\n  // is because it's trying to be fast. GeoJSON supports multiple kinds\n  // of objects at its root: FeatureCollection, Features, Geometries.\n  // This function has the responsibility of handling all of them, and that\n  // means that some of the `for` loops you see below actually just don't apply\n  // to certain inputs. For instance, if you give this just a\n  // Point geometry, then both loops are short-circuited and all we do\n  // is gradually rename the input until it's called 'geometry'.\n  //\n  // This also aims to allocate as few resources as possible: just a\n  // few numbers and booleans, rather than any temporary arrays as would\n  // be required with the normalization approach.\n  for (i = 0; i < stop; i++) {\n    geometryMaybeCollection = isFeatureCollection\n      ? geojson.features[i].geometry\n      : isFeature\n      ? geojson.geometry\n      : geojson;\n    featureProperties = isFeatureCollection\n      ? geojson.features[i].properties\n      : isFeature\n      ? geojson.properties\n      : {};\n    featureBBox = isFeatureCollection\n      ? geojson.features[i].bbox\n      : isFeature\n      ? geojson.bbox\n      : undefined;\n    featureId = isFeatureCollection\n      ? geojson.features[i].id\n      : isFeature\n      ? geojson.id\n      : undefined;\n    isGeometryCollection = geometryMaybeCollection\n      ? geometryMaybeCollection.type === \"GeometryCollection\"\n      : false;\n    stopG = isGeometryCollection\n      ? geometryMaybeCollection.geometries.length\n      : 1;\n\n    for (g = 0; g < stopG; g++) {\n      geometry = isGeometryCollection\n        ? geometryMaybeCollection.geometries[g]\n        : geometryMaybeCollection;\n\n      // Handle null Geometry\n      if (geometry === null) {\n        if (\n          callback(\n            null,\n            featureIndex,\n            featureProperties,\n            featureBBox,\n            featureId\n          ) === false\n        )\n          return false;\n        continue;\n      }\n      switch (geometry.type) {\n        case \"Point\":\n        case \"LineString\":\n        case \"MultiPoint\":\n        case \"Polygon\":\n        case \"MultiLineString\":\n        case \"MultiPolygon\": {\n          if (\n            callback(\n              geometry,\n              featureIndex,\n              featureProperties,\n              featureBBox,\n              featureId\n            ) === false\n          )\n            return false;\n          break;\n        }\n        case \"GeometryCollection\": {\n          for (j = 0; j < geometry.geometries.length; j++) {\n            if (\n              callback(\n                geometry.geometries[j],\n                featureIndex,\n                featureProperties,\n                featureBBox,\n                featureId\n              ) === false\n            )\n              return false;\n          }\n          break;\n        }\n        default:\n          throw new Error(\"Unknown Geometry Type\");\n      }\n    }\n    // Only increase `featureIndex` per each feature\n    featureIndex++;\n  }\n}\n\n/**\n * Callback for geomReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n *  - The previousValue argument is initialValue.\n *  - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n *  - The previousValue argument is the value of the first element present in the array.\n *  - The currentValue argument is the value of the second element present in the array.\n *\n * @callback geomReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Geometry} currentGeometry The current Geometry being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {Object} featureProperties The current Feature Properties being processed.\n * @param {Array<number>} featureBBox The current Feature BBox being processed.\n * @param {number|string} featureId The current Feature Id being processed.\n */\n\n/**\n * Reduce geometry in any GeoJSON object, similar to Array.reduce().\n *\n * @name geomReduce\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (previousValue, currentGeometry, featureIndex, featureProperties, featureBBox, featureId)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {*} The value that results from the reduction.\n * @example\n * var features = turf.featureCollection([\n *     turf.point([26, 37], {foo: 'bar'}),\n *     turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * turf.geomReduce(features, function (previousValue, currentGeometry, featureIndex, featureProperties, featureBBox, featureId) {\n *   //=previousValue\n *   //=currentGeometry\n *   //=featureIndex\n *   //=featureProperties\n *   //=featureBBox\n *   //=featureId\n *   return currentGeometry\n * });\n */\nfunction geomReduce(geojson, callback, initialValue) {\n  var previousValue = initialValue;\n  geomEach(\n    geojson,\n    function (\n      currentGeometry,\n      featureIndex,\n      featureProperties,\n      featureBBox,\n      featureId\n    ) {\n      if (featureIndex === 0 && initialValue === undefined)\n        previousValue = currentGeometry;\n      else\n        previousValue = callback(\n          previousValue,\n          currentGeometry,\n          featureIndex,\n          featureProperties,\n          featureBBox,\n          featureId\n        );\n    }\n  );\n  return previousValue;\n}\n\n/**\n * Callback for flattenEach\n *\n * @callback flattenEachCallback\n * @param {Feature} currentFeature The current flattened feature being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n */\n\n/**\n * Iterate over flattened features in any GeoJSON object, similar to\n * Array.forEach.\n *\n * @name flattenEach\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (currentFeature, featureIndex, multiFeatureIndex)\n * @example\n * var features = turf.featureCollection([\n *     turf.point([26, 37], {foo: 'bar'}),\n *     turf.multiPoint([[40, 30], [36, 53]], {hello: 'world'})\n * ]);\n *\n * turf.flattenEach(features, function (currentFeature, featureIndex, multiFeatureIndex) {\n *   //=currentFeature\n *   //=featureIndex\n *   //=multiFeatureIndex\n * });\n */\nfunction flattenEach(geojson, callback) {\n  geomEach(geojson, function (geometry, featureIndex, properties, bbox, id) {\n    // Callback for single geometry\n    var type = geometry === null ? null : geometry.type;\n    switch (type) {\n      case null:\n      case \"Point\":\n      case \"LineString\":\n      case \"Polygon\":\n        if (\n          callback(\n            helpers.feature(geometry, properties, { bbox: bbox, id: id }),\n            featureIndex,\n            0\n          ) === false\n        )\n          return false;\n        return;\n    }\n\n    var geomType;\n\n    // Callback for multi-geometry\n    switch (type) {\n      case \"MultiPoint\":\n        geomType = \"Point\";\n        break;\n      case \"MultiLineString\":\n        geomType = \"LineString\";\n        break;\n      case \"MultiPolygon\":\n        geomType = \"Polygon\";\n        break;\n    }\n\n    for (\n      var multiFeatureIndex = 0;\n      multiFeatureIndex < geometry.coordinates.length;\n      multiFeatureIndex++\n    ) {\n      var coordinate = geometry.coordinates[multiFeatureIndex];\n      var geom = {\n        type: geomType,\n        coordinates: coordinate,\n      };\n      if (\n        callback(helpers.feature(geom, properties), featureIndex, multiFeatureIndex) ===\n        false\n      )\n        return false;\n    }\n  });\n}\n\n/**\n * Callback for flattenReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n *  - The previousValue argument is initialValue.\n *  - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n *  - The previousValue argument is the value of the first element present in the array.\n *  - The currentValue argument is the value of the second element present in the array.\n *\n * @callback flattenReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Feature} currentFeature The current Feature being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n */\n\n/**\n * Reduce flattened features in any GeoJSON object, similar to Array.reduce().\n *\n * @name flattenReduce\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (previousValue, currentFeature, featureIndex, multiFeatureIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {*} The value that results from the reduction.\n * @example\n * var features = turf.featureCollection([\n *     turf.point([26, 37], {foo: 'bar'}),\n *     turf.multiPoint([[40, 30], [36, 53]], {hello: 'world'})\n * ]);\n *\n * turf.flattenReduce(features, function (previousValue, currentFeature, featureIndex, multiFeatureIndex) {\n *   //=previousValue\n *   //=currentFeature\n *   //=featureIndex\n *   //=multiFeatureIndex\n *   return currentFeature\n * });\n */\nfunction flattenReduce(geojson, callback, initialValue) {\n  var previousValue = initialValue;\n  flattenEach(\n    geojson,\n    function (currentFeature, featureIndex, multiFeatureIndex) {\n      if (\n        featureIndex === 0 &&\n        multiFeatureIndex === 0 &&\n        initialValue === undefined\n      )\n        previousValue = currentFeature;\n      else\n        previousValue = callback(\n          previousValue,\n          currentFeature,\n          featureIndex,\n          multiFeatureIndex\n        );\n    }\n  );\n  return previousValue;\n}\n\n/**\n * Callback for segmentEach\n *\n * @callback segmentEachCallback\n * @param {Feature<LineString>} currentSegment The current Segment being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n * @param {number} geometryIndex The current index of the Geometry being processed.\n * @param {number} segmentIndex The current index of the Segment being processed.\n * @returns {void}\n */\n\n/**\n * Iterate over 2-vertex line segment in any GeoJSON object, similar to Array.forEach()\n * (Multi)Point geometries do not contain segments therefore they are ignored during this operation.\n *\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON\n * @param {Function} callback a method that takes (currentSegment, featureIndex, multiFeatureIndex, geometryIndex, segmentIndex)\n * @returns {void}\n * @example\n * var polygon = turf.polygon([[[-50, 5], [-40, -10], [-50, -10], [-40, 5], [-50, 5]]]);\n *\n * // Iterate over GeoJSON by 2-vertex segments\n * turf.segmentEach(polygon, function (currentSegment, featureIndex, multiFeatureIndex, geometryIndex, segmentIndex) {\n *   //=currentSegment\n *   //=featureIndex\n *   //=multiFeatureIndex\n *   //=geometryIndex\n *   //=segmentIndex\n * });\n *\n * // Calculate the total number of segments\n * var total = 0;\n * turf.segmentEach(polygon, function () {\n *     total++;\n * });\n */\nfunction segmentEach(geojson, callback) {\n  flattenEach(geojson, function (feature, featureIndex, multiFeatureIndex) {\n    var segmentIndex = 0;\n\n    // Exclude null Geometries\n    if (!feature.geometry) return;\n    // (Multi)Point geometries do not contain segments therefore they are ignored during this operation.\n    var type = feature.geometry.type;\n    if (type === \"Point\" || type === \"MultiPoint\") return;\n\n    // Generate 2-vertex line segments\n    var previousCoords;\n    var previousFeatureIndex = 0;\n    var previousMultiIndex = 0;\n    var prevGeomIndex = 0;\n    if (\n      coordEach(\n        feature,\n        function (\n          currentCoord,\n          coordIndex,\n          featureIndexCoord,\n          multiPartIndexCoord,\n          geometryIndex\n        ) {\n          // Simulating a meta.coordReduce() since `reduce` operations cannot be stopped by returning `false`\n          if (\n            previousCoords === undefined ||\n            featureIndex > previousFeatureIndex ||\n            multiPartIndexCoord > previousMultiIndex ||\n            geometryIndex > prevGeomIndex\n          ) {\n            previousCoords = currentCoord;\n            previousFeatureIndex = featureIndex;\n            previousMultiIndex = multiPartIndexCoord;\n            prevGeomIndex = geometryIndex;\n            segmentIndex = 0;\n            return;\n          }\n          var currentSegment = helpers.lineString(\n            [previousCoords, currentCoord],\n            feature.properties\n          );\n          if (\n            callback(\n              currentSegment,\n              featureIndex,\n              multiFeatureIndex,\n              geometryIndex,\n              segmentIndex\n            ) === false\n          )\n            return false;\n          segmentIndex++;\n          previousCoords = currentCoord;\n        }\n      ) === false\n    )\n      return false;\n  });\n}\n\n/**\n * Callback for segmentReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n *  - The previousValue argument is initialValue.\n *  - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n *  - The previousValue argument is the value of the first element present in the array.\n *  - The currentValue argument is the value of the second element present in the array.\n *\n * @callback segmentReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Feature<LineString>} currentSegment The current Segment being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n * @param {number} geometryIndex The current index of the Geometry being processed.\n * @param {number} segmentIndex The current index of the Segment being processed.\n */\n\n/**\n * Reduce 2-vertex line segment in any GeoJSON object, similar to Array.reduce()\n * (Multi)Point geometries do not contain segments therefore they are ignored during this operation.\n *\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON\n * @param {Function} callback a method that takes (previousValue, currentSegment, currentIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {void}\n * @example\n * var polygon = turf.polygon([[[-50, 5], [-40, -10], [-50, -10], [-40, 5], [-50, 5]]]);\n *\n * // Iterate over GeoJSON by 2-vertex segments\n * turf.segmentReduce(polygon, function (previousSegment, currentSegment, featureIndex, multiFeatureIndex, geometryIndex, segmentIndex) {\n *   //= previousSegment\n *   //= currentSegment\n *   //= featureIndex\n *   //= multiFeatureIndex\n *   //= geometryIndex\n *   //= segmentIndex\n *   return currentSegment\n * });\n *\n * // Calculate the total number of segments\n * var initialValue = 0\n * var total = turf.segmentReduce(polygon, function (previousValue) {\n *     previousValue++;\n *     return previousValue;\n * }, initialValue);\n */\nfunction segmentReduce(geojson, callback, initialValue) {\n  var previousValue = initialValue;\n  var started = false;\n  segmentEach(\n    geojson,\n    function (\n      currentSegment,\n      featureIndex,\n      multiFeatureIndex,\n      geometryIndex,\n      segmentIndex\n    ) {\n      if (started === false && initialValue === undefined)\n        previousValue = currentSegment;\n      else\n        previousValue = callback(\n          previousValue,\n          currentSegment,\n          featureIndex,\n          multiFeatureIndex,\n          geometryIndex,\n          segmentIndex\n        );\n      started = true;\n    }\n  );\n  return previousValue;\n}\n\n/**\n * Callback for lineEach\n *\n * @callback lineEachCallback\n * @param {Feature<LineString>} currentLine The current LineString|LinearRing being processed\n * @param {number} featureIndex The current index of the Feature being processed\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed\n * @param {number} geometryIndex The current index of the Geometry being processed\n */\n\n/**\n * Iterate over line or ring coordinates in LineString, Polygon, MultiLineString, MultiPolygon Features or Geometries,\n * similar to Array.forEach.\n *\n * @name lineEach\n * @param {Geometry|Feature<LineString|Polygon|MultiLineString|MultiPolygon>} geojson object\n * @param {Function} callback a method that takes (currentLine, featureIndex, multiFeatureIndex, geometryIndex)\n * @example\n * var multiLine = turf.multiLineString([\n *   [[26, 37], [35, 45]],\n *   [[36, 53], [38, 50], [41, 55]]\n * ]);\n *\n * turf.lineEach(multiLine, function (currentLine, featureIndex, multiFeatureIndex, geometryIndex) {\n *   //=currentLine\n *   //=featureIndex\n *   //=multiFeatureIndex\n *   //=geometryIndex\n * });\n */\nfunction lineEach(geojson, callback) {\n  // validation\n  if (!geojson) throw new Error(\"geojson is required\");\n\n  flattenEach(geojson, function (feature, featureIndex, multiFeatureIndex) {\n    if (feature.geometry === null) return;\n    var type = feature.geometry.type;\n    var coords = feature.geometry.coordinates;\n    switch (type) {\n      case \"LineString\":\n        if (callback(feature, featureIndex, multiFeatureIndex, 0, 0) === false)\n          return false;\n        break;\n      case \"Polygon\":\n        for (\n          var geometryIndex = 0;\n          geometryIndex < coords.length;\n          geometryIndex++\n        ) {\n          if (\n            callback(\n              helpers.lineString(coords[geometryIndex], feature.properties),\n              featureIndex,\n              multiFeatureIndex,\n              geometryIndex\n            ) === false\n          )\n            return false;\n        }\n        break;\n    }\n  });\n}\n\n/**\n * Callback for lineReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n *  - The previousValue argument is initialValue.\n *  - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n *  - The previousValue argument is the value of the first element present in the array.\n *  - The currentValue argument is the value of the second element present in the array.\n *\n * @callback lineReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Feature<LineString>} currentLine The current LineString|LinearRing being processed.\n * @param {number} featureIndex The current index of the Feature being processed\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed\n * @param {number} geometryIndex The current index of the Geometry being processed\n */\n\n/**\n * Reduce features in any GeoJSON object, similar to Array.reduce().\n *\n * @name lineReduce\n * @param {Geometry|Feature<LineString|Polygon|MultiLineString|MultiPolygon>} geojson object\n * @param {Function} callback a method that takes (previousValue, currentLine, featureIndex, multiFeatureIndex, geometryIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {*} The value that results from the reduction.\n * @example\n * var multiPoly = turf.multiPolygon([\n *   turf.polygon([[[12,48],[2,41],[24,38],[12,48]], [[9,44],[13,41],[13,45],[9,44]]]),\n *   turf.polygon([[[5, 5], [0, 0], [2, 2], [4, 4], [5, 5]]])\n * ]);\n *\n * turf.lineReduce(multiPoly, function (previousValue, currentLine, featureIndex, multiFeatureIndex, geometryIndex) {\n *   //=previousValue\n *   //=currentLine\n *   //=featureIndex\n *   //=multiFeatureIndex\n *   //=geometryIndex\n *   return currentLine\n * });\n */\nfunction lineReduce(geojson, callback, initialValue) {\n  var previousValue = initialValue;\n  lineEach(\n    geojson,\n    function (currentLine, featureIndex, multiFeatureIndex, geometryIndex) {\n      if (featureIndex === 0 && initialValue === undefined)\n        previousValue = currentLine;\n      else\n        previousValue = callback(\n          previousValue,\n          currentLine,\n          featureIndex,\n          multiFeatureIndex,\n          geometryIndex\n        );\n    }\n  );\n  return previousValue;\n}\n\n/**\n * Finds a particular 2-vertex LineString Segment from a GeoJSON using `@turf/meta` indexes.\n *\n * Negative indexes are permitted.\n * Point & MultiPoint will always return null.\n *\n * @param {FeatureCollection|Feature|Geometry} geojson Any GeoJSON Feature or Geometry\n * @param {Object} [options={}] Optional parameters\n * @param {number} [options.featureIndex=0] Feature Index\n * @param {number} [options.multiFeatureIndex=0] Multi-Feature Index\n * @param {number} [options.geometryIndex=0] Geometry Index\n * @param {number} [options.segmentIndex=0] Segment Index\n * @param {Object} [options.properties={}] Translate Properties to output LineString\n * @param {BBox} [options.bbox={}] Translate BBox to output LineString\n * @param {number|string} [options.id={}] Translate Id to output LineString\n * @returns {Feature<LineString>} 2-vertex GeoJSON Feature LineString\n * @example\n * var multiLine = turf.multiLineString([\n *     [[10, 10], [50, 30], [30, 40]],\n *     [[-10, -10], [-50, -30], [-30, -40]]\n * ]);\n *\n * // First Segment (defaults are 0)\n * turf.findSegment(multiLine);\n * // => Feature<LineString<[[10, 10], [50, 30]]>>\n *\n * // First Segment of 2nd Multi Feature\n * turf.findSegment(multiLine, {multiFeatureIndex: 1});\n * // => Feature<LineString<[[-10, -10], [-50, -30]]>>\n *\n * // Last Segment of Last Multi Feature\n * turf.findSegment(multiLine, {multiFeatureIndex: -1, segmentIndex: -1});\n * // => Feature<LineString<[[-50, -30], [-30, -40]]>>\n */\nfunction findSegment(geojson, options) {\n  // Optional Parameters\n  options = options || {};\n  if (!helpers.isObject(options)) throw new Error(\"options is invalid\");\n  var featureIndex = options.featureIndex || 0;\n  var multiFeatureIndex = options.multiFeatureIndex || 0;\n  var geometryIndex = options.geometryIndex || 0;\n  var segmentIndex = options.segmentIndex || 0;\n\n  // Find FeatureIndex\n  var properties = options.properties;\n  var geometry;\n\n  switch (geojson.type) {\n    case \"FeatureCollection\":\n      if (featureIndex < 0)\n        featureIndex = geojson.features.length + featureIndex;\n      properties = properties || geojson.features[featureIndex].properties;\n      geometry = geojson.features[featureIndex].geometry;\n      break;\n    case \"Feature\":\n      properties = properties || geojson.properties;\n      geometry = geojson.geometry;\n      break;\n    case \"Point\":\n    case \"MultiPoint\":\n      return null;\n    case \"LineString\":\n    case \"Polygon\":\n    case \"MultiLineString\":\n    case \"MultiPolygon\":\n      geometry = geojson;\n      break;\n    default:\n      throw new Error(\"geojson is invalid\");\n  }\n\n  // Find SegmentIndex\n  if (geometry === null) return null;\n  var coords = geometry.coordinates;\n  switch (geometry.type) {\n    case \"Point\":\n    case \"MultiPoint\":\n      return null;\n    case \"LineString\":\n      if (segmentIndex < 0) segmentIndex = coords.length + segmentIndex - 1;\n      return helpers.lineString(\n        [coords[segmentIndex], coords[segmentIndex + 1]],\n        properties,\n        options\n      );\n    case \"Polygon\":\n      if (geometryIndex < 0) geometryIndex = coords.length + geometryIndex;\n      if (segmentIndex < 0)\n        segmentIndex = coords[geometryIndex].length + segmentIndex - 1;\n      return helpers.lineString(\n        [\n          coords[geometryIndex][segmentIndex],\n          coords[geometryIndex][segmentIndex + 1],\n        ],\n        properties,\n        options\n      );\n    case \"MultiLineString\":\n      if (multiFeatureIndex < 0)\n        multiFeatureIndex = coords.length + multiFeatureIndex;\n      if (segmentIndex < 0)\n        segmentIndex = coords[multiFeatureIndex].length + segmentIndex - 1;\n      return helpers.lineString(\n        [\n          coords[multiFeatureIndex][segmentIndex],\n          coords[multiFeatureIndex][segmentIndex + 1],\n        ],\n        properties,\n        options\n      );\n    case \"MultiPolygon\":\n      if (multiFeatureIndex < 0)\n        multiFeatureIndex = coords.length + multiFeatureIndex;\n      if (geometryIndex < 0)\n        geometryIndex = coords[multiFeatureIndex].length + geometryIndex;\n      if (segmentIndex < 0)\n        segmentIndex =\n          coords[multiFeatureIndex][geometryIndex].length - segmentIndex - 1;\n      return helpers.lineString(\n        [\n          coords[multiFeatureIndex][geometryIndex][segmentIndex],\n          coords[multiFeatureIndex][geometryIndex][segmentIndex + 1],\n        ],\n        properties,\n        options\n      );\n  }\n  throw new Error(\"geojson is invalid\");\n}\n\n/**\n * Finds a particular Point from a GeoJSON using `@turf/meta` indexes.\n *\n * Negative indexes are permitted.\n *\n * @param {FeatureCollection|Feature|Geometry} geojson Any GeoJSON Feature or Geometry\n * @param {Object} [options={}] Optional parameters\n * @param {number} [options.featureIndex=0] Feature Index\n * @param {number} [options.multiFeatureIndex=0] Multi-Feature Index\n * @param {number} [options.geometryIndex=0] Geometry Index\n * @param {number} [options.coordIndex=0] Coord Index\n * @param {Object} [options.properties={}] Translate Properties to output Point\n * @param {BBox} [options.bbox={}] Translate BBox to output Point\n * @param {number|string} [options.id={}] Translate Id to output Point\n * @returns {Feature<Point>} 2-vertex GeoJSON Feature Point\n * @example\n * var multiLine = turf.multiLineString([\n *     [[10, 10], [50, 30], [30, 40]],\n *     [[-10, -10], [-50, -30], [-30, -40]]\n * ]);\n *\n * // First Segment (defaults are 0)\n * turf.findPoint(multiLine);\n * // => Feature<Point<[10, 10]>>\n *\n * // First Segment of the 2nd Multi-Feature\n * turf.findPoint(multiLine, {multiFeatureIndex: 1});\n * // => Feature<Point<[-10, -10]>>\n *\n * // Last Segment of last Multi-Feature\n * turf.findPoint(multiLine, {multiFeatureIndex: -1, coordIndex: -1});\n * // => Feature<Point<[-30, -40]>>\n */\nfunction findPoint(geojson, options) {\n  // Optional Parameters\n  options = options || {};\n  if (!helpers.isObject(options)) throw new Error(\"options is invalid\");\n  var featureIndex = options.featureIndex || 0;\n  var multiFeatureIndex = options.multiFeatureIndex || 0;\n  var geometryIndex = options.geometryIndex || 0;\n  var coordIndex = options.coordIndex || 0;\n\n  // Find FeatureIndex\n  var properties = options.properties;\n  var geometry;\n\n  switch (geojson.type) {\n    case \"FeatureCollection\":\n      if (featureIndex < 0)\n        featureIndex = geojson.features.length + featureIndex;\n      properties = properties || geojson.features[featureIndex].properties;\n      geometry = geojson.features[featureIndex].geometry;\n      break;\n    case \"Feature\":\n      properties = properties || geojson.properties;\n      geometry = geojson.geometry;\n      break;\n    case \"Point\":\n    case \"MultiPoint\":\n      return null;\n    case \"LineString\":\n    case \"Polygon\":\n    case \"MultiLineString\":\n    case \"MultiPolygon\":\n      geometry = geojson;\n      break;\n    default:\n      throw new Error(\"geojson is invalid\");\n  }\n\n  // Find Coord Index\n  if (geometry === null) return null;\n  var coords = geometry.coordinates;\n  switch (geometry.type) {\n    case \"Point\":\n      return helpers.point(coords, properties, options);\n    case \"MultiPoint\":\n      if (multiFeatureIndex < 0)\n        multiFeatureIndex = coords.length + multiFeatureIndex;\n      return helpers.point(coords[multiFeatureIndex], properties, options);\n    case \"LineString\":\n      if (coordIndex < 0) coordIndex = coords.length + coordIndex;\n      return helpers.point(coords[coordIndex], properties, options);\n    case \"Polygon\":\n      if (geometryIndex < 0) geometryIndex = coords.length + geometryIndex;\n      if (coordIndex < 0)\n        coordIndex = coords[geometryIndex].length + coordIndex;\n      return helpers.point(coords[geometryIndex][coordIndex], properties, options);\n    case \"MultiLineString\":\n      if (multiFeatureIndex < 0)\n        multiFeatureIndex = coords.length + multiFeatureIndex;\n      if (coordIndex < 0)\n        coordIndex = coords[multiFeatureIndex].length + coordIndex;\n      return helpers.point(coords[multiFeatureIndex][coordIndex], properties, options);\n    case \"MultiPolygon\":\n      if (multiFeatureIndex < 0)\n        multiFeatureIndex = coords.length + multiFeatureIndex;\n      if (geometryIndex < 0)\n        geometryIndex = coords[multiFeatureIndex].length + geometryIndex;\n      if (coordIndex < 0)\n        coordIndex =\n          coords[multiFeatureIndex][geometryIndex].length - coordIndex;\n      return helpers.point(\n        coords[multiFeatureIndex][geometryIndex][coordIndex],\n        properties,\n        options\n      );\n  }\n  throw new Error(\"geojson is invalid\");\n}\n\nexports.coordAll = coordAll;\nexports.coordEach = coordEach;\nexports.coordReduce = coordReduce;\nexports.featureEach = featureEach;\nexports.featureReduce = featureReduce;\nexports.findPoint = findPoint;\nexports.findSegment = findSegment;\nexports.flattenEach = flattenEach;\nexports.flattenReduce = flattenReduce;\nexports.geomEach = geomEach;\nexports.geomReduce = geomReduce;\nexports.lineEach = lineEach;\nexports.lineReduce = lineReduce;\nexports.propEach = propEach;\nexports.propReduce = propReduce;\nexports.segmentEach = segmentEach;\nexports.segmentReduce = segmentReduce;\n","import { feature, isObject, lineString, point } from '@turf/helpers';\n\n/**\n * Callback for coordEach\n *\n * @callback coordEachCallback\n * @param {Array<number>} currentCoord The current coordinate being processed.\n * @param {number} coordIndex The current index of the coordinate being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n * @param {number} geometryIndex The current index of the Geometry being processed.\n */\n\n/**\n * Iterate over coordinates in any GeoJSON object, similar to Array.forEach()\n *\n * @name coordEach\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (currentCoord, coordIndex, featureIndex, multiFeatureIndex)\n * @param {boolean} [excludeWrapCoord=false] whether or not to include the final coordinate of LinearRings that wraps the ring in its iteration.\n * @returns {void}\n * @example\n * var features = turf.featureCollection([\n *   turf.point([26, 37], {\"foo\": \"bar\"}),\n *   turf.point([36, 53], {\"hello\": \"world\"})\n * ]);\n *\n * turf.coordEach(features, function (currentCoord, coordIndex, featureIndex, multiFeatureIndex, geometryIndex) {\n *   //=currentCoord\n *   //=coordIndex\n *   //=featureIndex\n *   //=multiFeatureIndex\n *   //=geometryIndex\n * });\n */\nfunction coordEach(geojson, callback, excludeWrapCoord) {\n    // Handles null Geometry -- Skips this GeoJSON\n    if (geojson === null) return;\n    var j, k, l, geometry, stopG, coords,\n        geometryMaybeCollection,\n        wrapShrink = 0,\n        coordIndex = 0,\n        isGeometryCollection,\n        type = geojson.type,\n        isFeatureCollection = type === 'FeatureCollection',\n        isFeature = type === 'Feature',\n        stop = isFeatureCollection ? geojson.features.length : 1;\n\n    // This logic may look a little weird. The reason why it is that way\n    // is because it's trying to be fast. GeoJSON supports multiple kinds\n    // of objects at its root: FeatureCollection, Features, Geometries.\n    // This function has the responsibility of handling all of them, and that\n    // means that some of the `for` loops you see below actually just don't apply\n    // to certain inputs. For instance, if you give this just a\n    // Point geometry, then both loops are short-circuited and all we do\n    // is gradually rename the input until it's called 'geometry'.\n    //\n    // This also aims to allocate as few resources as possible: just a\n    // few numbers and booleans, rather than any temporary arrays as would\n    // be required with the normalization approach.\n    for (var featureIndex = 0; featureIndex < stop; featureIndex++) {\n        geometryMaybeCollection = (isFeatureCollection ? geojson.features[featureIndex].geometry :\n            (isFeature ? geojson.geometry : geojson));\n        isGeometryCollection = (geometryMaybeCollection) ? geometryMaybeCollection.type === 'GeometryCollection' : false;\n        stopG = isGeometryCollection ? geometryMaybeCollection.geometries.length : 1;\n\n        for (var geomIndex = 0; geomIndex < stopG; geomIndex++) {\n            var multiFeatureIndex = 0;\n            var geometryIndex = 0;\n            geometry = isGeometryCollection ?\n                geometryMaybeCollection.geometries[geomIndex] : geometryMaybeCollection;\n\n            // Handles null Geometry -- Skips this geometry\n            if (geometry === null) continue;\n            coords = geometry.coordinates;\n            var geomType = geometry.type;\n\n            wrapShrink = (excludeWrapCoord && (geomType === 'Polygon' || geomType === 'MultiPolygon')) ? 1 : 0;\n\n            switch (geomType) {\n            case null:\n                break;\n            case 'Point':\n                if (callback(coords, coordIndex, featureIndex, multiFeatureIndex, geometryIndex) === false) return false;\n                coordIndex++;\n                multiFeatureIndex++;\n                break;\n            case 'LineString':\n            case 'MultiPoint':\n                for (j = 0; j < coords.length; j++) {\n                    if (callback(coords[j], coordIndex, featureIndex, multiFeatureIndex, geometryIndex) === false) return false;\n                    coordIndex++;\n                    if (geomType === 'MultiPoint') multiFeatureIndex++;\n                }\n                if (geomType === 'LineString') multiFeatureIndex++;\n                break;\n            case 'Polygon':\n            case 'MultiLineString':\n                for (j = 0; j < coords.length; j++) {\n                    for (k = 0; k < coords[j].length - wrapShrink; k++) {\n                        if (callback(coords[j][k], coordIndex, featureIndex, multiFeatureIndex, geometryIndex) === false) return false;\n                        coordIndex++;\n                    }\n                    if (geomType === 'MultiLineString') multiFeatureIndex++;\n                    if (geomType === 'Polygon') geometryIndex++;\n                }\n                if (geomType === 'Polygon') multiFeatureIndex++;\n                break;\n            case 'MultiPolygon':\n                for (j = 0; j < coords.length; j++) {\n                    if (geomType === 'MultiPolygon') geometryIndex = 0;\n                    for (k = 0; k < coords[j].length; k++) {\n                        for (l = 0; l < coords[j][k].length - wrapShrink; l++) {\n                            if (callback(coords[j][k][l], coordIndex, featureIndex, multiFeatureIndex, geometryIndex) === false) return false;\n                            coordIndex++;\n                        }\n                        geometryIndex++;\n                    }\n                    multiFeatureIndex++;\n                }\n                break;\n            case 'GeometryCollection':\n                for (j = 0; j < geometry.geometries.length; j++)\n                    if (coordEach(geometry.geometries[j], callback, excludeWrapCoord) === false) return false;\n                break;\n            default:\n                throw new Error('Unknown Geometry Type');\n            }\n        }\n    }\n}\n\n/**\n * Callback for coordReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n *  - The previousValue argument is initialValue.\n *  - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n *  - The previousValue argument is the value of the first element present in the array.\n *  - The currentValue argument is the value of the second element present in the array.\n *\n * @callback coordReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Array<number>} currentCoord The current coordinate being processed.\n * @param {number} coordIndex The current index of the coordinate being processed.\n * Starts at index 0, if an initialValue is provided, and at index 1 otherwise.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n * @param {number} geometryIndex The current index of the Geometry being processed.\n */\n\n/**\n * Reduce coordinates in any GeoJSON object, similar to Array.reduce()\n *\n * @name coordReduce\n * @param {FeatureCollection|Geometry|Feature} geojson any GeoJSON object\n * @param {Function} callback a method that takes (previousValue, currentCoord, coordIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @param {boolean} [excludeWrapCoord=false] whether or not to include the final coordinate of LinearRings that wraps the ring in its iteration.\n * @returns {*} The value that results from the reduction.\n * @example\n * var features = turf.featureCollection([\n *   turf.point([26, 37], {\"foo\": \"bar\"}),\n *   turf.point([36, 53], {\"hello\": \"world\"})\n * ]);\n *\n * turf.coordReduce(features, function (previousValue, currentCoord, coordIndex, featureIndex, multiFeatureIndex, geometryIndex) {\n *   //=previousValue\n *   //=currentCoord\n *   //=coordIndex\n *   //=featureIndex\n *   //=multiFeatureIndex\n *   //=geometryIndex\n *   return currentCoord;\n * });\n */\nfunction coordReduce(geojson, callback, initialValue, excludeWrapCoord) {\n    var previousValue = initialValue;\n    coordEach(geojson, function (currentCoord, coordIndex, featureIndex, multiFeatureIndex, geometryIndex) {\n        if (coordIndex === 0 && initialValue === undefined) previousValue = currentCoord;\n        else previousValue = callback(previousValue, currentCoord, coordIndex, featureIndex, multiFeatureIndex, geometryIndex);\n    }, excludeWrapCoord);\n    return previousValue;\n}\n\n/**\n * Callback for propEach\n *\n * @callback propEachCallback\n * @param {Object} currentProperties The current Properties being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n */\n\n/**\n * Iterate over properties in any GeoJSON object, similar to Array.forEach()\n *\n * @name propEach\n * @param {FeatureCollection|Feature} geojson any GeoJSON object\n * @param {Function} callback a method that takes (currentProperties, featureIndex)\n * @returns {void}\n * @example\n * var features = turf.featureCollection([\n *     turf.point([26, 37], {foo: 'bar'}),\n *     turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * turf.propEach(features, function (currentProperties, featureIndex) {\n *   //=currentProperties\n *   //=featureIndex\n * });\n */\nfunction propEach(geojson, callback) {\n    var i;\n    switch (geojson.type) {\n    case 'FeatureCollection':\n        for (i = 0; i < geojson.features.length; i++) {\n            if (callback(geojson.features[i].properties, i) === false) break;\n        }\n        break;\n    case 'Feature':\n        callback(geojson.properties, 0);\n        break;\n    }\n}\n\n\n/**\n * Callback for propReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n *  - The previousValue argument is initialValue.\n *  - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n *  - The previousValue argument is the value of the first element present in the array.\n *  - The currentValue argument is the value of the second element present in the array.\n *\n * @callback propReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {*} currentProperties The current Properties being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n */\n\n/**\n * Reduce properties in any GeoJSON object into a single value,\n * similar to how Array.reduce works. However, in this case we lazily run\n * the reduction, so an array of all properties is unnecessary.\n *\n * @name propReduce\n * @param {FeatureCollection|Feature} geojson any GeoJSON object\n * @param {Function} callback a method that takes (previousValue, currentProperties, featureIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {*} The value that results from the reduction.\n * @example\n * var features = turf.featureCollection([\n *     turf.point([26, 37], {foo: 'bar'}),\n *     turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * turf.propReduce(features, function (previousValue, currentProperties, featureIndex) {\n *   //=previousValue\n *   //=currentProperties\n *   //=featureIndex\n *   return currentProperties\n * });\n */\nfunction propReduce(geojson, callback, initialValue) {\n    var previousValue = initialValue;\n    propEach(geojson, function (currentProperties, featureIndex) {\n        if (featureIndex === 0 && initialValue === undefined) previousValue = currentProperties;\n        else previousValue = callback(previousValue, currentProperties, featureIndex);\n    });\n    return previousValue;\n}\n\n/**\n * Callback for featureEach\n *\n * @callback featureEachCallback\n * @param {Feature<any>} currentFeature The current Feature being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n */\n\n/**\n * Iterate over features in any GeoJSON object, similar to\n * Array.forEach.\n *\n * @name featureEach\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (currentFeature, featureIndex)\n * @returns {void}\n * @example\n * var features = turf.featureCollection([\n *   turf.point([26, 37], {foo: 'bar'}),\n *   turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * turf.featureEach(features, function (currentFeature, featureIndex) {\n *   //=currentFeature\n *   //=featureIndex\n * });\n */\nfunction featureEach(geojson, callback) {\n    if (geojson.type === 'Feature') {\n        callback(geojson, 0);\n    } else if (geojson.type === 'FeatureCollection') {\n        for (var i = 0; i < geojson.features.length; i++) {\n            if (callback(geojson.features[i], i) === false) break;\n        }\n    }\n}\n\n/**\n * Callback for featureReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n *  - The previousValue argument is initialValue.\n *  - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n *  - The previousValue argument is the value of the first element present in the array.\n *  - The currentValue argument is the value of the second element present in the array.\n *\n * @callback featureReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Feature} currentFeature The current Feature being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n */\n\n/**\n * Reduce features in any GeoJSON object, similar to Array.reduce().\n *\n * @name featureReduce\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (previousValue, currentFeature, featureIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {*} The value that results from the reduction.\n * @example\n * var features = turf.featureCollection([\n *   turf.point([26, 37], {\"foo\": \"bar\"}),\n *   turf.point([36, 53], {\"hello\": \"world\"})\n * ]);\n *\n * turf.featureReduce(features, function (previousValue, currentFeature, featureIndex) {\n *   //=previousValue\n *   //=currentFeature\n *   //=featureIndex\n *   return currentFeature\n * });\n */\nfunction featureReduce(geojson, callback, initialValue) {\n    var previousValue = initialValue;\n    featureEach(geojson, function (currentFeature, featureIndex) {\n        if (featureIndex === 0 && initialValue === undefined) previousValue = currentFeature;\n        else previousValue = callback(previousValue, currentFeature, featureIndex);\n    });\n    return previousValue;\n}\n\n/**\n * Get all coordinates from any GeoJSON object.\n *\n * @name coordAll\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @returns {Array<Array<number>>} coordinate position array\n * @example\n * var features = turf.featureCollection([\n *   turf.point([26, 37], {foo: 'bar'}),\n *   turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * var coords = turf.coordAll(features);\n * //= [[26, 37], [36, 53]]\n */\nfunction coordAll(geojson) {\n    var coords = [];\n    coordEach(geojson, function (coord) {\n        coords.push(coord);\n    });\n    return coords;\n}\n\n/**\n * Callback for geomEach\n *\n * @callback geomEachCallback\n * @param {Geometry} currentGeometry The current Geometry being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {Object} featureProperties The current Feature Properties being processed.\n * @param {Array<number>} featureBBox The current Feature BBox being processed.\n * @param {number|string} featureId The current Feature Id being processed.\n */\n\n/**\n * Iterate over each geometry in any GeoJSON object, similar to Array.forEach()\n *\n * @name geomEach\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (currentGeometry, featureIndex, featureProperties, featureBBox, featureId)\n * @returns {void}\n * @example\n * var features = turf.featureCollection([\n *     turf.point([26, 37], {foo: 'bar'}),\n *     turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * turf.geomEach(features, function (currentGeometry, featureIndex, featureProperties, featureBBox, featureId) {\n *   //=currentGeometry\n *   //=featureIndex\n *   //=featureProperties\n *   //=featureBBox\n *   //=featureId\n * });\n */\nfunction geomEach(geojson, callback) {\n    var i, j, g, geometry, stopG,\n        geometryMaybeCollection,\n        isGeometryCollection,\n        featureProperties,\n        featureBBox,\n        featureId,\n        featureIndex = 0,\n        isFeatureCollection = geojson.type === 'FeatureCollection',\n        isFeature = geojson.type === 'Feature',\n        stop = isFeatureCollection ? geojson.features.length : 1;\n\n    // This logic may look a little weird. The reason why it is that way\n    // is because it's trying to be fast. GeoJSON supports multiple kinds\n    // of objects at its root: FeatureCollection, Features, Geometries.\n    // This function has the responsibility of handling all of them, and that\n    // means that some of the `for` loops you see below actually just don't apply\n    // to certain inputs. For instance, if you give this just a\n    // Point geometry, then both loops are short-circuited and all we do\n    // is gradually rename the input until it's called 'geometry'.\n    //\n    // This also aims to allocate as few resources as possible: just a\n    // few numbers and booleans, rather than any temporary arrays as would\n    // be required with the normalization approach.\n    for (i = 0; i < stop; i++) {\n\n        geometryMaybeCollection = (isFeatureCollection ? geojson.features[i].geometry :\n            (isFeature ? geojson.geometry : geojson));\n        featureProperties = (isFeatureCollection ? geojson.features[i].properties :\n            (isFeature ? geojson.properties : {}));\n        featureBBox = (isFeatureCollection ? geojson.features[i].bbox :\n            (isFeature ? geojson.bbox : undefined));\n        featureId = (isFeatureCollection ? geojson.features[i].id :\n            (isFeature ? geojson.id : undefined));\n        isGeometryCollection = (geometryMaybeCollection) ? geometryMaybeCollection.type === 'GeometryCollection' : false;\n        stopG = isGeometryCollection ? geometryMaybeCollection.geometries.length : 1;\n\n        for (g = 0; g < stopG; g++) {\n            geometry = isGeometryCollection ?\n                geometryMaybeCollection.geometries[g] : geometryMaybeCollection;\n\n            // Handle null Geometry\n            if (geometry === null) {\n                if (callback(null, featureIndex, featureProperties, featureBBox, featureId) === false) return false;\n                continue;\n            }\n            switch (geometry.type) {\n            case 'Point':\n            case 'LineString':\n            case 'MultiPoint':\n            case 'Polygon':\n            case 'MultiLineString':\n            case 'MultiPolygon': {\n                if (callback(geometry, featureIndex, featureProperties, featureBBox, featureId) === false) return false;\n                break;\n            }\n            case 'GeometryCollection': {\n                for (j = 0; j < geometry.geometries.length; j++) {\n                    if (callback(geometry.geometries[j], featureIndex, featureProperties, featureBBox, featureId) === false) return false;\n                }\n                break;\n            }\n            default:\n                throw new Error('Unknown Geometry Type');\n            }\n        }\n        // Only increase `featureIndex` per each feature\n        featureIndex++;\n    }\n}\n\n/**\n * Callback for geomReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n *  - The previousValue argument is initialValue.\n *  - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n *  - The previousValue argument is the value of the first element present in the array.\n *  - The currentValue argument is the value of the second element present in the array.\n *\n * @callback geomReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Geometry} currentGeometry The current Geometry being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {Object} featureProperties The current Feature Properties being processed.\n * @param {Array<number>} featureBBox The current Feature BBox being processed.\n * @param {number|string} featureId The current Feature Id being processed.\n */\n\n/**\n * Reduce geometry in any GeoJSON object, similar to Array.reduce().\n *\n * @name geomReduce\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (previousValue, currentGeometry, featureIndex, featureProperties, featureBBox, featureId)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {*} The value that results from the reduction.\n * @example\n * var features = turf.featureCollection([\n *     turf.point([26, 37], {foo: 'bar'}),\n *     turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * turf.geomReduce(features, function (previousValue, currentGeometry, featureIndex, featureProperties, featureBBox, featureId) {\n *   //=previousValue\n *   //=currentGeometry\n *   //=featureIndex\n *   //=featureProperties\n *   //=featureBBox\n *   //=featureId\n *   return currentGeometry\n * });\n */\nfunction geomReduce(geojson, callback, initialValue) {\n    var previousValue = initialValue;\n    geomEach(geojson, function (currentGeometry, featureIndex, featureProperties, featureBBox, featureId) {\n        if (featureIndex === 0 && initialValue === undefined) previousValue = currentGeometry;\n        else previousValue = callback(previousValue, currentGeometry, featureIndex, featureProperties, featureBBox, featureId);\n    });\n    return previousValue;\n}\n\n/**\n * Callback for flattenEach\n *\n * @callback flattenEachCallback\n * @param {Feature} currentFeature The current flattened feature being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n */\n\n/**\n * Iterate over flattened features in any GeoJSON object, similar to\n * Array.forEach.\n *\n * @name flattenEach\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (currentFeature, featureIndex, multiFeatureIndex)\n * @example\n * var features = turf.featureCollection([\n *     turf.point([26, 37], {foo: 'bar'}),\n *     turf.multiPoint([[40, 30], [36, 53]], {hello: 'world'})\n * ]);\n *\n * turf.flattenEach(features, function (currentFeature, featureIndex, multiFeatureIndex) {\n *   //=currentFeature\n *   //=featureIndex\n *   //=multiFeatureIndex\n * });\n */\nfunction flattenEach(geojson, callback) {\n    geomEach(geojson, function (geometry, featureIndex, properties, bbox, id) {\n        // Callback for single geometry\n        var type = (geometry === null) ? null : geometry.type;\n        switch (type) {\n        case null:\n        case 'Point':\n        case 'LineString':\n        case 'Polygon':\n            if (callback(feature(geometry, properties, {bbox: bbox, id: id}), featureIndex, 0) === false) return false;\n            return;\n        }\n\n        var geomType;\n\n        // Callback for multi-geometry\n        switch (type) {\n        case 'MultiPoint':\n            geomType = 'Point';\n            break;\n        case 'MultiLineString':\n            geomType = 'LineString';\n            break;\n        case 'MultiPolygon':\n            geomType = 'Polygon';\n            break;\n        }\n\n        for (var multiFeatureIndex = 0; multiFeatureIndex < geometry.coordinates.length; multiFeatureIndex++) {\n            var coordinate = geometry.coordinates[multiFeatureIndex];\n            var geom = {\n                type: geomType,\n                coordinates: coordinate\n            };\n            if (callback(feature(geom, properties), featureIndex, multiFeatureIndex) === false) return false;\n        }\n    });\n}\n\n/**\n * Callback for flattenReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n *  - The previousValue argument is initialValue.\n *  - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n *  - The previousValue argument is the value of the first element present in the array.\n *  - The currentValue argument is the value of the second element present in the array.\n *\n * @callback flattenReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Feature} currentFeature The current Feature being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n */\n\n/**\n * Reduce flattened features in any GeoJSON object, similar to Array.reduce().\n *\n * @name flattenReduce\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (previousValue, currentFeature, featureIndex, multiFeatureIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {*} The value that results from the reduction.\n * @example\n * var features = turf.featureCollection([\n *     turf.point([26, 37], {foo: 'bar'}),\n *     turf.multiPoint([[40, 30], [36, 53]], {hello: 'world'})\n * ]);\n *\n * turf.flattenReduce(features, function (previousValue, currentFeature, featureIndex, multiFeatureIndex) {\n *   //=previousValue\n *   //=currentFeature\n *   //=featureIndex\n *   //=multiFeatureIndex\n *   return currentFeature\n * });\n */\nfunction flattenReduce(geojson, callback, initialValue) {\n    var previousValue = initialValue;\n    flattenEach(geojson, function (currentFeature, featureIndex, multiFeatureIndex) {\n        if (featureIndex === 0 && multiFeatureIndex === 0 && initialValue === undefined) previousValue = currentFeature;\n        else previousValue = callback(previousValue, currentFeature, featureIndex, multiFeatureIndex);\n    });\n    return previousValue;\n}\n\n/**\n * Callback for segmentEach\n *\n * @callback segmentEachCallback\n * @param {Feature<LineString>} currentSegment The current Segment being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n * @param {number} geometryIndex The current index of the Geometry being processed.\n * @param {number} segmentIndex The current index of the Segment being processed.\n * @returns {void}\n */\n\n/**\n * Iterate over 2-vertex line segment in any GeoJSON object, similar to Array.forEach()\n * (Multi)Point geometries do not contain segments therefore they are ignored during this operation.\n *\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON\n * @param {Function} callback a method that takes (currentSegment, featureIndex, multiFeatureIndex, geometryIndex, segmentIndex)\n * @returns {void}\n * @example\n * var polygon = turf.polygon([[[-50, 5], [-40, -10], [-50, -10], [-40, 5], [-50, 5]]]);\n *\n * // Iterate over GeoJSON by 2-vertex segments\n * turf.segmentEach(polygon, function (currentSegment, featureIndex, multiFeatureIndex, geometryIndex, segmentIndex) {\n *   //=currentSegment\n *   //=featureIndex\n *   //=multiFeatureIndex\n *   //=geometryIndex\n *   //=segmentIndex\n * });\n *\n * // Calculate the total number of segments\n * var total = 0;\n * turf.segmentEach(polygon, function () {\n *     total++;\n * });\n */\nfunction segmentEach(geojson, callback) {\n    flattenEach(geojson, function (feature$$1, featureIndex, multiFeatureIndex) {\n        var segmentIndex = 0;\n\n        // Exclude null Geometries\n        if (!feature$$1.geometry) return;\n        // (Multi)Point geometries do not contain segments therefore they are ignored during this operation.\n        var type = feature$$1.geometry.type;\n        if (type === 'Point' || type === 'MultiPoint') return;\n\n        // Generate 2-vertex line segments\n        var previousCoords;\n        if (coordEach(feature$$1, function (currentCoord, coordIndex, featureIndexCoord, mutliPartIndexCoord, geometryIndex) {\n            // Simulating a meta.coordReduce() since `reduce` operations cannot be stopped by returning `false`\n            if (previousCoords === undefined) {\n                previousCoords = currentCoord;\n                return;\n            }\n            var currentSegment = lineString([previousCoords, currentCoord], feature$$1.properties);\n            if (callback(currentSegment, featureIndex, multiFeatureIndex, geometryIndex, segmentIndex) === false) return false;\n            segmentIndex++;\n            previousCoords = currentCoord;\n        }) === false) return false;\n    });\n}\n\n/**\n * Callback for segmentReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n *  - The previousValue argument is initialValue.\n *  - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n *  - The previousValue argument is the value of the first element present in the array.\n *  - The currentValue argument is the value of the second element present in the array.\n *\n * @callback segmentReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Feature<LineString>} currentSegment The current Segment being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n * @param {number} geometryIndex The current index of the Geometry being processed.\n * @param {number} segmentIndex The current index of the Segment being processed.\n */\n\n/**\n * Reduce 2-vertex line segment in any GeoJSON object, similar to Array.reduce()\n * (Multi)Point geometries do not contain segments therefore they are ignored during this operation.\n *\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON\n * @param {Function} callback a method that takes (previousValue, currentSegment, currentIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {void}\n * @example\n * var polygon = turf.polygon([[[-50, 5], [-40, -10], [-50, -10], [-40, 5], [-50, 5]]]);\n *\n * // Iterate over GeoJSON by 2-vertex segments\n * turf.segmentReduce(polygon, function (previousSegment, currentSegment, featureIndex, multiFeatureIndex, geometryIndex, segmentIndex) {\n *   //= previousSegment\n *   //= currentSegment\n *   //= featureIndex\n *   //= multiFeatureIndex\n *   //= geometryIndex\n *   //= segmentInex\n *   return currentSegment\n * });\n *\n * // Calculate the total number of segments\n * var initialValue = 0\n * var total = turf.segmentReduce(polygon, function (previousValue) {\n *     previousValue++;\n *     return previousValue;\n * }, initialValue);\n */\nfunction segmentReduce(geojson, callback, initialValue) {\n    var previousValue = initialValue;\n    var started = false;\n    segmentEach(geojson, function (currentSegment, featureIndex, multiFeatureIndex, geometryIndex, segmentIndex) {\n        if (started === false && initialValue === undefined) previousValue = currentSegment;\n        else previousValue = callback(previousValue, currentSegment, featureIndex, multiFeatureIndex, geometryIndex, segmentIndex);\n        started = true;\n    });\n    return previousValue;\n}\n\n/**\n * Callback for lineEach\n *\n * @callback lineEachCallback\n * @param {Feature<LineString>} currentLine The current LineString|LinearRing being processed\n * @param {number} featureIndex The current index of the Feature being processed\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed\n * @param {number} geometryIndex The current index of the Geometry being processed\n */\n\n/**\n * Iterate over line or ring coordinates in LineString, Polygon, MultiLineString, MultiPolygon Features or Geometries,\n * similar to Array.forEach.\n *\n * @name lineEach\n * @param {Geometry|Feature<LineString|Polygon|MultiLineString|MultiPolygon>} geojson object\n * @param {Function} callback a method that takes (currentLine, featureIndex, multiFeatureIndex, geometryIndex)\n * @example\n * var multiLine = turf.multiLineString([\n *   [[26, 37], [35, 45]],\n *   [[36, 53], [38, 50], [41, 55]]\n * ]);\n *\n * turf.lineEach(multiLine, function (currentLine, featureIndex, multiFeatureIndex, geometryIndex) {\n *   //=currentLine\n *   //=featureIndex\n *   //=multiFeatureIndex\n *   //=geometryIndex\n * });\n */\nfunction lineEach(geojson, callback) {\n    // validation\n    if (!geojson) throw new Error('geojson is required');\n\n    flattenEach(geojson, function (feature$$1, featureIndex, multiFeatureIndex) {\n        if (feature$$1.geometry === null) return;\n        var type = feature$$1.geometry.type;\n        var coords = feature$$1.geometry.coordinates;\n        switch (type) {\n        case 'LineString':\n            if (callback(feature$$1, featureIndex, multiFeatureIndex, 0, 0) === false) return false;\n            break;\n        case 'Polygon':\n            for (var geometryIndex = 0; geometryIndex < coords.length; geometryIndex++) {\n                if (callback(lineString(coords[geometryIndex], feature$$1.properties), featureIndex, multiFeatureIndex, geometryIndex) === false) return false;\n            }\n            break;\n        }\n    });\n}\n\n/**\n * Callback for lineReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n *  - The previousValue argument is initialValue.\n *  - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n *  - The previousValue argument is the value of the first element present in the array.\n *  - The currentValue argument is the value of the second element present in the array.\n *\n * @callback lineReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Feature<LineString>} currentLine The current LineString|LinearRing being processed.\n * @param {number} featureIndex The current index of the Feature being processed\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed\n * @param {number} geometryIndex The current index of the Geometry being processed\n */\n\n/**\n * Reduce features in any GeoJSON object, similar to Array.reduce().\n *\n * @name lineReduce\n * @param {Geometry|Feature<LineString|Polygon|MultiLineString|MultiPolygon>} geojson object\n * @param {Function} callback a method that takes (previousValue, currentLine, featureIndex, multiFeatureIndex, geometryIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {*} The value that results from the reduction.\n * @example\n * var multiPoly = turf.multiPolygon([\n *   turf.polygon([[[12,48],[2,41],[24,38],[12,48]], [[9,44],[13,41],[13,45],[9,44]]]),\n *   turf.polygon([[[5, 5], [0, 0], [2, 2], [4, 4], [5, 5]]])\n * ]);\n *\n * turf.lineReduce(multiPoly, function (previousValue, currentLine, featureIndex, multiFeatureIndex, geometryIndex) {\n *   //=previousValue\n *   //=currentLine\n *   //=featureIndex\n *   //=multiFeatureIndex\n *   //=geometryIndex\n *   return currentLine\n * });\n */\nfunction lineReduce(geojson, callback, initialValue) {\n    var previousValue = initialValue;\n    lineEach(geojson, function (currentLine, featureIndex, multiFeatureIndex, geometryIndex) {\n        if (featureIndex === 0 && initialValue === undefined) previousValue = currentLine;\n        else previousValue = callback(previousValue, currentLine, featureIndex, multiFeatureIndex, geometryIndex);\n    });\n    return previousValue;\n}\n\n/**\n * Finds a particular 2-vertex LineString Segment from a GeoJSON using `@turf/meta` indexes.\n *\n * Negative indexes are permitted.\n * Point & MultiPoint will always return null.\n *\n * @param {FeatureCollection|Feature|Geometry} geojson Any GeoJSON Feature or Geometry\n * @param {Object} [options={}] Optional parameters\n * @param {number} [options.featureIndex=0] Feature Index\n * @param {number} [options.multiFeatureIndex=0] Multi-Feature Index\n * @param {number} [options.geometryIndex=0] Geometry Index\n * @param {number} [options.segmentIndex=0] Segment Index\n * @param {Object} [options.properties={}] Translate Properties to output LineString\n * @param {BBox} [options.bbox={}] Translate BBox to output LineString\n * @param {number|string} [options.id={}] Translate Id to output LineString\n * @returns {Feature<LineString>} 2-vertex GeoJSON Feature LineString\n * @example\n * var multiLine = turf.multiLineString([\n *     [[10, 10], [50, 30], [30, 40]],\n *     [[-10, -10], [-50, -30], [-30, -40]]\n * ]);\n *\n * // First Segment (defaults are 0)\n * turf.findSegment(multiLine);\n * // => Feature<LineString<[[10, 10], [50, 30]]>>\n *\n * // First Segment of 2nd Multi Feature\n * turf.findSegment(multiLine, {multiFeatureIndex: 1});\n * // => Feature<LineString<[[-10, -10], [-50, -30]]>>\n *\n * // Last Segment of Last Multi Feature\n * turf.findSegment(multiLine, {multiFeatureIndex: -1, segmentIndex: -1});\n * // => Feature<LineString<[[-50, -30], [-30, -40]]>>\n */\nfunction findSegment(geojson, options) {\n    // Optional Parameters\n    options = options || {};\n    if (!isObject(options)) throw new Error('options is invalid');\n    var featureIndex = options.featureIndex || 0;\n    var multiFeatureIndex = options.multiFeatureIndex || 0;\n    var geometryIndex = options.geometryIndex || 0;\n    var segmentIndex = options.segmentIndex || 0;\n\n    // Find FeatureIndex\n    var properties = options.properties;\n    var geometry;\n\n    switch (geojson.type) {\n    case 'FeatureCollection':\n        if (featureIndex < 0) featureIndex = geojson.features.length + featureIndex;\n        properties = properties || geojson.features[featureIndex].properties;\n        geometry = geojson.features[featureIndex].geometry;\n        break;\n    case 'Feature':\n        properties = properties || geojson.properties;\n        geometry = geojson.geometry;\n        break;\n    case 'Point':\n    case 'MultiPoint':\n        return null;\n    case 'LineString':\n    case 'Polygon':\n    case 'MultiLineString':\n    case 'MultiPolygon':\n        geometry = geojson;\n        break;\n    default:\n        throw new Error('geojson is invalid');\n    }\n\n    // Find SegmentIndex\n    if (geometry === null) return null;\n    var coords = geometry.coordinates;\n    switch (geometry.type) {\n    case 'Point':\n    case 'MultiPoint':\n        return null;\n    case 'LineString':\n        if (segmentIndex < 0) segmentIndex = coords.length + segmentIndex - 1;\n        return lineString([coords[segmentIndex], coords[segmentIndex + 1]], properties, options);\n    case 'Polygon':\n        if (geometryIndex < 0) geometryIndex = coords.length + geometryIndex;\n        if (segmentIndex < 0) segmentIndex = coords[geometryIndex].length + segmentIndex - 1;\n        return lineString([coords[geometryIndex][segmentIndex], coords[geometryIndex][segmentIndex + 1]], properties, options);\n    case 'MultiLineString':\n        if (multiFeatureIndex < 0) multiFeatureIndex = coords.length + multiFeatureIndex;\n        if (segmentIndex < 0) segmentIndex = coords[multiFeatureIndex].length + segmentIndex - 1;\n        return lineString([coords[multiFeatureIndex][segmentIndex], coords[multiFeatureIndex][segmentIndex + 1]], properties, options);\n    case 'MultiPolygon':\n        if (multiFeatureIndex < 0) multiFeatureIndex = coords.length + multiFeatureIndex;\n        if (geometryIndex < 0) geometryIndex = coords[multiFeatureIndex].length + geometryIndex;\n        if (segmentIndex < 0) segmentIndex = coords[multiFeatureIndex][geometryIndex].length - segmentIndex - 1;\n        return lineString([coords[multiFeatureIndex][geometryIndex][segmentIndex], coords[multiFeatureIndex][geometryIndex][segmentIndex + 1]], properties, options);\n    }\n    throw new Error('geojson is invalid');\n}\n\n/**\n * Finds a particular Point from a GeoJSON using `@turf/meta` indexes.\n *\n * Negative indexes are permitted.\n *\n * @param {FeatureCollection|Feature|Geometry} geojson Any GeoJSON Feature or Geometry\n * @param {Object} [options={}] Optional parameters\n * @param {number} [options.featureIndex=0] Feature Index\n * @param {number} [options.multiFeatureIndex=0] Multi-Feature Index\n * @param {number} [options.geometryIndex=0] Geometry Index\n * @param {number} [options.coordIndex=0] Coord Index\n * @param {Object} [options.properties={}] Translate Properties to output Point\n * @param {BBox} [options.bbox={}] Translate BBox to output Point\n * @param {number|string} [options.id={}] Translate Id to output Point\n * @returns {Feature<Point>} 2-vertex GeoJSON Feature Point\n * @example\n * var multiLine = turf.multiLineString([\n *     [[10, 10], [50, 30], [30, 40]],\n *     [[-10, -10], [-50, -30], [-30, -40]]\n * ]);\n *\n * // First Segment (defaults are 0)\n * turf.findPoint(multiLine);\n * // => Feature<Point<[10, 10]>>\n *\n * // First Segment of the 2nd Multi-Feature\n * turf.findPoint(multiLine, {multiFeatureIndex: 1});\n * // => Feature<Point<[-10, -10]>>\n *\n * // Last Segment of last Multi-Feature\n * turf.findPoint(multiLine, {multiFeatureIndex: -1, coordIndex: -1});\n * // => Feature<Point<[-30, -40]>>\n */\nfunction findPoint(geojson, options) {\n    // Optional Parameters\n    options = options || {};\n    if (!isObject(options)) throw new Error('options is invalid');\n    var featureIndex = options.featureIndex || 0;\n    var multiFeatureIndex = options.multiFeatureIndex || 0;\n    var geometryIndex = options.geometryIndex || 0;\n    var coordIndex = options.coordIndex || 0;\n\n    // Find FeatureIndex\n    var properties = options.properties;\n    var geometry;\n\n    switch (geojson.type) {\n    case 'FeatureCollection':\n        if (featureIndex < 0) featureIndex = geojson.features.length + featureIndex;\n        properties = properties || geojson.features[featureIndex].properties;\n        geometry = geojson.features[featureIndex].geometry;\n        break;\n    case 'Feature':\n        properties = properties || geojson.properties;\n        geometry = geojson.geometry;\n        break;\n    case 'Point':\n    case 'MultiPoint':\n        return null;\n    case 'LineString':\n    case 'Polygon':\n    case 'MultiLineString':\n    case 'MultiPolygon':\n        geometry = geojson;\n        break;\n    default:\n        throw new Error('geojson is invalid');\n    }\n\n    // Find Coord Index\n    if (geometry === null) return null;\n    var coords = geometry.coordinates;\n    switch (geometry.type) {\n    case 'Point':\n        return point(coords, properties, options);\n    case 'MultiPoint':\n        if (multiFeatureIndex < 0) multiFeatureIndex = coords.length + multiFeatureIndex;\n        return point(coords[multiFeatureIndex], properties, options);\n    case 'LineString':\n        if (coordIndex < 0) coordIndex = coords.length + coordIndex;\n        return point(coords[coordIndex], properties, options);\n    case 'Polygon':\n        if (geometryIndex < 0) geometryIndex = coords.length + geometryIndex;\n        if (coordIndex < 0) coordIndex = coords[geometryIndex].length + coordIndex;\n        return point(coords[geometryIndex][coordIndex], properties, options);\n    case 'MultiLineString':\n        if (multiFeatureIndex < 0) multiFeatureIndex = coords.length + multiFeatureIndex;\n        if (coordIndex < 0) coordIndex = coords[multiFeatureIndex].length + coordIndex;\n        return point(coords[multiFeatureIndex][coordIndex], properties, options);\n    case 'MultiPolygon':\n        if (multiFeatureIndex < 0) multiFeatureIndex = coords.length + multiFeatureIndex;\n        if (geometryIndex < 0) geometryIndex = coords[multiFeatureIndex].length + geometryIndex;\n        if (coordIndex < 0) coordIndex = coords[multiFeatureIndex][geometryIndex].length - coordIndex;\n        return point(coords[multiFeatureIndex][geometryIndex][coordIndex], properties, options);\n    }\n    throw new Error('geojson is invalid');\n}\n\nexport { coordEach, coordReduce, propEach, propReduce, featureEach, featureReduce, coordAll, geomEach, geomReduce, flattenEach, flattenReduce, segmentEach, segmentReduce, lineEach, lineReduce, findSegment, findPoint };\n","'use strict';\n\nvar bearing = require('@turf/bearing');\nvar destination = require('@turf/destination');\nvar distance = require('@turf/distance');\n\nfunction _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }\n\nvar bearing__default = /*#__PURE__*/_interopDefaultLegacy(bearing);\nvar destination__default = /*#__PURE__*/_interopDefaultLegacy(destination);\nvar distance__default = /*#__PURE__*/_interopDefaultLegacy(distance);\n\n/**\n * Takes two {@link Point|points} and returns a point midway between them.\n * The midpoint is calculated geodesically, meaning the curvature of the earth is taken into account.\n *\n * @name midpoint\n * @param {Coord} point1 first point\n * @param {Coord} point2 second point\n * @returns {Feature<Point>} a point midway between `pt1` and `pt2`\n * @example\n * var point1 = turf.point([144.834823, -37.771257]);\n * var point2 = turf.point([145.14244, -37.830937]);\n *\n * var midpoint = turf.midpoint(point1, point2);\n *\n * //addToMap\n * var addToMap = [point1, point2, midpoint];\n * midpoint.properties['marker-color'] = '#f00';\n */\nfunction midpoint(point1, point2) {\n  var dist = distance__default['default'](point1, point2);\n  var heading = bearing__default['default'](point1, point2);\n  var midpoint = destination__default['default'](point1, dist / 2, heading);\n\n  return midpoint;\n}\n\nmodule.exports = midpoint;\nmodule.exports.default = midpoint;\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n    return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar bearing_1 = __importDefault(require(\"@turf/bearing\"));\nvar distance_1 = __importDefault(require(\"@turf/distance\"));\nvar destination_1 = __importDefault(require(\"@turf/destination\"));\nvar line_intersect_1 = __importDefault(require(\"@turf/line-intersect\"));\nvar meta_1 = require(\"@turf/meta\");\nvar helpers_1 = require(\"@turf/helpers\");\nvar invariant_1 = require(\"@turf/invariant\");\n/**\n * Takes a {@link Point} and a {@link LineString} and calculates the closest Point on the (Multi)LineString.\n *\n * @name nearestPointOnLine\n * @param {Geometry|Feature<LineString|MultiLineString>} lines lines to snap to\n * @param {Geometry|Feature<Point>|number[]} pt point to snap from\n * @param {Object} [options={}] Optional parameters\n * @param {string} [options.units='kilometers'] can be degrees, radians, miles, or kilometers\n * @returns {Feature<Point>} closest point on the `line` to `point`. The properties object will contain three values: `index`: closest point was found on nth line part, `dist`: distance between pt and the closest point, `location`: distance along the line between start and the closest point.\n * @example\n * var line = turf.lineString([\n *     [-77.031669, 38.878605],\n *     [-77.029609, 38.881946],\n *     [-77.020339, 38.884084],\n *     [-77.025661, 38.885821],\n *     [-77.021884, 38.889563],\n *     [-77.019824, 38.892368]\n * ]);\n * var pt = turf.point([-77.037076, 38.884017]);\n *\n * var snapped = turf.nearestPointOnLine(line, pt, {units: 'miles'});\n *\n * //addToMap\n * var addToMap = [line, pt, snapped];\n * snapped.properties['marker-color'] = '#00f';\n */\nfunction nearestPointOnLine(lines, pt, options) {\n    if (options === void 0) { options = {}; }\n    var closestPt = helpers_1.point([Infinity, Infinity], {\n        dist: Infinity,\n    });\n    var length = 0.0;\n    meta_1.flattenEach(lines, function (line) {\n        var coords = invariant_1.getCoords(line);\n        for (var i = 0; i < coords.length - 1; i++) {\n            //start\n            var start = helpers_1.point(coords[i]);\n            start.properties.dist = distance_1.default(pt, start, options);\n            //stop\n            var stop_1 = helpers_1.point(coords[i + 1]);\n            stop_1.properties.dist = distance_1.default(pt, stop_1, options);\n            // sectionLength\n            var sectionLength = distance_1.default(start, stop_1, options);\n            //perpendicular\n            var heightDistance = Math.max(start.properties.dist, stop_1.properties.dist);\n            var direction = bearing_1.default(start, stop_1);\n            var perpendicularPt1 = destination_1.default(pt, heightDistance, direction + 90, options);\n            var perpendicularPt2 = destination_1.default(pt, heightDistance, direction - 90, options);\n            var intersect = line_intersect_1.default(helpers_1.lineString([\n                perpendicularPt1.geometry.coordinates,\n                perpendicularPt2.geometry.coordinates,\n            ]), helpers_1.lineString([start.geometry.coordinates, stop_1.geometry.coordinates]));\n            var intersectPt = null;\n            if (intersect.features.length > 0) {\n                intersectPt = intersect.features[0];\n                intersectPt.properties.dist = distance_1.default(pt, intersectPt, options);\n                intersectPt.properties.location =\n                    length + distance_1.default(start, intersectPt, options);\n            }\n            if (start.properties.dist < closestPt.properties.dist) {\n                closestPt = start;\n                closestPt.properties.index = i;\n                closestPt.properties.location = length;\n            }\n            if (stop_1.properties.dist < closestPt.properties.dist) {\n                closestPt = stop_1;\n                closestPt.properties.index = i + 1;\n                closestPt.properties.location = length + sectionLength;\n            }\n            if (intersectPt &&\n                intersectPt.properties.dist < closestPt.properties.dist) {\n                closestPt = intersectPt;\n                closestPt.properties.index = i;\n            }\n            // update length\n            length += sectionLength;\n        }\n    });\n    return closestPt;\n}\nexports.default = nearestPointOnLine;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * @module helpers\n */\n/**\n * Earth Radius used with the Harvesine formula and approximates using a spherical (non-ellipsoid) Earth.\n *\n * @memberof helpers\n * @type {number}\n */\nexports.earthRadius = 6371008.8;\n/**\n * Unit of measurement factors using a spherical (non-ellipsoid) earth radius.\n *\n * @memberof helpers\n * @type {Object}\n */\nexports.factors = {\n    centimeters: exports.earthRadius * 100,\n    centimetres: exports.earthRadius * 100,\n    degrees: exports.earthRadius / 111325,\n    feet: exports.earthRadius * 3.28084,\n    inches: exports.earthRadius * 39.37,\n    kilometers: exports.earthRadius / 1000,\n    kilometres: exports.earthRadius / 1000,\n    meters: exports.earthRadius,\n    metres: exports.earthRadius,\n    miles: exports.earthRadius / 1609.344,\n    millimeters: exports.earthRadius * 1000,\n    millimetres: exports.earthRadius * 1000,\n    nauticalmiles: exports.earthRadius / 1852,\n    radians: 1,\n    yards: exports.earthRadius * 1.0936,\n};\n/**\n * Units of measurement factors based on 1 meter.\n *\n * @memberof helpers\n * @type {Object}\n */\nexports.unitsFactors = {\n    centimeters: 100,\n    centimetres: 100,\n    degrees: 1 / 111325,\n    feet: 3.28084,\n    inches: 39.37,\n    kilometers: 1 / 1000,\n    kilometres: 1 / 1000,\n    meters: 1,\n    metres: 1,\n    miles: 1 / 1609.344,\n    millimeters: 1000,\n    millimetres: 1000,\n    nauticalmiles: 1 / 1852,\n    radians: 1 / exports.earthRadius,\n    yards: 1.0936133,\n};\n/**\n * Area of measurement factors based on 1 square meter.\n *\n * @memberof helpers\n * @type {Object}\n */\nexports.areaFactors = {\n    acres: 0.000247105,\n    centimeters: 10000,\n    centimetres: 10000,\n    feet: 10.763910417,\n    hectares: 0.0001,\n    inches: 1550.003100006,\n    kilometers: 0.000001,\n    kilometres: 0.000001,\n    meters: 1,\n    metres: 1,\n    miles: 3.86e-7,\n    millimeters: 1000000,\n    millimetres: 1000000,\n    yards: 1.195990046,\n};\n/**\n * Wraps a GeoJSON {@link Geometry} in a GeoJSON {@link Feature}.\n *\n * @name feature\n * @param {Geometry} geometry input geometry\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} a GeoJSON Feature\n * @example\n * var geometry = {\n *   \"type\": \"Point\",\n *   \"coordinates\": [110, 50]\n * };\n *\n * var feature = turf.feature(geometry);\n *\n * //=feature\n */\nfunction feature(geom, properties, options) {\n    if (options === void 0) { options = {}; }\n    var feat = { type: \"Feature\" };\n    if (options.id === 0 || options.id) {\n        feat.id = options.id;\n    }\n    if (options.bbox) {\n        feat.bbox = options.bbox;\n    }\n    feat.properties = properties || {};\n    feat.geometry = geom;\n    return feat;\n}\nexports.feature = feature;\n/**\n * Creates a GeoJSON {@link Geometry} from a Geometry string type & coordinates.\n * For GeometryCollection type use `helpers.geometryCollection`\n *\n * @name geometry\n * @param {string} type Geometry Type\n * @param {Array<any>} coordinates Coordinates\n * @param {Object} [options={}] Optional Parameters\n * @returns {Geometry} a GeoJSON Geometry\n * @example\n * var type = \"Point\";\n * var coordinates = [110, 50];\n * var geometry = turf.geometry(type, coordinates);\n * // => geometry\n */\nfunction geometry(type, coordinates, _options) {\n    if (_options === void 0) { _options = {}; }\n    switch (type) {\n        case \"Point\":\n            return point(coordinates).geometry;\n        case \"LineString\":\n            return lineString(coordinates).geometry;\n        case \"Polygon\":\n            return polygon(coordinates).geometry;\n        case \"MultiPoint\":\n            return multiPoint(coordinates).geometry;\n        case \"MultiLineString\":\n            return multiLineString(coordinates).geometry;\n        case \"MultiPolygon\":\n            return multiPolygon(coordinates).geometry;\n        default:\n            throw new Error(type + \" is invalid\");\n    }\n}\nexports.geometry = geometry;\n/**\n * Creates a {@link Point} {@link Feature} from a Position.\n *\n * @name point\n * @param {Array<number>} coordinates longitude, latitude position (each in decimal degrees)\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<Point>} a Point feature\n * @example\n * var point = turf.point([-75.343, 39.984]);\n *\n * //=point\n */\nfunction point(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    if (!coordinates) {\n        throw new Error(\"coordinates is required\");\n    }\n    if (!Array.isArray(coordinates)) {\n        throw new Error(\"coordinates must be an Array\");\n    }\n    if (coordinates.length < 2) {\n        throw new Error(\"coordinates must be at least 2 numbers long\");\n    }\n    if (!isNumber(coordinates[0]) || !isNumber(coordinates[1])) {\n        throw new Error(\"coordinates must contain numbers\");\n    }\n    var geom = {\n        type: \"Point\",\n        coordinates: coordinates,\n    };\n    return feature(geom, properties, options);\n}\nexports.point = point;\n/**\n * Creates a {@link Point} {@link FeatureCollection} from an Array of Point coordinates.\n *\n * @name points\n * @param {Array<Array<number>>} coordinates an array of Points\n * @param {Object} [properties={}] Translate these properties to each Feature\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north]\n * associated with the FeatureCollection\n * @param {string|number} [options.id] Identifier associated with the FeatureCollection\n * @returns {FeatureCollection<Point>} Point Feature\n * @example\n * var points = turf.points([\n *   [-75, 39],\n *   [-80, 45],\n *   [-78, 50]\n * ]);\n *\n * //=points\n */\nfunction points(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    return featureCollection(coordinates.map(function (coords) {\n        return point(coords, properties);\n    }), options);\n}\nexports.points = points;\n/**\n * Creates a {@link Polygon} {@link Feature} from an Array of LinearRings.\n *\n * @name polygon\n * @param {Array<Array<Array<number>>>} coordinates an array of LinearRings\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<Polygon>} Polygon Feature\n * @example\n * var polygon = turf.polygon([[[-5, 52], [-4, 56], [-2, 51], [-7, 54], [-5, 52]]], { name: 'poly1' });\n *\n * //=polygon\n */\nfunction polygon(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    for (var _i = 0, coordinates_1 = coordinates; _i < coordinates_1.length; _i++) {\n        var ring = coordinates_1[_i];\n        if (ring.length < 4) {\n            throw new Error(\"Each LinearRing of a Polygon must have 4 or more Positions.\");\n        }\n        for (var j = 0; j < ring[ring.length - 1].length; j++) {\n            // Check if first point of Polygon contains two numbers\n            if (ring[ring.length - 1][j] !== ring[0][j]) {\n                throw new Error(\"First and last Position are not equivalent.\");\n            }\n        }\n    }\n    var geom = {\n        type: \"Polygon\",\n        coordinates: coordinates,\n    };\n    return feature(geom, properties, options);\n}\nexports.polygon = polygon;\n/**\n * Creates a {@link Polygon} {@link FeatureCollection} from an Array of Polygon coordinates.\n *\n * @name polygons\n * @param {Array<Array<Array<Array<number>>>>} coordinates an array of Polygon coordinates\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the FeatureCollection\n * @returns {FeatureCollection<Polygon>} Polygon FeatureCollection\n * @example\n * var polygons = turf.polygons([\n *   [[[-5, 52], [-4, 56], [-2, 51], [-7, 54], [-5, 52]]],\n *   [[[-15, 42], [-14, 46], [-12, 41], [-17, 44], [-15, 42]]],\n * ]);\n *\n * //=polygons\n */\nfunction polygons(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    return featureCollection(coordinates.map(function (coords) {\n        return polygon(coords, properties);\n    }), options);\n}\nexports.polygons = polygons;\n/**\n * Creates a {@link LineString} {@link Feature} from an Array of Positions.\n *\n * @name lineString\n * @param {Array<Array<number>>} coordinates an array of Positions\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<LineString>} LineString Feature\n * @example\n * var linestring1 = turf.lineString([[-24, 63], [-23, 60], [-25, 65], [-20, 69]], {name: 'line 1'});\n * var linestring2 = turf.lineString([[-14, 43], [-13, 40], [-15, 45], [-10, 49]], {name: 'line 2'});\n *\n * //=linestring1\n * //=linestring2\n */\nfunction lineString(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    if (coordinates.length < 2) {\n        throw new Error(\"coordinates must be an array of two or more positions\");\n    }\n    var geom = {\n        type: \"LineString\",\n        coordinates: coordinates,\n    };\n    return feature(geom, properties, options);\n}\nexports.lineString = lineString;\n/**\n * Creates a {@link LineString} {@link FeatureCollection} from an Array of LineString coordinates.\n *\n * @name lineStrings\n * @param {Array<Array<Array<number>>>} coordinates an array of LinearRings\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north]\n * associated with the FeatureCollection\n * @param {string|number} [options.id] Identifier associated with the FeatureCollection\n * @returns {FeatureCollection<LineString>} LineString FeatureCollection\n * @example\n * var linestrings = turf.lineStrings([\n *   [[-24, 63], [-23, 60], [-25, 65], [-20, 69]],\n *   [[-14, 43], [-13, 40], [-15, 45], [-10, 49]]\n * ]);\n *\n * //=linestrings\n */\nfunction lineStrings(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    return featureCollection(coordinates.map(function (coords) {\n        return lineString(coords, properties);\n    }), options);\n}\nexports.lineStrings = lineStrings;\n/**\n * Takes one or more {@link Feature|Features} and creates a {@link FeatureCollection}.\n *\n * @name featureCollection\n * @param {Feature[]} features input features\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {FeatureCollection} FeatureCollection of Features\n * @example\n * var locationA = turf.point([-75.343, 39.984], {name: 'Location A'});\n * var locationB = turf.point([-75.833, 39.284], {name: 'Location B'});\n * var locationC = turf.point([-75.534, 39.123], {name: 'Location C'});\n *\n * var collection = turf.featureCollection([\n *   locationA,\n *   locationB,\n *   locationC\n * ]);\n *\n * //=collection\n */\nfunction featureCollection(features, options) {\n    if (options === void 0) { options = {}; }\n    var fc = { type: \"FeatureCollection\" };\n    if (options.id) {\n        fc.id = options.id;\n    }\n    if (options.bbox) {\n        fc.bbox = options.bbox;\n    }\n    fc.features = features;\n    return fc;\n}\nexports.featureCollection = featureCollection;\n/**\n * Creates a {@link Feature<MultiLineString>} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name multiLineString\n * @param {Array<Array<Array<number>>>} coordinates an array of LineStrings\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<MultiLineString>} a MultiLineString feature\n * @throws {Error} if no coordinates are passed\n * @example\n * var multiLine = turf.multiLineString([[[0,0],[10,10]]]);\n *\n * //=multiLine\n */\nfunction multiLineString(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    var geom = {\n        type: \"MultiLineString\",\n        coordinates: coordinates,\n    };\n    return feature(geom, properties, options);\n}\nexports.multiLineString = multiLineString;\n/**\n * Creates a {@link Feature<MultiPoint>} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name multiPoint\n * @param {Array<Array<number>>} coordinates an array of Positions\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<MultiPoint>} a MultiPoint feature\n * @throws {Error} if no coordinates are passed\n * @example\n * var multiPt = turf.multiPoint([[0,0],[10,10]]);\n *\n * //=multiPt\n */\nfunction multiPoint(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    var geom = {\n        type: \"MultiPoint\",\n        coordinates: coordinates,\n    };\n    return feature(geom, properties, options);\n}\nexports.multiPoint = multiPoint;\n/**\n * Creates a {@link Feature<MultiPolygon>} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name multiPolygon\n * @param {Array<Array<Array<Array<number>>>>} coordinates an array of Polygons\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<MultiPolygon>} a multipolygon feature\n * @throws {Error} if no coordinates are passed\n * @example\n * var multiPoly = turf.multiPolygon([[[[0,0],[0,10],[10,10],[10,0],[0,0]]]]);\n *\n * //=multiPoly\n *\n */\nfunction multiPolygon(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    var geom = {\n        type: \"MultiPolygon\",\n        coordinates: coordinates,\n    };\n    return feature(geom, properties, options);\n}\nexports.multiPolygon = multiPolygon;\n/**\n * Creates a {@link Feature<GeometryCollection>} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name geometryCollection\n * @param {Array<Geometry>} geometries an array of GeoJSON Geometries\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<GeometryCollection>} a GeoJSON GeometryCollection Feature\n * @example\n * var pt = turf.geometry(\"Point\", [100, 0]);\n * var line = turf.geometry(\"LineString\", [[101, 0], [102, 1]]);\n * var collection = turf.geometryCollection([pt, line]);\n *\n * // => collection\n */\nfunction geometryCollection(geometries, properties, options) {\n    if (options === void 0) { options = {}; }\n    var geom = {\n        type: \"GeometryCollection\",\n        geometries: geometries,\n    };\n    return feature(geom, properties, options);\n}\nexports.geometryCollection = geometryCollection;\n/**\n * Round number to precision\n *\n * @param {number} num Number\n * @param {number} [precision=0] Precision\n * @returns {number} rounded number\n * @example\n * turf.round(120.4321)\n * //=120\n *\n * turf.round(120.4321, 2)\n * //=120.43\n */\nfunction round(num, precision) {\n    if (precision === void 0) { precision = 0; }\n    if (precision && !(precision >= 0)) {\n        throw new Error(\"precision must be a positive number\");\n    }\n    var multiplier = Math.pow(10, precision || 0);\n    return Math.round(num * multiplier) / multiplier;\n}\nexports.round = round;\n/**\n * Convert a distance measurement (assuming a spherical Earth) from radians to a more friendly unit.\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet\n *\n * @name radiansToLength\n * @param {number} radians in radians across the sphere\n * @param {string} [units=\"kilometers\"] can be degrees, radians, miles, inches, yards, metres,\n * meters, kilometres, kilometers.\n * @returns {number} distance\n */\nfunction radiansToLength(radians, units) {\n    if (units === void 0) { units = \"kilometers\"; }\n    var factor = exports.factors[units];\n    if (!factor) {\n        throw new Error(units + \" units is invalid\");\n    }\n    return radians * factor;\n}\nexports.radiansToLength = radiansToLength;\n/**\n * Convert a distance measurement (assuming a spherical Earth) from a real-world unit into radians\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet\n *\n * @name lengthToRadians\n * @param {number} distance in real units\n * @param {string} [units=\"kilometers\"] can be degrees, radians, miles, inches, yards, metres,\n * meters, kilometres, kilometers.\n * @returns {number} radians\n */\nfunction lengthToRadians(distance, units) {\n    if (units === void 0) { units = \"kilometers\"; }\n    var factor = exports.factors[units];\n    if (!factor) {\n        throw new Error(units + \" units is invalid\");\n    }\n    return distance / factor;\n}\nexports.lengthToRadians = lengthToRadians;\n/**\n * Convert a distance measurement (assuming a spherical Earth) from a real-world unit into degrees\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, centimeters, kilometres, feet\n *\n * @name lengthToDegrees\n * @param {number} distance in real units\n * @param {string} [units=\"kilometers\"] can be degrees, radians, miles, inches, yards, metres,\n * meters, kilometres, kilometers.\n * @returns {number} degrees\n */\nfunction lengthToDegrees(distance, units) {\n    return radiansToDegrees(lengthToRadians(distance, units));\n}\nexports.lengthToDegrees = lengthToDegrees;\n/**\n * Converts any bearing angle from the north line direction (positive clockwise)\n * and returns an angle between 0-360 degrees (positive clockwise), 0 being the north line\n *\n * @name bearingToAzimuth\n * @param {number} bearing angle, between -180 and +180 degrees\n * @returns {number} angle between 0 and 360 degrees\n */\nfunction bearingToAzimuth(bearing) {\n    var angle = bearing % 360;\n    if (angle < 0) {\n        angle += 360;\n    }\n    return angle;\n}\nexports.bearingToAzimuth = bearingToAzimuth;\n/**\n * Converts an angle in radians to degrees\n *\n * @name radiansToDegrees\n * @param {number} radians angle in radians\n * @returns {number} degrees between 0 and 360 degrees\n */\nfunction radiansToDegrees(radians) {\n    var degrees = radians % (2 * Math.PI);\n    return (degrees * 180) / Math.PI;\n}\nexports.radiansToDegrees = radiansToDegrees;\n/**\n * Converts an angle in degrees to radians\n *\n * @name degreesToRadians\n * @param {number} degrees angle between 0 and 360 degrees\n * @returns {number} angle in radians\n */\nfunction degreesToRadians(degrees) {\n    var radians = degrees % 360;\n    return (radians * Math.PI) / 180;\n}\nexports.degreesToRadians = degreesToRadians;\n/**\n * Converts a length to the requested unit.\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet\n *\n * @param {number} length to be converted\n * @param {Units} [originalUnit=\"kilometers\"] of the length\n * @param {Units} [finalUnit=\"kilometers\"] returned unit\n * @returns {number} the converted length\n */\nfunction convertLength(length, originalUnit, finalUnit) {\n    if (originalUnit === void 0) { originalUnit = \"kilometers\"; }\n    if (finalUnit === void 0) { finalUnit = \"kilometers\"; }\n    if (!(length >= 0)) {\n        throw new Error(\"length must be a positive number\");\n    }\n    return radiansToLength(lengthToRadians(length, originalUnit), finalUnit);\n}\nexports.convertLength = convertLength;\n/**\n * Converts a area to the requested unit.\n * Valid units: kilometers, kilometres, meters, metres, centimetres, millimeters, acres, miles, yards, feet, inches, hectares\n * @param {number} area to be converted\n * @param {Units} [originalUnit=\"meters\"] of the distance\n * @param {Units} [finalUnit=\"kilometers\"] returned unit\n * @returns {number} the converted area\n */\nfunction convertArea(area, originalUnit, finalUnit) {\n    if (originalUnit === void 0) { originalUnit = \"meters\"; }\n    if (finalUnit === void 0) { finalUnit = \"kilometers\"; }\n    if (!(area >= 0)) {\n        throw new Error(\"area must be a positive number\");\n    }\n    var startFactor = exports.areaFactors[originalUnit];\n    if (!startFactor) {\n        throw new Error(\"invalid original units\");\n    }\n    var finalFactor = exports.areaFactors[finalUnit];\n    if (!finalFactor) {\n        throw new Error(\"invalid final units\");\n    }\n    return (area / startFactor) * finalFactor;\n}\nexports.convertArea = convertArea;\n/**\n * isNumber\n *\n * @param {*} num Number to validate\n * @returns {boolean} true/false\n * @example\n * turf.isNumber(123)\n * //=true\n * turf.isNumber('foo')\n * //=false\n */\nfunction isNumber(num) {\n    return !isNaN(num) && num !== null && !Array.isArray(num);\n}\nexports.isNumber = isNumber;\n/**\n * isObject\n *\n * @param {*} input variable to validate\n * @returns {boolean} true/false\n * @example\n * turf.isObject({elevation: 10})\n * //=true\n * turf.isObject('foo')\n * //=false\n */\nfunction isObject(input) {\n    return !!input && input.constructor === Object;\n}\nexports.isObject = isObject;\n/**\n * Validate BBox\n *\n * @private\n * @param {Array<number>} bbox BBox to validate\n * @returns {void}\n * @throws Error if BBox is not valid\n * @example\n * validateBBox([-180, -40, 110, 50])\n * //=OK\n * validateBBox([-180, -40])\n * //=Error\n * validateBBox('Foo')\n * //=Error\n * validateBBox(5)\n * //=Error\n * validateBBox(null)\n * //=Error\n * validateBBox(undefined)\n * //=Error\n */\nfunction validateBBox(bbox) {\n    if (!bbox) {\n        throw new Error(\"bbox is required\");\n    }\n    if (!Array.isArray(bbox)) {\n        throw new Error(\"bbox must be an Array\");\n    }\n    if (bbox.length !== 4 && bbox.length !== 6) {\n        throw new Error(\"bbox must be an Array of 4 or 6 numbers\");\n    }\n    bbox.forEach(function (num) {\n        if (!isNumber(num)) {\n            throw new Error(\"bbox must only contain numbers\");\n        }\n    });\n}\nexports.validateBBox = validateBBox;\n/**\n * Validate Id\n *\n * @private\n * @param {string|number} id Id to validate\n * @returns {void}\n * @throws Error if Id is not valid\n * @example\n * validateId([-180, -40, 110, 50])\n * //=Error\n * validateId([-180, -40])\n * //=Error\n * validateId('Foo')\n * //=OK\n * validateId(5)\n * //=OK\n * validateId(null)\n * //=Error\n * validateId(undefined)\n * //=Error\n */\nfunction validateId(id) {\n    if (!id) {\n        throw new Error(\"id is required\");\n    }\n    if ([\"string\", \"number\"].indexOf(typeof id) === -1) {\n        throw new Error(\"id must be a number or a string\");\n    }\n}\nexports.validateId = validateId;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar helpers_1 = require(\"@turf/helpers\");\n/**\n * Unwrap a coordinate from a Point Feature, Geometry or a single coordinate.\n *\n * @name getCoord\n * @param {Array<number>|Geometry<Point>|Feature<Point>} coord GeoJSON Point or an Array of numbers\n * @returns {Array<number>} coordinates\n * @example\n * var pt = turf.point([10, 10]);\n *\n * var coord = turf.getCoord(pt);\n * //= [10, 10]\n */\nfunction getCoord(coord) {\n    if (!coord) {\n        throw new Error(\"coord is required\");\n    }\n    if (!Array.isArray(coord)) {\n        if (coord.type === \"Feature\" &&\n            coord.geometry !== null &&\n            coord.geometry.type === \"Point\") {\n            return coord.geometry.coordinates;\n        }\n        if (coord.type === \"Point\") {\n            return coord.coordinates;\n        }\n    }\n    if (Array.isArray(coord) &&\n        coord.length >= 2 &&\n        !Array.isArray(coord[0]) &&\n        !Array.isArray(coord[1])) {\n        return coord;\n    }\n    throw new Error(\"coord must be GeoJSON Point or an Array of numbers\");\n}\nexports.getCoord = getCoord;\n/**\n * Unwrap coordinates from a Feature, Geometry Object or an Array\n *\n * @name getCoords\n * @param {Array<any>|Geometry|Feature} coords Feature, Geometry Object or an Array\n * @returns {Array<any>} coordinates\n * @example\n * var poly = turf.polygon([[[119.32, -8.7], [119.55, -8.69], [119.51, -8.54], [119.32, -8.7]]]);\n *\n * var coords = turf.getCoords(poly);\n * //= [[[119.32, -8.7], [119.55, -8.69], [119.51, -8.54], [119.32, -8.7]]]\n */\nfunction getCoords(coords) {\n    if (Array.isArray(coords)) {\n        return coords;\n    }\n    // Feature\n    if (coords.type === \"Feature\") {\n        if (coords.geometry !== null) {\n            return coords.geometry.coordinates;\n        }\n    }\n    else {\n        // Geometry\n        if (coords.coordinates) {\n            return coords.coordinates;\n        }\n    }\n    throw new Error(\"coords must be GeoJSON Feature, Geometry Object or an Array\");\n}\nexports.getCoords = getCoords;\n/**\n * Checks if coordinates contains a number\n *\n * @name containsNumber\n * @param {Array<any>} coordinates GeoJSON Coordinates\n * @returns {boolean} true if Array contains a number\n */\nfunction containsNumber(coordinates) {\n    if (coordinates.length > 1 &&\n        helpers_1.isNumber(coordinates[0]) &&\n        helpers_1.isNumber(coordinates[1])) {\n        return true;\n    }\n    if (Array.isArray(coordinates[0]) && coordinates[0].length) {\n        return containsNumber(coordinates[0]);\n    }\n    throw new Error(\"coordinates must only contain numbers\");\n}\nexports.containsNumber = containsNumber;\n/**\n * Enforce expectations about types of GeoJSON objects for Turf.\n *\n * @name geojsonType\n * @param {GeoJSON} value any GeoJSON object\n * @param {string} type expected GeoJSON type\n * @param {string} name name of calling function\n * @throws {Error} if value is not the expected type.\n */\nfunction geojsonType(value, type, name) {\n    if (!type || !name) {\n        throw new Error(\"type and name required\");\n    }\n    if (!value || value.type !== type) {\n        throw new Error(\"Invalid input to \" +\n            name +\n            \": must be a \" +\n            type +\n            \", given \" +\n            value.type);\n    }\n}\nexports.geojsonType = geojsonType;\n/**\n * Enforce expectations about types of {@link Feature} inputs for Turf.\n * Internally this uses {@link geojsonType} to judge geometry types.\n *\n * @name featureOf\n * @param {Feature} feature a feature with an expected geometry type\n * @param {string} type expected GeoJSON type\n * @param {string} name name of calling function\n * @throws {Error} error if value is not the expected type.\n */\nfunction featureOf(feature, type, name) {\n    if (!feature) {\n        throw new Error(\"No feature passed\");\n    }\n    if (!name) {\n        throw new Error(\".featureOf() requires a name\");\n    }\n    if (!feature || feature.type !== \"Feature\" || !feature.geometry) {\n        throw new Error(\"Invalid input to \" + name + \", Feature with geometry required\");\n    }\n    if (!feature.geometry || feature.geometry.type !== type) {\n        throw new Error(\"Invalid input to \" +\n            name +\n            \": must be a \" +\n            type +\n            \", given \" +\n            feature.geometry.type);\n    }\n}\nexports.featureOf = featureOf;\n/**\n * Enforce expectations about types of {@link FeatureCollection} inputs for Turf.\n * Internally this uses {@link geojsonType} to judge geometry types.\n *\n * @name collectionOf\n * @param {FeatureCollection} featureCollection a FeatureCollection for which features will be judged\n * @param {string} type expected GeoJSON type\n * @param {string} name name of calling function\n * @throws {Error} if value is not the expected type.\n */\nfunction collectionOf(featureCollection, type, name) {\n    if (!featureCollection) {\n        throw new Error(\"No featureCollection passed\");\n    }\n    if (!name) {\n        throw new Error(\".collectionOf() requires a name\");\n    }\n    if (!featureCollection || featureCollection.type !== \"FeatureCollection\") {\n        throw new Error(\"Invalid input to \" + name + \", FeatureCollection required\");\n    }\n    for (var _i = 0, _a = featureCollection.features; _i < _a.length; _i++) {\n        var feature = _a[_i];\n        if (!feature || feature.type !== \"Feature\" || !feature.geometry) {\n            throw new Error(\"Invalid input to \" + name + \", Feature with geometry required\");\n        }\n        if (!feature.geometry || feature.geometry.type !== type) {\n            throw new Error(\"Invalid input to \" +\n                name +\n                \": must be a \" +\n                type +\n                \", given \" +\n                feature.geometry.type);\n        }\n    }\n}\nexports.collectionOf = collectionOf;\n/**\n * Get Geometry from Feature or Geometry Object\n *\n * @param {Feature|Geometry} geojson GeoJSON Feature or Geometry Object\n * @returns {Geometry|null} GeoJSON Geometry Object\n * @throws {Error} if geojson is not a Feature or Geometry Object\n * @example\n * var point = {\n *   \"type\": \"Feature\",\n *   \"properties\": {},\n *   \"geometry\": {\n *     \"type\": \"Point\",\n *     \"coordinates\": [110, 40]\n *   }\n * }\n * var geom = turf.getGeom(point)\n * //={\"type\": \"Point\", \"coordinates\": [110, 40]}\n */\nfunction getGeom(geojson) {\n    if (geojson.type === \"Feature\") {\n        return geojson.geometry;\n    }\n    return geojson;\n}\nexports.getGeom = getGeom;\n/**\n * Get GeoJSON object's type, Geometry type is prioritize.\n *\n * @param {GeoJSON} geojson GeoJSON object\n * @param {string} [name=\"geojson\"] name of the variable to display in error message (unused)\n * @returns {string} GeoJSON type\n * @example\n * var point = {\n *   \"type\": \"Feature\",\n *   \"properties\": {},\n *   \"geometry\": {\n *     \"type\": \"Point\",\n *     \"coordinates\": [110, 40]\n *   }\n * }\n * var geom = turf.getType(point)\n * //=\"Point\"\n */\nfunction getType(geojson, _name) {\n    if (geojson.type === \"FeatureCollection\") {\n        return \"FeatureCollection\";\n    }\n    if (geojson.type === \"GeometryCollection\") {\n        return \"GeometryCollection\";\n    }\n    if (geojson.type === \"Feature\" && geojson.geometry !== null) {\n        return geojson.geometry.type;\n    }\n    return geojson.type;\n}\nexports.getType = getType;\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nvar helpers = require('@turf/helpers');\n\n/**\n * Callback for coordEach\n *\n * @callback coordEachCallback\n * @param {Array<number>} currentCoord The current coordinate being processed.\n * @param {number} coordIndex The current index of the coordinate being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n * @param {number} geometryIndex The current index of the Geometry being processed.\n */\n\n/**\n * Iterate over coordinates in any GeoJSON object, similar to Array.forEach()\n *\n * @name coordEach\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (currentCoord, coordIndex, featureIndex, multiFeatureIndex)\n * @param {boolean} [excludeWrapCoord=false] whether or not to include the final coordinate of LinearRings that wraps the ring in its iteration.\n * @returns {void}\n * @example\n * var features = turf.featureCollection([\n *   turf.point([26, 37], {\"foo\": \"bar\"}),\n *   turf.point([36, 53], {\"hello\": \"world\"})\n * ]);\n *\n * turf.coordEach(features, function (currentCoord, coordIndex, featureIndex, multiFeatureIndex, geometryIndex) {\n *   //=currentCoord\n *   //=coordIndex\n *   //=featureIndex\n *   //=multiFeatureIndex\n *   //=geometryIndex\n * });\n */\nfunction coordEach(geojson, callback, excludeWrapCoord) {\n  // Handles null Geometry -- Skips this GeoJSON\n  if (geojson === null) return;\n  var j,\n    k,\n    l,\n    geometry,\n    stopG,\n    coords,\n    geometryMaybeCollection,\n    wrapShrink = 0,\n    coordIndex = 0,\n    isGeometryCollection,\n    type = geojson.type,\n    isFeatureCollection = type === \"FeatureCollection\",\n    isFeature = type === \"Feature\",\n    stop = isFeatureCollection ? geojson.features.length : 1;\n\n  // This logic may look a little weird. The reason why it is that way\n  // is because it's trying to be fast. GeoJSON supports multiple kinds\n  // of objects at its root: FeatureCollection, Features, Geometries.\n  // This function has the responsibility of handling all of them, and that\n  // means that some of the `for` loops you see below actually just don't apply\n  // to certain inputs. For instance, if you give this just a\n  // Point geometry, then both loops are short-circuited and all we do\n  // is gradually rename the input until it's called 'geometry'.\n  //\n  // This also aims to allocate as few resources as possible: just a\n  // few numbers and booleans, rather than any temporary arrays as would\n  // be required with the normalization approach.\n  for (var featureIndex = 0; featureIndex < stop; featureIndex++) {\n    geometryMaybeCollection = isFeatureCollection\n      ? geojson.features[featureIndex].geometry\n      : isFeature\n      ? geojson.geometry\n      : geojson;\n    isGeometryCollection = geometryMaybeCollection\n      ? geometryMaybeCollection.type === \"GeometryCollection\"\n      : false;\n    stopG = isGeometryCollection\n      ? geometryMaybeCollection.geometries.length\n      : 1;\n\n    for (var geomIndex = 0; geomIndex < stopG; geomIndex++) {\n      var multiFeatureIndex = 0;\n      var geometryIndex = 0;\n      geometry = isGeometryCollection\n        ? geometryMaybeCollection.geometries[geomIndex]\n        : geometryMaybeCollection;\n\n      // Handles null Geometry -- Skips this geometry\n      if (geometry === null) continue;\n      coords = geometry.coordinates;\n      var geomType = geometry.type;\n\n      wrapShrink =\n        excludeWrapCoord &&\n        (geomType === \"Polygon\" || geomType === \"MultiPolygon\")\n          ? 1\n          : 0;\n\n      switch (geomType) {\n        case null:\n          break;\n        case \"Point\":\n          if (\n            callback(\n              coords,\n              coordIndex,\n              featureIndex,\n              multiFeatureIndex,\n              geometryIndex\n            ) === false\n          )\n            return false;\n          coordIndex++;\n          multiFeatureIndex++;\n          break;\n        case \"LineString\":\n        case \"MultiPoint\":\n          for (j = 0; j < coords.length; j++) {\n            if (\n              callback(\n                coords[j],\n                coordIndex,\n                featureIndex,\n                multiFeatureIndex,\n                geometryIndex\n              ) === false\n            )\n              return false;\n            coordIndex++;\n            if (geomType === \"MultiPoint\") multiFeatureIndex++;\n          }\n          if (geomType === \"LineString\") multiFeatureIndex++;\n          break;\n        case \"Polygon\":\n        case \"MultiLineString\":\n          for (j = 0; j < coords.length; j++) {\n            for (k = 0; k < coords[j].length - wrapShrink; k++) {\n              if (\n                callback(\n                  coords[j][k],\n                  coordIndex,\n                  featureIndex,\n                  multiFeatureIndex,\n                  geometryIndex\n                ) === false\n              )\n                return false;\n              coordIndex++;\n            }\n            if (geomType === \"MultiLineString\") multiFeatureIndex++;\n            if (geomType === \"Polygon\") geometryIndex++;\n          }\n          if (geomType === \"Polygon\") multiFeatureIndex++;\n          break;\n        case \"MultiPolygon\":\n          for (j = 0; j < coords.length; j++) {\n            geometryIndex = 0;\n            for (k = 0; k < coords[j].length; k++) {\n              for (l = 0; l < coords[j][k].length - wrapShrink; l++) {\n                if (\n                  callback(\n                    coords[j][k][l],\n                    coordIndex,\n                    featureIndex,\n                    multiFeatureIndex,\n                    geometryIndex\n                  ) === false\n                )\n                  return false;\n                coordIndex++;\n              }\n              geometryIndex++;\n            }\n            multiFeatureIndex++;\n          }\n          break;\n        case \"GeometryCollection\":\n          for (j = 0; j < geometry.geometries.length; j++)\n            if (\n              coordEach(geometry.geometries[j], callback, excludeWrapCoord) ===\n              false\n            )\n              return false;\n          break;\n        default:\n          throw new Error(\"Unknown Geometry Type\");\n      }\n    }\n  }\n}\n\n/**\n * Callback for coordReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n *  - The previousValue argument is initialValue.\n *  - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n *  - The previousValue argument is the value of the first element present in the array.\n *  - The currentValue argument is the value of the second element present in the array.\n *\n * @callback coordReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Array<number>} currentCoord The current coordinate being processed.\n * @param {number} coordIndex The current index of the coordinate being processed.\n * Starts at index 0, if an initialValue is provided, and at index 1 otherwise.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n * @param {number} geometryIndex The current index of the Geometry being processed.\n */\n\n/**\n * Reduce coordinates in any GeoJSON object, similar to Array.reduce()\n *\n * @name coordReduce\n * @param {FeatureCollection|Geometry|Feature} geojson any GeoJSON object\n * @param {Function} callback a method that takes (previousValue, currentCoord, coordIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @param {boolean} [excludeWrapCoord=false] whether or not to include the final coordinate of LinearRings that wraps the ring in its iteration.\n * @returns {*} The value that results from the reduction.\n * @example\n * var features = turf.featureCollection([\n *   turf.point([26, 37], {\"foo\": \"bar\"}),\n *   turf.point([36, 53], {\"hello\": \"world\"})\n * ]);\n *\n * turf.coordReduce(features, function (previousValue, currentCoord, coordIndex, featureIndex, multiFeatureIndex, geometryIndex) {\n *   //=previousValue\n *   //=currentCoord\n *   //=coordIndex\n *   //=featureIndex\n *   //=multiFeatureIndex\n *   //=geometryIndex\n *   return currentCoord;\n * });\n */\nfunction coordReduce(geojson, callback, initialValue, excludeWrapCoord) {\n  var previousValue = initialValue;\n  coordEach(\n    geojson,\n    function (\n      currentCoord,\n      coordIndex,\n      featureIndex,\n      multiFeatureIndex,\n      geometryIndex\n    ) {\n      if (coordIndex === 0 && initialValue === undefined)\n        previousValue = currentCoord;\n      else\n        previousValue = callback(\n          previousValue,\n          currentCoord,\n          coordIndex,\n          featureIndex,\n          multiFeatureIndex,\n          geometryIndex\n        );\n    },\n    excludeWrapCoord\n  );\n  return previousValue;\n}\n\n/**\n * Callback for propEach\n *\n * @callback propEachCallback\n * @param {Object} currentProperties The current Properties being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n */\n\n/**\n * Iterate over properties in any GeoJSON object, similar to Array.forEach()\n *\n * @name propEach\n * @param {FeatureCollection|Feature} geojson any GeoJSON object\n * @param {Function} callback a method that takes (currentProperties, featureIndex)\n * @returns {void}\n * @example\n * var features = turf.featureCollection([\n *     turf.point([26, 37], {foo: 'bar'}),\n *     turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * turf.propEach(features, function (currentProperties, featureIndex) {\n *   //=currentProperties\n *   //=featureIndex\n * });\n */\nfunction propEach(geojson, callback) {\n  var i;\n  switch (geojson.type) {\n    case \"FeatureCollection\":\n      for (i = 0; i < geojson.features.length; i++) {\n        if (callback(geojson.features[i].properties, i) === false) break;\n      }\n      break;\n    case \"Feature\":\n      callback(geojson.properties, 0);\n      break;\n  }\n}\n\n/**\n * Callback for propReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n *  - The previousValue argument is initialValue.\n *  - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n *  - The previousValue argument is the value of the first element present in the array.\n *  - The currentValue argument is the value of the second element present in the array.\n *\n * @callback propReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {*} currentProperties The current Properties being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n */\n\n/**\n * Reduce properties in any GeoJSON object into a single value,\n * similar to how Array.reduce works. However, in this case we lazily run\n * the reduction, so an array of all properties is unnecessary.\n *\n * @name propReduce\n * @param {FeatureCollection|Feature} geojson any GeoJSON object\n * @param {Function} callback a method that takes (previousValue, currentProperties, featureIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {*} The value that results from the reduction.\n * @example\n * var features = turf.featureCollection([\n *     turf.point([26, 37], {foo: 'bar'}),\n *     turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * turf.propReduce(features, function (previousValue, currentProperties, featureIndex) {\n *   //=previousValue\n *   //=currentProperties\n *   //=featureIndex\n *   return currentProperties\n * });\n */\nfunction propReduce(geojson, callback, initialValue) {\n  var previousValue = initialValue;\n  propEach(geojson, function (currentProperties, featureIndex) {\n    if (featureIndex === 0 && initialValue === undefined)\n      previousValue = currentProperties;\n    else\n      previousValue = callback(previousValue, currentProperties, featureIndex);\n  });\n  return previousValue;\n}\n\n/**\n * Callback for featureEach\n *\n * @callback featureEachCallback\n * @param {Feature<any>} currentFeature The current Feature being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n */\n\n/**\n * Iterate over features in any GeoJSON object, similar to\n * Array.forEach.\n *\n * @name featureEach\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (currentFeature, featureIndex)\n * @returns {void}\n * @example\n * var features = turf.featureCollection([\n *   turf.point([26, 37], {foo: 'bar'}),\n *   turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * turf.featureEach(features, function (currentFeature, featureIndex) {\n *   //=currentFeature\n *   //=featureIndex\n * });\n */\nfunction featureEach(geojson, callback) {\n  if (geojson.type === \"Feature\") {\n    callback(geojson, 0);\n  } else if (geojson.type === \"FeatureCollection\") {\n    for (var i = 0; i < geojson.features.length; i++) {\n      if (callback(geojson.features[i], i) === false) break;\n    }\n  }\n}\n\n/**\n * Callback for featureReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n *  - The previousValue argument is initialValue.\n *  - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n *  - The previousValue argument is the value of the first element present in the array.\n *  - The currentValue argument is the value of the second element present in the array.\n *\n * @callback featureReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Feature} currentFeature The current Feature being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n */\n\n/**\n * Reduce features in any GeoJSON object, similar to Array.reduce().\n *\n * @name featureReduce\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (previousValue, currentFeature, featureIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {*} The value that results from the reduction.\n * @example\n * var features = turf.featureCollection([\n *   turf.point([26, 37], {\"foo\": \"bar\"}),\n *   turf.point([36, 53], {\"hello\": \"world\"})\n * ]);\n *\n * turf.featureReduce(features, function (previousValue, currentFeature, featureIndex) {\n *   //=previousValue\n *   //=currentFeature\n *   //=featureIndex\n *   return currentFeature\n * });\n */\nfunction featureReduce(geojson, callback, initialValue) {\n  var previousValue = initialValue;\n  featureEach(geojson, function (currentFeature, featureIndex) {\n    if (featureIndex === 0 && initialValue === undefined)\n      previousValue = currentFeature;\n    else previousValue = callback(previousValue, currentFeature, featureIndex);\n  });\n  return previousValue;\n}\n\n/**\n * Get all coordinates from any GeoJSON object.\n *\n * @name coordAll\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @returns {Array<Array<number>>} coordinate position array\n * @example\n * var features = turf.featureCollection([\n *   turf.point([26, 37], {foo: 'bar'}),\n *   turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * var coords = turf.coordAll(features);\n * //= [[26, 37], [36, 53]]\n */\nfunction coordAll(geojson) {\n  var coords = [];\n  coordEach(geojson, function (coord) {\n    coords.push(coord);\n  });\n  return coords;\n}\n\n/**\n * Callback for geomEach\n *\n * @callback geomEachCallback\n * @param {Geometry} currentGeometry The current Geometry being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {Object} featureProperties The current Feature Properties being processed.\n * @param {Array<number>} featureBBox The current Feature BBox being processed.\n * @param {number|string} featureId The current Feature Id being processed.\n */\n\n/**\n * Iterate over each geometry in any GeoJSON object, similar to Array.forEach()\n *\n * @name geomEach\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (currentGeometry, featureIndex, featureProperties, featureBBox, featureId)\n * @returns {void}\n * @example\n * var features = turf.featureCollection([\n *     turf.point([26, 37], {foo: 'bar'}),\n *     turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * turf.geomEach(features, function (currentGeometry, featureIndex, featureProperties, featureBBox, featureId) {\n *   //=currentGeometry\n *   //=featureIndex\n *   //=featureProperties\n *   //=featureBBox\n *   //=featureId\n * });\n */\nfunction geomEach(geojson, callback) {\n  var i,\n    j,\n    g,\n    geometry,\n    stopG,\n    geometryMaybeCollection,\n    isGeometryCollection,\n    featureProperties,\n    featureBBox,\n    featureId,\n    featureIndex = 0,\n    isFeatureCollection = geojson.type === \"FeatureCollection\",\n    isFeature = geojson.type === \"Feature\",\n    stop = isFeatureCollection ? geojson.features.length : 1;\n\n  // This logic may look a little weird. The reason why it is that way\n  // is because it's trying to be fast. GeoJSON supports multiple kinds\n  // of objects at its root: FeatureCollection, Features, Geometries.\n  // This function has the responsibility of handling all of them, and that\n  // means that some of the `for` loops you see below actually just don't apply\n  // to certain inputs. For instance, if you give this just a\n  // Point geometry, then both loops are short-circuited and all we do\n  // is gradually rename the input until it's called 'geometry'.\n  //\n  // This also aims to allocate as few resources as possible: just a\n  // few numbers and booleans, rather than any temporary arrays as would\n  // be required with the normalization approach.\n  for (i = 0; i < stop; i++) {\n    geometryMaybeCollection = isFeatureCollection\n      ? geojson.features[i].geometry\n      : isFeature\n      ? geojson.geometry\n      : geojson;\n    featureProperties = isFeatureCollection\n      ? geojson.features[i].properties\n      : isFeature\n      ? geojson.properties\n      : {};\n    featureBBox = isFeatureCollection\n      ? geojson.features[i].bbox\n      : isFeature\n      ? geojson.bbox\n      : undefined;\n    featureId = isFeatureCollection\n      ? geojson.features[i].id\n      : isFeature\n      ? geojson.id\n      : undefined;\n    isGeometryCollection = geometryMaybeCollection\n      ? geometryMaybeCollection.type === \"GeometryCollection\"\n      : false;\n    stopG = isGeometryCollection\n      ? geometryMaybeCollection.geometries.length\n      : 1;\n\n    for (g = 0; g < stopG; g++) {\n      geometry = isGeometryCollection\n        ? geometryMaybeCollection.geometries[g]\n        : geometryMaybeCollection;\n\n      // Handle null Geometry\n      if (geometry === null) {\n        if (\n          callback(\n            null,\n            featureIndex,\n            featureProperties,\n            featureBBox,\n            featureId\n          ) === false\n        )\n          return false;\n        continue;\n      }\n      switch (geometry.type) {\n        case \"Point\":\n        case \"LineString\":\n        case \"MultiPoint\":\n        case \"Polygon\":\n        case \"MultiLineString\":\n        case \"MultiPolygon\": {\n          if (\n            callback(\n              geometry,\n              featureIndex,\n              featureProperties,\n              featureBBox,\n              featureId\n            ) === false\n          )\n            return false;\n          break;\n        }\n        case \"GeometryCollection\": {\n          for (j = 0; j < geometry.geometries.length; j++) {\n            if (\n              callback(\n                geometry.geometries[j],\n                featureIndex,\n                featureProperties,\n                featureBBox,\n                featureId\n              ) === false\n            )\n              return false;\n          }\n          break;\n        }\n        default:\n          throw new Error(\"Unknown Geometry Type\");\n      }\n    }\n    // Only increase `featureIndex` per each feature\n    featureIndex++;\n  }\n}\n\n/**\n * Callback for geomReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n *  - The previousValue argument is initialValue.\n *  - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n *  - The previousValue argument is the value of the first element present in the array.\n *  - The currentValue argument is the value of the second element present in the array.\n *\n * @callback geomReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Geometry} currentGeometry The current Geometry being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {Object} featureProperties The current Feature Properties being processed.\n * @param {Array<number>} featureBBox The current Feature BBox being processed.\n * @param {number|string} featureId The current Feature Id being processed.\n */\n\n/**\n * Reduce geometry in any GeoJSON object, similar to Array.reduce().\n *\n * @name geomReduce\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (previousValue, currentGeometry, featureIndex, featureProperties, featureBBox, featureId)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {*} The value that results from the reduction.\n * @example\n * var features = turf.featureCollection([\n *     turf.point([26, 37], {foo: 'bar'}),\n *     turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * turf.geomReduce(features, function (previousValue, currentGeometry, featureIndex, featureProperties, featureBBox, featureId) {\n *   //=previousValue\n *   //=currentGeometry\n *   //=featureIndex\n *   //=featureProperties\n *   //=featureBBox\n *   //=featureId\n *   return currentGeometry\n * });\n */\nfunction geomReduce(geojson, callback, initialValue) {\n  var previousValue = initialValue;\n  geomEach(\n    geojson,\n    function (\n      currentGeometry,\n      featureIndex,\n      featureProperties,\n      featureBBox,\n      featureId\n    ) {\n      if (featureIndex === 0 && initialValue === undefined)\n        previousValue = currentGeometry;\n      else\n        previousValue = callback(\n          previousValue,\n          currentGeometry,\n          featureIndex,\n          featureProperties,\n          featureBBox,\n          featureId\n        );\n    }\n  );\n  return previousValue;\n}\n\n/**\n * Callback for flattenEach\n *\n * @callback flattenEachCallback\n * @param {Feature} currentFeature The current flattened feature being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n */\n\n/**\n * Iterate over flattened features in any GeoJSON object, similar to\n * Array.forEach.\n *\n * @name flattenEach\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (currentFeature, featureIndex, multiFeatureIndex)\n * @example\n * var features = turf.featureCollection([\n *     turf.point([26, 37], {foo: 'bar'}),\n *     turf.multiPoint([[40, 30], [36, 53]], {hello: 'world'})\n * ]);\n *\n * turf.flattenEach(features, function (currentFeature, featureIndex, multiFeatureIndex) {\n *   //=currentFeature\n *   //=featureIndex\n *   //=multiFeatureIndex\n * });\n */\nfunction flattenEach(geojson, callback) {\n  geomEach(geojson, function (geometry, featureIndex, properties, bbox, id) {\n    // Callback for single geometry\n    var type = geometry === null ? null : geometry.type;\n    switch (type) {\n      case null:\n      case \"Point\":\n      case \"LineString\":\n      case \"Polygon\":\n        if (\n          callback(\n            helpers.feature(geometry, properties, { bbox: bbox, id: id }),\n            featureIndex,\n            0\n          ) === false\n        )\n          return false;\n        return;\n    }\n\n    var geomType;\n\n    // Callback for multi-geometry\n    switch (type) {\n      case \"MultiPoint\":\n        geomType = \"Point\";\n        break;\n      case \"MultiLineString\":\n        geomType = \"LineString\";\n        break;\n      case \"MultiPolygon\":\n        geomType = \"Polygon\";\n        break;\n    }\n\n    for (\n      var multiFeatureIndex = 0;\n      multiFeatureIndex < geometry.coordinates.length;\n      multiFeatureIndex++\n    ) {\n      var coordinate = geometry.coordinates[multiFeatureIndex];\n      var geom = {\n        type: geomType,\n        coordinates: coordinate,\n      };\n      if (\n        callback(helpers.feature(geom, properties), featureIndex, multiFeatureIndex) ===\n        false\n      )\n        return false;\n    }\n  });\n}\n\n/**\n * Callback for flattenReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n *  - The previousValue argument is initialValue.\n *  - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n *  - The previousValue argument is the value of the first element present in the array.\n *  - The currentValue argument is the value of the second element present in the array.\n *\n * @callback flattenReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Feature} currentFeature The current Feature being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n */\n\n/**\n * Reduce flattened features in any GeoJSON object, similar to Array.reduce().\n *\n * @name flattenReduce\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (previousValue, currentFeature, featureIndex, multiFeatureIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {*} The value that results from the reduction.\n * @example\n * var features = turf.featureCollection([\n *     turf.point([26, 37], {foo: 'bar'}),\n *     turf.multiPoint([[40, 30], [36, 53]], {hello: 'world'})\n * ]);\n *\n * turf.flattenReduce(features, function (previousValue, currentFeature, featureIndex, multiFeatureIndex) {\n *   //=previousValue\n *   //=currentFeature\n *   //=featureIndex\n *   //=multiFeatureIndex\n *   return currentFeature\n * });\n */\nfunction flattenReduce(geojson, callback, initialValue) {\n  var previousValue = initialValue;\n  flattenEach(\n    geojson,\n    function (currentFeature, featureIndex, multiFeatureIndex) {\n      if (\n        featureIndex === 0 &&\n        multiFeatureIndex === 0 &&\n        initialValue === undefined\n      )\n        previousValue = currentFeature;\n      else\n        previousValue = callback(\n          previousValue,\n          currentFeature,\n          featureIndex,\n          multiFeatureIndex\n        );\n    }\n  );\n  return previousValue;\n}\n\n/**\n * Callback for segmentEach\n *\n * @callback segmentEachCallback\n * @param {Feature<LineString>} currentSegment The current Segment being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n * @param {number} geometryIndex The current index of the Geometry being processed.\n * @param {number} segmentIndex The current index of the Segment being processed.\n * @returns {void}\n */\n\n/**\n * Iterate over 2-vertex line segment in any GeoJSON object, similar to Array.forEach()\n * (Multi)Point geometries do not contain segments therefore they are ignored during this operation.\n *\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON\n * @param {Function} callback a method that takes (currentSegment, featureIndex, multiFeatureIndex, geometryIndex, segmentIndex)\n * @returns {void}\n * @example\n * var polygon = turf.polygon([[[-50, 5], [-40, -10], [-50, -10], [-40, 5], [-50, 5]]]);\n *\n * // Iterate over GeoJSON by 2-vertex segments\n * turf.segmentEach(polygon, function (currentSegment, featureIndex, multiFeatureIndex, geometryIndex, segmentIndex) {\n *   //=currentSegment\n *   //=featureIndex\n *   //=multiFeatureIndex\n *   //=geometryIndex\n *   //=segmentIndex\n * });\n *\n * // Calculate the total number of segments\n * var total = 0;\n * turf.segmentEach(polygon, function () {\n *     total++;\n * });\n */\nfunction segmentEach(geojson, callback) {\n  flattenEach(geojson, function (feature, featureIndex, multiFeatureIndex) {\n    var segmentIndex = 0;\n\n    // Exclude null Geometries\n    if (!feature.geometry) return;\n    // (Multi)Point geometries do not contain segments therefore they are ignored during this operation.\n    var type = feature.geometry.type;\n    if (type === \"Point\" || type === \"MultiPoint\") return;\n\n    // Generate 2-vertex line segments\n    var previousCoords;\n    var previousFeatureIndex = 0;\n    var previousMultiIndex = 0;\n    var prevGeomIndex = 0;\n    if (\n      coordEach(\n        feature,\n        function (\n          currentCoord,\n          coordIndex,\n          featureIndexCoord,\n          multiPartIndexCoord,\n          geometryIndex\n        ) {\n          // Simulating a meta.coordReduce() since `reduce` operations cannot be stopped by returning `false`\n          if (\n            previousCoords === undefined ||\n            featureIndex > previousFeatureIndex ||\n            multiPartIndexCoord > previousMultiIndex ||\n            geometryIndex > prevGeomIndex\n          ) {\n            previousCoords = currentCoord;\n            previousFeatureIndex = featureIndex;\n            previousMultiIndex = multiPartIndexCoord;\n            prevGeomIndex = geometryIndex;\n            segmentIndex = 0;\n            return;\n          }\n          var currentSegment = helpers.lineString(\n            [previousCoords, currentCoord],\n            feature.properties\n          );\n          if (\n            callback(\n              currentSegment,\n              featureIndex,\n              multiFeatureIndex,\n              geometryIndex,\n              segmentIndex\n            ) === false\n          )\n            return false;\n          segmentIndex++;\n          previousCoords = currentCoord;\n        }\n      ) === false\n    )\n      return false;\n  });\n}\n\n/**\n * Callback for segmentReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n *  - The previousValue argument is initialValue.\n *  - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n *  - The previousValue argument is the value of the first element present in the array.\n *  - The currentValue argument is the value of the second element present in the array.\n *\n * @callback segmentReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Feature<LineString>} currentSegment The current Segment being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n * @param {number} geometryIndex The current index of the Geometry being processed.\n * @param {number} segmentIndex The current index of the Segment being processed.\n */\n\n/**\n * Reduce 2-vertex line segment in any GeoJSON object, similar to Array.reduce()\n * (Multi)Point geometries do not contain segments therefore they are ignored during this operation.\n *\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON\n * @param {Function} callback a method that takes (previousValue, currentSegment, currentIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {void}\n * @example\n * var polygon = turf.polygon([[[-50, 5], [-40, -10], [-50, -10], [-40, 5], [-50, 5]]]);\n *\n * // Iterate over GeoJSON by 2-vertex segments\n * turf.segmentReduce(polygon, function (previousSegment, currentSegment, featureIndex, multiFeatureIndex, geometryIndex, segmentIndex) {\n *   //= previousSegment\n *   //= currentSegment\n *   //= featureIndex\n *   //= multiFeatureIndex\n *   //= geometryIndex\n *   //= segmentIndex\n *   return currentSegment\n * });\n *\n * // Calculate the total number of segments\n * var initialValue = 0\n * var total = turf.segmentReduce(polygon, function (previousValue) {\n *     previousValue++;\n *     return previousValue;\n * }, initialValue);\n */\nfunction segmentReduce(geojson, callback, initialValue) {\n  var previousValue = initialValue;\n  var started = false;\n  segmentEach(\n    geojson,\n    function (\n      currentSegment,\n      featureIndex,\n      multiFeatureIndex,\n      geometryIndex,\n      segmentIndex\n    ) {\n      if (started === false && initialValue === undefined)\n        previousValue = currentSegment;\n      else\n        previousValue = callback(\n          previousValue,\n          currentSegment,\n          featureIndex,\n          multiFeatureIndex,\n          geometryIndex,\n          segmentIndex\n        );\n      started = true;\n    }\n  );\n  return previousValue;\n}\n\n/**\n * Callback for lineEach\n *\n * @callback lineEachCallback\n * @param {Feature<LineString>} currentLine The current LineString|LinearRing being processed\n * @param {number} featureIndex The current index of the Feature being processed\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed\n * @param {number} geometryIndex The current index of the Geometry being processed\n */\n\n/**\n * Iterate over line or ring coordinates in LineString, Polygon, MultiLineString, MultiPolygon Features or Geometries,\n * similar to Array.forEach.\n *\n * @name lineEach\n * @param {Geometry|Feature<LineString|Polygon|MultiLineString|MultiPolygon>} geojson object\n * @param {Function} callback a method that takes (currentLine, featureIndex, multiFeatureIndex, geometryIndex)\n * @example\n * var multiLine = turf.multiLineString([\n *   [[26, 37], [35, 45]],\n *   [[36, 53], [38, 50], [41, 55]]\n * ]);\n *\n * turf.lineEach(multiLine, function (currentLine, featureIndex, multiFeatureIndex, geometryIndex) {\n *   //=currentLine\n *   //=featureIndex\n *   //=multiFeatureIndex\n *   //=geometryIndex\n * });\n */\nfunction lineEach(geojson, callback) {\n  // validation\n  if (!geojson) throw new Error(\"geojson is required\");\n\n  flattenEach(geojson, function (feature, featureIndex, multiFeatureIndex) {\n    if (feature.geometry === null) return;\n    var type = feature.geometry.type;\n    var coords = feature.geometry.coordinates;\n    switch (type) {\n      case \"LineString\":\n        if (callback(feature, featureIndex, multiFeatureIndex, 0, 0) === false)\n          return false;\n        break;\n      case \"Polygon\":\n        for (\n          var geometryIndex = 0;\n          geometryIndex < coords.length;\n          geometryIndex++\n        ) {\n          if (\n            callback(\n              helpers.lineString(coords[geometryIndex], feature.properties),\n              featureIndex,\n              multiFeatureIndex,\n              geometryIndex\n            ) === false\n          )\n            return false;\n        }\n        break;\n    }\n  });\n}\n\n/**\n * Callback for lineReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n *  - The previousValue argument is initialValue.\n *  - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n *  - The previousValue argument is the value of the first element present in the array.\n *  - The currentValue argument is the value of the second element present in the array.\n *\n * @callback lineReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Feature<LineString>} currentLine The current LineString|LinearRing being processed.\n * @param {number} featureIndex The current index of the Feature being processed\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed\n * @param {number} geometryIndex The current index of the Geometry being processed\n */\n\n/**\n * Reduce features in any GeoJSON object, similar to Array.reduce().\n *\n * @name lineReduce\n * @param {Geometry|Feature<LineString|Polygon|MultiLineString|MultiPolygon>} geojson object\n * @param {Function} callback a method that takes (previousValue, currentLine, featureIndex, multiFeatureIndex, geometryIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {*} The value that results from the reduction.\n * @example\n * var multiPoly = turf.multiPolygon([\n *   turf.polygon([[[12,48],[2,41],[24,38],[12,48]], [[9,44],[13,41],[13,45],[9,44]]]),\n *   turf.polygon([[[5, 5], [0, 0], [2, 2], [4, 4], [5, 5]]])\n * ]);\n *\n * turf.lineReduce(multiPoly, function (previousValue, currentLine, featureIndex, multiFeatureIndex, geometryIndex) {\n *   //=previousValue\n *   //=currentLine\n *   //=featureIndex\n *   //=multiFeatureIndex\n *   //=geometryIndex\n *   return currentLine\n * });\n */\nfunction lineReduce(geojson, callback, initialValue) {\n  var previousValue = initialValue;\n  lineEach(\n    geojson,\n    function (currentLine, featureIndex, multiFeatureIndex, geometryIndex) {\n      if (featureIndex === 0 && initialValue === undefined)\n        previousValue = currentLine;\n      else\n        previousValue = callback(\n          previousValue,\n          currentLine,\n          featureIndex,\n          multiFeatureIndex,\n          geometryIndex\n        );\n    }\n  );\n  return previousValue;\n}\n\n/**\n * Finds a particular 2-vertex LineString Segment from a GeoJSON using `@turf/meta` indexes.\n *\n * Negative indexes are permitted.\n * Point & MultiPoint will always return null.\n *\n * @param {FeatureCollection|Feature|Geometry} geojson Any GeoJSON Feature or Geometry\n * @param {Object} [options={}] Optional parameters\n * @param {number} [options.featureIndex=0] Feature Index\n * @param {number} [options.multiFeatureIndex=0] Multi-Feature Index\n * @param {number} [options.geometryIndex=0] Geometry Index\n * @param {number} [options.segmentIndex=0] Segment Index\n * @param {Object} [options.properties={}] Translate Properties to output LineString\n * @param {BBox} [options.bbox={}] Translate BBox to output LineString\n * @param {number|string} [options.id={}] Translate Id to output LineString\n * @returns {Feature<LineString>} 2-vertex GeoJSON Feature LineString\n * @example\n * var multiLine = turf.multiLineString([\n *     [[10, 10], [50, 30], [30, 40]],\n *     [[-10, -10], [-50, -30], [-30, -40]]\n * ]);\n *\n * // First Segment (defaults are 0)\n * turf.findSegment(multiLine);\n * // => Feature<LineString<[[10, 10], [50, 30]]>>\n *\n * // First Segment of 2nd Multi Feature\n * turf.findSegment(multiLine, {multiFeatureIndex: 1});\n * // => Feature<LineString<[[-10, -10], [-50, -30]]>>\n *\n * // Last Segment of Last Multi Feature\n * turf.findSegment(multiLine, {multiFeatureIndex: -1, segmentIndex: -1});\n * // => Feature<LineString<[[-50, -30], [-30, -40]]>>\n */\nfunction findSegment(geojson, options) {\n  // Optional Parameters\n  options = options || {};\n  if (!helpers.isObject(options)) throw new Error(\"options is invalid\");\n  var featureIndex = options.featureIndex || 0;\n  var multiFeatureIndex = options.multiFeatureIndex || 0;\n  var geometryIndex = options.geometryIndex || 0;\n  var segmentIndex = options.segmentIndex || 0;\n\n  // Find FeatureIndex\n  var properties = options.properties;\n  var geometry;\n\n  switch (geojson.type) {\n    case \"FeatureCollection\":\n      if (featureIndex < 0)\n        featureIndex = geojson.features.length + featureIndex;\n      properties = properties || geojson.features[featureIndex].properties;\n      geometry = geojson.features[featureIndex].geometry;\n      break;\n    case \"Feature\":\n      properties = properties || geojson.properties;\n      geometry = geojson.geometry;\n      break;\n    case \"Point\":\n    case \"MultiPoint\":\n      return null;\n    case \"LineString\":\n    case \"Polygon\":\n    case \"MultiLineString\":\n    case \"MultiPolygon\":\n      geometry = geojson;\n      break;\n    default:\n      throw new Error(\"geojson is invalid\");\n  }\n\n  // Find SegmentIndex\n  if (geometry === null) return null;\n  var coords = geometry.coordinates;\n  switch (geometry.type) {\n    case \"Point\":\n    case \"MultiPoint\":\n      return null;\n    case \"LineString\":\n      if (segmentIndex < 0) segmentIndex = coords.length + segmentIndex - 1;\n      return helpers.lineString(\n        [coords[segmentIndex], coords[segmentIndex + 1]],\n        properties,\n        options\n      );\n    case \"Polygon\":\n      if (geometryIndex < 0) geometryIndex = coords.length + geometryIndex;\n      if (segmentIndex < 0)\n        segmentIndex = coords[geometryIndex].length + segmentIndex - 1;\n      return helpers.lineString(\n        [\n          coords[geometryIndex][segmentIndex],\n          coords[geometryIndex][segmentIndex + 1],\n        ],\n        properties,\n        options\n      );\n    case \"MultiLineString\":\n      if (multiFeatureIndex < 0)\n        multiFeatureIndex = coords.length + multiFeatureIndex;\n      if (segmentIndex < 0)\n        segmentIndex = coords[multiFeatureIndex].length + segmentIndex - 1;\n      return helpers.lineString(\n        [\n          coords[multiFeatureIndex][segmentIndex],\n          coords[multiFeatureIndex][segmentIndex + 1],\n        ],\n        properties,\n        options\n      );\n    case \"MultiPolygon\":\n      if (multiFeatureIndex < 0)\n        multiFeatureIndex = coords.length + multiFeatureIndex;\n      if (geometryIndex < 0)\n        geometryIndex = coords[multiFeatureIndex].length + geometryIndex;\n      if (segmentIndex < 0)\n        segmentIndex =\n          coords[multiFeatureIndex][geometryIndex].length - segmentIndex - 1;\n      return helpers.lineString(\n        [\n          coords[multiFeatureIndex][geometryIndex][segmentIndex],\n          coords[multiFeatureIndex][geometryIndex][segmentIndex + 1],\n        ],\n        properties,\n        options\n      );\n  }\n  throw new Error(\"geojson is invalid\");\n}\n\n/**\n * Finds a particular Point from a GeoJSON using `@turf/meta` indexes.\n *\n * Negative indexes are permitted.\n *\n * @param {FeatureCollection|Feature|Geometry} geojson Any GeoJSON Feature or Geometry\n * @param {Object} [options={}] Optional parameters\n * @param {number} [options.featureIndex=0] Feature Index\n * @param {number} [options.multiFeatureIndex=0] Multi-Feature Index\n * @param {number} [options.geometryIndex=0] Geometry Index\n * @param {number} [options.coordIndex=0] Coord Index\n * @param {Object} [options.properties={}] Translate Properties to output Point\n * @param {BBox} [options.bbox={}] Translate BBox to output Point\n * @param {number|string} [options.id={}] Translate Id to output Point\n * @returns {Feature<Point>} 2-vertex GeoJSON Feature Point\n * @example\n * var multiLine = turf.multiLineString([\n *     [[10, 10], [50, 30], [30, 40]],\n *     [[-10, -10], [-50, -30], [-30, -40]]\n * ]);\n *\n * // First Segment (defaults are 0)\n * turf.findPoint(multiLine);\n * // => Feature<Point<[10, 10]>>\n *\n * // First Segment of the 2nd Multi-Feature\n * turf.findPoint(multiLine, {multiFeatureIndex: 1});\n * // => Feature<Point<[-10, -10]>>\n *\n * // Last Segment of last Multi-Feature\n * turf.findPoint(multiLine, {multiFeatureIndex: -1, coordIndex: -1});\n * // => Feature<Point<[-30, -40]>>\n */\nfunction findPoint(geojson, options) {\n  // Optional Parameters\n  options = options || {};\n  if (!helpers.isObject(options)) throw new Error(\"options is invalid\");\n  var featureIndex = options.featureIndex || 0;\n  var multiFeatureIndex = options.multiFeatureIndex || 0;\n  var geometryIndex = options.geometryIndex || 0;\n  var coordIndex = options.coordIndex || 0;\n\n  // Find FeatureIndex\n  var properties = options.properties;\n  var geometry;\n\n  switch (geojson.type) {\n    case \"FeatureCollection\":\n      if (featureIndex < 0)\n        featureIndex = geojson.features.length + featureIndex;\n      properties = properties || geojson.features[featureIndex].properties;\n      geometry = geojson.features[featureIndex].geometry;\n      break;\n    case \"Feature\":\n      properties = properties || geojson.properties;\n      geometry = geojson.geometry;\n      break;\n    case \"Point\":\n    case \"MultiPoint\":\n      return null;\n    case \"LineString\":\n    case \"Polygon\":\n    case \"MultiLineString\":\n    case \"MultiPolygon\":\n      geometry = geojson;\n      break;\n    default:\n      throw new Error(\"geojson is invalid\");\n  }\n\n  // Find Coord Index\n  if (geometry === null) return null;\n  var coords = geometry.coordinates;\n  switch (geometry.type) {\n    case \"Point\":\n      return helpers.point(coords, properties, options);\n    case \"MultiPoint\":\n      if (multiFeatureIndex < 0)\n        multiFeatureIndex = coords.length + multiFeatureIndex;\n      return helpers.point(coords[multiFeatureIndex], properties, options);\n    case \"LineString\":\n      if (coordIndex < 0) coordIndex = coords.length + coordIndex;\n      return helpers.point(coords[coordIndex], properties, options);\n    case \"Polygon\":\n      if (geometryIndex < 0) geometryIndex = coords.length + geometryIndex;\n      if (coordIndex < 0)\n        coordIndex = coords[geometryIndex].length + coordIndex;\n      return helpers.point(coords[geometryIndex][coordIndex], properties, options);\n    case \"MultiLineString\":\n      if (multiFeatureIndex < 0)\n        multiFeatureIndex = coords.length + multiFeatureIndex;\n      if (coordIndex < 0)\n        coordIndex = coords[multiFeatureIndex].length + coordIndex;\n      return helpers.point(coords[multiFeatureIndex][coordIndex], properties, options);\n    case \"MultiPolygon\":\n      if (multiFeatureIndex < 0)\n        multiFeatureIndex = coords.length + multiFeatureIndex;\n      if (geometryIndex < 0)\n        geometryIndex = coords[multiFeatureIndex].length + geometryIndex;\n      if (coordIndex < 0)\n        coordIndex =\n          coords[multiFeatureIndex][geometryIndex].length - coordIndex;\n      return helpers.point(\n        coords[multiFeatureIndex][geometryIndex][coordIndex],\n        properties,\n        options\n      );\n  }\n  throw new Error(\"geojson is invalid\");\n}\n\nexports.coordAll = coordAll;\nexports.coordEach = coordEach;\nexports.coordReduce = coordReduce;\nexports.featureEach = featureEach;\nexports.featureReduce = featureReduce;\nexports.findPoint = findPoint;\nexports.findSegment = findSegment;\nexports.flattenEach = flattenEach;\nexports.flattenReduce = flattenReduce;\nexports.geomEach = geomEach;\nexports.geomReduce = geomReduce;\nexports.lineEach = lineEach;\nexports.lineReduce = lineReduce;\nexports.propEach = propEach;\nexports.propReduce = propReduce;\nexports.segmentEach = segmentEach;\nexports.segmentReduce = segmentReduce;\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n    return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n// Taken from http://geomalgorithms.com/a02-_lines.html\nvar distance_1 = __importDefault(require(\"@turf/distance\"));\nvar helpers_1 = require(\"@turf/helpers\");\nvar invariant_1 = require(\"@turf/invariant\");\nvar meta_1 = require(\"@turf/meta\");\nvar rhumb_distance_1 = __importDefault(require(\"@turf/rhumb-distance\"));\n/**\n * Returns the minimum distance between a {@link Point} and a {@link LineString}, being the distance from a line the\n * minimum distance between the point and any segment of the `LineString`.\n *\n * @name pointToLineDistance\n * @param {Feature<Point>|Array<number>} pt Feature or Geometry\n * @param {Feature<LineString>} line GeoJSON Feature or Geometry\n * @param {Object} [options={}] Optional parameters\n * @param {string} [options.units=\"kilometers\"] can be anything supported by turf/convertLength\n * (ex: degrees, radians, miles, or kilometers)\n * @param {string} [options.method=\"geodesic\"] wether to calculate the distance based on geodesic (spheroid) or\n * planar (flat) method. Valid options are 'geodesic' or 'planar'.\n * @returns {number} distance between point and line\n * @example\n * var pt = turf.point([0, 0]);\n * var line = turf.lineString([[1, 1],[-1, 1]]);\n *\n * var distance = turf.pointToLineDistance(pt, line, {units: 'miles'});\n * //=69.11854715938406\n */\nfunction pointToLineDistance(pt, line, options) {\n    if (options === void 0) { options = {}; }\n    // Optional parameters\n    if (!options.method) {\n        options.method = \"geodesic\";\n    }\n    if (!options.units) {\n        options.units = \"kilometers\";\n    }\n    // validation\n    if (!pt) {\n        throw new Error(\"pt is required\");\n    }\n    if (Array.isArray(pt)) {\n        pt = helpers_1.point(pt);\n    }\n    else if (pt.type === \"Point\") {\n        pt = helpers_1.feature(pt);\n    }\n    else {\n        invariant_1.featureOf(pt, \"Point\", \"point\");\n    }\n    if (!line) {\n        throw new Error(\"line is required\");\n    }\n    if (Array.isArray(line)) {\n        line = helpers_1.lineString(line);\n    }\n    else if (line.type === \"LineString\") {\n        line = helpers_1.feature(line);\n    }\n    else {\n        invariant_1.featureOf(line, \"LineString\", \"line\");\n    }\n    var distance = Infinity;\n    var p = pt.geometry.coordinates;\n    meta_1.segmentEach(line, function (segment) {\n        var a = segment.geometry.coordinates[0];\n        var b = segment.geometry.coordinates[1];\n        var d = distanceToSegment(p, a, b, options);\n        if (d < distance) {\n            distance = d;\n        }\n    });\n    return helpers_1.convertLength(distance, \"degrees\", options.units);\n}\n/**\n * Returns the distance between a point P on a segment AB.\n *\n * @private\n * @param {Array<number>} p external point\n * @param {Array<number>} a first segment point\n * @param {Array<number>} b second segment point\n * @param {Object} [options={}] Optional parameters\n * @returns {number} distance\n */\nfunction distanceToSegment(p, a, b, options) {\n    var v = [b[0] - a[0], b[1] - a[1]];\n    var w = [p[0] - a[0], p[1] - a[1]];\n    var c1 = dot(w, v);\n    if (c1 <= 0) {\n        return calcDistance(p, a, { method: options.method, units: \"degrees\" });\n    }\n    var c2 = dot(v, v);\n    if (c2 <= c1) {\n        return calcDistance(p, b, { method: options.method, units: \"degrees\" });\n    }\n    var b2 = c1 / c2;\n    var Pb = [a[0] + b2 * v[0], a[1] + b2 * v[1]];\n    return calcDistance(p, Pb, { method: options.method, units: \"degrees\" });\n}\nfunction dot(u, v) {\n    return u[0] * v[0] + u[1] * v[1];\n}\nfunction calcDistance(a, b, options) {\n    return options.method === \"planar\"\n        ? rhumb_distance_1.default(a, b, options)\n        : distance_1.default(a, b, options);\n}\nexports.default = pointToLineDistance;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * @module helpers\n */\n/**\n * Earth Radius used with the Harvesine formula and approximates using a spherical (non-ellipsoid) Earth.\n *\n * @memberof helpers\n * @type {number}\n */\nexports.earthRadius = 6371008.8;\n/**\n * Unit of measurement factors using a spherical (non-ellipsoid) earth radius.\n *\n * @memberof helpers\n * @type {Object}\n */\nexports.factors = {\n    centimeters: exports.earthRadius * 100,\n    centimetres: exports.earthRadius * 100,\n    degrees: exports.earthRadius / 111325,\n    feet: exports.earthRadius * 3.28084,\n    inches: exports.earthRadius * 39.37,\n    kilometers: exports.earthRadius / 1000,\n    kilometres: exports.earthRadius / 1000,\n    meters: exports.earthRadius,\n    metres: exports.earthRadius,\n    miles: exports.earthRadius / 1609.344,\n    millimeters: exports.earthRadius * 1000,\n    millimetres: exports.earthRadius * 1000,\n    nauticalmiles: exports.earthRadius / 1852,\n    radians: 1,\n    yards: exports.earthRadius * 1.0936,\n};\n/**\n * Units of measurement factors based on 1 meter.\n *\n * @memberof helpers\n * @type {Object}\n */\nexports.unitsFactors = {\n    centimeters: 100,\n    centimetres: 100,\n    degrees: 1 / 111325,\n    feet: 3.28084,\n    inches: 39.37,\n    kilometers: 1 / 1000,\n    kilometres: 1 / 1000,\n    meters: 1,\n    metres: 1,\n    miles: 1 / 1609.344,\n    millimeters: 1000,\n    millimetres: 1000,\n    nauticalmiles: 1 / 1852,\n    radians: 1 / exports.earthRadius,\n    yards: 1.0936133,\n};\n/**\n * Area of measurement factors based on 1 square meter.\n *\n * @memberof helpers\n * @type {Object}\n */\nexports.areaFactors = {\n    acres: 0.000247105,\n    centimeters: 10000,\n    centimetres: 10000,\n    feet: 10.763910417,\n    hectares: 0.0001,\n    inches: 1550.003100006,\n    kilometers: 0.000001,\n    kilometres: 0.000001,\n    meters: 1,\n    metres: 1,\n    miles: 3.86e-7,\n    millimeters: 1000000,\n    millimetres: 1000000,\n    yards: 1.195990046,\n};\n/**\n * Wraps a GeoJSON {@link Geometry} in a GeoJSON {@link Feature}.\n *\n * @name feature\n * @param {Geometry} geometry input geometry\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} a GeoJSON Feature\n * @example\n * var geometry = {\n *   \"type\": \"Point\",\n *   \"coordinates\": [110, 50]\n * };\n *\n * var feature = turf.feature(geometry);\n *\n * //=feature\n */\nfunction feature(geom, properties, options) {\n    if (options === void 0) { options = {}; }\n    var feat = { type: \"Feature\" };\n    if (options.id === 0 || options.id) {\n        feat.id = options.id;\n    }\n    if (options.bbox) {\n        feat.bbox = options.bbox;\n    }\n    feat.properties = properties || {};\n    feat.geometry = geom;\n    return feat;\n}\nexports.feature = feature;\n/**\n * Creates a GeoJSON {@link Geometry} from a Geometry string type & coordinates.\n * For GeometryCollection type use `helpers.geometryCollection`\n *\n * @name geometry\n * @param {string} type Geometry Type\n * @param {Array<any>} coordinates Coordinates\n * @param {Object} [options={}] Optional Parameters\n * @returns {Geometry} a GeoJSON Geometry\n * @example\n * var type = \"Point\";\n * var coordinates = [110, 50];\n * var geometry = turf.geometry(type, coordinates);\n * // => geometry\n */\nfunction geometry(type, coordinates, _options) {\n    if (_options === void 0) { _options = {}; }\n    switch (type) {\n        case \"Point\":\n            return point(coordinates).geometry;\n        case \"LineString\":\n            return lineString(coordinates).geometry;\n        case \"Polygon\":\n            return polygon(coordinates).geometry;\n        case \"MultiPoint\":\n            return multiPoint(coordinates).geometry;\n        case \"MultiLineString\":\n            return multiLineString(coordinates).geometry;\n        case \"MultiPolygon\":\n            return multiPolygon(coordinates).geometry;\n        default:\n            throw new Error(type + \" is invalid\");\n    }\n}\nexports.geometry = geometry;\n/**\n * Creates a {@link Point} {@link Feature} from a Position.\n *\n * @name point\n * @param {Array<number>} coordinates longitude, latitude position (each in decimal degrees)\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<Point>} a Point feature\n * @example\n * var point = turf.point([-75.343, 39.984]);\n *\n * //=point\n */\nfunction point(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    if (!coordinates) {\n        throw new Error(\"coordinates is required\");\n    }\n    if (!Array.isArray(coordinates)) {\n        throw new Error(\"coordinates must be an Array\");\n    }\n    if (coordinates.length < 2) {\n        throw new Error(\"coordinates must be at least 2 numbers long\");\n    }\n    if (!isNumber(coordinates[0]) || !isNumber(coordinates[1])) {\n        throw new Error(\"coordinates must contain numbers\");\n    }\n    var geom = {\n        type: \"Point\",\n        coordinates: coordinates,\n    };\n    return feature(geom, properties, options);\n}\nexports.point = point;\n/**\n * Creates a {@link Point} {@link FeatureCollection} from an Array of Point coordinates.\n *\n * @name points\n * @param {Array<Array<number>>} coordinates an array of Points\n * @param {Object} [properties={}] Translate these properties to each Feature\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north]\n * associated with the FeatureCollection\n * @param {string|number} [options.id] Identifier associated with the FeatureCollection\n * @returns {FeatureCollection<Point>} Point Feature\n * @example\n * var points = turf.points([\n *   [-75, 39],\n *   [-80, 45],\n *   [-78, 50]\n * ]);\n *\n * //=points\n */\nfunction points(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    return featureCollection(coordinates.map(function (coords) {\n        return point(coords, properties);\n    }), options);\n}\nexports.points = points;\n/**\n * Creates a {@link Polygon} {@link Feature} from an Array of LinearRings.\n *\n * @name polygon\n * @param {Array<Array<Array<number>>>} coordinates an array of LinearRings\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<Polygon>} Polygon Feature\n * @example\n * var polygon = turf.polygon([[[-5, 52], [-4, 56], [-2, 51], [-7, 54], [-5, 52]]], { name: 'poly1' });\n *\n * //=polygon\n */\nfunction polygon(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    for (var _i = 0, coordinates_1 = coordinates; _i < coordinates_1.length; _i++) {\n        var ring = coordinates_1[_i];\n        if (ring.length < 4) {\n            throw new Error(\"Each LinearRing of a Polygon must have 4 or more Positions.\");\n        }\n        for (var j = 0; j < ring[ring.length - 1].length; j++) {\n            // Check if first point of Polygon contains two numbers\n            if (ring[ring.length - 1][j] !== ring[0][j]) {\n                throw new Error(\"First and last Position are not equivalent.\");\n            }\n        }\n    }\n    var geom = {\n        type: \"Polygon\",\n        coordinates: coordinates,\n    };\n    return feature(geom, properties, options);\n}\nexports.polygon = polygon;\n/**\n * Creates a {@link Polygon} {@link FeatureCollection} from an Array of Polygon coordinates.\n *\n * @name polygons\n * @param {Array<Array<Array<Array<number>>>>} coordinates an array of Polygon coordinates\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the FeatureCollection\n * @returns {FeatureCollection<Polygon>} Polygon FeatureCollection\n * @example\n * var polygons = turf.polygons([\n *   [[[-5, 52], [-4, 56], [-2, 51], [-7, 54], [-5, 52]]],\n *   [[[-15, 42], [-14, 46], [-12, 41], [-17, 44], [-15, 42]]],\n * ]);\n *\n * //=polygons\n */\nfunction polygons(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    return featureCollection(coordinates.map(function (coords) {\n        return polygon(coords, properties);\n    }), options);\n}\nexports.polygons = polygons;\n/**\n * Creates a {@link LineString} {@link Feature} from an Array of Positions.\n *\n * @name lineString\n * @param {Array<Array<number>>} coordinates an array of Positions\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<LineString>} LineString Feature\n * @example\n * var linestring1 = turf.lineString([[-24, 63], [-23, 60], [-25, 65], [-20, 69]], {name: 'line 1'});\n * var linestring2 = turf.lineString([[-14, 43], [-13, 40], [-15, 45], [-10, 49]], {name: 'line 2'});\n *\n * //=linestring1\n * //=linestring2\n */\nfunction lineString(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    if (coordinates.length < 2) {\n        throw new Error(\"coordinates must be an array of two or more positions\");\n    }\n    var geom = {\n        type: \"LineString\",\n        coordinates: coordinates,\n    };\n    return feature(geom, properties, options);\n}\nexports.lineString = lineString;\n/**\n * Creates a {@link LineString} {@link FeatureCollection} from an Array of LineString coordinates.\n *\n * @name lineStrings\n * @param {Array<Array<Array<number>>>} coordinates an array of LinearRings\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north]\n * associated with the FeatureCollection\n * @param {string|number} [options.id] Identifier associated with the FeatureCollection\n * @returns {FeatureCollection<LineString>} LineString FeatureCollection\n * @example\n * var linestrings = turf.lineStrings([\n *   [[-24, 63], [-23, 60], [-25, 65], [-20, 69]],\n *   [[-14, 43], [-13, 40], [-15, 45], [-10, 49]]\n * ]);\n *\n * //=linestrings\n */\nfunction lineStrings(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    return featureCollection(coordinates.map(function (coords) {\n        return lineString(coords, properties);\n    }), options);\n}\nexports.lineStrings = lineStrings;\n/**\n * Takes one or more {@link Feature|Features} and creates a {@link FeatureCollection}.\n *\n * @name featureCollection\n * @param {Feature[]} features input features\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {FeatureCollection} FeatureCollection of Features\n * @example\n * var locationA = turf.point([-75.343, 39.984], {name: 'Location A'});\n * var locationB = turf.point([-75.833, 39.284], {name: 'Location B'});\n * var locationC = turf.point([-75.534, 39.123], {name: 'Location C'});\n *\n * var collection = turf.featureCollection([\n *   locationA,\n *   locationB,\n *   locationC\n * ]);\n *\n * //=collection\n */\nfunction featureCollection(features, options) {\n    if (options === void 0) { options = {}; }\n    var fc = { type: \"FeatureCollection\" };\n    if (options.id) {\n        fc.id = options.id;\n    }\n    if (options.bbox) {\n        fc.bbox = options.bbox;\n    }\n    fc.features = features;\n    return fc;\n}\nexports.featureCollection = featureCollection;\n/**\n * Creates a {@link Feature<MultiLineString>} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name multiLineString\n * @param {Array<Array<Array<number>>>} coordinates an array of LineStrings\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<MultiLineString>} a MultiLineString feature\n * @throws {Error} if no coordinates are passed\n * @example\n * var multiLine = turf.multiLineString([[[0,0],[10,10]]]);\n *\n * //=multiLine\n */\nfunction multiLineString(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    var geom = {\n        type: \"MultiLineString\",\n        coordinates: coordinates,\n    };\n    return feature(geom, properties, options);\n}\nexports.multiLineString = multiLineString;\n/**\n * Creates a {@link Feature<MultiPoint>} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name multiPoint\n * @param {Array<Array<number>>} coordinates an array of Positions\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<MultiPoint>} a MultiPoint feature\n * @throws {Error} if no coordinates are passed\n * @example\n * var multiPt = turf.multiPoint([[0,0],[10,10]]);\n *\n * //=multiPt\n */\nfunction multiPoint(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    var geom = {\n        type: \"MultiPoint\",\n        coordinates: coordinates,\n    };\n    return feature(geom, properties, options);\n}\nexports.multiPoint = multiPoint;\n/**\n * Creates a {@link Feature<MultiPolygon>} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name multiPolygon\n * @param {Array<Array<Array<Array<number>>>>} coordinates an array of Polygons\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<MultiPolygon>} a multipolygon feature\n * @throws {Error} if no coordinates are passed\n * @example\n * var multiPoly = turf.multiPolygon([[[[0,0],[0,10],[10,10],[10,0],[0,0]]]]);\n *\n * //=multiPoly\n *\n */\nfunction multiPolygon(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    var geom = {\n        type: \"MultiPolygon\",\n        coordinates: coordinates,\n    };\n    return feature(geom, properties, options);\n}\nexports.multiPolygon = multiPolygon;\n/**\n * Creates a {@link Feature<GeometryCollection>} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name geometryCollection\n * @param {Array<Geometry>} geometries an array of GeoJSON Geometries\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<GeometryCollection>} a GeoJSON GeometryCollection Feature\n * @example\n * var pt = turf.geometry(\"Point\", [100, 0]);\n * var line = turf.geometry(\"LineString\", [[101, 0], [102, 1]]);\n * var collection = turf.geometryCollection([pt, line]);\n *\n * // => collection\n */\nfunction geometryCollection(geometries, properties, options) {\n    if (options === void 0) { options = {}; }\n    var geom = {\n        type: \"GeometryCollection\",\n        geometries: geometries,\n    };\n    return feature(geom, properties, options);\n}\nexports.geometryCollection = geometryCollection;\n/**\n * Round number to precision\n *\n * @param {number} num Number\n * @param {number} [precision=0] Precision\n * @returns {number} rounded number\n * @example\n * turf.round(120.4321)\n * //=120\n *\n * turf.round(120.4321, 2)\n * //=120.43\n */\nfunction round(num, precision) {\n    if (precision === void 0) { precision = 0; }\n    if (precision && !(precision >= 0)) {\n        throw new Error(\"precision must be a positive number\");\n    }\n    var multiplier = Math.pow(10, precision || 0);\n    return Math.round(num * multiplier) / multiplier;\n}\nexports.round = round;\n/**\n * Convert a distance measurement (assuming a spherical Earth) from radians to a more friendly unit.\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet\n *\n * @name radiansToLength\n * @param {number} radians in radians across the sphere\n * @param {string} [units=\"kilometers\"] can be degrees, radians, miles, inches, yards, metres,\n * meters, kilometres, kilometers.\n * @returns {number} distance\n */\nfunction radiansToLength(radians, units) {\n    if (units === void 0) { units = \"kilometers\"; }\n    var factor = exports.factors[units];\n    if (!factor) {\n        throw new Error(units + \" units is invalid\");\n    }\n    return radians * factor;\n}\nexports.radiansToLength = radiansToLength;\n/**\n * Convert a distance measurement (assuming a spherical Earth) from a real-world unit into radians\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet\n *\n * @name lengthToRadians\n * @param {number} distance in real units\n * @param {string} [units=\"kilometers\"] can be degrees, radians, miles, inches, yards, metres,\n * meters, kilometres, kilometers.\n * @returns {number} radians\n */\nfunction lengthToRadians(distance, units) {\n    if (units === void 0) { units = \"kilometers\"; }\n    var factor = exports.factors[units];\n    if (!factor) {\n        throw new Error(units + \" units is invalid\");\n    }\n    return distance / factor;\n}\nexports.lengthToRadians = lengthToRadians;\n/**\n * Convert a distance measurement (assuming a spherical Earth) from a real-world unit into degrees\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, centimeters, kilometres, feet\n *\n * @name lengthToDegrees\n * @param {number} distance in real units\n * @param {string} [units=\"kilometers\"] can be degrees, radians, miles, inches, yards, metres,\n * meters, kilometres, kilometers.\n * @returns {number} degrees\n */\nfunction lengthToDegrees(distance, units) {\n    return radiansToDegrees(lengthToRadians(distance, units));\n}\nexports.lengthToDegrees = lengthToDegrees;\n/**\n * Converts any bearing angle from the north line direction (positive clockwise)\n * and returns an angle between 0-360 degrees (positive clockwise), 0 being the north line\n *\n * @name bearingToAzimuth\n * @param {number} bearing angle, between -180 and +180 degrees\n * @returns {number} angle between 0 and 360 degrees\n */\nfunction bearingToAzimuth(bearing) {\n    var angle = bearing % 360;\n    if (angle < 0) {\n        angle += 360;\n    }\n    return angle;\n}\nexports.bearingToAzimuth = bearingToAzimuth;\n/**\n * Converts an angle in radians to degrees\n *\n * @name radiansToDegrees\n * @param {number} radians angle in radians\n * @returns {number} degrees between 0 and 360 degrees\n */\nfunction radiansToDegrees(radians) {\n    var degrees = radians % (2 * Math.PI);\n    return (degrees * 180) / Math.PI;\n}\nexports.radiansToDegrees = radiansToDegrees;\n/**\n * Converts an angle in degrees to radians\n *\n * @name degreesToRadians\n * @param {number} degrees angle between 0 and 360 degrees\n * @returns {number} angle in radians\n */\nfunction degreesToRadians(degrees) {\n    var radians = degrees % 360;\n    return (radians * Math.PI) / 180;\n}\nexports.degreesToRadians = degreesToRadians;\n/**\n * Converts a length to the requested unit.\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet\n *\n * @param {number} length to be converted\n * @param {Units} [originalUnit=\"kilometers\"] of the length\n * @param {Units} [finalUnit=\"kilometers\"] returned unit\n * @returns {number} the converted length\n */\nfunction convertLength(length, originalUnit, finalUnit) {\n    if (originalUnit === void 0) { originalUnit = \"kilometers\"; }\n    if (finalUnit === void 0) { finalUnit = \"kilometers\"; }\n    if (!(length >= 0)) {\n        throw new Error(\"length must be a positive number\");\n    }\n    return radiansToLength(lengthToRadians(length, originalUnit), finalUnit);\n}\nexports.convertLength = convertLength;\n/**\n * Converts a area to the requested unit.\n * Valid units: kilometers, kilometres, meters, metres, centimetres, millimeters, acres, miles, yards, feet, inches, hectares\n * @param {number} area to be converted\n * @param {Units} [originalUnit=\"meters\"] of the distance\n * @param {Units} [finalUnit=\"kilometers\"] returned unit\n * @returns {number} the converted area\n */\nfunction convertArea(area, originalUnit, finalUnit) {\n    if (originalUnit === void 0) { originalUnit = \"meters\"; }\n    if (finalUnit === void 0) { finalUnit = \"kilometers\"; }\n    if (!(area >= 0)) {\n        throw new Error(\"area must be a positive number\");\n    }\n    var startFactor = exports.areaFactors[originalUnit];\n    if (!startFactor) {\n        throw new Error(\"invalid original units\");\n    }\n    var finalFactor = exports.areaFactors[finalUnit];\n    if (!finalFactor) {\n        throw new Error(\"invalid final units\");\n    }\n    return (area / startFactor) * finalFactor;\n}\nexports.convertArea = convertArea;\n/**\n * isNumber\n *\n * @param {*} num Number to validate\n * @returns {boolean} true/false\n * @example\n * turf.isNumber(123)\n * //=true\n * turf.isNumber('foo')\n * //=false\n */\nfunction isNumber(num) {\n    return !isNaN(num) && num !== null && !Array.isArray(num);\n}\nexports.isNumber = isNumber;\n/**\n * isObject\n *\n * @param {*} input variable to validate\n * @returns {boolean} true/false\n * @example\n * turf.isObject({elevation: 10})\n * //=true\n * turf.isObject('foo')\n * //=false\n */\nfunction isObject(input) {\n    return !!input && input.constructor === Object;\n}\nexports.isObject = isObject;\n/**\n * Validate BBox\n *\n * @private\n * @param {Array<number>} bbox BBox to validate\n * @returns {void}\n * @throws Error if BBox is not valid\n * @example\n * validateBBox([-180, -40, 110, 50])\n * //=OK\n * validateBBox([-180, -40])\n * //=Error\n * validateBBox('Foo')\n * //=Error\n * validateBBox(5)\n * //=Error\n * validateBBox(null)\n * //=Error\n * validateBBox(undefined)\n * //=Error\n */\nfunction validateBBox(bbox) {\n    if (!bbox) {\n        throw new Error(\"bbox is required\");\n    }\n    if (!Array.isArray(bbox)) {\n        throw new Error(\"bbox must be an Array\");\n    }\n    if (bbox.length !== 4 && bbox.length !== 6) {\n        throw new Error(\"bbox must be an Array of 4 or 6 numbers\");\n    }\n    bbox.forEach(function (num) {\n        if (!isNumber(num)) {\n            throw new Error(\"bbox must only contain numbers\");\n        }\n    });\n}\nexports.validateBBox = validateBBox;\n/**\n * Validate Id\n *\n * @private\n * @param {string|number} id Id to validate\n * @returns {void}\n * @throws Error if Id is not valid\n * @example\n * validateId([-180, -40, 110, 50])\n * //=Error\n * validateId([-180, -40])\n * //=Error\n * validateId('Foo')\n * //=OK\n * validateId(5)\n * //=OK\n * validateId(null)\n * //=Error\n * validateId(undefined)\n * //=Error\n */\nfunction validateId(id) {\n    if (!id) {\n        throw new Error(\"id is required\");\n    }\n    if ([\"string\", \"number\"].indexOf(typeof id) === -1) {\n        throw new Error(\"id must be a number or a string\");\n    }\n}\nexports.validateId = validateId;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar helpers_1 = require(\"@turf/helpers\");\n/**\n * Unwrap a coordinate from a Point Feature, Geometry or a single coordinate.\n *\n * @name getCoord\n * @param {Array<number>|Geometry<Point>|Feature<Point>} coord GeoJSON Point or an Array of numbers\n * @returns {Array<number>} coordinates\n * @example\n * var pt = turf.point([10, 10]);\n *\n * var coord = turf.getCoord(pt);\n * //= [10, 10]\n */\nfunction getCoord(coord) {\n    if (!coord) {\n        throw new Error(\"coord is required\");\n    }\n    if (!Array.isArray(coord)) {\n        if (coord.type === \"Feature\" &&\n            coord.geometry !== null &&\n            coord.geometry.type === \"Point\") {\n            return coord.geometry.coordinates;\n        }\n        if (coord.type === \"Point\") {\n            return coord.coordinates;\n        }\n    }\n    if (Array.isArray(coord) &&\n        coord.length >= 2 &&\n        !Array.isArray(coord[0]) &&\n        !Array.isArray(coord[1])) {\n        return coord;\n    }\n    throw new Error(\"coord must be GeoJSON Point or an Array of numbers\");\n}\nexports.getCoord = getCoord;\n/**\n * Unwrap coordinates from a Feature, Geometry Object or an Array\n *\n * @name getCoords\n * @param {Array<any>|Geometry|Feature} coords Feature, Geometry Object or an Array\n * @returns {Array<any>} coordinates\n * @example\n * var poly = turf.polygon([[[119.32, -8.7], [119.55, -8.69], [119.51, -8.54], [119.32, -8.7]]]);\n *\n * var coords = turf.getCoords(poly);\n * //= [[[119.32, -8.7], [119.55, -8.69], [119.51, -8.54], [119.32, -8.7]]]\n */\nfunction getCoords(coords) {\n    if (Array.isArray(coords)) {\n        return coords;\n    }\n    // Feature\n    if (coords.type === \"Feature\") {\n        if (coords.geometry !== null) {\n            return coords.geometry.coordinates;\n        }\n    }\n    else {\n        // Geometry\n        if (coords.coordinates) {\n            return coords.coordinates;\n        }\n    }\n    throw new Error(\"coords must be GeoJSON Feature, Geometry Object or an Array\");\n}\nexports.getCoords = getCoords;\n/**\n * Checks if coordinates contains a number\n *\n * @name containsNumber\n * @param {Array<any>} coordinates GeoJSON Coordinates\n * @returns {boolean} true if Array contains a number\n */\nfunction containsNumber(coordinates) {\n    if (coordinates.length > 1 &&\n        helpers_1.isNumber(coordinates[0]) &&\n        helpers_1.isNumber(coordinates[1])) {\n        return true;\n    }\n    if (Array.isArray(coordinates[0]) && coordinates[0].length) {\n        return containsNumber(coordinates[0]);\n    }\n    throw new Error(\"coordinates must only contain numbers\");\n}\nexports.containsNumber = containsNumber;\n/**\n * Enforce expectations about types of GeoJSON objects for Turf.\n *\n * @name geojsonType\n * @param {GeoJSON} value any GeoJSON object\n * @param {string} type expected GeoJSON type\n * @param {string} name name of calling function\n * @throws {Error} if value is not the expected type.\n */\nfunction geojsonType(value, type, name) {\n    if (!type || !name) {\n        throw new Error(\"type and name required\");\n    }\n    if (!value || value.type !== type) {\n        throw new Error(\"Invalid input to \" +\n            name +\n            \": must be a \" +\n            type +\n            \", given \" +\n            value.type);\n    }\n}\nexports.geojsonType = geojsonType;\n/**\n * Enforce expectations about types of {@link Feature} inputs for Turf.\n * Internally this uses {@link geojsonType} to judge geometry types.\n *\n * @name featureOf\n * @param {Feature} feature a feature with an expected geometry type\n * @param {string} type expected GeoJSON type\n * @param {string} name name of calling function\n * @throws {Error} error if value is not the expected type.\n */\nfunction featureOf(feature, type, name) {\n    if (!feature) {\n        throw new Error(\"No feature passed\");\n    }\n    if (!name) {\n        throw new Error(\".featureOf() requires a name\");\n    }\n    if (!feature || feature.type !== \"Feature\" || !feature.geometry) {\n        throw new Error(\"Invalid input to \" + name + \", Feature with geometry required\");\n    }\n    if (!feature.geometry || feature.geometry.type !== type) {\n        throw new Error(\"Invalid input to \" +\n            name +\n            \": must be a \" +\n            type +\n            \", given \" +\n            feature.geometry.type);\n    }\n}\nexports.featureOf = featureOf;\n/**\n * Enforce expectations about types of {@link FeatureCollection} inputs for Turf.\n * Internally this uses {@link geojsonType} to judge geometry types.\n *\n * @name collectionOf\n * @param {FeatureCollection} featureCollection a FeatureCollection for which features will be judged\n * @param {string} type expected GeoJSON type\n * @param {string} name name of calling function\n * @throws {Error} if value is not the expected type.\n */\nfunction collectionOf(featureCollection, type, name) {\n    if (!featureCollection) {\n        throw new Error(\"No featureCollection passed\");\n    }\n    if (!name) {\n        throw new Error(\".collectionOf() requires a name\");\n    }\n    if (!featureCollection || featureCollection.type !== \"FeatureCollection\") {\n        throw new Error(\"Invalid input to \" + name + \", FeatureCollection required\");\n    }\n    for (var _i = 0, _a = featureCollection.features; _i < _a.length; _i++) {\n        var feature = _a[_i];\n        if (!feature || feature.type !== \"Feature\" || !feature.geometry) {\n            throw new Error(\"Invalid input to \" + name + \", Feature with geometry required\");\n        }\n        if (!feature.geometry || feature.geometry.type !== type) {\n            throw new Error(\"Invalid input to \" +\n                name +\n                \": must be a \" +\n                type +\n                \", given \" +\n                feature.geometry.type);\n        }\n    }\n}\nexports.collectionOf = collectionOf;\n/**\n * Get Geometry from Feature or Geometry Object\n *\n * @param {Feature|Geometry} geojson GeoJSON Feature or Geometry Object\n * @returns {Geometry|null} GeoJSON Geometry Object\n * @throws {Error} if geojson is not a Feature or Geometry Object\n * @example\n * var point = {\n *   \"type\": \"Feature\",\n *   \"properties\": {},\n *   \"geometry\": {\n *     \"type\": \"Point\",\n *     \"coordinates\": [110, 40]\n *   }\n * }\n * var geom = turf.getGeom(point)\n * //={\"type\": \"Point\", \"coordinates\": [110, 40]}\n */\nfunction getGeom(geojson) {\n    if (geojson.type === \"Feature\") {\n        return geojson.geometry;\n    }\n    return geojson;\n}\nexports.getGeom = getGeom;\n/**\n * Get GeoJSON object's type, Geometry type is prioritize.\n *\n * @param {GeoJSON} geojson GeoJSON object\n * @param {string} [name=\"geojson\"] name of the variable to display in error message (unused)\n * @returns {string} GeoJSON type\n * @example\n * var point = {\n *   \"type\": \"Feature\",\n *   \"properties\": {},\n *   \"geometry\": {\n *     \"type\": \"Point\",\n *     \"coordinates\": [110, 40]\n *   }\n * }\n * var geom = turf.getType(point)\n * //=\"Point\"\n */\nfunction getType(geojson, _name) {\n    if (geojson.type === \"FeatureCollection\") {\n        return \"FeatureCollection\";\n    }\n    if (geojson.type === \"GeometryCollection\") {\n        return \"GeometryCollection\";\n    }\n    if (geojson.type === \"Feature\" && geojson.geometry !== null) {\n        return geojson.geometry.type;\n    }\n    return geojson.type;\n}\nexports.getType = getType;\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nvar helpers = require('@turf/helpers');\n\n/**\n * Callback for coordEach\n *\n * @callback coordEachCallback\n * @param {Array<number>} currentCoord The current coordinate being processed.\n * @param {number} coordIndex The current index of the coordinate being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n * @param {number} geometryIndex The current index of the Geometry being processed.\n */\n\n/**\n * Iterate over coordinates in any GeoJSON object, similar to Array.forEach()\n *\n * @name coordEach\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (currentCoord, coordIndex, featureIndex, multiFeatureIndex)\n * @param {boolean} [excludeWrapCoord=false] whether or not to include the final coordinate of LinearRings that wraps the ring in its iteration.\n * @returns {void}\n * @example\n * var features = turf.featureCollection([\n *   turf.point([26, 37], {\"foo\": \"bar\"}),\n *   turf.point([36, 53], {\"hello\": \"world\"})\n * ]);\n *\n * turf.coordEach(features, function (currentCoord, coordIndex, featureIndex, multiFeatureIndex, geometryIndex) {\n *   //=currentCoord\n *   //=coordIndex\n *   //=featureIndex\n *   //=multiFeatureIndex\n *   //=geometryIndex\n * });\n */\nfunction coordEach(geojson, callback, excludeWrapCoord) {\n  // Handles null Geometry -- Skips this GeoJSON\n  if (geojson === null) return;\n  var j,\n    k,\n    l,\n    geometry,\n    stopG,\n    coords,\n    geometryMaybeCollection,\n    wrapShrink = 0,\n    coordIndex = 0,\n    isGeometryCollection,\n    type = geojson.type,\n    isFeatureCollection = type === \"FeatureCollection\",\n    isFeature = type === \"Feature\",\n    stop = isFeatureCollection ? geojson.features.length : 1;\n\n  // This logic may look a little weird. The reason why it is that way\n  // is because it's trying to be fast. GeoJSON supports multiple kinds\n  // of objects at its root: FeatureCollection, Features, Geometries.\n  // This function has the responsibility of handling all of them, and that\n  // means that some of the `for` loops you see below actually just don't apply\n  // to certain inputs. For instance, if you give this just a\n  // Point geometry, then both loops are short-circuited and all we do\n  // is gradually rename the input until it's called 'geometry'.\n  //\n  // This also aims to allocate as few resources as possible: just a\n  // few numbers and booleans, rather than any temporary arrays as would\n  // be required with the normalization approach.\n  for (var featureIndex = 0; featureIndex < stop; featureIndex++) {\n    geometryMaybeCollection = isFeatureCollection\n      ? geojson.features[featureIndex].geometry\n      : isFeature\n      ? geojson.geometry\n      : geojson;\n    isGeometryCollection = geometryMaybeCollection\n      ? geometryMaybeCollection.type === \"GeometryCollection\"\n      : false;\n    stopG = isGeometryCollection\n      ? geometryMaybeCollection.geometries.length\n      : 1;\n\n    for (var geomIndex = 0; geomIndex < stopG; geomIndex++) {\n      var multiFeatureIndex = 0;\n      var geometryIndex = 0;\n      geometry = isGeometryCollection\n        ? geometryMaybeCollection.geometries[geomIndex]\n        : geometryMaybeCollection;\n\n      // Handles null Geometry -- Skips this geometry\n      if (geometry === null) continue;\n      coords = geometry.coordinates;\n      var geomType = geometry.type;\n\n      wrapShrink =\n        excludeWrapCoord &&\n        (geomType === \"Polygon\" || geomType === \"MultiPolygon\")\n          ? 1\n          : 0;\n\n      switch (geomType) {\n        case null:\n          break;\n        case \"Point\":\n          if (\n            callback(\n              coords,\n              coordIndex,\n              featureIndex,\n              multiFeatureIndex,\n              geometryIndex\n            ) === false\n          )\n            return false;\n          coordIndex++;\n          multiFeatureIndex++;\n          break;\n        case \"LineString\":\n        case \"MultiPoint\":\n          for (j = 0; j < coords.length; j++) {\n            if (\n              callback(\n                coords[j],\n                coordIndex,\n                featureIndex,\n                multiFeatureIndex,\n                geometryIndex\n              ) === false\n            )\n              return false;\n            coordIndex++;\n            if (geomType === \"MultiPoint\") multiFeatureIndex++;\n          }\n          if (geomType === \"LineString\") multiFeatureIndex++;\n          break;\n        case \"Polygon\":\n        case \"MultiLineString\":\n          for (j = 0; j < coords.length; j++) {\n            for (k = 0; k < coords[j].length - wrapShrink; k++) {\n              if (\n                callback(\n                  coords[j][k],\n                  coordIndex,\n                  featureIndex,\n                  multiFeatureIndex,\n                  geometryIndex\n                ) === false\n              )\n                return false;\n              coordIndex++;\n            }\n            if (geomType === \"MultiLineString\") multiFeatureIndex++;\n            if (geomType === \"Polygon\") geometryIndex++;\n          }\n          if (geomType === \"Polygon\") multiFeatureIndex++;\n          break;\n        case \"MultiPolygon\":\n          for (j = 0; j < coords.length; j++) {\n            geometryIndex = 0;\n            for (k = 0; k < coords[j].length; k++) {\n              for (l = 0; l < coords[j][k].length - wrapShrink; l++) {\n                if (\n                  callback(\n                    coords[j][k][l],\n                    coordIndex,\n                    featureIndex,\n                    multiFeatureIndex,\n                    geometryIndex\n                  ) === false\n                )\n                  return false;\n                coordIndex++;\n              }\n              geometryIndex++;\n            }\n            multiFeatureIndex++;\n          }\n          break;\n        case \"GeometryCollection\":\n          for (j = 0; j < geometry.geometries.length; j++)\n            if (\n              coordEach(geometry.geometries[j], callback, excludeWrapCoord) ===\n              false\n            )\n              return false;\n          break;\n        default:\n          throw new Error(\"Unknown Geometry Type\");\n      }\n    }\n  }\n}\n\n/**\n * Callback for coordReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n *  - The previousValue argument is initialValue.\n *  - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n *  - The previousValue argument is the value of the first element present in the array.\n *  - The currentValue argument is the value of the second element present in the array.\n *\n * @callback coordReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Array<number>} currentCoord The current coordinate being processed.\n * @param {number} coordIndex The current index of the coordinate being processed.\n * Starts at index 0, if an initialValue is provided, and at index 1 otherwise.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n * @param {number} geometryIndex The current index of the Geometry being processed.\n */\n\n/**\n * Reduce coordinates in any GeoJSON object, similar to Array.reduce()\n *\n * @name coordReduce\n * @param {FeatureCollection|Geometry|Feature} geojson any GeoJSON object\n * @param {Function} callback a method that takes (previousValue, currentCoord, coordIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @param {boolean} [excludeWrapCoord=false] whether or not to include the final coordinate of LinearRings that wraps the ring in its iteration.\n * @returns {*} The value that results from the reduction.\n * @example\n * var features = turf.featureCollection([\n *   turf.point([26, 37], {\"foo\": \"bar\"}),\n *   turf.point([36, 53], {\"hello\": \"world\"})\n * ]);\n *\n * turf.coordReduce(features, function (previousValue, currentCoord, coordIndex, featureIndex, multiFeatureIndex, geometryIndex) {\n *   //=previousValue\n *   //=currentCoord\n *   //=coordIndex\n *   //=featureIndex\n *   //=multiFeatureIndex\n *   //=geometryIndex\n *   return currentCoord;\n * });\n */\nfunction coordReduce(geojson, callback, initialValue, excludeWrapCoord) {\n  var previousValue = initialValue;\n  coordEach(\n    geojson,\n    function (\n      currentCoord,\n      coordIndex,\n      featureIndex,\n      multiFeatureIndex,\n      geometryIndex\n    ) {\n      if (coordIndex === 0 && initialValue === undefined)\n        previousValue = currentCoord;\n      else\n        previousValue = callback(\n          previousValue,\n          currentCoord,\n          coordIndex,\n          featureIndex,\n          multiFeatureIndex,\n          geometryIndex\n        );\n    },\n    excludeWrapCoord\n  );\n  return previousValue;\n}\n\n/**\n * Callback for propEach\n *\n * @callback propEachCallback\n * @param {Object} currentProperties The current Properties being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n */\n\n/**\n * Iterate over properties in any GeoJSON object, similar to Array.forEach()\n *\n * @name propEach\n * @param {FeatureCollection|Feature} geojson any GeoJSON object\n * @param {Function} callback a method that takes (currentProperties, featureIndex)\n * @returns {void}\n * @example\n * var features = turf.featureCollection([\n *     turf.point([26, 37], {foo: 'bar'}),\n *     turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * turf.propEach(features, function (currentProperties, featureIndex) {\n *   //=currentProperties\n *   //=featureIndex\n * });\n */\nfunction propEach(geojson, callback) {\n  var i;\n  switch (geojson.type) {\n    case \"FeatureCollection\":\n      for (i = 0; i < geojson.features.length; i++) {\n        if (callback(geojson.features[i].properties, i) === false) break;\n      }\n      break;\n    case \"Feature\":\n      callback(geojson.properties, 0);\n      break;\n  }\n}\n\n/**\n * Callback for propReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n *  - The previousValue argument is initialValue.\n *  - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n *  - The previousValue argument is the value of the first element present in the array.\n *  - The currentValue argument is the value of the second element present in the array.\n *\n * @callback propReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {*} currentProperties The current Properties being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n */\n\n/**\n * Reduce properties in any GeoJSON object into a single value,\n * similar to how Array.reduce works. However, in this case we lazily run\n * the reduction, so an array of all properties is unnecessary.\n *\n * @name propReduce\n * @param {FeatureCollection|Feature} geojson any GeoJSON object\n * @param {Function} callback a method that takes (previousValue, currentProperties, featureIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {*} The value that results from the reduction.\n * @example\n * var features = turf.featureCollection([\n *     turf.point([26, 37], {foo: 'bar'}),\n *     turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * turf.propReduce(features, function (previousValue, currentProperties, featureIndex) {\n *   //=previousValue\n *   //=currentProperties\n *   //=featureIndex\n *   return currentProperties\n * });\n */\nfunction propReduce(geojson, callback, initialValue) {\n  var previousValue = initialValue;\n  propEach(geojson, function (currentProperties, featureIndex) {\n    if (featureIndex === 0 && initialValue === undefined)\n      previousValue = currentProperties;\n    else\n      previousValue = callback(previousValue, currentProperties, featureIndex);\n  });\n  return previousValue;\n}\n\n/**\n * Callback for featureEach\n *\n * @callback featureEachCallback\n * @param {Feature<any>} currentFeature The current Feature being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n */\n\n/**\n * Iterate over features in any GeoJSON object, similar to\n * Array.forEach.\n *\n * @name featureEach\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (currentFeature, featureIndex)\n * @returns {void}\n * @example\n * var features = turf.featureCollection([\n *   turf.point([26, 37], {foo: 'bar'}),\n *   turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * turf.featureEach(features, function (currentFeature, featureIndex) {\n *   //=currentFeature\n *   //=featureIndex\n * });\n */\nfunction featureEach(geojson, callback) {\n  if (geojson.type === \"Feature\") {\n    callback(geojson, 0);\n  } else if (geojson.type === \"FeatureCollection\") {\n    for (var i = 0; i < geojson.features.length; i++) {\n      if (callback(geojson.features[i], i) === false) break;\n    }\n  }\n}\n\n/**\n * Callback for featureReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n *  - The previousValue argument is initialValue.\n *  - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n *  - The previousValue argument is the value of the first element present in the array.\n *  - The currentValue argument is the value of the second element present in the array.\n *\n * @callback featureReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Feature} currentFeature The current Feature being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n */\n\n/**\n * Reduce features in any GeoJSON object, similar to Array.reduce().\n *\n * @name featureReduce\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (previousValue, currentFeature, featureIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {*} The value that results from the reduction.\n * @example\n * var features = turf.featureCollection([\n *   turf.point([26, 37], {\"foo\": \"bar\"}),\n *   turf.point([36, 53], {\"hello\": \"world\"})\n * ]);\n *\n * turf.featureReduce(features, function (previousValue, currentFeature, featureIndex) {\n *   //=previousValue\n *   //=currentFeature\n *   //=featureIndex\n *   return currentFeature\n * });\n */\nfunction featureReduce(geojson, callback, initialValue) {\n  var previousValue = initialValue;\n  featureEach(geojson, function (currentFeature, featureIndex) {\n    if (featureIndex === 0 && initialValue === undefined)\n      previousValue = currentFeature;\n    else previousValue = callback(previousValue, currentFeature, featureIndex);\n  });\n  return previousValue;\n}\n\n/**\n * Get all coordinates from any GeoJSON object.\n *\n * @name coordAll\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @returns {Array<Array<number>>} coordinate position array\n * @example\n * var features = turf.featureCollection([\n *   turf.point([26, 37], {foo: 'bar'}),\n *   turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * var coords = turf.coordAll(features);\n * //= [[26, 37], [36, 53]]\n */\nfunction coordAll(geojson) {\n  var coords = [];\n  coordEach(geojson, function (coord) {\n    coords.push(coord);\n  });\n  return coords;\n}\n\n/**\n * Callback for geomEach\n *\n * @callback geomEachCallback\n * @param {Geometry} currentGeometry The current Geometry being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {Object} featureProperties The current Feature Properties being processed.\n * @param {Array<number>} featureBBox The current Feature BBox being processed.\n * @param {number|string} featureId The current Feature Id being processed.\n */\n\n/**\n * Iterate over each geometry in any GeoJSON object, similar to Array.forEach()\n *\n * @name geomEach\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (currentGeometry, featureIndex, featureProperties, featureBBox, featureId)\n * @returns {void}\n * @example\n * var features = turf.featureCollection([\n *     turf.point([26, 37], {foo: 'bar'}),\n *     turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * turf.geomEach(features, function (currentGeometry, featureIndex, featureProperties, featureBBox, featureId) {\n *   //=currentGeometry\n *   //=featureIndex\n *   //=featureProperties\n *   //=featureBBox\n *   //=featureId\n * });\n */\nfunction geomEach(geojson, callback) {\n  var i,\n    j,\n    g,\n    geometry,\n    stopG,\n    geometryMaybeCollection,\n    isGeometryCollection,\n    featureProperties,\n    featureBBox,\n    featureId,\n    featureIndex = 0,\n    isFeatureCollection = geojson.type === \"FeatureCollection\",\n    isFeature = geojson.type === \"Feature\",\n    stop = isFeatureCollection ? geojson.features.length : 1;\n\n  // This logic may look a little weird. The reason why it is that way\n  // is because it's trying to be fast. GeoJSON supports multiple kinds\n  // of objects at its root: FeatureCollection, Features, Geometries.\n  // This function has the responsibility of handling all of them, and that\n  // means that some of the `for` loops you see below actually just don't apply\n  // to certain inputs. For instance, if you give this just a\n  // Point geometry, then both loops are short-circuited and all we do\n  // is gradually rename the input until it's called 'geometry'.\n  //\n  // This also aims to allocate as few resources as possible: just a\n  // few numbers and booleans, rather than any temporary arrays as would\n  // be required with the normalization approach.\n  for (i = 0; i < stop; i++) {\n    geometryMaybeCollection = isFeatureCollection\n      ? geojson.features[i].geometry\n      : isFeature\n      ? geojson.geometry\n      : geojson;\n    featureProperties = isFeatureCollection\n      ? geojson.features[i].properties\n      : isFeature\n      ? geojson.properties\n      : {};\n    featureBBox = isFeatureCollection\n      ? geojson.features[i].bbox\n      : isFeature\n      ? geojson.bbox\n      : undefined;\n    featureId = isFeatureCollection\n      ? geojson.features[i].id\n      : isFeature\n      ? geojson.id\n      : undefined;\n    isGeometryCollection = geometryMaybeCollection\n      ? geometryMaybeCollection.type === \"GeometryCollection\"\n      : false;\n    stopG = isGeometryCollection\n      ? geometryMaybeCollection.geometries.length\n      : 1;\n\n    for (g = 0; g < stopG; g++) {\n      geometry = isGeometryCollection\n        ? geometryMaybeCollection.geometries[g]\n        : geometryMaybeCollection;\n\n      // Handle null Geometry\n      if (geometry === null) {\n        if (\n          callback(\n            null,\n            featureIndex,\n            featureProperties,\n            featureBBox,\n            featureId\n          ) === false\n        )\n          return false;\n        continue;\n      }\n      switch (geometry.type) {\n        case \"Point\":\n        case \"LineString\":\n        case \"MultiPoint\":\n        case \"Polygon\":\n        case \"MultiLineString\":\n        case \"MultiPolygon\": {\n          if (\n            callback(\n              geometry,\n              featureIndex,\n              featureProperties,\n              featureBBox,\n              featureId\n            ) === false\n          )\n            return false;\n          break;\n        }\n        case \"GeometryCollection\": {\n          for (j = 0; j < geometry.geometries.length; j++) {\n            if (\n              callback(\n                geometry.geometries[j],\n                featureIndex,\n                featureProperties,\n                featureBBox,\n                featureId\n              ) === false\n            )\n              return false;\n          }\n          break;\n        }\n        default:\n          throw new Error(\"Unknown Geometry Type\");\n      }\n    }\n    // Only increase `featureIndex` per each feature\n    featureIndex++;\n  }\n}\n\n/**\n * Callback for geomReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n *  - The previousValue argument is initialValue.\n *  - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n *  - The previousValue argument is the value of the first element present in the array.\n *  - The currentValue argument is the value of the second element present in the array.\n *\n * @callback geomReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Geometry} currentGeometry The current Geometry being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {Object} featureProperties The current Feature Properties being processed.\n * @param {Array<number>} featureBBox The current Feature BBox being processed.\n * @param {number|string} featureId The current Feature Id being processed.\n */\n\n/**\n * Reduce geometry in any GeoJSON object, similar to Array.reduce().\n *\n * @name geomReduce\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (previousValue, currentGeometry, featureIndex, featureProperties, featureBBox, featureId)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {*} The value that results from the reduction.\n * @example\n * var features = turf.featureCollection([\n *     turf.point([26, 37], {foo: 'bar'}),\n *     turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * turf.geomReduce(features, function (previousValue, currentGeometry, featureIndex, featureProperties, featureBBox, featureId) {\n *   //=previousValue\n *   //=currentGeometry\n *   //=featureIndex\n *   //=featureProperties\n *   //=featureBBox\n *   //=featureId\n *   return currentGeometry\n * });\n */\nfunction geomReduce(geojson, callback, initialValue) {\n  var previousValue = initialValue;\n  geomEach(\n    geojson,\n    function (\n      currentGeometry,\n      featureIndex,\n      featureProperties,\n      featureBBox,\n      featureId\n    ) {\n      if (featureIndex === 0 && initialValue === undefined)\n        previousValue = currentGeometry;\n      else\n        previousValue = callback(\n          previousValue,\n          currentGeometry,\n          featureIndex,\n          featureProperties,\n          featureBBox,\n          featureId\n        );\n    }\n  );\n  return previousValue;\n}\n\n/**\n * Callback for flattenEach\n *\n * @callback flattenEachCallback\n * @param {Feature} currentFeature The current flattened feature being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n */\n\n/**\n * Iterate over flattened features in any GeoJSON object, similar to\n * Array.forEach.\n *\n * @name flattenEach\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (currentFeature, featureIndex, multiFeatureIndex)\n * @example\n * var features = turf.featureCollection([\n *     turf.point([26, 37], {foo: 'bar'}),\n *     turf.multiPoint([[40, 30], [36, 53]], {hello: 'world'})\n * ]);\n *\n * turf.flattenEach(features, function (currentFeature, featureIndex, multiFeatureIndex) {\n *   //=currentFeature\n *   //=featureIndex\n *   //=multiFeatureIndex\n * });\n */\nfunction flattenEach(geojson, callback) {\n  geomEach(geojson, function (geometry, featureIndex, properties, bbox, id) {\n    // Callback for single geometry\n    var type = geometry === null ? null : geometry.type;\n    switch (type) {\n      case null:\n      case \"Point\":\n      case \"LineString\":\n      case \"Polygon\":\n        if (\n          callback(\n            helpers.feature(geometry, properties, { bbox: bbox, id: id }),\n            featureIndex,\n            0\n          ) === false\n        )\n          return false;\n        return;\n    }\n\n    var geomType;\n\n    // Callback for multi-geometry\n    switch (type) {\n      case \"MultiPoint\":\n        geomType = \"Point\";\n        break;\n      case \"MultiLineString\":\n        geomType = \"LineString\";\n        break;\n      case \"MultiPolygon\":\n        geomType = \"Polygon\";\n        break;\n    }\n\n    for (\n      var multiFeatureIndex = 0;\n      multiFeatureIndex < geometry.coordinates.length;\n      multiFeatureIndex++\n    ) {\n      var coordinate = geometry.coordinates[multiFeatureIndex];\n      var geom = {\n        type: geomType,\n        coordinates: coordinate,\n      };\n      if (\n        callback(helpers.feature(geom, properties), featureIndex, multiFeatureIndex) ===\n        false\n      )\n        return false;\n    }\n  });\n}\n\n/**\n * Callback for flattenReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n *  - The previousValue argument is initialValue.\n *  - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n *  - The previousValue argument is the value of the first element present in the array.\n *  - The currentValue argument is the value of the second element present in the array.\n *\n * @callback flattenReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Feature} currentFeature The current Feature being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n */\n\n/**\n * Reduce flattened features in any GeoJSON object, similar to Array.reduce().\n *\n * @name flattenReduce\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (previousValue, currentFeature, featureIndex, multiFeatureIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {*} The value that results from the reduction.\n * @example\n * var features = turf.featureCollection([\n *     turf.point([26, 37], {foo: 'bar'}),\n *     turf.multiPoint([[40, 30], [36, 53]], {hello: 'world'})\n * ]);\n *\n * turf.flattenReduce(features, function (previousValue, currentFeature, featureIndex, multiFeatureIndex) {\n *   //=previousValue\n *   //=currentFeature\n *   //=featureIndex\n *   //=multiFeatureIndex\n *   return currentFeature\n * });\n */\nfunction flattenReduce(geojson, callback, initialValue) {\n  var previousValue = initialValue;\n  flattenEach(\n    geojson,\n    function (currentFeature, featureIndex, multiFeatureIndex) {\n      if (\n        featureIndex === 0 &&\n        multiFeatureIndex === 0 &&\n        initialValue === undefined\n      )\n        previousValue = currentFeature;\n      else\n        previousValue = callback(\n          previousValue,\n          currentFeature,\n          featureIndex,\n          multiFeatureIndex\n        );\n    }\n  );\n  return previousValue;\n}\n\n/**\n * Callback for segmentEach\n *\n * @callback segmentEachCallback\n * @param {Feature<LineString>} currentSegment The current Segment being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n * @param {number} geometryIndex The current index of the Geometry being processed.\n * @param {number} segmentIndex The current index of the Segment being processed.\n * @returns {void}\n */\n\n/**\n * Iterate over 2-vertex line segment in any GeoJSON object, similar to Array.forEach()\n * (Multi)Point geometries do not contain segments therefore they are ignored during this operation.\n *\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON\n * @param {Function} callback a method that takes (currentSegment, featureIndex, multiFeatureIndex, geometryIndex, segmentIndex)\n * @returns {void}\n * @example\n * var polygon = turf.polygon([[[-50, 5], [-40, -10], [-50, -10], [-40, 5], [-50, 5]]]);\n *\n * // Iterate over GeoJSON by 2-vertex segments\n * turf.segmentEach(polygon, function (currentSegment, featureIndex, multiFeatureIndex, geometryIndex, segmentIndex) {\n *   //=currentSegment\n *   //=featureIndex\n *   //=multiFeatureIndex\n *   //=geometryIndex\n *   //=segmentIndex\n * });\n *\n * // Calculate the total number of segments\n * var total = 0;\n * turf.segmentEach(polygon, function () {\n *     total++;\n * });\n */\nfunction segmentEach(geojson, callback) {\n  flattenEach(geojson, function (feature, featureIndex, multiFeatureIndex) {\n    var segmentIndex = 0;\n\n    // Exclude null Geometries\n    if (!feature.geometry) return;\n    // (Multi)Point geometries do not contain segments therefore they are ignored during this operation.\n    var type = feature.geometry.type;\n    if (type === \"Point\" || type === \"MultiPoint\") return;\n\n    // Generate 2-vertex line segments\n    var previousCoords;\n    var previousFeatureIndex = 0;\n    var previousMultiIndex = 0;\n    var prevGeomIndex = 0;\n    if (\n      coordEach(\n        feature,\n        function (\n          currentCoord,\n          coordIndex,\n          featureIndexCoord,\n          multiPartIndexCoord,\n          geometryIndex\n        ) {\n          // Simulating a meta.coordReduce() since `reduce` operations cannot be stopped by returning `false`\n          if (\n            previousCoords === undefined ||\n            featureIndex > previousFeatureIndex ||\n            multiPartIndexCoord > previousMultiIndex ||\n            geometryIndex > prevGeomIndex\n          ) {\n            previousCoords = currentCoord;\n            previousFeatureIndex = featureIndex;\n            previousMultiIndex = multiPartIndexCoord;\n            prevGeomIndex = geometryIndex;\n            segmentIndex = 0;\n            return;\n          }\n          var currentSegment = helpers.lineString(\n            [previousCoords, currentCoord],\n            feature.properties\n          );\n          if (\n            callback(\n              currentSegment,\n              featureIndex,\n              multiFeatureIndex,\n              geometryIndex,\n              segmentIndex\n            ) === false\n          )\n            return false;\n          segmentIndex++;\n          previousCoords = currentCoord;\n        }\n      ) === false\n    )\n      return false;\n  });\n}\n\n/**\n * Callback for segmentReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n *  - The previousValue argument is initialValue.\n *  - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n *  - The previousValue argument is the value of the first element present in the array.\n *  - The currentValue argument is the value of the second element present in the array.\n *\n * @callback segmentReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Feature<LineString>} currentSegment The current Segment being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n * @param {number} geometryIndex The current index of the Geometry being processed.\n * @param {number} segmentIndex The current index of the Segment being processed.\n */\n\n/**\n * Reduce 2-vertex line segment in any GeoJSON object, similar to Array.reduce()\n * (Multi)Point geometries do not contain segments therefore they are ignored during this operation.\n *\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON\n * @param {Function} callback a method that takes (previousValue, currentSegment, currentIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {void}\n * @example\n * var polygon = turf.polygon([[[-50, 5], [-40, -10], [-50, -10], [-40, 5], [-50, 5]]]);\n *\n * // Iterate over GeoJSON by 2-vertex segments\n * turf.segmentReduce(polygon, function (previousSegment, currentSegment, featureIndex, multiFeatureIndex, geometryIndex, segmentIndex) {\n *   //= previousSegment\n *   //= currentSegment\n *   //= featureIndex\n *   //= multiFeatureIndex\n *   //= geometryIndex\n *   //= segmentIndex\n *   return currentSegment\n * });\n *\n * // Calculate the total number of segments\n * var initialValue = 0\n * var total = turf.segmentReduce(polygon, function (previousValue) {\n *     previousValue++;\n *     return previousValue;\n * }, initialValue);\n */\nfunction segmentReduce(geojson, callback, initialValue) {\n  var previousValue = initialValue;\n  var started = false;\n  segmentEach(\n    geojson,\n    function (\n      currentSegment,\n      featureIndex,\n      multiFeatureIndex,\n      geometryIndex,\n      segmentIndex\n    ) {\n      if (started === false && initialValue === undefined)\n        previousValue = currentSegment;\n      else\n        previousValue = callback(\n          previousValue,\n          currentSegment,\n          featureIndex,\n          multiFeatureIndex,\n          geometryIndex,\n          segmentIndex\n        );\n      started = true;\n    }\n  );\n  return previousValue;\n}\n\n/**\n * Callback for lineEach\n *\n * @callback lineEachCallback\n * @param {Feature<LineString>} currentLine The current LineString|LinearRing being processed\n * @param {number} featureIndex The current index of the Feature being processed\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed\n * @param {number} geometryIndex The current index of the Geometry being processed\n */\n\n/**\n * Iterate over line or ring coordinates in LineString, Polygon, MultiLineString, MultiPolygon Features or Geometries,\n * similar to Array.forEach.\n *\n * @name lineEach\n * @param {Geometry|Feature<LineString|Polygon|MultiLineString|MultiPolygon>} geojson object\n * @param {Function} callback a method that takes (currentLine, featureIndex, multiFeatureIndex, geometryIndex)\n * @example\n * var multiLine = turf.multiLineString([\n *   [[26, 37], [35, 45]],\n *   [[36, 53], [38, 50], [41, 55]]\n * ]);\n *\n * turf.lineEach(multiLine, function (currentLine, featureIndex, multiFeatureIndex, geometryIndex) {\n *   //=currentLine\n *   //=featureIndex\n *   //=multiFeatureIndex\n *   //=geometryIndex\n * });\n */\nfunction lineEach(geojson, callback) {\n  // validation\n  if (!geojson) throw new Error(\"geojson is required\");\n\n  flattenEach(geojson, function (feature, featureIndex, multiFeatureIndex) {\n    if (feature.geometry === null) return;\n    var type = feature.geometry.type;\n    var coords = feature.geometry.coordinates;\n    switch (type) {\n      case \"LineString\":\n        if (callback(feature, featureIndex, multiFeatureIndex, 0, 0) === false)\n          return false;\n        break;\n      case \"Polygon\":\n        for (\n          var geometryIndex = 0;\n          geometryIndex < coords.length;\n          geometryIndex++\n        ) {\n          if (\n            callback(\n              helpers.lineString(coords[geometryIndex], feature.properties),\n              featureIndex,\n              multiFeatureIndex,\n              geometryIndex\n            ) === false\n          )\n            return false;\n        }\n        break;\n    }\n  });\n}\n\n/**\n * Callback for lineReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n *  - The previousValue argument is initialValue.\n *  - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n *  - The previousValue argument is the value of the first element present in the array.\n *  - The currentValue argument is the value of the second element present in the array.\n *\n * @callback lineReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Feature<LineString>} currentLine The current LineString|LinearRing being processed.\n * @param {number} featureIndex The current index of the Feature being processed\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed\n * @param {number} geometryIndex The current index of the Geometry being processed\n */\n\n/**\n * Reduce features in any GeoJSON object, similar to Array.reduce().\n *\n * @name lineReduce\n * @param {Geometry|Feature<LineString|Polygon|MultiLineString|MultiPolygon>} geojson object\n * @param {Function} callback a method that takes (previousValue, currentLine, featureIndex, multiFeatureIndex, geometryIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {*} The value that results from the reduction.\n * @example\n * var multiPoly = turf.multiPolygon([\n *   turf.polygon([[[12,48],[2,41],[24,38],[12,48]], [[9,44],[13,41],[13,45],[9,44]]]),\n *   turf.polygon([[[5, 5], [0, 0], [2, 2], [4, 4], [5, 5]]])\n * ]);\n *\n * turf.lineReduce(multiPoly, function (previousValue, currentLine, featureIndex, multiFeatureIndex, geometryIndex) {\n *   //=previousValue\n *   //=currentLine\n *   //=featureIndex\n *   //=multiFeatureIndex\n *   //=geometryIndex\n *   return currentLine\n * });\n */\nfunction lineReduce(geojson, callback, initialValue) {\n  var previousValue = initialValue;\n  lineEach(\n    geojson,\n    function (currentLine, featureIndex, multiFeatureIndex, geometryIndex) {\n      if (featureIndex === 0 && initialValue === undefined)\n        previousValue = currentLine;\n      else\n        previousValue = callback(\n          previousValue,\n          currentLine,\n          featureIndex,\n          multiFeatureIndex,\n          geometryIndex\n        );\n    }\n  );\n  return previousValue;\n}\n\n/**\n * Finds a particular 2-vertex LineString Segment from a GeoJSON using `@turf/meta` indexes.\n *\n * Negative indexes are permitted.\n * Point & MultiPoint will always return null.\n *\n * @param {FeatureCollection|Feature|Geometry} geojson Any GeoJSON Feature or Geometry\n * @param {Object} [options={}] Optional parameters\n * @param {number} [options.featureIndex=0] Feature Index\n * @param {number} [options.multiFeatureIndex=0] Multi-Feature Index\n * @param {number} [options.geometryIndex=0] Geometry Index\n * @param {number} [options.segmentIndex=0] Segment Index\n * @param {Object} [options.properties={}] Translate Properties to output LineString\n * @param {BBox} [options.bbox={}] Translate BBox to output LineString\n * @param {number|string} [options.id={}] Translate Id to output LineString\n * @returns {Feature<LineString>} 2-vertex GeoJSON Feature LineString\n * @example\n * var multiLine = turf.multiLineString([\n *     [[10, 10], [50, 30], [30, 40]],\n *     [[-10, -10], [-50, -30], [-30, -40]]\n * ]);\n *\n * // First Segment (defaults are 0)\n * turf.findSegment(multiLine);\n * // => Feature<LineString<[[10, 10], [50, 30]]>>\n *\n * // First Segment of 2nd Multi Feature\n * turf.findSegment(multiLine, {multiFeatureIndex: 1});\n * // => Feature<LineString<[[-10, -10], [-50, -30]]>>\n *\n * // Last Segment of Last Multi Feature\n * turf.findSegment(multiLine, {multiFeatureIndex: -1, segmentIndex: -1});\n * // => Feature<LineString<[[-50, -30], [-30, -40]]>>\n */\nfunction findSegment(geojson, options) {\n  // Optional Parameters\n  options = options || {};\n  if (!helpers.isObject(options)) throw new Error(\"options is invalid\");\n  var featureIndex = options.featureIndex || 0;\n  var multiFeatureIndex = options.multiFeatureIndex || 0;\n  var geometryIndex = options.geometryIndex || 0;\n  var segmentIndex = options.segmentIndex || 0;\n\n  // Find FeatureIndex\n  var properties = options.properties;\n  var geometry;\n\n  switch (geojson.type) {\n    case \"FeatureCollection\":\n      if (featureIndex < 0)\n        featureIndex = geojson.features.length + featureIndex;\n      properties = properties || geojson.features[featureIndex].properties;\n      geometry = geojson.features[featureIndex].geometry;\n      break;\n    case \"Feature\":\n      properties = properties || geojson.properties;\n      geometry = geojson.geometry;\n      break;\n    case \"Point\":\n    case \"MultiPoint\":\n      return null;\n    case \"LineString\":\n    case \"Polygon\":\n    case \"MultiLineString\":\n    case \"MultiPolygon\":\n      geometry = geojson;\n      break;\n    default:\n      throw new Error(\"geojson is invalid\");\n  }\n\n  // Find SegmentIndex\n  if (geometry === null) return null;\n  var coords = geometry.coordinates;\n  switch (geometry.type) {\n    case \"Point\":\n    case \"MultiPoint\":\n      return null;\n    case \"LineString\":\n      if (segmentIndex < 0) segmentIndex = coords.length + segmentIndex - 1;\n      return helpers.lineString(\n        [coords[segmentIndex], coords[segmentIndex + 1]],\n        properties,\n        options\n      );\n    case \"Polygon\":\n      if (geometryIndex < 0) geometryIndex = coords.length + geometryIndex;\n      if (segmentIndex < 0)\n        segmentIndex = coords[geometryIndex].length + segmentIndex - 1;\n      return helpers.lineString(\n        [\n          coords[geometryIndex][segmentIndex],\n          coords[geometryIndex][segmentIndex + 1],\n        ],\n        properties,\n        options\n      );\n    case \"MultiLineString\":\n      if (multiFeatureIndex < 0)\n        multiFeatureIndex = coords.length + multiFeatureIndex;\n      if (segmentIndex < 0)\n        segmentIndex = coords[multiFeatureIndex].length + segmentIndex - 1;\n      return helpers.lineString(\n        [\n          coords[multiFeatureIndex][segmentIndex],\n          coords[multiFeatureIndex][segmentIndex + 1],\n        ],\n        properties,\n        options\n      );\n    case \"MultiPolygon\":\n      if (multiFeatureIndex < 0)\n        multiFeatureIndex = coords.length + multiFeatureIndex;\n      if (geometryIndex < 0)\n        geometryIndex = coords[multiFeatureIndex].length + geometryIndex;\n      if (segmentIndex < 0)\n        segmentIndex =\n          coords[multiFeatureIndex][geometryIndex].length - segmentIndex - 1;\n      return helpers.lineString(\n        [\n          coords[multiFeatureIndex][geometryIndex][segmentIndex],\n          coords[multiFeatureIndex][geometryIndex][segmentIndex + 1],\n        ],\n        properties,\n        options\n      );\n  }\n  throw new Error(\"geojson is invalid\");\n}\n\n/**\n * Finds a particular Point from a GeoJSON using `@turf/meta` indexes.\n *\n * Negative indexes are permitted.\n *\n * @param {FeatureCollection|Feature|Geometry} geojson Any GeoJSON Feature or Geometry\n * @param {Object} [options={}] Optional parameters\n * @param {number} [options.featureIndex=0] Feature Index\n * @param {number} [options.multiFeatureIndex=0] Multi-Feature Index\n * @param {number} [options.geometryIndex=0] Geometry Index\n * @param {number} [options.coordIndex=0] Coord Index\n * @param {Object} [options.properties={}] Translate Properties to output Point\n * @param {BBox} [options.bbox={}] Translate BBox to output Point\n * @param {number|string} [options.id={}] Translate Id to output Point\n * @returns {Feature<Point>} 2-vertex GeoJSON Feature Point\n * @example\n * var multiLine = turf.multiLineString([\n *     [[10, 10], [50, 30], [30, 40]],\n *     [[-10, -10], [-50, -30], [-30, -40]]\n * ]);\n *\n * // First Segment (defaults are 0)\n * turf.findPoint(multiLine);\n * // => Feature<Point<[10, 10]>>\n *\n * // First Segment of the 2nd Multi-Feature\n * turf.findPoint(multiLine, {multiFeatureIndex: 1});\n * // => Feature<Point<[-10, -10]>>\n *\n * // Last Segment of last Multi-Feature\n * turf.findPoint(multiLine, {multiFeatureIndex: -1, coordIndex: -1});\n * // => Feature<Point<[-30, -40]>>\n */\nfunction findPoint(geojson, options) {\n  // Optional Parameters\n  options = options || {};\n  if (!helpers.isObject(options)) throw new Error(\"options is invalid\");\n  var featureIndex = options.featureIndex || 0;\n  var multiFeatureIndex = options.multiFeatureIndex || 0;\n  var geometryIndex = options.geometryIndex || 0;\n  var coordIndex = options.coordIndex || 0;\n\n  // Find FeatureIndex\n  var properties = options.properties;\n  var geometry;\n\n  switch (geojson.type) {\n    case \"FeatureCollection\":\n      if (featureIndex < 0)\n        featureIndex = geojson.features.length + featureIndex;\n      properties = properties || geojson.features[featureIndex].properties;\n      geometry = geojson.features[featureIndex].geometry;\n      break;\n    case \"Feature\":\n      properties = properties || geojson.properties;\n      geometry = geojson.geometry;\n      break;\n    case \"Point\":\n    case \"MultiPoint\":\n      return null;\n    case \"LineString\":\n    case \"Polygon\":\n    case \"MultiLineString\":\n    case \"MultiPolygon\":\n      geometry = geojson;\n      break;\n    default:\n      throw new Error(\"geojson is invalid\");\n  }\n\n  // Find Coord Index\n  if (geometry === null) return null;\n  var coords = geometry.coordinates;\n  switch (geometry.type) {\n    case \"Point\":\n      return helpers.point(coords, properties, options);\n    case \"MultiPoint\":\n      if (multiFeatureIndex < 0)\n        multiFeatureIndex = coords.length + multiFeatureIndex;\n      return helpers.point(coords[multiFeatureIndex], properties, options);\n    case \"LineString\":\n      if (coordIndex < 0) coordIndex = coords.length + coordIndex;\n      return helpers.point(coords[coordIndex], properties, options);\n    case \"Polygon\":\n      if (geometryIndex < 0) geometryIndex = coords.length + geometryIndex;\n      if (coordIndex < 0)\n        coordIndex = coords[geometryIndex].length + coordIndex;\n      return helpers.point(coords[geometryIndex][coordIndex], properties, options);\n    case \"MultiLineString\":\n      if (multiFeatureIndex < 0)\n        multiFeatureIndex = coords.length + multiFeatureIndex;\n      if (coordIndex < 0)\n        coordIndex = coords[multiFeatureIndex].length + coordIndex;\n      return helpers.point(coords[multiFeatureIndex][coordIndex], properties, options);\n    case \"MultiPolygon\":\n      if (multiFeatureIndex < 0)\n        multiFeatureIndex = coords.length + multiFeatureIndex;\n      if (geometryIndex < 0)\n        geometryIndex = coords[multiFeatureIndex].length + geometryIndex;\n      if (coordIndex < 0)\n        coordIndex =\n          coords[multiFeatureIndex][geometryIndex].length - coordIndex;\n      return helpers.point(\n        coords[multiFeatureIndex][geometryIndex][coordIndex],\n        properties,\n        options\n      );\n  }\n  throw new Error(\"geojson is invalid\");\n}\n\nexports.coordAll = coordAll;\nexports.coordEach = coordEach;\nexports.coordReduce = coordReduce;\nexports.featureEach = featureEach;\nexports.featureReduce = featureReduce;\nexports.findPoint = findPoint;\nexports.findSegment = findSegment;\nexports.flattenEach = flattenEach;\nexports.flattenReduce = flattenReduce;\nexports.geomEach = geomEach;\nexports.geomReduce = geomReduce;\nexports.lineEach = lineEach;\nexports.lineReduce = lineReduce;\nexports.propEach = propEach;\nexports.propReduce = propReduce;\nexports.segmentEach = segmentEach;\nexports.segmentReduce = segmentReduce;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar helpers_1 = require(\"@turf/helpers\");\nvar invariant_1 = require(\"@turf/invariant\");\n/**\n * Converts a {@link Polygon} to {@link LineString|(Multi)LineString} or {@link MultiPolygon} to a\n * {@link FeatureCollection} of {@link LineString|(Multi)LineString}.\n *\n * @name polygonToLine\n * @param {Feature<Polygon|MultiPolygon>} poly Feature to convert\n * @param {Object} [options={}] Optional parameters\n * @param {Object} [options.properties={}] translates GeoJSON properties to Feature\n * @returns {FeatureCollection|Feature<LineString|MultiLinestring>} converted (Multi)Polygon to (Multi)LineString\n * @example\n * var poly = turf.polygon([[[125, -30], [145, -30], [145, -20], [125, -20], [125, -30]]]);\n *\n * var line = turf.polygonToLine(poly);\n *\n * //addToMap\n * var addToMap = [line];\n */\nfunction default_1(poly, options) {\n    if (options === void 0) { options = {}; }\n    var geom = invariant_1.getGeom(poly);\n    if (!options.properties && poly.type === \"Feature\") {\n        options.properties = poly.properties;\n    }\n    switch (geom.type) {\n        case \"Polygon\":\n            return polygonToLine(geom, options);\n        case \"MultiPolygon\":\n            return multiPolygonToLine(geom, options);\n        default:\n            throw new Error(\"invalid poly\");\n    }\n}\nexports.default = default_1;\n/**\n * @private\n */\nfunction polygonToLine(poly, options) {\n    if (options === void 0) { options = {}; }\n    var geom = invariant_1.getGeom(poly);\n    var coords = geom.coordinates;\n    var properties = options.properties\n        ? options.properties\n        : poly.type === \"Feature\"\n            ? poly.properties\n            : {};\n    return coordsToLine(coords, properties);\n}\nexports.polygonToLine = polygonToLine;\n/**\n * @private\n */\nfunction multiPolygonToLine(multiPoly, options) {\n    if (options === void 0) { options = {}; }\n    var geom = invariant_1.getGeom(multiPoly);\n    var coords = geom.coordinates;\n    var properties = options.properties\n        ? options.properties\n        : multiPoly.type === \"Feature\"\n            ? multiPoly.properties\n            : {};\n    var lines = [];\n    coords.forEach(function (coord) {\n        lines.push(coordsToLine(coord, properties));\n    });\n    return helpers_1.featureCollection(lines);\n}\nexports.multiPolygonToLine = multiPolygonToLine;\n/**\n * @private\n */\nfunction coordsToLine(coords, properties) {\n    if (coords.length > 1) {\n        return helpers_1.multiLineString(coords, properties);\n    }\n    return helpers_1.lineString(coords[0], properties);\n}\nexports.coordsToLine = coordsToLine;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * @module helpers\n */\n/**\n * Earth Radius used with the Harvesine formula and approximates using a spherical (non-ellipsoid) Earth.\n *\n * @memberof helpers\n * @type {number}\n */\nexports.earthRadius = 6371008.8;\n/**\n * Unit of measurement factors using a spherical (non-ellipsoid) earth radius.\n *\n * @memberof helpers\n * @type {Object}\n */\nexports.factors = {\n    centimeters: exports.earthRadius * 100,\n    centimetres: exports.earthRadius * 100,\n    degrees: exports.earthRadius / 111325,\n    feet: exports.earthRadius * 3.28084,\n    inches: exports.earthRadius * 39.37,\n    kilometers: exports.earthRadius / 1000,\n    kilometres: exports.earthRadius / 1000,\n    meters: exports.earthRadius,\n    metres: exports.earthRadius,\n    miles: exports.earthRadius / 1609.344,\n    millimeters: exports.earthRadius * 1000,\n    millimetres: exports.earthRadius * 1000,\n    nauticalmiles: exports.earthRadius / 1852,\n    radians: 1,\n    yards: exports.earthRadius * 1.0936,\n};\n/**\n * Units of measurement factors based on 1 meter.\n *\n * @memberof helpers\n * @type {Object}\n */\nexports.unitsFactors = {\n    centimeters: 100,\n    centimetres: 100,\n    degrees: 1 / 111325,\n    feet: 3.28084,\n    inches: 39.37,\n    kilometers: 1 / 1000,\n    kilometres: 1 / 1000,\n    meters: 1,\n    metres: 1,\n    miles: 1 / 1609.344,\n    millimeters: 1000,\n    millimetres: 1000,\n    nauticalmiles: 1 / 1852,\n    radians: 1 / exports.earthRadius,\n    yards: 1.0936133,\n};\n/**\n * Area of measurement factors based on 1 square meter.\n *\n * @memberof helpers\n * @type {Object}\n */\nexports.areaFactors = {\n    acres: 0.000247105,\n    centimeters: 10000,\n    centimetres: 10000,\n    feet: 10.763910417,\n    hectares: 0.0001,\n    inches: 1550.003100006,\n    kilometers: 0.000001,\n    kilometres: 0.000001,\n    meters: 1,\n    metres: 1,\n    miles: 3.86e-7,\n    millimeters: 1000000,\n    millimetres: 1000000,\n    yards: 1.195990046,\n};\n/**\n * Wraps a GeoJSON {@link Geometry} in a GeoJSON {@link Feature}.\n *\n * @name feature\n * @param {Geometry} geometry input geometry\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} a GeoJSON Feature\n * @example\n * var geometry = {\n *   \"type\": \"Point\",\n *   \"coordinates\": [110, 50]\n * };\n *\n * var feature = turf.feature(geometry);\n *\n * //=feature\n */\nfunction feature(geom, properties, options) {\n    if (options === void 0) { options = {}; }\n    var feat = { type: \"Feature\" };\n    if (options.id === 0 || options.id) {\n        feat.id = options.id;\n    }\n    if (options.bbox) {\n        feat.bbox = options.bbox;\n    }\n    feat.properties = properties || {};\n    feat.geometry = geom;\n    return feat;\n}\nexports.feature = feature;\n/**\n * Creates a GeoJSON {@link Geometry} from a Geometry string type & coordinates.\n * For GeometryCollection type use `helpers.geometryCollection`\n *\n * @name geometry\n * @param {string} type Geometry Type\n * @param {Array<any>} coordinates Coordinates\n * @param {Object} [options={}] Optional Parameters\n * @returns {Geometry} a GeoJSON Geometry\n * @example\n * var type = \"Point\";\n * var coordinates = [110, 50];\n * var geometry = turf.geometry(type, coordinates);\n * // => geometry\n */\nfunction geometry(type, coordinates, _options) {\n    if (_options === void 0) { _options = {}; }\n    switch (type) {\n        case \"Point\":\n            return point(coordinates).geometry;\n        case \"LineString\":\n            return lineString(coordinates).geometry;\n        case \"Polygon\":\n            return polygon(coordinates).geometry;\n        case \"MultiPoint\":\n            return multiPoint(coordinates).geometry;\n        case \"MultiLineString\":\n            return multiLineString(coordinates).geometry;\n        case \"MultiPolygon\":\n            return multiPolygon(coordinates).geometry;\n        default:\n            throw new Error(type + \" is invalid\");\n    }\n}\nexports.geometry = geometry;\n/**\n * Creates a {@link Point} {@link Feature} from a Position.\n *\n * @name point\n * @param {Array<number>} coordinates longitude, latitude position (each in decimal degrees)\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<Point>} a Point feature\n * @example\n * var point = turf.point([-75.343, 39.984]);\n *\n * //=point\n */\nfunction point(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    if (!coordinates) {\n        throw new Error(\"coordinates is required\");\n    }\n    if (!Array.isArray(coordinates)) {\n        throw new Error(\"coordinates must be an Array\");\n    }\n    if (coordinates.length < 2) {\n        throw new Error(\"coordinates must be at least 2 numbers long\");\n    }\n    if (!isNumber(coordinates[0]) || !isNumber(coordinates[1])) {\n        throw new Error(\"coordinates must contain numbers\");\n    }\n    var geom = {\n        type: \"Point\",\n        coordinates: coordinates,\n    };\n    return feature(geom, properties, options);\n}\nexports.point = point;\n/**\n * Creates a {@link Point} {@link FeatureCollection} from an Array of Point coordinates.\n *\n * @name points\n * @param {Array<Array<number>>} coordinates an array of Points\n * @param {Object} [properties={}] Translate these properties to each Feature\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north]\n * associated with the FeatureCollection\n * @param {string|number} [options.id] Identifier associated with the FeatureCollection\n * @returns {FeatureCollection<Point>} Point Feature\n * @example\n * var points = turf.points([\n *   [-75, 39],\n *   [-80, 45],\n *   [-78, 50]\n * ]);\n *\n * //=points\n */\nfunction points(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    return featureCollection(coordinates.map(function (coords) {\n        return point(coords, properties);\n    }), options);\n}\nexports.points = points;\n/**\n * Creates a {@link Polygon} {@link Feature} from an Array of LinearRings.\n *\n * @name polygon\n * @param {Array<Array<Array<number>>>} coordinates an array of LinearRings\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<Polygon>} Polygon Feature\n * @example\n * var polygon = turf.polygon([[[-5, 52], [-4, 56], [-2, 51], [-7, 54], [-5, 52]]], { name: 'poly1' });\n *\n * //=polygon\n */\nfunction polygon(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    for (var _i = 0, coordinates_1 = coordinates; _i < coordinates_1.length; _i++) {\n        var ring = coordinates_1[_i];\n        if (ring.length < 4) {\n            throw new Error(\"Each LinearRing of a Polygon must have 4 or more Positions.\");\n        }\n        for (var j = 0; j < ring[ring.length - 1].length; j++) {\n            // Check if first point of Polygon contains two numbers\n            if (ring[ring.length - 1][j] !== ring[0][j]) {\n                throw new Error(\"First and last Position are not equivalent.\");\n            }\n        }\n    }\n    var geom = {\n        type: \"Polygon\",\n        coordinates: coordinates,\n    };\n    return feature(geom, properties, options);\n}\nexports.polygon = polygon;\n/**\n * Creates a {@link Polygon} {@link FeatureCollection} from an Array of Polygon coordinates.\n *\n * @name polygons\n * @param {Array<Array<Array<Array<number>>>>} coordinates an array of Polygon coordinates\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the FeatureCollection\n * @returns {FeatureCollection<Polygon>} Polygon FeatureCollection\n * @example\n * var polygons = turf.polygons([\n *   [[[-5, 52], [-4, 56], [-2, 51], [-7, 54], [-5, 52]]],\n *   [[[-15, 42], [-14, 46], [-12, 41], [-17, 44], [-15, 42]]],\n * ]);\n *\n * //=polygons\n */\nfunction polygons(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    return featureCollection(coordinates.map(function (coords) {\n        return polygon(coords, properties);\n    }), options);\n}\nexports.polygons = polygons;\n/**\n * Creates a {@link LineString} {@link Feature} from an Array of Positions.\n *\n * @name lineString\n * @param {Array<Array<number>>} coordinates an array of Positions\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<LineString>} LineString Feature\n * @example\n * var linestring1 = turf.lineString([[-24, 63], [-23, 60], [-25, 65], [-20, 69]], {name: 'line 1'});\n * var linestring2 = turf.lineString([[-14, 43], [-13, 40], [-15, 45], [-10, 49]], {name: 'line 2'});\n *\n * //=linestring1\n * //=linestring2\n */\nfunction lineString(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    if (coordinates.length < 2) {\n        throw new Error(\"coordinates must be an array of two or more positions\");\n    }\n    var geom = {\n        type: \"LineString\",\n        coordinates: coordinates,\n    };\n    return feature(geom, properties, options);\n}\nexports.lineString = lineString;\n/**\n * Creates a {@link LineString} {@link FeatureCollection} from an Array of LineString coordinates.\n *\n * @name lineStrings\n * @param {Array<Array<Array<number>>>} coordinates an array of LinearRings\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north]\n * associated with the FeatureCollection\n * @param {string|number} [options.id] Identifier associated with the FeatureCollection\n * @returns {FeatureCollection<LineString>} LineString FeatureCollection\n * @example\n * var linestrings = turf.lineStrings([\n *   [[-24, 63], [-23, 60], [-25, 65], [-20, 69]],\n *   [[-14, 43], [-13, 40], [-15, 45], [-10, 49]]\n * ]);\n *\n * //=linestrings\n */\nfunction lineStrings(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    return featureCollection(coordinates.map(function (coords) {\n        return lineString(coords, properties);\n    }), options);\n}\nexports.lineStrings = lineStrings;\n/**\n * Takes one or more {@link Feature|Features} and creates a {@link FeatureCollection}.\n *\n * @name featureCollection\n * @param {Feature[]} features input features\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {FeatureCollection} FeatureCollection of Features\n * @example\n * var locationA = turf.point([-75.343, 39.984], {name: 'Location A'});\n * var locationB = turf.point([-75.833, 39.284], {name: 'Location B'});\n * var locationC = turf.point([-75.534, 39.123], {name: 'Location C'});\n *\n * var collection = turf.featureCollection([\n *   locationA,\n *   locationB,\n *   locationC\n * ]);\n *\n * //=collection\n */\nfunction featureCollection(features, options) {\n    if (options === void 0) { options = {}; }\n    var fc = { type: \"FeatureCollection\" };\n    if (options.id) {\n        fc.id = options.id;\n    }\n    if (options.bbox) {\n        fc.bbox = options.bbox;\n    }\n    fc.features = features;\n    return fc;\n}\nexports.featureCollection = featureCollection;\n/**\n * Creates a {@link Feature<MultiLineString>} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name multiLineString\n * @param {Array<Array<Array<number>>>} coordinates an array of LineStrings\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<MultiLineString>} a MultiLineString feature\n * @throws {Error} if no coordinates are passed\n * @example\n * var multiLine = turf.multiLineString([[[0,0],[10,10]]]);\n *\n * //=multiLine\n */\nfunction multiLineString(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    var geom = {\n        type: \"MultiLineString\",\n        coordinates: coordinates,\n    };\n    return feature(geom, properties, options);\n}\nexports.multiLineString = multiLineString;\n/**\n * Creates a {@link Feature<MultiPoint>} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name multiPoint\n * @param {Array<Array<number>>} coordinates an array of Positions\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<MultiPoint>} a MultiPoint feature\n * @throws {Error} if no coordinates are passed\n * @example\n * var multiPt = turf.multiPoint([[0,0],[10,10]]);\n *\n * //=multiPt\n */\nfunction multiPoint(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    var geom = {\n        type: \"MultiPoint\",\n        coordinates: coordinates,\n    };\n    return feature(geom, properties, options);\n}\nexports.multiPoint = multiPoint;\n/**\n * Creates a {@link Feature<MultiPolygon>} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name multiPolygon\n * @param {Array<Array<Array<Array<number>>>>} coordinates an array of Polygons\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<MultiPolygon>} a multipolygon feature\n * @throws {Error} if no coordinates are passed\n * @example\n * var multiPoly = turf.multiPolygon([[[[0,0],[0,10],[10,10],[10,0],[0,0]]]]);\n *\n * //=multiPoly\n *\n */\nfunction multiPolygon(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    var geom = {\n        type: \"MultiPolygon\",\n        coordinates: coordinates,\n    };\n    return feature(geom, properties, options);\n}\nexports.multiPolygon = multiPolygon;\n/**\n * Creates a {@link Feature<GeometryCollection>} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name geometryCollection\n * @param {Array<Geometry>} geometries an array of GeoJSON Geometries\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<GeometryCollection>} a GeoJSON GeometryCollection Feature\n * @example\n * var pt = turf.geometry(\"Point\", [100, 0]);\n * var line = turf.geometry(\"LineString\", [[101, 0], [102, 1]]);\n * var collection = turf.geometryCollection([pt, line]);\n *\n * // => collection\n */\nfunction geometryCollection(geometries, properties, options) {\n    if (options === void 0) { options = {}; }\n    var geom = {\n        type: \"GeometryCollection\",\n        geometries: geometries,\n    };\n    return feature(geom, properties, options);\n}\nexports.geometryCollection = geometryCollection;\n/**\n * Round number to precision\n *\n * @param {number} num Number\n * @param {number} [precision=0] Precision\n * @returns {number} rounded number\n * @example\n * turf.round(120.4321)\n * //=120\n *\n * turf.round(120.4321, 2)\n * //=120.43\n */\nfunction round(num, precision) {\n    if (precision === void 0) { precision = 0; }\n    if (precision && !(precision >= 0)) {\n        throw new Error(\"precision must be a positive number\");\n    }\n    var multiplier = Math.pow(10, precision || 0);\n    return Math.round(num * multiplier) / multiplier;\n}\nexports.round = round;\n/**\n * Convert a distance measurement (assuming a spherical Earth) from radians to a more friendly unit.\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet\n *\n * @name radiansToLength\n * @param {number} radians in radians across the sphere\n * @param {string} [units=\"kilometers\"] can be degrees, radians, miles, inches, yards, metres,\n * meters, kilometres, kilometers.\n * @returns {number} distance\n */\nfunction radiansToLength(radians, units) {\n    if (units === void 0) { units = \"kilometers\"; }\n    var factor = exports.factors[units];\n    if (!factor) {\n        throw new Error(units + \" units is invalid\");\n    }\n    return radians * factor;\n}\nexports.radiansToLength = radiansToLength;\n/**\n * Convert a distance measurement (assuming a spherical Earth) from a real-world unit into radians\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet\n *\n * @name lengthToRadians\n * @param {number} distance in real units\n * @param {string} [units=\"kilometers\"] can be degrees, radians, miles, inches, yards, metres,\n * meters, kilometres, kilometers.\n * @returns {number} radians\n */\nfunction lengthToRadians(distance, units) {\n    if (units === void 0) { units = \"kilometers\"; }\n    var factor = exports.factors[units];\n    if (!factor) {\n        throw new Error(units + \" units is invalid\");\n    }\n    return distance / factor;\n}\nexports.lengthToRadians = lengthToRadians;\n/**\n * Convert a distance measurement (assuming a spherical Earth) from a real-world unit into degrees\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, centimeters, kilometres, feet\n *\n * @name lengthToDegrees\n * @param {number} distance in real units\n * @param {string} [units=\"kilometers\"] can be degrees, radians, miles, inches, yards, metres,\n * meters, kilometres, kilometers.\n * @returns {number} degrees\n */\nfunction lengthToDegrees(distance, units) {\n    return radiansToDegrees(lengthToRadians(distance, units));\n}\nexports.lengthToDegrees = lengthToDegrees;\n/**\n * Converts any bearing angle from the north line direction (positive clockwise)\n * and returns an angle between 0-360 degrees (positive clockwise), 0 being the north line\n *\n * @name bearingToAzimuth\n * @param {number} bearing angle, between -180 and +180 degrees\n * @returns {number} angle between 0 and 360 degrees\n */\nfunction bearingToAzimuth(bearing) {\n    var angle = bearing % 360;\n    if (angle < 0) {\n        angle += 360;\n    }\n    return angle;\n}\nexports.bearingToAzimuth = bearingToAzimuth;\n/**\n * Converts an angle in radians to degrees\n *\n * @name radiansToDegrees\n * @param {number} radians angle in radians\n * @returns {number} degrees between 0 and 360 degrees\n */\nfunction radiansToDegrees(radians) {\n    var degrees = radians % (2 * Math.PI);\n    return (degrees * 180) / Math.PI;\n}\nexports.radiansToDegrees = radiansToDegrees;\n/**\n * Converts an angle in degrees to radians\n *\n * @name degreesToRadians\n * @param {number} degrees angle between 0 and 360 degrees\n * @returns {number} angle in radians\n */\nfunction degreesToRadians(degrees) {\n    var radians = degrees % 360;\n    return (radians * Math.PI) / 180;\n}\nexports.degreesToRadians = degreesToRadians;\n/**\n * Converts a length to the requested unit.\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet\n *\n * @param {number} length to be converted\n * @param {Units} [originalUnit=\"kilometers\"] of the length\n * @param {Units} [finalUnit=\"kilometers\"] returned unit\n * @returns {number} the converted length\n */\nfunction convertLength(length, originalUnit, finalUnit) {\n    if (originalUnit === void 0) { originalUnit = \"kilometers\"; }\n    if (finalUnit === void 0) { finalUnit = \"kilometers\"; }\n    if (!(length >= 0)) {\n        throw new Error(\"length must be a positive number\");\n    }\n    return radiansToLength(lengthToRadians(length, originalUnit), finalUnit);\n}\nexports.convertLength = convertLength;\n/**\n * Converts a area to the requested unit.\n * Valid units: kilometers, kilometres, meters, metres, centimetres, millimeters, acres, miles, yards, feet, inches, hectares\n * @param {number} area to be converted\n * @param {Units} [originalUnit=\"meters\"] of the distance\n * @param {Units} [finalUnit=\"kilometers\"] returned unit\n * @returns {number} the converted area\n */\nfunction convertArea(area, originalUnit, finalUnit) {\n    if (originalUnit === void 0) { originalUnit = \"meters\"; }\n    if (finalUnit === void 0) { finalUnit = \"kilometers\"; }\n    if (!(area >= 0)) {\n        throw new Error(\"area must be a positive number\");\n    }\n    var startFactor = exports.areaFactors[originalUnit];\n    if (!startFactor) {\n        throw new Error(\"invalid original units\");\n    }\n    var finalFactor = exports.areaFactors[finalUnit];\n    if (!finalFactor) {\n        throw new Error(\"invalid final units\");\n    }\n    return (area / startFactor) * finalFactor;\n}\nexports.convertArea = convertArea;\n/**\n * isNumber\n *\n * @param {*} num Number to validate\n * @returns {boolean} true/false\n * @example\n * turf.isNumber(123)\n * //=true\n * turf.isNumber('foo')\n * //=false\n */\nfunction isNumber(num) {\n    return !isNaN(num) && num !== null && !Array.isArray(num);\n}\nexports.isNumber = isNumber;\n/**\n * isObject\n *\n * @param {*} input variable to validate\n * @returns {boolean} true/false\n * @example\n * turf.isObject({elevation: 10})\n * //=true\n * turf.isObject('foo')\n * //=false\n */\nfunction isObject(input) {\n    return !!input && input.constructor === Object;\n}\nexports.isObject = isObject;\n/**\n * Validate BBox\n *\n * @private\n * @param {Array<number>} bbox BBox to validate\n * @returns {void}\n * @throws Error if BBox is not valid\n * @example\n * validateBBox([-180, -40, 110, 50])\n * //=OK\n * validateBBox([-180, -40])\n * //=Error\n * validateBBox('Foo')\n * //=Error\n * validateBBox(5)\n * //=Error\n * validateBBox(null)\n * //=Error\n * validateBBox(undefined)\n * //=Error\n */\nfunction validateBBox(bbox) {\n    if (!bbox) {\n        throw new Error(\"bbox is required\");\n    }\n    if (!Array.isArray(bbox)) {\n        throw new Error(\"bbox must be an Array\");\n    }\n    if (bbox.length !== 4 && bbox.length !== 6) {\n        throw new Error(\"bbox must be an Array of 4 or 6 numbers\");\n    }\n    bbox.forEach(function (num) {\n        if (!isNumber(num)) {\n            throw new Error(\"bbox must only contain numbers\");\n        }\n    });\n}\nexports.validateBBox = validateBBox;\n/**\n * Validate Id\n *\n * @private\n * @param {string|number} id Id to validate\n * @returns {void}\n * @throws Error if Id is not valid\n * @example\n * validateId([-180, -40, 110, 50])\n * //=Error\n * validateId([-180, -40])\n * //=Error\n * validateId('Foo')\n * //=OK\n * validateId(5)\n * //=OK\n * validateId(null)\n * //=Error\n * validateId(undefined)\n * //=Error\n */\nfunction validateId(id) {\n    if (!id) {\n        throw new Error(\"id is required\");\n    }\n    if ([\"string\", \"number\"].indexOf(typeof id) === -1) {\n        throw new Error(\"id must be a number or a string\");\n    }\n}\nexports.validateId = validateId;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar helpers_1 = require(\"@turf/helpers\");\n/**\n * Unwrap a coordinate from a Point Feature, Geometry or a single coordinate.\n *\n * @name getCoord\n * @param {Array<number>|Geometry<Point>|Feature<Point>} coord GeoJSON Point or an Array of numbers\n * @returns {Array<number>} coordinates\n * @example\n * var pt = turf.point([10, 10]);\n *\n * var coord = turf.getCoord(pt);\n * //= [10, 10]\n */\nfunction getCoord(coord) {\n    if (!coord) {\n        throw new Error(\"coord is required\");\n    }\n    if (!Array.isArray(coord)) {\n        if (coord.type === \"Feature\" &&\n            coord.geometry !== null &&\n            coord.geometry.type === \"Point\") {\n            return coord.geometry.coordinates;\n        }\n        if (coord.type === \"Point\") {\n            return coord.coordinates;\n        }\n    }\n    if (Array.isArray(coord) &&\n        coord.length >= 2 &&\n        !Array.isArray(coord[0]) &&\n        !Array.isArray(coord[1])) {\n        return coord;\n    }\n    throw new Error(\"coord must be GeoJSON Point or an Array of numbers\");\n}\nexports.getCoord = getCoord;\n/**\n * Unwrap coordinates from a Feature, Geometry Object or an Array\n *\n * @name getCoords\n * @param {Array<any>|Geometry|Feature} coords Feature, Geometry Object or an Array\n * @returns {Array<any>} coordinates\n * @example\n * var poly = turf.polygon([[[119.32, -8.7], [119.55, -8.69], [119.51, -8.54], [119.32, -8.7]]]);\n *\n * var coords = turf.getCoords(poly);\n * //= [[[119.32, -8.7], [119.55, -8.69], [119.51, -8.54], [119.32, -8.7]]]\n */\nfunction getCoords(coords) {\n    if (Array.isArray(coords)) {\n        return coords;\n    }\n    // Feature\n    if (coords.type === \"Feature\") {\n        if (coords.geometry !== null) {\n            return coords.geometry.coordinates;\n        }\n    }\n    else {\n        // Geometry\n        if (coords.coordinates) {\n            return coords.coordinates;\n        }\n    }\n    throw new Error(\"coords must be GeoJSON Feature, Geometry Object or an Array\");\n}\nexports.getCoords = getCoords;\n/**\n * Checks if coordinates contains a number\n *\n * @name containsNumber\n * @param {Array<any>} coordinates GeoJSON Coordinates\n * @returns {boolean} true if Array contains a number\n */\nfunction containsNumber(coordinates) {\n    if (coordinates.length > 1 &&\n        helpers_1.isNumber(coordinates[0]) &&\n        helpers_1.isNumber(coordinates[1])) {\n        return true;\n    }\n    if (Array.isArray(coordinates[0]) && coordinates[0].length) {\n        return containsNumber(coordinates[0]);\n    }\n    throw new Error(\"coordinates must only contain numbers\");\n}\nexports.containsNumber = containsNumber;\n/**\n * Enforce expectations about types of GeoJSON objects for Turf.\n *\n * @name geojsonType\n * @param {GeoJSON} value any GeoJSON object\n * @param {string} type expected GeoJSON type\n * @param {string} name name of calling function\n * @throws {Error} if value is not the expected type.\n */\nfunction geojsonType(value, type, name) {\n    if (!type || !name) {\n        throw new Error(\"type and name required\");\n    }\n    if (!value || value.type !== type) {\n        throw new Error(\"Invalid input to \" +\n            name +\n            \": must be a \" +\n            type +\n            \", given \" +\n            value.type);\n    }\n}\nexports.geojsonType = geojsonType;\n/**\n * Enforce expectations about types of {@link Feature} inputs for Turf.\n * Internally this uses {@link geojsonType} to judge geometry types.\n *\n * @name featureOf\n * @param {Feature} feature a feature with an expected geometry type\n * @param {string} type expected GeoJSON type\n * @param {string} name name of calling function\n * @throws {Error} error if value is not the expected type.\n */\nfunction featureOf(feature, type, name) {\n    if (!feature) {\n        throw new Error(\"No feature passed\");\n    }\n    if (!name) {\n        throw new Error(\".featureOf() requires a name\");\n    }\n    if (!feature || feature.type !== \"Feature\" || !feature.geometry) {\n        throw new Error(\"Invalid input to \" + name + \", Feature with geometry required\");\n    }\n    if (!feature.geometry || feature.geometry.type !== type) {\n        throw new Error(\"Invalid input to \" +\n            name +\n            \": must be a \" +\n            type +\n            \", given \" +\n            feature.geometry.type);\n    }\n}\nexports.featureOf = featureOf;\n/**\n * Enforce expectations about types of {@link FeatureCollection} inputs for Turf.\n * Internally this uses {@link geojsonType} to judge geometry types.\n *\n * @name collectionOf\n * @param {FeatureCollection} featureCollection a FeatureCollection for which features will be judged\n * @param {string} type expected GeoJSON type\n * @param {string} name name of calling function\n * @throws {Error} if value is not the expected type.\n */\nfunction collectionOf(featureCollection, type, name) {\n    if (!featureCollection) {\n        throw new Error(\"No featureCollection passed\");\n    }\n    if (!name) {\n        throw new Error(\".collectionOf() requires a name\");\n    }\n    if (!featureCollection || featureCollection.type !== \"FeatureCollection\") {\n        throw new Error(\"Invalid input to \" + name + \", FeatureCollection required\");\n    }\n    for (var _i = 0, _a = featureCollection.features; _i < _a.length; _i++) {\n        var feature = _a[_i];\n        if (!feature || feature.type !== \"Feature\" || !feature.geometry) {\n            throw new Error(\"Invalid input to \" + name + \", Feature with geometry required\");\n        }\n        if (!feature.geometry || feature.geometry.type !== type) {\n            throw new Error(\"Invalid input to \" +\n                name +\n                \": must be a \" +\n                type +\n                \", given \" +\n                feature.geometry.type);\n        }\n    }\n}\nexports.collectionOf = collectionOf;\n/**\n * Get Geometry from Feature or Geometry Object\n *\n * @param {Feature|Geometry} geojson GeoJSON Feature or Geometry Object\n * @returns {Geometry|null} GeoJSON Geometry Object\n * @throws {Error} if geojson is not a Feature or Geometry Object\n * @example\n * var point = {\n *   \"type\": \"Feature\",\n *   \"properties\": {},\n *   \"geometry\": {\n *     \"type\": \"Point\",\n *     \"coordinates\": [110, 40]\n *   }\n * }\n * var geom = turf.getGeom(point)\n * //={\"type\": \"Point\", \"coordinates\": [110, 40]}\n */\nfunction getGeom(geojson) {\n    if (geojson.type === \"Feature\") {\n        return geojson.geometry;\n    }\n    return geojson;\n}\nexports.getGeom = getGeom;\n/**\n * Get GeoJSON object's type, Geometry type is prioritize.\n *\n * @param {GeoJSON} geojson GeoJSON object\n * @param {string} [name=\"geojson\"] name of the variable to display in error message (unused)\n * @returns {string} GeoJSON type\n * @example\n * var point = {\n *   \"type\": \"Feature\",\n *   \"properties\": {},\n *   \"geometry\": {\n *     \"type\": \"Point\",\n *     \"coordinates\": [110, 40]\n *   }\n * }\n * var geom = turf.getType(point)\n * //=\"Point\"\n */\nfunction getType(geojson, _name) {\n    if (geojson.type === \"FeatureCollection\") {\n        return \"FeatureCollection\";\n    }\n    if (geojson.type === \"GeometryCollection\") {\n        return \"GeometryCollection\";\n    }\n    if (geojson.type === \"Feature\" && geojson.geometry !== null) {\n        return geojson.geometry.type;\n    }\n    return geojson.type;\n}\nexports.getType = getType;\n","/**\n * Returns a cloned copy of the passed GeoJSON Object, including possible 'Foreign Members'.\n * ~3-5x faster than the common JSON.parse + JSON.stringify combo method.\n *\n * @name clone\n * @param {GeoJSON} geojson GeoJSON Object\n * @returns {GeoJSON} cloned GeoJSON Object\n * @example\n * var line = turf.lineString([[-74, 40], [-78, 42], [-82, 35]], {color: 'red'});\n *\n * var lineCloned = turf.clone(line);\n */\nfunction clone(geojson) {\n    if (!geojson) throw new Error('geojson is required');\n\n    switch (geojson.type) {\n    case 'Feature':\n        return cloneFeature(geojson);\n    case 'FeatureCollection':\n        return cloneFeatureCollection(geojson);\n    case 'Point':\n    case 'LineString':\n    case 'Polygon':\n    case 'MultiPoint':\n    case 'MultiLineString':\n    case 'MultiPolygon':\n    case 'GeometryCollection':\n        return cloneGeometry(geojson);\n    default:\n        throw new Error('unknown GeoJSON type');\n    }\n}\n\n/**\n * Clone Feature\n *\n * @private\n * @param {Feature<any>} geojson GeoJSON Feature\n * @returns {Feature<any>} cloned Feature\n */\nfunction cloneFeature(geojson) {\n    var cloned = {type: 'Feature'};\n    // Preserve Foreign Members\n    Object.keys(geojson).forEach(function (key) {\n        switch (key) {\n        case 'type':\n        case 'properties':\n        case 'geometry':\n            return;\n        default:\n            cloned[key] = geojson[key];\n        }\n    });\n    // Add properties & geometry last\n    cloned.properties = cloneProperties(geojson.properties);\n    cloned.geometry = cloneGeometry(geojson.geometry);\n    return cloned;\n}\n\n/**\n * Clone Properties\n *\n * @private\n * @param {Object} properties GeoJSON Properties\n * @returns {Object} cloned Properties\n */\nfunction cloneProperties(properties) {\n    var cloned = {};\n    if (!properties) return cloned;\n    Object.keys(properties).forEach(function (key) {\n        var value = properties[key];\n        if (typeof value === 'object') {\n            if (value === null) {\n                // handle null\n                cloned[key] = null;\n            } else if (value.length) {\n                // handle Array\n                cloned[key] = value.map(function (item) {\n                    return item;\n                });\n            } else {\n                // handle generic Object\n                cloned[key] = cloneProperties(value);\n            }\n        } else cloned[key] = value;\n    });\n    return cloned;\n}\n\n/**\n * Clone Feature Collection\n *\n * @private\n * @param {FeatureCollection<any>} geojson GeoJSON Feature Collection\n * @returns {FeatureCollection<any>} cloned Feature Collection\n */\nfunction cloneFeatureCollection(geojson) {\n    var cloned = {type: 'FeatureCollection'};\n\n    // Preserve Foreign Members\n    Object.keys(geojson).forEach(function (key) {\n        switch (key) {\n        case 'type':\n        case 'features':\n            return;\n        default:\n            cloned[key] = geojson[key];\n        }\n    });\n    // Add features\n    cloned.features = geojson.features.map(function (feature) {\n        return cloneFeature(feature);\n    });\n    return cloned;\n}\n\n/**\n * Clone Geometry\n *\n * @private\n * @param {Geometry<any>} geometry GeoJSON Geometry\n * @returns {Geometry<any>} cloned Geometry\n */\nfunction cloneGeometry(geometry) {\n    var geom = {type: geometry.type};\n    if (geometry.bbox) geom.bbox = geometry.bbox;\n\n    if (geometry.type === 'GeometryCollection') {\n        geom.geometries = geometry.geometries.map(function (geom) {\n            return cloneGeometry(geom);\n        });\n        return geom;\n    }\n    geom.coordinates = deepSlice(geometry.coordinates);\n    return geom;\n}\n\n/**\n * Deep Slice coordinates\n *\n * @private\n * @param {Coordinates} coords Coordinates\n * @returns {Coordinates} all coordinates sliced\n */\nfunction deepSlice(coords) {\n    if (typeof coords[0] !== 'object') { return coords.slice(); }\n    return coords.map(function (coord) {\n        return deepSlice(coord);\n    });\n}\n\nexport default clone;\n","import { getCoords } from '@turf/invariant';\n\n/**\n * Takes a ring and return true or false whether or not the ring is clockwise or counter-clockwise.\n *\n * @name booleanClockwise\n * @param {Feature<LineString>} line to be evaluated\n * @returns {boolean} true/false\n * @example\n * var clockwiseRing = turf.lineString([[0,0],[1,1],[1,0],[0,0]]);\n * var counterClockwiseRing = turf.lineString([[0,0],[1,0],[1,1],[0,0]]);\n *\n * turf.booleanClockwise(clockwiseRing)\n * //=true\n * turf.booleanClockwise(counterClockwiseRing)\n * //=false\n */\nfunction booleanClockwise(line) {\n    // validation\n    if (!line) throw new Error('line is required');\n    var type = (line.geometry) ? line.geometry.type : line.type;\n    if (!Array.isArray(line) && type !== 'LineString') throw new Error('geometry must be a LineString');\n\n    var ring = getCoords(line);\n    var sum = 0;\n    var i = 1;\n    var prev, cur;\n    while (i < ring.length) {\n        prev = cur || ring[0];\n        cur = ring[i];\n        sum += ((cur[0] - prev[0]) * (cur[1] + prev[1]));\n        i++;\n    }\n    return sum > 0;\n}\n\nexport default booleanClockwise;\n","import clone from '@turf/clone';\nimport booleanClockwise from '@turf/boolean-clockwise';\nimport { featureEach, geomEach } from '@turf/meta';\nimport { getCoords } from '@turf/invariant';\nimport { featureCollection, isObject } from '@turf/helpers';\n\n/**\n * Rewind {@link LineString|(Multi)LineString} or {@link Polygon|(Multi)Polygon} outer ring counterclockwise and inner rings clockwise (Uses {@link http://en.wikipedia.org/wiki/Shoelace_formula|Shoelace Formula}).\n *\n * @name rewind\n * @param {GeoJSON} geojson input GeoJSON Polygon\n * @param {Object} [options={}] Optional parameters\n * @param {boolean} [options.reverse=false] enable reverse winding\n * @param {boolean} [options.mutate=false] allows GeoJSON input to be mutated (significant performance increase if true)\n * @returns {GeoJSON} rewind Polygon\n * @example\n * var polygon = turf.polygon([[[121, -29], [138, -29], [138, -18], [121, -18], [121, -29]]]);\n *\n * var rewind = turf.rewind(polygon);\n *\n * //addToMap\n * var addToMap = [rewind];\n */\nfunction rewind(geojson, options) {\n    // Optional parameters\n    options = options || {};\n    if (!isObject(options)) throw new Error('options is invalid');\n    var reverse = options.reverse || false;\n    var mutate = options.mutate || false;\n\n    // validation\n    if (!geojson) throw new Error('<geojson> is required');\n    if (typeof reverse !== 'boolean') throw new Error('<reverse> must be a boolean');\n    if (typeof mutate !== 'boolean') throw new Error('<mutate> must be a boolean');\n\n    // prevent input mutation\n    if (mutate === false) geojson = clone(geojson);\n\n    // Support Feature Collection or Geometry Collection\n    var results = [];\n    switch (geojson.type) {\n    case 'GeometryCollection':\n        geomEach(geojson, function (geometry) {\n            rewindFeature(geometry, reverse);\n        });\n        return geojson;\n    case 'FeatureCollection':\n        featureEach(geojson, function (feature) {\n            featureEach(rewindFeature(feature, reverse), function (result) {\n                results.push(result);\n            });\n        });\n        return featureCollection(results);\n    }\n    // Support Feature or Geometry Objects\n    return rewindFeature(geojson, reverse);\n}\n\n/**\n * Rewind\n *\n * @private\n * @param {Geometry|Feature<any>} geojson Geometry or Feature\n * @param {Boolean} [reverse=false] enable reverse winding\n * @returns {Geometry|Feature<any>} rewind Geometry or Feature\n */\nfunction rewindFeature(geojson, reverse) {\n    var type = (geojson.type === 'Feature') ? geojson.geometry.type : geojson.type;\n\n    // Support all GeoJSON Geometry Objects\n    switch (type) {\n    case 'GeometryCollection':\n        geomEach(geojson, function (geometry) {\n            rewindFeature(geometry, reverse);\n        });\n        return geojson;\n    case 'LineString':\n        rewindLineString(getCoords(geojson), reverse);\n        return geojson;\n    case 'Polygon':\n        rewindPolygon(getCoords(geojson), reverse);\n        return geojson;\n    case 'MultiLineString':\n        getCoords(geojson).forEach(function (lineCoords) {\n            rewindLineString(lineCoords, reverse);\n        });\n        return geojson;\n    case 'MultiPolygon':\n        getCoords(geojson).forEach(function (lineCoords) {\n            rewindPolygon(lineCoords, reverse);\n        });\n        return geojson;\n    case 'Point':\n    case 'MultiPoint':\n        return geojson;\n    }\n}\n\n/**\n * Rewind LineString - outer ring clockwise\n *\n * @private\n * @param {Array<Array<number>>} coords GeoJSON LineString geometry coordinates\n * @param {Boolean} [reverse=false] enable reverse winding\n * @returns {void} mutates coordinates\n */\nfunction rewindLineString(coords, reverse) {\n    if (booleanClockwise(coords) === reverse) coords.reverse();\n}\n\n/**\n * Rewind Polygon - outer ring counterclockwise and inner rings clockwise.\n *\n * @private\n * @param {Array<Array<Array<number>>>} coords GeoJSON Polygon geometry coordinates\n * @param {Boolean} [reverse=false] enable reverse winding\n * @returns {void} mutates coordinates\n */\nfunction rewindPolygon(coords, reverse) {\n    // outer ring\n    if (booleanClockwise(coords[0]) !== reverse) {\n        coords[0].reverse();\n    }\n    // inner rings\n    for (var i = 1; i < coords.length; i++) {\n        if (booleanClockwise(coords[i]) === reverse) {\n            coords[i].reverse();\n        }\n    }\n}\n\nexport default rewind;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n// https://en.wikipedia.org/wiki/Rhumb_line\nvar helpers_1 = require(\"@turf/helpers\");\nvar invariant_1 = require(\"@turf/invariant\");\n/**\n * Takes two {@link Point|points} and finds the bearing angle between them along a Rhumb line\n * i.e. the angle measured in degrees start the north line (0 degrees)\n *\n * @name rhumbBearing\n * @param {Coord} start starting Point\n * @param {Coord} end ending Point\n * @param {Object} [options] Optional parameters\n * @param {boolean} [options.final=false] calculates the final bearing if true\n * @returns {number} bearing from north in decimal degrees, between -180 and 180 degrees (positive clockwise)\n * @example\n * var point1 = turf.point([-75.343, 39.984], {\"marker-color\": \"#F00\"});\n * var point2 = turf.point([-75.534, 39.123], {\"marker-color\": \"#00F\"});\n *\n * var bearing = turf.rhumbBearing(point1, point2);\n *\n * //addToMap\n * var addToMap = [point1, point2];\n * point1.properties.bearing = bearing;\n * point2.properties.bearing = bearing;\n */\nfunction rhumbBearing(start, end, options) {\n    if (options === void 0) { options = {}; }\n    var bear360;\n    if (options.final) {\n        bear360 = calculateRhumbBearing(invariant_1.getCoord(end), invariant_1.getCoord(start));\n    }\n    else {\n        bear360 = calculateRhumbBearing(invariant_1.getCoord(start), invariant_1.getCoord(end));\n    }\n    var bear180 = bear360 > 180 ? -(360 - bear360) : bear360;\n    return bear180;\n}\n/**\n * Returns the bearing from ‘this’ point to destination point along a rhumb line.\n * Adapted from Geodesy: https://github.com/chrisveness/geodesy/blob/master/latlon-spherical.js\n *\n * @private\n * @param   {Array<number>} from - origin point.\n * @param   {Array<number>} to - destination point.\n * @returns {number} Bearing in degrees from north.\n * @example\n * var p1 = new LatLon(51.127, 1.338);\n * var p2 = new LatLon(50.964, 1.853);\n * var d = p1.rhumbBearingTo(p2); // 116.7 m\n */\nfunction calculateRhumbBearing(from, to) {\n    // φ => phi\n    // Δλ => deltaLambda\n    // Δψ => deltaPsi\n    // θ => theta\n    var phi1 = helpers_1.degreesToRadians(from[1]);\n    var phi2 = helpers_1.degreesToRadians(to[1]);\n    var deltaLambda = helpers_1.degreesToRadians(to[0] - from[0]);\n    // if deltaLambdaon over 180° take shorter rhumb line across the anti-meridian:\n    if (deltaLambda > Math.PI) {\n        deltaLambda -= 2 * Math.PI;\n    }\n    if (deltaLambda < -Math.PI) {\n        deltaLambda += 2 * Math.PI;\n    }\n    var deltaPsi = Math.log(Math.tan(phi2 / 2 + Math.PI / 4) / Math.tan(phi1 / 2 + Math.PI / 4));\n    var theta = Math.atan2(deltaLambda, deltaPsi);\n    return (helpers_1.radiansToDegrees(theta) + 360) % 360;\n}\nexports.default = rhumbBearing;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * @module helpers\n */\n/**\n * Earth Radius used with the Harvesine formula and approximates using a spherical (non-ellipsoid) Earth.\n *\n * @memberof helpers\n * @type {number}\n */\nexports.earthRadius = 6371008.8;\n/**\n * Unit of measurement factors using a spherical (non-ellipsoid) earth radius.\n *\n * @memberof helpers\n * @type {Object}\n */\nexports.factors = {\n    centimeters: exports.earthRadius * 100,\n    centimetres: exports.earthRadius * 100,\n    degrees: exports.earthRadius / 111325,\n    feet: exports.earthRadius * 3.28084,\n    inches: exports.earthRadius * 39.37,\n    kilometers: exports.earthRadius / 1000,\n    kilometres: exports.earthRadius / 1000,\n    meters: exports.earthRadius,\n    metres: exports.earthRadius,\n    miles: exports.earthRadius / 1609.344,\n    millimeters: exports.earthRadius * 1000,\n    millimetres: exports.earthRadius * 1000,\n    nauticalmiles: exports.earthRadius / 1852,\n    radians: 1,\n    yards: exports.earthRadius * 1.0936,\n};\n/**\n * Units of measurement factors based on 1 meter.\n *\n * @memberof helpers\n * @type {Object}\n */\nexports.unitsFactors = {\n    centimeters: 100,\n    centimetres: 100,\n    degrees: 1 / 111325,\n    feet: 3.28084,\n    inches: 39.37,\n    kilometers: 1 / 1000,\n    kilometres: 1 / 1000,\n    meters: 1,\n    metres: 1,\n    miles: 1 / 1609.344,\n    millimeters: 1000,\n    millimetres: 1000,\n    nauticalmiles: 1 / 1852,\n    radians: 1 / exports.earthRadius,\n    yards: 1.0936133,\n};\n/**\n * Area of measurement factors based on 1 square meter.\n *\n * @memberof helpers\n * @type {Object}\n */\nexports.areaFactors = {\n    acres: 0.000247105,\n    centimeters: 10000,\n    centimetres: 10000,\n    feet: 10.763910417,\n    hectares: 0.0001,\n    inches: 1550.003100006,\n    kilometers: 0.000001,\n    kilometres: 0.000001,\n    meters: 1,\n    metres: 1,\n    miles: 3.86e-7,\n    millimeters: 1000000,\n    millimetres: 1000000,\n    yards: 1.195990046,\n};\n/**\n * Wraps a GeoJSON {@link Geometry} in a GeoJSON {@link Feature}.\n *\n * @name feature\n * @param {Geometry} geometry input geometry\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} a GeoJSON Feature\n * @example\n * var geometry = {\n *   \"type\": \"Point\",\n *   \"coordinates\": [110, 50]\n * };\n *\n * var feature = turf.feature(geometry);\n *\n * //=feature\n */\nfunction feature(geom, properties, options) {\n    if (options === void 0) { options = {}; }\n    var feat = { type: \"Feature\" };\n    if (options.id === 0 || options.id) {\n        feat.id = options.id;\n    }\n    if (options.bbox) {\n        feat.bbox = options.bbox;\n    }\n    feat.properties = properties || {};\n    feat.geometry = geom;\n    return feat;\n}\nexports.feature = feature;\n/**\n * Creates a GeoJSON {@link Geometry} from a Geometry string type & coordinates.\n * For GeometryCollection type use `helpers.geometryCollection`\n *\n * @name geometry\n * @param {string} type Geometry Type\n * @param {Array<any>} coordinates Coordinates\n * @param {Object} [options={}] Optional Parameters\n * @returns {Geometry} a GeoJSON Geometry\n * @example\n * var type = \"Point\";\n * var coordinates = [110, 50];\n * var geometry = turf.geometry(type, coordinates);\n * // => geometry\n */\nfunction geometry(type, coordinates, _options) {\n    if (_options === void 0) { _options = {}; }\n    switch (type) {\n        case \"Point\":\n            return point(coordinates).geometry;\n        case \"LineString\":\n            return lineString(coordinates).geometry;\n        case \"Polygon\":\n            return polygon(coordinates).geometry;\n        case \"MultiPoint\":\n            return multiPoint(coordinates).geometry;\n        case \"MultiLineString\":\n            return multiLineString(coordinates).geometry;\n        case \"MultiPolygon\":\n            return multiPolygon(coordinates).geometry;\n        default:\n            throw new Error(type + \" is invalid\");\n    }\n}\nexports.geometry = geometry;\n/**\n * Creates a {@link Point} {@link Feature} from a Position.\n *\n * @name point\n * @param {Array<number>} coordinates longitude, latitude position (each in decimal degrees)\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<Point>} a Point feature\n * @example\n * var point = turf.point([-75.343, 39.984]);\n *\n * //=point\n */\nfunction point(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    if (!coordinates) {\n        throw new Error(\"coordinates is required\");\n    }\n    if (!Array.isArray(coordinates)) {\n        throw new Error(\"coordinates must be an Array\");\n    }\n    if (coordinates.length < 2) {\n        throw new Error(\"coordinates must be at least 2 numbers long\");\n    }\n    if (!isNumber(coordinates[0]) || !isNumber(coordinates[1])) {\n        throw new Error(\"coordinates must contain numbers\");\n    }\n    var geom = {\n        type: \"Point\",\n        coordinates: coordinates,\n    };\n    return feature(geom, properties, options);\n}\nexports.point = point;\n/**\n * Creates a {@link Point} {@link FeatureCollection} from an Array of Point coordinates.\n *\n * @name points\n * @param {Array<Array<number>>} coordinates an array of Points\n * @param {Object} [properties={}] Translate these properties to each Feature\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north]\n * associated with the FeatureCollection\n * @param {string|number} [options.id] Identifier associated with the FeatureCollection\n * @returns {FeatureCollection<Point>} Point Feature\n * @example\n * var points = turf.points([\n *   [-75, 39],\n *   [-80, 45],\n *   [-78, 50]\n * ]);\n *\n * //=points\n */\nfunction points(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    return featureCollection(coordinates.map(function (coords) {\n        return point(coords, properties);\n    }), options);\n}\nexports.points = points;\n/**\n * Creates a {@link Polygon} {@link Feature} from an Array of LinearRings.\n *\n * @name polygon\n * @param {Array<Array<Array<number>>>} coordinates an array of LinearRings\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<Polygon>} Polygon Feature\n * @example\n * var polygon = turf.polygon([[[-5, 52], [-4, 56], [-2, 51], [-7, 54], [-5, 52]]], { name: 'poly1' });\n *\n * //=polygon\n */\nfunction polygon(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    for (var _i = 0, coordinates_1 = coordinates; _i < coordinates_1.length; _i++) {\n        var ring = coordinates_1[_i];\n        if (ring.length < 4) {\n            throw new Error(\"Each LinearRing of a Polygon must have 4 or more Positions.\");\n        }\n        for (var j = 0; j < ring[ring.length - 1].length; j++) {\n            // Check if first point of Polygon contains two numbers\n            if (ring[ring.length - 1][j] !== ring[0][j]) {\n                throw new Error(\"First and last Position are not equivalent.\");\n            }\n        }\n    }\n    var geom = {\n        type: \"Polygon\",\n        coordinates: coordinates,\n    };\n    return feature(geom, properties, options);\n}\nexports.polygon = polygon;\n/**\n * Creates a {@link Polygon} {@link FeatureCollection} from an Array of Polygon coordinates.\n *\n * @name polygons\n * @param {Array<Array<Array<Array<number>>>>} coordinates an array of Polygon coordinates\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the FeatureCollection\n * @returns {FeatureCollection<Polygon>} Polygon FeatureCollection\n * @example\n * var polygons = turf.polygons([\n *   [[[-5, 52], [-4, 56], [-2, 51], [-7, 54], [-5, 52]]],\n *   [[[-15, 42], [-14, 46], [-12, 41], [-17, 44], [-15, 42]]],\n * ]);\n *\n * //=polygons\n */\nfunction polygons(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    return featureCollection(coordinates.map(function (coords) {\n        return polygon(coords, properties);\n    }), options);\n}\nexports.polygons = polygons;\n/**\n * Creates a {@link LineString} {@link Feature} from an Array of Positions.\n *\n * @name lineString\n * @param {Array<Array<number>>} coordinates an array of Positions\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<LineString>} LineString Feature\n * @example\n * var linestring1 = turf.lineString([[-24, 63], [-23, 60], [-25, 65], [-20, 69]], {name: 'line 1'});\n * var linestring2 = turf.lineString([[-14, 43], [-13, 40], [-15, 45], [-10, 49]], {name: 'line 2'});\n *\n * //=linestring1\n * //=linestring2\n */\nfunction lineString(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    if (coordinates.length < 2) {\n        throw new Error(\"coordinates must be an array of two or more positions\");\n    }\n    var geom = {\n        type: \"LineString\",\n        coordinates: coordinates,\n    };\n    return feature(geom, properties, options);\n}\nexports.lineString = lineString;\n/**\n * Creates a {@link LineString} {@link FeatureCollection} from an Array of LineString coordinates.\n *\n * @name lineStrings\n * @param {Array<Array<Array<number>>>} coordinates an array of LinearRings\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north]\n * associated with the FeatureCollection\n * @param {string|number} [options.id] Identifier associated with the FeatureCollection\n * @returns {FeatureCollection<LineString>} LineString FeatureCollection\n * @example\n * var linestrings = turf.lineStrings([\n *   [[-24, 63], [-23, 60], [-25, 65], [-20, 69]],\n *   [[-14, 43], [-13, 40], [-15, 45], [-10, 49]]\n * ]);\n *\n * //=linestrings\n */\nfunction lineStrings(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    return featureCollection(coordinates.map(function (coords) {\n        return lineString(coords, properties);\n    }), options);\n}\nexports.lineStrings = lineStrings;\n/**\n * Takes one or more {@link Feature|Features} and creates a {@link FeatureCollection}.\n *\n * @name featureCollection\n * @param {Feature[]} features input features\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {FeatureCollection} FeatureCollection of Features\n * @example\n * var locationA = turf.point([-75.343, 39.984], {name: 'Location A'});\n * var locationB = turf.point([-75.833, 39.284], {name: 'Location B'});\n * var locationC = turf.point([-75.534, 39.123], {name: 'Location C'});\n *\n * var collection = turf.featureCollection([\n *   locationA,\n *   locationB,\n *   locationC\n * ]);\n *\n * //=collection\n */\nfunction featureCollection(features, options) {\n    if (options === void 0) { options = {}; }\n    var fc = { type: \"FeatureCollection\" };\n    if (options.id) {\n        fc.id = options.id;\n    }\n    if (options.bbox) {\n        fc.bbox = options.bbox;\n    }\n    fc.features = features;\n    return fc;\n}\nexports.featureCollection = featureCollection;\n/**\n * Creates a {@link Feature<MultiLineString>} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name multiLineString\n * @param {Array<Array<Array<number>>>} coordinates an array of LineStrings\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<MultiLineString>} a MultiLineString feature\n * @throws {Error} if no coordinates are passed\n * @example\n * var multiLine = turf.multiLineString([[[0,0],[10,10]]]);\n *\n * //=multiLine\n */\nfunction multiLineString(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    var geom = {\n        type: \"MultiLineString\",\n        coordinates: coordinates,\n    };\n    return feature(geom, properties, options);\n}\nexports.multiLineString = multiLineString;\n/**\n * Creates a {@link Feature<MultiPoint>} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name multiPoint\n * @param {Array<Array<number>>} coordinates an array of Positions\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<MultiPoint>} a MultiPoint feature\n * @throws {Error} if no coordinates are passed\n * @example\n * var multiPt = turf.multiPoint([[0,0],[10,10]]);\n *\n * //=multiPt\n */\nfunction multiPoint(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    var geom = {\n        type: \"MultiPoint\",\n        coordinates: coordinates,\n    };\n    return feature(geom, properties, options);\n}\nexports.multiPoint = multiPoint;\n/**\n * Creates a {@link Feature<MultiPolygon>} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name multiPolygon\n * @param {Array<Array<Array<Array<number>>>>} coordinates an array of Polygons\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<MultiPolygon>} a multipolygon feature\n * @throws {Error} if no coordinates are passed\n * @example\n * var multiPoly = turf.multiPolygon([[[[0,0],[0,10],[10,10],[10,0],[0,0]]]]);\n *\n * //=multiPoly\n *\n */\nfunction multiPolygon(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    var geom = {\n        type: \"MultiPolygon\",\n        coordinates: coordinates,\n    };\n    return feature(geom, properties, options);\n}\nexports.multiPolygon = multiPolygon;\n/**\n * Creates a {@link Feature<GeometryCollection>} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name geometryCollection\n * @param {Array<Geometry>} geometries an array of GeoJSON Geometries\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<GeometryCollection>} a GeoJSON GeometryCollection Feature\n * @example\n * var pt = turf.geometry(\"Point\", [100, 0]);\n * var line = turf.geometry(\"LineString\", [[101, 0], [102, 1]]);\n * var collection = turf.geometryCollection([pt, line]);\n *\n * // => collection\n */\nfunction geometryCollection(geometries, properties, options) {\n    if (options === void 0) { options = {}; }\n    var geom = {\n        type: \"GeometryCollection\",\n        geometries: geometries,\n    };\n    return feature(geom, properties, options);\n}\nexports.geometryCollection = geometryCollection;\n/**\n * Round number to precision\n *\n * @param {number} num Number\n * @param {number} [precision=0] Precision\n * @returns {number} rounded number\n * @example\n * turf.round(120.4321)\n * //=120\n *\n * turf.round(120.4321, 2)\n * //=120.43\n */\nfunction round(num, precision) {\n    if (precision === void 0) { precision = 0; }\n    if (precision && !(precision >= 0)) {\n        throw new Error(\"precision must be a positive number\");\n    }\n    var multiplier = Math.pow(10, precision || 0);\n    return Math.round(num * multiplier) / multiplier;\n}\nexports.round = round;\n/**\n * Convert a distance measurement (assuming a spherical Earth) from radians to a more friendly unit.\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet\n *\n * @name radiansToLength\n * @param {number} radians in radians across the sphere\n * @param {string} [units=\"kilometers\"] can be degrees, radians, miles, inches, yards, metres,\n * meters, kilometres, kilometers.\n * @returns {number} distance\n */\nfunction radiansToLength(radians, units) {\n    if (units === void 0) { units = \"kilometers\"; }\n    var factor = exports.factors[units];\n    if (!factor) {\n        throw new Error(units + \" units is invalid\");\n    }\n    return radians * factor;\n}\nexports.radiansToLength = radiansToLength;\n/**\n * Convert a distance measurement (assuming a spherical Earth) from a real-world unit into radians\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet\n *\n * @name lengthToRadians\n * @param {number} distance in real units\n * @param {string} [units=\"kilometers\"] can be degrees, radians, miles, inches, yards, metres,\n * meters, kilometres, kilometers.\n * @returns {number} radians\n */\nfunction lengthToRadians(distance, units) {\n    if (units === void 0) { units = \"kilometers\"; }\n    var factor = exports.factors[units];\n    if (!factor) {\n        throw new Error(units + \" units is invalid\");\n    }\n    return distance / factor;\n}\nexports.lengthToRadians = lengthToRadians;\n/**\n * Convert a distance measurement (assuming a spherical Earth) from a real-world unit into degrees\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, centimeters, kilometres, feet\n *\n * @name lengthToDegrees\n * @param {number} distance in real units\n * @param {string} [units=\"kilometers\"] can be degrees, radians, miles, inches, yards, metres,\n * meters, kilometres, kilometers.\n * @returns {number} degrees\n */\nfunction lengthToDegrees(distance, units) {\n    return radiansToDegrees(lengthToRadians(distance, units));\n}\nexports.lengthToDegrees = lengthToDegrees;\n/**\n * Converts any bearing angle from the north line direction (positive clockwise)\n * and returns an angle between 0-360 degrees (positive clockwise), 0 being the north line\n *\n * @name bearingToAzimuth\n * @param {number} bearing angle, between -180 and +180 degrees\n * @returns {number} angle between 0 and 360 degrees\n */\nfunction bearingToAzimuth(bearing) {\n    var angle = bearing % 360;\n    if (angle < 0) {\n        angle += 360;\n    }\n    return angle;\n}\nexports.bearingToAzimuth = bearingToAzimuth;\n/**\n * Converts an angle in radians to degrees\n *\n * @name radiansToDegrees\n * @param {number} radians angle in radians\n * @returns {number} degrees between 0 and 360 degrees\n */\nfunction radiansToDegrees(radians) {\n    var degrees = radians % (2 * Math.PI);\n    return (degrees * 180) / Math.PI;\n}\nexports.radiansToDegrees = radiansToDegrees;\n/**\n * Converts an angle in degrees to radians\n *\n * @name degreesToRadians\n * @param {number} degrees angle between 0 and 360 degrees\n * @returns {number} angle in radians\n */\nfunction degreesToRadians(degrees) {\n    var radians = degrees % 360;\n    return (radians * Math.PI) / 180;\n}\nexports.degreesToRadians = degreesToRadians;\n/**\n * Converts a length to the requested unit.\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet\n *\n * @param {number} length to be converted\n * @param {Units} [originalUnit=\"kilometers\"] of the length\n * @param {Units} [finalUnit=\"kilometers\"] returned unit\n * @returns {number} the converted length\n */\nfunction convertLength(length, originalUnit, finalUnit) {\n    if (originalUnit === void 0) { originalUnit = \"kilometers\"; }\n    if (finalUnit === void 0) { finalUnit = \"kilometers\"; }\n    if (!(length >= 0)) {\n        throw new Error(\"length must be a positive number\");\n    }\n    return radiansToLength(lengthToRadians(length, originalUnit), finalUnit);\n}\nexports.convertLength = convertLength;\n/**\n * Converts a area to the requested unit.\n * Valid units: kilometers, kilometres, meters, metres, centimetres, millimeters, acres, miles, yards, feet, inches, hectares\n * @param {number} area to be converted\n * @param {Units} [originalUnit=\"meters\"] of the distance\n * @param {Units} [finalUnit=\"kilometers\"] returned unit\n * @returns {number} the converted area\n */\nfunction convertArea(area, originalUnit, finalUnit) {\n    if (originalUnit === void 0) { originalUnit = \"meters\"; }\n    if (finalUnit === void 0) { finalUnit = \"kilometers\"; }\n    if (!(area >= 0)) {\n        throw new Error(\"area must be a positive number\");\n    }\n    var startFactor = exports.areaFactors[originalUnit];\n    if (!startFactor) {\n        throw new Error(\"invalid original units\");\n    }\n    var finalFactor = exports.areaFactors[finalUnit];\n    if (!finalFactor) {\n        throw new Error(\"invalid final units\");\n    }\n    return (area / startFactor) * finalFactor;\n}\nexports.convertArea = convertArea;\n/**\n * isNumber\n *\n * @param {*} num Number to validate\n * @returns {boolean} true/false\n * @example\n * turf.isNumber(123)\n * //=true\n * turf.isNumber('foo')\n * //=false\n */\nfunction isNumber(num) {\n    return !isNaN(num) && num !== null && !Array.isArray(num);\n}\nexports.isNumber = isNumber;\n/**\n * isObject\n *\n * @param {*} input variable to validate\n * @returns {boolean} true/false\n * @example\n * turf.isObject({elevation: 10})\n * //=true\n * turf.isObject('foo')\n * //=false\n */\nfunction isObject(input) {\n    return !!input && input.constructor === Object;\n}\nexports.isObject = isObject;\n/**\n * Validate BBox\n *\n * @private\n * @param {Array<number>} bbox BBox to validate\n * @returns {void}\n * @throws Error if BBox is not valid\n * @example\n * validateBBox([-180, -40, 110, 50])\n * //=OK\n * validateBBox([-180, -40])\n * //=Error\n * validateBBox('Foo')\n * //=Error\n * validateBBox(5)\n * //=Error\n * validateBBox(null)\n * //=Error\n * validateBBox(undefined)\n * //=Error\n */\nfunction validateBBox(bbox) {\n    if (!bbox) {\n        throw new Error(\"bbox is required\");\n    }\n    if (!Array.isArray(bbox)) {\n        throw new Error(\"bbox must be an Array\");\n    }\n    if (bbox.length !== 4 && bbox.length !== 6) {\n        throw new Error(\"bbox must be an Array of 4 or 6 numbers\");\n    }\n    bbox.forEach(function (num) {\n        if (!isNumber(num)) {\n            throw new Error(\"bbox must only contain numbers\");\n        }\n    });\n}\nexports.validateBBox = validateBBox;\n/**\n * Validate Id\n *\n * @private\n * @param {string|number} id Id to validate\n * @returns {void}\n * @throws Error if Id is not valid\n * @example\n * validateId([-180, -40, 110, 50])\n * //=Error\n * validateId([-180, -40])\n * //=Error\n * validateId('Foo')\n * //=OK\n * validateId(5)\n * //=OK\n * validateId(null)\n * //=Error\n * validateId(undefined)\n * //=Error\n */\nfunction validateId(id) {\n    if (!id) {\n        throw new Error(\"id is required\");\n    }\n    if ([\"string\", \"number\"].indexOf(typeof id) === -1) {\n        throw new Error(\"id must be a number or a string\");\n    }\n}\nexports.validateId = validateId;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar helpers_1 = require(\"@turf/helpers\");\n/**\n * Unwrap a coordinate from a Point Feature, Geometry or a single coordinate.\n *\n * @name getCoord\n * @param {Array<number>|Geometry<Point>|Feature<Point>} coord GeoJSON Point or an Array of numbers\n * @returns {Array<number>} coordinates\n * @example\n * var pt = turf.point([10, 10]);\n *\n * var coord = turf.getCoord(pt);\n * //= [10, 10]\n */\nfunction getCoord(coord) {\n    if (!coord) {\n        throw new Error(\"coord is required\");\n    }\n    if (!Array.isArray(coord)) {\n        if (coord.type === \"Feature\" &&\n            coord.geometry !== null &&\n            coord.geometry.type === \"Point\") {\n            return coord.geometry.coordinates;\n        }\n        if (coord.type === \"Point\") {\n            return coord.coordinates;\n        }\n    }\n    if (Array.isArray(coord) &&\n        coord.length >= 2 &&\n        !Array.isArray(coord[0]) &&\n        !Array.isArray(coord[1])) {\n        return coord;\n    }\n    throw new Error(\"coord must be GeoJSON Point or an Array of numbers\");\n}\nexports.getCoord = getCoord;\n/**\n * Unwrap coordinates from a Feature, Geometry Object or an Array\n *\n * @name getCoords\n * @param {Array<any>|Geometry|Feature} coords Feature, Geometry Object or an Array\n * @returns {Array<any>} coordinates\n * @example\n * var poly = turf.polygon([[[119.32, -8.7], [119.55, -8.69], [119.51, -8.54], [119.32, -8.7]]]);\n *\n * var coords = turf.getCoords(poly);\n * //= [[[119.32, -8.7], [119.55, -8.69], [119.51, -8.54], [119.32, -8.7]]]\n */\nfunction getCoords(coords) {\n    if (Array.isArray(coords)) {\n        return coords;\n    }\n    // Feature\n    if (coords.type === \"Feature\") {\n        if (coords.geometry !== null) {\n            return coords.geometry.coordinates;\n        }\n    }\n    else {\n        // Geometry\n        if (coords.coordinates) {\n            return coords.coordinates;\n        }\n    }\n    throw new Error(\"coords must be GeoJSON Feature, Geometry Object or an Array\");\n}\nexports.getCoords = getCoords;\n/**\n * Checks if coordinates contains a number\n *\n * @name containsNumber\n * @param {Array<any>} coordinates GeoJSON Coordinates\n * @returns {boolean} true if Array contains a number\n */\nfunction containsNumber(coordinates) {\n    if (coordinates.length > 1 &&\n        helpers_1.isNumber(coordinates[0]) &&\n        helpers_1.isNumber(coordinates[1])) {\n        return true;\n    }\n    if (Array.isArray(coordinates[0]) && coordinates[0].length) {\n        return containsNumber(coordinates[0]);\n    }\n    throw new Error(\"coordinates must only contain numbers\");\n}\nexports.containsNumber = containsNumber;\n/**\n * Enforce expectations about types of GeoJSON objects for Turf.\n *\n * @name geojsonType\n * @param {GeoJSON} value any GeoJSON object\n * @param {string} type expected GeoJSON type\n * @param {string} name name of calling function\n * @throws {Error} if value is not the expected type.\n */\nfunction geojsonType(value, type, name) {\n    if (!type || !name) {\n        throw new Error(\"type and name required\");\n    }\n    if (!value || value.type !== type) {\n        throw new Error(\"Invalid input to \" +\n            name +\n            \": must be a \" +\n            type +\n            \", given \" +\n            value.type);\n    }\n}\nexports.geojsonType = geojsonType;\n/**\n * Enforce expectations about types of {@link Feature} inputs for Turf.\n * Internally this uses {@link geojsonType} to judge geometry types.\n *\n * @name featureOf\n * @param {Feature} feature a feature with an expected geometry type\n * @param {string} type expected GeoJSON type\n * @param {string} name name of calling function\n * @throws {Error} error if value is not the expected type.\n */\nfunction featureOf(feature, type, name) {\n    if (!feature) {\n        throw new Error(\"No feature passed\");\n    }\n    if (!name) {\n        throw new Error(\".featureOf() requires a name\");\n    }\n    if (!feature || feature.type !== \"Feature\" || !feature.geometry) {\n        throw new Error(\"Invalid input to \" + name + \", Feature with geometry required\");\n    }\n    if (!feature.geometry || feature.geometry.type !== type) {\n        throw new Error(\"Invalid input to \" +\n            name +\n            \": must be a \" +\n            type +\n            \", given \" +\n            feature.geometry.type);\n    }\n}\nexports.featureOf = featureOf;\n/**\n * Enforce expectations about types of {@link FeatureCollection} inputs for Turf.\n * Internally this uses {@link geojsonType} to judge geometry types.\n *\n * @name collectionOf\n * @param {FeatureCollection} featureCollection a FeatureCollection for which features will be judged\n * @param {string} type expected GeoJSON type\n * @param {string} name name of calling function\n * @throws {Error} if value is not the expected type.\n */\nfunction collectionOf(featureCollection, type, name) {\n    if (!featureCollection) {\n        throw new Error(\"No featureCollection passed\");\n    }\n    if (!name) {\n        throw new Error(\".collectionOf() requires a name\");\n    }\n    if (!featureCollection || featureCollection.type !== \"FeatureCollection\") {\n        throw new Error(\"Invalid input to \" + name + \", FeatureCollection required\");\n    }\n    for (var _i = 0, _a = featureCollection.features; _i < _a.length; _i++) {\n        var feature = _a[_i];\n        if (!feature || feature.type !== \"Feature\" || !feature.geometry) {\n            throw new Error(\"Invalid input to \" + name + \", Feature with geometry required\");\n        }\n        if (!feature.geometry || feature.geometry.type !== type) {\n            throw new Error(\"Invalid input to \" +\n                name +\n                \": must be a \" +\n                type +\n                \", given \" +\n                feature.geometry.type);\n        }\n    }\n}\nexports.collectionOf = collectionOf;\n/**\n * Get Geometry from Feature or Geometry Object\n *\n * @param {Feature|Geometry} geojson GeoJSON Feature or Geometry Object\n * @returns {Geometry|null} GeoJSON Geometry Object\n * @throws {Error} if geojson is not a Feature or Geometry Object\n * @example\n * var point = {\n *   \"type\": \"Feature\",\n *   \"properties\": {},\n *   \"geometry\": {\n *     \"type\": \"Point\",\n *     \"coordinates\": [110, 40]\n *   }\n * }\n * var geom = turf.getGeom(point)\n * //={\"type\": \"Point\", \"coordinates\": [110, 40]}\n */\nfunction getGeom(geojson) {\n    if (geojson.type === \"Feature\") {\n        return geojson.geometry;\n    }\n    return geojson;\n}\nexports.getGeom = getGeom;\n/**\n * Get GeoJSON object's type, Geometry type is prioritize.\n *\n * @param {GeoJSON} geojson GeoJSON object\n * @param {string} [name=\"geojson\"] name of the variable to display in error message (unused)\n * @returns {string} GeoJSON type\n * @example\n * var point = {\n *   \"type\": \"Feature\",\n *   \"properties\": {},\n *   \"geometry\": {\n *     \"type\": \"Point\",\n *     \"coordinates\": [110, 40]\n *   }\n * }\n * var geom = turf.getType(point)\n * //=\"Point\"\n */\nfunction getType(geojson, _name) {\n    if (geojson.type === \"FeatureCollection\") {\n        return \"FeatureCollection\";\n    }\n    if (geojson.type === \"GeometryCollection\") {\n        return \"GeometryCollection\";\n    }\n    if (geojson.type === \"Feature\" && geojson.geometry !== null) {\n        return geojson.geometry.type;\n    }\n    return geojson.type;\n}\nexports.getType = getType;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n// https://en.wikipedia.org/wiki/Rhumb_line\nvar helpers_1 = require(\"@turf/helpers\");\nvar invariant_1 = require(\"@turf/invariant\");\n/**\n * Returns the destination {@link Point} having travelled the given distance along a Rhumb line from the\n * origin Point with the (varant) given bearing.\n *\n * @name rhumbDestination\n * @param {Coord} origin starting point\n * @param {number} distance distance from the starting point\n * @param {number} bearing varant bearing angle ranging from -180 to 180 degrees from north\n * @param {Object} [options={}] Optional parameters\n * @param {string} [options.units='kilometers'] can be degrees, radians, miles, or kilometers\n * @param {Object} [options.properties={}] translate properties to destination point\n * @returns {Feature<Point>} Destination point.\n * @example\n * var pt = turf.point([-75.343, 39.984], {\"marker-color\": \"F00\"});\n * var distance = 50;\n * var bearing = 90;\n * var options = {units: 'miles'};\n *\n * var destination = turf.rhumbDestination(pt, distance, bearing, options);\n *\n * //addToMap\n * var addToMap = [pt, destination]\n * destination.properties['marker-color'] = '#00F';\n */\nfunction rhumbDestination(origin, distance, bearing, options) {\n    if (options === void 0) { options = {}; }\n    var wasNegativeDistance = distance < 0;\n    var distanceInMeters = helpers_1.convertLength(Math.abs(distance), options.units, \"meters\");\n    if (wasNegativeDistance)\n        distanceInMeters = -Math.abs(distanceInMeters);\n    var coords = invariant_1.getCoord(origin);\n    var destination = calculateRhumbDestination(coords, distanceInMeters, bearing);\n    // compensate the crossing of the 180th meridian (https://macwright.org/2016/09/26/the-180th-meridian.html)\n    // solution from https://github.com/mapbox/mapbox-gl-js/issues/3250#issuecomment-294887678\n    destination[0] +=\n        destination[0] - coords[0] > 180\n            ? -360\n            : coords[0] - destination[0] > 180\n                ? 360\n                : 0;\n    return helpers_1.point(destination, options.properties);\n}\n/**\n * Returns the destination point having travelled along a rhumb line from origin point the given\n * distance on the  given bearing.\n * Adapted from Geodesy: http://www.movable-type.co.uk/scripts/latlong.html#rhumblines\n *\n * @private\n * @param   {Array<number>} origin - point\n * @param   {number} distance - Distance travelled, in same units as earth radius (default: metres).\n * @param   {number} bearing - Bearing in degrees from north.\n * @param   {number} [radius=6371e3] - (Mean) radius of earth (defaults to radius in metres).\n * @returns {Array<number>} Destination point.\n */\nfunction calculateRhumbDestination(origin, distance, bearing, radius) {\n    // φ => phi\n    // λ => lambda\n    // ψ => psi\n    // Δ => Delta\n    // δ => delta\n    // θ => theta\n    radius = radius === undefined ? helpers_1.earthRadius : Number(radius);\n    var delta = distance / radius; // angular distance in radians\n    var lambda1 = (origin[0] * Math.PI) / 180; // to radians, but without normalize to 𝜋\n    var phi1 = helpers_1.degreesToRadians(origin[1]);\n    var theta = helpers_1.degreesToRadians(bearing);\n    var DeltaPhi = delta * Math.cos(theta);\n    var phi2 = phi1 + DeltaPhi;\n    // check for some daft bugger going past the pole, normalise latitude if so\n    if (Math.abs(phi2) > Math.PI / 2) {\n        phi2 = phi2 > 0 ? Math.PI - phi2 : -Math.PI - phi2;\n    }\n    var DeltaPsi = Math.log(Math.tan(phi2 / 2 + Math.PI / 4) / Math.tan(phi1 / 2 + Math.PI / 4));\n    // E-W course becomes ill-conditioned with 0/0\n    var q = Math.abs(DeltaPsi) > 10e-12 ? DeltaPhi / DeltaPsi : Math.cos(phi1);\n    var DeltaLambda = (delta * Math.sin(theta)) / q;\n    var lambda2 = lambda1 + DeltaLambda;\n    return [\n        (((lambda2 * 180) / Math.PI + 540) % 360) - 180,\n        (phi2 * 180) / Math.PI,\n    ]; // normalise to −180..+180°\n}\nexports.default = rhumbDestination;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * @module helpers\n */\n/**\n * Earth Radius used with the Harvesine formula and approximates using a spherical (non-ellipsoid) Earth.\n *\n * @memberof helpers\n * @type {number}\n */\nexports.earthRadius = 6371008.8;\n/**\n * Unit of measurement factors using a spherical (non-ellipsoid) earth radius.\n *\n * @memberof helpers\n * @type {Object}\n */\nexports.factors = {\n    centimeters: exports.earthRadius * 100,\n    centimetres: exports.earthRadius * 100,\n    degrees: exports.earthRadius / 111325,\n    feet: exports.earthRadius * 3.28084,\n    inches: exports.earthRadius * 39.37,\n    kilometers: exports.earthRadius / 1000,\n    kilometres: exports.earthRadius / 1000,\n    meters: exports.earthRadius,\n    metres: exports.earthRadius,\n    miles: exports.earthRadius / 1609.344,\n    millimeters: exports.earthRadius * 1000,\n    millimetres: exports.earthRadius * 1000,\n    nauticalmiles: exports.earthRadius / 1852,\n    radians: 1,\n    yards: exports.earthRadius * 1.0936,\n};\n/**\n * Units of measurement factors based on 1 meter.\n *\n * @memberof helpers\n * @type {Object}\n */\nexports.unitsFactors = {\n    centimeters: 100,\n    centimetres: 100,\n    degrees: 1 / 111325,\n    feet: 3.28084,\n    inches: 39.37,\n    kilometers: 1 / 1000,\n    kilometres: 1 / 1000,\n    meters: 1,\n    metres: 1,\n    miles: 1 / 1609.344,\n    millimeters: 1000,\n    millimetres: 1000,\n    nauticalmiles: 1 / 1852,\n    radians: 1 / exports.earthRadius,\n    yards: 1.0936133,\n};\n/**\n * Area of measurement factors based on 1 square meter.\n *\n * @memberof helpers\n * @type {Object}\n */\nexports.areaFactors = {\n    acres: 0.000247105,\n    centimeters: 10000,\n    centimetres: 10000,\n    feet: 10.763910417,\n    hectares: 0.0001,\n    inches: 1550.003100006,\n    kilometers: 0.000001,\n    kilometres: 0.000001,\n    meters: 1,\n    metres: 1,\n    miles: 3.86e-7,\n    millimeters: 1000000,\n    millimetres: 1000000,\n    yards: 1.195990046,\n};\n/**\n * Wraps a GeoJSON {@link Geometry} in a GeoJSON {@link Feature}.\n *\n * @name feature\n * @param {Geometry} geometry input geometry\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} a GeoJSON Feature\n * @example\n * var geometry = {\n *   \"type\": \"Point\",\n *   \"coordinates\": [110, 50]\n * };\n *\n * var feature = turf.feature(geometry);\n *\n * //=feature\n */\nfunction feature(geom, properties, options) {\n    if (options === void 0) { options = {}; }\n    var feat = { type: \"Feature\" };\n    if (options.id === 0 || options.id) {\n        feat.id = options.id;\n    }\n    if (options.bbox) {\n        feat.bbox = options.bbox;\n    }\n    feat.properties = properties || {};\n    feat.geometry = geom;\n    return feat;\n}\nexports.feature = feature;\n/**\n * Creates a GeoJSON {@link Geometry} from a Geometry string type & coordinates.\n * For GeometryCollection type use `helpers.geometryCollection`\n *\n * @name geometry\n * @param {string} type Geometry Type\n * @param {Array<any>} coordinates Coordinates\n * @param {Object} [options={}] Optional Parameters\n * @returns {Geometry} a GeoJSON Geometry\n * @example\n * var type = \"Point\";\n * var coordinates = [110, 50];\n * var geometry = turf.geometry(type, coordinates);\n * // => geometry\n */\nfunction geometry(type, coordinates, _options) {\n    if (_options === void 0) { _options = {}; }\n    switch (type) {\n        case \"Point\":\n            return point(coordinates).geometry;\n        case \"LineString\":\n            return lineString(coordinates).geometry;\n        case \"Polygon\":\n            return polygon(coordinates).geometry;\n        case \"MultiPoint\":\n            return multiPoint(coordinates).geometry;\n        case \"MultiLineString\":\n            return multiLineString(coordinates).geometry;\n        case \"MultiPolygon\":\n            return multiPolygon(coordinates).geometry;\n        default:\n            throw new Error(type + \" is invalid\");\n    }\n}\nexports.geometry = geometry;\n/**\n * Creates a {@link Point} {@link Feature} from a Position.\n *\n * @name point\n * @param {Array<number>} coordinates longitude, latitude position (each in decimal degrees)\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<Point>} a Point feature\n * @example\n * var point = turf.point([-75.343, 39.984]);\n *\n * //=point\n */\nfunction point(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    if (!coordinates) {\n        throw new Error(\"coordinates is required\");\n    }\n    if (!Array.isArray(coordinates)) {\n        throw new Error(\"coordinates must be an Array\");\n    }\n    if (coordinates.length < 2) {\n        throw new Error(\"coordinates must be at least 2 numbers long\");\n    }\n    if (!isNumber(coordinates[0]) || !isNumber(coordinates[1])) {\n        throw new Error(\"coordinates must contain numbers\");\n    }\n    var geom = {\n        type: \"Point\",\n        coordinates: coordinates,\n    };\n    return feature(geom, properties, options);\n}\nexports.point = point;\n/**\n * Creates a {@link Point} {@link FeatureCollection} from an Array of Point coordinates.\n *\n * @name points\n * @param {Array<Array<number>>} coordinates an array of Points\n * @param {Object} [properties={}] Translate these properties to each Feature\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north]\n * associated with the FeatureCollection\n * @param {string|number} [options.id] Identifier associated with the FeatureCollection\n * @returns {FeatureCollection<Point>} Point Feature\n * @example\n * var points = turf.points([\n *   [-75, 39],\n *   [-80, 45],\n *   [-78, 50]\n * ]);\n *\n * //=points\n */\nfunction points(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    return featureCollection(coordinates.map(function (coords) {\n        return point(coords, properties);\n    }), options);\n}\nexports.points = points;\n/**\n * Creates a {@link Polygon} {@link Feature} from an Array of LinearRings.\n *\n * @name polygon\n * @param {Array<Array<Array<number>>>} coordinates an array of LinearRings\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<Polygon>} Polygon Feature\n * @example\n * var polygon = turf.polygon([[[-5, 52], [-4, 56], [-2, 51], [-7, 54], [-5, 52]]], { name: 'poly1' });\n *\n * //=polygon\n */\nfunction polygon(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    for (var _i = 0, coordinates_1 = coordinates; _i < coordinates_1.length; _i++) {\n        var ring = coordinates_1[_i];\n        if (ring.length < 4) {\n            throw new Error(\"Each LinearRing of a Polygon must have 4 or more Positions.\");\n        }\n        for (var j = 0; j < ring[ring.length - 1].length; j++) {\n            // Check if first point of Polygon contains two numbers\n            if (ring[ring.length - 1][j] !== ring[0][j]) {\n                throw new Error(\"First and last Position are not equivalent.\");\n            }\n        }\n    }\n    var geom = {\n        type: \"Polygon\",\n        coordinates: coordinates,\n    };\n    return feature(geom, properties, options);\n}\nexports.polygon = polygon;\n/**\n * Creates a {@link Polygon} {@link FeatureCollection} from an Array of Polygon coordinates.\n *\n * @name polygons\n * @param {Array<Array<Array<Array<number>>>>} coordinates an array of Polygon coordinates\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the FeatureCollection\n * @returns {FeatureCollection<Polygon>} Polygon FeatureCollection\n * @example\n * var polygons = turf.polygons([\n *   [[[-5, 52], [-4, 56], [-2, 51], [-7, 54], [-5, 52]]],\n *   [[[-15, 42], [-14, 46], [-12, 41], [-17, 44], [-15, 42]]],\n * ]);\n *\n * //=polygons\n */\nfunction polygons(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    return featureCollection(coordinates.map(function (coords) {\n        return polygon(coords, properties);\n    }), options);\n}\nexports.polygons = polygons;\n/**\n * Creates a {@link LineString} {@link Feature} from an Array of Positions.\n *\n * @name lineString\n * @param {Array<Array<number>>} coordinates an array of Positions\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<LineString>} LineString Feature\n * @example\n * var linestring1 = turf.lineString([[-24, 63], [-23, 60], [-25, 65], [-20, 69]], {name: 'line 1'});\n * var linestring2 = turf.lineString([[-14, 43], [-13, 40], [-15, 45], [-10, 49]], {name: 'line 2'});\n *\n * //=linestring1\n * //=linestring2\n */\nfunction lineString(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    if (coordinates.length < 2) {\n        throw new Error(\"coordinates must be an array of two or more positions\");\n    }\n    var geom = {\n        type: \"LineString\",\n        coordinates: coordinates,\n    };\n    return feature(geom, properties, options);\n}\nexports.lineString = lineString;\n/**\n * Creates a {@link LineString} {@link FeatureCollection} from an Array of LineString coordinates.\n *\n * @name lineStrings\n * @param {Array<Array<Array<number>>>} coordinates an array of LinearRings\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north]\n * associated with the FeatureCollection\n * @param {string|number} [options.id] Identifier associated with the FeatureCollection\n * @returns {FeatureCollection<LineString>} LineString FeatureCollection\n * @example\n * var linestrings = turf.lineStrings([\n *   [[-24, 63], [-23, 60], [-25, 65], [-20, 69]],\n *   [[-14, 43], [-13, 40], [-15, 45], [-10, 49]]\n * ]);\n *\n * //=linestrings\n */\nfunction lineStrings(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    return featureCollection(coordinates.map(function (coords) {\n        return lineString(coords, properties);\n    }), options);\n}\nexports.lineStrings = lineStrings;\n/**\n * Takes one or more {@link Feature|Features} and creates a {@link FeatureCollection}.\n *\n * @name featureCollection\n * @param {Feature[]} features input features\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {FeatureCollection} FeatureCollection of Features\n * @example\n * var locationA = turf.point([-75.343, 39.984], {name: 'Location A'});\n * var locationB = turf.point([-75.833, 39.284], {name: 'Location B'});\n * var locationC = turf.point([-75.534, 39.123], {name: 'Location C'});\n *\n * var collection = turf.featureCollection([\n *   locationA,\n *   locationB,\n *   locationC\n * ]);\n *\n * //=collection\n */\nfunction featureCollection(features, options) {\n    if (options === void 0) { options = {}; }\n    var fc = { type: \"FeatureCollection\" };\n    if (options.id) {\n        fc.id = options.id;\n    }\n    if (options.bbox) {\n        fc.bbox = options.bbox;\n    }\n    fc.features = features;\n    return fc;\n}\nexports.featureCollection = featureCollection;\n/**\n * Creates a {@link Feature<MultiLineString>} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name multiLineString\n * @param {Array<Array<Array<number>>>} coordinates an array of LineStrings\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<MultiLineString>} a MultiLineString feature\n * @throws {Error} if no coordinates are passed\n * @example\n * var multiLine = turf.multiLineString([[[0,0],[10,10]]]);\n *\n * //=multiLine\n */\nfunction multiLineString(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    var geom = {\n        type: \"MultiLineString\",\n        coordinates: coordinates,\n    };\n    return feature(geom, properties, options);\n}\nexports.multiLineString = multiLineString;\n/**\n * Creates a {@link Feature<MultiPoint>} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name multiPoint\n * @param {Array<Array<number>>} coordinates an array of Positions\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<MultiPoint>} a MultiPoint feature\n * @throws {Error} if no coordinates are passed\n * @example\n * var multiPt = turf.multiPoint([[0,0],[10,10]]);\n *\n * //=multiPt\n */\nfunction multiPoint(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    var geom = {\n        type: \"MultiPoint\",\n        coordinates: coordinates,\n    };\n    return feature(geom, properties, options);\n}\nexports.multiPoint = multiPoint;\n/**\n * Creates a {@link Feature<MultiPolygon>} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name multiPolygon\n * @param {Array<Array<Array<Array<number>>>>} coordinates an array of Polygons\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<MultiPolygon>} a multipolygon feature\n * @throws {Error} if no coordinates are passed\n * @example\n * var multiPoly = turf.multiPolygon([[[[0,0],[0,10],[10,10],[10,0],[0,0]]]]);\n *\n * //=multiPoly\n *\n */\nfunction multiPolygon(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    var geom = {\n        type: \"MultiPolygon\",\n        coordinates: coordinates,\n    };\n    return feature(geom, properties, options);\n}\nexports.multiPolygon = multiPolygon;\n/**\n * Creates a {@link Feature<GeometryCollection>} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name geometryCollection\n * @param {Array<Geometry>} geometries an array of GeoJSON Geometries\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<GeometryCollection>} a GeoJSON GeometryCollection Feature\n * @example\n * var pt = turf.geometry(\"Point\", [100, 0]);\n * var line = turf.geometry(\"LineString\", [[101, 0], [102, 1]]);\n * var collection = turf.geometryCollection([pt, line]);\n *\n * // => collection\n */\nfunction geometryCollection(geometries, properties, options) {\n    if (options === void 0) { options = {}; }\n    var geom = {\n        type: \"GeometryCollection\",\n        geometries: geometries,\n    };\n    return feature(geom, properties, options);\n}\nexports.geometryCollection = geometryCollection;\n/**\n * Round number to precision\n *\n * @param {number} num Number\n * @param {number} [precision=0] Precision\n * @returns {number} rounded number\n * @example\n * turf.round(120.4321)\n * //=120\n *\n * turf.round(120.4321, 2)\n * //=120.43\n */\nfunction round(num, precision) {\n    if (precision === void 0) { precision = 0; }\n    if (precision && !(precision >= 0)) {\n        throw new Error(\"precision must be a positive number\");\n    }\n    var multiplier = Math.pow(10, precision || 0);\n    return Math.round(num * multiplier) / multiplier;\n}\nexports.round = round;\n/**\n * Convert a distance measurement (assuming a spherical Earth) from radians to a more friendly unit.\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet\n *\n * @name radiansToLength\n * @param {number} radians in radians across the sphere\n * @param {string} [units=\"kilometers\"] can be degrees, radians, miles, inches, yards, metres,\n * meters, kilometres, kilometers.\n * @returns {number} distance\n */\nfunction radiansToLength(radians, units) {\n    if (units === void 0) { units = \"kilometers\"; }\n    var factor = exports.factors[units];\n    if (!factor) {\n        throw new Error(units + \" units is invalid\");\n    }\n    return radians * factor;\n}\nexports.radiansToLength = radiansToLength;\n/**\n * Convert a distance measurement (assuming a spherical Earth) from a real-world unit into radians\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet\n *\n * @name lengthToRadians\n * @param {number} distance in real units\n * @param {string} [units=\"kilometers\"] can be degrees, radians, miles, inches, yards, metres,\n * meters, kilometres, kilometers.\n * @returns {number} radians\n */\nfunction lengthToRadians(distance, units) {\n    if (units === void 0) { units = \"kilometers\"; }\n    var factor = exports.factors[units];\n    if (!factor) {\n        throw new Error(units + \" units is invalid\");\n    }\n    return distance / factor;\n}\nexports.lengthToRadians = lengthToRadians;\n/**\n * Convert a distance measurement (assuming a spherical Earth) from a real-world unit into degrees\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, centimeters, kilometres, feet\n *\n * @name lengthToDegrees\n * @param {number} distance in real units\n * @param {string} [units=\"kilometers\"] can be degrees, radians, miles, inches, yards, metres,\n * meters, kilometres, kilometers.\n * @returns {number} degrees\n */\nfunction lengthToDegrees(distance, units) {\n    return radiansToDegrees(lengthToRadians(distance, units));\n}\nexports.lengthToDegrees = lengthToDegrees;\n/**\n * Converts any bearing angle from the north line direction (positive clockwise)\n * and returns an angle between 0-360 degrees (positive clockwise), 0 being the north line\n *\n * @name bearingToAzimuth\n * @param {number} bearing angle, between -180 and +180 degrees\n * @returns {number} angle between 0 and 360 degrees\n */\nfunction bearingToAzimuth(bearing) {\n    var angle = bearing % 360;\n    if (angle < 0) {\n        angle += 360;\n    }\n    return angle;\n}\nexports.bearingToAzimuth = bearingToAzimuth;\n/**\n * Converts an angle in radians to degrees\n *\n * @name radiansToDegrees\n * @param {number} radians angle in radians\n * @returns {number} degrees between 0 and 360 degrees\n */\nfunction radiansToDegrees(radians) {\n    var degrees = radians % (2 * Math.PI);\n    return (degrees * 180) / Math.PI;\n}\nexports.radiansToDegrees = radiansToDegrees;\n/**\n * Converts an angle in degrees to radians\n *\n * @name degreesToRadians\n * @param {number} degrees angle between 0 and 360 degrees\n * @returns {number} angle in radians\n */\nfunction degreesToRadians(degrees) {\n    var radians = degrees % 360;\n    return (radians * Math.PI) / 180;\n}\nexports.degreesToRadians = degreesToRadians;\n/**\n * Converts a length to the requested unit.\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet\n *\n * @param {number} length to be converted\n * @param {Units} [originalUnit=\"kilometers\"] of the length\n * @param {Units} [finalUnit=\"kilometers\"] returned unit\n * @returns {number} the converted length\n */\nfunction convertLength(length, originalUnit, finalUnit) {\n    if (originalUnit === void 0) { originalUnit = \"kilometers\"; }\n    if (finalUnit === void 0) { finalUnit = \"kilometers\"; }\n    if (!(length >= 0)) {\n        throw new Error(\"length must be a positive number\");\n    }\n    return radiansToLength(lengthToRadians(length, originalUnit), finalUnit);\n}\nexports.convertLength = convertLength;\n/**\n * Converts a area to the requested unit.\n * Valid units: kilometers, kilometres, meters, metres, centimetres, millimeters, acres, miles, yards, feet, inches, hectares\n * @param {number} area to be converted\n * @param {Units} [originalUnit=\"meters\"] of the distance\n * @param {Units} [finalUnit=\"kilometers\"] returned unit\n * @returns {number} the converted area\n */\nfunction convertArea(area, originalUnit, finalUnit) {\n    if (originalUnit === void 0) { originalUnit = \"meters\"; }\n    if (finalUnit === void 0) { finalUnit = \"kilometers\"; }\n    if (!(area >= 0)) {\n        throw new Error(\"area must be a positive number\");\n    }\n    var startFactor = exports.areaFactors[originalUnit];\n    if (!startFactor) {\n        throw new Error(\"invalid original units\");\n    }\n    var finalFactor = exports.areaFactors[finalUnit];\n    if (!finalFactor) {\n        throw new Error(\"invalid final units\");\n    }\n    return (area / startFactor) * finalFactor;\n}\nexports.convertArea = convertArea;\n/**\n * isNumber\n *\n * @param {*} num Number to validate\n * @returns {boolean} true/false\n * @example\n * turf.isNumber(123)\n * //=true\n * turf.isNumber('foo')\n * //=false\n */\nfunction isNumber(num) {\n    return !isNaN(num) && num !== null && !Array.isArray(num);\n}\nexports.isNumber = isNumber;\n/**\n * isObject\n *\n * @param {*} input variable to validate\n * @returns {boolean} true/false\n * @example\n * turf.isObject({elevation: 10})\n * //=true\n * turf.isObject('foo')\n * //=false\n */\nfunction isObject(input) {\n    return !!input && input.constructor === Object;\n}\nexports.isObject = isObject;\n/**\n * Validate BBox\n *\n * @private\n * @param {Array<number>} bbox BBox to validate\n * @returns {void}\n * @throws Error if BBox is not valid\n * @example\n * validateBBox([-180, -40, 110, 50])\n * //=OK\n * validateBBox([-180, -40])\n * //=Error\n * validateBBox('Foo')\n * //=Error\n * validateBBox(5)\n * //=Error\n * validateBBox(null)\n * //=Error\n * validateBBox(undefined)\n * //=Error\n */\nfunction validateBBox(bbox) {\n    if (!bbox) {\n        throw new Error(\"bbox is required\");\n    }\n    if (!Array.isArray(bbox)) {\n        throw new Error(\"bbox must be an Array\");\n    }\n    if (bbox.length !== 4 && bbox.length !== 6) {\n        throw new Error(\"bbox must be an Array of 4 or 6 numbers\");\n    }\n    bbox.forEach(function (num) {\n        if (!isNumber(num)) {\n            throw new Error(\"bbox must only contain numbers\");\n        }\n    });\n}\nexports.validateBBox = validateBBox;\n/**\n * Validate Id\n *\n * @private\n * @param {string|number} id Id to validate\n * @returns {void}\n * @throws Error if Id is not valid\n * @example\n * validateId([-180, -40, 110, 50])\n * //=Error\n * validateId([-180, -40])\n * //=Error\n * validateId('Foo')\n * //=OK\n * validateId(5)\n * //=OK\n * validateId(null)\n * //=Error\n * validateId(undefined)\n * //=Error\n */\nfunction validateId(id) {\n    if (!id) {\n        throw new Error(\"id is required\");\n    }\n    if ([\"string\", \"number\"].indexOf(typeof id) === -1) {\n        throw new Error(\"id must be a number or a string\");\n    }\n}\nexports.validateId = validateId;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar helpers_1 = require(\"@turf/helpers\");\n/**\n * Unwrap a coordinate from a Point Feature, Geometry or a single coordinate.\n *\n * @name getCoord\n * @param {Array<number>|Geometry<Point>|Feature<Point>} coord GeoJSON Point or an Array of numbers\n * @returns {Array<number>} coordinates\n * @example\n * var pt = turf.point([10, 10]);\n *\n * var coord = turf.getCoord(pt);\n * //= [10, 10]\n */\nfunction getCoord(coord) {\n    if (!coord) {\n        throw new Error(\"coord is required\");\n    }\n    if (!Array.isArray(coord)) {\n        if (coord.type === \"Feature\" &&\n            coord.geometry !== null &&\n            coord.geometry.type === \"Point\") {\n            return coord.geometry.coordinates;\n        }\n        if (coord.type === \"Point\") {\n            return coord.coordinates;\n        }\n    }\n    if (Array.isArray(coord) &&\n        coord.length >= 2 &&\n        !Array.isArray(coord[0]) &&\n        !Array.isArray(coord[1])) {\n        return coord;\n    }\n    throw new Error(\"coord must be GeoJSON Point or an Array of numbers\");\n}\nexports.getCoord = getCoord;\n/**\n * Unwrap coordinates from a Feature, Geometry Object or an Array\n *\n * @name getCoords\n * @param {Array<any>|Geometry|Feature} coords Feature, Geometry Object or an Array\n * @returns {Array<any>} coordinates\n * @example\n * var poly = turf.polygon([[[119.32, -8.7], [119.55, -8.69], [119.51, -8.54], [119.32, -8.7]]]);\n *\n * var coords = turf.getCoords(poly);\n * //= [[[119.32, -8.7], [119.55, -8.69], [119.51, -8.54], [119.32, -8.7]]]\n */\nfunction getCoords(coords) {\n    if (Array.isArray(coords)) {\n        return coords;\n    }\n    // Feature\n    if (coords.type === \"Feature\") {\n        if (coords.geometry !== null) {\n            return coords.geometry.coordinates;\n        }\n    }\n    else {\n        // Geometry\n        if (coords.coordinates) {\n            return coords.coordinates;\n        }\n    }\n    throw new Error(\"coords must be GeoJSON Feature, Geometry Object or an Array\");\n}\nexports.getCoords = getCoords;\n/**\n * Checks if coordinates contains a number\n *\n * @name containsNumber\n * @param {Array<any>} coordinates GeoJSON Coordinates\n * @returns {boolean} true if Array contains a number\n */\nfunction containsNumber(coordinates) {\n    if (coordinates.length > 1 &&\n        helpers_1.isNumber(coordinates[0]) &&\n        helpers_1.isNumber(coordinates[1])) {\n        return true;\n    }\n    if (Array.isArray(coordinates[0]) && coordinates[0].length) {\n        return containsNumber(coordinates[0]);\n    }\n    throw new Error(\"coordinates must only contain numbers\");\n}\nexports.containsNumber = containsNumber;\n/**\n * Enforce expectations about types of GeoJSON objects for Turf.\n *\n * @name geojsonType\n * @param {GeoJSON} value any GeoJSON object\n * @param {string} type expected GeoJSON type\n * @param {string} name name of calling function\n * @throws {Error} if value is not the expected type.\n */\nfunction geojsonType(value, type, name) {\n    if (!type || !name) {\n        throw new Error(\"type and name required\");\n    }\n    if (!value || value.type !== type) {\n        throw new Error(\"Invalid input to \" +\n            name +\n            \": must be a \" +\n            type +\n            \", given \" +\n            value.type);\n    }\n}\nexports.geojsonType = geojsonType;\n/**\n * Enforce expectations about types of {@link Feature} inputs for Turf.\n * Internally this uses {@link geojsonType} to judge geometry types.\n *\n * @name featureOf\n * @param {Feature} feature a feature with an expected geometry type\n * @param {string} type expected GeoJSON type\n * @param {string} name name of calling function\n * @throws {Error} error if value is not the expected type.\n */\nfunction featureOf(feature, type, name) {\n    if (!feature) {\n        throw new Error(\"No feature passed\");\n    }\n    if (!name) {\n        throw new Error(\".featureOf() requires a name\");\n    }\n    if (!feature || feature.type !== \"Feature\" || !feature.geometry) {\n        throw new Error(\"Invalid input to \" + name + \", Feature with geometry required\");\n    }\n    if (!feature.geometry || feature.geometry.type !== type) {\n        throw new Error(\"Invalid input to \" +\n            name +\n            \": must be a \" +\n            type +\n            \", given \" +\n            feature.geometry.type);\n    }\n}\nexports.featureOf = featureOf;\n/**\n * Enforce expectations about types of {@link FeatureCollection} inputs for Turf.\n * Internally this uses {@link geojsonType} to judge geometry types.\n *\n * @name collectionOf\n * @param {FeatureCollection} featureCollection a FeatureCollection for which features will be judged\n * @param {string} type expected GeoJSON type\n * @param {string} name name of calling function\n * @throws {Error} if value is not the expected type.\n */\nfunction collectionOf(featureCollection, type, name) {\n    if (!featureCollection) {\n        throw new Error(\"No featureCollection passed\");\n    }\n    if (!name) {\n        throw new Error(\".collectionOf() requires a name\");\n    }\n    if (!featureCollection || featureCollection.type !== \"FeatureCollection\") {\n        throw new Error(\"Invalid input to \" + name + \", FeatureCollection required\");\n    }\n    for (var _i = 0, _a = featureCollection.features; _i < _a.length; _i++) {\n        var feature = _a[_i];\n        if (!feature || feature.type !== \"Feature\" || !feature.geometry) {\n            throw new Error(\"Invalid input to \" + name + \", Feature with geometry required\");\n        }\n        if (!feature.geometry || feature.geometry.type !== type) {\n            throw new Error(\"Invalid input to \" +\n                name +\n                \": must be a \" +\n                type +\n                \", given \" +\n                feature.geometry.type);\n        }\n    }\n}\nexports.collectionOf = collectionOf;\n/**\n * Get Geometry from Feature or Geometry Object\n *\n * @param {Feature|Geometry} geojson GeoJSON Feature or Geometry Object\n * @returns {Geometry|null} GeoJSON Geometry Object\n * @throws {Error} if geojson is not a Feature or Geometry Object\n * @example\n * var point = {\n *   \"type\": \"Feature\",\n *   \"properties\": {},\n *   \"geometry\": {\n *     \"type\": \"Point\",\n *     \"coordinates\": [110, 40]\n *   }\n * }\n * var geom = turf.getGeom(point)\n * //={\"type\": \"Point\", \"coordinates\": [110, 40]}\n */\nfunction getGeom(geojson) {\n    if (geojson.type === \"Feature\") {\n        return geojson.geometry;\n    }\n    return geojson;\n}\nexports.getGeom = getGeom;\n/**\n * Get GeoJSON object's type, Geometry type is prioritize.\n *\n * @param {GeoJSON} geojson GeoJSON object\n * @param {string} [name=\"geojson\"] name of the variable to display in error message (unused)\n * @returns {string} GeoJSON type\n * @example\n * var point = {\n *   \"type\": \"Feature\",\n *   \"properties\": {},\n *   \"geometry\": {\n *     \"type\": \"Point\",\n *     \"coordinates\": [110, 40]\n *   }\n * }\n * var geom = turf.getType(point)\n * //=\"Point\"\n */\nfunction getType(geojson, _name) {\n    if (geojson.type === \"FeatureCollection\") {\n        return \"FeatureCollection\";\n    }\n    if (geojson.type === \"GeometryCollection\") {\n        return \"GeometryCollection\";\n    }\n    if (geojson.type === \"Feature\" && geojson.geometry !== null) {\n        return geojson.geometry.type;\n    }\n    return geojson.type;\n}\nexports.getType = getType;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n// https://en.wikipedia.org/wiki/Rhumb_line\nvar helpers_1 = require(\"@turf/helpers\");\nvar invariant_1 = require(\"@turf/invariant\");\n/**\n * Calculates the distance along a rhumb line between two {@link Point|points} in degrees, radians,\n * miles, or kilometers.\n *\n * @name rhumbDistance\n * @param {Coord} from origin point\n * @param {Coord} to destination point\n * @param {Object} [options] Optional parameters\n * @param {string} [options.units=\"kilometers\"] can be degrees, radians, miles, or kilometers\n * @returns {number} distance between the two points\n * @example\n * var from = turf.point([-75.343, 39.984]);\n * var to = turf.point([-75.534, 39.123]);\n * var options = {units: 'miles'};\n *\n * var distance = turf.rhumbDistance(from, to, options);\n *\n * //addToMap\n * var addToMap = [from, to];\n * from.properties.distance = distance;\n * to.properties.distance = distance;\n */\nfunction rhumbDistance(from, to, options) {\n    if (options === void 0) { options = {}; }\n    var origin = invariant_1.getCoord(from);\n    var destination = invariant_1.getCoord(to);\n    // compensate the crossing of the 180th meridian (https://macwright.org/2016/09/26/the-180th-meridian.html)\n    // solution from https://github.com/mapbox/mapbox-gl-js/issues/3250#issuecomment-294887678\n    destination[0] +=\n        destination[0] - origin[0] > 180\n            ? -360\n            : origin[0] - destination[0] > 180\n                ? 360\n                : 0;\n    var distanceInMeters = calculateRhumbDistance(origin, destination);\n    var distance = helpers_1.convertLength(distanceInMeters, \"meters\", options.units);\n    return distance;\n}\n/**\n * Returns the distance travelling from ‘this’ point to destination point along a rhumb line.\n * Adapted from Geodesy: https://github.com/chrisveness/geodesy/blob/master/latlon-spherical.js\n *\n * @private\n * @param   {Array<number>} origin point.\n * @param   {Array<number>} destination point.\n * @param   {number} [radius=6371e3] - (Mean) radius of earth (defaults to radius in metres).\n * @returns {number} Distance in km between this point and destination point (same units as radius).\n *\n * @example\n *     var p1 = new LatLon(51.127, 1.338);\n *     var p2 = new LatLon(50.964, 1.853);\n *     var d = p1.distanceTo(p2); // 40.31 km\n */\nfunction calculateRhumbDistance(origin, destination, radius) {\n    // φ => phi\n    // λ => lambda\n    // ψ => psi\n    // Δ => Delta\n    // δ => delta\n    // θ => theta\n    radius = radius === undefined ? helpers_1.earthRadius : Number(radius);\n    // see www.edwilliams.org/avform.htm#Rhumb\n    var R = radius;\n    var phi1 = (origin[1] * Math.PI) / 180;\n    var phi2 = (destination[1] * Math.PI) / 180;\n    var DeltaPhi = phi2 - phi1;\n    var DeltaLambda = (Math.abs(destination[0] - origin[0]) * Math.PI) / 180;\n    // if dLon over 180° take shorter rhumb line across the anti-meridian:\n    if (DeltaLambda > Math.PI) {\n        DeltaLambda -= 2 * Math.PI;\n    }\n    // on Mercator projection, longitude distances shrink by latitude; q is the 'stretch factor'\n    // q becomes ill-conditioned along E-W line (0/0); use empirical tolerance to avoid it\n    var DeltaPsi = Math.log(Math.tan(phi2 / 2 + Math.PI / 4) / Math.tan(phi1 / 2 + Math.PI / 4));\n    var q = Math.abs(DeltaPsi) > 10e-12 ? DeltaPhi / DeltaPsi : Math.cos(phi1);\n    // distance is pythagoras on 'stretched' Mercator projection\n    var delta = Math.sqrt(DeltaPhi * DeltaPhi + q * q * DeltaLambda * DeltaLambda); // angular distance in radians\n    var dist = delta * R;\n    return dist;\n}\nexports.default = rhumbDistance;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * @module helpers\n */\n/**\n * Earth Radius used with the Harvesine formula and approximates using a spherical (non-ellipsoid) Earth.\n *\n * @memberof helpers\n * @type {number}\n */\nexports.earthRadius = 6371008.8;\n/**\n * Unit of measurement factors using a spherical (non-ellipsoid) earth radius.\n *\n * @memberof helpers\n * @type {Object}\n */\nexports.factors = {\n    centimeters: exports.earthRadius * 100,\n    centimetres: exports.earthRadius * 100,\n    degrees: exports.earthRadius / 111325,\n    feet: exports.earthRadius * 3.28084,\n    inches: exports.earthRadius * 39.37,\n    kilometers: exports.earthRadius / 1000,\n    kilometres: exports.earthRadius / 1000,\n    meters: exports.earthRadius,\n    metres: exports.earthRadius,\n    miles: exports.earthRadius / 1609.344,\n    millimeters: exports.earthRadius * 1000,\n    millimetres: exports.earthRadius * 1000,\n    nauticalmiles: exports.earthRadius / 1852,\n    radians: 1,\n    yards: exports.earthRadius * 1.0936,\n};\n/**\n * Units of measurement factors based on 1 meter.\n *\n * @memberof helpers\n * @type {Object}\n */\nexports.unitsFactors = {\n    centimeters: 100,\n    centimetres: 100,\n    degrees: 1 / 111325,\n    feet: 3.28084,\n    inches: 39.37,\n    kilometers: 1 / 1000,\n    kilometres: 1 / 1000,\n    meters: 1,\n    metres: 1,\n    miles: 1 / 1609.344,\n    millimeters: 1000,\n    millimetres: 1000,\n    nauticalmiles: 1 / 1852,\n    radians: 1 / exports.earthRadius,\n    yards: 1.0936133,\n};\n/**\n * Area of measurement factors based on 1 square meter.\n *\n * @memberof helpers\n * @type {Object}\n */\nexports.areaFactors = {\n    acres: 0.000247105,\n    centimeters: 10000,\n    centimetres: 10000,\n    feet: 10.763910417,\n    hectares: 0.0001,\n    inches: 1550.003100006,\n    kilometers: 0.000001,\n    kilometres: 0.000001,\n    meters: 1,\n    metres: 1,\n    miles: 3.86e-7,\n    millimeters: 1000000,\n    millimetres: 1000000,\n    yards: 1.195990046,\n};\n/**\n * Wraps a GeoJSON {@link Geometry} in a GeoJSON {@link Feature}.\n *\n * @name feature\n * @param {Geometry} geometry input geometry\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} a GeoJSON Feature\n * @example\n * var geometry = {\n *   \"type\": \"Point\",\n *   \"coordinates\": [110, 50]\n * };\n *\n * var feature = turf.feature(geometry);\n *\n * //=feature\n */\nfunction feature(geom, properties, options) {\n    if (options === void 0) { options = {}; }\n    var feat = { type: \"Feature\" };\n    if (options.id === 0 || options.id) {\n        feat.id = options.id;\n    }\n    if (options.bbox) {\n        feat.bbox = options.bbox;\n    }\n    feat.properties = properties || {};\n    feat.geometry = geom;\n    return feat;\n}\nexports.feature = feature;\n/**\n * Creates a GeoJSON {@link Geometry} from a Geometry string type & coordinates.\n * For GeometryCollection type use `helpers.geometryCollection`\n *\n * @name geometry\n * @param {string} type Geometry Type\n * @param {Array<any>} coordinates Coordinates\n * @param {Object} [options={}] Optional Parameters\n * @returns {Geometry} a GeoJSON Geometry\n * @example\n * var type = \"Point\";\n * var coordinates = [110, 50];\n * var geometry = turf.geometry(type, coordinates);\n * // => geometry\n */\nfunction geometry(type, coordinates, _options) {\n    if (_options === void 0) { _options = {}; }\n    switch (type) {\n        case \"Point\":\n            return point(coordinates).geometry;\n        case \"LineString\":\n            return lineString(coordinates).geometry;\n        case \"Polygon\":\n            return polygon(coordinates).geometry;\n        case \"MultiPoint\":\n            return multiPoint(coordinates).geometry;\n        case \"MultiLineString\":\n            return multiLineString(coordinates).geometry;\n        case \"MultiPolygon\":\n            return multiPolygon(coordinates).geometry;\n        default:\n            throw new Error(type + \" is invalid\");\n    }\n}\nexports.geometry = geometry;\n/**\n * Creates a {@link Point} {@link Feature} from a Position.\n *\n * @name point\n * @param {Array<number>} coordinates longitude, latitude position (each in decimal degrees)\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<Point>} a Point feature\n * @example\n * var point = turf.point([-75.343, 39.984]);\n *\n * //=point\n */\nfunction point(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    if (!coordinates) {\n        throw new Error(\"coordinates is required\");\n    }\n    if (!Array.isArray(coordinates)) {\n        throw new Error(\"coordinates must be an Array\");\n    }\n    if (coordinates.length < 2) {\n        throw new Error(\"coordinates must be at least 2 numbers long\");\n    }\n    if (!isNumber(coordinates[0]) || !isNumber(coordinates[1])) {\n        throw new Error(\"coordinates must contain numbers\");\n    }\n    var geom = {\n        type: \"Point\",\n        coordinates: coordinates,\n    };\n    return feature(geom, properties, options);\n}\nexports.point = point;\n/**\n * Creates a {@link Point} {@link FeatureCollection} from an Array of Point coordinates.\n *\n * @name points\n * @param {Array<Array<number>>} coordinates an array of Points\n * @param {Object} [properties={}] Translate these properties to each Feature\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north]\n * associated with the FeatureCollection\n * @param {string|number} [options.id] Identifier associated with the FeatureCollection\n * @returns {FeatureCollection<Point>} Point Feature\n * @example\n * var points = turf.points([\n *   [-75, 39],\n *   [-80, 45],\n *   [-78, 50]\n * ]);\n *\n * //=points\n */\nfunction points(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    return featureCollection(coordinates.map(function (coords) {\n        return point(coords, properties);\n    }), options);\n}\nexports.points = points;\n/**\n * Creates a {@link Polygon} {@link Feature} from an Array of LinearRings.\n *\n * @name polygon\n * @param {Array<Array<Array<number>>>} coordinates an array of LinearRings\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<Polygon>} Polygon Feature\n * @example\n * var polygon = turf.polygon([[[-5, 52], [-4, 56], [-2, 51], [-7, 54], [-5, 52]]], { name: 'poly1' });\n *\n * //=polygon\n */\nfunction polygon(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    for (var _i = 0, coordinates_1 = coordinates; _i < coordinates_1.length; _i++) {\n        var ring = coordinates_1[_i];\n        if (ring.length < 4) {\n            throw new Error(\"Each LinearRing of a Polygon must have 4 or more Positions.\");\n        }\n        for (var j = 0; j < ring[ring.length - 1].length; j++) {\n            // Check if first point of Polygon contains two numbers\n            if (ring[ring.length - 1][j] !== ring[0][j]) {\n                throw new Error(\"First and last Position are not equivalent.\");\n            }\n        }\n    }\n    var geom = {\n        type: \"Polygon\",\n        coordinates: coordinates,\n    };\n    return feature(geom, properties, options);\n}\nexports.polygon = polygon;\n/**\n * Creates a {@link Polygon} {@link FeatureCollection} from an Array of Polygon coordinates.\n *\n * @name polygons\n * @param {Array<Array<Array<Array<number>>>>} coordinates an array of Polygon coordinates\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the FeatureCollection\n * @returns {FeatureCollection<Polygon>} Polygon FeatureCollection\n * @example\n * var polygons = turf.polygons([\n *   [[[-5, 52], [-4, 56], [-2, 51], [-7, 54], [-5, 52]]],\n *   [[[-15, 42], [-14, 46], [-12, 41], [-17, 44], [-15, 42]]],\n * ]);\n *\n * //=polygons\n */\nfunction polygons(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    return featureCollection(coordinates.map(function (coords) {\n        return polygon(coords, properties);\n    }), options);\n}\nexports.polygons = polygons;\n/**\n * Creates a {@link LineString} {@link Feature} from an Array of Positions.\n *\n * @name lineString\n * @param {Array<Array<number>>} coordinates an array of Positions\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<LineString>} LineString Feature\n * @example\n * var linestring1 = turf.lineString([[-24, 63], [-23, 60], [-25, 65], [-20, 69]], {name: 'line 1'});\n * var linestring2 = turf.lineString([[-14, 43], [-13, 40], [-15, 45], [-10, 49]], {name: 'line 2'});\n *\n * //=linestring1\n * //=linestring2\n */\nfunction lineString(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    if (coordinates.length < 2) {\n        throw new Error(\"coordinates must be an array of two or more positions\");\n    }\n    var geom = {\n        type: \"LineString\",\n        coordinates: coordinates,\n    };\n    return feature(geom, properties, options);\n}\nexports.lineString = lineString;\n/**\n * Creates a {@link LineString} {@link FeatureCollection} from an Array of LineString coordinates.\n *\n * @name lineStrings\n * @param {Array<Array<Array<number>>>} coordinates an array of LinearRings\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north]\n * associated with the FeatureCollection\n * @param {string|number} [options.id] Identifier associated with the FeatureCollection\n * @returns {FeatureCollection<LineString>} LineString FeatureCollection\n * @example\n * var linestrings = turf.lineStrings([\n *   [[-24, 63], [-23, 60], [-25, 65], [-20, 69]],\n *   [[-14, 43], [-13, 40], [-15, 45], [-10, 49]]\n * ]);\n *\n * //=linestrings\n */\nfunction lineStrings(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    return featureCollection(coordinates.map(function (coords) {\n        return lineString(coords, properties);\n    }), options);\n}\nexports.lineStrings = lineStrings;\n/**\n * Takes one or more {@link Feature|Features} and creates a {@link FeatureCollection}.\n *\n * @name featureCollection\n * @param {Feature[]} features input features\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {FeatureCollection} FeatureCollection of Features\n * @example\n * var locationA = turf.point([-75.343, 39.984], {name: 'Location A'});\n * var locationB = turf.point([-75.833, 39.284], {name: 'Location B'});\n * var locationC = turf.point([-75.534, 39.123], {name: 'Location C'});\n *\n * var collection = turf.featureCollection([\n *   locationA,\n *   locationB,\n *   locationC\n * ]);\n *\n * //=collection\n */\nfunction featureCollection(features, options) {\n    if (options === void 0) { options = {}; }\n    var fc = { type: \"FeatureCollection\" };\n    if (options.id) {\n        fc.id = options.id;\n    }\n    if (options.bbox) {\n        fc.bbox = options.bbox;\n    }\n    fc.features = features;\n    return fc;\n}\nexports.featureCollection = featureCollection;\n/**\n * Creates a {@link Feature<MultiLineString>} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name multiLineString\n * @param {Array<Array<Array<number>>>} coordinates an array of LineStrings\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<MultiLineString>} a MultiLineString feature\n * @throws {Error} if no coordinates are passed\n * @example\n * var multiLine = turf.multiLineString([[[0,0],[10,10]]]);\n *\n * //=multiLine\n */\nfunction multiLineString(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    var geom = {\n        type: \"MultiLineString\",\n        coordinates: coordinates,\n    };\n    return feature(geom, properties, options);\n}\nexports.multiLineString = multiLineString;\n/**\n * Creates a {@link Feature<MultiPoint>} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name multiPoint\n * @param {Array<Array<number>>} coordinates an array of Positions\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<MultiPoint>} a MultiPoint feature\n * @throws {Error} if no coordinates are passed\n * @example\n * var multiPt = turf.multiPoint([[0,0],[10,10]]);\n *\n * //=multiPt\n */\nfunction multiPoint(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    var geom = {\n        type: \"MultiPoint\",\n        coordinates: coordinates,\n    };\n    return feature(geom, properties, options);\n}\nexports.multiPoint = multiPoint;\n/**\n * Creates a {@link Feature<MultiPolygon>} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name multiPolygon\n * @param {Array<Array<Array<Array<number>>>>} coordinates an array of Polygons\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<MultiPolygon>} a multipolygon feature\n * @throws {Error} if no coordinates are passed\n * @example\n * var multiPoly = turf.multiPolygon([[[[0,0],[0,10],[10,10],[10,0],[0,0]]]]);\n *\n * //=multiPoly\n *\n */\nfunction multiPolygon(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    var geom = {\n        type: \"MultiPolygon\",\n        coordinates: coordinates,\n    };\n    return feature(geom, properties, options);\n}\nexports.multiPolygon = multiPolygon;\n/**\n * Creates a {@link Feature<GeometryCollection>} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name geometryCollection\n * @param {Array<Geometry>} geometries an array of GeoJSON Geometries\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<GeometryCollection>} a GeoJSON GeometryCollection Feature\n * @example\n * var pt = turf.geometry(\"Point\", [100, 0]);\n * var line = turf.geometry(\"LineString\", [[101, 0], [102, 1]]);\n * var collection = turf.geometryCollection([pt, line]);\n *\n * // => collection\n */\nfunction geometryCollection(geometries, properties, options) {\n    if (options === void 0) { options = {}; }\n    var geom = {\n        type: \"GeometryCollection\",\n        geometries: geometries,\n    };\n    return feature(geom, properties, options);\n}\nexports.geometryCollection = geometryCollection;\n/**\n * Round number to precision\n *\n * @param {number} num Number\n * @param {number} [precision=0] Precision\n * @returns {number} rounded number\n * @example\n * turf.round(120.4321)\n * //=120\n *\n * turf.round(120.4321, 2)\n * //=120.43\n */\nfunction round(num, precision) {\n    if (precision === void 0) { precision = 0; }\n    if (precision && !(precision >= 0)) {\n        throw new Error(\"precision must be a positive number\");\n    }\n    var multiplier = Math.pow(10, precision || 0);\n    return Math.round(num * multiplier) / multiplier;\n}\nexports.round = round;\n/**\n * Convert a distance measurement (assuming a spherical Earth) from radians to a more friendly unit.\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet\n *\n * @name radiansToLength\n * @param {number} radians in radians across the sphere\n * @param {string} [units=\"kilometers\"] can be degrees, radians, miles, inches, yards, metres,\n * meters, kilometres, kilometers.\n * @returns {number} distance\n */\nfunction radiansToLength(radians, units) {\n    if (units === void 0) { units = \"kilometers\"; }\n    var factor = exports.factors[units];\n    if (!factor) {\n        throw new Error(units + \" units is invalid\");\n    }\n    return radians * factor;\n}\nexports.radiansToLength = radiansToLength;\n/**\n * Convert a distance measurement (assuming a spherical Earth) from a real-world unit into radians\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet\n *\n * @name lengthToRadians\n * @param {number} distance in real units\n * @param {string} [units=\"kilometers\"] can be degrees, radians, miles, inches, yards, metres,\n * meters, kilometres, kilometers.\n * @returns {number} radians\n */\nfunction lengthToRadians(distance, units) {\n    if (units === void 0) { units = \"kilometers\"; }\n    var factor = exports.factors[units];\n    if (!factor) {\n        throw new Error(units + \" units is invalid\");\n    }\n    return distance / factor;\n}\nexports.lengthToRadians = lengthToRadians;\n/**\n * Convert a distance measurement (assuming a spherical Earth) from a real-world unit into degrees\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, centimeters, kilometres, feet\n *\n * @name lengthToDegrees\n * @param {number} distance in real units\n * @param {string} [units=\"kilometers\"] can be degrees, radians, miles, inches, yards, metres,\n * meters, kilometres, kilometers.\n * @returns {number} degrees\n */\nfunction lengthToDegrees(distance, units) {\n    return radiansToDegrees(lengthToRadians(distance, units));\n}\nexports.lengthToDegrees = lengthToDegrees;\n/**\n * Converts any bearing angle from the north line direction (positive clockwise)\n * and returns an angle between 0-360 degrees (positive clockwise), 0 being the north line\n *\n * @name bearingToAzimuth\n * @param {number} bearing angle, between -180 and +180 degrees\n * @returns {number} angle between 0 and 360 degrees\n */\nfunction bearingToAzimuth(bearing) {\n    var angle = bearing % 360;\n    if (angle < 0) {\n        angle += 360;\n    }\n    return angle;\n}\nexports.bearingToAzimuth = bearingToAzimuth;\n/**\n * Converts an angle in radians to degrees\n *\n * @name radiansToDegrees\n * @param {number} radians angle in radians\n * @returns {number} degrees between 0 and 360 degrees\n */\nfunction radiansToDegrees(radians) {\n    var degrees = radians % (2 * Math.PI);\n    return (degrees * 180) / Math.PI;\n}\nexports.radiansToDegrees = radiansToDegrees;\n/**\n * Converts an angle in degrees to radians\n *\n * @name degreesToRadians\n * @param {number} degrees angle between 0 and 360 degrees\n * @returns {number} angle in radians\n */\nfunction degreesToRadians(degrees) {\n    var radians = degrees % 360;\n    return (radians * Math.PI) / 180;\n}\nexports.degreesToRadians = degreesToRadians;\n/**\n * Converts a length to the requested unit.\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet\n *\n * @param {number} length to be converted\n * @param {Units} [originalUnit=\"kilometers\"] of the length\n * @param {Units} [finalUnit=\"kilometers\"] returned unit\n * @returns {number} the converted length\n */\nfunction convertLength(length, originalUnit, finalUnit) {\n    if (originalUnit === void 0) { originalUnit = \"kilometers\"; }\n    if (finalUnit === void 0) { finalUnit = \"kilometers\"; }\n    if (!(length >= 0)) {\n        throw new Error(\"length must be a positive number\");\n    }\n    return radiansToLength(lengthToRadians(length, originalUnit), finalUnit);\n}\nexports.convertLength = convertLength;\n/**\n * Converts a area to the requested unit.\n * Valid units: kilometers, kilometres, meters, metres, centimetres, millimeters, acres, miles, yards, feet, inches, hectares\n * @param {number} area to be converted\n * @param {Units} [originalUnit=\"meters\"] of the distance\n * @param {Units} [finalUnit=\"kilometers\"] returned unit\n * @returns {number} the converted area\n */\nfunction convertArea(area, originalUnit, finalUnit) {\n    if (originalUnit === void 0) { originalUnit = \"meters\"; }\n    if (finalUnit === void 0) { finalUnit = \"kilometers\"; }\n    if (!(area >= 0)) {\n        throw new Error(\"area must be a positive number\");\n    }\n    var startFactor = exports.areaFactors[originalUnit];\n    if (!startFactor) {\n        throw new Error(\"invalid original units\");\n    }\n    var finalFactor = exports.areaFactors[finalUnit];\n    if (!finalFactor) {\n        throw new Error(\"invalid final units\");\n    }\n    return (area / startFactor) * finalFactor;\n}\nexports.convertArea = convertArea;\n/**\n * isNumber\n *\n * @param {*} num Number to validate\n * @returns {boolean} true/false\n * @example\n * turf.isNumber(123)\n * //=true\n * turf.isNumber('foo')\n * //=false\n */\nfunction isNumber(num) {\n    return !isNaN(num) && num !== null && !Array.isArray(num);\n}\nexports.isNumber = isNumber;\n/**\n * isObject\n *\n * @param {*} input variable to validate\n * @returns {boolean} true/false\n * @example\n * turf.isObject({elevation: 10})\n * //=true\n * turf.isObject('foo')\n * //=false\n */\nfunction isObject(input) {\n    return !!input && input.constructor === Object;\n}\nexports.isObject = isObject;\n/**\n * Validate BBox\n *\n * @private\n * @param {Array<number>} bbox BBox to validate\n * @returns {void}\n * @throws Error if BBox is not valid\n * @example\n * validateBBox([-180, -40, 110, 50])\n * //=OK\n * validateBBox([-180, -40])\n * //=Error\n * validateBBox('Foo')\n * //=Error\n * validateBBox(5)\n * //=Error\n * validateBBox(null)\n * //=Error\n * validateBBox(undefined)\n * //=Error\n */\nfunction validateBBox(bbox) {\n    if (!bbox) {\n        throw new Error(\"bbox is required\");\n    }\n    if (!Array.isArray(bbox)) {\n        throw new Error(\"bbox must be an Array\");\n    }\n    if (bbox.length !== 4 && bbox.length !== 6) {\n        throw new Error(\"bbox must be an Array of 4 or 6 numbers\");\n    }\n    bbox.forEach(function (num) {\n        if (!isNumber(num)) {\n            throw new Error(\"bbox must only contain numbers\");\n        }\n    });\n}\nexports.validateBBox = validateBBox;\n/**\n * Validate Id\n *\n * @private\n * @param {string|number} id Id to validate\n * @returns {void}\n * @throws Error if Id is not valid\n * @example\n * validateId([-180, -40, 110, 50])\n * //=Error\n * validateId([-180, -40])\n * //=Error\n * validateId('Foo')\n * //=OK\n * validateId(5)\n * //=OK\n * validateId(null)\n * //=Error\n * validateId(undefined)\n * //=Error\n */\nfunction validateId(id) {\n    if (!id) {\n        throw new Error(\"id is required\");\n    }\n    if ([\"string\", \"number\"].indexOf(typeof id) === -1) {\n        throw new Error(\"id must be a number or a string\");\n    }\n}\nexports.validateId = validateId;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar helpers_1 = require(\"@turf/helpers\");\n/**\n * Unwrap a coordinate from a Point Feature, Geometry or a single coordinate.\n *\n * @name getCoord\n * @param {Array<number>|Geometry<Point>|Feature<Point>} coord GeoJSON Point or an Array of numbers\n * @returns {Array<number>} coordinates\n * @example\n * var pt = turf.point([10, 10]);\n *\n * var coord = turf.getCoord(pt);\n * //= [10, 10]\n */\nfunction getCoord(coord) {\n    if (!coord) {\n        throw new Error(\"coord is required\");\n    }\n    if (!Array.isArray(coord)) {\n        if (coord.type === \"Feature\" &&\n            coord.geometry !== null &&\n            coord.geometry.type === \"Point\") {\n            return coord.geometry.coordinates;\n        }\n        if (coord.type === \"Point\") {\n            return coord.coordinates;\n        }\n    }\n    if (Array.isArray(coord) &&\n        coord.length >= 2 &&\n        !Array.isArray(coord[0]) &&\n        !Array.isArray(coord[1])) {\n        return coord;\n    }\n    throw new Error(\"coord must be GeoJSON Point or an Array of numbers\");\n}\nexports.getCoord = getCoord;\n/**\n * Unwrap coordinates from a Feature, Geometry Object or an Array\n *\n * @name getCoords\n * @param {Array<any>|Geometry|Feature} coords Feature, Geometry Object or an Array\n * @returns {Array<any>} coordinates\n * @example\n * var poly = turf.polygon([[[119.32, -8.7], [119.55, -8.69], [119.51, -8.54], [119.32, -8.7]]]);\n *\n * var coords = turf.getCoords(poly);\n * //= [[[119.32, -8.7], [119.55, -8.69], [119.51, -8.54], [119.32, -8.7]]]\n */\nfunction getCoords(coords) {\n    if (Array.isArray(coords)) {\n        return coords;\n    }\n    // Feature\n    if (coords.type === \"Feature\") {\n        if (coords.geometry !== null) {\n            return coords.geometry.coordinates;\n        }\n    }\n    else {\n        // Geometry\n        if (coords.coordinates) {\n            return coords.coordinates;\n        }\n    }\n    throw new Error(\"coords must be GeoJSON Feature, Geometry Object or an Array\");\n}\nexports.getCoords = getCoords;\n/**\n * Checks if coordinates contains a number\n *\n * @name containsNumber\n * @param {Array<any>} coordinates GeoJSON Coordinates\n * @returns {boolean} true if Array contains a number\n */\nfunction containsNumber(coordinates) {\n    if (coordinates.length > 1 &&\n        helpers_1.isNumber(coordinates[0]) &&\n        helpers_1.isNumber(coordinates[1])) {\n        return true;\n    }\n    if (Array.isArray(coordinates[0]) && coordinates[0].length) {\n        return containsNumber(coordinates[0]);\n    }\n    throw new Error(\"coordinates must only contain numbers\");\n}\nexports.containsNumber = containsNumber;\n/**\n * Enforce expectations about types of GeoJSON objects for Turf.\n *\n * @name geojsonType\n * @param {GeoJSON} value any GeoJSON object\n * @param {string} type expected GeoJSON type\n * @param {string} name name of calling function\n * @throws {Error} if value is not the expected type.\n */\nfunction geojsonType(value, type, name) {\n    if (!type || !name) {\n        throw new Error(\"type and name required\");\n    }\n    if (!value || value.type !== type) {\n        throw new Error(\"Invalid input to \" +\n            name +\n            \": must be a \" +\n            type +\n            \", given \" +\n            value.type);\n    }\n}\nexports.geojsonType = geojsonType;\n/**\n * Enforce expectations about types of {@link Feature} inputs for Turf.\n * Internally this uses {@link geojsonType} to judge geometry types.\n *\n * @name featureOf\n * @param {Feature} feature a feature with an expected geometry type\n * @param {string} type expected GeoJSON type\n * @param {string} name name of calling function\n * @throws {Error} error if value is not the expected type.\n */\nfunction featureOf(feature, type, name) {\n    if (!feature) {\n        throw new Error(\"No feature passed\");\n    }\n    if (!name) {\n        throw new Error(\".featureOf() requires a name\");\n    }\n    if (!feature || feature.type !== \"Feature\" || !feature.geometry) {\n        throw new Error(\"Invalid input to \" + name + \", Feature with geometry required\");\n    }\n    if (!feature.geometry || feature.geometry.type !== type) {\n        throw new Error(\"Invalid input to \" +\n            name +\n            \": must be a \" +\n            type +\n            \", given \" +\n            feature.geometry.type);\n    }\n}\nexports.featureOf = featureOf;\n/**\n * Enforce expectations about types of {@link FeatureCollection} inputs for Turf.\n * Internally this uses {@link geojsonType} to judge geometry types.\n *\n * @name collectionOf\n * @param {FeatureCollection} featureCollection a FeatureCollection for which features will be judged\n * @param {string} type expected GeoJSON type\n * @param {string} name name of calling function\n * @throws {Error} if value is not the expected type.\n */\nfunction collectionOf(featureCollection, type, name) {\n    if (!featureCollection) {\n        throw new Error(\"No featureCollection passed\");\n    }\n    if (!name) {\n        throw new Error(\".collectionOf() requires a name\");\n    }\n    if (!featureCollection || featureCollection.type !== \"FeatureCollection\") {\n        throw new Error(\"Invalid input to \" + name + \", FeatureCollection required\");\n    }\n    for (var _i = 0, _a = featureCollection.features; _i < _a.length; _i++) {\n        var feature = _a[_i];\n        if (!feature || feature.type !== \"Feature\" || !feature.geometry) {\n            throw new Error(\"Invalid input to \" + name + \", Feature with geometry required\");\n        }\n        if (!feature.geometry || feature.geometry.type !== type) {\n            throw new Error(\"Invalid input to \" +\n                name +\n                \": must be a \" +\n                type +\n                \", given \" +\n                feature.geometry.type);\n        }\n    }\n}\nexports.collectionOf = collectionOf;\n/**\n * Get Geometry from Feature or Geometry Object\n *\n * @param {Feature|Geometry} geojson GeoJSON Feature or Geometry Object\n * @returns {Geometry|null} GeoJSON Geometry Object\n * @throws {Error} if geojson is not a Feature or Geometry Object\n * @example\n * var point = {\n *   \"type\": \"Feature\",\n *   \"properties\": {},\n *   \"geometry\": {\n *     \"type\": \"Point\",\n *     \"coordinates\": [110, 40]\n *   }\n * }\n * var geom = turf.getGeom(point)\n * //={\"type\": \"Point\", \"coordinates\": [110, 40]}\n */\nfunction getGeom(geojson) {\n    if (geojson.type === \"Feature\") {\n        return geojson.geometry;\n    }\n    return geojson;\n}\nexports.getGeom = getGeom;\n/**\n * Get GeoJSON object's type, Geometry type is prioritize.\n *\n * @param {GeoJSON} geojson GeoJSON object\n * @param {string} [name=\"geojson\"] name of the variable to display in error message (unused)\n * @returns {string} GeoJSON type\n * @example\n * var point = {\n *   \"type\": \"Feature\",\n *   \"properties\": {},\n *   \"geometry\": {\n *     \"type\": \"Point\",\n *     \"coordinates\": [110, 40]\n *   }\n * }\n * var geom = turf.getType(point)\n * //=\"Point\"\n */\nfunction getType(geojson, _name) {\n    if (geojson.type === \"FeatureCollection\") {\n        return \"FeatureCollection\";\n    }\n    if (geojson.type === \"GeometryCollection\") {\n        return \"GeometryCollection\";\n    }\n    if (geojson.type === \"Feature\" && geojson.geometry !== null) {\n        return geojson.geometry.type;\n    }\n    return geojson.type;\n}\nexports.getType = getType;\n","'use strict';\n\nvar centroid = require('@turf/centroid');\nvar rhumbBearing = require('@turf/rhumb-bearing');\nvar rhumbDistance = require('@turf/rhumb-distance');\nvar rhumbDestination = require('@turf/rhumb-destination');\nvar clone = require('@turf/clone');\nvar meta = require('@turf/meta');\nvar invariant = require('@turf/invariant');\nvar helpers = require('@turf/helpers');\n\nfunction _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }\n\nvar centroid__default = /*#__PURE__*/_interopDefaultLegacy(centroid);\nvar rhumbBearing__default = /*#__PURE__*/_interopDefaultLegacy(rhumbBearing);\nvar rhumbDistance__default = /*#__PURE__*/_interopDefaultLegacy(rhumbDistance);\nvar rhumbDestination__default = /*#__PURE__*/_interopDefaultLegacy(rhumbDestination);\nvar clone__default = /*#__PURE__*/_interopDefaultLegacy(clone);\n\n/**\n * Rotates any geojson Feature or Geometry of a specified angle, around its `centroid` or a given `pivot` point.\n *\n * @name transformRotate\n * @param {GeoJSON} geojson object to be rotated\n * @param {number} angle of rotation in decimal degrees, positive clockwise\n * @param {Object} [options={}] Optional parameters\n * @param {Coord} [options.pivot='centroid'] point around which the rotation will be performed\n * @param {boolean} [options.mutate=false] allows GeoJSON input to be mutated (significant performance increase if true)\n * @returns {GeoJSON} the rotated GeoJSON feature\n * @example\n * var poly = turf.polygon([[[0,29],[3.5,29],[2.5,32],[0,29]]]);\n * var options = {pivot: [0, 25]};\n * var rotatedPoly = turf.transformRotate(poly, 10, options);\n *\n * //addToMap\n * var addToMap = [poly, rotatedPoly];\n * rotatedPoly.properties = {stroke: '#F00', 'stroke-width': 4};\n */\nfunction transformRotate(geojson, angle, options) {\n  // Optional parameters\n  options = options || {};\n  if (!helpers.isObject(options)) throw new Error(\"options is invalid\");\n  var pivot = options.pivot;\n  var mutate = options.mutate;\n\n  // Input validation\n  if (!geojson) throw new Error(\"geojson is required\");\n  if (angle === undefined || angle === null || isNaN(angle))\n    throw new Error(\"angle is required\");\n\n  // Shortcut no-rotation\n  if (angle === 0) return geojson;\n\n  // Use centroid of GeoJSON if pivot is not provided\n  if (!pivot) pivot = centroid__default['default'](geojson);\n\n  // Clone geojson to avoid side effects\n  if (mutate === false || mutate === undefined) geojson = clone__default['default'](geojson);\n\n  // Rotate each coordinate\n  meta.coordEach(geojson, function (pointCoords) {\n    var initialAngle = rhumbBearing__default['default'](pivot, pointCoords);\n    var finalAngle = initialAngle + angle;\n    var distance = rhumbDistance__default['default'](pivot, pointCoords);\n    var newCoords = invariant.getCoords(rhumbDestination__default['default'](pivot, distance, finalAngle));\n    pointCoords[0] = newCoords[0];\n    pointCoords[1] = newCoords[1];\n  });\n  return geojson;\n}\n\nmodule.exports = transformRotate;\nmodule.exports.default = transformRotate;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * Returns a cloned copy of the passed GeoJSON Object, including possible 'Foreign Members'.\n * ~3-5x faster than the common JSON.parse + JSON.stringify combo method.\n *\n * @name clone\n * @param {GeoJSON} geojson GeoJSON Object\n * @returns {GeoJSON} cloned GeoJSON Object\n * @example\n * var line = turf.lineString([[-74, 40], [-78, 42], [-82, 35]], {color: 'red'});\n *\n * var lineCloned = turf.clone(line);\n */\nfunction clone(geojson) {\n    if (!geojson) {\n        throw new Error(\"geojson is required\");\n    }\n    switch (geojson.type) {\n        case \"Feature\":\n            return cloneFeature(geojson);\n        case \"FeatureCollection\":\n            return cloneFeatureCollection(geojson);\n        case \"Point\":\n        case \"LineString\":\n        case \"Polygon\":\n        case \"MultiPoint\":\n        case \"MultiLineString\":\n        case \"MultiPolygon\":\n        case \"GeometryCollection\":\n            return cloneGeometry(geojson);\n        default:\n            throw new Error(\"unknown GeoJSON type\");\n    }\n}\n/**\n * Clone Feature\n *\n * @private\n * @param {Feature<any>} geojson GeoJSON Feature\n * @returns {Feature<any>} cloned Feature\n */\nfunction cloneFeature(geojson) {\n    var cloned = { type: \"Feature\" };\n    // Preserve Foreign Members\n    Object.keys(geojson).forEach(function (key) {\n        switch (key) {\n            case \"type\":\n            case \"properties\":\n            case \"geometry\":\n                return;\n            default:\n                cloned[key] = geojson[key];\n        }\n    });\n    // Add properties & geometry last\n    cloned.properties = cloneProperties(geojson.properties);\n    cloned.geometry = cloneGeometry(geojson.geometry);\n    return cloned;\n}\n/**\n * Clone Properties\n *\n * @private\n * @param {Object} properties GeoJSON Properties\n * @returns {Object} cloned Properties\n */\nfunction cloneProperties(properties) {\n    var cloned = {};\n    if (!properties) {\n        return cloned;\n    }\n    Object.keys(properties).forEach(function (key) {\n        var value = properties[key];\n        if (typeof value === \"object\") {\n            if (value === null) {\n                // handle null\n                cloned[key] = null;\n            }\n            else if (Array.isArray(value)) {\n                // handle Array\n                cloned[key] = value.map(function (item) {\n                    return item;\n                });\n            }\n            else {\n                // handle generic Object\n                cloned[key] = cloneProperties(value);\n            }\n        }\n        else {\n            cloned[key] = value;\n        }\n    });\n    return cloned;\n}\n/**\n * Clone Feature Collection\n *\n * @private\n * @param {FeatureCollection<any>} geojson GeoJSON Feature Collection\n * @returns {FeatureCollection<any>} cloned Feature Collection\n */\nfunction cloneFeatureCollection(geojson) {\n    var cloned = { type: \"FeatureCollection\" };\n    // Preserve Foreign Members\n    Object.keys(geojson).forEach(function (key) {\n        switch (key) {\n            case \"type\":\n            case \"features\":\n                return;\n            default:\n                cloned[key] = geojson[key];\n        }\n    });\n    // Add features\n    cloned.features = geojson.features.map(function (feature) {\n        return cloneFeature(feature);\n    });\n    return cloned;\n}\n/**\n * Clone Geometry\n *\n * @private\n * @param {Geometry<any>} geometry GeoJSON Geometry\n * @returns {Geometry<any>} cloned Geometry\n */\nfunction cloneGeometry(geometry) {\n    var geom = { type: geometry.type };\n    if (geometry.bbox) {\n        geom.bbox = geometry.bbox;\n    }\n    if (geometry.type === \"GeometryCollection\") {\n        geom.geometries = geometry.geometries.map(function (g) {\n            return cloneGeometry(g);\n        });\n        return geom;\n    }\n    geom.coordinates = deepSlice(geometry.coordinates);\n    return geom;\n}\n/**\n * Deep Slice coordinates\n *\n * @private\n * @param {Coordinates} coords Coordinates\n * @returns {Coordinates} all coordinates sliced\n */\nfunction deepSlice(coords) {\n    var cloned = coords;\n    if (typeof cloned[0] !== \"object\") {\n        return cloned.slice();\n    }\n    return cloned.map(function (coord) {\n        return deepSlice(coord);\n    });\n}\nexports.default = clone;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * @module helpers\n */\n/**\n * Earth Radius used with the Harvesine formula and approximates using a spherical (non-ellipsoid) Earth.\n *\n * @memberof helpers\n * @type {number}\n */\nexports.earthRadius = 6371008.8;\n/**\n * Unit of measurement factors using a spherical (non-ellipsoid) earth radius.\n *\n * @memberof helpers\n * @type {Object}\n */\nexports.factors = {\n    centimeters: exports.earthRadius * 100,\n    centimetres: exports.earthRadius * 100,\n    degrees: exports.earthRadius / 111325,\n    feet: exports.earthRadius * 3.28084,\n    inches: exports.earthRadius * 39.37,\n    kilometers: exports.earthRadius / 1000,\n    kilometres: exports.earthRadius / 1000,\n    meters: exports.earthRadius,\n    metres: exports.earthRadius,\n    miles: exports.earthRadius / 1609.344,\n    millimeters: exports.earthRadius * 1000,\n    millimetres: exports.earthRadius * 1000,\n    nauticalmiles: exports.earthRadius / 1852,\n    radians: 1,\n    yards: exports.earthRadius * 1.0936,\n};\n/**\n * Units of measurement factors based on 1 meter.\n *\n * @memberof helpers\n * @type {Object}\n */\nexports.unitsFactors = {\n    centimeters: 100,\n    centimetres: 100,\n    degrees: 1 / 111325,\n    feet: 3.28084,\n    inches: 39.37,\n    kilometers: 1 / 1000,\n    kilometres: 1 / 1000,\n    meters: 1,\n    metres: 1,\n    miles: 1 / 1609.344,\n    millimeters: 1000,\n    millimetres: 1000,\n    nauticalmiles: 1 / 1852,\n    radians: 1 / exports.earthRadius,\n    yards: 1.0936133,\n};\n/**\n * Area of measurement factors based on 1 square meter.\n *\n * @memberof helpers\n * @type {Object}\n */\nexports.areaFactors = {\n    acres: 0.000247105,\n    centimeters: 10000,\n    centimetres: 10000,\n    feet: 10.763910417,\n    hectares: 0.0001,\n    inches: 1550.003100006,\n    kilometers: 0.000001,\n    kilometres: 0.000001,\n    meters: 1,\n    metres: 1,\n    miles: 3.86e-7,\n    millimeters: 1000000,\n    millimetres: 1000000,\n    yards: 1.195990046,\n};\n/**\n * Wraps a GeoJSON {@link Geometry} in a GeoJSON {@link Feature}.\n *\n * @name feature\n * @param {Geometry} geometry input geometry\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} a GeoJSON Feature\n * @example\n * var geometry = {\n *   \"type\": \"Point\",\n *   \"coordinates\": [110, 50]\n * };\n *\n * var feature = turf.feature(geometry);\n *\n * //=feature\n */\nfunction feature(geom, properties, options) {\n    if (options === void 0) { options = {}; }\n    var feat = { type: \"Feature\" };\n    if (options.id === 0 || options.id) {\n        feat.id = options.id;\n    }\n    if (options.bbox) {\n        feat.bbox = options.bbox;\n    }\n    feat.properties = properties || {};\n    feat.geometry = geom;\n    return feat;\n}\nexports.feature = feature;\n/**\n * Creates a GeoJSON {@link Geometry} from a Geometry string type & coordinates.\n * For GeometryCollection type use `helpers.geometryCollection`\n *\n * @name geometry\n * @param {string} type Geometry Type\n * @param {Array<any>} coordinates Coordinates\n * @param {Object} [options={}] Optional Parameters\n * @returns {Geometry} a GeoJSON Geometry\n * @example\n * var type = \"Point\";\n * var coordinates = [110, 50];\n * var geometry = turf.geometry(type, coordinates);\n * // => geometry\n */\nfunction geometry(type, coordinates, _options) {\n    if (_options === void 0) { _options = {}; }\n    switch (type) {\n        case \"Point\":\n            return point(coordinates).geometry;\n        case \"LineString\":\n            return lineString(coordinates).geometry;\n        case \"Polygon\":\n            return polygon(coordinates).geometry;\n        case \"MultiPoint\":\n            return multiPoint(coordinates).geometry;\n        case \"MultiLineString\":\n            return multiLineString(coordinates).geometry;\n        case \"MultiPolygon\":\n            return multiPolygon(coordinates).geometry;\n        default:\n            throw new Error(type + \" is invalid\");\n    }\n}\nexports.geometry = geometry;\n/**\n * Creates a {@link Point} {@link Feature} from a Position.\n *\n * @name point\n * @param {Array<number>} coordinates longitude, latitude position (each in decimal degrees)\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<Point>} a Point feature\n * @example\n * var point = turf.point([-75.343, 39.984]);\n *\n * //=point\n */\nfunction point(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    if (!coordinates) {\n        throw new Error(\"coordinates is required\");\n    }\n    if (!Array.isArray(coordinates)) {\n        throw new Error(\"coordinates must be an Array\");\n    }\n    if (coordinates.length < 2) {\n        throw new Error(\"coordinates must be at least 2 numbers long\");\n    }\n    if (!isNumber(coordinates[0]) || !isNumber(coordinates[1])) {\n        throw new Error(\"coordinates must contain numbers\");\n    }\n    var geom = {\n        type: \"Point\",\n        coordinates: coordinates,\n    };\n    return feature(geom, properties, options);\n}\nexports.point = point;\n/**\n * Creates a {@link Point} {@link FeatureCollection} from an Array of Point coordinates.\n *\n * @name points\n * @param {Array<Array<number>>} coordinates an array of Points\n * @param {Object} [properties={}] Translate these properties to each Feature\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north]\n * associated with the FeatureCollection\n * @param {string|number} [options.id] Identifier associated with the FeatureCollection\n * @returns {FeatureCollection<Point>} Point Feature\n * @example\n * var points = turf.points([\n *   [-75, 39],\n *   [-80, 45],\n *   [-78, 50]\n * ]);\n *\n * //=points\n */\nfunction points(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    return featureCollection(coordinates.map(function (coords) {\n        return point(coords, properties);\n    }), options);\n}\nexports.points = points;\n/**\n * Creates a {@link Polygon} {@link Feature} from an Array of LinearRings.\n *\n * @name polygon\n * @param {Array<Array<Array<number>>>} coordinates an array of LinearRings\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<Polygon>} Polygon Feature\n * @example\n * var polygon = turf.polygon([[[-5, 52], [-4, 56], [-2, 51], [-7, 54], [-5, 52]]], { name: 'poly1' });\n *\n * //=polygon\n */\nfunction polygon(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    for (var _i = 0, coordinates_1 = coordinates; _i < coordinates_1.length; _i++) {\n        var ring = coordinates_1[_i];\n        if (ring.length < 4) {\n            throw new Error(\"Each LinearRing of a Polygon must have 4 or more Positions.\");\n        }\n        for (var j = 0; j < ring[ring.length - 1].length; j++) {\n            // Check if first point of Polygon contains two numbers\n            if (ring[ring.length - 1][j] !== ring[0][j]) {\n                throw new Error(\"First and last Position are not equivalent.\");\n            }\n        }\n    }\n    var geom = {\n        type: \"Polygon\",\n        coordinates: coordinates,\n    };\n    return feature(geom, properties, options);\n}\nexports.polygon = polygon;\n/**\n * Creates a {@link Polygon} {@link FeatureCollection} from an Array of Polygon coordinates.\n *\n * @name polygons\n * @param {Array<Array<Array<Array<number>>>>} coordinates an array of Polygon coordinates\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the FeatureCollection\n * @returns {FeatureCollection<Polygon>} Polygon FeatureCollection\n * @example\n * var polygons = turf.polygons([\n *   [[[-5, 52], [-4, 56], [-2, 51], [-7, 54], [-5, 52]]],\n *   [[[-15, 42], [-14, 46], [-12, 41], [-17, 44], [-15, 42]]],\n * ]);\n *\n * //=polygons\n */\nfunction polygons(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    return featureCollection(coordinates.map(function (coords) {\n        return polygon(coords, properties);\n    }), options);\n}\nexports.polygons = polygons;\n/**\n * Creates a {@link LineString} {@link Feature} from an Array of Positions.\n *\n * @name lineString\n * @param {Array<Array<number>>} coordinates an array of Positions\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<LineString>} LineString Feature\n * @example\n * var linestring1 = turf.lineString([[-24, 63], [-23, 60], [-25, 65], [-20, 69]], {name: 'line 1'});\n * var linestring2 = turf.lineString([[-14, 43], [-13, 40], [-15, 45], [-10, 49]], {name: 'line 2'});\n *\n * //=linestring1\n * //=linestring2\n */\nfunction lineString(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    if (coordinates.length < 2) {\n        throw new Error(\"coordinates must be an array of two or more positions\");\n    }\n    var geom = {\n        type: \"LineString\",\n        coordinates: coordinates,\n    };\n    return feature(geom, properties, options);\n}\nexports.lineString = lineString;\n/**\n * Creates a {@link LineString} {@link FeatureCollection} from an Array of LineString coordinates.\n *\n * @name lineStrings\n * @param {Array<Array<Array<number>>>} coordinates an array of LinearRings\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north]\n * associated with the FeatureCollection\n * @param {string|number} [options.id] Identifier associated with the FeatureCollection\n * @returns {FeatureCollection<LineString>} LineString FeatureCollection\n * @example\n * var linestrings = turf.lineStrings([\n *   [[-24, 63], [-23, 60], [-25, 65], [-20, 69]],\n *   [[-14, 43], [-13, 40], [-15, 45], [-10, 49]]\n * ]);\n *\n * //=linestrings\n */\nfunction lineStrings(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    return featureCollection(coordinates.map(function (coords) {\n        return lineString(coords, properties);\n    }), options);\n}\nexports.lineStrings = lineStrings;\n/**\n * Takes one or more {@link Feature|Features} and creates a {@link FeatureCollection}.\n *\n * @name featureCollection\n * @param {Feature[]} features input features\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {FeatureCollection} FeatureCollection of Features\n * @example\n * var locationA = turf.point([-75.343, 39.984], {name: 'Location A'});\n * var locationB = turf.point([-75.833, 39.284], {name: 'Location B'});\n * var locationC = turf.point([-75.534, 39.123], {name: 'Location C'});\n *\n * var collection = turf.featureCollection([\n *   locationA,\n *   locationB,\n *   locationC\n * ]);\n *\n * //=collection\n */\nfunction featureCollection(features, options) {\n    if (options === void 0) { options = {}; }\n    var fc = { type: \"FeatureCollection\" };\n    if (options.id) {\n        fc.id = options.id;\n    }\n    if (options.bbox) {\n        fc.bbox = options.bbox;\n    }\n    fc.features = features;\n    return fc;\n}\nexports.featureCollection = featureCollection;\n/**\n * Creates a {@link Feature<MultiLineString>} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name multiLineString\n * @param {Array<Array<Array<number>>>} coordinates an array of LineStrings\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<MultiLineString>} a MultiLineString feature\n * @throws {Error} if no coordinates are passed\n * @example\n * var multiLine = turf.multiLineString([[[0,0],[10,10]]]);\n *\n * //=multiLine\n */\nfunction multiLineString(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    var geom = {\n        type: \"MultiLineString\",\n        coordinates: coordinates,\n    };\n    return feature(geom, properties, options);\n}\nexports.multiLineString = multiLineString;\n/**\n * Creates a {@link Feature<MultiPoint>} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name multiPoint\n * @param {Array<Array<number>>} coordinates an array of Positions\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<MultiPoint>} a MultiPoint feature\n * @throws {Error} if no coordinates are passed\n * @example\n * var multiPt = turf.multiPoint([[0,0],[10,10]]);\n *\n * //=multiPt\n */\nfunction multiPoint(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    var geom = {\n        type: \"MultiPoint\",\n        coordinates: coordinates,\n    };\n    return feature(geom, properties, options);\n}\nexports.multiPoint = multiPoint;\n/**\n * Creates a {@link Feature<MultiPolygon>} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name multiPolygon\n * @param {Array<Array<Array<Array<number>>>>} coordinates an array of Polygons\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<MultiPolygon>} a multipolygon feature\n * @throws {Error} if no coordinates are passed\n * @example\n * var multiPoly = turf.multiPolygon([[[[0,0],[0,10],[10,10],[10,0],[0,0]]]]);\n *\n * //=multiPoly\n *\n */\nfunction multiPolygon(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    var geom = {\n        type: \"MultiPolygon\",\n        coordinates: coordinates,\n    };\n    return feature(geom, properties, options);\n}\nexports.multiPolygon = multiPolygon;\n/**\n * Creates a {@link Feature<GeometryCollection>} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name geometryCollection\n * @param {Array<Geometry>} geometries an array of GeoJSON Geometries\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<GeometryCollection>} a GeoJSON GeometryCollection Feature\n * @example\n * var pt = turf.geometry(\"Point\", [100, 0]);\n * var line = turf.geometry(\"LineString\", [[101, 0], [102, 1]]);\n * var collection = turf.geometryCollection([pt, line]);\n *\n * // => collection\n */\nfunction geometryCollection(geometries, properties, options) {\n    if (options === void 0) { options = {}; }\n    var geom = {\n        type: \"GeometryCollection\",\n        geometries: geometries,\n    };\n    return feature(geom, properties, options);\n}\nexports.geometryCollection = geometryCollection;\n/**\n * Round number to precision\n *\n * @param {number} num Number\n * @param {number} [precision=0] Precision\n * @returns {number} rounded number\n * @example\n * turf.round(120.4321)\n * //=120\n *\n * turf.round(120.4321, 2)\n * //=120.43\n */\nfunction round(num, precision) {\n    if (precision === void 0) { precision = 0; }\n    if (precision && !(precision >= 0)) {\n        throw new Error(\"precision must be a positive number\");\n    }\n    var multiplier = Math.pow(10, precision || 0);\n    return Math.round(num * multiplier) / multiplier;\n}\nexports.round = round;\n/**\n * Convert a distance measurement (assuming a spherical Earth) from radians to a more friendly unit.\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet\n *\n * @name radiansToLength\n * @param {number} radians in radians across the sphere\n * @param {string} [units=\"kilometers\"] can be degrees, radians, miles, inches, yards, metres,\n * meters, kilometres, kilometers.\n * @returns {number} distance\n */\nfunction radiansToLength(radians, units) {\n    if (units === void 0) { units = \"kilometers\"; }\n    var factor = exports.factors[units];\n    if (!factor) {\n        throw new Error(units + \" units is invalid\");\n    }\n    return radians * factor;\n}\nexports.radiansToLength = radiansToLength;\n/**\n * Convert a distance measurement (assuming a spherical Earth) from a real-world unit into radians\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet\n *\n * @name lengthToRadians\n * @param {number} distance in real units\n * @param {string} [units=\"kilometers\"] can be degrees, radians, miles, inches, yards, metres,\n * meters, kilometres, kilometers.\n * @returns {number} radians\n */\nfunction lengthToRadians(distance, units) {\n    if (units === void 0) { units = \"kilometers\"; }\n    var factor = exports.factors[units];\n    if (!factor) {\n        throw new Error(units + \" units is invalid\");\n    }\n    return distance / factor;\n}\nexports.lengthToRadians = lengthToRadians;\n/**\n * Convert a distance measurement (assuming a spherical Earth) from a real-world unit into degrees\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, centimeters, kilometres, feet\n *\n * @name lengthToDegrees\n * @param {number} distance in real units\n * @param {string} [units=\"kilometers\"] can be degrees, radians, miles, inches, yards, metres,\n * meters, kilometres, kilometers.\n * @returns {number} degrees\n */\nfunction lengthToDegrees(distance, units) {\n    return radiansToDegrees(lengthToRadians(distance, units));\n}\nexports.lengthToDegrees = lengthToDegrees;\n/**\n * Converts any bearing angle from the north line direction (positive clockwise)\n * and returns an angle between 0-360 degrees (positive clockwise), 0 being the north line\n *\n * @name bearingToAzimuth\n * @param {number} bearing angle, between -180 and +180 degrees\n * @returns {number} angle between 0 and 360 degrees\n */\nfunction bearingToAzimuth(bearing) {\n    var angle = bearing % 360;\n    if (angle < 0) {\n        angle += 360;\n    }\n    return angle;\n}\nexports.bearingToAzimuth = bearingToAzimuth;\n/**\n * Converts an angle in radians to degrees\n *\n * @name radiansToDegrees\n * @param {number} radians angle in radians\n * @returns {number} degrees between 0 and 360 degrees\n */\nfunction radiansToDegrees(radians) {\n    var degrees = radians % (2 * Math.PI);\n    return (degrees * 180) / Math.PI;\n}\nexports.radiansToDegrees = radiansToDegrees;\n/**\n * Converts an angle in degrees to radians\n *\n * @name degreesToRadians\n * @param {number} degrees angle between 0 and 360 degrees\n * @returns {number} angle in radians\n */\nfunction degreesToRadians(degrees) {\n    var radians = degrees % 360;\n    return (radians * Math.PI) / 180;\n}\nexports.degreesToRadians = degreesToRadians;\n/**\n * Converts a length to the requested unit.\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet\n *\n * @param {number} length to be converted\n * @param {Units} [originalUnit=\"kilometers\"] of the length\n * @param {Units} [finalUnit=\"kilometers\"] returned unit\n * @returns {number} the converted length\n */\nfunction convertLength(length, originalUnit, finalUnit) {\n    if (originalUnit === void 0) { originalUnit = \"kilometers\"; }\n    if (finalUnit === void 0) { finalUnit = \"kilometers\"; }\n    if (!(length >= 0)) {\n        throw new Error(\"length must be a positive number\");\n    }\n    return radiansToLength(lengthToRadians(length, originalUnit), finalUnit);\n}\nexports.convertLength = convertLength;\n/**\n * Converts a area to the requested unit.\n * Valid units: kilometers, kilometres, meters, metres, centimetres, millimeters, acres, miles, yards, feet, inches, hectares\n * @param {number} area to be converted\n * @param {Units} [originalUnit=\"meters\"] of the distance\n * @param {Units} [finalUnit=\"kilometers\"] returned unit\n * @returns {number} the converted area\n */\nfunction convertArea(area, originalUnit, finalUnit) {\n    if (originalUnit === void 0) { originalUnit = \"meters\"; }\n    if (finalUnit === void 0) { finalUnit = \"kilometers\"; }\n    if (!(area >= 0)) {\n        throw new Error(\"area must be a positive number\");\n    }\n    var startFactor = exports.areaFactors[originalUnit];\n    if (!startFactor) {\n        throw new Error(\"invalid original units\");\n    }\n    var finalFactor = exports.areaFactors[finalUnit];\n    if (!finalFactor) {\n        throw new Error(\"invalid final units\");\n    }\n    return (area / startFactor) * finalFactor;\n}\nexports.convertArea = convertArea;\n/**\n * isNumber\n *\n * @param {*} num Number to validate\n * @returns {boolean} true/false\n * @example\n * turf.isNumber(123)\n * //=true\n * turf.isNumber('foo')\n * //=false\n */\nfunction isNumber(num) {\n    return !isNaN(num) && num !== null && !Array.isArray(num);\n}\nexports.isNumber = isNumber;\n/**\n * isObject\n *\n * @param {*} input variable to validate\n * @returns {boolean} true/false\n * @example\n * turf.isObject({elevation: 10})\n * //=true\n * turf.isObject('foo')\n * //=false\n */\nfunction isObject(input) {\n    return !!input && input.constructor === Object;\n}\nexports.isObject = isObject;\n/**\n * Validate BBox\n *\n * @private\n * @param {Array<number>} bbox BBox to validate\n * @returns {void}\n * @throws Error if BBox is not valid\n * @example\n * validateBBox([-180, -40, 110, 50])\n * //=OK\n * validateBBox([-180, -40])\n * //=Error\n * validateBBox('Foo')\n * //=Error\n * validateBBox(5)\n * //=Error\n * validateBBox(null)\n * //=Error\n * validateBBox(undefined)\n * //=Error\n */\nfunction validateBBox(bbox) {\n    if (!bbox) {\n        throw new Error(\"bbox is required\");\n    }\n    if (!Array.isArray(bbox)) {\n        throw new Error(\"bbox must be an Array\");\n    }\n    if (bbox.length !== 4 && bbox.length !== 6) {\n        throw new Error(\"bbox must be an Array of 4 or 6 numbers\");\n    }\n    bbox.forEach(function (num) {\n        if (!isNumber(num)) {\n            throw new Error(\"bbox must only contain numbers\");\n        }\n    });\n}\nexports.validateBBox = validateBBox;\n/**\n * Validate Id\n *\n * @private\n * @param {string|number} id Id to validate\n * @returns {void}\n * @throws Error if Id is not valid\n * @example\n * validateId([-180, -40, 110, 50])\n * //=Error\n * validateId([-180, -40])\n * //=Error\n * validateId('Foo')\n * //=OK\n * validateId(5)\n * //=OK\n * validateId(null)\n * //=Error\n * validateId(undefined)\n * //=Error\n */\nfunction validateId(id) {\n    if (!id) {\n        throw new Error(\"id is required\");\n    }\n    if ([\"string\", \"number\"].indexOf(typeof id) === -1) {\n        throw new Error(\"id must be a number or a string\");\n    }\n}\nexports.validateId = validateId;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar helpers_1 = require(\"@turf/helpers\");\n/**\n * Unwrap a coordinate from a Point Feature, Geometry or a single coordinate.\n *\n * @name getCoord\n * @param {Array<number>|Geometry<Point>|Feature<Point>} coord GeoJSON Point or an Array of numbers\n * @returns {Array<number>} coordinates\n * @example\n * var pt = turf.point([10, 10]);\n *\n * var coord = turf.getCoord(pt);\n * //= [10, 10]\n */\nfunction getCoord(coord) {\n    if (!coord) {\n        throw new Error(\"coord is required\");\n    }\n    if (!Array.isArray(coord)) {\n        if (coord.type === \"Feature\" &&\n            coord.geometry !== null &&\n            coord.geometry.type === \"Point\") {\n            return coord.geometry.coordinates;\n        }\n        if (coord.type === \"Point\") {\n            return coord.coordinates;\n        }\n    }\n    if (Array.isArray(coord) &&\n        coord.length >= 2 &&\n        !Array.isArray(coord[0]) &&\n        !Array.isArray(coord[1])) {\n        return coord;\n    }\n    throw new Error(\"coord must be GeoJSON Point or an Array of numbers\");\n}\nexports.getCoord = getCoord;\n/**\n * Unwrap coordinates from a Feature, Geometry Object or an Array\n *\n * @name getCoords\n * @param {Array<any>|Geometry|Feature} coords Feature, Geometry Object or an Array\n * @returns {Array<any>} coordinates\n * @example\n * var poly = turf.polygon([[[119.32, -8.7], [119.55, -8.69], [119.51, -8.54], [119.32, -8.7]]]);\n *\n * var coords = turf.getCoords(poly);\n * //= [[[119.32, -8.7], [119.55, -8.69], [119.51, -8.54], [119.32, -8.7]]]\n */\nfunction getCoords(coords) {\n    if (Array.isArray(coords)) {\n        return coords;\n    }\n    // Feature\n    if (coords.type === \"Feature\") {\n        if (coords.geometry !== null) {\n            return coords.geometry.coordinates;\n        }\n    }\n    else {\n        // Geometry\n        if (coords.coordinates) {\n            return coords.coordinates;\n        }\n    }\n    throw new Error(\"coords must be GeoJSON Feature, Geometry Object or an Array\");\n}\nexports.getCoords = getCoords;\n/**\n * Checks if coordinates contains a number\n *\n * @name containsNumber\n * @param {Array<any>} coordinates GeoJSON Coordinates\n * @returns {boolean} true if Array contains a number\n */\nfunction containsNumber(coordinates) {\n    if (coordinates.length > 1 &&\n        helpers_1.isNumber(coordinates[0]) &&\n        helpers_1.isNumber(coordinates[1])) {\n        return true;\n    }\n    if (Array.isArray(coordinates[0]) && coordinates[0].length) {\n        return containsNumber(coordinates[0]);\n    }\n    throw new Error(\"coordinates must only contain numbers\");\n}\nexports.containsNumber = containsNumber;\n/**\n * Enforce expectations about types of GeoJSON objects for Turf.\n *\n * @name geojsonType\n * @param {GeoJSON} value any GeoJSON object\n * @param {string} type expected GeoJSON type\n * @param {string} name name of calling function\n * @throws {Error} if value is not the expected type.\n */\nfunction geojsonType(value, type, name) {\n    if (!type || !name) {\n        throw new Error(\"type and name required\");\n    }\n    if (!value || value.type !== type) {\n        throw new Error(\"Invalid input to \" +\n            name +\n            \": must be a \" +\n            type +\n            \", given \" +\n            value.type);\n    }\n}\nexports.geojsonType = geojsonType;\n/**\n * Enforce expectations about types of {@link Feature} inputs for Turf.\n * Internally this uses {@link geojsonType} to judge geometry types.\n *\n * @name featureOf\n * @param {Feature} feature a feature with an expected geometry type\n * @param {string} type expected GeoJSON type\n * @param {string} name name of calling function\n * @throws {Error} error if value is not the expected type.\n */\nfunction featureOf(feature, type, name) {\n    if (!feature) {\n        throw new Error(\"No feature passed\");\n    }\n    if (!name) {\n        throw new Error(\".featureOf() requires a name\");\n    }\n    if (!feature || feature.type !== \"Feature\" || !feature.geometry) {\n        throw new Error(\"Invalid input to \" + name + \", Feature with geometry required\");\n    }\n    if (!feature.geometry || feature.geometry.type !== type) {\n        throw new Error(\"Invalid input to \" +\n            name +\n            \": must be a \" +\n            type +\n            \", given \" +\n            feature.geometry.type);\n    }\n}\nexports.featureOf = featureOf;\n/**\n * Enforce expectations about types of {@link FeatureCollection} inputs for Turf.\n * Internally this uses {@link geojsonType} to judge geometry types.\n *\n * @name collectionOf\n * @param {FeatureCollection} featureCollection a FeatureCollection for which features will be judged\n * @param {string} type expected GeoJSON type\n * @param {string} name name of calling function\n * @throws {Error} if value is not the expected type.\n */\nfunction collectionOf(featureCollection, type, name) {\n    if (!featureCollection) {\n        throw new Error(\"No featureCollection passed\");\n    }\n    if (!name) {\n        throw new Error(\".collectionOf() requires a name\");\n    }\n    if (!featureCollection || featureCollection.type !== \"FeatureCollection\") {\n        throw new Error(\"Invalid input to \" + name + \", FeatureCollection required\");\n    }\n    for (var _i = 0, _a = featureCollection.features; _i < _a.length; _i++) {\n        var feature = _a[_i];\n        if (!feature || feature.type !== \"Feature\" || !feature.geometry) {\n            throw new Error(\"Invalid input to \" + name + \", Feature with geometry required\");\n        }\n        if (!feature.geometry || feature.geometry.type !== type) {\n            throw new Error(\"Invalid input to \" +\n                name +\n                \": must be a \" +\n                type +\n                \", given \" +\n                feature.geometry.type);\n        }\n    }\n}\nexports.collectionOf = collectionOf;\n/**\n * Get Geometry from Feature or Geometry Object\n *\n * @param {Feature|Geometry} geojson GeoJSON Feature or Geometry Object\n * @returns {Geometry|null} GeoJSON Geometry Object\n * @throws {Error} if geojson is not a Feature or Geometry Object\n * @example\n * var point = {\n *   \"type\": \"Feature\",\n *   \"properties\": {},\n *   \"geometry\": {\n *     \"type\": \"Point\",\n *     \"coordinates\": [110, 40]\n *   }\n * }\n * var geom = turf.getGeom(point)\n * //={\"type\": \"Point\", \"coordinates\": [110, 40]}\n */\nfunction getGeom(geojson) {\n    if (geojson.type === \"Feature\") {\n        return geojson.geometry;\n    }\n    return geojson;\n}\nexports.getGeom = getGeom;\n/**\n * Get GeoJSON object's type, Geometry type is prioritize.\n *\n * @param {GeoJSON} geojson GeoJSON object\n * @param {string} [name=\"geojson\"] name of the variable to display in error message (unused)\n * @returns {string} GeoJSON type\n * @example\n * var point = {\n *   \"type\": \"Feature\",\n *   \"properties\": {},\n *   \"geometry\": {\n *     \"type\": \"Point\",\n *     \"coordinates\": [110, 40]\n *   }\n * }\n * var geom = turf.getType(point)\n * //=\"Point\"\n */\nfunction getType(geojson, _name) {\n    if (geojson.type === \"FeatureCollection\") {\n        return \"FeatureCollection\";\n    }\n    if (geojson.type === \"GeometryCollection\") {\n        return \"GeometryCollection\";\n    }\n    if (geojson.type === \"Feature\" && geojson.geometry !== null) {\n        return geojson.geometry.type;\n    }\n    return geojson.type;\n}\nexports.getType = getType;\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nvar helpers = require('@turf/helpers');\n\n/**\n * Callback for coordEach\n *\n * @callback coordEachCallback\n * @param {Array<number>} currentCoord The current coordinate being processed.\n * @param {number} coordIndex The current index of the coordinate being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n * @param {number} geometryIndex The current index of the Geometry being processed.\n */\n\n/**\n * Iterate over coordinates in any GeoJSON object, similar to Array.forEach()\n *\n * @name coordEach\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (currentCoord, coordIndex, featureIndex, multiFeatureIndex)\n * @param {boolean} [excludeWrapCoord=false] whether or not to include the final coordinate of LinearRings that wraps the ring in its iteration.\n * @returns {void}\n * @example\n * var features = turf.featureCollection([\n *   turf.point([26, 37], {\"foo\": \"bar\"}),\n *   turf.point([36, 53], {\"hello\": \"world\"})\n * ]);\n *\n * turf.coordEach(features, function (currentCoord, coordIndex, featureIndex, multiFeatureIndex, geometryIndex) {\n *   //=currentCoord\n *   //=coordIndex\n *   //=featureIndex\n *   //=multiFeatureIndex\n *   //=geometryIndex\n * });\n */\nfunction coordEach(geojson, callback, excludeWrapCoord) {\n  // Handles null Geometry -- Skips this GeoJSON\n  if (geojson === null) return;\n  var j,\n    k,\n    l,\n    geometry,\n    stopG,\n    coords,\n    geometryMaybeCollection,\n    wrapShrink = 0,\n    coordIndex = 0,\n    isGeometryCollection,\n    type = geojson.type,\n    isFeatureCollection = type === \"FeatureCollection\",\n    isFeature = type === \"Feature\",\n    stop = isFeatureCollection ? geojson.features.length : 1;\n\n  // This logic may look a little weird. The reason why it is that way\n  // is because it's trying to be fast. GeoJSON supports multiple kinds\n  // of objects at its root: FeatureCollection, Features, Geometries.\n  // This function has the responsibility of handling all of them, and that\n  // means that some of the `for` loops you see below actually just don't apply\n  // to certain inputs. For instance, if you give this just a\n  // Point geometry, then both loops are short-circuited and all we do\n  // is gradually rename the input until it's called 'geometry'.\n  //\n  // This also aims to allocate as few resources as possible: just a\n  // few numbers and booleans, rather than any temporary arrays as would\n  // be required with the normalization approach.\n  for (var featureIndex = 0; featureIndex < stop; featureIndex++) {\n    geometryMaybeCollection = isFeatureCollection\n      ? geojson.features[featureIndex].geometry\n      : isFeature\n      ? geojson.geometry\n      : geojson;\n    isGeometryCollection = geometryMaybeCollection\n      ? geometryMaybeCollection.type === \"GeometryCollection\"\n      : false;\n    stopG = isGeometryCollection\n      ? geometryMaybeCollection.geometries.length\n      : 1;\n\n    for (var geomIndex = 0; geomIndex < stopG; geomIndex++) {\n      var multiFeatureIndex = 0;\n      var geometryIndex = 0;\n      geometry = isGeometryCollection\n        ? geometryMaybeCollection.geometries[geomIndex]\n        : geometryMaybeCollection;\n\n      // Handles null Geometry -- Skips this geometry\n      if (geometry === null) continue;\n      coords = geometry.coordinates;\n      var geomType = geometry.type;\n\n      wrapShrink =\n        excludeWrapCoord &&\n        (geomType === \"Polygon\" || geomType === \"MultiPolygon\")\n          ? 1\n          : 0;\n\n      switch (geomType) {\n        case null:\n          break;\n        case \"Point\":\n          if (\n            callback(\n              coords,\n              coordIndex,\n              featureIndex,\n              multiFeatureIndex,\n              geometryIndex\n            ) === false\n          )\n            return false;\n          coordIndex++;\n          multiFeatureIndex++;\n          break;\n        case \"LineString\":\n        case \"MultiPoint\":\n          for (j = 0; j < coords.length; j++) {\n            if (\n              callback(\n                coords[j],\n                coordIndex,\n                featureIndex,\n                multiFeatureIndex,\n                geometryIndex\n              ) === false\n            )\n              return false;\n            coordIndex++;\n            if (geomType === \"MultiPoint\") multiFeatureIndex++;\n          }\n          if (geomType === \"LineString\") multiFeatureIndex++;\n          break;\n        case \"Polygon\":\n        case \"MultiLineString\":\n          for (j = 0; j < coords.length; j++) {\n            for (k = 0; k < coords[j].length - wrapShrink; k++) {\n              if (\n                callback(\n                  coords[j][k],\n                  coordIndex,\n                  featureIndex,\n                  multiFeatureIndex,\n                  geometryIndex\n                ) === false\n              )\n                return false;\n              coordIndex++;\n            }\n            if (geomType === \"MultiLineString\") multiFeatureIndex++;\n            if (geomType === \"Polygon\") geometryIndex++;\n          }\n          if (geomType === \"Polygon\") multiFeatureIndex++;\n          break;\n        case \"MultiPolygon\":\n          for (j = 0; j < coords.length; j++) {\n            geometryIndex = 0;\n            for (k = 0; k < coords[j].length; k++) {\n              for (l = 0; l < coords[j][k].length - wrapShrink; l++) {\n                if (\n                  callback(\n                    coords[j][k][l],\n                    coordIndex,\n                    featureIndex,\n                    multiFeatureIndex,\n                    geometryIndex\n                  ) === false\n                )\n                  return false;\n                coordIndex++;\n              }\n              geometryIndex++;\n            }\n            multiFeatureIndex++;\n          }\n          break;\n        case \"GeometryCollection\":\n          for (j = 0; j < geometry.geometries.length; j++)\n            if (\n              coordEach(geometry.geometries[j], callback, excludeWrapCoord) ===\n              false\n            )\n              return false;\n          break;\n        default:\n          throw new Error(\"Unknown Geometry Type\");\n      }\n    }\n  }\n}\n\n/**\n * Callback for coordReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n *  - The previousValue argument is initialValue.\n *  - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n *  - The previousValue argument is the value of the first element present in the array.\n *  - The currentValue argument is the value of the second element present in the array.\n *\n * @callback coordReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Array<number>} currentCoord The current coordinate being processed.\n * @param {number} coordIndex The current index of the coordinate being processed.\n * Starts at index 0, if an initialValue is provided, and at index 1 otherwise.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n * @param {number} geometryIndex The current index of the Geometry being processed.\n */\n\n/**\n * Reduce coordinates in any GeoJSON object, similar to Array.reduce()\n *\n * @name coordReduce\n * @param {FeatureCollection|Geometry|Feature} geojson any GeoJSON object\n * @param {Function} callback a method that takes (previousValue, currentCoord, coordIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @param {boolean} [excludeWrapCoord=false] whether or not to include the final coordinate of LinearRings that wraps the ring in its iteration.\n * @returns {*} The value that results from the reduction.\n * @example\n * var features = turf.featureCollection([\n *   turf.point([26, 37], {\"foo\": \"bar\"}),\n *   turf.point([36, 53], {\"hello\": \"world\"})\n * ]);\n *\n * turf.coordReduce(features, function (previousValue, currentCoord, coordIndex, featureIndex, multiFeatureIndex, geometryIndex) {\n *   //=previousValue\n *   //=currentCoord\n *   //=coordIndex\n *   //=featureIndex\n *   //=multiFeatureIndex\n *   //=geometryIndex\n *   return currentCoord;\n * });\n */\nfunction coordReduce(geojson, callback, initialValue, excludeWrapCoord) {\n  var previousValue = initialValue;\n  coordEach(\n    geojson,\n    function (\n      currentCoord,\n      coordIndex,\n      featureIndex,\n      multiFeatureIndex,\n      geometryIndex\n    ) {\n      if (coordIndex === 0 && initialValue === undefined)\n        previousValue = currentCoord;\n      else\n        previousValue = callback(\n          previousValue,\n          currentCoord,\n          coordIndex,\n          featureIndex,\n          multiFeatureIndex,\n          geometryIndex\n        );\n    },\n    excludeWrapCoord\n  );\n  return previousValue;\n}\n\n/**\n * Callback for propEach\n *\n * @callback propEachCallback\n * @param {Object} currentProperties The current Properties being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n */\n\n/**\n * Iterate over properties in any GeoJSON object, similar to Array.forEach()\n *\n * @name propEach\n * @param {FeatureCollection|Feature} geojson any GeoJSON object\n * @param {Function} callback a method that takes (currentProperties, featureIndex)\n * @returns {void}\n * @example\n * var features = turf.featureCollection([\n *     turf.point([26, 37], {foo: 'bar'}),\n *     turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * turf.propEach(features, function (currentProperties, featureIndex) {\n *   //=currentProperties\n *   //=featureIndex\n * });\n */\nfunction propEach(geojson, callback) {\n  var i;\n  switch (geojson.type) {\n    case \"FeatureCollection\":\n      for (i = 0; i < geojson.features.length; i++) {\n        if (callback(geojson.features[i].properties, i) === false) break;\n      }\n      break;\n    case \"Feature\":\n      callback(geojson.properties, 0);\n      break;\n  }\n}\n\n/**\n * Callback for propReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n *  - The previousValue argument is initialValue.\n *  - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n *  - The previousValue argument is the value of the first element present in the array.\n *  - The currentValue argument is the value of the second element present in the array.\n *\n * @callback propReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {*} currentProperties The current Properties being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n */\n\n/**\n * Reduce properties in any GeoJSON object into a single value,\n * similar to how Array.reduce works. However, in this case we lazily run\n * the reduction, so an array of all properties is unnecessary.\n *\n * @name propReduce\n * @param {FeatureCollection|Feature} geojson any GeoJSON object\n * @param {Function} callback a method that takes (previousValue, currentProperties, featureIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {*} The value that results from the reduction.\n * @example\n * var features = turf.featureCollection([\n *     turf.point([26, 37], {foo: 'bar'}),\n *     turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * turf.propReduce(features, function (previousValue, currentProperties, featureIndex) {\n *   //=previousValue\n *   //=currentProperties\n *   //=featureIndex\n *   return currentProperties\n * });\n */\nfunction propReduce(geojson, callback, initialValue) {\n  var previousValue = initialValue;\n  propEach(geojson, function (currentProperties, featureIndex) {\n    if (featureIndex === 0 && initialValue === undefined)\n      previousValue = currentProperties;\n    else\n      previousValue = callback(previousValue, currentProperties, featureIndex);\n  });\n  return previousValue;\n}\n\n/**\n * Callback for featureEach\n *\n * @callback featureEachCallback\n * @param {Feature<any>} currentFeature The current Feature being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n */\n\n/**\n * Iterate over features in any GeoJSON object, similar to\n * Array.forEach.\n *\n * @name featureEach\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (currentFeature, featureIndex)\n * @returns {void}\n * @example\n * var features = turf.featureCollection([\n *   turf.point([26, 37], {foo: 'bar'}),\n *   turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * turf.featureEach(features, function (currentFeature, featureIndex) {\n *   //=currentFeature\n *   //=featureIndex\n * });\n */\nfunction featureEach(geojson, callback) {\n  if (geojson.type === \"Feature\") {\n    callback(geojson, 0);\n  } else if (geojson.type === \"FeatureCollection\") {\n    for (var i = 0; i < geojson.features.length; i++) {\n      if (callback(geojson.features[i], i) === false) break;\n    }\n  }\n}\n\n/**\n * Callback for featureReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n *  - The previousValue argument is initialValue.\n *  - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n *  - The previousValue argument is the value of the first element present in the array.\n *  - The currentValue argument is the value of the second element present in the array.\n *\n * @callback featureReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Feature} currentFeature The current Feature being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n */\n\n/**\n * Reduce features in any GeoJSON object, similar to Array.reduce().\n *\n * @name featureReduce\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (previousValue, currentFeature, featureIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {*} The value that results from the reduction.\n * @example\n * var features = turf.featureCollection([\n *   turf.point([26, 37], {\"foo\": \"bar\"}),\n *   turf.point([36, 53], {\"hello\": \"world\"})\n * ]);\n *\n * turf.featureReduce(features, function (previousValue, currentFeature, featureIndex) {\n *   //=previousValue\n *   //=currentFeature\n *   //=featureIndex\n *   return currentFeature\n * });\n */\nfunction featureReduce(geojson, callback, initialValue) {\n  var previousValue = initialValue;\n  featureEach(geojson, function (currentFeature, featureIndex) {\n    if (featureIndex === 0 && initialValue === undefined)\n      previousValue = currentFeature;\n    else previousValue = callback(previousValue, currentFeature, featureIndex);\n  });\n  return previousValue;\n}\n\n/**\n * Get all coordinates from any GeoJSON object.\n *\n * @name coordAll\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @returns {Array<Array<number>>} coordinate position array\n * @example\n * var features = turf.featureCollection([\n *   turf.point([26, 37], {foo: 'bar'}),\n *   turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * var coords = turf.coordAll(features);\n * //= [[26, 37], [36, 53]]\n */\nfunction coordAll(geojson) {\n  var coords = [];\n  coordEach(geojson, function (coord) {\n    coords.push(coord);\n  });\n  return coords;\n}\n\n/**\n * Callback for geomEach\n *\n * @callback geomEachCallback\n * @param {Geometry} currentGeometry The current Geometry being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {Object} featureProperties The current Feature Properties being processed.\n * @param {Array<number>} featureBBox The current Feature BBox being processed.\n * @param {number|string} featureId The current Feature Id being processed.\n */\n\n/**\n * Iterate over each geometry in any GeoJSON object, similar to Array.forEach()\n *\n * @name geomEach\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (currentGeometry, featureIndex, featureProperties, featureBBox, featureId)\n * @returns {void}\n * @example\n * var features = turf.featureCollection([\n *     turf.point([26, 37], {foo: 'bar'}),\n *     turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * turf.geomEach(features, function (currentGeometry, featureIndex, featureProperties, featureBBox, featureId) {\n *   //=currentGeometry\n *   //=featureIndex\n *   //=featureProperties\n *   //=featureBBox\n *   //=featureId\n * });\n */\nfunction geomEach(geojson, callback) {\n  var i,\n    j,\n    g,\n    geometry,\n    stopG,\n    geometryMaybeCollection,\n    isGeometryCollection,\n    featureProperties,\n    featureBBox,\n    featureId,\n    featureIndex = 0,\n    isFeatureCollection = geojson.type === \"FeatureCollection\",\n    isFeature = geojson.type === \"Feature\",\n    stop = isFeatureCollection ? geojson.features.length : 1;\n\n  // This logic may look a little weird. The reason why it is that way\n  // is because it's trying to be fast. GeoJSON supports multiple kinds\n  // of objects at its root: FeatureCollection, Features, Geometries.\n  // This function has the responsibility of handling all of them, and that\n  // means that some of the `for` loops you see below actually just don't apply\n  // to certain inputs. For instance, if you give this just a\n  // Point geometry, then both loops are short-circuited and all we do\n  // is gradually rename the input until it's called 'geometry'.\n  //\n  // This also aims to allocate as few resources as possible: just a\n  // few numbers and booleans, rather than any temporary arrays as would\n  // be required with the normalization approach.\n  for (i = 0; i < stop; i++) {\n    geometryMaybeCollection = isFeatureCollection\n      ? geojson.features[i].geometry\n      : isFeature\n      ? geojson.geometry\n      : geojson;\n    featureProperties = isFeatureCollection\n      ? geojson.features[i].properties\n      : isFeature\n      ? geojson.properties\n      : {};\n    featureBBox = isFeatureCollection\n      ? geojson.features[i].bbox\n      : isFeature\n      ? geojson.bbox\n      : undefined;\n    featureId = isFeatureCollection\n      ? geojson.features[i].id\n      : isFeature\n      ? geojson.id\n      : undefined;\n    isGeometryCollection = geometryMaybeCollection\n      ? geometryMaybeCollection.type === \"GeometryCollection\"\n      : false;\n    stopG = isGeometryCollection\n      ? geometryMaybeCollection.geometries.length\n      : 1;\n\n    for (g = 0; g < stopG; g++) {\n      geometry = isGeometryCollection\n        ? geometryMaybeCollection.geometries[g]\n        : geometryMaybeCollection;\n\n      // Handle null Geometry\n      if (geometry === null) {\n        if (\n          callback(\n            null,\n            featureIndex,\n            featureProperties,\n            featureBBox,\n            featureId\n          ) === false\n        )\n          return false;\n        continue;\n      }\n      switch (geometry.type) {\n        case \"Point\":\n        case \"LineString\":\n        case \"MultiPoint\":\n        case \"Polygon\":\n        case \"MultiLineString\":\n        case \"MultiPolygon\": {\n          if (\n            callback(\n              geometry,\n              featureIndex,\n              featureProperties,\n              featureBBox,\n              featureId\n            ) === false\n          )\n            return false;\n          break;\n        }\n        case \"GeometryCollection\": {\n          for (j = 0; j < geometry.geometries.length; j++) {\n            if (\n              callback(\n                geometry.geometries[j],\n                featureIndex,\n                featureProperties,\n                featureBBox,\n                featureId\n              ) === false\n            )\n              return false;\n          }\n          break;\n        }\n        default:\n          throw new Error(\"Unknown Geometry Type\");\n      }\n    }\n    // Only increase `featureIndex` per each feature\n    featureIndex++;\n  }\n}\n\n/**\n * Callback for geomReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n *  - The previousValue argument is initialValue.\n *  - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n *  - The previousValue argument is the value of the first element present in the array.\n *  - The currentValue argument is the value of the second element present in the array.\n *\n * @callback geomReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Geometry} currentGeometry The current Geometry being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {Object} featureProperties The current Feature Properties being processed.\n * @param {Array<number>} featureBBox The current Feature BBox being processed.\n * @param {number|string} featureId The current Feature Id being processed.\n */\n\n/**\n * Reduce geometry in any GeoJSON object, similar to Array.reduce().\n *\n * @name geomReduce\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (previousValue, currentGeometry, featureIndex, featureProperties, featureBBox, featureId)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {*} The value that results from the reduction.\n * @example\n * var features = turf.featureCollection([\n *     turf.point([26, 37], {foo: 'bar'}),\n *     turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * turf.geomReduce(features, function (previousValue, currentGeometry, featureIndex, featureProperties, featureBBox, featureId) {\n *   //=previousValue\n *   //=currentGeometry\n *   //=featureIndex\n *   //=featureProperties\n *   //=featureBBox\n *   //=featureId\n *   return currentGeometry\n * });\n */\nfunction geomReduce(geojson, callback, initialValue) {\n  var previousValue = initialValue;\n  geomEach(\n    geojson,\n    function (\n      currentGeometry,\n      featureIndex,\n      featureProperties,\n      featureBBox,\n      featureId\n    ) {\n      if (featureIndex === 0 && initialValue === undefined)\n        previousValue = currentGeometry;\n      else\n        previousValue = callback(\n          previousValue,\n          currentGeometry,\n          featureIndex,\n          featureProperties,\n          featureBBox,\n          featureId\n        );\n    }\n  );\n  return previousValue;\n}\n\n/**\n * Callback for flattenEach\n *\n * @callback flattenEachCallback\n * @param {Feature} currentFeature The current flattened feature being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n */\n\n/**\n * Iterate over flattened features in any GeoJSON object, similar to\n * Array.forEach.\n *\n * @name flattenEach\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (currentFeature, featureIndex, multiFeatureIndex)\n * @example\n * var features = turf.featureCollection([\n *     turf.point([26, 37], {foo: 'bar'}),\n *     turf.multiPoint([[40, 30], [36, 53]], {hello: 'world'})\n * ]);\n *\n * turf.flattenEach(features, function (currentFeature, featureIndex, multiFeatureIndex) {\n *   //=currentFeature\n *   //=featureIndex\n *   //=multiFeatureIndex\n * });\n */\nfunction flattenEach(geojson, callback) {\n  geomEach(geojson, function (geometry, featureIndex, properties, bbox, id) {\n    // Callback for single geometry\n    var type = geometry === null ? null : geometry.type;\n    switch (type) {\n      case null:\n      case \"Point\":\n      case \"LineString\":\n      case \"Polygon\":\n        if (\n          callback(\n            helpers.feature(geometry, properties, { bbox: bbox, id: id }),\n            featureIndex,\n            0\n          ) === false\n        )\n          return false;\n        return;\n    }\n\n    var geomType;\n\n    // Callback for multi-geometry\n    switch (type) {\n      case \"MultiPoint\":\n        geomType = \"Point\";\n        break;\n      case \"MultiLineString\":\n        geomType = \"LineString\";\n        break;\n      case \"MultiPolygon\":\n        geomType = \"Polygon\";\n        break;\n    }\n\n    for (\n      var multiFeatureIndex = 0;\n      multiFeatureIndex < geometry.coordinates.length;\n      multiFeatureIndex++\n    ) {\n      var coordinate = geometry.coordinates[multiFeatureIndex];\n      var geom = {\n        type: geomType,\n        coordinates: coordinate,\n      };\n      if (\n        callback(helpers.feature(geom, properties), featureIndex, multiFeatureIndex) ===\n        false\n      )\n        return false;\n    }\n  });\n}\n\n/**\n * Callback for flattenReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n *  - The previousValue argument is initialValue.\n *  - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n *  - The previousValue argument is the value of the first element present in the array.\n *  - The currentValue argument is the value of the second element present in the array.\n *\n * @callback flattenReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Feature} currentFeature The current Feature being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n */\n\n/**\n * Reduce flattened features in any GeoJSON object, similar to Array.reduce().\n *\n * @name flattenReduce\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (previousValue, currentFeature, featureIndex, multiFeatureIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {*} The value that results from the reduction.\n * @example\n * var features = turf.featureCollection([\n *     turf.point([26, 37], {foo: 'bar'}),\n *     turf.multiPoint([[40, 30], [36, 53]], {hello: 'world'})\n * ]);\n *\n * turf.flattenReduce(features, function (previousValue, currentFeature, featureIndex, multiFeatureIndex) {\n *   //=previousValue\n *   //=currentFeature\n *   //=featureIndex\n *   //=multiFeatureIndex\n *   return currentFeature\n * });\n */\nfunction flattenReduce(geojson, callback, initialValue) {\n  var previousValue = initialValue;\n  flattenEach(\n    geojson,\n    function (currentFeature, featureIndex, multiFeatureIndex) {\n      if (\n        featureIndex === 0 &&\n        multiFeatureIndex === 0 &&\n        initialValue === undefined\n      )\n        previousValue = currentFeature;\n      else\n        previousValue = callback(\n          previousValue,\n          currentFeature,\n          featureIndex,\n          multiFeatureIndex\n        );\n    }\n  );\n  return previousValue;\n}\n\n/**\n * Callback for segmentEach\n *\n * @callback segmentEachCallback\n * @param {Feature<LineString>} currentSegment The current Segment being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n * @param {number} geometryIndex The current index of the Geometry being processed.\n * @param {number} segmentIndex The current index of the Segment being processed.\n * @returns {void}\n */\n\n/**\n * Iterate over 2-vertex line segment in any GeoJSON object, similar to Array.forEach()\n * (Multi)Point geometries do not contain segments therefore they are ignored during this operation.\n *\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON\n * @param {Function} callback a method that takes (currentSegment, featureIndex, multiFeatureIndex, geometryIndex, segmentIndex)\n * @returns {void}\n * @example\n * var polygon = turf.polygon([[[-50, 5], [-40, -10], [-50, -10], [-40, 5], [-50, 5]]]);\n *\n * // Iterate over GeoJSON by 2-vertex segments\n * turf.segmentEach(polygon, function (currentSegment, featureIndex, multiFeatureIndex, geometryIndex, segmentIndex) {\n *   //=currentSegment\n *   //=featureIndex\n *   //=multiFeatureIndex\n *   //=geometryIndex\n *   //=segmentIndex\n * });\n *\n * // Calculate the total number of segments\n * var total = 0;\n * turf.segmentEach(polygon, function () {\n *     total++;\n * });\n */\nfunction segmentEach(geojson, callback) {\n  flattenEach(geojson, function (feature, featureIndex, multiFeatureIndex) {\n    var segmentIndex = 0;\n\n    // Exclude null Geometries\n    if (!feature.geometry) return;\n    // (Multi)Point geometries do not contain segments therefore they are ignored during this operation.\n    var type = feature.geometry.type;\n    if (type === \"Point\" || type === \"MultiPoint\") return;\n\n    // Generate 2-vertex line segments\n    var previousCoords;\n    var previousFeatureIndex = 0;\n    var previousMultiIndex = 0;\n    var prevGeomIndex = 0;\n    if (\n      coordEach(\n        feature,\n        function (\n          currentCoord,\n          coordIndex,\n          featureIndexCoord,\n          multiPartIndexCoord,\n          geometryIndex\n        ) {\n          // Simulating a meta.coordReduce() since `reduce` operations cannot be stopped by returning `false`\n          if (\n            previousCoords === undefined ||\n            featureIndex > previousFeatureIndex ||\n            multiPartIndexCoord > previousMultiIndex ||\n            geometryIndex > prevGeomIndex\n          ) {\n            previousCoords = currentCoord;\n            previousFeatureIndex = featureIndex;\n            previousMultiIndex = multiPartIndexCoord;\n            prevGeomIndex = geometryIndex;\n            segmentIndex = 0;\n            return;\n          }\n          var currentSegment = helpers.lineString(\n            [previousCoords, currentCoord],\n            feature.properties\n          );\n          if (\n            callback(\n              currentSegment,\n              featureIndex,\n              multiFeatureIndex,\n              geometryIndex,\n              segmentIndex\n            ) === false\n          )\n            return false;\n          segmentIndex++;\n          previousCoords = currentCoord;\n        }\n      ) === false\n    )\n      return false;\n  });\n}\n\n/**\n * Callback for segmentReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n *  - The previousValue argument is initialValue.\n *  - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n *  - The previousValue argument is the value of the first element present in the array.\n *  - The currentValue argument is the value of the second element present in the array.\n *\n * @callback segmentReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Feature<LineString>} currentSegment The current Segment being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n * @param {number} geometryIndex The current index of the Geometry being processed.\n * @param {number} segmentIndex The current index of the Segment being processed.\n */\n\n/**\n * Reduce 2-vertex line segment in any GeoJSON object, similar to Array.reduce()\n * (Multi)Point geometries do not contain segments therefore they are ignored during this operation.\n *\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON\n * @param {Function} callback a method that takes (previousValue, currentSegment, currentIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {void}\n * @example\n * var polygon = turf.polygon([[[-50, 5], [-40, -10], [-50, -10], [-40, 5], [-50, 5]]]);\n *\n * // Iterate over GeoJSON by 2-vertex segments\n * turf.segmentReduce(polygon, function (previousSegment, currentSegment, featureIndex, multiFeatureIndex, geometryIndex, segmentIndex) {\n *   //= previousSegment\n *   //= currentSegment\n *   //= featureIndex\n *   //= multiFeatureIndex\n *   //= geometryIndex\n *   //= segmentIndex\n *   return currentSegment\n * });\n *\n * // Calculate the total number of segments\n * var initialValue = 0\n * var total = turf.segmentReduce(polygon, function (previousValue) {\n *     previousValue++;\n *     return previousValue;\n * }, initialValue);\n */\nfunction segmentReduce(geojson, callback, initialValue) {\n  var previousValue = initialValue;\n  var started = false;\n  segmentEach(\n    geojson,\n    function (\n      currentSegment,\n      featureIndex,\n      multiFeatureIndex,\n      geometryIndex,\n      segmentIndex\n    ) {\n      if (started === false && initialValue === undefined)\n        previousValue = currentSegment;\n      else\n        previousValue = callback(\n          previousValue,\n          currentSegment,\n          featureIndex,\n          multiFeatureIndex,\n          geometryIndex,\n          segmentIndex\n        );\n      started = true;\n    }\n  );\n  return previousValue;\n}\n\n/**\n * Callback for lineEach\n *\n * @callback lineEachCallback\n * @param {Feature<LineString>} currentLine The current LineString|LinearRing being processed\n * @param {number} featureIndex The current index of the Feature being processed\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed\n * @param {number} geometryIndex The current index of the Geometry being processed\n */\n\n/**\n * Iterate over line or ring coordinates in LineString, Polygon, MultiLineString, MultiPolygon Features or Geometries,\n * similar to Array.forEach.\n *\n * @name lineEach\n * @param {Geometry|Feature<LineString|Polygon|MultiLineString|MultiPolygon>} geojson object\n * @param {Function} callback a method that takes (currentLine, featureIndex, multiFeatureIndex, geometryIndex)\n * @example\n * var multiLine = turf.multiLineString([\n *   [[26, 37], [35, 45]],\n *   [[36, 53], [38, 50], [41, 55]]\n * ]);\n *\n * turf.lineEach(multiLine, function (currentLine, featureIndex, multiFeatureIndex, geometryIndex) {\n *   //=currentLine\n *   //=featureIndex\n *   //=multiFeatureIndex\n *   //=geometryIndex\n * });\n */\nfunction lineEach(geojson, callback) {\n  // validation\n  if (!geojson) throw new Error(\"geojson is required\");\n\n  flattenEach(geojson, function (feature, featureIndex, multiFeatureIndex) {\n    if (feature.geometry === null) return;\n    var type = feature.geometry.type;\n    var coords = feature.geometry.coordinates;\n    switch (type) {\n      case \"LineString\":\n        if (callback(feature, featureIndex, multiFeatureIndex, 0, 0) === false)\n          return false;\n        break;\n      case \"Polygon\":\n        for (\n          var geometryIndex = 0;\n          geometryIndex < coords.length;\n          geometryIndex++\n        ) {\n          if (\n            callback(\n              helpers.lineString(coords[geometryIndex], feature.properties),\n              featureIndex,\n              multiFeatureIndex,\n              geometryIndex\n            ) === false\n          )\n            return false;\n        }\n        break;\n    }\n  });\n}\n\n/**\n * Callback for lineReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n *  - The previousValue argument is initialValue.\n *  - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n *  - The previousValue argument is the value of the first element present in the array.\n *  - The currentValue argument is the value of the second element present in the array.\n *\n * @callback lineReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Feature<LineString>} currentLine The current LineString|LinearRing being processed.\n * @param {number} featureIndex The current index of the Feature being processed\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed\n * @param {number} geometryIndex The current index of the Geometry being processed\n */\n\n/**\n * Reduce features in any GeoJSON object, similar to Array.reduce().\n *\n * @name lineReduce\n * @param {Geometry|Feature<LineString|Polygon|MultiLineString|MultiPolygon>} geojson object\n * @param {Function} callback a method that takes (previousValue, currentLine, featureIndex, multiFeatureIndex, geometryIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {*} The value that results from the reduction.\n * @example\n * var multiPoly = turf.multiPolygon([\n *   turf.polygon([[[12,48],[2,41],[24,38],[12,48]], [[9,44],[13,41],[13,45],[9,44]]]),\n *   turf.polygon([[[5, 5], [0, 0], [2, 2], [4, 4], [5, 5]]])\n * ]);\n *\n * turf.lineReduce(multiPoly, function (previousValue, currentLine, featureIndex, multiFeatureIndex, geometryIndex) {\n *   //=previousValue\n *   //=currentLine\n *   //=featureIndex\n *   //=multiFeatureIndex\n *   //=geometryIndex\n *   return currentLine\n * });\n */\nfunction lineReduce(geojson, callback, initialValue) {\n  var previousValue = initialValue;\n  lineEach(\n    geojson,\n    function (currentLine, featureIndex, multiFeatureIndex, geometryIndex) {\n      if (featureIndex === 0 && initialValue === undefined)\n        previousValue = currentLine;\n      else\n        previousValue = callback(\n          previousValue,\n          currentLine,\n          featureIndex,\n          multiFeatureIndex,\n          geometryIndex\n        );\n    }\n  );\n  return previousValue;\n}\n\n/**\n * Finds a particular 2-vertex LineString Segment from a GeoJSON using `@turf/meta` indexes.\n *\n * Negative indexes are permitted.\n * Point & MultiPoint will always return null.\n *\n * @param {FeatureCollection|Feature|Geometry} geojson Any GeoJSON Feature or Geometry\n * @param {Object} [options={}] Optional parameters\n * @param {number} [options.featureIndex=0] Feature Index\n * @param {number} [options.multiFeatureIndex=0] Multi-Feature Index\n * @param {number} [options.geometryIndex=0] Geometry Index\n * @param {number} [options.segmentIndex=0] Segment Index\n * @param {Object} [options.properties={}] Translate Properties to output LineString\n * @param {BBox} [options.bbox={}] Translate BBox to output LineString\n * @param {number|string} [options.id={}] Translate Id to output LineString\n * @returns {Feature<LineString>} 2-vertex GeoJSON Feature LineString\n * @example\n * var multiLine = turf.multiLineString([\n *     [[10, 10], [50, 30], [30, 40]],\n *     [[-10, -10], [-50, -30], [-30, -40]]\n * ]);\n *\n * // First Segment (defaults are 0)\n * turf.findSegment(multiLine);\n * // => Feature<LineString<[[10, 10], [50, 30]]>>\n *\n * // First Segment of 2nd Multi Feature\n * turf.findSegment(multiLine, {multiFeatureIndex: 1});\n * // => Feature<LineString<[[-10, -10], [-50, -30]]>>\n *\n * // Last Segment of Last Multi Feature\n * turf.findSegment(multiLine, {multiFeatureIndex: -1, segmentIndex: -1});\n * // => Feature<LineString<[[-50, -30], [-30, -40]]>>\n */\nfunction findSegment(geojson, options) {\n  // Optional Parameters\n  options = options || {};\n  if (!helpers.isObject(options)) throw new Error(\"options is invalid\");\n  var featureIndex = options.featureIndex || 0;\n  var multiFeatureIndex = options.multiFeatureIndex || 0;\n  var geometryIndex = options.geometryIndex || 0;\n  var segmentIndex = options.segmentIndex || 0;\n\n  // Find FeatureIndex\n  var properties = options.properties;\n  var geometry;\n\n  switch (geojson.type) {\n    case \"FeatureCollection\":\n      if (featureIndex < 0)\n        featureIndex = geojson.features.length + featureIndex;\n      properties = properties || geojson.features[featureIndex].properties;\n      geometry = geojson.features[featureIndex].geometry;\n      break;\n    case \"Feature\":\n      properties = properties || geojson.properties;\n      geometry = geojson.geometry;\n      break;\n    case \"Point\":\n    case \"MultiPoint\":\n      return null;\n    case \"LineString\":\n    case \"Polygon\":\n    case \"MultiLineString\":\n    case \"MultiPolygon\":\n      geometry = geojson;\n      break;\n    default:\n      throw new Error(\"geojson is invalid\");\n  }\n\n  // Find SegmentIndex\n  if (geometry === null) return null;\n  var coords = geometry.coordinates;\n  switch (geometry.type) {\n    case \"Point\":\n    case \"MultiPoint\":\n      return null;\n    case \"LineString\":\n      if (segmentIndex < 0) segmentIndex = coords.length + segmentIndex - 1;\n      return helpers.lineString(\n        [coords[segmentIndex], coords[segmentIndex + 1]],\n        properties,\n        options\n      );\n    case \"Polygon\":\n      if (geometryIndex < 0) geometryIndex = coords.length + geometryIndex;\n      if (segmentIndex < 0)\n        segmentIndex = coords[geometryIndex].length + segmentIndex - 1;\n      return helpers.lineString(\n        [\n          coords[geometryIndex][segmentIndex],\n          coords[geometryIndex][segmentIndex + 1],\n        ],\n        properties,\n        options\n      );\n    case \"MultiLineString\":\n      if (multiFeatureIndex < 0)\n        multiFeatureIndex = coords.length + multiFeatureIndex;\n      if (segmentIndex < 0)\n        segmentIndex = coords[multiFeatureIndex].length + segmentIndex - 1;\n      return helpers.lineString(\n        [\n          coords[multiFeatureIndex][segmentIndex],\n          coords[multiFeatureIndex][segmentIndex + 1],\n        ],\n        properties,\n        options\n      );\n    case \"MultiPolygon\":\n      if (multiFeatureIndex < 0)\n        multiFeatureIndex = coords.length + multiFeatureIndex;\n      if (geometryIndex < 0)\n        geometryIndex = coords[multiFeatureIndex].length + geometryIndex;\n      if (segmentIndex < 0)\n        segmentIndex =\n          coords[multiFeatureIndex][geometryIndex].length - segmentIndex - 1;\n      return helpers.lineString(\n        [\n          coords[multiFeatureIndex][geometryIndex][segmentIndex],\n          coords[multiFeatureIndex][geometryIndex][segmentIndex + 1],\n        ],\n        properties,\n        options\n      );\n  }\n  throw new Error(\"geojson is invalid\");\n}\n\n/**\n * Finds a particular Point from a GeoJSON using `@turf/meta` indexes.\n *\n * Negative indexes are permitted.\n *\n * @param {FeatureCollection|Feature|Geometry} geojson Any GeoJSON Feature or Geometry\n * @param {Object} [options={}] Optional parameters\n * @param {number} [options.featureIndex=0] Feature Index\n * @param {number} [options.multiFeatureIndex=0] Multi-Feature Index\n * @param {number} [options.geometryIndex=0] Geometry Index\n * @param {number} [options.coordIndex=0] Coord Index\n * @param {Object} [options.properties={}] Translate Properties to output Point\n * @param {BBox} [options.bbox={}] Translate BBox to output Point\n * @param {number|string} [options.id={}] Translate Id to output Point\n * @returns {Feature<Point>} 2-vertex GeoJSON Feature Point\n * @example\n * var multiLine = turf.multiLineString([\n *     [[10, 10], [50, 30], [30, 40]],\n *     [[-10, -10], [-50, -30], [-30, -40]]\n * ]);\n *\n * // First Segment (defaults are 0)\n * turf.findPoint(multiLine);\n * // => Feature<Point<[10, 10]>>\n *\n * // First Segment of the 2nd Multi-Feature\n * turf.findPoint(multiLine, {multiFeatureIndex: 1});\n * // => Feature<Point<[-10, -10]>>\n *\n * // Last Segment of last Multi-Feature\n * turf.findPoint(multiLine, {multiFeatureIndex: -1, coordIndex: -1});\n * // => Feature<Point<[-30, -40]>>\n */\nfunction findPoint(geojson, options) {\n  // Optional Parameters\n  options = options || {};\n  if (!helpers.isObject(options)) throw new Error(\"options is invalid\");\n  var featureIndex = options.featureIndex || 0;\n  var multiFeatureIndex = options.multiFeatureIndex || 0;\n  var geometryIndex = options.geometryIndex || 0;\n  var coordIndex = options.coordIndex || 0;\n\n  // Find FeatureIndex\n  var properties = options.properties;\n  var geometry;\n\n  switch (geojson.type) {\n    case \"FeatureCollection\":\n      if (featureIndex < 0)\n        featureIndex = geojson.features.length + featureIndex;\n      properties = properties || geojson.features[featureIndex].properties;\n      geometry = geojson.features[featureIndex].geometry;\n      break;\n    case \"Feature\":\n      properties = properties || geojson.properties;\n      geometry = geojson.geometry;\n      break;\n    case \"Point\":\n    case \"MultiPoint\":\n      return null;\n    case \"LineString\":\n    case \"Polygon\":\n    case \"MultiLineString\":\n    case \"MultiPolygon\":\n      geometry = geojson;\n      break;\n    default:\n      throw new Error(\"geojson is invalid\");\n  }\n\n  // Find Coord Index\n  if (geometry === null) return null;\n  var coords = geometry.coordinates;\n  switch (geometry.type) {\n    case \"Point\":\n      return helpers.point(coords, properties, options);\n    case \"MultiPoint\":\n      if (multiFeatureIndex < 0)\n        multiFeatureIndex = coords.length + multiFeatureIndex;\n      return helpers.point(coords[multiFeatureIndex], properties, options);\n    case \"LineString\":\n      if (coordIndex < 0) coordIndex = coords.length + coordIndex;\n      return helpers.point(coords[coordIndex], properties, options);\n    case \"Polygon\":\n      if (geometryIndex < 0) geometryIndex = coords.length + geometryIndex;\n      if (coordIndex < 0)\n        coordIndex = coords[geometryIndex].length + coordIndex;\n      return helpers.point(coords[geometryIndex][coordIndex], properties, options);\n    case \"MultiLineString\":\n      if (multiFeatureIndex < 0)\n        multiFeatureIndex = coords.length + multiFeatureIndex;\n      if (coordIndex < 0)\n        coordIndex = coords[multiFeatureIndex].length + coordIndex;\n      return helpers.point(coords[multiFeatureIndex][coordIndex], properties, options);\n    case \"MultiPolygon\":\n      if (multiFeatureIndex < 0)\n        multiFeatureIndex = coords.length + multiFeatureIndex;\n      if (geometryIndex < 0)\n        geometryIndex = coords[multiFeatureIndex].length + geometryIndex;\n      if (coordIndex < 0)\n        coordIndex =\n          coords[multiFeatureIndex][geometryIndex].length - coordIndex;\n      return helpers.point(\n        coords[multiFeatureIndex][geometryIndex][coordIndex],\n        properties,\n        options\n      );\n  }\n  throw new Error(\"geojson is invalid\");\n}\n\nexports.coordAll = coordAll;\nexports.coordEach = coordEach;\nexports.coordReduce = coordReduce;\nexports.featureEach = featureEach;\nexports.featureReduce = featureReduce;\nexports.findPoint = findPoint;\nexports.findSegment = findSegment;\nexports.flattenEach = flattenEach;\nexports.flattenReduce = flattenReduce;\nexports.geomEach = geomEach;\nexports.geomReduce = geomReduce;\nexports.lineEach = lineEach;\nexports.lineReduce = lineReduce;\nexports.propEach = propEach;\nexports.propReduce = propReduce;\nexports.segmentEach = segmentEach;\nexports.segmentReduce = segmentReduce;\n","'use strict';\n\nvar clone = require('@turf/clone');\nvar center = require('@turf/center');\nvar centroid = require('@turf/centroid');\nvar turfBBox = require('@turf/bbox');\nvar rhumbBearing = require('@turf/rhumb-bearing');\nvar rhumbDistance = require('@turf/rhumb-distance');\nvar rhumbDestination = require('@turf/rhumb-destination');\nvar meta = require('@turf/meta');\nvar helpers = require('@turf/helpers');\nvar invariant = require('@turf/invariant');\n\nfunction _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }\n\nvar clone__default = /*#__PURE__*/_interopDefaultLegacy(clone);\nvar center__default = /*#__PURE__*/_interopDefaultLegacy(center);\nvar centroid__default = /*#__PURE__*/_interopDefaultLegacy(centroid);\nvar turfBBox__default = /*#__PURE__*/_interopDefaultLegacy(turfBBox);\nvar rhumbBearing__default = /*#__PURE__*/_interopDefaultLegacy(rhumbBearing);\nvar rhumbDistance__default = /*#__PURE__*/_interopDefaultLegacy(rhumbDistance);\nvar rhumbDestination__default = /*#__PURE__*/_interopDefaultLegacy(rhumbDestination);\n\n/**\n * Scale a GeoJSON from a given point by a factor of scaling (ex: factor=2 would make the GeoJSON 200% larger).\n * If a FeatureCollection is provided, the origin point will be calculated based on each individual Feature.\n *\n * @name transformScale\n * @param {GeoJSON} geojson GeoJSON to be scaled\n * @param {number} factor of scaling, positive or negative values greater than 0\n * @param {Object} [options={}] Optional parameters\n * @param {string|Coord} [options.origin='centroid'] Point from which the scaling will occur (string options: sw/se/nw/ne/center/centroid)\n * @param {boolean} [options.mutate=false] allows GeoJSON input to be mutated (significant performance increase if true)\n * @returns {GeoJSON} scaled GeoJSON\n * @example\n * var poly = turf.polygon([[[0,29],[3.5,29],[2.5,32],[0,29]]]);\n * var scaledPoly = turf.transformScale(poly, 3);\n *\n * //addToMap\n * var addToMap = [poly, scaledPoly];\n * scaledPoly.properties = {stroke: '#F00', 'stroke-width': 4};\n */\nfunction transformScale(geojson, factor, options) {\n  // Optional parameters\n  options = options || {};\n  if (!helpers.isObject(options)) throw new Error(\"options is invalid\");\n  var origin = options.origin;\n  var mutate = options.mutate;\n\n  // Input validation\n  if (!geojson) throw new Error(\"geojson required\");\n  if (typeof factor !== \"number\" || factor === 0)\n    throw new Error(\"invalid factor\");\n  var originIsPoint = Array.isArray(origin) || typeof origin === \"object\";\n\n  // Clone geojson to avoid side effects\n  if (mutate !== true) geojson = clone__default['default'](geojson);\n\n  // Scale each Feature separately\n  if (geojson.type === \"FeatureCollection\" && !originIsPoint) {\n    meta.featureEach(geojson, function (feature, index) {\n      geojson.features[index] = scale(feature, factor, origin);\n    });\n    return geojson;\n  }\n  // Scale Feature/Geometry\n  return scale(geojson, factor, origin);\n}\n\n/**\n * Scale Feature/Geometry\n *\n * @private\n * @param {Feature|Geometry} feature GeoJSON Feature/Geometry\n * @param {number} factor of scaling, positive or negative values greater than 0\n * @param {string|Coord} [origin=\"centroid\"] Point from which the scaling will occur (string options: sw/se/nw/ne/center/centroid)\n * @returns {Feature|Geometry} scaled GeoJSON Feature/Geometry\n */\nfunction scale(feature, factor, origin) {\n  // Default params\n  var isPoint = invariant.getType(feature) === \"Point\";\n  origin = defineOrigin(feature, origin);\n\n  // Shortcut no-scaling\n  if (factor === 1 || isPoint) return feature;\n\n  // Scale each coordinate\n  meta.coordEach(feature, function (coord) {\n    var originalDistance = rhumbDistance__default['default'](origin, coord);\n    var bearing = rhumbBearing__default['default'](origin, coord);\n    var newDistance = originalDistance * factor;\n    var newCoord = invariant.getCoords(rhumbDestination__default['default'](origin, newDistance, bearing));\n    coord[0] = newCoord[0];\n    coord[1] = newCoord[1];\n    if (coord.length === 3) coord[2] *= factor;\n  });\n\n  return feature;\n}\n\n/**\n * Define Origin\n *\n * @private\n * @param {GeoJSON} geojson GeoJSON\n * @param {string|Coord} origin sw/se/nw/ne/center/centroid\n * @returns {Feature<Point>} Point origin\n */\nfunction defineOrigin(geojson, origin) {\n  // Default params\n  if (origin === undefined || origin === null) origin = \"centroid\";\n\n  // Input Coord\n  if (Array.isArray(origin) || typeof origin === \"object\")\n    return invariant.getCoord(origin);\n\n  // Define BBox\n  var bbox = geojson.bbox ? geojson.bbox : turfBBox__default['default'](geojson);\n  var west = bbox[0];\n  var south = bbox[1];\n  var east = bbox[2];\n  var north = bbox[3];\n\n  switch (origin) {\n    case \"sw\":\n    case \"southwest\":\n    case \"westsouth\":\n    case \"bottomleft\":\n      return helpers.point([west, south]);\n    case \"se\":\n    case \"southeast\":\n    case \"eastsouth\":\n    case \"bottomright\":\n      return helpers.point([east, south]);\n    case \"nw\":\n    case \"northwest\":\n    case \"westnorth\":\n    case \"topleft\":\n      return helpers.point([west, north]);\n    case \"ne\":\n    case \"northeast\":\n    case \"eastnorth\":\n    case \"topright\":\n      return helpers.point([east, north]);\n    case \"center\":\n      return center__default['default'](geojson);\n    case undefined:\n    case null:\n    case \"centroid\":\n      return centroid__default['default'](geojson);\n    default:\n      throw new Error(\"invalid origin\");\n  }\n}\n\nmodule.exports = transformScale;\nmodule.exports.default = transformScale;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * Returns a cloned copy of the passed GeoJSON Object, including possible 'Foreign Members'.\n * ~3-5x faster than the common JSON.parse + JSON.stringify combo method.\n *\n * @name clone\n * @param {GeoJSON} geojson GeoJSON Object\n * @returns {GeoJSON} cloned GeoJSON Object\n * @example\n * var line = turf.lineString([[-74, 40], [-78, 42], [-82, 35]], {color: 'red'});\n *\n * var lineCloned = turf.clone(line);\n */\nfunction clone(geojson) {\n    if (!geojson) {\n        throw new Error(\"geojson is required\");\n    }\n    switch (geojson.type) {\n        case \"Feature\":\n            return cloneFeature(geojson);\n        case \"FeatureCollection\":\n            return cloneFeatureCollection(geojson);\n        case \"Point\":\n        case \"LineString\":\n        case \"Polygon\":\n        case \"MultiPoint\":\n        case \"MultiLineString\":\n        case \"MultiPolygon\":\n        case \"GeometryCollection\":\n            return cloneGeometry(geojson);\n        default:\n            throw new Error(\"unknown GeoJSON type\");\n    }\n}\n/**\n * Clone Feature\n *\n * @private\n * @param {Feature<any>} geojson GeoJSON Feature\n * @returns {Feature<any>} cloned Feature\n */\nfunction cloneFeature(geojson) {\n    var cloned = { type: \"Feature\" };\n    // Preserve Foreign Members\n    Object.keys(geojson).forEach(function (key) {\n        switch (key) {\n            case \"type\":\n            case \"properties\":\n            case \"geometry\":\n                return;\n            default:\n                cloned[key] = geojson[key];\n        }\n    });\n    // Add properties & geometry last\n    cloned.properties = cloneProperties(geojson.properties);\n    cloned.geometry = cloneGeometry(geojson.geometry);\n    return cloned;\n}\n/**\n * Clone Properties\n *\n * @private\n * @param {Object} properties GeoJSON Properties\n * @returns {Object} cloned Properties\n */\nfunction cloneProperties(properties) {\n    var cloned = {};\n    if (!properties) {\n        return cloned;\n    }\n    Object.keys(properties).forEach(function (key) {\n        var value = properties[key];\n        if (typeof value === \"object\") {\n            if (value === null) {\n                // handle null\n                cloned[key] = null;\n            }\n            else if (Array.isArray(value)) {\n                // handle Array\n                cloned[key] = value.map(function (item) {\n                    return item;\n                });\n            }\n            else {\n                // handle generic Object\n                cloned[key] = cloneProperties(value);\n            }\n        }\n        else {\n            cloned[key] = value;\n        }\n    });\n    return cloned;\n}\n/**\n * Clone Feature Collection\n *\n * @private\n * @param {FeatureCollection<any>} geojson GeoJSON Feature Collection\n * @returns {FeatureCollection<any>} cloned Feature Collection\n */\nfunction cloneFeatureCollection(geojson) {\n    var cloned = { type: \"FeatureCollection\" };\n    // Preserve Foreign Members\n    Object.keys(geojson).forEach(function (key) {\n        switch (key) {\n            case \"type\":\n            case \"features\":\n                return;\n            default:\n                cloned[key] = geojson[key];\n        }\n    });\n    // Add features\n    cloned.features = geojson.features.map(function (feature) {\n        return cloneFeature(feature);\n    });\n    return cloned;\n}\n/**\n * Clone Geometry\n *\n * @private\n * @param {Geometry<any>} geometry GeoJSON Geometry\n * @returns {Geometry<any>} cloned Geometry\n */\nfunction cloneGeometry(geometry) {\n    var geom = { type: geometry.type };\n    if (geometry.bbox) {\n        geom.bbox = geometry.bbox;\n    }\n    if (geometry.type === \"GeometryCollection\") {\n        geom.geometries = geometry.geometries.map(function (g) {\n            return cloneGeometry(g);\n        });\n        return geom;\n    }\n    geom.coordinates = deepSlice(geometry.coordinates);\n    return geom;\n}\n/**\n * Deep Slice coordinates\n *\n * @private\n * @param {Coordinates} coords Coordinates\n * @returns {Coordinates} all coordinates sliced\n */\nfunction deepSlice(coords) {\n    var cloned = coords;\n    if (typeof cloned[0] !== \"object\") {\n        return cloned.slice();\n    }\n    return cloned.map(function (coord) {\n        return deepSlice(coord);\n    });\n}\nexports.default = clone;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * @module helpers\n */\n/**\n * Earth Radius used with the Harvesine formula and approximates using a spherical (non-ellipsoid) Earth.\n *\n * @memberof helpers\n * @type {number}\n */\nexports.earthRadius = 6371008.8;\n/**\n * Unit of measurement factors using a spherical (non-ellipsoid) earth radius.\n *\n * @memberof helpers\n * @type {Object}\n */\nexports.factors = {\n    centimeters: exports.earthRadius * 100,\n    centimetres: exports.earthRadius * 100,\n    degrees: exports.earthRadius / 111325,\n    feet: exports.earthRadius * 3.28084,\n    inches: exports.earthRadius * 39.37,\n    kilometers: exports.earthRadius / 1000,\n    kilometres: exports.earthRadius / 1000,\n    meters: exports.earthRadius,\n    metres: exports.earthRadius,\n    miles: exports.earthRadius / 1609.344,\n    millimeters: exports.earthRadius * 1000,\n    millimetres: exports.earthRadius * 1000,\n    nauticalmiles: exports.earthRadius / 1852,\n    radians: 1,\n    yards: exports.earthRadius * 1.0936,\n};\n/**\n * Units of measurement factors based on 1 meter.\n *\n * @memberof helpers\n * @type {Object}\n */\nexports.unitsFactors = {\n    centimeters: 100,\n    centimetres: 100,\n    degrees: 1 / 111325,\n    feet: 3.28084,\n    inches: 39.37,\n    kilometers: 1 / 1000,\n    kilometres: 1 / 1000,\n    meters: 1,\n    metres: 1,\n    miles: 1 / 1609.344,\n    millimeters: 1000,\n    millimetres: 1000,\n    nauticalmiles: 1 / 1852,\n    radians: 1 / exports.earthRadius,\n    yards: 1.0936133,\n};\n/**\n * Area of measurement factors based on 1 square meter.\n *\n * @memberof helpers\n * @type {Object}\n */\nexports.areaFactors = {\n    acres: 0.000247105,\n    centimeters: 10000,\n    centimetres: 10000,\n    feet: 10.763910417,\n    hectares: 0.0001,\n    inches: 1550.003100006,\n    kilometers: 0.000001,\n    kilometres: 0.000001,\n    meters: 1,\n    metres: 1,\n    miles: 3.86e-7,\n    millimeters: 1000000,\n    millimetres: 1000000,\n    yards: 1.195990046,\n};\n/**\n * Wraps a GeoJSON {@link Geometry} in a GeoJSON {@link Feature}.\n *\n * @name feature\n * @param {Geometry} geometry input geometry\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} a GeoJSON Feature\n * @example\n * var geometry = {\n *   \"type\": \"Point\",\n *   \"coordinates\": [110, 50]\n * };\n *\n * var feature = turf.feature(geometry);\n *\n * //=feature\n */\nfunction feature(geom, properties, options) {\n    if (options === void 0) { options = {}; }\n    var feat = { type: \"Feature\" };\n    if (options.id === 0 || options.id) {\n        feat.id = options.id;\n    }\n    if (options.bbox) {\n        feat.bbox = options.bbox;\n    }\n    feat.properties = properties || {};\n    feat.geometry = geom;\n    return feat;\n}\nexports.feature = feature;\n/**\n * Creates a GeoJSON {@link Geometry} from a Geometry string type & coordinates.\n * For GeometryCollection type use `helpers.geometryCollection`\n *\n * @name geometry\n * @param {string} type Geometry Type\n * @param {Array<any>} coordinates Coordinates\n * @param {Object} [options={}] Optional Parameters\n * @returns {Geometry} a GeoJSON Geometry\n * @example\n * var type = \"Point\";\n * var coordinates = [110, 50];\n * var geometry = turf.geometry(type, coordinates);\n * // => geometry\n */\nfunction geometry(type, coordinates, _options) {\n    if (_options === void 0) { _options = {}; }\n    switch (type) {\n        case \"Point\":\n            return point(coordinates).geometry;\n        case \"LineString\":\n            return lineString(coordinates).geometry;\n        case \"Polygon\":\n            return polygon(coordinates).geometry;\n        case \"MultiPoint\":\n            return multiPoint(coordinates).geometry;\n        case \"MultiLineString\":\n            return multiLineString(coordinates).geometry;\n        case \"MultiPolygon\":\n            return multiPolygon(coordinates).geometry;\n        default:\n            throw new Error(type + \" is invalid\");\n    }\n}\nexports.geometry = geometry;\n/**\n * Creates a {@link Point} {@link Feature} from a Position.\n *\n * @name point\n * @param {Array<number>} coordinates longitude, latitude position (each in decimal degrees)\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<Point>} a Point feature\n * @example\n * var point = turf.point([-75.343, 39.984]);\n *\n * //=point\n */\nfunction point(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    if (!coordinates) {\n        throw new Error(\"coordinates is required\");\n    }\n    if (!Array.isArray(coordinates)) {\n        throw new Error(\"coordinates must be an Array\");\n    }\n    if (coordinates.length < 2) {\n        throw new Error(\"coordinates must be at least 2 numbers long\");\n    }\n    if (!isNumber(coordinates[0]) || !isNumber(coordinates[1])) {\n        throw new Error(\"coordinates must contain numbers\");\n    }\n    var geom = {\n        type: \"Point\",\n        coordinates: coordinates,\n    };\n    return feature(geom, properties, options);\n}\nexports.point = point;\n/**\n * Creates a {@link Point} {@link FeatureCollection} from an Array of Point coordinates.\n *\n * @name points\n * @param {Array<Array<number>>} coordinates an array of Points\n * @param {Object} [properties={}] Translate these properties to each Feature\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north]\n * associated with the FeatureCollection\n * @param {string|number} [options.id] Identifier associated with the FeatureCollection\n * @returns {FeatureCollection<Point>} Point Feature\n * @example\n * var points = turf.points([\n *   [-75, 39],\n *   [-80, 45],\n *   [-78, 50]\n * ]);\n *\n * //=points\n */\nfunction points(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    return featureCollection(coordinates.map(function (coords) {\n        return point(coords, properties);\n    }), options);\n}\nexports.points = points;\n/**\n * Creates a {@link Polygon} {@link Feature} from an Array of LinearRings.\n *\n * @name polygon\n * @param {Array<Array<Array<number>>>} coordinates an array of LinearRings\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<Polygon>} Polygon Feature\n * @example\n * var polygon = turf.polygon([[[-5, 52], [-4, 56], [-2, 51], [-7, 54], [-5, 52]]], { name: 'poly1' });\n *\n * //=polygon\n */\nfunction polygon(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    for (var _i = 0, coordinates_1 = coordinates; _i < coordinates_1.length; _i++) {\n        var ring = coordinates_1[_i];\n        if (ring.length < 4) {\n            throw new Error(\"Each LinearRing of a Polygon must have 4 or more Positions.\");\n        }\n        for (var j = 0; j < ring[ring.length - 1].length; j++) {\n            // Check if first point of Polygon contains two numbers\n            if (ring[ring.length - 1][j] !== ring[0][j]) {\n                throw new Error(\"First and last Position are not equivalent.\");\n            }\n        }\n    }\n    var geom = {\n        type: \"Polygon\",\n        coordinates: coordinates,\n    };\n    return feature(geom, properties, options);\n}\nexports.polygon = polygon;\n/**\n * Creates a {@link Polygon} {@link FeatureCollection} from an Array of Polygon coordinates.\n *\n * @name polygons\n * @param {Array<Array<Array<Array<number>>>>} coordinates an array of Polygon coordinates\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the FeatureCollection\n * @returns {FeatureCollection<Polygon>} Polygon FeatureCollection\n * @example\n * var polygons = turf.polygons([\n *   [[[-5, 52], [-4, 56], [-2, 51], [-7, 54], [-5, 52]]],\n *   [[[-15, 42], [-14, 46], [-12, 41], [-17, 44], [-15, 42]]],\n * ]);\n *\n * //=polygons\n */\nfunction polygons(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    return featureCollection(coordinates.map(function (coords) {\n        return polygon(coords, properties);\n    }), options);\n}\nexports.polygons = polygons;\n/**\n * Creates a {@link LineString} {@link Feature} from an Array of Positions.\n *\n * @name lineString\n * @param {Array<Array<number>>} coordinates an array of Positions\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<LineString>} LineString Feature\n * @example\n * var linestring1 = turf.lineString([[-24, 63], [-23, 60], [-25, 65], [-20, 69]], {name: 'line 1'});\n * var linestring2 = turf.lineString([[-14, 43], [-13, 40], [-15, 45], [-10, 49]], {name: 'line 2'});\n *\n * //=linestring1\n * //=linestring2\n */\nfunction lineString(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    if (coordinates.length < 2) {\n        throw new Error(\"coordinates must be an array of two or more positions\");\n    }\n    var geom = {\n        type: \"LineString\",\n        coordinates: coordinates,\n    };\n    return feature(geom, properties, options);\n}\nexports.lineString = lineString;\n/**\n * Creates a {@link LineString} {@link FeatureCollection} from an Array of LineString coordinates.\n *\n * @name lineStrings\n * @param {Array<Array<Array<number>>>} coordinates an array of LinearRings\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north]\n * associated with the FeatureCollection\n * @param {string|number} [options.id] Identifier associated with the FeatureCollection\n * @returns {FeatureCollection<LineString>} LineString FeatureCollection\n * @example\n * var linestrings = turf.lineStrings([\n *   [[-24, 63], [-23, 60], [-25, 65], [-20, 69]],\n *   [[-14, 43], [-13, 40], [-15, 45], [-10, 49]]\n * ]);\n *\n * //=linestrings\n */\nfunction lineStrings(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    return featureCollection(coordinates.map(function (coords) {\n        return lineString(coords, properties);\n    }), options);\n}\nexports.lineStrings = lineStrings;\n/**\n * Takes one or more {@link Feature|Features} and creates a {@link FeatureCollection}.\n *\n * @name featureCollection\n * @param {Feature[]} features input features\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {FeatureCollection} FeatureCollection of Features\n * @example\n * var locationA = turf.point([-75.343, 39.984], {name: 'Location A'});\n * var locationB = turf.point([-75.833, 39.284], {name: 'Location B'});\n * var locationC = turf.point([-75.534, 39.123], {name: 'Location C'});\n *\n * var collection = turf.featureCollection([\n *   locationA,\n *   locationB,\n *   locationC\n * ]);\n *\n * //=collection\n */\nfunction featureCollection(features, options) {\n    if (options === void 0) { options = {}; }\n    var fc = { type: \"FeatureCollection\" };\n    if (options.id) {\n        fc.id = options.id;\n    }\n    if (options.bbox) {\n        fc.bbox = options.bbox;\n    }\n    fc.features = features;\n    return fc;\n}\nexports.featureCollection = featureCollection;\n/**\n * Creates a {@link Feature<MultiLineString>} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name multiLineString\n * @param {Array<Array<Array<number>>>} coordinates an array of LineStrings\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<MultiLineString>} a MultiLineString feature\n * @throws {Error} if no coordinates are passed\n * @example\n * var multiLine = turf.multiLineString([[[0,0],[10,10]]]);\n *\n * //=multiLine\n */\nfunction multiLineString(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    var geom = {\n        type: \"MultiLineString\",\n        coordinates: coordinates,\n    };\n    return feature(geom, properties, options);\n}\nexports.multiLineString = multiLineString;\n/**\n * Creates a {@link Feature<MultiPoint>} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name multiPoint\n * @param {Array<Array<number>>} coordinates an array of Positions\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<MultiPoint>} a MultiPoint feature\n * @throws {Error} if no coordinates are passed\n * @example\n * var multiPt = turf.multiPoint([[0,0],[10,10]]);\n *\n * //=multiPt\n */\nfunction multiPoint(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    var geom = {\n        type: \"MultiPoint\",\n        coordinates: coordinates,\n    };\n    return feature(geom, properties, options);\n}\nexports.multiPoint = multiPoint;\n/**\n * Creates a {@link Feature<MultiPolygon>} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name multiPolygon\n * @param {Array<Array<Array<Array<number>>>>} coordinates an array of Polygons\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<MultiPolygon>} a multipolygon feature\n * @throws {Error} if no coordinates are passed\n * @example\n * var multiPoly = turf.multiPolygon([[[[0,0],[0,10],[10,10],[10,0],[0,0]]]]);\n *\n * //=multiPoly\n *\n */\nfunction multiPolygon(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    var geom = {\n        type: \"MultiPolygon\",\n        coordinates: coordinates,\n    };\n    return feature(geom, properties, options);\n}\nexports.multiPolygon = multiPolygon;\n/**\n * Creates a {@link Feature<GeometryCollection>} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name geometryCollection\n * @param {Array<Geometry>} geometries an array of GeoJSON Geometries\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<GeometryCollection>} a GeoJSON GeometryCollection Feature\n * @example\n * var pt = turf.geometry(\"Point\", [100, 0]);\n * var line = turf.geometry(\"LineString\", [[101, 0], [102, 1]]);\n * var collection = turf.geometryCollection([pt, line]);\n *\n * // => collection\n */\nfunction geometryCollection(geometries, properties, options) {\n    if (options === void 0) { options = {}; }\n    var geom = {\n        type: \"GeometryCollection\",\n        geometries: geometries,\n    };\n    return feature(geom, properties, options);\n}\nexports.geometryCollection = geometryCollection;\n/**\n * Round number to precision\n *\n * @param {number} num Number\n * @param {number} [precision=0] Precision\n * @returns {number} rounded number\n * @example\n * turf.round(120.4321)\n * //=120\n *\n * turf.round(120.4321, 2)\n * //=120.43\n */\nfunction round(num, precision) {\n    if (precision === void 0) { precision = 0; }\n    if (precision && !(precision >= 0)) {\n        throw new Error(\"precision must be a positive number\");\n    }\n    var multiplier = Math.pow(10, precision || 0);\n    return Math.round(num * multiplier) / multiplier;\n}\nexports.round = round;\n/**\n * Convert a distance measurement (assuming a spherical Earth) from radians to a more friendly unit.\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet\n *\n * @name radiansToLength\n * @param {number} radians in radians across the sphere\n * @param {string} [units=\"kilometers\"] can be degrees, radians, miles, inches, yards, metres,\n * meters, kilometres, kilometers.\n * @returns {number} distance\n */\nfunction radiansToLength(radians, units) {\n    if (units === void 0) { units = \"kilometers\"; }\n    var factor = exports.factors[units];\n    if (!factor) {\n        throw new Error(units + \" units is invalid\");\n    }\n    return radians * factor;\n}\nexports.radiansToLength = radiansToLength;\n/**\n * Convert a distance measurement (assuming a spherical Earth) from a real-world unit into radians\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet\n *\n * @name lengthToRadians\n * @param {number} distance in real units\n * @param {string} [units=\"kilometers\"] can be degrees, radians, miles, inches, yards, metres,\n * meters, kilometres, kilometers.\n * @returns {number} radians\n */\nfunction lengthToRadians(distance, units) {\n    if (units === void 0) { units = \"kilometers\"; }\n    var factor = exports.factors[units];\n    if (!factor) {\n        throw new Error(units + \" units is invalid\");\n    }\n    return distance / factor;\n}\nexports.lengthToRadians = lengthToRadians;\n/**\n * Convert a distance measurement (assuming a spherical Earth) from a real-world unit into degrees\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, centimeters, kilometres, feet\n *\n * @name lengthToDegrees\n * @param {number} distance in real units\n * @param {string} [units=\"kilometers\"] can be degrees, radians, miles, inches, yards, metres,\n * meters, kilometres, kilometers.\n * @returns {number} degrees\n */\nfunction lengthToDegrees(distance, units) {\n    return radiansToDegrees(lengthToRadians(distance, units));\n}\nexports.lengthToDegrees = lengthToDegrees;\n/**\n * Converts any bearing angle from the north line direction (positive clockwise)\n * and returns an angle between 0-360 degrees (positive clockwise), 0 being the north line\n *\n * @name bearingToAzimuth\n * @param {number} bearing angle, between -180 and +180 degrees\n * @returns {number} angle between 0 and 360 degrees\n */\nfunction bearingToAzimuth(bearing) {\n    var angle = bearing % 360;\n    if (angle < 0) {\n        angle += 360;\n    }\n    return angle;\n}\nexports.bearingToAzimuth = bearingToAzimuth;\n/**\n * Converts an angle in radians to degrees\n *\n * @name radiansToDegrees\n * @param {number} radians angle in radians\n * @returns {number} degrees between 0 and 360 degrees\n */\nfunction radiansToDegrees(radians) {\n    var degrees = radians % (2 * Math.PI);\n    return (degrees * 180) / Math.PI;\n}\nexports.radiansToDegrees = radiansToDegrees;\n/**\n * Converts an angle in degrees to radians\n *\n * @name degreesToRadians\n * @param {number} degrees angle between 0 and 360 degrees\n * @returns {number} angle in radians\n */\nfunction degreesToRadians(degrees) {\n    var radians = degrees % 360;\n    return (radians * Math.PI) / 180;\n}\nexports.degreesToRadians = degreesToRadians;\n/**\n * Converts a length to the requested unit.\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet\n *\n * @param {number} length to be converted\n * @param {Units} [originalUnit=\"kilometers\"] of the length\n * @param {Units} [finalUnit=\"kilometers\"] returned unit\n * @returns {number} the converted length\n */\nfunction convertLength(length, originalUnit, finalUnit) {\n    if (originalUnit === void 0) { originalUnit = \"kilometers\"; }\n    if (finalUnit === void 0) { finalUnit = \"kilometers\"; }\n    if (!(length >= 0)) {\n        throw new Error(\"length must be a positive number\");\n    }\n    return radiansToLength(lengthToRadians(length, originalUnit), finalUnit);\n}\nexports.convertLength = convertLength;\n/**\n * Converts a area to the requested unit.\n * Valid units: kilometers, kilometres, meters, metres, centimetres, millimeters, acres, miles, yards, feet, inches, hectares\n * @param {number} area to be converted\n * @param {Units} [originalUnit=\"meters\"] of the distance\n * @param {Units} [finalUnit=\"kilometers\"] returned unit\n * @returns {number} the converted area\n */\nfunction convertArea(area, originalUnit, finalUnit) {\n    if (originalUnit === void 0) { originalUnit = \"meters\"; }\n    if (finalUnit === void 0) { finalUnit = \"kilometers\"; }\n    if (!(area >= 0)) {\n        throw new Error(\"area must be a positive number\");\n    }\n    var startFactor = exports.areaFactors[originalUnit];\n    if (!startFactor) {\n        throw new Error(\"invalid original units\");\n    }\n    var finalFactor = exports.areaFactors[finalUnit];\n    if (!finalFactor) {\n        throw new Error(\"invalid final units\");\n    }\n    return (area / startFactor) * finalFactor;\n}\nexports.convertArea = convertArea;\n/**\n * isNumber\n *\n * @param {*} num Number to validate\n * @returns {boolean} true/false\n * @example\n * turf.isNumber(123)\n * //=true\n * turf.isNumber('foo')\n * //=false\n */\nfunction isNumber(num) {\n    return !isNaN(num) && num !== null && !Array.isArray(num);\n}\nexports.isNumber = isNumber;\n/**\n * isObject\n *\n * @param {*} input variable to validate\n * @returns {boolean} true/false\n * @example\n * turf.isObject({elevation: 10})\n * //=true\n * turf.isObject('foo')\n * //=false\n */\nfunction isObject(input) {\n    return !!input && input.constructor === Object;\n}\nexports.isObject = isObject;\n/**\n * Validate BBox\n *\n * @private\n * @param {Array<number>} bbox BBox to validate\n * @returns {void}\n * @throws Error if BBox is not valid\n * @example\n * validateBBox([-180, -40, 110, 50])\n * //=OK\n * validateBBox([-180, -40])\n * //=Error\n * validateBBox('Foo')\n * //=Error\n * validateBBox(5)\n * //=Error\n * validateBBox(null)\n * //=Error\n * validateBBox(undefined)\n * //=Error\n */\nfunction validateBBox(bbox) {\n    if (!bbox) {\n        throw new Error(\"bbox is required\");\n    }\n    if (!Array.isArray(bbox)) {\n        throw new Error(\"bbox must be an Array\");\n    }\n    if (bbox.length !== 4 && bbox.length !== 6) {\n        throw new Error(\"bbox must be an Array of 4 or 6 numbers\");\n    }\n    bbox.forEach(function (num) {\n        if (!isNumber(num)) {\n            throw new Error(\"bbox must only contain numbers\");\n        }\n    });\n}\nexports.validateBBox = validateBBox;\n/**\n * Validate Id\n *\n * @private\n * @param {string|number} id Id to validate\n * @returns {void}\n * @throws Error if Id is not valid\n * @example\n * validateId([-180, -40, 110, 50])\n * //=Error\n * validateId([-180, -40])\n * //=Error\n * validateId('Foo')\n * //=OK\n * validateId(5)\n * //=OK\n * validateId(null)\n * //=Error\n * validateId(undefined)\n * //=Error\n */\nfunction validateId(id) {\n    if (!id) {\n        throw new Error(\"id is required\");\n    }\n    if ([\"string\", \"number\"].indexOf(typeof id) === -1) {\n        throw new Error(\"id must be a number or a string\");\n    }\n}\nexports.validateId = validateId;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar helpers_1 = require(\"@turf/helpers\");\n/**\n * Unwrap a coordinate from a Point Feature, Geometry or a single coordinate.\n *\n * @name getCoord\n * @param {Array<number>|Geometry<Point>|Feature<Point>} coord GeoJSON Point or an Array of numbers\n * @returns {Array<number>} coordinates\n * @example\n * var pt = turf.point([10, 10]);\n *\n * var coord = turf.getCoord(pt);\n * //= [10, 10]\n */\nfunction getCoord(coord) {\n    if (!coord) {\n        throw new Error(\"coord is required\");\n    }\n    if (!Array.isArray(coord)) {\n        if (coord.type === \"Feature\" &&\n            coord.geometry !== null &&\n            coord.geometry.type === \"Point\") {\n            return coord.geometry.coordinates;\n        }\n        if (coord.type === \"Point\") {\n            return coord.coordinates;\n        }\n    }\n    if (Array.isArray(coord) &&\n        coord.length >= 2 &&\n        !Array.isArray(coord[0]) &&\n        !Array.isArray(coord[1])) {\n        return coord;\n    }\n    throw new Error(\"coord must be GeoJSON Point or an Array of numbers\");\n}\nexports.getCoord = getCoord;\n/**\n * Unwrap coordinates from a Feature, Geometry Object or an Array\n *\n * @name getCoords\n * @param {Array<any>|Geometry|Feature} coords Feature, Geometry Object or an Array\n * @returns {Array<any>} coordinates\n * @example\n * var poly = turf.polygon([[[119.32, -8.7], [119.55, -8.69], [119.51, -8.54], [119.32, -8.7]]]);\n *\n * var coords = turf.getCoords(poly);\n * //= [[[119.32, -8.7], [119.55, -8.69], [119.51, -8.54], [119.32, -8.7]]]\n */\nfunction getCoords(coords) {\n    if (Array.isArray(coords)) {\n        return coords;\n    }\n    // Feature\n    if (coords.type === \"Feature\") {\n        if (coords.geometry !== null) {\n            return coords.geometry.coordinates;\n        }\n    }\n    else {\n        // Geometry\n        if (coords.coordinates) {\n            return coords.coordinates;\n        }\n    }\n    throw new Error(\"coords must be GeoJSON Feature, Geometry Object or an Array\");\n}\nexports.getCoords = getCoords;\n/**\n * Checks if coordinates contains a number\n *\n * @name containsNumber\n * @param {Array<any>} coordinates GeoJSON Coordinates\n * @returns {boolean} true if Array contains a number\n */\nfunction containsNumber(coordinates) {\n    if (coordinates.length > 1 &&\n        helpers_1.isNumber(coordinates[0]) &&\n        helpers_1.isNumber(coordinates[1])) {\n        return true;\n    }\n    if (Array.isArray(coordinates[0]) && coordinates[0].length) {\n        return containsNumber(coordinates[0]);\n    }\n    throw new Error(\"coordinates must only contain numbers\");\n}\nexports.containsNumber = containsNumber;\n/**\n * Enforce expectations about types of GeoJSON objects for Turf.\n *\n * @name geojsonType\n * @param {GeoJSON} value any GeoJSON object\n * @param {string} type expected GeoJSON type\n * @param {string} name name of calling function\n * @throws {Error} if value is not the expected type.\n */\nfunction geojsonType(value, type, name) {\n    if (!type || !name) {\n        throw new Error(\"type and name required\");\n    }\n    if (!value || value.type !== type) {\n        throw new Error(\"Invalid input to \" +\n            name +\n            \": must be a \" +\n            type +\n            \", given \" +\n            value.type);\n    }\n}\nexports.geojsonType = geojsonType;\n/**\n * Enforce expectations about types of {@link Feature} inputs for Turf.\n * Internally this uses {@link geojsonType} to judge geometry types.\n *\n * @name featureOf\n * @param {Feature} feature a feature with an expected geometry type\n * @param {string} type expected GeoJSON type\n * @param {string} name name of calling function\n * @throws {Error} error if value is not the expected type.\n */\nfunction featureOf(feature, type, name) {\n    if (!feature) {\n        throw new Error(\"No feature passed\");\n    }\n    if (!name) {\n        throw new Error(\".featureOf() requires a name\");\n    }\n    if (!feature || feature.type !== \"Feature\" || !feature.geometry) {\n        throw new Error(\"Invalid input to \" + name + \", Feature with geometry required\");\n    }\n    if (!feature.geometry || feature.geometry.type !== type) {\n        throw new Error(\"Invalid input to \" +\n            name +\n            \": must be a \" +\n            type +\n            \", given \" +\n            feature.geometry.type);\n    }\n}\nexports.featureOf = featureOf;\n/**\n * Enforce expectations about types of {@link FeatureCollection} inputs for Turf.\n * Internally this uses {@link geojsonType} to judge geometry types.\n *\n * @name collectionOf\n * @param {FeatureCollection} featureCollection a FeatureCollection for which features will be judged\n * @param {string} type expected GeoJSON type\n * @param {string} name name of calling function\n * @throws {Error} if value is not the expected type.\n */\nfunction collectionOf(featureCollection, type, name) {\n    if (!featureCollection) {\n        throw new Error(\"No featureCollection passed\");\n    }\n    if (!name) {\n        throw new Error(\".collectionOf() requires a name\");\n    }\n    if (!featureCollection || featureCollection.type !== \"FeatureCollection\") {\n        throw new Error(\"Invalid input to \" + name + \", FeatureCollection required\");\n    }\n    for (var _i = 0, _a = featureCollection.features; _i < _a.length; _i++) {\n        var feature = _a[_i];\n        if (!feature || feature.type !== \"Feature\" || !feature.geometry) {\n            throw new Error(\"Invalid input to \" + name + \", Feature with geometry required\");\n        }\n        if (!feature.geometry || feature.geometry.type !== type) {\n            throw new Error(\"Invalid input to \" +\n                name +\n                \": must be a \" +\n                type +\n                \", given \" +\n                feature.geometry.type);\n        }\n    }\n}\nexports.collectionOf = collectionOf;\n/**\n * Get Geometry from Feature or Geometry Object\n *\n * @param {Feature|Geometry} geojson GeoJSON Feature or Geometry Object\n * @returns {Geometry|null} GeoJSON Geometry Object\n * @throws {Error} if geojson is not a Feature or Geometry Object\n * @example\n * var point = {\n *   \"type\": \"Feature\",\n *   \"properties\": {},\n *   \"geometry\": {\n *     \"type\": \"Point\",\n *     \"coordinates\": [110, 40]\n *   }\n * }\n * var geom = turf.getGeom(point)\n * //={\"type\": \"Point\", \"coordinates\": [110, 40]}\n */\nfunction getGeom(geojson) {\n    if (geojson.type === \"Feature\") {\n        return geojson.geometry;\n    }\n    return geojson;\n}\nexports.getGeom = getGeom;\n/**\n * Get GeoJSON object's type, Geometry type is prioritize.\n *\n * @param {GeoJSON} geojson GeoJSON object\n * @param {string} [name=\"geojson\"] name of the variable to display in error message (unused)\n * @returns {string} GeoJSON type\n * @example\n * var point = {\n *   \"type\": \"Feature\",\n *   \"properties\": {},\n *   \"geometry\": {\n *     \"type\": \"Point\",\n *     \"coordinates\": [110, 40]\n *   }\n * }\n * var geom = turf.getType(point)\n * //=\"Point\"\n */\nfunction getType(geojson, _name) {\n    if (geojson.type === \"FeatureCollection\") {\n        return \"FeatureCollection\";\n    }\n    if (geojson.type === \"GeometryCollection\") {\n        return \"GeometryCollection\";\n    }\n    if (geojson.type === \"Feature\" && geojson.geometry !== null) {\n        return geojson.geometry.type;\n    }\n    return geojson.type;\n}\nexports.getType = getType;\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nvar helpers = require('@turf/helpers');\n\n/**\n * Callback for coordEach\n *\n * @callback coordEachCallback\n * @param {Array<number>} currentCoord The current coordinate being processed.\n * @param {number} coordIndex The current index of the coordinate being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n * @param {number} geometryIndex The current index of the Geometry being processed.\n */\n\n/**\n * Iterate over coordinates in any GeoJSON object, similar to Array.forEach()\n *\n * @name coordEach\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (currentCoord, coordIndex, featureIndex, multiFeatureIndex)\n * @param {boolean} [excludeWrapCoord=false] whether or not to include the final coordinate of LinearRings that wraps the ring in its iteration.\n * @returns {void}\n * @example\n * var features = turf.featureCollection([\n *   turf.point([26, 37], {\"foo\": \"bar\"}),\n *   turf.point([36, 53], {\"hello\": \"world\"})\n * ]);\n *\n * turf.coordEach(features, function (currentCoord, coordIndex, featureIndex, multiFeatureIndex, geometryIndex) {\n *   //=currentCoord\n *   //=coordIndex\n *   //=featureIndex\n *   //=multiFeatureIndex\n *   //=geometryIndex\n * });\n */\nfunction coordEach(geojson, callback, excludeWrapCoord) {\n  // Handles null Geometry -- Skips this GeoJSON\n  if (geojson === null) return;\n  var j,\n    k,\n    l,\n    geometry,\n    stopG,\n    coords,\n    geometryMaybeCollection,\n    wrapShrink = 0,\n    coordIndex = 0,\n    isGeometryCollection,\n    type = geojson.type,\n    isFeatureCollection = type === \"FeatureCollection\",\n    isFeature = type === \"Feature\",\n    stop = isFeatureCollection ? geojson.features.length : 1;\n\n  // This logic may look a little weird. The reason why it is that way\n  // is because it's trying to be fast. GeoJSON supports multiple kinds\n  // of objects at its root: FeatureCollection, Features, Geometries.\n  // This function has the responsibility of handling all of them, and that\n  // means that some of the `for` loops you see below actually just don't apply\n  // to certain inputs. For instance, if you give this just a\n  // Point geometry, then both loops are short-circuited and all we do\n  // is gradually rename the input until it's called 'geometry'.\n  //\n  // This also aims to allocate as few resources as possible: just a\n  // few numbers and booleans, rather than any temporary arrays as would\n  // be required with the normalization approach.\n  for (var featureIndex = 0; featureIndex < stop; featureIndex++) {\n    geometryMaybeCollection = isFeatureCollection\n      ? geojson.features[featureIndex].geometry\n      : isFeature\n      ? geojson.geometry\n      : geojson;\n    isGeometryCollection = geometryMaybeCollection\n      ? geometryMaybeCollection.type === \"GeometryCollection\"\n      : false;\n    stopG = isGeometryCollection\n      ? geometryMaybeCollection.geometries.length\n      : 1;\n\n    for (var geomIndex = 0; geomIndex < stopG; geomIndex++) {\n      var multiFeatureIndex = 0;\n      var geometryIndex = 0;\n      geometry = isGeometryCollection\n        ? geometryMaybeCollection.geometries[geomIndex]\n        : geometryMaybeCollection;\n\n      // Handles null Geometry -- Skips this geometry\n      if (geometry === null) continue;\n      coords = geometry.coordinates;\n      var geomType = geometry.type;\n\n      wrapShrink =\n        excludeWrapCoord &&\n        (geomType === \"Polygon\" || geomType === \"MultiPolygon\")\n          ? 1\n          : 0;\n\n      switch (geomType) {\n        case null:\n          break;\n        case \"Point\":\n          if (\n            callback(\n              coords,\n              coordIndex,\n              featureIndex,\n              multiFeatureIndex,\n              geometryIndex\n            ) === false\n          )\n            return false;\n          coordIndex++;\n          multiFeatureIndex++;\n          break;\n        case \"LineString\":\n        case \"MultiPoint\":\n          for (j = 0; j < coords.length; j++) {\n            if (\n              callback(\n                coords[j],\n                coordIndex,\n                featureIndex,\n                multiFeatureIndex,\n                geometryIndex\n              ) === false\n            )\n              return false;\n            coordIndex++;\n            if (geomType === \"MultiPoint\") multiFeatureIndex++;\n          }\n          if (geomType === \"LineString\") multiFeatureIndex++;\n          break;\n        case \"Polygon\":\n        case \"MultiLineString\":\n          for (j = 0; j < coords.length; j++) {\n            for (k = 0; k < coords[j].length - wrapShrink; k++) {\n              if (\n                callback(\n                  coords[j][k],\n                  coordIndex,\n                  featureIndex,\n                  multiFeatureIndex,\n                  geometryIndex\n                ) === false\n              )\n                return false;\n              coordIndex++;\n            }\n            if (geomType === \"MultiLineString\") multiFeatureIndex++;\n            if (geomType === \"Polygon\") geometryIndex++;\n          }\n          if (geomType === \"Polygon\") multiFeatureIndex++;\n          break;\n        case \"MultiPolygon\":\n          for (j = 0; j < coords.length; j++) {\n            geometryIndex = 0;\n            for (k = 0; k < coords[j].length; k++) {\n              for (l = 0; l < coords[j][k].length - wrapShrink; l++) {\n                if (\n                  callback(\n                    coords[j][k][l],\n                    coordIndex,\n                    featureIndex,\n                    multiFeatureIndex,\n                    geometryIndex\n                  ) === false\n                )\n                  return false;\n                coordIndex++;\n              }\n              geometryIndex++;\n            }\n            multiFeatureIndex++;\n          }\n          break;\n        case \"GeometryCollection\":\n          for (j = 0; j < geometry.geometries.length; j++)\n            if (\n              coordEach(geometry.geometries[j], callback, excludeWrapCoord) ===\n              false\n            )\n              return false;\n          break;\n        default:\n          throw new Error(\"Unknown Geometry Type\");\n      }\n    }\n  }\n}\n\n/**\n * Callback for coordReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n *  - The previousValue argument is initialValue.\n *  - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n *  - The previousValue argument is the value of the first element present in the array.\n *  - The currentValue argument is the value of the second element present in the array.\n *\n * @callback coordReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Array<number>} currentCoord The current coordinate being processed.\n * @param {number} coordIndex The current index of the coordinate being processed.\n * Starts at index 0, if an initialValue is provided, and at index 1 otherwise.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n * @param {number} geometryIndex The current index of the Geometry being processed.\n */\n\n/**\n * Reduce coordinates in any GeoJSON object, similar to Array.reduce()\n *\n * @name coordReduce\n * @param {FeatureCollection|Geometry|Feature} geojson any GeoJSON object\n * @param {Function} callback a method that takes (previousValue, currentCoord, coordIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @param {boolean} [excludeWrapCoord=false] whether or not to include the final coordinate of LinearRings that wraps the ring in its iteration.\n * @returns {*} The value that results from the reduction.\n * @example\n * var features = turf.featureCollection([\n *   turf.point([26, 37], {\"foo\": \"bar\"}),\n *   turf.point([36, 53], {\"hello\": \"world\"})\n * ]);\n *\n * turf.coordReduce(features, function (previousValue, currentCoord, coordIndex, featureIndex, multiFeatureIndex, geometryIndex) {\n *   //=previousValue\n *   //=currentCoord\n *   //=coordIndex\n *   //=featureIndex\n *   //=multiFeatureIndex\n *   //=geometryIndex\n *   return currentCoord;\n * });\n */\nfunction coordReduce(geojson, callback, initialValue, excludeWrapCoord) {\n  var previousValue = initialValue;\n  coordEach(\n    geojson,\n    function (\n      currentCoord,\n      coordIndex,\n      featureIndex,\n      multiFeatureIndex,\n      geometryIndex\n    ) {\n      if (coordIndex === 0 && initialValue === undefined)\n        previousValue = currentCoord;\n      else\n        previousValue = callback(\n          previousValue,\n          currentCoord,\n          coordIndex,\n          featureIndex,\n          multiFeatureIndex,\n          geometryIndex\n        );\n    },\n    excludeWrapCoord\n  );\n  return previousValue;\n}\n\n/**\n * Callback for propEach\n *\n * @callback propEachCallback\n * @param {Object} currentProperties The current Properties being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n */\n\n/**\n * Iterate over properties in any GeoJSON object, similar to Array.forEach()\n *\n * @name propEach\n * @param {FeatureCollection|Feature} geojson any GeoJSON object\n * @param {Function} callback a method that takes (currentProperties, featureIndex)\n * @returns {void}\n * @example\n * var features = turf.featureCollection([\n *     turf.point([26, 37], {foo: 'bar'}),\n *     turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * turf.propEach(features, function (currentProperties, featureIndex) {\n *   //=currentProperties\n *   //=featureIndex\n * });\n */\nfunction propEach(geojson, callback) {\n  var i;\n  switch (geojson.type) {\n    case \"FeatureCollection\":\n      for (i = 0; i < geojson.features.length; i++) {\n        if (callback(geojson.features[i].properties, i) === false) break;\n      }\n      break;\n    case \"Feature\":\n      callback(geojson.properties, 0);\n      break;\n  }\n}\n\n/**\n * Callback for propReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n *  - The previousValue argument is initialValue.\n *  - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n *  - The previousValue argument is the value of the first element present in the array.\n *  - The currentValue argument is the value of the second element present in the array.\n *\n * @callback propReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {*} currentProperties The current Properties being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n */\n\n/**\n * Reduce properties in any GeoJSON object into a single value,\n * similar to how Array.reduce works. However, in this case we lazily run\n * the reduction, so an array of all properties is unnecessary.\n *\n * @name propReduce\n * @param {FeatureCollection|Feature} geojson any GeoJSON object\n * @param {Function} callback a method that takes (previousValue, currentProperties, featureIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {*} The value that results from the reduction.\n * @example\n * var features = turf.featureCollection([\n *     turf.point([26, 37], {foo: 'bar'}),\n *     turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * turf.propReduce(features, function (previousValue, currentProperties, featureIndex) {\n *   //=previousValue\n *   //=currentProperties\n *   //=featureIndex\n *   return currentProperties\n * });\n */\nfunction propReduce(geojson, callback, initialValue) {\n  var previousValue = initialValue;\n  propEach(geojson, function (currentProperties, featureIndex) {\n    if (featureIndex === 0 && initialValue === undefined)\n      previousValue = currentProperties;\n    else\n      previousValue = callback(previousValue, currentProperties, featureIndex);\n  });\n  return previousValue;\n}\n\n/**\n * Callback for featureEach\n *\n * @callback featureEachCallback\n * @param {Feature<any>} currentFeature The current Feature being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n */\n\n/**\n * Iterate over features in any GeoJSON object, similar to\n * Array.forEach.\n *\n * @name featureEach\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (currentFeature, featureIndex)\n * @returns {void}\n * @example\n * var features = turf.featureCollection([\n *   turf.point([26, 37], {foo: 'bar'}),\n *   turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * turf.featureEach(features, function (currentFeature, featureIndex) {\n *   //=currentFeature\n *   //=featureIndex\n * });\n */\nfunction featureEach(geojson, callback) {\n  if (geojson.type === \"Feature\") {\n    callback(geojson, 0);\n  } else if (geojson.type === \"FeatureCollection\") {\n    for (var i = 0; i < geojson.features.length; i++) {\n      if (callback(geojson.features[i], i) === false) break;\n    }\n  }\n}\n\n/**\n * Callback for featureReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n *  - The previousValue argument is initialValue.\n *  - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n *  - The previousValue argument is the value of the first element present in the array.\n *  - The currentValue argument is the value of the second element present in the array.\n *\n * @callback featureReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Feature} currentFeature The current Feature being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n */\n\n/**\n * Reduce features in any GeoJSON object, similar to Array.reduce().\n *\n * @name featureReduce\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (previousValue, currentFeature, featureIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {*} The value that results from the reduction.\n * @example\n * var features = turf.featureCollection([\n *   turf.point([26, 37], {\"foo\": \"bar\"}),\n *   turf.point([36, 53], {\"hello\": \"world\"})\n * ]);\n *\n * turf.featureReduce(features, function (previousValue, currentFeature, featureIndex) {\n *   //=previousValue\n *   //=currentFeature\n *   //=featureIndex\n *   return currentFeature\n * });\n */\nfunction featureReduce(geojson, callback, initialValue) {\n  var previousValue = initialValue;\n  featureEach(geojson, function (currentFeature, featureIndex) {\n    if (featureIndex === 0 && initialValue === undefined)\n      previousValue = currentFeature;\n    else previousValue = callback(previousValue, currentFeature, featureIndex);\n  });\n  return previousValue;\n}\n\n/**\n * Get all coordinates from any GeoJSON object.\n *\n * @name coordAll\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @returns {Array<Array<number>>} coordinate position array\n * @example\n * var features = turf.featureCollection([\n *   turf.point([26, 37], {foo: 'bar'}),\n *   turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * var coords = turf.coordAll(features);\n * //= [[26, 37], [36, 53]]\n */\nfunction coordAll(geojson) {\n  var coords = [];\n  coordEach(geojson, function (coord) {\n    coords.push(coord);\n  });\n  return coords;\n}\n\n/**\n * Callback for geomEach\n *\n * @callback geomEachCallback\n * @param {Geometry} currentGeometry The current Geometry being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {Object} featureProperties The current Feature Properties being processed.\n * @param {Array<number>} featureBBox The current Feature BBox being processed.\n * @param {number|string} featureId The current Feature Id being processed.\n */\n\n/**\n * Iterate over each geometry in any GeoJSON object, similar to Array.forEach()\n *\n * @name geomEach\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (currentGeometry, featureIndex, featureProperties, featureBBox, featureId)\n * @returns {void}\n * @example\n * var features = turf.featureCollection([\n *     turf.point([26, 37], {foo: 'bar'}),\n *     turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * turf.geomEach(features, function (currentGeometry, featureIndex, featureProperties, featureBBox, featureId) {\n *   //=currentGeometry\n *   //=featureIndex\n *   //=featureProperties\n *   //=featureBBox\n *   //=featureId\n * });\n */\nfunction geomEach(geojson, callback) {\n  var i,\n    j,\n    g,\n    geometry,\n    stopG,\n    geometryMaybeCollection,\n    isGeometryCollection,\n    featureProperties,\n    featureBBox,\n    featureId,\n    featureIndex = 0,\n    isFeatureCollection = geojson.type === \"FeatureCollection\",\n    isFeature = geojson.type === \"Feature\",\n    stop = isFeatureCollection ? geojson.features.length : 1;\n\n  // This logic may look a little weird. The reason why it is that way\n  // is because it's trying to be fast. GeoJSON supports multiple kinds\n  // of objects at its root: FeatureCollection, Features, Geometries.\n  // This function has the responsibility of handling all of them, and that\n  // means that some of the `for` loops you see below actually just don't apply\n  // to certain inputs. For instance, if you give this just a\n  // Point geometry, then both loops are short-circuited and all we do\n  // is gradually rename the input until it's called 'geometry'.\n  //\n  // This also aims to allocate as few resources as possible: just a\n  // few numbers and booleans, rather than any temporary arrays as would\n  // be required with the normalization approach.\n  for (i = 0; i < stop; i++) {\n    geometryMaybeCollection = isFeatureCollection\n      ? geojson.features[i].geometry\n      : isFeature\n      ? geojson.geometry\n      : geojson;\n    featureProperties = isFeatureCollection\n      ? geojson.features[i].properties\n      : isFeature\n      ? geojson.properties\n      : {};\n    featureBBox = isFeatureCollection\n      ? geojson.features[i].bbox\n      : isFeature\n      ? geojson.bbox\n      : undefined;\n    featureId = isFeatureCollection\n      ? geojson.features[i].id\n      : isFeature\n      ? geojson.id\n      : undefined;\n    isGeometryCollection = geometryMaybeCollection\n      ? geometryMaybeCollection.type === \"GeometryCollection\"\n      : false;\n    stopG = isGeometryCollection\n      ? geometryMaybeCollection.geometries.length\n      : 1;\n\n    for (g = 0; g < stopG; g++) {\n      geometry = isGeometryCollection\n        ? geometryMaybeCollection.geometries[g]\n        : geometryMaybeCollection;\n\n      // Handle null Geometry\n      if (geometry === null) {\n        if (\n          callback(\n            null,\n            featureIndex,\n            featureProperties,\n            featureBBox,\n            featureId\n          ) === false\n        )\n          return false;\n        continue;\n      }\n      switch (geometry.type) {\n        case \"Point\":\n        case \"LineString\":\n        case \"MultiPoint\":\n        case \"Polygon\":\n        case \"MultiLineString\":\n        case \"MultiPolygon\": {\n          if (\n            callback(\n              geometry,\n              featureIndex,\n              featureProperties,\n              featureBBox,\n              featureId\n            ) === false\n          )\n            return false;\n          break;\n        }\n        case \"GeometryCollection\": {\n          for (j = 0; j < geometry.geometries.length; j++) {\n            if (\n              callback(\n                geometry.geometries[j],\n                featureIndex,\n                featureProperties,\n                featureBBox,\n                featureId\n              ) === false\n            )\n              return false;\n          }\n          break;\n        }\n        default:\n          throw new Error(\"Unknown Geometry Type\");\n      }\n    }\n    // Only increase `featureIndex` per each feature\n    featureIndex++;\n  }\n}\n\n/**\n * Callback for geomReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n *  - The previousValue argument is initialValue.\n *  - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n *  - The previousValue argument is the value of the first element present in the array.\n *  - The currentValue argument is the value of the second element present in the array.\n *\n * @callback geomReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Geometry} currentGeometry The current Geometry being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {Object} featureProperties The current Feature Properties being processed.\n * @param {Array<number>} featureBBox The current Feature BBox being processed.\n * @param {number|string} featureId The current Feature Id being processed.\n */\n\n/**\n * Reduce geometry in any GeoJSON object, similar to Array.reduce().\n *\n * @name geomReduce\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (previousValue, currentGeometry, featureIndex, featureProperties, featureBBox, featureId)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {*} The value that results from the reduction.\n * @example\n * var features = turf.featureCollection([\n *     turf.point([26, 37], {foo: 'bar'}),\n *     turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * turf.geomReduce(features, function (previousValue, currentGeometry, featureIndex, featureProperties, featureBBox, featureId) {\n *   //=previousValue\n *   //=currentGeometry\n *   //=featureIndex\n *   //=featureProperties\n *   //=featureBBox\n *   //=featureId\n *   return currentGeometry\n * });\n */\nfunction geomReduce(geojson, callback, initialValue) {\n  var previousValue = initialValue;\n  geomEach(\n    geojson,\n    function (\n      currentGeometry,\n      featureIndex,\n      featureProperties,\n      featureBBox,\n      featureId\n    ) {\n      if (featureIndex === 0 && initialValue === undefined)\n        previousValue = currentGeometry;\n      else\n        previousValue = callback(\n          previousValue,\n          currentGeometry,\n          featureIndex,\n          featureProperties,\n          featureBBox,\n          featureId\n        );\n    }\n  );\n  return previousValue;\n}\n\n/**\n * Callback for flattenEach\n *\n * @callback flattenEachCallback\n * @param {Feature} currentFeature The current flattened feature being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n */\n\n/**\n * Iterate over flattened features in any GeoJSON object, similar to\n * Array.forEach.\n *\n * @name flattenEach\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (currentFeature, featureIndex, multiFeatureIndex)\n * @example\n * var features = turf.featureCollection([\n *     turf.point([26, 37], {foo: 'bar'}),\n *     turf.multiPoint([[40, 30], [36, 53]], {hello: 'world'})\n * ]);\n *\n * turf.flattenEach(features, function (currentFeature, featureIndex, multiFeatureIndex) {\n *   //=currentFeature\n *   //=featureIndex\n *   //=multiFeatureIndex\n * });\n */\nfunction flattenEach(geojson, callback) {\n  geomEach(geojson, function (geometry, featureIndex, properties, bbox, id) {\n    // Callback for single geometry\n    var type = geometry === null ? null : geometry.type;\n    switch (type) {\n      case null:\n      case \"Point\":\n      case \"LineString\":\n      case \"Polygon\":\n        if (\n          callback(\n            helpers.feature(geometry, properties, { bbox: bbox, id: id }),\n            featureIndex,\n            0\n          ) === false\n        )\n          return false;\n        return;\n    }\n\n    var geomType;\n\n    // Callback for multi-geometry\n    switch (type) {\n      case \"MultiPoint\":\n        geomType = \"Point\";\n        break;\n      case \"MultiLineString\":\n        geomType = \"LineString\";\n        break;\n      case \"MultiPolygon\":\n        geomType = \"Polygon\";\n        break;\n    }\n\n    for (\n      var multiFeatureIndex = 0;\n      multiFeatureIndex < geometry.coordinates.length;\n      multiFeatureIndex++\n    ) {\n      var coordinate = geometry.coordinates[multiFeatureIndex];\n      var geom = {\n        type: geomType,\n        coordinates: coordinate,\n      };\n      if (\n        callback(helpers.feature(geom, properties), featureIndex, multiFeatureIndex) ===\n        false\n      )\n        return false;\n    }\n  });\n}\n\n/**\n * Callback for flattenReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n *  - The previousValue argument is initialValue.\n *  - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n *  - The previousValue argument is the value of the first element present in the array.\n *  - The currentValue argument is the value of the second element present in the array.\n *\n * @callback flattenReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Feature} currentFeature The current Feature being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n */\n\n/**\n * Reduce flattened features in any GeoJSON object, similar to Array.reduce().\n *\n * @name flattenReduce\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (previousValue, currentFeature, featureIndex, multiFeatureIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {*} The value that results from the reduction.\n * @example\n * var features = turf.featureCollection([\n *     turf.point([26, 37], {foo: 'bar'}),\n *     turf.multiPoint([[40, 30], [36, 53]], {hello: 'world'})\n * ]);\n *\n * turf.flattenReduce(features, function (previousValue, currentFeature, featureIndex, multiFeatureIndex) {\n *   //=previousValue\n *   //=currentFeature\n *   //=featureIndex\n *   //=multiFeatureIndex\n *   return currentFeature\n * });\n */\nfunction flattenReduce(geojson, callback, initialValue) {\n  var previousValue = initialValue;\n  flattenEach(\n    geojson,\n    function (currentFeature, featureIndex, multiFeatureIndex) {\n      if (\n        featureIndex === 0 &&\n        multiFeatureIndex === 0 &&\n        initialValue === undefined\n      )\n        previousValue = currentFeature;\n      else\n        previousValue = callback(\n          previousValue,\n          currentFeature,\n          featureIndex,\n          multiFeatureIndex\n        );\n    }\n  );\n  return previousValue;\n}\n\n/**\n * Callback for segmentEach\n *\n * @callback segmentEachCallback\n * @param {Feature<LineString>} currentSegment The current Segment being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n * @param {number} geometryIndex The current index of the Geometry being processed.\n * @param {number} segmentIndex The current index of the Segment being processed.\n * @returns {void}\n */\n\n/**\n * Iterate over 2-vertex line segment in any GeoJSON object, similar to Array.forEach()\n * (Multi)Point geometries do not contain segments therefore they are ignored during this operation.\n *\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON\n * @param {Function} callback a method that takes (currentSegment, featureIndex, multiFeatureIndex, geometryIndex, segmentIndex)\n * @returns {void}\n * @example\n * var polygon = turf.polygon([[[-50, 5], [-40, -10], [-50, -10], [-40, 5], [-50, 5]]]);\n *\n * // Iterate over GeoJSON by 2-vertex segments\n * turf.segmentEach(polygon, function (currentSegment, featureIndex, multiFeatureIndex, geometryIndex, segmentIndex) {\n *   //=currentSegment\n *   //=featureIndex\n *   //=multiFeatureIndex\n *   //=geometryIndex\n *   //=segmentIndex\n * });\n *\n * // Calculate the total number of segments\n * var total = 0;\n * turf.segmentEach(polygon, function () {\n *     total++;\n * });\n */\nfunction segmentEach(geojson, callback) {\n  flattenEach(geojson, function (feature, featureIndex, multiFeatureIndex) {\n    var segmentIndex = 0;\n\n    // Exclude null Geometries\n    if (!feature.geometry) return;\n    // (Multi)Point geometries do not contain segments therefore they are ignored during this operation.\n    var type = feature.geometry.type;\n    if (type === \"Point\" || type === \"MultiPoint\") return;\n\n    // Generate 2-vertex line segments\n    var previousCoords;\n    var previousFeatureIndex = 0;\n    var previousMultiIndex = 0;\n    var prevGeomIndex = 0;\n    if (\n      coordEach(\n        feature,\n        function (\n          currentCoord,\n          coordIndex,\n          featureIndexCoord,\n          multiPartIndexCoord,\n          geometryIndex\n        ) {\n          // Simulating a meta.coordReduce() since `reduce` operations cannot be stopped by returning `false`\n          if (\n            previousCoords === undefined ||\n            featureIndex > previousFeatureIndex ||\n            multiPartIndexCoord > previousMultiIndex ||\n            geometryIndex > prevGeomIndex\n          ) {\n            previousCoords = currentCoord;\n            previousFeatureIndex = featureIndex;\n            previousMultiIndex = multiPartIndexCoord;\n            prevGeomIndex = geometryIndex;\n            segmentIndex = 0;\n            return;\n          }\n          var currentSegment = helpers.lineString(\n            [previousCoords, currentCoord],\n            feature.properties\n          );\n          if (\n            callback(\n              currentSegment,\n              featureIndex,\n              multiFeatureIndex,\n              geometryIndex,\n              segmentIndex\n            ) === false\n          )\n            return false;\n          segmentIndex++;\n          previousCoords = currentCoord;\n        }\n      ) === false\n    )\n      return false;\n  });\n}\n\n/**\n * Callback for segmentReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n *  - The previousValue argument is initialValue.\n *  - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n *  - The previousValue argument is the value of the first element present in the array.\n *  - The currentValue argument is the value of the second element present in the array.\n *\n * @callback segmentReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Feature<LineString>} currentSegment The current Segment being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n * @param {number} geometryIndex The current index of the Geometry being processed.\n * @param {number} segmentIndex The current index of the Segment being processed.\n */\n\n/**\n * Reduce 2-vertex line segment in any GeoJSON object, similar to Array.reduce()\n * (Multi)Point geometries do not contain segments therefore they are ignored during this operation.\n *\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON\n * @param {Function} callback a method that takes (previousValue, currentSegment, currentIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {void}\n * @example\n * var polygon = turf.polygon([[[-50, 5], [-40, -10], [-50, -10], [-40, 5], [-50, 5]]]);\n *\n * // Iterate over GeoJSON by 2-vertex segments\n * turf.segmentReduce(polygon, function (previousSegment, currentSegment, featureIndex, multiFeatureIndex, geometryIndex, segmentIndex) {\n *   //= previousSegment\n *   //= currentSegment\n *   //= featureIndex\n *   //= multiFeatureIndex\n *   //= geometryIndex\n *   //= segmentIndex\n *   return currentSegment\n * });\n *\n * // Calculate the total number of segments\n * var initialValue = 0\n * var total = turf.segmentReduce(polygon, function (previousValue) {\n *     previousValue++;\n *     return previousValue;\n * }, initialValue);\n */\nfunction segmentReduce(geojson, callback, initialValue) {\n  var previousValue = initialValue;\n  var started = false;\n  segmentEach(\n    geojson,\n    function (\n      currentSegment,\n      featureIndex,\n      multiFeatureIndex,\n      geometryIndex,\n      segmentIndex\n    ) {\n      if (started === false && initialValue === undefined)\n        previousValue = currentSegment;\n      else\n        previousValue = callback(\n          previousValue,\n          currentSegment,\n          featureIndex,\n          multiFeatureIndex,\n          geometryIndex,\n          segmentIndex\n        );\n      started = true;\n    }\n  );\n  return previousValue;\n}\n\n/**\n * Callback for lineEach\n *\n * @callback lineEachCallback\n * @param {Feature<LineString>} currentLine The current LineString|LinearRing being processed\n * @param {number} featureIndex The current index of the Feature being processed\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed\n * @param {number} geometryIndex The current index of the Geometry being processed\n */\n\n/**\n * Iterate over line or ring coordinates in LineString, Polygon, MultiLineString, MultiPolygon Features or Geometries,\n * similar to Array.forEach.\n *\n * @name lineEach\n * @param {Geometry|Feature<LineString|Polygon|MultiLineString|MultiPolygon>} geojson object\n * @param {Function} callback a method that takes (currentLine, featureIndex, multiFeatureIndex, geometryIndex)\n * @example\n * var multiLine = turf.multiLineString([\n *   [[26, 37], [35, 45]],\n *   [[36, 53], [38, 50], [41, 55]]\n * ]);\n *\n * turf.lineEach(multiLine, function (currentLine, featureIndex, multiFeatureIndex, geometryIndex) {\n *   //=currentLine\n *   //=featureIndex\n *   //=multiFeatureIndex\n *   //=geometryIndex\n * });\n */\nfunction lineEach(geojson, callback) {\n  // validation\n  if (!geojson) throw new Error(\"geojson is required\");\n\n  flattenEach(geojson, function (feature, featureIndex, multiFeatureIndex) {\n    if (feature.geometry === null) return;\n    var type = feature.geometry.type;\n    var coords = feature.geometry.coordinates;\n    switch (type) {\n      case \"LineString\":\n        if (callback(feature, featureIndex, multiFeatureIndex, 0, 0) === false)\n          return false;\n        break;\n      case \"Polygon\":\n        for (\n          var geometryIndex = 0;\n          geometryIndex < coords.length;\n          geometryIndex++\n        ) {\n          if (\n            callback(\n              helpers.lineString(coords[geometryIndex], feature.properties),\n              featureIndex,\n              multiFeatureIndex,\n              geometryIndex\n            ) === false\n          )\n            return false;\n        }\n        break;\n    }\n  });\n}\n\n/**\n * Callback for lineReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n *  - The previousValue argument is initialValue.\n *  - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n *  - The previousValue argument is the value of the first element present in the array.\n *  - The currentValue argument is the value of the second element present in the array.\n *\n * @callback lineReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Feature<LineString>} currentLine The current LineString|LinearRing being processed.\n * @param {number} featureIndex The current index of the Feature being processed\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed\n * @param {number} geometryIndex The current index of the Geometry being processed\n */\n\n/**\n * Reduce features in any GeoJSON object, similar to Array.reduce().\n *\n * @name lineReduce\n * @param {Geometry|Feature<LineString|Polygon|MultiLineString|MultiPolygon>} geojson object\n * @param {Function} callback a method that takes (previousValue, currentLine, featureIndex, multiFeatureIndex, geometryIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {*} The value that results from the reduction.\n * @example\n * var multiPoly = turf.multiPolygon([\n *   turf.polygon([[[12,48],[2,41],[24,38],[12,48]], [[9,44],[13,41],[13,45],[9,44]]]),\n *   turf.polygon([[[5, 5], [0, 0], [2, 2], [4, 4], [5, 5]]])\n * ]);\n *\n * turf.lineReduce(multiPoly, function (previousValue, currentLine, featureIndex, multiFeatureIndex, geometryIndex) {\n *   //=previousValue\n *   //=currentLine\n *   //=featureIndex\n *   //=multiFeatureIndex\n *   //=geometryIndex\n *   return currentLine\n * });\n */\nfunction lineReduce(geojson, callback, initialValue) {\n  var previousValue = initialValue;\n  lineEach(\n    geojson,\n    function (currentLine, featureIndex, multiFeatureIndex, geometryIndex) {\n      if (featureIndex === 0 && initialValue === undefined)\n        previousValue = currentLine;\n      else\n        previousValue = callback(\n          previousValue,\n          currentLine,\n          featureIndex,\n          multiFeatureIndex,\n          geometryIndex\n        );\n    }\n  );\n  return previousValue;\n}\n\n/**\n * Finds a particular 2-vertex LineString Segment from a GeoJSON using `@turf/meta` indexes.\n *\n * Negative indexes are permitted.\n * Point & MultiPoint will always return null.\n *\n * @param {FeatureCollection|Feature|Geometry} geojson Any GeoJSON Feature or Geometry\n * @param {Object} [options={}] Optional parameters\n * @param {number} [options.featureIndex=0] Feature Index\n * @param {number} [options.multiFeatureIndex=0] Multi-Feature Index\n * @param {number} [options.geometryIndex=0] Geometry Index\n * @param {number} [options.segmentIndex=0] Segment Index\n * @param {Object} [options.properties={}] Translate Properties to output LineString\n * @param {BBox} [options.bbox={}] Translate BBox to output LineString\n * @param {number|string} [options.id={}] Translate Id to output LineString\n * @returns {Feature<LineString>} 2-vertex GeoJSON Feature LineString\n * @example\n * var multiLine = turf.multiLineString([\n *     [[10, 10], [50, 30], [30, 40]],\n *     [[-10, -10], [-50, -30], [-30, -40]]\n * ]);\n *\n * // First Segment (defaults are 0)\n * turf.findSegment(multiLine);\n * // => Feature<LineString<[[10, 10], [50, 30]]>>\n *\n * // First Segment of 2nd Multi Feature\n * turf.findSegment(multiLine, {multiFeatureIndex: 1});\n * // => Feature<LineString<[[-10, -10], [-50, -30]]>>\n *\n * // Last Segment of Last Multi Feature\n * turf.findSegment(multiLine, {multiFeatureIndex: -1, segmentIndex: -1});\n * // => Feature<LineString<[[-50, -30], [-30, -40]]>>\n */\nfunction findSegment(geojson, options) {\n  // Optional Parameters\n  options = options || {};\n  if (!helpers.isObject(options)) throw new Error(\"options is invalid\");\n  var featureIndex = options.featureIndex || 0;\n  var multiFeatureIndex = options.multiFeatureIndex || 0;\n  var geometryIndex = options.geometryIndex || 0;\n  var segmentIndex = options.segmentIndex || 0;\n\n  // Find FeatureIndex\n  var properties = options.properties;\n  var geometry;\n\n  switch (geojson.type) {\n    case \"FeatureCollection\":\n      if (featureIndex < 0)\n        featureIndex = geojson.features.length + featureIndex;\n      properties = properties || geojson.features[featureIndex].properties;\n      geometry = geojson.features[featureIndex].geometry;\n      break;\n    case \"Feature\":\n      properties = properties || geojson.properties;\n      geometry = geojson.geometry;\n      break;\n    case \"Point\":\n    case \"MultiPoint\":\n      return null;\n    case \"LineString\":\n    case \"Polygon\":\n    case \"MultiLineString\":\n    case \"MultiPolygon\":\n      geometry = geojson;\n      break;\n    default:\n      throw new Error(\"geojson is invalid\");\n  }\n\n  // Find SegmentIndex\n  if (geometry === null) return null;\n  var coords = geometry.coordinates;\n  switch (geometry.type) {\n    case \"Point\":\n    case \"MultiPoint\":\n      return null;\n    case \"LineString\":\n      if (segmentIndex < 0) segmentIndex = coords.length + segmentIndex - 1;\n      return helpers.lineString(\n        [coords[segmentIndex], coords[segmentIndex + 1]],\n        properties,\n        options\n      );\n    case \"Polygon\":\n      if (geometryIndex < 0) geometryIndex = coords.length + geometryIndex;\n      if (segmentIndex < 0)\n        segmentIndex = coords[geometryIndex].length + segmentIndex - 1;\n      return helpers.lineString(\n        [\n          coords[geometryIndex][segmentIndex],\n          coords[geometryIndex][segmentIndex + 1],\n        ],\n        properties,\n        options\n      );\n    case \"MultiLineString\":\n      if (multiFeatureIndex < 0)\n        multiFeatureIndex = coords.length + multiFeatureIndex;\n      if (segmentIndex < 0)\n        segmentIndex = coords[multiFeatureIndex].length + segmentIndex - 1;\n      return helpers.lineString(\n        [\n          coords[multiFeatureIndex][segmentIndex],\n          coords[multiFeatureIndex][segmentIndex + 1],\n        ],\n        properties,\n        options\n      );\n    case \"MultiPolygon\":\n      if (multiFeatureIndex < 0)\n        multiFeatureIndex = coords.length + multiFeatureIndex;\n      if (geometryIndex < 0)\n        geometryIndex = coords[multiFeatureIndex].length + geometryIndex;\n      if (segmentIndex < 0)\n        segmentIndex =\n          coords[multiFeatureIndex][geometryIndex].length - segmentIndex - 1;\n      return helpers.lineString(\n        [\n          coords[multiFeatureIndex][geometryIndex][segmentIndex],\n          coords[multiFeatureIndex][geometryIndex][segmentIndex + 1],\n        ],\n        properties,\n        options\n      );\n  }\n  throw new Error(\"geojson is invalid\");\n}\n\n/**\n * Finds a particular Point from a GeoJSON using `@turf/meta` indexes.\n *\n * Negative indexes are permitted.\n *\n * @param {FeatureCollection|Feature|Geometry} geojson Any GeoJSON Feature or Geometry\n * @param {Object} [options={}] Optional parameters\n * @param {number} [options.featureIndex=0] Feature Index\n * @param {number} [options.multiFeatureIndex=0] Multi-Feature Index\n * @param {number} [options.geometryIndex=0] Geometry Index\n * @param {number} [options.coordIndex=0] Coord Index\n * @param {Object} [options.properties={}] Translate Properties to output Point\n * @param {BBox} [options.bbox={}] Translate BBox to output Point\n * @param {number|string} [options.id={}] Translate Id to output Point\n * @returns {Feature<Point>} 2-vertex GeoJSON Feature Point\n * @example\n * var multiLine = turf.multiLineString([\n *     [[10, 10], [50, 30], [30, 40]],\n *     [[-10, -10], [-50, -30], [-30, -40]]\n * ]);\n *\n * // First Segment (defaults are 0)\n * turf.findPoint(multiLine);\n * // => Feature<Point<[10, 10]>>\n *\n * // First Segment of the 2nd Multi-Feature\n * turf.findPoint(multiLine, {multiFeatureIndex: 1});\n * // => Feature<Point<[-10, -10]>>\n *\n * // Last Segment of last Multi-Feature\n * turf.findPoint(multiLine, {multiFeatureIndex: -1, coordIndex: -1});\n * // => Feature<Point<[-30, -40]>>\n */\nfunction findPoint(geojson, options) {\n  // Optional Parameters\n  options = options || {};\n  if (!helpers.isObject(options)) throw new Error(\"options is invalid\");\n  var featureIndex = options.featureIndex || 0;\n  var multiFeatureIndex = options.multiFeatureIndex || 0;\n  var geometryIndex = options.geometryIndex || 0;\n  var coordIndex = options.coordIndex || 0;\n\n  // Find FeatureIndex\n  var properties = options.properties;\n  var geometry;\n\n  switch (geojson.type) {\n    case \"FeatureCollection\":\n      if (featureIndex < 0)\n        featureIndex = geojson.features.length + featureIndex;\n      properties = properties || geojson.features[featureIndex].properties;\n      geometry = geojson.features[featureIndex].geometry;\n      break;\n    case \"Feature\":\n      properties = properties || geojson.properties;\n      geometry = geojson.geometry;\n      break;\n    case \"Point\":\n    case \"MultiPoint\":\n      return null;\n    case \"LineString\":\n    case \"Polygon\":\n    case \"MultiLineString\":\n    case \"MultiPolygon\":\n      geometry = geojson;\n      break;\n    default:\n      throw new Error(\"geojson is invalid\");\n  }\n\n  // Find Coord Index\n  if (geometry === null) return null;\n  var coords = geometry.coordinates;\n  switch (geometry.type) {\n    case \"Point\":\n      return helpers.point(coords, properties, options);\n    case \"MultiPoint\":\n      if (multiFeatureIndex < 0)\n        multiFeatureIndex = coords.length + multiFeatureIndex;\n      return helpers.point(coords[multiFeatureIndex], properties, options);\n    case \"LineString\":\n      if (coordIndex < 0) coordIndex = coords.length + coordIndex;\n      return helpers.point(coords[coordIndex], properties, options);\n    case \"Polygon\":\n      if (geometryIndex < 0) geometryIndex = coords.length + geometryIndex;\n      if (coordIndex < 0)\n        coordIndex = coords[geometryIndex].length + coordIndex;\n      return helpers.point(coords[geometryIndex][coordIndex], properties, options);\n    case \"MultiLineString\":\n      if (multiFeatureIndex < 0)\n        multiFeatureIndex = coords.length + multiFeatureIndex;\n      if (coordIndex < 0)\n        coordIndex = coords[multiFeatureIndex].length + coordIndex;\n      return helpers.point(coords[multiFeatureIndex][coordIndex], properties, options);\n    case \"MultiPolygon\":\n      if (multiFeatureIndex < 0)\n        multiFeatureIndex = coords.length + multiFeatureIndex;\n      if (geometryIndex < 0)\n        geometryIndex = coords[multiFeatureIndex].length + geometryIndex;\n      if (coordIndex < 0)\n        coordIndex =\n          coords[multiFeatureIndex][geometryIndex].length - coordIndex;\n      return helpers.point(\n        coords[multiFeatureIndex][geometryIndex][coordIndex],\n        properties,\n        options\n      );\n  }\n  throw new Error(\"geojson is invalid\");\n}\n\nexports.coordAll = coordAll;\nexports.coordEach = coordEach;\nexports.coordReduce = coordReduce;\nexports.featureEach = featureEach;\nexports.featureReduce = featureReduce;\nexports.findPoint = findPoint;\nexports.findSegment = findSegment;\nexports.flattenEach = flattenEach;\nexports.flattenReduce = flattenReduce;\nexports.geomEach = geomEach;\nexports.geomReduce = geomReduce;\nexports.lineEach = lineEach;\nexports.lineReduce = lineReduce;\nexports.propEach = propEach;\nexports.propReduce = propReduce;\nexports.segmentEach = segmentEach;\nexports.segmentReduce = segmentReduce;\n","'use strict';\n\nvar meta = require('@turf/meta');\nvar helpers = require('@turf/helpers');\nvar invariant = require('@turf/invariant');\nvar clone = require('@turf/clone');\nvar rhumbDestination = require('@turf/rhumb-destination');\n\nfunction _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }\n\nvar clone__default = /*#__PURE__*/_interopDefaultLegacy(clone);\nvar rhumbDestination__default = /*#__PURE__*/_interopDefaultLegacy(rhumbDestination);\n\n/**\n * Moves any geojson Feature or Geometry of a specified distance along a Rhumb Line\n * on the provided direction angle.\n *\n * @name transformTranslate\n * @param {GeoJSON} geojson object to be translated\n * @param {number} distance length of the motion; negative values determine motion in opposite direction\n * @param {number} direction of the motion; angle from North in decimal degrees, positive clockwise\n * @param {Object} [options={}] Optional parameters\n * @param {string} [options.units='kilometers'] in which `distance` will be express; miles, kilometers, degrees, or radians\n * @param {number} [options.zTranslation=0] length of the vertical motion, same unit of distance\n * @param {boolean} [options.mutate=false] allows GeoJSON input to be mutated (significant performance increase if true)\n * @returns {GeoJSON} the translated GeoJSON object\n * @example\n * var poly = turf.polygon([[[0,29],[3.5,29],[2.5,32],[0,29]]]);\n * var translatedPoly = turf.transformTranslate(poly, 100, 35);\n *\n * //addToMap\n * var addToMap = [poly, translatedPoly];\n * translatedPoly.properties = {stroke: '#F00', 'stroke-width': 4};\n */\nfunction transformTranslate(geojson, distance, direction, options) {\n  // Optional parameters\n  options = options || {};\n  if (!helpers.isObject(options)) throw new Error(\"options is invalid\");\n  var units = options.units;\n  var zTranslation = options.zTranslation;\n  var mutate = options.mutate;\n\n  // Input validation\n  if (!geojson) throw new Error(\"geojson is required\");\n  if (distance === undefined || distance === null || isNaN(distance))\n    throw new Error(\"distance is required\");\n  if (zTranslation && typeof zTranslation !== \"number\" && isNaN(zTranslation))\n    throw new Error(\"zTranslation is not a number\");\n\n  // Shortcut no-motion\n  zTranslation = zTranslation !== undefined ? zTranslation : 0;\n  if (distance === 0 && zTranslation === 0) return geojson;\n\n  if (direction === undefined || direction === null || isNaN(direction))\n    throw new Error(\"direction is required\");\n\n  // Invert with negative distances\n  if (distance < 0) {\n    distance = -distance;\n    direction = direction + 180;\n  }\n\n  // Clone geojson to avoid side effects\n  if (mutate === false || mutate === undefined) geojson = clone__default['default'](geojson);\n\n  // Translate each coordinate\n  meta.coordEach(geojson, function (pointCoords) {\n    var newCoords = invariant.getCoords(\n      rhumbDestination__default['default'](pointCoords, distance, direction, { units: units })\n    );\n    pointCoords[0] = newCoords[0];\n    pointCoords[1] = newCoords[1];\n    if (zTranslation && pointCoords.length === 3)\n      pointCoords[2] += zTranslation;\n  });\n  return geojson;\n}\n\nmodule.exports = transformTranslate;\nmodule.exports.default = transformTranslate;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * Returns a cloned copy of the passed GeoJSON Object, including possible 'Foreign Members'.\n * ~3-5x faster than the common JSON.parse + JSON.stringify combo method.\n *\n * @name clone\n * @param {GeoJSON} geojson GeoJSON Object\n * @returns {GeoJSON} cloned GeoJSON Object\n * @example\n * var line = turf.lineString([[-74, 40], [-78, 42], [-82, 35]], {color: 'red'});\n *\n * var lineCloned = turf.clone(line);\n */\nfunction clone(geojson) {\n    if (!geojson) {\n        throw new Error(\"geojson is required\");\n    }\n    switch (geojson.type) {\n        case \"Feature\":\n            return cloneFeature(geojson);\n        case \"FeatureCollection\":\n            return cloneFeatureCollection(geojson);\n        case \"Point\":\n        case \"LineString\":\n        case \"Polygon\":\n        case \"MultiPoint\":\n        case \"MultiLineString\":\n        case \"MultiPolygon\":\n        case \"GeometryCollection\":\n            return cloneGeometry(geojson);\n        default:\n            throw new Error(\"unknown GeoJSON type\");\n    }\n}\n/**\n * Clone Feature\n *\n * @private\n * @param {Feature<any>} geojson GeoJSON Feature\n * @returns {Feature<any>} cloned Feature\n */\nfunction cloneFeature(geojson) {\n    var cloned = { type: \"Feature\" };\n    // Preserve Foreign Members\n    Object.keys(geojson).forEach(function (key) {\n        switch (key) {\n            case \"type\":\n            case \"properties\":\n            case \"geometry\":\n                return;\n            default:\n                cloned[key] = geojson[key];\n        }\n    });\n    // Add properties & geometry last\n    cloned.properties = cloneProperties(geojson.properties);\n    cloned.geometry = cloneGeometry(geojson.geometry);\n    return cloned;\n}\n/**\n * Clone Properties\n *\n * @private\n * @param {Object} properties GeoJSON Properties\n * @returns {Object} cloned Properties\n */\nfunction cloneProperties(properties) {\n    var cloned = {};\n    if (!properties) {\n        return cloned;\n    }\n    Object.keys(properties).forEach(function (key) {\n        var value = properties[key];\n        if (typeof value === \"object\") {\n            if (value === null) {\n                // handle null\n                cloned[key] = null;\n            }\n            else if (Array.isArray(value)) {\n                // handle Array\n                cloned[key] = value.map(function (item) {\n                    return item;\n                });\n            }\n            else {\n                // handle generic Object\n                cloned[key] = cloneProperties(value);\n            }\n        }\n        else {\n            cloned[key] = value;\n        }\n    });\n    return cloned;\n}\n/**\n * Clone Feature Collection\n *\n * @private\n * @param {FeatureCollection<any>} geojson GeoJSON Feature Collection\n * @returns {FeatureCollection<any>} cloned Feature Collection\n */\nfunction cloneFeatureCollection(geojson) {\n    var cloned = { type: \"FeatureCollection\" };\n    // Preserve Foreign Members\n    Object.keys(geojson).forEach(function (key) {\n        switch (key) {\n            case \"type\":\n            case \"features\":\n                return;\n            default:\n                cloned[key] = geojson[key];\n        }\n    });\n    // Add features\n    cloned.features = geojson.features.map(function (feature) {\n        return cloneFeature(feature);\n    });\n    return cloned;\n}\n/**\n * Clone Geometry\n *\n * @private\n * @param {Geometry<any>} geometry GeoJSON Geometry\n * @returns {Geometry<any>} cloned Geometry\n */\nfunction cloneGeometry(geometry) {\n    var geom = { type: geometry.type };\n    if (geometry.bbox) {\n        geom.bbox = geometry.bbox;\n    }\n    if (geometry.type === \"GeometryCollection\") {\n        geom.geometries = geometry.geometries.map(function (g) {\n            return cloneGeometry(g);\n        });\n        return geom;\n    }\n    geom.coordinates = deepSlice(geometry.coordinates);\n    return geom;\n}\n/**\n * Deep Slice coordinates\n *\n * @private\n * @param {Coordinates} coords Coordinates\n * @returns {Coordinates} all coordinates sliced\n */\nfunction deepSlice(coords) {\n    var cloned = coords;\n    if (typeof cloned[0] !== \"object\") {\n        return cloned.slice();\n    }\n    return cloned.map(function (coord) {\n        return deepSlice(coord);\n    });\n}\nexports.default = clone;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * @module helpers\n */\n/**\n * Earth Radius used with the Harvesine formula and approximates using a spherical (non-ellipsoid) Earth.\n *\n * @memberof helpers\n * @type {number}\n */\nexports.earthRadius = 6371008.8;\n/**\n * Unit of measurement factors using a spherical (non-ellipsoid) earth radius.\n *\n * @memberof helpers\n * @type {Object}\n */\nexports.factors = {\n    centimeters: exports.earthRadius * 100,\n    centimetres: exports.earthRadius * 100,\n    degrees: exports.earthRadius / 111325,\n    feet: exports.earthRadius * 3.28084,\n    inches: exports.earthRadius * 39.37,\n    kilometers: exports.earthRadius / 1000,\n    kilometres: exports.earthRadius / 1000,\n    meters: exports.earthRadius,\n    metres: exports.earthRadius,\n    miles: exports.earthRadius / 1609.344,\n    millimeters: exports.earthRadius * 1000,\n    millimetres: exports.earthRadius * 1000,\n    nauticalmiles: exports.earthRadius / 1852,\n    radians: 1,\n    yards: exports.earthRadius * 1.0936,\n};\n/**\n * Units of measurement factors based on 1 meter.\n *\n * @memberof helpers\n * @type {Object}\n */\nexports.unitsFactors = {\n    centimeters: 100,\n    centimetres: 100,\n    degrees: 1 / 111325,\n    feet: 3.28084,\n    inches: 39.37,\n    kilometers: 1 / 1000,\n    kilometres: 1 / 1000,\n    meters: 1,\n    metres: 1,\n    miles: 1 / 1609.344,\n    millimeters: 1000,\n    millimetres: 1000,\n    nauticalmiles: 1 / 1852,\n    radians: 1 / exports.earthRadius,\n    yards: 1.0936133,\n};\n/**\n * Area of measurement factors based on 1 square meter.\n *\n * @memberof helpers\n * @type {Object}\n */\nexports.areaFactors = {\n    acres: 0.000247105,\n    centimeters: 10000,\n    centimetres: 10000,\n    feet: 10.763910417,\n    hectares: 0.0001,\n    inches: 1550.003100006,\n    kilometers: 0.000001,\n    kilometres: 0.000001,\n    meters: 1,\n    metres: 1,\n    miles: 3.86e-7,\n    millimeters: 1000000,\n    millimetres: 1000000,\n    yards: 1.195990046,\n};\n/**\n * Wraps a GeoJSON {@link Geometry} in a GeoJSON {@link Feature}.\n *\n * @name feature\n * @param {Geometry} geometry input geometry\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} a GeoJSON Feature\n * @example\n * var geometry = {\n *   \"type\": \"Point\",\n *   \"coordinates\": [110, 50]\n * };\n *\n * var feature = turf.feature(geometry);\n *\n * //=feature\n */\nfunction feature(geom, properties, options) {\n    if (options === void 0) { options = {}; }\n    var feat = { type: \"Feature\" };\n    if (options.id === 0 || options.id) {\n        feat.id = options.id;\n    }\n    if (options.bbox) {\n        feat.bbox = options.bbox;\n    }\n    feat.properties = properties || {};\n    feat.geometry = geom;\n    return feat;\n}\nexports.feature = feature;\n/**\n * Creates a GeoJSON {@link Geometry} from a Geometry string type & coordinates.\n * For GeometryCollection type use `helpers.geometryCollection`\n *\n * @name geometry\n * @param {string} type Geometry Type\n * @param {Array<any>} coordinates Coordinates\n * @param {Object} [options={}] Optional Parameters\n * @returns {Geometry} a GeoJSON Geometry\n * @example\n * var type = \"Point\";\n * var coordinates = [110, 50];\n * var geometry = turf.geometry(type, coordinates);\n * // => geometry\n */\nfunction geometry(type, coordinates, _options) {\n    if (_options === void 0) { _options = {}; }\n    switch (type) {\n        case \"Point\":\n            return point(coordinates).geometry;\n        case \"LineString\":\n            return lineString(coordinates).geometry;\n        case \"Polygon\":\n            return polygon(coordinates).geometry;\n        case \"MultiPoint\":\n            return multiPoint(coordinates).geometry;\n        case \"MultiLineString\":\n            return multiLineString(coordinates).geometry;\n        case \"MultiPolygon\":\n            return multiPolygon(coordinates).geometry;\n        default:\n            throw new Error(type + \" is invalid\");\n    }\n}\nexports.geometry = geometry;\n/**\n * Creates a {@link Point} {@link Feature} from a Position.\n *\n * @name point\n * @param {Array<number>} coordinates longitude, latitude position (each in decimal degrees)\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<Point>} a Point feature\n * @example\n * var point = turf.point([-75.343, 39.984]);\n *\n * //=point\n */\nfunction point(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    if (!coordinates) {\n        throw new Error(\"coordinates is required\");\n    }\n    if (!Array.isArray(coordinates)) {\n        throw new Error(\"coordinates must be an Array\");\n    }\n    if (coordinates.length < 2) {\n        throw new Error(\"coordinates must be at least 2 numbers long\");\n    }\n    if (!isNumber(coordinates[0]) || !isNumber(coordinates[1])) {\n        throw new Error(\"coordinates must contain numbers\");\n    }\n    var geom = {\n        type: \"Point\",\n        coordinates: coordinates,\n    };\n    return feature(geom, properties, options);\n}\nexports.point = point;\n/**\n * Creates a {@link Point} {@link FeatureCollection} from an Array of Point coordinates.\n *\n * @name points\n * @param {Array<Array<number>>} coordinates an array of Points\n * @param {Object} [properties={}] Translate these properties to each Feature\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north]\n * associated with the FeatureCollection\n * @param {string|number} [options.id] Identifier associated with the FeatureCollection\n * @returns {FeatureCollection<Point>} Point Feature\n * @example\n * var points = turf.points([\n *   [-75, 39],\n *   [-80, 45],\n *   [-78, 50]\n * ]);\n *\n * //=points\n */\nfunction points(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    return featureCollection(coordinates.map(function (coords) {\n        return point(coords, properties);\n    }), options);\n}\nexports.points = points;\n/**\n * Creates a {@link Polygon} {@link Feature} from an Array of LinearRings.\n *\n * @name polygon\n * @param {Array<Array<Array<number>>>} coordinates an array of LinearRings\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<Polygon>} Polygon Feature\n * @example\n * var polygon = turf.polygon([[[-5, 52], [-4, 56], [-2, 51], [-7, 54], [-5, 52]]], { name: 'poly1' });\n *\n * //=polygon\n */\nfunction polygon(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    for (var _i = 0, coordinates_1 = coordinates; _i < coordinates_1.length; _i++) {\n        var ring = coordinates_1[_i];\n        if (ring.length < 4) {\n            throw new Error(\"Each LinearRing of a Polygon must have 4 or more Positions.\");\n        }\n        for (var j = 0; j < ring[ring.length - 1].length; j++) {\n            // Check if first point of Polygon contains two numbers\n            if (ring[ring.length - 1][j] !== ring[0][j]) {\n                throw new Error(\"First and last Position are not equivalent.\");\n            }\n        }\n    }\n    var geom = {\n        type: \"Polygon\",\n        coordinates: coordinates,\n    };\n    return feature(geom, properties, options);\n}\nexports.polygon = polygon;\n/**\n * Creates a {@link Polygon} {@link FeatureCollection} from an Array of Polygon coordinates.\n *\n * @name polygons\n * @param {Array<Array<Array<Array<number>>>>} coordinates an array of Polygon coordinates\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the FeatureCollection\n * @returns {FeatureCollection<Polygon>} Polygon FeatureCollection\n * @example\n * var polygons = turf.polygons([\n *   [[[-5, 52], [-4, 56], [-2, 51], [-7, 54], [-5, 52]]],\n *   [[[-15, 42], [-14, 46], [-12, 41], [-17, 44], [-15, 42]]],\n * ]);\n *\n * //=polygons\n */\nfunction polygons(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    return featureCollection(coordinates.map(function (coords) {\n        return polygon(coords, properties);\n    }), options);\n}\nexports.polygons = polygons;\n/**\n * Creates a {@link LineString} {@link Feature} from an Array of Positions.\n *\n * @name lineString\n * @param {Array<Array<number>>} coordinates an array of Positions\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<LineString>} LineString Feature\n * @example\n * var linestring1 = turf.lineString([[-24, 63], [-23, 60], [-25, 65], [-20, 69]], {name: 'line 1'});\n * var linestring2 = turf.lineString([[-14, 43], [-13, 40], [-15, 45], [-10, 49]], {name: 'line 2'});\n *\n * //=linestring1\n * //=linestring2\n */\nfunction lineString(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    if (coordinates.length < 2) {\n        throw new Error(\"coordinates must be an array of two or more positions\");\n    }\n    var geom = {\n        type: \"LineString\",\n        coordinates: coordinates,\n    };\n    return feature(geom, properties, options);\n}\nexports.lineString = lineString;\n/**\n * Creates a {@link LineString} {@link FeatureCollection} from an Array of LineString coordinates.\n *\n * @name lineStrings\n * @param {Array<Array<Array<number>>>} coordinates an array of LinearRings\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north]\n * associated with the FeatureCollection\n * @param {string|number} [options.id] Identifier associated with the FeatureCollection\n * @returns {FeatureCollection<LineString>} LineString FeatureCollection\n * @example\n * var linestrings = turf.lineStrings([\n *   [[-24, 63], [-23, 60], [-25, 65], [-20, 69]],\n *   [[-14, 43], [-13, 40], [-15, 45], [-10, 49]]\n * ]);\n *\n * //=linestrings\n */\nfunction lineStrings(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    return featureCollection(coordinates.map(function (coords) {\n        return lineString(coords, properties);\n    }), options);\n}\nexports.lineStrings = lineStrings;\n/**\n * Takes one or more {@link Feature|Features} and creates a {@link FeatureCollection}.\n *\n * @name featureCollection\n * @param {Feature[]} features input features\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {FeatureCollection} FeatureCollection of Features\n * @example\n * var locationA = turf.point([-75.343, 39.984], {name: 'Location A'});\n * var locationB = turf.point([-75.833, 39.284], {name: 'Location B'});\n * var locationC = turf.point([-75.534, 39.123], {name: 'Location C'});\n *\n * var collection = turf.featureCollection([\n *   locationA,\n *   locationB,\n *   locationC\n * ]);\n *\n * //=collection\n */\nfunction featureCollection(features, options) {\n    if (options === void 0) { options = {}; }\n    var fc = { type: \"FeatureCollection\" };\n    if (options.id) {\n        fc.id = options.id;\n    }\n    if (options.bbox) {\n        fc.bbox = options.bbox;\n    }\n    fc.features = features;\n    return fc;\n}\nexports.featureCollection = featureCollection;\n/**\n * Creates a {@link Feature<MultiLineString>} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name multiLineString\n * @param {Array<Array<Array<number>>>} coordinates an array of LineStrings\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<MultiLineString>} a MultiLineString feature\n * @throws {Error} if no coordinates are passed\n * @example\n * var multiLine = turf.multiLineString([[[0,0],[10,10]]]);\n *\n * //=multiLine\n */\nfunction multiLineString(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    var geom = {\n        type: \"MultiLineString\",\n        coordinates: coordinates,\n    };\n    return feature(geom, properties, options);\n}\nexports.multiLineString = multiLineString;\n/**\n * Creates a {@link Feature<MultiPoint>} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name multiPoint\n * @param {Array<Array<number>>} coordinates an array of Positions\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<MultiPoint>} a MultiPoint feature\n * @throws {Error} if no coordinates are passed\n * @example\n * var multiPt = turf.multiPoint([[0,0],[10,10]]);\n *\n * //=multiPt\n */\nfunction multiPoint(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    var geom = {\n        type: \"MultiPoint\",\n        coordinates: coordinates,\n    };\n    return feature(geom, properties, options);\n}\nexports.multiPoint = multiPoint;\n/**\n * Creates a {@link Feature<MultiPolygon>} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name multiPolygon\n * @param {Array<Array<Array<Array<number>>>>} coordinates an array of Polygons\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<MultiPolygon>} a multipolygon feature\n * @throws {Error} if no coordinates are passed\n * @example\n * var multiPoly = turf.multiPolygon([[[[0,0],[0,10],[10,10],[10,0],[0,0]]]]);\n *\n * //=multiPoly\n *\n */\nfunction multiPolygon(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    var geom = {\n        type: \"MultiPolygon\",\n        coordinates: coordinates,\n    };\n    return feature(geom, properties, options);\n}\nexports.multiPolygon = multiPolygon;\n/**\n * Creates a {@link Feature<GeometryCollection>} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name geometryCollection\n * @param {Array<Geometry>} geometries an array of GeoJSON Geometries\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<GeometryCollection>} a GeoJSON GeometryCollection Feature\n * @example\n * var pt = turf.geometry(\"Point\", [100, 0]);\n * var line = turf.geometry(\"LineString\", [[101, 0], [102, 1]]);\n * var collection = turf.geometryCollection([pt, line]);\n *\n * // => collection\n */\nfunction geometryCollection(geometries, properties, options) {\n    if (options === void 0) { options = {}; }\n    var geom = {\n        type: \"GeometryCollection\",\n        geometries: geometries,\n    };\n    return feature(geom, properties, options);\n}\nexports.geometryCollection = geometryCollection;\n/**\n * Round number to precision\n *\n * @param {number} num Number\n * @param {number} [precision=0] Precision\n * @returns {number} rounded number\n * @example\n * turf.round(120.4321)\n * //=120\n *\n * turf.round(120.4321, 2)\n * //=120.43\n */\nfunction round(num, precision) {\n    if (precision === void 0) { precision = 0; }\n    if (precision && !(precision >= 0)) {\n        throw new Error(\"precision must be a positive number\");\n    }\n    var multiplier = Math.pow(10, precision || 0);\n    return Math.round(num * multiplier) / multiplier;\n}\nexports.round = round;\n/**\n * Convert a distance measurement (assuming a spherical Earth) from radians to a more friendly unit.\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet\n *\n * @name radiansToLength\n * @param {number} radians in radians across the sphere\n * @param {string} [units=\"kilometers\"] can be degrees, radians, miles, inches, yards, metres,\n * meters, kilometres, kilometers.\n * @returns {number} distance\n */\nfunction radiansToLength(radians, units) {\n    if (units === void 0) { units = \"kilometers\"; }\n    var factor = exports.factors[units];\n    if (!factor) {\n        throw new Error(units + \" units is invalid\");\n    }\n    return radians * factor;\n}\nexports.radiansToLength = radiansToLength;\n/**\n * Convert a distance measurement (assuming a spherical Earth) from a real-world unit into radians\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet\n *\n * @name lengthToRadians\n * @param {number} distance in real units\n * @param {string} [units=\"kilometers\"] can be degrees, radians, miles, inches, yards, metres,\n * meters, kilometres, kilometers.\n * @returns {number} radians\n */\nfunction lengthToRadians(distance, units) {\n    if (units === void 0) { units = \"kilometers\"; }\n    var factor = exports.factors[units];\n    if (!factor) {\n        throw new Error(units + \" units is invalid\");\n    }\n    return distance / factor;\n}\nexports.lengthToRadians = lengthToRadians;\n/**\n * Convert a distance measurement (assuming a spherical Earth) from a real-world unit into degrees\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, centimeters, kilometres, feet\n *\n * @name lengthToDegrees\n * @param {number} distance in real units\n * @param {string} [units=\"kilometers\"] can be degrees, radians, miles, inches, yards, metres,\n * meters, kilometres, kilometers.\n * @returns {number} degrees\n */\nfunction lengthToDegrees(distance, units) {\n    return radiansToDegrees(lengthToRadians(distance, units));\n}\nexports.lengthToDegrees = lengthToDegrees;\n/**\n * Converts any bearing angle from the north line direction (positive clockwise)\n * and returns an angle between 0-360 degrees (positive clockwise), 0 being the north line\n *\n * @name bearingToAzimuth\n * @param {number} bearing angle, between -180 and +180 degrees\n * @returns {number} angle between 0 and 360 degrees\n */\nfunction bearingToAzimuth(bearing) {\n    var angle = bearing % 360;\n    if (angle < 0) {\n        angle += 360;\n    }\n    return angle;\n}\nexports.bearingToAzimuth = bearingToAzimuth;\n/**\n * Converts an angle in radians to degrees\n *\n * @name radiansToDegrees\n * @param {number} radians angle in radians\n * @returns {number} degrees between 0 and 360 degrees\n */\nfunction radiansToDegrees(radians) {\n    var degrees = radians % (2 * Math.PI);\n    return (degrees * 180) / Math.PI;\n}\nexports.radiansToDegrees = radiansToDegrees;\n/**\n * Converts an angle in degrees to radians\n *\n * @name degreesToRadians\n * @param {number} degrees angle between 0 and 360 degrees\n * @returns {number} angle in radians\n */\nfunction degreesToRadians(degrees) {\n    var radians = degrees % 360;\n    return (radians * Math.PI) / 180;\n}\nexports.degreesToRadians = degreesToRadians;\n/**\n * Converts a length to the requested unit.\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet\n *\n * @param {number} length to be converted\n * @param {Units} [originalUnit=\"kilometers\"] of the length\n * @param {Units} [finalUnit=\"kilometers\"] returned unit\n * @returns {number} the converted length\n */\nfunction convertLength(length, originalUnit, finalUnit) {\n    if (originalUnit === void 0) { originalUnit = \"kilometers\"; }\n    if (finalUnit === void 0) { finalUnit = \"kilometers\"; }\n    if (!(length >= 0)) {\n        throw new Error(\"length must be a positive number\");\n    }\n    return radiansToLength(lengthToRadians(length, originalUnit), finalUnit);\n}\nexports.convertLength = convertLength;\n/**\n * Converts a area to the requested unit.\n * Valid units: kilometers, kilometres, meters, metres, centimetres, millimeters, acres, miles, yards, feet, inches, hectares\n * @param {number} area to be converted\n * @param {Units} [originalUnit=\"meters\"] of the distance\n * @param {Units} [finalUnit=\"kilometers\"] returned unit\n * @returns {number} the converted area\n */\nfunction convertArea(area, originalUnit, finalUnit) {\n    if (originalUnit === void 0) { originalUnit = \"meters\"; }\n    if (finalUnit === void 0) { finalUnit = \"kilometers\"; }\n    if (!(area >= 0)) {\n        throw new Error(\"area must be a positive number\");\n    }\n    var startFactor = exports.areaFactors[originalUnit];\n    if (!startFactor) {\n        throw new Error(\"invalid original units\");\n    }\n    var finalFactor = exports.areaFactors[finalUnit];\n    if (!finalFactor) {\n        throw new Error(\"invalid final units\");\n    }\n    return (area / startFactor) * finalFactor;\n}\nexports.convertArea = convertArea;\n/**\n * isNumber\n *\n * @param {*} num Number to validate\n * @returns {boolean} true/false\n * @example\n * turf.isNumber(123)\n * //=true\n * turf.isNumber('foo')\n * //=false\n */\nfunction isNumber(num) {\n    return !isNaN(num) && num !== null && !Array.isArray(num);\n}\nexports.isNumber = isNumber;\n/**\n * isObject\n *\n * @param {*} input variable to validate\n * @returns {boolean} true/false\n * @example\n * turf.isObject({elevation: 10})\n * //=true\n * turf.isObject('foo')\n * //=false\n */\nfunction isObject(input) {\n    return !!input && input.constructor === Object;\n}\nexports.isObject = isObject;\n/**\n * Validate BBox\n *\n * @private\n * @param {Array<number>} bbox BBox to validate\n * @returns {void}\n * @throws Error if BBox is not valid\n * @example\n * validateBBox([-180, -40, 110, 50])\n * //=OK\n * validateBBox([-180, -40])\n * //=Error\n * validateBBox('Foo')\n * //=Error\n * validateBBox(5)\n * //=Error\n * validateBBox(null)\n * //=Error\n * validateBBox(undefined)\n * //=Error\n */\nfunction validateBBox(bbox) {\n    if (!bbox) {\n        throw new Error(\"bbox is required\");\n    }\n    if (!Array.isArray(bbox)) {\n        throw new Error(\"bbox must be an Array\");\n    }\n    if (bbox.length !== 4 && bbox.length !== 6) {\n        throw new Error(\"bbox must be an Array of 4 or 6 numbers\");\n    }\n    bbox.forEach(function (num) {\n        if (!isNumber(num)) {\n            throw new Error(\"bbox must only contain numbers\");\n        }\n    });\n}\nexports.validateBBox = validateBBox;\n/**\n * Validate Id\n *\n * @private\n * @param {string|number} id Id to validate\n * @returns {void}\n * @throws Error if Id is not valid\n * @example\n * validateId([-180, -40, 110, 50])\n * //=Error\n * validateId([-180, -40])\n * //=Error\n * validateId('Foo')\n * //=OK\n * validateId(5)\n * //=OK\n * validateId(null)\n * //=Error\n * validateId(undefined)\n * //=Error\n */\nfunction validateId(id) {\n    if (!id) {\n        throw new Error(\"id is required\");\n    }\n    if ([\"string\", \"number\"].indexOf(typeof id) === -1) {\n        throw new Error(\"id must be a number or a string\");\n    }\n}\nexports.validateId = validateId;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar helpers_1 = require(\"@turf/helpers\");\n/**\n * Unwrap a coordinate from a Point Feature, Geometry or a single coordinate.\n *\n * @name getCoord\n * @param {Array<number>|Geometry<Point>|Feature<Point>} coord GeoJSON Point or an Array of numbers\n * @returns {Array<number>} coordinates\n * @example\n * var pt = turf.point([10, 10]);\n *\n * var coord = turf.getCoord(pt);\n * //= [10, 10]\n */\nfunction getCoord(coord) {\n    if (!coord) {\n        throw new Error(\"coord is required\");\n    }\n    if (!Array.isArray(coord)) {\n        if (coord.type === \"Feature\" &&\n            coord.geometry !== null &&\n            coord.geometry.type === \"Point\") {\n            return coord.geometry.coordinates;\n        }\n        if (coord.type === \"Point\") {\n            return coord.coordinates;\n        }\n    }\n    if (Array.isArray(coord) &&\n        coord.length >= 2 &&\n        !Array.isArray(coord[0]) &&\n        !Array.isArray(coord[1])) {\n        return coord;\n    }\n    throw new Error(\"coord must be GeoJSON Point or an Array of numbers\");\n}\nexports.getCoord = getCoord;\n/**\n * Unwrap coordinates from a Feature, Geometry Object or an Array\n *\n * @name getCoords\n * @param {Array<any>|Geometry|Feature} coords Feature, Geometry Object or an Array\n * @returns {Array<any>} coordinates\n * @example\n * var poly = turf.polygon([[[119.32, -8.7], [119.55, -8.69], [119.51, -8.54], [119.32, -8.7]]]);\n *\n * var coords = turf.getCoords(poly);\n * //= [[[119.32, -8.7], [119.55, -8.69], [119.51, -8.54], [119.32, -8.7]]]\n */\nfunction getCoords(coords) {\n    if (Array.isArray(coords)) {\n        return coords;\n    }\n    // Feature\n    if (coords.type === \"Feature\") {\n        if (coords.geometry !== null) {\n            return coords.geometry.coordinates;\n        }\n    }\n    else {\n        // Geometry\n        if (coords.coordinates) {\n            return coords.coordinates;\n        }\n    }\n    throw new Error(\"coords must be GeoJSON Feature, Geometry Object or an Array\");\n}\nexports.getCoords = getCoords;\n/**\n * Checks if coordinates contains a number\n *\n * @name containsNumber\n * @param {Array<any>} coordinates GeoJSON Coordinates\n * @returns {boolean} true if Array contains a number\n */\nfunction containsNumber(coordinates) {\n    if (coordinates.length > 1 &&\n        helpers_1.isNumber(coordinates[0]) &&\n        helpers_1.isNumber(coordinates[1])) {\n        return true;\n    }\n    if (Array.isArray(coordinates[0]) && coordinates[0].length) {\n        return containsNumber(coordinates[0]);\n    }\n    throw new Error(\"coordinates must only contain numbers\");\n}\nexports.containsNumber = containsNumber;\n/**\n * Enforce expectations about types of GeoJSON objects for Turf.\n *\n * @name geojsonType\n * @param {GeoJSON} value any GeoJSON object\n * @param {string} type expected GeoJSON type\n * @param {string} name name of calling function\n * @throws {Error} if value is not the expected type.\n */\nfunction geojsonType(value, type, name) {\n    if (!type || !name) {\n        throw new Error(\"type and name required\");\n    }\n    if (!value || value.type !== type) {\n        throw new Error(\"Invalid input to \" +\n            name +\n            \": must be a \" +\n            type +\n            \", given \" +\n            value.type);\n    }\n}\nexports.geojsonType = geojsonType;\n/**\n * Enforce expectations about types of {@link Feature} inputs for Turf.\n * Internally this uses {@link geojsonType} to judge geometry types.\n *\n * @name featureOf\n * @param {Feature} feature a feature with an expected geometry type\n * @param {string} type expected GeoJSON type\n * @param {string} name name of calling function\n * @throws {Error} error if value is not the expected type.\n */\nfunction featureOf(feature, type, name) {\n    if (!feature) {\n        throw new Error(\"No feature passed\");\n    }\n    if (!name) {\n        throw new Error(\".featureOf() requires a name\");\n    }\n    if (!feature || feature.type !== \"Feature\" || !feature.geometry) {\n        throw new Error(\"Invalid input to \" + name + \", Feature with geometry required\");\n    }\n    if (!feature.geometry || feature.geometry.type !== type) {\n        throw new Error(\"Invalid input to \" +\n            name +\n            \": must be a \" +\n            type +\n            \", given \" +\n            feature.geometry.type);\n    }\n}\nexports.featureOf = featureOf;\n/**\n * Enforce expectations about types of {@link FeatureCollection} inputs for Turf.\n * Internally this uses {@link geojsonType} to judge geometry types.\n *\n * @name collectionOf\n * @param {FeatureCollection} featureCollection a FeatureCollection for which features will be judged\n * @param {string} type expected GeoJSON type\n * @param {string} name name of calling function\n * @throws {Error} if value is not the expected type.\n */\nfunction collectionOf(featureCollection, type, name) {\n    if (!featureCollection) {\n        throw new Error(\"No featureCollection passed\");\n    }\n    if (!name) {\n        throw new Error(\".collectionOf() requires a name\");\n    }\n    if (!featureCollection || featureCollection.type !== \"FeatureCollection\") {\n        throw new Error(\"Invalid input to \" + name + \", FeatureCollection required\");\n    }\n    for (var _i = 0, _a = featureCollection.features; _i < _a.length; _i++) {\n        var feature = _a[_i];\n        if (!feature || feature.type !== \"Feature\" || !feature.geometry) {\n            throw new Error(\"Invalid input to \" + name + \", Feature with geometry required\");\n        }\n        if (!feature.geometry || feature.geometry.type !== type) {\n            throw new Error(\"Invalid input to \" +\n                name +\n                \": must be a \" +\n                type +\n                \", given \" +\n                feature.geometry.type);\n        }\n    }\n}\nexports.collectionOf = collectionOf;\n/**\n * Get Geometry from Feature or Geometry Object\n *\n * @param {Feature|Geometry} geojson GeoJSON Feature or Geometry Object\n * @returns {Geometry|null} GeoJSON Geometry Object\n * @throws {Error} if geojson is not a Feature or Geometry Object\n * @example\n * var point = {\n *   \"type\": \"Feature\",\n *   \"properties\": {},\n *   \"geometry\": {\n *     \"type\": \"Point\",\n *     \"coordinates\": [110, 40]\n *   }\n * }\n * var geom = turf.getGeom(point)\n * //={\"type\": \"Point\", \"coordinates\": [110, 40]}\n */\nfunction getGeom(geojson) {\n    if (geojson.type === \"Feature\") {\n        return geojson.geometry;\n    }\n    return geojson;\n}\nexports.getGeom = getGeom;\n/**\n * Get GeoJSON object's type, Geometry type is prioritize.\n *\n * @param {GeoJSON} geojson GeoJSON object\n * @param {string} [name=\"geojson\"] name of the variable to display in error message (unused)\n * @returns {string} GeoJSON type\n * @example\n * var point = {\n *   \"type\": \"Feature\",\n *   \"properties\": {},\n *   \"geometry\": {\n *     \"type\": \"Point\",\n *     \"coordinates\": [110, 40]\n *   }\n * }\n * var geom = turf.getType(point)\n * //=\"Point\"\n */\nfunction getType(geojson, _name) {\n    if (geojson.type === \"FeatureCollection\") {\n        return \"FeatureCollection\";\n    }\n    if (geojson.type === \"GeometryCollection\") {\n        return \"GeometryCollection\";\n    }\n    if (geojson.type === \"Feature\" && geojson.geometry !== null) {\n        return geojson.geometry.type;\n    }\n    return geojson.type;\n}\nexports.getType = getType;\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nvar helpers = require('@turf/helpers');\n\n/**\n * Callback for coordEach\n *\n * @callback coordEachCallback\n * @param {Array<number>} currentCoord The current coordinate being processed.\n * @param {number} coordIndex The current index of the coordinate being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n * @param {number} geometryIndex The current index of the Geometry being processed.\n */\n\n/**\n * Iterate over coordinates in any GeoJSON object, similar to Array.forEach()\n *\n * @name coordEach\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (currentCoord, coordIndex, featureIndex, multiFeatureIndex)\n * @param {boolean} [excludeWrapCoord=false] whether or not to include the final coordinate of LinearRings that wraps the ring in its iteration.\n * @returns {void}\n * @example\n * var features = turf.featureCollection([\n *   turf.point([26, 37], {\"foo\": \"bar\"}),\n *   turf.point([36, 53], {\"hello\": \"world\"})\n * ]);\n *\n * turf.coordEach(features, function (currentCoord, coordIndex, featureIndex, multiFeatureIndex, geometryIndex) {\n *   //=currentCoord\n *   //=coordIndex\n *   //=featureIndex\n *   //=multiFeatureIndex\n *   //=geometryIndex\n * });\n */\nfunction coordEach(geojson, callback, excludeWrapCoord) {\n  // Handles null Geometry -- Skips this GeoJSON\n  if (geojson === null) return;\n  var j,\n    k,\n    l,\n    geometry,\n    stopG,\n    coords,\n    geometryMaybeCollection,\n    wrapShrink = 0,\n    coordIndex = 0,\n    isGeometryCollection,\n    type = geojson.type,\n    isFeatureCollection = type === \"FeatureCollection\",\n    isFeature = type === \"Feature\",\n    stop = isFeatureCollection ? geojson.features.length : 1;\n\n  // This logic may look a little weird. The reason why it is that way\n  // is because it's trying to be fast. GeoJSON supports multiple kinds\n  // of objects at its root: FeatureCollection, Features, Geometries.\n  // This function has the responsibility of handling all of them, and that\n  // means that some of the `for` loops you see below actually just don't apply\n  // to certain inputs. For instance, if you give this just a\n  // Point geometry, then both loops are short-circuited and all we do\n  // is gradually rename the input until it's called 'geometry'.\n  //\n  // This also aims to allocate as few resources as possible: just a\n  // few numbers and booleans, rather than any temporary arrays as would\n  // be required with the normalization approach.\n  for (var featureIndex = 0; featureIndex < stop; featureIndex++) {\n    geometryMaybeCollection = isFeatureCollection\n      ? geojson.features[featureIndex].geometry\n      : isFeature\n      ? geojson.geometry\n      : geojson;\n    isGeometryCollection = geometryMaybeCollection\n      ? geometryMaybeCollection.type === \"GeometryCollection\"\n      : false;\n    stopG = isGeometryCollection\n      ? geometryMaybeCollection.geometries.length\n      : 1;\n\n    for (var geomIndex = 0; geomIndex < stopG; geomIndex++) {\n      var multiFeatureIndex = 0;\n      var geometryIndex = 0;\n      geometry = isGeometryCollection\n        ? geometryMaybeCollection.geometries[geomIndex]\n        : geometryMaybeCollection;\n\n      // Handles null Geometry -- Skips this geometry\n      if (geometry === null) continue;\n      coords = geometry.coordinates;\n      var geomType = geometry.type;\n\n      wrapShrink =\n        excludeWrapCoord &&\n        (geomType === \"Polygon\" || geomType === \"MultiPolygon\")\n          ? 1\n          : 0;\n\n      switch (geomType) {\n        case null:\n          break;\n        case \"Point\":\n          if (\n            callback(\n              coords,\n              coordIndex,\n              featureIndex,\n              multiFeatureIndex,\n              geometryIndex\n            ) === false\n          )\n            return false;\n          coordIndex++;\n          multiFeatureIndex++;\n          break;\n        case \"LineString\":\n        case \"MultiPoint\":\n          for (j = 0; j < coords.length; j++) {\n            if (\n              callback(\n                coords[j],\n                coordIndex,\n                featureIndex,\n                multiFeatureIndex,\n                geometryIndex\n              ) === false\n            )\n              return false;\n            coordIndex++;\n            if (geomType === \"MultiPoint\") multiFeatureIndex++;\n          }\n          if (geomType === \"LineString\") multiFeatureIndex++;\n          break;\n        case \"Polygon\":\n        case \"MultiLineString\":\n          for (j = 0; j < coords.length; j++) {\n            for (k = 0; k < coords[j].length - wrapShrink; k++) {\n              if (\n                callback(\n                  coords[j][k],\n                  coordIndex,\n                  featureIndex,\n                  multiFeatureIndex,\n                  geometryIndex\n                ) === false\n              )\n                return false;\n              coordIndex++;\n            }\n            if (geomType === \"MultiLineString\") multiFeatureIndex++;\n            if (geomType === \"Polygon\") geometryIndex++;\n          }\n          if (geomType === \"Polygon\") multiFeatureIndex++;\n          break;\n        case \"MultiPolygon\":\n          for (j = 0; j < coords.length; j++) {\n            geometryIndex = 0;\n            for (k = 0; k < coords[j].length; k++) {\n              for (l = 0; l < coords[j][k].length - wrapShrink; l++) {\n                if (\n                  callback(\n                    coords[j][k][l],\n                    coordIndex,\n                    featureIndex,\n                    multiFeatureIndex,\n                    geometryIndex\n                  ) === false\n                )\n                  return false;\n                coordIndex++;\n              }\n              geometryIndex++;\n            }\n            multiFeatureIndex++;\n          }\n          break;\n        case \"GeometryCollection\":\n          for (j = 0; j < geometry.geometries.length; j++)\n            if (\n              coordEach(geometry.geometries[j], callback, excludeWrapCoord) ===\n              false\n            )\n              return false;\n          break;\n        default:\n          throw new Error(\"Unknown Geometry Type\");\n      }\n    }\n  }\n}\n\n/**\n * Callback for coordReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n *  - The previousValue argument is initialValue.\n *  - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n *  - The previousValue argument is the value of the first element present in the array.\n *  - The currentValue argument is the value of the second element present in the array.\n *\n * @callback coordReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Array<number>} currentCoord The current coordinate being processed.\n * @param {number} coordIndex The current index of the coordinate being processed.\n * Starts at index 0, if an initialValue is provided, and at index 1 otherwise.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n * @param {number} geometryIndex The current index of the Geometry being processed.\n */\n\n/**\n * Reduce coordinates in any GeoJSON object, similar to Array.reduce()\n *\n * @name coordReduce\n * @param {FeatureCollection|Geometry|Feature} geojson any GeoJSON object\n * @param {Function} callback a method that takes (previousValue, currentCoord, coordIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @param {boolean} [excludeWrapCoord=false] whether or not to include the final coordinate of LinearRings that wraps the ring in its iteration.\n * @returns {*} The value that results from the reduction.\n * @example\n * var features = turf.featureCollection([\n *   turf.point([26, 37], {\"foo\": \"bar\"}),\n *   turf.point([36, 53], {\"hello\": \"world\"})\n * ]);\n *\n * turf.coordReduce(features, function (previousValue, currentCoord, coordIndex, featureIndex, multiFeatureIndex, geometryIndex) {\n *   //=previousValue\n *   //=currentCoord\n *   //=coordIndex\n *   //=featureIndex\n *   //=multiFeatureIndex\n *   //=geometryIndex\n *   return currentCoord;\n * });\n */\nfunction coordReduce(geojson, callback, initialValue, excludeWrapCoord) {\n  var previousValue = initialValue;\n  coordEach(\n    geojson,\n    function (\n      currentCoord,\n      coordIndex,\n      featureIndex,\n      multiFeatureIndex,\n      geometryIndex\n    ) {\n      if (coordIndex === 0 && initialValue === undefined)\n        previousValue = currentCoord;\n      else\n        previousValue = callback(\n          previousValue,\n          currentCoord,\n          coordIndex,\n          featureIndex,\n          multiFeatureIndex,\n          geometryIndex\n        );\n    },\n    excludeWrapCoord\n  );\n  return previousValue;\n}\n\n/**\n * Callback for propEach\n *\n * @callback propEachCallback\n * @param {Object} currentProperties The current Properties being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n */\n\n/**\n * Iterate over properties in any GeoJSON object, similar to Array.forEach()\n *\n * @name propEach\n * @param {FeatureCollection|Feature} geojson any GeoJSON object\n * @param {Function} callback a method that takes (currentProperties, featureIndex)\n * @returns {void}\n * @example\n * var features = turf.featureCollection([\n *     turf.point([26, 37], {foo: 'bar'}),\n *     turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * turf.propEach(features, function (currentProperties, featureIndex) {\n *   //=currentProperties\n *   //=featureIndex\n * });\n */\nfunction propEach(geojson, callback) {\n  var i;\n  switch (geojson.type) {\n    case \"FeatureCollection\":\n      for (i = 0; i < geojson.features.length; i++) {\n        if (callback(geojson.features[i].properties, i) === false) break;\n      }\n      break;\n    case \"Feature\":\n      callback(geojson.properties, 0);\n      break;\n  }\n}\n\n/**\n * Callback for propReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n *  - The previousValue argument is initialValue.\n *  - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n *  - The previousValue argument is the value of the first element present in the array.\n *  - The currentValue argument is the value of the second element present in the array.\n *\n * @callback propReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {*} currentProperties The current Properties being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n */\n\n/**\n * Reduce properties in any GeoJSON object into a single value,\n * similar to how Array.reduce works. However, in this case we lazily run\n * the reduction, so an array of all properties is unnecessary.\n *\n * @name propReduce\n * @param {FeatureCollection|Feature} geojson any GeoJSON object\n * @param {Function} callback a method that takes (previousValue, currentProperties, featureIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {*} The value that results from the reduction.\n * @example\n * var features = turf.featureCollection([\n *     turf.point([26, 37], {foo: 'bar'}),\n *     turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * turf.propReduce(features, function (previousValue, currentProperties, featureIndex) {\n *   //=previousValue\n *   //=currentProperties\n *   //=featureIndex\n *   return currentProperties\n * });\n */\nfunction propReduce(geojson, callback, initialValue) {\n  var previousValue = initialValue;\n  propEach(geojson, function (currentProperties, featureIndex) {\n    if (featureIndex === 0 && initialValue === undefined)\n      previousValue = currentProperties;\n    else\n      previousValue = callback(previousValue, currentProperties, featureIndex);\n  });\n  return previousValue;\n}\n\n/**\n * Callback for featureEach\n *\n * @callback featureEachCallback\n * @param {Feature<any>} currentFeature The current Feature being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n */\n\n/**\n * Iterate over features in any GeoJSON object, similar to\n * Array.forEach.\n *\n * @name featureEach\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (currentFeature, featureIndex)\n * @returns {void}\n * @example\n * var features = turf.featureCollection([\n *   turf.point([26, 37], {foo: 'bar'}),\n *   turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * turf.featureEach(features, function (currentFeature, featureIndex) {\n *   //=currentFeature\n *   //=featureIndex\n * });\n */\nfunction featureEach(geojson, callback) {\n  if (geojson.type === \"Feature\") {\n    callback(geojson, 0);\n  } else if (geojson.type === \"FeatureCollection\") {\n    for (var i = 0; i < geojson.features.length; i++) {\n      if (callback(geojson.features[i], i) === false) break;\n    }\n  }\n}\n\n/**\n * Callback for featureReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n *  - The previousValue argument is initialValue.\n *  - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n *  - The previousValue argument is the value of the first element present in the array.\n *  - The currentValue argument is the value of the second element present in the array.\n *\n * @callback featureReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Feature} currentFeature The current Feature being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n */\n\n/**\n * Reduce features in any GeoJSON object, similar to Array.reduce().\n *\n * @name featureReduce\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (previousValue, currentFeature, featureIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {*} The value that results from the reduction.\n * @example\n * var features = turf.featureCollection([\n *   turf.point([26, 37], {\"foo\": \"bar\"}),\n *   turf.point([36, 53], {\"hello\": \"world\"})\n * ]);\n *\n * turf.featureReduce(features, function (previousValue, currentFeature, featureIndex) {\n *   //=previousValue\n *   //=currentFeature\n *   //=featureIndex\n *   return currentFeature\n * });\n */\nfunction featureReduce(geojson, callback, initialValue) {\n  var previousValue = initialValue;\n  featureEach(geojson, function (currentFeature, featureIndex) {\n    if (featureIndex === 0 && initialValue === undefined)\n      previousValue = currentFeature;\n    else previousValue = callback(previousValue, currentFeature, featureIndex);\n  });\n  return previousValue;\n}\n\n/**\n * Get all coordinates from any GeoJSON object.\n *\n * @name coordAll\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @returns {Array<Array<number>>} coordinate position array\n * @example\n * var features = turf.featureCollection([\n *   turf.point([26, 37], {foo: 'bar'}),\n *   turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * var coords = turf.coordAll(features);\n * //= [[26, 37], [36, 53]]\n */\nfunction coordAll(geojson) {\n  var coords = [];\n  coordEach(geojson, function (coord) {\n    coords.push(coord);\n  });\n  return coords;\n}\n\n/**\n * Callback for geomEach\n *\n * @callback geomEachCallback\n * @param {Geometry} currentGeometry The current Geometry being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {Object} featureProperties The current Feature Properties being processed.\n * @param {Array<number>} featureBBox The current Feature BBox being processed.\n * @param {number|string} featureId The current Feature Id being processed.\n */\n\n/**\n * Iterate over each geometry in any GeoJSON object, similar to Array.forEach()\n *\n * @name geomEach\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (currentGeometry, featureIndex, featureProperties, featureBBox, featureId)\n * @returns {void}\n * @example\n * var features = turf.featureCollection([\n *     turf.point([26, 37], {foo: 'bar'}),\n *     turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * turf.geomEach(features, function (currentGeometry, featureIndex, featureProperties, featureBBox, featureId) {\n *   //=currentGeometry\n *   //=featureIndex\n *   //=featureProperties\n *   //=featureBBox\n *   //=featureId\n * });\n */\nfunction geomEach(geojson, callback) {\n  var i,\n    j,\n    g,\n    geometry,\n    stopG,\n    geometryMaybeCollection,\n    isGeometryCollection,\n    featureProperties,\n    featureBBox,\n    featureId,\n    featureIndex = 0,\n    isFeatureCollection = geojson.type === \"FeatureCollection\",\n    isFeature = geojson.type === \"Feature\",\n    stop = isFeatureCollection ? geojson.features.length : 1;\n\n  // This logic may look a little weird. The reason why it is that way\n  // is because it's trying to be fast. GeoJSON supports multiple kinds\n  // of objects at its root: FeatureCollection, Features, Geometries.\n  // This function has the responsibility of handling all of them, and that\n  // means that some of the `for` loops you see below actually just don't apply\n  // to certain inputs. For instance, if you give this just a\n  // Point geometry, then both loops are short-circuited and all we do\n  // is gradually rename the input until it's called 'geometry'.\n  //\n  // This also aims to allocate as few resources as possible: just a\n  // few numbers and booleans, rather than any temporary arrays as would\n  // be required with the normalization approach.\n  for (i = 0; i < stop; i++) {\n    geometryMaybeCollection = isFeatureCollection\n      ? geojson.features[i].geometry\n      : isFeature\n      ? geojson.geometry\n      : geojson;\n    featureProperties = isFeatureCollection\n      ? geojson.features[i].properties\n      : isFeature\n      ? geojson.properties\n      : {};\n    featureBBox = isFeatureCollection\n      ? geojson.features[i].bbox\n      : isFeature\n      ? geojson.bbox\n      : undefined;\n    featureId = isFeatureCollection\n      ? geojson.features[i].id\n      : isFeature\n      ? geojson.id\n      : undefined;\n    isGeometryCollection = geometryMaybeCollection\n      ? geometryMaybeCollection.type === \"GeometryCollection\"\n      : false;\n    stopG = isGeometryCollection\n      ? geometryMaybeCollection.geometries.length\n      : 1;\n\n    for (g = 0; g < stopG; g++) {\n      geometry = isGeometryCollection\n        ? geometryMaybeCollection.geometries[g]\n        : geometryMaybeCollection;\n\n      // Handle null Geometry\n      if (geometry === null) {\n        if (\n          callback(\n            null,\n            featureIndex,\n            featureProperties,\n            featureBBox,\n            featureId\n          ) === false\n        )\n          return false;\n        continue;\n      }\n      switch (geometry.type) {\n        case \"Point\":\n        case \"LineString\":\n        case \"MultiPoint\":\n        case \"Polygon\":\n        case \"MultiLineString\":\n        case \"MultiPolygon\": {\n          if (\n            callback(\n              geometry,\n              featureIndex,\n              featureProperties,\n              featureBBox,\n              featureId\n            ) === false\n          )\n            return false;\n          break;\n        }\n        case \"GeometryCollection\": {\n          for (j = 0; j < geometry.geometries.length; j++) {\n            if (\n              callback(\n                geometry.geometries[j],\n                featureIndex,\n                featureProperties,\n                featureBBox,\n                featureId\n              ) === false\n            )\n              return false;\n          }\n          break;\n        }\n        default:\n          throw new Error(\"Unknown Geometry Type\");\n      }\n    }\n    // Only increase `featureIndex` per each feature\n    featureIndex++;\n  }\n}\n\n/**\n * Callback for geomReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n *  - The previousValue argument is initialValue.\n *  - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n *  - The previousValue argument is the value of the first element present in the array.\n *  - The currentValue argument is the value of the second element present in the array.\n *\n * @callback geomReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Geometry} currentGeometry The current Geometry being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {Object} featureProperties The current Feature Properties being processed.\n * @param {Array<number>} featureBBox The current Feature BBox being processed.\n * @param {number|string} featureId The current Feature Id being processed.\n */\n\n/**\n * Reduce geometry in any GeoJSON object, similar to Array.reduce().\n *\n * @name geomReduce\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (previousValue, currentGeometry, featureIndex, featureProperties, featureBBox, featureId)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {*} The value that results from the reduction.\n * @example\n * var features = turf.featureCollection([\n *     turf.point([26, 37], {foo: 'bar'}),\n *     turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * turf.geomReduce(features, function (previousValue, currentGeometry, featureIndex, featureProperties, featureBBox, featureId) {\n *   //=previousValue\n *   //=currentGeometry\n *   //=featureIndex\n *   //=featureProperties\n *   //=featureBBox\n *   //=featureId\n *   return currentGeometry\n * });\n */\nfunction geomReduce(geojson, callback, initialValue) {\n  var previousValue = initialValue;\n  geomEach(\n    geojson,\n    function (\n      currentGeometry,\n      featureIndex,\n      featureProperties,\n      featureBBox,\n      featureId\n    ) {\n      if (featureIndex === 0 && initialValue === undefined)\n        previousValue = currentGeometry;\n      else\n        previousValue = callback(\n          previousValue,\n          currentGeometry,\n          featureIndex,\n          featureProperties,\n          featureBBox,\n          featureId\n        );\n    }\n  );\n  return previousValue;\n}\n\n/**\n * Callback for flattenEach\n *\n * @callback flattenEachCallback\n * @param {Feature} currentFeature The current flattened feature being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n */\n\n/**\n * Iterate over flattened features in any GeoJSON object, similar to\n * Array.forEach.\n *\n * @name flattenEach\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (currentFeature, featureIndex, multiFeatureIndex)\n * @example\n * var features = turf.featureCollection([\n *     turf.point([26, 37], {foo: 'bar'}),\n *     turf.multiPoint([[40, 30], [36, 53]], {hello: 'world'})\n * ]);\n *\n * turf.flattenEach(features, function (currentFeature, featureIndex, multiFeatureIndex) {\n *   //=currentFeature\n *   //=featureIndex\n *   //=multiFeatureIndex\n * });\n */\nfunction flattenEach(geojson, callback) {\n  geomEach(geojson, function (geometry, featureIndex, properties, bbox, id) {\n    // Callback for single geometry\n    var type = geometry === null ? null : geometry.type;\n    switch (type) {\n      case null:\n      case \"Point\":\n      case \"LineString\":\n      case \"Polygon\":\n        if (\n          callback(\n            helpers.feature(geometry, properties, { bbox: bbox, id: id }),\n            featureIndex,\n            0\n          ) === false\n        )\n          return false;\n        return;\n    }\n\n    var geomType;\n\n    // Callback for multi-geometry\n    switch (type) {\n      case \"MultiPoint\":\n        geomType = \"Point\";\n        break;\n      case \"MultiLineString\":\n        geomType = \"LineString\";\n        break;\n      case \"MultiPolygon\":\n        geomType = \"Polygon\";\n        break;\n    }\n\n    for (\n      var multiFeatureIndex = 0;\n      multiFeatureIndex < geometry.coordinates.length;\n      multiFeatureIndex++\n    ) {\n      var coordinate = geometry.coordinates[multiFeatureIndex];\n      var geom = {\n        type: geomType,\n        coordinates: coordinate,\n      };\n      if (\n        callback(helpers.feature(geom, properties), featureIndex, multiFeatureIndex) ===\n        false\n      )\n        return false;\n    }\n  });\n}\n\n/**\n * Callback for flattenReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n *  - The previousValue argument is initialValue.\n *  - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n *  - The previousValue argument is the value of the first element present in the array.\n *  - The currentValue argument is the value of the second element present in the array.\n *\n * @callback flattenReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Feature} currentFeature The current Feature being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n */\n\n/**\n * Reduce flattened features in any GeoJSON object, similar to Array.reduce().\n *\n * @name flattenReduce\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (previousValue, currentFeature, featureIndex, multiFeatureIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {*} The value that results from the reduction.\n * @example\n * var features = turf.featureCollection([\n *     turf.point([26, 37], {foo: 'bar'}),\n *     turf.multiPoint([[40, 30], [36, 53]], {hello: 'world'})\n * ]);\n *\n * turf.flattenReduce(features, function (previousValue, currentFeature, featureIndex, multiFeatureIndex) {\n *   //=previousValue\n *   //=currentFeature\n *   //=featureIndex\n *   //=multiFeatureIndex\n *   return currentFeature\n * });\n */\nfunction flattenReduce(geojson, callback, initialValue) {\n  var previousValue = initialValue;\n  flattenEach(\n    geojson,\n    function (currentFeature, featureIndex, multiFeatureIndex) {\n      if (\n        featureIndex === 0 &&\n        multiFeatureIndex === 0 &&\n        initialValue === undefined\n      )\n        previousValue = currentFeature;\n      else\n        previousValue = callback(\n          previousValue,\n          currentFeature,\n          featureIndex,\n          multiFeatureIndex\n        );\n    }\n  );\n  return previousValue;\n}\n\n/**\n * Callback for segmentEach\n *\n * @callback segmentEachCallback\n * @param {Feature<LineString>} currentSegment The current Segment being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n * @param {number} geometryIndex The current index of the Geometry being processed.\n * @param {number} segmentIndex The current index of the Segment being processed.\n * @returns {void}\n */\n\n/**\n * Iterate over 2-vertex line segment in any GeoJSON object, similar to Array.forEach()\n * (Multi)Point geometries do not contain segments therefore they are ignored during this operation.\n *\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON\n * @param {Function} callback a method that takes (currentSegment, featureIndex, multiFeatureIndex, geometryIndex, segmentIndex)\n * @returns {void}\n * @example\n * var polygon = turf.polygon([[[-50, 5], [-40, -10], [-50, -10], [-40, 5], [-50, 5]]]);\n *\n * // Iterate over GeoJSON by 2-vertex segments\n * turf.segmentEach(polygon, function (currentSegment, featureIndex, multiFeatureIndex, geometryIndex, segmentIndex) {\n *   //=currentSegment\n *   //=featureIndex\n *   //=multiFeatureIndex\n *   //=geometryIndex\n *   //=segmentIndex\n * });\n *\n * // Calculate the total number of segments\n * var total = 0;\n * turf.segmentEach(polygon, function () {\n *     total++;\n * });\n */\nfunction segmentEach(geojson, callback) {\n  flattenEach(geojson, function (feature, featureIndex, multiFeatureIndex) {\n    var segmentIndex = 0;\n\n    // Exclude null Geometries\n    if (!feature.geometry) return;\n    // (Multi)Point geometries do not contain segments therefore they are ignored during this operation.\n    var type = feature.geometry.type;\n    if (type === \"Point\" || type === \"MultiPoint\") return;\n\n    // Generate 2-vertex line segments\n    var previousCoords;\n    var previousFeatureIndex = 0;\n    var previousMultiIndex = 0;\n    var prevGeomIndex = 0;\n    if (\n      coordEach(\n        feature,\n        function (\n          currentCoord,\n          coordIndex,\n          featureIndexCoord,\n          multiPartIndexCoord,\n          geometryIndex\n        ) {\n          // Simulating a meta.coordReduce() since `reduce` operations cannot be stopped by returning `false`\n          if (\n            previousCoords === undefined ||\n            featureIndex > previousFeatureIndex ||\n            multiPartIndexCoord > previousMultiIndex ||\n            geometryIndex > prevGeomIndex\n          ) {\n            previousCoords = currentCoord;\n            previousFeatureIndex = featureIndex;\n            previousMultiIndex = multiPartIndexCoord;\n            prevGeomIndex = geometryIndex;\n            segmentIndex = 0;\n            return;\n          }\n          var currentSegment = helpers.lineString(\n            [previousCoords, currentCoord],\n            feature.properties\n          );\n          if (\n            callback(\n              currentSegment,\n              featureIndex,\n              multiFeatureIndex,\n              geometryIndex,\n              segmentIndex\n            ) === false\n          )\n            return false;\n          segmentIndex++;\n          previousCoords = currentCoord;\n        }\n      ) === false\n    )\n      return false;\n  });\n}\n\n/**\n * Callback for segmentReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n *  - The previousValue argument is initialValue.\n *  - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n *  - The previousValue argument is the value of the first element present in the array.\n *  - The currentValue argument is the value of the second element present in the array.\n *\n * @callback segmentReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Feature<LineString>} currentSegment The current Segment being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n * @param {number} geometryIndex The current index of the Geometry being processed.\n * @param {number} segmentIndex The current index of the Segment being processed.\n */\n\n/**\n * Reduce 2-vertex line segment in any GeoJSON object, similar to Array.reduce()\n * (Multi)Point geometries do not contain segments therefore they are ignored during this operation.\n *\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON\n * @param {Function} callback a method that takes (previousValue, currentSegment, currentIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {void}\n * @example\n * var polygon = turf.polygon([[[-50, 5], [-40, -10], [-50, -10], [-40, 5], [-50, 5]]]);\n *\n * // Iterate over GeoJSON by 2-vertex segments\n * turf.segmentReduce(polygon, function (previousSegment, currentSegment, featureIndex, multiFeatureIndex, geometryIndex, segmentIndex) {\n *   //= previousSegment\n *   //= currentSegment\n *   //= featureIndex\n *   //= multiFeatureIndex\n *   //= geometryIndex\n *   //= segmentIndex\n *   return currentSegment\n * });\n *\n * // Calculate the total number of segments\n * var initialValue = 0\n * var total = turf.segmentReduce(polygon, function (previousValue) {\n *     previousValue++;\n *     return previousValue;\n * }, initialValue);\n */\nfunction segmentReduce(geojson, callback, initialValue) {\n  var previousValue = initialValue;\n  var started = false;\n  segmentEach(\n    geojson,\n    function (\n      currentSegment,\n      featureIndex,\n      multiFeatureIndex,\n      geometryIndex,\n      segmentIndex\n    ) {\n      if (started === false && initialValue === undefined)\n        previousValue = currentSegment;\n      else\n        previousValue = callback(\n          previousValue,\n          currentSegment,\n          featureIndex,\n          multiFeatureIndex,\n          geometryIndex,\n          segmentIndex\n        );\n      started = true;\n    }\n  );\n  return previousValue;\n}\n\n/**\n * Callback for lineEach\n *\n * @callback lineEachCallback\n * @param {Feature<LineString>} currentLine The current LineString|LinearRing being processed\n * @param {number} featureIndex The current index of the Feature being processed\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed\n * @param {number} geometryIndex The current index of the Geometry being processed\n */\n\n/**\n * Iterate over line or ring coordinates in LineString, Polygon, MultiLineString, MultiPolygon Features or Geometries,\n * similar to Array.forEach.\n *\n * @name lineEach\n * @param {Geometry|Feature<LineString|Polygon|MultiLineString|MultiPolygon>} geojson object\n * @param {Function} callback a method that takes (currentLine, featureIndex, multiFeatureIndex, geometryIndex)\n * @example\n * var multiLine = turf.multiLineString([\n *   [[26, 37], [35, 45]],\n *   [[36, 53], [38, 50], [41, 55]]\n * ]);\n *\n * turf.lineEach(multiLine, function (currentLine, featureIndex, multiFeatureIndex, geometryIndex) {\n *   //=currentLine\n *   //=featureIndex\n *   //=multiFeatureIndex\n *   //=geometryIndex\n * });\n */\nfunction lineEach(geojson, callback) {\n  // validation\n  if (!geojson) throw new Error(\"geojson is required\");\n\n  flattenEach(geojson, function (feature, featureIndex, multiFeatureIndex) {\n    if (feature.geometry === null) return;\n    var type = feature.geometry.type;\n    var coords = feature.geometry.coordinates;\n    switch (type) {\n      case \"LineString\":\n        if (callback(feature, featureIndex, multiFeatureIndex, 0, 0) === false)\n          return false;\n        break;\n      case \"Polygon\":\n        for (\n          var geometryIndex = 0;\n          geometryIndex < coords.length;\n          geometryIndex++\n        ) {\n          if (\n            callback(\n              helpers.lineString(coords[geometryIndex], feature.properties),\n              featureIndex,\n              multiFeatureIndex,\n              geometryIndex\n            ) === false\n          )\n            return false;\n        }\n        break;\n    }\n  });\n}\n\n/**\n * Callback for lineReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n *  - The previousValue argument is initialValue.\n *  - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n *  - The previousValue argument is the value of the first element present in the array.\n *  - The currentValue argument is the value of the second element present in the array.\n *\n * @callback lineReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Feature<LineString>} currentLine The current LineString|LinearRing being processed.\n * @param {number} featureIndex The current index of the Feature being processed\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed\n * @param {number} geometryIndex The current index of the Geometry being processed\n */\n\n/**\n * Reduce features in any GeoJSON object, similar to Array.reduce().\n *\n * @name lineReduce\n * @param {Geometry|Feature<LineString|Polygon|MultiLineString|MultiPolygon>} geojson object\n * @param {Function} callback a method that takes (previousValue, currentLine, featureIndex, multiFeatureIndex, geometryIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {*} The value that results from the reduction.\n * @example\n * var multiPoly = turf.multiPolygon([\n *   turf.polygon([[[12,48],[2,41],[24,38],[12,48]], [[9,44],[13,41],[13,45],[9,44]]]),\n *   turf.polygon([[[5, 5], [0, 0], [2, 2], [4, 4], [5, 5]]])\n * ]);\n *\n * turf.lineReduce(multiPoly, function (previousValue, currentLine, featureIndex, multiFeatureIndex, geometryIndex) {\n *   //=previousValue\n *   //=currentLine\n *   //=featureIndex\n *   //=multiFeatureIndex\n *   //=geometryIndex\n *   return currentLine\n * });\n */\nfunction lineReduce(geojson, callback, initialValue) {\n  var previousValue = initialValue;\n  lineEach(\n    geojson,\n    function (currentLine, featureIndex, multiFeatureIndex, geometryIndex) {\n      if (featureIndex === 0 && initialValue === undefined)\n        previousValue = currentLine;\n      else\n        previousValue = callback(\n          previousValue,\n          currentLine,\n          featureIndex,\n          multiFeatureIndex,\n          geometryIndex\n        );\n    }\n  );\n  return previousValue;\n}\n\n/**\n * Finds a particular 2-vertex LineString Segment from a GeoJSON using `@turf/meta` indexes.\n *\n * Negative indexes are permitted.\n * Point & MultiPoint will always return null.\n *\n * @param {FeatureCollection|Feature|Geometry} geojson Any GeoJSON Feature or Geometry\n * @param {Object} [options={}] Optional parameters\n * @param {number} [options.featureIndex=0] Feature Index\n * @param {number} [options.multiFeatureIndex=0] Multi-Feature Index\n * @param {number} [options.geometryIndex=0] Geometry Index\n * @param {number} [options.segmentIndex=0] Segment Index\n * @param {Object} [options.properties={}] Translate Properties to output LineString\n * @param {BBox} [options.bbox={}] Translate BBox to output LineString\n * @param {number|string} [options.id={}] Translate Id to output LineString\n * @returns {Feature<LineString>} 2-vertex GeoJSON Feature LineString\n * @example\n * var multiLine = turf.multiLineString([\n *     [[10, 10], [50, 30], [30, 40]],\n *     [[-10, -10], [-50, -30], [-30, -40]]\n * ]);\n *\n * // First Segment (defaults are 0)\n * turf.findSegment(multiLine);\n * // => Feature<LineString<[[10, 10], [50, 30]]>>\n *\n * // First Segment of 2nd Multi Feature\n * turf.findSegment(multiLine, {multiFeatureIndex: 1});\n * // => Feature<LineString<[[-10, -10], [-50, -30]]>>\n *\n * // Last Segment of Last Multi Feature\n * turf.findSegment(multiLine, {multiFeatureIndex: -1, segmentIndex: -1});\n * // => Feature<LineString<[[-50, -30], [-30, -40]]>>\n */\nfunction findSegment(geojson, options) {\n  // Optional Parameters\n  options = options || {};\n  if (!helpers.isObject(options)) throw new Error(\"options is invalid\");\n  var featureIndex = options.featureIndex || 0;\n  var multiFeatureIndex = options.multiFeatureIndex || 0;\n  var geometryIndex = options.geometryIndex || 0;\n  var segmentIndex = options.segmentIndex || 0;\n\n  // Find FeatureIndex\n  var properties = options.properties;\n  var geometry;\n\n  switch (geojson.type) {\n    case \"FeatureCollection\":\n      if (featureIndex < 0)\n        featureIndex = geojson.features.length + featureIndex;\n      properties = properties || geojson.features[featureIndex].properties;\n      geometry = geojson.features[featureIndex].geometry;\n      break;\n    case \"Feature\":\n      properties = properties || geojson.properties;\n      geometry = geojson.geometry;\n      break;\n    case \"Point\":\n    case \"MultiPoint\":\n      return null;\n    case \"LineString\":\n    case \"Polygon\":\n    case \"MultiLineString\":\n    case \"MultiPolygon\":\n      geometry = geojson;\n      break;\n    default:\n      throw new Error(\"geojson is invalid\");\n  }\n\n  // Find SegmentIndex\n  if (geometry === null) return null;\n  var coords = geometry.coordinates;\n  switch (geometry.type) {\n    case \"Point\":\n    case \"MultiPoint\":\n      return null;\n    case \"LineString\":\n      if (segmentIndex < 0) segmentIndex = coords.length + segmentIndex - 1;\n      return helpers.lineString(\n        [coords[segmentIndex], coords[segmentIndex + 1]],\n        properties,\n        options\n      );\n    case \"Polygon\":\n      if (geometryIndex < 0) geometryIndex = coords.length + geometryIndex;\n      if (segmentIndex < 0)\n        segmentIndex = coords[geometryIndex].length + segmentIndex - 1;\n      return helpers.lineString(\n        [\n          coords[geometryIndex][segmentIndex],\n          coords[geometryIndex][segmentIndex + 1],\n        ],\n        properties,\n        options\n      );\n    case \"MultiLineString\":\n      if (multiFeatureIndex < 0)\n        multiFeatureIndex = coords.length + multiFeatureIndex;\n      if (segmentIndex < 0)\n        segmentIndex = coords[multiFeatureIndex].length + segmentIndex - 1;\n      return helpers.lineString(\n        [\n          coords[multiFeatureIndex][segmentIndex],\n          coords[multiFeatureIndex][segmentIndex + 1],\n        ],\n        properties,\n        options\n      );\n    case \"MultiPolygon\":\n      if (multiFeatureIndex < 0)\n        multiFeatureIndex = coords.length + multiFeatureIndex;\n      if (geometryIndex < 0)\n        geometryIndex = coords[multiFeatureIndex].length + geometryIndex;\n      if (segmentIndex < 0)\n        segmentIndex =\n          coords[multiFeatureIndex][geometryIndex].length - segmentIndex - 1;\n      return helpers.lineString(\n        [\n          coords[multiFeatureIndex][geometryIndex][segmentIndex],\n          coords[multiFeatureIndex][geometryIndex][segmentIndex + 1],\n        ],\n        properties,\n        options\n      );\n  }\n  throw new Error(\"geojson is invalid\");\n}\n\n/**\n * Finds a particular Point from a GeoJSON using `@turf/meta` indexes.\n *\n * Negative indexes are permitted.\n *\n * @param {FeatureCollection|Feature|Geometry} geojson Any GeoJSON Feature or Geometry\n * @param {Object} [options={}] Optional parameters\n * @param {number} [options.featureIndex=0] Feature Index\n * @param {number} [options.multiFeatureIndex=0] Multi-Feature Index\n * @param {number} [options.geometryIndex=0] Geometry Index\n * @param {number} [options.coordIndex=0] Coord Index\n * @param {Object} [options.properties={}] Translate Properties to output Point\n * @param {BBox} [options.bbox={}] Translate BBox to output Point\n * @param {number|string} [options.id={}] Translate Id to output Point\n * @returns {Feature<Point>} 2-vertex GeoJSON Feature Point\n * @example\n * var multiLine = turf.multiLineString([\n *     [[10, 10], [50, 30], [30, 40]],\n *     [[-10, -10], [-50, -30], [-30, -40]]\n * ]);\n *\n * // First Segment (defaults are 0)\n * turf.findPoint(multiLine);\n * // => Feature<Point<[10, 10]>>\n *\n * // First Segment of the 2nd Multi-Feature\n * turf.findPoint(multiLine, {multiFeatureIndex: 1});\n * // => Feature<Point<[-10, -10]>>\n *\n * // Last Segment of last Multi-Feature\n * turf.findPoint(multiLine, {multiFeatureIndex: -1, coordIndex: -1});\n * // => Feature<Point<[-30, -40]>>\n */\nfunction findPoint(geojson, options) {\n  // Optional Parameters\n  options = options || {};\n  if (!helpers.isObject(options)) throw new Error(\"options is invalid\");\n  var featureIndex = options.featureIndex || 0;\n  var multiFeatureIndex = options.multiFeatureIndex || 0;\n  var geometryIndex = options.geometryIndex || 0;\n  var coordIndex = options.coordIndex || 0;\n\n  // Find FeatureIndex\n  var properties = options.properties;\n  var geometry;\n\n  switch (geojson.type) {\n    case \"FeatureCollection\":\n      if (featureIndex < 0)\n        featureIndex = geojson.features.length + featureIndex;\n      properties = properties || geojson.features[featureIndex].properties;\n      geometry = geojson.features[featureIndex].geometry;\n      break;\n    case \"Feature\":\n      properties = properties || geojson.properties;\n      geometry = geojson.geometry;\n      break;\n    case \"Point\":\n    case \"MultiPoint\":\n      return null;\n    case \"LineString\":\n    case \"Polygon\":\n    case \"MultiLineString\":\n    case \"MultiPolygon\":\n      geometry = geojson;\n      break;\n    default:\n      throw new Error(\"geojson is invalid\");\n  }\n\n  // Find Coord Index\n  if (geometry === null) return null;\n  var coords = geometry.coordinates;\n  switch (geometry.type) {\n    case \"Point\":\n      return helpers.point(coords, properties, options);\n    case \"MultiPoint\":\n      if (multiFeatureIndex < 0)\n        multiFeatureIndex = coords.length + multiFeatureIndex;\n      return helpers.point(coords[multiFeatureIndex], properties, options);\n    case \"LineString\":\n      if (coordIndex < 0) coordIndex = coords.length + coordIndex;\n      return helpers.point(coords[coordIndex], properties, options);\n    case \"Polygon\":\n      if (geometryIndex < 0) geometryIndex = coords.length + geometryIndex;\n      if (coordIndex < 0)\n        coordIndex = coords[geometryIndex].length + coordIndex;\n      return helpers.point(coords[geometryIndex][coordIndex], properties, options);\n    case \"MultiLineString\":\n      if (multiFeatureIndex < 0)\n        multiFeatureIndex = coords.length + multiFeatureIndex;\n      if (coordIndex < 0)\n        coordIndex = coords[multiFeatureIndex].length + coordIndex;\n      return helpers.point(coords[multiFeatureIndex][coordIndex], properties, options);\n    case \"MultiPolygon\":\n      if (multiFeatureIndex < 0)\n        multiFeatureIndex = coords.length + multiFeatureIndex;\n      if (geometryIndex < 0)\n        geometryIndex = coords[multiFeatureIndex].length + geometryIndex;\n      if (coordIndex < 0)\n        coordIndex =\n          coords[multiFeatureIndex][geometryIndex].length - coordIndex;\n      return helpers.point(\n        coords[multiFeatureIndex][geometryIndex][coordIndex],\n        properties,\n        options\n      );\n  }\n  throw new Error(\"geojson is invalid\");\n}\n\nexports.coordAll = coordAll;\nexports.coordEach = coordEach;\nexports.coordReduce = coordReduce;\nexports.featureEach = featureEach;\nexports.featureReduce = featureReduce;\nexports.findPoint = findPoint;\nexports.findSegment = findSegment;\nexports.flattenEach = flattenEach;\nexports.flattenReduce = flattenReduce;\nexports.geomEach = geomEach;\nexports.geomReduce = geomReduce;\nexports.lineEach = lineEach;\nexports.lineReduce = lineReduce;\nexports.propEach = propEach;\nexports.propReduce = propReduce;\nexports.segmentEach = segmentEach;\nexports.segmentReduce = segmentReduce;\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n    return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar polygon_clipping_1 = __importDefault(require(\"polygon-clipping\"));\nvar invariant_1 = require(\"@turf/invariant\");\nvar helpers_1 = require(\"@turf/helpers\");\n/**\n * Takes two {@link (Multi)Polygon(s)} and returns a combined polygon. If the input polygons are not contiguous, this function returns a {@link MultiPolygon} feature.\n *\n * @name union\n * @param {Feature<Polygon|MultiPolygon>} polygon1 input Polygon feature\n * @param {Feature<Polygon|MultiPolygon>} polygon2 Polygon feature to difference from polygon1\n * @param {Object} [options={}] Optional Parameters\n * @param {Object} [options.properties={}] Translate Properties to output Feature\n * @returns {Feature<(Polygon|MultiPolygon)>} a combined {@link Polygon} or {@link MultiPolygon} feature, or null if the inputs are empty\n * @example\n * var poly1 = turf.polygon([[\n *     [-82.574787, 35.594087],\n *     [-82.574787, 35.615581],\n *     [-82.545261, 35.615581],\n *     [-82.545261, 35.594087],\n *     [-82.574787, 35.594087]\n * ]], {\"fill\": \"#0f0\"});\n * var poly2 = turf.polygon([[\n *     [-82.560024, 35.585153],\n *     [-82.560024, 35.602602],\n *     [-82.52964, 35.602602],\n *     [-82.52964, 35.585153],\n *     [-82.560024, 35.585153]\n * ]], {\"fill\": \"#00f\"});\n *\n * var union = turf.union(poly1, poly2);\n *\n * //addToMap\n * var addToMap = [poly1, poly2, union];\n */\nfunction union(poly1, poly2, options) {\n    if (options === void 0) { options = {}; }\n    var geom1 = invariant_1.getGeom(poly1);\n    var geom2 = invariant_1.getGeom(poly2);\n    var unioned = polygon_clipping_1.default.union(geom1.coordinates, geom2.coordinates);\n    if (unioned.length === 0)\n        return null;\n    if (unioned.length === 1)\n        return helpers_1.polygon(unioned[0], options.properties);\n    else\n        return helpers_1.multiPolygon(unioned, options.properties);\n}\nexports.default = union;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * @module helpers\n */\n/**\n * Earth Radius used with the Harvesine formula and approximates using a spherical (non-ellipsoid) Earth.\n *\n * @memberof helpers\n * @type {number}\n */\nexports.earthRadius = 6371008.8;\n/**\n * Unit of measurement factors using a spherical (non-ellipsoid) earth radius.\n *\n * @memberof helpers\n * @type {Object}\n */\nexports.factors = {\n    centimeters: exports.earthRadius * 100,\n    centimetres: exports.earthRadius * 100,\n    degrees: exports.earthRadius / 111325,\n    feet: exports.earthRadius * 3.28084,\n    inches: exports.earthRadius * 39.37,\n    kilometers: exports.earthRadius / 1000,\n    kilometres: exports.earthRadius / 1000,\n    meters: exports.earthRadius,\n    metres: exports.earthRadius,\n    miles: exports.earthRadius / 1609.344,\n    millimeters: exports.earthRadius * 1000,\n    millimetres: exports.earthRadius * 1000,\n    nauticalmiles: exports.earthRadius / 1852,\n    radians: 1,\n    yards: exports.earthRadius * 1.0936,\n};\n/**\n * Units of measurement factors based on 1 meter.\n *\n * @memberof helpers\n * @type {Object}\n */\nexports.unitsFactors = {\n    centimeters: 100,\n    centimetres: 100,\n    degrees: 1 / 111325,\n    feet: 3.28084,\n    inches: 39.37,\n    kilometers: 1 / 1000,\n    kilometres: 1 / 1000,\n    meters: 1,\n    metres: 1,\n    miles: 1 / 1609.344,\n    millimeters: 1000,\n    millimetres: 1000,\n    nauticalmiles: 1 / 1852,\n    radians: 1 / exports.earthRadius,\n    yards: 1.0936133,\n};\n/**\n * Area of measurement factors based on 1 square meter.\n *\n * @memberof helpers\n * @type {Object}\n */\nexports.areaFactors = {\n    acres: 0.000247105,\n    centimeters: 10000,\n    centimetres: 10000,\n    feet: 10.763910417,\n    hectares: 0.0001,\n    inches: 1550.003100006,\n    kilometers: 0.000001,\n    kilometres: 0.000001,\n    meters: 1,\n    metres: 1,\n    miles: 3.86e-7,\n    millimeters: 1000000,\n    millimetres: 1000000,\n    yards: 1.195990046,\n};\n/**\n * Wraps a GeoJSON {@link Geometry} in a GeoJSON {@link Feature}.\n *\n * @name feature\n * @param {Geometry} geometry input geometry\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} a GeoJSON Feature\n * @example\n * var geometry = {\n *   \"type\": \"Point\",\n *   \"coordinates\": [110, 50]\n * };\n *\n * var feature = turf.feature(geometry);\n *\n * //=feature\n */\nfunction feature(geom, properties, options) {\n    if (options === void 0) { options = {}; }\n    var feat = { type: \"Feature\" };\n    if (options.id === 0 || options.id) {\n        feat.id = options.id;\n    }\n    if (options.bbox) {\n        feat.bbox = options.bbox;\n    }\n    feat.properties = properties || {};\n    feat.geometry = geom;\n    return feat;\n}\nexports.feature = feature;\n/**\n * Creates a GeoJSON {@link Geometry} from a Geometry string type & coordinates.\n * For GeometryCollection type use `helpers.geometryCollection`\n *\n * @name geometry\n * @param {string} type Geometry Type\n * @param {Array<any>} coordinates Coordinates\n * @param {Object} [options={}] Optional Parameters\n * @returns {Geometry} a GeoJSON Geometry\n * @example\n * var type = \"Point\";\n * var coordinates = [110, 50];\n * var geometry = turf.geometry(type, coordinates);\n * // => geometry\n */\nfunction geometry(type, coordinates, _options) {\n    if (_options === void 0) { _options = {}; }\n    switch (type) {\n        case \"Point\":\n            return point(coordinates).geometry;\n        case \"LineString\":\n            return lineString(coordinates).geometry;\n        case \"Polygon\":\n            return polygon(coordinates).geometry;\n        case \"MultiPoint\":\n            return multiPoint(coordinates).geometry;\n        case \"MultiLineString\":\n            return multiLineString(coordinates).geometry;\n        case \"MultiPolygon\":\n            return multiPolygon(coordinates).geometry;\n        default:\n            throw new Error(type + \" is invalid\");\n    }\n}\nexports.geometry = geometry;\n/**\n * Creates a {@link Point} {@link Feature} from a Position.\n *\n * @name point\n * @param {Array<number>} coordinates longitude, latitude position (each in decimal degrees)\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<Point>} a Point feature\n * @example\n * var point = turf.point([-75.343, 39.984]);\n *\n * //=point\n */\nfunction point(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    if (!coordinates) {\n        throw new Error(\"coordinates is required\");\n    }\n    if (!Array.isArray(coordinates)) {\n        throw new Error(\"coordinates must be an Array\");\n    }\n    if (coordinates.length < 2) {\n        throw new Error(\"coordinates must be at least 2 numbers long\");\n    }\n    if (!isNumber(coordinates[0]) || !isNumber(coordinates[1])) {\n        throw new Error(\"coordinates must contain numbers\");\n    }\n    var geom = {\n        type: \"Point\",\n        coordinates: coordinates,\n    };\n    return feature(geom, properties, options);\n}\nexports.point = point;\n/**\n * Creates a {@link Point} {@link FeatureCollection} from an Array of Point coordinates.\n *\n * @name points\n * @param {Array<Array<number>>} coordinates an array of Points\n * @param {Object} [properties={}] Translate these properties to each Feature\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north]\n * associated with the FeatureCollection\n * @param {string|number} [options.id] Identifier associated with the FeatureCollection\n * @returns {FeatureCollection<Point>} Point Feature\n * @example\n * var points = turf.points([\n *   [-75, 39],\n *   [-80, 45],\n *   [-78, 50]\n * ]);\n *\n * //=points\n */\nfunction points(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    return featureCollection(coordinates.map(function (coords) {\n        return point(coords, properties);\n    }), options);\n}\nexports.points = points;\n/**\n * Creates a {@link Polygon} {@link Feature} from an Array of LinearRings.\n *\n * @name polygon\n * @param {Array<Array<Array<number>>>} coordinates an array of LinearRings\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<Polygon>} Polygon Feature\n * @example\n * var polygon = turf.polygon([[[-5, 52], [-4, 56], [-2, 51], [-7, 54], [-5, 52]]], { name: 'poly1' });\n *\n * //=polygon\n */\nfunction polygon(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    for (var _i = 0, coordinates_1 = coordinates; _i < coordinates_1.length; _i++) {\n        var ring = coordinates_1[_i];\n        if (ring.length < 4) {\n            throw new Error(\"Each LinearRing of a Polygon must have 4 or more Positions.\");\n        }\n        for (var j = 0; j < ring[ring.length - 1].length; j++) {\n            // Check if first point of Polygon contains two numbers\n            if (ring[ring.length - 1][j] !== ring[0][j]) {\n                throw new Error(\"First and last Position are not equivalent.\");\n            }\n        }\n    }\n    var geom = {\n        type: \"Polygon\",\n        coordinates: coordinates,\n    };\n    return feature(geom, properties, options);\n}\nexports.polygon = polygon;\n/**\n * Creates a {@link Polygon} {@link FeatureCollection} from an Array of Polygon coordinates.\n *\n * @name polygons\n * @param {Array<Array<Array<Array<number>>>>} coordinates an array of Polygon coordinates\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the FeatureCollection\n * @returns {FeatureCollection<Polygon>} Polygon FeatureCollection\n * @example\n * var polygons = turf.polygons([\n *   [[[-5, 52], [-4, 56], [-2, 51], [-7, 54], [-5, 52]]],\n *   [[[-15, 42], [-14, 46], [-12, 41], [-17, 44], [-15, 42]]],\n * ]);\n *\n * //=polygons\n */\nfunction polygons(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    return featureCollection(coordinates.map(function (coords) {\n        return polygon(coords, properties);\n    }), options);\n}\nexports.polygons = polygons;\n/**\n * Creates a {@link LineString} {@link Feature} from an Array of Positions.\n *\n * @name lineString\n * @param {Array<Array<number>>} coordinates an array of Positions\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<LineString>} LineString Feature\n * @example\n * var linestring1 = turf.lineString([[-24, 63], [-23, 60], [-25, 65], [-20, 69]], {name: 'line 1'});\n * var linestring2 = turf.lineString([[-14, 43], [-13, 40], [-15, 45], [-10, 49]], {name: 'line 2'});\n *\n * //=linestring1\n * //=linestring2\n */\nfunction lineString(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    if (coordinates.length < 2) {\n        throw new Error(\"coordinates must be an array of two or more positions\");\n    }\n    var geom = {\n        type: \"LineString\",\n        coordinates: coordinates,\n    };\n    return feature(geom, properties, options);\n}\nexports.lineString = lineString;\n/**\n * Creates a {@link LineString} {@link FeatureCollection} from an Array of LineString coordinates.\n *\n * @name lineStrings\n * @param {Array<Array<Array<number>>>} coordinates an array of LinearRings\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north]\n * associated with the FeatureCollection\n * @param {string|number} [options.id] Identifier associated with the FeatureCollection\n * @returns {FeatureCollection<LineString>} LineString FeatureCollection\n * @example\n * var linestrings = turf.lineStrings([\n *   [[-24, 63], [-23, 60], [-25, 65], [-20, 69]],\n *   [[-14, 43], [-13, 40], [-15, 45], [-10, 49]]\n * ]);\n *\n * //=linestrings\n */\nfunction lineStrings(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    return featureCollection(coordinates.map(function (coords) {\n        return lineString(coords, properties);\n    }), options);\n}\nexports.lineStrings = lineStrings;\n/**\n * Takes one or more {@link Feature|Features} and creates a {@link FeatureCollection}.\n *\n * @name featureCollection\n * @param {Feature[]} features input features\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {FeatureCollection} FeatureCollection of Features\n * @example\n * var locationA = turf.point([-75.343, 39.984], {name: 'Location A'});\n * var locationB = turf.point([-75.833, 39.284], {name: 'Location B'});\n * var locationC = turf.point([-75.534, 39.123], {name: 'Location C'});\n *\n * var collection = turf.featureCollection([\n *   locationA,\n *   locationB,\n *   locationC\n * ]);\n *\n * //=collection\n */\nfunction featureCollection(features, options) {\n    if (options === void 0) { options = {}; }\n    var fc = { type: \"FeatureCollection\" };\n    if (options.id) {\n        fc.id = options.id;\n    }\n    if (options.bbox) {\n        fc.bbox = options.bbox;\n    }\n    fc.features = features;\n    return fc;\n}\nexports.featureCollection = featureCollection;\n/**\n * Creates a {@link Feature<MultiLineString>} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name multiLineString\n * @param {Array<Array<Array<number>>>} coordinates an array of LineStrings\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<MultiLineString>} a MultiLineString feature\n * @throws {Error} if no coordinates are passed\n * @example\n * var multiLine = turf.multiLineString([[[0,0],[10,10]]]);\n *\n * //=multiLine\n */\nfunction multiLineString(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    var geom = {\n        type: \"MultiLineString\",\n        coordinates: coordinates,\n    };\n    return feature(geom, properties, options);\n}\nexports.multiLineString = multiLineString;\n/**\n * Creates a {@link Feature<MultiPoint>} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name multiPoint\n * @param {Array<Array<number>>} coordinates an array of Positions\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<MultiPoint>} a MultiPoint feature\n * @throws {Error} if no coordinates are passed\n * @example\n * var multiPt = turf.multiPoint([[0,0],[10,10]]);\n *\n * //=multiPt\n */\nfunction multiPoint(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    var geom = {\n        type: \"MultiPoint\",\n        coordinates: coordinates,\n    };\n    return feature(geom, properties, options);\n}\nexports.multiPoint = multiPoint;\n/**\n * Creates a {@link Feature<MultiPolygon>} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name multiPolygon\n * @param {Array<Array<Array<Array<number>>>>} coordinates an array of Polygons\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<MultiPolygon>} a multipolygon feature\n * @throws {Error} if no coordinates are passed\n * @example\n * var multiPoly = turf.multiPolygon([[[[0,0],[0,10],[10,10],[10,0],[0,0]]]]);\n *\n * //=multiPoly\n *\n */\nfunction multiPolygon(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    var geom = {\n        type: \"MultiPolygon\",\n        coordinates: coordinates,\n    };\n    return feature(geom, properties, options);\n}\nexports.multiPolygon = multiPolygon;\n/**\n * Creates a {@link Feature<GeometryCollection>} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name geometryCollection\n * @param {Array<Geometry>} geometries an array of GeoJSON Geometries\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<GeometryCollection>} a GeoJSON GeometryCollection Feature\n * @example\n * var pt = turf.geometry(\"Point\", [100, 0]);\n * var line = turf.geometry(\"LineString\", [[101, 0], [102, 1]]);\n * var collection = turf.geometryCollection([pt, line]);\n *\n * // => collection\n */\nfunction geometryCollection(geometries, properties, options) {\n    if (options === void 0) { options = {}; }\n    var geom = {\n        type: \"GeometryCollection\",\n        geometries: geometries,\n    };\n    return feature(geom, properties, options);\n}\nexports.geometryCollection = geometryCollection;\n/**\n * Round number to precision\n *\n * @param {number} num Number\n * @param {number} [precision=0] Precision\n * @returns {number} rounded number\n * @example\n * turf.round(120.4321)\n * //=120\n *\n * turf.round(120.4321, 2)\n * //=120.43\n */\nfunction round(num, precision) {\n    if (precision === void 0) { precision = 0; }\n    if (precision && !(precision >= 0)) {\n        throw new Error(\"precision must be a positive number\");\n    }\n    var multiplier = Math.pow(10, precision || 0);\n    return Math.round(num * multiplier) / multiplier;\n}\nexports.round = round;\n/**\n * Convert a distance measurement (assuming a spherical Earth) from radians to a more friendly unit.\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet\n *\n * @name radiansToLength\n * @param {number} radians in radians across the sphere\n * @param {string} [units=\"kilometers\"] can be degrees, radians, miles, inches, yards, metres,\n * meters, kilometres, kilometers.\n * @returns {number} distance\n */\nfunction radiansToLength(radians, units) {\n    if (units === void 0) { units = \"kilometers\"; }\n    var factor = exports.factors[units];\n    if (!factor) {\n        throw new Error(units + \" units is invalid\");\n    }\n    return radians * factor;\n}\nexports.radiansToLength = radiansToLength;\n/**\n * Convert a distance measurement (assuming a spherical Earth) from a real-world unit into radians\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet\n *\n * @name lengthToRadians\n * @param {number} distance in real units\n * @param {string} [units=\"kilometers\"] can be degrees, radians, miles, inches, yards, metres,\n * meters, kilometres, kilometers.\n * @returns {number} radians\n */\nfunction lengthToRadians(distance, units) {\n    if (units === void 0) { units = \"kilometers\"; }\n    var factor = exports.factors[units];\n    if (!factor) {\n        throw new Error(units + \" units is invalid\");\n    }\n    return distance / factor;\n}\nexports.lengthToRadians = lengthToRadians;\n/**\n * Convert a distance measurement (assuming a spherical Earth) from a real-world unit into degrees\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, centimeters, kilometres, feet\n *\n * @name lengthToDegrees\n * @param {number} distance in real units\n * @param {string} [units=\"kilometers\"] can be degrees, radians, miles, inches, yards, metres,\n * meters, kilometres, kilometers.\n * @returns {number} degrees\n */\nfunction lengthToDegrees(distance, units) {\n    return radiansToDegrees(lengthToRadians(distance, units));\n}\nexports.lengthToDegrees = lengthToDegrees;\n/**\n * Converts any bearing angle from the north line direction (positive clockwise)\n * and returns an angle between 0-360 degrees (positive clockwise), 0 being the north line\n *\n * @name bearingToAzimuth\n * @param {number} bearing angle, between -180 and +180 degrees\n * @returns {number} angle between 0 and 360 degrees\n */\nfunction bearingToAzimuth(bearing) {\n    var angle = bearing % 360;\n    if (angle < 0) {\n        angle += 360;\n    }\n    return angle;\n}\nexports.bearingToAzimuth = bearingToAzimuth;\n/**\n * Converts an angle in radians to degrees\n *\n * @name radiansToDegrees\n * @param {number} radians angle in radians\n * @returns {number} degrees between 0 and 360 degrees\n */\nfunction radiansToDegrees(radians) {\n    var degrees = radians % (2 * Math.PI);\n    return (degrees * 180) / Math.PI;\n}\nexports.radiansToDegrees = radiansToDegrees;\n/**\n * Converts an angle in degrees to radians\n *\n * @name degreesToRadians\n * @param {number} degrees angle between 0 and 360 degrees\n * @returns {number} angle in radians\n */\nfunction degreesToRadians(degrees) {\n    var radians = degrees % 360;\n    return (radians * Math.PI) / 180;\n}\nexports.degreesToRadians = degreesToRadians;\n/**\n * Converts a length to the requested unit.\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet\n *\n * @param {number} length to be converted\n * @param {Units} [originalUnit=\"kilometers\"] of the length\n * @param {Units} [finalUnit=\"kilometers\"] returned unit\n * @returns {number} the converted length\n */\nfunction convertLength(length, originalUnit, finalUnit) {\n    if (originalUnit === void 0) { originalUnit = \"kilometers\"; }\n    if (finalUnit === void 0) { finalUnit = \"kilometers\"; }\n    if (!(length >= 0)) {\n        throw new Error(\"length must be a positive number\");\n    }\n    return radiansToLength(lengthToRadians(length, originalUnit), finalUnit);\n}\nexports.convertLength = convertLength;\n/**\n * Converts a area to the requested unit.\n * Valid units: kilometers, kilometres, meters, metres, centimetres, millimeters, acres, miles, yards, feet, inches, hectares\n * @param {number} area to be converted\n * @param {Units} [originalUnit=\"meters\"] of the distance\n * @param {Units} [finalUnit=\"kilometers\"] returned unit\n * @returns {number} the converted area\n */\nfunction convertArea(area, originalUnit, finalUnit) {\n    if (originalUnit === void 0) { originalUnit = \"meters\"; }\n    if (finalUnit === void 0) { finalUnit = \"kilometers\"; }\n    if (!(area >= 0)) {\n        throw new Error(\"area must be a positive number\");\n    }\n    var startFactor = exports.areaFactors[originalUnit];\n    if (!startFactor) {\n        throw new Error(\"invalid original units\");\n    }\n    var finalFactor = exports.areaFactors[finalUnit];\n    if (!finalFactor) {\n        throw new Error(\"invalid final units\");\n    }\n    return (area / startFactor) * finalFactor;\n}\nexports.convertArea = convertArea;\n/**\n * isNumber\n *\n * @param {*} num Number to validate\n * @returns {boolean} true/false\n * @example\n * turf.isNumber(123)\n * //=true\n * turf.isNumber('foo')\n * //=false\n */\nfunction isNumber(num) {\n    return !isNaN(num) && num !== null && !Array.isArray(num);\n}\nexports.isNumber = isNumber;\n/**\n * isObject\n *\n * @param {*} input variable to validate\n * @returns {boolean} true/false\n * @example\n * turf.isObject({elevation: 10})\n * //=true\n * turf.isObject('foo')\n * //=false\n */\nfunction isObject(input) {\n    return !!input && input.constructor === Object;\n}\nexports.isObject = isObject;\n/**\n * Validate BBox\n *\n * @private\n * @param {Array<number>} bbox BBox to validate\n * @returns {void}\n * @throws Error if BBox is not valid\n * @example\n * validateBBox([-180, -40, 110, 50])\n * //=OK\n * validateBBox([-180, -40])\n * //=Error\n * validateBBox('Foo')\n * //=Error\n * validateBBox(5)\n * //=Error\n * validateBBox(null)\n * //=Error\n * validateBBox(undefined)\n * //=Error\n */\nfunction validateBBox(bbox) {\n    if (!bbox) {\n        throw new Error(\"bbox is required\");\n    }\n    if (!Array.isArray(bbox)) {\n        throw new Error(\"bbox must be an Array\");\n    }\n    if (bbox.length !== 4 && bbox.length !== 6) {\n        throw new Error(\"bbox must be an Array of 4 or 6 numbers\");\n    }\n    bbox.forEach(function (num) {\n        if (!isNumber(num)) {\n            throw new Error(\"bbox must only contain numbers\");\n        }\n    });\n}\nexports.validateBBox = validateBBox;\n/**\n * Validate Id\n *\n * @private\n * @param {string|number} id Id to validate\n * @returns {void}\n * @throws Error if Id is not valid\n * @example\n * validateId([-180, -40, 110, 50])\n * //=Error\n * validateId([-180, -40])\n * //=Error\n * validateId('Foo')\n * //=OK\n * validateId(5)\n * //=OK\n * validateId(null)\n * //=Error\n * validateId(undefined)\n * //=Error\n */\nfunction validateId(id) {\n    if (!id) {\n        throw new Error(\"id is required\");\n    }\n    if ([\"string\", \"number\"].indexOf(typeof id) === -1) {\n        throw new Error(\"id must be a number or a string\");\n    }\n}\nexports.validateId = validateId;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar helpers_1 = require(\"@turf/helpers\");\n/**\n * Unwrap a coordinate from a Point Feature, Geometry or a single coordinate.\n *\n * @name getCoord\n * @param {Array<number>|Geometry<Point>|Feature<Point>} coord GeoJSON Point or an Array of numbers\n * @returns {Array<number>} coordinates\n * @example\n * var pt = turf.point([10, 10]);\n *\n * var coord = turf.getCoord(pt);\n * //= [10, 10]\n */\nfunction getCoord(coord) {\n    if (!coord) {\n        throw new Error(\"coord is required\");\n    }\n    if (!Array.isArray(coord)) {\n        if (coord.type === \"Feature\" &&\n            coord.geometry !== null &&\n            coord.geometry.type === \"Point\") {\n            return coord.geometry.coordinates;\n        }\n        if (coord.type === \"Point\") {\n            return coord.coordinates;\n        }\n    }\n    if (Array.isArray(coord) &&\n        coord.length >= 2 &&\n        !Array.isArray(coord[0]) &&\n        !Array.isArray(coord[1])) {\n        return coord;\n    }\n    throw new Error(\"coord must be GeoJSON Point or an Array of numbers\");\n}\nexports.getCoord = getCoord;\n/**\n * Unwrap coordinates from a Feature, Geometry Object or an Array\n *\n * @name getCoords\n * @param {Array<any>|Geometry|Feature} coords Feature, Geometry Object or an Array\n * @returns {Array<any>} coordinates\n * @example\n * var poly = turf.polygon([[[119.32, -8.7], [119.55, -8.69], [119.51, -8.54], [119.32, -8.7]]]);\n *\n * var coords = turf.getCoords(poly);\n * //= [[[119.32, -8.7], [119.55, -8.69], [119.51, -8.54], [119.32, -8.7]]]\n */\nfunction getCoords(coords) {\n    if (Array.isArray(coords)) {\n        return coords;\n    }\n    // Feature\n    if (coords.type === \"Feature\") {\n        if (coords.geometry !== null) {\n            return coords.geometry.coordinates;\n        }\n    }\n    else {\n        // Geometry\n        if (coords.coordinates) {\n            return coords.coordinates;\n        }\n    }\n    throw new Error(\"coords must be GeoJSON Feature, Geometry Object or an Array\");\n}\nexports.getCoords = getCoords;\n/**\n * Checks if coordinates contains a number\n *\n * @name containsNumber\n * @param {Array<any>} coordinates GeoJSON Coordinates\n * @returns {boolean} true if Array contains a number\n */\nfunction containsNumber(coordinates) {\n    if (coordinates.length > 1 &&\n        helpers_1.isNumber(coordinates[0]) &&\n        helpers_1.isNumber(coordinates[1])) {\n        return true;\n    }\n    if (Array.isArray(coordinates[0]) && coordinates[0].length) {\n        return containsNumber(coordinates[0]);\n    }\n    throw new Error(\"coordinates must only contain numbers\");\n}\nexports.containsNumber = containsNumber;\n/**\n * Enforce expectations about types of GeoJSON objects for Turf.\n *\n * @name geojsonType\n * @param {GeoJSON} value any GeoJSON object\n * @param {string} type expected GeoJSON type\n * @param {string} name name of calling function\n * @throws {Error} if value is not the expected type.\n */\nfunction geojsonType(value, type, name) {\n    if (!type || !name) {\n        throw new Error(\"type and name required\");\n    }\n    if (!value || value.type !== type) {\n        throw new Error(\"Invalid input to \" +\n            name +\n            \": must be a \" +\n            type +\n            \", given \" +\n            value.type);\n    }\n}\nexports.geojsonType = geojsonType;\n/**\n * Enforce expectations about types of {@link Feature} inputs for Turf.\n * Internally this uses {@link geojsonType} to judge geometry types.\n *\n * @name featureOf\n * @param {Feature} feature a feature with an expected geometry type\n * @param {string} type expected GeoJSON type\n * @param {string} name name of calling function\n * @throws {Error} error if value is not the expected type.\n */\nfunction featureOf(feature, type, name) {\n    if (!feature) {\n        throw new Error(\"No feature passed\");\n    }\n    if (!name) {\n        throw new Error(\".featureOf() requires a name\");\n    }\n    if (!feature || feature.type !== \"Feature\" || !feature.geometry) {\n        throw new Error(\"Invalid input to \" + name + \", Feature with geometry required\");\n    }\n    if (!feature.geometry || feature.geometry.type !== type) {\n        throw new Error(\"Invalid input to \" +\n            name +\n            \": must be a \" +\n            type +\n            \", given \" +\n            feature.geometry.type);\n    }\n}\nexports.featureOf = featureOf;\n/**\n * Enforce expectations about types of {@link FeatureCollection} inputs for Turf.\n * Internally this uses {@link geojsonType} to judge geometry types.\n *\n * @name collectionOf\n * @param {FeatureCollection} featureCollection a FeatureCollection for which features will be judged\n * @param {string} type expected GeoJSON type\n * @param {string} name name of calling function\n * @throws {Error} if value is not the expected type.\n */\nfunction collectionOf(featureCollection, type, name) {\n    if (!featureCollection) {\n        throw new Error(\"No featureCollection passed\");\n    }\n    if (!name) {\n        throw new Error(\".collectionOf() requires a name\");\n    }\n    if (!featureCollection || featureCollection.type !== \"FeatureCollection\") {\n        throw new Error(\"Invalid input to \" + name + \", FeatureCollection required\");\n    }\n    for (var _i = 0, _a = featureCollection.features; _i < _a.length; _i++) {\n        var feature = _a[_i];\n        if (!feature || feature.type !== \"Feature\" || !feature.geometry) {\n            throw new Error(\"Invalid input to \" + name + \", Feature with geometry required\");\n        }\n        if (!feature.geometry || feature.geometry.type !== type) {\n            throw new Error(\"Invalid input to \" +\n                name +\n                \": must be a \" +\n                type +\n                \", given \" +\n                feature.geometry.type);\n        }\n    }\n}\nexports.collectionOf = collectionOf;\n/**\n * Get Geometry from Feature or Geometry Object\n *\n * @param {Feature|Geometry} geojson GeoJSON Feature or Geometry Object\n * @returns {Geometry|null} GeoJSON Geometry Object\n * @throws {Error} if geojson is not a Feature or Geometry Object\n * @example\n * var point = {\n *   \"type\": \"Feature\",\n *   \"properties\": {},\n *   \"geometry\": {\n *     \"type\": \"Point\",\n *     \"coordinates\": [110, 40]\n *   }\n * }\n * var geom = turf.getGeom(point)\n * //={\"type\": \"Point\", \"coordinates\": [110, 40]}\n */\nfunction getGeom(geojson) {\n    if (geojson.type === \"Feature\") {\n        return geojson.geometry;\n    }\n    return geojson;\n}\nexports.getGeom = getGeom;\n/**\n * Get GeoJSON object's type, Geometry type is prioritize.\n *\n * @param {GeoJSON} geojson GeoJSON object\n * @param {string} [name=\"geojson\"] name of the variable to display in error message (unused)\n * @returns {string} GeoJSON type\n * @example\n * var point = {\n *   \"type\": \"Feature\",\n *   \"properties\": {},\n *   \"geometry\": {\n *     \"type\": \"Point\",\n *     \"coordinates\": [110, 40]\n *   }\n * }\n * var geom = turf.getType(point)\n * //=\"Point\"\n */\nfunction getType(geojson, _name) {\n    if (geojson.type === \"FeatureCollection\") {\n        return \"FeatureCollection\";\n    }\n    if (geojson.type === \"GeometryCollection\") {\n        return \"GeometryCollection\";\n    }\n    if (geojson.type === \"Feature\" && geojson.geometry !== null) {\n        return geojson.geometry.type;\n    }\n    return geojson.type;\n}\nexports.getType = getType;\n","/**\n          * @ag-grid-community/all-modules - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue * @version v29.3.5\n          * @link https://www.ag-grid.com/\n          * @license MIT\n          */\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\n/**\n * If value is undefined, null or blank, returns null, otherwise returns the value\n * @param {T} value\n * @returns {T | null}\n */\nfunction makeNull(value) {\n    if (value == null || value === '') {\n        return null;\n    }\n    return value;\n}\nfunction exists(value, allowEmptyString) {\n    if (allowEmptyString === void 0) { allowEmptyString = false; }\n    return value != null && (value !== '' || allowEmptyString);\n}\nfunction missing(value) {\n    return !exists(value);\n}\nfunction missingOrEmpty(value) {\n    return value == null || value.length === 0;\n}\nfunction toStringOrNull(value) {\n    return value != null && typeof value.toString === 'function' ? value.toString() : null;\n}\n// for parsing html attributes, where we want empty strings and missing attributes to be undefined\nfunction attrToNumber(value) {\n    if (value === undefined) {\n        // undefined or empty means ignore the value\n        return;\n    }\n    if (value === null || value === '') {\n        // null or blank means clear\n        return null;\n    }\n    if (typeof value === 'number') {\n        return isNaN(value) ? undefined : value;\n    }\n    var valueParsed = parseInt(value, 10);\n    return isNaN(valueParsed) ? undefined : valueParsed;\n}\n// for parsing html attributes, where we want empty strings and missing attributes to be undefined\nfunction attrToBoolean(value) {\n    if (value === undefined) {\n        // undefined or empty means ignore the value\n        return;\n    }\n    if (value === null || value === '') {\n        // null means clear\n        return false;\n    }\n    if (typeof value === 'boolean') {\n        // if simple boolean, return the boolean\n        return value;\n    }\n    // if equal to the string 'true' (ignoring case) then return true\n    return (/true/i).test(value);\n}\n// for parsing html attributes, where we want empty strings and missing attributes to be undefined\nfunction attrToString(value) {\n    if (value == null || value === '') {\n        return;\n    }\n    return value;\n}\n/** @deprecated */\nfunction referenceCompare(left, right) {\n    if (left == null && right == null) {\n        return true;\n    }\n    if (left == null && right != null) {\n        return false;\n    }\n    if (left != null && right == null) {\n        return false;\n    }\n    return left === right;\n}\nfunction jsonEquals(val1, val2) {\n    var val1Json = val1 ? JSON.stringify(val1) : null;\n    var val2Json = val2 ? JSON.stringify(val2) : null;\n    return val1Json === val2Json;\n}\nfunction defaultComparator(valueA, valueB, accentedCompare) {\n    if (accentedCompare === void 0) { accentedCompare = false; }\n    var valueAMissing = valueA == null;\n    var valueBMissing = valueB == null;\n    // this is for aggregations sum and avg, where the result can be a number that is wrapped.\n    // if we didn't do this, then the toString() value would be used, which would result in\n    // the strings getting used instead of the numbers.\n    if (valueA && valueA.toNumber) {\n        valueA = valueA.toNumber();\n    }\n    if (valueB && valueB.toNumber) {\n        valueB = valueB.toNumber();\n    }\n    if (valueAMissing && valueBMissing) {\n        return 0;\n    }\n    if (valueAMissing) {\n        return -1;\n    }\n    if (valueBMissing) {\n        return 1;\n    }\n    function doQuickCompare(a, b) {\n        return (a > b ? 1 : (a < b ? -1 : 0));\n    }\n    if (typeof valueA !== 'string') {\n        return doQuickCompare(valueA, valueB);\n    }\n    if (!accentedCompare) {\n        return doQuickCompare(valueA, valueB);\n    }\n    try {\n        // using local compare also allows chinese comparisons\n        return valueA.localeCompare(valueB);\n    }\n    catch (e) {\n        // if something wrong with localeCompare, eg not supported\n        // by browser, then just continue with the quick one\n        return doQuickCompare(valueA, valueB);\n    }\n}\nfunction values(object) {\n    if (object instanceof Set || object instanceof Map) {\n        var arr_1 = [];\n        object.forEach(function (value) { return arr_1.push(value); });\n        return arr_1;\n    }\n    return Object.values(object);\n}\n\nvar GenericUtils = /*#__PURE__*/Object.freeze({\n    __proto__: null,\n    makeNull: makeNull,\n    exists: exists,\n    missing: missing,\n    missingOrEmpty: missingOrEmpty,\n    toStringOrNull: toStringOrNull,\n    attrToNumber: attrToNumber,\n    attrToBoolean: attrToBoolean,\n    attrToString: attrToString,\n    referenceCompare: referenceCompare,\n    jsonEquals: jsonEquals,\n    defaultComparator: defaultComparator,\n    values: values\n});\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar ColumnKeyCreator = /** @class */ (function () {\n    function ColumnKeyCreator() {\n        this.existingKeys = {};\n    }\n    ColumnKeyCreator.prototype.addExistingKeys = function (keys) {\n        for (var i = 0; i < keys.length; i++) {\n            this.existingKeys[keys[i]] = true;\n        }\n    };\n    ColumnKeyCreator.prototype.getUniqueKey = function (colId, colField) {\n        // in case user passed in number for colId, convert to string\n        colId = toStringOrNull(colId);\n        var count = 0;\n        while (true) {\n            var idToTry = void 0;\n            if (colId) {\n                idToTry = colId;\n                if (count !== 0) {\n                    idToTry += '_' + count;\n                }\n            }\n            else if (colField) {\n                idToTry = colField;\n                if (count !== 0) {\n                    idToTry += '_' + count;\n                }\n            }\n            else {\n                idToTry = '' + count;\n            }\n            if (!this.existingKeys[idToTry]) {\n                this.existingKeys[idToTry] = true;\n                return idToTry;\n            }\n            count++;\n        }\n    };\n    return ColumnKeyCreator;\n}());\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nfunction iterateObject(object, callback) {\n    if (object == null) {\n        return;\n    }\n    if (Array.isArray(object)) {\n        object.forEach(function (value, index) { return callback(\"\" + index, value); });\n    }\n    else {\n        Object.keys(object).forEach(function (key) { return callback(key, object[key]); });\n    }\n}\nfunction cloneObject(object) {\n    var copy = {};\n    var keys = Object.keys(object);\n    for (var i = 0; i < keys.length; i++) {\n        var key = keys[i];\n        var value = object[key];\n        copy[key] = value;\n    }\n    return copy;\n}\nfunction deepCloneObject(object) {\n    return JSON.parse(JSON.stringify(object));\n}\n// returns copy of an object, doing a deep clone of any objects with that object.\n// this is used for eg creating copies of Column Definitions, where we want to\n// deep copy all objects, but do not want to deep copy functions (eg when user provides\n// a function or class for colDef.cellRenderer)\nfunction deepCloneDefinition(object, keysToSkip) {\n    if (!object) {\n        return;\n    }\n    var obj = object;\n    var res = {};\n    Object.keys(obj).forEach(function (key) {\n        if (keysToSkip && keysToSkip.indexOf(key) >= 0) {\n            return;\n        }\n        var value = obj[key];\n        // 'simple object' means a bunch of key/value pairs, eg {filter: 'myFilter'}. it does\n        // NOT include the following:\n        // 1) arrays\n        // 2) functions or classes (eg ColumnAPI instance)\n        var sourceIsSimpleObject = isNonNullObject(value) && value.constructor === Object;\n        if (sourceIsSimpleObject) {\n            res[key] = deepCloneDefinition(value);\n        }\n        else {\n            res[key] = value;\n        }\n    });\n    return res;\n}\nfunction getProperty(object, key) {\n    return object[key];\n}\nfunction setProperty(object, key, value) {\n    object[key] = value;\n}\n/**\n * Will copy the specified properties from `source` into the equivalent properties on `target`, ignoring properties with\n * a value of `undefined`.\n */\nfunction copyPropertiesIfPresent(source, target) {\n    var properties = [];\n    for (var _i = 2; _i < arguments.length; _i++) {\n        properties[_i - 2] = arguments[_i];\n    }\n    properties.forEach(function (p) { return copyPropertyIfPresent(source, target, p); });\n}\n/**\n * Will copy the specified property from `source` into the equivalent property on `target`, unless the property has a\n * value of `undefined`. If a transformation is provided, it will be applied to the value before being set on `target`.\n */\nfunction copyPropertyIfPresent(source, target, property, transform) {\n    var value = getProperty(source, property);\n    if (value !== undefined) {\n        setProperty(target, property, transform ? transform(value) : value);\n    }\n}\nfunction getAllKeysInObjects(objects) {\n    var allValues = {};\n    objects.filter(function (obj) { return obj != null; }).forEach(function (obj) {\n        Object.keys(obj).forEach(function (key) { return allValues[key] = null; });\n    });\n    return Object.keys(allValues);\n}\nfunction getAllValuesInObject(obj) {\n    if (!obj) {\n        return [];\n    }\n    var anyObject = Object;\n    if (typeof anyObject.values === 'function') {\n        return anyObject.values(obj);\n    }\n    var ret = [];\n    for (var key in obj) {\n        if (obj.hasOwnProperty(key) && obj.propertyIsEnumerable(key)) {\n            ret.push(obj[key]);\n        }\n    }\n    return ret;\n}\nfunction mergeDeep(dest, source, copyUndefined, makeCopyOfSimpleObjects) {\n    if (copyUndefined === void 0) { copyUndefined = true; }\n    if (makeCopyOfSimpleObjects === void 0) { makeCopyOfSimpleObjects = false; }\n    if (!exists(source)) {\n        return;\n    }\n    iterateObject(source, function (key, sourceValue) {\n        var destValue = dest[key];\n        if (destValue === sourceValue) {\n            return;\n        }\n        // when creating params, we don't want to just copy objects over. otherwise merging ColDefs (eg DefaultColDef\n        // and Column Types) would result in params getting shared between objects.\n        // by putting an empty value into destValue first, it means we end up copying over values from\n        // the source object, rather than just copying in the source object in it's entirety.\n        if (makeCopyOfSimpleObjects) {\n            var objectIsDueToBeCopied = destValue == null && sourceValue != null;\n            if (objectIsDueToBeCopied) {\n                // 'simple object' means a bunch of key/value pairs, eg {filter: 'myFilter'}, as opposed\n                // to a Class instance (such as ColumnAPI instance).\n                var sourceIsSimpleObject = typeof sourceValue === 'object' && sourceValue.constructor === Object;\n                var dontCopy = sourceIsSimpleObject;\n                if (dontCopy) {\n                    destValue = {};\n                    dest[key] = destValue;\n                }\n            }\n        }\n        if (isNonNullObject(sourceValue) && isNonNullObject(destValue) && !Array.isArray(destValue)) {\n            mergeDeep(destValue, sourceValue, copyUndefined, makeCopyOfSimpleObjects);\n        }\n        else if (copyUndefined || sourceValue !== undefined) {\n            dest[key] = sourceValue;\n        }\n    });\n}\nfunction missingOrEmptyObject(value) {\n    return missing(value) || Object.keys(value).length === 0;\n}\nfunction get(source, expression, defaultValue) {\n    if (source == null) {\n        return defaultValue;\n    }\n    var keys = expression.split('.');\n    var objectToRead = source;\n    while (keys.length > 1) {\n        objectToRead = objectToRead[keys.shift()];\n        if (objectToRead == null) {\n            return defaultValue;\n        }\n    }\n    var value = objectToRead[keys[0]];\n    return value != null ? value : defaultValue;\n}\nfunction set(target, expression, value) {\n    if (target == null) {\n        return;\n    }\n    var keys = expression.split('.');\n    var objectToUpdate = target;\n    // Create empty objects\n    keys.forEach(function (key, i) {\n        if (!objectToUpdate[key]) {\n            objectToUpdate[key] = {};\n        }\n        if (i < keys.length - 1) {\n            objectToUpdate = objectToUpdate[key];\n        }\n    });\n    objectToUpdate[keys[keys.length - 1]] = value;\n}\nfunction getValueUsingField(data, field, fieldContainsDots) {\n    if (!field || !data) {\n        return;\n    }\n    // if no '.', then it's not a deep value\n    if (!fieldContainsDots) {\n        return data[field];\n    }\n    // otherwise it is a deep value, so need to dig for it\n    var fields = field.split('.');\n    var currentObject = data;\n    for (var i = 0; i < fields.length; i++) {\n        if (currentObject == null) {\n            return undefined;\n        }\n        currentObject = currentObject[fields[i]];\n    }\n    return currentObject;\n}\n// used by ColumnAPI and GridAPI to remove all references, so keeping grid in memory resulting in a\n// memory leak if user is not disposing of the GridAPI or ColumnApi references\nfunction removeAllReferences(obj, objectName) {\n    Object.keys(obj).forEach(function (key) {\n        var value = obj[key];\n        // we want to replace all the @autowired services, which are objects. any simple types (boolean, string etc)\n        // we don't care about\n        if (typeof value === 'object') {\n            obj[key] = undefined;\n        }\n    });\n    var proto = Object.getPrototypeOf(obj);\n    var properties = {};\n    Object.keys(proto).forEach(function (key) {\n        var value = proto[key];\n        // leave all basic types - this is needed for GridAPI to leave the \"destroyed: boolean\" attribute alone\n        if (typeof value === 'function') {\n            var func = function () {\n                console.warn(\"AG Grid: \" + objectName + \" function \" + key + \"() cannot be called as the grid has been destroyed.\\n                     Please don't call grid API functions on destroyed grids - as a matter of fact you shouldn't\\n                     be keeping the API reference, your application has a memory leak! Remove the API reference\\n                     when the grid is destroyed.\");\n            };\n            properties[key] = { value: func, writable: true };\n        }\n    });\n    Object.defineProperties(obj, properties);\n}\nfunction isNonNullObject(value) {\n    return typeof value === 'object' && value !== null;\n}\n\nvar ObjectUtils = /*#__PURE__*/Object.freeze({\n    __proto__: null,\n    iterateObject: iterateObject,\n    cloneObject: cloneObject,\n    deepCloneObject: deepCloneObject,\n    deepCloneDefinition: deepCloneDefinition,\n    getProperty: getProperty,\n    setProperty: setProperty,\n    copyPropertiesIfPresent: copyPropertiesIfPresent,\n    copyPropertyIfPresent: copyPropertyIfPresent,\n    getAllKeysInObjects: getAllKeysInObjects,\n    getAllValuesInObject: getAllValuesInObject,\n    mergeDeep: mergeDeep,\n    missingOrEmptyObject: missingOrEmptyObject,\n    get: get,\n    set: set,\n    getValueUsingField: getValueUsingField,\n    removeAllReferences: removeAllReferences,\n    isNonNullObject: isNonNullObject\n});\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar doOnceFlags = {};\n/**\n * If the key was passed before, then doesn't execute the func\n * @param {Function} func\n * @param {string} key\n */\nfunction doOnce(func, key) {\n    if (doOnceFlags[key]) {\n        return;\n    }\n    func();\n    doOnceFlags[key] = true;\n}\nfunction getFunctionName(funcConstructor) {\n    // for every other browser in the world\n    if (funcConstructor.name) {\n        return funcConstructor.name;\n    }\n    // for the pestilence that is ie11\n    var matches = /function\\s+([^\\(]+)/.exec(funcConstructor.toString());\n    return matches && matches.length === 2 ? matches[1].trim() : null;\n}\nfunction isFunction(val) {\n    return !!(val && val.constructor && val.call && val.apply);\n}\nfunction executeInAWhile(funcs) {\n    executeAfter(funcs, 400);\n}\nvar executeNextVMTurnFuncs = [];\nvar executeNextVMTurnPending = false;\nfunction executeNextVMTurn(func) {\n    executeNextVMTurnFuncs.push(func);\n    if (executeNextVMTurnPending) {\n        return;\n    }\n    executeNextVMTurnPending = true;\n    window.setTimeout(function () {\n        var funcsCopy = executeNextVMTurnFuncs.slice();\n        executeNextVMTurnFuncs.length = 0;\n        executeNextVMTurnPending = false;\n        funcsCopy.forEach(function (func) { return func(); });\n    }, 0);\n}\nfunction executeAfter(funcs, milliseconds) {\n    if (milliseconds === void 0) { milliseconds = 0; }\n    if (funcs.length > 0) {\n        window.setTimeout(function () { return funcs.forEach(function (func) { return func(); }); }, milliseconds);\n    }\n}\n/**\n * @param {Function} func The function to be debounced\n * @param {number} delay The time in ms to debounce\n * @return {Function} The debounced function\n */\nfunction debounce(func, delay) {\n    var timeout;\n    // Calling debounce returns a new anonymous function\n    return function () {\n        var args = [];\n        for (var _i = 0; _i < arguments.length; _i++) {\n            args[_i] = arguments[_i];\n        }\n        var context = this;\n        window.clearTimeout(timeout);\n        // Set the new timeout\n        timeout = window.setTimeout(function () {\n            func.apply(context, args);\n        }, delay);\n    };\n}\n/**\n * @param {Function} func The function to be throttled\n * @param {number} wait The time in ms to throttle\n * @return {Function} The throttled function\n */\nfunction throttle(func, wait) {\n    var previousCall = 0;\n    return function () {\n        var args = [];\n        for (var _i = 0; _i < arguments.length; _i++) {\n            args[_i] = arguments[_i];\n        }\n        var context = this;\n        var currentCall = new Date().getTime();\n        if (currentCall - previousCall < wait) {\n            return;\n        }\n        previousCall = currentCall;\n        func.apply(context, args);\n    };\n}\nfunction waitUntil(condition, callback, timeout, timeoutMessage) {\n    if (timeout === void 0) { timeout = 100; }\n    var timeStamp = new Date().getTime();\n    var interval = null;\n    var executed = false;\n    var internalCallback = function () {\n        var reachedTimeout = ((new Date().getTime()) - timeStamp) > timeout;\n        if (condition() || reachedTimeout) {\n            callback();\n            executed = true;\n            if (interval != null) {\n                window.clearInterval(interval);\n                interval = null;\n            }\n            if (reachedTimeout && timeoutMessage) {\n                console.warn(timeoutMessage);\n            }\n        }\n    };\n    internalCallback();\n    if (!executed) {\n        interval = window.setInterval(internalCallback, 10);\n    }\n}\nfunction compose() {\n    var fns = [];\n    for (var _i = 0; _i < arguments.length; _i++) {\n        fns[_i] = arguments[_i];\n    }\n    return function (arg) { return fns.reduce(function (composed, f) { return f(composed); }, arg); };\n}\nfunction callIfPresent(func) {\n    if (func) {\n        func();\n    }\n}\nvar noop = function () { return; };\n\nvar FunctionUtils = /*#__PURE__*/Object.freeze({\n    __proto__: null,\n    doOnce: doOnce,\n    getFunctionName: getFunctionName,\n    isFunction: isFunction,\n    executeInAWhile: executeInAWhile,\n    executeNextVMTurn: executeNextVMTurn,\n    executeAfter: executeAfter,\n    debounce: debounce,\n    throttle: throttle,\n    waitUntil: waitUntil,\n    compose: compose,\n    callIfPresent: callIfPresent,\n    noop: noop\n});\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __read$w = (undefined && undefined.__read) || function (o, n) {\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n    if (!m) return o;\n    var i = m.call(o), r, ar = [], e;\n    try {\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n    }\n    catch (error) { e = { error: error }; }\n    finally {\n        try {\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\n        }\n        finally { if (e) throw e.error; }\n    }\n    return ar;\n};\nvar __spread$p = (undefined && undefined.__spread) || function () {\n    for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read$w(arguments[i]));\n    return ar;\n};\nvar Context = /** @class */ (function () {\n    function Context(params, logger) {\n        this.beanWrappers = {};\n        this.destroyed = false;\n        if (!params || !params.beanClasses) {\n            return;\n        }\n        this.contextParams = params;\n        this.logger = logger;\n        this.logger.log(\">> creating ag-Application Context\");\n        this.createBeans();\n        var beanInstances = this.getBeanInstances();\n        this.wireBeans(beanInstances);\n        this.logger.log(\">> ag-Application Context ready - component is alive\");\n    }\n    Context.prototype.getBeanInstances = function () {\n        return values(this.beanWrappers).map(function (beanEntry) { return beanEntry.beanInstance; });\n    };\n    Context.prototype.createBean = function (bean, afterPreCreateCallback) {\n        if (!bean) {\n            throw Error(\"Can't wire to bean since it is null\");\n        }\n        this.wireBeans([bean], afterPreCreateCallback);\n        return bean;\n    };\n    Context.prototype.wireBeans = function (beanInstances, afterPreCreateCallback) {\n        this.autoWireBeans(beanInstances);\n        this.methodWireBeans(beanInstances);\n        this.callLifeCycleMethods(beanInstances, 'preConstructMethods');\n        // the callback sets the attributes, so the component has access to attributes\n        // before postConstruct methods in the component are executed\n        if (exists(afterPreCreateCallback)) {\n            beanInstances.forEach(afterPreCreateCallback);\n        }\n        this.callLifeCycleMethods(beanInstances, 'postConstructMethods');\n    };\n    Context.prototype.createBeans = function () {\n        var _this = this;\n        // register all normal beans\n        this.contextParams.beanClasses.forEach(this.createBeanWrapper.bind(this));\n        // register override beans, these will overwrite beans above of same name\n        // instantiate all beans - overridden beans will be left out\n        iterateObject(this.beanWrappers, function (key, beanEntry) {\n            var constructorParamsMeta;\n            if (beanEntry.bean.__agBeanMetaData && beanEntry.bean.__agBeanMetaData.autowireMethods && beanEntry.bean.__agBeanMetaData.autowireMethods.agConstructor) {\n                constructorParamsMeta = beanEntry.bean.__agBeanMetaData.autowireMethods.agConstructor;\n            }\n            var constructorParams = _this.getBeansForParameters(constructorParamsMeta, beanEntry.bean.name);\n            var newInstance = new (beanEntry.bean.bind.apply(beanEntry.bean, __spread$p([null], constructorParams)));\n            beanEntry.beanInstance = newInstance;\n        });\n        var createdBeanNames = Object.keys(this.beanWrappers).join(', ');\n        this.logger.log(\"created beans: \" + createdBeanNames);\n    };\n    // tslint:disable-next-line\n    Context.prototype.createBeanWrapper = function (BeanClass) {\n        var metaData = BeanClass.__agBeanMetaData;\n        if (!metaData) {\n            var beanName = void 0;\n            if (BeanClass.prototype.constructor) {\n                beanName = getFunctionName(BeanClass.prototype.constructor);\n            }\n            else {\n                beanName = \"\" + BeanClass;\n            }\n            console.error(\"Context item \" + beanName + \" is not a bean\");\n            return;\n        }\n        var beanEntry = {\n            bean: BeanClass,\n            beanInstance: null,\n            beanName: metaData.beanName\n        };\n        this.beanWrappers[metaData.beanName] = beanEntry;\n    };\n    Context.prototype.autoWireBeans = function (beanInstances) {\n        var _this = this;\n        beanInstances.forEach(function (beanInstance) {\n            _this.forEachMetaDataInHierarchy(beanInstance, function (metaData, beanName) {\n                var attributes = metaData.agClassAttributes;\n                if (!attributes) {\n                    return;\n                }\n                attributes.forEach(function (attribute) {\n                    var otherBean = _this.lookupBeanInstance(beanName, attribute.beanName, attribute.optional);\n                    beanInstance[attribute.attributeName] = otherBean;\n                });\n            });\n        });\n    };\n    Context.prototype.methodWireBeans = function (beanInstances) {\n        var _this = this;\n        beanInstances.forEach(function (beanInstance) {\n            _this.forEachMetaDataInHierarchy(beanInstance, function (metaData, beanName) {\n                iterateObject(metaData.autowireMethods, function (methodName, wireParams) {\n                    // skip constructor, as this is dealt with elsewhere\n                    if (methodName === \"agConstructor\") {\n                        return;\n                    }\n                    var initParams = _this.getBeansForParameters(wireParams, beanName);\n                    beanInstance[methodName].apply(beanInstance, initParams);\n                });\n            });\n        });\n    };\n    Context.prototype.forEachMetaDataInHierarchy = function (beanInstance, callback) {\n        var prototype = Object.getPrototypeOf(beanInstance);\n        while (prototype != null) {\n            var constructor = prototype.constructor;\n            if (constructor.hasOwnProperty('__agBeanMetaData')) {\n                var metaData = constructor.__agBeanMetaData;\n                var beanName = this.getBeanName(constructor);\n                callback(metaData, beanName);\n            }\n            prototype = Object.getPrototypeOf(prototype);\n        }\n    };\n    Context.prototype.getBeanName = function (constructor) {\n        if (constructor.__agBeanMetaData && constructor.__agBeanMetaData.beanName) {\n            return constructor.__agBeanMetaData.beanName;\n        }\n        var constructorString = constructor.toString();\n        var beanName = constructorString.substring(9, constructorString.indexOf(\"(\"));\n        return beanName;\n    };\n    Context.prototype.getBeansForParameters = function (parameters, beanName) {\n        var _this = this;\n        var beansList = [];\n        if (parameters) {\n            iterateObject(parameters, function (paramIndex, otherBeanName) {\n                var otherBean = _this.lookupBeanInstance(beanName, otherBeanName);\n                beansList[Number(paramIndex)] = otherBean;\n            });\n        }\n        return beansList;\n    };\n    Context.prototype.lookupBeanInstance = function (wiringBean, beanName, optional) {\n        if (optional === void 0) { optional = false; }\n        if (beanName === \"context\") {\n            return this;\n        }\n        if (this.contextParams.providedBeanInstances && this.contextParams.providedBeanInstances.hasOwnProperty(beanName)) {\n            return this.contextParams.providedBeanInstances[beanName];\n        }\n        var beanEntry = this.beanWrappers[beanName];\n        if (beanEntry) {\n            return beanEntry.beanInstance;\n        }\n        if (!optional) {\n            console.error(\"AG Grid: unable to find bean reference \" + beanName + \" while initialising \" + wiringBean);\n        }\n        return null;\n    };\n    Context.prototype.callLifeCycleMethods = function (beanInstances, lifeCycleMethod) {\n        var _this = this;\n        beanInstances.forEach(function (beanInstance) { return _this.callLifeCycleMethodsOnBean(beanInstance, lifeCycleMethod); });\n    };\n    Context.prototype.callLifeCycleMethodsOnBean = function (beanInstance, lifeCycleMethod, methodToIgnore) {\n        // putting all methods into a map removes duplicates\n        var allMethods = {};\n        // dump methods from each level of the metadata hierarchy\n        this.forEachMetaDataInHierarchy(beanInstance, function (metaData) {\n            var methods = metaData[lifeCycleMethod];\n            if (methods) {\n                methods.forEach(function (methodName) {\n                    if (methodName != methodToIgnore) {\n                        allMethods[methodName] = true;\n                    }\n                });\n            }\n        });\n        var allMethodsList = Object.keys(allMethods);\n        allMethodsList.forEach(function (methodName) { return beanInstance[methodName](); });\n    };\n    Context.prototype.getBean = function (name) {\n        return this.lookupBeanInstance(\"getBean\", name, true);\n    };\n    Context.prototype.destroy = function () {\n        if (this.destroyed) {\n            return;\n        }\n        this.logger.log(\">> Shutting down ag-Application Context\");\n        var beanInstances = this.getBeanInstances();\n        this.destroyBeans(beanInstances);\n        this.contextParams.providedBeanInstances = null;\n        this.destroyed = true;\n        this.logger.log(\">> ag-Application Context shut down - component is dead\");\n    };\n    Context.prototype.destroyBean = function (bean) {\n        if (!bean) {\n            return;\n        }\n        this.destroyBeans([bean]);\n    };\n    Context.prototype.destroyBeans = function (beans) {\n        var _this = this;\n        if (!beans) {\n            return [];\n        }\n        beans.forEach(function (bean) {\n            _this.callLifeCycleMethodsOnBean(bean, 'preDestroyMethods', 'destroy');\n            // call destroy() explicitly if it exists\n            var beanAny = bean;\n            if (typeof beanAny.destroy === 'function') {\n                beanAny.destroy();\n            }\n        });\n        return [];\n    };\n    return Context;\n}());\nfunction PreConstruct(target, methodName, descriptor) {\n    var props = getOrCreateProps$1(target.constructor);\n    if (!props.preConstructMethods) {\n        props.preConstructMethods = [];\n    }\n    props.preConstructMethods.push(methodName);\n}\nfunction PostConstruct(target, methodName, descriptor) {\n    var props = getOrCreateProps$1(target.constructor);\n    if (!props.postConstructMethods) {\n        props.postConstructMethods = [];\n    }\n    props.postConstructMethods.push(methodName);\n}\nfunction PreDestroy(target, methodName, descriptor) {\n    var props = getOrCreateProps$1(target.constructor);\n    if (!props.preDestroyMethods) {\n        props.preDestroyMethods = [];\n    }\n    props.preDestroyMethods.push(methodName);\n}\nfunction Bean(beanName) {\n    return function (classConstructor) {\n        var props = getOrCreateProps$1(classConstructor);\n        props.beanName = beanName;\n    };\n}\nfunction Autowired(name) {\n    return function (target, propertyKey, descriptor) {\n        autowiredFunc(target, name, false, target, propertyKey, null);\n    };\n}\nfunction Optional(name) {\n    return function (target, propertyKey, descriptor) {\n        autowiredFunc(target, name, true, target, propertyKey, null);\n    };\n}\nfunction autowiredFunc(target, name, optional, classPrototype, methodOrAttributeName, index) {\n    if (name === null) {\n        console.error(\"AG Grid: Autowired name should not be null\");\n        return;\n    }\n    if (typeof index === \"number\") {\n        console.error(\"AG Grid: Autowired should be on an attribute\");\n        return;\n    }\n    // it's an attribute on the class\n    var props = getOrCreateProps$1(target.constructor);\n    if (!props.agClassAttributes) {\n        props.agClassAttributes = [];\n    }\n    props.agClassAttributes.push({\n        attributeName: methodOrAttributeName,\n        beanName: name,\n        optional: optional\n    });\n}\nfunction Qualifier(name) {\n    return function (classPrototype, methodOrAttributeName, index) {\n        var constructor = typeof classPrototype == \"function\" ? classPrototype : classPrototype.constructor;\n        var props;\n        if (typeof index === \"number\") {\n            // it's a parameter on a method\n            var methodName = void 0;\n            if (methodOrAttributeName) {\n                props = getOrCreateProps$1(constructor);\n                methodName = methodOrAttributeName;\n            }\n            else {\n                props = getOrCreateProps$1(constructor);\n                methodName = \"agConstructor\";\n            }\n            if (!props.autowireMethods) {\n                props.autowireMethods = {};\n            }\n            if (!props.autowireMethods[methodName]) {\n                props.autowireMethods[methodName] = {};\n            }\n            props.autowireMethods[methodName][index] = name;\n        }\n    };\n}\nfunction getOrCreateProps$1(target) {\n    if (!target.hasOwnProperty(\"__agBeanMetaData\")) {\n        target.__agBeanMetaData = {};\n    }\n    return target.__agBeanMetaData;\n}\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __decorate$2z = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __param$a = (undefined && undefined.__param) || function (paramIndex, decorator) {\n    return function (target, key) { decorator(target, key, paramIndex); }\n};\nvar EventService = /** @class */ (function () {\n    function EventService() {\n        this.allSyncListeners = new Map();\n        this.allAsyncListeners = new Map();\n        this.globalSyncListeners = new Set();\n        this.globalAsyncListeners = new Set();\n        this.asyncFunctionsQueue = [];\n        this.scheduled = false;\n        // using an object performs better than a Set for the number of different events we have\n        this.firedEvents = {};\n    }\n    // because this class is used both inside the context and outside the context, we do not\n    // use autowired attributes, as that would be confusing, as sometimes the attributes\n    // would be wired, and sometimes not.\n    //\n    // the global event servers used by AG Grid is autowired by the context once, and this\n    // setBeans method gets called once.\n    //\n    // the times when this class is used outside of the context (eg RowNode has an instance of this\n    // class) then it is not a bean, and this setBeans method is not called.\n    EventService.prototype.setBeans = function (loggerFactory, gridOptionsService, frameworkOverrides, globalEventListener) {\n        if (globalEventListener === void 0) { globalEventListener = null; }\n        this.frameworkOverrides = frameworkOverrides;\n        this.gridOptionsService = gridOptionsService;\n        if (globalEventListener) {\n            var async = gridOptionsService.useAsyncEvents();\n            this.addGlobalListener(globalEventListener, async);\n        }\n    };\n    EventService.prototype.getListeners = function (eventType, async, autoCreateListenerCollection) {\n        var listenerMap = async ? this.allAsyncListeners : this.allSyncListeners;\n        var listeners = listenerMap.get(eventType);\n        // Note: 'autoCreateListenerCollection' should only be 'true' if a listener is about to be added. For instance\n        // getListeners() is also called during event dispatch even though no listeners are added. This measure protects\n        // against 'memory bloat' as empty collections will prevent the RowNode's event service from being removed after\n        // the RowComp is destroyed, see noRegisteredListenersExist() below.\n        if (!listeners && autoCreateListenerCollection) {\n            listeners = new Set();\n            listenerMap.set(eventType, listeners);\n        }\n        return listeners;\n    };\n    EventService.prototype.noRegisteredListenersExist = function () {\n        return this.allSyncListeners.size === 0 && this.allAsyncListeners.size === 0 &&\n            this.globalSyncListeners.size === 0 && this.globalAsyncListeners.size === 0;\n    };\n    EventService.prototype.addEventListener = function (eventType, listener, async) {\n        if (async === void 0) { async = false; }\n        this.getListeners(eventType, async, true).add(listener);\n    };\n    EventService.prototype.removeEventListener = function (eventType, listener, async) {\n        if (async === void 0) { async = false; }\n        var listeners = this.getListeners(eventType, async, false);\n        if (!listeners) {\n            return;\n        }\n        listeners.delete(listener);\n        if (listeners.size === 0) {\n            var listenerMap = async ? this.allAsyncListeners : this.allSyncListeners;\n            listenerMap.delete(eventType);\n        }\n    };\n    EventService.prototype.addGlobalListener = function (listener, async) {\n        if (async === void 0) { async = false; }\n        (async ? this.globalAsyncListeners : this.globalSyncListeners).add(listener);\n    };\n    EventService.prototype.removeGlobalListener = function (listener, async) {\n        if (async === void 0) { async = false; }\n        (async ? this.globalAsyncListeners : this.globalSyncListeners).delete(listener);\n    };\n    EventService.prototype.dispatchEvent = function (event) {\n        var agEvent = event;\n        if (this.gridOptionsService) {\n            // Apply common properties to all dispatched events if this event service has had its beans set with gridOptionsService.\n            // Note there are multiple instances of EventService that are used local to components which do not set gridOptionsService.\n            var _a = this.gridOptionsService, api = _a.api, columnApi = _a.columnApi, context = _a.context;\n            agEvent.api = api;\n            agEvent.columnApi = columnApi;\n            agEvent.context = context;\n        }\n        this.dispatchToListeners(agEvent, true);\n        this.dispatchToListeners(agEvent, false);\n        this.firedEvents[agEvent.type] = true;\n    };\n    EventService.prototype.dispatchEventOnce = function (event) {\n        if (!this.firedEvents[event.type]) {\n            this.dispatchEvent(event);\n        }\n    };\n    EventService.prototype.dispatchToListeners = function (event, async) {\n        var _this = this;\n        var eventType = event.type;\n        if (async && 'event' in event) {\n            var browserEvent = event.event;\n            if (browserEvent instanceof Event) {\n                // AG-7893 - Persist composedPath() so that its result can still be accessed by the user asynchronously.\n                // Within an async event handler if they call composedPath() on the event it will always return an empty [].\n                event.eventPath = browserEvent.composedPath();\n            }\n        }\n        var processEventListeners = function (listeners) { return listeners.forEach(function (listener) {\n            if (async) {\n                _this.dispatchAsync(function () { return listener(event); });\n            }\n            else {\n                listener(event);\n            }\n        }); };\n        var listeners = this.getListeners(eventType, async, false);\n        if (listeners) {\n            processEventListeners(listeners);\n        }\n        var globalListeners = async ? this.globalAsyncListeners : this.globalSyncListeners;\n        globalListeners.forEach(function (listener) {\n            if (async) {\n                _this.dispatchAsync(function () { return _this.frameworkOverrides.dispatchEvent(eventType, function () { return listener(eventType, event); }, true); });\n            }\n            else {\n                _this.frameworkOverrides.dispatchEvent(eventType, function () { return listener(eventType, event); }, true);\n            }\n        });\n    };\n    // this gets called inside the grid's thread, for each event that it\n    // wants to set async. the grid then batches the events into one setTimeout()\n    // because setTimeout() is an expensive operation. ideally we would have\n    // each event in it's own setTimeout(), but we batch for performance.\n    EventService.prototype.dispatchAsync = function (func) {\n        // add to the queue for executing later in the next VM turn\n        this.asyncFunctionsQueue.push(func);\n        // check if timeout is already scheduled. the first time the grid calls\n        // this within it's thread turn, this should be false, so it will schedule\n        // the 'flush queue' method the first time it comes here. then the flag is\n        // set to 'true' so it will know it's already scheduled for subsequent calls.\n        if (!this.scheduled) {\n            // if not scheduled, schedule one\n            window.setTimeout(this.flushAsyncQueue.bind(this), 0);\n            // mark that it is scheduled\n            this.scheduled = true;\n        }\n    };\n    // this happens in the next VM turn only, and empties the queue of events\n    EventService.prototype.flushAsyncQueue = function () {\n        this.scheduled = false;\n        // we take a copy, because the event listener could be using\n        // the grid, which would cause more events, which would be potentially\n        // added to the queue, so safe to take a copy, the new events will\n        // get executed in a later VM turn rather than risk updating the\n        // queue as we are flushing it.\n        var queueCopy = this.asyncFunctionsQueue.slice();\n        this.asyncFunctionsQueue = [];\n        // execute the queue\n        queueCopy.forEach(function (func) { return func(); });\n    };\n    __decorate$2z([\n        __param$a(0, Qualifier('loggerFactory')),\n        __param$a(1, Qualifier('gridOptionsService')),\n        __param$a(2, Qualifier('frameworkOverrides')),\n        __param$a(3, Qualifier('globalEventListener'))\n    ], EventService.prototype, \"setBeans\", null);\n    EventService = __decorate$2z([\n        Bean('eventService')\n    ], EventService);\n    return EventService;\n}());\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar ModuleNames;\n(function (ModuleNames) {\n    ModuleNames[\"CommunityCoreModule\"] = \"@ag-grid-community/core\";\n    // community modules\n    ModuleNames[\"InfiniteRowModelModule\"] = \"@ag-grid-community/infinite-row-model\";\n    ModuleNames[\"ClientSideRowModelModule\"] = \"@ag-grid-community/client-side-row-model\";\n    ModuleNames[\"CsvExportModule\"] = \"@ag-grid-community/csv-export\";\n    // enterprise core - users don't need to import on this, but other enterprise modules do\n    ModuleNames[\"EnterpriseCoreModule\"] = \"@ag-grid-enterprise/core\";\n    // enterprise modules\n    ModuleNames[\"RowGroupingModule\"] = \"@ag-grid-enterprise/row-grouping\";\n    ModuleNames[\"ColumnsToolPanelModule\"] = \"@ag-grid-enterprise/column-tool-panel\";\n    ModuleNames[\"FiltersToolPanelModule\"] = \"@ag-grid-enterprise/filter-tool-panel\";\n    ModuleNames[\"MenuModule\"] = \"@ag-grid-enterprise/menu\";\n    ModuleNames[\"SetFilterModule\"] = \"@ag-grid-enterprise/set-filter\";\n    ModuleNames[\"MultiFilterModule\"] = \"@ag-grid-enterprise/multi-filter\";\n    ModuleNames[\"StatusBarModule\"] = \"@ag-grid-enterprise/status-bar\";\n    ModuleNames[\"SideBarModule\"] = \"@ag-grid-enterprise/side-bar\";\n    ModuleNames[\"RangeSelectionModule\"] = \"@ag-grid-enterprise/range-selection\";\n    ModuleNames[\"MasterDetailModule\"] = \"@ag-grid-enterprise/master-detail\";\n    ModuleNames[\"RichSelectModule\"] = \"@ag-grid-enterprise/rich-select\";\n    ModuleNames[\"GridChartsModule\"] = \"@ag-grid-enterprise/charts\";\n    ModuleNames[\"ViewportRowModelModule\"] = \"@ag-grid-enterprise/viewport-row-model\";\n    ModuleNames[\"ServerSideRowModelModule\"] = \"@ag-grid-enterprise/server-side-row-model\";\n    ModuleNames[\"ExcelExportModule\"] = \"@ag-grid-enterprise/excel-export\";\n    ModuleNames[\"ClipboardModule\"] = \"@ag-grid-enterprise/clipboard\";\n    ModuleNames[\"SparklinesModule\"] = \"@ag-grid-enterprise/sparklines\";\n    // framework wrappers currently don't provide beans, comps etc, so no need to be modules,\n    // however i argue they should be as in theory they 'could' provide beans etc\n    ModuleNames[\"AngularModule\"] = \"@ag-grid-community/angular\";\n    ModuleNames[\"ReactModule\"] = \"@ag-grid-community/react\";\n    ModuleNames[\"VueModule\"] = \"@ag-grid-community/vue\";\n    // and then this, which is definitely not a grid module, as it should not have any dependency\n    // on the grid (ie shouldn't even reference the Module interface)\n    // ChartsModule = \"@ag-grid-community/charts-core\",\n})(ModuleNames || (ModuleNames = {}));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __read$v = (undefined && undefined.__read) || function (o, n) {\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n    if (!m) return o;\n    var i = m.call(o), r, ar = [], e;\n    try {\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n    }\n    catch (error) { e = { error: error }; }\n    finally {\n        try {\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\n        }\n        finally { if (e) throw e.error; }\n    }\n    return ar;\n};\nvar ModuleRegistry = /** @class */ (function () {\n    function ModuleRegistry() {\n    }\n    ModuleRegistry.register = function (module, moduleBased) {\n        if (moduleBased === void 0) { moduleBased = true; }\n        ModuleRegistry.runVersionChecks(module);\n        ModuleRegistry.modulesMap[module.moduleName] = module;\n        ModuleRegistry.setModuleBased(moduleBased);\n    };\n    ModuleRegistry.runVersionChecks = function (module) {\n        if (!ModuleRegistry.currentModuleVersion) {\n            ModuleRegistry.currentModuleVersion = module.version;\n        }\n        if (!module.version) {\n            console.error(\"AG Grid: You are using incompatible versions of AG Grid modules. Major and minor versions should always match across modules. '\" + module.moduleName + \"' is incompatible. Please update all modules to the same version.\");\n        }\n        else if (module.version !== ModuleRegistry.currentModuleVersion) {\n            console.error(\"AG Grid: You are using incompatible versions of AG Grid modules. Major and minor versions should always match across modules. '\" + module.moduleName + \"' is version \" + module.version + \" but the other modules are version \" + this.currentModuleVersion + \". Please update all modules to the same version.\");\n        }\n        if (module.validate) {\n            var result = module.validate();\n            if (!result.isValid) {\n                var errorResult = result;\n                console.error(\"AG Grid: \" + errorResult.message);\n            }\n        }\n    };\n    ModuleRegistry.setModuleBased = function (moduleBased) {\n        if (ModuleRegistry.moduleBased === undefined) {\n            ModuleRegistry.moduleBased = moduleBased;\n        }\n        else {\n            if (ModuleRegistry.moduleBased !== moduleBased) {\n                doOnce(function () {\n                    console.warn(\"AG Grid: You are mixing modules (i.e. @ag-grid-community/core) and packages (ag-grid-community) - you can only use one or the other of these mechanisms.\");\n                    console.warn('Please see https://www.ag-grid.com/javascript-grid/packages-modules/ for more information.');\n                }, 'ModulePackageCheck');\n            }\n        }\n    };\n    /**\n     * INTERNAL - Set if files are being served from a single UMD bundle to provide accurate enterprise upgrade steps.\n     */\n    ModuleRegistry.setIsBundled = function () {\n        ModuleRegistry.isBundled = true;\n    };\n    // noinspection JSUnusedGlobalSymbols\n    ModuleRegistry.registerModules = function (modules, moduleBased) {\n        if (moduleBased === void 0) { moduleBased = true; }\n        ModuleRegistry.setModuleBased(moduleBased);\n        if (!modules) {\n            return;\n        }\n        modules.forEach(function (module) { return ModuleRegistry.register(module, moduleBased); });\n    };\n    ModuleRegistry.assertRegistered = function (moduleName, reason) {\n        var _a;\n        if (this.isRegistered(moduleName)) {\n            return true;\n        }\n        var warningKey = reason + moduleName;\n        var warningMessage;\n        if (ModuleRegistry.isBundled) {\n            {\n                warningMessage =\n                    \"AG Grid: unable to use \" + reason + \" as 'ag-grid-enterprise' has not been loaded. Check you are using the Enterprise bundle:\\n        \\n        <script src=\\\"https://cdn.jsdelivr.net/npm/ag-grid-enterprise@AG_GRID_VERSION/dist/ag-grid-enterprise.min.js\\\"></script>\\n        \\nFor more info see: https://ag-grid.com/javascript-data-grid/getting-started/#getting-started-with-ag-grid-enterprise\";\n            }\n        }\n        else if (ModuleRegistry.moduleBased || ModuleRegistry.moduleBased === undefined) {\n            var modName = (_a = Object.entries(ModuleNames).find(function (_a) {\n                var _b = __read$v(_a, 2); _b[0]; var v = _b[1];\n                return v === moduleName;\n            })) === null || _a === void 0 ? void 0 : _a[0];\n            warningMessage =\n                \"AG Grid: unable to use \" + reason + \" as the \" + modName + \" is not registered. Check if you have registered the module:\\n           \\n    import { ModuleRegistry } from '@ag-grid-community/core';\\n    import { \" + modName + \" } from '\" + moduleName + \"';\\n    \\n    ModuleRegistry.registerModules([ \" + modName + \" ]);\\n\\nFor more info see: https://www.ag-grid.com/javascript-grid/modules/\";\n        }\n        else {\n            warningMessage =\n                \"AG Grid: unable to use \" + reason + \" as package 'ag-grid-enterprise' has not been imported. Check that you have imported the package:\\n            \\n    import 'ag-grid-enterprise';\\n            \\nFor more info see: https://www.ag-grid.com/javascript-grid/packages/\";\n        }\n        doOnce(function () {\n            console.warn(warningMessage);\n        }, warningKey);\n        return false;\n    };\n    ModuleRegistry.isRegistered = function (moduleName) {\n        return !!ModuleRegistry.modulesMap[moduleName];\n    };\n    ModuleRegistry.getRegisteredModules = function () {\n        return values(ModuleRegistry.modulesMap);\n    };\n    ModuleRegistry.isPackageBased = function () {\n        return !ModuleRegistry.moduleBased;\n    };\n    // having in a map a) removes duplicates and b) allows fast lookup\n    ModuleRegistry.modulesMap = {};\n    return ModuleRegistry;\n}());\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __decorate$2y = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __read$u = (undefined && undefined.__read) || function (o, n) {\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n    if (!m) return o;\n    var i = m.call(o), r, ar = [], e;\n    try {\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n    }\n    catch (error) { e = { error: error }; }\n    finally {\n        try {\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\n        }\n        finally { if (e) throw e.error; }\n    }\n    return ar;\n};\nvar __spread$o = (undefined && undefined.__spread) || function () {\n    for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read$u(arguments[i]));\n    return ar;\n};\nvar instanceIdSequence$4 = 0;\nfunction getNextColInstanceId() {\n    return instanceIdSequence$4++;\n}\n// Wrapper around a user provide column definition. The grid treats the column definition as ready only.\n// This class contains all the runtime information about a column, plus some logic (the definition has no logic).\n// This class implements both interfaces ColumnGroupChild and ProvidedColumnGroupChild as the class can\n// appear as a child of either the original tree or the displayed tree. However the relevant group classes\n// for each type only implements one, as each group can only appear in it's associated tree (eg ProvidedColumnGroup\n// can only appear in OriginalColumn tree).\nvar Column = /** @class */ (function () {\n    function Column(colDef, userProvidedColDef, colId, primary) {\n        // used by React (and possibly other frameworks) as key for rendering. also used to\n        // identify old vs new columns for destroying cols when no longer used.\n        this.instanceId = getNextColInstanceId();\n        // The measured height of this column's header when autoHeaderHeight is enabled\n        this.autoHeaderHeight = null;\n        this.moving = false;\n        this.menuVisible = false;\n        this.filterActive = false;\n        this.eventService = new EventService();\n        this.tooltipEnabled = false;\n        this.rowGroupActive = false;\n        this.pivotActive = false;\n        this.aggregationActive = false;\n        this.colDef = colDef;\n        this.userProvidedColDef = userProvidedColDef;\n        this.colId = colId;\n        this.primary = primary;\n        this.setState(colDef);\n    }\n    Column.prototype.getInstanceId = function () {\n        return this.instanceId;\n    };\n    Column.prototype.setState = function (colDef) {\n        // sort\n        if (colDef.sort !== undefined) {\n            if (colDef.sort === 'asc' || colDef.sort === 'desc') {\n                this.sort = colDef.sort;\n            }\n        }\n        else {\n            if (colDef.initialSort === 'asc' || colDef.initialSort === 'desc') {\n                this.sort = colDef.initialSort;\n            }\n        }\n        // sortIndex\n        var sortIndex = attrToNumber(colDef.sortIndex);\n        var initialSortIndex = attrToNumber(colDef.initialSortIndex);\n        if (sortIndex !== undefined) {\n            if (sortIndex !== null) {\n                this.sortIndex = sortIndex;\n            }\n        }\n        else {\n            if (initialSortIndex !== null) {\n                this.sortIndex = initialSortIndex;\n            }\n        }\n        // hide\n        var hide = attrToBoolean(colDef.hide);\n        var initialHide = attrToBoolean(colDef.initialHide);\n        if (hide !== undefined) {\n            this.visible = !hide;\n        }\n        else {\n            this.visible = !initialHide;\n        }\n        // pinned\n        if (colDef.pinned !== undefined) {\n            this.setPinned(colDef.pinned);\n        }\n        else {\n            this.setPinned(colDef.initialPinned);\n        }\n        // flex\n        var flex = attrToNumber(colDef.flex);\n        var initialFlex = attrToNumber(colDef.initialFlex);\n        if (flex !== undefined) {\n            this.flex = flex;\n        }\n        else if (initialFlex !== undefined) {\n            this.flex = initialFlex;\n        }\n    };\n    // gets called when user provides an alternative colDef, eg\n    Column.prototype.setColDef = function (colDef, userProvidedColDef) {\n        this.colDef = colDef;\n        this.userProvidedColDef = userProvidedColDef;\n        this.initMinAndMaxWidths();\n        this.initDotNotation();\n        this.eventService.dispatchEvent(this.createColumnEvent('colDefChanged', \"api\"));\n    };\n    /**\n     * Returns the column definition provided by the application.\n     * This may not be correct, as items can be superseded by default column options.\n     * However it's useful for comparison, eg to know which application column definition matches that column.\n     */\n    Column.prototype.getUserProvidedColDef = function () {\n        return this.userProvidedColDef;\n    };\n    Column.prototype.setParent = function (parent) {\n        this.parent = parent;\n    };\n    /** Returns the parent column group, if column grouping is active. */\n    Column.prototype.getParent = function () {\n        return this.parent;\n    };\n    Column.prototype.setOriginalParent = function (originalParent) {\n        this.originalParent = originalParent;\n    };\n    Column.prototype.getOriginalParent = function () {\n        return this.originalParent;\n    };\n    // this is done after constructor as it uses gridOptionsService\n    Column.prototype.initialise = function () {\n        this.initMinAndMaxWidths();\n        this.resetActualWidth('gridInitializing');\n        this.initDotNotation();\n        this.initTooltip();\n        this.validate();\n    };\n    Column.prototype.initDotNotation = function () {\n        var suppressDotNotation = this.gridOptionsService.is('suppressFieldDotNotation');\n        this.fieldContainsDots = exists(this.colDef.field) && this.colDef.field.indexOf('.') >= 0 && !suppressDotNotation;\n        this.tooltipFieldContainsDots = exists(this.colDef.tooltipField) && this.colDef.tooltipField.indexOf('.') >= 0 && !suppressDotNotation;\n    };\n    Column.prototype.initMinAndMaxWidths = function () {\n        var colDef = this.colDef;\n        this.minWidth = this.columnUtils.calculateColMinWidth(colDef);\n        this.maxWidth = this.columnUtils.calculateColMaxWidth(colDef);\n    };\n    Column.prototype.initTooltip = function () {\n        this.tooltipEnabled = exists(this.colDef.tooltipField) ||\n            exists(this.colDef.tooltipValueGetter) ||\n            exists(this.colDef.tooltipComponent) ||\n            exists(this.colDef.tooltipComponentFramework);\n    };\n    Column.prototype.resetActualWidth = function (source) {\n        if (source === void 0) { source = 'api'; }\n        var initialWidth = this.columnUtils.calculateColInitialWidth(this.colDef);\n        this.setActualWidth(initialWidth, source, true);\n    };\n    Column.prototype.isEmptyGroup = function () {\n        return false;\n    };\n    Column.prototype.isRowGroupDisplayed = function (colId) {\n        if (missing(this.colDef) || missing(this.colDef.showRowGroup)) {\n            return false;\n        }\n        var showingAllGroups = this.colDef.showRowGroup === true;\n        var showingThisGroup = this.colDef.showRowGroup === colId;\n        return showingAllGroups || showingThisGroup;\n    };\n    /** Returns `true` if column is a primary column, `false` if secondary. Secondary columns are used for pivoting. */\n    Column.prototype.isPrimary = function () {\n        return this.primary;\n    };\n    /** Returns `true` if column filtering is allowed. */\n    Column.prototype.isFilterAllowed = function () {\n        // filter defined means it's a string, class or true.\n        // if its false, null or undefined then it's false.\n        var filterDefined = !!this.colDef.filter || !!this.colDef.filterFramework;\n        return filterDefined;\n    };\n    Column.prototype.isFieldContainsDots = function () {\n        return this.fieldContainsDots;\n    };\n    Column.prototype.isTooltipEnabled = function () {\n        return this.tooltipEnabled;\n    };\n    Column.prototype.isTooltipFieldContainsDots = function () {\n        return this.tooltipFieldContainsDots;\n    };\n    Column.prototype.validate = function () {\n        var colDefAny = this.colDef;\n        function warnOnce(msg, key, obj) {\n            doOnce(function () {\n                if (obj) {\n                    console.warn(msg, obj);\n                }\n                else {\n                    doOnce(function () { return console.warn(msg); }, key);\n                }\n            }, key);\n        }\n        var usingCSRM = this.gridOptionsService.isRowModelType('clientSide');\n        if (usingCSRM && !ModuleRegistry.isRegistered(ModuleNames.RowGroupingModule)) {\n            var rowGroupingItems = ['enableRowGroup', 'rowGroup', 'rowGroupIndex', 'enablePivot', 'enableValue', 'pivot', 'pivotIndex', 'aggFunc'];\n            var itemsUsed = rowGroupingItems.filter(function (x) { return exists(colDefAny[x]); });\n            if (itemsUsed.length > 0) {\n                ModuleRegistry.assertRegistered(ModuleNames.RowGroupingModule, itemsUsed.map(function (i) { return 'colDef.' + i; }).join(', '));\n            }\n        }\n        if (this.colDef.cellEditor === 'agRichSelect' || this.colDef.cellEditor === 'agRichSelectCellEditor') {\n            ModuleRegistry.assertRegistered(ModuleNames.RichSelectModule, this.colDef.cellEditor);\n        }\n        if (this.gridOptionsService.isTreeData()) {\n            var itemsNotAllowedWithTreeData = ['rowGroup', 'rowGroupIndex', 'pivot', 'pivotIndex'];\n            var itemsUsed = itemsNotAllowedWithTreeData.filter(function (x) { return exists(colDefAny[x]); });\n            if (itemsUsed.length > 0) {\n                warnOnce(\"AG Grid: \" + itemsUsed.join() + \" is not possible when doing tree data, your column definition should not have \" + itemsUsed.join(), 'TreeDataCannotRowGroup');\n            }\n        }\n        if (exists(colDefAny.menuTabs)) {\n            if (Array.isArray(colDefAny.menuTabs)) {\n                var communityMenuTabs_1 = ['filterMenuTab'];\n                var enterpriseMenuTabs_1 = ['columnsMenuTab', 'generalMenuTab'];\n                var itemsUsed = enterpriseMenuTabs_1.filter(function (x) { return colDefAny.menuTabs.includes(x); });\n                if (itemsUsed.length > 0) {\n                    ModuleRegistry.assertRegistered(ModuleNames.MenuModule, \"menuTab(s): \" + itemsUsed.map(function (t) { return \"'\" + t + \"'\"; }).join());\n                }\n                colDefAny.menuTabs.forEach(function (tab) {\n                    if (!enterpriseMenuTabs_1.includes(tab) && !communityMenuTabs_1.includes(tab)) {\n                        warnOnce(\"AG Grid: '\" + tab + \"' is not valid for 'colDef.menuTabs'. Valid values are: \" + __spread$o(communityMenuTabs_1, enterpriseMenuTabs_1).map(function (t) { return \"'\" + t + \"'\"; }).join() + \".\", 'wrongValue_menuTabs_' + tab);\n                    }\n                });\n            }\n            else {\n                warnOnce(\"AG Grid: The typeof 'colDef.menuTabs' should be an array not:\" + typeof colDefAny.menuTabs, 'wrongType_menuTabs');\n            }\n        }\n        if (exists(colDefAny.columnsMenuParams)) {\n            ModuleRegistry.assertRegistered(ModuleNames.MenuModule, 'columnsMenuParams');\n        }\n        if (exists(colDefAny.columnsMenuParams)) {\n            ModuleRegistry.assertRegistered(ModuleNames.ColumnsToolPanelModule, 'columnsMenuParams');\n        }\n        if (exists(this.colDef.width) && typeof this.colDef.width !== 'number') {\n            warnOnce('AG Grid: colDef.width should be a number, not ' + typeof this.colDef.width, 'ColumnCheck');\n        }\n        if (colDefAny.pinnedRowCellRenderer || colDefAny.pinnedRowCellRendererParams || colDefAny.pinnedRowCellRendererFramework) {\n            warnOnce('AG Grid: pinnedRowCellRenderer[Params,Framework] no longer exist. Use cellRendererSelector if you want a different Cell Renderer for pinned rows. Check params.node.rowPinned.', 'colDef.pinnedRowCellRenderer-deprecated');\n        }\n        if (exists(colDefAny.columnGroupShow) && colDefAny.columnGroupShow !== 'closed' && colDefAny.columnGroupShow !== 'open') {\n            warnOnce(\"AG Grid: '\" + colDefAny.columnGroupShow + \"' is not valid for columnGroupShow. Valid values are 'open', 'closed', undefined, null\", 'columnGroupShow_invalid');\n        }\n    };\n    /** Add an event listener to the column. */\n    Column.prototype.addEventListener = function (eventType, listener) {\n        this.eventService.addEventListener(eventType, listener);\n    };\n    /** Remove event listener from the column. */\n    Column.prototype.removeEventListener = function (eventType, listener) {\n        this.eventService.removeEventListener(eventType, listener);\n    };\n    Column.prototype.createColumnFunctionCallbackParams = function (rowNode) {\n        return {\n            node: rowNode,\n            data: rowNode.data,\n            column: this,\n            colDef: this.colDef,\n            context: this.gridOptionsService.context,\n            api: this.gridOptionsService.api,\n            columnApi: this.gridOptionsService.columnApi\n        };\n    };\n    Column.prototype.isSuppressNavigable = function (rowNode) {\n        // if boolean set, then just use it\n        if (typeof this.colDef.suppressNavigable === 'boolean') {\n            return this.colDef.suppressNavigable;\n        }\n        // if function, then call the function to find out\n        if (typeof this.colDef.suppressNavigable === 'function') {\n            var params = this.createColumnFunctionCallbackParams(rowNode);\n            var userFunc = this.colDef.suppressNavigable;\n            return userFunc(params);\n        }\n        return false;\n    };\n    /**\n     * Returns `true` if the cell for this column is editable for the given `rowNode`, otherwise `false`.\n     */\n    Column.prototype.isCellEditable = function (rowNode) {\n        // only allow editing of groups if the user has this option enabled\n        if (rowNode.group && !this.gridOptionsService.is('enableGroupEdit')) {\n            return false;\n        }\n        return this.isColumnFunc(rowNode, this.colDef.editable);\n    };\n    Column.prototype.isSuppressFillHandle = function () {\n        return !!attrToBoolean(this.colDef.suppressFillHandle);\n    };\n    Column.prototype.isAutoHeight = function () {\n        return !!attrToBoolean(this.colDef.autoHeight);\n    };\n    Column.prototype.isAutoHeaderHeight = function () {\n        return !!attrToBoolean(this.colDef.autoHeaderHeight);\n    };\n    Column.prototype.isRowDrag = function (rowNode) {\n        return this.isColumnFunc(rowNode, this.colDef.rowDrag);\n    };\n    Column.prototype.isDndSource = function (rowNode) {\n        return this.isColumnFunc(rowNode, this.colDef.dndSource);\n    };\n    Column.prototype.isCellCheckboxSelection = function (rowNode) {\n        return this.isColumnFunc(rowNode, this.colDef.checkboxSelection);\n    };\n    Column.prototype.isSuppressPaste = function (rowNode) {\n        return this.isColumnFunc(rowNode, this.colDef ? this.colDef.suppressPaste : null);\n    };\n    Column.prototype.isResizable = function () {\n        return !!attrToBoolean(this.colDef.resizable);\n    };\n    Column.prototype.isColumnFunc = function (rowNode, value) {\n        // if boolean set, then just use it\n        if (typeof value === 'boolean') {\n            return value;\n        }\n        // if function, then call the function to find out\n        if (typeof value === 'function') {\n            var params = this.createColumnFunctionCallbackParams(rowNode);\n            var editableFunc = value;\n            return editableFunc(params);\n        }\n        return false;\n    };\n    Column.prototype.setMoving = function (moving, source) {\n        if (source === void 0) { source = \"api\"; }\n        this.moving = moving;\n        this.eventService.dispatchEvent(this.createColumnEvent('movingChanged', source));\n    };\n    Column.prototype.createColumnEvent = function (type, source) {\n        return {\n            type: type,\n            column: this,\n            columns: [this],\n            source: source,\n            api: this.gridOptionsService.api,\n            columnApi: this.gridOptionsService.columnApi,\n            context: this.gridOptionsService.context\n        };\n    };\n    Column.prototype.isMoving = function () {\n        return this.moving;\n    };\n    /** If sorting is active, returns the sort direction e.g. `'asc'` or `'desc'`. */\n    Column.prototype.getSort = function () {\n        return this.sort;\n    };\n    Column.prototype.setSort = function (sort, source) {\n        if (source === void 0) { source = \"api\"; }\n        if (this.sort !== sort) {\n            this.sort = sort;\n            this.eventService.dispatchEvent(this.createColumnEvent('sortChanged', source));\n        }\n    };\n    Column.prototype.setMenuVisible = function (visible, source) {\n        if (source === void 0) { source = \"api\"; }\n        if (this.menuVisible !== visible) {\n            this.menuVisible = visible;\n            this.eventService.dispatchEvent(this.createColumnEvent('menuVisibleChanged', source));\n        }\n    };\n    Column.prototype.isMenuVisible = function () {\n        return this.menuVisible;\n    };\n    Column.prototype.isSortAscending = function () {\n        return this.sort === 'asc';\n    };\n    Column.prototype.isSortDescending = function () {\n        return this.sort === 'desc';\n    };\n    Column.prototype.isSortNone = function () {\n        return missing(this.sort);\n    };\n    Column.prototype.isSorting = function () {\n        return exists(this.sort);\n    };\n    Column.prototype.getSortIndex = function () {\n        return this.sortIndex;\n    };\n    Column.prototype.setSortIndex = function (sortOrder) {\n        this.sortIndex = sortOrder;\n    };\n    Column.prototype.setAggFunc = function (aggFunc) {\n        this.aggFunc = aggFunc;\n    };\n    /** If aggregation is set for the column, returns the aggregation function. */\n    Column.prototype.getAggFunc = function () {\n        return this.aggFunc;\n    };\n    Column.prototype.getLeft = function () {\n        return this.left;\n    };\n    Column.prototype.getOldLeft = function () {\n        return this.oldLeft;\n    };\n    Column.prototype.getRight = function () {\n        return this.left + this.actualWidth;\n    };\n    Column.prototype.setLeft = function (left, source) {\n        if (source === void 0) { source = \"api\"; }\n        this.oldLeft = this.left;\n        if (this.left !== left) {\n            this.left = left;\n            this.eventService.dispatchEvent(this.createColumnEvent('leftChanged', source));\n        }\n    };\n    /** Returns `true` if filter is active on the column. */\n    Column.prototype.isFilterActive = function () {\n        return this.filterActive;\n    };\n    // additionalEventAttributes is used by provided simple floating filter, so it can add 'floatingFilter=true' to the event\n    Column.prototype.setFilterActive = function (active, source, additionalEventAttributes) {\n        if (source === void 0) { source = \"api\"; }\n        if (this.filterActive !== active) {\n            this.filterActive = active;\n            this.eventService.dispatchEvent(this.createColumnEvent('filterActiveChanged', source));\n        }\n        var filterChangedEvent = this.createColumnEvent('filterChanged', source);\n        if (additionalEventAttributes) {\n            mergeDeep(filterChangedEvent, additionalEventAttributes);\n        }\n        this.eventService.dispatchEvent(filterChangedEvent);\n    };\n    /** Returns `true` when this `Column` is hovered, otherwise `false` */\n    Column.prototype.isHovered = function () {\n        return this.columnHoverService.isHovered(this);\n    };\n    Column.prototype.setPinned = function (pinned) {\n        if (pinned === true || pinned === 'left') {\n            this.pinned = 'left';\n        }\n        else if (pinned === 'right') {\n            this.pinned = 'right';\n        }\n        else {\n            this.pinned = null;\n        }\n    };\n    Column.prototype.setFirstRightPinned = function (firstRightPinned, source) {\n        if (source === void 0) { source = \"api\"; }\n        if (this.firstRightPinned !== firstRightPinned) {\n            this.firstRightPinned = firstRightPinned;\n            this.eventService.dispatchEvent(this.createColumnEvent('firstRightPinnedChanged', source));\n        }\n    };\n    Column.prototype.setLastLeftPinned = function (lastLeftPinned, source) {\n        if (source === void 0) { source = \"api\"; }\n        if (this.lastLeftPinned !== lastLeftPinned) {\n            this.lastLeftPinned = lastLeftPinned;\n            this.eventService.dispatchEvent(this.createColumnEvent('lastLeftPinnedChanged', source));\n        }\n    };\n    Column.prototype.isFirstRightPinned = function () {\n        return this.firstRightPinned;\n    };\n    Column.prototype.isLastLeftPinned = function () {\n        return this.lastLeftPinned;\n    };\n    Column.prototype.isPinned = function () {\n        return this.pinned === 'left' || this.pinned === 'right';\n    };\n    Column.prototype.isPinnedLeft = function () {\n        return this.pinned === 'left';\n    };\n    Column.prototype.isPinnedRight = function () {\n        return this.pinned === 'right';\n    };\n    Column.prototype.getPinned = function () {\n        return this.pinned;\n    };\n    Column.prototype.setVisible = function (visible, source) {\n        if (source === void 0) { source = \"api\"; }\n        var newValue = visible === true;\n        if (this.visible !== newValue) {\n            this.visible = newValue;\n            this.eventService.dispatchEvent(this.createColumnEvent('visibleChanged', source));\n        }\n    };\n    Column.prototype.isVisible = function () {\n        return this.visible;\n    };\n    Column.prototype.isSpanHeaderHeight = function () {\n        return !!this.getColDef().spanHeaderHeight;\n    };\n    /** Returns the column definition for this column.\n     * The column definition will be the result of merging the application provided column definition with any provided defaults\n     * (e.g. `defaultColDef` grid option, or column types.\n     *\n     * Equivalent: `getDefinition` */\n    Column.prototype.getColDef = function () {\n        return this.colDef;\n    };\n    Column.prototype.getColumnGroupShow = function () {\n        return this.colDef.columnGroupShow;\n    };\n    /**\n     * Returns the unique ID for the column.\n     *\n     * Equivalent: `getId`, `getUniqueId` */\n    Column.prototype.getColId = function () {\n        return this.colId;\n    };\n    /**\n     * Returns the unique ID for the column.\n     *\n     * Equivalent: `getColId`, `getUniqueId` */\n    Column.prototype.getId = function () {\n        return this.colId;\n    };\n    /**\n     * Returns the unique ID for the column.\n     *\n     * Equivalent: `getColId`, `getId` */\n    Column.prototype.getUniqueId = function () {\n        return this.colId;\n    };\n    Column.prototype.getDefinition = function () {\n        return this.colDef;\n    };\n    /** Returns the current width of the column. If the column is resized, the actual width is the new size. */\n    Column.prototype.getActualWidth = function () {\n        return this.actualWidth;\n    };\n    Column.prototype.getAutoHeaderHeight = function () {\n        return this.autoHeaderHeight;\n    };\n    /** Returns true if the header height has changed */\n    Column.prototype.setAutoHeaderHeight = function (height) {\n        var changed = height !== this.autoHeaderHeight;\n        this.autoHeaderHeight = height;\n        return changed;\n    };\n    Column.prototype.createBaseColDefParams = function (rowNode) {\n        var params = {\n            node: rowNode,\n            data: rowNode.data,\n            colDef: this.colDef,\n            column: this,\n            api: this.gridOptionsService.api,\n            columnApi: this.gridOptionsService.columnApi,\n            context: this.gridOptionsService.context\n        };\n        return params;\n    };\n    Column.prototype.getColSpan = function (rowNode) {\n        if (missing(this.colDef.colSpan)) {\n            return 1;\n        }\n        var params = this.createBaseColDefParams(rowNode);\n        var colSpan = this.colDef.colSpan(params);\n        // colSpan must be number equal to or greater than 1\n        return Math.max(colSpan, 1);\n    };\n    Column.prototype.getRowSpan = function (rowNode) {\n        if (missing(this.colDef.rowSpan)) {\n            return 1;\n        }\n        var params = this.createBaseColDefParams(rowNode);\n        var rowSpan = this.colDef.rowSpan(params);\n        // rowSpan must be number equal to or greater than 1\n        return Math.max(rowSpan, 1);\n    };\n    Column.prototype.setActualWidth = function (actualWidth, source, silent) {\n        if (source === void 0) { source = \"api\"; }\n        if (silent === void 0) { silent = false; }\n        if (this.minWidth != null) {\n            actualWidth = Math.max(actualWidth, this.minWidth);\n        }\n        if (this.maxWidth != null) {\n            actualWidth = Math.min(actualWidth, this.maxWidth);\n        }\n        if (this.actualWidth !== actualWidth) {\n            // disable flex for this column if it was manually resized.\n            this.actualWidth = actualWidth;\n            if (this.flex && source !== 'flex' && source !== 'gridInitializing') {\n                this.flex = null;\n            }\n            if (!silent) {\n                this.fireColumnWidthChangedEvent(source);\n            }\n        }\n    };\n    Column.prototype.fireColumnWidthChangedEvent = function (source) {\n        this.eventService.dispatchEvent(this.createColumnEvent('widthChanged', source));\n    };\n    Column.prototype.isGreaterThanMax = function (width) {\n        if (this.maxWidth != null) {\n            return width > this.maxWidth;\n        }\n        return false;\n    };\n    Column.prototype.getMinWidth = function () {\n        return this.minWidth;\n    };\n    Column.prototype.getMaxWidth = function () {\n        return this.maxWidth;\n    };\n    Column.prototype.getFlex = function () {\n        return this.flex || 0;\n    };\n    // this method should only be used by the columnModel to\n    // change flex when required by the applyColumnState method.\n    Column.prototype.setFlex = function (flex) {\n        if (this.flex !== flex) {\n            this.flex = flex;\n        }\n    };\n    Column.prototype.setMinimum = function (source) {\n        if (source === void 0) { source = \"api\"; }\n        if (exists(this.minWidth)) {\n            this.setActualWidth(this.minWidth, source);\n        }\n    };\n    Column.prototype.setRowGroupActive = function (rowGroup, source) {\n        if (source === void 0) { source = \"api\"; }\n        if (this.rowGroupActive !== rowGroup) {\n            this.rowGroupActive = rowGroup;\n            this.eventService.dispatchEvent(this.createColumnEvent('columnRowGroupChanged', source));\n        }\n    };\n    /** Returns `true` if row group is currently active for this column. */\n    Column.prototype.isRowGroupActive = function () {\n        return this.rowGroupActive;\n    };\n    Column.prototype.setPivotActive = function (pivot, source) {\n        if (source === void 0) { source = \"api\"; }\n        if (this.pivotActive !== pivot) {\n            this.pivotActive = pivot;\n            this.eventService.dispatchEvent(this.createColumnEvent('columnPivotChanged', source));\n        }\n    };\n    /** Returns `true` if pivot is currently active for this column. */\n    Column.prototype.isPivotActive = function () {\n        return this.pivotActive;\n    };\n    Column.prototype.isAnyFunctionActive = function () {\n        return this.isPivotActive() || this.isRowGroupActive() || this.isValueActive();\n    };\n    Column.prototype.isAnyFunctionAllowed = function () {\n        return this.isAllowPivot() || this.isAllowRowGroup() || this.isAllowValue();\n    };\n    Column.prototype.setValueActive = function (value, source) {\n        if (source === void 0) { source = \"api\"; }\n        if (this.aggregationActive !== value) {\n            this.aggregationActive = value;\n            this.eventService.dispatchEvent(this.createColumnEvent('columnValueChanged', source));\n        }\n    };\n    /** Returns `true` if value (aggregation) is currently active for this column. */\n    Column.prototype.isValueActive = function () {\n        return this.aggregationActive;\n    };\n    Column.prototype.isAllowPivot = function () {\n        return this.colDef.enablePivot === true;\n    };\n    Column.prototype.isAllowValue = function () {\n        return this.colDef.enableValue === true;\n    };\n    Column.prototype.isAllowRowGroup = function () {\n        return this.colDef.enableRowGroup === true;\n    };\n    Column.prototype.getMenuTabs = function (defaultValues) {\n        var menuTabs = this.getColDef().menuTabs;\n        if (menuTabs == null) {\n            menuTabs = defaultValues;\n        }\n        return menuTabs;\n    };\n    // + renderedHeaderCell - for making header cell transparent when moving\n    Column.EVENT_MOVING_CHANGED = 'movingChanged';\n    // + renderedCell - changing left position\n    Column.EVENT_LEFT_CHANGED = 'leftChanged';\n    // + renderedCell - changing width\n    Column.EVENT_WIDTH_CHANGED = 'widthChanged';\n    // + renderedCell - for changing pinned classes\n    Column.EVENT_LAST_LEFT_PINNED_CHANGED = 'lastLeftPinnedChanged';\n    Column.EVENT_FIRST_RIGHT_PINNED_CHANGED = 'firstRightPinnedChanged';\n    // + renderedColumn - for changing visibility icon\n    Column.EVENT_VISIBLE_CHANGED = 'visibleChanged';\n    // + every time the filter changes, used in the floating filters\n    Column.EVENT_FILTER_CHANGED = 'filterChanged';\n    // + renderedHeaderCell - marks the header with filter icon\n    Column.EVENT_FILTER_ACTIVE_CHANGED = 'filterActiveChanged';\n    // + renderedHeaderCell - marks the header with sort icon\n    Column.EVENT_SORT_CHANGED = 'sortChanged';\n    // + renderedHeaderCell - marks the header with sort icon\n    Column.EVENT_COL_DEF_CHANGED = 'colDefChanged';\n    Column.EVENT_MENU_VISIBLE_CHANGED = 'menuVisibleChanged';\n    // + toolpanel, for gui updates\n    Column.EVENT_ROW_GROUP_CHANGED = 'columnRowGroupChanged';\n    // + toolpanel, for gui updates\n    Column.EVENT_PIVOT_CHANGED = 'columnPivotChanged';\n    // + toolpanel, for gui updates\n    Column.EVENT_VALUE_CHANGED = 'columnValueChanged';\n    __decorate$2y([\n        Autowired('gridOptionsService')\n    ], Column.prototype, \"gridOptionsService\", void 0);\n    __decorate$2y([\n        Autowired('columnUtils')\n    ], Column.prototype, \"columnUtils\", void 0);\n    __decorate$2y([\n        Autowired('columnHoverService')\n    ], Column.prototype, \"columnHoverService\", void 0);\n    __decorate$2y([\n        PostConstruct\n    ], Column.prototype, \"initialise\", null);\n    return Column;\n}());\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __decorate$2x = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar ProvidedColumnGroup = /** @class */ (function () {\n    function ProvidedColumnGroup(colGroupDef, groupId, padding, level) {\n        this.localEventService = new EventService();\n        this.expandable = false;\n        // used by React (and possibly other frameworks) as key for rendering. also used to\n        // identify old vs new columns for destroying cols when no longer used.\n        this.instanceId = getNextColInstanceId();\n        this.expandableListenerRemoveCallback = null;\n        this.colGroupDef = colGroupDef;\n        this.groupId = groupId;\n        this.expanded = !!colGroupDef && !!colGroupDef.openByDefault;\n        this.padding = padding;\n        this.level = level;\n    }\n    ProvidedColumnGroup.prototype.destroy = function () {\n        if (this.expandableListenerRemoveCallback) {\n            this.reset(null, undefined);\n        }\n    };\n    ProvidedColumnGroup.prototype.reset = function (colGroupDef, level) {\n        this.colGroupDef = colGroupDef;\n        this.level = level;\n        this.originalParent = null;\n        if (this.expandableListenerRemoveCallback) {\n            this.expandableListenerRemoveCallback();\n        }\n        // we use ! below, as we want to set the object back to the\n        // way it was when it was first created\n        this.children = undefined;\n        this.expandable = undefined;\n    };\n    ProvidedColumnGroup.prototype.getInstanceId = function () {\n        return this.instanceId;\n    };\n    ProvidedColumnGroup.prototype.setOriginalParent = function (originalParent) {\n        this.originalParent = originalParent;\n    };\n    ProvidedColumnGroup.prototype.getOriginalParent = function () {\n        return this.originalParent;\n    };\n    ProvidedColumnGroup.prototype.getLevel = function () {\n        return this.level;\n    };\n    ProvidedColumnGroup.prototype.isVisible = function () {\n        // return true if at least one child is visible\n        if (this.children) {\n            return this.children.some(function (child) { return child.isVisible(); });\n        }\n        return false;\n    };\n    ProvidedColumnGroup.prototype.isPadding = function () {\n        return this.padding;\n    };\n    ProvidedColumnGroup.prototype.setExpanded = function (expanded) {\n        this.expanded = expanded === undefined ? false : expanded;\n        var event = {\n            type: ProvidedColumnGroup.EVENT_EXPANDED_CHANGED\n        };\n        this.localEventService.dispatchEvent(event);\n    };\n    ProvidedColumnGroup.prototype.isExpandable = function () {\n        return this.expandable;\n    };\n    ProvidedColumnGroup.prototype.isExpanded = function () {\n        return this.expanded;\n    };\n    ProvidedColumnGroup.prototype.getGroupId = function () {\n        return this.groupId;\n    };\n    ProvidedColumnGroup.prototype.getId = function () {\n        return this.getGroupId();\n    };\n    ProvidedColumnGroup.prototype.setChildren = function (children) {\n        this.children = children;\n    };\n    ProvidedColumnGroup.prototype.getChildren = function () {\n        return this.children;\n    };\n    ProvidedColumnGroup.prototype.getColGroupDef = function () {\n        return this.colGroupDef;\n    };\n    ProvidedColumnGroup.prototype.getLeafColumns = function () {\n        var result = [];\n        this.addLeafColumns(result);\n        return result;\n    };\n    ProvidedColumnGroup.prototype.addLeafColumns = function (leafColumns) {\n        if (!this.children) {\n            return;\n        }\n        this.children.forEach(function (child) {\n            if (child instanceof Column) {\n                leafColumns.push(child);\n            }\n            else if (child instanceof ProvidedColumnGroup) {\n                child.addLeafColumns(leafColumns);\n            }\n        });\n    };\n    ProvidedColumnGroup.prototype.getColumnGroupShow = function () {\n        var colGroupDef = this.colGroupDef;\n        if (!colGroupDef) {\n            return;\n        }\n        return colGroupDef.columnGroupShow;\n    };\n    // need to check that this group has at least one col showing when both expanded and contracted.\n    // if not, then we don't allow expanding and contracting on this group\n    ProvidedColumnGroup.prototype.setupExpandable = function () {\n        var _this = this;\n        this.setExpandable();\n        if (this.expandableListenerRemoveCallback) {\n            this.expandableListenerRemoveCallback();\n        }\n        var listener = this.onColumnVisibilityChanged.bind(this);\n        this.getLeafColumns().forEach(function (col) { return col.addEventListener('visibleChanged', listener); });\n        this.expandableListenerRemoveCallback = function () {\n            _this.getLeafColumns().forEach(function (col) { return col.removeEventListener('visibleChanged', listener); });\n            _this.expandableListenerRemoveCallback = null;\n        };\n    };\n    ProvidedColumnGroup.prototype.setExpandable = function () {\n        if (this.isPadding()) {\n            return;\n        }\n        // want to make sure the group doesn't disappear when it's open\n        var atLeastOneShowingWhenOpen = false;\n        // want to make sure the group doesn't disappear when it's closed\n        var atLeastOneShowingWhenClosed = false;\n        // want to make sure the group has something to show / hide\n        var atLeastOneChangeable = false;\n        var children = this.findChildrenRemovingPadding();\n        for (var i = 0, j = children.length; i < j; i++) {\n            var abstractColumn = children[i];\n            if (!abstractColumn.isVisible()) {\n                continue;\n            }\n            // if the abstractColumn is a grid generated group, there will be no colDef\n            var headerGroupShow = abstractColumn.getColumnGroupShow();\n            if (headerGroupShow === 'open') {\n                atLeastOneShowingWhenOpen = true;\n                atLeastOneChangeable = true;\n            }\n            else if (headerGroupShow === 'closed') {\n                atLeastOneShowingWhenClosed = true;\n                atLeastOneChangeable = true;\n            }\n            else {\n                atLeastOneShowingWhenOpen = true;\n                atLeastOneShowingWhenClosed = true;\n            }\n        }\n        var expandable = atLeastOneShowingWhenOpen && atLeastOneShowingWhenClosed && atLeastOneChangeable;\n        if (this.expandable !== expandable) {\n            this.expandable = expandable;\n            var event_1 = {\n                type: ProvidedColumnGroup.EVENT_EXPANDABLE_CHANGED\n            };\n            this.localEventService.dispatchEvent(event_1);\n        }\n    };\n    ProvidedColumnGroup.prototype.findChildrenRemovingPadding = function () {\n        var res = [];\n        var process = function (items) {\n            items.forEach(function (item) {\n                // if padding, we add this children instead of the padding\n                var skipBecausePadding = item instanceof ProvidedColumnGroup && item.isPadding();\n                if (skipBecausePadding) {\n                    process(item.children);\n                }\n                else {\n                    res.push(item);\n                }\n            });\n        };\n        process(this.children);\n        return res;\n    };\n    ProvidedColumnGroup.prototype.onColumnVisibilityChanged = function () {\n        this.setExpandable();\n    };\n    ProvidedColumnGroup.prototype.addEventListener = function (eventType, listener) {\n        this.localEventService.addEventListener(eventType, listener);\n    };\n    ProvidedColumnGroup.prototype.removeEventListener = function (eventType, listener) {\n        this.localEventService.removeEventListener(eventType, listener);\n    };\n    ProvidedColumnGroup.EVENT_EXPANDED_CHANGED = 'expandedChanged';\n    ProvidedColumnGroup.EVENT_EXPANDABLE_CHANGED = 'expandableChanged';\n    __decorate$2x([\n        PreDestroy\n    ], ProvidedColumnGroup.prototype, \"destroy\", null);\n    return ProvidedColumnGroup;\n}());\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar DefaultColumnTypes = {\n    numericColumn: {\n        headerClass: 'ag-right-aligned-header',\n        cellClass: 'ag-right-aligned-cell'\n    },\n    rightAligned: {\n        headerClass: 'ag-right-aligned-header',\n        cellClass: 'ag-right-aligned-cell'\n    }\n};\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nfunction firstExistingValue() {\n    var values = [];\n    for (var _i = 0; _i < arguments.length; _i++) {\n        values[_i] = arguments[_i];\n    }\n    for (var i = 0; i < values.length; i++) {\n        var value = values[i];\n        if (exists(value)) {\n            return value;\n        }\n    }\n    return null;\n}\nfunction existsAndNotEmpty(value) {\n    return value != null && value.length > 0;\n}\nfunction last(arr) {\n    if (!arr || !arr.length) {\n        return;\n    }\n    return arr[arr.length - 1];\n}\nfunction areEqual(a, b, comparator) {\n    if (a == null && b == null) {\n        return true;\n    }\n    return a != null &&\n        b != null &&\n        a.length === b.length &&\n        a.every(function (value, index) { return comparator ? comparator(value, b[index]) : b[index] === value; });\n}\n/** @deprecated */\nfunction shallowCompare(arr1, arr2) {\n    return areEqual(arr1, arr2);\n}\nfunction sortNumerically(array) {\n    return array.sort(function (a, b) { return a - b; });\n}\nfunction removeRepeatsFromArray(array, object) {\n    if (!array) {\n        return;\n    }\n    for (var index = array.length - 2; index >= 0; index--) {\n        var thisOneMatches = array[index] === object;\n        var nextOneMatches = array[index + 1] === object;\n        if (thisOneMatches && nextOneMatches) {\n            array.splice(index + 1, 1);\n        }\n    }\n}\nfunction removeFromArray(array, object) {\n    var index = array.indexOf(object);\n    if (index >= 0) {\n        array.splice(index, 1);\n    }\n}\nfunction removeAllFromArray(array, toRemove) {\n    toRemove.forEach(function (item) { return removeFromArray(array, item); });\n}\nfunction insertIntoArray(array, object, toIndex) {\n    array.splice(toIndex, 0, object);\n}\nfunction insertArrayIntoArray(dest, src, toIndex) {\n    if (dest == null || src == null) {\n        return;\n    }\n    // put items in backwards, otherwise inserted items end up in reverse order\n    for (var i = src.length - 1; i >= 0; i--) {\n        var item = src[i];\n        insertIntoArray(dest, item, toIndex);\n    }\n}\nfunction moveInArray(array, objectsToMove, toIndex) {\n    // first take out items from the array\n    removeAllFromArray(array, objectsToMove);\n    // now add the objects, in same order as provided to us, that means we start at the end\n    // as the objects will be pushed to the right as they are inserted\n    objectsToMove.slice().reverse().forEach(function (obj) { return insertIntoArray(array, obj, toIndex); });\n}\nfunction includes(array, value) {\n    return array.indexOf(value) > -1;\n}\nfunction flatten(arrayOfArrays) {\n    return [].concat.apply([], arrayOfArrays);\n}\nfunction pushAll(target, source) {\n    if (source == null || target == null) {\n        return;\n    }\n    source.forEach(function (value) { return target.push(value); });\n}\nfunction toStrings(array) {\n    return array.map(toStringOrNull);\n}\nfunction forEachReverse(list, action) {\n    if (list == null) {\n        return;\n    }\n    for (var i = list.length - 1; i >= 0; i--) {\n        action(list[i], i);\n    }\n}\n\nvar ArrayUtils = /*#__PURE__*/Object.freeze({\n    __proto__: null,\n    firstExistingValue: firstExistingValue,\n    existsAndNotEmpty: existsAndNotEmpty,\n    last: last,\n    areEqual: areEqual,\n    shallowCompare: shallowCompare,\n    sortNumerically: sortNumerically,\n    removeRepeatsFromArray: removeRepeatsFromArray,\n    removeFromArray: removeFromArray,\n    removeAllFromArray: removeAllFromArray,\n    insertIntoArray: insertIntoArray,\n    insertArrayIntoArray: insertArrayIntoArray,\n    moveInArray: moveInArray,\n    includes: includes,\n    flatten: flatten,\n    pushAll: pushAll,\n    toStrings: toStrings,\n    forEachReverse: forEachReverse\n});\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar AG_GRID_STOP_PROPAGATION = '__ag_Grid_Stop_Propagation';\nvar PASSIVE_EVENTS$1 = ['touchstart', 'touchend', 'touchmove', 'touchcancel', 'scroll'];\nvar supports = {};\n/**\n * a user once raised an issue - they said that when you opened a popup (eg context menu)\n * and then clicked on a selection checkbox, the popup wasn't closed. this is because the\n * popup listens for clicks on the body, however ag-grid WAS stopping propagation on the\n * checkbox clicks (so the rows didn't pick them up as row selection selection clicks).\n * to get around this, we have a pattern to stop propagation for the purposes of AG Grid,\n * but we still let the event pass back to the body.\n * @param {Event} event\n */\nfunction stopPropagationForAgGrid(event) {\n    event[AG_GRID_STOP_PROPAGATION] = true;\n}\nfunction isStopPropagationForAgGrid(event) {\n    return event[AG_GRID_STOP_PROPAGATION] === true;\n}\nvar isEventSupported = (function () {\n    var tags = {\n        select: 'input',\n        change: 'input',\n        submit: 'form',\n        reset: 'form',\n        error: 'img',\n        load: 'img',\n        abort: 'img'\n    };\n    var eventChecker = function (eventName) {\n        if (typeof supports[eventName] === 'boolean') {\n            return supports[eventName];\n        }\n        var el = document.createElement(tags[eventName] || 'div');\n        eventName = 'on' + eventName;\n        return supports[eventName] = (eventName in el);\n    };\n    return eventChecker;\n})();\nfunction getCtrlForEventTarget(gridOptionsService, eventTarget, type) {\n    var sourceElement = eventTarget;\n    while (sourceElement) {\n        var renderedComp = gridOptionsService.getDomData(sourceElement, type);\n        if (renderedComp) {\n            return renderedComp;\n        }\n        sourceElement = sourceElement.parentElement;\n    }\n    return null;\n}\nfunction isElementInEventPath(element, event) {\n    if (!event || !element) {\n        return false;\n    }\n    return getEventPath(event).indexOf(element) >= 0;\n}\nfunction createEventPath(event) {\n    var res = [];\n    var pointer = event.target;\n    while (pointer) {\n        res.push(pointer);\n        pointer = pointer.parentElement;\n    }\n    return res;\n}\n/**\n * Gets the path for a browser Event or from the target on an AG Grid Event\n * https://developer.mozilla.org/en-US/docs/Web/API/Event\n * @param {Event| { target: EventTarget }} event\n * @returns {EventTarget[]}\n */\nfunction getEventPath(event) {\n    // This can be called with either a browser event or an AG Grid Event that has a target property.\n    var eventNoType = event;\n    if (eventNoType.path) {\n        return eventNoType.path;\n    }\n    if (eventNoType.composedPath) {\n        return eventNoType.composedPath();\n    }\n    // If this is an AG Grid event build the path ourselves\n    return createEventPath(eventNoType);\n}\nfunction addSafePassiveEventListener(frameworkOverrides, eElement, event, listener) {\n    var isPassive = includes(PASSIVE_EVENTS$1, event);\n    var options = isPassive ? { passive: true } : undefined;\n    // this check is here for certain scenarios where I believe the user must be destroying\n    // the grid somehow but continuing for it to be used\n    if (frameworkOverrides && frameworkOverrides.addEventListener) {\n        frameworkOverrides.addEventListener(eElement, event, listener, options);\n    }\n}\n\nvar EventUtils = /*#__PURE__*/Object.freeze({\n    __proto__: null,\n    stopPropagationForAgGrid: stopPropagationForAgGrid,\n    isStopPropagationForAgGrid: isStopPropagationForAgGrid,\n    isEventSupported: isEventSupported,\n    getCtrlForEventTarget: getCtrlForEventTarget,\n    isElementInEventPath: isElementInEventPath,\n    createEventPath: createEventPath,\n    getEventPath: getEventPath,\n    addSafePassiveEventListener: addSafePassiveEventListener\n});\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __decorate$2w = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar BeanStub = /** @class */ (function () {\n    function BeanStub() {\n        var _this = this;\n        this.destroyFunctions = [];\n        this.destroyed = false;\n        // for vue 3 - prevents Vue from trying to make this (and obviously any sub classes) from being reactive\n        // prevents vue from creating proxies for created objects and prevents identity related issues\n        this.__v_skip = true;\n        this.isAlive = function () { return !_this.destroyed; };\n    }\n    // this was a test constructor niall built, when active, it prints after 5 seconds all beans/components that are\n    // not destroyed. to use, create a new grid, then api.destroy() before 5 seconds. then anything that gets printed\n    // points to a bean or component that was not properly disposed of.\n    // constructor() {\n    //     setTimeout(()=> {\n    //         if (this.isAlive()) {\n    //             let prototype: any = Object.getPrototypeOf(this);\n    //             const constructor: any = prototype.constructor;\n    //             const constructorString = constructor.toString();\n    //             const beanName = constructorString.substring(9, constructorString.indexOf(\"(\"));\n    //             console.log('is alive ' + beanName);\n    //         }\n    //     }, 5000);\n    // }\n    // CellComp and GridComp and override this because they get the FrameworkOverrides from the Beans bean\n    BeanStub.prototype.getFrameworkOverrides = function () {\n        return this.frameworkOverrides;\n    };\n    BeanStub.prototype.getContext = function () {\n        return this.context;\n    };\n    BeanStub.prototype.destroy = function () {\n        // let prototype: any = Object.getPrototypeOf(this);\n        // const constructor: any = prototype.constructor;\n        // const constructorString = constructor.toString();\n        // const beanName = constructorString.substring(9, constructorString.indexOf(\"(\"));\n        this.destroyFunctions.forEach(function (func) { return func(); });\n        this.destroyFunctions.length = 0;\n        this.destroyed = true;\n        this.dispatchEvent({ type: BeanStub.EVENT_DESTROYED });\n    };\n    BeanStub.prototype.addEventListener = function (eventType, listener) {\n        if (!this.localEventService) {\n            this.localEventService = new EventService();\n        }\n        this.localEventService.addEventListener(eventType, listener);\n    };\n    BeanStub.prototype.removeEventListener = function (eventType, listener) {\n        if (this.localEventService) {\n            this.localEventService.removeEventListener(eventType, listener);\n        }\n    };\n    BeanStub.prototype.dispatchEventAsync = function (event) {\n        var _this = this;\n        window.setTimeout(function () { return _this.dispatchEvent(event); }, 0);\n    };\n    BeanStub.prototype.dispatchEvent = function (event) {\n        if (this.localEventService) {\n            this.localEventService.dispatchEvent(event);\n        }\n    };\n    BeanStub.prototype.addManagedListener = function (object, event, listener) {\n        var _this = this;\n        if (this.destroyed) {\n            return;\n        }\n        if (object instanceof HTMLElement) {\n            addSafePassiveEventListener(this.getFrameworkOverrides(), object, event, listener);\n        }\n        else {\n            object.addEventListener(event, listener);\n        }\n        var destroyFunc = function () {\n            object.removeEventListener(event, listener);\n            _this.destroyFunctions = _this.destroyFunctions.filter(function (fn) { return fn !== destroyFunc; });\n            return null;\n        };\n        this.destroyFunctions.push(destroyFunc);\n        return destroyFunc;\n    };\n    BeanStub.prototype.addManagedPropertyListener = function (event, listener) {\n        var _this = this;\n        if (this.destroyed) {\n            return;\n        }\n        this.gridOptionsService.addEventListener(event, listener);\n        var destroyFunc = function () {\n            _this.gridOptionsService.removeEventListener(event, listener);\n            _this.destroyFunctions = _this.destroyFunctions.filter(function (fn) { return fn !== destroyFunc; });\n            return null;\n        };\n        this.destroyFunctions.push(destroyFunc);\n        return destroyFunc;\n    };\n    BeanStub.prototype.addDestroyFunc = function (func) {\n        // if we are already destroyed, we execute the func now\n        if (this.isAlive()) {\n            this.destroyFunctions.push(func);\n        }\n        else {\n            func();\n        }\n    };\n    BeanStub.prototype.createManagedBean = function (bean, context) {\n        var res = this.createBean(bean, context);\n        this.addDestroyFunc(this.destroyBean.bind(this, bean, context));\n        return res;\n    };\n    BeanStub.prototype.createBean = function (bean, context, afterPreCreateCallback) {\n        return (context || this.getContext()).createBean(bean, afterPreCreateCallback);\n    };\n    BeanStub.prototype.destroyBean = function (bean, context) {\n        return (context || this.getContext()).destroyBean(bean);\n    };\n    BeanStub.prototype.destroyBeans = function (beans, context) {\n        var _this = this;\n        if (beans) {\n            beans.forEach(function (bean) { return _this.destroyBean(bean, context); });\n        }\n        return [];\n    };\n    BeanStub.EVENT_DESTROYED = 'destroyed';\n    __decorate$2w([\n        Autowired('frameworkOverrides')\n    ], BeanStub.prototype, \"frameworkOverrides\", void 0);\n    __decorate$2w([\n        Autowired('context')\n    ], BeanStub.prototype, \"context\", void 0);\n    __decorate$2w([\n        Autowired('eventService')\n    ], BeanStub.prototype, \"eventService\", void 0);\n    __decorate$2w([\n        Autowired('gridOptionsService')\n    ], BeanStub.prototype, \"gridOptionsService\", void 0);\n    __decorate$2w([\n        Autowired('localeService')\n    ], BeanStub.prototype, \"localeService\", void 0);\n    __decorate$2w([\n        Autowired('environment')\n    ], BeanStub.prototype, \"environment\", void 0);\n    __decorate$2w([\n        PreDestroy\n    ], BeanStub.prototype, \"destroy\", null);\n    return BeanStub;\n}());\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$2S = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$2v = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __param$9 = (undefined && undefined.__param) || function (paramIndex, decorator) {\n    return function (target, key) { decorator(target, key, paramIndex); }\n};\n// takes ColDefs and ColGroupDefs and turns them into Columns and OriginalGroups\nvar ColumnFactory = /** @class */ (function (_super) {\n    __extends$2S(ColumnFactory, _super);\n    function ColumnFactory() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    ColumnFactory.prototype.setBeans = function (loggerFactory) {\n        this.logger = loggerFactory.create('ColumnFactory');\n    };\n    ColumnFactory.prototype.createColumnTree = function (defs, primaryColumns, existingTree) {\n        // column key creator dishes out unique column id's in a deterministic way,\n        // so if we have two grids (that could be master/slave) with same column definitions,\n        // then this ensures the two grids use identical id's.\n        var columnKeyCreator = new ColumnKeyCreator();\n        var _a = this.extractExistingTreeData(existingTree), existingCols = _a.existingCols, existingGroups = _a.existingGroups, existingColKeys = _a.existingColKeys;\n        columnKeyCreator.addExistingKeys(existingColKeys);\n        // create am unbalanced tree that maps the provided definitions\n        var unbalancedTree = this.recursivelyCreateColumns(defs, 0, primaryColumns, existingCols, columnKeyCreator, existingGroups);\n        var treeDept = this.findMaxDept(unbalancedTree, 0);\n        this.logger.log('Number of levels for grouped columns is ' + treeDept);\n        var columnTree = this.balanceColumnTree(unbalancedTree, 0, treeDept, columnKeyCreator);\n        var deptFirstCallback = function (child, parent) {\n            if (child instanceof ProvidedColumnGroup) {\n                child.setupExpandable();\n            }\n            // we set the original parents at the end, rather than when we go along, as balancing the tree\n            // adds extra levels into the tree. so we can only set parents when balancing is done.\n            child.setOriginalParent(parent);\n        };\n        this.columnUtils.depthFirstOriginalTreeSearch(null, columnTree, deptFirstCallback);\n        return {\n            columnTree: columnTree,\n            treeDept: treeDept\n        };\n    };\n    ColumnFactory.prototype.extractExistingTreeData = function (existingTree) {\n        var existingCols = [];\n        var existingGroups = [];\n        var existingColKeys = [];\n        if (existingTree) {\n            this.columnUtils.depthFirstOriginalTreeSearch(null, existingTree, function (item) {\n                if (item instanceof ProvidedColumnGroup) {\n                    var group = item;\n                    existingGroups.push(group);\n                }\n                else {\n                    var col = item;\n                    existingColKeys.push(col.getId());\n                    existingCols.push(col);\n                }\n            });\n        }\n        return { existingCols: existingCols, existingGroups: existingGroups, existingColKeys: existingColKeys };\n    };\n    ColumnFactory.prototype.createForAutoGroups = function (autoGroupCols, gridBalancedTree) {\n        var _this = this;\n        return autoGroupCols.map(function (col) { return _this.createAutoGroupTreeItem(gridBalancedTree, col); });\n    };\n    ColumnFactory.prototype.createAutoGroupTreeItem = function (balancedColumnTree, column) {\n        var dept = this.findDepth(balancedColumnTree);\n        // at the end, this will be the top of the tree item.\n        var nextChild = column;\n        for (var i = dept - 1; i >= 0; i--) {\n            var autoGroup = new ProvidedColumnGroup(null, \"FAKE_PATH_\" + column.getId() + \"}_\" + i, true, i);\n            this.createBean(autoGroup);\n            autoGroup.setChildren([nextChild]);\n            nextChild.setOriginalParent(autoGroup);\n            nextChild = autoGroup;\n        }\n        // at this point, the nextChild is the top most item in the tree\n        return nextChild;\n    };\n    ColumnFactory.prototype.findDepth = function (balancedColumnTree) {\n        var dept = 0;\n        var pointer = balancedColumnTree;\n        while (pointer && pointer[0] && pointer[0] instanceof ProvidedColumnGroup) {\n            dept++;\n            pointer = pointer[0].getChildren();\n        }\n        return dept;\n    };\n    ColumnFactory.prototype.balanceColumnTree = function (unbalancedTree, currentDept, columnDept, columnKeyCreator) {\n        var result = [];\n        // go through each child, for groups, recurse a level deeper,\n        // for columns we need to pad\n        for (var i = 0; i < unbalancedTree.length; i++) {\n            var child = unbalancedTree[i];\n            if (child instanceof ProvidedColumnGroup) {\n                // child is a group, all we do is go to the next level of recursion\n                var originalGroup = child;\n                var newChildren = this.balanceColumnTree(originalGroup.getChildren(), currentDept + 1, columnDept, columnKeyCreator);\n                originalGroup.setChildren(newChildren);\n                result.push(originalGroup);\n            }\n            else {\n                // child is a column - so here we add in the padded column groups if needed\n                var firstPaddedGroup = void 0;\n                var currentPaddedGroup = void 0;\n                // this for loop will NOT run any loops if no padded column groups are needed\n                for (var j = columnDept - 1; j >= currentDept; j--) {\n                    var newColId = columnKeyCreator.getUniqueKey(null, null);\n                    var colGroupDefMerged = this.createMergedColGroupDef(null);\n                    var paddedGroup = new ProvidedColumnGroup(colGroupDefMerged, newColId, true, currentDept);\n                    this.createBean(paddedGroup);\n                    if (currentPaddedGroup) {\n                        currentPaddedGroup.setChildren([paddedGroup]);\n                    }\n                    currentPaddedGroup = paddedGroup;\n                    if (!firstPaddedGroup) {\n                        firstPaddedGroup = currentPaddedGroup;\n                    }\n                }\n                // likewise this if statement will not run if no padded groups\n                if (firstPaddedGroup && currentPaddedGroup) {\n                    result.push(firstPaddedGroup);\n                    var hasGroups = unbalancedTree.some(function (leaf) { return leaf instanceof ProvidedColumnGroup; });\n                    if (hasGroups) {\n                        currentPaddedGroup.setChildren([child]);\n                        continue;\n                    }\n                    else {\n                        currentPaddedGroup.setChildren(unbalancedTree);\n                        break;\n                    }\n                }\n                result.push(child);\n            }\n        }\n        return result;\n    };\n    ColumnFactory.prototype.findMaxDept = function (treeChildren, dept) {\n        var maxDeptThisLevel = dept;\n        for (var i = 0; i < treeChildren.length; i++) {\n            var abstractColumn = treeChildren[i];\n            if (abstractColumn instanceof ProvidedColumnGroup) {\n                var originalGroup = abstractColumn;\n                var newDept = this.findMaxDept(originalGroup.getChildren(), dept + 1);\n                if (maxDeptThisLevel < newDept) {\n                    maxDeptThisLevel = newDept;\n                }\n            }\n        }\n        return maxDeptThisLevel;\n    };\n    ColumnFactory.prototype.recursivelyCreateColumns = function (defs, level, primaryColumns, existingColsCopy, columnKeyCreator, existingGroups) {\n        var _this = this;\n        return (defs || []).map(function (def) {\n            if (_this.isColumnGroup(def)) {\n                return _this.createColumnGroup(primaryColumns, def, level, existingColsCopy, columnKeyCreator, existingGroups);\n            }\n            else {\n                return _this.createColumn(primaryColumns, def, existingColsCopy, columnKeyCreator);\n            }\n        });\n    };\n    ColumnFactory.prototype.createColumnGroup = function (primaryColumns, colGroupDef, level, existingColumns, columnKeyCreator, existingGroups) {\n        var colGroupDefMerged = this.createMergedColGroupDef(colGroupDef);\n        var groupId = columnKeyCreator.getUniqueKey(colGroupDefMerged.groupId || null, null);\n        var providedGroup = new ProvidedColumnGroup(colGroupDefMerged, groupId, false, level);\n        this.createBean(providedGroup);\n        var existingGroup = this.findExistingGroup(colGroupDef, existingGroups);\n        // make sure we remove, so if user provided duplicate id, then we don't have more than\n        // one column instance for colDef with common id\n        if (existingGroup) {\n            removeFromArray(existingGroups, existingGroup);\n        }\n        if (existingGroup && existingGroup.isExpanded()) {\n            providedGroup.setExpanded(true);\n        }\n        var children = this.recursivelyCreateColumns(colGroupDefMerged.children, level + 1, primaryColumns, existingColumns, columnKeyCreator, existingGroups);\n        providedGroup.setChildren(children);\n        return providedGroup;\n    };\n    ColumnFactory.prototype.createMergedColGroupDef = function (colGroupDef) {\n        var colGroupDefMerged = {};\n        Object.assign(colGroupDefMerged, this.gridOptionsService.get('defaultColGroupDef'));\n        Object.assign(colGroupDefMerged, colGroupDef);\n        return colGroupDefMerged;\n    };\n    ColumnFactory.prototype.createColumn = function (primaryColumns, colDef, existingColsCopy, columnKeyCreator) {\n        var colDefMerged = this.mergeColDefs(colDef);\n        // see if column already exists\n        var column = this.findExistingColumn(colDef, existingColsCopy);\n        // make sure we remove, so if user provided duplicate id, then we don't have more than\n        // one column instance for colDef with common id\n        if (existingColsCopy && column) {\n            removeFromArray(existingColsCopy, column);\n        }\n        if (!column) {\n            // no existing column, need to create one\n            var colId = columnKeyCreator.getUniqueKey(colDefMerged.colId, colDefMerged.field);\n            column = new Column(colDefMerged, colDef, colId, primaryColumns);\n            this.context.createBean(column);\n        }\n        else {\n            column.setColDef(colDefMerged, colDef);\n            this.applyColumnState(column, colDefMerged);\n        }\n        return column;\n    };\n    ColumnFactory.prototype.applyColumnState = function (column, colDef) {\n        // flex\n        var flex = attrToNumber(colDef.flex);\n        if (flex !== undefined) {\n            column.setFlex(flex);\n        }\n        // width - we only set width if column is not flexing\n        var noFlexThisCol = column.getFlex() <= 0;\n        if (noFlexThisCol) {\n            // both null and undefined means we skip, as it's not possible to 'clear' width (a column must have a width)\n            var width = attrToNumber(colDef.width);\n            if (width != null) {\n                column.setActualWidth(width);\n            }\n            else {\n                // otherwise set the width again, in case min or max width has changed,\n                // and width needs to be adjusted.\n                var widthBeforeUpdate = column.getActualWidth();\n                column.setActualWidth(widthBeforeUpdate);\n            }\n        }\n        // sort - anything but undefined will set sort, thus null or empty string will clear the sort\n        if (colDef.sort !== undefined) {\n            if (colDef.sort == 'asc' || colDef.sort == 'desc') {\n                column.setSort(colDef.sort);\n            }\n            else {\n                column.setSort(undefined);\n            }\n        }\n        // sorted at - anything but undefined, thus null will clear the sortIndex\n        var sortIndex = attrToNumber(colDef.sortIndex);\n        if (sortIndex !== undefined) {\n            column.setSortIndex(sortIndex);\n        }\n        // hide - anything but undefined, thus null will clear the hide\n        var hide = attrToBoolean(colDef.hide);\n        if (hide !== undefined) {\n            column.setVisible(!hide);\n        }\n        // pinned - anything but undefined, thus null or empty string will remove pinned\n        if (colDef.pinned !== undefined) {\n            column.setPinned(colDef.pinned);\n        }\n    };\n    ColumnFactory.prototype.findExistingColumn = function (newColDef, existingColsCopy) {\n        return (existingColsCopy || []).find(function (existingCol) {\n            var existingColDef = existingCol.getUserProvidedColDef();\n            if (!existingColDef) {\n                return false;\n            }\n            var newHasId = newColDef.colId != null;\n            var newHasField = newColDef.field != null;\n            if (newHasId) {\n                return existingCol.getId() === newColDef.colId;\n            }\n            if (newHasField) {\n                return existingColDef.field === newColDef.field;\n            }\n            // if no id or field present, then try object equivalence.\n            if (existingColDef === newColDef) {\n                return true;\n            }\n            return false;\n        });\n    };\n    ColumnFactory.prototype.findExistingGroup = function (newGroupDef, existingGroups) {\n        return existingGroups.find(function (existingGroup) {\n            var existingDef = existingGroup.getColGroupDef();\n            if (!existingDef) {\n                return false;\n            }\n            var newHasId = newGroupDef.groupId != null;\n            if (newHasId) {\n                return existingGroup.getId() === newGroupDef.groupId;\n            }\n            return false;\n        });\n    };\n    ColumnFactory.prototype.mergeColDefs = function (colDef) {\n        // start with empty merged definition\n        var colDefMerged = {};\n        // merge properties from default column definitions\n        var defaultColDef = this.gridOptionsService.get('defaultColDef');\n        mergeDeep(colDefMerged, defaultColDef, false, true);\n        // merge properties from column type properties\n        var columnType = colDef.type;\n        if (!columnType) {\n            columnType = defaultColDef && defaultColDef.type;\n        }\n        // if type of both colDef and defaultColDef, then colDef gets preference\n        if (columnType) {\n            this.assignColumnTypes(columnType, colDefMerged);\n        }\n        // merge properties from column definitions\n        mergeDeep(colDefMerged, colDef, false, true);\n        var autoGroupColDef = this.gridOptionsService.get('autoGroupColumnDef');\n        var isSortingCoupled = this.gridOptionsService.isColumnsSortingCoupledToGroup();\n        if (colDef.rowGroup && autoGroupColDef && isSortingCoupled) {\n            // override the sort for row group columns where the autoGroupColDef defines these values.\n            mergeDeep(colDefMerged, { sort: autoGroupColDef.sort, initialSort: autoGroupColDef.initialSort }, false, true);\n        }\n        return colDefMerged;\n    };\n    ColumnFactory.prototype.assignColumnTypes = function (type, colDefMerged) {\n        var typeKeys = [];\n        if (type instanceof Array) {\n            var invalidArray = type.some(function (a) { return typeof a !== 'string'; });\n            if (invalidArray) {\n                console.warn(\"AG Grid: if colDef.type is supplied an array it should be of type 'string[]'\");\n            }\n            else {\n                typeKeys = type;\n            }\n        }\n        else if (typeof type === 'string') {\n            typeKeys = type.split(',');\n        }\n        else {\n            console.warn(\"AG Grid: colDef.type should be of type 'string' | 'string[]'\");\n            return;\n        }\n        // merge user defined with default column types\n        var allColumnTypes = Object.assign({}, DefaultColumnTypes);\n        var userTypes = this.gridOptionsService.get('columnTypes') || {};\n        iterateObject(userTypes, function (key, value) {\n            if (key in allColumnTypes) {\n                console.warn(\"AG Grid: the column type '\" + key + \"' is a default column type and cannot be overridden.\");\n            }\n            else {\n                allColumnTypes[key] = value;\n            }\n        });\n        typeKeys.forEach(function (t) {\n            var typeColDef = allColumnTypes[t.trim()];\n            if (typeColDef) {\n                mergeDeep(colDefMerged, typeColDef, false, true);\n            }\n            else {\n                console.warn(\"AG Grid: colDef.type '\" + t + \"' does not correspond to defined gridOptions.columnTypes\");\n            }\n        });\n    };\n    // if object has children, we assume it's a group\n    ColumnFactory.prototype.isColumnGroup = function (abstractColDef) {\n        return abstractColDef.children !== undefined;\n    };\n    __decorate$2v([\n        Autowired('columnUtils')\n    ], ColumnFactory.prototype, \"columnUtils\", void 0);\n    __decorate$2v([\n        __param$9(0, Qualifier('loggerFactory'))\n    ], ColumnFactory.prototype, \"setBeans\", null);\n    ColumnFactory = __decorate$2v([\n        Bean('columnFactory')\n    ], ColumnFactory);\n    return ColumnFactory;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar ColDefUtil = /** @class */ (function () {\n    function ColDefUtil() {\n    }\n    ColDefUtil.ColDefPropertyMap = {\n        headerName: undefined,\n        columnGroupShow: undefined,\n        headerClass: undefined,\n        toolPanelClass: undefined,\n        headerValueGetter: undefined,\n        pivotKeys: undefined,\n        groupId: undefined,\n        colId: undefined,\n        sort: undefined,\n        initialSort: undefined,\n        field: undefined,\n        type: undefined,\n        tooltipComponent: undefined,\n        tooltipField: undefined,\n        headerTooltip: undefined,\n        cellClass: undefined,\n        showRowGroup: undefined,\n        filter: undefined,\n        initialAggFunc: undefined,\n        defaultAggFunc: undefined,\n        aggFunc: undefined,\n        pinned: undefined,\n        initialPinned: undefined,\n        chartDataType: undefined,\n        cellEditorPopupPosition: undefined,\n        headerGroupComponent: undefined,\n        headerGroupComponentFramework: undefined,\n        headerGroupComponentParams: undefined,\n        cellStyle: undefined,\n        cellRenderer: undefined,\n        cellRendererParams: undefined,\n        cellRendererFramework: undefined,\n        cellEditor: undefined,\n        cellEditorFramework: undefined,\n        cellEditorParams: undefined,\n        filterFramework: undefined,\n        filterParams: undefined,\n        pivotValueColumn: undefined,\n        headerComponent: undefined,\n        headerComponentFramework: undefined,\n        headerComponentParams: undefined,\n        floatingFilterComponent: undefined,\n        floatingFilterComponentParams: undefined,\n        floatingFilterComponentFramework: undefined,\n        tooltipComponentParams: undefined,\n        tooltipComponentFramework: undefined,\n        refData: undefined,\n        columnsMenuParams: undefined,\n        children: undefined,\n        sortingOrder: undefined,\n        allowedAggFuncs: undefined,\n        menuTabs: undefined,\n        pivotTotalColumnIds: undefined,\n        cellClassRules: undefined,\n        icons: undefined,\n        sortIndex: undefined,\n        initialSortIndex: undefined,\n        flex: undefined,\n        initialFlex: undefined,\n        width: undefined,\n        initialWidth: undefined,\n        minWidth: undefined,\n        maxWidth: undefined,\n        rowGroupIndex: undefined,\n        initialRowGroupIndex: undefined,\n        pivotIndex: undefined,\n        initialPivotIndex: undefined,\n        suppressCellFlash: undefined,\n        suppressColumnsToolPanel: undefined,\n        suppressFiltersToolPanel: undefined,\n        openByDefault: undefined,\n        marryChildren: undefined,\n        stickyLabel: undefined,\n        hide: undefined,\n        initialHide: undefined,\n        rowGroup: undefined,\n        initialRowGroup: undefined,\n        pivot: undefined,\n        initialPivot: undefined,\n        checkboxSelection: undefined,\n        showDisabledCheckboxes: undefined,\n        headerCheckboxSelection: undefined,\n        headerCheckboxSelectionFilteredOnly: undefined,\n        headerCheckboxSelectionCurrentPageOnly: undefined,\n        suppressMenu: undefined,\n        suppressMovable: undefined,\n        lockPosition: undefined,\n        lockVisible: undefined,\n        lockPinned: undefined,\n        unSortIcon: undefined,\n        suppressSizeToFit: undefined,\n        suppressAutoSize: undefined,\n        enableRowGroup: undefined,\n        enablePivot: undefined,\n        enableValue: undefined,\n        editable: undefined,\n        suppressPaste: undefined,\n        suppressNavigable: undefined,\n        enableCellChangeFlash: undefined,\n        rowDrag: undefined,\n        dndSource: undefined,\n        autoHeight: undefined,\n        wrapText: undefined,\n        sortable: undefined,\n        resizable: undefined,\n        singleClickEdit: undefined,\n        floatingFilter: undefined,\n        cellEditorPopup: undefined,\n        suppressFillHandle: undefined,\n        wrapHeaderText: undefined,\n        autoHeaderHeight: undefined,\n        dndSourceOnRowDrag: undefined,\n        valueGetter: undefined,\n        valueSetter: undefined,\n        filterValueGetter: undefined,\n        keyCreator: undefined,\n        valueFormatter: undefined,\n        valueParser: undefined,\n        comparator: undefined,\n        equals: undefined,\n        pivotComparator: undefined,\n        suppressKeyboardEvent: undefined,\n        suppressHeaderKeyboardEvent: undefined,\n        colSpan: undefined,\n        rowSpan: undefined,\n        getQuickFilterText: undefined,\n        onCellValueChanged: undefined,\n        onCellClicked: undefined,\n        onCellDoubleClicked: undefined,\n        onCellContextMenu: undefined,\n        rowDragText: undefined,\n        tooltipValueGetter: undefined,\n        cellRendererSelector: undefined,\n        cellEditorSelector: undefined,\n        spanHeaderHeight: undefined\n    };\n    ColDefUtil.ALL_PROPERTIES = Object.keys(ColDefUtil.ColDefPropertyMap);\n    // used when doing property checks - this causes noise when using frameworks which can add their own fw specific\n    // properties to colDefs, gridOptions etc\n    ColDefUtil.FRAMEWORK_PROPERTIES = [\n        '__ob__',\n        '__v_skip',\n        '__metadata__',\n        'mappedColumnProperties',\n        'hasChildColumns',\n        'toColDef',\n        'createColDefFromGridColumn'\n    ];\n    return ColDefUtil;\n}());\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar Events = /** @class */ (function () {\n    function Events() {\n    }\n    /** Everything has changed with the columns. Either complete new set of columns set, or user called applyColumnState() */\n    /** @deprecated - grid no longer uses this, and setSate() also fires individual events */\n    Events.EVENT_COLUMN_EVERYTHING_CHANGED = 'columnEverythingChanged';\n    /** User has set in new columns. */\n    Events.EVENT_NEW_COLUMNS_LOADED = 'newColumnsLoaded';\n    /** The pivot mode flag was changed */\n    Events.EVENT_COLUMN_PIVOT_MODE_CHANGED = 'columnPivotModeChanged';\n    /** A row group column was added, removed or order changed. */\n    Events.EVENT_COLUMN_ROW_GROUP_CHANGED = 'columnRowGroupChanged';\n    /** expandAll / collapseAll was called from the api. */\n    Events.EVENT_EXPAND_COLLAPSE_ALL = 'expandOrCollapseAll';\n    /** A pivot column was added, removed or order changed. */\n    Events.EVENT_COLUMN_PIVOT_CHANGED = 'columnPivotChanged';\n    /** The list of grid columns has changed. */\n    Events.EVENT_GRID_COLUMNS_CHANGED = 'gridColumnsChanged';\n    /** A value column was added, removed or agg function was changed. */\n    Events.EVENT_COLUMN_VALUE_CHANGED = 'columnValueChanged';\n    /** A column was moved */\n    Events.EVENT_COLUMN_MOVED = 'columnMoved';\n    /** One or more columns was shown / hidden */\n    Events.EVENT_COLUMN_VISIBLE = 'columnVisible';\n    /** One or more columns was pinned / unpinned*/\n    Events.EVENT_COLUMN_PINNED = 'columnPinned';\n    /** A column group was opened / closed */\n    Events.EVENT_COLUMN_GROUP_OPENED = 'columnGroupOpened';\n    /** One or more columns was resized. If just one, the column in the event is set. */\n    Events.EVENT_COLUMN_RESIZED = 'columnResized';\n    /** The list of displayed columns has changed, can result from columns open / close, column move, pivot, group, etc */\n    Events.EVENT_DISPLAYED_COLUMNS_CHANGED = 'displayedColumnsChanged';\n    /** The list of virtual columns has changed, results from viewport changing */\n    Events.EVENT_VIRTUAL_COLUMNS_CHANGED = 'virtualColumnsChanged';\n    /** Async Transactions Executed */\n    Events.EVENT_ASYNC_TRANSACTIONS_FLUSHED = 'asyncTransactionsFlushed';\n    /** A row group was opened / closed */\n    Events.EVENT_ROW_GROUP_OPENED = 'rowGroupOpened';\n    /** @deprecated v28 use EVENT_ROW_DATA_UPDATED instead */\n    Events.EVENT_ROW_DATA_CHANGED = 'rowDataChanged';\n    /** The client has updated data for the grid */\n    Events.EVENT_ROW_DATA_UPDATED = 'rowDataUpdated';\n    /** The client has set new floating data into the grid */\n    Events.EVENT_PINNED_ROW_DATA_CHANGED = 'pinnedRowDataChanged';\n    /** Range selection has changed */\n    Events.EVENT_RANGE_SELECTION_CHANGED = 'rangeSelectionChanged';\n    /** Chart was created */\n    Events.EVENT_CHART_CREATED = 'chartCreated';\n    /** Chart Range selection has changed */\n    Events.EVENT_CHART_RANGE_SELECTION_CHANGED = 'chartRangeSelectionChanged';\n    /** Chart Options have changed */\n    Events.EVENT_CHART_OPTIONS_CHANGED = 'chartOptionsChanged';\n    /** Chart was destroyed */\n    Events.EVENT_CHART_DESTROYED = 'chartDestroyed';\n    /** For when the tool panel is shown / hidden */\n    Events.EVENT_TOOL_PANEL_VISIBLE_CHANGED = 'toolPanelVisibleChanged';\n    Events.EVENT_TOOL_PANEL_SIZE_CHANGED = 'toolPanelSizeChanged';\n    /**\n     * This is a replacement event for EVENT_TOOL_PANEL_VISIBLE_CHANGED. In v30, the original event interface will be dropped\n     * and replaced with the new event (but using the old event type and interface name)\n     */\n    Events.EVENT_INTERNAL_TOOL_PANEL_VISIBLE_CHANGED = 'internalToolPanelVisibleChanged';\n    Events.EVENT_COLUMN_PANEL_ITEM_DRAG_START = 'columnPanelItemDragStart';\n    Events.EVENT_COLUMN_PANEL_ITEM_DRAG_END = 'columnPanelItemDragEnd';\n    /** Model was updated - grid updates the drawn rows when this happens */\n    Events.EVENT_MODEL_UPDATED = 'modelUpdated';\n    Events.EVENT_PASTE_START = 'pasteStart';\n    Events.EVENT_PASTE_END = 'pasteEnd';\n    Events.EVENT_FILL_START = 'fillStart';\n    Events.EVENT_FILL_END = 'fillEnd';\n    /** Undo operation has started. */\n    Events.EVENT_UNDO_STARTED = 'undoStarted';\n    /** Undo operation has ended. */\n    Events.EVENT_UNDO_ENDED = 'undoEnded';\n    /** Redo operation has started. */\n    Events.EVENT_REDO_STARTED = 'redoStarted';\n    /** Redo operation has ended. */\n    Events.EVENT_REDO_ENDED = 'redoEnded';\n    Events.EVENT_KEY_SHORTCUT_CHANGED_CELL_START = 'keyShortcutChangedCellStart';\n    Events.EVENT_KEY_SHORTCUT_CHANGED_CELL_END = 'keyShortcutChangedCellEnd';\n    Events.EVENT_CELL_CLICKED = 'cellClicked';\n    Events.EVENT_CELL_DOUBLE_CLICKED = 'cellDoubleClicked';\n    Events.EVENT_CELL_MOUSE_DOWN = 'cellMouseDown';\n    Events.EVENT_CELL_CONTEXT_MENU = 'cellContextMenu';\n    Events.EVENT_CELL_VALUE_CHANGED = 'cellValueChanged';\n    Events.EVENT_CELL_EDIT_REQUEST = 'cellEditRequest';\n    Events.EVENT_ROW_VALUE_CHANGED = 'rowValueChanged';\n    Events.EVENT_CELL_FOCUSED = 'cellFocused';\n    Events.EVENT_CELL_FOCUS_CLEARED = 'cellFocusCleared';\n    Events.EVENT_FULL_WIDTH_ROW_FOCUSED = 'fullWidthRowFocused';\n    Events.EVENT_ROW_SELECTED = 'rowSelected';\n    Events.EVENT_SELECTION_CHANGED = 'selectionChanged';\n    Events.EVENT_CELL_KEY_DOWN = 'cellKeyDown';\n    Events.EVENT_CELL_KEY_PRESS = 'cellKeyPress';\n    Events.EVENT_CELL_MOUSE_OVER = 'cellMouseOver';\n    Events.EVENT_CELL_MOUSE_OUT = 'cellMouseOut';\n    /** 2 events for filtering. The grid LISTENS for filterChanged and afterFilterChanged */\n    Events.EVENT_FILTER_CHANGED = 'filterChanged';\n    /** Filter was change but not applied. Only useful if apply buttons are used in filters. */\n    Events.EVENT_FILTER_MODIFIED = 'filterModified';\n    Events.EVENT_FILTER_OPENED = 'filterOpened';\n    Events.EVENT_SORT_CHANGED = 'sortChanged';\n    /** A row was removed from the dom, for any reason. Use to clean up resources (if any) used by the row. */\n    Events.EVENT_VIRTUAL_ROW_REMOVED = 'virtualRowRemoved';\n    Events.EVENT_ROW_CLICKED = 'rowClicked';\n    Events.EVENT_ROW_DOUBLE_CLICKED = 'rowDoubleClicked';\n    /** Gets called once after the grid has finished initialising. */\n    Events.EVENT_GRID_READY = 'gridReady';\n    /** Width of height of the main grid div has changed. Grid listens for this and does layout of grid if it's\n     * changed, so always filling the space it was given. */\n    Events.EVENT_GRID_SIZE_CHANGED = 'gridSizeChanged';\n    /** The indexes of the rows rendered has changed, eg user has scrolled to a new vertical position. */\n    Events.EVENT_VIEWPORT_CHANGED = 'viewportChanged';\n    /* The width of the scrollbar has been calculated */\n    Events.EVENT_SCROLLBAR_WIDTH_CHANGED = 'scrollbarWidthChanged';\n    /** Rows were rendered for the first time (ie on async data load). */\n    Events.EVENT_FIRST_DATA_RENDERED = 'firstDataRendered';\n    /** A column drag has started, either resizing a column or moving a column. */\n    Events.EVENT_DRAG_STARTED = 'dragStarted';\n    /** A column drag has stopped */\n    Events.EVENT_DRAG_STOPPED = 'dragStopped';\n    Events.EVENT_CHECKBOX_CHANGED = 'checkboxChanged';\n    Events.EVENT_ROW_EDITING_STARTED = 'rowEditingStarted';\n    Events.EVENT_ROW_EDITING_STOPPED = 'rowEditingStopped';\n    Events.EVENT_CELL_EDITING_STARTED = 'cellEditingStarted';\n    Events.EVENT_CELL_EDITING_STOPPED = 'cellEditingStopped';\n    /** Main body of grid has scrolled, either horizontally or vertically */\n    Events.EVENT_BODY_SCROLL = 'bodyScroll';\n    /** Main body of the grid has stopped scrolling, either horizontally or vertically */\n    Events.EVENT_BODY_SCROLL_END = 'bodyScrollEnd';\n    Events.EVENT_HEIGHT_SCALE_CHANGED = 'heightScaleChanged';\n    /** The displayed page for pagination has changed. For example the data was filtered or sorted,\n     * or the user has moved to a different page. */\n    Events.EVENT_PAGINATION_CHANGED = 'paginationChanged';\n    /** Only used by React, Angular, Web Components and VueJS AG Grid components\n     * (not used if doing plain JavaScript). If the grid receives changes due\n     * to bound properties, this event fires after the grid has finished processing the change. */\n    Events.EVENT_COMPONENT_STATE_CHANGED = 'componentStateChanged';\n    /** Only used by the SSRM, called when the grid has no more rows to refresh */\n    Events.EVENT_STORE_REFRESHED = 'storeRefreshed';\n    /*****************************  INTERNAL EVENTS: START ******************************************* */\n    /** Please remember to add to ComponentUtil.EXCLUDED_INTERNAL_EVENTS to not have these events exposed to framework components. */\n    /** All items from here down are used internally by the grid, not intended for external use. */\n    // not documented, either experimental, or we just don't want users using an depending on them\n    Events.EVENT_BODY_HEIGHT_CHANGED = 'bodyHeightChanged';\n    Events.EVENT_DISPLAYED_COLUMNS_WIDTH_CHANGED = 'displayedColumnsWidthChanged';\n    Events.EVENT_SCROLL_VISIBILITY_CHANGED = 'scrollVisibilityChanged';\n    Events.EVENT_COLUMN_HOVER_CHANGED = 'columnHoverChanged';\n    Events.EVENT_FLASH_CELLS = 'flashCells';\n    Events.EVENT_PAGINATION_PIXEL_OFFSET_CHANGED = 'paginationPixelOffsetChanged';\n    Events.EVENT_DISPLAYED_ROWS_CHANGED = 'displayedRowsChanged';\n    Events.EVENT_LEFT_PINNED_WIDTH_CHANGED = 'leftPinnedWidthChanged';\n    Events.EVENT_RIGHT_PINNED_WIDTH_CHANGED = 'rightPinnedWidthChanged';\n    Events.EVENT_ROW_CONTAINER_HEIGHT_CHANGED = 'rowContainerHeightChanged';\n    Events.EVENT_HEADER_HEIGHT_CHANGED = 'headerHeightChanged';\n    Events.EVENT_COLUMN_HEADER_HEIGHT_CHANGED = 'columnHeaderHeightChanged';\n    Events.EVENT_ROW_DRAG_ENTER = 'rowDragEnter';\n    Events.EVENT_ROW_DRAG_MOVE = 'rowDragMove';\n    Events.EVENT_ROW_DRAG_LEAVE = 'rowDragLeave';\n    Events.EVENT_ROW_DRAG_END = 'rowDragEnd';\n    // environment\n    Events.EVENT_GRID_STYLES_CHANGED = 'gridStylesChanged';\n    // primarily for charts\n    Events.EVENT_POPUP_TO_FRONT = 'popupToFront';\n    // these are used for server side group and agg - only used by CS with Viewport Row Model - intention is\n    // to design these better around server side functions and then release to general public when fully working with\n    // all the row models.\n    Events.EVENT_COLUMN_ROW_GROUP_CHANGE_REQUEST = 'columnRowGroupChangeRequest';\n    Events.EVENT_COLUMN_PIVOT_CHANGE_REQUEST = 'columnPivotChangeRequest';\n    Events.EVENT_COLUMN_VALUE_CHANGE_REQUEST = 'columnValueChangeRequest';\n    Events.EVENT_COLUMN_AGG_FUNC_CHANGE_REQUEST = 'columnAggFuncChangeRequest';\n    Events.EVENT_KEYBOARD_FOCUS = 'keyboardFocus';\n    Events.EVENT_MOUSE_FOCUS = 'mouseFocus';\n    Events.EVENT_STORE_UPDATED = 'storeUpdated';\n    Events.EVENT_FILTER_DESTROYED = 'filterDestroyed';\n    return Events;\n}());\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __read$t = (undefined && undefined.__read) || function (o, n) {\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n    if (!m) return o;\n    var i = m.call(o), r, ar = [], e;\n    try {\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n    }\n    catch (error) { e = { error: error }; }\n    finally {\n        try {\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\n        }\n        finally { if (e) throw e.error; }\n    }\n    return ar;\n};\nvar __spread$n = (undefined && undefined.__spread) || function () {\n    for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read$t(arguments[i]));\n    return ar;\n};\n/**\n * These keys are used for validating properties supplied on a gridOptions object, and for code generation.\n * If you change the properties on the gridOptions interface, you *must* update this file as well to be consistent.\n */\nvar PropertyKeys = /** @class */ (function () {\n    function PropertyKeys() {\n    }\n    PropertyKeys.STRING_PROPERTIES = [\n        'rowSelection', 'overlayLoadingTemplate', 'overlayNoRowsTemplate',\n        'quickFilterText', 'rowModelType', 'editType', 'domLayout', 'clipboardDelimiter', 'rowGroupPanelShow',\n        'multiSortKey', 'pivotColumnGroupTotals', 'pivotRowTotals', 'pivotPanelShow', 'fillHandleDirection',\n        'serverSideStoreType', 'groupDisplayType', 'treeDataDisplayType', 'colResizeDefault'\n    ];\n    PropertyKeys.OBJECT_PROPERTIES = [\n        'components', 'frameworkComponents', 'rowStyle', 'context', 'autoGroupColumnDef', 'localeText', 'icons',\n        'datasource', 'serverSideDatasource', 'viewportDatasource', 'groupRowRendererParams', 'aggFuncs', 'fullWidthCellRendererParams',\n        'defaultColGroupDef', 'defaultColDef', 'defaultCsvExportParams', 'defaultExcelExportParams', 'columnTypes',\n        'rowClassRules', 'detailCellRendererParams', 'loadingCellRendererParams', 'loadingOverlayComponentParams',\n        'noRowsOverlayComponentParams', 'popupParent', 'statusBar', 'sideBar', 'chartThemeOverrides',\n        'customChartThemes', 'chartToolPanelsDef'\n    ];\n    PropertyKeys.ARRAY_PROPERTIES = [\n        'sortingOrder', 'alignedGrids', 'rowData', 'columnDefs', 'excelStyles', 'pinnedTopRowData', 'pinnedBottomRowData', 'chartThemes', 'rowClass'\n    ];\n    PropertyKeys.NUMBER_PROPERTIES = [\n        'rowHeight', 'detailRowHeight', 'rowBuffer', 'headerHeight', 'groupHeaderHeight', 'floatingFiltersHeight',\n        'pivotHeaderHeight', 'pivotGroupHeaderHeight', 'groupDefaultExpanded', 'viewportRowModelPageSize',\n        'viewportRowModelBufferSize', 'autoSizePadding', 'maxBlocksInCache', 'maxConcurrentDatasourceRequests', 'tooltipShowDelay',\n        'tooltipHideDelay', 'cacheOverflowSize', 'paginationPageSize', 'cacheBlockSize', 'infiniteInitialRowCount', 'serverSideInitialRowCount', 'scrollbarWidth',\n        'asyncTransactionWaitMillis', 'blockLoadDebounceMillis', 'keepDetailRowsCount',\n        'undoRedoCellEditingLimit', 'cellFlashDelay', 'cellFadeDelay', 'tabIndex'\n    ];\n    PropertyKeys.BOOLEAN_PROPERTIES = [\n        'suppressMakeColumnVisibleAfterUnGroup', 'suppressRowClickSelection', 'suppressCellSelection', 'suppressCellFocus', 'suppressHorizontalScroll',\n        'alwaysShowHorizontalScroll', 'alwaysShowVerticalScroll', 'debug', 'enableBrowserTooltips', 'enableCellExpressions', 'groupSelectsChildren',\n        'groupIncludeFooter', 'groupIncludeTotalFooter', 'groupSuppressBlankHeader', 'suppressMenuHide', 'suppressRowDeselection', 'unSortIcon',\n        'suppressMultiSort', 'alwaysMultiSort', 'singleClickEdit', 'suppressLoadingOverlay', 'suppressNoRowsOverlay', 'suppressAutoSize',\n        'skipHeaderOnAutoSize', 'suppressParentsInRowNodes', 'suppressColumnMoveAnimation', 'suppressMovableColumns', 'suppressFieldDotNotation',\n        'enableRangeSelection', 'enableRangeHandle', 'enableFillHandle', 'suppressClearOnFillReduction', 'deltaSort', 'suppressTouch', 'suppressAsyncEvents',\n        'allowContextMenuWithControlKey', 'suppressContextMenu', 'rememberGroupStateWhenNewData', 'enableCellChangeFlash', 'suppressDragLeaveHidesColumns',\n        'suppressRowGroupHidesColumns', 'suppressMiddleClickScrolls', 'suppressPreventDefaultOnMouseWheel', 'suppressCopyRowsToClipboard', 'copyHeadersToClipboard',\n        'copyGroupHeadersToClipboard', 'pivotMode', 'suppressAggFuncInHeader', 'suppressColumnVirtualisation', 'suppressAggAtRootLevel', 'suppressFocusAfterRefresh',\n        'functionsPassive', 'functionsReadOnly', 'animateRows', 'groupSelectsFiltered', 'groupRemoveSingleChildren', 'groupRemoveLowestSingleChildren', 'enableRtl',\n        'suppressClickEdit', 'rowDragEntireRow', 'rowDragManaged', 'suppressRowDrag', 'suppressMoveWhenRowDragging', 'rowDragMultiRow', 'enableGroupEdit',\n        'embedFullWidthRows', 'suppressPaginationPanel', 'groupHideOpenParents', 'groupAllowUnbalanced', 'pagination', 'paginationAutoPageSize', 'suppressScrollOnNewData',\n        'suppressScrollWhenPopupsAreOpen', 'purgeClosedRowNodes', 'cacheQuickFilter', 'excludeHiddenColumnsFromQuickFilter', 'ensureDomOrder', 'accentedSort', 'suppressChangeDetection',\n        'valueCache', 'valueCacheNeverExpires', 'aggregateOnlyChangedColumns', 'suppressAnimationFrame', 'suppressExcelExport', 'suppressCsvExport', 'treeData', 'masterDetail',\n        'suppressMultiRangeSelection', 'enterMovesDownAfterEdit', 'enterMovesDown', 'suppressPropertyNamesCheck', 'rowMultiSelectWithClick', 'suppressRowHoverHighlight',\n        'suppressRowTransform', 'suppressClipboardPaste', 'suppressLastEmptyLineOnPaste', 'enableCharts', 'enableChartToolPanelsButton', 'suppressChartToolPanelsButton',\n        'suppressMaintainUnsortedOrder', 'enableCellTextSelection', 'suppressBrowserResizeObserver', 'suppressMaxRenderedRowRestriction', 'excludeChildrenWhenTreeDataFiltering',\n        'tooltipMouseTrack', 'keepDetailRows', 'paginateChildRows', 'preventDefaultOnContextMenu', 'undoRedoCellEditing', 'allowDragFromColumnsToolPanel', 'immutableData',\n        'pivotSuppressAutoColumn', 'suppressExpandablePivotGroups', 'debounceVerticalScrollbar', 'detailRowAutoHeight', 'serverSideFilteringAlwaysResets',\n        'serverSideSortingAlwaysResets', 'serverSideSortAllLevels', 'serverSideFilterAllLevels', 'serverSideSortOnServer', 'serverSideFilterOnServer', 'suppressAggFilteredOnly',\n        'showOpenedGroup', 'suppressClipboardApi', 'suppressModelUpdateAfterUpdateTransaction', 'stopEditingWhenCellsLoseFocus', 'maintainColumnOrder', 'groupMaintainOrder',\n        'columnHoverHighlight', 'reactUi', 'suppressReactUi', 'readOnlyEdit', 'suppressRowVirtualisation', 'enableCellEditingOnBackspace', 'resetRowDataOnUpdate',\n        'removePivotHeaderRowWhenSingleValueColumn', 'suppressCopySingleCellRanges', 'groupRowsSticky', 'suppressServerSideInfiniteScroll', 'rowGroupPanelSuppressSort',\n        'allowShowChangeAfterFilter', 'suppressCutToClipboard'\n    ];\n    /** You do not need to include event callbacks in this list, as they are generated automatically. */\n    PropertyKeys.FUNCTIONAL_PROPERTIES = [\n        'localeTextFunc', 'doesExternalFilterPass', 'groupRowAggNodes', 'isFullWidthCell', 'processSecondaryColDef', 'processSecondaryColGroupDef', 'processPivotResultColDef',\n        'processPivotResultColGroupDef', 'getBusinessKeyForNode', 'isRowSelectable', 'postSort', 'defaultGroupOrderComparator', 'rowDragText',\n        'groupRowRenderer', 'groupRowRendererFramework', 'fullWidthCellRenderer', 'fullWidthCellRendererFramework',\n        'loadingCellRenderer', 'loadingCellRendererFramework', 'loadingOverlayComponent', 'loadingOverlayComponentFramework', 'noRowsOverlayComponent', 'noRowsOverlayComponentFramework',\n        'detailCellRenderer', 'detailCellRendererFramework'\n    ];\n    PropertyKeys.CALLBACK_PROPERTIES = [\n        'getLocaleText', 'isExternalFilterPresent', 'getRowHeight', 'getRowClass', 'getRowStyle', 'getContextMenuItems', 'getMainMenuItems',\n        'processRowPostCreate', 'processCellForClipboard', 'getGroupRowAgg', 'getRowNodeId', 'isFullWidthRow',\n        'sendToClipboard', 'navigateToNextHeader', 'tabToNextHeader', 'navigateToNextCell',\n        'tabToNextCell', 'processCellFromClipboard', 'getDocument', 'postProcessPopup', 'getChildCount', 'getDataPath', 'isRowMaster', 'postSortRows', 'processHeaderForClipboard',\n        'processGroupHeaderForClipboard', 'paginationNumberFormatter', 'processDataFromClipboard', 'getServerSideGroupKey', 'isServerSideGroup',\n        'createChartContainer', 'getChartToolbarItems', 'fillOperation', 'isApplyServerSideTransaction', 'getServerSideStoreParams', 'getServerSideGroupLevelParams',\n        'isServerSideGroupOpenByDefault', 'isGroupOpenByDefault', 'initialGroupOrderComparator',\n        'loadingCellRendererSelector', 'getRowId', 'groupAggFiltering'\n    ];\n    PropertyKeys.FUNCTION_PROPERTIES = __spread$n(PropertyKeys.FUNCTIONAL_PROPERTIES, PropertyKeys.CALLBACK_PROPERTIES);\n    PropertyKeys.ALL_PROPERTIES = __spread$n(PropertyKeys.ARRAY_PROPERTIES, PropertyKeys.OBJECT_PROPERTIES, PropertyKeys.STRING_PROPERTIES, PropertyKeys.NUMBER_PROPERTIES, PropertyKeys.FUNCTION_PROPERTIES, PropertyKeys.BOOLEAN_PROPERTIES);\n    /**\n     * Used when performing property checks. This avoids noise caused when using frameworks, which can add their own\n     * framework-specific properties to colDefs, gridOptions etc.\n     */\n    PropertyKeys.FRAMEWORK_PROPERTIES = [\n        '__ob__', '__v_skip', '__metadata__', 'mappedColumnProperties', 'hasChildColumns', 'toColDef', 'createColDefFromGridColumn'\n    ];\n    return PropertyKeys;\n}());\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __assign$l = (undefined && undefined.__assign) || function () {\n    __assign$l = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign$l.apply(this, arguments);\n};\nvar __read$s = (undefined && undefined.__read) || function (o, n) {\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n    if (!m) return o;\n    var i = m.call(o), r, ar = [], e;\n    try {\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n    }\n    catch (error) { e = { error: error }; }\n    finally {\n        try {\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\n        }\n        finally { if (e) throw e.error; }\n    }\n    return ar;\n};\nvar __spread$m = (undefined && undefined.__spread) || function () {\n    for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read$s(arguments[i]));\n    return ar;\n};\nvar ComponentUtil = /** @class */ (function () {\n    function ComponentUtil() {\n    }\n    ComponentUtil.getCallbackForEvent = function (eventName) {\n        if (!eventName || eventName.length < 2) {\n            return eventName;\n        }\n        return 'on' + eventName[0].toUpperCase() + eventName.substr(1);\n    };\n    ComponentUtil.getCoercionLookup = function () {\n        var coercionLookup = {};\n        __spread$m(ComponentUtil.ARRAY_PROPERTIES, ComponentUtil.OBJECT_PROPERTIES, ComponentUtil.STRING_PROPERTIES, ComponentUtil.FUNCTION_PROPERTIES, ComponentUtil.EVENT_CALLBACKS).forEach(function (key) { return coercionLookup[key] = 'none'; });\n        ComponentUtil.BOOLEAN_PROPERTIES\n            .forEach(function (key) { return coercionLookup[key] = 'boolean'; });\n        ComponentUtil.NUMBER_PROPERTIES\n            .forEach(function (key) { return coercionLookup[key] = 'number'; });\n        return coercionLookup;\n    };\n    ComponentUtil.getValue = function (key, rawValue) {\n        var coercionStep = ComponentUtil.coercionLookup[key];\n        if (coercionStep) {\n            var newValue = rawValue;\n            switch (coercionStep) {\n                case 'number': {\n                    newValue = ComponentUtil.toNumber(rawValue);\n                    break;\n                }\n                case 'boolean': {\n                    newValue = ComponentUtil.toBoolean(rawValue);\n                    break;\n                }\n                case 'none': {\n                    // if groupAggFiltering exists and isn't a function, handle as a boolean.\n                    if (key === 'groupAggFiltering' && typeof rawValue !== 'function') {\n                        newValue = ComponentUtil.toBoolean(rawValue);\n                    }\n                    break;\n                }\n            }\n            return newValue;\n        }\n        return undefined;\n    };\n    ComponentUtil.getGridOptionKeys = function (component, isVue) {\n        // Vue does not have keys in prod so instead need to run through all the \n        // gridOptions checking for presence of a gridOption key.\n        return isVue\n            ? Object.keys(ComponentUtil.coercionLookup)\n            : Object.keys(component);\n    };\n    ComponentUtil.copyAttributesToGridOptions = function (gridOptions, component, isVue) {\n        if (isVue === void 0) { isVue = false; }\n        // create empty grid options if none were passed\n        if (typeof gridOptions !== 'object') {\n            gridOptions = {};\n        }\n        // to allow array style lookup in TypeScript, take type away from 'this' and 'gridOptions'\n        var pGridOptions = gridOptions;\n        var keys = ComponentUtil.getGridOptionKeys(component, isVue);\n        // Loop through component props, if they are not undefined and a valid gridOption copy to gridOptions\n        keys.forEach(function (key) {\n            var value = component[key];\n            if (typeof value !== 'undefined') {\n                var coercedValue = ComponentUtil.getValue(key, value);\n                if (coercedValue !== undefined) {\n                    pGridOptions[key] = coercedValue;\n                }\n            }\n        });\n        return gridOptions;\n    };\n    ComponentUtil.processOnChange = function (changes, api) {\n        if (!changes || Object.keys(changes).length === 0) {\n            return;\n        }\n        var changesToApply = __assign$l({}, changes);\n        // We manually call these updates so that we can provide a different source of gridOptionsChanged\n        // We do not call setProperty as this will be called by the grid api methods\n        if (changesToApply.columnTypes) {\n            api.setColumnTypes(changesToApply.columnTypes.currentValue, \"gridOptionsChanged\");\n            delete changesToApply.columnTypes;\n        }\n        if (changesToApply.autoGroupColumnDef) {\n            api.setAutoGroupColumnDef(changesToApply.autoGroupColumnDef.currentValue, \"gridOptionsChanged\");\n            delete changesToApply.autoGroupColumnDef;\n        }\n        if (changesToApply.defaultColDef) {\n            api.setDefaultColDef(changesToApply.defaultColDef.currentValue, \"gridOptionsChanged\");\n            delete changesToApply.defaultColDef;\n        }\n        if (changesToApply.columnDefs) {\n            api.setColumnDefs(changesToApply.columnDefs.currentValue, \"gridOptionsChanged\");\n            delete changesToApply.columnDefs;\n        }\n        Object.keys(changesToApply).forEach(function (key) {\n            var gridKey = key;\n            var coercedValue = ComponentUtil.getValue(gridKey, changesToApply[gridKey].currentValue);\n            api.__setProperty(gridKey, coercedValue);\n        });\n        // copy changes into an event for dispatch\n        var event = {\n            type: Events.EVENT_COMPONENT_STATE_CHANGED\n        };\n        iterateObject(changes, function (key, value) {\n            event[key] = value;\n        });\n        api.dispatchEvent(event);\n    };\n    ComponentUtil.toBoolean = function (value) {\n        if (typeof value === 'boolean') {\n            return value;\n        }\n        if (typeof value === 'string') {\n            // for boolean, compare to empty String to allow attributes appearing with\n            // no value to be treated as 'true'\n            return value.toUpperCase() === 'TRUE' || value == '';\n        }\n        return false;\n    };\n    ComponentUtil.toNumber = function (value) {\n        if (typeof value === 'number') {\n            return value;\n        }\n        if (typeof value === 'string') {\n            return Number(value);\n        }\n    };\n    // all events\n    ComponentUtil.EVENTS = values(Events);\n    // events that are internal to AG Grid and should not be exposed to users via documentation or generated framework components\n    /** Exclude the following internal events from code generation to prevent exposing these events via framework components */\n    ComponentUtil.EXCLUDED_INTERNAL_EVENTS = [\n        Events.EVENT_SCROLLBAR_WIDTH_CHANGED,\n        Events.EVENT_CHECKBOX_CHANGED,\n        Events.EVENT_HEIGHT_SCALE_CHANGED,\n        Events.EVENT_BODY_HEIGHT_CHANGED,\n        Events.EVENT_DISPLAYED_COLUMNS_WIDTH_CHANGED,\n        Events.EVENT_SCROLL_VISIBILITY_CHANGED,\n        Events.EVENT_COLUMN_HOVER_CHANGED,\n        Events.EVENT_FLASH_CELLS,\n        Events.EVENT_PAGINATION_PIXEL_OFFSET_CHANGED,\n        Events.EVENT_DISPLAYED_ROWS_CHANGED,\n        Events.EVENT_LEFT_PINNED_WIDTH_CHANGED,\n        Events.EVENT_RIGHT_PINNED_WIDTH_CHANGED,\n        Events.EVENT_ROW_CONTAINER_HEIGHT_CHANGED,\n        Events.EVENT_POPUP_TO_FRONT,\n        Events.EVENT_KEYBOARD_FOCUS,\n        Events.EVENT_MOUSE_FOCUS,\n        Events.EVENT_STORE_UPDATED,\n        Events.EVENT_COLUMN_PANEL_ITEM_DRAG_START,\n        Events.EVENT_COLUMN_PANEL_ITEM_DRAG_END,\n        Events.EVENT_FILL_START,\n        Events.EVENT_FILL_END,\n        Events.EVENT_KEY_SHORTCUT_CHANGED_CELL_START,\n        Events.EVENT_KEY_SHORTCUT_CHANGED_CELL_END,\n        Events.EVENT_FULL_WIDTH_ROW_FOCUSED,\n        Events.EVENT_HEADER_HEIGHT_CHANGED,\n        Events.EVENT_COLUMN_HEADER_HEIGHT_CHANGED,\n        Events.EVENT_INTERNAL_TOOL_PANEL_VISIBLE_CHANGED,\n        Events.EVENT_CELL_FOCUS_CLEARED,\n        Events.EVENT_GRID_STYLES_CHANGED,\n        Events.EVENT_FILTER_DESTROYED\n    ];\n    // events that are available for use by users of AG Grid and so should be documented\n    /** EVENTS that should be exposed via code generation for the framework components.  */\n    ComponentUtil.PUBLIC_EVENTS = ComponentUtil.EVENTS.filter(function (e) { return !includes(ComponentUtil.EXCLUDED_INTERNAL_EVENTS, e); });\n    // onXXX methods, based on the above events\n    ComponentUtil.EVENT_CALLBACKS = ComponentUtil.EVENTS.map(function (event) { return ComponentUtil.getCallbackForEvent(event); });\n    ComponentUtil.STRING_PROPERTIES = PropertyKeys.STRING_PROPERTIES;\n    ComponentUtil.OBJECT_PROPERTIES = PropertyKeys.OBJECT_PROPERTIES;\n    ComponentUtil.ARRAY_PROPERTIES = PropertyKeys.ARRAY_PROPERTIES;\n    ComponentUtil.NUMBER_PROPERTIES = PropertyKeys.NUMBER_PROPERTIES;\n    ComponentUtil.BOOLEAN_PROPERTIES = PropertyKeys.BOOLEAN_PROPERTIES;\n    ComponentUtil.FUNCTION_PROPERTIES = PropertyKeys.FUNCTION_PROPERTIES;\n    ComponentUtil.ALL_PROPERTIES = PropertyKeys.ALL_PROPERTIES;\n    ComponentUtil.ALL_PROPERTIES_SET = new Set(PropertyKeys.ALL_PROPERTIES);\n    ComponentUtil.coercionLookup = ComponentUtil.getCoercionLookup();\n    return ComponentUtil;\n}());\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nfunction fuzzyCheckStrings(inputValues, validValues, allSuggestions) {\n    var fuzzyMatches = {};\n    var invalidInputs = inputValues.filter(function (inputValue) {\n        return !validValues.some(function (validValue) { return validValue === inputValue; });\n    });\n    if (invalidInputs.length > 0) {\n        invalidInputs.forEach(function (invalidInput) {\n            return fuzzyMatches[invalidInput] = fuzzySuggestions(invalidInput, allSuggestions);\n        });\n    }\n    return fuzzyMatches;\n}\n/**\n *\n * @param {String} inputValue The value to be compared against a list of strings\n * @param allSuggestions The list of strings to be compared against\n */\nfunction fuzzySuggestions(inputValue, allSuggestions, hideIrrelevant, filterByPercentageOfBestMatch) {\n    var thisSuggestions = allSuggestions.map(function (text) { return ({\n        value: text,\n        relevance: stringWeightedDistances(inputValue.toLowerCase(), text.toLocaleLowerCase())\n    }); });\n    thisSuggestions.sort(function (a, b) { return b.relevance - a.relevance; });\n    if (hideIrrelevant) {\n        thisSuggestions = thisSuggestions.filter(function (suggestion) { return suggestion.relevance !== 0; });\n    }\n    if (filterByPercentageOfBestMatch && filterByPercentageOfBestMatch > 0) {\n        var bestMatch = thisSuggestions[0].relevance;\n        var limit_1 = bestMatch * filterByPercentageOfBestMatch;\n        thisSuggestions = thisSuggestions.filter(function (suggestion) { return limit_1 - suggestion.relevance < 0; });\n    }\n    return thisSuggestions.map(function (suggestion) { return suggestion.value; });\n}\nfunction stringWeightedDistances(str1, str2) {\n    var a = str1.replace(/\\s/g, '');\n    var b = str2.replace(/\\s/g, '');\n    var weight = 0;\n    var lastIndex = -1;\n    for (var i = 0; i < a.length; i++) {\n        var idx = b.indexOf(a[i], lastIndex + 1);\n        if (idx === -1) {\n            continue;\n        }\n        lastIndex = idx;\n        weight += (100 - (lastIndex * 100 / 10000) * 100);\n    }\n    return weight;\n}\n\nvar FuzzyMatchUtils = /*#__PURE__*/Object.freeze({\n    __proto__: null,\n    fuzzyCheckStrings: fuzzyCheckStrings,\n    fuzzySuggestions: fuzzySuggestions\n});\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __decorate$2u = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __read$r = (undefined && undefined.__read) || function (o, n) {\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n    if (!m) return o;\n    var i = m.call(o), r, ar = [], e;\n    try {\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n    }\n    catch (error) { e = { error: error }; }\n    finally {\n        try {\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\n        }\n        finally { if (e) throw e.error; }\n    }\n    return ar;\n};\nvar __spread$l = (undefined && undefined.__spread) || function () {\n    for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read$r(arguments[i]));\n    return ar;\n};\nfunction logDeprecation(version, oldProp, newProp, message) {\n    var newPropMsg = newProp ? \"Please use '\" + newProp + \"' instead. \" : '';\n    doOnce(function () { return console.warn(\"AG Grid: since v\" + version + \", '\" + oldProp + \"' is deprecated. \" + newPropMsg + (message !== null && message !== void 0 ? message : '')); }, \"Deprecated_\" + oldProp);\n}\nvar GridOptionsValidator = /** @class */ (function () {\n    function GridOptionsValidator() {\n        this.deprecatedProperties = {\n            serverSideInfiniteScroll: { version: '29', message: 'Infinite Scrolling is now the default behaviour. This can be suppressed with `suppressServerSideInfiniteScroll`.' },\n            rememberGroupStateWhenNewData: { version: '24', message: 'Now that transaction updates are possible and they keep group state, this feature is no longer needed.' },\n            suppressEnterpriseResetOnNewColumns: { version: '25', message: 'Now that it is possible to dynamically change columns in the grid, this is no longer needed.' },\n            suppressColumnStateEvents: { version: '25', message: 'Events should be ignored based on the `event.source`, which will be \"api\" if the event was due to setting column state via the API.' },\n            defaultExportParams: { version: '25.2', message: 'The property `defaultExportParams` has been replaced by `defaultCsvExportParams` and `defaultExcelExportParams`' },\n            stopEditingWhenGridLosesFocus: { version: '25.2.2', newProp: 'stopEditingWhenCellsLoseFocus', copyToNewProp: true },\n            applyColumnDefOrder: { version: '26', message: 'The property `applyColumnDefOrder` is no longer needed, as this is the default behaviour. To turn this behaviour off, set maintainColumnOrder=true' },\n            groupMultiAutoColumn: { version: '26', newProp: 'groupDisplayType', copyToNewProp: true, newPropValue: 'multipleColumns' },\n            groupUseEntireRow: { version: '26', newProp: 'groupDisplayType', copyToNewProp: true, newPropValue: 'groupRows' },\n            defaultGroupSortComparator: { version: '26', newProp: 'initialGroupOrderComparator' },\n            enableMultiRowDragging: { version: '26.1', newProp: 'rowDragMultiRow', copyToNewProp: true },\n            colWidth: { version: '26.1', newProp: 'defaultColDef.width' },\n            minColWidth: { version: '26.1', newProp: 'defaultColDef.minWidth' },\n            maxColWidth: { version: '26.1', newProp: 'defaultColDef.maxWidth' },\n            reactUi: { version: '26.1', message: 'React UI is on by default, so no need for reactUi=true. To turn it off, set suppressReactUi=true.' },\n            suppressCellSelection: { version: '27', newProp: 'suppressCellFocus', copyToNewProp: true },\n            clipboardDeliminator: { version: '27.1', newProp: 'clipboardDelimiter', copyToNewProp: true },\n            getRowNodeId: { version: '27.1', newProp: 'getRowId', message: 'The difference: if getRowId() is implemented then immutable data is enabled by default.' },\n            defaultGroupOrderComparator: { version: '27.2', newProp: 'initialGroupOrderComparator' },\n            groupRowAggNodes: { version: '27.2', newProp: 'getGroupRowAgg' },\n            postSort: { version: '27.2', newProp: 'postSortRows' },\n            isFullWidthCell: { version: '27.2', newProp: 'isFullWidthRow' },\n            localeTextFunc: { version: '27.2', newProp: 'getLocaleText' },\n            serverSideFilteringAlwaysResets: { version: '28.0', newProp: 'serverSideFilterAllLevels', copyToNewProp: true, },\n            serverSideSortingAlwaysResets: { version: '28.0', newProp: 'serverSideSortAllLevels', copyToNewProp: true, },\n            suppressReactUi: { version: '28', message: 'The legacy React rendering engine is deprecated and will be removed in the next major version of the grid.' },\n            processSecondaryColDef: { version: '28', newProp: 'processPivotResultColDef', copyToNewProp: true },\n            processSecondaryColGroupDef: { version: '28', newProp: 'processPivotResultColGroupDef', copyToNewProp: true },\n            getServerSideStoreParams: { version: '28', newProp: 'getServerSideGroupLevelParams', copyToNewProp: true },\n            enableChartToolPanelsButton: { version: '29', message: 'The Chart Tool Panels button is now enabled by default. To hide the Chart Tool Panels button and display the hamburger button instead, set suppressChartToolPanelsButton=true.' },\n            functionsPassive: { version: '29.2' },\n            onColumnRowGroupChangeRequest: { version: '29.2' },\n            onColumnPivotChangeRequest: { version: '29.2' },\n            onColumnValueChangeRequest: { version: '29.2' },\n            onColumnAggFuncChangeRequest: { version: '29.2' },\n        };\n    }\n    GridOptionsValidator.prototype.pickOneWarning = function (prop1, prop2) {\n        console.warn(\"AG Grid: \" + prop1 + \" and \" + prop2 + \" do not work with each other, you need to pick one.\");\n    };\n    GridOptionsValidator.prototype.init = function () {\n        var _this = this;\n        this.checkForDeprecated();\n        this.checkForViolations();\n        if (this.gridOptions.suppressPropertyNamesCheck !== true) {\n            this.checkGridOptionsProperties();\n            this.checkColumnDefProperties();\n        }\n        this.checkColumnDefViolations();\n        if (this.gridOptionsService.is('groupSelectsChildren') && this.gridOptionsService.is('suppressParentsInRowNodes')) {\n            console.warn(\"AG Grid: 'groupSelectsChildren' does not work with 'suppressParentsInRowNodes', this selection method needs the part in rowNode to work\");\n        }\n        if (this.gridOptionsService.is('groupSelectsChildren')) {\n            if (this.gridOptionsService.get('rowSelection') !== 'multiple') {\n                console.warn(\"AG Grid: rowSelection must be 'multiple' for groupSelectsChildren to make sense\");\n            }\n        }\n        if (this.gridOptionsService.is('groupRemoveSingleChildren') && this.gridOptionsService.is('groupHideOpenParents')) {\n            this.pickOneWarning('groupRemoveSingleChildren', 'groupHideOpenParents');\n        }\n        if (this.gridOptionsService.get('domLayout') === 'autoHeight' && !this.gridOptionsService.isRowModelType('clientSide')) {\n            if (!this.gridOptionsService.is('pagination')) {\n                console.warn(\"AG Grid: domLayout='autoHeight' was ignored as it is only supported by the Client-Side row model, unless using pagination.\");\n                this.gridOptions.domLayout = 'normal';\n            }\n        }\n        if (this.gridOptionsService.isRowModelType('serverSide')) {\n            var msg = function (prop, alt) { return (\"AG Grid: '\" + prop + \"' is not supported on the Server-Side Row Model.\" + (alt ? \" Please use \" + alt + \" instead.\" : '')); };\n            if (this.gridOptionsService.exists('groupDefaultExpanded')) {\n                console.warn(msg('groupDefaultExpanded', 'isServerSideGroupOpenByDefault callback'));\n            }\n            if (this.gridOptionsService.exists('groupIncludeFooter')) {\n                console.warn(msg('groupIncludeFooter'));\n            }\n            if (this.gridOptionsService.exists('groupIncludeTotalFooter')) {\n                console.warn(msg('groupIncludeTotalFooter'));\n            }\n        }\n        if (this.gridOptionsService.is('enableRangeSelection')) {\n            ModuleRegistry.assertRegistered(ModuleNames.RangeSelectionModule, 'enableRangeSelection');\n        }\n        else if (this.gridOptionsService.is('enableRangeHandle') || this.gridOptionsService.is('enableFillHandle')) {\n            console.warn(\"AG Grid: 'enableRangeHandle' or 'enableFillHandle' will not work unless 'enableRangeSelection' is set to true\");\n        }\n        var validateRegistered = function (prop, module) { return _this.gridOptionsService.exists(prop) && ModuleRegistry.assertRegistered(module, prop); };\n        // Ensure the SideBar is registered which will then lead them to register Column / Filter Tool panels as required by their config.\n        // It is possible to use the SideBar only with your own custom tool panels.\n        validateRegistered('sideBar', ModuleNames.SideBarModule);\n        validateRegistered('statusBar', ModuleNames.StatusBarModule);\n        validateRegistered('enableCharts', ModuleNames.GridChartsModule);\n        validateRegistered('getMainMenuItems', ModuleNames.MenuModule);\n        validateRegistered('getContextMenuItems', ModuleNames.MenuModule);\n        validateRegistered('allowContextMenuWithControlKey', ModuleNames.MenuModule);\n        if (this.gridOptionsService.is('groupRowsSticky')) {\n            if (this.gridOptionsService.is('groupHideOpenParents')) {\n                this.pickOneWarning('groupRowsSticky', 'groupHideOpenParents');\n            }\n            if (this.gridOptionsService.is('masterDetail')) {\n                this.pickOneWarning('groupRowsSticky', 'masterDetail');\n            }\n            if (this.gridOptionsService.is('pagination')) {\n                this.pickOneWarning('groupRowsSticky', 'pagination');\n            }\n        }\n    };\n    GridOptionsValidator.prototype.checkColumnDefProperties = function () {\n        var _this = this;\n        if (this.gridOptions.columnDefs == null) {\n            return;\n        }\n        var validProperties = __spread$l(ColDefUtil.ALL_PROPERTIES, ColDefUtil.FRAMEWORK_PROPERTIES);\n        var validateColDef = function (colDef, propertyName) {\n            var userProperties = Object.getOwnPropertyNames(colDef);\n            _this.checkProperties(userProperties, validProperties, validProperties, propertyName, 'https://www.ag-grid.com/javascript-data-grid/column-properties/');\n            if (colDef.children) {\n                colDef.children.forEach(function (child) { return validateColDef(child, 'columnDefs.children'); });\n            }\n        };\n        this.gridOptions.columnDefs.forEach(function (colDef) { return validateColDef(colDef, 'columnDefs'); });\n        if (this.gridOptions.defaultColDef) {\n            validateColDef(this.gridOptions.defaultColDef, 'defaultColDef');\n        }\n    };\n    GridOptionsValidator.prototype.checkColumnDefViolations = function () {\n        var _a;\n        var rowModel = (_a = this.gridOptionsService.get('rowModelType')) !== null && _a !== void 0 ? _a : 'clientSide';\n        var unsupportedPropertiesMap = {\n            infinite: ['headerCheckboxSelection', 'headerCheckboxSelectionFilteredOnly', 'headerCheckboxSelectionCurrentPageOnly'],\n            viewport: ['headerCheckboxSelection', 'headerCheckboxSelectionFilteredOnly', 'headerCheckboxSelectionCurrentPageOnly'],\n            serverSide: ['headerCheckboxSelectionFilteredOnly', 'headerCheckboxSelectionCurrentPageOnly'],\n            clientSide: [],\n        };\n        var unsupportedProperties = unsupportedPropertiesMap[rowModel];\n        if (!(unsupportedProperties === null || unsupportedProperties === void 0 ? void 0 : unsupportedProperties.length)) {\n            return;\n        }\n        var validateColDef = function (colDef) {\n            unsupportedProperties.forEach(function (property) {\n                if (property in colDef && !!colDef[property]) {\n                    console.warn(\"AG Grid: Column property \" + property + \" is not supported with the row model type \" + rowModel + \".\");\n                }\n            });\n        };\n        if (this.gridOptions.columnDefs != null) {\n            this.gridOptions.columnDefs.forEach(function (colDef) { return validateColDef(colDef); });\n        }\n        if (this.gridOptions.autoGroupColumnDef != null) {\n            validateColDef(this.gridOptions.autoGroupColumnDef);\n        }\n        if (this.gridOptions.defaultColDef != null) {\n            validateColDef(this.gridOptions.defaultColDef);\n        }\n    };\n    GridOptionsValidator.prototype.checkGridOptionsProperties = function () {\n        var userProperties = Object.getOwnPropertyNames(this.gridOptions);\n        var validProperties = __spread$l(PropertyKeys.ALL_PROPERTIES, PropertyKeys.FRAMEWORK_PROPERTIES, ComponentUtil.EVENT_CALLBACKS);\n        var validPropertiesAndExceptions = __spread$l(validProperties, ['api', 'columnApi'], Object.keys(this.deprecatedProperties));\n        this.checkProperties(userProperties, validPropertiesAndExceptions, validProperties, 'gridOptions', 'https://www.ag-grid.com/javascript-data-grid/grid-options/');\n    };\n    GridOptionsValidator.prototype.checkProperties = function (userProperties, validPropertiesAndExceptions, validProperties, containerName, docsUrl) {\n        var invalidProperties = fuzzyCheckStrings(userProperties, validPropertiesAndExceptions, validProperties);\n        iterateObject(invalidProperties, function (key, value) {\n            doOnce(function () { return console.warn(\"AG Grid: invalid \" + containerName + \" property '\" + key + \"' did you mean any of these: \" + value.slice(0, 8).join(\", \")); }, 'invalidProperty' + containerName + key);\n        });\n        if (Object.keys(invalidProperties).length > 0) {\n            doOnce(function () { return console.warn(\"AG Grid: to see all the valid \" + containerName + \" properties please check: \" + docsUrl); }, 'invalidProperties' + containerName + docsUrl);\n        }\n    };\n    GridOptionsValidator.prototype.checkForDeprecated = function () {\n        // casting to generic object, so typescript compiles even though\n        // we are looking for attributes that don't exist\n        var options = this.gridOptions;\n        Object.entries(this.deprecatedProperties).forEach(function (_a) {\n            var _b;\n            var _c = __read$r(_a, 2), oldProp = _c[0], details = _c[1];\n            var oldPropValue = options[oldProp];\n            if (oldPropValue) {\n                logDeprecation(details.version, oldProp, details.newProp, details.message);\n                if (details.copyToNewProp && details.newProp && options[details.newProp] == null) {\n                    options[details.newProp] = (_b = details.newPropValue) !== null && _b !== void 0 ? _b : oldPropValue;\n                }\n            }\n        });\n        // Manual messages and deprecation behaviour that don't fit our standard approach above.\n        if (options.groupSuppressAutoColumn) {\n            var propName = options.treeData ? 'treeDataDisplayType' : 'groupDisplayType';\n            console.warn(\"AG Grid: since v26.0, the grid property `groupSuppressAutoColumn` has been replaced by `\" + propName + \" = 'custom'`\");\n            options[propName] = 'custom';\n        }\n        if (options.immutableData) {\n            if (options.getRowId) {\n                console.warn('AG Grid: since v27.1, `immutableData` is deprecated. With the `getRowId` callback implemented, immutable data is enabled by default so you can remove `immutableData=true`.');\n            }\n            else {\n                console.warn('AG Grid: since v27.1, `immutableData` is deprecated. To enable immutable data you must implement the `getRowId()` callback.');\n            }\n        }\n        if (options.serverSideStoreType) {\n            console.warn('AG Grid: since v29.0, `serverSideStoreType` has been replaced by `suppressServerSideInfiniteScroll`. Set to false to use Partial Store, and true to use Full Store.');\n            options.suppressServerSideInfiniteScroll = options.serverSideStoreType !== 'partial';\n        }\n    };\n    GridOptionsValidator.prototype.checkForViolations = function () {\n        if (this.gridOptionsService.is('treeData')) {\n            this.treeDataViolations();\n        }\n    };\n    GridOptionsValidator.prototype.treeDataViolations = function () {\n        if (this.gridOptionsService.isRowModelType('clientSide')) {\n            if (!this.gridOptionsService.exists('getDataPath')) {\n                console.warn('AG Grid: property usingTreeData=true with rowModel=clientSide, but you did not ' +\n                    'provide getDataPath function, please provide getDataPath function if using tree data.');\n            }\n        }\n        if (this.gridOptionsService.isRowModelType('serverSide')) {\n            if (!this.gridOptionsService.exists('isServerSideGroup')) {\n                console.warn('AG Grid: property usingTreeData=true with rowModel=serverSide, but you did not ' +\n                    'provide isServerSideGroup function, please provide isServerSideGroup function if using tree data.');\n            }\n            if (!this.gridOptionsService.exists('getServerSideGroupKey')) {\n                console.warn('AG Grid: property usingTreeData=true with rowModel=serverSide, but you did not ' +\n                    'provide getServerSideGroupKey function, please provide getServerSideGroupKey function if using tree data.');\n            }\n        }\n    };\n    __decorate$2u([\n        Autowired('gridOptions')\n    ], GridOptionsValidator.prototype, \"gridOptions\", void 0);\n    __decorate$2u([\n        Autowired('gridOptionsService')\n    ], GridOptionsValidator.prototype, \"gridOptionsService\", void 0);\n    __decorate$2u([\n        PostConstruct\n    ], GridOptionsValidator.prototype, \"init\", null);\n    GridOptionsValidator = __decorate$2u([\n        Bean('gridOptionsValidator')\n    ], GridOptionsValidator);\n    return GridOptionsValidator;\n}());\nfunction matchesGroupDisplayType(toMatch, supplied) {\n    var groupDisplayTypeValues = ['groupRows', 'multipleColumns', 'custom', 'singleColumn'];\n    if (groupDisplayTypeValues.indexOf(supplied) < 0) {\n        console.warn(\"AG Grid: '\" + supplied + \"' is not a valid groupDisplayType value - possible values are: '\" + groupDisplayTypeValues.join(\"', '\") + \"'\");\n        return false;\n    }\n    return supplied === toMatch;\n}\nfunction matchesTreeDataDisplayType(toMatch, supplied) {\n    var treeDataDisplayTypeValues = ['auto', 'custom'];\n    if (treeDataDisplayTypeValues.indexOf(supplied) < 0) {\n        console.warn(\"AG Grid: '\" + supplied + \"' is not a valid treeDataDisplayType value - possible values are: '\" + treeDataDisplayTypeValues.join(\"', '\") + \"'\");\n        return false;\n    }\n    return supplied === toMatch;\n}\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __decorate$2t = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar ColumnGroup = /** @class */ (function () {\n    function ColumnGroup(providedColumnGroup, groupId, partId, pinned) {\n        // depends on the open/closed state of the group, only displaying columns are stored here\n        this.displayedChildren = [];\n        this.localEventService = new EventService();\n        this.groupId = groupId;\n        this.partId = partId;\n        this.providedColumnGroup = providedColumnGroup;\n        this.pinned = pinned;\n    }\n    // this is static, a it is used outside of this class\n    ColumnGroup.createUniqueId = function (groupId, instanceId) {\n        return groupId + '_' + instanceId;\n    };\n    // as the user is adding and removing columns, the groups are recalculated.\n    // this reset clears out all children, ready for children to be added again\n    ColumnGroup.prototype.reset = function () {\n        this.parent = null;\n        this.children = null;\n        this.displayedChildren = null;\n    };\n    ColumnGroup.prototype.getParent = function () {\n        return this.parent;\n    };\n    ColumnGroup.prototype.setParent = function (parent) {\n        this.parent = parent;\n    };\n    ColumnGroup.prototype.getUniqueId = function () {\n        return ColumnGroup.createUniqueId(this.groupId, this.partId);\n    };\n    ColumnGroup.prototype.isEmptyGroup = function () {\n        return this.displayedChildren.length === 0;\n    };\n    ColumnGroup.prototype.isMoving = function () {\n        var allLeafColumns = this.getProvidedColumnGroup().getLeafColumns();\n        if (!allLeafColumns || allLeafColumns.length === 0) {\n            return false;\n        }\n        return allLeafColumns.every(function (col) { return col.isMoving(); });\n    };\n    ColumnGroup.prototype.checkLeft = function () {\n        // first get all children to setLeft, as it impacts our decision below\n        this.displayedChildren.forEach(function (child) {\n            if (child instanceof ColumnGroup) {\n                child.checkLeft();\n            }\n        });\n        // set our left based on first displayed column\n        if (this.displayedChildren.length > 0) {\n            if (this.gridOptionsService.is('enableRtl')) {\n                var lastChild = last(this.displayedChildren);\n                var lastChildLeft = lastChild.getLeft();\n                this.setLeft(lastChildLeft);\n            }\n            else {\n                var firstChildLeft = this.displayedChildren[0].getLeft();\n                this.setLeft(firstChildLeft);\n            }\n        }\n        else {\n            // this should never happen, as if we have no displayed columns, then\n            // this groups should not even exist.\n            this.setLeft(null);\n        }\n    };\n    ColumnGroup.prototype.getLeft = function () {\n        return this.left;\n    };\n    ColumnGroup.prototype.getOldLeft = function () {\n        return this.oldLeft;\n    };\n    ColumnGroup.prototype.setLeft = function (left) {\n        this.oldLeft = left;\n        if (this.left !== left) {\n            this.left = left;\n            this.localEventService.dispatchEvent(this.createAgEvent(ColumnGroup.EVENT_LEFT_CHANGED));\n        }\n    };\n    ColumnGroup.prototype.getPinned = function () {\n        return this.pinned;\n    };\n    ColumnGroup.prototype.createAgEvent = function (type) {\n        return { type: type };\n    };\n    ColumnGroup.prototype.addEventListener = function (eventType, listener) {\n        this.localEventService.addEventListener(eventType, listener);\n    };\n    ColumnGroup.prototype.removeEventListener = function (eventType, listener) {\n        this.localEventService.removeEventListener(eventType, listener);\n    };\n    ColumnGroup.prototype.getGroupId = function () {\n        return this.groupId;\n    };\n    ColumnGroup.prototype.getPartId = function () {\n        return this.partId;\n    };\n    ColumnGroup.prototype.isChildInThisGroupDeepSearch = function (wantedChild) {\n        var result = false;\n        this.children.forEach(function (foundChild) {\n            if (wantedChild === foundChild) {\n                result = true;\n            }\n            if (foundChild instanceof ColumnGroup) {\n                if (foundChild.isChildInThisGroupDeepSearch(wantedChild)) {\n                    result = true;\n                }\n            }\n        });\n        return result;\n    };\n    ColumnGroup.prototype.getActualWidth = function () {\n        var groupActualWidth = 0;\n        if (this.displayedChildren) {\n            this.displayedChildren.forEach(function (child) {\n                groupActualWidth += child.getActualWidth();\n            });\n        }\n        return groupActualWidth;\n    };\n    ColumnGroup.prototype.isResizable = function () {\n        if (!this.displayedChildren) {\n            return false;\n        }\n        // if at least one child is resizable, then the group is resizable\n        var result = false;\n        this.displayedChildren.forEach(function (child) {\n            if (child.isResizable()) {\n                result = true;\n            }\n        });\n        return result;\n    };\n    ColumnGroup.prototype.getMinWidth = function () {\n        var result = 0;\n        this.displayedChildren.forEach(function (groupChild) {\n            result += groupChild.getMinWidth() || 0;\n        });\n        return result;\n    };\n    ColumnGroup.prototype.addChild = function (child) {\n        if (!this.children) {\n            this.children = [];\n        }\n        this.children.push(child);\n    };\n    ColumnGroup.prototype.getDisplayedChildren = function () {\n        return this.displayedChildren;\n    };\n    ColumnGroup.prototype.getLeafColumns = function () {\n        var result = [];\n        this.addLeafColumns(result);\n        return result;\n    };\n    ColumnGroup.prototype.getDisplayedLeafColumns = function () {\n        var result = [];\n        this.addDisplayedLeafColumns(result);\n        return result;\n    };\n    ColumnGroup.prototype.getDefinition = function () {\n        return this.providedColumnGroup.getColGroupDef();\n    };\n    ColumnGroup.prototype.getColGroupDef = function () {\n        return this.providedColumnGroup.getColGroupDef();\n    };\n    ColumnGroup.prototype.isPadding = function () {\n        return this.providedColumnGroup.isPadding();\n    };\n    ColumnGroup.prototype.isExpandable = function () {\n        return this.providedColumnGroup.isExpandable();\n    };\n    ColumnGroup.prototype.isExpanded = function () {\n        return this.providedColumnGroup.isExpanded();\n    };\n    ColumnGroup.prototype.setExpanded = function (expanded) {\n        this.providedColumnGroup.setExpanded(expanded);\n    };\n    ColumnGroup.prototype.addDisplayedLeafColumns = function (leafColumns) {\n        this.displayedChildren.forEach(function (child) {\n            if (child instanceof Column) {\n                leafColumns.push(child);\n            }\n            else if (child instanceof ColumnGroup) {\n                child.addDisplayedLeafColumns(leafColumns);\n            }\n        });\n    };\n    ColumnGroup.prototype.addLeafColumns = function (leafColumns) {\n        this.children.forEach(function (child) {\n            if (child instanceof Column) {\n                leafColumns.push(child);\n            }\n            else if (child instanceof ColumnGroup) {\n                child.addLeafColumns(leafColumns);\n            }\n        });\n    };\n    ColumnGroup.prototype.getChildren = function () {\n        return this.children;\n    };\n    ColumnGroup.prototype.getColumnGroupShow = function () {\n        return this.providedColumnGroup.getColumnGroupShow();\n    };\n    ColumnGroup.prototype.getProvidedColumnGroup = function () {\n        return this.providedColumnGroup;\n    };\n    /** @deprecated v27 getOriginalColumnGroup is deprecated, use getProvidedColumnGroup. */\n    ColumnGroup.prototype.getOriginalColumnGroup = function () {\n        logDeprecation('27', 'getOriginalColumnGroup', 'getProvidedColumnGroup');\n        return this.getProvidedColumnGroup();\n    };\n    ColumnGroup.prototype.getPaddingLevel = function () {\n        var parent = this.getParent();\n        if (!this.isPadding() || !parent || !parent.isPadding()) {\n            return 0;\n        }\n        return 1 + parent.getPaddingLevel();\n    };\n    ColumnGroup.prototype.calculateDisplayedColumns = function () {\n        var _this = this;\n        // clear out last time we calculated\n        this.displayedChildren = [];\n        // find the column group that is controlling expandable. this is relevant when we have padding (empty)\n        // groups, where the expandable is actually the first parent that is not a padding group.\n        var parentWithExpansion = this;\n        while (parentWithExpansion != null && parentWithExpansion.isPadding()) {\n            parentWithExpansion = parentWithExpansion.getParent();\n        }\n        var isExpandable = parentWithExpansion ? parentWithExpansion.providedColumnGroup.isExpandable() : false;\n        // it not expandable, everything is visible\n        if (!isExpandable) {\n            this.displayedChildren = this.children;\n            this.localEventService.dispatchEvent(this.createAgEvent(ColumnGroup.EVENT_DISPLAYED_CHILDREN_CHANGED));\n            return;\n        }\n        // Add cols based on columnGroupShow\n        // Note - the below also adds padding groups, these are always added because they never have\n        // colDef.columnGroupShow set.\n        this.children.forEach(function (child) {\n            // never add empty groups\n            var emptyGroup = child instanceof ColumnGroup && (!child.displayedChildren || !child.displayedChildren.length);\n            if (emptyGroup) {\n                return;\n            }\n            var headerGroupShow = child.getColumnGroupShow();\n            switch (headerGroupShow) {\n                case 'open':\n                    // when set to open, only show col if group is open\n                    if (parentWithExpansion.providedColumnGroup.isExpanded()) {\n                        _this.displayedChildren.push(child);\n                    }\n                    break;\n                case 'closed':\n                    // when set to open, only show col if group is open\n                    if (!parentWithExpansion.providedColumnGroup.isExpanded()) {\n                        _this.displayedChildren.push(child);\n                    }\n                    break;\n                default:\n                    _this.displayedChildren.push(child);\n                    break;\n            }\n        });\n        this.localEventService.dispatchEvent(this.createAgEvent(ColumnGroup.EVENT_DISPLAYED_CHILDREN_CHANGED));\n    };\n    ColumnGroup.EVENT_LEFT_CHANGED = 'leftChanged';\n    ColumnGroup.EVENT_DISPLAYED_CHILDREN_CHANGED = 'displayedChildrenChanged';\n    __decorate$2t([\n        Autowired('gridOptionsService')\n    ], ColumnGroup.prototype, \"gridOptionsService\", void 0);\n    return ColumnGroup;\n}());\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\n// class returns unique instance id's for columns.\n// eg, the following calls (in this order) will result in:\n//\n// getInstanceIdForKey('country') => 0\n// getInstanceIdForKey('country') => 1\n// getInstanceIdForKey('country') => 2\n// getInstanceIdForKey('country') => 3\n// getInstanceIdForKey('age') => 0\n// getInstanceIdForKey('age') => 1\n// getInstanceIdForKey('country') => 4\nvar GroupInstanceIdCreator = /** @class */ (function () {\n    function GroupInstanceIdCreator() {\n        // this map contains keys to numbers, so we remember what the last call was\n        this.existingIds = {};\n    }\n    GroupInstanceIdCreator.prototype.getInstanceIdForKey = function (key) {\n        var lastResult = this.existingIds[key];\n        var result;\n        if (typeof lastResult !== 'number') {\n            // first time this key\n            result = 0;\n        }\n        else {\n            result = lastResult + 1;\n        }\n        this.existingIds[key] = result;\n        return result;\n    };\n    return GroupInstanceIdCreator;\n}());\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$2R = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$2s = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar GROUP_AUTO_COLUMN_ID = 'ag-Grid-AutoColumn';\nvar AutoGroupColService = /** @class */ (function (_super) {\n    __extends$2R(AutoGroupColService, _super);\n    function AutoGroupColService() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    AutoGroupColService.prototype.createAutoGroupColumns = function (existingCols, rowGroupColumns) {\n        var _this = this;\n        var groupAutoColumns = [];\n        var doingTreeData = this.gridOptionsService.isTreeData();\n        var doingMultiAutoColumn = this.gridOptionsService.isGroupMultiAutoColumn();\n        if (doingTreeData && doingMultiAutoColumn) {\n            console.warn('AG Grid: you cannot mix groupDisplayType = \"multipleColumns\" with treeData, only one column can be used to display groups when doing tree data');\n            doingMultiAutoColumn = false;\n        }\n        // if doing groupDisplayType = \"multipleColumns\", then we call the method multiple times, once\n        // for each column we are grouping by\n        if (doingMultiAutoColumn) {\n            rowGroupColumns.forEach(function (rowGroupCol, index) {\n                groupAutoColumns.push(_this.createOneAutoGroupColumn(existingCols, rowGroupCol, index));\n            });\n        }\n        else {\n            groupAutoColumns.push(this.createOneAutoGroupColumn(existingCols));\n        }\n        return groupAutoColumns;\n    };\n    // rowGroupCol and index are missing if groupDisplayType != \"multipleColumns\"\n    AutoGroupColService.prototype.createOneAutoGroupColumn = function (existingCols, rowGroupCol, index) {\n        // if one provided by user, use it, otherwise create one\n        var defaultAutoColDef = this.generateDefaultColDef(rowGroupCol);\n        // if doing multi, set the field\n        var colId;\n        if (rowGroupCol) {\n            colId = GROUP_AUTO_COLUMN_ID + \"-\" + rowGroupCol.getId();\n        }\n        else {\n            colId = GROUP_AUTO_COLUMN_ID;\n        }\n        var userAutoColDef = this.gridOptionsService.get('autoGroupColumnDef');\n        mergeDeep(defaultAutoColDef, userAutoColDef);\n        defaultAutoColDef = this.columnFactory.mergeColDefs(defaultAutoColDef);\n        defaultAutoColDef.colId = colId;\n        // For tree data the filter is always allowed\n        if (!this.gridOptionsService.isTreeData()) {\n            // we would only allow filter if the user has provided field or value getter. otherwise the filter\n            // would not be able to work.\n            var noFieldOrValueGetter = missing(defaultAutoColDef.field) &&\n                missing(defaultAutoColDef.valueGetter) &&\n                missing(defaultAutoColDef.filterValueGetter) &&\n                defaultAutoColDef.filter !== 'agGroupColumnFilter';\n            if (noFieldOrValueGetter) {\n                defaultAutoColDef.filter = false;\n            }\n        }\n        // if showing many cols, we don't want to show more than one with a checkbox for selection\n        if (index && index > 0) {\n            defaultAutoColDef.headerCheckboxSelection = false;\n        }\n        var existingCol = existingCols.find(function (col) { return col.getId() == colId; });\n        if (existingCol) {\n            existingCol.setColDef(defaultAutoColDef, null);\n            this.columnFactory.applyColumnState(existingCol, defaultAutoColDef);\n            return existingCol;\n        }\n        var isSortingCoupled = this.gridOptionsService.isColumnsSortingCoupledToGroup();\n        if (isSortingCoupled && (defaultAutoColDef.sort || defaultAutoColDef.initialSort) && !defaultAutoColDef.field) {\n            // if no field, then this column cannot hold its own sort state\n            mergeDeep(defaultAutoColDef, { sort: null, initialSort: null }, true, true);\n        }\n        var newCol = new Column(defaultAutoColDef, null, colId, true);\n        this.context.createBean(newCol);\n        return newCol;\n    };\n    AutoGroupColService.prototype.generateDefaultColDef = function (rowGroupCol) {\n        var userDef = this.gridOptionsService.get('autoGroupColumnDef');\n        var localeTextFunc = this.localeService.getLocaleTextFunc();\n        var res = {\n            headerName: localeTextFunc('group', 'Group')\n        };\n        var userHasProvidedGroupCellRenderer = userDef &&\n            (userDef.cellRenderer || userDef.cellRendererFramework || userDef.cellRendererSelector);\n        // only add the default group cell renderer if user hasn't provided one\n        if (!userHasProvidedGroupCellRenderer) {\n            res.cellRenderer = 'agGroupCellRenderer';\n        }\n        // we never allow moving the group column\n        // defaultAutoColDef.suppressMovable = true;\n        if (rowGroupCol) {\n            var colDef = rowGroupCol.getColDef();\n            Object.assign(res, {\n                // cellRendererParams.groupKey: colDefToCopy.field;\n                headerName: this.columnModel.getDisplayNameForColumn(rowGroupCol, 'header'),\n                headerValueGetter: colDef.headerValueGetter\n            });\n            if (colDef.cellRenderer || colDef.cellRendererFramework) {\n                Object.assign(res, {\n                    cellRendererParams: {\n                        innerRenderer: colDef.cellRenderer,\n                        innerRendererFramework: colDef.cellRendererFramework,\n                        innerRendererParams: colDef.cellRendererParams\n                    }\n                });\n            }\n            res.showRowGroup = rowGroupCol.getColId();\n        }\n        else {\n            res.showRowGroup = true;\n        }\n        return res;\n    };\n    __decorate$2s([\n        Autowired('columnModel')\n    ], AutoGroupColService.prototype, \"columnModel\", void 0);\n    __decorate$2s([\n        Autowired('columnFactory')\n    ], AutoGroupColService.prototype, \"columnFactory\", void 0);\n    AutoGroupColService = __decorate$2s([\n        Bean('autoGroupColService')\n    ], AutoGroupColService);\n    return AutoGroupColService;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar reUnescapedHtml = /[&<>\"']/g;\n/**\n * HTML Escapes.\n */\nvar HTML_ESCAPES = {\n    '&': '&amp;',\n    '<': '&lt;',\n    '>': '&gt;',\n    '\"': '&quot;',\n    \"'\": '&#39;'\n};\n/**\n * It encodes any string in UTF-8 format\n * taken from https://github.com/mathiasbynens/utf8.js\n * @param {string} s\n * @returns {string}\n */\nfunction utf8_encode(s) {\n    var stringFromCharCode = String.fromCharCode;\n    function ucs2decode(string) {\n        var output = [];\n        if (!string) {\n            return [];\n        }\n        var len = string.length;\n        var counter = 0;\n        var value;\n        var extra;\n        while (counter < len) {\n            value = string.charCodeAt(counter++);\n            if (value >= 0xD800 && value <= 0xDBFF && counter < len) {\n                // high surrogate, and there is a next character\n                extra = string.charCodeAt(counter++);\n                if ((extra & 0xFC00) == 0xDC00) { // low surrogate\n                    output.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n                }\n                else {\n                    // unmatched surrogate; only append this code unit, in case the next\n                    // code unit is the high surrogate of a surrogate pair\n                    output.push(value);\n                    counter--;\n                }\n            }\n            else {\n                output.push(value);\n            }\n        }\n        return output;\n    }\n    function checkScalarValue(point) {\n        if (point >= 0xD800 && point <= 0xDFFF) {\n            throw Error('Lone surrogate U+' + point.toString(16).toUpperCase() +\n                ' is not a scalar value');\n        }\n    }\n    function createByte(point, shift) {\n        return stringFromCharCode(((point >> shift) & 0x3F) | 0x80);\n    }\n    function encodeCodePoint(point) {\n        if ((point >= 0 && point <= 31 && point !== 10)) {\n            var convertedCode = point.toString(16).toUpperCase();\n            var paddedCode = convertedCode.padStart(4, '0');\n            return \"_x\" + paddedCode + \"_\";\n        }\n        if ((point & 0xFFFFFF80) == 0) { // 1-byte sequence\n            return stringFromCharCode(point);\n        }\n        var symbol = '';\n        if ((point & 0xFFFFF800) == 0) { // 2-byte sequence\n            symbol = stringFromCharCode(((point >> 6) & 0x1F) | 0xC0);\n        }\n        else if ((point & 0xFFFF0000) == 0) { // 3-byte sequence\n            checkScalarValue(point);\n            symbol = stringFromCharCode(((point >> 12) & 0x0F) | 0xE0);\n            symbol += createByte(point, 6);\n        }\n        else if ((point & 0xFFE00000) == 0) { // 4-byte sequence\n            symbol = stringFromCharCode(((point >> 18) & 0x07) | 0xF0);\n            symbol += createByte(point, 12);\n            symbol += createByte(point, 6);\n        }\n        symbol += stringFromCharCode((point & 0x3F) | 0x80);\n        return symbol;\n    }\n    var codePoints = ucs2decode(s);\n    var length = codePoints.length;\n    var index = -1;\n    var codePoint;\n    var byteString = '';\n    while (++index < length) {\n        codePoint = codePoints[index];\n        byteString += encodeCodePoint(codePoint);\n    }\n    return byteString;\n}\nfunction capitalise(str) {\n    return str[0].toUpperCase() + str.substr(1).toLowerCase();\n}\nfunction escapeString(toEscape, skipEscapingHtmlChars) {\n    if (toEscape == null) {\n        return null;\n    }\n    // we call toString() twice, in case value is an object, where user provides\n    // a toString() method, and first call to toString() returns back something other\n    // than a string (eg a number to render)\n    var stringResult = toEscape.toString().toString();\n    if (skipEscapingHtmlChars) {\n        return stringResult;\n    }\n    // in react we don't need to escape html characters, as it's done by the framework\n    return stringResult.replace(reUnescapedHtml, function (chr) { return HTML_ESCAPES[chr]; });\n}\n/**\n * Converts a camelCase string into startCase\n * @param {string} camelCase\n * @return {string}\n */\nfunction camelCaseToHumanText(camelCase) {\n    if (!camelCase || camelCase == null) {\n        return null;\n    }\n    // either split on a lowercase followed by uppercase ie  asHereTo -> as Here To\n    var rex = /([a-z])([A-Z])/g;\n    // or starts with uppercase and we take all expect the last which is assumed to be part of next word if followed by lowercase HEREToThere -> HERE To There\n    var rexCaps = /([A-Z]+)([A-Z])([a-z])/g;\n    var words = camelCase\n        .replace(rex, '$1 $2')\n        .replace(rexCaps, '$1 $2$3')\n        .replace(/\\./g, ' ')\n        .split(' ');\n    return words.map(function (word) { return word.substring(0, 1).toUpperCase() + ((word.length > 1) ? word.substring(1, word.length) : ''); }).join(' ');\n}\n\nvar StringUtils = /*#__PURE__*/Object.freeze({\n    __proto__: null,\n    utf8_encode: utf8_encode,\n    capitalise: capitalise,\n    escapeString: escapeString,\n    camelCaseToHumanText: camelCaseToHumanText\n});\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nfunction convertToMap(arr) {\n    var map = new Map();\n    arr.forEach(function (pair) { return map.set(pair[0], pair[1]); });\n    return map;\n}\n// handy for organising a list into a map, where each item is mapped by an attribute, eg mapping Columns by ID\nfunction mapById(arr, callback) {\n    var map = new Map();\n    arr.forEach(function (item) { return map.set(callback(item), item); });\n    return map;\n}\nfunction keys(map) {\n    var arr = [];\n    map.forEach(function (_, key) { return arr.push(key); });\n    return arr;\n}\n\nvar MapUtils = /*#__PURE__*/Object.freeze({\n    __proto__: null,\n    convertToMap: convertToMap,\n    mapById: mapById,\n    keys: keys\n});\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$2Q = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$2r = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __param$8 = (undefined && undefined.__param) || function (paramIndex, decorator) {\n    return function (target, key) { decorator(target, key, paramIndex); }\n};\nvar __rest = (undefined && undefined.__rest) || function (s, e) {\n    var t = {};\n    for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n        t[p] = s[p];\n    if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n        for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n            if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n                t[p[i]] = s[p[i]];\n        }\n    return t;\n};\nvar __values$6 = (undefined && undefined.__values) || function(o) {\n    var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n    if (m) return m.call(o);\n    if (o && typeof o.length === \"number\") return {\n        next: function () {\n            if (o && i >= o.length) o = void 0;\n            return { value: o && o[i++], done: !o };\n        }\n    };\n    throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nvar __read$q = (undefined && undefined.__read) || function (o, n) {\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n    if (!m) return o;\n    var i = m.call(o), r, ar = [], e;\n    try {\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n    }\n    catch (error) { e = { error: error }; }\n    finally {\n        try {\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\n        }\n        finally { if (e) throw e.error; }\n    }\n    return ar;\n};\nvar __spread$k = (undefined && undefined.__spread) || function () {\n    for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read$q(arguments[i]));\n    return ar;\n};\nvar ColumnModel = /** @class */ (function (_super) {\n    __extends$2Q(ColumnModel, _super);\n    function ColumnModel() {\n        var _this = _super !== null && _super.apply(this, arguments) || this;\n        // header row count, based on user provided columns\n        _this.primaryHeaderRowCount = 0;\n        _this.secondaryHeaderRowCount = 0;\n        // header row count, either above, or based on pivoting if we are pivoting\n        _this.gridHeaderRowCount = 0;\n        // leave level columns of the displayed trees\n        _this.displayedColumnsLeft = [];\n        _this.displayedColumnsRight = [];\n        _this.displayedColumnsCenter = [];\n        // all three lists above combined\n        _this.displayedColumns = [];\n        // for fast lookup, to see if a column or group is still displayed\n        _this.displayedColumnsAndGroupsMap = {};\n        // all columns to be rendered\n        _this.viewportColumns = [];\n        // A hash key to keep track of changes in viewport columns\n        _this.viewportColumnsHash = '';\n        // same as viewportColumns, except we always include columns with headerAutoHeight\n        _this.headerViewportColumns = [];\n        // all columns to be rendered in the centre\n        _this.viewportColumnsCenter = [];\n        // same as viewportColumnsCenter, except we always include columns with headerAutoHeight\n        _this.headerViewportColumnsCenter = [];\n        _this.autoHeightActiveAtLeastOnce = false;\n        _this.rowGroupColumns = [];\n        _this.valueColumns = [];\n        _this.pivotColumns = [];\n        _this.ready = false;\n        _this.autoGroupsNeedBuilding = false;\n        _this.forceRecreateAutoGroups = false;\n        _this.pivotMode = false;\n        _this.bodyWidth = 0;\n        _this.leftWidth = 0;\n        _this.rightWidth = 0;\n        _this.bodyWidthDirty = true;\n        return _this;\n    }\n    ColumnModel.prototype.init = function () {\n        var _this = this;\n        this.suppressColumnVirtualisation = this.gridOptionsService.is('suppressColumnVirtualisation');\n        var pivotMode = this.gridOptionsService.is('pivotMode');\n        if (this.isPivotSettingAllowed(pivotMode)) {\n            this.pivotMode = pivotMode;\n        }\n        this.usingTreeData = this.gridOptionsService.isTreeData();\n        this.addManagedPropertyListener('groupDisplayType', function () { return _this.onAutoGroupColumnDefChanged(); });\n        this.addManagedPropertyListener('autoGroupColumnDef', function () { return _this.onAutoGroupColumnDefChanged(); });\n        this.addManagedPropertyListener('defaultColDef', function (params) { return _this.onSharedColDefChanged(params.source); });\n        this.addManagedPropertyListener('columnTypes', function (params) { return _this.onSharedColDefChanged(params.source); });\n    };\n    ColumnModel.prototype.onAutoGroupColumnDefChanged = function () {\n        this.autoGroupsNeedBuilding = true;\n        this.forceRecreateAutoGroups = true;\n        this.updateGridColumns();\n        this.updateDisplayedColumns('gridOptionsChanged');\n    };\n    ColumnModel.prototype.onSharedColDefChanged = function (source) {\n        if (source === void 0) { source = 'api'; }\n        // likewise for autoGroupCol, the default col def impacts this\n        this.forceRecreateAutoGroups = true;\n        this.createColumnsFromColumnDefs(true, source);\n    };\n    ColumnModel.prototype.setColumnDefs = function (columnDefs, source) {\n        if (source === void 0) { source = 'api'; }\n        var colsPreviouslyExisted = !!this.columnDefs;\n        this.columnDefs = columnDefs;\n        this.createColumnsFromColumnDefs(colsPreviouslyExisted, source);\n    };\n    ColumnModel.prototype.destroyOldColumns = function (oldTree, newTree) {\n        var oldObjectsById = {};\n        if (!oldTree) {\n            return;\n        }\n        // add in all old columns to be destroyed\n        this.columnUtils.depthFirstOriginalTreeSearch(null, oldTree, function (child) {\n            oldObjectsById[child.getInstanceId()] = child;\n        });\n        // however we don't destroy anything in the new tree. if destroying the grid, there is no new tree\n        if (newTree) {\n            this.columnUtils.depthFirstOriginalTreeSearch(null, newTree, function (child) {\n                oldObjectsById[child.getInstanceId()] = null;\n            });\n        }\n        // what's left can be destroyed\n        var colsToDestroy = Object.values(oldObjectsById).filter(function (item) { return item != null; });\n        this.destroyBeans(colsToDestroy);\n    };\n    ColumnModel.prototype.destroyColumns = function () {\n        this.destroyOldColumns(this.primaryColumnTree);\n        this.destroyOldColumns(this.secondaryBalancedTree);\n        this.destroyOldColumns(this.groupAutoColsBalancedTree);\n    };\n    ColumnModel.prototype.createColumnsFromColumnDefs = function (colsPreviouslyExisted, source) {\n        var _this = this;\n        if (source === void 0) { source = 'api'; }\n        // only need to dispatch before/after events if updating columns, never if setting columns for first time\n        var dispatchEventsFunc = colsPreviouslyExisted ? this.compareColumnStatesAndDispatchEvents(source) : undefined;\n        // always invalidate cache on changing columns, as the column id's for the new columns\n        // could overlap with the old id's, so the cache would return old values for new columns.\n        this.valueCache.expire();\n        // NOTE ==================\n        // we should be destroying the existing columns and groups if they exist, for example, the original column\n        // group adds a listener to the columns, it should be also removing the listeners\n        this.autoGroupsNeedBuilding = true;\n        var oldPrimaryColumns = this.primaryColumns;\n        var oldPrimaryTree = this.primaryColumnTree;\n        var balancedTreeResult = this.columnFactory.createColumnTree(this.columnDefs, true, oldPrimaryTree);\n        this.destroyOldColumns(this.primaryColumnTree, balancedTreeResult.columnTree);\n        this.primaryColumnTree = balancedTreeResult.columnTree;\n        this.primaryHeaderRowCount = balancedTreeResult.treeDept + 1;\n        this.primaryColumns = this.getColumnsFromTree(this.primaryColumnTree);\n        this.primaryColumnsMap = {};\n        this.primaryColumns.forEach(function (col) { return _this.primaryColumnsMap[col.getId()] = col; });\n        this.extractRowGroupColumns(source, oldPrimaryColumns);\n        this.extractPivotColumns(source, oldPrimaryColumns);\n        this.extractValueColumns(source, oldPrimaryColumns);\n        this.ready = true;\n        // if we are showing secondary columns, then no need to update grid columns\n        // at this point, as it's the pivot service responsibility to change these\n        // if we are no longer pivoting (ie and need to revert back to primary, otherwise\n        // we shouldn't be touching the primary).\n        var gridColsNotProcessed = this.gridColsArePrimary === undefined;\n        var processGridCols = this.gridColsArePrimary || gridColsNotProcessed;\n        if (processGridCols) {\n            this.updateGridColumns();\n            if (colsPreviouslyExisted && !this.gridOptionsService.is('maintainColumnOrder')) {\n                this.orderGridColumnsLikePrimary();\n            }\n            this.updateDisplayedColumns(source);\n            this.checkViewportColumns();\n        }\n        // this event is not used by AG Grid, but left here for backwards compatibility,\n        // in case applications use it\n        this.dispatchEverythingChanged(source);\n        if (dispatchEventsFunc) {\n            dispatchEventsFunc();\n        }\n        this.dispatchNewColumnsLoaded();\n    };\n    ColumnModel.prototype.dispatchNewColumnsLoaded = function () {\n        var newColumnsLoadedEvent = {\n            type: Events.EVENT_NEW_COLUMNS_LOADED\n        };\n        this.eventService.dispatchEvent(newColumnsLoadedEvent);\n    };\n    // this event is legacy, no grid code listens to it. instead the grid listens to New Columns Loaded\n    ColumnModel.prototype.dispatchEverythingChanged = function (source) {\n        if (source === void 0) { source = 'api'; }\n        var eventEverythingChanged = {\n            type: Events.EVENT_COLUMN_EVERYTHING_CHANGED,\n            source: source\n        };\n        this.eventService.dispatchEvent(eventEverythingChanged);\n    };\n    ColumnModel.prototype.orderGridColumnsLikePrimary = function () {\n        var _this = this;\n        var primaryColumns = this.primaryColumns;\n        if (!primaryColumns) {\n            return;\n        }\n        this.gridColumns.sort(function (colA, colB) {\n            var primaryIndexA = primaryColumns.indexOf(colA);\n            var primaryIndexB = primaryColumns.indexOf(colB);\n            // if both cols are present in primary, then we just return the position,\n            // so position is maintained.\n            var indexAPresent = primaryIndexA >= 0;\n            var indexBPresent = primaryIndexB >= 0;\n            if (indexAPresent && indexBPresent) {\n                return primaryIndexA - primaryIndexB;\n            }\n            if (indexAPresent) {\n                // B is auto group column, so put B first\n                return 1;\n            }\n            if (indexBPresent) {\n                // A is auto group column, so put A first\n                return -1;\n            }\n            // otherwise both A and B are auto-group columns. so we just keep the order\n            // as they were already in.\n            var gridIndexA = _this.gridColumns.indexOf(colA);\n            var gridIndexB = _this.gridColumns.indexOf(colB);\n            return gridIndexA - gridIndexB;\n        });\n        this.gridColumns = this.placeLockedColumns(this.gridColumns);\n    };\n    ColumnModel.prototype.getAllDisplayedAutoHeightCols = function () {\n        return this.displayedAutoHeightCols;\n    };\n    ColumnModel.prototype.setViewport = function () {\n        if (this.gridOptionsService.is('enableRtl')) {\n            this.viewportLeft = this.bodyWidth - this.scrollPosition - this.scrollWidth;\n            this.viewportRight = this.bodyWidth - this.scrollPosition;\n        }\n        else {\n            this.viewportLeft = this.scrollPosition;\n            this.viewportRight = this.scrollWidth + this.scrollPosition;\n        }\n    };\n    // used by clipboard service, to know what columns to paste into\n    ColumnModel.prototype.getDisplayedColumnsStartingAt = function (column) {\n        var currentColumn = column;\n        var columns = [];\n        while (currentColumn != null) {\n            columns.push(currentColumn);\n            currentColumn = this.getDisplayedColAfter(currentColumn);\n        }\n        return columns;\n    };\n    // checks what columns are currently displayed due to column virtualisation. dispatches an event\n    // if the list of columns has changed.\n    // + setColumnWidth(), setViewportPosition(), setColumnDefs(), sizeColumnsToFit()\n    ColumnModel.prototype.checkViewportColumns = function () {\n        // check displayCenterColumnTree exists first, as it won't exist when grid is initialising\n        if (this.displayedColumnsCenter == null) {\n            return;\n        }\n        var viewportColumnsChanged = this.extractViewport();\n        if (!viewportColumnsChanged) {\n            return;\n        }\n        var event = {\n            type: Events.EVENT_VIRTUAL_COLUMNS_CHANGED\n        };\n        this.eventService.dispatchEvent(event);\n    };\n    ColumnModel.prototype.setViewportPosition = function (scrollWidth, scrollPosition) {\n        if (scrollWidth !== this.scrollWidth || scrollPosition !== this.scrollPosition || this.bodyWidthDirty) {\n            this.scrollWidth = scrollWidth;\n            this.scrollPosition = scrollPosition;\n            // we need to call setVirtualViewportLeftAndRight() at least once after the body width changes,\n            // as the viewport can stay the same, but in RTL, if body width changes, we need to work out the\n            // virtual columns again\n            this.bodyWidthDirty = true;\n            this.setViewport();\n            if (this.ready) {\n                this.checkViewportColumns();\n            }\n        }\n    };\n    ColumnModel.prototype.isPivotMode = function () {\n        return this.pivotMode;\n    };\n    ColumnModel.prototype.isPivotSettingAllowed = function (pivot) {\n        if (pivot && this.gridOptionsService.isTreeData()) {\n            console.warn(\"AG Grid: Pivot mode not available in conjunction Tree Data i.e. 'gridOptions.treeData: true'\");\n            return false;\n        }\n        return true;\n    };\n    ColumnModel.prototype.setPivotMode = function (pivotMode, source) {\n        if (source === void 0) { source = 'api'; }\n        if (pivotMode === this.pivotMode || !this.isPivotSettingAllowed(this.pivotMode)) {\n            return;\n        }\n        this.pivotMode = pivotMode;\n        // we need to update grid columns to cover the scenario where user has groupDisplayType = 'custom', as\n        // this means we don't use auto group column UNLESS we are in pivot mode (it's mandatory in pivot mode),\n        // so need to updateGridColumn() to check it autoGroupCol needs to be added / removed\n        this.autoGroupsNeedBuilding = true;\n        this.updateGridColumns();\n        this.updateDisplayedColumns(source);\n        var event = {\n            type: Events.EVENT_COLUMN_PIVOT_MODE_CHANGED\n        };\n        this.eventService.dispatchEvent(event);\n    };\n    ColumnModel.prototype.getSecondaryPivotColumn = function (pivotKeys, valueColKey) {\n        if (missing(this.secondaryColumns)) {\n            return null;\n        }\n        var valueColumnToFind = this.getPrimaryColumn(valueColKey);\n        var foundColumn = null;\n        this.secondaryColumns.forEach(function (column) {\n            var thisPivotKeys = column.getColDef().pivotKeys;\n            var pivotValueColumn = column.getColDef().pivotValueColumn;\n            var pivotKeyMatches = areEqual(thisPivotKeys, pivotKeys);\n            var pivotValueMatches = pivotValueColumn === valueColumnToFind;\n            if (pivotKeyMatches && pivotValueMatches) {\n                foundColumn = column;\n            }\n        });\n        return foundColumn;\n    };\n    ColumnModel.prototype.setBeans = function (loggerFactory) {\n        this.logger = loggerFactory.create('columnModel');\n    };\n    ColumnModel.prototype.setFirstRightAndLastLeftPinned = function (source) {\n        var lastLeft;\n        var firstRight;\n        if (this.gridOptionsService.is('enableRtl')) {\n            lastLeft = this.displayedColumnsLeft ? this.displayedColumnsLeft[0] : null;\n            firstRight = this.displayedColumnsRight ? last(this.displayedColumnsRight) : null;\n        }\n        else {\n            lastLeft = this.displayedColumnsLeft ? last(this.displayedColumnsLeft) : null;\n            firstRight = this.displayedColumnsRight ? this.displayedColumnsRight[0] : null;\n        }\n        this.gridColumns.forEach(function (column) {\n            column.setLastLeftPinned(column === lastLeft, source);\n            column.setFirstRightPinned(column === firstRight, source);\n        });\n    };\n    ColumnModel.prototype.autoSizeColumns = function (params) {\n        var _this = this;\n        var columns = params.columns, skipHeader = params.skipHeader, skipHeaderGroups = params.skipHeaderGroups, stopAtGroup = params.stopAtGroup, _a = params.source, source = _a === void 0 ? 'api' : _a;\n        // because of column virtualisation, we can only do this function on columns that are\n        // actually rendered, as non-rendered columns (outside the viewport and not rendered\n        // due to column virtualisation) are not present. this can result in all rendered columns\n        // getting narrowed, which in turn introduces more rendered columns on the RHS which\n        // did not get autosized in the original run, leaving the visible grid with columns on\n        // the LHS sized, but RHS no. so we keep looping through the visible columns until\n        // no more cols are available (rendered) to be resized\n        // we autosize after animation frames finish in case any cell renderers need to complete first. this can\n        // happen eg if client code is calling api.autoSizeAllColumns() straight after grid is initialised, but grid\n        // hasn't fully drawn out all the cells yet (due to cell renderers in animation frames).\n        this.animationFrameService.flushAllFrames();\n        // keep track of which cols we have resized in here\n        var columnsAutosized = [];\n        // initialise with anything except 0 so that while loop executes at least once\n        var changesThisTimeAround = -1;\n        var shouldSkipHeader = skipHeader != null ? skipHeader : this.gridOptionsService.is('skipHeaderOnAutoSize');\n        var shouldSkipHeaderGroups = skipHeaderGroups != null ? skipHeaderGroups : shouldSkipHeader;\n        while (changesThisTimeAround !== 0) {\n            changesThisTimeAround = 0;\n            this.actionOnGridColumns(columns, function (column) {\n                // if already autosized, skip it\n                if (columnsAutosized.indexOf(column) >= 0) {\n                    return false;\n                }\n                // get how wide this col should be\n                var preferredWidth = _this.autoWidthCalculator.getPreferredWidthForColumn(column, shouldSkipHeader);\n                // preferredWidth = -1 if this col is not on the screen\n                if (preferredWidth > 0) {\n                    var newWidth = _this.normaliseColumnWidth(column, preferredWidth);\n                    column.setActualWidth(newWidth, source);\n                    columnsAutosized.push(column);\n                    changesThisTimeAround++;\n                }\n                return true;\n            }, source);\n        }\n        if (!shouldSkipHeaderGroups) {\n            this.autoSizeColumnGroupsByColumns(columns, source, stopAtGroup);\n        }\n        this.dispatchColumnResizedEvent(columnsAutosized, true, 'autosizeColumns');\n    };\n    ColumnModel.prototype.dispatchColumnResizedEvent = function (columns, finished, source, flexColumns) {\n        if (flexColumns === void 0) { flexColumns = null; }\n        if (columns && columns.length) {\n            var event_1 = {\n                type: Events.EVENT_COLUMN_RESIZED,\n                columns: columns,\n                column: columns.length === 1 ? columns[0] : null,\n                flexColumns: flexColumns,\n                finished: finished,\n                source: source\n            };\n            this.eventService.dispatchEvent(event_1);\n        }\n    };\n    ColumnModel.prototype.dispatchColumnChangedEvent = function (type, columns, source) {\n        var event = {\n            type: type,\n            columns: columns,\n            column: (columns && columns.length == 1) ? columns[0] : null,\n            source: source\n        };\n        this.eventService.dispatchEvent(event);\n    };\n    ColumnModel.prototype.dispatchColumnMovedEvent = function (params) {\n        var movedColumns = params.movedColumns, source = params.source, toIndex = params.toIndex, finished = params.finished;\n        var event = {\n            type: Events.EVENT_COLUMN_MOVED,\n            columns: movedColumns,\n            column: movedColumns && movedColumns.length === 1 ? movedColumns[0] : null,\n            toIndex: toIndex,\n            finished: finished,\n            source: source\n        };\n        this.eventService.dispatchEvent(event);\n    };\n    ColumnModel.prototype.dispatchColumnPinnedEvent = function (changedColumns, source) {\n        if (!changedColumns.length) {\n            return;\n        }\n        // if just one column, we use this, otherwise we don't include the col\n        var column = changedColumns.length === 1 ? changedColumns[0] : null;\n        // only include visible if it's common in all columns\n        var pinned = this.getCommonValue(changedColumns, function (col) { return col.getPinned(); });\n        var event = {\n            type: Events.EVENT_COLUMN_PINNED,\n            // mistake in typing, 'undefined' should be allowed, as 'null' means 'not pinned'\n            pinned: pinned != null ? pinned : null,\n            columns: changedColumns,\n            column: column,\n            source: source\n        };\n        this.eventService.dispatchEvent(event);\n    };\n    ColumnModel.prototype.dispatchColumnVisibleEvent = function (changedColumns, source) {\n        if (!changedColumns.length) {\n            return;\n        }\n        // if just one column, we use this, otherwise we don't include the col\n        var column = changedColumns.length === 1 ? changedColumns[0] : null;\n        // only include visible if it's common in all columns\n        var visible = this.getCommonValue(changedColumns, function (col) { return col.isVisible(); });\n        var event = {\n            type: Events.EVENT_COLUMN_VISIBLE,\n            visible: visible,\n            columns: changedColumns,\n            column: column,\n            source: source\n        };\n        this.eventService.dispatchEvent(event);\n    };\n    ColumnModel.prototype.autoSizeColumn = function (key, skipHeader, source) {\n        if (source === void 0) { source = \"api\"; }\n        if (key) {\n            this.autoSizeColumns({ columns: [key], skipHeader: skipHeader, skipHeaderGroups: true, source: source });\n        }\n    };\n    ColumnModel.prototype.autoSizeColumnGroupsByColumns = function (keys, source, stopAtGroup) {\n        var e_1, _a, e_2, _b;\n        var columnGroups = new Set();\n        var columns = this.getGridColumns(keys);\n        columns.forEach(function (col) {\n            var parent = col.getParent();\n            while (parent && parent != stopAtGroup) {\n                if (!parent.isPadding()) {\n                    columnGroups.add(parent);\n                }\n                parent = parent.getParent();\n            }\n        });\n        var headerGroupCtrl;\n        var resizedColumns = [];\n        try {\n            for (var columnGroups_1 = __values$6(columnGroups), columnGroups_1_1 = columnGroups_1.next(); !columnGroups_1_1.done; columnGroups_1_1 = columnGroups_1.next()) {\n                var columnGroup = columnGroups_1_1.value;\n                try {\n                    for (var _c = (e_2 = void 0, __values$6(this.ctrlsService.getHeaderRowContainerCtrls())), _d = _c.next(); !_d.done; _d = _c.next()) {\n                        var headerContainerCtrl = _d.value;\n                        headerGroupCtrl = headerContainerCtrl.getHeaderCtrlForColumn(columnGroup);\n                        if (headerGroupCtrl) {\n                            break;\n                        }\n                    }\n                }\n                catch (e_2_1) { e_2 = { error: e_2_1 }; }\n                finally {\n                    try {\n                        if (_d && !_d.done && (_b = _c.return)) _b.call(_c);\n                    }\n                    finally { if (e_2) throw e_2.error; }\n                }\n                if (headerGroupCtrl) {\n                    headerGroupCtrl.resizeLeafColumnsToFit(source);\n                }\n            }\n        }\n        catch (e_1_1) { e_1 = { error: e_1_1 }; }\n        finally {\n            try {\n                if (columnGroups_1_1 && !columnGroups_1_1.done && (_a = columnGroups_1.return)) _a.call(columnGroups_1);\n            }\n            finally { if (e_1) throw e_1.error; }\n        }\n        return resizedColumns;\n    };\n    ColumnModel.prototype.autoSizeAllColumns = function (skipHeader, source) {\n        if (source === void 0) { source = \"api\"; }\n        var allDisplayedColumns = this.getAllDisplayedColumns();\n        this.autoSizeColumns({ columns: allDisplayedColumns, skipHeader: skipHeader, source: source });\n    };\n    // Possible candidate for reuse (alot of recursive traversal duplication)\n    ColumnModel.prototype.getColumnsFromTree = function (rootColumns) {\n        var result = [];\n        var recursiveFindColumns = function (childColumns) {\n            for (var i = 0; i < childColumns.length; i++) {\n                var child = childColumns[i];\n                if (child instanceof Column) {\n                    result.push(child);\n                }\n                else if (child instanceof ProvidedColumnGroup) {\n                    recursiveFindColumns(child.getChildren());\n                }\n            }\n        };\n        recursiveFindColumns(rootColumns);\n        return result;\n    };\n    ColumnModel.prototype.getAllDisplayedTrees = function () {\n        if (this.displayedTreeLeft && this.displayedTreeRight && this.displayedTreeCentre) {\n            return this.displayedTreeLeft\n                .concat(this.displayedTreeCentre)\n                .concat(this.displayedTreeRight);\n        }\n        return null;\n    };\n    // + columnSelectPanel\n    ColumnModel.prototype.getPrimaryColumnTree = function () {\n        return this.primaryColumnTree;\n    };\n    // + gridPanel -> for resizing the body and setting top margin\n    ColumnModel.prototype.getHeaderRowCount = function () {\n        return this.gridHeaderRowCount;\n    };\n    // + headerRenderer -> setting pinned body width\n    ColumnModel.prototype.getDisplayedTreeLeft = function () {\n        return this.displayedTreeLeft;\n    };\n    // + headerRenderer -> setting pinned body width\n    ColumnModel.prototype.getDisplayedTreeRight = function () {\n        return this.displayedTreeRight;\n    };\n    // + headerRenderer -> setting pinned body width\n    ColumnModel.prototype.getDisplayedTreeCentre = function () {\n        return this.displayedTreeCentre;\n    };\n    // gridPanel -> ensureColumnVisible\n    ColumnModel.prototype.isColumnDisplayed = function (column) {\n        return this.getAllDisplayedColumns().indexOf(column) >= 0;\n    };\n    // + csvCreator\n    ColumnModel.prototype.getAllDisplayedColumns = function () {\n        return this.displayedColumns;\n    };\n    ColumnModel.prototype.getViewportColumns = function () {\n        return this.viewportColumns;\n    };\n    ColumnModel.prototype.getDisplayedLeftColumnsForRow = function (rowNode) {\n        if (!this.colSpanActive) {\n            return this.displayedColumnsLeft;\n        }\n        return this.getDisplayedColumnsForRow(rowNode, this.displayedColumnsLeft);\n    };\n    ColumnModel.prototype.getDisplayedRightColumnsForRow = function (rowNode) {\n        if (!this.colSpanActive) {\n            return this.displayedColumnsRight;\n        }\n        return this.getDisplayedColumnsForRow(rowNode, this.displayedColumnsRight);\n    };\n    ColumnModel.prototype.isColSpanActive = function () {\n        return this.colSpanActive;\n    };\n    ColumnModel.prototype.getDisplayedColumnsForRow = function (rowNode, displayedColumns, filterCallback, emptySpaceBeforeColumn) {\n        var result = [];\n        var lastConsideredCol = null;\n        var _loop_1 = function (i) {\n            var col = displayedColumns[i];\n            var maxAllowedColSpan = displayedColumns.length - i;\n            var colSpan = Math.min(col.getColSpan(rowNode), maxAllowedColSpan);\n            var columnsToCheckFilter = [col];\n            if (colSpan > 1) {\n                var colsToRemove = colSpan - 1;\n                for (var j = 1; j <= colsToRemove; j++) {\n                    columnsToCheckFilter.push(displayedColumns[i + j]);\n                }\n                i += colsToRemove;\n            }\n            // see which cols we should take out for column virtualisation\n            var filterPasses;\n            if (filterCallback) {\n                // if user provided a callback, means some columns may not be in the viewport.\n                // the user will NOT provide a callback if we are talking about pinned areas,\n                // as pinned areas have no horizontal scroll and do not virtualise the columns.\n                // if lots of columns, that means column spanning, and we set filterPasses = true\n                // if one or more of the columns spanned pass the filter.\n                filterPasses = false;\n                columnsToCheckFilter.forEach(function (colForFilter) {\n                    if (filterCallback(colForFilter)) {\n                        filterPasses = true;\n                    }\n                });\n            }\n            else {\n                filterPasses = true;\n            }\n            if (filterPasses) {\n                if (result.length === 0 && lastConsideredCol) {\n                    var gapBeforeColumn = emptySpaceBeforeColumn ? emptySpaceBeforeColumn(col) : false;\n                    if (gapBeforeColumn) {\n                        result.push(lastConsideredCol);\n                    }\n                }\n                result.push(col);\n            }\n            lastConsideredCol = col;\n            out_i_1 = i;\n        };\n        var out_i_1;\n        for (var i = 0; i < displayedColumns.length; i++) {\n            _loop_1(i);\n            i = out_i_1;\n        }\n        return result;\n    };\n    // + rowRenderer\n    // if we are not column spanning, this just returns back the virtual centre columns,\n    // however if we are column spanning, then different rows can have different virtual\n    // columns, so we have to work out the list for each individual row.\n    ColumnModel.prototype.getViewportCenterColumnsForRow = function (rowNode) {\n        var _this = this;\n        if (!this.colSpanActive) {\n            return this.viewportColumnsCenter;\n        }\n        var emptySpaceBeforeColumn = function (col) {\n            var left = col.getLeft();\n            return exists(left) && left > _this.viewportLeft;\n        };\n        // if doing column virtualisation, then we filter based on the viewport.\n        var filterCallback = this.suppressColumnVirtualisation ? null : this.isColumnInRowViewport.bind(this);\n        return this.getDisplayedColumnsForRow(rowNode, this.displayedColumnsCenter, filterCallback, emptySpaceBeforeColumn);\n    };\n    ColumnModel.prototype.getAriaColumnIndex = function (col) {\n        return this.getAllGridColumns().indexOf(col) + 1;\n    };\n    ColumnModel.prototype.isColumnInHeaderViewport = function (col) {\n        // for headers, we never filter out autoHeaderHeight columns, if calculating\n        if (col.isAutoHeaderHeight()) {\n            return true;\n        }\n        return this.isColumnInRowViewport(col);\n    };\n    ColumnModel.prototype.isColumnInRowViewport = function (col) {\n        // we never filter out autoHeight columns, as we need them in the DOM for calculating Auto Height\n        if (col.isAutoHeight()) {\n            return true;\n        }\n        var columnLeft = col.getLeft() || 0;\n        var columnRight = columnLeft + col.getActualWidth();\n        // adding 200 for buffer size, so some cols off viewport are rendered.\n        // this helps horizontal scrolling so user rarely sees white space (unless\n        // they scroll horizontally fast). however we are conservative, as the more\n        // buffer the slower the vertical redraw speed\n        var leftBounds = this.viewportLeft - 200;\n        var rightBounds = this.viewportRight + 200;\n        var columnToMuchLeft = columnLeft < leftBounds && columnRight < leftBounds;\n        var columnToMuchRight = columnLeft > rightBounds && columnRight > rightBounds;\n        return !columnToMuchLeft && !columnToMuchRight;\n    };\n    // used by:\n    // + angularGrid -> setting pinned body width\n    // note: this should be cached\n    ColumnModel.prototype.getDisplayedColumnsLeftWidth = function () {\n        return this.getWidthOfColsInList(this.displayedColumnsLeft);\n    };\n    // note: this should be cached\n    ColumnModel.prototype.getDisplayedColumnsRightWidth = function () {\n        return this.getWidthOfColsInList(this.displayedColumnsRight);\n    };\n    ColumnModel.prototype.updatePrimaryColumnList = function (keys, masterList, actionIsAdd, columnCallback, eventType, source) {\n        var _this = this;\n        if (source === void 0) { source = \"api\"; }\n        if (!keys || missingOrEmpty(keys)) {\n            return;\n        }\n        var atLeastOne = false;\n        keys.forEach(function (key) {\n            var columnToAdd = _this.getPrimaryColumn(key);\n            if (!columnToAdd) {\n                return;\n            }\n            if (actionIsAdd) {\n                if (masterList.indexOf(columnToAdd) >= 0) {\n                    return;\n                }\n                masterList.push(columnToAdd);\n            }\n            else {\n                if (masterList.indexOf(columnToAdd) < 0) {\n                    return;\n                }\n                removeFromArray(masterList, columnToAdd);\n            }\n            columnCallback(columnToAdd);\n            atLeastOne = true;\n        });\n        if (!atLeastOne) {\n            return;\n        }\n        if (this.autoGroupsNeedBuilding) {\n            this.updateGridColumns();\n        }\n        this.updateDisplayedColumns(source);\n        var event = {\n            type: eventType,\n            columns: masterList,\n            column: masterList.length === 1 ? masterList[0] : null,\n            source: source\n        };\n        this.eventService.dispatchEvent(event);\n    };\n    ColumnModel.prototype.setRowGroupColumns = function (colKeys, source) {\n        if (source === void 0) { source = \"api\"; }\n        this.autoGroupsNeedBuilding = true;\n        this.setPrimaryColumnList(colKeys, this.rowGroupColumns, Events.EVENT_COLUMN_ROW_GROUP_CHANGED, this.setRowGroupActive.bind(this), source);\n    };\n    ColumnModel.prototype.setRowGroupActive = function (active, column, source) {\n        if (active === column.isRowGroupActive()) {\n            return;\n        }\n        column.setRowGroupActive(active, source);\n        if (active && !this.gridOptionsService.is('suppressRowGroupHidesColumns')) {\n            this.setColumnVisible(column, false, source);\n        }\n        if (!active && !this.gridOptionsService.is('suppressMakeColumnVisibleAfterUnGroup')) {\n            this.setColumnVisible(column, true, source);\n        }\n    };\n    ColumnModel.prototype.addRowGroupColumn = function (key, source) {\n        if (source === void 0) { source = \"api\"; }\n        if (key) {\n            this.addRowGroupColumns([key], source);\n        }\n    };\n    ColumnModel.prototype.addRowGroupColumns = function (keys, source) {\n        if (source === void 0) { source = \"api\"; }\n        this.autoGroupsNeedBuilding = true;\n        this.updatePrimaryColumnList(keys, this.rowGroupColumns, true, this.setRowGroupActive.bind(this, true), Events.EVENT_COLUMN_ROW_GROUP_CHANGED, source);\n    };\n    ColumnModel.prototype.removeRowGroupColumns = function (keys, source) {\n        if (source === void 0) { source = \"api\"; }\n        this.autoGroupsNeedBuilding = true;\n        this.updatePrimaryColumnList(keys, this.rowGroupColumns, false, this.setRowGroupActive.bind(this, false), Events.EVENT_COLUMN_ROW_GROUP_CHANGED, source);\n    };\n    ColumnModel.prototype.removeRowGroupColumn = function (key, source) {\n        if (source === void 0) { source = \"api\"; }\n        if (key) {\n            this.removeRowGroupColumns([key], source);\n        }\n    };\n    ColumnModel.prototype.addPivotColumns = function (keys, source) {\n        if (source === void 0) { source = \"api\"; }\n        this.updatePrimaryColumnList(keys, this.pivotColumns, true, function (column) { return column.setPivotActive(true, source); }, Events.EVENT_COLUMN_PIVOT_CHANGED, source);\n    };\n    ColumnModel.prototype.setPivotColumns = function (colKeys, source) {\n        if (source === void 0) { source = \"api\"; }\n        this.setPrimaryColumnList(colKeys, this.pivotColumns, Events.EVENT_COLUMN_PIVOT_CHANGED, function (added, column) {\n            column.setPivotActive(added, source);\n        }, source);\n    };\n    ColumnModel.prototype.addPivotColumn = function (key, source) {\n        if (source === void 0) { source = \"api\"; }\n        this.addPivotColumns([key], source);\n    };\n    ColumnModel.prototype.removePivotColumns = function (keys, source) {\n        if (source === void 0) { source = \"api\"; }\n        this.updatePrimaryColumnList(keys, this.pivotColumns, false, function (column) { return column.setPivotActive(false, source); }, Events.EVENT_COLUMN_PIVOT_CHANGED, source);\n    };\n    ColumnModel.prototype.removePivotColumn = function (key, source) {\n        if (source === void 0) { source = \"api\"; }\n        this.removePivotColumns([key], source);\n    };\n    ColumnModel.prototype.setPrimaryColumnList = function (colKeys, masterList, eventName, columnCallback, source) {\n        var _this = this;\n        masterList.length = 0;\n        if (exists(colKeys)) {\n            colKeys.forEach(function (key) {\n                var column = _this.getPrimaryColumn(key);\n                if (column) {\n                    masterList.push(column);\n                }\n            });\n        }\n        (this.primaryColumns || []).forEach(function (column) {\n            var added = masterList.indexOf(column) >= 0;\n            columnCallback(added, column);\n        });\n        if (this.autoGroupsNeedBuilding) {\n            this.updateGridColumns();\n        }\n        this.updateDisplayedColumns(source);\n        this.dispatchColumnChangedEvent(eventName, masterList, source);\n    };\n    ColumnModel.prototype.setValueColumns = function (colKeys, source) {\n        if (source === void 0) { source = \"api\"; }\n        this.setPrimaryColumnList(colKeys, this.valueColumns, Events.EVENT_COLUMN_VALUE_CHANGED, this.setValueActive.bind(this), source);\n    };\n    ColumnModel.prototype.setValueActive = function (active, column, source) {\n        if (active === column.isValueActive()) {\n            return;\n        }\n        column.setValueActive(active, source);\n        if (active && !column.getAggFunc()) {\n            var initialAggFunc = this.aggFuncService.getDefaultAggFunc(column);\n            column.setAggFunc(initialAggFunc);\n        }\n    };\n    ColumnModel.prototype.addValueColumns = function (keys, source) {\n        if (source === void 0) { source = \"api\"; }\n        this.updatePrimaryColumnList(keys, this.valueColumns, true, this.setValueActive.bind(this, true), Events.EVENT_COLUMN_VALUE_CHANGED, source);\n    };\n    ColumnModel.prototype.addValueColumn = function (colKey, source) {\n        if (source === void 0) { source = \"api\"; }\n        if (colKey) {\n            this.addValueColumns([colKey], source);\n        }\n    };\n    ColumnModel.prototype.removeValueColumn = function (colKey, source) {\n        if (source === void 0) { source = \"api\"; }\n        this.removeValueColumns([colKey], source);\n    };\n    ColumnModel.prototype.removeValueColumns = function (keys, source) {\n        if (source === void 0) { source = \"api\"; }\n        this.updatePrimaryColumnList(keys, this.valueColumns, false, this.setValueActive.bind(this, false), Events.EVENT_COLUMN_VALUE_CHANGED, source);\n    };\n    // returns the width we can set to this col, taking into consideration min and max widths\n    ColumnModel.prototype.normaliseColumnWidth = function (column, newWidth) {\n        var minWidth = column.getMinWidth();\n        if (exists(minWidth) && newWidth < minWidth) {\n            newWidth = minWidth;\n        }\n        var maxWidth = column.getMaxWidth();\n        if (exists(maxWidth) && column.isGreaterThanMax(newWidth)) {\n            newWidth = maxWidth;\n        }\n        return newWidth;\n    };\n    ColumnModel.prototype.getPrimaryOrGridColumn = function (key) {\n        var column = this.getPrimaryColumn(key);\n        return column || this.getGridColumn(key);\n    };\n    ColumnModel.prototype.setColumnWidths = function (columnWidths, shiftKey, // @takeFromAdjacent - if user has 'shift' pressed, then pixels are taken from adjacent column\n    finished, // @finished - ends up in the event, tells the user if more events are to come\n    source) {\n        var _this = this;\n        if (source === void 0) { source = \"api\"; }\n        var sets = [];\n        columnWidths.forEach(function (columnWidth) {\n            var col = _this.getPrimaryOrGridColumn(columnWidth.key);\n            if (!col) {\n                return;\n            }\n            sets.push({\n                width: columnWidth.newWidth,\n                ratios: [1],\n                columns: [col]\n            });\n            // if user wants to do shift resize by default, then we invert the shift operation\n            var defaultIsShift = _this.gridOptionsService.get('colResizeDefault') === 'shift';\n            if (defaultIsShift) {\n                shiftKey = !shiftKey;\n            }\n            if (shiftKey) {\n                var otherCol = _this.getDisplayedColAfter(col);\n                if (!otherCol) {\n                    return;\n                }\n                var widthDiff = col.getActualWidth() - columnWidth.newWidth;\n                var otherColWidth = otherCol.getActualWidth() + widthDiff;\n                sets.push({\n                    width: otherColWidth,\n                    ratios: [1],\n                    columns: [otherCol]\n                });\n            }\n        });\n        if (sets.length === 0) {\n            return;\n        }\n        this.resizeColumnSets({\n            resizeSets: sets,\n            finished: finished,\n            source: source\n        });\n    };\n    ColumnModel.prototype.checkMinAndMaxWidthsForSet = function (columnResizeSet) {\n        var columns = columnResizeSet.columns, width = columnResizeSet.width;\n        // every col has a min width, so sum them all up and see if we have enough room\n        // for all the min widths\n        var minWidthAccumulated = 0;\n        var maxWidthAccumulated = 0;\n        var maxWidthActive = true;\n        columns.forEach(function (col) {\n            var minWidth = col.getMinWidth();\n            minWidthAccumulated += minWidth || 0;\n            var maxWidth = col.getMaxWidth();\n            if (exists(maxWidth) && maxWidth > 0) {\n                maxWidthAccumulated += maxWidth;\n            }\n            else {\n                // if at least one columns has no max width, it means the group of columns\n                // then has no max width, as at least one column can take as much width as possible\n                maxWidthActive = false;\n            }\n        });\n        var minWidthPasses = width >= minWidthAccumulated;\n        var maxWidthPasses = !maxWidthActive || (width <= maxWidthAccumulated);\n        return minWidthPasses && maxWidthPasses;\n    };\n    // method takes sets of columns and resizes them. either all sets will be resized, or nothing\n    // be resized. this is used for example when user tries to resize a group and holds shift key,\n    // then both the current group (grows), and the adjacent group (shrinks), will get resized,\n    // so that's two sets for this method.\n    ColumnModel.prototype.resizeColumnSets = function (params) {\n        var _this = this;\n        var resizeSets = params.resizeSets, finished = params.finished, source = params.source;\n        var passMinMaxCheck = !resizeSets || resizeSets.every(function (columnResizeSet) { return _this.checkMinAndMaxWidthsForSet(columnResizeSet); });\n        if (!passMinMaxCheck) {\n            // even though we are not going to resize beyond min/max size, we still need to dispatch event when finished\n            if (finished) {\n                var columns = resizeSets && resizeSets.length > 0 ? resizeSets[0].columns : null;\n                this.dispatchColumnResizedEvent(columns, finished, source);\n            }\n            return; // don't resize!\n        }\n        var changedCols = [];\n        var allResizedCols = [];\n        resizeSets.forEach(function (set) {\n            var width = set.width, columns = set.columns, ratios = set.ratios;\n            // keep track of pixels used, and last column gets the remaining,\n            // to cater for rounding errors, and min width adjustments\n            var newWidths = {};\n            var finishedCols = {};\n            columns.forEach(function (col) { return allResizedCols.push(col); });\n            // the loop below goes through each col. if a col exceeds it's min/max width,\n            // it then gets set to its min/max width and the column is removed marked as 'finished'\n            // and the calculation is done again leaving this column out. take for example columns\n            // {A, width: 50, maxWidth: 100}\n            // {B, width: 50}\n            // {C, width: 50}\n            // and then the set is set to width 600 - on the first pass the grid tries to set each column\n            // to 200. it checks A and sees 200 > 100 and so sets the width to 100. col A is then marked\n            // as 'finished' and the calculation is done again with the remaining cols B and C, which end up\n            // splitting the remaining 500 pixels.\n            var finishedColsGrew = true;\n            var loopCount = 0;\n            var _loop_2 = function () {\n                loopCount++;\n                if (loopCount > 1000) {\n                    // this should never happen, but in the future, someone might introduce a bug here,\n                    // so we stop the browser from hanging and report bug properly\n                    console.error('AG Grid: infinite loop in resizeColumnSets');\n                    return \"break\";\n                }\n                finishedColsGrew = false;\n                var subsetCols = [];\n                var subsetRatioTotal = 0;\n                var pixelsToDistribute = width;\n                columns.forEach(function (col, index) {\n                    var thisColFinished = finishedCols[col.getId()];\n                    if (thisColFinished) {\n                        pixelsToDistribute -= newWidths[col.getId()];\n                    }\n                    else {\n                        subsetCols.push(col);\n                        var ratioThisCol = ratios[index];\n                        subsetRatioTotal += ratioThisCol;\n                    }\n                });\n                // because we are not using all of the ratios (cols can be missing),\n                // we scale the ratio. if all columns are included, then subsetRatioTotal=1,\n                // and so the ratioScale will be 1.\n                var ratioScale = 1 / subsetRatioTotal;\n                subsetCols.forEach(function (col, index) {\n                    var lastCol = index === (subsetCols.length - 1);\n                    var colNewWidth;\n                    if (lastCol) {\n                        colNewWidth = pixelsToDistribute;\n                    }\n                    else {\n                        colNewWidth = Math.round(ratios[index] * width * ratioScale);\n                        pixelsToDistribute -= colNewWidth;\n                    }\n                    var minWidth = col.getMinWidth();\n                    var maxWidth = col.getMaxWidth();\n                    if (exists(minWidth) && colNewWidth < minWidth) {\n                        colNewWidth = minWidth;\n                        finishedCols[col.getId()] = true;\n                        finishedColsGrew = true;\n                    }\n                    else if (exists(maxWidth) && maxWidth > 0 && colNewWidth > maxWidth) {\n                        colNewWidth = maxWidth;\n                        finishedCols[col.getId()] = true;\n                        finishedColsGrew = true;\n                    }\n                    newWidths[col.getId()] = colNewWidth;\n                });\n            };\n            while (finishedColsGrew) {\n                var state_1 = _loop_2();\n                if (state_1 === \"break\")\n                    break;\n            }\n            columns.forEach(function (col) {\n                var newWidth = newWidths[col.getId()];\n                var actualWidth = col.getActualWidth();\n                if (actualWidth !== newWidth) {\n                    col.setActualWidth(newWidth, source);\n                    changedCols.push(col);\n                }\n            });\n        });\n        // if no cols changed, then no need to update more or send event.\n        var atLeastOneColChanged = changedCols.length > 0;\n        var flexedCols = [];\n        if (atLeastOneColChanged) {\n            flexedCols = this.refreshFlexedColumns({ resizingCols: allResizedCols, skipSetLeft: true });\n            this.setLeftValues(source);\n            this.updateBodyWidths();\n            this.checkViewportColumns();\n        }\n        // check for change first, to avoid unnecessary firing of events\n        // however we always dispatch 'finished' events. this is important\n        // when groups are resized, as if the group is changing slowly,\n        // eg 1 pixel at a time, then each change will dispatch change events\n        // in all the columns in the group, but only one with get the pixel.\n        var colsForEvent = allResizedCols.concat(flexedCols);\n        if (atLeastOneColChanged || finished) {\n            this.dispatchColumnResizedEvent(colsForEvent, finished, source, flexedCols);\n        }\n    };\n    ColumnModel.prototype.setColumnAggFunc = function (key, aggFunc, source) {\n        if (source === void 0) { source = \"api\"; }\n        if (!key) {\n            return;\n        }\n        var column = this.getPrimaryColumn(key);\n        if (!column) {\n            return;\n        }\n        column.setAggFunc(aggFunc);\n        this.dispatchColumnChangedEvent(Events.EVENT_COLUMN_VALUE_CHANGED, [column], source);\n    };\n    ColumnModel.prototype.moveRowGroupColumn = function (fromIndex, toIndex, source) {\n        if (source === void 0) { source = \"api\"; }\n        var column = this.rowGroupColumns[fromIndex];\n        this.rowGroupColumns.splice(fromIndex, 1);\n        this.rowGroupColumns.splice(toIndex, 0, column);\n        var event = {\n            type: Events.EVENT_COLUMN_ROW_GROUP_CHANGED,\n            columns: this.rowGroupColumns,\n            column: this.rowGroupColumns.length === 1 ? this.rowGroupColumns[0] : null,\n            source: source\n        };\n        this.eventService.dispatchEvent(event);\n    };\n    ColumnModel.prototype.moveColumns = function (columnsToMoveKeys, toIndex, source, finished) {\n        if (source === void 0) { source = \"api\"; }\n        if (finished === void 0) { finished = true; }\n        this.columnAnimationService.start();\n        if (toIndex > this.gridColumns.length - columnsToMoveKeys.length) {\n            console.warn('AG Grid: tried to insert columns in invalid location, toIndex = ' + toIndex);\n            console.warn('AG Grid: remember that you should not count the moving columns when calculating the new index');\n            return;\n        }\n        // we want to pull all the columns out first and put them into an ordered list\n        var movedColumns = this.getGridColumns(columnsToMoveKeys);\n        var failedRules = !this.doesMovePassRules(movedColumns, toIndex);\n        if (failedRules) {\n            return;\n        }\n        moveInArray(this.gridColumns, movedColumns, toIndex);\n        this.updateDisplayedColumns(source);\n        this.dispatchColumnMovedEvent({ movedColumns: movedColumns, source: source, toIndex: toIndex, finished: finished });\n        this.columnAnimationService.finish();\n    };\n    ColumnModel.prototype.doesMovePassRules = function (columnsToMove, toIndex) {\n        // make a copy of what the grid columns would look like after the move\n        var proposedColumnOrder = this.getProposedColumnOrder(columnsToMove, toIndex);\n        return this.doesOrderPassRules(proposedColumnOrder);\n    };\n    ColumnModel.prototype.doesOrderPassRules = function (gridOrder) {\n        if (!this.doesMovePassMarryChildren(gridOrder)) {\n            return false;\n        }\n        if (!this.doesMovePassLockedPositions(gridOrder)) {\n            return false;\n        }\n        return true;\n    };\n    ColumnModel.prototype.getProposedColumnOrder = function (columnsToMove, toIndex) {\n        var proposedColumnOrder = this.gridColumns.slice();\n        moveInArray(proposedColumnOrder, columnsToMove, toIndex);\n        return proposedColumnOrder;\n    };\n    // returns the provided cols sorted in same order as they appear in grid columns. eg if grid columns\n    // contains [a,b,c,d,e] and col passed is [e,a] then the passed cols are sorted into [a,e]\n    ColumnModel.prototype.sortColumnsLikeGridColumns = function (cols) {\n        var _this = this;\n        if (!cols || cols.length <= 1) {\n            return;\n        }\n        var notAllColsInGridColumns = cols.filter(function (c) { return _this.gridColumns.indexOf(c) < 0; }).length > 0;\n        if (notAllColsInGridColumns) {\n            return;\n        }\n        cols.sort(function (a, b) {\n            var indexA = _this.gridColumns.indexOf(a);\n            var indexB = _this.gridColumns.indexOf(b);\n            return indexA - indexB;\n        });\n    };\n    ColumnModel.prototype.doesMovePassLockedPositions = function (proposedColumnOrder) {\n        // Placement is a number indicating 'left' 'center' or 'right' as 0 1 2\n        var lastPlacement = 0;\n        var rulePassed = true;\n        var lockPositionToPlacement = function (position) {\n            if (!position) { // false or undefined\n                return 1;\n            }\n            if (position === true) {\n                return 0;\n            }\n            return position === 'left' ? 0 : 2; // Otherwise 'right'\n        };\n        proposedColumnOrder.forEach(function (col) {\n            var placement = lockPositionToPlacement(col.getColDef().lockPosition);\n            if (placement < lastPlacement) { // If placement goes down, we're not in the correct order\n                rulePassed = false;\n            }\n            lastPlacement = placement;\n        });\n        return rulePassed;\n    };\n    ColumnModel.prototype.doesMovePassMarryChildren = function (allColumnsCopy) {\n        var rulePassed = true;\n        this.columnUtils.depthFirstOriginalTreeSearch(null, this.gridBalancedTree, function (child) {\n            if (!(child instanceof ProvidedColumnGroup)) {\n                return;\n            }\n            var columnGroup = child;\n            var colGroupDef = columnGroup.getColGroupDef();\n            var marryChildren = colGroupDef && colGroupDef.marryChildren;\n            if (!marryChildren) {\n                return;\n            }\n            var newIndexes = [];\n            columnGroup.getLeafColumns().forEach(function (col) {\n                var newColIndex = allColumnsCopy.indexOf(col);\n                newIndexes.push(newColIndex);\n            });\n            var maxIndex = Math.max.apply(Math, newIndexes);\n            var minIndex = Math.min.apply(Math, newIndexes);\n            // spread is how far the first column in this group is away from the last column\n            var spread = maxIndex - minIndex;\n            var maxSpread = columnGroup.getLeafColumns().length - 1;\n            // if the columns\n            if (spread > maxSpread) {\n                rulePassed = false;\n            }\n            // console.log(`maxIndex = ${maxIndex}, minIndex = ${minIndex}, spread = ${spread}, maxSpread = ${maxSpread}, fail = ${spread > (count-1)}`)\n            // console.log(allColumnsCopy.map( col => col.getColDef().field).join(','));\n        });\n        return rulePassed;\n    };\n    ColumnModel.prototype.moveColumn = function (key, toIndex, source) {\n        if (source === void 0) { source = \"api\"; }\n        this.moveColumns([key], toIndex, source);\n    };\n    ColumnModel.prototype.moveColumnByIndex = function (fromIndex, toIndex, source) {\n        if (source === void 0) { source = \"api\"; }\n        var column = this.gridColumns[fromIndex];\n        this.moveColumn(column, toIndex, source);\n    };\n    ColumnModel.prototype.getColumnDefs = function () {\n        var _this = this;\n        if (!this.primaryColumns) {\n            return;\n        }\n        var cols = this.primaryColumns.slice();\n        if (this.gridColsArePrimary) {\n            cols.sort(function (a, b) { return _this.gridColumns.indexOf(a) - _this.gridColumns.indexOf(b); });\n        }\n        else if (this.lastPrimaryOrder) {\n            cols.sort(function (a, b) { return _this.lastPrimaryOrder.indexOf(a) - _this.lastPrimaryOrder.indexOf(b); });\n        }\n        return this.columnDefFactory.buildColumnDefs(cols, this.rowGroupColumns, this.pivotColumns);\n    };\n    // used by:\n    // + angularGrid -> for setting body width\n    // + rowController -> setting main row widths (when inserting and resizing)\n    // need to cache this\n    ColumnModel.prototype.getBodyContainerWidth = function () {\n        return this.bodyWidth;\n    };\n    ColumnModel.prototype.getContainerWidth = function (pinned) {\n        switch (pinned) {\n            case 'left':\n                return this.leftWidth;\n            case 'right':\n                return this.rightWidth;\n            default:\n                return this.bodyWidth;\n        }\n    };\n    // after setColumnWidth or updateGroupsAndDisplayedColumns\n    ColumnModel.prototype.updateBodyWidths = function () {\n        var newBodyWidth = this.getWidthOfColsInList(this.displayedColumnsCenter);\n        var newLeftWidth = this.getWidthOfColsInList(this.displayedColumnsLeft);\n        var newRightWidth = this.getWidthOfColsInList(this.displayedColumnsRight);\n        // this is used by virtual col calculation, for RTL only, as a change to body width can impact displayed\n        // columns, due to RTL inverting the y coordinates\n        this.bodyWidthDirty = this.bodyWidth !== newBodyWidth;\n        var atLeastOneChanged = this.bodyWidth !== newBodyWidth || this.leftWidth !== newLeftWidth || this.rightWidth !== newRightWidth;\n        if (atLeastOneChanged) {\n            this.bodyWidth = newBodyWidth;\n            this.leftWidth = newLeftWidth;\n            this.rightWidth = newRightWidth;\n            // when this fires, it is picked up by the gridPanel, which ends up in\n            // gridPanel calling setWidthAndScrollPosition(), which in turn calls setViewportPosition()\n            var event_2 = {\n                type: Events.EVENT_DISPLAYED_COLUMNS_WIDTH_CHANGED,\n            };\n            this.eventService.dispatchEvent(event_2);\n        }\n    };\n    // + rowController\n    ColumnModel.prototype.getValueColumns = function () {\n        return this.valueColumns ? this.valueColumns : [];\n    };\n    // + rowController\n    ColumnModel.prototype.getPivotColumns = function () {\n        return this.pivotColumns ? this.pivotColumns : [];\n    };\n    // + clientSideRowModel\n    ColumnModel.prototype.isPivotActive = function () {\n        return this.pivotColumns && this.pivotColumns.length > 0 && this.pivotMode;\n    };\n    // + toolPanel\n    ColumnModel.prototype.getRowGroupColumns = function () {\n        return this.rowGroupColumns ? this.rowGroupColumns : [];\n    };\n    // + rowController -> while inserting rows\n    ColumnModel.prototype.getDisplayedCenterColumns = function () {\n        return this.displayedColumnsCenter;\n    };\n    // + rowController -> while inserting rows\n    ColumnModel.prototype.getDisplayedLeftColumns = function () {\n        return this.displayedColumnsLeft;\n    };\n    ColumnModel.prototype.getDisplayedRightColumns = function () {\n        return this.displayedColumnsRight;\n    };\n    ColumnModel.prototype.getDisplayedColumns = function (type) {\n        switch (type) {\n            case 'left':\n                return this.getDisplayedLeftColumns();\n            case 'right':\n                return this.getDisplayedRightColumns();\n            default:\n                return this.getDisplayedCenterColumns();\n        }\n    };\n    // used by:\n    // + clientSideRowController -> sorting, building quick filter text\n    // + headerRenderer -> sorting (clearing icon)\n    ColumnModel.prototype.getAllPrimaryColumns = function () {\n        return this.primaryColumns ? this.primaryColumns.slice() : null;\n    };\n    ColumnModel.prototype.getSecondaryColumns = function () {\n        return this.secondaryColumns ? this.secondaryColumns.slice() : null;\n    };\n    ColumnModel.prototype.getAllColumnsForQuickFilter = function () {\n        return this.columnsForQuickFilter;\n    };\n    // + moveColumnController\n    ColumnModel.prototype.getAllGridColumns = function () {\n        return this.gridColumns;\n    };\n    ColumnModel.prototype.isEmpty = function () {\n        return missingOrEmpty(this.gridColumns);\n    };\n    ColumnModel.prototype.isRowGroupEmpty = function () {\n        return missingOrEmpty(this.rowGroupColumns);\n    };\n    ColumnModel.prototype.setColumnVisible = function (key, visible, source) {\n        if (source === void 0) { source = \"api\"; }\n        this.setColumnsVisible([key], visible, source);\n    };\n    ColumnModel.prototype.setColumnsVisible = function (keys, visible, source) {\n        if (visible === void 0) { visible = false; }\n        if (source === void 0) { source = \"api\"; }\n        this.applyColumnState({\n            state: keys.map(function (key) { return ({\n                colId: typeof key === 'string' ? key : key.getColId(),\n                hide: !visible,\n            }); }),\n        }, source);\n    };\n    ColumnModel.prototype.setColumnPinned = function (key, pinned, source) {\n        if (source === void 0) { source = \"api\"; }\n        if (key) {\n            this.setColumnsPinned([key], pinned, source);\n        }\n    };\n    ColumnModel.prototype.setColumnsPinned = function (keys, pinned, source) {\n        if (source === void 0) { source = \"api\"; }\n        if (this.gridOptionsService.isDomLayout('print')) {\n            console.warn(\"AG Grid: Changing the column pinning status is not allowed with domLayout='print'\");\n            return;\n        }\n        this.columnAnimationService.start();\n        var actualPinned;\n        if (pinned === true || pinned === 'left') {\n            actualPinned = 'left';\n        }\n        else if (pinned === 'right') {\n            actualPinned = 'right';\n        }\n        else {\n            actualPinned = null;\n        }\n        this.actionOnGridColumns(keys, function (col) {\n            if (col.getPinned() !== actualPinned) {\n                col.setPinned(actualPinned);\n                return true;\n            }\n            return false;\n        }, source, function () {\n            var event = {\n                type: Events.EVENT_COLUMN_PINNED,\n                pinned: actualPinned,\n                column: null,\n                columns: null,\n                source: source\n            };\n            return event;\n        });\n        this.columnAnimationService.finish();\n    };\n    // does an action on a set of columns. provides common functionality for looking up the\n    // columns based on key, getting a list of effected columns, and then updated the event\n    // with either one column (if it was just one col) or a list of columns\n    // used by: autoResize, setVisible, setPinned\n    ColumnModel.prototype.actionOnGridColumns = function (// the column keys this action will be on\n    keys, \n    // the action to do - if this returns false, the column was skipped\n    // and won't be included in the event\n    action, \n    // should return back a column event of the right type\n    source, createEvent) {\n        var _this = this;\n        if (missingOrEmpty(keys)) {\n            return;\n        }\n        var updatedColumns = [];\n        keys.forEach(function (key) {\n            var column = _this.getGridColumn(key);\n            if (!column) {\n                return;\n            }\n            // need to check for false with type (ie !== instead of !=)\n            // as not returning anything (undefined) would also be false\n            var resultOfAction = action(column);\n            if (resultOfAction !== false) {\n                updatedColumns.push(column);\n            }\n        });\n        if (!updatedColumns.length) {\n            return;\n        }\n        this.updateDisplayedColumns(source);\n        if (exists(createEvent) && createEvent) {\n            var event_3 = createEvent();\n            event_3.columns = updatedColumns;\n            event_3.column = updatedColumns.length === 1 ? updatedColumns[0] : null;\n            this.eventService.dispatchEvent(event_3);\n        }\n    };\n    ColumnModel.prototype.getDisplayedColBefore = function (col) {\n        var allDisplayedColumns = this.getAllDisplayedColumns();\n        var oldIndex = allDisplayedColumns.indexOf(col);\n        if (oldIndex > 0) {\n            return allDisplayedColumns[oldIndex - 1];\n        }\n        return null;\n    };\n    // used by:\n    // + rowRenderer -> for navigation\n    ColumnModel.prototype.getDisplayedColAfter = function (col) {\n        var allDisplayedColumns = this.getAllDisplayedColumns();\n        var oldIndex = allDisplayedColumns.indexOf(col);\n        if (oldIndex < (allDisplayedColumns.length - 1)) {\n            return allDisplayedColumns[oldIndex + 1];\n        }\n        return null;\n    };\n    ColumnModel.prototype.getDisplayedGroupAfter = function (columnGroup) {\n        return this.getDisplayedGroupAtDirection(columnGroup, 'After');\n    };\n    ColumnModel.prototype.getDisplayedGroupBefore = function (columnGroup) {\n        return this.getDisplayedGroupAtDirection(columnGroup, 'Before');\n    };\n    ColumnModel.prototype.getDisplayedGroupAtDirection = function (columnGroup, direction) {\n        // pick the last displayed column in this group\n        var requiredLevel = columnGroup.getProvidedColumnGroup().getLevel() + columnGroup.getPaddingLevel();\n        var colGroupLeafColumns = columnGroup.getDisplayedLeafColumns();\n        var col = direction === 'After' ? last(colGroupLeafColumns) : colGroupLeafColumns[0];\n        var getDisplayColMethod = \"getDisplayedCol\" + direction;\n        while (true) {\n            // keep moving to the next col, until we get to another group\n            var column = this[getDisplayColMethod](col);\n            if (!column) {\n                return null;\n            }\n            var groupPointer = this.getColumnGroupAtLevel(column, requiredLevel);\n            if (groupPointer !== columnGroup) {\n                return groupPointer;\n            }\n        }\n    };\n    ColumnModel.prototype.getColumnGroupAtLevel = function (column, level) {\n        // get group at same level as the one we are looking for\n        var groupPointer = column.getParent();\n        var originalGroupLevel;\n        var groupPointerLevel;\n        while (true) {\n            var groupPointerProvidedColumnGroup = groupPointer.getProvidedColumnGroup();\n            originalGroupLevel = groupPointerProvidedColumnGroup.getLevel();\n            groupPointerLevel = groupPointer.getPaddingLevel();\n            if (originalGroupLevel + groupPointerLevel <= level) {\n                break;\n            }\n            groupPointer = groupPointer.getParent();\n        }\n        return groupPointer;\n    };\n    ColumnModel.prototype.isPinningLeft = function () {\n        return this.displayedColumnsLeft.length > 0;\n    };\n    ColumnModel.prototype.isPinningRight = function () {\n        return this.displayedColumnsRight.length > 0;\n    };\n    ColumnModel.prototype.getPrimaryAndSecondaryAndAutoColumns = function () {\n        var _a;\n        return (_a = []).concat.apply(_a, __spread$k([\n            this.primaryColumns || [],\n            this.groupAutoColumns || [],\n            this.secondaryColumns || [],\n        ]));\n    };\n    ColumnModel.prototype.createStateItemFromColumn = function (column) {\n        var rowGroupIndex = column.isRowGroupActive() ? this.rowGroupColumns.indexOf(column) : null;\n        var pivotIndex = column.isPivotActive() ? this.pivotColumns.indexOf(column) : null;\n        var aggFunc = column.isValueActive() ? column.getAggFunc() : null;\n        var sort = column.getSort() != null ? column.getSort() : null;\n        var sortIndex = column.getSortIndex() != null ? column.getSortIndex() : null;\n        var flex = column.getFlex() != null && column.getFlex() > 0 ? column.getFlex() : null;\n        var res = {\n            colId: column.getColId(),\n            width: column.getActualWidth(),\n            hide: !column.isVisible(),\n            pinned: column.getPinned(),\n            sort: sort,\n            sortIndex: sortIndex,\n            aggFunc: aggFunc,\n            rowGroup: column.isRowGroupActive(),\n            rowGroupIndex: rowGroupIndex,\n            pivot: column.isPivotActive(),\n            pivotIndex: pivotIndex,\n            flex: flex\n        };\n        return res;\n    };\n    ColumnModel.prototype.getColumnState = function () {\n        if (missing(this.primaryColumns) || !this.isAlive()) {\n            return [];\n        }\n        var colsForState = this.getPrimaryAndSecondaryAndAutoColumns();\n        var res = colsForState.map(this.createStateItemFromColumn.bind(this));\n        this.orderColumnStateList(res);\n        return res;\n    };\n    ColumnModel.prototype.orderColumnStateList = function (columnStateList) {\n        // for fast looking, store the index of each column\n        var colIdToGridIndexMap = convertToMap(this.gridColumns.map(function (col, index) { return [col.getColId(), index]; }));\n        columnStateList.sort(function (itemA, itemB) {\n            var posA = colIdToGridIndexMap.has(itemA.colId) ? colIdToGridIndexMap.get(itemA.colId) : -1;\n            var posB = colIdToGridIndexMap.has(itemB.colId) ? colIdToGridIndexMap.get(itemB.colId) : -1;\n            return posA - posB;\n        });\n    };\n    ColumnModel.prototype.resetColumnState = function (source) {\n        // NOTE = there is one bug here that no customer has noticed - if a column has colDef.lockPosition,\n        // this is ignored  below when ordering the cols. to work, we should always put lockPosition cols first.\n        // As a work around, developers should just put lockPosition columns first in their colDef list.\n        if (source === void 0) { source = \"api\"; }\n        // we can't use 'allColumns' as the order might of messed up, so get the primary ordered list\n        var primaryColumns = this.getColumnsFromTree(this.primaryColumnTree);\n        var columnStates = [];\n        // we start at 1000, so if user has mix of rowGroup and group specified, it will work with both.\n        // eg IF user has ColA.rowGroupIndex=0, ColB.rowGroupIndex=1, ColC.rowGroup=true,\n        // THEN result will be ColA.rowGroupIndex=0, ColB.rowGroupIndex=1, ColC.rowGroup=1000\n        var letRowGroupIndex = 1000;\n        var letPivotIndex = 1000;\n        var colsToProcess = [];\n        if (this.groupAutoColumns) {\n            colsToProcess = colsToProcess.concat(this.groupAutoColumns);\n        }\n        if (primaryColumns) {\n            colsToProcess = colsToProcess.concat(primaryColumns);\n        }\n        colsToProcess.forEach(function (column) {\n            var getValueOrNull = function (a, b) { return a != null ? a : b != null ? b : null; };\n            var colDef = column.getColDef();\n            var sort = getValueOrNull(colDef.sort, colDef.initialSort);\n            var sortIndex = getValueOrNull(colDef.sortIndex, colDef.initialSortIndex);\n            var hide = getValueOrNull(colDef.hide, colDef.initialHide);\n            var pinned = getValueOrNull(colDef.pinned, colDef.initialPinned);\n            var width = getValueOrNull(colDef.width, colDef.initialWidth);\n            var flex = getValueOrNull(colDef.flex, colDef.initialFlex);\n            var rowGroupIndex = getValueOrNull(colDef.rowGroupIndex, colDef.initialRowGroupIndex);\n            var rowGroup = getValueOrNull(colDef.rowGroup, colDef.initialRowGroup);\n            if (rowGroupIndex == null && (rowGroup == null || rowGroup == false)) {\n                rowGroupIndex = null;\n                rowGroup = null;\n            }\n            var pivotIndex = getValueOrNull(colDef.pivotIndex, colDef.initialPivotIndex);\n            var pivot = getValueOrNull(colDef.pivot, colDef.initialPivot);\n            if (pivotIndex == null && (pivot == null || pivot == false)) {\n                pivotIndex = null;\n                pivot = null;\n            }\n            var aggFunc = getValueOrNull(colDef.aggFunc, colDef.initialAggFunc);\n            var stateItem = {\n                colId: column.getColId(),\n                sort: sort,\n                sortIndex: sortIndex,\n                hide: hide,\n                pinned: pinned,\n                width: width,\n                flex: flex,\n                rowGroup: rowGroup,\n                rowGroupIndex: rowGroupIndex,\n                pivot: pivot,\n                pivotIndex: pivotIndex,\n                aggFunc: aggFunc,\n            };\n            if (missing(rowGroupIndex) && rowGroup) {\n                stateItem.rowGroupIndex = letRowGroupIndex++;\n            }\n            if (missing(pivotIndex) && pivot) {\n                stateItem.pivotIndex = letPivotIndex++;\n            }\n            columnStates.push(stateItem);\n        });\n        this.applyColumnState({ state: columnStates, applyOrder: true }, source);\n    };\n    ColumnModel.prototype.applyColumnState = function (params, source) {\n        var _this = this;\n        if (missingOrEmpty(this.primaryColumns)) {\n            return false;\n        }\n        if (params && params.state && !params.state.forEach) {\n            console.warn('AG Grid: applyColumnState() - the state attribute should be an array, however an array was not found. Please provide an array of items (one for each col you want to change) for state.');\n            return false;\n        }\n        var applyStates = function (states, existingColumns, getById) {\n            var dispatchEventsFunc = _this.compareColumnStatesAndDispatchEvents(source);\n            _this.autoGroupsNeedBuilding = true;\n            // at the end below, this list will have all columns we got no state for\n            var columnsWithNoState = existingColumns.slice();\n            var rowGroupIndexes = {};\n            var pivotIndexes = {};\n            var autoGroupColumnStates = [];\n            // If pivoting is modified, these are the states we try to reapply after\n            // the secondary columns are re-generated\n            var unmatchedAndAutoStates = [];\n            var unmatchedCount = 0;\n            var previousRowGroupCols = _this.rowGroupColumns.slice();\n            var previousPivotCols = _this.pivotColumns.slice();\n            states.forEach(function (state) {\n                var colId = state.colId || '';\n                // auto group columns are re-created so deferring syncing with ColumnState\n                var isAutoGroupColumn = colId.startsWith(GROUP_AUTO_COLUMN_ID);\n                if (isAutoGroupColumn) {\n                    autoGroupColumnStates.push(state);\n                    unmatchedAndAutoStates.push(state);\n                    return;\n                }\n                var column = getById(colId);\n                if (!column) {\n                    unmatchedAndAutoStates.push(state);\n                    unmatchedCount += 1;\n                }\n                else {\n                    _this.syncColumnWithStateItem(column, state, params.defaultState, rowGroupIndexes, pivotIndexes, false, source);\n                    removeFromArray(columnsWithNoState, column);\n                }\n            });\n            // anything left over, we got no data for, so add in the column as non-value, non-rowGroup and hidden\n            var applyDefaultsFunc = function (col) {\n                return _this.syncColumnWithStateItem(col, null, params.defaultState, rowGroupIndexes, pivotIndexes, false, source);\n            };\n            columnsWithNoState.forEach(applyDefaultsFunc);\n            // sort the lists according to the indexes that were provided\n            var comparator = function (indexes, oldList, colA, colB) {\n                var indexA = indexes[colA.getId()];\n                var indexB = indexes[colB.getId()];\n                var aHasIndex = indexA != null;\n                var bHasIndex = indexB != null;\n                if (aHasIndex && bHasIndex) {\n                    // both a and b are new cols with index, so sort on index\n                    return indexA - indexB;\n                }\n                if (aHasIndex) {\n                    // a has an index, so it should be before a\n                    return -1;\n                }\n                if (bHasIndex) {\n                    // b has an index, so it should be before a\n                    return 1;\n                }\n                var oldIndexA = oldList.indexOf(colA);\n                var oldIndexB = oldList.indexOf(colB);\n                var aHasOldIndex = oldIndexA >= 0;\n                var bHasOldIndex = oldIndexB >= 0;\n                if (aHasOldIndex && bHasOldIndex) {\n                    // both a and b are old cols, so sort based on last order\n                    return oldIndexA - oldIndexB;\n                }\n                if (aHasOldIndex) {\n                    // a is old, b is new, so b is first\n                    return -1;\n                }\n                // this bit does matter, means both are new cols\n                // but without index or that b is old and a is new\n                return 1;\n            };\n            _this.rowGroupColumns.sort(comparator.bind(_this, rowGroupIndexes, previousRowGroupCols));\n            _this.pivotColumns.sort(comparator.bind(_this, pivotIndexes, previousPivotCols));\n            _this.updateGridColumns();\n            // sync newly created auto group columns with ColumnState\n            var autoGroupColsCopy = _this.groupAutoColumns ? _this.groupAutoColumns.slice() : [];\n            autoGroupColumnStates.forEach(function (stateItem) {\n                var autoCol = _this.getAutoColumn(stateItem.colId);\n                removeFromArray(autoGroupColsCopy, autoCol);\n                _this.syncColumnWithStateItem(autoCol, stateItem, params.defaultState, null, null, true, source);\n            });\n            // autogroup cols with nothing else, apply the default\n            autoGroupColsCopy.forEach(applyDefaultsFunc);\n            _this.applyOrderAfterApplyState(params);\n            _this.updateDisplayedColumns(source);\n            _this.dispatchEverythingChanged(source);\n            dispatchEventsFunc(); // Will trigger secondary column changes if pivoting modified\n            return { unmatchedAndAutoStates: unmatchedAndAutoStates, unmatchedCount: unmatchedCount };\n        };\n        this.columnAnimationService.start();\n        var _a = applyStates(params.state || [], this.primaryColumns || [], function (id) { return _this.getPrimaryColumn(id); }), unmatchedAndAutoStates = _a.unmatchedAndAutoStates, unmatchedCount = _a.unmatchedCount;\n        // If there are still states left over, see if we can apply them to newly generated\n        // secondary or auto columns. Also if defaults exist, ensure they are applied to secondary cols\n        if (unmatchedAndAutoStates.length > 0 || exists(params.defaultState)) {\n            unmatchedCount = applyStates(unmatchedAndAutoStates, this.secondaryColumns || [], function (id) { return _this.getSecondaryColumn(id); }).unmatchedCount;\n        }\n        this.columnAnimationService.finish();\n        return unmatchedCount === 0; // Successful if no states unaccounted for\n    };\n    ColumnModel.prototype.applyOrderAfterApplyState = function (params) {\n        var _this = this;\n        if (!params.applyOrder || !params.state) {\n            return;\n        }\n        var newOrder = [];\n        var processedColIds = {};\n        params.state.forEach(function (item) {\n            if (!item.colId || processedColIds[item.colId]) {\n                return;\n            }\n            var col = _this.gridColumnsMap[item.colId];\n            if (col) {\n                newOrder.push(col);\n                processedColIds[item.colId] = true;\n            }\n        });\n        // add in all other columns\n        var autoGroupInsertIndex = 0;\n        this.gridColumns.forEach(function (col) {\n            var colId = col.getColId();\n            var alreadyProcessed = processedColIds[colId] != null;\n            if (alreadyProcessed) {\n                return;\n            }\n            var isAutoGroupCol = colId.startsWith(GROUP_AUTO_COLUMN_ID);\n            if (isAutoGroupCol) {\n                // auto group columns, if missing from state list, are added to the start.\n                // it's common to have autoGroup missing, as grouping could be on by default\n                // on a column, but the user could of since removed the grouping via the UI.\n                // if we don't inc the insert index, autoGroups will be inserted in reverse order\n                insertIntoArray(newOrder, col, autoGroupInsertIndex++);\n            }\n            else {\n                // normal columns, if missing from state list, are added at the end\n                newOrder.push(col);\n            }\n        });\n        // this is already done in updateGridColumns, however we changed the order above (to match the order of the state\n        // columns) so we need to do it again. we could of put logic into the order above to take into account fixed\n        // columns, however if we did then we would have logic for updating fixed columns twice. reusing the logic here\n        // is less sexy for the code here, but it keeps consistency.\n        newOrder = this.placeLockedColumns(newOrder);\n        if (!this.doesMovePassMarryChildren(newOrder)) {\n            console.warn('AG Grid: Applying column order broke a group where columns should be married together. Applying new order has been discarded.');\n            return;\n        }\n        this.gridColumns = newOrder;\n    };\n    ColumnModel.prototype.compareColumnStatesAndDispatchEvents = function (source) {\n        var _this = this;\n        var startState = {\n            rowGroupColumns: this.rowGroupColumns.slice(),\n            pivotColumns: this.pivotColumns.slice(),\n            valueColumns: this.valueColumns.slice()\n        };\n        var columnStateBefore = this.getColumnState();\n        var columnStateBeforeMap = {};\n        columnStateBefore.forEach(function (col) {\n            columnStateBeforeMap[col.colId] = col;\n        });\n        return function () {\n            var colsForState = _this.getPrimaryAndSecondaryAndAutoColumns();\n            // dispatches generic ColumnEvents where all columns are returned rather than what has changed\n            var dispatchWhenListsDifferent = function (eventType, colsBefore, colsAfter, idMapper) {\n                var beforeList = colsBefore.map(idMapper);\n                var afterList = colsAfter.map(idMapper);\n                var unchanged = areEqual(beforeList, afterList);\n                if (unchanged) {\n                    return;\n                }\n                // returning all columns rather than what has changed!\n                var event = {\n                    type: eventType,\n                    columns: colsAfter,\n                    column: colsAfter.length === 1 ? colsAfter[0] : null,\n                    source: source\n                };\n                _this.eventService.dispatchEvent(event);\n            };\n            // determines which columns have changed according to supplied predicate\n            var getChangedColumns = function (changedPredicate) {\n                var changedColumns = [];\n                colsForState.forEach(function (column) {\n                    var colStateBefore = columnStateBeforeMap[column.getColId()];\n                    if (colStateBefore && changedPredicate(colStateBefore, column)) {\n                        changedColumns.push(column);\n                    }\n                });\n                return changedColumns;\n            };\n            var columnIdMapper = function (c) { return c.getColId(); };\n            dispatchWhenListsDifferent(Events.EVENT_COLUMN_ROW_GROUP_CHANGED, startState.rowGroupColumns, _this.rowGroupColumns, columnIdMapper);\n            dispatchWhenListsDifferent(Events.EVENT_COLUMN_PIVOT_CHANGED, startState.pivotColumns, _this.pivotColumns, columnIdMapper);\n            var valueChangePredicate = function (cs, c) {\n                var oldActive = cs.aggFunc != null;\n                var activeChanged = oldActive != c.isValueActive();\n                // we only check aggFunc if the agg is active\n                var aggFuncChanged = oldActive && cs.aggFunc != c.getAggFunc();\n                return activeChanged || aggFuncChanged;\n            };\n            var changedValues = getChangedColumns(valueChangePredicate);\n            if (changedValues.length > 0) {\n                // we pass all value columns, now the ones that changed. this is the same\n                // as pivot and rowGroup cols, but different to all other properties below.\n                // this is more for backwards compatibility, as it's always been this way.\n                // really it should be the other way, as the order of the cols makes no difference\n                // for valueColumns (apart from displaying them in the tool panel).\n                _this.dispatchColumnChangedEvent(Events.EVENT_COLUMN_VALUE_CHANGED, _this.valueColumns, source);\n            }\n            var resizeChangePredicate = function (cs, c) { return cs.width != c.getActualWidth(); };\n            _this.dispatchColumnResizedEvent(getChangedColumns(resizeChangePredicate), true, source);\n            var pinnedChangePredicate = function (cs, c) { return cs.pinned != c.getPinned(); };\n            _this.dispatchColumnPinnedEvent(getChangedColumns(pinnedChangePredicate), source);\n            var visibilityChangePredicate = function (cs, c) { return cs.hide == c.isVisible(); };\n            _this.dispatchColumnVisibleEvent(getChangedColumns(visibilityChangePredicate), source);\n            var sortChangePredicate = function (cs, c) { return cs.sort != c.getSort() || cs.sortIndex != c.getSortIndex(); };\n            if (getChangedColumns(sortChangePredicate).length > 0) {\n                _this.sortController.dispatchSortChangedEvents(source);\n            }\n            // special handling for moved column events\n            _this.normaliseColumnMovedEventForColumnState(columnStateBefore, source);\n        };\n    };\n    ColumnModel.prototype.getCommonValue = function (cols, valueGetter) {\n        if (!cols || cols.length == 0) {\n            return undefined;\n        }\n        // compare each value to the first value. if nothing differs, then value is common so return it.\n        var firstValue = valueGetter(cols[0]);\n        for (var i = 1; i < cols.length; i++) {\n            if (firstValue !== valueGetter(cols[i])) {\n                // values differ, no common value\n                return undefined;\n            }\n        }\n        return firstValue;\n    };\n    ColumnModel.prototype.normaliseColumnMovedEventForColumnState = function (colStateBefore, source) {\n        // we are only interested in columns that were both present and visible before and after\n        var _this = this;\n        var colStateAfter = this.getColumnState();\n        var colStateAfterMapped = {};\n        colStateAfter.forEach(function (s) { return colStateAfterMapped[s.colId] = s; });\n        // get id's of cols in both before and after lists\n        var colsIntersectIds = {};\n        colStateBefore.forEach(function (s) {\n            if (colStateAfterMapped[s.colId]) {\n                colsIntersectIds[s.colId] = true;\n            }\n        });\n        // filter state lists, so we only have cols that were present before and after\n        var beforeFiltered = colStateBefore.filter(function (c) { return colsIntersectIds[c.colId]; });\n        var afterFiltered = colStateAfter.filter(function (c) { return colsIntersectIds[c.colId]; });\n        // see if any cols are in a different location\n        var movedColumns = [];\n        afterFiltered.forEach(function (csAfter, index) {\n            var csBefore = beforeFiltered && beforeFiltered[index];\n            if (csBefore && csBefore.colId !== csAfter.colId) {\n                var gridCol = _this.getGridColumn(csBefore.colId);\n                if (gridCol) {\n                    movedColumns.push(gridCol);\n                }\n            }\n        });\n        if (!movedColumns.length) {\n            return;\n        }\n        this.dispatchColumnMovedEvent({ movedColumns: movedColumns, source: source, finished: true });\n    };\n    ColumnModel.prototype.syncColumnWithStateItem = function (column, stateItem, defaultState, rowGroupIndexes, pivotIndexes, autoCol, source) {\n        if (!column) {\n            return;\n        }\n        var getValue = function (key1, key2) {\n            var obj = { value1: undefined, value2: undefined };\n            var calculated = false;\n            if (stateItem) {\n                if (stateItem[key1] !== undefined) {\n                    obj.value1 = stateItem[key1];\n                    calculated = true;\n                }\n                if (exists(key2) && stateItem[key2] !== undefined) {\n                    obj.value2 = stateItem[key2];\n                    calculated = true;\n                }\n            }\n            if (!calculated && defaultState) {\n                if (defaultState[key1] !== undefined) {\n                    obj.value1 = defaultState[key1];\n                }\n                if (exists(key2) && defaultState[key2] !== undefined) {\n                    obj.value2 = defaultState[key2];\n                }\n            }\n            return obj;\n        };\n        // following ensures we are left with boolean true or false, eg converts (null, undefined, 0) all to true\n        var hide = getValue('hide').value1;\n        if (hide !== undefined) {\n            column.setVisible(!hide, source);\n        }\n        // sets pinned to 'left' or 'right'\n        var pinned = getValue('pinned').value1;\n        if (pinned !== undefined) {\n            column.setPinned(pinned);\n        }\n        // if width provided and valid, use it, otherwise stick with the old width\n        var minColWidth = this.columnUtils.calculateColMinWidth(column.getColDef());\n        // flex\n        var flex = getValue('flex').value1;\n        if (flex !== undefined) {\n            column.setFlex(flex);\n        }\n        // width - we only set width if column is not flexing\n        var noFlexThisCol = column.getFlex() <= 0;\n        if (noFlexThisCol) {\n            // both null and undefined means we skip, as it's not possible to 'clear' width (a column must have a width)\n            var width = getValue('width').value1;\n            if (width != null) {\n                if (minColWidth != null && width >= minColWidth) {\n                    column.setActualWidth(width, source);\n                }\n            }\n        }\n        var sort = getValue('sort').value1;\n        if (sort !== undefined) {\n            if (sort === 'desc' || sort === 'asc') {\n                column.setSort(sort, source);\n            }\n            else {\n                column.setSort(undefined, source);\n            }\n        }\n        var sortIndex = getValue('sortIndex').value1;\n        if (sortIndex !== undefined) {\n            column.setSortIndex(sortIndex);\n        }\n        // we do not do aggFunc, rowGroup or pivot for auto cols or secondary cols\n        if (autoCol || !column.isPrimary()) {\n            return;\n        }\n        var aggFunc = getValue('aggFunc').value1;\n        if (aggFunc !== undefined) {\n            if (typeof aggFunc === 'string') {\n                column.setAggFunc(aggFunc);\n                if (!column.isValueActive()) {\n                    column.setValueActive(true, source);\n                    this.valueColumns.push(column);\n                }\n            }\n            else {\n                if (exists(aggFunc)) {\n                    console.warn('AG Grid: stateItem.aggFunc must be a string. if using your own aggregation ' +\n                        'functions, register the functions first before using them in get/set state. This is because it is ' +\n                        'intended for the column state to be stored and retrieved as simple JSON.');\n                }\n                // Note: we do not call column.setAggFunc(null), so that next time we aggregate\n                // by this column (eg drag the column to the agg section int he toolpanel) it will\n                // default to the last aggregation function.\n                if (column.isValueActive()) {\n                    column.setValueActive(false, source);\n                    removeFromArray(this.valueColumns, column);\n                }\n            }\n        }\n        var _a = getValue('rowGroup', 'rowGroupIndex'), rowGroup = _a.value1, rowGroupIndex = _a.value2;\n        if (rowGroup !== undefined || rowGroupIndex !== undefined) {\n            if (typeof rowGroupIndex === 'number' || rowGroup) {\n                if (!column.isRowGroupActive()) {\n                    column.setRowGroupActive(true, source);\n                    this.rowGroupColumns.push(column);\n                }\n                if (rowGroupIndexes && typeof rowGroupIndex === 'number') {\n                    rowGroupIndexes[column.getId()] = rowGroupIndex;\n                }\n            }\n            else {\n                if (column.isRowGroupActive()) {\n                    column.setRowGroupActive(false, source);\n                    removeFromArray(this.rowGroupColumns, column);\n                }\n            }\n        }\n        var _b = getValue('pivot', 'pivotIndex'), pivot = _b.value1, pivotIndex = _b.value2;\n        if (pivot !== undefined || pivotIndex !== undefined) {\n            if (typeof pivotIndex === 'number' || pivot) {\n                if (!column.isPivotActive()) {\n                    column.setPivotActive(true, source);\n                    this.pivotColumns.push(column);\n                }\n                if (pivotIndexes && typeof pivotIndex === 'number') {\n                    pivotIndexes[column.getId()] = pivotIndex;\n                }\n            }\n            else {\n                if (column.isPivotActive()) {\n                    column.setPivotActive(false, source);\n                    removeFromArray(this.pivotColumns, column);\n                }\n            }\n        }\n    };\n    ColumnModel.prototype.getGridColumns = function (keys) {\n        return this.getColumns(keys, this.getGridColumn.bind(this));\n    };\n    ColumnModel.prototype.getColumns = function (keys, columnLookupCallback) {\n        var foundColumns = [];\n        if (keys) {\n            keys.forEach(function (key) {\n                var column = columnLookupCallback(key);\n                if (column) {\n                    foundColumns.push(column);\n                }\n            });\n        }\n        return foundColumns;\n    };\n    // used by growGroupPanel\n    ColumnModel.prototype.getColumnWithValidation = function (key) {\n        if (key == null) {\n            return null;\n        }\n        var column = this.getGridColumn(key);\n        if (!column) {\n            console.warn('AG Grid: could not find column ' + key);\n        }\n        return column;\n    };\n    ColumnModel.prototype.getPrimaryColumn = function (key) {\n        if (!this.primaryColumns) {\n            return null;\n        }\n        return this.getColumn(key, this.primaryColumns, this.primaryColumnsMap);\n    };\n    ColumnModel.prototype.getGridColumn = function (key) {\n        return this.getColumn(key, this.gridColumns, this.gridColumnsMap);\n    };\n    ColumnModel.prototype.getSecondaryColumn = function (key) {\n        if (!this.secondaryColumns) {\n            return null;\n        }\n        return this.getColumn(key, this.secondaryColumns, this.secondaryColumnsMap);\n    };\n    ColumnModel.prototype.getColumn = function (key, columnList, columnMap) {\n        if (!key) {\n            return null;\n        }\n        // most of the time this method gets called the key is a string, so we put this shortcut in\n        // for performance reasons, to see if we can match for ID (it doesn't do auto columns, that's done below)\n        if (typeof key == 'string' && columnMap[key]) {\n            return columnMap[key];\n        }\n        for (var i = 0; i < columnList.length; i++) {\n            if (this.columnsMatch(columnList[i], key)) {\n                return columnList[i];\n            }\n        }\n        return this.getAutoColumn(key);\n    };\n    ColumnModel.prototype.getSourceColumnsForGroupColumn = function (groupCol) {\n        var sourceColumnId = groupCol.getColDef().showRowGroup;\n        if (!sourceColumnId) {\n            return null;\n        }\n        if (sourceColumnId === true) {\n            return this.rowGroupColumns.slice(0);\n        }\n        var column = this.getPrimaryColumn(sourceColumnId);\n        return column ? [column] : null;\n    };\n    ColumnModel.prototype.getAutoColumn = function (key) {\n        var _this = this;\n        if (!this.groupAutoColumns ||\n            !exists(this.groupAutoColumns) ||\n            missing(this.groupAutoColumns)) {\n            return null;\n        }\n        return this.groupAutoColumns.find(function (groupCol) { return _this.columnsMatch(groupCol, key); }) || null;\n    };\n    ColumnModel.prototype.columnsMatch = function (column, key) {\n        var columnMatches = column === key;\n        var colDefMatches = column.getColDef() === key;\n        var idMatches = column.getColId() == key;\n        return columnMatches || colDefMatches || idMatches;\n    };\n    ColumnModel.prototype.getDisplayNameForColumn = function (column, location, includeAggFunc) {\n        if (includeAggFunc === void 0) { includeAggFunc = false; }\n        if (!column) {\n            return null;\n        }\n        var headerName = this.getHeaderName(column.getColDef(), column, null, null, location);\n        if (includeAggFunc) {\n            return this.wrapHeaderNameWithAggFunc(column, headerName);\n        }\n        return headerName;\n    };\n    ColumnModel.prototype.getDisplayNameForProvidedColumnGroup = function (columnGroup, providedColumnGroup, location) {\n        var colGroupDef = providedColumnGroup ? providedColumnGroup.getColGroupDef() : null;\n        if (colGroupDef) {\n            return this.getHeaderName(colGroupDef, null, columnGroup, providedColumnGroup, location);\n        }\n        return null;\n    };\n    ColumnModel.prototype.getDisplayNameForColumnGroup = function (columnGroup, location) {\n        return this.getDisplayNameForProvidedColumnGroup(columnGroup, columnGroup.getProvidedColumnGroup(), location);\n    };\n    // location is where the column is going to appear, ie who is calling us\n    ColumnModel.prototype.getHeaderName = function (colDef, column, columnGroup, providedColumnGroup, location) {\n        var headerValueGetter = colDef.headerValueGetter;\n        if (headerValueGetter) {\n            var params = {\n                colDef: colDef,\n                column: column,\n                columnGroup: columnGroup,\n                providedColumnGroup: providedColumnGroup,\n                location: location,\n                api: this.gridOptionsService.api,\n                columnApi: this.gridOptionsService.columnApi,\n                context: this.gridOptionsService.context\n            };\n            if (typeof headerValueGetter === 'function') {\n                // valueGetter is a function, so just call it\n                return headerValueGetter(params);\n            }\n            else if (typeof headerValueGetter === 'string') {\n                // valueGetter is an expression, so execute the expression\n                return this.expressionService.evaluate(headerValueGetter, params);\n            }\n            console.warn('AG Grid: headerValueGetter must be a function or a string');\n            return '';\n        }\n        else if (colDef.headerName != null) {\n            return colDef.headerName;\n        }\n        else if (colDef.field) {\n            return camelCaseToHumanText(colDef.field);\n        }\n        return '';\n    };\n    ColumnModel.prototype.wrapHeaderNameWithAggFunc = function (column, headerName) {\n        if (this.gridOptionsService.is('suppressAggFuncInHeader')) {\n            return headerName;\n        }\n        // only columns with aggregation active can have aggregations\n        var pivotValueColumn = column.getColDef().pivotValueColumn;\n        var pivotActiveOnThisColumn = exists(pivotValueColumn);\n        var aggFunc = null;\n        var aggFuncFound;\n        // otherwise we have a measure that is active, and we are doing aggregation on it\n        if (pivotActiveOnThisColumn) {\n            var isCollapsedHeaderEnabled = this.gridOptionsService.is('removePivotHeaderRowWhenSingleValueColumn') && this.valueColumns.length === 1;\n            var isTotalColumn = column.getColDef().pivotTotalColumnIds !== undefined;\n            if (isCollapsedHeaderEnabled && !isTotalColumn) {\n                return headerName; // Skip decorating the header - in this case the label is the pivot key, not the value col\n            }\n            aggFunc = pivotValueColumn ? pivotValueColumn.getAggFunc() : null;\n            aggFuncFound = true;\n        }\n        else {\n            var measureActive = column.isValueActive();\n            var aggregationPresent = this.pivotMode || !this.isRowGroupEmpty();\n            if (measureActive && aggregationPresent) {\n                aggFunc = column.getAggFunc();\n                aggFuncFound = true;\n            }\n            else {\n                aggFuncFound = false;\n            }\n        }\n        if (aggFuncFound) {\n            var aggFuncString = (typeof aggFunc === 'string') ? aggFunc : 'func';\n            var localeTextFunc = this.localeService.getLocaleTextFunc();\n            var aggFuncStringTranslated = localeTextFunc(aggFuncString, aggFuncString);\n            return aggFuncStringTranslated + \"(\" + headerName + \")\";\n        }\n        return headerName;\n    };\n    // returns the group with matching colId and instanceId. If instanceId is missing,\n    // matches only on the colId.\n    ColumnModel.prototype.getColumnGroup = function (colId, partId) {\n        if (!colId) {\n            return null;\n        }\n        if (colId instanceof ColumnGroup) {\n            return colId;\n        }\n        var allColumnGroups = this.getAllDisplayedTrees();\n        var checkPartId = typeof partId === 'number';\n        var result = null;\n        this.columnUtils.depthFirstAllColumnTreeSearch(allColumnGroups, function (child) {\n            if (child instanceof ColumnGroup) {\n                var columnGroup = child;\n                var matched = void 0;\n                if (checkPartId) {\n                    matched = colId === columnGroup.getGroupId() && partId === columnGroup.getPartId();\n                }\n                else {\n                    matched = colId === columnGroup.getGroupId();\n                }\n                if (matched) {\n                    result = columnGroup;\n                }\n            }\n        });\n        return result;\n    };\n    ColumnModel.prototype.isReady = function () {\n        return this.ready;\n    };\n    ColumnModel.prototype.extractValueColumns = function (source, oldPrimaryColumns) {\n        this.valueColumns = this.extractColumns(oldPrimaryColumns, this.valueColumns, function (col, flag) { return col.setValueActive(flag, source); }, \n        // aggFunc doesn't have index variant, cos order of value cols doesn't matter, so always return null\n        function () { return undefined; }, function () { return undefined; }, \n        // aggFunc is a string, so return it's existence\n        function (colDef) {\n            var aggFunc = colDef.aggFunc;\n            // null or empty string means clear\n            if (aggFunc === null || aggFunc === '') {\n                return null;\n            }\n            if (aggFunc === undefined) {\n                return;\n            }\n            return !!aggFunc;\n        }, function (colDef) {\n            // return false if any of the following: null, undefined, empty string\n            return colDef.initialAggFunc != null && colDef.initialAggFunc != '';\n        });\n        // all new columns added will have aggFunc missing, so set it to what is in the colDef\n        this.valueColumns.forEach(function (col) {\n            var colDef = col.getColDef();\n            // if aggFunc provided, we always override, as reactive property\n            if (colDef.aggFunc != null && colDef.aggFunc != '') {\n                col.setAggFunc(colDef.aggFunc);\n            }\n            else {\n                // otherwise we use initialAggFunc only if no agg func set - which happens when new column only\n                if (!col.getAggFunc()) {\n                    col.setAggFunc(colDef.initialAggFunc);\n                }\n            }\n        });\n    };\n    ColumnModel.prototype.extractRowGroupColumns = function (source, oldPrimaryColumns) {\n        this.rowGroupColumns = this.extractColumns(oldPrimaryColumns, this.rowGroupColumns, function (col, flag) { return col.setRowGroupActive(flag, source); }, function (colDef) { return colDef.rowGroupIndex; }, function (colDef) { return colDef.initialRowGroupIndex; }, function (colDef) { return colDef.rowGroup; }, function (colDef) { return colDef.initialRowGroup; });\n    };\n    ColumnModel.prototype.extractColumns = function (oldPrimaryColumns, previousCols, setFlagFunc, getIndexFunc, getInitialIndexFunc, getValueFunc, getInitialValueFunc) {\n        if (oldPrimaryColumns === void 0) { oldPrimaryColumns = []; }\n        if (previousCols === void 0) { previousCols = []; }\n        var colsWithIndex = [];\n        var colsWithValue = [];\n        // go though all cols.\n        // if value, change\n        // if default only, change only if new\n        (this.primaryColumns || []).forEach(function (col) {\n            var colIsNew = oldPrimaryColumns.indexOf(col) < 0;\n            var colDef = col.getColDef();\n            var value = attrToBoolean(getValueFunc(colDef));\n            var initialValue = attrToBoolean(getInitialValueFunc(colDef));\n            var index = attrToNumber(getIndexFunc(colDef));\n            var initialIndex = attrToNumber(getInitialIndexFunc(colDef));\n            var include;\n            var valuePresent = value !== undefined;\n            var indexPresent = index !== undefined;\n            var initialValuePresent = initialValue !== undefined;\n            var initialIndexPresent = initialIndex !== undefined;\n            if (valuePresent) {\n                include = value; // boolean value is guaranteed as attrToBoolean() is used above\n            }\n            else if (indexPresent) {\n                if (index === null) {\n                    // if col is new we don't want to use the default / initial if index is set to null. Similarly,\n                    // we don't want to include the property for existing columns, i.e. we want to 'clear' it.\n                    include = false;\n                }\n                else {\n                    // note that 'null >= 0' evaluates to true which means 'rowGroupIndex = null' would enable row\n                    // grouping if the null check didn't exist above.\n                    include = index >= 0;\n                }\n            }\n            else {\n                if (colIsNew) {\n                    // as no value or index is 'present' we use the default / initial when col is new\n                    if (initialValuePresent) {\n                        include = initialValue;\n                    }\n                    else if (initialIndexPresent) {\n                        include = initialIndex != null && initialIndex >= 0;\n                    }\n                    else {\n                        include = false;\n                    }\n                }\n                else {\n                    // otherwise include it if included last time, e.g. if we are extracting row group cols and this col\n                    // is an existing row group col (i.e. it exists in 'previousCols') then we should include it.\n                    include = previousCols.indexOf(col) >= 0;\n                }\n            }\n            if (include) {\n                var useIndex = colIsNew ? (index != null || initialIndex != null) : index != null;\n                useIndex ? colsWithIndex.push(col) : colsWithValue.push(col);\n            }\n        });\n        var getIndexForCol = function (col) {\n            var index = getIndexFunc(col.getColDef());\n            var defaultIndex = getInitialIndexFunc(col.getColDef());\n            return index != null ? index : defaultIndex;\n        };\n        // sort cols with index, and add these first\n        colsWithIndex.sort(function (colA, colB) {\n            var indexA = getIndexForCol(colA);\n            var indexB = getIndexForCol(colB);\n            if (indexA === indexB) {\n                return 0;\n            }\n            if (indexA < indexB) {\n                return -1;\n            }\n            return 1;\n        });\n        var res = [].concat(colsWithIndex);\n        // second add columns that were there before and in the same order as they were before,\n        // so we are preserving order of current grouping of columns that simply have rowGroup=true\n        previousCols.forEach(function (col) {\n            if (colsWithValue.indexOf(col) >= 0) {\n                res.push(col);\n            }\n        });\n        // lastly put in all remaining cols\n        colsWithValue.forEach(function (col) {\n            if (res.indexOf(col) < 0) {\n                res.push(col);\n            }\n        });\n        // set flag=false for removed cols\n        previousCols.forEach(function (col) {\n            if (res.indexOf(col) < 0) {\n                setFlagFunc(col, false);\n            }\n        });\n        // set flag=true for newly added cols\n        res.forEach(function (col) {\n            if (previousCols.indexOf(col) < 0) {\n                setFlagFunc(col, true);\n            }\n        });\n        return res;\n    };\n    ColumnModel.prototype.extractPivotColumns = function (source, oldPrimaryColumns) {\n        this.pivotColumns = this.extractColumns(oldPrimaryColumns, this.pivotColumns, function (col, flag) { return col.setPivotActive(flag, source); }, function (colDef) { return colDef.pivotIndex; }, function (colDef) { return colDef.initialPivotIndex; }, function (colDef) { return colDef.pivot; }, function (colDef) { return colDef.initialPivot; });\n    };\n    ColumnModel.prototype.resetColumnGroupState = function (source) {\n        if (source === void 0) { source = \"api\"; }\n        var stateItems = [];\n        this.columnUtils.depthFirstOriginalTreeSearch(null, this.primaryColumnTree, function (child) {\n            if (child instanceof ProvidedColumnGroup) {\n                var colGroupDef = child.getColGroupDef();\n                var groupState = {\n                    groupId: child.getGroupId(),\n                    open: !colGroupDef ? undefined : colGroupDef.openByDefault\n                };\n                stateItems.push(groupState);\n            }\n        });\n        this.setColumnGroupState(stateItems, source);\n    };\n    ColumnModel.prototype.getColumnGroupState = function () {\n        var columnGroupState = [];\n        this.columnUtils.depthFirstOriginalTreeSearch(null, this.gridBalancedTree, function (node) {\n            if (node instanceof ProvidedColumnGroup) {\n                columnGroupState.push({\n                    groupId: node.getGroupId(),\n                    open: node.isExpanded()\n                });\n            }\n        });\n        return columnGroupState;\n    };\n    ColumnModel.prototype.setColumnGroupState = function (stateItems, source) {\n        var _this = this;\n        if (source === void 0) { source = \"api\"; }\n        this.columnAnimationService.start();\n        var impactedGroups = [];\n        stateItems.forEach(function (stateItem) {\n            var groupKey = stateItem.groupId;\n            var newValue = stateItem.open;\n            var providedColumnGroup = _this.getProvidedColumnGroup(groupKey);\n            if (!providedColumnGroup) {\n                return;\n            }\n            if (providedColumnGroup.isExpanded() === newValue) {\n                return;\n            }\n            _this.logger.log('columnGroupOpened(' + providedColumnGroup.getGroupId() + ',' + newValue + ')');\n            providedColumnGroup.setExpanded(newValue);\n            impactedGroups.push(providedColumnGroup);\n        });\n        this.updateGroupsAndDisplayedColumns(source);\n        this.setFirstRightAndLastLeftPinned(source);\n        impactedGroups.forEach(function (providedColumnGroup) {\n            var event = {\n                type: Events.EVENT_COLUMN_GROUP_OPENED,\n                columnGroup: providedColumnGroup\n            };\n            _this.eventService.dispatchEvent(event);\n        });\n        this.columnAnimationService.finish();\n    };\n    // called by headerRenderer - when a header is opened or closed\n    ColumnModel.prototype.setColumnGroupOpened = function (key, newValue, source) {\n        if (source === void 0) { source = \"api\"; }\n        var keyAsString;\n        if (key instanceof ProvidedColumnGroup) {\n            keyAsString = key.getId();\n        }\n        else {\n            keyAsString = key || '';\n        }\n        this.setColumnGroupState([{ groupId: keyAsString, open: newValue }], source);\n    };\n    ColumnModel.prototype.getProvidedColumnGroup = function (key) {\n        // if (key instanceof ProvidedColumnGroup) { return key; }\n        if (typeof key !== 'string') {\n            console.error('AG Grid: group key must be a string');\n        }\n        // otherwise, search for the column group by id\n        var res = null;\n        this.columnUtils.depthFirstOriginalTreeSearch(null, this.gridBalancedTree, function (node) {\n            if (node instanceof ProvidedColumnGroup) {\n                if (node.getId() === key) {\n                    res = node;\n                }\n            }\n        });\n        return res;\n    };\n    ColumnModel.prototype.calculateColumnsForDisplay = function () {\n        var _this = this;\n        var columnsForDisplay;\n        if (this.pivotMode && missing(this.secondaryColumns)) {\n            // pivot mode is on, but we are not pivoting, so we only\n            // show columns we are aggregating on\n            columnsForDisplay = this.gridColumns.filter(function (column) {\n                var isAutoGroupCol = _this.groupAutoColumns && includes(_this.groupAutoColumns, column);\n                var isValueCol = _this.valueColumns && includes(_this.valueColumns, column);\n                return isAutoGroupCol || isValueCol;\n            });\n        }\n        else {\n            // otherwise continue as normal. this can be working on the primary\n            // or secondary columns, whatever the gridColumns are set to\n            columnsForDisplay = this.gridColumns.filter(function (column) {\n                // keep col if a) it's auto-group or b) it's visible\n                var isAutoGroupCol = _this.groupAutoColumns && includes(_this.groupAutoColumns, column);\n                return isAutoGroupCol || column.isVisible();\n            });\n        }\n        return columnsForDisplay;\n    };\n    ColumnModel.prototype.checkColSpanActiveInCols = function (columns) {\n        var result = false;\n        columns.forEach(function (col) {\n            if (exists(col.getColDef().colSpan)) {\n                result = true;\n            }\n        });\n        return result;\n    };\n    ColumnModel.prototype.calculateColumnsForGroupDisplay = function () {\n        var _this = this;\n        this.groupDisplayColumns = [];\n        this.groupDisplayColumnsMap = {};\n        var checkFunc = function (col) {\n            var colDef = col.getColDef();\n            var underlyingColumn = colDef.showRowGroup;\n            if (colDef && exists(underlyingColumn)) {\n                _this.groupDisplayColumns.push(col);\n                if (typeof underlyingColumn === 'string') {\n                    _this.groupDisplayColumnsMap[underlyingColumn] = col;\n                }\n                else if (underlyingColumn === true) {\n                    _this.getRowGroupColumns().forEach(function (rowGroupCol) {\n                        _this.groupDisplayColumnsMap[rowGroupCol.getId()] = col;\n                    });\n                }\n            }\n        };\n        this.gridColumns.forEach(checkFunc);\n        if (this.groupAutoColumns) {\n            this.groupAutoColumns.forEach(checkFunc);\n        }\n    };\n    ColumnModel.prototype.getGroupDisplayColumns = function () {\n        return this.groupDisplayColumns;\n    };\n    ColumnModel.prototype.getGroupDisplayColumnForGroup = function (rowGroupColumnId) {\n        return this.groupDisplayColumnsMap[rowGroupColumnId];\n    };\n    ColumnModel.prototype.updateDisplayedColumns = function (source) {\n        var columnsForDisplay = this.calculateColumnsForDisplay();\n        this.buildDisplayedTrees(columnsForDisplay);\n        this.calculateColumnsForGroupDisplay();\n        // also called when group opened/closed\n        this.updateGroupsAndDisplayedColumns(source);\n        // also called when group opened/closed\n        this.setFirstRightAndLastLeftPinned(source);\n    };\n    ColumnModel.prototype.isSecondaryColumnsPresent = function () {\n        return exists(this.secondaryColumns);\n    };\n    ColumnModel.prototype.setSecondaryColumns = function (colDefs, source) {\n        var _this = this;\n        if (source === void 0) { source = \"api\"; }\n        var newColsPresent = colDefs && colDefs.length > 0;\n        // if not cols passed, and we had no cols anyway, then do nothing\n        if (!newColsPresent && missing(this.secondaryColumns)) {\n            return;\n        }\n        if (newColsPresent) {\n            this.processSecondaryColumnDefinitions(colDefs);\n            var balancedTreeResult = this.columnFactory.createColumnTree(colDefs, false, this.secondaryBalancedTree || this.previousSecondaryColumns || undefined);\n            this.destroyOldColumns(this.secondaryBalancedTree, balancedTreeResult.columnTree);\n            this.secondaryBalancedTree = balancedTreeResult.columnTree;\n            this.secondaryHeaderRowCount = balancedTreeResult.treeDept + 1;\n            this.secondaryColumns = this.getColumnsFromTree(this.secondaryBalancedTree);\n            this.secondaryColumnsMap = {};\n            this.secondaryColumns.forEach(function (col) { return _this.secondaryColumnsMap[col.getId()] = col; });\n            this.previousSecondaryColumns = null;\n        }\n        else {\n            this.previousSecondaryColumns = this.secondaryBalancedTree;\n            this.secondaryBalancedTree = null;\n            this.secondaryHeaderRowCount = -1;\n            this.secondaryColumns = null;\n            this.secondaryColumnsMap = {};\n        }\n        this.updateGridColumns();\n        this.updateDisplayedColumns(source);\n    };\n    ColumnModel.prototype.processSecondaryColumnDefinitions = function (colDefs) {\n        var columnCallback = this.gridOptionsService.get('processPivotResultColDef') || this.gridOptionsService.get('processSecondaryColDef');\n        var groupCallback = this.gridOptionsService.get('processPivotResultColGroupDef') || this.gridOptionsService.get('processSecondaryColGroupDef');\n        if (!columnCallback && !groupCallback) {\n            return undefined;\n        }\n        var searchForColDefs = function (colDefs2) {\n            colDefs2.forEach(function (abstractColDef) {\n                var isGroup = exists(abstractColDef.children);\n                if (isGroup) {\n                    var colGroupDef = abstractColDef;\n                    if (groupCallback) {\n                        groupCallback(colGroupDef);\n                    }\n                    searchForColDefs(colGroupDef.children);\n                }\n                else {\n                    var colDef = abstractColDef;\n                    if (columnCallback) {\n                        columnCallback(colDef);\n                    }\n                }\n            });\n        };\n        if (colDefs) {\n            searchForColDefs(colDefs);\n        }\n    };\n    // called from: applyColumnState, setColumnDefs, setSecondaryColumns\n    ColumnModel.prototype.updateGridColumns = function () {\n        var _this = this;\n        var prevGridCols = this.gridBalancedTree;\n        if (this.gridColsArePrimary) {\n            this.lastPrimaryOrder = this.gridColumns;\n        }\n        else {\n            this.lastSecondaryOrder = this.gridColumns;\n        }\n        var sortOrderToRecover;\n        if (this.secondaryColumns && this.secondaryBalancedTree) {\n            var hasSameColumns = this.secondaryColumns.every(function (col) {\n                return _this.gridColumnsMap[col.getColId()] !== undefined;\n            });\n            this.gridBalancedTree = this.secondaryBalancedTree.slice();\n            this.gridHeaderRowCount = this.secondaryHeaderRowCount;\n            this.gridColumns = this.secondaryColumns.slice();\n            this.gridColsArePrimary = false;\n            // If the current columns are the same or a subset of the previous\n            // we keep the previous order, otherwise we go back to the order the pivot\n            // cols are generated in\n            if (hasSameColumns) {\n                sortOrderToRecover = this.lastSecondaryOrder;\n            }\n        }\n        else if (this.primaryColumns) {\n            this.gridBalancedTree = this.primaryColumnTree.slice();\n            this.gridHeaderRowCount = this.primaryHeaderRowCount;\n            this.gridColumns = this.primaryColumns.slice();\n            this.gridColsArePrimary = true;\n            // updateGridColumns gets called after user adds a row group. we want to maintain the order of the columns\n            // when this happens (eg if user moved a column) rather than revert back to the original column order.\n            // likewise if changing in/out of pivot mode, we want to maintain the order of the cols\n            sortOrderToRecover = this.lastPrimaryOrder;\n        }\n        // create the new auto columns\n        var areAutoColsChanged = this.createGroupAutoColumnsIfNeeded();\n        // if auto group cols have changed, and we have a sort order, we need to move auto cols to the start\n        if (areAutoColsChanged && sortOrderToRecover) {\n            var groupAutoColsMap_1 = convertToMap(this.groupAutoColumns.map(function (col) { return [col, true]; }));\n            // if group columns has changed, we don't preserve the group column order, so remove them from the old order\n            sortOrderToRecover = sortOrderToRecover.filter(function (col) { return !groupAutoColsMap_1.has(col); });\n            // and add them to the start of the order\n            sortOrderToRecover = __spread$k(this.groupAutoColumns, sortOrderToRecover);\n        }\n        this.addAutoGroupToGridColumns();\n        this.orderGridColsLike(sortOrderToRecover);\n        this.gridColumns = this.placeLockedColumns(this.gridColumns);\n        this.refreshQuickFilterColumns();\n        this.clearDisplayedAndViewportColumns();\n        this.colSpanActive = this.checkColSpanActiveInCols(this.gridColumns);\n        this.gridColumnsMap = {};\n        this.gridColumns.forEach(function (col) { return _this.gridColumnsMap[col.getId()] = col; });\n        this.setAutoHeightActive();\n        if (!areEqual(prevGridCols, this.gridBalancedTree)) {\n            var event_4 = {\n                type: Events.EVENT_GRID_COLUMNS_CHANGED\n            };\n            this.eventService.dispatchEvent(event_4);\n        }\n    };\n    ColumnModel.prototype.setAutoHeightActive = function () {\n        this.autoHeightActive = this.gridColumns.filter(function (col) { return col.isAutoHeight(); }).length > 0;\n        if (this.autoHeightActive) {\n            this.autoHeightActiveAtLeastOnce = true;\n            var supportedRowModel = this.gridOptionsService.isRowModelType('clientSide') || this.gridOptionsService.isRowModelType('serverSide');\n            if (!supportedRowModel) {\n                var message_1 = 'AG Grid - autoHeight columns only work with Client Side Row Model and Server Side Row Model.';\n                doOnce(function () { return console.warn(message_1); }, 'autoHeightActive.wrongRowModel');\n            }\n        }\n    };\n    ColumnModel.prototype.orderGridColsLike = function (colsOrder) {\n        if (missing(colsOrder)) {\n            return;\n        }\n        var lastOrderMapped = convertToMap(colsOrder.map(function (col, index) { return [col, index]; }));\n        // only do the sort if at least one column is accounted for. columns will be not accounted for\n        // if changing from secondary to primary columns\n        var noColsFound = true;\n        this.gridColumns.forEach(function (col) {\n            if (lastOrderMapped.has(col)) {\n                noColsFound = false;\n            }\n        });\n        if (noColsFound) {\n            return;\n        }\n        // order cols in the same order as before. we need to make sure that all\n        // cols still exists, so filter out any that no longer exist.\n        var gridColsMap = convertToMap(this.gridColumns.map(function (col) { return [col, true]; }));\n        var oldColsOrdered = colsOrder.filter(function (col) { return gridColsMap.has(col); });\n        var oldColsMap = convertToMap(oldColsOrdered.map(function (col) { return [col, true]; }));\n        var newColsOrdered = this.gridColumns.filter(function (col) { return !oldColsMap.has(col); });\n        // add in the new columns, at the end (if no group), or at the end of the group (if a group)\n        var newGridColumns = oldColsOrdered.slice();\n        newColsOrdered.forEach(function (newCol) {\n            var parent = newCol.getOriginalParent();\n            // if no parent, means we are not grouping, so just add the column to the end\n            if (!parent) {\n                newGridColumns.push(newCol);\n                return;\n            }\n            // find the group the column belongs to. if no siblings at the current level (eg col in group on it's\n            // own) then go up one level and look for siblings there.\n            var siblings = [];\n            while (!siblings.length && parent) {\n                var leafCols = parent.getLeafColumns();\n                leafCols.forEach(function (leafCol) {\n                    var presentInNewGriColumns = newGridColumns.indexOf(leafCol) >= 0;\n                    var noYetInSiblings = siblings.indexOf(leafCol) < 0;\n                    if (presentInNewGriColumns && noYetInSiblings) {\n                        siblings.push(leafCol);\n                    }\n                });\n                parent = parent.getOriginalParent();\n            }\n            // if no siblings exist at any level, this means the col is in a group (or parent groups) on it's own\n            if (!siblings.length) {\n                newGridColumns.push(newCol);\n                return;\n            }\n            // find index of last column in the group\n            var indexes = siblings.map(function (col) { return newGridColumns.indexOf(col); });\n            var lastIndex = Math.max.apply(Math, __spread$k(indexes));\n            insertIntoArray(newGridColumns, newCol, lastIndex + 1);\n        });\n        this.gridColumns = newGridColumns;\n    };\n    ColumnModel.prototype.isPrimaryColumnGroupsPresent = function () {\n        return this.primaryHeaderRowCount > 1;\n    };\n    // if we are using autoGroupCols, then they should be included for quick filter. this covers the\n    // following scenarios:\n    // a) user provides 'field' into autoGroupCol of normal grid, so now because a valid col to filter leafs on\n    // b) using tree data and user depends on autoGroupCol for first col, and we also want to filter on this\n    //    (tree data is a bit different, as parent rows can be filtered on, unlike row grouping)\n    ColumnModel.prototype.refreshQuickFilterColumns = function () {\n        var _a;\n        var columnsForQuickFilter;\n        if (this.groupAutoColumns) {\n            columnsForQuickFilter = ((_a = this.primaryColumns) !== null && _a !== void 0 ? _a : []).concat(this.groupAutoColumns);\n        }\n        else if (this.primaryColumns) {\n            columnsForQuickFilter = this.primaryColumns;\n        }\n        columnsForQuickFilter = columnsForQuickFilter !== null && columnsForQuickFilter !== void 0 ? columnsForQuickFilter : [];\n        this.columnsForQuickFilter = this.gridOptionsService.is('excludeHiddenColumnsFromQuickFilter')\n            ? columnsForQuickFilter.filter(function (col) { return col.isVisible() || col.isRowGroupActive(); })\n            : columnsForQuickFilter;\n    };\n    ColumnModel.prototype.placeLockedColumns = function (cols) {\n        var left = [];\n        var normal = [];\n        var right = [];\n        cols.forEach(function (col) {\n            var position = col.getColDef().lockPosition;\n            if (position === 'right') {\n                right.push(col);\n            }\n            else if (position === 'left' || position === true) {\n                left.push(col);\n            }\n            else {\n                normal.push(col);\n            }\n        });\n        return __spread$k(left, normal, right);\n    };\n    ColumnModel.prototype.addAutoGroupToGridColumns = function () {\n        if (missing(this.groupAutoColumns)) {\n            this.destroyOldColumns(this.groupAutoColsBalancedTree);\n            this.groupAutoColsBalancedTree = null;\n            return;\n        }\n        this.gridColumns = this.groupAutoColumns ? this.groupAutoColumns.concat(this.gridColumns) : this.gridColumns;\n        var newAutoColsTree = this.columnFactory.createForAutoGroups(this.groupAutoColumns, this.gridBalancedTree);\n        this.destroyOldColumns(this.groupAutoColsBalancedTree, newAutoColsTree);\n        this.groupAutoColsBalancedTree = newAutoColsTree;\n        this.gridBalancedTree = newAutoColsTree.concat(this.gridBalancedTree);\n    };\n    // gets called after we copy down grid columns, to make sure any part of the gui\n    // that tries to draw, eg the header, it will get empty lists of columns rather\n    // than stale columns. for example, the header will received gridColumnsChanged\n    // event, so will try and draw, but it will draw successfully when it acts on the\n    // virtualColumnsChanged event\n    ColumnModel.prototype.clearDisplayedAndViewportColumns = function () {\n        this.viewportRowLeft = {};\n        this.viewportRowRight = {};\n        this.viewportRowCenter = {};\n        this.displayedColumnsLeft = [];\n        this.displayedColumnsRight = [];\n        this.displayedColumnsCenter = [];\n        this.displayedColumns = [];\n        this.viewportColumns = [];\n        this.headerViewportColumns = [];\n        this.viewportColumnsHash = '';\n    };\n    ColumnModel.prototype.updateGroupsAndDisplayedColumns = function (source) {\n        this.updateOpenClosedVisibilityInColumnGroups();\n        this.deriveDisplayedColumns(source);\n        this.refreshFlexedColumns();\n        this.extractViewport();\n        this.updateBodyWidths();\n        // this event is picked up by the gui, headerRenderer and rowRenderer, to recalculate what columns to display\n        var event = {\n            type: Events.EVENT_DISPLAYED_COLUMNS_CHANGED\n        };\n        this.eventService.dispatchEvent(event);\n    };\n    ColumnModel.prototype.deriveDisplayedColumns = function (source) {\n        this.derivedDisplayedColumnsFromDisplayedTree(this.displayedTreeLeft, this.displayedColumnsLeft);\n        this.derivedDisplayedColumnsFromDisplayedTree(this.displayedTreeCentre, this.displayedColumnsCenter);\n        this.derivedDisplayedColumnsFromDisplayedTree(this.displayedTreeRight, this.displayedColumnsRight);\n        this.joinDisplayedColumns();\n        this.setLeftValues(source);\n        this.displayedAutoHeightCols = this.displayedColumns.filter(function (col) { return col.isAutoHeight(); });\n    };\n    ColumnModel.prototype.isAutoRowHeightActive = function () {\n        return this.autoHeightActive;\n    };\n    ColumnModel.prototype.wasAutoRowHeightEverActive = function () {\n        return this.autoHeightActiveAtLeastOnce;\n    };\n    ColumnModel.prototype.joinDisplayedColumns = function () {\n        if (this.gridOptionsService.is('enableRtl')) {\n            this.displayedColumns = this.displayedColumnsRight\n                .concat(this.displayedColumnsCenter)\n                .concat(this.displayedColumnsLeft);\n        }\n        else {\n            this.displayedColumns = this.displayedColumnsLeft\n                .concat(this.displayedColumnsCenter)\n                .concat(this.displayedColumnsRight);\n        }\n    };\n    // sets the left pixel position of each column\n    ColumnModel.prototype.setLeftValues = function (source) {\n        this.setLeftValuesOfColumns(source);\n        this.setLeftValuesOfGroups();\n    };\n    ColumnModel.prototype.setLeftValuesOfColumns = function (source) {\n        var _this = this;\n        if (!this.primaryColumns) {\n            return;\n        }\n        // go through each list of displayed columns\n        var allColumns = this.primaryColumns.slice(0);\n        // let totalColumnWidth = this.getWidthOfColsInList()\n        var doingRtl = this.gridOptionsService.is('enableRtl');\n        [\n            this.displayedColumnsLeft,\n            this.displayedColumnsRight,\n            this.displayedColumnsCenter\n        ].forEach(function (columns) {\n            if (doingRtl) {\n                // when doing RTL, we start at the top most pixel (ie RHS) and work backwards\n                var left_1 = _this.getWidthOfColsInList(columns);\n                columns.forEach(function (column) {\n                    left_1 -= column.getActualWidth();\n                    column.setLeft(left_1, source);\n                });\n            }\n            else {\n                // otherwise normal LTR, we start at zero\n                var left_2 = 0;\n                columns.forEach(function (column) {\n                    column.setLeft(left_2, source);\n                    left_2 += column.getActualWidth();\n                });\n            }\n            removeAllFromArray(allColumns, columns);\n        });\n        // items left in allColumns are columns not displayed, so remove the left position. this is\n        // important for the rows, as if a col is made visible, then taken out, then made visible again,\n        // we don't want the animation of the cell floating in from the old position, whatever that was.\n        allColumns.forEach(function (column) {\n            column.setLeft(null, source);\n        });\n    };\n    ColumnModel.prototype.setLeftValuesOfGroups = function () {\n        // a groups left value is the lest left value of it's children\n        [\n            this.displayedTreeLeft,\n            this.displayedTreeRight,\n            this.displayedTreeCentre\n        ].forEach(function (columns) {\n            columns.forEach(function (column) {\n                if (column instanceof ColumnGroup) {\n                    var columnGroup = column;\n                    columnGroup.checkLeft();\n                }\n            });\n        });\n    };\n    ColumnModel.prototype.derivedDisplayedColumnsFromDisplayedTree = function (tree, columns) {\n        columns.length = 0;\n        this.columnUtils.depthFirstDisplayedColumnTreeSearch(tree, function (child) {\n            if (child instanceof Column) {\n                columns.push(child);\n            }\n        });\n    };\n    ColumnModel.prototype.extractViewportColumns = function () {\n        if (this.suppressColumnVirtualisation) {\n            // no virtualisation, so don't filter\n            this.viewportColumnsCenter = this.displayedColumnsCenter;\n            this.headerViewportColumnsCenter = this.displayedColumnsCenter;\n        }\n        else {\n            // filter out what should be visible\n            this.viewportColumnsCenter = this.displayedColumnsCenter.filter(this.isColumnInRowViewport.bind(this));\n            this.headerViewportColumnsCenter = this.displayedColumnsCenter.filter(this.isColumnInHeaderViewport.bind(this));\n        }\n        this.viewportColumns = this.viewportColumnsCenter\n            .concat(this.displayedColumnsLeft)\n            .concat(this.displayedColumnsRight);\n        this.headerViewportColumns = this.headerViewportColumnsCenter\n            .concat(this.displayedColumnsLeft)\n            .concat(this.displayedColumnsRight);\n    };\n    ColumnModel.prototype.getVirtualHeaderGroupRow = function (type, dept) {\n        var result;\n        switch (type) {\n            case 'left':\n                result = this.viewportRowLeft[dept];\n                break;\n            case 'right':\n                result = this.viewportRowRight[dept];\n                break;\n            default:\n                result = this.viewportRowCenter[dept];\n                break;\n        }\n        if (missing(result)) {\n            result = [];\n        }\n        return result;\n    };\n    ColumnModel.prototype.calculateHeaderRows = function () {\n        // go through each group, see if any of it's cols are displayed, and if yes,\n        // then this group is included\n        this.viewportRowLeft = {};\n        this.viewportRowRight = {};\n        this.viewportRowCenter = {};\n        // for easy lookup when building the groups.\n        var virtualColIds = {};\n        this.headerViewportColumns.forEach(function (col) { return virtualColIds[col.getId()] = true; });\n        var testGroup = function (children, result, dept) {\n            var returnValue = false;\n            for (var i = 0; i < children.length; i++) {\n                // see if this item is within viewport\n                var child = children[i];\n                var addThisItem = false;\n                if (child instanceof Column) {\n                    // for column, test if column is included\n                    addThisItem = virtualColIds[child.getId()] === true;\n                }\n                else {\n                    // if group, base decision on children\n                    var columnGroup = child;\n                    var displayedChildren = columnGroup.getDisplayedChildren();\n                    if (displayedChildren) {\n                        addThisItem = testGroup(displayedChildren, result, dept + 1);\n                    }\n                }\n                if (addThisItem) {\n                    returnValue = true;\n                    if (!result[dept]) {\n                        result[dept] = [];\n                    }\n                    result[dept].push(child);\n                }\n            }\n            return returnValue;\n        };\n        testGroup(this.displayedTreeLeft, this.viewportRowLeft, 0);\n        testGroup(this.displayedTreeRight, this.viewportRowRight, 0);\n        testGroup(this.displayedTreeCentre, this.viewportRowCenter, 0);\n    };\n    ColumnModel.prototype.extractViewport = function () {\n        var hashColumn = function (c) { return c.getId() + \"-\" + (c.getPinned() || 'normal'); };\n        this.extractViewportColumns();\n        var newHash = this.viewportColumns.map(hashColumn).join('#');\n        var changed = this.viewportColumnsHash !== newHash;\n        if (changed) {\n            this.viewportColumnsHash = newHash;\n            this.calculateHeaderRows();\n        }\n        return changed;\n    };\n    ColumnModel.prototype.refreshFlexedColumns = function (params) {\n        var _this = this;\n        if (params === void 0) { params = {}; }\n        var source = params.source ? params.source : 'flex';\n        if (params.viewportWidth != null) {\n            this.flexViewportWidth = params.viewportWidth;\n        }\n        if (!this.flexViewportWidth) {\n            return [];\n        }\n        // If the grid has left-over space, divide it between flexing columns in proportion to their flex value.\n        // A \"flexing column\" is one that has a 'flex' value set and is not currently being constrained by its\n        // minWidth or maxWidth rules.\n        var flexAfterDisplayIndex = -1;\n        if (params.resizingCols) {\n            params.resizingCols.forEach(function (col) {\n                var indexOfCol = _this.displayedColumnsCenter.indexOf(col);\n                if (flexAfterDisplayIndex < indexOfCol) {\n                    flexAfterDisplayIndex = indexOfCol;\n                }\n            });\n        }\n        var isColFlex = function (col) {\n            var afterResizingCols = _this.displayedColumnsCenter.indexOf(col) > flexAfterDisplayIndex;\n            return col.getFlex() && afterResizingCols;\n        };\n        var knownWidthColumns = this.displayedColumnsCenter.filter(function (col) { return !isColFlex(col); });\n        var flexingColumns = this.displayedColumnsCenter.filter(function (col) { return isColFlex(col); });\n        var changedColumns = [];\n        if (!flexingColumns.length) {\n            return [];\n        }\n        var flexingColumnSizes = [];\n        var spaceForFlexingColumns;\n        outer: while (true) {\n            var totalFlex = flexingColumns.reduce(function (count, col) { return count + col.getFlex(); }, 0);\n            spaceForFlexingColumns = this.flexViewportWidth - this.getWidthOfColsInList(knownWidthColumns);\n            for (var i = 0; i < flexingColumns.length; i++) {\n                var col = flexingColumns[i];\n                var widthByFlexRule = spaceForFlexingColumns * col.getFlex() / totalFlex;\n                var constrainedWidth = 0;\n                var minWidth = col.getMinWidth();\n                var maxWidth = col.getMaxWidth();\n                if (exists(minWidth) && widthByFlexRule < minWidth) {\n                    constrainedWidth = minWidth;\n                }\n                else if (exists(maxWidth) && widthByFlexRule > maxWidth) {\n                    constrainedWidth = maxWidth;\n                }\n                if (constrainedWidth) {\n                    // This column is not in fact flexing as it is being constrained to a specific size\n                    // so remove it from the list of flexing columns and start again\n                    col.setActualWidth(constrainedWidth, source);\n                    removeFromArray(flexingColumns, col);\n                    changedColumns.push(col);\n                    knownWidthColumns.push(col);\n                    continue outer;\n                }\n                flexingColumnSizes[i] = Math.round(widthByFlexRule);\n            }\n            break;\n        }\n        var remainingSpace = spaceForFlexingColumns;\n        flexingColumns.forEach(function (col, i) {\n            col.setActualWidth(Math.min(flexingColumnSizes[i], remainingSpace), source);\n            changedColumns.push(col);\n            remainingSpace -= flexingColumnSizes[i];\n        });\n        if (!params.skipSetLeft) {\n            this.setLeftValues(source);\n        }\n        if (params.updateBodyWidths) {\n            this.updateBodyWidths();\n        }\n        if (params.fireResizedEvent) {\n            this.dispatchColumnResizedEvent(changedColumns, true, source, flexingColumns);\n        }\n        return flexingColumns;\n    };\n    // called from api\n    ColumnModel.prototype.sizeColumnsToFit = function (gridWidth, source, silent, params) {\n        var _a, _b, _c, _d, _e;\n        if (source === void 0) { source = \"sizeColumnsToFit\"; }\n        var limitsMap = {};\n        if (params) {\n            (_a = params === null || params === void 0 ? void 0 : params.columnLimits) === null || _a === void 0 ? void 0 : _a.forEach(function (_a) {\n                var key = _a.key, dimensions = __rest(_a, [\"key\"]);\n                limitsMap[typeof key === 'string' ? key : key.getColId()] = dimensions;\n            });\n        }\n        // avoid divide by zero\n        var allDisplayedColumns = this.getAllDisplayedColumns();\n        var doColumnsAlreadyFit = gridWidth === this.getWidthOfColsInList(allDisplayedColumns);\n        if (gridWidth <= 0 || !allDisplayedColumns.length || doColumnsAlreadyFit) {\n            return;\n        }\n        var colsToSpread = [];\n        var colsToNotSpread = [];\n        allDisplayedColumns.forEach(function (column) {\n            if (column.getColDef().suppressSizeToFit === true) {\n                colsToNotSpread.push(column);\n            }\n            else {\n                colsToSpread.push(column);\n            }\n        });\n        // make a copy of the cols that are going to be resized\n        var colsToDispatchEventFor = colsToSpread.slice(0);\n        var finishedResizing = false;\n        var moveToNotSpread = function (column) {\n            removeFromArray(colsToSpread, column);\n            colsToNotSpread.push(column);\n        };\n        // resetting cols to their original width makes the sizeColumnsToFit more deterministic,\n        // rather than depending on the current size of the columns. most users call sizeColumnsToFit\n        // immediately after grid is created, so will make no difference. however if application is calling\n        // sizeColumnsToFit repeatedly (eg after column group is opened / closed repeatedly) we don't want\n        // the columns to start shrinking / growing over time.\n        //\n        // NOTE: the process below will assign values to `this.actualWidth` of each column without firing events\n        // for this reason we need to manually dispatch resize events after the resize has been done for each column.\n        colsToSpread.forEach(function (column) { return column.resetActualWidth(source); });\n        while (!finishedResizing) {\n            finishedResizing = true;\n            var availablePixels = gridWidth - this.getWidthOfColsInList(colsToNotSpread);\n            if (availablePixels <= 0) {\n                // no width, set everything to minimum\n                colsToSpread.forEach(function (column) {\n                    var _a, _b;\n                    var widthOverride = (_b = (_a = limitsMap === null || limitsMap === void 0 ? void 0 : limitsMap[column.getId()]) === null || _a === void 0 ? void 0 : _a.minWidth) !== null && _b !== void 0 ? _b : params === null || params === void 0 ? void 0 : params.defaultMinWidth;\n                    if (typeof widthOverride === 'number') {\n                        column.setActualWidth(widthOverride);\n                        return;\n                    }\n                    column.setMinimum(source);\n                });\n            }\n            else {\n                var scale = availablePixels / this.getWidthOfColsInList(colsToSpread);\n                // we set the pixels for the last col based on what's left, as otherwise\n                // we could be a pixel or two short or extra because of rounding errors.\n                var pixelsForLastCol = availablePixels;\n                // backwards through loop, as we are removing items as we go\n                for (var i = colsToSpread.length - 1; i >= 0; i--) {\n                    var column = colsToSpread[i];\n                    var widthOverride = limitsMap === null || limitsMap === void 0 ? void 0 : limitsMap[column.getId()];\n                    var minOverride = ((_b = widthOverride === null || widthOverride === void 0 ? void 0 : widthOverride.minWidth) !== null && _b !== void 0 ? _b : params === null || params === void 0 ? void 0 : params.defaultMinWidth);\n                    var maxOverride = ((_c = widthOverride === null || widthOverride === void 0 ? void 0 : widthOverride.maxWidth) !== null && _c !== void 0 ? _c : params === null || params === void 0 ? void 0 : params.defaultMaxWidth);\n                    var colMinWidth = (_d = column.getMinWidth()) !== null && _d !== void 0 ? _d : 0;\n                    var colMaxWidth = (_e = column.getMaxWidth()) !== null && _e !== void 0 ? _e : Number.MAX_VALUE;\n                    var minWidth = typeof minOverride === 'number' && minOverride > colMinWidth ? minOverride : column.getMinWidth();\n                    var maxWidth = typeof maxOverride === 'number' && maxOverride < colMaxWidth ? maxOverride : column.getMaxWidth();\n                    var newWidth = Math.round(column.getActualWidth() * scale);\n                    if (exists(minWidth) && newWidth < minWidth) {\n                        newWidth = minWidth;\n                        moveToNotSpread(column);\n                        finishedResizing = false;\n                    }\n                    else if (exists(maxWidth) && newWidth > maxWidth) {\n                        newWidth = maxWidth;\n                        moveToNotSpread(column);\n                        finishedResizing = false;\n                    }\n                    else if (i === 0) { // if this is the last column\n                        newWidth = pixelsForLastCol;\n                    }\n                    column.setActualWidth(newWidth, source, true);\n                    pixelsForLastCol -= newWidth;\n                }\n            }\n        }\n        // see notes above\n        colsToDispatchEventFor.forEach(function (col) {\n            col.fireColumnWidthChangedEvent(source);\n        });\n        this.setLeftValues(source);\n        this.updateBodyWidths();\n        if (silent) {\n            return;\n        }\n        this.dispatchColumnResizedEvent(colsToDispatchEventFor, true, source);\n    };\n    ColumnModel.prototype.buildDisplayedTrees = function (visibleColumns) {\n        var leftVisibleColumns = [];\n        var rightVisibleColumns = [];\n        var centerVisibleColumns = [];\n        visibleColumns.forEach(function (column) {\n            switch (column.getPinned()) {\n                case \"left\":\n                    leftVisibleColumns.push(column);\n                    break;\n                case \"right\":\n                    rightVisibleColumns.push(column);\n                    break;\n                default:\n                    centerVisibleColumns.push(column);\n                    break;\n            }\n        });\n        var groupInstanceIdCreator = new GroupInstanceIdCreator();\n        this.displayedTreeLeft = this.displayedGroupCreator.createDisplayedGroups(leftVisibleColumns, this.gridBalancedTree, groupInstanceIdCreator, 'left', this.displayedTreeLeft);\n        this.displayedTreeRight = this.displayedGroupCreator.createDisplayedGroups(rightVisibleColumns, this.gridBalancedTree, groupInstanceIdCreator, 'right', this.displayedTreeRight);\n        this.displayedTreeCentre = this.displayedGroupCreator.createDisplayedGroups(centerVisibleColumns, this.gridBalancedTree, groupInstanceIdCreator, null, this.displayedTreeCentre);\n        this.updateDisplayedMap();\n    };\n    ColumnModel.prototype.updateDisplayedMap = function () {\n        var _this = this;\n        this.displayedColumnsAndGroupsMap = {};\n        var func = function (child) {\n            _this.displayedColumnsAndGroupsMap[child.getUniqueId()] = child;\n        };\n        this.columnUtils.depthFirstAllColumnTreeSearch(this.displayedTreeCentre, func);\n        this.columnUtils.depthFirstAllColumnTreeSearch(this.displayedTreeLeft, func);\n        this.columnUtils.depthFirstAllColumnTreeSearch(this.displayedTreeRight, func);\n    };\n    ColumnModel.prototype.isDisplayed = function (item) {\n        var fromMap = this.displayedColumnsAndGroupsMap[item.getUniqueId()];\n        // check for reference, in case new column / group with same id is now present\n        return fromMap === item;\n    };\n    ColumnModel.prototype.updateOpenClosedVisibilityInColumnGroups = function () {\n        var allColumnGroups = this.getAllDisplayedTrees();\n        this.columnUtils.depthFirstAllColumnTreeSearch(allColumnGroups, function (child) {\n            if (child instanceof ColumnGroup) {\n                var columnGroup = child;\n                columnGroup.calculateDisplayedColumns();\n            }\n        });\n    };\n    ColumnModel.prototype.getGroupAutoColumns = function () {\n        return this.groupAutoColumns;\n    };\n    /**\n     * Creates new auto group columns if required\n     * @returns whether auto cols have changed\n     */\n    ColumnModel.prototype.createGroupAutoColumnsIfNeeded = function () {\n        if (!this.autoGroupsNeedBuilding) {\n            return false;\n        }\n        this.autoGroupsNeedBuilding = false;\n        var groupFullWidthRow = this.gridOptionsService.isGroupUseEntireRow(this.pivotMode);\n        // we need to allow suppressing auto-column separately for group and pivot as the normal situation\n        // is CSRM and user provides group column themselves for normal view, but when they go into pivot the\n        // columns are generated by the grid so no opportunity for user to provide group column. so need a way\n        // to suppress auto-col for grouping only, and not pivot.\n        // however if using Viewport RM or SSRM and user is providing the columns, the user may wish full control\n        // of the group column in this instance.\n        var suppressAutoColumn = this.pivotMode ?\n            this.gridOptionsService.is('pivotSuppressAutoColumn') : this.isGroupSuppressAutoColumn();\n        var groupingActive = this.rowGroupColumns.length > 0 || this.usingTreeData;\n        var needAutoColumns = groupingActive && !suppressAutoColumn && !groupFullWidthRow;\n        if (needAutoColumns) {\n            var existingCols = this.groupAutoColumns || [];\n            var newAutoGroupCols = this.autoGroupColService.createAutoGroupColumns(existingCols, this.rowGroupColumns);\n            var autoColsDifferent = !this.autoColsEqual(newAutoGroupCols, this.groupAutoColumns);\n            // we force recreate so new group cols pick up the new\n            // definitions. otherwise we could ignore the new cols because they appear to be the same.\n            if (autoColsDifferent || this.forceRecreateAutoGroups) {\n                this.groupAutoColumns = newAutoGroupCols;\n                return true;\n            }\n        }\n        else {\n            this.groupAutoColumns = null;\n        }\n        return false;\n    };\n    ColumnModel.prototype.isGroupSuppressAutoColumn = function () {\n        var groupDisplayType = this.gridOptionsService.get('groupDisplayType');\n        var isCustomRowGroups = groupDisplayType ? matchesGroupDisplayType('custom', groupDisplayType) : false;\n        if (isCustomRowGroups) {\n            return true;\n        }\n        var treeDataDisplayType = this.gridOptionsService.get('treeDataDisplayType');\n        return treeDataDisplayType ? matchesTreeDataDisplayType('custom', treeDataDisplayType) : false;\n    };\n    ColumnModel.prototype.autoColsEqual = function (colsA, colsB) {\n        return areEqual(colsA, colsB, function (a, b) { return a.getColId() === b.getColId(); });\n    };\n    ColumnModel.prototype.getWidthOfColsInList = function (columnList) {\n        return columnList.reduce(function (width, col) { return width + col.getActualWidth(); }, 0);\n    };\n    ColumnModel.prototype.getGridBalancedTree = function () {\n        return this.gridBalancedTree;\n    };\n    ColumnModel.prototype.hasFloatingFilters = function () {\n        if (!this.gridColumns) {\n            return false;\n        }\n        var res = this.gridColumns.some(function (col) { return col.getColDef().floatingFilter; });\n        return res;\n    };\n    ColumnModel.prototype.getFirstDisplayedColumn = function () {\n        var isRtl = this.gridOptionsService.is('enableRtl');\n        var queryOrder = [\n            'getDisplayedLeftColumns',\n            'getDisplayedCenterColumns',\n            'getDisplayedRightColumns'\n        ];\n        if (isRtl) {\n            queryOrder.reverse();\n        }\n        for (var i = 0; i < queryOrder.length; i++) {\n            var container = this[queryOrder[i]]();\n            if (container.length) {\n                return isRtl ? last(container) : container[0];\n            }\n        }\n        return null;\n    };\n    ColumnModel.prototype.setColumnHeaderHeight = function (col, height) {\n        var changed = col.setAutoHeaderHeight(height);\n        if (changed) {\n            var event_5 = {\n                type: Events.EVENT_COLUMN_HEADER_HEIGHT_CHANGED,\n                column: col,\n                columns: [col],\n                source: 'autosizeColumnHeaderHeight',\n            };\n            this.eventService.dispatchEvent(event_5);\n        }\n    };\n    ColumnModel.prototype.getColumnGroupHeaderRowHeight = function () {\n        if (this.isPivotMode()) {\n            return this.getPivotGroupHeaderHeight();\n        }\n        return this.getGroupHeaderHeight();\n    };\n    ColumnModel.prototype.getColumnHeaderRowHeight = function () {\n        var defaultHeight = (this.isPivotMode() ?\n            this.getPivotHeaderHeight() :\n            this.getHeaderHeight());\n        var displayedHeights = this.getAllDisplayedColumns()\n            .filter(function (col) { return col.isAutoHeaderHeight(); })\n            .map(function (col) { return col.getAutoHeaderHeight() || 0; });\n        return Math.max.apply(Math, __spread$k([defaultHeight], displayedHeights));\n    };\n    ColumnModel.prototype.getHeaderHeight = function () {\n        var _a;\n        return (_a = this.gridOptionsService.getNum('headerHeight')) !== null && _a !== void 0 ? _a : this.environment.getFromTheme(25, 'headerHeight');\n    };\n    ColumnModel.prototype.getFloatingFiltersHeight = function () {\n        var _a;\n        return (_a = this.gridOptionsService.getNum('floatingFiltersHeight')) !== null && _a !== void 0 ? _a : this.getHeaderHeight();\n    };\n    ColumnModel.prototype.getGroupHeaderHeight = function () {\n        var _a;\n        return (_a = this.gridOptionsService.getNum('groupHeaderHeight')) !== null && _a !== void 0 ? _a : this.getHeaderHeight();\n    };\n    ColumnModel.prototype.getPivotHeaderHeight = function () {\n        var _a;\n        return (_a = this.gridOptionsService.getNum('pivotHeaderHeight')) !== null && _a !== void 0 ? _a : this.getHeaderHeight();\n    };\n    ColumnModel.prototype.getPivotGroupHeaderHeight = function () {\n        var _a;\n        return (_a = this.gridOptionsService.getNum('pivotGroupHeaderHeight')) !== null && _a !== void 0 ? _a : this.getGroupHeaderHeight();\n    };\n    __decorate$2r([\n        Autowired('expressionService')\n    ], ColumnModel.prototype, \"expressionService\", void 0);\n    __decorate$2r([\n        Autowired('columnFactory')\n    ], ColumnModel.prototype, \"columnFactory\", void 0);\n    __decorate$2r([\n        Autowired('displayedGroupCreator')\n    ], ColumnModel.prototype, \"displayedGroupCreator\", void 0);\n    __decorate$2r([\n        Autowired('ctrlsService')\n    ], ColumnModel.prototype, \"ctrlsService\", void 0);\n    __decorate$2r([\n        Autowired('autoWidthCalculator')\n    ], ColumnModel.prototype, \"autoWidthCalculator\", void 0);\n    __decorate$2r([\n        Autowired('columnUtils')\n    ], ColumnModel.prototype, \"columnUtils\", void 0);\n    __decorate$2r([\n        Autowired('columnAnimationService')\n    ], ColumnModel.prototype, \"columnAnimationService\", void 0);\n    __decorate$2r([\n        Autowired('autoGroupColService')\n    ], ColumnModel.prototype, \"autoGroupColService\", void 0);\n    __decorate$2r([\n        Optional('aggFuncService')\n    ], ColumnModel.prototype, \"aggFuncService\", void 0);\n    __decorate$2r([\n        Optional('valueCache')\n    ], ColumnModel.prototype, \"valueCache\", void 0);\n    __decorate$2r([\n        Optional('animationFrameService')\n    ], ColumnModel.prototype, \"animationFrameService\", void 0);\n    __decorate$2r([\n        Autowired('sortController')\n    ], ColumnModel.prototype, \"sortController\", void 0);\n    __decorate$2r([\n        Autowired('columnDefFactory')\n    ], ColumnModel.prototype, \"columnDefFactory\", void 0);\n    __decorate$2r([\n        PostConstruct\n    ], ColumnModel.prototype, \"init\", null);\n    __decorate$2r([\n        PreDestroy\n    ], ColumnModel.prototype, \"destroyColumns\", null);\n    __decorate$2r([\n        __param$8(0, Qualifier('loggerFactory'))\n    ], ColumnModel.prototype, \"setBeans\", null);\n    ColumnModel = __decorate$2r([\n        Bean('columnModel')\n    ], ColumnModel);\n    return ColumnModel;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$2P = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$2q = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n// takes in a list of columns, as specified by the column definitions, and returns column groups\nvar ColumnUtils = /** @class */ (function (_super) {\n    __extends$2P(ColumnUtils, _super);\n    function ColumnUtils() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    ColumnUtils.prototype.calculateColMinWidth = function (colDef) {\n        return colDef.minWidth != null ? colDef.minWidth : this.environment.getMinColWidth();\n    };\n    ColumnUtils.prototype.calculateColMaxWidth = function (colDef) {\n        return colDef.maxWidth != null ? colDef.maxWidth : Number.MAX_SAFE_INTEGER;\n    };\n    ColumnUtils.prototype.calculateColInitialWidth = function (colDef) {\n        var minColWidth = this.calculateColMinWidth(colDef);\n        var maxColWidth = this.calculateColMaxWidth(colDef);\n        var width;\n        var colDefWidth = attrToNumber(colDef.width);\n        var colDefInitialWidth = attrToNumber(colDef.initialWidth);\n        if (colDefWidth != null) {\n            width = colDefWidth;\n        }\n        else if (colDefInitialWidth != null) {\n            width = colDefInitialWidth;\n        }\n        else {\n            width = 200;\n        }\n        return Math.max(Math.min(width, maxColWidth), minColWidth);\n    };\n    ColumnUtils.prototype.getOriginalPathForColumn = function (column, originalBalancedTree) {\n        var result = [];\n        var found = false;\n        var recursePath = function (balancedColumnTree, dept) {\n            for (var i = 0; i < balancedColumnTree.length; i++) {\n                if (found) {\n                    return;\n                }\n                // quit the search, so 'result' is kept with the found result\n                var node = balancedColumnTree[i];\n                if (node instanceof ProvidedColumnGroup) {\n                    var nextNode = node;\n                    recursePath(nextNode.getChildren(), dept + 1);\n                    result[dept] = node;\n                }\n                else if (node === column) {\n                    found = true;\n                }\n            }\n        };\n        recursePath(originalBalancedTree, 0);\n        // we should always find the path, but in case there is a bug somewhere, returning null\n        // will make it fail rather than provide a 'hard to track down' bug\n        return found ? result : null;\n    };\n    ColumnUtils.prototype.depthFirstOriginalTreeSearch = function (parent, tree, callback) {\n        var _this = this;\n        if (!tree) {\n            return;\n        }\n        tree.forEach(function (child) {\n            if (child instanceof ProvidedColumnGroup) {\n                _this.depthFirstOriginalTreeSearch(child, child.getChildren(), callback);\n            }\n            callback(child, parent);\n        });\n    };\n    ColumnUtils.prototype.depthFirstAllColumnTreeSearch = function (tree, callback) {\n        var _this = this;\n        if (!tree) {\n            return;\n        }\n        tree.forEach(function (child) {\n            if (child instanceof ColumnGroup) {\n                _this.depthFirstAllColumnTreeSearch(child.getChildren(), callback);\n            }\n            callback(child);\n        });\n    };\n    ColumnUtils.prototype.depthFirstDisplayedColumnTreeSearch = function (tree, callback) {\n        var _this = this;\n        if (!tree) {\n            return;\n        }\n        tree.forEach(function (child) {\n            if (child instanceof ColumnGroup) {\n                _this.depthFirstDisplayedColumnTreeSearch(child.getDisplayedChildren(), callback);\n            }\n            callback(child);\n        });\n    };\n    ColumnUtils = __decorate$2q([\n        Bean('columnUtils')\n    ], ColumnUtils);\n    return ColumnUtils;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$2O = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$2p = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n// takes in a list of columns, as specified by the column definitions, and returns column groups\nvar DisplayedGroupCreator = /** @class */ (function (_super) {\n    __extends$2O(DisplayedGroupCreator, _super);\n    function DisplayedGroupCreator() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    DisplayedGroupCreator.prototype.createDisplayedGroups = function (\n    // all displayed columns sorted - this is the columns the grid should show\n    sortedVisibleColumns, \n    // the tree of columns, as provided by the users, used to know what groups columns roll up into\n    balancedColumnTree, \n    // creates unique id's for the group\n    groupInstanceIdCreator, \n    // whether it's left, right or center col\n    pinned, \n    // we try to reuse old groups if we can, to allow gui to do animation\n    oldDisplayedGroups) {\n        var _this = this;\n        var result = [];\n        var previousRealPath;\n        var previousOriginalPath;\n        var oldColumnsMapped = this.mapOldGroupsById(oldDisplayedGroups);\n        // go through each column, then do a bottom up comparison to the previous column, and start\n        // to share groups if they converge at any point.\n        sortedVisibleColumns.forEach(function (currentColumn) {\n            var currentOriginalPath = _this.getOriginalPathForColumn(balancedColumnTree, currentColumn);\n            var currentRealPath = [];\n            var firstColumn = !previousOriginalPath;\n            for (var i = 0; i < currentOriginalPath.length; i++) {\n                if (firstColumn || currentOriginalPath[i] !== previousOriginalPath[i]) {\n                    // new group needed\n                    var newGroup = _this.createColumnGroup(currentOriginalPath[i], groupInstanceIdCreator, oldColumnsMapped, pinned);\n                    currentRealPath[i] = newGroup;\n                    // if top level, add to result, otherwise add to parent\n                    if (i == 0) {\n                        result.push(newGroup);\n                    }\n                    else {\n                        currentRealPath[i - 1].addChild(newGroup);\n                    }\n                }\n                else {\n                    // reuse old group\n                    currentRealPath[i] = previousRealPath[i];\n                }\n            }\n            var noColumnGroups = currentRealPath.length === 0;\n            if (noColumnGroups) {\n                // if we are not grouping, then the result of the above is an empty\n                // path (no groups), and we just add the column to the root list.\n                result.push(currentColumn);\n            }\n            else {\n                var leafGroup = last(currentRealPath);\n                leafGroup.addChild(currentColumn);\n            }\n            previousRealPath = currentRealPath;\n            previousOriginalPath = currentOriginalPath;\n        });\n        this.setupParentsIntoColumns(result, null);\n        return result;\n    };\n    DisplayedGroupCreator.prototype.createColumnGroup = function (providedGroup, groupInstanceIdCreator, oldColumnsMapped, pinned) {\n        var groupId = providedGroup.getGroupId();\n        var instanceId = groupInstanceIdCreator.getInstanceIdForKey(groupId);\n        var uniqueId = ColumnGroup.createUniqueId(groupId, instanceId);\n        var columnGroup = oldColumnsMapped[uniqueId];\n        // if the user is setting new colDefs, it is possible that the id's overlap, and we\n        // would have a false match from above. so we double check we are talking about the\n        // same original column group.\n        if (columnGroup && columnGroup.getProvidedColumnGroup() !== providedGroup) {\n            columnGroup = null;\n        }\n        if (exists(columnGroup)) {\n            // clean out the old column group here, as we will be adding children into it again\n            columnGroup.reset();\n        }\n        else {\n            columnGroup = new ColumnGroup(providedGroup, groupId, instanceId, pinned);\n            this.context.createBean(columnGroup);\n        }\n        return columnGroup;\n    };\n    // returns back a 2d map of ColumnGroup as follows: groupId -> instanceId -> ColumnGroup\n    DisplayedGroupCreator.prototype.mapOldGroupsById = function (displayedGroups) {\n        var result = {};\n        var recursive = function (columnsOrGroups) {\n            columnsOrGroups.forEach(function (columnOrGroup) {\n                if (columnOrGroup instanceof ColumnGroup) {\n                    var columnGroup = columnOrGroup;\n                    result[columnOrGroup.getUniqueId()] = columnGroup;\n                    recursive(columnGroup.getChildren());\n                }\n            });\n        };\n        if (displayedGroups) {\n            recursive(displayedGroups);\n        }\n        return result;\n    };\n    DisplayedGroupCreator.prototype.setupParentsIntoColumns = function (columnsOrGroups, parent) {\n        var _this = this;\n        columnsOrGroups.forEach(function (columnsOrGroup) {\n            columnsOrGroup.setParent(parent);\n            if (columnsOrGroup instanceof ColumnGroup) {\n                var columnGroup = columnsOrGroup;\n                _this.setupParentsIntoColumns(columnGroup.getChildren(), columnGroup);\n            }\n        });\n    };\n    DisplayedGroupCreator.prototype.getOriginalPathForColumn = function (balancedColumnTree, column) {\n        var result = [];\n        var found = false;\n        var recursePath = function (columnTree, dept) {\n            for (var i = 0; i < columnTree.length; i++) {\n                // quit the search, so 'result' is kept with the found result\n                if (found) {\n                    return;\n                }\n                var node = columnTree[i];\n                if (node instanceof ProvidedColumnGroup) {\n                    recursePath(node.getChildren(), dept + 1);\n                    result[dept] = node;\n                }\n                else if (node === column) {\n                    found = true;\n                }\n            }\n        };\n        recursePath(balancedColumnTree, 0);\n        // it's possible we didn't find a path. this happens if the column is generated\n        // by the grid (auto-group), in that the definition didn't come from the client. in this case,\n        // we create a fake original path.\n        if (found) {\n            return result;\n        }\n        console.warn('AG Grid: could not get path');\n        return null;\n    };\n    DisplayedGroupCreator = __decorate$2p([\n        Bean('displayedGroupCreator')\n    ], DisplayedGroupCreator);\n    return DisplayedGroupCreator;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$2N = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$2o = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar AgStackComponentsRegistry = /** @class */ (function (_super) {\n    __extends$2N(AgStackComponentsRegistry, _super);\n    function AgStackComponentsRegistry() {\n        var _this = _super !== null && _super.apply(this, arguments) || this;\n        _this.componentsMappedByName = {};\n        return _this;\n    }\n    AgStackComponentsRegistry.prototype.setupComponents = function (components) {\n        var _this = this;\n        if (components) {\n            components.forEach(function (componentMeta) { return _this.addComponent(componentMeta); });\n        }\n    };\n    AgStackComponentsRegistry.prototype.addComponent = function (componentMeta) {\n        // get name of the class as a string\n        // insert a dash after every capital letter\n        // let classEscaped = className.replace(/([A-Z])/g, \"-$1\").toLowerCase();\n        var classEscaped = componentMeta.componentName.replace(/([a-z])([A-Z])/g, \"$1-$2\").toLowerCase();\n        // put all to upper case\n        var classUpperCase = classEscaped.toUpperCase();\n        // finally store\n        this.componentsMappedByName[classUpperCase] = componentMeta.componentClass;\n    };\n    AgStackComponentsRegistry.prototype.getComponentClass = function (htmlTag) {\n        return this.componentsMappedByName[htmlTag];\n    };\n    AgStackComponentsRegistry = __decorate$2o([\n        Bean('agStackComponentsRegistry')\n    ], AgStackComponentsRegistry);\n    return AgStackComponentsRegistry;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\n// ARIA HELPER FUNCTIONS\nfunction toggleAriaAttribute(element, attribute, value) {\n    if (value == null || value == '') {\n        removeAriaAttribute(element, attribute);\n    }\n    else {\n        setAriaAttribute(element, attribute, value);\n    }\n}\nfunction setAriaAttribute(element, attribute, value) {\n    element.setAttribute(ariaAttributeName(attribute), value.toString());\n}\nfunction removeAriaAttribute(element, attribute) {\n    element.removeAttribute(ariaAttributeName(attribute));\n}\nfunction ariaAttributeName(attribute) {\n    return \"aria-\" + attribute;\n}\nfunction setAriaRole(element, role) {\n    if (role) {\n        element.setAttribute('role', role);\n    }\n    else {\n        element.removeAttribute('role');\n    }\n}\nfunction getAriaSortState(sortDirection) {\n    var sort;\n    if (sortDirection === 'asc') {\n        sort = 'ascending';\n    }\n    else if (sortDirection === 'desc') {\n        sort = 'descending';\n    }\n    else if (sortDirection === 'mixed') {\n        sort = 'other';\n    }\n    else {\n        sort = 'none';\n    }\n    return sort;\n}\n// ARIA ATTRIBUTE GETTERS\nfunction getAriaLevel(element) {\n    return parseInt(element.getAttribute('aria-level'), 10);\n}\nfunction getAriaPosInSet(element) {\n    return parseInt(element.getAttribute('aria-posinset'), 10);\n}\nfunction getAriaDescribedBy(element) {\n    return element.getAttribute('aria-describedby') || '';\n}\n// ARIA ATTRIBUTE SETTERS\nfunction setAriaLabel(element, label) {\n    toggleAriaAttribute(element, 'label', label);\n}\nfunction setAriaLabelledBy(element, labelledBy) {\n    toggleAriaAttribute(element, 'labelledby', labelledBy);\n}\nfunction setAriaDescription(element, description) {\n    toggleAriaAttribute(element, 'description', description);\n}\nfunction setAriaDescribedBy(element, describedby) {\n    toggleAriaAttribute(element, 'describedby', describedby);\n}\nfunction setAriaLive(element, live) {\n    toggleAriaAttribute(element, 'live', live);\n}\nfunction setAriaLevel(element, level) {\n    toggleAriaAttribute(element, 'level', level);\n}\nfunction setAriaDisabled(element, disabled) {\n    toggleAriaAttribute(element, 'disabled', disabled);\n}\nfunction setAriaHidden(element, hidden) {\n    toggleAriaAttribute(element, 'hidden', hidden);\n}\nfunction setAriaExpanded(element, expanded) {\n    setAriaAttribute(element, 'expanded', expanded);\n}\nfunction removeAriaExpanded(element) {\n    removeAriaAttribute(element, 'expanded');\n}\nfunction setAriaSetSize(element, setsize) {\n    setAriaAttribute(element, 'setsize', setsize);\n}\nfunction setAriaPosInSet(element, position) {\n    setAriaAttribute(element, 'posinset', position);\n}\nfunction setAriaMultiSelectable(element, multiSelectable) {\n    setAriaAttribute(element, 'multiselectable', multiSelectable);\n}\nfunction setAriaRowCount(element, rowCount) {\n    setAriaAttribute(element, 'rowcount', rowCount);\n}\nfunction setAriaRowIndex(element, rowIndex) {\n    setAriaAttribute(element, 'rowindex', rowIndex);\n}\nfunction setAriaColCount(element, colCount) {\n    setAriaAttribute(element, 'colcount', colCount);\n}\nfunction setAriaColIndex(element, colIndex) {\n    setAriaAttribute(element, 'colindex', colIndex);\n}\nfunction setAriaColSpan(element, colSpan) {\n    setAriaAttribute(element, 'colspan', colSpan);\n}\nfunction setAriaSort(element, sort) {\n    setAriaAttribute(element, 'sort', sort);\n}\nfunction removeAriaSort(element) {\n    removeAriaAttribute(element, 'sort');\n}\nfunction setAriaSelected(element, selected) {\n    toggleAriaAttribute(element, 'selected', selected);\n}\nfunction setAriaChecked(element, checked) {\n    setAriaAttribute(element, 'checked', checked === undefined ? 'mixed' : checked);\n}\n\nvar AriaUtils = /*#__PURE__*/Object.freeze({\n    __proto__: null,\n    setAriaRole: setAriaRole,\n    getAriaSortState: getAriaSortState,\n    getAriaLevel: getAriaLevel,\n    getAriaPosInSet: getAriaPosInSet,\n    getAriaDescribedBy: getAriaDescribedBy,\n    setAriaLabel: setAriaLabel,\n    setAriaLabelledBy: setAriaLabelledBy,\n    setAriaDescription: setAriaDescription,\n    setAriaDescribedBy: setAriaDescribedBy,\n    setAriaLive: setAriaLive,\n    setAriaLevel: setAriaLevel,\n    setAriaDisabled: setAriaDisabled,\n    setAriaHidden: setAriaHidden,\n    setAriaExpanded: setAriaExpanded,\n    removeAriaExpanded: removeAriaExpanded,\n    setAriaSetSize: setAriaSetSize,\n    setAriaPosInSet: setAriaPosInSet,\n    setAriaMultiSelectable: setAriaMultiSelectable,\n    setAriaRowCount: setAriaRowCount,\n    setAriaRowIndex: setAriaRowIndex,\n    setAriaColCount: setAriaColCount,\n    setAriaColIndex: setAriaColIndex,\n    setAriaColSpan: setAriaColSpan,\n    setAriaSort: setAriaSort,\n    removeAriaSort: removeAriaSort,\n    setAriaSelected: setAriaSelected,\n    setAriaChecked: setAriaChecked\n});\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\n/**\n * These variables are lazy loaded, as otherwise they try and get initialised when we are loading\n * unit tests and we don't have references to window or document in the unit tests\n */\nvar isSafari;\nvar safariVersion;\nvar isChrome;\nvar isFirefox;\nvar isMacOs;\nvar isIOS;\nvar invisibleScrollbar;\nvar browserScrollbarWidth;\nfunction isBrowserSafari() {\n    if (isSafari === undefined) {\n        isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent);\n    }\n    return isSafari;\n}\nfunction getSafariVersion() {\n    if (safariVersion === undefined) {\n        if (isBrowserSafari()) {\n            var versionMatch = navigator.userAgent.match(/version\\/(\\d+)/i);\n            if (versionMatch) {\n                safariVersion = versionMatch[1] != null ? parseFloat(versionMatch[1]) : 0;\n            }\n        }\n        else {\n            safariVersion = 0;\n        }\n    }\n    return safariVersion;\n}\n/**\n * Returns true for Chrome and also for Edge (Chromium)\n */\nfunction isBrowserChrome() {\n    if (isChrome === undefined) {\n        var win = window;\n        isChrome = (!!win.chrome && (!!win.chrome.webstore || !!win.chrome.runtime)) ||\n            (/Chrome/.test(navigator.userAgent) && /Google Inc/.test(navigator.vendor));\n    }\n    return isChrome;\n}\nfunction isBrowserFirefox() {\n    if (isFirefox === undefined) {\n        isFirefox = /(firefox)/i.test(navigator.userAgent);\n    }\n    return isFirefox;\n}\nfunction isMacOsUserAgent() {\n    if (isMacOs === undefined) {\n        isMacOs = /(Mac|iPhone|iPod|iPad)/i.test(navigator.platform);\n    }\n    return isMacOs;\n}\nfunction isIOSUserAgent() {\n    if (isIOS === undefined) {\n        isIOS = (/iPad|iPhone|iPod/.test(navigator.platform) ||\n            // eslint-disable-next-line\n            (navigator.platform === 'MacIntel' && navigator.maxTouchPoints > 1));\n    }\n    return isIOS;\n}\nfunction browserSupportsPreventScroll() {\n    // all browsers except safari support focus({ preventScroll: true }).\n    // this feature was added on Safari 15+\n    return !isBrowserSafari() || getSafariVersion() >= 15;\n}\nfunction getTabIndex(el) {\n    if (!el) {\n        return null;\n    }\n    var numberTabIndex = el.tabIndex;\n    var tabIndex = el.getAttribute('tabIndex');\n    if (numberTabIndex === -1 && (tabIndex === null || (tabIndex === '' && !isBrowserFirefox()))) {\n        return null;\n    }\n    return numberTabIndex.toString();\n}\nfunction getMaxDivHeight() {\n    if (!document.body) {\n        return -1;\n    }\n    var res = 1000000;\n    // FF reports the height back but still renders blank after ~6M px\n    var testUpTo = navigator.userAgent.toLowerCase().match(/firefox/) ? 6000000 : 1000000000;\n    var div = document.createElement('div');\n    document.body.appendChild(div);\n    while (true) {\n        var test = res * 2;\n        div.style.height = test + 'px';\n        if (test > testUpTo || div.clientHeight !== test) {\n            break;\n        }\n        else {\n            res = test;\n        }\n    }\n    document.body.removeChild(div);\n    return res;\n}\nfunction getBodyWidth() {\n    var _a, _b, _c;\n    return (_b = (_a = document.body) === null || _a === void 0 ? void 0 : _a.clientWidth) !== null && _b !== void 0 ? _b : (window.innerHeight || ((_c = document.documentElement) === null || _c === void 0 ? void 0 : _c.clientWidth) || -1);\n}\nfunction getBodyHeight() {\n    var _a, _b, _c;\n    return (_b = (_a = document.body) === null || _a === void 0 ? void 0 : _a.clientHeight) !== null && _b !== void 0 ? _b : (window.innerHeight || ((_c = document.documentElement) === null || _c === void 0 ? void 0 : _c.clientHeight) || -1);\n}\nfunction getScrollbarWidth() {\n    if (browserScrollbarWidth == null) {\n        initScrollbarWidthAndVisibility();\n    }\n    return browserScrollbarWidth;\n}\nfunction initScrollbarWidthAndVisibility() {\n    var body = document.body;\n    var div = document.createElement('div');\n    div.style.width = div.style.height = '100px';\n    div.style.opacity = '0';\n    div.style.overflow = 'scroll';\n    div.style.msOverflowStyle = 'scrollbar'; // needed for WinJS apps\n    div.style.position = 'absolute';\n    body.appendChild(div);\n    var width = div.offsetWidth - div.clientWidth;\n    // if width is 0 and client width is 0, means the DOM isn't ready\n    if (width === 0 && div.clientWidth === 0) {\n        width = null;\n    }\n    // remove div\n    if (div.parentNode) {\n        div.parentNode.removeChild(div);\n    }\n    if (width != null) {\n        browserScrollbarWidth = width;\n        invisibleScrollbar = width === 0;\n    }\n}\nfunction isInvisibleScrollbar() {\n    if (invisibleScrollbar == null) {\n        initScrollbarWidthAndVisibility();\n    }\n    return invisibleScrollbar;\n}\n\nvar BrowserUtils = /*#__PURE__*/Object.freeze({\n    __proto__: null,\n    isBrowserSafari: isBrowserSafari,\n    getSafariVersion: getSafariVersion,\n    isBrowserChrome: isBrowserChrome,\n    isBrowserFirefox: isBrowserFirefox,\n    isMacOsUserAgent: isMacOsUserAgent,\n    isIOSUserAgent: isIOSUserAgent,\n    browserSupportsPreventScroll: browserSupportsPreventScroll,\n    getTabIndex: getTabIndex,\n    getMaxDivHeight: getMaxDivHeight,\n    getBodyWidth: getBodyWidth,\n    getBodyHeight: getBodyHeight,\n    getScrollbarWidth: getScrollbarWidth,\n    isInvisibleScrollbar: isInvisibleScrollbar\n});\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nfunction padStartWidthZeros(value, totalStringSize) {\n    return value.toString().padStart(totalStringSize, '0');\n}\nfunction createArrayOfNumbers(first, last) {\n    var result = [];\n    for (var i = first; i <= last; i++) {\n        result.push(i);\n    }\n    return result;\n}\nfunction cleanNumber(value) {\n    if (typeof value === 'string') {\n        value = parseInt(value, 10);\n    }\n    if (typeof value === 'number') {\n        return Math.floor(value);\n    }\n    return null;\n}\nfunction decToHex(number, bytes) {\n    var hex = '';\n    for (var i = 0; i < bytes; i++) {\n        hex += String.fromCharCode(number & 0xff);\n        number >>>= 8;\n    }\n    return hex;\n}\nfunction formatNumberTwoDecimalPlacesAndCommas(value, thousandSeparator, decimalSeparator) {\n    if (typeof value !== 'number') {\n        return '';\n    }\n    return formatNumberCommas(Math.round(value * 100) / 100, thousandSeparator, decimalSeparator);\n}\n/**\n * the native method number.toLocaleString(undefined, {minimumFractionDigits: 0})\n * puts in decimal places in IE, so we use this method instead\n * from: http://blog.tompawlak.org/number-currency-formatting-javascript\n * @param {number} value\n * @returns {string}\n */\nfunction formatNumberCommas(value, thousandSeparator, decimalSeparator) {\n    if (typeof value !== 'number') {\n        return '';\n    }\n    return value.toString().replace('.', decimalSeparator).replace(/(\\d)(?=(\\d{3})+(?!\\d))/g, \"$1\" + thousandSeparator);\n}\nfunction sum(values) {\n    return values == null ? null : values.reduce(function (total, value) { return total + value; }, 0);\n}\nfunction zeroOrGreater(value, defaultValue) {\n    if (value >= 0) {\n        return value;\n    }\n    // zero gets returned if number is missing or the wrong type\n    return defaultValue;\n}\nfunction oneOrGreater(value, defaultValue) {\n    var valueNumber = parseInt(value, 10);\n    if (!isNaN(valueNumber) && isFinite(valueNumber) && valueNumber > 0) {\n        return valueNumber;\n    }\n    return defaultValue;\n}\n\nvar NumberUtils = /*#__PURE__*/Object.freeze({\n    __proto__: null,\n    padStartWidthZeros: padStartWidthZeros,\n    createArrayOfNumbers: createArrayOfNumbers,\n    cleanNumber: cleanNumber,\n    decToHex: decToHex,\n    formatNumberTwoDecimalPlacesAndCommas: formatNumberTwoDecimalPlacesAndCommas,\n    formatNumberCommas: formatNumberCommas,\n    sum: sum,\n    zeroOrGreater: zeroOrGreater,\n    oneOrGreater: oneOrGreater\n});\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __read$p = (undefined && undefined.__read) || function (o, n) {\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n    if (!m) return o;\n    var i = m.call(o), r, ar = [], e;\n    try {\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n    }\n    catch (error) { e = { error: error }; }\n    finally {\n        try {\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\n        }\n        finally { if (e) throw e.error; }\n    }\n    return ar;\n};\n/**\n * Serialises a Date to a string of format `yyyy-MM-dd HH:mm:ss`.\n * An alternative separator can be provided to be used instead of hyphens.\n * @param date The date to serialise\n * @param includeTime Whether to include the time in the serialised string\n * @param separator The separator to use between date parts\n */\nfunction serialiseDate(date, includeTime, separator) {\n    if (includeTime === void 0) { includeTime = true; }\n    if (separator === void 0) { separator = '-'; }\n    if (!date) {\n        return null;\n    }\n    var serialised = [date.getFullYear(), date.getMonth() + 1, date.getDate()].map(function (part) { return padStartWidthZeros(part, 2); }).join(separator);\n    if (includeTime) {\n        serialised += ' ' + [date.getHours(), date.getMinutes(), date.getSeconds()].map(function (part) { return padStartWidthZeros(part, 2); }).join(':');\n    }\n    return serialised;\n}\nvar calculateOrdinal = function (value) {\n    if (value > 3 && value < 21) {\n        return 'th';\n    }\n    var remainder = value % 10;\n    switch (remainder) {\n        case 1: return \"st\";\n        case 2: return \"nd\";\n        case 3: return \"rd\";\n    }\n    return 'th';\n};\n/**\n * Serialises a Date to a string of format the defined format, does not include time.\n * @param date The date to serialise\n * @param format The string to format the date to, defaults to YYYY-MM-DD\n */\nfunction dateToFormattedString(date, format) {\n    if (format === void 0) { format = 'YYYY-MM-DD'; }\n    var fullYear = padStartWidthZeros(date.getFullYear(), 4);\n    var months = [\n        'January', 'February', 'March', 'April', 'May', 'June',\n        'July', 'August', 'September', 'October', 'November', 'December',\n    ];\n    var days = [\n        'Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday',\n    ];\n    var replace = {\n        YYYY: function () { return fullYear.slice(fullYear.length - 4, fullYear.length); },\n        YY: function () { return fullYear.slice(fullYear.length - 2, fullYear.length); },\n        Y: function () { return \"\" + date.getFullYear(); },\n        MMMM: function () { return months[date.getMonth()]; },\n        MMM: function () { return months[date.getMonth()].slice(0, 3); },\n        MM: function () { return padStartWidthZeros(date.getMonth() + 1, 2); },\n        Mo: function () { return \"\" + (date.getMonth() + 1) + calculateOrdinal(date.getMonth() + 1); },\n        M: function () { return \"\" + (date.getMonth() + 1); },\n        Do: function () { return \"\" + date.getDate() + calculateOrdinal(date.getDate()); },\n        DD: function () { return padStartWidthZeros(date.getDate(), 2); },\n        D: function () { return \"\" + date.getDate(); },\n        dddd: function () { return days[date.getDay()]; },\n        ddd: function () { return days[date.getDay()].slice(0, 3); },\n        dd: function () { return days[date.getDay()].slice(0, 2); },\n        do: function () { return \"\" + date.getDay() + calculateOrdinal(date.getDay()); },\n        d: function () { return \"\" + date.getDay(); },\n    };\n    var regexp = new RegExp(Object.keys(replace).join('|'), 'g');\n    return format.replace(regexp, function (match) {\n        if (match in replace) {\n            return replace[match]();\n        }\n        return match;\n    });\n}\n/**\n * Parses a date and time from a string in the format `yyyy-MM-dd HH:mm:ss`\n */\nfunction parseDateTimeFromString(value) {\n    if (!value) {\n        return null;\n    }\n    var _a = __read$p(value.split(' '), 2), dateStr = _a[0], timeStr = _a[1];\n    if (!dateStr) {\n        return null;\n    }\n    var fields = dateStr.split('-').map(function (f) { return parseInt(f, 10); });\n    if (fields.filter(function (f) { return !isNaN(f); }).length !== 3) {\n        return null;\n    }\n    var _b = __read$p(fields, 3), year = _b[0], month = _b[1], day = _b[2];\n    var date = new Date(year, month - 1, day);\n    if (date.getFullYear() !== year ||\n        date.getMonth() !== month - 1 ||\n        date.getDate() !== day) {\n        // date was not parsed as expected so must have been invalid\n        return null;\n    }\n    if (!timeStr || timeStr === '00:00:00') {\n        return date;\n    }\n    var _c = __read$p(timeStr.split(':').map(function (part) { return parseInt(part, 10); }), 3), hours = _c[0], minutes = _c[1], seconds = _c[2];\n    if (hours >= 0 && hours < 24) {\n        date.setHours(hours);\n    }\n    if (minutes >= 0 && minutes < 60) {\n        date.setMinutes(minutes);\n    }\n    if (seconds >= 0 && seconds < 60) {\n        date.setSeconds(seconds);\n    }\n    return date;\n}\n\nvar DateUtils = /*#__PURE__*/Object.freeze({\n    __proto__: null,\n    serialiseDate: serialiseDate,\n    dateToFormattedString: dateToFormattedString,\n    parseDateTimeFromString: parseDateTimeFromString\n});\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __values$5 = (undefined && undefined.__values) || function(o) {\n    var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n    if (m) return m.call(o);\n    if (o && typeof o.length === \"number\") return {\n        next: function () {\n            if (o && i >= o.length) o = void 0;\n            return { value: o && o[i++], done: !o };\n        }\n    };\n    throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nvar __read$o = (undefined && undefined.__read) || function (o, n) {\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n    if (!m) return o;\n    var i = m.call(o), r, ar = [], e;\n    try {\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n    }\n    catch (error) { e = { error: error }; }\n    finally {\n        try {\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\n        }\n        finally { if (e) throw e.error; }\n    }\n    return ar;\n};\nvar rtlNegativeScroll;\n/**\n * This method adds a class to an element and remove that class from all siblings.\n * Useful for toggling state.\n * @param {HTMLElement} element The element to receive the class\n * @param {string} elementClass The class to be assigned to the element\n * @param {boolean} otherElementClass The class to be assigned to siblings of the element, but not the element itself\n */\nfunction radioCssClass(element, elementClass, otherElementClass) {\n    var parent = element.parentElement;\n    var sibling = parent && parent.firstChild;\n    while (sibling) {\n        if (elementClass) {\n            sibling.classList.toggle(elementClass, sibling === element);\n        }\n        if (otherElementClass) {\n            sibling.classList.toggle(otherElementClass, sibling !== element);\n        }\n        sibling = sibling.nextSibling;\n    }\n}\nvar FOCUSABLE_SELECTOR = '[tabindex], input, select, button, textarea, [href]';\nvar FOCUSABLE_EXCLUDE = '.ag-hidden, .ag-hidden *, [disabled], .ag-disabled, .ag-disabled *';\nfunction isFocusableFormField(element) {\n    var matches = Element.prototype.matches || Element.prototype.msMatchesSelector;\n    var inputSelector = 'input, select, button, textarea';\n    var isFocusable = matches.call(element, inputSelector);\n    var isNotFocusable = matches.call(element, FOCUSABLE_EXCLUDE);\n    var isElementVisible = isVisible(element);\n    var focusable = isFocusable && !isNotFocusable && isElementVisible;\n    return focusable;\n}\nfunction setDisplayed(element, displayed, options) {\n    if (options === void 0) { options = {}; }\n    var skipAriaHidden = options.skipAriaHidden;\n    element.classList.toggle('ag-hidden', !displayed);\n    if (!skipAriaHidden) {\n        setAriaHidden(element, !displayed);\n    }\n}\nfunction setVisible(element, visible, options) {\n    if (options === void 0) { options = {}; }\n    var skipAriaHidden = options.skipAriaHidden;\n    element.classList.toggle('ag-invisible', !visible);\n    if (!skipAriaHidden) {\n        setAriaHidden(element, !visible);\n    }\n}\nfunction setDisabled(element, disabled) {\n    var attributeName = 'disabled';\n    var addOrRemoveDisabledAttribute = disabled ?\n        function (e) { return e.setAttribute(attributeName, ''); } :\n        function (e) { return e.removeAttribute(attributeName); };\n    addOrRemoveDisabledAttribute(element);\n    nodeListForEach(element.querySelectorAll('input'), function (input) { return addOrRemoveDisabledAttribute(input); });\n}\nfunction isElementChildOfClass(element, cls, maxNest) {\n    var counter = 0;\n    while (element) {\n        if (element.classList.contains(cls)) {\n            return true;\n        }\n        element = element.parentElement;\n        if (typeof maxNest == 'number') {\n            if (++counter > maxNest) {\n                break;\n            }\n        }\n        else if (element === maxNest) {\n            break;\n        }\n    }\n    return false;\n}\n// returns back sizes as doubles instead of strings. similar to\n// getBoundingClientRect, however getBoundingClientRect does not:\n// a) work with fractions (eg browser is zooming)\n// b) has CSS transitions applied (eg CSS scale, browser zoom), which we don't want, we want the un-transitioned values\nfunction getElementSize(el) {\n    var _a = window.getComputedStyle(el), height = _a.height, width = _a.width, borderTopWidth = _a.borderTopWidth, borderRightWidth = _a.borderRightWidth, borderBottomWidth = _a.borderBottomWidth, borderLeftWidth = _a.borderLeftWidth, paddingTop = _a.paddingTop, paddingRight = _a.paddingRight, paddingBottom = _a.paddingBottom, paddingLeft = _a.paddingLeft, marginTop = _a.marginTop, marginRight = _a.marginRight, marginBottom = _a.marginBottom, marginLeft = _a.marginLeft, boxSizing = _a.boxSizing;\n    return {\n        height: parseFloat(height),\n        width: parseFloat(width),\n        borderTopWidth: parseFloat(borderTopWidth),\n        borderRightWidth: parseFloat(borderRightWidth),\n        borderBottomWidth: parseFloat(borderBottomWidth),\n        borderLeftWidth: parseFloat(borderLeftWidth),\n        paddingTop: parseFloat(paddingTop),\n        paddingRight: parseFloat(paddingRight),\n        paddingBottom: parseFloat(paddingBottom),\n        paddingLeft: parseFloat(paddingLeft),\n        marginTop: parseFloat(marginTop),\n        marginRight: parseFloat(marginRight),\n        marginBottom: parseFloat(marginBottom),\n        marginLeft: parseFloat(marginLeft),\n        boxSizing: boxSizing\n    };\n}\nfunction getInnerHeight(el) {\n    var size = getElementSize(el);\n    if (size.boxSizing === 'border-box') {\n        return size.height - size.paddingTop - size.paddingBottom;\n    }\n    return size.height;\n}\nfunction getInnerWidth(el) {\n    var size = getElementSize(el);\n    if (size.boxSizing === 'border-box') {\n        return size.width - size.paddingLeft - size.paddingRight;\n    }\n    return size.width;\n}\nfunction getAbsoluteHeight(el) {\n    var size = getElementSize(el);\n    var marginRight = size.marginBottom + size.marginTop;\n    return Math.ceil(el.offsetHeight + marginRight);\n}\nfunction getAbsoluteWidth(el) {\n    var size = getElementSize(el);\n    var marginWidth = size.marginLeft + size.marginRight;\n    return Math.ceil(el.offsetWidth + marginWidth);\n}\nfunction isRtlNegativeScroll() {\n    if (typeof rtlNegativeScroll === \"boolean\") {\n        return rtlNegativeScroll;\n    }\n    var template = document.createElement('div');\n    template.style.direction = 'rtl';\n    template.style.width = '1px';\n    template.style.height = '1px';\n    template.style.position = 'fixed';\n    template.style.top = '0px';\n    template.style.overflow = 'hidden';\n    template.dir = 'rtl';\n    template.innerHTML = /* html */\n        \"<div style=\\\"width: 2px\\\">\\n            <span style=\\\"display: inline-block; width: 1px\\\"></span>\\n            <span style=\\\"display: inline-block; width: 1px\\\"></span>\\n        </div>\";\n    document.body.appendChild(template);\n    template.scrollLeft = 1;\n    rtlNegativeScroll = Math.floor(template.scrollLeft) === 0;\n    document.body.removeChild(template);\n    return rtlNegativeScroll;\n}\nfunction getScrollLeft(element, rtl) {\n    var scrollLeft = element.scrollLeft;\n    if (rtl) {\n        // Absolute value - for FF that reports RTL scrolls in negative numbers\n        scrollLeft = Math.abs(scrollLeft);\n        if (isBrowserChrome() && !isRtlNegativeScroll()) {\n            scrollLeft = element.scrollWidth - element.clientWidth - scrollLeft;\n        }\n    }\n    return scrollLeft;\n}\nfunction setScrollLeft(element, value, rtl) {\n    if (rtl) {\n        // Chrome and Safari when doing RTL have the END position of the scroll as zero, not the start\n        if (isRtlNegativeScroll()) {\n            value *= -1;\n        }\n        else if (isBrowserSafari() || isBrowserChrome()) {\n            value = element.scrollWidth - element.clientWidth - value;\n        }\n    }\n    element.scrollLeft = value;\n}\nfunction clearElement(el) {\n    while (el && el.firstChild) {\n        el.removeChild(el.firstChild);\n    }\n}\n/** @deprecated */\nfunction removeElement(parent, cssSelector) {\n    removeFromParent(parent.querySelector(cssSelector));\n}\nfunction removeFromParent(node) {\n    if (node && node.parentNode) {\n        node.parentNode.removeChild(node);\n    }\n}\nfunction isVisible(element) {\n    return element.offsetParent !== null;\n}\n/**\n * Loads the template and returns it as an element. makes up for no simple way in\n * the dom api to load html directly, eg we cannot do this: document.createElement(template)\n * @param {string} template\n * @returns {HTMLElement}\n */\nfunction loadTemplate(template) {\n    var tempDiv = document.createElement('div');\n    tempDiv.innerHTML = (template || '').trim();\n    return tempDiv.firstChild;\n}\nfunction appendHtml(eContainer, htmlTemplate) {\n    if (eContainer.lastChild) {\n        // https://developer.mozilla.org/en-US/docs/Web/API/Element/insertAdjacentHTML\n        // we put the items at the start, so new items appear underneath old items,\n        // so when expanding/collapsing groups, the new rows don't go on top of the\n        // rows below that are moving our of the way\n        eContainer.insertAdjacentHTML('afterbegin', htmlTemplate);\n    }\n    else {\n        eContainer.innerHTML = htmlTemplate;\n    }\n}\n/** @deprecated */\nfunction getElementAttribute(element, attributeName) {\n    if (element.attributes && element.attributes[attributeName]) {\n        var attribute = element.attributes[attributeName];\n        return attribute.value;\n    }\n    return null;\n}\nfunction offsetHeight(element) {\n    return element && element.clientHeight ? element.clientHeight : 0;\n}\nfunction offsetWidth(element) {\n    return element && element.clientWidth ? element.clientWidth : 0;\n}\nfunction ensureDomOrder(eContainer, eChild, eChildBefore) {\n    // if already in right order, do nothing\n    if (eChildBefore && eChildBefore.nextSibling === eChild) {\n        return;\n    }\n    var focusedEl = document.activeElement;\n    var eChildHasFocus = eChild.contains(focusedEl);\n    if (eChildBefore) {\n        if (eChildBefore.nextSibling) {\n            // insert between the eRowBefore and the row after it\n            eContainer.insertBefore(eChild, eChildBefore.nextSibling);\n        }\n        else {\n            // if nextSibling is missing, means other row is at end, so just append new row at the end\n            eContainer.appendChild(eChild);\n        }\n    }\n    else {\n        // otherwise put at start\n        if (eContainer.firstChild && eContainer.firstChild !== eChild) {\n            // insert it at the first location\n            eContainer.insertAdjacentElement('afterbegin', eChild);\n        }\n    }\n    if (eChildHasFocus && focusedEl && browserSupportsPreventScroll()) {\n        focusedEl.focus({ preventScroll: true });\n    }\n}\nfunction setDomChildOrder(eContainer, orderedChildren) {\n    for (var i = 0; i < orderedChildren.length; i++) {\n        var correctCellAtIndex = orderedChildren[i];\n        var actualCellAtIndex = eContainer.children[i];\n        if (actualCellAtIndex !== correctCellAtIndex) {\n            eContainer.insertBefore(correctCellAtIndex, actualCellAtIndex);\n        }\n    }\n}\nfunction insertWithDomOrder(eContainer, eToInsert, eChildBefore) {\n    if (eChildBefore) {\n        // if previous element exists, just slot in after the previous element\n        eChildBefore.insertAdjacentElement('afterend', eToInsert);\n    }\n    else {\n        if (eContainer.firstChild) {\n            // insert it at the first location\n            eContainer.insertAdjacentElement('afterbegin', eToInsert);\n        }\n        else {\n            // otherwise eContainer is empty, so just append it\n            eContainer.appendChild(eToInsert);\n        }\n    }\n}\n/** @deprecated */\nfunction prependDC(parent, documentFragment) {\n    if (exists(parent.firstChild)) {\n        parent.insertBefore(documentFragment, parent.firstChild);\n    }\n    else {\n        parent.appendChild(documentFragment);\n    }\n}\nfunction addStylesToElement(eElement, styles) {\n    var e_1, _a;\n    if (!styles) {\n        return;\n    }\n    try {\n        for (var _b = __values$5(Object.entries(styles)), _c = _b.next(); !_c.done; _c = _b.next()) {\n            var _d = __read$o(_c.value, 2), key = _d[0], value = _d[1];\n            if (!key || !key.length || value == null) {\n                continue;\n            }\n            // changes the key from camelCase into a hyphenated-string\n            var parsedKey = key.replace(/[A-Z]/g, function (s) { return \"-\" + s.toLocaleLowerCase(); });\n            var valueAsString = value.toString();\n            var parsedValue = valueAsString.replace(/\\s*!important/g, '');\n            var priority = parsedValue.length != valueAsString.length ? 'important' : undefined;\n            eElement.style.setProperty(parsedKey, value, priority);\n        }\n    }\n    catch (e_1_1) { e_1 = { error: e_1_1 }; }\n    finally {\n        try {\n            if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n        }\n        finally { if (e_1) throw e_1.error; }\n    }\n}\nfunction isHorizontalScrollShowing(element) {\n    return element.clientWidth < element.scrollWidth;\n}\nfunction isVerticalScrollShowing(element) {\n    return element.clientHeight < element.scrollHeight;\n}\nfunction setElementWidth(element, width) {\n    if (width === 'flex') {\n        element.style.removeProperty('width');\n        element.style.removeProperty('minWidth');\n        element.style.removeProperty('maxWidth');\n        element.style.flex = '1 1 auto';\n    }\n    else {\n        setFixedWidth(element, width);\n    }\n}\nfunction setFixedWidth(element, width) {\n    width = formatSize(width);\n    element.style.width = width.toString();\n    element.style.maxWidth = width.toString();\n    element.style.minWidth = width.toString();\n}\nfunction setElementHeight(element, height) {\n    if (height === 'flex') {\n        element.style.removeProperty('height');\n        element.style.removeProperty('minHeight');\n        element.style.removeProperty('maxHeight');\n        element.style.flex = '1 1 auto';\n    }\n    else {\n        setFixedHeight(element, height);\n    }\n}\nfunction setFixedHeight(element, height) {\n    height = formatSize(height);\n    element.style.height = height.toString();\n    element.style.maxHeight = height.toString();\n    element.style.minHeight = height.toString();\n}\nfunction formatSize(size) {\n    if (typeof size === 'number') {\n        return size + \"px\";\n    }\n    return size;\n}\nfunction isNodeOrElement(o) {\n    return o instanceof Node || o instanceof HTMLElement;\n}\n/**\n * Makes a copy of a node list into a list\n * @param {NodeList} nodeList\n * @returns {Node[]}\n */\nfunction copyNodeList(nodeList) {\n    if (nodeList == null) {\n        return [];\n    }\n    var result = [];\n    nodeListForEach(nodeList, function (node) { return result.push(node); });\n    return result;\n}\nfunction iterateNamedNodeMap(map, callback) {\n    if (!map) {\n        return;\n    }\n    for (var i = 0; i < map.length; i++) {\n        var attr = map[i];\n        callback(attr.name, attr.value);\n    }\n}\nfunction addOrRemoveAttribute(element, name, value) {\n    if (value == null) {\n        element.removeAttribute(name);\n    }\n    else {\n        element.setAttribute(name, value.toString());\n    }\n}\nfunction nodeListForEach(nodeList, action) {\n    if (nodeList == null) {\n        return;\n    }\n    for (var i = 0; i < nodeList.length; i++) {\n        action(nodeList[i]);\n    }\n}\n\nvar DomUtils = /*#__PURE__*/Object.freeze({\n    __proto__: null,\n    radioCssClass: radioCssClass,\n    FOCUSABLE_SELECTOR: FOCUSABLE_SELECTOR,\n    FOCUSABLE_EXCLUDE: FOCUSABLE_EXCLUDE,\n    isFocusableFormField: isFocusableFormField,\n    setDisplayed: setDisplayed,\n    setVisible: setVisible,\n    setDisabled: setDisabled,\n    isElementChildOfClass: isElementChildOfClass,\n    getElementSize: getElementSize,\n    getInnerHeight: getInnerHeight,\n    getInnerWidth: getInnerWidth,\n    getAbsoluteHeight: getAbsoluteHeight,\n    getAbsoluteWidth: getAbsoluteWidth,\n    isRtlNegativeScroll: isRtlNegativeScroll,\n    getScrollLeft: getScrollLeft,\n    setScrollLeft: setScrollLeft,\n    clearElement: clearElement,\n    removeElement: removeElement,\n    removeFromParent: removeFromParent,\n    isVisible: isVisible,\n    loadTemplate: loadTemplate,\n    appendHtml: appendHtml,\n    getElementAttribute: getElementAttribute,\n    offsetHeight: offsetHeight,\n    offsetWidth: offsetWidth,\n    ensureDomOrder: ensureDomOrder,\n    setDomChildOrder: setDomChildOrder,\n    insertWithDomOrder: insertWithDomOrder,\n    prependDC: prependDC,\n    addStylesToElement: addStylesToElement,\n    isHorizontalScrollShowing: isHorizontalScrollShowing,\n    isVerticalScrollShowing: isVerticalScrollShowing,\n    setElementWidth: setElementWidth,\n    setFixedWidth: setFixedWidth,\n    setElementHeight: setElementHeight,\n    setFixedHeight: setFixedHeight,\n    formatSize: formatSize,\n    isNodeOrElement: isNodeOrElement,\n    copyNodeList: copyNodeList,\n    iterateNamedNodeMap: iterateNamedNodeMap,\n    addOrRemoveAttribute: addOrRemoveAttribute,\n    nodeListForEach: nodeListForEach\n});\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\n//\n// IMPORTANT NOTE!\n//\n// If you change the list below, copy/paste the new content into the docs page javascript-grid-icons\n//\nvar iconNameClassMap = {\n    // header column group shown when expanded (click to contract)\n    columnGroupOpened: 'expanded',\n    // header column group shown when contracted (click to expand)\n    columnGroupClosed: 'contracted',\n    // tool panel column group contracted (click to expand)\n    columnSelectClosed: 'tree-closed',\n    // tool panel column group expanded (click to contract)\n    columnSelectOpen: 'tree-open',\n    // column tool panel header expand/collapse all button, shown when some children are expanded and\n    //     others are collapsed\n    columnSelectIndeterminate: 'tree-indeterminate',\n    // shown on ghost icon while dragging column to the side of the grid to pin\n    columnMovePin: 'pin',\n    // shown on ghost icon while dragging over part of the page that is not a drop zone\n    columnMoveHide: 'eye-slash',\n    // shown on ghost icon while dragging columns to reorder\n    columnMoveMove: 'arrows',\n    // animating icon shown when dragging a column to the right of the grid causes horizontal scrolling\n    columnMoveLeft: 'left',\n    // animating icon shown when dragging a column to the left of the grid causes horizontal scrolling\n    columnMoveRight: 'right',\n    // shown on ghost icon while dragging over Row Groups drop zone\n    columnMoveGroup: 'group',\n    // shown on ghost icon while dragging over Values drop zone\n    columnMoveValue: 'aggregation',\n    // shown on ghost icon while dragging over pivot drop zone\n    columnMovePivot: 'pivot',\n    // shown on ghost icon while dragging over drop zone that doesn't support it, e.g.\n    //     string column over aggregation drop zone\n    dropNotAllowed: 'not-allowed',\n    // shown on row group when contracted (click to expand)\n    groupContracted: 'tree-closed',\n    // shown on row group when expanded (click to contract)\n    groupExpanded: 'tree-open',\n    // set filter tree list group contracted (click to expand)\n    setFilterGroupClosed: 'tree-closed',\n    // set filter tree list group expanded (click to contract)\n    setFilterGroupOpen: 'tree-open',\n    // set filter tree list expand/collapse all button, shown when some children are expanded and\n    //     others are collapsed\n    setFilterGroupIndeterminate: 'tree-indeterminate',\n    // context menu chart item\n    chart: 'chart',\n    // chart window title bar\n    close: 'cross',\n    // X (remove) on column 'pill' after adding it to a drop zone list\n    cancel: 'cancel',\n    // indicates the currently active pin state in the \"Pin column\" sub-menu of the column menu\n    check: 'tick',\n    // \"go to first\" button in pagination controls\n    first: 'first',\n    // \"go to previous\" button in pagination controls\n    previous: 'previous',\n    // \"go to next\" button in pagination controls\n    next: 'next',\n    // \"go to last\" button in pagination controls\n    last: 'last',\n    // shown on top right of chart when chart is linked to range data (click to unlink)\n    linked: 'linked',\n    // shown on top right of chart when chart is not linked to range data (click to link)\n    unlinked: 'unlinked',\n    // \"Choose colour\" button on chart settings tab\n    colorPicker: 'color-picker',\n    // rotating spinner shown by the loading cell renderer\n    groupLoading: 'loading',\n    // button to launch enterprise column menu\n    menu: 'menu',\n    // filter tool panel tab\n    filter: 'filter',\n    // column tool panel tab\n    columns: 'columns',\n    // button in chart regular size window title bar (click to maximise)\n    maximize: 'maximize',\n    // button in chart maximised window title bar (click to make regular size)\n    minimize: 'minimize',\n    // \"Pin column\" item in column header menu\n    menuPin: 'pin',\n    // \"Value aggregation\" column menu item (shown on numeric columns when grouping is active)\"\n    menuValue: 'aggregation',\n    // \"Group by {column-name}\" item in column header menu\n    menuAddRowGroup: 'group',\n    // \"Un-Group by {column-name}\" item in column header menu\n    menuRemoveRowGroup: 'group',\n    // context menu copy item\n    clipboardCopy: 'copy',\n    // context menu cut item\n    clipboardCut: 'cut',\n    // context menu paste item\n    clipboardPaste: 'paste',\n    // identifies the pivot drop zone\n    pivotPanel: 'pivot',\n    // \"Row groups\" drop zone in column tool panel\n    rowGroupPanel: 'group',\n    // columns tool panel Values drop zone\n    valuePanel: 'aggregation',\n    // drag handle used to pick up draggable columns\n    columnDrag: 'grip',\n    // drag handle used to pick up draggable rows\n    rowDrag: 'grip',\n    // context menu export item\n    save: 'save',\n    // csv export\n    csvExport: 'csv',\n    // excel export,\n    excelExport: 'excel',\n    // icon on dropdown editors\n    smallDown: 'small-down',\n    // version of small-right used in RTL mode\n    smallLeft: 'small-left',\n    // separater between column 'pills' when you add multiple columns to the header drop zone\n    smallRight: 'small-right',\n    smallUp: 'small-up',\n    // show on column header when column is sorted ascending\n    sortAscending: 'asc',\n    // show on column header when column is sorted descending\n    sortDescending: 'desc',\n    // show on column header when column has no sort, only when enabled with gridOptions.unSortIcon=true\n    sortUnSort: 'none'\n};\n/**\n * If icon provided, use this (either a string, or a function callback).\n * if not, then use the default icon from the theme\n * @param {string} iconName\n * @param {GridOptionsService} gridOptionsService\n * @param {Column | null} [column]\n * @returns {Element}\n */\nfunction createIcon(iconName, gridOptionsService, column) {\n    var iconContents = createIconNoSpan(iconName, gridOptionsService, column);\n    if (iconContents) {\n        var className = iconContents.className;\n        if ((typeof className === 'string' && className.indexOf('ag-icon') > -1) ||\n            (typeof className === 'object' && className['ag-icon'])) {\n            return iconContents;\n        }\n    }\n    var eResult = document.createElement('span');\n    eResult.appendChild(iconContents);\n    return eResult;\n}\nfunction createIconNoSpan(iconName, gridOptionsService, column, forceCreate) {\n    var userProvidedIcon = null;\n    // check col for icon first\n    var icons = column && column.getColDef().icons;\n    if (icons) {\n        userProvidedIcon = icons[iconName];\n    }\n    // if not in col, try grid options\n    if (gridOptionsService && !userProvidedIcon) {\n        var optionsIcons = gridOptionsService.get('icons');\n        if (optionsIcons) {\n            userProvidedIcon = optionsIcons[iconName];\n        }\n    }\n    // now if user provided, use it\n    if (userProvidedIcon) {\n        var rendererResult = void 0;\n        if (typeof userProvidedIcon === 'function') {\n            rendererResult = userProvidedIcon();\n        }\n        else if (typeof userProvidedIcon === 'string') {\n            rendererResult = userProvidedIcon;\n        }\n        else {\n            throw new Error('icon from grid options needs to be a string or a function');\n        }\n        if (typeof rendererResult === 'string') {\n            return loadTemplate(rendererResult);\n        }\n        if (isNodeOrElement(rendererResult)) {\n            return rendererResult;\n        }\n        console.warn('AG Grid: iconRenderer should return back a string or a dom object');\n    }\n    else {\n        var span = document.createElement('span');\n        var cssClass = iconNameClassMap[iconName];\n        if (!cssClass) {\n            if (!forceCreate) {\n                console.warn(\"AG Grid: Did not find icon \" + iconName);\n                cssClass = '';\n            }\n            else {\n                cssClass = iconName;\n            }\n        }\n        span.setAttribute('class', \"ag-icon ag-icon-\" + cssClass);\n        span.setAttribute('unselectable', 'on');\n        setAriaRole(span, 'presentation');\n        return span;\n    }\n}\n\nvar IconUtils = /*#__PURE__*/Object.freeze({\n    __proto__: null,\n    iconNameClassMap: iconNameClassMap,\n    createIcon: createIcon,\n    createIconNoSpan: createIconNoSpan\n});\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar KeyCode = /** @class */ (function () {\n    function KeyCode() {\n    }\n    KeyCode.BACKSPACE = 'Backspace';\n    KeyCode.TAB = 'Tab';\n    KeyCode.ENTER = 'Enter';\n    KeyCode.ESCAPE = 'Escape';\n    KeyCode.SPACE = ' ';\n    KeyCode.LEFT = 'ArrowLeft';\n    KeyCode.UP = 'ArrowUp';\n    KeyCode.RIGHT = 'ArrowRight';\n    KeyCode.DOWN = 'ArrowDown';\n    KeyCode.DELETE = 'Delete';\n    KeyCode.F2 = 'F2';\n    KeyCode.PAGE_UP = 'PageUp';\n    KeyCode.PAGE_DOWN = 'PageDown';\n    KeyCode.PAGE_HOME = 'Home';\n    KeyCode.PAGE_END = 'End';\n    // these should be used with `event.code` instead of `event.key`\n    // as `event.key` changes when non-latin keyboards are used\n    KeyCode.A = 'KeyA';\n    KeyCode.C = 'KeyC';\n    KeyCode.D = 'KeyD';\n    KeyCode.V = 'KeyV';\n    KeyCode.X = 'KeyX';\n    KeyCode.Y = 'KeyY';\n    KeyCode.Z = 'KeyZ';\n    return KeyCode;\n}());\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar A_KEYCODE = 65;\nvar C_KEYCODE = 67;\nvar V_KEYCODE = 86;\nvar D_KEYCODE = 68;\nvar Z_KEYCODE = 90;\nvar Y_KEYCODE = 89;\nfunction isEventFromPrintableCharacter(event) {\n    // no allowed printable chars have alt or ctrl key combinations\n    if (event.altKey || event.ctrlKey || event.metaKey) {\n        return false;\n    }\n    // if key is length 1, eg if it is 'a' for the a key, or '2' for the '2' key.\n    // non-printable characters have names, eg 'Enter' or 'Backspace'.\n    var printableCharacter = event.key.length === 1;\n    return printableCharacter;\n}\n/**\n * Allows user to tell the grid to skip specific keyboard events\n * @param {GridOptionsService} gridOptionsService\n * @param {KeyboardEvent} keyboardEvent\n * @param {IRowNode} rowNode\n * @param {Column} column\n * @param {boolean} editing\n * @returns {boolean}\n */\nfunction isUserSuppressingKeyboardEvent(gridOptionsService, keyboardEvent, rowNode, column, editing) {\n    var colDefFunc = column ? column.getColDef().suppressKeyboardEvent : undefined;\n    // if no callbacks provided by user, then do nothing\n    if (!colDefFunc) {\n        return false;\n    }\n    var params = {\n        event: keyboardEvent,\n        editing: editing,\n        column: column,\n        api: gridOptionsService.api,\n        node: rowNode,\n        data: rowNode.data,\n        colDef: column.getColDef(),\n        context: gridOptionsService.context,\n        columnApi: gridOptionsService.columnApi\n    };\n    // colDef get first preference on suppressing events\n    if (colDefFunc) {\n        var colDefFuncResult = colDefFunc(params);\n        // if colDef func suppressed, then return now, no need to call gridOption func\n        if (colDefFuncResult) {\n            return true;\n        }\n    }\n    // otherwise return false, don't suppress, as colDef didn't suppress and no func on gridOptions\n    return false;\n}\nfunction isUserSuppressingHeaderKeyboardEvent(gridOptionsService, keyboardEvent, headerRowIndex, column) {\n    var colDef = column.getDefinition();\n    var colDefFunc = colDef && colDef.suppressHeaderKeyboardEvent;\n    if (!exists(colDefFunc)) {\n        return false;\n    }\n    var params = {\n        api: gridOptionsService.api,\n        columnApi: gridOptionsService.columnApi,\n        context: gridOptionsService.context,\n        colDef: colDef,\n        column: column,\n        headerRowIndex: headerRowIndex,\n        event: keyboardEvent\n    };\n    return !!colDefFunc(params);\n}\nfunction normaliseQwertyAzerty(keyboardEvent) {\n    var keyCode = keyboardEvent.keyCode;\n    var code;\n    switch (keyCode) {\n        case A_KEYCODE:\n            code = KeyCode.A;\n            break;\n        case C_KEYCODE:\n            code = KeyCode.C;\n            break;\n        case V_KEYCODE:\n            code = KeyCode.V;\n            break;\n        case D_KEYCODE:\n            code = KeyCode.D;\n            break;\n        case Z_KEYCODE:\n            code = KeyCode.Z;\n            break;\n        case Y_KEYCODE:\n            code = KeyCode.Y;\n            break;\n        default:\n            code = keyboardEvent.code;\n    }\n    return code;\n}\nfunction isDeleteKey(key, alwaysReturnFalseOnBackspace) {\n    if (alwaysReturnFalseOnBackspace === void 0) { alwaysReturnFalseOnBackspace = false; }\n    if (key === KeyCode.DELETE) {\n        return true;\n    }\n    if (!alwaysReturnFalseOnBackspace && key === KeyCode.BACKSPACE) {\n        return isMacOsUserAgent();\n    }\n    return false;\n}\n\nvar KeyboardUtils = /*#__PURE__*/Object.freeze({\n    __proto__: null,\n    isEventFromPrintableCharacter: isEventFromPrintableCharacter,\n    isUserSuppressingKeyboardEvent: isUserSuppressingKeyboardEvent,\n    isUserSuppressingHeaderKeyboardEvent: isUserSuppressingHeaderKeyboardEvent,\n    normaliseQwertyAzerty: normaliseQwertyAzerty,\n    isDeleteKey: isDeleteKey\n});\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\n/**\n * `True` if the event is close to the original event by X pixels either vertically or horizontally.\n * we only start dragging after X pixels so this allows us to know if we should start dragging yet.\n * @param {MouseEvent | TouchEvent} e1\n * @param {MouseEvent | TouchEvent} e2\n * @param {number} pixelCount\n * @returns {boolean}\n */\nfunction areEventsNear(e1, e2, pixelCount) {\n    // by default, we wait 4 pixels before starting the drag\n    if (pixelCount === 0) {\n        return false;\n    }\n    var diffX = Math.abs(e1.clientX - e2.clientX);\n    var diffY = Math.abs(e1.clientY - e2.clientY);\n    return Math.max(diffX, diffY) <= pixelCount;\n}\n\nvar MouseUtils = /*#__PURE__*/Object.freeze({\n    __proto__: null,\n    areEventsNear: areEventsNear\n});\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\n/**\n * Gets called by: a) ClientSideNodeManager and b) GroupStage to do sorting.\n * when in ClientSideNodeManager we always have indexes (as this sorts the items the\n * user provided) but when in GroupStage, the nodes can contain filler nodes that\n * don't have order id's\n * @param {RowNode[]} rowNodes\n * @param {Object} rowNodeOrder\n *\n * @returns a boolean representing whether nodes were reordered\n */\nfunction sortRowNodesByOrder(rowNodes, rowNodeOrder) {\n    if (!rowNodes) {\n        return false;\n    }\n    var comparator = function (nodeA, nodeB) {\n        var positionA = rowNodeOrder[nodeA.id];\n        var positionB = rowNodeOrder[nodeB.id];\n        var aHasIndex = positionA !== undefined;\n        var bHasIndex = positionB !== undefined;\n        var bothNodesAreUserNodes = aHasIndex && bHasIndex;\n        var bothNodesAreFillerNodes = !aHasIndex && !bHasIndex;\n        if (bothNodesAreUserNodes) {\n            // when comparing two nodes the user has provided, they always\n            // have indexes\n            return positionA - positionB;\n        }\n        if (bothNodesAreFillerNodes) {\n            // when comparing two filler nodes, we have no index to compare them\n            // against, however we want this sorting to be deterministic, so that\n            // the rows don't jump around as the user does delta updates. so we\n            // want the same sort result. so we use the __objectId - which doesn't make sense\n            // from a sorting point of view, but does give consistent behaviour between\n            // calls. otherwise groups jump around as delta updates are done.\n            // note: previously here we used nodeId, however this gave a strange order\n            // as string ordering of numbers is wrong, so using id based on creation order\n            // as least gives better looking order.\n            return nodeA.__objectId - nodeB.__objectId;\n        }\n        if (aHasIndex) {\n            return 1;\n        }\n        return -1;\n    };\n    // check if the list first needs sorting\n    var rowNodeA;\n    var rowNodeB;\n    var atLeastOneOutOfOrder = false;\n    for (var i = 0; i < rowNodes.length - 1; i++) {\n        rowNodeA = rowNodes[i];\n        rowNodeB = rowNodes[i + 1];\n        if (comparator(rowNodeA, rowNodeB) > 0) {\n            atLeastOneOutOfOrder = true;\n            break;\n        }\n    }\n    if (atLeastOneOutOfOrder) {\n        rowNodes.sort(comparator);\n        return true;\n    }\n    return false;\n}\nfunction traverseNodesWithKey(nodes, callback) {\n    var keyParts = [];\n    recursiveSearchNodes(nodes);\n    function recursiveSearchNodes(currentNodes) {\n        if (!currentNodes) {\n            return;\n        }\n        currentNodes.forEach(function (node) {\n            // also checking for children for tree data\n            if (node.group || node.hasChildren()) {\n                keyParts.push(node.key);\n                var key = keyParts.join('|');\n                callback(node, key);\n                recursiveSearchNodes(node.childrenAfterGroup);\n                keyParts.pop();\n            }\n        });\n    }\n}\n\nvar RowNodeUtils = /*#__PURE__*/Object.freeze({\n    __proto__: null,\n    sortRowNodesByOrder: sortRowNodesByOrder,\n    traverseNodesWithKey: traverseNodesWithKey\n});\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nfunction convertToSet(list) {\n    var set = new Set();\n    list.forEach(function (x) { return set.add(x); });\n    return set;\n}\n\nvar SetUtils = /*#__PURE__*/Object.freeze({\n    __proto__: null,\n    convertToSet: convertToSet\n});\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __assign$k = (undefined && undefined.__assign) || function () {\n    __assign$k = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign$k.apply(this, arguments);\n};\nvar utils = __assign$k(__assign$k(__assign$k(__assign$k(__assign$k(__assign$k(__assign$k(__assign$k(__assign$k(__assign$k(__assign$k(__assign$k(__assign$k(__assign$k(__assign$k(__assign$k(__assign$k(__assign$k({}, AriaUtils), ArrayUtils), BrowserUtils), DateUtils), DomUtils), EventUtils), FunctionUtils), FuzzyMatchUtils), GenericUtils), IconUtils), KeyboardUtils), MapUtils), MouseUtils), NumberUtils), ObjectUtils), RowNodeUtils), SetUtils), StringUtils);\nvar _ = utils;\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar NumberSequence = /** @class */ (function () {\n    function NumberSequence(initValue, step) {\n        if (initValue === void 0) { initValue = 0; }\n        if (step === void 0) { step = 1; }\n        this.nextValue = initValue;\n        this.step = step;\n    }\n    NumberSequence.prototype.next = function () {\n        var valToReturn = this.nextValue;\n        this.nextValue += this.step;\n        return valToReturn;\n    };\n    NumberSequence.prototype.peek = function () {\n        return this.nextValue;\n    };\n    NumberSequence.prototype.skip = function (count) {\n        this.nextValue += count;\n    };\n    return NumberSequence;\n}());\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar AgPromiseStatus;\n(function (AgPromiseStatus) {\n    AgPromiseStatus[AgPromiseStatus[\"IN_PROGRESS\"] = 0] = \"IN_PROGRESS\";\n    AgPromiseStatus[AgPromiseStatus[\"RESOLVED\"] = 1] = \"RESOLVED\";\n})(AgPromiseStatus || (AgPromiseStatus = {}));\nvar AgPromise = /** @class */ (function () {\n    function AgPromise(callback) {\n        var _this = this;\n        this.status = AgPromiseStatus.IN_PROGRESS;\n        this.resolution = null;\n        this.waiters = [];\n        callback(function (value) { return _this.onDone(value); }, function (params) { return _this.onReject(params); });\n    }\n    AgPromise.all = function (promises) {\n        return new AgPromise(function (resolve) {\n            var remainingToResolve = promises.length;\n            var combinedValues = new Array(remainingToResolve);\n            promises.forEach(function (promise, index) {\n                promise.then(function (value) {\n                    combinedValues[index] = value;\n                    remainingToResolve--;\n                    if (remainingToResolve === 0) {\n                        resolve(combinedValues);\n                    }\n                });\n            });\n        });\n    };\n    AgPromise.resolve = function (value) {\n        if (value === void 0) { value = null; }\n        return new AgPromise(function (resolve) { return resolve(value); });\n    };\n    AgPromise.prototype.then = function (func) {\n        var _this = this;\n        return new AgPromise(function (resolve) {\n            if (_this.status === AgPromiseStatus.RESOLVED) {\n                resolve(func(_this.resolution));\n            }\n            else {\n                _this.waiters.push(function (value) { return resolve(func(value)); });\n            }\n        });\n    };\n    AgPromise.prototype.resolveNow = function (ifNotResolvedValue, ifResolved) {\n        return this.status === AgPromiseStatus.RESOLVED ? ifResolved(this.resolution) : ifNotResolvedValue;\n    };\n    AgPromise.prototype.onDone = function (value) {\n        this.status = AgPromiseStatus.RESOLVED;\n        this.resolution = value;\n        this.waiters.forEach(function (waiter) { return waiter(value); });\n    };\n    AgPromise.prototype.onReject = function (params) {\n        console.warn('TBI');\n    };\n    return AgPromise;\n}());\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\n/**\n * A Util Class only used when debugging for printing time to console\n */\nvar Timer = /** @class */ (function () {\n    function Timer() {\n        this.timestamp = new Date().getTime();\n    }\n    Timer.prototype.print = function (msg) {\n        var duration = (new Date().getTime()) - this.timestamp;\n        console.info(msg + \" = \" + duration);\n        this.timestamp = new Date().getTime();\n    };\n    return Timer;\n}());\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$2M = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __assign$j = (undefined && undefined.__assign) || function () {\n    __assign$j = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign$j.apply(this, arguments);\n};\nvar __decorate$2n = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar TooltipStates;\n(function (TooltipStates) {\n    TooltipStates[TooltipStates[\"NOTHING\"] = 0] = \"NOTHING\";\n    TooltipStates[TooltipStates[\"WAITING_TO_SHOW\"] = 1] = \"WAITING_TO_SHOW\";\n    TooltipStates[TooltipStates[\"SHOWING\"] = 2] = \"SHOWING\";\n})(TooltipStates || (TooltipStates = {}));\nvar CustomTooltipFeature = /** @class */ (function (_super) {\n    __extends$2M(CustomTooltipFeature, _super);\n    function CustomTooltipFeature(parentComp) {\n        var _this = _super.call(this) || this;\n        _this.DEFAULT_SHOW_TOOLTIP_DELAY = 2000;\n        _this.DEFAULT_HIDE_TOOLTIP_DELAY = 10000;\n        _this.SHOW_QUICK_TOOLTIP_DIFF = 1000;\n        _this.FADE_OUT_TOOLTIP_TIMEOUT = 1000;\n        _this.state = TooltipStates.NOTHING;\n        // when showing the tooltip, we need to make sure it's the most recent instance we request, as due to\n        // async we could request two tooltips before the first instance returns, in which case we should\n        // disregard the second instance.\n        _this.tooltipInstanceCount = 0;\n        _this.tooltipMouseTrack = false;\n        _this.parentComp = parentComp;\n        return _this;\n    }\n    CustomTooltipFeature.prototype.postConstruct = function () {\n        this.tooltipShowDelay = this.getTooltipDelay('show') || this.DEFAULT_SHOW_TOOLTIP_DELAY;\n        this.tooltipHideDelay = this.getTooltipDelay('hide') || this.DEFAULT_HIDE_TOOLTIP_DELAY;\n        this.tooltipMouseTrack = this.gridOptionsService.is('tooltipMouseTrack');\n        var el = this.parentComp.getGui();\n        this.addManagedListener(el, 'mouseenter', this.onMouseEnter.bind(this));\n        this.addManagedListener(el, 'mouseleave', this.onMouseLeave.bind(this));\n        this.addManagedListener(el, 'mousemove', this.onMouseMove.bind(this));\n        this.addManagedListener(el, 'mousedown', this.onMouseDown.bind(this));\n        this.addManagedListener(el, 'keydown', this.onKeyDown.bind(this));\n    };\n    CustomTooltipFeature.prototype.destroy = function () {\n        // if this component gets destroyed while tooltip is showing, need to make sure\n        // we don't end with no mouseLeave event resulting in zombie tooltip\n        this.setToDoNothing();\n        _super.prototype.destroy.call(this);\n    };\n    CustomTooltipFeature.prototype.onMouseEnter = function (e) {\n        if (isIOSUserAgent()) {\n            return;\n        }\n        // every mouseenter should be following by a mouseleave, however for some unkonwn, it's possible for\n        // mouseenter to be called twice in a row, which can happen if editing the cell. this was reported\n        // in https://ag-grid.atlassian.net/browse/AG-4422. to get around this, we check the state, and if\n        // state is !=nothing, then we know mouseenter was already received.\n        if (this.state != TooltipStates.NOTHING) {\n            return;\n        }\n        // if another tooltip was hidden very recently, we only wait 200ms to show, not the normal waiting time\n        var delay = this.isLastTooltipHiddenRecently() ? 200 : this.tooltipShowDelay;\n        this.showTooltipTimeoutId = window.setTimeout(this.showTooltip.bind(this), delay);\n        this.lastMouseEvent = e;\n        this.state = TooltipStates.WAITING_TO_SHOW;\n    };\n    CustomTooltipFeature.prototype.onMouseLeave = function () {\n        this.setToDoNothing();\n    };\n    CustomTooltipFeature.prototype.onKeyDown = function () {\n        this.setToDoNothing();\n    };\n    CustomTooltipFeature.prototype.setToDoNothing = function () {\n        if (this.state === TooltipStates.SHOWING) {\n            this.hideTooltip();\n        }\n        this.clearTimeouts();\n        this.state = TooltipStates.NOTHING;\n    };\n    CustomTooltipFeature.prototype.onMouseMove = function (e) {\n        // there is a delay from the time we mouseOver a component and the time the\n        // tooltip is displayed, so we need to track mousemove to be able to correctly\n        // position the tooltip when showTooltip is called.\n        this.lastMouseEvent = e;\n        if (this.tooltipMouseTrack &&\n            this.state === TooltipStates.SHOWING &&\n            this.tooltipComp) {\n            this.positionTooltipUnderLastMouseEvent();\n        }\n    };\n    CustomTooltipFeature.prototype.onMouseDown = function () {\n        this.setToDoNothing();\n    };\n    CustomTooltipFeature.prototype.getTooltipDelay = function (type) {\n        var tooltipShowDelay = this.gridOptionsService.getNum('tooltipShowDelay');\n        var tooltipHideDelay = this.gridOptionsService.getNum('tooltipHideDelay');\n        var delay = type === 'show' ? tooltipShowDelay : tooltipHideDelay;\n        var capitalisedType = capitalise(type);\n        if (exists(delay)) {\n            if (delay < 0) {\n                doOnce(function () { return console.warn(\"AG Grid: tooltip\" + capitalisedType + \"Delay should not be lower than 0\"); }, \"tooltip\" + capitalisedType + \"DelayWarn\");\n            }\n            return Math.max(200, delay);\n        }\n        return null;\n    };\n    CustomTooltipFeature.prototype.hideTooltip = function () {\n        // check if comp exists - due to async, although we asked for\n        // one, the instance may not be back yet\n        if (this.tooltipComp) {\n            this.destroyTooltipComp();\n            CustomTooltipFeature.lastTooltipHideTime = new Date().getTime();\n        }\n        this.state = TooltipStates.NOTHING;\n    };\n    CustomTooltipFeature.prototype.destroyTooltipComp = function () {\n        var _this = this;\n        // add class to fade out the tooltip\n        this.tooltipComp.getGui().classList.add('ag-tooltip-hiding');\n        // make local copies of these variables, as we use them in the async function below,\n        // and we clear then to 'undefined' later, so need to take a copy before they are undefined.\n        var tooltipPopupDestroyFunc = this.tooltipPopupDestroyFunc;\n        var tooltipComp = this.tooltipComp;\n        window.setTimeout(function () {\n            tooltipPopupDestroyFunc();\n            _this.getContext().destroyBean(tooltipComp);\n        }, this.FADE_OUT_TOOLTIP_TIMEOUT);\n        this.tooltipPopupDestroyFunc = undefined;\n        this.tooltipComp = undefined;\n    };\n    CustomTooltipFeature.prototype.isLastTooltipHiddenRecently = function () {\n        // return true if <1000ms since last time we hid a tooltip\n        var now = new Date().getTime();\n        var then = CustomTooltipFeature.lastTooltipHideTime;\n        return (now - then) < this.SHOW_QUICK_TOOLTIP_DIFF;\n    };\n    CustomTooltipFeature.prototype.showTooltip = function () {\n        var params = __assign$j({}, this.parentComp.getTooltipParams());\n        if (!exists(params.value)) {\n            this.setToDoNothing();\n            return;\n        }\n        this.state = TooltipStates.SHOWING;\n        this.tooltipInstanceCount++;\n        // we pass in tooltipInstanceCount so the callback knows what the count was when\n        // we requested the tooltip, so if another tooltip was requested in the mean time\n        // we disregard it\n        var callback = this.newTooltipComponentCallback.bind(this, this.tooltipInstanceCount);\n        var userDetails = this.userComponentFactory.getTooltipCompDetails(params);\n        userDetails.newAgStackInstance().then(callback);\n    };\n    CustomTooltipFeature.prototype.newTooltipComponentCallback = function (tooltipInstanceCopy, tooltipComp) {\n        var compNoLongerNeeded = this.state !== TooltipStates.SHOWING || this.tooltipInstanceCount !== tooltipInstanceCopy;\n        if (compNoLongerNeeded) {\n            this.getContext().destroyBean(tooltipComp);\n            return;\n        }\n        var eGui = tooltipComp.getGui();\n        this.tooltipComp = tooltipComp;\n        if (!eGui.classList.contains('ag-tooltip')) {\n            eGui.classList.add('ag-tooltip-custom');\n        }\n        var translate = this.localeService.getLocaleTextFunc();\n        var addPopupRes = this.popupService.addPopup({\n            eChild: eGui,\n            ariaLabel: translate('ariaLabelTooltip', 'Tooltip')\n        });\n        if (addPopupRes) {\n            this.tooltipPopupDestroyFunc = addPopupRes.hideFunc;\n        }\n        // this.tooltipPopupDestroyFunc = this.popupService.addPopup(false, eGui, false);\n        this.positionTooltipUnderLastMouseEvent();\n        this.hideTooltipTimeoutId = window.setTimeout(this.hideTooltip.bind(this), this.tooltipHideDelay);\n    };\n    CustomTooltipFeature.prototype.positionTooltipUnderLastMouseEvent = function () {\n        this.popupService.positionPopupUnderMouseEvent({\n            type: 'tooltip',\n            mouseEvent: this.lastMouseEvent,\n            ePopup: this.tooltipComp.getGui(),\n            nudgeY: 18,\n            skipObserver: this.tooltipMouseTrack\n        });\n    };\n    CustomTooltipFeature.prototype.clearTimeouts = function () {\n        if (this.showTooltipTimeoutId) {\n            window.clearTimeout(this.showTooltipTimeoutId);\n            this.showTooltipTimeoutId = undefined;\n        }\n        if (this.hideTooltipTimeoutId) {\n            window.clearTimeout(this.hideTooltipTimeoutId);\n            this.hideTooltipTimeoutId = undefined;\n        }\n    };\n    __decorate$2n([\n        Autowired('popupService')\n    ], CustomTooltipFeature.prototype, \"popupService\", void 0);\n    __decorate$2n([\n        Autowired('userComponentFactory')\n    ], CustomTooltipFeature.prototype, \"userComponentFactory\", void 0);\n    __decorate$2n([\n        PostConstruct\n    ], CustomTooltipFeature.prototype, \"postConstruct\", null);\n    return CustomTooltipFeature;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar CssClassManager = /** @class */ (function () {\n    function CssClassManager(getGui) {\n        // to minimise DOM hits, we only apply CSS classes if they have changed. as adding a CSS class that is already\n        // there, or removing one that wasn't present, all takes CPU.\n        this.cssClassStates = {};\n        this.getGui = getGui;\n    }\n    CssClassManager.prototype.addCssClass = function (className) {\n        var _this = this;\n        var list = (className || '').split(' ');\n        if (list.length > 1) {\n            list.forEach(function (cls) { return _this.addCssClass(cls); });\n            return;\n        }\n        var updateNeeded = this.cssClassStates[className] !== true;\n        if (updateNeeded && className.length) {\n            var eGui = this.getGui();\n            if (eGui) {\n                eGui.classList.add(className);\n            }\n            this.cssClassStates[className] = true;\n        }\n    };\n    CssClassManager.prototype.removeCssClass = function (className) {\n        var _this = this;\n        var list = (className || '').split(' ');\n        if (list.length > 1) {\n            list.forEach(function (cls) { return _this.removeCssClass(cls); });\n            return;\n        }\n        var updateNeeded = this.cssClassStates[className] !== false;\n        if (updateNeeded && className.length) {\n            var eGui = this.getGui();\n            if (eGui) {\n                eGui.classList.remove(className);\n            }\n            this.cssClassStates[className] = false;\n        }\n    };\n    CssClassManager.prototype.containsCssClass = function (className) {\n        var eGui = this.getGui();\n        if (!eGui) {\n            return false;\n        }\n        return eGui.classList.contains(className);\n    };\n    CssClassManager.prototype.addOrRemoveCssClass = function (className, addOrRemove) {\n        var _this = this;\n        if (!className) {\n            return;\n        }\n        // we check for spaces before doing the split, as doing the split\n        // created a performance problem (on windows only, see AG-6765)\n        if (className.indexOf(' ') >= 0) {\n            var list = (className || '').split(' ');\n            if (list.length > 1) {\n                list.forEach(function (cls) { return _this.addOrRemoveCssClass(cls, addOrRemove); });\n                return;\n            }\n        }\n        var updateNeeded = this.cssClassStates[className] !== addOrRemove;\n        if (updateNeeded && className.length) {\n            var eGui = this.getGui();\n            if (eGui) {\n                eGui.classList.toggle(className, addOrRemove);\n            }\n            this.cssClassStates[className] = addOrRemove;\n        }\n    };\n    return CssClassManager;\n}());\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$2L = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$2m = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar compIdSequence = new NumberSequence();\nvar Component = /** @class */ (function (_super) {\n    __extends$2L(Component, _super);\n    function Component(template) {\n        var _this = _super.call(this) || this;\n        // if false, then CSS class \"ag-hidden\" is applied, which sets \"display: none\"\n        _this.displayed = true;\n        // if false, then CSS class \"ag-invisible\" is applied, which sets \"visibility: hidden\"\n        _this.visible = true;\n        // unique id for this row component. this is used for getting a reference to the HTML dom.\n        // we cannot use the RowNode id as this is not unique (due to animation, old rows can be lying\n        // around as we create a new rowComp instance for the same row node).\n        _this.compId = compIdSequence.next();\n        _this.cssClassManager = new CssClassManager(function () { return _this.eGui; });\n        if (template) {\n            _this.setTemplate(template);\n        }\n        return _this;\n    }\n    Component.prototype.preConstructOnComponent = function () {\n        this.usingBrowserTooltips = this.gridOptionsService.is('enableBrowserTooltips');\n    };\n    Component.prototype.getCompId = function () {\n        return this.compId;\n    };\n    Component.prototype.getTooltipParams = function () {\n        return {\n            value: this.tooltipText,\n            location: 'UNKNOWN'\n        };\n    };\n    Component.prototype.setTooltip = function (newTooltipText) {\n        var _this = this;\n        var removeTooltip = function () {\n            if (_this.usingBrowserTooltips) {\n                _this.getGui().removeAttribute('title');\n            }\n            else {\n                _this.tooltipFeature = _this.destroyBean(_this.tooltipFeature);\n            }\n        };\n        var addTooltip = function () {\n            if (_this.usingBrowserTooltips) {\n                _this.getGui().setAttribute('title', _this.tooltipText);\n            }\n            else {\n                _this.tooltipFeature = _this.createBean(new CustomTooltipFeature(_this));\n            }\n        };\n        if (this.tooltipText != newTooltipText) {\n            if (this.tooltipText) {\n                removeTooltip();\n            }\n            if (newTooltipText != null) {\n                this.tooltipText = newTooltipText;\n                if (this.tooltipText) {\n                    addTooltip();\n                }\n            }\n        }\n    };\n    // for registered components only, eg creates AgCheckbox instance from ag-checkbox HTML tag\n    Component.prototype.createChildComponentsFromTags = function (parentNode, paramsMap) {\n        var _this = this;\n        // we MUST take a copy of the list first, as the 'swapComponentForNode' adds comments into the DOM\n        // which messes up the traversal order of the children.\n        var childNodeList = copyNodeList(parentNode.childNodes);\n        childNodeList.forEach(function (childNode) {\n            if (!(childNode instanceof HTMLElement)) {\n                return;\n            }\n            var childComp = _this.createComponentFromElement(childNode, function (childComp) {\n                // copy over all attributes, including css classes, so any attributes user put on the tag\n                // wll be carried across\n                var childGui = childComp.getGui();\n                if (childGui) {\n                    _this.copyAttributesFromNode(childNode, childComp.getGui());\n                }\n            }, paramsMap);\n            if (childComp) {\n                if (childComp.addItems && childNode.children.length) {\n                    _this.createChildComponentsFromTags(childNode, paramsMap);\n                    // converting from HTMLCollection to Array\n                    var items = Array.prototype.slice.call(childNode.children);\n                    childComp.addItems(items);\n                }\n                // replace the tag (eg ag-checkbox) with the proper HTMLElement (eg 'div') in the dom\n                _this.swapComponentForNode(childComp, parentNode, childNode);\n            }\n            else if (childNode.childNodes) {\n                _this.createChildComponentsFromTags(childNode, paramsMap);\n            }\n        });\n    };\n    Component.prototype.createComponentFromElement = function (element, afterPreCreateCallback, paramsMap) {\n        var key = element.nodeName;\n        var componentParams = paramsMap ? paramsMap[element.getAttribute('ref')] : undefined;\n        var ComponentClass = this.agStackComponentsRegistry.getComponentClass(key);\n        if (ComponentClass) {\n            Component.elementGettingCreated = element;\n            var newComponent = new ComponentClass(componentParams);\n            newComponent.setParentComponent(this);\n            this.createBean(newComponent, null, afterPreCreateCallback);\n            return newComponent;\n        }\n        return null;\n    };\n    Component.prototype.copyAttributesFromNode = function (source, dest) {\n        iterateNamedNodeMap(source.attributes, function (name, value) { return dest.setAttribute(name, value); });\n    };\n    Component.prototype.swapComponentForNode = function (newComponent, parentNode, childNode) {\n        var eComponent = newComponent.getGui();\n        parentNode.replaceChild(eComponent, childNode);\n        parentNode.insertBefore(document.createComment(childNode.nodeName), eComponent);\n        this.addDestroyFunc(this.destroyBean.bind(this, newComponent));\n        this.swapInComponentForQuerySelectors(newComponent, childNode);\n    };\n    Component.prototype.swapInComponentForQuerySelectors = function (newComponent, childNode) {\n        var thisNoType = this;\n        this.iterateOverQuerySelectors(function (querySelector) {\n            if (thisNoType[querySelector.attributeName] === childNode) {\n                thisNoType[querySelector.attributeName] = newComponent;\n            }\n        });\n    };\n    Component.prototype.iterateOverQuerySelectors = function (action) {\n        var thisPrototype = Object.getPrototypeOf(this);\n        while (thisPrototype != null) {\n            var metaData = thisPrototype.__agComponentMetaData;\n            var currentProtoName = getFunctionName(thisPrototype.constructor);\n            if (metaData && metaData[currentProtoName] && metaData[currentProtoName].querySelectors) {\n                metaData[currentProtoName].querySelectors.forEach(function (querySelector) { return action(querySelector); });\n            }\n            thisPrototype = Object.getPrototypeOf(thisPrototype);\n        }\n    };\n    Component.prototype.setTemplate = function (template, paramsMap) {\n        var eGui = loadTemplate(template);\n        this.setTemplateFromElement(eGui, paramsMap);\n    };\n    Component.prototype.setTemplateFromElement = function (element, paramsMap) {\n        this.eGui = element;\n        this.eGui.__agComponent = this;\n        this.wireQuerySelectors();\n        // context will not be available when user sets template in constructor\n        if (!!this.getContext()) {\n            this.createChildComponentsFromTags(this.getGui(), paramsMap);\n        }\n    };\n    Component.prototype.createChildComponentsPreConstruct = function () {\n        // ui exists if user sets template in constructor. when this happens, we have to wait for the context\n        // to be autoWired first before we can create child components.\n        if (!!this.getGui()) {\n            this.createChildComponentsFromTags(this.getGui());\n        }\n    };\n    Component.prototype.wireQuerySelectors = function () {\n        var _this = this;\n        if (!this.eGui) {\n            return;\n        }\n        var thisNoType = this;\n        this.iterateOverQuerySelectors(function (querySelector) {\n            var setResult = function (result) { return thisNoType[querySelector.attributeName] = result; };\n            // if it's a ref selector, and match is on top level component, we return\n            // the element. otherwise no way of components putting ref=xxx on the top\n            // level element as querySelector only looks at children.\n            var topLevelRefMatch = querySelector.refSelector\n                && _this.eGui.getAttribute('ref') === querySelector.refSelector;\n            if (topLevelRefMatch) {\n                setResult(_this.eGui);\n            }\n            else {\n                // otherwise use querySelector, which looks at children\n                var resultOfQuery = _this.eGui.querySelector(querySelector.querySelector);\n                if (resultOfQuery) {\n                    setResult(resultOfQuery.__agComponent || resultOfQuery);\n                }\n            }\n        });\n    };\n    Component.prototype.getGui = function () {\n        return this.eGui;\n    };\n    Component.prototype.getFocusableElement = function () {\n        return this.eGui;\n    };\n    Component.prototype.setParentComponent = function (component) {\n        this.parentComponent = component;\n    };\n    Component.prototype.getParentComponent = function () {\n        return this.parentComponent;\n    };\n    // this method is for older code, that wants to provide the gui element,\n    // it is not intended for this to be in ag-Stack\n    Component.prototype.setGui = function (eGui) {\n        this.eGui = eGui;\n    };\n    Component.prototype.queryForHtmlElement = function (cssSelector) {\n        return this.eGui.querySelector(cssSelector);\n    };\n    Component.prototype.queryForHtmlInputElement = function (cssSelector) {\n        return this.eGui.querySelector(cssSelector);\n    };\n    Component.prototype.appendChild = function (newChild, container) {\n        if (newChild == null) {\n            return;\n        }\n        if (!container) {\n            container = this.eGui;\n        }\n        if (isNodeOrElement(newChild)) {\n            container.appendChild(newChild);\n        }\n        else {\n            var childComponent = newChild;\n            container.appendChild(childComponent.getGui());\n        }\n    };\n    Component.prototype.isDisplayed = function () {\n        return this.displayed;\n    };\n    Component.prototype.setVisible = function (visible, options) {\n        if (options === void 0) { options = {}; }\n        if (visible !== this.visible) {\n            this.visible = visible;\n            var skipAriaHidden = options.skipAriaHidden;\n            setVisible(this.eGui, visible, { skipAriaHidden: skipAriaHidden });\n        }\n    };\n    Component.prototype.setDisplayed = function (displayed, options) {\n        if (options === void 0) { options = {}; }\n        if (displayed !== this.displayed) {\n            this.displayed = displayed;\n            var skipAriaHidden = options.skipAriaHidden;\n            setDisplayed(this.eGui, displayed, { skipAriaHidden: skipAriaHidden });\n            var event_1 = {\n                type: Component.EVENT_DISPLAYED_CHANGED,\n                visible: this.displayed\n            };\n            this.dispatchEvent(event_1);\n        }\n    };\n    Component.prototype.destroy = function () {\n        if (this.tooltipFeature) {\n            this.tooltipFeature = this.destroyBean(this.tooltipFeature);\n        }\n        if (this.parentComponent) {\n            this.parentComponent = undefined;\n        }\n        var eGui = this.eGui;\n        if (eGui && eGui.__agComponent) {\n            eGui.__agComponent = undefined;\n        }\n        _super.prototype.destroy.call(this);\n    };\n    Component.prototype.addGuiEventListener = function (event, listener, options) {\n        var _this = this;\n        this.eGui.addEventListener(event, listener, options);\n        this.addDestroyFunc(function () { return _this.eGui.removeEventListener(event, listener); });\n    };\n    Component.prototype.addCssClass = function (className) {\n        this.cssClassManager.addCssClass(className);\n    };\n    Component.prototype.removeCssClass = function (className) {\n        this.cssClassManager.removeCssClass(className);\n    };\n    Component.prototype.containsCssClass = function (className) {\n        return this.cssClassManager.containsCssClass(className);\n    };\n    Component.prototype.addOrRemoveCssClass = function (className, addOrRemove) {\n        this.cssClassManager.addOrRemoveCssClass(className, addOrRemove);\n    };\n    Component.prototype.getAttribute = function (key) {\n        var eGui = this.eGui;\n        return eGui ? eGui.getAttribute(key) : null;\n    };\n    Component.prototype.getRefElement = function (refName) {\n        return this.queryForHtmlElement(\"[ref=\\\"\" + refName + \"\\\"]\");\n    };\n    Component.EVENT_DISPLAYED_CHANGED = 'displayedChanged';\n    __decorate$2m([\n        Autowired('agStackComponentsRegistry')\n    ], Component.prototype, \"agStackComponentsRegistry\", void 0);\n    __decorate$2m([\n        PreConstruct\n    ], Component.prototype, \"preConstructOnComponent\", null);\n    __decorate$2m([\n        PreConstruct\n    ], Component.prototype, \"createChildComponentsPreConstruct\", null);\n    return Component;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nfunction QuerySelector(selector) {\n    return querySelectorFunc.bind(this, selector, undefined);\n}\nfunction RefSelector(ref) {\n    return querySelectorFunc.bind(this, \"[ref=\" + ref + \"]\", ref);\n}\nfunction querySelectorFunc(selector, refSelector, classPrototype, methodOrAttributeName, index) {\n    if (selector === null) {\n        console.error('AG Grid: QuerySelector selector should not be null');\n        return;\n    }\n    if (typeof index === 'number') {\n        console.error('AG Grid: QuerySelector should be on an attribute');\n        return;\n    }\n    addToObjectProps(classPrototype, 'querySelectors', {\n        attributeName: methodOrAttributeName,\n        querySelector: selector,\n        refSelector: refSelector\n    });\n}\n// // think we should take this out, put property bindings on the\n// export function Method(eventName?: string): Function {\n//     return methodFunc.bind(this, eventName);\n// }\n//\n// function methodFunc(alias: string, target: Object, methodName: string) {\n//     if (alias === null) {\n//         console.error(\"AG Grid: EventListener eventName should not be null\");\n//         return;\n//     }\n//\n//     addToObjectProps(target, 'methods', {\n//         methodName: methodName,\n//         alias: alias\n//     });\n// }\nfunction addToObjectProps(target, key, value) {\n    // it's an attribute on the class\n    var props = getOrCreateProps(target, getFunctionName(target.constructor));\n    if (!props[key]) {\n        props[key] = [];\n    }\n    props[key].push(value);\n}\nfunction getOrCreateProps(target, instanceName) {\n    if (!target.__agComponentMetaData) {\n        target.__agComponentMetaData = {};\n    }\n    if (!target.__agComponentMetaData[instanceName]) {\n        target.__agComponentMetaData[instanceName] = {};\n    }\n    return target.__agComponentMetaData[instanceName];\n}\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$2K = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$2l = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n// optional floating filter for user provided filters - instead of providing a floating filter,\n// they can provide a getModelAsString() method on the filter instead. this class just displays\n// the string returned from getModelAsString()\nvar ReadOnlyFloatingFilter = /** @class */ (function (_super) {\n    __extends$2K(ReadOnlyFloatingFilter, _super);\n    function ReadOnlyFloatingFilter() {\n        return _super.call(this, /* html */ \"\\n            <div class=\\\"ag-floating-filter-input\\\" role=\\\"presentation\\\">\\n                <ag-input-text-field ref=\\\"eFloatingFilterText\\\"></ag-input-text-field>\\n            </div>\") || this;\n    }\n    // this is a user component, and IComponent has \"public destroy()\" as part of the interface.\n    // so we need to override destroy() just to make the method public.\n    ReadOnlyFloatingFilter.prototype.destroy = function () {\n        _super.prototype.destroy.call(this);\n    };\n    ReadOnlyFloatingFilter.prototype.init = function (params) {\n        this.params = params;\n        var displayName = this.columnModel.getDisplayNameForColumn(params.column, 'header', true);\n        var translate = this.localeService.getLocaleTextFunc();\n        this.eFloatingFilterText\n            .setDisabled(true)\n            .setInputAriaLabel(displayName + \" \" + translate('ariaFilterInput', 'Filter Input'));\n    };\n    ReadOnlyFloatingFilter.prototype.onParentModelChanged = function (parentModel) {\n        var _this = this;\n        if (!parentModel) {\n            this.eFloatingFilterText.setValue('');\n            return;\n        }\n        this.params.parentFilterInstance(function (filterInstance) {\n            // it would be nice to check if getModelAsString was present before creating this component,\n            // however that is not possible, as React Hooks and VueJS don't attached the methods to the Filter until\n            // AFTER the filter is created, not allowing inspection before this (we create floating filters as columns\n            // are drawn, but the parent filters are only created when needed).\n            if (filterInstance.getModelAsString) {\n                var modelAsString = filterInstance.getModelAsString(parentModel);\n                _this.eFloatingFilterText.setValue(modelAsString);\n            }\n        });\n    };\n    __decorate$2l([\n        RefSelector('eFloatingFilterText')\n    ], ReadOnlyFloatingFilter.prototype, \"eFloatingFilterText\", void 0);\n    __decorate$2l([\n        Autowired('columnModel')\n    ], ReadOnlyFloatingFilter.prototype, \"columnModel\", void 0);\n    return ReadOnlyFloatingFilter;\n}(Component));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\n/** Provides sync access to async component. Date component can be lazy created - this class encapsulates\n * this by keeping value locally until DateComp has loaded, then passing DateComp the value. */\nvar DateCompWrapper = /** @class */ (function () {\n    function DateCompWrapper(context, userComponentFactory, dateComponentParams, eParent) {\n        var _this = this;\n        this.alive = true;\n        this.context = context;\n        this.eParent = eParent;\n        var compDetails = userComponentFactory.getDateCompDetails(dateComponentParams);\n        var promise = compDetails.newAgStackInstance();\n        promise.then(function (dateComp) {\n            // because async, check the filter still exists after component comes back\n            if (!_this.alive) {\n                context.destroyBean(dateComp);\n                return;\n            }\n            _this.dateComp = dateComp;\n            if (!dateComp) {\n                return;\n            }\n            eParent.appendChild(dateComp.getGui());\n            if (dateComp.afterGuiAttached) {\n                dateComp.afterGuiAttached();\n            }\n            if (_this.tempValue) {\n                dateComp.setDate(_this.tempValue);\n            }\n            if (_this.disabled != null) {\n                _this.setDateCompDisabled(_this.disabled);\n            }\n        });\n    }\n    DateCompWrapper.prototype.destroy = function () {\n        this.alive = false;\n        this.dateComp = this.context.destroyBean(this.dateComp);\n    };\n    DateCompWrapper.prototype.getDate = function () {\n        return this.dateComp ? this.dateComp.getDate() : this.tempValue;\n    };\n    DateCompWrapper.prototype.setDate = function (value) {\n        if (this.dateComp) {\n            this.dateComp.setDate(value);\n        }\n        else {\n            this.tempValue = value;\n        }\n    };\n    DateCompWrapper.prototype.setDisabled = function (disabled) {\n        if (this.dateComp) {\n            this.setDateCompDisabled(disabled);\n        }\n        else {\n            this.disabled = disabled;\n        }\n    };\n    DateCompWrapper.prototype.setDisplayed = function (displayed) {\n        setDisplayed(this.eParent, displayed);\n    };\n    DateCompWrapper.prototype.setInputPlaceholder = function (placeholder) {\n        if (this.dateComp && this.dateComp.setInputPlaceholder) {\n            this.dateComp.setInputPlaceholder(placeholder);\n        }\n    };\n    DateCompWrapper.prototype.setInputAriaLabel = function (label) {\n        if (this.dateComp && this.dateComp.setInputAriaLabel) {\n            this.dateComp.setInputAriaLabel(label);\n        }\n    };\n    DateCompWrapper.prototype.afterGuiAttached = function (params) {\n        if (this.dateComp && typeof this.dateComp.afterGuiAttached === 'function') {\n            this.dateComp.afterGuiAttached(params);\n        }\n    };\n    DateCompWrapper.prototype.setDateCompDisabled = function (disabled) {\n        if (this.dateComp == null) {\n            return;\n        }\n        if (this.dateComp.setDisabled == null) {\n            return;\n        }\n        this.dateComp.setDisabled(disabled);\n    };\n    return DateCompWrapper;\n}());\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __assign$i = (undefined && undefined.__assign) || function () {\n    __assign$i = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign$i.apply(this, arguments);\n};\n/* Common logic for options, used by both filters and floating filters. */\nvar OptionsFactory = /** @class */ (function () {\n    function OptionsFactory() {\n        this.customFilterOptions = {};\n    }\n    OptionsFactory.prototype.init = function (params, defaultOptions) {\n        this.filterOptions = params.filterOptions || defaultOptions;\n        this.mapCustomOptions();\n        this.selectDefaultItem(params);\n        this.checkForDeprecatedParams();\n    };\n    OptionsFactory.prototype.checkForDeprecatedParams = function () {\n        if (this.filterOptions.some(function (opt) { return typeof opt != 'string' && opt.test != null; })) {\n            console.warn(\"AG Grid: [IFilterOptionDef] since v26.2.0, test() has been replaced with predicate().\");\n        }\n        if (this.filterOptions.some(function (opt) { return typeof opt != 'string' && opt.hideFilterInput != null; })) {\n            console.warn(\"AG Grid: [IFilterOptionDef] since v26.2.0, useOfHideFilterInput has been replaced with numberOfInputs.\");\n        }\n    };\n    OptionsFactory.prototype.getFilterOptions = function () {\n        return this.filterOptions;\n    };\n    OptionsFactory.prototype.mapCustomOptions = function () {\n        var _this = this;\n        if (!this.filterOptions) {\n            return;\n        }\n        this.filterOptions.forEach(function (filterOption) {\n            if (typeof filterOption === 'string') {\n                return;\n            }\n            var requiredProperties = [['displayKey'], ['displayName'], ['predicate', 'test']];\n            var propertyCheck = function (keys) {\n                if (!keys.some(function (key) { return filterOption[key] != null; })) {\n                    console.warn(\"AG Grid: ignoring FilterOptionDef as it doesn't contain one of '\" + keys + \"'\");\n                    return false;\n                }\n                return true;\n            };\n            if (!requiredProperties.every(propertyCheck)) {\n                _this.filterOptions = _this.filterOptions.filter(function (v) { return v === filterOption; }) || [];\n                return;\n            }\n            var test = filterOption.test;\n            var mutatedFilterOptions = __assign$i({}, filterOption);\n            if (test != null && filterOption.predicate == null) {\n                mutatedFilterOptions.predicate = function (v, cv) { return test(v[0], cv); };\n                delete mutatedFilterOptions.test;\n            }\n            if (mutatedFilterOptions.hideFilterInput && mutatedFilterOptions.numberOfInputs == null) {\n                mutatedFilterOptions.numberOfInputs = 0;\n                delete mutatedFilterOptions.hideFilterInput;\n            }\n            _this.customFilterOptions[filterOption.displayKey] = mutatedFilterOptions;\n        });\n    };\n    OptionsFactory.prototype.selectDefaultItem = function (params) {\n        if (params.defaultOption) {\n            this.defaultOption = params.defaultOption;\n        }\n        else if (this.filterOptions.length >= 1) {\n            var firstFilterOption = this.filterOptions[0];\n            if (typeof firstFilterOption === 'string') {\n                this.defaultOption = firstFilterOption;\n            }\n            else if (firstFilterOption.displayKey) {\n                this.defaultOption = firstFilterOption.displayKey;\n            }\n            else {\n                console.warn(\"AG Grid: invalid FilterOptionDef supplied as it doesn't contain a 'displayKey'\");\n            }\n        }\n        else {\n            console.warn('AG Grid: no filter options for filter');\n        }\n    };\n    OptionsFactory.prototype.getDefaultOption = function () {\n        return this.defaultOption;\n    };\n    OptionsFactory.prototype.getCustomOption = function (name) {\n        return this.customFilterOptions[name];\n    };\n    return OptionsFactory;\n}());\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar DEFAULT_FILTER_LOCALE_TEXT = {\n    applyFilter: 'Apply',\n    clearFilter: 'Clear',\n    resetFilter: 'Reset',\n    cancelFilter: 'Cancel',\n    textFilter: 'Text Filter',\n    numberFilter: 'Number Filter',\n    dateFilter: 'Date Filter',\n    setFilter: 'Set Filter',\n    filterOoo: 'Filter...',\n    empty: 'Choose One',\n    equals: 'Equals',\n    notEqual: 'Not equal',\n    lessThan: 'Less than',\n    greaterThan: 'Greater than',\n    inRange: 'In range',\n    inRangeStart: 'From',\n    inRangeEnd: 'To',\n    lessThanOrEqual: 'Less than or equals',\n    greaterThanOrEqual: 'Greater than or equals',\n    contains: 'Contains',\n    notContains: 'Not contains',\n    startsWith: 'Starts with',\n    endsWith: 'Ends with',\n    blank: 'Blank',\n    notBlank: 'Not blank',\n    andCondition: 'AND',\n    orCondition: 'OR',\n    dateFormatOoo: 'yyyy-mm-dd',\n};\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$2J = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __assign$h = (undefined && undefined.__assign) || function () {\n    __assign$h = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign$h.apply(this, arguments);\n};\nvar __decorate$2k = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar ManagedFocusFeature = /** @class */ (function (_super) {\n    __extends$2J(ManagedFocusFeature, _super);\n    function ManagedFocusFeature(eFocusableElement, callbacks) {\n        if (callbacks === void 0) { callbacks = {}; }\n        var _this = _super.call(this) || this;\n        _this.eFocusableElement = eFocusableElement;\n        _this.callbacks = callbacks;\n        _this.callbacks = __assign$h({ shouldStopEventPropagation: function () { return false; }, onTabKeyDown: function (e) {\n                if (e.defaultPrevented) {\n                    return;\n                }\n                var nextRoot = _this.focusService.findNextFocusableElement(_this.eFocusableElement, false, e.shiftKey);\n                if (!nextRoot) {\n                    return;\n                }\n                nextRoot.focus();\n                e.preventDefault();\n            } }, callbacks);\n        return _this;\n    }\n    ManagedFocusFeature.prototype.postConstruct = function () {\n        this.eFocusableElement.classList.add(ManagedFocusFeature.FOCUS_MANAGED_CLASS);\n        this.addKeyDownListeners(this.eFocusableElement);\n        if (this.callbacks.onFocusIn) {\n            this.addManagedListener(this.eFocusableElement, 'focusin', this.callbacks.onFocusIn);\n        }\n        if (this.callbacks.onFocusOut) {\n            this.addManagedListener(this.eFocusableElement, 'focusout', this.callbacks.onFocusOut);\n        }\n    };\n    ManagedFocusFeature.prototype.addKeyDownListeners = function (eGui) {\n        var _this = this;\n        this.addManagedListener(eGui, 'keydown', function (e) {\n            if (e.defaultPrevented || isStopPropagationForAgGrid(e)) {\n                return;\n            }\n            if (_this.callbacks.shouldStopEventPropagation(e)) {\n                stopPropagationForAgGrid(e);\n                return;\n            }\n            if (e.key === KeyCode.TAB) {\n                _this.callbacks.onTabKeyDown(e);\n            }\n            else if (_this.callbacks.handleKeyDown) {\n                _this.callbacks.handleKeyDown(e);\n            }\n        });\n    };\n    ManagedFocusFeature.FOCUS_MANAGED_CLASS = 'ag-focus-managed';\n    __decorate$2k([\n        Autowired('focusService')\n    ], ManagedFocusFeature.prototype, \"focusService\", void 0);\n    __decorate$2k([\n        PostConstruct\n    ], ManagedFocusFeature.prototype, \"postConstruct\", null);\n    return ManagedFocusFeature;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$2I = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$2j = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar RESIZE_CONTAINER_STYLE = 'ag-resizer-wrapper';\nvar RESIZE_TEMPLATE = /* html */ \"<div class=\\\"\" + RESIZE_CONTAINER_STYLE + \"\\\">\\n        <div ref=\\\"eTopLeftResizer\\\" class=\\\"ag-resizer ag-resizer-topLeft\\\"></div>\\n        <div ref=\\\"eTopResizer\\\" class=\\\"ag-resizer ag-resizer-top\\\"></div>\\n        <div ref=\\\"eTopRightResizer\\\" class=\\\"ag-resizer ag-resizer-topRight\\\"></div>\\n        <div ref=\\\"eRightResizer\\\" class=\\\"ag-resizer ag-resizer-right\\\"></div>\\n        <div ref=\\\"eBottomRightResizer\\\" class=\\\"ag-resizer ag-resizer-bottomRight\\\"></div>\\n        <div ref=\\\"eBottomResizer\\\" class=\\\"ag-resizer ag-resizer-bottom\\\"></div>\\n        <div ref=\\\"eBottomLeftResizer\\\" class=\\\"ag-resizer ag-resizer-bottomLeft\\\"></div>\\n        <div ref=\\\"eLeftResizer\\\" class=\\\"ag-resizer ag-resizer-left\\\"></div>\\n    </div>\";\nvar PositionableFeature = /** @class */ (function (_super) {\n    __extends$2I(PositionableFeature, _super);\n    function PositionableFeature(element, config) {\n        var _this = _super.call(this) || this;\n        _this.element = element;\n        _this.dragStartPosition = {\n            x: 0,\n            y: 0\n        };\n        _this.position = {\n            x: 0,\n            y: 0\n        };\n        _this.lastSize = {\n            width: -1,\n            height: -1\n        };\n        _this.positioned = false;\n        _this.resizersAdded = false;\n        _this.resizeListeners = [];\n        _this.boundaryEl = null;\n        _this.isResizing = false;\n        _this.isMoving = false;\n        _this.resizable = {};\n        _this.movable = false;\n        _this.currentResizer = null;\n        _this.config = Object.assign({}, { popup: false }, config);\n        return _this;\n    }\n    PositionableFeature.prototype.center = function () {\n        var _a = this.offsetParent, clientHeight = _a.clientHeight, clientWidth = _a.clientWidth;\n        var x = (clientWidth / 2) - (this.getWidth() / 2);\n        var y = (clientHeight / 2) - (this.getHeight() / 2);\n        this.offsetElement(x, y);\n    };\n    PositionableFeature.prototype.initialisePosition = function () {\n        if (this.positioned) {\n            return;\n        }\n        var _a = this.config, centered = _a.centered, forcePopupParentAsOffsetParent = _a.forcePopupParentAsOffsetParent, minWidth = _a.minWidth, width = _a.width, minHeight = _a.minHeight, height = _a.height, x = _a.x, y = _a.y;\n        if (!this.offsetParent) {\n            this.setOffsetParent();\n        }\n        var computedMinHeight = 0;\n        var computedMinWidth = 0;\n        // here we don't use the main offset parent but the element's offsetParent\n        // in order to calculated the minWidth and minHeight correctly\n        var isVisible = !!this.element.offsetParent;\n        if (isVisible) {\n            var boundaryEl = this.findBoundaryElement();\n            var offsetParentComputedStyles = window.getComputedStyle(boundaryEl);\n            if (offsetParentComputedStyles.minWidth != null) {\n                var paddingWidth = boundaryEl.offsetWidth - this.element.offsetWidth;\n                computedMinWidth = parseInt(offsetParentComputedStyles.minWidth, 10) - paddingWidth;\n            }\n            if (offsetParentComputedStyles.minHeight != null) {\n                var paddingHeight = boundaryEl.offsetHeight - this.element.offsetHeight;\n                computedMinHeight = parseInt(offsetParentComputedStyles.minHeight, 10) - paddingHeight;\n            }\n        }\n        this.minHeight = minHeight || computedMinHeight;\n        this.minWidth = minWidth || computedMinWidth;\n        if (width) {\n            this.setWidth(width);\n        }\n        if (height) {\n            this.setHeight(height);\n        }\n        if (!width || !height) {\n            this.refreshSize();\n        }\n        if (centered) {\n            this.center();\n        }\n        else if (x || y) {\n            this.offsetElement(x, y);\n        }\n        else if (isVisible && forcePopupParentAsOffsetParent && this.boundaryEl) {\n            var top_1 = parseFloat(this.boundaryEl.style.top);\n            var left = parseFloat(this.boundaryEl.style.left);\n            this.offsetElement(isNaN(left) ? 0 : left, isNaN(top_1) ? 0 : top_1);\n        }\n        this.positioned = !!this.offsetParent;\n    };\n    PositionableFeature.prototype.isPositioned = function () {\n        return this.positioned;\n    };\n    PositionableFeature.prototype.getPosition = function () {\n        return this.position;\n    };\n    PositionableFeature.prototype.setMovable = function (movable, moveElement) {\n        if (!this.config.popup || movable === this.movable) {\n            return;\n        }\n        this.movable = movable;\n        var params = this.moveElementDragListener || {\n            eElement: moveElement,\n            onDragStart: this.onMoveStart.bind(this),\n            onDragging: this.onMove.bind(this),\n            onDragStop: this.onMoveEnd.bind(this)\n        };\n        if (movable) {\n            this.dragService.addDragSource(params);\n            this.moveElementDragListener = params;\n        }\n        else {\n            this.dragService.removeDragSource(params);\n            this.moveElementDragListener = undefined;\n        }\n    };\n    PositionableFeature.prototype.setResizable = function (resizable) {\n        var _this = this;\n        this.clearResizeListeners();\n        if (resizable) {\n            this.addResizers();\n        }\n        else {\n            this.removeResizers();\n        }\n        if (typeof resizable === 'boolean') {\n            if (resizable === false) {\n                return;\n            }\n            resizable = {\n                topLeft: resizable,\n                top: resizable,\n                topRight: resizable,\n                right: resizable,\n                bottomRight: resizable,\n                bottom: resizable,\n                bottomLeft: resizable,\n                left: resizable\n            };\n        }\n        Object.keys(resizable).forEach(function (side) {\n            var resizableStructure = resizable;\n            var isSideResizable = !!resizableStructure[side];\n            var resizerEl = _this.getResizerElement(side);\n            var params = {\n                dragStartPixels: 0,\n                eElement: resizerEl,\n                onDragStart: function (e) { return _this.onResizeStart(e, side); },\n                onDragging: _this.onResize.bind(_this),\n                onDragStop: function (e) { return _this.onResizeEnd(e, side); },\n            };\n            if (isSideResizable || (!_this.isAlive() && !isSideResizable)) {\n                if (isSideResizable) {\n                    _this.dragService.addDragSource(params);\n                    _this.resizeListeners.push(params);\n                    resizerEl.style.pointerEvents = 'all';\n                }\n                else {\n                    resizerEl.style.pointerEvents = 'none';\n                }\n                _this.resizable[side] = isSideResizable;\n            }\n        });\n    };\n    PositionableFeature.prototype.removeSizeFromEl = function () {\n        this.element.style.removeProperty('height');\n        this.element.style.removeProperty('width');\n        this.element.style.removeProperty('flex');\n    };\n    PositionableFeature.prototype.restoreLastSize = function () {\n        this.element.style.flex = '0 0 auto';\n        var _a = this.lastSize, height = _a.height, width = _a.width;\n        if (width !== -1) {\n            this.element.style.width = width + \"px\";\n        }\n        if (height !== -1) {\n            this.element.style.height = height + \"px\";\n        }\n    };\n    PositionableFeature.prototype.getHeight = function () {\n        return this.element.offsetHeight;\n    };\n    PositionableFeature.prototype.setHeight = function (height) {\n        var popup = this.config.popup;\n        var eGui = this.element;\n        var isPercent = false;\n        if (typeof height === 'string' && height.indexOf('%') !== -1) {\n            setFixedHeight(eGui, height);\n            height = getAbsoluteHeight(eGui);\n            isPercent = true;\n        }\n        else if (this.positioned) {\n            height = Math.max(this.minHeight, height);\n            var availableHeight = this.getAvailableHeight();\n            if (availableHeight && height > availableHeight) {\n                height = availableHeight;\n            }\n        }\n        if (this.getHeight() === height) {\n            return;\n        }\n        if (!isPercent) {\n            if (popup) {\n                setFixedHeight(eGui, height);\n            }\n            else {\n                eGui.style.height = height + \"px\";\n                eGui.style.flex = '0 0 auto';\n                this.lastSize.height = typeof height === 'number' ? height : parseFloat(height);\n            }\n        }\n        else {\n            eGui.style.maxHeight = 'unset';\n            eGui.style.minHeight = 'unset';\n        }\n    };\n    PositionableFeature.prototype.getAvailableHeight = function () {\n        var _a = this.config, popup = _a.popup, forcePopupParentAsOffsetParent = _a.forcePopupParentAsOffsetParent;\n        if (!this.positioned) {\n            this.initialisePosition();\n        }\n        var clientHeight = this.offsetParent.clientHeight;\n        if (!clientHeight) {\n            return null;\n        }\n        var elRect = this.element.getBoundingClientRect();\n        var offsetParentRect = this.offsetParent.getBoundingClientRect();\n        var yPosition = popup ? this.position.y : elRect.top;\n        var parentTop = popup ? 0 : offsetParentRect.top;\n        // When `forcePopupParentAsOffsetParent`, there may be elements that appear after the resizable element, but aren't included in the height.\n        // Take these into account here\n        var additionalHeight = 0;\n        if (forcePopupParentAsOffsetParent) {\n            var parentEl = this.element.parentElement;\n            if (parentEl) {\n                var bottom = parentEl.getBoundingClientRect().bottom;\n                additionalHeight = bottom - elRect.bottom;\n            }\n        }\n        var availableHeight = clientHeight + parentTop - yPosition - additionalHeight;\n        return availableHeight;\n    };\n    PositionableFeature.prototype.getWidth = function () {\n        return this.element.offsetWidth;\n    };\n    PositionableFeature.prototype.setWidth = function (width) {\n        var eGui = this.element;\n        var popup = this.config.popup;\n        var isPercent = false;\n        if (typeof width === 'string' && width.indexOf('%') !== -1) {\n            setFixedWidth(eGui, width);\n            width = getAbsoluteWidth(eGui);\n            isPercent = true;\n        }\n        else if (this.positioned) {\n            width = Math.max(this.minWidth, width);\n            var clientWidth = this.offsetParent.clientWidth;\n            var xPosition = popup ? this.position.x : this.element.getBoundingClientRect().left;\n            if (clientWidth && (width + xPosition > clientWidth)) {\n                width = clientWidth - xPosition;\n            }\n        }\n        if (this.getWidth() === width) {\n            return;\n        }\n        if (!isPercent) {\n            if (this.config.popup) {\n                setFixedWidth(eGui, width);\n            }\n            else {\n                eGui.style.width = width + \"px\";\n                eGui.style.flex = ' unset';\n                this.lastSize.width = typeof width === 'number' ? width : parseFloat(width);\n            }\n        }\n        else {\n            eGui.style.maxWidth = 'unset';\n            eGui.style.minWidth = 'unset';\n        }\n    };\n    PositionableFeature.prototype.offsetElement = function (x, y) {\n        if (x === void 0) { x = 0; }\n        if (y === void 0) { y = 0; }\n        var ePopup = this.config.forcePopupParentAsOffsetParent ? this.boundaryEl : this.element;\n        this.popupService.positionPopup({\n            ePopup: ePopup,\n            keepWithinBounds: true,\n            skipObserver: this.movable || this.isResizable(),\n            updatePosition: function () { return ({ x: x, y: y }); }\n        });\n        this.setPosition(parseFloat(ePopup.style.left), parseFloat(ePopup.style.top));\n    };\n    PositionableFeature.prototype.constrainSizeToAvailableHeight = function (constrain) {\n        var _this = this;\n        if (!this.config.forcePopupParentAsOffsetParent) {\n            return;\n        }\n        var applyMaxHeightToElement = function () {\n            var availableHeight = _this.getAvailableHeight();\n            _this.element.style.setProperty('max-height', availableHeight + \"px\");\n        };\n        if (constrain) {\n            this.resizeObserverSubscriber = this.resizeObserverService.observeResize(this.popupService.getPopupParent(), applyMaxHeightToElement);\n        }\n        else {\n            this.element.style.removeProperty('max-height');\n            if (this.resizeObserverSubscriber) {\n                this.resizeObserverSubscriber();\n                this.resizeObserverSubscriber = undefined;\n            }\n        }\n    };\n    PositionableFeature.prototype.setPosition = function (x, y) {\n        this.position.x = x;\n        this.position.y = y;\n    };\n    PositionableFeature.prototype.updateDragStartPosition = function (x, y) {\n        this.dragStartPosition = { x: x, y: y };\n    };\n    PositionableFeature.prototype.calculateMouseMovement = function (params) {\n        var e = params.e, isLeft = params.isLeft, isTop = params.isTop, anywhereWithin = params.anywhereWithin, topBuffer = params.topBuffer;\n        var xDiff = e.clientX - this.dragStartPosition.x;\n        var yDiff = e.clientY - this.dragStartPosition.y;\n        var movementX = this.shouldSkipX(e, !!isLeft, !!anywhereWithin, xDiff) ? 0 : xDiff;\n        var movementY = this.shouldSkipY(e, !!isTop, topBuffer, yDiff) ? 0 : yDiff;\n        return { movementX: movementX, movementY: movementY };\n    };\n    PositionableFeature.prototype.shouldSkipX = function (e, isLeft, anywhereWithin, diff) {\n        var elRect = this.element.getBoundingClientRect();\n        var parentRect = this.offsetParent.getBoundingClientRect();\n        var boundaryElRect = this.boundaryEl.getBoundingClientRect();\n        var xPosition = this.config.popup ? this.position.x : elRect.left;\n        // skip if cursor is outside of popupParent horizontally\n        var skipX = ((xPosition <= 0 && parentRect.left >= e.clientX) ||\n            (parentRect.right <= e.clientX && parentRect.right <= boundaryElRect.right));\n        if (skipX) {\n            return true;\n        }\n        if (isLeft) {\n            skipX = (\n            // skip if we are moving to the left and the cursor\n            // is positioned to the right of the left side anchor\n            (diff < 0 && e.clientX > xPosition + parentRect.left) ||\n                // skip if we are moving to the right and the cursor\n                // is positioned to the left of the dialog\n                (diff > 0 && e.clientX < xPosition + parentRect.left));\n        }\n        else {\n            if (anywhereWithin) {\n                // if anywhereWithin is true, we allow to move\n                // as long as the cursor is within the dialog\n                skipX = ((diff < 0 && e.clientX > boundaryElRect.right) ||\n                    (diff > 0 && e.clientX < xPosition + parentRect.left));\n            }\n            else {\n                skipX = (\n                // if the movement is bound to the right side of the dialog\n                // we skip if we are moving to the left and the cursor\n                // is to the right of the dialog\n                (diff < 0 && e.clientX > boundaryElRect.right) ||\n                    // or skip if we are moving to the right and the cursor\n                    // is to the left of the right side anchor\n                    (diff > 0 && e.clientX < boundaryElRect.right));\n            }\n        }\n        return skipX;\n    };\n    PositionableFeature.prototype.shouldSkipY = function (e, isTop, topBuffer, diff) {\n        if (topBuffer === void 0) { topBuffer = 0; }\n        var elRect = this.element.getBoundingClientRect();\n        var parentRect = this.offsetParent.getBoundingClientRect();\n        var boundaryElRect = this.boundaryEl.getBoundingClientRect();\n        var yPosition = this.config.popup ? this.position.y : elRect.top;\n        // skip if cursor is outside of popupParent vertically\n        var skipY = ((yPosition <= 0 && parentRect.top >= e.clientY) ||\n            (parentRect.bottom <= e.clientY && parentRect.bottom <= boundaryElRect.bottom));\n        if (skipY) {\n            return true;\n        }\n        if (isTop) {\n            skipY = (\n            // skip if we are moving to towards top and the cursor is\n            // below the top anchor + topBuffer\n            // note: topBuffer is used when moving the dialog using the title bar\n            (diff < 0 && e.clientY > yPosition + parentRect.top + topBuffer) ||\n                // skip if we are moving to the bottom and the cursor is\n                // above the top anchor\n                (diff > 0 && e.clientY < yPosition + parentRect.top));\n        }\n        else {\n            skipY = (\n            // skip if we are moving towards the top and the cursor\n            // is below the bottom anchor\n            (diff < 0 && e.clientY > boundaryElRect.bottom) ||\n                // skip if we are moving towards the bottom and the cursor\n                // is above the bottom anchor\n                (diff > 0 && e.clientY < boundaryElRect.bottom));\n        }\n        return skipY;\n    };\n    PositionableFeature.prototype.createResizeMap = function () {\n        var eGui = this.element;\n        this.resizerMap = {\n            topLeft: { element: eGui.querySelector('[ref=eTopLeftResizer]') },\n            top: { element: eGui.querySelector('[ref=eTopResizer]') },\n            topRight: { element: eGui.querySelector('[ref=eTopRightResizer]') },\n            right: { element: eGui.querySelector('[ref=eRightResizer]') },\n            bottomRight: { element: eGui.querySelector('[ref=eBottomRightResizer]') },\n            bottom: { element: eGui.querySelector('[ref=eBottomResizer]') },\n            bottomLeft: { element: eGui.querySelector('[ref=eBottomLeftResizer]') },\n            left: { element: eGui.querySelector('[ref=eLeftResizer]') }\n        };\n    };\n    PositionableFeature.prototype.addResizers = function () {\n        if (this.resizersAdded) {\n            return;\n        }\n        var eGui = this.element;\n        if (!eGui) {\n            return;\n        }\n        var parser = new DOMParser();\n        var resizers = parser.parseFromString(RESIZE_TEMPLATE, 'text/html').body;\n        eGui.appendChild(resizers.firstChild);\n        this.createResizeMap();\n        this.resizersAdded = true;\n    };\n    PositionableFeature.prototype.removeResizers = function () {\n        this.resizerMap = undefined;\n        var resizerEl = this.element.querySelector(\".\" + RESIZE_CONTAINER_STYLE);\n        if (resizerEl) {\n            this.element.removeChild(resizerEl);\n        }\n        this.resizersAdded = false;\n    };\n    PositionableFeature.prototype.getResizerElement = function (side) {\n        return this.resizerMap[side].element;\n    };\n    PositionableFeature.prototype.onResizeStart = function (e, side) {\n        this.boundaryEl = this.findBoundaryElement();\n        if (!this.positioned) {\n            this.initialisePosition();\n        }\n        this.currentResizer = {\n            isTop: !!side.match(/top/i),\n            isRight: !!side.match(/right/i),\n            isBottom: !!side.match(/bottom/i),\n            isLeft: !!side.match(/left/i),\n        };\n        this.element.classList.add('ag-resizing');\n        this.resizerMap[side].element.classList.add('ag-active');\n        var _a = this.config, popup = _a.popup, forcePopupParentAsOffsetParent = _a.forcePopupParentAsOffsetParent;\n        if (!popup && !forcePopupParentAsOffsetParent) {\n            this.applySizeToSiblings(this.currentResizer.isBottom || this.currentResizer.isTop);\n        }\n        this.isResizing = true;\n        this.updateDragStartPosition(e.clientX, e.clientY);\n    };\n    PositionableFeature.prototype.getSiblings = function () {\n        var element = this.element;\n        var parent = element.parentElement;\n        if (!parent) {\n            return null;\n        }\n        return Array.prototype.slice.call(parent.children).filter(function (el) { return !el.classList.contains('ag-hidden'); });\n    };\n    PositionableFeature.prototype.getMinSizeOfSiblings = function () {\n        var siblings = this.getSiblings() || [];\n        var height = 0;\n        var width = 0;\n        for (var i = 0; i < siblings.length; i++) {\n            var currentEl = siblings[i];\n            var isFlex = !!currentEl.style.flex && currentEl.style.flex !== '0 0 auto';\n            if (currentEl === this.element) {\n                continue;\n            }\n            var nextHeight = this.minHeight || 0;\n            var nextWidth = this.minWidth || 0;\n            if (isFlex) {\n                var computedStyle = window.getComputedStyle(currentEl);\n                if (computedStyle.minHeight) {\n                    nextHeight = parseInt(computedStyle.minHeight, 10);\n                }\n                if (computedStyle.minWidth) {\n                    nextWidth = parseInt(computedStyle.minWidth, 10);\n                }\n            }\n            else {\n                nextHeight = currentEl.offsetHeight;\n                nextWidth = currentEl.offsetWidth;\n            }\n            height += nextHeight;\n            width += nextWidth;\n        }\n        return { height: height, width: width };\n    };\n    PositionableFeature.prototype.applySizeToSiblings = function (vertical) {\n        var containerToFlex = null;\n        var siblings = this.getSiblings();\n        if (!siblings) {\n            return;\n        }\n        for (var i = 0; i < siblings.length; i++) {\n            var el = siblings[i];\n            if (el === containerToFlex) {\n                continue;\n            }\n            if (vertical) {\n                el.style.height = el.offsetHeight + \"px\";\n            }\n            else {\n                el.style.width = el.offsetWidth + \"px\";\n            }\n            el.style.flex = '0 0 auto';\n            if (el === this.element) {\n                containerToFlex = siblings[i + 1];\n            }\n        }\n        if (containerToFlex) {\n            containerToFlex.style.removeProperty('height');\n            containerToFlex.style.removeProperty('min-height');\n            containerToFlex.style.removeProperty('max-height');\n            containerToFlex.style.flex = '1 1 auto';\n        }\n    };\n    PositionableFeature.prototype.isResizable = function () {\n        return Object.values(this.resizable).some(function (value) { return value; });\n    };\n    PositionableFeature.prototype.onResize = function (e) {\n        if (!this.isResizing || !this.currentResizer) {\n            return;\n        }\n        var _a = this.config, popup = _a.popup, forcePopupParentAsOffsetParent = _a.forcePopupParentAsOffsetParent;\n        var _b = this.currentResizer, isTop = _b.isTop, isRight = _b.isRight, isBottom = _b.isBottom, isLeft = _b.isLeft;\n        var isHorizontal = isRight || isLeft;\n        var isVertical = isBottom || isTop;\n        var _c = this.calculateMouseMovement({ e: e, isLeft: isLeft, isTop: isTop }), movementX = _c.movementX, movementY = _c.movementY;\n        var xPosition = this.position.x;\n        var yPosition = this.position.y;\n        var offsetLeft = 0;\n        var offsetTop = 0;\n        if (isHorizontal && movementX) {\n            var direction = isLeft ? -1 : 1;\n            var oldWidth = this.getWidth();\n            var newWidth = oldWidth + (movementX * direction);\n            var skipWidth = false;\n            if (isLeft) {\n                offsetLeft = oldWidth - newWidth;\n                if (xPosition + offsetLeft <= 0 || newWidth <= this.minWidth) {\n                    skipWidth = true;\n                    offsetLeft = 0;\n                }\n            }\n            if (!skipWidth) {\n                this.setWidth(newWidth);\n            }\n        }\n        if (isVertical && movementY) {\n            var direction = isTop ? -1 : 1;\n            var oldHeight = this.getHeight();\n            var newHeight = oldHeight + (movementY * direction);\n            var skipHeight = false;\n            if (isTop) {\n                offsetTop = oldHeight - newHeight;\n                if (yPosition + offsetTop <= 0 || newHeight <= this.minHeight) {\n                    skipHeight = true;\n                    offsetTop = 0;\n                }\n            }\n            else {\n                // do not let the size of all siblings be higher than the parent container\n                if (!this.config.popup &&\n                    !this.config.forcePopupParentAsOffsetParent &&\n                    oldHeight < newHeight &&\n                    (this.getMinSizeOfSiblings().height + newHeight) > this.element.parentElement.offsetHeight) {\n                    skipHeight = true;\n                }\n            }\n            if (!skipHeight) {\n                this.setHeight(newHeight);\n            }\n        }\n        this.updateDragStartPosition(e.clientX, e.clientY);\n        if ((popup || forcePopupParentAsOffsetParent) && offsetLeft || offsetTop) {\n            this.offsetElement(xPosition + offsetLeft, yPosition + offsetTop);\n        }\n    };\n    PositionableFeature.prototype.onResizeEnd = function (e, side) {\n        this.isResizing = false;\n        this.currentResizer = null;\n        this.boundaryEl = null;\n        var params = {\n            type: 'resize',\n            api: this.gridOptionsService.api,\n            columnApi: this.gridOptionsService.columnApi\n        };\n        this.element.classList.remove('ag-resizing');\n        this.resizerMap[side].element.classList.remove('ag-active');\n        this.dispatchEvent(params);\n    };\n    PositionableFeature.prototype.refreshSize = function () {\n        var eGui = this.element;\n        if (this.config.popup) {\n            if (!this.config.width) {\n                this.setWidth(eGui.offsetWidth);\n            }\n            if (!this.config.height) {\n                this.setHeight(eGui.offsetHeight);\n            }\n        }\n    };\n    PositionableFeature.prototype.onMoveStart = function (e) {\n        this.boundaryEl = this.findBoundaryElement();\n        if (!this.positioned) {\n            this.initialisePosition();\n        }\n        this.isMoving = true;\n        this.element.classList.add('ag-moving');\n        this.updateDragStartPosition(e.clientX, e.clientY);\n    };\n    PositionableFeature.prototype.onMove = function (e) {\n        if (!this.isMoving) {\n            return;\n        }\n        var _a = this.position, x = _a.x, y = _a.y;\n        var topBuffer;\n        if (this.config.calculateTopBuffer) {\n            topBuffer = this.config.calculateTopBuffer();\n        }\n        var _b = this.calculateMouseMovement({\n            e: e,\n            isTop: true,\n            anywhereWithin: true,\n            topBuffer: topBuffer\n        }), movementX = _b.movementX, movementY = _b.movementY;\n        this.offsetElement(x + movementX, y + movementY);\n        this.updateDragStartPosition(e.clientX, e.clientY);\n    };\n    PositionableFeature.prototype.onMoveEnd = function () {\n        this.isMoving = false;\n        this.boundaryEl = null;\n        this.element.classList.remove('ag-moving');\n    };\n    PositionableFeature.prototype.setOffsetParent = function () {\n        if (this.config.forcePopupParentAsOffsetParent) {\n            this.offsetParent = this.popupService.getPopupParent();\n        }\n        else {\n            this.offsetParent = this.element.offsetParent;\n        }\n    };\n    PositionableFeature.prototype.findBoundaryElement = function () {\n        var el = this.element;\n        while (el) {\n            if (window.getComputedStyle(el).position !== 'static') {\n                return el;\n            }\n            el = el.parentElement;\n        }\n        return this.element;\n    };\n    PositionableFeature.prototype.clearResizeListeners = function () {\n        while (this.resizeListeners.length) {\n            var params = this.resizeListeners.pop();\n            this.dragService.removeDragSource(params);\n        }\n    };\n    PositionableFeature.prototype.destroy = function () {\n        _super.prototype.destroy.call(this);\n        if (this.moveElementDragListener) {\n            this.dragService.removeDragSource(this.moveElementDragListener);\n        }\n        this.constrainSizeToAvailableHeight(false);\n        this.clearResizeListeners();\n        this.removeResizers();\n    };\n    __decorate$2j([\n        Autowired('popupService')\n    ], PositionableFeature.prototype, \"popupService\", void 0);\n    __decorate$2j([\n        Autowired('resizeObserverService')\n    ], PositionableFeature.prototype, \"resizeObserverService\", void 0);\n    __decorate$2j([\n        Autowired('dragService')\n    ], PositionableFeature.prototype, \"dragService\", void 0);\n    return PositionableFeature;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$2H = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$2i = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n/**\n * Contains common logic to all provided filters (apply button, clear button, etc).\n * All the filters that come with AG Grid extend this class. User filters do not\n * extend this class.\n *\n * @param M type of filter-model managed by the concrete sub-class that extends this type\n * @param V type of value managed by the concrete sub-class that extends this type\n */\nvar ProvidedFilter = /** @class */ (function (_super) {\n    __extends$2H(ProvidedFilter, _super);\n    function ProvidedFilter(filterNameKey) {\n        var _this = _super.call(this) || this;\n        _this.filterNameKey = filterNameKey;\n        _this.applyActive = false;\n        _this.hidePopup = null;\n        _this.debouncePending = false;\n        // after the user hits 'apply' the model gets copied to here. this is then the model that we use for\n        // all filtering. so if user changes UI but doesn't hit apply, then the UI will be out of sync with this model.\n        // this is what we want, as the UI should only become the 'active' filter once it's applied. when apply is\n        // inactive, this model will be in sync (following the debounce ms). if the UI is not a valid filter\n        // (eg the value is missing so nothing to filter on, or for set filter all checkboxes are checked so filter\n        // not active) then this appliedModel will be null/undefined.\n        _this.appliedModel = null;\n        return _this;\n    }\n    ProvidedFilter.prototype.postConstruct = function () {\n        this.resetTemplate(); // do this first to create the DOM\n        this.createManagedBean(new ManagedFocusFeature(this.getFocusableElement(), {\n            handleKeyDown: this.handleKeyDown.bind(this)\n        }));\n        this.positionableFeature = new PositionableFeature(this.getPositionableElement(), {\n            forcePopupParentAsOffsetParent: true\n        });\n        this.createBean(this.positionableFeature);\n    };\n    // override\n    ProvidedFilter.prototype.handleKeyDown = function (e) { };\n    ProvidedFilter.prototype.getFilterTitle = function () {\n        return this.translate(this.filterNameKey);\n    };\n    ProvidedFilter.prototype.isFilterActive = function () {\n        // filter is active if we have a valid applied model\n        return !!this.appliedModel;\n    };\n    ProvidedFilter.prototype.resetTemplate = function (paramsMap) {\n        var eGui = this.getGui();\n        if (eGui) {\n            eGui.removeEventListener('submit', this.onFormSubmit);\n        }\n        var templateString = /* html */ \"\\n            <form class=\\\"ag-filter-wrapper\\\">\\n                <div class=\\\"ag-filter-body-wrapper ag-\" + this.getCssIdentifier() + \"-body-wrapper\\\" ref=\\\"eFilterBody\\\">\\n                    \" + this.createBodyTemplate() + \"\\n                </div>\\n            </form>\";\n        this.setTemplate(templateString, paramsMap);\n        eGui = this.getGui();\n        if (eGui) {\n            eGui.addEventListener('submit', this.onFormSubmit);\n        }\n    };\n    ProvidedFilter.prototype.isReadOnly = function () {\n        return !!this.providedFilterParams.readOnly;\n    };\n    ProvidedFilter.prototype.init = function (params) {\n        var _this = this;\n        this.setParams(params);\n        this.resetUiToDefaults(true).then(function () {\n            _this.updateUiVisibility();\n            _this.setupOnBtApplyDebounce();\n        });\n    };\n    ProvidedFilter.prototype.setParams = function (params) {\n        this.providedFilterParams = params;\n        this.applyActive = ProvidedFilter.isUseApplyButton(params);\n        this.createButtonPanel();\n    };\n    ProvidedFilter.prototype.createButtonPanel = function () {\n        var _this = this;\n        var buttons = this.providedFilterParams.buttons;\n        if (!buttons || buttons.length < 1 || this.isReadOnly()) {\n            return;\n        }\n        var eButtonsPanel = document.createElement('div');\n        eButtonsPanel.classList.add('ag-filter-apply-panel');\n        var addButton = function (type) {\n            var text;\n            var clickListener;\n            switch (type) {\n                case 'apply':\n                    text = _this.translate('applyFilter');\n                    clickListener = function (e) { return _this.onBtApply(false, false, e); };\n                    break;\n                case 'clear':\n                    text = _this.translate('clearFilter');\n                    clickListener = function () { return _this.onBtClear(); };\n                    break;\n                case 'reset':\n                    text = _this.translate('resetFilter');\n                    clickListener = function () { return _this.onBtReset(); };\n                    break;\n                case 'cancel':\n                    text = _this.translate('cancelFilter');\n                    clickListener = function (e) { _this.onBtCancel(e); };\n                    break;\n                default:\n                    console.warn('AG Grid: Unknown button type specified');\n                    return;\n            }\n            var buttonType = type === 'apply' ? 'submit' : 'button';\n            var button = loadTemplate(\n            /* html */\n            \"<button\\n                    type=\\\"\" + buttonType + \"\\\"\\n                    ref=\\\"\" + type + \"FilterButton\\\"\\n                    class=\\\"ag-standard-button ag-filter-apply-panel-button\\\"\\n                >\" + text + \"\\n                </button>\");\n            eButtonsPanel.appendChild(button);\n            _this.addManagedListener(button, 'click', clickListener);\n        };\n        convertToSet(buttons).forEach(function (type) { return addButton(type); });\n        this.getGui().appendChild(eButtonsPanel);\n    };\n    // subclasses can override this to provide alternative debounce defaults\n    ProvidedFilter.prototype.getDefaultDebounceMs = function () {\n        return 0;\n    };\n    ProvidedFilter.prototype.setupOnBtApplyDebounce = function () {\n        var _this = this;\n        var debounceMs = ProvidedFilter.getDebounceMs(this.providedFilterParams, this.getDefaultDebounceMs());\n        var debounceFunc = debounce(this.checkApplyDebounce.bind(this), debounceMs);\n        this.onBtApplyDebounce = function () {\n            _this.debouncePending = true;\n            debounceFunc();\n        };\n    };\n    ProvidedFilter.prototype.checkApplyDebounce = function () {\n        if (this.debouncePending) {\n            // May already have been applied, so don't apply again (e.g. closing filter before debounce timeout)\n            this.debouncePending = false;\n            this.onBtApply();\n        }\n    };\n    ProvidedFilter.prototype.getModel = function () {\n        return this.appliedModel ? this.appliedModel : null;\n    };\n    ProvidedFilter.prototype.setModel = function (model) {\n        var _this = this;\n        var promise = model != null ? this.setModelIntoUi(model) : this.resetUiToDefaults();\n        return promise.then(function () {\n            _this.updateUiVisibility();\n            // we set the model from the GUI, rather than the provided model,\n            // so the model is consistent, e.g. handling of null/undefined will be the same,\n            // or if model is case insensitive, then casing is removed.\n            _this.applyModel('api');\n        });\n    };\n    ProvidedFilter.prototype.onBtCancel = function (e) {\n        var _this = this;\n        this.resetUiToActiveModel(this.getModel(), function () {\n            _this.handleCancelEnd(e);\n        });\n    };\n    ProvidedFilter.prototype.handleCancelEnd = function (e) {\n        if (this.providedFilterParams.closeOnApply) {\n            this.close(e);\n        }\n    };\n    ProvidedFilter.prototype.resetUiToActiveModel = function (currentModel, afterUiUpdatedFunc) {\n        var _this = this;\n        var afterAppliedFunc = function () {\n            _this.onUiChanged(false, 'prevent');\n            afterUiUpdatedFunc === null || afterUiUpdatedFunc === void 0 ? void 0 : afterUiUpdatedFunc();\n        };\n        if (currentModel != null) {\n            this.setModelIntoUi(currentModel).then(afterAppliedFunc);\n        }\n        else {\n            this.resetUiToDefaults().then(afterAppliedFunc);\n        }\n    };\n    ProvidedFilter.prototype.onBtClear = function () {\n        var _this = this;\n        this.resetUiToDefaults().then(function () { return _this.onUiChanged(); });\n    };\n    ProvidedFilter.prototype.onBtReset = function () {\n        this.onBtClear();\n        this.onBtApply();\n    };\n    /**\n     * Applies changes made in the UI to the filter, and returns true if the model has changed.\n     */\n    ProvidedFilter.prototype.applyModel = function (source) {\n        var newModel = this.getModelFromUi();\n        if (!this.isModelValid(newModel)) {\n            return false;\n        }\n        var previousModel = this.appliedModel;\n        this.appliedModel = newModel;\n        // models can be same if user pasted same content into text field, or maybe just changed the case\n        // and it's a case insensitive filter\n        return !this.areModelsEqual(previousModel, newModel);\n    };\n    ProvidedFilter.prototype.isModelValid = function (model) {\n        return true;\n    };\n    ProvidedFilter.prototype.onFormSubmit = function (e) {\n        e.preventDefault();\n    };\n    ProvidedFilter.prototype.onBtApply = function (afterFloatingFilter, afterDataChange, e) {\n        if (afterFloatingFilter === void 0) { afterFloatingFilter = false; }\n        if (afterDataChange === void 0) { afterDataChange = false; }\n        // Prevent form submission\n        if (e) {\n            e.preventDefault();\n        }\n        if (this.applyModel(afterDataChange ? 'rowDataUpdated' : 'ui')) {\n            // the floating filter uses 'afterFloatingFilter' info, so it doesn't refresh after filter changed if change\n            // came from floating filter\n            this.providedFilterParams.filterChangedCallback({ afterFloatingFilter: afterFloatingFilter, afterDataChange: afterDataChange });\n        }\n        var closeOnApply = this.providedFilterParams.closeOnApply;\n        // only close if an apply button is visible, otherwise we'd be closing every time a change was made!\n        if (closeOnApply && this.applyActive && !afterFloatingFilter && !afterDataChange) {\n            this.close(e);\n        }\n    };\n    ProvidedFilter.prototype.onNewRowsLoaded = function () {\n    };\n    ProvidedFilter.prototype.close = function (e) {\n        if (!this.hidePopup) {\n            return;\n        }\n        var keyboardEvent = e;\n        var key = keyboardEvent && keyboardEvent.key;\n        var params;\n        if (key === 'Enter' || key === 'Space') {\n            params = { keyboardEvent: keyboardEvent };\n        }\n        this.hidePopup(params);\n        this.hidePopup = null;\n    };\n    /**\n     * By default, if the change came from a floating filter it will be applied immediately, otherwise if there is no\n     * apply button it will be applied after a debounce, otherwise it will not be applied at all. This behaviour can\n     * be adjusted by using the apply parameter.\n     */\n    ProvidedFilter.prototype.onUiChanged = function (fromFloatingFilter, apply) {\n        if (fromFloatingFilter === void 0) { fromFloatingFilter = false; }\n        this.updateUiVisibility();\n        this.providedFilterParams.filterModifiedCallback();\n        if (this.applyActive && !this.isReadOnly()) {\n            var isValid = this.isModelValid(this.getModelFromUi());\n            setDisabled(this.getRefElement('applyFilterButton'), !isValid);\n        }\n        if ((fromFloatingFilter && !apply) || apply === 'immediately') {\n            this.onBtApply(fromFloatingFilter);\n        }\n        else if ((!this.applyActive && !apply) || apply === 'debounce') {\n            this.onBtApplyDebounce();\n        }\n    };\n    ProvidedFilter.prototype.afterGuiAttached = function (params) {\n        if (params) {\n            this.hidePopup = params.hidePopup;\n        }\n        this.refreshFilterResizer(params === null || params === void 0 ? void 0 : params.container);\n    };\n    ProvidedFilter.prototype.refreshFilterResizer = function (containerType) {\n        // tool panel is scrollable, so don't need to size\n        if (!this.positionableFeature || containerType === 'toolPanel') {\n            return;\n        }\n        var isFloatingFilter = containerType === 'floatingFilter';\n        var _a = this, positionableFeature = _a.positionableFeature, gridOptionsService = _a.gridOptionsService;\n        if (isFloatingFilter) {\n            positionableFeature.restoreLastSize();\n            positionableFeature.setResizable(gridOptionsService.is('enableRtl')\n                ? { bottom: true, bottomLeft: true, left: true }\n                : { bottom: true, bottomRight: true, right: true });\n        }\n        else {\n            this.positionableFeature.removeSizeFromEl();\n            this.positionableFeature.setResizable(false);\n        }\n        this.positionableFeature.constrainSizeToAvailableHeight(true);\n    };\n    ProvidedFilter.prototype.afterGuiDetached = function () {\n        this.checkApplyDebounce();\n        if (this.positionableFeature) {\n            this.positionableFeature.constrainSizeToAvailableHeight(false);\n        }\n    };\n    // static, as used by floating filter also\n    ProvidedFilter.getDebounceMs = function (params, debounceDefault) {\n        if (ProvidedFilter.isUseApplyButton(params)) {\n            if (params.debounceMs != null) {\n                console.warn('AG Grid: debounceMs is ignored when apply button is present');\n            }\n            return 0;\n        }\n        return params.debounceMs != null ? params.debounceMs : debounceDefault;\n    };\n    // static, as used by floating filter also\n    ProvidedFilter.isUseApplyButton = function (params) {\n        return !!params.buttons && params.buttons.indexOf('apply') >= 0;\n    };\n    ProvidedFilter.prototype.destroy = function () {\n        var eGui = this.getGui();\n        if (eGui) {\n            eGui.removeEventListener('submit', this.onFormSubmit);\n        }\n        this.hidePopup = null;\n        if (this.positionableFeature) {\n            this.positionableFeature = this.destroyBean(this.positionableFeature);\n        }\n        _super.prototype.destroy.call(this);\n    };\n    ProvidedFilter.prototype.translate = function (key) {\n        var translate = this.localeService.getLocaleTextFunc();\n        return translate(key, DEFAULT_FILTER_LOCALE_TEXT[key]);\n    };\n    ProvidedFilter.prototype.getCellValue = function (rowNode) {\n        var _a = this.providedFilterParams, api = _a.api, colDef = _a.colDef, column = _a.column, columnApi = _a.columnApi, context = _a.context;\n        return this.providedFilterParams.valueGetter({\n            api: api,\n            colDef: colDef,\n            column: column,\n            columnApi: columnApi,\n            context: context,\n            data: rowNode.data,\n            getValue: function (field) { return rowNode.data[field]; },\n            node: rowNode,\n        });\n    };\n    // override to control positionable feature\n    ProvidedFilter.prototype.getPositionableElement = function () {\n        return this.eFilterBody;\n    };\n    __decorate$2i([\n        Autowired('rowModel')\n    ], ProvidedFilter.prototype, \"rowModel\", void 0);\n    __decorate$2i([\n        RefSelector('eFilterBody')\n    ], ProvidedFilter.prototype, \"eFilterBody\", void 0);\n    __decorate$2i([\n        PostConstruct\n    ], ProvidedFilter.prototype, \"postConstruct\", null);\n    return ProvidedFilter;\n}(Component));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$2G = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$2h = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar AgAbstractLabel = /** @class */ (function (_super) {\n    __extends$2G(AgAbstractLabel, _super);\n    function AgAbstractLabel(config, template) {\n        var _this = _super.call(this, template) || this;\n        _this.labelSeparator = '';\n        _this.labelAlignment = 'left';\n        _this.disabled = false;\n        _this.label = '';\n        _this.config = config || {};\n        return _this;\n    }\n    AgAbstractLabel.prototype.postConstruct = function () {\n        this.addCssClass('ag-labeled');\n        this.eLabel.classList.add('ag-label');\n        var _a = this.config, labelSeparator = _a.labelSeparator, label = _a.label, labelWidth = _a.labelWidth, labelAlignment = _a.labelAlignment;\n        if (labelSeparator != null) {\n            this.setLabelSeparator(labelSeparator);\n        }\n        if (label != null) {\n            this.setLabel(label);\n        }\n        if (labelWidth != null) {\n            this.setLabelWidth(labelWidth);\n        }\n        this.setLabelAlignment(labelAlignment || this.labelAlignment);\n        this.refreshLabel();\n    };\n    AgAbstractLabel.prototype.refreshLabel = function () {\n        clearElement(this.eLabel);\n        if (typeof this.label === 'string') {\n            this.eLabel.innerText = this.label + this.labelSeparator;\n        }\n        else if (this.label) {\n            this.eLabel.appendChild(this.label);\n        }\n        if (this.label === '') {\n            setDisplayed(this.eLabel, false);\n            setAriaRole(this.eLabel, 'presentation');\n        }\n        else {\n            setDisplayed(this.eLabel, true);\n            setAriaRole(this.eLabel, null);\n        }\n    };\n    AgAbstractLabel.prototype.setLabelSeparator = function (labelSeparator) {\n        if (this.labelSeparator === labelSeparator) {\n            return this;\n        }\n        this.labelSeparator = labelSeparator;\n        if (this.label != null) {\n            this.refreshLabel();\n        }\n        return this;\n    };\n    AgAbstractLabel.prototype.getLabelId = function () {\n        this.eLabel.id = this.eLabel.id || \"ag-\" + this.getCompId() + \"-label\";\n        return this.eLabel.id;\n    };\n    AgAbstractLabel.prototype.getLabel = function () {\n        return this.label;\n    };\n    AgAbstractLabel.prototype.setLabel = function (label) {\n        if (this.label === label) {\n            return this;\n        }\n        this.label = label;\n        this.refreshLabel();\n        return this;\n    };\n    AgAbstractLabel.prototype.setLabelAlignment = function (alignment) {\n        var eGui = this.getGui();\n        var eGuiClassList = eGui.classList;\n        eGuiClassList.toggle('ag-label-align-left', alignment === 'left');\n        eGuiClassList.toggle('ag-label-align-right', alignment === 'right');\n        eGuiClassList.toggle('ag-label-align-top', alignment === 'top');\n        return this;\n    };\n    AgAbstractLabel.prototype.setLabelEllipsis = function (hasEllipsis) {\n        this.eLabel.classList.toggle('ag-label-ellipsis', hasEllipsis);\n        return this;\n    };\n    AgAbstractLabel.prototype.setLabelWidth = function (width) {\n        if (this.label == null) {\n            return this;\n        }\n        setElementWidth(this.eLabel, width);\n        return this;\n    };\n    AgAbstractLabel.prototype.setDisabled = function (disabled) {\n        disabled = !!disabled;\n        var element = this.getGui();\n        setDisabled(element, disabled);\n        element.classList.toggle('ag-disabled', disabled);\n        this.disabled = disabled;\n        return this;\n    };\n    AgAbstractLabel.prototype.isDisabled = function () {\n        return !!this.disabled;\n    };\n    __decorate$2h([\n        PostConstruct\n    ], AgAbstractLabel.prototype, \"postConstruct\", null);\n    return AgAbstractLabel;\n}(Component));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$2F = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar AgAbstractField = /** @class */ (function (_super) {\n    __extends$2F(AgAbstractField, _super);\n    function AgAbstractField(config, template, className) {\n        var _this = _super.call(this, config, template) || this;\n        _this.className = className;\n        return _this;\n    }\n    AgAbstractField.prototype.postConstruct = function () {\n        _super.prototype.postConstruct.call(this);\n        if (this.className) {\n            this.addCssClass(this.className);\n        }\n    };\n    AgAbstractField.prototype.onValueChange = function (callbackFn) {\n        var _this = this;\n        this.addManagedListener(this, AgAbstractField.EVENT_CHANGED, function () { return callbackFn(_this.getValue()); });\n        return this;\n    };\n    AgAbstractField.prototype.getWidth = function () {\n        return this.getGui().clientWidth;\n    };\n    AgAbstractField.prototype.setWidth = function (width) {\n        setFixedWidth(this.getGui(), width);\n        return this;\n    };\n    AgAbstractField.prototype.getPreviousValue = function () {\n        return this.previousValue;\n    };\n    AgAbstractField.prototype.getValue = function () {\n        return this.value;\n    };\n    AgAbstractField.prototype.setValue = function (value, silent) {\n        if (this.value === value) {\n            return this;\n        }\n        this.previousValue = this.value;\n        this.value = value;\n        if (!silent) {\n            this.dispatchEvent({ type: AgAbstractField.EVENT_CHANGED });\n        }\n        return this;\n    };\n    AgAbstractField.EVENT_CHANGED = 'valueChange';\n    return AgAbstractField;\n}(AgAbstractLabel));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$2E = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$2g = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar AgPickerField = /** @class */ (function (_super) {\n    __extends$2E(AgPickerField, _super);\n    function AgPickerField(config, className, pickerIcon, ariaRole) {\n        var _this = _super.call(this, config, \n        /* html */ \"<div class=\\\"ag-picker-field\\\" role=\\\"presentation\\\">\\n                <div ref=\\\"eLabel\\\"></div>\\n                <div ref=\\\"eWrapper\\\"\\n                    class=\\\"ag-wrapper ag-picker-field-wrapper\\\"\\n                    tabIndex=\\\"-1\\\"\\n                    aria-expanded=\\\"false\\\"\\n                    \" + (ariaRole ? \"role=\\\"\" + ariaRole + \"\\\"\" : '') + \"\\n                >\\n                    <div ref=\\\"eDisplayField\\\" class=\\\"ag-picker-field-display\\\"></div>\\n                    <div ref=\\\"eIcon\\\" class=\\\"ag-picker-field-icon\\\" aria-hidden=\\\"true\\\"></div>\\n                </div>\\n            </div>\", className) || this;\n        _this.pickerIcon = pickerIcon;\n        _this.isPickerDisplayed = false;\n        _this.isDestroyingPicker = false;\n        _this.skipClick = false;\n        return _this;\n    }\n    AgPickerField.prototype.postConstruct = function () {\n        var _this = this;\n        _super.prototype.postConstruct.call(this);\n        var displayId = this.getCompId() + \"-display\";\n        this.eDisplayField.setAttribute('id', displayId);\n        setAriaDescribedBy(this.eWrapper, displayId);\n        var clickHandler = function () {\n            if (_this.skipClick) {\n                _this.skipClick = false;\n                return;\n            }\n            if (_this.isDisabled()) {\n                return;\n            }\n            _this.pickerComponent = _this.showPicker();\n        };\n        var eGui = this.getGui();\n        this.addManagedListener(eGui, 'mousedown', function (e) {\n            if (!_this.skipClick &&\n                _this.pickerComponent &&\n                _this.pickerComponent.isAlive() &&\n                isVisible(_this.pickerComponent.getGui()) &&\n                eGui.contains(e.target)) {\n                _this.skipClick = true;\n            }\n        });\n        this.addManagedListener(eGui, 'keydown', function (e) {\n            switch (e.key) {\n                case KeyCode.UP:\n                case KeyCode.DOWN:\n                case KeyCode.ENTER:\n                case KeyCode.SPACE:\n                    clickHandler();\n                case KeyCode.ESCAPE:\n                    if (_this.isPickerDisplayed) {\n                        e.preventDefault();\n                    }\n                    break;\n            }\n        });\n        this.addManagedListener(this.eWrapper, 'click', clickHandler);\n        this.addManagedListener(this.eLabel, 'click', clickHandler);\n        if (this.pickerIcon) {\n            var icon = createIconNoSpan(this.pickerIcon, this.gridOptionsService);\n            if (icon) {\n                this.eIcon.appendChild(icon);\n            }\n        }\n    };\n    AgPickerField.prototype.refreshLabel = function () {\n        if (exists(this.getLabel())) {\n            setAriaLabelledBy(this.eWrapper, this.getLabelId());\n        }\n        else {\n            this.eWrapper.removeAttribute('aria-labelledby');\n        }\n        _super.prototype.refreshLabel.call(this);\n    };\n    AgPickerField.prototype.setAriaLabel = function (label) {\n        setAriaLabel(this.eWrapper, label);\n        return this;\n    };\n    AgPickerField.prototype.setInputWidth = function (width) {\n        setElementWidth(this.eWrapper, width);\n        return this;\n    };\n    AgPickerField.prototype.getFocusableElement = function () {\n        return this.eWrapper;\n    };\n    __decorate$2g([\n        RefSelector('eLabel')\n    ], AgPickerField.prototype, \"eLabel\", void 0);\n    __decorate$2g([\n        RefSelector('eWrapper')\n    ], AgPickerField.prototype, \"eWrapper\", void 0);\n    __decorate$2g([\n        RefSelector('eDisplayField')\n    ], AgPickerField.prototype, \"eDisplayField\", void 0);\n    __decorate$2g([\n        RefSelector('eIcon')\n    ], AgPickerField.prototype, \"eIcon\", void 0);\n    return AgPickerField;\n}(AgAbstractField));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$2D = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$2f = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar AgList = /** @class */ (function (_super) {\n    __extends$2D(AgList, _super);\n    function AgList(cssIdentifier) {\n        if (cssIdentifier === void 0) { cssIdentifier = 'default'; }\n        var _this = _super.call(this, /* html */ \"<div class=\\\"ag-list ag-\" + cssIdentifier + \"-list\\\" role=\\\"listbox\\\"></div>\") || this;\n        _this.cssIdentifier = cssIdentifier;\n        _this.options = [];\n        _this.itemEls = [];\n        return _this;\n    }\n    AgList.prototype.init = function () {\n        this.addManagedListener(this.getGui(), 'keydown', this.handleKeyDown.bind(this));\n    };\n    AgList.prototype.handleKeyDown = function (e) {\n        var key = e.key;\n        switch (key) {\n            case KeyCode.ENTER:\n                if (!this.highlightedEl) {\n                    this.setValue(this.getValue());\n                }\n                else {\n                    var pos = this.itemEls.indexOf(this.highlightedEl);\n                    this.setValueByIndex(pos);\n                }\n                break;\n            case KeyCode.DOWN:\n            case KeyCode.UP:\n                var isDown = key === KeyCode.DOWN;\n                var itemToHighlight = void 0;\n                e.preventDefault();\n                if (!this.highlightedEl) {\n                    itemToHighlight = this.itemEls[isDown ? 0 : this.itemEls.length - 1];\n                }\n                else {\n                    var currentIdx = this.itemEls.indexOf(this.highlightedEl);\n                    var nextPos = currentIdx + (isDown ? 1 : -1);\n                    nextPos = Math.min(Math.max(nextPos, 0), this.itemEls.length - 1);\n                    itemToHighlight = this.itemEls[nextPos];\n                }\n                this.highlightItem(itemToHighlight);\n                break;\n        }\n    };\n    AgList.prototype.addOptions = function (listOptions) {\n        var _this = this;\n        listOptions.forEach(function (listOption) { return _this.addOption(listOption); });\n        return this;\n    };\n    AgList.prototype.addOption = function (listOption) {\n        var value = listOption.value, text = listOption.text;\n        var sanitisedText = escapeString(text || value);\n        this.options.push({ value: value, text: sanitisedText });\n        this.renderOption(value, sanitisedText);\n        this.updateIndices();\n        return this;\n    };\n    AgList.prototype.updateIndices = function () {\n        var options = this.getGui().querySelectorAll('.ag-list-item');\n        options.forEach(function (option, idx) {\n            setAriaPosInSet(option, idx + 1);\n            setAriaSetSize(option, options.length);\n        });\n    };\n    AgList.prototype.renderOption = function (value, text) {\n        var _this = this;\n        var itemEl = document.createElement('div');\n        setAriaRole(itemEl, 'option');\n        itemEl.classList.add('ag-list-item', \"ag-\" + this.cssIdentifier + \"-list-item\");\n        itemEl.innerHTML = \"<span>\" + text + \"</span>\";\n        itemEl.tabIndex = -1;\n        this.itemEls.push(itemEl);\n        this.addManagedListener(itemEl, 'mouseover', function () { return _this.highlightItem(itemEl); });\n        this.addManagedListener(itemEl, 'mouseleave', function () { return _this.clearHighlighted(); });\n        this.addManagedListener(itemEl, 'click', function () { return _this.setValue(value); });\n        this.getGui().appendChild(itemEl);\n    };\n    AgList.prototype.setValue = function (value, silent) {\n        if (this.value === value) {\n            this.fireItemSelected();\n            return this;\n        }\n        if (value == null) {\n            this.reset();\n            return this;\n        }\n        var idx = this.options.findIndex(function (option) { return option.value === value; });\n        if (idx !== -1) {\n            var option = this.options[idx];\n            this.value = option.value;\n            this.displayValue = option.text != null ? option.text : option.value;\n            this.highlightItem(this.itemEls[idx]);\n            if (!silent) {\n                this.fireChangeEvent();\n            }\n        }\n        return this;\n    };\n    AgList.prototype.setValueByIndex = function (idx) {\n        return this.setValue(this.options[idx].value);\n    };\n    AgList.prototype.getValue = function () {\n        return this.value;\n    };\n    AgList.prototype.getDisplayValue = function () {\n        return this.displayValue;\n    };\n    AgList.prototype.refreshHighlighted = function () {\n        var _this = this;\n        this.clearHighlighted();\n        var idx = this.options.findIndex(function (option) { return option.value === _this.value; });\n        if (idx !== -1) {\n            this.highlightItem(this.itemEls[idx]);\n        }\n    };\n    AgList.prototype.reset = function () {\n        this.value = null;\n        this.displayValue = null;\n        this.clearHighlighted();\n        this.fireChangeEvent();\n    };\n    AgList.prototype.highlightItem = function (el) {\n        if (!el.offsetParent) {\n            return;\n        }\n        this.clearHighlighted();\n        this.highlightedEl = el;\n        this.highlightedEl.classList.add(AgList.ACTIVE_CLASS);\n        setAriaSelected(this.highlightedEl, true);\n        this.highlightedEl.focus();\n    };\n    AgList.prototype.clearHighlighted = function () {\n        if (!this.highlightedEl || !this.highlightedEl.offsetParent) {\n            return;\n        }\n        this.highlightedEl.classList.remove(AgList.ACTIVE_CLASS);\n        setAriaSelected(this.highlightedEl, false);\n        this.highlightedEl = null;\n    };\n    AgList.prototype.fireChangeEvent = function () {\n        this.dispatchEvent({ type: AgAbstractField.EVENT_CHANGED });\n        this.fireItemSelected();\n    };\n    AgList.prototype.fireItemSelected = function () {\n        this.dispatchEvent({ type: AgList.EVENT_ITEM_SELECTED });\n    };\n    AgList.EVENT_ITEM_SELECTED = 'selectedItem';\n    AgList.ACTIVE_CLASS = 'ag-active-item';\n    __decorate$2f([\n        PostConstruct\n    ], AgList.prototype, \"init\", null);\n    return AgList;\n}(Component));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$2C = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$2e = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar AgSelect = /** @class */ (function (_super) {\n    __extends$2C(AgSelect, _super);\n    function AgSelect(config) {\n        return _super.call(this, config, 'ag-select', 'smallDown', 'listbox') || this;\n    }\n    AgSelect.prototype.init = function () {\n        var _this = this;\n        this.listComponent = this.createBean(new AgList('select'));\n        this.listComponent.setParentComponent(this);\n        this.eWrapper.tabIndex = 0;\n        this.listComponent.addManagedListener(this.listComponent, AgList.EVENT_ITEM_SELECTED, function () {\n            if (_this.hideList) {\n                _this.hideList();\n            }\n            _this.dispatchEvent({ type: AgSelect.EVENT_ITEM_SELECTED });\n        });\n        this.listComponent.addManagedListener(this.listComponent, AgAbstractField.EVENT_CHANGED, function () {\n            _this.setValue(_this.listComponent.getValue(), false, true);\n            if (_this.hideList) {\n                _this.hideList();\n            }\n        });\n    };\n    AgSelect.prototype.showPicker = function () {\n        var _this = this;\n        var listGui = this.listComponent.getGui();\n        var eDocument = this.gridOptionsService.getDocument();\n        var destroyMouseWheelFunc = this.addManagedListener(eDocument.body, 'wheel', function (e) {\n            if (!listGui.contains(e.target) && _this.hideList) {\n                _this.hideList();\n            }\n        });\n        var destroyFocusOutFunc = this.addManagedListener(listGui, 'focusout', function (e) {\n            if (!listGui.contains(e.relatedTarget) && _this.hideList) {\n                _this.hideList();\n            }\n        });\n        var translate = this.localeService.getLocaleTextFunc();\n        var addPopupRes = this.popupService.addPopup({\n            modal: true,\n            eChild: listGui,\n            closeOnEsc: true,\n            closedCallback: function () {\n                _this.hideList = null;\n                _this.isPickerDisplayed = false;\n                destroyFocusOutFunc();\n                destroyMouseWheelFunc();\n                if (_this.isAlive()) {\n                    setAriaExpanded(_this.eWrapper, false);\n                    _this.getFocusableElement().focus();\n                }\n            },\n            ariaLabel: translate('ariaLabelSelectField', 'Select Field')\n        });\n        if (addPopupRes) {\n            this.hideList = addPopupRes.hideFunc;\n        }\n        this.isPickerDisplayed = true;\n        setElementWidth(listGui, getAbsoluteWidth(this.eWrapper));\n        setAriaExpanded(this.eWrapper, true);\n        listGui.style.maxHeight = getInnerHeight(this.popupService.getPopupParent()) + 'px';\n        listGui.style.position = 'absolute';\n        this.popupService.positionPopupByComponent({\n            type: 'ag-list',\n            eventSource: this.eWrapper,\n            ePopup: listGui,\n            position: 'under',\n            keepWithinBounds: true\n        });\n        this.listComponent.refreshHighlighted();\n        return this.listComponent;\n    };\n    AgSelect.prototype.addOptions = function (options) {\n        var _this = this;\n        options.forEach(function (option) { return _this.addOption(option); });\n        return this;\n    };\n    AgSelect.prototype.addOption = function (option) {\n        this.listComponent.addOption(option);\n        return this;\n    };\n    AgSelect.prototype.setValue = function (value, silent, fromPicker) {\n        if (this.value === value) {\n            return this;\n        }\n        if (!fromPicker) {\n            this.listComponent.setValue(value, true);\n        }\n        var newValue = this.listComponent.getValue();\n        if (newValue === this.getValue()) {\n            return this;\n        }\n        this.eDisplayField.innerHTML = this.listComponent.getDisplayValue();\n        return _super.prototype.setValue.call(this, value, silent);\n    };\n    AgSelect.prototype.destroy = function () {\n        if (this.hideList) {\n            this.hideList();\n        }\n        this.destroyBean(this.listComponent);\n        _super.prototype.destroy.call(this);\n    };\n    AgSelect.EVENT_ITEM_SELECTED = 'selectedItem';\n    __decorate$2e([\n        Autowired('popupService')\n    ], AgSelect.prototype, \"popupService\", void 0);\n    __decorate$2e([\n        PostConstruct\n    ], AgSelect.prototype, \"init\", null);\n    return AgSelect;\n}(AgPickerField));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$2B = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$2d = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar AgAbstractInputField = /** @class */ (function (_super) {\n    __extends$2B(AgAbstractInputField, _super);\n    function AgAbstractInputField(config, className, inputType, displayFieldTag) {\n        if (inputType === void 0) { inputType = 'text'; }\n        if (displayFieldTag === void 0) { displayFieldTag = 'input'; }\n        var _this = _super.call(this, config, /* html */ \"\\n            <div role=\\\"presentation\\\">\\n                <div ref=\\\"eLabel\\\" class=\\\"ag-input-field-label\\\"></div>\\n                <div ref=\\\"eWrapper\\\" class=\\\"ag-wrapper ag-input-wrapper\\\" role=\\\"presentation\\\">\\n                    <\" + displayFieldTag + \" ref=\\\"eInput\\\" class=\\\"ag-input-field-input\\\"></\" + displayFieldTag + \">\\n                </div>\\n            </div>\", className) || this;\n        _this.inputType = inputType;\n        _this.displayFieldTag = displayFieldTag;\n        return _this;\n    }\n    AgAbstractInputField.prototype.postConstruct = function () {\n        _super.prototype.postConstruct.call(this);\n        this.setInputType();\n        this.eLabel.classList.add(this.className + \"-label\");\n        this.eWrapper.classList.add(this.className + \"-input-wrapper\");\n        this.eInput.classList.add(this.className + \"-input\");\n        this.addCssClass('ag-input-field');\n        this.eInput.id = this.eInput.id || \"ag-\" + this.getCompId() + \"-input\";\n        var _a = this.config, width = _a.width, value = _a.value;\n        if (width != null) {\n            this.setWidth(width);\n        }\n        if (value != null) {\n            this.setValue(value);\n        }\n        this.addInputListeners();\n    };\n    AgAbstractInputField.prototype.refreshLabel = function () {\n        if (exists(this.getLabel())) {\n            setAriaLabelledBy(this.eInput, this.getLabelId());\n        }\n        else {\n            this.eInput.removeAttribute('aria-labelledby');\n        }\n        _super.prototype.refreshLabel.call(this);\n    };\n    AgAbstractInputField.prototype.addInputListeners = function () {\n        var _this = this;\n        this.addManagedListener(this.eInput, 'input', function (e) { return _this.setValue(e.target.value); });\n    };\n    AgAbstractInputField.prototype.setInputType = function () {\n        if (this.displayFieldTag === 'input') {\n            this.eInput.setAttribute('type', this.inputType);\n        }\n    };\n    AgAbstractInputField.prototype.getInputElement = function () {\n        return this.eInput;\n    };\n    AgAbstractInputField.prototype.setInputWidth = function (width) {\n        setElementWidth(this.eWrapper, width);\n        return this;\n    };\n    AgAbstractInputField.prototype.setInputName = function (name) {\n        this.getInputElement().setAttribute('name', name);\n        return this;\n    };\n    AgAbstractInputField.prototype.getFocusableElement = function () {\n        return this.eInput;\n    };\n    AgAbstractInputField.prototype.setMaxLength = function (length) {\n        var eInput = this.eInput;\n        eInput.maxLength = length;\n        return this;\n    };\n    AgAbstractInputField.prototype.setInputPlaceholder = function (placeholder) {\n        addOrRemoveAttribute(this.eInput, 'placeholder', placeholder);\n        return this;\n    };\n    AgAbstractInputField.prototype.setInputAriaLabel = function (label) {\n        setAriaLabel(this.eInput, label);\n        return this;\n    };\n    AgAbstractInputField.prototype.setDisabled = function (disabled) {\n        setDisabled(this.eInput, disabled);\n        return _super.prototype.setDisabled.call(this, disabled);\n    };\n    __decorate$2d([\n        RefSelector('eLabel')\n    ], AgAbstractInputField.prototype, \"eLabel\", void 0);\n    __decorate$2d([\n        RefSelector('eWrapper')\n    ], AgAbstractInputField.prototype, \"eWrapper\", void 0);\n    __decorate$2d([\n        RefSelector('eInput')\n    ], AgAbstractInputField.prototype, \"eInput\", void 0);\n    return AgAbstractInputField;\n}(AgAbstractField));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$2A = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar AgCheckbox = /** @class */ (function (_super) {\n    __extends$2A(AgCheckbox, _super);\n    function AgCheckbox(config, className, inputType) {\n        if (className === void 0) { className = 'ag-checkbox'; }\n        if (inputType === void 0) { inputType = 'checkbox'; }\n        var _this = _super.call(this, config, className, inputType) || this;\n        _this.labelAlignment = 'right';\n        _this.selected = false;\n        _this.readOnly = false;\n        _this.passive = false;\n        return _this;\n    }\n    AgCheckbox.prototype.addInputListeners = function () {\n        this.addManagedListener(this.eInput, 'click', this.onCheckboxClick.bind(this));\n        this.addManagedListener(this.eLabel, 'click', this.toggle.bind(this));\n    };\n    AgCheckbox.prototype.getNextValue = function () {\n        return this.selected === undefined ? true : !this.selected;\n    };\n    AgCheckbox.prototype.setPassive = function (passive) {\n        this.passive = passive;\n    };\n    AgCheckbox.prototype.isReadOnly = function () {\n        return this.readOnly;\n    };\n    AgCheckbox.prototype.setReadOnly = function (readOnly) {\n        this.eWrapper.classList.toggle('ag-disabled', readOnly);\n        this.eInput.disabled = readOnly;\n        this.readOnly = readOnly;\n    };\n    AgCheckbox.prototype.setDisabled = function (disabled) {\n        this.eWrapper.classList.toggle('ag-disabled', disabled);\n        return _super.prototype.setDisabled.call(this, disabled);\n    };\n    AgCheckbox.prototype.toggle = function () {\n        if (this.eInput.disabled) {\n            return;\n        }\n        var previousValue = this.isSelected();\n        var nextValue = this.getNextValue();\n        if (this.passive) {\n            this.dispatchChange(nextValue, previousValue);\n        }\n        else {\n            this.setValue(nextValue);\n        }\n    };\n    AgCheckbox.prototype.getValue = function () {\n        return this.isSelected();\n    };\n    AgCheckbox.prototype.setValue = function (value, silent) {\n        this.refreshSelectedClass(value);\n        this.setSelected(value, silent);\n        return this;\n    };\n    AgCheckbox.prototype.setName = function (name) {\n        var input = this.getInputElement();\n        input.name = name;\n        return this;\n    };\n    AgCheckbox.prototype.isSelected = function () {\n        return this.selected;\n    };\n    AgCheckbox.prototype.setSelected = function (selected, silent) {\n        if (this.isSelected() === selected) {\n            return;\n        }\n        this.previousValue = this.isSelected();\n        selected = this.selected = typeof selected === 'boolean' ? selected : undefined;\n        this.eInput.checked = selected;\n        this.eInput.indeterminate = selected === undefined;\n        if (!silent) {\n            this.dispatchChange(this.selected, this.previousValue);\n        }\n    };\n    AgCheckbox.prototype.dispatchChange = function (selected, previousValue, event) {\n        this.dispatchEvent({ type: AgCheckbox.EVENT_CHANGED, selected: selected, previousValue: previousValue, event: event });\n        var input = this.getInputElement();\n        var checkboxChangedEvent = {\n            type: Events.EVENT_CHECKBOX_CHANGED,\n            id: input.id,\n            name: input.name,\n            selected: selected,\n            previousValue: previousValue\n        };\n        this.eventService.dispatchEvent(checkboxChangedEvent);\n    };\n    AgCheckbox.prototype.onCheckboxClick = function (e) {\n        if (this.passive || this.eInput.disabled) {\n            return;\n        }\n        var previousValue = this.isSelected();\n        var selected = this.selected = e.target.checked;\n        this.refreshSelectedClass(selected);\n        this.dispatchChange(selected, previousValue, e);\n    };\n    AgCheckbox.prototype.refreshSelectedClass = function (value) {\n        this.eWrapper.classList.toggle('ag-checked', value === true);\n        this.eWrapper.classList.toggle('ag-indeterminate', value == null);\n    };\n    return AgCheckbox;\n}(AgAbstractInputField));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$2z = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar AgRadioButton = /** @class */ (function (_super) {\n    __extends$2z(AgRadioButton, _super);\n    function AgRadioButton(config) {\n        return _super.call(this, config, 'ag-radio-button', 'radio') || this;\n    }\n    AgRadioButton.prototype.isSelected = function () {\n        return this.eInput.checked;\n    };\n    AgRadioButton.prototype.toggle = function () {\n        if (this.eInput.disabled) {\n            return;\n        }\n        // do not allow an active radio button to be deselected\n        if (!this.isSelected()) {\n            this.setValue(true);\n        }\n    };\n    AgRadioButton.prototype.addInputListeners = function () {\n        _super.prototype.addInputListeners.call(this);\n        this.addManagedListener(this.eventService, Events.EVENT_CHECKBOX_CHANGED, this.onChange.bind(this));\n    };\n    /**\n     * This ensures that if another radio button in the same named group is selected, we deselect this radio button.\n     * By default the browser does this for you, but we are managing classes ourselves in order to ensure input\n     * elements are styled correctly in IE11, and the DOM 'changed' event is only fired when a button is selected,\n     * not deselected, so we need to use our own event.\n     */\n    AgRadioButton.prototype.onChange = function (event) {\n        if (event.selected &&\n            event.name &&\n            this.eInput.name &&\n            this.eInput.name === event.name &&\n            event.id &&\n            this.eInput.id !== event.id) {\n            this.setValue(false, true);\n        }\n    };\n    return AgRadioButton;\n}(AgCheckbox));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$2y = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __read$n = (undefined && undefined.__read) || function (o, n) {\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n    if (!m) return o;\n    var i = m.call(o), r, ar = [], e;\n    try {\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n    }\n    catch (error) { e = { error: error }; }\n    finally {\n        try {\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\n        }\n        finally { if (e) throw e.error; }\n    }\n    return ar;\n};\nvar __spread$j = (undefined && undefined.__spread) || function () {\n    for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read$n(arguments[i]));\n    return ar;\n};\nvar SimpleFilterModelFormatter = /** @class */ (function () {\n    function SimpleFilterModelFormatter(localeService, optionsFactory) {\n        this.localeService = localeService;\n        this.optionsFactory = optionsFactory;\n    }\n    // used by:\n    // 1) NumberFloatingFilter & TextFloatingFilter: Always, for both when editable and read only.\n    // 2) DateFloatingFilter: Only when read only (as we show text rather than a date picker when read only)\n    SimpleFilterModelFormatter.prototype.getModelAsString = function (model) {\n        var _this = this;\n        if (!model) {\n            return null;\n        }\n        var isCombined = model.operator != null;\n        var translate = this.localeService.getLocaleTextFunc();\n        if (isCombined) {\n            var combinedModel = model;\n            var conditions = combinedModel.conditions;\n            if (!conditions) {\n                var condition1 = combinedModel.condition1, condition2 = combinedModel.condition2;\n                conditions = [condition1, condition2];\n            }\n            var customOptions = conditions.map(function (condition) { return _this.getModelAsString(condition); });\n            var joinOperatorTranslateKey = combinedModel.operator === 'AND' ? 'andCondition' : 'orCondition';\n            return customOptions.join(\" \" + translate(joinOperatorTranslateKey, DEFAULT_FILTER_LOCALE_TEXT[joinOperatorTranslateKey]) + \" \");\n        }\n        else if (model.type === SimpleFilter.BLANK || model.type === SimpleFilter.NOT_BLANK) {\n            return translate(model.type, model.type);\n        }\n        else {\n            var condition = model;\n            var customOption = this.optionsFactory.getCustomOption(condition.type);\n            // For custom filter options we display the Name of the filter instead\n            // of displaying the `from` value, as it wouldn't be relevant\n            var _a = customOption || {}, displayKey = _a.displayKey, displayName = _a.displayName, numberOfInputs = _a.numberOfInputs;\n            if (displayKey && displayName && numberOfInputs === 0) {\n                translate(displayKey, displayName);\n                return displayName;\n            }\n            return this.conditionToString(condition, customOption);\n        }\n    };\n    return SimpleFilterModelFormatter;\n}());\n/**\n * Every filter with a dropdown where the user can specify a comparing type against the filter values.\n *\n * @param M type of filter-model managed by the concrete sub-class that extends this type\n * @param V type of value managed by the concrete sub-class that extends this type\n * @param E type of UI element used for collecting user-input\n */\nvar SimpleFilter = /** @class */ (function (_super) {\n    __extends$2y(SimpleFilter, _super);\n    function SimpleFilter() {\n        var _this = _super !== null && _super.apply(this, arguments) || this;\n        _this.eTypes = [];\n        _this.eJoinOperatorPanels = [];\n        _this.eJoinOperatorsAnd = [];\n        _this.eJoinOperatorsOr = [];\n        _this.eConditionBodies = [];\n        _this.listener = function () { return _this.onUiChanged(); };\n        _this.lastUiCompletePosition = null;\n        _this.joinOperatorId = 0;\n        return _this;\n    }\n    SimpleFilter.prototype.getNumberOfInputs = function (type) {\n        var customOpts = this.optionsFactory.getCustomOption(type);\n        if (customOpts) {\n            var numberOfInputs = customOpts.numberOfInputs;\n            return numberOfInputs != null ? numberOfInputs : 1;\n        }\n        var zeroInputTypes = [\n            SimpleFilter.EMPTY, SimpleFilter.NOT_BLANK, SimpleFilter.BLANK,\n        ];\n        if (type && zeroInputTypes.indexOf(type) >= 0) {\n            return 0;\n        }\n        else if (type === SimpleFilter.IN_RANGE) {\n            return 2;\n        }\n        return 1;\n    };\n    // floating filter calls this when user applies filter from floating filter\n    SimpleFilter.prototype.onFloatingFilterChanged = function (type, value) {\n        this.setTypeFromFloatingFilter(type);\n        this.setValueFromFloatingFilter(value);\n        this.onUiChanged(true);\n    };\n    SimpleFilter.prototype.setTypeFromFloatingFilter = function (type) {\n        var _this = this;\n        this.eTypes.forEach(function (eType, position) {\n            if (position === 0) {\n                eType.setValue(type, true);\n            }\n            else {\n                eType.setValue(_this.optionsFactory.getDefaultOption(), true);\n            }\n        });\n    };\n    SimpleFilter.prototype.getModelFromUi = function () {\n        var conditions = this.getUiCompleteConditions();\n        if (conditions.length === 0) {\n            return null;\n        }\n        if (this.maxNumConditions > 1 && conditions.length > 1) {\n            return {\n                filterType: this.getFilterType(),\n                operator: this.getJoinOperator(),\n                condition1: conditions[0],\n                condition2: conditions[1],\n                conditions: conditions\n            };\n        }\n        return conditions[0];\n    };\n    SimpleFilter.prototype.getConditionTypes = function () {\n        return this.eTypes.map(function (eType) { return eType.getValue(); });\n    };\n    SimpleFilter.prototype.getConditionType = function (position) {\n        return this.eTypes[position].getValue();\n    };\n    SimpleFilter.prototype.getJoinOperator = function () {\n        if (this.eJoinOperatorsOr.length === 0) {\n            return this.defaultJoinOperator;\n        }\n        return this.eJoinOperatorsOr[0].getValue() === true ? 'OR' : 'AND';\n    };\n    SimpleFilter.prototype.areModelsEqual = function (a, b) {\n        var _this = this;\n        // both are missing\n        if (!a && !b) {\n            return true;\n        }\n        // one is missing, other present\n        if ((!a && b) || (a && !b)) {\n            return false;\n        }\n        // one is combined, the other is not\n        var aIsSimple = !a.operator;\n        var bIsSimple = !b.operator;\n        var oneSimpleOneCombined = (!aIsSimple && bIsSimple) || (aIsSimple && !bIsSimple);\n        if (oneSimpleOneCombined) {\n            return false;\n        }\n        var res;\n        // otherwise both present, so compare\n        if (aIsSimple) {\n            var aSimple = a;\n            var bSimple = b;\n            res = this.areSimpleModelsEqual(aSimple, bSimple);\n        }\n        else {\n            var aCombined = a;\n            var bCombined = b;\n            res = aCombined.operator === bCombined.operator\n                && areEqual(aCombined.conditions, bCombined.conditions, function (aModel, bModel) { return _this.areSimpleModelsEqual(aModel, bModel); });\n        }\n        return res;\n    };\n    SimpleFilter.prototype.setModelIntoUi = function (model) {\n        var _this = this;\n        var isCombined = model.operator;\n        if (isCombined) {\n            var combinedModel = model;\n            if (!combinedModel.conditions) {\n                combinedModel.conditions = [\n                    combinedModel.condition1,\n                    combinedModel.condition2\n                ];\n            }\n            var numConditions = this.validateAndUpdateConditions(combinedModel.conditions);\n            var numPrevConditions = this.getNumConditions();\n            if (numConditions < numPrevConditions) {\n                this.removeConditionsAndOperators(numConditions);\n            }\n            else if (numConditions > numPrevConditions) {\n                for (var i = numPrevConditions; i < numConditions; i++) {\n                    this.createJoinOperatorPanel();\n                    this.createOption();\n                }\n            }\n            var orChecked_1 = combinedModel.operator === 'OR';\n            this.eJoinOperatorsAnd.forEach(function (eJoinOperatorAnd) { return eJoinOperatorAnd.setValue(!orChecked_1, true); });\n            this.eJoinOperatorsOr.forEach(function (eJoinOperatorOr) { return eJoinOperatorOr.setValue(orChecked_1, true); });\n            combinedModel.conditions.forEach(function (condition, position) {\n                _this.eTypes[position].setValue(condition.type, true);\n                _this.setConditionIntoUi(condition, position);\n            });\n        }\n        else {\n            var simpleModel = model;\n            if (this.getNumConditions() > 1) {\n                this.removeConditionsAndOperators(1);\n            }\n            this.eTypes[0].setValue(simpleModel.type, true);\n            this.setConditionIntoUi(simpleModel, 0);\n        }\n        this.lastUiCompletePosition = this.getNumConditions() - 1;\n        this.createMissingConditionsAndOperators();\n        this.onUiChanged();\n        return AgPromise.resolve();\n    };\n    SimpleFilter.prototype.validateAndUpdateConditions = function (conditions) {\n        var numConditions = conditions.length;\n        if (numConditions > this.maxNumConditions) {\n            conditions.splice(this.maxNumConditions);\n            doOnce(function () { return console.warn('AG Grid: Filter Model contains more conditions than \"filterParams.maxNumConditions\". Additional conditions have been ignored.'); }, 'simpleFilterSetModelMaxNumConditions');\n            numConditions = this.maxNumConditions;\n        }\n        return numConditions;\n    };\n    SimpleFilter.prototype.doesFilterPass = function (params) {\n        var _this = this;\n        var _a;\n        var model = this.getModel();\n        if (model == null) {\n            return true;\n        }\n        var operator = model.operator;\n        var models = [];\n        if (operator) {\n            var combinedModel = model;\n            models.push.apply(models, __spread$j(((_a = combinedModel.conditions) !== null && _a !== void 0 ? _a : [])));\n        }\n        else {\n            models.push(model);\n        }\n        var combineFunction = operator && operator === 'OR' ? 'some' : 'every';\n        return models[combineFunction](function (m) { return _this.individualConditionPasses(params, m); });\n    };\n    SimpleFilter.prototype.setParams = function (params) {\n        _super.prototype.setParams.call(this, params);\n        this.setNumConditions(params);\n        this.defaultJoinOperator = this.getDefaultJoinOperator(params.defaultJoinOperator);\n        this.filterPlaceholder = params.filterPlaceholder;\n        this.optionsFactory = new OptionsFactory();\n        this.optionsFactory.init(params, this.getDefaultFilterOptions());\n        this.createOption();\n        this.createMissingConditionsAndOperators();\n    };\n    SimpleFilter.prototype.setNumConditions = function (params) {\n        var _a, _b;\n        if (params.suppressAndOrCondition != null) {\n            doOnce(function () { return console.warn('AG Grid: Since v29.2 \"filterParams.suppressAndOrCondition\" is deprecated. Use \"filterParams.maxNumConditions = 1\" instead.'); }, 'simpleFilterSuppressAndOrCondition');\n        }\n        if (params.alwaysShowBothConditions != null) {\n            doOnce(function () { return console.warn('AG Grid: Since v29.2 \"filterParams.alwaysShowBothConditions\" is deprecated. Use \"filterParams.numAlwaysVisibleConditions = 2\" instead.'); }, 'simpleFilterAlwaysShowBothConditions');\n        }\n        this.maxNumConditions = (_a = params.maxNumConditions) !== null && _a !== void 0 ? _a : (params.suppressAndOrCondition ? 1 : 2);\n        if (this.maxNumConditions < 1) {\n            doOnce(function () { return console.warn('AG Grid: \"filterParams.maxNumConditions\" must be greater than or equal to zero.'); }, 'simpleFilterMaxNumConditions');\n            this.maxNumConditions = 1;\n        }\n        this.numAlwaysVisibleConditions = (_b = params.numAlwaysVisibleConditions) !== null && _b !== void 0 ? _b : (params.alwaysShowBothConditions ? 2 : 1);\n        if (this.numAlwaysVisibleConditions < 1) {\n            doOnce(function () { return console.warn('AG Grid: \"filterParams.numAlwaysVisibleConditions\" must be greater than or equal to zero.'); }, 'simpleFilterNumAlwaysVisibleConditions');\n            this.numAlwaysVisibleConditions = 1;\n        }\n        if (this.numAlwaysVisibleConditions > this.maxNumConditions) {\n            doOnce(function () { return console.warn('AG Grid: \"filterParams.numAlwaysVisibleConditions\" cannot be greater than \"filterParams.maxNumConditions\".'); }, 'simpleFilterNumAlwaysVisibleGreaterThanMaxNumConditions');\n            this.numAlwaysVisibleConditions = this.maxNumConditions;\n        }\n    };\n    SimpleFilter.prototype.createOption = function () {\n        var _this = this;\n        var eType = this.createManagedBean(new AgSelect());\n        this.eTypes.push(eType);\n        eType.addCssClass('ag-filter-select');\n        this.eFilterBody.appendChild(eType.getGui());\n        var eConditionBody = this.createValueElement();\n        this.eConditionBodies.push(eConditionBody);\n        this.eFilterBody.appendChild(eConditionBody);\n        this.putOptionsIntoDropdown(eType);\n        this.resetType(eType);\n        var position = this.getNumConditions() - 1;\n        this.forEachPositionInput(position, function (element) { return _this.resetInput(element); });\n        this.addChangedListeners(eType, position);\n    };\n    SimpleFilter.prototype.createJoinOperatorPanel = function () {\n        var eJoinOperatorPanel = document.createElement('div');\n        this.eJoinOperatorPanels.push(eJoinOperatorPanel);\n        eJoinOperatorPanel.classList.add('ag-filter-condition');\n        var eJoinOperatorAnd = this.createJoinOperator(this.eJoinOperatorsAnd, eJoinOperatorPanel, 'and');\n        var eJoinOperatorOr = this.createJoinOperator(this.eJoinOperatorsOr, eJoinOperatorPanel, 'or');\n        this.eFilterBody.appendChild(eJoinOperatorPanel);\n        var index = this.eJoinOperatorPanels.length - 1;\n        var uniqueGroupId = this.joinOperatorId++;\n        this.resetJoinOperatorAnd(eJoinOperatorAnd, index, uniqueGroupId);\n        this.resetJoinOperatorOr(eJoinOperatorOr, index, uniqueGroupId);\n        if (!this.isReadOnly()) {\n            eJoinOperatorAnd.onValueChange(this.listener);\n            eJoinOperatorOr.onValueChange(this.listener);\n        }\n    };\n    SimpleFilter.prototype.createJoinOperator = function (eJoinOperators, eJoinOperatorPanel, andOr) {\n        var eJoinOperator = this.createManagedBean(new AgRadioButton());\n        eJoinOperators.push(eJoinOperator);\n        eJoinOperator.addCssClass('ag-filter-condition-operator');\n        eJoinOperator.addCssClass(\"ag-filter-condition-operator-\" + andOr);\n        eJoinOperatorPanel.appendChild(eJoinOperator.getGui());\n        return eJoinOperator;\n    };\n    SimpleFilter.prototype.getDefaultJoinOperator = function (defaultJoinOperator) {\n        return defaultJoinOperator === 'AND' || defaultJoinOperator === 'OR' ? defaultJoinOperator : 'AND';\n    };\n    SimpleFilter.prototype.putOptionsIntoDropdown = function (eType) {\n        var _this = this;\n        var filterOptions = this.optionsFactory.getFilterOptions();\n        // Add specified options to all condition drop-downs.\n        filterOptions.forEach(function (option) {\n            var listOption = typeof option === 'string' ?\n                _this.createBoilerplateListOption(option) :\n                _this.createCustomListOption(option);\n            eType.addOption(listOption);\n        });\n        // Make drop-downs read-only if there is only one option.\n        eType.setDisabled(filterOptions.length <= 1);\n    };\n    SimpleFilter.prototype.createBoilerplateListOption = function (option) {\n        return { value: option, text: this.translate(option) };\n    };\n    SimpleFilter.prototype.createCustomListOption = function (option) {\n        var displayKey = option.displayKey;\n        var customOption = this.optionsFactory.getCustomOption(option.displayKey);\n        return {\n            value: displayKey,\n            text: customOption ?\n                this.localeService.getLocaleTextFunc()(customOption.displayKey, customOption.displayName) :\n                this.translate(displayKey),\n        };\n    };\n    /**\n     * @deprecated As of v29.2 filters can have more than two conditions. Check `colDef.filterParams.maxNumConditions` instead.\n     */\n    SimpleFilter.prototype.isAllowTwoConditions = function () {\n        return this.maxNumConditions >= 2;\n    };\n    SimpleFilter.prototype.createBodyTemplate = function () {\n        // created dynamically\n        return '';\n    };\n    SimpleFilter.prototype.getCssIdentifier = function () {\n        return 'simple-filter';\n    };\n    SimpleFilter.prototype.updateUiVisibility = function () {\n        var joinOperator = this.getJoinOperator();\n        this.updateNumConditions();\n        // from here, the number of elements in all the collections is correct, so can just update the values/statuses\n        this.updateConditionStatusesAndValues(this.lastUiCompletePosition, joinOperator);\n    };\n    SimpleFilter.prototype.updateNumConditions = function () {\n        var _a;\n        // Collection sizes are already correct if updated via API, so only need to handle UI updates here\n        var lastUiCompletePosition = -1;\n        var areAllConditionsUiComplete = true;\n        for (var position = 0; position < this.getNumConditions(); position++) {\n            if (this.isConditionUiComplete(position)) {\n                lastUiCompletePosition = position;\n            }\n            else {\n                areAllConditionsUiComplete = false;\n            }\n        }\n        if (this.shouldAddNewConditionAtEnd(areAllConditionsUiComplete)) {\n            this.createJoinOperatorPanel();\n            this.createOption();\n        }\n        else {\n            var activePosition = (_a = this.lastUiCompletePosition) !== null && _a !== void 0 ? _a : this.getNumConditions() - 2;\n            if (lastUiCompletePosition < activePosition) {\n                // remove any incomplete conditions at the end, excluding the active position\n                this.removeConditionsAndOperators(activePosition + 1);\n                var removeStartPosition = lastUiCompletePosition + 1;\n                var numConditionsToRemove = activePosition - removeStartPosition;\n                if (numConditionsToRemove > 0) {\n                    this.removeConditionsAndOperators(removeStartPosition, numConditionsToRemove);\n                }\n                this.createMissingConditionsAndOperators();\n            }\n        }\n        this.lastUiCompletePosition = lastUiCompletePosition;\n    };\n    SimpleFilter.prototype.updateConditionStatusesAndValues = function (lastUiCompletePosition, joinOperator) {\n        var _this = this;\n        this.eTypes.forEach(function (eType, position) {\n            var disabled = _this.isConditionDisabled(position, lastUiCompletePosition);\n            var group = position === 1 ? [eType, _this.eJoinOperatorPanels[0], _this.eJoinOperatorsAnd[0], _this.eJoinOperatorsOr[0]] : [eType];\n            group.forEach(function (element) {\n                if (element instanceof AgAbstractInputField || element instanceof AgSelect) {\n                    element.setDisabled(disabled);\n                }\n                else {\n                    setDisabled(element, disabled);\n                }\n            });\n        });\n        this.eConditionBodies.forEach(function (element, index) {\n            setDisplayed(element, _this.isConditionBodyVisible(index));\n        });\n        var orChecked = (joinOperator !== null && joinOperator !== void 0 ? joinOperator : this.getJoinOperator()) === 'OR';\n        this.eJoinOperatorsAnd.forEach(function (eJoinOperatorAnd, index) {\n            eJoinOperatorAnd.setValue(!orChecked, true);\n        });\n        this.eJoinOperatorsOr.forEach(function (eJoinOperatorOr, index) {\n            eJoinOperatorOr.setValue(orChecked, true);\n        });\n        this.forEachInput(function (element, index, position, numberOfInputs) {\n            _this.setElementDisplayed(element, index < numberOfInputs);\n            _this.setElementDisabled(element, _this.isConditionDisabled(position, lastUiCompletePosition));\n        });\n        this.resetPlaceholder();\n    };\n    SimpleFilter.prototype.shouldAddNewConditionAtEnd = function (areAllConditionsUiComplete) {\n        return areAllConditionsUiComplete && this.getNumConditions() < this.maxNumConditions && !this.isReadOnly();\n    };\n    SimpleFilter.prototype.removeConditionsAndOperators = function (startPosition, deleteCount) {\n        if (startPosition >= this.getNumConditions()) {\n            return;\n        }\n        this.removeComponents(this.eTypes, startPosition, deleteCount);\n        this.removeElements(this.eConditionBodies, startPosition, deleteCount);\n        this.removeValueElements(startPosition, deleteCount);\n        var joinOperatorIndex = Math.max(startPosition - 1, 0);\n        this.removeElements(this.eJoinOperatorPanels, joinOperatorIndex, deleteCount);\n        this.removeComponents(this.eJoinOperatorsAnd, joinOperatorIndex, deleteCount);\n        this.removeComponents(this.eJoinOperatorsOr, joinOperatorIndex, deleteCount);\n    };\n    SimpleFilter.prototype.removeElements = function (elements, startPosition, deleteCount) {\n        var removedElements = this.removeItems(elements, startPosition, deleteCount);\n        removedElements.forEach(function (element) { return removeFromParent(element); });\n    };\n    SimpleFilter.prototype.removeComponents = function (components, startPosition, deleteCount) {\n        var _this = this;\n        var removedComponents = this.removeItems(components, startPosition, deleteCount);\n        removedComponents.forEach(function (comp) {\n            removeFromParent(comp.getGui());\n            _this.destroyBean(comp);\n        });\n    };\n    SimpleFilter.prototype.removeItems = function (items, startPosition, deleteCount) {\n        return deleteCount == null ? items.splice(startPosition) : items.splice(startPosition, deleteCount);\n    };\n    SimpleFilter.prototype.afterGuiAttached = function (params) {\n        _super.prototype.afterGuiAttached.call(this, params);\n        this.resetPlaceholder();\n        if (!params || (!params.suppressFocus && !this.isReadOnly())) {\n            var firstInput = this.getInputs(0)[0];\n            if (!firstInput) {\n                return;\n            }\n            if (firstInput instanceof AgAbstractInputField) {\n                firstInput.getInputElement().focus();\n            }\n        }\n    };\n    SimpleFilter.prototype.afterGuiDetached = function () {\n        _super.prototype.afterGuiDetached.call(this);\n        var appliedModel = this.getModel();\n        if (!this.areModelsEqual(appliedModel, this.getModelFromUi())) {\n            this.resetUiToActiveModel(appliedModel);\n        }\n        // remove incomplete positions\n        var lastUiCompletePosition = -1;\n        // as we remove incomplete positions, the last UI complete position will change\n        var updatedLastUiCompletePosition = -1;\n        var conditionsRemoved = false;\n        var joinOperator = this.getJoinOperator();\n        for (var position = this.getNumConditions() - 1; position >= 0; position--) {\n            if (this.isConditionUiComplete(position)) {\n                if (lastUiCompletePosition === -1) {\n                    lastUiCompletePosition = position;\n                    updatedLastUiCompletePosition = position;\n                }\n            }\n            else {\n                var shouldRemovePositionAtEnd = position >= this.numAlwaysVisibleConditions && !this.isConditionUiComplete(position - 1);\n                var positionBeforeLastUiCompletePosition = position < lastUiCompletePosition;\n                if (shouldRemovePositionAtEnd || positionBeforeLastUiCompletePosition) {\n                    this.removeConditionsAndOperators(position, 1);\n                    conditionsRemoved = true;\n                    if (positionBeforeLastUiCompletePosition) {\n                        updatedLastUiCompletePosition--;\n                    }\n                }\n            }\n        }\n        var shouldUpdateConditionStatusesAndValues = false;\n        if (this.getNumConditions() < this.numAlwaysVisibleConditions) {\n            // if conditions have been removed, need to recreate new ones at the end up to the number required\n            this.createMissingConditionsAndOperators();\n            shouldUpdateConditionStatusesAndValues = true;\n        }\n        if (this.shouldAddNewConditionAtEnd(updatedLastUiCompletePosition === this.getNumConditions() - 1)) {\n            this.createJoinOperatorPanel();\n            this.createOption();\n            shouldUpdateConditionStatusesAndValues = true;\n        }\n        if (shouldUpdateConditionStatusesAndValues) {\n            this.updateConditionStatusesAndValues(updatedLastUiCompletePosition, joinOperator);\n        }\n        if (conditionsRemoved) {\n            this.updateJoinOperatorsDisabled();\n        }\n        this.lastUiCompletePosition = updatedLastUiCompletePosition;\n    };\n    SimpleFilter.prototype.getPlaceholderText = function (defaultPlaceholder, position) {\n        var placeholder = this.translate(defaultPlaceholder);\n        if (isFunction(this.filterPlaceholder)) {\n            var filterPlaceholderFn = this.filterPlaceholder;\n            var filterOptionKey = this.eTypes[position].getValue();\n            var filterOption = this.translate(filterOptionKey);\n            placeholder = filterPlaceholderFn({\n                filterOptionKey: filterOptionKey,\n                filterOption: filterOption,\n                placeholder: placeholder\n            });\n        }\n        else if (typeof this.filterPlaceholder === 'string') {\n            placeholder = this.filterPlaceholder;\n        }\n        return placeholder;\n    };\n    // allow sub-classes to reset HTML placeholders after UI update.\n    SimpleFilter.prototype.resetPlaceholder = function () {\n        var _this = this;\n        var globalTranslate = this.localeService.getLocaleTextFunc();\n        this.forEachInput(function (element, index, position, numberOfInputs) {\n            if (!(element instanceof AgAbstractInputField)) {\n                return;\n            }\n            var placeholder = index === 0 && numberOfInputs > 1 ? 'inRangeStart' :\n                index === 0 ? 'filterOoo' :\n                    'inRangeEnd';\n            var ariaLabel = index === 0 && numberOfInputs > 1 ? globalTranslate('ariaFilterFromValue', 'Filter from value') :\n                index === 0 ? globalTranslate('ariaFilterValue', 'Filter Value') :\n                    globalTranslate('ariaFilterToValue', 'Filter to Value');\n            element.setInputPlaceholder(_this.getPlaceholderText(placeholder, position));\n            element.setInputAriaLabel(ariaLabel);\n        });\n    };\n    SimpleFilter.prototype.setElementValue = function (element, value) {\n        if (element instanceof AgAbstractInputField) {\n            element.setValue(value != null ? String(value) : null, true);\n        }\n    };\n    SimpleFilter.prototype.setElementDisplayed = function (element, displayed) {\n        if (element instanceof Component) {\n            setDisplayed(element.getGui(), displayed);\n        }\n    };\n    SimpleFilter.prototype.setElementDisabled = function (element, disabled) {\n        if (element instanceof Component) {\n            setDisabled(element.getGui(), disabled);\n        }\n    };\n    SimpleFilter.prototype.attachElementOnChange = function (element, listener) {\n        if (element instanceof AgAbstractInputField) {\n            element.onValueChange(listener);\n        }\n    };\n    SimpleFilter.prototype.forEachInput = function (cb) {\n        var _this = this;\n        this.getConditionTypes().forEach(function (type, position) {\n            _this.forEachPositionTypeInput(position, type, cb);\n        });\n    };\n    SimpleFilter.prototype.forEachPositionInput = function (position, cb) {\n        var type = this.getConditionType(position);\n        this.forEachPositionTypeInput(position, type, cb);\n    };\n    SimpleFilter.prototype.forEachPositionTypeInput = function (position, type, cb) {\n        var numberOfInputs = this.getNumberOfInputs(type);\n        var inputs = this.getInputs(position);\n        for (var index = 0; index < inputs.length; index++) {\n            var input = inputs[index];\n            if (input != null) {\n                cb(input, index, position, numberOfInputs);\n            }\n        }\n    };\n    SimpleFilter.prototype.isConditionDisabled = function (position, lastUiCompletePosition) {\n        if (this.isReadOnly()) {\n            return true;\n        } // Read-only mode trumps everything.\n        if (position === 0) {\n            return false;\n        } // Position 0 should typically be editable.\n        // Only allow editing of a 2nd or later condition if the previous condition is complete and no subsequent conditions are complete.\n        return position > lastUiCompletePosition + 1;\n    };\n    SimpleFilter.prototype.isConditionBodyVisible = function (position) {\n        // Check that the condition needs inputs.\n        var type = this.getConditionType(position);\n        var numberOfInputs = this.getNumberOfInputs(type);\n        return numberOfInputs > 0;\n    };\n    // returns true if the UI represents a working filter, eg all parts are filled out.\n    // eg if text filter and textfield blank then returns false.\n    SimpleFilter.prototype.isConditionUiComplete = function (position) {\n        if (position >= this.getNumConditions()) {\n            return false;\n        } // Condition doesn't exist.\n        var type = this.getConditionType(position);\n        if (type === SimpleFilter.EMPTY) {\n            return false;\n        }\n        if (this.getValues(position).some(function (v) { return v == null; })) {\n            return false;\n        }\n        return true;\n    };\n    SimpleFilter.prototype.getNumConditions = function () {\n        return this.eTypes.length;\n    };\n    SimpleFilter.prototype.getUiCompleteConditions = function () {\n        var conditions = [];\n        for (var position = 0; position < this.getNumConditions(); position++) {\n            if (this.isConditionUiComplete(position)) {\n                conditions.push(this.createCondition(position));\n            }\n        }\n        return conditions;\n    };\n    SimpleFilter.prototype.createMissingConditionsAndOperators = function () {\n        if (this.isReadOnly()) {\n            return;\n        } // don't show incomplete conditions when read only\n        for (var i = this.getNumConditions(); i < this.numAlwaysVisibleConditions; i++) {\n            this.createJoinOperatorPanel();\n            this.createOption();\n        }\n    };\n    SimpleFilter.prototype.resetUiToDefaults = function (silent) {\n        var _this = this;\n        this.removeConditionsAndOperators(this.isReadOnly() ? 1 : this.numAlwaysVisibleConditions);\n        this.eTypes.forEach(function (eType) { return _this.resetType(eType); });\n        this.eJoinOperatorsAnd.forEach(function (eJoinOperatorAnd, index) { return _this.resetJoinOperatorAnd(eJoinOperatorAnd, index, _this.joinOperatorId + index); });\n        this.eJoinOperatorsOr.forEach(function (eJoinOperatorOr, index) { return _this.resetJoinOperatorOr(eJoinOperatorOr, index, _this.joinOperatorId + index); });\n        this.joinOperatorId++;\n        this.forEachInput(function (element) { return _this.resetInput(element); });\n        this.resetPlaceholder();\n        this.createMissingConditionsAndOperators();\n        this.lastUiCompletePosition = null;\n        if (!silent) {\n            this.onUiChanged();\n        }\n        return AgPromise.resolve();\n    };\n    SimpleFilter.prototype.resetType = function (eType) {\n        var translate = this.localeService.getLocaleTextFunc();\n        var filteringLabel = translate('ariaFilteringOperator', 'Filtering operator');\n        eType\n            .setValue(this.optionsFactory.getDefaultOption(), true)\n            .setAriaLabel(filteringLabel)\n            .setDisabled(this.isReadOnly());\n    };\n    SimpleFilter.prototype.resetJoinOperatorAnd = function (eJoinOperatorAnd, index, uniqueGroupId) {\n        this.resetJoinOperator(eJoinOperatorAnd, index, this.isDefaultOperator('AND'), this.translate('andCondition'), uniqueGroupId);\n    };\n    SimpleFilter.prototype.resetJoinOperatorOr = function (eJoinOperatorOr, index, uniqueGroupId) {\n        this.resetJoinOperator(eJoinOperatorOr, index, this.isDefaultOperator('OR'), this.translate('orCondition'), uniqueGroupId);\n    };\n    SimpleFilter.prototype.resetJoinOperator = function (eJoinOperator, index, value, label, uniqueGroupId) {\n        this.updateJoinOperatorDisabled(eJoinOperator\n            .setValue(value, true)\n            .setName(\"ag-simple-filter-and-or-\" + this.getCompId() + \"-\" + uniqueGroupId)\n            .setLabel(label), index);\n    };\n    SimpleFilter.prototype.updateJoinOperatorsDisabled = function () {\n        var _this = this;\n        this.eJoinOperatorsAnd.forEach(function (eJoinOperator, index) { return _this.updateJoinOperatorDisabled(eJoinOperator, index); });\n        this.eJoinOperatorsOr.forEach(function (eJoinOperator, index) { return _this.updateJoinOperatorDisabled(eJoinOperator, index); });\n    };\n    SimpleFilter.prototype.updateJoinOperatorDisabled = function (eJoinOperator, index) {\n        eJoinOperator.setDisabled(this.isReadOnly() || index > 0);\n    };\n    SimpleFilter.prototype.resetInput = function (element) {\n        this.setElementValue(element, null);\n        this.setElementDisabled(element, this.isReadOnly());\n    };\n    // puts model values into the UI\n    SimpleFilter.prototype.setConditionIntoUi = function (model, position) {\n        var _this = this;\n        var values = this.mapValuesFromModel(model);\n        this.forEachInput(function (element, index, elPosition, _) {\n            if (elPosition !== position) {\n                return;\n            }\n            _this.setElementValue(element, values[index] != null ? values[index] : null);\n        });\n    };\n    // after floating filter changes, this sets the 'value' section. this is implemented by the base class\n    // (as that's where value is controlled), the 'type' part from the floating filter is dealt with in this class.\n    SimpleFilter.prototype.setValueFromFloatingFilter = function (value) {\n        var _this = this;\n        this.forEachInput(function (element, index, position, _) {\n            _this.setElementValue(element, index === 0 && position === 0 ? value : null);\n        });\n    };\n    SimpleFilter.prototype.isDefaultOperator = function (operator) {\n        return operator === this.defaultJoinOperator;\n    };\n    SimpleFilter.prototype.addChangedListeners = function (eType, position) {\n        var _this = this;\n        if (this.isReadOnly()) {\n            return;\n        }\n        eType.onValueChange(this.listener);\n        this.forEachPositionInput(position, function (element) {\n            _this.attachElementOnChange(element, _this.listener);\n        });\n    };\n    /** returns true if the row passes the said condition */\n    SimpleFilter.prototype.individualConditionPasses = function (params, filterModel) {\n        var cellValue = this.getCellValue(params.node);\n        var values = this.mapValuesFromModel(filterModel);\n        var customFilterOption = this.optionsFactory.getCustomOption(filterModel.type);\n        var customFilterResult = this.evaluateCustomFilter(customFilterOption, values, cellValue);\n        if (customFilterResult != null) {\n            return customFilterResult;\n        }\n        if (cellValue == null) {\n            return this.evaluateNullValue(filterModel.type);\n        }\n        return this.evaluateNonNullValue(values, cellValue, filterModel, params);\n    };\n    SimpleFilter.prototype.evaluateCustomFilter = function (customFilterOption, values, cellValue) {\n        if (customFilterOption == null) {\n            return;\n        }\n        var predicate = customFilterOption.predicate;\n        // only execute the custom filter if a value exists or a value isn't required, i.e. input is hidden\n        if (predicate != null && !values.some(function (v) { return v == null; })) {\n            return predicate(values, cellValue);\n        }\n        // No custom filter invocation, indicate that to the caller.\n        return;\n    };\n    SimpleFilter.prototype.isBlank = function (cellValue) {\n        return cellValue == null ||\n            (typeof cellValue === 'string' && cellValue.trim().length === 0);\n    };\n    SimpleFilter.EMPTY = 'empty';\n    SimpleFilter.BLANK = 'blank';\n    SimpleFilter.NOT_BLANK = 'notBlank';\n    SimpleFilter.EQUALS = 'equals';\n    SimpleFilter.NOT_EQUAL = 'notEqual';\n    SimpleFilter.LESS_THAN = 'lessThan';\n    SimpleFilter.LESS_THAN_OR_EQUAL = 'lessThanOrEqual';\n    SimpleFilter.GREATER_THAN = 'greaterThan';\n    SimpleFilter.GREATER_THAN_OR_EQUAL = 'greaterThanOrEqual';\n    SimpleFilter.IN_RANGE = 'inRange';\n    SimpleFilter.CONTAINS = 'contains';\n    SimpleFilter.NOT_CONTAINS = 'notContains';\n    SimpleFilter.STARTS_WITH = 'startsWith';\n    SimpleFilter.ENDS_WITH = 'endsWith';\n    return SimpleFilter;\n}(ProvidedFilter));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$2x = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar ScalarFilter = /** @class */ (function (_super) {\n    __extends$2x(ScalarFilter, _super);\n    function ScalarFilter() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    ScalarFilter.prototype.setParams = function (params) {\n        _super.prototype.setParams.call(this, params);\n        this.scalarFilterParams = params;\n    };\n    ScalarFilter.prototype.evaluateNullValue = function (filterType) {\n        switch (filterType) {\n            case ScalarFilter.EQUALS:\n            case ScalarFilter.NOT_EQUAL:\n                if (this.scalarFilterParams.includeBlanksInEquals) {\n                    return true;\n                }\n                break;\n            case ScalarFilter.GREATER_THAN:\n            case ScalarFilter.GREATER_THAN_OR_EQUAL:\n                if (this.scalarFilterParams.includeBlanksInGreaterThan) {\n                    return true;\n                }\n                break;\n            case ScalarFilter.LESS_THAN:\n            case ScalarFilter.LESS_THAN_OR_EQUAL:\n                if (this.scalarFilterParams.includeBlanksInLessThan) {\n                    return true;\n                }\n                break;\n            case ScalarFilter.IN_RANGE:\n                if (this.scalarFilterParams.includeBlanksInRange) {\n                    return true;\n                }\n                break;\n            case ScalarFilter.BLANK:\n                return true;\n            case ScalarFilter.NOT_BLANK:\n                return false;\n        }\n        return false;\n    };\n    ScalarFilter.prototype.evaluateNonNullValue = function (values, cellValue, filterModel) {\n        var comparator = this.comparator();\n        var compareResult = values[0] != null ? comparator(values[0], cellValue) : 0;\n        switch (filterModel.type) {\n            case ScalarFilter.EQUALS:\n                return compareResult === 0;\n            case ScalarFilter.NOT_EQUAL:\n                return compareResult !== 0;\n            case ScalarFilter.GREATER_THAN:\n                return compareResult > 0;\n            case ScalarFilter.GREATER_THAN_OR_EQUAL:\n                return compareResult >= 0;\n            case ScalarFilter.LESS_THAN:\n                return compareResult < 0;\n            case ScalarFilter.LESS_THAN_OR_EQUAL:\n                return compareResult <= 0;\n            case ScalarFilter.IN_RANGE: {\n                var compareToResult = comparator(values[1], cellValue);\n                return this.scalarFilterParams.inRangeInclusive ?\n                    compareResult >= 0 && compareToResult <= 0 :\n                    compareResult > 0 && compareToResult < 0;\n            }\n            case ScalarFilter.BLANK:\n                return this.isBlank(cellValue);\n            case ScalarFilter.NOT_BLANK:\n                return !this.isBlank(cellValue);\n            default:\n                console.warn('AG Grid: Unexpected type of filter \"' + filterModel.type + '\", it looks like the filter was configured with incorrect Filter Options');\n                return true;\n        }\n    };\n    return ScalarFilter;\n}(SimpleFilter));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$2w = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __assign$g = (undefined && undefined.__assign) || function () {\n    __assign$g = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign$g.apply(this, arguments);\n};\nvar __decorate$2c = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar DEFAULT_MIN_YEAR = 1000;\nvar DEFAULT_MAX_YEAR = Infinity;\nvar DateFilterModelFormatter = /** @class */ (function (_super) {\n    __extends$2w(DateFilterModelFormatter, _super);\n    function DateFilterModelFormatter(dateFilterParams, localeService, optionsFactory) {\n        var _this = _super.call(this, localeService, optionsFactory) || this;\n        _this.dateFilterParams = dateFilterParams;\n        return _this;\n    }\n    DateFilterModelFormatter.prototype.conditionToString = function (condition, options) {\n        var type = condition.type;\n        var numberOfInputs = (options || {}).numberOfInputs;\n        var isRange = type == SimpleFilter.IN_RANGE || numberOfInputs === 2;\n        var dateFrom = parseDateTimeFromString(condition.dateFrom);\n        var dateTo = parseDateTimeFromString(condition.dateTo);\n        var format = this.dateFilterParams.inRangeFloatingFilterDateFormat;\n        if (isRange) {\n            var formattedFrom = dateFrom !== null ? dateToFormattedString(dateFrom, format) : 'null';\n            var formattedTo = dateTo !== null ? dateToFormattedString(dateTo, format) : 'null';\n            return formattedFrom + \"-\" + formattedTo;\n        }\n        if (dateFrom != null) {\n            return dateToFormattedString(dateFrom, format);\n        }\n        // cater for when the type doesn't need a value\n        return \"\" + type;\n    };\n    return DateFilterModelFormatter;\n}(SimpleFilterModelFormatter));\nvar DateFilter = /** @class */ (function (_super) {\n    __extends$2w(DateFilter, _super);\n    function DateFilter() {\n        var _this = _super.call(this, 'dateFilter') || this;\n        _this.eConditionPanelsFrom = [];\n        _this.eConditionPanelsTo = [];\n        _this.dateConditionFromComps = [];\n        _this.dateConditionToComps = [];\n        _this.minValidYear = DEFAULT_MIN_YEAR;\n        _this.maxValidYear = DEFAULT_MAX_YEAR;\n        return _this;\n    }\n    DateFilter.prototype.afterGuiAttached = function (params) {\n        _super.prototype.afterGuiAttached.call(this, params);\n        this.dateConditionFromComps[0].afterGuiAttached(params);\n    };\n    DateFilter.prototype.mapValuesFromModel = function (filterModel) {\n        // unlike the other filters, we do two things here:\n        // 1) allow for different attribute names (same as done for other filters) (eg the 'from' and 'to'\n        //    are in different locations in Date and Number filter models)\n        // 2) convert the type (because Date filter uses Dates, however model is 'string')\n        //\n        // NOTE: The conversion of string to date also removes the timezone - i.e. when user picks\n        //       a date from the UI, it will have timezone info in it. This is lost when creating\n        //       the model. When we recreate the date again here, it's without a timezone.\n        var _a = filterModel || {}, dateFrom = _a.dateFrom, dateTo = _a.dateTo, type = _a.type;\n        return [\n            dateFrom && parseDateTimeFromString(dateFrom) || null,\n            dateTo && parseDateTimeFromString(dateTo) || null,\n        ].slice(0, this.getNumberOfInputs(type));\n    };\n    DateFilter.prototype.comparator = function () {\n        return this.dateFilterParams.comparator ? this.dateFilterParams.comparator : this.defaultComparator.bind(this);\n    };\n    DateFilter.prototype.defaultComparator = function (filterDate, cellValue) {\n        // The default comparator assumes that the cellValue is a date\n        var cellAsDate = cellValue;\n        if (cellValue == null || cellAsDate < filterDate) {\n            return -1;\n        }\n        if (cellAsDate > filterDate) {\n            return 1;\n        }\n        return 0;\n    };\n    DateFilter.prototype.setParams = function (params) {\n        this.dateFilterParams = params;\n        _super.prototype.setParams.call(this, params);\n        var yearParser = function (param, fallback) {\n            if (params[param] != null) {\n                if (!isNaN(params[param])) {\n                    return params[param] == null ? fallback : Number(params[param]);\n                }\n                else {\n                    console.warn(\"AG Grid: DateFilter \" + param + \" is not a number\");\n                }\n            }\n            return fallback;\n        };\n        this.minValidYear = yearParser('minValidYear', DEFAULT_MIN_YEAR);\n        this.maxValidYear = yearParser('maxValidYear', DEFAULT_MAX_YEAR);\n        if (this.minValidYear > this.maxValidYear) {\n            console.warn(\"AG Grid: DateFilter minValidYear should be <= maxValidYear\");\n        }\n        this.filterModelFormatter = new DateFilterModelFormatter(this.dateFilterParams, this.localeService, this.optionsFactory);\n    };\n    DateFilter.prototype.createDateCompWrapper = function (element) {\n        var _this = this;\n        var dateCompWrapper = new DateCompWrapper(this.getContext(), this.userComponentFactory, {\n            onDateChanged: function () { return _this.onUiChanged(); },\n            filterParams: this.dateFilterParams\n        }, element);\n        this.addDestroyFunc(function () { return dateCompWrapper.destroy(); });\n        return dateCompWrapper;\n    };\n    DateFilter.prototype.setElementValue = function (element, value) {\n        element.setDate(value);\n    };\n    DateFilter.prototype.setElementDisplayed = function (element, displayed) {\n        element.setDisplayed(displayed);\n    };\n    DateFilter.prototype.setElementDisabled = function (element, disabled) {\n        element.setDisabled(disabled);\n    };\n    DateFilter.prototype.getDefaultFilterOptions = function () {\n        return DateFilter.DEFAULT_FILTER_OPTIONS;\n    };\n    DateFilter.prototype.createValueElement = function () {\n        var eCondition = document.createElement('div');\n        eCondition.classList.add('ag-filter-body');\n        this.createFromToElement(eCondition, this.eConditionPanelsFrom, this.dateConditionFromComps, 'from');\n        this.createFromToElement(eCondition, this.eConditionPanelsTo, this.dateConditionToComps, 'to');\n        return eCondition;\n    };\n    DateFilter.prototype.createFromToElement = function (eCondition, eConditionPanels, dateConditionComps, fromTo) {\n        var eConditionPanel = document.createElement('div');\n        eConditionPanel.classList.add(\"ag-filter-\" + fromTo);\n        eConditionPanel.classList.add(\"ag-filter-date-\" + fromTo);\n        eConditionPanels.push(eConditionPanel);\n        eCondition.appendChild(eConditionPanel);\n        dateConditionComps.push(this.createDateCompWrapper(eConditionPanel));\n    };\n    DateFilter.prototype.removeValueElements = function (startPosition, deleteCount) {\n        this.removeDateComps(this.dateConditionFromComps, startPosition, deleteCount);\n        this.removeDateComps(this.dateConditionToComps, startPosition, deleteCount);\n        this.removeItems(this.eConditionPanelsFrom, startPosition, deleteCount);\n        this.removeItems(this.eConditionPanelsTo, startPosition, deleteCount);\n    };\n    DateFilter.prototype.removeDateComps = function (components, startPosition, deleteCount) {\n        var removedComponents = this.removeItems(components, startPosition, deleteCount);\n        removedComponents.forEach(function (comp) { return comp.destroy(); });\n    };\n    DateFilter.prototype.isConditionUiComplete = function (position) {\n        var _this = this;\n        if (!_super.prototype.isConditionUiComplete.call(this, position)) {\n            return false;\n        }\n        var isValidDate = function (value) { return value != null\n            && value.getUTCFullYear() >= _this.minValidYear\n            && value.getUTCFullYear() <= _this.maxValidYear; };\n        var valid = true;\n        this.forEachInput(function (element, index, elPosition, numberOfInputs) {\n            if (elPosition !== position || !valid || index >= numberOfInputs) {\n                return;\n            }\n            valid = valid && isValidDate(element.getDate());\n        });\n        return valid;\n    };\n    DateFilter.prototype.areSimpleModelsEqual = function (aSimple, bSimple) {\n        return aSimple.dateFrom === bSimple.dateFrom\n            && aSimple.dateTo === bSimple.dateTo\n            && aSimple.type === bSimple.type;\n    };\n    DateFilter.prototype.getFilterType = function () {\n        return 'date';\n    };\n    DateFilter.prototype.createCondition = function (position) {\n        var type = this.getConditionType(position);\n        var model = {};\n        var values = this.getValues(position);\n        if (values.length > 0) {\n            model.dateFrom = serialiseDate(values[0]);\n        }\n        if (values.length > 1) {\n            model.dateTo = serialiseDate(values[1]);\n        }\n        return __assign$g({ dateFrom: null, dateTo: null, filterType: this.getFilterType(), type: type }, model);\n    };\n    DateFilter.prototype.resetPlaceholder = function () {\n        var globalTranslate = this.localeService.getLocaleTextFunc();\n        var placeholder = this.translate('dateFormatOoo');\n        var ariaLabel = globalTranslate('ariaFilterValue', 'Filter Value');\n        this.forEachInput(function (element) {\n            element.setInputPlaceholder(placeholder);\n            element.setInputAriaLabel(ariaLabel);\n        });\n    };\n    DateFilter.prototype.getInputs = function (position) {\n        if (position >= this.dateConditionFromComps.length) {\n            return [null, null];\n        }\n        return [this.dateConditionFromComps[position], this.dateConditionToComps[position]];\n    };\n    DateFilter.prototype.getValues = function (position) {\n        var result = [];\n        this.forEachPositionInput(position, function (element, index, _elPosition, numberOfInputs) {\n            if (index < numberOfInputs) {\n                result.push(element.getDate());\n            }\n        });\n        return result;\n    };\n    DateFilter.prototype.getModelAsString = function (model) {\n        var _a;\n        return (_a = this.filterModelFormatter.getModelAsString(model)) !== null && _a !== void 0 ? _a : '';\n    };\n    DateFilter.DEFAULT_FILTER_OPTIONS = [\n        ScalarFilter.EQUALS,\n        ScalarFilter.GREATER_THAN,\n        ScalarFilter.LESS_THAN,\n        ScalarFilter.NOT_EQUAL,\n        ScalarFilter.IN_RANGE,\n        ScalarFilter.BLANK,\n        ScalarFilter.NOT_BLANK,\n    ];\n    __decorate$2c([\n        Autowired('userComponentFactory')\n    ], DateFilter.prototype, \"userComponentFactory\", void 0);\n    return DateFilter;\n}(ScalarFilter));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$2v = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar SimpleFloatingFilter = /** @class */ (function (_super) {\n    __extends$2v(SimpleFloatingFilter, _super);\n    function SimpleFloatingFilter() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    SimpleFloatingFilter.prototype.getDefaultDebounceMs = function () {\n        return 0;\n    };\n    // this is a user component, and IComponent has \"public destroy()\" as part of the interface.\n    // so we need to override destroy() just to make the method public.\n    SimpleFloatingFilter.prototype.destroy = function () {\n        _super.prototype.destroy.call(this);\n    };\n    SimpleFloatingFilter.prototype.isEventFromFloatingFilter = function (event) {\n        return event && event.afterFloatingFilter;\n    };\n    SimpleFloatingFilter.prototype.isEventFromDataChange = function (event) {\n        return event === null || event === void 0 ? void 0 : event.afterDataChange;\n    };\n    SimpleFloatingFilter.prototype.getLastType = function () {\n        return this.lastType;\n    };\n    SimpleFloatingFilter.prototype.isReadOnly = function () {\n        return this.readOnly;\n    };\n    SimpleFloatingFilter.prototype.setLastTypeFromModel = function (model) {\n        // if no model provided by the parent filter use default\n        if (!model) {\n            this.lastType = this.optionsFactory.getDefaultOption();\n            return;\n        }\n        var isCombined = model.operator;\n        var condition;\n        if (isCombined) {\n            var combinedModel = model;\n            condition = combinedModel.conditions[0];\n        }\n        else {\n            condition = model;\n        }\n        this.lastType = condition.type;\n    };\n    SimpleFloatingFilter.prototype.canWeEditAfterModelFromParentFilter = function (model) {\n        if (!model) {\n            // if no model, then we can edit as long as the lastType is something we can edit, as this\n            // is the type we will provide to the parent filter if the user decides to use the floating filter.\n            return this.isTypeEditable(this.lastType);\n        }\n        // never allow editing if the filter is combined (ie has two parts)\n        var isCombined = model.operator;\n        if (isCombined) {\n            return false;\n        }\n        var simpleModel = model;\n        return this.isTypeEditable(simpleModel.type);\n    };\n    SimpleFloatingFilter.prototype.init = function (params) {\n        this.optionsFactory = new OptionsFactory();\n        this.optionsFactory.init(params.filterParams, this.getDefaultFilterOptions());\n        this.lastType = this.optionsFactory.getDefaultOption();\n        // readOnly is a property of ProvidedFilterParams - we need to find a better (type-safe)\n        // way to support reading this in the future.\n        this.readOnly = !!params.filterParams.readOnly;\n        // we are editable if:\n        // 1) there is a type (user has configured filter wrong if not type)\n        //  AND\n        // 2) the default type is not 'in range'\n        var editable = this.isTypeEditable(this.lastType);\n        this.setEditable(editable);\n    };\n    SimpleFloatingFilter.prototype.doesFilterHaveSingleInput = function (filterType) {\n        var customFilterOption = this.optionsFactory.getCustomOption(filterType);\n        var numberOfInputs = (customFilterOption || {}).numberOfInputs;\n        return numberOfInputs == null || numberOfInputs == 1;\n    };\n    SimpleFloatingFilter.prototype.isTypeEditable = function (type) {\n        var uneditableTypes = [\n            SimpleFilter.IN_RANGE, SimpleFilter.EMPTY, SimpleFilter.BLANK, SimpleFilter.NOT_BLANK,\n        ];\n        return !!type &&\n            !this.isReadOnly() &&\n            this.doesFilterHaveSingleInput(type) &&\n            uneditableTypes.indexOf(type) < 0;\n    };\n    return SimpleFloatingFilter;\n}(Component));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$2u = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$2b = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar DateFloatingFilter = /** @class */ (function (_super) {\n    __extends$2u(DateFloatingFilter, _super);\n    function DateFloatingFilter() {\n        return _super.call(this, /* html */ \"\\n            <div class=\\\"ag-floating-filter-input\\\" role=\\\"presentation\\\">\\n                <ag-input-text-field ref=\\\"eReadOnlyText\\\"></ag-input-text-field>\\n                <div ref=\\\"eDateWrapper\\\" style=\\\"display: flex;\\\"></div>\\n            </div>\") || this;\n    }\n    DateFloatingFilter.prototype.getDefaultFilterOptions = function () {\n        return DateFilter.DEFAULT_FILTER_OPTIONS;\n    };\n    DateFloatingFilter.prototype.init = function (params) {\n        _super.prototype.init.call(this, params);\n        this.params = params;\n        this.filterParams = params.filterParams;\n        this.createDateComponent();\n        var translate = this.localeService.getLocaleTextFunc();\n        this.eReadOnlyText\n            .setDisabled(true)\n            .setInputAriaLabel(translate('ariaDateFilterInput', 'Date Filter Input'));\n        this.filterModelFormatter = new DateFilterModelFormatter(this.filterParams, this.localeService, this.optionsFactory);\n    };\n    DateFloatingFilter.prototype.setEditable = function (editable) {\n        setDisplayed(this.eDateWrapper, editable);\n        setDisplayed(this.eReadOnlyText.getGui(), !editable);\n    };\n    DateFloatingFilter.prototype.onParentModelChanged = function (model, event) {\n        // We don't want to update the floating filter if the floating filter caused the change,\n        // because the UI is already in sync. if we didn't do this, the UI would behave strangely\n        // as it would be updating as the user is typing.\n        // This is similar for data changes, which don't affect provided date floating filters\n        if (this.isEventFromFloatingFilter(event) || this.isEventFromDataChange(event)) {\n            return;\n        }\n        _super.prototype.setLastTypeFromModel.call(this, model);\n        var allowEditing = !this.isReadOnly() &&\n            this.canWeEditAfterModelFromParentFilter(model);\n        this.setEditable(allowEditing);\n        if (allowEditing) {\n            if (model) {\n                var dateModel = model;\n                this.dateComp.setDate(parseDateTimeFromString(dateModel.dateFrom));\n            }\n            else {\n                this.dateComp.setDate(null);\n            }\n            this.eReadOnlyText.setValue('');\n        }\n        else {\n            this.eReadOnlyText.setValue(this.filterModelFormatter.getModelAsString(model));\n            this.dateComp.setDate(null);\n        }\n    };\n    DateFloatingFilter.prototype.onDateChanged = function () {\n        var _this = this;\n        var filterValueDate = this.dateComp.getDate();\n        var filterValueText = serialiseDate(filterValueDate);\n        this.params.parentFilterInstance(function (filterInstance) {\n            if (filterInstance) {\n                var date = parseDateTimeFromString(filterValueText);\n                filterInstance.onFloatingFilterChanged(_this.getLastType() || null, date);\n            }\n        });\n    };\n    DateFloatingFilter.prototype.createDateComponent = function () {\n        var _this = this;\n        var debounceMs = ProvidedFilter.getDebounceMs(this.params.filterParams, this.getDefaultDebounceMs());\n        var dateComponentParams = {\n            onDateChanged: debounce(this.onDateChanged.bind(this), debounceMs),\n            filterParams: this.params.column.getColDef().filterParams\n        };\n        this.dateComp = new DateCompWrapper(this.getContext(), this.userComponentFactory, dateComponentParams, this.eDateWrapper);\n        this.addDestroyFunc(function () { return _this.dateComp.destroy(); });\n    };\n    DateFloatingFilter.prototype.getFilterModelFormatter = function () {\n        return this.filterModelFormatter;\n    };\n    __decorate$2b([\n        Autowired('userComponentFactory')\n    ], DateFloatingFilter.prototype, \"userComponentFactory\", void 0);\n    __decorate$2b([\n        RefSelector('eReadOnlyText')\n    ], DateFloatingFilter.prototype, \"eReadOnlyText\", void 0);\n    __decorate$2b([\n        RefSelector('eDateWrapper')\n    ], DateFloatingFilter.prototype, \"eDateWrapper\", void 0);\n    return DateFloatingFilter;\n}(SimpleFloatingFilter));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$2t = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$2a = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar DefaultDateComponent = /** @class */ (function (_super) {\n    __extends$2t(DefaultDateComponent, _super);\n    function DefaultDateComponent() {\n        return _super.call(this, /* html */ \"\\n            <div class=\\\"ag-filter-filter\\\">\\n                <ag-input-text-field class=\\\"ag-date-filter\\\" ref=\\\"eDateInput\\\"></ag-input-text-field>\\n            </div>\") || this;\n    }\n    // this is a user component, and IComponent has \"public destroy()\" as part of the interface.\n    // so we need to override destroy() just to make the method public.\n    DefaultDateComponent.prototype.destroy = function () {\n        _super.prototype.destroy.call(this);\n    };\n    DefaultDateComponent.prototype.init = function (params) {\n        var _this = this;\n        var eDocument = this.gridOptionsService.getDocument();\n        var inputElement = this.eDateInput.getInputElement();\n        var shouldUseBrowserDatePicker = this.shouldUseBrowserDatePicker(params);\n        if (shouldUseBrowserDatePicker) {\n            inputElement.type = 'date';\n        }\n        // ensures that the input element is focussed when a clear button is clicked,\n        // unless using safari as there is no clear button and focus does not work properly\n        var usingSafariDatePicker = shouldUseBrowserDatePicker && isBrowserSafari();\n        this.addManagedListener(inputElement, 'mousedown', function () {\n            if (_this.eDateInput.isDisabled() || usingSafariDatePicker) {\n                return;\n            }\n            inputElement.focus();\n        });\n        this.addManagedListener(inputElement, 'input', function (e) {\n            if (e.target !== eDocument.activeElement) {\n                return;\n            }\n            if (_this.eDateInput.isDisabled()) {\n                return;\n            }\n            params.onDateChanged();\n        });\n        var _a = params.filterParams || {}, minValidYear = _a.minValidYear, maxValidYear = _a.maxValidYear;\n        if (minValidYear) {\n            inputElement.min = minValidYear + \"-01-01\";\n        }\n        if (maxValidYear) {\n            inputElement.max = maxValidYear + \"-12-31\";\n        }\n    };\n    DefaultDateComponent.prototype.getDate = function () {\n        return parseDateTimeFromString(this.eDateInput.getValue());\n    };\n    DefaultDateComponent.prototype.setDate = function (date) {\n        this.eDateInput.setValue(serialiseDate(date, false));\n    };\n    DefaultDateComponent.prototype.setInputPlaceholder = function (placeholder) {\n        this.eDateInput.setInputPlaceholder(placeholder);\n    };\n    DefaultDateComponent.prototype.setDisabled = function (disabled) {\n        this.eDateInput.setDisabled(disabled);\n    };\n    DefaultDateComponent.prototype.afterGuiAttached = function (params) {\n        if (!params || !params.suppressFocus) {\n            this.eDateInput.getInputElement().focus();\n        }\n    };\n    DefaultDateComponent.prototype.shouldUseBrowserDatePicker = function (params) {\n        if (params.filterParams && params.filterParams.browserDatePicker != null) {\n            return params.filterParams.browserDatePicker;\n        }\n        return isBrowserChrome() || isBrowserFirefox() || (isBrowserSafari() && getSafariVersion() >= 14.1);\n    };\n    __decorate$2a([\n        RefSelector('eDateInput')\n    ], DefaultDateComponent.prototype, \"eDateInput\", void 0);\n    return DefaultDateComponent;\n}(Component));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$2s = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar AgInputTextField = /** @class */ (function (_super) {\n    __extends$2s(AgInputTextField, _super);\n    function AgInputTextField(config, className, inputType) {\n        if (className === void 0) { className = 'ag-text-field'; }\n        if (inputType === void 0) { inputType = 'text'; }\n        return _super.call(this, config, className, inputType) || this;\n    }\n    AgInputTextField.prototype.postConstruct = function () {\n        _super.prototype.postConstruct.call(this);\n        if (this.config.allowedCharPattern) {\n            this.preventDisallowedCharacters();\n        }\n    };\n    AgInputTextField.prototype.setValue = function (value, silent) {\n        var ret = _super.prototype.setValue.call(this, value, silent);\n        if (this.eInput.value !== value) {\n            this.eInput.value = exists(value) ? value : '';\n        }\n        return ret;\n    };\n    AgInputTextField.prototype.preventDisallowedCharacters = function () {\n        var pattern = new RegExp(\"[\" + this.config.allowedCharPattern + \"]\");\n        var preventDisallowedCharacters = function (event) {\n            if (event.ctrlKey || event.metaKey) {\n                // copy/paste can fall in here on certain browsers (e.g. Safari)\n                return;\n            }\n            if (event.key && !pattern.test(event.key)) {\n                event.preventDefault();\n            }\n        };\n        this.addManagedListener(this.eInput, 'keypress', preventDisallowedCharacters);\n        this.addManagedListener(this.eInput, 'paste', function (e) {\n            var _a;\n            var text = (_a = e.clipboardData) === null || _a === void 0 ? void 0 : _a.getData('text');\n            if (text && text.split('').some(function (c) { return !pattern.test(c); })) {\n                e.preventDefault();\n            }\n        });\n    };\n    return AgInputTextField;\n}(AgAbstractInputField));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$2r = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar AgInputNumberField = /** @class */ (function (_super) {\n    __extends$2r(AgInputNumberField, _super);\n    function AgInputNumberField(config) {\n        return _super.call(this, config, 'ag-number-field', 'number') || this;\n    }\n    AgInputNumberField.prototype.postConstruct = function () {\n        var _this = this;\n        _super.prototype.postConstruct.call(this);\n        this.addManagedListener(this.eInput, 'blur', function () {\n            var floatedValue = parseFloat(_this.eInput.value);\n            var value = isNaN(floatedValue) ? '' : _this.normalizeValue(floatedValue.toString());\n            if (_this.value !== value) {\n                _this.setValue(value);\n            }\n        });\n        this.addManagedListener(this.eInput, 'wheel', this.onWheel.bind(this));\n        this.eInput.step = 'any';\n    };\n    AgInputNumberField.prototype.onWheel = function (e) {\n        // Prevent default scroll events from incrementing / decrementing the input, since its inconsistent between browsers\n        if (document.activeElement === this.eInput) {\n            e.preventDefault();\n        }\n    };\n    AgInputNumberField.prototype.normalizeValue = function (value) {\n        if (value === '') {\n            return '';\n        }\n        if (this.precision) {\n            value = this.adjustPrecision(value);\n        }\n        var val = parseFloat(value);\n        if (this.min != null && val < this.min) {\n            value = this.min.toString();\n        }\n        else if (this.max != null && val > this.max) {\n            value = this.max.toString();\n        }\n        return value;\n    };\n    AgInputNumberField.prototype.adjustPrecision = function (value) {\n        if (this.precision) {\n            var floatString = parseFloat(value).toFixed(this.precision);\n            value = parseFloat(floatString).toString();\n        }\n        return value;\n    };\n    AgInputNumberField.prototype.setMin = function (min) {\n        if (this.min === min) {\n            return this;\n        }\n        this.min = min;\n        addOrRemoveAttribute(this.eInput, 'min', min);\n        return this;\n    };\n    AgInputNumberField.prototype.setMax = function (max) {\n        if (this.max === max) {\n            return this;\n        }\n        this.max = max;\n        addOrRemoveAttribute(this.eInput, 'max', max);\n        return this;\n    };\n    AgInputNumberField.prototype.setPrecision = function (precision) {\n        this.precision = precision;\n        return this;\n    };\n    AgInputNumberField.prototype.setStep = function (step) {\n        if (this.step === step) {\n            return this;\n        }\n        this.step = step;\n        addOrRemoveAttribute(this.eInput, 'step', step);\n        return this;\n    };\n    AgInputNumberField.prototype.setValue = function (value, silent) {\n        if (value != null) {\n            value = this.adjustPrecision(value);\n            var normalizedValue = this.normalizeValue(value);\n            if (value != normalizedValue) {\n                return this;\n            }\n        }\n        return _super.prototype.setValue.call(this, value, silent);\n    };\n    return AgInputNumberField;\n}(AgInputTextField));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$2q = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar NumberFilterModelFormatter = /** @class */ (function (_super) {\n    __extends$2q(NumberFilterModelFormatter, _super);\n    function NumberFilterModelFormatter() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    NumberFilterModelFormatter.prototype.conditionToString = function (condition, options) {\n        var numberOfInputs = (options || {}).numberOfInputs;\n        var isRange = condition.type == SimpleFilter.IN_RANGE || numberOfInputs === 2;\n        if (isRange) {\n            return condition.filter + \"-\" + condition.filterTo;\n        }\n        // cater for when the type doesn't need a value\n        if (condition.filter != null) {\n            return \"\" + condition.filter;\n        }\n        return \"\" + condition.type;\n    };\n    return NumberFilterModelFormatter;\n}(SimpleFilterModelFormatter));\nfunction getAllowedCharPattern(filterParams) {\n    var allowedCharPattern = (filterParams !== null && filterParams !== void 0 ? filterParams : {}).allowedCharPattern;\n    if (allowedCharPattern) {\n        return allowedCharPattern;\n    }\n    if (!isBrowserChrome()) {\n        // only Chrome and Edge (Chromium) have nice HTML5 number field handling, so for other browsers we provide an equivalent\n        // constraint instead\n        return '\\\\d\\\\-\\\\.';\n    }\n    return null;\n}\nvar NumberFilter = /** @class */ (function (_super) {\n    __extends$2q(NumberFilter, _super);\n    function NumberFilter() {\n        var _this = _super.call(this, 'numberFilter') || this;\n        _this.eValuesFrom = [];\n        _this.eValuesTo = [];\n        return _this;\n    }\n    NumberFilter.prototype.mapValuesFromModel = function (filterModel) {\n        var _a = filterModel || {}, filter = _a.filter, filterTo = _a.filterTo, type = _a.type;\n        return [\n            this.processValue(filter),\n            this.processValue(filterTo),\n        ].slice(0, this.getNumberOfInputs(type));\n    };\n    NumberFilter.prototype.getDefaultDebounceMs = function () {\n        return 500;\n    };\n    NumberFilter.prototype.comparator = function () {\n        return function (left, right) {\n            if (left === right) {\n                return 0;\n            }\n            return left < right ? 1 : -1;\n        };\n    };\n    NumberFilter.prototype.setParams = function (params) {\n        this.numberFilterParams = params;\n        _super.prototype.setParams.call(this, params);\n        this.filterModelFormatter = new NumberFilterModelFormatter(this.localeService, this.optionsFactory);\n    };\n    NumberFilter.prototype.getDefaultFilterOptions = function () {\n        return NumberFilter.DEFAULT_FILTER_OPTIONS;\n    };\n    NumberFilter.prototype.createValueElement = function () {\n        var allowedCharPattern = getAllowedCharPattern(this.numberFilterParams);\n        var eCondition = document.createElement('div');\n        eCondition.classList.add('ag-filter-body');\n        setAriaRole(eCondition, 'presentation');\n        this.createFromToElement(eCondition, this.eValuesFrom, 'from', allowedCharPattern);\n        this.createFromToElement(eCondition, this.eValuesTo, 'to', allowedCharPattern);\n        return eCondition;\n    };\n    NumberFilter.prototype.createFromToElement = function (eCondition, eValues, fromTo, allowedCharPattern) {\n        var eValue = this.createManagedBean(allowedCharPattern ? new AgInputTextField({ allowedCharPattern: allowedCharPattern }) : new AgInputNumberField());\n        eValue.addCssClass(\"ag-filter-\" + fromTo);\n        eValue.addCssClass('ag-filter-filter');\n        eValues.push(eValue);\n        eCondition.appendChild(eValue.getGui());\n    };\n    NumberFilter.prototype.removeValueElements = function (startPosition, deleteCount) {\n        this.removeComponents(this.eValuesFrom, startPosition, deleteCount);\n        this.removeComponents(this.eValuesTo, startPosition, deleteCount);\n    };\n    NumberFilter.prototype.getValues = function (position) {\n        var _this = this;\n        var result = [];\n        this.forEachPositionInput(position, function (element, index, _elPosition, numberOfInputs) {\n            if (index < numberOfInputs) {\n                result.push(_this.processValue(_this.stringToFloat(element.getValue())));\n            }\n        });\n        return result;\n    };\n    NumberFilter.prototype.areSimpleModelsEqual = function (aSimple, bSimple) {\n        return aSimple.filter === bSimple.filter\n            && aSimple.filterTo === bSimple.filterTo\n            && aSimple.type === bSimple.type;\n    };\n    NumberFilter.prototype.getFilterType = function () {\n        return 'number';\n    };\n    NumberFilter.prototype.processValue = function (value) {\n        if (value == null) {\n            return null;\n        }\n        return isNaN(value) ? null : value;\n    };\n    NumberFilter.prototype.stringToFloat = function (value) {\n        if (typeof value === 'number') {\n            return value;\n        }\n        var filterText = makeNull(value);\n        if (filterText != null && filterText.trim() === '') {\n            filterText = null;\n        }\n        if (this.numberFilterParams.numberParser) {\n            return this.numberFilterParams.numberParser(filterText);\n        }\n        return filterText == null || filterText.trim() === '-' ? null : parseFloat(filterText);\n    };\n    NumberFilter.prototype.createCondition = function (position) {\n        var type = this.getConditionType(position);\n        var model = {\n            filterType: this.getFilterType(),\n            type: type\n        };\n        var values = this.getValues(position);\n        if (values.length > 0) {\n            model.filter = values[0];\n        }\n        if (values.length > 1) {\n            model.filterTo = values[1];\n        }\n        return model;\n    };\n    NumberFilter.prototype.getInputs = function (position) {\n        if (position >= this.eValuesFrom.length) {\n            return [null, null];\n        }\n        return [this.eValuesFrom[position], this.eValuesTo[position]];\n    };\n    NumberFilter.prototype.getModelAsString = function (model) {\n        var _a;\n        return (_a = this.filterModelFormatter.getModelAsString(model)) !== null && _a !== void 0 ? _a : '';\n    };\n    NumberFilter.DEFAULT_FILTER_OPTIONS = [\n        ScalarFilter.EQUALS,\n        ScalarFilter.NOT_EQUAL,\n        ScalarFilter.LESS_THAN,\n        ScalarFilter.LESS_THAN_OR_EQUAL,\n        ScalarFilter.GREATER_THAN,\n        ScalarFilter.GREATER_THAN_OR_EQUAL,\n        ScalarFilter.IN_RANGE,\n        ScalarFilter.BLANK,\n        ScalarFilter.NOT_BLANK,\n    ];\n    return NumberFilter;\n}(ScalarFilter));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$2p = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __assign$f = (undefined && undefined.__assign) || function () {\n    __assign$f = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign$f.apply(this, arguments);\n};\nvar TextFilterModelFormatter = /** @class */ (function (_super) {\n    __extends$2p(TextFilterModelFormatter, _super);\n    function TextFilterModelFormatter() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    TextFilterModelFormatter.prototype.conditionToString = function (condition, options) {\n        var numberOfInputs = (options || {}).numberOfInputs;\n        var isRange = condition.type == SimpleFilter.IN_RANGE || numberOfInputs === 2;\n        if (isRange) {\n            return condition.filter + \"-\" + condition.filterTo;\n        }\n        // cater for when the type doesn't need a value\n        if (condition.filter != null) {\n            return \"\" + condition.filter;\n        }\n        return \"\" + condition.type;\n    };\n    return TextFilterModelFormatter;\n}(SimpleFilterModelFormatter));\nvar TextFilter = /** @class */ (function (_super) {\n    __extends$2p(TextFilter, _super);\n    function TextFilter() {\n        var _this = _super.call(this, 'textFilter') || this;\n        _this.eValuesFrom = [];\n        _this.eValuesTo = [];\n        return _this;\n    }\n    TextFilter.trimInput = function (value) {\n        var trimmedInput = value && value.trim();\n        // trim the input, unless it is all whitespace (this is consistent with Excel behaviour)\n        return trimmedInput === '' ? value : trimmedInput;\n    };\n    TextFilter.prototype.getDefaultDebounceMs = function () {\n        return 500;\n    };\n    TextFilter.prototype.setParams = function (params) {\n        this.textFilterParams = params;\n        _super.prototype.setParams.call(this, params);\n        this.matcher = this.getTextMatcher();\n        this.formatter = this.textFilterParams.textFormatter ||\n            (this.textFilterParams.caseSensitive ? TextFilter.DEFAULT_FORMATTER : TextFilter.DEFAULT_LOWERCASE_FORMATTER);\n        this.filterModelFormatter = new TextFilterModelFormatter(this.localeService, this.optionsFactory);\n    };\n    TextFilter.prototype.getTextMatcher = function () {\n        var legacyComparator = this.textFilterParams.textCustomComparator;\n        if (legacyComparator) {\n            _.doOnce(function () { return console.warn('AG Grid - textCustomComparator is deprecated, use textMatcher instead.'); }, 'textCustomComparator.deprecated');\n            return function (_a) {\n                var filterOption = _a.filterOption, value = _a.value, filterText = _a.filterText;\n                return legacyComparator(filterOption, value, filterText);\n            };\n        }\n        return this.textFilterParams.textMatcher || TextFilter.DEFAULT_MATCHER;\n    };\n    TextFilter.prototype.createCondition = function (position) {\n        var type = this.getConditionType(position);\n        var model = {\n            filterType: this.getFilterType(),\n            type: type,\n        };\n        var values = this.getValues(position);\n        if (values.length > 0) {\n            model.filter = values[0];\n        }\n        if (values.length > 1) {\n            model.filterTo = values[1];\n        }\n        return model;\n    };\n    TextFilter.prototype.getFilterType = function () {\n        return 'text';\n    };\n    TextFilter.prototype.areSimpleModelsEqual = function (aSimple, bSimple) {\n        return aSimple.filter === bSimple.filter &&\n            aSimple.filterTo === bSimple.filterTo &&\n            aSimple.type === bSimple.type;\n    };\n    TextFilter.prototype.getInputs = function (position) {\n        if (position >= this.eValuesFrom.length) {\n            return [null, null];\n        }\n        return [this.eValuesFrom[position], this.eValuesTo[position]];\n    };\n    TextFilter.prototype.getValues = function (position) {\n        var _this = this;\n        var result = [];\n        this.forEachPositionInput(position, function (element, index, _elPosition, numberOfInputs) {\n            if (index < numberOfInputs) {\n                var value = makeNull(element.getValue());\n                var cleanValue = (_this.textFilterParams.trimInput ? TextFilter.trimInput(value) : value) || null;\n                result.push(cleanValue);\n                element.setValue(cleanValue, true); // ensure clean value is visible\n            }\n        });\n        return result;\n    };\n    TextFilter.prototype.getDefaultFilterOptions = function () {\n        return TextFilter.DEFAULT_FILTER_OPTIONS;\n    };\n    TextFilter.prototype.createValueElement = function () {\n        var eCondition = document.createElement('div');\n        eCondition.classList.add('ag-filter-body');\n        setAriaRole(eCondition, 'presentation');\n        this.createFromToElement(eCondition, this.eValuesFrom, 'from');\n        this.createFromToElement(eCondition, this.eValuesTo, 'to');\n        return eCondition;\n    };\n    TextFilter.prototype.createFromToElement = function (eCondition, eValues, fromTo) {\n        var eValue = this.createManagedBean(new AgInputTextField());\n        eValue.addCssClass(\"ag-filter-\" + fromTo);\n        eValue.addCssClass('ag-filter-filter');\n        eValues.push(eValue);\n        eCondition.appendChild(eValue.getGui());\n    };\n    TextFilter.prototype.removeValueElements = function (startPosition, deleteCount) {\n        this.removeComponents(this.eValuesFrom, startPosition, deleteCount);\n        this.removeComponents(this.eValuesTo, startPosition, deleteCount);\n    };\n    TextFilter.prototype.mapValuesFromModel = function (filterModel) {\n        var _a = filterModel || {}, filter = _a.filter, filterTo = _a.filterTo, type = _a.type;\n        return [\n            filter || null,\n            filterTo || null,\n        ].slice(0, this.getNumberOfInputs(type));\n    };\n    TextFilter.prototype.evaluateNullValue = function (filterType) {\n        var filterTypesAllowNulls = [\n            SimpleFilter.NOT_EQUAL, SimpleFilter.NOT_CONTAINS, SimpleFilter.BLANK,\n        ];\n        return filterType ? filterTypesAllowNulls.indexOf(filterType) >= 0 : false;\n    };\n    TextFilter.prototype.evaluateNonNullValue = function (values, cellValue, filterModel, params) {\n        var _this = this;\n        var formattedValues = values.map(function (v) { return _this.formatter(v); }) || [];\n        var cellValueFormatted = this.formatter(cellValue);\n        var _a = this.textFilterParams, api = _a.api, colDef = _a.colDef, column = _a.column, columnApi = _a.columnApi, context = _a.context, textFormatter = _a.textFormatter;\n        if (filterModel.type === SimpleFilter.BLANK) {\n            return this.isBlank(cellValue);\n        }\n        else if (filterModel.type === SimpleFilter.NOT_BLANK) {\n            return !this.isBlank(cellValue);\n        }\n        var matcherParams = {\n            api: api,\n            colDef: colDef,\n            column: column,\n            columnApi: columnApi,\n            context: context,\n            node: params.node,\n            data: params.data,\n            filterOption: filterModel.type,\n            value: cellValueFormatted,\n            textFormatter: textFormatter,\n        };\n        return formattedValues.some(function (v) { return _this.matcher(__assign$f(__assign$f({}, matcherParams), { filterText: v })); });\n    };\n    TextFilter.prototype.getModelAsString = function (model) {\n        var _a;\n        return (_a = this.filterModelFormatter.getModelAsString(model)) !== null && _a !== void 0 ? _a : '';\n    };\n    TextFilter.DEFAULT_FILTER_OPTIONS = [\n        SimpleFilter.CONTAINS,\n        SimpleFilter.NOT_CONTAINS,\n        SimpleFilter.EQUALS,\n        SimpleFilter.NOT_EQUAL,\n        SimpleFilter.STARTS_WITH,\n        SimpleFilter.ENDS_WITH,\n        SimpleFilter.BLANK,\n        SimpleFilter.NOT_BLANK,\n    ];\n    TextFilter.DEFAULT_FORMATTER = function (from) { return from; };\n    TextFilter.DEFAULT_LOWERCASE_FORMATTER = function (from) { return from == null ? null : from.toString().toLowerCase(); };\n    TextFilter.DEFAULT_MATCHER = function (_a) {\n        var filterOption = _a.filterOption, value = _a.value, filterText = _a.filterText;\n        if (filterText == null) {\n            return false;\n        }\n        switch (filterOption) {\n            case TextFilter.CONTAINS:\n                return value.indexOf(filterText) >= 0;\n            case TextFilter.NOT_CONTAINS:\n                return value.indexOf(filterText) < 0;\n            case TextFilter.EQUALS:\n                return value === filterText;\n            case TextFilter.NOT_EQUAL:\n                return value != filterText;\n            case TextFilter.STARTS_WITH:\n                return value.indexOf(filterText) === 0;\n            case TextFilter.ENDS_WITH:\n                var index = value.lastIndexOf(filterText);\n                return index >= 0 && index === (value.length - filterText.length);\n            default:\n                return false;\n        }\n    };\n    return TextFilter;\n}(SimpleFilter));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$2o = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$29 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar FloatingFilterTextInputService = /** @class */ (function (_super) {\n    __extends$2o(FloatingFilterTextInputService, _super);\n    function FloatingFilterTextInputService(params) {\n        var _this = _super.call(this) || this;\n        _this.params = params;\n        return _this;\n    }\n    FloatingFilterTextInputService.prototype.setupGui = function (parentElement) {\n        this.eFloatingFilterTextInput = this.createManagedBean(new AgInputTextField(this.params.config));\n        this.eFloatingFilterTextInput.setInputAriaLabel(this.params.ariaLabel);\n        parentElement.appendChild(this.eFloatingFilterTextInput.getGui());\n    };\n    FloatingFilterTextInputService.prototype.setEditable = function (editable) {\n        this.eFloatingFilterTextInput.setDisabled(!editable);\n    };\n    FloatingFilterTextInputService.prototype.getValue = function () {\n        return this.eFloatingFilterTextInput.getValue();\n    };\n    FloatingFilterTextInputService.prototype.setValue = function (value, silent) {\n        this.eFloatingFilterTextInput.setValue(value, silent);\n    };\n    FloatingFilterTextInputService.prototype.addValueChangedListener = function (listener) {\n        var inputGui = this.eFloatingFilterTextInput.getGui();\n        this.addManagedListener(inputGui, 'input', listener);\n        this.addManagedListener(inputGui, 'keypress', listener);\n        this.addManagedListener(inputGui, 'keydown', listener);\n    };\n    return FloatingFilterTextInputService;\n}(BeanStub));\nvar TextInputFloatingFilter = /** @class */ (function (_super) {\n    __extends$2o(TextInputFloatingFilter, _super);\n    function TextInputFloatingFilter() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    TextInputFloatingFilter.prototype.postConstruct = function () {\n        this.setTemplate(/* html */ \"\\n            <div class=\\\"ag-floating-filter-input\\\" role=\\\"presentation\\\" ref=\\\"eFloatingFilterInputContainer\\\"></div>\\n        \");\n    };\n    TextInputFloatingFilter.prototype.getDefaultDebounceMs = function () {\n        return 500;\n    };\n    TextInputFloatingFilter.prototype.onParentModelChanged = function (model, event) {\n        if (this.isEventFromFloatingFilter(event) || this.isEventFromDataChange(event)) {\n            // if the floating filter triggered the change, it is already in sync.\n            // Data changes also do not affect provided text floating filters\n            return;\n        }\n        this.setLastTypeFromModel(model);\n        this.setEditable(this.canWeEditAfterModelFromParentFilter(model));\n        this.floatingFilterInputService.setValue(this.getFilterModelFormatter().getModelAsString(model));\n    };\n    TextInputFloatingFilter.prototype.init = function (params) {\n        this.params = params;\n        var displayName = this.columnModel.getDisplayNameForColumn(params.column, 'header', true);\n        var translate = this.localeService.getLocaleTextFunc();\n        var ariaLabel = displayName + \" \" + translate('ariaFilterInput', 'Filter Input');\n        this.floatingFilterInputService = this.createFloatingFilterInputService(ariaLabel);\n        this.floatingFilterInputService.setupGui(this.eFloatingFilterInputContainer);\n        _super.prototype.init.call(this, params);\n        this.applyActive = ProvidedFilter.isUseApplyButton(this.params.filterParams);\n        if (!this.isReadOnly()) {\n            var debounceMs = ProvidedFilter.getDebounceMs(this.params.filterParams, this.getDefaultDebounceMs());\n            var toDebounce = debounce(this.syncUpWithParentFilter.bind(this), debounceMs);\n            this.floatingFilterInputService.addValueChangedListener(toDebounce);\n        }\n    };\n    TextInputFloatingFilter.prototype.syncUpWithParentFilter = function (e) {\n        var _this = this;\n        var enterKeyPressed = e.key === KeyCode.ENTER;\n        if (this.applyActive && !enterKeyPressed) {\n            return;\n        }\n        var value = this.floatingFilterInputService.getValue();\n        if (this.params.filterParams.trimInput) {\n            value = TextFilter.trimInput(value);\n            this.floatingFilterInputService.setValue(value, true); // ensure visible value is trimmed\n        }\n        this.params.parentFilterInstance(function (filterInstance) {\n            if (filterInstance) {\n                // NumberFilter is typed as number, but actually receives string values\n                filterInstance.onFloatingFilterChanged(_this.getLastType() || null, value || null);\n            }\n        });\n    };\n    TextInputFloatingFilter.prototype.setEditable = function (editable) {\n        this.floatingFilterInputService.setEditable(editable);\n    };\n    __decorate$29([\n        Autowired('columnModel')\n    ], TextInputFloatingFilter.prototype, \"columnModel\", void 0);\n    __decorate$29([\n        RefSelector('eFloatingFilterInputContainer')\n    ], TextInputFloatingFilter.prototype, \"eFloatingFilterInputContainer\", void 0);\n    __decorate$29([\n        PostConstruct\n    ], TextInputFloatingFilter.prototype, \"postConstruct\", null);\n    return TextInputFloatingFilter;\n}(SimpleFloatingFilter));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$2n = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar FloatingFilterNumberInputService = /** @class */ (function (_super) {\n    __extends$2n(FloatingFilterNumberInputService, _super);\n    function FloatingFilterNumberInputService(params) {\n        var _this = _super.call(this) || this;\n        _this.params = params;\n        _this.numberInputActive = true;\n        return _this;\n    }\n    FloatingFilterNumberInputService.prototype.setupGui = function (parentElement) {\n        this.eFloatingFilterNumberInput = this.createManagedBean(new AgInputNumberField());\n        this.eFloatingFilterTextInput = this.createManagedBean(new AgInputTextField());\n        this.eFloatingFilterTextInput.setDisabled(true);\n        this.eFloatingFilterNumberInput.setInputAriaLabel(this.params.ariaLabel);\n        this.eFloatingFilterTextInput.setInputAriaLabel(this.params.ariaLabel);\n        parentElement.appendChild(this.eFloatingFilterNumberInput.getGui());\n        parentElement.appendChild(this.eFloatingFilterTextInput.getGui());\n    };\n    FloatingFilterNumberInputService.prototype.setEditable = function (editable) {\n        this.numberInputActive = editable;\n        this.eFloatingFilterNumberInput.setDisplayed(this.numberInputActive);\n        this.eFloatingFilterTextInput.setDisplayed(!this.numberInputActive);\n    };\n    FloatingFilterNumberInputService.prototype.getValue = function () {\n        return this.getActiveInputElement().getValue();\n    };\n    FloatingFilterNumberInputService.prototype.setValue = function (value, silent) {\n        this.getActiveInputElement().setValue(value, silent);\n    };\n    FloatingFilterNumberInputService.prototype.getActiveInputElement = function () {\n        return this.numberInputActive ? this.eFloatingFilterNumberInput : this.eFloatingFilterTextInput;\n    };\n    FloatingFilterNumberInputService.prototype.addValueChangedListener = function (listener) {\n        this.setupListeners(this.eFloatingFilterNumberInput.getGui(), listener);\n        this.setupListeners(this.eFloatingFilterTextInput.getGui(), listener);\n    };\n    FloatingFilterNumberInputService.prototype.setupListeners = function (element, listener) {\n        this.addManagedListener(element, 'input', listener);\n        this.addManagedListener(element, 'keypress', listener);\n        this.addManagedListener(element, 'keydown', listener);\n    };\n    return FloatingFilterNumberInputService;\n}(BeanStub));\nvar NumberFloatingFilter = /** @class */ (function (_super) {\n    __extends$2n(NumberFloatingFilter, _super);\n    function NumberFloatingFilter() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    NumberFloatingFilter.prototype.init = function (params) {\n        _super.prototype.init.call(this, params);\n        this.filterModelFormatter = new NumberFilterModelFormatter(this.localeService, this.optionsFactory);\n    };\n    NumberFloatingFilter.prototype.getDefaultFilterOptions = function () {\n        return NumberFilter.DEFAULT_FILTER_OPTIONS;\n    };\n    NumberFloatingFilter.prototype.getFilterModelFormatter = function () {\n        return this.filterModelFormatter;\n    };\n    NumberFloatingFilter.prototype.createFloatingFilterInputService = function (ariaLabel) {\n        var allowedCharPattern = getAllowedCharPattern(this.params.filterParams);\n        if (allowedCharPattern) {\n            // need to sue text input\n            return this.createManagedBean(new FloatingFilterTextInputService({\n                config: { allowedCharPattern: allowedCharPattern },\n                ariaLabel: ariaLabel\n            }));\n        }\n        return this.createManagedBean(new FloatingFilterNumberInputService({ ariaLabel: ariaLabel }));\n    };\n    return NumberFloatingFilter;\n}(TextInputFloatingFilter));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$2m = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar TextFloatingFilter = /** @class */ (function (_super) {\n    __extends$2m(TextFloatingFilter, _super);\n    function TextFloatingFilter() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    TextFloatingFilter.prototype.init = function (params) {\n        _super.prototype.init.call(this, params);\n        this.filterModelFormatter = new TextFilterModelFormatter(this.localeService, this.optionsFactory);\n    };\n    TextFloatingFilter.prototype.getDefaultFilterOptions = function () {\n        return TextFilter.DEFAULT_FILTER_OPTIONS;\n    };\n    TextFloatingFilter.prototype.getFilterModelFormatter = function () {\n        return this.filterModelFormatter;\n    };\n    TextFloatingFilter.prototype.createFloatingFilterInputService = function (ariaLabel) {\n        return this.createManagedBean(new FloatingFilterTextInputService({\n            ariaLabel: ariaLabel\n        }));\n    };\n    return TextFloatingFilter;\n}(TextInputFloatingFilter));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar TouchListener = /** @class */ (function () {\n    function TouchListener(eElement, preventMouseClick) {\n        var _this = this;\n        if (preventMouseClick === void 0) { preventMouseClick = false; }\n        this.destroyFuncs = [];\n        this.touching = false;\n        this.eventService = new EventService();\n        this.eElement = eElement;\n        this.preventMouseClick = preventMouseClick;\n        var startListener = this.onTouchStart.bind(this);\n        var moveListener = this.onTouchMove.bind(this);\n        var endListener = this.onTouchEnd.bind(this);\n        this.eElement.addEventListener(\"touchstart\", startListener, { passive: true });\n        this.eElement.addEventListener(\"touchmove\", moveListener, { passive: true });\n        // we set passive=false, as we want to prevent default on this event\n        this.eElement.addEventListener(\"touchend\", endListener, { passive: false });\n        this.destroyFuncs.push(function () {\n            _this.eElement.removeEventListener(\"touchstart\", startListener, { passive: true });\n            _this.eElement.removeEventListener(\"touchmove\", moveListener, { passive: true });\n            _this.eElement.removeEventListener(\"touchend\", endListener, { passive: false });\n        });\n    }\n    TouchListener.prototype.getActiveTouch = function (touchList) {\n        for (var i = 0; i < touchList.length; i++) {\n            var matches = touchList[i].identifier === this.touchStart.identifier;\n            if (matches) {\n                return touchList[i];\n            }\n        }\n        return null;\n    };\n    TouchListener.prototype.addEventListener = function (eventType, listener) {\n        this.eventService.addEventListener(eventType, listener);\n    };\n    TouchListener.prototype.removeEventListener = function (eventType, listener) {\n        this.eventService.removeEventListener(eventType, listener);\n    };\n    TouchListener.prototype.onTouchStart = function (touchEvent) {\n        var _this = this;\n        // only looking at one touch point at any time\n        if (this.touching) {\n            return;\n        }\n        this.touchStart = touchEvent.touches[0];\n        this.touching = true;\n        this.moved = false;\n        var touchStartCopy = this.touchStart;\n        window.setTimeout(function () {\n            var touchesMatch = _this.touchStart === touchStartCopy;\n            if (_this.touching && touchesMatch && !_this.moved) {\n                _this.moved = true;\n                var event_1 = {\n                    type: TouchListener.EVENT_LONG_TAP,\n                    touchStart: _this.touchStart,\n                    touchEvent: touchEvent\n                };\n                _this.eventService.dispatchEvent(event_1);\n            }\n        }, 500);\n    };\n    TouchListener.prototype.onTouchMove = function (touchEvent) {\n        if (!this.touching) {\n            return;\n        }\n        var touch = this.getActiveTouch(touchEvent.touches);\n        if (!touch) {\n            return;\n        }\n        var eventIsFarAway = !areEventsNear(touch, this.touchStart, 4);\n        if (eventIsFarAway) {\n            this.moved = true;\n        }\n    };\n    TouchListener.prototype.onTouchEnd = function (touchEvent) {\n        if (!this.touching) {\n            return;\n        }\n        if (!this.moved) {\n            var event_2 = {\n                type: TouchListener.EVENT_TAP,\n                touchStart: this.touchStart\n            };\n            this.eventService.dispatchEvent(event_2);\n            this.checkForDoubleTap();\n        }\n        // stops the tap from also been processed as a mouse click\n        if (this.preventMouseClick && touchEvent.cancelable) {\n            touchEvent.preventDefault();\n        }\n        this.touching = false;\n    };\n    TouchListener.prototype.checkForDoubleTap = function () {\n        var now = new Date().getTime();\n        if (this.lastTapTime && this.lastTapTime > 0) {\n            // if previous tap, see if duration is short enough to be considered double tap\n            var interval = now - this.lastTapTime;\n            if (interval > TouchListener.DOUBLE_TAP_MILLIS) {\n                // dispatch double tap event\n                var event_3 = {\n                    type: TouchListener.EVENT_DOUBLE_TAP,\n                    touchStart: this.touchStart\n                };\n                this.eventService.dispatchEvent(event_3);\n                // this stops a tripple tap ending up as two double taps\n                this.lastTapTime = null;\n            }\n            else {\n                this.lastTapTime = now;\n            }\n        }\n        else {\n            this.lastTapTime = now;\n        }\n    };\n    TouchListener.prototype.destroy = function () {\n        this.destroyFuncs.forEach(function (func) { return func(); });\n    };\n    TouchListener.EVENT_TAP = \"tap\";\n    TouchListener.EVENT_DOUBLE_TAP = \"doubleTap\";\n    TouchListener.EVENT_LONG_TAP = \"longTap\";\n    TouchListener.DOUBLE_TAP_MILLIS = 500;\n    return TouchListener;\n}());\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$2l = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$28 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar SortIndicatorComp = /** @class */ (function (_super) {\n    __extends$2l(SortIndicatorComp, _super);\n    function SortIndicatorComp(skipTemplate) {\n        var _this = _super.call(this) || this;\n        if (!skipTemplate) {\n            _this.setTemplate(SortIndicatorComp.TEMPLATE);\n        }\n        return _this;\n    }\n    SortIndicatorComp.prototype.attachCustomElements = function (eSortOrder, eSortAsc, eSortDesc, eSortMixed, eSortNone) {\n        this.eSortOrder = eSortOrder;\n        this.eSortAsc = eSortAsc;\n        this.eSortDesc = eSortDesc;\n        this.eSortMixed = eSortMixed;\n        this.eSortNone = eSortNone;\n    };\n    SortIndicatorComp.prototype.setupSort = function (column, suppressOrder) {\n        var _this = this;\n        if (suppressOrder === void 0) { suppressOrder = false; }\n        this.column = column;\n        this.suppressOrder = suppressOrder;\n        this.setupMultiSortIndicator();\n        var canSort = !!this.column.getColDef().sortable;\n        if (!canSort) {\n            return;\n        }\n        this.addInIcon('sortAscending', this.eSortAsc, column);\n        this.addInIcon('sortDescending', this.eSortDesc, column);\n        this.addInIcon('sortUnSort', this.eSortNone, column);\n        // Watch global events, as row group columns can effect their display column.\n        this.addManagedListener(this.eventService, Events.EVENT_SORT_CHANGED, function () { return _this.onSortChanged(); });\n        // when grouping changes so can sort indexes and icons\n        this.addManagedListener(this.eventService, Events.EVENT_COLUMN_ROW_GROUP_CHANGED, function () { return _this.onSortChanged(); });\n        this.onSortChanged();\n    };\n    SortIndicatorComp.prototype.addInIcon = function (iconName, eParent, column) {\n        if (eParent == null) {\n            return;\n        }\n        var eIcon = createIconNoSpan(iconName, this.gridOptionsService, column);\n        if (eIcon) {\n            eParent.appendChild(eIcon);\n        }\n    };\n    SortIndicatorComp.prototype.onSortChanged = function () {\n        this.updateIcons();\n        if (!this.suppressOrder) {\n            this.updateSortOrder();\n        }\n    };\n    SortIndicatorComp.prototype.updateIcons = function () {\n        var sortDirection = this.sortController.getDisplaySortForColumn(this.column);\n        if (this.eSortAsc) {\n            var isAscending = sortDirection === 'asc';\n            setDisplayed(this.eSortAsc, isAscending, { skipAriaHidden: true });\n        }\n        if (this.eSortDesc) {\n            var isDescending = sortDirection === 'desc';\n            setDisplayed(this.eSortDesc, isDescending, { skipAriaHidden: true });\n        }\n        if (this.eSortNone) {\n            var alwaysHideNoSort = !this.column.getColDef().unSortIcon && !this.gridOptionsService.is('unSortIcon');\n            var isNone = sortDirection === null || sortDirection === undefined;\n            setDisplayed(this.eSortNone, !alwaysHideNoSort && isNone, { skipAriaHidden: true });\n        }\n    };\n    SortIndicatorComp.prototype.setupMultiSortIndicator = function () {\n        var _this = this;\n        this.addInIcon('sortUnSort', this.eSortMixed, this.column);\n        var isColumnShowingRowGroup = this.column.getColDef().showRowGroup;\n        var areGroupsCoupled = this.gridOptionsService.isColumnsSortingCoupledToGroup();\n        if (areGroupsCoupled && isColumnShowingRowGroup) {\n            // Watch global events, as row group columns can effect their display column.\n            this.addManagedListener(this.eventService, Events.EVENT_SORT_CHANGED, function () { return _this.updateMultiSortIndicator(); });\n            // when grouping changes so can sort indexes and icons\n            this.addManagedListener(this.eventService, Events.EVENT_COLUMN_ROW_GROUP_CHANGED, function () { return _this.updateMultiSortIndicator(); });\n            this.updateMultiSortIndicator();\n        }\n    };\n    SortIndicatorComp.prototype.updateMultiSortIndicator = function () {\n        if (this.eSortMixed) {\n            var isMixedSort = this.sortController.getDisplaySortForColumn(this.column) === 'mixed';\n            setDisplayed(this.eSortMixed, isMixedSort, { skipAriaHidden: true });\n        }\n    };\n    // we listen here for global sort events, NOT column sort events, as we want to do this\n    // when sorting has been set on all column (if we listened just for our col (where we\n    // set the asc / desc icons) then it's possible other cols are yet to get their sorting state.\n    SortIndicatorComp.prototype.updateSortOrder = function () {\n        var _this = this;\n        var _a;\n        if (!this.eSortOrder) {\n            return;\n        }\n        var allColumnsWithSorting = this.sortController.getColumnsWithSortingOrdered();\n        var indexThisCol = (_a = this.sortController.getDisplaySortIndexForColumn(this.column)) !== null && _a !== void 0 ? _a : -1;\n        var moreThanOneColSorting = allColumnsWithSorting.some(function (col) { var _a; return (_a = _this.sortController.getDisplaySortIndexForColumn(col)) !== null && _a !== void 0 ? _a : -1 >= 1; });\n        var showIndex = indexThisCol >= 0 && moreThanOneColSorting;\n        setDisplayed(this.eSortOrder, showIndex, { skipAriaHidden: true });\n        if (indexThisCol >= 0) {\n            this.eSortOrder.innerHTML = (indexThisCol + 1).toString();\n        }\n        else {\n            clearElement(this.eSortOrder);\n        }\n    };\n    SortIndicatorComp.TEMPLATE = \"<span class=\\\"ag-sort-indicator-container\\\">\\n            <span ref=\\\"eSortOrder\\\" class=\\\"ag-sort-indicator-icon ag-sort-order ag-hidden\\\" aria-hidden=\\\"true\\\"></span>\\n            <span ref=\\\"eSortAsc\\\" class=\\\"ag-sort-indicator-icon ag-sort-ascending-icon ag-hidden\\\" aria-hidden=\\\"true\\\"></span>\\n            <span ref=\\\"eSortDesc\\\" class=\\\"ag-sort-indicator-icon ag-sort-descending-icon ag-hidden\\\" aria-hidden=\\\"true\\\"></span>\\n            <span ref=\\\"eSortMixed\\\" class=\\\"ag-sort-indicator-icon ag-sort-mixed-icon ag-hidden\\\" aria-hidden=\\\"true\\\"></span>\\n            <span ref=\\\"eSortNone\\\" class=\\\"ag-sort-indicator-icon ag-sort-none-icon ag-hidden\\\" aria-hidden=\\\"true\\\"></span>\\n        </span>\";\n    __decorate$28([\n        RefSelector('eSortOrder')\n    ], SortIndicatorComp.prototype, \"eSortOrder\", void 0);\n    __decorate$28([\n        RefSelector('eSortAsc')\n    ], SortIndicatorComp.prototype, \"eSortAsc\", void 0);\n    __decorate$28([\n        RefSelector('eSortDesc')\n    ], SortIndicatorComp.prototype, \"eSortDesc\", void 0);\n    __decorate$28([\n        RefSelector('eSortMixed')\n    ], SortIndicatorComp.prototype, \"eSortMixed\", void 0);\n    __decorate$28([\n        RefSelector('eSortNone')\n    ], SortIndicatorComp.prototype, \"eSortNone\", void 0);\n    __decorate$28([\n        Autowired('columnModel')\n    ], SortIndicatorComp.prototype, \"columnModel\", void 0);\n    __decorate$28([\n        Autowired('sortController')\n    ], SortIndicatorComp.prototype, \"sortController\", void 0);\n    return SortIndicatorComp;\n}(Component));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$2k = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$27 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar HeaderComp = /** @class */ (function (_super) {\n    __extends$2k(HeaderComp, _super);\n    function HeaderComp() {\n        var _this = _super !== null && _super.apply(this, arguments) || this;\n        _this.lastMovingChanged = 0;\n        return _this;\n    }\n    // this is a user component, and IComponent has \"public destroy()\" as part of the interface.\n    // so we need to override destroy() just to make the method public.\n    HeaderComp.prototype.destroy = function () {\n        _super.prototype.destroy.call(this);\n    };\n    HeaderComp.prototype.refresh = function (params) {\n        this.params = params;\n        // if template changed, then recreate the whole comp, the code required to manage\n        // a changing template is to difficult for what it's worth.\n        if (this.workOutTemplate() != this.currentTemplate) {\n            return false;\n        }\n        if (this.workOutShowMenu() != this.currentShowMenu) {\n            return false;\n        }\n        if (this.workOutSort() != this.currentSort) {\n            return false;\n        }\n        this.setDisplayName(params);\n        return true;\n    };\n    HeaderComp.prototype.workOutTemplate = function () {\n        var template = firstExistingValue(this.params.template, HeaderComp.TEMPLATE);\n        // take account of any newlines & whitespace before/after the actual template\n        template = template && template.trim ? template.trim() : template;\n        return template;\n    };\n    HeaderComp.prototype.init = function (params) {\n        this.params = params;\n        this.currentTemplate = this.workOutTemplate();\n        this.setTemplate(this.currentTemplate);\n        this.setupTap();\n        this.setupIcons(params.column);\n        this.setMenu();\n        this.setupSort();\n        this.setupFilterIcon();\n        this.setDisplayName(params);\n    };\n    HeaderComp.prototype.setDisplayName = function (params) {\n        if (this.currentDisplayName != params.displayName) {\n            this.currentDisplayName = params.displayName;\n            var displayNameSanitised = escapeString(this.currentDisplayName);\n            if (this.eText) {\n                this.eText.innerHTML = displayNameSanitised;\n            }\n        }\n    };\n    HeaderComp.prototype.setupIcons = function (column) {\n        this.addInIcon('menu', this.eMenu, column);\n        this.addInIcon('filter', this.eFilter, column);\n    };\n    HeaderComp.prototype.addInIcon = function (iconName, eParent, column) {\n        if (eParent == null) {\n            return;\n        }\n        var eIcon = createIconNoSpan(iconName, this.gridOptionsService, column);\n        if (eIcon) {\n            eParent.appendChild(eIcon);\n        }\n    };\n    HeaderComp.prototype.setupTap = function () {\n        var _this = this;\n        var gridOptionsService = this.gridOptionsService;\n        if (gridOptionsService.is('suppressTouch')) {\n            return;\n        }\n        var touchListener = new TouchListener(this.getGui(), true);\n        var suppressMenuHide = gridOptionsService.is('suppressMenuHide');\n        var tapMenuButton = suppressMenuHide && exists(this.eMenu);\n        var menuTouchListener = tapMenuButton ? new TouchListener(this.eMenu, true) : touchListener;\n        if (this.params.enableMenu) {\n            var eventType = tapMenuButton ? 'EVENT_TAP' : 'EVENT_LONG_TAP';\n            var showMenuFn = function (event) {\n                gridOptionsService.api.showColumnMenuAfterMouseClick(_this.params.column, event.touchStart);\n            };\n            this.addManagedListener(menuTouchListener, TouchListener[eventType], showMenuFn);\n        }\n        if (this.params.enableSorting) {\n            var tapListener = function (event) {\n                var target = event.touchStart.target;\n                // When suppressMenuHide is true, a tap on the menu icon will bubble up\n                // to the header container, in that case we should not sort\n                if (suppressMenuHide && _this.eMenu.contains(target)) {\n                    return;\n                }\n                _this.sortController.progressSort(_this.params.column, false, \"uiColumnSorted\");\n            };\n            this.addManagedListener(touchListener, TouchListener.EVENT_TAP, tapListener);\n        }\n        // if tapMenuButton is true `touchListener` and `menuTouchListener` are different\n        // so we need to make sure to destroy both listeners here\n        this.addDestroyFunc(function () { return touchListener.destroy(); });\n        if (tapMenuButton) {\n            this.addDestroyFunc(function () { return menuTouchListener.destroy(); });\n        }\n    };\n    HeaderComp.prototype.workOutShowMenu = function () {\n        // we don't show the menu if on an iPad/iPhone, as the user cannot have a pointer device/\n        // However if suppressMenuHide is set to true the menu will be displayed alwasys, so it's ok\n        // to show it on iPad in this case (as hover isn't needed). If suppressMenuHide\n        // is false (default) user will need to use longpress to display the menu.\n        var menuHides = !this.gridOptionsService.is('suppressMenuHide');\n        var onIpadAndMenuHides = isIOSUserAgent() && menuHides;\n        var showMenu = this.params.enableMenu && !onIpadAndMenuHides;\n        return showMenu;\n    };\n    HeaderComp.prototype.setMenu = function () {\n        var _this = this;\n        // if no menu provided in template, do nothing\n        if (!this.eMenu) {\n            return;\n        }\n        this.currentShowMenu = this.workOutShowMenu();\n        if (!this.currentShowMenu) {\n            removeFromParent(this.eMenu);\n            return;\n        }\n        var suppressMenuHide = this.gridOptionsService.is('suppressMenuHide');\n        this.addManagedListener(this.eMenu, 'click', function () { return _this.showMenu(_this.eMenu); });\n        this.eMenu.classList.toggle('ag-header-menu-always-show', suppressMenuHide);\n    };\n    HeaderComp.prototype.showMenu = function (eventSource) {\n        if (!eventSource) {\n            eventSource = this.eMenu;\n        }\n        this.menuFactory.showMenuAfterButtonClick(this.params.column, eventSource, 'columnMenu');\n    };\n    HeaderComp.prototype.workOutSort = function () {\n        return this.params.enableSorting;\n    };\n    HeaderComp.prototype.setupSort = function () {\n        var _this = this;\n        this.currentSort = this.params.enableSorting;\n        // eSortIndicator will not be present when customers provided custom header\n        // templates, in that case, we need to look for provided sort elements and\n        // manually create eSortIndicator.\n        if (!this.eSortIndicator) {\n            this.eSortIndicator = this.context.createBean(new SortIndicatorComp(true));\n            this.eSortIndicator.attachCustomElements(this.eSortOrder, this.eSortAsc, this.eSortDesc, this.eSortMixed, this.eSortNone);\n        }\n        this.eSortIndicator.setupSort(this.params.column);\n        // we set up the indicator prior to the check for whether this column is sortable, as it allows the indicator to\n        // set up the multi sort indicator which can appear irrelevant of whether this column can itself be sorted.\n        // this can occur in the case of a non-sortable group display column.\n        if (!this.currentSort) {\n            return;\n        }\n        var sortUsingCtrl = this.gridOptionsService.get('multiSortKey') === 'ctrl';\n        // keep track of last time the moving changed flag was set\n        this.addManagedListener(this.params.column, Column.EVENT_MOVING_CHANGED, function () {\n            _this.lastMovingChanged = new Date().getTime();\n        });\n        // add the event on the header, so when clicked, we do sorting\n        if (this.eLabel) {\n            this.addManagedListener(this.eLabel, 'click', function (event) {\n                // sometimes when moving a column via dragging, this was also firing a clicked event.\n                // here is issue raised by user: https://ag-grid.zendesk.com/agent/tickets/1076\n                // this check stops sort if a) column is moving or b) column moved less than 200ms ago (so caters for race condition)\n                var moving = _this.params.column.isMoving();\n                var nowTime = new Date().getTime();\n                // typically there is <2ms if moving flag was set recently, as it would be done in same VM turn\n                var movedRecently = (nowTime - _this.lastMovingChanged) < 50;\n                var columnMoving = moving || movedRecently;\n                if (!columnMoving) {\n                    var multiSort = sortUsingCtrl ? (event.ctrlKey || event.metaKey) : event.shiftKey;\n                    _this.params.progressSort(multiSort);\n                }\n            });\n        }\n        var onSortingChanged = function () {\n            _this.addOrRemoveCssClass('ag-header-cell-sorted-asc', _this.params.column.isSortAscending());\n            _this.addOrRemoveCssClass('ag-header-cell-sorted-desc', _this.params.column.isSortDescending());\n            _this.addOrRemoveCssClass('ag-header-cell-sorted-none', _this.params.column.isSortNone());\n            if (_this.params.column.getColDef().showRowGroup) {\n                var sourceColumns = _this.columnModel.getSourceColumnsForGroupColumn(_this.params.column);\n                // this == is intentional, as it allows null and undefined to match, which are both unsorted states\n                var sortDirectionsMatch = sourceColumns === null || sourceColumns === void 0 ? void 0 : sourceColumns.every(function (sourceCol) { return _this.params.column.getSort() == sourceCol.getSort(); });\n                var isMultiSorting = !sortDirectionsMatch;\n                _this.addOrRemoveCssClass('ag-header-cell-sorted-mixed', isMultiSorting);\n            }\n        };\n        this.addManagedListener(this.eventService, Events.EVENT_SORT_CHANGED, onSortingChanged);\n        this.addManagedListener(this.eventService, Events.EVENT_COLUMN_ROW_GROUP_CHANGED, onSortingChanged);\n    };\n    HeaderComp.prototype.setupFilterIcon = function () {\n        if (!this.eFilter) {\n            return;\n        }\n        this.addManagedListener(this.params.column, Column.EVENT_FILTER_CHANGED, this.onFilterChanged.bind(this));\n        this.onFilterChanged();\n    };\n    HeaderComp.prototype.onFilterChanged = function () {\n        var filterPresent = this.params.column.isFilterActive();\n        setDisplayed(this.eFilter, filterPresent, { skipAriaHidden: true });\n    };\n    HeaderComp.TEMPLATE = \"<div class=\\\"ag-cell-label-container\\\" role=\\\"presentation\\\">\\n            <span ref=\\\"eMenu\\\" class=\\\"ag-header-icon ag-header-cell-menu-button\\\" aria-hidden=\\\"true\\\"></span>\\n            <div ref=\\\"eLabel\\\" class=\\\"ag-header-cell-label\\\" role=\\\"presentation\\\">\\n                <span ref=\\\"eText\\\" class=\\\"ag-header-cell-text\\\"></span>\\n                <span ref=\\\"eFilter\\\" class=\\\"ag-header-icon ag-header-label-icon ag-filter-icon\\\" aria-hidden=\\\"true\\\"></span>\\n                <ag-sort-indicator ref=\\\"eSortIndicator\\\"></ag-sort-indicator>\\n            </div>\\n        </div>\";\n    __decorate$27([\n        Autowired('sortController')\n    ], HeaderComp.prototype, \"sortController\", void 0);\n    __decorate$27([\n        Autowired('menuFactory')\n    ], HeaderComp.prototype, \"menuFactory\", void 0);\n    __decorate$27([\n        Autowired('columnModel')\n    ], HeaderComp.prototype, \"columnModel\", void 0);\n    __decorate$27([\n        RefSelector('eFilter')\n    ], HeaderComp.prototype, \"eFilter\", void 0);\n    __decorate$27([\n        RefSelector('eSortIndicator')\n    ], HeaderComp.prototype, \"eSortIndicator\", void 0);\n    __decorate$27([\n        RefSelector('eMenu')\n    ], HeaderComp.prototype, \"eMenu\", void 0);\n    __decorate$27([\n        RefSelector('eLabel')\n    ], HeaderComp.prototype, \"eLabel\", void 0);\n    __decorate$27([\n        RefSelector('eText')\n    ], HeaderComp.prototype, \"eText\", void 0);\n    __decorate$27([\n        RefSelector('eSortOrder')\n    ], HeaderComp.prototype, \"eSortOrder\", void 0);\n    __decorate$27([\n        RefSelector('eSortAsc')\n    ], HeaderComp.prototype, \"eSortAsc\", void 0);\n    __decorate$27([\n        RefSelector('eSortDesc')\n    ], HeaderComp.prototype, \"eSortDesc\", void 0);\n    __decorate$27([\n        RefSelector('eSortMixed')\n    ], HeaderComp.prototype, \"eSortMixed\", void 0);\n    __decorate$27([\n        RefSelector('eSortNone')\n    ], HeaderComp.prototype, \"eSortNone\", void 0);\n    return HeaderComp;\n}(Component));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$2j = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$26 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar HeaderGroupComp = /** @class */ (function (_super) {\n    __extends$2j(HeaderGroupComp, _super);\n    function HeaderGroupComp() {\n        return _super.call(this, HeaderGroupComp.TEMPLATE) || this;\n    }\n    // this is a user component, and IComponent has \"public destroy()\" as part of the interface.\n    // so we need to override destroy() just to make the method public.\n    HeaderGroupComp.prototype.destroy = function () {\n        _super.prototype.destroy.call(this);\n    };\n    HeaderGroupComp.prototype.init = function (params) {\n        this.params = params;\n        this.checkWarnings();\n        this.setupLabel();\n        this.addGroupExpandIcon();\n        this.setupExpandIcons();\n    };\n    HeaderGroupComp.prototype.checkWarnings = function () {\n        var paramsAny = this.params;\n        if (paramsAny.template) {\n            var message_1 = \"AG Grid: A template was provided for Header Group Comp - templates are only supported for Header Comps (not groups)\";\n            doOnce(function () { return console.warn(message_1); }, 'HeaderGroupComp.templateNotSupported');\n        }\n    };\n    HeaderGroupComp.prototype.setupExpandIcons = function () {\n        var _this = this;\n        this.addInIcon(\"columnGroupOpened\", \"agOpened\");\n        this.addInIcon(\"columnGroupClosed\", \"agClosed\");\n        var expandAction = function (event) {\n            if (isStopPropagationForAgGrid(event)) {\n                return;\n            }\n            var newExpandedValue = !_this.params.columnGroup.isExpanded();\n            _this.columnModel.setColumnGroupOpened(_this.params.columnGroup.getProvidedColumnGroup(), newExpandedValue, \"uiColumnExpanded\");\n        };\n        this.addTouchAndClickListeners(this.eCloseIcon, expandAction);\n        this.addTouchAndClickListeners(this.eOpenIcon, expandAction);\n        var stopPropagationAction = function (event) {\n            stopPropagationForAgGrid(event);\n        };\n        // adding stopPropagation to the double click for the icons prevents double click action happening\n        // when the icons are clicked. if the icons are double clicked, then the groups should open and\n        // then close again straight away. if we also listened to double click, then the group would open,\n        // close, then open, which is not what we want. double click should only action if the user double\n        // clicks outside of the icons.\n        this.addManagedListener(this.eCloseIcon, \"dblclick\", stopPropagationAction);\n        this.addManagedListener(this.eOpenIcon, \"dblclick\", stopPropagationAction);\n        this.addManagedListener(this.getGui(), \"dblclick\", expandAction);\n        this.updateIconVisibility();\n        var providedColumnGroup = this.params.columnGroup.getProvidedColumnGroup();\n        this.addManagedListener(providedColumnGroup, ProvidedColumnGroup.EVENT_EXPANDED_CHANGED, this.updateIconVisibility.bind(this));\n        this.addManagedListener(providedColumnGroup, ProvidedColumnGroup.EVENT_EXPANDABLE_CHANGED, this.updateIconVisibility.bind(this));\n    };\n    HeaderGroupComp.prototype.addTouchAndClickListeners = function (eElement, action) {\n        var touchListener = new TouchListener(eElement, true);\n        this.addManagedListener(touchListener, TouchListener.EVENT_TAP, action);\n        this.addDestroyFunc(function () { return touchListener.destroy(); });\n        this.addManagedListener(eElement, \"click\", action);\n    };\n    HeaderGroupComp.prototype.updateIconVisibility = function () {\n        var columnGroup = this.params.columnGroup;\n        if (columnGroup.isExpandable()) {\n            var expanded = this.params.columnGroup.isExpanded();\n            setDisplayed(this.eOpenIcon, expanded);\n            setDisplayed(this.eCloseIcon, !expanded);\n        }\n        else {\n            setDisplayed(this.eOpenIcon, false);\n            setDisplayed(this.eCloseIcon, false);\n        }\n    };\n    HeaderGroupComp.prototype.addInIcon = function (iconName, refName) {\n        var eIcon = createIconNoSpan(iconName, this.gridOptionsService, null);\n        if (eIcon) {\n            this.getRefElement(refName).appendChild(eIcon);\n        }\n    };\n    HeaderGroupComp.prototype.addGroupExpandIcon = function () {\n        if (!this.params.columnGroup.isExpandable()) {\n            setDisplayed(this.eOpenIcon, false);\n            setDisplayed(this.eCloseIcon, false);\n            return;\n        }\n    };\n    HeaderGroupComp.prototype.setupLabel = function () {\n        var _a;\n        // no renderer, default text render\n        var _b = this.params, displayName = _b.displayName, columnGroup = _b.columnGroup;\n        if (exists(displayName)) {\n            var displayNameSanitised = escapeString(displayName);\n            this.getRefElement('agLabel').innerHTML = displayNameSanitised;\n        }\n        this.addOrRemoveCssClass('ag-sticky-label', !!((_a = columnGroup.getColGroupDef()) === null || _a === void 0 ? void 0 : _a.stickyLabel));\n    };\n    HeaderGroupComp.TEMPLATE = \"<div class=\\\"ag-header-group-cell-label\\\" ref=\\\"agContainer\\\" role=\\\"presentation\\\">\\n            <span ref=\\\"agLabel\\\" class=\\\"ag-header-group-text\\\" role=\\\"presentation\\\"></span>\\n            <span ref=\\\"agOpened\\\" class=\\\"ag-header-icon ag-header-expand-icon ag-header-expand-icon-expanded\\\"></span>\\n            <span ref=\\\"agClosed\\\" class=\\\"ag-header-icon ag-header-expand-icon ag-header-expand-icon-collapsed\\\"></span>\\n        </div>\";\n    __decorate$26([\n        Autowired(\"columnModel\")\n    ], HeaderGroupComp.prototype, \"columnModel\", void 0);\n    __decorate$26([\n        RefSelector(\"agOpened\")\n    ], HeaderGroupComp.prototype, \"eOpenIcon\", void 0);\n    __decorate$26([\n        RefSelector(\"agClosed\")\n    ], HeaderGroupComp.prototype, \"eCloseIcon\", void 0);\n    return HeaderGroupComp;\n}(Component));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$2i = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar PopupComponent = /** @class */ (function (_super) {\n    __extends$2i(PopupComponent, _super);\n    function PopupComponent() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    PopupComponent.prototype.isPopup = function () {\n        return true;\n    };\n    PopupComponent.prototype.setParentComponent = function (container) {\n        container.addCssClass('ag-has-popup');\n        _super.prototype.setParentComponent.call(this, container);\n    };\n    PopupComponent.prototype.destroy = function () {\n        var parentComp = this.parentComponent;\n        var hasParent = parentComp && parentComp.isAlive();\n        if (hasParent) {\n            parentComp.getGui().classList.remove('ag-has-popup');\n        }\n        _super.prototype.destroy.call(this);\n    };\n    return PopupComponent;\n}(Component));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$2h = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$25 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar LargeTextCellEditor = /** @class */ (function (_super) {\n    __extends$2h(LargeTextCellEditor, _super);\n    function LargeTextCellEditor() {\n        return _super.call(this, LargeTextCellEditor.TEMPLATE) || this;\n    }\n    LargeTextCellEditor.prototype.init = function (params) {\n        this.params = params;\n        this.focusAfterAttached = params.cellStartedEdit;\n        this.eTextArea\n            .setMaxLength(params.maxLength || 200)\n            .setCols(params.cols || 60)\n            .setRows(params.rows || 10);\n        if (exists(params.value, true)) {\n            this.eTextArea.setValue(params.value.toString(), true);\n        }\n        this.addGuiEventListener('keydown', this.onKeyDown.bind(this));\n    };\n    LargeTextCellEditor.prototype.onKeyDown = function (event) {\n        var key = event.key;\n        if (key === KeyCode.LEFT ||\n            key === KeyCode.UP ||\n            key === KeyCode.RIGHT ||\n            key === KeyCode.DOWN ||\n            (event.shiftKey && key === KeyCode.ENTER)) { // shift+enter allows for newlines\n            event.stopPropagation();\n        }\n    };\n    LargeTextCellEditor.prototype.afterGuiAttached = function () {\n        var translate = this.localeService.getLocaleTextFunc();\n        this.eTextArea.setInputAriaLabel(translate('ariaInputEditor', 'Input Editor'));\n        if (this.focusAfterAttached) {\n            this.eTextArea.getFocusableElement().focus();\n        }\n    };\n    LargeTextCellEditor.prototype.getValue = function () {\n        return this.params.parseValue(this.eTextArea.getValue());\n    };\n    LargeTextCellEditor.TEMPLATE = \"<div class=\\\"ag-large-text\\\" tabindex=\\\"0\\\">\\n            <ag-input-text-area ref=\\\"eTextArea\\\" class=\\\"ag-large-text-input\\\"></ag-input-text-area>\\n        </div>\";\n    __decorate$25([\n        RefSelector(\"eTextArea\")\n    ], LargeTextCellEditor.prototype, \"eTextArea\", void 0);\n    return LargeTextCellEditor;\n}(PopupComponent));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$2g = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$24 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar SelectCellEditor = /** @class */ (function (_super) {\n    __extends$2g(SelectCellEditor, _super);\n    function SelectCellEditor() {\n        var _this = _super.call(this, '<div class=\"ag-cell-edit-wrapper\"><ag-select class=\"ag-cell-editor\" ref=\"eSelect\"></ag-select></div>') || this;\n        _this.startedByEnter = false;\n        return _this;\n    }\n    SelectCellEditor.prototype.init = function (params) {\n        var _this = this;\n        this.focusAfterAttached = params.cellStartedEdit;\n        if (missing(params.values)) {\n            console.warn('AG Grid: no values found for select cellEditor');\n            return;\n        }\n        this.startedByEnter = params.eventKey != null ? params.eventKey === KeyCode.ENTER : false;\n        var hasValue = false;\n        params.values.forEach(function (value) {\n            var option = { value: value };\n            var valueFormatted = _this.valueFormatterService.formatValue(params.column, null, value);\n            var valueFormattedExits = valueFormatted !== null && valueFormatted !== undefined;\n            option.text = valueFormattedExits ? valueFormatted : value;\n            _this.eSelect.addOption(option);\n            hasValue = hasValue || params.value === value;\n        });\n        if (hasValue) {\n            this.eSelect.setValue(params.value, true);\n        }\n        else if (params.values.length) {\n            this.eSelect.setValue(params.values[0], true);\n        }\n        // we don't want to add this if full row editing, otherwise selecting will stop the\n        // full row editing.\n        if (this.gridOptionsService.get('editType') !== 'fullRow') {\n            this.addManagedListener(this.eSelect, AgSelect.EVENT_ITEM_SELECTED, function () { return params.stopEditing(); });\n        }\n    };\n    SelectCellEditor.prototype.afterGuiAttached = function () {\n        if (this.focusAfterAttached) {\n            this.eSelect.getFocusableElement().focus();\n        }\n        if (this.startedByEnter) {\n            this.eSelect.showPicker();\n        }\n    };\n    SelectCellEditor.prototype.focusIn = function () {\n        this.eSelect.getFocusableElement().focus();\n    };\n    SelectCellEditor.prototype.getValue = function () {\n        return this.eSelect.getValue();\n    };\n    SelectCellEditor.prototype.isPopup = function () {\n        return false;\n    };\n    __decorate$24([\n        Autowired('valueFormatterService')\n    ], SelectCellEditor.prototype, \"valueFormatterService\", void 0);\n    __decorate$24([\n        RefSelector('eSelect')\n    ], SelectCellEditor.prototype, \"eSelect\", void 0);\n    return SelectCellEditor;\n}(PopupComponent));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$2f = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$23 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar TextCellEditor = /** @class */ (function (_super) {\n    __extends$2f(TextCellEditor, _super);\n    function TextCellEditor() {\n        return _super.call(this, TextCellEditor.TEMPLATE) || this;\n    }\n    TextCellEditor.prototype.init = function (params) {\n        this.params = params;\n        var eInput = this.eInput;\n        var startValue;\n        // cellStartedEdit is only false if we are doing fullRow editing\n        if (params.cellStartedEdit) {\n            this.focusAfterAttached = true;\n            if (params.eventKey === KeyCode.BACKSPACE || params.eventKey === KeyCode.DELETE) {\n                startValue = '';\n            }\n            else if (params.charPress) {\n                startValue = params.charPress;\n            }\n            else {\n                startValue = this.getStartValue(params);\n                if (params.eventKey !== KeyCode.F2) {\n                    this.highlightAllOnFocus = true;\n                }\n            }\n        }\n        else {\n            this.focusAfterAttached = false;\n            startValue = this.getStartValue(params);\n        }\n        if (startValue != null) {\n            eInput.setValue(startValue, true);\n        }\n        if (params.maxLength != null) {\n            eInput.setMaxLength(params.maxLength);\n        }\n        this.addManagedListener(eInput.getGui(), 'keydown', function (event) {\n            var key = event.key;\n            if (key === KeyCode.PAGE_UP || key === KeyCode.PAGE_DOWN) {\n                event.preventDefault();\n            }\n        });\n    };\n    TextCellEditor.prototype.afterGuiAttached = function () {\n        var translate = this.localeService.getLocaleTextFunc();\n        var eInput = this.eInput;\n        eInput.setInputAriaLabel(translate('ariaInputEditor', 'Input Editor'));\n        if (!this.focusAfterAttached) {\n            return;\n        }\n        // Added for AG-3238. We can't remove this explicit focus() because Chrome requires an input\n        // to be focused before setSelectionRange will work. But it triggers a bug in Safari where\n        // explicitly focusing then blurring an empty field will cause the parent container to scroll.\n        if (!isBrowserSafari()) {\n            eInput.getFocusableElement().focus();\n        }\n        var inputEl = eInput.getInputElement();\n        if (this.highlightAllOnFocus) {\n            inputEl.select();\n        }\n        else {\n            // when we started editing, we want the caret at the end, not the start.\n            // this comes into play in two scenarios:\n            //   a) when user hits F2\n            //   b) when user hits a printable character\n            var value = eInput.getValue();\n            var len = (exists(value) && value.length) || 0;\n            if (len) {\n                inputEl.setSelectionRange(len, len);\n            }\n        }\n    };\n    // gets called when tabbing trough cells and in full row edit mode\n    TextCellEditor.prototype.focusIn = function () {\n        var eInput = this.eInput;\n        var focusEl = eInput.getFocusableElement();\n        var inputEl = eInput.getInputElement();\n        focusEl.focus();\n        inputEl.select();\n    };\n    TextCellEditor.prototype.getValue = function () {\n        var eInput = this.eInput;\n        return this.params.parseValue(eInput.getValue());\n    };\n    TextCellEditor.prototype.getStartValue = function (params) {\n        var formatValue = params.useFormatter || params.column.getColDef().refData;\n        return formatValue ? params.formatValue(params.value) : params.value;\n    };\n    TextCellEditor.prototype.isPopup = function () {\n        return false;\n    };\n    TextCellEditor.TEMPLATE = \"<div class=\\\"ag-cell-edit-wrapper\\\">\\n            <ag-input-text-field class=\\\"ag-cell-editor\\\" ref=\\\"eInput\\\"></ag-input-text-field>\\n        </div>\";\n    __decorate$23([\n        RefSelector('eInput')\n    ], TextCellEditor.prototype, \"eInput\", void 0);\n    return TextCellEditor;\n}(PopupComponent));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$2e = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$22 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar ARROW_UP = '\\u2191';\nvar ARROW_DOWN = '\\u2193';\nvar AnimateShowChangeCellRenderer = /** @class */ (function (_super) {\n    __extends$2e(AnimateShowChangeCellRenderer, _super);\n    function AnimateShowChangeCellRenderer() {\n        var _this = _super.call(this, AnimateShowChangeCellRenderer.TEMPLATE) || this;\n        _this.refreshCount = 0;\n        return _this;\n    }\n    AnimateShowChangeCellRenderer.prototype.init = function (params) {\n        // this.params = params;\n        this.eValue = this.queryForHtmlElement('.ag-value-change-value');\n        this.eDelta = this.queryForHtmlElement('.ag-value-change-delta');\n        this.refresh(params);\n    };\n    AnimateShowChangeCellRenderer.prototype.showDelta = function (params, delta) {\n        var absDelta = Math.abs(delta);\n        var valueFormatted = params.formatValue(absDelta);\n        var valueToUse = exists(valueFormatted) ? valueFormatted : absDelta;\n        var deltaUp = (delta >= 0);\n        if (deltaUp) {\n            this.eDelta.innerHTML = ARROW_UP + valueToUse;\n        }\n        else {\n            // because negative, use ABS to remove sign\n            this.eDelta.innerHTML = ARROW_DOWN + valueToUse;\n        }\n        this.eDelta.classList.toggle('ag-value-change-delta-up', deltaUp);\n        this.eDelta.classList.toggle('ag-value-change-delta-down', !deltaUp);\n    };\n    AnimateShowChangeCellRenderer.prototype.setTimerToRemoveDelta = function () {\n        var _this = this;\n        // the refreshCount makes sure that if the value updates again while\n        // the below timer is waiting, then the below timer will realise it\n        // is not the most recent and will not try to remove the delta value.\n        this.refreshCount++;\n        var refreshCountCopy = this.refreshCount;\n        window.setTimeout(function () {\n            if (refreshCountCopy === _this.refreshCount) {\n                _this.hideDeltaValue();\n            }\n        }, 2000);\n    };\n    AnimateShowChangeCellRenderer.prototype.hideDeltaValue = function () {\n        this.eValue.classList.remove('ag-value-change-value-highlight');\n        clearElement(this.eDelta);\n    };\n    AnimateShowChangeCellRenderer.prototype.refresh = function (params) {\n        var value = params.value;\n        if (value === this.lastValue) {\n            return false;\n        }\n        if (exists(params.valueFormatted)) {\n            this.eValue.innerHTML = params.valueFormatted;\n        }\n        else if (exists(params.value)) {\n            this.eValue.innerHTML = value;\n        }\n        else {\n            clearElement(this.eValue);\n        }\n        // we don't show the delta if we are in the middle of a filter. see comment on FilterManager\n        // with regards processingFilterChange\n        if (this.filterManager.isSuppressFlashingCellsBecauseFiltering()) {\n            return false;\n        }\n        if (typeof value === 'number' && typeof this.lastValue === 'number') {\n            var delta = value - this.lastValue;\n            this.showDelta(params, delta);\n        }\n        // highlight the current value, but only if it's not new, otherwise it\n        // would get highlighted first time the value is shown\n        if (this.lastValue) {\n            this.eValue.classList.add('ag-value-change-value-highlight');\n        }\n        this.setTimerToRemoveDelta();\n        this.lastValue = value;\n        return true;\n    };\n    AnimateShowChangeCellRenderer.TEMPLATE = '<span>' +\n        '<span class=\"ag-value-change-delta\"></span>' +\n        '<span class=\"ag-value-change-value\"></span>' +\n        '</span>';\n    __decorate$22([\n        Autowired('filterManager')\n    ], AnimateShowChangeCellRenderer.prototype, \"filterManager\", void 0);\n    return AnimateShowChangeCellRenderer;\n}(Component));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$2d = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$21 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar AnimateSlideCellRenderer = /** @class */ (function (_super) {\n    __extends$2d(AnimateSlideCellRenderer, _super);\n    function AnimateSlideCellRenderer() {\n        var _this = _super.call(this, AnimateSlideCellRenderer.TEMPLATE) || this;\n        _this.refreshCount = 0;\n        _this.eCurrent = _this.queryForHtmlElement('.ag-value-slide-current');\n        return _this;\n    }\n    AnimateSlideCellRenderer.prototype.init = function (params) {\n        this.refresh(params);\n    };\n    AnimateSlideCellRenderer.prototype.addSlideAnimation = function () {\n        var _this = this;\n        this.refreshCount++;\n        // below we keep checking this, and stop working on the animation\n        // if it no longer matches - this means another animation has started\n        // and this one is stale.\n        var refreshCountCopy = this.refreshCount;\n        // if old animation, remove it\n        if (this.ePrevious) {\n            this.getGui().removeChild(this.ePrevious);\n        }\n        this.ePrevious = loadTemplate('<span class=\"ag-value-slide-previous ag-value-slide-out\"></span>');\n        this.ePrevious.innerHTML = this.eCurrent.innerHTML;\n        this.getGui().insertBefore(this.ePrevious, this.eCurrent);\n        // having timeout of 0 allows use to skip to the next css turn,\n        // so we know the previous css classes have been applied. so the\n        // complex set of setTimeout below creates the animation\n        window.setTimeout(function () {\n            if (refreshCountCopy !== _this.refreshCount) {\n                return;\n            }\n            _this.ePrevious.classList.add('ag-value-slide-out-end');\n        }, 50);\n        window.setTimeout(function () {\n            if (refreshCountCopy !== _this.refreshCount) {\n                return;\n            }\n            _this.getGui().removeChild(_this.ePrevious);\n            _this.ePrevious = null;\n        }, 3000);\n    };\n    AnimateSlideCellRenderer.prototype.refresh = function (params) {\n        var value = params.value;\n        if (missing(value)) {\n            value = '';\n        }\n        if (value === this.lastValue) {\n            return false;\n        }\n        // we don't show the delta if we are in the middle of a filter. see comment on FilterManager\n        // with regards processingFilterChange\n        if (this.filterManager.isSuppressFlashingCellsBecauseFiltering()) {\n            return false;\n        }\n        this.addSlideAnimation();\n        this.lastValue = value;\n        if (exists(params.valueFormatted)) {\n            this.eCurrent.innerHTML = params.valueFormatted;\n        }\n        else if (exists(params.value)) {\n            this.eCurrent.innerHTML = value;\n        }\n        else {\n            clearElement(this.eCurrent);\n        }\n        return true;\n    };\n    AnimateSlideCellRenderer.TEMPLATE = \"<span>\\n            <span class=\\\"ag-value-slide-current\\\"></span>\\n        </span>\";\n    __decorate$21([\n        Autowired('filterManager')\n    ], AnimateSlideCellRenderer.prototype, \"filterManager\", void 0);\n    return AnimateSlideCellRenderer;\n}(Component));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __assign$e = (undefined && undefined.__assign) || function () {\n    __assign$e = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign$e.apply(this, arguments);\n};\nvar RowNode = /** @class */ (function () {\n    function RowNode(beans) {\n        /** The current row index. If the row is filtered out or in a collapsed group, this value will be `null`. */\n        this.rowIndex = null;\n        /** The key for the group eg Ireland, UK, USA */\n        this.key = null;\n        /** Children mapped by the pivot columns. */\n        this.childrenMapped = {};\n        /**\n         * This will be `true` if it has a rowIndex assigned, otherwise `false`.\n         */\n        this.displayed = false;\n        /** The row top position in pixels. */\n        this.rowTop = null;\n        /** The top pixel for this row last time, makes sense if data set was ordered or filtered,\n         * it is used so new rows can animate in from their old position. */\n        this.oldRowTop = null;\n        /** `true` by default - can be overridden via gridOptions.isRowSelectable(rowNode) */\n        this.selectable = true;\n        /** Used by sorting service - to give deterministic sort to groups. Previously we\n         * just id for this, however id is a string and had slower sorting compared to numbers. */\n        this.__objectId = RowNode.OBJECT_ID_SEQUENCE++;\n        /** When one or more Columns are using autoHeight, this keeps track of height of each autoHeight Cell,\n         * indexed by the Column ID. */\n        this.__autoHeights = {};\n        /** `true` when nodes with the same id are being removed and added as part of the same batch transaction */\n        this.alreadyRendered = false;\n        this.highlighted = null;\n        this.hovered = false;\n        this.selected = false;\n        this.beans = beans;\n    }\n    /**\n     * Replaces the data on the `rowNode`. When this method is called, the grid will refresh the entire rendered row if it is displayed.\n     */\n    RowNode.prototype.setData = function (data) {\n        this.setDataCommon(data, false);\n    };\n    // similar to setRowData, however it is expected that the data is the same data item. this\n    // is intended to be used with Redux type stores, where the whole data can be changed. we are\n    // guaranteed that the data is the same entity (so grid doesn't need to worry about the id of the\n    // underlying data changing, hence doesn't need to worry about selection). the grid, upon receiving\n    // dataChanged event, will refresh the cells rather than rip them all out (so user can show transitions).\n    /**\n     * Updates the data on the `rowNode`. When this method is called, the grid will refresh the entire rendered row if it is displayed.\n     */\n    RowNode.prototype.updateData = function (data) {\n        this.setDataCommon(data, true);\n    };\n    RowNode.prototype.setDataCommon = function (data, update) {\n        var oldData = this.data;\n        this.data = data;\n        this.beans.valueCache.onDataChanged();\n        this.updateDataOnDetailNode();\n        this.checkRowSelectable();\n        this.resetQuickFilterAggregateText();\n        var event = this.createDataChangedEvent(data, oldData, update);\n        this.dispatchLocalEvent(event);\n    };\n    // when we are doing master / detail, the detail node is lazy created, but then kept around.\n    // so if we show / hide the detail, the same detail rowNode is used. so we need to keep the data\n    // in sync, otherwise expand/collapse of the detail would still show the old values.\n    RowNode.prototype.updateDataOnDetailNode = function () {\n        if (this.detailNode) {\n            this.detailNode.data = this.data;\n        }\n    };\n    RowNode.prototype.createDataChangedEvent = function (newData, oldData, update) {\n        return {\n            type: RowNode.EVENT_DATA_CHANGED,\n            node: this,\n            oldData: oldData,\n            newData: newData,\n            update: update\n        };\n    };\n    RowNode.prototype.createLocalRowEvent = function (type) {\n        return {\n            type: type,\n            node: this\n        };\n    };\n    RowNode.prototype.getRowIndexString = function () {\n        if (this.rowPinned === 'top') {\n            return 't-' + this.rowIndex;\n        }\n        if (this.rowPinned === 'bottom') {\n            return 'b-' + this.rowIndex;\n        }\n        return this.rowIndex.toString();\n    };\n    RowNode.prototype.createDaemonNode = function () {\n        var oldNode = new RowNode(this.beans);\n        // just copy the id and data, this is enough for the node to be used\n        // in the selection controller (the selection controller is the only\n        // place where daemon nodes can live).\n        oldNode.id = this.id;\n        oldNode.data = this.data;\n        oldNode.__daemon = true;\n        oldNode.selected = this.selected;\n        oldNode.level = this.level;\n        return oldNode;\n    };\n    RowNode.prototype.setDataAndId = function (data, id) {\n        var oldNode = exists(this.id) ? this.createDaemonNode() : null;\n        var oldData = this.data;\n        this.data = data;\n        this.updateDataOnDetailNode();\n        this.setId(id);\n        this.beans.selectionService.syncInRowNode(this, oldNode);\n        this.checkRowSelectable();\n        var event = this.createDataChangedEvent(data, oldData, false);\n        this.dispatchLocalEvent(event);\n    };\n    RowNode.prototype.checkRowSelectable = function () {\n        var isRowSelectableFunc = this.beans.gridOptionsService.get('isRowSelectable');\n        this.setRowSelectable(isRowSelectableFunc ? isRowSelectableFunc(this) : true);\n    };\n    RowNode.prototype.setRowSelectable = function (newVal) {\n        if (this.selectable !== newVal) {\n            this.selectable = newVal;\n            if (this.eventService) {\n                this.eventService.dispatchEvent(this.createLocalRowEvent(RowNode.EVENT_SELECTABLE_CHANGED));\n            }\n            var isGroupSelectsChildren = this.beans.gridOptionsService.is('groupSelectsChildren');\n            if (isGroupSelectsChildren) {\n                var selected = this.calculateSelectedFromChildren();\n                this.setSelectedParams({ newValue: selected !== null && selected !== void 0 ? selected : false, source: 'selectableChanged' });\n            }\n        }\n    };\n    RowNode.prototype.setId = function (id) {\n        // see if user is providing the id's\n        var getRowIdFunc = this.beans.gridOptionsService.getRowIdFunc();\n        if (getRowIdFunc) {\n            // if user is providing the id's, then we set the id only after the data has been set.\n            // this is important for virtual pagination and viewport, where empty rows exist.\n            if (this.data) {\n                // we pass 'true' as we skip this level when generating keys,\n                // as we don't always have the key for this level (eg when updating\n                // data via transaction on SSRM, we are getting key to look up the\n                // RowNode, don't have the RowNode yet, thus no way to get the current key)\n                var parentKeys = this.getGroupKeys(true);\n                this.id = getRowIdFunc({\n                    data: this.data,\n                    parentKeys: parentKeys.length > 0 ? parentKeys : undefined,\n                    level: this.level\n                });\n                // make sure id provided doesn't start with 'row-group-' as this is reserved. also check that\n                // it has 'startsWith' in case the user provided a number.\n                if (this.id !== null && typeof this.id === 'string' && this.id.startsWith(RowNode.ID_PREFIX_ROW_GROUP)) {\n                    console.error(\"AG Grid: Row IDs cannot start with \" + RowNode.ID_PREFIX_ROW_GROUP + \", this is a reserved prefix for AG Grid's row grouping feature.\");\n                }\n                // force id to be a string\n                if (this.id !== null && typeof this.id !== 'string') {\n                    this.id = '' + this.id;\n                }\n            }\n            else {\n                // this can happen if user has set blank into the rowNode after the row previously\n                // having data. this happens in virtual page row model, when data is delete and\n                // the page is refreshed.\n                this.id = undefined;\n            }\n        }\n        else {\n            this.id = id;\n        }\n    };\n    RowNode.prototype.getGroupKeys = function (excludeSelf) {\n        if (excludeSelf === void 0) { excludeSelf = false; }\n        var keys = [];\n        var pointer = this;\n        if (excludeSelf) {\n            pointer = pointer.parent;\n        }\n        while (pointer && pointer.level >= 0) {\n            keys.push(pointer.key);\n            pointer = pointer.parent;\n        }\n        keys.reverse();\n        return keys;\n    };\n    RowNode.prototype.isPixelInRange = function (pixel) {\n        if (!exists(this.rowTop) || !exists(this.rowHeight)) {\n            return false;\n        }\n        return pixel >= this.rowTop && pixel < (this.rowTop + this.rowHeight);\n    };\n    RowNode.prototype.setFirstChild = function (firstChild) {\n        if (this.firstChild === firstChild) {\n            return;\n        }\n        this.firstChild = firstChild;\n        if (this.eventService) {\n            this.eventService.dispatchEvent(this.createLocalRowEvent(RowNode.EVENT_FIRST_CHILD_CHANGED));\n        }\n    };\n    RowNode.prototype.setLastChild = function (lastChild) {\n        if (this.lastChild === lastChild) {\n            return;\n        }\n        this.lastChild = lastChild;\n        if (this.eventService) {\n            this.eventService.dispatchEvent(this.createLocalRowEvent(RowNode.EVENT_LAST_CHILD_CHANGED));\n        }\n    };\n    RowNode.prototype.setChildIndex = function (childIndex) {\n        if (this.childIndex === childIndex) {\n            return;\n        }\n        this.childIndex = childIndex;\n        if (this.eventService) {\n            this.eventService.dispatchEvent(this.createLocalRowEvent(RowNode.EVENT_CHILD_INDEX_CHANGED));\n        }\n    };\n    RowNode.prototype.setRowTop = function (rowTop) {\n        this.oldRowTop = this.rowTop;\n        if (this.rowTop === rowTop) {\n            return;\n        }\n        this.rowTop = rowTop;\n        if (this.eventService) {\n            this.eventService.dispatchEvent(this.createLocalRowEvent(RowNode.EVENT_TOP_CHANGED));\n        }\n        this.setDisplayed(rowTop !== null);\n    };\n    RowNode.prototype.clearRowTopAndRowIndex = function () {\n        this.oldRowTop = null;\n        this.setRowTop(null);\n        this.setRowIndex(null);\n    };\n    RowNode.prototype.setDisplayed = function (displayed) {\n        if (this.displayed === displayed) {\n            return;\n        }\n        this.displayed = displayed;\n        if (this.eventService) {\n            this.eventService.dispatchEvent(this.createLocalRowEvent(RowNode.EVENT_DISPLAYED_CHANGED));\n        }\n    };\n    RowNode.prototype.setDragging = function (dragging) {\n        if (this.dragging === dragging) {\n            return;\n        }\n        this.dragging = dragging;\n        if (this.eventService) {\n            this.eventService.dispatchEvent(this.createLocalRowEvent(RowNode.EVENT_DRAGGING_CHANGED));\n        }\n    };\n    RowNode.prototype.setHighlighted = function (highlighted) {\n        if (highlighted === this.highlighted) {\n            return;\n        }\n        this.highlighted = highlighted;\n        if (this.eventService) {\n            this.eventService.dispatchEvent(this.createLocalRowEvent(RowNode.EVENT_HIGHLIGHT_CHANGED));\n        }\n    };\n    RowNode.prototype.setHovered = function (hovered) {\n        if (this.hovered === hovered) {\n            return;\n        }\n        this.hovered = hovered;\n    };\n    RowNode.prototype.isHovered = function () {\n        return this.hovered;\n    };\n    RowNode.prototype.setAllChildrenCount = function (allChildrenCount) {\n        if (this.allChildrenCount === allChildrenCount) {\n            return;\n        }\n        this.allChildrenCount = allChildrenCount;\n        if (this.eventService) {\n            this.eventService.dispatchEvent(this.createLocalRowEvent(RowNode.EVENT_ALL_CHILDREN_COUNT_CHANGED));\n        }\n    };\n    RowNode.prototype.setMaster = function (master) {\n        if (this.master === master) {\n            return;\n        }\n        // if changing AWAY from master, then unexpand, otherwise\n        // next time it's shown it is expanded again\n        if (this.master && !master) {\n            this.expanded = false;\n        }\n        this.master = master;\n        if (this.eventService) {\n            this.eventService.dispatchEvent(this.createLocalRowEvent(RowNode.EVENT_MASTER_CHANGED));\n        }\n    };\n    RowNode.prototype.setGroup = function (group) {\n        if (this.group === group) {\n            return;\n        }\n        // if we used to be a group, and no longer, then close the node\n        if (this.group && !group) {\n            this.expanded = false;\n        }\n        this.group = group;\n        this.updateHasChildren();\n        if (this.eventService) {\n            this.eventService.dispatchEvent(this.createLocalRowEvent(RowNode.EVENT_GROUP_CHANGED));\n        }\n    };\n    /**\n     * Sets the row height.\n     * Call if you want to change the height initially assigned to the row.\n     * After calling, you must call `api.onRowHeightChanged()` so the grid knows it needs to work out the placement of the rows. */\n    RowNode.prototype.setRowHeight = function (rowHeight, estimated) {\n        if (estimated === void 0) { estimated = false; }\n        this.rowHeight = rowHeight;\n        this.rowHeightEstimated = estimated;\n        if (this.eventService) {\n            this.eventService.dispatchEvent(this.createLocalRowEvent(RowNode.EVENT_HEIGHT_CHANGED));\n        }\n    };\n    RowNode.prototype.setRowAutoHeight = function (cellHeight, column) {\n        if (!this.__autoHeights) {\n            this.__autoHeights = {};\n        }\n        this.__autoHeights[column.getId()] = cellHeight;\n        if (cellHeight != null) {\n            if (this.checkAutoHeightsDebounced == null) {\n                this.checkAutoHeightsDebounced = debounce(this.checkAutoHeights.bind(this), 1);\n            }\n            this.checkAutoHeightsDebounced();\n        }\n    };\n    RowNode.prototype.checkAutoHeights = function () {\n        var _this = this;\n        var notAllPresent = false;\n        var nonePresent = true;\n        var newRowHeight = 0;\n        var autoHeights = this.__autoHeights;\n        if (autoHeights == null) {\n            return;\n        }\n        var displayedAutoHeightCols = this.beans.columnModel.getAllDisplayedAutoHeightCols();\n        displayedAutoHeightCols.forEach(function (col) {\n            var cellHeight = autoHeights[col.getId()];\n            if (cellHeight == null) {\n                // If column spanning is active a column may not provide auto height for a row if that\n                // cell is not present for the given row due to a previous cell spanning over the auto height column.\n                if (_this.beans.columnModel.isColSpanActive()) {\n                    var activeColsForRow = [];\n                    switch (col.getPinned()) {\n                        case 'left':\n                            activeColsForRow = _this.beans.columnModel.getDisplayedLeftColumnsForRow(_this);\n                            break;\n                        case 'right':\n                            activeColsForRow = _this.beans.columnModel.getDisplayedRightColumnsForRow(_this);\n                            break;\n                        case null:\n                            activeColsForRow = _this.beans.columnModel.getViewportCenterColumnsForRow(_this);\n                            break;\n                    }\n                    if (activeColsForRow.includes(col)) {\n                        // Column is present in the row, i.e not spanned over, but no auto height was provided so we cannot calculate the row height\n                        notAllPresent = true;\n                        return;\n                    }\n                    // Ignore this column as it is spanned over and not present in the row\n                    cellHeight = -1;\n                }\n                else {\n                    notAllPresent = true;\n                    return;\n                }\n            }\n            else {\n                // At least one auto height is present\n                nonePresent = false;\n            }\n            if (cellHeight > newRowHeight) {\n                newRowHeight = cellHeight;\n            }\n        });\n        if (notAllPresent) {\n            return;\n        }\n        // we take min of 10, so we don't adjust for empty rows. if <10, we put to default.\n        // this prevents the row starting very small when waiting for async components,\n        // which would then mean the grid squashes in far to many rows (as small heights\n        // means more rows fit in) which looks crap. so best ignore small values and assume\n        // we are still waiting for values to render.\n        if (nonePresent || newRowHeight < 10) {\n            newRowHeight = this.beans.gridOptionsService.getRowHeightForNode(this).height;\n        }\n        if (newRowHeight == this.rowHeight) {\n            return;\n        }\n        this.setRowHeight(newRowHeight);\n        var rowModel = this.beans.rowModel;\n        if (rowModel.onRowHeightChangedDebounced) {\n            rowModel.onRowHeightChangedDebounced();\n        }\n    };\n    RowNode.prototype.setRowIndex = function (rowIndex) {\n        if (this.rowIndex === rowIndex) {\n            return;\n        }\n        this.rowIndex = rowIndex;\n        if (this.eventService) {\n            this.eventService.dispatchEvent(this.createLocalRowEvent(RowNode.EVENT_ROW_INDEX_CHANGED));\n        }\n    };\n    RowNode.prototype.setUiLevel = function (uiLevel) {\n        if (this.uiLevel === uiLevel) {\n            return;\n        }\n        this.uiLevel = uiLevel;\n        if (this.eventService) {\n            this.eventService.dispatchEvent(this.createLocalRowEvent(RowNode.EVENT_UI_LEVEL_CHANGED));\n        }\n    };\n    /**\n     * Set the expanded state of this rowNode. Pass `true` to expand and `false` to collapse.\n     */\n    RowNode.prototype.setExpanded = function (expanded, e) {\n        if (this.expanded === expanded) {\n            return;\n        }\n        this.expanded = expanded;\n        if (this.eventService) {\n            this.eventService.dispatchEvent(this.createLocalRowEvent(RowNode.EVENT_EXPANDED_CHANGED));\n        }\n        var event = Object.assign({}, this.createGlobalRowEvent(Events.EVENT_ROW_GROUP_OPENED), {\n            expanded: expanded,\n            event: e || null\n        });\n        this.beans.rowNodeEventThrottle.dispatchExpanded(event);\n        // when using footers we need to refresh the group row, as the aggregation\n        // values jump between group and footer\n        if (this.beans.gridOptionsService.is('groupIncludeFooter')) {\n            this.beans.rowRenderer.refreshCells({ rowNodes: [this] });\n        }\n    };\n    RowNode.prototype.createGlobalRowEvent = function (type) {\n        return {\n            type: type,\n            node: this,\n            data: this.data,\n            rowIndex: this.rowIndex,\n            rowPinned: this.rowPinned,\n            context: this.beans.gridOptionsService.context,\n            api: this.beans.gridOptionsService.api,\n            columnApi: this.beans.gridOptionsService.columnApi\n        };\n    };\n    RowNode.prototype.dispatchLocalEvent = function (event) {\n        if (this.eventService) {\n            this.eventService.dispatchEvent(event);\n        }\n    };\n    /**\n     * Replaces the value on the `rowNode` for the specified column. When complete,\n     * the grid will refresh the rendered cell on the required row only.\n     * **Note**: This method on fires `onCellEditRequest` when the Grid is on **Read Only** mode.\n     *\n     * @param colKey The column where the value should be updated\n     * @param newValue The new value\n     * @param eventSource The source of the event\n     * @returns `True` if the value was changed, otherwise `False`.\n     */\n    RowNode.prototype.setDataValue = function (colKey, newValue, eventSource) {\n        var _this = this;\n        var getColumnFromKey = function () {\n            var _a;\n            if (typeof colKey !== 'string') {\n                return colKey;\n            }\n            // if in pivot mode, grid columns wont include primary columns\n            return (_a = _this.beans.columnModel.getGridColumn(colKey)) !== null && _a !== void 0 ? _a : _this.beans.columnModel.getPrimaryColumn(colKey);\n        };\n        // When it is done via the editors, no 'cell changed' event gets fired, as it's assumed that\n        // the cell knows about the change given it's in charge of the editing.\n        // this method is for the client to call, so the cell listens for the change\n        // event, and also flashes the cell when the change occurs.\n        var column = getColumnFromKey();\n        var oldValue = this.getValueFromValueService(column);\n        if (this.beans.gridOptionsService.is('readOnlyEdit')) {\n            this.dispatchEventForSaveValueReadOnly(column, oldValue, newValue, eventSource);\n            return false;\n        }\n        var valueChanged = this.beans.valueService.setValue(this, column, newValue, eventSource);\n        this.dispatchCellChangedEvent(column, newValue, oldValue);\n        this.checkRowSelectable();\n        return valueChanged;\n    };\n    RowNode.prototype.getValueFromValueService = function (column) {\n        // if we don't check this, then the grid will render leaf groups as open even if we are not\n        // allowing the user to open leaf groups. confused? remember for pivot mode we don't allow\n        // opening leaf groups, so we have to force leafGroups to be closed in case the user expanded\n        // them via the API, or user user expanded them in the UI before turning on pivot mode\n        var lockedClosedGroup = this.leafGroup && this.beans.columnModel.isPivotMode();\n        var isOpenGroup = this.group && this.expanded && !this.footer && !lockedClosedGroup;\n        // are we showing group footers\n        var groupFootersEnabled = this.beans.gridOptionsService.is('groupIncludeFooter');\n        // if doing footers, we normally don't show agg data at group level when group is open\n        var groupAlwaysShowAggData = this.beans.gridOptionsService.is('groupSuppressBlankHeader');\n        // if doing grouping and footers, we don't want to include the agg value\n        // in the header when the group is open\n        var ignoreAggData = (isOpenGroup && groupFootersEnabled) && !groupAlwaysShowAggData;\n        var value = this.beans.valueService.getValue(column, this, false, ignoreAggData);\n        return value;\n    };\n    RowNode.prototype.dispatchEventForSaveValueReadOnly = function (column, oldValue, newValue, eventSource) {\n        var event = {\n            type: Events.EVENT_CELL_EDIT_REQUEST,\n            event: null,\n            rowIndex: this.rowIndex,\n            rowPinned: this.rowPinned,\n            column: column,\n            colDef: column.getColDef(),\n            context: this.beans.gridOptionsService.context,\n            api: this.beans.gridOptionsService.api,\n            columnApi: this.beans.gridOptionsService.columnApi,\n            data: this.data,\n            node: this,\n            oldValue: oldValue,\n            newValue: newValue,\n            value: newValue,\n            source: eventSource\n        };\n        this.beans.eventService.dispatchEvent(event);\n    };\n    RowNode.prototype.setGroupValue = function (colKey, newValue) {\n        var column = this.beans.columnModel.getGridColumn(colKey);\n        if (missing(this.groupData)) {\n            this.groupData = {};\n        }\n        var columnId = column.getColId();\n        var oldValue = this.groupData[columnId];\n        if (oldValue === newValue) {\n            return;\n        }\n        this.groupData[columnId] = newValue;\n        this.dispatchCellChangedEvent(column, newValue, oldValue);\n    };\n    // sets the data for an aggregation\n    RowNode.prototype.setAggData = function (newAggData) {\n        var _this = this;\n        // find out all keys that could potentially change\n        var colIds = getAllKeysInObjects([this.aggData, newAggData]);\n        var oldAggData = this.aggData;\n        this.aggData = newAggData;\n        // if no event service, nobody has registered for events, so no need fire event\n        if (this.eventService) {\n            colIds.forEach(function (colId) {\n                var column = _this.beans.columnModel.getGridColumn(colId);\n                var value = _this.aggData ? _this.aggData[colId] : undefined;\n                var oldValue = oldAggData ? oldAggData[colId] : undefined;\n                _this.dispatchCellChangedEvent(column, value, oldValue);\n            });\n        }\n    };\n    RowNode.prototype.updateHasChildren = function () {\n        // in CSRM, the group property will be set before the childrenAfterGroup property, check both to prevent flickering\n        var newValue = (this.group && !this.footer) || (this.childrenAfterGroup && this.childrenAfterGroup.length > 0);\n        var isSsrm = this.beans.gridOptionsService.isRowModelType('serverSide');\n        if (isSsrm) {\n            var isTreeData = this.beans.gridOptionsService.isTreeData();\n            var isGroupFunc = this.beans.gridOptionsService.get('isServerSideGroup');\n            // stubs and footers can never have children, as they're grid rows. if tree data the presence of children\n            // is determined by the isServerSideGroup callback, if not tree data then the rows group property will be set.\n            newValue = !this.stub && !this.footer && (isTreeData ? !!isGroupFunc && isGroupFunc(this.data) : !!this.group);\n        }\n        if (newValue !== this.__hasChildren) {\n            this.__hasChildren = !!newValue;\n            if (this.eventService) {\n                this.eventService.dispatchEvent(this.createLocalRowEvent(RowNode.EVENT_HAS_CHILDREN_CHANGED));\n            }\n        }\n    };\n    RowNode.prototype.hasChildren = function () {\n        if (this.__hasChildren == null) {\n            this.updateHasChildren();\n        }\n        return this.__hasChildren;\n    };\n    RowNode.prototype.isEmptyRowGroupNode = function () {\n        return this.group && missingOrEmpty(this.childrenAfterGroup);\n    };\n    RowNode.prototype.dispatchCellChangedEvent = function (column, newValue, oldValue) {\n        var cellChangedEvent = {\n            type: RowNode.EVENT_CELL_CHANGED,\n            node: this,\n            column: column,\n            newValue: newValue,\n            oldValue: oldValue\n        };\n        this.dispatchLocalEvent(cellChangedEvent);\n    };\n    /**\n     * The first time `quickFilter` runs, the grid creates a one-off string representation of the row.\n     * This string is then used for the quick filter instead of hitting each column separately.\n     * When you edit, using grid editing, this string gets cleared down.\n     * However if you edit without using grid editing, you will need to clear this string down for the row to be updated with the new values.\n     * Otherwise new values will not work with the `quickFilter`. */\n    RowNode.prototype.resetQuickFilterAggregateText = function () {\n        this.quickFilterAggregateText = null;\n    };\n    /** Returns:\n    * - `true` if the node can be expanded, i.e it is a group or master row.\n    * - `false` if the node cannot be expanded\n    */\n    RowNode.prototype.isExpandable = function () {\n        return (this.hasChildren() && !this.footer) || this.master ? true : false;\n    };\n    /** Returns:\n     * - `true` if node is selected,\n     * - `false` if the node isn't selected\n     * - `undefined` if it's partially selected (group where not all children are selected). */\n    RowNode.prototype.isSelected = function () {\n        // for footers, we just return what our sibling selected state is, as cannot select a footer\n        if (this.footer) {\n            return this.sibling.isSelected();\n        }\n        return this.selected;\n    };\n    /** Perform a depth-first search of this node and its children. */\n    RowNode.prototype.depthFirstSearch = function (callback) {\n        if (this.childrenAfterGroup) {\n            this.childrenAfterGroup.forEach(function (child) { return child.depthFirstSearch(callback); });\n        }\n        callback(this);\n    };\n    // + selectionController.calculatedSelectedForAllGroupNodes()\n    RowNode.prototype.calculateSelectedFromChildren = function () {\n        var _a;\n        var atLeastOneSelected = false;\n        var atLeastOneDeSelected = false;\n        var atLeastOneMixed = false;\n        if (!((_a = this.childrenAfterGroup) === null || _a === void 0 ? void 0 : _a.length)) {\n            return this.selectable ? this.selected : null;\n        }\n        for (var i = 0; i < this.childrenAfterGroup.length; i++) {\n            var child = this.childrenAfterGroup[i];\n            var childState = child.isSelected();\n            // non-selectable nodes must be calculated from their children, or ignored if no value results.\n            if (!child.selectable) {\n                var selectable = child.calculateSelectedFromChildren();\n                if (selectable === null) {\n                    continue;\n                }\n                childState = selectable;\n            }\n            switch (childState) {\n                case true:\n                    atLeastOneSelected = true;\n                    break;\n                case false:\n                    atLeastOneDeSelected = true;\n                    break;\n                default:\n                    atLeastOneMixed = true;\n                    break;\n            }\n        }\n        if (atLeastOneMixed || (atLeastOneSelected && atLeastOneDeSelected)) {\n            return undefined;\n        }\n        if (atLeastOneSelected) {\n            return true;\n        }\n        if (atLeastOneDeSelected) {\n            return false;\n        }\n        if (!this.selectable) {\n            return null;\n        }\n        return this.selected;\n    };\n    RowNode.prototype.setSelectedInitialValue = function (selected) {\n        this.selected = selected;\n    };\n    RowNode.prototype.selectThisNode = function (newValue, e, source) {\n        if (source === void 0) { source = 'api'; }\n        // we only check selectable when newValue=true (ie selecting) to allow unselecting values,\n        // as selectable is dynamic, need a way to unselect rows when selectable becomes false.\n        var selectionNotAllowed = !this.selectable && newValue;\n        var selectionNotChanged = this.selected === newValue;\n        if (selectionNotAllowed || selectionNotChanged) {\n            return false;\n        }\n        this.selected = newValue;\n        if (this.eventService) {\n            this.dispatchLocalEvent(this.createLocalRowEvent(RowNode.EVENT_ROW_SELECTED));\n        }\n        var event = __assign$e(__assign$e({}, this.createGlobalRowEvent(Events.EVENT_ROW_SELECTED)), { event: e || null, source: source });\n        this.beans.eventService.dispatchEvent(event);\n        return true;\n    };\n    /**\n     * Select (or deselect) the node.\n     * @param newValue -`true` for selection, `false` for deselection.\n     * @param clearSelection - If selecting, then passing `true` will select the node exclusively (i.e. NOT do multi select). If doing deselection, `clearSelection` has no impact.\n     * @param suppressFinishActions - Pass `true` to prevent the `selectionChanged` from being fired. Note that the `rowSelected` event will still be fired.\n     * @param source - Source property that will appear in the `selectionChanged` event.\n     */\n    RowNode.prototype.setSelected = function (newValue, clearSelection, suppressFinishActions, source) {\n        if (clearSelection === void 0) { clearSelection = false; }\n        if (suppressFinishActions === void 0) { suppressFinishActions = false; }\n        if (source === void 0) { source = 'api'; }\n        this.setSelectedParams({\n            newValue: newValue,\n            clearSelection: clearSelection,\n            suppressFinishActions: suppressFinishActions,\n            rangeSelect: false,\n            source: source\n        });\n    };\n    // to make calling code more readable, this is the same method as setSelected except it takes names parameters\n    RowNode.prototype.setSelectedParams = function (params) {\n        if (this.rowPinned) {\n            console.warn('AG Grid: cannot select pinned rows');\n            return 0;\n        }\n        if (this.id === undefined) {\n            console.warn('AG Grid: cannot select node until id for node is known');\n            return 0;\n        }\n        return this.beans.selectionService.setNodeSelected(__assign$e(__assign$e({}, params), { node: this.footer ? this.sibling : this }));\n    };\n    /**\n     * Returns:\n     * - `true` if node is either pinned to the `top` or `bottom`\n     * - `false` if the node isn't pinned\n     */\n    RowNode.prototype.isRowPinned = function () {\n        return this.rowPinned === 'top' || this.rowPinned === 'bottom';\n    };\n    RowNode.prototype.isParentOfNode = function (potentialParent) {\n        var parentNode = this.parent;\n        while (parentNode) {\n            if (parentNode === potentialParent) {\n                return true;\n            }\n            parentNode = parentNode.parent;\n        }\n        return false;\n    };\n    /** Add an event listener. */\n    RowNode.prototype.addEventListener = function (eventType, listener) {\n        if (!this.eventService) {\n            this.eventService = new EventService();\n        }\n        this.eventService.addEventListener(eventType, listener);\n    };\n    /** Remove event listener. */\n    RowNode.prototype.removeEventListener = function (eventType, listener) {\n        if (!this.eventService) {\n            return;\n        }\n        this.eventService.removeEventListener(eventType, listener);\n        if (this.eventService.noRegisteredListenersExist()) {\n            this.eventService = null;\n        }\n    };\n    RowNode.prototype.onMouseEnter = function () {\n        this.dispatchLocalEvent(this.createLocalRowEvent(RowNode.EVENT_MOUSE_ENTER));\n    };\n    RowNode.prototype.onMouseLeave = function () {\n        this.dispatchLocalEvent(this.createLocalRowEvent(RowNode.EVENT_MOUSE_LEAVE));\n    };\n    RowNode.prototype.getFirstChildOfFirstChild = function (rowGroupColumn) {\n        var currentRowNode = this;\n        var isCandidate = true;\n        var foundFirstChildPath = false;\n        var nodeToSwapIn = null;\n        // if we are hiding groups, then if we are the first child, of the first child,\n        // all the way up to the column we are interested in, then we show the group cell.\n        while (isCandidate && !foundFirstChildPath) {\n            var parentRowNode = currentRowNode.parent;\n            var firstChild = exists(parentRowNode) && currentRowNode.firstChild;\n            if (firstChild) {\n                if (parentRowNode.rowGroupColumn === rowGroupColumn) {\n                    foundFirstChildPath = true;\n                    nodeToSwapIn = parentRowNode;\n                }\n            }\n            else {\n                isCandidate = false;\n            }\n            currentRowNode = parentRowNode;\n        }\n        return foundFirstChildPath ? nodeToSwapIn : null;\n    };\n    /**\n     * Returns:\n     * - `true` if the node is a full width cell\n     * - `false` if the node is not a full width cell\n     */\n    RowNode.prototype.isFullWidthCell = function () {\n        var isFullWidthCellFunc = this.getIsFullWidthCellFunc();\n        return isFullWidthCellFunc ? isFullWidthCellFunc({ rowNode: this }) : false;\n    };\n    RowNode.prototype.getIsFullWidthCellFunc = function () {\n        var isFullWidthRow = this.beans.gridOptionsService.getCallback('isFullWidthRow');\n        if (isFullWidthRow) {\n            return isFullWidthRow;\n        }\n        // this is the deprecated way, so provide a proxy to make it compatible\n        var isFullWidthCell = this.beans.gridOptionsService.get('isFullWidthCell');\n        if (isFullWidthCell) {\n            return function (params) { return isFullWidthCell(params.rowNode); };\n        }\n    };\n    /**\n     * Returns the route of the row node. If the Row Node is a group, it returns the route to that Row Node.\n     * If the Row Node is not a group, it returns `undefined`.\n     */\n    RowNode.prototype.getRoute = function () {\n        if (this.key == null) {\n            return;\n        }\n        var res = [];\n        var pointer = this;\n        while (pointer.key != null) {\n            res.push(pointer.key);\n            pointer = pointer.parent;\n        }\n        return res.reverse();\n    };\n    RowNode.prototype.createFooter = function () {\n        var _this = this;\n        // only create footer node once, otherwise we have daemons and\n        // the animate screws up with the daemons hanging around\n        if (this.sibling) {\n            return;\n        }\n        var footerNode = new RowNode(this.beans);\n        Object.keys(this).forEach(function (key) {\n            footerNode[key] = _this[key];\n        });\n        footerNode.footer = true;\n        footerNode.setRowTop(null);\n        footerNode.setRowIndex(null);\n        // manually set oldRowTop to null so we discard any\n        // previous information about its position.\n        footerNode.oldRowTop = null;\n        footerNode.id = 'rowGroupFooter_' + this.id;\n        // get both header and footer to reference each other as siblings. this is never undone,\n        // only overwritten. so if a group is expanded, then contracted, it will have a ghost\n        // sibling - but that's fine, as we can ignore this if the header is contracted.\n        footerNode.sibling = this;\n        this.sibling = footerNode;\n    };\n    RowNode.ID_PREFIX_ROW_GROUP = 'row-group-';\n    RowNode.ID_PREFIX_TOP_PINNED = 't-';\n    RowNode.ID_PREFIX_BOTTOM_PINNED = 'b-';\n    RowNode.OBJECT_ID_SEQUENCE = 0;\n    RowNode.EVENT_ROW_SELECTED = 'rowSelected';\n    RowNode.EVENT_DATA_CHANGED = 'dataChanged';\n    RowNode.EVENT_CELL_CHANGED = 'cellChanged';\n    RowNode.EVENT_ALL_CHILDREN_COUNT_CHANGED = 'allChildrenCountChanged';\n    RowNode.EVENT_MASTER_CHANGED = 'masterChanged';\n    RowNode.EVENT_GROUP_CHANGED = 'groupChanged';\n    RowNode.EVENT_MOUSE_ENTER = 'mouseEnter';\n    RowNode.EVENT_MOUSE_LEAVE = 'mouseLeave';\n    RowNode.EVENT_HEIGHT_CHANGED = 'heightChanged';\n    RowNode.EVENT_TOP_CHANGED = 'topChanged';\n    RowNode.EVENT_DISPLAYED_CHANGED = 'displayedChanged';\n    RowNode.EVENT_FIRST_CHILD_CHANGED = 'firstChildChanged';\n    RowNode.EVENT_LAST_CHILD_CHANGED = 'lastChildChanged';\n    RowNode.EVENT_CHILD_INDEX_CHANGED = 'childIndexChanged';\n    RowNode.EVENT_ROW_INDEX_CHANGED = 'rowIndexChanged';\n    RowNode.EVENT_EXPANDED_CHANGED = 'expandedChanged';\n    RowNode.EVENT_HAS_CHILDREN_CHANGED = 'hasChildrenChanged';\n    RowNode.EVENT_SELECTABLE_CHANGED = 'selectableChanged';\n    RowNode.EVENT_UI_LEVEL_CHANGED = 'uiLevelChanged';\n    RowNode.EVENT_HIGHLIGHT_CHANGED = 'rowHighlightChanged';\n    RowNode.EVENT_DRAGGING_CHANGED = 'draggingChanged';\n    return RowNode;\n}());\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$2c = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __assign$d = (undefined && undefined.__assign) || function () {\n    __assign$d = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign$d.apply(this, arguments);\n};\nvar __decorate$20 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar CheckboxSelectionComponent = /** @class */ (function (_super) {\n    __extends$2c(CheckboxSelectionComponent, _super);\n    function CheckboxSelectionComponent() {\n        return _super.call(this, /* html*/ \"\\n            <div class=\\\"ag-selection-checkbox\\\" role=\\\"presentation\\\">\\n                <ag-checkbox role=\\\"presentation\\\" ref=\\\"eCheckbox\\\"></ag-checkbox>\\n            </div>\") || this;\n    }\n    CheckboxSelectionComponent.prototype.postConstruct = function () {\n        this.eCheckbox.setPassive(true);\n    };\n    CheckboxSelectionComponent.prototype.getCheckboxId = function () {\n        return this.eCheckbox.getInputElement().id;\n    };\n    CheckboxSelectionComponent.prototype.onDataChanged = function () {\n        // when rows are loaded for the second time, this can impact the selection, as a row\n        // could be loaded as already selected (if user scrolls down, and then up again).\n        this.onSelectionChanged();\n    };\n    CheckboxSelectionComponent.prototype.onSelectableChanged = function () {\n        this.showOrHideSelect();\n    };\n    CheckboxSelectionComponent.prototype.onSelectionChanged = function () {\n        var translate = this.localeService.getLocaleTextFunc();\n        var state = this.rowNode.isSelected();\n        var stateName = state === undefined\n            ? translate('ariaIndeterminate', 'indeterminate')\n            : (state === true\n                ? translate('ariaChecked', 'checked')\n                : translate('ariaUnchecked', 'unchecked'));\n        var ariaLabel = translate('ariaRowToggleSelection', 'Press Space to toggle row selection');\n        this.eCheckbox.setValue(state, true);\n        this.eCheckbox.setInputAriaLabel(ariaLabel + \" (\" + stateName + \")\");\n    };\n    CheckboxSelectionComponent.prototype.onCheckedClicked = function (event) {\n        var groupSelectsFiltered = this.gridOptionsService.is('groupSelectsFiltered');\n        var updatedCount = this.rowNode.setSelectedParams({ newValue: false, rangeSelect: event.shiftKey, groupSelectsFiltered: groupSelectsFiltered, event: event, source: 'checkboxSelected' });\n        return updatedCount;\n    };\n    CheckboxSelectionComponent.prototype.onUncheckedClicked = function (event) {\n        var groupSelectsFiltered = this.gridOptionsService.is('groupSelectsFiltered');\n        var updatedCount = this.rowNode.setSelectedParams({ newValue: true, rangeSelect: event.shiftKey, groupSelectsFiltered: groupSelectsFiltered, event: event, source: 'checkboxSelected' });\n        return updatedCount;\n    };\n    CheckboxSelectionComponent.prototype.init = function (params) {\n        var _this = this;\n        this.rowNode = params.rowNode;\n        this.column = params.column;\n        this.overrides = params.overrides;\n        this.onSelectionChanged();\n        // we don't want double click on this icon to open a group\n        this.addManagedListener(this.eCheckbox.getInputElement(), 'dblclick', function (event) {\n            stopPropagationForAgGrid(event);\n        });\n        this.addManagedListener(this.eCheckbox.getInputElement(), 'click', function (event) {\n            // we don't want the row clicked event to fire when selecting the checkbox, otherwise the row\n            // would possibly get selected twice\n            stopPropagationForAgGrid(event);\n            var isSelected = _this.eCheckbox.getValue();\n            if (isSelected) {\n                _this.onCheckedClicked(event);\n            }\n            else {\n                _this.onUncheckedClicked(event || {});\n            }\n        });\n        this.addManagedListener(this.rowNode, RowNode.EVENT_ROW_SELECTED, this.onSelectionChanged.bind(this));\n        this.addManagedListener(this.rowNode, RowNode.EVENT_DATA_CHANGED, this.onDataChanged.bind(this));\n        this.addManagedListener(this.rowNode, RowNode.EVENT_SELECTABLE_CHANGED, this.onSelectableChanged.bind(this));\n        var isRowSelectableFunc = this.gridOptionsService.get('isRowSelectable');\n        var checkboxVisibleIsDynamic = isRowSelectableFunc || typeof this.getIsVisible() === 'function';\n        if (checkboxVisibleIsDynamic) {\n            var showOrHideSelectListener = this.showOrHideSelect.bind(this);\n            this.addManagedListener(this.eventService, Events.EVENT_DISPLAYED_COLUMNS_CHANGED, showOrHideSelectListener);\n            this.addManagedListener(this.rowNode, RowNode.EVENT_DATA_CHANGED, showOrHideSelectListener);\n            this.addManagedListener(this.rowNode, RowNode.EVENT_CELL_CHANGED, showOrHideSelectListener);\n            this.showOrHideSelect();\n        }\n        this.eCheckbox.getInputElement().setAttribute('tabindex', '-1');\n    };\n    CheckboxSelectionComponent.prototype.showOrHideSelect = function () {\n        var _a, _b, _c, _d;\n        // if the isRowSelectable() is not provided the row node is selectable by default\n        var selectable = this.rowNode.selectable;\n        // checkboxSelection callback is deemed a legacy solution however we will still consider it's result.\n        // If selectable, then also check the colDef callback. if not selectable, this it short circuits - no need\n        // to call the colDef callback.\n        var isVisible = this.getIsVisible();\n        if (selectable) {\n            if (typeof isVisible === 'function') {\n                var extraParams = (_a = this.overrides) === null || _a === void 0 ? void 0 : _a.callbackParams;\n                var params = (_b = this.column) === null || _b === void 0 ? void 0 : _b.createColumnFunctionCallbackParams(this.rowNode);\n                selectable = params ? isVisible(__assign$d(__assign$d({}, extraParams), params)) : false;\n            }\n            else {\n                selectable = isVisible !== null && isVisible !== void 0 ? isVisible : false;\n            }\n        }\n        var disableInsteadOfHide = (_c = this.column) === null || _c === void 0 ? void 0 : _c.getColDef().showDisabledCheckboxes;\n        if (disableInsteadOfHide) {\n            this.eCheckbox.setDisabled(!selectable);\n            this.setVisible(true);\n            this.setDisplayed(true);\n            return;\n        }\n        if ((_d = this.overrides) === null || _d === void 0 ? void 0 : _d.removeHidden) {\n            this.setDisplayed(selectable);\n            return;\n        }\n        this.setVisible(selectable);\n    };\n    CheckboxSelectionComponent.prototype.getIsVisible = function () {\n        var _a, _b;\n        if (this.overrides) {\n            return this.overrides.isVisible;\n        }\n        // column will be missing if groupDisplayType = 'groupRows'\n        return (_b = (_a = this.column) === null || _a === void 0 ? void 0 : _a.getColDef()) === null || _b === void 0 ? void 0 : _b.checkboxSelection;\n    };\n    __decorate$20([\n        RefSelector('eCheckbox')\n    ], CheckboxSelectionComponent.prototype, \"eCheckbox\", void 0);\n    __decorate$20([\n        PostConstruct\n    ], CheckboxSelectionComponent.prototype, \"postConstruct\", null);\n    return CheckboxSelectionComponent;\n}(Component));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$2b = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$1$ = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __values$4 = (undefined && undefined.__values) || function(o) {\n    var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n    if (m) return m.call(o);\n    if (o && typeof o.length === \"number\") return {\n        next: function () {\n            if (o && i >= o.length) o = void 0;\n            return { value: o && o[i++], done: !o };\n        }\n    };\n    throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nvar DragSourceType;\n(function (DragSourceType) {\n    DragSourceType[DragSourceType[\"ToolPanel\"] = 0] = \"ToolPanel\";\n    DragSourceType[DragSourceType[\"HeaderCell\"] = 1] = \"HeaderCell\";\n    DragSourceType[DragSourceType[\"RowDrag\"] = 2] = \"RowDrag\";\n    DragSourceType[DragSourceType[\"ChartPanel\"] = 3] = \"ChartPanel\";\n})(DragSourceType || (DragSourceType = {}));\nvar VerticalDirection;\n(function (VerticalDirection) {\n    VerticalDirection[VerticalDirection[\"Up\"] = 0] = \"Up\";\n    VerticalDirection[VerticalDirection[\"Down\"] = 1] = \"Down\";\n})(VerticalDirection || (VerticalDirection = {}));\nvar HorizontalDirection;\n(function (HorizontalDirection) {\n    HorizontalDirection[HorizontalDirection[\"Left\"] = 0] = \"Left\";\n    HorizontalDirection[HorizontalDirection[\"Right\"] = 1] = \"Right\";\n})(HorizontalDirection || (HorizontalDirection = {}));\nvar DragAndDropService = /** @class */ (function (_super) {\n    __extends$2b(DragAndDropService, _super);\n    function DragAndDropService() {\n        var _this = _super !== null && _super.apply(this, arguments) || this;\n        _this.dragSourceAndParamsList = [];\n        _this.dropTargets = [];\n        return _this;\n    }\n    DragAndDropService_1 = DragAndDropService;\n    DragAndDropService.prototype.init = function () {\n        this.ePinnedIcon = createIcon('columnMovePin', this.gridOptionsService, null);\n        this.eHideIcon = createIcon('columnMoveHide', this.gridOptionsService, null);\n        this.eMoveIcon = createIcon('columnMoveMove', this.gridOptionsService, null);\n        this.eLeftIcon = createIcon('columnMoveLeft', this.gridOptionsService, null);\n        this.eRightIcon = createIcon('columnMoveRight', this.gridOptionsService, null);\n        this.eGroupIcon = createIcon('columnMoveGroup', this.gridOptionsService, null);\n        this.eAggregateIcon = createIcon('columnMoveValue', this.gridOptionsService, null);\n        this.ePivotIcon = createIcon('columnMovePivot', this.gridOptionsService, null);\n        this.eDropNotAllowedIcon = createIcon('dropNotAllowed', this.gridOptionsService, null);\n    };\n    DragAndDropService.prototype.addDragSource = function (dragSource, allowTouch) {\n        if (allowTouch === void 0) { allowTouch = false; }\n        var params = {\n            eElement: dragSource.eElement,\n            dragStartPixels: dragSource.dragStartPixels,\n            onDragStart: this.onDragStart.bind(this, dragSource),\n            onDragStop: this.onDragStop.bind(this),\n            onDragging: this.onDragging.bind(this)\n        };\n        this.dragSourceAndParamsList.push({ params: params, dragSource: dragSource });\n        this.dragService.addDragSource(params, allowTouch);\n    };\n    DragAndDropService.prototype.removeDragSource = function (dragSource) {\n        var sourceAndParams = this.dragSourceAndParamsList.find(function (item) { return item.dragSource === dragSource; });\n        if (sourceAndParams) {\n            this.dragService.removeDragSource(sourceAndParams.params);\n            removeFromArray(this.dragSourceAndParamsList, sourceAndParams);\n        }\n    };\n    DragAndDropService.prototype.clearDragSourceParamsList = function () {\n        var _this = this;\n        this.dragSourceAndParamsList.forEach(function (sourceAndParams) { return _this.dragService.removeDragSource(sourceAndParams.params); });\n        this.dragSourceAndParamsList.length = 0;\n        this.dropTargets.length = 0;\n    };\n    DragAndDropService.prototype.nudge = function () {\n        if (this.dragging) {\n            this.onDragging(this.eventLastTime, true);\n        }\n    };\n    DragAndDropService.prototype.onDragStart = function (dragSource, mouseEvent) {\n        this.dragging = true;\n        this.dragSource = dragSource;\n        this.eventLastTime = mouseEvent;\n        this.dragItem = this.dragSource.getDragItem();\n        this.lastDropTarget = this.dragSource.dragSourceDropTarget;\n        if (this.dragSource.onDragStarted) {\n            this.dragSource.onDragStarted();\n        }\n        this.createGhost();\n    };\n    DragAndDropService.prototype.onDragStop = function (mouseEvent) {\n        this.eventLastTime = null;\n        this.dragging = false;\n        if (this.dragSource.onDragStopped) {\n            this.dragSource.onDragStopped();\n        }\n        if (this.lastDropTarget && this.lastDropTarget.onDragStop) {\n            var draggingEvent = this.createDropTargetEvent(this.lastDropTarget, mouseEvent, null, null, false);\n            this.lastDropTarget.onDragStop(draggingEvent);\n        }\n        this.lastDropTarget = null;\n        this.dragItem = null;\n        this.removeGhost();\n    };\n    DragAndDropService.prototype.onDragging = function (mouseEvent, fromNudge) {\n        var _this = this;\n        var _a, _b, _c, _d;\n        var hDirection = this.getHorizontalDirection(mouseEvent);\n        var vDirection = this.getVerticalDirection(mouseEvent);\n        this.eventLastTime = mouseEvent;\n        this.positionGhost(mouseEvent);\n        // check if mouseEvent intersects with any of the drop targets\n        var validDropTargets = this.dropTargets.filter(function (target) { return _this.isMouseOnDropTarget(mouseEvent, target); });\n        var dropTarget = this.findCurrentDropTarget(mouseEvent, validDropTargets);\n        if (dropTarget !== this.lastDropTarget) {\n            this.leaveLastTargetIfExists(mouseEvent, hDirection, vDirection, fromNudge);\n            if (this.lastDropTarget !== null && dropTarget === null) {\n                (_b = (_a = this.dragSource).onGridExit) === null || _b === void 0 ? void 0 : _b.call(_a, this.dragItem);\n            }\n            if (this.lastDropTarget === null && dropTarget !== null) {\n                (_d = (_c = this.dragSource).onGridEnter) === null || _d === void 0 ? void 0 : _d.call(_c, this.dragItem);\n            }\n            this.enterDragTargetIfExists(dropTarget, mouseEvent, hDirection, vDirection, fromNudge);\n            this.lastDropTarget = dropTarget;\n        }\n        else if (dropTarget && dropTarget.onDragging) {\n            var draggingEvent = this.createDropTargetEvent(dropTarget, mouseEvent, hDirection, vDirection, fromNudge);\n            dropTarget.onDragging(draggingEvent);\n        }\n    };\n    DragAndDropService.prototype.getAllContainersFromDropTarget = function (dropTarget) {\n        var secondaryContainers = dropTarget.getSecondaryContainers ? dropTarget.getSecondaryContainers() : null;\n        var containers = [[dropTarget.getContainer()]];\n        return secondaryContainers ? containers.concat(secondaryContainers) : containers;\n    };\n    DragAndDropService.prototype.allContainersIntersect = function (mouseEvent, containers) {\n        var e_1, _a;\n        try {\n            for (var containers_1 = __values$4(containers), containers_1_1 = containers_1.next(); !containers_1_1.done; containers_1_1 = containers_1.next()) {\n                var container = containers_1_1.value;\n                var rect = container.getBoundingClientRect();\n                // if element is not visible, then width and height are zero\n                if (rect.width === 0 || rect.height === 0) {\n                    return false;\n                }\n                var horizontalFit = mouseEvent.clientX >= rect.left && mouseEvent.clientX < rect.right;\n                var verticalFit = mouseEvent.clientY >= rect.top && mouseEvent.clientY < rect.bottom;\n                if (!horizontalFit || !verticalFit) {\n                    return false;\n                }\n            }\n        }\n        catch (e_1_1) { e_1 = { error: e_1_1 }; }\n        finally {\n            try {\n                if (containers_1_1 && !containers_1_1.done && (_a = containers_1.return)) _a.call(containers_1);\n            }\n            finally { if (e_1) throw e_1.error; }\n        }\n        return true;\n    };\n    // checks if the mouse is on the drop target. it checks eContainer and eSecondaryContainers\n    DragAndDropService.prototype.isMouseOnDropTarget = function (mouseEvent, dropTarget) {\n        var e_2, _a;\n        var allContainersFromDropTarget = this.getAllContainersFromDropTarget(dropTarget);\n        var mouseOverTarget = false;\n        try {\n            for (var allContainersFromDropTarget_1 = __values$4(allContainersFromDropTarget), allContainersFromDropTarget_1_1 = allContainersFromDropTarget_1.next(); !allContainersFromDropTarget_1_1.done; allContainersFromDropTarget_1_1 = allContainersFromDropTarget_1.next()) {\n                var currentContainers = allContainersFromDropTarget_1_1.value;\n                if (this.allContainersIntersect(mouseEvent, currentContainers)) {\n                    mouseOverTarget = true;\n                    break;\n                }\n            }\n        }\n        catch (e_2_1) { e_2 = { error: e_2_1 }; }\n        finally {\n            try {\n                if (allContainersFromDropTarget_1_1 && !allContainersFromDropTarget_1_1.done && (_a = allContainersFromDropTarget_1.return)) _a.call(allContainersFromDropTarget_1);\n            }\n            finally { if (e_2) throw e_2.error; }\n        }\n        if (dropTarget.targetContainsSource && !dropTarget.getContainer().contains(this.dragSource.eElement)) {\n            return false;\n        }\n        return mouseOverTarget && dropTarget.isInterestedIn(this.dragSource.type, this.dragSource.eElement);\n    };\n    DragAndDropService.prototype.findCurrentDropTarget = function (mouseEvent, validDropTargets) {\n        var e_3, _a, e_4, _b;\n        var len = validDropTargets.length;\n        if (len === 0) {\n            return null;\n        }\n        if (len === 1) {\n            return validDropTargets[0];\n        }\n        var rootNode = this.gridOptionsService.getRootNode();\n        // elementsFromPoint return a list of elements under\n        // the mouseEvent sorted from topMost to bottomMost\n        var elementStack = rootNode.elementsFromPoint(mouseEvent.clientX, mouseEvent.clientY);\n        try {\n            // loop over the sorted elementStack to find which dropTarget comes first\n            for (var elementStack_1 = __values$4(elementStack), elementStack_1_1 = elementStack_1.next(); !elementStack_1_1.done; elementStack_1_1 = elementStack_1.next()) {\n                var el = elementStack_1_1.value;\n                try {\n                    for (var validDropTargets_1 = (e_4 = void 0, __values$4(validDropTargets)), validDropTargets_1_1 = validDropTargets_1.next(); !validDropTargets_1_1.done; validDropTargets_1_1 = validDropTargets_1.next()) {\n                        var dropTarget = validDropTargets_1_1.value;\n                        var containers = flatten(this.getAllContainersFromDropTarget(dropTarget));\n                        if (containers.indexOf(el) !== -1) {\n                            return dropTarget;\n                        }\n                    }\n                }\n                catch (e_4_1) { e_4 = { error: e_4_1 }; }\n                finally {\n                    try {\n                        if (validDropTargets_1_1 && !validDropTargets_1_1.done && (_b = validDropTargets_1.return)) _b.call(validDropTargets_1);\n                    }\n                    finally { if (e_4) throw e_4.error; }\n                }\n            }\n        }\n        catch (e_3_1) { e_3 = { error: e_3_1 }; }\n        finally {\n            try {\n                if (elementStack_1_1 && !elementStack_1_1.done && (_a = elementStack_1.return)) _a.call(elementStack_1);\n            }\n            finally { if (e_3) throw e_3.error; }\n        }\n        // we should never hit this point of the code because only\n        // valid dropTargets should be provided to this method.\n        return null;\n    };\n    DragAndDropService.prototype.enterDragTargetIfExists = function (dropTarget, mouseEvent, hDirection, vDirection, fromNudge) {\n        if (!dropTarget) {\n            return;\n        }\n        if (dropTarget.onDragEnter) {\n            var dragEnterEvent = this.createDropTargetEvent(dropTarget, mouseEvent, hDirection, vDirection, fromNudge);\n            dropTarget.onDragEnter(dragEnterEvent);\n        }\n        this.setGhostIcon(dropTarget.getIconName ? dropTarget.getIconName() : null);\n    };\n    DragAndDropService.prototype.leaveLastTargetIfExists = function (mouseEvent, hDirection, vDirection, fromNudge) {\n        if (!this.lastDropTarget) {\n            return;\n        }\n        if (this.lastDropTarget.onDragLeave) {\n            var dragLeaveEvent = this.createDropTargetEvent(this.lastDropTarget, mouseEvent, hDirection, vDirection, fromNudge);\n            this.lastDropTarget.onDragLeave(dragLeaveEvent);\n        }\n        this.setGhostIcon(null);\n    };\n    DragAndDropService.prototype.addDropTarget = function (dropTarget) {\n        this.dropTargets.push(dropTarget);\n    };\n    DragAndDropService.prototype.removeDropTarget = function (dropTarget) {\n        this.dropTargets = this.dropTargets.filter(function (target) { return target.getContainer() !== dropTarget.getContainer(); });\n    };\n    DragAndDropService.prototype.hasExternalDropZones = function () {\n        return this.dropTargets.some(function (zones) { return zones.external; });\n    };\n    DragAndDropService.prototype.findExternalZone = function (params) {\n        var externalTargets = this.dropTargets.filter(function (target) { return target.external; });\n        return externalTargets.find(function (zone) { return zone.getContainer() === params.getContainer(); }) || null;\n    };\n    DragAndDropService.prototype.getHorizontalDirection = function (event) {\n        var clientX = this.eventLastTime && this.eventLastTime.clientX;\n        var eClientX = event.clientX;\n        if (clientX === eClientX) {\n            return null;\n        }\n        return clientX > eClientX ? HorizontalDirection.Left : HorizontalDirection.Right;\n    };\n    DragAndDropService.prototype.getVerticalDirection = function (event) {\n        var clientY = this.eventLastTime && this.eventLastTime.clientY;\n        var eClientY = event.clientY;\n        if (clientY === eClientY) {\n            return null;\n        }\n        return clientY > eClientY ? VerticalDirection.Up : VerticalDirection.Down;\n    };\n    DragAndDropService.prototype.createDropTargetEvent = function (dropTarget, event, hDirection, vDirection, fromNudge) {\n        // localise x and y to the target\n        var dropZoneTarget = dropTarget.getContainer();\n        var rect = dropZoneTarget.getBoundingClientRect();\n        var _a = this, api = _a.gridApi, columnApi = _a.columnApi, dragItem = _a.dragItem, dragSource = _a.dragSource;\n        var x = event.clientX - rect.left;\n        var y = event.clientY - rect.top;\n        return { event: event, x: x, y: y, vDirection: vDirection, hDirection: hDirection, dragSource: dragSource, fromNudge: fromNudge, dragItem: dragItem, api: api, columnApi: columnApi, dropZoneTarget: dropZoneTarget };\n    };\n    DragAndDropService.prototype.positionGhost = function (event) {\n        var ghost = this.eGhost;\n        if (!ghost) {\n            return;\n        }\n        var ghostRect = ghost.getBoundingClientRect();\n        var ghostHeight = ghostRect.height;\n        // for some reason, without the '-2', it still overlapped by 1 or 2 pixels, which\n        // then brought in scrollbars to the browser. no idea why, but putting in -2 here\n        // works around it which is good enough for me.\n        var browserWidth = getBodyWidth() - 2;\n        var browserHeight = getBodyHeight() - 2;\n        var top = event.pageY - (ghostHeight / 2);\n        var left = event.pageX - 10;\n        var eDocument = this.gridOptionsService.getDocument();\n        var win = (eDocument.defaultView || window);\n        var windowScrollY = win.pageYOffset || eDocument.documentElement.scrollTop;\n        var windowScrollX = win.pageXOffset || eDocument.documentElement.scrollLeft;\n        // check ghost is not positioned outside of the browser\n        if (browserWidth > 0 && ((left + ghost.clientWidth) > (browserWidth + windowScrollX))) {\n            left = browserWidth + windowScrollX - ghost.clientWidth;\n        }\n        if (left < 0) {\n            left = 0;\n        }\n        if (browserHeight > 0 && ((top + ghost.clientHeight) > (browserHeight + windowScrollY))) {\n            top = browserHeight + windowScrollY - ghost.clientHeight;\n        }\n        if (top < 0) {\n            top = 0;\n        }\n        ghost.style.left = left + \"px\";\n        ghost.style.top = top + \"px\";\n    };\n    DragAndDropService.prototype.removeGhost = function () {\n        if (this.eGhost && this.eGhostParent) {\n            this.eGhostParent.removeChild(this.eGhost);\n        }\n        this.eGhost = null;\n    };\n    DragAndDropService.prototype.createGhost = function () {\n        this.eGhost = loadTemplate(DragAndDropService_1.GHOST_TEMPLATE);\n        this.mouseEventService.stampTopLevelGridCompWithGridInstance(this.eGhost);\n        var theme = this.environment.getTheme().theme;\n        if (theme) {\n            this.eGhost.classList.add(theme);\n        }\n        this.eGhostIcon = this.eGhost.querySelector('.ag-dnd-ghost-icon');\n        this.setGhostIcon(null);\n        var eText = this.eGhost.querySelector('.ag-dnd-ghost-label');\n        var dragItemName = this.dragSource.dragItemName;\n        if (isFunction(dragItemName)) {\n            dragItemName = dragItemName();\n        }\n        eText.innerHTML = escapeString(dragItemName) || '';\n        this.eGhost.style.height = '25px';\n        this.eGhost.style.top = '20px';\n        this.eGhost.style.left = '20px';\n        var eDocument = this.gridOptionsService.getDocument();\n        var targetEl = null;\n        try {\n            targetEl = eDocument.fullscreenElement;\n        }\n        catch (e) {\n            // some environments like SalesForce will throw errors\n            // simply by trying to read the fullscreenElement property\n        }\n        finally {\n            if (!targetEl) {\n                var rootNode = this.gridOptionsService.getRootNode();\n                var body = rootNode.querySelector('body');\n                if (body) {\n                    targetEl = body;\n                }\n                else if (rootNode instanceof ShadowRoot) {\n                    targetEl = rootNode;\n                }\n                else {\n                    targetEl = rootNode === null || rootNode === void 0 ? void 0 : rootNode.documentElement;\n                }\n            }\n        }\n        this.eGhostParent = targetEl;\n        if (!this.eGhostParent) {\n            console.warn('AG Grid: could not find document body, it is needed for dragging columns');\n        }\n        else {\n            this.eGhostParent.appendChild(this.eGhost);\n        }\n    };\n    DragAndDropService.prototype.setGhostIcon = function (iconName, shake) {\n        if (shake === void 0) { shake = false; }\n        clearElement(this.eGhostIcon);\n        var eIcon = null;\n        if (!iconName) {\n            iconName = this.dragSource.defaultIconName || DragAndDropService_1.ICON_NOT_ALLOWED;\n        }\n        switch (iconName) {\n            case DragAndDropService_1.ICON_PINNED:\n                eIcon = this.ePinnedIcon;\n                break;\n            case DragAndDropService_1.ICON_MOVE:\n                eIcon = this.eMoveIcon;\n                break;\n            case DragAndDropService_1.ICON_LEFT:\n                eIcon = this.eLeftIcon;\n                break;\n            case DragAndDropService_1.ICON_RIGHT:\n                eIcon = this.eRightIcon;\n                break;\n            case DragAndDropService_1.ICON_GROUP:\n                eIcon = this.eGroupIcon;\n                break;\n            case DragAndDropService_1.ICON_AGGREGATE:\n                eIcon = this.eAggregateIcon;\n                break;\n            case DragAndDropService_1.ICON_PIVOT:\n                eIcon = this.ePivotIcon;\n                break;\n            case DragAndDropService_1.ICON_NOT_ALLOWED:\n                eIcon = this.eDropNotAllowedIcon;\n                break;\n            case DragAndDropService_1.ICON_HIDE:\n                eIcon = this.eHideIcon;\n                break;\n        }\n        this.eGhostIcon.classList.toggle('ag-shake-left-to-right', shake);\n        if (eIcon === this.eHideIcon && this.gridOptionsService.is('suppressDragLeaveHidesColumns')) {\n            return;\n        }\n        if (eIcon) {\n            this.eGhostIcon.appendChild(eIcon);\n        }\n    };\n    var DragAndDropService_1;\n    DragAndDropService.ICON_PINNED = 'pinned';\n    DragAndDropService.ICON_MOVE = 'move';\n    DragAndDropService.ICON_LEFT = 'left';\n    DragAndDropService.ICON_RIGHT = 'right';\n    DragAndDropService.ICON_GROUP = 'group';\n    DragAndDropService.ICON_AGGREGATE = 'aggregate';\n    DragAndDropService.ICON_PIVOT = 'pivot';\n    DragAndDropService.ICON_NOT_ALLOWED = 'notAllowed';\n    DragAndDropService.ICON_HIDE = 'hide';\n    DragAndDropService.GHOST_TEMPLATE = \"<div class=\\\"ag-dnd-ghost ag-unselectable\\\">\\n            <span class=\\\"ag-dnd-ghost-icon ag-shake-left-to-right\\\"></span>\\n            <div class=\\\"ag-dnd-ghost-label\\\"></div>\\n        </div>\";\n    __decorate$1$([\n        Autowired('dragService')\n    ], DragAndDropService.prototype, \"dragService\", void 0);\n    __decorate$1$([\n        Autowired('mouseEventService')\n    ], DragAndDropService.prototype, \"mouseEventService\", void 0);\n    __decorate$1$([\n        Autowired('columnApi')\n    ], DragAndDropService.prototype, \"columnApi\", void 0);\n    __decorate$1$([\n        Autowired('gridApi')\n    ], DragAndDropService.prototype, \"gridApi\", void 0);\n    __decorate$1$([\n        PostConstruct\n    ], DragAndDropService.prototype, \"init\", null);\n    __decorate$1$([\n        PreDestroy\n    ], DragAndDropService.prototype, \"clearDragSourceParamsList\", null);\n    DragAndDropService = DragAndDropService_1 = __decorate$1$([\n        Bean('dragAndDropService')\n    ], DragAndDropService);\n    return DragAndDropService;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$2a = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$1_ = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar RowDragComp = /** @class */ (function (_super) {\n    __extends$2a(RowDragComp, _super);\n    function RowDragComp(cellValueFn, rowNode, column, customGui, dragStartPixels, suppressVisibilityChange) {\n        var _this = _super.call(this) || this;\n        _this.cellValueFn = cellValueFn;\n        _this.rowNode = rowNode;\n        _this.column = column;\n        _this.customGui = customGui;\n        _this.dragStartPixels = dragStartPixels;\n        _this.suppressVisibilityChange = suppressVisibilityChange;\n        _this.dragSource = null;\n        return _this;\n    }\n    RowDragComp.prototype.isCustomGui = function () {\n        return this.customGui != null;\n    };\n    RowDragComp.prototype.postConstruct = function () {\n        if (!this.customGui) {\n            this.setTemplate(/* html */ \"<div class=\\\"ag-drag-handle ag-row-drag\\\" aria-hidden=\\\"true\\\"></div>\");\n            this.getGui().appendChild(createIconNoSpan('rowDrag', this.beans.gridOptionsService, null));\n            this.addDragSource();\n        }\n        else {\n            this.setDragElement(this.customGui, this.dragStartPixels);\n        }\n        this.checkCompatibility();\n        if (!this.suppressVisibilityChange) {\n            var strategy = this.beans.gridOptionsService.is('rowDragManaged') ?\n                new ManagedVisibilityStrategy(this, this.beans, this.rowNode, this.column) :\n                new NonManagedVisibilityStrategy(this, this.beans, this.rowNode, this.column);\n            this.createManagedBean(strategy, this.beans.context);\n        }\n    };\n    RowDragComp.prototype.setDragElement = function (dragElement, dragStartPixels) {\n        this.setTemplateFromElement(dragElement);\n        this.addDragSource(dragStartPixels);\n    };\n    RowDragComp.prototype.getSelectedNodes = function () {\n        var isRowDragMultiRow = this.beans.gridOptionsService.is('rowDragMultiRow');\n        if (!isRowDragMultiRow) {\n            return [this.rowNode];\n        }\n        var selection = this.beans.selectionService.getSelectedNodes();\n        return selection.indexOf(this.rowNode) !== -1 ? selection : [this.rowNode];\n    };\n    // returns true if all compatibility items work out\n    RowDragComp.prototype.checkCompatibility = function () {\n        var managed = this.beans.gridOptionsService.is('rowDragManaged');\n        var treeData = this.beans.gridOptionsService.isTreeData();\n        if (treeData && managed) {\n            doOnce(function () {\n                return console.warn('AG Grid: If using row drag with tree data, you cannot have rowDragManaged=true');\n            }, 'RowDragComp.managedAndTreeData');\n        }\n    };\n    RowDragComp.prototype.getDragItem = function () {\n        return {\n            rowNode: this.rowNode,\n            rowNodes: this.getSelectedNodes(),\n            columns: this.column ? [this.column] : undefined,\n            defaultTextValue: this.cellValueFn(),\n        };\n    };\n    RowDragComp.prototype.getRowDragText = function (column) {\n        if (column) {\n            var colDef = column.getColDef();\n            if (colDef.rowDragText) {\n                return colDef.rowDragText;\n            }\n        }\n        return this.gridOptionsService.get('rowDragText');\n    };\n    RowDragComp.prototype.addDragSource = function (dragStartPixels) {\n        var _this = this;\n        if (dragStartPixels === void 0) { dragStartPixels = 4; }\n        // if this is changing the drag element, delete the previous dragSource\n        if (this.dragSource) {\n            this.removeDragSource();\n        }\n        var rowDragText = this.getRowDragText(this.column);\n        var translate = this.localeService.getLocaleTextFunc();\n        this.dragSource = {\n            type: DragSourceType.RowDrag,\n            eElement: this.getGui(),\n            dragItemName: function () {\n                var _a;\n                var dragItem = _this.getDragItem();\n                var dragItemCount = ((_a = dragItem.rowNodes) === null || _a === void 0 ? void 0 : _a.length) || 1;\n                if (rowDragText) {\n                    return rowDragText(dragItem, dragItemCount);\n                }\n                return dragItemCount === 1 ? _this.cellValueFn() : dragItemCount + \" \" + translate('rowDragRows', 'rows');\n            },\n            getDragItem: function () { return _this.getDragItem(); },\n            dragStartPixels: dragStartPixels,\n            dragSourceDomDataKey: this.beans.gridOptionsService.getDomDataKey()\n        };\n        this.beans.dragAndDropService.addDragSource(this.dragSource, true);\n    };\n    RowDragComp.prototype.removeDragSource = function () {\n        if (this.dragSource) {\n            this.beans.dragAndDropService.removeDragSource(this.dragSource);\n        }\n        this.dragSource = null;\n    };\n    __decorate$1_([\n        Autowired('beans')\n    ], RowDragComp.prototype, \"beans\", void 0);\n    __decorate$1_([\n        PostConstruct\n    ], RowDragComp.prototype, \"postConstruct\", null);\n    __decorate$1_([\n        PreDestroy\n    ], RowDragComp.prototype, \"removeDragSource\", null);\n    return RowDragComp;\n}(Component));\nvar VisibilityStrategy = /** @class */ (function (_super) {\n    __extends$2a(VisibilityStrategy, _super);\n    function VisibilityStrategy(parent, rowNode, column) {\n        var _this = _super.call(this) || this;\n        _this.parent = parent;\n        _this.rowNode = rowNode;\n        _this.column = column;\n        return _this;\n    }\n    VisibilityStrategy.prototype.setDisplayedOrVisible = function (neverDisplayed) {\n        var displayedOptions = { skipAriaHidden: true };\n        if (neverDisplayed) {\n            this.parent.setDisplayed(false, displayedOptions);\n        }\n        else {\n            var shown = true;\n            var isShownSometimes = false;\n            if (this.column) {\n                shown = this.column.isRowDrag(this.rowNode) || this.parent.isCustomGui();\n                isShownSometimes = isFunction(this.column.getColDef().rowDrag);\n            }\n            // if shown sometimes, them some rows can have drag handle while other don't,\n            // so we use setVisible to keep the handles horizontally aligned (as setVisible\n            // keeps the empty space, whereas setDisplayed looses the space)\n            if (isShownSometimes) {\n                this.parent.setDisplayed(true, displayedOptions);\n                this.parent.setVisible(shown, displayedOptions);\n            }\n            else {\n                this.parent.setDisplayed(shown, displayedOptions);\n                this.parent.setVisible(true, displayedOptions);\n            }\n        }\n    };\n    return VisibilityStrategy;\n}(BeanStub));\n// when non managed, the visibility depends on suppressRowDrag property only\nvar NonManagedVisibilityStrategy = /** @class */ (function (_super) {\n    __extends$2a(NonManagedVisibilityStrategy, _super);\n    function NonManagedVisibilityStrategy(parent, beans, rowNode, column) {\n        var _this = _super.call(this, parent, rowNode, column) || this;\n        _this.beans = beans;\n        return _this;\n    }\n    NonManagedVisibilityStrategy.prototype.postConstruct = function () {\n        this.addManagedPropertyListener('suppressRowDrag', this.onSuppressRowDrag.bind(this));\n        // in case data changes, then we need to update visibility of drag item\n        this.addManagedListener(this.rowNode, RowNode.EVENT_DATA_CHANGED, this.workOutVisibility.bind(this));\n        this.addManagedListener(this.rowNode, RowNode.EVENT_CELL_CHANGED, this.workOutVisibility.bind(this));\n        this.addManagedListener(this.rowNode, RowNode.EVENT_CELL_CHANGED, this.workOutVisibility.bind(this));\n        this.addManagedListener(this.beans.eventService, Events.EVENT_NEW_COLUMNS_LOADED, this.workOutVisibility.bind(this));\n        this.workOutVisibility();\n    };\n    NonManagedVisibilityStrategy.prototype.onSuppressRowDrag = function () {\n        this.workOutVisibility();\n    };\n    NonManagedVisibilityStrategy.prototype.workOutVisibility = function () {\n        // only show the drag if both sort and filter are not present\n        var neverDisplayed = this.beans.gridOptionsService.is('suppressRowDrag');\n        this.setDisplayedOrVisible(neverDisplayed);\n    };\n    __decorate$1_([\n        PostConstruct\n    ], NonManagedVisibilityStrategy.prototype, \"postConstruct\", null);\n    return NonManagedVisibilityStrategy;\n}(VisibilityStrategy));\n// when managed, the visibility depends on sort, filter and row group, as well as suppressRowDrag property\nvar ManagedVisibilityStrategy = /** @class */ (function (_super) {\n    __extends$2a(ManagedVisibilityStrategy, _super);\n    function ManagedVisibilityStrategy(parent, beans, rowNode, column) {\n        var _this = _super.call(this, parent, rowNode, column) || this;\n        _this.beans = beans;\n        return _this;\n    }\n    ManagedVisibilityStrategy.prototype.postConstruct = function () {\n        // we do not show the component if sort, filter or grouping is active\n        this.addManagedListener(this.beans.eventService, Events.EVENT_SORT_CHANGED, this.workOutVisibility.bind(this));\n        this.addManagedListener(this.beans.eventService, Events.EVENT_FILTER_CHANGED, this.workOutVisibility.bind(this));\n        this.addManagedListener(this.beans.eventService, Events.EVENT_COLUMN_ROW_GROUP_CHANGED, this.workOutVisibility.bind(this));\n        this.addManagedListener(this.beans.eventService, Events.EVENT_NEW_COLUMNS_LOADED, this.workOutVisibility.bind(this));\n        // in case data changes, then we need to update visibility of drag item\n        this.addManagedListener(this.rowNode, RowNode.EVENT_DATA_CHANGED, this.workOutVisibility.bind(this));\n        this.addManagedListener(this.rowNode, RowNode.EVENT_CELL_CHANGED, this.workOutVisibility.bind(this));\n        this.addManagedPropertyListener('suppressRowDrag', this.onSuppressRowDrag.bind(this));\n        this.workOutVisibility();\n    };\n    ManagedVisibilityStrategy.prototype.onSuppressRowDrag = function () {\n        this.workOutVisibility();\n    };\n    ManagedVisibilityStrategy.prototype.workOutVisibility = function () {\n        // only show the drag if both sort and filter are not present\n        var gridBodyCon = this.beans.ctrlsService.getGridBodyCtrl();\n        var rowDragFeature = gridBodyCon.getRowDragFeature();\n        var shouldPreventRowMove = rowDragFeature && rowDragFeature.shouldPreventRowMove();\n        var suppressRowDrag = this.beans.gridOptionsService.is('suppressRowDrag');\n        var hasExternalDropZones = this.beans.dragAndDropService.hasExternalDropZones();\n        var neverDisplayed = (shouldPreventRowMove && !hasExternalDropZones) || suppressRowDrag;\n        this.setDisplayedOrVisible(neverDisplayed);\n    };\n    __decorate$1_([\n        PostConstruct\n    ], ManagedVisibilityStrategy.prototype, \"postConstruct\", null);\n    return ManagedVisibilityStrategy;\n}(VisibilityStrategy));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$29 = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __assign$c = (undefined && undefined.__assign) || function () {\n    __assign$c = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign$c.apply(this, arguments);\n};\nvar __decorate$1Z = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar GroupCellRendererCtrl = /** @class */ (function (_super) {\n    __extends$29(GroupCellRendererCtrl, _super);\n    function GroupCellRendererCtrl() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    GroupCellRendererCtrl.prototype.init = function (comp, eGui, eCheckbox, eExpanded, eContracted, compClass, params) {\n        this.params = params;\n        this.eGui = eGui;\n        this.eCheckbox = eCheckbox;\n        this.eExpanded = eExpanded;\n        this.eContracted = eContracted;\n        this.comp = comp;\n        this.compClass = compClass;\n        var topLevelFooter = this.isTopLevelFooter();\n        var embeddedRowMismatch = this.isEmbeddedRowMismatch();\n        // This allows for empty strings to appear as groups since\n        // it will only return for null or undefined.\n        var isNullValueAndNotMaster = params.value == null && !params.node.master;\n        var skipCell = false;\n        // if the groupCellRenderer is inside of a footer and groupHideOpenParents is true\n        // we should only display the groupCellRenderer if the current column is the rowGroupedColumn\n        if (this.gridOptionsService.is('groupIncludeFooter') && this.gridOptionsService.is('groupHideOpenParents')) {\n            var node = params.node;\n            if (node.footer) {\n                var showRowGroup = params.colDef && params.colDef.showRowGroup;\n                var rowGroupColumnId = node.rowGroupColumn && node.rowGroupColumn.getColId();\n                skipCell = showRowGroup !== rowGroupColumnId;\n            }\n        }\n        this.cellIsBlank = topLevelFooter ? false : (embeddedRowMismatch || (isNullValueAndNotMaster && !params.node.master) || skipCell);\n        if (this.cellIsBlank) {\n            return;\n        }\n        this.setupShowingValueForOpenedParent();\n        this.findDisplayedGroupNode();\n        this.addFullWidthRowDraggerIfNeeded();\n        this.addExpandAndContract();\n        this.addCheckboxIfNeeded();\n        this.addValueElement();\n        this.setupIndent();\n        this.refreshAriaExpanded();\n    };\n    GroupCellRendererCtrl.prototype.destroy = function () {\n        _super.prototype.destroy.call(this);\n        // property cleanup to avoid memory leaks\n        this.expandListener = null;\n    };\n    GroupCellRendererCtrl.prototype.refreshAriaExpanded = function () {\n        var _a = this.params, node = _a.node, eParentOfValue = _a.eParentOfValue;\n        if (this.expandListener) {\n            this.expandListener = this.expandListener();\n        }\n        if (!this.isExpandable()) {\n            removeAriaExpanded(eParentOfValue);\n            return;\n        }\n        var listener = function () {\n            // for react, we don't use JSX, as setting attributes via jsx is slower\n            setAriaExpanded(eParentOfValue, !!node.expanded);\n        };\n        this.expandListener = this.addManagedListener(node, RowNode.EVENT_EXPANDED_CHANGED, listener) || null;\n        listener();\n    };\n    GroupCellRendererCtrl.prototype.isTopLevelFooter = function () {\n        if (!this.gridOptionsService.is('groupIncludeTotalFooter')) {\n            return false;\n        }\n        if (this.params.value != null || this.params.node.level != -1) {\n            return false;\n        }\n        // at this point, we know it's the root node and there is no value present, so it's a footer cell.\n        // the only thing to work out is if we are displaying groups  across multiple\n        // columns (groupDisplayType: 'multipleColumns'), we only want 'total' to appear in the first column.\n        var colDef = this.params.colDef;\n        var doingFullWidth = colDef == null;\n        if (doingFullWidth) {\n            return true;\n        }\n        if (colDef.showRowGroup === true) {\n            return true;\n        }\n        var rowGroupCols = this.columnModel.getRowGroupColumns();\n        // this is a sanity check, rowGroupCols should always be present\n        if (!rowGroupCols || rowGroupCols.length === 0) {\n            return true;\n        }\n        var firstRowGroupCol = rowGroupCols[0];\n        return firstRowGroupCol.getId() === colDef.showRowGroup;\n    };\n    // if we are doing embedded full width rows, we only show the renderer when\n    // in the body, or if pinning in the pinned section, or if pinning and RTL,\n    // in the right section. otherwise we would have the cell repeated in each section.\n    GroupCellRendererCtrl.prototype.isEmbeddedRowMismatch = function () {\n        if (!this.params.fullWidth || !this.gridOptionsService.is('embedFullWidthRows')) {\n            return false;\n        }\n        var pinnedLeftCell = this.params.pinned === 'left';\n        var pinnedRightCell = this.params.pinned === 'right';\n        var bodyCell = !pinnedLeftCell && !pinnedRightCell;\n        if (this.gridOptionsService.is('enableRtl')) {\n            if (this.columnModel.isPinningLeft()) {\n                return !pinnedRightCell;\n            }\n            return !bodyCell;\n        }\n        if (this.columnModel.isPinningLeft()) {\n            return !pinnedLeftCell;\n        }\n        return !bodyCell;\n    };\n    GroupCellRendererCtrl.prototype.findDisplayedGroupNode = function () {\n        var column = this.params.column;\n        var rowNode = this.params.node;\n        if (this.showingValueForOpenedParent) {\n            var pointer = rowNode.parent;\n            while (pointer != null) {\n                if (pointer.rowGroupColumn && column.isRowGroupDisplayed(pointer.rowGroupColumn.getId())) {\n                    this.displayedGroupNode = pointer;\n                    break;\n                }\n                pointer = pointer.parent;\n            }\n        }\n        // if we didn't find a displayed group, set it to the row node\n        if (missing(this.displayedGroupNode)) {\n            this.displayedGroupNode = rowNode;\n        }\n    };\n    GroupCellRendererCtrl.prototype.setupShowingValueForOpenedParent = function () {\n        // note - this code depends on sortService.updateGroupDataForHiddenOpenParents, where group data\n        // is updated to reflect the dragged down parents\n        var rowNode = this.params.node;\n        var column = this.params.column;\n        if (!this.gridOptionsService.is('groupHideOpenParents')) {\n            this.showingValueForOpenedParent = false;\n            return;\n        }\n        // hideOpenParents means rowNode.groupData can have data for the group this column is displaying, even though\n        // this rowNode isn't grouping by the column we are displaying\n        // if no groupData at all, we are not showing a parent value\n        if (!rowNode.groupData) {\n            this.showingValueForOpenedParent = false;\n            return;\n        }\n        // this is the normal case, in that we are showing a group for which this column is configured. note that\n        // this means the Row Group is closed (if it was open, we would not be displaying it)\n        var showingGroupNode = rowNode.rowGroupColumn != null;\n        if (showingGroupNode) {\n            var keyOfGroupingColumn = rowNode.rowGroupColumn.getId();\n            var configuredToShowThisGroupLevel = column.isRowGroupDisplayed(keyOfGroupingColumn);\n            // if showing group as normal, we didn't take group info from parent\n            if (configuredToShowThisGroupLevel) {\n                this.showingValueForOpenedParent = false;\n                return;\n            }\n        }\n        // see if we are showing a Group Value for the Displayed Group. if we are showing a group value, and this Row Node\n        // is not grouping by this Displayed Group, we must of gotten the value from a parent node\n        var valPresent = rowNode.groupData[column.getId()] != null;\n        this.showingValueForOpenedParent = valPresent;\n    };\n    GroupCellRendererCtrl.prototype.addValueElement = function () {\n        if (this.displayedGroupNode.footer) {\n            this.addFooterValue();\n        }\n        else {\n            this.addGroupValue();\n            this.addChildCount();\n        }\n    };\n    GroupCellRendererCtrl.prototype.addGroupValue = function () {\n        // we try and use the cellRenderer of the column used for the grouping if we can\n        var paramsAdjusted = this.adjustParamsWithDetailsFromRelatedColumn();\n        var innerCompDetails = this.getInnerCompDetails(paramsAdjusted);\n        var valueFormatted = paramsAdjusted.valueFormatted, value = paramsAdjusted.value;\n        var valueWhenNoRenderer = valueFormatted;\n        if (valueWhenNoRenderer == null) {\n            if (value === '' && this.params.node.group) {\n                var localeTextFunc = this.localeService.getLocaleTextFunc();\n                valueWhenNoRenderer = localeTextFunc('blanks', '(Blanks)');\n            }\n            else {\n                valueWhenNoRenderer = value !== null && value !== void 0 ? value : null;\n            }\n        }\n        this.comp.setInnerRenderer(innerCompDetails, valueWhenNoRenderer);\n    };\n    GroupCellRendererCtrl.prototype.adjustParamsWithDetailsFromRelatedColumn = function () {\n        var relatedColumn = this.displayedGroupNode.rowGroupColumn;\n        var column = this.params.column;\n        if (!relatedColumn) {\n            return this.params;\n        }\n        var notFullWidth = column != null;\n        if (notFullWidth) {\n            var showingThisRowGroup = column.isRowGroupDisplayed(relatedColumn.getId());\n            if (!showingThisRowGroup) {\n                return this.params;\n            }\n        }\n        var params = this.params;\n        var _a = this.params, value = _a.value, node = _a.node;\n        var valueFormatted = this.valueFormatterService.formatValue(relatedColumn, node, value);\n        // we don't update the original params, as they could of come through React,\n        // as react has RowGroupCellRenderer, which means the params could be props which\n        // would be read only\n        var paramsAdjusted = __assign$c(__assign$c({}, params), { valueFormatted: valueFormatted });\n        return paramsAdjusted;\n    };\n    GroupCellRendererCtrl.prototype.addFooterValue = function () {\n        var footerValueGetter = this.params.footerValueGetter;\n        var footerValue = '';\n        if (footerValueGetter) {\n            // params is same as we were given, except we set the value as the item to display\n            var paramsClone = cloneObject(this.params);\n            paramsClone.value = this.params.value;\n            if (typeof footerValueGetter === 'function') {\n                footerValue = footerValueGetter(paramsClone);\n            }\n            else if (typeof footerValueGetter === 'string') {\n                footerValue = this.expressionService.evaluate(footerValueGetter, paramsClone);\n            }\n            else {\n                console.warn('AG Grid: footerValueGetter should be either a function or a string (expression)');\n            }\n        }\n        else {\n            footerValue = 'Total ' + (this.params.value != null ? this.params.value : '');\n        }\n        var innerCompDetails = this.getInnerCompDetails(this.params);\n        this.comp.setInnerRenderer(innerCompDetails, footerValue);\n    };\n    GroupCellRendererCtrl.prototype.getInnerCompDetails = function (params) {\n        var _this = this;\n        // for full width rows, we don't do any of the below\n        if (params.fullWidth) {\n            return this.userComponentFactory.getFullWidthGroupRowInnerCellRenderer(this.gridOptionsService.get('groupRowRendererParams'), params);\n        }\n        // when grouping, the normal case is we use the cell renderer of the grouped column. eg if grouping by country\n        // and then rating, we will use the country cell renderer for each country group row and likewise the rating\n        // cell renderer for each rating group row.\n        //\n        // however if the user has innerCellRenderer defined, this gets preference and we don't use cell renderers\n        // of the grouped columns.\n        //\n        // so we check and use in the following order:\n        //\n        // 1) thisColDef.cellRendererParams.innerRenderer of the column showing the groups (eg auto group column)\n        // 2) groupedColDef.cellRenderer of the grouped column\n        // 3) groupedColDef.cellRendererParams.innerRenderer\n        // we check if cell renderer provided for the group cell renderer, eg colDef.cellRendererParams.innerRenderer\n        var innerCompDetails = this.userComponentFactory\n            .getInnerRendererDetails(params, params);\n        // avoid using GroupCellRenderer again, otherwise stack overflow, as we insert same renderer again and again.\n        // this covers off chance user is grouping by a column that is also configured with GroupCellRenderer\n        var isGroupRowRenderer = function (details) { return details && details.componentClass == _this.compClass; };\n        if (innerCompDetails && !isGroupRowRenderer(innerCompDetails)) {\n            // use the renderer defined in cellRendererParams.innerRenderer\n            return innerCompDetails;\n        }\n        var relatedColumn = this.displayedGroupNode.rowGroupColumn;\n        var relatedColDef = relatedColumn ? relatedColumn.getColDef() : undefined;\n        if (!relatedColDef) {\n            return;\n        }\n        // otherwise see if we can use the cellRenderer of the column we are grouping by\n        var relatedCompDetails = this.userComponentFactory\n            .getCellRendererDetails(relatedColDef, params);\n        if (relatedCompDetails && !isGroupRowRenderer(relatedCompDetails)) {\n            // Only if the original column is using a specific renderer, it it is a using a DEFAULT one ignore it\n            return relatedCompDetails;\n        }\n        if (isGroupRowRenderer(relatedCompDetails) &&\n            relatedColDef.cellRendererParams &&\n            relatedColDef.cellRendererParams.innerRenderer) {\n            // edge case - this comes from a column which has been grouped dynamically, that has a renderer 'group'\n            // and has an inner cell renderer\n            var res = this.userComponentFactory.getInnerRendererDetails(relatedColDef.cellRendererParams, params);\n            return res;\n        }\n    };\n    GroupCellRendererCtrl.prototype.addChildCount = function () {\n        // only include the child count if it's included, eg if user doing custom aggregation,\n        // then this could be left out, or set to -1, ie no child count\n        if (this.params.suppressCount) {\n            return;\n        }\n        this.addManagedListener(this.displayedGroupNode, RowNode.EVENT_ALL_CHILDREN_COUNT_CHANGED, this.updateChildCount.bind(this));\n        // filtering changes the child count, so need to cater for it\n        this.updateChildCount();\n    };\n    GroupCellRendererCtrl.prototype.updateChildCount = function () {\n        var allChildrenCount = this.displayedGroupNode.allChildrenCount;\n        var showingGroupForThisNode = this.isShowRowGroupForThisRow();\n        var showCount = showingGroupForThisNode && allChildrenCount != null && allChildrenCount >= 0;\n        var countString = showCount ? \"(\" + allChildrenCount + \")\" : \"\";\n        this.comp.setChildCount(countString);\n    };\n    GroupCellRendererCtrl.prototype.isShowRowGroupForThisRow = function () {\n        if (this.gridOptionsService.isTreeData()) {\n            return true;\n        }\n        var rowGroupColumn = this.displayedGroupNode.rowGroupColumn;\n        if (!rowGroupColumn) {\n            return false;\n        }\n        // column is null for fullWidthRows\n        var column = this.params.column;\n        var thisColumnIsInterested = column == null || column.isRowGroupDisplayed(rowGroupColumn.getId());\n        return thisColumnIsInterested;\n    };\n    GroupCellRendererCtrl.prototype.addExpandAndContract = function () {\n        var _a;\n        var params = this.params;\n        var eExpandedIcon = createIconNoSpan('groupExpanded', this.gridOptionsService, null);\n        var eContractedIcon = createIconNoSpan('groupContracted', this.gridOptionsService, null);\n        if (eExpandedIcon) {\n            this.eExpanded.appendChild(eExpandedIcon);\n        }\n        if (eContractedIcon) {\n            this.eContracted.appendChild(eContractedIcon);\n        }\n        var eGroupCell = params.eGridCell;\n        // if editing groups, then double click is to start editing\n        var isDoubleClickEdit = ((_a = this.params.column) === null || _a === void 0 ? void 0 : _a.isCellEditable(params.node)) && this.gridOptionsService.is('enableGroupEdit');\n        if (!isDoubleClickEdit && this.isExpandable() && !params.suppressDoubleClickExpand) {\n            this.addManagedListener(eGroupCell, 'dblclick', this.onCellDblClicked.bind(this));\n        }\n        this.addManagedListener(this.eExpanded, 'click', this.onExpandClicked.bind(this));\n        this.addManagedListener(this.eContracted, 'click', this.onExpandClicked.bind(this));\n        // expand / contract as the user hits enter\n        this.addManagedListener(eGroupCell, 'keydown', this.onKeyDown.bind(this));\n        this.addManagedListener(params.node, RowNode.EVENT_EXPANDED_CHANGED, this.showExpandAndContractIcons.bind(this));\n        this.showExpandAndContractIcons();\n        // because we don't show the expand / contract when there are no children, we need to check every time\n        // the number of children change.\n        var expandableChangedListener = this.onRowNodeIsExpandableChanged.bind(this);\n        this.addManagedListener(this.displayedGroupNode, RowNode.EVENT_ALL_CHILDREN_COUNT_CHANGED, expandableChangedListener);\n        this.addManagedListener(this.displayedGroupNode, RowNode.EVENT_MASTER_CHANGED, expandableChangedListener);\n        this.addManagedListener(this.displayedGroupNode, RowNode.EVENT_GROUP_CHANGED, expandableChangedListener);\n        this.addManagedListener(this.displayedGroupNode, RowNode.EVENT_HAS_CHILDREN_CHANGED, expandableChangedListener);\n    };\n    GroupCellRendererCtrl.prototype.onExpandClicked = function (mouseEvent) {\n        if (isStopPropagationForAgGrid(mouseEvent)) {\n            return;\n        }\n        // so if we expand a node, it does not also get selected.\n        stopPropagationForAgGrid(mouseEvent);\n        this.onExpandOrContract(mouseEvent);\n    };\n    GroupCellRendererCtrl.prototype.onExpandOrContract = function (e) {\n        // must use the displayedGroup, so if data was dragged down, we expand the parent, not this row\n        var rowNode = this.displayedGroupNode;\n        var nextExpandState = !rowNode.expanded;\n        if (!nextExpandState && rowNode.sticky) {\n            this.scrollToStickyNode(rowNode);\n        }\n        rowNode.setExpanded(nextExpandState, e);\n    };\n    GroupCellRendererCtrl.prototype.scrollToStickyNode = function (rowNode) {\n        var gridBodyCtrl = this.ctrlsService.getGridBodyCtrl();\n        var scrollFeature = gridBodyCtrl.getScrollFeature();\n        scrollFeature.setVerticalScrollPosition(rowNode.rowTop - rowNode.stickyRowTop);\n    };\n    GroupCellRendererCtrl.prototype.isExpandable = function () {\n        if (this.showingValueForOpenedParent) {\n            return true;\n        }\n        var rowNode = this.displayedGroupNode;\n        var reducedLeafNode = this.columnModel.isPivotMode() && rowNode.leafGroup;\n        var expandableGroup = rowNode.isExpandable() && !rowNode.footer && !reducedLeafNode;\n        if (!expandableGroup) {\n            return false;\n        }\n        // column is null for fullWidthRows\n        var column = this.params.column;\n        var displayingForOneColumnOnly = column != null && typeof column.getColDef().showRowGroup === 'string';\n        if (displayingForOneColumnOnly) {\n            var showing = this.isShowRowGroupForThisRow();\n            return showing;\n        }\n        return true;\n    };\n    GroupCellRendererCtrl.prototype.showExpandAndContractIcons = function () {\n        var _a = this, params = _a.params, displayedGroup = _a.displayedGroupNode, columnModel = _a.columnModel;\n        var node = params.node;\n        var isExpandable = this.isExpandable();\n        if (isExpandable) {\n            // if expandable, show one based on expand state.\n            // if we were dragged down, means our parent is always expanded\n            var expanded = this.showingValueForOpenedParent ? true : node.expanded;\n            this.comp.setExpandedDisplayed(expanded);\n            this.comp.setContractedDisplayed(!expanded);\n        }\n        else {\n            // it not expandable, show neither\n            this.comp.setExpandedDisplayed(false);\n            this.comp.setContractedDisplayed(false);\n        }\n        // compensation padding for leaf nodes, so there is blank space instead of the expand icon\n        var pivotMode = columnModel.isPivotMode();\n        var pivotModeAndLeafGroup = pivotMode && displayedGroup.leafGroup;\n        var addExpandableCss = isExpandable && !pivotModeAndLeafGroup;\n        var isTotalFooterNode = node.footer && node.level === -1;\n        this.comp.addOrRemoveCssClass('ag-cell-expandable', addExpandableCss);\n        this.comp.addOrRemoveCssClass('ag-row-group', addExpandableCss);\n        if (pivotMode) {\n            this.comp.addOrRemoveCssClass('ag-pivot-leaf-group', pivotModeAndLeafGroup);\n        }\n        else if (!isTotalFooterNode) {\n            this.comp.addOrRemoveCssClass('ag-row-group-leaf-indent', !addExpandableCss);\n        }\n    };\n    GroupCellRendererCtrl.prototype.onRowNodeIsExpandableChanged = function () {\n        // maybe if no children now, we should hide the expand / contract icons\n        this.showExpandAndContractIcons();\n        // if we have no children, this impacts the indent\n        this.setIndent();\n        this.refreshAriaExpanded();\n    };\n    GroupCellRendererCtrl.prototype.setupIndent = function () {\n        // only do this if an indent - as this overwrites the padding that\n        // the theme set, which will make things look 'not aligned' for the\n        // first group level.\n        var node = this.params.node;\n        var suppressPadding = this.params.suppressPadding;\n        if (!suppressPadding) {\n            this.addManagedListener(node, RowNode.EVENT_UI_LEVEL_CHANGED, this.setIndent.bind(this));\n            this.setIndent();\n        }\n    };\n    GroupCellRendererCtrl.prototype.setIndent = function () {\n        if (this.gridOptionsService.is('groupHideOpenParents')) {\n            return;\n        }\n        var params = this.params;\n        var rowNode = params.node;\n        // if we are only showing one group column, we don't want to be indenting based on level\n        var fullWithRow = !!params.colDef;\n        var treeData = this.gridOptionsService.isTreeData();\n        var manyDimensionThisColumn = !fullWithRow || treeData || params.colDef.showRowGroup === true;\n        var paddingCount = manyDimensionThisColumn ? rowNode.uiLevel : 0;\n        if (this.indentClass) {\n            this.comp.addOrRemoveCssClass(this.indentClass, false);\n        }\n        this.indentClass = 'ag-row-group-indent-' + paddingCount;\n        this.comp.addOrRemoveCssClass(this.indentClass, true);\n    };\n    GroupCellRendererCtrl.prototype.addFullWidthRowDraggerIfNeeded = function () {\n        var _this = this;\n        if (!this.params.fullWidth || !this.params.rowDrag) {\n            return;\n        }\n        var rowDragComp = new RowDragComp(function () { return _this.params.value; }, this.params.node);\n        this.createManagedBean(rowDragComp, this.context);\n        this.eGui.insertAdjacentElement('afterbegin', rowDragComp.getGui());\n    };\n    GroupCellRendererCtrl.prototype.isUserWantsSelected = function () {\n        var paramsCheckbox = this.params.checkbox;\n        // if a function, we always return true as change detection can show or hide the checkbox.\n        return typeof paramsCheckbox === 'function' || paramsCheckbox === true;\n    };\n    GroupCellRendererCtrl.prototype.addCheckboxIfNeeded = function () {\n        var _this = this;\n        var rowNode = this.displayedGroupNode;\n        var checkboxNeeded = this.isUserWantsSelected() &&\n            // footers cannot be selected\n            !rowNode.footer &&\n            // pinned rows cannot be selected\n            !rowNode.rowPinned &&\n            // details cannot be selected\n            !rowNode.detail;\n        if (checkboxNeeded) {\n            var cbSelectionComponent_1 = new CheckboxSelectionComponent();\n            this.getContext().createBean(cbSelectionComponent_1);\n            cbSelectionComponent_1.init({\n                rowNode: rowNode,\n                column: this.params.column,\n                overrides: {\n                    isVisible: this.params.checkbox,\n                    callbackParams: this.params,\n                    removeHidden: true,\n                },\n            });\n            this.eCheckbox.appendChild(cbSelectionComponent_1.getGui());\n            this.addDestroyFunc(function () { return _this.getContext().destroyBean(cbSelectionComponent_1); });\n        }\n        this.comp.setCheckboxVisible(checkboxNeeded);\n    };\n    GroupCellRendererCtrl.prototype.onKeyDown = function (event) {\n        var enterKeyPressed = event.key === KeyCode.ENTER;\n        if (!enterKeyPressed || this.params.suppressEnterExpand) {\n            return;\n        }\n        var cellEditable = this.params.column && this.params.column.isCellEditable(this.params.node);\n        if (cellEditable) {\n            return;\n        }\n        this.onExpandOrContract(event);\n    };\n    GroupCellRendererCtrl.prototype.onCellDblClicked = function (mouseEvent) {\n        if (isStopPropagationForAgGrid(mouseEvent)) {\n            return;\n        }\n        // we want to avoid acting on double click events on the expand / contract icon,\n        // as that icons already has expand / collapse functionality on it. otherwise if\n        // the icon was double clicked, we would get 'click', 'click', 'dblclick' which\n        // is open->close->open, however double click should be open->close only.\n        var targetIsExpandIcon = isElementInEventPath(this.eExpanded, mouseEvent)\n            || isElementInEventPath(this.eContracted, mouseEvent);\n        if (!targetIsExpandIcon) {\n            this.onExpandOrContract(mouseEvent);\n        }\n    };\n    __decorate$1Z([\n        Autowired('expressionService')\n    ], GroupCellRendererCtrl.prototype, \"expressionService\", void 0);\n    __decorate$1Z([\n        Autowired('valueFormatterService')\n    ], GroupCellRendererCtrl.prototype, \"valueFormatterService\", void 0);\n    __decorate$1Z([\n        Autowired('columnModel')\n    ], GroupCellRendererCtrl.prototype, \"columnModel\", void 0);\n    __decorate$1Z([\n        Autowired('userComponentFactory')\n    ], GroupCellRendererCtrl.prototype, \"userComponentFactory\", void 0);\n    __decorate$1Z([\n        Autowired(\"ctrlsService\")\n    ], GroupCellRendererCtrl.prototype, \"ctrlsService\", void 0);\n    return GroupCellRendererCtrl;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$28 = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$1Y = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar GroupCellRenderer = /** @class */ (function (_super) {\n    __extends$28(GroupCellRenderer, _super);\n    function GroupCellRenderer() {\n        return _super.call(this, GroupCellRenderer.TEMPLATE) || this;\n    }\n    GroupCellRenderer.prototype.init = function (params) {\n        var _this = this;\n        var compProxy = {\n            setInnerRenderer: function (compDetails, valueToDisplay) { return _this.setRenderDetails(compDetails, valueToDisplay); },\n            setChildCount: function (count) { return _this.eChildCount.innerHTML = count; },\n            addOrRemoveCssClass: function (cssClass, value) { return _this.addOrRemoveCssClass(cssClass, value); },\n            setContractedDisplayed: function (expanded) { return setDisplayed(_this.eContracted, expanded); },\n            setExpandedDisplayed: function (expanded) { return setDisplayed(_this.eExpanded, expanded); },\n            setCheckboxVisible: function (visible) { return _this.eCheckbox.classList.toggle('ag-invisible', !visible); }\n        };\n        var ctrl = this.createManagedBean(new GroupCellRendererCtrl());\n        var fullWidth = !params.colDef;\n        var eGui = this.getGui();\n        ctrl.init(compProxy, eGui, this.eCheckbox, this.eExpanded, this.eContracted, this.constructor, params);\n        if (fullWidth) {\n            setAriaRole(eGui, 'gridcell');\n        }\n    };\n    GroupCellRenderer.prototype.setRenderDetails = function (compDetails, valueToDisplay) {\n        var _this = this;\n        if (compDetails) {\n            var componentPromise = compDetails.newAgStackInstance();\n            if (!componentPromise) {\n                return;\n            }\n            componentPromise.then(function (comp) {\n                if (!comp) {\n                    return;\n                }\n                var destroyComp = function () { return _this.context.destroyBean(comp); };\n                if (_this.isAlive()) {\n                    _this.eValue.appendChild(comp.getGui());\n                    _this.addDestroyFunc(destroyComp);\n                }\n                else {\n                    destroyComp();\n                }\n            });\n        }\n        else {\n            this.eValue.innerText = valueToDisplay;\n        }\n    };\n    // this is a user component, and IComponent has \"public destroy()\" as part of the interface.\n    // so we need to have public here instead of private or protected\n    GroupCellRenderer.prototype.destroy = function () {\n        this.getContext().destroyBean(this.innerCellRenderer);\n        _super.prototype.destroy.call(this);\n    };\n    GroupCellRenderer.prototype.refresh = function () {\n        return false;\n    };\n    GroupCellRenderer.TEMPLATE = \"<span class=\\\"ag-cell-wrapper\\\">\\n            <span class=\\\"ag-group-expanded\\\" ref=\\\"eExpanded\\\"></span>\\n            <span class=\\\"ag-group-contracted\\\" ref=\\\"eContracted\\\"></span>\\n            <span class=\\\"ag-group-checkbox ag-invisible\\\" ref=\\\"eCheckbox\\\"></span>\\n            <span class=\\\"ag-group-value\\\" ref=\\\"eValue\\\"></span>\\n            <span class=\\\"ag-group-child-count\\\" ref=\\\"eChildCount\\\"></span>\\n        </span>\";\n    __decorate$1Y([\n        RefSelector('eExpanded')\n    ], GroupCellRenderer.prototype, \"eExpanded\", void 0);\n    __decorate$1Y([\n        RefSelector('eContracted')\n    ], GroupCellRenderer.prototype, \"eContracted\", void 0);\n    __decorate$1Y([\n        RefSelector('eCheckbox')\n    ], GroupCellRenderer.prototype, \"eCheckbox\", void 0);\n    __decorate$1Y([\n        RefSelector('eValue')\n    ], GroupCellRenderer.prototype, \"eValue\", void 0);\n    __decorate$1Y([\n        RefSelector('eChildCount')\n    ], GroupCellRenderer.prototype, \"eChildCount\", void 0);\n    return GroupCellRenderer;\n}(Component));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$27 = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$1X = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar LoadingCellRenderer = /** @class */ (function (_super) {\n    __extends$27(LoadingCellRenderer, _super);\n    function LoadingCellRenderer() {\n        return _super.call(this, LoadingCellRenderer.TEMPLATE) || this;\n    }\n    LoadingCellRenderer.prototype.init = function (params) {\n        params.node.failedLoad ? this.setupFailed() : this.setupLoading();\n    };\n    LoadingCellRenderer.prototype.setupFailed = function () {\n        var localeTextFunc = this.localeService.getLocaleTextFunc();\n        this.eLoadingText.innerText = localeTextFunc('loadingError', 'ERR');\n    };\n    LoadingCellRenderer.prototype.setupLoading = function () {\n        var eLoadingIcon = createIconNoSpan('groupLoading', this.gridOptionsService, null);\n        if (eLoadingIcon) {\n            this.eLoadingIcon.appendChild(eLoadingIcon);\n        }\n        var localeTextFunc = this.localeService.getLocaleTextFunc();\n        this.eLoadingText.innerText = localeTextFunc('loadingOoo', 'Loading');\n    };\n    LoadingCellRenderer.prototype.refresh = function (params) {\n        return false;\n    };\n    // this is a user component, and IComponent has \"public destroy()\" as part of the interface.\n    // so we need to override destroy() just to make the method public.\n    LoadingCellRenderer.prototype.destroy = function () {\n        _super.prototype.destroy.call(this);\n    };\n    LoadingCellRenderer.TEMPLATE = \"<div class=\\\"ag-loading\\\">\\n            <span class=\\\"ag-loading-icon\\\" ref=\\\"eLoadingIcon\\\"></span>\\n            <span class=\\\"ag-loading-text\\\" ref=\\\"eLoadingText\\\"></span>\\n        </div>\";\n    __decorate$1X([\n        RefSelector('eLoadingIcon')\n    ], LoadingCellRenderer.prototype, \"eLoadingIcon\", void 0);\n    __decorate$1X([\n        RefSelector('eLoadingText')\n    ], LoadingCellRenderer.prototype, \"eLoadingText\", void 0);\n    return LoadingCellRenderer;\n}(Component));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$26 = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar LoadingOverlayComponent$1 = /** @class */ (function (_super) {\n    __extends$26(LoadingOverlayComponent, _super);\n    function LoadingOverlayComponent() {\n        return _super.call(this) || this;\n    }\n    // this is a user component, and IComponent has \"public destroy()\" as part of the interface.\n    // so we need to override destroy() just to make the method public.\n    LoadingOverlayComponent.prototype.destroy = function () {\n        _super.prototype.destroy.call(this);\n    };\n    LoadingOverlayComponent.prototype.init = function (params) {\n        var _a;\n        var template = (_a = this.gridOptionsService.get('overlayLoadingTemplate')) !== null && _a !== void 0 ? _a : LoadingOverlayComponent.DEFAULT_LOADING_OVERLAY_TEMPLATE;\n        var localeTextFunc = this.localeService.getLocaleTextFunc();\n        var localisedTemplate = template.replace('[LOADING...]', localeTextFunc('loadingOoo', 'Loading...'));\n        this.setTemplate(localisedTemplate);\n    };\n    LoadingOverlayComponent.DEFAULT_LOADING_OVERLAY_TEMPLATE = '<span class=\"ag-overlay-loading-center\">[LOADING...]</span>';\n    return LoadingOverlayComponent;\n}(Component));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$25 = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar NoRowsOverlayComponent$1 = /** @class */ (function (_super) {\n    __extends$25(NoRowsOverlayComponent, _super);\n    function NoRowsOverlayComponent() {\n        return _super.call(this) || this;\n    }\n    // this is a user component, and IComponent has \"public destroy()\" as part of the interface.\n    // so we need to override destroy() just to make the method public.\n    NoRowsOverlayComponent.prototype.destroy = function () {\n        _super.prototype.destroy.call(this);\n    };\n    NoRowsOverlayComponent.prototype.init = function (params) {\n        var _a;\n        var template = (_a = this.gridOptionsService.get('overlayNoRowsTemplate')) !== null && _a !== void 0 ? _a : NoRowsOverlayComponent.DEFAULT_NO_ROWS_TEMPLATE;\n        var localeTextFunc = this.localeService.getLocaleTextFunc();\n        var localisedTemplate = template.replace('[NO_ROWS_TO_SHOW]', localeTextFunc('noRowsToShow', 'No Rows To Show'));\n        this.setTemplate(localisedTemplate);\n    };\n    NoRowsOverlayComponent.DEFAULT_NO_ROWS_TEMPLATE = '<span class=\"ag-overlay-no-rows-center\">[NO_ROWS_TO_SHOW]</span>';\n    return NoRowsOverlayComponent;\n}(Component));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$24 = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar TooltipComponent$1 = /** @class */ (function (_super) {\n    __extends$24(TooltipComponent, _super);\n    function TooltipComponent() {\n        return _super.call(this, /* html */ \"<div class=\\\"ag-tooltip\\\"></div>\") || this;\n    }\n    // will need to type params\n    TooltipComponent.prototype.init = function (params) {\n        var value = params.value;\n        this.getGui().innerHTML = escapeString(value);\n    };\n    return TooltipComponent;\n}(PopupComponent));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$23 = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$1W = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __read$m = (undefined && undefined.__read) || function (o, n) {\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n    if (!m) return o;\n    var i = m.call(o), r, ar = [], e;\n    try {\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n    }\n    catch (error) { e = { error: error }; }\n    finally {\n        try {\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\n        }\n        finally { if (e) throw e.error; }\n    }\n    return ar;\n};\nvar __spread$i = (undefined && undefined.__spread) || function () {\n    for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read$m(arguments[i]));\n    return ar;\n};\nvar UserComponentRegistry = /** @class */ (function (_super) {\n    __extends$23(UserComponentRegistry, _super);\n    function UserComponentRegistry() {\n        var _this = _super !== null && _super.apply(this, arguments) || this;\n        _this.agGridDefaults = {\n            //date\n            agDateInput: DefaultDateComponent,\n            //header\n            agColumnHeader: HeaderComp,\n            agColumnGroupHeader: HeaderGroupComp,\n            agSortIndicator: SortIndicatorComp,\n            //floating filters\n            agTextColumnFloatingFilter: TextFloatingFilter,\n            agNumberColumnFloatingFilter: NumberFloatingFilter,\n            agDateColumnFloatingFilter: DateFloatingFilter,\n            agReadOnlyFloatingFilter: ReadOnlyFloatingFilter,\n            // renderers\n            agAnimateShowChangeCellRenderer: AnimateShowChangeCellRenderer,\n            agAnimateSlideCellRenderer: AnimateSlideCellRenderer,\n            agGroupCellRenderer: GroupCellRenderer,\n            agGroupRowRenderer: GroupCellRenderer,\n            agLoadingCellRenderer: LoadingCellRenderer,\n            //editors\n            agCellEditor: TextCellEditor,\n            agTextCellEditor: TextCellEditor,\n            agSelectCellEditor: SelectCellEditor,\n            agLargeTextCellEditor: LargeTextCellEditor,\n            //filter\n            agTextColumnFilter: TextFilter,\n            agNumberColumnFilter: NumberFilter,\n            agDateColumnFilter: DateFilter,\n            //overlays\n            agLoadingOverlay: LoadingOverlayComponent$1,\n            agNoRowsOverlay: NoRowsOverlayComponent$1,\n            // tooltips\n            agTooltipComponent: TooltipComponent$1\n        };\n        /** Used to provide useful error messages if a user is trying to use an enterprise component without loading the module. */\n        _this.enterpriseAgDefaultCompsModule = {\n            agSetColumnFilter: ModuleNames.SetFilterModule,\n            agSetColumnFloatingFilter: ModuleNames.SetFilterModule,\n            agMultiColumnFilter: ModuleNames.MultiFilterModule,\n            agMultiColumnFloatingFilter: ModuleNames.MultiFilterModule,\n            agGroupColumnFilter: ModuleNames.RowGroupingModule,\n            agGroupColumnFloatingFilter: ModuleNames.RowGroupingModule,\n            agRichSelect: ModuleNames.RichSelectModule,\n            agRichSelectCellEditor: ModuleNames.RichSelectModule,\n            agDetailCellRenderer: ModuleNames.MasterDetailModule,\n            agSparklineCellRenderer: ModuleNames.SparklinesModule\n        };\n        _this.deprecatedAgGridDefaults = {\n            agPopupTextCellEditor: 'AG Grid: Since v27.1 The agPopupTextCellEditor is deprecated. Instead use { cellEditor: \"agTextCellEditor\", cellEditorPopup: true }',\n            agPopupSelectCellEditor: 'AG Grid: Since v27.1 the agPopupSelectCellEditor is deprecated. Instead use { cellEditor: \"agSelectCellEditor\", cellEditorPopup: true }',\n        };\n        _this.jsComps = {};\n        _this.fwComps = {};\n        return _this;\n    }\n    UserComponentRegistry.prototype.init = function () {\n        var _this = this;\n        if (this.gridOptions.components != null) {\n            iterateObject(this.gridOptions.components, function (key, component) { return _this.registerJsComponent(key, component); });\n        }\n        if (this.gridOptions.frameworkComponents != null) {\n            iterateObject(this.gridOptions.frameworkComponents, function (key, component) { return _this.registerFwComponent(key, component); });\n        }\n    };\n    UserComponentRegistry.prototype.registerDefaultComponent = function (name, component) {\n        if (this.agGridDefaults[name]) {\n            console.error(\"Trying to overwrite a default component. You should call registerComponent\");\n            return;\n        }\n        this.agGridDefaults[name] = component;\n    };\n    UserComponentRegistry.prototype.registerJsComponent = function (name, component) {\n        if (this.fwComps[name]) {\n            console.error(\"Trying to register a component that you have already registered for frameworks: \" + name);\n            return;\n        }\n        this.jsComps[name] = component;\n    };\n    /**\n     * B the business interface (ie IHeader)\n     * A the agGridComponent interface (ie IHeaderComp). The final object acceptable by ag-grid\n     */\n    UserComponentRegistry.prototype.registerFwComponent = function (name, component) {\n        var warningMessage = \"AG Grid: As of v27, registering components via grid property frameworkComponents is deprecated. Instead register both JavaScript AND Framework Components via the components property.\";\n        doOnce(function () { return console.warn(warningMessage); }, \"UserComponentRegistry.frameworkComponentsDeprecated\");\n        this.fwComps[name] = component;\n    };\n    UserComponentRegistry.prototype.retrieve = function (propertyName, name) {\n        var _this = this;\n        var createResult = function (component, componentFromFramework) { return ({ componentFromFramework: componentFromFramework, component: component }); };\n        // FrameworkOverrides.frameworkComponent() is used in two locations:\n        // 1) for Vue, user provided components get registered via a framework specific way.\n        // 2) for React, it's how the React UI provides alternative default components (eg GroupCellRenderer and DetailCellRenderer)\n        var registeredViaFrameworkComp = this.getFrameworkOverrides().frameworkComponent(name, this.gridOptions.components);\n        if (registeredViaFrameworkComp != null) {\n            return createResult(registeredViaFrameworkComp, true);\n        }\n        var frameworkComponent = this.fwComps[name];\n        if (frameworkComponent) {\n            return createResult(frameworkComponent, true);\n        }\n        var jsComponent = this.jsComps[name];\n        if (jsComponent) {\n            var isFwkComp = this.getFrameworkOverrides().isFrameworkComponent(jsComponent);\n            return createResult(jsComponent, isFwkComp);\n        }\n        var defaultComponent = this.agGridDefaults[name];\n        if (defaultComponent) {\n            return createResult(defaultComponent, false);\n        }\n        var moduleForComponent = this.enterpriseAgDefaultCompsModule[name];\n        if (moduleForComponent) {\n            ModuleRegistry.assertRegistered(moduleForComponent, \"AG Grid '\" + propertyName + \"' component: \" + name);\n        }\n        else if (this.deprecatedAgGridDefaults[name]) {\n            doOnce(function () { return console.warn(_this.deprecatedAgGridDefaults[name]); }, name);\n        }\n        else {\n            doOnce(function () { _this.warnAboutMissingComponent(propertyName, name); }, \"MissingComp\" + name);\n        }\n        return null;\n    };\n    UserComponentRegistry.prototype.warnAboutMissingComponent = function (propertyName, componentName) {\n        var validComponents = __spread$i(Object.keys(this.agGridDefaults).filter(function (k) { return !['agCellEditor', 'agGroupRowRenderer', 'agSortIndicator'].includes(k); }), Object.keys(this.jsComps), Object.keys(this.fwComps));\n        var suggestions = fuzzySuggestions(componentName, validComponents, true, 0.8);\n        console.warn(\"AG Grid: Could not find '\" + componentName + \"' component. It was configured as \\\"\" + propertyName + \": '\" + componentName + \"'\\\" but it wasn't found in the list of registered components.\");\n        if (suggestions.length > 0) {\n            console.warn(\"         Did you mean: [\" + suggestions.slice(0, 3) + \"]?\");\n        }\n        console.warn(\"If using a custom component check it has been registered as described in: https://ag-grid.com/javascript-data-grid/components/\");\n    };\n    __decorate$1W([\n        Autowired('gridOptions')\n    ], UserComponentRegistry.prototype, \"gridOptions\", void 0);\n    __decorate$1W([\n        PostConstruct\n    ], UserComponentRegistry.prototype, \"init\", null);\n    UserComponentRegistry = __decorate$1W([\n        Bean('userComponentRegistry')\n    ], UserComponentRegistry);\n    return UserComponentRegistry;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar DateComponent = {\n    propertyName: 'dateComponent',\n    cellRenderer: false\n};\nvar HeaderComponent = {\n    propertyName: 'headerComponent',\n    cellRenderer: false\n};\nvar HeaderGroupComponent = {\n    propertyName: 'headerGroupComponent',\n    cellRenderer: false\n};\nvar CellRendererComponent = {\n    propertyName: 'cellRenderer',\n    cellRenderer: true\n};\nvar CellEditorComponent = {\n    propertyName: 'cellEditor',\n    cellRenderer: false\n};\nvar InnerRendererComponent = {\n    propertyName: 'innerRenderer',\n    cellRenderer: true\n};\nvar LoadingOverlayComponent = {\n    propertyName: 'loadingOverlayComponent',\n    cellRenderer: false\n};\nvar NoRowsOverlayComponent = {\n    propertyName: 'noRowsOverlayComponent',\n    cellRenderer: false\n};\nvar TooltipComponent = {\n    propertyName: 'tooltipComponent',\n    cellRenderer: false\n};\nvar FilterComponent = {\n    propertyName: 'filter',\n    cellRenderer: false\n};\nvar FloatingFilterComponent = {\n    propertyName: 'floatingFilterComponent',\n    cellRenderer: false\n};\nvar ToolPanelComponent = {\n    propertyName: 'toolPanel',\n    cellRenderer: false\n};\nvar StatusPanelComponent = {\n    propertyName: 'statusPanel',\n    cellRenderer: false\n};\nvar FullWidth = {\n    propertyName: 'fullWidthCellRenderer',\n    cellRenderer: true\n};\nvar FullWidthLoading = {\n    propertyName: 'loadingCellRenderer',\n    cellRenderer: true\n};\nvar FullWidthGroup = {\n    propertyName: 'groupRowRenderer',\n    cellRenderer: true\n};\nvar FullWidthDetail = {\n    propertyName: 'detailCellRenderer',\n    cellRenderer: true\n};\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar FloatingFilterMapper = /** @class */ (function () {\n    function FloatingFilterMapper() {\n    }\n    FloatingFilterMapper.getFloatingFilterType = function (filterType) {\n        return this.filterToFloatingFilterMapping[filterType];\n    };\n    FloatingFilterMapper.filterToFloatingFilterMapping = {\n        set: 'agSetColumnFloatingFilter',\n        agSetColumnFilter: 'agSetColumnFloatingFilter',\n        multi: 'agMultiColumnFloatingFilter',\n        agMultiColumnFilter: 'agMultiColumnFloatingFilter',\n        group: 'agGroupColumnFloatingFilter',\n        agGroupColumnFilter: 'agGroupColumnFloatingFilter',\n        number: 'agNumberColumnFloatingFilter',\n        agNumberColumnFilter: 'agNumberColumnFloatingFilter',\n        date: 'agDateColumnFloatingFilter',\n        agDateColumnFilter: 'agDateColumnFloatingFilter',\n        text: 'agTextColumnFloatingFilter',\n        agTextColumnFilter: 'agTextColumnFloatingFilter'\n    };\n    return FloatingFilterMapper;\n}());\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$22 = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$1V = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar UserComponentFactory = /** @class */ (function (_super) {\n    __extends$22(UserComponentFactory, _super);\n    function UserComponentFactory() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    UserComponentFactory.prototype.getHeaderCompDetails = function (colDef, params) {\n        return this.getCompDetails(colDef, HeaderComponent, 'agColumnHeader', params);\n    };\n    UserComponentFactory.prototype.getHeaderGroupCompDetails = function (params) {\n        var colGroupDef = params.columnGroup.getColGroupDef();\n        return this.getCompDetails(colGroupDef, HeaderGroupComponent, 'agColumnGroupHeader', params);\n    };\n    // this one is unusual, as it can be LoadingCellRenderer, DetailCellRenderer, FullWidthCellRenderer or GroupRowRenderer.\n    // so we have to pass the type in.\n    UserComponentFactory.prototype.getFullWidthCellRendererDetails = function (params) {\n        return this.getCompDetails(this.gridOptions, FullWidth, null, params, true);\n    };\n    UserComponentFactory.prototype.getFullWidthLoadingCellRendererDetails = function (params) {\n        return this.getCompDetails(this.gridOptions, FullWidthLoading, 'agLoadingCellRenderer', params, true);\n    };\n    UserComponentFactory.prototype.getFullWidthGroupCellRendererDetails = function (params) {\n        return this.getCompDetails(this.gridOptions, FullWidthGroup, 'agGroupRowRenderer', params, true);\n    };\n    UserComponentFactory.prototype.getFullWidthDetailCellRendererDetails = function (params) {\n        return this.getCompDetails(this.gridOptions, FullWidthDetail, 'agDetailCellRenderer', params, true);\n    };\n    // CELL RENDERER\n    UserComponentFactory.prototype.getInnerRendererDetails = function (def, params) {\n        return this.getCompDetails(def, InnerRendererComponent, null, params);\n    };\n    UserComponentFactory.prototype.getFullWidthGroupRowInnerCellRenderer = function (def, params) {\n        return this.getCompDetails(def, InnerRendererComponent, null, params);\n    };\n    UserComponentFactory.prototype.getCellRendererDetails = function (def, params) {\n        return this.getCompDetails(def, CellRendererComponent, null, params);\n    };\n    // CELL EDITOR\n    UserComponentFactory.prototype.getCellEditorDetails = function (def, params) {\n        return this.getCompDetails(def, CellEditorComponent, 'agCellEditor', params, true);\n    };\n    // FILTER\n    UserComponentFactory.prototype.getFilterDetails = function (def, params, defaultFilter) {\n        return this.getCompDetails(def, FilterComponent, defaultFilter, params, true);\n    };\n    UserComponentFactory.prototype.getDateCompDetails = function (params) {\n        return this.getCompDetails(this.gridOptions, DateComponent, 'agDateInput', params, true);\n    };\n    UserComponentFactory.prototype.getLoadingOverlayCompDetails = function (params) {\n        return this.getCompDetails(this.gridOptions, LoadingOverlayComponent, 'agLoadingOverlay', params, true);\n    };\n    UserComponentFactory.prototype.getNoRowsOverlayCompDetails = function (params) {\n        return this.getCompDetails(this.gridOptions, NoRowsOverlayComponent, 'agNoRowsOverlay', params, true);\n    };\n    UserComponentFactory.prototype.getTooltipCompDetails = function (params) {\n        return this.getCompDetails(params.colDef, TooltipComponent, 'agTooltipComponent', params, true);\n    };\n    UserComponentFactory.prototype.getSetFilterCellRendererDetails = function (def, params) {\n        return this.getCompDetails(def, CellRendererComponent, null, params);\n    };\n    UserComponentFactory.prototype.getFloatingFilterCompDetails = function (def, params, defaultFloatingFilter) {\n        return this.getCompDetails(def, FloatingFilterComponent, defaultFloatingFilter, params);\n    };\n    UserComponentFactory.prototype.getToolPanelCompDetails = function (toolPanelDef, params) {\n        return this.getCompDetails(toolPanelDef, ToolPanelComponent, null, params, true);\n    };\n    UserComponentFactory.prototype.getStatusPanelCompDetails = function (def, params) {\n        return this.getCompDetails(def, StatusPanelComponent, null, params, true);\n    };\n    UserComponentFactory.prototype.getCompDetails = function (defObject, type, defaultName, params, mandatory) {\n        var _this = this;\n        if (mandatory === void 0) { mandatory = false; }\n        var propertyName = type.propertyName, cellRenderer = type.cellRenderer;\n        var _a = this.getCompKeys(defObject, type, params), compName = _a.compName, jsComp = _a.jsComp, fwComp = _a.fwComp, paramsFromSelector = _a.paramsFromSelector, popupFromSelector = _a.popupFromSelector, popupPositionFromSelector = _a.popupPositionFromSelector;\n        var lookupFromRegistry = function (key) {\n            var item = _this.userComponentRegistry.retrieve(propertyName, key);\n            if (item) {\n                jsComp = !item.componentFromFramework ? item.component : undefined;\n                fwComp = item.componentFromFramework ? item.component : undefined;\n            }\n        };\n        // if compOption is a string, means we need to look the item up\n        if (compName != null) {\n            lookupFromRegistry(compName);\n        }\n        // if lookup brought nothing back, and we have a default, lookup the default\n        if (jsComp == null && fwComp == null && defaultName != null) {\n            lookupFromRegistry(defaultName);\n        }\n        // if we have a comp option, and it's a function, replace it with an object equivalent adaptor\n        if (jsComp && cellRenderer && !this.agComponentUtils.doesImplementIComponent(jsComp)) {\n            jsComp = this.agComponentUtils.adaptFunction(propertyName, jsComp);\n        }\n        if (!jsComp && !fwComp) {\n            if (mandatory) {\n                console.error(\"AG Grid: Could not find component \" + compName + \", did you forget to configure this component?\");\n            }\n            return;\n        }\n        var paramsMerged = this.mergeParamsWithApplicationProvidedParams(defObject, type, params, paramsFromSelector);\n        var componentFromFramework = jsComp == null;\n        var componentClass = jsComp ? jsComp : fwComp;\n        return {\n            componentFromFramework: componentFromFramework,\n            componentClass: componentClass,\n            params: paramsMerged,\n            type: type,\n            popupFromSelector: popupFromSelector,\n            popupPositionFromSelector: popupPositionFromSelector,\n            newAgStackInstance: function () { return _this.newAgStackInstance(componentClass, componentFromFramework, paramsMerged, type); }\n        };\n    };\n    UserComponentFactory.prototype.getCompKeys = function (defObject, type, params) {\n        var _this = this;\n        var propertyName = type.propertyName;\n        var compName;\n        var jsComp;\n        var fwComp;\n        var paramsFromSelector;\n        var popupFromSelector;\n        var popupPositionFromSelector;\n        // there are two types of js comps, class based and func based. we can only check for\n        // class based, by checking if getGui() exists. no way to differentiate js func based vs eg react func based\n        // const isJsClassComp = (comp: any) => this.agComponentUtils.doesImplementIComponent(comp);\n        // const fwActive = this.frameworkComponentWrapper != null;\n        // pull from defObject if available\n        if (defObject) {\n            var defObjectAny = defObject;\n            // if selector, use this\n            var selectorFunc = defObjectAny[propertyName + 'Selector'];\n            var selectorRes = selectorFunc ? selectorFunc(params) : null;\n            var assignComp = function (providedJsComp, providedFwComp) {\n                var xxxFrameworkDeprecatedWarn = function () {\n                    var warningMessage = \"AG Grid: As of v27, the property \" + propertyName + \"Framework is deprecated. The property \" + propertyName + \" can now be used for JavaScript AND Framework Components.\";\n                    doOnce(function () { return console.warn(warningMessage); }, \"UserComponentFactory.\" + propertyName + \"FrameworkDeprecated\");\n                };\n                if (typeof providedJsComp === 'string') {\n                    compName = providedJsComp;\n                }\n                else if (typeof providedFwComp === 'string') {\n                    xxxFrameworkDeprecatedWarn();\n                    compName = providedFwComp;\n                    // comp===true for filters, which means use the default comp\n                }\n                else if (providedJsComp != null && providedJsComp !== true) {\n                    var isFwkComp = _this.getFrameworkOverrides().isFrameworkComponent(providedJsComp);\n                    if (isFwkComp) {\n                        fwComp = providedJsComp;\n                    }\n                    else {\n                        jsComp = providedJsComp;\n                    }\n                }\n                else if (providedFwComp != null) {\n                    xxxFrameworkDeprecatedWarn();\n                    fwComp = providedFwComp;\n                }\n            };\n            if (selectorRes) {\n                if (selectorRes.frameworkComponent != null) {\n                    var warningMessage_1 = \"AG Grid: As of v27, the return for \" + propertyName + \"Selector has attributes [component, params] only. The attribute frameworkComponent is deprecated. You should now return back Framework Components using the 'component' attribute and the grid works out if it's a framework component or not.\";\n                    doOnce(function () { return console.warn(warningMessage_1); }, \"UserComponentFactory.\" + propertyName + \"FrameworkSelectorDeprecated\");\n                    assignComp(selectorRes.frameworkComponent, undefined);\n                }\n                else {\n                    assignComp(selectorRes.component, undefined);\n                }\n                paramsFromSelector = selectorRes.params;\n                popupFromSelector = selectorRes.popup;\n                popupPositionFromSelector = selectorRes.popupPosition;\n            }\n            else {\n                // if no selector, or result of selector is empty, take from defObject\n                assignComp(defObjectAny[propertyName], defObjectAny[propertyName + 'Framework']);\n            }\n        }\n        return { compName: compName, jsComp: jsComp, fwComp: fwComp, paramsFromSelector: paramsFromSelector, popupFromSelector: popupFromSelector, popupPositionFromSelector: popupPositionFromSelector };\n    };\n    UserComponentFactory.prototype.newAgStackInstance = function (ComponentClass, componentFromFramework, params, type) {\n        var propertyName = type.propertyName;\n        var jsComponent = !componentFromFramework;\n        // using javascript component\n        var instance;\n        if (jsComponent) {\n            instance = new ComponentClass();\n        }\n        else {\n            // Using framework component\n            var thisComponentConfig = this.componentMetadataProvider.retrieve(propertyName);\n            instance = this.frameworkComponentWrapper.wrap(ComponentClass, thisComponentConfig.mandatoryMethodList, thisComponentConfig.optionalMethodList, type);\n        }\n        var deferredInit = this.initComponent(instance, params);\n        if (deferredInit == null) {\n            return AgPromise.resolve(instance);\n        }\n        return deferredInit.then(function () { return instance; });\n    };\n    // used by Floating Filter\n    UserComponentFactory.prototype.mergeParamsWithApplicationProvidedParams = function (defObject, type, paramsFromGrid, paramsFromSelector) {\n        if (paramsFromSelector === void 0) { paramsFromSelector = null; }\n        var params = {\n            context: this.gridOptionsService.context,\n            columnApi: this.gridOptionsService.columnApi,\n            api: this.gridOptionsService.api\n        };\n        mergeDeep(params, paramsFromGrid);\n        // pull user params from either the old prop name and new prop name\n        // eg either cellRendererParams and cellCompParams\n        var defObjectAny = defObject;\n        var userParams = defObjectAny && defObjectAny[type.propertyName + 'Params'];\n        if (typeof userParams === 'function') {\n            var userParamsFromFunc = userParams(paramsFromGrid);\n            mergeDeep(params, userParamsFromFunc);\n        }\n        else if (typeof userParams === 'object') {\n            mergeDeep(params, userParams);\n        }\n        mergeDeep(params, paramsFromSelector);\n        return params;\n    };\n    UserComponentFactory.prototype.initComponent = function (component, params) {\n        this.context.createBean(component);\n        if (component.init == null) {\n            return;\n        }\n        return component.init(params);\n    };\n    UserComponentFactory.prototype.getDefaultFloatingFilterType = function (def) {\n        if (def == null) {\n            return null;\n        }\n        var defaultFloatingFilterType = null;\n        var _a = this.getCompKeys(def, FilterComponent), compName = _a.compName, jsComp = _a.jsComp, fwComp = _a.fwComp;\n        if (compName) {\n            // will be undefined if not in the map\n            defaultFloatingFilterType = FloatingFilterMapper.getFloatingFilterType(compName);\n        }\n        else {\n            var usingDefaultFilter = (jsComp == null && fwComp == null) && (def.filter === true);\n            if (usingDefaultFilter) {\n                var setFilterModuleLoaded = ModuleRegistry.isRegistered(ModuleNames.SetFilterModule);\n                defaultFloatingFilterType = setFilterModuleLoaded ? 'agSetColumnFloatingFilter' : 'agTextColumnFloatingFilter';\n            }\n        }\n        return defaultFloatingFilterType;\n    };\n    __decorate$1V([\n        Autowired('gridOptions')\n    ], UserComponentFactory.prototype, \"gridOptions\", void 0);\n    __decorate$1V([\n        Autowired('agComponentUtils')\n    ], UserComponentFactory.prototype, \"agComponentUtils\", void 0);\n    __decorate$1V([\n        Autowired('componentMetadataProvider')\n    ], UserComponentFactory.prototype, \"componentMetadataProvider\", void 0);\n    __decorate$1V([\n        Autowired('userComponentRegistry')\n    ], UserComponentFactory.prototype, \"userComponentRegistry\", void 0);\n    __decorate$1V([\n        Optional('frameworkComponentWrapper')\n    ], UserComponentFactory.prototype, \"frameworkComponentWrapper\", void 0);\n    UserComponentFactory = __decorate$1V([\n        Bean('userComponentFactory')\n    ], UserComponentFactory);\n    return UserComponentFactory;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\n// Excel Export\nvar ExcelFactoryMode;\n(function (ExcelFactoryMode) {\n    ExcelFactoryMode[ExcelFactoryMode[\"SINGLE_SHEET\"] = 0] = \"SINGLE_SHEET\";\n    ExcelFactoryMode[ExcelFactoryMode[\"MULTI_SHEET\"] = 1] = \"MULTI_SHEET\";\n})(ExcelFactoryMode || (ExcelFactoryMode = {}));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$21 = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$1U = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n/** Adds drag listening onto an element. In AG Grid this is used twice, first is resizing columns,\n * second is moving the columns and column groups around (ie the 'drag' part of Drag and Drop. */\nvar DragService = /** @class */ (function (_super) {\n    __extends$21(DragService, _super);\n    function DragService() {\n        var _this = _super !== null && _super.apply(this, arguments) || this;\n        _this.dragEndFunctions = [];\n        _this.dragSources = [];\n        return _this;\n    }\n    DragService.prototype.removeAllListeners = function () {\n        this.dragSources.forEach(this.removeListener.bind(this));\n        this.dragSources.length = 0;\n    };\n    DragService.prototype.removeListener = function (dragSourceAndListener) {\n        var element = dragSourceAndListener.dragSource.eElement;\n        var mouseDownListener = dragSourceAndListener.mouseDownListener;\n        element.removeEventListener('mousedown', mouseDownListener);\n        // remove touch listener only if it exists\n        if (dragSourceAndListener.touchEnabled) {\n            var touchStartListener = dragSourceAndListener.touchStartListener;\n            element.removeEventListener('touchstart', touchStartListener, { passive: true });\n        }\n    };\n    DragService.prototype.removeDragSource = function (params) {\n        var dragSourceAndListener = this.dragSources.find(function (item) { return item.dragSource === params; });\n        if (!dragSourceAndListener) {\n            return;\n        }\n        this.removeListener(dragSourceAndListener);\n        removeFromArray(this.dragSources, dragSourceAndListener);\n    };\n    DragService.prototype.isDragging = function () {\n        return this.dragging;\n    };\n    DragService.prototype.addDragSource = function (params, includeTouch) {\n        var _this = this;\n        if (includeTouch === void 0) { includeTouch = false; }\n        var mouseListener = this.onMouseDown.bind(this, params);\n        params.eElement.addEventListener('mousedown', mouseListener);\n        var touchListener = null;\n        var suppressTouch = this.gridOptionsService.is('suppressTouch');\n        if (includeTouch && !suppressTouch) {\n            touchListener = function (touchEvent) {\n                if (isFocusableFormField(touchEvent.target)) {\n                    return;\n                }\n                if (touchEvent.cancelable) {\n                    touchEvent.preventDefault();\n                    touchEvent.stopPropagation();\n                }\n                _this.onTouchStart(params, touchEvent);\n            };\n            // we set passive=false, as we want to prevent default on this event\n            params.eElement.addEventListener('touchstart', touchListener, { passive: false });\n        }\n        this.dragSources.push({\n            dragSource: params,\n            mouseDownListener: mouseListener,\n            touchStartListener: touchListener,\n            touchEnabled: includeTouch\n        });\n    };\n    DragService.prototype.getStartTarget = function () {\n        return this.startTarget;\n    };\n    // gets called whenever mouse down on any drag source\n    DragService.prototype.onTouchStart = function (params, touchEvent) {\n        var _this = this;\n        this.currentDragParams = params;\n        this.dragging = false;\n        var touch = touchEvent.touches[0];\n        this.touchLastTime = touch;\n        this.touchStart = touch;\n        var touchMoveEvent = function (e) { return _this.onTouchMove(e, params.eElement); };\n        var touchEndEvent = function (e) { return _this.onTouchUp(e, params.eElement); };\n        var documentTouchMove = function (e) { if (e.cancelable) {\n            e.preventDefault();\n        } };\n        var target = touchEvent.target;\n        var events = [\n            // Prevents the page document from moving while we are dragging items around.\n            // preventDefault needs to be called in the touchmove listener and never inside the\n            // touchstart, because using touchstart causes the click event to be cancelled on touch devices.\n            { target: this.gridOptionsService.getRootNode(), type: 'touchmove', listener: documentTouchMove, options: { passive: false } },\n            { target: target, type: 'touchmove', listener: touchMoveEvent, options: { passive: true } },\n            { target: target, type: 'touchend', listener: touchEndEvent, options: { passive: true } },\n            { target: target, type: 'touchcancel', listener: touchEndEvent, options: { passive: true } }\n        ];\n        // temporally add these listeners, for the duration of the drag\n        this.addTemporaryEvents(events);\n        // see if we want to start dragging straight away\n        if (params.dragStartPixels === 0) {\n            this.onCommonMove(touch, this.touchStart, params.eElement);\n        }\n    };\n    // gets called whenever mouse down on any drag source\n    DragService.prototype.onMouseDown = function (params, mouseEvent) {\n        var _this = this;\n        var e = mouseEvent;\n        if (params.skipMouseEvent && params.skipMouseEvent(mouseEvent)) {\n            return;\n        }\n        // if there are two elements with parent / child relationship, and both are draggable,\n        // when we drag the child, we should NOT drag the parent. an example of this is row moving\n        // and range selection - row moving should get preference when use drags the rowDrag component.\n        if (e._alreadyProcessedByDragService) {\n            return;\n        }\n        e._alreadyProcessedByDragService = true;\n        // only interested in left button clicks\n        if (mouseEvent.button !== 0) {\n            return;\n        }\n        this.currentDragParams = params;\n        this.dragging = false;\n        this.mouseStartEvent = mouseEvent;\n        this.startTarget = mouseEvent.target;\n        var mouseMoveEvent = function (event) { return _this.onMouseMove(event, params.eElement); };\n        var mouseUpEvent = function (event) { return _this.onMouseUp(event, params.eElement); };\n        var contextEvent = function (event) { return event.preventDefault(); };\n        var target = this.gridOptionsService.getRootNode();\n        var events = [\n            { target: target, type: 'mousemove', listener: mouseMoveEvent },\n            { target: target, type: 'mouseup', listener: mouseUpEvent },\n            { target: target, type: 'contextmenu', listener: contextEvent }\n        ];\n        // temporally add these listeners, for the duration of the drag\n        this.addTemporaryEvents(events);\n        //see if we want to start dragging straight away\n        if (params.dragStartPixels === 0) {\n            this.onMouseMove(mouseEvent, params.eElement);\n        }\n    };\n    DragService.prototype.addTemporaryEvents = function (events) {\n        events.forEach(function (currentEvent) {\n            var target = currentEvent.target, type = currentEvent.type, listener = currentEvent.listener, options = currentEvent.options;\n            target.addEventListener(type, listener, options);\n        });\n        this.dragEndFunctions.push(function () {\n            events.forEach(function (currentEvent) {\n                var target = currentEvent.target, type = currentEvent.type, listener = currentEvent.listener, options = currentEvent.options;\n                target.removeEventListener(type, listener, options);\n            });\n        });\n    };\n    // returns true if the event is close to the original event by X pixels either vertically or horizontally.\n    // we only start dragging after X pixels so this allows us to know if we should start dragging yet.\n    DragService.prototype.isEventNearStartEvent = function (currentEvent, startEvent) {\n        // by default, we wait 4 pixels before starting the drag\n        var dragStartPixels = this.currentDragParams.dragStartPixels;\n        var requiredPixelDiff = exists(dragStartPixels) ? dragStartPixels : 4;\n        return areEventsNear(currentEvent, startEvent, requiredPixelDiff);\n    };\n    DragService.prototype.getFirstActiveTouch = function (touchList) {\n        for (var i = 0; i < touchList.length; i++) {\n            if (touchList[i].identifier === this.touchStart.identifier) {\n                return touchList[i];\n            }\n        }\n        return null;\n    };\n    DragService.prototype.onCommonMove = function (currentEvent, startEvent, el) {\n        if (!this.dragging) {\n            // if mouse hasn't travelled from the start position enough, do nothing\n            if (!this.dragging && this.isEventNearStartEvent(currentEvent, startEvent)) {\n                return;\n            }\n            this.dragging = true;\n            var event_1 = {\n                type: Events.EVENT_DRAG_STARTED,\n                target: el\n            };\n            this.eventService.dispatchEvent(event_1);\n            this.currentDragParams.onDragStart(startEvent);\n            // we need ONE drag action at the startEvent, so that we are guaranteed the drop target\n            // at the start gets notified. this is because the drag can start outside of the element\n            // that started it, as the mouse is allowed drag away from the mouse down before it's\n            // considered a drag (the isEventNearStartEvent() above). if we didn't do this, then\n            // it would be possible to click a column by the edge, then drag outside of the drop zone\n            // in less than 4 pixels and the drag officially starts outside of the header but the header\n            // wouldn't be notified of the dragging.\n            this.currentDragParams.onDragging(startEvent);\n        }\n        this.currentDragParams.onDragging(currentEvent);\n    };\n    DragService.prototype.onTouchMove = function (touchEvent, el) {\n        var touch = this.getFirstActiveTouch(touchEvent.touches);\n        if (!touch) {\n            return;\n        }\n        // this.___statusPanel.setInfoText(Math.random() + ' onTouchMove preventDefault stopPropagation');\n        this.onCommonMove(touch, this.touchStart, el);\n    };\n    // only gets called after a mouse down - as this is only added after mouseDown\n    // and is removed when mouseUp happens\n    DragService.prototype.onMouseMove = function (mouseEvent, el) {\n        // when `isEnableCellTextSelect` is `true`, we need to preventDefault on mouseMove\n        // to avoid the grid text being selected while dragging components.\n        // Note: Safari also has an issue, where `user-select: none` is not being respected.\n        if ((this.gridOptionsService.is('enableCellTextSelection') || isBrowserSafari()) &&\n            // The event type can be `mousedown` when `dragStartPixels=0`\n            // we should only preventDefault on `mousemove`.\n            mouseEvent.type === 'mousemove' &&\n            mouseEvent.cancelable &&\n            this.mouseEventService.isEventFromThisGrid(mouseEvent) &&\n            // we should not prevent mouseMove when above a form field\n            // as that would prevent the text in the field from being selected\n            !this.isOverFormFieldElement(mouseEvent)) {\n            mouseEvent.preventDefault();\n        }\n        this.onCommonMove(mouseEvent, this.mouseStartEvent, el);\n    };\n    DragService.prototype.isOverFormFieldElement = function (mouseEvent) {\n        var el = mouseEvent.target;\n        var tagName = el === null || el === void 0 ? void 0 : el.tagName.toLocaleLowerCase();\n        return !!(tagName === null || tagName === void 0 ? void 0 : tagName.match('^a$|textarea|input|select|button'));\n    };\n    DragService.prototype.onTouchUp = function (touchEvent, el) {\n        var touch = this.getFirstActiveTouch(touchEvent.changedTouches);\n        // i haven't worked this out yet, but there is no matching touch\n        // when we get the touch up event. to get around this, we swap in\n        // the last touch. this is a hack to 'get it working' while we\n        // figure out what's going on, why we are not getting a touch in\n        // current event.\n        if (!touch) {\n            touch = this.touchLastTime;\n        }\n        // if mouse was left up before we started to move, then this is a tap.\n        // we check this before onUpCommon as onUpCommon resets the dragging\n        // let tap = !this.dragging;\n        // let tapTarget = this.currentDragParams.eElement;\n        this.onUpCommon(touch, el);\n        // if tap, tell user\n        // console.log(`${Math.random()} tap = ${tap}`);\n        // if (tap) {\n        //     tapTarget.click();\n        // }\n    };\n    DragService.prototype.onMouseUp = function (mouseEvent, el) {\n        this.onUpCommon(mouseEvent, el);\n    };\n    DragService.prototype.onUpCommon = function (eventOrTouch, el) {\n        if (this.dragging) {\n            this.dragging = false;\n            this.currentDragParams.onDragStop(eventOrTouch);\n            var event_2 = {\n                type: Events.EVENT_DRAG_STOPPED,\n                target: el\n            };\n            this.eventService.dispatchEvent(event_2);\n        }\n        this.mouseStartEvent = null;\n        this.startTarget = null;\n        this.touchStart = null;\n        this.touchLastTime = null;\n        this.currentDragParams = null;\n        this.dragEndFunctions.forEach(function (func) { return func(); });\n        this.dragEndFunctions.length = 0;\n    };\n    __decorate$1U([\n        Autowired('mouseEventService')\n    ], DragService.prototype, \"mouseEventService\", void 0);\n    __decorate$1U([\n        PreDestroy\n    ], DragService.prototype, \"removeAllListeners\", null);\n    DragService = __decorate$1U([\n        Bean('dragService')\n    ], DragService);\n    return DragService;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar RowHighlightPosition;\n(function (RowHighlightPosition) {\n    RowHighlightPosition[RowHighlightPosition[\"Above\"] = 0] = \"Above\";\n    RowHighlightPosition[RowHighlightPosition[\"Below\"] = 1] = \"Below\";\n})(RowHighlightPosition || (RowHighlightPosition = {}));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar ClientSideRowModelSteps;\n(function (ClientSideRowModelSteps) {\n    ClientSideRowModelSteps[\"EVERYTHING\"] = \"group\";\n    ClientSideRowModelSteps[\"FILTER\"] = \"filter\";\n    ClientSideRowModelSteps[\"SORT\"] = \"sort\";\n    ClientSideRowModelSteps[\"MAP\"] = \"map\";\n    ClientSideRowModelSteps[\"AGGREGATE\"] = \"aggregate\";\n    ClientSideRowModelSteps[\"FILTER_AGGREGATES\"] = \"filter_aggregates\";\n    ClientSideRowModelSteps[\"PIVOT\"] = \"pivot\";\n    ClientSideRowModelSteps[\"NOTHING\"] = \"nothing\";\n})(ClientSideRowModelSteps || (ClientSideRowModelSteps = {}));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __decorate$1T = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nfunction unwrapUserComp(comp) {\n    var compAsAny = comp;\n    var isProxy = compAsAny != null && compAsAny.getFrameworkComponentInstance != null;\n    return isProxy ? compAsAny.getFrameworkComponentInstance() : comp;\n}\nvar GridApi = /** @class */ (function () {\n    function GridApi() {\n        this.detailGridInfoMap = {};\n        this.destroyCalled = false;\n    }\n    GridApi.prototype.registerOverlayWrapperComp = function (overlayWrapperComp) {\n        this.overlayWrapperComp = overlayWrapperComp;\n    };\n    GridApi.prototype.registerSideBarComp = function (sideBarComp) {\n        this.sideBarComp = sideBarComp;\n    };\n    GridApi.prototype.init = function () {\n        var _this = this;\n        switch (this.rowModel.getType()) {\n            case 'clientSide':\n                this.clientSideRowModel = this.rowModel;\n                break;\n            case 'infinite':\n                this.infiniteRowModel = this.rowModel;\n                break;\n            case 'serverSide':\n                this.serverSideRowModel = this.rowModel;\n                break;\n        }\n        this.ctrlsService.whenReady(function () {\n            _this.gridBodyCtrl = _this.ctrlsService.getGridBodyCtrl();\n        });\n    };\n    /** Used internally by grid. Not intended to be used by the client. Interface may change between releases. */\n    GridApi.prototype.__getAlignedGridService = function () {\n        return this.alignedGridsService;\n    };\n    /** Used internally by grid. Not intended to be used by the client. Interface may change between releases. */\n    GridApi.prototype.__getContext = function () {\n        return this.context;\n    };\n    GridApi.prototype.getSetterMethod = function (key) {\n        return \"set\" + key.charAt(0).toUpperCase() + key.substring(1);\n    };\n    /** Used internally by grid. Not intended to be used by the client. Interface may change between releases. */\n    GridApi.prototype.__setProperty = function (propertyName, value) {\n        // Ensure the GridOptions property gets updated and fires the change event as we\n        // cannot assume that the dynamic Api call will updated GridOptions.\n        this.gridOptionsService.set(propertyName, value);\n        // If the dynamic api does update GridOptions then change detection in the \n        // GridOptionsService will prevent the event being fired twice.\n        var setterName = this.getSetterMethod(propertyName);\n        var dynamicApi = this;\n        if (dynamicApi[setterName]) {\n            dynamicApi[setterName](value);\n        }\n    };\n    /** Register a detail grid with the master grid when it is created. */\n    GridApi.prototype.addDetailGridInfo = function (id, gridInfo) {\n        this.detailGridInfoMap[id] = gridInfo;\n    };\n    /** Unregister a detail grid from the master grid when it is destroyed. */\n    GridApi.prototype.removeDetailGridInfo = function (id) {\n        this.detailGridInfoMap[id] = undefined;\n    };\n    /** Returns the `DetailGridInfo` corresponding to the supplied `detailGridId`. */\n    GridApi.prototype.getDetailGridInfo = function (id) {\n        return this.detailGridInfoMap[id];\n    };\n    /** Iterates through each `DetailGridInfo` in the grid and calls the supplied callback on each. */\n    GridApi.prototype.forEachDetailGridInfo = function (callback) {\n        var index = 0;\n        iterateObject(this.detailGridInfoMap, function (id, gridInfo) {\n            // check for undefined, as old references will still be lying around\n            if (exists(gridInfo)) {\n                callback(gridInfo, index);\n                index++;\n            }\n        });\n    };\n    /** Similar to `exportDataAsCsv`, except returns the result as a string rather than download it. */\n    GridApi.prototype.getDataAsCsv = function (params) {\n        if (ModuleRegistry.assertRegistered(ModuleNames.CsvExportModule, 'api.getDataAsCsv')) {\n            return this.csvCreator.getDataAsCsv(params);\n        }\n    };\n    /** Downloads a CSV export of the grid's data. */\n    GridApi.prototype.exportDataAsCsv = function (params) {\n        if (ModuleRegistry.assertRegistered(ModuleNames.CsvExportModule, 'api.exportDataAsCSv')) {\n            this.csvCreator.exportDataAsCsv(params);\n        }\n    };\n    GridApi.prototype.getExcelExportMode = function (params) {\n        var baseParams = this.gridOptionsService.get('defaultExcelExportParams');\n        var mergedParams = Object.assign({ exportMode: 'xlsx' }, baseParams, params);\n        return mergedParams.exportMode;\n    };\n    GridApi.prototype.assertNotExcelMultiSheet = function (method, params) {\n        if (!ModuleRegistry.assertRegistered(ModuleNames.ExcelExportModule, 'api.' + method)) {\n            return false;\n        }\n        var exportMode = this.getExcelExportMode(params);\n        if (this.excelCreator.getFactoryMode(exportMode) === ExcelFactoryMode.MULTI_SHEET) {\n            console.warn(\"AG Grid: The Excel Exporter is currently on Multi Sheet mode. End that operation by calling 'api.getMultipleSheetAsExcel()' or 'api.exportMultipleSheetsAsExcel()'\");\n            return false;\n        }\n        return true;\n    };\n    /** Similar to `exportDataAsExcel`, except instead of downloading a file, it will return a [Blob](https://developer.mozilla.org/en-US/docs/Web/API/Blob) to be processed by the user. */\n    GridApi.prototype.getDataAsExcel = function (params) {\n        if (this.assertNotExcelMultiSheet('getDataAsExcel', params)) {\n            return this.excelCreator.getDataAsExcel(params);\n        }\n    };\n    /** Downloads an Excel export of the grid's data. */\n    GridApi.prototype.exportDataAsExcel = function (params) {\n        if (this.assertNotExcelMultiSheet('exportDataAsExcel', params)) {\n            this.excelCreator.exportDataAsExcel(params);\n        }\n    };\n    /** This is method to be used to get the grid's data as a sheet, that will later be exported either by `getMultipleSheetsAsExcel()` or `exportMultipleSheetsAsExcel()`. */\n    GridApi.prototype.getSheetDataForExcel = function (params) {\n        if (!ModuleRegistry.assertRegistered(ModuleNames.ExcelExportModule, 'api.getSheetDataForExcel')) {\n            return;\n        }\n        var exportMode = this.getExcelExportMode(params);\n        this.excelCreator.setFactoryMode(ExcelFactoryMode.MULTI_SHEET, exportMode);\n        return this.excelCreator.getSheetDataForExcel(params);\n    };\n    /** Similar to `exportMultipleSheetsAsExcel`, except instead of downloading a file, it will return a [Blob](https://developer.mozilla.org/en-US/docs/Web/API/Blob) to be processed by the user. */\n    GridApi.prototype.getMultipleSheetsAsExcel = function (params) {\n        if (ModuleRegistry.assertRegistered(ModuleNames.ExcelExportModule, 'api.getMultipleSheetsAsExcel')) {\n            return this.excelCreator.getMultipleSheetsAsExcel(params);\n        }\n    };\n    /** Downloads an Excel export of multiple sheets in one file. */\n    GridApi.prototype.exportMultipleSheetsAsExcel = function (params) {\n        if (ModuleRegistry.assertRegistered(ModuleNames.ExcelExportModule, 'api.exportMultipleSheetsAsExcel')) {\n            return this.excelCreator.exportMultipleSheetsAsExcel(params);\n        }\n    };\n    /**\n     * Sets an ARIA property in the grid panel (element with `role=\\\"grid\\\"`), and removes an ARIA property when the value is null.\n     *\n     * Example: `api.setGridAriaProperty('label', 'my grid')` will set `aria-label=\\\"my grid\\\"`.\n     *\n     * `api.setGridAriaProperty('label', null)` will remove the `aria-label` attribute from the grid element.\n     */\n    GridApi.prototype.setGridAriaProperty = function (property, value) {\n        if (!property) {\n            return;\n        }\n        var eGrid = this.ctrlsService.getGridBodyCtrl().getGui();\n        var ariaProperty = \"aria-\" + property;\n        if (value === null) {\n            eGrid.removeAttribute(ariaProperty);\n        }\n        else {\n            eGrid.setAttribute(ariaProperty, value);\n        }\n    };\n    GridApi.prototype.logMissingRowModel = function (apiMethod) {\n        var requiredRowModels = [];\n        for (var _i = 1; _i < arguments.length; _i++) {\n            requiredRowModels[_i - 1] = arguments[_i];\n        }\n        console.error(\"AG Grid: api.\" + apiMethod + \" can only be called when gridOptions.rowModelType is \" + requiredRowModels.join(' or '));\n    };\n    /** Set new datasource for Server-Side Row Model. */\n    GridApi.prototype.setServerSideDatasource = function (datasource) {\n        if (this.serverSideRowModel) {\n            this.serverSideRowModel.setDatasource(datasource);\n        }\n        else {\n            this.logMissingRowModel('setServerSideDatasource', 'serverSide');\n        }\n    };\n    /**\n     * Updates the `cacheBlockSize` when requesting data from the server if `suppressServerSideInfiniteScroll` is not enabled.\n     *\n     * Note this purges all the cached data and reloads all the rows of the grid.\n     * */\n    GridApi.prototype.setCacheBlockSize = function (blockSize) {\n        if (this.serverSideRowModel) {\n            this.gridOptionsService.set('cacheBlockSize', blockSize);\n            this.serverSideRowModel.resetRootStore();\n        }\n        else {\n            this.logMissingRowModel('setCacheBlockSize', 'serverSide');\n        }\n    };\n    /** Set new datasource for Infinite Row Model. */\n    GridApi.prototype.setDatasource = function (datasource) {\n        if (this.gridOptionsService.isRowModelType('infinite')) {\n            this.rowModel.setDatasource(datasource);\n        }\n        else {\n            this.logMissingRowModel('setDatasource', 'infinite');\n        }\n    };\n    /** Set new datasource for Viewport Row Model. */\n    GridApi.prototype.setViewportDatasource = function (viewportDatasource) {\n        if (this.gridOptionsService.isRowModelType('viewport')) {\n            // this is bad coding, because it's using an interface that's exposed in the enterprise.\n            // really we should create an interface in the core for viewportDatasource and let\n            // the enterprise implement it, rather than casting to 'any' here\n            this.rowModel.setViewportDatasource(viewportDatasource);\n        }\n        else {\n            this.logMissingRowModel('setViewportDatasource', 'viewport');\n        }\n    };\n    /** Set the row data. */\n    GridApi.prototype.setRowData = function (rowData) {\n        // immutable service is part of the CSRM module, if missing, no CSRM\n        var missingImmutableService = this.immutableService == null;\n        if (missingImmutableService) {\n            this.logMissingRowModel('setRowData', 'clientSide');\n            return;\n        }\n        // if no keys provided provided for rows, then we can tread the operation as Immutable\n        if (this.immutableService.isActive()) {\n            this.immutableService.setRowData(rowData);\n        }\n        else {\n            this.selectionService.reset();\n            this.clientSideRowModel.setRowData(rowData);\n        }\n    };\n    /** Set the top pinned rows. Call with no rows / undefined to clear top pinned rows. */\n    GridApi.prototype.setPinnedTopRowData = function (rows) {\n        this.pinnedRowModel.setPinnedTopRowData(rows);\n    };\n    /** Set the bottom pinned rows. Call with no rows / undefined to clear bottom pinned rows. */\n    GridApi.prototype.setPinnedBottomRowData = function (rows) {\n        this.pinnedRowModel.setPinnedBottomRowData(rows);\n    };\n    /** Gets the number of top pinned rows. */\n    GridApi.prototype.getPinnedTopRowCount = function () {\n        return this.pinnedRowModel.getPinnedTopRowCount();\n    };\n    /** Gets the number of bottom pinned rows. */\n    GridApi.prototype.getPinnedBottomRowCount = function () {\n        return this.pinnedRowModel.getPinnedBottomRowCount();\n    };\n    /** Gets the top pinned row with the specified index. */\n    GridApi.prototype.getPinnedTopRow = function (index) {\n        return this.pinnedRowModel.getPinnedTopRow(index);\n    };\n    /** Gets the top pinned row with the specified index. */\n    GridApi.prototype.getPinnedBottomRow = function (index) {\n        return this.pinnedRowModel.getPinnedBottomRow(index);\n    };\n    /**\n     * Call to set new column definitions. The grid will redraw all the column headers, and then redraw all of the rows.\n     */\n    GridApi.prototype.setColumnDefs = function (colDefs, source) {\n        if (source === void 0) { source = \"api\"; }\n        this.columnModel.setColumnDefs(colDefs, source);\n        // Keep gridOptions.columnDefs in sync\n        this.gridOptionsService.set('columnDefs', colDefs, true, { source: source });\n    };\n    /** Call to set new auto group column definition. The grid will recreate any auto-group columns if present. */\n    GridApi.prototype.setAutoGroupColumnDef = function (colDef, source) {\n        if (source === void 0) { source = \"api\"; }\n        this.gridOptionsService.set('autoGroupColumnDef', colDef, true, { source: source });\n    };\n    /** Call to set new Default Column Definition. */\n    GridApi.prototype.setDefaultColDef = function (colDef, source) {\n        if (source === void 0) { source = \"api\"; }\n        this.gridOptionsService.set('defaultColDef', colDef, true, { source: source });\n    };\n    /** Call to set new Column Types. */\n    GridApi.prototype.setColumnTypes = function (columnTypes, source) {\n        if (source === void 0) { source = \"api\"; }\n        this.gridOptionsService.set('columnTypes', columnTypes, true, { source: source });\n    };\n    GridApi.prototype.expireValueCache = function () {\n        this.valueCache.expire();\n    };\n    /**\n     * Returns an object with two properties:\n     *  - `top`: The top pixel position of the current scroll in the grid\n     *  - `bottom`: The bottom pixel position of the current scroll in the grid\n     */\n    GridApi.prototype.getVerticalPixelRange = function () {\n        return this.gridBodyCtrl.getScrollFeature().getVScrollPosition();\n    };\n    /**\n     * Returns an object with two properties:\n     * - `left`: The left pixel position of the current scroll in the grid\n     * - `right`: The right pixel position of the current scroll in the grid\n     */\n    GridApi.prototype.getHorizontalPixelRange = function () {\n        return this.gridBodyCtrl.getScrollFeature().getHScrollPosition();\n    };\n    /** If `true`, the horizontal scrollbar will always be present, even if not required. Otherwise, it will only be displayed when necessary. */\n    GridApi.prototype.setAlwaysShowHorizontalScroll = function (show) {\n        this.gridOptionsService.set('alwaysShowHorizontalScroll', show);\n    };\n    /** If `true`, the vertical scrollbar will always be present, even if not required. Otherwise it will only be displayed when necessary. */\n    GridApi.prototype.setAlwaysShowVerticalScroll = function (show) {\n        this.gridOptionsService.set('alwaysShowVerticalScroll', show);\n    };\n    /** Performs change detection on all cells, refreshing cells where required. */\n    GridApi.prototype.refreshCells = function (params) {\n        if (params === void 0) { params = {}; }\n        this.rowRenderer.refreshCells(params);\n    };\n    /** Flash rows, columns or individual cells. */\n    GridApi.prototype.flashCells = function (params) {\n        if (params === void 0) { params = {}; }\n        this.rowRenderer.flashCells(params);\n    };\n    /** Remove row(s) from the DOM and recreate them again from scratch. */\n    GridApi.prototype.redrawRows = function (params) {\n        if (params === void 0) { params = {}; }\n        var rowNodes = params ? params.rowNodes : undefined;\n        this.rowRenderer.redrawRows(rowNodes);\n    };\n    GridApi.prototype.setFunctionsReadOnly = function (readOnly) {\n        this.gridOptionsService.set('functionsReadOnly', readOnly);\n    };\n    /** Redraws the header. Useful if a column name changes, or something else that changes how the column header is displayed. */\n    GridApi.prototype.refreshHeader = function () {\n        this.ctrlsService.getHeaderRowContainerCtrls().forEach(function (c) { return c.refresh(); });\n    };\n    /** Returns `true` if any filter is set. This includes quick filter, advanced filter or external filter. */\n    GridApi.prototype.isAnyFilterPresent = function () {\n        return this.filterManager.isAnyFilterPresent();\n    };\n    /** Returns `true` if any column filter is set, otherwise `false`. */\n    GridApi.prototype.isColumnFilterPresent = function () {\n        return this.filterManager.isColumnFilterPresent() || this.filterManager.isAggregateFilterPresent();\n    };\n    /** Returns `true` if the Quick Filter is set, otherwise `false`. */\n    GridApi.prototype.isQuickFilterPresent = function () {\n        return this.filterManager.isQuickFilterPresent();\n    };\n    /**\n     * Returns the row model inside the table.\n     * From here you can see the original rows, rows after filter has been applied,\n     * rows after aggregation has been applied, and the final set of 'to be displayed' rows.\n     */\n    GridApi.prototype.getModel = function () {\n        return this.rowModel;\n    };\n    /** Expand or collapse a specific row node, optionally expanding/collapsing all of its parent nodes. */\n    GridApi.prototype.setRowNodeExpanded = function (rowNode, expanded, expandParents) {\n        if (rowNode) {\n            // expand all parents recursively, except root node.\n            if (expandParents && rowNode.parent && rowNode.parent.level !== -1) {\n                this.setRowNodeExpanded(rowNode.parent, expanded, expandParents);\n            }\n            rowNode.setExpanded(expanded);\n        }\n    };\n    /**\n     * Informs the grid that row group expanded state has changed and it needs to rerender the group nodes.\n     * Typically called after updating the row node expanded state explicitly, i.e `rowNode.expanded = false`,\n     * across multiple groups and you want to update the grid view in a single rerender instead of on every group change.\n     */\n    GridApi.prototype.onGroupExpandedOrCollapsed = function () {\n        if (missing(this.clientSideRowModel)) {\n            this.logMissingRowModel('onGroupExpandedOrCollapsed', 'clientSide');\n            return;\n        }\n        // we don't really want the user calling this if only one rowNode was expanded, instead they should be\n        // calling rowNode.setExpanded(boolean) - this way we do a 'keepRenderedRows=false' so that the whole\n        // grid gets refreshed again - otherwise the row with the rowNodes that were changed won't get updated,\n        // and thus the expand icon in the group cell won't get 'opened' or 'closed'.\n        this.clientSideRowModel.refreshModel({ step: ClientSideRowModelSteps.MAP });\n    };\n    /**\n     * Refresh the Client-Side Row Model, executing the grouping, filtering and sorting again.\n     * Optionally provide the step you wish the refresh to apply from. Defaults to `everything`.\n     */\n    GridApi.prototype.refreshClientSideRowModel = function (step) {\n        if (missing(this.clientSideRowModel)) {\n            this.logMissingRowModel('refreshClientSideRowModel', 'clientSide');\n            return;\n        }\n        this.clientSideRowModel.refreshModel(step);\n    };\n    /** Returns `true` when there are no more animation frames left to process. */\n    GridApi.prototype.isAnimationFrameQueueEmpty = function () {\n        return this.animationFrameService.isQueueEmpty();\n    };\n    GridApi.prototype.flushAllAnimationFrames = function () {\n        this.animationFrameService.flushAllFrames();\n    };\n    /**\n     * Returns the row node with the given ID.\n     * The row node ID is the one you provide from the callback `getRowId(params)`,\n     * otherwise the ID is a number (cast as string) auto-generated by the grid when\n     * the row data is set.\n     */\n    GridApi.prototype.getRowNode = function (id) {\n        return this.rowModel.getRowNode(id);\n    };\n    /**\n     * Gets the sizes that various UI elements will be rendered at with the current theme.\n     * If you override the row or header height using `gridOptions`, the override value you provided will be returned.\n     */\n    GridApi.prototype.getSizesForCurrentTheme = function () {\n        return {\n            rowHeight: this.gridOptionsService.getRowHeightAsNumber(),\n            headerHeight: this.columnModel.getHeaderHeight()\n        };\n    };\n    /** Expand all groups. */\n    GridApi.prototype.expandAll = function () {\n        if (this.clientSideRowModel) {\n            this.clientSideRowModel.expandOrCollapseAll(true);\n        }\n        else if (this.serverSideRowModel) {\n            this.serverSideRowModel.expandAll(true);\n        }\n        else {\n            this.logMissingRowModel('expandAll', 'clientSide', 'serverSide');\n        }\n    };\n    /** Collapse all groups. */\n    GridApi.prototype.collapseAll = function () {\n        if (this.clientSideRowModel) {\n            this.clientSideRowModel.expandOrCollapseAll(false);\n        }\n        else if (this.serverSideRowModel) {\n            this.serverSideRowModel.expandAll(false);\n        }\n        else {\n            this.logMissingRowModel('expandAll', 'clientSide', 'serverSide');\n        }\n    };\n    /**\n     * Registers a callback to a virtual row.\n     * A virtual row is a row that is visually rendered on the screen (rows that are not visible because of the scroll position are not rendered).\n     * Unlike normal events, you do not need to unregister rendered row listeners.\n     * When the rendered row is removed from the grid, all associated rendered row listeners will also be removed.\n     * listen for this event if your `cellRenderer` needs to do cleanup when the row no longer exists.\n     */\n    GridApi.prototype.addRenderedRowListener = function (eventName, rowIndex, callback) {\n        this.rowRenderer.addRenderedRowListener(eventName, rowIndex, callback);\n    };\n    /** Get the current Quick Filter text from the grid, or `undefined` if none is set. */\n    GridApi.prototype.getQuickFilter = function () {\n        return this.gridOptionsService.get('quickFilterText');\n    };\n    /** Pass a Quick Filter text into the grid for filtering. */\n    GridApi.prototype.setQuickFilter = function (newFilter) {\n        this.gridOptionsService.set('quickFilterText', newFilter);\n    };\n    /**\n     * Updates the `excludeHiddenColumnsFromQuickFilter` grid option.\n     * Set to `true` to exclude hidden columns from being checked by the Quick Filter (or `false` to include them).\n     * This can give a significant performance improvement when there are a large number of hidden columns,\n     * and you are only interested in filtering on what's visible.\n     */\n    GridApi.prototype.setExcludeHiddenColumnsFromQuickFilter = function (value) {\n        this.gridOptionsService.set('excludeHiddenColumnsFromQuickFilter', value);\n    };\n    /**\n     * Select all rows, regardless of filtering and rows that are not visible due to grouping being enabled and their groups not expanded.\n     * @param source Source property that will appear in the `selectionChanged` event. Default: `'apiSelectAll'`\n     */\n    GridApi.prototype.selectAll = function (source) {\n        if (source === void 0) { source = 'apiSelectAll'; }\n        this.selectionService.selectAllRowNodes({ source: source });\n    };\n    /**\n     * Clear all row selections, regardless of filtering.\n     * @param source Source property that will appear in the `selectionChanged` event. Default: `'apiSelectAll'`\n     */\n    GridApi.prototype.deselectAll = function (source) {\n        if (source === void 0) { source = 'apiSelectAll'; }\n        this.selectionService.deselectAllRowNodes({ source: source });\n    };\n    /**\n     * Select all filtered rows.\n     * @param source Source property that will appear in the `selectionChanged` event. Default: `'apiSelectAllFiltered'`\n     */\n    GridApi.prototype.selectAllFiltered = function (source) {\n        if (source === void 0) { source = 'apiSelectAllFiltered'; }\n        this.selectionService.selectAllRowNodes({ source: source, justFiltered: true });\n    };\n    /**\n     * Clear all filtered selections.\n     * @param source Source property that will appear in the `selectionChanged` event. Default: `'apiSelectAllFiltered'`\n     */\n    GridApi.prototype.deselectAllFiltered = function (source) {\n        if (source === void 0) { source = 'apiSelectAllFiltered'; }\n        this.selectionService.deselectAllRowNodes({ source: source, justFiltered: true });\n    };\n    /**\n     * Returns an object containing rules matching the selected rows in the SSRM.\n     *\n     * If `groupSelectsChildren=false` the returned object will be flat, and will conform to IServerSideSelectionState.\n     * If `groupSelectsChildren=true` the retuned object will be hierarchical, and will conform to IServerSideGroupSelectionState.\n     */\n    GridApi.prototype.getServerSideSelectionState = function () {\n        if (missing(this.serverSideRowModel)) {\n            this.logMissingRowModel('getServerSideSelectionState', 'serverSide');\n            return null;\n        }\n        return this.selectionService.getServerSideSelectionState();\n    };\n    /**\n     * Set the rules matching the selected rows in the SSRM.\n     *\n     * If `groupSelectsChildren=false` the param will be flat, and should conform to IServerSideSelectionState.\n     * If `groupSelectsChildren=true` the param will be hierarchical, and should conform to IServerSideGroupSelectionState.\n     */\n    GridApi.prototype.setServerSideSelectionState = function (state) {\n        if (missing(this.serverSideRowModel)) {\n            this.logMissingRowModel('setServerSideSelectionState', 'serverSide');\n            return;\n        }\n        this.selectionService.setServerSideSelectionState(state);\n    };\n    /**\n     * Select all rows on the current page.\n     * @param source Source property that will appear in the `selectionChanged` event. Default: `'apiSelectAllCurrentPage'`\n     */\n    GridApi.prototype.selectAllOnCurrentPage = function (source) {\n        if (source === void 0) { source = 'apiSelectAllCurrentPage'; }\n        this.selectionService.selectAllRowNodes({ source: source, justCurrentPage: true });\n    };\n    /**\n     * Clear all filtered on the current page.\n     * @param source Source property that will appear in the `selectionChanged` event. Default: `'apiSelectAllCurrentPage'`\n     */\n    GridApi.prototype.deselectAllOnCurrentPage = function (source) {\n        if (source === void 0) { source = 'apiSelectAllCurrentPage'; }\n        this.selectionService.deselectAllRowNodes({ source: source, justCurrentPage: true });\n    };\n    /**\n     * Sets columns to adjust in size to fit the grid horizontally.\n     **/\n    GridApi.prototype.sizeColumnsToFit = function (params) {\n        this.gridBodyCtrl.sizeColumnsToFit(params);\n    };\n    /** Show the 'loading' overlay. */\n    GridApi.prototype.showLoadingOverlay = function () {\n        this.overlayWrapperComp.showLoadingOverlay();\n    };\n    /** Show the 'no rows' overlay. */\n    GridApi.prototype.showNoRowsOverlay = function () {\n        this.overlayWrapperComp.showNoRowsOverlay();\n    };\n    /** Hides the overlay if showing. */\n    GridApi.prototype.hideOverlay = function () {\n        this.overlayWrapperComp.hideOverlay();\n    };\n    /**\n     * Returns an unsorted list of selected nodes.\n     * Getting the underlying node (rather than the data) is useful when working with tree / aggregated data,\n     * as the node can be traversed.\n     */\n    GridApi.prototype.getSelectedNodes = function () {\n        return this.selectionService.getSelectedNodes();\n    };\n    /** Returns an unsorted list of selected rows (i.e. row data that you provided). */\n    GridApi.prototype.getSelectedRows = function () {\n        return this.selectionService.getSelectedRows();\n    };\n    /**\n     * Returns a list of all selected nodes at 'best cost', a feature to be used with groups / trees.\n     * If a group has all its children selected, then the group appears in the result, but not the children.\n     * Designed for use with `'children'` as the group selection type, where groups don't actually appear in the selection normally.\n     */\n    GridApi.prototype.getBestCostNodeSelection = function () {\n        if (missing(this.clientSideRowModel)) {\n            this.logMissingRowModel('getBestCostNodeSelection', 'clientSide');\n            return;\n        }\n        return this.selectionService.getBestCostNodeSelection();\n    };\n    /** Retrieve rendered nodes. Due to virtualisation this will contain only the current visible rows and those in the buffer. */\n    GridApi.prototype.getRenderedNodes = function () {\n        return this.rowRenderer.getRenderedNodes();\n    };\n    /**\n     *  Ensures the column is visible by scrolling the table if needed.\n     *\n     * This will have no effect before the firstDataRendered event has fired.\n     *\n     * @param key - The column to ensure visible\n     * @param position - Where the column will be positioned.\n     * - `auto` - Scrolls the minimum amount to make sure the column is visible.\n     * - `start` - Scrolls the column to the start of the viewport.\n     * - `middle` - Scrolls the column to the middle of the viewport.\n     * - `end` - Scrolls the column to the end of the viewport.\n    */\n    GridApi.prototype.ensureColumnVisible = function (key, position) {\n        if (position === void 0) { position = 'auto'; }\n        this.gridBodyCtrl.getScrollFeature().ensureColumnVisible(key, position);\n    };\n    /**\n     * Vertically scrolls the grid until the provided row index is inside the visible viewport.\n     * If a position is provided, the grid will attempt to scroll until the row is at the given position within the viewport.\n     * This will have no effect before the firstDataRendered event has fired.\n     */\n    GridApi.prototype.ensureIndexVisible = function (index, position) {\n        this.gridBodyCtrl.getScrollFeature().ensureIndexVisible(index, position);\n    };\n    /**\n     * Vertically scrolls the grid until the provided row (or a row matching the provided comparator) is inside the visible viewport.\n     * If a position is provided, the grid will attempt to scroll until the row is at the given position within the viewport.\n     * This will have no effect before the firstDataRendered event has fired.\n     */\n    GridApi.prototype.ensureNodeVisible = function (nodeSelector, position) {\n        if (position === void 0) { position = null; }\n        this.gridBodyCtrl.getScrollFeature().ensureNodeVisible(nodeSelector, position);\n    };\n    /**\n     * Similar to `forEachNode`, except lists all the leaf nodes.\n     * This effectively goes through all the data that you provided to the grid before the grid performed any grouping.\n     * If using tree data, goes through all the nodes for the data you provided, including nodes that have children,\n     * but excluding groups the grid created where gaps were missing in the hierarchy.\n     */\n    GridApi.prototype.forEachLeafNode = function (callback) {\n        if (missing(this.clientSideRowModel)) {\n            this.logMissingRowModel('forEachLeafNode', 'clientSide');\n            return;\n        }\n        this.clientSideRowModel.forEachLeafNode(callback);\n    };\n    /**\n     * Iterates through each node (row) in the grid and calls the callback for each node.\n     * This works similar to the `forEach` method on a JavaScript array.\n     * This is called for every node, ignoring any filtering or sorting applied within the grid.\n     * If using the Infinite Row Model, then this gets called for each page loaded in the page cache.\n     */\n    GridApi.prototype.forEachNode = function (callback, includeFooterNodes) {\n        this.rowModel.forEachNode(callback, includeFooterNodes);\n    };\n    /** Similar to `forEachNode`, except skips any filtered out data. */\n    GridApi.prototype.forEachNodeAfterFilter = function (callback) {\n        if (missing(this.clientSideRowModel)) {\n            this.logMissingRowModel('forEachNodeAfterFilter', 'clientSide');\n            return;\n        }\n        this.clientSideRowModel.forEachNodeAfterFilter(callback);\n    };\n    /** Similar to `forEachNodeAfterFilter`, except the callbacks are called in the order the rows are displayed in the grid. */\n    GridApi.prototype.forEachNodeAfterFilterAndSort = function (callback) {\n        if (missing(this.clientSideRowModel)) {\n            this.logMissingRowModel('forEachNodeAfterFilterAndSort', 'clientSide');\n            return;\n        }\n        this.clientSideRowModel.forEachNodeAfterFilterAndSort(callback);\n    };\n    /**\n     * Returns the filter component instance for a column.\n     * `key` can be a string field name or a ColDef object (matches on object reference, useful if field names are not unique).\n     * If your filter is created asynchronously, `getFilterInstance` will return `null` so you will need to use the `callback` to access the filter instance instead.\n     */\n    GridApi.prototype.getFilterInstance = function (key, callback) {\n        var res = this.getFilterInstanceImpl(key, function (instance) {\n            if (!callback) {\n                return;\n            }\n            var unwrapped = unwrapUserComp(instance);\n            callback(unwrapped);\n        });\n        var unwrapped = unwrapUserComp(res);\n        return unwrapped;\n    };\n    GridApi.prototype.getFilterInstanceImpl = function (key, callback) {\n        var column = this.columnModel.getPrimaryColumn(key);\n        if (!column) {\n            return undefined;\n        }\n        var filterPromise = this.filterManager.getFilterComponent(column, 'NO_UI');\n        var currentValue = filterPromise && filterPromise.resolveNow(null, function (filterComp) { return filterComp; });\n        if (currentValue) {\n            setTimeout(callback, 0, currentValue);\n        }\n        else if (filterPromise) {\n            filterPromise.then(function (comp) {\n                callback(comp);\n            });\n        }\n        return currentValue;\n    };\n    /** Destroys a filter. Useful to force a particular filter to be created from scratch again. */\n    GridApi.prototype.destroyFilter = function (key) {\n        var column = this.columnModel.getPrimaryColumn(key);\n        if (column) {\n            return this.filterManager.destroyFilter(column, 'api');\n        }\n    };\n    /** Gets the status panel instance corresponding to the supplied `id`. */\n    GridApi.prototype.getStatusPanel = function (key) {\n        if (!ModuleRegistry.assertRegistered(ModuleNames.StatusBarModule, 'api.getStatusPanel')) {\n            return;\n        }\n        var comp = this.statusBarService.getStatusPanel(key);\n        return unwrapUserComp(comp);\n    };\n    GridApi.prototype.getColumnDef = function (key) {\n        var column = this.columnModel.getPrimaryColumn(key);\n        if (column) {\n            return column.getColDef();\n        }\n        return null;\n    };\n    /**\n     * Returns the current column definitions.\n    */\n    GridApi.prototype.getColumnDefs = function () { return this.columnModel.getColumnDefs(); };\n    /** Informs the grid that a filter has changed. This is typically called after a filter change through one of the filter APIs. */\n    GridApi.prototype.onFilterChanged = function () {\n        this.filterManager.onFilterChanged();\n    };\n    /**\n     * Gets the grid to act as if the sort was changed.\n     * Useful if you update some values and want to get the grid to reorder them according to the new values.\n     */\n    GridApi.prototype.onSortChanged = function () {\n        this.sortController.onSortChanged('api');\n    };\n    /** Sets the state of all the advanced filters. Provide it with what you get from `getFilterModel()` to restore filter state. */\n    GridApi.prototype.setFilterModel = function (model) {\n        this.filterManager.setFilterModel(model);\n    };\n    /** Gets the current state of all the advanced filters. Used for saving filter state. */\n    GridApi.prototype.getFilterModel = function () {\n        return this.filterManager.getFilterModel();\n    };\n    /** Returns the focused cell (or the last focused cell if the grid lost focus). */\n    GridApi.prototype.getFocusedCell = function () {\n        return this.focusService.getFocusedCell();\n    };\n    /** Clears the focused cell. */\n    GridApi.prototype.clearFocusedCell = function () {\n        return this.focusService.clearFocusedCell();\n    };\n    /** Sets the focus to the specified cell. `rowPinned` can be either 'top', 'bottom' or null (for not pinned). */\n    GridApi.prototype.setFocusedCell = function (rowIndex, colKey, rowPinned) {\n        this.focusService.setFocusedCell({ rowIndex: rowIndex, column: colKey, rowPinned: rowPinned, forceBrowserFocus: true });\n    };\n    /** Sets the `suppressRowDrag` property. */\n    GridApi.prototype.setSuppressRowDrag = function (value) {\n        this.gridOptionsService.set('suppressRowDrag', value);\n    };\n    /** Sets the `suppressMoveWhenRowDragging` property. */\n    GridApi.prototype.setSuppressMoveWhenRowDragging = function (value) {\n        this.gridOptionsService.set('suppressMoveWhenRowDragging', value);\n    };\n    /** Sets the `suppressRowClickSelection` property. */\n    GridApi.prototype.setSuppressRowClickSelection = function (value) {\n        this.gridOptionsService.set('suppressRowClickSelection', value);\n    };\n    /** Adds a drop zone outside of the grid where rows can be dropped. */\n    GridApi.prototype.addRowDropZone = function (params) {\n        this.gridBodyCtrl.getRowDragFeature().addRowDropZone(params);\n    };\n    /** Removes an external drop zone added by `addRowDropZone`. */\n    GridApi.prototype.removeRowDropZone = function (params) {\n        var activeDropTarget = this.dragAndDropService.findExternalZone(params);\n        if (activeDropTarget) {\n            this.dragAndDropService.removeDropTarget(activeDropTarget);\n        }\n    };\n    /** Returns the `RowDropZoneParams` to be used by another grid's `addRowDropZone` method. */\n    GridApi.prototype.getRowDropZoneParams = function (events) {\n        return this.gridBodyCtrl.getRowDragFeature().getRowDropZone(events);\n    };\n    /** Sets the height in pixels for the row containing the column label header. */\n    GridApi.prototype.setHeaderHeight = function (headerHeight) {\n        this.gridOptionsService.set('headerHeight', headerHeight);\n    };\n    /**\n     * Switch between layout options: `normal`, `autoHeight`, `print`.\n     * Defaults to `normal` if no domLayout provided.\n     */\n    GridApi.prototype.setDomLayout = function (domLayout) {\n        if (!this.clientSideRowModel && domLayout === 'autoHeight' && !this.gridOptionsService.is('pagination')) {\n            console.error(\"AG Grid: domLayout can only be set to 'autoHeight' when using the client side row model or when using pagination.\");\n            return;\n        }\n        this.gridOptionsService.set('domLayout', domLayout);\n    };\n    /** Sets the `enableCellTextSelection` property. */\n    GridApi.prototype.setEnableCellTextSelection = function (selectable) {\n        this.gridBodyCtrl.setCellTextSelection(selectable);\n    };\n    /** Sets the preferred direction for the selection fill handle. */\n    GridApi.prototype.setFillHandleDirection = function (direction) {\n        this.gridOptionsService.set('fillHandleDirection', direction);\n    };\n    /** Sets the height in pixels for the rows containing header column groups. */\n    GridApi.prototype.setGroupHeaderHeight = function (headerHeight) {\n        this.gridOptionsService.set('groupHeaderHeight', headerHeight);\n    };\n    /** Sets the height in pixels for the row containing the floating filters. */\n    GridApi.prototype.setFloatingFiltersHeight = function (headerHeight) {\n        this.gridOptionsService.set('floatingFiltersHeight', headerHeight);\n    };\n    /** Sets the height in pixels for the row containing the columns when in pivot mode. */\n    GridApi.prototype.setPivotHeaderHeight = function (headerHeight) {\n        this.gridOptionsService.set('pivotHeaderHeight', headerHeight);\n    };\n    /** Sets the height in pixels for the row containing header column groups when in pivot mode. */\n    GridApi.prototype.setPivotGroupHeaderHeight = function (headerHeight) {\n        this.gridOptionsService.set('pivotGroupHeaderHeight', headerHeight);\n    };\n    GridApi.prototype.setPivotMode = function (pivotMode) {\n        this.columnModel.setPivotMode(pivotMode);\n    };\n    GridApi.prototype.setAnimateRows = function (animateRows) {\n        this.gridOptionsService.set('animateRows', animateRows);\n    };\n    GridApi.prototype.setIsExternalFilterPresent = function (isExternalFilterPresentFunc) {\n        this.gridOptionsService.set('isExternalFilterPresent', isExternalFilterPresentFunc);\n    };\n    GridApi.prototype.setDoesExternalFilterPass = function (doesExternalFilterPassFunc) {\n        this.gridOptionsService.set('doesExternalFilterPass', doesExternalFilterPassFunc);\n    };\n    GridApi.prototype.setNavigateToNextCell = function (navigateToNextCellFunc) {\n        this.gridOptionsService.set('navigateToNextCell', navigateToNextCellFunc);\n    };\n    GridApi.prototype.setTabToNextCell = function (tabToNextCellFunc) {\n        this.gridOptionsService.set('tabToNextCell', tabToNextCellFunc);\n    };\n    GridApi.prototype.setTabToNextHeader = function (tabToNextHeaderFunc) {\n        this.gridOptionsService.set('tabToNextHeader', tabToNextHeaderFunc);\n    };\n    GridApi.prototype.setNavigateToNextHeader = function (navigateToNextHeaderFunc) {\n        this.gridOptionsService.set('navigateToNextHeader', navigateToNextHeaderFunc);\n    };\n    GridApi.prototype.setRowGroupPanelShow = function (rowGroupPanelShow) {\n        this.gridOptionsService.set('rowGroupPanelShow', rowGroupPanelShow);\n    };\n    /** @deprecated v27.2 - Use `setGetGroupRowAgg` instead. */\n    GridApi.prototype.setGroupRowAggNodes = function (groupRowAggNodesFunc) {\n        logDeprecation('27.2', 'setGroupRowAggNodes', 'setGetGroupRowAgg');\n        this.gridOptionsService.set('groupRowAggNodes', groupRowAggNodesFunc);\n    };\n    GridApi.prototype.setGetGroupRowAgg = function (getGroupRowAggFunc) {\n        this.gridOptionsService.set('getGroupRowAgg', getGroupRowAggFunc);\n    };\n    GridApi.prototype.setGetBusinessKeyForNode = function (getBusinessKeyForNodeFunc) {\n        this.gridOptionsService.set('getBusinessKeyForNode', getBusinessKeyForNodeFunc);\n    };\n    GridApi.prototype.setGetChildCount = function (getChildCountFunc) {\n        this.gridOptionsService.set('getChildCount', getChildCountFunc);\n    };\n    GridApi.prototype.setProcessRowPostCreate = function (processRowPostCreateFunc) {\n        this.gridOptionsService.set('processRowPostCreate', processRowPostCreateFunc);\n    };\n    /** @deprecated v27.1 Use `setGetRowId` instead  */\n    GridApi.prototype.setGetRowNodeId = function (getRowNodeIdFunc) {\n        logDeprecation('27.1', 'setGetRowNodeId', 'setGetRowId');\n        this.gridOptionsService.set('getRowNodeId', getRowNodeIdFunc);\n    };\n    GridApi.prototype.setGetRowId = function (getRowIdFunc) {\n        this.gridOptionsService.set('getRowId', getRowIdFunc);\n    };\n    GridApi.prototype.setGetRowClass = function (rowClassFunc) {\n        this.gridOptionsService.set('getRowClass', rowClassFunc);\n    };\n    /** @deprecated v27.2 Use `setIsFullWidthRow` instead. */\n    GridApi.prototype.setIsFullWidthCell = function (isFullWidthCellFunc) {\n        logDeprecation('27.2', 'setIsFullWidthCell', 'setIsFullWidthRow');\n        this.gridOptionsService.set('isFullWidthCell', isFullWidthCellFunc);\n    };\n    GridApi.prototype.setIsFullWidthRow = function (isFullWidthRowFunc) {\n        this.gridOptionsService.set('isFullWidthRow', isFullWidthRowFunc);\n    };\n    GridApi.prototype.setIsRowSelectable = function (isRowSelectableFunc) {\n        this.gridOptionsService.set('isRowSelectable', isRowSelectableFunc);\n    };\n    GridApi.prototype.setIsRowMaster = function (isRowMasterFunc) {\n        this.gridOptionsService.set('isRowMaster', isRowMasterFunc);\n    };\n    /** @deprecated v27.2 Use `setPostSortRows` instead */\n    GridApi.prototype.setPostSort = function (postSortFunc) {\n        logDeprecation('27.2', 'setPostSort', 'setPostSortRows');\n        this.gridOptionsService.set('postSort', postSortFunc);\n    };\n    GridApi.prototype.setPostSortRows = function (postSortRowsFunc) {\n        this.gridOptionsService.set('postSortRows', postSortRowsFunc);\n    };\n    GridApi.prototype.setGetDocument = function (getDocumentFunc) {\n        this.gridOptionsService.set('getDocument', getDocumentFunc);\n    };\n    GridApi.prototype.setGetContextMenuItems = function (getContextMenuItemsFunc) {\n        this.gridOptionsService.set('getContextMenuItems', getContextMenuItemsFunc);\n    };\n    GridApi.prototype.setGetMainMenuItems = function (getMainMenuItemsFunc) {\n        this.gridOptionsService.set('getMainMenuItems', getMainMenuItemsFunc);\n    };\n    GridApi.prototype.setProcessCellForClipboard = function (processCellForClipboardFunc) {\n        this.gridOptionsService.set('processCellForClipboard', processCellForClipboardFunc);\n    };\n    GridApi.prototype.setSendToClipboard = function (sendToClipboardFunc) {\n        this.gridOptionsService.set('sendToClipboard', sendToClipboardFunc);\n    };\n    GridApi.prototype.setProcessCellFromClipboard = function (processCellFromClipboardFunc) {\n        this.gridOptionsService.set('processCellFromClipboard', processCellFromClipboardFunc);\n    };\n    /** @deprecated v28 use `setProcessPivotResultColDef` instead */\n    GridApi.prototype.setProcessSecondaryColDef = function (processSecondaryColDefFunc) {\n        logDeprecation('28.0', 'setProcessSecondaryColDef', 'setProcessPivotResultColDef');\n        this.setProcessPivotResultColDef(processSecondaryColDefFunc);\n    };\n    /** @deprecated v28 use `setProcessPivotResultColGroupDef` instead */\n    GridApi.prototype.setProcessSecondaryColGroupDef = function (processSecondaryColGroupDefFunc) {\n        logDeprecation('28.0', 'setProcessSecondaryColGroupDef', 'setProcessPivotResultColGroupDef');\n        this.setProcessPivotResultColGroupDef(processSecondaryColGroupDefFunc);\n    };\n    GridApi.prototype.setProcessPivotResultColDef = function (processPivotResultColDefFunc) {\n        this.gridOptionsService.set('processPivotResultColDef', processPivotResultColDefFunc);\n    };\n    GridApi.prototype.setProcessPivotResultColGroupDef = function (processPivotResultColGroupDefFunc) {\n        this.gridOptionsService.set('processPivotResultColGroupDef', processPivotResultColGroupDefFunc);\n    };\n    GridApi.prototype.setPostProcessPopup = function (postProcessPopupFunc) {\n        this.gridOptionsService.set('postProcessPopup', postProcessPopupFunc);\n    };\n    /** @deprecated v27.2 - Use `setInitialGroupOrderComparator` instead */\n    GridApi.prototype.setDefaultGroupOrderComparator = function (defaultGroupOrderComparatorFunc) {\n        logDeprecation('27.2', 'setDefaultGroupOrderComparator', 'setInitialGroupOrderComparator');\n        this.gridOptionsService.set('defaultGroupOrderComparator', defaultGroupOrderComparatorFunc);\n    };\n    GridApi.prototype.setInitialGroupOrderComparator = function (initialGroupOrderComparatorFunc) {\n        this.gridOptionsService.set('initialGroupOrderComparator', initialGroupOrderComparatorFunc);\n    };\n    GridApi.prototype.setGetChartToolbarItems = function (getChartToolbarItemsFunc) {\n        this.gridOptionsService.set('getChartToolbarItems', getChartToolbarItemsFunc);\n    };\n    GridApi.prototype.setPaginationNumberFormatter = function (paginationNumberFormatterFunc) {\n        this.gridOptionsService.set('paginationNumberFormatter', paginationNumberFormatterFunc);\n    };\n    /** @deprecated v28 use setGetServerSideGroupLevelParams instead */\n    GridApi.prototype.setGetServerSideStoreParams = function (getServerSideStoreParamsFunc) {\n        logDeprecation('28.0', 'setGetServerSideStoreParams', 'setGetServerSideGroupLevelParams');\n        this.setGetServerSideGroupLevelParams(getServerSideStoreParamsFunc);\n    };\n    GridApi.prototype.setGetServerSideGroupLevelParams = function (getServerSideGroupLevelParamsFunc) {\n        this.gridOptionsService.set('getServerSideGroupLevelParams', getServerSideGroupLevelParamsFunc);\n    };\n    GridApi.prototype.setIsServerSideGroupOpenByDefault = function (isServerSideGroupOpenByDefaultFunc) {\n        this.gridOptionsService.set('isServerSideGroupOpenByDefault', isServerSideGroupOpenByDefaultFunc);\n    };\n    GridApi.prototype.setIsApplyServerSideTransaction = function (isApplyServerSideTransactionFunc) {\n        this.gridOptionsService.set('isApplyServerSideTransaction', isApplyServerSideTransactionFunc);\n    };\n    GridApi.prototype.setIsServerSideGroup = function (isServerSideGroupFunc) {\n        this.gridOptionsService.set('isServerSideGroup', isServerSideGroupFunc);\n    };\n    GridApi.prototype.setGetServerSideGroupKey = function (getServerSideGroupKeyFunc) {\n        this.gridOptionsService.set('getServerSideGroupKey', getServerSideGroupKeyFunc);\n    };\n    GridApi.prototype.setGetRowStyle = function (rowStyleFunc) {\n        this.gridOptionsService.set('getRowStyle', rowStyleFunc);\n    };\n    GridApi.prototype.setGetRowHeight = function (rowHeightFunc) {\n        this.gridOptionsService.set('getRowHeight', rowHeightFunc);\n    };\n    GridApi.prototype.assertSideBarLoaded = function (apiMethod) {\n        return ModuleRegistry.assertRegistered(ModuleNames.SideBarModule, 'api.' + apiMethod);\n    };\n    /** Returns `true` if the side bar is visible. */\n    GridApi.prototype.isSideBarVisible = function () {\n        return this.assertSideBarLoaded('isSideBarVisible') && this.sideBarComp.isDisplayed();\n    };\n    /** Show/hide the entire side bar, including any visible panel and the tab buttons. */\n    GridApi.prototype.setSideBarVisible = function (show) {\n        if (this.assertSideBarLoaded('setSideBarVisible')) {\n            this.sideBarComp.setDisplayed(show);\n        }\n    };\n    /** Sets the side bar position relative to the grid. Possible values are `'left'` or `'right'`. */\n    GridApi.prototype.setSideBarPosition = function (position) {\n        if (this.assertSideBarLoaded('setSideBarPosition')) {\n            this.sideBarComp.setSideBarPosition(position);\n        }\n    };\n    /** Opens a particular tool panel. Provide the ID of the tool panel to open. */\n    GridApi.prototype.openToolPanel = function (key) {\n        if (this.assertSideBarLoaded('openToolPanel')) {\n            this.sideBarComp.openToolPanel(key, 'api');\n        }\n    };\n    /** Closes the currently open tool panel (if any). */\n    GridApi.prototype.closeToolPanel = function () {\n        if (this.assertSideBarLoaded('closeToolPanel')) {\n            this.sideBarComp.close('api');\n        }\n    };\n    /** Returns the ID of the currently shown tool panel if any, otherwise `null`. */\n    GridApi.prototype.getOpenedToolPanel = function () {\n        if (this.assertSideBarLoaded('getOpenedToolPanel')) {\n            return this.sideBarComp.openedItem();\n        }\n        return null;\n    };\n    /** Force refresh all tool panels by calling their `refresh` method. */\n    GridApi.prototype.refreshToolPanel = function () {\n        if (this.assertSideBarLoaded('refreshToolPanel')) {\n            this.sideBarComp.refresh();\n        }\n    };\n    /** Returns `true` if the tool panel is showing, otherwise `false`. */\n    GridApi.prototype.isToolPanelShowing = function () {\n        return this.assertSideBarLoaded('isToolPanelShowing') && this.sideBarComp.isToolPanelShowing();\n    };\n    /** Gets the tool panel instance corresponding to the supplied `id`. */\n    GridApi.prototype.getToolPanelInstance = function (id) {\n        if (this.assertSideBarLoaded('getToolPanelInstance')) {\n            var comp = this.sideBarComp.getToolPanelInstance(id);\n            return unwrapUserComp(comp);\n        }\n    };\n    /** Returns the current side bar configuration. If a shortcut was used, returns the detailed long form. */\n    GridApi.prototype.getSideBar = function () {\n        if (this.assertSideBarLoaded('getSideBar')) {\n            return this.sideBarComp.getDef();\n        }\n        return undefined;\n    };\n    /** Resets the side bar to the provided configuration. The parameter is the same as the sideBar grid property. The side bar is re-created from scratch with the new config. */\n    GridApi.prototype.setSideBar = function (def) {\n        this.gridOptionsService.set('sideBar', def);\n    };\n    GridApi.prototype.setSuppressClipboardPaste = function (value) {\n        this.gridOptionsService.set('suppressClipboardPaste', value);\n    };\n    /** Tells the grid to recalculate the row heights. */\n    GridApi.prototype.resetRowHeights = function () {\n        if (exists(this.clientSideRowModel)) {\n            if (this.columnModel.isAutoRowHeightActive()) {\n                console.warn('AG Grid: calling gridApi.resetRowHeights() makes no sense when using Auto Row Height.');\n                return;\n            }\n            this.clientSideRowModel.resetRowHeights();\n        }\n    };\n    GridApi.prototype.setGroupRemoveSingleChildren = function (value) {\n        this.gridOptionsService.set('groupRemoveSingleChildren', value);\n    };\n    GridApi.prototype.setGroupRemoveLowestSingleChildren = function (value) {\n        this.gridOptionsService.set('groupRemoveLowestSingleChildren', value);\n    };\n    GridApi.prototype.setGroupDisplayType = function (value) {\n        this.gridOptionsService.set('groupDisplayType', value);\n    };\n    GridApi.prototype.setRowClass = function (className) {\n        this.gridOptionsService.set('rowClass', className);\n    };\n    /** Sets the `deltaSort` property */\n    GridApi.prototype.setDeltaSort = function (enable) {\n        this.gridOptionsService.set('deltaSort', enable);\n    };\n    /**\n     * Sets the `rowCount` and `maxRowFound` properties.\n     * The second parameter, `maxRowFound`, is optional and if left out, only `rowCount` is set.\n     * Set `rowCount` to adjust the height of the vertical scroll.\n     * Set `maxRowFound` to enable / disable searching for more rows.\n     * Use this method if you add or remove rows into the dataset and need to reset the number of rows or instruct the grid that the entire row count is no longer known.\n     */\n    GridApi.prototype.setRowCount = function (rowCount, maxRowFound) {\n        if (this.serverSideRowModel) {\n            if (this.columnModel.isRowGroupEmpty()) {\n                this.serverSideRowModel.setRowCount(rowCount, maxRowFound);\n                return;\n            }\n            console.error('AG Grid: setRowCount cannot be used while using row grouping.');\n            return;\n        }\n        if (this.infiniteRowModel) {\n            this.infiniteRowModel.setRowCount(rowCount, maxRowFound);\n            return;\n        }\n        this.logMissingRowModel('setRowCount', 'infinite', 'serverSide');\n    };\n    /** Tells the grid a row height has changed. To be used after calling `rowNode.setRowHeight(newHeight)`. */\n    GridApi.prototype.onRowHeightChanged = function () {\n        if (this.clientSideRowModel) {\n            this.clientSideRowModel.onRowHeightChanged();\n        }\n        else if (this.serverSideRowModel) {\n            this.serverSideRowModel.onRowHeightChanged();\n        }\n    };\n    /**\n     * Gets the value for a column for a particular `rowNode` (row).\n     * This is useful if you want the raw value of a cell e.g. if implementing your own CSV export.\n     */\n    GridApi.prototype.getValue = function (colKey, rowNode) {\n        var column = this.columnModel.getPrimaryColumn(colKey);\n        if (missing(column)) {\n            column = this.columnModel.getGridColumn(colKey);\n        }\n        if (missing(column)) {\n            return null;\n        }\n        return this.valueService.getValue(column, rowNode);\n    };\n    /** Add an event listener for the specified `eventType`. Works similar to `addEventListener` for a browser DOM element. */\n    GridApi.prototype.addEventListener = function (eventType, listener) {\n        var async = this.gridOptionsService.useAsyncEvents();\n        this.eventService.addEventListener(eventType, listener, async);\n    };\n    /** Add an event listener for all event types coming from the grid. */\n    GridApi.prototype.addGlobalListener = function (listener) {\n        var async = this.gridOptionsService.useAsyncEvents();\n        this.eventService.addGlobalListener(listener, async);\n    };\n    /** Remove an event listener. */\n    GridApi.prototype.removeEventListener = function (eventType, listener) {\n        var async = this.gridOptionsService.useAsyncEvents();\n        this.eventService.removeEventListener(eventType, listener, async);\n    };\n    /** Remove a global event listener. */\n    GridApi.prototype.removeGlobalListener = function (listener) {\n        var async = this.gridOptionsService.useAsyncEvents();\n        this.eventService.removeGlobalListener(listener, async);\n    };\n    GridApi.prototype.dispatchEvent = function (event) {\n        this.eventService.dispatchEvent(event);\n    };\n    /** Will destroy the grid and release resources. If you are using a framework you do not need to call this, as the grid links in with the framework lifecycle. However if you are using Web Components or native JavaScript, you do need to call this, to avoid a memory leak in your application. */\n    GridApi.prototype.destroy = function () {\n        // this is needed as GridAPI is a bean, and GridAPI.destroy() is called as part\n        // of context.destroy(). so we need to stop the infinite loop.\n        if (this.destroyCalled) {\n            return;\n        }\n        this.destroyCalled = true;\n        // destroy the UI first (as they use the services)\n        var gridCtrl = this.ctrlsService.getGridCtrl();\n        if (gridCtrl) {\n            gridCtrl.destroyGridUi();\n        }\n        // destroy the services\n        this.context.destroy();\n    };\n    GridApi.prototype.cleanDownReferencesToAvoidMemoryLeakInCaseApplicationIsKeepingReferenceToDestroyedGrid = function () {\n        // some users were raising support issues with regards memory leaks. the problem was the customers applications\n        // were keeping references to the API. trying to educate them all would be difficult, easier to just remove\n        // all references in the API so at least the core grid can be garbage collected.\n        //\n        // wait about 100ms before clearing down the references, in case user has some cleanup to do,\n        // and needs to deference the API first\n        setTimeout(removeAllReferences.bind(window, this, 'Grid API'), 100);\n    };\n    GridApi.prototype.warnIfDestroyed = function (methodName) {\n        if (this.destroyCalled) {\n            console.warn(\"AG Grid: Grid API method \" + methodName + \" was called on a grid that was destroyed.\");\n        }\n        return this.destroyCalled;\n    };\n    /** Reset the Quick Filter cache text on every rowNode. */\n    GridApi.prototype.resetQuickFilter = function () {\n        if (this.warnIfDestroyed('resetQuickFilter')) {\n            return;\n        }\n        this.filterManager.resetQuickFilterCache();\n    };\n    /** Returns the list of selected cell ranges. */\n    GridApi.prototype.getCellRanges = function () {\n        if (this.rangeService) {\n            return this.rangeService.getCellRanges();\n        }\n        ModuleRegistry.assertRegistered(ModuleNames.RangeSelectionModule, 'api.getCellRanges');\n        return null;\n    };\n    /** Adds the provided cell range to the selected ranges. */\n    GridApi.prototype.addCellRange = function (params) {\n        if (this.rangeService) {\n            this.rangeService.addCellRange(params);\n            return;\n        }\n        ModuleRegistry.assertRegistered(ModuleNames.RangeSelectionModule, 'api.addCellRange');\n    };\n    /** Clears the selected ranges. */\n    GridApi.prototype.clearRangeSelection = function () {\n        if (this.rangeService) {\n            this.rangeService.removeAllCellRanges();\n        }\n        ModuleRegistry.assertRegistered(ModuleNames.RangeSelectionModule, 'gridApi.clearRangeSelection');\n    };\n    /** Reverts the last cell edit. */\n    GridApi.prototype.undoCellEditing = function () {\n        this.undoRedoService.undo('api');\n    };\n    /** Re-applies the most recently undone cell edit. */\n    GridApi.prototype.redoCellEditing = function () {\n        this.undoRedoService.redo('api');\n    };\n    /** Returns current number of available cell edit undo operations. */\n    GridApi.prototype.getCurrentUndoSize = function () {\n        return this.undoRedoService.getCurrentUndoStackSize();\n    };\n    /** Returns current number of available cell edit redo operations. */\n    GridApi.prototype.getCurrentRedoSize = function () {\n        return this.undoRedoService.getCurrentRedoStackSize();\n    };\n    /** Returns a list of models with information about the charts that are currently rendered from the grid. */\n    GridApi.prototype.getChartModels = function () {\n        if (ModuleRegistry.assertRegistered(ModuleNames.GridChartsModule, 'api.getChartModels')) {\n            return this.chartService.getChartModels();\n        }\n    };\n    /** Returns the `ChartRef` using the supplied `chartId`. */\n    GridApi.prototype.getChartRef = function (chartId) {\n        if (ModuleRegistry.assertRegistered(ModuleNames.GridChartsModule, 'api.getChartRef')) {\n            return this.chartService.getChartRef(chartId);\n        }\n    };\n    /** Returns a base64-encoded image data URL for the referenced chartId. */\n    GridApi.prototype.getChartImageDataURL = function (params) {\n        if (ModuleRegistry.assertRegistered(ModuleNames.GridChartsModule, 'api.getChartImageDataURL')) {\n            return this.chartService.getChartImageDataURL(params);\n        }\n    };\n    /** Starts a browser-based image download for the referenced chartId. */\n    GridApi.prototype.downloadChart = function (params) {\n        if (ModuleRegistry.assertRegistered(ModuleNames.GridChartsModule, 'api.downloadChart')) {\n            return this.chartService.downloadChart(params);\n        }\n    };\n    /** Open the Chart Tool Panel. */\n    GridApi.prototype.openChartToolPanel = function (params) {\n        if (ModuleRegistry.assertRegistered(ModuleNames.GridChartsModule, 'api.openChartToolPanel')) {\n            return this.chartService.openChartToolPanel(params);\n        }\n    };\n    /** Close the Chart Tool Panel. */\n    GridApi.prototype.closeChartToolPanel = function (params) {\n        if (ModuleRegistry.assertRegistered(ModuleNames.GridChartsModule, 'api.closeChartToolPanel')) {\n            return this.chartService.closeChartToolPanel(params.chartId);\n        }\n    };\n    /** Used to programmatically create charts from a range. */\n    GridApi.prototype.createRangeChart = function (params) {\n        if (ModuleRegistry.assertRegistered(ModuleNames.GridChartsModule, 'api.createRangeChart')) {\n            return this.chartService.createRangeChart(params);\n        }\n    };\n    /** Used to programmatically create cross filter charts from a range. */\n    GridApi.prototype.createCrossFilterChart = function (params) {\n        if (ModuleRegistry.assertRegistered(ModuleNames.GridChartsModule, 'api.createCrossFilterChart')) {\n            return this.chartService.createCrossFilterChart(params);\n        }\n    };\n    /** Restores a chart using the `ChartModel` that was previously obtained from `getChartModels()`. */\n    GridApi.prototype.restoreChart = function (chartModel, chartContainer) {\n        if (ModuleRegistry.assertRegistered(ModuleNames.GridChartsModule, 'api.restoreChart')) {\n            return this.chartService.restoreChart(chartModel, chartContainer);\n        }\n    };\n    /** Used to programmatically create pivot charts from a grid. */\n    GridApi.prototype.createPivotChart = function (params) {\n        if (ModuleRegistry.assertRegistered(ModuleNames.GridChartsModule, 'api.createPivotChart')) {\n            return this.chartService.createPivotChart(params);\n        }\n    };\n    /** Copies data to clipboard by following the same rules as pressing Ctrl+C. */\n    GridApi.prototype.copyToClipboard = function (params) {\n        if (ModuleRegistry.assertRegistered(ModuleNames.ClipboardModule, 'api.copyToClipboard')) {\n            this.clipboardService.copyToClipboard(params);\n        }\n    };\n    /** Cuts data to clipboard by following the same rules as pressing Ctrl+X. */\n    GridApi.prototype.cutToClipboard = function (params) {\n        if (ModuleRegistry.assertRegistered(ModuleNames.ClipboardModule, 'api.cutToClipboard')) {\n            this.clipboardService.cutToClipboard(params);\n        }\n    };\n    /** Copies the selected rows to the clipboard. */\n    GridApi.prototype.copySelectedRowsToClipboard = function (params) {\n        if (ModuleRegistry.assertRegistered(ModuleNames.ClipboardModule, 'api.copySelectedRowsToClipboard')) {\n            this.clipboardService.copySelectedRowsToClipboard(params);\n        }\n    };\n    /** Copies the selected ranges to the clipboard. */\n    GridApi.prototype.copySelectedRangeToClipboard = function (params) {\n        if (ModuleRegistry.assertRegistered(ModuleNames.ClipboardModule, 'api.copySelectedRangeToClipboard')) {\n            this.clipboardService.copySelectedRangeToClipboard(params);\n        }\n    };\n    /** Copies the selected range down, similar to `Ctrl + D` in Excel. */\n    GridApi.prototype.copySelectedRangeDown = function () {\n        if (ModuleRegistry.assertRegistered(ModuleNames.ClipboardModule, 'api.copySelectedRangeDown')) {\n            this.clipboardService.copyRangeDown();\n        }\n    };\n    /** Shows the column menu after and positions it relative to the provided button element. Use in conjunction with your own header template. */\n    GridApi.prototype.showColumnMenuAfterButtonClick = function (colKey, buttonElement) {\n        // use grid column so works with pivot mode\n        var column = this.columnModel.getGridColumn(colKey);\n        this.menuFactory.showMenuAfterButtonClick(column, buttonElement, 'columnMenu');\n    };\n    /** Shows the column menu after and positions it relative to the mouse event. Use in conjunction with your own header template. */\n    GridApi.prototype.showColumnMenuAfterMouseClick = function (colKey, mouseEvent) {\n        // use grid column so works with pivot mode\n        var column = this.columnModel.getGridColumn(colKey);\n        if (!column) {\n            column = this.columnModel.getPrimaryColumn(colKey);\n        }\n        if (!column) {\n            console.error(\"AG Grid: column '\" + colKey + \"' not found\");\n            return;\n        }\n        this.menuFactory.showMenuAfterMouseEvent(column, mouseEvent);\n    };\n    /** Hides any visible context menu or column menu. */\n    GridApi.prototype.hidePopupMenu = function () {\n        // hide the context menu if in enterprise\n        if (this.contextMenuFactory) {\n            this.contextMenuFactory.hideActiveMenu();\n        }\n        // and hide the column menu always\n        this.menuFactory.hideActiveMenu();\n    };\n    /** DOM element to use as the popup parent for grid popups (context menu, column menu etc). */\n    GridApi.prototype.setPopupParent = function (ePopupParent) {\n        this.gridOptionsService.set('popupParent', ePopupParent);\n    };\n    /** Navigates the grid focus to the next cell, as if tabbing. */\n    GridApi.prototype.tabToNextCell = function (event) {\n        return this.navigationService.tabToNextCell(false, event);\n    };\n    /** Navigates the grid focus to the previous cell, as if shift-tabbing. */\n    GridApi.prototype.tabToPreviousCell = function (event) {\n        return this.navigationService.tabToNextCell(true, event);\n    };\n    /** Returns the list of active cell renderer instances. */\n    GridApi.prototype.getCellRendererInstances = function (params) {\n        if (params === void 0) { params = {}; }\n        var res = this.rowRenderer.getCellRendererInstances(params);\n        var unwrapped = res.map(unwrapUserComp);\n        return unwrapped;\n    };\n    /** Returns the list of active cell editor instances. Optionally provide parameters to restrict to certain columns / row nodes. */\n    GridApi.prototype.getCellEditorInstances = function (params) {\n        if (params === void 0) { params = {}; }\n        var res = this.rowRenderer.getCellEditorInstances(params);\n        var unwrapped = res.map(unwrapUserComp);\n        return unwrapped;\n    };\n    /** If the grid is editing, returns back details of the editing cell(s). */\n    GridApi.prototype.getEditingCells = function () {\n        return this.rowRenderer.getEditingCells();\n    };\n    /** If a cell is editing, it stops the editing. Pass `true` if you want to cancel the editing (i.e. don't accept changes). */\n    GridApi.prototype.stopEditing = function (cancel) {\n        if (cancel === void 0) { cancel = false; }\n        this.rowRenderer.stopEditing(cancel);\n    };\n    /** Start editing the provided cell. If another cell is editing, the editing will be stopped in that other cell. */\n    GridApi.prototype.startEditingCell = function (params) {\n        var column = this.columnModel.getGridColumn(params.colKey);\n        if (!column) {\n            console.warn(\"AG Grid: no column found for \" + params.colKey);\n            return;\n        }\n        var cellPosition = {\n            rowIndex: params.rowIndex,\n            rowPinned: params.rowPinned || null,\n            column: column\n        };\n        var notPinned = params.rowPinned == null;\n        if (notPinned) {\n            this.gridBodyCtrl.getScrollFeature().ensureIndexVisible(params.rowIndex);\n        }\n        var cell = this.navigationService.getCellByPosition(cellPosition);\n        if (!cell) {\n            return;\n        }\n        cell.startRowOrCellEdit(params.key, params.charPress);\n    };\n    /** Add an aggregation function with the specified key. */\n    GridApi.prototype.addAggFunc = function (key, aggFunc) {\n        if (this.aggFuncService) {\n            this.aggFuncService.addAggFunc(key, aggFunc);\n        }\n    };\n    /** Add aggregations function with the specified keys. */\n    GridApi.prototype.addAggFuncs = function (aggFuncs) {\n        if (this.aggFuncService) {\n            this.aggFuncService.addAggFuncs(aggFuncs);\n        }\n    };\n    /** Clears all aggregation functions (including those provided by the grid). */\n    GridApi.prototype.clearAggFuncs = function () {\n        if (this.aggFuncService) {\n            this.aggFuncService.clear();\n        }\n    };\n    /** Apply transactions to the server side row model. */\n    GridApi.prototype.applyServerSideTransaction = function (transaction) {\n        if (!this.serverSideTransactionManager) {\n            this.logMissingRowModel('applyServerSideTransaction', 'serverSide');\n            return;\n        }\n        return this.serverSideTransactionManager.applyTransaction(transaction);\n    };\n    /** Batch apply transactions to the server side row model. */\n    GridApi.prototype.applyServerSideTransactionAsync = function (transaction, callback) {\n        if (!this.serverSideTransactionManager) {\n            this.logMissingRowModel('applyServerSideTransactionAsync', 'serverSide');\n            return;\n        }\n        return this.serverSideTransactionManager.applyTransactionAsync(transaction, callback);\n    };\n    /** Gets all failed server side loads to retry. */\n    GridApi.prototype.retryServerSideLoads = function () {\n        if (!this.serverSideRowModel) {\n            this.logMissingRowModel('retryServerSideLoads', 'serverSide');\n            return;\n        }\n        this.serverSideRowModel.retryLoads();\n    };\n    GridApi.prototype.flushServerSideAsyncTransactions = function () {\n        if (!this.serverSideTransactionManager) {\n            this.logMissingRowModel('flushServerSideAsyncTransactions', 'serverSide');\n            return;\n        }\n        return this.serverSideTransactionManager.flushAsyncTransactions();\n    };\n    /** Update row data. Pass a transaction object with lists for `add`, `remove` and `update`. */\n    GridApi.prototype.applyTransaction = function (rowDataTransaction) {\n        if (!this.clientSideRowModel) {\n            this.logMissingRowModel('applyTransaction', 'clientSide');\n            return;\n        }\n        var res = this.clientSideRowModel.updateRowData(rowDataTransaction);\n        // do change detection for all present cells\n        if (!this.gridOptionsService.is('suppressChangeDetection')) {\n            this.rowRenderer.refreshCells();\n        }\n        return res;\n    };\n    /** Same as `applyTransaction` except executes asynchronously for efficiency. */\n    GridApi.prototype.applyTransactionAsync = function (rowDataTransaction, callback) {\n        if (!this.clientSideRowModel) {\n            this.logMissingRowModel('applyTransactionAsync', 'clientSide');\n            return;\n        }\n        this.clientSideRowModel.batchUpdateRowData(rowDataTransaction, callback);\n    };\n    /** Executes any remaining asynchronous grid transactions, if any are waiting to be executed. */\n    GridApi.prototype.flushAsyncTransactions = function () {\n        if (!this.clientSideRowModel) {\n            this.logMissingRowModel('flushAsyncTransactions', 'clientSide');\n            return;\n        }\n        this.clientSideRowModel.flushAsyncTransactions();\n    };\n    GridApi.prototype.setSuppressModelUpdateAfterUpdateTransaction = function (value) {\n        this.gridOptionsService.set('suppressModelUpdateAfterUpdateTransaction', value);\n    };\n    /**\n     * Marks all the currently loaded blocks in the cache for reload.\n     * If you have 10 blocks in the cache, all 10 will be marked for reload.\n     * The old data will continue to be displayed until the new data is loaded.\n     */\n    GridApi.prototype.refreshInfiniteCache = function () {\n        if (this.infiniteRowModel) {\n            this.infiniteRowModel.refreshCache();\n        }\n        else {\n            this.logMissingRowModel('refreshInfiniteCache', 'infinite');\n        }\n    };\n    /**\n     * Purges the cache.\n     * The grid is then told to refresh. Only the blocks required to display the current data on screen are fetched (typically no more than 2).\n     * The grid will display nothing while the new blocks are loaded.\n     * Use this to immediately remove the old data from the user.\n     */\n    GridApi.prototype.purgeInfiniteCache = function () {\n        if (this.infiniteRowModel) {\n            this.infiniteRowModel.purgeCache();\n        }\n        else {\n            this.logMissingRowModel('purgeInfiniteCache', 'infinite');\n        }\n    };\n    /**\n     * Refresh a server-side store level.\n     * If you pass no parameters, then the top level store is refreshed.\n     * To refresh a child level, pass in the string of keys to get to the desired level.\n     * Once the store refresh is complete, the storeRefreshed event is fired.\n     */\n    GridApi.prototype.refreshServerSide = function (params) {\n        if (!this.serverSideRowModel) {\n            this.logMissingRowModel('refreshServerSide', 'serverSide');\n            return;\n        }\n        this.serverSideRowModel.refreshStore(params);\n    };\n    /** @deprecated v28 use `refreshServerSide` instead */\n    GridApi.prototype.refreshServerSideStore = function (params) {\n        logDeprecation('28.0', 'refreshServerSideStore', 'refreshServerSide');\n        return this.refreshServerSide(params);\n    };\n    /** @deprecated v28 use `getServerSideGroupLevelState` instead */\n    GridApi.prototype.getServerSideStoreState = function () {\n        logDeprecation('28.0', 'getServerSideStoreState', 'getServerSideGroupLevelState');\n        return this.getServerSideGroupLevelState();\n    };\n    /** Returns info on all server side group levels. */\n    GridApi.prototype.getServerSideGroupLevelState = function () {\n        if (!this.serverSideRowModel) {\n            this.logMissingRowModel('getServerSideGroupLevelState', 'serverSide');\n            return [];\n        }\n        return this.serverSideRowModel.getStoreState();\n    };\n    /** The row count defines how many rows the grid allows scrolling to. */\n    GridApi.prototype.getInfiniteRowCount = function () {\n        if (this.infiniteRowModel) {\n            return this.infiniteRowModel.getRowCount();\n        }\n        else {\n            this.logMissingRowModel('getInfiniteRowCount', 'infinite');\n        }\n    };\n    /** Returns `true` if grid allows for scrolling past the last row to load more rows, thus providing infinite scroll. */\n    GridApi.prototype.isLastRowIndexKnown = function () {\n        if (this.infiniteRowModel) {\n            return this.infiniteRowModel.isLastRowIndexKnown();\n        }\n        else {\n            this.logMissingRowModel('isLastRowIndexKnown', 'infinite');\n        }\n    };\n    /**\n     * Returns an object representing the state of the cache. This is useful for debugging and understanding how the cache is working.\n     */\n    GridApi.prototype.getCacheBlockState = function () {\n        return this.rowNodeBlockLoader.getBlockState();\n    };\n    /** Get the index of the first displayed row due to scrolling (includes invisible rendered rows in the buffer). */\n    GridApi.prototype.getFirstDisplayedRow = function () {\n        return this.rowRenderer.getFirstVirtualRenderedRow();\n    };\n    /** Get the index of the last displayed row due to scrolling (includes invisible rendered rows in the buffer). */\n    GridApi.prototype.getLastDisplayedRow = function () {\n        return this.rowRenderer.getLastVirtualRenderedRow();\n    };\n    /** Returns the displayed `RowNode` at the given `index`. */\n    GridApi.prototype.getDisplayedRowAtIndex = function (index) {\n        return this.rowModel.getRow(index);\n    };\n    /** Returns the total number of displayed rows. */\n    GridApi.prototype.getDisplayedRowCount = function () {\n        return this.rowModel.getRowCount();\n    };\n    /**\n     * Set whether the grid paginates the data or not.\n     *  - `true` to enable pagination\n     *  - `false` to disable pagination\n     */\n    GridApi.prototype.setPagination = function (value) {\n        if (!this.clientSideRowModel && this.gridOptionsService.get('domLayout') === 'autoHeight' && !value) {\n            console.error(\"AG Grid: Pagination cannot be disabled when using domLayout set to 'autoHeight' unless using the client-side row model.\");\n            return;\n        }\n        this.gridOptionsService.set('pagination', value);\n    };\n    /**\n     * Returns `true` when the last page is known.\n     * This will always be `true` if you are using the Client-Side Row Model for pagination.\n     * Returns `false` when the last page is not known; this only happens when using Infinite Row Model.\n     */\n    GridApi.prototype.paginationIsLastPageFound = function () {\n        return this.paginationProxy.isLastPageFound();\n    };\n    /** Returns how many rows are being shown per page. */\n    GridApi.prototype.paginationGetPageSize = function () {\n        return this.paginationProxy.getPageSize();\n    };\n    /** Sets the `paginationPageSize`, then re-paginates the grid so the changes are applied immediately. */\n    GridApi.prototype.paginationSetPageSize = function (size) {\n        this.gridOptionsService.set('paginationPageSize', size);\n    };\n    /** Returns the 0-based index of the page which is showing. */\n    GridApi.prototype.paginationGetCurrentPage = function () {\n        return this.paginationProxy.getCurrentPage();\n    };\n    /** Returns the total number of pages. Returns `null` if `paginationIsLastPageFound() === false`. */\n    GridApi.prototype.paginationGetTotalPages = function () {\n        return this.paginationProxy.getTotalPages();\n    };\n    /** The total number of rows. Returns `null` if `paginationIsLastPageFound() === false`. */\n    GridApi.prototype.paginationGetRowCount = function () {\n        return this.paginationProxy.getMasterRowCount();\n    };\n    /** Navigates to the next page. */\n    GridApi.prototype.paginationGoToNextPage = function () {\n        this.paginationProxy.goToNextPage();\n    };\n    /** Navigates to the previous page. */\n    GridApi.prototype.paginationGoToPreviousPage = function () {\n        this.paginationProxy.goToPreviousPage();\n    };\n    /** Navigates to the first page. */\n    GridApi.prototype.paginationGoToFirstPage = function () {\n        this.paginationProxy.goToFirstPage();\n    };\n    /** Navigates to the last page. */\n    GridApi.prototype.paginationGoToLastPage = function () {\n        this.paginationProxy.goToLastPage();\n    };\n    /** Goes to the specified page. If the page requested doesn't exist, it will go to the last page. */\n    GridApi.prototype.paginationGoToPage = function (page) {\n        this.paginationProxy.goToPage(page);\n    };\n    __decorate$1T([\n        Optional('immutableService')\n    ], GridApi.prototype, \"immutableService\", void 0);\n    __decorate$1T([\n        Optional('csvCreator')\n    ], GridApi.prototype, \"csvCreator\", void 0);\n    __decorate$1T([\n        Optional('excelCreator')\n    ], GridApi.prototype, \"excelCreator\", void 0);\n    __decorate$1T([\n        Autowired('rowRenderer')\n    ], GridApi.prototype, \"rowRenderer\", void 0);\n    __decorate$1T([\n        Autowired('navigationService')\n    ], GridApi.prototype, \"navigationService\", void 0);\n    __decorate$1T([\n        Autowired('filterManager')\n    ], GridApi.prototype, \"filterManager\", void 0);\n    __decorate$1T([\n        Autowired('columnModel')\n    ], GridApi.prototype, \"columnModel\", void 0);\n    __decorate$1T([\n        Autowired('selectionService')\n    ], GridApi.prototype, \"selectionService\", void 0);\n    __decorate$1T([\n        Autowired('gridOptionsService')\n    ], GridApi.prototype, \"gridOptionsService\", void 0);\n    __decorate$1T([\n        Autowired('valueService')\n    ], GridApi.prototype, \"valueService\", void 0);\n    __decorate$1T([\n        Autowired('alignedGridsService')\n    ], GridApi.prototype, \"alignedGridsService\", void 0);\n    __decorate$1T([\n        Autowired('eventService')\n    ], GridApi.prototype, \"eventService\", void 0);\n    __decorate$1T([\n        Autowired('pinnedRowModel')\n    ], GridApi.prototype, \"pinnedRowModel\", void 0);\n    __decorate$1T([\n        Autowired('context')\n    ], GridApi.prototype, \"context\", void 0);\n    __decorate$1T([\n        Autowired('rowModel')\n    ], GridApi.prototype, \"rowModel\", void 0);\n    __decorate$1T([\n        Autowired('sortController')\n    ], GridApi.prototype, \"sortController\", void 0);\n    __decorate$1T([\n        Autowired('paginationProxy')\n    ], GridApi.prototype, \"paginationProxy\", void 0);\n    __decorate$1T([\n        Autowired('focusService')\n    ], GridApi.prototype, \"focusService\", void 0);\n    __decorate$1T([\n        Autowired('dragAndDropService')\n    ], GridApi.prototype, \"dragAndDropService\", void 0);\n    __decorate$1T([\n        Optional('rangeService')\n    ], GridApi.prototype, \"rangeService\", void 0);\n    __decorate$1T([\n        Optional('clipboardService')\n    ], GridApi.prototype, \"clipboardService\", void 0);\n    __decorate$1T([\n        Optional('aggFuncService')\n    ], GridApi.prototype, \"aggFuncService\", void 0);\n    __decorate$1T([\n        Autowired('menuFactory')\n    ], GridApi.prototype, \"menuFactory\", void 0);\n    __decorate$1T([\n        Optional('contextMenuFactory')\n    ], GridApi.prototype, \"contextMenuFactory\", void 0);\n    __decorate$1T([\n        Autowired('valueCache')\n    ], GridApi.prototype, \"valueCache\", void 0);\n    __decorate$1T([\n        Autowired('animationFrameService')\n    ], GridApi.prototype, \"animationFrameService\", void 0);\n    __decorate$1T([\n        Optional('statusBarService')\n    ], GridApi.prototype, \"statusBarService\", void 0);\n    __decorate$1T([\n        Optional('chartService')\n    ], GridApi.prototype, \"chartService\", void 0);\n    __decorate$1T([\n        Optional('undoRedoService')\n    ], GridApi.prototype, \"undoRedoService\", void 0);\n    __decorate$1T([\n        Optional('rowNodeBlockLoader')\n    ], GridApi.prototype, \"rowNodeBlockLoader\", void 0);\n    __decorate$1T([\n        Optional('ssrmTransactionManager')\n    ], GridApi.prototype, \"serverSideTransactionManager\", void 0);\n    __decorate$1T([\n        Autowired('ctrlsService')\n    ], GridApi.prototype, \"ctrlsService\", void 0);\n    __decorate$1T([\n        PostConstruct\n    ], GridApi.prototype, \"init\", null);\n    __decorate$1T([\n        PreDestroy\n    ], GridApi.prototype, \"cleanDownReferencesToAvoidMemoryLeakInCaseApplicationIsKeepingReferenceToDestroyedGrid\", null);\n    GridApi = __decorate$1T([\n        Bean('gridApi')\n    ], GridApi);\n    return GridApi;\n}());\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$20 = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __assign$b = (undefined && undefined.__assign) || function () {\n    __assign$b = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign$b.apply(this, arguments);\n};\nvar __decorate$1S = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar FilterManager = /** @class */ (function (_super) {\n    __extends$20(FilterManager, _super);\n    function FilterManager() {\n        var _this = _super !== null && _super.apply(this, arguments) || this;\n        _this.allColumnFilters = new Map();\n        _this.activeAggregateFilters = [];\n        _this.activeColumnFilters = [];\n        _this.quickFilter = null;\n        _this.quickFilterParts = null;\n        // this is true when the grid is processing the filter change. this is used by the cell comps, so that they\n        // don't flash when data changes due to filter changes. there is no need to flash when filter changes as the\n        // user is in control, so doesn't make sense to show flashing changes. for example, go to main demo where\n        // this feature is turned off (hack code to always return false for isSuppressFlashingCellsBecauseFiltering(), put in)\n        // 100,000 rows and group by country. then do some filtering. all the cells flash, which is silly.\n        _this.processingFilterChange = false;\n        return _this;\n    }\n    FilterManager_1 = FilterManager;\n    FilterManager.prototype.init = function () {\n        var _this = this;\n        this.addManagedListener(this.eventService, Events.EVENT_GRID_COLUMNS_CHANGED, function () { return _this.onColumnsChanged(); });\n        this.addManagedListener(this.eventService, Events.EVENT_COLUMN_VALUE_CHANGED, function () { return _this.refreshFiltersForAggregations(); });\n        this.addManagedListener(this.eventService, Events.EVENT_COLUMN_PIVOT_CHANGED, function () { return _this.refreshFiltersForAggregations(); });\n        this.addManagedListener(this.eventService, Events.EVENT_COLUMN_PIVOT_MODE_CHANGED, function () {\n            _this.refreshFiltersForAggregations();\n            _this.resetQuickFilterCache();\n        });\n        this.addManagedListener(this.eventService, Events.EVENT_NEW_COLUMNS_LOADED, function () { return _this.resetQuickFilterCache(); });\n        this.addManagedListener(this.eventService, Events.EVENT_COLUMN_ROW_GROUP_CHANGED, function () { return _this.resetQuickFilterCache(); });\n        this.addManagedListener(this.eventService, Events.EVENT_COLUMN_VISIBLE, function () {\n            if (_this.gridOptionsService.is('excludeHiddenColumnsFromQuickFilter')) {\n                _this.resetQuickFilterCache();\n            }\n        });\n        this.addManagedPropertyListener('quickFilterText', function (e) { return _this.setQuickFilter(e.currentValue); });\n        this.addManagedPropertyListener('excludeHiddenColumnsFromQuickFilter', function () { return _this.onExcludeHiddenColumnsFromQuickFilterChanged(); });\n        this.quickFilter = this.parseQuickFilter(this.gridOptionsService.get('quickFilterText'));\n        this.setQuickFilterParts();\n        this.allowShowChangeAfterFilter = this.gridOptionsService.is('allowShowChangeAfterFilter');\n        this.externalFilterPresent = this.isExternalFilterPresentCallback();\n    };\n    FilterManager.prototype.isExternalFilterPresentCallback = function () {\n        var isFilterPresent = this.gridOptionsService.getCallback('isExternalFilterPresent');\n        if (typeof isFilterPresent === 'function') {\n            return isFilterPresent({});\n        }\n        return false;\n    };\n    FilterManager.prototype.doesExternalFilterPass = function (node) {\n        var doesFilterPass = this.gridOptionsService.get('doesExternalFilterPass');\n        if (typeof doesFilterPass === 'function') {\n            return doesFilterPass(node);\n        }\n        return false;\n    };\n    FilterManager.prototype.setQuickFilterParts = function () {\n        this.quickFilterParts = this.quickFilter ? this.quickFilter.split(' ') : null;\n    };\n    FilterManager.prototype.setFilterModel = function (model) {\n        var _this = this;\n        var allPromises = [];\n        var previousModel = this.getFilterModel();\n        if (model) {\n            // mark the filters as we set them, so any active filters left over we stop\n            var modelKeys_1 = convertToSet(Object.keys(model));\n            this.allColumnFilters.forEach(function (filterWrapper, colId) {\n                var newModel = model[colId];\n                allPromises.push(_this.setModelOnFilterWrapper(filterWrapper.filterPromise, newModel));\n                modelKeys_1.delete(colId);\n            });\n            // at this point, processedFields contains data for which we don't have a filter working yet\n            modelKeys_1.forEach(function (colId) {\n                var column = _this.columnModel.getPrimaryColumn(colId) || _this.columnModel.getGridColumn(colId);\n                if (!column) {\n                    console.warn('AG Grid: setFilterModel() - no column found for colId: ' + colId);\n                    return;\n                }\n                if (!column.isFilterAllowed()) {\n                    console.warn('AG Grid: setFilterModel() - unable to fully apply model, filtering disabled for colId: ' + colId);\n                    return;\n                }\n                var filterWrapper = _this.getOrCreateFilterWrapper(column, 'NO_UI');\n                if (!filterWrapper) {\n                    console.warn('AG-Grid: setFilterModel() - unable to fully apply model, unable to create filter for colId: ' + colId);\n                    return;\n                }\n                allPromises.push(_this.setModelOnFilterWrapper(filterWrapper.filterPromise, model[colId]));\n            });\n        }\n        else {\n            this.allColumnFilters.forEach(function (filterWrapper) {\n                allPromises.push(_this.setModelOnFilterWrapper(filterWrapper.filterPromise, null));\n            });\n        }\n        AgPromise.all(allPromises).then(function () {\n            var currentModel = _this.getFilterModel();\n            var columns = [];\n            _this.allColumnFilters.forEach(function (filterWrapper, colId) {\n                var before = previousModel ? previousModel[colId] : null;\n                var after = currentModel ? currentModel[colId] : null;\n                if (!_.jsonEquals(before, after)) {\n                    columns.push(filterWrapper.column);\n                }\n            });\n            if (columns.length > 0) {\n                _this.onFilterChanged({ columns: columns });\n            }\n        });\n    };\n    FilterManager.prototype.setModelOnFilterWrapper = function (filterPromise, newModel) {\n        return new AgPromise(function (resolve) {\n            filterPromise.then(function (filter) {\n                if (typeof filter.setModel !== 'function') {\n                    console.warn('AG Grid: filter missing setModel method, which is needed for setFilterModel');\n                    resolve();\n                }\n                (filter.setModel(newModel) || AgPromise.resolve()).then(function () { return resolve(); });\n            });\n        });\n    };\n    FilterManager.prototype.getFilterModel = function () {\n        var result = {};\n        this.allColumnFilters.forEach(function (filterWrapper, key) {\n            // because user can provide filters, we provide useful error checking and messages\n            var filterPromise = filterWrapper.filterPromise;\n            var filter = filterPromise.resolveNow(null, function (promiseFilter) { return promiseFilter; });\n            if (filter == null) {\n                return null;\n            }\n            if (typeof filter.getModel !== 'function') {\n                console.warn('AG Grid: filter API missing getModel method, which is needed for getFilterModel');\n                return;\n            }\n            var model = filter.getModel();\n            if (exists(model)) {\n                result[key] = model;\n            }\n        });\n        return result;\n    };\n    FilterManager.prototype.isColumnFilterPresent = function () {\n        return this.activeColumnFilters.length > 0;\n    };\n    FilterManager.prototype.isAggregateFilterPresent = function () {\n        return !!this.activeAggregateFilters.length;\n    };\n    FilterManager.prototype.isExternalFilterPresent = function () {\n        return this.externalFilterPresent;\n    };\n    FilterManager.prototype.doAggregateFiltersPass = function (node, filterToSkip) {\n        return this.doColumnFiltersPass(node, filterToSkip, true);\n    };\n    // called by:\n    // 1) onFilterChanged()\n    // 2) onNewRowsLoaded()\n    FilterManager.prototype.updateActiveFilters = function () {\n        var _this = this;\n        this.activeColumnFilters.length = 0;\n        this.activeAggregateFilters.length = 0;\n        var isFilterActive = function (filter) {\n            if (!filter) {\n                return false;\n            } // this never happens, including to avoid compile error\n            if (!filter.isFilterActive) {\n                console.warn('AG Grid: Filter is missing isFilterActive() method');\n                return false;\n            }\n            return filter.isFilterActive();\n        };\n        var groupFilterEnabled = !!this.gridOptionsService.getGroupAggFiltering();\n        var isAggFilter = function (column) {\n            var isSecondary = !column.isPrimary();\n            // the only filters that can appear on secondary columns are groupAgg filters\n            if (isSecondary) {\n                return true;\n            }\n            var isShowingPrimaryColumns = !_this.columnModel.isPivotActive();\n            var isValueActive = column.isValueActive();\n            // primary columns are only ever groupAgg filters if a) value is active and b) showing primary columns\n            if (!isValueActive || !isShowingPrimaryColumns) {\n                return false;\n            }\n            // from here on we know: isPrimary=true, isValueActive=true, isShowingPrimaryColumns=true\n            if (_this.columnModel.isPivotMode()) {\n                // primary column is pretending to be a pivot column, ie pivotMode=true, but we are\n                // still showing primary columns\n                return true;\n            }\n            // we are not pivoting, so we groupFilter when it's an agg column\n            return groupFilterEnabled;\n        };\n        this.allColumnFilters.forEach(function (filterWrapper) {\n            if (filterWrapper.filterPromise.resolveNow(false, isFilterActive)) {\n                var filterComp = filterWrapper.filterPromise.resolveNow(null, function (filter) { return filter; });\n                if (isAggFilter(filterWrapper.column)) {\n                    _this.activeAggregateFilters.push(filterComp);\n                }\n                else {\n                    _this.activeColumnFilters.push(filterComp);\n                }\n            }\n        });\n    };\n    FilterManager.prototype.updateFilterFlagInColumns = function (source, additionalEventAttributes) {\n        this.allColumnFilters.forEach(function (filterWrapper) {\n            var isFilterActive = filterWrapper.filterPromise.resolveNow(false, function (filter) { return filter.isFilterActive(); });\n            filterWrapper.column.setFilterActive(isFilterActive, source, additionalEventAttributes);\n        });\n    };\n    FilterManager.prototype.isAnyFilterPresent = function () {\n        return this.isQuickFilterPresent() || this.isColumnFilterPresent() || this.isAggregateFilterPresent() || this.isExternalFilterPresent();\n    };\n    FilterManager.prototype.doColumnFiltersPass = function (node, filterToSkip, targetAggregates) {\n        var data = node.data, aggData = node.aggData;\n        var targetedFilters = targetAggregates ? this.activeAggregateFilters : this.activeColumnFilters;\n        var targetedData = targetAggregates ? aggData : data;\n        for (var i = 0; i < targetedFilters.length; i++) {\n            var filter = targetedFilters[i];\n            if (filter == null || filter === filterToSkip) {\n                continue;\n            }\n            if (typeof filter.doesFilterPass !== 'function') {\n                // because users can do custom filters, give nice error message\n                throw new Error('Filter is missing method doesFilterPass');\n            }\n            if (!filter.doesFilterPass({ node: node, data: targetedData })) {\n                return false;\n            }\n        }\n        return true;\n    };\n    FilterManager.prototype.parseQuickFilter = function (newFilter) {\n        if (!exists(newFilter)) {\n            return null;\n        }\n        if (!this.gridOptionsService.isRowModelType('clientSide')) {\n            console.warn('AG Grid - Quick filtering only works with the Client-Side Row Model');\n            return null;\n        }\n        return newFilter.toUpperCase();\n    };\n    FilterManager.prototype.setQuickFilter = function (newFilter) {\n        if (newFilter != null && typeof newFilter !== 'string') {\n            console.warn(\"AG Grid - setQuickFilter() only supports string inputs, received: \" + typeof newFilter);\n            return;\n        }\n        var parsedFilter = this.parseQuickFilter(newFilter);\n        if (this.quickFilter !== parsedFilter) {\n            this.quickFilter = parsedFilter;\n            this.setQuickFilterParts();\n            this.onFilterChanged();\n        }\n    };\n    FilterManager.prototype.resetQuickFilterCache = function () {\n        this.rowModel.forEachNode(function (node) { return node.quickFilterAggregateText = null; });\n    };\n    FilterManager.prototype.onExcludeHiddenColumnsFromQuickFilterChanged = function () {\n        this.columnModel.refreshQuickFilterColumns();\n        this.resetQuickFilterCache();\n        if (this.isQuickFilterPresent()) {\n            this.onFilterChanged();\n        }\n    };\n    FilterManager.prototype.refreshFiltersForAggregations = function () {\n        var isAggFiltering = this.gridOptionsService.getGroupAggFiltering();\n        if (isAggFiltering) {\n            this.onFilterChanged();\n        }\n    };\n    // sometimes (especially in React) the filter can call onFilterChanged when we are in the middle\n    // of a render cycle. this would be bad, so we wait for render cycle to complete when this happens.\n    // this happens in react when we change React State in the grid (eg setting RowCtrl's in RowContainer)\n    // which results in React State getting applied in the main application, triggering a useEffect() to\n    // be kicked off adn then the application calling the grid's API. in AG-6554, the custom filter was\n    // getting it's useEffect() triggered in this way.\n    FilterManager.prototype.callOnFilterChangedOutsideRenderCycle = function (params) {\n        var _this = this;\n        if (params === void 0) { params = {}; }\n        var action = function () { return _this.onFilterChanged(params); };\n        if (this.rowRenderer.isRefreshInProgress()) {\n            setTimeout(action, 0);\n        }\n        else {\n            action();\n        }\n    };\n    FilterManager.prototype.onFilterChanged = function (params) {\n        if (params === void 0) { params = {}; }\n        var filterInstance = params.filterInstance, additionalEventAttributes = params.additionalEventAttributes, columns = params.columns;\n        this.updateDependantFilters();\n        this.updateActiveFilters();\n        this.updateFilterFlagInColumns('filterChanged', additionalEventAttributes);\n        this.externalFilterPresent = this.isExternalFilterPresentCallback();\n        this.allColumnFilters.forEach(function (filterWrapper) {\n            if (!filterWrapper.filterPromise) {\n                return;\n            }\n            filterWrapper.filterPromise.then(function (filter) {\n                if (filter && filter !== filterInstance && filter.onAnyFilterChanged) {\n                    filter.onAnyFilterChanged();\n                }\n            });\n        });\n        var filterChangedEvent = {\n            type: Events.EVENT_FILTER_CHANGED,\n            columns: columns || [],\n        };\n        if (additionalEventAttributes) {\n            mergeDeep(filterChangedEvent, additionalEventAttributes);\n        }\n        // because internal events are not async in ag-grid, when the dispatchEvent\n        // method comes back, we know all listeners have finished executing.\n        this.processingFilterChange = true;\n        this.eventService.dispatchEvent(filterChangedEvent);\n        this.processingFilterChange = false;\n    };\n    FilterManager.prototype.isSuppressFlashingCellsBecauseFiltering = function () {\n        // if user has elected to always flash cell changes, then always return false, otherwise we suppress flashing\n        // changes when filtering\n        return !this.allowShowChangeAfterFilter && this.processingFilterChange;\n    };\n    FilterManager.prototype.isQuickFilterPresent = function () {\n        return this.quickFilter !== null;\n    };\n    FilterManager.prototype.doesRowPassOtherFilters = function (filterToSkip, node) {\n        return this.doesRowPassFilter({ rowNode: node, filterInstanceToSkip: filterToSkip });\n    };\n    FilterManager.prototype.doesRowPassQuickFilterNoCache = function (node, filterPart) {\n        var _this = this;\n        var columns = this.columnModel.getAllColumnsForQuickFilter();\n        return columns.some(function (column) {\n            var part = _this.getQuickFilterTextForColumn(column, node);\n            return exists(part) && part.indexOf(filterPart) >= 0;\n        });\n    };\n    FilterManager.prototype.doesRowPassQuickFilterCache = function (node, filterPart) {\n        if (!node.quickFilterAggregateText) {\n            this.aggregateRowForQuickFilter(node);\n        }\n        return node.quickFilterAggregateText.indexOf(filterPart) >= 0;\n    };\n    FilterManager.prototype.doesRowPassQuickFilter = function (node) {\n        var _this = this;\n        var usingCache = this.gridOptionsService.is('cacheQuickFilter');\n        // each part must pass, if any fails, then the whole filter fails\n        return this.quickFilterParts.every(function (part) {\n            return usingCache ? _this.doesRowPassQuickFilterCache(node, part) : _this.doesRowPassQuickFilterNoCache(node, part);\n        });\n    };\n    FilterManager.prototype.doesRowPassAggregateFilters = function (params) {\n        if (this.isAggregateFilterPresent() && !this.doAggregateFiltersPass(params.rowNode, params.filterInstanceToSkip)) {\n            return false;\n        }\n        // got this far, all filters pass\n        return true;\n    };\n    FilterManager.prototype.doesRowPassFilter = function (params) {\n        // the row must pass ALL of the filters, so if any of them fail,\n        // we return true. that means if a row passes the quick filter,\n        // but fails the column filter, it fails overall\n        // first up, check quick filter\n        if (this.isQuickFilterPresent() && !this.doesRowPassQuickFilter(params.rowNode)) {\n            return false;\n        }\n        // secondly, give the client a chance to reject this row\n        if (this.isExternalFilterPresent() && !this.doesExternalFilterPass(params.rowNode)) {\n            return false;\n        }\n        // lastly, check column filter\n        if (this.isColumnFilterPresent() && !this.doColumnFiltersPass(params.rowNode, params.filterInstanceToSkip)) {\n            return false;\n        }\n        // got this far, all filters pass\n        return true;\n    };\n    FilterManager.prototype.getQuickFilterTextForColumn = function (column, node) {\n        var value = this.valueService.getValue(column, node, true);\n        var colDef = column.getColDef();\n        if (colDef.getQuickFilterText) {\n            var params = {\n                value: value,\n                node: node,\n                data: node.data,\n                column: column,\n                colDef: colDef,\n                api: this.gridOptionsService.api,\n                columnApi: this.gridOptionsService.columnApi,\n                context: this.gridOptionsService.context\n            };\n            value = colDef.getQuickFilterText(params);\n        }\n        return exists(value) ? value.toString().toUpperCase() : null;\n    };\n    FilterManager.prototype.aggregateRowForQuickFilter = function (node) {\n        var _this = this;\n        var stringParts = [];\n        var columns = this.columnModel.getAllColumnsForQuickFilter();\n        columns.forEach(function (column) {\n            var part = _this.getQuickFilterTextForColumn(column, node);\n            if (exists(part)) {\n                stringParts.push(part);\n            }\n        });\n        node.quickFilterAggregateText = stringParts.join(FilterManager_1.QUICK_FILTER_SEPARATOR);\n    };\n    FilterManager.prototype.onNewRowsLoaded = function (source) {\n        this.allColumnFilters.forEach(function (filterWrapper) {\n            filterWrapper.filterPromise.then(function (filter) {\n                if (filter.onNewRowsLoaded) {\n                    filter.onNewRowsLoaded();\n                }\n            });\n        });\n        this.updateFilterFlagInColumns(source, { afterDataChange: true });\n        this.updateActiveFilters();\n    };\n    FilterManager.prototype.createValueGetter = function (column) {\n        var _this = this;\n        return function (_a) {\n            var node = _a.node;\n            return _this.valueService.getValue(column, node, true);\n        };\n    };\n    FilterManager.prototype.getFilterComponent = function (column, source, createIfDoesNotExist) {\n        var _a;\n        if (createIfDoesNotExist === void 0) { createIfDoesNotExist = true; }\n        if (createIfDoesNotExist) {\n            return ((_a = this.getOrCreateFilterWrapper(column, source)) === null || _a === void 0 ? void 0 : _a.filterPromise) || null;\n        }\n        var filterWrapper = this.cachedFilter(column);\n        return filterWrapper ? filterWrapper.filterPromise : null;\n    };\n    FilterManager.prototype.isFilterActive = function (column) {\n        var filterWrapper = this.cachedFilter(column);\n        return !!filterWrapper && filterWrapper.filterPromise.resolveNow(false, function (filter) { return filter.isFilterActive(); });\n    };\n    FilterManager.prototype.getOrCreateFilterWrapper = function (column, source) {\n        if (!column.isFilterAllowed()) {\n            return null;\n        }\n        var filterWrapper = this.cachedFilter(column);\n        if (!filterWrapper) {\n            filterWrapper = this.createFilterWrapper(column, source);\n            this.allColumnFilters.set(column.getColId(), filterWrapper);\n        }\n        else if (source !== 'NO_UI') {\n            this.putIntoGui(filterWrapper, source);\n        }\n        return filterWrapper;\n    };\n    FilterManager.prototype.cachedFilter = function (column) {\n        return this.allColumnFilters.get(column.getColId());\n    };\n    FilterManager.prototype.createFilterInstance = function (column) {\n        var _this = this;\n        var defaultFilter = ModuleRegistry.isRegistered(ModuleNames.SetFilterModule) ? 'agSetColumnFilter' : 'agTextColumnFilter';\n        var colDef = column.getColDef();\n        var filterInstance;\n        var params = __assign$b(__assign$b({}, this.createFilterParams(column, colDef)), { filterModifiedCallback: function () {\n                var event = {\n                    type: Events.EVENT_FILTER_MODIFIED,\n                    column: column,\n                    filterInstance: filterInstance\n                };\n                _this.eventService.dispatchEvent(event);\n            }, filterChangedCallback: function (additionalEventAttributes) {\n                var params = { filterInstance: filterInstance, additionalEventAttributes: additionalEventAttributes, columns: [column] };\n                _this.callOnFilterChangedOutsideRenderCycle(params);\n            }, doesRowPassOtherFilter: function (node) { return _this.doesRowPassOtherFilters(filterInstance, node); } });\n        var compDetails = this.userComponentFactory.getFilterDetails(colDef, params, defaultFilter);\n        if (!compDetails) {\n            return null;\n        }\n        var componentPromise = compDetails.newAgStackInstance();\n        if (componentPromise) {\n            componentPromise.then(function (r) { return filterInstance = r; });\n        }\n        return componentPromise;\n    };\n    FilterManager.prototype.createFilterParams = function (column, colDef) {\n        var params = {\n            column: column,\n            colDef: cloneObject(colDef),\n            rowModel: this.rowModel,\n            filterChangedCallback: function () { },\n            filterModifiedCallback: function () { },\n            valueGetter: this.createValueGetter(column),\n            doesRowPassOtherFilter: function () { return true; },\n            api: this.gridOptionsService.api,\n            columnApi: this.gridOptionsService.columnApi,\n            context: this.gridOptionsService.context,\n        };\n        return params;\n    };\n    FilterManager.prototype.createFilterWrapper = function (column, source) {\n        var filterWrapper = {\n            column: column,\n            filterPromise: null,\n            compiledElement: null,\n            guiPromise: AgPromise.resolve(null)\n        };\n        filterWrapper.filterPromise = this.createFilterInstance(column);\n        if (filterWrapper.filterPromise) {\n            this.putIntoGui(filterWrapper, source);\n        }\n        return filterWrapper;\n    };\n    FilterManager.prototype.putIntoGui = function (filterWrapper, source) {\n        var _this = this;\n        var eFilterGui = document.createElement('div');\n        eFilterGui.className = 'ag-filter';\n        filterWrapper.guiPromise = new AgPromise(function (resolve) {\n            filterWrapper.filterPromise.then(function (filter) {\n                var guiFromFilter = filter.getGui();\n                if (!exists(guiFromFilter)) {\n                    console.warn(\"AG Grid: getGui method from filter returned \" + guiFromFilter + \", it should be a DOM element or an HTML template string.\");\n                }\n                // for backwards compatibility with Angular 1 - we\n                // used to allow providing back HTML from getGui().\n                // once we move away from supporting Angular 1\n                // directly, we can change this.\n                if (typeof guiFromFilter === 'string') {\n                    guiFromFilter = loadTemplate(guiFromFilter);\n                }\n                eFilterGui.appendChild(guiFromFilter);\n                resolve(eFilterGui);\n                var event = {\n                    type: Events.EVENT_FILTER_OPENED,\n                    column: filterWrapper.column,\n                    source: source,\n                    eGui: eFilterGui\n                };\n                _this.eventService.dispatchEvent(event);\n            });\n        });\n    };\n    FilterManager.prototype.onColumnsChanged = function () {\n        var _this = this;\n        var columns = [];\n        this.allColumnFilters.forEach(function (wrapper, colId) {\n            var currentColumn;\n            if (wrapper.column.isPrimary()) {\n                currentColumn = _this.columnModel.getPrimaryColumn(colId);\n            }\n            else {\n                currentColumn = _this.columnModel.getGridColumn(colId);\n            }\n            if (currentColumn) {\n                return;\n            }\n            columns.push(wrapper.column);\n            _this.disposeFilterWrapper(wrapper, 'columnChanged');\n        });\n        if (columns.length > 0) {\n            this.onFilterChanged({ columns: columns });\n        }\n        else {\n            // onFilterChanged does this already\n            this.updateDependantFilters();\n        }\n    };\n    FilterManager.prototype.updateDependantFilters = function () {\n        var _this = this;\n        // Group column filters can be dependant on underlying column filters, but don't normally get created until they're used for the first time.\n        // Instead, create them by default when any filter changes.\n        var groupColumns = this.columnModel.getGroupAutoColumns();\n        groupColumns === null || groupColumns === void 0 ? void 0 : groupColumns.forEach(function (groupColumn) {\n            if (groupColumn.getColDef().filter === 'agGroupColumnFilter') {\n                _this.getOrCreateFilterWrapper(groupColumn, 'NO_UI');\n            }\n        });\n    };\n    // for group filters, can change dynamically whether they are allowed or not\n    FilterManager.prototype.isFilterAllowed = function (column) {\n        var _a, _b;\n        var isFilterAllowed = column.isFilterAllowed();\n        if (!isFilterAllowed) {\n            return false;\n        }\n        var filterWrapper = this.allColumnFilters.get(column.getColId());\n        return (_b = (_a = filterWrapper === null || filterWrapper === void 0 ? void 0 : filterWrapper.filterPromise) === null || _a === void 0 ? void 0 : _a.resolveNow(true, \n        // defer to filter component isFilterAllowed if it exists\n        function (filter) {\n            var _a, _b;\n            return (typeof ((_a = filter) === null || _a === void 0 ? void 0 : _a.isFilterAllowed) === 'function')\n                ? (_b = filter) === null || _b === void 0 ? void 0 : _b.isFilterAllowed() : true;\n        })) !== null && _b !== void 0 ? _b : true;\n    };\n    FilterManager.prototype.getFloatingFilterCompDetails = function (column, showParentFilter) {\n        var _this = this;\n        var colDef = column.getColDef();\n        var filterParams = this.createFilterParams(column, colDef);\n        var finalFilterParams = this.userComponentFactory.mergeParamsWithApplicationProvidedParams(colDef, FilterComponent, filterParams);\n        var defaultFloatingFilterType = this.userComponentFactory.getDefaultFloatingFilterType(colDef);\n        if (defaultFloatingFilterType == null) {\n            defaultFloatingFilterType = 'agReadOnlyFloatingFilter';\n        }\n        var parentFilterInstance = function (callback) {\n            var filterComponent = _this.getFilterComponent(column, 'NO_UI');\n            if (filterComponent == null) {\n                return;\n            }\n            filterComponent.then(function (instance) {\n                callback(unwrapUserComp(instance));\n            });\n        };\n        var params = {\n            column: column,\n            filterParams: finalFilterParams,\n            currentParentModel: function () { return _this.getCurrentFloatingFilterParentModel(column); },\n            parentFilterInstance: parentFilterInstance,\n            showParentFilter: showParentFilter,\n            suppressFilterButton: false // This one might be overridden from the colDef\n        };\n        return this.userComponentFactory.getFloatingFilterCompDetails(colDef, params, defaultFloatingFilterType);\n    };\n    FilterManager.prototype.getCurrentFloatingFilterParentModel = function (column) {\n        var filterComponent = this.getFilterComponent(column, 'NO_UI', false);\n        return filterComponent ? filterComponent.resolveNow(null, function (filter) { return filter && filter.getModel(); }) : null;\n    };\n    // destroys the filter, so it no longer takes part\n    /**\n     * @param source if not calling this from the API, will need to add a new value\n     */\n    FilterManager.prototype.destroyFilter = function (column, source) {\n        if (source === void 0) { source = 'api'; }\n        var filterWrapper = this.allColumnFilters.get(column.getColId());\n        if (filterWrapper) {\n            this.disposeFilterWrapper(filterWrapper, source);\n            this.onFilterChanged({ columns: [column] });\n        }\n    };\n    FilterManager.prototype.disposeFilterWrapper = function (filterWrapper, source) {\n        var _this = this;\n        filterWrapper.filterPromise.then(function (filter) {\n            (filter.setModel(null) || AgPromise.resolve()).then(function () {\n                _this.getContext().destroyBean(filter);\n                filterWrapper.column.setFilterActive(false, 'filterDestroyed');\n                _this.allColumnFilters.delete(filterWrapper.column.getColId());\n                var event = {\n                    type: Events.EVENT_FILTER_DESTROYED,\n                    source: source,\n                    column: filterWrapper.column,\n                };\n                _this.eventService.dispatchEvent(event);\n            });\n        });\n    };\n    FilterManager.prototype.destroy = function () {\n        var _this = this;\n        _super.prototype.destroy.call(this);\n        this.allColumnFilters.forEach(function (filterWrapper) { return _this.disposeFilterWrapper(filterWrapper, 'gridDestroyed'); });\n    };\n    var FilterManager_1;\n    FilterManager.QUICK_FILTER_SEPARATOR = '\\n';\n    __decorate$1S([\n        Autowired('valueService')\n    ], FilterManager.prototype, \"valueService\", void 0);\n    __decorate$1S([\n        Autowired('columnModel')\n    ], FilterManager.prototype, \"columnModel\", void 0);\n    __decorate$1S([\n        Autowired('rowModel')\n    ], FilterManager.prototype, \"rowModel\", void 0);\n    __decorate$1S([\n        Autowired('userComponentFactory')\n    ], FilterManager.prototype, \"userComponentFactory\", void 0);\n    __decorate$1S([\n        Autowired('rowRenderer')\n    ], FilterManager.prototype, \"rowRenderer\", void 0);\n    __decorate$1S([\n        PostConstruct\n    ], FilterManager.prototype, \"init\", null);\n    FilterManager = FilterManager_1 = __decorate$1S([\n        Bean('filterManager')\n    ], FilterManager);\n    return FilterManager;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$1$ = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar AbstractHeaderCellComp = /** @class */ (function (_super) {\n    __extends$1$(AbstractHeaderCellComp, _super);\n    function AbstractHeaderCellComp(template, ctrl) {\n        var _this = _super.call(this, template) || this;\n        _this.ctrl = ctrl;\n        return _this;\n    }\n    AbstractHeaderCellComp.prototype.getCtrl = function () {\n        return this.ctrl;\n    };\n    return AbstractHeaderCellComp;\n}(Component));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$1_ = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$1R = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar HeaderFilterCellComp = /** @class */ (function (_super) {\n    __extends$1_(HeaderFilterCellComp, _super);\n    function HeaderFilterCellComp(ctrl) {\n        return _super.call(this, HeaderFilterCellComp.TEMPLATE, ctrl) || this;\n    }\n    HeaderFilterCellComp.prototype.postConstruct = function () {\n        var _this = this;\n        var eGui = this.getGui();\n        var compProxy = {\n            addOrRemoveCssClass: function (cssClassName, on) { return _this.addOrRemoveCssClass(cssClassName, on); },\n            addOrRemoveBodyCssClass: function (cssClassName, on) { return _this.eFloatingFilterBody.classList.toggle(cssClassName, on); },\n            setButtonWrapperDisplayed: function (displayed) { return setDisplayed(_this.eButtonWrapper, displayed); },\n            setCompDetails: function (compDetails) { return _this.setCompDetails(compDetails); },\n            getFloatingFilterComp: function () { return _this.compPromise; },\n            setWidth: function (width) { return eGui.style.width = width; },\n            setMenuIcon: function (eIcon) { return _this.eButtonShowMainFilter.appendChild(eIcon); }\n        };\n        this.ctrl.setComp(compProxy, eGui, this.eButtonShowMainFilter, this.eFloatingFilterBody);\n    };\n    HeaderFilterCellComp.prototype.setCompDetails = function (compDetails) {\n        var _this = this;\n        // because we are providing defaultFloatingFilterType, we know it will never be undefined;\n        this.compPromise = compDetails.newAgStackInstance();\n        this.compPromise.then(function (comp) { return _this.afterCompCreated(comp); });\n    };\n    HeaderFilterCellComp.prototype.afterCompCreated = function (comp) {\n        var _this = this;\n        if (!comp) {\n            return;\n        }\n        this.addDestroyFunc(function () { return _this.context.destroyBean(comp); });\n        if (!this.isAlive()) {\n            return;\n        }\n        this.eFloatingFilterBody.appendChild(comp.getGui());\n        if (comp.afterGuiAttached) {\n            comp.afterGuiAttached();\n        }\n    };\n    HeaderFilterCellComp.TEMPLATE = \"<div class=\\\"ag-header-cell ag-floating-filter\\\" role=\\\"gridcell\\\" tabindex=\\\"-1\\\">\\n            <div ref=\\\"eFloatingFilterBody\\\" role=\\\"presentation\\\"></div>\\n            <div class=\\\"ag-floating-filter-button ag-hidden\\\" ref=\\\"eButtonWrapper\\\" role=\\\"presentation\\\">\\n                <button type=\\\"button\\\" aria-label=\\\"Open Filter Menu\\\" class=\\\"ag-floating-filter-button-button\\\" ref=\\\"eButtonShowMainFilter\\\" tabindex=\\\"-1\\\"></button>\\n            </div>\\n        </div>\";\n    __decorate$1R([\n        RefSelector('eFloatingFilterBody')\n    ], HeaderFilterCellComp.prototype, \"eFloatingFilterBody\", void 0);\n    __decorate$1R([\n        RefSelector('eButtonWrapper')\n    ], HeaderFilterCellComp.prototype, \"eButtonWrapper\", void 0);\n    __decorate$1R([\n        RefSelector('eButtonShowMainFilter')\n    ], HeaderFilterCellComp.prototype, \"eButtonShowMainFilter\", void 0);\n    __decorate$1R([\n        PostConstruct\n    ], HeaderFilterCellComp.prototype, \"postConstruct\", null);\n    return HeaderFilterCellComp;\n}(AbstractHeaderCellComp));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$1Z = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$1Q = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar LayoutCssClasses;\n(function (LayoutCssClasses) {\n    LayoutCssClasses[\"AUTO_HEIGHT\"] = \"ag-layout-auto-height\";\n    LayoutCssClasses[\"NORMAL\"] = \"ag-layout-normal\";\n    LayoutCssClasses[\"PRINT\"] = \"ag-layout-print\";\n})(LayoutCssClasses || (LayoutCssClasses = {}));\nvar LayoutFeature = /** @class */ (function (_super) {\n    __extends$1Z(LayoutFeature, _super);\n    function LayoutFeature(view) {\n        var _this = _super.call(this) || this;\n        _this.view = view;\n        return _this;\n    }\n    LayoutFeature.prototype.postConstruct = function () {\n        this.addManagedPropertyListener('domLayout', this.updateLayoutClasses.bind(this));\n        this.updateLayoutClasses();\n    };\n    LayoutFeature.prototype.updateLayoutClasses = function () {\n        var domLayout = this.getDomLayout();\n        var params = {\n            autoHeight: domLayout === 'autoHeight',\n            normal: domLayout === 'normal',\n            print: domLayout === 'print'\n        };\n        var cssClass = params.autoHeight ? LayoutCssClasses.AUTO_HEIGHT :\n            params.print ? LayoutCssClasses.PRINT : LayoutCssClasses.NORMAL;\n        this.view.updateLayoutClasses(cssClass, params);\n    };\n    // returns either 'print', 'autoHeight' or 'normal' (normal is the default)\n    LayoutFeature.prototype.getDomLayout = function () {\n        var _a;\n        var domLayout = (_a = this.gridOptionsService.get('domLayout')) !== null && _a !== void 0 ? _a : 'normal';\n        var validLayouts = ['normal', 'print', 'autoHeight'];\n        if (validLayouts.indexOf(domLayout) === -1) {\n            doOnce(function () {\n                return console.warn(\"AG Grid: \" + domLayout + \" is not valid for DOM Layout, valid values are 'normal', 'autoHeight', 'print'.\");\n            }, 'warn about dom layout values');\n            return 'normal';\n        }\n        return domLayout;\n    };\n    __decorate$1Q([\n        PostConstruct\n    ], LayoutFeature.prototype, \"postConstruct\", null);\n    return LayoutFeature;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$1Y = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __assign$a = (undefined && undefined.__assign) || function () {\n    __assign$a = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign$a.apply(this, arguments);\n};\nvar __decorate$1P = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar GridBodyScrollFeature = /** @class */ (function (_super) {\n    __extends$1Y(GridBodyScrollFeature, _super);\n    function GridBodyScrollFeature(eBodyViewport) {\n        var _this = _super.call(this) || this;\n        _this.scrollLeft = -1;\n        _this.nextScrollTop = -1;\n        _this.scrollTop = -1;\n        _this.eBodyViewport = eBodyViewport;\n        _this.resetLastHScrollDebounced = debounce(function () { return _this.eLastHScroll = null; }, 500);\n        _this.resetLastVScrollDebounced = debounce(function () { return _this.eLastVScroll = null; }, 500);\n        return _this;\n    }\n    GridBodyScrollFeature.prototype.postConstruct = function () {\n        var _this = this;\n        this.enableRtl = this.gridOptionsService.is('enableRtl');\n        this.addManagedListener(this.eventService, Events.EVENT_DISPLAYED_COLUMNS_WIDTH_CHANGED, this.onDisplayedColumnsWidthChanged.bind(this));\n        this.ctrlsService.whenReady(function (p) {\n            _this.centerRowContainerCtrl = p.centerRowContainerCtrl;\n            _this.onDisplayedColumnsWidthChanged();\n            _this.addScrollListener();\n        });\n    };\n    GridBodyScrollFeature.prototype.addScrollListener = function () {\n        var fakeHScroll = this.ctrlsService.getFakeHScrollComp();\n        var fakeVScroll = this.ctrlsService.getFakeVScrollComp();\n        this.addManagedListener(this.centerRowContainerCtrl.getViewportElement(), 'scroll', this.onHScroll.bind(this));\n        this.addManagedListener(fakeHScroll.getViewport(), 'scroll', this.onFakeHScroll.bind(this));\n        var isDebounce = this.gridOptionsService.is('debounceVerticalScrollbar');\n        var onVScroll = isDebounce ?\n            debounce(this.onVScroll.bind(this), 100) : this.onVScroll.bind(this);\n        var onFakeVScroll = isDebounce ?\n            debounce(this.onFakeVScroll.bind(this), 100) : this.onFakeVScroll.bind(this);\n        this.addManagedListener(this.eBodyViewport, 'scroll', onVScroll);\n        this.addManagedListener(fakeVScroll.getViewport(), 'scroll', onFakeVScroll);\n    };\n    GridBodyScrollFeature.prototype.onDisplayedColumnsWidthChanged = function () {\n        if (this.enableRtl) {\n            // because RTL is all backwards, a change in the width of the row\n            // can cause a change in the scroll position, without a scroll event,\n            // because the scroll position in RTL is a function that depends on\n            // the width. to be convinced of this, take out this line, enable RTL,\n            // scroll all the way to the left and then resize a column\n            this.horizontallyScrollHeaderCenterAndFloatingCenter();\n        }\n    };\n    GridBodyScrollFeature.prototype.horizontallyScrollHeaderCenterAndFloatingCenter = function (scrollLeft) {\n        // when doing RTL, this method gets called once prematurely\n        var notYetInitialised = this.centerRowContainerCtrl == null;\n        if (notYetInitialised) {\n            return;\n        }\n        if (scrollLeft === undefined) {\n            scrollLeft = this.centerRowContainerCtrl.getCenterViewportScrollLeft();\n        }\n        var offset = this.enableRtl ? scrollLeft : -scrollLeft;\n        var topCenterContainer = this.ctrlsService.getTopCenterRowContainerCtrl();\n        var stickyTopCenterContainer = this.ctrlsService.getStickyTopCenterRowContainerCtrl();\n        var bottomCenterContainer = this.ctrlsService.getBottomCenterRowContainerCtrl();\n        var fakeHScroll = this.ctrlsService.getFakeHScrollComp();\n        var centerHeaderContainer = this.ctrlsService.getHeaderRowContainerCtrl();\n        centerHeaderContainer.setHorizontalScroll(-offset);\n        bottomCenterContainer.setContainerTranslateX(offset);\n        topCenterContainer.setContainerTranslateX(offset);\n        stickyTopCenterContainer.setContainerTranslateX(offset);\n        var centerViewport = this.centerRowContainerCtrl.getViewportElement();\n        var isCenterViewportLastHorizontal = this.eLastHScroll === centerViewport;\n        var partner = isCenterViewportLastHorizontal ?\n            fakeHScroll.getViewport() :\n            this.centerRowContainerCtrl.getViewportElement();\n        setScrollLeft(partner, Math.abs(scrollLeft), this.enableRtl);\n    };\n    GridBodyScrollFeature.prototype.isControllingHScroll = function (eDiv) {\n        if (!this.eLastHScroll) {\n            this.eLastHScroll = eDiv;\n            return true;\n        }\n        return eDiv === this.eLastHScroll;\n    };\n    GridBodyScrollFeature.prototype.isControllingVScroll = function (eDiv) {\n        if (!this.eLastVScroll) {\n            this.eLastVScroll = eDiv;\n            return true;\n        }\n        return eDiv === this.eLastVScroll;\n    };\n    GridBodyScrollFeature.prototype.onFakeHScroll = function () {\n        var fakeHScrollViewport = this.ctrlsService.getFakeHScrollComp().getViewport();\n        if (!this.isControllingHScroll(fakeHScrollViewport)) {\n            return;\n        }\n        this.onHScrollCommon(fakeHScrollViewport);\n    };\n    GridBodyScrollFeature.prototype.onHScroll = function () {\n        var centerContainerViewport = this.centerRowContainerCtrl.getViewportElement();\n        if (!this.isControllingHScroll(centerContainerViewport)) {\n            return;\n        }\n        this.onHScrollCommon(centerContainerViewport);\n    };\n    GridBodyScrollFeature.prototype.onHScrollCommon = function (eSource) {\n        var centerContainerViewport = this.centerRowContainerCtrl.getViewportElement();\n        var scrollLeft = centerContainerViewport.scrollLeft;\n        if (this.shouldBlockScrollUpdate('horizontal', scrollLeft, true)) {\n            return;\n        }\n        // we do Math.round() rather than Math.floor(), to mirror how scroll values are applied.\n        // eg if a scale is applied (ie user has zoomed the browser), then applying scroll=200\n        // could result in 199.88, which then floor(199.88) = 199, however round(199.88) = 200.\n        // initially Math.floor() was used, however this caused (almost) infinite loop with aligned grids,\n        // as the scroll would move 1px at at time bouncing from one grid to the next (eg one grid would cause\n        // scroll to 200px, the next to 199px, then the first back to 198px and so on).\n        this.doHorizontalScroll(Math.round(getScrollLeft(eSource, this.enableRtl)));\n        this.resetLastHScrollDebounced();\n    };\n    GridBodyScrollFeature.prototype.onFakeVScroll = function () {\n        var fakeVScrollViewport = this.ctrlsService.getFakeVScrollComp().getViewport();\n        if (!this.isControllingVScroll(fakeVScrollViewport)) {\n            return;\n        }\n        this.onVScrollCommon(fakeVScrollViewport);\n    };\n    GridBodyScrollFeature.prototype.onVScroll = function () {\n        if (!this.isControllingVScroll(this.eBodyViewport)) {\n            return;\n        }\n        this.onVScrollCommon(this.eBodyViewport);\n    };\n    GridBodyScrollFeature.prototype.onVScrollCommon = function (eSource) {\n        var scrollTop = eSource.scrollTop;\n        if (this.shouldBlockScrollUpdate('vertical', scrollTop, true)) {\n            return;\n        }\n        this.animationFrameService.setScrollTop(scrollTop);\n        this.nextScrollTop = scrollTop;\n        if (eSource === this.eBodyViewport) {\n            var fakeVScrollViewport = this.ctrlsService.getFakeVScrollComp().getViewport();\n            fakeVScrollViewport.scrollTop = scrollTop;\n        }\n        else {\n            this.eBodyViewport.scrollTop = scrollTop;\n        }\n        // the `scrollGridIfNeeded` will recalculate the rows to be rendered by the grid\n        // so it should only be called after `eBodyViewport` has been scrolled to the correct\n        // position, otherwise the `first` and `last` row could be miscalculated.\n        if (this.gridOptionsService.is('suppressAnimationFrame')) {\n            this.scrollGridIfNeeded();\n        }\n        else {\n            this.animationFrameService.schedule();\n        }\n        this.resetLastVScrollDebounced();\n    };\n    GridBodyScrollFeature.prototype.doHorizontalScroll = function (scrollLeft) {\n        var fakeHScrollViewport = this.ctrlsService.getFakeHScrollComp().getViewport();\n        var fakeScrollLeft = getScrollLeft(fakeHScrollViewport, this.enableRtl);\n        if (this.scrollLeft === scrollLeft && scrollLeft === fakeScrollLeft) {\n            return;\n        }\n        this.scrollLeft = scrollLeft;\n        this.fireScrollEvent('horizontal');\n        this.horizontallyScrollHeaderCenterAndFloatingCenter(scrollLeft);\n        this.onHorizontalViewportChanged();\n    };\n    GridBodyScrollFeature.prototype.fireScrollEvent = function (direction) {\n        var _this = this;\n        var bodyScrollEvent = {\n            type: Events.EVENT_BODY_SCROLL,\n            direction: direction,\n            left: this.scrollLeft,\n            top: this.scrollTop\n        };\n        this.eventService.dispatchEvent(bodyScrollEvent);\n        window.clearTimeout(this.scrollTimer);\n        this.scrollTimer = undefined;\n        this.scrollTimer = window.setTimeout(function () {\n            var bodyScrollEndEvent = __assign$a(__assign$a({}, bodyScrollEvent), { type: Events.EVENT_BODY_SCROLL_END });\n            _this.eventService.dispatchEvent(bodyScrollEndEvent);\n        }, 100);\n    };\n    GridBodyScrollFeature.prototype.shouldBlockScrollUpdate = function (direction, scrollTo, touchOnly) {\n        // touch devices allow elastic scroll - which temporally scrolls the panel outside of the viewport\n        // (eg user uses touch to go to the left of the grid, but drags past the left, the rows will actually\n        // scroll past the left until the user releases the mouse). when this happens, we want ignore the scroll,\n        // as otherwise it was causing the rows and header to flicker.\n        if (touchOnly === void 0) { touchOnly = false; }\n        // sometimes when scrolling, we got values that extended the maximum scroll allowed. we used to\n        // ignore these scrolls. problem is the max scroll position could be skipped (eg the previous scroll event\n        // could be 10px before the max position, and then current scroll event could be 20px after the max position).\n        // if we just ignored the last event, we would be setting the scroll to 10px before the max position, when in\n        // actual fact the user has exceeded the max scroll and thus scroll should be set to the max.\n        if (touchOnly && !isIOSUserAgent()) {\n            return false;\n        }\n        if (direction === 'vertical') {\n            return this.shouldBlockVerticalScroll(scrollTo);\n        }\n        return this.shouldBlockHorizontalScroll(scrollTo);\n    };\n    GridBodyScrollFeature.prototype.shouldBlockVerticalScroll = function (scrollTo) {\n        var clientHeight = getInnerHeight(this.eBodyViewport);\n        var scrollHeight = this.eBodyViewport.scrollHeight;\n        if (scrollTo < 0 || (scrollTo + clientHeight > scrollHeight)) {\n            return true;\n        }\n        return false;\n    };\n    GridBodyScrollFeature.prototype.shouldBlockHorizontalScroll = function (scrollTo) {\n        var clientWidth = this.centerRowContainerCtrl.getCenterWidth();\n        var scrollWidth = this.centerRowContainerCtrl.getViewportElement().scrollWidth;\n        if (this.enableRtl && isRtlNegativeScroll()) {\n            if (scrollTo > 0) {\n                return true;\n            }\n        }\n        else if (scrollTo < 0) {\n            return true;\n        }\n        if (Math.abs(scrollTo) + clientWidth > scrollWidth) {\n            return true;\n        }\n        return false;\n    };\n    GridBodyScrollFeature.prototype.redrawRowsAfterScroll = function () {\n        this.fireScrollEvent('vertical');\n    };\n    GridBodyScrollFeature.prototype.onHorizontalViewportChanged = function () {\n        this.centerRowContainerCtrl.onHorizontalViewportChanged();\n    };\n    // this is to cater for AG-3274, where grid is removed from the dom and then inserted back in again.\n    // (which happens with some implementations of tabbing). this can result in horizontal scroll getting\n    // reset back to the left, however no scroll event is fired. so we need to get header to also scroll\n    // back to the left to be kept in sync.\n    // adding and removing the grid from the DOM both resets the scroll position and\n    // triggers a resize event, so notify listeners if the scroll position has changed\n    GridBodyScrollFeature.prototype.checkScrollLeft = function () {\n        if (this.scrollLeft !== this.centerRowContainerCtrl.getCenterViewportScrollLeft()) {\n            this.onHScrollCommon(this.centerRowContainerCtrl.getViewportElement());\n        }\n    };\n    GridBodyScrollFeature.prototype.scrollGridIfNeeded = function () {\n        var frameNeeded = this.scrollTop != this.nextScrollTop;\n        if (frameNeeded) {\n            this.scrollTop = this.nextScrollTop;\n            this.redrawRowsAfterScroll();\n        }\n        return frameNeeded;\n    };\n    // called by scrollHorizontally method and alignedGridsService\n    GridBodyScrollFeature.prototype.setHorizontalScrollPosition = function (hScrollPosition) {\n        var minScrollLeft = 0;\n        var maxScrollLeft = this.centerRowContainerCtrl.getViewportElement().scrollWidth - this.centerRowContainerCtrl.getCenterWidth();\n        if (this.shouldBlockScrollUpdate('horizontal', hScrollPosition)) {\n            if (this.enableRtl && isRtlNegativeScroll()) {\n                hScrollPosition = hScrollPosition > 0 ? 0 : maxScrollLeft;\n            }\n            else {\n                hScrollPosition = Math.min(Math.max(hScrollPosition, minScrollLeft), maxScrollLeft);\n            }\n        }\n        setScrollLeft(this.centerRowContainerCtrl.getViewportElement(), Math.abs(hScrollPosition), this.enableRtl);\n        // we need to manually do the event handling (rather than wait for the event)\n        // for the alignedGridsService, as if we don't, the aligned grid service gets\n        // notified async, and then it's 'consuming' flag doesn't get used right, and\n        // we can end up with an infinite loop\n        this.doHorizontalScroll(hScrollPosition);\n    };\n    GridBodyScrollFeature.prototype.setVerticalScrollPosition = function (vScrollPosition) {\n        this.eBodyViewport.scrollTop = vScrollPosition;\n    };\n    GridBodyScrollFeature.prototype.getVScrollPosition = function () {\n        var result = {\n            top: this.eBodyViewport.scrollTop,\n            bottom: this.eBodyViewport.scrollTop + this.eBodyViewport.offsetHeight\n        };\n        return result;\n    };\n    GridBodyScrollFeature.prototype.getHScrollPosition = function () {\n        return this.centerRowContainerCtrl.getHScrollPosition();\n    };\n    GridBodyScrollFeature.prototype.isHorizontalScrollShowing = function () {\n        return this.centerRowContainerCtrl.isHorizontalScrollShowing();\n    };\n    // called by the headerRootComp and moveColumnController\n    GridBodyScrollFeature.prototype.scrollHorizontally = function (pixels) {\n        var oldScrollPosition = this.centerRowContainerCtrl.getViewportElement().scrollLeft;\n        this.setHorizontalScrollPosition(oldScrollPosition + pixels);\n        return this.centerRowContainerCtrl.getViewportElement().scrollLeft - oldScrollPosition;\n    };\n    // gets called by rowRenderer when new data loaded, as it will want to scroll to the top\n    GridBodyScrollFeature.prototype.scrollToTop = function () {\n        this.eBodyViewport.scrollTop = 0;\n    };\n    // Valid values for position are bottom, middle and top\n    GridBodyScrollFeature.prototype.ensureNodeVisible = function (comparator, position) {\n        if (position === void 0) { position = null; }\n        // look for the node index we want to display\n        var rowCount = this.rowModel.getRowCount();\n        var indexToSelect = -1;\n        // go through all the nodes, find the one we want to show\n        for (var i = 0; i < rowCount; i++) {\n            var node = this.rowModel.getRow(i);\n            if (typeof comparator === 'function') {\n                // Have to assert type here, as type could be TData & Function\n                var predicate = comparator;\n                if (node && predicate(node)) {\n                    indexToSelect = i;\n                    break;\n                }\n            }\n            else {\n                // check object equality against node and data\n                if (comparator === node || comparator === node.data) {\n                    indexToSelect = i;\n                    break;\n                }\n            }\n        }\n        if (indexToSelect >= 0) {\n            this.ensureIndexVisible(indexToSelect, position);\n        }\n    };\n    // Valid values for position are bottom, middle and top\n    // position should be {'top','middle','bottom', or undefined/null}.\n    // if undefined/null, then the grid will to the minimal amount of scrolling,\n    // eg if grid needs to scroll up, it scrolls until row is on top,\n    //    if grid needs to scroll down, it scrolls until row is on bottom,\n    //    if row is already in view, grid does not scroll\n    GridBodyScrollFeature.prototype.ensureIndexVisible = function (index, position) {\n        // if for print or auto height, everything is always visible\n        if (this.gridOptionsService.isDomLayout('print')) {\n            return;\n        }\n        var rowCount = this.paginationProxy.getRowCount();\n        if (typeof index !== 'number' || index < 0 || index >= rowCount) {\n            console.warn('AG Grid: Invalid row index for ensureIndexVisible: ' + index);\n            return;\n        }\n        var isPaging = this.gridOptionsService.is('pagination');\n        var paginationPanelEnabled = isPaging && !this.gridOptionsService.is('suppressPaginationPanel');\n        if (!paginationPanelEnabled) {\n            this.paginationProxy.goToPageWithIndex(index);\n        }\n        var gridBodyCtrl = this.ctrlsService.getGridBodyCtrl();\n        var stickyTopHeight = gridBodyCtrl.getStickyTopHeight();\n        var rowNode = this.paginationProxy.getRow(index);\n        var rowGotShiftedDuringOperation;\n        do {\n            var startingRowTop = rowNode.rowTop;\n            var startingRowHeight = rowNode.rowHeight;\n            var paginationOffset = this.paginationProxy.getPixelOffset();\n            var rowTopPixel = rowNode.rowTop - paginationOffset;\n            var rowBottomPixel = rowTopPixel + rowNode.rowHeight;\n            var scrollPosition = this.getVScrollPosition();\n            var heightOffset = this.heightScaler.getDivStretchOffset();\n            var vScrollTop = scrollPosition.top + heightOffset;\n            var vScrollBottom = scrollPosition.bottom + heightOffset;\n            var viewportHeight = vScrollBottom - vScrollTop;\n            // work out the pixels for top, middle and bottom up front,\n            // make the if/else below easier to read\n            var pxTop = this.heightScaler.getScrollPositionForPixel(rowTopPixel);\n            var pxBottom = this.heightScaler.getScrollPositionForPixel(rowBottomPixel - viewportHeight);\n            // make sure if middle, the row is not outside the top of the grid\n            var pxMiddle = Math.min((pxTop + pxBottom) / 2, rowTopPixel);\n            var rowAboveViewport = (vScrollTop + stickyTopHeight) > rowTopPixel;\n            var rowBelowViewport = vScrollBottom < rowBottomPixel;\n            var newScrollPosition = null;\n            if (position === 'top') {\n                newScrollPosition = pxTop;\n            }\n            else if (position === 'bottom') {\n                newScrollPosition = pxBottom;\n            }\n            else if (position === 'middle') {\n                newScrollPosition = pxMiddle;\n            }\n            else if (rowAboveViewport) {\n                // if row is before, scroll up with row at top\n                newScrollPosition = pxTop - stickyTopHeight;\n            }\n            else if (rowBelowViewport) {\n                // if row is after, scroll down with row at bottom\n                newScrollPosition = pxBottom;\n            }\n            if (newScrollPosition !== null) {\n                this.eBodyViewport.scrollTop = newScrollPosition;\n                this.rowRenderer.redrawAfterScroll();\n            }\n            // the row can get shifted if during the rendering (during rowRenderer.redrawAfterScroll()),\n            // the height of a row changes due to lazy calculation of row heights when using\n            // colDef.autoHeight or gridOptions.getRowHeight.\n            // if row was shifted, then the position we scrolled to is incorrect.\n            rowGotShiftedDuringOperation = (startingRowTop !== rowNode.rowTop)\n                || (startingRowHeight !== rowNode.rowHeight);\n        } while (rowGotShiftedDuringOperation);\n        // so when we return back to user, the cells have rendered\n        this.animationFrameService.flushAllFrames();\n    };\n    GridBodyScrollFeature.prototype.ensureColumnVisible = function (key, position) {\n        if (position === void 0) { position = 'auto'; }\n        var column = this.columnModel.getGridColumn(key);\n        if (!column) {\n            return;\n        }\n        // calling ensureColumnVisible on a pinned column doesn't make sense\n        if (column.isPinned()) {\n            return;\n        }\n        // defensive\n        if (!this.columnModel.isColumnDisplayed(column)) {\n            return;\n        }\n        var newHorizontalScroll = this.getPositionedHorizontalScroll(column, position);\n        if (newHorizontalScroll !== null) {\n            this.centerRowContainerCtrl.setCenterViewportScrollLeft(newHorizontalScroll);\n        }\n        // this will happen anyway, as the move will cause a 'scroll' event on the body, however\n        // it is possible that the ensureColumnVisible method is called from within AG Grid and\n        // the caller will need to have the columns rendered to continue, which will be before\n        // the event has been worked on (which is the case for cell navigation).\n        this.centerRowContainerCtrl.onHorizontalViewportChanged();\n        // so when we return back to user, the cells have rendered\n        this.animationFrameService.flushAllFrames();\n    };\n    GridBodyScrollFeature.prototype.getPositionedHorizontalScroll = function (column, position) {\n        var _a = this.isColumnOutsideViewport(column), columnBeforeStart = _a.columnBeforeStart, columnAfterEnd = _a.columnAfterEnd;\n        var viewportTooSmallForColumn = this.centerRowContainerCtrl.getCenterWidth() < column.getActualWidth();\n        var viewportWidth = this.centerRowContainerCtrl.getCenterWidth();\n        var isRtl = this.enableRtl;\n        var alignColToStart = (isRtl ? columnBeforeStart : columnAfterEnd) || viewportTooSmallForColumn;\n        var alignColToEnd = isRtl ? columnAfterEnd : columnBeforeStart;\n        if (position !== 'auto') {\n            alignColToStart = position === 'start';\n            alignColToEnd = position === 'end';\n        }\n        var isMiddle = position === 'middle';\n        if (alignColToStart || alignColToEnd || isMiddle) {\n            var _b = this.getColumnBounds(column), colLeft = _b.colLeft, colMiddle = _b.colMiddle, colRight = _b.colRight;\n            if (isMiddle) {\n                return colMiddle - viewportWidth / 2;\n            }\n            if (alignColToStart) {\n                return isRtl ? colRight : colLeft;\n            }\n            return isRtl ? (colLeft - viewportWidth) : (colRight - viewportWidth);\n        }\n        return null;\n    };\n    GridBodyScrollFeature.prototype.isColumnOutsideViewport = function (column) {\n        var _a = this.getViewportBounds(), viewportStart = _a.start, viewportEnd = _a.end;\n        var _b = this.getColumnBounds(column), colLeft = _b.colLeft, colRight = _b.colRight;\n        var isRtl = this.enableRtl;\n        var columnBeforeStart = isRtl ? (viewportStart > colRight) : (viewportEnd < colRight);\n        var columnAfterEnd = isRtl ? (viewportEnd < colLeft) : (viewportStart > colLeft);\n        return { columnBeforeStart: columnBeforeStart, columnAfterEnd: columnAfterEnd };\n    };\n    GridBodyScrollFeature.prototype.getColumnBounds = function (column) {\n        var isRtl = this.enableRtl;\n        var bodyWidth = this.columnModel.getBodyContainerWidth();\n        var colWidth = column.getActualWidth();\n        var colLeft = column.getLeft();\n        var multiplier = isRtl ? -1 : 1;\n        var colLeftPixel = isRtl ? (bodyWidth - colLeft) : colLeft;\n        var colRightPixel = colLeftPixel + colWidth * multiplier;\n        var colMidPixel = colLeftPixel + colWidth / 2 * multiplier;\n        return { colLeft: colLeftPixel, colMiddle: colMidPixel, colRight: colRightPixel };\n    };\n    GridBodyScrollFeature.prototype.getViewportBounds = function () {\n        var viewportWidth = this.centerRowContainerCtrl.getCenterWidth();\n        var scrollPosition = this.centerRowContainerCtrl.getCenterViewportScrollLeft();\n        var viewportStartPixel = scrollPosition;\n        var viewportEndPixel = viewportWidth + scrollPosition;\n        return { start: viewportStartPixel, end: viewportEndPixel, width: viewportWidth };\n    };\n    __decorate$1P([\n        Autowired('ctrlsService')\n    ], GridBodyScrollFeature.prototype, \"ctrlsService\", void 0);\n    __decorate$1P([\n        Autowired('animationFrameService')\n    ], GridBodyScrollFeature.prototype, \"animationFrameService\", void 0);\n    __decorate$1P([\n        Autowired('paginationProxy')\n    ], GridBodyScrollFeature.prototype, \"paginationProxy\", void 0);\n    __decorate$1P([\n        Autowired('rowModel')\n    ], GridBodyScrollFeature.prototype, \"rowModel\", void 0);\n    __decorate$1P([\n        Autowired('rowContainerHeightService')\n    ], GridBodyScrollFeature.prototype, \"heightScaler\", void 0);\n    __decorate$1P([\n        Autowired('rowRenderer')\n    ], GridBodyScrollFeature.prototype, \"rowRenderer\", void 0);\n    __decorate$1P([\n        Autowired('columnModel')\n    ], GridBodyScrollFeature.prototype, \"columnModel\", void 0);\n    __decorate$1P([\n        PostConstruct\n    ], GridBodyScrollFeature.prototype, \"postConstruct\", null);\n    return GridBodyScrollFeature;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar AutoScrollService = /** @class */ (function () {\n    function AutoScrollService(params) {\n        this.tickingInterval = null;\n        this.onScrollCallback = null;\n        this.scrollContainer = params.scrollContainer;\n        this.scrollHorizontally = params.scrollAxis.indexOf('x') !== -1;\n        this.scrollVertically = params.scrollAxis.indexOf('y') !== -1;\n        this.scrollByTick = params.scrollByTick != null ? params.scrollByTick : 20;\n        if (params.onScrollCallback) {\n            this.onScrollCallback = params.onScrollCallback;\n        }\n        if (this.scrollVertically) {\n            this.getVerticalPosition = params.getVerticalPosition;\n            this.setVerticalPosition = params.setVerticalPosition;\n        }\n        if (this.scrollHorizontally) {\n            this.getHorizontalPosition = params.getHorizontalPosition;\n            this.setHorizontalPosition = params.setHorizontalPosition;\n        }\n        this.shouldSkipVerticalScroll = params.shouldSkipVerticalScroll || (function () { return false; });\n        this.shouldSkipHorizontalScroll = params.shouldSkipHorizontalScroll || (function () { return false; });\n    }\n    AutoScrollService.prototype.check = function (mouseEvent, forceSkipVerticalScroll) {\n        if (forceSkipVerticalScroll === void 0) { forceSkipVerticalScroll = false; }\n        var skipVerticalScroll = forceSkipVerticalScroll || this.shouldSkipVerticalScroll();\n        if (skipVerticalScroll && this.shouldSkipHorizontalScroll()) {\n            return;\n        }\n        var rect = this.scrollContainer.getBoundingClientRect();\n        var scrollTick = this.scrollByTick;\n        this.tickLeft = mouseEvent.clientX < (rect.left + scrollTick);\n        this.tickRight = mouseEvent.clientX > (rect.right - scrollTick);\n        this.tickUp = mouseEvent.clientY < (rect.top + scrollTick) && !skipVerticalScroll;\n        this.tickDown = mouseEvent.clientY > (rect.bottom - scrollTick) && !skipVerticalScroll;\n        if (this.tickLeft || this.tickRight || this.tickUp || this.tickDown) {\n            this.ensureTickingStarted();\n        }\n        else {\n            this.ensureCleared();\n        }\n    };\n    AutoScrollService.prototype.ensureTickingStarted = function () {\n        if (this.tickingInterval === null) {\n            this.tickingInterval = window.setInterval(this.doTick.bind(this), 100);\n            this.tickCount = 0;\n        }\n    };\n    AutoScrollService.prototype.doTick = function () {\n        this.tickCount++;\n        var tickAmount;\n        tickAmount = this.tickCount > 20 ? 200 : (this.tickCount > 10 ? 80 : 40);\n        if (this.scrollVertically) {\n            var vScrollPosition = this.getVerticalPosition();\n            if (this.tickUp) {\n                this.setVerticalPosition(vScrollPosition - tickAmount);\n            }\n            if (this.tickDown) {\n                this.setVerticalPosition(vScrollPosition + tickAmount);\n            }\n        }\n        if (this.scrollHorizontally) {\n            var hScrollPosition = this.getHorizontalPosition();\n            if (this.tickLeft) {\n                this.setHorizontalPosition(hScrollPosition - tickAmount);\n            }\n            if (this.tickRight) {\n                this.setHorizontalPosition(hScrollPosition + tickAmount);\n            }\n        }\n        if (this.onScrollCallback) {\n            this.onScrollCallback();\n        }\n    };\n    AutoScrollService.prototype.ensureCleared = function () {\n        if (this.tickingInterval) {\n            window.clearInterval(this.tickingInterval);\n            this.tickingInterval = null;\n        }\n    };\n    return AutoScrollService;\n}());\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$1X = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __assign$9 = (undefined && undefined.__assign) || function () {\n    __assign$9 = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign$9.apply(this, arguments);\n};\nvar __decorate$1O = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __read$l = (undefined && undefined.__read) || function (o, n) {\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n    if (!m) return o;\n    var i = m.call(o), r, ar = [], e;\n    try {\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n    }\n    catch (error) { e = { error: error }; }\n    finally {\n        try {\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\n        }\n        finally { if (e) throw e.error; }\n    }\n    return ar;\n};\nvar __spread$h = (undefined && undefined.__spread) || function () {\n    for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read$l(arguments[i]));\n    return ar;\n};\nvar RowDragFeature = /** @class */ (function (_super) {\n    __extends$1X(RowDragFeature, _super);\n    function RowDragFeature(eContainer) {\n        var _this = _super.call(this) || this;\n        _this.isMultiRowDrag = false;\n        _this.isGridSorted = false;\n        _this.isGridFiltered = false;\n        _this.isRowGroupActive = false;\n        _this.eContainer = eContainer;\n        return _this;\n    }\n    RowDragFeature.prototype.postConstruct = function () {\n        var _this = this;\n        if (this.gridOptionsService.isRowModelType('clientSide')) {\n            this.clientSideRowModel = this.rowModel;\n        }\n        var refreshStatus = function () {\n            _this.onSortChanged();\n            _this.onFilterChanged();\n            _this.onRowGroupChanged();\n        };\n        this.addManagedListener(this.eventService, Events.EVENT_SORT_CHANGED, this.onSortChanged.bind(this));\n        this.addManagedListener(this.eventService, Events.EVENT_FILTER_CHANGED, this.onFilterChanged.bind(this));\n        this.addManagedListener(this.eventService, Events.EVENT_COLUMN_ROW_GROUP_CHANGED, this.onRowGroupChanged.bind(this));\n        this.addManagedListener(this.eventService, Events.EVENT_MODEL_UPDATED, function () {\n            refreshStatus();\n        });\n        refreshStatus();\n        this.ctrlsService.whenReady(function () {\n            var gridBodyCon = _this.ctrlsService.getGridBodyCtrl();\n            _this.autoScrollService = new AutoScrollService({\n                scrollContainer: gridBodyCon.getBodyViewportElement(),\n                scrollAxis: 'y',\n                getVerticalPosition: function () { return gridBodyCon.getScrollFeature().getVScrollPosition().top; },\n                setVerticalPosition: function (position) { return gridBodyCon.getScrollFeature().setVerticalScrollPosition(position); },\n                onScrollCallback: function () { _this.onDragging(_this.lastDraggingEvent); }\n            });\n        });\n    };\n    RowDragFeature.prototype.onSortChanged = function () {\n        this.isGridSorted = this.sortController.isSortActive();\n    };\n    RowDragFeature.prototype.onFilterChanged = function () {\n        this.isGridFiltered = this.filterManager.isAnyFilterPresent();\n    };\n    RowDragFeature.prototype.onRowGroupChanged = function () {\n        var rowGroups = this.columnModel.getRowGroupColumns();\n        this.isRowGroupActive = !missingOrEmpty(rowGroups);\n    };\n    RowDragFeature.prototype.getContainer = function () {\n        return this.eContainer;\n    };\n    RowDragFeature.prototype.isInterestedIn = function (type) {\n        return type === DragSourceType.RowDrag;\n    };\n    RowDragFeature.prototype.getIconName = function () {\n        var managedDrag = this.gridOptionsService.is('rowDragManaged');\n        if (managedDrag && this.shouldPreventRowMove()) {\n            return DragAndDropService.ICON_NOT_ALLOWED;\n        }\n        return DragAndDropService.ICON_MOVE;\n    };\n    RowDragFeature.prototype.shouldPreventRowMove = function () {\n        return this.isGridSorted || this.isGridFiltered || this.isRowGroupActive;\n    };\n    RowDragFeature.prototype.getRowNodes = function (draggingEvent) {\n        var _this = this;\n        if (!this.isFromThisGrid(draggingEvent)) {\n            return (draggingEvent.dragItem.rowNodes || []);\n        }\n        var isRowDragMultiRow = this.gridOptionsService.is('rowDragMultiRow');\n        var selectedNodes = __spread$h(this.selectionService.getSelectedNodes()).sort(function (a, b) {\n            if (a.rowIndex == null || b.rowIndex == null) {\n                return 0;\n            }\n            return _this.getRowIndexNumber(a) - _this.getRowIndexNumber(b);\n        });\n        var currentNode = draggingEvent.dragItem.rowNode;\n        if (isRowDragMultiRow && selectedNodes.indexOf(currentNode) !== -1) {\n            this.isMultiRowDrag = true;\n            return selectedNodes;\n        }\n        this.isMultiRowDrag = false;\n        return [currentNode];\n    };\n    RowDragFeature.prototype.onDragEnter = function (draggingEvent) {\n        // builds a lits of all rows being dragged before firing events\n        draggingEvent.dragItem.rowNodes = this.getRowNodes(draggingEvent);\n        // when entering, we fire the enter event, then in onEnterOrDragging,\n        // we also fire the move event. so we get both events when entering.\n        this.dispatchGridEvent(Events.EVENT_ROW_DRAG_ENTER, draggingEvent);\n        this.getRowNodes(draggingEvent).forEach(function (rowNode) {\n            rowNode.setDragging(true);\n        });\n        this.onEnterOrDragging(draggingEvent);\n    };\n    RowDragFeature.prototype.onDragging = function (draggingEvent) {\n        this.onEnterOrDragging(draggingEvent);\n    };\n    RowDragFeature.prototype.isFromThisGrid = function (draggingEvent) {\n        var dragSourceDomDataKey = draggingEvent.dragSource.dragSourceDomDataKey;\n        return dragSourceDomDataKey === this.gridOptionsService.getDomDataKey();\n    };\n    RowDragFeature.prototype.isDropZoneWithinThisGrid = function (draggingEvent) {\n        var gridBodyCon = this.ctrlsService.getGridBodyCtrl();\n        var gridGui = gridBodyCon.getGui();\n        var dropZoneTarget = draggingEvent.dropZoneTarget;\n        return !gridGui.contains(dropZoneTarget);\n    };\n    RowDragFeature.prototype.onEnterOrDragging = function (draggingEvent) {\n        // this event is fired for enter and move\n        this.dispatchGridEvent(Events.EVENT_ROW_DRAG_MOVE, draggingEvent);\n        this.lastDraggingEvent = draggingEvent;\n        var pixel = this.mouseEventService.getNormalisedPosition(draggingEvent).y;\n        var managedDrag = this.gridOptionsService.is('rowDragManaged');\n        if (managedDrag) {\n            this.doManagedDrag(draggingEvent, pixel);\n        }\n        this.autoScrollService.check(draggingEvent.event);\n    };\n    RowDragFeature.prototype.doManagedDrag = function (draggingEvent, pixel) {\n        var isFromThisGrid = this.isFromThisGrid(draggingEvent);\n        var managedDrag = this.gridOptionsService.is('rowDragManaged');\n        var rowNodes = draggingEvent.dragItem.rowNodes;\n        if (managedDrag && this.shouldPreventRowMove()) {\n            return;\n        }\n        if (this.gridOptionsService.is('suppressMoveWhenRowDragging') || !isFromThisGrid) {\n            if (!this.isDropZoneWithinThisGrid(draggingEvent)) {\n                this.clientSideRowModel.highlightRowAtPixel(rowNodes[0], pixel);\n            }\n        }\n        else {\n            this.moveRows(rowNodes, pixel);\n        }\n    };\n    RowDragFeature.prototype.getRowIndexNumber = function (rowNode) {\n        return parseInt(last(rowNode.getRowIndexString().split('-')), 10);\n    };\n    RowDragFeature.prototype.moveRowAndClearHighlight = function (draggingEvent) {\n        var _this = this;\n        var lastHighlightedRowNode = this.clientSideRowModel.getLastHighlightedRowNode();\n        var isBelow = lastHighlightedRowNode && lastHighlightedRowNode.highlighted === RowHighlightPosition.Below;\n        var pixel = this.mouseEventService.getNormalisedPosition(draggingEvent).y;\n        var rowNodes = draggingEvent.dragItem.rowNodes;\n        var increment = isBelow ? 1 : 0;\n        if (this.isFromThisGrid(draggingEvent)) {\n            rowNodes.forEach(function (rowNode) {\n                if (rowNode.rowTop < pixel) {\n                    increment -= 1;\n                }\n            });\n            this.moveRows(rowNodes, pixel, increment);\n        }\n        else {\n            var getRowIdFunc_1 = this.gridOptionsService.getRowIdFunc();\n            var addIndex = this.clientSideRowModel.getRowIndexAtPixel(pixel) + 1;\n            if (this.clientSideRowModel.getHighlightPosition(pixel) === RowHighlightPosition.Above) {\n                addIndex--;\n            }\n            this.clientSideRowModel.updateRowData({\n                add: rowNodes\n                    .map(function (node) { return node.data; })\n                    .filter(function (data) { return !_this.clientSideRowModel.getRowNode(getRowIdFunc_1 ? getRowIdFunc_1({ data: data, level: 0 }) : data.id); }),\n                addIndex: addIndex\n            });\n        }\n        this.clearRowHighlight();\n    };\n    RowDragFeature.prototype.clearRowHighlight = function () {\n        this.clientSideRowModel.highlightRowAtPixel(null);\n    };\n    RowDragFeature.prototype.moveRows = function (rowNodes, pixel, increment) {\n        if (increment === void 0) { increment = 0; }\n        var rowWasMoved = this.clientSideRowModel.ensureRowsAtPixel(rowNodes, pixel, increment);\n        if (rowWasMoved) {\n            this.focusService.clearFocusedCell();\n            if (this.rangeService) {\n                this.rangeService.removeAllCellRanges();\n            }\n        }\n    };\n    RowDragFeature.prototype.addRowDropZone = function (params) {\n        var _this = this;\n        if (!params.getContainer()) {\n            doOnce(function () { return console.warn('AG Grid: addRowDropZone - A container target needs to be provided'); }, 'add-drop-zone-empty-target');\n            return;\n        }\n        if (this.dragAndDropService.findExternalZone(params)) {\n            console.warn('AG Grid: addRowDropZone - target already exists in the list of DropZones. Use `removeRowDropZone` before adding it again.');\n            return;\n        }\n        var processedParams = {\n            getContainer: params.getContainer\n        };\n        if (params.fromGrid) {\n            params.fromGrid = undefined;\n            processedParams = params;\n        }\n        else {\n            if (params.onDragEnter) {\n                processedParams.onDragEnter = function (e) {\n                    params.onDragEnter(_this.draggingToRowDragEvent(Events.EVENT_ROW_DRAG_ENTER, e));\n                };\n            }\n            if (params.onDragLeave) {\n                processedParams.onDragLeave = function (e) {\n                    params.onDragLeave(_this.draggingToRowDragEvent(Events.EVENT_ROW_DRAG_LEAVE, e));\n                };\n            }\n            if (params.onDragging) {\n                processedParams.onDragging = function (e) {\n                    params.onDragging(_this.draggingToRowDragEvent(Events.EVENT_ROW_DRAG_MOVE, e));\n                };\n            }\n            if (params.onDragStop) {\n                processedParams.onDragStop = function (e) {\n                    params.onDragStop(_this.draggingToRowDragEvent(Events.EVENT_ROW_DRAG_END, e));\n                };\n            }\n        }\n        this.dragAndDropService.addDropTarget(__assign$9({ isInterestedIn: function (type) { return type === DragSourceType.RowDrag; }, getIconName: function () { return DragAndDropService.ICON_MOVE; }, external: true }, processedParams));\n    };\n    RowDragFeature.prototype.getRowDropZone = function (events) {\n        var _this = this;\n        var getContainer = this.getContainer.bind(this);\n        var onDragEnter = this.onDragEnter.bind(this);\n        var onDragLeave = this.onDragLeave.bind(this);\n        var onDragging = this.onDragging.bind(this);\n        var onDragStop = this.onDragStop.bind(this);\n        if (!events) {\n            return { getContainer: getContainer, onDragEnter: onDragEnter, onDragLeave: onDragLeave, onDragging: onDragging, onDragStop: onDragStop, /* @private */ fromGrid: true };\n        }\n        return {\n            getContainer: getContainer,\n            onDragEnter: events.onDragEnter\n                ? (function (e) {\n                    onDragEnter(e);\n                    events.onDragEnter(_this.draggingToRowDragEvent(Events.EVENT_ROW_DRAG_ENTER, e));\n                })\n                : onDragEnter,\n            onDragLeave: events.onDragLeave\n                ? (function (e) {\n                    onDragLeave(e);\n                    events.onDragLeave(_this.draggingToRowDragEvent(Events.EVENT_ROW_DRAG_LEAVE, e));\n                })\n                : onDragLeave,\n            onDragging: events.onDragging\n                ? (function (e) {\n                    onDragging(e);\n                    events.onDragging(_this.draggingToRowDragEvent(Events.EVENT_ROW_DRAG_MOVE, e));\n                })\n                : onDragging,\n            onDragStop: events.onDragStop\n                ? (function (e) {\n                    onDragStop(e);\n                    events.onDragStop(_this.draggingToRowDragEvent(Events.EVENT_ROW_DRAG_END, e));\n                })\n                : onDragStop,\n            fromGrid: true /* @private */\n        };\n    };\n    RowDragFeature.prototype.draggingToRowDragEvent = function (type, draggingEvent) {\n        var yNormalised = this.mouseEventService.getNormalisedPosition(draggingEvent).y;\n        var mouseIsPastLastRow = yNormalised > this.paginationProxy.getCurrentPageHeight();\n        var overIndex = -1;\n        var overNode;\n        if (!mouseIsPastLastRow) {\n            overIndex = this.rowModel.getRowIndexAtPixel(yNormalised);\n            overNode = this.rowModel.getRow(overIndex);\n        }\n        var vDirectionString;\n        switch (draggingEvent.vDirection) {\n            case VerticalDirection.Down:\n                vDirectionString = 'down';\n                break;\n            case VerticalDirection.Up:\n                vDirectionString = 'up';\n                break;\n            default:\n                vDirectionString = null;\n                break;\n        }\n        var event = {\n            type: type,\n            api: this.gridOptionsService.api,\n            columnApi: this.gridOptionsService.columnApi,\n            context: this.gridOptionsService.context,\n            event: draggingEvent.event,\n            node: draggingEvent.dragItem.rowNode,\n            nodes: draggingEvent.dragItem.rowNodes,\n            overIndex: overIndex,\n            overNode: overNode,\n            y: yNormalised,\n            vDirection: vDirectionString\n        };\n        return event;\n    };\n    RowDragFeature.prototype.dispatchGridEvent = function (type, draggingEvent) {\n        var event = this.draggingToRowDragEvent(type, draggingEvent);\n        this.eventService.dispatchEvent(event);\n    };\n    RowDragFeature.prototype.onDragLeave = function (draggingEvent) {\n        this.dispatchGridEvent(Events.EVENT_ROW_DRAG_LEAVE, draggingEvent);\n        this.stopDragging(draggingEvent);\n        if (this.gridOptionsService.is('rowDragManaged')) {\n            this.clearRowHighlight();\n        }\n        if (this.isFromThisGrid(draggingEvent)) {\n            this.isMultiRowDrag = false;\n        }\n    };\n    RowDragFeature.prototype.onDragStop = function (draggingEvent) {\n        this.dispatchGridEvent(Events.EVENT_ROW_DRAG_END, draggingEvent);\n        this.stopDragging(draggingEvent);\n        if (this.gridOptionsService.is('rowDragManaged') &&\n            (this.gridOptionsService.is('suppressMoveWhenRowDragging') || !this.isFromThisGrid(draggingEvent)) &&\n            !this.isDropZoneWithinThisGrid(draggingEvent)) {\n            this.moveRowAndClearHighlight(draggingEvent);\n        }\n    };\n    RowDragFeature.prototype.stopDragging = function (draggingEvent) {\n        this.autoScrollService.ensureCleared();\n        this.getRowNodes(draggingEvent).forEach(function (rowNode) {\n            rowNode.setDragging(false);\n        });\n    };\n    __decorate$1O([\n        Autowired('dragAndDropService')\n    ], RowDragFeature.prototype, \"dragAndDropService\", void 0);\n    __decorate$1O([\n        Autowired('rowModel')\n    ], RowDragFeature.prototype, \"rowModel\", void 0);\n    __decorate$1O([\n        Autowired('paginationProxy')\n    ], RowDragFeature.prototype, \"paginationProxy\", void 0);\n    __decorate$1O([\n        Autowired('columnModel')\n    ], RowDragFeature.prototype, \"columnModel\", void 0);\n    __decorate$1O([\n        Autowired('focusService')\n    ], RowDragFeature.prototype, \"focusService\", void 0);\n    __decorate$1O([\n        Autowired('sortController')\n    ], RowDragFeature.prototype, \"sortController\", void 0);\n    __decorate$1O([\n        Autowired('filterManager')\n    ], RowDragFeature.prototype, \"filterManager\", void 0);\n    __decorate$1O([\n        Autowired('selectionService')\n    ], RowDragFeature.prototype, \"selectionService\", void 0);\n    __decorate$1O([\n        Autowired('mouseEventService')\n    ], RowDragFeature.prototype, \"mouseEventService\", void 0);\n    __decorate$1O([\n        Autowired('ctrlsService')\n    ], RowDragFeature.prototype, \"ctrlsService\", void 0);\n    __decorate$1O([\n        Optional('rangeService')\n    ], RowDragFeature.prototype, \"rangeService\", void 0);\n    __decorate$1O([\n        PostConstruct\n    ], RowDragFeature.prototype, \"postConstruct\", null);\n    return RowDragFeature;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$1W = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$1N = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar RowAnimationCssClasses;\n(function (RowAnimationCssClasses) {\n    RowAnimationCssClasses[\"ANIMATION_ON\"] = \"ag-row-animation\";\n    RowAnimationCssClasses[\"ANIMATION_OFF\"] = \"ag-row-no-animation\";\n})(RowAnimationCssClasses || (RowAnimationCssClasses = {}));\nvar CSS_CLASS_CELL_SELECTABLE = 'ag-selectable';\nvar CSS_CLASS_FORCE_VERTICAL_SCROLL = 'ag-force-vertical-scroll';\nvar CSS_CLASS_COLUMN_MOVING = 'ag-column-moving';\nvar GridBodyCtrl = /** @class */ (function (_super) {\n    __extends$1W(GridBodyCtrl, _super);\n    function GridBodyCtrl() {\n        var _this = _super !== null && _super.apply(this, arguments) || this;\n        _this.stickyTopHeight = 0;\n        return _this;\n    }\n    GridBodyCtrl.prototype.getScrollFeature = function () {\n        return this.bodyScrollFeature;\n    };\n    GridBodyCtrl.prototype.getBodyViewportElement = function () {\n        return this.eBodyViewport;\n    };\n    GridBodyCtrl.prototype.setComp = function (comp, eGridBody, eBodyViewport, eTop, eBottom, eStickyTop) {\n        this.comp = comp;\n        this.eGridBody = eGridBody;\n        this.eBodyViewport = eBodyViewport;\n        this.eTop = eTop;\n        this.eBottom = eBottom;\n        this.eStickyTop = eStickyTop;\n        this.setCellTextSelection(this.gridOptionsService.is('enableCellTextSelection'));\n        this.createManagedBean(new LayoutFeature(this.comp));\n        this.bodyScrollFeature = this.createManagedBean(new GridBodyScrollFeature(this.eBodyViewport));\n        this.addRowDragListener();\n        this.setupRowAnimationCssClass();\n        this.addEventListeners();\n        this.addFocusListeners([eTop, eBodyViewport, eBottom, eStickyTop]);\n        this.onGridColumnsChanged();\n        this.addBodyViewportListener();\n        this.setFloatingHeights();\n        this.disableBrowserDragging();\n        this.addStopEditingWhenGridLosesFocus();\n        this.ctrlsService.registerGridBodyCtrl(this);\n    };\n    GridBodyCtrl.prototype.getComp = function () {\n        return this.comp;\n    };\n    GridBodyCtrl.prototype.addEventListeners = function () {\n        this.addManagedListener(this.eventService, Events.EVENT_GRID_COLUMNS_CHANGED, this.onGridColumnsChanged.bind(this));\n        this.addManagedListener(this.eventService, Events.EVENT_SCROLL_VISIBILITY_CHANGED, this.onScrollVisibilityChanged.bind(this));\n        this.addManagedListener(this.eventService, Events.EVENT_PINNED_ROW_DATA_CHANGED, this.onPinnedRowDataChanged.bind(this));\n        this.addManagedListener(this.eventService, Events.EVENT_HEADER_HEIGHT_CHANGED, this.onHeaderHeightChanged.bind(this));\n    };\n    GridBodyCtrl.prototype.addFocusListeners = function (elements) {\n        var _this = this;\n        elements.forEach(function (element) {\n            _this.addManagedListener(element, 'focusin', function (e) {\n                var target = e.target;\n                // element being focused is nested?\n                var isFocusedElementNested = isElementChildOfClass(target, 'ag-root', element);\n                element.classList.toggle('ag-has-focus', !isFocusedElementNested);\n            });\n            _this.addManagedListener(element, 'focusout', function (e) {\n                var target = e.target, relatedTarget = e.relatedTarget;\n                var gridContainRelatedTarget = element.contains(relatedTarget);\n                var isNestedRelatedTarget = isElementChildOfClass(relatedTarget, 'ag-root', element);\n                var isNestedTarget = isElementChildOfClass(target, 'ag-root', element);\n                // element losing focus belongs to a nested grid,\n                // it should not be handled here.\n                if (isNestedTarget) {\n                    return;\n                }\n                // the grid does not contain, or the focus element is within\n                // a nested grid\n                if (!gridContainRelatedTarget || isNestedRelatedTarget) {\n                    element.classList.remove('ag-has-focus');\n                }\n            });\n        });\n    };\n    // used by ColumnAnimationService\n    GridBodyCtrl.prototype.setColumnMovingCss = function (moving) {\n        this.comp.setColumnMovingCss(CSS_CLASS_COLUMN_MOVING, moving);\n    };\n    GridBodyCtrl.prototype.setCellTextSelection = function (selectable) {\n        if (selectable === void 0) { selectable = false; }\n        var cssClass = selectable ? CSS_CLASS_CELL_SELECTABLE : null;\n        this.comp.setCellSelectableCss(cssClass, selectable);\n    };\n    GridBodyCtrl.prototype.onScrollVisibilityChanged = function () {\n        var visible = this.scrollVisibleService.isVerticalScrollShowing();\n        this.setVerticalScrollPaddingVisible(visible);\n        this.setStickyTopWidth(visible);\n        var scrollbarWidth = visible ? (this.gridOptionsService.getScrollbarWidth() || 0) : 0;\n        var pad = isInvisibleScrollbar() ? 16 : 0;\n        var width = \"calc(100% + \" + (scrollbarWidth + pad) + \"px)\";\n        this.comp.setBodyViewportWidth(width);\n    };\n    GridBodyCtrl.prototype.onGridColumnsChanged = function () {\n        var columns = this.columnModel.getAllGridColumns();\n        this.comp.setColumnCount(columns ? columns.length : 0);\n    };\n    // if we do not do this, then the user can select a pic in the grid (eg an image in a custom cell renderer)\n    // and then that will start the browser native drag n' drop, which messes up with our own drag and drop.\n    GridBodyCtrl.prototype.disableBrowserDragging = function () {\n        this.addManagedListener(this.eGridBody, 'dragstart', function (event) {\n            if (event.target instanceof HTMLImageElement) {\n                event.preventDefault();\n                return false;\n            }\n        });\n    };\n    GridBodyCtrl.prototype.addStopEditingWhenGridLosesFocus = function () {\n        var _this = this;\n        if (!this.gridOptionsService.is('stopEditingWhenCellsLoseFocus')) {\n            return;\n        }\n        var focusOutListener = function (event) {\n            // this is the element the focus is moving to\n            var elementWithFocus = event.relatedTarget;\n            if (getTabIndex(elementWithFocus) === null) {\n                _this.rowRenderer.stopEditing();\n                return;\n            }\n            var clickInsideGrid = \n            // see if click came from inside the viewports\n            viewports.some(function (viewport) { return viewport.contains(elementWithFocus); })\n                // and also that it's not from a detail grid\n                && _this.mouseEventService.isElementInThisGrid(elementWithFocus);\n            if (!clickInsideGrid) {\n                var popupService = _this.popupService;\n                clickInsideGrid =\n                    popupService.getActivePopups().some(function (popup) { return popup.contains(elementWithFocus); }) ||\n                        popupService.isElementWithinCustomPopup(elementWithFocus);\n            }\n            if (!clickInsideGrid) {\n                _this.rowRenderer.stopEditing();\n            }\n        };\n        var viewports = [this.eBodyViewport, this.eBottom, this.eTop, this.eStickyTop];\n        viewports.forEach(function (viewport) { return _this.addManagedListener(viewport, 'focusout', focusOutListener); });\n    };\n    GridBodyCtrl.prototype.updateRowCount = function () {\n        var headerCount = this.headerNavigationService.getHeaderRowCount();\n        var rowCount = this.rowModel.isLastRowIndexKnown() ? this.rowModel.getRowCount() : -1;\n        var total = rowCount === -1 ? -1 : (headerCount + rowCount);\n        this.comp.setRowCount(total);\n    };\n    GridBodyCtrl.prototype.registerBodyViewportResizeListener = function (listener) {\n        this.comp.registerBodyViewportResizeListener(listener);\n    };\n    GridBodyCtrl.prototype.setVerticalScrollPaddingVisible = function (visible) {\n        var overflowY = visible ? 'scroll' : 'hidden';\n        this.comp.setPinnedTopBottomOverflowY(overflowY);\n    };\n    GridBodyCtrl.prototype.isVerticalScrollShowing = function () {\n        var show = this.gridOptionsService.is('alwaysShowVerticalScroll');\n        var cssClass = show ? CSS_CLASS_FORCE_VERTICAL_SCROLL : null;\n        var allowVerticalScroll = this.gridOptionsService.isDomLayout('normal');\n        this.comp.setAlwaysVerticalScrollClass(cssClass, show);\n        return show || (allowVerticalScroll && isVerticalScrollShowing(this.eBodyViewport));\n    };\n    GridBodyCtrl.prototype.setupRowAnimationCssClass = function () {\n        var _this = this;\n        var listener = function () {\n            // we don't want to use row animation if scaling, as rows jump strangely as you scroll,\n            // when scaling and doing row animation.\n            var animateRows = _this.gridOptionsService.isAnimateRows() && !_this.rowContainerHeightService.isStretching();\n            var animateRowsCssClass = animateRows ? RowAnimationCssClasses.ANIMATION_ON : RowAnimationCssClasses.ANIMATION_OFF;\n            _this.comp.setRowAnimationCssOnBodyViewport(animateRowsCssClass, animateRows);\n        };\n        listener();\n        this.addManagedListener(this.eventService, Events.EVENT_HEIGHT_SCALE_CHANGED, listener);\n        this.addManagedPropertyListener('animateRows', listener);\n    };\n    GridBodyCtrl.prototype.getGridBodyElement = function () {\n        return this.eGridBody;\n    };\n    GridBodyCtrl.prototype.addBodyViewportListener = function () {\n        // we want to listen for clicks directly on the eBodyViewport, so the user has a way of showing\n        // the context menu if no rows or columns are displayed, or user simply clicks outside of a cell\n        var listener = this.onBodyViewportContextMenu.bind(this);\n        this.addManagedListener(this.eBodyViewport, 'contextmenu', listener);\n        this.mockContextMenuForIPad(listener);\n        this.addManagedListener(this.eBodyViewport, 'wheel', this.onBodyViewportWheel.bind(this));\n        this.addManagedListener(this.eStickyTop, 'wheel', this.onStickyTopWheel.bind(this));\n        // allow mouseWheel on the Full Width Container to Scroll the Viewport\n        this.addFullWidthContainerWheelListener();\n    };\n    GridBodyCtrl.prototype.addFullWidthContainerWheelListener = function () {\n        var _this = this;\n        var fullWidthContainer = this.eBodyViewport.querySelector('.ag-full-width-container');\n        var eCenterColsViewport = this.eBodyViewport.querySelector('.ag-center-cols-viewport');\n        if (fullWidthContainer && eCenterColsViewport) {\n            this.addManagedListener(fullWidthContainer, 'wheel', function (e) { return _this.onFullWidthContainerWheel(e, eCenterColsViewport); });\n        }\n    };\n    GridBodyCtrl.prototype.onFullWidthContainerWheel = function (e, eCenterColsViewport) {\n        if (!e.deltaX || Math.abs(e.deltaY) > Math.abs(e.deltaX)) {\n            return;\n        }\n        e.preventDefault();\n        eCenterColsViewport.scrollBy({ left: e.deltaX });\n    };\n    GridBodyCtrl.prototype.onBodyViewportContextMenu = function (mouseEvent, touch, touchEvent) {\n        if (!mouseEvent && !touchEvent) {\n            return;\n        }\n        if (this.gridOptionsService.is('preventDefaultOnContextMenu')) {\n            var event_1 = (mouseEvent || touchEvent);\n            event_1.preventDefault();\n        }\n        var target = (mouseEvent || touch).target;\n        if (target === this.eBodyViewport || target === this.ctrlsService.getCenterRowContainerCtrl().getViewportElement()) {\n            // show it\n            if (!this.contextMenuFactory) {\n                return;\n            }\n            if (mouseEvent) {\n                this.contextMenuFactory.onContextMenu(mouseEvent, null, null, null, null, this.eGridBody);\n            }\n            else if (touchEvent) {\n                this.contextMenuFactory.onContextMenu(null, touchEvent, null, null, null, this.eGridBody);\n            }\n        }\n    };\n    GridBodyCtrl.prototype.mockContextMenuForIPad = function (listener) {\n        // we do NOT want this when not in iPad\n        if (!isIOSUserAgent()) {\n            return;\n        }\n        var touchListener = new TouchListener(this.eBodyViewport);\n        var longTapListener = function (event) {\n            listener(undefined, event.touchStart, event.touchEvent);\n        };\n        this.addManagedListener(touchListener, TouchListener.EVENT_LONG_TAP, longTapListener);\n        this.addDestroyFunc(function () { return touchListener.destroy(); });\n    };\n    GridBodyCtrl.prototype.onBodyViewportWheel = function (e) {\n        if (!this.gridOptionsService.is('suppressScrollWhenPopupsAreOpen')) {\n            return;\n        }\n        if (this.popupService.hasAnchoredPopup()) {\n            e.preventDefault();\n        }\n    };\n    GridBodyCtrl.prototype.onStickyTopWheel = function (e) {\n        e.preventDefault();\n        if (e.offsetY) {\n            this.scrollVertically(e.deltaY);\n        }\n    };\n    GridBodyCtrl.prototype.getGui = function () {\n        return this.eGridBody;\n    };\n    // called by rowDragFeature\n    GridBodyCtrl.prototype.scrollVertically = function (pixels) {\n        var oldScrollPosition = this.eBodyViewport.scrollTop;\n        this.bodyScrollFeature.setVerticalScrollPosition(oldScrollPosition + pixels);\n        return this.eBodyViewport.scrollTop - oldScrollPosition;\n    };\n    GridBodyCtrl.prototype.addRowDragListener = function () {\n        this.rowDragFeature = this.createManagedBean(new RowDragFeature(this.eBodyViewport));\n        this.dragAndDropService.addDropTarget(this.rowDragFeature);\n    };\n    GridBodyCtrl.prototype.getRowDragFeature = function () {\n        return this.rowDragFeature;\n    };\n    GridBodyCtrl.prototype.onPinnedRowDataChanged = function () {\n        this.setFloatingHeights();\n    };\n    GridBodyCtrl.prototype.setFloatingHeights = function () {\n        var pinnedRowModel = this.pinnedRowModel;\n        var floatingTopHeight = pinnedRowModel.getPinnedTopTotalHeight();\n        if (floatingTopHeight) {\n            // adding 1px for cell bottom border\n            floatingTopHeight += 1;\n        }\n        var floatingBottomHeight = pinnedRowModel.getPinnedBottomTotalHeight();\n        if (floatingBottomHeight) {\n            // adding 1px for cell bottom border\n            floatingBottomHeight += 1;\n        }\n        this.comp.setTopHeight(floatingTopHeight);\n        this.comp.setBottomHeight(floatingBottomHeight);\n        this.comp.setTopDisplay(floatingTopHeight ? 'inherit' : 'none');\n        this.comp.setBottomDisplay(floatingBottomHeight ? 'inherit' : 'none');\n        this.setStickyTopOffsetTop();\n    };\n    GridBodyCtrl.prototype.setStickyTopHeight = function (height) {\n        if (height === void 0) { height = 0; }\n        // console.log('setting sticky top height ' + height);\n        this.comp.setStickyTopHeight(height + \"px\");\n        this.stickyTopHeight = height;\n    };\n    GridBodyCtrl.prototype.getStickyTopHeight = function () {\n        return this.stickyTopHeight;\n    };\n    GridBodyCtrl.prototype.setStickyTopWidth = function (vScrollVisible) {\n        if (!vScrollVisible) {\n            this.comp.setStickyTopWidth('100%');\n        }\n        else {\n            var scrollbarWidth = this.gridOptionsService.getScrollbarWidth();\n            this.comp.setStickyTopWidth(\"calc(100% - \" + scrollbarWidth + \"px)\");\n        }\n    };\n    GridBodyCtrl.prototype.onHeaderHeightChanged = function () {\n        this.setStickyTopOffsetTop();\n    };\n    GridBodyCtrl.prototype.setStickyTopOffsetTop = function () {\n        var headerCtrl = this.ctrlsService.getGridHeaderCtrl();\n        var headerHeight = headerCtrl.getHeaderHeight();\n        var pinnedTopHeight = this.pinnedRowModel.getPinnedTopTotalHeight();\n        var height = 0;\n        if (headerHeight > 0) {\n            height += headerHeight + 1;\n        }\n        if (pinnedTopHeight > 0) {\n            height += pinnedTopHeight + 1;\n        }\n        this.comp.setStickyTopTop(height + \"px\");\n    };\n    // method will call itself if no available width. this covers if the grid\n    // isn't visible, but is just about to be visible.\n    GridBodyCtrl.prototype.sizeColumnsToFit = function (params, nextTimeout) {\n        var _this = this;\n        var removeScrollWidth = this.isVerticalScrollShowing();\n        var scrollWidthToRemove = removeScrollWidth ? this.gridOptionsService.getScrollbarWidth() : 0;\n        // bodyViewportWidth should be calculated from eGridBody, not eBodyViewport\n        // because we change the width of the bodyViewport to hide the real browser scrollbar\n        var bodyViewportWidth = getInnerWidth(this.eGridBody);\n        var availableWidth = bodyViewportWidth - scrollWidthToRemove;\n        if (availableWidth > 0) {\n            this.columnModel.sizeColumnsToFit(availableWidth, \"sizeColumnsToFit\", false, params);\n            return;\n        }\n        if (nextTimeout === undefined) {\n            window.setTimeout(function () {\n                _this.sizeColumnsToFit(params, 100);\n            }, 0);\n        }\n        else if (nextTimeout === 100) {\n            window.setTimeout(function () {\n                _this.sizeColumnsToFit(params, 500);\n            }, 100);\n        }\n        else if (nextTimeout === 500) {\n            window.setTimeout(function () {\n                _this.sizeColumnsToFit(params, -1);\n            }, 500);\n        }\n        else {\n            console.warn('AG Grid: tried to call sizeColumnsToFit() but the grid is coming back with ' +\n                'zero width, maybe the grid is not visible yet on the screen?');\n        }\n    };\n    // + rangeService\n    GridBodyCtrl.prototype.addScrollEventListener = function (listener) {\n        this.eBodyViewport.addEventListener('scroll', listener, { passive: true });\n    };\n    // + focusService\n    GridBodyCtrl.prototype.removeScrollEventListener = function (listener) {\n        this.eBodyViewport.removeEventListener('scroll', listener);\n    };\n    __decorate$1N([\n        Autowired('rowContainerHeightService')\n    ], GridBodyCtrl.prototype, \"rowContainerHeightService\", void 0);\n    __decorate$1N([\n        Autowired('ctrlsService')\n    ], GridBodyCtrl.prototype, \"ctrlsService\", void 0);\n    __decorate$1N([\n        Autowired('columnModel')\n    ], GridBodyCtrl.prototype, \"columnModel\", void 0);\n    __decorate$1N([\n        Autowired('scrollVisibleService')\n    ], GridBodyCtrl.prototype, \"scrollVisibleService\", void 0);\n    __decorate$1N([\n        Optional('contextMenuFactory')\n    ], GridBodyCtrl.prototype, \"contextMenuFactory\", void 0);\n    __decorate$1N([\n        Autowired('headerNavigationService')\n    ], GridBodyCtrl.prototype, \"headerNavigationService\", void 0);\n    __decorate$1N([\n        Autowired('dragAndDropService')\n    ], GridBodyCtrl.prototype, \"dragAndDropService\", void 0);\n    __decorate$1N([\n        Autowired('pinnedRowModel')\n    ], GridBodyCtrl.prototype, \"pinnedRowModel\", void 0);\n    __decorate$1N([\n        Autowired('rowRenderer')\n    ], GridBodyCtrl.prototype, \"rowRenderer\", void 0);\n    __decorate$1N([\n        Autowired('popupService')\n    ], GridBodyCtrl.prototype, \"popupService\", void 0);\n    __decorate$1N([\n        Autowired('mouseEventService')\n    ], GridBodyCtrl.prototype, \"mouseEventService\", void 0);\n    __decorate$1N([\n        Autowired('rowModel')\n    ], GridBodyCtrl.prototype, \"rowModel\", void 0);\n    return GridBodyCtrl;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar SelectionHandleType;\n(function (SelectionHandleType) {\n    SelectionHandleType[SelectionHandleType[\"FILL\"] = 0] = \"FILL\";\n    SelectionHandleType[SelectionHandleType[\"RANGE\"] = 1] = \"RANGE\";\n})(SelectionHandleType || (SelectionHandleType = {}));\nvar CellRangeType;\n(function (CellRangeType) {\n    CellRangeType[CellRangeType[\"VALUE\"] = 0] = \"VALUE\";\n    CellRangeType[CellRangeType[\"DIMENSION\"] = 1] = \"DIMENSION\";\n})(CellRangeType || (CellRangeType = {}));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar CSS_CELL_RANGE_SELECTED = 'ag-cell-range-selected';\nvar CSS_CELL_RANGE_CHART = 'ag-cell-range-chart';\nvar CSS_CELL_RANGE_SINGLE_CELL = 'ag-cell-range-single-cell';\nvar CSS_CELL_RANGE_CHART_CATEGORY = 'ag-cell-range-chart-category';\nvar CSS_CELL_RANGE_HANDLE = 'ag-cell-range-handle';\nvar CSS_CELL_RANGE_TOP = 'ag-cell-range-top';\nvar CSS_CELL_RANGE_RIGHT = 'ag-cell-range-right';\nvar CSS_CELL_RANGE_BOTTOM = 'ag-cell-range-bottom';\nvar CSS_CELL_RANGE_LEFT = 'ag-cell-range-left';\nvar CellRangeFeature = /** @class */ (function () {\n    function CellRangeFeature(beans, ctrl) {\n        this.beans = beans;\n        this.cellCtrl = ctrl;\n    }\n    CellRangeFeature.prototype.setComp = function (cellComp, eGui) {\n        this.cellComp = cellComp;\n        this.eGui = eGui;\n        this.onRangeSelectionChanged();\n    };\n    CellRangeFeature.prototype.onRangeSelectionChanged = function () {\n        // when using reactUi, given UI is async, it's possible this method is called before the comp is registered\n        if (!this.cellComp) {\n            return;\n        }\n        this.rangeCount = this.beans.rangeService.getCellRangeCount(this.cellCtrl.getCellPosition());\n        this.hasChartRange = this.getHasChartRange();\n        this.cellComp.addOrRemoveCssClass(CSS_CELL_RANGE_SELECTED, this.rangeCount !== 0);\n        this.cellComp.addOrRemoveCssClass(CSS_CELL_RANGE_SELECTED + \"-1\", this.rangeCount === 1);\n        this.cellComp.addOrRemoveCssClass(CSS_CELL_RANGE_SELECTED + \"-2\", this.rangeCount === 2);\n        this.cellComp.addOrRemoveCssClass(CSS_CELL_RANGE_SELECTED + \"-3\", this.rangeCount === 3);\n        this.cellComp.addOrRemoveCssClass(CSS_CELL_RANGE_SELECTED + \"-4\", this.rangeCount >= 4);\n        this.cellComp.addOrRemoveCssClass(CSS_CELL_RANGE_CHART, this.hasChartRange);\n        setAriaSelected(this.eGui, this.rangeCount > 0 ? true : undefined);\n        this.cellComp.addOrRemoveCssClass(CSS_CELL_RANGE_SINGLE_CELL, this.isSingleCell());\n        this.updateRangeBorders();\n        this.refreshHandle();\n    };\n    CellRangeFeature.prototype.updateRangeBorders = function () {\n        var rangeBorders = this.getRangeBorders();\n        var isSingleCell = this.isSingleCell();\n        var isTop = !isSingleCell && rangeBorders.top;\n        var isRight = !isSingleCell && rangeBorders.right;\n        var isBottom = !isSingleCell && rangeBorders.bottom;\n        var isLeft = !isSingleCell && rangeBorders.left;\n        this.cellComp.addOrRemoveCssClass(CSS_CELL_RANGE_TOP, isTop);\n        this.cellComp.addOrRemoveCssClass(CSS_CELL_RANGE_RIGHT, isRight);\n        this.cellComp.addOrRemoveCssClass(CSS_CELL_RANGE_BOTTOM, isBottom);\n        this.cellComp.addOrRemoveCssClass(CSS_CELL_RANGE_LEFT, isLeft);\n    };\n    CellRangeFeature.prototype.isSingleCell = function () {\n        var rangeService = this.beans.rangeService;\n        return this.rangeCount === 1 && rangeService && !rangeService.isMoreThanOneCell();\n    };\n    CellRangeFeature.prototype.getHasChartRange = function () {\n        var rangeService = this.beans.rangeService;\n        if (!this.rangeCount || !rangeService) {\n            return false;\n        }\n        var cellRanges = rangeService.getCellRanges();\n        return cellRanges.length > 0 && cellRanges.every(function (range) { return includes([CellRangeType.DIMENSION, CellRangeType.VALUE], range.type); });\n    };\n    CellRangeFeature.prototype.updateRangeBordersIfRangeCount = function () {\n        // we only need to update range borders if we are in a range\n        if (this.rangeCount > 0) {\n            this.updateRangeBorders();\n            this.refreshHandle();\n        }\n    };\n    CellRangeFeature.prototype.getRangeBorders = function () {\n        var _this = this;\n        var isRtl = this.beans.gridOptionsService.is('enableRtl');\n        var top = false;\n        var right = false;\n        var bottom = false;\n        var left = false;\n        var thisCol = this.cellCtrl.getCellPosition().column;\n        var _a = this.beans, rangeService = _a.rangeService, columnModel = _a.columnModel;\n        var leftCol;\n        var rightCol;\n        if (isRtl) {\n            leftCol = columnModel.getDisplayedColAfter(thisCol);\n            rightCol = columnModel.getDisplayedColBefore(thisCol);\n        }\n        else {\n            leftCol = columnModel.getDisplayedColBefore(thisCol);\n            rightCol = columnModel.getDisplayedColAfter(thisCol);\n        }\n        var ranges = rangeService.getCellRanges().filter(function (range) { return rangeService.isCellInSpecificRange(_this.cellCtrl.getCellPosition(), range); });\n        // this means we are the first column in the grid\n        if (!leftCol) {\n            left = true;\n        }\n        // this means we are the last column in the grid\n        if (!rightCol) {\n            right = true;\n        }\n        for (var i = 0; i < ranges.length; i++) {\n            if (top && right && bottom && left) {\n                break;\n            }\n            var range = ranges[i];\n            var startRow = rangeService.getRangeStartRow(range);\n            var endRow = rangeService.getRangeEndRow(range);\n            if (!top && this.beans.rowPositionUtils.sameRow(startRow, this.cellCtrl.getCellPosition())) {\n                top = true;\n            }\n            if (!bottom && this.beans.rowPositionUtils.sameRow(endRow, this.cellCtrl.getCellPosition())) {\n                bottom = true;\n            }\n            if (!left && leftCol && range.columns.indexOf(leftCol) < 0) {\n                left = true;\n            }\n            if (!right && rightCol && range.columns.indexOf(rightCol) < 0) {\n                right = true;\n            }\n        }\n        return { top: top, right: right, bottom: bottom, left: left };\n    };\n    CellRangeFeature.prototype.refreshHandle = function () {\n        if (!this.beans.rangeService) {\n            return;\n        }\n        var shouldHaveSelectionHandle = this.shouldHaveSelectionHandle();\n        if (this.selectionHandle && !shouldHaveSelectionHandle) {\n            this.selectionHandle = this.beans.context.destroyBean(this.selectionHandle);\n        }\n        if (shouldHaveSelectionHandle) {\n            this.addSelectionHandle();\n        }\n        this.cellComp.addOrRemoveCssClass(CSS_CELL_RANGE_HANDLE, !!this.selectionHandle);\n    };\n    CellRangeFeature.prototype.shouldHaveSelectionHandle = function () {\n        var _a = this.beans, gridOptionsService = _a.gridOptionsService, rangeService = _a.rangeService;\n        var cellRanges = rangeService.getCellRanges();\n        var rangesLen = cellRanges.length;\n        if (this.rangeCount < 1 || rangesLen < 1) {\n            return false;\n        }\n        var cellRange = last(cellRanges);\n        var cellPosition = this.cellCtrl.getCellPosition();\n        var isFillHandleAvailable = gridOptionsService.is('enableFillHandle') && !this.cellCtrl.isSuppressFillHandle();\n        var isRangeHandleAvailable = gridOptionsService.is('enableRangeHandle');\n        var handleIsAvailable = rangesLen === 1 && !this.cellCtrl.isEditing() && (isFillHandleAvailable || isRangeHandleAvailable);\n        if (this.hasChartRange) {\n            var hasCategoryRange = cellRanges[0].type === CellRangeType.DIMENSION;\n            var isCategoryCell = hasCategoryRange && rangeService.isCellInSpecificRange(cellPosition, cellRanges[0]);\n            this.cellComp.addOrRemoveCssClass(CSS_CELL_RANGE_CHART_CATEGORY, isCategoryCell);\n            handleIsAvailable = cellRange.type === CellRangeType.VALUE;\n        }\n        return handleIsAvailable &&\n            cellRange.endRow != null &&\n            rangeService.isContiguousRange(cellRange) &&\n            rangeService.isBottomRightCell(cellRange, cellPosition);\n    };\n    CellRangeFeature.prototype.addSelectionHandle = function () {\n        var _a = this.beans, gridOptionsService = _a.gridOptionsService, rangeService = _a.rangeService;\n        var cellRangeType = last(rangeService.getCellRanges()).type;\n        var selectionHandleFill = gridOptionsService.is('enableFillHandle') && missing(cellRangeType);\n        var type = selectionHandleFill ? SelectionHandleType.FILL : SelectionHandleType.RANGE;\n        if (this.selectionHandle && this.selectionHandle.getType() !== type) {\n            this.selectionHandle = this.beans.context.destroyBean(this.selectionHandle);\n        }\n        if (!this.selectionHandle) {\n            this.selectionHandle = this.beans.selectionHandleFactory.createSelectionHandle(type);\n        }\n        this.selectionHandle.refresh(this.cellCtrl);\n    };\n    CellRangeFeature.prototype.destroy = function () {\n        this.beans.context.destroyBean(this.selectionHandle);\n    };\n    return CellRangeFeature;\n}());\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$1V = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\n/**\n * Takes care of:\n *  #) Cell Width (including when doing cell spanning, which makes width cover many columns)\n *  #) Cell Height (when doing row span, otherwise we don't touch the height as it's just row height)\n *  #) Cell Left (the horizontal positioning of the cell, the vertical positioning is on the row)\n */\nvar CellPositionFeature = /** @class */ (function (_super) {\n    __extends$1V(CellPositionFeature, _super);\n    function CellPositionFeature(ctrl, beans) {\n        var _this = _super.call(this) || this;\n        _this.cellCtrl = ctrl;\n        _this.beans = beans;\n        _this.column = ctrl.getColumn();\n        _this.rowNode = ctrl.getRowNode();\n        _this.setupColSpan();\n        _this.setupRowSpan();\n        return _this;\n    }\n    CellPositionFeature.prototype.setupRowSpan = function () {\n        this.rowSpan = this.column.getRowSpan(this.rowNode);\n    };\n    CellPositionFeature.prototype.setComp = function (eGui) {\n        this.eGui = eGui;\n        this.onLeftChanged();\n        this.onWidthChanged();\n        this.applyRowSpan();\n    };\n    CellPositionFeature.prototype.onDisplayColumnsChanged = function () {\n        var colsSpanning = this.getColSpanningList();\n        if (!areEqual(this.colsSpanning, colsSpanning)) {\n            this.colsSpanning = colsSpanning;\n            this.onWidthChanged();\n            this.onLeftChanged(); // left changes when doing RTL\n        }\n    };\n    CellPositionFeature.prototype.setupColSpan = function () {\n        // if no col span is active, then we don't set it up, as it would be wasteful of CPU\n        if (this.column.getColDef().colSpan == null) {\n            return;\n        }\n        this.colsSpanning = this.getColSpanningList();\n        // because we are col spanning, a reorder of the cols can change what cols we are spanning over\n        this.addManagedListener(this.beans.eventService, Events.EVENT_DISPLAYED_COLUMNS_CHANGED, this.onDisplayColumnsChanged.bind(this));\n        // because we are spanning over multiple cols, we check for width any time any cols width changes.\n        // this is expensive - really we should be explicitly checking only the cols we are spanning over\n        // instead of every col, however it would be tricky code to track the cols we are spanning over, so\n        // because hardly anyone will be using colSpan, am favouring this easier way for more maintainable code.\n        this.addManagedListener(this.beans.eventService, Events.EVENT_DISPLAYED_COLUMNS_WIDTH_CHANGED, this.onWidthChanged.bind(this));\n    };\n    CellPositionFeature.prototype.onWidthChanged = function () {\n        if (!this.eGui) {\n            return;\n        }\n        var width = this.getCellWidth();\n        this.eGui.style.width = width + \"px\";\n    };\n    CellPositionFeature.prototype.getCellWidth = function () {\n        if (!this.colsSpanning) {\n            return this.column.getActualWidth();\n        }\n        return this.colsSpanning.reduce(function (width, col) { return width + col.getActualWidth(); }, 0);\n    };\n    CellPositionFeature.prototype.getColSpanningList = function () {\n        var colSpan = this.column.getColSpan(this.rowNode);\n        var colsSpanning = [];\n        // if just one col, the col span is just the column we are in\n        if (colSpan === 1) {\n            colsSpanning.push(this.column);\n        }\n        else {\n            var pointer = this.column;\n            var pinned = this.column.getPinned();\n            for (var i = 0; pointer && i < colSpan; i++) {\n                colsSpanning.push(pointer);\n                pointer = this.beans.columnModel.getDisplayedColAfter(pointer);\n                if (!pointer || missing(pointer)) {\n                    break;\n                }\n                // we do not allow col spanning to span outside of pinned areas\n                if (pinned !== pointer.getPinned()) {\n                    break;\n                }\n            }\n        }\n        return colsSpanning;\n    };\n    CellPositionFeature.prototype.onLeftChanged = function () {\n        if (!this.eGui) {\n            return;\n        }\n        var left = this.modifyLeftForPrintLayout(this.getCellLeft());\n        this.eGui.style.left = left + 'px';\n    };\n    CellPositionFeature.prototype.getCellLeft = function () {\n        var mostLeftCol;\n        if (this.beans.gridOptionsService.is('enableRtl') && this.colsSpanning) {\n            mostLeftCol = last(this.colsSpanning);\n        }\n        else {\n            mostLeftCol = this.column;\n        }\n        return mostLeftCol.getLeft();\n    };\n    CellPositionFeature.prototype.modifyLeftForPrintLayout = function (leftPosition) {\n        if (!this.cellCtrl.isPrintLayout() || this.column.getPinned() === 'left') {\n            return leftPosition;\n        }\n        var leftWidth = this.beans.columnModel.getDisplayedColumnsLeftWidth();\n        if (this.column.getPinned() === 'right') {\n            var bodyWidth = this.beans.columnModel.getBodyContainerWidth();\n            return leftWidth + bodyWidth + (leftPosition || 0);\n        }\n        // is in body\n        return leftWidth + (leftPosition || 0);\n    };\n    CellPositionFeature.prototype.applyRowSpan = function () {\n        if (this.rowSpan === 1) {\n            return;\n        }\n        var singleRowHeight = this.beans.gridOptionsService.getRowHeightAsNumber();\n        var totalRowHeight = singleRowHeight * this.rowSpan;\n        this.eGui.style.height = totalRowHeight + \"px\";\n        this.eGui.style.zIndex = '1';\n    };\n    // overriding to make public, as we don't dispose this bean via context\n    CellPositionFeature.prototype.destroy = function () {\n        _super.prototype.destroy.call(this);\n    };\n    return CellPositionFeature;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$1U = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar CellCustomStyleFeature = /** @class */ (function (_super) {\n    __extends$1U(CellCustomStyleFeature, _super);\n    function CellCustomStyleFeature(ctrl, beans) {\n        var _this = _super.call(this) || this;\n        _this.staticClasses = [];\n        _this.cellCtrl = ctrl;\n        _this.beans = beans;\n        _this.column = ctrl.getColumn();\n        _this.rowNode = ctrl.getRowNode();\n        return _this;\n    }\n    CellCustomStyleFeature.prototype.setComp = function (comp) {\n        this.cellComp = comp;\n        this.applyUserStyles();\n        this.applyCellClassRules();\n        this.applyClassesFromColDef();\n    };\n    CellCustomStyleFeature.prototype.applyCellClassRules = function () {\n        var _this = this;\n        var colDef = this.column.getColDef();\n        var cellClassParams = {\n            value: this.cellCtrl.getValue(),\n            data: this.rowNode.data,\n            node: this.rowNode,\n            colDef: colDef,\n            column: this.column,\n            rowIndex: this.rowNode.rowIndex,\n            api: this.beans.gridOptionsService.api,\n            columnApi: this.beans.gridOptionsService.columnApi,\n            context: this.beans.gridOptionsService.context\n        };\n        this.beans.stylingService.processClassRules(colDef.cellClassRules, cellClassParams, function (className) { return _this.cellComp.addOrRemoveCssClass(className, true); }, function (className) { return _this.cellComp.addOrRemoveCssClass(className, false); });\n    };\n    CellCustomStyleFeature.prototype.applyUserStyles = function () {\n        var colDef = this.column.getColDef();\n        if (!colDef.cellStyle) {\n            return;\n        }\n        var styles;\n        if (typeof colDef.cellStyle === 'function') {\n            var cellStyleParams = {\n                column: this.column,\n                value: this.cellCtrl.getValue(),\n                colDef: colDef,\n                data: this.rowNode.data,\n                node: this.rowNode,\n                rowIndex: this.rowNode.rowIndex,\n                api: this.beans.gridOptionsService.api,\n                columnApi: this.beans.gridOptionsService.columnApi,\n                context: this.beans.gridOptionsService.context,\n            };\n            var cellStyleFunc = colDef.cellStyle;\n            styles = cellStyleFunc(cellStyleParams);\n        }\n        else {\n            styles = colDef.cellStyle;\n        }\n        if (styles) {\n            this.cellComp.setUserStyles(styles);\n        }\n    };\n    CellCustomStyleFeature.prototype.applyClassesFromColDef = function () {\n        var _this = this;\n        var colDef = this.column.getColDef();\n        var cellClassParams = {\n            value: this.cellCtrl.getValue(),\n            data: this.rowNode.data,\n            node: this.rowNode,\n            column: this.column,\n            colDef: colDef,\n            rowIndex: this.rowNode.rowIndex,\n            api: this.beans.gridOptionsService.api,\n            columnApi: this.beans.gridOptionsService.columnApi,\n            context: this.beans.gridOptionsService.context\n        };\n        if (this.staticClasses.length) {\n            this.staticClasses.forEach(function (className) { return _this.cellComp.addOrRemoveCssClass(className, false); });\n        }\n        this.staticClasses = this.beans.stylingService.getStaticCellClasses(colDef, cellClassParams);\n        if (this.staticClasses.length) {\n            this.staticClasses.forEach(function (className) { return _this.cellComp.addOrRemoveCssClass(className, true); });\n        }\n    };\n    // overriding to make public, as we don't dispose this bean via context\n    CellCustomStyleFeature.prototype.destroy = function () {\n        _super.prototype.destroy.call(this);\n    };\n    return CellCustomStyleFeature;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$1T = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar TooltipFeature = /** @class */ (function (_super) {\n    __extends$1T(TooltipFeature, _super);\n    function TooltipFeature(ctrl, beans) {\n        var _this = _super.call(this) || this;\n        _this.ctrl = ctrl;\n        _this.beans = beans;\n        return _this;\n    }\n    TooltipFeature.prototype.setComp = function (comp) {\n        this.comp = comp;\n        this.setupTooltip();\n    };\n    TooltipFeature.prototype.setupTooltip = function () {\n        this.browserTooltips = this.beans.gridOptionsService.is('enableBrowserTooltips');\n        this.updateTooltipText();\n        if (this.browserTooltips) {\n            this.comp.setTitle(this.tooltip != null ? this.tooltip : undefined);\n        }\n        else {\n            this.createTooltipFeatureIfNeeded();\n        }\n    };\n    TooltipFeature.prototype.updateTooltipText = function () {\n        this.tooltip = this.ctrl.getTooltipValue();\n    };\n    TooltipFeature.prototype.createTooltipFeatureIfNeeded = function () {\n        var _this = this;\n        if (this.genericTooltipFeature != null) {\n            return;\n        }\n        var parent = {\n            getTooltipParams: function () { return _this.getTooltipParams(); },\n            getGui: function () { return _this.ctrl.getGui(); }\n        };\n        this.genericTooltipFeature = this.createManagedBean(new CustomTooltipFeature(parent), this.beans.context);\n    };\n    TooltipFeature.prototype.refreshToolTip = function () {\n        this.updateTooltipText();\n        if (this.browserTooltips) {\n            this.comp.setTitle(this.tooltip != null ? this.tooltip : undefined);\n        }\n    };\n    TooltipFeature.prototype.getTooltipParams = function () {\n        var ctrl = this.ctrl;\n        var column = ctrl.getColumn ? ctrl.getColumn() : undefined;\n        var colDef = ctrl.getColDef ? ctrl.getColDef() : undefined;\n        var rowNode = ctrl.getRowNode ? ctrl.getRowNode() : undefined;\n        return {\n            location: ctrl.getLocation(),\n            colDef: colDef,\n            column: column,\n            rowIndex: ctrl.getRowIndex ? ctrl.getRowIndex() : undefined,\n            node: rowNode,\n            data: rowNode ? rowNode.data : undefined,\n            value: this.getTooltipText(),\n            valueFormatted: ctrl.getValueFormatted ? ctrl.getValueFormatted() : undefined,\n        };\n    };\n    TooltipFeature.prototype.getTooltipText = function () {\n        return this.tooltip;\n    };\n    // overriding to make public, as we don't dispose this bean via context\n    TooltipFeature.prototype.destroy = function () {\n        _super.prototype.destroy.call(this);\n    };\n    return TooltipFeature;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __decorate$1M = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n/** Using the IoC has a slight performance consideration, which is no problem most of the\n * time, unless we are trashing objects - which is the case when scrolling and rowComp\n * and cellComp. So for performance reasons, RowComp and CellComp do not get autowired\n * with the IoC. Instead they get passed this object which is all the beans the RowComp\n * and CellComp need. Not autowiring all the cells gives performance improvement. */\nvar Beans = /** @class */ (function () {\n    function Beans() {\n    }\n    Beans.prototype.postConstruct = function () {\n        this.doingMasterDetail = this.gridOptionsService.isMasterDetail();\n        if (this.gridOptionsService.isRowModelType('clientSide')) {\n            this.clientSideRowModel = this.rowModel;\n        }\n        if (this.gridOptionsService.isRowModelType('serverSide')) {\n            this.serverSideRowModel = this.rowModel;\n        }\n    };\n    __decorate$1M([\n        Autowired('resizeObserverService')\n    ], Beans.prototype, \"resizeObserverService\", void 0);\n    __decorate$1M([\n        Autowired('paginationProxy')\n    ], Beans.prototype, \"paginationProxy\", void 0);\n    __decorate$1M([\n        Autowired('context')\n    ], Beans.prototype, \"context\", void 0);\n    __decorate$1M([\n        Autowired('columnApi')\n    ], Beans.prototype, \"columnApi\", void 0);\n    __decorate$1M([\n        Autowired('gridApi')\n    ], Beans.prototype, \"gridApi\", void 0);\n    __decorate$1M([\n        Autowired('gridOptionsService')\n    ], Beans.prototype, \"gridOptionsService\", void 0);\n    __decorate$1M([\n        Autowired('expressionService')\n    ], Beans.prototype, \"expressionService\", void 0);\n    __decorate$1M([\n        Autowired('environment')\n    ], Beans.prototype, \"environment\", void 0);\n    __decorate$1M([\n        Autowired('rowRenderer')\n    ], Beans.prototype, \"rowRenderer\", void 0);\n    __decorate$1M([\n        Autowired('templateService')\n    ], Beans.prototype, \"templateService\", void 0);\n    __decorate$1M([\n        Autowired('valueService')\n    ], Beans.prototype, \"valueService\", void 0);\n    __decorate$1M([\n        Autowired('eventService')\n    ], Beans.prototype, \"eventService\", void 0);\n    __decorate$1M([\n        Autowired('columnModel')\n    ], Beans.prototype, \"columnModel\", void 0);\n    __decorate$1M([\n        Autowired('headerNavigationService')\n    ], Beans.prototype, \"headerNavigationService\", void 0);\n    __decorate$1M([\n        Autowired('navigationService')\n    ], Beans.prototype, \"navigationService\", void 0);\n    __decorate$1M([\n        Autowired('columnAnimationService')\n    ], Beans.prototype, \"columnAnimationService\", void 0);\n    __decorate$1M([\n        Optional('rangeService')\n    ], Beans.prototype, \"rangeService\", void 0);\n    __decorate$1M([\n        Autowired('focusService')\n    ], Beans.prototype, \"focusService\", void 0);\n    __decorate$1M([\n        Optional('contextMenuFactory')\n    ], Beans.prototype, \"contextMenuFactory\", void 0);\n    __decorate$1M([\n        Autowired('popupService')\n    ], Beans.prototype, \"popupService\", void 0);\n    __decorate$1M([\n        Autowired('valueFormatterService')\n    ], Beans.prototype, \"valueFormatterService\", void 0);\n    __decorate$1M([\n        Autowired('stylingService')\n    ], Beans.prototype, \"stylingService\", void 0);\n    __decorate$1M([\n        Autowired('columnHoverService')\n    ], Beans.prototype, \"columnHoverService\", void 0);\n    __decorate$1M([\n        Autowired('userComponentFactory')\n    ], Beans.prototype, \"userComponentFactory\", void 0);\n    __decorate$1M([\n        Autowired('userComponentRegistry')\n    ], Beans.prototype, \"userComponentRegistry\", void 0);\n    __decorate$1M([\n        Autowired('animationFrameService')\n    ], Beans.prototype, \"animationFrameService\", void 0);\n    __decorate$1M([\n        Autowired('dragService')\n    ], Beans.prototype, \"dragService\", void 0);\n    __decorate$1M([\n        Autowired('dragAndDropService')\n    ], Beans.prototype, \"dragAndDropService\", void 0);\n    __decorate$1M([\n        Autowired('sortController')\n    ], Beans.prototype, \"sortController\", void 0);\n    __decorate$1M([\n        Autowired('filterManager')\n    ], Beans.prototype, \"filterManager\", void 0);\n    __decorate$1M([\n        Autowired('rowContainerHeightService')\n    ], Beans.prototype, \"rowContainerHeightService\", void 0);\n    __decorate$1M([\n        Autowired('frameworkOverrides')\n    ], Beans.prototype, \"frameworkOverrides\", void 0);\n    __decorate$1M([\n        Autowired('cellPositionUtils')\n    ], Beans.prototype, \"cellPositionUtils\", void 0);\n    __decorate$1M([\n        Autowired('rowPositionUtils')\n    ], Beans.prototype, \"rowPositionUtils\", void 0);\n    __decorate$1M([\n        Autowired('selectionService')\n    ], Beans.prototype, \"selectionService\", void 0);\n    __decorate$1M([\n        Optional('selectionHandleFactory')\n    ], Beans.prototype, \"selectionHandleFactory\", void 0);\n    __decorate$1M([\n        Autowired('rowCssClassCalculator')\n    ], Beans.prototype, \"rowCssClassCalculator\", void 0);\n    __decorate$1M([\n        Autowired('rowModel')\n    ], Beans.prototype, \"rowModel\", void 0);\n    __decorate$1M([\n        Autowired('ctrlsService')\n    ], Beans.prototype, \"ctrlsService\", void 0);\n    __decorate$1M([\n        Autowired('ctrlsFactory')\n    ], Beans.prototype, \"ctrlsFactory\", void 0);\n    __decorate$1M([\n        Autowired('agStackComponentsRegistry')\n    ], Beans.prototype, \"agStackComponentsRegistry\", void 0);\n    __decorate$1M([\n        Autowired('valueCache')\n    ], Beans.prototype, \"valueCache\", void 0);\n    __decorate$1M([\n        Autowired('rowNodeEventThrottle')\n    ], Beans.prototype, \"rowNodeEventThrottle\", void 0);\n    __decorate$1M([\n        Autowired('localeService')\n    ], Beans.prototype, \"localeService\", void 0);\n    __decorate$1M([\n        PostConstruct\n    ], Beans.prototype, \"postConstruct\", null);\n    Beans = __decorate$1M([\n        Bean('beans')\n    ], Beans);\n    return Beans;\n}());\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$1S = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar CellMouseListenerFeature = /** @class */ (function (_super) {\n    __extends$1S(CellMouseListenerFeature, _super);\n    function CellMouseListenerFeature(ctrl, beans, column) {\n        var _this = _super.call(this) || this;\n        _this.cellCtrl = ctrl;\n        _this.beans = beans;\n        _this.column = column;\n        return _this;\n    }\n    CellMouseListenerFeature.prototype.onMouseEvent = function (eventName, mouseEvent) {\n        if (isStopPropagationForAgGrid(mouseEvent)) {\n            return;\n        }\n        switch (eventName) {\n            case 'click':\n                this.onCellClicked(mouseEvent);\n                break;\n            case 'mousedown':\n            case 'touchstart':\n                this.onMouseDown(mouseEvent);\n                break;\n            case 'dblclick':\n                this.onCellDoubleClicked(mouseEvent);\n                break;\n            case 'mouseout':\n                this.onMouseOut(mouseEvent);\n                break;\n            case 'mouseover':\n                this.onMouseOver(mouseEvent);\n                break;\n        }\n    };\n    CellMouseListenerFeature.prototype.onCellClicked = function (mouseEvent) {\n        // iPad doesn't have double click - so we need to mimic it to enable editing for iPad.\n        if (this.isDoubleClickOnIPad()) {\n            this.onCellDoubleClicked(mouseEvent);\n            mouseEvent.preventDefault(); // if we don't do this, then iPad zooms in\n            return;\n        }\n        var _a = this.beans, eventService = _a.eventService, rangeService = _a.rangeService, gridOptionsService = _a.gridOptionsService;\n        var multiKeyPressed = mouseEvent.ctrlKey || mouseEvent.metaKey;\n        if (rangeService && multiKeyPressed) {\n            // the mousedown event has created the range already, so we only intersect if there is more than one\n            // range on this cell\n            if (rangeService.getCellRangeCount(this.cellCtrl.getCellPosition()) > 1) {\n                rangeService.intersectLastRange(true);\n            }\n        }\n        var cellClickedEvent = this.cellCtrl.createEvent(mouseEvent, Events.EVENT_CELL_CLICKED);\n        eventService.dispatchEvent(cellClickedEvent);\n        var colDef = this.column.getColDef();\n        if (colDef.onCellClicked) {\n            // to make callback async, do in a timeout\n            window.setTimeout(function () { return colDef.onCellClicked(cellClickedEvent); }, 0);\n        }\n        var editOnSingleClick = (gridOptionsService.is('singleClickEdit') || colDef.singleClickEdit)\n            && !gridOptionsService.is('suppressClickEdit');\n        if (editOnSingleClick) {\n            this.cellCtrl.startRowOrCellEdit();\n        }\n    };\n    // returns true if on iPad and this is second 'click' event in 200ms\n    CellMouseListenerFeature.prototype.isDoubleClickOnIPad = function () {\n        if (!isIOSUserAgent() || isEventSupported('dblclick')) {\n            return false;\n        }\n        var nowMillis = new Date().getTime();\n        var res = nowMillis - this.lastIPadMouseClickEvent < 200;\n        this.lastIPadMouseClickEvent = nowMillis;\n        return res;\n    };\n    CellMouseListenerFeature.prototype.onCellDoubleClicked = function (mouseEvent) {\n        var colDef = this.column.getColDef();\n        // always dispatch event to eventService\n        var cellDoubleClickedEvent = this.cellCtrl.createEvent(mouseEvent, Events.EVENT_CELL_DOUBLE_CLICKED);\n        this.beans.eventService.dispatchEvent(cellDoubleClickedEvent);\n        // check if colDef also wants to handle event\n        if (typeof colDef.onCellDoubleClicked === 'function') {\n            // to make the callback async, do in a timeout\n            window.setTimeout(function () { return colDef.onCellDoubleClicked(cellDoubleClickedEvent); }, 0);\n        }\n        var editOnDoubleClick = !this.beans.gridOptionsService.is('singleClickEdit')\n            && !this.beans.gridOptionsService.is('suppressClickEdit');\n        if (editOnDoubleClick) {\n            this.cellCtrl.startRowOrCellEdit(null, null, mouseEvent);\n        }\n    };\n    CellMouseListenerFeature.prototype.onMouseDown = function (mouseEvent) {\n        var ctrlKey = mouseEvent.ctrlKey, metaKey = mouseEvent.metaKey, shiftKey = mouseEvent.shiftKey;\n        var target = mouseEvent.target;\n        var _a = this.beans, eventService = _a.eventService, rangeService = _a.rangeService;\n        // do not change the range for right-clicks inside an existing range\n        if (this.isRightClickInExistingRange(mouseEvent)) {\n            return;\n        }\n        var ranges = rangeService && rangeService.getCellRanges().length != 0;\n        if (!shiftKey || !ranges) {\n            // We only need to pass true to focusCell when the browser is Safari and we are trying\n            // to focus the cell itself. This should never be true if the mousedown was triggered\n            // due to a click on a cell editor for example.\n            var forceBrowserFocus = (isBrowserSafari()) && !this.cellCtrl.isEditing() && !isFocusableFormField(target);\n            this.cellCtrl.focusCell(forceBrowserFocus);\n        }\n        // if shift clicking, and a range exists, we keep the focus on the cell that started the\n        // range as the user then changes the range selection.\n        if (shiftKey && ranges) {\n            // this stops the cell from getting focused\n            mouseEvent.preventDefault();\n        }\n        // if we are clicking on a checkbox, we need to make sure the cell wrapping that checkbox\n        // is focused but we don't want to change the range selection, so return here.\n        if (this.containsWidget(target)) {\n            return;\n        }\n        if (rangeService) {\n            var thisCell = this.cellCtrl.getCellPosition();\n            if (shiftKey) {\n                rangeService.extendLatestRangeToCell(thisCell);\n            }\n            else {\n                var ctrlKeyPressed = ctrlKey || metaKey;\n                rangeService.setRangeToCell(thisCell, ctrlKeyPressed);\n            }\n        }\n        eventService.dispatchEvent(this.cellCtrl.createEvent(mouseEvent, Events.EVENT_CELL_MOUSE_DOWN));\n    };\n    CellMouseListenerFeature.prototype.isRightClickInExistingRange = function (mouseEvent) {\n        var rangeService = this.beans.rangeService;\n        if (rangeService) {\n            var cellInRange = rangeService.isCellInAnyRange(this.cellCtrl.getCellPosition());\n            if (cellInRange && mouseEvent.button === 2) {\n                return true;\n            }\n        }\n        return false;\n    };\n    CellMouseListenerFeature.prototype.containsWidget = function (target) {\n        return isElementChildOfClass(target, 'ag-selection-checkbox', 3);\n    };\n    CellMouseListenerFeature.prototype.onMouseOut = function (mouseEvent) {\n        if (this.mouseStayingInsideCell(mouseEvent)) {\n            return;\n        }\n        var cellMouseOutEvent = this.cellCtrl.createEvent(mouseEvent, Events.EVENT_CELL_MOUSE_OUT);\n        this.beans.eventService.dispatchEvent(cellMouseOutEvent);\n        this.beans.columnHoverService.clearMouseOver();\n    };\n    CellMouseListenerFeature.prototype.onMouseOver = function (mouseEvent) {\n        if (this.mouseStayingInsideCell(mouseEvent)) {\n            return;\n        }\n        var cellMouseOverEvent = this.cellCtrl.createEvent(mouseEvent, Events.EVENT_CELL_MOUSE_OVER);\n        this.beans.eventService.dispatchEvent(cellMouseOverEvent);\n        this.beans.columnHoverService.setMouseOver([this.column]);\n    };\n    CellMouseListenerFeature.prototype.mouseStayingInsideCell = function (e) {\n        if (!e.target || !e.relatedTarget) {\n            return false;\n        }\n        var eGui = this.cellCtrl.getGui();\n        var cellContainsTarget = eGui.contains(e.target);\n        var cellContainsRelatedTarget = eGui.contains(e.relatedTarget);\n        return cellContainsTarget && cellContainsRelatedTarget;\n    };\n    CellMouseListenerFeature.prototype.destroy = function () {\n    };\n    return CellMouseListenerFeature;\n}(Beans));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$1R = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar CellKeyboardListenerFeature = /** @class */ (function (_super) {\n    __extends$1R(CellKeyboardListenerFeature, _super);\n    function CellKeyboardListenerFeature(ctrl, beans, column, rowNode, rowCtrl) {\n        var _this = _super.call(this) || this;\n        _this.cellCtrl = ctrl;\n        _this.beans = beans;\n        _this.rowNode = rowNode;\n        _this.rowCtrl = rowCtrl;\n        return _this;\n    }\n    CellKeyboardListenerFeature.prototype.setComp = function (eGui) {\n        this.eGui = eGui;\n    };\n    CellKeyboardListenerFeature.prototype.onKeyDown = function (event) {\n        var key = event.key;\n        switch (key) {\n            case KeyCode.ENTER:\n                this.onEnterKeyDown(event);\n                break;\n            case KeyCode.F2:\n                this.onF2KeyDown(event);\n                break;\n            case KeyCode.ESCAPE:\n                this.onEscapeKeyDown(event);\n                break;\n            case KeyCode.TAB:\n                this.onTabKeyDown(event);\n                break;\n            case KeyCode.BACKSPACE:\n            case KeyCode.DELETE:\n                this.onBackspaceOrDeleteKeyPressed(key, event);\n                break;\n            case KeyCode.DOWN:\n            case KeyCode.UP:\n            case KeyCode.RIGHT:\n            case KeyCode.LEFT:\n                this.onNavigationKeyPressed(event, key);\n                break;\n        }\n    };\n    CellKeyboardListenerFeature.prototype.onNavigationKeyPressed = function (event, key) {\n        if (this.cellCtrl.isEditing()) {\n            return;\n        }\n        if (event.shiftKey && this.cellCtrl.isRangeSelectionEnabled()) {\n            this.onShiftRangeSelect(event);\n        }\n        else {\n            this.beans.navigationService.navigateToNextCell(event, key, this.cellCtrl.getCellPosition(), true);\n        }\n        // if we don't prevent default, the grid will scroll with the navigation keys\n        event.preventDefault();\n    };\n    CellKeyboardListenerFeature.prototype.onShiftRangeSelect = function (event) {\n        if (!this.beans.rangeService) {\n            return;\n        }\n        var endCell = this.beans.rangeService.extendLatestRangeInDirection(event);\n        if (endCell) {\n            this.beans.navigationService.ensureCellVisible(endCell);\n        }\n    };\n    CellKeyboardListenerFeature.prototype.onTabKeyDown = function (event) {\n        this.beans.navigationService.onTabKeyDown(this.cellCtrl, event);\n    };\n    CellKeyboardListenerFeature.prototype.onBackspaceOrDeleteKeyPressed = function (key, event) {\n        var _a = this, cellCtrl = _a.cellCtrl, beans = _a.beans, rowNode = _a.rowNode;\n        var gridOptionsService = beans.gridOptionsService, rangeService = beans.rangeService, eventService = beans.eventService;\n        if (cellCtrl.isEditing()) {\n            return;\n        }\n        eventService.dispatchEvent({ type: Events.EVENT_KEY_SHORTCUT_CHANGED_CELL_START });\n        if (isDeleteKey(key, gridOptionsService.is('enableCellEditingOnBackspace'))) {\n            if (rangeService && gridOptionsService.isEnableRangeSelection()) {\n                rangeService.clearCellRangeCellValues();\n            }\n            else if (cellCtrl.isCellEditable()) {\n                rowNode.setDataValue(cellCtrl.getColumn(), null, 'cellClear');\n            }\n        }\n        else {\n            cellCtrl.startRowOrCellEdit(key, undefined, event);\n        }\n        eventService.dispatchEvent({ type: Events.EVENT_KEY_SHORTCUT_CHANGED_CELL_END });\n    };\n    CellKeyboardListenerFeature.prototype.onEnterKeyDown = function (e) {\n        if (this.cellCtrl.isEditing() || this.rowCtrl.isEditing()) {\n            this.cellCtrl.stopEditingAndFocus();\n        }\n        else {\n            if (this.beans.gridOptionsService.is('enterMovesDown')) {\n                this.beans.navigationService.navigateToNextCell(null, KeyCode.DOWN, this.cellCtrl.getCellPosition(), false);\n            }\n            else {\n                this.cellCtrl.startRowOrCellEdit(KeyCode.ENTER, undefined, e);\n                if (this.cellCtrl.isEditing()) {\n                    // if we started editing, then we need to prevent default, otherwise the Enter action can get\n                    // applied to the cell editor. this happened, for example, with largeTextCellEditor where not\n                    // preventing default results in a 'new line' character getting inserted in the text area\n                    // when the editing was started\n                    e.preventDefault();\n                }\n            }\n        }\n    };\n    CellKeyboardListenerFeature.prototype.onF2KeyDown = function (event) {\n        if (!this.cellCtrl.isEditing()) {\n            this.cellCtrl.startRowOrCellEdit(KeyCode.F2, undefined, event);\n        }\n    };\n    CellKeyboardListenerFeature.prototype.onEscapeKeyDown = function (event) {\n        if (this.cellCtrl.isEditing()) {\n            this.cellCtrl.stopRowOrCellEdit(true);\n            this.cellCtrl.focusCell(true);\n        }\n    };\n    CellKeyboardListenerFeature.prototype.onKeyPress = function (event) {\n        // check this, in case focus is on a (for example) a text field inside the cell,\n        // in which cse we should not be listening for these key pressed\n        var eventTarget = event.target;\n        var eventOnChildComponent = eventTarget !== this.eGui;\n        if (eventOnChildComponent || this.cellCtrl.isEditing()) {\n            return;\n        }\n        var pressedChar = String.fromCharCode(event.charCode);\n        if (pressedChar === ' ') {\n            this.onSpaceKeyPressed(event);\n        }\n        else if (isEventFromPrintableCharacter(event)) {\n            this.cellCtrl.startRowOrCellEdit(null, pressedChar, event);\n            // if we don't prevent default, then the keypress also gets applied to the text field\n            // (at least when doing the default editor), but we need to allow the editor to decide\n            // what it wants to do. we only do this IF editing was started - otherwise it messes\n            // up when the use is not doing editing, but using rendering with text fields in cellRenderer\n            // (as it would block the the user from typing into text fields).\n            event.preventDefault();\n        }\n    };\n    CellKeyboardListenerFeature.prototype.onSpaceKeyPressed = function (event) {\n        var gridOptionsService = this.beans.gridOptionsService;\n        if (!this.cellCtrl.isEditing() && gridOptionsService.isRowSelection()) {\n            var currentSelection = this.rowNode.isSelected();\n            var newSelection = !currentSelection;\n            if (newSelection || !gridOptionsService.is('suppressRowDeselection')) {\n                var groupSelectsFiltered = this.beans.gridOptionsService.is('groupSelectsFiltered');\n                var updatedCount = this.rowNode.setSelectedParams({\n                    newValue: newSelection,\n                    rangeSelect: event.shiftKey,\n                    groupSelectsFiltered: groupSelectsFiltered,\n                    event: event,\n                    source: 'spacePressed'\n                });\n                if (currentSelection === undefined && updatedCount === 0) {\n                    this.rowNode.setSelectedParams({\n                        newValue: false,\n                        rangeSelect: event.shiftKey,\n                        groupSelectsFiltered: groupSelectsFiltered,\n                        event: event,\n                        source: 'spacePressed'\n                    });\n                }\n            }\n        }\n        // prevent default as space key, by default, moves browser scroll down\n        event.preventDefault();\n    };\n    CellKeyboardListenerFeature.prototype.destroy = function () {\n        _super.prototype.destroy.call(this);\n    };\n    return CellKeyboardListenerFeature;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$1Q = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$1L = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar DndSourceComp = /** @class */ (function (_super) {\n    __extends$1Q(DndSourceComp, _super);\n    function DndSourceComp(rowNode, column, beans, eCell) {\n        var _this = _super.call(this, \"<div class=\\\"ag-drag-handle ag-row-drag\\\" draggable=\\\"true\\\"></div>\") || this;\n        _this.rowNode = rowNode;\n        _this.column = column;\n        _this.beans = beans;\n        _this.eCell = eCell;\n        return _this;\n    }\n    DndSourceComp.prototype.postConstruct = function () {\n        var eGui = this.getGui();\n        eGui.appendChild(createIconNoSpan('rowDrag', this.beans.gridOptionsService, null));\n        // we need to stop the event propagation here to avoid starting a range selection while dragging\n        this.addGuiEventListener('mousedown', function (e) {\n            e.stopPropagation();\n        });\n        this.addDragSource();\n        this.checkVisibility();\n    };\n    DndSourceComp.prototype.addDragSource = function () {\n        this.addGuiEventListener('dragstart', this.onDragStart.bind(this));\n    };\n    DndSourceComp.prototype.onDragStart = function (dragEvent) {\n        var _this = this;\n        var providedOnRowDrag = this.column.getColDef().dndSourceOnRowDrag;\n        dragEvent.dataTransfer.setDragImage(this.eCell, 0, 0);\n        // default behaviour is to convert data to json and set into drag component\n        var defaultOnRowDrag = function () {\n            try {\n                var jsonData = JSON.stringify(_this.rowNode.data);\n                dragEvent.dataTransfer.setData('application/json', jsonData);\n                dragEvent.dataTransfer.setData('text/plain', jsonData);\n            }\n            catch (e) {\n                // if we cannot convert the data to json, then we do not set the type\n            }\n        };\n        if (providedOnRowDrag) {\n            var params = {\n                rowNode: this.rowNode, dragEvent: dragEvent,\n                api: this.gridOptionsService.api,\n                columnApi: this.gridOptionsService.columnApi,\n                context: this.gridOptionsService.context\n            };\n            providedOnRowDrag(params);\n        }\n        else {\n            defaultOnRowDrag();\n        }\n    };\n    DndSourceComp.prototype.checkVisibility = function () {\n        var visible = this.column.isDndSource(this.rowNode);\n        this.setDisplayed(visible);\n    };\n    __decorate$1L([\n        PostConstruct\n    ], DndSourceComp.prototype, \"postConstruct\", null);\n    return DndSourceComp;\n}(Component));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$1P = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __assign$8 = (undefined && undefined.__assign) || function () {\n    __assign$8 = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign$8.apply(this, arguments);\n};\nvar CSS_CELL = 'ag-cell';\nvar CSS_AUTO_HEIGHT = 'ag-cell-auto-height';\nvar CSS_NORMAL_HEIGHT = 'ag-cell-normal-height';\nvar CSS_CELL_FOCUS = 'ag-cell-focus';\nvar CSS_CELL_FIRST_RIGHT_PINNED = 'ag-cell-first-right-pinned';\nvar CSS_CELL_LAST_LEFT_PINNED = 'ag-cell-last-left-pinned';\nvar CSS_CELL_NOT_INLINE_EDITING = 'ag-cell-not-inline-editing';\nvar CSS_COLUMN_HOVER = 'ag-column-hover';\nvar CSS_CELL_WRAP_TEXT = 'ag-cell-wrap-text';\nvar instanceIdSequence$3 = 0;\nvar CellCtrl = /** @class */ (function (_super) {\n    __extends$1P(CellCtrl, _super);\n    function CellCtrl(column, rowNode, beans, rowCtrl) {\n        var _this = _super.call(this) || this;\n        _this.cellRangeFeature = null;\n        _this.cellPositionFeature = null;\n        _this.cellCustomStyleFeature = null;\n        _this.tooltipFeature = null;\n        _this.cellMouseListenerFeature = null;\n        _this.cellKeyboardListenerFeature = null;\n        _this.suppressRefreshCell = false;\n        _this.onCellCompAttachedFuncs = [];\n        _this.column = column;\n        _this.rowNode = rowNode;\n        _this.beans = beans;\n        _this.rowCtrl = rowCtrl;\n        // unique id to this instance, including the column ID to help with debugging in React as it's used in 'key'\n        _this.instanceId = column.getId() + '-' + instanceIdSequence$3++;\n        _this.createCellPosition();\n        _this.addFeatures();\n        return _this;\n    }\n    CellCtrl.prototype.addFeatures = function () {\n        var _this = this;\n        this.cellPositionFeature = new CellPositionFeature(this, this.beans);\n        this.addDestroyFunc(function () { var _a; (_a = _this.cellPositionFeature) === null || _a === void 0 ? void 0 : _a.destroy(); _this.cellPositionFeature = null; });\n        this.cellCustomStyleFeature = new CellCustomStyleFeature(this, this.beans);\n        this.addDestroyFunc(function () { var _a; (_a = _this.cellCustomStyleFeature) === null || _a === void 0 ? void 0 : _a.destroy(); _this.cellCustomStyleFeature = null; });\n        this.cellMouseListenerFeature = new CellMouseListenerFeature(this, this.beans, this.column);\n        this.addDestroyFunc(function () { var _a; (_a = _this.cellMouseListenerFeature) === null || _a === void 0 ? void 0 : _a.destroy(); _this.cellMouseListenerFeature = null; });\n        this.cellKeyboardListenerFeature = new CellKeyboardListenerFeature(this, this.beans, this.column, this.rowNode, this.rowCtrl);\n        this.addDestroyFunc(function () { var _a; (_a = _this.cellKeyboardListenerFeature) === null || _a === void 0 ? void 0 : _a.destroy(); _this.cellKeyboardListenerFeature = null; });\n        var rangeSelectionEnabled = this.beans.rangeService && this.beans.gridOptionsService.isEnableRangeSelection();\n        if (rangeSelectionEnabled) {\n            this.cellRangeFeature = new CellRangeFeature(this.beans, this);\n            this.addDestroyFunc(function () { var _a; (_a = _this.cellRangeFeature) === null || _a === void 0 ? void 0 : _a.destroy(); _this.cellRangeFeature = null; });\n        }\n        if (this.column.isTooltipEnabled()) {\n            this.addTooltipFeature();\n        }\n    };\n    CellCtrl.prototype.addTooltipFeature = function () {\n        var _this = this;\n        var getTooltipValue = function () {\n            var colDef = _this.column.getColDef();\n            var data = _this.rowNode.data;\n            if (colDef.tooltipField && exists(data)) {\n                return getValueUsingField(data, colDef.tooltipField, _this.column.isTooltipFieldContainsDots());\n            }\n            var valueGetter = colDef.tooltipValueGetter;\n            if (valueGetter) {\n                return valueGetter({\n                    location: 'cell',\n                    api: _this.beans.gridOptionsService.api,\n                    columnApi: _this.beans.gridOptionsService.columnApi,\n                    context: _this.beans.gridOptionsService.context,\n                    colDef: _this.column.getColDef(),\n                    column: _this.column,\n                    rowIndex: _this.cellPosition.rowIndex,\n                    node: _this.rowNode,\n                    data: _this.rowNode.data,\n                    value: _this.value,\n                    valueFormatted: _this.valueFormatted,\n                });\n            }\n            return null;\n        };\n        var tooltipCtrl = {\n            getColumn: function () { return _this.column; },\n            getColDef: function () { return _this.column.getColDef(); },\n            getRowIndex: function () { return _this.cellPosition.rowIndex; },\n            getRowNode: function () { return _this.rowNode; },\n            getGui: function () { return _this.getGui(); },\n            getLocation: function () { return 'cell'; },\n            getTooltipValue: getTooltipValue,\n            // this makes no sense, why is the cell formatted value passed to the tooltip???\n            getValueFormatted: function () { return _this.valueFormatted; }\n        };\n        this.tooltipFeature = new TooltipFeature(tooltipCtrl, this.beans);\n        this.addDestroyFunc(function () { var _a; (_a = _this.tooltipFeature) === null || _a === void 0 ? void 0 : _a.destroy(); _this.tooltipFeature = null; });\n    };\n    CellCtrl.prototype.setComp = function (comp, eGui, eCellWrapper, printLayout, startEditing) {\n        var _a, _b, _c, _d;\n        this.cellComp = comp;\n        this.eGui = eGui;\n        this.printLayout = printLayout;\n        // we force to make sure formatter gets called at least once,\n        // even if value has not changed (is is undefined)\n        this.updateAndFormatValue(true);\n        this.addDomData();\n        this.onCellFocused();\n        this.applyStaticCssClasses();\n        this.setWrapText();\n        this.onFirstRightPinnedChanged();\n        this.onLastLeftPinnedChanged();\n        this.onColumnHover();\n        this.setupControlComps();\n        if (eCellWrapper) {\n            this.setupAutoHeight(eCellWrapper);\n        }\n        this.setAriaColIndex();\n        if (!this.beans.gridOptionsService.is('suppressCellFocus')) {\n            this.cellComp.setTabIndex(-1);\n        }\n        var colIdSanitised = escapeString(this.column.getId());\n        this.cellComp.setColId(colIdSanitised);\n        this.cellComp.setRole('gridcell');\n        (_a = this.cellPositionFeature) === null || _a === void 0 ? void 0 : _a.setComp(eGui);\n        (_b = this.cellCustomStyleFeature) === null || _b === void 0 ? void 0 : _b.setComp(comp);\n        (_c = this.tooltipFeature) === null || _c === void 0 ? void 0 : _c.setComp(comp);\n        (_d = this.cellKeyboardListenerFeature) === null || _d === void 0 ? void 0 : _d.setComp(this.eGui);\n        if (this.cellRangeFeature) {\n            this.cellRangeFeature.setComp(comp, eGui);\n        }\n        if (startEditing && this.isCellEditable()) {\n            this.startEditing();\n        }\n        else {\n            this.showValue();\n        }\n        if (this.onCellCompAttachedFuncs.length) {\n            this.onCellCompAttachedFuncs.forEach(function (func) { return func(); });\n            this.onCellCompAttachedFuncs = [];\n        }\n    };\n    CellCtrl.prototype.setupAutoHeight = function (eCellWrapper) {\n        var _this = this;\n        if (!this.column.isAutoHeight()) {\n            return;\n        }\n        var eParentCell = eCellWrapper.parentElement;\n        // taking minRowHeight from getRowHeightForNode means the getRowHeight() callback is used,\n        // thus allowing different min heights for different rows.\n        var minRowHeight = this.beans.gridOptionsService.getRowHeightForNode(this.rowNode).height;\n        var measureHeight = function (timesCalled) {\n            if (_this.editing) {\n                return;\n            }\n            // because of the retry's below, it's possible the retry's go beyond\n            // the rows life.\n            if (!_this.isAlive()) {\n                return;\n            }\n            var _a = getElementSize(eParentCell), paddingTop = _a.paddingTop, paddingBottom = _a.paddingBottom, borderBottomWidth = _a.borderBottomWidth, borderTopWidth = _a.borderTopWidth;\n            var extraHeight = paddingTop + paddingBottom + borderBottomWidth + borderTopWidth;\n            var wrapperHeight = eCellWrapper.offsetHeight;\n            var autoHeight = wrapperHeight + extraHeight;\n            if (timesCalled < 5) {\n                // if not in doc yet, means framework not yet inserted, so wait for next VM turn,\n                // maybe it will be ready next VM turn\n                var doc = _this.beans.gridOptionsService.getDocument();\n                var notYetInDom = !doc || !doc.contains(eCellWrapper);\n                // this happens in React, where React hasn't put any content in. we say 'possibly'\n                // as a) may not be React and b) the cell could be empty anyway\n                var possiblyNoContentYet = autoHeight == 0;\n                if (notYetInDom || possiblyNoContentYet) {\n                    _this.beans.frameworkOverrides.setTimeout(function () { return measureHeight(timesCalled + 1); }, 0);\n                    return;\n                }\n            }\n            var newHeight = Math.max(autoHeight, minRowHeight);\n            _this.rowNode.setRowAutoHeight(newHeight, _this.column);\n        };\n        var listener = function () { return measureHeight(0); };\n        // do once to set size in case size doesn't change, common when cell is blank\n        listener();\n        var destroyResizeObserver = this.beans.resizeObserverService.observeResize(eCellWrapper, listener);\n        this.addDestroyFunc(function () {\n            destroyResizeObserver();\n            _this.rowNode.setRowAutoHeight(undefined, _this.column);\n        });\n    };\n    CellCtrl.prototype.getInstanceId = function () {\n        return this.instanceId;\n    };\n    CellCtrl.prototype.showValue = function (forceNewCellRendererInstance) {\n        if (forceNewCellRendererInstance === void 0) { forceNewCellRendererInstance = false; }\n        var valueToDisplay = this.valueFormatted != null ? this.valueFormatted : this.value;\n        var params = this.createCellRendererParams();\n        var compDetails = this.beans.userComponentFactory.getCellRendererDetails(this.column.getColDef(), params);\n        this.cellComp.setRenderDetails(compDetails, valueToDisplay, forceNewCellRendererInstance);\n        this.refreshHandle();\n    };\n    CellCtrl.prototype.setupControlComps = function () {\n        var colDef = this.column.getColDef();\n        this.includeSelection = this.isIncludeControl(colDef.checkboxSelection);\n        this.includeRowDrag = this.isIncludeControl(colDef.rowDrag);\n        this.includeDndSource = this.isIncludeControl(colDef.dndSource);\n        this.cellComp.setIncludeSelection(this.includeSelection);\n        this.cellComp.setIncludeDndSource(this.includeDndSource);\n        this.cellComp.setIncludeRowDrag(this.includeRowDrag);\n    };\n    CellCtrl.prototype.isForceWrapper = function () {\n        // text selection requires the value to be wrapped in another element\n        var forceWrapper = this.beans.gridOptionsService.is('enableCellTextSelection') || this.column.isAutoHeight();\n        return forceWrapper;\n    };\n    CellCtrl.prototype.isIncludeControl = function (value) {\n        var rowNodePinned = this.rowNode.rowPinned != null;\n        var isFunc = typeof value === 'function';\n        var res = rowNodePinned ? false : isFunc || value === true;\n        return res;\n    };\n    CellCtrl.prototype.refreshShouldDestroy = function () {\n        var colDef = this.column.getColDef();\n        var selectionChanged = this.includeSelection != this.isIncludeControl(colDef.checkboxSelection);\n        var rowDragChanged = this.includeRowDrag != this.isIncludeControl(colDef.rowDrag);\n        var dndSourceChanged = this.includeDndSource != this.isIncludeControl(colDef.dndSource);\n        return selectionChanged || rowDragChanged || dndSourceChanged;\n    };\n    // either called internally if single cell editing, or called by rowRenderer if row editing\n    CellCtrl.prototype.startEditing = function (key, charPress, cellStartedEdit, event) {\n        var _this = this;\n        if (key === void 0) { key = null; }\n        if (charPress === void 0) { charPress = null; }\n        if (cellStartedEdit === void 0) { cellStartedEdit = false; }\n        if (event === void 0) { event = null; }\n        if (!this.isCellEditable() || this.editing) {\n            return;\n        }\n        // because of async in React, the cellComp may not be set yet, if no cellComp then we are\n        // yet to initialise the cell, so we re-schedule this operation for when celLComp is attached\n        if (!this.cellComp) {\n            this.onCellCompAttachedFuncs.push(function () { _this.startEditing(key, charPress, cellStartedEdit, event); });\n            return;\n        }\n        var editorParams = this.createCellEditorParams(key, charPress, cellStartedEdit);\n        var colDef = this.column.getColDef();\n        var compDetails = this.beans.userComponentFactory.getCellEditorDetails(colDef, editorParams);\n        // if cellEditorSelector was used, we give preference to popup and popupPosition from the selector\n        var popup = (compDetails === null || compDetails === void 0 ? void 0 : compDetails.popupFromSelector) != null ? compDetails.popupFromSelector : !!colDef.cellEditorPopup;\n        var position = (compDetails === null || compDetails === void 0 ? void 0 : compDetails.popupPositionFromSelector) != null ? compDetails.popupPositionFromSelector : colDef.cellEditorPopupPosition;\n        this.setEditing(true);\n        this.cellComp.setEditDetails(compDetails, popup, position);\n        var e = this.createEvent(event, Events.EVENT_CELL_EDITING_STARTED);\n        this.beans.eventService.dispatchEvent(e);\n    };\n    CellCtrl.prototype.setEditing = function (editing) {\n        if (this.editing === editing) {\n            return;\n        }\n        this.editing = editing;\n        this.refreshHandle();\n    };\n    // pass in 'true' to cancel the editing.\n    CellCtrl.prototype.stopRowOrCellEdit = function (cancel) {\n        if (cancel === void 0) { cancel = false; }\n        if (this.beans.gridOptionsService.get('editType') === 'fullRow') {\n            this.rowCtrl.stopRowEditing(cancel);\n        }\n        else {\n            this.stopEditing(cancel);\n        }\n    };\n    CellCtrl.prototype.onPopupEditorClosed = function () {\n        if (!this.isEditing()) {\n            return;\n        }\n        // note: this happens because of a click outside of the grid or if the popupEditor\n        // is closed with `Escape` key. if another cell was clicked, then the editing will\n        // have already stopped and returned on the conditional above.\n        this.stopEditingAndFocus();\n    };\n    CellCtrl.prototype.takeValueFromCellEditor = function (cancel) {\n        var noValueResult = { newValueExists: false };\n        if (cancel) {\n            return noValueResult;\n        }\n        var cellEditor = this.cellComp.getCellEditor();\n        if (!cellEditor) {\n            return noValueResult;\n        }\n        var userWantsToCancel = cellEditor.isCancelAfterEnd && cellEditor.isCancelAfterEnd();\n        if (userWantsToCancel) {\n            return noValueResult;\n        }\n        var newValue = cellEditor.getValue();\n        return {\n            newValue: newValue,\n            newValueExists: true\n        };\n    };\n    /**\n     * @returns `True` if the value changes, otherwise `False`.\n     */\n    CellCtrl.prototype.saveNewValue = function (oldValue, newValue) {\n        if (newValue === oldValue) {\n            return false;\n        }\n        // we suppressRefreshCell because the call to rowNode.setDataValue() results in change detection\n        // getting triggered, which results in all cells getting refreshed. we do not want this refresh\n        // to happen on this call as we want to call it explicitly below. otherwise refresh gets called twice.\n        // if we only did this refresh (and not the one below) then the cell would flash and not be forced.\n        this.suppressRefreshCell = true;\n        var valueChanged = this.rowNode.setDataValue(this.column, newValue, 'edit');\n        this.suppressRefreshCell = false;\n        return valueChanged;\n    };\n    /**\n     * Ends the Cell Editing\n     * @param cancel `True` if the edit process is being canceled.\n     * @returns `True` if the value of the `GridCell` has been updated, otherwise `False`.\n     */\n    CellCtrl.prototype.stopEditing = function (cancel) {\n        if (cancel === void 0) { cancel = false; }\n        if (!this.editing) {\n            return false;\n        }\n        var _a = this.takeValueFromCellEditor(cancel), newValue = _a.newValue, newValueExists = _a.newValueExists;\n        var oldValue = this.rowNode.getValueFromValueService(this.column);\n        var valueChanged = false;\n        if (newValueExists) {\n            valueChanged = this.saveNewValue(oldValue, newValue);\n        }\n        this.setEditing(false);\n        this.cellComp.setEditDetails(); // passing nothing stops editing\n        this.updateAndFormatValue();\n        this.refreshCell({ forceRefresh: true, suppressFlash: true });\n        this.dispatchEditingStoppedEvent(oldValue, newValue, !cancel && !!valueChanged);\n        return valueChanged;\n    };\n    CellCtrl.prototype.dispatchEditingStoppedEvent = function (oldValue, newValue, valueChanged) {\n        var editingStoppedEvent = __assign$8(__assign$8({}, this.createEvent(null, Events.EVENT_CELL_EDITING_STOPPED)), { oldValue: oldValue,\n            newValue: newValue,\n            valueChanged: valueChanged });\n        this.beans.eventService.dispatchEvent(editingStoppedEvent);\n    };\n    CellCtrl.prototype.createCellEditorParams = function (key, charPress, cellStartedEdit) {\n        return {\n            value: this.rowNode.getValueFromValueService(this.column),\n            eventKey: key,\n            charPress: charPress,\n            column: this.column,\n            colDef: this.column.getColDef(),\n            rowIndex: this.getCellPosition().rowIndex,\n            node: this.rowNode,\n            data: this.rowNode.data,\n            api: this.beans.gridOptionsService.api,\n            cellStartedEdit: cellStartedEdit,\n            columnApi: this.beans.gridOptionsService.columnApi,\n            context: this.beans.gridOptionsService.context,\n            onKeyDown: this.onKeyDown.bind(this),\n            stopEditing: this.stopEditingAndFocus.bind(this),\n            eGridCell: this.getGui(),\n            parseValue: this.parseValue.bind(this),\n            formatValue: this.formatValue.bind(this)\n        };\n    };\n    CellCtrl.prototype.createCellRendererParams = function () {\n        var _this = this;\n        var res = {\n            value: this.value,\n            valueFormatted: this.valueFormatted,\n            getValue: function () { return _this.rowNode.getValueFromValueService(_this.column); },\n            setValue: function (value) { return _this.beans.valueService.setValue(_this.rowNode, _this.column, value); },\n            formatValue: this.formatValue.bind(this),\n            data: this.rowNode.data,\n            node: this.rowNode,\n            pinned: this.column.getPinned(),\n            colDef: this.column.getColDef(),\n            column: this.column,\n            rowIndex: this.getCellPosition().rowIndex,\n            api: this.beans.gridOptionsService.api,\n            columnApi: this.beans.gridOptionsService.columnApi,\n            context: this.beans.gridOptionsService.context,\n            refreshCell: this.refreshCell.bind(this),\n            eGridCell: this.getGui(),\n            eParentOfValue: this.cellComp.getParentOfValue(),\n            registerRowDragger: function (rowDraggerElement, dragStartPixels, value, suppressVisibilityChange) { return _this.registerRowDragger(rowDraggerElement, dragStartPixels, suppressVisibilityChange); },\n        };\n        return res;\n    };\n    CellCtrl.prototype.parseValue = function (newValue) {\n        var colDef = this.column.getColDef();\n        var params = {\n            node: this.rowNode,\n            data: this.rowNode.data,\n            oldValue: this.getValue(),\n            newValue: newValue,\n            colDef: colDef,\n            column: this.column,\n            api: this.beans.gridOptionsService.api,\n            columnApi: this.beans.gridOptionsService.columnApi,\n            context: this.beans.gridOptionsService.context\n        };\n        var valueParser = colDef.valueParser;\n        if (exists(valueParser)) {\n            if (typeof valueParser === 'function') {\n                return valueParser(params);\n            }\n            return this.beans.expressionService.evaluate(valueParser, params);\n        }\n        return newValue;\n    };\n    CellCtrl.prototype.setFocusOutOnEditor = function () {\n        if (!this.editing) {\n            return;\n        }\n        var cellEditor = this.cellComp.getCellEditor();\n        if (cellEditor && cellEditor.focusOut) {\n            cellEditor.focusOut();\n        }\n    };\n    CellCtrl.prototype.setFocusInOnEditor = function () {\n        if (!this.editing) {\n            return;\n        }\n        var cellEditor = this.cellComp.getCellEditor();\n        if (cellEditor && cellEditor.focusIn) {\n            // if the editor is present, then we just focus it\n            cellEditor.focusIn();\n        }\n        else {\n            // if the editor is not present, it means async cell editor (eg React fibre)\n            // and we are trying to set focus before the cell editor is present, so we\n            // focus the cell instead\n            this.focusCell(true);\n        }\n    };\n    CellCtrl.prototype.onCellChanged = function (event) {\n        // because of async in React, the cellComp may not be set yet, if no cellComp then we are\n        // yet to initialise the cell, so no need to refresh.\n        if (!this.cellComp) {\n            return;\n        }\n        var eventImpactsThisCell = event.column === this.column;\n        if (eventImpactsThisCell) {\n            this.refreshCell({});\n        }\n    };\n    // + stop editing {forceRefresh: true, suppressFlash: true}\n    // + event cellChanged {}\n    // + cellRenderer.params.refresh() {} -> method passes 'as is' to the cellRenderer, so params could be anything\n    // + rowCtrl: event dataChanged {suppressFlash: !update, newData: !update}\n    // + rowCtrl: api refreshCells() {animate: true/false}\n    // + rowRenderer: api softRefreshView() {}\n    CellCtrl.prototype.refreshCell = function (params) {\n        var _a, _b, _c;\n        // if we are in the middle of 'stopEditing', then we don't refresh here, as refresh gets called explicitly\n        if (this.suppressRefreshCell || this.editing) {\n            return;\n        }\n        // In React, due to async, it's possible a refresh was asked for before the CellComp\n        // has been set. If this happens, we skip the refresh, as the cell is going to be\n        // initialised anyway once the CellComp is set.\n        if (!this.cellComp) {\n            return;\n        }\n        var colDef = this.column.getColDef();\n        var newData = params != null && !!params.newData;\n        var suppressFlash = (params != null && !!params.suppressFlash) || !!colDef.suppressCellFlash;\n        // we always refresh if cell has no value - this can happen when user provides Cell Renderer and the\n        // cell renderer doesn't rely on a value, instead it could be looking directly at the data, or maybe\n        // printing the current time (which would be silly)???. Generally speaking\n        // non of {field, valueGetter, showRowGroup} is bad in the users application, however for this edge case, it's\n        // best always refresh and take the performance hit rather than never refresh and users complaining in support\n        // that cells are not updating.\n        var noValueProvided = colDef.field == null && colDef.valueGetter == null && colDef.showRowGroup == null;\n        var forceRefresh = (params && params.forceRefresh) || noValueProvided || newData;\n        var valuesDifferent = this.updateAndFormatValue();\n        var dataNeedsUpdating = forceRefresh || valuesDifferent;\n        if (dataNeedsUpdating) {\n            // if it's 'new data', then we don't refresh the cellRenderer, even if refresh method is available.\n            // this is because if the whole data is new (ie we are showing stock price 'BBA' now and not 'SSD')\n            // then we are not showing a movement in the stock price, rather we are showing different stock.\n            this.showValue(newData);\n            // we don't want to flash the cells when processing a filter change, as otherwise the UI would\n            // be to busy. see comment in FilterManager with regards processingFilterChange\n            var processingFilterChange = this.beans.filterManager.isSuppressFlashingCellsBecauseFiltering();\n            var flashCell = !suppressFlash && !processingFilterChange &&\n                (this.beans.gridOptionsService.is('enableCellChangeFlash') || colDef.enableCellChangeFlash);\n            if (flashCell) {\n                this.flashCell();\n            }\n            (_a = this.cellCustomStyleFeature) === null || _a === void 0 ? void 0 : _a.applyUserStyles();\n            (_b = this.cellCustomStyleFeature) === null || _b === void 0 ? void 0 : _b.applyClassesFromColDef();\n        }\n        this.refreshToolTip();\n        // we do cellClassRules even if the value has not changed, so that users who have rules that\n        // look at other parts of the row (where the other part of the row might of changed) will work.\n        (_c = this.cellCustomStyleFeature) === null || _c === void 0 ? void 0 : _c.applyCellClassRules();\n    };\n    // cell editors call this, when they want to stop for reasons other\n    // than what we pick up on. eg selecting from a dropdown ends editing.\n    CellCtrl.prototype.stopEditingAndFocus = function (suppressNavigateAfterEdit) {\n        if (suppressNavigateAfterEdit === void 0) { suppressNavigateAfterEdit = false; }\n        this.stopRowOrCellEdit();\n        this.focusCell(true);\n        if (!suppressNavigateAfterEdit) {\n            this.navigateAfterEdit();\n        }\n    };\n    CellCtrl.prototype.navigateAfterEdit = function () {\n        var fullRowEdit = this.beans.gridOptionsService.get('editType') === 'fullRow';\n        if (fullRowEdit) {\n            return;\n        }\n        var enterMovesDownAfterEdit = this.beans.gridOptionsService.is('enterMovesDownAfterEdit');\n        if (enterMovesDownAfterEdit) {\n            this.beans.navigationService.navigateToNextCell(null, KeyCode.DOWN, this.getCellPosition(), false);\n        }\n    };\n    // user can also call this via API\n    CellCtrl.prototype.flashCell = function (delays) {\n        var flashDelay = delays && delays.flashDelay;\n        var fadeDelay = delays && delays.fadeDelay;\n        this.animateCell('data-changed', flashDelay, fadeDelay);\n    };\n    CellCtrl.prototype.animateCell = function (cssName, flashDelay, fadeDelay) {\n        var _this = this;\n        var _a, _b;\n        var fullName = \"ag-cell-\" + cssName;\n        var animationFullName = \"ag-cell-\" + cssName + \"-animation\";\n        var gridOptionsService = this.beans.gridOptionsService;\n        if (!flashDelay) {\n            flashDelay = (_a = gridOptionsService.getNum('cellFlashDelay')) !== null && _a !== void 0 ? _a : 500;\n        }\n        if (!exists(fadeDelay)) {\n            fadeDelay = (_b = gridOptionsService.getNum('cellFadeDelay')) !== null && _b !== void 0 ? _b : 1000;\n        }\n        // we want to highlight the cells, without any animation\n        this.cellComp.addOrRemoveCssClass(fullName, true);\n        this.cellComp.addOrRemoveCssClass(animationFullName, false);\n        // then once that is applied, we remove the highlight with animation\n        window.setTimeout(function () {\n            if (!_this.isAlive()) {\n                return;\n            }\n            _this.cellComp.addOrRemoveCssClass(fullName, false);\n            _this.cellComp.addOrRemoveCssClass(animationFullName, true);\n            _this.eGui.style.transition = \"background-color \" + fadeDelay + \"ms\";\n            window.setTimeout(function () {\n                if (!_this.isAlive()) {\n                    return;\n                }\n                // and then to leave things as we got them, we remove the animation\n                _this.cellComp.addOrRemoveCssClass(animationFullName, false);\n                _this.eGui.style.transition = '';\n            }, fadeDelay);\n        }, flashDelay);\n    };\n    CellCtrl.prototype.onFlashCells = function (event) {\n        if (!this.cellComp) {\n            return;\n        }\n        var cellId = this.beans.cellPositionUtils.createId(this.getCellPosition());\n        var shouldFlash = event.cells[cellId];\n        if (shouldFlash) {\n            this.animateCell('highlight');\n        }\n    };\n    CellCtrl.prototype.isCellEditable = function () {\n        return this.column.isCellEditable(this.rowNode);\n    };\n    CellCtrl.prototype.isSuppressFillHandle = function () {\n        return this.column.isSuppressFillHandle();\n    };\n    CellCtrl.prototype.formatValue = function (value) {\n        var res = this.callValueFormatter(value);\n        return res != null ? res : value;\n    };\n    CellCtrl.prototype.callValueFormatter = function (value) {\n        return this.beans.valueFormatterService.formatValue(this.column, this.rowNode, value);\n    };\n    CellCtrl.prototype.updateAndFormatValue = function (force) {\n        if (force === void 0) { force = false; }\n        var oldValue = this.value;\n        var oldValueFormatted = this.valueFormatted;\n        this.value = this.rowNode.getValueFromValueService(this.column);\n        this.valueFormatted = this.callValueFormatter(this.value);\n        var valuesDifferent = force ? true :\n            !this.valuesAreEqual(oldValue, this.value) || this.valueFormatted != oldValueFormatted;\n        return valuesDifferent;\n    };\n    CellCtrl.prototype.valuesAreEqual = function (val1, val2) {\n        // if the user provided an equals method, use that, otherwise do simple comparison\n        var colDef = this.column.getColDef();\n        return colDef.equals ? colDef.equals(val1, val2) : val1 === val2;\n    };\n    CellCtrl.prototype.getComp = function () {\n        return this.cellComp;\n    };\n    CellCtrl.prototype.getValue = function () {\n        return this.value;\n    };\n    CellCtrl.prototype.getValueFormatted = function () {\n        return this.valueFormatted;\n    };\n    CellCtrl.prototype.addDomData = function () {\n        var _this = this;\n        var element = this.getGui();\n        this.beans.gridOptionsService.setDomData(element, CellCtrl.DOM_DATA_KEY_CELL_CTRL, this);\n        this.addDestroyFunc(function () { return _this.beans.gridOptionsService.setDomData(element, CellCtrl.DOM_DATA_KEY_CELL_CTRL, null); });\n    };\n    CellCtrl.prototype.createEvent = function (domEvent, eventType) {\n        var event = {\n            type: eventType,\n            node: this.rowNode,\n            data: this.rowNode.data,\n            value: this.value,\n            column: this.column,\n            colDef: this.column.getColDef(),\n            context: this.beans.gridOptionsService.context,\n            api: this.beans.gridApi,\n            columnApi: this.beans.columnApi,\n            rowPinned: this.rowNode.rowPinned,\n            event: domEvent,\n            rowIndex: this.rowNode.rowIndex\n        };\n        return event;\n    };\n    CellCtrl.prototype.onKeyPress = function (event) {\n        var _a;\n        (_a = this.cellKeyboardListenerFeature) === null || _a === void 0 ? void 0 : _a.onKeyPress(event);\n    };\n    CellCtrl.prototype.onKeyDown = function (event) {\n        var _a;\n        (_a = this.cellKeyboardListenerFeature) === null || _a === void 0 ? void 0 : _a.onKeyDown(event);\n    };\n    CellCtrl.prototype.onMouseEvent = function (eventName, mouseEvent) {\n        var _a;\n        (_a = this.cellMouseListenerFeature) === null || _a === void 0 ? void 0 : _a.onMouseEvent(eventName, mouseEvent);\n    };\n    CellCtrl.prototype.getGui = function () {\n        return this.eGui;\n    };\n    CellCtrl.prototype.refreshToolTip = function () {\n        var _a;\n        (_a = this.tooltipFeature) === null || _a === void 0 ? void 0 : _a.refreshToolTip();\n    };\n    CellCtrl.prototype.getColSpanningList = function () {\n        return this.cellPositionFeature.getColSpanningList();\n    };\n    CellCtrl.prototype.onLeftChanged = function () {\n        var _a;\n        if (!this.cellComp) {\n            return;\n        }\n        (_a = this.cellPositionFeature) === null || _a === void 0 ? void 0 : _a.onLeftChanged();\n    };\n    CellCtrl.prototype.onDisplayedColumnsChanged = function () {\n        if (!this.eGui) {\n            return;\n        }\n        this.setAriaColIndex();\n    };\n    CellCtrl.prototype.setAriaColIndex = function () {\n        var colIdx = this.beans.columnModel.getAriaColumnIndex(this.column);\n        setAriaColIndex(this.getGui(), colIdx); // for react, we don't use JSX, as it slowed down column moving\n    };\n    CellCtrl.prototype.isSuppressNavigable = function () {\n        return this.column.isSuppressNavigable(this.rowNode);\n    };\n    CellCtrl.prototype.onWidthChanged = function () {\n        var _a;\n        return (_a = this.cellPositionFeature) === null || _a === void 0 ? void 0 : _a.onWidthChanged();\n    };\n    CellCtrl.prototype.getColumn = function () {\n        return this.column;\n    };\n    CellCtrl.prototype.getRowNode = function () {\n        return this.rowNode;\n    };\n    CellCtrl.prototype.getBeans = function () {\n        return this.beans;\n    };\n    CellCtrl.prototype.isPrintLayout = function () {\n        return this.printLayout;\n    };\n    CellCtrl.prototype.appendChild = function (htmlElement) {\n        this.eGui.appendChild(htmlElement);\n    };\n    CellCtrl.prototype.refreshHandle = function () {\n        if (this.cellRangeFeature) {\n            this.cellRangeFeature.refreshHandle();\n        }\n    };\n    CellCtrl.prototype.getCellPosition = function () {\n        return this.cellPosition;\n    };\n    CellCtrl.prototype.isEditing = function () {\n        return this.editing;\n    };\n    // called by rowRenderer when user navigates via tab key\n    CellCtrl.prototype.startRowOrCellEdit = function (key, charPress, event) {\n        if (event === void 0) { event = null; }\n        if (!this.cellComp) {\n            return;\n        }\n        if (this.beans.gridOptionsService.get('editType') === 'fullRow') {\n            this.rowCtrl.startRowEditing(key, charPress, this);\n        }\n        else {\n            this.startEditing(key, charPress, true, event);\n        }\n    };\n    CellCtrl.prototype.getRowCtrl = function () {\n        return this.rowCtrl;\n    };\n    CellCtrl.prototype.getRowPosition = function () {\n        return {\n            rowIndex: this.cellPosition.rowIndex,\n            rowPinned: this.cellPosition.rowPinned\n        };\n    };\n    CellCtrl.prototype.updateRangeBordersIfRangeCount = function () {\n        if (!this.cellComp) {\n            return;\n        }\n        if (this.cellRangeFeature) {\n            this.cellRangeFeature.updateRangeBordersIfRangeCount();\n        }\n    };\n    CellCtrl.prototype.onRangeSelectionChanged = function () {\n        if (!this.cellComp) {\n            return;\n        }\n        if (this.cellRangeFeature) {\n            this.cellRangeFeature.onRangeSelectionChanged();\n        }\n    };\n    CellCtrl.prototype.isRangeSelectionEnabled = function () {\n        return this.cellRangeFeature != null;\n    };\n    CellCtrl.prototype.focusCell = function (forceBrowserFocus) {\n        if (forceBrowserFocus === void 0) { forceBrowserFocus = false; }\n        this.beans.focusService.setFocusedCell({\n            rowIndex: this.getCellPosition().rowIndex,\n            column: this.column,\n            rowPinned: this.rowNode.rowPinned,\n            forceBrowserFocus: forceBrowserFocus\n        });\n    };\n    CellCtrl.prototype.onRowIndexChanged = function () {\n        // when index changes, this influences items that need the index, so we update the\n        // grid cell so they are working off the new index.\n        this.createCellPosition();\n        // when the index of the row changes, ie means the cell may have lost or gained focus\n        this.onCellFocused();\n        // check range selection\n        if (this.cellRangeFeature) {\n            this.cellRangeFeature.onRangeSelectionChanged();\n        }\n    };\n    CellCtrl.prototype.onFirstRightPinnedChanged = function () {\n        if (!this.cellComp) {\n            return;\n        }\n        var firstRightPinned = this.column.isFirstRightPinned();\n        this.cellComp.addOrRemoveCssClass(CSS_CELL_FIRST_RIGHT_PINNED, firstRightPinned);\n    };\n    CellCtrl.prototype.onLastLeftPinnedChanged = function () {\n        if (!this.cellComp) {\n            return;\n        }\n        var lastLeftPinned = this.column.isLastLeftPinned();\n        this.cellComp.addOrRemoveCssClass(CSS_CELL_LAST_LEFT_PINNED, lastLeftPinned);\n    };\n    CellCtrl.prototype.onCellFocused = function (event) {\n        if (!this.cellComp || this.beans.gridOptionsService.is('suppressCellFocus')) {\n            return;\n        }\n        var cellFocused = this.beans.focusService.isCellFocused(this.cellPosition);\n        this.cellComp.addOrRemoveCssClass(CSS_CELL_FOCUS, cellFocused);\n        // see if we need to force browser focus - this can happen if focus is programmatically set\n        if (cellFocused && event && event.forceBrowserFocus) {\n            var focusEl = this.cellComp.getFocusableElement();\n            focusEl.focus({ preventScroll: !!event.preventScrollOnBrowserFocus });\n        }\n        // if another cell was focused, and we are editing, then stop editing\n        var fullRowEdit = this.beans.gridOptionsService.get('editType') === 'fullRow';\n        if (!cellFocused && !fullRowEdit && this.editing) {\n            this.stopRowOrCellEdit();\n        }\n    };\n    CellCtrl.prototype.createCellPosition = function () {\n        this.cellPosition = {\n            rowIndex: this.rowNode.rowIndex,\n            rowPinned: makeNull(this.rowNode.rowPinned),\n            column: this.column\n        };\n    };\n    // CSS Classes that only get applied once, they never change\n    CellCtrl.prototype.applyStaticCssClasses = function () {\n        this.cellComp.addOrRemoveCssClass(CSS_CELL, true);\n        this.cellComp.addOrRemoveCssClass(CSS_CELL_NOT_INLINE_EDITING, true);\n        // normal cells fill the height of the row. autoHeight cells have no height to let them\n        // fit the height of content.\n        var autoHeight = this.column.isAutoHeight() == true;\n        this.cellComp.addOrRemoveCssClass(CSS_AUTO_HEIGHT, autoHeight);\n        this.cellComp.addOrRemoveCssClass(CSS_NORMAL_HEIGHT, !autoHeight);\n    };\n    CellCtrl.prototype.onColumnHover = function () {\n        if (!this.cellComp) {\n            return;\n        }\n        if (!this.beans.gridOptionsService.is('columnHoverHighlight')) {\n            return;\n        }\n        var isHovered = this.beans.columnHoverService.isHovered(this.column);\n        this.cellComp.addOrRemoveCssClass(CSS_COLUMN_HOVER, isHovered);\n    };\n    CellCtrl.prototype.onColDefChanged = function () {\n        if (!this.cellComp) {\n            return;\n        }\n        this.setWrapText();\n        if (!this.editing) {\n            this.refreshCell({ forceRefresh: true, suppressFlash: true });\n        }\n    };\n    CellCtrl.prototype.setWrapText = function () {\n        var value = this.column.getColDef().wrapText == true;\n        this.cellComp.addOrRemoveCssClass(CSS_CELL_WRAP_TEXT, value);\n    };\n    CellCtrl.prototype.dispatchCellContextMenuEvent = function (event) {\n        var colDef = this.column.getColDef();\n        var cellContextMenuEvent = this.createEvent(event, Events.EVENT_CELL_CONTEXT_MENU);\n        this.beans.eventService.dispatchEvent(cellContextMenuEvent);\n        if (colDef.onCellContextMenu) {\n            // to make the callback async, do in a timeout\n            window.setTimeout(function () { return colDef.onCellContextMenu(cellContextMenuEvent); }, 0);\n        }\n    };\n    CellCtrl.prototype.getCellRenderer = function () {\n        return this.cellComp ? this.cellComp.getCellRenderer() : null;\n    };\n    CellCtrl.prototype.getCellEditor = function () {\n        return this.cellComp ? this.cellComp.getCellEditor() : null;\n    };\n    CellCtrl.prototype.destroy = function () {\n        this.onCellCompAttachedFuncs = [];\n        _super.prototype.destroy.call(this);\n    };\n    CellCtrl.prototype.createSelectionCheckbox = function () {\n        var cbSelectionComponent = new CheckboxSelectionComponent();\n        this.beans.context.createBean(cbSelectionComponent);\n        cbSelectionComponent.init({ rowNode: this.rowNode, column: this.column });\n        // put the checkbox in before the value\n        return cbSelectionComponent;\n    };\n    CellCtrl.prototype.createDndSource = function () {\n        var dndSourceComp = new DndSourceComp(this.rowNode, this.column, this.beans, this.eGui);\n        this.beans.context.createBean(dndSourceComp);\n        return dndSourceComp;\n    };\n    CellCtrl.prototype.registerRowDragger = function (customElement, dragStartPixels, suppressVisibilityChange) {\n        var _this = this;\n        // if previously existed, then we are only updating\n        if (this.customRowDragComp) {\n            this.customRowDragComp.setDragElement(customElement, dragStartPixels);\n            return;\n        }\n        var newComp = this.createRowDragComp(customElement, dragStartPixels, suppressVisibilityChange);\n        if (newComp) {\n            this.customRowDragComp = newComp;\n            this.addDestroyFunc(function () { _this.beans.context.destroyBean(newComp); _this.customRowDragComp = null; });\n        }\n    };\n    CellCtrl.prototype.createRowDragComp = function (customElement, dragStartPixels, suppressVisibilityChange) {\n        var _this = this;\n        var pagination = this.beans.gridOptionsService.is('pagination');\n        var rowDragManaged = this.beans.gridOptionsService.is('rowDragManaged');\n        var clientSideRowModelActive = this.beans.gridOptionsService.isRowModelType('clientSide');\n        if (rowDragManaged) {\n            // row dragging only available in default row model\n            if (!clientSideRowModelActive) {\n                doOnce(function () { return console.warn('AG Grid: managed row dragging is only allowed in the Client Side Row Model'); }, 'CellComp.addRowDragging');\n                return;\n            }\n            if (pagination) {\n                doOnce(function () { return console.warn('AG Grid: managed row dragging is not possible when doing pagination'); }, 'CellComp.addRowDragging');\n                return;\n            }\n        }\n        // otherwise (normal case) we are creating a RowDraggingComp for the first time\n        var rowDragComp = new RowDragComp(function () { return _this.value; }, this.rowNode, this.column, customElement, dragStartPixels, suppressVisibilityChange);\n        this.beans.context.createBean(rowDragComp);\n        return rowDragComp;\n    };\n    CellCtrl.DOM_DATA_KEY_CELL_CTRL = 'cellCtrl';\n    return CellCtrl;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$1O = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __values$3 = (undefined && undefined.__values) || function(o) {\n    var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n    if (m) return m.call(o);\n    if (o && typeof o.length === \"number\") return {\n        next: function () {\n            if (o && i >= o.length) o = void 0;\n            return { value: o && o[i++], done: !o };\n        }\n    };\n    throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nvar __read$k = (undefined && undefined.__read) || function (o, n) {\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n    if (!m) return o;\n    var i = m.call(o), r, ar = [], e;\n    try {\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n    }\n    catch (error) { e = { error: error }; }\n    finally {\n        try {\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\n        }\n        finally { if (e) throw e.error; }\n    }\n    return ar;\n};\nvar __spread$g = (undefined && undefined.__spread) || function () {\n    for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read$k(arguments[i]));\n    return ar;\n};\nvar RowType$1;\n(function (RowType) {\n    RowType[\"Normal\"] = \"Normal\";\n    RowType[\"FullWidth\"] = \"FullWidth\";\n    RowType[\"FullWidthLoading\"] = \"FullWidthLoading\";\n    RowType[\"FullWidthGroup\"] = \"FullWidthGroup\";\n    RowType[\"FullWidthDetail\"] = \"FullWidthDetail\";\n})(RowType$1 || (RowType$1 = {}));\nvar instanceIdSequence$2 = 0;\nvar RowCtrl = /** @class */ (function (_super) {\n    __extends$1O(RowCtrl, _super);\n    function RowCtrl(rowNode, beans, animateIn, useAnimationFrameForCreate, printLayout) {\n        var _this = _super.call(this) || this;\n        _this.allRowGuis = [];\n        _this.active = true;\n        _this.centerCellCtrls = { list: [], map: {} };\n        _this.leftCellCtrls = { list: [], map: {} };\n        _this.rightCellCtrls = { list: [], map: {} };\n        _this.slideInAnimation = {\n            left: false,\n            center: false,\n            right: false,\n            fullWidth: false\n        };\n        _this.fadeInAnimation = {\n            left: false,\n            center: false,\n            right: false,\n            fullWidth: false\n        };\n        _this.lastMouseDownOnDragger = false;\n        _this.updateColumnListsPending = false;\n        _this.businessKeySanitised = null;\n        _this.beans = beans;\n        _this.rowNode = rowNode;\n        _this.paginationPage = _this.beans.paginationProxy.getCurrentPage();\n        _this.useAnimationFrameForCreate = useAnimationFrameForCreate;\n        _this.printLayout = printLayout;\n        _this.instanceId = rowNode.id + '-' + instanceIdSequence$2++;\n        _this.setAnimateFlags(animateIn);\n        _this.initRowBusinessKey();\n        _this.rowFocused = _this.beans.focusService.isRowFocused(_this.rowNode.rowIndex, _this.rowNode.rowPinned);\n        _this.rowLevel = _this.beans.rowCssClassCalculator.calculateRowLevel(_this.rowNode);\n        _this.setRowType();\n        _this.addListeners();\n        return _this;\n    }\n    RowCtrl.prototype.initRowBusinessKey = function () {\n        var businessKeyForNodeFunc = this.beans.gridOptionsService.get('getBusinessKeyForNode');\n        if (typeof businessKeyForNodeFunc !== 'function') {\n            return;\n        }\n        var businessKey = businessKeyForNodeFunc(this.rowNode);\n        this.businessKeySanitised = escapeString(businessKey);\n    };\n    RowCtrl.prototype.isSticky = function () {\n        return this.rowNode.sticky;\n    };\n    RowCtrl.prototype.getBeans = function () {\n        return this.beans;\n    };\n    RowCtrl.prototype.getInstanceId = function () {\n        return this.instanceId;\n    };\n    RowCtrl.prototype.setComp = function (rowComp, element, containerType) {\n        var gui = { rowComp: rowComp, element: element, containerType: containerType };\n        this.allRowGuis.push(gui);\n        if (containerType === RowContainerType.LEFT) {\n            this.leftGui = gui;\n        }\n        else if (containerType === RowContainerType.RIGHT) {\n            this.rightGui = gui;\n        }\n        else if (containerType === RowContainerType.FULL_WIDTH) {\n            this.fullWidthGui = gui;\n        }\n        else {\n            this.centerGui = gui;\n        }\n        this.initialiseRowComp(gui);\n        // pinned rows render before the main grid body in the SSRM, only fire the event after the main body has rendered.\n        if (this.rowType !== 'FullWidthLoading' && !this.rowNode.rowPinned) {\n            // this is fired within setComp as we know that the component renderer is now trying to render.\n            // linked with the fact the function implementation queues behind requestAnimationFrame should allow\n            // us to be certain that all rendering is done by the time the event fires.\n            this.beans.rowRenderer.dispatchFirstDataRenderedEvent();\n        }\n    };\n    RowCtrl.prototype.unsetComp = function (containerType) {\n        this.allRowGuis = this.allRowGuis\n            .filter(function (rowGui) { return rowGui.containerType !== containerType; });\n        if (containerType === RowContainerType.LEFT) {\n            this.leftGui = undefined;\n        }\n        else if (containerType === RowContainerType.RIGHT) {\n            this.rightGui = undefined;\n        }\n        else if (containerType === RowContainerType.FULL_WIDTH) {\n            this.fullWidthGui = undefined;\n        }\n    };\n    RowCtrl.prototype.isCacheable = function () {\n        return this.rowType === RowType$1.FullWidthDetail\n            && this.beans.gridOptionsService.is('keepDetailRows');\n    };\n    RowCtrl.prototype.setCached = function (cached) {\n        var displayValue = cached ? 'none' : '';\n        this.allRowGuis.forEach(function (rg) { return rg.element.style.display = displayValue; });\n    };\n    RowCtrl.prototype.initialiseRowComp = function (gui) {\n        var _this = this;\n        var gos = this.beans.gridOptionsService;\n        this.onRowHeightChanged(gui);\n        this.updateRowIndexes(gui);\n        this.setFocusedClasses(gui);\n        this.setStylesFromGridOptions(gui);\n        if (gos.isRowSelection() && this.rowNode.selectable) {\n            this.onRowSelected(gui);\n        }\n        this.updateColumnLists(!this.useAnimationFrameForCreate);\n        var comp = gui.rowComp;\n        comp.setRole('row');\n        var initialRowClasses = this.getInitialRowClasses(gui.containerType);\n        initialRowClasses.forEach(function (name) { return comp.addOrRemoveCssClass(name, true); });\n        this.executeSlideAndFadeAnimations(gui);\n        if (this.rowNode.group) {\n            setAriaExpanded(gui.element, this.rowNode.expanded == true);\n        }\n        var rowIdSanitised = escapeString(this.rowNode.id);\n        if (rowIdSanitised != null) {\n            comp.setRowId(rowIdSanitised);\n        }\n        if (this.businessKeySanitised != null) {\n            comp.setRowBusinessKey(this.businessKeySanitised);\n        }\n        if (this.isFullWidth() && !this.beans.gridOptionsService.is('suppressCellFocus')) {\n            comp.setTabIndex(-1);\n        }\n        // DOM DATA\n        gos.setDomData(gui.element, RowCtrl.DOM_DATA_KEY_ROW_CTRL, this);\n        this.addDestroyFunc(function () { return gos.setDomData(gui.element, RowCtrl.DOM_DATA_KEY_ROW_CTRL, null); });\n        // adding hover functionality adds listener to this row, so we\n        // do it lazily in an animation frame\n        if (this.useAnimationFrameForCreate) {\n            this.beans.animationFrameService.createTask(this.addHoverFunctionality.bind(this, gui.element), this.rowNode.rowIndex, 'createTasksP2');\n        }\n        else {\n            this.addHoverFunctionality(gui.element);\n        }\n        if (this.isFullWidth()) {\n            this.setupFullWidth(gui);\n        }\n        if (gos.is('rowDragEntireRow')) {\n            this.addRowDraggerToRow(gui);\n        }\n        if (this.useAnimationFrameForCreate) {\n            // the height animation we only want active after the row is alive for 1 second.\n            // this stops the row animation working when rows are initially created. otherwise\n            // auto-height rows get inserted into the dom and resized immediately, which gives\n            // very bad UX (eg 10 rows get inserted, then all 10 expand, look particularly bad\n            // when scrolling). so this makes sure when rows are shown for the first time, they\n            // are resized immediately without animation.\n            this.beans.animationFrameService.addDestroyTask(function () {\n                if (!_this.isAlive()) {\n                    return;\n                }\n                gui.rowComp.addOrRemoveCssClass('ag-after-created', true);\n            });\n        }\n        this.executeProcessRowPostCreateFunc();\n    };\n    RowCtrl.prototype.executeSlideAndFadeAnimations = function (gui) {\n        var _this = this;\n        var containerType = gui.containerType;\n        var shouldSlide = this.slideInAnimation[containerType];\n        if (shouldSlide) {\n            executeNextVMTurn(function () {\n                _this.onTopChanged();\n            });\n            this.slideInAnimation[containerType] = false;\n        }\n        var shouldFade = this.fadeInAnimation[containerType];\n        if (shouldFade) {\n            executeNextVMTurn(function () {\n                gui.rowComp.addOrRemoveCssClass('ag-opacity-zero', false);\n            });\n            this.fadeInAnimation[containerType] = false;\n        }\n    };\n    RowCtrl.prototype.addRowDraggerToRow = function (gui) {\n        if (this.beans.gridOptionsService.isEnableRangeSelection()) {\n            doOnce(function () {\n                console.warn('AG Grid: Setting `rowDragEntireRow: true` in the gridOptions doesn\\'t work with `enableRangeSelection: true`');\n            }, 'rowDragAndRangeSelectionEnabled');\n            return;\n        }\n        var translate = this.beans.localeService.getLocaleTextFunc();\n        var rowDragComp = new RowDragComp(function () { return \"1 \" + translate('rowDragRow', 'row'); }, this.rowNode, undefined, gui.element, undefined, true);\n        this.createManagedBean(rowDragComp, this.beans.context);\n    };\n    RowCtrl.prototype.setupFullWidth = function (gui) {\n        var pinned = this.getPinnedForContainer(gui.containerType);\n        var params = this.createFullWidthParams(gui.element, pinned);\n        if (this.rowType == RowType$1.FullWidthDetail) {\n            if (!ModuleRegistry.assertRegistered(ModuleNames.MasterDetailModule, \"cell renderer 'agDetailCellRenderer' (for master detail)\")) {\n                return;\n            }\n        }\n        var compDetails;\n        switch (this.rowType) {\n            case RowType$1.FullWidthDetail:\n                compDetails = this.beans.userComponentFactory.getFullWidthDetailCellRendererDetails(params);\n                break;\n            case RowType$1.FullWidthGroup:\n                compDetails = this.beans.userComponentFactory.getFullWidthGroupCellRendererDetails(params);\n                break;\n            case RowType$1.FullWidthLoading:\n                compDetails = this.beans.userComponentFactory.getFullWidthLoadingCellRendererDetails(params);\n                break;\n            default:\n                compDetails = this.beans.userComponentFactory.getFullWidthCellRendererDetails(params);\n                break;\n        }\n        gui.rowComp.showFullWidth(compDetails);\n    };\n    RowCtrl.prototype.isPrintLayout = function () {\n        return this.printLayout;\n    };\n    RowCtrl.prototype.getFullWidthCellRenderer = function () {\n        var _a, _b;\n        return (_b = (_a = this.fullWidthGui) === null || _a === void 0 ? void 0 : _a.rowComp) === null || _b === void 0 ? void 0 : _b.getFullWidthCellRenderer();\n    };\n    // use by autoWidthCalculator, as it clones the elements\n    RowCtrl.prototype.getCellElement = function (column) {\n        var cellCtrl = this.getCellCtrl(column);\n        return cellCtrl ? cellCtrl.getGui() : null;\n    };\n    RowCtrl.prototype.executeProcessRowPostCreateFunc = function () {\n        var _a;\n        var func = this.beans.gridOptionsService.getCallback('processRowPostCreate');\n        if (!func || !this.areAllContainersReady()) {\n            return;\n        }\n        var params = {\n            eRow: (_a = this.centerGui) === null || _a === void 0 ? void 0 : _a.element,\n            ePinnedLeftRow: this.leftGui ? this.leftGui.element : undefined,\n            ePinnedRightRow: this.rightGui ? this.rightGui.element : undefined,\n            node: this.rowNode,\n            rowIndex: this.rowNode.rowIndex,\n            addRenderedRowListener: this.addEventListener.bind(this),\n        };\n        func(params);\n    };\n    RowCtrl.prototype.areAllContainersReady = function () {\n        var isLeftReady = !!this.leftGui || !this.beans.columnModel.isPinningLeft();\n        var isCenterReady = !!this.centerGui;\n        var isRightReady = !!this.rightGui || !this.beans.columnModel.isPinningRight();\n        return isLeftReady && isCenterReady && isRightReady;\n    };\n    RowCtrl.prototype.setRowType = function () {\n        var isStub = this.rowNode.stub;\n        var isFullWidthCell = this.rowNode.isFullWidthCell();\n        var isDetailCell = this.beans.doingMasterDetail && this.rowNode.detail;\n        var pivotMode = this.beans.columnModel.isPivotMode();\n        // we only use full width for groups, not footers. it wouldn't make sense to include footers if not looking\n        // for totals. if users complain about this, then we should introduce a new property 'footerUseEntireRow'\n        // so each can be set independently (as a customer complained about footers getting full width, hence\n        // introducing this logic)\n        var isGroupRow = !!this.rowNode.group && !this.rowNode.footer;\n        var isFullWidthGroup = isGroupRow && this.beans.gridOptionsService.isGroupUseEntireRow(pivotMode);\n        if (isStub) {\n            this.rowType = RowType$1.FullWidthLoading;\n        }\n        else if (isDetailCell) {\n            this.rowType = RowType$1.FullWidthDetail;\n        }\n        else if (isFullWidthCell) {\n            this.rowType = RowType$1.FullWidth;\n        }\n        else if (isFullWidthGroup) {\n            this.rowType = RowType$1.FullWidthGroup;\n        }\n        else {\n            this.rowType = RowType$1.Normal;\n        }\n    };\n    RowCtrl.prototype.updateColumnLists = function (suppressAnimationFrame, useFlushSync) {\n        var _this = this;\n        if (suppressAnimationFrame === void 0) { suppressAnimationFrame = false; }\n        if (useFlushSync === void 0) { useFlushSync = false; }\n        if (this.isFullWidth()) {\n            return;\n        }\n        var noAnimation = suppressAnimationFrame\n            || this.beans.gridOptionsService.is('suppressAnimationFrame')\n            || this.printLayout;\n        if (noAnimation) {\n            this.updateColumnListsImpl(useFlushSync);\n            return;\n        }\n        if (this.updateColumnListsPending) {\n            return;\n        }\n        this.beans.animationFrameService.createTask(function () {\n            if (!_this.active) {\n                return;\n            }\n            _this.updateColumnListsImpl(true);\n        }, this.rowNode.rowIndex, 'createTasksP1');\n        this.updateColumnListsPending = true;\n    };\n    RowCtrl.prototype.createCellCtrls = function (prev, cols, pinned) {\n        var _this = this;\n        if (pinned === void 0) { pinned = null; }\n        var res = {\n            list: [],\n            map: {}\n        };\n        var addCell = function (colInstanceId, cellCtrl) {\n            res.list.push(cellCtrl);\n            res.map[colInstanceId] = cellCtrl;\n        };\n        cols.forEach(function (col) {\n            // we use instanceId's rather than colId as it's possible there is a Column with same Id,\n            // but it's referring to a different column instance. Happens a lot with pivot, as pivot col id's are\n            // reused eg pivot_0, pivot_1 etc\n            var colInstanceId = col.getInstanceId();\n            var cellCtrl = prev.map[colInstanceId];\n            if (!cellCtrl) {\n                cellCtrl = new CellCtrl(col, _this.rowNode, _this.beans, _this);\n            }\n            addCell(colInstanceId, cellCtrl);\n        });\n        prev.list.forEach(function (prevCellCtrl) {\n            var cellInResult = res.map[prevCellCtrl.getColumn().getInstanceId()] != null;\n            if (cellInResult) {\n                return;\n            }\n            var keepCell = !_this.isCellEligibleToBeRemoved(prevCellCtrl, pinned);\n            if (keepCell) {\n                addCell(prevCellCtrl.getColumn().getInstanceId(), prevCellCtrl);\n                return;\n            }\n            prevCellCtrl.destroy();\n        });\n        return res;\n    };\n    RowCtrl.prototype.updateColumnListsImpl = function (useFlushSync) {\n        var _this = this;\n        if (useFlushSync === void 0) { useFlushSync = false; }\n        this.updateColumnListsPending = false;\n        var columnModel = this.beans.columnModel;\n        if (this.printLayout) {\n            this.centerCellCtrls = this.createCellCtrls(this.centerCellCtrls, columnModel.getAllDisplayedColumns());\n            this.leftCellCtrls = { list: [], map: {} };\n            this.rightCellCtrls = { list: [], map: {} };\n        }\n        else {\n            var centerCols = columnModel.getViewportCenterColumnsForRow(this.rowNode);\n            this.centerCellCtrls = this.createCellCtrls(this.centerCellCtrls, centerCols);\n            var leftCols = columnModel.getDisplayedLeftColumnsForRow(this.rowNode);\n            this.leftCellCtrls = this.createCellCtrls(this.leftCellCtrls, leftCols, 'left');\n            var rightCols = columnModel.getDisplayedRightColumnsForRow(this.rowNode);\n            this.rightCellCtrls = this.createCellCtrls(this.rightCellCtrls, rightCols, 'right');\n        }\n        this.allRowGuis.forEach(function (item) {\n            var cellControls = item.containerType === RowContainerType.LEFT ? _this.leftCellCtrls :\n                item.containerType === RowContainerType.RIGHT ? _this.rightCellCtrls : _this.centerCellCtrls;\n            item.rowComp.setCellCtrls(cellControls.list, useFlushSync);\n        });\n    };\n    RowCtrl.prototype.isCellEligibleToBeRemoved = function (cellCtrl, nextContainerPinned) {\n        var REMOVE_CELL = true;\n        var KEEP_CELL = false;\n        // always remove the cell if it's not rendered or if it's in the wrong pinned location\n        var column = cellCtrl.getColumn();\n        if (column.getPinned() != nextContainerPinned) {\n            return REMOVE_CELL;\n        }\n        // we want to try and keep editing and focused cells\n        var editing = cellCtrl.isEditing();\n        var focused = this.beans.focusService.isCellFocused(cellCtrl.getCellPosition());\n        var mightWantToKeepCell = editing || focused;\n        if (mightWantToKeepCell) {\n            var column_1 = cellCtrl.getColumn();\n            var displayedColumns = this.beans.columnModel.getAllDisplayedColumns();\n            var cellStillDisplayed = displayedColumns.indexOf(column_1) >= 0;\n            return cellStillDisplayed ? KEEP_CELL : REMOVE_CELL;\n        }\n        return REMOVE_CELL;\n    };\n    RowCtrl.prototype.setAnimateFlags = function (animateIn) {\n        if (this.isSticky() || !animateIn) {\n            return;\n        }\n        var oldRowTopExists = exists(this.rowNode.oldRowTop);\n        var pinningLeft = this.beans.columnModel.isPinningLeft();\n        var pinningRight = this.beans.columnModel.isPinningRight();\n        if (oldRowTopExists) {\n            // if the row had a previous position, we slide it in\n            this.slideInAnimation.center = true;\n            this.slideInAnimation.left = pinningLeft;\n            this.slideInAnimation.right = pinningRight;\n        }\n        else {\n            // if the row had no previous position, we fade it in\n            this.fadeInAnimation.center = true;\n            this.fadeInAnimation.left = pinningLeft;\n            this.fadeInAnimation.right = pinningRight;\n        }\n    };\n    RowCtrl.prototype.isEditing = function () {\n        return this.editingRow;\n    };\n    RowCtrl.prototype.stopRowEditing = function (cancel) {\n        this.stopEditing(cancel);\n    };\n    RowCtrl.prototype.isFullWidth = function () {\n        return this.rowType !== RowType$1.Normal;\n    };\n    RowCtrl.prototype.getRowType = function () {\n        return this.rowType;\n    };\n    RowCtrl.prototype.refreshFullWidth = function () {\n        var _this = this;\n        // returns 'true' if refresh succeeded\n        var tryRefresh = function (gui, pinned) {\n            if (!gui) {\n                return true;\n            } // no refresh needed\n            var cellRenderer = gui.rowComp.getFullWidthCellRenderer();\n            // no cell renderer, either means comp not yet ready, or comp ready but now reference\n            // to it (happens in react when comp is stateless). if comp not ready, we don't need to\n            // refresh, however we don't know which one, so we refresh to cover the case where it's\n            // react comp without reference so need to force a refresh\n            if (!cellRenderer) {\n                return false;\n            }\n            // no refresh method present, so can't refresh, hard refresh needed\n            if (!cellRenderer.refresh) {\n                return false;\n            }\n            var params = _this.createFullWidthParams(gui.element, pinned);\n            var refreshSucceeded = cellRenderer.refresh(params);\n            return refreshSucceeded;\n        };\n        var fullWidthSuccess = tryRefresh(this.fullWidthGui, null);\n        var centerSuccess = tryRefresh(this.centerGui, null);\n        var leftSuccess = tryRefresh(this.leftGui, 'left');\n        var rightSuccess = tryRefresh(this.rightGui, 'right');\n        var allFullWidthRowsRefreshed = fullWidthSuccess && centerSuccess && leftSuccess && rightSuccess;\n        return allFullWidthRowsRefreshed;\n    };\n    RowCtrl.prototype.addListeners = function () {\n        var _this = this;\n        this.addManagedListener(this.rowNode, RowNode.EVENT_HEIGHT_CHANGED, function () { return _this.onRowHeightChanged(); });\n        this.addManagedListener(this.rowNode, RowNode.EVENT_ROW_SELECTED, function () { return _this.onRowSelected(); });\n        this.addManagedListener(this.rowNode, RowNode.EVENT_ROW_INDEX_CHANGED, this.onRowIndexChanged.bind(this));\n        this.addManagedListener(this.rowNode, RowNode.EVENT_TOP_CHANGED, this.onTopChanged.bind(this));\n        this.addManagedListener(this.rowNode, RowNode.EVENT_EXPANDED_CHANGED, this.updateExpandedCss.bind(this));\n        this.addManagedListener(this.rowNode, RowNode.EVENT_HAS_CHILDREN_CHANGED, this.updateExpandedCss.bind(this));\n        this.addManagedListener(this.rowNode, RowNode.EVENT_DATA_CHANGED, this.onRowNodeDataChanged.bind(this));\n        this.addManagedListener(this.rowNode, RowNode.EVENT_CELL_CHANGED, this.onRowNodeCellChanged.bind(this));\n        this.addManagedListener(this.rowNode, RowNode.EVENT_HIGHLIGHT_CHANGED, this.onRowNodeHighlightChanged.bind(this));\n        this.addManagedListener(this.rowNode, RowNode.EVENT_DRAGGING_CHANGED, this.onRowNodeDraggingChanged.bind(this));\n        this.addManagedListener(this.rowNode, RowNode.EVENT_UI_LEVEL_CHANGED, this.onUiLevelChanged.bind(this));\n        var eventService = this.beans.eventService;\n        this.addManagedListener(eventService, Events.EVENT_PAGINATION_PIXEL_OFFSET_CHANGED, this.onPaginationPixelOffsetChanged.bind(this));\n        this.addManagedListener(eventService, Events.EVENT_HEIGHT_SCALE_CHANGED, this.onTopChanged.bind(this));\n        this.addManagedListener(eventService, Events.EVENT_DISPLAYED_COLUMNS_CHANGED, this.onDisplayedColumnsChanged.bind(this));\n        this.addManagedListener(eventService, Events.EVENT_VIRTUAL_COLUMNS_CHANGED, this.onVirtualColumnsChanged.bind(this));\n        this.addManagedListener(eventService, Events.EVENT_CELL_FOCUSED, this.onCellFocused.bind(this));\n        this.addManagedListener(eventService, Events.EVENT_CELL_FOCUS_CLEARED, this.onCellFocusCleared.bind(this));\n        this.addManagedListener(eventService, Events.EVENT_PAGINATION_CHANGED, this.onPaginationChanged.bind(this));\n        this.addManagedListener(eventService, Events.EVENT_MODEL_UPDATED, this.onModelUpdated.bind(this));\n        this.addManagedListener(eventService, Events.EVENT_COLUMN_MOVED, this.onColumnMoved.bind(this));\n        this.addListenersForCellComps();\n    };\n    RowCtrl.prototype.onColumnMoved = function () {\n        this.updateColumnLists();\n    };\n    RowCtrl.prototype.addListenersForCellComps = function () {\n        var _this = this;\n        this.addManagedListener(this.rowNode, RowNode.EVENT_ROW_INDEX_CHANGED, function () {\n            _this.getAllCellCtrls().forEach(function (cellCtrl) { return cellCtrl.onRowIndexChanged(); });\n        });\n        this.addManagedListener(this.rowNode, RowNode.EVENT_CELL_CHANGED, function (event) {\n            _this.getAllCellCtrls().forEach(function (cellCtrl) { return cellCtrl.onCellChanged(event); });\n        });\n    };\n    RowCtrl.prototype.onRowNodeDataChanged = function (event) {\n        // if master row has updated, then need to also try to refresh the detail node\n        if (this.rowNode.detailNode) {\n            this.beans.rowRenderer.refreshFullWidthRow(this.rowNode.detailNode);\n        }\n        if (this.isFullWidth()) {\n            this.beans.rowRenderer.refreshFullWidthRow(this.rowNode);\n            return;\n        }\n        // if this is an update, we want to refresh, as this will allow the user to put in a transition\n        // into the cellRenderer refresh method. otherwise this might be completely new data, in which case\n        // we will want to completely replace the cells\n        this.getAllCellCtrls().forEach(function (cellCtrl) {\n            return cellCtrl.refreshCell({\n                suppressFlash: !event.update,\n                newData: !event.update\n            });\n        });\n        // check for selected also, as this could be after lazy loading of the row data, in which case\n        // the id might of just gotten set inside the row and the row selected state may of changed\n        // as a result. this is what happens when selected rows are loaded in virtual pagination.\n        // - niall note - since moving to the stub component, this may no longer be true, as replacing\n        // the stub component now replaces the entire row\n        this.onRowSelected();\n        // as data has changed, then the style and class needs to be recomputed\n        this.postProcessCss();\n    };\n    RowCtrl.prototype.onRowNodeCellChanged = function () {\n        // as data has changed, then the style and class needs to be recomputed\n        this.postProcessCss();\n    };\n    RowCtrl.prototype.postProcessCss = function () {\n        this.setStylesFromGridOptions();\n        this.postProcessClassesFromGridOptions();\n        this.postProcessRowClassRules();\n        this.postProcessRowDragging();\n    };\n    RowCtrl.prototype.onRowNodeHighlightChanged = function () {\n        var highlighted = this.rowNode.highlighted;\n        this.allRowGuis.forEach(function (gui) {\n            var aboveOn = highlighted === RowHighlightPosition.Above;\n            var belowOn = highlighted === RowHighlightPosition.Below;\n            gui.rowComp.addOrRemoveCssClass('ag-row-highlight-above', aboveOn);\n            gui.rowComp.addOrRemoveCssClass('ag-row-highlight-below', belowOn);\n        });\n    };\n    RowCtrl.prototype.onRowNodeDraggingChanged = function () {\n        this.postProcessRowDragging();\n    };\n    RowCtrl.prototype.postProcessRowDragging = function () {\n        var dragging = this.rowNode.dragging;\n        this.allRowGuis.forEach(function (gui) { return gui.rowComp.addOrRemoveCssClass('ag-row-dragging', dragging); });\n    };\n    RowCtrl.prototype.updateExpandedCss = function () {\n        var expandable = this.rowNode.isExpandable();\n        var expanded = this.rowNode.expanded == true;\n        this.allRowGuis.forEach(function (gui) {\n            gui.rowComp.addOrRemoveCssClass('ag-row-group', expandable);\n            gui.rowComp.addOrRemoveCssClass('ag-row-group-expanded', expandable && expanded);\n            gui.rowComp.addOrRemoveCssClass('ag-row-group-contracted', expandable && !expanded);\n            setAriaExpanded(gui.element, expandable && expanded);\n        });\n    };\n    RowCtrl.prototype.onDisplayedColumnsChanged = function () {\n        // we skip animations for onDisplayedColumnChanged, as otherwise the client could remove columns and\n        // then set data, and any old valueGetter's (ie from cols that were removed) would still get called.\n        this.updateColumnLists(true);\n        if (this.beans.columnModel.wasAutoRowHeightEverActive()) {\n            this.rowNode.checkAutoHeights();\n        }\n    };\n    RowCtrl.prototype.onVirtualColumnsChanged = function () {\n        this.updateColumnLists(false, true);\n    };\n    RowCtrl.prototype.getRowPosition = function () {\n        return {\n            rowPinned: makeNull(this.rowNode.rowPinned),\n            rowIndex: this.rowNode.rowIndex\n        };\n    };\n    RowCtrl.prototype.onKeyboardNavigate = function (keyboardEvent) {\n        var currentFullWidthComp = this.allRowGuis.find(function (c) { return c.element.contains(keyboardEvent.target); });\n        var currentFullWidthContainer = currentFullWidthComp ? currentFullWidthComp.element : null;\n        var isFullWidthContainerFocused = currentFullWidthContainer === keyboardEvent.target;\n        if (!isFullWidthContainerFocused) {\n            return;\n        }\n        var node = this.rowNode;\n        var lastFocusedCell = this.beans.focusService.getFocusedCell();\n        var cellPosition = {\n            rowIndex: node.rowIndex,\n            rowPinned: node.rowPinned,\n            column: (lastFocusedCell && lastFocusedCell.column)\n        };\n        this.beans.navigationService.navigateToNextCell(keyboardEvent, keyboardEvent.key, cellPosition, true);\n        keyboardEvent.preventDefault();\n    };\n    RowCtrl.prototype.onTabKeyDown = function (keyboardEvent) {\n        if (keyboardEvent.defaultPrevented || isStopPropagationForAgGrid(keyboardEvent)) {\n            return;\n        }\n        var currentFullWidthComp = this.allRowGuis.find(function (c) { return c.element.contains(keyboardEvent.target); });\n        var currentFullWidthContainer = currentFullWidthComp ? currentFullWidthComp.element : null;\n        var isFullWidthContainerFocused = currentFullWidthContainer === keyboardEvent.target;\n        var nextEl = null;\n        if (!isFullWidthContainerFocused) {\n            nextEl = this.beans.focusService.findNextFocusableElement(currentFullWidthContainer, false, keyboardEvent.shiftKey);\n        }\n        if ((this.isFullWidth() && isFullWidthContainerFocused) || !nextEl) {\n            this.beans.navigationService.onTabKeyDown(this, keyboardEvent);\n        }\n    };\n    RowCtrl.prototype.onFullWidthRowFocused = function (event) {\n        var _a;\n        var node = this.rowNode;\n        var isFocused = !event ? false : this.isFullWidth() && event.rowIndex === node.rowIndex && event.rowPinned == node.rowPinned;\n        var element = this.fullWidthGui ? this.fullWidthGui.element : (_a = this.centerGui) === null || _a === void 0 ? void 0 : _a.element;\n        if (!element) {\n            return;\n        } // can happen with react ui, comp not yet ready\n        element.classList.toggle('ag-full-width-focus', isFocused);\n        if (isFocused) {\n            // we don't scroll normal rows into view when we focus them, so we don't want\n            // to scroll Full Width rows either.\n            element.focus({ preventScroll: true });\n        }\n    };\n    RowCtrl.prototype.refreshCell = function (cellCtrl) {\n        this.centerCellCtrls = this.removeCellCtrl(this.centerCellCtrls, cellCtrl);\n        this.leftCellCtrls = this.removeCellCtrl(this.leftCellCtrls, cellCtrl);\n        this.rightCellCtrls = this.removeCellCtrl(this.rightCellCtrls, cellCtrl);\n        this.updateColumnLists();\n    };\n    RowCtrl.prototype.removeCellCtrl = function (prev, cellCtrlToRemove) {\n        var res = {\n            list: [],\n            map: {}\n        };\n        prev.list.forEach(function (cellCtrl) {\n            if (cellCtrl === cellCtrlToRemove) {\n                return;\n            }\n            res.list.push(cellCtrl);\n            res.map[cellCtrl.getInstanceId()] = cellCtrl;\n        });\n        return res;\n    };\n    RowCtrl.prototype.onMouseEvent = function (eventName, mouseEvent) {\n        switch (eventName) {\n            case 'dblclick':\n                this.onRowDblClick(mouseEvent);\n                break;\n            case 'click':\n                this.onRowClick(mouseEvent);\n                break;\n            case 'touchstart':\n            case 'mousedown':\n                this.onRowMouseDown(mouseEvent);\n                break;\n        }\n    };\n    RowCtrl.prototype.createRowEvent = function (type, domEvent) {\n        return {\n            type: type,\n            node: this.rowNode,\n            data: this.rowNode.data,\n            rowIndex: this.rowNode.rowIndex,\n            rowPinned: this.rowNode.rowPinned,\n            context: this.beans.gridOptionsService.context,\n            api: this.beans.gridOptionsService.api,\n            columnApi: this.beans.gridOptionsService.columnApi,\n            event: domEvent\n        };\n    };\n    RowCtrl.prototype.createRowEventWithSource = function (type, domEvent) {\n        var event = this.createRowEvent(type, domEvent);\n        // when first developing this, we included the rowComp in the event.\n        // this seems very weird. so when introducing the event types, i left the 'source'\n        // out of the type, and just include the source in the two places where this event\n        // was fired (rowClicked and rowDoubleClicked). it doesn't make sense for any\n        // users to be using this, as the rowComp isn't an object we expose, so would be\n        // very surprising if a user was using it.\n        event.source = this;\n        return event;\n    };\n    RowCtrl.prototype.onRowDblClick = function (mouseEvent) {\n        if (isStopPropagationForAgGrid(mouseEvent)) {\n            return;\n        }\n        var agEvent = this.createRowEventWithSource(Events.EVENT_ROW_DOUBLE_CLICKED, mouseEvent);\n        this.beans.eventService.dispatchEvent(agEvent);\n    };\n    RowCtrl.prototype.onRowMouseDown = function (mouseEvent) {\n        this.lastMouseDownOnDragger = isElementChildOfClass(mouseEvent.target, 'ag-row-drag', 3);\n        if (!this.isFullWidth()) {\n            return;\n        }\n        var node = this.rowNode;\n        var columnModel = this.beans.columnModel;\n        if (this.beans.rangeService) {\n            this.beans.rangeService.removeAllCellRanges();\n        }\n        this.beans.focusService.setFocusedCell({\n            rowIndex: node.rowIndex,\n            column: columnModel.getAllDisplayedColumns()[0],\n            rowPinned: node.rowPinned,\n            forceBrowserFocus: true\n        });\n    };\n    RowCtrl.prototype.onRowClick = function (mouseEvent) {\n        var stop = isStopPropagationForAgGrid(mouseEvent) || this.lastMouseDownOnDragger;\n        if (stop) {\n            return;\n        }\n        var agEvent = this.createRowEventWithSource(Events.EVENT_ROW_CLICKED, mouseEvent);\n        this.beans.eventService.dispatchEvent(agEvent);\n        // ctrlKey for windows, metaKey for Apple\n        var multiSelectKeyPressed = mouseEvent.ctrlKey || mouseEvent.metaKey;\n        var shiftKeyPressed = mouseEvent.shiftKey;\n        // we do not allow selecting the group by clicking, when groupSelectChildren, as the logic to\n        // handle this is broken. to observe, change the logic below and allow groups to be selected.\n        // you will see the group gets selected, then all children get selected, then the grid unselects\n        // the children (as the default behaviour when clicking is to unselect other rows) which results\n        // in the group getting unselected (as all children are unselected). the correct thing would be\n        // to change this, so that children of the selected group are not then subsequenly un-selected.\n        var groupSelectsChildren = this.beans.gridOptionsService.is('groupSelectsChildren');\n        if (\n        // we do not allow selecting groups by clicking (as the click here expands the group), or if it's a detail row,\n        // so return if it's a group row\n        (groupSelectsChildren && this.rowNode.group) ||\n            // this is needed so we don't unselect other rows when we click this row, eg if this row is not selectable,\n            // and we click it, the selection should not change (ie any currently selected row should stay selected)\n            !this.rowNode.selectable ||\n            // we also don't allow selection of pinned rows\n            this.rowNode.rowPinned ||\n            // if no selection method enabled, do nothing\n            !this.beans.gridOptionsService.isRowSelection() ||\n            // if click selection suppressed, do nothing\n            this.beans.gridOptionsService.is('suppressRowClickSelection')) {\n            return;\n        }\n        var multiSelectOnClick = this.beans.gridOptionsService.is('rowMultiSelectWithClick');\n        var rowDeselectionWithCtrl = !this.beans.gridOptionsService.is('suppressRowDeselection');\n        var source = 'rowClicked';\n        if (this.rowNode.isSelected()) {\n            if (multiSelectOnClick) {\n                this.rowNode.setSelectedParams({ newValue: false, event: mouseEvent, source: source });\n            }\n            else if (multiSelectKeyPressed) {\n                if (rowDeselectionWithCtrl) {\n                    this.rowNode.setSelectedParams({ newValue: false, event: mouseEvent, source: source });\n                }\n            }\n            else {\n                // selected with no multi key, must make sure anything else is unselected\n                this.rowNode.setSelectedParams({ newValue: true, clearSelection: !shiftKeyPressed, rangeSelect: shiftKeyPressed, event: mouseEvent, source: source });\n            }\n        }\n        else {\n            var clearSelection = multiSelectOnClick ? false : !multiSelectKeyPressed;\n            this.rowNode.setSelectedParams({ newValue: true, clearSelection: clearSelection, rangeSelect: shiftKeyPressed, event: mouseEvent, source: source });\n        }\n    };\n    RowCtrl.prototype.setupDetailRowAutoHeight = function (eDetailGui) {\n        var _this = this;\n        if (this.rowType !== RowType$1.FullWidthDetail) {\n            return;\n        }\n        if (!this.beans.gridOptionsService.is('detailRowAutoHeight')) {\n            return;\n        }\n        var checkRowSizeFunc = function () {\n            var clientHeight = eDetailGui.clientHeight;\n            // if the UI is not ready, the height can be 0, which we ignore, as otherwise a flicker will occur\n            // as UI goes from the default height, to 0, then to the real height as UI becomes ready. this means\n            // it's not possible for have 0 as auto-height, however this is an improbable use case, as even an\n            // empty detail grid would still have some styling around it giving at least a few pixels.\n            if (clientHeight != null && clientHeight > 0) {\n                // we do the update in a timeout, to make sure we are not calling from inside the grid\n                // doing another update\n                var updateRowHeightFunc = function () {\n                    _this.rowNode.setRowHeight(clientHeight);\n                    if (_this.beans.clientSideRowModel) {\n                        _this.beans.clientSideRowModel.onRowHeightChanged();\n                    }\n                    else if (_this.beans.serverSideRowModel) {\n                        _this.beans.serverSideRowModel.onRowHeightChanged();\n                    }\n                };\n                _this.beans.frameworkOverrides.setTimeout(updateRowHeightFunc, 0);\n            }\n        };\n        var resizeObserverDestroyFunc = this.beans.resizeObserverService.observeResize(eDetailGui, checkRowSizeFunc);\n        this.addDestroyFunc(resizeObserverDestroyFunc);\n        checkRowSizeFunc();\n    };\n    RowCtrl.prototype.createFullWidthParams = function (eRow, pinned) {\n        var _this = this;\n        var params = {\n            fullWidth: true,\n            data: this.rowNode.data,\n            node: this.rowNode,\n            value: this.rowNode.key,\n            valueFormatted: this.rowNode.key,\n            rowIndex: this.rowNode.rowIndex,\n            api: this.beans.gridOptionsService.api,\n            columnApi: this.beans.gridOptionsService.columnApi,\n            context: this.beans.gridOptionsService.context,\n            // these need to be taken out, as part of 'afterAttached' now\n            eGridCell: eRow,\n            eParentOfValue: eRow,\n            pinned: pinned,\n            addRenderedRowListener: this.addEventListener.bind(this),\n            registerRowDragger: function (rowDraggerElement, dragStartPixels, value, suppressVisibilityChange) { return _this.addFullWidthRowDragging(rowDraggerElement, dragStartPixels, value, suppressVisibilityChange); }\n        };\n        return params;\n    };\n    RowCtrl.prototype.addFullWidthRowDragging = function (rowDraggerElement, dragStartPixels, value, suppressVisibilityChange) {\n        if (value === void 0) { value = ''; }\n        if (!this.isFullWidth()) {\n            return;\n        }\n        var rowDragComp = new RowDragComp(function () { return value; }, this.rowNode, undefined, rowDraggerElement, dragStartPixels, suppressVisibilityChange);\n        this.createManagedBean(rowDragComp, this.beans.context);\n    };\n    RowCtrl.prototype.onUiLevelChanged = function () {\n        var newLevel = this.beans.rowCssClassCalculator.calculateRowLevel(this.rowNode);\n        if (this.rowLevel != newLevel) {\n            var classToAdd_1 = 'ag-row-level-' + newLevel;\n            var classToRemove_1 = 'ag-row-level-' + this.rowLevel;\n            this.allRowGuis.forEach(function (gui) {\n                gui.rowComp.addOrRemoveCssClass(classToAdd_1, true);\n                gui.rowComp.addOrRemoveCssClass(classToRemove_1, false);\n            });\n        }\n        this.rowLevel = newLevel;\n    };\n    RowCtrl.prototype.isFirstRowOnPage = function () {\n        return this.rowNode.rowIndex === this.beans.paginationProxy.getPageFirstRow();\n    };\n    RowCtrl.prototype.isLastRowOnPage = function () {\n        return this.rowNode.rowIndex === this.beans.paginationProxy.getPageLastRow();\n    };\n    RowCtrl.prototype.onModelUpdated = function () {\n        this.refreshFirstAndLastRowStyles();\n    };\n    RowCtrl.prototype.refreshFirstAndLastRowStyles = function () {\n        var newFirst = this.isFirstRowOnPage();\n        var newLast = this.isLastRowOnPage();\n        if (this.firstRowOnPage !== newFirst) {\n            this.firstRowOnPage = newFirst;\n            this.allRowGuis.forEach(function (gui) { return gui.rowComp.addOrRemoveCssClass('ag-row-first', newFirst); });\n        }\n        if (this.lastRowOnPage !== newLast) {\n            this.lastRowOnPage = newLast;\n            this.allRowGuis.forEach(function (gui) { return gui.rowComp.addOrRemoveCssClass('ag-row-last', newLast); });\n        }\n    };\n    RowCtrl.prototype.stopEditing = function (cancel) {\n        var e_1, _a;\n        if (cancel === void 0) { cancel = false; }\n        // if we are already stopping row edit, there is\n        // no need to start this process again.\n        if (this.stoppingRowEdit) {\n            return;\n        }\n        var cellControls = this.getAllCellCtrls();\n        var isRowEdit = this.editingRow;\n        this.stoppingRowEdit = true;\n        var fireRowEditEvent = false;\n        try {\n            for (var cellControls_1 = __values$3(cellControls), cellControls_1_1 = cellControls_1.next(); !cellControls_1_1.done; cellControls_1_1 = cellControls_1.next()) {\n                var ctrl = cellControls_1_1.value;\n                var valueChanged = ctrl.stopEditing(cancel);\n                if (isRowEdit && !cancel && !fireRowEditEvent && valueChanged) {\n                    fireRowEditEvent = true;\n                }\n            }\n        }\n        catch (e_1_1) { e_1 = { error: e_1_1 }; }\n        finally {\n            try {\n                if (cellControls_1_1 && !cellControls_1_1.done && (_a = cellControls_1.return)) _a.call(cellControls_1);\n            }\n            finally { if (e_1) throw e_1.error; }\n        }\n        if (fireRowEditEvent) {\n            var event_1 = this.createRowEvent(Events.EVENT_ROW_VALUE_CHANGED);\n            this.beans.eventService.dispatchEvent(event_1);\n        }\n        if (isRowEdit) {\n            this.setEditingRow(false);\n        }\n        this.stoppingRowEdit = false;\n    };\n    RowCtrl.prototype.setInlineEditingCss = function (editing) {\n        this.allRowGuis.forEach(function (gui) {\n            gui.rowComp.addOrRemoveCssClass(\"ag-row-inline-editing\", editing);\n            gui.rowComp.addOrRemoveCssClass(\"ag-row-not-inline-editing\", !editing);\n        });\n    };\n    RowCtrl.prototype.setEditingRow = function (value) {\n        this.editingRow = value;\n        this.allRowGuis.forEach(function (gui) { return gui.rowComp.addOrRemoveCssClass('ag-row-editing', value); });\n        var event = value ?\n            this.createRowEvent(Events.EVENT_ROW_EDITING_STARTED)\n            : this.createRowEvent(Events.EVENT_ROW_EDITING_STOPPED);\n        this.beans.eventService.dispatchEvent(event);\n    };\n    RowCtrl.prototype.startRowEditing = function (key, charPress, sourceRenderedCell, event) {\n        if (key === void 0) { key = null; }\n        if (charPress === void 0) { charPress = null; }\n        if (sourceRenderedCell === void 0) { sourceRenderedCell = null; }\n        if (event === void 0) { event = null; }\n        // don't do it if already editing\n        if (this.editingRow) {\n            return;\n        }\n        var atLeastOneEditing = this.getAllCellCtrls().reduce(function (prev, cellCtrl) {\n            var cellStartedEdit = cellCtrl === sourceRenderedCell;\n            if (cellStartedEdit) {\n                cellCtrl.startEditing(key, charPress, cellStartedEdit, event);\n            }\n            else {\n                cellCtrl.startEditing(null, null, cellStartedEdit, event);\n            }\n            if (prev) {\n                return true;\n            }\n            return cellCtrl.isEditing();\n        }, false);\n        if (atLeastOneEditing) {\n            this.setEditingRow(true);\n        }\n    };\n    RowCtrl.prototype.getAllCellCtrls = function () {\n        if (this.leftCellCtrls.list.length === 0 && this.rightCellCtrls.list.length === 0) {\n            return this.centerCellCtrls.list;\n        }\n        var res = __spread$g(this.centerCellCtrls.list, this.leftCellCtrls.list, this.rightCellCtrls.list);\n        return res;\n    };\n    RowCtrl.prototype.postProcessClassesFromGridOptions = function () {\n        var _this = this;\n        var cssClasses = this.beans.rowCssClassCalculator.processClassesFromGridOptions(this.rowNode);\n        if (!cssClasses || !cssClasses.length) {\n            return;\n        }\n        cssClasses.forEach(function (classStr) {\n            _this.allRowGuis.forEach(function (c) { return c.rowComp.addOrRemoveCssClass(classStr, true); });\n        });\n    };\n    RowCtrl.prototype.postProcessRowClassRules = function () {\n        var _this = this;\n        this.beans.rowCssClassCalculator.processRowClassRules(this.rowNode, function (className) {\n            _this.allRowGuis.forEach(function (gui) { return gui.rowComp.addOrRemoveCssClass(className, true); });\n        }, function (className) {\n            _this.allRowGuis.forEach(function (gui) { return gui.rowComp.addOrRemoveCssClass(className, false); });\n        });\n    };\n    RowCtrl.prototype.setStylesFromGridOptions = function (gui) {\n        var rowStyles = this.processStylesFromGridOptions();\n        this.forEachGui(gui, function (gui) { return gui.rowComp.setUserStyles(rowStyles); });\n    };\n    RowCtrl.prototype.getPinnedForContainer = function (rowContainerType) {\n        var pinned = rowContainerType === RowContainerType.LEFT\n            ? 'left'\n            : rowContainerType === RowContainerType.RIGHT\n                ? 'right'\n                : null;\n        return pinned;\n    };\n    RowCtrl.prototype.getInitialRowClasses = function (rowContainerType) {\n        var pinned = this.getPinnedForContainer(rowContainerType);\n        var params = {\n            rowNode: this.rowNode,\n            rowFocused: this.rowFocused,\n            fadeRowIn: this.fadeInAnimation[rowContainerType],\n            rowIsEven: this.rowNode.rowIndex % 2 === 0,\n            rowLevel: this.rowLevel,\n            fullWidthRow: this.isFullWidth(),\n            firstRowOnPage: this.isFirstRowOnPage(),\n            lastRowOnPage: this.isLastRowOnPage(),\n            printLayout: this.printLayout,\n            expandable: this.rowNode.isExpandable(),\n            pinned: pinned\n        };\n        return this.beans.rowCssClassCalculator.getInitialRowClasses(params);\n    };\n    RowCtrl.prototype.processStylesFromGridOptions = function () {\n        // part 1 - rowStyle\n        var rowStyle = this.beans.gridOptionsService.get('rowStyle');\n        if (rowStyle && typeof rowStyle === 'function') {\n            console.warn('AG Grid: rowStyle should be an object of key/value styles, not be a function, use getRowStyle() instead');\n            return;\n        }\n        // part 1 - rowStyleFunc\n        var rowStyleFunc = this.beans.gridOptionsService.getCallback('getRowStyle');\n        var rowStyleFuncResult;\n        if (rowStyleFunc) {\n            var params = {\n                data: this.rowNode.data,\n                node: this.rowNode,\n                rowIndex: this.rowNode.rowIndex\n            };\n            rowStyleFuncResult = rowStyleFunc(params);\n        }\n        return Object.assign({}, rowStyle, rowStyleFuncResult);\n    };\n    RowCtrl.prototype.onRowSelected = function (gui) {\n        var _this = this;\n        // Treat undefined as false, if we pass undefined down it gets treated as toggle class, rather than explicitly\n        // setting the required value\n        var selected = !!this.rowNode.isSelected();\n        this.forEachGui(gui, function (gui) {\n            gui.rowComp.addOrRemoveCssClass('ag-row-selected', selected);\n            setAriaSelected(gui.element, selected ? true : undefined);\n            var ariaLabel = _this.createAriaLabel();\n            setAriaLabel(gui.element, ariaLabel == null ? '' : ariaLabel);\n        });\n    };\n    RowCtrl.prototype.createAriaLabel = function () {\n        var selected = this.rowNode.isSelected();\n        if (selected && this.beans.gridOptionsService.is('suppressRowDeselection')) {\n            return undefined;\n        }\n        var translate = this.beans.localeService.getLocaleTextFunc();\n        var label = translate(selected ? 'ariaRowDeselect' : 'ariaRowSelect', \"Press SPACE to \" + (selected ? 'deselect' : 'select') + \" this row.\");\n        return label;\n    };\n    RowCtrl.prototype.isUseAnimationFrameForCreate = function () {\n        return this.useAnimationFrameForCreate;\n    };\n    RowCtrl.prototype.addHoverFunctionality = function (eRow) {\n        var _this = this;\n        // because we use animation frames to do this, it's possible the row no longer exists\n        // by the time we get to add it\n        if (!this.active) {\n            return;\n        }\n        // because mouseenter and mouseleave do not propagate, we cannot listen on the gridPanel\n        // like we do for all the other mouse events.\n        // because of the pinning, we cannot simply add / remove the class based on the eRow. we\n        // have to check all eRow's (body & pinned). so the trick is if any of the rows gets a\n        // mouse hover, it sets such in the rowNode, and then all three reflect the change as\n        // all are listening for event on the row node.\n        // step 1 - add listener, to set flag on row node\n        this.addManagedListener(eRow, 'mouseenter', function () { return _this.rowNode.onMouseEnter(); });\n        this.addManagedListener(eRow, 'mouseleave', function () { return _this.rowNode.onMouseLeave(); });\n        // step 2 - listen for changes on row node (which any eRow can trigger)\n        this.addManagedListener(this.rowNode, RowNode.EVENT_MOUSE_ENTER, function () {\n            // if hover turned off, we don't add the class. we do this here so that if the application\n            // toggles this property mid way, we remove the hover form the last row, but we stop\n            // adding hovers from that point onwards. Also, do not highlight while dragging elements around.\n            if (!_this.beans.dragService.isDragging() &&\n                !_this.beans.gridOptionsService.is('suppressRowHoverHighlight')) {\n                eRow.classList.add('ag-row-hover');\n                _this.rowNode.setHovered(true);\n            }\n        });\n        this.addManagedListener(this.rowNode, RowNode.EVENT_MOUSE_LEAVE, function () {\n            eRow.classList.remove('ag-row-hover');\n            _this.rowNode.setHovered(false);\n        });\n    };\n    // for animation, we don't want to animate entry or exit to a very far away pixel,\n    // otherwise the row would move so fast, it would appear to disappear. so this method\n    // moves the row closer to the viewport if it is far away, so the row slide in / out\n    // at a speed the user can see.\n    RowCtrl.prototype.roundRowTopToBounds = function (rowTop) {\n        var gridBodyCon = this.beans.ctrlsService.getGridBodyCtrl();\n        var range = gridBodyCon.getScrollFeature().getVScrollPosition();\n        var minPixel = this.applyPaginationOffset(range.top, true) - 100;\n        var maxPixel = this.applyPaginationOffset(range.bottom, true) + 100;\n        return Math.min(Math.max(minPixel, rowTop), maxPixel);\n    };\n    RowCtrl.prototype.getFrameworkOverrides = function () {\n        return this.beans.frameworkOverrides;\n    };\n    RowCtrl.prototype.forEachGui = function (gui, callback) {\n        var list = gui ? [gui] : this.allRowGuis;\n        list.forEach(callback);\n    };\n    RowCtrl.prototype.onRowHeightChanged = function (gui) {\n        // check for exists first - if the user is resetting the row height, then\n        // it will be null (or undefined) momentarily until the next time the flatten\n        // stage is called where the row will then update again with a new height\n        if (this.rowNode.rowHeight == null) {\n            return;\n        }\n        var rowHeight = this.rowNode.rowHeight;\n        var defaultRowHeight = this.beans.environment.getDefaultRowHeight();\n        var isHeightFromFunc = this.beans.gridOptionsService.isGetRowHeightFunction();\n        var heightFromFunc = isHeightFromFunc ? this.beans.gridOptionsService.getRowHeightForNode(this.rowNode).height : undefined;\n        var lineHeight = heightFromFunc ? Math.min(defaultRowHeight, heightFromFunc) - 2 + \"px\" : undefined;\n        this.forEachGui(gui, function (gui) {\n            gui.element.style.height = rowHeight + \"px\";\n            // If the row height is coming from a function, this means some rows can\n            // be smaller than the theme had intended. so we set --ag-line-height on\n            // the row, which is picked up by the theme CSS and is used in a calc\n            // for the CSS line-height property, which makes sure the line-height is\n            // not bigger than the row height, otherwise the row text would not fit.\n            // We do not use rowNode.rowHeight here, as this could be the result of autoHeight,\n            // and we found using the autoHeight result causes a loop, where changing the\n            // line-height them impacts the cell height, resulting in a new autoHeight,\n            // resulting in a new line-height and so on loop.\n            // const heightFromFunc = this.beans.gridOptionsService.getRowHeightForNode(this.rowNode).height;\n            if (lineHeight) {\n                gui.element.style.setProperty('--ag-line-height', lineHeight);\n            }\n        });\n    };\n    RowCtrl.prototype.addEventListener = function (eventType, listener) {\n        _super.prototype.addEventListener.call(this, eventType, listener);\n    };\n    RowCtrl.prototype.removeEventListener = function (eventType, listener) {\n        _super.prototype.removeEventListener.call(this, eventType, listener);\n    };\n    // note - this is NOT called by context, as we don't wire / unwire the CellComp for performance reasons.\n    RowCtrl.prototype.destroyFirstPass = function () {\n        this.active = false;\n        // why do we have this method? shouldn't everything below be added as a destroy func beside\n        // the corresponding create logic?\n        if (this.beans.gridOptionsService.isAnimateRows()) {\n            this.setupRemoveAnimation();\n        }\n        this.rowNode.setHovered(false);\n        var event = this.createRowEvent(Events.EVENT_VIRTUAL_ROW_REMOVED);\n        this.dispatchEvent(event);\n        this.beans.eventService.dispatchEvent(event);\n        _super.prototype.destroy.call(this);\n    };\n    RowCtrl.prototype.setupRemoveAnimation = function () {\n        // we don't animate sticky rows\n        if (this.isSticky()) {\n            return;\n        }\n        var rowStillVisibleJustNotInViewport = this.rowNode.rowTop != null;\n        if (rowStillVisibleJustNotInViewport) {\n            // if the row is not rendered, but in viewport, it means it has moved,\n            // so we animate the row out. if the new location is very far away,\n            // the animation will be so fast the row will look like it's just disappeared,\n            // so instead we animate to a position just outside the viewport.\n            var rowTop = this.roundRowTopToBounds(this.rowNode.rowTop);\n            this.setRowTop(rowTop);\n        }\n        else {\n            this.allRowGuis.forEach(function (gui) { return gui.rowComp.addOrRemoveCssClass('ag-opacity-zero', true); });\n        }\n    };\n    RowCtrl.prototype.destroySecondPass = function () {\n        this.allRowGuis.length = 0;\n        var destroyCellCtrls = function (ctrls) {\n            ctrls.list.forEach(function (c) { return c.destroy(); });\n            return { list: [], map: {} };\n        };\n        this.centerCellCtrls = destroyCellCtrls(this.centerCellCtrls);\n        this.leftCellCtrls = destroyCellCtrls(this.leftCellCtrls);\n        this.rightCellCtrls = destroyCellCtrls(this.rightCellCtrls);\n    };\n    RowCtrl.prototype.setFocusedClasses = function (gui) {\n        var _this = this;\n        this.forEachGui(gui, function (gui) {\n            gui.rowComp.addOrRemoveCssClass('ag-row-focus', _this.rowFocused);\n            gui.rowComp.addOrRemoveCssClass('ag-row-no-focus', !_this.rowFocused);\n        });\n    };\n    RowCtrl.prototype.onCellFocused = function () {\n        this.onCellFocusChanged();\n    };\n    RowCtrl.prototype.onCellFocusCleared = function () {\n        this.onCellFocusChanged();\n    };\n    RowCtrl.prototype.onCellFocusChanged = function () {\n        var rowFocused = this.beans.focusService.isRowFocused(this.rowNode.rowIndex, this.rowNode.rowPinned);\n        if (rowFocused !== this.rowFocused) {\n            this.rowFocused = rowFocused;\n            this.setFocusedClasses();\n        }\n        // if we are editing, then moving the focus out of a row will stop editing\n        if (!rowFocused && this.editingRow) {\n            this.stopEditing(false);\n        }\n    };\n    RowCtrl.prototype.onPaginationChanged = function () {\n        var currentPage = this.beans.paginationProxy.getCurrentPage();\n        // it is possible this row is in the new page, but the page number has changed, which means\n        // it needs to reposition itself relative to the new page\n        if (this.paginationPage !== currentPage) {\n            this.paginationPage = currentPage;\n            this.onTopChanged();\n        }\n        this.refreshFirstAndLastRowStyles();\n    };\n    RowCtrl.prototype.onTopChanged = function () {\n        this.setRowTop(this.rowNode.rowTop);\n    };\n    RowCtrl.prototype.onPaginationPixelOffsetChanged = function () {\n        // the pixel offset is used when calculating rowTop to set on the row DIV\n        this.onTopChanged();\n    };\n    // applies pagination offset, eg if on second page, and page height is 500px, then removes\n    // 500px from the top position, so a row with rowTop 600px is displayed at location 100px.\n    // reverse will take the offset away rather than add.\n    RowCtrl.prototype.applyPaginationOffset = function (topPx, reverse) {\n        if (reverse === void 0) { reverse = false; }\n        if (this.rowNode.isRowPinned()) {\n            return topPx;\n        }\n        var pixelOffset = this.beans.paginationProxy.getPixelOffset();\n        var multiplier = reverse ? 1 : -1;\n        return topPx + (pixelOffset * multiplier);\n    };\n    RowCtrl.prototype.setRowTop = function (pixels) {\n        // print layout uses normal flow layout for row positioning\n        if (this.printLayout) {\n            return;\n        }\n        // need to make sure rowTop is not null, as this can happen if the node was once\n        // visible (ie parent group was expanded) but is now not visible\n        if (exists(pixels)) {\n            var afterPaginationPixels = this.applyPaginationOffset(pixels);\n            var afterScalingPixels = this.rowNode.isRowPinned() ? afterPaginationPixels : this.beans.rowContainerHeightService.getRealPixelPosition(afterPaginationPixels);\n            var topPx = afterScalingPixels + \"px\";\n            this.setRowTopStyle(topPx);\n        }\n    };\n    // the top needs to be set into the DOM element when the element is created, not updated afterwards.\n    // otherwise the transition would not work, as it would be transitioning from zero (the unset value).\n    // for example, suppose a row that is outside the viewport, then user does a filter to remove other rows\n    // and this row now appears in the viewport, and the row moves up (ie it was under the viewport and not rendered,\n    // but now is in the viewport) then a new RowComp is created, however it should have it's position initialised\n    // to below the viewport, so the row will appear to animate up. if we didn't set the initial position at creation\n    // time, the row would animate down (ie from position zero).\n    RowCtrl.prototype.getInitialRowTop = function (rowContainerType) {\n        var suppressRowTransform = this.beans.gridOptionsService.is('suppressRowTransform');\n        return suppressRowTransform ? this.getInitialRowTopShared(rowContainerType) : undefined;\n    };\n    RowCtrl.prototype.getInitialTransform = function (rowContainerType) {\n        var suppressRowTransform = this.beans.gridOptionsService.is('suppressRowTransform');\n        return suppressRowTransform ? undefined : \"translateY(\" + this.getInitialRowTopShared(rowContainerType) + \")\";\n    };\n    RowCtrl.prototype.getInitialRowTopShared = function (rowContainerType) {\n        // print layout uses normal flow layout for row positioning\n        if (this.printLayout) {\n            return '';\n        }\n        var rowTop;\n        if (this.isSticky()) {\n            rowTop = this.rowNode.stickyRowTop;\n        }\n        else {\n            // if sliding in, we take the old row top. otherwise we just set the current row top.\n            var pixels = this.slideInAnimation[rowContainerType] ? this.roundRowTopToBounds(this.rowNode.oldRowTop) : this.rowNode.rowTop;\n            var afterPaginationPixels = this.applyPaginationOffset(pixels);\n            // we don't apply scaling if row is pinned\n            rowTop = this.rowNode.isRowPinned() ? afterPaginationPixels : this.beans.rowContainerHeightService.getRealPixelPosition(afterPaginationPixels);\n        }\n        return rowTop + 'px';\n    };\n    RowCtrl.prototype.setRowTopStyle = function (topPx) {\n        var suppressRowTransform = this.beans.gridOptionsService.is('suppressRowTransform');\n        this.allRowGuis.forEach(function (gui) { return suppressRowTransform ?\n            gui.rowComp.setTop(topPx) :\n            gui.rowComp.setTransform(\"translateY(\" + topPx + \")\"); });\n    };\n    RowCtrl.prototype.getRowNode = function () {\n        return this.rowNode;\n    };\n    RowCtrl.prototype.getCellCtrl = function (column) {\n        // first up, check for cell directly linked to this column\n        var res = null;\n        this.getAllCellCtrls().forEach(function (cellCtrl) {\n            if (cellCtrl.getColumn() == column) {\n                res = cellCtrl;\n            }\n        });\n        if (res != null) {\n            return res;\n        }\n        // second up, if not found, then check for spanned cols.\n        // we do this second (and not at the same time) as this is\n        // more expensive, as spanning cols is a\n        // infrequently used feature so we don't need to do this most\n        // of the time\n        this.getAllCellCtrls().forEach(function (cellCtrl) {\n            if (cellCtrl.getColSpanningList().indexOf(column) >= 0) {\n                res = cellCtrl;\n            }\n        });\n        return res;\n    };\n    RowCtrl.prototype.onRowIndexChanged = function () {\n        // we only bother updating if the rowIndex is present. if it is not present, it means this row\n        // is child of a group node, and the group node was closed, it's the only way to have no row index.\n        // when this happens, row is about to be de-rendered, so we don't care, rowComp is about to die!\n        if (this.rowNode.rowIndex != null) {\n            this.onCellFocusChanged();\n            this.updateRowIndexes();\n            this.postProcessCss();\n        }\n    };\n    RowCtrl.prototype.updateRowIndexes = function (gui) {\n        var rowIndexStr = this.rowNode.getRowIndexString();\n        var headerRowCount = this.beans.headerNavigationService.getHeaderRowCount();\n        var rowIsEven = this.rowNode.rowIndex % 2 === 0;\n        var ariaRowIndex = headerRowCount + this.rowNode.rowIndex + 1;\n        this.forEachGui(gui, function (c) {\n            c.rowComp.setRowIndex(rowIndexStr);\n            c.rowComp.addOrRemoveCssClass('ag-row-even', rowIsEven);\n            c.rowComp.addOrRemoveCssClass('ag-row-odd', !rowIsEven);\n            setAriaRowIndex(c.element, ariaRowIndex);\n        });\n    };\n    // returns the pinned left container, either the normal one, or the embedded full with one if exists\n    RowCtrl.prototype.getPinnedLeftRowElement = function () {\n        return this.leftGui ? this.leftGui.element : undefined;\n    };\n    // returns the pinned right container, either the normal one, or the embedded full with one if exists\n    RowCtrl.prototype.getPinnedRightRowElement = function () {\n        return this.rightGui ? this.rightGui.element : undefined;\n    };\n    // returns the body container, either the normal one, or the embedded full with one if exists\n    RowCtrl.prototype.getBodyRowElement = function () {\n        return this.centerGui ? this.centerGui.element : undefined;\n    };\n    // returns the full width container\n    RowCtrl.prototype.getFullWidthRowElement = function () {\n        return this.fullWidthGui ? this.fullWidthGui.element : undefined;\n    };\n    RowCtrl.DOM_DATA_KEY_ROW_CTRL = 'renderedRow';\n    return RowCtrl;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$1N = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$1K = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __read$j = (undefined && undefined.__read) || function (o, n) {\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n    if (!m) return o;\n    var i = m.call(o), r, ar = [], e;\n    try {\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n    }\n    catch (error) { e = { error: error }; }\n    finally {\n        try {\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\n        }\n        finally { if (e) throw e.error; }\n    }\n    return ar;\n};\nvar RowContainerEventsFeature = /** @class */ (function (_super) {\n    __extends$1N(RowContainerEventsFeature, _super);\n    function RowContainerEventsFeature(element) {\n        var _this = _super.call(this) || this;\n        _this.element = element;\n        return _this;\n    }\n    RowContainerEventsFeature.prototype.postConstruct = function () {\n        this.addMouseListeners();\n        this.mockContextMenuForIPad();\n        this.addKeyboardEvents();\n    };\n    RowContainerEventsFeature.prototype.addKeyboardEvents = function () {\n        var _this = this;\n        var eventNames = ['keydown', 'keypress'];\n        eventNames.forEach(function (eventName) {\n            var listener = _this.processKeyboardEvent.bind(_this, eventName);\n            _this.addManagedListener(_this.element, eventName, listener);\n        });\n    };\n    RowContainerEventsFeature.prototype.addMouseListeners = function () {\n        var _this = this;\n        var mouseDownEvent = isEventSupported('touchstart') ? 'touchstart' : 'mousedown';\n        var eventNames = ['dblclick', 'contextmenu', 'mouseover', 'mouseout', 'click', mouseDownEvent];\n        eventNames.forEach(function (eventName) {\n            var listener = _this.processMouseEvent.bind(_this, eventName);\n            _this.addManagedListener(_this.element, eventName, listener);\n        });\n    };\n    RowContainerEventsFeature.prototype.processMouseEvent = function (eventName, mouseEvent) {\n        if (!this.mouseEventService.isEventFromThisGrid(mouseEvent) ||\n            isStopPropagationForAgGrid(mouseEvent)) {\n            return;\n        }\n        var rowComp = this.getRowForEvent(mouseEvent);\n        var cellCtrl = this.mouseEventService.getRenderedCellForEvent(mouseEvent);\n        if (eventName === \"contextmenu\") {\n            this.handleContextMenuMouseEvent(mouseEvent, null, rowComp, cellCtrl);\n        }\n        else {\n            if (cellCtrl) {\n                cellCtrl.onMouseEvent(eventName, mouseEvent);\n            }\n            if (rowComp) {\n                rowComp.onMouseEvent(eventName, mouseEvent);\n            }\n        }\n    };\n    RowContainerEventsFeature.prototype.mockContextMenuForIPad = function () {\n        var _this = this;\n        // we do NOT want this when not in iPad, otherwise we will be doing\n        if (!isIOSUserAgent()) {\n            return;\n        }\n        var touchListener = new TouchListener(this.element);\n        var longTapListener = function (event) {\n            var rowComp = _this.getRowForEvent(event.touchEvent);\n            var cellComp = _this.mouseEventService.getRenderedCellForEvent(event.touchEvent);\n            _this.handleContextMenuMouseEvent(null, event.touchEvent, rowComp, cellComp);\n        };\n        this.addManagedListener(touchListener, TouchListener.EVENT_LONG_TAP, longTapListener);\n        this.addDestroyFunc(function () { return touchListener.destroy(); });\n    };\n    RowContainerEventsFeature.prototype.getRowForEvent = function (event) {\n        var sourceElement = event.target;\n        while (sourceElement) {\n            var rowCon = this.gridOptionsService.getDomData(sourceElement, RowCtrl.DOM_DATA_KEY_ROW_CTRL);\n            if (rowCon) {\n                return rowCon;\n            }\n            sourceElement = sourceElement.parentElement;\n        }\n        return null;\n    };\n    RowContainerEventsFeature.prototype.handleContextMenuMouseEvent = function (mouseEvent, touchEvent, rowComp, cellCtrl) {\n        var rowNode = rowComp ? rowComp.getRowNode() : null;\n        var column = cellCtrl ? cellCtrl.getColumn() : null;\n        var value = null;\n        if (column) {\n            var event_1 = mouseEvent ? mouseEvent : touchEvent;\n            cellCtrl.dispatchCellContextMenuEvent(event_1);\n            value = this.valueService.getValue(column, rowNode);\n        }\n        // if user clicked on a cell, anchor to that cell, otherwise anchor to the grid panel\n        var gridBodyCon = this.ctrlsService.getGridBodyCtrl();\n        var anchorToElement = cellCtrl ? cellCtrl.getGui() : gridBodyCon.getGridBodyElement();\n        if (this.contextMenuFactory) {\n            this.contextMenuFactory.onContextMenu(mouseEvent, touchEvent, rowNode, column, value, anchorToElement);\n        }\n    };\n    RowContainerEventsFeature.prototype.processKeyboardEvent = function (eventName, keyboardEvent) {\n        var cellComp = getCtrlForEventTarget(this.gridOptionsService, keyboardEvent.target, CellCtrl.DOM_DATA_KEY_CELL_CTRL);\n        var rowComp = getCtrlForEventTarget(this.gridOptionsService, keyboardEvent.target, RowCtrl.DOM_DATA_KEY_ROW_CTRL);\n        if (keyboardEvent.defaultPrevented) {\n            return;\n        }\n        if (cellComp) {\n            this.processCellKeyboardEvent(cellComp, eventName, keyboardEvent);\n        }\n        else if (rowComp && rowComp.isFullWidth()) {\n            this.processFullWidthRowKeyboardEvent(rowComp, eventName, keyboardEvent);\n        }\n    };\n    RowContainerEventsFeature.prototype.processCellKeyboardEvent = function (cellCtrl, eventName, keyboardEvent) {\n        var rowNode = cellCtrl.getRowNode();\n        var column = cellCtrl.getColumn();\n        var editing = cellCtrl.isEditing();\n        var gridProcessingAllowed = !isUserSuppressingKeyboardEvent(this.gridOptionsService, keyboardEvent, rowNode, column, editing);\n        if (gridProcessingAllowed) {\n            switch (eventName) {\n                case 'keydown':\n                    // first see if it's a scroll key, page up / down, home / end etc\n                    var wasScrollKey = !editing && this.navigationService.handlePageScrollingKey(keyboardEvent);\n                    // if not a scroll key, then we pass onto cell\n                    if (!wasScrollKey) {\n                        cellCtrl.onKeyDown(keyboardEvent);\n                    }\n                    // perform clipboard and undo / redo operations\n                    this.doGridOperations(keyboardEvent, cellCtrl.isEditing());\n                    break;\n                case 'keypress':\n                    cellCtrl.onKeyPress(keyboardEvent);\n                    break;\n            }\n        }\n        if (eventName === 'keydown') {\n            var cellKeyDownEvent = cellCtrl.createEvent(keyboardEvent, Events.EVENT_CELL_KEY_DOWN);\n            this.eventService.dispatchEvent(cellKeyDownEvent);\n        }\n        if (eventName === 'keypress') {\n            var cellKeyPressEvent = cellCtrl.createEvent(keyboardEvent, Events.EVENT_CELL_KEY_PRESS);\n            this.eventService.dispatchEvent(cellKeyPressEvent);\n        }\n    };\n    RowContainerEventsFeature.prototype.processFullWidthRowKeyboardEvent = function (rowComp, eventName, keyboardEvent) {\n        var rowNode = rowComp.getRowNode();\n        var focusedCell = this.focusService.getFocusedCell();\n        var column = (focusedCell && focusedCell.column);\n        var gridProcessingAllowed = !isUserSuppressingKeyboardEvent(this.gridOptionsService, keyboardEvent, rowNode, column, false);\n        if (gridProcessingAllowed) {\n            var key = keyboardEvent.key;\n            if (eventName === 'keydown') {\n                switch (key) {\n                    case KeyCode.PAGE_HOME:\n                    case KeyCode.PAGE_END:\n                        this.navigationService.handlePageScrollingKey(keyboardEvent);\n                        break;\n                    case KeyCode.UP:\n                    case KeyCode.DOWN:\n                        rowComp.onKeyboardNavigate(keyboardEvent);\n                        break;\n                    case KeyCode.TAB:\n                        rowComp.onTabKeyDown(keyboardEvent);\n                        break;\n                }\n            }\n        }\n        if (eventName === 'keydown') {\n            var cellKeyDownEvent = rowComp.createRowEvent(Events.EVENT_CELL_KEY_DOWN, keyboardEvent);\n            this.eventService.dispatchEvent(cellKeyDownEvent);\n        }\n        if (eventName === 'keypress') {\n            var cellKeyPressEvent = rowComp.createRowEvent(Events.EVENT_CELL_KEY_PRESS, keyboardEvent);\n            this.eventService.dispatchEvent(cellKeyPressEvent);\n        }\n    };\n    RowContainerEventsFeature.prototype.doGridOperations = function (keyboardEvent, editing) {\n        // check if ctrl or meta key pressed\n        if (!keyboardEvent.ctrlKey && !keyboardEvent.metaKey) {\n            return;\n        }\n        // if the cell the event came from is editing, then we do not\n        // want to do the default shortcut keys, otherwise the editor\n        // (eg a text field) would not be able to do the normal cut/copy/paste\n        if (editing) {\n            return;\n        }\n        // for copy / paste, we don't want to execute when the event\n        // was from a child grid (happens in master detail)\n        if (!this.mouseEventService.isEventFromThisGrid(keyboardEvent)) {\n            return;\n        }\n        var keyCode = normaliseQwertyAzerty(keyboardEvent);\n        if (keyCode === KeyCode.A) {\n            return this.onCtrlAndA(keyboardEvent);\n        }\n        if (keyCode === KeyCode.C) {\n            return this.onCtrlAndC(keyboardEvent);\n        }\n        if (keyCode === KeyCode.X) {\n            return this.onCtrlAndX(keyboardEvent);\n        }\n        if (keyCode === KeyCode.V) {\n            return this.onCtrlAndV();\n        }\n        if (keyCode === KeyCode.D) {\n            return this.onCtrlAndD(keyboardEvent);\n        }\n        if (keyCode === KeyCode.Z) {\n            return this.onCtrlAndZ(keyboardEvent);\n        }\n        if (keyCode === KeyCode.Y) {\n            return this.onCtrlAndY();\n        }\n    };\n    RowContainerEventsFeature.prototype.onCtrlAndA = function (event) {\n        var _a = this, pinnedRowModel = _a.pinnedRowModel, paginationProxy = _a.paginationProxy, rangeService = _a.rangeService;\n        if (rangeService && paginationProxy.isRowsToRender()) {\n            var _b = __read$j([\n                pinnedRowModel.isEmpty('top'),\n                pinnedRowModel.isEmpty('bottom')\n            ], 2), isEmptyPinnedTop = _b[0], isEmptyPinnedBottom = _b[1];\n            var floatingStart = isEmptyPinnedTop ? null : 'top';\n            var floatingEnd = void 0;\n            var rowEnd = void 0;\n            if (isEmptyPinnedBottom) {\n                floatingEnd = null;\n                rowEnd = this.paginationProxy.getRowCount() - 1;\n            }\n            else {\n                floatingEnd = 'bottom';\n                rowEnd = pinnedRowModel.getPinnedBottomRowData().length - 1;\n            }\n            var allDisplayedColumns = this.columnModel.getAllDisplayedColumns();\n            if (missingOrEmpty(allDisplayedColumns)) {\n                return;\n            }\n            rangeService.setCellRange({\n                rowStartIndex: 0,\n                rowStartPinned: floatingStart,\n                rowEndIndex: rowEnd,\n                rowEndPinned: floatingEnd,\n                columnStart: allDisplayedColumns[0],\n                columnEnd: last(allDisplayedColumns)\n            });\n        }\n        event.preventDefault();\n    };\n    RowContainerEventsFeature.prototype.onCtrlAndC = function (event) {\n        if (!this.clipboardService || this.gridOptionsService.is('enableCellTextSelection')) {\n            return;\n        }\n        this.clipboardService.copyToClipboard();\n        event.preventDefault();\n    };\n    RowContainerEventsFeature.prototype.onCtrlAndX = function (event) {\n        if (!this.clipboardService ||\n            this.gridOptionsService.is('enableCellTextSelection') ||\n            this.gridOptionsService.is('suppressCutToClipboard')) {\n            return;\n        }\n        this.clipboardService.cutToClipboard();\n        event.preventDefault();\n    };\n    RowContainerEventsFeature.prototype.onCtrlAndV = function () {\n        if (ModuleRegistry.isRegistered(ModuleNames.ClipboardModule) && !this.gridOptionsService.is('suppressClipboardPaste')) {\n            this.clipboardService.pasteFromClipboard();\n        }\n    };\n    RowContainerEventsFeature.prototype.onCtrlAndD = function (event) {\n        if (ModuleRegistry.isRegistered(ModuleNames.ClipboardModule) && !this.gridOptionsService.is('suppressClipboardPaste')) {\n            this.clipboardService.copyRangeDown();\n        }\n        event.preventDefault();\n    };\n    RowContainerEventsFeature.prototype.onCtrlAndZ = function (event) {\n        if (!this.gridOptionsService.is('undoRedoCellEditing')) {\n            return;\n        }\n        event.preventDefault();\n        if (event.shiftKey) {\n            this.undoRedoService.redo('ui');\n        }\n        else {\n            this.undoRedoService.undo('ui');\n        }\n    };\n    RowContainerEventsFeature.prototype.onCtrlAndY = function () {\n        this.undoRedoService.redo('ui');\n    };\n    __decorate$1K([\n        Autowired('mouseEventService')\n    ], RowContainerEventsFeature.prototype, \"mouseEventService\", void 0);\n    __decorate$1K([\n        Autowired('valueService')\n    ], RowContainerEventsFeature.prototype, \"valueService\", void 0);\n    __decorate$1K([\n        Optional('contextMenuFactory')\n    ], RowContainerEventsFeature.prototype, \"contextMenuFactory\", void 0);\n    __decorate$1K([\n        Autowired('ctrlsService')\n    ], RowContainerEventsFeature.prototype, \"ctrlsService\", void 0);\n    __decorate$1K([\n        Autowired('navigationService')\n    ], RowContainerEventsFeature.prototype, \"navigationService\", void 0);\n    __decorate$1K([\n        Autowired('focusService')\n    ], RowContainerEventsFeature.prototype, \"focusService\", void 0);\n    __decorate$1K([\n        Autowired('undoRedoService')\n    ], RowContainerEventsFeature.prototype, \"undoRedoService\", void 0);\n    __decorate$1K([\n        Autowired('columnModel')\n    ], RowContainerEventsFeature.prototype, \"columnModel\", void 0);\n    __decorate$1K([\n        Autowired('paginationProxy')\n    ], RowContainerEventsFeature.prototype, \"paginationProxy\", void 0);\n    __decorate$1K([\n        Autowired('pinnedRowModel')\n    ], RowContainerEventsFeature.prototype, \"pinnedRowModel\", void 0);\n    __decorate$1K([\n        Optional('rangeService')\n    ], RowContainerEventsFeature.prototype, \"rangeService\", void 0);\n    __decorate$1K([\n        Optional('clipboardService')\n    ], RowContainerEventsFeature.prototype, \"clipboardService\", void 0);\n    __decorate$1K([\n        PostConstruct\n    ], RowContainerEventsFeature.prototype, \"postConstruct\", null);\n    return RowContainerEventsFeature;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$1M = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$1J = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n// listens to changes in the center viewport size, for column and row virtualisation,\n// and adjusts grid as necessary. there are two viewports, one for horizontal and one for\n// vertical scrolling.\nvar ViewportSizeFeature = /** @class */ (function (_super) {\n    __extends$1M(ViewportSizeFeature, _super);\n    function ViewportSizeFeature(centerContainerCtrl) {\n        var _this = _super.call(this) || this;\n        _this.centerContainerCtrl = centerContainerCtrl;\n        return _this;\n    }\n    ViewportSizeFeature.prototype.postConstruct = function () {\n        var _this = this;\n        this.ctrlsService.whenReady(function () {\n            _this.gridBodyCtrl = _this.ctrlsService.getGridBodyCtrl();\n            _this.listenForResize();\n        });\n        this.addManagedListener(this.eventService, Events.EVENT_SCROLLBAR_WIDTH_CHANGED, this.onScrollbarWidthChanged.bind(this));\n    };\n    ViewportSizeFeature.prototype.listenForResize = function () {\n        var _this = this;\n        var listener = function () { return _this.onCenterViewportResized(); };\n        // centerContainer gets horizontal resizes\n        this.centerContainerCtrl.registerViewportResizeListener(listener);\n        // eBodyViewport gets vertical resizes\n        this.gridBodyCtrl.registerBodyViewportResizeListener(listener);\n    };\n    ViewportSizeFeature.prototype.onScrollbarWidthChanged = function () {\n        this.checkViewportAndScrolls();\n    };\n    ViewportSizeFeature.prototype.onCenterViewportResized = function () {\n        if (this.centerContainerCtrl.isViewportVisible()) {\n            this.checkViewportAndScrolls();\n            var newWidth = this.centerContainerCtrl.getCenterWidth();\n            if (newWidth !== this.centerWidth) {\n                this.centerWidth = newWidth;\n                this.columnModel.refreshFlexedColumns({ viewportWidth: this.centerWidth, updateBodyWidths: true, fireResizedEvent: true });\n            }\n        }\n        else {\n            this.bodyHeight = 0;\n        }\n    };\n    // gets called every time the viewport size changes. we use this to check visibility of scrollbars\n    // in the grid panel, and also to check size and position of viewport for row and column virtualisation.\n    ViewportSizeFeature.prototype.checkViewportAndScrolls = function () {\n        // results in updating anything that depends on scroll showing\n        this.updateScrollVisibleService();\n        // fires event if height changes, used by PaginationService, HeightScalerService, RowRenderer\n        this.checkBodyHeight();\n        // check for virtual columns for ColumnController\n        this.onHorizontalViewportChanged();\n        this.gridBodyCtrl.getScrollFeature().checkScrollLeft();\n    };\n    ViewportSizeFeature.prototype.getBodyHeight = function () {\n        return this.bodyHeight;\n    };\n    ViewportSizeFeature.prototype.checkBodyHeight = function () {\n        var eBodyViewport = this.gridBodyCtrl.getBodyViewportElement();\n        var bodyHeight = getInnerHeight(eBodyViewport);\n        if (this.bodyHeight !== bodyHeight) {\n            this.bodyHeight = bodyHeight;\n            var event_1 = {\n                type: Events.EVENT_BODY_HEIGHT_CHANGED\n            };\n            this.eventService.dispatchEvent(event_1);\n        }\n    };\n    ViewportSizeFeature.prototype.updateScrollVisibleService = function () {\n        // because of column animation (which takes 200ms), we have to do this twice.\n        // eg if user removes cols anywhere except at the RHS, then the cols on the RHS\n        // will animate to the left to fill the gap. this animation means just after\n        // the cols are removed, the remaining cols are still in the original location\n        // at the start of the animation, so pre animation the H scrollbar is still needed,\n        // but post animation it is not.\n        this.updateScrollVisibleServiceImpl();\n        setTimeout(this.updateScrollVisibleServiceImpl.bind(this), 500);\n    };\n    ViewportSizeFeature.prototype.updateScrollVisibleServiceImpl = function () {\n        var params = {\n            horizontalScrollShowing: this.isHorizontalScrollShowing(),\n            verticalScrollShowing: this.gridBodyCtrl.isVerticalScrollShowing()\n        };\n        this.scrollVisibleService.setScrollsVisible(params);\n    };\n    ViewportSizeFeature.prototype.isHorizontalScrollShowing = function () {\n        return this.centerContainerCtrl.isHorizontalScrollShowing();\n    };\n    // this gets called whenever a change in the viewport, so we can inform column controller it has to work\n    // out the virtual columns again. gets called from following locations:\n    // + ensureColVisible, scroll, init, layoutChanged, displayedColumnsChanged\n    ViewportSizeFeature.prototype.onHorizontalViewportChanged = function () {\n        var scrollWidth = this.centerContainerCtrl.getCenterWidth();\n        var scrollPosition = this.centerContainerCtrl.getViewportScrollLeft();\n        this.columnModel.setViewportPosition(scrollWidth, scrollPosition);\n    };\n    __decorate$1J([\n        Autowired('ctrlsService')\n    ], ViewportSizeFeature.prototype, \"ctrlsService\", void 0);\n    __decorate$1J([\n        Autowired('columnModel')\n    ], ViewportSizeFeature.prototype, \"columnModel\", void 0);\n    __decorate$1J([\n        Autowired('scrollVisibleService')\n    ], ViewportSizeFeature.prototype, \"scrollVisibleService\", void 0);\n    __decorate$1J([\n        PostConstruct\n    ], ViewportSizeFeature.prototype, \"postConstruct\", null);\n    return ViewportSizeFeature;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$1L = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$1I = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar SetPinnedLeftWidthFeature = /** @class */ (function (_super) {\n    __extends$1L(SetPinnedLeftWidthFeature, _super);\n    function SetPinnedLeftWidthFeature(element) {\n        var _this = _super.call(this) || this;\n        _this.element = element;\n        return _this;\n    }\n    SetPinnedLeftWidthFeature.prototype.postConstruct = function () {\n        this.addManagedListener(this.eventService, Events.EVENT_LEFT_PINNED_WIDTH_CHANGED, this.onPinnedLeftWidthChanged.bind(this));\n    };\n    SetPinnedLeftWidthFeature.prototype.onPinnedLeftWidthChanged = function () {\n        var leftWidth = this.pinnedWidthService.getPinnedLeftWidth();\n        var displayed = leftWidth > 0;\n        setDisplayed(this.element, displayed);\n        setFixedWidth(this.element, leftWidth);\n    };\n    SetPinnedLeftWidthFeature.prototype.getWidth = function () {\n        return this.pinnedWidthService.getPinnedLeftWidth();\n    };\n    __decorate$1I([\n        Autowired('pinnedWidthService')\n    ], SetPinnedLeftWidthFeature.prototype, \"pinnedWidthService\", void 0);\n    __decorate$1I([\n        PostConstruct\n    ], SetPinnedLeftWidthFeature.prototype, \"postConstruct\", null);\n    return SetPinnedLeftWidthFeature;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$1K = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$1H = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar SetPinnedRightWidthFeature = /** @class */ (function (_super) {\n    __extends$1K(SetPinnedRightWidthFeature, _super);\n    function SetPinnedRightWidthFeature(element) {\n        var _this = _super.call(this) || this;\n        _this.element = element;\n        return _this;\n    }\n    SetPinnedRightWidthFeature.prototype.postConstruct = function () {\n        this.addManagedListener(this.eventService, Events.EVENT_RIGHT_PINNED_WIDTH_CHANGED, this.onPinnedRightWidthChanged.bind(this));\n    };\n    SetPinnedRightWidthFeature.prototype.onPinnedRightWidthChanged = function () {\n        var rightWidth = this.pinnedWidthService.getPinnedRightWidth();\n        var displayed = rightWidth > 0;\n        setDisplayed(this.element, displayed);\n        setFixedWidth(this.element, rightWidth);\n    };\n    SetPinnedRightWidthFeature.prototype.getWidth = function () {\n        return this.pinnedWidthService.getPinnedRightWidth();\n    };\n    __decorate$1H([\n        Autowired('pinnedWidthService')\n    ], SetPinnedRightWidthFeature.prototype, \"pinnedWidthService\", void 0);\n    __decorate$1H([\n        PostConstruct\n    ], SetPinnedRightWidthFeature.prototype, \"postConstruct\", null);\n    return SetPinnedRightWidthFeature;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$1J = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$1G = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar SetHeightFeature = /** @class */ (function (_super) {\n    __extends$1J(SetHeightFeature, _super);\n    function SetHeightFeature(eContainer, eWrapper) {\n        var _this = _super.call(this) || this;\n        _this.eContainer = eContainer;\n        _this.eWrapper = eWrapper;\n        return _this;\n    }\n    SetHeightFeature.prototype.postConstruct = function () {\n        this.addManagedListener(this.eventService, Events.EVENT_ROW_CONTAINER_HEIGHT_CHANGED, this.onHeightChanged.bind(this));\n    };\n    SetHeightFeature.prototype.onHeightChanged = function () {\n        var height = this.maxDivHeightScaler.getUiContainerHeight();\n        var heightString = height != null ? height + \"px\" : \"\";\n        this.eContainer.style.height = heightString;\n        if (this.eWrapper) {\n            this.eWrapper.style.height = heightString;\n        }\n    };\n    __decorate$1G([\n        Autowired(\"rowContainerHeightService\")\n    ], SetHeightFeature.prototype, \"maxDivHeightScaler\", void 0);\n    __decorate$1G([\n        PostConstruct\n    ], SetHeightFeature.prototype, \"postConstruct\", null);\n    return SetHeightFeature;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$1I = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$1F = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar DragListenerFeature = /** @class */ (function (_super) {\n    __extends$1I(DragListenerFeature, _super);\n    function DragListenerFeature(eContainer) {\n        var _this = _super.call(this) || this;\n        _this.eContainer = eContainer;\n        return _this;\n    }\n    DragListenerFeature.prototype.postConstruct = function () {\n        var _this = this;\n        if (!this.gridOptionsService.isEnableRangeSelection() || // no range selection if no property\n            missing(this.rangeService) // no range selection if not enterprise version\n        ) {\n            return;\n        }\n        var params = {\n            eElement: this.eContainer,\n            onDragStart: this.rangeService.onDragStart.bind(this.rangeService),\n            onDragStop: this.rangeService.onDragStop.bind(this.rangeService),\n            onDragging: this.rangeService.onDragging.bind(this.rangeService)\n        };\n        this.dragService.addDragSource(params);\n        this.addDestroyFunc(function () { return _this.dragService.removeDragSource(params); });\n    };\n    __decorate$1F([\n        Optional('rangeService')\n    ], DragListenerFeature.prototype, \"rangeService\", void 0);\n    __decorate$1F([\n        Autowired('dragService')\n    ], DragListenerFeature.prototype, \"dragService\", void 0);\n    __decorate$1F([\n        PostConstruct\n    ], DragListenerFeature.prototype, \"postConstruct\", null);\n    return DragListenerFeature;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$1H = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$1E = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar CenterWidthFeature = /** @class */ (function (_super) {\n    __extends$1H(CenterWidthFeature, _super);\n    function CenterWidthFeature(callback, addSpacer) {\n        if (addSpacer === void 0) { addSpacer = false; }\n        var _this = _super.call(this) || this;\n        _this.callback = callback;\n        _this.addSpacer = addSpacer;\n        return _this;\n    }\n    CenterWidthFeature.prototype.postConstruct = function () {\n        var listener = this.setWidth.bind(this);\n        this.addManagedPropertyListener('domLayout', listener);\n        this.addManagedListener(this.eventService, Events.EVENT_DISPLAYED_COLUMNS_CHANGED, listener);\n        this.addManagedListener(this.eventService, Events.EVENT_DISPLAYED_COLUMNS_WIDTH_CHANGED, listener);\n        this.addManagedListener(this.eventService, Events.EVENT_LEFT_PINNED_WIDTH_CHANGED, listener);\n        if (this.addSpacer) {\n            this.addManagedListener(this.eventService, Events.EVENT_RIGHT_PINNED_WIDTH_CHANGED, listener);\n            this.addManagedListener(this.eventService, Events.EVENT_SCROLL_VISIBILITY_CHANGED, listener);\n            this.addManagedListener(this.eventService, Events.EVENT_SCROLLBAR_WIDTH_CHANGED, listener);\n        }\n        this.setWidth();\n    };\n    CenterWidthFeature.prototype.setWidth = function () {\n        var columnModel = this.columnModel;\n        var printLayout = this.gridOptionsService.isDomLayout('print');\n        var centerWidth = columnModel.getBodyContainerWidth();\n        var leftWidth = columnModel.getDisplayedColumnsLeftWidth();\n        var rightWidth = columnModel.getDisplayedColumnsRightWidth();\n        var totalWidth;\n        if (printLayout) {\n            totalWidth = centerWidth + leftWidth + rightWidth;\n        }\n        else {\n            totalWidth = centerWidth;\n            if (this.addSpacer) {\n                var relevantWidth = this.gridOptionsService.is('enableRtl') ? leftWidth : rightWidth;\n                if (relevantWidth === 0 && this.scrollVisibleService.isVerticalScrollShowing()) {\n                    totalWidth += this.gridOptionsService.getScrollbarWidth();\n                }\n            }\n        }\n        this.callback(totalWidth);\n    };\n    __decorate$1E([\n        Autowired('columnModel')\n    ], CenterWidthFeature.prototype, \"columnModel\", void 0);\n    __decorate$1E([\n        Autowired('scrollVisibleService')\n    ], CenterWidthFeature.prototype, \"scrollVisibleService\", void 0);\n    __decorate$1E([\n        PostConstruct\n    ], CenterWidthFeature.prototype, \"postConstruct\", null);\n    return CenterWidthFeature;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$1G = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$1D = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __read$i = (undefined && undefined.__read) || function (o, n) {\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n    if (!m) return o;\n    var i = m.call(o), r, ar = [], e;\n    try {\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n    }\n    catch (error) { e = { error: error }; }\n    finally {\n        try {\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\n        }\n        finally { if (e) throw e.error; }\n    }\n    return ar;\n};\nvar __spread$f = (undefined && undefined.__spread) || function () {\n    for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read$i(arguments[i]));\n    return ar;\n};\nvar RowContainerName;\n(function (RowContainerName) {\n    RowContainerName[\"LEFT\"] = \"left\";\n    RowContainerName[\"RIGHT\"] = \"right\";\n    RowContainerName[\"CENTER\"] = \"center\";\n    RowContainerName[\"FULL_WIDTH\"] = \"fullWidth\";\n    RowContainerName[\"TOP_LEFT\"] = \"topLeft\";\n    RowContainerName[\"TOP_RIGHT\"] = \"topRight\";\n    RowContainerName[\"TOP_CENTER\"] = \"topCenter\";\n    RowContainerName[\"TOP_FULL_WIDTH\"] = \"topFullWidth\";\n    RowContainerName[\"STICKY_TOP_LEFT\"] = \"stickyTopLeft\";\n    RowContainerName[\"STICKY_TOP_RIGHT\"] = \"stickyTopRight\";\n    RowContainerName[\"STICKY_TOP_CENTER\"] = \"stickyTopCenter\";\n    RowContainerName[\"STICKY_TOP_FULL_WIDTH\"] = \"stickyTopFullWidth\";\n    RowContainerName[\"BOTTOM_LEFT\"] = \"bottomLeft\";\n    RowContainerName[\"BOTTOM_RIGHT\"] = \"bottomRight\";\n    RowContainerName[\"BOTTOM_CENTER\"] = \"bottomCenter\";\n    RowContainerName[\"BOTTOM_FULL_WIDTH\"] = \"bottomFullWidth\";\n})(RowContainerName || (RowContainerName = {}));\nvar RowContainerType;\n(function (RowContainerType) {\n    RowContainerType[\"LEFT\"] = \"left\";\n    RowContainerType[\"RIGHT\"] = \"right\";\n    RowContainerType[\"CENTER\"] = \"center\";\n    RowContainerType[\"FULL_WIDTH\"] = \"fullWidth\";\n})(RowContainerType || (RowContainerType = {}));\nfunction getRowContainerTypeForName(name) {\n    switch (name) {\n        case RowContainerName.CENTER:\n        case RowContainerName.TOP_CENTER:\n        case RowContainerName.STICKY_TOP_CENTER:\n        case RowContainerName.BOTTOM_CENTER:\n            return RowContainerType.CENTER;\n        case RowContainerName.LEFT:\n        case RowContainerName.TOP_LEFT:\n        case RowContainerName.STICKY_TOP_LEFT:\n        case RowContainerName.BOTTOM_LEFT:\n            return RowContainerType.LEFT;\n        case RowContainerName.RIGHT:\n        case RowContainerName.TOP_RIGHT:\n        case RowContainerName.STICKY_TOP_RIGHT:\n        case RowContainerName.BOTTOM_RIGHT:\n            return RowContainerType.RIGHT;\n        case RowContainerName.FULL_WIDTH:\n        case RowContainerName.TOP_FULL_WIDTH:\n        case RowContainerName.STICKY_TOP_FULL_WIDTH:\n        case RowContainerName.BOTTOM_FULL_WIDTH:\n            return RowContainerType.FULL_WIDTH;\n        default:\n            throw Error('Invalid Row Container Type');\n    }\n}\nvar ContainerCssClasses = convertToMap([\n    [RowContainerName.CENTER, 'ag-center-cols-container'],\n    [RowContainerName.LEFT, 'ag-pinned-left-cols-container'],\n    [RowContainerName.RIGHT, 'ag-pinned-right-cols-container'],\n    [RowContainerName.FULL_WIDTH, 'ag-full-width-container'],\n    [RowContainerName.TOP_CENTER, 'ag-floating-top-container'],\n    [RowContainerName.TOP_LEFT, 'ag-pinned-left-floating-top'],\n    [RowContainerName.TOP_RIGHT, 'ag-pinned-right-floating-top'],\n    [RowContainerName.TOP_FULL_WIDTH, 'ag-floating-top-full-width-container'],\n    [RowContainerName.STICKY_TOP_CENTER, 'ag-sticky-top-container'],\n    [RowContainerName.STICKY_TOP_LEFT, 'ag-pinned-left-sticky-top'],\n    [RowContainerName.STICKY_TOP_RIGHT, 'ag-pinned-right-sticky-top'],\n    [RowContainerName.STICKY_TOP_FULL_WIDTH, 'ag-sticky-top-full-width-container'],\n    [RowContainerName.BOTTOM_CENTER, 'ag-floating-bottom-container'],\n    [RowContainerName.BOTTOM_LEFT, 'ag-pinned-left-floating-bottom'],\n    [RowContainerName.BOTTOM_RIGHT, 'ag-pinned-right-floating-bottom'],\n    [RowContainerName.BOTTOM_FULL_WIDTH, 'ag-floating-bottom-full-width-container'],\n]);\nvar ViewportCssClasses = convertToMap([\n    [RowContainerName.CENTER, 'ag-center-cols-viewport'],\n    [RowContainerName.TOP_CENTER, 'ag-floating-top-viewport'],\n    [RowContainerName.STICKY_TOP_CENTER, 'ag-sticky-top-viewport'],\n    [RowContainerName.BOTTOM_CENTER, 'ag-floating-bottom-viewport'],\n]);\nvar WrapperCssClasses = convertToMap([\n    [RowContainerName.CENTER, 'ag-center-cols-clipper'],\n]);\nvar RowContainerCtrl = /** @class */ (function (_super) {\n    __extends$1G(RowContainerCtrl, _super);\n    function RowContainerCtrl(name) {\n        var _this = _super.call(this) || this;\n        _this.visible = true;\n        // Maintaining a constant reference enables optimization in React.\n        _this.EMPTY_CTRLS = [];\n        _this.name = name;\n        _this.isFullWithContainer =\n            _this.name === RowContainerName.TOP_FULL_WIDTH\n                || _this.name === RowContainerName.STICKY_TOP_FULL_WIDTH\n                || _this.name === RowContainerName.BOTTOM_FULL_WIDTH\n                || _this.name === RowContainerName.FULL_WIDTH;\n        return _this;\n    }\n    RowContainerCtrl.getRowContainerCssClasses = function (name) {\n        var containerClass = ContainerCssClasses.get(name);\n        var viewportClass = ViewportCssClasses.get(name);\n        var wrapperClass = WrapperCssClasses.get(name);\n        return { container: containerClass, viewport: viewportClass, wrapper: wrapperClass };\n    };\n    RowContainerCtrl.getPinned = function (name) {\n        switch (name) {\n            case RowContainerName.BOTTOM_LEFT:\n            case RowContainerName.TOP_LEFT:\n            case RowContainerName.STICKY_TOP_LEFT:\n            case RowContainerName.LEFT:\n                return 'left';\n            case RowContainerName.BOTTOM_RIGHT:\n            case RowContainerName.TOP_RIGHT:\n            case RowContainerName.STICKY_TOP_RIGHT:\n            case RowContainerName.RIGHT:\n                return 'right';\n            default:\n                return null;\n        }\n    };\n    RowContainerCtrl.prototype.postConstruct = function () {\n        var _this = this;\n        this.enableRtl = this.gridOptionsService.is('enableRtl');\n        this.embedFullWidthRows = this.gridOptionsService.is('embedFullWidthRows');\n        this.forContainers([RowContainerName.CENTER], function () { return _this.viewportSizeFeature = _this.createManagedBean(new ViewportSizeFeature(_this)); });\n    };\n    RowContainerCtrl.prototype.registerWithCtrlsService = function () {\n        switch (this.name) {\n            case RowContainerName.CENTER:\n                this.ctrlsService.registerCenterRowContainerCtrl(this);\n                break;\n            case RowContainerName.LEFT:\n                this.ctrlsService.registerLeftRowContainerCtrl(this);\n                break;\n            case RowContainerName.RIGHT:\n                this.ctrlsService.registerRightRowContainerCtrl(this);\n                break;\n            case RowContainerName.TOP_CENTER:\n                this.ctrlsService.registerTopCenterRowContainerCtrl(this);\n                break;\n            case RowContainerName.TOP_LEFT:\n                this.ctrlsService.registerTopLeftRowContainerCon(this);\n                break;\n            case RowContainerName.TOP_RIGHT:\n                this.ctrlsService.registerTopRightRowContainerCtrl(this);\n                break;\n            case RowContainerName.STICKY_TOP_CENTER:\n                this.ctrlsService.registerStickyTopCenterRowContainerCtrl(this);\n                break;\n            case RowContainerName.STICKY_TOP_LEFT:\n                this.ctrlsService.registerStickyTopLeftRowContainerCon(this);\n                break;\n            case RowContainerName.STICKY_TOP_RIGHT:\n                this.ctrlsService.registerStickyTopRightRowContainerCtrl(this);\n                break;\n            case RowContainerName.BOTTOM_CENTER:\n                this.ctrlsService.registerBottomCenterRowContainerCtrl(this);\n                break;\n            case RowContainerName.BOTTOM_LEFT:\n                this.ctrlsService.registerBottomLeftRowContainerCtrl(this);\n                break;\n            case RowContainerName.BOTTOM_RIGHT:\n                this.ctrlsService.registerBottomRightRowContainerCtrl(this);\n                break;\n        }\n    };\n    RowContainerCtrl.prototype.forContainers = function (names, callback) {\n        if (names.indexOf(this.name) >= 0) {\n            callback();\n        }\n    };\n    RowContainerCtrl.prototype.getContainerElement = function () {\n        return this.eContainer;\n    };\n    RowContainerCtrl.prototype.getViewportSizeFeature = function () {\n        return this.viewportSizeFeature;\n    };\n    RowContainerCtrl.prototype.setComp = function (view, eContainer, eViewport, eWrapper) {\n        var _this = this;\n        this.comp = view;\n        this.eContainer = eContainer;\n        this.eViewport = eViewport;\n        this.eWrapper = eWrapper;\n        this.createManagedBean(new RowContainerEventsFeature(this.eContainer));\n        this.addPreventScrollWhileDragging();\n        this.listenOnDomOrder();\n        this.stopHScrollOnPinnedRows();\n        var allTopNoFW = [RowContainerName.TOP_CENTER, RowContainerName.TOP_LEFT, RowContainerName.TOP_RIGHT];\n        var allStickyTopNoFW = [RowContainerName.STICKY_TOP_CENTER, RowContainerName.STICKY_TOP_LEFT, RowContainerName.STICKY_TOP_RIGHT];\n        var allBottomNoFW = [RowContainerName.BOTTOM_CENTER, RowContainerName.BOTTOM_LEFT, RowContainerName.BOTTOM_RIGHT];\n        var allMiddleNoFW = [RowContainerName.CENTER, RowContainerName.LEFT, RowContainerName.RIGHT];\n        var allNoFW = __spread$f(allTopNoFW, allBottomNoFW, allMiddleNoFW, allStickyTopNoFW);\n        var allMiddle = [RowContainerName.CENTER, RowContainerName.LEFT, RowContainerName.RIGHT, RowContainerName.FULL_WIDTH];\n        var allCenter = [RowContainerName.CENTER, RowContainerName.TOP_CENTER, RowContainerName.STICKY_TOP_CENTER, RowContainerName.BOTTOM_CENTER];\n        var allLeft = [RowContainerName.LEFT, RowContainerName.BOTTOM_LEFT, RowContainerName.TOP_LEFT, RowContainerName.STICKY_TOP_LEFT];\n        var allRight = [RowContainerName.RIGHT, RowContainerName.BOTTOM_RIGHT, RowContainerName.TOP_RIGHT, RowContainerName.STICKY_TOP_RIGHT];\n        this.forContainers(allLeft, function () {\n            _this.pinnedWidthFeature = _this.createManagedBean(new SetPinnedLeftWidthFeature(_this.eContainer));\n            _this.addManagedListener(_this.eventService, Events.EVENT_LEFT_PINNED_WIDTH_CHANGED, function () { return _this.onPinnedWidthChanged(); });\n        });\n        this.forContainers(allRight, function () {\n            _this.pinnedWidthFeature = _this.createManagedBean(new SetPinnedRightWidthFeature(_this.eContainer));\n            _this.addManagedListener(_this.eventService, Events.EVENT_RIGHT_PINNED_WIDTH_CHANGED, function () { return _this.onPinnedWidthChanged(); });\n        });\n        this.forContainers(allMiddle, function () { return _this.createManagedBean(new SetHeightFeature(_this.eContainer, _this.eWrapper)); });\n        this.forContainers(allNoFW, function () { return _this.createManagedBean(new DragListenerFeature(_this.eContainer)); });\n        this.forContainers(allCenter, function () { return _this.createManagedBean(new CenterWidthFeature(function (width) { return _this.comp.setContainerWidth(width + \"px\"); })); });\n        if (isInvisibleScrollbar()) {\n            this.forContainers([RowContainerName.CENTER], function () {\n                var pinnedWidthChangedEvent = _this.enableRtl ? Events.EVENT_LEFT_PINNED_WIDTH_CHANGED : Events.EVENT_RIGHT_PINNED_WIDTH_CHANGED;\n                _this.addManagedListener(_this.eventService, pinnedWidthChangedEvent, function () { return _this.refreshPaddingForFakeScrollbar(); });\n            });\n            this.refreshPaddingForFakeScrollbar();\n        }\n        this.addListeners();\n        this.registerWithCtrlsService();\n    };\n    RowContainerCtrl.prototype.refreshPaddingForFakeScrollbar = function () {\n        var _a = this, enableRtl = _a.enableRtl, columnModel = _a.columnModel, name = _a.name, eWrapper = _a.eWrapper, eContainer = _a.eContainer;\n        var sideToCheck = enableRtl ? RowContainerName.LEFT : RowContainerName.RIGHT;\n        this.forContainers([RowContainerName.CENTER, sideToCheck], function () {\n            var pinnedWidth = columnModel.getContainerWidth(sideToCheck);\n            var marginSide = enableRtl ? 'marginLeft' : 'marginRight';\n            if (name === RowContainerName.CENTER) {\n                eWrapper.style[marginSide] = pinnedWidth ? '0px' : '16px';\n            }\n            else {\n                eContainer.style[marginSide] = pinnedWidth ? '16px' : '0px';\n            }\n        });\n    };\n    RowContainerCtrl.prototype.addListeners = function () {\n        var _this = this;\n        this.addManagedListener(this.eventService, Events.EVENT_SCROLL_VISIBILITY_CHANGED, function () { return _this.onScrollVisibilityChanged(); });\n        this.addManagedListener(this.eventService, Events.EVENT_DISPLAYED_COLUMNS_CHANGED, function () { return _this.onDisplayedColumnsChanged(); });\n        this.addManagedListener(this.eventService, Events.EVENT_DISPLAYED_COLUMNS_WIDTH_CHANGED, function () { return _this.onDisplayedColumnsWidthChanged(); });\n        this.addManagedListener(this.eventService, Events.EVENT_DISPLAYED_ROWS_CHANGED, function (params) { return _this.onDisplayedRowsChanged(params.afterScroll); });\n        this.onScrollVisibilityChanged();\n        this.onDisplayedColumnsChanged();\n        this.onDisplayedColumnsWidthChanged();\n        this.onDisplayedRowsChanged();\n    };\n    RowContainerCtrl.prototype.listenOnDomOrder = function () {\n        var _this = this;\n        // sticky section must show rows in set order\n        var allStickyContainers = [RowContainerName.STICKY_TOP_CENTER, RowContainerName.STICKY_TOP_LEFT, RowContainerName.STICKY_TOP_RIGHT, RowContainerName.STICKY_TOP_FULL_WIDTH];\n        var isStickContainer = allStickyContainers.indexOf(this.name) >= 0;\n        if (isStickContainer) {\n            this.comp.setDomOrder(true);\n            return;\n        }\n        var listener = function () {\n            var isEnsureDomOrder = _this.gridOptionsService.is('ensureDomOrder');\n            var isPrintLayout = _this.gridOptionsService.isDomLayout('print');\n            _this.comp.setDomOrder(isEnsureDomOrder || isPrintLayout);\n        };\n        this.addManagedPropertyListener('domLayout', listener);\n        listener();\n    };\n    // when editing a pinned row, if the cell is half outside the scrollable area, the browser can\n    // scroll the column into view. we do not want this, the pinned sections should never scroll.\n    // so we listen to scrolls on these containers and reset the scroll if we find one.\n    RowContainerCtrl.prototype.stopHScrollOnPinnedRows = function () {\n        var _this = this;\n        this.forContainers([RowContainerName.TOP_CENTER, RowContainerName.STICKY_TOP_CENTER, RowContainerName.BOTTOM_CENTER], function () {\n            var resetScrollLeft = function () { return _this.eViewport.scrollLeft = 0; };\n            _this.addManagedListener(_this.eViewport, 'scroll', resetScrollLeft);\n        });\n    };\n    RowContainerCtrl.prototype.onDisplayedColumnsChanged = function () {\n        var _this = this;\n        this.forContainers([RowContainerName.CENTER], function () { return _this.onHorizontalViewportChanged(); });\n    };\n    RowContainerCtrl.prototype.onDisplayedColumnsWidthChanged = function () {\n        var _this = this;\n        this.forContainers([RowContainerName.CENTER], function () { return _this.onHorizontalViewportChanged(); });\n    };\n    RowContainerCtrl.prototype.onScrollVisibilityChanged = function () {\n        var scrollWidth = this.gridOptionsService.getScrollbarWidth() || 0;\n        if (this.name === RowContainerName.CENTER) {\n            var visible = this.scrollVisibleService.isHorizontalScrollShowing();\n            var scrollbarWidth = visible ? scrollWidth : 0;\n            var size = scrollbarWidth == 0 ? '100%' : \"calc(100% + \" + scrollbarWidth + \"px)\";\n            this.comp.setViewportHeight(size);\n        }\n        if (this.name === RowContainerName.FULL_WIDTH) {\n            var pad = isInvisibleScrollbar() ? 16 : 0;\n            var size = \"calc(100% - \" + pad + \"px)\";\n            this.eContainer.style.setProperty('width', size);\n        }\n    };\n    // this methods prevents the grid views from being scrolled while the dragService is being used\n    // eg. the view should not scroll up and down while dragging rows using the rowDragComp.\n    RowContainerCtrl.prototype.addPreventScrollWhileDragging = function () {\n        var _this = this;\n        var preventScroll = function (e) {\n            if (_this.dragService.isDragging()) {\n                if (e.cancelable) {\n                    e.preventDefault();\n                }\n            }\n        };\n        this.eContainer.addEventListener('touchmove', preventScroll, { passive: false });\n        this.addDestroyFunc(function () { return _this.eContainer.removeEventListener('touchmove', preventScroll); });\n    };\n    // this gets called whenever a change in the viewport, so we can inform column controller it has to work\n    // out the virtual columns again. gets called from following locations:\n    // + ensureColVisible, scroll, init, layoutChanged, displayedColumnsChanged\n    RowContainerCtrl.prototype.onHorizontalViewportChanged = function () {\n        var scrollWidth = this.getCenterWidth();\n        var scrollPosition = this.getCenterViewportScrollLeft();\n        this.columnModel.setViewportPosition(scrollWidth, scrollPosition);\n    };\n    RowContainerCtrl.prototype.getCenterWidth = function () {\n        return getInnerWidth(this.eViewport);\n    };\n    RowContainerCtrl.prototype.getCenterViewportScrollLeft = function () {\n        // we defer to a util, as how you calculated scrollLeft when doing RTL depends on the browser\n        return getScrollLeft(this.eViewport, this.enableRtl);\n    };\n    RowContainerCtrl.prototype.registerViewportResizeListener = function (listener) {\n        var unsubscribeFromResize = this.resizeObserverService.observeResize(this.eViewport, listener);\n        this.addDestroyFunc(function () { return unsubscribeFromResize(); });\n    };\n    RowContainerCtrl.prototype.isViewportVisible = function () {\n        return isVisible(this.eViewport);\n    };\n    RowContainerCtrl.prototype.getViewportScrollLeft = function () {\n        return getScrollLeft(this.eViewport, this.enableRtl);\n    };\n    RowContainerCtrl.prototype.isHorizontalScrollShowing = function () {\n        var isAlwaysShowHorizontalScroll = this.gridOptionsService.is('alwaysShowHorizontalScroll');\n        return isAlwaysShowHorizontalScroll || isHorizontalScrollShowing(this.eViewport);\n    };\n    RowContainerCtrl.prototype.getViewportElement = function () {\n        return this.eViewport;\n    };\n    RowContainerCtrl.prototype.setContainerTranslateX = function (amount) {\n        this.eContainer.style.transform = \"translateX(\" + amount + \"px)\";\n    };\n    RowContainerCtrl.prototype.getHScrollPosition = function () {\n        var res = {\n            left: this.eViewport.scrollLeft,\n            right: this.eViewport.scrollLeft + this.eViewport.offsetWidth\n        };\n        return res;\n    };\n    RowContainerCtrl.prototype.setCenterViewportScrollLeft = function (value) {\n        // we defer to a util, as how you calculated scrollLeft when doing RTL depends on the browser\n        setScrollLeft(this.eViewport, value, this.enableRtl);\n    };\n    RowContainerCtrl.prototype.isContainerVisible = function () {\n        var pinned = RowContainerCtrl.getPinned(this.name);\n        return !pinned || (!!this.pinnedWidthFeature && this.pinnedWidthFeature.getWidth() > 0);\n    };\n    RowContainerCtrl.prototype.onPinnedWidthChanged = function () {\n        var visible = this.isContainerVisible();\n        if (this.visible != visible) {\n            this.visible = visible;\n            this.onDisplayedRowsChanged();\n        }\n        if (isInvisibleScrollbar()) {\n            this.refreshPaddingForFakeScrollbar();\n        }\n    };\n    RowContainerCtrl.prototype.onDisplayedRowsChanged = function (useFlushSync) {\n        var _this = this;\n        if (useFlushSync === void 0) { useFlushSync = false; }\n        if (this.visible) {\n            var printLayout_1 = this.gridOptionsService.isDomLayout('print');\n            var doesRowMatch = function (rowCtrl) {\n                var fullWidthRow = rowCtrl.isFullWidth();\n                var embedFW = _this.embedFullWidthRows || printLayout_1;\n                var match = _this.isFullWithContainer ?\n                    !embedFW && fullWidthRow\n                    : embedFW || !fullWidthRow;\n                return match;\n            };\n            // this list contains either all pinned top, center or pinned bottom rows\n            // this filters out rows not for this container, eg if it's a full with row, but we are not full with container\n            var rowsThisContainer = this.getRowCtrls().filter(doesRowMatch);\n            this.comp.setRowCtrls(rowsThisContainer, useFlushSync);\n        }\n        else {\n            this.comp.setRowCtrls(this.EMPTY_CTRLS, false);\n        }\n    };\n    RowContainerCtrl.prototype.getRowCtrls = function () {\n        switch (this.name) {\n            case RowContainerName.TOP_CENTER:\n            case RowContainerName.TOP_LEFT:\n            case RowContainerName.TOP_RIGHT:\n            case RowContainerName.TOP_FULL_WIDTH:\n                return this.rowRenderer.getTopRowCtrls();\n            case RowContainerName.STICKY_TOP_CENTER:\n            case RowContainerName.STICKY_TOP_LEFT:\n            case RowContainerName.STICKY_TOP_RIGHT:\n            case RowContainerName.STICKY_TOP_FULL_WIDTH:\n                return this.rowRenderer.getStickyTopRowCtrls();\n            case RowContainerName.BOTTOM_CENTER:\n            case RowContainerName.BOTTOM_LEFT:\n            case RowContainerName.BOTTOM_RIGHT:\n            case RowContainerName.BOTTOM_FULL_WIDTH:\n                return this.rowRenderer.getBottomRowCtrls();\n            default:\n                return this.rowRenderer.getRowCtrls();\n        }\n    };\n    __decorate$1D([\n        Autowired('scrollVisibleService')\n    ], RowContainerCtrl.prototype, \"scrollVisibleService\", void 0);\n    __decorate$1D([\n        Autowired('dragService')\n    ], RowContainerCtrl.prototype, \"dragService\", void 0);\n    __decorate$1D([\n        Autowired('ctrlsService')\n    ], RowContainerCtrl.prototype, \"ctrlsService\", void 0);\n    __decorate$1D([\n        Autowired('columnModel')\n    ], RowContainerCtrl.prototype, \"columnModel\", void 0);\n    __decorate$1D([\n        Autowired('resizeObserverService')\n    ], RowContainerCtrl.prototype, \"resizeObserverService\", void 0);\n    __decorate$1D([\n        Autowired('rowRenderer')\n    ], RowContainerCtrl.prototype, \"rowRenderer\", void 0);\n    __decorate$1D([\n        PostConstruct\n    ], RowContainerCtrl.prototype, \"postConstruct\", null);\n    return RowContainerCtrl;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$1F = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$1C = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar GRID_BODY_TEMPLATE = /* html */ \"<div class=\\\"ag-root ag-unselectable\\\" role=\\\"treegrid\\\">\\n        <ag-header-root ref=\\\"gridHeader\\\"></ag-header-root>\\n        <div class=\\\"ag-floating-top\\\" ref=\\\"eTop\\\" role=\\\"presentation\\\">\\n            <ag-row-container ref=\\\"topLeftContainer\\\" name=\\\"\" + RowContainerName.TOP_LEFT + \"\\\"></ag-row-container>\\n            <ag-row-container ref=\\\"topCenterContainer\\\" name=\\\"\" + RowContainerName.TOP_CENTER + \"\\\"></ag-row-container>\\n            <ag-row-container ref=\\\"topRightContainer\\\" name=\\\"\" + RowContainerName.TOP_RIGHT + \"\\\"></ag-row-container>\\n            <ag-row-container ref=\\\"topFullWidthContainer\\\" name=\\\"\" + RowContainerName.TOP_FULL_WIDTH + \"\\\"></ag-row-container>\\n        </div>\\n        <div class=\\\"ag-body\\\" ref=\\\"eBody\\\" role=\\\"presentation\\\">\\n            <div class=\\\"ag-body-clipper\\\" ref=\\\"eBodyClipper\\\" role=\\\"presentation\\\">\\n                <div class=\\\"ag-body-viewport\\\" ref=\\\"eBodyViewport\\\" role=\\\"presentation\\\">\\n                    <ag-row-container ref=\\\"leftContainer\\\" name=\\\"\" + RowContainerName.LEFT + \"\\\"></ag-row-container>\\n                    <ag-row-container ref=\\\"centerContainer\\\" name=\\\"\" + RowContainerName.CENTER + \"\\\"></ag-row-container>\\n                    <ag-row-container ref=\\\"rightContainer\\\" name=\\\"\" + RowContainerName.RIGHT + \"\\\"></ag-row-container>\\n                    <ag-row-container ref=\\\"fullWidthContainer\\\" name=\\\"\" + RowContainerName.FULL_WIDTH + \"\\\"></ag-row-container>\\n                </div>\\n            </div>\\n            <ag-fake-vertical-scroll></ag-fake-vertical-scroll>\\n        </div>\\n        <div class=\\\"ag-sticky-top\\\" ref=\\\"eStickyTop\\\" role=\\\"presentation\\\">\\n            <ag-row-container ref=\\\"stickyTopLeftContainer\\\" name=\\\"\" + RowContainerName.STICKY_TOP_LEFT + \"\\\"></ag-row-container>\\n            <ag-row-container ref=\\\"stickyTopCenterContainer\\\" name=\\\"\" + RowContainerName.STICKY_TOP_CENTER + \"\\\"></ag-row-container>\\n            <ag-row-container ref=\\\"stickyTopRightContainer\\\" name=\\\"\" + RowContainerName.STICKY_TOP_RIGHT + \"\\\"></ag-row-container>\\n            <ag-row-container ref=\\\"stickyTopFullWidthContainer\\\" name=\\\"\" + RowContainerName.STICKY_TOP_FULL_WIDTH + \"\\\"></ag-row-container>\\n        </div>\\n        <div class=\\\"ag-floating-bottom\\\" ref=\\\"eBottom\\\" role=\\\"presentation\\\">\\n            <ag-row-container ref=\\\"bottomLeftContainer\\\" name=\\\"\" + RowContainerName.BOTTOM_LEFT + \"\\\"></ag-row-container>\\n            <ag-row-container ref=\\\"bottomCenterContainer\\\" name=\\\"\" + RowContainerName.BOTTOM_CENTER + \"\\\"></ag-row-container>\\n            <ag-row-container ref=\\\"bottomRightContainer\\\" name=\\\"\" + RowContainerName.BOTTOM_RIGHT + \"\\\"></ag-row-container>\\n            <ag-row-container ref=\\\"bottomFullWidthContainer\\\" name=\\\"\" + RowContainerName.BOTTOM_FULL_WIDTH + \"\\\"></ag-row-container>\\n        </div>\\n        <ag-fake-horizontal-scroll></ag-fake-horizontal-scroll>\\n        <ag-overlay-wrapper></ag-overlay-wrapper>\\n    </div>\";\nvar GridBodyComp = /** @class */ (function (_super) {\n    __extends$1F(GridBodyComp, _super);\n    function GridBodyComp() {\n        return _super.call(this, GRID_BODY_TEMPLATE) || this;\n    }\n    GridBodyComp.prototype.init = function () {\n        var _this = this;\n        var setHeight = function (height, element) {\n            var heightString = height + \"px\";\n            element.style.minHeight = heightString;\n            element.style.height = heightString;\n        };\n        var compProxy = {\n            setRowAnimationCssOnBodyViewport: function (cssClass, animate) { return _this.setRowAnimationCssOnBodyViewport(cssClass, animate); },\n            setColumnCount: function (count) { return setAriaColCount(_this.getGui(), count); },\n            setRowCount: function (count) { return setAriaRowCount(_this.getGui(), count); },\n            setTopHeight: function (height) { return setHeight(height, _this.eTop); },\n            setBottomHeight: function (height) { return setHeight(height, _this.eBottom); },\n            setTopDisplay: function (display) { return _this.eTop.style.display = display; },\n            setBottomDisplay: function (display) { return _this.eBottom.style.display = display; },\n            setStickyTopHeight: function (height) { return _this.eStickyTop.style.height = height; },\n            setStickyTopTop: function (top) { return _this.eStickyTop.style.top = top; },\n            setStickyTopWidth: function (width) { return _this.eStickyTop.style.width = width; },\n            setColumnMovingCss: function (cssClass, flag) { return _this.addOrRemoveCssClass(cssClass, flag); },\n            updateLayoutClasses: function (cssClass, params) {\n                var classLists = [\n                    _this.eBodyViewport.classList,\n                    _this.eBodyClipper.classList,\n                    _this.eBody.classList\n                ];\n                classLists.forEach(function (classList) {\n                    classList.toggle(LayoutCssClasses.AUTO_HEIGHT, params.autoHeight);\n                    classList.toggle(LayoutCssClasses.NORMAL, params.normal);\n                    classList.toggle(LayoutCssClasses.PRINT, params.print);\n                });\n                _this.addOrRemoveCssClass(LayoutCssClasses.AUTO_HEIGHT, params.autoHeight);\n                _this.addOrRemoveCssClass(LayoutCssClasses.NORMAL, params.normal);\n                _this.addOrRemoveCssClass(LayoutCssClasses.PRINT, params.print);\n            },\n            setAlwaysVerticalScrollClass: function (cssClass, on) {\n                return _this.eBodyViewport.classList.toggle(CSS_CLASS_FORCE_VERTICAL_SCROLL, on);\n            },\n            registerBodyViewportResizeListener: function (listener) {\n                var unsubscribeFromResize = _this.resizeObserverService.observeResize(_this.eBodyViewport, listener);\n                _this.addDestroyFunc(function () { return unsubscribeFromResize(); });\n            },\n            setPinnedTopBottomOverflowY: function (overflow) { return _this.eTop.style.overflowY = _this.eBottom.style.overflowY = overflow; },\n            setCellSelectableCss: function (cssClass, selectable) {\n                [_this.eTop, _this.eBodyViewport, _this.eBottom]\n                    .forEach(function (ct) { return ct.classList.toggle(CSS_CLASS_CELL_SELECTABLE, selectable); });\n            },\n            setBodyViewportWidth: function (width) { return _this.eBodyViewport.style.width = width; }\n        };\n        this.ctrl = this.createManagedBean(new GridBodyCtrl());\n        this.ctrl.setComp(compProxy, this.getGui(), this.eBodyViewport, this.eTop, this.eBottom, this.eStickyTop);\n        if (this.rangeService || this.gridOptionsService.get('rowSelection') === 'multiple') {\n            setAriaMultiSelectable(this.getGui(), true);\n        }\n    };\n    GridBodyComp.prototype.setRowAnimationCssOnBodyViewport = function (cssClass, animateRows) {\n        var bodyViewportClassList = this.eBodyViewport.classList;\n        bodyViewportClassList.toggle(RowAnimationCssClasses.ANIMATION_ON, animateRows);\n        bodyViewportClassList.toggle(RowAnimationCssClasses.ANIMATION_OFF, !animateRows);\n    };\n    GridBodyComp.prototype.getFloatingTopBottom = function () {\n        return [this.eTop, this.eBottom];\n    };\n    __decorate$1C([\n        Autowired('resizeObserverService')\n    ], GridBodyComp.prototype, \"resizeObserverService\", void 0);\n    __decorate$1C([\n        Optional('rangeService')\n    ], GridBodyComp.prototype, \"rangeService\", void 0);\n    __decorate$1C([\n        RefSelector('eBodyViewport')\n    ], GridBodyComp.prototype, \"eBodyViewport\", void 0);\n    __decorate$1C([\n        RefSelector('eStickyTop')\n    ], GridBodyComp.prototype, \"eStickyTop\", void 0);\n    __decorate$1C([\n        RefSelector('eTop')\n    ], GridBodyComp.prototype, \"eTop\", void 0);\n    __decorate$1C([\n        RefSelector('eBottom')\n    ], GridBodyComp.prototype, \"eBottom\", void 0);\n    __decorate$1C([\n        RefSelector('gridHeader')\n    ], GridBodyComp.prototype, \"headerRootComp\", void 0);\n    __decorate$1C([\n        RefSelector('eBodyClipper')\n    ], GridBodyComp.prototype, \"eBodyClipper\", void 0);\n    __decorate$1C([\n        RefSelector('eBody')\n    ], GridBodyComp.prototype, \"eBody\", void 0);\n    __decorate$1C([\n        PostConstruct\n    ], GridBodyComp.prototype, \"init\", null);\n    return GridBodyComp;\n}(Component));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$1E = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$1B = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar ScrollVisibleService = /** @class */ (function (_super) {\n    __extends$1E(ScrollVisibleService, _super);\n    function ScrollVisibleService() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    ScrollVisibleService.prototype.postConstruct = function () {\n        this.addManagedListener(this.eventService, Events.EVENT_DISPLAYED_COLUMNS_CHANGED, this.onDisplayedColumnsChanged.bind(this));\n        this.addManagedListener(this.eventService, Events.EVENT_DISPLAYED_COLUMNS_WIDTH_CHANGED, this.onDisplayedColumnsWidthChanged.bind(this));\n    };\n    ScrollVisibleService.prototype.onDisplayedColumnsChanged = function () {\n        this.update();\n    };\n    ScrollVisibleService.prototype.onDisplayedColumnsWidthChanged = function () {\n        this.update();\n    };\n    ScrollVisibleService.prototype.update = function () {\n        // because of column animation (which takes 200ms), we have to do this twice.\n        // eg if user removes cols anywhere except at the RHS, then the cols on the RHS\n        // will animate to the left to fill the gap. this animation means just after\n        // the cols are removed, the remaining cols are still in the original location\n        // at the start of the animation, so pre animation the H scrollbar is still needed,\n        // but post animation it is not.\n        this.updateImpl();\n        setTimeout(this.updateImpl.bind(this), 500);\n    };\n    ScrollVisibleService.prototype.updateImpl = function () {\n        var centerRowCtrl = this.ctrlsService.getCenterRowContainerCtrl();\n        if (!centerRowCtrl) {\n            return;\n        }\n        var params = {\n            horizontalScrollShowing: centerRowCtrl.isHorizontalScrollShowing(),\n            verticalScrollShowing: this.isVerticalScrollShowing()\n        };\n        this.setScrollsVisible(params);\n    };\n    ScrollVisibleService.prototype.setScrollsVisible = function (params) {\n        var atLeastOneDifferent = this.horizontalScrollShowing !== params.horizontalScrollShowing ||\n            this.verticalScrollShowing !== params.verticalScrollShowing;\n        if (atLeastOneDifferent) {\n            this.horizontalScrollShowing = params.horizontalScrollShowing;\n            this.verticalScrollShowing = params.verticalScrollShowing;\n            var event_1 = {\n                type: Events.EVENT_SCROLL_VISIBILITY_CHANGED\n            };\n            this.eventService.dispatchEvent(event_1);\n        }\n    };\n    // used by pagination service - to know page height\n    ScrollVisibleService.prototype.isHorizontalScrollShowing = function () {\n        return this.horizontalScrollShowing;\n    };\n    // used by header container\n    ScrollVisibleService.prototype.isVerticalScrollShowing = function () {\n        return this.verticalScrollShowing;\n    };\n    __decorate$1B([\n        Autowired('ctrlsService')\n    ], ScrollVisibleService.prototype, \"ctrlsService\", void 0);\n    __decorate$1B([\n        PostConstruct\n    ], ScrollVisibleService.prototype, \"postConstruct\", null);\n    ScrollVisibleService = __decorate$1B([\n        Bean('scrollVisibleService')\n    ], ScrollVisibleService);\n    return ScrollVisibleService;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$1D = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$1A = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar MouseEventService = /** @class */ (function (_super) {\n    __extends$1D(MouseEventService, _super);\n    function MouseEventService() {\n        var _this = _super !== null && _super.apply(this, arguments) || this;\n        _this.gridInstanceId = MouseEventService_1.gridInstanceSequence.next();\n        return _this;\n    }\n    MouseEventService_1 = MouseEventService;\n    // we put the instance id onto the main DOM element. this is used for events, when grids are inside grids,\n    // so the grid can work out if the even came from this grid or a grid inside this one. see the ctrl+v logic\n    // for where this is used.\n    MouseEventService.prototype.stampTopLevelGridCompWithGridInstance = function (eGridDiv) {\n        eGridDiv[MouseEventService_1.GRID_DOM_KEY] = this.gridInstanceId;\n    };\n    MouseEventService.prototype.getRenderedCellForEvent = function (event) {\n        return getCtrlForEventTarget(this.gridOptionsService, event.target, CellCtrl.DOM_DATA_KEY_CELL_CTRL);\n    };\n    // walks the path of the event, and returns true if this grid is the first one that it finds. if doing\n    // master / detail grids, and a child grid is found, then it returns false. this stops things like copy/paste\n    // getting executed on many grids at the same time.\n    MouseEventService.prototype.isEventFromThisGrid = function (event) {\n        var res = this.isElementInThisGrid(event.target);\n        return res;\n    };\n    MouseEventService.prototype.isElementInThisGrid = function (element) {\n        var pointer = element;\n        while (pointer) {\n            var instanceId = pointer[MouseEventService_1.GRID_DOM_KEY];\n            if (exists(instanceId)) {\n                var eventFromThisGrid = instanceId === this.gridInstanceId;\n                return eventFromThisGrid;\n            }\n            pointer = pointer.parentElement;\n        }\n        return false;\n    };\n    MouseEventService.prototype.getCellPositionForEvent = function (event) {\n        var cellComp = this.getRenderedCellForEvent(event);\n        return cellComp ? cellComp.getCellPosition() : null;\n    };\n    MouseEventService.prototype.getNormalisedPosition = function (event) {\n        var gridPanelHasScrolls = this.gridOptionsService.isDomLayout('normal');\n        var e = event;\n        var x;\n        var y;\n        if (e.clientX != null || e.clientY != null) {\n            x = e.clientX;\n            y = e.clientY;\n        }\n        else {\n            x = e.x;\n            y = e.y;\n        }\n        if (gridPanelHasScrolls) {\n            var gridBodyCon = this.ctrlsService.getGridBodyCtrl();\n            var vRange = gridBodyCon.getScrollFeature().getVScrollPosition();\n            var hRange = gridBodyCon.getScrollFeature().getHScrollPosition();\n            x += hRange.left;\n            y += vRange.top;\n        }\n        return { x: x, y: y };\n    };\n    var MouseEventService_1;\n    MouseEventService.gridInstanceSequence = new NumberSequence();\n    MouseEventService.GRID_DOM_KEY = '__ag_grid_instance';\n    __decorate$1A([\n        Autowired('ctrlsService')\n    ], MouseEventService.prototype, \"ctrlsService\", void 0);\n    MouseEventService = MouseEventService_1 = __decorate$1A([\n        Bean('mouseEventService')\n    ], MouseEventService);\n    return MouseEventService;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$1C = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __assign$7 = (undefined && undefined.__assign) || function () {\n    __assign$7 = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign$7.apply(this, arguments);\n};\nvar __decorate$1z = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar NavigationService = /** @class */ (function (_super) {\n    __extends$1C(NavigationService, _super);\n    function NavigationService() {\n        var _this = _super.call(this) || this;\n        _this.onPageDown = throttle(_this.onPageDown, 100);\n        _this.onPageUp = throttle(_this.onPageUp, 100);\n        return _this;\n    }\n    NavigationService.prototype.postConstruct = function () {\n        var _this = this;\n        this.ctrlsService.whenReady(function (p) {\n            _this.gridBodyCon = p.gridBodyCtrl;\n        });\n    };\n    NavigationService.prototype.handlePageScrollingKey = function (event) {\n        var key = event.key;\n        var alt = event.altKey;\n        var ctrl = event.ctrlKey || event.metaKey;\n        var rangeServiceShouldHandleShift = !!this.rangeService && event.shiftKey;\n        // home and end can be processed without knowing the currently selected cell, this can occur for full width rows.\n        var currentCell = this.mouseEventService.getCellPositionForEvent(event);\n        var processed = false;\n        switch (key) {\n            case KeyCode.PAGE_HOME:\n            case KeyCode.PAGE_END:\n                // handle home and end when ctrl & alt are NOT pressed\n                if (!ctrl && !alt) {\n                    this.onHomeOrEndKey(key);\n                    processed = true;\n                }\n                break;\n            case KeyCode.LEFT:\n            case KeyCode.RIGHT:\n            case KeyCode.UP:\n            case KeyCode.DOWN:\n                if (!currentCell) {\n                    return false;\n                }\n                // handle when ctrl is pressed only, if shift is pressed\n                // it will be handled by the rangeService\n                if (ctrl && !alt && !rangeServiceShouldHandleShift) {\n                    this.onCtrlUpDownLeftRight(key, currentCell);\n                    processed = true;\n                }\n                break;\n            case KeyCode.PAGE_DOWN:\n                if (!currentCell) {\n                    return false;\n                }\n                // handle page up and page down when ctrl & alt are NOT pressed\n                if (!ctrl && !alt) {\n                    this.onPageDown(currentCell);\n                    processed = true;\n                }\n                break;\n            case KeyCode.PAGE_UP:\n                if (!currentCell) {\n                    return false;\n                }\n                // handle page up and page down when ctrl & alt are NOT pressed\n                if (!ctrl && !alt) {\n                    this.onPageUp(currentCell);\n                    processed = true;\n                }\n                break;\n        }\n        if (processed) {\n            event.preventDefault();\n        }\n        return processed;\n    };\n    NavigationService.prototype.navigateTo = function (navigateParams) {\n        var scrollIndex = navigateParams.scrollIndex, scrollType = navigateParams.scrollType, scrollColumn = navigateParams.scrollColumn, focusIndex = navigateParams.focusIndex, focusColumn = navigateParams.focusColumn;\n        if (exists(scrollColumn) && !scrollColumn.isPinned()) {\n            this.gridBodyCon.getScrollFeature().ensureColumnVisible(scrollColumn);\n        }\n        if (exists(scrollIndex)) {\n            this.gridBodyCon.getScrollFeature().ensureIndexVisible(scrollIndex, scrollType);\n        }\n        // setFocusedCell relies on the browser default focus behavior to scroll the focused cell into view,\n        // however, this behavior will cause the cell border to be cut off, or if we have sticky rows, the\n        // cell will be completely hidden, so we call ensureIndexVisible without a position to guarantee\n        // minimal scroll to get the row into view.\n        if (!navigateParams.isAsync) {\n            this.gridBodyCon.getScrollFeature().ensureIndexVisible(focusIndex);\n        }\n        // if we don't do this, the range will be left on the last cell, which will leave the last focused cell\n        // highlighted.\n        this.focusService.setFocusedCell({ rowIndex: focusIndex, column: focusColumn, rowPinned: null, forceBrowserFocus: true });\n        if (this.rangeService) {\n            var cellPosition = { rowIndex: focusIndex, rowPinned: null, column: focusColumn };\n            this.rangeService.setRangeToCell(cellPosition);\n        }\n    };\n    NavigationService.prototype.onPageDown = function (gridCell) {\n        var gridBodyCon = this.ctrlsService.getGridBodyCtrl();\n        var scrollPosition = gridBodyCon.getScrollFeature().getVScrollPosition();\n        var pixelsInOnePage = this.getViewportHeight();\n        var pagingPixelOffset = this.paginationProxy.getPixelOffset();\n        var currentPageBottomPixel = scrollPosition.top + pixelsInOnePage;\n        var currentPageBottomRow = this.paginationProxy.getRowIndexAtPixel(currentPageBottomPixel + pagingPixelOffset);\n        if (this.columnModel.isAutoRowHeightActive()) {\n            this.navigateToNextPageWithAutoHeight(gridCell, currentPageBottomRow);\n        }\n        else {\n            this.navigateToNextPage(gridCell, currentPageBottomRow);\n        }\n    };\n    NavigationService.prototype.onPageUp = function (gridCell) {\n        var gridBodyCon = this.ctrlsService.getGridBodyCtrl();\n        var scrollPosition = gridBodyCon.getScrollFeature().getVScrollPosition();\n        var pagingPixelOffset = this.paginationProxy.getPixelOffset();\n        var currentPageTopPixel = scrollPosition.top;\n        var currentPageTopRow = this.paginationProxy.getRowIndexAtPixel(currentPageTopPixel + pagingPixelOffset);\n        if (this.columnModel.isAutoRowHeightActive()) {\n            this.navigateToNextPageWithAutoHeight(gridCell, currentPageTopRow, true);\n        }\n        else {\n            this.navigateToNextPage(gridCell, currentPageTopRow, true);\n        }\n    };\n    NavigationService.prototype.navigateToNextPage = function (gridCell, scrollIndex, up) {\n        if (up === void 0) { up = false; }\n        var pixelsInOnePage = this.getViewportHeight();\n        var firstRow = this.paginationProxy.getPageFirstRow();\n        var lastRow = this.paginationProxy.getPageLastRow();\n        var pagingPixelOffset = this.paginationProxy.getPixelOffset();\n        var currentRowNode = this.paginationProxy.getRow(gridCell.rowIndex);\n        var rowPixelDiff = up\n            ? ((currentRowNode === null || currentRowNode === void 0 ? void 0 : currentRowNode.rowHeight) - pixelsInOnePage - pagingPixelOffset)\n            : (pixelsInOnePage - pagingPixelOffset);\n        var nextCellPixel = (currentRowNode === null || currentRowNode === void 0 ? void 0 : currentRowNode.rowTop) + rowPixelDiff;\n        var focusIndex = this.paginationProxy.getRowIndexAtPixel(nextCellPixel + pagingPixelOffset);\n        if (focusIndex === gridCell.rowIndex) {\n            var diff = up ? -1 : 1;\n            scrollIndex = focusIndex = gridCell.rowIndex + diff;\n        }\n        var scrollType;\n        if (up) {\n            scrollType = 'bottom';\n            if (focusIndex < firstRow) {\n                focusIndex = firstRow;\n            }\n            if (scrollIndex < firstRow) {\n                scrollIndex = firstRow;\n            }\n        }\n        else {\n            scrollType = 'top';\n            if (focusIndex > lastRow) {\n                focusIndex = lastRow;\n            }\n            if (scrollIndex > lastRow) {\n                scrollIndex = lastRow;\n            }\n        }\n        if (this.isRowTallerThanView(focusIndex)) {\n            scrollIndex = focusIndex;\n            scrollType = 'top';\n        }\n        this.navigateTo({\n            scrollIndex: scrollIndex,\n            scrollType: scrollType,\n            scrollColumn: null,\n            focusIndex: focusIndex,\n            focusColumn: gridCell.column\n        });\n    };\n    NavigationService.prototype.navigateToNextPageWithAutoHeight = function (gridCell, scrollIndex, up) {\n        var _this = this;\n        if (up === void 0) { up = false; }\n        // because autoHeight will calculate the height of rows after scroll\n        // first we scroll towards the required point, then we add a small\n        // delay to allow the height to be recalculated, check which index\n        // should be focused and then finally navigate to that index.\n        // TODO: we should probably have an event fired once to scrollbar has\n        // settled and all rowHeights have been calculated instead of relying\n        // on a setTimeout of 50ms.\n        this.navigateTo({\n            scrollIndex: scrollIndex,\n            scrollType: up ? 'bottom' : 'top',\n            scrollColumn: null,\n            focusIndex: scrollIndex,\n            focusColumn: gridCell.column\n        });\n        setTimeout(function () {\n            var focusIndex = _this.getNextFocusIndexForAutoHeight(gridCell, up);\n            _this.navigateTo({\n                scrollIndex: scrollIndex,\n                scrollType: up ? 'bottom' : 'top',\n                scrollColumn: null,\n                focusIndex: focusIndex,\n                focusColumn: gridCell.column,\n                isAsync: true\n            });\n        }, 50);\n    };\n    NavigationService.prototype.getNextFocusIndexForAutoHeight = function (gridCell, up) {\n        var _a;\n        if (up === void 0) { up = false; }\n        var step = up ? -1 : 1;\n        var pixelsInOnePage = this.getViewportHeight();\n        var lastRowIndex = this.paginationProxy.getPageLastRow();\n        var pixelSum = 0;\n        var currentIndex = gridCell.rowIndex;\n        while (currentIndex >= 0 && currentIndex <= lastRowIndex) {\n            var currentCell = this.paginationProxy.getRow(currentIndex);\n            if (currentCell) {\n                var currentCellHeight = (_a = currentCell.rowHeight) !== null && _a !== void 0 ? _a : 0;\n                if (pixelSum + currentCellHeight > pixelsInOnePage) {\n                    break;\n                }\n                pixelSum += currentCellHeight;\n            }\n            currentIndex += step;\n        }\n        return Math.max(0, Math.min(currentIndex, lastRowIndex));\n    };\n    NavigationService.prototype.getViewportHeight = function () {\n        var gridBodyCon = this.ctrlsService.getGridBodyCtrl();\n        var scrollPosition = gridBodyCon.getScrollFeature().getVScrollPosition();\n        var scrollbarWidth = this.gridOptionsService.getScrollbarWidth();\n        var pixelsInOnePage = scrollPosition.bottom - scrollPosition.top;\n        if (this.ctrlsService.getCenterRowContainerCtrl().isHorizontalScrollShowing()) {\n            pixelsInOnePage -= scrollbarWidth;\n        }\n        return pixelsInOnePage;\n    };\n    NavigationService.prototype.isRowTallerThanView = function (rowIndex) {\n        var rowNode = this.paginationProxy.getRow(rowIndex);\n        if (!rowNode) {\n            return false;\n        }\n        var rowHeight = rowNode.rowHeight;\n        if (typeof rowHeight !== 'number') {\n            return false;\n        }\n        return rowHeight > this.getViewportHeight();\n    };\n    NavigationService.prototype.onCtrlUpDownLeftRight = function (key, gridCell) {\n        var cellToFocus = this.cellNavigationService.getNextCellToFocus(key, gridCell, true);\n        var rowIndex = cellToFocus.rowIndex, column = cellToFocus.column;\n        this.navigateTo({\n            scrollIndex: rowIndex,\n            scrollType: null,\n            scrollColumn: column,\n            focusIndex: rowIndex,\n            focusColumn: column\n        });\n    };\n    // home brings focus to top left cell, end brings focus to bottom right, grid scrolled to bring\n    // same cell into view (which means either scroll all the way up, or all the way down).\n    NavigationService.prototype.onHomeOrEndKey = function (key) {\n        var homeKey = key === KeyCode.PAGE_HOME;\n        var allColumns = this.columnModel.getAllDisplayedColumns();\n        var columnToSelect = homeKey ? allColumns[0] : last(allColumns);\n        var scrollIndex = homeKey ? this.paginationProxy.getPageFirstRow() : this.paginationProxy.getPageLastRow();\n        this.navigateTo({\n            scrollIndex: scrollIndex,\n            scrollType: null,\n            scrollColumn: columnToSelect,\n            focusIndex: scrollIndex,\n            focusColumn: columnToSelect\n        });\n    };\n    // result of keyboard event\n    NavigationService.prototype.onTabKeyDown = function (previous, keyboardEvent) {\n        var backwards = keyboardEvent.shiftKey;\n        var movedToNextCell = this.tabToNextCellCommon(previous, backwards, keyboardEvent);\n        if (movedToNextCell) {\n            // only prevent default if we found a cell. so if user is on last cell and hits tab, then we default\n            // to the normal tabbing so user can exit the grid.\n            keyboardEvent.preventDefault();\n            return;\n        }\n        // if we didn't move to next cell, then need to tab out of the cells, ie to the header (if going\n        // backwards)\n        if (backwards) {\n            var _a = previous.getRowPosition(), rowIndex = _a.rowIndex, rowPinned = _a.rowPinned;\n            var firstRow = rowPinned ? rowIndex === 0 : rowIndex === this.paginationProxy.getPageFirstRow();\n            if (firstRow) {\n                if (this.gridOptionsService.getNum('headerHeight') === 0) {\n                    this.focusService.focusNextGridCoreContainer(true, true);\n                }\n                else {\n                    keyboardEvent.preventDefault();\n                    this.focusService.focusLastHeader(keyboardEvent);\n                }\n            }\n        }\n        else {\n            // if the case it's a popup editor, the focus is on the editor and not the previous cell.\n            // in order for the tab navigation to work, we need to focus the browser back onto the\n            // previous cell.\n            if (previous instanceof CellCtrl) {\n                previous.focusCell(true);\n            }\n            if (this.focusService.focusNextGridCoreContainer(backwards)) {\n                keyboardEvent.preventDefault();\n            }\n        }\n    };\n    // comes from API\n    NavigationService.prototype.tabToNextCell = function (backwards, event) {\n        var focusedCell = this.focusService.getFocusedCell();\n        // if no focus, then cannot navigate\n        if (!focusedCell) {\n            return false;\n        }\n        var cellOrRow = this.getCellByPosition(focusedCell);\n        // if cell is not rendered, means user has scrolled away from the cell\n        // or that the focusedCell is a Full Width Row\n        if (!cellOrRow) {\n            cellOrRow = this.rowRenderer.getRowByPosition(focusedCell);\n            if (!cellOrRow || !cellOrRow.isFullWidth()) {\n                return false;\n            }\n        }\n        return this.tabToNextCellCommon(cellOrRow, backwards, event);\n    };\n    NavigationService.prototype.tabToNextCellCommon = function (previous, backwards, event) {\n        var editing = previous.isEditing();\n        // if cell is not editing, there is still chance row is editing if it's Full Row Editing\n        if (!editing && previous instanceof CellCtrl) {\n            var cell = previous;\n            var row = cell.getRowCtrl();\n            if (row) {\n                editing = row.isEditing();\n            }\n        }\n        var res;\n        if (editing) {\n            // if we are editing, we know it's not a Full Width Row (RowComp)\n            if (this.gridOptionsService.get('editType') === 'fullRow') {\n                res = this.moveToNextEditingRow(previous, backwards, event);\n            }\n            else {\n                res = this.moveToNextEditingCell(previous, backwards, event);\n            }\n        }\n        else {\n            res = this.moveToNextCellNotEditing(previous, backwards);\n        }\n        // if a cell wasn't found, it's possible that focus was moved to the header\n        return res || !!this.focusService.getFocusedHeader();\n    };\n    NavigationService.prototype.moveToNextEditingCell = function (previousCell, backwards, event) {\n        if (event === void 0) { event = null; }\n        var previousPos = previousCell.getCellPosition();\n        // before we stop editing, we need to focus the cell element\n        // so the grid doesn't detect that focus has left the grid\n        previousCell.getGui().focus();\n        // need to do this before getting next cell to edit, in case the next cell\n        // has editable function (eg colDef.editable=func() ) and it depends on the\n        // result of this cell, so need to save updates from the first edit, in case\n        // the value is referenced in the function.\n        previousCell.stopEditing();\n        // find the next cell to start editing\n        var nextCell = this.findNextCellToFocusOn(previousPos, backwards, true);\n        if (nextCell == null) {\n            return false;\n        }\n        // only prevent default if we found a cell. so if user is on last cell and hits tab, then we default\n        // to the normal tabbing so user can exit the grid.\n        nextCell.startEditing(null, null, true, event);\n        nextCell.focusCell(false);\n        return true;\n    };\n    NavigationService.prototype.moveToNextEditingRow = function (previousCell, backwards, event) {\n        if (event === void 0) { event = null; }\n        var previousPos = previousCell.getCellPosition();\n        // find the next cell to start editing\n        var nextCell = this.findNextCellToFocusOn(previousPos, backwards, true);\n        if (nextCell == null) {\n            return false;\n        }\n        var nextPos = nextCell.getCellPosition();\n        var previousEditable = this.isCellEditable(previousPos);\n        var nextEditable = this.isCellEditable(nextPos);\n        var rowsMatch = nextPos && previousPos.rowIndex === nextPos.rowIndex && previousPos.rowPinned === nextPos.rowPinned;\n        if (previousEditable) {\n            previousCell.setFocusOutOnEditor();\n        }\n        if (!rowsMatch) {\n            var pRow = previousCell.getRowCtrl();\n            pRow.stopEditing();\n            var nRow = nextCell.getRowCtrl();\n            nRow.startRowEditing(undefined, undefined, undefined, event);\n        }\n        if (nextEditable) {\n            nextCell.setFocusInOnEditor();\n            nextCell.focusCell();\n        }\n        else {\n            nextCell.focusCell(true);\n        }\n        return true;\n    };\n    NavigationService.prototype.moveToNextCellNotEditing = function (previousCell, backwards) {\n        var displayedColumns = this.columnModel.getAllDisplayedColumns();\n        var cellPos;\n        if (previousCell instanceof RowCtrl) {\n            cellPos = __assign$7(__assign$7({}, previousCell.getRowPosition()), { column: backwards ? displayedColumns[0] : last(displayedColumns) });\n        }\n        else {\n            cellPos = previousCell.getCellPosition();\n        }\n        // find the next cell to start editing\n        var nextCell = this.findNextCellToFocusOn(cellPos, backwards, false);\n        // only prevent default if we found a cell. so if user is on last cell and hits tab, then we default\n        // to the normal tabbing so user can exit the grid.\n        if (nextCell instanceof CellCtrl) {\n            nextCell.focusCell(true);\n        }\n        else if (nextCell) {\n            return this.tryToFocusFullWidthRow(nextCell.getRowPosition(), backwards);\n        }\n        return exists(nextCell);\n    };\n    // called by the cell, when tab is pressed while editing.\n    // @return: RenderedCell when navigation successful, otherwise null\n    NavigationService.prototype.findNextCellToFocusOn = function (previousPosition, backwards, startEditing) {\n        var nextPosition = previousPosition;\n        while (true) {\n            if (previousPosition !== nextPosition) {\n                previousPosition = nextPosition;\n            }\n            if (!backwards) {\n                nextPosition = this.getLastCellOfColSpan(nextPosition);\n            }\n            nextPosition = this.cellNavigationService.getNextTabbedCell(nextPosition, backwards);\n            // allow user to override what cell to go to next\n            var userFunc = this.gridOptionsService.getCallback('tabToNextCell');\n            if (exists(userFunc)) {\n                var params = {\n                    backwards: backwards,\n                    editing: startEditing,\n                    previousCellPosition: previousPosition,\n                    nextCellPosition: nextPosition ? nextPosition : null\n                };\n                var userCell = userFunc(params);\n                if (exists(userCell)) {\n                    if (userCell.floating) {\n                        doOnce(function () { console.warn(\"AG Grid: tabToNextCellFunc return type should have attributes: rowIndex, rowPinned, column. However you had 'floating', maybe you meant 'rowPinned'?\"); }, 'no floating in userCell');\n                        userCell.rowPinned = userCell.floating;\n                    }\n                    nextPosition = {\n                        rowIndex: userCell.rowIndex,\n                        column: userCell.column,\n                        rowPinned: userCell.rowPinned\n                    };\n                }\n                else {\n                    nextPosition = null;\n                }\n            }\n            // if no 'next cell', means we have got to last cell of grid, so nothing to move to,\n            // so bottom right cell going forwards, or top left going backwards\n            if (!nextPosition) {\n                return null;\n            }\n            if (nextPosition.rowIndex < 0) {\n                var headerLen = this.headerNavigationService.getHeaderRowCount();\n                this.focusService.focusHeaderPosition({\n                    headerPosition: {\n                        headerRowIndex: headerLen + (nextPosition.rowIndex),\n                        column: nextPosition.column\n                    }\n                });\n                return null;\n            }\n            // if editing, but cell not editable, skip cell. we do this before we do all of\n            // the 'ensure index visible' and 'flush all frames', otherwise if we are skipping\n            // a bunch of cells (eg 10 rows) then all the work on ensuring cell visible is useless\n            // (except for the last one) which causes grid to stall for a while.\n            // note - for full row edit, we do focus non-editable cells, as the row stays in edit mode.\n            var fullRowEdit = this.gridOptionsService.get('editType') === 'fullRow';\n            if (startEditing && !fullRowEdit) {\n                var cellIsEditable = this.isCellEditable(nextPosition);\n                if (!cellIsEditable) {\n                    continue;\n                }\n            }\n            this.ensureCellVisible(nextPosition);\n            // we have to call this after ensureColumnVisible - otherwise it could be a virtual column\n            // or row that is not currently in view, hence the renderedCell would not exist\n            var nextCell = this.getCellByPosition(nextPosition);\n            // if next cell is fullWidth row, then no rendered cell,\n            // as fullWidth rows have no cells, so we skip it\n            if (!nextCell) {\n                var row = this.rowRenderer.getRowByPosition(nextPosition);\n                if (!row || !row.isFullWidth() || startEditing) {\n                    continue;\n                }\n                return row;\n            }\n            if (nextCell.isSuppressNavigable()) {\n                continue;\n            }\n            // by default, when we click a cell, it gets selected into a range, so to keep keyboard navigation\n            // consistent, we set into range here also.\n            if (this.rangeService) {\n                this.rangeService.setRangeToCell(nextPosition);\n            }\n            // we successfully tabbed onto a grid cell, so return true\n            return nextCell;\n        }\n    };\n    NavigationService.prototype.isCellEditable = function (cell) {\n        var rowNode = this.lookupRowNodeForCell(cell);\n        if (rowNode) {\n            return cell.column.isCellEditable(rowNode);\n        }\n        return false;\n    };\n    NavigationService.prototype.getCellByPosition = function (cellPosition) {\n        var rowCtrl = this.rowRenderer.getRowByPosition(cellPosition);\n        if (!rowCtrl) {\n            return null;\n        }\n        return rowCtrl.getCellCtrl(cellPosition.column);\n    };\n    NavigationService.prototype.lookupRowNodeForCell = function (cell) {\n        if (cell.rowPinned === 'top') {\n            return this.pinnedRowModel.getPinnedTopRow(cell.rowIndex);\n        }\n        if (cell.rowPinned === 'bottom') {\n            return this.pinnedRowModel.getPinnedBottomRow(cell.rowIndex);\n        }\n        return this.paginationProxy.getRow(cell.rowIndex);\n    };\n    // we use index for rows, but column object for columns, as the next column (by index) might not\n    // be visible (header grouping) so it's not reliable, so using the column object instead.\n    NavigationService.prototype.navigateToNextCell = function (event, key, currentCell, allowUserOverride) {\n        // we keep searching for a next cell until we find one. this is how the group rows get skipped\n        var nextCell = currentCell;\n        var hitEdgeOfGrid = false;\n        while (nextCell && (nextCell === currentCell || !this.isValidNavigateCell(nextCell))) {\n            // if the current cell is spanning across multiple columns, we need to move\n            // our current position to be the last cell on the right before finding the\n            // the next target.\n            if (this.gridOptionsService.is('enableRtl')) {\n                if (key === KeyCode.LEFT) {\n                    nextCell = this.getLastCellOfColSpan(nextCell);\n                }\n            }\n            else if (key === KeyCode.RIGHT) {\n                nextCell = this.getLastCellOfColSpan(nextCell);\n            }\n            nextCell = this.cellNavigationService.getNextCellToFocus(key, nextCell);\n            // eg if going down, and nextCell=undefined, means we are gone past the last row\n            hitEdgeOfGrid = missing(nextCell);\n        }\n        if (hitEdgeOfGrid && event && event.key === KeyCode.UP) {\n            nextCell = {\n                rowIndex: -1,\n                rowPinned: null,\n                column: currentCell.column\n            };\n        }\n        // allow user to override what cell to go to next. when doing normal cell navigation (with keys)\n        // we allow this, however if processing 'enter after edit' we don't allow override\n        if (allowUserOverride) {\n            var userFunc = this.gridOptionsService.getCallback('navigateToNextCell');\n            if (exists(userFunc)) {\n                var params = {\n                    key: key,\n                    previousCellPosition: currentCell,\n                    nextCellPosition: nextCell ? nextCell : null,\n                    event: event\n                };\n                var userCell = userFunc(params);\n                if (exists(userCell)) {\n                    if (userCell.floating) {\n                        doOnce(function () { console.warn(\"AG Grid: tabToNextCellFunc return type should have attributes: rowIndex, rowPinned, column. However you had 'floating', maybe you meant 'rowPinned'?\"); }, 'no floating in userCell');\n                        userCell.rowPinned = userCell.floating;\n                    }\n                    nextCell = {\n                        rowPinned: userCell.rowPinned,\n                        rowIndex: userCell.rowIndex,\n                        column: userCell.column\n                    };\n                }\n                else {\n                    nextCell = null;\n                }\n            }\n        }\n        // no next cell means we have reached a grid boundary, eg left, right, top or bottom of grid\n        if (!nextCell) {\n            return;\n        }\n        if (nextCell.rowIndex < 0) {\n            var headerLen = this.headerNavigationService.getHeaderRowCount();\n            this.focusService.focusHeaderPosition({\n                headerPosition: { headerRowIndex: headerLen + (nextCell.rowIndex), column: currentCell.column },\n                event: event || undefined\n            });\n            return;\n        }\n        // in case we have col spanning we get the cellComp and use it to get the\n        // position. This was we always focus the first cell inside the spanning.\n        var normalisedPosition = this.getNormalisedPosition(nextCell);\n        if (normalisedPosition) {\n            this.focusPosition(normalisedPosition);\n        }\n        else {\n            this.tryToFocusFullWidthRow(nextCell);\n        }\n    };\n    NavigationService.prototype.getNormalisedPosition = function (cellPosition) {\n        // ensureCellVisible first, to make sure cell at position is rendered.\n        this.ensureCellVisible(cellPosition);\n        var cellCtrl = this.getCellByPosition(cellPosition);\n        // not guaranteed to have a cellComp when using the SSRM as blocks are loading.\n        if (!cellCtrl) {\n            return null;\n        }\n        cellPosition = cellCtrl.getCellPosition();\n        // we call this again, as nextCell can be different to it's previous value due to Column Spanning\n        // (ie if cursor moving from right to left, and cell is spanning columns, then nextCell was the\n        // last column in the group, however now it's the first column in the group). if we didn't do\n        // ensureCellVisible again, then we could only be showing the last portion (last column) of the\n        // merged cells.\n        this.ensureCellVisible(cellPosition);\n        return cellPosition;\n    };\n    NavigationService.prototype.tryToFocusFullWidthRow = function (position, backwards) {\n        if (backwards === void 0) { backwards = false; }\n        var displayedColumns = this.columnModel.getAllDisplayedColumns();\n        var rowComp = this.rowRenderer.getRowByPosition(position);\n        if (!rowComp || !rowComp.isFullWidth()) {\n            return false;\n        }\n        var currentCellFocused = this.focusService.getFocusedCell();\n        var cellPosition = {\n            rowIndex: position.rowIndex,\n            rowPinned: position.rowPinned,\n            column: position.column || (backwards ? last(displayedColumns) : displayedColumns[0])\n        };\n        this.focusPosition(cellPosition);\n        var fromBelow = currentCellFocused != null ? this.rowPositionUtils.before(cellPosition, currentCellFocused) : false;\n        var focusEvent = {\n            type: Events.EVENT_FULL_WIDTH_ROW_FOCUSED,\n            rowIndex: cellPosition.rowIndex,\n            rowPinned: cellPosition.rowPinned,\n            column: cellPosition.column,\n            isFullWidthCell: true,\n            floating: cellPosition.rowPinned,\n            fromBelow: fromBelow\n        };\n        this.eventService.dispatchEvent(focusEvent);\n        return true;\n    };\n    NavigationService.prototype.focusPosition = function (cellPosition) {\n        this.focusService.setFocusedCell({\n            rowIndex: cellPosition.rowIndex,\n            column: cellPosition.column,\n            rowPinned: cellPosition.rowPinned,\n            forceBrowserFocus: true\n        });\n        if (this.rangeService) {\n            this.rangeService.setRangeToCell(cellPosition);\n        }\n    };\n    NavigationService.prototype.isValidNavigateCell = function (cell) {\n        var rowNode = this.rowPositionUtils.getRowNode(cell);\n        // we do not allow focusing on detail rows and full width rows\n        return !!rowNode;\n    };\n    NavigationService.prototype.getLastCellOfColSpan = function (cell) {\n        var cellCtrl = this.getCellByPosition(cell);\n        if (!cellCtrl) {\n            return cell;\n        }\n        var colSpanningList = cellCtrl.getColSpanningList();\n        if (colSpanningList.length === 1) {\n            return cell;\n        }\n        return {\n            rowIndex: cell.rowIndex,\n            column: last(colSpanningList),\n            rowPinned: cell.rowPinned\n        };\n    };\n    NavigationService.prototype.ensureCellVisible = function (gridCell) {\n        var isGroupStickyEnabled = this.gridOptionsService.is('groupRowsSticky');\n        var rowNode = this.rowModel.getRow(gridCell.rowIndex);\n        // sticky rows are always visible, so the grid shouldn't scroll to focus them.\n        var skipScrollToRow = isGroupStickyEnabled && (rowNode === null || rowNode === void 0 ? void 0 : rowNode.sticky);\n        // this scrolls the row into view\n        if (!skipScrollToRow && missing(gridCell.rowPinned)) {\n            this.gridBodyCon.getScrollFeature().ensureIndexVisible(gridCell.rowIndex);\n        }\n        if (!gridCell.column.isPinned()) {\n            this.gridBodyCon.getScrollFeature().ensureColumnVisible(gridCell.column);\n        }\n    };\n    __decorate$1z([\n        Autowired('mouseEventService')\n    ], NavigationService.prototype, \"mouseEventService\", void 0);\n    __decorate$1z([\n        Autowired('paginationProxy')\n    ], NavigationService.prototype, \"paginationProxy\", void 0);\n    __decorate$1z([\n        Autowired('focusService')\n    ], NavigationService.prototype, \"focusService\", void 0);\n    __decorate$1z([\n        Optional('rangeService')\n    ], NavigationService.prototype, \"rangeService\", void 0);\n    __decorate$1z([\n        Autowired('columnModel')\n    ], NavigationService.prototype, \"columnModel\", void 0);\n    __decorate$1z([\n        Autowired('rowModel')\n    ], NavigationService.prototype, \"rowModel\", void 0);\n    __decorate$1z([\n        Autowired('ctrlsService')\n    ], NavigationService.prototype, \"ctrlsService\", void 0);\n    __decorate$1z([\n        Autowired('rowRenderer')\n    ], NavigationService.prototype, \"rowRenderer\", void 0);\n    __decorate$1z([\n        Autowired('headerNavigationService')\n    ], NavigationService.prototype, \"headerNavigationService\", void 0);\n    __decorate$1z([\n        Autowired(\"rowPositionUtils\")\n    ], NavigationService.prototype, \"rowPositionUtils\", void 0);\n    __decorate$1z([\n        Autowired(\"cellNavigationService\")\n    ], NavigationService.prototype, \"cellNavigationService\", void 0);\n    __decorate$1z([\n        Autowired(\"pinnedRowModel\")\n    ], NavigationService.prototype, \"pinnedRowModel\", void 0);\n    __decorate$1z([\n        PostConstruct\n    ], NavigationService.prototype, \"postConstruct\", null);\n    NavigationService = __decorate$1z([\n        Bean('navigationService')\n    ], NavigationService);\n    return NavigationService;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$1B = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$1y = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar PopupEditorWrapper = /** @class */ (function (_super) {\n    __extends$1B(PopupEditorWrapper, _super);\n    function PopupEditorWrapper(params) {\n        var _this = _super.call(this, /* html */ \"<div class=\\\"ag-popup-editor\\\" tabindex=\\\"-1\\\"/>\") || this;\n        _this.params = params;\n        return _this;\n    }\n    PopupEditorWrapper.prototype.postConstruct = function () {\n        this.gridOptionsService.setDomData(this.getGui(), PopupEditorWrapper.DOM_KEY_POPUP_EDITOR_WRAPPER, true);\n        this.addKeyDownListener();\n    };\n    PopupEditorWrapper.prototype.addKeyDownListener = function () {\n        var _this = this;\n        var eGui = this.getGui();\n        var params = this.params;\n        var listener = function (event) {\n            if (!isUserSuppressingKeyboardEvent(_this.gridOptionsService, event, params.node, params.column, true)) {\n                params.onKeyDown(event);\n            }\n        };\n        this.addManagedListener(eGui, 'keydown', listener);\n    };\n    PopupEditorWrapper.DOM_KEY_POPUP_EDITOR_WRAPPER = 'popupEditorWrapper';\n    __decorate$1y([\n        PostConstruct\n    ], PopupEditorWrapper.prototype, \"postConstruct\", null);\n    return PopupEditorWrapper;\n}(PopupComponent));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$1A = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar CellComp = /** @class */ (function (_super) {\n    __extends$1A(CellComp, _super);\n    function CellComp(beans, cellCtrl, printLayout, eRow, editingRow) {\n        var _this = _super.call(this) || this;\n        // every time we go into edit mode, or back again, this gets incremented.\n        // it's the components way of dealing with the async nature of framework components,\n        // so if a framework component takes a while to be created, we know if the object\n        // is still relevant when creating is finished. eg we could click edit / un-edit 20\n        // times before the first React edit component comes back - we should discard\n        // the first 19.\n        _this.rendererVersion = 0;\n        _this.editorVersion = 0;\n        _this.beans = beans;\n        _this.column = cellCtrl.getColumn();\n        _this.rowNode = cellCtrl.getRowNode();\n        _this.rowCtrl = cellCtrl.getRowCtrl();\n        _this.eRow = eRow;\n        _this.setTemplate(/* html */ \"<div comp-id=\\\"\" + _this.getCompId() + \"\\\"/>\");\n        var eGui = _this.getGui();\n        _this.forceWrapper = cellCtrl.isForceWrapper();\n        _this.refreshWrapper(false);\n        var setAttribute = function (name, value, element) {\n            var actualElement = element ? element : eGui;\n            if (value != null && value != '') {\n                actualElement.setAttribute(name, value);\n            }\n            else {\n                actualElement.removeAttribute(name);\n            }\n        };\n        var compProxy = {\n            addOrRemoveCssClass: function (cssClassName, on) { return _this.addOrRemoveCssClass(cssClassName, on); },\n            setUserStyles: function (styles) { return addStylesToElement(eGui, styles); },\n            getFocusableElement: function () { return _this.getFocusableElement(); },\n            setTabIndex: function (tabIndex) { return setAttribute('tabindex', tabIndex.toString()); },\n            setRole: function (role) { return setAriaRole(eGui, role); },\n            setColId: function (colId) { return setAttribute('col-id', colId); },\n            setTitle: function (title) { return setAttribute('title', title); },\n            setIncludeSelection: function (include) { return _this.includeSelection = include; },\n            setIncludeRowDrag: function (include) { return _this.includeRowDrag = include; },\n            setIncludeDndSource: function (include) { return _this.includeDndSource = include; },\n            setRenderDetails: function (compDetails, valueToDisplay, force) {\n                return _this.setRenderDetails(compDetails, valueToDisplay, force);\n            },\n            setEditDetails: function (compDetails, popup, position) {\n                return _this.setEditDetails(compDetails, popup, position);\n            },\n            getCellEditor: function () { return _this.cellEditor || null; },\n            getCellRenderer: function () { return _this.cellRenderer || null; },\n            getParentOfValue: function () { return _this.getParentOfValue(); }\n        };\n        _this.cellCtrl = cellCtrl;\n        cellCtrl.setComp(compProxy, _this.getGui(), _this.eCellWrapper, printLayout, editingRow);\n        return _this;\n    }\n    CellComp.prototype.getParentOfValue = function () {\n        if (this.eCellValue) {\n            // if not editing, and using wrapper, then value goes in eCellValue\n            return this.eCellValue;\n        }\n        if (this.eCellWrapper) {\n            // if editing, and using wrapper, value (cell editor) goes in eCellWrapper\n            return this.eCellWrapper;\n        }\n        // if editing or rendering, and not using wrapper, value (or comp) is directly inside cell\n        return this.getGui();\n    };\n    CellComp.prototype.setRenderDetails = function (compDetails, valueToDisplay, forceNewCellRendererInstance) {\n        // this can happen if the users asks for the cell to refresh, but we are not showing the vale as we are editing\n        var isInlineEditing = this.cellEditor && !this.cellEditorPopupWrapper;\n        if (isInlineEditing) {\n            return;\n        }\n        // this means firstRender will be true for one pass only, as it's initialised to undefined\n        this.firstRender = this.firstRender == null;\n        // if display template has changed, means any previous Cell Renderer is in the wrong location\n        var controlWrapperChanged = this.refreshWrapper(false);\n        this.refreshEditStyles(false);\n        // all of these have dependencies on the eGui, so only do them after eGui is set\n        if (compDetails) {\n            var neverRefresh = forceNewCellRendererInstance || controlWrapperChanged;\n            var cellRendererRefreshSuccessful = neverRefresh ? false : this.refreshCellRenderer(compDetails);\n            if (!cellRendererRefreshSuccessful) {\n                this.destroyRenderer();\n                this.createCellRendererInstance(compDetails);\n            }\n        }\n        else {\n            this.destroyRenderer();\n            this.insertValueWithoutCellRenderer(valueToDisplay);\n        }\n    };\n    CellComp.prototype.setEditDetails = function (compDetails, popup, position) {\n        if (compDetails) {\n            this.createCellEditorInstance(compDetails, popup, position);\n        }\n        else {\n            this.destroyEditor();\n        }\n    };\n    CellComp.prototype.removeControls = function () {\n        this.checkboxSelectionComp = this.beans.context.destroyBean(this.checkboxSelectionComp);\n        this.dndSourceComp = this.beans.context.destroyBean(this.dndSourceComp);\n        this.rowDraggingComp = this.beans.context.destroyBean(this.rowDraggingComp);\n    };\n    // returns true if wrapper was changed\n    CellComp.prototype.refreshWrapper = function (editing) {\n        var providingControls = this.includeRowDrag || this.includeDndSource || this.includeSelection;\n        var usingWrapper = providingControls || this.forceWrapper;\n        var putWrapperIn = usingWrapper && this.eCellWrapper == null;\n        if (putWrapperIn) {\n            this.eCellWrapper = loadTemplate(/* html */ \"<div class=\\\"ag-cell-wrapper\\\" role=\\\"presentation\\\"></div>\");\n            this.getGui().appendChild(this.eCellWrapper);\n        }\n        var takeWrapperOut = !usingWrapper && this.eCellWrapper != null;\n        if (takeWrapperOut) {\n            removeFromParent(this.eCellWrapper);\n            this.eCellWrapper = undefined;\n        }\n        this.addOrRemoveCssClass('ag-cell-value', !usingWrapper);\n        var usingCellValue = !editing && usingWrapper;\n        var putCellValueIn = usingCellValue && this.eCellValue == null;\n        if (putCellValueIn) {\n            this.eCellValue = loadTemplate(/* html */ \"<span class=\\\"ag-cell-value\\\" role=\\\"presentation\\\"></span>\");\n            this.eCellWrapper.appendChild(this.eCellValue);\n        }\n        var takeCellValueOut = !usingCellValue && this.eCellValue != null;\n        if (takeCellValueOut) {\n            removeFromParent(this.eCellValue);\n            this.eCellValue = undefined;\n        }\n        var templateChanged = putWrapperIn || takeWrapperOut || putCellValueIn || takeCellValueOut;\n        if (templateChanged) {\n            this.removeControls();\n        }\n        if (!editing) {\n            if (providingControls) {\n                this.addControls();\n            }\n        }\n        return templateChanged;\n    };\n    CellComp.prototype.addControls = function () {\n        if (this.includeRowDrag) {\n            if (this.rowDraggingComp == null) {\n                this.rowDraggingComp = this.cellCtrl.createRowDragComp();\n                if (this.rowDraggingComp) {\n                    // put the checkbox in before the value\n                    this.eCellWrapper.insertBefore(this.rowDraggingComp.getGui(), this.eCellValue);\n                }\n            }\n        }\n        if (this.includeDndSource) {\n            if (this.dndSourceComp == null) {\n                this.dndSourceComp = this.cellCtrl.createDndSource();\n                // put the checkbox in before the value\n                this.eCellWrapper.insertBefore(this.dndSourceComp.getGui(), this.eCellValue);\n            }\n        }\n        if (this.includeSelection) {\n            if (this.checkboxSelectionComp == null) {\n                this.checkboxSelectionComp = this.cellCtrl.createSelectionCheckbox();\n                this.eCellWrapper.insertBefore(this.checkboxSelectionComp.getGui(), this.eCellValue);\n            }\n        }\n    };\n    CellComp.prototype.createCellEditorInstance = function (compDetails, popup, position) {\n        var _this = this;\n        var versionCopy = this.editorVersion;\n        var cellEditorPromise = compDetails.newAgStackInstance();\n        if (!cellEditorPromise) {\n            return;\n        } // if empty, userComponentFactory already did a console message\n        var params = compDetails.params;\n        cellEditorPromise.then(function (c) { return _this.afterCellEditorCreated(versionCopy, c, params, popup, position); });\n        // if we don't do this, and editor component is async, then there will be a period\n        // when the component isn't present and keyboard navigation won't work - so example\n        // of user hitting tab quickly (more quickly than renderers getting created) won't work\n        var cellEditorAsync = missing(this.cellEditor);\n        if (cellEditorAsync && params.cellStartedEdit) {\n            this.cellCtrl.focusCell(true);\n        }\n    };\n    CellComp.prototype.insertValueWithoutCellRenderer = function (valueToDisplay) {\n        var eParent = this.getParentOfValue();\n        clearElement(eParent);\n        var escapedValue = valueToDisplay != null ? escapeString(valueToDisplay) : null;\n        if (escapedValue != null) {\n            eParent.innerHTML = escapedValue;\n        }\n    };\n    CellComp.prototype.destroyEditorAndRenderer = function () {\n        this.destroyRenderer();\n        this.destroyEditor();\n    };\n    CellComp.prototype.destroyRenderer = function () {\n        var context = this.beans.context;\n        this.cellRenderer = context.destroyBean(this.cellRenderer);\n        removeFromParent(this.cellRendererGui);\n        this.cellRendererGui = null;\n        this.rendererVersion++;\n    };\n    CellComp.prototype.destroyEditor = function () {\n        var context = this.beans.context;\n        if (this.hideEditorPopup) {\n            this.hideEditorPopup();\n        }\n        this.hideEditorPopup = undefined;\n        this.cellEditor = context.destroyBean(this.cellEditor);\n        this.cellEditorPopupWrapper = context.destroyBean(this.cellEditorPopupWrapper);\n        removeFromParent(this.cellEditorGui);\n        this.cellEditorGui = null;\n        this.editorVersion++;\n    };\n    CellComp.prototype.refreshCellRenderer = function (compClassAndParams) {\n        if (this.cellRenderer == null || this.cellRenderer.refresh == null) {\n            return false;\n        }\n        // if different Cell Renderer configured this time (eg user is using selector, and\n        // returns different component) then don't refresh, force recreate of Cell Renderer\n        if (this.cellRendererClass !== compClassAndParams.componentClass) {\n            return false;\n        }\n        // take any custom params off of the user\n        var result = this.cellRenderer.refresh(compClassAndParams.params);\n        // NOTE on undefined: previous version of the cellRenderer.refresh() interface\n        // returned nothing, if the method existed, we assumed it refreshed. so for\n        // backwards compatibility, we assume if method exists and returns nothing,\n        // that it was successful.\n        return result === true || result === undefined;\n    };\n    CellComp.prototype.createCellRendererInstance = function (compDetails) {\n        var _this = this;\n        // never use task service if animation frame service is turned off.\n        // and lastly we never use it if doing auto-height, as the auto-height service checks the\n        // row height directly after the cell is created, it doesn't wait around for the tasks to complete        \n        var suppressAnimationFrame = this.beans.gridOptionsService.is('suppressAnimationFrame');\n        var useTaskService = !suppressAnimationFrame;\n        var displayComponentVersionCopy = this.rendererVersion;\n        var componentClass = compDetails.componentClass;\n        var createCellRendererFunc = function () {\n            var staleTask = _this.rendererVersion !== displayComponentVersionCopy || !_this.isAlive();\n            if (staleTask) {\n                return;\n            }\n            // this can return null in the event that the user has switched from a renderer component to nothing, for example\n            // when using a cellRendererSelect to return a component or null depending on row data etc\n            var componentPromise = compDetails.newAgStackInstance();\n            var callback = _this.afterCellRendererCreated.bind(_this, displayComponentVersionCopy, componentClass);\n            if (componentPromise) {\n                componentPromise.then(callback);\n            }\n        };\n        // we only use task service when rendering for first time, which means it is not used when doing edits.\n        // if we changed this (always use task service) would make sense, however it would break tests, possibly\n        // test of users.\n        if (useTaskService && this.firstRender) {\n            this.beans.animationFrameService.createTask(createCellRendererFunc, this.rowNode.rowIndex, 'createTasksP2');\n        }\n        else {\n            createCellRendererFunc();\n        }\n    };\n    CellComp.prototype.getCtrl = function () {\n        return this.cellCtrl;\n    };\n    CellComp.prototype.getRowCtrl = function () {\n        return this.rowCtrl;\n    };\n    CellComp.prototype.getCellRenderer = function () {\n        return this.cellRenderer;\n    };\n    CellComp.prototype.getCellEditor = function () {\n        return this.cellEditor;\n    };\n    CellComp.prototype.afterCellRendererCreated = function (cellRendererVersion, cellRendererClass, cellRenderer) {\n        var staleTask = !this.isAlive() || cellRendererVersion !== this.rendererVersion;\n        if (staleTask) {\n            this.beans.context.destroyBean(cellRenderer);\n            return;\n        }\n        this.cellRenderer = cellRenderer;\n        this.cellRendererClass = cellRendererClass;\n        this.cellRendererGui = this.cellRenderer.getGui();\n        if (this.cellRendererGui != null) {\n            var eParent = this.getParentOfValue();\n            clearElement(eParent);\n            eParent.appendChild(this.cellRendererGui);\n        }\n    };\n    CellComp.prototype.afterCellEditorCreated = function (requestVersion, cellEditor, params, popup, position) {\n        // if editingCell=false, means user cancelled the editor before component was ready.\n        // if versionMismatch, then user cancelled the edit, then started the edit again, and this\n        //   is the first editor which is now stale.\n        var staleComp = requestVersion !== this.editorVersion;\n        if (staleComp) {\n            this.beans.context.destroyBean(cellEditor);\n            return;\n        }\n        var editingCancelledByUserComp = cellEditor.isCancelBeforeStart && cellEditor.isCancelBeforeStart();\n        if (editingCancelledByUserComp) {\n            this.beans.context.destroyBean(cellEditor);\n            this.cellCtrl.stopEditing(true);\n            return;\n        }\n        if (!cellEditor.getGui) {\n            console.warn(\"AG Grid: cellEditor for column \" + this.column.getId() + \" is missing getGui() method\");\n            this.beans.context.destroyBean(cellEditor);\n            return;\n        }\n        this.cellEditor = cellEditor;\n        this.cellEditorGui = cellEditor.getGui();\n        var cellEditorInPopup = popup || (cellEditor.isPopup !== undefined && cellEditor.isPopup());\n        if (cellEditorInPopup) {\n            this.addPopupCellEditor(params, position);\n        }\n        else {\n            this.addInCellEditor();\n        }\n        this.refreshEditStyles(true, cellEditorInPopup);\n        if (cellEditor.afterGuiAttached) {\n            cellEditor.afterGuiAttached();\n        }\n    };\n    CellComp.prototype.refreshEditStyles = function (editing, isPopup) {\n        var _a;\n        this.addOrRemoveCssClass('ag-cell-inline-editing', editing && !isPopup);\n        this.addOrRemoveCssClass('ag-cell-popup-editing', editing && !!isPopup);\n        this.addOrRemoveCssClass('ag-cell-not-inline-editing', !editing || !!isPopup);\n        (_a = this.rowCtrl) === null || _a === void 0 ? void 0 : _a.setInlineEditingCss(editing);\n    };\n    CellComp.prototype.addInCellEditor = function () {\n        var eGui = this.getGui();\n        // if focus is inside the cell, we move focus to the cell itself\n        // before removing it's contents, otherwise errors could be thrown.\n        var eDocument = this.beans.gridOptionsService.getDocument();\n        if (eGui.contains(eDocument.activeElement)) {\n            eGui.focus();\n        }\n        this.destroyRenderer();\n        this.refreshWrapper(true);\n        this.clearParentOfValue();\n        if (this.cellEditorGui) {\n            var eParent = this.getParentOfValue();\n            eParent.appendChild(this.cellEditorGui);\n        }\n    };\n    CellComp.prototype.addPopupCellEditor = function (params, position) {\n        var _this = this;\n        if (this.beans.gridOptionsService.get('editType') === 'fullRow') {\n            console.warn('AG Grid: popup cellEditor does not work with fullRowEdit - you cannot use them both ' +\n                '- either turn off fullRowEdit, or stop using popup editors.');\n        }\n        var cellEditor = this.cellEditor;\n        // if a popup, then we wrap in a popup editor and return the popup\n        this.cellEditorPopupWrapper = this.beans.context.createBean(new PopupEditorWrapper(params));\n        var ePopupGui = this.cellEditorPopupWrapper.getGui();\n        if (this.cellEditorGui) {\n            ePopupGui.appendChild(this.cellEditorGui);\n        }\n        var popupService = this.beans.popupService;\n        var useModelPopup = this.beans.gridOptionsService.is('stopEditingWhenCellsLoseFocus');\n        // see if position provided by colDef, if not then check old way of method on cellComp\n        var positionToUse = position != null\n            ? position\n            : cellEditor.getPopupPosition\n                ? cellEditor.getPopupPosition()\n                : 'over';\n        var isRtl = this.beans.gridOptionsService.is('enableRtl');\n        var positionParams = {\n            ePopup: ePopupGui,\n            column: this.column,\n            rowNode: this.rowNode,\n            type: 'popupCellEditor',\n            eventSource: this.getGui(),\n            position: positionToUse,\n            alignSide: isRtl ? 'right' : 'left',\n            keepWithinBounds: true\n        };\n        var positionCallback = popupService.positionPopupByComponent.bind(popupService, positionParams);\n        var translate = this.beans.localeService.getLocaleTextFunc();\n        var addPopupRes = popupService.addPopup({\n            modal: useModelPopup,\n            eChild: ePopupGui,\n            closeOnEsc: true,\n            closedCallback: function () { _this.cellCtrl.onPopupEditorClosed(); },\n            anchorToElement: this.getGui(),\n            positionCallback: positionCallback,\n            ariaLabel: translate('ariaLabelCellEditor', 'Cell Editor')\n        });\n        if (addPopupRes) {\n            this.hideEditorPopup = addPopupRes.hideFunc;\n        }\n    };\n    CellComp.prototype.detach = function () {\n        this.eRow.removeChild(this.getGui());\n    };\n    // if the row is also getting destroyed, then we don't need to remove from dom,\n    // as the row will also get removed, so no need to take out the cells from the row\n    // if the row is going (removing is an expensive operation, so only need to remove\n    // the top part)\n    //\n    // note - this is NOT called by context, as we don't wire / unwire the CellComp for performance reasons.\n    CellComp.prototype.destroy = function () {\n        this.cellCtrl.stopEditing();\n        this.destroyEditorAndRenderer();\n        this.removeControls();\n        _super.prototype.destroy.call(this);\n    };\n    CellComp.prototype.clearParentOfValue = function () {\n        var eGui = this.getGui();\n        // if focus is inside the cell, we move focus to the cell itself\n        // before removing it's contents, otherwise errors could be thrown.\n        var eDocument = this.beans.gridOptionsService.getDocument();\n        if (eGui.contains(eDocument.activeElement) && browserSupportsPreventScroll()) {\n            eGui.focus({ preventScroll: true });\n        }\n        clearElement(this.getParentOfValue());\n    };\n    return CellComp;\n}(Component));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$1z = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar RowComp = /** @class */ (function (_super) {\n    __extends$1z(RowComp, _super);\n    function RowComp(ctrl, beans, containerType) {\n        var _this = _super.call(this) || this;\n        _this.cellComps = {};\n        _this.beans = beans;\n        _this.rowCtrl = ctrl;\n        _this.setTemplate(/* html */ \"<div comp-id=\\\"\" + _this.getCompId() + \"\\\" style=\\\"\" + _this.getInitialStyle(containerType) + \"\\\"/>\");\n        var eGui = _this.getGui();\n        var style = eGui.style;\n        var compProxy = {\n            setDomOrder: function (domOrder) { return _this.domOrder = domOrder; },\n            setCellCtrls: function (cellCtrls) { return _this.setCellCtrls(cellCtrls); },\n            showFullWidth: function (compDetails) { return _this.showFullWidth(compDetails); },\n            getFullWidthCellRenderer: function () { return _this.getFullWidthCellRenderer(); },\n            addOrRemoveCssClass: function (name, on) { return _this.addOrRemoveCssClass(name, on); },\n            setUserStyles: function (styles) { return addStylesToElement(eGui, styles); },\n            setTop: function (top) { return style.top = top; },\n            setTransform: function (transform) { return style.transform = transform; },\n            setRowIndex: function (rowIndex) { return eGui.setAttribute('row-index', rowIndex); },\n            setRole: function (role) { return setAriaRole(eGui, role); },\n            setRowId: function (rowId) { return eGui.setAttribute('row-id', rowId); },\n            setRowBusinessKey: function (businessKey) { return eGui.setAttribute('row-business-key', businessKey); },\n            setTabIndex: function (tabIndex) { return eGui.setAttribute('tabindex', tabIndex.toString()); }\n        };\n        ctrl.setComp(compProxy, _this.getGui(), containerType);\n        _this.addDestroyFunc(function () {\n            ctrl.unsetComp(containerType);\n        });\n        return _this;\n    }\n    RowComp.prototype.getInitialStyle = function (containerType) {\n        var transform = this.rowCtrl.getInitialTransform(containerType);\n        var top = this.rowCtrl.getInitialRowTop(containerType);\n        return transform ? \"transform: \" + transform : \"top: \" + top;\n    };\n    RowComp.prototype.showFullWidth = function (compDetails) {\n        var _this = this;\n        var callback = function (cellRenderer) {\n            if (_this.isAlive()) {\n                var eGui = cellRenderer.getGui();\n                _this.getGui().appendChild(eGui);\n                _this.rowCtrl.setupDetailRowAutoHeight(eGui);\n                _this.setFullWidthRowComp(cellRenderer);\n            }\n            else {\n                _this.beans.context.destroyBean(cellRenderer);\n            }\n        };\n        // if not in cache, create new one\n        var res = compDetails.newAgStackInstance();\n        if (!res) {\n            return;\n        }\n        res.then(callback);\n    };\n    RowComp.prototype.setCellCtrls = function (cellCtrls) {\n        var _this = this;\n        var cellsToRemove = Object.assign({}, this.cellComps);\n        cellCtrls.forEach(function (cellCtrl) {\n            var key = cellCtrl.getInstanceId();\n            var existingCellComp = _this.cellComps[key];\n            if (existingCellComp == null) {\n                _this.newCellComp(cellCtrl);\n            }\n            else {\n                cellsToRemove[key] = null;\n            }\n        });\n        var cellCompsToRemove = getAllValuesInObject(cellsToRemove)\n            .filter(function (cellComp) { return cellComp != null; });\n        this.destroyCells(cellCompsToRemove);\n        this.ensureDomOrder(cellCtrls);\n    };\n    RowComp.prototype.ensureDomOrder = function (cellCtrls) {\n        var _this = this;\n        if (!this.domOrder) {\n            return;\n        }\n        var elementsInOrder = [];\n        cellCtrls.forEach(function (cellCtrl) {\n            var cellComp = _this.cellComps[cellCtrl.getInstanceId()];\n            if (cellComp) {\n                elementsInOrder.push(cellComp.getGui());\n            }\n        });\n        setDomChildOrder(this.getGui(), elementsInOrder);\n    };\n    RowComp.prototype.newCellComp = function (cellCtrl) {\n        var cellComp = new CellComp(this.beans, cellCtrl, this.rowCtrl.isPrintLayout(), this.getGui(), this.rowCtrl.isEditing());\n        this.cellComps[cellCtrl.getInstanceId()] = cellComp;\n        this.getGui().appendChild(cellComp.getGui());\n    };\n    RowComp.prototype.destroy = function () {\n        _super.prototype.destroy.call(this);\n        this.destroyAllCells();\n    };\n    RowComp.prototype.destroyAllCells = function () {\n        var cellsToDestroy = getAllValuesInObject(this.cellComps).filter(function (cp) { return cp != null; });\n        this.destroyCells(cellsToDestroy);\n    };\n    RowComp.prototype.setFullWidthRowComp = function (fullWidthRowComponent) {\n        var _this = this;\n        if (this.fullWidthCellRenderer) {\n            console.error('AG Grid - should not be setting fullWidthRowComponent twice');\n        }\n        this.fullWidthCellRenderer = fullWidthRowComponent;\n        this.addDestroyFunc(function () {\n            _this.fullWidthCellRenderer = _this.beans.context.destroyBean(_this.fullWidthCellRenderer);\n        });\n    };\n    RowComp.prototype.getFullWidthCellRenderer = function () {\n        return this.fullWidthCellRenderer;\n    };\n    RowComp.prototype.destroyCells = function (cellComps) {\n        var _this = this;\n        cellComps.forEach(function (cellComp) {\n            // could be old reference, ie removed cell\n            if (!cellComp) {\n                return;\n            }\n            // check cellComp belongs in this container\n            var instanceId = cellComp.getCtrl().getInstanceId();\n            if (_this.cellComps[instanceId] !== cellComp) {\n                return;\n            }\n            cellComp.detach();\n            cellComp.destroy();\n            _this.cellComps[instanceId] = null;\n        });\n    };\n    return RowComp;\n}(Component));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$1y = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __assign$6 = (undefined && undefined.__assign) || function () {\n    __assign$6 = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign$6.apply(this, arguments);\n};\nvar __decorate$1x = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nfunction templateFactory() {\n    var name = Component.elementGettingCreated.getAttribute('name');\n    var cssClasses = RowContainerCtrl.getRowContainerCssClasses(name);\n    var res;\n    var template1 = name === RowContainerName.CENTER;\n    var template2 = name === RowContainerName.TOP_CENTER\n        || name === RowContainerName.STICKY_TOP_CENTER\n        || name === RowContainerName.BOTTOM_CENTER;\n    if (template1) {\n        res = /* html */\n            \"<div class=\\\"\" + cssClasses.wrapper + \"\\\" ref=\\\"eWrapper\\\" role=\\\"presentation\\\">\\n                <div class=\\\"\" + cssClasses.viewport + \"\\\" ref=\\\"eViewport\\\" role=\\\"presentation\\\">\\n                    <div class=\\\"\" + cssClasses.container + \"\\\" ref=\\\"eContainer\\\"></div>\\n                </div>\\n            </div>\";\n    }\n    else if (template2) {\n        res = /* html */\n            \"<div class=\\\"\" + cssClasses.viewport + \"\\\" ref=\\\"eViewport\\\" role=\\\"presentation\\\">\\n                <div class=\\\"\" + cssClasses.container + \"\\\" ref=\\\"eContainer\\\"></div>\\n            </div>\";\n    }\n    else {\n        res = /* html */\n            \"<div class=\\\"\" + cssClasses.container + \"\\\" ref=\\\"eContainer\\\"></div>\";\n    }\n    return res;\n}\nvar RowContainerComp = /** @class */ (function (_super) {\n    __extends$1y(RowContainerComp, _super);\n    function RowContainerComp() {\n        var _this = _super.call(this, templateFactory()) || this;\n        _this.rowComps = {};\n        _this.name = Component.elementGettingCreated.getAttribute('name');\n        _this.type = getRowContainerTypeForName(_this.name);\n        return _this;\n    }\n    RowContainerComp.prototype.postConstruct = function () {\n        var _this = this;\n        var compProxy = {\n            setViewportHeight: function (height) { return _this.eViewport.style.height = height; },\n            setRowCtrls: function (rowCtrls) { return _this.setRowCtrls(rowCtrls); },\n            setDomOrder: function (domOrder) {\n                _this.domOrder = domOrder;\n            },\n            setContainerWidth: function (width) { return _this.eContainer.style.width = width; }\n        };\n        var ctrl = this.createManagedBean(new RowContainerCtrl(this.name));\n        ctrl.setComp(compProxy, this.eContainer, this.eViewport, this.eWrapper);\n    };\n    RowContainerComp.prototype.preDestroy = function () {\n        // destroys all row comps\n        this.setRowCtrls([]);\n    };\n    RowContainerComp.prototype.setRowCtrls = function (rowCtrls) {\n        var _this = this;\n        var oldRows = __assign$6({}, this.rowComps);\n        this.rowComps = {};\n        this.lastPlacedElement = null;\n        var processRow = function (rowCon) {\n            var instanceId = rowCon.getInstanceId();\n            var existingRowComp = oldRows[instanceId];\n            if (existingRowComp) {\n                _this.rowComps[instanceId] = existingRowComp;\n                delete oldRows[instanceId];\n                _this.ensureDomOrder(existingRowComp.getGui());\n            }\n            else {\n                var rowComp = new RowComp(rowCon, _this.beans, _this.type);\n                _this.rowComps[instanceId] = rowComp;\n                _this.appendRow(rowComp.getGui());\n            }\n        };\n        rowCtrls.forEach(processRow);\n        getAllValuesInObject(oldRows).forEach(function (oldRowComp) {\n            _this.eContainer.removeChild(oldRowComp.getGui());\n            oldRowComp.destroy();\n        });\n        setAriaRole(this.eContainer, rowCtrls.length ? \"rowgroup\" : \"presentation\");\n    };\n    RowContainerComp.prototype.appendRow = function (element) {\n        if (this.domOrder) {\n            insertWithDomOrder(this.eContainer, element, this.lastPlacedElement);\n        }\n        else {\n            this.eContainer.appendChild(element);\n        }\n        this.lastPlacedElement = element;\n    };\n    RowContainerComp.prototype.ensureDomOrder = function (eRow) {\n        if (this.domOrder) {\n            ensureDomOrder(this.eContainer, eRow, this.lastPlacedElement);\n            this.lastPlacedElement = eRow;\n        }\n    };\n    __decorate$1x([\n        Autowired('beans')\n    ], RowContainerComp.prototype, \"beans\", void 0);\n    __decorate$1x([\n        RefSelector('eViewport')\n    ], RowContainerComp.prototype, \"eViewport\", void 0);\n    __decorate$1x([\n        RefSelector('eContainer')\n    ], RowContainerComp.prototype, \"eContainer\", void 0);\n    __decorate$1x([\n        RefSelector('eWrapper')\n    ], RowContainerComp.prototype, \"eWrapper\", void 0);\n    __decorate$1x([\n        PostConstruct\n    ], RowContainerComp.prototype, \"postConstruct\", null);\n    __decorate$1x([\n        PreDestroy\n    ], RowContainerComp.prototype, \"preDestroy\", null);\n    return RowContainerComp;\n}(Component));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __decorate$1w = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar BodyDropPivotTarget = /** @class */ (function () {\n    function BodyDropPivotTarget(pinned) {\n        this.columnsToAggregate = [];\n        this.columnsToGroup = [];\n        this.columnsToPivot = [];\n        this.pinned = pinned;\n    }\n    /** Callback for when drag enters */\n    BodyDropPivotTarget.prototype.onDragEnter = function (draggingEvent) {\n        var _this = this;\n        this.clearColumnsList();\n        // in pivot mode, we don't accept any drops if functions are read only\n        if (this.gridOptionsService.is('functionsReadOnly')) {\n            return;\n        }\n        var dragColumns = draggingEvent.dragItem.columns;\n        if (!dragColumns) {\n            return;\n        }\n        dragColumns.forEach(function (column) {\n            // we don't allow adding secondary columns\n            if (!column.isPrimary()) {\n                return;\n            }\n            if (column.isAnyFunctionActive()) {\n                return;\n            }\n            if (column.isAllowValue()) {\n                _this.columnsToAggregate.push(column);\n            }\n            else if (column.isAllowRowGroup()) {\n                _this.columnsToGroup.push(column);\n            }\n            else if (column.isAllowPivot()) {\n                _this.columnsToPivot.push(column);\n            }\n        });\n    };\n    BodyDropPivotTarget.prototype.getIconName = function () {\n        var totalColumns = this.columnsToAggregate.length + this.columnsToGroup.length + this.columnsToPivot.length;\n        if (totalColumns > 0) {\n            return this.pinned ? DragAndDropService.ICON_PINNED : DragAndDropService.ICON_MOVE;\n        }\n        return null;\n    };\n    /** Callback for when drag leaves */\n    BodyDropPivotTarget.prototype.onDragLeave = function (draggingEvent) {\n        // if we are taking columns out of the center, then we remove them from the report\n        this.clearColumnsList();\n    };\n    BodyDropPivotTarget.prototype.clearColumnsList = function () {\n        this.columnsToAggregate.length = 0;\n        this.columnsToGroup.length = 0;\n        this.columnsToPivot.length = 0;\n    };\n    /** Callback for when dragging */\n    BodyDropPivotTarget.prototype.onDragging = function (draggingEvent) {\n    };\n    /** Callback for when drag stops */\n    BodyDropPivotTarget.prototype.onDragStop = function (draggingEvent) {\n        if (this.columnsToAggregate.length > 0) {\n            this.columnModel.addValueColumns(this.columnsToAggregate, \"toolPanelDragAndDrop\");\n        }\n        if (this.columnsToGroup.length > 0) {\n            this.columnModel.addRowGroupColumns(this.columnsToGroup, \"toolPanelDragAndDrop\");\n        }\n        if (this.columnsToPivot.length > 0) {\n            this.columnModel.addPivotColumns(this.columnsToPivot, \"toolPanelDragAndDrop\");\n        }\n    };\n    __decorate$1w([\n        Autowired('columnModel')\n    ], BodyDropPivotTarget.prototype, \"columnModel\", void 0);\n    __decorate$1w([\n        Autowired('gridOptionsService')\n    ], BodyDropPivotTarget.prototype, \"gridOptionsService\", void 0);\n    return BodyDropPivotTarget;\n}());\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __decorate$1v = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __read$h = (undefined && undefined.__read) || function (o, n) {\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n    if (!m) return o;\n    var i = m.call(o), r, ar = [], e;\n    try {\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n    }\n    catch (error) { e = { error: error }; }\n    finally {\n        try {\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\n        }\n        finally { if (e) throw e.error; }\n    }\n    return ar;\n};\nvar MoveColumnFeature = /** @class */ (function () {\n    function MoveColumnFeature(pinned, eContainer) {\n        this.needToMoveLeft = false;\n        this.needToMoveRight = false;\n        this.lastMovedInfo = null;\n        this.pinned = pinned;\n        this.eContainer = eContainer;\n        this.centerContainer = !exists(pinned);\n    }\n    MoveColumnFeature.prototype.init = function () {\n        var _this = this;\n        this.ctrlsService.whenReady(function () {\n            _this.gridBodyCon = _this.ctrlsService.getGridBodyCtrl();\n        });\n    };\n    MoveColumnFeature.prototype.getIconName = function () {\n        return this.pinned ? DragAndDropService.ICON_PINNED : DragAndDropService.ICON_MOVE;\n    };\n    MoveColumnFeature.prototype.onDragEnter = function (draggingEvent) {\n        // we do dummy drag, so make sure column appears in the right location when first placed\n        var columns = draggingEvent.dragItem.columns;\n        var dragCameFromToolPanel = draggingEvent.dragSource.type === DragSourceType.ToolPanel;\n        if (dragCameFromToolPanel) {\n            // the if statement doesn't work if drag leaves grid, then enters again\n            this.setColumnsVisible(columns, true, \"uiColumnDragged\");\n        }\n        else {\n            // restore previous state of visible columns upon re-entering. this means if the user drags\n            // a group out, and then drags the group back in, only columns that were originally visible\n            // will be visible again. otherwise a group with three columns (but only two visible) could\n            // be dragged out, then when it's dragged in again, all three are visible. this stops that.\n            var visibleState_1 = draggingEvent.dragItem.visibleState;\n            var visibleColumns = (columns || []).filter(function (column) { return visibleState_1[column.getId()]; });\n            this.setColumnsVisible(visibleColumns, true, \"uiColumnDragged\");\n        }\n        this.setColumnsPinned(columns, this.pinned, \"uiColumnDragged\");\n        this.onDragging(draggingEvent, true, true);\n    };\n    MoveColumnFeature.prototype.onDragLeave = function () {\n        this.ensureIntervalCleared();\n        this.lastMovedInfo = null;\n    };\n    MoveColumnFeature.prototype.setColumnsVisible = function (columns, visible, source) {\n        if (source === void 0) { source = \"api\"; }\n        if (columns) {\n            var allowedCols = columns.filter(function (c) { return !c.getColDef().lockVisible; });\n            this.columnModel.setColumnsVisible(allowedCols, visible, source);\n        }\n    };\n    MoveColumnFeature.prototype.setColumnsPinned = function (columns, pinned, source) {\n        if (source === void 0) { source = \"api\"; }\n        if (columns) {\n            var allowedCols = columns.filter(function (c) { return !c.getColDef().lockPinned; });\n            this.columnModel.setColumnsPinned(allowedCols, pinned, source);\n        }\n    };\n    MoveColumnFeature.prototype.onDragStop = function () {\n        this.onDragging(this.lastDraggingEvent, false, true, true);\n        this.ensureIntervalCleared();\n        this.lastMovedInfo = null;\n    };\n    MoveColumnFeature.prototype.normaliseX = function (x) {\n        // flip the coordinate if doing RTL\n        if (this.gridOptionsService.is('enableRtl')) {\n            var clientWidth = this.eContainer.clientWidth;\n            x = clientWidth - x;\n        }\n        // adjust for scroll only if centre container (the pinned containers don't scroll)\n        if (this.centerContainer) {\n            x += this.ctrlsService.getCenterRowContainerCtrl().getCenterViewportScrollLeft();\n        }\n        return x;\n    };\n    MoveColumnFeature.prototype.checkCenterForScrolling = function (xAdjustedForScroll) {\n        if (this.centerContainer) {\n            // scroll if the mouse has gone outside the grid (or just outside the scrollable part if pinning)\n            // putting in 50 buffer, so even if user gets to edge of grid, a scroll will happen\n            var firstVisiblePixel = this.ctrlsService.getCenterRowContainerCtrl().getCenterViewportScrollLeft();\n            var lastVisiblePixel = firstVisiblePixel + this.ctrlsService.getCenterRowContainerCtrl().getCenterWidth();\n            if (this.gridOptionsService.is('enableRtl')) {\n                this.needToMoveRight = xAdjustedForScroll < (firstVisiblePixel + 50);\n                this.needToMoveLeft = xAdjustedForScroll > (lastVisiblePixel - 50);\n            }\n            else {\n                this.needToMoveLeft = xAdjustedForScroll < (firstVisiblePixel + 50);\n                this.needToMoveRight = xAdjustedForScroll > (lastVisiblePixel - 50);\n            }\n            if (this.needToMoveLeft || this.needToMoveRight) {\n                this.ensureIntervalStarted();\n            }\n            else {\n                this.ensureIntervalCleared();\n            }\n        }\n    };\n    MoveColumnFeature.prototype.onDragging = function (draggingEvent, fromEnter, fakeEvent, finished) {\n        var _this = this;\n        var _a;\n        if (draggingEvent === void 0) { draggingEvent = this.lastDraggingEvent; }\n        if (fromEnter === void 0) { fromEnter = false; }\n        if (fakeEvent === void 0) { fakeEvent = false; }\n        if (finished === void 0) { finished = false; }\n        if (finished) {\n            if (this.lastMovedInfo) {\n                var _b = this.lastMovedInfo, columns = _b.columns, toIndex = _b.toIndex;\n                this.moveColumns(columns, toIndex, 'uiColumnMoved', true);\n            }\n            return;\n        }\n        this.lastDraggingEvent = draggingEvent;\n        // if moving up or down (ie not left or right) then do nothing\n        if (missing(draggingEvent.hDirection)) {\n            return;\n        }\n        var mouseX = this.normaliseX(draggingEvent.x);\n        // if the user is dragging into the panel, ie coming from the side panel into the main grid,\n        // we don't want to scroll the grid this time, it would appear like the table is jumping\n        // each time a column is dragged in.\n        if (!fromEnter) {\n            this.checkCenterForScrolling(mouseX);\n        }\n        var hDirection = this.normaliseDirection(draggingEvent.hDirection);\n        var dragSourceType = draggingEvent.dragSource.type;\n        var allMovingColumns = ((_a = draggingEvent.dragSource.getDragItem().columns) === null || _a === void 0 ? void 0 : _a.filter(function (col) {\n            if (col.getColDef().lockPinned) {\n                // if locked return true only if both col and container are same pin type.\n                // double equals (==) here on purpose so that null==undefined is true (for not pinned options)\n                return col.getPinned() == _this.pinned;\n            }\n            // if not pin locked, then always allowed to be in this container\n            return true;\n        })) || [];\n        this.attemptMoveColumns({ dragSourceType: dragSourceType, allMovingColumns: allMovingColumns, hDirection: hDirection, mouseX: mouseX, fromEnter: fromEnter, fakeEvent: fakeEvent });\n    };\n    MoveColumnFeature.prototype.normaliseDirection = function (hDirection) {\n        if (this.gridOptionsService.is('enableRtl')) {\n            switch (hDirection) {\n                case HorizontalDirection.Left: return HorizontalDirection.Right;\n                case HorizontalDirection.Right: return HorizontalDirection.Left;\n                default: console.error(\"AG Grid: Unknown direction \" + hDirection);\n            }\n        }\n        else {\n            return hDirection;\n        }\n    };\n    MoveColumnFeature.prototype.attemptMoveColumns = function (params) {\n        var dragSourceType = params.dragSourceType, hDirection = params.hDirection, mouseX = params.mouseX, fromEnter = params.fromEnter, fakeEvent = params.fakeEvent;\n        var draggingLeft = hDirection === HorizontalDirection.Left;\n        var draggingRight = hDirection === HorizontalDirection.Right;\n        var allMovingColumns = params.allMovingColumns;\n        if (dragSourceType === DragSourceType.HeaderCell) {\n            // If the columns we're dragging are the only visible columns of their group, move the hidden ones too\n            var newCols_1 = [];\n            allMovingColumns.forEach(function (col) {\n                var movingGroup = null;\n                var parent = col.getParent();\n                while (parent != null && parent.getDisplayedLeafColumns().length === 1) {\n                    movingGroup = parent;\n                    parent = parent.getParent();\n                }\n                if (movingGroup != null) {\n                    movingGroup.getLeafColumns().forEach(function (newCol) {\n                        if (!newCols_1.includes(newCol)) {\n                            newCols_1.push(newCol);\n                        }\n                    });\n                }\n                else if (!newCols_1.includes(col)) {\n                    newCols_1.push(col);\n                }\n            });\n            allMovingColumns = newCols_1;\n        }\n        // it is important to sort the moving columns as they are in grid columns, as the list of moving columns\n        // could themselves be part of 'married children' groups, which means we need to maintain the order within\n        // the moving list.\n        var allMovingColumnsOrdered = allMovingColumns.slice();\n        this.columnModel.sortColumnsLikeGridColumns(allMovingColumnsOrdered);\n        var validMoves = this.calculateValidMoves(allMovingColumnsOrdered, draggingRight, mouseX);\n        // if cols are not adjacent, then this returns null. when moving, we constrain the direction of the move\n        // (ie left or right) to the mouse direction. however\n        var oldIndex = this.calculateOldIndex(allMovingColumnsOrdered);\n        if (validMoves.length === 0) {\n            return;\n        }\n        var firstValidMove = validMoves[0];\n        // the two check below stop an error when the user grabs a group my a middle column, then\n        // it is possible the mouse pointer is to the right of a column while been dragged left.\n        // so we need to make sure that the mouse pointer is actually left of the left most column\n        // if moving left, and right of the right most column if moving right\n        // we check 'fromEnter' below so we move the column to the new spot if the mouse is coming from\n        // outside the grid, eg if the column is moving from side panel, mouse is moving left, then we should\n        // place the column to the RHS even if the mouse is moving left and the column is already on\n        // the LHS. otherwise we stick to the rule described above.\n        var constrainDirection = oldIndex !== null && !fromEnter;\n        // don't consider 'fromEnter' when dragging header cells, otherwise group can jump to opposite direction of drag\n        if (dragSourceType == DragSourceType.HeaderCell) {\n            constrainDirection = oldIndex !== null;\n        }\n        // if the event was faked by a change in column pin state, then the original location of the column\n        // is not reliable for dictating where the column may now be placed.\n        if (constrainDirection && !fakeEvent) {\n            // only allow left drag if this column is moving left\n            if (draggingLeft && firstValidMove >= oldIndex) {\n                return;\n            }\n            // only allow right drag if this column is moving right\n            if (draggingRight && firstValidMove <= oldIndex) {\n                return;\n            }\n        }\n        // From when we find a move that passes all the rules\n        // Remember what that move would look like in terms of displayed cols\n        // keep going with further moves until we find a different result in displayed output\n        // In this way potentialMoves contains all potential moves over 'hidden' columns\n        var displayedCols = this.columnModel.getAllDisplayedColumns();\n        var potentialMoves = [];\n        var targetOrder = null;\n        for (var i = 0; i < validMoves.length; i++) {\n            var move = validMoves[i];\n            var order = this.columnModel.getProposedColumnOrder(allMovingColumnsOrdered, move);\n            if (!this.columnModel.doesOrderPassRules(order)) {\n                continue;\n            }\n            var displayedOrder = order.filter(function (col) { return displayedCols.includes(col); });\n            if (targetOrder === null) {\n                targetOrder = displayedOrder;\n            }\n            else if (!_.areEqual(displayedOrder, targetOrder)) {\n                break; // Stop looking for potential moves if the displayed result changes from the target\n            }\n            var fragCount = this.groupFragCount(order);\n            potentialMoves.push({ move: move, fragCount: fragCount });\n        }\n        if (potentialMoves.length === 0) {\n            return;\n        }\n        // The best move is the move with least group fragmentation\n        potentialMoves.sort(function (a, b) { return a.fragCount - b.fragCount; });\n        this.moveColumns(allMovingColumns, potentialMoves[0].move, 'uiColumnMoved', false);\n    };\n    // returns the index of the first column in the list ONLY if the cols are all beside\n    // each other. if the cols are not beside each other, then returns null\n    MoveColumnFeature.prototype.calculateOldIndex = function (movingCols) {\n        var gridCols = this.columnModel.getAllGridColumns();\n        var indexes = sortNumerically(movingCols.map(function (col) { return gridCols.indexOf(col); }));\n        var firstIndex = indexes[0];\n        var lastIndex = last(indexes);\n        var spread = lastIndex - firstIndex;\n        var gapsExist = spread !== indexes.length - 1;\n        return gapsExist ? null : firstIndex;\n    };\n    MoveColumnFeature.prototype.moveColumns = function (columns, toIndex, source, finished) {\n        this.columnModel.moveColumns(columns, toIndex, source, finished);\n        this.lastMovedInfo = finished ? null : { columns: columns, toIndex: toIndex };\n    };\n    // A measure of how fragmented in terms of groups an order of columns is\n    MoveColumnFeature.prototype.groupFragCount = function (columns) {\n        function parents(col) {\n            var result = [];\n            var parent = col.getOriginalParent();\n            while (parent != null) {\n                result.push(parent);\n                parent = parent.getOriginalParent();\n            }\n            return result;\n        }\n        var count = 0;\n        var _loop_1 = function (i) {\n            var _a;\n            var a = parents(columns[i]);\n            var b = parents(columns[i + 1]);\n            // iterate over the longest one\n            _a = __read$h(a.length > b.length ? [a, b] : [b, a], 2), a = _a[0], b = _a[1];\n            a.forEach(function (parent) {\n                if (b.indexOf(parent) === -1) {\n                    count++; // More fragmented if other column doesn't share the parent\n                }\n            });\n        };\n        for (var i = 0; i < columns.length - 1; i++) {\n            _loop_1(i);\n        }\n        return count;\n    };\n    MoveColumnFeature.prototype.calculateValidMoves = function (movingCols, draggingRight, mouseX) {\n        var isMoveBlocked = this.gridOptionsService.is('suppressMovableColumns') || movingCols.some(function (col) { return col.getColDef().suppressMovable; });\n        if (isMoveBlocked) {\n            return [];\n        }\n        // this is the list of cols on the screen, so it's these we use when comparing the x mouse position\n        var allDisplayedCols = this.columnModel.getDisplayedColumns(this.pinned);\n        // but this list is the list of all cols, when we move a col it's the index within this list that gets used,\n        // so the result we return has to be and index location for this list\n        var allGridCols = this.columnModel.getAllGridColumns();\n        var movingDisplayedCols = allDisplayedCols.filter(function (col) { return includes(movingCols, col); });\n        var otherDisplayedCols = allDisplayedCols.filter(function (col) { return !includes(movingCols, col); });\n        var otherGridCols = allGridCols.filter(function (col) { return !includes(movingCols, col); });\n        // work out how many DISPLAYED columns fit before the 'x' position. this gives us the displayIndex.\n        // for example, if cols are a,b,c,d and we find a,b fit before 'x', then we want to place the moving\n        // col between b and c (so that it is under the mouse position).\n        var displayIndex = 0;\n        var availableWidth = mouseX;\n        // if we are dragging right, then the columns will be to the left of the mouse, so we also want to\n        // include the width of the moving columns\n        if (draggingRight) {\n            var widthOfMovingDisplayedCols_1 = 0;\n            movingDisplayedCols.forEach(function (col) { return widthOfMovingDisplayedCols_1 += col.getActualWidth(); });\n            availableWidth -= widthOfMovingDisplayedCols_1;\n        }\n        if (availableWidth > 0) {\n            // now count how many of the displayed columns will fit to the left\n            for (var i = 0; i < otherDisplayedCols.length; i++) {\n                var col = otherDisplayedCols[i];\n                availableWidth -= col.getActualWidth();\n                if (availableWidth < 0) {\n                    break;\n                }\n                displayIndex++;\n            }\n            // trial and error, if going right, we adjust by one, i didn't manage to quantify why, but it works\n            if (draggingRight) {\n                displayIndex++;\n            }\n        }\n        // the display index is with respect to all the showing columns, however when we move, it's with\n        // respect to all grid columns, so we need to translate from display index to grid index\n        var firstValidMove;\n        if (displayIndex > 0) {\n            var leftColumn = otherDisplayedCols[displayIndex - 1];\n            firstValidMove = otherGridCols.indexOf(leftColumn) + 1;\n        }\n        else {\n            firstValidMove = otherGridCols.indexOf(otherDisplayedCols[0]);\n            if (firstValidMove === -1) {\n                firstValidMove = 0;\n            }\n        }\n        var validMoves = [firstValidMove];\n        var numberComparator = function (a, b) { return a - b; };\n        // add in other valid moves due to hidden columns and married children. for example, a particular\n        // move might break a group that has married children (so move isn't valid), however there could\n        // be hidden columns (not displayed) that we could jump over to make the move valid. because\n        // they are hidden, user doesn't see any different, however it allows moves that would otherwise\n        // not work. for example imagine a group with 9 columns and all columns are hidden except the\n        // middle one (so 4 hidden to left, 4 hidden to right), then when moving 'firstValidMove' will\n        // be relative to the not-shown column, however we need to consider the move jumping over all the\n        // hidden children. if we didn't do this, then if the group just described was at the end (RHS) of the\n        // grid, there would be no way to put a column after it (as the grid would only consider beside the\n        // visible column, which would fail valid move rules).\n        if (draggingRight) {\n            // if dragging right, then we add all the additional moves to the right. so in other words\n            // if the next move is not valid, find the next move to the right that is valid.\n            var pointer = firstValidMove + 1;\n            var lastIndex = allGridCols.length - 1;\n            while (pointer <= lastIndex) {\n                validMoves.push(pointer);\n                pointer++;\n            }\n            // adding columns here means the order is now messed up\n            validMoves.sort(numberComparator);\n        }\n        else {\n            // if dragging left we do the reverse of dragging right, we add in all the valid moves to the\n            // left. however we also have to consider moves to the right for all hidden columns first.\n            // (this logic is hard to reason with, it was worked out with trial and error,\n            // more observation rather than science).\n            // add moves to the right\n            var pointer = firstValidMove;\n            var lastIndex = allGridCols.length - 1;\n            var displacedCol = allGridCols[pointer];\n            while (pointer <= lastIndex && this.isColumnHidden(allDisplayedCols, displacedCol)) {\n                pointer++;\n                validMoves.push(pointer);\n                displacedCol = allGridCols[pointer];\n            }\n            // add moves to the left\n            pointer = firstValidMove - 1;\n            var firstDisplayIndex = 0;\n            while (pointer >= firstDisplayIndex) {\n                validMoves.push(pointer);\n                pointer--;\n            }\n            // adding columns here means the order is now messed up\n            validMoves.sort(numberComparator).reverse();\n        }\n        return validMoves;\n    };\n    // isHidden takes into account visible=false and group=closed, ie it is not displayed\n    MoveColumnFeature.prototype.isColumnHidden = function (displayedColumns, col) {\n        return displayedColumns.indexOf(col) < 0;\n    };\n    MoveColumnFeature.prototype.ensureIntervalStarted = function () {\n        if (!this.movingIntervalId) {\n            this.intervalCount = 0;\n            this.failedMoveAttempts = 0;\n            this.movingIntervalId = window.setInterval(this.moveInterval.bind(this), 100);\n            if (this.needToMoveLeft) {\n                this.dragAndDropService.setGhostIcon(DragAndDropService.ICON_LEFT, true);\n            }\n            else {\n                this.dragAndDropService.setGhostIcon(DragAndDropService.ICON_RIGHT, true);\n            }\n        }\n    };\n    MoveColumnFeature.prototype.ensureIntervalCleared = function () {\n        if (this.movingIntervalId) {\n            window.clearInterval(this.movingIntervalId);\n            this.movingIntervalId = null;\n            this.dragAndDropService.setGhostIcon(DragAndDropService.ICON_MOVE);\n        }\n    };\n    MoveColumnFeature.prototype.moveInterval = function () {\n        // the amounts we move get bigger at each interval, so the speed accelerates, starting a bit slow\n        // and getting faster. this is to give smoother user experience. we max at 100px to limit the speed.\n        var pixelsToMove;\n        this.intervalCount++;\n        pixelsToMove = 10 + (this.intervalCount * 5);\n        if (pixelsToMove > 100) {\n            pixelsToMove = 100;\n        }\n        var pixelsMoved = null;\n        var scrollFeature = this.gridBodyCon.getScrollFeature();\n        if (this.needToMoveLeft) {\n            pixelsMoved = scrollFeature.scrollHorizontally(-pixelsToMove);\n        }\n        else if (this.needToMoveRight) {\n            pixelsMoved = scrollFeature.scrollHorizontally(pixelsToMove);\n        }\n        if (pixelsMoved !== 0) {\n            this.onDragging(this.lastDraggingEvent);\n            this.failedMoveAttempts = 0;\n        }\n        else {\n            // we count the failed move attempts. if we fail to move 7 times, then we pin the column.\n            // this is how we achieve pining by dragging the column to the edge of the grid.\n            this.failedMoveAttempts++;\n            var columns = this.lastDraggingEvent.dragItem.columns;\n            var columnsThatCanPin = columns.filter(function (c) { return !c.getColDef().lockPinned; });\n            if (columnsThatCanPin.length > 0) {\n                this.dragAndDropService.setGhostIcon(DragAndDropService.ICON_PINNED);\n                if (this.failedMoveAttempts > 7) {\n                    var pinType = this.needToMoveLeft ? 'left' : 'right';\n                    this.setColumnsPinned(columnsThatCanPin, pinType, \"uiColumnDragged\");\n                    this.dragAndDropService.nudge();\n                }\n            }\n        }\n    };\n    __decorate$1v([\n        Autowired('columnModel')\n    ], MoveColumnFeature.prototype, \"columnModel\", void 0);\n    __decorate$1v([\n        Autowired('dragAndDropService')\n    ], MoveColumnFeature.prototype, \"dragAndDropService\", void 0);\n    __decorate$1v([\n        Autowired('gridOptionsService')\n    ], MoveColumnFeature.prototype, \"gridOptionsService\", void 0);\n    __decorate$1v([\n        Autowired('ctrlsService')\n    ], MoveColumnFeature.prototype, \"ctrlsService\", void 0);\n    __decorate$1v([\n        PostConstruct\n    ], MoveColumnFeature.prototype, \"init\", null);\n    return MoveColumnFeature;\n}());\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$1x = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$1u = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar BodyDropTarget = /** @class */ (function (_super) {\n    __extends$1x(BodyDropTarget, _super);\n    function BodyDropTarget(pinned, eContainer) {\n        var _this = _super.call(this) || this;\n        _this.pinned = pinned;\n        _this.eContainer = eContainer;\n        return _this;\n    }\n    BodyDropTarget.prototype.postConstruct = function () {\n        var _this = this;\n        this.ctrlsService.whenReady(function (p) {\n            switch (_this.pinned) {\n                case 'left':\n                    _this.eSecondaryContainers = [\n                        [p.gridBodyCtrl.getBodyViewportElement(), p.leftRowContainerCtrl.getContainerElement()],\n                        [p.bottomLeftRowContainerCtrl.getContainerElement()],\n                        [p.topLeftRowContainerCtrl.getContainerElement()]\n                    ];\n                    break;\n                case 'right':\n                    _this.eSecondaryContainers = [\n                        [p.gridBodyCtrl.getBodyViewportElement(), p.rightRowContainerCtrl.getContainerElement()],\n                        [p.bottomRightRowContainerCtrl.getContainerElement()],\n                        [p.topRightRowContainerCtrl.getContainerElement()]\n                    ];\n                    break;\n                default:\n                    _this.eSecondaryContainers = [\n                        [p.gridBodyCtrl.getBodyViewportElement(), p.centerRowContainerCtrl.getViewportElement()],\n                        [p.bottomCenterRowContainerCtrl.getViewportElement()],\n                        [p.topCenterRowContainerCtrl.getViewportElement()]\n                    ];\n                    break;\n            }\n        });\n    };\n    BodyDropTarget.prototype.isInterestedIn = function (type) {\n        return type === DragSourceType.HeaderCell ||\n            (type === DragSourceType.ToolPanel && this.gridOptionsService.is('allowDragFromColumnsToolPanel'));\n    };\n    BodyDropTarget.prototype.getSecondaryContainers = function () {\n        return this.eSecondaryContainers;\n    };\n    BodyDropTarget.prototype.getContainer = function () {\n        return this.eContainer;\n    };\n    BodyDropTarget.prototype.init = function () {\n        this.moveColumnFeature = this.createManagedBean(new MoveColumnFeature(this.pinned, this.eContainer));\n        this.bodyDropPivotTarget = this.createManagedBean(new BodyDropPivotTarget(this.pinned));\n        this.dragAndDropService.addDropTarget(this);\n    };\n    BodyDropTarget.prototype.getIconName = function () {\n        return this.currentDropListener.getIconName();\n    };\n    // we want to use the bodyPivotTarget if the user is dragging columns in from the toolPanel\n    // and we are in pivot mode, as it has to logic to set pivot/value/group on the columns when\n    // dropped into the grid's body.\n    BodyDropTarget.prototype.isDropColumnInPivotMode = function (draggingEvent) {\n        // in pivot mode, then if moving a column (ie didn't come from toolpanel) then it's\n        // a standard column move, however if it came from the toolpanel, then we are introducing\n        // dimensions or values to the grid\n        return this.columnModel.isPivotMode() && draggingEvent.dragSource.type === DragSourceType.ToolPanel;\n    };\n    BodyDropTarget.prototype.onDragEnter = function (draggingEvent) {\n        // we pick the drop listener depending on whether we are in pivot mode are not. if we are\n        // in pivot mode, then dropping cols changes the row group, pivot, value stats. otherwise\n        // we change visibility state and position.\n        this.currentDropListener = this.isDropColumnInPivotMode(draggingEvent) ? this.bodyDropPivotTarget : this.moveColumnFeature;\n        this.currentDropListener.onDragEnter(draggingEvent);\n    };\n    BodyDropTarget.prototype.onDragLeave = function (params) {\n        this.currentDropListener.onDragLeave(params);\n    };\n    BodyDropTarget.prototype.onDragging = function (params) {\n        this.currentDropListener.onDragging(params);\n    };\n    BodyDropTarget.prototype.onDragStop = function (params) {\n        this.currentDropListener.onDragStop(params);\n    };\n    __decorate$1u([\n        Autowired('dragAndDropService')\n    ], BodyDropTarget.prototype, \"dragAndDropService\", void 0);\n    __decorate$1u([\n        Autowired('columnModel')\n    ], BodyDropTarget.prototype, \"columnModel\", void 0);\n    __decorate$1u([\n        Autowired('ctrlsService')\n    ], BodyDropTarget.prototype, \"ctrlsService\", void 0);\n    __decorate$1u([\n        PostConstruct\n    ], BodyDropTarget.prototype, \"postConstruct\", null);\n    __decorate$1u([\n        PostConstruct\n    ], BodyDropTarget.prototype, \"init\", null);\n    return BodyDropTarget;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __read$g = (undefined && undefined.__read) || function (o, n) {\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n    if (!m) return o;\n    var i = m.call(o), r, ar = [], e;\n    try {\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n    }\n    catch (error) { e = { error: error }; }\n    finally {\n        try {\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\n        }\n        finally { if (e) throw e.error; }\n    }\n    return ar;\n};\nvar __spread$e = (undefined && undefined.__spread) || function () {\n    for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read$g(arguments[i]));\n    return ar;\n};\nvar CssClassApplier = /** @class */ (function () {\n    function CssClassApplier() {\n    }\n    CssClassApplier.getHeaderClassesFromColDef = function (abstractColDef, gridOptionsService, column, columnGroup) {\n        if (missing(abstractColDef)) {\n            return [];\n        }\n        return this.getColumnClassesFromCollDef(abstractColDef.headerClass, abstractColDef, gridOptionsService, column, columnGroup);\n    };\n    CssClassApplier.getToolPanelClassesFromColDef = function (abstractColDef, gridOptionsService, column, columnGroup) {\n        if (missing(abstractColDef)) {\n            return [];\n        }\n        return this.getColumnClassesFromCollDef(abstractColDef.toolPanelClass, abstractColDef, gridOptionsService, column, columnGroup);\n    };\n    CssClassApplier.getClassParams = function (abstractColDef, gridOptionsService, column, columnGroup) {\n        return {\n            // bad naming, as colDef here can be a group or a column,\n            // however most people won't appreciate the difference,\n            // so keeping it as colDef to avoid confusion.\n            colDef: abstractColDef,\n            column: column,\n            columnGroup: columnGroup,\n            api: gridOptionsService.api,\n            columnApi: gridOptionsService.columnApi,\n            context: gridOptionsService.context\n        };\n    };\n    CssClassApplier.getColumnClassesFromCollDef = function (classesOrFunc, abstractColDef, gridOptionsService, column, columnGroup) {\n        if (missing(classesOrFunc)) {\n            return [];\n        }\n        var classToUse;\n        if (typeof classesOrFunc === 'function') {\n            var params = this.getClassParams(abstractColDef, gridOptionsService, column, columnGroup);\n            classToUse = classesOrFunc(params);\n        }\n        else {\n            classToUse = classesOrFunc;\n        }\n        if (typeof classToUse === 'string') {\n            return [classToUse];\n        }\n        if (Array.isArray(classToUse)) {\n            return __spread$e(classToUse);\n        }\n        return [];\n    };\n    return CssClassApplier;\n}());\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$1w = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$1t = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar HeaderCellComp = /** @class */ (function (_super) {\n    __extends$1w(HeaderCellComp, _super);\n    function HeaderCellComp(ctrl) {\n        var _this = _super.call(this, HeaderCellComp.TEMPLATE, ctrl) || this;\n        _this.headerCompVersion = 0;\n        _this.column = ctrl.getColumnGroupChild();\n        _this.pinned = ctrl.getPinned();\n        return _this;\n    }\n    HeaderCellComp.prototype.postConstruct = function () {\n        var _this = this;\n        var eGui = this.getGui();\n        var setAttribute = function (name, value, element) {\n            var actualElement = element ? element : eGui;\n            if (value != null && value != '') {\n                actualElement.setAttribute(name, value);\n            }\n            else {\n                actualElement.removeAttribute(name);\n            }\n        };\n        var compProxy = {\n            setWidth: function (width) { return eGui.style.width = width; },\n            addOrRemoveCssClass: function (cssClassName, on) { return _this.addOrRemoveCssClass(cssClassName, on); },\n            setColId: function (id) { return setAttribute('col-id', id); },\n            setTitle: function (title) { return setAttribute('title', title); },\n            setAriaDescription: function (label) { return setAriaDescription(eGui, label); },\n            setAriaSort: function (sort) { return sort ? setAriaSort(eGui, sort) : removeAriaSort(eGui); },\n            setUserCompDetails: function (compDetails) { return _this.setUserCompDetails(compDetails); },\n            getUserCompInstance: function () { return _this.headerComp; }\n        };\n        this.ctrl.setComp(compProxy, this.getGui(), this.eResize, this.eHeaderCompWrapper);\n        var selectAllGui = this.ctrl.getSelectAllGui();\n        this.eResize.insertAdjacentElement('afterend', selectAllGui);\n    };\n    HeaderCellComp.prototype.destroyHeaderComp = function () {\n        if (this.headerComp) {\n            this.eHeaderCompWrapper.removeChild(this.headerCompGui);\n            this.headerComp = this.destroyBean(this.headerComp);\n            this.headerCompGui = undefined;\n        }\n    };\n    HeaderCellComp.prototype.setUserCompDetails = function (compDetails) {\n        var _this = this;\n        this.headerCompVersion++;\n        var versionCopy = this.headerCompVersion;\n        compDetails.newAgStackInstance().then(function (comp) { return _this.afterCompCreated(versionCopy, comp); });\n    };\n    HeaderCellComp.prototype.afterCompCreated = function (version, headerComp) {\n        if (version != this.headerCompVersion || !this.isAlive()) {\n            this.destroyBean(headerComp);\n            return;\n        }\n        this.destroyHeaderComp();\n        this.headerComp = headerComp;\n        this.headerCompGui = headerComp.getGui();\n        this.eHeaderCompWrapper.appendChild(this.headerCompGui);\n        this.ctrl.setDragSource(this.getGui());\n    };\n    HeaderCellComp.TEMPLATE = \"<div class=\\\"ag-header-cell\\\" role=\\\"columnheader\\\" tabindex=\\\"-1\\\">\\n            <div ref=\\\"eResize\\\" class=\\\"ag-header-cell-resize\\\" role=\\\"presentation\\\"></div>\\n            <div ref=\\\"eHeaderCompWrapper\\\" class=\\\"ag-header-cell-comp-wrapper\\\" role=\\\"presentation\\\"></div>\\n        </div>\";\n    __decorate$1t([\n        RefSelector('eResize')\n    ], HeaderCellComp.prototype, \"eResize\", void 0);\n    __decorate$1t([\n        RefSelector('eHeaderCompWrapper')\n    ], HeaderCellComp.prototype, \"eHeaderCompWrapper\", void 0);\n    __decorate$1t([\n        PostConstruct\n    ], HeaderCellComp.prototype, \"postConstruct\", null);\n    __decorate$1t([\n        PreDestroy\n    ], HeaderCellComp.prototype, \"destroyHeaderComp\", null);\n    return HeaderCellComp;\n}(AbstractHeaderCellComp));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$1v = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$1s = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar HeaderGroupCellComp = /** @class */ (function (_super) {\n    __extends$1v(HeaderGroupCellComp, _super);\n    function HeaderGroupCellComp(ctrl) {\n        return _super.call(this, HeaderGroupCellComp.TEMPLATE, ctrl) || this;\n    }\n    HeaderGroupCellComp.prototype.postConstruct = function () {\n        var _this = this;\n        var eGui = this.getGui();\n        var setAttribute = function (key, value) {\n            return value != undefined ? eGui.setAttribute(key, value) : eGui.removeAttribute(key);\n        };\n        var compProxy = {\n            addOrRemoveCssClass: function (cssClassName, on) { return _this.addOrRemoveCssClass(cssClassName, on); },\n            setResizableDisplayed: function (displayed) { return setDisplayed(_this.eResize, displayed); },\n            setWidth: function (width) { return eGui.style.width = width; },\n            setColId: function (id) { return eGui.setAttribute(\"col-id\", id); },\n            setAriaExpanded: function (expanded) { return setAttribute('aria-expanded', expanded); },\n            setTitle: function (title) { return setAttribute(\"title\", title); },\n            setUserCompDetails: function (details) { return _this.setUserCompDetails(details); }\n        };\n        this.ctrl.setComp(compProxy, eGui, this.eResize);\n    };\n    HeaderGroupCellComp.prototype.setUserCompDetails = function (details) {\n        var _this = this;\n        details.newAgStackInstance().then(function (comp) { return _this.afterHeaderCompCreated(comp); });\n    };\n    HeaderGroupCellComp.prototype.afterHeaderCompCreated = function (headerGroupComp) {\n        var _this = this;\n        var destroyFunc = function () { return _this.destroyBean(headerGroupComp); };\n        if (!this.isAlive()) {\n            destroyFunc();\n            return;\n        }\n        this.getGui().appendChild(headerGroupComp.getGui());\n        this.addDestroyFunc(destroyFunc);\n        this.ctrl.setDragSource(headerGroupComp.getGui());\n    };\n    HeaderGroupCellComp.TEMPLATE = \"<div class=\\\"ag-header-group-cell\\\" role=\\\"columnheader\\\" tabindex=\\\"-1\\\">\\n            <div ref=\\\"eResize\\\" class=\\\"ag-header-cell-resize\\\" role=\\\"presentation\\\"></div>\\n        </div>\";\n    __decorate$1s([\n        Autowired('userComponentFactory')\n    ], HeaderGroupCellComp.prototype, \"userComponentFactory\", void 0);\n    __decorate$1s([\n        RefSelector('eResize')\n    ], HeaderGroupCellComp.prototype, \"eResize\", void 0);\n    __decorate$1s([\n        PostConstruct\n    ], HeaderGroupCellComp.prototype, \"postConstruct\", null);\n    return HeaderGroupCellComp;\n}(AbstractHeaderCellComp));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$1u = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$1r = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar HeaderRowType;\n(function (HeaderRowType) {\n    HeaderRowType[\"COLUMN_GROUP\"] = \"group\";\n    HeaderRowType[\"COLUMN\"] = \"column\";\n    HeaderRowType[\"FLOATING_FILTER\"] = \"filter\";\n})(HeaderRowType || (HeaderRowType = {}));\nvar HeaderRowComp = /** @class */ (function (_super) {\n    __extends$1u(HeaderRowComp, _super);\n    function HeaderRowComp(ctrl) {\n        var _this = _super.call(this) || this;\n        _this.headerComps = {};\n        var extraClass = ctrl.getType() == HeaderRowType.COLUMN_GROUP ? \"ag-header-row-column-group\" :\n            ctrl.getType() == HeaderRowType.FLOATING_FILTER ? \"ag-header-row-column-filter\" : \"ag-header-row-column\";\n        _this.setTemplate(/* html */ \"<div class=\\\"ag-header-row \" + extraClass + \"\\\" role=\\\"row\\\"></div>\");\n        _this.ctrl = ctrl;\n        return _this;\n    }\n    //noinspection JSUnusedLocalSymbols\n    HeaderRowComp.prototype.init = function () {\n        var _this = this;\n        var compProxy = {\n            setTransform: function (transform) { return _this.getGui().style.transform = transform; },\n            setHeight: function (height) { return _this.getGui().style.height = height; },\n            setTop: function (top) { return _this.getGui().style.top = top; },\n            setHeaderCtrls: function (ctrls) { return _this.setHeaderCtrls(ctrls); },\n            setWidth: function (width) { return _this.getGui().style.width = width; },\n            setAriaRowIndex: function (rowIndex) { return setAriaRowIndex(_this.getGui(), rowIndex); }\n        };\n        this.ctrl.setComp(compProxy);\n    };\n    HeaderRowComp.prototype.destroyHeaderCtrls = function () {\n        this.setHeaderCtrls([]);\n    };\n    HeaderRowComp.prototype.setHeaderCtrls = function (ctrls) {\n        var _this = this;\n        if (!this.isAlive()) {\n            return;\n        }\n        var oldComps = this.headerComps;\n        this.headerComps = {};\n        ctrls.forEach(function (ctrl) {\n            var id = ctrl.getInstanceId();\n            var comp = oldComps[id];\n            delete oldComps[id];\n            if (comp == null) {\n                comp = _this.createHeaderComp(ctrl);\n                _this.getGui().appendChild(comp.getGui());\n            }\n            _this.headerComps[id] = comp;\n        });\n        iterateObject(oldComps, function (id, comp) {\n            _this.getGui().removeChild(comp.getGui());\n            _this.destroyBean(comp);\n        });\n        var isEnsureDomOrder = this.gridOptionsService.is('ensureDomOrder');\n        var isPrintLayout = this.gridOptionsService.isDomLayout('print');\n        if (isEnsureDomOrder || isPrintLayout) {\n            var comps = getAllValuesInObject(this.headerComps);\n            // ordering the columns by left position orders them in the order they appear on the screen\n            comps.sort(function (a, b) {\n                var leftA = a.getCtrl().getColumnGroupChild().getLeft();\n                var leftB = b.getCtrl().getColumnGroupChild().getLeft();\n                return leftA - leftB;\n            });\n            var elementsInOrder = comps.map(function (c) { return c.getGui(); });\n            setDomChildOrder(this.getGui(), elementsInOrder);\n        }\n    };\n    HeaderRowComp.prototype.createHeaderComp = function (headerCtrl) {\n        var result;\n        switch (this.ctrl.getType()) {\n            case HeaderRowType.COLUMN_GROUP:\n                result = new HeaderGroupCellComp(headerCtrl);\n                break;\n            case HeaderRowType.FLOATING_FILTER:\n                result = new HeaderFilterCellComp(headerCtrl);\n                break;\n            default:\n                result = new HeaderCellComp(headerCtrl);\n                break;\n        }\n        this.createBean(result);\n        result.setParentComponent(this);\n        return result;\n    };\n    __decorate$1r([\n        PostConstruct\n    ], HeaderRowComp.prototype, \"init\", null);\n    __decorate$1r([\n        PreDestroy\n    ], HeaderRowComp.prototype, \"destroyHeaderCtrls\", null);\n    return HeaderRowComp;\n}(Component));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$1t = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$1q = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar instanceIdSequence$1 = 0;\nvar AbstractHeaderCellCtrl = /** @class */ (function (_super) {\n    __extends$1t(AbstractHeaderCellCtrl, _super);\n    function AbstractHeaderCellCtrl(columnGroupChild, parentRowCtrl) {\n        var _this = _super.call(this) || this;\n        _this.lastFocusEvent = null;\n        _this.columnGroupChild = columnGroupChild;\n        _this.parentRowCtrl = parentRowCtrl;\n        // unique id to this instance, including the column ID to help with debugging in React as it's used in 'key'\n        _this.instanceId = columnGroupChild.getUniqueId() + '-' + instanceIdSequence$1++;\n        return _this;\n    }\n    AbstractHeaderCellCtrl.prototype.shouldStopEventPropagation = function (e) {\n        var _a = this.focusService.getFocusedHeader(), headerRowIndex = _a.headerRowIndex, column = _a.column;\n        return isUserSuppressingHeaderKeyboardEvent(this.gridOptionsService, e, headerRowIndex, column);\n    };\n    AbstractHeaderCellCtrl.prototype.getWrapperHasFocus = function () {\n        var eDocument = this.gridOptionsService.getDocument();\n        var activeEl = eDocument.activeElement;\n        return activeEl === this.eGui;\n    };\n    AbstractHeaderCellCtrl.prototype.setGui = function (eGui) {\n        this.eGui = eGui;\n        this.addDomData();\n    };\n    AbstractHeaderCellCtrl.prototype.handleKeyDown = function (e) {\n        var wrapperHasFocus = this.getWrapperHasFocus();\n        switch (e.key) {\n            case KeyCode.PAGE_DOWN:\n            case KeyCode.PAGE_UP:\n            case KeyCode.PAGE_HOME:\n            case KeyCode.PAGE_END:\n                if (wrapperHasFocus) {\n                    e.preventDefault();\n                }\n        }\n    };\n    AbstractHeaderCellCtrl.prototype.addDomData = function () {\n        var _this = this;\n        var key = AbstractHeaderCellCtrl.DOM_DATA_KEY_HEADER_CTRL;\n        this.gridOptionsService.setDomData(this.eGui, key, this);\n        this.addDestroyFunc(function () { return _this.gridOptionsService.setDomData(_this.eGui, key, null); });\n    };\n    AbstractHeaderCellCtrl.prototype.getGui = function () {\n        return this.eGui;\n    };\n    AbstractHeaderCellCtrl.prototype.focus = function (event) {\n        if (!this.eGui) {\n            return false;\n        }\n        this.lastFocusEvent = event || null;\n        this.eGui.focus();\n        return true;\n    };\n    AbstractHeaderCellCtrl.prototype.getRowIndex = function () {\n        return this.parentRowCtrl.getRowIndex();\n    };\n    AbstractHeaderCellCtrl.prototype.getParentRowCtrl = function () {\n        return this.parentRowCtrl;\n    };\n    AbstractHeaderCellCtrl.prototype.getPinned = function () {\n        return this.parentRowCtrl.getPinned();\n    };\n    AbstractHeaderCellCtrl.prototype.getInstanceId = function () {\n        return this.instanceId;\n    };\n    AbstractHeaderCellCtrl.prototype.getColumnGroupChild = function () {\n        return this.columnGroupChild;\n    };\n    AbstractHeaderCellCtrl.DOM_DATA_KEY_HEADER_CTRL = 'headerCtrl';\n    __decorate$1q([\n        Autowired('focusService')\n    ], AbstractHeaderCellCtrl.prototype, \"focusService\", void 0);\n    __decorate$1q([\n        Autowired('beans')\n    ], AbstractHeaderCellCtrl.prototype, \"beans\", void 0);\n    __decorate$1q([\n        Autowired('userComponentFactory')\n    ], AbstractHeaderCellCtrl.prototype, \"userComponentFactory\", void 0);\n    return AbstractHeaderCellCtrl;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$1s = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$1p = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar SetLeftFeature = /** @class */ (function (_super) {\n    __extends$1s(SetLeftFeature, _super);\n    function SetLeftFeature(columnOrGroup, eCell, beans, colsSpanning) {\n        var _this = _super.call(this) || this;\n        _this.columnOrGroup = columnOrGroup;\n        _this.eCell = eCell;\n        _this.ariaEl = _this.eCell.querySelector('[role=columnheader]') || _this.eCell;\n        _this.colsSpanning = colsSpanning;\n        _this.beans = beans;\n        return _this;\n    }\n    SetLeftFeature.prototype.setColsSpanning = function (colsSpanning) {\n        this.colsSpanning = colsSpanning;\n        this.onLeftChanged();\n    };\n    SetLeftFeature.prototype.getColumnOrGroup = function () {\n        if (this.beans.gridOptionsService.is('enableRtl') && this.colsSpanning) {\n            return last(this.colsSpanning);\n        }\n        return this.columnOrGroup;\n    };\n    SetLeftFeature.prototype.postConstruct = function () {\n        this.addManagedListener(this.columnOrGroup, Column.EVENT_LEFT_CHANGED, this.onLeftChanged.bind(this));\n        this.setLeftFirstTime();\n        // when in print layout, the left position is also dependent on the width of the pinned sections.\n        // so additionally update left if any column width changes.\n        this.addManagedListener(this.eventService, Events.EVENT_DISPLAYED_COLUMNS_WIDTH_CHANGED, this.onLeftChanged.bind(this));\n        // setting left has a dependency on print layout\n        this.addManagedPropertyListener('domLayout', this.onLeftChanged.bind(this));\n    };\n    SetLeftFeature.prototype.setLeftFirstTime = function () {\n        var suppressMoveAnimation = this.beans.gridOptionsService.is('suppressColumnMoveAnimation');\n        var oldLeftExists = exists(this.columnOrGroup.getOldLeft());\n        var animateColumnMove = this.beans.columnAnimationService.isActive() && oldLeftExists && !suppressMoveAnimation;\n        if (animateColumnMove) {\n            this.animateInLeft();\n        }\n        else {\n            this.onLeftChanged();\n        }\n    };\n    SetLeftFeature.prototype.animateInLeft = function () {\n        var _this = this;\n        var colOrGroup = this.getColumnOrGroup();\n        var left = colOrGroup.getLeft();\n        var oldLeft = colOrGroup.getOldLeft();\n        var oldActualLeft = this.modifyLeftForPrintLayout(colOrGroup, oldLeft);\n        var actualLeft = this.modifyLeftForPrintLayout(colOrGroup, left);\n        this.setLeft(oldActualLeft);\n        // we must keep track of the left we want to set to, as this would otherwise lead to a race\n        // condition, if the user changed the left value many times in one VM turn, then we want to make\n        // make sure the actualLeft we set in the timeout below (in the next VM turn) is the correct left\n        // position. eg if user changes column position twice, then setLeft() below executes twice in next\n        // VM turn, but only one (the correct one) should get applied.\n        this.actualLeft = actualLeft;\n        this.beans.columnAnimationService.executeNextVMTurn(function () {\n            // test this left value is the latest one to be applied, and if not, do nothing\n            if (_this.actualLeft === actualLeft) {\n                _this.setLeft(actualLeft);\n            }\n        });\n    };\n    SetLeftFeature.prototype.onLeftChanged = function () {\n        var colOrGroup = this.getColumnOrGroup();\n        var left = colOrGroup.getLeft();\n        this.actualLeft = this.modifyLeftForPrintLayout(colOrGroup, left);\n        this.setLeft(this.actualLeft);\n    };\n    SetLeftFeature.prototype.modifyLeftForPrintLayout = function (colOrGroup, leftPosition) {\n        var printLayout = this.beans.gridOptionsService.isDomLayout('print');\n        if (!printLayout) {\n            return leftPosition;\n        }\n        if (colOrGroup.getPinned() === 'left') {\n            return leftPosition;\n        }\n        var leftWidth = this.beans.columnModel.getDisplayedColumnsLeftWidth();\n        if (colOrGroup.getPinned() === 'right') {\n            var bodyWidth = this.beans.columnModel.getBodyContainerWidth();\n            return leftWidth + bodyWidth + leftPosition;\n        }\n        // is in body\n        return leftWidth + leftPosition;\n    };\n    SetLeftFeature.prototype.setLeft = function (value) {\n        // if the value is null, then that means the column is no longer\n        // displayed. there is logic in the rendering to fade these columns\n        // out, so we don't try and change their left positions.\n        if (exists(value)) {\n            this.eCell.style.left = value + \"px\";\n        }\n        var indexColumn;\n        if (this.columnOrGroup instanceof Column) {\n            indexColumn = this.columnOrGroup;\n        }\n        else {\n            var columnGroup = this.columnOrGroup;\n            var children = columnGroup.getLeafColumns();\n            if (!children.length) {\n                return;\n            }\n            if (children.length > 1) {\n                setAriaColSpan(this.ariaEl, children.length);\n            }\n            indexColumn = children[0];\n        }\n        var index = this.beans.columnModel.getAriaColumnIndex(indexColumn);\n        setAriaColIndex(this.ariaEl, index);\n    };\n    __decorate$1p([\n        PostConstruct\n    ], SetLeftFeature.prototype, \"postConstruct\", null);\n    return SetLeftFeature;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$1r = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$1o = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar HoverFeature = /** @class */ (function (_super) {\n    __extends$1r(HoverFeature, _super);\n    function HoverFeature(columns, element) {\n        var _this = _super.call(this) || this;\n        _this.columns = columns;\n        _this.element = element;\n        return _this;\n    }\n    HoverFeature.prototype.postConstruct = function () {\n        if (this.gridOptionsService.is('columnHoverHighlight')) {\n            this.addMouseHoverListeners();\n        }\n    };\n    HoverFeature.prototype.addMouseHoverListeners = function () {\n        this.addManagedListener(this.element, 'mouseout', this.onMouseOut.bind(this));\n        this.addManagedListener(this.element, 'mouseover', this.onMouseOver.bind(this));\n    };\n    HoverFeature.prototype.onMouseOut = function () {\n        this.columnHoverService.clearMouseOver();\n    };\n    HoverFeature.prototype.onMouseOver = function () {\n        this.columnHoverService.setMouseOver(this.columns);\n    };\n    __decorate$1o([\n        Autowired('columnHoverService')\n    ], HoverFeature.prototype, \"columnHoverService\", void 0);\n    __decorate$1o([\n        PostConstruct\n    ], HoverFeature.prototype, \"postConstruct\", null);\n    return HoverFeature;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$1q = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$1n = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar HeaderFilterCellCtrl = /** @class */ (function (_super) {\n    __extends$1q(HeaderFilterCellCtrl, _super);\n    function HeaderFilterCellCtrl(column, parentRowCtrl) {\n        var _this = _super.call(this, column, parentRowCtrl) || this;\n        _this.column = column;\n        return _this;\n    }\n    HeaderFilterCellCtrl.prototype.setComp = function (comp, eGui, eButtonShowMainFilter, eFloatingFilterBody) {\n        _super.prototype.setGui.call(this, eGui);\n        this.comp = comp;\n        this.eButtonShowMainFilter = eButtonShowMainFilter;\n        this.eFloatingFilterBody = eFloatingFilterBody;\n        var colDef = this.column.getColDef();\n        var filterExists = !!colDef.filter || !!colDef.filterFramework;\n        var floatingFilterExists = !!colDef.floatingFilter;\n        this.active = filterExists && floatingFilterExists;\n        this.setupWidth();\n        this.setupLeft();\n        this.setupHover();\n        this.setupFocus();\n        this.setupUserComp();\n        this.setupSyncWithFilter();\n        this.setupUi();\n        this.addManagedListener(this.eButtonShowMainFilter, 'click', this.showParentFilter.bind(this));\n        if (this.active) {\n            this.addManagedListener(this.column, Column.EVENT_FILTER_CHANGED, this.updateFilterButton.bind(this));\n        }\n    };\n    HeaderFilterCellCtrl.prototype.setupUi = function () {\n        this.comp.setButtonWrapperDisplayed(!this.suppressFilterButton && this.active);\n        if (!this.active) {\n            return;\n        }\n        this.comp.addOrRemoveBodyCssClass('ag-floating-filter-full-body', this.suppressFilterButton);\n        this.comp.addOrRemoveBodyCssClass('ag-floating-filter-body', !this.suppressFilterButton);\n        var eMenuIcon = createIconNoSpan('filter', this.gridOptionsService, this.column);\n        if (eMenuIcon) {\n            this.eButtonShowMainFilter.appendChild(eMenuIcon);\n        }\n    };\n    HeaderFilterCellCtrl.prototype.setupFocus = function () {\n        this.createManagedBean(new ManagedFocusFeature(this.eGui, {\n            shouldStopEventPropagation: this.shouldStopEventPropagation.bind(this),\n            onTabKeyDown: this.onTabKeyDown.bind(this),\n            handleKeyDown: this.handleKeyDown.bind(this),\n            onFocusIn: this.onFocusIn.bind(this)\n        }));\n    };\n    HeaderFilterCellCtrl.prototype.onTabKeyDown = function (e) {\n        var eDocument = this.gridOptionsService.getDocument();\n        var activeEl = eDocument.activeElement;\n        var wrapperHasFocus = activeEl === this.eGui;\n        if (wrapperHasFocus) {\n            return;\n        }\n        var nextFocusableEl = this.focusService.findNextFocusableElement(this.eGui, null, e.shiftKey);\n        if (nextFocusableEl) {\n            this.beans.headerNavigationService.scrollToColumn(this.column);\n            e.preventDefault();\n            nextFocusableEl.focus();\n            return;\n        }\n        var nextFocusableColumn = this.findNextColumnWithFloatingFilter(e.shiftKey);\n        if (!nextFocusableColumn) {\n            return;\n        }\n        if (this.focusService.focusHeaderPosition({\n            headerPosition: {\n                headerRowIndex: this.getParentRowCtrl().getRowIndex(),\n                column: nextFocusableColumn\n            },\n            event: e\n        })) {\n            e.preventDefault();\n        }\n    };\n    HeaderFilterCellCtrl.prototype.findNextColumnWithFloatingFilter = function (backwards) {\n        var columModel = this.beans.columnModel;\n        var nextCol = this.column;\n        do {\n            nextCol = backwards\n                ? columModel.getDisplayedColBefore(nextCol)\n                : columModel.getDisplayedColAfter(nextCol);\n            if (!nextCol) {\n                break;\n            }\n        } while (!nextCol.getColDef().filter || !nextCol.getColDef().floatingFilter);\n        return nextCol;\n    };\n    HeaderFilterCellCtrl.prototype.handleKeyDown = function (e) {\n        _super.prototype.handleKeyDown.call(this, e);\n        var wrapperHasFocus = this.getWrapperHasFocus();\n        switch (e.key) {\n            case KeyCode.UP:\n            case KeyCode.DOWN:\n                if (!wrapperHasFocus) {\n                    e.preventDefault();\n                }\n            case KeyCode.LEFT:\n            case KeyCode.RIGHT:\n                if (wrapperHasFocus) {\n                    return;\n                }\n                e.stopPropagation();\n            case KeyCode.ENTER:\n                if (wrapperHasFocus) {\n                    if (this.focusService.focusInto(this.eGui)) {\n                        e.preventDefault();\n                    }\n                }\n                break;\n            case KeyCode.ESCAPE:\n                if (!wrapperHasFocus) {\n                    this.eGui.focus();\n                }\n        }\n    };\n    HeaderFilterCellCtrl.prototype.onFocusIn = function (e) {\n        var isRelatedWithin = this.eGui.contains(e.relatedTarget);\n        // when the focus is already within the component,\n        // we default to the browser's behavior\n        if (isRelatedWithin) {\n            return;\n        }\n        var notFromHeaderWrapper = !!e.relatedTarget && !e.relatedTarget.classList.contains('ag-floating-filter');\n        var fromWithinHeader = !!e.relatedTarget && isElementChildOfClass(e.relatedTarget, 'ag-floating-filter');\n        if (notFromHeaderWrapper && fromWithinHeader && e.target === this.eGui) {\n            var lastFocusEvent = this.lastFocusEvent;\n            var fromTab = !!(lastFocusEvent && lastFocusEvent.key === KeyCode.TAB);\n            if (lastFocusEvent && fromTab) {\n                var shouldFocusLast = lastFocusEvent.shiftKey;\n                this.focusService.focusInto(this.eGui, shouldFocusLast);\n            }\n        }\n        var rowIndex = this.getRowIndex();\n        this.beans.focusService.setFocusedHeader(rowIndex, this.column);\n    };\n    HeaderFilterCellCtrl.prototype.setupHover = function () {\n        var _this = this;\n        this.createManagedBean(new HoverFeature([this.column], this.eGui));\n        var listener = function () {\n            if (!_this.gridOptionsService.is('columnHoverHighlight')) {\n                return;\n            }\n            var hovered = _this.columnHoverService.isHovered(_this.column);\n            _this.comp.addOrRemoveCssClass('ag-column-hover', hovered);\n        };\n        this.addManagedListener(this.eventService, Events.EVENT_COLUMN_HOVER_CHANGED, listener);\n        listener();\n    };\n    HeaderFilterCellCtrl.prototype.setupLeft = function () {\n        var setLeftFeature = new SetLeftFeature(this.column, this.eGui, this.beans);\n        this.createManagedBean(setLeftFeature);\n    };\n    HeaderFilterCellCtrl.prototype.setupUserComp = function () {\n        var _this = this;\n        if (!this.active) {\n            return;\n        }\n        var colDef = this.column.getColDef();\n        // this is unusual - we need a params value OUTSIDE the component the params are for.\n        // the params are for the floating filter component, but this property is actually for the wrapper.\n        this.suppressFilterButton = colDef.floatingFilterComponentParams ? !!colDef.floatingFilterComponentParams.suppressFilterButton : false;\n        var compDetails = this.filterManager.getFloatingFilterCompDetails(this.column, function () { return _this.showParentFilter(); });\n        if (compDetails) {\n            this.comp.setCompDetails(compDetails);\n        }\n    };\n    HeaderFilterCellCtrl.prototype.showParentFilter = function () {\n        var eventSource = this.suppressFilterButton ? this.eFloatingFilterBody : this.eButtonShowMainFilter;\n        this.menuFactory.showMenuAfterButtonClick(this.column, eventSource, 'floatingFilter', 'filterMenuTab', ['filterMenuTab']);\n    };\n    HeaderFilterCellCtrl.prototype.setupSyncWithFilter = function () {\n        var _this = this;\n        if (!this.active) {\n            return;\n        }\n        var syncWithFilter = function (filterChangedEvent) {\n            var compPromise = _this.comp.getFloatingFilterComp();\n            if (!compPromise) {\n                return;\n            }\n            var parentModel = _this.filterManager.getCurrentFloatingFilterParentModel(_this.column);\n            compPromise.then(function (comp) {\n                if (comp) {\n                    comp.onParentModelChanged(parentModel, filterChangedEvent);\n                }\n            });\n        };\n        this.addManagedListener(this.column, Column.EVENT_FILTER_CHANGED, syncWithFilter);\n        if (this.filterManager.isFilterActive(this.column)) {\n            syncWithFilter(null);\n        }\n    };\n    HeaderFilterCellCtrl.prototype.setupWidth = function () {\n        var _this = this;\n        var listener = function () {\n            var width = _this.column.getActualWidth() + \"px\";\n            _this.comp.setWidth(width);\n        };\n        this.addManagedListener(this.column, Column.EVENT_WIDTH_CHANGED, listener);\n        listener();\n    };\n    HeaderFilterCellCtrl.prototype.updateFilterButton = function () {\n        if (!this.suppressFilterButton && this.comp) {\n            this.comp.setButtonWrapperDisplayed(this.filterManager.isFilterAllowed(this.column));\n        }\n    };\n    __decorate$1n([\n        Autowired('filterManager')\n    ], HeaderFilterCellCtrl.prototype, \"filterManager\", void 0);\n    __decorate$1n([\n        Autowired('columnHoverService')\n    ], HeaderFilterCellCtrl.prototype, \"columnHoverService\", void 0);\n    __decorate$1n([\n        Autowired('menuFactory')\n    ], HeaderFilterCellCtrl.prototype, \"menuFactory\", void 0);\n    return HeaderFilterCellCtrl;\n}(AbstractHeaderCellCtrl));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$1p = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$1m = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar ResizeFeature = /** @class */ (function (_super) {\n    __extends$1p(ResizeFeature, _super);\n    function ResizeFeature(pinned, column, eResize, comp, ctrl) {\n        var _this = _super.call(this) || this;\n        _this.pinned = pinned;\n        _this.column = column;\n        _this.eResize = eResize;\n        _this.comp = comp;\n        _this.ctrl = ctrl;\n        return _this;\n    }\n    ResizeFeature.prototype.postConstruct = function () {\n        var _this = this;\n        var colDef = this.column.getColDef();\n        var destroyResizeFuncs = [];\n        var canResize;\n        var canAutosize;\n        var addResize = function () {\n            setDisplayed(_this.eResize, canResize);\n            if (!canResize) {\n                return;\n            }\n            var finishedWithResizeFunc = _this.horizontalResizeService.addResizeBar({\n                eResizeBar: _this.eResize,\n                onResizeStart: _this.onResizeStart.bind(_this),\n                onResizing: _this.onResizing.bind(_this, false),\n                onResizeEnd: _this.onResizing.bind(_this, true)\n            });\n            destroyResizeFuncs.push(finishedWithResizeFunc);\n            if (canAutosize) {\n                var skipHeaderOnAutoSize_1 = _this.gridOptionsService.is('skipHeaderOnAutoSize');\n                var autoSizeColListener_1 = function () {\n                    _this.columnModel.autoSizeColumn(_this.column, skipHeaderOnAutoSize_1, \"uiColumnResized\");\n                };\n                _this.eResize.addEventListener('dblclick', autoSizeColListener_1);\n                var touchListener_1 = new TouchListener(_this.eResize);\n                touchListener_1.addEventListener(TouchListener.EVENT_DOUBLE_TAP, autoSizeColListener_1);\n                _this.addDestroyFunc(function () {\n                    _this.eResize.removeEventListener('dblclick', autoSizeColListener_1);\n                    touchListener_1.removeEventListener(TouchListener.EVENT_DOUBLE_TAP, autoSizeColListener_1);\n                    touchListener_1.destroy();\n                });\n            }\n        };\n        var removeResize = function () {\n            destroyResizeFuncs.forEach(function (f) { return f(); });\n            destroyResizeFuncs.length = 0;\n        };\n        var refresh = function () {\n            var resize = _this.column.isResizable();\n            var autoSize = !_this.gridOptionsService.is('suppressAutoSize') && !colDef.suppressAutoSize;\n            var propertyChange = resize !== canResize || autoSize !== canAutosize;\n            if (propertyChange) {\n                canResize = resize;\n                canAutosize = autoSize;\n                removeResize();\n                addResize();\n            }\n        };\n        refresh();\n        this.addDestroyFunc(removeResize);\n        this.ctrl.addRefreshFunction(refresh);\n    };\n    ResizeFeature.prototype.onResizing = function (finished, resizeAmount) {\n        var resizeAmountNormalised = this.normaliseResizeAmount(resizeAmount);\n        var columnWidths = [{ key: this.column, newWidth: this.resizeStartWidth + resizeAmountNormalised }];\n        this.columnModel.setColumnWidths(columnWidths, this.resizeWithShiftKey, finished, \"uiColumnResized\");\n        if (finished) {\n            this.comp.addOrRemoveCssClass('ag-column-resizing', false);\n        }\n    };\n    ResizeFeature.prototype.onResizeStart = function (shiftKey) {\n        this.resizeStartWidth = this.column.getActualWidth();\n        this.resizeWithShiftKey = shiftKey;\n        this.comp.addOrRemoveCssClass('ag-column-resizing', true);\n    };\n    // optionally inverts the drag, depending on pinned and RTL\n    // note - this method is duplicated in RenderedHeaderGroupCell - should refactor out?\n    ResizeFeature.prototype.normaliseResizeAmount = function (dragChange) {\n        var result = dragChange;\n        var notPinningLeft = this.pinned !== 'left';\n        var pinningRight = this.pinned === 'right';\n        if (this.gridOptionsService.is('enableRtl')) {\n            // for RTL, dragging left makes the col bigger, except when pinning left\n            if (notPinningLeft) {\n                result *= -1;\n            }\n        }\n        else {\n            // for LTR (ie normal), dragging left makes the col smaller, except when pinning right\n            if (pinningRight) {\n                result *= -1;\n            }\n        }\n        return result;\n    };\n    __decorate$1m([\n        Autowired('horizontalResizeService')\n    ], ResizeFeature.prototype, \"horizontalResizeService\", void 0);\n    __decorate$1m([\n        Autowired('columnModel')\n    ], ResizeFeature.prototype, \"columnModel\", void 0);\n    __decorate$1m([\n        PostConstruct\n    ], ResizeFeature.prototype, \"postConstruct\", null);\n    return ResizeFeature;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$1o = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$1l = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar SelectAllFeature = /** @class */ (function (_super) {\n    __extends$1o(SelectAllFeature, _super);\n    function SelectAllFeature(column) {\n        var _this = _super.call(this) || this;\n        _this.cbSelectAllVisible = false;\n        _this.processingEventFromCheckbox = false;\n        _this.column = column;\n        var colDef = column.getColDef();\n        _this.filteredOnly = !!(colDef === null || colDef === void 0 ? void 0 : colDef.headerCheckboxSelectionFilteredOnly);\n        _this.currentPageOnly = !!(colDef === null || colDef === void 0 ? void 0 : colDef.headerCheckboxSelectionCurrentPageOnly);\n        return _this;\n    }\n    SelectAllFeature.prototype.onSpaceKeyPressed = function (e) {\n        var checkbox = this.cbSelectAll;\n        var eDocument = this.gridOptionsService.getDocument();\n        if (checkbox.isDisplayed() && !checkbox.getGui().contains(eDocument.activeElement)) {\n            e.preventDefault();\n            checkbox.setValue(!checkbox.getValue());\n        }\n    };\n    SelectAllFeature.prototype.getCheckboxGui = function () {\n        return this.cbSelectAll.getGui();\n    };\n    SelectAllFeature.prototype.setComp = function (ctrl) {\n        this.headerCellCtrl = ctrl;\n        this.cbSelectAll = this.createManagedBean(new AgCheckbox());\n        this.cbSelectAll.addCssClass('ag-header-select-all');\n        setAriaRole(this.cbSelectAll.getGui(), 'presentation');\n        this.showOrHideSelectAll();\n        this.addManagedListener(this.eventService, Events.EVENT_NEW_COLUMNS_LOADED, this.showOrHideSelectAll.bind(this));\n        this.addManagedListener(this.eventService, Events.EVENT_DISPLAYED_COLUMNS_CHANGED, this.showOrHideSelectAll.bind(this));\n        this.addManagedListener(this.eventService, Events.EVENT_SELECTION_CHANGED, this.onSelectionChanged.bind(this));\n        this.addManagedListener(this.eventService, Events.EVENT_PAGINATION_CHANGED, this.onSelectionChanged.bind(this));\n        this.addManagedListener(this.eventService, Events.EVENT_MODEL_UPDATED, this.onModelChanged.bind(this));\n        this.addManagedListener(this.cbSelectAll, AgCheckbox.EVENT_CHANGED, this.onCbSelectAll.bind(this));\n        setAriaHidden(this.cbSelectAll.getGui(), true);\n        this.cbSelectAll.getInputElement().setAttribute('tabindex', '-1');\n        this.refreshSelectAllLabel();\n    };\n    SelectAllFeature.prototype.showOrHideSelectAll = function () {\n        this.cbSelectAllVisible = this.isCheckboxSelection();\n        this.cbSelectAll.setDisplayed(this.cbSelectAllVisible, { skipAriaHidden: true });\n        if (this.cbSelectAllVisible) {\n            // in case user is trying this feature with the wrong model type\n            this.checkRightRowModelType('selectAllCheckbox');\n            // make sure checkbox is showing the right state\n            this.updateStateOfCheckbox();\n        }\n        this.refreshSelectAllLabel();\n    };\n    SelectAllFeature.prototype.onModelChanged = function () {\n        if (!this.cbSelectAllVisible) {\n            return;\n        }\n        this.updateStateOfCheckbox();\n    };\n    SelectAllFeature.prototype.onSelectionChanged = function () {\n        if (!this.cbSelectAllVisible) {\n            return;\n        }\n        this.updateStateOfCheckbox();\n    };\n    SelectAllFeature.prototype.updateStateOfCheckbox = function () {\n        if (this.processingEventFromCheckbox) {\n            return;\n        }\n        this.processingEventFromCheckbox = true;\n        var allSelected = this.selectionService.getSelectAllState(this.filteredOnly, this.currentPageOnly);\n        this.cbSelectAll.setValue(allSelected);\n        this.refreshSelectAllLabel();\n        this.processingEventFromCheckbox = false;\n    };\n    SelectAllFeature.prototype.refreshSelectAllLabel = function () {\n        if (!this.cbSelectAllVisible) {\n            this.headerCellCtrl.setAriaDescriptionProperty('selectAll', null);\n            this.cbSelectAll.setInputAriaLabel(null);\n        }\n        else {\n            var translate = this.localeService.getLocaleTextFunc();\n            var checked = this.cbSelectAll.getValue();\n            var ariaStatus = checked ? translate('ariaChecked', 'checked') : translate('ariaUnchecked', 'unchecked');\n            var ariaLabel = translate('ariaRowSelectAll', 'Press Space to toggle all rows selection');\n            this.headerCellCtrl.setAriaDescriptionProperty('selectAll', ariaLabel + \" (\" + ariaStatus + \")\");\n            this.cbSelectAll.setInputAriaLabel(ariaLabel + \" (\" + ariaStatus + \")\");\n        }\n        this.headerCellCtrl.refreshAriaDescription();\n    };\n    SelectAllFeature.prototype.checkRightRowModelType = function (feature) {\n        var rowModelType = this.rowModel.getType();\n        var rowModelMatches = rowModelType === 'clientSide' || rowModelType === 'serverSide';\n        if (!rowModelMatches) {\n            console.warn(\"AG Grid: \" + feature + \" is only available if using 'clientSide' or 'serverSide' rowModelType, you are using \" + rowModelType + \".\");\n            return false;\n        }\n        return true;\n    };\n    SelectAllFeature.prototype.onCbSelectAll = function () {\n        if (this.processingEventFromCheckbox) {\n            return;\n        }\n        if (!this.cbSelectAllVisible) {\n            return;\n        }\n        var value = this.cbSelectAll.getValue();\n        var source = 'uiSelectAll';\n        if (this.currentPageOnly)\n            source = 'uiSelectAllCurrentPage';\n        else if (this.filteredOnly)\n            source = 'uiSelectAllFiltered';\n        var params = {\n            source: source,\n            justFiltered: this.filteredOnly,\n            justCurrentPage: this.currentPageOnly,\n        };\n        if (value) {\n            this.selectionService.selectAllRowNodes(params);\n        }\n        else {\n            this.selectionService.deselectAllRowNodes(params);\n        }\n    };\n    SelectAllFeature.prototype.isCheckboxSelection = function () {\n        var result = this.column.getColDef().headerCheckboxSelection;\n        if (typeof result === 'function') {\n            var func = result;\n            var params = {\n                column: this.column,\n                colDef: this.column.getColDef(),\n                columnApi: this.columnApi,\n                api: this.gridApi,\n                context: this.gridOptionsService.context\n            };\n            result = func(params);\n        }\n        if (result) {\n            return this.checkRightRowModelType('headerCheckboxSelection');\n        }\n        return false;\n    };\n    __decorate$1l([\n        Autowired('gridApi')\n    ], SelectAllFeature.prototype, \"gridApi\", void 0);\n    __decorate$1l([\n        Autowired('columnApi')\n    ], SelectAllFeature.prototype, \"columnApi\", void 0);\n    __decorate$1l([\n        Autowired('rowModel')\n    ], SelectAllFeature.prototype, \"rowModel\", void 0);\n    __decorate$1l([\n        Autowired('selectionService')\n    ], SelectAllFeature.prototype, \"selectionService\", void 0);\n    return SelectAllFeature;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$1n = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$1k = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar HeaderCellCtrl = /** @class */ (function (_super) {\n    __extends$1n(HeaderCellCtrl, _super);\n    function HeaderCellCtrl(column, parentRowCtrl) {\n        var _this = _super.call(this, column, parentRowCtrl) || this;\n        _this.refreshFunctions = [];\n        _this.userHeaderClasses = new Set();\n        _this.ariaDescriptionProperties = new Map();\n        _this.column = column;\n        return _this;\n    }\n    HeaderCellCtrl.prototype.setComp = function (comp, eGui, eResize, eHeaderCompWrapper) {\n        var _this = this;\n        _super.prototype.setGui.call(this, eGui);\n        this.comp = comp;\n        this.updateState();\n        this.setupWidth();\n        this.setupMovingCss();\n        this.setupMenuClass();\n        this.setupSortableClass();\n        this.setupWrapTextClass();\n        this.refreshSpanHeaderHeight();\n        this.setupAutoHeight(eHeaderCompWrapper);\n        this.addColumnHoverListener();\n        this.setupFilterCss();\n        this.setupColId();\n        this.setupClassesFromColDef();\n        this.setupTooltip();\n        this.addActiveHeaderMouseListeners();\n        this.setupSelectAll();\n        this.setupUserComp();\n        this.refreshAria();\n        this.createManagedBean(new ResizeFeature(this.getPinned(), this.column, eResize, comp, this));\n        this.createManagedBean(new HoverFeature([this.column], eGui));\n        this.createManagedBean(new SetLeftFeature(this.column, eGui, this.beans));\n        this.createManagedBean(new ManagedFocusFeature(eGui, {\n            shouldStopEventPropagation: function (e) { return _this.shouldStopEventPropagation(e); },\n            onTabKeyDown: function () { return null; },\n            handleKeyDown: this.handleKeyDown.bind(this),\n            onFocusIn: this.onFocusIn.bind(this),\n            onFocusOut: this.onFocusOut.bind(this)\n        }));\n        this.addManagedListener(this.column, Column.EVENT_COL_DEF_CHANGED, this.onColDefChanged.bind(this));\n        this.addManagedListener(this.eventService, Events.EVENT_COLUMN_VALUE_CHANGED, this.onColumnValueChanged.bind(this));\n        this.addManagedListener(this.eventService, Events.EVENT_COLUMN_ROW_GROUP_CHANGED, this.onColumnRowGroupChanged.bind(this));\n        this.addManagedListener(this.eventService, Events.EVENT_COLUMN_PIVOT_CHANGED, this.onColumnPivotChanged.bind(this));\n        this.addManagedListener(this.eventService, Events.EVENT_HEADER_HEIGHT_CHANGED, this.onHeaderHeightChanged.bind(this));\n    };\n    HeaderCellCtrl.prototype.setupUserComp = function () {\n        var compDetails = this.lookupUserCompDetails();\n        this.setCompDetails(compDetails);\n    };\n    HeaderCellCtrl.prototype.setCompDetails = function (compDetails) {\n        this.userCompDetails = compDetails;\n        this.comp.setUserCompDetails(compDetails);\n    };\n    HeaderCellCtrl.prototype.lookupUserCompDetails = function () {\n        var params = this.createParams();\n        var colDef = this.column.getColDef();\n        return this.userComponentFactory.getHeaderCompDetails(colDef, params);\n    };\n    HeaderCellCtrl.prototype.createParams = function () {\n        var _this = this;\n        var colDef = this.column.getColDef();\n        var params = {\n            column: this.column,\n            displayName: this.displayName,\n            enableSorting: colDef.sortable,\n            enableMenu: this.menuEnabled,\n            showColumnMenu: function (source) {\n                _this.gridApi.showColumnMenuAfterButtonClick(_this.column, source);\n            },\n            progressSort: function (multiSort) {\n                _this.sortController.progressSort(_this.column, !!multiSort, \"uiColumnSorted\");\n            },\n            setSort: function (sort, multiSort) {\n                _this.sortController.setSortForColumn(_this.column, sort, !!multiSort, \"uiColumnSorted\");\n            },\n            api: this.gridApi,\n            columnApi: this.columnApi,\n            context: this.gridOptionsService.context,\n            eGridHeader: this.getGui()\n        };\n        return params;\n    };\n    HeaderCellCtrl.prototype.setupSelectAll = function () {\n        this.selectAllFeature = this.createManagedBean(new SelectAllFeature(this.column));\n        this.selectAllFeature.setComp(this);\n    };\n    HeaderCellCtrl.prototype.getSelectAllGui = function () {\n        return this.selectAllFeature.getCheckboxGui();\n    };\n    HeaderCellCtrl.prototype.handleKeyDown = function (e) {\n        _super.prototype.handleKeyDown.call(this, e);\n        if (e.key === KeyCode.SPACE) {\n            this.selectAllFeature.onSpaceKeyPressed(e);\n        }\n        if (e.key === KeyCode.ENTER) {\n            this.onEnterKeyPressed(e);\n        }\n    };\n    HeaderCellCtrl.prototype.onEnterKeyPressed = function (e) {\n        /// THIS IS BAD - we are assuming the header is not a user provided comp\n        var headerComp = this.comp.getUserCompInstance();\n        if (!headerComp) {\n            return;\n        }\n        if (e.ctrlKey || e.metaKey) {\n            if (this.menuEnabled && headerComp.showMenu) {\n                e.preventDefault();\n                headerComp.showMenu();\n            }\n        }\n        else if (this.sortable) {\n            var multiSort = e.shiftKey;\n            this.sortController.progressSort(this.column, multiSort, \"uiColumnSorted\");\n        }\n    };\n    HeaderCellCtrl.prototype.isMenuEnabled = function () {\n        return this.menuEnabled;\n    };\n    HeaderCellCtrl.prototype.onFocusIn = function (e) {\n        if (!this.getGui().contains(e.relatedTarget)) {\n            var rowIndex = this.getRowIndex();\n            this.focusService.setFocusedHeader(rowIndex, this.column);\n        }\n        this.setActiveHeader(true);\n    };\n    HeaderCellCtrl.prototype.onFocusOut = function (e) {\n        if (this.getGui().contains(e.relatedTarget)) {\n            return;\n        }\n        this.setActiveHeader(false);\n    };\n    HeaderCellCtrl.prototype.setupTooltip = function () {\n        var _this = this;\n        var tooltipCtrl = {\n            getColumn: function () { return _this.column; },\n            getColDef: function () { return _this.column.getColDef(); },\n            getGui: function () { return _this.eGui; },\n            getLocation: function () { return 'header'; },\n            getTooltipValue: function () {\n                var res = _this.column.getColDef().headerTooltip;\n                return res;\n            },\n        };\n        var tooltipFeature = this.createManagedBean(new TooltipFeature(tooltipCtrl, this.beans));\n        tooltipFeature.setComp(this.comp);\n        this.refreshFunctions.push(function () { return tooltipFeature.refreshToolTip(); });\n    };\n    HeaderCellCtrl.prototype.setupClassesFromColDef = function () {\n        var _this = this;\n        var refreshHeaderClasses = function () {\n            var colDef = _this.column.getColDef();\n            var classes = CssClassApplier.getHeaderClassesFromColDef(colDef, _this.gridOptionsService, _this.column, null);\n            var oldClasses = _this.userHeaderClasses;\n            _this.userHeaderClasses = new Set(classes);\n            classes.forEach(function (c) {\n                if (oldClasses.has(c)) {\n                    // class already added, no need to apply it, but remove from old set\n                    oldClasses.delete(c);\n                }\n                else {\n                    // class new since last time, so apply it\n                    _this.comp.addOrRemoveCssClass(c, true);\n                }\n            });\n            // now old set only has classes that were applied last time, but not this time, so remove them\n            oldClasses.forEach(function (c) { return _this.comp.addOrRemoveCssClass(c, false); });\n        };\n        this.refreshFunctions.push(refreshHeaderClasses);\n        refreshHeaderClasses();\n    };\n    HeaderCellCtrl.prototype.setDragSource = function (eSource) {\n        var _this = this;\n        this.dragSourceElement = eSource;\n        this.removeDragSource();\n        if (!eSource) {\n            return;\n        }\n        if (!this.draggable) {\n            return;\n        }\n        var hideColumnOnExit = !this.gridOptionsService.is('suppressDragLeaveHidesColumns');\n        this.moveDragSource = {\n            type: DragSourceType.HeaderCell,\n            eElement: eSource,\n            defaultIconName: hideColumnOnExit ? DragAndDropService.ICON_HIDE : DragAndDropService.ICON_NOT_ALLOWED,\n            getDragItem: function () { return _this.createDragItem(); },\n            dragItemName: this.displayName,\n            onDragStarted: function () { return _this.column.setMoving(true, \"uiColumnMoved\"); },\n            onDragStopped: function () { return _this.column.setMoving(false, \"uiColumnMoved\"); },\n            onGridEnter: function (dragItem) {\n                var _a;\n                if (hideColumnOnExit) {\n                    var unlockedColumns = ((_a = dragItem === null || dragItem === void 0 ? void 0 : dragItem.columns) === null || _a === void 0 ? void 0 : _a.filter(function (col) { return !col.getColDef().lockVisible; })) || [];\n                    _this.columnModel.setColumnsVisible(unlockedColumns, true, \"uiColumnMoved\");\n                }\n            },\n            onGridExit: function (dragItem) {\n                var _a;\n                if (hideColumnOnExit) {\n                    var unlockedColumns = ((_a = dragItem === null || dragItem === void 0 ? void 0 : dragItem.columns) === null || _a === void 0 ? void 0 : _a.filter(function (col) { return !col.getColDef().lockVisible; })) || [];\n                    _this.columnModel.setColumnsVisible(unlockedColumns, false, \"uiColumnMoved\");\n                }\n            },\n        };\n        this.dragAndDropService.addDragSource(this.moveDragSource, true);\n    };\n    HeaderCellCtrl.prototype.createDragItem = function () {\n        var visibleState = {};\n        visibleState[this.column.getId()] = this.column.isVisible();\n        return {\n            columns: [this.column],\n            visibleState: visibleState\n        };\n    };\n    HeaderCellCtrl.prototype.removeDragSource = function () {\n        if (this.moveDragSource) {\n            this.dragAndDropService.removeDragSource(this.moveDragSource);\n            this.moveDragSource = undefined;\n        }\n    };\n    HeaderCellCtrl.prototype.onColDefChanged = function () {\n        this.refresh();\n    };\n    HeaderCellCtrl.prototype.updateState = function () {\n        var colDef = this.column.getColDef();\n        this.menuEnabled = this.menuFactory.isMenuEnabled(this.column) && !colDef.suppressMenu;\n        this.sortable = colDef.sortable;\n        this.displayName = this.calculateDisplayName();\n        this.draggable = this.workOutDraggable();\n    };\n    HeaderCellCtrl.prototype.addRefreshFunction = function (func) {\n        this.refreshFunctions.push(func);\n    };\n    HeaderCellCtrl.prototype.refresh = function () {\n        this.updateState();\n        this.refreshHeaderComp();\n        this.refreshAria();\n        this.refreshFunctions.forEach(function (f) { return f(); });\n    };\n    HeaderCellCtrl.prototype.refreshHeaderComp = function () {\n        var newCompDetails = this.lookupUserCompDetails();\n        var compInstance = this.comp.getUserCompInstance();\n        // only try refresh if old comp exists adn it is the correct type\n        var attemptRefresh = compInstance != null && this.userCompDetails.componentClass == newCompDetails.componentClass;\n        var headerCompRefreshed = attemptRefresh ? this.attemptHeaderCompRefresh(newCompDetails.params) : false;\n        if (headerCompRefreshed) {\n            // we do this as a refresh happens after colDefs change, and it's possible the column has had it's\n            // draggable property toggled. no need to call this if not refreshing, as setDragSource is done\n            // as part of appendHeaderComp\n            this.setDragSource(this.dragSourceElement);\n        }\n        else {\n            this.setCompDetails(newCompDetails);\n        }\n    };\n    HeaderCellCtrl.prototype.attemptHeaderCompRefresh = function (params) {\n        var headerComp = this.comp.getUserCompInstance();\n        if (!headerComp) {\n            return false;\n        }\n        // if no refresh method, then we want to replace the headerComp\n        if (!headerComp.refresh) {\n            return false;\n        }\n        var res = headerComp.refresh(params);\n        return res;\n    };\n    HeaderCellCtrl.prototype.calculateDisplayName = function () {\n        return this.columnModel.getDisplayNameForColumn(this.column, 'header', true);\n    };\n    HeaderCellCtrl.prototype.checkDisplayName = function () {\n        // display name can change if aggFunc different, eg sum(Gold) is now max(Gold)\n        if (this.displayName !== this.calculateDisplayName()) {\n            this.refresh();\n        }\n    };\n    HeaderCellCtrl.prototype.workOutDraggable = function () {\n        var colDef = this.column.getColDef();\n        var isSuppressMovableColumns = this.gridOptionsService.is('suppressMovableColumns');\n        var colCanMove = !isSuppressMovableColumns && !colDef.suppressMovable && !colDef.lockPosition;\n        // we should still be allowed drag the column, even if it can't be moved, if the column\n        // can be dragged to a rowGroup or pivot drop zone\n        return !!colCanMove || !!colDef.enableRowGroup || !!colDef.enablePivot;\n    };\n    HeaderCellCtrl.prototype.onColumnRowGroupChanged = function () {\n        this.checkDisplayName();\n    };\n    HeaderCellCtrl.prototype.onColumnPivotChanged = function () {\n        this.checkDisplayName();\n    };\n    HeaderCellCtrl.prototype.onColumnValueChanged = function () {\n        this.checkDisplayName();\n    };\n    HeaderCellCtrl.prototype.setupWidth = function () {\n        var _this = this;\n        var listener = function () {\n            var columnWidth = _this.column.getActualWidth();\n            _this.comp.setWidth(columnWidth + \"px\");\n        };\n        this.addManagedListener(this.column, Column.EVENT_WIDTH_CHANGED, listener);\n        listener();\n    };\n    HeaderCellCtrl.prototype.setupMovingCss = function () {\n        var _this = this;\n        var listener = function () {\n            // this is what makes the header go dark when it is been moved (gives impression to\n            // user that the column was picked up).\n            _this.comp.addOrRemoveCssClass('ag-header-cell-moving', _this.column.isMoving());\n        };\n        this.addManagedListener(this.column, Column.EVENT_MOVING_CHANGED, listener);\n        listener();\n    };\n    HeaderCellCtrl.prototype.setupMenuClass = function () {\n        var _this = this;\n        var listener = function () {\n            _this.comp.addOrRemoveCssClass('ag-column-menu-visible', _this.column.isMenuVisible());\n        };\n        this.addManagedListener(this.column, Column.EVENT_MENU_VISIBLE_CHANGED, listener);\n        listener();\n    };\n    HeaderCellCtrl.prototype.setupSortableClass = function () {\n        var _this = this;\n        var updateSortableCssClass = function () {\n            _this.comp.addOrRemoveCssClass('ag-header-cell-sortable', !!_this.sortable);\n        };\n        updateSortableCssClass();\n        this.addRefreshFunction(updateSortableCssClass);\n        this.addManagedListener(this.eventService, Column.EVENT_SORT_CHANGED, this.refreshAriaSort.bind(this));\n    };\n    HeaderCellCtrl.prototype.setupWrapTextClass = function () {\n        var _this = this;\n        var listener = function () {\n            var wrapText = !!_this.column.getColDef().wrapHeaderText;\n            _this.comp.addOrRemoveCssClass('ag-header-cell-wrap-text', wrapText);\n        };\n        listener();\n        this.addRefreshFunction(listener);\n    };\n    HeaderCellCtrl.prototype.onHeaderHeightChanged = function () {\n        this.refreshSpanHeaderHeight();\n    };\n    HeaderCellCtrl.prototype.refreshSpanHeaderHeight = function () {\n        var _a = this, eGui = _a.eGui, column = _a.column, comp = _a.comp, columnModel = _a.columnModel, gridOptionsService = _a.gridOptionsService;\n        if (!column.isSpanHeaderHeight()) {\n            return;\n        }\n        var _b = this.getColumnGroupPaddingInfo(), numberOfParents = _b.numberOfParents, isSpanningTotal = _b.isSpanningTotal;\n        comp.addOrRemoveCssClass('ag-header-span-height', numberOfParents > 0);\n        if (numberOfParents === 0) {\n            return;\n        }\n        comp.addOrRemoveCssClass('ag-header-span-total', isSpanningTotal);\n        var pivotMode = gridOptionsService.is('pivotMode');\n        var groupHeaderHeight = pivotMode\n            ? columnModel.getPivotGroupHeaderHeight()\n            : columnModel.getGroupHeaderHeight();\n        var headerHeight = columnModel.getColumnHeaderRowHeight();\n        var extraHeight = numberOfParents * groupHeaderHeight;\n        eGui.style.setProperty('top', -extraHeight + \"px\");\n        eGui.style.setProperty('height', headerHeight + extraHeight + \"px\");\n    };\n    HeaderCellCtrl.prototype.getColumnGroupPaddingInfo = function () {\n        var parent = this.column.getParent();\n        if (!parent || !parent.isPadding()) {\n            return { numberOfParents: 0, isSpanningTotal: false };\n        }\n        var numberOfParents = parent.getPaddingLevel() + 1;\n        var isSpanningTotal = true;\n        while (parent) {\n            if (!parent.isPadding()) {\n                isSpanningTotal = false;\n                break;\n            }\n            parent = parent.getParent();\n        }\n        return { numberOfParents: numberOfParents, isSpanningTotal: isSpanningTotal };\n    };\n    HeaderCellCtrl.prototype.setupAutoHeight = function (wrapperElement) {\n        var _this = this;\n        var measureHeight = function (timesCalled) {\n            if (!_this.isAlive()) {\n                return;\n            }\n            var _a = getElementSize(_this.getGui()), paddingTop = _a.paddingTop, paddingBottom = _a.paddingBottom, borderBottomWidth = _a.borderBottomWidth, borderTopWidth = _a.borderTopWidth;\n            var extraHeight = paddingTop + paddingBottom + borderBottomWidth + borderTopWidth;\n            var wrapperHeight = wrapperElement.offsetHeight;\n            var autoHeight = wrapperHeight + extraHeight;\n            if (timesCalled < 5) {\n                // if not in doc yet, means framework not yet inserted, so wait for next VM turn,\n                // maybe it will be ready next VM turn\n                var doc = _this.beans.gridOptionsService.getDocument();\n                var notYetInDom = !doc || !doc.contains(wrapperElement);\n                // this happens in React, where React hasn't put any content in. we say 'possibly'\n                // as a) may not be React and b) the cell could be empty anyway\n                var possiblyNoContentYet = autoHeight == 0;\n                if (notYetInDom || possiblyNoContentYet) {\n                    _this.beans.frameworkOverrides.setTimeout(function () { return measureHeight(timesCalled + 1); }, 0);\n                    return;\n                }\n            }\n            _this.columnModel.setColumnHeaderHeight(_this.column, autoHeight);\n        };\n        var isMeasuring = false;\n        var stopResizeObserver;\n        var checkMeasuring = function () {\n            var isSpanHeaderHeight = _this.column.isSpanHeaderHeight();\n            var newValue = _this.column.isAutoHeaderHeight();\n            if (isSpanHeaderHeight) {\n                stopMeasuring();\n                if (newValue) {\n                    var message_1 = \"AG Grid: The properties `spanHeaderHeight` and `autoHeaderHeight` cannot be used together in the same column.\";\n                    doOnce(function () { return console.warn(message_1); }, 'HeaderCellCtrl.spanHeaderHeightAndAutoHeaderHeight');\n                }\n                return;\n            }\n            if (newValue && !isMeasuring) {\n                startMeasuring();\n            }\n            if (!newValue && isMeasuring) {\n                stopMeasuring();\n            }\n        };\n        var startMeasuring = function () {\n            isMeasuring = true;\n            measureHeight(0);\n            _this.comp.addOrRemoveCssClass('ag-header-cell-auto-height', true);\n            stopResizeObserver = _this.resizeObserverService.observeResize(wrapperElement, function () { return measureHeight(0); });\n        };\n        var stopMeasuring = function () {\n            isMeasuring = false;\n            if (stopResizeObserver) {\n                stopResizeObserver();\n            }\n            _this.comp.addOrRemoveCssClass('ag-header-cell-auto-height', false);\n            stopResizeObserver = undefined;\n        };\n        checkMeasuring();\n        this.addDestroyFunc(function () { return stopMeasuring(); });\n        // In theory we could rely on the resize observer for everything - but since it's debounced\n        // it can be a little janky for smooth movement. in this case its better to react to our own events\n        // And unfortunately we cant _just_ rely on our own events, since custom components can change whenever\n        this.addManagedListener(this.column, Column.EVENT_WIDTH_CHANGED, function () { return isMeasuring && measureHeight(0); });\n        // Displaying the sort icon changes the available area for text, so sort changes can affect height\n        this.addManagedListener(this.eventService, Column.EVENT_SORT_CHANGED, function () {\n            // Rendering changes for sort, happen after the event... not ideal\n            if (isMeasuring) {\n                _this.beans.frameworkOverrides.setTimeout(function () { return measureHeight(0); });\n            }\n        });\n        this.addRefreshFunction(checkMeasuring);\n    };\n    HeaderCellCtrl.prototype.refreshAriaSort = function () {\n        if (this.sortable) {\n            var translate = this.localeService.getLocaleTextFunc();\n            var sort = this.sortController.getDisplaySortForColumn(this.column) || null;\n            this.comp.setAriaSort(getAriaSortState(sort));\n            this.setAriaDescriptionProperty('sort', translate('ariaSortableColumn', 'Press ENTER to sort.'));\n        }\n        else {\n            this.comp.setAriaSort();\n            this.setAriaDescriptionProperty('sort', null);\n        }\n    };\n    HeaderCellCtrl.prototype.refreshAriaMenu = function () {\n        if (this.menuEnabled) {\n            var translate = this.localeService.getLocaleTextFunc();\n            this.setAriaDescriptionProperty('menu', translate('ariaMenuColumn', 'Press CTRL ENTER to open column menu.'));\n        }\n        else {\n            this.setAriaDescriptionProperty('menu', null);\n        }\n    };\n    HeaderCellCtrl.prototype.setAriaDescriptionProperty = function (property, value) {\n        if (value != null) {\n            this.ariaDescriptionProperties.set(property, value);\n        }\n        else {\n            this.ariaDescriptionProperties.delete(property);\n        }\n    };\n    HeaderCellCtrl.prototype.refreshAriaDescription = function () {\n        var descriptionArray = Array.from(this.ariaDescriptionProperties.values());\n        this.comp.setAriaDescription(descriptionArray.length ? descriptionArray.join(' ') : undefined);\n    };\n    HeaderCellCtrl.prototype.refreshAria = function () {\n        this.refreshAriaSort();\n        this.refreshAriaMenu();\n        this.refreshAriaDescription();\n    };\n    HeaderCellCtrl.prototype.addColumnHoverListener = function () {\n        var _this = this;\n        var listener = function () {\n            if (!_this.gridOptionsService.is('columnHoverHighlight')) {\n                return;\n            }\n            var isHovered = _this.columnHoverService.isHovered(_this.column);\n            _this.comp.addOrRemoveCssClass('ag-column-hover', isHovered);\n        };\n        this.addManagedListener(this.eventService, Events.EVENT_COLUMN_HOVER_CHANGED, listener);\n        listener();\n    };\n    HeaderCellCtrl.prototype.setupFilterCss = function () {\n        var _this = this;\n        var listener = function () {\n            _this.comp.addOrRemoveCssClass('ag-header-cell-filtered', _this.column.isFilterActive());\n        };\n        this.addManagedListener(this.column, Column.EVENT_FILTER_ACTIVE_CHANGED, listener);\n        listener();\n    };\n    HeaderCellCtrl.prototype.setupColId = function () {\n        this.comp.setColId(this.column.getColId());\n    };\n    HeaderCellCtrl.prototype.addActiveHeaderMouseListeners = function () {\n        var _this = this;\n        var listener = function (e) { return _this.setActiveHeader(e.type === 'mouseenter'); };\n        this.addManagedListener(this.getGui(), 'mouseenter', listener);\n        this.addManagedListener(this.getGui(), 'mouseleave', listener);\n    };\n    HeaderCellCtrl.prototype.setActiveHeader = function (active) {\n        this.comp.addOrRemoveCssClass('ag-header-active', active);\n    };\n    __decorate$1k([\n        Autowired('columnModel')\n    ], HeaderCellCtrl.prototype, \"columnModel\", void 0);\n    __decorate$1k([\n        Autowired('columnHoverService')\n    ], HeaderCellCtrl.prototype, \"columnHoverService\", void 0);\n    __decorate$1k([\n        Autowired('sortController')\n    ], HeaderCellCtrl.prototype, \"sortController\", void 0);\n    __decorate$1k([\n        Autowired('menuFactory')\n    ], HeaderCellCtrl.prototype, \"menuFactory\", void 0);\n    __decorate$1k([\n        Autowired('dragAndDropService')\n    ], HeaderCellCtrl.prototype, \"dragAndDropService\", void 0);\n    __decorate$1k([\n        Autowired('resizeObserverService')\n    ], HeaderCellCtrl.prototype, \"resizeObserverService\", void 0);\n    __decorate$1k([\n        Autowired('gridApi')\n    ], HeaderCellCtrl.prototype, \"gridApi\", void 0);\n    __decorate$1k([\n        Autowired('columnApi')\n    ], HeaderCellCtrl.prototype, \"columnApi\", void 0);\n    __decorate$1k([\n        PreDestroy\n    ], HeaderCellCtrl.prototype, \"removeDragSource\", null);\n    return HeaderCellCtrl;\n}(AbstractHeaderCellCtrl));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$1m = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$1j = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar GroupResizeFeature = /** @class */ (function (_super) {\n    __extends$1m(GroupResizeFeature, _super);\n    function GroupResizeFeature(comp, eResize, pinned, columnGroup) {\n        var _this = _super.call(this) || this;\n        _this.eResize = eResize;\n        _this.comp = comp;\n        _this.pinned = pinned;\n        _this.columnGroup = columnGroup;\n        return _this;\n    }\n    GroupResizeFeature.prototype.postConstruct = function () {\n        var _this = this;\n        if (!this.columnGroup.isResizable()) {\n            this.comp.setResizableDisplayed(false);\n            return;\n        }\n        var finishedWithResizeFunc = this.horizontalResizeService.addResizeBar({\n            eResizeBar: this.eResize,\n            onResizeStart: this.onResizeStart.bind(this),\n            onResizing: this.onResizing.bind(this, false),\n            onResizeEnd: this.onResizing.bind(this, true)\n        });\n        this.addDestroyFunc(finishedWithResizeFunc);\n        if (!this.gridOptionsService.is('suppressAutoSize')) {\n            var skipHeaderOnAutoSize_1 = this.gridOptionsService.is('skipHeaderOnAutoSize');\n            this.eResize.addEventListener('dblclick', function () {\n                // get list of all the column keys we are responsible for\n                var keys = [];\n                var leafCols = _this.columnGroup.getDisplayedLeafColumns();\n                leafCols.forEach(function (column) {\n                    // not all cols in the group may be participating with auto-resize\n                    if (!column.getColDef().suppressAutoSize) {\n                        keys.push(column.getColId());\n                    }\n                });\n                if (keys.length > 0) {\n                    _this.columnModel.autoSizeColumns({\n                        columns: keys,\n                        skipHeader: skipHeaderOnAutoSize_1,\n                        stopAtGroup: _this.columnGroup,\n                        source: 'uiColumnResized'\n                    });\n                }\n                _this.resizeLeafColumnsToFit('uiColumnResized');\n            });\n        }\n    };\n    GroupResizeFeature.prototype.onResizeStart = function (shiftKey) {\n        var _this = this;\n        this.calculateInitialValues();\n        var takeFromGroup = null;\n        if (shiftKey) {\n            takeFromGroup = this.columnModel.getDisplayedGroupAfter(this.columnGroup);\n        }\n        if (takeFromGroup) {\n            var takeFromLeafCols = takeFromGroup.getDisplayedLeafColumns();\n            this.resizeTakeFromCols = takeFromLeafCols.filter(function (col) { return col.isResizable(); });\n            this.resizeTakeFromStartWidth = 0;\n            this.resizeTakeFromCols.forEach(function (col) { return _this.resizeTakeFromStartWidth += col.getActualWidth(); });\n            this.resizeTakeFromRatios = [];\n            this.resizeTakeFromCols.forEach(function (col) { return _this.resizeTakeFromRatios.push(col.getActualWidth() / _this.resizeTakeFromStartWidth); });\n        }\n        else {\n            this.resizeTakeFromCols = null;\n            this.resizeTakeFromStartWidth = null;\n            this.resizeTakeFromRatios = null;\n        }\n        this.comp.addOrRemoveCssClass('ag-column-resizing', true);\n    };\n    GroupResizeFeature.prototype.onResizing = function (finished, resizeAmount, source) {\n        if (source === void 0) { source = 'uiColumnResized'; }\n        var resizeAmountNormalised = this.normaliseDragChange(resizeAmount);\n        var width = this.resizeStartWidth + resizeAmountNormalised;\n        this.resizeColumns(width, source, finished);\n    };\n    GroupResizeFeature.prototype.resizeLeafColumnsToFit = function (source) {\n        var preferredSize = this.autoWidthCalculator.getPreferredWidthForColumnGroup(this.columnGroup);\n        this.calculateInitialValues();\n        if (preferredSize > this.resizeStartWidth) {\n            this.resizeColumns(preferredSize, source, true);\n        }\n    };\n    GroupResizeFeature.prototype.resizeColumns = function (totalWidth, source, finished) {\n        if (finished === void 0) { finished = true; }\n        var resizeSets = [];\n        resizeSets.push({\n            columns: this.resizeCols,\n            ratios: this.resizeRatios,\n            width: totalWidth\n        });\n        if (this.resizeTakeFromCols) {\n            var diff = totalWidth - this.resizeStartWidth;\n            resizeSets.push({\n                columns: this.resizeTakeFromCols,\n                ratios: this.resizeTakeFromRatios,\n                width: this.resizeTakeFromStartWidth - diff\n            });\n        }\n        this.columnModel.resizeColumnSets({\n            resizeSets: resizeSets,\n            finished: finished,\n            source: source\n        });\n        if (finished) {\n            this.comp.addOrRemoveCssClass('ag-column-resizing', false);\n        }\n    };\n    GroupResizeFeature.prototype.calculateInitialValues = function () {\n        var _this = this;\n        var leafCols = this.columnGroup.getDisplayedLeafColumns();\n        this.resizeCols = leafCols.filter(function (col) { return col.isResizable(); });\n        this.resizeStartWidth = 0;\n        this.resizeCols.forEach(function (col) { return _this.resizeStartWidth += col.getActualWidth(); });\n        this.resizeRatios = [];\n        this.resizeCols.forEach(function (col) { return _this.resizeRatios.push(col.getActualWidth() / _this.resizeStartWidth); });\n    };\n    // optionally inverts the drag, depending on pinned and RTL\n    // note - this method is duplicated in RenderedHeaderCell - should refactor out?\n    GroupResizeFeature.prototype.normaliseDragChange = function (dragChange) {\n        var result = dragChange;\n        if (this.gridOptionsService.is('enableRtl')) {\n            // for RTL, dragging left makes the col bigger, except when pinning left\n            if (this.pinned !== 'left') {\n                result *= -1;\n            }\n        }\n        else if (this.pinned === 'right') {\n            // for LTR (ie normal), dragging left makes the col smaller, except when pinning right\n            result *= -1;\n        }\n        return result;\n    };\n    __decorate$1j([\n        Autowired('horizontalResizeService')\n    ], GroupResizeFeature.prototype, \"horizontalResizeService\", void 0);\n    __decorate$1j([\n        Autowired('autoWidthCalculator')\n    ], GroupResizeFeature.prototype, \"autoWidthCalculator\", void 0);\n    __decorate$1j([\n        Autowired('columnModel')\n    ], GroupResizeFeature.prototype, \"columnModel\", void 0);\n    __decorate$1j([\n        PostConstruct\n    ], GroupResizeFeature.prototype, \"postConstruct\", null);\n    return GroupResizeFeature;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$1l = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$1i = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar GroupWidthFeature = /** @class */ (function (_super) {\n    __extends$1l(GroupWidthFeature, _super);\n    function GroupWidthFeature(comp, columnGroup) {\n        var _this = _super.call(this) || this;\n        // the children can change, we keep destroy functions related to listening to the children here\n        _this.removeChildListenersFuncs = [];\n        _this.columnGroup = columnGroup;\n        _this.comp = comp;\n        return _this;\n    }\n    GroupWidthFeature.prototype.postConstruct = function () {\n        // we need to listen to changes in child columns, as they impact our width\n        this.addListenersToChildrenColumns();\n        // the children belonging to this group can change, so we need to add and remove listeners as they change\n        this.addManagedListener(this.columnGroup, ColumnGroup.EVENT_DISPLAYED_CHILDREN_CHANGED, this.onDisplayedChildrenChanged.bind(this));\n        this.onWidthChanged();\n        // the child listeners are not tied to this components life-cycle, as children can get added and removed\n        // to the group - hence they are on a different life-cycle. so we must make sure the existing children\n        // listeners are removed when we finally get destroyed\n        this.addDestroyFunc(this.removeListenersOnChildrenColumns.bind(this));\n    };\n    GroupWidthFeature.prototype.addListenersToChildrenColumns = function () {\n        var _this = this;\n        // first destroy any old listeners\n        this.removeListenersOnChildrenColumns();\n        // now add new listeners to the new set of children\n        var widthChangedListener = this.onWidthChanged.bind(this);\n        this.columnGroup.getLeafColumns().forEach(function (column) {\n            column.addEventListener('widthChanged', widthChangedListener);\n            column.addEventListener('visibleChanged', widthChangedListener);\n            _this.removeChildListenersFuncs.push(function () {\n                column.removeEventListener('widthChanged', widthChangedListener);\n                column.removeEventListener('visibleChanged', widthChangedListener);\n            });\n        });\n    };\n    GroupWidthFeature.prototype.removeListenersOnChildrenColumns = function () {\n        this.removeChildListenersFuncs.forEach(function (func) { return func(); });\n        this.removeChildListenersFuncs = [];\n    };\n    GroupWidthFeature.prototype.onDisplayedChildrenChanged = function () {\n        this.addListenersToChildrenColumns();\n        this.onWidthChanged();\n    };\n    GroupWidthFeature.prototype.onWidthChanged = function () {\n        var columnWidth = this.columnGroup.getActualWidth();\n        this.comp.setWidth(columnWidth + \"px\");\n        this.comp.addOrRemoveCssClass('ag-hidden', columnWidth === 0);\n    };\n    __decorate$1i([\n        PostConstruct\n    ], GroupWidthFeature.prototype, \"postConstruct\", null);\n    return GroupWidthFeature;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$1k = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$1h = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar HeaderGroupCellCtrl = /** @class */ (function (_super) {\n    __extends$1k(HeaderGroupCellCtrl, _super);\n    function HeaderGroupCellCtrl(columnGroup, parentRowCtrl) {\n        var _this = _super.call(this, columnGroup, parentRowCtrl) || this;\n        _this.columnGroup = columnGroup;\n        return _this;\n    }\n    HeaderGroupCellCtrl.prototype.setComp = function (comp, eGui, eResize) {\n        _super.prototype.setGui.call(this, eGui);\n        this.comp = comp;\n        this.displayName = this.columnModel.getDisplayNameForColumnGroup(this.columnGroup, 'header');\n        this.addClasses();\n        this.addAttributes();\n        this.setupMovingCss();\n        this.setupExpandable();\n        this.setupTooltip();\n        this.setupUserComp();\n        var pinned = this.getParentRowCtrl().getPinned();\n        var leafCols = this.columnGroup.getProvidedColumnGroup().getLeafColumns();\n        this.createManagedBean(new HoverFeature(leafCols, eGui));\n        this.createManagedBean(new SetLeftFeature(this.columnGroup, eGui, this.beans));\n        this.createManagedBean(new GroupWidthFeature(comp, this.columnGroup));\n        this.groupResizeFeature = this.createManagedBean(new GroupResizeFeature(comp, eResize, pinned, this.columnGroup));\n        this.createManagedBean(new ManagedFocusFeature(eGui, {\n            shouldStopEventPropagation: this.shouldStopEventPropagation.bind(this),\n            onTabKeyDown: function () { return undefined; },\n            handleKeyDown: this.handleKeyDown.bind(this),\n            onFocusIn: this.onFocusIn.bind(this)\n        }));\n    };\n    HeaderGroupCellCtrl.prototype.resizeLeafColumnsToFit = function (source) {\n        var _a, _b;\n        // AG-8205 Temp null check to avoid throwing when a component has not been setup yet (React 18)\n        (_a = this.groupResizeFeature) === null || _a === void 0 ? void 0 : _a.onResizeStart(false);\n        (_b = this.groupResizeFeature) === null || _b === void 0 ? void 0 : _b.resizeLeafColumnsToFit(source);\n    };\n    HeaderGroupCellCtrl.prototype.setupUserComp = function () {\n        var _this = this;\n        var displayName = this.displayName;\n        var params = {\n            displayName: this.displayName,\n            columnGroup: this.columnGroup,\n            setExpanded: function (expanded) {\n                _this.columnModel.setColumnGroupOpened(_this.columnGroup.getProvidedColumnGroup(), expanded, \"gridInitializing\");\n            },\n            api: this.gridApi,\n            columnApi: this.columnApi,\n            context: this.gridOptionsService.context\n        };\n        if (!displayName) {\n            var columnGroup = this.columnGroup;\n            var leafCols = columnGroup.getLeafColumns();\n            // find the top most column group that represents the same columns. so if we are dragging a group, we also\n            // want to visually show the parent groups dragging for the same column set. for example imaging 5 levels\n            // of grouping, with each group only containing the next group, and the last group containing three columns,\n            // then when you move any group (even the lowest level group) you are in-fact moving all the groups, as all\n            // the groups represent the same column set.\n            while (columnGroup.getParent() && columnGroup.getParent().getLeafColumns().length === leafCols.length) {\n                columnGroup = columnGroup.getParent();\n            }\n            var colGroupDef = columnGroup.getColGroupDef();\n            if (colGroupDef) {\n                displayName = colGroupDef.headerName;\n            }\n            if (!displayName) {\n                displayName = leafCols ? this.columnModel.getDisplayNameForColumn(leafCols[0], 'header', true) : '';\n            }\n        }\n        var compDetails = this.userComponentFactory.getHeaderGroupCompDetails(params);\n        this.comp.setUserCompDetails(compDetails);\n    };\n    HeaderGroupCellCtrl.prototype.setupTooltip = function () {\n        var _this = this;\n        var colGroupDef = this.columnGroup.getColGroupDef();\n        var tooltipCtrl = {\n            getColumn: function () { return _this.columnGroup; },\n            getGui: function () { return _this.eGui; },\n            getLocation: function () { return 'headerGroup'; },\n            getTooltipValue: function () { return colGroupDef && colGroupDef.headerTooltip; }\n        };\n        if (colGroupDef) {\n            tooltipCtrl.getColDef = function () { return colGroupDef; };\n        }\n        var tooltipFeature = this.createManagedBean(new TooltipFeature(tooltipCtrl, this.beans));\n        tooltipFeature.setComp(this.comp);\n    };\n    HeaderGroupCellCtrl.prototype.setupExpandable = function () {\n        var providedColGroup = this.columnGroup.getProvidedColumnGroup();\n        this.refreshExpanded();\n        this.addManagedListener(providedColGroup, ProvidedColumnGroup.EVENT_EXPANDABLE_CHANGED, this.refreshExpanded.bind(this));\n        this.addManagedListener(providedColGroup, ProvidedColumnGroup.EVENT_EXPANDED_CHANGED, this.refreshExpanded.bind(this));\n    };\n    HeaderGroupCellCtrl.prototype.refreshExpanded = function () {\n        var column = this.columnGroup;\n        this.expandable = column.isExpandable();\n        var expanded = column.isExpanded();\n        if (this.expandable) {\n            this.comp.setAriaExpanded(expanded ? 'true' : 'false');\n        }\n        else {\n            this.comp.setAriaExpanded(undefined);\n        }\n    };\n    HeaderGroupCellCtrl.prototype.addAttributes = function () {\n        this.comp.setColId(this.columnGroup.getUniqueId());\n    };\n    HeaderGroupCellCtrl.prototype.addClasses = function () {\n        var _this = this;\n        var colGroupDef = this.columnGroup.getColGroupDef();\n        var classes = CssClassApplier.getHeaderClassesFromColDef(colGroupDef, this.gridOptionsService, null, this.columnGroup);\n        // having different classes below allows the style to not have a bottom border\n        // on the group header, if no group is specified\n        if (this.columnGroup.isPadding()) {\n            classes.push('ag-header-group-cell-no-group');\n            var leafCols = this.columnGroup.getLeafColumns();\n            if (leafCols.every(function (col) { return col.isSpanHeaderHeight(); })) {\n                classes.push('ag-header-span-height');\n            }\n        }\n        else {\n            classes.push('ag-header-group-cell-with-group');\n        }\n        classes.forEach(function (c) { return _this.comp.addOrRemoveCssClass(c, true); });\n    };\n    HeaderGroupCellCtrl.prototype.setupMovingCss = function () {\n        var _this = this;\n        var providedColumnGroup = this.columnGroup.getProvidedColumnGroup();\n        var leafColumns = providedColumnGroup.getLeafColumns();\n        // this function adds or removes the moving css, based on if the col is moving.\n        // this is what makes the header go dark when it is been moved (gives impression to\n        // user that the column was picked up).\n        var listener = function () { return _this.comp.addOrRemoveCssClass('ag-header-cell-moving', _this.columnGroup.isMoving()); };\n        leafColumns.forEach(function (col) {\n            _this.addManagedListener(col, Column.EVENT_MOVING_CHANGED, listener);\n        });\n        listener();\n    };\n    HeaderGroupCellCtrl.prototype.onFocusIn = function (e) {\n        if (!this.eGui.contains(e.relatedTarget)) {\n            var rowIndex = this.getRowIndex();\n            this.beans.focusService.setFocusedHeader(rowIndex, this.columnGroup);\n        }\n    };\n    HeaderGroupCellCtrl.prototype.handleKeyDown = function (e) {\n        _super.prototype.handleKeyDown.call(this, e);\n        var wrapperHasFocus = this.getWrapperHasFocus();\n        if (!this.expandable || !wrapperHasFocus) {\n            return;\n        }\n        if (e.key === KeyCode.ENTER) {\n            var column = this.columnGroup;\n            var newExpandedValue = !column.isExpanded();\n            this.columnModel.setColumnGroupOpened(column.getProvidedColumnGroup(), newExpandedValue, \"uiColumnExpanded\");\n        }\n    };\n    // unlike columns, this will only get called once, as we don't react on props on column groups\n    // (we will always destroy and recreate this comp if something changes)\n    HeaderGroupCellCtrl.prototype.setDragSource = function (eHeaderGroup) {\n        var _this = this;\n        if (this.isSuppressMoving()) {\n            return;\n        }\n        var allLeafColumns = this.columnGroup.getProvidedColumnGroup().getLeafColumns();\n        var hideColumnOnExit = !this.gridOptionsService.is('suppressDragLeaveHidesColumns');\n        var dragSource = {\n            type: DragSourceType.HeaderCell,\n            eElement: eHeaderGroup,\n            defaultIconName: hideColumnOnExit ? DragAndDropService.ICON_HIDE : DragAndDropService.ICON_NOT_ALLOWED,\n            dragItemName: this.displayName,\n            // we add in the original group leaf columns, so we move both visible and non-visible items\n            getDragItem: this.getDragItemForGroup.bind(this),\n            onDragStarted: function () { return allLeafColumns.forEach(function (col) { return col.setMoving(true, \"uiColumnDragged\"); }); },\n            onDragStopped: function () { return allLeafColumns.forEach(function (col) { return col.setMoving(false, \"uiColumnDragged\"); }); },\n            onGridEnter: function (dragItem) {\n                var _a;\n                if (hideColumnOnExit) {\n                    var unlockedColumns = ((_a = dragItem === null || dragItem === void 0 ? void 0 : dragItem.columns) === null || _a === void 0 ? void 0 : _a.filter(function (col) { return !col.getColDef().lockVisible; })) || [];\n                    _this.columnModel.setColumnsVisible(unlockedColumns, true, \"uiColumnMoved\");\n                }\n            },\n            onGridExit: function (dragItem) {\n                var _a;\n                if (hideColumnOnExit) {\n                    var unlockedColumns = ((_a = dragItem === null || dragItem === void 0 ? void 0 : dragItem.columns) === null || _a === void 0 ? void 0 : _a.filter(function (col) { return !col.getColDef().lockVisible; })) || [];\n                    _this.columnModel.setColumnsVisible(unlockedColumns, false, \"uiColumnMoved\");\n                }\n            },\n        };\n        this.dragAndDropService.addDragSource(dragSource, true);\n        this.addDestroyFunc(function () { return _this.dragAndDropService.removeDragSource(dragSource); });\n    };\n    // when moving the columns, we want to move all the columns (contained within the DragItem) in this group in one go,\n    // and in the order they are currently in the screen.\n    HeaderGroupCellCtrl.prototype.getDragItemForGroup = function () {\n        var allColumnsOriginalOrder = this.columnGroup.getProvidedColumnGroup().getLeafColumns();\n        // capture visible state, used when re-entering grid to dictate which columns should be visible\n        var visibleState = {};\n        allColumnsOriginalOrder.forEach(function (column) { return visibleState[column.getId()] = column.isVisible(); });\n        var allColumnsCurrentOrder = [];\n        this.columnModel.getAllDisplayedColumns().forEach(function (column) {\n            if (allColumnsOriginalOrder.indexOf(column) >= 0) {\n                allColumnsCurrentOrder.push(column);\n                removeFromArray(allColumnsOriginalOrder, column);\n            }\n        });\n        // we are left with non-visible columns, stick these in at the end\n        allColumnsOriginalOrder.forEach(function (column) { return allColumnsCurrentOrder.push(column); });\n        // create and return dragItem\n        return {\n            columns: allColumnsCurrentOrder,\n            visibleState: visibleState\n        };\n    };\n    HeaderGroupCellCtrl.prototype.isSuppressMoving = function () {\n        // if any child is fixed, then don't allow moving\n        var childSuppressesMoving = false;\n        this.columnGroup.getLeafColumns().forEach(function (column) {\n            if (column.getColDef().suppressMovable || column.getColDef().lockPosition) {\n                childSuppressesMoving = true;\n            }\n        });\n        var result = childSuppressesMoving || this.gridOptionsService.is('suppressMovableColumns');\n        return result;\n    };\n    __decorate$1h([\n        Autowired('columnModel')\n    ], HeaderGroupCellCtrl.prototype, \"columnModel\", void 0);\n    __decorate$1h([\n        Autowired('dragAndDropService')\n    ], HeaderGroupCellCtrl.prototype, \"dragAndDropService\", void 0);\n    __decorate$1h([\n        Autowired('gridApi')\n    ], HeaderGroupCellCtrl.prototype, \"gridApi\", void 0);\n    __decorate$1h([\n        Autowired('columnApi')\n    ], HeaderGroupCellCtrl.prototype, \"columnApi\", void 0);\n    return HeaderGroupCellCtrl;\n}(AbstractHeaderCellCtrl));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$1j = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$1g = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar instanceIdSequence = 0;\nvar HeaderRowCtrl = /** @class */ (function (_super) {\n    __extends$1j(HeaderRowCtrl, _super);\n    function HeaderRowCtrl(rowIndex, pinned, type) {\n        var _this = _super.call(this) || this;\n        _this.instanceId = instanceIdSequence++;\n        _this.headerCellCtrls = {};\n        _this.rowIndex = rowIndex;\n        _this.pinned = pinned;\n        _this.type = type;\n        return _this;\n    }\n    HeaderRowCtrl.prototype.getInstanceId = function () {\n        return this.instanceId;\n    };\n    HeaderRowCtrl.prototype.setComp = function (comp) {\n        this.comp = comp;\n        this.onRowHeightChanged();\n        this.onVirtualColumnsChanged();\n        this.setWidth();\n        this.addEventListeners();\n        if (isBrowserSafari()) {\n            // fix for a Safari rendering bug that caused the header to flicker above chart panels\n            // as you move the mouse over the header\n            this.comp.setTransform('translateZ(0)');\n        }\n        comp.setAriaRowIndex(this.rowIndex + 1);\n    };\n    HeaderRowCtrl.prototype.addEventListeners = function () {\n        this.addManagedListener(this.eventService, Events.EVENT_COLUMN_RESIZED, this.onColumnResized.bind(this));\n        this.addManagedListener(this.eventService, Events.EVENT_DISPLAYED_COLUMNS_CHANGED, this.onDisplayedColumnsChanged.bind(this));\n        this.addManagedListener(this.eventService, Events.EVENT_VIRTUAL_COLUMNS_CHANGED, this.onVirtualColumnsChanged.bind(this));\n        this.addManagedListener(this.eventService, Events.EVENT_COLUMN_HEADER_HEIGHT_CHANGED, this.onRowHeightChanged.bind(this));\n        this.addManagedListener(this.eventService, Events.EVENT_GRID_STYLES_CHANGED, this.onRowHeightChanged.bind(this));\n        // when print layout changes, it changes what columns are in what section\n        this.addManagedPropertyListener('domLayout', this.onDisplayedColumnsChanged.bind(this));\n        this.addManagedPropertyListener('headerHeight', this.onRowHeightChanged.bind(this));\n        this.addManagedPropertyListener('pivotHeaderHeight', this.onRowHeightChanged.bind(this));\n        this.addManagedPropertyListener('groupHeaderHeight', this.onRowHeightChanged.bind(this));\n        this.addManagedPropertyListener('pivotGroupHeaderHeight', this.onRowHeightChanged.bind(this));\n        this.addManagedPropertyListener('floatingFiltersHeight', this.onRowHeightChanged.bind(this));\n    };\n    HeaderRowCtrl.prototype.getHeaderCellCtrl = function (column) {\n        return values(this.headerCellCtrls).find(function (cellCtrl) { return cellCtrl.getColumnGroupChild() === column; });\n    };\n    HeaderRowCtrl.prototype.onDisplayedColumnsChanged = function () {\n        this.onVirtualColumnsChanged();\n        this.setWidth();\n        this.onRowHeightChanged();\n    };\n    HeaderRowCtrl.prototype.getType = function () {\n        return this.type;\n    };\n    HeaderRowCtrl.prototype.onColumnResized = function () {\n        this.setWidth();\n    };\n    HeaderRowCtrl.prototype.setWidth = function () {\n        var width = this.getWidthForRow();\n        this.comp.setWidth(width + \"px\");\n    };\n    HeaderRowCtrl.prototype.getWidthForRow = function () {\n        var printLayout = this.gridOptionsService.isDomLayout('print');\n        if (printLayout) {\n            var pinned = this.pinned != null;\n            if (pinned) {\n                return 0;\n            }\n            return this.columnModel.getContainerWidth('right')\n                + this.columnModel.getContainerWidth('left')\n                + this.columnModel.getContainerWidth(null);\n        }\n        // if not printing, just return the width as normal\n        return this.columnModel.getContainerWidth(this.pinned);\n    };\n    HeaderRowCtrl.prototype.onRowHeightChanged = function () {\n        var headerRowCount = this.columnModel.getHeaderRowCount();\n        var sizes = [];\n        var numberOfFloating = 0;\n        if (this.columnModel.hasFloatingFilters()) {\n            headerRowCount++;\n            numberOfFloating = 1;\n        }\n        var groupHeight = this.columnModel.getColumnGroupHeaderRowHeight();\n        var headerHeight = this.columnModel.getColumnHeaderRowHeight();\n        var numberOfNonGroups = 1 + numberOfFloating;\n        var numberOfGroups = headerRowCount - numberOfNonGroups;\n        for (var i = 0; i < numberOfGroups; i++) {\n            sizes.push(groupHeight);\n        }\n        sizes.push(headerHeight);\n        for (var i = 0; i < numberOfFloating; i++) {\n            sizes.push(this.columnModel.getFloatingFiltersHeight());\n        }\n        var topOffset = 0;\n        for (var i = 0; i < this.rowIndex; i++) {\n            topOffset += sizes[i];\n        }\n        var thisRowHeight = sizes[this.rowIndex] + 'px';\n        this.comp.setTop(topOffset + 'px');\n        this.comp.setHeight(thisRowHeight);\n    };\n    HeaderRowCtrl.prototype.getPinned = function () {\n        return this.pinned;\n    };\n    HeaderRowCtrl.prototype.getRowIndex = function () {\n        return this.rowIndex;\n    };\n    HeaderRowCtrl.prototype.onVirtualColumnsChanged = function () {\n        var _this = this;\n        var oldCtrls = this.headerCellCtrls;\n        this.headerCellCtrls = {};\n        var columns = this.getColumnsInViewport();\n        columns.forEach(function (child) {\n            // skip groups that have no displayed children. this can happen when the group is broken,\n            // and this section happens to have nothing to display for the open / closed state.\n            // (a broken group is one that is split, ie columns in the group have a non-group column\n            // in between them)\n            if (child.isEmptyGroup()) {\n                return;\n            }\n            var idOfChild = child.getUniqueId();\n            // if we already have this cell rendered, do nothing\n            var headerCtrl = oldCtrls[idOfChild];\n            delete oldCtrls[idOfChild];\n            // it's possible there is a new Column with the same ID, but it's for a different Column.\n            // this is common with pivoting, where the pivot cols change, but the id's are still pivot_0,\n            // pivot_1 etc. so if new col but same ID, need to remove the old col here first as we are\n            // about to replace it in the this.headerComps map.\n            var forOldColumn = headerCtrl && headerCtrl.getColumnGroupChild() != child;\n            if (forOldColumn) {\n                _this.destroyBean(headerCtrl);\n                headerCtrl = undefined;\n            }\n            if (headerCtrl == null) {\n                switch (_this.type) {\n                    case HeaderRowType.FLOATING_FILTER:\n                        headerCtrl = _this.createBean(new HeaderFilterCellCtrl(child, _this));\n                        break;\n                    case HeaderRowType.COLUMN_GROUP:\n                        headerCtrl = _this.createBean(new HeaderGroupCellCtrl(child, _this));\n                        break;\n                    default:\n                        headerCtrl = _this.createBean(new HeaderCellCtrl(child, _this));\n                        break;\n                }\n            }\n            _this.headerCellCtrls[idOfChild] = headerCtrl;\n        });\n        // we want to keep columns that are focused, otherwise keyboard navigation breaks\n        var isFocusedAndDisplayed = function (ctrl) {\n            var isFocused = _this.focusService.isHeaderWrapperFocused(ctrl);\n            if (!isFocused) {\n                return false;\n            }\n            var isDisplayed = _this.columnModel.isDisplayed(ctrl.getColumnGroupChild());\n            return isDisplayed;\n        };\n        iterateObject(oldCtrls, function (id, oldCtrl) {\n            var keepCtrl = isFocusedAndDisplayed(oldCtrl);\n            if (keepCtrl) {\n                _this.headerCellCtrls[id] = oldCtrl;\n            }\n            else {\n                _this.destroyBean(oldCtrl);\n            }\n        });\n        var ctrlsToDisplay = getAllValuesInObject(this.headerCellCtrls);\n        this.comp.setHeaderCtrls(ctrlsToDisplay);\n    };\n    HeaderRowCtrl.prototype.getColumnsInViewport = function () {\n        var printLayout = this.gridOptionsService.isDomLayout('print');\n        return printLayout ? this.getColumnsInViewportPrintLayout() : this.getColumnsInViewportNormalLayout();\n    };\n    HeaderRowCtrl.prototype.getColumnsInViewportPrintLayout = function () {\n        var _this = this;\n        // for print layout, we add all columns into the center\n        if (this.pinned != null) {\n            return [];\n        }\n        var viewportColumns = [];\n        var actualDepth = this.getActualDepth();\n        ['left', null, 'right'].forEach(function (pinned) {\n            var items = _this.columnModel.getVirtualHeaderGroupRow(pinned, actualDepth);\n            viewportColumns = viewportColumns.concat(items);\n        });\n        return viewportColumns;\n    };\n    HeaderRowCtrl.prototype.getActualDepth = function () {\n        return this.type == HeaderRowType.FLOATING_FILTER ? this.rowIndex - 1 : this.rowIndex;\n    };\n    HeaderRowCtrl.prototype.getColumnsInViewportNormalLayout = function () {\n        // when in normal layout, we add the columns for that container only\n        return this.columnModel.getVirtualHeaderGroupRow(this.pinned, this.getActualDepth());\n    };\n    HeaderRowCtrl.prototype.focusHeader = function (column, event) {\n        var allCtrls = getAllValuesInObject(this.headerCellCtrls);\n        var ctrl = allCtrls.find(function (ctrl) { return ctrl.getColumnGroupChild() == column; });\n        if (!ctrl) {\n            return false;\n        }\n        ctrl.focus(event);\n        return true;\n    };\n    HeaderRowCtrl.prototype.destroy = function () {\n        var _this = this;\n        iterateObject(this.headerCellCtrls, function (key, ctrl) {\n            _this.destroyBean(ctrl);\n        });\n        this.headerCellCtrls = {};\n        _super.prototype.destroy.call(this);\n    };\n    __decorate$1g([\n        Autowired('columnModel')\n    ], HeaderRowCtrl.prototype, \"columnModel\", void 0);\n    __decorate$1g([\n        Autowired('focusService')\n    ], HeaderRowCtrl.prototype, \"focusService\", void 0);\n    return HeaderRowCtrl;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$1i = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$1f = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __read$f = (undefined && undefined.__read) || function (o, n) {\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n    if (!m) return o;\n    var i = m.call(o), r, ar = [], e;\n    try {\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n    }\n    catch (error) { e = { error: error }; }\n    finally {\n        try {\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\n        }\n        finally { if (e) throw e.error; }\n    }\n    return ar;\n};\nvar __spread$d = (undefined && undefined.__spread) || function () {\n    for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read$f(arguments[i]));\n    return ar;\n};\nvar HeaderRowContainerCtrl = /** @class */ (function (_super) {\n    __extends$1i(HeaderRowContainerCtrl, _super);\n    function HeaderRowContainerCtrl(pinned) {\n        var _this = _super.call(this) || this;\n        _this.hidden = false;\n        _this.groupsRowCtrls = [];\n        _this.pinned = pinned;\n        return _this;\n    }\n    HeaderRowContainerCtrl.prototype.setComp = function (comp, eGui) {\n        this.comp = comp;\n        this.eViewport = eGui;\n        this.setupCenterWidth();\n        this.setupPinnedWidth();\n        this.setupDragAndDrop(this.eViewport);\n        this.addManagedListener(this.eventService, Events.EVENT_GRID_COLUMNS_CHANGED, this.onGridColumnsChanged.bind(this));\n        this.ctrlsService.registerHeaderContainer(this, this.pinned);\n        if (this.columnModel.isReady()) {\n            this.refresh();\n        }\n    };\n    HeaderRowContainerCtrl.prototype.setupDragAndDrop = function (dropContainer) {\n        var bodyDropTarget = new BodyDropTarget(this.pinned, dropContainer);\n        this.createManagedBean(bodyDropTarget);\n    };\n    HeaderRowContainerCtrl.prototype.refresh = function (keepColumns) {\n        var _this = this;\n        if (keepColumns === void 0) { keepColumns = false; }\n        var sequence = new NumberSequence();\n        var focusedHeaderPosition = this.focusService.getFocusHeaderToUseAfterRefresh();\n        var refreshColumnGroups = function () {\n            var groupRowCount = _this.columnModel.getHeaderRowCount() - 1;\n            _this.groupsRowCtrls = _this.destroyBeans(_this.groupsRowCtrls);\n            for (var i = 0; i < groupRowCount; i++) {\n                var ctrl = _this.createBean(new HeaderRowCtrl(sequence.next(), _this.pinned, HeaderRowType.COLUMN_GROUP));\n                _this.groupsRowCtrls.push(ctrl);\n            }\n        };\n        var refreshColumns = function () {\n            var rowIndex = sequence.next();\n            var needNewInstance = !_this.hidden && (_this.columnsRowCtrl == null || !keepColumns || _this.columnsRowCtrl.getRowIndex() !== rowIndex);\n            var shouldDestroyInstance = needNewInstance || _this.hidden;\n            if (shouldDestroyInstance) {\n                _this.columnsRowCtrl = _this.destroyBean(_this.columnsRowCtrl);\n            }\n            if (needNewInstance) {\n                _this.columnsRowCtrl = _this.createBean(new HeaderRowCtrl(rowIndex, _this.pinned, HeaderRowType.COLUMN));\n            }\n        };\n        var refreshFilters = function () {\n            var includeFloatingFilter = _this.columnModel.hasFloatingFilters() && !_this.hidden;\n            var destroyPreviousComp = function () {\n                _this.filtersRowCtrl = _this.destroyBean(_this.filtersRowCtrl);\n            };\n            if (!includeFloatingFilter) {\n                destroyPreviousComp();\n                return;\n            }\n            var rowIndex = sequence.next();\n            if (_this.filtersRowCtrl) {\n                var rowIndexMismatch = _this.filtersRowCtrl.getRowIndex() !== rowIndex;\n                if (!keepColumns || rowIndexMismatch) {\n                    destroyPreviousComp();\n                }\n            }\n            if (!_this.filtersRowCtrl) {\n                _this.filtersRowCtrl = _this.createBean(new HeaderRowCtrl(rowIndex, _this.pinned, HeaderRowType.FLOATING_FILTER));\n            }\n        };\n        refreshColumnGroups();\n        refreshColumns();\n        refreshFilters();\n        var allCtrls = this.getAllCtrls();\n        this.comp.setCtrls(allCtrls);\n        this.restoreFocusOnHeader(focusedHeaderPosition);\n    };\n    HeaderRowContainerCtrl.prototype.restoreFocusOnHeader = function (position) {\n        if (position == null || position.column.getPinned() != this.pinned) {\n            return;\n        }\n        this.focusService.focusHeaderPosition({ headerPosition: position });\n    };\n    HeaderRowContainerCtrl.prototype.getAllCtrls = function () {\n        var res = __spread$d(this.groupsRowCtrls);\n        if (this.columnsRowCtrl) {\n            res.push(this.columnsRowCtrl);\n        }\n        if (this.filtersRowCtrl) {\n            res.push(this.filtersRowCtrl);\n        }\n        return res;\n    };\n    // grid cols have changed - this also means the number of rows in the header can have\n    // changed. so we remove all the old rows and insert new ones for a complete refresh\n    HeaderRowContainerCtrl.prototype.onGridColumnsChanged = function () {\n        this.refresh(true);\n    };\n    HeaderRowContainerCtrl.prototype.setupCenterWidth = function () {\n        var _this = this;\n        if (this.pinned != null) {\n            return;\n        }\n        this.createManagedBean(new CenterWidthFeature(function (width) { return _this.comp.setCenterWidth(width + \"px\"); }, true));\n    };\n    HeaderRowContainerCtrl.prototype.setHorizontalScroll = function (offset) {\n        this.comp.setViewportScrollLeft(offset);\n    };\n    HeaderRowContainerCtrl.prototype.setupPinnedWidth = function () {\n        var _this = this;\n        if (this.pinned == null) {\n            return;\n        }\n        var pinningLeft = this.pinned === 'left';\n        var pinningRight = this.pinned === 'right';\n        this.hidden = true;\n        var listener = function () {\n            var width = pinningLeft ? _this.pinnedWidthService.getPinnedLeftWidth() : _this.pinnedWidthService.getPinnedRightWidth();\n            if (width == null) {\n                return;\n            } // can happen at initialisation, width not yet set\n            var hidden = (width == 0);\n            var hiddenChanged = _this.hidden !== hidden;\n            var isRtl = _this.gridOptionsService.is('enableRtl');\n            var scrollbarWidth = _this.gridOptionsService.getScrollbarWidth();\n            // if there is a scroll showing (and taking up space, so Windows, and not iOS)\n            // in the body, then we add extra space to keep header aligned with the body,\n            // as body width fits the cols and the scrollbar\n            var addPaddingForScrollbar = _this.scrollVisibleService.isVerticalScrollShowing() && ((isRtl && pinningLeft) || (!isRtl && pinningRight));\n            var widthWithPadding = addPaddingForScrollbar ? width + scrollbarWidth : width;\n            _this.comp.setPinnedContainerWidth(widthWithPadding + \"px\");\n            _this.comp.setDisplayed(!hidden);\n            if (hiddenChanged) {\n                _this.hidden = hidden;\n                _this.refresh();\n            }\n        };\n        this.addManagedListener(this.eventService, Events.EVENT_LEFT_PINNED_WIDTH_CHANGED, listener);\n        this.addManagedListener(this.eventService, Events.EVENT_RIGHT_PINNED_WIDTH_CHANGED, listener);\n        this.addManagedListener(this.eventService, Events.EVENT_SCROLL_VISIBILITY_CHANGED, listener);\n        this.addManagedListener(this.eventService, Events.EVENT_SCROLLBAR_WIDTH_CHANGED, listener);\n    };\n    HeaderRowContainerCtrl.prototype.getHeaderCtrlForColumn = function (column) {\n        if (column instanceof Column) {\n            if (!this.columnsRowCtrl) {\n                return;\n            }\n            return this.columnsRowCtrl.getHeaderCellCtrl(column);\n        }\n        if (this.groupsRowCtrls.length === 0) {\n            return;\n        }\n        for (var i = 0; i < this.groupsRowCtrls.length; i++) {\n            var ctrl = this.groupsRowCtrls[i].getHeaderCellCtrl(column);\n            if (ctrl) {\n                return ctrl;\n            }\n        }\n    };\n    HeaderRowContainerCtrl.prototype.getHtmlElementForColumnHeader = function (column) {\n        /* tslint:enable */\n        var cellCtrl = this.getHeaderCtrlForColumn(column);\n        if (!cellCtrl) {\n            return null;\n        }\n        return cellCtrl.getGui();\n    };\n    HeaderRowContainerCtrl.prototype.getRowType = function (rowIndex) {\n        var allCtrls = this.getAllCtrls();\n        var ctrl = allCtrls[rowIndex];\n        return ctrl ? ctrl.getType() : undefined;\n    };\n    HeaderRowContainerCtrl.prototype.focusHeader = function (rowIndex, column, event) {\n        var allCtrls = this.getAllCtrls();\n        var ctrl = allCtrls[rowIndex];\n        if (!ctrl) {\n            return false;\n        }\n        return ctrl.focusHeader(column, event);\n    };\n    HeaderRowContainerCtrl.prototype.getRowCount = function () {\n        return this.groupsRowCtrls.length + (this.columnsRowCtrl ? 1 : 0) + (this.filtersRowCtrl ? 1 : 0);\n    };\n    HeaderRowContainerCtrl.prototype.destroy = function () {\n        if (this.filtersRowCtrl) {\n            this.filtersRowCtrl = this.destroyBean(this.filtersRowCtrl);\n        }\n        if (this.columnsRowCtrl) {\n            this.columnsRowCtrl = this.destroyBean(this.columnsRowCtrl);\n        }\n        if (this.groupsRowCtrls && this.groupsRowCtrls.length) {\n            this.groupsRowCtrls = this.destroyBeans(this.groupsRowCtrls);\n        }\n        _super.prototype.destroy.call(this);\n    };\n    __decorate$1f([\n        Autowired('ctrlsService')\n    ], HeaderRowContainerCtrl.prototype, \"ctrlsService\", void 0);\n    __decorate$1f([\n        Autowired('scrollVisibleService')\n    ], HeaderRowContainerCtrl.prototype, \"scrollVisibleService\", void 0);\n    __decorate$1f([\n        Autowired('pinnedWidthService')\n    ], HeaderRowContainerCtrl.prototype, \"pinnedWidthService\", void 0);\n    __decorate$1f([\n        Autowired('columnModel')\n    ], HeaderRowContainerCtrl.prototype, \"columnModel\", void 0);\n    __decorate$1f([\n        Autowired('focusService')\n    ], HeaderRowContainerCtrl.prototype, \"focusService\", void 0);\n    return HeaderRowContainerCtrl;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$1h = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$1e = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar HeaderRowContainerComp = /** @class */ (function (_super) {\n    __extends$1h(HeaderRowContainerComp, _super);\n    function HeaderRowContainerComp(pinned) {\n        var _this = _super.call(this) || this;\n        _this.headerRowComps = {};\n        _this.rowCompsList = [];\n        _this.pinned = pinned;\n        return _this;\n    }\n    HeaderRowContainerComp.prototype.init = function () {\n        var _this = this;\n        this.selectAndSetTemplate();\n        var compProxy = {\n            setDisplayed: function (displayed) { return _this.setDisplayed(displayed); },\n            setCtrls: function (ctrls) { return _this.setCtrls(ctrls); },\n            // only gets called for center section\n            setCenterWidth: function (width) { return _this.eCenterContainer.style.width = width; },\n            setViewportScrollLeft: function (left) { return _this.getGui().scrollLeft = left; },\n            // only gets called for pinned sections\n            setPinnedContainerWidth: function (width) {\n                var eGui = _this.getGui();\n                eGui.style.width = width;\n                eGui.style.maxWidth = width;\n                eGui.style.minWidth = width;\n            }\n        };\n        var ctrl = this.createManagedBean(new HeaderRowContainerCtrl(this.pinned));\n        ctrl.setComp(compProxy, this.getGui());\n    };\n    HeaderRowContainerComp.prototype.selectAndSetTemplate = function () {\n        var pinnedLeft = this.pinned == 'left';\n        var pinnedRight = this.pinned == 'right';\n        var template = pinnedLeft ? HeaderRowContainerComp.PINNED_LEFT_TEMPLATE :\n            pinnedRight ? HeaderRowContainerComp.PINNED_RIGHT_TEMPLATE : HeaderRowContainerComp.CENTER_TEMPLATE;\n        this.setTemplate(template);\n        // for left and right, we add rows directly to the root element,\n        // but for center container we add elements to the child container.\n        this.eRowContainer = this.eCenterContainer ? this.eCenterContainer : this.getGui();\n    };\n    HeaderRowContainerComp.prototype.destroyRowComps = function () {\n        this.setCtrls([]);\n    };\n    HeaderRowContainerComp.prototype.destroyRowComp = function (rowComp) {\n        this.destroyBean(rowComp);\n        this.eRowContainer.removeChild(rowComp.getGui());\n    };\n    HeaderRowContainerComp.prototype.setCtrls = function (ctrls) {\n        var _this = this;\n        var oldRowComps = this.headerRowComps;\n        this.headerRowComps = {};\n        this.rowCompsList = [];\n        var prevGui;\n        var appendEnsuringDomOrder = function (rowComp) {\n            var eGui = rowComp.getGui();\n            var notAlreadyIn = eGui.parentElement != _this.eRowContainer;\n            if (notAlreadyIn) {\n                _this.eRowContainer.appendChild(eGui);\n            }\n            if (prevGui) {\n                ensureDomOrder(_this.eRowContainer, eGui, prevGui);\n            }\n            prevGui = eGui;\n        };\n        ctrls.forEach(function (ctrl) {\n            var ctrlId = ctrl.getInstanceId();\n            var existingComp = oldRowComps[ctrlId];\n            delete oldRowComps[ctrlId];\n            var rowComp = existingComp ? existingComp : _this.createBean(new HeaderRowComp(ctrl));\n            _this.headerRowComps[ctrlId] = rowComp;\n            _this.rowCompsList.push(rowComp);\n            appendEnsuringDomOrder(rowComp);\n        });\n        getAllValuesInObject(oldRowComps).forEach(function (c) { return _this.destroyRowComp(c); });\n    };\n    HeaderRowContainerComp.PINNED_LEFT_TEMPLATE = \"<div class=\\\"ag-pinned-left-header\\\" role=\\\"presentation\\\"></div>\";\n    HeaderRowContainerComp.PINNED_RIGHT_TEMPLATE = \"<div class=\\\"ag-pinned-right-header\\\" role=\\\"presentation\\\"></div>\";\n    HeaderRowContainerComp.CENTER_TEMPLATE = \"<div class=\\\"ag-header-viewport\\\" role=\\\"presentation\\\">\\n            <div class=\\\"ag-header-container\\\" ref=\\\"eCenterContainer\\\" role=\\\"rowgroup\\\"></div>\\n        </div>\";\n    __decorate$1e([\n        RefSelector('eCenterContainer')\n    ], HeaderRowContainerComp.prototype, \"eCenterContainer\", void 0);\n    __decorate$1e([\n        PostConstruct\n    ], HeaderRowContainerComp.prototype, \"init\", null);\n    __decorate$1e([\n        PreDestroy\n    ], HeaderRowContainerComp.prototype, \"destroyRowComps\", null);\n    return HeaderRowContainerComp;\n}(Component));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$1g = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$1d = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar HeaderNavigationDirection;\n(function (HeaderNavigationDirection) {\n    HeaderNavigationDirection[HeaderNavigationDirection[\"UP\"] = 0] = \"UP\";\n    HeaderNavigationDirection[HeaderNavigationDirection[\"DOWN\"] = 1] = \"DOWN\";\n    HeaderNavigationDirection[HeaderNavigationDirection[\"LEFT\"] = 2] = \"LEFT\";\n    HeaderNavigationDirection[HeaderNavigationDirection[\"RIGHT\"] = 3] = \"RIGHT\";\n})(HeaderNavigationDirection || (HeaderNavigationDirection = {}));\nvar HeaderNavigationService = /** @class */ (function (_super) {\n    __extends$1g(HeaderNavigationService, _super);\n    function HeaderNavigationService() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    HeaderNavigationService.prototype.postConstruct = function () {\n        var _this = this;\n        this.ctrlsService.whenReady(function (p) {\n            _this.gridBodyCon = p.gridBodyCtrl;\n        });\n    };\n    HeaderNavigationService.prototype.getHeaderRowCount = function () {\n        var centerHeaderContainer = this.ctrlsService.getHeaderRowContainerCtrl();\n        return centerHeaderContainer ? centerHeaderContainer.getRowCount() : 0;\n    };\n    /*\n     * This method navigates grid header vertically\n     * @return {boolean} true to preventDefault on the event that caused this navigation.\n     */\n    HeaderNavigationService.prototype.navigateVertically = function (direction, fromHeader, event) {\n        if (!fromHeader) {\n            fromHeader = this.focusService.getFocusedHeader();\n        }\n        if (!fromHeader) {\n            return false;\n        }\n        var headerRowIndex = fromHeader.headerRowIndex, column = fromHeader.column;\n        var rowLen = this.getHeaderRowCount();\n        var isUp = direction === HeaderNavigationDirection.UP;\n        var _a = isUp\n            ? this.headerPositionUtils.getColumnVisibleParent(column, headerRowIndex)\n            : this.headerPositionUtils.getColumnVisibleChild(column, headerRowIndex), nextRow = _a.nextRow, nextFocusColumn = _a.nextFocusColumn;\n        var skipColumn = false;\n        if (nextRow < 0) {\n            nextRow = 0;\n            nextFocusColumn = column;\n            skipColumn = true;\n        }\n        if (nextRow >= rowLen) {\n            nextRow = -1; // -1 indicates the focus should move to grid rows.\n        }\n        if (!skipColumn && !nextFocusColumn) {\n            return false;\n        }\n        return this.focusService.focusHeaderPosition({\n            headerPosition: { headerRowIndex: nextRow, column: nextFocusColumn },\n            allowUserOverride: true,\n            event: event\n        });\n    };\n    /*\n     * This method navigates grid header horizontally\n     * @return {boolean} true to preventDefault on the event that caused this navigation.\n     */\n    HeaderNavigationService.prototype.navigateHorizontally = function (direction, fromTab, event) {\n        if (fromTab === void 0) { fromTab = false; }\n        var focusedHeader = this.focusService.getFocusedHeader();\n        var isLeft = direction === HeaderNavigationDirection.LEFT;\n        var isRtl = this.gridOptionsService.is('enableRtl');\n        var nextHeader;\n        var normalisedDirection;\n        // either navigating to the left or isRtl (cannot be both)\n        if (isLeft !== isRtl) {\n            normalisedDirection = 'Before';\n            nextHeader = this.headerPositionUtils.findHeader(focusedHeader, normalisedDirection);\n        }\n        else {\n            normalisedDirection = 'After';\n            nextHeader = this.headerPositionUtils.findHeader(focusedHeader, normalisedDirection);\n        }\n        if (nextHeader || !fromTab) {\n            return this.focusService.focusHeaderPosition({\n                headerPosition: nextHeader,\n                direction: normalisedDirection,\n                fromTab: fromTab,\n                allowUserOverride: true,\n                event: event\n            });\n        }\n        return this.focusNextHeaderRow(focusedHeader, normalisedDirection, event);\n    };\n    HeaderNavigationService.prototype.focusNextHeaderRow = function (focusedHeader, direction, event) {\n        var currentIndex = focusedHeader.headerRowIndex;\n        var nextPosition = null;\n        var nextRowIndex;\n        if (direction === 'Before') {\n            if (currentIndex > 0) {\n                nextRowIndex = currentIndex - 1;\n                nextPosition = this.headerPositionUtils.findColAtEdgeForHeaderRow(nextRowIndex, 'end');\n            }\n        }\n        else {\n            nextRowIndex = currentIndex + 1;\n            nextPosition = this.headerPositionUtils.findColAtEdgeForHeaderRow(nextRowIndex, 'start');\n        }\n        return this.focusService.focusHeaderPosition({\n            headerPosition: nextPosition,\n            direction: direction,\n            fromTab: true,\n            allowUserOverride: true,\n            event: event\n        });\n    };\n    HeaderNavigationService.prototype.scrollToColumn = function (column, direction) {\n        if (direction === void 0) { direction = 'After'; }\n        if (column.getPinned()) {\n            return;\n        }\n        var columnToScrollTo;\n        if (column instanceof ColumnGroup) {\n            var columns = column.getDisplayedLeafColumns();\n            columnToScrollTo = direction === 'Before' ? last(columns) : columns[0];\n        }\n        else {\n            columnToScrollTo = column;\n        }\n        this.gridBodyCon.getScrollFeature().ensureColumnVisible(columnToScrollTo);\n    };\n    __decorate$1d([\n        Autowired('focusService')\n    ], HeaderNavigationService.prototype, \"focusService\", void 0);\n    __decorate$1d([\n        Autowired('headerPositionUtils')\n    ], HeaderNavigationService.prototype, \"headerPositionUtils\", void 0);\n    __decorate$1d([\n        Autowired('ctrlsService')\n    ], HeaderNavigationService.prototype, \"ctrlsService\", void 0);\n    __decorate$1d([\n        PostConstruct\n    ], HeaderNavigationService.prototype, \"postConstruct\", null);\n    HeaderNavigationService = __decorate$1d([\n        Bean('headerNavigationService')\n    ], HeaderNavigationService);\n    return HeaderNavigationService;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$1f = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$1c = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar GridHeaderCtrl = /** @class */ (function (_super) {\n    __extends$1f(GridHeaderCtrl, _super);\n    function GridHeaderCtrl() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    GridHeaderCtrl.prototype.setComp = function (comp, eGui, eFocusableElement) {\n        this.comp = comp;\n        this.eGui = eGui;\n        this.createManagedBean(new ManagedFocusFeature(eFocusableElement, {\n            onTabKeyDown: this.onTabKeyDown.bind(this),\n            handleKeyDown: this.handleKeyDown.bind(this),\n            onFocusOut: this.onFocusOut.bind(this)\n        }));\n        // for setting ag-pivot-on / ag-pivot-off CSS classes\n        this.addManagedListener(this.eventService, Events.EVENT_COLUMN_PIVOT_MODE_CHANGED, this.onPivotModeChanged.bind(this));\n        this.addManagedListener(this.eventService, Events.EVENT_DISPLAYED_COLUMNS_CHANGED, this.onDisplayedColumnsChanged.bind(this));\n        this.onPivotModeChanged();\n        this.setupHeaderHeight();\n        this.ctrlsService.registerGridHeaderCtrl(this);\n    };\n    GridHeaderCtrl.prototype.setupHeaderHeight = function () {\n        var listener = this.setHeaderHeight.bind(this);\n        listener();\n        this.addManagedPropertyListener('headerHeight', listener);\n        this.addManagedPropertyListener('pivotHeaderHeight', listener);\n        this.addManagedPropertyListener('groupHeaderHeight', listener);\n        this.addManagedPropertyListener('pivotGroupHeaderHeight', listener);\n        this.addManagedPropertyListener('floatingFiltersHeight', listener);\n        this.addManagedListener(this.eventService, Events.EVENT_DISPLAYED_COLUMNS_CHANGED, listener);\n        this.addManagedListener(this.eventService, Events.EVENT_COLUMN_HEADER_HEIGHT_CHANGED, listener);\n        this.addManagedListener(this.eventService, Events.EVENT_GRID_STYLES_CHANGED, listener);\n    };\n    GridHeaderCtrl.prototype.getHeaderHeight = function () {\n        return this.headerHeight;\n    };\n    GridHeaderCtrl.prototype.setHeaderHeight = function () {\n        var columnModel = this.columnModel;\n        var numberOfFloating = 0;\n        var headerRowCount = columnModel.getHeaderRowCount();\n        var totalHeaderHeight;\n        var hasFloatingFilters = columnModel.hasFloatingFilters();\n        if (hasFloatingFilters) {\n            headerRowCount++;\n            numberOfFloating = 1;\n        }\n        var groupHeight = this.columnModel.getColumnGroupHeaderRowHeight();\n        var headerHeight = this.columnModel.getColumnHeaderRowHeight();\n        var numberOfNonGroups = 1 + numberOfFloating;\n        var numberOfGroups = headerRowCount - numberOfNonGroups;\n        totalHeaderHeight = numberOfFloating * columnModel.getFloatingFiltersHeight();\n        totalHeaderHeight += numberOfGroups * groupHeight;\n        totalHeaderHeight += headerHeight;\n        if (this.headerHeight === totalHeaderHeight) {\n            return;\n        }\n        this.headerHeight = totalHeaderHeight;\n        // one extra pixel is needed here to account for the\n        // height of the border\n        var px = totalHeaderHeight + 1 + \"px\";\n        this.comp.setHeightAndMinHeight(px);\n        this.eventService.dispatchEvent({\n            type: Events.EVENT_HEADER_HEIGHT_CHANGED\n        });\n    };\n    GridHeaderCtrl.prototype.onPivotModeChanged = function () {\n        var pivotMode = this.columnModel.isPivotMode();\n        this.comp.addOrRemoveCssClass('ag-pivot-on', pivotMode);\n        this.comp.addOrRemoveCssClass('ag-pivot-off', !pivotMode);\n    };\n    GridHeaderCtrl.prototype.onDisplayedColumnsChanged = function () {\n        var columns = this.columnModel.getAllDisplayedColumns();\n        var shouldAllowOverflow = columns.some(function (col) { return col.isSpanHeaderHeight(); });\n        this.comp.addOrRemoveCssClass('ag-header-allow-overflow', shouldAllowOverflow);\n    };\n    GridHeaderCtrl.prototype.onTabKeyDown = function (e) {\n        var isRtl = this.gridOptionsService.is('enableRtl');\n        var direction = e.shiftKey !== isRtl\n            ? HeaderNavigationDirection.LEFT\n            : HeaderNavigationDirection.RIGHT;\n        if (this.headerNavigationService.navigateHorizontally(direction, true, e) ||\n            this.focusService.focusNextGridCoreContainer(e.shiftKey)) {\n            e.preventDefault();\n        }\n    };\n    GridHeaderCtrl.prototype.handleKeyDown = function (e) {\n        var direction = null;\n        switch (e.key) {\n            case KeyCode.LEFT:\n                direction = HeaderNavigationDirection.LEFT;\n            case KeyCode.RIGHT:\n                if (!exists(direction)) {\n                    direction = HeaderNavigationDirection.RIGHT;\n                }\n                this.headerNavigationService.navigateHorizontally(direction, false, e);\n                break;\n            case KeyCode.UP:\n                direction = HeaderNavigationDirection.UP;\n            case KeyCode.DOWN:\n                if (!exists(direction)) {\n                    direction = HeaderNavigationDirection.DOWN;\n                }\n                if (this.headerNavigationService.navigateVertically(direction, null, e)) {\n                    e.preventDefault();\n                }\n                break;\n            default:\n                return;\n        }\n    };\n    GridHeaderCtrl.prototype.onFocusOut = function (e) {\n        var eDocument = this.gridOptionsService.getDocument();\n        var relatedTarget = e.relatedTarget;\n        if (!relatedTarget && this.eGui.contains(eDocument.activeElement)) {\n            return;\n        }\n        if (!this.eGui.contains(relatedTarget)) {\n            this.focusService.clearFocusedHeader();\n        }\n    };\n    __decorate$1c([\n        Autowired('headerNavigationService')\n    ], GridHeaderCtrl.prototype, \"headerNavigationService\", void 0);\n    __decorate$1c([\n        Autowired('focusService')\n    ], GridHeaderCtrl.prototype, \"focusService\", void 0);\n    __decorate$1c([\n        Autowired('columnModel')\n    ], GridHeaderCtrl.prototype, \"columnModel\", void 0);\n    __decorate$1c([\n        Autowired('ctrlsService')\n    ], GridHeaderCtrl.prototype, \"ctrlsService\", void 0);\n    return GridHeaderCtrl;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$1e = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$1b = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar GridHeaderComp = /** @class */ (function (_super) {\n    __extends$1e(GridHeaderComp, _super);\n    function GridHeaderComp() {\n        return _super.call(this, GridHeaderComp.TEMPLATE) || this;\n    }\n    GridHeaderComp.prototype.postConstruct = function () {\n        var _this = this;\n        var compProxy = {\n            addOrRemoveCssClass: function (cssClassName, on) { return _this.addOrRemoveCssClass(cssClassName, on); },\n            setHeightAndMinHeight: function (height) {\n                _this.getGui().style.height = height;\n                _this.getGui().style.minHeight = height;\n            }\n        };\n        var ctrl = this.createManagedBean(new GridHeaderCtrl());\n        ctrl.setComp(compProxy, this.getGui(), this.getFocusableElement());\n        var addContainer = function (container) {\n            _this.createManagedBean(container);\n            _this.appendChild(container);\n        };\n        addContainer(new HeaderRowContainerComp('left'));\n        addContainer(new HeaderRowContainerComp(null));\n        addContainer(new HeaderRowContainerComp('right'));\n    };\n    GridHeaderComp.TEMPLATE = \"<div class=\\\"ag-header\\\" role=\\\"presentation\\\"/>\";\n    __decorate$1b([\n        PostConstruct\n    ], GridHeaderComp.prototype, \"postConstruct\", null);\n    return GridHeaderComp;\n}(Component));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$1d = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$1a = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar HorizontalResizeService = /** @class */ (function (_super) {\n    __extends$1d(HorizontalResizeService, _super);\n    function HorizontalResizeService() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    HorizontalResizeService.prototype.addResizeBar = function (params) {\n        var _this = this;\n        var dragSource = {\n            dragStartPixels: params.dragStartPixels || 0,\n            eElement: params.eResizeBar,\n            onDragStart: this.onDragStart.bind(this, params),\n            onDragStop: this.onDragStop.bind(this, params),\n            onDragging: this.onDragging.bind(this, params)\n        };\n        this.dragService.addDragSource(dragSource, true);\n        // we pass remove func back to the caller, so call can tell us when they\n        // are finished, and then we remove the listener from the drag source\n        var finishedWithResizeFunc = function () { return _this.dragService.removeDragSource(dragSource); };\n        return finishedWithResizeFunc;\n    };\n    HorizontalResizeService.prototype.onDragStart = function (params, mouseEvent) {\n        this.dragStartX = mouseEvent.clientX;\n        this.setResizeIcons();\n        var shiftKey = mouseEvent instanceof MouseEvent && mouseEvent.shiftKey === true;\n        params.onResizeStart(shiftKey);\n    };\n    HorizontalResizeService.prototype.setResizeIcons = function () {\n        var ctrl = this.ctrlsService.getGridCtrl();\n        // change the body cursor, so when drag moves out of the drag bar, the cursor is still 'resize' (or 'move'\n        ctrl.setResizeCursor(true);\n        // we don't want text selection outside the grid (otherwise it looks weird as text highlights when we move)\n        ctrl.disableUserSelect(true);\n    };\n    HorizontalResizeService.prototype.onDragStop = function (params, mouseEvent) {\n        params.onResizeEnd(this.resizeAmount);\n        this.resetIcons();\n    };\n    HorizontalResizeService.prototype.resetIcons = function () {\n        var ctrl = this.ctrlsService.getGridCtrl();\n        ctrl.setResizeCursor(false);\n        ctrl.disableUserSelect(false);\n    };\n    HorizontalResizeService.prototype.onDragging = function (params, mouseEvent) {\n        this.resizeAmount = mouseEvent.clientX - this.dragStartX;\n        params.onResizing(this.resizeAmount);\n    };\n    __decorate$1a([\n        Autowired('dragService')\n    ], HorizontalResizeService.prototype, \"dragService\", void 0);\n    __decorate$1a([\n        Autowired('ctrlsService')\n    ], HorizontalResizeService.prototype, \"ctrlsService\", void 0);\n    HorizontalResizeService = __decorate$1a([\n        Bean('horizontalResizeService')\n    ], HorizontalResizeService);\n    return HorizontalResizeService;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$1c = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$19 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar StandardMenuFactory = /** @class */ (function (_super) {\n    __extends$1c(StandardMenuFactory, _super);\n    function StandardMenuFactory() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    StandardMenuFactory.prototype.hideActiveMenu = function () {\n        if (this.hidePopup) {\n            this.hidePopup();\n        }\n    };\n    StandardMenuFactory.prototype.showMenuAfterMouseEvent = function (column, mouseEvent) {\n        var _this = this;\n        this.showPopup(column, function (eMenu) {\n            _this.popupService.positionPopupUnderMouseEvent({\n                column: column,\n                type: 'columnMenu',\n                mouseEvent: mouseEvent,\n                ePopup: eMenu\n            });\n        }, 'columnMenu', mouseEvent.target);\n    };\n    StandardMenuFactory.prototype.showMenuAfterButtonClick = function (column, eventSource, containerType) {\n        var _this = this;\n        this.showPopup(column, function (eMenu) {\n            _this.popupService.positionPopupByComponent({\n                type: containerType,\n                eventSource: eventSource,\n                ePopup: eMenu,\n                keepWithinBounds: true,\n                position: 'under',\n                column: column,\n            });\n        }, containerType, eventSource);\n    };\n    StandardMenuFactory.prototype.showPopup = function (column, positionCallback, containerType, eventSource) {\n        var _this = this;\n        var filterWrapper = this.filterManager.getOrCreateFilterWrapper(column, 'COLUMN_MENU');\n        if (!filterWrapper) {\n            throw new Error('AG Grid - unable to show popup filter, filter instantiation failed');\n        }\n        var eMenu = document.createElement('div');\n        setAriaRole(eMenu, 'presentation');\n        eMenu.classList.add('ag-menu');\n        this.tabListener = this.addManagedListener(eMenu, 'keydown', function (e) { return _this.trapFocusWithin(e, eMenu); });\n        filterWrapper.guiPromise.then(function (gui) { return eMenu.appendChild(gui); });\n        var hidePopup;\n        var afterGuiDetached = function () { var _a; return (_a = filterWrapper.filterPromise) === null || _a === void 0 ? void 0 : _a.then(function (filter) { var _a; return (_a = filter === null || filter === void 0 ? void 0 : filter.afterGuiDetached) === null || _a === void 0 ? void 0 : _a.call(filter); }); };\n        var anchorToElement = eventSource || this.ctrlsService.getGridBodyCtrl().getGui();\n        var closedCallback = function (e) {\n            column.setMenuVisible(false, 'contextMenu');\n            var isKeyboardEvent = e instanceof KeyboardEvent;\n            if (_this.tabListener) {\n                _this.tabListener = _this.tabListener();\n            }\n            if (isKeyboardEvent && eventSource && isVisible(eventSource)) {\n                var focusableEl = _this.focusService.findTabbableParent(eventSource);\n                if (focusableEl) {\n                    focusableEl.focus();\n                }\n            }\n            afterGuiDetached();\n        };\n        var translate = this.localeService.getLocaleTextFunc();\n        var addPopupRes = this.popupService.addPopup({\n            modal: true,\n            eChild: eMenu,\n            closeOnEsc: true,\n            closedCallback: closedCallback,\n            positionCallback: function () { return positionCallback(eMenu); },\n            anchorToElement: anchorToElement,\n            ariaLabel: translate('ariaLabelColumnMenu', 'Column Menu')\n        });\n        if (addPopupRes) {\n            this.hidePopup = hidePopup = addPopupRes.hideFunc;\n        }\n        filterWrapper.filterPromise.then(function (filter) {\n            // need to make sure the filter is present before positioning, as only\n            // after filter it is visible can we find out what the width of it is\n            positionCallback(eMenu);\n            if (filter.afterGuiAttached) {\n                filter.afterGuiAttached({ container: containerType, hidePopup: hidePopup });\n            }\n        });\n        column.setMenuVisible(true, 'contextMenu');\n    };\n    StandardMenuFactory.prototype.trapFocusWithin = function (e, menu) {\n        if (e.key !== KeyCode.TAB ||\n            e.defaultPrevented ||\n            this.focusService.findNextFocusableElement(menu, false, e.shiftKey)) {\n            return;\n        }\n        e.preventDefault();\n        this.focusService.focusInto(menu, e.shiftKey);\n    };\n    StandardMenuFactory.prototype.isMenuEnabled = function (column) {\n        // for standard, we show menu if filter is enabled, and the menu is not suppressed by passing an empty array\n        return column.isFilterAllowed() && column.getMenuTabs(['filterMenuTab']).includes('filterMenuTab');\n    };\n    __decorate$19([\n        Autowired('filterManager')\n    ], StandardMenuFactory.prototype, \"filterManager\", void 0);\n    __decorate$19([\n        Autowired('popupService')\n    ], StandardMenuFactory.prototype, \"popupService\", void 0);\n    __decorate$19([\n        Autowired('focusService')\n    ], StandardMenuFactory.prototype, \"focusService\", void 0);\n    __decorate$19([\n        Autowired('ctrlsService')\n    ], StandardMenuFactory.prototype, \"ctrlsService\", void 0);\n    StandardMenuFactory = __decorate$19([\n        Bean('menuFactory')\n    ], StandardMenuFactory);\n    return StandardMenuFactory;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$1b = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$18 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar TabbedLayout = /** @class */ (function (_super) {\n    __extends$1b(TabbedLayout, _super);\n    function TabbedLayout(params) {\n        var _this = _super.call(this, TabbedLayout.getTemplate(params.cssClass)) || this;\n        _this.items = [];\n        _this.tabbedItemScrollMap = new Map();\n        _this.params = params;\n        if (params.items) {\n            params.items.forEach(function (item) { return _this.addItem(item); });\n        }\n        return _this;\n    }\n    TabbedLayout.prototype.postConstruct = function () {\n        var _this = this;\n        this.createManagedBean(new ManagedFocusFeature(this.getFocusableElement(), {\n            onTabKeyDown: this.onTabKeyDown.bind(this),\n            handleKeyDown: this.handleKeyDown.bind(this)\n        }));\n        this.addDestroyFunc(function () { var _a, _b, _c; return (_c = (_b = (_a = _this.activeItem) === null || _a === void 0 ? void 0 : _a.tabbedItem) === null || _b === void 0 ? void 0 : _b.afterDetachedCallback) === null || _c === void 0 ? void 0 : _c.call(_b); });\n    };\n    TabbedLayout.getTemplate = function (cssClass) {\n        return /* html */ \"<div class=\\\"ag-tabs \" + cssClass + \"\\\">\\n            <div ref=\\\"eHeader\\\" role=\\\"tablist\\\" class=\\\"ag-tabs-header \" + (cssClass ? cssClass + \"-header\" : '') + \"\\\"></div>\\n            <div ref=\\\"eBody\\\" role=\\\"presentation\\\" class=\\\"ag-tabs-body \" + (cssClass ? cssClass + \"-body\" : '') + \"\\\"></div>\\n        </div>\";\n    };\n    TabbedLayout.prototype.handleKeyDown = function (e) {\n        var eDocument = this.gridOptionsService.getDocument();\n        switch (e.key) {\n            case KeyCode.RIGHT:\n            case KeyCode.LEFT:\n                if (!this.eHeader.contains(eDocument.activeElement)) {\n                    return;\n                }\n                var isRightKey = e.key === KeyCode.RIGHT;\n                var isRtl = this.gridOptionsService.is('enableRtl');\n                var currentPosition = this.items.indexOf(this.activeItem);\n                var nextPosition = isRightKey !== isRtl ? Math.min(currentPosition + 1, this.items.length - 1) : Math.max(currentPosition - 1, 0);\n                if (currentPosition === nextPosition) {\n                    return;\n                }\n                e.preventDefault();\n                var nextItem = this.items[nextPosition];\n                this.showItemWrapper(nextItem);\n                nextItem.eHeaderButton.focus();\n                break;\n            case KeyCode.UP:\n            case KeyCode.DOWN:\n                e.stopPropagation();\n                break;\n        }\n    };\n    TabbedLayout.prototype.onTabKeyDown = function (e) {\n        if (e.defaultPrevented) {\n            return;\n        }\n        var _a = this, focusService = _a.focusService, eHeader = _a.eHeader, eBody = _a.eBody, activeItem = _a.activeItem;\n        var eDocument = this.gridOptionsService.getDocument();\n        var activeElement = eDocument.activeElement;\n        var target = e.target;\n        e.preventDefault();\n        if (eHeader.contains(activeElement)) {\n            // focus is in header, move into body of popup\n            focusService.focusInto(eBody, e.shiftKey);\n            return;\n        }\n        var nextEl = null;\n        if (focusService.isTargetUnderManagedComponent(eBody, target)) {\n            if (e.shiftKey) {\n                nextEl = this.focusService.findFocusableElementBeforeTabGuard(eBody, target);\n            }\n            if (!nextEl) {\n                nextEl = activeItem.eHeaderButton;\n            }\n        }\n        if (!nextEl && eBody.contains(activeElement)) {\n            nextEl = focusService.findNextFocusableElement(eBody, false, e.shiftKey);\n            if (!nextEl) {\n                nextEl = activeItem.eHeaderButton;\n            }\n        }\n        if (nextEl) {\n            nextEl.focus();\n        }\n    };\n    TabbedLayout.prototype.setAfterAttachedParams = function (params) {\n        this.afterAttachedParams = params;\n    };\n    TabbedLayout.prototype.showFirstItem = function () {\n        if (this.items.length > 0) {\n            this.showItemWrapper(this.items[0]);\n        }\n    };\n    TabbedLayout.prototype.addItem = function (item) {\n        var eHeaderButton = document.createElement('span');\n        setAriaRole(eHeaderButton, 'tab');\n        eHeaderButton.setAttribute('tabIndex', '-1');\n        eHeaderButton.appendChild(item.title);\n        eHeaderButton.classList.add('ag-tab');\n        this.eHeader.appendChild(eHeaderButton);\n        setAriaLabel(eHeaderButton, item.titleLabel);\n        var wrapper = {\n            tabbedItem: item,\n            eHeaderButton: eHeaderButton\n        };\n        this.items.push(wrapper);\n        eHeaderButton.addEventListener('click', this.showItemWrapper.bind(this, wrapper));\n    };\n    TabbedLayout.prototype.showItem = function (tabbedItem) {\n        var itemWrapper = this.items.find(function (wrapper) { return wrapper.tabbedItem === tabbedItem; });\n        if (itemWrapper) {\n            this.showItemWrapper(itemWrapper);\n        }\n    };\n    TabbedLayout.prototype.showItemWrapper = function (wrapper) {\n        var _this = this;\n        var _a, _b;\n        var tabbedItem = wrapper.tabbedItem, eHeaderButton = wrapper.eHeaderButton;\n        if (this.params.onItemClicked) {\n            this.params.onItemClicked({ item: tabbedItem });\n        }\n        if (this.activeItem === wrapper) {\n            callIfPresent(this.params.onActiveItemClicked);\n            return;\n        }\n        if (this.lastScrollListener) {\n            this.lastScrollListener = this.lastScrollListener();\n        }\n        clearElement(this.eBody);\n        tabbedItem.bodyPromise.then(function (body) {\n            _this.eBody.appendChild(body);\n            var onlyUnmanaged = !_this.focusService.isKeyboardMode();\n            _this.focusService.focusInto(_this.eBody, false, onlyUnmanaged);\n            if (tabbedItem.afterAttachedCallback) {\n                tabbedItem.afterAttachedCallback(_this.afterAttachedParams);\n            }\n            if (_this.params.keepScrollPosition) {\n                var scrollableContainer_1 = (tabbedItem.getScrollableContainer && tabbedItem.getScrollableContainer()) || body;\n                _this.lastScrollListener = _this.addManagedListener(scrollableContainer_1, 'scroll', function () {\n                    _this.tabbedItemScrollMap.set(tabbedItem.name, scrollableContainer_1.scrollTop);\n                });\n                var scrollPosition_1 = _this.tabbedItemScrollMap.get(tabbedItem.name);\n                if (scrollPosition_1 !== undefined) {\n                    // Safari needs a small timeout or it will fire a scroll event to position 0\n                    setTimeout(function () {\n                        scrollableContainer_1.scrollTop = scrollPosition_1;\n                    }, 0);\n                }\n            }\n        });\n        if (this.activeItem) {\n            this.activeItem.eHeaderButton.classList.remove('ag-tab-selected');\n            (_b = (_a = this.activeItem.tabbedItem).afterDetachedCallback) === null || _b === void 0 ? void 0 : _b.call(_a);\n        }\n        eHeaderButton.classList.add('ag-tab-selected');\n        this.activeItem = wrapper;\n    };\n    __decorate$18([\n        Autowired('focusService')\n    ], TabbedLayout.prototype, \"focusService\", void 0);\n    __decorate$18([\n        RefSelector('eHeader')\n    ], TabbedLayout.prototype, \"eHeader\", void 0);\n    __decorate$18([\n        RefSelector('eBody')\n    ], TabbedLayout.prototype, \"eBody\", void 0);\n    __decorate$18([\n        PostConstruct\n    ], TabbedLayout.prototype, \"postConstruct\", null);\n    return TabbedLayout;\n}(Component));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\n/**\n * @deprecated Since v29 simpleHttpRequest has been deprecated as it was only meant for use in internal AG Grid documentation examples. Please use the browser fetch api directly.\n */\nfunction simpleHttpRequest(params) {\n    doOnce(function () { return console.warn(\"AG Grid: Since v29 simpleHttpRequest has been deprecated as it was only meant for use in internal AG Grid documentation examples. Please use the browser fetch api directly.\"); }, 'simpleHttpRequest');\n    return new AgPromise(function (resolve) {\n        var httpRequest = new XMLHttpRequest();\n        httpRequest.open('GET', params.url);\n        httpRequest.send();\n        httpRequest.onreadystatechange = function () {\n            if (httpRequest.readyState === 4 && httpRequest.status === 200) {\n                resolve(JSON.parse(httpRequest.responseText));\n            }\n        };\n    });\n}\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$1a = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$17 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar DEBOUNCE_DELAY = 50;\nvar ResizeObserverService = /** @class */ (function (_super) {\n    __extends$1a(ResizeObserverService, _super);\n    function ResizeObserverService() {\n        var _this = _super !== null && _super.apply(this, arguments) || this;\n        _this.polyfillFunctions = [];\n        return _this;\n    }\n    ResizeObserverService.prototype.observeResize = function (element, callback) {\n        var _this = this;\n        var eDocument = this.gridOptionsService.getDocument();\n        var win = (eDocument.defaultView || window);\n        var useBrowserResizeObserver = function () {\n            var resizeObserver = new win.ResizeObserver(callback);\n            resizeObserver.observe(element);\n            return function () { return resizeObserver.disconnect(); };\n        };\n        var usePolyfill = function () {\n            // initialise to the current width and height, so first call will have no changes\n            var widthLastTime = offsetWidth(element);\n            var heightLastTime = offsetHeight(element);\n            // when finished, this gets turned to false.\n            var running = true;\n            var periodicallyCheckWidthAndHeight = function () {\n                if (running) {\n                    var newWidth = offsetWidth(element);\n                    var newHeight = offsetHeight(element);\n                    var changed = newWidth !== widthLastTime || newHeight !== heightLastTime;\n                    if (changed) {\n                        widthLastTime = newWidth;\n                        heightLastTime = newHeight;\n                        callback();\n                    }\n                    _this.doNextPolyfillTurn(periodicallyCheckWidthAndHeight);\n                }\n            };\n            periodicallyCheckWidthAndHeight();\n            // the callback function we return sets running to false\n            return function () { return running = false; };\n        };\n        var suppressResize = this.gridOptionsService.is('suppressBrowserResizeObserver');\n        var resizeObserverExists = !!win.ResizeObserver;\n        if (resizeObserverExists && !suppressResize) {\n            return useBrowserResizeObserver();\n        }\n        return usePolyfill();\n    };\n    ResizeObserverService.prototype.doNextPolyfillTurn = function (func) {\n        this.polyfillFunctions.push(func);\n        this.schedulePolyfill();\n    };\n    ResizeObserverService.prototype.schedulePolyfill = function () {\n        var _this = this;\n        if (this.polyfillScheduled) {\n            return;\n        }\n        var executeAllFuncs = function () {\n            var funcs = _this.polyfillFunctions;\n            // make sure set scheduled to false and clear clear array\n            // before executing the funcs, as the funcs could add more funcs\n            _this.polyfillScheduled = false;\n            _this.polyfillFunctions = [];\n            funcs.forEach(function (f) { return f(); });\n        };\n        this.polyfillScheduled = true;\n        this.getFrameworkOverrides().setTimeout(executeAllFuncs, DEBOUNCE_DELAY);\n    };\n    ResizeObserverService = __decorate$17([\n        Bean('resizeObserverService')\n    ], ResizeObserverService);\n    return ResizeObserverService;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$19 = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$16 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar AnimationFrameService = /** @class */ (function (_super) {\n    __extends$19(AnimationFrameService, _super);\n    function AnimationFrameService() {\n        var _this = _super !== null && _super.apply(this, arguments) || this;\n        // p1 and p2 are create tasks are to do with row and cell creation.\n        // for them we want to execute according to row order, so we use\n        // TaskItem so we know what index the item is for.\n        _this.createTasksP1 = { list: [], sorted: false }; // eg drawing back-ground of rows\n        _this.createTasksP2 = { list: [], sorted: false }; // eg cell renderers, adding hover functionality\n        // destroy tasks are to do with row removal. they are done after row creation as the user will need to see new\n        // rows first (as blank is scrolled into view), when we remove the old rows (no longer in view) is not as\n        // important.\n        _this.destroyTasks = [];\n        _this.ticking = false;\n        // we need to know direction of scroll, to build up rows in the direction of\n        // the scroll. eg if user scrolls down, we extend the rows by building down.\n        _this.scrollGoingDown = true;\n        _this.lastPage = 0;\n        _this.lastScrollTop = 0;\n        _this.taskCount = 0;\n        _this.cancelledTasks = new Set();\n        return _this;\n    }\n    AnimationFrameService.prototype.setScrollTop = function (scrollTop) {\n        var isPaginationActive = this.gridOptionsService.is('pagination');\n        this.scrollGoingDown = scrollTop >= this.lastScrollTop;\n        if (isPaginationActive && scrollTop === 0) {\n            var currentPage = this.paginationProxy.getCurrentPage();\n            if (currentPage !== this.lastPage) {\n                this.lastPage = currentPage;\n                this.scrollGoingDown = true;\n            }\n        }\n        this.lastScrollTop = scrollTop;\n    };\n    AnimationFrameService.prototype.init = function () {\n        this.useAnimationFrame = !this.gridOptionsService.is('suppressAnimationFrame');\n    };\n    AnimationFrameService.prototype.isOn = function () {\n        return this.useAnimationFrame;\n    };\n    // this method is for our AG Grid sanity only - if animation frames are turned off,\n    // then no place in the code should be looking to add any work to be done in animation\n    // frames. this stops bugs - where some code is asking for a frame to be executed\n    // when it should not.\n    AnimationFrameService.prototype.verifyAnimationFrameOn = function (methodName) {\n        if (this.useAnimationFrame === false) {\n            console.warn(\"AG Grid: AnimationFrameService.\" + methodName + \" called but animation frames are off\");\n        }\n    };\n    AnimationFrameService.prototype.createTask = function (task, index, list) {\n        this.verifyAnimationFrameOn(list);\n        var taskItem = { task: task, index: index, createOrder: ++this.taskCount };\n        this.addTaskToList(this[list], taskItem);\n        this.schedule();\n    };\n    AnimationFrameService.prototype.cancelTask = function (task) {\n        this.cancelledTasks.add(task);\n    };\n    AnimationFrameService.prototype.addTaskToList = function (taskList, task) {\n        taskList.list.push(task);\n        taskList.sorted = false;\n    };\n    AnimationFrameService.prototype.sortTaskList = function (taskList) {\n        if (taskList.sorted) {\n            return;\n        }\n        var sortDirection = this.scrollGoingDown ? 1 : -1;\n        // sort first by row index (taking into account scroll direction), then by\n        // order of task creation (always ascending, so cells will render left-to-right)\n        taskList.list.sort(function (a, b) { return a.index !== b.index ? sortDirection * (b.index - a.index) : b.createOrder - a.createOrder; });\n        taskList.sorted = true;\n    };\n    AnimationFrameService.prototype.addDestroyTask = function (task) {\n        this.verifyAnimationFrameOn('createTasksP3');\n        this.destroyTasks.push(task);\n        this.schedule();\n    };\n    AnimationFrameService.prototype.executeFrame = function (millis) {\n        this.verifyAnimationFrameOn('executeFrame');\n        var p1TaskList = this.createTasksP1;\n        var p1Tasks = p1TaskList.list;\n        var p2TaskList = this.createTasksP2;\n        var p2Tasks = p2TaskList.list;\n        var destroyTasks = this.destroyTasks;\n        var frameStart = new Date().getTime();\n        var duration = (new Date().getTime()) - frameStart;\n        // 16ms is 60 fps\n        var noMaxMillis = millis <= 0;\n        var gridBodyCon = this.ctrlsService.getGridBodyCtrl();\n        while (noMaxMillis || duration < millis) {\n            var gridBodyDidSomething = gridBodyCon.getScrollFeature().scrollGridIfNeeded();\n            if (!gridBodyDidSomething) {\n                var task = void 0;\n                if (p1Tasks.length) {\n                    this.sortTaskList(p1TaskList);\n                    task = p1Tasks.pop().task;\n                }\n                else if (p2Tasks.length) {\n                    this.sortTaskList(p2TaskList);\n                    task = p2Tasks.pop().task;\n                }\n                else if (destroyTasks.length) {\n                    task = destroyTasks.pop();\n                }\n                else {\n                    this.cancelledTasks.clear();\n                    break;\n                }\n                if (!this.cancelledTasks.has(task)) {\n                    task();\n                }\n            }\n            duration = (new Date().getTime()) - frameStart;\n        }\n        if (p1Tasks.length || p2Tasks.length || destroyTasks.length) {\n            this.requestFrame();\n        }\n        else {\n            this.stopTicking();\n        }\n    };\n    AnimationFrameService.prototype.stopTicking = function () {\n        this.ticking = false;\n    };\n    AnimationFrameService.prototype.flushAllFrames = function () {\n        if (!this.useAnimationFrame) {\n            return;\n        }\n        this.executeFrame(-1);\n    };\n    AnimationFrameService.prototype.schedule = function () {\n        if (!this.useAnimationFrame) {\n            return;\n        }\n        if (!this.ticking) {\n            this.ticking = true;\n            this.requestFrame();\n        }\n    };\n    AnimationFrameService.prototype.requestFrame = function () {\n        // check for the existence of requestAnimationFrame, and if\n        // it's missing, then we polyfill it with setTimeout()\n        var callback = this.executeFrame.bind(this, 60);\n        var eDocument = this.gridOptionsService.getDocument();\n        var win = (eDocument.defaultView || window);\n        if (win.requestAnimationFrame) {\n            win.requestAnimationFrame(callback);\n        }\n        else if (win.webkitRequestAnimationFrame) {\n            win.webkitRequestAnimationFrame(callback);\n        }\n        else {\n            win.setTimeout(callback, 0);\n        }\n    };\n    AnimationFrameService.prototype.isQueueEmpty = function () {\n        return !this.ticking;\n    };\n    // a debounce utility used for parts of the app involved with rendering.\n    // the advantage over normal debounce is the client can call flushAllFrames()\n    // to make sure all rendering is complete. we don't wait any milliseconds,\n    // as this is intended to batch calls in one VM turn.\n    AnimationFrameService.prototype.debounce = function (func) {\n        var _this = this;\n        var pending = false;\n        return function () {\n            if (!_this.isOn()) {\n                _this.getFrameworkOverrides().setTimeout(func, 0);\n                return;\n            }\n            if (pending) {\n                return;\n            }\n            pending = true;\n            _this.addDestroyTask(function () {\n                pending = false;\n                func();\n            });\n        };\n    };\n    __decorate$16([\n        Autowired('ctrlsService')\n    ], AnimationFrameService.prototype, \"ctrlsService\", void 0);\n    __decorate$16([\n        Autowired('paginationProxy')\n    ], AnimationFrameService.prototype, \"paginationProxy\", void 0);\n    __decorate$16([\n        PostConstruct\n    ], AnimationFrameService.prototype, \"init\", null);\n    AnimationFrameService = __decorate$16([\n        Bean('animationFrameService')\n    ], AnimationFrameService);\n    return AnimationFrameService;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$18 = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$15 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar AutoWidthCalculator = /** @class */ (function (_super) {\n    __extends$18(AutoWidthCalculator, _super);\n    function AutoWidthCalculator() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    AutoWidthCalculator.prototype.postConstruct = function () {\n        var _this = this;\n        this.ctrlsService.whenReady(function (p) {\n            _this.centerRowContainerCtrl = p.centerRowContainerCtrl;\n        });\n    };\n    // this is the trick: we create a dummy container and clone all the cells\n    // into the dummy, then check the dummy's width. then destroy the dummy\n    // as we don't need it any more.\n    // drawback: only the cells visible on the screen are considered\n    AutoWidthCalculator.prototype.getPreferredWidthForColumn = function (column, skipHeader) {\n        var eHeaderCell = this.getHeaderCellForColumn(column);\n        // cell isn't visible\n        if (!eHeaderCell) {\n            return -1;\n        }\n        var elements = this.rowRenderer.getAllCellsForColumn(column);\n        if (!skipHeader) {\n            // we only consider the lowest level cell, not the group cell. in 99% of the time, this\n            // will be enough. if we consider groups, then it gets too complicated for what it's worth,\n            // as the groups can span columns and this class only considers one column at a time.\n            elements.push(eHeaderCell);\n        }\n        return this.addElementsToContainerAndGetWidth(elements);\n    };\n    AutoWidthCalculator.prototype.getPreferredWidthForColumnGroup = function (columnGroup) {\n        var eHeaderCell = this.getHeaderCellForColumn(columnGroup);\n        if (!eHeaderCell) {\n            return -1;\n        }\n        return this.addElementsToContainerAndGetWidth([eHeaderCell]);\n    };\n    AutoWidthCalculator.prototype.addElementsToContainerAndGetWidth = function (elements) {\n        var _this = this;\n        // this element has to be a form, otherwise form elements within a cell\n        // will be validated while being cloned. This can cause issues such as \n        // radio buttons being reset and losing their values.\n        var eDummyContainer = document.createElement('form');\n        // position fixed, so it isn't restricted to the boundaries of the parent\n        eDummyContainer.style.position = 'fixed';\n        // we put the dummy into the body container, so it will inherit all the\n        // css styles that the real cells are inheriting\n        var eBodyContainer = this.centerRowContainerCtrl.getContainerElement();\n        eBodyContainer.appendChild(eDummyContainer);\n        elements.forEach(function (el) { return _this.cloneItemIntoDummy(el, eDummyContainer); });\n        // at this point, all the clones are lined up vertically with natural widths. the dummy\n        // container will have a width wide enough just to fit the largest.\n        var dummyContainerWidth = eDummyContainer.offsetWidth;\n        // we are finished with the dummy container, so get rid of it\n        eBodyContainer.removeChild(eDummyContainer);\n        // we add padding as I found sometimes the gui still put '...' after some of the texts. so the\n        // user can configure the grid to add a few more pixels after the calculated width\n        var autoSizePadding = this.getAutoSizePadding();\n        return dummyContainerWidth + autoSizePadding;\n    };\n    AutoWidthCalculator.prototype.getAutoSizePadding = function () {\n        var value = this.gridOptionsService.getNum('autoSizePadding');\n        return value != null && value >= 0 ? value : 20;\n    };\n    AutoWidthCalculator.prototype.getHeaderCellForColumn = function (column) {\n        /* tslint:enable */\n        var element = null;\n        this.ctrlsService.getHeaderRowContainerCtrls().forEach(function (container) {\n            var res = container.getHtmlElementForColumnHeader(column);\n            if (res != null) {\n                element = res;\n            }\n        });\n        return element;\n    };\n    AutoWidthCalculator.prototype.cloneItemIntoDummy = function (eCell, eDummyContainer) {\n        // make a deep clone of the cell\n        var eCellClone = eCell.cloneNode(true);\n        // the original has a fixed width, we remove this to allow the natural width based on content\n        eCellClone.style.width = '';\n        // the original has position = absolute, we need to remove this so it's positioned normally\n        eCellClone.style.position = 'static';\n        eCellClone.style.left = '';\n        // we put the cell into a containing div, as otherwise the cells would just line up\n        // on the same line, standard flow layout, by putting them into divs, they are laid\n        // out one per line\n        var eCloneParent = document.createElement('div');\n        var eCloneParentClassList = eCloneParent.classList;\n        var isHeader = ['ag-header-cell', 'ag-header-group-cell'].some(function (cls) { return eCellClone.classList.contains(cls); });\n        if (isHeader) {\n            eCloneParentClassList.add('ag-header', 'ag-header-row');\n            eCloneParent.style.position = 'static';\n        }\n        else {\n            eCloneParentClassList.add('ag-row');\n        }\n        // find parent using classes (headers have ag-header-cell, rows have ag-row), and copy classes from it.\n        // if we didn't do this, things like ag-row-level-2 would be missing if present, which sets indents\n        // onto group items.\n        var pointer = eCell.parentElement;\n        while (pointer) {\n            var isRow = ['ag-header-row', 'ag-row'].some(function (cls) { return pointer.classList.contains(cls); });\n            if (isRow) {\n                for (var i = 0; i < pointer.classList.length; i++) {\n                    var item = pointer.classList[i];\n                    // we skip ag-row-position-absolute, as this has structural CSS applied that stops the\n                    // element from fitting into it's parent, and we need the element to stretch the parent\n                    // as we are measuring the parents width\n                    if (item != 'ag-row-position-absolute') {\n                        eCloneParentClassList.add(item);\n                    }\n                }\n                break;\n            }\n            pointer = pointer.parentElement;\n        }\n        // the twig on the branch, the branch on the tree, the tree in the hole,\n        // the hole in the bog, the bog in the clone, the clone in the parent,\n        // the parent in the dummy, and the dummy down in the vall-e-ooo, OOOOOOOOO! Oh row the rattling bog....\n        eCloneParent.appendChild(eCellClone);\n        eDummyContainer.appendChild(eCloneParent);\n    };\n    __decorate$15([\n        Autowired('rowRenderer')\n    ], AutoWidthCalculator.prototype, \"rowRenderer\", void 0);\n    __decorate$15([\n        Autowired('ctrlsService')\n    ], AutoWidthCalculator.prototype, \"ctrlsService\", void 0);\n    __decorate$15([\n        Autowired('rowCssClassCalculator')\n    ], AutoWidthCalculator.prototype, \"rowCssClassCalculator\", void 0);\n    __decorate$15([\n        PostConstruct\n    ], AutoWidthCalculator.prototype, \"postConstruct\", null);\n    AutoWidthCalculator = __decorate$15([\n        Bean('autoWidthCalculator')\n    ], AutoWidthCalculator);\n    return AutoWidthCalculator;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$17 = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$14 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __values$2 = (undefined && undefined.__values) || function(o) {\n    var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n    if (m) return m.call(o);\n    if (o && typeof o.length === \"number\") return {\n        next: function () {\n            if (o && i >= o.length) o = void 0;\n            return { value: o && o[i++], done: !o };\n        }\n    };\n    throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nvar __read$e = (undefined && undefined.__read) || function (o, n) {\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n    if (!m) return o;\n    var i = m.call(o), r, ar = [], e;\n    try {\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n    }\n    catch (error) { e = { error: error }; }\n    finally {\n        try {\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\n        }\n        finally { if (e) throw e.error; }\n    }\n    return ar;\n};\nvar __spread$c = (undefined && undefined.__spread) || function () {\n    for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read$e(arguments[i]));\n    return ar;\n};\nvar StickyRowFeature = /** @class */ (function (_super) {\n    __extends$17(StickyRowFeature, _super);\n    function StickyRowFeature(createRowCon, destroyRowCtrls) {\n        var _this = _super.call(this) || this;\n        _this.createRowCon = createRowCon;\n        _this.destroyRowCtrls = destroyRowCtrls;\n        _this.stickyRowCtrls = [];\n        _this.containerHeight = 0;\n        return _this;\n    }\n    StickyRowFeature.prototype.postConstruct = function () {\n        var _this = this;\n        this.isClientSide = this.rowModel.getType() === 'clientSide';\n        this.ctrlsService.whenReady(function (params) {\n            _this.gridBodyCtrl = params.gridBodyCtrl;\n        });\n    };\n    StickyRowFeature.prototype.getStickyRowCtrls = function () {\n        return this.stickyRowCtrls;\n    };\n    StickyRowFeature.prototype.checkStickyRows = function () {\n        var _this = this;\n        var height = 0;\n        if (!this.gridOptionsService.is('groupRowsSticky')) {\n            this.refreshNodesAndContainerHeight([], height);\n            return;\n        }\n        var stickyRows = [];\n        var firstPixel = this.rowRenderer.getFirstVisibleVerticalPixel();\n        var addStickyRow = function (stickyRow) {\n            var _a, _b, _c;\n            stickyRows.push(stickyRow);\n            var lastChildBottom;\n            if (_this.isClientSide) {\n                var lastAncestor = stickyRow;\n                while (lastAncestor.expanded) {\n                    if (lastAncestor.master) {\n                        lastAncestor = lastAncestor.detailNode;\n                    }\n                    else if (lastAncestor.childrenAfterSort) {\n                        // Tree Data will have `childrenAfterSort` without any nodes, but\n                        // the current node will still be marked as expansible.\n                        if (lastAncestor.childrenAfterSort.length === 0) {\n                            break;\n                        }\n                        lastAncestor = last(lastAncestor.childrenAfterSort);\n                    }\n                }\n                lastChildBottom = lastAncestor.rowTop + lastAncestor.rowHeight;\n            }\n            // if the rowModel is `serverSide` as only `clientSide` and `serverSide` create this feature.\n            else {\n                var storeBounds = (_a = stickyRow.childStore) === null || _a === void 0 ? void 0 : _a.getStoreBounds();\n                lastChildBottom = ((_b = storeBounds === null || storeBounds === void 0 ? void 0 : storeBounds.heightPx) !== null && _b !== void 0 ? _b : 0) + ((_c = storeBounds === null || storeBounds === void 0 ? void 0 : storeBounds.topPx) !== null && _c !== void 0 ? _c : 0);\n            }\n            var stickRowBottom = firstPixel + height + stickyRow.rowHeight;\n            if (lastChildBottom < stickRowBottom) {\n                stickyRow.stickyRowTop = height + (lastChildBottom - stickRowBottom);\n            }\n            else {\n                stickyRow.stickyRowTop = height;\n            }\n            height = 0;\n            stickyRows.forEach(function (rowNode) {\n                var thisRowLastPx = rowNode.stickyRowTop + rowNode.rowHeight;\n                if (height < thisRowLastPx) {\n                    height = thisRowLastPx;\n                }\n            });\n        };\n        while (true) {\n            var firstPixelAfterStickyRows = firstPixel + height;\n            var firstIndex = this.rowModel.getRowIndexAtPixel(firstPixelAfterStickyRows);\n            var firstRow = this.rowModel.getRow(firstIndex);\n            if (firstRow == null) {\n                break;\n            }\n            // only happens when pivoting, and we are showing root node\n            if (firstRow.level < 0) {\n                break;\n            }\n            var parents = [];\n            var p = firstRow.parent;\n            while (p.level >= 0) {\n                parents.push(p);\n                p = p.parent;\n            }\n            var firstMissingParent = parents.reverse().find(function (parent) { return stickyRows.indexOf(parent) < 0 && parent.displayed; });\n            if (firstMissingParent) {\n                addStickyRow(firstMissingParent);\n                continue;\n            }\n            // if first row is an open group, and practically shown, it needs\n            // to be stuck\n            if (firstRow.isExpandable() && firstRow.expanded && firstRow.rowTop < firstPixelAfterStickyRows) {\n                addStickyRow(firstRow);\n                continue;\n            }\n            break;\n        }\n        this.refreshNodesAndContainerHeight(stickyRows, height);\n    };\n    StickyRowFeature.prototype.refreshStickyNode = function (stickRowNode) {\n        var allStickyNodes = [];\n        for (var i = 0; i < this.stickyRowCtrls.length; i++) {\n            var currentNode = this.stickyRowCtrls[i].getRowNode();\n            if (currentNode !== stickRowNode) {\n                allStickyNodes.push(currentNode);\n            }\n        }\n        this.refreshNodesAndContainerHeight(allStickyNodes, this.containerHeight);\n        this.checkStickyRows();\n    };\n    StickyRowFeature.prototype.refreshNodesAndContainerHeight = function (allStickyNodes, height) {\n        var e_1, _a, _b;\n        var _this = this;\n        var removedCtrls = this.stickyRowCtrls.filter(function (ctrl) { return allStickyNodes.indexOf(ctrl.getRowNode()) === -1; });\n        var addedNodes = allStickyNodes.filter(function (rowNode) { return _this.stickyRowCtrls.findIndex(function (ctrl) { return ctrl.getRowNode() === rowNode; }) === -1; });\n        var ctrlsToDestroy = {};\n        removedCtrls.forEach(function (removedCtrl) {\n            ctrlsToDestroy[removedCtrl.getRowNode().id] = removedCtrl;\n            _this.stickyRowCtrls = _this.stickyRowCtrls.filter(function (ctrl) { return ctrl !== removedCtrl; });\n        });\n        try {\n            for (var _c = __values$2(Object.values(ctrlsToDestroy)), _d = _c.next(); !_d.done; _d = _c.next()) {\n                var ctrl = _d.value;\n                ctrl.getRowNode().sticky = false;\n            }\n        }\n        catch (e_1_1) { e_1 = { error: e_1_1 }; }\n        finally {\n            try {\n                if (_d && !_d.done && (_a = _c.return)) _a.call(_c);\n            }\n            finally { if (e_1) throw e_1.error; }\n        }\n        this.destroyRowCtrls(ctrlsToDestroy, false);\n        var newCtrls = addedNodes.map(function (rowNode) {\n            rowNode.sticky = true;\n            return _this.createRowCon(rowNode, false, false);\n        });\n        (_b = this.stickyRowCtrls).push.apply(_b, __spread$c(newCtrls));\n        this.stickyRowCtrls.forEach(function (ctrl) { return ctrl.setRowTop(ctrl.getRowNode().stickyRowTop); });\n        this.stickyRowCtrls.sort(function (a, b) { return b.getRowNode().rowIndex - a.getRowNode().rowIndex; });\n        if (this.containerHeight !== height) {\n            this.containerHeight = height;\n            this.gridBodyCtrl.setStickyTopHeight(height);\n        }\n    };\n    __decorate$14([\n        Autowired(\"rowModel\")\n    ], StickyRowFeature.prototype, \"rowModel\", void 0);\n    __decorate$14([\n        Autowired(\"rowRenderer\")\n    ], StickyRowFeature.prototype, \"rowRenderer\", void 0);\n    __decorate$14([\n        Autowired(\"ctrlsService\")\n    ], StickyRowFeature.prototype, \"ctrlsService\", void 0);\n    __decorate$14([\n        PostConstruct\n    ], StickyRowFeature.prototype, \"postConstruct\", null);\n    return StickyRowFeature;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$16 = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$13 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __read$d = (undefined && undefined.__read) || function (o, n) {\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n    if (!m) return o;\n    var i = m.call(o), r, ar = [], e;\n    try {\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n    }\n    catch (error) { e = { error: error }; }\n    finally {\n        try {\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\n        }\n        finally { if (e) throw e.error; }\n    }\n    return ar;\n};\nvar __spread$b = (undefined && undefined.__spread) || function () {\n    for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read$d(arguments[i]));\n    return ar;\n};\nvar __values$1 = (undefined && undefined.__values) || function(o) {\n    var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n    if (m) return m.call(o);\n    if (o && typeof o.length === \"number\") return {\n        next: function () {\n            if (o && i >= o.length) o = void 0;\n            return { value: o && o[i++], done: !o };\n        }\n    };\n    throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nvar DEFAULT_KEEP_DETAIL_ROW_COUNT = 10;\nvar RowRenderer = /** @class */ (function (_super) {\n    __extends$16(RowRenderer, _super);\n    function RowRenderer() {\n        var _this = _super !== null && _super.apply(this, arguments) || this;\n        _this.destroyFuncsForColumnListeners = [];\n        // map of row ids to row objects. keeps track of which elements\n        // are rendered for which rows in the dom.\n        _this.rowCtrlsByRowIndex = {};\n        _this.zombieRowCtrls = {};\n        _this.allRowCtrls = [];\n        _this.topRowCtrls = [];\n        _this.bottomRowCtrls = [];\n        // we only allow one refresh at a time, otherwise the internal memory structure here\n        // will get messed up. this can happen if the user has a cellRenderer, and inside the\n        // renderer they call an API method that results in another pass of the refresh,\n        // then it will be trying to draw rows in the middle of a refresh.\n        _this.refreshInProgress = false;\n        _this.dataFirstRenderedFired = false;\n        return _this;\n    }\n    RowRenderer.prototype.postConstruct = function () {\n        var _this = this;\n        this.ctrlsService.whenReady(function () {\n            _this.gridBodyCtrl = _this.ctrlsService.getGridBodyCtrl();\n            _this.initialise();\n        });\n    };\n    RowRenderer.prototype.initialise = function () {\n        this.addManagedListener(this.eventService, Events.EVENT_PAGINATION_CHANGED, this.onPageLoaded.bind(this));\n        this.addManagedListener(this.eventService, Events.EVENT_PINNED_ROW_DATA_CHANGED, this.onPinnedRowDataChanged.bind(this));\n        this.addManagedListener(this.eventService, Events.EVENT_DISPLAYED_COLUMNS_CHANGED, this.onDisplayedColumnsChanged.bind(this));\n        this.addManagedListener(this.eventService, Events.EVENT_BODY_SCROLL, this.onBodyScroll.bind(this));\n        this.addManagedListener(this.eventService, Events.EVENT_BODY_HEIGHT_CHANGED, this.redrawAfterScroll.bind(this));\n        this.addManagedPropertyListener('domLayout', this.onDomLayoutChanged.bind(this));\n        this.addManagedPropertyListener('rowClass', this.redrawRows.bind(this));\n        if (this.gridOptionsService.is('groupRowsSticky')) {\n            var rowModelType = this.rowModel.getType();\n            if (rowModelType != 'clientSide' && rowModelType != 'serverSide') {\n                doOnce(function () { return console.warn('AG Grid: The feature Sticky Row Groups only works with the Client Side or Server Side Row Model'); }, 'rowRenderer.stickyWorksWithCsrmOnly');\n            }\n            else {\n                this.stickyRowFeature = this.createManagedBean(new StickyRowFeature(this.createRowCon.bind(this), this.destroyRowCtrls.bind(this)));\n            }\n        }\n        this.registerCellEventListeners();\n        this.initialiseCache();\n        this.printLayout = this.gridOptionsService.isDomLayout('print');\n        this.embedFullWidthRows = this.printLayout || this.gridOptionsService.is('embedFullWidthRows');\n        this.redrawAfterModelUpdate();\n    };\n    RowRenderer.prototype.initialiseCache = function () {\n        if (this.gridOptionsService.is('keepDetailRows')) {\n            var countProp = this.getKeepDetailRowsCount();\n            var count = countProp != null ? countProp : 3;\n            this.cachedRowCtrls = new RowCtrlCache(count);\n        }\n    };\n    RowRenderer.prototype.getKeepDetailRowsCount = function () {\n        var keepDetailRowsCount = this.gridOptionsService.getNum('keepDetailRowsCount');\n        if (exists(keepDetailRowsCount) && keepDetailRowsCount > 0) {\n            return keepDetailRowsCount;\n        }\n        return DEFAULT_KEEP_DETAIL_ROW_COUNT;\n    };\n    RowRenderer.prototype.getRowCtrls = function () {\n        return this.allRowCtrls;\n    };\n    RowRenderer.prototype.getStickyTopRowCtrls = function () {\n        if (!this.stickyRowFeature) {\n            return [];\n        }\n        return this.stickyRowFeature.getStickyRowCtrls();\n    };\n    RowRenderer.prototype.updateAllRowCtrls = function () {\n        var liveList = getAllValuesInObject(this.rowCtrlsByRowIndex);\n        var isEnsureDomOrder = this.gridOptionsService.is('ensureDomOrder');\n        var isPrintLayout = this.gridOptionsService.isDomLayout('print');\n        if (isEnsureDomOrder || isPrintLayout) {\n            liveList.sort(function (a, b) { return a.getRowNode().rowIndex - b.getRowNode.rowIndex; });\n        }\n        var zombieList = getAllValuesInObject(this.zombieRowCtrls);\n        var cachedList = this.cachedRowCtrls ? this.cachedRowCtrls.getEntries() : [];\n        this.allRowCtrls = __spread$b(liveList, zombieList, cachedList);\n    };\n    RowRenderer.prototype.onCellFocusChanged = function (event) {\n        this.getAllCellCtrls().forEach(function (cellCtrl) { return cellCtrl.onCellFocused(event); });\n        this.getFullWidthRowCtrls().forEach(function (rowCtrl) { return rowCtrl.onFullWidthRowFocused(event); });\n    };\n    // in a clean design, each cell would register for each of these events. however when scrolling, all the cells\n    // registering and de-registering for events is a performance bottleneck. so we register here once and inform\n    // all active cells.\n    RowRenderer.prototype.registerCellEventListeners = function () {\n        var _this = this;\n        this.addManagedListener(this.eventService, Events.EVENT_CELL_FOCUSED, function (event) {\n            _this.onCellFocusChanged(event);\n        });\n        this.addManagedListener(this.eventService, Events.EVENT_CELL_FOCUS_CLEARED, function () {\n            _this.onCellFocusChanged();\n        });\n        this.addManagedListener(this.eventService, Events.EVENT_FLASH_CELLS, function (event) {\n            _this.getAllCellCtrls().forEach(function (cellCtrl) { return cellCtrl.onFlashCells(event); });\n        });\n        this.addManagedListener(this.eventService, Events.EVENT_COLUMN_HOVER_CHANGED, function () {\n            _this.getAllCellCtrls().forEach(function (cellCtrl) { return cellCtrl.onColumnHover(); });\n        });\n        this.addManagedListener(this.eventService, Events.EVENT_DISPLAYED_COLUMNS_CHANGED, function () {\n            _this.getAllCellCtrls().forEach(function (cellCtrl) { return cellCtrl.onDisplayedColumnsChanged(); });\n        });\n        // only for printLayout - because we are rendering all the cells in the same row, regardless of pinned state,\n        // then changing the width of the containers will impact left position. eg the center cols all have their\n        // left position adjusted by the width of the left pinned column, so if the pinned left column width changes,\n        // all the center cols need to be shifted to accommodate this. when in normal layout, the pinned cols are\n        // in different containers so doesn't impact.\n        this.addManagedListener(this.eventService, Events.EVENT_DISPLAYED_COLUMNS_WIDTH_CHANGED, function () {\n            if (_this.printLayout) {\n                _this.getAllCellCtrls().forEach(function (cellCtrl) { return cellCtrl.onLeftChanged(); });\n            }\n        });\n        var rangeSelectionEnabled = this.gridOptionsService.isEnableRangeSelection();\n        if (rangeSelectionEnabled) {\n            this.addManagedListener(this.eventService, Events.EVENT_RANGE_SELECTION_CHANGED, function () {\n                _this.getAllCellCtrls().forEach(function (cellCtrl) { return cellCtrl.onRangeSelectionChanged(); });\n            });\n            this.addManagedListener(this.eventService, Events.EVENT_COLUMN_MOVED, function () {\n                _this.getAllCellCtrls().forEach(function (cellCtrl) { return cellCtrl.updateRangeBordersIfRangeCount(); });\n            });\n            this.addManagedListener(this.eventService, Events.EVENT_COLUMN_PINNED, function () {\n                _this.getAllCellCtrls().forEach(function (cellCtrl) { return cellCtrl.updateRangeBordersIfRangeCount(); });\n            });\n            this.addManagedListener(this.eventService, Events.EVENT_COLUMN_VISIBLE, function () {\n                _this.getAllCellCtrls().forEach(function (cellCtrl) { return cellCtrl.updateRangeBordersIfRangeCount(); });\n            });\n        }\n        // add listeners to the grid columns\n        this.refreshListenersToColumnsForCellComps();\n        // if the grid columns change, then refresh the listeners again\n        this.addManagedListener(this.eventService, Events.EVENT_GRID_COLUMNS_CHANGED, this.refreshListenersToColumnsForCellComps.bind(this));\n        this.addDestroyFunc(this.removeGridColumnListeners.bind(this));\n    };\n    // executes all functions in destroyFuncsForColumnListeners and then clears the list\n    RowRenderer.prototype.removeGridColumnListeners = function () {\n        this.destroyFuncsForColumnListeners.forEach(function (func) { return func(); });\n        this.destroyFuncsForColumnListeners.length = 0;\n    };\n    // this function adds listeners onto all the grid columns, which are the column that we could have cellComps for.\n    // when the grid columns change, we add listeners again. in an ideal design, each CellComp would just register to\n    // the column it belongs to on creation, however this was a bottleneck with the number of cells, so do it here\n    // once instead.\n    RowRenderer.prototype.refreshListenersToColumnsForCellComps = function () {\n        var _this = this;\n        this.removeGridColumnListeners();\n        var cols = this.columnModel.getAllGridColumns();\n        if (!cols) {\n            return;\n        }\n        cols.forEach(function (col) {\n            var forEachCellWithThisCol = function (callback) {\n                _this.getAllCellCtrls().forEach(function (cellCtrl) {\n                    if (cellCtrl.getColumn() === col) {\n                        callback(cellCtrl);\n                    }\n                });\n            };\n            var leftChangedListener = function () {\n                forEachCellWithThisCol(function (cellCtrl) { return cellCtrl.onLeftChanged(); });\n            };\n            var widthChangedListener = function () {\n                forEachCellWithThisCol(function (cellCtrl) { return cellCtrl.onWidthChanged(); });\n            };\n            var firstRightPinnedChangedListener = function () {\n                forEachCellWithThisCol(function (cellCtrl) { return cellCtrl.onFirstRightPinnedChanged(); });\n            };\n            var lastLeftPinnedChangedListener = function () {\n                forEachCellWithThisCol(function (cellCtrl) { return cellCtrl.onLastLeftPinnedChanged(); });\n            };\n            var colDefChangedListener = function () {\n                forEachCellWithThisCol(function (cellCtrl) { return cellCtrl.onColDefChanged(); });\n            };\n            col.addEventListener('leftChanged', leftChangedListener);\n            col.addEventListener('widthChanged', widthChangedListener);\n            col.addEventListener('firstRightPinnedChanged', firstRightPinnedChangedListener);\n            col.addEventListener('lastLeftPinnedChanged', lastLeftPinnedChangedListener);\n            col.addEventListener('colDefChanged', colDefChangedListener);\n            _this.destroyFuncsForColumnListeners.push(function () {\n                col.removeEventListener('leftChanged', leftChangedListener);\n                col.removeEventListener('widthChanged', widthChangedListener);\n                col.removeEventListener('firstRightPinnedChanged', firstRightPinnedChangedListener);\n                col.removeEventListener('lastLeftPinnedChanged', lastLeftPinnedChangedListener);\n                col.removeEventListener('colDefChanged', colDefChangedListener);\n            });\n        });\n    };\n    RowRenderer.prototype.onDomLayoutChanged = function () {\n        var printLayout = this.gridOptionsService.isDomLayout('print');\n        var embedFullWidthRows = printLayout || this.gridOptionsService.is('embedFullWidthRows');\n        // if moving towards or away from print layout, means we need to destroy all rows, as rows are not laid\n        // out using absolute positioning when doing print layout\n        var destroyRows = embedFullWidthRows !== this.embedFullWidthRows || this.printLayout !== printLayout;\n        this.printLayout = printLayout;\n        this.embedFullWidthRows = embedFullWidthRows;\n        if (destroyRows) {\n            this.redrawAfterModelUpdate({ domLayoutChanged: true });\n        }\n    };\n    // for row models that have datasources, when we update the datasource, we need to force the rowRenderer\n    // to redraw all rows. otherwise the old rows from the old datasource will stay displayed.\n    RowRenderer.prototype.datasourceChanged = function () {\n        this.firstRenderedRow = 0;\n        this.lastRenderedRow = -1;\n        var rowIndexesToRemove = Object.keys(this.rowCtrlsByRowIndex);\n        this.removeRowCtrls(rowIndexesToRemove);\n    };\n    RowRenderer.prototype.onPageLoaded = function (event) {\n        var params = {\n            recycleRows: event.keepRenderedRows,\n            animate: event.animate,\n            newData: event.newData,\n            newPage: event.newPage,\n            // because this is a model updated event (not pinned rows), we\n            // can skip updating the pinned rows. this is needed so that if user\n            // is doing transaction updates, the pinned rows are not getting constantly\n            // trashed - or editing cells in pinned rows are not refreshed and put into read mode\n            onlyBody: true\n        };\n        this.redrawAfterModelUpdate(params);\n    };\n    RowRenderer.prototype.getAllCellsForColumn = function (column) {\n        var res = [];\n        this.getAllRowCtrls().forEach(function (rowCtrl) {\n            var eCell = rowCtrl.getCellElement(column);\n            if (eCell) {\n                res.push(eCell);\n            }\n        });\n        return res;\n    };\n    RowRenderer.prototype.refreshFloatingRowComps = function () {\n        this.refreshFloatingRows(this.topRowCtrls, this.pinnedRowModel.getPinnedTopRowData());\n        this.refreshFloatingRows(this.bottomRowCtrls, this.pinnedRowModel.getPinnedBottomRowData());\n    };\n    RowRenderer.prototype.getTopRowCtrls = function () {\n        return this.topRowCtrls;\n    };\n    RowRenderer.prototype.getBottomRowCtrls = function () {\n        return this.bottomRowCtrls;\n    };\n    RowRenderer.prototype.refreshFloatingRows = function (rowComps, rowNodes) {\n        var _this = this;\n        rowComps.forEach(function (row) {\n            row.destroyFirstPass();\n            row.destroySecondPass();\n        });\n        rowComps.length = 0;\n        if (!rowNodes) {\n            return;\n        }\n        rowNodes.forEach(function (rowNode) {\n            var rowCtrl = new RowCtrl(rowNode, _this.beans, false, false, _this.printLayout);\n            rowComps.push(rowCtrl);\n        });\n    };\n    RowRenderer.prototype.onPinnedRowDataChanged = function () {\n        // recycling rows in order to ensure cell editing is not cancelled\n        var params = {\n            recycleRows: true\n        };\n        this.redrawAfterModelUpdate(params);\n    };\n    // if the row nodes are not rendered, no index is returned\n    RowRenderer.prototype.getRenderedIndexesForRowNodes = function (rowNodes) {\n        var result = [];\n        if (missing(rowNodes)) {\n            return result;\n        }\n        iterateObject(this.rowCtrlsByRowIndex, function (index, renderedRow) {\n            var rowNode = renderedRow.getRowNode();\n            if (rowNodes.indexOf(rowNode) >= 0) {\n                result.push(index);\n            }\n        });\n        return result;\n    };\n    RowRenderer.prototype.redrawRows = function (rowNodes) {\n        // if no row nodes provided, then refresh everything\n        var partialRefresh = rowNodes != null && rowNodes.length > 0;\n        if (partialRefresh) {\n            var indexesToRemove = this.getRenderedIndexesForRowNodes(rowNodes);\n            // remove the rows\n            this.removeRowCtrls(indexesToRemove);\n        }\n        // add draw them again\n        this.redrawAfterModelUpdate({\n            recycleRows: partialRefresh\n        });\n    };\n    RowRenderer.prototype.getCellToRestoreFocusToAfterRefresh = function (params) {\n        var focusedCell = (params === null || params === void 0 ? void 0 : params.suppressKeepFocus) ? null : this.focusService.getFocusCellToUseAfterRefresh();\n        if (focusedCell == null) {\n            return null;\n        }\n        // if the dom is not actually focused on a cell, then we don't try to refocus. the problem this\n        // solves is with editing - if the user is editing, eg focus is on a text field, and not on the\n        // cell itself, then the cell can be registered as having focus, however it's the text field that\n        // has the focus and not the cell div. therefore, when the refresh is finished, the grid will focus\n        // the cell, and not the textfield. that means if the user is in a text field, and the grid refreshes,\n        // the focus is lost from the text field. we do not want this.\n        var eDocument = this.gridOptionsService.getDocument();\n        var activeElement = eDocument.activeElement;\n        var cellDomData = this.gridOptionsService.getDomData(activeElement, CellCtrl.DOM_DATA_KEY_CELL_CTRL);\n        var rowDomData = this.gridOptionsService.getDomData(activeElement, RowCtrl.DOM_DATA_KEY_ROW_CTRL);\n        var gridElementFocused = cellDomData || rowDomData;\n        return gridElementFocused ? focusedCell : null;\n    };\n    // gets called from:\n    // +) initialisation (in registerGridComp) params = null\n    // +) onDomLayoutChanged, params = null\n    // +) onPageLoaded, recycleRows, animate, newData, newPage from event, onlyBody=true\n    // +) onPinnedRowDataChanged, recycleRows = true\n    // +) redrawRows (from Grid API), recycleRows = true/false\n    RowRenderer.prototype.redrawAfterModelUpdate = function (params) {\n        if (params === void 0) { params = {}; }\n        this.getLockOnRefresh();\n        var focusedCell = this.getCellToRestoreFocusToAfterRefresh(params);\n        this.updateContainerHeights();\n        this.scrollToTopIfNewData(params);\n        // never recycle rows on layout change as rows could change from normal DOM layout\n        // back to the grid's row positioning.\n        var recycleRows = !params.domLayoutChanged && !!params.recycleRows;\n        var animate = params.animate && this.gridOptionsService.isAnimateRows();\n        // after modelUpdate, row indexes can change, so we clear out the rowsByIndex map,\n        // however we can reuse the rows, so we keep them but index by rowNode.id\n        var rowsToRecycle = recycleRows ? this.recycleRows() : null;\n        if (!recycleRows) {\n            this.removeAllRowComps();\n        }\n        this.redraw(rowsToRecycle, animate);\n        this.gridBodyCtrl.updateRowCount();\n        if (!params.onlyBody) {\n            this.refreshFloatingRowComps();\n        }\n        this.dispatchDisplayedRowsChanged();\n        // if a cell was focused before, ensure focus now.\n        if (focusedCell != null) {\n            this.restoreFocusedCell(focusedCell);\n        }\n        this.releaseLockOnRefresh();\n    };\n    RowRenderer.prototype.scrollToTopIfNewData = function (params) {\n        var scrollToTop = params.newData || params.newPage;\n        var suppressScrollToTop = this.gridOptionsService.is('suppressScrollOnNewData');\n        if (scrollToTop && !suppressScrollToTop) {\n            this.gridBodyCtrl.getScrollFeature().scrollToTop();\n        }\n    };\n    RowRenderer.prototype.updateContainerHeights = function () {\n        // when doing print layout, we don't explicitly set height on the containers\n        if (this.printLayout) {\n            this.rowContainerHeightService.setModelHeight(null);\n            return;\n        }\n        var containerHeight = this.paginationProxy.getCurrentPageHeight();\n        // we need at least 1 pixel for the horizontal scroll to work. so if there are now rows,\n        // we still want the scroll to be present, otherwise there would be no way to scroll the header\n        // which might be needed us user wants to access columns\n        // on the RHS - and if that was where the filter was that cause no rows to be presented, there\n        // is no way to remove the filter.\n        if (containerHeight === 0) {\n            containerHeight = 1;\n        }\n        this.rowContainerHeightService.setModelHeight(containerHeight);\n    };\n    RowRenderer.prototype.getLockOnRefresh = function () {\n        if (this.refreshInProgress) {\n            throw new Error(\"AG Grid: cannot get grid to draw rows when it is in the middle of drawing rows. \" +\n                \"Your code probably called a grid API method while the grid was in the render stage. To overcome \" +\n                \"this, put the API call into a timeout, e.g. instead of api.redrawRows(), \" +\n                \"call setTimeout(function() { api.redrawRows(); }, 0). To see what part of your code \" +\n                \"that caused the refresh check this stacktrace.\");\n        }\n        this.refreshInProgress = true;\n    };\n    RowRenderer.prototype.releaseLockOnRefresh = function () {\n        this.refreshInProgress = false;\n    };\n    RowRenderer.prototype.isRefreshInProgress = function () {\n        return this.refreshInProgress;\n    };\n    // sets the focus to the provided cell, if the cell is provided. this way, the user can call refresh without\n    // worry about the focus been lost. this is important when the user is using keyboard navigation to do edits\n    // and the cellEditor is calling 'refresh' to get other cells to update (as other cells might depend on the\n    // edited cell).\n    RowRenderer.prototype.restoreFocusedCell = function (cellPosition) {\n        if (cellPosition) {\n            // we don't wish to dispatch an event as the rowRenderer is not capable of changing the selected cell,\n            // so we mock a change event for the full width rows and cells to ensure they update to the newly selected\n            // state\n            this.onCellFocusChanged({\n                rowIndex: cellPosition.rowIndex,\n                column: cellPosition.column,\n                rowPinned: cellPosition.rowPinned,\n                forceBrowserFocus: true,\n                preventScrollOnBrowserFocus: true,\n                api: this.beans.gridApi,\n                columnApi: this.beans.columnApi,\n                context: this.beans.gridOptionsService.context,\n                type: 'mock',\n            });\n        }\n    };\n    RowRenderer.prototype.stopEditing = function (cancel) {\n        if (cancel === void 0) { cancel = false; }\n        this.getAllRowCtrls().forEach(function (rowCtrl) {\n            rowCtrl.stopEditing(cancel);\n        });\n    };\n    RowRenderer.prototype.getAllCellCtrls = function () {\n        var res = [];\n        var rowCtrls = this.getAllRowCtrls();\n        var rowCtrlsLength = rowCtrls.length;\n        for (var i = 0; i < rowCtrlsLength; i++) {\n            var cellCtrls = rowCtrls[i].getAllCellCtrls();\n            var cellCtrlsLength = cellCtrls.length;\n            for (var j = 0; j < cellCtrlsLength; j++) {\n                res.push(cellCtrls[j]);\n            }\n        }\n        return res;\n    };\n    RowRenderer.prototype.getAllRowCtrls = function () {\n        var e_1, _a;\n        var stickyRowCtrls = (this.stickyRowFeature && this.stickyRowFeature.getStickyRowCtrls()) || [];\n        var res = __spread$b(this.topRowCtrls, this.bottomRowCtrls, stickyRowCtrls);\n        try {\n            for (var _b = __values$1(Object.keys(this.rowCtrlsByRowIndex)), _c = _b.next(); !_c.done; _c = _b.next()) {\n                var key = _c.value;\n                res.push(this.rowCtrlsByRowIndex[key]);\n            }\n        }\n        catch (e_1_1) { e_1 = { error: e_1_1 }; }\n        finally {\n            try {\n                if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n            }\n            finally { if (e_1) throw e_1.error; }\n        }\n        return res;\n    };\n    RowRenderer.prototype.addRenderedRowListener = function (eventName, rowIndex, callback) {\n        var rowComp = this.rowCtrlsByRowIndex[rowIndex];\n        if (rowComp) {\n            rowComp.addEventListener(eventName, callback);\n        }\n    };\n    RowRenderer.prototype.flashCells = function (params) {\n        if (params === void 0) { params = {}; }\n        var flashDelay = params.flashDelay, fadeDelay = params.fadeDelay;\n        this.getCellCtrls(params.rowNodes, params.columns)\n            .forEach(function (cellCtrl) { return cellCtrl.flashCell({ flashDelay: flashDelay, fadeDelay: fadeDelay }); });\n    };\n    RowRenderer.prototype.refreshCells = function (params) {\n        if (params === void 0) { params = {}; }\n        var refreshCellParams = {\n            forceRefresh: params.force,\n            newData: false,\n            suppressFlash: params.suppressFlash\n        };\n        this.getCellCtrls(params.rowNodes, params.columns)\n            .forEach(function (cellCtrl) {\n            if (cellCtrl.refreshShouldDestroy()) {\n                var rowCtrl = cellCtrl.getRowCtrl();\n                if (rowCtrl) {\n                    rowCtrl.refreshCell(cellCtrl);\n                }\n            }\n            else {\n                cellCtrl.refreshCell(refreshCellParams);\n            }\n        });\n        this.getFullWidthRowCtrls(params.rowNodes).forEach(function (fullWidthRowCtrl) {\n            fullWidthRowCtrl.refreshFullWidth();\n        });\n    };\n    RowRenderer.prototype.getCellRendererInstances = function (params) {\n        var _this = this;\n        var _a;\n        var cellRenderers = this.getCellCtrls(params.rowNodes, params.columns)\n            .map(function (cellCtrl) { return cellCtrl.getCellRenderer(); })\n            .filter(function (renderer) { return renderer != null; });\n        if ((_a = params.columns) === null || _a === void 0 ? void 0 : _a.length) {\n            return cellRenderers;\n        }\n        var fullWidthRenderers = [];\n        var rowIdMap = this.mapRowNodes(params.rowNodes);\n        this.getAllRowCtrls().forEach(function (rowCtrl) {\n            if (rowIdMap && !_this.isRowInMap(rowCtrl.getRowNode(), rowIdMap)) {\n                return;\n            }\n            if (!rowCtrl.isFullWidth()) {\n                return;\n            }\n            var fullWidthRenderer = rowCtrl.getFullWidthCellRenderer();\n            if (fullWidthRenderer) {\n                fullWidthRenderers.push(fullWidthRenderer);\n            }\n        });\n        return __spread$b(fullWidthRenderers, cellRenderers);\n    };\n    RowRenderer.prototype.getCellEditorInstances = function (params) {\n        var res = [];\n        this.getCellCtrls(params.rowNodes, params.columns).forEach(function (cellCtrl) {\n            var cellEditor = cellCtrl.getCellEditor();\n            if (cellEditor) {\n                res.push(cellEditor);\n            }\n        });\n        return res;\n    };\n    RowRenderer.prototype.getEditingCells = function () {\n        var res = [];\n        this.getAllCellCtrls().forEach(function (cellCtrl) {\n            if (cellCtrl.isEditing()) {\n                var cellPosition = cellCtrl.getCellPosition();\n                res.push(cellPosition);\n            }\n        });\n        return res;\n    };\n    RowRenderer.prototype.mapRowNodes = function (rowNodes) {\n        if (!rowNodes) {\n            return;\n        }\n        var res = {\n            top: {},\n            bottom: {},\n            normal: {}\n        };\n        rowNodes.forEach(function (rowNode) {\n            var id = rowNode.id;\n            if (rowNode.rowPinned === 'top') {\n                res.top[id] = rowNode;\n            }\n            else if (rowNode.rowPinned === 'bottom') {\n                res.bottom[id] = rowNode;\n            }\n            else {\n                res.normal[id] = rowNode;\n            }\n        });\n        return res;\n    };\n    RowRenderer.prototype.isRowInMap = function (rowNode, rowIdsMap) {\n        // skip this row if it is missing from the provided list\n        var id = rowNode.id;\n        var floating = rowNode.rowPinned;\n        if (floating === 'bottom') {\n            return rowIdsMap.bottom[id] != null;\n        }\n        if (floating === 'top') {\n            return rowIdsMap.top[id] != null;\n        }\n        return rowIdsMap.normal[id] != null;\n    };\n    // returns CellCtrl's that match the provided rowNodes and columns. eg if one row node\n    // and two columns provided, that identifies 4 cells, so 4 CellCtrl's returned.\n    RowRenderer.prototype.getCellCtrls = function (rowNodes, columns) {\n        var _this = this;\n        var rowIdsMap = this.mapRowNodes(rowNodes);\n        var res = [];\n        var colIdsMap;\n        if (exists(columns)) {\n            colIdsMap = {};\n            columns.forEach(function (colKey) {\n                var column = _this.columnModel.getGridColumn(colKey);\n                if (exists(column)) {\n                    colIdsMap[column.getId()] = true;\n                }\n            });\n        }\n        var processRow = function (rowCtrl) {\n            var rowNode = rowCtrl.getRowNode();\n            // skip this row if it is missing from the provided list\n            if (rowIdsMap != null && !_this.isRowInMap(rowNode, rowIdsMap)) {\n                return;\n            }\n            rowCtrl.getAllCellCtrls().forEach(function (cellCtrl) {\n                var colId = cellCtrl.getColumn().getId();\n                var excludeColFromRefresh = colIdsMap && !colIdsMap[colId];\n                if (excludeColFromRefresh) {\n                    return;\n                }\n                res.push(cellCtrl);\n            });\n        };\n        this.getAllRowCtrls().forEach(function (row) { return processRow(row); });\n        return res;\n    };\n    RowRenderer.prototype.destroy = function () {\n        this.removeAllRowComps();\n        _super.prototype.destroy.call(this);\n    };\n    RowRenderer.prototype.removeAllRowComps = function () {\n        var rowIndexesToRemove = Object.keys(this.rowCtrlsByRowIndex);\n        this.removeRowCtrls(rowIndexesToRemove);\n    };\n    RowRenderer.prototype.recycleRows = function () {\n        // remove all stub nodes, they can't be reused, as no rowNode id\n        var stubNodeIndexes = [];\n        iterateObject(this.rowCtrlsByRowIndex, function (index, rowComp) {\n            var stubNode = rowComp.getRowNode().id == null;\n            if (stubNode) {\n                stubNodeIndexes.push(index);\n            }\n        });\n        this.removeRowCtrls(stubNodeIndexes);\n        // then clear out rowCompsByIndex, but before that take a copy, but index by id, not rowIndex\n        var ctrlsByIdMap = {};\n        iterateObject(this.rowCtrlsByRowIndex, function (index, rowComp) {\n            var rowNode = rowComp.getRowNode();\n            ctrlsByIdMap[rowNode.id] = rowComp;\n        });\n        this.rowCtrlsByRowIndex = {};\n        return ctrlsByIdMap;\n    };\n    // takes array of row indexes\n    RowRenderer.prototype.removeRowCtrls = function (rowsToRemove) {\n        var _this = this;\n        // if no fromIndex then set to -1, which will refresh everything\n        // let realFromIndex = -1;\n        rowsToRemove.forEach(function (indexToRemove) {\n            var rowCtrl = _this.rowCtrlsByRowIndex[indexToRemove];\n            if (rowCtrl) {\n                rowCtrl.destroyFirstPass();\n                rowCtrl.destroySecondPass();\n            }\n            delete _this.rowCtrlsByRowIndex[indexToRemove];\n        });\n    };\n    RowRenderer.prototype.onBodyScroll = function (e) {\n        if (e.direction !== 'vertical') {\n            return;\n        }\n        this.redrawAfterScroll();\n    };\n    // gets called when rows don't change, but viewport does, so after:\n    // 1) height of grid body changes, ie number of displayed rows has changed\n    // 2) grid scrolled to new position\n    // 3) ensure index visible (which is a scroll)\n    RowRenderer.prototype.redrawAfterScroll = function () {\n        var cellFocused;\n        // only try to refocus cells shifting in and out of sticky container\n        // if the browser supports focus ({ preventScroll })\n        if (this.stickyRowFeature && browserSupportsPreventScroll()) {\n            cellFocused = this.getCellToRestoreFocusToAfterRefresh() || undefined;\n        }\n        this.getLockOnRefresh();\n        this.redraw(null, false, true);\n        this.releaseLockOnRefresh();\n        this.dispatchDisplayedRowsChanged(true);\n        if (cellFocused != null) {\n            var newFocusedCell = this.getCellToRestoreFocusToAfterRefresh();\n            if (cellFocused != null && newFocusedCell == null) {\n                this.animationFrameService.flushAllFrames();\n                this.restoreFocusedCell(cellFocused);\n            }\n        }\n    };\n    RowRenderer.prototype.removeRowCompsNotToDraw = function (indexesToDraw) {\n        // for speedy lookup, dump into map\n        var indexesToDrawMap = {};\n        indexesToDraw.forEach(function (index) { return (indexesToDrawMap[index] = true); });\n        var existingIndexes = Object.keys(this.rowCtrlsByRowIndex);\n        var indexesNotToDraw = existingIndexes.filter(function (index) { return !indexesToDrawMap[index]; });\n        this.removeRowCtrls(indexesNotToDraw);\n    };\n    RowRenderer.prototype.calculateIndexesToDraw = function (rowsToRecycle) {\n        var _this = this;\n        // all in all indexes in the viewport\n        var indexesToDraw = createArrayOfNumbers(this.firstRenderedRow, this.lastRenderedRow);\n        var checkRowToDraw = function (indexStr, rowComp) {\n            var index = rowComp.getRowNode().rowIndex;\n            if (index == null) {\n                return;\n            }\n            if (index < _this.firstRenderedRow || index > _this.lastRenderedRow) {\n                if (_this.doNotUnVirtualiseRow(rowComp)) {\n                    indexesToDraw.push(index);\n                }\n            }\n        };\n        // if we are redrawing due to scrolling change, then old rows are in this.rowCompsByIndex\n        iterateObject(this.rowCtrlsByRowIndex, checkRowToDraw);\n        // if we are redrawing due to model update, then old rows are in rowsToRecycle\n        iterateObject(rowsToRecycle, checkRowToDraw);\n        indexesToDraw.sort(function (a, b) { return a - b; });\n        indexesToDraw = indexesToDraw.filter(function (index) {\n            var rowNode = _this.paginationProxy.getRow(index);\n            return rowNode && !rowNode.sticky;\n        });\n        return indexesToDraw;\n    };\n    RowRenderer.prototype.redraw = function (rowsToRecycle, animate, afterScroll) {\n        var _this = this;\n        if (animate === void 0) { animate = false; }\n        if (afterScroll === void 0) { afterScroll = false; }\n        this.rowContainerHeightService.updateOffset();\n        this.workOutFirstAndLastRowsToRender();\n        if (this.stickyRowFeature) {\n            this.stickyRowFeature.checkStickyRows();\n        }\n        // the row can already exist and be in the following:\n        // rowsToRecycle -> if model change, then the index may be different, however row may\n        //                         exist here from previous time (mapped by id).\n        // this.rowCompsByIndex -> if just a scroll, then this will contain what is currently in the viewport\n        // this is all the indexes we want, including those that already exist, so this method\n        // will end up going through each index and drawing only if the row doesn't already exist\n        var indexesToDraw = this.calculateIndexesToDraw(rowsToRecycle);\n        this.removeRowCompsNotToDraw(indexesToDraw);\n        // never animate when doing print layout - as we want to get things ready to print as quickly as possible,\n        // otherwise we risk the printer printing a row that's half faded (half way through fading in)\n        if (this.printLayout) {\n            animate = false;\n        }\n        indexesToDraw.forEach(function (rowIndex) {\n            var rowCtrl = _this.createOrUpdateRowCtrl(rowIndex, rowsToRecycle, animate, afterScroll);\n            if (exists(rowCtrl)) ;\n        });\n        if (rowsToRecycle) {\n            var useAnimationFrame = afterScroll && !this.gridOptionsService.is('suppressAnimationFrame') && !this.printLayout;\n            if (useAnimationFrame) {\n                this.beans.animationFrameService.addDestroyTask(function () {\n                    _this.destroyRowCtrls(rowsToRecycle, animate);\n                    _this.updateAllRowCtrls();\n                    _this.dispatchDisplayedRowsChanged();\n                });\n            }\n            else {\n                this.destroyRowCtrls(rowsToRecycle, animate);\n            }\n        }\n        this.updateAllRowCtrls();\n    };\n    RowRenderer.prototype.dispatchDisplayedRowsChanged = function (afterScroll) {\n        if (afterScroll === void 0) { afterScroll = false; }\n        var event = { type: Events.EVENT_DISPLAYED_ROWS_CHANGED, afterScroll: afterScroll };\n        this.eventService.dispatchEvent(event);\n    };\n    RowRenderer.prototype.onDisplayedColumnsChanged = function () {\n        var pinningLeft = this.columnModel.isPinningLeft();\n        var pinningRight = this.columnModel.isPinningRight();\n        var atLeastOneChanged = this.pinningLeft !== pinningLeft || pinningRight !== this.pinningRight;\n        if (atLeastOneChanged) {\n            this.pinningLeft = pinningLeft;\n            this.pinningRight = pinningRight;\n            if (this.embedFullWidthRows) {\n                this.redrawFullWidthEmbeddedRows();\n            }\n        }\n    };\n    // when embedding, what gets showed in each section depends on what is pinned. eg if embedding group expand / collapse,\n    // then it should go into the pinned left area if pinning left, or the center area if not pinning.\n    RowRenderer.prototype.redrawFullWidthEmbeddedRows = function () {\n        // if either of the pinned panels has shown / hidden, then need to redraw the fullWidth bits when\n        // embedded, as what appears in each section depends on whether we are pinned or not\n        var rowsToRemove = [];\n        this.getFullWidthRowCtrls().forEach(function (fullWidthCtrl) {\n            var rowIndex = fullWidthCtrl.getRowNode().rowIndex;\n            rowsToRemove.push(rowIndex.toString());\n        });\n        this.refreshFloatingRowComps();\n        this.removeRowCtrls(rowsToRemove);\n        this.redrawAfterScroll();\n    };\n    RowRenderer.prototype.getFullWidthRowCtrls = function (rowNodes) {\n        var _this = this;\n        var rowNodesMap = this.mapRowNodes(rowNodes);\n        return this.getAllRowCtrls().filter(function (rowCtrl) {\n            // include just full width\n            if (!rowCtrl.isFullWidth()) {\n                return false;\n            }\n            // if Row Nodes provided, we exclude where Row Node is missing\n            var rowNode = rowCtrl.getRowNode();\n            if (rowNodesMap != null && !_this.isRowInMap(rowNode, rowNodesMap)) {\n                return false;\n            }\n            return true;\n        });\n    };\n    RowRenderer.prototype.refreshFullWidthRow = function (rowNode) {\n        var fullWidthCtrl = this.getFullWidthRowCtrls().find(function (rowCtrl) { return rowCtrl.getRowNode() === rowNode; });\n        if (!fullWidthCtrl) {\n            return;\n        }\n        var refreshed = fullWidthCtrl.refreshFullWidth();\n        if (refreshed) {\n            return;\n        }\n        if (rowNode.sticky) {\n            this.stickyRowFeature.refreshStickyNode(rowNode);\n        }\n        else {\n            this.removeRowCtrls([rowNode.rowIndex]);\n        }\n        this.redrawAfterScroll();\n    };\n    RowRenderer.prototype.createOrUpdateRowCtrl = function (rowIndex, rowsToRecycle, animate, afterScroll) {\n        var rowNode;\n        var rowCtrl = this.rowCtrlsByRowIndex[rowIndex];\n        // if no row comp, see if we can get it from the previous rowComps\n        if (!rowCtrl) {\n            rowNode = this.paginationProxy.getRow(rowIndex);\n            if (exists(rowNode) && exists(rowsToRecycle) && rowsToRecycle[rowNode.id] && rowNode.alreadyRendered) {\n                rowCtrl = rowsToRecycle[rowNode.id];\n                rowsToRecycle[rowNode.id] = null;\n            }\n        }\n        var creatingNewRowCtrl = !rowCtrl;\n        if (creatingNewRowCtrl) {\n            // create a new one\n            if (!rowNode) {\n                rowNode = this.paginationProxy.getRow(rowIndex);\n            }\n            if (exists(rowNode)) {\n                rowCtrl = this.createRowCon(rowNode, animate, afterScroll);\n            }\n            else {\n                // this should never happen - if somehow we are trying to create\n                // a row for a rowNode that does not exist.\n                return;\n            }\n        }\n        if (rowNode) {\n            // set node as 'alreadyRendered' to ensure we only recycle rowComps that have been rendered, this ensures\n            // we don't reuse rowComps that have been removed and then re-added in the same batch transaction.\n            rowNode.alreadyRendered = true;\n        }\n        this.rowCtrlsByRowIndex[rowIndex] = rowCtrl;\n        return rowCtrl;\n    };\n    RowRenderer.prototype.destroyRowCtrls = function (rowCtrlsMap, animate) {\n        var _this = this;\n        var executeInAWhileFuncs = [];\n        iterateObject(rowCtrlsMap, function (nodeId, rowCtrl) {\n            // if row was used, then it's null\n            if (!rowCtrl) {\n                return;\n            }\n            if (_this.cachedRowCtrls && rowCtrl.isCacheable()) {\n                _this.cachedRowCtrls.addRow(rowCtrl);\n                return;\n            }\n            rowCtrl.destroyFirstPass();\n            if (animate) {\n                _this.zombieRowCtrls[rowCtrl.getInstanceId()] = rowCtrl;\n                executeInAWhileFuncs.push(function () {\n                    rowCtrl.destroySecondPass();\n                    delete _this.zombieRowCtrls[rowCtrl.getInstanceId()];\n                });\n            }\n            else {\n                rowCtrl.destroySecondPass();\n            }\n        });\n        if (animate) {\n            // this ensures we fire displayedRowsChanged AFTER all the 'executeInAWhileFuncs' get\n            // executed, as we added it to the end of the list.\n            executeInAWhileFuncs.push(function () {\n                _this.updateAllRowCtrls();\n                _this.dispatchDisplayedRowsChanged();\n            });\n            executeInAWhile(executeInAWhileFuncs);\n        }\n    };\n    RowRenderer.prototype.getRowBuffer = function () {\n        var rowBuffer = this.gridOptionsService.getNum('rowBuffer');\n        if (typeof rowBuffer === 'number') {\n            if (rowBuffer < 0) {\n                doOnce(function () { return console.warn(\"AG Grid: rowBuffer should not be negative\"); }, 'warn rowBuffer negative');\n                rowBuffer = 0;\n                this.gridOptionsService.set('rowBuffer', 0);\n            }\n        }\n        else {\n            rowBuffer = 10;\n        }\n        return rowBuffer;\n    };\n    RowRenderer.prototype.getRowBufferInPixels = function () {\n        var rowsToBuffer = this.getRowBuffer();\n        var defaultRowHeight = this.gridOptionsService.getRowHeightAsNumber();\n        return rowsToBuffer * defaultRowHeight;\n    };\n    RowRenderer.prototype.workOutFirstAndLastRowsToRender = function () {\n        var newFirst;\n        var newLast;\n        if (!this.paginationProxy.isRowsToRender()) {\n            newFirst = 0;\n            newLast = -1; // setting to -1 means nothing in range\n        }\n        else if (this.printLayout) {\n            newFirst = this.paginationProxy.getPageFirstRow();\n            newLast = this.paginationProxy.getPageLastRow();\n        }\n        else {\n            var bufferPixels = this.getRowBufferInPixels();\n            var gridBodyCtrl = this.ctrlsService.getGridBodyCtrl();\n            var suppressRowVirtualisation = this.gridOptionsService.is('suppressRowVirtualisation');\n            var rowHeightsChanged = false;\n            var firstPixel = void 0;\n            var lastPixel = void 0;\n            do {\n                var paginationOffset = this.paginationProxy.getPixelOffset();\n                var _a = this.paginationProxy.getCurrentPagePixelRange(), pageFirstPixel = _a.pageFirstPixel, pageLastPixel = _a.pageLastPixel;\n                var divStretchOffset = this.rowContainerHeightService.getDivStretchOffset();\n                var bodyVRange = gridBodyCtrl.getScrollFeature().getVScrollPosition();\n                var bodyTopPixel = bodyVRange.top;\n                var bodyBottomPixel = bodyVRange.bottom;\n                if (suppressRowVirtualisation) {\n                    firstPixel = pageFirstPixel + divStretchOffset;\n                    lastPixel = pageLastPixel + divStretchOffset;\n                }\n                else {\n                    firstPixel = Math.max(bodyTopPixel + paginationOffset - bufferPixels, pageFirstPixel) + divStretchOffset;\n                    lastPixel = Math.min(bodyBottomPixel + paginationOffset + bufferPixels, pageLastPixel) + divStretchOffset;\n                }\n                this.firstVisibleVPixel = Math.max(bodyTopPixel + paginationOffset, pageFirstPixel) + divStretchOffset;\n                // if the rows we are about to display get their heights changed, then that upsets the calcs from above.\n                rowHeightsChanged = this.ensureAllRowsInRangeHaveHeightsCalculated(firstPixel, lastPixel);\n            } while (rowHeightsChanged);\n            var firstRowIndex = this.paginationProxy.getRowIndexAtPixel(firstPixel);\n            var lastRowIndex = this.paginationProxy.getRowIndexAtPixel(lastPixel);\n            var pageFirstRow = this.paginationProxy.getPageFirstRow();\n            var pageLastRow = this.paginationProxy.getPageLastRow();\n            // adjust, in case buffer extended actual size\n            if (firstRowIndex < pageFirstRow) {\n                firstRowIndex = pageFirstRow;\n            }\n            if (lastRowIndex > pageLastRow) {\n                lastRowIndex = pageLastRow;\n            }\n            newFirst = firstRowIndex;\n            newLast = lastRowIndex;\n        }\n        // sometimes user doesn't set CSS right and ends up with grid with no height and grid ends up\n        // trying to render all the rows, eg 10,000+ rows. this will kill the browser. so instead of\n        // killing the browser, we limit the number of rows. just in case some use case we didn't think\n        // of, we also have a property to not do this operation.\n        var rowLayoutNormal = this.gridOptionsService.isDomLayout('normal');\n        var suppressRowCountRestriction = this.gridOptionsService.is('suppressMaxRenderedRowRestriction');\n        var rowBufferMaxSize = Math.max(this.getRowBuffer(), 500);\n        if (rowLayoutNormal && !suppressRowCountRestriction) {\n            if (newLast - newFirst > rowBufferMaxSize) {\n                newLast = newFirst + rowBufferMaxSize;\n            }\n        }\n        var firstDiffers = newFirst !== this.firstRenderedRow;\n        var lastDiffers = newLast !== this.lastRenderedRow;\n        if (firstDiffers || lastDiffers) {\n            this.firstRenderedRow = newFirst;\n            this.lastRenderedRow = newLast;\n            var event_1 = {\n                type: Events.EVENT_VIEWPORT_CHANGED,\n                firstRow: newFirst,\n                lastRow: newLast\n            };\n            this.eventService.dispatchEvent(event_1);\n        }\n    };\n    /**\n     * This event will only be fired once, and is queued until after the browser next renders.\n     * This allows us to fire an event during the start of the render cycle, when we first see data being rendered\n     * but not execute the event until all of the data has finished being rendered to the dom.\n     */\n    RowRenderer.prototype.dispatchFirstDataRenderedEvent = function () {\n        var _this = this;\n        if (this.dataFirstRenderedFired) {\n            return;\n        }\n        this.dataFirstRenderedFired = true;\n        var event = {\n            type: Events.EVENT_FIRST_DATA_RENDERED,\n            firstRow: this.firstRenderedRow,\n            lastRow: this.lastRenderedRow,\n        };\n        // See AG-7018\n        window.requestAnimationFrame(function () {\n            _this.beans.eventService.dispatchEvent(event);\n        });\n    };\n    RowRenderer.prototype.ensureAllRowsInRangeHaveHeightsCalculated = function (topPixel, bottomPixel) {\n        // ensureRowHeightsVisible only works with CSRM, as it's the only row model that allows lazy row height calcs.\n        // all the other row models just hard code so the method just returns back false\n        var res = this.paginationProxy.ensureRowHeightsValid(topPixel, bottomPixel, -1, -1);\n        if (res) {\n            this.updateContainerHeights();\n        }\n        return res;\n    };\n    RowRenderer.prototype.getFirstVisibleVerticalPixel = function () {\n        return this.firstVisibleVPixel;\n    };\n    RowRenderer.prototype.getFirstVirtualRenderedRow = function () {\n        return this.firstRenderedRow;\n    };\n    RowRenderer.prototype.getLastVirtualRenderedRow = function () {\n        return this.lastRenderedRow;\n    };\n    // check that none of the rows to remove are editing or focused as:\n    // a) if editing, we want to keep them, otherwise the user will loose the context of the edit,\n    //    eg user starts editing, enters some text, then scrolls down and then up, next time row rendered\n    //    the edit is reset - so we want to keep it rendered.\n    // b) if focused, we want ot keep keyboard focus, so if user ctrl+c, it goes to clipboard,\n    //    otherwise the user can range select and drag (with focus cell going out of the viewport)\n    //    and then ctrl+c, nothing will happen if cell is removed from dom.\n    // c) if detail record of master detail, as users complained that the context of detail rows\n    //    was getting lost when detail row out of view. eg user expands to show detail row,\n    //    then manipulates the detail panel (eg sorts the detail grid), then context is lost\n    //    after detail panel is scrolled out of / into view.\n    RowRenderer.prototype.doNotUnVirtualiseRow = function (rowComp) {\n        var REMOVE_ROW = false;\n        var KEEP_ROW = true;\n        var rowNode = rowComp.getRowNode();\n        var rowHasFocus = this.focusService.isRowNodeFocused(rowNode);\n        var rowIsEditing = rowComp.isEditing();\n        var rowIsDetail = rowNode.detail;\n        var mightWantToKeepRow = rowHasFocus || rowIsEditing || rowIsDetail;\n        // if we deffo don't want to keep it,\n        if (!mightWantToKeepRow) {\n            return REMOVE_ROW;\n        }\n        // editing row, only remove if it is no longer rendered, eg filtered out or new data set.\n        // the reason we want to keep is if user is scrolling up and down, we don't want to loose\n        // the context of the editing in process.\n        var rowNodePresent = this.paginationProxy.isRowPresent(rowNode);\n        return rowNodePresent ? KEEP_ROW : REMOVE_ROW;\n    };\n    RowRenderer.prototype.createRowCon = function (rowNode, animate, afterScroll) {\n        var rowCtrlFromCache = this.cachedRowCtrls ? this.cachedRowCtrls.getRow(rowNode) : null;\n        if (rowCtrlFromCache) {\n            return rowCtrlFromCache;\n        }\n        // we don't use animations frames for printing, so the user can put the grid into print mode\n        // and immediately print - otherwise the user would have to wait for the rows to draw in the background\n        // (via the animation frames) which is awkward to do from code.\n        // we only do the animation frames after scrolling, as this is where we want the smooth user experience.\n        // having animation frames for other times makes the grid look 'jumpy'.\n        var suppressAnimationFrame = this.gridOptionsService.is('suppressAnimationFrame');\n        var useAnimationFrameForCreate = afterScroll && !suppressAnimationFrame && !this.printLayout;\n        var res = new RowCtrl(rowNode, this.beans, animate, useAnimationFrameForCreate, this.printLayout);\n        return res;\n    };\n    RowRenderer.prototype.getRenderedNodes = function () {\n        var renderedRows = this.rowCtrlsByRowIndex;\n        return Object.keys(renderedRows).map(function (key) { return renderedRows[key].getRowNode(); });\n    };\n    RowRenderer.prototype.getRowByPosition = function (rowPosition) {\n        var rowCtrl;\n        var rowIndex = rowPosition.rowIndex;\n        switch (rowPosition.rowPinned) {\n            case 'top':\n                rowCtrl = this.topRowCtrls[rowIndex];\n                break;\n            case 'bottom':\n                rowCtrl = this.bottomRowCtrls[rowIndex];\n                break;\n            default:\n                rowCtrl = this.rowCtrlsByRowIndex[rowIndex];\n                if (!rowCtrl) {\n                    rowCtrl = this.getStickyTopRowCtrls().find(function (ctrl) { return ctrl.getRowNode().rowIndex === rowIndex; }) || null;\n                }\n                break;\n        }\n        return rowCtrl;\n    };\n    RowRenderer.prototype.getRowNode = function (gridRow) {\n        switch (gridRow.rowPinned) {\n            case 'top':\n                return this.pinnedRowModel.getPinnedTopRowData()[gridRow.rowIndex];\n            case 'bottom':\n                return this.pinnedRowModel.getPinnedBottomRowData()[gridRow.rowIndex];\n            default:\n                return this.rowModel.getRow(gridRow.rowIndex);\n        }\n    };\n    // returns true if any row between startIndex and endIndex is rendered. used by\n    // SSRM or IRM, as they don't want to purge visible blocks from cache.\n    RowRenderer.prototype.isRangeInRenderedViewport = function (startIndex, endIndex) {\n        // parent closed means the parent node is not expanded, thus these blocks are not visible\n        var parentClosed = startIndex == null || endIndex == null;\n        if (parentClosed) {\n            return false;\n        }\n        var blockAfterViewport = startIndex > this.lastRenderedRow;\n        var blockBeforeViewport = endIndex < this.firstRenderedRow;\n        var blockInsideViewport = !blockBeforeViewport && !blockAfterViewport;\n        return blockInsideViewport;\n    };\n    __decorate$13([\n        Autowired(\"animationFrameService\")\n    ], RowRenderer.prototype, \"animationFrameService\", void 0);\n    __decorate$13([\n        Autowired(\"paginationProxy\")\n    ], RowRenderer.prototype, \"paginationProxy\", void 0);\n    __decorate$13([\n        Autowired(\"columnModel\")\n    ], RowRenderer.prototype, \"columnModel\", void 0);\n    __decorate$13([\n        Autowired(\"pinnedRowModel\")\n    ], RowRenderer.prototype, \"pinnedRowModel\", void 0);\n    __decorate$13([\n        Autowired(\"rowModel\")\n    ], RowRenderer.prototype, \"rowModel\", void 0);\n    __decorate$13([\n        Autowired(\"focusService\")\n    ], RowRenderer.prototype, \"focusService\", void 0);\n    __decorate$13([\n        Autowired(\"beans\")\n    ], RowRenderer.prototype, \"beans\", void 0);\n    __decorate$13([\n        Autowired(\"rowContainerHeightService\")\n    ], RowRenderer.prototype, \"rowContainerHeightService\", void 0);\n    __decorate$13([\n        Autowired(\"ctrlsService\")\n    ], RowRenderer.prototype, \"ctrlsService\", void 0);\n    __decorate$13([\n        PostConstruct\n    ], RowRenderer.prototype, \"postConstruct\", null);\n    RowRenderer = __decorate$13([\n        Bean(\"rowRenderer\")\n    ], RowRenderer);\n    return RowRenderer;\n}(BeanStub));\nvar RowCtrlCache = /** @class */ (function () {\n    function RowCtrlCache(maxCount) {\n        // map for fast access\n        this.entriesMap = {};\n        // list for keeping order\n        this.entriesList = [];\n        this.maxCount = maxCount;\n    }\n    RowCtrlCache.prototype.addRow = function (rowCtrl) {\n        this.entriesMap[rowCtrl.getRowNode().id] = rowCtrl;\n        this.entriesList.push(rowCtrl);\n        rowCtrl.setCached(true);\n        if (this.entriesList.length > this.maxCount) {\n            var rowCtrlToDestroy = this.entriesList[0];\n            rowCtrlToDestroy.destroyFirstPass();\n            rowCtrlToDestroy.destroySecondPass();\n            this.removeFromCache(rowCtrlToDestroy);\n        }\n    };\n    RowCtrlCache.prototype.getRow = function (rowNode) {\n        if (rowNode == null || rowNode.id == null) {\n            return null;\n        }\n        var res = this.entriesMap[rowNode.id];\n        if (!res) {\n            return null;\n        }\n        this.removeFromCache(res);\n        res.setCached(false);\n        // this can happen if user reloads data, and a new RowNode is reusing\n        // the same ID as the old one\n        var rowNodeMismatch = res.getRowNode() != rowNode;\n        return rowNodeMismatch ? null : res;\n    };\n    RowCtrlCache.prototype.removeFromCache = function (rowCtrl) {\n        var rowNodeId = rowCtrl.getRowNode().id;\n        delete this.entriesMap[rowNodeId];\n        removeFromArray(this.entriesList, rowCtrl);\n    };\n    RowCtrlCache.prototype.getEntries = function () {\n        return this.entriesList;\n    };\n    return RowCtrlCache;\n}());\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$15 = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$12 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar ValueFormatterService = /** @class */ (function (_super) {\n    __extends$15(ValueFormatterService, _super);\n    function ValueFormatterService() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    ValueFormatterService.prototype.formatValue = function (column, node, value, suppliedFormatter, useFormatterFromColumn) {\n        if (useFormatterFromColumn === void 0) { useFormatterFromColumn = true; }\n        var result = null;\n        var formatter;\n        var colDef = column.getColDef();\n        if (suppliedFormatter) {\n            // use supplied formatter if provided, e.g. set filter items can have their own value formatters\n            formatter = suppliedFormatter;\n        }\n        else if (useFormatterFromColumn) {\n            formatter = colDef.valueFormatter;\n        }\n        if (formatter) {\n            var params = {\n                value: value,\n                node: node,\n                data: node ? node.data : null,\n                colDef: colDef,\n                column: column,\n                api: this.gridOptionsService.api,\n                columnApi: this.gridOptionsService.columnApi,\n                context: this.gridOptionsService.context\n            };\n            if (typeof formatter === 'function') {\n                result = formatter(params);\n            }\n            else {\n                result = this.expressionService.evaluate(formatter, params);\n            }\n        }\n        else if (colDef.refData) {\n            return colDef.refData[value] || '';\n        }\n        // if we don't do this, then arrays get displayed as 1,2,3, but we want 1, 2, 3 (i.e. with spaces)\n        if (result == null && Array.isArray(value)) {\n            result = value.join(', ');\n        }\n        return result;\n    };\n    __decorate$12([\n        Autowired('expressionService')\n    ], ValueFormatterService.prototype, \"expressionService\", void 0);\n    ValueFormatterService = __decorate$12([\n        Bean('valueFormatterService')\n    ], ValueFormatterService);\n    return ValueFormatterService;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$14 = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$11 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar PinnedRowModel = /** @class */ (function (_super) {\n    __extends$14(PinnedRowModel, _super);\n    function PinnedRowModel() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    PinnedRowModel.prototype.init = function () {\n        this.setPinnedTopRowData(this.gridOptionsService.get('pinnedTopRowData'));\n        this.setPinnedBottomRowData(this.gridOptionsService.get('pinnedBottomRowData'));\n    };\n    PinnedRowModel.prototype.isEmpty = function (floating) {\n        var rows = floating === 'top' ? this.pinnedTopRows : this.pinnedBottomRows;\n        return missingOrEmpty(rows);\n    };\n    PinnedRowModel.prototype.isRowsToRender = function (floating) {\n        return !this.isEmpty(floating);\n    };\n    PinnedRowModel.prototype.getRowAtPixel = function (pixel, floating) {\n        var rows = floating === 'top' ? this.pinnedTopRows : this.pinnedBottomRows;\n        if (missingOrEmpty(rows)) {\n            return 0; // this should never happen, just in case, 0 is graceful failure\n        }\n        for (var i = 0; i < rows.length; i++) {\n            var rowNode = rows[i];\n            var rowTopPixel = rowNode.rowTop + rowNode.rowHeight - 1;\n            // only need to range check against the top pixel, as we are going through the list\n            // in order, first row to hit the pixel wins\n            if (rowTopPixel >= pixel) {\n                return i;\n            }\n        }\n        return rows.length - 1;\n    };\n    PinnedRowModel.prototype.setPinnedTopRowData = function (rowData) {\n        this.pinnedTopRows = this.createNodesFromData(rowData, true);\n        var event = {\n            type: Events.EVENT_PINNED_ROW_DATA_CHANGED\n        };\n        this.eventService.dispatchEvent(event);\n    };\n    PinnedRowModel.prototype.setPinnedBottomRowData = function (rowData) {\n        this.pinnedBottomRows = this.createNodesFromData(rowData, false);\n        var event = {\n            type: Events.EVENT_PINNED_ROW_DATA_CHANGED\n        };\n        this.eventService.dispatchEvent(event);\n    };\n    PinnedRowModel.prototype.createNodesFromData = function (allData, isTop) {\n        var _this = this;\n        var rowNodes = [];\n        if (allData) {\n            var nextRowTop_1 = 0;\n            allData.forEach(function (dataItem, index) {\n                var rowNode = new RowNode(_this.beans);\n                rowNode.data = dataItem;\n                var idPrefix = isTop ? RowNode.ID_PREFIX_TOP_PINNED : RowNode.ID_PREFIX_BOTTOM_PINNED;\n                rowNode.id = idPrefix + index;\n                rowNode.rowPinned = isTop ? 'top' : 'bottom';\n                rowNode.setRowTop(nextRowTop_1);\n                rowNode.setRowHeight(_this.gridOptionsService.getRowHeightForNode(rowNode).height);\n                rowNode.setRowIndex(index);\n                nextRowTop_1 += rowNode.rowHeight;\n                rowNodes.push(rowNode);\n            });\n        }\n        return rowNodes;\n    };\n    PinnedRowModel.prototype.getPinnedTopRowData = function () {\n        return this.pinnedTopRows;\n    };\n    PinnedRowModel.prototype.getPinnedBottomRowData = function () {\n        return this.pinnedBottomRows;\n    };\n    PinnedRowModel.prototype.getPinnedTopTotalHeight = function () {\n        return this.getTotalHeight(this.pinnedTopRows);\n    };\n    PinnedRowModel.prototype.getPinnedTopRowCount = function () {\n        return this.pinnedTopRows ? this.pinnedTopRows.length : 0;\n    };\n    PinnedRowModel.prototype.getPinnedBottomRowCount = function () {\n        return this.pinnedBottomRows ? this.pinnedBottomRows.length : 0;\n    };\n    PinnedRowModel.prototype.getPinnedTopRow = function (index) {\n        return this.pinnedTopRows[index];\n    };\n    PinnedRowModel.prototype.getPinnedBottomRow = function (index) {\n        return this.pinnedBottomRows[index];\n    };\n    PinnedRowModel.prototype.forEachPinnedTopRow = function (callback) {\n        if (missingOrEmpty(this.pinnedTopRows)) {\n            return;\n        }\n        this.pinnedTopRows.forEach(callback);\n    };\n    PinnedRowModel.prototype.forEachPinnedBottomRow = function (callback) {\n        if (missingOrEmpty(this.pinnedBottomRows)) {\n            return;\n        }\n        this.pinnedBottomRows.forEach(callback);\n    };\n    PinnedRowModel.prototype.getPinnedBottomTotalHeight = function () {\n        return this.getTotalHeight(this.pinnedBottomRows);\n    };\n    PinnedRowModel.prototype.getTotalHeight = function (rowNodes) {\n        if (!rowNodes || rowNodes.length === 0) {\n            return 0;\n        }\n        var lastNode = last(rowNodes);\n        return lastNode.rowTop + lastNode.rowHeight;\n    };\n    __decorate$11([\n        Autowired('beans')\n    ], PinnedRowModel.prototype, \"beans\", void 0);\n    __decorate$11([\n        PostConstruct\n    ], PinnedRowModel.prototype, \"init\", null);\n    PinnedRowModel = __decorate$11([\n        Bean('pinnedRowModel')\n    ], PinnedRowModel);\n    return PinnedRowModel;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar ServerSideTransactionResultStatus;\n(function (ServerSideTransactionResultStatus) {\n    /** Transaction was successfully applied */\n    ServerSideTransactionResultStatus[\"Applied\"] = \"Applied\";\n    /**\n     * Store was not found, transaction not applied.\n     * Either invalid route, or the parent row has not yet been expanded.\n     */\n    ServerSideTransactionResultStatus[\"StoreNotFound\"] = \"StoreNotFound\";\n    /**\n     * Store is loading, transaction not applied.\n     */\n    ServerSideTransactionResultStatus[\"StoreLoading\"] = \"StoreLoading\";\n    /**\n     * Store is loading (as max loads exceeded), transaction not applied.\n     */\n    ServerSideTransactionResultStatus[\"StoreWaitingToLoad\"] = \"StoreWaitingToLoad\";\n    /**\n     * Store load attempt failed, transaction not applied.\n     */\n    ServerSideTransactionResultStatus[\"StoreLoadingFailed\"] = \"StoreLoadingFailed\";\n    /**\n     * Store is type Partial, which doesn't accept transactions\n     */\n    ServerSideTransactionResultStatus[\"StoreWrongType\"] = \"StoreWrongType\";\n    /**\n     * Transaction was cancelled, due to grid.\n     * Callback isApplyServerSideTransaction() returning false\n     */\n    ServerSideTransactionResultStatus[\"Cancelled\"] = \"Cancelled\";\n})(ServerSideTransactionResultStatus || (ServerSideTransactionResultStatus = {}));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\n// when doing transactions, or change detection, and grouping is present\n// in the data, there is no need for the ClientSideRowModel to update each\n// group after an update, ony parts that were impacted by the change.\n// this class keeps track of all groups that were impacted by a transaction.\n// the the different CSRM operations (filter, sort etc) use the forEach method\n// to visit each group that was changed.\nvar ChangedPath = /** @class */ (function () {\n    function ChangedPath(keepingColumns, rootNode) {\n        // whether changed path is active of not. it is active when a) doing\n        // a transaction update or b) doing change detection. if we are doing\n        // a CSRM refresh for other reasons (after sort or filter, or user calling\n        // setRowData() without delta mode) then we are not active. we are also\n        // marked as not active if secondary columns change in pivot (as this impacts\n        // aggregations)\n        this.active = true;\n        // for each node in the change path, we also store which columns need\n        // to be re-aggregated.\n        this.nodeIdsToColumns = {};\n        // for quick lookup, all items in the change path are mapped by nodeId\n        this.mapToItems = {};\n        this.keepingColumns = keepingColumns;\n        this.pathRoot = {\n            rowNode: rootNode,\n            children: null\n        };\n        this.mapToItems[rootNode.id] = this.pathRoot;\n    }\n    // can be set inactive by:\n    // a) ClientSideRowModel, if no transactions or\n    // b) PivotService, if secondary columns changed\n    ChangedPath.prototype.setInactive = function () {\n        this.active = false;\n    };\n    ChangedPath.prototype.isActive = function () {\n        return this.active;\n    };\n    ChangedPath.prototype.depthFirstSearchChangedPath = function (pathItem, callback) {\n        if (pathItem.children) {\n            for (var i = 0; i < pathItem.children.length; i++) {\n                this.depthFirstSearchChangedPath(pathItem.children[i], callback);\n            }\n        }\n        callback(pathItem.rowNode);\n    };\n    ChangedPath.prototype.depthFirstSearchEverything = function (rowNode, callback, traverseEverything) {\n        if (rowNode.childrenAfterGroup) {\n            for (var i = 0; i < rowNode.childrenAfterGroup.length; i++) {\n                var childNode = rowNode.childrenAfterGroup[i];\n                if (childNode.childrenAfterGroup) {\n                    this.depthFirstSearchEverything(rowNode.childrenAfterGroup[i], callback, traverseEverything);\n                }\n                else if (traverseEverything) {\n                    callback(childNode);\n                }\n            }\n        }\n        callback(rowNode);\n    };\n    // traverseLeafNodes -> used when NOT doing changed path, ie traversing everything. the callback\n    // will be called for child nodes in addition to parent nodes.\n    ChangedPath.prototype.forEachChangedNodeDepthFirst = function (callback, traverseLeafNodes, includeUnchangedNodes) {\n        if (traverseLeafNodes === void 0) { traverseLeafNodes = false; }\n        if (includeUnchangedNodes === void 0) { includeUnchangedNodes = false; }\n        if (this.active && !includeUnchangedNodes) {\n            // if we are active, then use the change path to callback\n            // only for updated groups\n            this.depthFirstSearchChangedPath(this.pathRoot, callback);\n        }\n        else {\n            // we are not active, so callback for everything, walk the entire path\n            this.depthFirstSearchEverything(this.pathRoot.rowNode, callback, traverseLeafNodes);\n        }\n    };\n    ChangedPath.prototype.executeFromRootNode = function (callback) {\n        callback(this.pathRoot.rowNode);\n    };\n    ChangedPath.prototype.createPathItems = function (rowNode) {\n        var pointer = rowNode;\n        var newEntryCount = 0;\n        while (!this.mapToItems[pointer.id]) {\n            var newEntry = {\n                rowNode: pointer,\n                children: null\n            };\n            this.mapToItems[pointer.id] = newEntry;\n            newEntryCount++;\n            pointer = pointer.parent;\n        }\n        return newEntryCount;\n    };\n    ChangedPath.prototype.populateColumnsMap = function (rowNode, columns) {\n        var _this = this;\n        if (!this.keepingColumns || !columns) {\n            return;\n        }\n        var pointer = rowNode;\n        while (pointer) {\n            // if columns, add the columns in all the way to parent, merging\n            // in any other columns that might be there already\n            if (!this.nodeIdsToColumns[pointer.id]) {\n                this.nodeIdsToColumns[pointer.id] = {};\n            }\n            columns.forEach(function (col) { return _this.nodeIdsToColumns[pointer.id][col.getId()] = true; });\n            pointer = pointer.parent;\n        }\n    };\n    ChangedPath.prototype.linkPathItems = function (rowNode, newEntryCount) {\n        var pointer = rowNode;\n        for (var i = 0; i < newEntryCount; i++) {\n            var thisItem = this.mapToItems[pointer.id];\n            var parentItem = this.mapToItems[pointer.parent.id];\n            if (!parentItem.children) {\n                parentItem.children = [];\n            }\n            parentItem.children.push(thisItem);\n            pointer = pointer.parent;\n        }\n    };\n    // called by\n    // 1) change detection (provides cols) and\n    // 2) groupStage if doing transaction update (doesn't provide cols)\n    ChangedPath.prototype.addParentNode = function (rowNode, columns) {\n        if (!rowNode || rowNode.isRowPinned()) {\n            return;\n        }\n        // we cannot do  both steps below in the same loop as\n        // the second loop has a dependency on the first loop.\n        // ie the hierarchy cannot be stitched up yet because\n        // we don't have it built yet\n        // create the new PathItem objects.\n        var newEntryCount = this.createPathItems(rowNode);\n        // link in the node items\n        this.linkPathItems(rowNode, newEntryCount);\n        // update columns\n        this.populateColumnsMap(rowNode, columns);\n    };\n    ChangedPath.prototype.canSkip = function (rowNode) {\n        return this.active && !this.mapToItems[rowNode.id];\n    };\n    ChangedPath.prototype.getValueColumnsForNode = function (rowNode, valueColumns) {\n        if (!this.keepingColumns) {\n            return valueColumns;\n        }\n        var colsForThisNode = this.nodeIdsToColumns[rowNode.id];\n        var result = valueColumns.filter(function (col) { return colsForThisNode[col.getId()]; });\n        return result;\n    };\n    ChangedPath.prototype.getNotValueColumnsForNode = function (rowNode, valueColumns) {\n        if (!this.keepingColumns) {\n            return null;\n        }\n        var colsForThisNode = this.nodeIdsToColumns[rowNode.id];\n        var result = valueColumns.filter(function (col) { return !colsForThisNode[col.getId()]; });\n        return result;\n    };\n    return ChangedPath;\n}());\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$13 = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar RowNodeBlock = /** @class */ (function (_super) {\n    __extends$13(RowNodeBlock, _super);\n    function RowNodeBlock(id) {\n        var _this = _super.call(this) || this;\n        _this.state = RowNodeBlock.STATE_WAITING_TO_LOAD;\n        _this.version = 0;\n        _this.id = id;\n        return _this;\n    }\n    RowNodeBlock.prototype.getId = function () {\n        return this.id;\n    };\n    RowNodeBlock.prototype.load = function () {\n        this.state = RowNodeBlock.STATE_LOADING;\n        this.loadFromDatasource();\n    };\n    RowNodeBlock.prototype.getVersion = function () {\n        return this.version;\n    };\n    RowNodeBlock.prototype.setStateWaitingToLoad = function () {\n        // in case any current loads in progress, this will have their results ignored\n        this.version++;\n        this.state = RowNodeBlock.STATE_WAITING_TO_LOAD;\n    };\n    RowNodeBlock.prototype.getState = function () {\n        return this.state;\n    };\n    RowNodeBlock.prototype.pageLoadFailed = function (version) {\n        var requestMostRecentAndLive = this.isRequestMostRecentAndLive(version);\n        if (requestMostRecentAndLive) {\n            this.state = RowNodeBlock.STATE_FAILED;\n            this.processServerFail();\n        }\n        this.dispatchLoadCompleted(false);\n    };\n    RowNodeBlock.prototype.success = function (version, params) {\n        this.successCommon(version, params);\n    };\n    RowNodeBlock.prototype.pageLoaded = function (version, rows, lastRow) {\n        this.successCommon(version, { rowData: rows, rowCount: lastRow });\n    };\n    RowNodeBlock.prototype.isRequestMostRecentAndLive = function (version) {\n        // thisIsMostRecentRequest - if block was refreshed, then another request\n        // could of been sent after this one.\n        var thisIsMostRecentRequest = version === this.version;\n        // weAreNotDestroyed - if InfiniteStore is purged, then blocks are destroyed\n        // and new blocks created. so data loads of old blocks are discarded.\n        var weAreNotDestroyed = this.isAlive();\n        return thisIsMostRecentRequest && weAreNotDestroyed;\n    };\n    RowNodeBlock.prototype.successCommon = function (version, params) {\n        // need to dispatch load complete before processing the data, as PaginationComp checks\n        // RowNodeBlockLoader to see if it is still loading, so the RowNodeBlockLoader needs to\n        // be updated first (via LoadComplete event) before PaginationComp updates (via processServerResult method)\n        this.dispatchLoadCompleted();\n        var requestMostRecentAndLive = this.isRequestMostRecentAndLive(version);\n        if (requestMostRecentAndLive) {\n            this.state = RowNodeBlock.STATE_LOADED;\n            this.processServerResult(params);\n        }\n    };\n    RowNodeBlock.prototype.dispatchLoadCompleted = function (success) {\n        if (success === void 0) { success = true; }\n        // we fire event regardless of processing data or now, as we want\n        // the concurrentLoadRequests count to be reduced in BlockLoader\n        var event = {\n            type: RowNodeBlock.EVENT_LOAD_COMPLETE,\n            success: success,\n            block: this\n        };\n        this.dispatchEvent(event);\n    };\n    RowNodeBlock.EVENT_LOAD_COMPLETE = 'loadComplete';\n    RowNodeBlock.STATE_WAITING_TO_LOAD = 'needsLoading';\n    RowNodeBlock.STATE_LOADING = 'loading';\n    RowNodeBlock.STATE_LOADED = 'loaded';\n    RowNodeBlock.STATE_FAILED = 'failed';\n    return RowNodeBlock;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$12 = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$10 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __param$7 = (undefined && undefined.__param) || function (paramIndex, decorator) {\n    return function (target, key) { decorator(target, key, paramIndex); }\n};\nvar RowNodeBlockLoader = /** @class */ (function (_super) {\n    __extends$12(RowNodeBlockLoader, _super);\n    function RowNodeBlockLoader() {\n        var _this = _super !== null && _super.apply(this, arguments) || this;\n        _this.activeBlockLoadsCount = 0;\n        _this.blocks = [];\n        _this.active = true;\n        return _this;\n    }\n    RowNodeBlockLoader_1 = RowNodeBlockLoader;\n    RowNodeBlockLoader.prototype.postConstruct = function () {\n        this.maxConcurrentRequests = this.getMaxConcurrentDatasourceRequests();\n        var blockLoadDebounceMillis = this.gridOptionsService.getNum('blockLoadDebounceMillis');\n        if (blockLoadDebounceMillis && blockLoadDebounceMillis > 0) {\n            this.checkBlockToLoadDebounce = _.debounce(this.performCheckBlocksToLoad.bind(this), blockLoadDebounceMillis);\n        }\n    };\n    RowNodeBlockLoader.prototype.setBeans = function (loggerFactory) {\n        this.logger = loggerFactory.create('RowNodeBlockLoader');\n    };\n    RowNodeBlockLoader.prototype.getMaxConcurrentDatasourceRequests = function () {\n        var res = this.gridOptionsService.getNum('maxConcurrentDatasourceRequests');\n        if (res == null) {\n            return 2;\n        } // 2 is the default\n        if (res <= 0) {\n            return;\n        } // negative number, eg -1, means no max restriction\n        return res;\n    };\n    RowNodeBlockLoader.prototype.addBlock = function (block) {\n        this.blocks.push(block);\n        // note that we do not remove this listener when removing the block. this is because the\n        // cache can get destroyed (and containing blocks) when a block is loading. however the loading block\n        // is still counted as an active loading block and we must decrement activeBlockLoadsCount when it finishes.\n        block.addEventListener(RowNodeBlock.EVENT_LOAD_COMPLETE, this.loadComplete.bind(this));\n        this.checkBlockToLoad();\n    };\n    RowNodeBlockLoader.prototype.removeBlock = function (block) {\n        _.removeFromArray(this.blocks, block);\n    };\n    RowNodeBlockLoader.prototype.destroy = function () {\n        _super.prototype.destroy.call(this);\n        this.active = false;\n    };\n    RowNodeBlockLoader.prototype.loadComplete = function () {\n        this.activeBlockLoadsCount--;\n        this.checkBlockToLoad();\n        this.dispatchEvent({ type: RowNodeBlockLoader_1.BLOCK_LOADED_EVENT });\n        if (this.activeBlockLoadsCount == 0) {\n            this.dispatchEvent({ type: RowNodeBlockLoader_1.BLOCK_LOADER_FINISHED_EVENT });\n        }\n    };\n    RowNodeBlockLoader.prototype.checkBlockToLoad = function () {\n        if (this.checkBlockToLoadDebounce) {\n            this.checkBlockToLoadDebounce();\n        }\n        else {\n            this.performCheckBlocksToLoad();\n        }\n    };\n    RowNodeBlockLoader.prototype.performCheckBlocksToLoad = function () {\n        if (!this.active) {\n            return;\n        }\n        this.printCacheStatus();\n        if (this.maxConcurrentRequests != null && this.activeBlockLoadsCount >= this.maxConcurrentRequests) {\n            this.logger.log(\"checkBlockToLoad: max loads exceeded\");\n            return;\n        }\n        var loadAvailability = this.getAvailableLoadingCount();\n        var blocksToLoad = this.blocks.filter(function (block) { return (block.getState() === RowNodeBlock.STATE_WAITING_TO_LOAD); }).slice(0, loadAvailability);\n        this.registerLoads(blocksToLoad.length);\n        blocksToLoad.forEach(function (block) { return block.load(); });\n        this.printCacheStatus();\n    };\n    RowNodeBlockLoader.prototype.getBlockState = function () {\n        if (this.gridOptionsService.isRowModelType('serverSide')) {\n            var ssrm = this.rowModel;\n            return ssrm.getBlockStates();\n        }\n        var result = {};\n        this.blocks.forEach(function (block) {\n            var _a = block.getBlockStateJson(), id = _a.id, state = _a.state;\n            result[id] = state;\n        });\n        return result;\n    };\n    RowNodeBlockLoader.prototype.printCacheStatus = function () {\n        if (this.logger.isLogging()) {\n            this.logger.log(\"printCacheStatus: activePageLoadsCount = \" + this.activeBlockLoadsCount + \",\"\n                + (\" blocks = \" + JSON.stringify(this.getBlockState())));\n        }\n    };\n    RowNodeBlockLoader.prototype.isLoading = function () {\n        return this.activeBlockLoadsCount > 0;\n    };\n    RowNodeBlockLoader.prototype.registerLoads = function (count) {\n        this.activeBlockLoadsCount += count;\n    };\n    RowNodeBlockLoader.prototype.getAvailableLoadingCount = function () {\n        return this.maxConcurrentRequests !== undefined ? this.maxConcurrentRequests - this.activeBlockLoadsCount : undefined;\n    };\n    var RowNodeBlockLoader_1;\n    RowNodeBlockLoader.BLOCK_LOADED_EVENT = 'blockLoaded';\n    RowNodeBlockLoader.BLOCK_LOADER_FINISHED_EVENT = 'blockLoaderFinished';\n    __decorate$10([\n        Autowired('rowModel')\n    ], RowNodeBlockLoader.prototype, \"rowModel\", void 0);\n    __decorate$10([\n        PostConstruct\n    ], RowNodeBlockLoader.prototype, \"postConstruct\", null);\n    __decorate$10([\n        __param$7(0, Qualifier('loggerFactory'))\n    ], RowNodeBlockLoader.prototype, \"setBeans\", null);\n    RowNodeBlockLoader = RowNodeBlockLoader_1 = __decorate$10([\n        Bean('rowNodeBlockLoader')\n    ], RowNodeBlockLoader);\n    return RowNodeBlockLoader;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$11 = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$$ = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar PaginationProxy = /** @class */ (function (_super) {\n    __extends$11(PaginationProxy, _super);\n    function PaginationProxy() {\n        var _this = _super !== null && _super.apply(this, arguments) || this;\n        _this.currentPage = 0;\n        _this.topDisplayedRowIndex = 0;\n        _this.bottomDisplayedRowIndex = 0;\n        _this.pixelOffset = 0;\n        _this.masterRowCount = 0;\n        return _this;\n    }\n    PaginationProxy.prototype.postConstruct = function () {\n        this.active = this.gridOptionsService.is('pagination');\n        this.paginateChildRows = this.isPaginateChildRows();\n        this.addManagedListener(this.eventService, Events.EVENT_MODEL_UPDATED, this.onModelUpdated.bind(this));\n        this.addManagedPropertyListener('pagination', this.onPaginationPageSizeChanged.bind(this));\n        this.addManagedPropertyListener('paginationPageSize', this.onPaginationPageSizeChanged.bind(this));\n        this.onModelUpdated();\n    };\n    PaginationProxy.prototype.ensureRowHeightsValid = function (startPixel, endPixel, startLimitIndex, endLimitIndex) {\n        var res = this.rowModel.ensureRowHeightsValid(startPixel, endPixel, this.getPageFirstRow(), this.getPageLastRow());\n        if (res) {\n            this.calculatePages();\n        }\n        return res;\n    };\n    PaginationProxy.prototype.isPaginateChildRows = function () {\n        var shouldPaginate = this.gridOptionsService.is('groupRemoveSingleChildren') || this.gridOptionsService.is('groupRemoveLowestSingleChildren');\n        if (shouldPaginate) {\n            return true;\n        }\n        return this.gridOptionsService.is('paginateChildRows');\n    };\n    PaginationProxy.prototype.onModelUpdated = function (modelUpdatedEvent) {\n        this.calculatePages();\n        var paginationChangedEvent = {\n            type: Events.EVENT_PAGINATION_CHANGED,\n            animate: modelUpdatedEvent ? modelUpdatedEvent.animate : false,\n            newData: modelUpdatedEvent ? modelUpdatedEvent.newData : false,\n            newPage: modelUpdatedEvent ? modelUpdatedEvent.newPage : false,\n            keepRenderedRows: modelUpdatedEvent ? modelUpdatedEvent.keepRenderedRows : false\n        };\n        this.eventService.dispatchEvent(paginationChangedEvent);\n    };\n    PaginationProxy.prototype.onPaginationPageSizeChanged = function () {\n        this.active = this.gridOptionsService.is('pagination');\n        this.calculatePages();\n        var paginationChangedEvent = {\n            type: Events.EVENT_PAGINATION_CHANGED,\n            animate: false,\n            newData: false,\n            newPage: false,\n            // important to keep rendered rows, otherwise every time grid is resized,\n            // we would destroy all the rows.\n            keepRenderedRows: true\n        };\n        this.eventService.dispatchEvent(paginationChangedEvent);\n    };\n    PaginationProxy.prototype.goToPage = function (page) {\n        if (!this.active || this.currentPage === page || typeof this.currentPage !== 'number') {\n            return;\n        }\n        this.currentPage = page;\n        var event = {\n            type: Events.EVENT_MODEL_UPDATED,\n            animate: false,\n            keepRenderedRows: false,\n            newData: false,\n            newPage: true\n        };\n        this.onModelUpdated(event);\n    };\n    PaginationProxy.prototype.getPixelOffset = function () {\n        return this.pixelOffset;\n    };\n    PaginationProxy.prototype.getRow = function (index) {\n        return this.rowModel.getRow(index);\n    };\n    PaginationProxy.prototype.getRowNode = function (id) {\n        return this.rowModel.getRowNode(id);\n    };\n    PaginationProxy.prototype.getRowIndexAtPixel = function (pixel) {\n        return this.rowModel.getRowIndexAtPixel(pixel);\n    };\n    PaginationProxy.prototype.getCurrentPageHeight = function () {\n        if (missing(this.topRowBounds) || missing(this.bottomRowBounds)) {\n            return 0;\n        }\n        return Math.max(this.bottomRowBounds.rowTop + this.bottomRowBounds.rowHeight - this.topRowBounds.rowTop, 0);\n    };\n    PaginationProxy.prototype.getCurrentPagePixelRange = function () {\n        var pageFirstPixel = this.topRowBounds ? this.topRowBounds.rowTop : 0;\n        var pageLastPixel = this.bottomRowBounds ? this.bottomRowBounds.rowTop + this.bottomRowBounds.rowHeight : 0;\n        return { pageFirstPixel: pageFirstPixel, pageLastPixel: pageLastPixel };\n    };\n    PaginationProxy.prototype.isRowPresent = function (rowNode) {\n        if (!this.rowModel.isRowPresent(rowNode)) {\n            return false;\n        }\n        var nodeIsInPage = rowNode.rowIndex >= this.topDisplayedRowIndex && rowNode.rowIndex <= this.bottomDisplayedRowIndex;\n        return nodeIsInPage;\n    };\n    PaginationProxy.prototype.isEmpty = function () {\n        return this.rowModel.isEmpty();\n    };\n    PaginationProxy.prototype.isRowsToRender = function () {\n        return this.rowModel.isRowsToRender();\n    };\n    PaginationProxy.prototype.forEachNode = function (callback) {\n        return this.rowModel.forEachNode(callback);\n    };\n    PaginationProxy.prototype.forEachNodeOnPage = function (callback) {\n        var firstRow = this.getPageFirstRow();\n        var lastRow = this.getPageLastRow();\n        for (var i = firstRow; i <= lastRow; i++) {\n            var node = this.getRow(i);\n            if (node) {\n                callback(node);\n            }\n        }\n    };\n    PaginationProxy.prototype.getType = function () {\n        return this.rowModel.getType();\n    };\n    PaginationProxy.prototype.getRowBounds = function (index) {\n        var res = this.rowModel.getRowBounds(index);\n        res.rowIndex = index;\n        return res;\n    };\n    PaginationProxy.prototype.getPageFirstRow = function () {\n        return this.topRowBounds ? this.topRowBounds.rowIndex : -1;\n    };\n    PaginationProxy.prototype.getPageLastRow = function () {\n        return this.bottomRowBounds ? this.bottomRowBounds.rowIndex : -1;\n    };\n    PaginationProxy.prototype.getRowCount = function () {\n        return this.rowModel.getRowCount();\n    };\n    PaginationProxy.prototype.getPageForIndex = function (index) {\n        return Math.floor(index / this.pageSize);\n    };\n    PaginationProxy.prototype.goToPageWithIndex = function (index) {\n        if (!this.active) {\n            return;\n        }\n        var pageNumber = this.getPageForIndex(index);\n        this.goToPage(pageNumber);\n    };\n    PaginationProxy.prototype.isRowInPage = function (row) {\n        if (!this.active) {\n            return true;\n        }\n        var rowPage = this.getPageForIndex(row.rowIndex);\n        return rowPage === this.currentPage;\n    };\n    PaginationProxy.prototype.isLastPageFound = function () {\n        return this.rowModel.isLastRowIndexKnown();\n    };\n    PaginationProxy.prototype.getCurrentPage = function () {\n        return this.currentPage;\n    };\n    PaginationProxy.prototype.goToNextPage = function () {\n        this.goToPage(this.currentPage + 1);\n    };\n    PaginationProxy.prototype.goToPreviousPage = function () {\n        this.goToPage(this.currentPage - 1);\n    };\n    PaginationProxy.prototype.goToFirstPage = function () {\n        this.goToPage(0);\n    };\n    PaginationProxy.prototype.goToLastPage = function () {\n        var rowCount = this.rowModel.getRowCount();\n        var lastPage = Math.floor(rowCount / this.pageSize);\n        this.goToPage(lastPage);\n    };\n    PaginationProxy.prototype.getPageSize = function () {\n        return this.pageSize;\n    };\n    PaginationProxy.prototype.getTotalPages = function () {\n        return this.totalPages;\n    };\n    PaginationProxy.prototype.setPageSize = function () {\n        // show put this into super class\n        this.pageSize = this.gridOptionsService.getNum('paginationPageSize');\n        if (this.pageSize == null || this.pageSize < 1) {\n            this.pageSize = 100;\n        }\n    };\n    PaginationProxy.prototype.calculatePages = function () {\n        if (this.active) {\n            this.setPageSize();\n            if (this.paginateChildRows) {\n                this.calculatePagesAllRows();\n            }\n            else {\n                this.calculatePagesMasterRowsOnly();\n            }\n        }\n        else {\n            this.calculatedPagesNotActive();\n        }\n        this.topRowBounds = this.rowModel.getRowBounds(this.topDisplayedRowIndex);\n        if (this.topRowBounds) {\n            this.topRowBounds.rowIndex = this.topDisplayedRowIndex;\n        }\n        this.bottomRowBounds = this.rowModel.getRowBounds(this.bottomDisplayedRowIndex);\n        if (this.bottomRowBounds) {\n            this.bottomRowBounds.rowIndex = this.bottomDisplayedRowIndex;\n        }\n        this.setPixelOffset(exists(this.topRowBounds) ? this.topRowBounds.rowTop : 0);\n    };\n    PaginationProxy.prototype.setPixelOffset = function (value) {\n        if (this.pixelOffset === value) {\n            return;\n        }\n        this.pixelOffset = value;\n        this.eventService.dispatchEvent({ type: Events.EVENT_PAGINATION_PIXEL_OFFSET_CHANGED });\n    };\n    PaginationProxy.prototype.setZeroRows = function () {\n        this.masterRowCount = 0;\n        this.topDisplayedRowIndex = 0;\n        this.bottomDisplayedRowIndex = -1;\n        this.currentPage = 0;\n        this.totalPages = 0;\n    };\n    PaginationProxy.prototype.adjustCurrentPageIfInvalid = function () {\n        if (this.currentPage >= this.totalPages) {\n            this.currentPage = this.totalPages - 1;\n        }\n        if (!isFinite(this.currentPage) || isNaN(this.currentPage) || this.currentPage < 0) {\n            this.currentPage = 0;\n        }\n    };\n    PaginationProxy.prototype.calculatePagesMasterRowsOnly = function () {\n        // const csrm = <ClientSideRowModel> this.rowModel;\n        // const rootNode = csrm.getRootNode();\n        // const masterRows = rootNode.childrenAfterSort;\n        this.masterRowCount = this.rowModel.getTopLevelRowCount();\n        // we say <=0 (rather than =0) as viewport returns -1 when no rows\n        if (this.masterRowCount <= 0) {\n            this.setZeroRows();\n            return;\n        }\n        var masterLastRowIndex = this.masterRowCount - 1;\n        this.totalPages = Math.floor((masterLastRowIndex) / this.pageSize) + 1;\n        this.adjustCurrentPageIfInvalid();\n        var masterPageStartIndex = this.pageSize * this.currentPage;\n        var masterPageEndIndex = (this.pageSize * (this.currentPage + 1)) - 1;\n        if (masterPageEndIndex > masterLastRowIndex) {\n            masterPageEndIndex = masterLastRowIndex;\n        }\n        this.topDisplayedRowIndex = this.rowModel.getTopLevelRowDisplayedIndex(masterPageStartIndex);\n        // masterRows[masterPageStartIndex].rowIndex;\n        if (masterPageEndIndex === masterLastRowIndex) {\n            // if showing the last master row, then we want to show the very last row of the model\n            this.bottomDisplayedRowIndex = this.rowModel.getRowCount() - 1;\n        }\n        else {\n            var firstIndexNotToShow = this.rowModel.getTopLevelRowDisplayedIndex(masterPageEndIndex + 1);\n            //masterRows[masterPageEndIndex + 1].rowIndex;\n            // this gets the index of the last child - eg current row is open, we want to display all children,\n            // the index of the last child is one less than the index of the next parent row.\n            this.bottomDisplayedRowIndex = firstIndexNotToShow - 1;\n        }\n    };\n    PaginationProxy.prototype.getMasterRowCount = function () {\n        return this.masterRowCount;\n    };\n    PaginationProxy.prototype.calculatePagesAllRows = function () {\n        this.masterRowCount = this.rowModel.getRowCount();\n        if (this.masterRowCount === 0) {\n            this.setZeroRows();\n            return;\n        }\n        var maxRowIndex = this.masterRowCount - 1;\n        this.totalPages = Math.floor((maxRowIndex) / this.pageSize) + 1;\n        this.adjustCurrentPageIfInvalid();\n        this.topDisplayedRowIndex = this.pageSize * this.currentPage;\n        this.bottomDisplayedRowIndex = (this.pageSize * (this.currentPage + 1)) - 1;\n        if (this.bottomDisplayedRowIndex > maxRowIndex) {\n            this.bottomDisplayedRowIndex = maxRowIndex;\n        }\n    };\n    PaginationProxy.prototype.calculatedPagesNotActive = function () {\n        this.pageSize = this.rowModel.getRowCount();\n        this.totalPages = 1;\n        this.currentPage = 0;\n        this.topDisplayedRowIndex = 0;\n        this.bottomDisplayedRowIndex = this.rowModel.getRowCount() - 1;\n    };\n    __decorate$$([\n        Autowired('rowModel')\n    ], PaginationProxy.prototype, \"rowModel\", void 0);\n    __decorate$$([\n        PostConstruct\n    ], PaginationProxy.prototype, \"postConstruct\", null);\n    PaginationProxy = __decorate$$([\n        Bean('paginationProxy')\n    ], PaginationProxy);\n    return PaginationProxy;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$10 = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$_ = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar StylingService = /** @class */ (function (_super) {\n    __extends$10(StylingService, _super);\n    function StylingService() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    StylingService.prototype.processAllCellClasses = function (colDef, params, onApplicableClass, onNotApplicableClass) {\n        this.processClassRules(colDef.cellClassRules, params, onApplicableClass, onNotApplicableClass);\n        this.processStaticCellClasses(colDef, params, onApplicableClass);\n    };\n    StylingService.prototype.processClassRules = function (classRules, params, onApplicableClass, onNotApplicableClass) {\n        if (classRules == null) {\n            return;\n        }\n        var classNames = Object.keys(classRules);\n        var classesToApply = {};\n        var classesToRemove = {};\n        var _loop_1 = function (i) {\n            var className = classNames[i];\n            var rule = classRules[className];\n            var resultOfRule;\n            if (typeof rule === 'string') {\n                resultOfRule = this_1.expressionService.evaluate(rule, params);\n            }\n            else if (typeof rule === 'function') {\n                resultOfRule = rule(params);\n            }\n            // in case className = 'my-class1 my-class2', we need to split into individual class names\n            className.split(' ').forEach(function (singleClass) {\n                if (singleClass == null || singleClass.trim() == '') {\n                    return;\n                }\n                resultOfRule ? classesToApply[singleClass] = true : classesToRemove[singleClass] = true;\n            });\n        };\n        var this_1 = this;\n        for (var i = 0; i < classNames.length; i++) {\n            _loop_1(i);\n        }\n        // we remove all classes first, then add all classes second,\n        // in case a class appears in more than one rule, this means it will be added\n        // if appears in at least one truthy rule\n        if (onNotApplicableClass) {\n            Object.keys(classesToRemove).forEach(onNotApplicableClass);\n        }\n        Object.keys(classesToApply).forEach(onApplicableClass);\n    };\n    StylingService.prototype.getStaticCellClasses = function (colDef, params) {\n        var cellClass = colDef.cellClass;\n        if (!cellClass) {\n            return [];\n        }\n        var classOrClasses;\n        if (typeof cellClass === 'function') {\n            var cellClassFunc = cellClass;\n            classOrClasses = cellClassFunc(params);\n        }\n        else {\n            classOrClasses = cellClass;\n        }\n        if (typeof classOrClasses === 'string') {\n            classOrClasses = [classOrClasses];\n        }\n        return classOrClasses || [];\n    };\n    StylingService.prototype.processStaticCellClasses = function (colDef, params, onApplicableClass) {\n        var classOrClasses = this.getStaticCellClasses(colDef, params);\n        classOrClasses.forEach(function (cssClassItem) {\n            onApplicableClass(cssClassItem);\n        });\n    };\n    __decorate$_([\n        Autowired('expressionService')\n    ], StylingService.prototype, \"expressionService\", void 0);\n    StylingService = __decorate$_([\n        Bean('stylingService')\n    ], StylingService);\n    return StylingService;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$$ = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar AgToggleButton = /** @class */ (function (_super) {\n    __extends$$(AgToggleButton, _super);\n    function AgToggleButton(config) {\n        return _super.call(this, config, 'ag-toggle-button') || this;\n    }\n    AgToggleButton.prototype.setValue = function (value, silent) {\n        _super.prototype.setValue.call(this, value, silent);\n        this.addOrRemoveCssClass('ag-selected', this.getValue());\n        return this;\n    };\n    return AgToggleButton;\n}(AgCheckbox));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$_ = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar AgInputTextArea = /** @class */ (function (_super) {\n    __extends$_(AgInputTextArea, _super);\n    function AgInputTextArea(config) {\n        return _super.call(this, config, 'ag-text-area', null, 'textarea') || this;\n    }\n    AgInputTextArea.prototype.setValue = function (value, silent) {\n        var ret = _super.prototype.setValue.call(this, value, silent);\n        this.eInput.value = value;\n        return ret;\n    };\n    AgInputTextArea.prototype.setCols = function (cols) {\n        this.eInput.cols = cols;\n        return this;\n    };\n    AgInputTextArea.prototype.setRows = function (rows) {\n        this.eInput.rows = rows;\n        return this;\n    };\n    return AgInputTextArea;\n}(AgAbstractInputField));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$Z = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar AgInputRange = /** @class */ (function (_super) {\n    __extends$Z(AgInputRange, _super);\n    function AgInputRange(config) {\n        return _super.call(this, config, 'ag-range-field', 'range') || this;\n    }\n    AgInputRange.prototype.postConstruct = function () {\n        _super.prototype.postConstruct.call(this);\n        var _a = this.config, min = _a.min, max = _a.max, step = _a.step;\n        if (min != null) {\n            this.setMinValue(min);\n        }\n        if (max != null) {\n            this.setMaxValue(max);\n        }\n        this.setStep(step || 1);\n    };\n    AgInputRange.prototype.addInputListeners = function () {\n        var _this = this;\n        this.addManagedListener(this.eInput, 'input', function (e) {\n            var value = e.target.value;\n            _this.setValue(value);\n        });\n    };\n    AgInputRange.prototype.setMinValue = function (value) {\n        this.min = value;\n        this.eInput.setAttribute('min', value.toString());\n        return this;\n    };\n    AgInputRange.prototype.setMaxValue = function (value) {\n        this.max = value;\n        this.eInput.setAttribute('max', value.toString());\n        return this;\n    };\n    AgInputRange.prototype.setStep = function (value) {\n        this.eInput.setAttribute('step', value.toString());\n        return this;\n    };\n    AgInputRange.prototype.setValue = function (value, silent) {\n        if (this.min != null) {\n            value = Math.max(parseFloat(value), this.min).toString();\n        }\n        if (this.max != null) {\n            value = Math.min(parseFloat(value), this.max).toString();\n        }\n        var ret = _super.prototype.setValue.call(this, value, silent);\n        this.eInput.value = value;\n        return ret;\n    };\n    return AgInputRange;\n}(AgAbstractInputField));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$Y = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$Z = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar AgSlider = /** @class */ (function (_super) {\n    __extends$Y(AgSlider, _super);\n    function AgSlider(config) {\n        var _this = _super.call(this, config, AgSlider.TEMPLATE) || this;\n        _this.labelAlignment = 'top';\n        return _this;\n    }\n    AgSlider.prototype.init = function () {\n        this.eSlider.addCssClass('ag-slider-field');\n    };\n    AgSlider.prototype.onValueChange = function (callbackFn) {\n        var _this = this;\n        var eventChanged = AgAbstractField.EVENT_CHANGED;\n        this.addManagedListener(this.eText, eventChanged, function () {\n            var textValue = parseFloat(_this.eText.getValue());\n            _this.eSlider.setValue(textValue.toString(), true);\n            callbackFn(textValue || 0);\n        });\n        this.addManagedListener(this.eSlider, eventChanged, function () {\n            var sliderValue = _this.eSlider.getValue();\n            _this.eText.setValue(sliderValue, true);\n            callbackFn(parseFloat(sliderValue));\n        });\n        return this;\n    };\n    AgSlider.prototype.setSliderWidth = function (width) {\n        this.eSlider.setWidth(width);\n        return this;\n    };\n    AgSlider.prototype.setTextFieldWidth = function (width) {\n        this.eText.setWidth(width);\n        return this;\n    };\n    AgSlider.prototype.setMinValue = function (minValue) {\n        this.eSlider.setMinValue(minValue);\n        this.eText.setMin(minValue);\n        return this;\n    };\n    AgSlider.prototype.setMaxValue = function (maxValue) {\n        this.eSlider.setMaxValue(maxValue);\n        this.eText.setMax(maxValue);\n        return this;\n    };\n    AgSlider.prototype.getValue = function () {\n        return this.eText.getValue();\n    };\n    AgSlider.prototype.setValue = function (value) {\n        if (this.getValue() === value) {\n            return this;\n        }\n        this.eText.setValue(value, true);\n        this.eSlider.setValue(value, true);\n        this.dispatchEvent({ type: AgAbstractField.EVENT_CHANGED });\n        return this;\n    };\n    AgSlider.prototype.setStep = function (step) {\n        this.eSlider.setStep(step);\n        this.eText.setStep(step);\n        return this;\n    };\n    AgSlider.TEMPLATE = \"<div class=\\\"ag-slider\\\">\\n            <label ref=\\\"eLabel\\\"></label>\\n            <div class=\\\"ag-wrapper ag-slider-wrapper\\\">\\n                <ag-input-range ref=\\\"eSlider\\\"></ag-input-range>\\n                <ag-input-number-field ref=\\\"eText\\\"></ag-input-number-field>\\n            </div>\\n        </div>\";\n    __decorate$Z([\n        RefSelector('eLabel')\n    ], AgSlider.prototype, \"eLabel\", void 0);\n    __decorate$Z([\n        RefSelector('eSlider')\n    ], AgSlider.prototype, \"eSlider\", void 0);\n    __decorate$Z([\n        RefSelector('eText')\n    ], AgSlider.prototype, \"eText\", void 0);\n    __decorate$Z([\n        PostConstruct\n    ], AgSlider.prototype, \"init\", null);\n    return AgSlider;\n}(AgAbstractLabel));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$X = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$Y = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar AgGroupComponent = /** @class */ (function (_super) {\n    __extends$X(AgGroupComponent, _super);\n    function AgGroupComponent(params) {\n        if (params === void 0) { params = {}; }\n        var _this = _super.call(this, AgGroupComponent.getTemplate(params)) || this;\n        _this.suppressEnabledCheckbox = true;\n        _this.suppressOpenCloseIcons = false;\n        var title = params.title, enabled = params.enabled, items = params.items, suppressEnabledCheckbox = params.suppressEnabledCheckbox, suppressOpenCloseIcons = params.suppressOpenCloseIcons;\n        _this.title = title;\n        _this.cssIdentifier = params.cssIdentifier || 'default';\n        _this.enabled = enabled != null ? enabled : true;\n        _this.items = items || [];\n        _this.alignItems = params.alignItems || 'center';\n        if (suppressEnabledCheckbox != null) {\n            _this.suppressEnabledCheckbox = suppressEnabledCheckbox;\n        }\n        if (suppressOpenCloseIcons != null) {\n            _this.suppressOpenCloseIcons = suppressOpenCloseIcons;\n        }\n        return _this;\n    }\n    AgGroupComponent.getTemplate = function (params) {\n        var cssIdentifier = params.cssIdentifier || 'default';\n        var direction = params.direction || 'vertical';\n        return /* html */ \"<div class=\\\"ag-group ag-\" + cssIdentifier + \"-group\\\" role=\\\"presentation\\\">\\n            <div class=\\\"ag-group-title-bar ag-\" + cssIdentifier + \"-group-title-bar ag-unselectable\\\" ref=\\\"eTitleBar\\\" role=\\\"button\\\">\\n                <span class=\\\"ag-group-title-bar-icon ag-\" + cssIdentifier + \"-group-title-bar-icon\\\" ref=\\\"eGroupOpenedIcon\\\" role=\\\"presentation\\\"></span>\\n                <span class=\\\"ag-group-title-bar-icon ag-\" + cssIdentifier + \"-group-title-bar-icon\\\" ref=\\\"eGroupClosedIcon\\\" role=\\\"presentation\\\"></span>\\n                <span ref=\\\"eTitle\\\" class=\\\"ag-group-title ag-\" + cssIdentifier + \"-group-title\\\"></span>\\n            </div>\\n            <div ref=\\\"eToolbar\\\" class=\\\"ag-group-toolbar ag-\" + cssIdentifier + \"-group-toolbar\\\">\\n                <ag-checkbox ref=\\\"cbGroupEnabled\\\"></ag-checkbox>\\n            </div>\\n            <div ref=\\\"eContainer\\\" class=\\\"ag-group-container ag-group-container-\" + direction + \" ag-\" + cssIdentifier + \"-group-container\\\"></div>\\n        </div>\";\n    };\n    AgGroupComponent.prototype.postConstruct = function () {\n        if (this.items.length) {\n            var initialItems = this.items;\n            this.items = [];\n            this.addItems(initialItems);\n        }\n        var localeTextFunc = this.localeService.getLocaleTextFunc();\n        this.cbGroupEnabled.setLabel(localeTextFunc('enabled', 'Enabled'));\n        if (this.title) {\n            this.setTitle(this.title);\n        }\n        if (this.enabled) {\n            this.setEnabled(this.enabled);\n        }\n        this.setAlignItems(this.alignItems);\n        this.hideEnabledCheckbox(this.suppressEnabledCheckbox);\n        this.hideOpenCloseIcons(this.suppressOpenCloseIcons);\n        this.setupExpandContract();\n        this.refreshAriaStatus();\n        this.refreshChildDisplay();\n    };\n    AgGroupComponent.prototype.setupExpandContract = function () {\n        var _this = this;\n        this.eGroupClosedIcon.appendChild(createIcon('columnSelectClosed', this.gridOptionsService, null));\n        this.eGroupOpenedIcon.appendChild(createIcon('columnSelectOpen', this.gridOptionsService, null));\n        this.addManagedListener(this.eTitleBar, 'click', function () { return _this.toggleGroupExpand(); });\n        this.addManagedListener(this.eTitleBar, 'keydown', function (e) {\n            switch (e.key) {\n                case KeyCode.ENTER:\n                case KeyCode.SPACE:\n                    e.preventDefault();\n                    _this.toggleGroupExpand();\n                    break;\n                case KeyCode.RIGHT:\n                case KeyCode.LEFT:\n                    e.preventDefault();\n                    _this.toggleGroupExpand(e.key === KeyCode.RIGHT);\n                    break;\n            }\n        });\n    };\n    AgGroupComponent.prototype.refreshAriaStatus = function () {\n        if (!this.suppressOpenCloseIcons) {\n            setAriaExpanded(this.eTitleBar, this.expanded);\n        }\n    };\n    AgGroupComponent.prototype.refreshChildDisplay = function () {\n        var showIcon = !this.suppressOpenCloseIcons;\n        setDisplayed(this.eToolbar, this.expanded && !this.suppressEnabledCheckbox);\n        setDisplayed(this.eGroupOpenedIcon, showIcon && this.expanded);\n        setDisplayed(this.eGroupClosedIcon, showIcon && !this.expanded);\n    };\n    AgGroupComponent.prototype.isExpanded = function () {\n        return this.expanded;\n    };\n    AgGroupComponent.prototype.setAlignItems = function (alignment) {\n        if (this.alignItems !== alignment) {\n            this.removeCssClass(\"ag-group-item-alignment-\" + this.alignItems);\n        }\n        this.alignItems = alignment;\n        var newCls = \"ag-group-item-alignment-\" + this.alignItems;\n        this.addCssClass(newCls);\n        return this;\n    };\n    AgGroupComponent.prototype.toggleGroupExpand = function (expanded) {\n        if (this.suppressOpenCloseIcons) {\n            this.expanded = true;\n            this.refreshChildDisplay();\n            setDisplayed(this.eContainer, true);\n            return this;\n        }\n        expanded = expanded != null ? expanded : !this.expanded;\n        if (this.expanded === expanded) {\n            return this;\n        }\n        this.expanded = expanded;\n        this.refreshAriaStatus();\n        this.refreshChildDisplay();\n        setDisplayed(this.eContainer, expanded);\n        this.dispatchEvent({ type: this.expanded ? AgGroupComponent.EVENT_EXPANDED : AgGroupComponent.EVENT_COLLAPSED });\n        return this;\n    };\n    AgGroupComponent.prototype.addItems = function (items) {\n        var _this = this;\n        items.forEach(function (item) { return _this.addItem(item); });\n    };\n    AgGroupComponent.prototype.addItem = function (item) {\n        var container = this.eContainer;\n        var el = item instanceof Component ? item.getGui() : item;\n        el.classList.add('ag-group-item', \"ag-\" + this.cssIdentifier + \"-group-item\");\n        container.appendChild(el);\n        this.items.push(el);\n    };\n    AgGroupComponent.prototype.hideItem = function (hide, index) {\n        var itemToHide = this.items[index];\n        setDisplayed(itemToHide, !hide);\n    };\n    AgGroupComponent.prototype.setTitle = function (title) {\n        this.eTitle.innerText = title;\n        return this;\n    };\n    AgGroupComponent.prototype.addCssClassToTitleBar = function (cssClass) {\n        this.eTitleBar.classList.add(cssClass);\n    };\n    AgGroupComponent.prototype.setEnabled = function (enabled, skipToggle) {\n        this.enabled = enabled;\n        this.refreshDisabledStyles();\n        this.toggleGroupExpand(enabled);\n        if (!skipToggle) {\n            this.cbGroupEnabled.setValue(enabled);\n        }\n        return this;\n    };\n    AgGroupComponent.prototype.isEnabled = function () {\n        return this.enabled;\n    };\n    AgGroupComponent.prototype.onEnableChange = function (callbackFn) {\n        var _this = this;\n        this.cbGroupEnabled.onValueChange(function (newSelection) {\n            _this.setEnabled(newSelection, true);\n            callbackFn(newSelection);\n        });\n        return this;\n    };\n    AgGroupComponent.prototype.hideEnabledCheckbox = function (hide) {\n        this.suppressEnabledCheckbox = hide;\n        this.refreshChildDisplay();\n        this.refreshDisabledStyles();\n        return this;\n    };\n    AgGroupComponent.prototype.hideOpenCloseIcons = function (hide) {\n        this.suppressOpenCloseIcons = hide;\n        if (hide) {\n            this.toggleGroupExpand(true);\n        }\n        return this;\n    };\n    AgGroupComponent.prototype.refreshDisabledStyles = function () {\n        this.addOrRemoveCssClass('ag-disabled', !this.enabled);\n        if (this.suppressEnabledCheckbox && !this.enabled) {\n            this.eTitleBar.classList.add('ag-disabled-group-title-bar');\n            this.eTitleBar.removeAttribute('tabindex');\n        }\n        else {\n            this.eTitleBar.classList.remove('ag-disabled-group-title-bar');\n            this.eTitleBar.setAttribute('tabindex', '0');\n        }\n        this.eContainer.classList.toggle('ag-disabled-group-container', !this.enabled);\n    };\n    AgGroupComponent.EVENT_EXPANDED = 'expanded';\n    AgGroupComponent.EVENT_COLLAPSED = 'collapsed';\n    __decorate$Y([\n        RefSelector('eTitleBar')\n    ], AgGroupComponent.prototype, \"eTitleBar\", void 0);\n    __decorate$Y([\n        RefSelector('eGroupOpenedIcon')\n    ], AgGroupComponent.prototype, \"eGroupOpenedIcon\", void 0);\n    __decorate$Y([\n        RefSelector('eGroupClosedIcon')\n    ], AgGroupComponent.prototype, \"eGroupClosedIcon\", void 0);\n    __decorate$Y([\n        RefSelector('eToolbar')\n    ], AgGroupComponent.prototype, \"eToolbar\", void 0);\n    __decorate$Y([\n        RefSelector('cbGroupEnabled')\n    ], AgGroupComponent.prototype, \"cbGroupEnabled\", void 0);\n    __decorate$Y([\n        RefSelector('eTitle')\n    ], AgGroupComponent.prototype, \"eTitle\", void 0);\n    __decorate$Y([\n        RefSelector('eContainer')\n    ], AgGroupComponent.prototype, \"eContainer\", void 0);\n    __decorate$Y([\n        PostConstruct\n    ], AgGroupComponent.prototype, \"postConstruct\", null);\n    return AgGroupComponent;\n}(Component));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$W = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$X = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar TabGuardClassNames;\n(function (TabGuardClassNames) {\n    TabGuardClassNames[\"TAB_GUARD\"] = \"ag-tab-guard\";\n    TabGuardClassNames[\"TAB_GUARD_TOP\"] = \"ag-tab-guard-top\";\n    TabGuardClassNames[\"TAB_GUARD_BOTTOM\"] = \"ag-tab-guard-bottom\";\n})(TabGuardClassNames || (TabGuardClassNames = {}));\nvar TabGuardCtrl = /** @class */ (function (_super) {\n    __extends$W(TabGuardCtrl, _super);\n    function TabGuardCtrl(params) {\n        var _this = _super.call(this) || this;\n        _this.skipTabGuardFocus = false;\n        var comp = params.comp, eTopGuard = params.eTopGuard, eBottomGuard = params.eBottomGuard, focusInnerElement = params.focusInnerElement, onFocusIn = params.onFocusIn, onFocusOut = params.onFocusOut, shouldStopEventPropagation = params.shouldStopEventPropagation, onTabKeyDown = params.onTabKeyDown, handleKeyDown = params.handleKeyDown, eFocusableElement = params.eFocusableElement;\n        _this.comp = comp;\n        _this.eTopGuard = eTopGuard;\n        _this.eBottomGuard = eBottomGuard;\n        _this.providedFocusInnerElement = focusInnerElement;\n        _this.eFocusableElement = eFocusableElement;\n        _this.providedFocusIn = onFocusIn;\n        _this.providedFocusOut = onFocusOut;\n        _this.providedShouldStopEventPropagation = shouldStopEventPropagation;\n        _this.providedOnTabKeyDown = onTabKeyDown;\n        _this.providedHandleKeyDown = handleKeyDown;\n        return _this;\n    }\n    TabGuardCtrl.prototype.postConstruct = function () {\n        var _this = this;\n        this.createManagedBean(new ManagedFocusFeature(this.eFocusableElement, {\n            shouldStopEventPropagation: function () { return _this.shouldStopEventPropagation(); },\n            onTabKeyDown: function (e) { return _this.onTabKeyDown(e); },\n            handleKeyDown: function (e) { return _this.handleKeyDown(e); },\n            onFocusIn: function (e) { return _this.onFocusIn(e); },\n            onFocusOut: function (e) { return _this.onFocusOut(e); }\n        }));\n        this.activateTabGuards();\n        [this.eTopGuard, this.eBottomGuard].forEach(function (guard) { return _this.addManagedListener(guard, 'focus', _this.onFocus.bind(_this)); });\n    };\n    TabGuardCtrl.prototype.handleKeyDown = function (e) {\n        if (this.providedHandleKeyDown) {\n            this.providedHandleKeyDown(e);\n        }\n    };\n    TabGuardCtrl.prototype.tabGuardsAreActive = function () {\n        return !!this.eTopGuard && this.eTopGuard.hasAttribute('tabIndex');\n    };\n    TabGuardCtrl.prototype.shouldStopEventPropagation = function () {\n        if (this.providedShouldStopEventPropagation) {\n            return this.providedShouldStopEventPropagation();\n        }\n        return false;\n    };\n    TabGuardCtrl.prototype.activateTabGuards = function () {\n        this.comp.setTabIndex(this.getGridTabIndex());\n    };\n    TabGuardCtrl.prototype.deactivateTabGuards = function () {\n        this.comp.setTabIndex();\n    };\n    TabGuardCtrl.prototype.onFocus = function (e) {\n        if (this.skipTabGuardFocus) {\n            this.skipTabGuardFocus = false;\n            return;\n        }\n        var fromBottom = e.target === this.eBottomGuard;\n        if (this.providedFocusInnerElement) {\n            this.providedFocusInnerElement(fromBottom);\n        }\n        else {\n            this.focusInnerElement(fromBottom);\n        }\n    };\n    TabGuardCtrl.prototype.onFocusIn = function (e) {\n        if (this.providedFocusIn && this.providedFocusIn(e)) {\n            return;\n        }\n        this.deactivateTabGuards();\n    };\n    TabGuardCtrl.prototype.onFocusOut = function (e) {\n        if (this.providedFocusOut && this.providedFocusOut(e)) {\n            return;\n        }\n        if (!this.eFocusableElement.contains(e.relatedTarget)) {\n            this.activateTabGuards();\n        }\n    };\n    TabGuardCtrl.prototype.onTabKeyDown = function (e) {\n        var _this = this;\n        if (this.providedOnTabKeyDown) {\n            this.providedOnTabKeyDown(e);\n            return;\n        }\n        if (e.defaultPrevented) {\n            return;\n        }\n        var tabGuardsAreActive = this.tabGuardsAreActive();\n        if (tabGuardsAreActive) {\n            this.deactivateTabGuards();\n        }\n        var nextRoot = this.getNextFocusableElement(e.shiftKey);\n        if (tabGuardsAreActive) {\n            // ensure the tab guards are only re-instated once the event has finished processing, to avoid the browser\n            // tabbing to the tab guard from inside the component\n            setTimeout(function () { return _this.activateTabGuards(); }, 0);\n        }\n        if (!nextRoot) {\n            return;\n        }\n        nextRoot.focus();\n        e.preventDefault();\n    };\n    TabGuardCtrl.prototype.getGridTabIndex = function () {\n        return (this.gridOptionsService.getNum('tabIndex') || 0).toString();\n    };\n    TabGuardCtrl.prototype.focusInnerElement = function (fromBottom) {\n        if (fromBottom === void 0) { fromBottom = false; }\n        var focusable = this.focusService.findFocusableElements(this.eFocusableElement);\n        if (this.tabGuardsAreActive()) {\n            // remove tab guards from this component from list of focusable elements\n            focusable.splice(0, 1);\n            focusable.splice(focusable.length - 1, 1);\n        }\n        if (!focusable.length) {\n            return;\n        }\n        focusable[fromBottom ? focusable.length - 1 : 0].focus({ preventScroll: true });\n    };\n    TabGuardCtrl.prototype.getNextFocusableElement = function (backwards) {\n        return this.focusService.findNextFocusableElement(this.eFocusableElement, false, backwards);\n    };\n    TabGuardCtrl.prototype.forceFocusOutOfContainer = function (up) {\n        if (up === void 0) { up = false; }\n        var tabGuardToFocus = up ? this.eTopGuard : this.eBottomGuard;\n        this.activateTabGuards();\n        this.skipTabGuardFocus = true;\n        tabGuardToFocus.focus();\n    };\n    __decorate$X([\n        Autowired('focusService')\n    ], TabGuardCtrl.prototype, \"focusService\", void 0);\n    __decorate$X([\n        PostConstruct\n    ], TabGuardCtrl.prototype, \"postConstruct\", null);\n    return TabGuardCtrl;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$V = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __read$c = (undefined && undefined.__read) || function (o, n) {\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n    if (!m) return o;\n    var i = m.call(o), r, ar = [], e;\n    try {\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n    }\n    catch (error) { e = { error: error }; }\n    finally {\n        try {\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\n        }\n        finally { if (e) throw e.error; }\n    }\n    return ar;\n};\nvar __spread$a = (undefined && undefined.__spread) || function () {\n    for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read$c(arguments[i]));\n    return ar;\n};\nvar TabGuardComp = /** @class */ (function (_super) {\n    __extends$V(TabGuardComp, _super);\n    function TabGuardComp() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    TabGuardComp.prototype.initialiseTabGuard = function (params) {\n        this.eTopGuard = this.createTabGuard('top');\n        this.eBottomGuard = this.createTabGuard('bottom');\n        this.eFocusableElement = this.getFocusableElement();\n        var tabGuards = [this.eTopGuard, this.eBottomGuard];\n        var compProxy = {\n            setTabIndex: function (tabIndex) {\n                tabGuards.forEach(function (tabGuard) { return tabIndex != null ? tabGuard.setAttribute('tabIndex', tabIndex) : tabGuard.removeAttribute('tabIndex'); });\n            }\n        };\n        this.addTabGuards(this.eTopGuard, this.eBottomGuard);\n        this.tabGuardCtrl = this.createManagedBean(new TabGuardCtrl({\n            comp: compProxy,\n            eTopGuard: this.eTopGuard,\n            eBottomGuard: this.eBottomGuard,\n            eFocusableElement: this.eFocusableElement,\n            onFocusIn: params.onFocusIn,\n            onFocusOut: params.onFocusOut,\n            focusInnerElement: params.focusInnerElement,\n            handleKeyDown: params.handleKeyDown,\n            onTabKeyDown: params.onTabKeyDown,\n            shouldStopEventPropagation: params.shouldStopEventPropagation\n        }));\n    };\n    TabGuardComp.prototype.createTabGuard = function (side) {\n        var tabGuard = document.createElement('div');\n        var cls = side === 'top' ? TabGuardClassNames.TAB_GUARD_TOP : TabGuardClassNames.TAB_GUARD_BOTTOM;\n        tabGuard.classList.add(TabGuardClassNames.TAB_GUARD, cls);\n        setAriaRole(tabGuard, 'presentation');\n        return tabGuard;\n    };\n    TabGuardComp.prototype.addTabGuards = function (topTabGuard, bottomTabGuard) {\n        this.eFocusableElement.insertAdjacentElement('afterbegin', topTabGuard);\n        this.eFocusableElement.insertAdjacentElement('beforeend', bottomTabGuard);\n    };\n    TabGuardComp.prototype.removeAllChildrenExceptTabGuards = function () {\n        var tabGuards = [this.eTopGuard, this.eBottomGuard];\n        clearElement(this.getFocusableElement());\n        this.addTabGuards.apply(this, __spread$a(tabGuards));\n    };\n    TabGuardComp.prototype.forceFocusOutOfContainer = function (up) {\n        if (up === void 0) { up = false; }\n        this.tabGuardCtrl.forceFocusOutOfContainer(up);\n    };\n    TabGuardComp.prototype.appendChild = function (newChild, container) {\n        if (!isNodeOrElement(newChild)) {\n            newChild = newChild.getGui();\n        }\n        var bottomTabGuard = this.eBottomGuard;\n        if (bottomTabGuard) {\n            bottomTabGuard.insertAdjacentElement('beforebegin', newChild);\n        }\n        else {\n            _super.prototype.appendChild.call(this, newChild, container);\n        }\n    };\n    return TabGuardComp;\n}(Component));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$U = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __assign$5 = (undefined && undefined.__assign) || function () {\n    __assign$5 = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign$5.apply(this, arguments);\n};\nvar __decorate$W = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar AgMenuList = /** @class */ (function (_super) {\n    __extends$U(AgMenuList, _super);\n    function AgMenuList(level) {\n        if (level === void 0) { level = 1; }\n        var _this = _super.call(this, /* html */ \"<div class=\\\"ag-menu-list\\\" role=\\\"tree\\\"></div>\") || this;\n        _this.level = level;\n        _this.menuItems = [];\n        return _this;\n    }\n    AgMenuList.prototype.postConstruct = function () {\n        var _this = this;\n        this.initialiseTabGuard({\n            onTabKeyDown: function (e) { return _this.onTabKeyDown(e); },\n            handleKeyDown: function (e) { return _this.handleKeyDown(e); }\n        });\n    };\n    AgMenuList.prototype.onTabKeyDown = function (e) {\n        var parent = this.getParentComponent();\n        var parentGui = parent && parent.getGui();\n        var isManaged = parentGui && parentGui.classList.contains('ag-focus-managed');\n        if (!isManaged) {\n            e.preventDefault();\n        }\n        if (e.shiftKey) {\n            this.closeIfIsChild(e);\n        }\n    };\n    AgMenuList.prototype.handleKeyDown = function (e) {\n        switch (e.key) {\n            case KeyCode.UP:\n            case KeyCode.RIGHT:\n            case KeyCode.DOWN:\n            case KeyCode.LEFT:\n                e.preventDefault();\n                this.handleNavKey(e.key);\n                break;\n            case KeyCode.ESCAPE:\n                var topMenu = this.findTopMenu();\n                if (topMenu) {\n                    this.focusService.focusInto(topMenu.getGui());\n                }\n                break;\n        }\n    };\n    AgMenuList.prototype.clearActiveItem = function () {\n        if (this.activeMenuItem) {\n            this.activeMenuItem.deactivate();\n            this.activeMenuItem = null;\n        }\n    };\n    AgMenuList.prototype.addMenuItems = function (menuItems) {\n        var _this = this;\n        if (menuItems == null) {\n            return;\n        }\n        menuItems.forEach(function (menuItemOrString) {\n            if (menuItemOrString === 'separator') {\n                _this.addSeparator();\n            }\n            else if (typeof menuItemOrString === 'string') {\n                console.warn(\"AG Grid: unrecognised menu item \" + menuItemOrString);\n            }\n            else {\n                _this.addItem(menuItemOrString);\n            }\n        });\n    };\n    AgMenuList.prototype.addItem = function (menuItemDef) {\n        var _this = this;\n        var menuItem = this.createManagedBean(new AgMenuItemComponent(__assign$5(__assign$5({}, menuItemDef), { isAnotherSubMenuOpen: function () { return _this.menuItems.some(function (m) { return m.isSubMenuOpen(); }); } })));\n        menuItem.setParentComponent(this);\n        setAriaLevel(menuItem.getGui(), this.level);\n        this.menuItems.push(menuItem);\n        this.appendChild(menuItem.getGui());\n        this.addManagedListener(menuItem, AgMenuItemComponent.EVENT_MENU_ITEM_SELECTED, function (event) {\n            _this.dispatchEvent(event);\n        });\n        this.addManagedListener(menuItem, AgMenuItemComponent.EVENT_MENU_ITEM_ACTIVATED, function (event) {\n            if (_this.activeMenuItem && _this.activeMenuItem !== event.menuItem) {\n                _this.activeMenuItem.deactivate();\n            }\n            _this.activeMenuItem = event.menuItem;\n        });\n    };\n    AgMenuList.prototype.activateFirstItem = function () {\n        var item = this.menuItems.filter(function (currentItem) { return !currentItem.isDisabled(); })[0];\n        if (!item) {\n            return;\n        }\n        item.activate();\n    };\n    AgMenuList.prototype.addSeparator = function () {\n        var separatorHtml = /* html */ \"\\n            <div class=\\\"ag-menu-separator\\\" aria-hidden=\\\"true\\\">\\n                <div class=\\\"ag-menu-separator-part\\\"></div>\\n                <div class=\\\"ag-menu-separator-part\\\"></div>\\n                <div class=\\\"ag-menu-separator-part\\\"></div>\\n                <div class=\\\"ag-menu-separator-part\\\"></div>\\n            </div>\";\n        this.appendChild(loadTemplate(separatorHtml));\n    };\n    AgMenuList.prototype.findTopMenu = function () {\n        var parent = this.getParentComponent();\n        if (!parent && this instanceof AgMenuList) {\n            return this;\n        }\n        while (true) {\n            var nextParent = parent && parent.getParentComponent && parent.getParentComponent();\n            if (!nextParent || (!(nextParent instanceof AgMenuList || nextParent instanceof AgMenuItemComponent))) {\n                break;\n            }\n            parent = nextParent;\n        }\n        return parent instanceof AgMenuList ? parent : undefined;\n    };\n    AgMenuList.prototype.handleNavKey = function (key) {\n        switch (key) {\n            case KeyCode.UP:\n            case KeyCode.DOWN:\n                var nextItem = this.findNextItem(key === KeyCode.UP);\n                if (nextItem && nextItem !== this.activeMenuItem) {\n                    nextItem.activate();\n                }\n                return;\n        }\n        var left = this.gridOptionsService.is('enableRtl') ? KeyCode.RIGHT : KeyCode.LEFT;\n        if (key === left) {\n            this.closeIfIsChild();\n        }\n        else {\n            this.openChild();\n        }\n    };\n    AgMenuList.prototype.closeIfIsChild = function (e) {\n        var parentItem = this.getParentComponent();\n        if (parentItem && parentItem instanceof AgMenuItemComponent) {\n            if (e) {\n                e.preventDefault();\n            }\n            parentItem.closeSubMenu();\n            parentItem.getGui().focus();\n        }\n    };\n    AgMenuList.prototype.openChild = function () {\n        if (this.activeMenuItem) {\n            this.activeMenuItem.openSubMenu(true);\n        }\n    };\n    AgMenuList.prototype.findNextItem = function (up) {\n        var items = this.menuItems.filter(function (item) { return !item.isDisabled(); });\n        if (!items.length) {\n            return;\n        }\n        if (!this.activeMenuItem) {\n            return up ? last(items) : items[0];\n        }\n        if (up) {\n            items.reverse();\n        }\n        var nextItem;\n        var foundCurrent = false;\n        for (var i = 0; i < items.length; i++) {\n            var item = items[i];\n            if (!foundCurrent) {\n                if (item === this.activeMenuItem) {\n                    foundCurrent = true;\n                }\n                continue;\n            }\n            nextItem = item;\n            break;\n        }\n        return nextItem || this.activeMenuItem;\n    };\n    AgMenuList.prototype.destroy = function () {\n        this.clearActiveItem();\n        _super.prototype.destroy.call(this);\n    };\n    __decorate$W([\n        Autowired('focusService')\n    ], AgMenuList.prototype, \"focusService\", void 0);\n    __decorate$W([\n        PostConstruct\n    ], AgMenuList.prototype, \"postConstruct\", null);\n    return AgMenuList;\n}(TabGuardComp));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$T = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$V = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar AgMenuPanel = /** @class */ (function (_super) {\n    __extends$T(AgMenuPanel, _super);\n    function AgMenuPanel(wrappedComponent) {\n        var _this = _super.call(this) || this;\n        _this.wrappedComponent = wrappedComponent;\n        _this.setTemplateFromElement(wrappedComponent.getGui());\n        return _this;\n    }\n    AgMenuPanel.prototype.postConstruct = function () {\n        var _this = this;\n        this.initialiseTabGuard({\n            onTabKeyDown: function (e) { return _this.onTabKeyDown(e); },\n            handleKeyDown: function (e) { return _this.handleKeyDown(e); }\n        });\n    };\n    AgMenuPanel.prototype.handleKeyDown = function (e) {\n        if (e.key === KeyCode.ESCAPE) {\n            this.closePanel();\n        }\n    };\n    AgMenuPanel.prototype.onTabKeyDown = function (e) {\n        if (e.defaultPrevented) {\n            return;\n        }\n        this.closePanel();\n        e.preventDefault();\n    };\n    AgMenuPanel.prototype.closePanel = function () {\n        var menuItem = this.parentComponent;\n        menuItem.closeSubMenu();\n        setTimeout(function () { return menuItem.getGui().focus(); }, 0);\n    };\n    __decorate$V([\n        PostConstruct\n    ], AgMenuPanel.prototype, \"postConstruct\", null);\n    return AgMenuPanel;\n}(TabGuardComp));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$S = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$U = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar AgMenuItemComponent = /** @class */ (function (_super) {\n    __extends$S(AgMenuItemComponent, _super);\n    function AgMenuItemComponent(params) {\n        var _this = _super.call(this) || this;\n        _this.params = params;\n        _this.isActive = false;\n        _this.subMenuIsOpen = false;\n        _this.setTemplate(/* html */ \"<div class=\\\"\" + _this.getClassName() + \"\\\" tabindex=\\\"-1\\\" role=\\\"treeitem\\\"></div>\");\n        return _this;\n    }\n    AgMenuItemComponent.prototype.init = function () {\n        var _this = this;\n        this.addIcon();\n        this.addName();\n        this.addShortcut();\n        this.addSubMenu();\n        this.addTooltip();\n        var eGui = this.getGui();\n        if (this.params.disabled) {\n            this.addCssClass(this.getClassName('disabled'));\n            setAriaDisabled(eGui, true);\n        }\n        else {\n            this.addGuiEventListener('click', function (e) { return _this.onItemSelected(e); });\n            this.addGuiEventListener('keydown', function (e) {\n                if (e.key === KeyCode.ENTER || e.key === KeyCode.SPACE) {\n                    e.preventDefault();\n                    _this.onItemSelected(e);\n                }\n            });\n            this.addGuiEventListener('mousedown', function (e) {\n                // Prevent event bubbling to other event handlers such as PopupService triggering\n                // premature closing of any open sub-menu popup.\n                e.stopPropagation();\n                e.preventDefault();\n            });\n            this.addGuiEventListener('mouseenter', function () { return _this.onMouseEnter(); });\n            this.addGuiEventListener('mouseleave', function () { return _this.onMouseLeave(); });\n        }\n        if (this.params.cssClasses) {\n            this.params.cssClasses.forEach(function (it) { return _this.addCssClass(it); });\n        }\n    };\n    AgMenuItemComponent.prototype.isDisabled = function () {\n        return !!this.params.disabled;\n    };\n    AgMenuItemComponent.prototype.openSubMenu = function (activateFirstItem) {\n        var _this = this;\n        if (activateFirstItem === void 0) { activateFirstItem = false; }\n        this.closeSubMenu();\n        if (!this.params.subMenu) {\n            return;\n        }\n        var ePopup = loadTemplate(/* html */ \"<div class=\\\"ag-menu\\\" role=\\\"presentation\\\"></div>\");\n        var destroySubMenu;\n        if (this.params.subMenu instanceof Array) {\n            var currentLevel = getAriaLevel(this.getGui());\n            var nextLevel = isNaN(currentLevel) ? 1 : (currentLevel + 1);\n            var childMenu_1 = this.createBean(new AgMenuList(nextLevel));\n            childMenu_1.setParentComponent(this);\n            childMenu_1.addMenuItems(this.params.subMenu);\n            ePopup.appendChild(childMenu_1.getGui());\n            // bubble menu item selected events\n            this.addManagedListener(childMenu_1, AgMenuItemComponent.EVENT_MENU_ITEM_SELECTED, function (e) { return _this.dispatchEvent(e); });\n            childMenu_1.addGuiEventListener('mouseenter', function () { return _this.cancelDeactivate(); });\n            destroySubMenu = function () { return _this.destroyBean(childMenu_1); };\n            if (activateFirstItem) {\n                setTimeout(function () { return childMenu_1.activateFirstItem(); }, 0);\n            }\n        }\n        else {\n            var subMenu_1 = this.params.subMenu;\n            var menuPanel = this.createBean(new AgMenuPanel(subMenu_1));\n            menuPanel.setParentComponent(this);\n            var subMenuGui_1 = menuPanel.getGui();\n            var mouseEvent_1 = 'mouseenter';\n            var mouseEnterListener_1 = function () { return _this.cancelDeactivate(); };\n            subMenuGui_1.addEventListener(mouseEvent_1, mouseEnterListener_1);\n            destroySubMenu = function () { return subMenuGui_1.removeEventListener(mouseEvent_1, mouseEnterListener_1); };\n            ePopup.appendChild(subMenuGui_1);\n            if (subMenu_1.afterGuiAttached) {\n                setTimeout(function () { return subMenu_1.afterGuiAttached(); }, 0);\n            }\n        }\n        var eGui = this.getGui();\n        var positionCallback = this.popupService.positionPopupForMenu.bind(this.popupService, { eventSource: eGui, ePopup: ePopup });\n        var translate = this.localeService.getLocaleTextFunc();\n        var addPopupRes = this.popupService.addPopup({\n            modal: true,\n            eChild: ePopup,\n            positionCallback: positionCallback,\n            anchorToElement: eGui,\n            ariaLabel: translate('ariaLabelSubMenu', 'SubMenu')\n        });\n        this.subMenuIsOpen = true;\n        setAriaExpanded(eGui, true);\n        this.hideSubMenu = function () {\n            if (addPopupRes) {\n                addPopupRes.hideFunc();\n            }\n            _this.subMenuIsOpen = false;\n            setAriaExpanded(eGui, false);\n            destroySubMenu();\n        };\n    };\n    AgMenuItemComponent.prototype.closeSubMenu = function () {\n        if (!this.hideSubMenu) {\n            return;\n        }\n        this.hideSubMenu();\n        this.hideSubMenu = null;\n        setAriaExpanded(this.getGui(), false);\n    };\n    AgMenuItemComponent.prototype.isSubMenuOpen = function () {\n        return this.subMenuIsOpen;\n    };\n    AgMenuItemComponent.prototype.activate = function (openSubMenu) {\n        var _this = this;\n        this.cancelActivate();\n        if (this.params.disabled) {\n            return;\n        }\n        this.isActive = true;\n        this.addCssClass(this.getClassName('active'));\n        this.getGui().focus();\n        if (openSubMenu && this.params.subMenu) {\n            window.setTimeout(function () {\n                if (_this.isAlive() && _this.isActive) {\n                    _this.openSubMenu();\n                }\n            }, 300);\n        }\n        this.onItemActivated();\n    };\n    AgMenuItemComponent.prototype.deactivate = function () {\n        this.cancelDeactivate();\n        this.removeCssClass(this.getClassName('active'));\n        this.isActive = false;\n        if (this.subMenuIsOpen) {\n            this.hideSubMenu();\n        }\n    };\n    AgMenuItemComponent.prototype.addIcon = function () {\n        if (!this.params.checked && !this.params.icon && this.params.isCompact) {\n            return;\n        }\n        var icon = loadTemplate(/* html */ \"<span ref=\\\"eIcon\\\" class=\\\"\" + this.getClassName('part') + \" \" + this.getClassName('icon') + \"\\\" role=\\\"presentation\\\"></span>\");\n        if (this.params.checked) {\n            icon.appendChild(createIconNoSpan('check', this.gridOptionsService));\n        }\n        else if (this.params.icon) {\n            if (isNodeOrElement(this.params.icon)) {\n                icon.appendChild(this.params.icon);\n            }\n            else if (typeof this.params.icon === 'string') {\n                icon.innerHTML = this.params.icon;\n            }\n            else {\n                console.warn('AG Grid: menu item icon must be DOM node or string');\n            }\n        }\n        this.getGui().appendChild(icon);\n    };\n    AgMenuItemComponent.prototype.addName = function () {\n        if (!this.params.name && this.params.isCompact) {\n            return;\n        }\n        var name = loadTemplate(/* html */ \"<span ref=\\\"eName\\\" class=\\\"\" + this.getClassName('part') + \" \" + this.getClassName('text') + \"\\\">\" + (this.params.name || '') + \"</span>\");\n        this.getGui().appendChild(name);\n    };\n    AgMenuItemComponent.prototype.addTooltip = function () {\n        if (!this.params.tooltip) {\n            return;\n        }\n        this.tooltip = this.params.tooltip;\n        if (this.gridOptionsService.is('enableBrowserTooltips')) {\n            this.getGui().setAttribute('title', this.tooltip);\n        }\n        else {\n            this.createManagedBean(new CustomTooltipFeature(this));\n        }\n    };\n    AgMenuItemComponent.prototype.getTooltipParams = function () {\n        return {\n            location: 'menu',\n            value: this.tooltip\n        };\n    };\n    AgMenuItemComponent.prototype.addShortcut = function () {\n        if (!this.params.shortcut && this.params.isCompact) {\n            return;\n        }\n        var shortcut = loadTemplate(/* html */ \"<span ref=\\\"eShortcut\\\" class=\\\"\" + this.getClassName('part') + \" \" + this.getClassName('shortcut') + \"\\\">\" + (this.params.shortcut || '') + \"</span>\");\n        this.getGui().appendChild(shortcut);\n    };\n    AgMenuItemComponent.prototype.addSubMenu = function () {\n        if (!this.params.subMenu && this.params.isCompact) {\n            return;\n        }\n        var pointer = loadTemplate(/* html */ \"<span ref=\\\"ePopupPointer\\\" class=\\\"\" + this.getClassName('part') + \" \" + this.getClassName('popup-pointer') + \"\\\"></span>\");\n        var eGui = this.getGui();\n        if (this.params.subMenu) {\n            var iconName = this.gridOptionsService.is('enableRtl') ? 'smallLeft' : 'smallRight';\n            setAriaExpanded(eGui, false);\n            pointer.appendChild(createIconNoSpan(iconName, this.gridOptionsService));\n        }\n        eGui.appendChild(pointer);\n    };\n    AgMenuItemComponent.prototype.onItemSelected = function (event) {\n        if (this.params.action) {\n            this.params.action();\n        }\n        else {\n            this.openSubMenu(event && event.type === 'keydown');\n        }\n        if (this.params.subMenu && !this.params.action) {\n            return;\n        }\n        var e = {\n            type: AgMenuItemComponent.EVENT_MENU_ITEM_SELECTED,\n            action: this.params.action,\n            checked: this.params.checked,\n            cssClasses: this.params.cssClasses,\n            disabled: this.params.disabled,\n            icon: this.params.icon,\n            name: this.params.name,\n            shortcut: this.params.shortcut,\n            subMenu: this.params.subMenu,\n            tooltip: this.params.tooltip,\n            event: event\n        };\n        this.dispatchEvent(e);\n    };\n    AgMenuItemComponent.prototype.onItemActivated = function () {\n        var event = {\n            type: AgMenuItemComponent.EVENT_MENU_ITEM_ACTIVATED,\n            menuItem: this,\n        };\n        this.dispatchEvent(event);\n    };\n    AgMenuItemComponent.prototype.cancelActivate = function () {\n        if (this.activateTimeoutId) {\n            window.clearTimeout(this.activateTimeoutId);\n            this.activateTimeoutId = 0;\n        }\n    };\n    AgMenuItemComponent.prototype.cancelDeactivate = function () {\n        if (this.deactivateTimeoutId) {\n            window.clearTimeout(this.deactivateTimeoutId);\n            this.deactivateTimeoutId = 0;\n        }\n    };\n    AgMenuItemComponent.prototype.onMouseEnter = function () {\n        var _this = this;\n        this.cancelDeactivate();\n        if (this.params.isAnotherSubMenuOpen()) {\n            // wait to see if the user enters the open sub-menu\n            this.activateTimeoutId = window.setTimeout(function () { return _this.activate(true); }, AgMenuItemComponent.ACTIVATION_DELAY);\n        }\n        else {\n            // activate immediately\n            this.activate(true);\n        }\n    };\n    AgMenuItemComponent.prototype.onMouseLeave = function () {\n        var _this = this;\n        this.cancelActivate();\n        if (this.isSubMenuOpen()) {\n            // wait to see if the user enters the sub-menu\n            this.deactivateTimeoutId = window.setTimeout(function () { return _this.deactivate(); }, AgMenuItemComponent.ACTIVATION_DELAY);\n        }\n        else {\n            // de-activate immediately\n            this.deactivate();\n        }\n    };\n    AgMenuItemComponent.prototype.getClassName = function (suffix) {\n        var prefix = this.params.isCompact ? 'ag-compact-menu-option' : 'ag-menu-option';\n        return suffix ? prefix + \"-\" + suffix : prefix;\n    };\n    AgMenuItemComponent.EVENT_MENU_ITEM_SELECTED = 'menuItemSelected';\n    AgMenuItemComponent.EVENT_MENU_ITEM_ACTIVATED = 'menuItemActivated';\n    AgMenuItemComponent.ACTIVATION_DELAY = 80;\n    __decorate$U([\n        Autowired('popupService')\n    ], AgMenuItemComponent.prototype, \"popupService\", void 0);\n    __decorate$U([\n        PostConstruct\n    ], AgMenuItemComponent.prototype, \"init\", null);\n    return AgMenuItemComponent;\n}(Component));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$R = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$T = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar AgPanel = /** @class */ (function (_super) {\n    __extends$R(AgPanel, _super);\n    function AgPanel(config) {\n        var _this = _super.call(this, AgPanel.getTemplate(config)) || this;\n        _this.closable = true;\n        _this.config = config;\n        return _this;\n    }\n    AgPanel.getTemplate = function (config) {\n        var cssIdentifier = (config && config.cssIdentifier) || 'default';\n        return /* html */ \"<div class=\\\"ag-panel ag-\" + cssIdentifier + \"-panel\\\" tabindex=\\\"-1\\\">\\n            <div ref=\\\"eTitleBar\\\" class=\\\"ag-panel-title-bar ag-\" + cssIdentifier + \"-panel-title-bar ag-unselectable\\\">\\n                <span ref=\\\"eTitle\\\" class=\\\"ag-panel-title-bar-title ag-\" + cssIdentifier + \"-panel-title-bar-title\\\"></span>\\n                <div ref=\\\"eTitleBarButtons\\\" class=\\\"ag-panel-title-bar-buttons ag-\" + cssIdentifier + \"-panel-title-bar-buttons\\\"></div>\\n            </div>\\n            <div ref=\\\"eContentWrapper\\\" class=\\\"ag-panel-content-wrapper ag-\" + cssIdentifier + \"-panel-content-wrapper\\\"></div>\\n        </div>\";\n    };\n    AgPanel.prototype.postConstruct = function () {\n        var _this = this;\n        var _a = this.config, component = _a.component, closable = _a.closable, hideTitleBar = _a.hideTitleBar, title = _a.title, _b = _a.minWidth, minWidth = _b === void 0 ? 250 : _b, width = _a.width, _c = _a.minHeight, minHeight = _c === void 0 ? 250 : _c, height = _a.height, centered = _a.centered, popup = _a.popup, x = _a.x, y = _a.y;\n        this.positionableFeature = new PositionableFeature(this.getGui(), {\n            minWidth: minWidth, width: width, minHeight: minHeight, height: height, centered: centered, x: x, y: y, popup: popup,\n            calculateTopBuffer: function () { return _this.positionableFeature.getHeight() - _this.getBodyHeight(); }\n        });\n        this.createManagedBean(this.positionableFeature);\n        var eGui = this.getGui();\n        if (component) {\n            this.setBodyComponent(component);\n        }\n        if (!hideTitleBar) {\n            if (title) {\n                this.setTitle(title);\n            }\n            this.setClosable(closable != null ? closable : this.closable);\n        }\n        else {\n            setDisplayed(this.eTitleBar, false);\n        }\n        this.addManagedListener(this.eTitleBar, 'mousedown', function (e) {\n            var eDocument = _this.gridOptionsService.getDocument();\n            if (eGui.contains(e.relatedTarget) ||\n                eGui.contains(eDocument.activeElement) ||\n                _this.eTitleBarButtons.contains(e.target)) {\n                e.preventDefault();\n                return;\n            }\n            var focusEl = _this.eContentWrapper.querySelector('button, [href], input, select, textarea, [tabindex]');\n            if (focusEl) {\n                focusEl.focus();\n            }\n        });\n        if (popup && this.positionableFeature.isPositioned()) {\n            return;\n        }\n        if (this.renderComponent) {\n            this.renderComponent();\n        }\n        this.positionableFeature.initialisePosition();\n        this.eContentWrapper.style.height = '0';\n    };\n    AgPanel.prototype.renderComponent = function () {\n        var _this = this;\n        var eGui = this.getGui();\n        eGui.focus();\n        this.close = function () {\n            eGui.parentElement.removeChild(eGui);\n            _this.destroy();\n        };\n    };\n    AgPanel.prototype.getHeight = function () {\n        return this.positionableFeature.getHeight();\n    };\n    AgPanel.prototype.setHeight = function (height) {\n        this.positionableFeature.setHeight(height);\n    };\n    AgPanel.prototype.getWidth = function () {\n        return this.positionableFeature.getWidth();\n    };\n    AgPanel.prototype.setWidth = function (width) {\n        this.positionableFeature.setWidth(width);\n    };\n    AgPanel.prototype.setClosable = function (closable) {\n        if (closable !== this.closable) {\n            this.closable = closable;\n        }\n        if (closable) {\n            var closeButtonComp = this.closeButtonComp = new Component(AgPanel.CLOSE_BTN_TEMPLATE);\n            this.getContext().createBean(closeButtonComp);\n            var eGui = closeButtonComp.getGui();\n            var child = createIconNoSpan('close', this.gridOptionsService);\n            child.classList.add('ag-panel-title-bar-button-icon');\n            eGui.appendChild(child);\n            this.addTitleBarButton(closeButtonComp);\n            closeButtonComp.addManagedListener(eGui, 'click', this.onBtClose.bind(this));\n        }\n        else if (this.closeButtonComp) {\n            var eGui = this.closeButtonComp.getGui();\n            eGui.parentElement.removeChild(eGui);\n            this.closeButtonComp = this.destroyBean(this.closeButtonComp);\n        }\n    };\n    AgPanel.prototype.setBodyComponent = function (bodyComponent) {\n        bodyComponent.setParentComponent(this);\n        this.eContentWrapper.appendChild(bodyComponent.getGui());\n    };\n    AgPanel.prototype.addTitleBarButton = function (button, position) {\n        var eTitleBarButtons = this.eTitleBarButtons;\n        var buttons = eTitleBarButtons.children;\n        var len = buttons.length;\n        if (position == null) {\n            position = len;\n        }\n        position = Math.max(0, Math.min(position, len));\n        button.addCssClass('ag-panel-title-bar-button');\n        var eGui = button.getGui();\n        if (position === 0) {\n            eTitleBarButtons.insertAdjacentElement('afterbegin', eGui);\n        }\n        else if (position === len) {\n            eTitleBarButtons.insertAdjacentElement('beforeend', eGui);\n        }\n        else {\n            buttons[position - 1].insertAdjacentElement('afterend', eGui);\n        }\n        button.setParentComponent(this);\n    };\n    AgPanel.prototype.getBodyHeight = function () {\n        return getInnerHeight(this.eContentWrapper);\n    };\n    AgPanel.prototype.getBodyWidth = function () {\n        return getInnerWidth(this.eContentWrapper);\n    };\n    AgPanel.prototype.setTitle = function (title) {\n        this.eTitle.innerText = title;\n    };\n    // called when user hits the 'x' in the top right\n    AgPanel.prototype.onBtClose = function () {\n        this.close();\n    };\n    AgPanel.prototype.destroy = function () {\n        if (this.closeButtonComp) {\n            this.closeButtonComp = this.destroyBean(this.closeButtonComp);\n        }\n        var eGui = this.getGui();\n        if (eGui && eGui.offsetParent) {\n            this.close();\n        }\n        _super.prototype.destroy.call(this);\n    };\n    AgPanel.CLOSE_BTN_TEMPLATE = \"<div class=\\\"ag-button\\\"></div>\";\n    __decorate$T([\n        RefSelector('eContentWrapper')\n    ], AgPanel.prototype, \"eContentWrapper\", void 0);\n    __decorate$T([\n        RefSelector('eTitleBar')\n    ], AgPanel.prototype, \"eTitleBar\", void 0);\n    __decorate$T([\n        RefSelector('eTitleBarButtons')\n    ], AgPanel.prototype, \"eTitleBarButtons\", void 0);\n    __decorate$T([\n        RefSelector('eTitle')\n    ], AgPanel.prototype, \"eTitle\", void 0);\n    __decorate$T([\n        PostConstruct\n    ], AgPanel.prototype, \"postConstruct\", null);\n    return AgPanel;\n}(Component));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$Q = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __assign$4 = (undefined && undefined.__assign) || function () {\n    __assign$4 = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign$4.apply(this, arguments);\n};\nvar __decorate$S = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar AgDialog = /** @class */ (function (_super) {\n    __extends$Q(AgDialog, _super);\n    function AgDialog(config) {\n        var _this = _super.call(this, __assign$4(__assign$4({}, config), { popup: true })) || this;\n        _this.isMaximizable = false;\n        _this.isMaximized = false;\n        _this.maximizeListeners = [];\n        _this.resizeListenerDestroy = null;\n        _this.lastPosition = {\n            x: 0,\n            y: 0,\n            width: 0,\n            height: 0\n        };\n        return _this;\n    }\n    AgDialog.prototype.postConstruct = function () {\n        var _this = this;\n        var eGui = this.getGui();\n        var _a = this.config, movable = _a.movable, resizable = _a.resizable, maximizable = _a.maximizable;\n        this.addCssClass('ag-dialog');\n        _super.prototype.postConstruct.call(this);\n        this.addManagedListener(eGui, 'focusin', function (e) {\n            if (eGui.contains(e.relatedTarget)) {\n                return;\n            }\n            _this.popupService.bringPopupToFront(eGui);\n        });\n        if (movable) {\n            this.setMovable(movable);\n        }\n        if (maximizable) {\n            this.setMaximizable(maximizable);\n        }\n        if (resizable) {\n            this.setResizable(resizable);\n        }\n    };\n    AgDialog.prototype.renderComponent = function () {\n        var eGui = this.getGui();\n        var _a = this.config, alwaysOnTop = _a.alwaysOnTop, modal = _a.modal, title = _a.title;\n        var translate = this.localeService.getLocaleTextFunc();\n        var addPopupRes = this.popupService.addPopup({\n            modal: modal,\n            eChild: eGui,\n            closeOnEsc: true,\n            closedCallback: this.destroy.bind(this),\n            alwaysOnTop: alwaysOnTop,\n            ariaLabel: title || translate('ariaLabelDialog', 'Dialog')\n        });\n        if (addPopupRes) {\n            this.close = addPopupRes.hideFunc;\n        }\n    };\n    AgDialog.prototype.toggleMaximize = function () {\n        var position = this.positionableFeature.getPosition();\n        if (this.isMaximized) {\n            var _a = this.lastPosition, x = _a.x, y = _a.y, width = _a.width, height = _a.height;\n            this.setWidth(width);\n            this.setHeight(height);\n            this.positionableFeature.offsetElement(x, y);\n        }\n        else {\n            this.lastPosition.width = this.getWidth();\n            this.lastPosition.height = this.getHeight();\n            this.lastPosition.x = position.x;\n            this.lastPosition.y = position.y;\n            this.positionableFeature.offsetElement(0, 0);\n            this.setHeight('100%');\n            this.setWidth('100%');\n        }\n        this.isMaximized = !this.isMaximized;\n        this.refreshMaximizeIcon();\n    };\n    AgDialog.prototype.refreshMaximizeIcon = function () {\n        setDisplayed(this.maximizeIcon, !this.isMaximized);\n        setDisplayed(this.minimizeIcon, this.isMaximized);\n    };\n    AgDialog.prototype.clearMaximizebleListeners = function () {\n        if (this.maximizeListeners.length) {\n            this.maximizeListeners.forEach(function (destroyListener) { return destroyListener(); });\n            this.maximizeListeners.length = 0;\n        }\n        if (this.resizeListenerDestroy) {\n            this.resizeListenerDestroy();\n            this.resizeListenerDestroy = null;\n        }\n    };\n    AgDialog.prototype.destroy = function () {\n        this.maximizeButtonComp = this.destroyBean(this.maximizeButtonComp);\n        this.clearMaximizebleListeners();\n        _super.prototype.destroy.call(this);\n    };\n    AgDialog.prototype.setResizable = function (resizable) {\n        this.positionableFeature.setResizable(resizable);\n    };\n    AgDialog.prototype.setMovable = function (movable) {\n        this.positionableFeature.setMovable(movable, this.eTitleBar);\n    };\n    AgDialog.prototype.setMaximizable = function (maximizable) {\n        var _this = this;\n        if (!maximizable) {\n            this.clearMaximizebleListeners();\n            if (this.maximizeButtonComp) {\n                this.destroyBean(this.maximizeButtonComp);\n                this.maximizeButtonComp = this.maximizeIcon = this.minimizeIcon = undefined;\n            }\n            return;\n        }\n        var eTitleBar = this.eTitleBar;\n        if (!eTitleBar || maximizable === this.isMaximizable) {\n            return;\n        }\n        var maximizeButtonComp = this.buildMaximizeAndMinimizeElements();\n        this.refreshMaximizeIcon();\n        maximizeButtonComp.addManagedListener(maximizeButtonComp.getGui(), 'click', this.toggleMaximize.bind(this));\n        this.addTitleBarButton(maximizeButtonComp, 0);\n        this.maximizeListeners.push(this.addManagedListener(eTitleBar, 'dblclick', this.toggleMaximize.bind(this)));\n        this.resizeListenerDestroy = this.addManagedListener(this, 'resize', function () {\n            _this.isMaximized = false;\n            _this.refreshMaximizeIcon();\n        });\n    };\n    AgDialog.prototype.buildMaximizeAndMinimizeElements = function () {\n        var maximizeButtonComp = this.maximizeButtonComp =\n            this.createBean(new Component(/* html */ \"<div class=\\\"ag-dialog-button\\\"></span>\"));\n        var eGui = maximizeButtonComp.getGui();\n        this.maximizeIcon = createIconNoSpan('maximize', this.gridOptionsService);\n        eGui.appendChild(this.maximizeIcon);\n        this.maximizeIcon.classList.add('ag-panel-title-bar-button-icon');\n        this.minimizeIcon = createIconNoSpan('minimize', this.gridOptionsService);\n        eGui.appendChild(this.minimizeIcon);\n        this.minimizeIcon.classList.add('ag-panel-title-bar-button-icon');\n        return maximizeButtonComp;\n    };\n    __decorate$S([\n        Autowired('popupService')\n    ], AgDialog.prototype, \"popupService\", void 0);\n    return AgDialog;\n}(AgPanel));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$P = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __assign$3 = (undefined && undefined.__assign) || function () {\n    __assign$3 = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign$3.apply(this, arguments);\n};\nvar __decorate$R = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __read$b = (undefined && undefined.__read) || function (o, n) {\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n    if (!m) return o;\n    var i = m.call(o), r, ar = [], e;\n    try {\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n    }\n    catch (error) { e = { error: error }; }\n    finally {\n        try {\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\n        }\n        finally { if (e) throw e.error; }\n    }\n    return ar;\n};\nvar __spread$9 = (undefined && undefined.__spread) || function () {\n    for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read$b(arguments[i]));\n    return ar;\n};\nvar FocusService = /** @class */ (function (_super) {\n    __extends$P(FocusService, _super);\n    function FocusService() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    FocusService_1 = FocusService;\n    /**\n     * Adds a gridCore to the list of the gridCores monitoring Keyboard Mode\n     * in a specific HTMLDocument.\n     *\n     * @param doc {Document} - The Document containing the gridCore.\n     * @param gridCore {GridComp} - The GridCore to be monitored.\n     */\n    FocusService.addKeyboardModeEvents = function (doc, controller) {\n        var docControllers = FocusService_1.instancesMonitored.get(doc);\n        if (docControllers && docControllers.length > 0) {\n            if (docControllers.indexOf(controller) === -1) {\n                docControllers.push(controller);\n            }\n        }\n        else {\n            FocusService_1.instancesMonitored.set(doc, [controller]);\n            doc.addEventListener('keydown', FocusService_1.toggleKeyboardMode);\n            doc.addEventListener('mousedown', FocusService_1.toggleKeyboardMode);\n        }\n    };\n    /**\n     * Removes a gridCore from the list of the gridCores monitoring Keyboard Mode\n     * in a specific HTMLDocument.\n     *\n     * @param doc {Document} - The Document containing the gridCore.\n     * @param gridCore {GridComp} - The GridCore to be removed.\n     */\n    FocusService.removeKeyboardModeEvents = function (doc, controller) {\n        var docControllers = FocusService_1.instancesMonitored.get(doc);\n        var newControllers = [];\n        if (docControllers && docControllers.length) {\n            newControllers = __spread$9(docControllers).filter(function (currentGridCore) { return currentGridCore !== controller; });\n            FocusService_1.instancesMonitored.set(doc, newControllers);\n        }\n        if (newControllers.length === 0) {\n            doc.removeEventListener('keydown', FocusService_1.toggleKeyboardMode);\n            doc.removeEventListener('mousedown', FocusService_1.toggleKeyboardMode);\n        }\n    };\n    /**\n     * This method will be called by `keydown` and `mousedown` events on all Documents monitoring\n     * KeyboardMode. It will then fire a KEYBOARD_FOCUS, MOUSE_FOCUS on each gridCore present in\n     * the Document allowing each gridCore to maintain a state for KeyboardMode.\n     *\n     * @param event {KeyboardEvent | MouseEvent | TouchEvent} - The event triggered.\n     */\n    FocusService.toggleKeyboardMode = function (event) {\n        var isKeyboardActive = FocusService_1.keyboardModeActive;\n        var isKeyboardEvent = event.type === 'keydown';\n        if (isKeyboardEvent) {\n            // the following keys should not toggle keyboard mode.\n            if (event.ctrlKey || event.metaKey || event.altKey) {\n                return;\n            }\n        }\n        if (isKeyboardActive && isKeyboardEvent || !isKeyboardActive && !isKeyboardEvent) {\n            return;\n        }\n        FocusService_1.keyboardModeActive = isKeyboardEvent;\n        var doc = event.target.ownerDocument;\n        if (!doc) {\n            return;\n        }\n        var controllersForDoc = FocusService_1.instancesMonitored.get(doc);\n        if (controllersForDoc) {\n            controllersForDoc.forEach(function (controller) {\n                controller.dispatchEvent({ type: isKeyboardEvent ? Events.EVENT_KEYBOARD_FOCUS : Events.EVENT_MOUSE_FOCUS });\n            });\n        }\n    };\n    FocusService.prototype.init = function () {\n        var _this = this;\n        var clearFocusedCellListener = this.clearFocusedCell.bind(this);\n        this.addManagedListener(this.eventService, Events.EVENT_COLUMN_PIVOT_MODE_CHANGED, clearFocusedCellListener);\n        this.addManagedListener(this.eventService, Events.EVENT_NEW_COLUMNS_LOADED, this.onColumnEverythingChanged.bind(this));\n        this.addManagedListener(this.eventService, Events.EVENT_COLUMN_GROUP_OPENED, clearFocusedCellListener);\n        this.addManagedListener(this.eventService, Events.EVENT_COLUMN_ROW_GROUP_CHANGED, clearFocusedCellListener);\n        this.ctrlsService.whenReady(function (p) {\n            _this.gridCtrl = p.gridCtrl;\n            var doc = _this.gridOptionsService.getDocument();\n            FocusService_1.addKeyboardModeEvents(doc, _this.gridCtrl);\n            _this.addDestroyFunc(function () { return _this.unregisterGridCompController(_this.gridCtrl); });\n        });\n    };\n    FocusService.prototype.unregisterGridCompController = function (gridCompController) {\n        var doc = this.gridOptionsService.getDocument();\n        FocusService_1.removeKeyboardModeEvents(doc, gridCompController);\n    };\n    FocusService.prototype.onColumnEverythingChanged = function () {\n        // if the columns change, check and see if this column still exists. if it does, then\n        // we can keep the focused cell. if it doesn't, then we need to drop the focused cell.\n        if (!this.focusedCellPosition) {\n            return;\n        }\n        var col = this.focusedCellPosition.column;\n        var colFromColumnModel = this.columnModel.getGridColumn(col.getId());\n        if (col !== colFromColumnModel) {\n            this.clearFocusedCell();\n        }\n    };\n    FocusService.prototype.isKeyboardMode = function () {\n        return FocusService_1.keyboardModeActive;\n    };\n    // we check if the browser is focusing something, and if it is, and\n    // it's the cell we think is focused, then return the cell. so this\n    // methods returns the cell if a) we think it has focus and b) the\n    // browser thinks it has focus. this then returns nothing if we\n    // first focus a cell, then second click outside the grid, as then the\n    // grid cell will still be focused as far as the grid is concerned,\n    // however the browser focus will have moved somewhere else.\n    FocusService.prototype.getFocusCellToUseAfterRefresh = function () {\n        var eDocument = this.gridOptionsService.getDocument();\n        if (this.gridOptionsService.is('suppressFocusAfterRefresh') || !this.focusedCellPosition) {\n            return null;\n        }\n        // we check that the browser is actually focusing on the grid, if it is not, then\n        // we have nothing to worry about. we check for ROW data, as this covers both focused Rows (for Full Width Rows)\n        // and Cells (covers cells as cells live in rows)\n        if (this.isDomDataMissingInHierarchy(eDocument.activeElement, RowCtrl.DOM_DATA_KEY_ROW_CTRL)) {\n            return null;\n        }\n        return this.focusedCellPosition;\n    };\n    FocusService.prototype.getFocusHeaderToUseAfterRefresh = function () {\n        var eDocument = this.gridOptionsService.getDocument();\n        if (this.gridOptionsService.is('suppressFocusAfterRefresh') || !this.focusedHeaderPosition) {\n            return null;\n        }\n        // we check that the browser is actually focusing on the grid, if it is not, then\n        // we have nothing to worry about\n        if (this.isDomDataMissingInHierarchy(eDocument.activeElement, AbstractHeaderCellCtrl.DOM_DATA_KEY_HEADER_CTRL)) {\n            return null;\n        }\n        return this.focusedHeaderPosition;\n    };\n    FocusService.prototype.isDomDataMissingInHierarchy = function (eBrowserCell, key) {\n        var ePointer = eBrowserCell;\n        while (ePointer) {\n            var data = this.gridOptionsService.getDomData(ePointer, key);\n            if (data) {\n                return false;\n            }\n            ePointer = ePointer.parentNode;\n        }\n        return true;\n    };\n    FocusService.prototype.getFocusedCell = function () {\n        return this.focusedCellPosition;\n    };\n    FocusService.prototype.getFocusEventParams = function () {\n        var _a = this.focusedCellPosition, rowIndex = _a.rowIndex, rowPinned = _a.rowPinned, column = _a.column;\n        var params = {\n            rowIndex: rowIndex,\n            rowPinned: rowPinned,\n            column: column,\n            isFullWidthCell: false\n        };\n        var rowCtrl = this.rowRenderer.getRowByPosition({ rowIndex: rowIndex, rowPinned: rowPinned });\n        if (rowCtrl) {\n            params.isFullWidthCell = rowCtrl.isFullWidth();\n        }\n        return params;\n    };\n    FocusService.prototype.clearFocusedCell = function () {\n        if (this.focusedCellPosition == null) {\n            return;\n        }\n        var event = __assign$3({ type: Events.EVENT_CELL_FOCUS_CLEARED }, this.getFocusEventParams());\n        this.focusedCellPosition = null;\n        this.eventService.dispatchEvent(event);\n    };\n    FocusService.prototype.setFocusedCell = function (params) {\n        var column = params.column, rowIndex = params.rowIndex, rowPinned = params.rowPinned, _a = params.forceBrowserFocus, forceBrowserFocus = _a === void 0 ? false : _a, _b = params.preventScrollOnBrowserFocus, preventScrollOnBrowserFocus = _b === void 0 ? false : _b;\n        var gridColumn = this.columnModel.getGridColumn(column);\n        // if column doesn't exist, then blank the focused cell and return. this can happen when user sets new columns,\n        // and the focused cell is in a column that no longer exists. after columns change, the grid refreshes and tries\n        // to re-focus the focused cell.\n        if (!gridColumn) {\n            this.focusedCellPosition = null;\n            return;\n        }\n        this.focusedCellPosition = gridColumn ? {\n            rowIndex: rowIndex,\n            rowPinned: makeNull(rowPinned),\n            column: gridColumn\n        } : null;\n        var event = __assign$3(__assign$3({ type: Events.EVENT_CELL_FOCUSED }, this.getFocusEventParams()), { forceBrowserFocus: forceBrowserFocus,\n            preventScrollOnBrowserFocus: preventScrollOnBrowserFocus, floating: null });\n        this.eventService.dispatchEvent(event);\n    };\n    FocusService.prototype.isCellFocused = function (cellPosition) {\n        if (this.focusedCellPosition == null) {\n            return false;\n        }\n        return this.focusedCellPosition.column === cellPosition.column &&\n            this.isRowFocused(cellPosition.rowIndex, cellPosition.rowPinned);\n    };\n    FocusService.prototype.isRowNodeFocused = function (rowNode) {\n        return this.isRowFocused(rowNode.rowIndex, rowNode.rowPinned);\n    };\n    FocusService.prototype.isHeaderWrapperFocused = function (headerCtrl) {\n        if (this.focusedHeaderPosition == null) {\n            return false;\n        }\n        var column = headerCtrl.getColumnGroupChild();\n        var headerRowIndex = headerCtrl.getRowIndex();\n        var pinned = headerCtrl.getPinned();\n        var _a = this.focusedHeaderPosition, focusedColumn = _a.column, focusedHeaderRowIndex = _a.headerRowIndex;\n        return column === focusedColumn &&\n            headerRowIndex === focusedHeaderRowIndex &&\n            pinned == focusedColumn.getPinned();\n    };\n    FocusService.prototype.clearFocusedHeader = function () {\n        this.focusedHeaderPosition = null;\n    };\n    FocusService.prototype.getFocusedHeader = function () {\n        return this.focusedHeaderPosition;\n    };\n    FocusService.prototype.setFocusedHeader = function (headerRowIndex, column) {\n        this.focusedHeaderPosition = { headerRowIndex: headerRowIndex, column: column };\n    };\n    FocusService.prototype.focusHeaderPosition = function (params) {\n        var direction = params.direction, fromTab = params.fromTab, allowUserOverride = params.allowUserOverride, event = params.event;\n        var headerPosition = params.headerPosition;\n        if (allowUserOverride) {\n            var currentPosition = this.getFocusedHeader();\n            var headerRowCount = this.headerNavigationService.getHeaderRowCount();\n            if (fromTab) {\n                var userFunc = this.gridOptionsService.getCallback('tabToNextHeader');\n                if (userFunc) {\n                    var params_1 = {\n                        backwards: direction === 'Before',\n                        previousHeaderPosition: currentPosition,\n                        nextHeaderPosition: headerPosition,\n                        headerRowCount: headerRowCount,\n                    };\n                    headerPosition = userFunc(params_1);\n                }\n            }\n            else {\n                var userFunc = this.gridOptionsService.getCallback('navigateToNextHeader');\n                if (userFunc && event) {\n                    var params_2 = {\n                        key: event.key,\n                        previousHeaderPosition: currentPosition,\n                        nextHeaderPosition: headerPosition,\n                        headerRowCount: headerRowCount,\n                        event: event,\n                    };\n                    headerPosition = userFunc(params_2);\n                }\n            }\n        }\n        if (!headerPosition) {\n            return false;\n        }\n        if (headerPosition.headerRowIndex === -1) {\n            return this.focusGridView(headerPosition.column);\n        }\n        this.headerNavigationService.scrollToColumn(headerPosition.column, direction);\n        var headerRowContainerCtrl = this.ctrlsService.getHeaderRowContainerCtrl(headerPosition.column.getPinned());\n        // this will automatically call the setFocusedHeader method above\n        var focusSuccess = headerRowContainerCtrl.focusHeader(headerPosition.headerRowIndex, headerPosition.column, event);\n        return focusSuccess;\n    };\n    FocusService.prototype.focusFirstHeader = function () {\n        var firstColumn = this.columnModel.getAllDisplayedColumns()[0];\n        if (!firstColumn) {\n            return false;\n        }\n        if (firstColumn.getParent()) {\n            firstColumn = this.columnModel.getColumnGroupAtLevel(firstColumn, 0);\n        }\n        return this.focusHeaderPosition({\n            headerPosition: { headerRowIndex: 0, column: firstColumn }\n        });\n    };\n    FocusService.prototype.focusLastHeader = function (event) {\n        var headerRowIndex = this.headerNavigationService.getHeaderRowCount() - 1;\n        var column = last(this.columnModel.getAllDisplayedColumns());\n        return this.focusHeaderPosition({\n            headerPosition: { headerRowIndex: headerRowIndex, column: column },\n            event: event\n        });\n    };\n    FocusService.prototype.isAnyCellFocused = function () {\n        return !!this.focusedCellPosition;\n    };\n    FocusService.prototype.isRowFocused = function (rowIndex, floating) {\n        if (this.focusedCellPosition == null) {\n            return false;\n        }\n        return this.focusedCellPosition.rowIndex === rowIndex && this.focusedCellPosition.rowPinned === makeNull(floating);\n    };\n    FocusService.prototype.findFocusableElements = function (rootNode, exclude, onlyUnmanaged) {\n        if (onlyUnmanaged === void 0) { onlyUnmanaged = false; }\n        var focusableString = FOCUSABLE_SELECTOR;\n        var excludeString = FOCUSABLE_EXCLUDE;\n        if (exclude) {\n            excludeString += ', ' + exclude;\n        }\n        if (onlyUnmanaged) {\n            excludeString += ', [tabindex=\"-1\"]';\n        }\n        var nodes = Array.prototype.slice.apply(rootNode.querySelectorAll(focusableString));\n        var excludeNodes = Array.prototype.slice.apply(rootNode.querySelectorAll(excludeString));\n        if (!excludeNodes.length) {\n            return nodes;\n        }\n        var diff = function (a, b) { return a.filter(function (element) { return b.indexOf(element) === -1; }); };\n        return diff(nodes, excludeNodes);\n    };\n    FocusService.prototype.focusInto = function (rootNode, up, onlyUnmanaged) {\n        if (up === void 0) { up = false; }\n        if (onlyUnmanaged === void 0) { onlyUnmanaged = false; }\n        var focusableElements = this.findFocusableElements(rootNode, null, onlyUnmanaged);\n        var toFocus = up ? last(focusableElements) : focusableElements[0];\n        if (toFocus) {\n            toFocus.focus({ preventScroll: true });\n            return true;\n        }\n        return false;\n    };\n    FocusService.prototype.findFocusableElementBeforeTabGuard = function (rootNode, referenceElement) {\n        if (!referenceElement) {\n            return null;\n        }\n        var focusableElements = this.findFocusableElements(rootNode);\n        var referenceIndex = focusableElements.indexOf(referenceElement);\n        if (referenceIndex === -1) {\n            return null;\n        }\n        var lastTabGuardIndex = -1;\n        for (var i = referenceIndex - 1; i >= 0; i--) {\n            if (focusableElements[i].classList.contains(TabGuardClassNames.TAB_GUARD_TOP)) {\n                lastTabGuardIndex = i;\n                break;\n            }\n        }\n        if (lastTabGuardIndex <= 0) {\n            return null;\n        }\n        return focusableElements[lastTabGuardIndex - 1];\n    };\n    FocusService.prototype.findNextFocusableElement = function (rootNode, onlyManaged, backwards) {\n        if (rootNode === void 0) { rootNode = this.eGridDiv; }\n        var focusable = this.findFocusableElements(rootNode, onlyManaged ? ':not([tabindex=\"-1\"])' : null);\n        var eDocument = this.gridOptionsService.getDocument();\n        var activeEl = eDocument.activeElement;\n        var currentIndex;\n        if (onlyManaged) {\n            currentIndex = focusable.findIndex(function (el) { return el.contains(activeEl); });\n        }\n        else {\n            currentIndex = focusable.indexOf(activeEl);\n        }\n        var nextIndex = currentIndex + (backwards ? -1 : 1);\n        if (nextIndex < 0 || nextIndex >= focusable.length) {\n            return null;\n        }\n        return focusable[nextIndex];\n    };\n    FocusService.prototype.isTargetUnderManagedComponent = function (rootNode, target) {\n        if (!target) {\n            return false;\n        }\n        var managedContainers = rootNode.querySelectorAll(\".\" + ManagedFocusFeature.FOCUS_MANAGED_CLASS);\n        if (!managedContainers.length) {\n            return false;\n        }\n        for (var i = 0; i < managedContainers.length; i++) {\n            if (managedContainers[i].contains(target)) {\n                return true;\n            }\n        }\n        return false;\n    };\n    FocusService.prototype.findTabbableParent = function (node, limit) {\n        if (limit === void 0) { limit = 5; }\n        var counter = 0;\n        while (node && getTabIndex(node) === null && ++counter <= limit) {\n            node = node.parentElement;\n        }\n        if (getTabIndex(node) === null) {\n            return null;\n        }\n        return node;\n    };\n    FocusService.prototype.focusGridView = function (column, backwards) {\n        // if suppressCellFocus is `true`, it means the user does not want to\n        // navigate between the cells using tab. Instead, we put focus on either\n        // the header or after the grid, depending on whether tab or shift-tab was pressed.\n        if (this.gridOptionsService.is('suppressCellFocus')) {\n            if (backwards) {\n                return this.focusLastHeader();\n            }\n            return this.focusNextGridCoreContainer(false);\n        }\n        var nextRow = backwards\n            ? this.rowPositionUtils.getLastRow()\n            : this.rowPositionUtils.getFirstRow();\n        if (!nextRow) {\n            return false;\n        }\n        var rowIndex = nextRow.rowIndex, rowPinned = nextRow.rowPinned;\n        var focusedHeader = this.getFocusedHeader();\n        if (!column && focusedHeader) {\n            column = focusedHeader.column;\n        }\n        if (rowIndex == null || !column) {\n            return false;\n        }\n        this.navigationService.ensureCellVisible({ rowIndex: rowIndex, column: column, rowPinned: rowPinned });\n        this.setFocusedCell({\n            rowIndex: rowIndex,\n            column: column,\n            rowPinned: makeNull(rowPinned),\n            forceBrowserFocus: true\n        });\n        if (this.rangeService) {\n            var cellPosition = { rowIndex: rowIndex, rowPinned: rowPinned, column: column };\n            this.rangeService.setRangeToCell(cellPosition);\n        }\n        return true;\n    };\n    FocusService.prototype.focusNextGridCoreContainer = function (backwards, forceOut) {\n        if (forceOut === void 0) { forceOut = false; }\n        if (!forceOut && this.gridCtrl.focusNextInnerContainer(backwards)) {\n            return true;\n        }\n        if (forceOut || (!backwards && !this.gridCtrl.isDetailGrid())) {\n            this.gridCtrl.forceFocusOutOfContainer(backwards);\n        }\n        return false;\n    };\n    var FocusService_1;\n    FocusService.AG_KEYBOARD_FOCUS = 'ag-keyboard-focus';\n    FocusService.keyboardModeActive = false;\n    FocusService.instancesMonitored = new Map();\n    __decorate$R([\n        Autowired('eGridDiv')\n    ], FocusService.prototype, \"eGridDiv\", void 0);\n    __decorate$R([\n        Autowired('columnModel')\n    ], FocusService.prototype, \"columnModel\", void 0);\n    __decorate$R([\n        Autowired('headerNavigationService')\n    ], FocusService.prototype, \"headerNavigationService\", void 0);\n    __decorate$R([\n        Autowired('rowRenderer')\n    ], FocusService.prototype, \"rowRenderer\", void 0);\n    __decorate$R([\n        Autowired('rowPositionUtils')\n    ], FocusService.prototype, \"rowPositionUtils\", void 0);\n    __decorate$R([\n        Optional('rangeService')\n    ], FocusService.prototype, \"rangeService\", void 0);\n    __decorate$R([\n        Autowired('navigationService')\n    ], FocusService.prototype, \"navigationService\", void 0);\n    __decorate$R([\n        Autowired('ctrlsService')\n    ], FocusService.prototype, \"ctrlsService\", void 0);\n    __decorate$R([\n        PostConstruct\n    ], FocusService.prototype, \"init\", null);\n    FocusService = FocusService_1 = __decorate$R([\n        Bean('focusService')\n    ], FocusService);\n    return FocusService;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$O = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$Q = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __read$a = (undefined && undefined.__read) || function (o, n) {\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n    if (!m) return o;\n    var i = m.call(o), r, ar = [], e;\n    try {\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n    }\n    catch (error) { e = { error: error }; }\n    finally {\n        try {\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\n        }\n        finally { if (e) throw e.error; }\n    }\n    return ar;\n};\nvar __spread$8 = (undefined && undefined.__spread) || function () {\n    for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read$a(arguments[i]));\n    return ar;\n};\nvar DIRECTION;\n(function (DIRECTION) {\n    DIRECTION[DIRECTION[\"vertical\"] = 0] = \"vertical\";\n    DIRECTION[DIRECTION[\"horizontal\"] = 1] = \"horizontal\";\n})(DIRECTION || (DIRECTION = {}));\nvar instanceIdSeq = 0;\nvar PopupService = /** @class */ (function (_super) {\n    __extends$O(PopupService, _super);\n    function PopupService() {\n        var _this = _super !== null && _super.apply(this, arguments) || this;\n        _this.popupList = [];\n        return _this;\n    }\n    PopupService_1 = PopupService;\n    PopupService.prototype.postConstruct = function () {\n        var _this = this;\n        this.ctrlsService.whenReady(function (p) {\n            _this.gridCtrl = p.gridCtrl;\n            _this.addManagedListener(_this.gridCtrl, Events.EVENT_KEYBOARD_FOCUS, function () {\n                _this.popupList.forEach(function (popup) { return popup.element.classList.add(FocusService.AG_KEYBOARD_FOCUS); });\n            });\n            _this.addManagedListener(_this.gridCtrl, Events.EVENT_MOUSE_FOCUS, function () {\n                _this.popupList.forEach(function (popup) { return popup.element.classList.remove(FocusService.AG_KEYBOARD_FOCUS); });\n            });\n        });\n    };\n    PopupService.prototype.getPopupParent = function () {\n        var ePopupParent = this.gridOptionsService.get('popupParent');\n        if (ePopupParent) {\n            return ePopupParent;\n        }\n        return this.gridCtrl.getGui();\n    };\n    PopupService.prototype.positionPopupForMenu = function (params) {\n        var sourceRect = params.eventSource.getBoundingClientRect();\n        var parentRect = this.getParentRect();\n        var y = this.keepXYWithinBounds(params.ePopup, sourceRect.top - parentRect.top, DIRECTION.vertical);\n        var minWidth = (params.ePopup.clientWidth > 0) ? params.ePopup.clientWidth : 200;\n        params.ePopup.style.minWidth = minWidth + \"px\";\n        var widthOfParent = parentRect.right - parentRect.left;\n        var maxX = widthOfParent - minWidth;\n        // the x position of the popup depends on RTL or LTR. for normal cases, LTR, we put the child popup\n        // to the right, unless it doesn't fit and we then put it to the left. for RTL it's the other way around,\n        // we try place it first to the left, and then if not to the right.\n        var x;\n        if (this.gridOptionsService.is('enableRtl')) {\n            // for RTL, try left first\n            x = xLeftPosition();\n            if (x < 0) {\n                x = xRightPosition();\n            }\n            if (x > maxX) {\n                x = 0;\n            }\n        }\n        else {\n            // for LTR, try right first\n            x = xRightPosition();\n            if (x > maxX) {\n                x = xLeftPosition();\n            }\n            if (x < 0) {\n                x = 0;\n            }\n        }\n        params.ePopup.style.left = x + \"px\";\n        params.ePopup.style.top = y + \"px\";\n        function xRightPosition() {\n            return sourceRect.right - parentRect.left - 2;\n        }\n        function xLeftPosition() {\n            return sourceRect.left - parentRect.left - minWidth;\n        }\n    };\n    PopupService.prototype.positionPopupUnderMouseEvent = function (params) {\n        var _this = this;\n        var ePopup = params.ePopup, nudgeX = params.nudgeX, nudgeY = params.nudgeY, skipObserver = params.skipObserver;\n        this.positionPopup({\n            ePopup: ePopup,\n            nudgeX: nudgeX,\n            nudgeY: nudgeY,\n            keepWithinBounds: true,\n            skipObserver: skipObserver,\n            updatePosition: function () { return _this.calculatePointerAlign(params.mouseEvent); },\n            postProcessCallback: function () { return _this.callPostProcessPopup(params.type, params.ePopup, null, params.mouseEvent, params.column, params.rowNode); }\n        });\n    };\n    PopupService.prototype.calculatePointerAlign = function (e) {\n        var parentRect = this.getParentRect();\n        return {\n            x: e.clientX - parentRect.left,\n            y: e.clientY - parentRect.top\n        };\n    };\n    PopupService.prototype.positionPopupByComponent = function (params) {\n        var _this = this;\n        var sourceRect = params.eventSource.getBoundingClientRect();\n        var alignSide = params.alignSide || 'left';\n        var position = params.position || 'over';\n        var parentRect = this.getParentRect();\n        var updatePosition = function () {\n            var x = sourceRect.left - parentRect.left;\n            if (alignSide === 'right') {\n                x -= (params.ePopup.offsetWidth - sourceRect.width);\n            }\n            var y = position === 'over'\n                ? (sourceRect.top - parentRect.top)\n                : (sourceRect.top - parentRect.top + sourceRect.height);\n            return { x: x, y: y };\n        };\n        this.positionPopup({\n            ePopup: params.ePopup,\n            nudgeX: params.nudgeX,\n            nudgeY: params.nudgeY,\n            keepWithinBounds: params.keepWithinBounds,\n            updatePosition: updatePosition,\n            postProcessCallback: function () { return _this.callPostProcessPopup(params.type, params.ePopup, params.eventSource, null, params.column, params.rowNode); }\n        });\n    };\n    PopupService.prototype.callPostProcessPopup = function (type, ePopup, eventSource, mouseEvent, column, rowNode) {\n        var callback = this.gridOptionsService.getCallback('postProcessPopup');\n        if (callback) {\n            var params = {\n                column: column,\n                rowNode: rowNode,\n                ePopup: ePopup,\n                type: type,\n                eventSource: eventSource,\n                mouseEvent: mouseEvent\n            };\n            callback(params);\n        }\n    };\n    PopupService.prototype.positionPopup = function (params) {\n        var _this = this;\n        var ePopup = params.ePopup, keepWithinBounds = params.keepWithinBounds, nudgeX = params.nudgeX, nudgeY = params.nudgeY, skipObserver = params.skipObserver, updatePosition = params.updatePosition;\n        var lastSize = { width: 0, height: 0 };\n        var updatePopupPosition = function (fromResizeObserver) {\n            if (fromResizeObserver === void 0) { fromResizeObserver = false; }\n            var _a = updatePosition(), x = _a.x, y = _a.y;\n            if (fromResizeObserver &&\n                ePopup.clientWidth === lastSize.width &&\n                ePopup.clientHeight === lastSize.height) {\n                return;\n            }\n            lastSize.width = ePopup.clientWidth;\n            lastSize.height = ePopup.clientHeight;\n            if (nudgeX) {\n                x += nudgeX;\n            }\n            if (nudgeY) {\n                y += nudgeY;\n            }\n            // if popup is overflowing to the bottom, move it up\n            if (keepWithinBounds) {\n                x = _this.keepXYWithinBounds(ePopup, x, DIRECTION.horizontal);\n                y = _this.keepXYWithinBounds(ePopup, y, DIRECTION.vertical);\n            }\n            ePopup.style.left = x + \"px\";\n            ePopup.style.top = y + \"px\";\n            if (params.postProcessCallback) {\n                params.postProcessCallback();\n            }\n        };\n        updatePopupPosition();\n        // Mouse tracking will recalculate positioning when moving, so won't need to recalculate here\n        if (!skipObserver) {\n            // Since rendering popup contents can be asynchronous, use a resize observer to\n            // reposition the popup after initial updates to the size of the contents\n            var resizeObserverDestroyFunc_1 = this.resizeObserverService.observeResize(ePopup, function () { return updatePopupPosition(true); });\n            // Only need to reposition when first open, so can clean up after a bit of time\n            setTimeout(function () { return resizeObserverDestroyFunc_1(); }, PopupService_1.WAIT_FOR_POPUP_CONTENT_RESIZE);\n        }\n    };\n    PopupService.prototype.getActivePopups = function () {\n        return this.popupList.map(function (popup) { return popup.element; });\n    };\n    PopupService.prototype.getPopupList = function () {\n        return this.popupList;\n    };\n    PopupService.prototype.getParentRect = function () {\n        // subtract the popup parent borders, because popupParent.getBoundingClientRect\n        // returns the rect outside the borders, but the 0,0 coordinate for absolute\n        // positioning is inside the border, leading the popup to be off by the width\n        // of the border\n        var eDocument = this.gridOptionsService.getDocument();\n        var popupParent = this.getPopupParent();\n        if (popupParent === eDocument.body) {\n            popupParent = eDocument.documentElement;\n        }\n        else if (getComputedStyle(popupParent).position === 'static') {\n            popupParent = popupParent.offsetParent;\n        }\n        var style = getComputedStyle(popupParent);\n        var bounds = popupParent.getBoundingClientRect();\n        return {\n            top: bounds.top + parseFloat(style.borderTopWidth) || 0,\n            left: bounds.left + parseFloat(style.borderLeftWidth) || 0,\n            right: bounds.right + parseFloat(style.borderRightWidth) || 0,\n            bottom: bounds.bottom + parseFloat(style.borderBottomWidth) || 0,\n        };\n    };\n    PopupService.prototype.keepXYWithinBounds = function (ePopup, position, direction) {\n        var isVertical = direction === DIRECTION.vertical;\n        var sizeProperty = isVertical ? 'clientHeight' : 'clientWidth';\n        var anchorProperty = isVertical ? 'top' : 'left';\n        var offsetProperty = isVertical ? 'offsetHeight' : 'offsetWidth';\n        var scrollPositionProperty = isVertical ? 'scrollTop' : 'scrollLeft';\n        var eDocument = this.gridOptionsService.getDocument();\n        var docElement = eDocument.documentElement;\n        var popupParent = this.getPopupParent();\n        var parentRect = popupParent.getBoundingClientRect();\n        var documentRect = eDocument.documentElement.getBoundingClientRect();\n        var isBody = popupParent === eDocument.body;\n        var offsetSize = ePopup[offsetProperty];\n        var getSize = isVertical ? getAbsoluteHeight : getAbsoluteWidth;\n        var sizeOfParent = isBody ? (getSize(docElement) + docElement[scrollPositionProperty]) : popupParent[sizeProperty];\n        if (isBody) {\n            sizeOfParent -= Math.abs(documentRect[anchorProperty] - parentRect[anchorProperty]);\n        }\n        var max = sizeOfParent - offsetSize;\n        return Math.min(Math.max(position, 0), Math.abs(max));\n    };\n    PopupService.prototype.keepPopupPositionedRelativeTo = function (params) {\n        var _this = this;\n        var eParent = this.getPopupParent();\n        var parentRect = eParent.getBoundingClientRect();\n        var sourceRect = params.element.getBoundingClientRect();\n        var initialDiffTop = parentRect.top - sourceRect.top;\n        var initialDiffLeft = parentRect.left - sourceRect.left;\n        var lastDiffTop = initialDiffTop;\n        var lastDiffLeft = initialDiffLeft;\n        var topPx = params.ePopup.style.top;\n        var top = parseInt(topPx.substring(0, topPx.length - 1), 10);\n        var leftPx = params.ePopup.style.left;\n        var left = parseInt(leftPx.substring(0, leftPx.length - 1), 10);\n        return new AgPromise(function (resolve) {\n            _this.getFrameworkOverrides().setInterval(function () {\n                var pRect = eParent.getBoundingClientRect();\n                var sRect = params.element.getBoundingClientRect();\n                var elementNotInDom = sRect.top == 0 && sRect.left == 0 && sRect.height == 0 && sRect.width == 0;\n                if (elementNotInDom) {\n                    params.hidePopup();\n                    return;\n                }\n                var currentDiffTop = pRect.top - sRect.top;\n                if (currentDiffTop != lastDiffTop) {\n                    var newTop = _this.keepXYWithinBounds(params.ePopup, top + initialDiffTop - currentDiffTop, DIRECTION.vertical);\n                    params.ePopup.style.top = newTop + \"px\";\n                }\n                lastDiffTop = currentDiffTop;\n                var currentDiffLeft = pRect.left - sRect.left;\n                if (currentDiffLeft != lastDiffLeft) {\n                    var newLeft = _this.keepXYWithinBounds(params.ePopup, left + initialDiffLeft - currentDiffLeft, DIRECTION.horizontal);\n                    params.ePopup.style.left = newLeft + \"px\";\n                }\n                lastDiffLeft = currentDiffLeft;\n            }, 200).then(function (intervalId) {\n                var result = function () {\n                    if (intervalId != null) {\n                        window.clearInterval(intervalId);\n                    }\n                };\n                resolve(result);\n            });\n        });\n    };\n    PopupService.prototype.addPopup = function (params) {\n        var _a;\n        var _this = this;\n        var modal = params.modal, eChild = params.eChild, closeOnEsc = params.closeOnEsc, closedCallback = params.closedCallback, click = params.click, alwaysOnTop = params.alwaysOnTop, afterGuiAttached = params.afterGuiAttached, positionCallback = params.positionCallback, anchorToElement = params.anchorToElement, ariaLabel = params.ariaLabel;\n        var eDocument = this.gridOptionsService.getDocument();\n        var destroyPositionTracker = new AgPromise(function (resolve) { return resolve(function () { }); });\n        if (!eDocument) {\n            console.warn('AG Grid: could not find the document, document is empty');\n            return { hideFunc: function () { }, stopAnchoringPromise: destroyPositionTracker };\n        }\n        var pos = this.popupList.findIndex(function (popup) { return popup.element === eChild; });\n        if (pos !== -1) {\n            var popup = this.popupList[pos];\n            return { hideFunc: popup.hideFunc, stopAnchoringPromise: popup.stopAnchoringPromise };\n        }\n        var ePopupParent = this.getPopupParent();\n        if (eChild.style.top == null) {\n            eChild.style.top = '0px';\n        }\n        if (eChild.style.left == null) {\n            eChild.style.left = '0px';\n        }\n        // add env CSS class to child, in case user provided a popup parent, which means\n        // theme class may be missing\n        var eWrapper = document.createElement('div');\n        var allThemes = this.environment.getTheme().allThemes;\n        if (allThemes.length) {\n            (_a = eWrapper.classList).add.apply(_a, __spread$8(allThemes));\n        }\n        eWrapper.classList.add('ag-popup');\n        eChild.classList.add(this.gridOptionsService.is('enableRtl') ? 'ag-rtl' : 'ag-ltr', 'ag-popup-child');\n        if (!eChild.hasAttribute('role')) {\n            setAriaRole(eChild, 'dialog');\n        }\n        setAriaLabel(eChild, ariaLabel);\n        if (this.focusService.isKeyboardMode()) {\n            eChild.classList.add(FocusService.AG_KEYBOARD_FOCUS);\n        }\n        eWrapper.appendChild(eChild);\n        ePopupParent.appendChild(eWrapper);\n        if (alwaysOnTop) {\n            this.setAlwaysOnTop(eWrapper, true);\n        }\n        else {\n            this.bringPopupToFront(eWrapper);\n        }\n        var popupHidden = false;\n        var hidePopupOnKeyboardEvent = function (event) {\n            if (!eWrapper.contains(eDocument.activeElement)) {\n                return;\n            }\n            var key = event.key;\n            if (key === KeyCode.ESCAPE) {\n                hidePopup({ keyboardEvent: event });\n            }\n        };\n        var hidePopupOnMouseEvent = function (event) { return hidePopup({ mouseEvent: event }); };\n        var hidePopupOnTouchEvent = function (event) { return hidePopup({ touchEvent: event }); };\n        var hidePopup = function (popupParams) {\n            if (popupParams === void 0) { popupParams = {}; }\n            var mouseEvent = popupParams.mouseEvent, touchEvent = popupParams.touchEvent, keyboardEvent = popupParams.keyboardEvent;\n            if (\n            // we don't hide popup if the event was on the child, or any\n            // children of this child\n            _this.isEventFromCurrentPopup({ mouseEvent: mouseEvent, touchEvent: touchEvent }, eChild) ||\n                // if the event to close is actually the open event, then ignore it\n                _this.isEventSameChainAsOriginalEvent({ originalMouseEvent: click, mouseEvent: mouseEvent, touchEvent: touchEvent }) ||\n                // this method should only be called once. the client can have different\n                // paths, each one wanting to close, so this method may be called multiple times.\n                popupHidden) {\n                return;\n            }\n            popupHidden = true;\n            ePopupParent.removeChild(eWrapper);\n            eDocument.removeEventListener('keydown', hidePopupOnKeyboardEvent);\n            eDocument.removeEventListener('mousedown', hidePopupOnMouseEvent);\n            eDocument.removeEventListener('touchstart', hidePopupOnTouchEvent);\n            eDocument.removeEventListener('contextmenu', hidePopupOnMouseEvent);\n            _this.eventService.removeEventListener(Events.EVENT_DRAG_STARTED, hidePopupOnMouseEvent);\n            if (closedCallback) {\n                closedCallback(mouseEvent || touchEvent || keyboardEvent);\n            }\n            _this.popupList = _this.popupList.filter(function (popup) { return popup.element !== eChild; });\n            if (destroyPositionTracker) {\n                destroyPositionTracker.then(function (destroyFunc) { return destroyFunc && destroyFunc(); });\n            }\n        };\n        if (afterGuiAttached) {\n            afterGuiAttached({ hidePopup: hidePopup });\n        }\n        // if we add these listeners now, then the current mouse\n        // click will be included, which we don't want\n        window.setTimeout(function () {\n            if (closeOnEsc) {\n                eDocument.addEventListener('keydown', hidePopupOnKeyboardEvent);\n            }\n            if (modal) {\n                eDocument.addEventListener('mousedown', hidePopupOnMouseEvent);\n                _this.eventService.addEventListener(Events.EVENT_DRAG_STARTED, hidePopupOnMouseEvent);\n                eDocument.addEventListener('touchstart', hidePopupOnTouchEvent);\n                eDocument.addEventListener('contextmenu', hidePopupOnMouseEvent);\n            }\n        }, 0);\n        if (positionCallback) {\n            positionCallback();\n        }\n        if (anchorToElement) {\n            // keeps popup positioned under created, eg if context menu, if user scrolls\n            // using touchpad and the cell moves, it moves the popup to keep it with the cell.\n            destroyPositionTracker = this.keepPopupPositionedRelativeTo({\n                element: anchorToElement,\n                ePopup: eChild,\n                hidePopup: hidePopup\n            });\n        }\n        this.popupList.push({\n            element: eChild,\n            wrapper: eWrapper,\n            hideFunc: hidePopup,\n            stopAnchoringPromise: destroyPositionTracker,\n            instanceId: instanceIdSeq++,\n            isAnchored: !!anchorToElement\n        });\n        return {\n            hideFunc: hidePopup,\n            stopAnchoringPromise: destroyPositionTracker\n        };\n    };\n    PopupService.prototype.hasAnchoredPopup = function () {\n        return this.popupList.some(function (popup) { return popup.isAnchored; });\n    };\n    PopupService.prototype.isEventFromCurrentPopup = function (params, target) {\n        var mouseEvent = params.mouseEvent, touchEvent = params.touchEvent;\n        var event = mouseEvent ? mouseEvent : touchEvent;\n        if (!event) {\n            return false;\n        }\n        var indexOfThisChild = this.popupList.findIndex(function (popup) { return popup.element === target; });\n        if (indexOfThisChild === -1) {\n            return false;\n        }\n        for (var i = indexOfThisChild; i < this.popupList.length; i++) {\n            var popup = this.popupList[i];\n            if (isElementInEventPath(popup.element, event)) {\n                return true;\n            }\n        }\n        // if the user did not write their own Custom Element to be rendered as popup\n        // and this component has an additional popup element, they should have the\n        // `ag-custom-component-popup` class to be detected as part of the Custom Component\n        return this.isElementWithinCustomPopup(event.target);\n    };\n    PopupService.prototype.isElementWithinCustomPopup = function (el) {\n        var eDocument = this.gridOptionsService.getDocument();\n        while (el && el !== eDocument.body) {\n            if (el.classList.contains('ag-custom-component-popup') || el.parentElement === null) {\n                return true;\n            }\n            el = el.parentElement;\n        }\n        return false;\n    };\n    // in some browsers, the context menu event can be fired before the click event, which means\n    // the context menu event could open the popup, but then the click event closes it straight away.\n    PopupService.prototype.isEventSameChainAsOriginalEvent = function (params) {\n        var originalMouseEvent = params.originalMouseEvent, mouseEvent = params.mouseEvent, touchEvent = params.touchEvent;\n        // we check the coordinates of the event, to see if it's the same event. there is a 1 / 1000 chance that\n        // the event is a different event, however that is an edge case that is not very relevant (the user clicking\n        // twice on the same location isn't a normal path).\n        // event could be mouse event or touch event.\n        var mouseEventOrTouch = null;\n        if (mouseEvent) {\n            // mouse event can be used direction, it has coordinates\n            mouseEventOrTouch = mouseEvent;\n        }\n        else if (touchEvent) {\n            // touch event doesn't have coordinates, need it's touch object\n            mouseEventOrTouch = touchEvent.touches[0];\n        }\n        if (mouseEventOrTouch && originalMouseEvent) {\n            // for x, allow 4px margin, to cover iPads, where touch (which opens menu) is followed\n            // by browser click (when you finger up, touch is interrupted as click in browser)\n            var screenX_1 = mouseEvent ? mouseEvent.screenX : 0;\n            var screenY_1 = mouseEvent ? mouseEvent.screenY : 0;\n            var xMatch = Math.abs(originalMouseEvent.screenX - screenX_1) < 5;\n            var yMatch = Math.abs(originalMouseEvent.screenY - screenY_1) < 5;\n            if (xMatch && yMatch) {\n                return true;\n            }\n        }\n        return false;\n    };\n    PopupService.prototype.getWrapper = function (ePopup) {\n        while (!ePopup.classList.contains('ag-popup') && ePopup.parentElement) {\n            ePopup = ePopup.parentElement;\n        }\n        return ePopup.classList.contains('ag-popup') ? ePopup : null;\n    };\n    PopupService.prototype.setAlwaysOnTop = function (ePopup, alwaysOnTop) {\n        var eWrapper = this.getWrapper(ePopup);\n        if (!eWrapper) {\n            return;\n        }\n        eWrapper.classList.toggle('ag-always-on-top', !!alwaysOnTop);\n        if (alwaysOnTop) {\n            this.bringPopupToFront(eWrapper);\n        }\n    };\n    PopupService.prototype.bringPopupToFront = function (ePopup) {\n        var parent = this.getPopupParent();\n        var popupList = Array.prototype.slice.call(parent.querySelectorAll('.ag-popup'));\n        var popupLen = popupList.length;\n        var alwaysOnTopList = Array.prototype.slice.call(parent.querySelectorAll('.ag-popup.ag-always-on-top'));\n        var onTopLength = alwaysOnTopList.length;\n        var eWrapper = this.getWrapper(ePopup);\n        if (!eWrapper || popupLen <= 1 || !parent.contains(ePopup)) {\n            return;\n        }\n        var pos = popupList.indexOf(eWrapper);\n        var innerEls = eWrapper.querySelectorAll('div');\n        var innerElsScrollMap = [];\n        innerEls.forEach(function (el) {\n            if (el.scrollTop !== 0) {\n                innerElsScrollMap.push([el, el.scrollTop]);\n            }\n        });\n        if (onTopLength) {\n            var isPopupAlwaysOnTop = eWrapper.classList.contains('ag-always-on-top');\n            if (isPopupAlwaysOnTop) {\n                if (pos !== popupLen - 1) {\n                    last(alwaysOnTopList).insertAdjacentElement('afterend', eWrapper);\n                }\n            }\n            else if (pos !== popupLen - onTopLength - 1) {\n                alwaysOnTopList[0].insertAdjacentElement('beforebegin', eWrapper);\n            }\n        }\n        else if (pos !== popupLen - 1) {\n            last(popupList).insertAdjacentElement('afterend', eWrapper);\n        }\n        while (innerElsScrollMap.length) {\n            var currentEl = innerElsScrollMap.pop();\n            currentEl[0].scrollTop = currentEl[1];\n        }\n        var params = {\n            type: 'popupToFront',\n            api: this.gridOptionsService.api,\n            columnApi: this.gridOptionsService.columnApi,\n            eWrapper: eWrapper\n        };\n        this.eventService.dispatchEvent(params);\n    };\n    var PopupService_1;\n    PopupService.WAIT_FOR_POPUP_CONTENT_RESIZE = 200;\n    __decorate$Q([\n        Autowired('focusService')\n    ], PopupService.prototype, \"focusService\", void 0);\n    __decorate$Q([\n        Autowired('ctrlsService')\n    ], PopupService.prototype, \"ctrlsService\", void 0);\n    __decorate$Q([\n        Autowired('resizeObserverService')\n    ], PopupService.prototype, \"resizeObserverService\", void 0);\n    __decorate$Q([\n        PostConstruct\n    ], PopupService.prototype, \"postConstruct\", null);\n    PopupService = PopupService_1 = __decorate$Q([\n        Bean('popupService')\n    ], PopupService);\n    return PopupService;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$N = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$P = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar VirtualList = /** @class */ (function (_super) {\n    __extends$N(VirtualList, _super);\n    function VirtualList(cssIdentifier, ariaRole, listName) {\n        if (cssIdentifier === void 0) { cssIdentifier = 'default'; }\n        if (ariaRole === void 0) { ariaRole = 'listbox'; }\n        var _this = _super.call(this, VirtualList.getTemplate(cssIdentifier)) || this;\n        _this.cssIdentifier = cssIdentifier;\n        _this.ariaRole = ariaRole;\n        _this.listName = listName;\n        _this.renderedRows = new Map();\n        _this.rowHeight = 20;\n        return _this;\n    }\n    VirtualList.prototype.postConstruct = function () {\n        var _this = this;\n        this.addScrollListener();\n        this.rowHeight = this.getItemHeight();\n        this.addResizeObserver();\n        this.initialiseTabGuard({\n            onFocusIn: function (e) { return _this.onFocusIn(e); },\n            onFocusOut: function (e) { return _this.onFocusOut(e); },\n            focusInnerElement: function (fromBottom) { return _this.focusInnerElement(fromBottom); },\n            onTabKeyDown: function (e) { return _this.onTabKeyDown(e); },\n            handleKeyDown: function (e) { return _this.handleKeyDown(e); }\n        });\n        this.setAriaProperties();\n        this.addManagedListener(this.eventService, Events.EVENT_GRID_STYLES_CHANGED, this.onGridStylesChanged.bind(this));\n    };\n    VirtualList.prototype.onGridStylesChanged = function () {\n        this.rowHeight = this.getItemHeight();\n        this.refresh();\n    };\n    VirtualList.prototype.setAriaProperties = function () {\n        var translate = this.localeService.getLocaleTextFunc();\n        var listName = translate('ariaDefaultListName', this.listName || 'List');\n        var ariaEl = this.eContainer;\n        setAriaRole(ariaEl, this.ariaRole);\n        setAriaLabel(ariaEl, listName);\n    };\n    VirtualList.prototype.addResizeObserver = function () {\n        var _this = this;\n        var listener = function () { return _this.drawVirtualRows(); };\n        var destroyObserver = this.resizeObserverService.observeResize(this.getGui(), listener);\n        this.addDestroyFunc(destroyObserver);\n    };\n    VirtualList.prototype.focusInnerElement = function (fromBottom) {\n        this.focusRow(fromBottom ? this.model.getRowCount() - 1 : 0);\n    };\n    VirtualList.prototype.onFocusIn = function (e) {\n        var target = e.target;\n        if (target.classList.contains('ag-virtual-list-item')) {\n            this.lastFocusedRowIndex = getAriaPosInSet(target) - 1;\n        }\n        return false;\n    };\n    VirtualList.prototype.onFocusOut = function (e) {\n        if (!this.getFocusableElement().contains(e.relatedTarget)) {\n            this.lastFocusedRowIndex = null;\n        }\n        return false;\n    };\n    VirtualList.prototype.handleKeyDown = function (e) {\n        switch (e.key) {\n            case KeyCode.UP:\n            case KeyCode.DOWN:\n                if (this.navigate(e.key === KeyCode.UP)) {\n                    e.preventDefault();\n                }\n                break;\n        }\n    };\n    VirtualList.prototype.onTabKeyDown = function (e) {\n        if (this.navigate(e.shiftKey)) {\n            e.preventDefault();\n        }\n        else {\n            this.forceFocusOutOfContainer(e.shiftKey);\n        }\n    };\n    VirtualList.prototype.navigate = function (up) {\n        if (this.lastFocusedRowIndex == null) {\n            return false;\n        }\n        var nextRow = this.lastFocusedRowIndex + (up ? -1 : 1);\n        if (nextRow < 0 || nextRow >= this.model.getRowCount()) {\n            return false;\n        }\n        this.focusRow(nextRow);\n        return true;\n    };\n    VirtualList.prototype.getLastFocusedRow = function () {\n        return this.lastFocusedRowIndex;\n    };\n    VirtualList.prototype.focusRow = function (rowNumber) {\n        var _this = this;\n        this.ensureIndexVisible(rowNumber);\n        window.setTimeout(function () {\n            if (!_this.isAlive()) {\n                return;\n            }\n            var renderedRow = _this.renderedRows.get(rowNumber);\n            if (renderedRow) {\n                renderedRow.eDiv.focus();\n            }\n        }, 10);\n    };\n    VirtualList.prototype.getComponentAt = function (rowIndex) {\n        var comp = this.renderedRows.get(rowIndex);\n        return comp && comp.rowComponent;\n    };\n    VirtualList.prototype.forEachRenderedRow = function (func) {\n        this.renderedRows.forEach(function (value, key) { return func(value.rowComponent, key); });\n    };\n    VirtualList.getTemplate = function (cssIdentifier) {\n        return /* html */ \"\\n            <div class=\\\"ag-virtual-list-viewport ag-\" + cssIdentifier + \"-virtual-list-viewport\\\" role=\\\"presentation\\\">\\n                <div class=\\\"ag-virtual-list-container ag-\" + cssIdentifier + \"-virtual-list-container\\\" ref=\\\"eContainer\\\"></div>\\n            </div>\";\n    };\n    VirtualList.prototype.getItemHeight = function () {\n        return this.environment.getListItemHeight();\n    };\n    VirtualList.prototype.ensureIndexVisible = function (index) {\n        var lastRow = this.model.getRowCount();\n        if (typeof index !== 'number' || index < 0 || index >= lastRow) {\n            console.warn('AG Grid: invalid row index for ensureIndexVisible: ' + index);\n            return;\n        }\n        var rowTopPixel = index * this.rowHeight;\n        var rowBottomPixel = rowTopPixel + this.rowHeight;\n        var eGui = this.getGui();\n        var viewportTopPixel = eGui.scrollTop;\n        var viewportHeight = eGui.offsetHeight;\n        var viewportBottomPixel = viewportTopPixel + viewportHeight;\n        var viewportScrolledPastRow = viewportTopPixel > rowTopPixel;\n        var viewportScrolledBeforeRow = viewportBottomPixel < rowBottomPixel;\n        if (viewportScrolledPastRow) {\n            // if row is before, scroll up with row at top\n            eGui.scrollTop = rowTopPixel;\n        }\n        else if (viewportScrolledBeforeRow) {\n            // if row is below, scroll down with row at bottom\n            var newScrollPosition = rowBottomPixel - viewportHeight;\n            eGui.scrollTop = newScrollPosition;\n        }\n    };\n    VirtualList.prototype.setComponentCreator = function (componentCreator) {\n        this.componentCreator = componentCreator;\n    };\n    VirtualList.prototype.setComponentUpdater = function (componentUpdater) {\n        this.componentUpdater = componentUpdater;\n    };\n    VirtualList.prototype.getRowHeight = function () {\n        return this.rowHeight;\n    };\n    VirtualList.prototype.getScrollTop = function () {\n        return this.getGui().scrollTop;\n    };\n    VirtualList.prototype.setRowHeight = function (rowHeight) {\n        this.rowHeight = rowHeight;\n        this.refresh();\n    };\n    VirtualList.prototype.refresh = function (softRefresh) {\n        var _this = this;\n        if (this.model == null || !this.isAlive()) {\n            return;\n        }\n        var rowCount = this.model.getRowCount();\n        this.eContainer.style.height = rowCount * this.rowHeight + \"px\";\n        // ensure height is applied before attempting to redraw rows\n        waitUntil(function () { return _this.eContainer.clientHeight >= rowCount * _this.rowHeight; }, function () {\n            if (!_this.isAlive()) {\n                return;\n            }\n            if (_this.canSoftRefresh(softRefresh)) {\n                _this.drawVirtualRows(true);\n            }\n            else {\n                _this.clearVirtualRows();\n                _this.drawVirtualRows();\n            }\n        });\n    };\n    VirtualList.prototype.canSoftRefresh = function (softRefresh) {\n        return !!(softRefresh && this.renderedRows.size && typeof this.model.areRowsEqual === 'function' && this.componentUpdater);\n    };\n    VirtualList.prototype.clearVirtualRows = function () {\n        var _this = this;\n        this.renderedRows.forEach(function (_, rowIndex) { return _this.removeRow(rowIndex); });\n    };\n    VirtualList.prototype.drawVirtualRows = function (softRefresh) {\n        if (!this.isAlive()) {\n            return;\n        }\n        var gui = this.getGui();\n        var topPixel = gui.scrollTop;\n        var bottomPixel = topPixel + gui.offsetHeight;\n        var firstRow = Math.floor(topPixel / this.rowHeight);\n        var lastRow = Math.floor(bottomPixel / this.rowHeight);\n        this.ensureRowsRendered(firstRow, lastRow, softRefresh);\n    };\n    VirtualList.prototype.ensureRowsRendered = function (start, finish, softRefresh) {\n        var _this = this;\n        // remove any rows that are no longer required\n        this.renderedRows.forEach(function (_, rowIndex) {\n            if ((rowIndex < start || rowIndex > finish) && rowIndex !== _this.lastFocusedRowIndex) {\n                _this.removeRow(rowIndex);\n            }\n        });\n        if (softRefresh) {\n            // refresh any existing rows\n            this.refreshRows();\n        }\n        // insert any required new rows\n        for (var rowIndex = start; rowIndex <= finish; rowIndex++) {\n            if (this.renderedRows.has(rowIndex)) {\n                continue;\n            }\n            // check this row actually exists (in case overflow buffer window exceeds real data)\n            if (rowIndex < this.model.getRowCount()) {\n                this.insertRow(rowIndex);\n            }\n        }\n    };\n    VirtualList.prototype.insertRow = function (rowIndex) {\n        var _this = this;\n        var value = this.model.getRow(rowIndex);\n        var eDiv = document.createElement('div');\n        eDiv.classList.add('ag-virtual-list-item', \"ag-\" + this.cssIdentifier + \"-virtual-list-item\");\n        setAriaRole(eDiv, this.ariaRole === 'tree' ? 'treeitem' : 'option');\n        setAriaSetSize(eDiv, this.model.getRowCount());\n        setAriaPosInSet(eDiv, rowIndex + 1);\n        eDiv.setAttribute('tabindex', '-1');\n        if (typeof this.model.isRowSelected === 'function') {\n            var isSelected = this.model.isRowSelected(rowIndex);\n            setAriaSelected(eDiv, !!isSelected);\n            setAriaChecked(eDiv, isSelected);\n        }\n        eDiv.style.height = this.rowHeight + \"px\";\n        eDiv.style.top = this.rowHeight * rowIndex + \"px\";\n        var rowComponent = this.componentCreator(value, eDiv);\n        rowComponent.addGuiEventListener('focusin', function () { return _this.lastFocusedRowIndex = rowIndex; });\n        eDiv.appendChild(rowComponent.getGui());\n        // keep the DOM order consistent with the order of the rows\n        if (this.renderedRows.has(rowIndex - 1)) {\n            this.renderedRows.get(rowIndex - 1).eDiv.insertAdjacentElement('afterend', eDiv);\n        }\n        else if (this.renderedRows.has(rowIndex + 1)) {\n            this.renderedRows.get(rowIndex + 1).eDiv.insertAdjacentElement('beforebegin', eDiv);\n        }\n        else {\n            this.eContainer.appendChild(eDiv);\n        }\n        this.renderedRows.set(rowIndex, { rowComponent: rowComponent, eDiv: eDiv, value: value });\n    };\n    VirtualList.prototype.removeRow = function (rowIndex) {\n        var component = this.renderedRows.get(rowIndex);\n        this.eContainer.removeChild(component.eDiv);\n        this.destroyBean(component.rowComponent);\n        this.renderedRows.delete(rowIndex);\n    };\n    VirtualList.prototype.refreshRows = function () {\n        var _this = this;\n        var rowCount = this.model.getRowCount();\n        this.renderedRows.forEach(function (row, rowIndex) {\n            var _a, _b;\n            if (rowIndex >= rowCount) {\n                _this.removeRow(rowIndex);\n            }\n            else {\n                var newValue = _this.model.getRow(rowIndex);\n                if ((_b = (_a = _this.model).areRowsEqual) === null || _b === void 0 ? void 0 : _b.call(_a, row.value, newValue)) {\n                    _this.componentUpdater(newValue, row.rowComponent);\n                }\n                else {\n                    // to be replaced later\n                    _this.removeRow(rowIndex);\n                }\n            }\n        });\n    };\n    VirtualList.prototype.addScrollListener = function () {\n        var _this = this;\n        this.addGuiEventListener('scroll', function () { return _this.drawVirtualRows(); }, { passive: true });\n    };\n    VirtualList.prototype.setModel = function (model) {\n        this.model = model;\n    };\n    VirtualList.prototype.destroy = function () {\n        if (!this.isAlive()) {\n            return;\n        }\n        this.clearVirtualRows();\n        _super.prototype.destroy.call(this);\n    };\n    __decorate$P([\n        Autowired('resizeObserverService')\n    ], VirtualList.prototype, \"resizeObserverService\", void 0);\n    __decorate$P([\n        RefSelector('eContainer')\n    ], VirtualList.prototype, \"eContainer\", void 0);\n    __decorate$P([\n        PostConstruct\n    ], VirtualList.prototype, \"postConstruct\", null);\n    return VirtualList;\n}(TabGuardComp));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar OUTSIDE_ANGULAR_EVENTS = ['mouseover', 'mouseout', 'mouseenter', 'mouseleave'];\nvar PASSIVE_EVENTS = ['touchstart', 'touchend', 'touchmove', 'touchcancel'];\n/** The base frameworks, eg React & Angular, override this bean with implementations specific to their requirement. */\nvar VanillaFrameworkOverrides = /** @class */ (function () {\n    function VanillaFrameworkOverrides() {\n        this.isOutsideAngular = function (eventType) { return includes(OUTSIDE_ANGULAR_EVENTS, eventType); };\n    }\n    // for Vanilla JS, we use simple timeout\n    VanillaFrameworkOverrides.prototype.setTimeout = function (action, timeout) {\n        window.setTimeout(action, timeout);\n    };\n    VanillaFrameworkOverrides.prototype.setInterval = function (action, timeout) {\n        return new AgPromise(function (resolve) {\n            resolve(window.setInterval(action, timeout));\n        });\n    };\n    // for Vanilla JS, we just add the event to the element\n    VanillaFrameworkOverrides.prototype.addEventListener = function (element, type, listener, useCapture) {\n        var isPassive = includes(PASSIVE_EVENTS, type);\n        element.addEventListener(type, listener, { capture: !!useCapture, passive: isPassive });\n    };\n    // for Vanilla JS, we just execute the listener\n    VanillaFrameworkOverrides.prototype.dispatchEvent = function (eventType, listener, global) {\n        listener();\n    };\n    VanillaFrameworkOverrides.prototype.frameworkComponent = function (name) {\n        return null;\n    };\n    VanillaFrameworkOverrides.prototype.isFrameworkComponent = function (comp) {\n        return false;\n    };\n    return VanillaFrameworkOverrides;\n}());\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$M = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$O = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __read$9 = (undefined && undefined.__read) || function (o, n) {\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n    if (!m) return o;\n    var i = m.call(o), r, ar = [], e;\n    try {\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n    }\n    catch (error) { e = { error: error }; }\n    finally {\n        try {\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\n        }\n        finally { if (e) throw e.error; }\n    }\n    return ar;\n};\nvar __spread$7 = (undefined && undefined.__spread) || function () {\n    for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read$9(arguments[i]));\n    return ar;\n};\nvar CellNavigationService = /** @class */ (function (_super) {\n    __extends$M(CellNavigationService, _super);\n    function CellNavigationService() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    // returns null if no cell to focus on, ie at the end of the grid\n    CellNavigationService.prototype.getNextCellToFocus = function (key, focusedCell, ctrlPressed) {\n        if (ctrlPressed === void 0) { ctrlPressed = false; }\n        if (ctrlPressed) {\n            return this.getNextCellToFocusWithCtrlPressed(key, focusedCell);\n        }\n        return this.getNextCellToFocusWithoutCtrlPressed(key, focusedCell);\n    };\n    CellNavigationService.prototype.getNextCellToFocusWithCtrlPressed = function (key, focusedCell) {\n        var upKey = key === KeyCode.UP;\n        var downKey = key === KeyCode.DOWN;\n        var leftKey = key === KeyCode.LEFT;\n        var column;\n        var rowIndex;\n        if (upKey || downKey) {\n            rowIndex = upKey ? this.paginationProxy.getPageFirstRow() : this.paginationProxy.getPageLastRow();\n            column = focusedCell.column;\n        }\n        else {\n            var allColumns = this.columnModel.getAllDisplayedColumns();\n            var isRtl = this.gridOptionsService.is('enableRtl');\n            rowIndex = focusedCell.rowIndex;\n            column = leftKey !== isRtl ? allColumns[0] : last(allColumns);\n        }\n        return {\n            rowIndex: rowIndex,\n            rowPinned: null,\n            column: column\n        };\n    };\n    CellNavigationService.prototype.getNextCellToFocusWithoutCtrlPressed = function (key, focusedCell) {\n        // starting with the provided cell, we keep moving until we find a cell we can\n        // focus on.\n        var pointer = focusedCell;\n        var finished = false;\n        // finished will be true when either:\n        // a) cell found that we can focus on\n        // b) run out of cells (ie the method returns null)\n        while (!finished) {\n            switch (key) {\n                case KeyCode.UP:\n                    pointer = this.getCellAbove(pointer);\n                    break;\n                case KeyCode.DOWN:\n                    pointer = this.getCellBelow(pointer);\n                    break;\n                case KeyCode.RIGHT:\n                    if (this.gridOptionsService.is('enableRtl')) {\n                        pointer = this.getCellToLeft(pointer);\n                    }\n                    else {\n                        pointer = this.getCellToRight(pointer);\n                    }\n                    break;\n                case KeyCode.LEFT:\n                    if (this.gridOptionsService.is('enableRtl')) {\n                        pointer = this.getCellToRight(pointer);\n                    }\n                    else {\n                        pointer = this.getCellToLeft(pointer);\n                    }\n                    break;\n                default:\n                    pointer = null;\n                    console.warn('AG Grid: unknown key for navigation ' + key);\n                    break;\n            }\n            if (pointer) {\n                finished = this.isCellGoodToFocusOn(pointer);\n            }\n            else {\n                finished = true;\n            }\n        }\n        return pointer;\n    };\n    CellNavigationService.prototype.isCellGoodToFocusOn = function (gridCell) {\n        var column = gridCell.column;\n        var rowNode;\n        switch (gridCell.rowPinned) {\n            case 'top':\n                rowNode = this.pinnedRowModel.getPinnedTopRow(gridCell.rowIndex);\n                break;\n            case 'bottom':\n                rowNode = this.pinnedRowModel.getPinnedBottomRow(gridCell.rowIndex);\n                break;\n            default:\n                rowNode = this.rowModel.getRow(gridCell.rowIndex);\n                break;\n        }\n        if (!rowNode) {\n            return false;\n        }\n        var suppressNavigable = column.isSuppressNavigable(rowNode);\n        return !suppressNavigable;\n    };\n    CellNavigationService.prototype.getCellToLeft = function (lastCell) {\n        if (!lastCell) {\n            return null;\n        }\n        var colToLeft = this.columnModel.getDisplayedColBefore(lastCell.column);\n        if (!colToLeft) {\n            return null;\n        }\n        return {\n            rowIndex: lastCell.rowIndex,\n            column: colToLeft,\n            rowPinned: lastCell.rowPinned\n        };\n    };\n    CellNavigationService.prototype.getCellToRight = function (lastCell) {\n        if (!lastCell) {\n            return null;\n        }\n        var colToRight = this.columnModel.getDisplayedColAfter(lastCell.column);\n        // if already on right, do nothing\n        if (!colToRight) {\n            return null;\n        }\n        return {\n            rowIndex: lastCell.rowIndex,\n            column: colToRight,\n            rowPinned: lastCell.rowPinned\n        };\n    };\n    CellNavigationService.prototype.getRowBelow = function (rowPosition) {\n        // if already on top row, do nothing\n        var index = rowPosition.rowIndex;\n        var pinned = rowPosition.rowPinned;\n        if (this.isLastRowInContainer(rowPosition)) {\n            switch (pinned) {\n                case 'bottom':\n                    // never any rows after pinned bottom\n                    return null;\n                case 'top':\n                    // if on last row of pinned top, then next row is main body (if rows exist),\n                    // otherwise it's the pinned bottom\n                    if (this.rowModel.isRowsToRender()) {\n                        return { rowIndex: this.paginationProxy.getPageFirstRow(), rowPinned: null };\n                    }\n                    if (this.pinnedRowModel.isRowsToRender('bottom')) {\n                        return { rowIndex: 0, rowPinned: 'bottom' };\n                    }\n                    return null;\n                default:\n                    // if in the main body, then try pinned bottom, otherwise return nothing\n                    if (this.pinnedRowModel.isRowsToRender('bottom')) {\n                        return { rowIndex: 0, rowPinned: 'bottom' };\n                    }\n                    return null;\n            }\n        }\n        var rowNode = this.rowModel.getRow(rowPosition.rowIndex);\n        var nextStickyPosition = this.getNextStickyPosition(rowNode);\n        if (nextStickyPosition) {\n            return nextStickyPosition;\n        }\n        return { rowIndex: index + 1, rowPinned: pinned };\n    };\n    CellNavigationService.prototype.getNextStickyPosition = function (rowNode, up) {\n        if (!this.gridOptionsService.is('groupRowsSticky') || !rowNode || !rowNode.sticky) {\n            return;\n        }\n        var stickyRowCtrls = __spread$7(this.rowRenderer.getStickyTopRowCtrls()).sort(function (a, b) { return a.getRowNode().rowIndex - b.getRowNode().rowIndex; });\n        var diff = up ? -1 : 1;\n        var idx = stickyRowCtrls.findIndex(function (ctrl) { return ctrl.getRowNode().rowIndex === rowNode.rowIndex; });\n        var nextCtrl = stickyRowCtrls[idx + diff];\n        if (nextCtrl) {\n            return { rowIndex: nextCtrl.getRowNode().rowIndex, rowPinned: null };\n        }\n    };\n    CellNavigationService.prototype.getCellBelow = function (lastCell) {\n        if (!lastCell) {\n            return null;\n        }\n        var rowBelow = this.getRowBelow(lastCell);\n        if (rowBelow) {\n            return {\n                rowIndex: rowBelow.rowIndex,\n                column: lastCell.column,\n                rowPinned: rowBelow.rowPinned\n            };\n        }\n        return null;\n    };\n    CellNavigationService.prototype.isLastRowInContainer = function (rowPosition) {\n        var pinned = rowPosition.rowPinned;\n        var index = rowPosition.rowIndex;\n        if (pinned === 'top') {\n            var lastTopIndex = this.pinnedRowModel.getPinnedTopRowData().length - 1;\n            return lastTopIndex <= index;\n        }\n        if (pinned === 'bottom') {\n            var lastBottomIndex = this.pinnedRowModel.getPinnedBottomRowData().length - 1;\n            return lastBottomIndex <= index;\n        }\n        var lastBodyIndex = this.paginationProxy.getPageLastRow();\n        return lastBodyIndex <= index;\n    };\n    CellNavigationService.prototype.getRowAbove = function (rowPosition) {\n        // if already on top row, do nothing\n        var index = rowPosition.rowIndex;\n        var pinned = rowPosition.rowPinned;\n        var isFirstRow = pinned ? index === 0 : index === this.paginationProxy.getPageFirstRow();\n        // if already on top row, do nothing\n        if (isFirstRow) {\n            if (pinned === 'top') {\n                return null;\n            }\n            if (!pinned) {\n                if (this.pinnedRowModel.isRowsToRender('top')) {\n                    return this.getLastFloatingTopRow();\n                }\n                return null;\n            }\n            // last floating bottom\n            if (this.rowModel.isRowsToRender()) {\n                return this.getLastBodyCell();\n            }\n            if (this.pinnedRowModel.isRowsToRender('top')) {\n                return this.getLastFloatingTopRow();\n            }\n            return null;\n        }\n        var rowNode = this.rowModel.getRow(rowPosition.rowIndex);\n        var nextStickyPosition = this.getNextStickyPosition(rowNode, true);\n        if (nextStickyPosition) {\n            return nextStickyPosition;\n        }\n        return { rowIndex: index - 1, rowPinned: pinned };\n    };\n    CellNavigationService.prototype.getCellAbove = function (lastCell) {\n        if (!lastCell) {\n            return null;\n        }\n        var rowAbove = this.getRowAbove({ rowIndex: lastCell.rowIndex, rowPinned: lastCell.rowPinned });\n        if (rowAbove) {\n            return {\n                rowIndex: rowAbove.rowIndex,\n                column: lastCell.column,\n                rowPinned: rowAbove.rowPinned\n            };\n        }\n        return null;\n    };\n    CellNavigationService.prototype.getLastBodyCell = function () {\n        var lastBodyRow = this.paginationProxy.getPageLastRow();\n        return { rowIndex: lastBodyRow, rowPinned: null };\n    };\n    CellNavigationService.prototype.getLastFloatingTopRow = function () {\n        var lastFloatingRow = this.pinnedRowModel.getPinnedTopRowData().length - 1;\n        return { rowIndex: lastFloatingRow, rowPinned: 'top' };\n    };\n    CellNavigationService.prototype.getNextTabbedCell = function (gridCell, backwards) {\n        if (backwards) {\n            return this.getNextTabbedCellBackwards(gridCell);\n        }\n        return this.getNextTabbedCellForwards(gridCell);\n    };\n    CellNavigationService.prototype.getNextTabbedCellForwards = function (gridCell) {\n        var displayedColumns = this.columnModel.getAllDisplayedColumns();\n        var newRowIndex = gridCell.rowIndex;\n        var newFloating = gridCell.rowPinned;\n        // move along to the next cell\n        var newColumn = this.columnModel.getDisplayedColAfter(gridCell.column);\n        // check if end of the row, and if so, go forward a row\n        if (!newColumn) {\n            newColumn = displayedColumns[0];\n            var rowBelow = this.getRowBelow(gridCell);\n            if (missing(rowBelow)) {\n                return null;\n            }\n            // If we are tabbing and there is a paging panel present, tabbing should go\n            // to the paging panel instead of loading the next page.\n            if (!rowBelow.rowPinned && !this.paginationProxy.isRowInPage(rowBelow)) {\n                return null;\n            }\n            newRowIndex = rowBelow ? rowBelow.rowIndex : null;\n            newFloating = rowBelow ? rowBelow.rowPinned : null;\n        }\n        return { rowIndex: newRowIndex, column: newColumn, rowPinned: newFloating };\n    };\n    CellNavigationService.prototype.getNextTabbedCellBackwards = function (gridCell) {\n        var displayedColumns = this.columnModel.getAllDisplayedColumns();\n        var newRowIndex = gridCell.rowIndex;\n        var newFloating = gridCell.rowPinned;\n        // move along to the next cell\n        var newColumn = this.columnModel.getDisplayedColBefore(gridCell.column);\n        // check if end of the row, and if so, go forward a row\n        if (!newColumn) {\n            newColumn = last(displayedColumns);\n            var rowAbove = this.getRowAbove({ rowIndex: gridCell.rowIndex, rowPinned: gridCell.rowPinned });\n            if (missing(rowAbove)) {\n                return null;\n            }\n            // If we are tabbing and there is a paging panel present, tabbing should go\n            // to the paging panel instead of loading the next page.\n            if (!rowAbove.rowPinned && !this.paginationProxy.isRowInPage(rowAbove)) {\n                return null;\n            }\n            newRowIndex = rowAbove ? rowAbove.rowIndex : null;\n            newFloating = rowAbove ? rowAbove.rowPinned : null;\n        }\n        return { rowIndex: newRowIndex, column: newColumn, rowPinned: newFloating };\n    };\n    __decorate$O([\n        Autowired('columnModel')\n    ], CellNavigationService.prototype, \"columnModel\", void 0);\n    __decorate$O([\n        Autowired('rowModel')\n    ], CellNavigationService.prototype, \"rowModel\", void 0);\n    __decorate$O([\n        Autowired('rowRenderer')\n    ], CellNavigationService.prototype, \"rowRenderer\", void 0);\n    __decorate$O([\n        Autowired('pinnedRowModel')\n    ], CellNavigationService.prototype, \"pinnedRowModel\", void 0);\n    __decorate$O([\n        Autowired('paginationProxy')\n    ], CellNavigationService.prototype, \"paginationProxy\", void 0);\n    CellNavigationService = __decorate$O([\n        Bean('cellNavigationService')\n    ], CellNavigationService);\n    return CellNavigationService;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$L = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$N = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __param$6 = (undefined && undefined.__param) || function (paramIndex, decorator) {\n    return function (target, key) { decorator(target, key, paramIndex); }\n};\nvar AlignedGridsService = /** @class */ (function (_super) {\n    __extends$L(AlignedGridsService, _super);\n    function AlignedGridsService() {\n        var _this = _super !== null && _super.apply(this, arguments) || this;\n        // flag to mark if we are consuming. to avoid cyclic events (ie other grid firing back to master\n        // while processing a master event) we mark this if consuming an event, and if we are, then\n        // we don't fire back any events.\n        _this.consuming = false;\n        return _this;\n    }\n    AlignedGridsService.prototype.setBeans = function (loggerFactory) {\n        this.logger = loggerFactory.create('AlignedGridsService');\n    };\n    AlignedGridsService.prototype.init = function () {\n        this.addManagedListener(this.eventService, Events.EVENT_COLUMN_MOVED, this.fireColumnEvent.bind(this));\n        this.addManagedListener(this.eventService, Events.EVENT_COLUMN_VISIBLE, this.fireColumnEvent.bind(this));\n        this.addManagedListener(this.eventService, Events.EVENT_COLUMN_PINNED, this.fireColumnEvent.bind(this));\n        this.addManagedListener(this.eventService, Events.EVENT_COLUMN_GROUP_OPENED, this.fireColumnEvent.bind(this));\n        this.addManagedListener(this.eventService, Events.EVENT_COLUMN_RESIZED, this.fireColumnEvent.bind(this));\n        this.addManagedListener(this.eventService, Events.EVENT_BODY_SCROLL, this.fireScrollEvent.bind(this));\n    };\n    // common logic across all the fire methods\n    AlignedGridsService.prototype.fireEvent = function (callback) {\n        // if we are already consuming, then we are acting on an event from a master,\n        // so we don't cause a cyclic firing of events\n        if (this.consuming) {\n            return;\n        }\n        // iterate through the aligned grids, and pass each aligned grid service to the callback\n        var otherGrids = this.gridOptionsService.get('alignedGrids');\n        if (otherGrids) {\n            otherGrids.forEach(function (otherGridOptions) {\n                if (otherGridOptions.api) {\n                    var alignedGridService = otherGridOptions.api.__getAlignedGridService();\n                    callback(alignedGridService);\n                }\n            });\n        }\n    };\n    // common logic across all consume methods. very little common logic, however extracting\n    // guarantees consistency across the methods.\n    AlignedGridsService.prototype.onEvent = function (callback) {\n        this.consuming = true;\n        callback();\n        this.consuming = false;\n    };\n    AlignedGridsService.prototype.fireColumnEvent = function (event) {\n        this.fireEvent(function (alignedGridsService) {\n            alignedGridsService.onColumnEvent(event);\n        });\n    };\n    AlignedGridsService.prototype.fireScrollEvent = function (event) {\n        if (event.direction !== 'horizontal') {\n            return;\n        }\n        this.fireEvent(function (alignedGridsService) {\n            alignedGridsService.onScrollEvent(event);\n        });\n    };\n    AlignedGridsService.prototype.onScrollEvent = function (event) {\n        var _this = this;\n        this.onEvent(function () {\n            var gridBodyCon = _this.ctrlsService.getGridBodyCtrl();\n            gridBodyCon.getScrollFeature().setHorizontalScrollPosition(event.left);\n        });\n    };\n    AlignedGridsService.prototype.getMasterColumns = function (event) {\n        var result = [];\n        if (event.columns) {\n            event.columns.forEach(function (column) {\n                result.push(column);\n            });\n        }\n        else if (event.column) {\n            result.push(event.column);\n        }\n        return result;\n    };\n    AlignedGridsService.prototype.getColumnIds = function (event) {\n        var result = [];\n        if (event.columns) {\n            event.columns.forEach(function (column) {\n                result.push(column.getColId());\n            });\n        }\n        else if (event.column) {\n            result.push(event.column.getColId());\n        }\n        return result;\n    };\n    AlignedGridsService.prototype.onColumnEvent = function (event) {\n        var _this = this;\n        this.onEvent(function () {\n            switch (event.type) {\n                case Events.EVENT_COLUMN_MOVED:\n                case Events.EVENT_COLUMN_VISIBLE:\n                case Events.EVENT_COLUMN_PINNED:\n                case Events.EVENT_COLUMN_RESIZED:\n                    var colEvent = event;\n                    _this.processColumnEvent(colEvent);\n                    break;\n                case Events.EVENT_COLUMN_GROUP_OPENED:\n                    var groupOpenedEvent = event;\n                    _this.processGroupOpenedEvent(groupOpenedEvent);\n                    break;\n                case Events.EVENT_COLUMN_PIVOT_CHANGED:\n                    // we cannot support pivoting with aligned grids as the columns will be out of sync as the\n                    // grids will have columns created based on the row data of the grid.\n                    console.warn('AG Grid: pivoting is not supported with aligned grids. ' +\n                        'You can only use one of these features at a time in a grid.');\n                    break;\n            }\n        });\n    };\n    AlignedGridsService.prototype.processGroupOpenedEvent = function (groupOpenedEvent) {\n        // likewise for column group\n        var masterColumnGroup = groupOpenedEvent.columnGroup;\n        var otherColumnGroup = null;\n        if (masterColumnGroup) {\n            var groupId = masterColumnGroup.getGroupId();\n            otherColumnGroup = this.columnModel.getProvidedColumnGroup(groupId);\n        }\n        if (masterColumnGroup && !otherColumnGroup) {\n            return;\n        }\n        this.logger.log('onColumnEvent-> processing ' + groupOpenedEvent + ' expanded = ' + masterColumnGroup.isExpanded());\n        this.columnModel.setColumnGroupOpened(otherColumnGroup, masterColumnGroup.isExpanded(), \"alignedGridChanged\");\n    };\n    AlignedGridsService.prototype.processColumnEvent = function (colEvent) {\n        var _this = this;\n        var _a;\n        // the column in the event is from the master grid. need to\n        // look up the equivalent from this (other) grid\n        var masterColumn = colEvent.column;\n        var otherColumn = null;\n        if (masterColumn) {\n            otherColumn = this.columnModel.getPrimaryColumn(masterColumn.getColId());\n        }\n        // if event was with respect to a master column, that is not present in this\n        // grid, then we ignore the event\n        if (masterColumn && !otherColumn) {\n            return;\n        }\n        // in time, all the methods below should use the column ids, it's a more generic way\n        // of handling columns, and also allows for single or multi column events\n        var masterColumns = this.getMasterColumns(colEvent);\n        switch (colEvent.type) {\n            case Events.EVENT_COLUMN_MOVED:\n                // when the user moves columns via applyColumnState, we can't depend on moving specific columns\n                // to an index, as there maybe be many indexes columns moved to (as wasn't result of a mouse drag).\n                // so only way to be sure is match the order of all columns using Column State.\n                {\n                    var movedEvent = colEvent;\n                    var srcColState = colEvent.columnApi.getColumnState();\n                    var destColState = srcColState.map(function (s) { return ({ colId: s.colId }); });\n                    this.columnModel.applyColumnState({ state: destColState, applyOrder: true }, \"alignedGridChanged\");\n                    this.logger.log(\"onColumnEvent-> processing \" + colEvent.type + \" toIndex = \" + movedEvent.toIndex);\n                }\n                break;\n            case Events.EVENT_COLUMN_VISIBLE:\n                // when the user changes visibility via applyColumnState, we can't depend on visibility flag in event\n                // as there maybe be mix of true/false (as wasn't result of a mouse click to set visiblity).\n                // so only way to be sure is match the visibility of all columns using Column State.\n                {\n                    var visibleEvent = colEvent;\n                    var srcColState = colEvent.columnApi.getColumnState();\n                    var destColState = srcColState.map(function (s) { return ({ colId: s.colId, hide: s.hide }); });\n                    this.columnModel.applyColumnState({ state: destColState }, \"alignedGridChanged\");\n                    this.logger.log(\"onColumnEvent-> processing \" + colEvent.type + \" visible = \" + visibleEvent.visible);\n                }\n                break;\n            case Events.EVENT_COLUMN_PINNED:\n                {\n                    var pinnedEvent = colEvent;\n                    var srcColState = colEvent.columnApi.getColumnState();\n                    var destColState = srcColState.map(function (s) { return ({ colId: s.colId, pinned: s.pinned }); });\n                    this.columnModel.applyColumnState({ state: destColState }, \"alignedGridChanged\");\n                    this.logger.log(\"onColumnEvent-> processing \" + colEvent.type + \" pinned = \" + pinnedEvent.pinned);\n                }\n                break;\n            case Events.EVENT_COLUMN_RESIZED:\n                var resizedEvent = colEvent;\n                var columnWidths_1 = {};\n                masterColumns.forEach(function (column) {\n                    _this.logger.log(\"onColumnEvent-> processing \" + colEvent.type + \" actualWidth = \" + column.getActualWidth());\n                    columnWidths_1[column.getId()] = { key: column.getColId(), newWidth: column.getActualWidth() };\n                });\n                // don't set flex columns width\n                (_a = resizedEvent.flexColumns) === null || _a === void 0 ? void 0 : _a.forEach(function (col) {\n                    if (columnWidths_1[col.getId()]) {\n                        delete columnWidths_1[col.getId()];\n                    }\n                });\n                this.columnModel.setColumnWidths(Object.values(columnWidths_1), false, resizedEvent.finished, \"alignedGridChanged\");\n                break;\n        }\n        var gridBodyCon = this.ctrlsService.getGridBodyCtrl();\n        var isVerticalScrollShowing = gridBodyCon.isVerticalScrollShowing();\n        var alignedGrids = this.gridOptionsService.get('alignedGrids');\n        if (alignedGrids) {\n            alignedGrids.forEach(function (grid) {\n                if (grid.api) {\n                    grid.api.setAlwaysShowVerticalScroll(isVerticalScrollShowing);\n                }\n            });\n        }\n    };\n    __decorate$N([\n        Autowired('columnModel')\n    ], AlignedGridsService.prototype, \"columnModel\", void 0);\n    __decorate$N([\n        Autowired('ctrlsService')\n    ], AlignedGridsService.prototype, \"ctrlsService\", void 0);\n    __decorate$N([\n        __param$6(0, Qualifier('loggerFactory'))\n    ], AlignedGridsService.prototype, \"setBeans\", null);\n    __decorate$N([\n        PostConstruct\n    ], AlignedGridsService.prototype, \"init\", null);\n    AlignedGridsService = __decorate$N([\n        Bean('alignedGridsService')\n    ], AlignedGridsService);\n    return AlignedGridsService;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$K = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __assign$2 = (undefined && undefined.__assign) || function () {\n    __assign$2 = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign$2.apply(this, arguments);\n};\nvar __decorate$M = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __param$5 = (undefined && undefined.__param) || function (paramIndex, decorator) {\n    return function (target, key) { decorator(target, key, paramIndex); }\n};\nvar __read$8 = (undefined && undefined.__read) || function (o, n) {\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n    if (!m) return o;\n    var i = m.call(o), r, ar = [], e;\n    try {\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n    }\n    catch (error) { e = { error: error }; }\n    finally {\n        try {\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\n        }\n        finally { if (e) throw e.error; }\n    }\n    return ar;\n};\nvar SelectionService = /** @class */ (function (_super) {\n    __extends$K(SelectionService, _super);\n    function SelectionService() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    SelectionService.prototype.setBeans = function (loggerFactory) {\n        this.logger = loggerFactory.create('selectionService');\n        this.reset();\n    };\n    SelectionService.prototype.init = function () {\n        var _this = this;\n        this.groupSelectsChildren = this.gridOptionsService.is('groupSelectsChildren');\n        this.addManagedPropertyListener('groupSelectsChildren', function (propChange) { return _this.groupSelectsChildren = propChange.currentValue; });\n        this.rowSelection = this.gridOptionsService.get('rowSelection');\n        this.addManagedPropertyListener('rowSelection', function (propChange) { return _this.rowSelection = propChange.currentValue; });\n        this.addManagedListener(this.eventService, Events.EVENT_ROW_SELECTED, this.onRowSelected.bind(this));\n    };\n    SelectionService.prototype.isMultiselect = function () {\n        return this.rowSelection === 'multiple';\n    };\n    SelectionService.prototype.setNodeSelected = function (params) {\n        var _a;\n        var newValue = params.newValue, clearSelection = params.clearSelection, suppressFinishActions = params.suppressFinishActions, rangeSelect = params.rangeSelect; params.event; var node = params.node, _b = params.source, source = _b === void 0 ? 'api' : _b;\n        // groupSelectsFiltered only makes sense when group selects children\n        var groupSelectsFiltered = this.groupSelectsChildren && (params.groupSelectsFiltered === true);\n        if (node.id === undefined) {\n            console.warn('AG Grid: cannot select node until id for node is known');\n            return 0;\n        }\n        if (node.rowPinned) {\n            console.warn('AG Grid: cannot select pinned rows');\n            return 0;\n        }\n        // if we are a footer, we don't do selection, just pass the info\n        // to the sibling (the parent of the group)\n        if (node.footer) {\n            return this.setNodeSelected(__assign$2(__assign$2({}, params), { node: node.sibling }));\n        }\n        var lastSelectedNode = this.getLastSelectedNode();\n        if (rangeSelect && lastSelectedNode) {\n            var newRowClicked = lastSelectedNode !== node;\n            if (newRowClicked && this.isMultiselect()) {\n                var nodesChanged = this.selectRange(node, lastSelectedNode, params.newValue, source);\n                this.setLastSelectedNode(node);\n                return nodesChanged;\n            }\n        }\n        // when groupSelectsFiltered, then this node may end up intermediate despite\n        // trying to set it to true / false. this group will be calculated further on\n        // down when we call calculatedSelectedForAllGroupNodes(). we need to skip it\n        // here, otherwise the updatedCount would include it.\n        var skipThisNode = groupSelectsFiltered && node.group;\n        var updatedCount = 0;\n        if (!skipThisNode) {\n            var thisNodeWasSelected = node.selectThisNode(newValue, params.event, source);\n            if (thisNodeWasSelected) {\n                updatedCount++;\n            }\n        }\n        if (this.groupSelectsChildren && ((_a = node.childrenAfterGroup) === null || _a === void 0 ? void 0 : _a.length)) {\n            updatedCount += this.selectChildren(node, newValue, groupSelectsFiltered, source);\n        }\n        // clear other nodes if not doing multi select\n        if (!suppressFinishActions) {\n            var clearOtherNodes = newValue && (clearSelection || !this.isMultiselect());\n            if (clearOtherNodes) {\n                updatedCount += this.clearOtherNodes(node, source);\n            }\n            // only if we selected something, then update groups and fire events\n            if (updatedCount > 0) {\n                this.updateGroupsFromChildrenSelections(source);\n                // this is the very end of the 'action node', so we are finished all the updates,\n                // include any parent / child changes that this method caused\n                var event_1 = {\n                    type: Events.EVENT_SELECTION_CHANGED,\n                    source: source\n                };\n                this.eventService.dispatchEvent(event_1);\n            }\n            // so if user next does shift-select, we know where to start the selection from\n            if (newValue) {\n                this.setLastSelectedNode(node);\n            }\n        }\n        return updatedCount;\n    };\n    // selects all rows between this node and the last selected node (or the top if this is the first selection).\n    // not to be mixed up with 'cell range selection' where you drag the mouse, this is row range selection, by\n    // holding down 'shift'.\n    SelectionService.prototype.selectRange = function (fromNode, toNode, value, source) {\n        var _this = this;\n        if (value === void 0) { value = true; }\n        var nodesToSelect = this.rowModel.getNodesInRangeForSelection(fromNode, toNode);\n        var updatedCount = 0;\n        nodesToSelect.forEach(function (rowNode) {\n            if (rowNode.group && _this.groupSelectsChildren || (value === false && fromNode === rowNode)) {\n                return;\n            }\n            var nodeWasSelected = rowNode.selectThisNode(value, undefined, source);\n            if (nodeWasSelected) {\n                updatedCount++;\n            }\n        });\n        this.updateGroupsFromChildrenSelections(source);\n        var event = {\n            type: Events.EVENT_SELECTION_CHANGED,\n            source: source\n        };\n        this.eventService.dispatchEvent(event);\n        return updatedCount;\n    };\n    SelectionService.prototype.selectChildren = function (node, newValue, groupSelectsFiltered, source) {\n        var children = groupSelectsFiltered ? node.childrenAfterAggFilter : node.childrenAfterGroup;\n        if (_.missing(children)) {\n            return 0;\n        }\n        var updatedCount = 0;\n        for (var i = 0; i < children.length; i++) {\n            updatedCount += children[i].setSelectedParams({\n                newValue: newValue,\n                clearSelection: false,\n                suppressFinishActions: true,\n                groupSelectsFiltered: groupSelectsFiltered,\n                source: source\n            });\n        }\n        return updatedCount;\n    };\n    SelectionService.prototype.setLastSelectedNode = function (rowNode) {\n        this.lastSelectedNode = rowNode;\n    };\n    SelectionService.prototype.getLastSelectedNode = function () {\n        return this.lastSelectedNode;\n    };\n    SelectionService.prototype.getSelectedNodes = function () {\n        var selectedNodes = [];\n        iterateObject(this.selectedNodes, function (key, rowNode) {\n            if (rowNode) {\n                selectedNodes.push(rowNode);\n            }\n        });\n        return selectedNodes;\n    };\n    SelectionService.prototype.getSelectedRows = function () {\n        var selectedRows = [];\n        iterateObject(this.selectedNodes, function (key, rowNode) {\n            if (rowNode && rowNode.data) {\n                selectedRows.push(rowNode.data);\n            }\n        });\n        return selectedRows;\n    };\n    SelectionService.prototype.getSelectionCount = function () {\n        return Object.values(this.selectedNodes).length;\n    };\n    /**\n     * This method is used by the CSRM to remove groups which are being disposed of,\n     * events do not need fired in this case\n     */\n    SelectionService.prototype.filterFromSelection = function (predicate) {\n        var newSelectedNodes = {};\n        Object.entries(this.selectedNodes).forEach(function (_a) {\n            var _b = __read$8(_a, 2), key = _b[0], node = _b[1];\n            var passesPredicate = node && predicate(node);\n            if (passesPredicate) {\n                newSelectedNodes[key] = node;\n            }\n        });\n        this.selectedNodes = newSelectedNodes;\n    };\n    // should only be called if groupSelectsChildren=true\n    SelectionService.prototype.updateGroupsFromChildrenSelections = function (source, changedPath) {\n        // we only do this when group selection state depends on selected children\n        if (!this.groupSelectsChildren) {\n            return false;\n        }\n        // also only do it if CSRM (code should never allow this anyway)\n        if (this.rowModel.getType() !== 'clientSide') {\n            return false;\n        }\n        var clientSideRowModel = this.rowModel;\n        var rootNode = clientSideRowModel.getRootNode();\n        if (!changedPath) {\n            changedPath = new ChangedPath(true, rootNode);\n            changedPath.setInactive();\n        }\n        var selectionChanged = false;\n        changedPath.forEachChangedNodeDepthFirst(function (rowNode) {\n            if (rowNode !== rootNode) {\n                var selected = rowNode.calculateSelectedFromChildren();\n                selectionChanged = rowNode.selectThisNode(selected === null ? false : selected, undefined, source) || selectionChanged;\n            }\n        });\n        return selectionChanged;\n    };\n    SelectionService.prototype.clearOtherNodes = function (rowNodeToKeepSelected, source) {\n        var _this = this;\n        var groupsToRefresh = {};\n        var updatedCount = 0;\n        iterateObject(this.selectedNodes, function (key, otherRowNode) {\n            if (otherRowNode && otherRowNode.id !== rowNodeToKeepSelected.id) {\n                var rowNode = _this.selectedNodes[otherRowNode.id];\n                updatedCount += rowNode.setSelectedParams({\n                    newValue: false,\n                    clearSelection: false,\n                    suppressFinishActions: true,\n                    source: source\n                });\n                if (_this.groupSelectsChildren && otherRowNode.parent) {\n                    groupsToRefresh[otherRowNode.parent.id] = otherRowNode.parent;\n                }\n            }\n        });\n        iterateObject(groupsToRefresh, function (key, group) {\n            var selected = group.calculateSelectedFromChildren();\n            group.selectThisNode(selected === null ? false : selected, undefined, source);\n        });\n        return updatedCount;\n    };\n    SelectionService.prototype.onRowSelected = function (event) {\n        var rowNode = event.node;\n        // we do not store the group rows when the groups select children\n        if (this.groupSelectsChildren && rowNode.group) {\n            return;\n        }\n        if (rowNode.isSelected()) {\n            this.selectedNodes[rowNode.id] = rowNode;\n        }\n        else {\n            delete this.selectedNodes[rowNode.id];\n        }\n    };\n    SelectionService.prototype.syncInRowNode = function (rowNode, oldNode) {\n        this.syncInOldRowNode(rowNode, oldNode);\n        this.syncInNewRowNode(rowNode);\n    };\n    // if the id has changed for the node, then this means the rowNode\n    // is getting used for a different data item, which breaks\n    // our selectedNodes, as the node now is mapped by the old id\n    // which is inconsistent. so to keep the old node as selected,\n    // we swap in the clone (with the old id and old data). this means\n    // the oldNode is effectively a daemon we keep a reference to,\n    // so if client calls api.getSelectedNodes(), it gets the daemon\n    // in the result. when the client un-selects, the reference to the\n    // daemon is removed. the daemon, because it's an oldNode, is not\n    // used by the grid for rendering, it's a copy of what the node used\n    // to be like before the id was changed.\n    SelectionService.prototype.syncInOldRowNode = function (rowNode, oldNode) {\n        var oldNodeHasDifferentId = exists(oldNode) && (rowNode.id !== oldNode.id);\n        if (oldNodeHasDifferentId && oldNode) {\n            var id = oldNode.id;\n            var oldNodeSelected = this.selectedNodes[id] == rowNode;\n            if (oldNodeSelected) {\n                this.selectedNodes[oldNode.id] = oldNode;\n            }\n        }\n    };\n    SelectionService.prototype.syncInNewRowNode = function (rowNode) {\n        if (exists(this.selectedNodes[rowNode.id])) {\n            rowNode.setSelectedInitialValue(true);\n            this.selectedNodes[rowNode.id] = rowNode;\n        }\n        else {\n            rowNode.setSelectedInitialValue(false);\n        }\n    };\n    SelectionService.prototype.reset = function () {\n        this.logger.log('reset');\n        this.selectedNodes = {};\n        this.lastSelectedNode = null;\n    };\n    // returns a list of all nodes at 'best cost' - a feature to be used\n    // with groups / trees. if a group has all it's children selected,\n    // then the group appears in the result, but not the children.\n    // Designed for use with 'children' as the group selection type,\n    // where groups don't actually appear in the selection normally.\n    SelectionService.prototype.getBestCostNodeSelection = function () {\n        if (this.rowModel.getType() !== 'clientSide') {\n            // Error logged as part of gridApi as that is only call point for this method.\n            return;\n        }\n        var clientSideRowModel = this.rowModel;\n        var topLevelNodes = clientSideRowModel.getTopLevelNodes();\n        if (topLevelNodes === null) {\n            return;\n        }\n        var result = [];\n        // recursive function, to find the selected nodes\n        function traverse(nodes) {\n            for (var i = 0, l = nodes.length; i < l; i++) {\n                var node = nodes[i];\n                if (node.isSelected()) {\n                    result.push(node);\n                }\n                else {\n                    // if not selected, then if it's a group, and the group\n                    // has children, continue to search for selections\n                    var maybeGroup = node;\n                    if (maybeGroup.group && maybeGroup.children) {\n                        traverse(maybeGroup.children);\n                    }\n                }\n            }\n        }\n        traverse(topLevelNodes);\n        return result;\n    };\n    SelectionService.prototype.isEmpty = function () {\n        var count = 0;\n        iterateObject(this.selectedNodes, function (nodeId, rowNode) {\n            if (rowNode) {\n                count++;\n            }\n        });\n        return count === 0;\n    };\n    SelectionService.prototype.deselectAllRowNodes = function (params) {\n        var callback = function (rowNode) { return rowNode.selectThisNode(false, undefined, source); };\n        var rowModelClientSide = this.rowModel.getType() === 'clientSide';\n        var source = params.source, justFiltered = params.justFiltered, justCurrentPage = params.justCurrentPage;\n        if (justCurrentPage || justFiltered) {\n            if (!rowModelClientSide) {\n                console.error(\"AG Grid: selecting just filtered only works when gridOptions.rowModelType='clientSide'\");\n                return;\n            }\n            this.getNodesToSelect(justFiltered, justCurrentPage).forEach(callback);\n        }\n        else {\n            iterateObject(this.selectedNodes, function (id, rowNode) {\n                // remember the reference can be to null, as we never 'delete' from the map\n                if (rowNode) {\n                    callback(rowNode);\n                }\n            });\n            // this clears down the map (whereas above only sets the items in map to 'undefined')\n            this.reset();\n        }\n        // the above does not clean up the parent rows if they are selected\n        if (rowModelClientSide && this.groupSelectsChildren) {\n            this.updateGroupsFromChildrenSelections(source);\n        }\n        var event = {\n            type: Events.EVENT_SELECTION_CHANGED,\n            source: source\n        };\n        this.eventService.dispatchEvent(event);\n    };\n    SelectionService.prototype.getSelectAllState = function (justFiltered, justCurrentPage) {\n        var _this = this;\n        var selectedCount = 0;\n        var notSelectedCount = 0;\n        var callback = function (node) {\n            if (_this.groupSelectsChildren && node.group) {\n                return;\n            }\n            if (node.isSelected()) {\n                selectedCount++;\n            }\n            else if (!node.selectable) ;\n            else {\n                notSelectedCount++;\n            }\n        };\n        this.getNodesToSelect(justFiltered, justCurrentPage).forEach(callback);\n        // if no rows, always have it unselected\n        if (selectedCount === 0 && notSelectedCount === 0) {\n            return false;\n        }\n        // if mix of selected and unselected, this is indeterminate\n        if (selectedCount > 0 && notSelectedCount > 0) {\n            return null;\n        }\n        // only selected\n        return selectedCount > 0;\n    };\n    /**\n     * @param justFiltered whether to just include nodes which have passed the filter\n     * @param justCurrentPage whether to just include nodes on the current page\n     * @returns all nodes including unselectable nodes which are the target of this selection attempt\n     */\n    SelectionService.prototype.getNodesToSelect = function (justFiltered, justCurrentPage) {\n        var _this = this;\n        if (justFiltered === void 0) { justFiltered = false; }\n        if (justCurrentPage === void 0) { justCurrentPage = false; }\n        if (this.rowModel.getType() !== 'clientSide') {\n            throw new Error(\"selectAll only available when rowModelType='clientSide', ie not \" + this.rowModel.getType());\n        }\n        var nodes = [];\n        if (justCurrentPage) {\n            this.paginationProxy.forEachNodeOnPage(function (node) {\n                if (!node.group) {\n                    nodes.push(node);\n                    return;\n                }\n                if (!node.expanded) {\n                    // even with groupSelectsChildren, do this recursively as only the filtered children\n                    // are considered as the current page\n                    var recursivelyAddChildren_1 = function (child) {\n                        var _a;\n                        nodes.push(child);\n                        if ((_a = child.childrenAfterFilter) === null || _a === void 0 ? void 0 : _a.length) {\n                            child.childrenAfterFilter.forEach(recursivelyAddChildren_1);\n                        }\n                    };\n                    recursivelyAddChildren_1(node);\n                    return;\n                }\n                // if the group node is expanded, the pagination proxy will include the visible nodes to select\n                if (!_this.groupSelectsChildren) {\n                    nodes.push(node);\n                }\n            });\n            return nodes;\n        }\n        var clientSideRowModel = this.rowModel;\n        if (justFiltered) {\n            clientSideRowModel.forEachNodeAfterFilter(function (node) {\n                nodes.push(node);\n            });\n            return nodes;\n        }\n        clientSideRowModel.forEachNode(function (node) {\n            nodes.push(node);\n        });\n        return nodes;\n    };\n    SelectionService.prototype.selectAllRowNodes = function (params) {\n        if (this.rowModel.getType() !== 'clientSide') {\n            throw new Error(\"selectAll only available when rowModelType='clientSide', ie not \" + this.rowModel.getType());\n        }\n        var source = params.source, justFiltered = params.justFiltered, justCurrentPage = params.justCurrentPage;\n        var callback = function (rowNode) { return rowNode.selectThisNode(true, undefined, source); };\n        this.getNodesToSelect(justFiltered, justCurrentPage).forEach(callback);\n        // the above does not clean up the parent rows if they are selected\n        if (this.rowModel.getType() === 'clientSide' && this.groupSelectsChildren) {\n            this.updateGroupsFromChildrenSelections(source);\n        }\n        var event = {\n            type: Events.EVENT_SELECTION_CHANGED,\n            source: source\n        };\n        this.eventService.dispatchEvent(event);\n    };\n    // Used by SSRM\n    SelectionService.prototype.getServerSideSelectionState = function () {\n        return null;\n    };\n    SelectionService.prototype.setServerSideSelectionState = function (state) { };\n    __decorate$M([\n        Autowired('rowModel')\n    ], SelectionService.prototype, \"rowModel\", void 0);\n    __decorate$M([\n        Autowired('paginationProxy')\n    ], SelectionService.prototype, \"paginationProxy\", void 0);\n    __decorate$M([\n        __param$5(0, Qualifier('loggerFactory'))\n    ], SelectionService.prototype, \"setBeans\", null);\n    __decorate$M([\n        PostConstruct\n    ], SelectionService.prototype, \"init\", null);\n    SelectionService = __decorate$M([\n        Bean('selectionService')\n    ], SelectionService);\n    return SelectionService;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __decorate$L = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar ColumnApi = /** @class */ (function () {\n    function ColumnApi() {\n    }\n    /** Gets the grid to size the columns to the specified width in pixels, e.g. `sizeColumnsToFit(900)`. To have the grid fit the columns to the grid's width, use the Grid API `gridApi.sizeColumnsToFit()` instead. */\n    ColumnApi.prototype.sizeColumnsToFit = function (gridWidth) {\n        // AG-3403 validate that gridWidth is provided because this method has the same name as\n        // a method on the grid API that takes no arguments, and it's easy to confuse the two\n        if (typeof gridWidth === \"undefined\") {\n            console.error('AG Grid: missing parameter to columnApi.sizeColumnsToFit(gridWidth)');\n        }\n        this.columnModel.sizeColumnsToFit(gridWidth, 'api');\n    };\n    /** Call this if you want to open or close a column group. */\n    ColumnApi.prototype.setColumnGroupOpened = function (group, newValue) { this.columnModel.setColumnGroupOpened(group, newValue, 'api'); };\n    /** Returns the column group with the given name. */\n    ColumnApi.prototype.getColumnGroup = function (name, instanceId) { return this.columnModel.getColumnGroup(name, instanceId); };\n    /** Returns the provided column group with the given name. */\n    ColumnApi.prototype.getProvidedColumnGroup = function (name) { return this.columnModel.getProvidedColumnGroup(name); };\n    /** Returns the display name for a column. Useful if you are doing your own header rendering and want the grid to work out if `headerValueGetter` is used, or if you are doing your own column management GUI, to know what to show as the column name. */\n    ColumnApi.prototype.getDisplayNameForColumn = function (column, location) { return this.columnModel.getDisplayNameForColumn(column, location) || ''; };\n    /** Returns the display name for a column group (when grouping columns). */\n    ColumnApi.prototype.getDisplayNameForColumnGroup = function (columnGroup, location) { return this.columnModel.getDisplayNameForColumnGroup(columnGroup, location) || ''; };\n    /** Returns the column with the given `colKey`, which can either be the `colId` (a string) or the `colDef` (an object). */\n    ColumnApi.prototype.getColumn = function (key) { return this.columnModel.getPrimaryColumn(key); };\n    /** Returns all the columns, regardless of visible or not. */\n    ColumnApi.prototype.getColumns = function () { return this.columnModel.getAllPrimaryColumns(); };\n    /** Applies the state of the columns from a previous state. Returns `false` if one or more columns could not be found. */\n    ColumnApi.prototype.applyColumnState = function (params) { return this.columnModel.applyColumnState(params, 'api'); };\n    /** Gets the state of the columns. Typically used when saving column state. */\n    ColumnApi.prototype.getColumnState = function () { return this.columnModel.getColumnState(); };\n    /** Sets the state back to match the originally provided column definitions. */\n    ColumnApi.prototype.resetColumnState = function () { this.columnModel.resetColumnState('api'); };\n    /** Gets the state of the column groups. Typically used when saving column group state. */\n    ColumnApi.prototype.getColumnGroupState = function () { return this.columnModel.getColumnGroupState(); };\n    /** Sets the state of the column group state from a previous state. */\n    ColumnApi.prototype.setColumnGroupState = function (stateItems) { this.columnModel.setColumnGroupState(stateItems, 'api'); };\n    /** Sets the state back to match the originally provided column definitions. */\n    ColumnApi.prototype.resetColumnGroupState = function () { this.columnModel.resetColumnGroupState('api'); };\n    /** Returns `true` if pinning left or right, otherwise `false`. */\n    ColumnApi.prototype.isPinning = function () { return this.columnModel.isPinningLeft() || this.columnModel.isPinningRight(); };\n    /** Returns `true` if pinning left, otherwise `false`. */\n    ColumnApi.prototype.isPinningLeft = function () { return this.columnModel.isPinningLeft(); };\n    /** Returns `true` if pinning right, otherwise `false`. */\n    ColumnApi.prototype.isPinningRight = function () { return this.columnModel.isPinningRight(); };\n    /** Returns the column to the right of the provided column, taking into consideration open / closed column groups and visible columns. This is useful if you need to know what column is beside yours e.g. if implementing your own cell navigation. */\n    ColumnApi.prototype.getDisplayedColAfter = function (col) { return this.columnModel.getDisplayedColAfter(col); };\n    /** Same as `getVisibleColAfter` except gives column to the left. */\n    ColumnApi.prototype.getDisplayedColBefore = function (col) { return this.columnModel.getDisplayedColBefore(col); };\n    /** Sets the visibility of a column. Key can be the column ID or `Column` object. */\n    ColumnApi.prototype.setColumnVisible = function (key, visible) { this.columnModel.setColumnVisible(key, visible, 'api'); };\n    /** Same as `setColumnVisible`, but provide a list of column keys. */\n    ColumnApi.prototype.setColumnsVisible = function (keys, visible) { this.columnModel.setColumnsVisible(keys, visible, 'api'); };\n    /** Sets the column pinned / unpinned. Key can be the column ID, field, `ColDef` object or `Column` object. */\n    ColumnApi.prototype.setColumnPinned = function (key, pinned) { this.columnModel.setColumnPinned(key, pinned, 'api'); };\n    /** Same as `setColumnPinned`, but provide a list of column keys. */\n    ColumnApi.prototype.setColumnsPinned = function (keys, pinned) { this.columnModel.setColumnsPinned(keys, pinned, 'api'); };\n    /**\n     * Returns all the grid columns, same as `getColumns()`, except\n     *\n     *  a) it has the order of the columns that are presented in the grid\n     *\n     *  b) it's after the 'pivot' step, so if pivoting, has the value columns for the pivot.\n     */\n    ColumnApi.prototype.getAllGridColumns = function () { return this.columnModel.getAllGridColumns(); };\n    /** Same as `getAllDisplayedColumns` but just for the pinned left portion of the grid. */\n    ColumnApi.prototype.getDisplayedLeftColumns = function () { return this.columnModel.getDisplayedLeftColumns(); };\n    /** Same as `getAllDisplayedColumns` but just for the center portion of the grid. */\n    ColumnApi.prototype.getDisplayedCenterColumns = function () { return this.columnModel.getDisplayedCenterColumns(); };\n    /** Same as `getAllDisplayedColumns` but just for the pinned right portion of the grid. */\n    ColumnApi.prototype.getDisplayedRightColumns = function () { return this.columnModel.getDisplayedRightColumns(); };\n    /** Returns all columns currently displayed (e.g. are visible and if in a group, the group is showing the columns) for the pinned left, centre and pinned right portions of the grid. */\n    ColumnApi.prototype.getAllDisplayedColumns = function () { return this.columnModel.getAllDisplayedColumns(); };\n    /** Same as `getAllGridColumns()`, except only returns rendered columns, i.e. columns that are not within the viewport and therefore not rendered, due to column virtualisation, are not displayed. */\n    ColumnApi.prototype.getAllDisplayedVirtualColumns = function () { return this.columnModel.getViewportColumns(); };\n    /** Moves a column to `toIndex`. The column is first removed, then added at the `toIndex` location, thus index locations will change to the right of the column after the removal. */\n    ColumnApi.prototype.moveColumn = function (key, toIndex) {\n        this.columnModel.moveColumn(key, toIndex, 'api');\n    };\n    /** Same as `moveColumn` but works on index locations. */\n    ColumnApi.prototype.moveColumnByIndex = function (fromIndex, toIndex) { this.columnModel.moveColumnByIndex(fromIndex, toIndex, 'api'); };\n    /** Same as `moveColumn` but works on list. */\n    ColumnApi.prototype.moveColumns = function (columnsToMoveKeys, toIndex) { this.columnModel.moveColumns(columnsToMoveKeys, toIndex, 'api'); };\n    /** Move the column to a new position in the row grouping order. */\n    ColumnApi.prototype.moveRowGroupColumn = function (fromIndex, toIndex) { this.columnModel.moveRowGroupColumn(fromIndex, toIndex); };\n    /** Sets the agg function for a column. `aggFunc` can be one of the built-in aggregations or a custom aggregation by name or direct function. */\n    ColumnApi.prototype.setColumnAggFunc = function (key, aggFunc) { this.columnModel.setColumnAggFunc(key, aggFunc); };\n    /** Sets the column width on a single column. The finished flag gets included in the resulting event and not used internally by the grid. The finished flag is intended for dragging, where a dragging action will produce many `columnWidth` events, so the consumer of events knows when it receives the last event in a stream. The finished parameter is optional, and defaults to `true`. */\n    ColumnApi.prototype.setColumnWidth = function (key, newWidth, finished, source) {\n        if (finished === void 0) { finished = true; }\n        this.columnModel.setColumnWidths([{ key: key, newWidth: newWidth }], false, finished, source);\n    };\n    /** Sets the column widths on multiple columns. This method offers better performance than calling `setColumnWidth` multiple times. The finished flag gets included in the resulting event and not used internally by the grid. The finished flag is intended for dragging, where a dragging action will produce many `columnWidth` events, so the consumer of events knows when it receives the last event in a stream. The finished parameter is optional, and defaults to `true`. */\n    ColumnApi.prototype.setColumnWidths = function (columnWidths, finished, source) {\n        if (finished === void 0) { finished = true; }\n        this.columnModel.setColumnWidths(columnWidths, false, finished, source);\n    };\n    /** Set the pivot mode. */\n    ColumnApi.prototype.setPivotMode = function (pivotMode) { this.columnModel.setPivotMode(pivotMode); };\n    /** Get the pivot mode. */\n    ColumnApi.prototype.isPivotMode = function () { return this.columnModel.isPivotMode(); };\n    /** Returns the pivot result column for the given `pivotKeys` and `valueColId`. Useful to then call operations on the pivot column. */\n    ColumnApi.prototype.getPivotResultColumn = function (pivotKeys, valueColKey) { return this.columnModel.getSecondaryPivotColumn(pivotKeys, valueColKey); };\n    /** Set the value columns to the provided list of columns. */\n    ColumnApi.prototype.setValueColumns = function (colKeys) { this.columnModel.setValueColumns(colKeys, 'api'); };\n    /** Get a list of the existing value columns. */\n    ColumnApi.prototype.getValueColumns = function () { return this.columnModel.getValueColumns(); };\n    /** Remove the given column from the existing set of value columns. */\n    ColumnApi.prototype.removeValueColumn = function (colKey) { this.columnModel.removeValueColumn(colKey, 'api'); };\n    /** Like `removeValueColumn` but remove the given list of columns from the existing set of value columns. */\n    ColumnApi.prototype.removeValueColumns = function (colKeys) { this.columnModel.removeValueColumns(colKeys, 'api'); };\n    /** Add the given column to the set of existing value columns. */\n    ColumnApi.prototype.addValueColumn = function (colKey) { this.columnModel.addValueColumn(colKey, 'api'); };\n    /** Like `addValueColumn` but add the given list of columns to the existing set of value columns. */\n    ColumnApi.prototype.addValueColumns = function (colKeys) { this.columnModel.addValueColumns(colKeys, 'api'); };\n    /** Set the row group columns. */\n    ColumnApi.prototype.setRowGroupColumns = function (colKeys) { this.columnModel.setRowGroupColumns(colKeys, 'api'); };\n    /** Remove a column from the row groups. */\n    ColumnApi.prototype.removeRowGroupColumn = function (colKey) { this.columnModel.removeRowGroupColumn(colKey, 'api'); };\n    /** Same as `removeRowGroupColumn` but provide a list of columns. */\n    ColumnApi.prototype.removeRowGroupColumns = function (colKeys) { this.columnModel.removeRowGroupColumns(colKeys, 'api'); };\n    /** Add a column to the row groups. */\n    ColumnApi.prototype.addRowGroupColumn = function (colKey) { this.columnModel.addRowGroupColumn(colKey, 'api'); };\n    /** Same as `addRowGroupColumn` but provide a list of columns. */\n    ColumnApi.prototype.addRowGroupColumns = function (colKeys) { this.columnModel.addRowGroupColumns(colKeys, 'api'); };\n    /** Get row group columns. */\n    ColumnApi.prototype.getRowGroupColumns = function () { return this.columnModel.getRowGroupColumns(); };\n    /** Set the pivot columns. */\n    ColumnApi.prototype.setPivotColumns = function (colKeys) { this.columnModel.setPivotColumns(colKeys, 'api'); };\n    /** Remove a pivot column. */\n    ColumnApi.prototype.removePivotColumn = function (colKey) { this.columnModel.removePivotColumn(colKey, 'api'); };\n    /** Same as `removePivotColumn` but provide a list of columns. */\n    ColumnApi.prototype.removePivotColumns = function (colKeys) { this.columnModel.removePivotColumns(colKeys, 'api'); };\n    /** Add a pivot column. */\n    ColumnApi.prototype.addPivotColumn = function (colKey) { this.columnModel.addPivotColumn(colKey, 'api'); };\n    /** Same as `addPivotColumn` but provide a list of columns. */\n    ColumnApi.prototype.addPivotColumns = function (colKeys) { this.columnModel.addPivotColumns(colKeys, 'api'); };\n    /** Get the pivot columns. */\n    ColumnApi.prototype.getPivotColumns = function () { return this.columnModel.getPivotColumns(); };\n    /** Same as `getAllDisplayedColumnGroups` but just for the pinned left portion of the grid. */\n    ColumnApi.prototype.getLeftDisplayedColumnGroups = function () { return this.columnModel.getDisplayedTreeLeft(); };\n    /** Same as `getAllDisplayedColumnGroups` but just for the center portion of the grid. */\n    ColumnApi.prototype.getCenterDisplayedColumnGroups = function () { return this.columnModel.getDisplayedTreeCentre(); };\n    /** Same as `getAllDisplayedColumnGroups` but just for the pinned right portion of the grid. */\n    ColumnApi.prototype.getRightDisplayedColumnGroups = function () { return this.columnModel.getDisplayedTreeRight(); };\n    /** Returns all 'root' column headers. If you are not grouping columns, these return the columns. If you are grouping, these return the top level groups - you can navigate down through each one to get the other lower level headers and finally the columns at the bottom. */\n    ColumnApi.prototype.getAllDisplayedColumnGroups = function () { return this.columnModel.getAllDisplayedTrees(); };\n    /** Auto-sizes a column based on its contents. */\n    ColumnApi.prototype.autoSizeColumn = function (key, skipHeader) { return this.columnModel.autoSizeColumn(key, skipHeader, 'api'); };\n    /** Same as `autoSizeColumn`, but provide a list of column keys. */\n    ColumnApi.prototype.autoSizeColumns = function (keys, skipHeader) {\n        this.columnModel.autoSizeColumns({ columns: keys, skipHeader: skipHeader });\n    };\n    /** Calls `autoSizeColumns` on all displayed columns. */\n    ColumnApi.prototype.autoSizeAllColumns = function (skipHeader) { this.columnModel.autoSizeAllColumns(skipHeader, 'api'); };\n    /** Set the pivot result columns. */\n    ColumnApi.prototype.setPivotResultColumns = function (colDefs) { this.columnModel.setSecondaryColumns(colDefs, 'api'); };\n    /** Returns the grid's pivot result columns. */\n    ColumnApi.prototype.getPivotResultColumns = function () { return this.columnModel.getSecondaryColumns(); };\n    ColumnApi.prototype.cleanDownReferencesToAvoidMemoryLeakInCaseApplicationIsKeepingReferenceToDestroyedGrid = function () {\n        // some users were raising support issues with regards memory leaks. the problem was the customers applications\n        // were keeping references to the API. trying to educate them all would be difficult, easier to just remove\n        // all references in the API so at least the core grid can be garbage collected.\n        //\n        // wait about 100ms before clearing down the references, in case user has some cleanup to do,\n        // and needs to deference the API first\n        setTimeout(_.removeAllReferences.bind(window, this, 'Column API'), 100);\n    };\n    /** @deprecated v28 Use `getColumns` instead */\n    ColumnApi.prototype.getAllColumns = function () {\n        logDeprecation('28.0', 'getAllColumns', 'getColumns');\n        return this.getColumns();\n    };\n    /** @deprecated v27 getOriginalColumnGroup is deprecated, use getProvidedColumnGroup. */\n    ColumnApi.prototype.getOriginalColumnGroup = function (name) {\n        logDeprecation('27.0', 'getOriginalColumnGroup', 'getProvidedColumnGroup');\n        return this.columnModel.getProvidedColumnGroup(name);\n    };\n    /** @deprecated v28 Use `getColumns` instead. */\n    ColumnApi.prototype.getPrimaryColumns = function () {\n        logDeprecation('28.0', 'getPrimaryColumns', 'getColumns');\n        return this.getColumns();\n    };\n    /** @deprecated v28 Use `getPivotResultColumns` instead. */\n    ColumnApi.prototype.getSecondaryColumns = function () {\n        logDeprecation('28.0', 'getSecondaryColumns', 'getPivotResultColumns');\n        return this.getPivotResultColumns();\n    };\n    /** @deprecated v28 Use `setPivotResultColumns` instead. */\n    ColumnApi.prototype.setSecondaryColumns = function (colDefs) {\n        logDeprecation('28.0', 'setSecondaryColumns', 'setPivotResultColumns');\n        this.setPivotResultColumns(colDefs);\n    };\n    /** @deprecated v28 Use `getPivotResultColumn` instead */\n    ColumnApi.prototype.getSecondaryPivotColumn = function (pivotKeys, valueColKey) {\n        logDeprecation('28.0', 'getSecondaryPivotColumn', 'getPivotResultColumn');\n        return this.getPivotResultColumn(pivotKeys, valueColKey);\n    };\n    __decorate$L([\n        Autowired('columnModel')\n    ], ColumnApi.prototype, \"columnModel\", void 0);\n    __decorate$L([\n        PreDestroy\n    ], ColumnApi.prototype, \"cleanDownReferencesToAvoidMemoryLeakInCaseApplicationIsKeepingReferenceToDestroyedGrid\", null);\n    ColumnApi = __decorate$L([\n        Bean('columnApi')\n    ], ColumnApi);\n    return ColumnApi;\n}());\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$J = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$K = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar ValueService = /** @class */ (function (_super) {\n    __extends$J(ValueService, _super);\n    function ValueService() {\n        var _this = _super !== null && _super.apply(this, arguments) || this;\n        _this.initialised = false;\n        return _this;\n    }\n    ValueService.prototype.init = function () {\n        var _this = this;\n        this.cellExpressions = this.gridOptionsService.is('enableCellExpressions');\n        this.isTreeData = this.gridOptionsService.is('treeData');\n        this.initialised = true;\n        // We listen to our own event and use it to call the columnSpecific callback,\n        // this way the handler calls are correctly interleaved with other global events\n        this.eventService.addEventListener(Events.EVENT_CELL_VALUE_CHANGED, function (event) { return _this.callColumnCellValueChangedHandler(event); }, this.gridOptionsService.useAsyncEvents());\n        this.addManagedPropertyListener('treeData', function (propChange) { return _this.isTreeData = propChange.currentValue; });\n    };\n    ValueService.prototype.getValue = function (column, rowNode, forFilter, ignoreAggData) {\n        if (forFilter === void 0) { forFilter = false; }\n        if (ignoreAggData === void 0) { ignoreAggData = false; }\n        // hack - the grid is getting refreshed before this bean gets initialised, race condition.\n        // really should have a way so they get initialised in the right order???\n        if (!this.initialised) {\n            this.init();\n        }\n        if (!rowNode) {\n            return;\n        }\n        // pull these out to make code below easier to read\n        var colDef = column.getColDef();\n        var field = colDef.field;\n        var colId = column.getColId();\n        var data = rowNode.data;\n        var result;\n        // if there is a value getter, this gets precedence over a field\n        var groupDataExists = rowNode.groupData && rowNode.groupData[colId] !== undefined;\n        var aggDataExists = !ignoreAggData && rowNode.aggData && rowNode.aggData[colId] !== undefined;\n        if (forFilter && colDef.filterValueGetter) {\n            result = this.executeFilterValueGetter(colDef.filterValueGetter, data, column, rowNode);\n        }\n        else if (this.isTreeData && aggDataExists) {\n            result = rowNode.aggData[colId];\n        }\n        else if (this.isTreeData && colDef.valueGetter) {\n            result = this.executeValueGetter(colDef.valueGetter, data, column, rowNode);\n        }\n        else if (this.isTreeData && (field && data)) {\n            result = getValueUsingField(data, field, column.isFieldContainsDots());\n        }\n        else if (groupDataExists) {\n            result = rowNode.groupData[colId];\n        }\n        else if (aggDataExists) {\n            result = rowNode.aggData[colId];\n        }\n        else if (colDef.valueGetter) {\n            result = this.executeValueGetter(colDef.valueGetter, data, column, rowNode);\n        }\n        else if (field && data) {\n            result = getValueUsingField(data, field, column.isFieldContainsDots());\n        }\n        // the result could be an expression itself, if we are allowing cell values to be expressions\n        if (this.cellExpressions && (typeof result === 'string') && result.indexOf('=') === 0) {\n            var cellValueGetter = result.substring(1);\n            result = this.executeValueGetter(cellValueGetter, data, column, rowNode);\n        }\n        if (result == null) {\n            var openedGroup = this.getOpenedGroup(rowNode, column);\n            if (openedGroup != null) {\n                return openedGroup;\n            }\n        }\n        return result;\n    };\n    ValueService.prototype.getOpenedGroup = function (rowNode, column) {\n        if (!this.gridOptionsService.is('showOpenedGroup')) {\n            return;\n        }\n        var colDef = column.getColDef();\n        if (!colDef.showRowGroup) {\n            return;\n        }\n        var showRowGroup = column.getColDef().showRowGroup;\n        var pointer = rowNode.parent;\n        while (pointer != null) {\n            if (pointer.rowGroupColumn && (showRowGroup === true || showRowGroup === pointer.rowGroupColumn.getColId())) {\n                return pointer.key;\n            }\n            pointer = pointer.parent;\n        }\n        return undefined;\n    };\n    /**\n     * Sets the value of a GridCell\n     * @param rowNode The `RowNode` to be updated\n     * @param colKey The `Column` to be updated\n     * @param newValue The new value to be set\n     * @param eventSource The event source\n     * @returns `True` if the value has been updated, otherwise`False`.\n     */\n    ValueService.prototype.setValue = function (rowNode, colKey, newValue, eventSource) {\n        var column = this.columnModel.getPrimaryColumn(colKey);\n        if (!rowNode || !column) {\n            return false;\n        }\n        // this will only happen if user is trying to paste into a group row, which doesn't make sense\n        // the user should not be trying to paste into group rows\n        if (missing(rowNode.data)) {\n            rowNode.data = {};\n        }\n        var _a = column.getColDef(), field = _a.field, valueSetter = _a.valueSetter;\n        if (missing(field) && missing(valueSetter)) {\n            console.warn(\"AG Grid: you need either field or valueSetter set on colDef for editing to work\");\n            return false;\n        }\n        var params = {\n            node: rowNode,\n            data: rowNode.data,\n            oldValue: this.getValue(column, rowNode),\n            newValue: newValue,\n            colDef: column.getColDef(),\n            column: column,\n            api: this.gridOptionsService.api,\n            columnApi: this.gridOptionsService.columnApi,\n            context: this.gridOptionsService.context\n        };\n        params.newValue = newValue;\n        var valueWasDifferent;\n        if (exists(valueSetter)) {\n            if (typeof valueSetter === 'function') {\n                valueWasDifferent = valueSetter(params);\n            }\n            else {\n                valueWasDifferent = this.expressionService.evaluate(valueSetter, params);\n            }\n        }\n        else {\n            valueWasDifferent = this.setValueUsingField(rowNode.data, field, newValue, column.isFieldContainsDots());\n        }\n        // in case user forgot to return something (possible if they are not using TypeScript\n        // and just forgot we default the return value to true, so we always refresh.\n        if (valueWasDifferent === undefined) {\n            valueWasDifferent = true;\n        }\n        // if no change to the value, then no need to do the updating, or notifying via events.\n        // otherwise the user could be tabbing around the grid, and cellValueChange would get called\n        // all the time.\n        if (!valueWasDifferent) {\n            return false;\n        }\n        // reset quick filter on this row\n        rowNode.resetQuickFilterAggregateText();\n        this.valueCache.onDataChanged();\n        params.newValue = this.getValue(column, rowNode);\n        var event = {\n            type: Events.EVENT_CELL_VALUE_CHANGED,\n            event: null,\n            rowIndex: rowNode.rowIndex,\n            rowPinned: rowNode.rowPinned,\n            column: params.column,\n            api: params.api,\n            columnApi: params.columnApi,\n            colDef: params.colDef,\n            context: params.context,\n            data: rowNode.data,\n            node: rowNode,\n            oldValue: params.oldValue,\n            newValue: params.newValue,\n            value: params.newValue,\n            source: eventSource\n        };\n        this.eventService.dispatchEvent(event);\n        return true;\n    };\n    ValueService.prototype.callColumnCellValueChangedHandler = function (event) {\n        var onCellValueChanged = event.colDef.onCellValueChanged;\n        if (typeof onCellValueChanged === 'function') {\n            onCellValueChanged({\n                node: event.node,\n                data: event.data,\n                oldValue: event.oldValue,\n                newValue: event.newValue,\n                colDef: event.colDef,\n                column: event.column,\n                api: event.api,\n                columnApi: event.columnApi,\n                context: event.context\n            });\n        }\n    };\n    ValueService.prototype.setValueUsingField = function (data, field, newValue, isFieldContainsDots) {\n        if (!field) {\n            return false;\n        }\n        // if no '.', then it's not a deep value\n        var valuesAreSame = false;\n        if (!isFieldContainsDots) {\n            // soft comparison to match strings and numbers\n            valuesAreSame = data[field] == newValue;\n            if (!valuesAreSame) {\n                data[field] = newValue;\n            }\n        }\n        else {\n            // otherwise it is a deep value, so need to dig for it\n            var fieldPieces = field.split('.');\n            var currentObject = data;\n            while (fieldPieces.length > 0 && currentObject) {\n                var fieldPiece = fieldPieces.shift();\n                if (fieldPieces.length === 0) {\n                    // soft comparison to match strings and numbers\n                    valuesAreSame = currentObject[fieldPiece] == newValue;\n                    if (!valuesAreSame) {\n                        currentObject[fieldPiece] = newValue;\n                    }\n                }\n                else {\n                    currentObject = currentObject[fieldPiece];\n                }\n            }\n        }\n        return !valuesAreSame;\n    };\n    ValueService.prototype.executeFilterValueGetter = function (valueGetter, data, column, rowNode) {\n        var params = {\n            data: data,\n            node: rowNode,\n            column: column,\n            colDef: column.getColDef(),\n            api: this.gridOptionsService.api,\n            columnApi: this.gridOptionsService.columnApi,\n            context: this.gridOptionsService.context,\n            getValue: this.getValueCallback.bind(this, rowNode)\n        };\n        if (typeof valueGetter === 'function') {\n            return valueGetter(params);\n        }\n        return this.expressionService.evaluate(valueGetter, params);\n    };\n    ValueService.prototype.executeValueGetter = function (valueGetter, data, column, rowNode) {\n        var colId = column.getColId();\n        // if inside the same turn, just return back the value we got last time\n        var valueFromCache = this.valueCache.getValue(rowNode, colId);\n        if (valueFromCache !== undefined) {\n            return valueFromCache;\n        }\n        var params = {\n            data: data,\n            node: rowNode,\n            column: column,\n            colDef: column.getColDef(),\n            api: this.gridOptionsService.api,\n            columnApi: this.gridOptionsService.columnApi,\n            context: this.gridOptionsService.context,\n            getValue: this.getValueCallback.bind(this, rowNode)\n        };\n        var result;\n        if (typeof valueGetter === 'function') {\n            result = valueGetter(params);\n        }\n        else {\n            result = this.expressionService.evaluate(valueGetter, params);\n        }\n        // if a turn is active, store the value in case the grid asks for it again\n        this.valueCache.setValue(rowNode, colId, result);\n        return result;\n    };\n    ValueService.prototype.getValueCallback = function (node, field) {\n        var otherColumn = this.columnModel.getPrimaryColumn(field);\n        if (otherColumn) {\n            return this.getValue(otherColumn, node);\n        }\n        return null;\n    };\n    // used by row grouping and pivot, to get key for a row. col can be a pivot col or a row grouping col\n    ValueService.prototype.getKeyForNode = function (col, rowNode) {\n        var value = this.getValue(col, rowNode);\n        var keyCreator = col.getColDef().keyCreator;\n        var result = value;\n        if (keyCreator) {\n            var keyParams = {\n                value: value,\n                colDef: col.getColDef(),\n                column: col,\n                node: rowNode,\n                data: rowNode.data,\n                api: this.gridOptionsService.api,\n                columnApi: this.gridOptionsService.columnApi,\n                context: this.gridOptionsService.context\n            };\n            result = keyCreator(keyParams);\n        }\n        // if already a string, or missing, just return it\n        if (typeof result === 'string' || result == null) {\n            return result;\n        }\n        result = String(result);\n        if (result === '[object Object]') {\n            doOnce(function () {\n                console.warn('AG Grid: a column you are grouping or pivoting by has objects as values. If you want to group by complex objects then either a) use a colDef.keyCreator (se AG Grid docs) or b) to toString() on the object to return a key');\n            }, 'getKeyForNode - warn about [object,object]');\n        }\n        return result;\n    };\n    __decorate$K([\n        Autowired('expressionService')\n    ], ValueService.prototype, \"expressionService\", void 0);\n    __decorate$K([\n        Autowired('columnModel')\n    ], ValueService.prototype, \"columnModel\", void 0);\n    __decorate$K([\n        Autowired('valueCache')\n    ], ValueService.prototype, \"valueCache\", void 0);\n    __decorate$K([\n        PostConstruct\n    ], ValueService.prototype, \"init\", null);\n    ValueService = __decorate$K([\n        Bean('valueService')\n    ], ValueService);\n    return ValueService;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$I = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$J = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __param$4 = (undefined && undefined.__param) || function (paramIndex, decorator) {\n    return function (target, key) { decorator(target, key, paramIndex); }\n};\nvar ExpressionService = /** @class */ (function (_super) {\n    __extends$I(ExpressionService, _super);\n    function ExpressionService() {\n        var _this = _super !== null && _super.apply(this, arguments) || this;\n        _this.expressionToFunctionCache = {};\n        return _this;\n    }\n    ExpressionService.prototype.setBeans = function (loggerFactory) {\n        this.logger = loggerFactory.create('ExpressionService');\n    };\n    ExpressionService.prototype.evaluate = function (expression, params) {\n        if (typeof expression === 'string') {\n            // valueGetter is an expression, so execute the expression\n            return this.evaluateExpression(expression, params);\n        }\n        else {\n            console.error('AG Grid: value should be either a string or a function', expression);\n        }\n    };\n    ExpressionService.prototype.evaluateExpression = function (expression, params) {\n        try {\n            var javaScriptFunction = this.createExpressionFunction(expression);\n            // the params don't have all these values, rather we add every possible\n            // value a params can have, which makes whatever is in the params available.\n            var result = javaScriptFunction(params.value, params.context, params.oldValue, params.newValue, params.value, params.node, params.data, params.colDef, params.rowIndex, params.api, params.columnApi, params.getValue, params.column, params.columnGroup);\n            return result;\n        }\n        catch (e) {\n            // the expression failed, which can happen, as it's the client that\n            // provides the expression. so print a nice message\n            // tslint:disable-next-line\n            console.log('Processing of the expression failed');\n            // tslint:disable-next-line\n            console.log('Expression = ' + expression);\n            // tslint:disable-next-line\n            console.log('Params =', params);\n            // tslint:disable-next-line\n            console.log('Exception = ' + e);\n            return null;\n        }\n    };\n    ExpressionService.prototype.createExpressionFunction = function (expression) {\n        // check cache first\n        if (this.expressionToFunctionCache[expression]) {\n            return this.expressionToFunctionCache[expression];\n        }\n        // if not found in cache, return the function\n        var functionBody = this.createFunctionBody(expression);\n        var theFunction = new Function('x, ctx, oldValue, newValue, value, node, data, colDef, rowIndex, api, columnApi, getValue, column, columnGroup', functionBody);\n        // store in cache\n        this.expressionToFunctionCache[expression] = theFunction;\n        return theFunction;\n    };\n    ExpressionService.prototype.createFunctionBody = function (expression) {\n        // if the expression has the 'return' word in it, then use as is,\n        // if not, then wrap it with return and ';' to make a function\n        if (expression.indexOf('return') >= 0) {\n            return expression;\n        }\n        else {\n            return 'return ' + expression + ';';\n        }\n    };\n    __decorate$J([\n        __param$4(0, Qualifier('loggerFactory'))\n    ], ExpressionService.prototype, \"setBeans\", null);\n    ExpressionService = __decorate$J([\n        Bean('expressionService')\n    ], ExpressionService);\n    return ExpressionService;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$H = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$I = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar TemplateService = /** @class */ (function (_super) {\n    __extends$H(TemplateService, _super);\n    function TemplateService() {\n        var _this = _super !== null && _super.apply(this, arguments) || this;\n        _this.templateCache = {};\n        _this.waitingCallbacks = {};\n        return _this;\n    }\n    // returns the template if it is loaded, or null if it is not loaded\n    // but will call the callback when it is loaded\n    TemplateService.prototype.getTemplate = function (url, callback) {\n        var templateFromCache = this.templateCache[url];\n        if (templateFromCache) {\n            return templateFromCache;\n        }\n        var callbackList = this.waitingCallbacks[url];\n        var that = this;\n        if (!callbackList) {\n            // first time this was called, so need a new list for callbacks\n            callbackList = [];\n            this.waitingCallbacks[url] = callbackList;\n            // and also need to do the http request\n            var client = new XMLHttpRequest();\n            client.onload = function () {\n                that.handleHttpResult(this, url);\n            };\n            client.open(\"GET\", url);\n            client.send();\n        }\n        // add this callback\n        if (callback) {\n            callbackList.push(callback);\n        }\n        // caller needs to wait for template to load, so return null\n        return null;\n    };\n    TemplateService.prototype.handleHttpResult = function (httpResult, url) {\n        if (httpResult.status !== 200 || httpResult.response === null) {\n            console.warn(\"AG Grid: Unable to get template error \" + httpResult.status + \" - \" + url);\n            return;\n        }\n        // response success, so process it\n        // in IE9 the response is in - responseText\n        this.templateCache[url] = httpResult.response || httpResult.responseText;\n        // inform all listeners that this is now in the cache\n        var callbacks = this.waitingCallbacks[url];\n        for (var i = 0; i < callbacks.length; i++) {\n            var callback = callbacks[i];\n            // we could pass the callback the response, however we know the client of this code\n            // is the cell renderer, and it passes the 'cellRefresh' method in as the callback\n            // which doesn't take any parameters.\n            callback();\n        }\n    };\n    TemplateService = __decorate$I([\n        Bean('templateService')\n    ], TemplateService);\n    return TemplateService;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$G = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$H = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __param$3 = (undefined && undefined.__param) || function (paramIndex, decorator) {\n    return function (target, key) { decorator(target, key, paramIndex); }\n};\nvar LoggerFactory = /** @class */ (function (_super) {\n    __extends$G(LoggerFactory, _super);\n    function LoggerFactory() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    LoggerFactory.prototype.setBeans = function (gridOptionsService) {\n        this.logging = gridOptionsService.is('debug');\n    };\n    LoggerFactory.prototype.create = function (name) {\n        return new Logger(name, this.isLogging.bind(this));\n    };\n    LoggerFactory.prototype.isLogging = function () {\n        return this.logging;\n    };\n    __decorate$H([\n        __param$3(0, Qualifier('gridOptionsService'))\n    ], LoggerFactory.prototype, \"setBeans\", null);\n    LoggerFactory = __decorate$H([\n        Bean('loggerFactory')\n    ], LoggerFactory);\n    return LoggerFactory;\n}(BeanStub));\nvar Logger = /** @class */ (function () {\n    function Logger(name, isLoggingFunc) {\n        this.name = name;\n        this.isLoggingFunc = isLoggingFunc;\n    }\n    Logger.prototype.isLogging = function () {\n        return this.isLoggingFunc();\n    };\n    Logger.prototype.log = function (message) {\n        if (this.isLoggingFunc()) {\n            // tslint:disable-next-line\n            console.log('AG Grid.' + this.name + ': ' + message);\n        }\n    };\n    return Logger;\n}());\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$F = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$G = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar GridCtrl = /** @class */ (function (_super) {\n    __extends$F(GridCtrl, _super);\n    function GridCtrl() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    GridCtrl.prototype.setComp = function (view, eGridDiv, eGui) {\n        var _this = this;\n        this.view = view;\n        this.eGridHostDiv = eGridDiv;\n        this.eGui = eGui;\n        // this drop target is just used to see if the drop event is inside the grid\n        this.dragAndDropService.addDropTarget({\n            getContainer: function () { return _this.eGui; },\n            isInterestedIn: function (type) { return type === DragSourceType.HeaderCell || type === DragSourceType.ToolPanel; },\n            getIconName: function () { return DragAndDropService.ICON_NOT_ALLOWED; },\n        });\n        this.mouseEventService.stampTopLevelGridCompWithGridInstance(eGridDiv);\n        this.createManagedBean(new LayoutFeature(this.view));\n        this.addRtlSupport();\n        this.addManagedListener(this, Events.EVENT_KEYBOARD_FOCUS, function () {\n            _this.view.addOrRemoveKeyboardFocusClass(true);\n        });\n        this.addManagedListener(this, Events.EVENT_MOUSE_FOCUS, function () {\n            _this.view.addOrRemoveKeyboardFocusClass(false);\n        });\n        var unsubscribeFromResize = this.resizeObserverService.observeResize(this.eGridHostDiv, this.onGridSizeChanged.bind(this));\n        this.addDestroyFunc(function () { return unsubscribeFromResize(); });\n        this.ctrlsService.registerGridCtrl(this);\n    };\n    GridCtrl.prototype.isDetailGrid = function () {\n        var _a;\n        var el = this.focusService.findTabbableParent(this.getGui());\n        return ((_a = el === null || el === void 0 ? void 0 : el.getAttribute('row-id')) === null || _a === void 0 ? void 0 : _a.startsWith('detail')) || false;\n    };\n    GridCtrl.prototype.showDropZones = function () {\n        return ModuleRegistry.isRegistered(ModuleNames.RowGroupingModule);\n    };\n    GridCtrl.prototype.showSideBar = function () {\n        return ModuleRegistry.isRegistered(ModuleNames.SideBarModule);\n    };\n    GridCtrl.prototype.showStatusBar = function () {\n        return ModuleRegistry.isRegistered(ModuleNames.StatusBarModule);\n    };\n    GridCtrl.prototype.showWatermark = function () {\n        return ModuleRegistry.isRegistered(ModuleNames.EnterpriseCoreModule);\n    };\n    GridCtrl.prototype.onGridSizeChanged = function () {\n        var event = {\n            type: Events.EVENT_GRID_SIZE_CHANGED,\n            clientWidth: this.eGridHostDiv.clientWidth,\n            clientHeight: this.eGridHostDiv.clientHeight\n        };\n        this.eventService.dispatchEvent(event);\n    };\n    GridCtrl.prototype.addRtlSupport = function () {\n        var cssClass = this.gridOptionsService.is('enableRtl') ? 'ag-rtl' : 'ag-ltr';\n        this.view.setRtlClass(cssClass);\n    };\n    GridCtrl.prototype.destroyGridUi = function () {\n        this.view.destroyGridUi();\n    };\n    GridCtrl.prototype.getGui = function () {\n        return this.eGui;\n    };\n    GridCtrl.prototype.setResizeCursor = function (on) {\n        this.view.setCursor(on ? 'ew-resize' : null);\n    };\n    GridCtrl.prototype.disableUserSelect = function (on) {\n        this.view.setUserSelect(on ? 'none' : null);\n    };\n    GridCtrl.prototype.focusNextInnerContainer = function (backwards) {\n        var eDocument = this.gridOptionsService.getDocument();\n        var focusableContainers = this.view.getFocusableContainers();\n        var idxWithFocus = focusableContainers.findIndex(function (container) { return container.contains(eDocument.activeElement); });\n        var nextIdx = idxWithFocus + (backwards ? -1 : 1);\n        if (nextIdx <= 0 || nextIdx >= focusableContainers.length) {\n            return false;\n        }\n        return this.focusService.focusInto(focusableContainers[nextIdx]);\n    };\n    GridCtrl.prototype.focusInnerElement = function (fromBottom) {\n        var focusableContainers = this.view.getFocusableContainers();\n        var allColumns = this.columnModel.getAllDisplayedColumns();\n        if (fromBottom) {\n            if (focusableContainers.length > 1) {\n                return this.focusService.focusInto(last(focusableContainers), true);\n            }\n            var lastColumn = last(allColumns);\n            if (this.focusService.focusGridView(lastColumn, true)) {\n                return true;\n            }\n        }\n        if (this.gridOptionsService.getNum('headerHeight') === 0) {\n            return this.focusService.focusGridView(allColumns[0]);\n        }\n        return this.focusService.focusFirstHeader();\n    };\n    GridCtrl.prototype.forceFocusOutOfContainer = function (up) {\n        if (up === void 0) { up = false; }\n        this.view.forceFocusOutOfContainer(up);\n    };\n    __decorate$G([\n        Autowired('focusService')\n    ], GridCtrl.prototype, \"focusService\", void 0);\n    __decorate$G([\n        Autowired('resizeObserverService')\n    ], GridCtrl.prototype, \"resizeObserverService\", void 0);\n    __decorate$G([\n        Autowired('columnModel')\n    ], GridCtrl.prototype, \"columnModel\", void 0);\n    __decorate$G([\n        Autowired('ctrlsService')\n    ], GridCtrl.prototype, \"ctrlsService\", void 0);\n    __decorate$G([\n        Autowired('mouseEventService')\n    ], GridCtrl.prototype, \"mouseEventService\", void 0);\n    __decorate$G([\n        Autowired('dragAndDropService')\n    ], GridCtrl.prototype, \"dragAndDropService\", void 0);\n    return GridCtrl;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$E = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$F = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar GridComp = /** @class */ (function (_super) {\n    __extends$E(GridComp, _super);\n    function GridComp(eGridDiv) {\n        var _this = _super.call(this) || this;\n        _this.eGridDiv = eGridDiv;\n        return _this;\n    }\n    GridComp.prototype.postConstruct = function () {\n        var _this = this;\n        this.logger = this.loggerFactory.create('GridComp');\n        var compProxy = {\n            destroyGridUi: function () { return _this.destroyBean(_this); },\n            setRtlClass: function (cssClass) { return _this.addCssClass(cssClass); },\n            addOrRemoveKeyboardFocusClass: function (addOrRemove) { return _this.addOrRemoveCssClass(FocusService.AG_KEYBOARD_FOCUS, addOrRemove); },\n            forceFocusOutOfContainer: this.forceFocusOutOfContainer.bind(this),\n            updateLayoutClasses: this.updateLayoutClasses.bind(this),\n            getFocusableContainers: this.getFocusableContainers.bind(this),\n            setUserSelect: function (value) {\n                _this.getGui().style.userSelect = value != null ? value : '';\n                _this.getGui().style.webkitUserSelect = value != null ? value : '';\n            },\n            setCursor: function (value) {\n                _this.getGui().style.cursor = value != null ? value : '';\n            }\n        };\n        this.ctrl = this.createManagedBean(new GridCtrl());\n        var template = this.createTemplate();\n        this.setTemplate(template);\n        this.ctrl.setComp(compProxy, this.eGridDiv, this.getGui());\n        this.insertGridIntoDom();\n        this.initialiseTabGuard({\n            // we want to override the default behaviour to do nothing for onTabKeyDown\n            onTabKeyDown: function () { return undefined; },\n            focusInnerElement: function (fromBottom) { return _this.ctrl.focusInnerElement(fromBottom); }\n        });\n    };\n    GridComp.prototype.insertGridIntoDom = function () {\n        var _this = this;\n        var eGui = this.getGui();\n        this.eGridDiv.appendChild(eGui);\n        this.addDestroyFunc(function () {\n            _this.eGridDiv.removeChild(eGui);\n            _this.logger.log('Grid removed from DOM');\n        });\n    };\n    GridComp.prototype.updateLayoutClasses = function (cssClass, params) {\n        var eRootWrapperBodyClassList = this.eRootWrapperBody.classList;\n        eRootWrapperBodyClassList.toggle(LayoutCssClasses.AUTO_HEIGHT, params.autoHeight);\n        eRootWrapperBodyClassList.toggle(LayoutCssClasses.NORMAL, params.normal);\n        eRootWrapperBodyClassList.toggle(LayoutCssClasses.PRINT, params.print);\n        this.addOrRemoveCssClass(LayoutCssClasses.AUTO_HEIGHT, params.autoHeight);\n        this.addOrRemoveCssClass(LayoutCssClasses.NORMAL, params.normal);\n        this.addOrRemoveCssClass(LayoutCssClasses.PRINT, params.print);\n    };\n    GridComp.prototype.createTemplate = function () {\n        var dropZones = this.ctrl.showDropZones() ? '<ag-grid-header-drop-zones></ag-grid-header-drop-zones>' : '';\n        var sideBar = this.ctrl.showSideBar() ? '<ag-side-bar ref=\"sideBar\"></ag-side-bar>' : '';\n        var statusBar = this.ctrl.showStatusBar() ? '<ag-status-bar ref=\"statusBar\"></ag-status-bar>' : '';\n        var watermark = this.ctrl.showWatermark() ? '<ag-watermark></ag-watermark>' : '';\n        var template = /* html */ \"<div class=\\\"ag-root-wrapper\\\" role=\\\"presentation\\\">\\n                \" + dropZones + \"\\n                <div class=\\\"ag-root-wrapper-body\\\" ref=\\\"rootWrapperBody\\\" role=\\\"presentation\\\">\\n                    <ag-grid-body ref=\\\"gridBody\\\"></ag-grid-body>\\n                    \" + sideBar + \"\\n                </div>\\n                \" + statusBar + \"\\n                <ag-pagination></ag-pagination>\\n                \" + watermark + \"\\n            </div>\";\n        return template;\n    };\n    GridComp.prototype.getFocusableElement = function () {\n        return this.eRootWrapperBody;\n    };\n    GridComp.prototype.getFocusableContainers = function () {\n        var focusableContainers = [\n            this.gridBodyComp.getGui()\n        ];\n        if (this.sideBarComp) {\n            focusableContainers.push(this.sideBarComp.getGui());\n        }\n        return focusableContainers.filter(function (el) { return isVisible(el); });\n    };\n    __decorate$F([\n        Autowired('loggerFactory')\n    ], GridComp.prototype, \"loggerFactory\", void 0);\n    __decorate$F([\n        RefSelector('gridBody')\n    ], GridComp.prototype, \"gridBodyComp\", void 0);\n    __decorate$F([\n        RefSelector('sideBar')\n    ], GridComp.prototype, \"sideBarComp\", void 0);\n    __decorate$F([\n        RefSelector('rootWrapperBody')\n    ], GridComp.prototype, \"eRootWrapperBody\", void 0);\n    __decorate$F([\n        PostConstruct\n    ], GridComp.prototype, \"postConstruct\", null);\n    return GridComp;\n}(TabGuardComp));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$D = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$E = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __read$7 = (undefined && undefined.__read) || function (o, n) {\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n    if (!m) return o;\n    var i = m.call(o), r, ar = [], e;\n    try {\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n    }\n    catch (error) { e = { error: error }; }\n    finally {\n        try {\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\n        }\n        finally { if (e) throw e.error; }\n    }\n    return ar;\n};\nvar __spread$6 = (undefined && undefined.__spread) || function () {\n    for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read$7(arguments[i]));\n    return ar;\n};\nvar SortController = /** @class */ (function (_super) {\n    __extends$D(SortController, _super);\n    function SortController() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    SortController_1 = SortController;\n    SortController.prototype.progressSort = function (column, multiSort, source) {\n        var nextDirection = this.getNextSortDirection(column);\n        this.setSortForColumn(column, nextDirection, multiSort, source);\n    };\n    SortController.prototype.setSortForColumn = function (column, sort, multiSort, source) {\n        // auto correct - if sort not legal value, then set it to 'no sort' (which is null)\n        if (sort !== 'asc' && sort !== 'desc') {\n            sort = null;\n        }\n        var isColumnsSortingCoupledToGroup = this.gridOptionsService.isColumnsSortingCoupledToGroup();\n        var columnsToUpdate = [column];\n        if (isColumnsSortingCoupledToGroup && column.getColDef().showRowGroup) {\n            if (!column.getColDef().field) {\n                // if no field is present, this column shouldn't have it's own sort direction\n                columnsToUpdate = [];\n            }\n            var rowGroupColumns = this.columnModel.getSourceColumnsForGroupColumn(column);\n            var sortableRowGroupColumns = rowGroupColumns === null || rowGroupColumns === void 0 ? void 0 : rowGroupColumns.filter(function (col) { return col.getColDef().sortable; });\n            if (sortableRowGroupColumns) {\n                columnsToUpdate = __spread$6(columnsToUpdate, sortableRowGroupColumns);\n            }\n        }\n        columnsToUpdate.forEach(function (col) { return col.setSort(sort, source); });\n        var doingMultiSort = (multiSort || this.gridOptionsService.is('alwaysMultiSort')) && !this.gridOptionsService.is('suppressMultiSort');\n        // clear sort on all columns except those changed, and update the icons\n        if (!doingMultiSort) {\n            this.clearSortBarTheseColumns(columnsToUpdate, source);\n        }\n        // sortIndex used for knowing order of cols when multi-col sort\n        this.updateSortIndex(column);\n        this.dispatchSortChangedEvents(source);\n    };\n    SortController.prototype.updateSortIndex = function (lastColToChange) {\n        var isCoupled = this.gridOptionsService.isColumnsSortingCoupledToGroup();\n        var groupParent = this.columnModel.getGroupDisplayColumnForGroup(lastColToChange.getId());\n        var lastSortIndexCol = isCoupled ? groupParent || lastColToChange : lastColToChange;\n        var allSortedCols = this.getColumnsWithSortingOrdered(true);\n        // reset sort index on everything\n        this.columnModel.getPrimaryAndSecondaryAndAutoColumns().forEach(function (col) { return col.setSortIndex(null); });\n        var allSortedColsWithoutChanges = allSortedCols.filter(function (col) { return col !== lastSortIndexCol; });\n        var sortedColsWithIndices = !!lastSortIndexCol.getSort() ? __spread$6(allSortedColsWithoutChanges, [lastSortIndexCol]) : allSortedColsWithoutChanges;\n        sortedColsWithIndices.forEach(function (col, idx) { return (col.setSortIndex(idx)); });\n    };\n    // gets called by API, so if data changes, use can call this, which will end up\n    // working out the sort order again of the rows.\n    SortController.prototype.onSortChanged = function (source) {\n        this.dispatchSortChangedEvents(source);\n    };\n    SortController.prototype.isSortActive = function () {\n        // pull out all the columns that have sorting set\n        var allCols = this.columnModel.getPrimaryAndSecondaryAndAutoColumns();\n        var sortedCols = allCols.filter(function (column) { return !!column.getSort(); });\n        return sortedCols && sortedCols.length > 0;\n    };\n    SortController.prototype.dispatchSortChangedEvents = function (source) {\n        var event = {\n            type: Events.EVENT_SORT_CHANGED,\n            source: source\n        };\n        this.eventService.dispatchEvent(event);\n    };\n    SortController.prototype.clearSortBarTheseColumns = function (columnsToSkip, source) {\n        this.columnModel.getPrimaryAndSecondaryAndAutoColumns().forEach(function (columnToClear) {\n            // Do not clear if either holding shift, or if column in question was clicked\n            if (!columnsToSkip.includes(columnToClear)) {\n                // setting to 'undefined' as null means 'none' rather than cleared, otherwise issue will arise\n                // if sort order is: ['desc', null , 'asc'], as it will start at null rather than 'desc'.\n                columnToClear.setSort(undefined, source);\n            }\n        });\n    };\n    SortController.prototype.getNextSortDirection = function (column) {\n        var sortingOrder;\n        if (column.getColDef().sortingOrder) {\n            sortingOrder = column.getColDef().sortingOrder;\n        }\n        else if (this.gridOptionsService.get('sortingOrder')) {\n            sortingOrder = this.gridOptionsService.get('sortingOrder');\n        }\n        else {\n            sortingOrder = SortController_1.DEFAULT_SORTING_ORDER;\n        }\n        if (!Array.isArray(sortingOrder) || sortingOrder.length <= 0) {\n            console.warn(\"AG Grid: sortingOrder must be an array with at least one element, currently it's \" + sortingOrder);\n            return null;\n        }\n        // if a field is present, this column could have it's own sort, otherwise it's calculated from other columns\n        var currentSort = !!column.getColDef().field ? column.getSort() : this.getDisplaySortForColumn(column);\n        var result = sortingOrder[0];\n        if (currentSort !== 'mixed') {\n            var currentIndex = sortingOrder.indexOf(currentSort);\n            var notInArray = currentIndex < 0;\n            var lastItemInArray = currentIndex == sortingOrder.length - 1;\n            if (notInArray || lastItemInArray) {\n                result = sortingOrder[0];\n            }\n            else {\n                result = sortingOrder[currentIndex + 1];\n            }\n        }\n        // verify the sort type exists, as the user could provide the sortingOrder, need to make sure it's valid\n        if (SortController_1.DEFAULT_SORTING_ORDER.indexOf(result) < 0) {\n            console.warn('AG Grid: invalid sort type ' + result);\n            return null;\n        }\n        return result;\n    };\n    /**\n     * @param includeRedundantColumns whether to include non-grouped, non-secondary, non-aggregated columns when pivot active\n     * @returns a map of sort indexes for every sorted column, if groups sort primaries then they will have equivalent indices\n     */\n    SortController.prototype.getIndexedSortMap = function (includeRedundantColumns) {\n        var _this = this;\n        if (includeRedundantColumns === void 0) { includeRedundantColumns = false; }\n        // pull out all the columns that have sorting set\n        var allSortedCols = this.columnModel.getPrimaryAndSecondaryAndAutoColumns()\n            .filter(function (col) { return !!col.getSort(); });\n        if (!includeRedundantColumns && this.columnModel.isPivotMode()) {\n            allSortedCols = allSortedCols.filter(function (col) { return (!!col.getAggFunc() || !col.isPrimary() || _this.columnModel.getGroupDisplayColumnForGroup(col.getId())); });\n        }\n        var sortedRowGroupCols = this.columnModel.getRowGroupColumns()\n            .filter(function (col) { return !!col.getSort(); });\n        var isSortLinked = this.gridOptionsService.isColumnsSortingCoupledToGroup() && !!sortedRowGroupCols.length;\n        if (isSortLinked) {\n            allSortedCols = __spread$6(new Set(\n            // if linked sorting, replace all columns with the display group column for index purposes, and ensure uniqueness\n            allSortedCols.map(function (col) { var _a; return (_a = _this.columnModel.getGroupDisplayColumnForGroup(col.getId())) !== null && _a !== void 0 ? _a : col; })));\n        }\n        // when both cols are missing sortIndex, we use the position of the col in all cols list.\n        // this means if colDefs only have sort, but no sortIndex, we deterministically pick which\n        // cols is sorted by first.\n        var allColsIndexes = {};\n        allSortedCols.forEach(function (col, index) { return allColsIndexes[col.getId()] = index; });\n        // put the columns in order of which one got sorted first\n        allSortedCols.sort(function (a, b) {\n            var iA = a.getSortIndex();\n            var iB = b.getSortIndex();\n            if (iA != null && iB != null) {\n                return iA - iB; // both present, normal comparison\n            }\n            else if (iA == null && iB == null) {\n                // both missing, compare using column positions\n                var posA = allColsIndexes[a.getId()];\n                var posB = allColsIndexes[b.getId()];\n                return posA > posB ? 1 : -1;\n            }\n            else if (iB == null) {\n                return -1; // iB missing\n            }\n            else {\n                return 1; // iA missing\n            }\n        });\n        var indexMap = new Map();\n        allSortedCols.forEach(function (col, idx) { return indexMap.set(col, idx); });\n        // add the row group cols back\n        if (isSortLinked) {\n            sortedRowGroupCols.forEach(function (col) {\n                var groupDisplayCol = _this.columnModel.getGroupDisplayColumnForGroup(col.getId());\n                indexMap.set(col, indexMap.get(groupDisplayCol));\n            });\n        }\n        return indexMap;\n    };\n    SortController.prototype.getColumnsWithSortingOrdered = function (includeRedundantColumns) {\n        if (includeRedundantColumns === void 0) { includeRedundantColumns = false; }\n        // pull out all the columns that have sorting set\n        return __spread$6(this.getIndexedSortMap(includeRedundantColumns).entries()).sort(function (_a, _b) {\n            var _c = __read$7(_a, 2); _c[0]; var idx1 = _c[1];\n            var _d = __read$7(_b, 2); _d[0]; var idx2 = _d[1];\n            return idx1 - idx2;\n        })\n            .map(function (_a) {\n            var _b = __read$7(_a, 1), col = _b[0];\n            return col;\n        });\n    };\n    // used by server side row models, to sent sort to server\n    SortController.prototype.getSortModel = function () {\n        // because this is used by the SSRM, we include redundant options and let the server decide\n        return this.getColumnsWithSortingOrdered(true).map(function (column) { return ({\n            sort: column.getSort(),\n            colId: column.getId()\n        }); });\n    };\n    SortController.prototype.getSortOptions = function () {\n        // this is used for client side sorting, as such we can ignore redundant column sorts\n        return this.getColumnsWithSortingOrdered().map(function (column) { return ({\n            sort: column.getSort(),\n            column: column\n        }); });\n    };\n    SortController.prototype.canColumnDisplayMixedSort = function (column) {\n        var isColumnSortCouplingActive = this.gridOptionsService.isColumnsSortingCoupledToGroup();\n        var isGroupDisplayColumn = !!column.getColDef().showRowGroup;\n        return isColumnSortCouplingActive && isGroupDisplayColumn;\n    };\n    SortController.prototype.getDisplaySortForColumn = function (column) {\n        var linkedColumns = this.columnModel.getSourceColumnsForGroupColumn(column);\n        if (!this.canColumnDisplayMixedSort(column) || !(linkedColumns === null || linkedColumns === void 0 ? void 0 : linkedColumns.length)) {\n            return column.getSort();\n        }\n        // if column has unique data, its sorting is independent - but can still be mixed\n        var columnHasUniqueData = !!column.getColDef().field;\n        var sortableColumns = columnHasUniqueData ? __spread$6([column], linkedColumns) : linkedColumns;\n        var firstSort = sortableColumns[0].getSort();\n        // the == is intentional, as null and undefined both represent no sort, which means they are equivalent\n        var allMatch = sortableColumns.every(function (col) { return col.getSort() == firstSort; });\n        if (!allMatch) {\n            return 'mixed';\n        }\n        return firstSort;\n    };\n    SortController.prototype.getDisplaySortIndexForColumn = function (column) {\n        return this.getIndexedSortMap().get(column);\n    };\n    var SortController_1;\n    SortController.DEFAULT_SORTING_ORDER = ['asc', 'desc', null];\n    __decorate$E([\n        Autowired('columnModel')\n    ], SortController.prototype, \"columnModel\", void 0);\n    SortController = SortController_1 = __decorate$E([\n        Bean('sortController')\n    ], SortController);\n    return SortController;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$C = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$D = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar ColumnHoverService = /** @class */ (function (_super) {\n    __extends$C(ColumnHoverService, _super);\n    function ColumnHoverService() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    ColumnHoverService.prototype.setMouseOver = function (columns) {\n        this.selectedColumns = columns;\n        var event = {\n            type: Events.EVENT_COLUMN_HOVER_CHANGED\n        };\n        this.eventService.dispatchEvent(event);\n    };\n    ColumnHoverService.prototype.clearMouseOver = function () {\n        this.selectedColumns = null;\n        var event = {\n            type: Events.EVENT_COLUMN_HOVER_CHANGED\n        };\n        this.eventService.dispatchEvent(event);\n    };\n    ColumnHoverService.prototype.isHovered = function (column) {\n        return !!this.selectedColumns && this.selectedColumns.indexOf(column) >= 0;\n    };\n    ColumnHoverService = __decorate$D([\n        Bean('columnHoverService')\n    ], ColumnHoverService);\n    return ColumnHoverService;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$B = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$C = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar ColumnAnimationService = /** @class */ (function (_super) {\n    __extends$B(ColumnAnimationService, _super);\n    function ColumnAnimationService() {\n        var _this = _super !== null && _super.apply(this, arguments) || this;\n        _this.executeNextFuncs = [];\n        _this.executeLaterFuncs = [];\n        _this.active = false;\n        _this.animationThreadCount = 0;\n        return _this;\n    }\n    ColumnAnimationService.prototype.postConstruct = function () {\n        var _this = this;\n        this.ctrlsService.whenReady(function (p) { return _this.gridBodyCtrl = p.gridBodyCtrl; });\n    };\n    ColumnAnimationService.prototype.isActive = function () {\n        return this.active;\n    };\n    ColumnAnimationService.prototype.start = function () {\n        if (this.active) {\n            return;\n        }\n        if (this.gridOptionsService.is('suppressColumnMoveAnimation')) {\n            return;\n        }\n        // if doing RTL, we don't animate open / close as due to how the pixels are inverted,\n        // the animation moves all the row the the right rather than to the left (ie it's the static\n        // columns that actually get their coordinates updated)\n        if (this.gridOptionsService.is('enableRtl')) {\n            return;\n        }\n        this.ensureAnimationCssClassPresent();\n        this.active = true;\n    };\n    ColumnAnimationService.prototype.finish = function () {\n        if (!this.active) {\n            return;\n        }\n        this.flush();\n        this.active = false;\n    };\n    ColumnAnimationService.prototype.executeNextVMTurn = function (func) {\n        if (this.active) {\n            this.executeNextFuncs.push(func);\n        }\n        else {\n            func();\n        }\n    };\n    ColumnAnimationService.prototype.executeLaterVMTurn = function (func) {\n        if (this.active) {\n            this.executeLaterFuncs.push(func);\n        }\n        else {\n            func();\n        }\n    };\n    ColumnAnimationService.prototype.ensureAnimationCssClassPresent = function () {\n        var _this = this;\n        // up the count, so we can tell if someone else has updated the count\n        // by the time the 'wait' func executes\n        this.animationThreadCount++;\n        var animationThreadCountCopy = this.animationThreadCount;\n        this.gridBodyCtrl.setColumnMovingCss(true);\n        this.executeLaterFuncs.push(function () {\n            // only remove the class if this thread was the last one to update it\n            if (_this.animationThreadCount === animationThreadCountCopy) {\n                _this.gridBodyCtrl.setColumnMovingCss(false);\n            }\n        });\n    };\n    ColumnAnimationService.prototype.flush = function () {\n        var nowFuncs = this.executeNextFuncs;\n        this.executeNextFuncs = [];\n        var waitFuncs = this.executeLaterFuncs;\n        this.executeLaterFuncs = [];\n        if (nowFuncs.length === 0 && waitFuncs.length === 0) {\n            return;\n        }\n        window.setTimeout(function () { return nowFuncs.forEach(function (func) { return func(); }); }, 0);\n        window.setTimeout(function () { return waitFuncs.forEach(function (func) { return func(); }); }, 300);\n    };\n    __decorate$C([\n        Autowired('ctrlsService')\n    ], ColumnAnimationService.prototype, \"ctrlsService\", void 0);\n    __decorate$C([\n        PostConstruct\n    ], ColumnAnimationService.prototype, \"postConstruct\", null);\n    ColumnAnimationService = __decorate$C([\n        Bean('columnAnimationService')\n    ], ColumnAnimationService);\n    return ColumnAnimationService;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$A = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$B = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar PaginationAutoPageSizeService = /** @class */ (function (_super) {\n    __extends$A(PaginationAutoPageSizeService, _super);\n    function PaginationAutoPageSizeService() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    PaginationAutoPageSizeService.prototype.postConstruct = function () {\n        var _this = this;\n        this.ctrlsService.whenReady(function (p) {\n            _this.centerRowContainerCon = p.centerRowContainerCtrl;\n            _this.addManagedListener(_this.eventService, Events.EVENT_BODY_HEIGHT_CHANGED, _this.checkPageSize.bind(_this));\n            _this.addManagedListener(_this.eventService, Events.EVENT_SCROLL_VISIBILITY_CHANGED, _this.checkPageSize.bind(_this));\n            _this.checkPageSize();\n        });\n    };\n    PaginationAutoPageSizeService.prototype.notActive = function () {\n        return !this.gridOptionsService.is('paginationAutoPageSize') || this.centerRowContainerCon == null;\n    };\n    PaginationAutoPageSizeService.prototype.checkPageSize = function () {\n        var _this = this;\n        if (this.notActive()) {\n            return;\n        }\n        var bodyHeight = this.centerRowContainerCon.getViewportSizeFeature().getBodyHeight();\n        if (bodyHeight > 0) {\n            var update_1 = function () {\n                var rowHeight = _this.gridOptionsService.getRowHeightAsNumber();\n                var newPageSize = Math.floor(bodyHeight / rowHeight);\n                _this.gridOptionsService.set('paginationPageSize', newPageSize);\n            };\n            if (!this.isBodyRendered) {\n                update_1();\n                this.isBodyRendered = true;\n            }\n            else {\n                debounce(function () { return update_1(); }, 50)();\n            }\n        }\n        else {\n            this.isBodyRendered = false;\n        }\n    };\n    __decorate$B([\n        Autowired('ctrlsService')\n    ], PaginationAutoPageSizeService.prototype, \"ctrlsService\", void 0);\n    __decorate$B([\n        PostConstruct\n    ], PaginationAutoPageSizeService.prototype, \"postConstruct\", null);\n    PaginationAutoPageSizeService = __decorate$B([\n        Bean('paginationAutoPageSizeService')\n    ], PaginationAutoPageSizeService);\n    return PaginationAutoPageSizeService;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$z = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$A = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar ValueCache = /** @class */ (function (_super) {\n    __extends$z(ValueCache, _super);\n    function ValueCache() {\n        var _this = _super !== null && _super.apply(this, arguments) || this;\n        _this.cacheVersion = 0;\n        return _this;\n    }\n    ValueCache.prototype.init = function () {\n        this.active = this.gridOptionsService.is('valueCache');\n        this.neverExpires = this.gridOptionsService.is('valueCacheNeverExpires');\n    };\n    ValueCache.prototype.onDataChanged = function () {\n        if (this.neverExpires) {\n            return;\n        }\n        this.expire();\n    };\n    ValueCache.prototype.expire = function () {\n        this.cacheVersion++;\n    };\n    ValueCache.prototype.setValue = function (rowNode, colId, value) {\n        if (this.active) {\n            if (rowNode.__cacheVersion !== this.cacheVersion) {\n                rowNode.__cacheVersion = this.cacheVersion;\n                rowNode.__cacheData = {};\n            }\n            rowNode.__cacheData[colId] = value;\n        }\n    };\n    ValueCache.prototype.getValue = function (rowNode, colId) {\n        if (!this.active || rowNode.__cacheVersion !== this.cacheVersion) {\n            return undefined;\n        }\n        return rowNode.__cacheData[colId];\n    };\n    __decorate$A([\n        PostConstruct\n    ], ValueCache.prototype, \"init\", null);\n    ValueCache = __decorate$A([\n        Bean('valueCache')\n    ], ValueCache);\n    return ValueCache;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$y = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$z = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n// Matches value in clipboard module\nvar SOURCE_PASTE = 'paste';\nvar ChangeDetectionService = /** @class */ (function (_super) {\n    __extends$y(ChangeDetectionService, _super);\n    function ChangeDetectionService() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    ChangeDetectionService.prototype.init = function () {\n        if (this.rowModel.getType() === 'clientSide') {\n            this.clientSideRowModel = this.rowModel;\n        }\n        this.addManagedListener(this.eventService, Events.EVENT_CELL_VALUE_CHANGED, this.onCellValueChanged.bind(this));\n    };\n    ChangeDetectionService.prototype.onCellValueChanged = function (event) {\n        // Clipboard service manages its own change detection, so no need to do it here.\n        // The clipboard manages its own as otherwise this would happen once for every cell\n        // that got updated as part of a paste operation, so e.g. if 100 cells in a paste operation,\n        // this doChangeDetection would get called 100 times (once for each cell), instead clipboard\n        // service executes the logic we have here once (in essence batching up all cell changes\n        // into one change detection).\n        if (event.source === SOURCE_PASTE) {\n            return;\n        }\n        this.doChangeDetection(event.node, event.column);\n    };\n    ChangeDetectionService.prototype.doChangeDetection = function (rowNode, column) {\n        if (this.gridOptionsService.is('suppressChangeDetection')) {\n            return;\n        }\n        // step 1 of change detection is to update the aggregated values\n        if (this.clientSideRowModel && !rowNode.isRowPinned()) {\n            var onlyChangedColumns = this.gridOptionsService.is('aggregateOnlyChangedColumns');\n            var changedPath = new ChangedPath(onlyChangedColumns, this.clientSideRowModel.getRootNode());\n            changedPath.addParentNode(rowNode.parent, [column]);\n            this.clientSideRowModel.doAggregate(changedPath);\n        }\n        // step 2 of change detection is to refresh the cells\n        this.rowRenderer.refreshCells();\n    };\n    __decorate$z([\n        Autowired('rowModel')\n    ], ChangeDetectionService.prototype, \"rowModel\", void 0);\n    __decorate$z([\n        Autowired('rowRenderer')\n    ], ChangeDetectionService.prototype, \"rowRenderer\", void 0);\n    __decorate$z([\n        PostConstruct\n    ], ChangeDetectionService.prototype, \"init\", null);\n    ChangeDetectionService = __decorate$z([\n        Bean('changeDetectionService')\n    ], ChangeDetectionService);\n    return ChangeDetectionService;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$x = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$y = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar AgComponentUtils = /** @class */ (function (_super) {\n    __extends$x(AgComponentUtils, _super);\n    function AgComponentUtils() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    AgComponentUtils.prototype.adaptFunction = function (propertyName, jsCompFunc) {\n        var metadata = this.componentMetadataProvider.retrieve(propertyName);\n        if (metadata && metadata.functionAdapter) {\n            return metadata.functionAdapter(jsCompFunc);\n        }\n        return null;\n    };\n    AgComponentUtils.prototype.adaptCellRendererFunction = function (callback) {\n        var Adapter = /** @class */ (function () {\n            function Adapter() {\n            }\n            Adapter.prototype.refresh = function (params) {\n                return false;\n            };\n            Adapter.prototype.getGui = function () {\n                return this.eGui;\n            };\n            Adapter.prototype.init = function (params) {\n                var callbackResult = callback(params);\n                var type = typeof callbackResult;\n                if (type === 'string' || type === 'number' || type === 'boolean') {\n                    this.eGui = loadTemplate('<span>' + callbackResult + '</span>');\n                    return;\n                }\n                if (callbackResult == null) {\n                    this.eGui = loadTemplate('<span></span>');\n                    return;\n                }\n                this.eGui = callbackResult;\n            };\n            return Adapter;\n        }());\n        return Adapter;\n    };\n    AgComponentUtils.prototype.doesImplementIComponent = function (candidate) {\n        if (!candidate) {\n            return false;\n        }\n        return candidate.prototype && 'getGui' in candidate.prototype;\n    };\n    __decorate$y([\n        Autowired(\"componentMetadataProvider\")\n    ], AgComponentUtils.prototype, \"componentMetadataProvider\", void 0);\n    AgComponentUtils = __decorate$y([\n        Bean(\"agComponentUtils\")\n    ], AgComponentUtils);\n    return AgComponentUtils;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$w = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$x = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar ComponentMetadataProvider = /** @class */ (function (_super) {\n    __extends$w(ComponentMetadataProvider, _super);\n    function ComponentMetadataProvider() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    ComponentMetadataProvider.prototype.postConstruct = function () {\n        this.componentMetaData = {\n            dateComponent: {\n                mandatoryMethodList: ['getDate', 'setDate'],\n                optionalMethodList: ['afterGuiAttached', 'setInputPlaceholder', 'setInputAriaLabel']\n            },\n            detailCellRenderer: {\n                mandatoryMethodList: [],\n                optionalMethodList: ['refresh'],\n                functionAdapter: this.agComponentUtils.adaptCellRendererFunction.bind(this.agComponentUtils)\n            },\n            headerComponent: {\n                mandatoryMethodList: [],\n                optionalMethodList: ['refresh']\n            },\n            headerGroupComponent: {\n                mandatoryMethodList: [],\n                optionalMethodList: []\n            },\n            loadingCellRenderer: {\n                mandatoryMethodList: [],\n                optionalMethodList: []\n            },\n            loadingOverlayComponent: {\n                mandatoryMethodList: [],\n                optionalMethodList: []\n            },\n            noRowsOverlayComponent: {\n                mandatoryMethodList: [],\n                optionalMethodList: []\n            },\n            floatingFilterComponent: {\n                mandatoryMethodList: ['onParentModelChanged'],\n                optionalMethodList: ['afterGuiAttached']\n            },\n            floatingFilterWrapperComponent: {\n                mandatoryMethodList: [],\n                optionalMethodList: []\n            },\n            cellRenderer: {\n                mandatoryMethodList: [],\n                optionalMethodList: ['refresh', 'afterGuiAttached'],\n                functionAdapter: this.agComponentUtils.adaptCellRendererFunction.bind(this.agComponentUtils)\n            },\n            cellEditor: {\n                mandatoryMethodList: ['getValue'],\n                optionalMethodList: ['isPopup', 'isCancelBeforeStart', 'isCancelAfterEnd', 'getPopupPosition', 'focusIn', 'focusOut', 'afterGuiAttached']\n            },\n            innerRenderer: {\n                mandatoryMethodList: [],\n                optionalMethodList: ['afterGuiAttached'],\n                functionAdapter: this.agComponentUtils.adaptCellRendererFunction.bind(this.agComponentUtils)\n            },\n            fullWidthCellRenderer: {\n                mandatoryMethodList: [],\n                optionalMethodList: ['refresh', 'afterGuiAttached'],\n                functionAdapter: this.agComponentUtils.adaptCellRendererFunction.bind(this.agComponentUtils)\n            },\n            groupRowRenderer: {\n                mandatoryMethodList: [],\n                optionalMethodList: ['afterGuiAttached'],\n                functionAdapter: this.agComponentUtils.adaptCellRendererFunction.bind(this.agComponentUtils)\n            },\n            filter: {\n                mandatoryMethodList: ['isFilterActive', 'doesFilterPass', 'getModel', 'setModel'],\n                optionalMethodList: ['afterGuiAttached', 'afterGuiDetached', 'onNewRowsLoaded', 'getModelAsString', 'onFloatingFilterChanged', 'onAnyFilterChanged']\n            },\n            filterComponent: {\n                mandatoryMethodList: ['isFilterActive', 'doesFilterPass', 'getModel', 'setModel'],\n                optionalMethodList: ['afterGuiAttached', 'afterGuiDetached', 'onNewRowsLoaded', 'getModelAsString', 'onFloatingFilterChanged', 'onAnyFilterChanged']\n            },\n            statusPanel: {\n                mandatoryMethodList: [],\n                optionalMethodList: ['afterGuiAttached'],\n            },\n            toolPanel: {\n                mandatoryMethodList: [],\n                optionalMethodList: ['refresh', 'afterGuiAttached']\n            },\n            tooltipComponent: {\n                mandatoryMethodList: [],\n                optionalMethodList: []\n            }\n        };\n    };\n    ComponentMetadataProvider.prototype.retrieve = function (name) {\n        return this.componentMetaData[name];\n    };\n    __decorate$x([\n        Autowired(\"agComponentUtils\")\n    ], ComponentMetadataProvider.prototype, \"agComponentUtils\", void 0);\n    __decorate$x([\n        PostConstruct\n    ], ComponentMetadataProvider.prototype, \"postConstruct\", null);\n    ComponentMetadataProvider = __decorate$x([\n        Bean(\"componentMetadataProvider\")\n    ], ComponentMetadataProvider);\n    return ComponentMetadataProvider;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$v = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$w = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __read$6 = (undefined && undefined.__read) || function (o, n) {\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n    if (!m) return o;\n    var i = m.call(o), r, ar = [], e;\n    try {\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n    }\n    catch (error) { e = { error: error }; }\n    finally {\n        try {\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\n        }\n        finally { if (e) throw e.error; }\n    }\n    return ar;\n};\nvar __spread$5 = (undefined && undefined.__spread) || function () {\n    for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read$6(arguments[i]));\n    return ar;\n};\nvar DEFAULT_ROW_HEIGHT = 25;\nvar MIN_COL_WIDTH = 10;\nvar MAT_GRID_SIZE = 8;\nvar BASE_GRID_SIZE = 4;\nvar BALHAM_GRID_SIZE = 4;\nvar ALPINE_GRID_SIZE = 6;\nvar HARD_CODED_SIZES = {\n    // this item is required for custom themes\n    'ag-theme-custom': {\n        headerHeight: 25,\n        headerCellMinWidth: 24,\n        listItemHeight: BASE_GRID_SIZE * 5,\n        rowHeight: 25,\n        chartMenuPanelWidth: 220\n    },\n    'ag-theme-material': {\n        headerHeight: MAT_GRID_SIZE * 7,\n        headerCellMinWidth: 48,\n        listItemHeight: MAT_GRID_SIZE * 4,\n        rowHeight: MAT_GRID_SIZE * 6,\n        chartMenuPanelWidth: 240\n    },\n    'ag-theme-balham': {\n        headerHeight: BALHAM_GRID_SIZE * 8,\n        headerCellMinWidth: 24,\n        listItemHeight: BALHAM_GRID_SIZE * 6,\n        rowHeight: BALHAM_GRID_SIZE * 7,\n        chartMenuPanelWidth: 220\n    },\n    'ag-theme-alpine': {\n        headerHeight: ALPINE_GRID_SIZE * 8,\n        headerCellMinWidth: 36,\n        listItemHeight: ALPINE_GRID_SIZE * 4,\n        rowHeight: ALPINE_GRID_SIZE * 7,\n        chartMenuPanelWidth: 240\n    }\n};\n/**\n * this object contains a list of Sass variables and an array\n * of CSS styles required to get the correct value.\n * eg. $virtual-item-height requires a structure, so we can get its height.\n * <div class=\"ag-theme-balham\">\n *     <div class=\"ag-virtual-list-container\">\n *         <div class=\"ag-virtual-list-item\"></div>\n *     </div>\n * </div>\n */\nvar SASS_PROPERTY_BUILDER = {\n    headerHeight: ['ag-header-row'],\n    headerCellMinWidth: ['ag-header-cell'],\n    listItemHeight: ['ag-virtual-list-item'],\n    rowHeight: ['ag-row'],\n    chartMenuPanelWidth: ['ag-chart-docked-container']\n};\nvar Environment = /** @class */ (function (_super) {\n    __extends$v(Environment, _super);\n    function Environment() {\n        var _this = _super !== null && _super.apply(this, arguments) || this;\n        _this.calculatedSizes = {};\n        return _this;\n    }\n    Environment.prototype.postConstruct = function () {\n        var _this = this;\n        var _a;\n        var el = (_a = this.getTheme().el) !== null && _a !== void 0 ? _a : this.eGridDiv;\n        this.mutationObserver = new MutationObserver(function () {\n            _this.calculatedSizes = {};\n            _this.fireGridStylesChangedEvent();\n        });\n        this.mutationObserver.observe(el || this.eGridDiv, {\n            attributes: true,\n            attributeFilter: ['class']\n        });\n    };\n    Environment.prototype.fireGridStylesChangedEvent = function () {\n        var event = {\n            type: Events.EVENT_GRID_STYLES_CHANGED\n        };\n        this.eventService.dispatchEvent(event);\n    };\n    Environment.prototype.getSassVariable = function (key) {\n        var _a = this.getTheme(), themeFamily = _a.themeFamily, el = _a.el;\n        if (!themeFamily || themeFamily.indexOf('ag-theme') !== 0) {\n            return;\n        }\n        if (!this.calculatedSizes) {\n            this.calculatedSizes = {};\n        }\n        if (!this.calculatedSizes[themeFamily]) {\n            this.calculatedSizes[themeFamily] = {};\n        }\n        var size = this.calculatedSizes[themeFamily][key];\n        if (size != null) {\n            return size;\n        }\n        this.calculatedSizes[themeFamily][key] = this.calculateValueForSassProperty(key, themeFamily, el);\n        return this.calculatedSizes[themeFamily][key];\n    };\n    Environment.prototype.calculateValueForSassProperty = function (property, theme, themeElement) {\n        var _a;\n        var useTheme = 'ag-theme-' + (theme.match('material') ? 'material' : theme.match('balham') ? 'balham' : theme.match('alpine') ? 'alpine' : 'custom');\n        var defaultValue = HARD_CODED_SIZES[useTheme][property];\n        var eDocument = this.gridOptionsService.getDocument();\n        if (!themeElement) {\n            themeElement = this.eGridDiv;\n        }\n        if (!SASS_PROPERTY_BUILDER[property]) {\n            return defaultValue;\n        }\n        var classList = SASS_PROPERTY_BUILDER[property];\n        var div = eDocument.createElement('div');\n        // this will apply SASS variables that were manually added to the current theme\n        var classesFromThemeElement = Array.from(themeElement.classList);\n        (_a = div.classList).add.apply(_a, __spread$5([theme], classesFromThemeElement));\n        div.style.position = 'absolute';\n        var el = classList.reduce(function (prevEl, currentClass) {\n            var currentDiv = eDocument.createElement('div');\n            currentDiv.style.position = 'static';\n            currentDiv.classList.add(currentClass);\n            prevEl.appendChild(currentDiv);\n            return currentDiv;\n        }, div);\n        var calculatedValue = 0;\n        if (eDocument.body) {\n            eDocument.body.appendChild(div);\n            var sizeName = property.toLowerCase().indexOf('height') !== -1 ? 'height' : 'width';\n            calculatedValue = parseInt(window.getComputedStyle(el)[sizeName], 10);\n            eDocument.body.removeChild(div);\n        }\n        return calculatedValue || defaultValue;\n    };\n    Environment.prototype.isThemeDark = function () {\n        var theme = this.getTheme().theme;\n        return !!theme && theme.indexOf('dark') >= 0;\n    };\n    Environment.prototype.chartMenuPanelWidth = function () {\n        return this.getSassVariable('chartMenuPanelWidth');\n    };\n    Environment.prototype.getTheme = function () {\n        var reg = /\\bag-(material|(?:theme-([\\w\\-]*)))\\b/g;\n        var el = this.eGridDiv;\n        var themeMatch = null;\n        var allThemes = [];\n        while (el) {\n            themeMatch = reg.exec(el.className);\n            if (!themeMatch) {\n                el = el.parentElement || undefined;\n            }\n            else {\n                var matched = el.className.match(reg);\n                if (matched) {\n                    allThemes = matched;\n                }\n                break;\n            }\n        }\n        if (!themeMatch) {\n            return { allThemes: allThemes };\n        }\n        var theme = themeMatch[0];\n        return { theme: theme, el: el, themeFamily: theme.replace(/-dark$/, ''), allThemes: allThemes };\n    };\n    Environment.prototype.getFromTheme = function (defaultValue, sassVariableName) {\n        var _a;\n        return (_a = this.getSassVariable(sassVariableName)) !== null && _a !== void 0 ? _a : defaultValue;\n    };\n    Environment.prototype.getDefaultRowHeight = function () {\n        return this.getFromTheme(DEFAULT_ROW_HEIGHT, 'rowHeight');\n    };\n    Environment.prototype.getListItemHeight = function () {\n        return this.getFromTheme(20, 'listItemHeight');\n    };\n    Environment.prototype.setRowHeightVariable = function (height) {\n        var oldRowHeight = this.eGridDiv.style.getPropertyValue('--ag-line-height').trim();\n        var newRowHeight = height + \"px\";\n        if (oldRowHeight != newRowHeight) {\n            this.eGridDiv.style.setProperty('--ag-line-height', newRowHeight);\n        }\n    };\n    Environment.prototype.getMinColWidth = function () {\n        var measuredMin = this.getFromTheme(null, 'headerCellMinWidth');\n        return exists(measuredMin) ? Math.max(measuredMin, MIN_COL_WIDTH) : MIN_COL_WIDTH;\n    };\n    Environment.prototype.destroy = function () {\n        this.calculatedSizes = null;\n        if (this.mutationObserver) {\n            this.mutationObserver.disconnect();\n        }\n        _super.prototype.destroy.call(this);\n    };\n    __decorate$w([\n        Autowired('eGridDiv')\n    ], Environment.prototype, \"eGridDiv\", void 0);\n    __decorate$w([\n        PostConstruct\n    ], Environment.prototype, \"postConstruct\", null);\n    Environment = __decorate$w([\n        Bean('environment')\n    ], Environment);\n    return Environment;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$u = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$v = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __param$2 = (undefined && undefined.__param) || function (paramIndex, decorator) {\n    return function (target, key) { decorator(target, key, paramIndex); }\n};\n/**\n * This class solves the 'max height' problem, where the user might want to show more data than\n * the max div height actually allows.\n */\nvar RowContainerHeightService = /** @class */ (function (_super) {\n    __extends$u(RowContainerHeightService, _super);\n    function RowContainerHeightService() {\n        var _this = _super !== null && _super.apply(this, arguments) || this;\n        // the scrollY position\n        _this.scrollY = 0;\n        // how tall the body is\n        _this.uiBodyHeight = 0;\n        return _this;\n    }\n    RowContainerHeightService.prototype.agWire = function (loggerFactory) {\n        this.logger = loggerFactory.create(\"RowContainerHeightService\");\n    };\n    RowContainerHeightService.prototype.postConstruct = function () {\n        this.addManagedListener(this.eventService, Events.EVENT_BODY_HEIGHT_CHANGED, this.updateOffset.bind(this));\n        this.maxDivHeight = getMaxDivHeight();\n        this.logger.log('maxDivHeight = ' + this.maxDivHeight);\n    };\n    RowContainerHeightService.prototype.isStretching = function () {\n        return this.stretching;\n    };\n    RowContainerHeightService.prototype.getDivStretchOffset = function () {\n        return this.divStretchOffset;\n    };\n    RowContainerHeightService.prototype.updateOffset = function () {\n        if (!this.stretching) {\n            return;\n        }\n        var gridBodyCon = this.ctrlsService.getGridBodyCtrl();\n        var newScrollY = gridBodyCon.getScrollFeature().getVScrollPosition().top;\n        var newBodyHeight = this.getUiBodyHeight();\n        var atLeastOneChanged = newScrollY !== this.scrollY || newBodyHeight !== this.uiBodyHeight;\n        if (atLeastOneChanged) {\n            this.scrollY = newScrollY;\n            this.uiBodyHeight = newBodyHeight;\n            this.calculateOffset();\n        }\n    };\n    RowContainerHeightService.prototype.calculateOffset = function () {\n        this.setUiContainerHeight(this.maxDivHeight);\n        this.pixelsToShave = this.modelHeight - this.uiContainerHeight;\n        this.maxScrollY = this.uiContainerHeight - this.uiBodyHeight;\n        var scrollPercent = this.scrollY / this.maxScrollY;\n        var divStretchOffset = scrollPercent * this.pixelsToShave;\n        this.logger.log(\"Div Stretch Offset = \" + divStretchOffset + \" (\" + this.pixelsToShave + \" * \" + scrollPercent + \")\");\n        this.setDivStretchOffset(divStretchOffset);\n    };\n    RowContainerHeightService.prototype.setUiContainerHeight = function (height) {\n        if (height !== this.uiContainerHeight) {\n            this.uiContainerHeight = height;\n            this.eventService.dispatchEvent({ type: Events.EVENT_ROW_CONTAINER_HEIGHT_CHANGED });\n        }\n    };\n    RowContainerHeightService.prototype.clearOffset = function () {\n        this.setUiContainerHeight(this.modelHeight);\n        this.pixelsToShave = 0;\n        this.setDivStretchOffset(0);\n    };\n    RowContainerHeightService.prototype.setDivStretchOffset = function (newOffset) {\n        // because we are talking pixels, no point in confusing things with half numbers\n        var newOffsetFloor = typeof newOffset === 'number' ? Math.floor(newOffset) : null;\n        if (this.divStretchOffset === newOffsetFloor) {\n            return;\n        }\n        this.divStretchOffset = newOffsetFloor;\n        this.eventService.dispatchEvent({ type: Events.EVENT_HEIGHT_SCALE_CHANGED });\n    };\n    RowContainerHeightService.prototype.setModelHeight = function (modelHeight) {\n        this.modelHeight = modelHeight;\n        this.stretching = modelHeight != null // null happens when in print layout\n            && this.maxDivHeight > 0\n            && modelHeight > this.maxDivHeight;\n        if (this.stretching) {\n            this.calculateOffset();\n        }\n        else {\n            this.clearOffset();\n        }\n    };\n    RowContainerHeightService.prototype.getUiContainerHeight = function () {\n        return this.uiContainerHeight;\n    };\n    RowContainerHeightService.prototype.getRealPixelPosition = function (modelPixel) {\n        return modelPixel - this.divStretchOffset;\n    };\n    RowContainerHeightService.prototype.getUiBodyHeight = function () {\n        var gridBodyCon = this.ctrlsService.getGridBodyCtrl();\n        var pos = gridBodyCon.getScrollFeature().getVScrollPosition();\n        return pos.bottom - pos.top;\n    };\n    RowContainerHeightService.prototype.getScrollPositionForPixel = function (rowTop) {\n        if (this.pixelsToShave <= 0) {\n            return rowTop;\n        }\n        var modelMaxScroll = this.modelHeight - this.getUiBodyHeight();\n        var scrollPercent = rowTop / modelMaxScroll;\n        var scrollPixel = this.maxScrollY * scrollPercent;\n        return scrollPixel;\n    };\n    __decorate$v([\n        Autowired('ctrlsService')\n    ], RowContainerHeightService.prototype, \"ctrlsService\", void 0);\n    __decorate$v([\n        __param$2(0, Qualifier(\"loggerFactory\"))\n    ], RowContainerHeightService.prototype, \"agWire\", null);\n    __decorate$v([\n        PostConstruct\n    ], RowContainerHeightService.prototype, \"postConstruct\", null);\n    RowContainerHeightService = __decorate$v([\n        Bean('rowContainerHeightService')\n    ], RowContainerHeightService);\n    return RowContainerHeightService;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$t = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$u = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar SelectableService = /** @class */ (function (_super) {\n    __extends$t(SelectableService, _super);\n    function SelectableService() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    SelectableService.prototype.init = function () {\n        this.groupSelectsChildren = this.gridOptionsService.is('groupSelectsChildren');\n        this.isRowSelectableFunc = this.gridOptionsService.get('isRowSelectable');\n    };\n    SelectableService.prototype.updateSelectableAfterGrouping = function (rowNode) {\n        if (this.isRowSelectableFunc) {\n            var nextChildrenFunc = function (node) { return node.childrenAfterGroup; };\n            this.recurseDown(rowNode.childrenAfterGroup, nextChildrenFunc);\n        }\n    };\n    SelectableService.prototype.recurseDown = function (children, nextChildrenFunc) {\n        var _this = this;\n        if (!children) {\n            return;\n        }\n        children.forEach(function (child) {\n            if (!child.group) {\n                return;\n            } // only interested in groups\n            if (child.hasChildren()) {\n                _this.recurseDown(nextChildrenFunc(child), nextChildrenFunc);\n            }\n            var rowSelectable;\n            if (_this.groupSelectsChildren) {\n                // have this group selectable if at least one direct child is selectable\n                var firstSelectable = (nextChildrenFunc(child) || []).find(function (rowNode) { return rowNode.selectable === true; });\n                rowSelectable = exists(firstSelectable);\n            }\n            else {\n                // directly retrieve selectable value from user callback\n                rowSelectable = _this.isRowSelectableFunc ? _this.isRowSelectableFunc(child) : false;\n            }\n            child.setRowSelectable(rowSelectable);\n        });\n    };\n    __decorate$u([\n        PostConstruct\n    ], SelectableService.prototype, \"init\", null);\n    SelectableService = __decorate$u([\n        Bean('selectableService')\n    ], SelectableService);\n    return SelectableService;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$s = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$t = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar PaginationComp = /** @class */ (function (_super) {\n    __extends$s(PaginationComp, _super);\n    function PaginationComp() {\n        var _this = _super.call(this) || this;\n        _this.previousAndFirstButtonsDisabled = false;\n        _this.nextButtonDisabled = false;\n        _this.lastButtonDisabled = false;\n        _this.areListenersSetup = false;\n        return _this;\n    }\n    PaginationComp.prototype.postConstruct = function () {\n        var isRtl = this.gridOptionsService.is('enableRtl');\n        this.setTemplate(this.getTemplate());\n        this.btFirst.insertAdjacentElement('afterbegin', createIconNoSpan(isRtl ? 'last' : 'first', this.gridOptionsService));\n        this.btPrevious.insertAdjacentElement('afterbegin', createIconNoSpan(isRtl ? 'next' : 'previous', this.gridOptionsService));\n        this.btNext.insertAdjacentElement('afterbegin', createIconNoSpan(isRtl ? 'previous' : 'next', this.gridOptionsService));\n        this.btLast.insertAdjacentElement('afterbegin', createIconNoSpan(isRtl ? 'first' : 'last', this.gridOptionsService));\n        this.addManagedPropertyListener('pagination', this.onPaginationChanged.bind(this));\n        this.addManagedPropertyListener('suppressPaginationPanel', this.onPaginationChanged.bind(this));\n        this.onPaginationChanged();\n    };\n    PaginationComp.prototype.onPaginationChanged = function () {\n        var isPaging = this.gridOptionsService.is('pagination');\n        var paginationPanelEnabled = isPaging && !this.gridOptionsService.is('suppressPaginationPanel');\n        this.setDisplayed(paginationPanelEnabled);\n        if (!paginationPanelEnabled) {\n            return;\n        }\n        this.setupListeners();\n        this.enableOrDisableButtons();\n        this.updateRowLabels();\n        this.setCurrentPageLabel();\n        this.setTotalLabels();\n    };\n    PaginationComp.prototype.setupListeners = function () {\n        var _this = this;\n        if (!this.areListenersSetup) {\n            this.addManagedListener(this.eventService, Events.EVENT_PAGINATION_CHANGED, this.onPaginationChanged.bind(this));\n            [\n                { el: this.btFirst, fn: this.onBtFirst.bind(this) },\n                { el: this.btPrevious, fn: this.onBtPrevious.bind(this) },\n                { el: this.btNext, fn: this.onBtNext.bind(this) },\n                { el: this.btLast, fn: this.onBtLast.bind(this) }\n            ].forEach(function (item) {\n                var el = item.el, fn = item.fn;\n                _this.addManagedListener(el, 'click', fn);\n                _this.addManagedListener(el, 'keydown', function (e) {\n                    if (e.key === KeyCode.ENTER || e.key === KeyCode.SPACE) {\n                        e.preventDefault();\n                        fn();\n                    }\n                });\n            });\n            this.areListenersSetup = true;\n        }\n    };\n    PaginationComp.prototype.onBtFirst = function () {\n        if (!this.previousAndFirstButtonsDisabled) {\n            this.paginationProxy.goToFirstPage();\n        }\n    };\n    PaginationComp.prototype.setCurrentPageLabel = function () {\n        var pagesExist = this.paginationProxy.getTotalPages() > 0;\n        var currentPage = this.paginationProxy.getCurrentPage();\n        var toDisplay = pagesExist ? currentPage + 1 : 0;\n        this.lbCurrent.innerHTML = this.formatNumber(toDisplay);\n    };\n    PaginationComp.prototype.formatNumber = function (value) {\n        var userFunc = this.gridOptionsService.getCallback('paginationNumberFormatter');\n        if (userFunc) {\n            var params = { value: value };\n            return userFunc(params);\n        }\n        var localeTextFunc = this.localeService.getLocaleTextFunc();\n        var thousandSeparator = localeTextFunc('thousandSeparator', ',');\n        var decimalSeparator = localeTextFunc('decimalSeparator', '.');\n        return formatNumberCommas(value, thousandSeparator, decimalSeparator);\n    };\n    PaginationComp.prototype.getTemplate = function () {\n        var localeTextFunc = this.localeService.getLocaleTextFunc();\n        var strPage = localeTextFunc('page', 'Page');\n        var strTo = localeTextFunc('to', 'to');\n        var strOf = localeTextFunc('of', 'of');\n        var strFirst = localeTextFunc('firstPage', 'First Page');\n        var strPrevious = localeTextFunc('previousPage', 'Previous Page');\n        var strNext = localeTextFunc('nextPage', 'Next Page');\n        var strLast = localeTextFunc('lastPage', 'Last Page');\n        var compId = this.getCompId();\n        return /* html */ \"<div class=\\\"ag-paging-panel ag-unselectable\\\" id=\\\"ag-\" + compId + \"\\\">\\n                <span class=\\\"ag-paging-row-summary-panel\\\" role=\\\"status\\\">\\n                    <span id=\\\"ag-\" + compId + \"-first-row\\\" ref=\\\"lbFirstRowOnPage\\\" class=\\\"ag-paging-row-summary-panel-number\\\"></span>\\n                    <span id=\\\"ag-\" + compId + \"-to\\\">\" + strTo + \"</span>\\n                    <span id=\\\"ag-\" + compId + \"-last-row\\\" ref=\\\"lbLastRowOnPage\\\" class=\\\"ag-paging-row-summary-panel-number\\\"></span>\\n                    <span id=\\\"ag-\" + compId + \"-of\\\">\" + strOf + \"</span>\\n                    <span id=\\\"ag-\" + compId + \"-row-count\\\" ref=\\\"lbRecordCount\\\" class=\\\"ag-paging-row-summary-panel-number\\\"></span>\\n                </span>\\n                <span class=\\\"ag-paging-page-summary-panel\\\" role=\\\"presentation\\\">\\n                    <div ref=\\\"btFirst\\\" class=\\\"ag-paging-button\\\" role=\\\"button\\\" aria-label=\\\"\" + strFirst + \"\\\"></div>\\n                    <div ref=\\\"btPrevious\\\" class=\\\"ag-paging-button\\\" role=\\\"button\\\" aria-label=\\\"\" + strPrevious + \"\\\"></div>\\n                    <span class=\\\"ag-paging-description\\\" role=\\\"status\\\">\\n                        <span id=\\\"ag-\" + compId + \"-start-page\\\">\" + strPage + \"</span>\\n                        <span id=\\\"ag-\" + compId + \"-start-page-number\\\" ref=\\\"lbCurrent\\\" class=\\\"ag-paging-number\\\"></span>\\n                        <span id=\\\"ag-\" + compId + \"-of-page\\\">\" + strOf + \"</span>\\n                        <span id=\\\"ag-\" + compId + \"-of-page-number\\\" ref=\\\"lbTotal\\\" class=\\\"ag-paging-number\\\"></span>\\n                    </span>\\n                    <div ref=\\\"btNext\\\" class=\\\"ag-paging-button\\\" role=\\\"button\\\" aria-label=\\\"\" + strNext + \"\\\"></div>\\n                    <div ref=\\\"btLast\\\" class=\\\"ag-paging-button\\\" role=\\\"button\\\" aria-label=\\\"\" + strLast + \"\\\"></div>\\n                </span>\\n            </div>\";\n    };\n    PaginationComp.prototype.onBtNext = function () {\n        if (!this.nextButtonDisabled) {\n            this.paginationProxy.goToNextPage();\n        }\n    };\n    PaginationComp.prototype.onBtPrevious = function () {\n        if (!this.previousAndFirstButtonsDisabled) {\n            this.paginationProxy.goToPreviousPage();\n        }\n    };\n    PaginationComp.prototype.onBtLast = function () {\n        if (!this.lastButtonDisabled) {\n            this.paginationProxy.goToLastPage();\n        }\n    };\n    PaginationComp.prototype.enableOrDisableButtons = function () {\n        var currentPage = this.paginationProxy.getCurrentPage();\n        var maxRowFound = this.paginationProxy.isLastPageFound();\n        var totalPages = this.paginationProxy.getTotalPages();\n        this.previousAndFirstButtonsDisabled = currentPage === 0;\n        this.toggleButtonDisabled(this.btFirst, this.previousAndFirstButtonsDisabled);\n        this.toggleButtonDisabled(this.btPrevious, this.previousAndFirstButtonsDisabled);\n        var zeroPagesToDisplay = this.isZeroPagesToDisplay();\n        var onLastPage = maxRowFound && currentPage === (totalPages - 1);\n        this.nextButtonDisabled = onLastPage || zeroPagesToDisplay;\n        this.lastButtonDisabled = !maxRowFound || zeroPagesToDisplay || currentPage === (totalPages - 1);\n        this.toggleButtonDisabled(this.btNext, this.nextButtonDisabled);\n        this.toggleButtonDisabled(this.btLast, this.lastButtonDisabled);\n    };\n    PaginationComp.prototype.toggleButtonDisabled = function (button, disabled) {\n        setAriaDisabled(button, disabled);\n        button.classList.toggle('ag-disabled', disabled);\n        if (disabled) {\n            button.removeAttribute('tabindex');\n        }\n        else {\n            button.setAttribute('tabindex', '0');\n        }\n    };\n    PaginationComp.prototype.updateRowLabels = function () {\n        var currentPage = this.paginationProxy.getCurrentPage();\n        var pageSize = this.paginationProxy.getPageSize();\n        var maxRowFound = this.paginationProxy.isLastPageFound();\n        var rowCount = this.paginationProxy.isLastPageFound() ?\n            this.paginationProxy.getMasterRowCount() : null;\n        var startRow;\n        var endRow;\n        if (this.isZeroPagesToDisplay()) {\n            startRow = endRow = 0;\n        }\n        else {\n            startRow = (pageSize * currentPage) + 1;\n            endRow = startRow + pageSize - 1;\n            if (maxRowFound && endRow > rowCount) {\n                endRow = rowCount;\n            }\n        }\n        this.lbFirstRowOnPage.innerHTML = this.formatNumber(startRow);\n        if (this.rowNodeBlockLoader.isLoading()) {\n            var translate = this.localeService.getLocaleTextFunc();\n            this.lbLastRowOnPage.innerHTML = translate('pageLastRowUnknown', '?');\n        }\n        else {\n            this.lbLastRowOnPage.innerHTML = this.formatNumber(endRow);\n        }\n    };\n    PaginationComp.prototype.isZeroPagesToDisplay = function () {\n        var maxRowFound = this.paginationProxy.isLastPageFound();\n        var totalPages = this.paginationProxy.getTotalPages();\n        return maxRowFound && totalPages === 0;\n    };\n    PaginationComp.prototype.setTotalLabels = function () {\n        var lastPageFound = this.paginationProxy.isLastPageFound();\n        var totalPages = this.paginationProxy.getTotalPages();\n        var rowCount = lastPageFound ? this.paginationProxy.getMasterRowCount() : null;\n        // When `pivotMode=true` and no grouping or value columns exist, a single 'hidden' group row (root node) is in\n        // the grid and the pagination totals will correctly display total = 1. However this is confusing to users as\n        // they can't see it. To address this UX issue we simply set the totals to zero in the pagination panel.\n        if (rowCount === 1) {\n            var firstRow = this.paginationProxy.getRow(0);\n            // a group node with no group or agg data will not be visible to users\n            var hiddenGroupRow = firstRow && firstRow.group && !(firstRow.groupData || firstRow.aggData);\n            if (hiddenGroupRow) {\n                this.setTotalLabelsToZero();\n                return;\n            }\n        }\n        if (lastPageFound) {\n            this.lbTotal.innerHTML = this.formatNumber(totalPages);\n            this.lbRecordCount.innerHTML = this.formatNumber(rowCount);\n        }\n        else {\n            var moreText = this.localeService.getLocaleTextFunc()('more', 'more');\n            this.lbTotal.innerHTML = moreText;\n            this.lbRecordCount.innerHTML = moreText;\n        }\n    };\n    PaginationComp.prototype.setTotalLabelsToZero = function () {\n        this.lbFirstRowOnPage.innerHTML = this.formatNumber(0);\n        this.lbCurrent.innerHTML = this.formatNumber(0);\n        this.lbLastRowOnPage.innerHTML = this.formatNumber(0);\n        this.lbTotal.innerHTML = this.formatNumber(0);\n        this.lbRecordCount.innerHTML = this.formatNumber(0);\n    };\n    __decorate$t([\n        Autowired('paginationProxy')\n    ], PaginationComp.prototype, \"paginationProxy\", void 0);\n    __decorate$t([\n        Autowired('rowNodeBlockLoader')\n    ], PaginationComp.prototype, \"rowNodeBlockLoader\", void 0);\n    __decorate$t([\n        RefSelector('btFirst')\n    ], PaginationComp.prototype, \"btFirst\", void 0);\n    __decorate$t([\n        RefSelector('btPrevious')\n    ], PaginationComp.prototype, \"btPrevious\", void 0);\n    __decorate$t([\n        RefSelector('btNext')\n    ], PaginationComp.prototype, \"btNext\", void 0);\n    __decorate$t([\n        RefSelector('btLast')\n    ], PaginationComp.prototype, \"btLast\", void 0);\n    __decorate$t([\n        RefSelector('lbRecordCount')\n    ], PaginationComp.prototype, \"lbRecordCount\", void 0);\n    __decorate$t([\n        RefSelector('lbFirstRowOnPage')\n    ], PaginationComp.prototype, \"lbFirstRowOnPage\", void 0);\n    __decorate$t([\n        RefSelector('lbLastRowOnPage')\n    ], PaginationComp.prototype, \"lbLastRowOnPage\", void 0);\n    __decorate$t([\n        RefSelector('lbCurrent')\n    ], PaginationComp.prototype, \"lbCurrent\", void 0);\n    __decorate$t([\n        RefSelector('lbTotal')\n    ], PaginationComp.prototype, \"lbTotal\", void 0);\n    __decorate$t([\n        PostConstruct\n    ], PaginationComp.prototype, \"postConstruct\", null);\n    return PaginationComp;\n}(Component));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$r = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$s = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar LoadingType;\n(function (LoadingType) {\n    LoadingType[LoadingType[\"Loading\"] = 0] = \"Loading\";\n    LoadingType[LoadingType[\"NoRows\"] = 1] = \"NoRows\";\n})(LoadingType || (LoadingType = {}));\nvar OverlayWrapperComponent = /** @class */ (function (_super) {\n    __extends$r(OverlayWrapperComponent, _super);\n    function OverlayWrapperComponent() {\n        var _this = _super.call(this, OverlayWrapperComponent.TEMPLATE) || this;\n        _this.inProgress = false;\n        _this.destroyRequested = false;\n        _this.manuallyDisplayed = false;\n        return _this;\n    }\n    OverlayWrapperComponent.prototype.updateLayoutClasses = function (cssClass, params) {\n        var overlayWrapperClassList = this.eOverlayWrapper.classList;\n        overlayWrapperClassList.toggle(LayoutCssClasses.AUTO_HEIGHT, params.autoHeight);\n        overlayWrapperClassList.toggle(LayoutCssClasses.NORMAL, params.normal);\n        overlayWrapperClassList.toggle(LayoutCssClasses.PRINT, params.print);\n    };\n    OverlayWrapperComponent.prototype.postConstruct = function () {\n        this.createManagedBean(new LayoutFeature(this));\n        this.setDisplayed(false, { skipAriaHidden: true });\n        this.addManagedListener(this.eventService, Events.EVENT_ROW_DATA_UPDATED, this.onRowDataUpdated.bind(this));\n        this.addManagedListener(this.eventService, Events.EVENT_NEW_COLUMNS_LOADED, this.onNewColumnsLoaded.bind(this));\n        if (this.gridOptionsService.isRowModelType('clientSide') && !this.gridOptionsService.get('rowData')) {\n            this.showLoadingOverlay();\n        }\n        this.gridApi.registerOverlayWrapperComp(this);\n    };\n    OverlayWrapperComponent.prototype.setWrapperTypeClass = function (loadingType) {\n        var overlayWrapperClassList = this.eOverlayWrapper.classList;\n        overlayWrapperClassList.toggle('ag-overlay-loading-wrapper', loadingType === LoadingType.Loading);\n        overlayWrapperClassList.toggle('ag-overlay-no-rows-wrapper', loadingType === LoadingType.NoRows);\n    };\n    OverlayWrapperComponent.prototype.showLoadingOverlay = function () {\n        if (this.gridOptionsService.is('suppressLoadingOverlay')) {\n            return;\n        }\n        var params = {};\n        var compDetails = this.userComponentFactory.getLoadingOverlayCompDetails(params);\n        var promise = compDetails.newAgStackInstance();\n        this.showOverlay(promise, LoadingType.Loading);\n    };\n    OverlayWrapperComponent.prototype.showNoRowsOverlay = function () {\n        if (this.gridOptionsService.is('suppressNoRowsOverlay')) {\n            return;\n        }\n        var params = {};\n        var compDetails = this.userComponentFactory.getNoRowsOverlayCompDetails(params);\n        var promise = compDetails.newAgStackInstance();\n        this.showOverlay(promise, LoadingType.NoRows);\n    };\n    OverlayWrapperComponent.prototype.showOverlay = function (workItem, type) {\n        var _this = this;\n        if (this.inProgress) {\n            return;\n        }\n        this.setWrapperTypeClass(type);\n        this.destroyActiveOverlay();\n        this.inProgress = true;\n        if (workItem) {\n            workItem.then(function (comp) {\n                _this.inProgress = false;\n                _this.eOverlayWrapper.appendChild(comp.getGui());\n                _this.activeOverlay = comp;\n                if (_this.destroyRequested) {\n                    _this.destroyRequested = false;\n                    _this.destroyActiveOverlay();\n                }\n            });\n        }\n        this.manuallyDisplayed = this.columnModel.isReady() && !this.paginationProxy.isEmpty();\n        this.setDisplayed(true, { skipAriaHidden: true });\n    };\n    OverlayWrapperComponent.prototype.destroyActiveOverlay = function () {\n        if (this.inProgress) {\n            this.destroyRequested = true;\n            return;\n        }\n        if (!this.activeOverlay) {\n            return;\n        }\n        this.activeOverlay = this.getContext().destroyBean(this.activeOverlay);\n        clearElement(this.eOverlayWrapper);\n    };\n    OverlayWrapperComponent.prototype.hideOverlay = function () {\n        this.manuallyDisplayed = false;\n        this.destroyActiveOverlay();\n        this.setDisplayed(false, { skipAriaHidden: true });\n    };\n    OverlayWrapperComponent.prototype.destroy = function () {\n        this.destroyActiveOverlay();\n        _super.prototype.destroy.call(this);\n    };\n    OverlayWrapperComponent.prototype.showOrHideOverlay = function () {\n        var isEmpty = this.paginationProxy.isEmpty();\n        var isSuppressNoRowsOverlay = this.gridOptionsService.is('suppressNoRowsOverlay');\n        if (isEmpty && !isSuppressNoRowsOverlay) {\n            this.showNoRowsOverlay();\n        }\n        else {\n            this.hideOverlay();\n        }\n    };\n    OverlayWrapperComponent.prototype.onRowDataUpdated = function () {\n        this.showOrHideOverlay();\n    };\n    OverlayWrapperComponent.prototype.onNewColumnsLoaded = function () {\n        // hide overlay if columns and rows exist, this can happen if columns are loaded after data.\n        // this problem exists before of the race condition between the services (column controller in this case)\n        // and the view (grid panel). if the model beans were all initialised first, and then the view beans second,\n        // this race condition would not happen.\n        if (this.columnModel.isReady() && !this.paginationProxy.isEmpty() && !this.manuallyDisplayed) {\n            this.hideOverlay();\n        }\n    };\n    // wrapping in outer div, and wrapper, is needed to center the loading icon\n    OverlayWrapperComponent.TEMPLATE = \"\\n        <div class=\\\"ag-overlay\\\" aria-hidden=\\\"true\\\">\\n            <div class=\\\"ag-overlay-panel\\\">\\n                <div class=\\\"ag-overlay-wrapper\\\" ref=\\\"eOverlayWrapper\\\"></div>\\n            </div>\\n        </div>\";\n    __decorate$s([\n        Autowired('userComponentFactory')\n    ], OverlayWrapperComponent.prototype, \"userComponentFactory\", void 0);\n    __decorate$s([\n        Autowired('paginationProxy')\n    ], OverlayWrapperComponent.prototype, \"paginationProxy\", void 0);\n    __decorate$s([\n        Autowired('gridApi')\n    ], OverlayWrapperComponent.prototype, \"gridApi\", void 0);\n    __decorate$s([\n        Autowired('columnModel')\n    ], OverlayWrapperComponent.prototype, \"columnModel\", void 0);\n    __decorate$s([\n        RefSelector('eOverlayWrapper')\n    ], OverlayWrapperComponent.prototype, \"eOverlayWrapper\", void 0);\n    __decorate$s([\n        PostConstruct\n    ], OverlayWrapperComponent.prototype, \"postConstruct\", null);\n    return OverlayWrapperComponent;\n}(Component));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$q = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$r = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar RowPositionUtils = /** @class */ (function (_super) {\n    __extends$q(RowPositionUtils, _super);\n    function RowPositionUtils() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    RowPositionUtils.prototype.getFirstRow = function () {\n        var rowIndex = 0;\n        var rowPinned;\n        if (this.pinnedRowModel.getPinnedTopRowCount()) {\n            rowPinned = 'top';\n        }\n        else if (this.rowModel.getRowCount()) {\n            rowPinned = null;\n            rowIndex = this.paginationProxy.getPageFirstRow();\n        }\n        else if (this.pinnedRowModel.getPinnedBottomRowCount()) {\n            rowPinned = 'bottom';\n        }\n        return rowPinned === undefined ? null : { rowIndex: rowIndex, rowPinned: rowPinned };\n    };\n    RowPositionUtils.prototype.getLastRow = function () {\n        var rowIndex;\n        var rowPinned = null;\n        var pinnedBottomCount = this.pinnedRowModel.getPinnedBottomRowCount();\n        var pinnedTopCount = this.pinnedRowModel.getPinnedTopRowCount();\n        if (pinnedBottomCount) {\n            rowPinned = 'bottom';\n            rowIndex = pinnedBottomCount - 1;\n        }\n        else if (this.rowModel.getRowCount()) {\n            rowPinned = null;\n            rowIndex = this.paginationProxy.getPageLastRow();\n        }\n        else if (pinnedTopCount) {\n            rowPinned = 'top';\n            rowIndex = pinnedTopCount - 1;\n        }\n        return rowIndex === undefined ? null : { rowIndex: rowIndex, rowPinned: rowPinned };\n    };\n    RowPositionUtils.prototype.getRowNode = function (gridRow) {\n        switch (gridRow.rowPinned) {\n            case 'top':\n                return this.pinnedRowModel.getPinnedTopRowData()[gridRow.rowIndex];\n            case 'bottom':\n                return this.pinnedRowModel.getPinnedBottomRowData()[gridRow.rowIndex];\n            default:\n                return this.rowModel.getRow(gridRow.rowIndex);\n        }\n    };\n    RowPositionUtils.prototype.sameRow = function (rowA, rowB) {\n        // if both missing\n        if (!rowA && !rowB) {\n            return true;\n        }\n        // if only one missing\n        if ((rowA && !rowB) || (!rowA && rowB)) {\n            return false;\n        }\n        // otherwise compare (use == to compare rowPinned because it can be null or undefined)\n        return rowA.rowIndex === rowB.rowIndex && rowA.rowPinned == rowB.rowPinned;\n    };\n    // tests if this row selection is before the other row selection\n    RowPositionUtils.prototype.before = function (rowA, rowB) {\n        switch (rowA.rowPinned) {\n            case 'top':\n                // we we are floating top, and other isn't, then we are always before\n                if (rowB.rowPinned !== 'top') {\n                    return true;\n                }\n                break;\n            case 'bottom':\n                // if we are floating bottom, and the other isn't, then we are never before\n                if (rowB.rowPinned !== 'bottom') {\n                    return false;\n                }\n                break;\n            default:\n                // if we are not floating, but the other one is floating...\n                if (exists(rowB.rowPinned)) {\n                    return rowB.rowPinned !== 'top';\n                }\n                break;\n        }\n        return rowA.rowIndex < rowB.rowIndex;\n    };\n    RowPositionUtils.prototype.rowMax = function (rows) {\n        var _this = this;\n        var max;\n        rows.forEach(function (row) {\n            if (max === undefined || _this.before(max, row)) {\n                max = row;\n            }\n        });\n        return max;\n    };\n    RowPositionUtils.prototype.rowMin = function (rows) {\n        var _this = this;\n        var min;\n        rows.forEach(function (row) {\n            if (min === undefined || _this.before(row, min)) {\n                min = row;\n            }\n        });\n        return min;\n    };\n    __decorate$r([\n        Autowired('rowModel')\n    ], RowPositionUtils.prototype, \"rowModel\", void 0);\n    __decorate$r([\n        Autowired('pinnedRowModel')\n    ], RowPositionUtils.prototype, \"pinnedRowModel\", void 0);\n    __decorate$r([\n        Autowired('paginationProxy')\n    ], RowPositionUtils.prototype, \"paginationProxy\", void 0);\n    RowPositionUtils = __decorate$r([\n        Bean('rowPositionUtils')\n    ], RowPositionUtils);\n    return RowPositionUtils;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$p = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$q = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar CellPositionUtils = /** @class */ (function (_super) {\n    __extends$p(CellPositionUtils, _super);\n    function CellPositionUtils() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    CellPositionUtils.prototype.createId = function (cellPosition) {\n        var rowIndex = cellPosition.rowIndex, rowPinned = cellPosition.rowPinned, column = cellPosition.column;\n        return this.createIdFromValues({ rowIndex: rowIndex, column: column, rowPinned: rowPinned });\n    };\n    CellPositionUtils.prototype.createIdFromValues = function (cellPosition) {\n        var rowIndex = cellPosition.rowIndex, rowPinned = cellPosition.rowPinned, column = cellPosition.column;\n        return rowIndex + \".\" + (rowPinned == null ? 'null' : rowPinned) + \".\" + column.getId();\n    };\n    CellPositionUtils.prototype.equals = function (cellA, cellB) {\n        var colsMatch = cellA.column === cellB.column;\n        var floatingMatch = cellA.rowPinned === cellB.rowPinned;\n        var indexMatch = cellA.rowIndex === cellB.rowIndex;\n        return colsMatch && floatingMatch && indexMatch;\n    };\n    CellPositionUtils = __decorate$q([\n        Bean('cellPositionUtils')\n    ], CellPositionUtils);\n    return CellPositionUtils;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$o = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar UndoRedoAction = /** @class */ (function () {\n    function UndoRedoAction(cellValueChanges) {\n        this.cellValueChanges = cellValueChanges;\n    }\n    return UndoRedoAction;\n}());\nvar RangeUndoRedoAction = /** @class */ (function (_super) {\n    __extends$o(RangeUndoRedoAction, _super);\n    function RangeUndoRedoAction(cellValueChanges, initialRange, finalRange, ranges) {\n        var _this = _super.call(this, cellValueChanges) || this;\n        _this.initialRange = initialRange;\n        _this.finalRange = finalRange;\n        _this.ranges = ranges;\n        return _this;\n    }\n    return RangeUndoRedoAction;\n}(UndoRedoAction));\nvar UndoRedoStack = /** @class */ (function () {\n    function UndoRedoStack(maxStackSize) {\n        this.actionStack = [];\n        this.maxStackSize = maxStackSize ? maxStackSize : UndoRedoStack.DEFAULT_STACK_SIZE;\n        this.actionStack = new Array(this.maxStackSize);\n    }\n    UndoRedoStack.prototype.pop = function () {\n        return this.actionStack.pop();\n    };\n    UndoRedoStack.prototype.push = function (item) {\n        var shouldAddActions = item.cellValueChanges && item.cellValueChanges.length > 0;\n        if (!shouldAddActions) {\n            return;\n        }\n        if (this.actionStack.length === this.maxStackSize) {\n            this.actionStack.shift();\n        }\n        this.actionStack.push(item);\n    };\n    UndoRedoStack.prototype.clear = function () {\n        this.actionStack = [];\n    };\n    UndoRedoStack.prototype.getCurrentStackSize = function () {\n        return this.actionStack.length;\n    };\n    UndoRedoStack.DEFAULT_STACK_SIZE = 10;\n    return UndoRedoStack;\n}());\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$n = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __assign$1 = (undefined && undefined.__assign) || function () {\n    __assign$1 = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign$1.apply(this, arguments);\n};\nvar __decorate$p = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __read$5 = (undefined && undefined.__read) || function (o, n) {\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n    if (!m) return o;\n    var i = m.call(o), r, ar = [], e;\n    try {\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n    }\n    catch (error) { e = { error: error }; }\n    finally {\n        try {\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\n        }\n        finally { if (e) throw e.error; }\n    }\n    return ar;\n};\nvar __spread$4 = (undefined && undefined.__spread) || function () {\n    for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read$5(arguments[i]));\n    return ar;\n};\nvar UndoRedoService = /** @class */ (function (_super) {\n    __extends$n(UndoRedoService, _super);\n    function UndoRedoService() {\n        var _this = _super !== null && _super.apply(this, arguments) || this;\n        _this.cellValueChanges = [];\n        _this.activeCellEdit = null;\n        _this.activeRowEdit = null;\n        _this.isPasting = false;\n        _this.isRangeInAction = false;\n        _this.onCellValueChanged = function (event) {\n            var eventCell = { column: event.column, rowIndex: event.rowIndex, rowPinned: event.rowPinned };\n            var isCellEditing = _this.activeCellEdit !== null && _this.cellPositionUtils.equals(_this.activeCellEdit, eventCell);\n            var isRowEditing = _this.activeRowEdit !== null && _this.rowPositionUtils.sameRow(_this.activeRowEdit, eventCell);\n            var shouldCaptureAction = isCellEditing || isRowEditing || _this.isPasting || _this.isRangeInAction;\n            if (!shouldCaptureAction) {\n                return;\n            }\n            var rowPinned = event.rowPinned, rowIndex = event.rowIndex, column = event.column, oldValue = event.oldValue, value = event.value;\n            var cellValueChange = {\n                rowPinned: rowPinned,\n                rowIndex: rowIndex,\n                columnId: column.getColId(),\n                newValue: value,\n                oldValue: oldValue\n            };\n            _this.cellValueChanges.push(cellValueChange);\n        };\n        _this.clearStacks = function () {\n            _this.undoStack.clear();\n            _this.redoStack.clear();\n        };\n        return _this;\n    }\n    UndoRedoService.prototype.init = function () {\n        var _this = this;\n        if (!this.gridOptionsService.is('undoRedoCellEditing')) {\n            return;\n        }\n        var undoRedoLimit = this.gridOptionsService.getNum('undoRedoCellEditingLimit');\n        if (undoRedoLimit <= 0) {\n            return;\n        }\n        this.undoStack = new UndoRedoStack(undoRedoLimit);\n        this.redoStack = new UndoRedoStack(undoRedoLimit);\n        this.addRowEditingListeners();\n        this.addCellEditingListeners();\n        this.addPasteListeners();\n        this.addFillListeners();\n        this.addCellKeyListeners();\n        this.addManagedListener(this.eventService, Events.EVENT_CELL_VALUE_CHANGED, this.onCellValueChanged);\n        // undo / redo is restricted to actual editing so we clear the stacks when other operations are\n        // performed that change the order of the row / cols.\n        this.addManagedListener(this.eventService, Events.EVENT_MODEL_UPDATED, function (e) {\n            if (!e.keepUndoRedoStack) {\n                _this.clearStacks();\n            }\n        });\n        this.addManagedListener(this.eventService, Events.EVENT_COLUMN_PIVOT_MODE_CHANGED, this.clearStacks);\n        this.addManagedListener(this.eventService, Events.EVENT_NEW_COLUMNS_LOADED, this.clearStacks);\n        this.addManagedListener(this.eventService, Events.EVENT_COLUMN_GROUP_OPENED, this.clearStacks);\n        this.addManagedListener(this.eventService, Events.EVENT_COLUMN_ROW_GROUP_CHANGED, this.clearStacks);\n        this.addManagedListener(this.eventService, Events.EVENT_COLUMN_MOVED, this.clearStacks);\n        this.addManagedListener(this.eventService, Events.EVENT_COLUMN_PINNED, this.clearStacks);\n        this.addManagedListener(this.eventService, Events.EVENT_COLUMN_VISIBLE, this.clearStacks);\n        this.addManagedListener(this.eventService, Events.EVENT_ROW_DRAG_END, this.clearStacks);\n        this.ctrlsService.whenReady(function () {\n            _this.gridBodyCtrl = _this.ctrlsService.getGridBodyCtrl();\n        });\n    };\n    UndoRedoService.prototype.getCurrentUndoStackSize = function () {\n        return this.undoStack ? this.undoStack.getCurrentStackSize() : 0;\n    };\n    UndoRedoService.prototype.getCurrentRedoStackSize = function () {\n        return this.redoStack ? this.redoStack.getCurrentStackSize() : 0;\n    };\n    UndoRedoService.prototype.undo = function (source) {\n        var startEvent = {\n            type: Events.EVENT_UNDO_STARTED,\n            source: source\n        };\n        this.eventService.dispatchEvent(startEvent);\n        var operationPerformed = this.undoRedo(this.undoStack, this.redoStack, 'initialRange', 'oldValue', 'undo');\n        var endEvent = {\n            type: Events.EVENT_UNDO_ENDED,\n            source: source,\n            operationPerformed: operationPerformed\n        };\n        this.eventService.dispatchEvent(endEvent);\n    };\n    UndoRedoService.prototype.redo = function (source) {\n        var startEvent = {\n            type: Events.EVENT_REDO_STARTED,\n            source: source\n        };\n        this.eventService.dispatchEvent(startEvent);\n        var operationPerformed = this.undoRedo(this.redoStack, this.undoStack, 'finalRange', 'newValue', 'redo');\n        var endEvent = {\n            type: Events.EVENT_REDO_ENDED,\n            source: source,\n            operationPerformed: operationPerformed\n        };\n        this.eventService.dispatchEvent(endEvent);\n    };\n    UndoRedoService.prototype.undoRedo = function (undoRedoStack, opposingUndoRedoStack, rangeProperty, cellValueChangeProperty, source) {\n        if (!undoRedoStack) {\n            return false;\n        }\n        var undoRedoAction = undoRedoStack.pop();\n        if (!undoRedoAction || !undoRedoAction.cellValueChanges) {\n            return false;\n        }\n        this.processAction(undoRedoAction, function (cellValueChange) { return cellValueChange[cellValueChangeProperty]; }, source);\n        if (undoRedoAction instanceof RangeUndoRedoAction) {\n            this.processRange(undoRedoAction.ranges || [undoRedoAction[rangeProperty]]);\n        }\n        else {\n            this.processCell(undoRedoAction.cellValueChanges);\n        }\n        opposingUndoRedoStack.push(undoRedoAction);\n        return true;\n    };\n    UndoRedoService.prototype.processAction = function (action, valueExtractor, source) {\n        var _this = this;\n        action.cellValueChanges.forEach(function (cellValueChange) {\n            var rowIndex = cellValueChange.rowIndex, rowPinned = cellValueChange.rowPinned, columnId = cellValueChange.columnId;\n            var rowPosition = { rowIndex: rowIndex, rowPinned: rowPinned };\n            var currentRow = _this.getRowNode(rowPosition);\n            // checks if the row has been filtered out\n            if (!currentRow.displayed) {\n                return;\n            }\n            currentRow.setDataValue(columnId, valueExtractor(cellValueChange), source);\n        });\n    };\n    UndoRedoService.prototype.processRange = function (ranges) {\n        var _this = this;\n        var lastFocusedCell;\n        this.rangeService.removeAllCellRanges(true);\n        ranges.forEach(function (range, idx) {\n            if (!range) {\n                return;\n            }\n            var startRow = range.startRow;\n            var endRow = range.endRow;\n            if (idx === ranges.length - 1) {\n                lastFocusedCell = {\n                    rowPinned: startRow.rowPinned,\n                    rowIndex: startRow.rowIndex,\n                    columnId: range.startColumn.getColId()\n                };\n                _this.setLastFocusedCell(lastFocusedCell);\n            }\n            var cellRangeParams = {\n                rowStartIndex: startRow.rowIndex,\n                rowStartPinned: startRow.rowPinned,\n                rowEndIndex: endRow.rowIndex,\n                rowEndPinned: endRow.rowPinned,\n                columnStart: range.startColumn,\n                columns: range.columns\n            };\n            _this.rangeService.addCellRange(cellRangeParams);\n        });\n    };\n    UndoRedoService.prototype.processCell = function (cellValueChanges) {\n        var cellValueChange = cellValueChanges[0];\n        var rowIndex = cellValueChange.rowIndex, rowPinned = cellValueChange.rowPinned;\n        var rowPosition = { rowIndex: rowIndex, rowPinned: rowPinned };\n        var row = this.getRowNode(rowPosition);\n        var lastFocusedCell = {\n            rowPinned: cellValueChange.rowPinned,\n            rowIndex: row.rowIndex,\n            columnId: cellValueChange.columnId\n        };\n        // when single cells are being processed, they should be considered\n        // as ranges when the rangeService is present (singleCellRanges).\n        // otherwise focus will be restore but the range will not.\n        this.setLastFocusedCell(lastFocusedCell, !!this.rangeService);\n    };\n    UndoRedoService.prototype.setLastFocusedCell = function (lastFocusedCell, setRangeToCell) {\n        var rowIndex = lastFocusedCell.rowIndex, columnId = lastFocusedCell.columnId, rowPinned = lastFocusedCell.rowPinned;\n        var scrollFeature = this.gridBodyCtrl.getScrollFeature();\n        var column = this.columnModel.getGridColumn(columnId);\n        if (!column) {\n            return;\n        }\n        scrollFeature.ensureIndexVisible(rowIndex);\n        scrollFeature.ensureColumnVisible(column);\n        var cellPosition = { rowIndex: rowIndex, column: column, rowPinned: rowPinned };\n        this.focusService.setFocusedCell(__assign$1(__assign$1({}, cellPosition), { forceBrowserFocus: true }));\n        if (setRangeToCell) {\n            this.rangeService.setRangeToCell(cellPosition);\n        }\n    };\n    UndoRedoService.prototype.addRowEditingListeners = function () {\n        var _this = this;\n        this.addManagedListener(this.eventService, Events.EVENT_ROW_EDITING_STARTED, function (e) {\n            _this.activeRowEdit = { rowIndex: e.rowIndex, rowPinned: e.rowPinned };\n        });\n        this.addManagedListener(this.eventService, Events.EVENT_ROW_EDITING_STOPPED, function () {\n            var action = new UndoRedoAction(_this.cellValueChanges);\n            _this.pushActionsToUndoStack(action);\n            _this.activeRowEdit = null;\n        });\n    };\n    UndoRedoService.prototype.addCellEditingListeners = function () {\n        var _this = this;\n        this.addManagedListener(this.eventService, Events.EVENT_CELL_EDITING_STARTED, function (e) {\n            _this.activeCellEdit = { column: e.column, rowIndex: e.rowIndex, rowPinned: e.rowPinned };\n        });\n        this.addManagedListener(this.eventService, Events.EVENT_CELL_EDITING_STOPPED, function (e) {\n            _this.activeCellEdit = null;\n            var shouldPushAction = e.valueChanged && !_this.activeRowEdit && !_this.isPasting && !_this.isRangeInAction;\n            if (shouldPushAction) {\n                var action = new UndoRedoAction(_this.cellValueChanges);\n                _this.pushActionsToUndoStack(action);\n            }\n        });\n    };\n    UndoRedoService.prototype.addPasteListeners = function () {\n        var _this = this;\n        this.addManagedListener(this.eventService, Events.EVENT_PASTE_START, function () {\n            _this.isPasting = true;\n        });\n        this.addManagedListener(this.eventService, Events.EVENT_PASTE_END, function () {\n            var action = new UndoRedoAction(_this.cellValueChanges);\n            _this.pushActionsToUndoStack(action);\n            _this.isPasting = false;\n        });\n    };\n    UndoRedoService.prototype.addFillListeners = function () {\n        var _this = this;\n        this.addManagedListener(this.eventService, Events.EVENT_FILL_START, function () {\n            _this.isRangeInAction = true;\n        });\n        this.addManagedListener(this.eventService, Events.EVENT_FILL_END, function (event) {\n            var action = new RangeUndoRedoAction(_this.cellValueChanges, event.initialRange, event.finalRange);\n            _this.pushActionsToUndoStack(action);\n            _this.isRangeInAction = false;\n        });\n    };\n    UndoRedoService.prototype.addCellKeyListeners = function () {\n        var _this = this;\n        this.addManagedListener(this.eventService, Events.EVENT_KEY_SHORTCUT_CHANGED_CELL_START, function () {\n            _this.isRangeInAction = true;\n        });\n        this.addManagedListener(this.eventService, Events.EVENT_KEY_SHORTCUT_CHANGED_CELL_END, function () {\n            var action;\n            if (_this.rangeService && _this.gridOptionsService.isEnableRangeSelection()) {\n                action = new RangeUndoRedoAction(_this.cellValueChanges, undefined, undefined, __spread$4(_this.rangeService.getCellRanges()));\n            }\n            else {\n                action = new UndoRedoAction(_this.cellValueChanges);\n            }\n            _this.pushActionsToUndoStack(action);\n            _this.isRangeInAction = false;\n        });\n    };\n    UndoRedoService.prototype.pushActionsToUndoStack = function (action) {\n        this.undoStack.push(action);\n        this.cellValueChanges = [];\n        this.redoStack.clear();\n    };\n    UndoRedoService.prototype.getRowNode = function (gridRow) {\n        switch (gridRow.rowPinned) {\n            case 'top':\n                return this.pinnedRowModel.getPinnedTopRowData()[gridRow.rowIndex];\n            case 'bottom':\n                return this.pinnedRowModel.getPinnedBottomRowData()[gridRow.rowIndex];\n            default:\n                return this.rowModel.getRow(gridRow.rowIndex);\n        }\n    };\n    __decorate$p([\n        Autowired('focusService')\n    ], UndoRedoService.prototype, \"focusService\", void 0);\n    __decorate$p([\n        Autowired('ctrlsService')\n    ], UndoRedoService.prototype, \"ctrlsService\", void 0);\n    __decorate$p([\n        Autowired('rowModel')\n    ], UndoRedoService.prototype, \"rowModel\", void 0);\n    __decorate$p([\n        Autowired('pinnedRowModel')\n    ], UndoRedoService.prototype, \"pinnedRowModel\", void 0);\n    __decorate$p([\n        Autowired('cellPositionUtils')\n    ], UndoRedoService.prototype, \"cellPositionUtils\", void 0);\n    __decorate$p([\n        Autowired('rowPositionUtils')\n    ], UndoRedoService.prototype, \"rowPositionUtils\", void 0);\n    __decorate$p([\n        Autowired('columnModel')\n    ], UndoRedoService.prototype, \"columnModel\", void 0);\n    __decorate$p([\n        Optional('rangeService')\n    ], UndoRedoService.prototype, \"rangeService\", void 0);\n    __decorate$p([\n        PostConstruct\n    ], UndoRedoService.prototype, \"init\", null);\n    UndoRedoService = __decorate$p([\n        Bean('undoRedoService')\n    ], UndoRedoService);\n    return UndoRedoService;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$m = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$o = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar HeaderPositionUtils = /** @class */ (function (_super) {\n    __extends$m(HeaderPositionUtils, _super);\n    function HeaderPositionUtils() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    HeaderPositionUtils.prototype.findHeader = function (focusedHeader, direction) {\n        var nextColumn;\n        var getGroupMethod;\n        var getColMethod;\n        if (focusedHeader.column instanceof ColumnGroup) {\n            getGroupMethod = \"getDisplayedGroup\" + direction;\n            nextColumn = this.columnModel[getGroupMethod](focusedHeader.column);\n        }\n        else {\n            getColMethod = \"getDisplayedCol\" + direction;\n            nextColumn = this.columnModel[getColMethod](focusedHeader.column);\n        }\n        if (!nextColumn) {\n            return;\n        }\n        var headerRowIndex = focusedHeader.headerRowIndex;\n        var currentRowType = this.getHeaderRowType(headerRowIndex);\n        if (currentRowType === HeaderRowType.COLUMN_GROUP) {\n            var columnGroup = nextColumn;\n            if (columnGroup.isPadding() && this.isAnyChildSpanningHeaderHeight(columnGroup)) {\n                var _a = this.getColumnVisibleChild(columnGroup, headerRowIndex, direction), nextFocusColumn = _a.nextFocusColumn, nextRow = _a.nextRow;\n                if (nextFocusColumn) {\n                    nextColumn = nextFocusColumn;\n                    headerRowIndex = nextRow;\n                }\n            }\n        }\n        return {\n            column: nextColumn,\n            headerRowIndex: headerRowIndex\n        };\n    };\n    HeaderPositionUtils.prototype.isAnyChildSpanningHeaderHeight = function (columnGroup) {\n        if (!columnGroup) {\n            return false;\n        }\n        return columnGroup.getLeafColumns().some(function (col) { return col.isSpanHeaderHeight(); });\n    };\n    HeaderPositionUtils.prototype.getColumnVisibleParent = function (currentColumn, currentIndex) {\n        var currentRowType = this.getHeaderRowType(currentIndex);\n        var isFloatingFilter = currentRowType === HeaderRowType.FLOATING_FILTER;\n        var isColumn = currentRowType === HeaderRowType.COLUMN;\n        var nextFocusColumn = isFloatingFilter ? currentColumn : currentColumn.getParent();\n        var nextRow = currentIndex - 1;\n        if (isColumn && this.isAnyChildSpanningHeaderHeight(currentColumn.getParent())) {\n            while (nextFocusColumn && nextFocusColumn.isPadding()) {\n                nextFocusColumn = nextFocusColumn.getParent();\n                nextRow--;\n            }\n            if (nextRow < 0) {\n                nextFocusColumn = currentColumn;\n                nextRow = currentIndex;\n            }\n        }\n        return { nextFocusColumn: nextFocusColumn, nextRow: nextRow };\n    };\n    HeaderPositionUtils.prototype.getColumnVisibleChild = function (column, currentIndex, direction) {\n        if (direction === void 0) { direction = 'After'; }\n        var currentRowType = this.getHeaderRowType(currentIndex);\n        var nextFocusColumn = column;\n        var nextRow = currentIndex + 1;\n        if (currentRowType === HeaderRowType.COLUMN_GROUP) {\n            var leafColumns = column.getLeafColumns();\n            var leafChild = direction === 'After' ? leafColumns[0] : last(leafColumns);\n            if (this.isAnyChildSpanningHeaderHeight(leafChild.getParent())) {\n                nextFocusColumn = leafChild;\n                var currentColumn = leafChild.getParent();\n                while (currentColumn && currentColumn !== column) {\n                    currentColumn = currentColumn.getParent();\n                    nextRow++;\n                }\n            }\n            else {\n                nextFocusColumn = column.getDisplayedChildren()[0];\n            }\n        }\n        return { nextFocusColumn: nextFocusColumn, nextRow: nextRow };\n    };\n    HeaderPositionUtils.prototype.getHeaderRowType = function (rowIndex) {\n        var centerHeaderContainer = this.ctrlsService.getHeaderRowContainerCtrl();\n        if (centerHeaderContainer) {\n            return centerHeaderContainer.getRowType(rowIndex);\n        }\n    };\n    HeaderPositionUtils.prototype.findColAtEdgeForHeaderRow = function (level, position) {\n        var displayedColumns = this.columnModel.getAllDisplayedColumns();\n        var column = displayedColumns[position === 'start' ? 0 : displayedColumns.length - 1];\n        if (!column) {\n            return;\n        }\n        var childContainer = this.ctrlsService.getHeaderRowContainerCtrl(column.getPinned());\n        var type = childContainer.getRowType(level);\n        if (type == HeaderRowType.COLUMN_GROUP) {\n            var columnGroup = this.columnModel.getColumnGroupAtLevel(column, level);\n            return {\n                headerRowIndex: level,\n                column: columnGroup\n            };\n        }\n        return {\n            // if type==null, means the header level didn't exist\n            headerRowIndex: type == null ? -1 : level,\n            column: column\n        };\n    };\n    __decorate$o([\n        Autowired('columnModel')\n    ], HeaderPositionUtils.prototype, \"columnModel\", void 0);\n    __decorate$o([\n        Autowired('ctrlsService')\n    ], HeaderPositionUtils.prototype, \"ctrlsService\", void 0);\n    HeaderPositionUtils = __decorate$o([\n        Bean('headerPositionUtils')\n    ], HeaderPositionUtils);\n    return HeaderPositionUtils;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __decorate$n = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar ColumnDefFactory = /** @class */ (function () {\n    function ColumnDefFactory() {\n    }\n    ColumnDefFactory.prototype.buildColumnDefs = function (cols, rowGroupColumns, pivotColumns) {\n        var _this = this;\n        var res = [];\n        var colGroupDefs = {};\n        cols.forEach(function (col) {\n            var colDef = _this.createDefFromColumn(col, rowGroupColumns, pivotColumns);\n            var addToResult = true;\n            var childDef = colDef;\n            var pointer = col.getOriginalParent();\n            while (pointer) {\n                var parentDef = null;\n                // we don't include padding groups, as the column groups provided\n                // by application didn't have these. the whole point of padding groups\n                // is to balance the column tree that the user provided.\n                if (pointer.isPadding()) {\n                    pointer = pointer.getOriginalParent();\n                    continue;\n                }\n                // if colDef for this group already exists, use it\n                var existingParentDef = colGroupDefs[pointer.getGroupId()];\n                if (existingParentDef) {\n                    existingParentDef.children.push(childDef);\n                    // if we added to result, it would be the second time we did it\n                    addToResult = false;\n                    // we don't want to continue up the tree, as it has already been\n                    // done for this group\n                    break;\n                }\n                parentDef = _this.createDefFromGroup(pointer);\n                if (parentDef) {\n                    parentDef.children = [childDef];\n                    colGroupDefs[parentDef.groupId] = parentDef;\n                    childDef = parentDef;\n                    pointer = pointer.getOriginalParent();\n                }\n            }\n            if (addToResult) {\n                res.push(childDef);\n            }\n        });\n        return res;\n    };\n    ColumnDefFactory.prototype.createDefFromGroup = function (group) {\n        var defCloned = deepCloneDefinition(group.getColGroupDef(), ['children']);\n        if (defCloned) {\n            defCloned.groupId = group.getGroupId();\n        }\n        return defCloned;\n    };\n    ColumnDefFactory.prototype.createDefFromColumn = function (col, rowGroupColumns, pivotColumns) {\n        var colDefCloned = deepCloneDefinition(col.getColDef());\n        colDefCloned.colId = col.getColId();\n        colDefCloned.width = col.getActualWidth();\n        colDefCloned.rowGroup = col.isRowGroupActive();\n        colDefCloned.rowGroupIndex = col.isRowGroupActive() ? rowGroupColumns.indexOf(col) : null;\n        colDefCloned.pivot = col.isPivotActive();\n        colDefCloned.pivotIndex = col.isPivotActive() ? pivotColumns.indexOf(col) : null;\n        colDefCloned.aggFunc = col.isValueActive() ? col.getAggFunc() : null;\n        colDefCloned.hide = col.isVisible() ? undefined : true;\n        colDefCloned.pinned = col.isPinned() ? col.getPinned() : null;\n        colDefCloned.sort = col.getSort() ? col.getSort() : null;\n        colDefCloned.sortIndex = col.getSortIndex() != null ? col.getSortIndex() : null;\n        return colDefCloned;\n    };\n    ColumnDefFactory = __decorate$n([\n        Bean('columnDefFactory')\n    ], ColumnDefFactory);\n    return ColumnDefFactory;\n}());\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __decorate$m = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar RowCssClassCalculator = /** @class */ (function () {\n    function RowCssClassCalculator() {\n    }\n    RowCssClassCalculator.prototype.getInitialRowClasses = function (params) {\n        var classes = [];\n        if (exists(params.extraCssClass)) {\n            classes.push(params.extraCssClass);\n        }\n        classes.push('ag-row');\n        classes.push(params.rowFocused ? 'ag-row-focus' : 'ag-row-no-focus');\n        if (params.fadeRowIn) {\n            classes.push('ag-opacity-zero');\n        }\n        classes.push(params.rowIsEven ? 'ag-row-even' : 'ag-row-odd');\n        if (params.rowNode.isRowPinned()) {\n            classes.push('ag-row-pinned');\n        }\n        if (params.rowNode.isSelected()) {\n            classes.push('ag-row-selected');\n        }\n        if (params.rowNode.footer) {\n            classes.push('ag-row-footer');\n        }\n        classes.push('ag-row-level-' + params.rowLevel);\n        if (params.rowNode.stub) {\n            classes.push('ag-row-loading');\n        }\n        if (params.fullWidthRow) {\n            classes.push('ag-full-width-row');\n        }\n        if (params.expandable) {\n            classes.push('ag-row-group');\n            classes.push(params.rowNode.expanded ? 'ag-row-group-expanded' : 'ag-row-group-contracted');\n        }\n        if (params.rowNode.dragging) {\n            classes.push('ag-row-dragging');\n        }\n        pushAll(classes, this.processClassesFromGridOptions(params.rowNode));\n        pushAll(classes, this.preProcessRowClassRules(params.rowNode));\n        // we use absolute position unless we are doing print layout\n        classes.push(params.printLayout ? 'ag-row-position-relative' : 'ag-row-position-absolute');\n        if (params.firstRowOnPage) {\n            classes.push('ag-row-first');\n        }\n        if (params.lastRowOnPage) {\n            classes.push('ag-row-last');\n        }\n        if (params.fullWidthRow) {\n            if (params.pinned === 'left') {\n                classes.push('ag-cell-last-left-pinned');\n            }\n            if (params.pinned === 'right') {\n                classes.push('ag-cell-first-right-pinned');\n            }\n        }\n        return classes;\n    };\n    RowCssClassCalculator.prototype.processClassesFromGridOptions = function (rowNode) {\n        var res = [];\n        var process = function (rowCls) {\n            if (typeof rowCls === 'string') {\n                res.push(rowCls);\n            }\n            else if (Array.isArray(rowCls)) {\n                rowCls.forEach(function (e) { return res.push(e); });\n            }\n        };\n        // part 1 - rowClass\n        var rowClass = this.gridOptionsService.get('rowClass');\n        if (rowClass) {\n            if (typeof rowClass === 'function') {\n                console.warn('AG Grid: rowClass should not be a function, please use getRowClass instead');\n                return [];\n            }\n            process(rowClass);\n        }\n        // part 2 - rowClassFunc\n        var rowClassFunc = this.gridOptionsService.getCallback('getRowClass');\n        if (rowClassFunc) {\n            var params = {\n                data: rowNode.data,\n                node: rowNode,\n                rowIndex: rowNode.rowIndex\n            };\n            var rowClassFuncResult = rowClassFunc(params);\n            process(rowClassFuncResult);\n        }\n        return res;\n    };\n    RowCssClassCalculator.prototype.preProcessRowClassRules = function (rowNode) {\n        var res = [];\n        this.processRowClassRules(rowNode, function (className) {\n            res.push(className);\n        }, function (className) {\n            // not catered for, if creating, no need\n            // to remove class as it was never there\n        });\n        return res;\n    };\n    RowCssClassCalculator.prototype.processRowClassRules = function (rowNode, onApplicableClass, onNotApplicableClass) {\n        var rowClassParams = {\n            data: rowNode.data,\n            node: rowNode,\n            rowIndex: rowNode.rowIndex,\n            api: this.gridOptionsService.api,\n            columnApi: this.gridOptionsService.columnApi,\n            context: this.gridOptionsService.context\n        };\n        this.stylingService.processClassRules(this.gridOptionsService.get('rowClassRules'), rowClassParams, onApplicableClass, onNotApplicableClass);\n    };\n    RowCssClassCalculator.prototype.calculateRowLevel = function (rowNode) {\n        if (rowNode.group) {\n            return rowNode.level;\n        }\n        // if a leaf, and a parent exists, put a level of the parent, else put level of 0 for top level item\n        return rowNode.parent ? (rowNode.parent.level + 1) : 0;\n    };\n    __decorate$m([\n        Autowired('stylingService')\n    ], RowCssClassCalculator.prototype, \"stylingService\", void 0);\n    __decorate$m([\n        Autowired('gridOptionsService')\n    ], RowCssClassCalculator.prototype, \"gridOptionsService\", void 0);\n    RowCssClassCalculator = __decorate$m([\n        Bean('rowCssClassCalculator')\n    ], RowCssClassCalculator);\n    return RowCssClassCalculator;\n}());\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$l = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$l = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n// this logic is used by both SSRM and CSRM\nvar RowNodeSorter = /** @class */ (function (_super) {\n    __extends$l(RowNodeSorter, _super);\n    function RowNodeSorter() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    RowNodeSorter.prototype.init = function () {\n        var _this = this;\n        this.isAccentedSort = this.gridOptionsService.is('accentedSort');\n        this.primaryColumnsSortGroups = this.gridOptionsService.isColumnsSortingCoupledToGroup();\n        this.addManagedPropertyListener('accentedSort', function (propChange) { return _this.isAccentedSort = propChange.currentValue; });\n        this.addManagedPropertyListener('autoGroupColumnDef', function () { return _this.primaryColumnsSortGroups = _this.gridOptionsService.isColumnsSortingCoupledToGroup(); });\n    };\n    RowNodeSorter.prototype.doFullSort = function (rowNodes, sortOptions) {\n        var mapper = function (rowNode, pos) { return ({ currentPos: pos, rowNode: rowNode }); };\n        var sortedRowNodes = rowNodes.map(mapper);\n        sortedRowNodes.sort(this.compareRowNodes.bind(this, sortOptions));\n        return sortedRowNodes.map(function (item) { return item.rowNode; });\n    };\n    RowNodeSorter.prototype.compareRowNodes = function (sortOptions, sortedNodeA, sortedNodeB) {\n        var nodeA = sortedNodeA.rowNode;\n        var nodeB = sortedNodeB.rowNode;\n        // Iterate columns, return the first that doesn't match\n        for (var i = 0, len = sortOptions.length; i < len; i++) {\n            var sortOption = sortOptions[i];\n            var isDescending = sortOption.sort === 'desc';\n            var valueA = this.getValue(nodeA, sortOption.column);\n            var valueB = this.getValue(nodeB, sortOption.column);\n            var comparatorResult = void 0;\n            var providedComparator = this.getComparator(sortOption, nodeA);\n            if (providedComparator) {\n                //if comparator provided, use it\n                comparatorResult = providedComparator(valueA, valueB, nodeA, nodeB, isDescending);\n            }\n            else {\n                //otherwise do our own comparison\n                comparatorResult = _.defaultComparator(valueA, valueB, this.isAccentedSort);\n            }\n            // user provided comparators can return 'NaN' if they don't correctly handle 'undefined' values, this\n            // typically occurs when the comparator is used on a group row\n            var validResult = !isNaN(comparatorResult);\n            if (validResult && comparatorResult !== 0) {\n                return sortOption.sort === 'asc' ? comparatorResult : comparatorResult * -1;\n            }\n        }\n        // All matched, we make is so that the original sort order is kept:\n        return sortedNodeA.currentPos - sortedNodeB.currentPos;\n    };\n    RowNodeSorter.prototype.getComparator = function (sortOption, rowNode) {\n        var column = sortOption.column;\n        // comparator on col get preference over everything else\n        var comparatorOnCol = column.getColDef().comparator;\n        if (comparatorOnCol != null) {\n            return comparatorOnCol;\n        }\n        if (!column.getColDef().showRowGroup) {\n            return;\n        }\n        // if a 'field' is supplied on the autoGroupColumnDef we need to use the associated column comparator\n        var groupLeafField = !rowNode.group && column.getColDef().field;\n        if (!groupLeafField) {\n            return;\n        }\n        var primaryColumn = this.columnModel.getPrimaryColumn(groupLeafField);\n        if (!primaryColumn) {\n            return;\n        }\n        return primaryColumn.getColDef().comparator;\n    };\n    RowNodeSorter.prototype.getValue = function (node, column) {\n        var _a, _b;\n        if (!this.primaryColumnsSortGroups) {\n            return this.valueService.getValue(column, node, false, false);\n        }\n        var isNodeGroupedAtLevel = node.rowGroupColumn === column;\n        if (isNodeGroupedAtLevel) {\n            var isGroupRows = this.gridOptionsService.isGroupUseEntireRow(this.columnModel.isPivotActive());\n            if (isGroupRows) {\n                // if the column has a provided a keyCreator, we have to use the key, as the group could be\n                // irrelevant to the column value\n                var keyCreator = column.getColDef().keyCreator;\n                if (keyCreator) {\n                    return node.key;\n                }\n                // if the group was generated from the column data, all the leaf children should return the same\n                // value\n                var leafChild = (_a = node.allLeafChildren) === null || _a === void 0 ? void 0 : _a[0];\n                if (leafChild) {\n                    return this.valueService.getValue(column, leafChild, false, false);\n                }\n                return undefined;\n            }\n            var displayCol = this.columnModel.getGroupDisplayColumnForGroup(column.getId());\n            if (!displayCol) {\n                return undefined;\n            }\n            return (_b = node.groupData) === null || _b === void 0 ? void 0 : _b[displayCol.getId()];\n        }\n        if (node.group && column.getColDef().showRowGroup) {\n            return undefined;\n        }\n        return this.valueService.getValue(column, node, false, false);\n    };\n    __decorate$l([\n        Autowired('valueService')\n    ], RowNodeSorter.prototype, \"valueService\", void 0);\n    __decorate$l([\n        Autowired('columnModel')\n    ], RowNodeSorter.prototype, \"columnModel\", void 0);\n    __decorate$l([\n        PostConstruct\n    ], RowNodeSorter.prototype, \"init\", null);\n    RowNodeSorter = __decorate$l([\n        Bean('rowNodeSorter')\n    ], RowNodeSorter);\n    return RowNodeSorter;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$k = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$k = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar CtrlsService = /** @class */ (function (_super) {\n    __extends$k(CtrlsService, _super);\n    function CtrlsService() {\n        var _this = _super !== null && _super.apply(this, arguments) || this;\n        _this.ready = false;\n        _this.readyCallbacks = [];\n        return _this;\n    }\n    CtrlsService_1 = CtrlsService;\n    CtrlsService.prototype.checkReady = function () {\n        this.ready =\n            this.gridCtrl != null\n                && this.gridBodyCtrl != null\n                && this.centerRowContainerCtrl != null\n                && this.leftRowContainerCtrl != null\n                && this.rightRowContainerCtrl != null\n                && this.bottomCenterRowContainerCtrl != null\n                && this.bottomLeftRowContainerCtrl != null\n                && this.bottomRightRowContainerCtrl != null\n                && this.topCenterRowContainerCtrl != null\n                && this.topLeftRowContainerCtrl != null\n                && this.topRightRowContainerCtrl != null\n                && this.stickyTopCenterRowContainerCtrl != null\n                && this.stickyTopLeftRowContainerCtrl != null\n                && this.stickyTopRightRowContainerCtrl != null\n                && this.centerHeaderRowContainerCtrl != null\n                && this.leftHeaderRowContainerCtrl != null\n                && this.rightHeaderRowContainerCtrl != null\n                && this.fakeHScrollComp != null\n                && this.fakeVScrollComp != null\n                && this.gridHeaderCtrl != null;\n        if (this.ready) {\n            var p_1 = this.createReadyParams();\n            this.readyCallbacks.forEach(function (c) { return c(p_1); });\n            this.readyCallbacks.length = 0;\n        }\n    };\n    CtrlsService.prototype.whenReady = function (callback) {\n        if (this.ready) {\n            callback(this.createReadyParams());\n        }\n        else {\n            this.readyCallbacks.push(callback);\n        }\n    };\n    CtrlsService.prototype.createReadyParams = function () {\n        return {\n            centerRowContainerCtrl: this.centerRowContainerCtrl,\n            leftRowContainerCtrl: this.leftRowContainerCtrl,\n            rightRowContainerCtrl: this.rightRowContainerCtrl,\n            bottomCenterRowContainerCtrl: this.bottomCenterRowContainerCtrl,\n            bottomLeftRowContainerCtrl: this.bottomLeftRowContainerCtrl,\n            bottomRightRowContainerCtrl: this.bottomRightRowContainerCtrl,\n            topCenterRowContainerCtrl: this.topCenterRowContainerCtrl,\n            topLeftRowContainerCtrl: this.topLeftRowContainerCtrl,\n            topRightRowContainerCtrl: this.topRightRowContainerCtrl,\n            stickyTopCenterRowContainerCtrl: this.stickyTopCenterRowContainerCtrl,\n            stickyTopLeftRowContainerCtrl: this.stickyTopLeftRowContainerCtrl,\n            stickyTopRightRowContainerCtrl: this.stickyTopRightRowContainerCtrl,\n            centerHeaderRowContainerCtrl: this.centerHeaderRowContainerCtrl,\n            leftHeaderRowContainerCtrl: this.leftHeaderRowContainerCtrl,\n            rightHeaderRowContainerCtrl: this.rightHeaderRowContainerCtrl,\n            fakeHScrollComp: this.fakeHScrollComp,\n            fakeVScrollComp: this.fakeVScrollComp,\n            gridBodyCtrl: this.gridBodyCtrl,\n            gridCtrl: this.gridCtrl,\n            gridHeaderCtrl: this.gridHeaderCtrl,\n        };\n    };\n    CtrlsService.prototype.registerFakeHScrollComp = function (comp) {\n        this.fakeHScrollComp = comp;\n        this.checkReady();\n    };\n    CtrlsService.prototype.registerFakeVScrollComp = function (comp) {\n        this.fakeVScrollComp = comp;\n        this.checkReady();\n    };\n    CtrlsService.prototype.registerGridHeaderCtrl = function (gridHeaderCtrl) {\n        this.gridHeaderCtrl = gridHeaderCtrl;\n        this.checkReady();\n    };\n    CtrlsService.prototype.registerCenterRowContainerCtrl = function (ctrl) {\n        this.centerRowContainerCtrl = ctrl;\n        this.checkReady();\n    };\n    CtrlsService.prototype.registerLeftRowContainerCtrl = function (ctrl) {\n        this.leftRowContainerCtrl = ctrl;\n        this.checkReady();\n    };\n    CtrlsService.prototype.registerRightRowContainerCtrl = function (ctrl) {\n        this.rightRowContainerCtrl = ctrl;\n        this.checkReady();\n    };\n    CtrlsService.prototype.registerTopCenterRowContainerCtrl = function (ctrl) {\n        this.topCenterRowContainerCtrl = ctrl;\n        this.checkReady();\n    };\n    CtrlsService.prototype.registerTopLeftRowContainerCon = function (ctrl) {\n        this.topLeftRowContainerCtrl = ctrl;\n        this.checkReady();\n    };\n    CtrlsService.prototype.registerTopRightRowContainerCtrl = function (ctrl) {\n        this.topRightRowContainerCtrl = ctrl;\n        this.checkReady();\n    };\n    CtrlsService.prototype.registerStickyTopCenterRowContainerCtrl = function (ctrl) {\n        this.stickyTopCenterRowContainerCtrl = ctrl;\n        this.checkReady();\n    };\n    CtrlsService.prototype.registerStickyTopLeftRowContainerCon = function (ctrl) {\n        this.stickyTopLeftRowContainerCtrl = ctrl;\n        this.checkReady();\n    };\n    CtrlsService.prototype.registerStickyTopRightRowContainerCtrl = function (ctrl) {\n        this.stickyTopRightRowContainerCtrl = ctrl;\n        this.checkReady();\n    };\n    CtrlsService.prototype.registerBottomCenterRowContainerCtrl = function (ctrl) {\n        this.bottomCenterRowContainerCtrl = ctrl;\n        this.checkReady();\n    };\n    CtrlsService.prototype.registerBottomLeftRowContainerCtrl = function (ctrl) {\n        this.bottomLeftRowContainerCtrl = ctrl;\n        this.checkReady();\n    };\n    CtrlsService.prototype.registerBottomRightRowContainerCtrl = function (ctrl) {\n        this.bottomRightRowContainerCtrl = ctrl;\n        this.checkReady();\n    };\n    CtrlsService.prototype.registerHeaderContainer = function (ctrl, pinned) {\n        switch (pinned) {\n            case 'left':\n                this.leftHeaderRowContainerCtrl = ctrl;\n                break;\n            case 'right':\n                this.rightHeaderRowContainerCtrl = ctrl;\n                break;\n            default:\n                this.centerHeaderRowContainerCtrl = ctrl;\n                break;\n        }\n        this.checkReady();\n    };\n    CtrlsService.prototype.registerGridBodyCtrl = function (ctrl) {\n        this.gridBodyCtrl = ctrl;\n        this.checkReady();\n    };\n    CtrlsService.prototype.registerGridCtrl = function (ctrl) {\n        this.gridCtrl = ctrl;\n        this.checkReady();\n    };\n    CtrlsService.prototype.getFakeHScrollComp = function () {\n        return this.fakeHScrollComp;\n    };\n    CtrlsService.prototype.getFakeVScrollComp = function () {\n        return this.fakeVScrollComp;\n    };\n    CtrlsService.prototype.getGridHeaderCtrl = function () {\n        return this.gridHeaderCtrl;\n    };\n    CtrlsService.prototype.getGridCtrl = function () {\n        return this.gridCtrl;\n    };\n    CtrlsService.prototype.getCenterRowContainerCtrl = function () {\n        return this.centerRowContainerCtrl;\n    };\n    CtrlsService.prototype.getTopCenterRowContainerCtrl = function () {\n        return this.topCenterRowContainerCtrl;\n    };\n    CtrlsService.prototype.getBottomCenterRowContainerCtrl = function () {\n        return this.bottomCenterRowContainerCtrl;\n    };\n    CtrlsService.prototype.getStickyTopCenterRowContainerCtrl = function () {\n        return this.stickyTopCenterRowContainerCtrl;\n    };\n    CtrlsService.prototype.getGridBodyCtrl = function () {\n        return this.gridBodyCtrl;\n    };\n    CtrlsService.prototype.getHeaderRowContainerCtrls = function () {\n        return [this.leftHeaderRowContainerCtrl, this.rightHeaderRowContainerCtrl, this.centerHeaderRowContainerCtrl];\n    };\n    CtrlsService.prototype.getHeaderRowContainerCtrl = function (pinned) {\n        switch (pinned) {\n            case 'left': return this.leftHeaderRowContainerCtrl;\n            case 'right': return this.rightHeaderRowContainerCtrl;\n            default: return this.centerHeaderRowContainerCtrl;\n        }\n    };\n    var CtrlsService_1;\n    CtrlsService.NAME = 'ctrlsService';\n    CtrlsService = CtrlsService_1 = __decorate$k([\n        Bean(CtrlsService_1.NAME)\n    ], CtrlsService);\n    return CtrlsService;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$j = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$j = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar CtrlsFactory = /** @class */ (function (_super) {\n    __extends$j(CtrlsFactory, _super);\n    function CtrlsFactory() {\n        var _this = _super !== null && _super.apply(this, arguments) || this;\n        _this.registry = {};\n        return _this;\n    }\n    CtrlsFactory.prototype.register = function (meta) {\n        this.registry[meta.controllerName] = meta.controllerClass;\n    };\n    CtrlsFactory.prototype.getInstance = function (name) {\n        var ControllerClass = this.registry[name];\n        if (ControllerClass == null) {\n            return undefined;\n        }\n        return new ControllerClass();\n    };\n    CtrlsFactory = __decorate$j([\n        Bean('ctrlsFactory')\n    ], CtrlsFactory);\n    return CtrlsFactory;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$i = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$i = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar AbstractFakeScrollComp = /** @class */ (function (_super) {\n    __extends$i(AbstractFakeScrollComp, _super);\n    function AbstractFakeScrollComp(template, direction) {\n        var _this = _super.call(this, template) || this;\n        _this.direction = direction;\n        _this.hideTimeout = null;\n        return _this;\n    }\n    AbstractFakeScrollComp.prototype.postConstruct = function () {\n        this.addManagedListener(this.eventService, Events.EVENT_SCROLL_VISIBILITY_CHANGED, this.onScrollVisibilityChanged.bind(this));\n        this.onScrollVisibilityChanged();\n        this.addOrRemoveCssClass('ag-apple-scrollbar', isMacOsUserAgent() || isIOSUserAgent());\n    };\n    AbstractFakeScrollComp.prototype.initialiseInvisibleScrollbar = function () {\n        if (this.invisibleScrollbar !== undefined) {\n            return;\n        }\n        this.invisibleScrollbar = isInvisibleScrollbar();\n        if (this.invisibleScrollbar) {\n            this.hideAndShowInvisibleScrollAsNeeded();\n            this.addActiveListenerToggles();\n        }\n    };\n    AbstractFakeScrollComp.prototype.addActiveListenerToggles = function () {\n        var _this = this;\n        var activateEvents = ['mouseenter', 'mousedown', 'touchstart'];\n        var deactivateEvents = ['mouseleave', 'touchend'];\n        var eGui = this.getGui();\n        activateEvents.forEach(function (eventName) { return _this.addManagedListener(eGui, eventName, function () { return _this.addOrRemoveCssClass('ag-scrollbar-active', true); }); });\n        deactivateEvents.forEach(function (eventName) { return _this.addManagedListener(eGui, eventName, function () { return _this.addOrRemoveCssClass('ag-scrollbar-active', false); }); });\n    };\n    AbstractFakeScrollComp.prototype.onScrollVisibilityChanged = function () {\n        // initialiseInvisibleScrollbar should only be called once, but the reason\n        // this can't be inside `setComp` or `PostConstruct` is the DOM might not\n        // be ready, so we call it until eventually, it gets calculated.\n        if (this.invisibleScrollbar === undefined) {\n            this.initialiseInvisibleScrollbar();\n        }\n        this.setScrollVisible();\n    };\n    AbstractFakeScrollComp.prototype.hideAndShowInvisibleScrollAsNeeded = function () {\n        var _this = this;\n        this.addManagedListener(this.eventService, Events.EVENT_BODY_SCROLL, function (params) {\n            if (params.direction === _this.direction) {\n                if (_this.hideTimeout !== null) {\n                    window.clearTimeout(_this.hideTimeout);\n                    _this.hideTimeout = null;\n                }\n                _this.addOrRemoveCssClass('ag-scrollbar-scrolling', true);\n            }\n        });\n        this.addManagedListener(this.eventService, Events.EVENT_BODY_SCROLL_END, function () {\n            _this.hideTimeout = window.setTimeout(function () {\n                _this.addOrRemoveCssClass('ag-scrollbar-scrolling', false);\n                _this.hideTimeout = null;\n            }, 400);\n        });\n    };\n    AbstractFakeScrollComp.prototype.getViewport = function () {\n        return this.eViewport;\n    };\n    AbstractFakeScrollComp.prototype.getContainer = function () {\n        return this.eContainer;\n    };\n    __decorate$i([\n        RefSelector('eViewport')\n    ], AbstractFakeScrollComp.prototype, \"eViewport\", void 0);\n    __decorate$i([\n        RefSelector('eContainer')\n    ], AbstractFakeScrollComp.prototype, \"eContainer\", void 0);\n    __decorate$i([\n        Autowired('scrollVisibleService')\n    ], AbstractFakeScrollComp.prototype, \"scrollVisibleService\", void 0);\n    __decorate$i([\n        Autowired('ctrlsService')\n    ], AbstractFakeScrollComp.prototype, \"ctrlsService\", void 0);\n    return AbstractFakeScrollComp;\n}(Component));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$h = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$h = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar FakeHScrollComp = /** @class */ (function (_super) {\n    __extends$h(FakeHScrollComp, _super);\n    function FakeHScrollComp() {\n        return _super.call(this, FakeHScrollComp.TEMPLATE, 'horizontal') || this;\n    }\n    FakeHScrollComp.prototype.postConstruct = function () {\n        var _this = this;\n        _super.prototype.postConstruct.call(this);\n        // When doing printing, this changes whether cols are pinned or not\n        var spacerWidthsListener = this.setFakeHScrollSpacerWidths.bind(this);\n        this.addManagedListener(this.eventService, Events.EVENT_DISPLAYED_COLUMNS_CHANGED, spacerWidthsListener);\n        this.addManagedListener(this.eventService, Events.EVENT_DISPLAYED_COLUMNS_WIDTH_CHANGED, spacerWidthsListener);\n        this.addManagedListener(this.eventService, Events.EVENT_PINNED_ROW_DATA_CHANGED, this.onPinnedRowDataChanged.bind(this));\n        this.addManagedPropertyListener('domLayout', spacerWidthsListener);\n        this.ctrlsService.registerFakeHScrollComp(this);\n        this.createManagedBean(new CenterWidthFeature(function (width) { return _this.eContainer.style.width = width + \"px\"; }));\n    };\n    FakeHScrollComp.prototype.initialiseInvisibleScrollbar = function () {\n        if (this.invisibleScrollbar !== undefined) {\n            return;\n        }\n        this.enableRtl = this.gridOptionsService.is('enableRtl');\n        _super.prototype.initialiseInvisibleScrollbar.call(this);\n        if (this.invisibleScrollbar) {\n            this.refreshCompBottom();\n        }\n    };\n    FakeHScrollComp.prototype.onPinnedRowDataChanged = function () {\n        this.refreshCompBottom();\n    };\n    FakeHScrollComp.prototype.refreshCompBottom = function () {\n        if (!this.invisibleScrollbar) {\n            return;\n        }\n        var bottomPinnedHeight = this.pinnedRowModel.getPinnedBottomTotalHeight();\n        this.getGui().style.bottom = bottomPinnedHeight + \"px\";\n    };\n    FakeHScrollComp.prototype.onScrollVisibilityChanged = function () {\n        _super.prototype.onScrollVisibilityChanged.call(this);\n        this.setFakeHScrollSpacerWidths();\n    };\n    FakeHScrollComp.prototype.setFakeHScrollSpacerWidths = function () {\n        var vScrollShowing = this.scrollVisibleService.isVerticalScrollShowing();\n        // we pad the right based on a) if cols are pinned to the right and\n        // b) if v scroll is showing on the right (normal position of scroll)\n        var rightSpacing = this.columnModel.getDisplayedColumnsRightWidth();\n        var scrollOnRight = !this.enableRtl && vScrollShowing;\n        var scrollbarWidth = this.gridOptionsService.getScrollbarWidth();\n        if (scrollOnRight) {\n            rightSpacing += scrollbarWidth;\n        }\n        setFixedWidth(this.eRightSpacer, rightSpacing);\n        this.eRightSpacer.classList.toggle('ag-scroller-corner', rightSpacing <= scrollbarWidth);\n        // we pad the left based on a) if cols are pinned to the left and\n        // b) if v scroll is showing on the left (happens in LTR layout only)\n        var leftSpacing = this.columnModel.getDisplayedColumnsLeftWidth();\n        var scrollOnLeft = this.enableRtl && vScrollShowing;\n        if (scrollOnLeft) {\n            leftSpacing += scrollbarWidth;\n        }\n        setFixedWidth(this.eLeftSpacer, leftSpacing);\n        this.eLeftSpacer.classList.toggle('ag-scroller-corner', leftSpacing <= scrollbarWidth);\n    };\n    FakeHScrollComp.prototype.setScrollVisible = function () {\n        var hScrollShowing = this.scrollVisibleService.isHorizontalScrollShowing();\n        var invisibleScrollbar = this.invisibleScrollbar;\n        var isSuppressHorizontalScroll = this.gridOptionsService.is('suppressHorizontalScroll');\n        var scrollbarWidth = hScrollShowing ? (this.gridOptionsService.getScrollbarWidth() || 0) : 0;\n        var adjustedScrollbarWidth = (scrollbarWidth === 0 && invisibleScrollbar) ? 16 : scrollbarWidth;\n        var scrollContainerSize = !isSuppressHorizontalScroll ? adjustedScrollbarWidth : 0;\n        this.addOrRemoveCssClass('ag-scrollbar-invisible', invisibleScrollbar);\n        setFixedHeight(this.getGui(), scrollContainerSize);\n        setFixedHeight(this.eViewport, scrollContainerSize);\n        setFixedHeight(this.eContainer, scrollContainerSize);\n        this.setDisplayed(hScrollShowing, { skipAriaHidden: true });\n    };\n    FakeHScrollComp.TEMPLATE = \"<div class=\\\"ag-body-horizontal-scroll\\\" aria-hidden=\\\"true\\\">\\n            <div class=\\\"ag-horizontal-left-spacer\\\" ref=\\\"eLeftSpacer\\\"></div>\\n            <div class=\\\"ag-body-horizontal-scroll-viewport\\\" ref=\\\"eViewport\\\">\\n                <div class=\\\"ag-body-horizontal-scroll-container\\\" ref=\\\"eContainer\\\"></div>\\n            </div>\\n            <div class=\\\"ag-horizontal-right-spacer\\\" ref=\\\"eRightSpacer\\\"></div>\\n        </div>\";\n    __decorate$h([\n        RefSelector('eLeftSpacer')\n    ], FakeHScrollComp.prototype, \"eLeftSpacer\", void 0);\n    __decorate$h([\n        RefSelector('eRightSpacer')\n    ], FakeHScrollComp.prototype, \"eRightSpacer\", void 0);\n    __decorate$h([\n        Autowired('columnModel')\n    ], FakeHScrollComp.prototype, \"columnModel\", void 0);\n    __decorate$h([\n        Autowired('pinnedRowModel')\n    ], FakeHScrollComp.prototype, \"pinnedRowModel\", void 0);\n    __decorate$h([\n        PostConstruct\n    ], FakeHScrollComp.prototype, \"postConstruct\", null);\n    return FakeHScrollComp;\n}(AbstractFakeScrollComp));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$g = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$g = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar PinnedWidthService = /** @class */ (function (_super) {\n    __extends$g(PinnedWidthService, _super);\n    function PinnedWidthService() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    PinnedWidthService.prototype.postConstruct = function () {\n        var listener = this.checkContainerWidths.bind(this);\n        this.addManagedListener(this.eventService, Events.EVENT_DISPLAYED_COLUMNS_CHANGED, listener);\n        this.addManagedListener(this.eventService, Events.EVENT_DISPLAYED_COLUMNS_WIDTH_CHANGED, listener);\n        this.addManagedPropertyListener('domLayout', listener);\n    };\n    PinnedWidthService.prototype.checkContainerWidths = function () {\n        var printLayout = this.gridOptionsService.isDomLayout('print');\n        var newLeftWidth = printLayout ? 0 : this.columnModel.getDisplayedColumnsLeftWidth();\n        var newRightWidth = printLayout ? 0 : this.columnModel.getDisplayedColumnsRightWidth();\n        if (newLeftWidth != this.leftWidth) {\n            this.leftWidth = newLeftWidth;\n            this.eventService.dispatchEvent({ type: Events.EVENT_LEFT_PINNED_WIDTH_CHANGED });\n        }\n        if (newRightWidth != this.rightWidth) {\n            this.rightWidth = newRightWidth;\n            this.eventService.dispatchEvent({ type: Events.EVENT_RIGHT_PINNED_WIDTH_CHANGED });\n        }\n    };\n    PinnedWidthService.prototype.getPinnedRightWidth = function () {\n        return this.rightWidth;\n    };\n    PinnedWidthService.prototype.getPinnedLeftWidth = function () {\n        return this.leftWidth;\n    };\n    __decorate$g([\n        Autowired('columnModel')\n    ], PinnedWidthService.prototype, \"columnModel\", void 0);\n    __decorate$g([\n        PostConstruct\n    ], PinnedWidthService.prototype, \"postConstruct\", null);\n    PinnedWidthService = __decorate$g([\n        Bean('pinnedWidthService')\n    ], PinnedWidthService);\n    return PinnedWidthService;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$f = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$f = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar RowNodeEventThrottle = /** @class */ (function (_super) {\n    __extends$f(RowNodeEventThrottle, _super);\n    function RowNodeEventThrottle() {\n        var _this = _super !== null && _super.apply(this, arguments) || this;\n        _this.events = [];\n        return _this;\n    }\n    RowNodeEventThrottle.prototype.postConstruct = function () {\n        if (this.rowModel.getType() == 'clientSide') {\n            this.clientSideRowModel = this.rowModel;\n        }\n    };\n    // because the user can call rowNode.setExpanded() many times in one VM turn,\n    // we throttle the calls to ClientSideRowModel using animationFrameService. this means for 100\n    // row nodes getting expanded, we only update the CSRM once, and then we fire all events after\n    // CSRM has updated.\n    //\n    // if we did not do this, then the user could call setExpanded on 100+ rows, causing the grid\n    // to re-render 100+ times, which would be a performance lag.\n    //\n    // we use animationFrameService\n    // rather than _.debounce() so this will get done if anyone flushes the animationFrameService\n    // (eg user calls api.ensureRowVisible(), which in turn flushes ).\n    RowNodeEventThrottle.prototype.dispatchExpanded = function (event) {\n        var _this = this;\n        // if not using CSRM, we don't debounce. otherwise this breaks the SSRM.\n        if (this.clientSideRowModel == null) {\n            this.eventService.dispatchEvent(event);\n            return;\n        }\n        this.events.push(event);\n        var func = function () {\n            if (_this.clientSideRowModel) {\n                _this.clientSideRowModel.onRowGroupOpened();\n            }\n            _this.events.forEach(function (e) { return _this.eventService.dispatchEvent(e); });\n            _this.events = [];\n        };\n        if (this.dispatchExpandedDebounced == null) {\n            this.dispatchExpandedDebounced = this.animationFrameService.debounce(func);\n        }\n        this.dispatchExpandedDebounced();\n    };\n    __decorate$f([\n        Autowired('animationFrameService')\n    ], RowNodeEventThrottle.prototype, \"animationFrameService\", void 0);\n    __decorate$f([\n        Autowired('rowModel')\n    ], RowNodeEventThrottle.prototype, \"rowModel\", void 0);\n    __decorate$f([\n        PostConstruct\n    ], RowNodeEventThrottle.prototype, \"postConstruct\", null);\n    RowNodeEventThrottle = __decorate$f([\n        Bean('rowNodeEventThrottle')\n    ], RowNodeEventThrottle);\n    return RowNodeEventThrottle;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __assign = (undefined && undefined.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\nvar __decorate$e = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __param$1 = (undefined && undefined.__param) || function (paramIndex, decorator) {\n    return function (target, key) { decorator(target, key, paramIndex); }\n};\nvar __read$4 = (undefined && undefined.__read) || function (o, n) {\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n    if (!m) return o;\n    var i = m.call(o), r, ar = [], e;\n    try {\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n    }\n    catch (error) { e = { error: error }; }\n    finally {\n        try {\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\n        }\n        finally { if (e) throw e.error; }\n    }\n    return ar;\n};\nvar __spread$3 = (undefined && undefined.__spread) || function () {\n    for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read$4(arguments[i]));\n    return ar;\n};\nfunction toNumber(value) {\n    if (typeof value == 'number') {\n        return value;\n    }\n    if (typeof value == 'string') {\n        return parseInt(value, 10);\n    }\n}\nfunction isTrue(value) {\n    return value === true || value === 'true';\n}\nvar GridOptionsService = /** @class */ (function () {\n    function GridOptionsService() {\n        this.destroyed = false;\n        this.domDataKey = '__AG_' + Math.random().toString();\n        this.propertyEventService = new EventService();\n    }\n    Object.defineProperty(GridOptionsService.prototype, \"context\", {\n        // This is quicker then having code call gridOptionsService.get('context')\n        get: function () {\n            return this.gridOptions['context'];\n        },\n        enumerable: false,\n        configurable: true\n    });\n    GridOptionsService.prototype.agWire = function (gridApi, columnApi) {\n        this.gridOptions.api = gridApi;\n        this.gridOptions.columnApi = columnApi;\n        this.api = gridApi;\n        this.columnApi = columnApi;\n    };\n    GridOptionsService.prototype.init = function () {\n        this.gridOptionLookup = new Set(__spread$3(ComponentUtil.ALL_PROPERTIES, ComponentUtil.EVENT_CALLBACKS));\n        var async = !this.is('suppressAsyncEvents');\n        this.eventService.addGlobalListener(this.globalEventHandler.bind(this), async);\n        // sets an initial calculation for the scrollbar width\n        this.getScrollbarWidth();\n    };\n    GridOptionsService.prototype.destroy = function () {\n        // need to remove these, as we don't own the lifecycle of the gridOptions, we need to\n        // remove the references in case the user keeps the grid options, we want the rest\n        // of the grid to be picked up by the garbage collector\n        this.gridOptions.api = null;\n        this.gridOptions.columnApi = null;\n        this.destroyed = true;\n    };\n    /**\n     * Is the given GridOption property set to true.\n     * @param property GridOption property that has the type `boolean | undefined`\n     */\n    GridOptionsService.prototype.is = function (property) {\n        return isTrue(this.gridOptions[property]);\n    };\n    /**\n     * Get the raw value of the GridOptions property provided.\n     * @param property\n     */\n    GridOptionsService.prototype.get = function (property) {\n        return this.gridOptions[property];\n    };\n    /**\n     * Get the GridOption property as a number, raw value is returned via a toNumber coercion function.\n     * @param property GridOption property that has the type `number | undefined`\n     */\n    GridOptionsService.prototype.getNum = function (property) {\n        return toNumber(this.gridOptions[property]);\n    };\n    /**\n     * Get the GridOption callback but wrapped so that the common params of api,columnApi and context are automatically applied to the params.\n     * @param property GridOption callback properties based on the fact that this property has a callback with params extending AgGridCommon\n     */\n    GridOptionsService.prototype.getCallback = function (property) {\n        return this.mergeGridCommonParams(this.gridOptions[property]);\n    };\n    /**\n     * Returns `true` if a value has been specified for this GridOption.\n     * @param property GridOption property\n     */\n    GridOptionsService.prototype.exists = function (property) {\n        return exists(this.gridOptions[property]);\n    };\n    /**\n    * Wrap the user callback and attach the api, columnApi and context to the params object on the way through.\n    * @param callback User provided callback\n    * @returns Wrapped callback where the params object not require api, columnApi and context\n    */\n    GridOptionsService.prototype.mergeGridCommonParams = function (callback) {\n        var _this = this;\n        if (callback) {\n            var wrapped = function (callbackParams) {\n                var mergedParams = callbackParams;\n                mergedParams.api = _this.api;\n                mergedParams.columnApi = _this.columnApi;\n                mergedParams.context = _this.context;\n                return callback(mergedParams);\n            };\n            return wrapped;\n        }\n        return callback;\n    };\n    /**\n     *\n     * @param key - key of the GridOption property to update\n     * @param newValue - new value for this property\n     * @param force - force the property change Event to be fired even if the value has not changed\n     * @param eventParams - additional params to merge into the property changed event\n     */\n    GridOptionsService.prototype.set = function (key, newValue, force, eventParams) {\n        if (force === void 0) { force = false; }\n        if (eventParams === void 0) { eventParams = {}; }\n        if (this.gridOptionLookup.has(key)) {\n            var previousValue = this.gridOptions[key];\n            if (force || previousValue !== newValue) {\n                this.gridOptions[key] = newValue;\n                var event_1 = __assign({ type: key, currentValue: newValue, previousValue: previousValue }, eventParams);\n                this.propertyEventService.dispatchEvent(event_1);\n            }\n        }\n    };\n    GridOptionsService.prototype.addEventListener = function (key, listener) {\n        this.propertyEventService.addEventListener(key, listener);\n    };\n    GridOptionsService.prototype.removeEventListener = function (key, listener) {\n        this.propertyEventService.removeEventListener(key, listener);\n    };\n    // responsible for calling the onXXX functions on gridOptions\n    GridOptionsService.prototype.globalEventHandler = function (eventName, event) {\n        // prevent events from being fired _after_ the grid has been destroyed\n        if (this.destroyed) {\n            return;\n        }\n        var callbackMethodName = ComponentUtil.getCallbackForEvent(eventName);\n        if (typeof this.gridOptions[callbackMethodName] === 'function') {\n            this.gridOptions[callbackMethodName](event);\n        }\n    };\n    // *************** Helper methods ************************** //\n    // Methods to share common GridOptions related logic that goes above accessing a single property\n    // the user might be using some non-standard scrollbar, eg a scrollbar that has zero\n    // width and overlays (like the Safari scrollbar, but presented in Chrome). so we\n    // allow the user to provide the scroll width before we work it out.\n    GridOptionsService.prototype.getScrollbarWidth = function () {\n        if (this.scrollbarWidth == null) {\n            var useGridOptions = typeof this.gridOptions.scrollbarWidth === 'number' && this.gridOptions.scrollbarWidth >= 0;\n            var scrollbarWidth = useGridOptions ? this.gridOptions.scrollbarWidth : getScrollbarWidth();\n            if (scrollbarWidth != null) {\n                this.scrollbarWidth = scrollbarWidth;\n                this.eventService.dispatchEvent({\n                    type: Events.EVENT_SCROLLBAR_WIDTH_CHANGED\n                });\n            }\n        }\n        return this.scrollbarWidth;\n    };\n    GridOptionsService.prototype.isRowModelType = function (rowModelType) {\n        return this.gridOptions.rowModelType === rowModelType ||\n            (rowModelType === 'clientSide' && missing(this.gridOptions.rowModelType));\n    };\n    GridOptionsService.prototype.isDomLayout = function (domLayout) {\n        var _a;\n        var gridLayout = (_a = this.gridOptions.domLayout) !== null && _a !== void 0 ? _a : 'normal';\n        return gridLayout === domLayout;\n    };\n    GridOptionsService.prototype.isRowSelection = function () {\n        return this.gridOptions.rowSelection === 'single' || this.gridOptions.rowSelection === 'multiple';\n    };\n    GridOptionsService.prototype.useAsyncEvents = function () {\n        return !this.is('suppressAsyncEvents');\n    };\n    GridOptionsService.prototype.isGetRowHeightFunction = function () {\n        return typeof this.gridOptions.getRowHeight === 'function';\n    };\n    GridOptionsService.prototype.getRowHeightForNode = function (rowNode, allowEstimate, defaultRowHeight) {\n        if (allowEstimate === void 0) { allowEstimate = false; }\n        if (defaultRowHeight == null) {\n            defaultRowHeight = this.environment.getDefaultRowHeight();\n        }\n        // check the function first, in case use set both function and\n        // number, when using virtual pagination then function can be\n        // used for pinned rows and the number for the body rows.\n        if (this.isGetRowHeightFunction()) {\n            if (allowEstimate) {\n                return { height: defaultRowHeight, estimated: true };\n            }\n            var params = {\n                node: rowNode,\n                data: rowNode.data\n            };\n            var height = this.getCallback('getRowHeight')(params);\n            if (this.isNumeric(height)) {\n                if (height === 0) {\n                    doOnce(function () { return console.warn('AG Grid: The return of `getRowHeight` cannot be zero. If the intention is to hide rows, use a filter instead.'); }, 'invalidRowHeight');\n                }\n                return { height: Math.max(1, height), estimated: false };\n            }\n        }\n        if (rowNode.detail && this.is('masterDetail')) {\n            return this.getMasterDetailRowHeight();\n        }\n        var rowHeight = this.gridOptions.rowHeight && this.isNumeric(this.gridOptions.rowHeight) ? this.gridOptions.rowHeight : defaultRowHeight;\n        return { height: rowHeight, estimated: false };\n    };\n    GridOptionsService.prototype.getMasterDetailRowHeight = function () {\n        // if autoHeight, we want the height to grow to the new height starting at 1, as otherwise a flicker would happen,\n        // as the detail goes to the default (eg 200px) and then immediately shrink up/down to the new measured height\n        // (due to auto height) which looks bad, especially if doing row animation.\n        if (this.is('detailRowAutoHeight')) {\n            return { height: 1, estimated: false };\n        }\n        if (this.isNumeric(this.gridOptions.detailRowHeight)) {\n            return { height: this.gridOptions.detailRowHeight, estimated: false };\n        }\n        return { height: 300, estimated: false };\n    };\n    // we don't allow dynamic row height for virtual paging\n    GridOptionsService.prototype.getRowHeightAsNumber = function () {\n        if (!this.gridOptions.rowHeight || missing(this.gridOptions.rowHeight)) {\n            return this.environment.getDefaultRowHeight();\n        }\n        var rowHeight = this.gridOptions.rowHeight;\n        if (rowHeight && this.isNumeric(rowHeight)) {\n            this.environment.setRowHeightVariable(rowHeight);\n            return rowHeight;\n        }\n        console.warn('AG Grid row height must be a number if not using standard row model');\n        return this.environment.getDefaultRowHeight();\n    };\n    GridOptionsService.prototype.isNumeric = function (value) {\n        return !isNaN(value) && typeof value === 'number' && isFinite(value);\n    };\n    GridOptionsService.prototype.getDomDataKey = function () {\n        return this.domDataKey;\n    };\n    // returns the dom data, or undefined if not found\n    GridOptionsService.prototype.getDomData = function (element, key) {\n        var domData = element[this.getDomDataKey()];\n        return domData ? domData[key] : undefined;\n    };\n    GridOptionsService.prototype.setDomData = function (element, key, value) {\n        var domDataKey = this.getDomDataKey();\n        var domData = element[domDataKey];\n        if (missing(domData)) {\n            domData = {};\n            element[domDataKey] = domData;\n        }\n        domData[key] = value;\n    };\n    GridOptionsService.prototype.getDocument = function () {\n        // if user is providing document, we use the users one,\n        // otherwise we use the document on the global namespace.\n        var result = null;\n        if (this.gridOptions.getDocument && exists(this.gridOptions.getDocument)) {\n            result = this.gridOptions.getDocument();\n        }\n        else if (this.eGridDiv) {\n            result = this.eGridDiv.ownerDocument;\n        }\n        if (result && exists(result)) {\n            return result;\n        }\n        return document;\n    };\n    GridOptionsService.prototype.getRootNode = function () {\n        return this.eGridDiv.getRootNode();\n    };\n    GridOptionsService.prototype.getRowIdFunc = function () {\n        var getRowId = this.getCallback('getRowId');\n        if (getRowId) {\n            return getRowId;\n        }\n        // this is the deprecated way, so provide a proxy to make it compatible\n        var getRowNodeId = this.gridOptions.getRowNodeId;\n        if (getRowNodeId) {\n            return function (params) { return getRowNodeId(params.data); };\n        }\n    };\n    GridOptionsService.prototype.getAsyncTransactionWaitMillis = function () {\n        return exists(this.gridOptions.asyncTransactionWaitMillis) ? this.gridOptions.asyncTransactionWaitMillis : 50;\n    };\n    GridOptionsService.prototype.isAnimateRows = function () {\n        // never allow animating if enforcing the row order\n        if (this.is('ensureDomOrder')) {\n            return false;\n        }\n        return this.is('animateRows');\n    };\n    GridOptionsService.prototype.isTreeData = function () {\n        return this.is('treeData') && ModuleRegistry.assertRegistered(ModuleNames.RowGroupingModule, 'Tree Data');\n    };\n    GridOptionsService.prototype.isMasterDetail = function () {\n        return this.is('masterDetail') && ModuleRegistry.assertRegistered(ModuleNames.MasterDetailModule, 'masterDetail');\n    };\n    GridOptionsService.prototype.isEnableRangeSelection = function () {\n        return this.is('enableRangeSelection') && ModuleRegistry.isRegistered(ModuleNames.RangeSelectionModule);\n    };\n    GridOptionsService.prototype.isColumnsSortingCoupledToGroup = function () {\n        var autoGroupColumnDef = this.gridOptions.autoGroupColumnDef;\n        var isClientSideRowModel = this.isRowModelType('clientSide');\n        return isClientSideRowModel && !(autoGroupColumnDef === null || autoGroupColumnDef === void 0 ? void 0 : autoGroupColumnDef.comparator) && !this.isTreeData();\n    };\n    GridOptionsService.prototype.getGroupAggFiltering = function () {\n        var userValue = this.gridOptions.groupAggFiltering;\n        if (typeof userValue === 'function') {\n            return this.getCallback('groupAggFiltering');\n        }\n        if (isTrue(userValue)) {\n            return function () { return true; };\n        }\n        return undefined;\n    };\n    GridOptionsService.prototype.isGroupMultiAutoColumn = function () {\n        if (this.gridOptions.groupDisplayType) {\n            return matchesGroupDisplayType('multipleColumns', this.gridOptions.groupDisplayType);\n        }\n        // if we are doing hideOpenParents we also show multiple columns, otherwise hideOpenParents would not work\n        return this.is('groupHideOpenParents');\n    };\n    GridOptionsService.prototype.isGroupUseEntireRow = function (pivotMode) {\n        // we never allow groupDisplayType = 'groupRows' if in pivot mode, otherwise we won't see the pivot values.\n        if (pivotMode) {\n            return false;\n        }\n        return this.gridOptions.groupDisplayType ? matchesGroupDisplayType('groupRows', this.gridOptions.groupDisplayType) : false;\n    };\n    __decorate$e([\n        Autowired('gridOptions')\n    ], GridOptionsService.prototype, \"gridOptions\", void 0);\n    __decorate$e([\n        Autowired('eventService')\n    ], GridOptionsService.prototype, \"eventService\", void 0);\n    __decorate$e([\n        Autowired('environment')\n    ], GridOptionsService.prototype, \"environment\", void 0);\n    __decorate$e([\n        Autowired('eGridDiv')\n    ], GridOptionsService.prototype, \"eGridDiv\", void 0);\n    __decorate$e([\n        __param$1(0, Qualifier('gridApi')), __param$1(1, Qualifier('columnApi'))\n    ], GridOptionsService.prototype, \"agWire\", null);\n    __decorate$e([\n        PostConstruct\n    ], GridOptionsService.prototype, \"init\", null);\n    __decorate$e([\n        PreDestroy\n    ], GridOptionsService.prototype, \"destroy\", null);\n    GridOptionsService = __decorate$e([\n        Bean('gridOptionsService')\n    ], GridOptionsService);\n    return GridOptionsService;\n}());\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$e = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$d = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar LocaleService = /** @class */ (function (_super) {\n    __extends$e(LocaleService, _super);\n    function LocaleService() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    LocaleService.prototype.getLocaleTextFunc = function () {\n        var getLocaleText = this.gridOptionsService.getCallback('getLocaleText');\n        if (getLocaleText) {\n            //key: string, defaultValue: string, variableValues?: string[]\n            return function (key, defaultValue, variableValues) {\n                var params = {\n                    key: key,\n                    defaultValue: defaultValue,\n                    variableValues: variableValues\n                };\n                return getLocaleText(params);\n            };\n        }\n        var localeTextFunc = this.gridOptionsService.get('localeTextFunc');\n        if (localeTextFunc) {\n            return localeTextFunc;\n        }\n        var localeText = this.gridOptionsService.get('localeText');\n        return function (key, defaultValue, variableValues) {\n            var localisedText = localeText && localeText[key];\n            if (localisedText && variableValues && variableValues.length) {\n                var found = 0;\n                while (true) {\n                    if (found >= variableValues.length) {\n                        break;\n                    }\n                    var idx = localisedText.indexOf('${variable}');\n                    if (idx === -1) {\n                        break;\n                    }\n                    localisedText = localisedText.replace('${variable}', variableValues[found++]);\n                }\n            }\n            return localisedText !== null && localisedText !== void 0 ? localisedText : defaultValue;\n        };\n    };\n    LocaleService = __decorate$d([\n        Bean('localeService')\n    ], LocaleService);\n    return LocaleService;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$d = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$c = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar FakeVScrollComp = /** @class */ (function (_super) {\n    __extends$d(FakeVScrollComp, _super);\n    function FakeVScrollComp() {\n        return _super.call(this, FakeVScrollComp.TEMPLATE, 'vertical') || this;\n    }\n    FakeVScrollComp.prototype.postConstruct = function () {\n        _super.prototype.postConstruct.call(this);\n        this.createManagedBean(new SetHeightFeature(this.eContainer));\n        this.ctrlsService.registerFakeVScrollComp(this);\n    };\n    FakeVScrollComp.prototype.setScrollVisible = function () {\n        var vScrollShowing = this.scrollVisibleService.isVerticalScrollShowing();\n        var invisibleScrollbar = this.invisibleScrollbar;\n        var scrollbarWidth = vScrollShowing ? (this.gridOptionsService.getScrollbarWidth() || 0) : 0;\n        var adjustedScrollbarWidth = (scrollbarWidth === 0 && invisibleScrollbar) ? 16 : scrollbarWidth;\n        this.addOrRemoveCssClass('ag-scrollbar-invisible', invisibleScrollbar);\n        setFixedWidth(this.getGui(), adjustedScrollbarWidth);\n        setFixedWidth(this.eViewport, adjustedScrollbarWidth);\n        setFixedWidth(this.eContainer, adjustedScrollbarWidth);\n        this.setDisplayed(vScrollShowing, { skipAriaHidden: true });\n    };\n    FakeVScrollComp.TEMPLATE = \"<div class=\\\"ag-body-vertical-scroll\\\" aria-hidden=\\\"true\\\">\\n            <div class=\\\"ag-body-vertical-scroll-viewport\\\" ref=\\\"eViewport\\\">\\n                <div class=\\\"ag-body-vertical-scroll-container\\\" ref=\\\"eContainer\\\"></div>\\n            </div>\\n        </div>\";\n    __decorate$c([\n        PostConstruct\n    ], FakeVScrollComp.prototype, \"postConstruct\", null);\n    return FakeVScrollComp;\n}(AbstractFakeScrollComp));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __read$3 = (undefined && undefined.__read) || function (o, n) {\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n    if (!m) return o;\n    var i = m.call(o), r, ar = [], e;\n    try {\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n    }\n    catch (error) { e = { error: error }; }\n    finally {\n        try {\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\n        }\n        finally { if (e) throw e.error; }\n    }\n    return ar;\n};\nvar __spread$2 = (undefined && undefined.__spread) || function () {\n    for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read$3(arguments[i]));\n    return ar;\n};\n// creates JavaScript vanilla Grid, including JavaScript (ag-stack) components, which can\n// be wrapped by the framework wrappers\nvar Grid = /** @class */ (function () {\n    function Grid(eGridDiv, gridOptions, params) {\n        if (!gridOptions) {\n            console.error('AG Grid: no gridOptions provided to the grid');\n            return;\n        }\n        this.gridOptions = gridOptions;\n        new GridCoreCreator().create(eGridDiv, gridOptions, function (context) {\n            var gridComp = new GridComp(eGridDiv);\n            context.createBean(gridComp);\n        }, undefined, params);\n    }\n    Grid.prototype.destroy = function () {\n        if (this.gridOptions && this.gridOptions.api) {\n            this.gridOptions.api.destroy();\n        }\n    };\n    return Grid;\n}());\n// created services of grid only, no UI, so frameworks can use this if providing\n// their own UI\nvar GridCoreCreator = /** @class */ (function () {\n    function GridCoreCreator() {\n    }\n    GridCoreCreator.prototype.create = function (eGridDiv, gridOptions, createUi, acceptChanges, params) {\n        var _this = this;\n        var debug = !!gridOptions.debug;\n        var registeredModules = this.getRegisteredModules(params);\n        var beanClasses = this.createBeansList(gridOptions.rowModelType, registeredModules);\n        var providedBeanInstances = this.createProvidedBeans(eGridDiv, gridOptions, params);\n        if (!beanClasses) {\n            return;\n        } // happens when no row model found\n        var contextParams = {\n            providedBeanInstances: providedBeanInstances,\n            beanClasses: beanClasses,\n            debug: debug\n        };\n        var logger = new Logger('AG Grid', function () { return gridOptions.debug; });\n        var contextLogger = new Logger('Context', function () { return contextParams.debug; });\n        var context = new Context(contextParams, contextLogger);\n        var beans = context.getBean('beans');\n        this.registerModuleUserComponents(beans, registeredModules);\n        this.registerStackComponents(beans, registeredModules);\n        this.registerControllers(beans, registeredModules);\n        createUi(context);\n        // we wait until the UI has finished initialising before setting in columns and rows\n        beans.ctrlsService.whenReady(function () {\n            _this.setColumnsAndData(beans);\n            _this.dispatchGridReadyEvent(beans);\n            var isEnterprise = ModuleRegistry.isRegistered(ModuleNames.EnterpriseCoreModule);\n            logger.log(\"initialised successfully, enterprise = \" + isEnterprise);\n        });\n        if (acceptChanges) {\n            acceptChanges(context);\n        }\n    };\n    GridCoreCreator.prototype.registerControllers = function (beans, registeredModules) {\n        registeredModules.forEach(function (module) {\n            if (module.controllers) {\n                module.controllers.forEach(function (meta) { return beans.ctrlsFactory.register(meta); });\n            }\n        });\n    };\n    GridCoreCreator.prototype.registerStackComponents = function (beans, registeredModules) {\n        var agStackComponents = this.createAgStackComponentsList(registeredModules);\n        beans.agStackComponentsRegistry.setupComponents(agStackComponents);\n    };\n    GridCoreCreator.prototype.getRegisteredModules = function (params) {\n        var passedViaConstructor = params ? params.modules : null;\n        var registered = ModuleRegistry.getRegisteredModules();\n        var allModules = [];\n        var mapNames = {};\n        // adds to list and removes duplicates\n        function addModule(moduleBased, mod) {\n            function addIndividualModule(currentModule) {\n                if (!mapNames[currentModule.moduleName]) {\n                    mapNames[currentModule.moduleName] = true;\n                    allModules.push(currentModule);\n                    ModuleRegistry.register(currentModule, moduleBased);\n                }\n            }\n            addIndividualModule(mod);\n            if (mod.dependantModules) {\n                mod.dependantModules.forEach(addModule.bind(null, moduleBased));\n            }\n        }\n        if (passedViaConstructor) {\n            passedViaConstructor.forEach(addModule.bind(null, true));\n        }\n        if (registered) {\n            registered.forEach(addModule.bind(null, !ModuleRegistry.isPackageBased()));\n        }\n        return allModules;\n    };\n    GridCoreCreator.prototype.registerModuleUserComponents = function (beans, registeredModules) {\n        var moduleUserComps = this.extractModuleEntity(registeredModules, function (module) { return module.userComponents ? module.userComponents : []; });\n        moduleUserComps.forEach(function (compMeta) {\n            beans.userComponentRegistry.registerDefaultComponent(compMeta.componentName, compMeta.componentClass);\n        });\n    };\n    GridCoreCreator.prototype.createProvidedBeans = function (eGridDiv, gridOptions, params) {\n        var frameworkOverrides = params ? params.frameworkOverrides : null;\n        if (missing(frameworkOverrides)) {\n            frameworkOverrides = new VanillaFrameworkOverrides();\n        }\n        var seed = {\n            gridOptions: gridOptions,\n            eGridDiv: eGridDiv,\n            globalEventListener: params ? params.globalEventListener : null,\n            frameworkOverrides: frameworkOverrides\n        };\n        if (params && params.providedBeanInstances) {\n            Object.assign(seed, params.providedBeanInstances);\n        }\n        return seed;\n    };\n    GridCoreCreator.prototype.createAgStackComponentsList = function (registeredModules) {\n        var components = [\n            { componentName: 'AgCheckbox', componentClass: AgCheckbox },\n            { componentName: 'AgRadioButton', componentClass: AgRadioButton },\n            { componentName: 'AgToggleButton', componentClass: AgToggleButton },\n            { componentName: 'AgInputTextField', componentClass: AgInputTextField },\n            { componentName: 'AgInputTextArea', componentClass: AgInputTextArea },\n            { componentName: 'AgInputNumberField', componentClass: AgInputNumberField },\n            { componentName: 'AgInputRange', componentClass: AgInputRange },\n            { componentName: 'AgSelect', componentClass: AgSelect },\n            { componentName: 'AgSlider', componentClass: AgSlider },\n            { componentName: 'AgGridBody', componentClass: GridBodyComp },\n            { componentName: 'AgHeaderRoot', componentClass: GridHeaderComp },\n            { componentName: 'AgSortIndicator', componentClass: SortIndicatorComp },\n            { componentName: 'AgPagination', componentClass: PaginationComp },\n            { componentName: 'AgOverlayWrapper', componentClass: OverlayWrapperComponent },\n            { componentName: 'AgGroupComponent', componentClass: AgGroupComponent },\n            { componentName: 'AgPanel', componentClass: AgPanel },\n            { componentName: 'AgDialog', componentClass: AgDialog },\n            { componentName: 'AgRowContainer', componentClass: RowContainerComp },\n            { componentName: 'AgFakeHorizontalScroll', componentClass: FakeHScrollComp },\n            { componentName: 'AgFakeVerticalScroll', componentClass: FakeVScrollComp }\n        ];\n        var moduleAgStackComps = this.extractModuleEntity(registeredModules, function (module) { return module.agStackComponents ? module.agStackComponents : []; });\n        components = components.concat(moduleAgStackComps);\n        return components;\n    };\n    GridCoreCreator.prototype.createBeansList = function (rowModelType, registeredModules) {\n        if (rowModelType === void 0) { rowModelType = 'clientSide'; }\n        // only load beans matching the required row model\n        var rowModelModules = registeredModules.filter(function (module) { return !module.rowModel || module.rowModel === rowModelType; });\n        // assert that the relevant module has been loaded\n        var rowModelModuleNames = {\n            clientSide: ModuleNames.ClientSideRowModelModule,\n            infinite: ModuleNames.InfiniteRowModelModule,\n            serverSide: ModuleNames.ServerSideRowModelModule,\n            viewport: ModuleNames.ViewportRowModelModule\n        };\n        if (!rowModelModuleNames[rowModelType]) {\n            console.error('AG Grid: could not find row model for rowModelType = ' + rowModelType);\n            return;\n        }\n        if (!ModuleRegistry.assertRegistered(rowModelModuleNames[rowModelType], \"rowModelType = '\" + rowModelType + \"'\")) {\n            return;\n        }\n        // beans should only contain SERVICES, it should NEVER contain COMPONENTS\n        var beans = [\n            Beans, RowPositionUtils, CellPositionUtils, HeaderPositionUtils,\n            PaginationAutoPageSizeService, GridApi, UserComponentRegistry, AgComponentUtils,\n            ComponentMetadataProvider, ResizeObserverService, UserComponentFactory,\n            RowContainerHeightService, HorizontalResizeService, LocaleService, GridOptionsValidator,\n            PinnedRowModel, DragService, DisplayedGroupCreator, EventService, GridOptionsService,\n            PopupService, SelectionService, FilterManager, ColumnModel, HeaderNavigationService,\n            PaginationProxy, RowRenderer, ExpressionService, ColumnFactory, TemplateService,\n            AlignedGridsService, NavigationService, ValueCache, ValueService, LoggerFactory,\n            ColumnUtils, AutoWidthCalculator, StandardMenuFactory, DragAndDropService, ColumnApi,\n            FocusService, MouseEventService, Environment, CellNavigationService, ValueFormatterService,\n            StylingService, ScrollVisibleService, SortController, ColumnHoverService, ColumnAnimationService,\n            SelectableService, AutoGroupColService, ChangeDetectionService, AnimationFrameService,\n            UndoRedoService, AgStackComponentsRegistry, ColumnDefFactory,\n            RowCssClassCalculator, RowNodeBlockLoader, RowNodeSorter, CtrlsService,\n            PinnedWidthService, RowNodeEventThrottle, CtrlsFactory\n        ];\n        var moduleBeans = this.extractModuleEntity(rowModelModules, function (module) { return module.beans ? module.beans : []; });\n        beans.push.apply(beans, __spread$2(moduleBeans));\n        // check for duplicates, as different modules could include the same beans that\n        // they depend on, eg ClientSideRowModel in enterprise, and ClientSideRowModel in community\n        var beansNoDuplicates = [];\n        beans.forEach(function (bean) {\n            if (beansNoDuplicates.indexOf(bean) < 0) {\n                beansNoDuplicates.push(bean);\n            }\n        });\n        return beansNoDuplicates;\n    };\n    GridCoreCreator.prototype.extractModuleEntity = function (moduleEntities, extractor) {\n        return [].concat.apply([], __spread$2(moduleEntities.map(extractor)));\n    };\n    GridCoreCreator.prototype.setColumnsAndData = function (beans) {\n        var columnDefs = beans.gridOptionsService.get('columnDefs');\n        beans.columnModel.setColumnDefs(columnDefs || [], \"gridInitializing\");\n        beans.rowModel.start();\n    };\n    GridCoreCreator.prototype.dispatchGridReadyEvent = function (beans) {\n        var readyEvent = {\n            type: Events.EVENT_GRID_READY,\n        };\n        beans.eventService.dispatchEvent(readyEvent);\n    };\n    return GridCoreCreator;\n}());\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar BaseComponentWrapper = /** @class */ (function () {\n    function BaseComponentWrapper() {\n    }\n    BaseComponentWrapper.prototype.wrap = function (OriginalConstructor, mandatoryMethodList, optionalMethodList, componentType) {\n        var _this = this;\n        if (optionalMethodList === void 0) { optionalMethodList = []; }\n        var wrapper = this.createWrapper(OriginalConstructor, componentType);\n        mandatoryMethodList.forEach((function (methodName) {\n            _this.createMethod(wrapper, methodName, true);\n        }));\n        optionalMethodList.forEach((function (methodName) {\n            _this.createMethod(wrapper, methodName, false);\n        }));\n        return wrapper;\n    };\n    BaseComponentWrapper.prototype.unwrap = function (comp) {\n        return comp;\n    };\n    BaseComponentWrapper.prototype.createMethod = function (wrapper, methodName, mandatory) {\n        wrapper.addMethod(methodName, this.createMethodProxy(wrapper, methodName, mandatory));\n    };\n    BaseComponentWrapper.prototype.createMethodProxy = function (wrapper, methodName, mandatory) {\n        return function () {\n            if (wrapper.hasMethod(methodName)) {\n                return wrapper.callMethod(methodName, arguments);\n            }\n            if (mandatory) {\n                console.warn('AG Grid: Framework component is missing the method ' + methodName + '()');\n            }\n            return null;\n        };\n    };\n    return BaseComponentWrapper;\n}());\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar DEFAULT_CHART_GROUPS = {\n    columnGroup: [\n        'column',\n        'stackedColumn',\n        'normalizedColumn'\n    ],\n    barGroup: [\n        'bar',\n        'stackedBar',\n        'normalizedBar'\n    ],\n    pieGroup: [\n        'pie',\n        'doughnut'\n    ],\n    lineGroup: [\n        'line'\n    ],\n    scatterGroup: [\n        'scatter',\n        'bubble'\n    ],\n    areaGroup: [\n        'area',\n        'stackedArea',\n        'normalizedArea'\n    ],\n    histogramGroup: [\n        'histogram'\n    ],\n    combinationGroup: [\n        'columnLineCombo',\n        'areaColumnCombo',\n        'customCombo'\n    ]\n};\nvar CHART_TOOL_PANEL_ALLOW_LIST = [\n    'chartSettings',\n    'chartData',\n    'chartFormat'\n];\nvar CHART_TOOLBAR_ALLOW_LIST = [\n    'chartUnlink',\n    'chartLink',\n    'chartDownload'\n];\nvar CHART_TOOL_PANEL_MENU_OPTIONS = {\n    settings: \"chartSettings\",\n    data: \"chartData\",\n    format: \"chartFormat\"\n};\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\n/**\n * Internal Use Only: Used to ensure this file is treated as a module until we can use moduleDetection flag in Ts v4.7\n */\nvar __FORCE_MODULE_DETECTION = 0;\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar BarColumnLabelPlacement;\n(function (BarColumnLabelPlacement) {\n    BarColumnLabelPlacement[\"InsideBase\"] = \"insideBase\";\n    BarColumnLabelPlacement[\"InsideEnd\"] = \"insideEnd\";\n    BarColumnLabelPlacement[\"Center\"] = \"center\";\n    BarColumnLabelPlacement[\"OutsideEnd\"] = \"outsideEnd\";\n})(BarColumnLabelPlacement || (BarColumnLabelPlacement = {}));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v29.3.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar globalObj = typeof global === 'undefined' ? {} : global;\nglobalObj.HTMLElement = typeof HTMLElement === 'undefined' ? {} : HTMLElement;\nglobalObj.HTMLButtonElement = typeof HTMLButtonElement === 'undefined' ? {} : HTMLButtonElement;\nglobalObj.HTMLSelectElement = typeof HTMLSelectElement === 'undefined' ? {} : HTMLSelectElement;\nglobalObj.HTMLInputElement = typeof HTMLInputElement === 'undefined' ? {} : HTMLInputElement;\nglobalObj.Node = typeof Node === 'undefined' ? {} : Node;\nglobalObj.MouseEvent = typeof MouseEvent === 'undefined' ? {} : MouseEvent;\n\nvar __read$2 = (undefined && undefined.__read) || function (o, n) {\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n    if (!m) return o;\n    var i = m.call(o), r, ar = [], e;\n    try {\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n    }\n    catch (error) { e = { error: error }; }\n    finally {\n        try {\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\n        }\n        finally { if (e) throw e.error; }\n    }\n    return ar;\n};\nvar __spread$1 = (undefined && undefined.__spread) || function () {\n    for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read$2(arguments[i]));\n    return ar;\n};\nvar ClientSideNodeManager = /** @class */ (function () {\n    function ClientSideNodeManager(rootNode, gridOptionsService, eventService, columnModel, selectionService, beans) {\n        this.nextId = 0;\n        // when user is provide the id's, we also keep a map of ids to row nodes for convenience\n        this.allNodesMap = {};\n        this.rootNode = rootNode;\n        this.gridOptionsService = gridOptionsService;\n        this.eventService = eventService;\n        this.columnModel = columnModel;\n        this.beans = beans;\n        this.selectionService = selectionService;\n        this.rootNode.group = true;\n        this.rootNode.level = -1;\n        this.rootNode.id = ClientSideNodeManager.ROOT_NODE_ID;\n        this.rootNode.allLeafChildren = [];\n        this.rootNode.childrenAfterGroup = [];\n        this.rootNode.childrenAfterSort = [];\n        this.rootNode.childrenAfterAggFilter = [];\n        this.rootNode.childrenAfterFilter = [];\n        // if we make this class a bean, then can annotate postConstruct\n        this.postConstruct();\n    }\n    // @PostConstruct - this is not a bean, so postConstruct called by constructor\n    ClientSideNodeManager.prototype.postConstruct = function () {\n        // func below doesn't have 'this' pointer, so need to pull out these bits\n        this.suppressParentsInRowNodes = this.gridOptionsService.is('suppressParentsInRowNodes');\n        this.isRowMasterFunc = this.gridOptionsService.get('isRowMaster');\n        this.doingTreeData = this.gridOptionsService.isTreeData();\n        this.doingMasterDetail = this.gridOptionsService.isMasterDetail();\n    };\n    ClientSideNodeManager.prototype.getCopyOfNodesMap = function () {\n        return _.cloneObject(this.allNodesMap);\n    };\n    ClientSideNodeManager.prototype.getRowNode = function (id) {\n        return this.allNodesMap[id];\n    };\n    ClientSideNodeManager.prototype.setRowData = function (rowData) {\n        var _this = this;\n        if (typeof rowData === 'string') {\n            console.warn('AG Grid: rowData must be an array, however you passed in a string. If you are loading JSON, make sure you convert the JSON string to JavaScript objects first');\n            return;\n        }\n        var rootNode = this.rootNode;\n        var sibling = this.rootNode.sibling;\n        rootNode.childrenAfterFilter = null;\n        rootNode.childrenAfterGroup = null;\n        rootNode.childrenAfterAggFilter = null;\n        rootNode.childrenAfterSort = null;\n        rootNode.childrenMapped = null;\n        rootNode.updateHasChildren();\n        this.nextId = 0;\n        this.allNodesMap = {};\n        if (rowData) {\n            // we use rootNode as the parent, however if using ag-grid-enterprise, the grouping stage\n            // sets the parent node on each row (even if we are not grouping). so setting parent node\n            // here is for benefit of ag-grid-community users\n            rootNode.allLeafChildren = rowData.map(function (dataItem) { return _this.createNode(dataItem, _this.rootNode, ClientSideNodeManager.TOP_LEVEL); });\n        }\n        else {\n            rootNode.allLeafChildren = [];\n            rootNode.childrenAfterGroup = [];\n        }\n        if (sibling) {\n            sibling.childrenAfterFilter = rootNode.childrenAfterFilter;\n            sibling.childrenAfterGroup = rootNode.childrenAfterGroup;\n            sibling.childrenAfterAggFilter = rootNode.childrenAfterAggFilter;\n            sibling.childrenAfterSort = rootNode.childrenAfterSort;\n            sibling.childrenMapped = rootNode.childrenMapped;\n            sibling.allLeafChildren = rootNode.allLeafChildren;\n        }\n    };\n    ClientSideNodeManager.prototype.updateRowData = function (rowDataTran, rowNodeOrder) {\n        var rowNodeTransaction = {\n            remove: [],\n            update: [],\n            add: []\n        };\n        var nodesToUnselect = [];\n        this.executeRemove(rowDataTran, rowNodeTransaction, nodesToUnselect);\n        this.executeUpdate(rowDataTran, rowNodeTransaction, nodesToUnselect);\n        this.executeAdd(rowDataTran, rowNodeTransaction);\n        this.updateSelection(nodesToUnselect, 'rowDataChanged');\n        if (rowNodeOrder) {\n            _.sortRowNodesByOrder(this.rootNode.allLeafChildren, rowNodeOrder);\n        }\n        return rowNodeTransaction;\n    };\n    ClientSideNodeManager.prototype.updateSelection = function (nodesToUnselect, source) {\n        var selectionChanged = nodesToUnselect.length > 0;\n        if (selectionChanged) {\n            nodesToUnselect.forEach(function (rowNode) {\n                rowNode.setSelected(false, false, true, source);\n            });\n        }\n        // we do this regardless of nodes to unselect or not, as it's possible\n        // a new node was inserted, so a parent that was previously selected (as all\n        // children were selected) should not be tri-state (as new one unselected against\n        // all other selected children).\n        this.selectionService.updateGroupsFromChildrenSelections(source);\n        if (selectionChanged) {\n            var event_1 = {\n                type: Events.EVENT_SELECTION_CHANGED,\n                source: source\n            };\n            this.eventService.dispatchEvent(event_1);\n        }\n    };\n    ClientSideNodeManager.prototype.executeAdd = function (rowDataTran, rowNodeTransaction) {\n        var _this = this;\n        var _a;\n        var add = rowDataTran.add, addIndex = rowDataTran.addIndex;\n        if (_.missingOrEmpty(add)) {\n            return;\n        }\n        // create new row nodes for each data item\n        var newNodes = add.map(function (item) { return _this.createNode(item, _this.rootNode, ClientSideNodeManager.TOP_LEVEL); });\n        if (typeof addIndex === 'number' && addIndex >= 0) {\n            // new rows are inserted in one go by concatenating them in between the existing rows at the desired index.\n            // this is much faster than splicing them individually into 'allLeafChildren' when there are large inserts.\n            var allLeafChildren = this.rootNode.allLeafChildren;\n            var len = allLeafChildren.length;\n            var normalisedAddIndex = addIndex;\n            if (this.doingTreeData && addIndex > 0 && len > 0) {\n                for (var i = 0; i < len; i++) {\n                    if (((_a = allLeafChildren[i]) === null || _a === void 0 ? void 0 : _a.rowIndex) == addIndex - 1) {\n                        normalisedAddIndex = i + 1;\n                        break;\n                    }\n                }\n            }\n            var nodesBeforeIndex = allLeafChildren.slice(0, normalisedAddIndex);\n            var nodesAfterIndex = allLeafChildren.slice(normalisedAddIndex, allLeafChildren.length);\n            this.rootNode.allLeafChildren = __spread$1(nodesBeforeIndex, newNodes, nodesAfterIndex);\n        }\n        else {\n            this.rootNode.allLeafChildren = __spread$1(this.rootNode.allLeafChildren, newNodes);\n        }\n        if (this.rootNode.sibling) {\n            this.rootNode.sibling.allLeafChildren = this.rootNode.allLeafChildren;\n        }\n        // add new row nodes to the transaction add items\n        rowNodeTransaction.add = newNodes;\n    };\n    ClientSideNodeManager.prototype.executeRemove = function (rowDataTran, rowNodeTransaction, nodesToUnselect) {\n        var _this = this;\n        var remove = rowDataTran.remove;\n        if (_.missingOrEmpty(remove)) {\n            return;\n        }\n        var rowIdsRemoved = {};\n        remove.forEach(function (item) {\n            var rowNode = _this.lookupRowNode(item);\n            if (!rowNode) {\n                return;\n            }\n            // do delete - setting 'suppressFinishActions = true' to ensure EVENT_SELECTION_CHANGED is not raised for\n            // each row node updated, instead it is raised once by the calling code if any selected nodes exist.\n            if (rowNode.isSelected()) {\n                nodesToUnselect.push(rowNode);\n            }\n            // so row renderer knows to fade row out (and not reposition it)\n            rowNode.clearRowTopAndRowIndex();\n            // NOTE: were we could remove from allLeaveChildren, however _.removeFromArray() is expensive, especially\n            // if called multiple times (eg deleting lots of rows) and if allLeafChildren is a large list\n            rowIdsRemoved[rowNode.id] = true;\n            // _.removeFromArray(this.rootNode.allLeafChildren, rowNode);\n            delete _this.allNodesMap[rowNode.id];\n            rowNodeTransaction.remove.push(rowNode);\n        });\n        this.rootNode.allLeafChildren = this.rootNode.allLeafChildren.filter(function (rowNode) { return !rowIdsRemoved[rowNode.id]; });\n        if (this.rootNode.sibling) {\n            this.rootNode.sibling.allLeafChildren = this.rootNode.allLeafChildren;\n        }\n    };\n    ClientSideNodeManager.prototype.executeUpdate = function (rowDataTran, rowNodeTransaction, nodesToUnselect) {\n        var _this = this;\n        var update = rowDataTran.update;\n        if (_.missingOrEmpty(update)) {\n            return;\n        }\n        update.forEach(function (item) {\n            var rowNode = _this.lookupRowNode(item);\n            if (!rowNode) {\n                return;\n            }\n            rowNode.updateData(item);\n            if (!rowNode.selectable && rowNode.isSelected()) {\n                nodesToUnselect.push(rowNode);\n            }\n            _this.setMasterForRow(rowNode, item, ClientSideNodeManager.TOP_LEVEL, false);\n            rowNodeTransaction.update.push(rowNode);\n        });\n    };\n    ClientSideNodeManager.prototype.lookupRowNode = function (data) {\n        var getRowIdFunc = this.gridOptionsService.getRowIdFunc();\n        var rowNode;\n        if (getRowIdFunc) {\n            // find rowNode using id\n            var id = getRowIdFunc({ data: data, level: 0 });\n            rowNode = this.allNodesMap[id];\n            if (!rowNode) {\n                console.error(\"AG Grid: could not find row id=\" + id + \", data item was not found for this id\");\n                return null;\n            }\n        }\n        else {\n            // find rowNode using object references\n            rowNode = this.rootNode.allLeafChildren.find(function (node) { return node.data === data; });\n            if (!rowNode) {\n                console.error(\"AG Grid: could not find data item as object was not found\", data);\n                console.error(\"Consider using getRowId to help the Grid find matching row data\");\n                return null;\n            }\n        }\n        return rowNode || null;\n    };\n    ClientSideNodeManager.prototype.createNode = function (dataItem, parent, level) {\n        var node = new RowNode(this.beans);\n        node.group = false;\n        this.setMasterForRow(node, dataItem, level, true);\n        if (parent && !this.suppressParentsInRowNodes) {\n            node.parent = parent;\n        }\n        node.level = level;\n        node.setDataAndId(dataItem, this.nextId.toString());\n        if (this.allNodesMap[node.id]) {\n            console.warn(\"AG Grid: duplicate node id '\" + node.id + \"' detected from getRowId callback, this could cause issues in your grid.\");\n        }\n        this.allNodesMap[node.id] = node;\n        this.nextId++;\n        return node;\n    };\n    ClientSideNodeManager.prototype.setMasterForRow = function (rowNode, data, level, setExpanded) {\n        if (this.doingTreeData) {\n            rowNode.setMaster(false);\n            if (setExpanded) {\n                rowNode.expanded = false;\n            }\n        }\n        else {\n            // this is the default, for when doing grid data\n            if (this.doingMasterDetail) {\n                // if we are doing master detail, then the\n                // default is that everything can be a Master Row.\n                if (this.isRowMasterFunc) {\n                    rowNode.setMaster(this.isRowMasterFunc(data));\n                }\n                else {\n                    rowNode.setMaster(true);\n                }\n            }\n            else {\n                rowNode.setMaster(false);\n            }\n            if (setExpanded) {\n                var rowGroupColumns = this.columnModel.getRowGroupColumns();\n                var numRowGroupColumns = rowGroupColumns ? rowGroupColumns.length : 0;\n                // need to take row group into account when determining level\n                var masterRowLevel = level + numRowGroupColumns;\n                rowNode.expanded = rowNode.master ? this.isExpanded(masterRowLevel) : false;\n            }\n        }\n    };\n    ClientSideNodeManager.prototype.isExpanded = function (level) {\n        var expandByDefault = this.gridOptionsService.getNum('groupDefaultExpanded');\n        if (expandByDefault === -1) {\n            return true;\n        }\n        return level < expandByDefault;\n    };\n    ClientSideNodeManager.TOP_LEVEL = 0;\n    ClientSideNodeManager.ROOT_NODE_ID = 'ROOT_NODE_ID';\n    return ClientSideNodeManager;\n}());\n\nvar __extends$c = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$b = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __read$1 = (undefined && undefined.__read) || function (o, n) {\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n    if (!m) return o;\n    var i = m.call(o), r, ar = [], e;\n    try {\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n    }\n    catch (error) { e = { error: error }; }\n    finally {\n        try {\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\n        }\n        finally { if (e) throw e.error; }\n    }\n    return ar;\n};\nvar __spread = (undefined && undefined.__spread) || function () {\n    for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read$1(arguments[i]));\n    return ar;\n};\nvar RecursionType;\n(function (RecursionType) {\n    RecursionType[RecursionType[\"Normal\"] = 0] = \"Normal\";\n    RecursionType[RecursionType[\"AfterFilter\"] = 1] = \"AfterFilter\";\n    RecursionType[RecursionType[\"AfterFilterAndSort\"] = 2] = \"AfterFilterAndSort\";\n    RecursionType[RecursionType[\"PivotNodes\"] = 3] = \"PivotNodes\";\n})(RecursionType || (RecursionType = {}));\nvar ClientSideRowModel = /** @class */ (function (_super) {\n    __extends$c(ClientSideRowModel, _super);\n    function ClientSideRowModel() {\n        var _this = _super !== null && _super.apply(this, arguments) || this;\n        _this.onRowHeightChanged_debounced = _.debounce(_this.onRowHeightChanged.bind(_this), 100);\n        _this.rowsToDisplay = []; // the rows mapped to rows to display\n        return _this;\n    }\n    ClientSideRowModel.prototype.init = function () {\n        var refreshEverythingFunc = this.refreshModel.bind(this, { step: ClientSideRowModelSteps.EVERYTHING });\n        var animate = !this.gridOptionsService.is('suppressAnimationFrame');\n        var refreshEverythingAfterColsChangedFunc = this.refreshModel.bind(this, {\n            step: ClientSideRowModelSteps.EVERYTHING,\n            afterColumnsChanged: true,\n            keepRenderedRows: true,\n            animate: animate\n        });\n        this.addManagedListener(this.eventService, Events.EVENT_NEW_COLUMNS_LOADED, refreshEverythingAfterColsChangedFunc);\n        this.addManagedListener(this.eventService, Events.EVENT_COLUMN_ROW_GROUP_CHANGED, refreshEverythingFunc);\n        this.addManagedListener(this.eventService, Events.EVENT_COLUMN_VALUE_CHANGED, this.onValueChanged.bind(this));\n        this.addManagedListener(this.eventService, Events.EVENT_COLUMN_PIVOT_CHANGED, this.refreshModel.bind(this, { step: ClientSideRowModelSteps.PIVOT }));\n        this.addManagedListener(this.eventService, Events.EVENT_FILTER_CHANGED, this.onFilterChanged.bind(this));\n        this.addManagedListener(this.eventService, Events.EVENT_SORT_CHANGED, this.onSortChanged.bind(this));\n        this.addManagedListener(this.eventService, Events.EVENT_COLUMN_PIVOT_MODE_CHANGED, refreshEverythingFunc);\n        this.addManagedListener(this.eventService, Events.EVENT_GRID_STYLES_CHANGED, this.onGridStylesChanges.bind(this));\n        var refreshMapListener = this.refreshModel.bind(this, {\n            step: ClientSideRowModelSteps.MAP,\n            keepRenderedRows: true,\n            animate: animate\n        });\n        this.addManagedPropertyListener('groupRemoveSingleChildren', refreshMapListener);\n        this.addManagedPropertyListener('groupRemoveLowestSingleChildren', refreshMapListener);\n        this.rootNode = new RowNode(this.beans);\n        this.nodeManager = new ClientSideNodeManager(this.rootNode, this.gridOptionsService, this.eventService, this.columnModel, this.selectionService, this.beans);\n    };\n    ClientSideRowModel.prototype.start = function () {\n        var rowData = this.gridOptionsService.get('rowData');\n        if (rowData) {\n            this.setRowData(rowData);\n        }\n    };\n    ClientSideRowModel.prototype.ensureRowHeightsValid = function (startPixel, endPixel, startLimitIndex, endLimitIndex) {\n        var atLeastOneChange;\n        var res = false;\n        // we do this multiple times as changing the row heights can also change the first and last rows,\n        // so the first pass can make lots of rows smaller, which means the second pass we end up changing\n        // more rows.\n        do {\n            atLeastOneChange = false;\n            var rowAtStartPixel = this.getRowIndexAtPixel(startPixel);\n            var rowAtEndPixel = this.getRowIndexAtPixel(endPixel);\n            // keep check to current page if doing pagination\n            var firstRow = Math.max(rowAtStartPixel, startLimitIndex);\n            var lastRow = Math.min(rowAtEndPixel, endLimitIndex);\n            for (var rowIndex = firstRow; rowIndex <= lastRow; rowIndex++) {\n                var rowNode = this.getRow(rowIndex);\n                if (rowNode.rowHeightEstimated) {\n                    var rowHeight = this.gridOptionsService.getRowHeightForNode(rowNode);\n                    rowNode.setRowHeight(rowHeight.height);\n                    atLeastOneChange = true;\n                    res = true;\n                }\n            }\n            if (atLeastOneChange) {\n                this.setRowTopAndRowIndex();\n            }\n        } while (atLeastOneChange);\n        return res;\n    };\n    ClientSideRowModel.prototype.setRowTopAndRowIndex = function () {\n        var defaultRowHeight = this.environment.getDefaultRowHeight();\n        var nextRowTop = 0;\n        // mapping displayed rows is not needed for this method, however it's used in\n        // clearRowTopAndRowIndex(), and given we are looping through this.rowsToDisplay here,\n        // we create the map here for performance reasons, so we don't loop a second time\n        // in clearRowTopAndRowIndex()\n        var displayedRowsMapped = new Set();\n        // we don't estimate if doing fullHeight or autoHeight, as all rows get rendered all the time\n        // with these two layouts.\n        var allowEstimate = this.gridOptionsService.isDomLayout('normal');\n        for (var i = 0; i < this.rowsToDisplay.length; i++) {\n            var rowNode = this.rowsToDisplay[i];\n            if (rowNode.id != null) {\n                displayedRowsMapped.add(rowNode.id);\n            }\n            if (rowNode.rowHeight == null) {\n                var rowHeight = this.gridOptionsService.getRowHeightForNode(rowNode, allowEstimate, defaultRowHeight);\n                rowNode.setRowHeight(rowHeight.height, rowHeight.estimated);\n            }\n            rowNode.setRowTop(nextRowTop);\n            rowNode.setRowIndex(i);\n            nextRowTop += rowNode.rowHeight;\n        }\n        return displayedRowsMapped;\n    };\n    ClientSideRowModel.prototype.clearRowTopAndRowIndex = function (changedPath, displayedRowsMapped) {\n        var changedPathActive = changedPath.isActive();\n        var clearIfNotDisplayed = function (rowNode) {\n            if (rowNode && rowNode.id != null && !displayedRowsMapped.has(rowNode.id)) {\n                rowNode.clearRowTopAndRowIndex();\n            }\n        };\n        var recurse = function (rowNode) {\n            clearIfNotDisplayed(rowNode);\n            clearIfNotDisplayed(rowNode.detailNode);\n            clearIfNotDisplayed(rowNode.sibling);\n            if (rowNode.hasChildren()) {\n                if (rowNode.childrenAfterGroup) {\n                    // if a changedPath is active, it means we are here because of a transaction update or\n                    // a change detection. neither of these impacts the open/closed state of groups. so if\n                    // a group is not open this time, it was not open last time. so we know all closed groups\n                    // already have their top positions cleared. so there is no need to traverse all the way\n                    // when changedPath is active and the rowNode is not expanded.\n                    var isRootNode = rowNode.level == -1; // we need to give special consideration for root node,\n                    // as expanded=undefined for root node\n                    var skipChildren = changedPathActive && !isRootNode && !rowNode.expanded;\n                    if (!skipChildren) {\n                        rowNode.childrenAfterGroup.forEach(recurse);\n                    }\n                }\n            }\n        };\n        recurse(this.rootNode);\n    };\n    // returns false if row was moved, otherwise true\n    ClientSideRowModel.prototype.ensureRowsAtPixel = function (rowNodes, pixel, increment) {\n        var _this = this;\n        if (increment === void 0) { increment = 0; }\n        var indexAtPixelNow = this.getRowIndexAtPixel(pixel);\n        var rowNodeAtPixelNow = this.getRow(indexAtPixelNow);\n        var animate = !this.gridOptionsService.is('suppressAnimationFrame');\n        if (rowNodeAtPixelNow === rowNodes[0]) {\n            return false;\n        }\n        rowNodes.forEach(function (rowNode) {\n            _.removeFromArray(_this.rootNode.allLeafChildren, rowNode);\n        });\n        rowNodes.forEach(function (rowNode, idx) {\n            _.insertIntoArray(_this.rootNode.allLeafChildren, rowNode, Math.max(indexAtPixelNow + increment, 0) + idx);\n        });\n        this.refreshModel({\n            step: ClientSideRowModelSteps.EVERYTHING,\n            keepRenderedRows: true,\n            keepEditingRows: true,\n            animate: animate\n        });\n        return true;\n    };\n    ClientSideRowModel.prototype.highlightRowAtPixel = function (rowNode, pixel) {\n        var indexAtPixelNow = pixel != null ? this.getRowIndexAtPixel(pixel) : null;\n        var rowNodeAtPixelNow = indexAtPixelNow != null ? this.getRow(indexAtPixelNow) : null;\n        if (!rowNodeAtPixelNow || !rowNode || rowNodeAtPixelNow === rowNode || pixel == null) {\n            if (this.lastHighlightedRow) {\n                this.lastHighlightedRow.setHighlighted(null);\n                this.lastHighlightedRow = null;\n            }\n            return;\n        }\n        var highlight = this.getHighlightPosition(pixel, rowNodeAtPixelNow);\n        if (this.lastHighlightedRow && this.lastHighlightedRow !== rowNodeAtPixelNow) {\n            this.lastHighlightedRow.setHighlighted(null);\n            this.lastHighlightedRow = null;\n        }\n        rowNodeAtPixelNow.setHighlighted(highlight);\n        this.lastHighlightedRow = rowNodeAtPixelNow;\n    };\n    ClientSideRowModel.prototype.getHighlightPosition = function (pixel, rowNode) {\n        if (!rowNode) {\n            var index = this.getRowIndexAtPixel(pixel);\n            rowNode = this.getRow(index || 0);\n            if (!rowNode) {\n                return RowHighlightPosition.Below;\n            }\n        }\n        var rowTop = rowNode.rowTop, rowHeight = rowNode.rowHeight;\n        return pixel - rowTop < rowHeight / 2 ? RowHighlightPosition.Above : RowHighlightPosition.Below;\n    };\n    ClientSideRowModel.prototype.getLastHighlightedRowNode = function () {\n        return this.lastHighlightedRow;\n    };\n    ClientSideRowModel.prototype.isLastRowIndexKnown = function () {\n        return true;\n    };\n    ClientSideRowModel.prototype.getRowCount = function () {\n        if (this.rowsToDisplay) {\n            return this.rowsToDisplay.length;\n        }\n        return 0;\n    };\n    ClientSideRowModel.prototype.getTopLevelRowCount = function () {\n        var showingRootNode = this.rowsToDisplay && this.rowsToDisplay[0] === this.rootNode;\n        if (showingRootNode) {\n            return 1;\n        }\n        var filteredChildren = this.rootNode.childrenAfterAggFilter;\n        return filteredChildren ? filteredChildren.length : 0;\n    };\n    ClientSideRowModel.prototype.getTopLevelRowDisplayedIndex = function (topLevelIndex) {\n        var showingRootNode = this.rowsToDisplay && this.rowsToDisplay[0] === this.rootNode;\n        if (showingRootNode) {\n            return topLevelIndex;\n        }\n        var rowNode = this.rootNode.childrenAfterSort[topLevelIndex];\n        if (this.gridOptionsService.is('groupHideOpenParents')) {\n            // if hideOpenParents, and this row open, then this row is now displayed at this index, first child is\n            while (rowNode.expanded && rowNode.childrenAfterSort && rowNode.childrenAfterSort.length > 0) {\n                rowNode = rowNode.childrenAfterSort[0];\n            }\n        }\n        return rowNode.rowIndex;\n    };\n    ClientSideRowModel.prototype.getRowBounds = function (index) {\n        if (_.missing(this.rowsToDisplay)) {\n            return null;\n        }\n        var rowNode = this.rowsToDisplay[index];\n        if (rowNode) {\n            return {\n                rowTop: rowNode.rowTop,\n                rowHeight: rowNode.rowHeight\n            };\n        }\n        return null;\n    };\n    ClientSideRowModel.prototype.onRowGroupOpened = function () {\n        var animate = this.gridOptionsService.isAnimateRows();\n        this.refreshModel({ step: ClientSideRowModelSteps.MAP, keepRenderedRows: true, animate: animate });\n    };\n    ClientSideRowModel.prototype.onFilterChanged = function (event) {\n        if (event.afterDataChange) {\n            return;\n        }\n        var animate = this.gridOptionsService.isAnimateRows();\n        var primaryOrQuickFilterChanged = event.columns.length === 0 || event.columns.some(function (col) { return col.isPrimary(); });\n        var step = primaryOrQuickFilterChanged ? ClientSideRowModelSteps.FILTER : ClientSideRowModelSteps.FILTER_AGGREGATES;\n        this.refreshModel({ step: step, keepRenderedRows: true, animate: animate });\n    };\n    ClientSideRowModel.prototype.onSortChanged = function () {\n        var animate = this.gridOptionsService.isAnimateRows();\n        this.refreshModel({ step: ClientSideRowModelSteps.SORT, keepRenderedRows: true, animate: animate, keepEditingRows: true });\n    };\n    ClientSideRowModel.prototype.getType = function () {\n        return 'clientSide';\n    };\n    ClientSideRowModel.prototype.onValueChanged = function () {\n        if (this.columnModel.isPivotActive()) {\n            this.refreshModel({ step: ClientSideRowModelSteps.PIVOT });\n        }\n        else {\n            this.refreshModel({ step: ClientSideRowModelSteps.AGGREGATE });\n        }\n    };\n    ClientSideRowModel.prototype.createChangePath = function (rowNodeTransactions) {\n        // for updates, if the row is updated at all, then we re-calc all the values\n        // in that row. we could compare each value to each old value, however if we\n        // did this, we would be calling the valueService twice, once on the old value\n        // and once on the new value. so it's less valueGetter calls if we just assume\n        // each column is different. that way the changedPath is used so that only\n        // the impacted parent rows are recalculated, parents who's children have\n        // not changed are not impacted.\n        var noTransactions = _.missingOrEmpty(rowNodeTransactions);\n        var changedPath = new ChangedPath(false, this.rootNode);\n        if (noTransactions || this.gridOptionsService.isTreeData()) {\n            changedPath.setInactive();\n        }\n        return changedPath;\n    };\n    ClientSideRowModel.prototype.isSuppressModelUpdateAfterUpdateTransaction = function (params) {\n        if (!this.gridOptionsService.is('suppressModelUpdateAfterUpdateTransaction')) {\n            return false;\n        }\n        // return true if we are only doing update transactions\n        if (params.rowNodeTransactions == null) {\n            return false;\n        }\n        var transWithAddsOrDeletes = params.rowNodeTransactions.filter(function (tx) {\n            return (tx.add != null && tx.add.length > 0) || (tx.remove != null && tx.remove.length > 0);\n        });\n        var transactionsContainUpdatesOnly = transWithAddsOrDeletes == null || transWithAddsOrDeletes.length == 0;\n        return transactionsContainUpdatesOnly;\n    };\n    ClientSideRowModel.prototype.buildRefreshModelParams = function (step) {\n        var paramsStep = ClientSideRowModelSteps.EVERYTHING;\n        var stepsMapped = {\n            everything: ClientSideRowModelSteps.EVERYTHING,\n            group: ClientSideRowModelSteps.EVERYTHING,\n            filter: ClientSideRowModelSteps.FILTER,\n            map: ClientSideRowModelSteps.MAP,\n            aggregate: ClientSideRowModelSteps.AGGREGATE,\n            sort: ClientSideRowModelSteps.SORT,\n            pivot: ClientSideRowModelSteps.PIVOT\n        };\n        if (_.exists(step)) {\n            paramsStep = stepsMapped[step];\n        }\n        if (_.missing(paramsStep)) {\n            console.error(\"AG Grid: invalid step \" + step + \", available steps are \" + Object.keys(stepsMapped).join(', '));\n            return undefined;\n        }\n        var animate = !this.gridOptionsService.is('suppressAnimationFrame');\n        var modelParams = {\n            step: paramsStep,\n            keepRenderedRows: true,\n            keepEditingRows: true,\n            animate: animate\n        };\n        return modelParams;\n    };\n    ClientSideRowModel.prototype.refreshModel = function (paramsOrStep) {\n        var params = typeof paramsOrStep === 'object' && \"step\" in paramsOrStep ? paramsOrStep : this.buildRefreshModelParams(paramsOrStep);\n        if (!params) {\n            return;\n        }\n        if (this.isSuppressModelUpdateAfterUpdateTransaction(params)) {\n            return;\n        }\n        // this goes through the pipeline of stages. what's in my head is similar\n        // to the diagram on this page:\n        // http://commons.apache.org/sandbox/commons-pipeline/pipeline_basics.html\n        // however we want to keep the results of each stage, hence we manually call\n        // each step rather than have them chain each other.\n        // fallthrough in below switch is on purpose,\n        // eg if STEP_FILTER, then all steps below this\n        // step get done\n        // let start: number;\n        // console.log('======= start =======');\n        var changedPath = this.createChangePath(params.rowNodeTransactions);\n        switch (params.step) {\n            case ClientSideRowModelSteps.EVERYTHING:\n                this.doRowGrouping(params.groupState, params.rowNodeTransactions, params.rowNodeOrder, changedPath, !!params.afterColumnsChanged);\n            case ClientSideRowModelSteps.FILTER:\n                this.doFilter(changedPath);\n            case ClientSideRowModelSteps.PIVOT:\n                this.doPivot(changedPath);\n            case ClientSideRowModelSteps.AGGREGATE: // depends on agg fields\n                this.doAggregate(changedPath);\n            case ClientSideRowModelSteps.FILTER_AGGREGATES:\n                this.doFilterAggregates(changedPath);\n            case ClientSideRowModelSteps.SORT:\n                this.doSort(params.rowNodeTransactions, changedPath);\n            case ClientSideRowModelSteps.MAP:\n                this.doRowsToDisplay();\n        }\n        // set all row tops to null, then set row tops on all visible rows. if we don't\n        // do this, then the algorithm below only sets row tops, old row tops from old rows\n        // will still lie around\n        var displayedNodesMapped = this.setRowTopAndRowIndex();\n        this.clearRowTopAndRowIndex(changedPath, displayedNodesMapped);\n        var event = {\n            type: Events.EVENT_MODEL_UPDATED,\n            animate: params.animate,\n            keepRenderedRows: params.keepRenderedRows,\n            newData: params.newData,\n            newPage: false,\n            keepUndoRedoStack: params.keepUndoRedoStack\n        };\n        this.eventService.dispatchEvent(event);\n    };\n    ClientSideRowModel.prototype.isEmpty = function () {\n        var rowsMissing = _.missing(this.rootNode.allLeafChildren) || this.rootNode.allLeafChildren.length === 0;\n        return _.missing(this.rootNode) || rowsMissing || !this.columnModel.isReady();\n    };\n    ClientSideRowModel.prototype.isRowsToRender = function () {\n        return _.exists(this.rowsToDisplay) && this.rowsToDisplay.length > 0;\n    };\n    ClientSideRowModel.prototype.getNodesInRangeForSelection = function (firstInRange, lastInRange) {\n        // if lastSelectedNode is missing, we start at the first row\n        var firstRowHit = !lastInRange;\n        var lastRowHit = false;\n        var lastRow;\n        var result = [];\n        var groupsSelectChildren = this.gridOptionsService.is('groupSelectsChildren');\n        this.forEachNodeAfterFilterAndSort(function (rowNode) {\n            var lookingForLastRow = firstRowHit && !lastRowHit;\n            // check if we need to flip the select switch\n            if (!firstRowHit) {\n                if (rowNode === lastInRange || rowNode === firstInRange) {\n                    firstRowHit = true;\n                }\n            }\n            var skipThisGroupNode = rowNode.group && groupsSelectChildren;\n            if (!skipThisGroupNode) {\n                var inRange = firstRowHit && !lastRowHit;\n                var childOfLastRow = rowNode.isParentOfNode(lastRow);\n                if (inRange || childOfLastRow) {\n                    result.push(rowNode);\n                }\n            }\n            if (lookingForLastRow) {\n                if (rowNode === lastInRange || rowNode === firstInRange) {\n                    lastRowHit = true;\n                    if (rowNode === lastInRange) {\n                        lastRow = lastInRange;\n                    }\n                    else {\n                        lastRow = firstInRange;\n                    }\n                }\n            }\n        });\n        return result;\n    };\n    ClientSideRowModel.prototype.setDatasource = function (datasource) {\n        console.error('AG Grid: should never call setDatasource on clientSideRowController');\n    };\n    ClientSideRowModel.prototype.getTopLevelNodes = function () {\n        return this.rootNode ? this.rootNode.childrenAfterGroup : null;\n    };\n    ClientSideRowModel.prototype.getRootNode = function () {\n        return this.rootNode;\n    };\n    ClientSideRowModel.prototype.getRow = function (index) {\n        return this.rowsToDisplay[index];\n    };\n    ClientSideRowModel.prototype.isRowPresent = function (rowNode) {\n        return this.rowsToDisplay.indexOf(rowNode) >= 0;\n    };\n    ClientSideRowModel.prototype.getRowIndexAtPixel = function (pixelToMatch) {\n        if (this.isEmpty() || this.rowsToDisplay.length === 0) {\n            return -1;\n        }\n        // do binary search of tree\n        // http://oli.me.uk/2013/06/08/searching-javascript-arrays-with-a-binary-search/\n        var bottomPointer = 0;\n        var topPointer = this.rowsToDisplay.length - 1;\n        // quick check, if the pixel is out of bounds, then return last row\n        if (pixelToMatch <= 0) {\n            // if pixel is less than or equal zero, it's always the first row\n            return 0;\n        }\n        var lastNode = _.last(this.rowsToDisplay);\n        if (lastNode.rowTop <= pixelToMatch) {\n            return this.rowsToDisplay.length - 1;\n        }\n        var oldBottomPointer = -1;\n        var oldTopPointer = -1;\n        while (true) {\n            var midPointer = Math.floor((bottomPointer + topPointer) / 2);\n            var currentRowNode = this.rowsToDisplay[midPointer];\n            if (this.isRowInPixel(currentRowNode, pixelToMatch)) {\n                return midPointer;\n            }\n            if (currentRowNode.rowTop < pixelToMatch) {\n                bottomPointer = midPointer + 1;\n            }\n            else if (currentRowNode.rowTop > pixelToMatch) {\n                topPointer = midPointer - 1;\n            }\n            // infinite loops happen when there is space between rows. this can happen\n            // when Auto Height is active, cos we re-calculate row tops asyncronously\n            // when row heights change, which can temporarly result in gaps between rows.\n            var caughtInInfiniteLoop = oldBottomPointer === bottomPointer\n                && oldTopPointer === topPointer;\n            if (caughtInInfiniteLoop) {\n                return midPointer;\n            }\n            oldBottomPointer = bottomPointer;\n            oldTopPointer = topPointer;\n        }\n    };\n    ClientSideRowModel.prototype.isRowInPixel = function (rowNode, pixelToMatch) {\n        var topPixel = rowNode.rowTop;\n        var bottomPixel = rowNode.rowTop + rowNode.rowHeight;\n        var pixelInRow = topPixel <= pixelToMatch && bottomPixel > pixelToMatch;\n        return pixelInRow;\n    };\n    ClientSideRowModel.prototype.forEachLeafNode = function (callback) {\n        if (this.rootNode.allLeafChildren) {\n            this.rootNode.allLeafChildren.forEach(function (rowNode, index) { return callback(rowNode, index); });\n        }\n    };\n    ClientSideRowModel.prototype.forEachNode = function (callback, includeFooterNodes) {\n        if (includeFooterNodes === void 0) { includeFooterNodes = false; }\n        this.recursivelyWalkNodesAndCallback({\n            nodes: __spread((this.rootNode.childrenAfterGroup || [])),\n            callback: callback,\n            recursionType: RecursionType.Normal,\n            index: 0,\n            includeFooterNodes: includeFooterNodes\n        });\n    };\n    ClientSideRowModel.prototype.forEachNodeAfterFilter = function (callback, includeFooterNodes) {\n        if (includeFooterNodes === void 0) { includeFooterNodes = false; }\n        this.recursivelyWalkNodesAndCallback({\n            nodes: __spread((this.rootNode.childrenAfterAggFilter || [])),\n            callback: callback,\n            recursionType: RecursionType.AfterFilter,\n            index: 0,\n            includeFooterNodes: includeFooterNodes\n        });\n    };\n    ClientSideRowModel.prototype.forEachNodeAfterFilterAndSort = function (callback, includeFooterNodes) {\n        if (includeFooterNodes === void 0) { includeFooterNodes = false; }\n        this.recursivelyWalkNodesAndCallback({\n            nodes: __spread((this.rootNode.childrenAfterSort || [])),\n            callback: callback,\n            recursionType: RecursionType.AfterFilterAndSort,\n            index: 0,\n            includeFooterNodes: includeFooterNodes\n        });\n    };\n    ClientSideRowModel.prototype.forEachPivotNode = function (callback, includeFooterNodes) {\n        if (includeFooterNodes === void 0) { includeFooterNodes = false; }\n        this.recursivelyWalkNodesAndCallback({\n            nodes: [this.rootNode],\n            callback: callback,\n            recursionType: RecursionType.PivotNodes,\n            index: 0,\n            includeFooterNodes: includeFooterNodes\n        });\n    };\n    // iterates through each item in memory, and calls the callback function\n    // nodes - the rowNodes to traverse\n    // callback - the user provided callback\n    // recursion type - need this to know what child nodes to recurse, eg if looking at all nodes, or filtered notes etc\n    // index - works similar to the index in forEach in javascript's array function\n    ClientSideRowModel.prototype.recursivelyWalkNodesAndCallback = function (params) {\n        var _a;\n        var nodes = params.nodes, callback = params.callback, recursionType = params.recursionType, includeFooterNodes = params.includeFooterNodes;\n        var index = params.index;\n        var firstNode = nodes[0];\n        if (includeFooterNodes && ((_a = firstNode === null || firstNode === void 0 ? void 0 : firstNode.parent) === null || _a === void 0 ? void 0 : _a.sibling)) {\n            nodes.push(firstNode.parent.sibling);\n        }\n        for (var i = 0; i < nodes.length; i++) {\n            var node = nodes[i];\n            callback(node, index++);\n            // go to the next level if it is a group\n            if (node.hasChildren() && !node.footer) {\n                // depending on the recursion type, we pick a difference set of children\n                var nodeChildren = null;\n                switch (recursionType) {\n                    case RecursionType.Normal:\n                        nodeChildren = node.childrenAfterGroup;\n                        break;\n                    case RecursionType.AfterFilter:\n                        nodeChildren = node.childrenAfterAggFilter;\n                        break;\n                    case RecursionType.AfterFilterAndSort:\n                        nodeChildren = node.childrenAfterSort;\n                        break;\n                    case RecursionType.PivotNodes:\n                        // for pivot, we don't go below leafGroup levels\n                        nodeChildren = !node.leafGroup ? node.childrenAfterSort : null;\n                        break;\n                }\n                if (nodeChildren) {\n                    index = this.recursivelyWalkNodesAndCallback({\n                        nodes: __spread(nodeChildren),\n                        callback: callback,\n                        recursionType: recursionType,\n                        index: index,\n                        includeFooterNodes: includeFooterNodes\n                    });\n                }\n            }\n        }\n        return index;\n    };\n    // it's possible to recompute the aggregate without doing the other parts\n    // + api.refreshClientSideRowModel('aggregate')\n    ClientSideRowModel.prototype.doAggregate = function (changedPath) {\n        if (this.aggregationStage) {\n            this.aggregationStage.execute({ rowNode: this.rootNode, changedPath: changedPath });\n        }\n    };\n    ClientSideRowModel.prototype.doFilterAggregates = function (changedPath) {\n        if (this.filterAggregatesStage) {\n            this.filterAggregatesStage.execute({ rowNode: this.rootNode, changedPath: changedPath });\n        }\n        else {\n            // If filterAggregatesStage is undefined, then so is the grouping stage, so all children should be on the rootNode.\n            this.rootNode.childrenAfterAggFilter = this.rootNode.childrenAfterFilter;\n        }\n    };\n    // + gridApi.expandAll()\n    // + gridApi.collapseAll()\n    ClientSideRowModel.prototype.expandOrCollapseAll = function (expand) {\n        var usingTreeData = this.gridOptionsService.isTreeData();\n        var usingPivotMode = this.columnModel.isPivotActive();\n        var recursiveExpandOrCollapse = function (rowNodes) {\n            if (!rowNodes) {\n                return;\n            }\n            rowNodes.forEach(function (rowNode) {\n                var actionRow = function () {\n                    rowNode.expanded = expand;\n                    recursiveExpandOrCollapse(rowNode.childrenAfterGroup);\n                };\n                if (usingTreeData) {\n                    var hasChildren = _.exists(rowNode.childrenAfterGroup);\n                    if (hasChildren) {\n                        actionRow();\n                    }\n                    return;\n                }\n                if (usingPivotMode) {\n                    var notLeafGroup = !rowNode.leafGroup;\n                    if (notLeafGroup) {\n                        actionRow();\n                    }\n                    return;\n                }\n                var isRowGroup = rowNode.group;\n                if (isRowGroup) {\n                    actionRow();\n                }\n            });\n        };\n        if (this.rootNode) {\n            recursiveExpandOrCollapse(this.rootNode.childrenAfterGroup);\n        }\n        this.refreshModel({ step: ClientSideRowModelSteps.MAP });\n        var eventSource = expand ? 'expandAll' : 'collapseAll';\n        var event = {\n            type: Events.EVENT_EXPAND_COLLAPSE_ALL,\n            source: eventSource\n        };\n        this.eventService.dispatchEvent(event);\n    };\n    ClientSideRowModel.prototype.doSort = function (rowNodeTransactions, changedPath) {\n        this.sortStage.execute({\n            rowNode: this.rootNode,\n            rowNodeTransactions: rowNodeTransactions,\n            changedPath: changedPath\n        });\n    };\n    ClientSideRowModel.prototype.doRowGrouping = function (groupState, rowNodeTransactions, rowNodeOrder, changedPath, afterColumnsChanged) {\n        if (this.groupStage) {\n            if (rowNodeTransactions) {\n                this.groupStage.execute({\n                    rowNode: this.rootNode,\n                    rowNodeTransactions: rowNodeTransactions,\n                    rowNodeOrder: rowNodeOrder,\n                    changedPath: changedPath\n                });\n            }\n            else {\n                this.groupStage.execute({\n                    rowNode: this.rootNode,\n                    changedPath: changedPath,\n                    afterColumnsChanged: afterColumnsChanged\n                });\n                // set open/closed state on groups\n                this.restoreGroupState(groupState);\n            }\n            if (this.gridOptionsService.is('groupSelectsChildren')) {\n                var selectionChanged = this.selectionService.updateGroupsFromChildrenSelections('rowGroupChanged', changedPath);\n                if (selectionChanged) {\n                    var event_1 = {\n                        type: Events.EVENT_SELECTION_CHANGED,\n                        source: 'rowGroupChanged'\n                    };\n                    this.eventService.dispatchEvent(event_1);\n                }\n            }\n        }\n        else {\n            this.rootNode.childrenAfterGroup = this.rootNode.allLeafChildren;\n            if (this.rootNode.sibling) {\n                this.rootNode.sibling.childrenAfterGroup = this.rootNode.childrenAfterGroup;\n            }\n            this.rootNode.updateHasChildren();\n        }\n    };\n    ClientSideRowModel.prototype.restoreGroupState = function (groupState) {\n        if (!groupState) {\n            return;\n        }\n        _.traverseNodesWithKey(this.rootNode.childrenAfterGroup, function (node, key) {\n            // if the group was open last time, then open it this time. however\n            // if was not open last time, then don't touch the group, so the 'groupDefaultExpanded'\n            // setting will take effect.\n            if (typeof groupState[key] === 'boolean') {\n                node.expanded = groupState[key];\n            }\n        });\n    };\n    ClientSideRowModel.prototype.doFilter = function (changedPath) {\n        this.filterStage.execute({ rowNode: this.rootNode, changedPath: changedPath });\n    };\n    ClientSideRowModel.prototype.doPivot = function (changedPath) {\n        if (this.pivotStage) {\n            this.pivotStage.execute({ rowNode: this.rootNode, changedPath: changedPath });\n        }\n    };\n    ClientSideRowModel.prototype.getGroupState = function () {\n        if (!this.rootNode.childrenAfterGroup || !this.gridOptionsService.is('rememberGroupStateWhenNewData')) {\n            return null;\n        }\n        var result = {};\n        _.traverseNodesWithKey(this.rootNode.childrenAfterGroup, function (node, key) { return result[key] = node.expanded; });\n        return result;\n    };\n    ClientSideRowModel.prototype.getCopyOfNodesMap = function () {\n        return this.nodeManager.getCopyOfNodesMap();\n    };\n    ClientSideRowModel.prototype.getRowNode = function (id) {\n        // although id is typed a string, this could be called by the user, and they could have passed a number\n        var idIsGroup = typeof id == 'string' && id.indexOf(RowNode.ID_PREFIX_ROW_GROUP) == 0;\n        if (idIsGroup) {\n            // only one users complained about getRowNode not working for groups, after years of\n            // this working for normal rows. so have done quick implementation. if users complain\n            // about performance, then GroupStage should store / manage created groups in a map,\n            // which is a chunk of work.\n            var res_1 = undefined;\n            this.forEachNode(function (node) {\n                if (node.id === id) {\n                    res_1 = node;\n                }\n            });\n            return res_1;\n        }\n        return this.nodeManager.getRowNode(id);\n    };\n    // rows: the rows to put into the model\n    ClientSideRowModel.prototype.setRowData = function (rowData) {\n        // no need to invalidate cache, as the cache is stored on the rowNode,\n        // so new rowNodes means the cache is wiped anyway.\n        // remember group state, so we can expand groups that should be expanded\n        var groupState = this.getGroupState();\n        this.nodeManager.setRowData(rowData);\n        // - clears selection\n        this.selectionService.reset();\n        // - updates filters\n        this.filterManager.onNewRowsLoaded('rowDataUpdated');\n        // this event kicks off:\n        // - shows 'no rows' overlay if needed\n        var rowDataUpdatedEvent = {\n            type: Events.EVENT_ROW_DATA_UPDATED\n        };\n        this.eventService.dispatchEvent(rowDataUpdatedEvent);\n        this.refreshModel({\n            step: ClientSideRowModelSteps.EVERYTHING,\n            groupState: groupState,\n            newData: true\n        });\n    };\n    ClientSideRowModel.prototype.batchUpdateRowData = function (rowDataTransaction, callback) {\n        var _this = this;\n        if (this.applyAsyncTransactionsTimeout == null) {\n            this.rowDataTransactionBatch = [];\n            var waitMillis = this.gridOptionsService.getAsyncTransactionWaitMillis();\n            this.applyAsyncTransactionsTimeout = window.setTimeout(function () {\n                _this.executeBatchUpdateRowData();\n            }, waitMillis);\n        }\n        this.rowDataTransactionBatch.push({ rowDataTransaction: rowDataTransaction, callback: callback });\n    };\n    ClientSideRowModel.prototype.flushAsyncTransactions = function () {\n        if (this.applyAsyncTransactionsTimeout != null) {\n            clearTimeout(this.applyAsyncTransactionsTimeout);\n            this.executeBatchUpdateRowData();\n        }\n    };\n    ClientSideRowModel.prototype.executeBatchUpdateRowData = function () {\n        var _this = this;\n        this.valueCache.onDataChanged();\n        var callbackFuncsBound = [];\n        var rowNodeTrans = [];\n        // The rowGroup stage uses rowNodeOrder if order was provided. if we didn't pass 'true' to\n        // commonUpdateRowData, using addIndex would have no effect when grouping.\n        var forceRowNodeOrder = false;\n        if (this.rowDataTransactionBatch) {\n            this.rowDataTransactionBatch.forEach(function (tranItem) {\n                var rowNodeTran = _this.nodeManager.updateRowData(tranItem.rowDataTransaction, undefined);\n                rowNodeTrans.push(rowNodeTran);\n                if (tranItem.callback) {\n                    callbackFuncsBound.push(tranItem.callback.bind(null, rowNodeTran));\n                }\n                if (typeof tranItem.rowDataTransaction.addIndex === 'number') {\n                    forceRowNodeOrder = true;\n                }\n            });\n        }\n        this.commonUpdateRowData(rowNodeTrans, undefined, forceRowNodeOrder);\n        // do callbacks in next VM turn so it's async\n        if (callbackFuncsBound.length > 0) {\n            window.setTimeout(function () {\n                callbackFuncsBound.forEach(function (func) { return func(); });\n            }, 0);\n        }\n        if (rowNodeTrans.length > 0) {\n            var event_2 = {\n                type: Events.EVENT_ASYNC_TRANSACTIONS_FLUSHED,\n                results: rowNodeTrans\n            };\n            this.eventService.dispatchEvent(event_2);\n        }\n        this.rowDataTransactionBatch = null;\n        this.applyAsyncTransactionsTimeout = undefined;\n    };\n    ClientSideRowModel.prototype.updateRowData = function (rowDataTran, rowNodeOrder) {\n        this.valueCache.onDataChanged();\n        var rowNodeTran = this.nodeManager.updateRowData(rowDataTran, rowNodeOrder);\n        // if doing immutableData, addIndex is never present. however if doing standard transaction, and user\n        // provided addIndex, then this is used in updateRowData. However if doing Enterprise, then the rowGroup\n        // stage also uses the\n        var forceRowNodeOrder = typeof rowDataTran.addIndex === 'number';\n        this.commonUpdateRowData([rowNodeTran], rowNodeOrder, forceRowNodeOrder);\n        return rowNodeTran;\n    };\n    ClientSideRowModel.prototype.createRowNodeOrder = function () {\n        var suppressSortOrder = this.gridOptionsService.is('suppressMaintainUnsortedOrder');\n        if (suppressSortOrder) {\n            return;\n        }\n        var orderMap = {};\n        if (this.rootNode && this.rootNode.allLeafChildren) {\n            for (var index = 0; index < this.rootNode.allLeafChildren.length; index++) {\n                var node = this.rootNode.allLeafChildren[index];\n                orderMap[node.id] = index;\n            }\n        }\n        return orderMap;\n    };\n    // common to updateRowData and batchUpdateRowData\n    ClientSideRowModel.prototype.commonUpdateRowData = function (rowNodeTrans, rowNodeOrder, forceRowNodeOrder) {\n        var animate = !this.gridOptionsService.is('suppressAnimationFrame');\n        if (forceRowNodeOrder) {\n            rowNodeOrder = this.createRowNodeOrder();\n        }\n        this.refreshModel({\n            step: ClientSideRowModelSteps.EVERYTHING,\n            rowNodeTransactions: rowNodeTrans,\n            rowNodeOrder: rowNodeOrder,\n            keepRenderedRows: true,\n            keepEditingRows: true,\n            animate: animate\n        });\n        // - updates filters\n        this.filterManager.onNewRowsLoaded('rowDataUpdated');\n        var event = {\n            type: Events.EVENT_ROW_DATA_UPDATED\n        };\n        this.eventService.dispatchEvent(event);\n    };\n    ClientSideRowModel.prototype.doRowsToDisplay = function () {\n        this.rowsToDisplay = this.flattenStage.execute({ rowNode: this.rootNode });\n    };\n    ClientSideRowModel.prototype.onRowHeightChanged = function () {\n        this.refreshModel({ step: ClientSideRowModelSteps.MAP, keepRenderedRows: true, keepEditingRows: true, keepUndoRedoStack: true });\n    };\n    /** This method is debounced. It is used for row auto-height. If we don't debounce,\n     * then the Row Models will end up recalculating each row position\n     * for each row height change and result in the Row Renderer laying out rows.\n     * This is particularly bad if using print layout, and showing eg 1,000 rows,\n     * each row will change it's height, causing Row Model to update 1,000 times.\n     */\n    ClientSideRowModel.prototype.onRowHeightChangedDebounced = function () {\n        this.onRowHeightChanged_debounced();\n    };\n    ClientSideRowModel.prototype.resetRowHeights = function () {\n        var atLeastOne = this.resetRowHeightsForAllRowNodes();\n        this.rootNode.setRowHeight(this.rootNode.rowHeight, true);\n        // when pivotMode but pivot not active, root node is displayed on its own\n        // because it's only ever displayed alone, refreshing the model (onRowHeightChanged) is not required\n        if (atLeastOne) {\n            this.onRowHeightChanged();\n        }\n    };\n    ClientSideRowModel.prototype.resetRowHeightsForAllRowNodes = function () {\n        var atLeastOne = false;\n        this.forEachNode(function (rowNode) {\n            rowNode.setRowHeight(rowNode.rowHeight, true);\n            // we keep the height each row is at, however we set estimated=true rather than clear the height.\n            // this means the grid will not reset the row heights back to defaults, rather it will re-calc\n            // the height for each row as the row is displayed. otherwise the scroll will jump when heights are reset.\n            var detailNode = rowNode.detailNode;\n            if (detailNode) {\n                detailNode.setRowHeight(detailNode.rowHeight, true);\n            }\n            atLeastOne = true;\n        });\n        return atLeastOne;\n    };\n    ClientSideRowModel.prototype.onGridStylesChanges = function () {\n        if (this.columnModel.isAutoRowHeightActive()) {\n            return;\n        }\n        this.resetRowHeights();\n    };\n    __decorate$b([\n        Autowired('columnModel')\n    ], ClientSideRowModel.prototype, \"columnModel\", void 0);\n    __decorate$b([\n        Autowired('selectionService')\n    ], ClientSideRowModel.prototype, \"selectionService\", void 0);\n    __decorate$b([\n        Autowired('filterManager')\n    ], ClientSideRowModel.prototype, \"filterManager\", void 0);\n    __decorate$b([\n        Autowired('valueCache')\n    ], ClientSideRowModel.prototype, \"valueCache\", void 0);\n    __decorate$b([\n        Autowired('beans')\n    ], ClientSideRowModel.prototype, \"beans\", void 0);\n    __decorate$b([\n        Autowired('filterStage')\n    ], ClientSideRowModel.prototype, \"filterStage\", void 0);\n    __decorate$b([\n        Autowired('sortStage')\n    ], ClientSideRowModel.prototype, \"sortStage\", void 0);\n    __decorate$b([\n        Autowired('flattenStage')\n    ], ClientSideRowModel.prototype, \"flattenStage\", void 0);\n    __decorate$b([\n        Optional('groupStage')\n    ], ClientSideRowModel.prototype, \"groupStage\", void 0);\n    __decorate$b([\n        Optional('aggregationStage')\n    ], ClientSideRowModel.prototype, \"aggregationStage\", void 0);\n    __decorate$b([\n        Optional('pivotStage')\n    ], ClientSideRowModel.prototype, \"pivotStage\", void 0);\n    __decorate$b([\n        Optional('filterAggregatesStage')\n    ], ClientSideRowModel.prototype, \"filterAggregatesStage\", void 0);\n    __decorate$b([\n        PostConstruct\n    ], ClientSideRowModel.prototype, \"init\", null);\n    ClientSideRowModel = __decorate$b([\n        Bean('rowModel')\n    ], ClientSideRowModel);\n    return ClientSideRowModel;\n}(BeanStub));\n\nvar __extends$b = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$a = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar FilterStage = /** @class */ (function (_super) {\n    __extends$b(FilterStage, _super);\n    function FilterStage() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    FilterStage.prototype.execute = function (params) {\n        var changedPath = params.changedPath;\n        this.filterService.filter(changedPath);\n    };\n    __decorate$a([\n        Autowired('filterService')\n    ], FilterStage.prototype, \"filterService\", void 0);\n    FilterStage = __decorate$a([\n        Bean('filterStage')\n    ], FilterStage);\n    return FilterStage;\n}(BeanStub));\n\nvar __extends$a = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$9 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar SortStage = /** @class */ (function (_super) {\n    __extends$a(SortStage, _super);\n    function SortStage() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    SortStage.prototype.execute = function (params) {\n        var _this = this;\n        var sortOptions = this.sortController.getSortOptions();\n        var sortActive = _.exists(sortOptions) && sortOptions.length > 0;\n        var deltaSort = sortActive\n            && _.exists(params.rowNodeTransactions)\n            // in time we can remove this check, so that delta sort is always\n            // on if transactions are present. it's off for now so that we can\n            // selectively turn it on and test it with some select users before\n            // rolling out to everyone.\n            && this.gridOptionsService.is('deltaSort');\n        var sortContainsGroupColumns = sortOptions.some(function (opt) { return !!_this.columnModel.getGroupDisplayColumnForGroup(opt.column.getId()); });\n        this.sortService.sort(sortOptions, sortActive, deltaSort, params.rowNodeTransactions, params.changedPath, sortContainsGroupColumns);\n    };\n    __decorate$9([\n        Autowired('sortService')\n    ], SortStage.prototype, \"sortService\", void 0);\n    __decorate$9([\n        Autowired('sortController')\n    ], SortStage.prototype, \"sortController\", void 0);\n    __decorate$9([\n        Autowired('columnModel')\n    ], SortStage.prototype, \"columnModel\", void 0);\n    SortStage = __decorate$9([\n        Bean('sortStage')\n    ], SortStage);\n    return SortStage;\n}(BeanStub));\n\nvar __extends$9 = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$8 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar FlattenStage = /** @class */ (function (_super) {\n    __extends$9(FlattenStage, _super);\n    function FlattenStage() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    FlattenStage.prototype.execute = function (params) {\n        var rootNode = params.rowNode;\n        // even if not doing grouping, we do the mapping, as the client might\n        // of passed in data that already has a grouping in it somewhere\n        var result = [];\n        // putting value into a wrapper so it's passed by reference\n        var nextRowTop = { value: 0 };\n        var skipLeafNodes = this.columnModel.isPivotMode();\n        // if we are reducing, and not grouping, then we want to show the root node, as that\n        // is where the pivot values are\n        var showRootNode = skipLeafNodes && rootNode.leafGroup;\n        var topList = showRootNode ? [rootNode] : rootNode.childrenAfterSort;\n        this.recursivelyAddToRowsToDisplay(topList, result, nextRowTop, skipLeafNodes, 0);\n        // we do not want the footer total if the gris is empty\n        var atLeastOneRowPresent = result.length > 0;\n        var includeGroupTotalFooter = !showRootNode\n            // don't show total footer when showRootNode is true (i.e. in pivot mode and no groups)\n            && atLeastOneRowPresent\n            && this.gridOptionsService.is('groupIncludeTotalFooter');\n        if (includeGroupTotalFooter) {\n            rootNode.createFooter();\n            this.addRowNodeToRowsToDisplay(rootNode.sibling, result, nextRowTop, 0);\n        }\n        return result;\n    };\n    FlattenStage.prototype.recursivelyAddToRowsToDisplay = function (rowsToFlatten, result, nextRowTop, skipLeafNodes, uiLevel) {\n        if (_.missingOrEmpty(rowsToFlatten)) {\n            return;\n        }\n        var hideOpenParents = this.gridOptionsService.is('groupHideOpenParents');\n        // these two are mutually exclusive, so if first set, we don't set the second\n        var groupRemoveSingleChildren = this.gridOptionsService.is('groupRemoveSingleChildren');\n        var groupRemoveLowestSingleChildren = !groupRemoveSingleChildren && this.gridOptionsService.is('groupRemoveLowestSingleChildren');\n        for (var i = 0; i < rowsToFlatten.length; i++) {\n            var rowNode = rowsToFlatten[i];\n            // check all these cases, for working out if this row should be included in the final mapped list\n            var isParent = rowNode.hasChildren();\n            var isSkippedLeafNode = skipLeafNodes && !isParent;\n            var isRemovedSingleChildrenGroup = groupRemoveSingleChildren &&\n                isParent &&\n                rowNode.childrenAfterGroup.length === 1;\n            var isRemovedLowestSingleChildrenGroup = groupRemoveLowestSingleChildren &&\n                isParent &&\n                rowNode.leafGroup &&\n                rowNode.childrenAfterGroup.length === 1;\n            // hide open parents means when group is open, we don't show it. we also need to make sure the\n            // group is expandable in the first place (as leaf groups are not expandable if pivot mode is on).\n            // the UI will never allow expanding leaf  groups, however the user might via the API (or menu option 'expand all')\n            var neverAllowToExpand = skipLeafNodes && rowNode.leafGroup;\n            var isHiddenOpenParent = hideOpenParents && rowNode.expanded && !rowNode.master && (!neverAllowToExpand);\n            var thisRowShouldBeRendered = !isSkippedLeafNode && !isHiddenOpenParent &&\n                !isRemovedSingleChildrenGroup && !isRemovedLowestSingleChildrenGroup;\n            if (thisRowShouldBeRendered) {\n                this.addRowNodeToRowsToDisplay(rowNode, result, nextRowTop, uiLevel);\n            }\n            // if we are pivoting, we never map below the leaf group\n            if (skipLeafNodes && rowNode.leafGroup) {\n                continue;\n            }\n            if (isParent) {\n                var excludedParent = isRemovedSingleChildrenGroup || isRemovedLowestSingleChildrenGroup;\n                // we traverse the group if it is expended, however we always traverse if the parent node\n                // was removed (as the group will never be opened if it is not displayed, we show the children instead)\n                if (rowNode.expanded || excludedParent) {\n                    // if the parent was excluded, then ui level is that of the parent\n                    var uiLevelForChildren = excludedParent ? uiLevel : uiLevel + 1;\n                    this.recursivelyAddToRowsToDisplay(rowNode.childrenAfterSort, result, nextRowTop, skipLeafNodes, uiLevelForChildren);\n                    // put a footer in if user is looking for it\n                    if (this.gridOptionsService.is('groupIncludeFooter')) {\n                        this.addRowNodeToRowsToDisplay(rowNode.sibling, result, nextRowTop, uiLevel);\n                    }\n                }\n            }\n            else if (rowNode.master && rowNode.expanded) {\n                var detailNode = this.createDetailNode(rowNode);\n                this.addRowNodeToRowsToDisplay(detailNode, result, nextRowTop, uiLevel);\n            }\n        }\n    };\n    // duplicated method, it's also in floatingRowModel\n    FlattenStage.prototype.addRowNodeToRowsToDisplay = function (rowNode, result, nextRowTop, uiLevel) {\n        var isGroupMultiAutoColumn = this.gridOptionsService.isGroupMultiAutoColumn();\n        result.push(rowNode);\n        rowNode.setUiLevel(isGroupMultiAutoColumn ? 0 : uiLevel);\n    };\n    FlattenStage.prototype.createDetailNode = function (masterNode) {\n        if (_.exists(masterNode.detailNode)) {\n            return masterNode.detailNode;\n        }\n        var detailNode = new RowNode(this.beans);\n        detailNode.detail = true;\n        detailNode.selectable = false;\n        detailNode.parent = masterNode;\n        if (_.exists(masterNode.id)) {\n            detailNode.id = 'detail_' + masterNode.id;\n        }\n        detailNode.data = masterNode.data;\n        detailNode.level = masterNode.level + 1;\n        masterNode.detailNode = detailNode;\n        return detailNode;\n    };\n    __decorate$8([\n        Autowired('columnModel')\n    ], FlattenStage.prototype, \"columnModel\", void 0);\n    __decorate$8([\n        Autowired('beans')\n    ], FlattenStage.prototype, \"beans\", void 0);\n    FlattenStage = __decorate$8([\n        Bean('flattenStage')\n    ], FlattenStage);\n    return FlattenStage;\n}(BeanStub));\n\nvar __extends$8 = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$7 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar SortService = /** @class */ (function (_super) {\n    __extends$8(SortService, _super);\n    function SortService() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    SortService.prototype.init = function () {\n        this.postSortFunc = this.getPostSortFunc();\n    };\n    SortService.prototype.sort = function (sortOptions, sortActive, useDeltaSort, rowNodeTransactions, changedPath, sortContainsGroupColumns) {\n        var _this = this;\n        var groupMaintainOrder = this.gridOptionsService.is('groupMaintainOrder');\n        var groupColumnsPresent = this.columnModel.getAllGridColumns().some(function (c) { return c.isRowGroupActive(); });\n        var allDirtyNodes = {};\n        if (useDeltaSort && rowNodeTransactions) {\n            allDirtyNodes = this.calculateDirtyNodes(rowNodeTransactions);\n        }\n        var isPivotMode = this.columnModel.isPivotMode();\n        var callback = function (rowNode) {\n            // we clear out the 'pull down open parents' first, as the values mix up the sorting\n            _this.pullDownGroupDataForHideOpenParents(rowNode.childrenAfterAggFilter, true);\n            // It's pointless to sort rows which aren't being displayed. in pivot mode we don't need to sort the leaf group children.\n            var skipSortingPivotLeafs = isPivotMode && rowNode.leafGroup;\n            // Javascript sort is non deterministic when all the array items are equals, ie Comparator always returns 0,\n            // so to ensure the array keeps its order, add an additional sorting condition manually, in this case we\n            // are going to inspect the original array position. This is what sortedRowNodes is for.\n            var skipSortingGroups = groupMaintainOrder && groupColumnsPresent && !rowNode.leafGroup && !sortContainsGroupColumns;\n            if (skipSortingGroups) {\n                var childrenToBeSorted = rowNode.childrenAfterAggFilter.slice(0);\n                if (rowNode.childrenAfterSort) {\n                    var indexedOrders_1 = {};\n                    rowNode.childrenAfterSort.forEach(function (node, idx) {\n                        indexedOrders_1[node.id] = idx;\n                    });\n                    childrenToBeSorted.sort(function (row1, row2) { var _a, _b; return ((_a = indexedOrders_1[row1.id]) !== null && _a !== void 0 ? _a : 0) - ((_b = indexedOrders_1[row2.id]) !== null && _b !== void 0 ? _b : 0); });\n                }\n                rowNode.childrenAfterSort = childrenToBeSorted;\n            }\n            else if (!sortActive || skipSortingPivotLeafs) {\n                // if there's no sort to make, skip this step\n                rowNode.childrenAfterSort = rowNode.childrenAfterAggFilter.slice(0);\n            }\n            else if (useDeltaSort) {\n                rowNode.childrenAfterSort = _this.doDeltaSort(rowNode, allDirtyNodes, changedPath, sortOptions);\n            }\n            else {\n                rowNode.childrenAfterSort = _this.rowNodeSorter.doFullSort(rowNode.childrenAfterAggFilter, sortOptions);\n            }\n            if (rowNode.sibling) {\n                rowNode.sibling.childrenAfterSort = rowNode.childrenAfterSort;\n            }\n            _this.updateChildIndexes(rowNode);\n            if (_this.postSortFunc) {\n                var params = { nodes: rowNode.childrenAfterSort };\n                _this.postSortFunc(params);\n            }\n        };\n        if (changedPath) {\n            changedPath.forEachChangedNodeDepthFirst(callback);\n        }\n        this.updateGroupDataForHideOpenParents(changedPath);\n    };\n    SortService.prototype.getPostSortFunc = function () {\n        var postSortRows = this.gridOptionsService.getCallback('postSortRows');\n        if (postSortRows) {\n            return postSortRows;\n        }\n        // this is the deprecated way, so provide a proxy to make it compatible\n        var postSort = this.gridOptionsService.get('postSort');\n        if (postSort) {\n            return function (params) { return postSort(params.nodes); };\n        }\n    };\n    SortService.prototype.calculateDirtyNodes = function (rowNodeTransactions) {\n        var dirtyNodes = {};\n        var addNodesFunc = function (rowNodes) {\n            if (rowNodes) {\n                rowNodes.forEach(function (rowNode) { return dirtyNodes[rowNode.id] = true; });\n            }\n        };\n        // all leaf level nodes in the transaction were impacted\n        if (rowNodeTransactions) {\n            rowNodeTransactions.forEach(function (tran) {\n                addNodesFunc(tran.add);\n                addNodesFunc(tran.update);\n                addNodesFunc(tran.remove);\n            });\n        }\n        return dirtyNodes;\n    };\n    SortService.prototype.doDeltaSort = function (rowNode, allTouchedNodes, changedPath, sortOptions) {\n        var _this = this;\n        var unsortedRows = rowNode.childrenAfterAggFilter;\n        var oldSortedRows = rowNode.childrenAfterSort;\n        if (!oldSortedRows) {\n            return this.rowNodeSorter.doFullSort(unsortedRows, sortOptions);\n        }\n        var untouchedRowsMap = {};\n        var touchedRows = [];\n        unsortedRows.forEach(function (row) {\n            if (allTouchedNodes[row.id] || !changedPath.canSkip(row)) {\n                touchedRows.push(row);\n            }\n            else {\n                untouchedRowsMap[row.id] = true;\n            }\n        });\n        var sortedUntouchedRows = oldSortedRows.filter(function (child) { return untouchedRowsMap[child.id]; });\n        var mapNodeToSortedNode = function (rowNode, pos) { return ({ currentPos: pos, rowNode: rowNode }); };\n        var sortedChangedRows = touchedRows\n            .map(mapNodeToSortedNode)\n            .sort(function (a, b) { return _this.rowNodeSorter.compareRowNodes(sortOptions, a, b); });\n        return this.mergeSortedArrays(sortOptions, sortedChangedRows, sortedUntouchedRows.map(mapNodeToSortedNode)).map(function (_a) {\n            var rowNode = _a.rowNode;\n            return rowNode;\n        });\n    };\n    // Merge two sorted arrays into each other\n    SortService.prototype.mergeSortedArrays = function (sortOptions, arr1, arr2) {\n        var res = [];\n        var i = 0;\n        var j = 0;\n        // Traverse both array, adding them in order\n        while (i < arr1.length && j < arr2.length) {\n            // Check if current element of first\n            // array is smaller than current element\n            // of second array. If yes, store first\n            // array element and increment first array\n            // index. Otherwise do same with second array\n            var compareResult = this.rowNodeSorter.compareRowNodes(sortOptions, arr1[i], arr2[j]);\n            if (compareResult < 0) {\n                res.push(arr1[i++]);\n            }\n            else {\n                res.push(arr2[j++]);\n            }\n        }\n        // add remaining from arr1\n        while (i < arr1.length) {\n            res.push(arr1[i++]);\n        }\n        // add remaining from arr2\n        while (j < arr2.length) {\n            res.push(arr2[j++]);\n        }\n        return res;\n    };\n    SortService.prototype.updateChildIndexes = function (rowNode) {\n        if (_.missing(rowNode.childrenAfterSort)) {\n            return;\n        }\n        var listToSort = rowNode.childrenAfterSort;\n        for (var i = 0; i < listToSort.length; i++) {\n            var child = listToSort[i];\n            var firstChild = i === 0;\n            var lastChild = i === rowNode.childrenAfterSort.length - 1;\n            child.setFirstChild(firstChild);\n            child.setLastChild(lastChild);\n            child.setChildIndex(i);\n        }\n    };\n    SortService.prototype.updateGroupDataForHideOpenParents = function (changedPath) {\n        var _this = this;\n        if (!this.gridOptionsService.is('groupHideOpenParents')) {\n            return;\n        }\n        if (this.gridOptionsService.isTreeData()) {\n            var msg_1 = \"AG Grid: The property hideOpenParents dose not work with Tree Data. This is because Tree Data has values at the group level, it doesn't make sense to hide them (as opposed to Row Grouping, which only has Aggregated Values at the group level).\";\n            _.doOnce(function () { return console.warn(msg_1); }, 'sortService.hideOpenParentsWithTreeData');\n            return false;\n        }\n        // recurse breadth first over group nodes after sort to 'pull down' group data to child groups\n        var callback = function (rowNode) {\n            _this.pullDownGroupDataForHideOpenParents(rowNode.childrenAfterSort, false);\n            rowNode.childrenAfterSort.forEach(function (child) {\n                if (child.hasChildren()) {\n                    callback(child);\n                }\n            });\n        };\n        if (changedPath) {\n            changedPath.executeFromRootNode(function (rowNode) { return callback(rowNode); });\n        }\n    };\n    SortService.prototype.pullDownGroupDataForHideOpenParents = function (rowNodes, clearOperation) {\n        var _this = this;\n        if (!this.gridOptionsService.is('groupHideOpenParents') || _.missing(rowNodes)) {\n            return;\n        }\n        rowNodes.forEach(function (childRowNode) {\n            var groupDisplayCols = _this.columnModel.getGroupDisplayColumns();\n            groupDisplayCols.forEach(function (groupDisplayCol) {\n                var showRowGroup = groupDisplayCol.getColDef().showRowGroup;\n                if (typeof showRowGroup !== 'string') {\n                    console.error('AG Grid: groupHideOpenParents only works when specifying specific columns for colDef.showRowGroup');\n                    return;\n                }\n                var displayingGroupKey = showRowGroup;\n                var rowGroupColumn = _this.columnModel.getPrimaryColumn(displayingGroupKey);\n                var thisRowNodeMatches = rowGroupColumn === childRowNode.rowGroupColumn;\n                if (thisRowNodeMatches) {\n                    return;\n                }\n                if (clearOperation) {\n                    // if doing a clear operation, we clear down the value for every possible group column\n                    childRowNode.setGroupValue(groupDisplayCol.getId(), undefined);\n                }\n                else {\n                    // if doing a set operation, we set only where the pull down is to occur\n                    var parentToStealFrom = childRowNode.getFirstChildOfFirstChild(rowGroupColumn);\n                    if (parentToStealFrom) {\n                        childRowNode.setGroupValue(groupDisplayCol.getId(), parentToStealFrom.key);\n                    }\n                }\n            });\n        });\n    };\n    __decorate$7([\n        Autowired('columnModel')\n    ], SortService.prototype, \"columnModel\", void 0);\n    __decorate$7([\n        Autowired('rowNodeSorter')\n    ], SortService.prototype, \"rowNodeSorter\", void 0);\n    __decorate$7([\n        PostConstruct\n    ], SortService.prototype, \"init\", null);\n    SortService = __decorate$7([\n        Bean('sortService')\n    ], SortService);\n    return SortService;\n}(BeanStub));\n\nvar __extends$7 = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$6 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar FilterService = /** @class */ (function (_super) {\n    __extends$7(FilterService, _super);\n    function FilterService() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    FilterService.prototype.filter = function (changedPath) {\n        var filterActive = this.filterManager.isColumnFilterPresent()\n            || this.filterManager.isQuickFilterPresent()\n            || this.filterManager.isExternalFilterPresent();\n        this.filterNodes(filterActive, changedPath);\n    };\n    FilterService.prototype.filterNodes = function (filterActive, changedPath) {\n        var _this = this;\n        var filterCallback = function (rowNode, includeChildNodes) {\n            // recursively get all children that are groups to also filter\n            if (rowNode.hasChildren()) {\n                // result of filter for this node. when filtering tree data, includeChildNodes = true when parent passes\n                if (filterActive && !includeChildNodes) {\n                    rowNode.childrenAfterFilter = rowNode.childrenAfterGroup.filter(function (childNode) {\n                        // a group is included in the result if it has any children of it's own.\n                        // by this stage, the child groups are already filtered\n                        var passBecauseChildren = childNode.childrenAfterFilter && childNode.childrenAfterFilter.length > 0;\n                        // both leaf level nodes and tree data nodes have data. these get added if\n                        // the data passes the filter\n                        var passBecauseDataPasses = childNode.data\n                            && _this.filterManager.doesRowPassFilter({ rowNode: childNode });\n                        // note - tree data nodes pass either if a) they pass themselves or b) any children of that node pass\n                        return passBecauseChildren || passBecauseDataPasses;\n                    });\n                }\n                else {\n                    // if not filtering, the result is the original list\n                    rowNode.childrenAfterFilter = rowNode.childrenAfterGroup;\n                }\n            }\n            else {\n                rowNode.childrenAfterFilter = rowNode.childrenAfterGroup;\n            }\n            if (rowNode.sibling) {\n                rowNode.sibling.childrenAfterFilter = rowNode.childrenAfterFilter;\n            }\n        };\n        if (this.doingTreeDataFiltering()) {\n            var treeDataDepthFirstFilter_1 = function (rowNode, alreadyFoundInParent) {\n                // tree data filter traverses the hierarchy depth first and includes child nodes if parent passes\n                // filter, and parent nodes will be include if any children exist.\n                if (rowNode.childrenAfterGroup) {\n                    for (var i = 0; i < rowNode.childrenAfterGroup.length; i++) {\n                        var childNode = rowNode.childrenAfterGroup[i];\n                        // first check if current node passes filter before invoking child nodes\n                        var foundInParent = alreadyFoundInParent\n                            || _this.filterManager.doesRowPassFilter({ rowNode: childNode });\n                        if (childNode.childrenAfterGroup) {\n                            treeDataDepthFirstFilter_1(rowNode.childrenAfterGroup[i], foundInParent);\n                        }\n                        else {\n                            filterCallback(childNode, foundInParent);\n                        }\n                    }\n                }\n                filterCallback(rowNode, alreadyFoundInParent);\n            };\n            var treeDataFilterCallback = function (rowNode) { return treeDataDepthFirstFilter_1(rowNode, false); };\n            changedPath.executeFromRootNode(treeDataFilterCallback);\n        }\n        else {\n            var defaultFilterCallback = function (rowNode) { return filterCallback(rowNode, false); };\n            changedPath.forEachChangedNodeDepthFirst(defaultFilterCallback, true);\n        }\n    };\n    FilterService.prototype.doingTreeDataFiltering = function () {\n        return this.gridOptionsService.isTreeData() && !this.gridOptionsService.is('excludeChildrenWhenTreeDataFiltering');\n    };\n    __decorate$6([\n        Autowired('filterManager')\n    ], FilterService.prototype, \"filterManager\", void 0);\n    FilterService = __decorate$6([\n        Bean(\"filterService\")\n    ], FilterService);\n    return FilterService;\n}(BeanStub));\n\nvar __extends$6 = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$5 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __read = (undefined && undefined.__read) || function (o, n) {\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n    if (!m) return o;\n    var i = m.call(o), r, ar = [], e;\n    try {\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n    }\n    catch (error) { e = { error: error }; }\n    finally {\n        try {\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\n        }\n        finally { if (e) throw e.error; }\n    }\n    return ar;\n};\nvar ImmutableService = /** @class */ (function (_super) {\n    __extends$6(ImmutableService, _super);\n    function ImmutableService() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    ImmutableService.prototype.postConstruct = function () {\n        if (this.rowModel.getType() === 'clientSide') {\n            this.clientSideRowModel = this.rowModel;\n        }\n    };\n    ImmutableService.prototype.isActive = function () {\n        // we used to have a property immutableData for this. however this was deprecated\n        // in favour of having Immutable Data on by default when getRowId is provided\n        var getRowIdProvided = this.gridOptionsService.exists('getRowId');\n        var immutableData = this.gridOptionsService.is('immutableData');\n        // this property is a backwards compatibility property, for those who want\n        // the old behaviour of Row ID's but NOT Immutable Data.\n        var resetRowDataOnUpdate = this.gridOptionsService.is('resetRowDataOnUpdate');\n        if (resetRowDataOnUpdate) {\n            return false;\n        }\n        return getRowIdProvided || immutableData;\n    };\n    ImmutableService.prototype.setRowData = function (rowData) {\n        var transactionAndMap = this.createTransactionForRowData(rowData);\n        if (!transactionAndMap) {\n            return;\n        }\n        var _a = __read(transactionAndMap, 2), transaction = _a[0], orderIdMap = _a[1];\n        this.clientSideRowModel.updateRowData(transaction, orderIdMap);\n    };\n    // converts the setRowData() command to a transaction\n    ImmutableService.prototype.createTransactionForRowData = function (rowData) {\n        if (_.missing(this.clientSideRowModel)) {\n            console.error('AG Grid: ImmutableService only works with ClientSideRowModel');\n            return;\n        }\n        var getRowIdFunc = this.gridOptionsService.getRowIdFunc();\n        if (getRowIdFunc == null) {\n            console.error('AG Grid: ImmutableService requires getRowId() callback to be implemented, your row data needs IDs!');\n            return;\n        }\n        // convert the data into a transaction object by working out adds, removes and updates\n        var transaction = {\n            remove: [],\n            update: [],\n            add: []\n        };\n        var existingNodesMap = this.clientSideRowModel.getCopyOfNodesMap();\n        var suppressSortOrder = this.gridOptionsService.is('suppressMaintainUnsortedOrder');\n        var orderMap = suppressSortOrder ? undefined : {};\n        if (_.exists(rowData)) {\n            // split all the new data in the following:\n            // if new, push to 'add'\n            // if update, push to 'update'\n            // if not changed, do not include in the transaction\n            rowData.forEach(function (data, index) {\n                var id = getRowIdFunc({ data: data, level: 0 });\n                var existingNode = existingNodesMap[id];\n                if (orderMap) {\n                    orderMap[id] = index;\n                }\n                if (existingNode) {\n                    var dataHasChanged = existingNode.data !== data;\n                    if (dataHasChanged) {\n                        transaction.update.push(data);\n                    }\n                    // otherwise, if data not changed, we just don't include it anywhere, as it's not a delta\n                    // remove from list, so we know the item is not to be removed\n                    existingNodesMap[id] = undefined;\n                }\n                else {\n                    transaction.add.push(data);\n                }\n            });\n        }\n        // at this point, all rows that are left, should be removed\n        _.iterateObject(existingNodesMap, function (id, rowNode) {\n            if (rowNode) {\n                transaction.remove.push(rowNode.data);\n            }\n        });\n        return [transaction, orderMap];\n    };\n    __decorate$5([\n        Autowired('rowModel')\n    ], ImmutableService.prototype, \"rowModel\", void 0);\n    __decorate$5([\n        Autowired('rowRenderer')\n    ], ImmutableService.prototype, \"rowRenderer\", void 0);\n    __decorate$5([\n        PostConstruct\n    ], ImmutableService.prototype, \"postConstruct\", null);\n    ImmutableService = __decorate$5([\n        Bean('immutableService')\n    ], ImmutableService);\n    return ImmutableService;\n}(BeanStub));\n\n// DO NOT UPDATE MANUALLY: Generated from script during build time\nvar VERSION$2 = '29.3.5';\n\nvar ClientSideRowModelModule = {\n    version: VERSION$2,\n    moduleName: ModuleNames.ClientSideRowModelModule,\n    rowModel: 'clientSide',\n    beans: [ClientSideRowModel, FilterStage, SortStage, FlattenStage, SortService, FilterService, ImmutableService],\n};\n\nvar __extends$5 = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$4 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar InfiniteBlock = /** @class */ (function (_super) {\n    __extends$5(InfiniteBlock, _super);\n    function InfiniteBlock(id, parentCache, params) {\n        var _this = _super.call(this, id) || this;\n        _this.parentCache = parentCache;\n        _this.params = params;\n        // we don't need to calculate these now, as the inputs don't change,\n        // however it makes the code easier to read if we work them out up front\n        _this.startRow = id * params.blockSize;\n        _this.endRow = _this.startRow + params.blockSize;\n        return _this;\n    }\n    InfiniteBlock.prototype.postConstruct = function () {\n        this.createRowNodes();\n    };\n    InfiniteBlock.prototype.getBlockStateJson = function () {\n        return {\n            id: '' + this.getId(),\n            state: {\n                blockNumber: this.getId(),\n                startRow: this.getStartRow(),\n                endRow: this.getEndRow(),\n                pageStatus: this.getState()\n            }\n        };\n    };\n    InfiniteBlock.prototype.setDataAndId = function (rowNode, data, index) {\n        // if there's no id and the rowNode was rendered before, it means this\n        // was a placeholder rowNode and should not be recycled. Setting\n        // `alreadyRendered`  to `false` forces the rowRenderer to flush it.\n        if (!rowNode.id && rowNode.alreadyRendered) {\n            rowNode.alreadyRendered = false;\n        }\n        if (_.exists(data)) {\n            // this means if the user is not providing id's we just use the\n            // index for the row. this will allow selection to work (that is based\n            // on index) as long user is not inserting or deleting rows,\n            // or wanting to keep selection between server side sorting or filtering\n            rowNode.setDataAndId(data, index.toString());\n        }\n        else {\n            rowNode.setDataAndId(undefined, undefined);\n        }\n    };\n    InfiniteBlock.prototype.loadFromDatasource = function () {\n        var _this = this;\n        var params = this.createLoadParams();\n        if (_.missing(this.params.datasource.getRows)) {\n            console.warn(\"AG Grid: datasource is missing getRows method\");\n            return;\n        }\n        // put in timeout, to force result to be async\n        window.setTimeout(function () {\n            _this.params.datasource.getRows(params);\n        }, 0);\n    };\n    InfiniteBlock.prototype.processServerFail = function () {\n        // todo - this method has better handling in SSRM\n    };\n    InfiniteBlock.prototype.createLoadParams = function () {\n        // PROBLEM . . . . when the user sets sort via colDef.sort, then this code\n        // is executing before the sort is set up, so server is not getting the sort\n        // model. need to change with regards order - so the server side request is\n        // AFTER thus it gets the right sort model.\n        var params = {\n            startRow: this.getStartRow(),\n            endRow: this.getEndRow(),\n            successCallback: this.pageLoaded.bind(this, this.getVersion()),\n            failCallback: this.pageLoadFailed.bind(this, this.getVersion()),\n            sortModel: this.params.sortModel,\n            filterModel: this.params.filterModel,\n            context: this.gridOptionsService.context\n        };\n        return params;\n    };\n    InfiniteBlock.prototype.forEachNode = function (callback, sequence, rowCount) {\n        var _this = this;\n        this.rowNodes.forEach(function (rowNode, index) {\n            var rowIndex = _this.startRow + index;\n            if (rowIndex < rowCount) {\n                callback(rowNode, sequence.next());\n            }\n        });\n    };\n    InfiniteBlock.prototype.getLastAccessed = function () {\n        return this.lastAccessed;\n    };\n    InfiniteBlock.prototype.getRow = function (rowIndex, dontTouchLastAccessed) {\n        if (dontTouchLastAccessed === void 0) { dontTouchLastAccessed = false; }\n        if (!dontTouchLastAccessed) {\n            this.lastAccessed = this.params.lastAccessedSequence.next();\n        }\n        var localIndex = rowIndex - this.startRow;\n        return this.rowNodes[localIndex];\n    };\n    InfiniteBlock.prototype.getStartRow = function () {\n        return this.startRow;\n    };\n    InfiniteBlock.prototype.getEndRow = function () {\n        return this.endRow;\n    };\n    // creates empty row nodes, data is missing as not loaded yet\n    InfiniteBlock.prototype.createRowNodes = function () {\n        this.rowNodes = [];\n        for (var i = 0; i < this.params.blockSize; i++) {\n            var rowIndex = this.startRow + i;\n            var rowNode = new RowNode(this.beans);\n            rowNode.setRowHeight(this.params.rowHeight);\n            rowNode.uiLevel = 0;\n            rowNode.setRowIndex(rowIndex);\n            rowNode.setRowTop(this.params.rowHeight * rowIndex);\n            this.rowNodes.push(rowNode);\n        }\n    };\n    InfiniteBlock.prototype.processServerResult = function (params) {\n        var _this = this;\n        this.rowNodes.forEach(function (rowNode, index) {\n            var data = params.rowData ? params.rowData[index] : undefined;\n            _this.setDataAndId(rowNode, data, _this.startRow + index);\n        });\n        var finalRowCount = params.rowCount != null && params.rowCount >= 0 ? params.rowCount : undefined;\n        this.parentCache.pageLoaded(this, finalRowCount);\n    };\n    InfiniteBlock.prototype.destroyRowNodes = function () {\n        this.rowNodes.forEach(function (rowNode) {\n            // this is needed, so row render knows to fade out the row, otherwise it\n            // sees row top is present, and thinks the row should be shown.\n            rowNode.clearRowTopAndRowIndex();\n        });\n    };\n    __decorate$4([\n        Autowired('beans')\n    ], InfiniteBlock.prototype, \"beans\", void 0);\n    __decorate$4([\n        PostConstruct\n    ], InfiniteBlock.prototype, \"postConstruct\", null);\n    __decorate$4([\n        PreDestroy\n    ], InfiniteBlock.prototype, \"destroyRowNodes\", null);\n    return InfiniteBlock;\n}(RowNodeBlock));\n\nvar __extends$4 = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$3 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __param = (undefined && undefined.__param) || function (paramIndex, decorator) {\n    return function (target, key) { decorator(target, key, paramIndex); }\n};\nvar InfiniteCache = /** @class */ (function (_super) {\n    __extends$4(InfiniteCache, _super);\n    function InfiniteCache(params) {\n        var _this = _super.call(this) || this;\n        _this.lastRowIndexKnown = false;\n        _this.blocks = {};\n        _this.blockCount = 0;\n        _this.rowCount = params.initialRowCount;\n        _this.params = params;\n        return _this;\n    }\n    InfiniteCache.prototype.setBeans = function (loggerFactory) {\n        this.logger = loggerFactory.create('InfiniteCache');\n    };\n    // the rowRenderer will not pass dontCreatePage, meaning when rendering the grid,\n    // it will want new pages in the cache as it asks for rows. only when we are inserting /\n    // removing rows via the api is dontCreatePage set, where we move rows between the pages.\n    InfiniteCache.prototype.getRow = function (rowIndex, dontCreatePage) {\n        if (dontCreatePage === void 0) { dontCreatePage = false; }\n        var blockId = Math.floor(rowIndex / this.params.blockSize);\n        var block = this.blocks[blockId];\n        if (!block) {\n            if (dontCreatePage) {\n                return undefined;\n            }\n            block = this.createBlock(blockId);\n        }\n        return block.getRow(rowIndex);\n    };\n    InfiniteCache.prototype.createBlock = function (blockNumber) {\n        var newBlock = this.createBean(new InfiniteBlock(blockNumber, this, this.params));\n        this.blocks[newBlock.getId()] = newBlock;\n        this.blockCount++;\n        this.purgeBlocksIfNeeded(newBlock);\n        this.params.rowNodeBlockLoader.addBlock(newBlock);\n        return newBlock;\n    };\n    // we have this on infinite row model only, not server side row model,\n    // because for server side, it would leave the children in inconsistent\n    // state - eg if a node had children, but after the refresh it had data\n    // for a different row, then the children would be with the wrong row node.\n    InfiniteCache.prototype.refreshCache = function () {\n        var nothingToRefresh = this.blockCount == 0;\n        if (nothingToRefresh) {\n            this.purgeCache();\n            return;\n        }\n        this.getBlocksInOrder().forEach(function (block) { return block.setStateWaitingToLoad(); });\n        this.params.rowNodeBlockLoader.checkBlockToLoad();\n    };\n    InfiniteCache.prototype.destroyAllBlocks = function () {\n        var _this = this;\n        this.getBlocksInOrder().forEach(function (block) { return _this.destroyBlock(block); });\n    };\n    InfiniteCache.prototype.getRowCount = function () {\n        return this.rowCount;\n    };\n    InfiniteCache.prototype.isLastRowIndexKnown = function () {\n        return this.lastRowIndexKnown;\n    };\n    // block calls this, when page loaded\n    InfiniteCache.prototype.pageLoaded = function (block, lastRow) {\n        // if we are not active, then we ignore all events, otherwise we could end up getting the\n        // grid to refresh even though we are no longer the active cache\n        if (!this.isAlive()) {\n            return;\n        }\n        this.logger.log(\"onPageLoaded: page = \" + block.getId() + \", lastRow = \" + lastRow);\n        this.checkRowCount(block, lastRow);\n        // we fire cacheUpdated even if the row count has not changed, as some items need updating even\n        // if no new rows to render. for example the pagination panel has '?' as the total rows when loading\n        // is underway, which would need to get updated when loading finishes.\n        this.onCacheUpdated();\n    };\n    InfiniteCache.prototype.purgeBlocksIfNeeded = function (blockToExclude) {\n        var _this = this;\n        // we exclude checking for the page just created, as this has yet to be accessed and hence\n        // the lastAccessed stamp will not be updated for the first time yet\n        var blocksForPurging = this.getBlocksInOrder().filter(function (b) { return b != blockToExclude; });\n        var lastAccessedComparator = function (a, b) { return b.getLastAccessed() - a.getLastAccessed(); };\n        blocksForPurging.sort(lastAccessedComparator);\n        // we remove (maxBlocksInCache - 1) as we already excluded the 'just created' page.\n        // in other words, after the splice operation below, we have taken out the blocks\n        // we want to keep, which means we are left with blocks that we can potentially purge\n        var maxBlocksProvided = this.params.maxBlocksInCache > 0;\n        var blocksToKeep = maxBlocksProvided ? this.params.maxBlocksInCache - 1 : null;\n        var emptyBlocksToKeep = InfiniteCache.MAX_EMPTY_BLOCKS_TO_KEEP - 1;\n        blocksForPurging.forEach(function (block, index) {\n            var purgeBecauseBlockEmpty = block.getState() === InfiniteBlock.STATE_WAITING_TO_LOAD && index >= emptyBlocksToKeep;\n            var purgeBecauseCacheFull = maxBlocksProvided ? index >= blocksToKeep : false;\n            if (purgeBecauseBlockEmpty || purgeBecauseCacheFull) {\n                // if the block currently has rows been displayed, then don't remove it either.\n                // this can happen if user has maxBlocks=2, and blockSize=5 (thus 10 max rows in cache)\n                // but the screen is showing 20 rows, so at least 4 blocks are needed.\n                if (_this.isBlockCurrentlyDisplayed(block)) {\n                    return;\n                }\n                // don't want to loose keyboard focus, so keyboard navigation can continue. so keep focused blocks.\n                if (_this.isBlockFocused(block)) {\n                    return;\n                }\n                // at this point, block is not needed, so burn baby burn\n                _this.removeBlockFromCache(block);\n            }\n        });\n    };\n    InfiniteCache.prototype.isBlockFocused = function (block) {\n        var focusedCell = this.focusService.getFocusCellToUseAfterRefresh();\n        if (!focusedCell) {\n            return false;\n        }\n        if (focusedCell.rowPinned != null) {\n            return false;\n        }\n        var blockIndexStart = block.getStartRow();\n        var blockIndexEnd = block.getEndRow();\n        var hasFocus = focusedCell.rowIndex >= blockIndexStart && focusedCell.rowIndex < blockIndexEnd;\n        return hasFocus;\n    };\n    InfiniteCache.prototype.isBlockCurrentlyDisplayed = function (block) {\n        var startIndex = block.getStartRow();\n        var endIndex = block.getEndRow() - 1;\n        return this.rowRenderer.isRangeInRenderedViewport(startIndex, endIndex);\n    };\n    InfiniteCache.prototype.removeBlockFromCache = function (blockToRemove) {\n        if (!blockToRemove) {\n            return;\n        }\n        this.destroyBlock(blockToRemove);\n        // we do not want to remove the 'loaded' event listener, as the\n        // concurrent loads count needs to be updated when the load is complete\n        // if the purged page is in loading state\n    };\n    InfiniteCache.prototype.checkRowCount = function (block, lastRow) {\n        // if client provided a last row, we always use it, as it could change between server calls\n        // if user deleted data and then called refresh on the grid.\n        if (typeof lastRow === 'number' && lastRow >= 0) {\n            this.rowCount = lastRow;\n            this.lastRowIndexKnown = true;\n        }\n        else if (!this.lastRowIndexKnown) {\n            // otherwise, see if we need to add some virtual rows\n            var lastRowIndex = (block.getId() + 1) * this.params.blockSize;\n            var lastRowIndexPlusOverflow = lastRowIndex + this.params.overflowSize;\n            if (this.rowCount < lastRowIndexPlusOverflow) {\n                this.rowCount = lastRowIndexPlusOverflow;\n            }\n        }\n    };\n    InfiniteCache.prototype.setRowCount = function (rowCount, lastRowIndexKnown) {\n        this.rowCount = rowCount;\n        // if undefined is passed, we do not set this value, if one of {true,false}\n        // is passed, we do set the value.\n        if (_.exists(lastRowIndexKnown)) {\n            this.lastRowIndexKnown = lastRowIndexKnown;\n        }\n        // if we are still searching, then the row count must not end at the end\n        // of a particular page, otherwise the searching will not pop into the\n        // next page\n        if (!this.lastRowIndexKnown) {\n            if (this.rowCount % this.params.blockSize === 0) {\n                this.rowCount++;\n            }\n        }\n        this.onCacheUpdated();\n    };\n    InfiniteCache.prototype.forEachNodeDeep = function (callback) {\n        var _this = this;\n        var sequence = new NumberSequence();\n        this.getBlocksInOrder().forEach(function (block) { return block.forEachNode(callback, sequence, _this.rowCount); });\n    };\n    InfiniteCache.prototype.getBlocksInOrder = function () {\n        // get all page id's as NUMBERS (not strings, as we need to sort as numbers) and in descending order\n        var blockComparator = function (a, b) { return a.getId() - b.getId(); };\n        var blocks = _.getAllValuesInObject(this.blocks).sort(blockComparator);\n        return blocks;\n    };\n    InfiniteCache.prototype.destroyBlock = function (block) {\n        delete this.blocks[block.getId()];\n        this.destroyBean(block);\n        this.blockCount--;\n        this.params.rowNodeBlockLoader.removeBlock(block);\n    };\n    // gets called 1) row count changed 2) cache purged 3) items inserted\n    InfiniteCache.prototype.onCacheUpdated = function () {\n        if (this.isAlive()) {\n            // if the virtualRowCount is shortened, then it's possible blocks exist that are no longer\n            // in the valid range. so we must remove these. this can happen if user explicitly sets\n            // the virtual row count, or the datasource returns a result and sets lastRow to something\n            // less than virtualRowCount (can happen if user scrolls down, server reduces dataset size).\n            this.destroyAllBlocksPastVirtualRowCount();\n            // this results in both row models (infinite and server side) firing ModelUpdated,\n            // however server side row model also updates the row indexes first\n            var event_1 = {\n                type: Events.EVENT_STORE_UPDATED\n            };\n            this.eventService.dispatchEvent(event_1);\n        }\n    };\n    InfiniteCache.prototype.destroyAllBlocksPastVirtualRowCount = function () {\n        var _this = this;\n        var blocksToDestroy = [];\n        this.getBlocksInOrder().forEach(function (block) {\n            var startRow = block.getId() * _this.params.blockSize;\n            if (startRow >= _this.rowCount) {\n                blocksToDestroy.push(block);\n            }\n        });\n        if (blocksToDestroy.length > 0) {\n            blocksToDestroy.forEach(function (block) { return _this.destroyBlock(block); });\n        }\n    };\n    InfiniteCache.prototype.purgeCache = function () {\n        var _this = this;\n        this.getBlocksInOrder().forEach(function (block) { return _this.removeBlockFromCache(block); });\n        this.lastRowIndexKnown = false;\n        // if zero rows in the cache, we need to get the SSRM to start asking for rows again.\n        // otherwise if set to zero rows last time, and we don't update the row count, then after\n        // the purge there will still be zero rows, meaning the SSRM won't request any rows.\n        // to kick things off, at least one row needs to be asked for.\n        if (this.rowCount === 0) {\n            this.rowCount = this.params.initialRowCount;\n        }\n        this.onCacheUpdated();\n    };\n    InfiniteCache.prototype.getRowNodesInRange = function (firstInRange, lastInRange) {\n        var _this = this;\n        var result = [];\n        var lastBlockId = -1;\n        var inActiveRange = false;\n        var numberSequence = new NumberSequence();\n        // if only one node passed, we start the selection at the top\n        if (_.missing(firstInRange)) {\n            inActiveRange = true;\n        }\n        var foundGapInSelection = false;\n        this.getBlocksInOrder().forEach(function (block) {\n            if (foundGapInSelection) {\n                return;\n            }\n            if (inActiveRange && (lastBlockId + 1 !== block.getId())) {\n                foundGapInSelection = true;\n                return;\n            }\n            lastBlockId = block.getId();\n            block.forEachNode(function (rowNode) {\n                var hitFirstOrLast = rowNode === firstInRange || rowNode === lastInRange;\n                if (inActiveRange || hitFirstOrLast) {\n                    result.push(rowNode);\n                }\n                if (hitFirstOrLast) {\n                    inActiveRange = !inActiveRange;\n                }\n            }, numberSequence, _this.rowCount);\n        });\n        // inActiveRange will be still true if we never hit the second rowNode\n        var invalidRange = foundGapInSelection || inActiveRange;\n        return invalidRange ? [] : result;\n    };\n    // this property says how many empty blocks should be in a cache, eg if scrolls down fast and creates 10\n    // blocks all for loading, the grid will only load the last 2 - it will assume the blocks the user quickly\n    // scrolled over are not needed to be loaded.\n    InfiniteCache.MAX_EMPTY_BLOCKS_TO_KEEP = 2;\n    __decorate$3([\n        Autowired('rowRenderer')\n    ], InfiniteCache.prototype, \"rowRenderer\", void 0);\n    __decorate$3([\n        Autowired(\"focusService\")\n    ], InfiniteCache.prototype, \"focusService\", void 0);\n    __decorate$3([\n        __param(0, Qualifier('loggerFactory'))\n    ], InfiniteCache.prototype, \"setBeans\", null);\n    __decorate$3([\n        PreDestroy\n    ], InfiniteCache.prototype, \"destroyAllBlocks\", null);\n    return InfiniteCache;\n}(BeanStub));\n\nvar __extends$3 = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$2 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar InfiniteRowModel = /** @class */ (function (_super) {\n    __extends$3(InfiniteRowModel, _super);\n    function InfiniteRowModel() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    InfiniteRowModel.prototype.getRowBounds = function (index) {\n        return {\n            rowHeight: this.rowHeight,\n            rowTop: this.rowHeight * index\n        };\n    };\n    // we don't implement as lazy row heights is not supported in this row model\n    InfiniteRowModel.prototype.ensureRowHeightsValid = function (startPixel, endPixel, startLimitIndex, endLimitIndex) {\n        return false;\n    };\n    InfiniteRowModel.prototype.init = function () {\n        var _this = this;\n        if (!this.gridOptionsService.isRowModelType('infinite')) {\n            return;\n        }\n        this.rowHeight = this.gridOptionsService.getRowHeightAsNumber();\n        this.addEventListeners();\n        this.addDestroyFunc(function () { return _this.destroyCache(); });\n        this.verifyProps();\n    };\n    InfiniteRowModel.prototype.verifyProps = function () {\n        if (this.gridOptionsService.exists('initialGroupOrderComparator') || this.gridOptionsService.exists('defaultGroupOrderComparator')) {\n            var message_1 = \"AG Grid: initialGroupOrderComparator cannot be used with Infinite Row Model. If using Infinite Row Model, then sorting is done on the server side, nothing to do with the client.\";\n            _.doOnce(function () { return console.warn(message_1); }, 'IRM.InitialGroupOrderComparator');\n        }\n    };\n    InfiniteRowModel.prototype.start = function () {\n        this.setDatasource(this.gridOptionsService.get('datasource'));\n    };\n    InfiniteRowModel.prototype.destroyDatasource = function () {\n        if (this.datasource) {\n            this.getContext().destroyBean(this.datasource);\n            this.rowRenderer.datasourceChanged();\n            this.datasource = null;\n        }\n    };\n    InfiniteRowModel.prototype.addEventListeners = function () {\n        this.addManagedListener(this.eventService, Events.EVENT_FILTER_CHANGED, this.onFilterChanged.bind(this));\n        this.addManagedListener(this.eventService, Events.EVENT_SORT_CHANGED, this.onSortChanged.bind(this));\n        this.addManagedListener(this.eventService, Events.EVENT_NEW_COLUMNS_LOADED, this.onColumnEverything.bind(this));\n        this.addManagedListener(this.eventService, Events.EVENT_STORE_UPDATED, this.onCacheUpdated.bind(this));\n    };\n    InfiniteRowModel.prototype.onFilterChanged = function () {\n        this.reset();\n    };\n    InfiniteRowModel.prototype.onSortChanged = function () {\n        this.reset();\n    };\n    InfiniteRowModel.prototype.onColumnEverything = function () {\n        var resetRequired;\n        // if cache params, we require reset only if sort model has changed. we don't need to check\n        // for filter model, as the filter manager will fire an event when columns change that result\n        // in the filter changing.\n        if (this.cacheParams) {\n            resetRequired = this.isSortModelDifferent();\n        }\n        else {\n            // if no cacheParams, means first time creating the cache, so always create one\n            resetRequired = true;\n        }\n        if (resetRequired) {\n            this.reset();\n        }\n    };\n    InfiniteRowModel.prototype.isSortModelDifferent = function () {\n        return !_.jsonEquals(this.cacheParams.sortModel, this.sortController.getSortModel());\n    };\n    InfiniteRowModel.prototype.getType = function () {\n        return 'infinite';\n    };\n    InfiniteRowModel.prototype.setDatasource = function (datasource) {\n        this.destroyDatasource();\n        this.datasource = datasource;\n        // only reset if we have a valid datasource to working with\n        if (datasource) {\n            this.reset();\n        }\n    };\n    InfiniteRowModel.prototype.isEmpty = function () {\n        return !this.infiniteCache;\n    };\n    InfiniteRowModel.prototype.isRowsToRender = function () {\n        return !!this.infiniteCache;\n    };\n    InfiniteRowModel.prototype.getNodesInRangeForSelection = function (firstInRange, lastInRange) {\n        return this.infiniteCache ? this.infiniteCache.getRowNodesInRange(firstInRange, lastInRange) : [];\n    };\n    InfiniteRowModel.prototype.reset = function () {\n        // important to return here, as the user could be setting filter or sort before\n        // data-source is set\n        if (!this.datasource) {\n            return;\n        }\n        // if user is providing id's, then this means we can keep the selection between datasource hits,\n        // as the rows will keep their unique id's even if, for example, server side sorting or filtering\n        // is done.\n        var getRowIdFunc = this.gridOptionsService.getRowIdFunc();\n        var userGeneratingIds = getRowIdFunc != null;\n        if (!userGeneratingIds) {\n            this.selectionService.reset();\n        }\n        this.resetCache();\n        var event = this.createModelUpdatedEvent();\n        this.eventService.dispatchEvent(event);\n    };\n    InfiniteRowModel.prototype.createModelUpdatedEvent = function () {\n        return {\n            type: Events.EVENT_MODEL_UPDATED,\n            // not sure if these should all be false - noticed if after implementing,\n            // maybe they should be true?\n            newPage: false,\n            newData: false,\n            keepRenderedRows: true,\n            animate: false\n        };\n    };\n    InfiniteRowModel.prototype.resetCache = function () {\n        // if not first time creating a cache, need to destroy the old one\n        this.destroyCache();\n        this.cacheParams = {\n            // the user provided datasource\n            datasource: this.datasource,\n            // sort and filter model\n            filterModel: this.filterManager.getFilterModel(),\n            sortModel: this.sortController.getSortModel(),\n            rowNodeBlockLoader: this.rowNodeBlockLoader,\n            // properties - this way we take a snapshot of them, so if user changes any, they will be\n            // used next time we create a new cache, which is generally after a filter or sort change,\n            // or a new datasource is set\n            initialRowCount: this.defaultIfInvalid(this.gridOptionsService.getNum('infiniteInitialRowCount'), 1),\n            maxBlocksInCache: this.gridOptionsService.getNum('maxBlocksInCache'),\n            rowHeight: this.gridOptionsService.getRowHeightAsNumber(),\n            // if user doesn't provide overflow, we use default overflow of 1, so user can scroll past\n            // the current page and request first row of next page\n            overflowSize: this.defaultIfInvalid(this.gridOptionsService.getNum('cacheOverflowSize'), 1),\n            // page size needs to be 1 or greater. having it at 1 would be silly, as you would be hitting the\n            // server for one page at a time. so the default if not specified is 100.\n            blockSize: this.defaultIfInvalid(this.gridOptionsService.getNum('cacheBlockSize'), 100),\n            // the cache could create this, however it is also used by the pages, so handy to create it\n            // here as the settings are also passed to the pages\n            lastAccessedSequence: new NumberSequence()\n        };\n        this.infiniteCache = this.createBean(new InfiniteCache(this.cacheParams));\n    };\n    InfiniteRowModel.prototype.defaultIfInvalid = function (value, defaultValue) {\n        return value > 0 ? value : defaultValue;\n    };\n    InfiniteRowModel.prototype.destroyCache = function () {\n        if (this.infiniteCache) {\n            this.infiniteCache = this.destroyBean(this.infiniteCache);\n        }\n    };\n    InfiniteRowModel.prototype.onCacheUpdated = function () {\n        var event = this.createModelUpdatedEvent();\n        this.eventService.dispatchEvent(event);\n    };\n    InfiniteRowModel.prototype.getRow = function (rowIndex) {\n        if (!this.infiniteCache) {\n            return undefined;\n        }\n        if (rowIndex >= this.infiniteCache.getRowCount()) {\n            return undefined;\n        }\n        return this.infiniteCache.getRow(rowIndex);\n    };\n    InfiniteRowModel.prototype.getRowNode = function (id) {\n        var result;\n        this.forEachNode(function (rowNode) {\n            if (rowNode.id === id) {\n                result = rowNode;\n            }\n        });\n        return result;\n    };\n    InfiniteRowModel.prototype.forEachNode = function (callback) {\n        if (this.infiniteCache) {\n            this.infiniteCache.forEachNodeDeep(callback);\n        }\n    };\n    InfiniteRowModel.prototype.getTopLevelRowCount = function () {\n        return this.getRowCount();\n    };\n    InfiniteRowModel.prototype.getTopLevelRowDisplayedIndex = function (topLevelIndex) {\n        return topLevelIndex;\n    };\n    InfiniteRowModel.prototype.getRowIndexAtPixel = function (pixel) {\n        if (this.rowHeight !== 0) { // avoid divide by zero error\n            var rowIndexForPixel = Math.floor(pixel / this.rowHeight);\n            var lastRowIndex = this.getRowCount() - 1;\n            if (rowIndexForPixel > lastRowIndex) {\n                return lastRowIndex;\n            }\n            return rowIndexForPixel;\n        }\n        return 0;\n    };\n    InfiniteRowModel.prototype.getRowCount = function () {\n        return this.infiniteCache ? this.infiniteCache.getRowCount() : 0;\n    };\n    InfiniteRowModel.prototype.isRowPresent = function (rowNode) {\n        var foundRowNode = this.getRowNode(rowNode.id);\n        return !!foundRowNode;\n    };\n    InfiniteRowModel.prototype.refreshCache = function () {\n        if (this.infiniteCache) {\n            this.infiniteCache.refreshCache();\n        }\n    };\n    InfiniteRowModel.prototype.purgeCache = function () {\n        if (this.infiniteCache) {\n            this.infiniteCache.purgeCache();\n        }\n    };\n    // for iRowModel\n    InfiniteRowModel.prototype.isLastRowIndexKnown = function () {\n        if (this.infiniteCache) {\n            return this.infiniteCache.isLastRowIndexKnown();\n        }\n        return false;\n    };\n    InfiniteRowModel.prototype.setRowCount = function (rowCount, lastRowIndexKnown) {\n        if (this.infiniteCache) {\n            this.infiniteCache.setRowCount(rowCount, lastRowIndexKnown);\n        }\n    };\n    __decorate$2([\n        Autowired('filterManager')\n    ], InfiniteRowModel.prototype, \"filterManager\", void 0);\n    __decorate$2([\n        Autowired('sortController')\n    ], InfiniteRowModel.prototype, \"sortController\", void 0);\n    __decorate$2([\n        Autowired('selectionService')\n    ], InfiniteRowModel.prototype, \"selectionService\", void 0);\n    __decorate$2([\n        Autowired('rowRenderer')\n    ], InfiniteRowModel.prototype, \"rowRenderer\", void 0);\n    __decorate$2([\n        Autowired('rowNodeBlockLoader')\n    ], InfiniteRowModel.prototype, \"rowNodeBlockLoader\", void 0);\n    __decorate$2([\n        PostConstruct\n    ], InfiniteRowModel.prototype, \"init\", null);\n    __decorate$2([\n        PreDestroy\n    ], InfiniteRowModel.prototype, \"destroyDatasource\", null);\n    InfiniteRowModel = __decorate$2([\n        Bean('rowModel')\n    ], InfiniteRowModel);\n    return InfiniteRowModel;\n}(BeanStub));\n\n// DO NOT UPDATE MANUALLY: Generated from script during build time\nvar VERSION$1 = '29.3.5';\n\nvar InfiniteRowModelModule = {\n    version: VERSION$1,\n    moduleName: ModuleNames.InfiniteRowModelModule,\n    rowModel: 'infinite',\n    beans: [InfiniteRowModel],\n};\n\nvar BaseCreator = /** @class */ (function () {\n    function BaseCreator() {\n    }\n    BaseCreator.prototype.setBeans = function (beans) {\n        this.beans = beans;\n    };\n    BaseCreator.prototype.getFileName = function (fileName) {\n        var extension = this.getDefaultFileExtension();\n        if (fileName == null || !fileName.length) {\n            fileName = this.getDefaultFileName();\n        }\n        return fileName.indexOf('.') === -1 ? fileName + \".\" + extension : fileName;\n    };\n    BaseCreator.prototype.getData = function (params) {\n        var serializingSession = this.createSerializingSession(params);\n        var data = this.beans.gridSerializer.serialize(serializingSession, params);\n        return data;\n    };\n    return BaseCreator;\n}());\n\nvar BaseGridSerializingSession = /** @class */ (function () {\n    function BaseGridSerializingSession(config) {\n        this.groupColumns = [];\n        var columnModel = config.columnModel, valueService = config.valueService, gridOptionsService = config.gridOptionsService, processCellCallback = config.processCellCallback, processHeaderCallback = config.processHeaderCallback, processGroupHeaderCallback = config.processGroupHeaderCallback, processRowGroupCallback = config.processRowGroupCallback;\n        this.columnModel = columnModel;\n        this.valueService = valueService;\n        this.gridOptionsService = gridOptionsService;\n        this.processCellCallback = processCellCallback;\n        this.processHeaderCallback = processHeaderCallback;\n        this.processGroupHeaderCallback = processGroupHeaderCallback;\n        this.processRowGroupCallback = processRowGroupCallback;\n    }\n    BaseGridSerializingSession.prototype.prepare = function (columnsToExport) {\n        this.groupColumns = columnsToExport.filter(function (col) { return !!col.getColDef().showRowGroup; });\n    };\n    BaseGridSerializingSession.prototype.extractHeaderValue = function (column) {\n        var value = this.getHeaderName(this.processHeaderCallback, column);\n        return value != null ? value : '';\n    };\n    BaseGridSerializingSession.prototype.extractRowCellValue = function (column, index, accumulatedRowIndex, type, node) {\n        // we render the group summary text e.g. \"-> Parent -> Child\"...\n        var hideOpenParents = this.gridOptionsService.is('groupHideOpenParents');\n        var value = ((!hideOpenParents || node.footer) && this.shouldRenderGroupSummaryCell(node, column, index))\n            ? this.createValueForGroupNode(node)\n            : this.valueService.getValue(column, node);\n        var processedValue = this.processCell({\n            accumulatedRowIndex: accumulatedRowIndex,\n            rowNode: node,\n            column: column,\n            value: value,\n            processCellCallback: this.processCellCallback,\n            type: type\n        });\n        return processedValue != null ? processedValue : '';\n    };\n    BaseGridSerializingSession.prototype.shouldRenderGroupSummaryCell = function (node, column, currentColumnIndex) {\n        var _a;\n        var isGroupNode = node && node.group;\n        // only on group rows\n        if (!isGroupNode) {\n            return false;\n        }\n        var currentColumnGroupIndex = this.groupColumns.indexOf(column);\n        if (currentColumnGroupIndex !== -1) {\n            if ((_a = node.groupData) === null || _a === void 0 ? void 0 : _a[column.getId()]) {\n                return true;\n            }\n            // if this is a top level footer, always render`Total` in the left-most cell\n            if (node.footer && node.level === -1) {\n                var colDef = column.getColDef();\n                var isFullWidth = colDef == null || colDef.showRowGroup === true;\n                return isFullWidth || colDef.showRowGroup === this.columnModel.getRowGroupColumns()[0].getId();\n            }\n        }\n        var isGroupUseEntireRow = this.gridOptionsService.isGroupUseEntireRow(this.columnModel.isPivotMode());\n        return currentColumnIndex === 0 && isGroupUseEntireRow;\n    };\n    BaseGridSerializingSession.prototype.getHeaderName = function (callback, column) {\n        if (callback) {\n            return callback({\n                column: column,\n                api: this.gridOptionsService.api,\n                columnApi: this.gridOptionsService.columnApi,\n                context: this.gridOptionsService.context\n            });\n        }\n        return this.columnModel.getDisplayNameForColumn(column, 'csv', true);\n    };\n    BaseGridSerializingSession.prototype.createValueForGroupNode = function (node) {\n        if (this.processRowGroupCallback) {\n            return this.processRowGroupCallback({\n                node: node,\n                api: this.gridOptionsService.api,\n                columnApi: this.gridOptionsService.columnApi,\n                context: this.gridOptionsService.context,\n            });\n        }\n        var isFooter = node.footer;\n        var keys = [node.key];\n        if (!this.gridOptionsService.isGroupMultiAutoColumn()) {\n            while (node.parent) {\n                node = node.parent;\n                keys.push(node.key);\n            }\n        }\n        var groupValue = keys.reverse().join(' -> ');\n        return isFooter ? \"Total \" + groupValue : groupValue;\n    };\n    BaseGridSerializingSession.prototype.processCell = function (params) {\n        var accumulatedRowIndex = params.accumulatedRowIndex, rowNode = params.rowNode, column = params.column, value = params.value, processCellCallback = params.processCellCallback, type = params.type;\n        if (processCellCallback) {\n            return processCellCallback({\n                accumulatedRowIndex: accumulatedRowIndex,\n                column: column,\n                node: rowNode,\n                value: value,\n                api: this.gridOptionsService.api,\n                columnApi: this.gridOptionsService.columnApi,\n                context: this.gridOptionsService.context,\n                type: type\n            });\n        }\n        return value != null ? value : '';\n    };\n    return BaseGridSerializingSession;\n}());\n\nvar Downloader = /** @class */ (function () {\n    function Downloader() {\n    }\n    Downloader.download = function (fileName, content) {\n        var win = document.defaultView || window;\n        if (!win) {\n            console.warn('AG Grid: There is no `window` associated with the current `document`');\n            return;\n        }\n        var element = document.createElement('a');\n        // @ts-ignore\n        var url = win.URL.createObjectURL(content);\n        element.setAttribute('href', url);\n        element.setAttribute('download', fileName);\n        element.style.display = 'none';\n        document.body.appendChild(element);\n        element.dispatchEvent(new MouseEvent('click', {\n            bubbles: false,\n            cancelable: true,\n            view: win\n        }));\n        document.body.removeChild(element);\n        win.setTimeout(function () {\n            // @ts-ignore\n            win.URL.revokeObjectURL(url);\n        }, 0);\n    };\n    return Downloader;\n}());\n\nvar __extends$2 = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar LINE_SEPARATOR$1 = '\\r\\n';\nvar CsvSerializingSession = /** @class */ (function (_super) {\n    __extends$2(CsvSerializingSession, _super);\n    function CsvSerializingSession(config) {\n        var _this = _super.call(this, config) || this;\n        _this.isFirstLine = true;\n        _this.result = '';\n        var suppressQuotes = config.suppressQuotes, columnSeparator = config.columnSeparator;\n        _this.suppressQuotes = suppressQuotes;\n        _this.columnSeparator = columnSeparator;\n        return _this;\n    }\n    CsvSerializingSession.prototype.addCustomContent = function (content) {\n        var _this = this;\n        if (!content) {\n            return;\n        }\n        if (typeof content === 'string') {\n            if (!/^\\s*\\n/.test(content)) {\n                this.beginNewLine();\n            }\n            // replace whatever newlines are supplied with the style we're using\n            content = content.replace(/\\r?\\n/g, LINE_SEPARATOR$1);\n            this.result += content;\n        }\n        else {\n            content.forEach(function (row) {\n                _this.beginNewLine();\n                row.forEach(function (cell, index) {\n                    if (index !== 0) {\n                        _this.result += _this.columnSeparator;\n                    }\n                    _this.result += _this.putInQuotes(cell.data.value || '');\n                    if (cell.mergeAcross) {\n                        _this.appendEmptyCells(cell.mergeAcross);\n                    }\n                });\n            });\n        }\n    };\n    CsvSerializingSession.prototype.onNewHeaderGroupingRow = function () {\n        this.beginNewLine();\n        return {\n            onColumn: this.onNewHeaderGroupingRowColumn.bind(this)\n        };\n    };\n    CsvSerializingSession.prototype.onNewHeaderGroupingRowColumn = function (columnGroup, header, index, span) {\n        if (index != 0) {\n            this.result += this.columnSeparator;\n        }\n        this.result += this.putInQuotes(header);\n        this.appendEmptyCells(span);\n    };\n    CsvSerializingSession.prototype.appendEmptyCells = function (count) {\n        for (var i = 1; i <= count; i++) {\n            this.result += this.columnSeparator + this.putInQuotes(\"\");\n        }\n    };\n    CsvSerializingSession.prototype.onNewHeaderRow = function () {\n        this.beginNewLine();\n        return {\n            onColumn: this.onNewHeaderRowColumn.bind(this)\n        };\n    };\n    CsvSerializingSession.prototype.onNewHeaderRowColumn = function (column, index) {\n        if (index != 0) {\n            this.result += this.columnSeparator;\n        }\n        this.result += this.putInQuotes(this.extractHeaderValue(column));\n    };\n    CsvSerializingSession.prototype.onNewBodyRow = function () {\n        this.beginNewLine();\n        return {\n            onColumn: this.onNewBodyRowColumn.bind(this)\n        };\n    };\n    CsvSerializingSession.prototype.onNewBodyRowColumn = function (column, index, node) {\n        if (index != 0) {\n            this.result += this.columnSeparator;\n        }\n        this.result += this.putInQuotes(this.extractRowCellValue(column, index, index, 'csv', node));\n    };\n    CsvSerializingSession.prototype.putInQuotes = function (value) {\n        if (this.suppressQuotes) {\n            return value;\n        }\n        if (value === null || value === undefined) {\n            return '\"\"';\n        }\n        var stringValue;\n        if (typeof value === 'string') {\n            stringValue = value;\n        }\n        else if (typeof value.toString === 'function') {\n            stringValue = value.toString();\n        }\n        else {\n            console.warn('AG Grid: unknown value type during csv conversion');\n            stringValue = '';\n        }\n        // replace each \" with \"\" (ie two sets of double quotes is how to do double quotes in csv)\n        var valueEscaped = stringValue.replace(/\"/g, \"\\\"\\\"\");\n        return '\"' + valueEscaped + '\"';\n    };\n    CsvSerializingSession.prototype.parse = function () {\n        return this.result;\n    };\n    CsvSerializingSession.prototype.beginNewLine = function () {\n        if (!this.isFirstLine) {\n            this.result += LINE_SEPARATOR$1;\n        }\n        this.isFirstLine = false;\n    };\n    return CsvSerializingSession;\n}(BaseGridSerializingSession));\n\nvar __extends$1 = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$1 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar CsvCreator = /** @class */ (function (_super) {\n    __extends$1(CsvCreator, _super);\n    function CsvCreator() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    CsvCreator.prototype.postConstruct = function () {\n        this.setBeans({\n            gridSerializer: this.gridSerializer,\n            gridOptionsService: this.gridOptionsService\n        });\n    };\n    CsvCreator.prototype.getMergedParams = function (params) {\n        var baseParams = this.gridOptionsService.get('defaultCsvExportParams');\n        return Object.assign({}, baseParams, params);\n    };\n    CsvCreator.prototype.export = function (userParams) {\n        if (this.isExportSuppressed()) {\n            console.warn(\"AG Grid: Export cancelled. Export is not allowed as per your configuration.\");\n            return '';\n        }\n        var mergedParams = this.getMergedParams(userParams);\n        var data = this.getData(mergedParams);\n        var packagedFile = new Blob([\"\\ufeff\", data], { type: 'text/plain' });\n        Downloader.download(this.getFileName(mergedParams.fileName), packagedFile);\n        return data;\n    };\n    CsvCreator.prototype.exportDataAsCsv = function (params) {\n        return this.export(params);\n    };\n    CsvCreator.prototype.getDataAsCsv = function (params, skipDefaultParams) {\n        if (skipDefaultParams === void 0) { skipDefaultParams = false; }\n        var mergedParams = skipDefaultParams\n            ? Object.assign({}, params)\n            : this.getMergedParams(params);\n        return this.getData(mergedParams);\n    };\n    CsvCreator.prototype.getDefaultFileName = function () {\n        return 'export.csv';\n    };\n    CsvCreator.prototype.getDefaultFileExtension = function () {\n        return 'csv';\n    };\n    CsvCreator.prototype.createSerializingSession = function (params) {\n        var _a = this, columnModel = _a.columnModel, valueService = _a.valueService, gridOptionsService = _a.gridOptionsService;\n        var _b = params, processCellCallback = _b.processCellCallback, processHeaderCallback = _b.processHeaderCallback, processGroupHeaderCallback = _b.processGroupHeaderCallback, processRowGroupCallback = _b.processRowGroupCallback, suppressQuotes = _b.suppressQuotes, columnSeparator = _b.columnSeparator;\n        return new CsvSerializingSession({\n            columnModel: columnModel,\n            valueService: valueService,\n            gridOptionsService: gridOptionsService,\n            processCellCallback: processCellCallback || undefined,\n            processHeaderCallback: processHeaderCallback || undefined,\n            processGroupHeaderCallback: processGroupHeaderCallback || undefined,\n            processRowGroupCallback: processRowGroupCallback || undefined,\n            suppressQuotes: suppressQuotes || false,\n            columnSeparator: columnSeparator || ','\n        });\n    };\n    CsvCreator.prototype.isExportSuppressed = function () {\n        return this.gridOptionsService.is('suppressCsvExport');\n    };\n    __decorate$1([\n        Autowired('columnModel')\n    ], CsvCreator.prototype, \"columnModel\", void 0);\n    __decorate$1([\n        Autowired('valueService')\n    ], CsvCreator.prototype, \"valueService\", void 0);\n    __decorate$1([\n        Autowired('gridSerializer')\n    ], CsvCreator.prototype, \"gridSerializer\", void 0);\n    __decorate$1([\n        Autowired('gridOptionsService')\n    ], CsvCreator.prototype, \"gridOptionsService\", void 0);\n    __decorate$1([\n        PostConstruct\n    ], CsvCreator.prototype, \"postConstruct\", null);\n    CsvCreator = __decorate$1([\n        Bean('csvCreator')\n    ], CsvCreator);\n    return CsvCreator;\n}(BaseCreator));\n\nvar __extends = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar RowType;\n(function (RowType) {\n    RowType[RowType[\"HEADER_GROUPING\"] = 0] = \"HEADER_GROUPING\";\n    RowType[RowType[\"HEADER\"] = 1] = \"HEADER\";\n    RowType[RowType[\"BODY\"] = 2] = \"BODY\";\n})(RowType || (RowType = {}));\nvar GridSerializer = /** @class */ (function (_super) {\n    __extends(GridSerializer, _super);\n    function GridSerializer() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    GridSerializer.prototype.serialize = function (gridSerializingSession, params) {\n        if (params === void 0) { params = {}; }\n        var columnsToExport = this.getColumnsToExport(params.allColumns, params.columnKeys);\n        var serializeChain = _.compose(\n        // first pass, put in the header names of the cols\n        this.prepareSession(columnsToExport), this.prependContent(params), this.exportColumnGroups(params, columnsToExport), this.exportHeaders(params, columnsToExport), this.processPinnedTopRows(params, columnsToExport), this.processRows(params, columnsToExport), this.processPinnedBottomRows(params, columnsToExport), this.appendContent(params));\n        return serializeChain(gridSerializingSession).parse();\n    };\n    GridSerializer.prototype.processRow = function (gridSerializingSession, params, columnsToExport, node) {\n        var rowSkipper = params.shouldRowBeSkipped || (function () { return false; });\n        var context = this.gridOptionsService.context;\n        var api = this.gridOptionsService.api;\n        var columnApi = this.gridOptionsService.columnApi;\n        var skipSingleChildrenGroup = this.gridOptionsService.is('groupRemoveSingleChildren');\n        var skipLowestSingleChildrenGroup = this.gridOptionsService.is('groupRemoveLowestSingleChildren');\n        // if onlySelected, we ignore groupHideOpenParents as the user has explicitly selected the rows they wish to export.\n        // similarly, if specific rowNodes are provided we do the same. (the clipboard service uses rowNodes to define which rows to export)\n        var isClipboardExport = params.rowPositions != null;\n        var isExplicitExportSelection = isClipboardExport || !!params.onlySelected;\n        var hideOpenParents = this.gridOptionsService.is('groupHideOpenParents') && !isExplicitExportSelection;\n        var isLeafNode = this.columnModel.isPivotMode() ? node.leafGroup : !node.group;\n        var isFooter = !!node.footer;\n        var skipRowGroups = params.skipGroups || params.skipRowGroups;\n        var shouldSkipLowestGroup = skipLowestSingleChildrenGroup && node.leafGroup;\n        var shouldSkipCurrentGroup = node.allChildrenCount === 1 && (skipSingleChildrenGroup || shouldSkipLowestGroup);\n        if (skipRowGroups && params.skipGroups) {\n            _.doOnce(function () { return console.warn('AG Grid: Since v25.2 `skipGroups` has been renamed to `skipRowGroups`.'); }, 'gridSerializer-skipGroups');\n        }\n        if ((!isLeafNode && !isFooter && (params.skipRowGroups || shouldSkipCurrentGroup || hideOpenParents)) ||\n            (params.onlySelected && !node.isSelected()) ||\n            (params.skipPinnedTop && node.rowPinned === 'top') ||\n            (params.skipPinnedBottom && node.rowPinned === 'bottom')) {\n            return;\n        }\n        // if we are in pivotMode, then the grid will show the root node only\n        // if it's not a leaf group\n        var nodeIsRootNode = node.level === -1;\n        if (nodeIsRootNode && !isLeafNode && !isFooter) {\n            return;\n        }\n        var shouldRowBeSkipped = rowSkipper({ node: node, api: api, columnApi: columnApi, context: context });\n        if (shouldRowBeSkipped) {\n            return;\n        }\n        var rowAccumulator = gridSerializingSession.onNewBodyRow();\n        columnsToExport.forEach(function (column, index) {\n            rowAccumulator.onColumn(column, index, node);\n        });\n        if (params.getCustomContentBelowRow) {\n            var content = params.getCustomContentBelowRow({ node: node, api: api, columnApi: columnApi, context: context });\n            if (content) {\n                gridSerializingSession.addCustomContent(content);\n            }\n        }\n    };\n    GridSerializer.prototype.appendContent = function (params) {\n        return function (gridSerializingSession) {\n            var appendContent = params.customFooter || params.appendContent;\n            if (appendContent) {\n                if (params.customFooter) {\n                    _.doOnce(function () { return console.warn('AG Grid: Since version 25.2.0 the `customFooter` param has been deprecated. Use `appendContent` instead.'); }, 'gridSerializer-customFooter');\n                }\n                gridSerializingSession.addCustomContent(appendContent);\n            }\n            return gridSerializingSession;\n        };\n    };\n    GridSerializer.prototype.prependContent = function (params) {\n        return function (gridSerializingSession) {\n            var prependContent = params.customHeader || params.prependContent;\n            if (prependContent) {\n                if (params.customHeader) {\n                    _.doOnce(function () { return console.warn('AG Grid: Since version 25.2.0 the `customHeader` param has been deprecated. Use `prependContent` instead.'); }, 'gridSerializer-customHeader');\n                }\n                gridSerializingSession.addCustomContent(prependContent);\n            }\n            return gridSerializingSession;\n        };\n    };\n    GridSerializer.prototype.prepareSession = function (columnsToExport) {\n        return function (gridSerializingSession) {\n            gridSerializingSession.prepare(columnsToExport);\n            return gridSerializingSession;\n        };\n    };\n    GridSerializer.prototype.exportColumnGroups = function (params, columnsToExport) {\n        var _this = this;\n        return function (gridSerializingSession) {\n            if (!params.skipColumnGroupHeaders) {\n                var groupInstanceIdCreator = new GroupInstanceIdCreator();\n                var displayedGroups = _this.displayedGroupCreator.createDisplayedGroups(columnsToExport, _this.columnModel.getGridBalancedTree(), groupInstanceIdCreator, null);\n                _this.recursivelyAddHeaderGroups(displayedGroups, gridSerializingSession, params.processGroupHeaderCallback);\n            }\n            else if (params.columnGroups) {\n                _.doOnce(function () { return console.warn('AG Grid: Since v25.2 the `columnGroups` param has deprecated, and groups are exported by default.'); }, 'gridSerializer-columnGroups');\n            }\n            return gridSerializingSession;\n        };\n    };\n    GridSerializer.prototype.exportHeaders = function (params, columnsToExport) {\n        return function (gridSerializingSession) {\n            if (!params.skipHeader && !params.skipColumnHeaders) {\n                var gridRowIterator_1 = gridSerializingSession.onNewHeaderRow();\n                columnsToExport.forEach(function (column, index) {\n                    gridRowIterator_1.onColumn(column, index, undefined);\n                });\n            }\n            else if (params.skipHeader) {\n                _.doOnce(function () { return console.warn('AG Grid: Since v25.2 the `skipHeader` param has been renamed to `skipColumnHeaders`.'); }, 'gridSerializer-skipHeader');\n            }\n            return gridSerializingSession;\n        };\n    };\n    GridSerializer.prototype.processPinnedTopRows = function (params, columnsToExport) {\n        var _this = this;\n        return function (gridSerializingSession) {\n            var processRow = _this.processRow.bind(_this, gridSerializingSession, params, columnsToExport);\n            if (params.rowPositions) {\n                params.rowPositions\n                    // only pinnedTop rows, other models are processed by `processRows` and `processPinnedBottomsRows`\n                    .filter(function (position) { return position.rowPinned === 'top'; })\n                    .sort(function (a, b) { return a.rowIndex - b.rowIndex; })\n                    .map(function (position) { return _this.pinnedRowModel.getPinnedTopRow(position.rowIndex); })\n                    .forEach(processRow);\n            }\n            else {\n                _this.pinnedRowModel.forEachPinnedTopRow(processRow);\n            }\n            return gridSerializingSession;\n        };\n    };\n    GridSerializer.prototype.processRows = function (params, columnsToExport) {\n        var _this = this;\n        return function (gridSerializingSession) {\n            // when in pivot mode, we always render cols on screen, never 'all columns'\n            var rowModel = _this.rowModel;\n            var rowModelType = rowModel.getType();\n            var usingCsrm = rowModelType === 'clientSide';\n            var usingSsrm = rowModelType === 'serverSide';\n            var onlySelectedNonStandardModel = !usingCsrm && params.onlySelected;\n            var processRow = _this.processRow.bind(_this, gridSerializingSession, params, columnsToExport);\n            var _a = params.exportedRows, exportedRows = _a === void 0 ? 'filteredAndSorted' : _a;\n            if (params.rowPositions) {\n                params.rowPositions\n                    // pinnedRows are processed by `processPinnedTopRows` and `processPinnedBottomsRows`\n                    .filter(function (position) { return position.rowPinned == null; })\n                    .sort(function (a, b) { return a.rowIndex - b.rowIndex; })\n                    .map(function (position) { return rowModel.getRow(position.rowIndex); })\n                    .forEach(processRow);\n            }\n            else if (_this.columnModel.isPivotMode()) {\n                if (usingCsrm) {\n                    rowModel.forEachPivotNode(processRow, true);\n                }\n                else {\n                    // must be enterprise, so we can just loop through all the nodes\n                    rowModel.forEachNode(processRow);\n                }\n            }\n            else {\n                // onlySelectedAllPages: user doing pagination and wants selected items from\n                // other pages, so cannot use the standard row model as it won't have rows from\n                // other pages.\n                // onlySelectedNonStandardModel: if user wants selected in non standard row model\n                // (eg viewport) then again RowModel cannot be used, so need to use selected instead.\n                if (params.onlySelectedAllPages || onlySelectedNonStandardModel) {\n                    var selectedNodes = _this.selectionService.getSelectedNodes();\n                    _this.replicateSortedOrder(selectedNodes);\n                    // serialize each node\n                    selectedNodes.forEach(processRow);\n                }\n                else {\n                    // here is everything else - including standard row model and selected. we don't use\n                    // the selection model even when just using selected, so that the result is the order\n                    // of the rows appearing on the screen.\n                    if (exportedRows === 'all') {\n                        rowModel.forEachNode(processRow);\n                    }\n                    else if (usingCsrm) {\n                        rowModel.forEachNodeAfterFilterAndSort(processRow, true);\n                    }\n                    else if (usingSsrm) {\n                        rowModel.forEachNodeAfterFilterAndSort(processRow);\n                    }\n                    else {\n                        rowModel.forEachNode(processRow);\n                    }\n                }\n            }\n            return gridSerializingSession;\n        };\n    };\n    GridSerializer.prototype.replicateSortedOrder = function (rows) {\n        var _this = this;\n        var sortOptions = this.sortController.getSortOptions();\n        var compareNodes = function (rowA, rowB) {\n            var _a, _b, _c, _d;\n            if (rowA.rowIndex != null && rowB.rowIndex != null) {\n                // if the rows have rowIndexes, this is the easiest way to compare,\n                // as they're already ordered\n                return rowA.rowIndex - rowB.rowIndex;\n            }\n            // if the level is the same, compare these nodes, or their parents\n            if (rowA.level === rowB.level) {\n                if (((_a = rowA.parent) === null || _a === void 0 ? void 0 : _a.id) === ((_b = rowB.parent) === null || _b === void 0 ? void 0 : _b.id)) {\n                    return _this.rowNodeSorter.compareRowNodes(sortOptions, {\n                        rowNode: rowA,\n                        currentPos: (_c = rowA.rowIndex) !== null && _c !== void 0 ? _c : -1,\n                    }, {\n                        rowNode: rowB,\n                        currentPos: (_d = rowB.rowIndex) !== null && _d !== void 0 ? _d : -1,\n                    });\n                }\n                // level is same, but parent isn't, compare parents\n                return compareNodes(rowA.parent, rowB.parent);\n            }\n            // if level is different, match levels\n            if (rowA.level > rowB.level) {\n                return compareNodes(rowA.parent, rowB);\n            }\n            return compareNodes(rowA, rowB.parent);\n        };\n        // sort the nodes either by existing row index or compare them\n        rows.sort(compareNodes);\n    };\n    GridSerializer.prototype.processPinnedBottomRows = function (params, columnsToExport) {\n        var _this = this;\n        return function (gridSerializingSession) {\n            var processRow = _this.processRow.bind(_this, gridSerializingSession, params, columnsToExport);\n            if (params.rowPositions) {\n                params.rowPositions\n                    // only pinnedBottom rows, other models are processed by `processRows` and `processPinnedTopRows`\n                    .filter(function (position) { return position.rowPinned === 'bottom'; })\n                    .sort(function (a, b) { return a.rowIndex - b.rowIndex; })\n                    .map(function (position) { return _this.pinnedRowModel.getPinnedBottomRow(position.rowIndex); })\n                    .forEach(processRow);\n            }\n            else {\n                _this.pinnedRowModel.forEachPinnedBottomRow(processRow);\n            }\n            return gridSerializingSession;\n        };\n    };\n    GridSerializer.prototype.getColumnsToExport = function (allColumns, columnKeys) {\n        if (allColumns === void 0) { allColumns = false; }\n        var isPivotMode = this.columnModel.isPivotMode();\n        if (columnKeys && columnKeys.length) {\n            return this.columnModel.getGridColumns(columnKeys);\n        }\n        if (allColumns && !isPivotMode) {\n            // add auto group column for tree data\n            var columns = this.gridOptionsService.isTreeData()\n                ? this.columnModel.getGridColumns([GROUP_AUTO_COLUMN_ID])\n                : [];\n            return columns.concat(this.columnModel.getAllPrimaryColumns() || []);\n        }\n        return this.columnModel.getAllDisplayedColumns();\n    };\n    GridSerializer.prototype.recursivelyAddHeaderGroups = function (displayedGroups, gridSerializingSession, processGroupHeaderCallback) {\n        var directChildrenHeaderGroups = [];\n        displayedGroups.forEach(function (columnGroupChild) {\n            var columnGroup = columnGroupChild;\n            if (!columnGroup.getChildren) {\n                return;\n            }\n            columnGroup.getChildren().forEach(function (it) { return directChildrenHeaderGroups.push(it); });\n        });\n        if (displayedGroups.length > 0 && displayedGroups[0] instanceof ColumnGroup) {\n            this.doAddHeaderHeader(gridSerializingSession, displayedGroups, processGroupHeaderCallback);\n        }\n        if (directChildrenHeaderGroups && directChildrenHeaderGroups.length > 0) {\n            this.recursivelyAddHeaderGroups(directChildrenHeaderGroups, gridSerializingSession, processGroupHeaderCallback);\n        }\n    };\n    GridSerializer.prototype.doAddHeaderHeader = function (gridSerializingSession, displayedGroups, processGroupHeaderCallback) {\n        var _this = this;\n        var gridRowIterator = gridSerializingSession.onNewHeaderGroupingRow();\n        var columnIndex = 0;\n        displayedGroups.forEach(function (columnGroupChild) {\n            var columnGroup = columnGroupChild;\n            var name;\n            if (processGroupHeaderCallback) {\n                name = processGroupHeaderCallback({\n                    columnGroup: columnGroup,\n                    api: _this.gridOptionsService.api,\n                    columnApi: _this.gridOptionsService.columnApi,\n                    context: _this.gridOptionsService.context\n                });\n            }\n            else {\n                name = _this.columnModel.getDisplayNameForColumnGroup(columnGroup, 'header');\n            }\n            var collapsibleGroupRanges = columnGroup.getLeafColumns().reduce(function (collapsibleGroups, currentColumn, currentIdx, arr) {\n                var lastGroup = _.last(collapsibleGroups);\n                var groupShow = currentColumn.getColumnGroupShow() === 'open';\n                if (!groupShow) {\n                    if (lastGroup && lastGroup[1] == null) {\n                        lastGroup[1] = currentIdx - 1;\n                    }\n                }\n                else if (!lastGroup || lastGroup[1] != null) {\n                    lastGroup = [currentIdx];\n                    collapsibleGroups.push(lastGroup);\n                }\n                if (currentIdx === arr.length - 1 && lastGroup && lastGroup[1] == null) {\n                    lastGroup[1] = currentIdx;\n                }\n                return collapsibleGroups;\n            }, []);\n            gridRowIterator.onColumn(columnGroup, name || '', columnIndex++, columnGroup.getLeafColumns().length - 1, collapsibleGroupRanges);\n        });\n    };\n    __decorate([\n        Autowired('displayedGroupCreator')\n    ], GridSerializer.prototype, \"displayedGroupCreator\", void 0);\n    __decorate([\n        Autowired('columnModel')\n    ], GridSerializer.prototype, \"columnModel\", void 0);\n    __decorate([\n        Autowired('rowModel')\n    ], GridSerializer.prototype, \"rowModel\", void 0);\n    __decorate([\n        Autowired('pinnedRowModel')\n    ], GridSerializer.prototype, \"pinnedRowModel\", void 0);\n    __decorate([\n        Autowired('selectionService')\n    ], GridSerializer.prototype, \"selectionService\", void 0);\n    __decorate([\n        Autowired('rowNodeSorter')\n    ], GridSerializer.prototype, \"rowNodeSorter\", void 0);\n    __decorate([\n        Autowired('sortController')\n    ], GridSerializer.prototype, \"sortController\", void 0);\n    GridSerializer = __decorate([\n        Bean(\"gridSerializer\")\n    ], GridSerializer);\n    return GridSerializer;\n}(BeanStub));\n\n// DO NOT UPDATE MANUALLY: Generated from script during build time\nvar VERSION = '29.3.5';\n\nvar CsvExportModule = {\n    version: VERSION,\n    moduleName: ModuleNames.CsvExportModule,\n    beans: [CsvCreator, GridSerializer]\n};\n\nvar LINE_SEPARATOR = '\\r\\n';\nvar XmlFactory = /** @class */ (function () {\n    function XmlFactory() {\n    }\n    XmlFactory.createHeader = function (headerElement) {\n        if (headerElement === void 0) { headerElement = {}; }\n        var headerStart = '<?';\n        var headerEnd = '?>';\n        var keys = ['version'];\n        if (!headerElement.version) {\n            headerElement.version = \"1.0\";\n        }\n        if (headerElement.encoding) {\n            keys.push('encoding');\n        }\n        if (headerElement.standalone) {\n            keys.push('standalone');\n        }\n        var att = keys.map(function (key) { return key + \"=\\\"\" + headerElement[key] + \"\\\"\"; }).join(' ');\n        return headerStart + \"xml \" + att + \" \" + headerEnd;\n    };\n    XmlFactory.createXml = function (xmlElement, booleanTransformer) {\n        var _this = this;\n        var props = '';\n        if (xmlElement.properties) {\n            if (xmlElement.properties.prefixedAttributes) {\n                xmlElement.properties.prefixedAttributes.forEach(function (prefixedSet) {\n                    Object.keys(prefixedSet.map).forEach(function (key) {\n                        props += _this.returnAttributeIfPopulated(prefixedSet.prefix + key, prefixedSet.map[key], booleanTransformer);\n                    });\n                });\n            }\n            if (xmlElement.properties.rawMap) {\n                Object.keys(xmlElement.properties.rawMap).forEach(function (key) {\n                    props += _this.returnAttributeIfPopulated(key, xmlElement.properties.rawMap[key], booleanTransformer);\n                });\n            }\n        }\n        var result = '<' + xmlElement.name + props;\n        if (!xmlElement.children && xmlElement.textNode == null) {\n            return result + '/>' + LINE_SEPARATOR;\n        }\n        if (xmlElement.textNode != null) {\n            return result + '>' + xmlElement.textNode + '</' + xmlElement.name + '>' + LINE_SEPARATOR;\n        }\n        result += '>' + LINE_SEPARATOR;\n        if (xmlElement.children) {\n            xmlElement.children.forEach(function (it) {\n                result += _this.createXml(it, booleanTransformer);\n            });\n        }\n        return result + '</' + xmlElement.name + '>' + LINE_SEPARATOR;\n    };\n    XmlFactory.returnAttributeIfPopulated = function (key, value, booleanTransformer) {\n        if (!value && value !== '' && value !== 0) {\n            return '';\n        }\n        var xmlValue = value;\n        if ((typeof (value) === 'boolean')) {\n            if (booleanTransformer) {\n                xmlValue = booleanTransformer(value);\n            }\n        }\n        return \" \" + key + \"=\\\"\" + xmlValue + \"\\\"\";\n    };\n    return XmlFactory;\n}());\n\nvar __values = (undefined && undefined.__values) || function(o) {\n    var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n    if (m) return m.call(o);\n    if (o && typeof o.length === \"number\") return {\n        next: function () {\n            if (o && i >= o.length) o = void 0;\n            return { value: o && o[i++], done: !o };\n        }\n    };\n    throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\n// table for crc calculation\n// from: https://referencesource.microsoft.com/#System/sys/System/IO/compression/Crc32Helper.cs,3b31978c7d7f7246,references\nvar crcTable = new Uint32Array([\n    0x00000000, 0x77073096, 0xee0e612c, 0x990951ba, 0x076dc419, 0x706af48f,\n    0xe963a535, 0x9e6495a3, 0x0edb8832, 0x79dcb8a4, 0xe0d5e91e, 0x97d2d988,\n    0x09b64c2b, 0x7eb17cbd, 0xe7b82d07, 0x90bf1d91, 0x1db71064, 0x6ab020f2,\n    0xf3b97148, 0x84be41de, 0x1adad47d, 0x6ddde4eb, 0xf4d4b551, 0x83d385c7,\n    0x136c9856, 0x646ba8c0, 0xfd62f97a, 0x8a65c9ec, 0x14015c4f, 0x63066cd9,\n    0xfa0f3d63, 0x8d080df5, 0x3b6e20c8, 0x4c69105e, 0xd56041e4, 0xa2677172,\n    0x3c03e4d1, 0x4b04d447, 0xd20d85fd, 0xa50ab56b, 0x35b5a8fa, 0x42b2986c,\n    0xdbbbc9d6, 0xacbcf940, 0x32d86ce3, 0x45df5c75, 0xdcd60dcf, 0xabd13d59,\n    0x26d930ac, 0x51de003a, 0xc8d75180, 0xbfd06116, 0x21b4f4b5, 0x56b3c423,\n    0xcfba9599, 0xb8bda50f, 0x2802b89e, 0x5f058808, 0xc60cd9b2, 0xb10be924,\n    0x2f6f7c87, 0x58684c11, 0xc1611dab, 0xb6662d3d, 0x76dc4190, 0x01db7106,\n    0x98d220bc, 0xefd5102a, 0x71b18589, 0x06b6b51f, 0x9fbfe4a5, 0xe8b8d433,\n    0x7807c9a2, 0x0f00f934, 0x9609a88e, 0xe10e9818, 0x7f6a0dbb, 0x086d3d2d,\n    0x91646c97, 0xe6635c01, 0x6b6b51f4, 0x1c6c6162, 0x856530d8, 0xf262004e,\n    0x6c0695ed, 0x1b01a57b, 0x8208f4c1, 0xf50fc457, 0x65b0d9c6, 0x12b7e950,\n    0x8bbeb8ea, 0xfcb9887c, 0x62dd1ddf, 0x15da2d49, 0x8cd37cf3, 0xfbd44c65,\n    0x4db26158, 0x3ab551ce, 0xa3bc0074, 0xd4bb30e2, 0x4adfa541, 0x3dd895d7,\n    0xa4d1c46d, 0xd3d6f4fb, 0x4369e96a, 0x346ed9fc, 0xad678846, 0xda60b8d0,\n    0x44042d73, 0x33031de5, 0xaa0a4c5f, 0xdd0d7cc9, 0x5005713c, 0x270241aa,\n    0xbe0b1010, 0xc90c2086, 0x5768b525, 0x206f85b3, 0xb966d409, 0xce61e49f,\n    0x5edef90e, 0x29d9c998, 0xb0d09822, 0xc7d7a8b4, 0x59b33d17, 0x2eb40d81,\n    0xb7bd5c3b, 0xc0ba6cad, 0xedb88320, 0x9abfb3b6, 0x03b6e20c, 0x74b1d29a,\n    0xead54739, 0x9dd277af, 0x04db2615, 0x73dc1683, 0xe3630b12, 0x94643b84,\n    0x0d6d6a3e, 0x7a6a5aa8, 0xe40ecf0b, 0x9309ff9d, 0x0a00ae27, 0x7d079eb1,\n    0xf00f9344, 0x8708a3d2, 0x1e01f268, 0x6906c2fe, 0xf762575d, 0x806567cb,\n    0x196c3671, 0x6e6b06e7, 0xfed41b76, 0x89d32be0, 0x10da7a5a, 0x67dd4acc,\n    0xf9b9df6f, 0x8ebeeff9, 0x17b7be43, 0x60b08ed5, 0xd6d6a3e8, 0xa1d1937e,\n    0x38d8c2c4, 0x4fdff252, 0xd1bb67f1, 0xa6bc5767, 0x3fb506dd, 0x48b2364b,\n    0xd80d2bda, 0xaf0a1b4c, 0x36034af6, 0x41047a60, 0xdf60efc3, 0xa867df55,\n    0x316e8eef, 0x4669be79, 0xcb61b38c, 0xbc66831a, 0x256fd2a0, 0x5268e236,\n    0xcc0c7795, 0xbb0b4703, 0x220216b9, 0x5505262f, 0xc5ba3bbe, 0xb2bd0b28,\n    0x2bb45a92, 0x5cb36a04, 0xc2d7ffa7, 0xb5d0cf31, 0x2cd99e8b, 0x5bdeae1d,\n    0x9b64c2b0, 0xec63f226, 0x756aa39c, 0x026d930a, 0x9c0906a9, 0xeb0e363f,\n    0x72076785, 0x05005713, 0x95bf4a82, 0xe2b87a14, 0x7bb12bae, 0x0cb61b38,\n    0x92d28e9b, 0xe5d5be0d, 0x7cdcefb7, 0x0bdbdf21, 0x86d3d2d4, 0xf1d4e242,\n    0x68ddb3f8, 0x1fda836e, 0x81be16cd, 0xf6b9265b, 0x6fb077e1, 0x18b74777,\n    0x88085ae6, 0xff0f6a70, 0x66063bca, 0x11010b5c, 0x8f659eff, 0xf862ae69,\n    0x616bffd3, 0x166ccf45, 0xa00ae278, 0xd70dd2ee, 0x4e048354, 0x3903b3c2,\n    0xa7672661, 0xd06016f7, 0x4969474d, 0x3e6e77db, 0xaed16a4a, 0xd9d65adc,\n    0x40df0b66, 0x37d83bf0, 0xa9bcae53, 0xdebb9ec5, 0x47b2cf7f, 0x30b5ffe9,\n    0xbdbdf21c, 0xcabac28a, 0x53b39330, 0x24b4a3a6, 0xbad03605, 0xcdd70693,\n    0x54de5729, 0x23d967bf, 0xb3667a2e, 0xc4614ab8, 0x5d681b02, 0x2a6f2b94,\n    0xb40bbe37, 0xc30c8ea1, 0x5a05df1b, 0x2d02ef8d\n]);\nvar ZipContainer = /** @class */ (function () {\n    function ZipContainer() {\n    }\n    ZipContainer.addFolders = function (paths) {\n        paths.forEach(this.addFolder.bind(this));\n    };\n    ZipContainer.addFolder = function (path) {\n        this.folders.push({\n            path: path,\n            created: new Date(),\n            isBase64: false\n        });\n    };\n    ZipContainer.addFile = function (path, content, isBase64) {\n        if (isBase64 === void 0) { isBase64 = false; }\n        this.files.push({\n            path: path,\n            created: new Date(),\n            content: content,\n            isBase64: isBase64\n        });\n    };\n    ZipContainer.getContent = function (mimeType) {\n        if (mimeType === void 0) { mimeType = 'application/zip'; }\n        var textOutput = this.buildFileStream();\n        var uInt8Output = this.buildUint8Array(textOutput);\n        this.clearStream();\n        return new Blob([uInt8Output], { type: mimeType });\n    };\n    ZipContainer.clearStream = function () {\n        this.folders = [];\n        this.files = [];\n    };\n    ZipContainer.buildFileStream = function (fData) {\n        var e_1, _a;\n        if (fData === void 0) { fData = ''; }\n        var totalFiles = this.folders.concat(this.files);\n        var len = totalFiles.length;\n        var foData = '';\n        var lL = 0;\n        var cL = 0;\n        try {\n            for (var totalFiles_1 = __values(totalFiles), totalFiles_1_1 = totalFiles_1.next(); !totalFiles_1_1.done; totalFiles_1_1 = totalFiles_1.next()) {\n                var currentFile = totalFiles_1_1.value;\n                var _b = this.getHeader(currentFile, lL), fileHeader = _b.fileHeader, folderHeader = _b.folderHeader, content = _b.content;\n                lL += fileHeader.length + content.length;\n                cL += folderHeader.length;\n                fData += fileHeader + content;\n                foData += folderHeader;\n            }\n        }\n        catch (e_1_1) { e_1 = { error: e_1_1 }; }\n        finally {\n            try {\n                if (totalFiles_1_1 && !totalFiles_1_1.done && (_a = totalFiles_1.return)) _a.call(totalFiles_1);\n            }\n            finally { if (e_1) throw e_1.error; }\n        }\n        var foEnd = this.buildFolderEnd(len, cL, lL);\n        return fData + foData + foEnd;\n    };\n    ZipContainer.getHeader = function (currentFile, offset) {\n        var content = currentFile.content, path = currentFile.path, created = currentFile.created, isBase64 = currentFile.isBase64;\n        var utf8_encode = _.utf8_encode, decToHex = _.decToHex;\n        var utfPath = utf8_encode(path);\n        var isUTF8 = utfPath !== path;\n        var time = this.convertTime(created);\n        var dt = this.convertDate(created);\n        var extraFields = '';\n        if (isUTF8) {\n            var uExtraFieldPath = decToHex(1, 1) + decToHex(this.getFromCrc32Table(utfPath), 4) + utfPath;\n            extraFields = \"\\x75\\x70\" + decToHex(uExtraFieldPath.length, 2) + uExtraFieldPath;\n        }\n        var _a = !content ? { size: 0, content: '' } : this.getConvertedContent(content, isBase64), size = _a.size, convertedContent = _a.content;\n        var header = '\\x0A\\x00' +\n            (isUTF8 ? '\\x00\\x08' : '\\x00\\x00') +\n            '\\x00\\x00' +\n            decToHex(time, 2) + // last modified time\n            decToHex(dt, 2) + // last modified date\n            decToHex(size ? this.getFromCrc32Table(convertedContent) : 0, 4) +\n            decToHex(size, 4) + // compressed size\n            decToHex(size, 4) + // uncompressed size\n            decToHex(utfPath.length, 2) + // file name length\n            decToHex(extraFields.length, 2); // extra field length\n        var fileHeader = 'PK\\x03\\x04' + header + utfPath + extraFields;\n        var folderHeader = 'PK\\x01\\x02' + // central header\n            '\\x14\\x00' +\n            header + // file header\n            '\\x00\\x00' +\n            '\\x00\\x00' +\n            '\\x00\\x00' +\n            (content ? '\\x00\\x00\\x00\\x00' : '\\x10\\x00\\x00\\x00') + // external file attributes\n            decToHex(offset, 4) + // relative offset of local header\n            utfPath + // file name\n            extraFields; // extra field\n        return { fileHeader: fileHeader, folderHeader: folderHeader, content: convertedContent || '' };\n    };\n    ZipContainer.getConvertedContent = function (content, isBase64) {\n        if (isBase64 === void 0) { isBase64 = false; }\n        if (isBase64) {\n            content = content.split(';base64,')[1];\n        }\n        content = isBase64 ? atob(content) : content;\n        return {\n            size: content.length,\n            content: content\n        };\n    };\n    ZipContainer.buildFolderEnd = function (tLen, cLen, lLen) {\n        var decToHex = _.decToHex;\n        return 'PK\\x05\\x06' + // central folder end\n            '\\x00\\x00' +\n            '\\x00\\x00' +\n            decToHex(tLen, 2) + // total number of entries in the central folder\n            decToHex(tLen, 2) + // total number of entries in the central folder\n            decToHex(cLen, 4) + // size of the central folder\n            decToHex(lLen, 4) + // central folder start offset\n            '\\x00\\x00';\n    };\n    ZipContainer.buildUint8Array = function (content) {\n        var uint8 = new Uint8Array(content.length);\n        for (var i = 0; i < uint8.length; i++) {\n            uint8[i] = content.charCodeAt(i);\n        }\n        return uint8;\n    };\n    ZipContainer.getFromCrc32Table = function (content) {\n        if (!content.length) {\n            return 0;\n        }\n        var size = content.length;\n        var iterable = new Uint8Array(size);\n        for (var i = 0; i < size; i++) {\n            iterable[i] = content.charCodeAt(i);\n        }\n        var crc = 0 ^ (-1);\n        var j = 0;\n        var k = 0;\n        var l = 0;\n        for (var i = 0; i < size; i++) {\n            j = iterable[i];\n            k = (crc ^ j) & 0xFF;\n            l = crcTable[k];\n            crc = (crc >>> 8) ^ l;\n        }\n        return crc ^ (-1);\n    };\n    ZipContainer.convertTime = function (date) {\n        var time = date.getHours();\n        time <<= 6;\n        time = time | date.getMinutes();\n        time <<= 5;\n        time = time | date.getSeconds() / 2;\n        return time;\n    };\n    ZipContainer.convertDate = function (date) {\n        var dt = date.getFullYear() - 1980;\n        dt <<= 4;\n        dt = dt | (date.getMonth() + 1);\n        dt <<= 5;\n        dt = dt | date.getDate();\n        return dt;\n    };\n    ZipContainer.folders = [];\n    ZipContainer.files = [];\n    return ZipContainer;\n}());\n\nvar AllCommunityModules = [ClientSideRowModelModule, InfiniteRowModelModule, CsvExportModule];\n\nModuleRegistry.registerModules(AllCommunityModules);\n\nexport { AbstractHeaderCellCtrl, AgAbstractField, AgAbstractLabel, AgCheckbox, AgDialog, AgGroupComponent, AgInputNumberField, AgInputRange, AgInputTextArea, AgInputTextField, AgMenuItemComponent, AgMenuList, AgMenuPanel, AgPanel, AgPickerField, AgPromise, AgPromiseStatus, AgRadioButton, AgSelect, AgSlider, AgStackComponentsRegistry, AgToggleButton, AlignedGridsService, AllCommunityModules, AnimateShowChangeCellRenderer, AnimateSlideCellRenderer, AnimationFrameService, AutoScrollService, AutoWidthCalculator, Autowired, BarColumnLabelPlacement, BaseComponentWrapper, BaseCreator, BaseGridSerializingSession, Bean, BeanStub, Beans, BodyDropPivotTarget, BodyDropTarget, CHART_TOOLBAR_ALLOW_LIST, CHART_TOOL_PANEL_ALLOW_LIST, CHART_TOOL_PANEL_MENU_OPTIONS, CellComp, CellCtrl, CellNavigationService, CellPositionUtils, CellRangeType, ChangedPath, CheckboxSelectionComponent, ClientSideRowModelModule, ClientSideRowModelSteps, ColDefUtil, Column, ColumnApi, ColumnFactory, ColumnGroup, ColumnKeyCreator, ColumnModel, ColumnUtils, Component, ComponentUtil, Context, CssClassApplier, CssClassManager, CsvCreator, CsvExportModule, CtrlsService, CustomTooltipFeature, DEFAULT_CHART_GROUPS, DateFilter, DisplayedGroupCreator, Downloader, DragAndDropService, DragService, DragSourceType, Environment, EventService, Events, ExcelFactoryMode, ExpressionService, FilterManager, FloatingFilterMapper, FocusService, GROUP_AUTO_COLUMN_ID, Grid, GridApi, GridBodyComp, GridBodyCtrl, GridComp, GridCoreCreator, GridCtrl, GridHeaderComp, GridHeaderCtrl, GridOptionsService, GridSerializer, GroupCellRenderer, GroupCellRendererCtrl, GroupInstanceIdCreator, HeaderCellCtrl, HeaderFilterCellComp, HeaderFilterCellCtrl, HeaderGroupCellCtrl, HeaderNavigationDirection, HeaderNavigationService, HeaderPositionUtils, HeaderRowComp, HeaderRowContainerComp, HeaderRowContainerCtrl, HeaderRowCtrl, HeaderRowType, HorizontalDirection, HorizontalResizeService, InfiniteRowModelModule, KeyCode, LargeTextCellEditor, LayoutCssClasses, LocaleService, Logger, LoggerFactory, ManagedFocusFeature, ModuleNames, ModuleRegistry, MouseEventService, MoveColumnFeature, NavigationService, NumberFilter, NumberSequence, Optional, PaginationProxy, PinnedRowModel, PopupComponent, PopupEditorWrapper, PopupService, PositionableFeature, PostConstruct, PreConstruct, PreDestroy, PropertyKeys, ProvidedColumnGroup, ProvidedFilter, Qualifier, QuerySelector, RefSelector, ResizeObserverService, RowAnimationCssClasses, RowContainerComp, RowContainerCtrl, RowContainerName, RowContainerType, RowCtrl, RowHighlightPosition, RowNode, RowNodeBlock, RowNodeBlockLoader, RowNodeSorter, RowPositionUtils, RowRenderer, RowType, ScalarFilter, ScrollVisibleService, SelectCellEditor, SelectableService, SelectionHandleType, ServerSideTransactionResultStatus, SetLeftFeature, SimpleFilter, SortController, SortIndicatorComp, StandardMenuFactory, StylingService, TabGuardClassNames, TabGuardComp, TabGuardCtrl, TabbedLayout, TemplateService, TextCellEditor, TextFilter, TextFloatingFilter, Timer, TouchListener, UserComponentFactory, UserComponentRegistry, ValueCache, ValueFormatterService, ValueService, VanillaFrameworkOverrides, VerticalDirection, VirtualList, XmlFactory, ZipContainer, _, __FORCE_MODULE_DETECTION, getRowContainerTypeForName, simpleHttpRequest };\n","/**\n          * @ag-grid-enterprise/all-modules - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue * @version v29.3.5\n          * @link https://www.ag-grid.com/\n          * @license Commercial\n          */\nimport { PreConstruct, Bean, BeanStub, Autowired, RefSelector, PostConstruct, Component, ModuleNames, _, Events, ChangedPath, Optional, CsvExportModule, KeyCode, EventService, Column, ProvidedColumnGroup, AgMenuList, AgMenuItemComponent, AgCheckbox, CssClassApplier, DragSourceType, DragAndDropService, TouchListener, AutoScrollService, VirtualList, PreDestroy, NumberSequence, RowNode, ManagedFocusFeature, PositionableFeature, AgSelect, AgPromise, TabGuardComp, AgInputTextField, ModuleRegistry, ExcelFactoryMode, XmlFactory, RowType, BaseGridSerializingSession, Downloader, BaseCreator, ZipContainer, GridSerializer, CsvCreator, AgGroupComponent, CellRangeType, AgAbstractField, AgRadioButton, AgToggleButton, AgAbstractLabel, AgSlider, DEFAULT_CHART_GROUPS, TabbedLayout, CHART_TOOLBAR_ALLOW_LIST, CHART_TOOL_PANEL_ALLOW_LIST, CHART_TOOL_PANEL_MENU_OPTIONS, AgPanel, AgDialog, CellCtrl, SelectionHandleType, AgPickerField, Grid, ProvidedFilter, PopupComponent, RowNodeBlock, ServerSideTransactionResultStatus, RowNodeBlockLoader, GROUP_AUTO_COLUMN_ID, TextFilter, AllCommunityModules } from 'ag-grid-community';\nexport * from 'ag-grid-community';\n\nvar MD5 = /** @class */ (function () {\n    function MD5() {\n        this.ieCompatibility = false;\n    }\n    MD5.prototype.init = function () {\n        this.ieCompatibility = (this.md5('hello') != '5d41402abc4b2a76b9719d911017c592');\n    };\n    MD5.prototype.md5cycle = function (x, k) {\n        var a = x[0], b = x[1], c = x[2], d = x[3];\n        a = this.ff(a, b, c, d, k[0], 7, -680876936);\n        d = this.ff(d, a, b, c, k[1], 12, -389564586);\n        c = this.ff(c, d, a, b, k[2], 17, 606105819);\n        b = this.ff(b, c, d, a, k[3], 22, -1044525330);\n        a = this.ff(a, b, c, d, k[4], 7, -176418897);\n        d = this.ff(d, a, b, c, k[5], 12, 1200080426);\n        c = this.ff(c, d, a, b, k[6], 17, -1473231341);\n        b = this.ff(b, c, d, a, k[7], 22, -45705983);\n        a = this.ff(a, b, c, d, k[8], 7, 1770035416);\n        d = this.ff(d, a, b, c, k[9], 12, -1958414417);\n        c = this.ff(c, d, a, b, k[10], 17, -42063);\n        b = this.ff(b, c, d, a, k[11], 22, -1990404162);\n        a = this.ff(a, b, c, d, k[12], 7, 1804603682);\n        d = this.ff(d, a, b, c, k[13], 12, -40341101);\n        c = this.ff(c, d, a, b, k[14], 17, -1502002290);\n        b = this.ff(b, c, d, a, k[15], 22, 1236535329);\n        a = this.gg(a, b, c, d, k[1], 5, -165796510);\n        d = this.gg(d, a, b, c, k[6], 9, -1069501632);\n        c = this.gg(c, d, a, b, k[11], 14, 643717713);\n        b = this.gg(b, c, d, a, k[0], 20, -373897302);\n        a = this.gg(a, b, c, d, k[5], 5, -701558691);\n        d = this.gg(d, a, b, c, k[10], 9, 38016083);\n        c = this.gg(c, d, a, b, k[15], 14, -660478335);\n        b = this.gg(b, c, d, a, k[4], 20, -405537848);\n        a = this.gg(a, b, c, d, k[9], 5, 568446438);\n        d = this.gg(d, a, b, c, k[14], 9, -1019803690);\n        c = this.gg(c, d, a, b, k[3], 14, -187363961);\n        b = this.gg(b, c, d, a, k[8], 20, 1163531501);\n        a = this.gg(a, b, c, d, k[13], 5, -1444681467);\n        d = this.gg(d, a, b, c, k[2], 9, -51403784);\n        c = this.gg(c, d, a, b, k[7], 14, 1735328473);\n        b = this.gg(b, c, d, a, k[12], 20, -1926607734);\n        a = this.hh(a, b, c, d, k[5], 4, -378558);\n        d = this.hh(d, a, b, c, k[8], 11, -2022574463);\n        c = this.hh(c, d, a, b, k[11], 16, 1839030562);\n        b = this.hh(b, c, d, a, k[14], 23, -35309556);\n        a = this.hh(a, b, c, d, k[1], 4, -1530992060);\n        d = this.hh(d, a, b, c, k[4], 11, 1272893353);\n        c = this.hh(c, d, a, b, k[7], 16, -155497632);\n        b = this.hh(b, c, d, a, k[10], 23, -1094730640);\n        a = this.hh(a, b, c, d, k[13], 4, 681279174);\n        d = this.hh(d, a, b, c, k[0], 11, -358537222);\n        c = this.hh(c, d, a, b, k[3], 16, -722521979);\n        b = this.hh(b, c, d, a, k[6], 23, 76029189);\n        a = this.hh(a, b, c, d, k[9], 4, -640364487);\n        d = this.hh(d, a, b, c, k[12], 11, -421815835);\n        c = this.hh(c, d, a, b, k[15], 16, 530742520);\n        b = this.hh(b, c, d, a, k[2], 23, -995338651);\n        a = this.ii(a, b, c, d, k[0], 6, -198630844);\n        d = this.ii(d, a, b, c, k[7], 10, 1126891415);\n        c = this.ii(c, d, a, b, k[14], 15, -1416354905);\n        b = this.ii(b, c, d, a, k[5], 21, -57434055);\n        a = this.ii(a, b, c, d, k[12], 6, 1700485571);\n        d = this.ii(d, a, b, c, k[3], 10, -1894986606);\n        c = this.ii(c, d, a, b, k[10], 15, -1051523);\n        b = this.ii(b, c, d, a, k[1], 21, -2054922799);\n        a = this.ii(a, b, c, d, k[8], 6, 1873313359);\n        d = this.ii(d, a, b, c, k[15], 10, -30611744);\n        c = this.ii(c, d, a, b, k[6], 15, -1560198380);\n        b = this.ii(b, c, d, a, k[13], 21, 1309151649);\n        a = this.ii(a, b, c, d, k[4], 6, -145523070);\n        d = this.ii(d, a, b, c, k[11], 10, -1120210379);\n        c = this.ii(c, d, a, b, k[2], 15, 718787259);\n        b = this.ii(b, c, d, a, k[9], 21, -343485551);\n        x[0] = this.add32(a, x[0]);\n        x[1] = this.add32(b, x[1]);\n        x[2] = this.add32(c, x[2]);\n        x[3] = this.add32(d, x[3]);\n    };\n    MD5.prototype.cmn = function (q, a, b, x, s, t) {\n        a = this.add32(this.add32(a, q), this.add32(x, t));\n        return this.add32((a << s) | (a >>> (32 - s)), b);\n    };\n    MD5.prototype.ff = function (a, b, c, d, x, s, t) {\n        return this.cmn((b & c) | ((~b) & d), a, b, x, s, t);\n    };\n    MD5.prototype.gg = function (a, b, c, d, x, s, t) {\n        return this.cmn((b & d) | (c & (~d)), a, b, x, s, t);\n    };\n    MD5.prototype.hh = function (a, b, c, d, x, s, t) {\n        return this.cmn(b ^ c ^ d, a, b, x, s, t);\n    };\n    MD5.prototype.ii = function (a, b, c, d, x, s, t) {\n        return this.cmn(c ^ (b | (~d)), a, b, x, s, t);\n    };\n    MD5.prototype.md51 = function (s) {\n        var n = s.length;\n        var state = [1732584193, -271733879, -1732584194, 271733878];\n        var i;\n        for (i = 64; i <= s.length; i += 64) {\n            this.md5cycle(state, this.md5blk(s.substring(i - 64, i)));\n        }\n        s = s.substring(i - 64);\n        var tail = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];\n        for (i = 0; i < s.length; i++) {\n            tail[i >> 2] |= s.charCodeAt(i) << ((i % 4) << 3);\n        }\n        tail[i >> 2] |= 0x80 << ((i % 4) << 3);\n        if (i > 55) {\n            this.md5cycle(state, tail);\n            for (i = 0; i < 16; i++) {\n                tail[i] = 0;\n            }\n        }\n        tail[14] = n * 8;\n        this.md5cycle(state, tail);\n        return state;\n    };\n    /* there needs to be support for Unicode here, * unless we pretend that we can redefine the MD-5\n     * algorithm for multi-byte characters (perhaps by adding every four 16-bit characters and\n     * shortening the sum to 32 bits). Otherwise I suthis.ggest performing MD-5 as if every character\n     * was two bytes--e.g., 0040 0025 = @%--but then how will an ordinary MD-5 sum be matched?\n     * There is no way to standardize text to something like UTF-8 before transformation; speed cost is\n     * utterly prohibitive. The JavaScript standard itself needs to look at this: it should start\n     * providing access to strings as preformed UTF-8 8-bit unsigned value arrays.\n     */\n    MD5.prototype.md5blk = function (s) {\n        var md5blks = [];\n        /* Andy King said do it this way. */\n        for (var i = 0; i < 64; i += 4) {\n            md5blks[i >> 2] = s.charCodeAt(i)\n                + (s.charCodeAt(i + 1) << 8)\n                + (s.charCodeAt(i + 2) << 16)\n                + (s.charCodeAt(i + 3) << 24);\n        }\n        return md5blks;\n    };\n    MD5.prototype.rhex = function (n) {\n        var hex_chr = '0123456789abcdef'.split('');\n        var s = '', j = 0;\n        for (; j < 4; j++) {\n            s += hex_chr[(n >> (j * 8 + 4)) & 0x0F]\n                + hex_chr[(n >> (j * 8)) & 0x0F];\n        }\n        return s;\n    };\n    MD5.prototype.hex = function (x) {\n        for (var i = 0; i < x.length; i++) {\n            x[i] = this.rhex(x[i]);\n        }\n        return x.join('');\n    };\n    MD5.prototype.md5 = function (s) {\n        return this.hex(this.md51(s));\n    };\n    MD5.prototype.add32 = function (a, b) {\n        return this.ieCompatibility ? this.add32Compat(a, b) : this.add32Std(a, b);\n    };\n    /* this function is much faster, so if possible we use it. Some IEs are the only ones I know of that\n     need the idiotic second function, generated by an if clause.  */\n    MD5.prototype.add32Std = function (a, b) {\n        return (a + b) & 0xFFFFFFFF;\n    };\n    MD5.prototype.add32Compat = function (x, y) {\n        var lsw = (x & 0xFFFF) + (y & 0xFFFF), msw = (x >> 16) + (y >> 16) + (lsw >> 16);\n        return (msw << 16) | (lsw & 0xFFFF);\n    };\n    return MD5;\n}());\n\nvar __read$1c = (undefined && undefined.__read) || function (o, n) {\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n    if (!m) return o;\n    var i = m.call(o), r, ar = [], e;\n    try {\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n    }\n    catch (error) { e = { error: error }; }\n    finally {\n        try {\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\n        }\n        finally { if (e) throw e.error; }\n    }\n    return ar;\n};\n// move to general utils\nfunction missingOrEmpty(value) {\n    return value == null || value.length === 0;\n}\nfunction exists(value, allowEmptyString) {\n    if (allowEmptyString === void 0) { allowEmptyString = false; }\n    return value != null && (value !== '' || allowEmptyString);\n}\nvar LicenseManager = /** @class */ (function () {\n    function LicenseManager(document) {\n        this.watermarkMessage = undefined;\n        this.document = document;\n        this.md5 = new MD5();\n        this.md5.init();\n    }\n    LicenseManager.prototype.validateLicense = function () {\n        if (missingOrEmpty(LicenseManager.licenseKey)) {\n            if (!this.isWebsiteUrl()) {\n                this.outputMissingLicenseKey();\n            }\n        }\n        else if (LicenseManager.licenseKey.length > 32) {\n            if (LicenseManager.licenseKey.indexOf(\"For_Trialing_ag-Grid_Only\") !== -1) {\n                this.outputInvalidLicenseKey();\n            }\n            else {\n                var _a = LicenseManager.extractLicenseComponents(LicenseManager.licenseKey), md5 = _a.md5, license = _a.license, version = _a.version, isTrial = _a.isTrial;\n                if (md5 === this.md5.md5(license)) {\n                    if (exists(version) && version) {\n                        this.validateLicenseKeyForVersion(version, !!isTrial, license);\n                    }\n                    else {\n                        this.validateLegacyKey(license);\n                    }\n                }\n                else {\n                    this.outputInvalidLicenseKey();\n                }\n            }\n        }\n        else {\n            this.outputInvalidLicenseKey();\n        }\n    };\n    LicenseManager.extractExpiry = function (license) {\n        var restrictionHashed = license.substring(license.lastIndexOf('_') + 1, license.length);\n        return new Date(parseInt(LicenseManager.decode(restrictionHashed), 10));\n    };\n    LicenseManager.extractLicenseComponents = function (licenseKey) {\n        // when users copy the license key from a PDF extra zero width characters are sometimes copied too\n        // carriage returns and line feeds are problematic too\n        // all of which causes license key validation to fail - strip these out\n        var cleanedLicenseKey = licenseKey.replace(/[\\u200B-\\u200D\\uFEFF]/g, '');\n        cleanedLicenseKey = cleanedLicenseKey.replace(/\\r?\\n|\\r/g, '');\n        var hashStart = cleanedLicenseKey.length - 32;\n        var md5 = cleanedLicenseKey.substring(hashStart);\n        var license = cleanedLicenseKey.substring(0, hashStart);\n        var _a = __read$1c(LicenseManager.extractBracketedInformation(cleanedLicenseKey), 2), version = _a[0], isTrial = _a[1];\n        return { md5: md5, license: license, version: version, isTrial: isTrial };\n    };\n    LicenseManager.prototype.getLicenseDetails = function (licenseKey) {\n        var _a = LicenseManager.extractLicenseComponents(licenseKey), md5 = _a.md5, license = _a.license, version = _a.version, isTrial = _a.isTrial;\n        var valid = (md5 === this.md5.md5(license)) && licenseKey.indexOf(\"For_Trialing_ag-Grid_Only\") === -1;\n        var trialExpired = null;\n        var expiry = null;\n        if (valid) {\n            expiry = LicenseManager.extractExpiry(license);\n            valid = !isNaN(expiry.getTime());\n            if (isTrial) {\n                var now = new Date();\n                trialExpired = (expiry < now);\n            }\n        }\n        return {\n            licenseKey: licenseKey,\n            valid: valid,\n            expiry: valid ? LicenseManager.formatDate(expiry) : null,\n            version: version ? version : 'legacy',\n            isTrial: isTrial,\n            trialExpired: trialExpired\n        };\n    };\n    LicenseManager.prototype.isDisplayWatermark = function () {\n        return !this.isLocalhost() && !this.isWebsiteUrl() && !missingOrEmpty(this.watermarkMessage);\n    };\n    LicenseManager.prototype.getWatermarkMessage = function () {\n        return this.watermarkMessage || '';\n    };\n    LicenseManager.prototype.getHostname = function () {\n        var win = (this.document.defaultView || window);\n        var loc = win.location;\n        var _a = loc.hostname, hostname = _a === void 0 ? '' : _a;\n        return hostname;\n    };\n    LicenseManager.prototype.isWebsiteUrl = function () {\n        var hostname = this.getHostname();\n        return hostname.match(/^((?:\\w+\\.)?ag-grid\\.com)$/) !== null;\n    };\n    LicenseManager.prototype.isLocalhost = function () {\n        var hostname = this.getHostname();\n        return hostname.match(/^(?:127\\.0\\.0\\.1|localhost)$/) !== null;\n    };\n    LicenseManager.formatDate = function (date) {\n        var monthNames = [\n            'January', 'February', 'March',\n            'April', 'May', 'June', 'July',\n            'August', 'September', 'October',\n            'November', 'December'\n        ];\n        var day = date.getDate();\n        var monthIndex = date.getMonth();\n        var year = date.getFullYear();\n        return day + ' ' + monthNames[monthIndex] + ' ' + year;\n    };\n    LicenseManager.getGridReleaseDate = function () {\n        return new Date(parseInt(LicenseManager.decode(LicenseManager.RELEASE_INFORMATION), 10));\n    };\n    LicenseManager.decode = function (input) {\n        var keystr = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';\n        var t = '';\n        var n, r, i;\n        var s, o, u, a;\n        var f = 0;\n        var e = input.replace(/[^A-Za-z0-9+/=]/g, '');\n        while (f < e.length) {\n            s = keystr.indexOf(e.charAt(f++));\n            o = keystr.indexOf(e.charAt(f++));\n            u = keystr.indexOf(e.charAt(f++));\n            a = keystr.indexOf(e.charAt(f++));\n            n = s << 2 | o >> 4;\n            r = (o & 15) << 4 | u >> 2;\n            i = (u & 3) << 6 | a;\n            t = t + String.fromCharCode(n);\n            if (u != 64) {\n                t = t + String.fromCharCode(r);\n            }\n            if (a != 64) {\n                t = t + String.fromCharCode(i);\n            }\n        }\n        t = LicenseManager.utf8_decode(t);\n        return t;\n    };\n    LicenseManager.utf8_decode = function (input) {\n        input = input.replace(/rn/g, 'n');\n        var t = '';\n        for (var n = 0; n < input.length; n++) {\n            var r = input.charCodeAt(n);\n            if (r < 128) {\n                t += String.fromCharCode(r);\n            }\n            else if (r > 127 && r < 2048) {\n                t += String.fromCharCode(r >> 6 | 192);\n                t += String.fromCharCode(r & 63 | 128);\n            }\n            else {\n                t += String.fromCharCode(r >> 12 | 224);\n                t += String.fromCharCode(r >> 6 & 63 | 128);\n                t += String.fromCharCode(r & 63 | 128);\n            }\n        }\n        return t;\n    };\n    LicenseManager.setLicenseKey = function (licenseKey) {\n        this.licenseKey = licenseKey;\n    };\n    LicenseManager.extractBracketedInformation = function (licenseKey) {\n        var matches = licenseKey.split('[')\n            .filter(function (v) {\n            return v.indexOf(']') > -1;\n        })\n            .map(function (value) {\n            return value.split(']')[0];\n        });\n        if (!matches || matches.length === 0) {\n            return [null, null];\n        }\n        var isTrial = matches.filter(function (match) { return match === 'TRIAL'; }).length === 1;\n        var version = matches.filter(function (match) { return match.indexOf(\"v\") === 0; }).map(function (match) { return match.replace(/^v/, \"\"); })[0];\n        return [version, isTrial];\n    };\n    LicenseManager.prototype.validateLicenseKeyForVersion = function (version, isTrial, license) {\n        if (version !== '2') {\n            return;\n        }\n        if (isTrial) {\n            this.validateForTrial(license);\n        }\n        else {\n            this.validateLegacyKey(license);\n        }\n    };\n    LicenseManager.prototype.validateLegacyKey = function (license) {\n        var gridReleaseDate = LicenseManager.getGridReleaseDate();\n        var expiry = LicenseManager.extractExpiry(license);\n        var valid = false;\n        var current = false;\n        if (!isNaN(expiry.getTime())) {\n            valid = true;\n            current = (gridReleaseDate < expiry);\n        }\n        if (!valid) {\n            this.outputInvalidLicenseKey();\n        }\n        else if (!current) {\n            var formattedExpiryDate = LicenseManager.formatDate(expiry);\n            var formattedReleaseDate = LicenseManager.formatDate(gridReleaseDate);\n            this.outputIncompatibleVersion(formattedExpiryDate, formattedReleaseDate);\n        }\n    };\n    LicenseManager.prototype.validateForTrial = function (license) {\n        var expiry = LicenseManager.extractExpiry(license);\n        var now = new Date();\n        var valid = false;\n        var current = false;\n        if (!isNaN(expiry.getTime())) {\n            valid = true;\n            current = (expiry > now);\n        }\n        if (!valid) {\n            this.outputInvalidLicenseKey();\n        }\n        else if (!current) {\n            var formattedExpiryDate = LicenseManager.formatDate(expiry);\n            this.outputExpiredTrialKey(formattedExpiryDate);\n        }\n    };\n    LicenseManager.prototype.outputInvalidLicenseKey = function () {\n        console.error('*****************************************************************************************************************');\n        console.error('***************************************** AG Grid Enterprise License ********************************************');\n        console.error('********************************************* Invalid License ***************************************************');\n        console.error('* Your license for AG Grid Enterprise is not valid - please contact info@ag-grid.com to obtain a valid license. *');\n        console.error('*****************************************************************************************************************');\n        console.error('*****************************************************************************************************************');\n        this.watermarkMessage = \"Invalid License\";\n    };\n    LicenseManager.prototype.outputExpiredTrialKey = function (formattedExpiryDate) {\n        console.error('****************************************************************************************************************');\n        console.error('***************************************** AG Grid Enterprise License *******************************************');\n        console.error('*****************************************   Trial Period Expired.    *******************************************');\n        console.error(\"* Your license for AG Grid Enterprise expired on \" + formattedExpiryDate + \".                                                *\");\n        console.error('* Please email info@ag-grid.com to purchase a license.                                                         *');\n        console.error('****************************************************************************************************************');\n        console.error('****************************************************************************************************************');\n        this.watermarkMessage = \"Trial Period Expired\";\n    };\n    LicenseManager.prototype.outputMissingLicenseKey = function () {\n        console.error('****************************************************************************************************************');\n        console.error('***************************************** AG Grid Enterprise License *******************************************');\n        console.error('****************************************** License Key Not Found ***********************************************');\n        console.error('* All AG Grid Enterprise features are unlocked.                                                                *');\n        console.error('* This is an evaluation only version, it is not licensed for development projects intended for production.     *');\n        console.error('* If you want to hide the watermark, please email info@ag-grid.com for a trial license.                        *');\n        console.error('****************************************************************************************************************');\n        console.error('****************************************************************************************************************');\n        this.watermarkMessage = \"For Trial Use Only\";\n    };\n    LicenseManager.prototype.outputIncompatibleVersion = function (formattedExpiryDate, formattedReleaseDate) {\n        console.error('****************************************************************************************************************************');\n        console.error('****************************************************************************************************************************');\n        console.error('*                                             AG Grid Enterprise License                                                   *');\n        console.error('*                           License not compatible with installed version of AG Grid Enterprise.                           *');\n        console.error('*                                                                                                                          *');\n        console.error(\"* Your AG Grid License entitles you to all versions of AG Grid that we release within the time covered by your license     *\");\n        console.error(\"* - typically we provide one year licenses which entitles you to all releases / updates of AG Grid within that year.       *\");\n        console.error(\"* Your license has an end (expiry) date which stops the license key working with versions of AG Grid released after the    *\");\n        console.error(\"* license end date. The license key that you have expires on \" + formattedExpiryDate + \", however the version of AG Grid you    *\");\n        console.error(\"* are trying to use was released on \" + formattedReleaseDate + \".                                                               *\");\n        console.error('*                                                                                                                          *');\n        console.error('* Please contact info@ag-grid.com to renew your subscription to new versions and get a new license key to work with this   *');\n        console.error('* version of AG Grid.                                                                                                      *');\n        console.error('****************************************************************************************************************************');\n        console.error('****************************************************************************************************************************');\n        this.watermarkMessage = \"License Expired\";\n    };\n    LicenseManager.RELEASE_INFORMATION = 'MTY4Mzg5NTUzNDI5OA==';\n    return LicenseManager;\n}());\n\nvar __extends$3l = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$2w = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar GridLicenseManager = /** @class */ (function (_super) {\n    __extends$3l(GridLicenseManager, _super);\n    function GridLicenseManager() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    GridLicenseManager.prototype.validateLicense = function () {\n        this.licenseManager = new LicenseManager(this.gridOptionsService.getDocument());\n        this.licenseManager.validateLicense();\n    };\n    GridLicenseManager.getLicenseDetails = function (licenseKey) {\n        return new LicenseManager(null).getLicenseDetails(licenseKey);\n    };\n    GridLicenseManager.prototype.isDisplayWatermark = function () {\n        return this.licenseManager.isDisplayWatermark();\n    };\n    GridLicenseManager.prototype.getWatermarkMessage = function () {\n        return this.licenseManager.getWatermarkMessage();\n    };\n    GridLicenseManager.setLicenseKey = function (licenseKey) {\n        LicenseManager.setLicenseKey(licenseKey);\n    };\n    __decorate$2w([\n        PreConstruct\n    ], GridLicenseManager.prototype, \"validateLicense\", null);\n    GridLicenseManager = __decorate$2w([\n        Bean('licenseManager')\n    ], GridLicenseManager);\n    return GridLicenseManager;\n}(BeanStub));\n\nvar __extends$3k = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$2v = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar WatermarkComp = /** @class */ (function (_super) {\n    __extends$3k(WatermarkComp, _super);\n    function WatermarkComp() {\n        return _super.call(this, \"<div class=\\\"ag-watermark\\\">\\n                    <div ref=\\\"eLicenseTextRef\\\" class=\\\"ag-watermark-text\\\"></div>\\n               </div>\") || this;\n    }\n    WatermarkComp.prototype.postConstruct = function () {\n        var _this = this;\n        var show = this.shouldDisplayWatermark();\n        this.setDisplayed(show);\n        if (show) {\n            this.eLicenseTextRef.innerText = this.licenseManager.getWatermarkMessage();\n            window.setTimeout(function () { return _this.addCssClass('ag-opacity-zero'); }, 0);\n            window.setTimeout(function () { return _this.setDisplayed(false); }, 5000);\n        }\n    };\n    WatermarkComp.prototype.shouldDisplayWatermark = function () {\n        var eDocument = this.gridOptionsService.getDocument();\n        var win = (eDocument.defaultView || window);\n        var loc = win.location;\n        var pathname = loc.pathname;\n        var isDisplayWatermark = this.licenseManager.isDisplayWatermark();\n        var isForceWatermark = pathname ? pathname.indexOf('forceWatermark') !== -1 : false;\n        return isForceWatermark || isDisplayWatermark;\n    };\n    __decorate$2v([\n        Autowired('licenseManager')\n    ], WatermarkComp.prototype, \"licenseManager\", void 0);\n    __decorate$2v([\n        RefSelector('eLicenseTextRef')\n    ], WatermarkComp.prototype, \"eLicenseTextRef\", void 0);\n    __decorate$2v([\n        PostConstruct\n    ], WatermarkComp.prototype, \"postConstruct\", null);\n    return WatermarkComp;\n}(Component));\n\n// DO NOT UPDATE MANUALLY: Generated from script during build time\nvar VERSION$i = '29.3.5';\n\nvar EnterpriseCoreModule = {\n    version: VERSION$i,\n    moduleName: ModuleNames.EnterpriseCoreModule,\n    beans: [GridLicenseManager],\n    agStackComponents: [\n        { componentName: 'AgWatermark', componentClass: WatermarkComp }\n    ]\n};\n\nvar __extends$3j = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$2u = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __values$D = (undefined && undefined.__values) || function(o) {\n    var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n    if (m) return m.call(o);\n    if (o && typeof o.length === \"number\") return {\n        next: function () {\n            if (o && i >= o.length) o = void 0;\n            return { value: o && o[i++], done: !o };\n        }\n    };\n    throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\n// Matches value in changeDetectionService\nvar SOURCE_PASTE = 'paste';\nvar EXPORT_TYPE_DRAG_COPY = 'dragCopy';\nvar EXPORT_TYPE_CLIPBOARD = 'clipboard';\nvar CellClearType;\n(function (CellClearType) {\n    CellClearType[CellClearType[\"CellRange\"] = 0] = \"CellRange\";\n    CellClearType[CellClearType[\"SelectedRows\"] = 1] = \"SelectedRows\";\n    CellClearType[CellClearType[\"FocusedCell\"] = 2] = \"FocusedCell\";\n})(CellClearType || (CellClearType = {}));\nvar ClipboardService = /** @class */ (function (_super) {\n    __extends$3j(ClipboardService, _super);\n    function ClipboardService() {\n        var _this = _super !== null && _super.apply(this, arguments) || this;\n        _this.lastPasteOperationTime = 0;\n        _this.navigatorApiFailed = false;\n        return _this;\n    }\n    ClipboardService_1 = ClipboardService;\n    ClipboardService.prototype.init = function () {\n        var _this = this;\n        this.logger = this.loggerFactory.create('ClipboardService');\n        if (this.rowModel.getType() === 'clientSide') {\n            this.clientSideRowModel = this.rowModel;\n        }\n        this.ctrlsService.whenReady(function (p) {\n            _this.gridCtrl = p.gridCtrl;\n        });\n    };\n    ClipboardService.prototype.pasteFromClipboard = function () {\n        var _this = this;\n        this.logger.log('pasteFromClipboard');\n        // Method 1 - native clipboard API, available in modern chrome browsers\n        var allowNavigator = !this.gridOptionsService.is('suppressClipboardApi');\n        // Some browsers (Firefox) do not allow Web Applications to read from\n        // the clipboard so verify if not only the ClipboardAPI is available,\n        // but also if the `readText` method is public.\n        if (allowNavigator && !this.navigatorApiFailed && navigator.clipboard && navigator.clipboard.readText) {\n            navigator.clipboard.readText()\n                .then(this.processClipboardData.bind(this))\n                .catch(function (e) {\n                _.doOnce(function () {\n                    console.warn(e);\n                    console.warn('AG Grid: Unable to use the Clipboard API (navigator.clipboard.readText()). ' +\n                        'The reason why it could not be used has been logged in the previous line. ' +\n                        'For this reason the grid has defaulted to using a workaround which doesn\\'t perform as well. ' +\n                        'Either fix why Clipboard API is blocked, OR stop this message from appearing by setting grid ' +\n                        'property suppressClipboardApi=true (which will default the grid to using the workaround rather than the API');\n                }, 'clipboardApiError');\n                _this.navigatorApiFailed = true;\n                _this.pasteFromClipboardLegacy();\n            });\n        }\n        else {\n            this.pasteFromClipboardLegacy();\n        }\n    };\n    ClipboardService.prototype.pasteFromClipboardLegacy = function () {\n        var _this = this;\n        // Method 2 - if modern API fails, the old school hack\n        var defaultPrevented = false;\n        var handlePasteEvent = function (e) {\n            var currentPastOperationTime = (new Date()).getTime();\n            if (currentPastOperationTime - _this.lastPasteOperationTime < 50) {\n                defaultPrevented = true;\n                e.preventDefault();\n            }\n            _this.lastPasteOperationTime = currentPastOperationTime;\n        };\n        this.executeOnTempElement(function (textArea) {\n            textArea.addEventListener('paste', handlePasteEvent);\n            textArea.focus({ preventScroll: true });\n        }, function (element) {\n            var data = element.value;\n            if (!defaultPrevented) {\n                _this.processClipboardData(data);\n            }\n            else {\n                _this.refocusLastFocusedCell();\n            }\n            element.removeEventListener('paste', handlePasteEvent);\n        });\n    };\n    ClipboardService.prototype.refocusLastFocusedCell = function () {\n        var focusedCell = this.focusService.getFocusedCell();\n        if (focusedCell) {\n            this.focusService.setFocusedCell({\n                rowIndex: focusedCell.rowIndex,\n                column: focusedCell.column,\n                rowPinned: focusedCell.rowPinned,\n                forceBrowserFocus: true\n            });\n        }\n    };\n    ClipboardService.prototype.getClipboardDelimiter = function () {\n        var delimiter = this.gridOptionsService.get('clipboardDelimiter');\n        return _.exists(delimiter) ? delimiter : '\\t';\n    };\n    ClipboardService.prototype.processClipboardData = function (data) {\n        var _this = this;\n        if (data == null) {\n            return;\n        }\n        var parsedData = ClipboardService_1.stringToArray(data, this.getClipboardDelimiter());\n        var userFunc = this.gridOptionsService.getCallback('processDataFromClipboard');\n        if (userFunc) {\n            parsedData = userFunc({ data: parsedData });\n        }\n        if (parsedData == null) {\n            return;\n        }\n        if (this.gridOptionsService.is('suppressLastEmptyLineOnPaste')) {\n            this.removeLastLineIfBlank(parsedData);\n        }\n        var pasteOperation = function (cellsToFlash, updatedRowNodes, focusedCell, changedPath) {\n            var rangeActive = _this.rangeService && _this.rangeService.isMoreThanOneCell();\n            var pasteIntoRange = rangeActive && !_this.hasOnlyOneValueToPaste(parsedData);\n            if (pasteIntoRange) {\n                _this.pasteIntoActiveRange(parsedData, cellsToFlash, updatedRowNodes, changedPath);\n            }\n            else {\n                _this.pasteStartingFromFocusedCell(parsedData, cellsToFlash, updatedRowNodes, focusedCell, changedPath);\n            }\n        };\n        this.doPasteOperation(pasteOperation);\n    };\n    // This will parse a delimited string into an array of arrays.\n    ClipboardService.stringToArray = function (strData, delimiter) {\n        if (delimiter === void 0) { delimiter = ','; }\n        var data = [];\n        var isNewline = function (char) { return char === '\\r' || char === '\\n'; };\n        var insideQuotedField = false;\n        if (strData === '') {\n            return [['']];\n        }\n        var _loop_1 = function (row, column, position) {\n            var previousChar = strData[position - 1];\n            var currentChar = strData[position];\n            var nextChar = strData[position + 1];\n            var ensureDataExists = function () {\n                if (!data[row]) {\n                    // create row if it doesn't exist\n                    data[row] = [];\n                }\n                if (!data[row][column]) {\n                    // create column if it doesn't exist\n                    data[row][column] = '';\n                }\n            };\n            ensureDataExists();\n            if (currentChar === '\"') {\n                if (insideQuotedField) {\n                    if (nextChar === '\"') {\n                        // unescape double quote\n                        data[row][column] += '\"';\n                        position++;\n                    }\n                    else {\n                        // exit quoted field\n                        insideQuotedField = false;\n                    }\n                    return out_row_1 = row, out_column_1 = column, out_position_1 = position, \"continue\";\n                }\n                else if (previousChar === undefined || previousChar === delimiter || isNewline(previousChar)) {\n                    // enter quoted field\n                    insideQuotedField = true;\n                    return out_row_1 = row, out_column_1 = column, out_position_1 = position, \"continue\";\n                }\n            }\n            if (!insideQuotedField) {\n                if (currentChar === delimiter) {\n                    // move to next column\n                    column++;\n                    ensureDataExists();\n                    return out_row_1 = row, out_column_1 = column, out_position_1 = position, \"continue\";\n                }\n                else if (isNewline(currentChar)) {\n                    // move to next row\n                    column = 0;\n                    row++;\n                    ensureDataExists();\n                    if (currentChar === '\\r' && nextChar === '\\n') {\n                        // skip over second newline character if it exists\n                        position++;\n                    }\n                    return out_row_1 = row, out_column_1 = column, out_position_1 = position, \"continue\";\n                }\n            }\n            // add current character to current column\n            data[row][column] += currentChar;\n            out_row_1 = row;\n            out_column_1 = column;\n            out_position_1 = position;\n        };\n        var out_row_1, out_column_1, out_position_1;\n        // iterate over each character, keep track of current row and column (of the returned array)\n        for (var row = 0, column = 0, position = 0; position < strData.length; position++) {\n            _loop_1(row, column, position);\n            row = out_row_1;\n            column = out_column_1;\n            position = out_position_1;\n        }\n        return data;\n    };\n    // common code to paste operations, e.g. paste to cell, paste to range, and copy range down\n    ClipboardService.prototype.doPasteOperation = function (pasteOperationFunc) {\n        var api = this.gridOptionsService.api;\n        var columnApi = this.gridOptionsService.columnApi;\n        var source = 'clipboard';\n        this.eventService.dispatchEvent({\n            type: Events.EVENT_PASTE_START,\n            api: api,\n            columnApi: columnApi,\n            source: source\n        });\n        var changedPath;\n        if (this.clientSideRowModel) {\n            var onlyChangedColumns = this.gridOptionsService.is('aggregateOnlyChangedColumns');\n            changedPath = new ChangedPath(onlyChangedColumns, this.clientSideRowModel.getRootNode());\n        }\n        var cellsToFlash = {};\n        var updatedRowNodes = [];\n        var focusedCell = this.focusService.getFocusedCell();\n        pasteOperationFunc(cellsToFlash, updatedRowNodes, focusedCell, changedPath);\n        if (changedPath) {\n            this.clientSideRowModel.doAggregate(changedPath);\n        }\n        this.rowRenderer.refreshCells();\n        this.dispatchFlashCells(cellsToFlash);\n        this.fireRowChanged(updatedRowNodes);\n        // if using the clipboard hack with a temp element, then the focus has been lost,\n        // so need to put it back. otherwise paste operation loosed focus on cell and keyboard\n        // navigation stops.\n        this.refocusLastFocusedCell();\n        var event = {\n            type: Events.EVENT_PASTE_END,\n            source: source\n        };\n        this.eventService.dispatchEvent(event);\n    };\n    ClipboardService.prototype.pasteIntoActiveRange = function (clipboardData, cellsToFlash, updatedRowNodes, changedPath) {\n        var _this = this;\n        // true if clipboard data can be evenly pasted into range, otherwise false\n        var abortRepeatingPasteIntoRows = this.getRangeSize() % clipboardData.length != 0;\n        var indexOffset = 0;\n        var dataRowIndex = 0;\n        var rowCallback = function (currentRow, rowNode, columns, index) {\n            var atEndOfClipboardData = index - indexOffset >= clipboardData.length;\n            if (atEndOfClipboardData) {\n                if (abortRepeatingPasteIntoRows) {\n                    return;\n                }\n                // increment offset and reset data index to repeat paste of data\n                indexOffset += dataRowIndex;\n                dataRowIndex = 0;\n            }\n            var currentRowData = clipboardData[index - indexOffset];\n            // otherwise we are not the first row, so copy\n            updatedRowNodes.push(rowNode);\n            var processCellFromClipboardFunc = _this.gridOptionsService.getCallback('processCellFromClipboard');\n            columns.forEach(function (column, idx) {\n                if (!column.isCellEditable(rowNode) || column.isSuppressPaste(rowNode)) {\n                    return;\n                }\n                // repeat data for columns we don't have data for - happens when to range is bigger than copied data range\n                if (idx >= currentRowData.length) {\n                    idx = idx % currentRowData.length;\n                }\n                var newValue = _this.processCell(rowNode, column, currentRowData[idx], EXPORT_TYPE_DRAG_COPY, processCellFromClipboardFunc);\n                rowNode.setDataValue(column, newValue, SOURCE_PASTE);\n                if (changedPath) {\n                    changedPath.addParentNode(rowNode.parent, [column]);\n                }\n                var rowIndex = currentRow.rowIndex, rowPinned = currentRow.rowPinned;\n                var cellId = _this.cellPositionUtils.createIdFromValues({ rowIndex: rowIndex, column: column, rowPinned: rowPinned });\n                cellsToFlash[cellId] = true;\n            });\n            dataRowIndex++;\n        };\n        this.iterateActiveRanges(false, rowCallback);\n    };\n    ClipboardService.prototype.pasteStartingFromFocusedCell = function (parsedData, cellsToFlash, updatedRowNodes, focusedCell, changedPath) {\n        if (!focusedCell) {\n            return;\n        }\n        var currentRow = { rowIndex: focusedCell.rowIndex, rowPinned: focusedCell.rowPinned };\n        var columnsToPasteInto = this.columnModel.getDisplayedColumnsStartingAt(focusedCell.column);\n        if (this.isPasteSingleValueIntoRange(parsedData)) {\n            this.pasteSingleValueIntoRange(parsedData, updatedRowNodes, cellsToFlash, changedPath);\n        }\n        else {\n            this.pasteMultipleValues(parsedData, currentRow, updatedRowNodes, columnsToPasteInto, cellsToFlash, EXPORT_TYPE_CLIPBOARD, changedPath);\n        }\n    };\n    // if range is active, and only one cell, then we paste this cell into all cells in the active range.\n    ClipboardService.prototype.isPasteSingleValueIntoRange = function (parsedData) {\n        return this.hasOnlyOneValueToPaste(parsedData)\n            && this.rangeService != null\n            && !this.rangeService.isEmpty();\n    };\n    ClipboardService.prototype.pasteSingleValueIntoRange = function (parsedData, updatedRowNodes, cellsToFlash, changedPath) {\n        var _this = this;\n        var value = parsedData[0][0];\n        var rowCallback = function (currentRow, rowNode, columns) {\n            updatedRowNodes.push(rowNode);\n            columns.forEach(function (column) {\n                return _this.updateCellValue(rowNode, column, value, cellsToFlash, EXPORT_TYPE_CLIPBOARD, changedPath);\n            });\n        };\n        this.iterateActiveRanges(false, rowCallback);\n    };\n    ClipboardService.prototype.hasOnlyOneValueToPaste = function (parsedData) {\n        return parsedData.length === 1 && parsedData[0].length === 1;\n    };\n    ClipboardService.prototype.copyRangeDown = function () {\n        var _this = this;\n        if (!this.rangeService || this.rangeService.isEmpty()) {\n            return;\n        }\n        var firstRowValues = [];\n        var pasteOperation = function (cellsToFlash, updatedRowNodes, focusedCell, changedPath) {\n            var processCellForClipboardFunc = _this.gridOptionsService.getCallback('processCellForClipboard');\n            var processCellFromClipboardFunc = _this.gridOptionsService.getCallback('processCellFromClipboard');\n            var rowCallback = function (currentRow, rowNode, columns) {\n                // take reference of first row, this is the one we will be using to copy from\n                if (!firstRowValues.length) {\n                    // two reasons for looping through columns\n                    columns.forEach(function (column) {\n                        // get the initial values to copy down\n                        var value = _this.processCell(rowNode, column, _this.valueService.getValue(column, rowNode), EXPORT_TYPE_DRAG_COPY, processCellForClipboardFunc);\n                        firstRowValues.push(value);\n                    });\n                }\n                else {\n                    // otherwise we are not the first row, so copy\n                    updatedRowNodes.push(rowNode);\n                    columns.forEach(function (column, index) {\n                        if (!column.isCellEditable(rowNode) || column.isSuppressPaste(rowNode)) {\n                            return;\n                        }\n                        var firstRowValue = _this.processCell(rowNode, column, firstRowValues[index], EXPORT_TYPE_DRAG_COPY, processCellFromClipboardFunc);\n                        rowNode.setDataValue(column, firstRowValue, SOURCE_PASTE);\n                        if (changedPath) {\n                            changedPath.addParentNode(rowNode.parent, [column]);\n                        }\n                        var rowIndex = currentRow.rowIndex, rowPinned = currentRow.rowPinned;\n                        var cellId = _this.cellPositionUtils.createIdFromValues({ rowIndex: rowIndex, column: column, rowPinned: rowPinned });\n                        cellsToFlash[cellId] = true;\n                    });\n                }\n            };\n            _this.iterateActiveRanges(true, rowCallback);\n        };\n        this.doPasteOperation(pasteOperation);\n    };\n    ClipboardService.prototype.removeLastLineIfBlank = function (parsedData) {\n        // remove last row if empty, excel puts empty last row in\n        var lastLine = _.last(parsedData);\n        var lastLineIsBlank = lastLine && lastLine.length === 1 && lastLine[0] === '';\n        if (lastLineIsBlank) {\n            // do not remove the last empty line when that is the only line pasted\n            if (parsedData.length === 1) {\n                return;\n            }\n            _.removeFromArray(parsedData, lastLine);\n        }\n    };\n    ClipboardService.prototype.fireRowChanged = function (rowNodes) {\n        var _this = this;\n        if (this.gridOptionsService.get('editType') !== 'fullRow') {\n            return;\n        }\n        rowNodes.forEach(function (rowNode) {\n            var event = {\n                type: Events.EVENT_ROW_VALUE_CHANGED,\n                node: rowNode,\n                data: rowNode.data,\n                rowIndex: rowNode.rowIndex,\n                rowPinned: rowNode.rowPinned\n            };\n            _this.eventService.dispatchEvent(event);\n        });\n    };\n    ClipboardService.prototype.pasteMultipleValues = function (clipboardGridData, currentRow, updatedRowNodes, columnsToPasteInto, cellsToFlash, type, changedPath) {\n        var _this = this;\n        var rowPointer = currentRow;\n        // if doing CSRM and NOT tree data, then it means groups are aggregates, which are read only,\n        // so we should skip them when doing paste operations.\n        var skipGroupRows = this.clientSideRowModel != null && !this.gridOptionsService.isTreeData();\n        var getNextGoodRowNode = function () {\n            while (true) {\n                if (!rowPointer) {\n                    return null;\n                }\n                var res = _this.rowPositionUtils.getRowNode(rowPointer);\n                // move to next row down for next set of values\n                rowPointer = _this.cellNavigationService.getRowBelow({ rowPinned: rowPointer.rowPinned, rowIndex: rowPointer.rowIndex });\n                // if no more rows, return null\n                if (res == null) {\n                    return null;\n                }\n                // skip details rows and footer rows, never paste into them as they don't hold data\n                var skipRow = res.detail || res.footer || (skipGroupRows && res.group);\n                // skipping row means we go into the next iteration of the while loop\n                if (!skipRow) {\n                    return res;\n                }\n            }\n        };\n        clipboardGridData.forEach(function (clipboardRowData) {\n            var rowNode = getNextGoodRowNode();\n            // if we have come to end of rows in grid, then skip\n            if (!rowNode) {\n                return;\n            }\n            clipboardRowData.forEach(function (value, index) {\n                return _this.updateCellValue(rowNode, columnsToPasteInto[index], value, cellsToFlash, type, changedPath);\n            });\n            updatedRowNodes.push(rowNode);\n        });\n    };\n    ClipboardService.prototype.updateCellValue = function (rowNode, column, value, cellsToFlash, type, changedPath) {\n        if (!rowNode ||\n            !column ||\n            !column.isCellEditable(rowNode) ||\n            column.isSuppressPaste(rowNode)) {\n            return;\n        }\n        var processedValue = this.processCell(rowNode, column, value, type, this.gridOptionsService.getCallback('processCellFromClipboard'));\n        rowNode.setDataValue(column, processedValue, SOURCE_PASTE);\n        var rowIndex = rowNode.rowIndex, rowPinned = rowNode.rowPinned;\n        var cellId = this.cellPositionUtils.createIdFromValues({ rowIndex: rowIndex, column: column, rowPinned: rowPinned });\n        cellsToFlash[cellId] = true;\n        if (changedPath) {\n            changedPath.addParentNode(rowNode.parent, [column]);\n        }\n    };\n    ClipboardService.prototype.copyToClipboard = function (params) {\n        if (params === void 0) { params = {}; }\n        this.copyOrCutToClipboard(params);\n    };\n    ClipboardService.prototype.cutToClipboard = function (params) {\n        if (params === void 0) { params = {}; }\n        if (this.gridOptionsService.is('suppressCutToClipboard')) {\n            return;\n        }\n        this.copyOrCutToClipboard(params, true);\n    };\n    ClipboardService.prototype.copyOrCutToClipboard = function (params, cut) {\n        var includeHeaders = params.includeHeaders, includeGroupHeaders = params.includeGroupHeaders;\n        this.logger.log(\"copyToClipboard: includeHeaders = \" + includeHeaders);\n        // don't override 'includeHeaders' if it has been explicitly set to 'false'\n        if (includeHeaders == null) {\n            includeHeaders = this.gridOptionsService.is('copyHeadersToClipboard');\n        }\n        if (includeGroupHeaders == null) {\n            includeGroupHeaders = this.gridOptionsService.is('copyGroupHeadersToClipboard');\n        }\n        var copyParams = { includeHeaders: includeHeaders, includeGroupHeaders: includeGroupHeaders };\n        var shouldCopyRows = !this.gridOptionsService.is('suppressCopyRowsToClipboard');\n        var cellClearType = null;\n        // Copy priority is Range > Row > Focus\n        if (this.rangeService && !this.rangeService.isEmpty() && !this.shouldSkipSingleCellRange()) {\n            this.copySelectedRangeToClipboard(copyParams);\n            cellClearType = CellClearType.CellRange;\n        }\n        else if (shouldCopyRows && !this.selectionService.isEmpty()) {\n            this.copySelectedRowsToClipboard(copyParams);\n            cellClearType = CellClearType.SelectedRows;\n        }\n        else if (this.focusService.isAnyCellFocused()) {\n            this.copyFocusedCellToClipboard(copyParams);\n            cellClearType = CellClearType.FocusedCell;\n        }\n        if (cut && cellClearType !== null) {\n            this.clearCellsAfterCopy(cellClearType);\n        }\n    };\n    ClipboardService.prototype.clearCellsAfterCopy = function (type) {\n        this.eventService.dispatchEvent({ type: Events.EVENT_KEY_SHORTCUT_CHANGED_CELL_START });\n        if (type === CellClearType.CellRange) {\n            this.rangeService.clearCellRangeCellValues(undefined, 'clipboardService');\n        }\n        else if (type === CellClearType.SelectedRows) {\n            this.clearSelectedRows();\n        }\n        else {\n            var focusedCell = this.focusService.getFocusedCell();\n            if (focusedCell == null) {\n                return;\n            }\n            var rowNode = this.rowPositionUtils.getRowNode(focusedCell);\n            if (rowNode) {\n                this.clearCellValue(rowNode, focusedCell.column);\n            }\n        }\n        this.eventService.dispatchEvent({ type: Events.EVENT_KEY_SHORTCUT_CHANGED_CELL_END });\n    };\n    ClipboardService.prototype.clearSelectedRows = function () {\n        var e_1, _a, e_2, _b;\n        var selected = this.selectionService.getSelectedNodes();\n        var columns = this.columnModel.getAllDisplayedColumns();\n        try {\n            for (var selected_1 = __values$D(selected), selected_1_1 = selected_1.next(); !selected_1_1.done; selected_1_1 = selected_1.next()) {\n                var row = selected_1_1.value;\n                try {\n                    for (var columns_1 = (e_2 = void 0, __values$D(columns)), columns_1_1 = columns_1.next(); !columns_1_1.done; columns_1_1 = columns_1.next()) {\n                        var col = columns_1_1.value;\n                        this.clearCellValue(row, col);\n                    }\n                }\n                catch (e_2_1) { e_2 = { error: e_2_1 }; }\n                finally {\n                    try {\n                        if (columns_1_1 && !columns_1_1.done && (_b = columns_1.return)) _b.call(columns_1);\n                    }\n                    finally { if (e_2) throw e_2.error; }\n                }\n            }\n        }\n        catch (e_1_1) { e_1 = { error: e_1_1 }; }\n        finally {\n            try {\n                if (selected_1_1 && !selected_1_1.done && (_a = selected_1.return)) _a.call(selected_1);\n            }\n            finally { if (e_1) throw e_1.error; }\n        }\n    };\n    ClipboardService.prototype.clearCellValue = function (rowNode, column) {\n        if (!column.isCellEditable(rowNode)) {\n            return;\n        }\n        rowNode.setDataValue(column, null, 'clipboardService');\n    };\n    ClipboardService.prototype.shouldSkipSingleCellRange = function () {\n        return this.gridOptionsService.is('suppressCopySingleCellRanges') && !this.rangeService.isMoreThanOneCell();\n    };\n    ClipboardService.prototype.iterateActiveRanges = function (onlyFirst, rowCallback, columnCallback) {\n        var _this = this;\n        if (!this.rangeService || this.rangeService.isEmpty()) {\n            return;\n        }\n        var cellRanges = this.rangeService.getCellRanges();\n        if (onlyFirst) {\n            this.iterateActiveRange(cellRanges[0], rowCallback, columnCallback, true);\n        }\n        else {\n            cellRanges.forEach(function (range, idx) { return _this.iterateActiveRange(range, rowCallback, columnCallback, idx === cellRanges.length - 1); });\n        }\n    };\n    ClipboardService.prototype.iterateActiveRange = function (range, rowCallback, columnCallback, isLastRange) {\n        if (!this.rangeService) {\n            return;\n        }\n        var currentRow = this.rangeService.getRangeStartRow(range);\n        var lastRow = this.rangeService.getRangeEndRow(range);\n        if (columnCallback && range.columns) {\n            columnCallback(range.columns);\n        }\n        var rangeIndex = 0;\n        var isLastRow = false;\n        // the currentRow could be missing if the user sets the active range manually, and sets a range\n        // that is outside of the grid (eg. sets range rows 0 to 100, but grid has only 20 rows).\n        while (!isLastRow && currentRow != null) {\n            var rowNode = this.rowPositionUtils.getRowNode(currentRow);\n            isLastRow = this.rowPositionUtils.sameRow(currentRow, lastRow);\n            rowCallback(currentRow, rowNode, range.columns, rangeIndex++, isLastRow && isLastRange);\n            currentRow = this.cellNavigationService.getRowBelow(currentRow);\n        }\n    };\n    ClipboardService.prototype.copySelectedRangeToClipboard = function (params) {\n        if (params === void 0) { params = {}; }\n        if (!this.rangeService || this.rangeService.isEmpty()) {\n            return;\n        }\n        var allRangesMerge = this.rangeService.areAllRangesAbleToMerge();\n        var _a = allRangesMerge ? this.buildDataFromMergedRanges(params) : this.buildDataFromRanges(params), data = _a.data, cellsToFlash = _a.cellsToFlash;\n        this.copyDataToClipboard(data);\n        this.dispatchFlashCells(cellsToFlash);\n    };\n    ClipboardService.prototype.buildDataFromMergedRanges = function (params) {\n        var _this = this;\n        var columnsSet = new Set();\n        var ranges = this.rangeService.getCellRanges();\n        var rowPositionsMap = new Map();\n        var allRowPositions = [];\n        var allCellsToFlash = {};\n        ranges.forEach(function (range) {\n            range.columns.forEach(function (col) { return columnsSet.add(col); });\n            var _a = _this.getRangeRowPositionsAndCellsToFlash(range), rowPositions = _a.rowPositions, cellsToFlash = _a.cellsToFlash;\n            rowPositions.forEach(function (rowPosition) {\n                var rowPositionAsString = rowPosition.rowIndex + \"-\" + (rowPosition.rowPinned || 'null');\n                if (!rowPositionsMap.get(rowPositionAsString)) {\n                    rowPositionsMap.set(rowPositionAsString, true);\n                    allRowPositions.push(rowPosition);\n                }\n            });\n            Object.assign(allCellsToFlash, cellsToFlash);\n        });\n        var allColumns = this.columnModel.getAllDisplayedColumns();\n        var exportedColumns = Array.from(columnsSet);\n        exportedColumns.sort(function (a, b) {\n            var posA = allColumns.indexOf(a);\n            var posB = allColumns.indexOf(b);\n            return posA - posB;\n        });\n        var data = this.buildExportParams({\n            columns: exportedColumns,\n            rowPositions: allRowPositions,\n            includeHeaders: params.includeHeaders,\n            includeGroupHeaders: params.includeGroupHeaders,\n        });\n        return { data: data, cellsToFlash: allCellsToFlash };\n    };\n    ClipboardService.prototype.buildDataFromRanges = function (params) {\n        var _this = this;\n        var ranges = this.rangeService.getCellRanges();\n        var data = [];\n        var allCellsToFlash = {};\n        ranges.forEach(function (range) {\n            var _a = _this.getRangeRowPositionsAndCellsToFlash(range), rowPositions = _a.rowPositions, cellsToFlash = _a.cellsToFlash;\n            Object.assign(allCellsToFlash, cellsToFlash);\n            data.push(_this.buildExportParams({\n                columns: range.columns,\n                rowPositions: rowPositions,\n                includeHeaders: params.includeHeaders,\n                includeGroupHeaders: params.includeGroupHeaders,\n            }));\n        });\n        return { data: data.join('\\n'), cellsToFlash: allCellsToFlash };\n    };\n    ClipboardService.prototype.getRangeRowPositionsAndCellsToFlash = function (range) {\n        var _this = this;\n        var rowPositions = [];\n        var cellsToFlash = {};\n        var startRow = this.rangeService.getRangeStartRow(range);\n        var lastRow = this.rangeService.getRangeEndRow(range);\n        var node = startRow;\n        while (node) {\n            rowPositions.push(node);\n            range.columns.forEach(function (column) {\n                var _a = node, rowIndex = _a.rowIndex, rowPinned = _a.rowPinned;\n                var cellId = _this.cellPositionUtils.createIdFromValues({ rowIndex: rowIndex, column: column, rowPinned: rowPinned });\n                cellsToFlash[cellId] = true;\n            });\n            if (this.rowPositionUtils.sameRow(node, lastRow)) {\n                break;\n            }\n            node = this.cellNavigationService.getRowBelow(node);\n        }\n        return { rowPositions: rowPositions, cellsToFlash: cellsToFlash };\n    };\n    ClipboardService.prototype.copyFocusedCellToClipboard = function (params) {\n        var _a;\n        if (params === void 0) { params = {}; }\n        var focusedCell = this.focusService.getFocusedCell();\n        if (focusedCell == null) {\n            return;\n        }\n        var cellId = this.cellPositionUtils.createId(focusedCell);\n        var currentRow = { rowPinned: focusedCell.rowPinned, rowIndex: focusedCell.rowIndex };\n        var column = focusedCell.column;\n        var data = this.buildExportParams({\n            columns: [column],\n            rowPositions: [currentRow],\n            includeHeaders: params.includeHeaders,\n            includeGroupHeaders: params.includeGroupHeaders\n        });\n        this.copyDataToClipboard(data);\n        this.dispatchFlashCells((_a = {}, _a[cellId] = true, _a));\n    };\n    ClipboardService.prototype.copySelectedRowsToClipboard = function (params) {\n        if (params === void 0) { params = {}; }\n        var columnKeys = params.columnKeys, includeHeaders = params.includeHeaders, includeGroupHeaders = params.includeGroupHeaders;\n        var data = this.buildExportParams({\n            columns: columnKeys,\n            includeHeaders: includeHeaders,\n            includeGroupHeaders: includeGroupHeaders\n        });\n        this.copyDataToClipboard(data);\n    };\n    ClipboardService.prototype.buildExportParams = function (params) {\n        var _this = this;\n        var columns = params.columns, rowPositions = params.rowPositions, _a = params.includeHeaders, includeHeaders = _a === void 0 ? false : _a, _b = params.includeGroupHeaders, includeGroupHeaders = _b === void 0 ? false : _b;\n        var exportParams = {\n            columnKeys: columns,\n            rowPositions: rowPositions,\n            skipColumnHeaders: !includeHeaders,\n            skipColumnGroupHeaders: !includeGroupHeaders,\n            suppressQuotes: true,\n            columnSeparator: this.getClipboardDelimiter(),\n            onlySelected: !rowPositions,\n            processCellCallback: this.gridOptionsService.getCallback('processCellForClipboard'),\n            processRowGroupCallback: function (params) { return _this.processRowGroupCallback(params); },\n            processHeaderCallback: this.gridOptionsService.getCallback('processHeaderForClipboard'),\n            processGroupHeaderCallback: this.gridOptionsService.getCallback('processGroupHeaderForClipboard')\n        };\n        return this.csvCreator.getDataAsCsv(exportParams, true);\n    };\n    ClipboardService.prototype.processRowGroupCallback = function (params) {\n        var node = params.node;\n        var key = node.key;\n        var value = key != null ? key : '';\n        if (params.node.footer) {\n            var suffix = '';\n            if (key && key.length) {\n                suffix = \" \" + key;\n            }\n            value = \"Total\" + suffix;\n        }\n        var processCellForClipboard = this.gridOptionsService.getCallback('processCellForClipboard');\n        if (processCellForClipboard) {\n            var column = node.rowGroupColumn;\n            if (!column && node.footer && node.level === -1) {\n                column = this.columnModel.getRowGroupColumns()[0];\n            }\n            return processCellForClipboard({\n                value: value,\n                node: node,\n                column: column,\n                type: 'clipboard'\n            });\n        }\n        return value;\n    };\n    ClipboardService.prototype.dispatchFlashCells = function (cellsToFlash) {\n        var _this = this;\n        window.setTimeout(function () {\n            var event = {\n                type: Events.EVENT_FLASH_CELLS,\n                cells: cellsToFlash\n            };\n            _this.eventService.dispatchEvent(event);\n        }, 0);\n    };\n    ClipboardService.prototype.processCell = function (rowNode, column, value, type, func) {\n        if (func) {\n            var params = {\n                column: column,\n                node: rowNode,\n                value: value,\n                type: type,\n            };\n            return func(params);\n        }\n        return value;\n    };\n    ClipboardService.prototype.copyDataToClipboard = function (data) {\n        var _this = this;\n        var userProvidedFunc = this.gridOptionsService.getCallback('sendToClipboard');\n        // method 1 - user provided func\n        if (userProvidedFunc) {\n            userProvidedFunc({ data: data });\n            return;\n        }\n        // method 2 - native clipboard API, available in modern chrome browsers\n        var allowNavigator = !this.gridOptionsService.is('suppressClipboardApi');\n        if (allowNavigator && navigator.clipboard) {\n            navigator.clipboard.writeText(data).catch(function (e) {\n                _.doOnce(function () {\n                    console.warn(e);\n                    console.warn('AG Grid: Unable to use the Clipboard API (navigator.clipboard.writeText()). ' +\n                        'The reason why it could not be used has been logged in the previous line. ' +\n                        'For this reason the grid has defaulted to using a workaround which doesn\\'t perform as well. ' +\n                        'Either fix why Clipboard API is blocked, OR stop this message from appearing by setting grid ' +\n                        'property suppressClipboardApi=true (which will default the grid to using the workaround rather than the API.');\n                }, 'clipboardApiError');\n                _this.copyDataToClipboardLegacy(data);\n            });\n            return;\n        }\n        this.copyDataToClipboardLegacy(data);\n    };\n    ClipboardService.prototype.copyDataToClipboardLegacy = function (data) {\n        var _this = this;\n        // method 3 - if all else fails, the old school hack\n        this.executeOnTempElement(function (element) {\n            var eDocument = _this.gridOptionsService.getDocument();\n            var focusedElementBefore = eDocument.activeElement;\n            element.value = data || ' '; // has to be non-empty value or execCommand will not do anything\n            element.select();\n            element.focus({ preventScroll: true });\n            var result = eDocument.execCommand('copy');\n            if (!result) {\n                console.warn('AG Grid: Browser did not allow document.execCommand(\\'copy\\'). Ensure ' +\n                    'api.copySelectedRowsToClipboard() is invoked via a user event, i.e. button click, otherwise ' +\n                    'the browser will prevent it for security reasons.');\n            }\n            if (focusedElementBefore != null && focusedElementBefore.focus != null) {\n                focusedElementBefore.focus({ preventScroll: true });\n            }\n        });\n    };\n    ClipboardService.prototype.executeOnTempElement = function (callbackNow, callbackAfter) {\n        var eDoc = this.gridOptionsService.getDocument();\n        var eTempInput = eDoc.createElement('textarea');\n        eTempInput.style.width = '1px';\n        eTempInput.style.height = '1px';\n        // removing items from the DOM causes the document element to scroll to the\n        // position where the element was positioned. Here we set scrollTop / scrollLeft\n        // to prevent the document element from scrolling when we remove it from the DOM.\n        eTempInput.style.top = eDoc.documentElement.scrollTop + 'px';\n        eTempInput.style.left = eDoc.documentElement.scrollLeft + 'px';\n        eTempInput.style.position = 'absolute';\n        eTempInput.style.opacity = '0';\n        var guiRoot = this.gridCtrl.getGui();\n        guiRoot.appendChild(eTempInput);\n        try {\n            callbackNow(eTempInput);\n        }\n        catch (err) {\n            console.warn('AG Grid: Browser does not support document.execCommand(\\'copy\\') for clipboard operations');\n        }\n        //It needs 100 otherwise OS X seemed to not always be able to paste... Go figure...\n        if (callbackAfter) {\n            window.setTimeout(function () {\n                callbackAfter(eTempInput);\n                guiRoot.removeChild(eTempInput);\n            }, 100);\n        }\n        else {\n            guiRoot.removeChild(eTempInput);\n        }\n    };\n    ClipboardService.prototype.getRangeSize = function () {\n        var ranges = this.rangeService.getCellRanges();\n        var startRangeIndex = 0;\n        var endRangeIndex = 0;\n        if (ranges.length > 0) {\n            startRangeIndex = this.rangeService.getRangeStartRow(ranges[0]).rowIndex;\n            endRangeIndex = this.rangeService.getRangeEndRow(ranges[0]).rowIndex;\n        }\n        return startRangeIndex - endRangeIndex + 1;\n    };\n    var ClipboardService_1;\n    __decorate$2u([\n        Autowired('csvCreator')\n    ], ClipboardService.prototype, \"csvCreator\", void 0);\n    __decorate$2u([\n        Autowired('loggerFactory')\n    ], ClipboardService.prototype, \"loggerFactory\", void 0);\n    __decorate$2u([\n        Autowired('selectionService')\n    ], ClipboardService.prototype, \"selectionService\", void 0);\n    __decorate$2u([\n        Optional('rangeService')\n    ], ClipboardService.prototype, \"rangeService\", void 0);\n    __decorate$2u([\n        Autowired('rowModel')\n    ], ClipboardService.prototype, \"rowModel\", void 0);\n    __decorate$2u([\n        Autowired('ctrlsService')\n    ], ClipboardService.prototype, \"ctrlsService\", void 0);\n    __decorate$2u([\n        Autowired('valueService')\n    ], ClipboardService.prototype, \"valueService\", void 0);\n    __decorate$2u([\n        Autowired('focusService')\n    ], ClipboardService.prototype, \"focusService\", void 0);\n    __decorate$2u([\n        Autowired('rowRenderer')\n    ], ClipboardService.prototype, \"rowRenderer\", void 0);\n    __decorate$2u([\n        Autowired('columnModel')\n    ], ClipboardService.prototype, \"columnModel\", void 0);\n    __decorate$2u([\n        Autowired('cellNavigationService')\n    ], ClipboardService.prototype, \"cellNavigationService\", void 0);\n    __decorate$2u([\n        Autowired('cellPositionUtils')\n    ], ClipboardService.prototype, \"cellPositionUtils\", void 0);\n    __decorate$2u([\n        Autowired('rowPositionUtils')\n    ], ClipboardService.prototype, \"rowPositionUtils\", void 0);\n    __decorate$2u([\n        PostConstruct\n    ], ClipboardService.prototype, \"init\", null);\n    ClipboardService = ClipboardService_1 = __decorate$2u([\n        Bean('clipboardService')\n    ], ClipboardService);\n    return ClipboardService;\n}(BeanStub));\n\n// DO NOT UPDATE MANUALLY: Generated from script during build time\nvar VERSION$h = '29.3.5';\n\nvar ClipboardModule = {\n    version: VERSION$h,\n    moduleName: ModuleNames.ClipboardModule,\n    beans: [ClipboardService],\n    dependantModules: [\n        EnterpriseCoreModule,\n        CsvExportModule\n    ]\n};\n\nvar __extends$3i = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$2t = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar ExpandState;\n(function (ExpandState) {\n    ExpandState[ExpandState[\"EXPANDED\"] = 0] = \"EXPANDED\";\n    ExpandState[ExpandState[\"COLLAPSED\"] = 1] = \"COLLAPSED\";\n    ExpandState[ExpandState[\"INDETERMINATE\"] = 2] = \"INDETERMINATE\";\n})(ExpandState || (ExpandState = {}));\nvar PrimaryColsHeaderPanel = /** @class */ (function (_super) {\n    __extends$3i(PrimaryColsHeaderPanel, _super);\n    function PrimaryColsHeaderPanel() {\n        return _super.call(this, PrimaryColsHeaderPanel.TEMPLATE) || this;\n    }\n    PrimaryColsHeaderPanel.prototype.postConstruct = function () {\n        var _this = this;\n        this.createExpandIcons();\n        this.addManagedListener(this.eExpand, 'click', this.onExpandClicked.bind(this));\n        this.addManagedListener(this.eExpand, 'keydown', function (e) {\n            if (e.key === KeyCode.SPACE) {\n                e.preventDefault();\n                _this.onExpandClicked();\n            }\n        });\n        this.addManagedListener(this.eSelect.getInputElement(), 'click', this.onSelectClicked.bind(this));\n        this.eFilterTextField.onValueChange(function () { return _this.onFilterTextChanged(); });\n        this.addManagedListener(this.eFilterTextField.getInputElement(), 'keypress', this.onMiniFilterKeyPress.bind(this));\n        this.addManagedListener(this.eventService, Events.EVENT_NEW_COLUMNS_LOADED, this.showOrHideOptions.bind(this));\n        var translate = this.localeService.getLocaleTextFunc();\n        this.eSelect.setInputAriaLabel(translate('ariaColumnSelectAll', 'Toggle Select All Columns'));\n        this.eFilterTextField.setInputAriaLabel(translate('ariaFilterColumnsInput', 'Filter Columns Input'));\n    };\n    PrimaryColsHeaderPanel.prototype.init = function (params) {\n        this.params = params;\n        if (this.columnModel.isReady()) {\n            this.showOrHideOptions();\n        }\n    };\n    PrimaryColsHeaderPanel.prototype.createExpandIcons = function () {\n        this.eExpand.appendChild((this.eExpandChecked = _.createIconNoSpan('columnSelectOpen', this.gridOptionsService)));\n        this.eExpand.appendChild((this.eExpandUnchecked = _.createIconNoSpan('columnSelectClosed', this.gridOptionsService)));\n        this.eExpand.appendChild((this.eExpandIndeterminate = _.createIconNoSpan('columnSelectIndeterminate', this.gridOptionsService)));\n        this.setExpandState(ExpandState.EXPANDED);\n    };\n    // we only show expand / collapse if we are showing columns\n    PrimaryColsHeaderPanel.prototype.showOrHideOptions = function () {\n        var showFilter = !this.params.suppressColumnFilter;\n        var showSelect = !this.params.suppressColumnSelectAll;\n        var showExpand = !this.params.suppressColumnExpandAll;\n        var groupsPresent = this.columnModel.isPrimaryColumnGroupsPresent();\n        var translate = this.localeService.getLocaleTextFunc();\n        this.eFilterTextField.setInputPlaceholder(translate('searchOoo', 'Search...'));\n        _.setDisplayed(this.eFilterTextField.getGui(), showFilter);\n        _.setDisplayed(this.eSelect.getGui(), showSelect);\n        _.setDisplayed(this.eExpand, showExpand && groupsPresent);\n    };\n    PrimaryColsHeaderPanel.prototype.onFilterTextChanged = function () {\n        var _this = this;\n        if (!this.onFilterTextChangedDebounced) {\n            this.onFilterTextChangedDebounced = _.debounce(function () {\n                var filterText = _this.eFilterTextField.getValue();\n                _this.dispatchEvent({ type: \"filterChanged\", filterText: filterText });\n            }, PrimaryColsHeaderPanel.DEBOUNCE_DELAY);\n        }\n        this.onFilterTextChangedDebounced();\n    };\n    PrimaryColsHeaderPanel.prototype.onMiniFilterKeyPress = function (e) {\n        var _this = this;\n        if (e.key === KeyCode.ENTER) {\n            // we need to add a delay that corresponds to the filter text debounce delay to ensure\n            // the text filtering has happened, otherwise all columns will be deselected\n            setTimeout(function () { return _this.onSelectClicked(); }, PrimaryColsHeaderPanel.DEBOUNCE_DELAY);\n        }\n    };\n    PrimaryColsHeaderPanel.prototype.onSelectClicked = function () {\n        this.dispatchEvent({ type: this.selectState ? 'unselectAll' : 'selectAll' });\n    };\n    PrimaryColsHeaderPanel.prototype.onExpandClicked = function () {\n        this.dispatchEvent({ type: this.expandState === ExpandState.EXPANDED ? 'collapseAll' : 'expandAll' });\n    };\n    PrimaryColsHeaderPanel.prototype.setExpandState = function (state) {\n        this.expandState = state;\n        _.setDisplayed(this.eExpandChecked, this.expandState === ExpandState.EXPANDED);\n        _.setDisplayed(this.eExpandUnchecked, this.expandState === ExpandState.COLLAPSED);\n        _.setDisplayed(this.eExpandIndeterminate, this.expandState === ExpandState.INDETERMINATE);\n    };\n    PrimaryColsHeaderPanel.prototype.setSelectionState = function (state) {\n        this.selectState = state;\n        this.eSelect.setValue(this.selectState);\n    };\n    PrimaryColsHeaderPanel.DEBOUNCE_DELAY = 300;\n    PrimaryColsHeaderPanel.TEMPLATE = \"<div class=\\\"ag-column-select-header\\\" role=\\\"presentation\\\">\\n            <div ref=\\\"eExpand\\\" class=\\\"ag-column-select-header-icon\\\" tabindex=\\\"0\\\"></div>\\n            <ag-checkbox ref=\\\"eSelect\\\" class=\\\"ag-column-select-header-checkbox\\\"></ag-checkbox>\\n            <ag-input-text-field class=\\\"ag-column-select-header-filter-wrapper\\\" ref=\\\"eFilterTextField\\\"></ag-input-text-field>\\n        </div>\";\n    __decorate$2t([\n        Autowired('columnModel')\n    ], PrimaryColsHeaderPanel.prototype, \"columnModel\", void 0);\n    __decorate$2t([\n        RefSelector('eExpand')\n    ], PrimaryColsHeaderPanel.prototype, \"eExpand\", void 0);\n    __decorate$2t([\n        RefSelector('eSelect')\n    ], PrimaryColsHeaderPanel.prototype, \"eSelect\", void 0);\n    __decorate$2t([\n        RefSelector('eFilterTextField')\n    ], PrimaryColsHeaderPanel.prototype, \"eFilterTextField\", void 0);\n    __decorate$2t([\n        PostConstruct\n    ], PrimaryColsHeaderPanel.prototype, \"postConstruct\", null);\n    return PrimaryColsHeaderPanel;\n}(Component));\n\nvar ColumnModelItem = /** @class */ (function () {\n    function ColumnModelItem(displayName, columnOrGroup, dept, group, expanded) {\n        if (group === void 0) { group = false; }\n        this.eventService = new EventService();\n        this.displayName = displayName;\n        this.dept = dept;\n        this.group = group;\n        if (group) {\n            this.columnGroup = columnOrGroup;\n            this.expanded = expanded;\n            this.children = [];\n        }\n        else {\n            this.column = columnOrGroup;\n        }\n    }\n    ColumnModelItem.prototype.isGroup = function () { return this.group; };\n    ColumnModelItem.prototype.getDisplayName = function () { return this.displayName; };\n    ColumnModelItem.prototype.getColumnGroup = function () { return this.columnGroup; };\n    ColumnModelItem.prototype.getColumn = function () { return this.column; };\n    ColumnModelItem.prototype.getDept = function () { return this.dept; };\n    ColumnModelItem.prototype.isExpanded = function () { return !!this.expanded; };\n    ColumnModelItem.prototype.getChildren = function () { return this.children; };\n    ColumnModelItem.prototype.isPassesFilter = function () { return this.passesFilter; };\n    ColumnModelItem.prototype.setExpanded = function (expanded) {\n        if (expanded === this.expanded) {\n            return;\n        }\n        this.expanded = expanded;\n        this.eventService.dispatchEvent({ type: ColumnModelItem.EVENT_EXPANDED_CHANGED });\n    };\n    ColumnModelItem.prototype.setPassesFilter = function (passesFilter) {\n        this.passesFilter = passesFilter;\n    };\n    ColumnModelItem.prototype.addEventListener = function (eventType, listener) {\n        this.eventService.addEventListener(eventType, listener);\n    };\n    ColumnModelItem.prototype.removeEventListener = function (eventType, listener) {\n        this.eventService.removeEventListener(eventType, listener);\n    };\n    ColumnModelItem.EVENT_EXPANDED_CHANGED = 'expandedChanged';\n    return ColumnModelItem;\n}());\n\nvar __extends$3h = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$2s = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __read$1b = (undefined && undefined.__read) || function (o, n) {\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n    if (!m) return o;\n    var i = m.call(o), r, ar = [], e;\n    try {\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n    }\n    catch (error) { e = { error: error }; }\n    finally {\n        try {\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\n        }\n        finally { if (e) throw e.error; }\n    }\n    return ar;\n};\nvar __spread$J = (undefined && undefined.__spread) || function () {\n    for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read$1b(arguments[i]));\n    return ar;\n};\nvar __values$C = (undefined && undefined.__values) || function(o) {\n    var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n    if (m) return m.call(o);\n    if (o && typeof o.length === \"number\") return {\n        next: function () {\n            if (o && i >= o.length) o = void 0;\n            return { value: o && o[i++], done: !o };\n        }\n    };\n    throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nvar ToolPanelContextMenu = /** @class */ (function (_super) {\n    __extends$3h(ToolPanelContextMenu, _super);\n    function ToolPanelContextMenu(column, mouseEvent, parentEl) {\n        var _this = _super.call(this, /* html */ \"<div class=\\\"ag-menu\\\"></div>\") || this;\n        _this.column = column;\n        _this.mouseEvent = mouseEvent;\n        _this.parentEl = parentEl;\n        _this.displayName = null;\n        return _this;\n    }\n    ToolPanelContextMenu.prototype.postConstruct = function () {\n        this.initializeProperties(this.column);\n        this.buildMenuItemMap();\n        if (this.column instanceof Column) {\n            this.displayName = this.columnModel.getDisplayNameForColumn(this.column, 'columnToolPanel');\n        }\n        else {\n            this.displayName = this.columnModel.getDisplayNameForProvidedColumnGroup(null, this.column, 'columnToolPanel');\n        }\n        if (this.isActive()) {\n            this.mouseEvent.preventDefault();\n            this.displayContextMenu();\n        }\n    };\n    ToolPanelContextMenu.prototype.initializeProperties = function (column) {\n        if (column instanceof ProvidedColumnGroup) {\n            this.columns = column.getLeafColumns();\n        }\n        else {\n            this.columns = [column];\n        }\n        this.allowGrouping = this.columns.some(function (col) { return col.isPrimary() && col.isAllowRowGroup(); });\n        this.allowValues = this.columns.some(function (col) { return col.isPrimary() && col.isAllowValue(); });\n        this.allowPivoting = this.columnModel.isPivotMode() && this.columns.some(function (col) { return col.isPrimary() && col.isAllowPivot(); });\n    };\n    ToolPanelContextMenu.prototype.buildMenuItemMap = function () {\n        var _this = this;\n        var localeTextFunc = this.localeService.getLocaleTextFunc();\n        this.menuItemMap = new Map();\n        this.menuItemMap.set('rowGroup', {\n            allowedFunction: function (col) { return col.isPrimary() && col.isAllowRowGroup(); },\n            activeFunction: function (col) { return col.isRowGroupActive(); },\n            activateLabel: function () { return localeTextFunc('groupBy', 'Group by') + \" \" + _this.displayName; },\n            deactivateLabel: function () { return localeTextFunc('ungroupBy', 'Un-Group by') + \" \" + _this.displayName; },\n            activateFunction: function () {\n                var groupedColumns = _this.columnModel.getRowGroupColumns();\n                _this.columnModel.setRowGroupColumns(_this.addColumnsToList(groupedColumns), \"toolPanelUi\");\n            },\n            deActivateFunction: function () {\n                var groupedColumns = _this.columnModel.getRowGroupColumns();\n                _this.columnModel.setRowGroupColumns(_this.removeColumnsFromList(groupedColumns), \"toolPanelUi\");\n            },\n            addIcon: 'menuAddRowGroup',\n            removeIcon: 'menuRemoveRowGroup'\n        });\n        this.menuItemMap.set('value', {\n            allowedFunction: function (col) { return col.isPrimary() && col.isAllowValue(); },\n            activeFunction: function (col) { return col.isValueActive(); },\n            activateLabel: function () { return localeTextFunc('addToValues', \"Add \" + _this.displayName + \" to values\", [_this.displayName]); },\n            deactivateLabel: function () { return localeTextFunc('removeFromValues', \"Remove \" + _this.displayName + \" from values\", [_this.displayName]); },\n            activateFunction: function () {\n                var valueColumns = _this.columnModel.getValueColumns();\n                _this.columnModel.setValueColumns(_this.addColumnsToList(valueColumns), \"toolPanelUi\");\n            },\n            deActivateFunction: function () {\n                var valueColumns = _this.columnModel.getValueColumns();\n                _this.columnModel.setValueColumns(_this.removeColumnsFromList(valueColumns), \"toolPanelUi\");\n            },\n            addIcon: 'valuePanel',\n            removeIcon: 'valuePanel'\n        });\n        this.menuItemMap.set('pivot', {\n            allowedFunction: function (col) { return _this.columnModel.isPivotMode() && col.isPrimary() && col.isAllowPivot(); },\n            activeFunction: function (col) { return col.isPivotActive(); },\n            activateLabel: function () { return localeTextFunc('addToLabels', \"Add \" + _this.displayName + \" to labels\", [_this.displayName]); },\n            deactivateLabel: function () { return localeTextFunc('removeFromLabels', \"Remove \" + _this.displayName + \" from labels\", [_this.displayName]); },\n            activateFunction: function () {\n                var pivotColumns = _this.columnModel.getPivotColumns();\n                _this.columnModel.setPivotColumns(_this.addColumnsToList(pivotColumns), \"toolPanelUi\");\n            },\n            deActivateFunction: function () {\n                var pivotColumns = _this.columnModel.getPivotColumns();\n                _this.columnModel.setPivotColumns(_this.removeColumnsFromList(pivotColumns), \"toolPanelUi\");\n            },\n            addIcon: 'pivotPanel',\n            removeIcon: 'pivotPanel'\n        });\n    };\n    ToolPanelContextMenu.prototype.addColumnsToList = function (columnList) {\n        return __spread$J(columnList).concat(this.columns.filter(function (col) { return columnList.indexOf(col) === -1; }));\n    };\n    ToolPanelContextMenu.prototype.removeColumnsFromList = function (columnList) {\n        var _this = this;\n        return columnList.filter(function (col) { return _this.columns.indexOf(col) === -1; });\n    };\n    ToolPanelContextMenu.prototype.displayContextMenu = function () {\n        var _this = this;\n        var eGui = this.getGui();\n        var menuList = this.createBean(new AgMenuList());\n        var menuItemsMapped = this.getMappedMenuItems();\n        var localeTextFunc = this.localeService.getLocaleTextFunc();\n        var hideFunc = function () { };\n        eGui.appendChild(menuList.getGui());\n        menuList.addMenuItems(menuItemsMapped);\n        menuList.addManagedListener(menuList, AgMenuItemComponent.EVENT_MENU_ITEM_SELECTED, function () {\n            _this.parentEl.focus();\n            hideFunc();\n        });\n        var addPopupRes = this.popupService.addPopup({\n            modal: true,\n            eChild: eGui,\n            closeOnEsc: true,\n            afterGuiAttached: function () { return _this.focusService.focusInto(menuList.getGui()); },\n            ariaLabel: localeTextFunc('ariaLabelContextMenu', 'Context Menu'),\n            closedCallback: function (e) {\n                if (e instanceof KeyboardEvent) {\n                    _this.parentEl.focus();\n                }\n                _this.destroyBean(menuList);\n            }\n        });\n        if (addPopupRes) {\n            hideFunc = addPopupRes.hideFunc;\n        }\n        this.popupService.positionPopupUnderMouseEvent({\n            type: 'columnContextMenu',\n            mouseEvent: this.mouseEvent,\n            ePopup: eGui\n        });\n    };\n    ToolPanelContextMenu.prototype.isActive = function () {\n        return this.allowGrouping || this.allowValues || this.allowPivoting;\n    };\n    ToolPanelContextMenu.prototype.getMappedMenuItems = function () {\n        var e_1, _a;\n        var ret = [];\n        var _loop_1 = function (val) {\n            var isInactive = this_1.columns.some(function (col) { return val.allowedFunction(col) && !val.activeFunction(col); });\n            var isActive = this_1.columns.some(function (col) { return val.allowedFunction(col) && val.activeFunction(col); });\n            if (isInactive) {\n                ret.push({\n                    name: val.activateLabel(this_1.displayName),\n                    icon: _.createIconNoSpan(val.addIcon, this_1.gridOptionsService, null),\n                    action: function () { return val.activateFunction(); }\n                });\n            }\n            if (isActive) {\n                ret.push({\n                    name: val.deactivateLabel(this_1.displayName),\n                    icon: _.createIconNoSpan(val.removeIcon, this_1.gridOptionsService, null),\n                    action: function () { return val.deActivateFunction(); }\n                });\n            }\n        };\n        var this_1 = this;\n        try {\n            for (var _b = __values$C(this.menuItemMap.values()), _c = _b.next(); !_c.done; _c = _b.next()) {\n                var val = _c.value;\n                _loop_1(val);\n            }\n        }\n        catch (e_1_1) { e_1 = { error: e_1_1 }; }\n        finally {\n            try {\n                if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n            }\n            finally { if (e_1) throw e_1.error; }\n        }\n        return ret;\n    };\n    __decorate$2s([\n        Autowired('columnModel')\n    ], ToolPanelContextMenu.prototype, \"columnModel\", void 0);\n    __decorate$2s([\n        Autowired('popupService')\n    ], ToolPanelContextMenu.prototype, \"popupService\", void 0);\n    __decorate$2s([\n        Autowired('focusService')\n    ], ToolPanelContextMenu.prototype, \"focusService\", void 0);\n    __decorate$2s([\n        PostConstruct\n    ], ToolPanelContextMenu.prototype, \"postConstruct\", null);\n    return ToolPanelContextMenu;\n}(Component));\n\nvar __extends$3g = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$2r = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar ToolPanelColumnGroupComp = /** @class */ (function (_super) {\n    __extends$3g(ToolPanelColumnGroupComp, _super);\n    function ToolPanelColumnGroupComp(modelItem, allowDragging, eventType, focusWrapper) {\n        var _this = _super.call(this) || this;\n        _this.modelItem = modelItem;\n        _this.allowDragging = allowDragging;\n        _this.eventType = eventType;\n        _this.focusWrapper = focusWrapper;\n        _this.processingColumnStateChange = false;\n        _this.modelItem = modelItem;\n        _this.columnGroup = modelItem.getColumnGroup();\n        _this.columnDept = modelItem.getDept();\n        _this.allowDragging = allowDragging;\n        return _this;\n    }\n    ToolPanelColumnGroupComp.prototype.init = function () {\n        var _this = this;\n        this.setTemplate(ToolPanelColumnGroupComp.TEMPLATE);\n        this.eDragHandle = _.createIconNoSpan('columnDrag', this.gridOptionsService);\n        this.eDragHandle.classList.add('ag-drag-handle', 'ag-column-select-column-group-drag-handle');\n        var checkboxGui = this.cbSelect.getGui();\n        var checkboxInput = this.cbSelect.getInputElement();\n        checkboxGui.insertAdjacentElement('afterend', this.eDragHandle);\n        checkboxInput.setAttribute('tabindex', '-1');\n        this.displayName = this.columnModel.getDisplayNameForProvidedColumnGroup(null, this.columnGroup, this.eventType);\n        if (_.missing(this.displayName)) {\n            this.displayName = '>>';\n        }\n        this.eLabel.innerHTML = this.displayName ? this.displayName : '';\n        this.setupExpandContract();\n        this.addCssClass('ag-column-select-indent-' + this.columnDept);\n        this.addManagedListener(this.eventService, Events.EVENT_COLUMN_PIVOT_MODE_CHANGED, this.onColumnStateChanged.bind(this));\n        this.addManagedListener(this.eLabel, 'click', this.onLabelClicked.bind(this));\n        this.addManagedListener(this.cbSelect, AgCheckbox.EVENT_CHANGED, this.onCheckboxChanged.bind(this));\n        this.addManagedListener(this.modelItem, ColumnModelItem.EVENT_EXPANDED_CHANGED, this.onExpandChanged.bind(this));\n        this.addManagedListener(this.focusWrapper, 'keydown', this.handleKeyDown.bind(this));\n        this.addManagedListener(this.focusWrapper, 'contextmenu', this.onContextMenu.bind(this));\n        this.setOpenClosedIcons();\n        this.setupDragging();\n        this.onColumnStateChanged();\n        this.addVisibilityListenersToAllChildren();\n        this.refreshAriaExpanded();\n        this.refreshAriaLabel();\n        this.setupTooltip();\n        var classes = CssClassApplier.getToolPanelClassesFromColDef(this.columnGroup.getColGroupDef(), this.gridOptionsService, null, this.columnGroup);\n        classes.forEach(function (c) { return _this.addOrRemoveCssClass(c, true); });\n    };\n    ToolPanelColumnGroupComp.prototype.getColumns = function () {\n        return this.columnGroup.getLeafColumns();\n    };\n    ToolPanelColumnGroupComp.prototype.setupTooltip = function () {\n        var _this = this;\n        var colGroupDef = this.columnGroup.getColGroupDef();\n        if (!colGroupDef) {\n            return;\n        }\n        var refresh = function () {\n            var newTooltipText = colGroupDef.headerTooltip;\n            _this.setTooltip(newTooltipText);\n        };\n        refresh();\n        this.addManagedListener(this.eventService, Events.EVENT_NEW_COLUMNS_LOADED, refresh);\n    };\n    ToolPanelColumnGroupComp.prototype.getTooltipParams = function () {\n        var res = _super.prototype.getTooltipParams.call(this);\n        res.location = 'columnToolPanelColumnGroup';\n        return res;\n    };\n    ToolPanelColumnGroupComp.prototype.handleKeyDown = function (e) {\n        switch (e.key) {\n            case KeyCode.LEFT:\n                e.preventDefault();\n                this.modelItem.setExpanded(false);\n                break;\n            case KeyCode.RIGHT:\n                e.preventDefault();\n                this.modelItem.setExpanded(true);\n                break;\n            case KeyCode.SPACE:\n                e.preventDefault();\n                if (this.isSelectable()) {\n                    this.onSelectAllChanged(!this.isSelected());\n                }\n                break;\n        }\n    };\n    ToolPanelColumnGroupComp.prototype.onContextMenu = function (e) {\n        var _this = this;\n        var _a = this, columnGroup = _a.columnGroup, gridOptionsService = _a.gridOptionsService;\n        if (gridOptionsService.is('functionsReadOnly')) {\n            return;\n        }\n        var contextMenu = this.createBean(new ToolPanelContextMenu(columnGroup, e, this.focusWrapper));\n        this.addDestroyFunc(function () {\n            if (contextMenu.isAlive()) {\n                _this.destroyBean(contextMenu);\n            }\n        });\n    };\n    ToolPanelColumnGroupComp.prototype.addVisibilityListenersToAllChildren = function () {\n        var _this = this;\n        this.columnGroup.getLeafColumns().forEach(function (column) {\n            _this.addManagedListener(column, Column.EVENT_VISIBLE_CHANGED, _this.onColumnStateChanged.bind(_this));\n            _this.addManagedListener(column, Column.EVENT_VALUE_CHANGED, _this.onColumnStateChanged.bind(_this));\n            _this.addManagedListener(column, Column.EVENT_PIVOT_CHANGED, _this.onColumnStateChanged.bind(_this));\n            _this.addManagedListener(column, Column.EVENT_ROW_GROUP_CHANGED, _this.onColumnStateChanged.bind(_this));\n        });\n    };\n    ToolPanelColumnGroupComp.prototype.setupDragging = function () {\n        var _this = this;\n        if (!this.allowDragging) {\n            _.setDisplayed(this.eDragHandle, false);\n            return;\n        }\n        var hideColumnOnExit = !this.gridOptionsService.is('suppressDragLeaveHidesColumns');\n        var dragSource = {\n            type: DragSourceType.ToolPanel,\n            eElement: this.eDragHandle,\n            dragItemName: this.displayName,\n            defaultIconName: hideColumnOnExit ? DragAndDropService.ICON_HIDE : DragAndDropService.ICON_NOT_ALLOWED,\n            getDragItem: function () { return _this.createDragItem(); },\n            onDragStarted: function () {\n                var event = {\n                    type: Events.EVENT_COLUMN_PANEL_ITEM_DRAG_START,\n                    column: _this.columnGroup\n                };\n                _this.eventService.dispatchEvent(event);\n            },\n            onDragStopped: function () {\n                var event = {\n                    type: Events.EVENT_COLUMN_PANEL_ITEM_DRAG_END\n                };\n                _this.eventService.dispatchEvent(event);\n            },\n            onGridEnter: function () {\n                if (hideColumnOnExit) {\n                    // when dragged into the grid, mimic what happens when checkbox is enabled\n                    // this handles the behaviour for pivot which is different to just hiding a column.\n                    _this.onChangeCommon(true);\n                }\n            },\n            onGridExit: function () {\n                if (hideColumnOnExit) {\n                    // when dragged outside of the grid, mimic what happens when checkbox is disabled\n                    // this handles the behaviour for pivot which is different to just hiding a column.\n                    _this.onChangeCommon(false);\n                }\n            }\n        };\n        this.dragAndDropService.addDragSource(dragSource, true);\n        this.addDestroyFunc(function () { return _this.dragAndDropService.removeDragSource(dragSource); });\n    };\n    ToolPanelColumnGroupComp.prototype.createDragItem = function () {\n        var visibleState = {};\n        this.columnGroup.getLeafColumns().forEach(function (col) {\n            visibleState[col.getId()] = col.isVisible();\n        });\n        return {\n            columns: this.columnGroup.getLeafColumns(),\n            visibleState: visibleState\n        };\n    };\n    ToolPanelColumnGroupComp.prototype.setupExpandContract = function () {\n        this.eGroupClosedIcon.appendChild(_.createIcon('columnSelectClosed', this.gridOptionsService, null));\n        this.eGroupOpenedIcon.appendChild(_.createIcon('columnSelectOpen', this.gridOptionsService, null));\n        this.addManagedListener(this.eGroupClosedIcon, 'click', this.onExpandOrContractClicked.bind(this));\n        this.addManagedListener(this.eGroupOpenedIcon, 'click', this.onExpandOrContractClicked.bind(this));\n        var touchListener = new TouchListener(this.eColumnGroupIcons, true);\n        this.addManagedListener(touchListener, TouchListener.EVENT_TAP, this.onExpandOrContractClicked.bind(this));\n        this.addDestroyFunc(touchListener.destroy.bind(touchListener));\n    };\n    ToolPanelColumnGroupComp.prototype.onLabelClicked = function () {\n        var nextState = !this.cbSelect.getValue();\n        this.onChangeCommon(nextState);\n    };\n    ToolPanelColumnGroupComp.prototype.onCheckboxChanged = function (event) {\n        this.onChangeCommon(event.selected);\n    };\n    ToolPanelColumnGroupComp.prototype.getVisibleLeafColumns = function () {\n        var childColumns = [];\n        var extractCols = function (children) {\n            children.forEach(function (child) {\n                if (!child.isPassesFilter()) {\n                    return;\n                }\n                if (child.isGroup()) {\n                    extractCols(child.getChildren());\n                }\n                else {\n                    childColumns.push(child.getColumn());\n                }\n            });\n        };\n        extractCols(this.modelItem.getChildren());\n        return childColumns;\n    };\n    ToolPanelColumnGroupComp.prototype.onChangeCommon = function (nextState) {\n        this.refreshAriaLabel();\n        if (this.processingColumnStateChange) {\n            return;\n        }\n        this.modelItemUtils.selectAllChildren(this.modelItem.getChildren(), nextState, this.eventType);\n    };\n    ToolPanelColumnGroupComp.prototype.refreshAriaLabel = function () {\n        var translate = this.localeService.getLocaleTextFunc();\n        var columnLabel = translate('ariaColumnGroup', 'Column Group');\n        var checkboxValue = this.cbSelect.getValue();\n        var state = checkboxValue === undefined ?\n            translate('ariaIndeterminate', 'indeterminate') :\n            (checkboxValue ? translate('ariaVisible', 'visible') : translate('ariaHidden', 'hidden'));\n        var visibilityLabel = translate('ariaToggleVisibility', 'Press SPACE to toggle visibility');\n        _.setAriaLabel(this.focusWrapper, this.displayName + \" \" + columnLabel);\n        this.cbSelect.setInputAriaLabel(visibilityLabel + \" (\" + state + \")\");\n        _.setAriaDescribedBy(this.focusWrapper, this.cbSelect.getInputElement().id);\n    };\n    ToolPanelColumnGroupComp.prototype.onColumnStateChanged = function () {\n        var selectedValue = this.workOutSelectedValue();\n        var readOnlyValue = this.workOutReadOnlyValue();\n        this.processingColumnStateChange = true;\n        this.cbSelect.setValue(selectedValue);\n        this.cbSelect.setReadOnly(readOnlyValue);\n        this.addOrRemoveCssClass('ag-column-select-column-group-readonly', readOnlyValue);\n        this.processingColumnStateChange = false;\n    };\n    ToolPanelColumnGroupComp.prototype.workOutSelectedValue = function () {\n        var _this = this;\n        var pivotMode = this.columnModel.isPivotMode();\n        var visibleLeafColumns = this.getVisibleLeafColumns();\n        var checkedCount = 0;\n        var uncheckedCount = 0;\n        visibleLeafColumns.forEach(function (column) {\n            if (!pivotMode && column.getColDef().lockVisible) {\n                return;\n            }\n            if (_this.isColumnChecked(column, pivotMode)) {\n                checkedCount++;\n            }\n            else {\n                uncheckedCount++;\n            }\n        });\n        if (checkedCount > 0 && uncheckedCount > 0) {\n            return undefined;\n        }\n        return checkedCount > 0;\n    };\n    ToolPanelColumnGroupComp.prototype.workOutReadOnlyValue = function () {\n        var pivotMode = this.columnModel.isPivotMode();\n        var colsThatCanAction = 0;\n        this.columnGroup.getLeafColumns().forEach(function (col) {\n            if (pivotMode) {\n                if (col.isAnyFunctionAllowed()) {\n                    colsThatCanAction++;\n                }\n            }\n            else {\n                if (!col.getColDef().lockVisible) {\n                    colsThatCanAction++;\n                }\n            }\n        });\n        return colsThatCanAction === 0;\n    };\n    ToolPanelColumnGroupComp.prototype.isColumnChecked = function (column, pivotMode) {\n        if (pivotMode) {\n            var pivoted = column.isPivotActive();\n            var grouped = column.isRowGroupActive();\n            var aggregated = column.isValueActive();\n            return pivoted || grouped || aggregated;\n        }\n        return column.isVisible();\n    };\n    ToolPanelColumnGroupComp.prototype.onExpandOrContractClicked = function () {\n        var oldState = this.modelItem.isExpanded();\n        this.modelItem.setExpanded(!oldState);\n    };\n    ToolPanelColumnGroupComp.prototype.onExpandChanged = function () {\n        this.setOpenClosedIcons();\n        this.refreshAriaExpanded();\n    };\n    ToolPanelColumnGroupComp.prototype.setOpenClosedIcons = function () {\n        var folderOpen = this.modelItem.isExpanded();\n        _.setDisplayed(this.eGroupClosedIcon, !folderOpen);\n        _.setDisplayed(this.eGroupOpenedIcon, folderOpen);\n    };\n    ToolPanelColumnGroupComp.prototype.refreshAriaExpanded = function () {\n        _.setAriaExpanded(this.focusWrapper, this.modelItem.isExpanded());\n    };\n    ToolPanelColumnGroupComp.prototype.getDisplayName = function () {\n        return this.displayName;\n    };\n    ToolPanelColumnGroupComp.prototype.onSelectAllChanged = function (value) {\n        var cbValue = this.cbSelect.getValue();\n        var readOnly = this.cbSelect.isReadOnly();\n        if (!readOnly && ((value && !cbValue) || (!value && cbValue))) {\n            this.cbSelect.toggle();\n        }\n    };\n    ToolPanelColumnGroupComp.prototype.isSelected = function () {\n        return this.cbSelect.getValue();\n    };\n    ToolPanelColumnGroupComp.prototype.isSelectable = function () {\n        return !this.cbSelect.isReadOnly();\n    };\n    ToolPanelColumnGroupComp.prototype.setSelected = function (selected) {\n        this.cbSelect.setValue(selected, true);\n    };\n    ToolPanelColumnGroupComp.TEMPLATE = \"<div class=\\\"ag-column-select-column-group\\\" aria-hidden=\\\"true\\\">\\n            <span class=\\\"ag-column-group-icons\\\" ref=\\\"eColumnGroupIcons\\\" >\\n                <span class=\\\"ag-column-group-closed-icon\\\" ref=\\\"eGroupClosedIcon\\\"></span>\\n                <span class=\\\"ag-column-group-opened-icon\\\" ref=\\\"eGroupOpenedIcon\\\"></span>\\n            </span>\\n            <ag-checkbox ref=\\\"cbSelect\\\" class=\\\"ag-column-select-checkbox\\\"></ag-checkbox>\\n            <span class=\\\"ag-column-select-column-label\\\" ref=\\\"eLabel\\\"></span>\\n        </div>\";\n    __decorate$2r([\n        Autowired('columnModel')\n    ], ToolPanelColumnGroupComp.prototype, \"columnModel\", void 0);\n    __decorate$2r([\n        Autowired('dragAndDropService')\n    ], ToolPanelColumnGroupComp.prototype, \"dragAndDropService\", void 0);\n    __decorate$2r([\n        Autowired('modelItemUtils')\n    ], ToolPanelColumnGroupComp.prototype, \"modelItemUtils\", void 0);\n    __decorate$2r([\n        RefSelector('cbSelect')\n    ], ToolPanelColumnGroupComp.prototype, \"cbSelect\", void 0);\n    __decorate$2r([\n        RefSelector('eLabel')\n    ], ToolPanelColumnGroupComp.prototype, \"eLabel\", void 0);\n    __decorate$2r([\n        RefSelector('eGroupOpenedIcon')\n    ], ToolPanelColumnGroupComp.prototype, \"eGroupOpenedIcon\", void 0);\n    __decorate$2r([\n        RefSelector('eGroupClosedIcon')\n    ], ToolPanelColumnGroupComp.prototype, \"eGroupClosedIcon\", void 0);\n    __decorate$2r([\n        RefSelector('eColumnGroupIcons')\n    ], ToolPanelColumnGroupComp.prototype, \"eColumnGroupIcons\", void 0);\n    __decorate$2r([\n        PostConstruct\n    ], ToolPanelColumnGroupComp.prototype, \"init\", null);\n    return ToolPanelColumnGroupComp;\n}(Component));\n\nvar __extends$3f = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$2q = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar PRIMARY_COLS_LIST_ITEM_HOVERED = 'ag-list-item-hovered';\nvar PrimaryColsListPanelItemDragFeature = /** @class */ (function (_super) {\n    __extends$3f(PrimaryColsListPanelItemDragFeature, _super);\n    function PrimaryColsListPanelItemDragFeature(comp, virtualList) {\n        var _this = _super.call(this) || this;\n        _this.comp = comp;\n        _this.virtualList = virtualList;\n        _this.currentDragColumn = null;\n        _this.lastHoveredColumnItem = null;\n        return _this;\n    }\n    PrimaryColsListPanelItemDragFeature.prototype.postConstruct = function () {\n        this.addManagedListener(this.eventService, Events.EVENT_COLUMN_PANEL_ITEM_DRAG_START, this.columnPanelItemDragStart.bind(this));\n        this.addManagedListener(this.eventService, Events.EVENT_COLUMN_PANEL_ITEM_DRAG_END, this.columnPanelItemDragEnd.bind(this));\n        this.createDropTarget();\n        this.createAutoScrollService();\n    };\n    PrimaryColsListPanelItemDragFeature.prototype.columnPanelItemDragStart = function (_a) {\n        var column = _a.column;\n        this.currentDragColumn = column;\n        var currentColumns = this.getCurrentColumns();\n        var hasNotMovable = currentColumns.find(function (col) {\n            var colDef = col.getColDef();\n            return !!colDef.suppressMovable || !!colDef.lockPosition;\n        });\n        if (hasNotMovable) {\n            this.moveBlocked = true;\n        }\n    };\n    PrimaryColsListPanelItemDragFeature.prototype.columnPanelItemDragEnd = function () {\n        var _this = this;\n        window.setTimeout(function () {\n            _this.currentDragColumn = null;\n            _this.moveBlocked = false;\n        }, 10);\n    };\n    PrimaryColsListPanelItemDragFeature.prototype.createDropTarget = function () {\n        var _this = this;\n        var dropTarget = {\n            isInterestedIn: function (type) { return type === DragSourceType.ToolPanel; },\n            getIconName: function () { return DragAndDropService[_this.moveBlocked ? 'ICON_NOT_ALLOWED' : 'ICON_MOVE']; },\n            getContainer: function () { return _this.comp.getGui(); },\n            onDragging: function (e) { return _this.onDragging(e); },\n            onDragStop: function () { return _this.onDragStop(); },\n            onDragLeave: function () { return _this.onDragLeave(); }\n        };\n        this.dragAndDropService.addDropTarget(dropTarget);\n    };\n    PrimaryColsListPanelItemDragFeature.prototype.createAutoScrollService = function () {\n        var virtualListGui = this.virtualList.getGui();\n        this.autoScrollService = new AutoScrollService({\n            scrollContainer: virtualListGui,\n            scrollAxis: 'y',\n            getVerticalPosition: function () { return virtualListGui.scrollTop; },\n            setVerticalPosition: function (position) { return virtualListGui.scrollTop = position; }\n        });\n    };\n    PrimaryColsListPanelItemDragFeature.prototype.onDragging = function (e) {\n        if (!this.currentDragColumn || this.moveBlocked) {\n            return;\n        }\n        var hoveredColumnItem = this.getDragColumnItem(e);\n        var comp = this.virtualList.getComponentAt(hoveredColumnItem.rowIndex);\n        if (!comp) {\n            return;\n        }\n        var el = comp.getGui().parentElement;\n        if (this.lastHoveredColumnItem &&\n            this.lastHoveredColumnItem.rowIndex === hoveredColumnItem.rowIndex &&\n            this.lastHoveredColumnItem.position === hoveredColumnItem.position) {\n            return;\n        }\n        this.autoScrollService.check(e.event);\n        this.clearHoveredItems();\n        this.lastHoveredColumnItem = hoveredColumnItem;\n        _.radioCssClass(el, \"\" + PRIMARY_COLS_LIST_ITEM_HOVERED);\n        _.radioCssClass(el, \"ag-item-highlight-\" + hoveredColumnItem.position);\n    };\n    PrimaryColsListPanelItemDragFeature.prototype.getDragColumnItem = function (e) {\n        var virtualListGui = this.virtualList.getGui();\n        var paddingTop = parseFloat(window.getComputedStyle(virtualListGui).paddingTop);\n        var rowHeight = this.virtualList.getRowHeight();\n        var scrollTop = this.virtualList.getScrollTop();\n        var rowIndex = Math.max(0, (e.y - paddingTop + scrollTop) / rowHeight);\n        var maxLen = this.comp.getDisplayedColsList().length - 1;\n        var normalizedRowIndex = Math.min(maxLen, rowIndex) | 0;\n        return {\n            rowIndex: normalizedRowIndex,\n            position: (Math.round(rowIndex) > rowIndex || rowIndex > maxLen) ? 'bottom' : 'top',\n            component: this.virtualList.getComponentAt(normalizedRowIndex)\n        };\n    };\n    PrimaryColsListPanelItemDragFeature.prototype.onDragStop = function () {\n        if (this.moveBlocked) {\n            return;\n        }\n        var targetIndex = this.getTargetIndex();\n        var columnsToMove = this.getCurrentColumns();\n        if (targetIndex != null) {\n            this.columnModel.moveColumns(columnsToMove, targetIndex, 'toolPanelUi');\n        }\n        this.clearHoveredItems();\n        this.autoScrollService.ensureCleared();\n    };\n    PrimaryColsListPanelItemDragFeature.prototype.getMoveDiff = function (end) {\n        var allColumns = this.columnModel.getAllGridColumns();\n        var currentColumns = this.getCurrentColumns();\n        var currentColumn = currentColumns[0];\n        var span = currentColumns.length;\n        var currentIndex = allColumns.indexOf(currentColumn);\n        if (currentIndex < end) {\n            return span;\n        }\n        return 0;\n    };\n    PrimaryColsListPanelItemDragFeature.prototype.getCurrentColumns = function () {\n        if (this.currentDragColumn instanceof ProvidedColumnGroup) {\n            return this.currentDragColumn.getLeafColumns();\n        }\n        return [this.currentDragColumn];\n    };\n    PrimaryColsListPanelItemDragFeature.prototype.getTargetIndex = function () {\n        if (!this.lastHoveredColumnItem) {\n            return null;\n        }\n        var columnItemComponent = this.lastHoveredColumnItem.component;\n        var isBefore = this.lastHoveredColumnItem.position === 'top';\n        var targetColumn;\n        if (columnItemComponent instanceof ToolPanelColumnGroupComp) {\n            var columns = columnItemComponent.getColumns();\n            targetColumn = columns[0];\n            isBefore = true;\n        }\n        else {\n            targetColumn = columnItemComponent.getColumn();\n        }\n        var targetColumnIndex = this.columnModel.getAllGridColumns().indexOf(targetColumn);\n        var adjustedTarget = isBefore ? targetColumnIndex : targetColumnIndex + 1;\n        var diff = this.getMoveDiff(adjustedTarget);\n        return adjustedTarget - diff;\n    };\n    PrimaryColsListPanelItemDragFeature.prototype.onDragLeave = function () {\n        this.clearHoveredItems();\n        this.autoScrollService.ensureCleared();\n    };\n    PrimaryColsListPanelItemDragFeature.prototype.clearHoveredItems = function () {\n        var virtualListGui = this.virtualList.getGui();\n        virtualListGui.querySelectorAll(\".\" + PRIMARY_COLS_LIST_ITEM_HOVERED).forEach(function (el) {\n            [\n                PRIMARY_COLS_LIST_ITEM_HOVERED,\n                'ag-item-highlight-top',\n                'ag-item-highlight-bottom'\n            ].forEach(function (cls) {\n                el.classList.remove(cls);\n            });\n        });\n        this.lastHoveredColumnItem = null;\n    };\n    __decorate$2q([\n        Autowired('columnModel')\n    ], PrimaryColsListPanelItemDragFeature.prototype, \"columnModel\", void 0);\n    __decorate$2q([\n        Autowired('dragAndDropService')\n    ], PrimaryColsListPanelItemDragFeature.prototype, \"dragAndDropService\", void 0);\n    __decorate$2q([\n        PostConstruct\n    ], PrimaryColsListPanelItemDragFeature.prototype, \"postConstruct\", null);\n    return PrimaryColsListPanelItemDragFeature;\n}(BeanStub));\n\nvar __extends$3e = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$2p = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar ToolPanelColumnComp = /** @class */ (function (_super) {\n    __extends$3e(ToolPanelColumnComp, _super);\n    function ToolPanelColumnComp(column, columnDept, allowDragging, groupsExist, focusWrapper) {\n        var _this = _super.call(this) || this;\n        _this.column = column;\n        _this.columnDept = columnDept;\n        _this.allowDragging = allowDragging;\n        _this.groupsExist = groupsExist;\n        _this.focusWrapper = focusWrapper;\n        _this.processingColumnStateChange = false;\n        return _this;\n    }\n    ToolPanelColumnComp.prototype.init = function () {\n        var _this = this;\n        this.setTemplate(ToolPanelColumnComp.TEMPLATE);\n        this.eDragHandle = _.createIconNoSpan('columnDrag', this.gridOptionsService);\n        this.eDragHandle.classList.add('ag-drag-handle', 'ag-column-select-column-drag-handle');\n        var checkboxGui = this.cbSelect.getGui();\n        var checkboxInput = this.cbSelect.getInputElement();\n        checkboxGui.insertAdjacentElement('afterend', this.eDragHandle);\n        checkboxInput.setAttribute('tabindex', '-1');\n        this.displayName = this.columnModel.getDisplayNameForColumn(this.column, 'columnToolPanel');\n        var displayNameSanitised = _.escapeString(this.displayName);\n        this.eLabel.innerHTML = displayNameSanitised;\n        // if grouping, we add an extra level of indent, to cater for expand/contract icons we need to indent for\n        var indent = this.columnDept;\n        if (this.groupsExist) {\n            this.addCssClass('ag-column-select-add-group-indent');\n        }\n        this.addCssClass(\"ag-column-select-indent-\" + indent);\n        this.setupDragging();\n        this.addManagedListener(this.eventService, Events.EVENT_COLUMN_PIVOT_MODE_CHANGED, this.onColumnStateChanged.bind(this));\n        this.addManagedListener(this.column, Column.EVENT_VALUE_CHANGED, this.onColumnStateChanged.bind(this));\n        this.addManagedListener(this.column, Column.EVENT_PIVOT_CHANGED, this.onColumnStateChanged.bind(this));\n        this.addManagedListener(this.column, Column.EVENT_ROW_GROUP_CHANGED, this.onColumnStateChanged.bind(this));\n        this.addManagedListener(this.column, Column.EVENT_VISIBLE_CHANGED, this.onColumnStateChanged.bind(this));\n        this.addManagedListener(this.focusWrapper, 'keydown', this.handleKeyDown.bind(this));\n        this.addManagedListener(this.focusWrapper, 'contextmenu', this.onContextMenu.bind(this));\n        this.addManagedPropertyListener('functionsReadOnly', this.onColumnStateChanged.bind(this));\n        this.addManagedListener(this.cbSelect, AgCheckbox.EVENT_CHANGED, this.onCheckboxChanged.bind(this));\n        this.addManagedListener(this.eLabel, 'click', this.onLabelClicked.bind(this));\n        this.onColumnStateChanged();\n        this.refreshAriaLabel();\n        this.setupTooltip();\n        var classes = CssClassApplier.getToolPanelClassesFromColDef(this.column.getColDef(), this.gridOptionsService, this.column, null);\n        classes.forEach(function (c) { return _this.addOrRemoveCssClass(c, true); });\n    };\n    ToolPanelColumnComp.prototype.getColumn = function () {\n        return this.column;\n    };\n    ToolPanelColumnComp.prototype.setupTooltip = function () {\n        var _this = this;\n        var refresh = function () {\n            var newTooltipText = _this.column.getColDef().headerTooltip;\n            _this.setTooltip(newTooltipText);\n        };\n        refresh();\n        this.addManagedListener(this.eventService, Events.EVENT_NEW_COLUMNS_LOADED, refresh);\n    };\n    ToolPanelColumnComp.prototype.getTooltipParams = function () {\n        var res = _super.prototype.getTooltipParams.call(this);\n        res.location = 'columnToolPanelColumn';\n        res.colDef = this.column.getColDef();\n        return res;\n    };\n    ToolPanelColumnComp.prototype.onContextMenu = function (e) {\n        var _this = this;\n        var _a = this, column = _a.column, gridOptionsService = _a.gridOptionsService;\n        if (gridOptionsService.is('functionsReadOnly')) {\n            return;\n        }\n        var contextMenu = this.createBean(new ToolPanelContextMenu(column, e, this.focusWrapper));\n        this.addDestroyFunc(function () {\n            if (contextMenu.isAlive()) {\n                _this.destroyBean(contextMenu);\n            }\n        });\n    };\n    ToolPanelColumnComp.prototype.handleKeyDown = function (e) {\n        if (e.key === KeyCode.SPACE) {\n            e.preventDefault();\n            if (this.isSelectable()) {\n                this.onSelectAllChanged(!this.isSelected());\n            }\n        }\n    };\n    ToolPanelColumnComp.prototype.onLabelClicked = function () {\n        if (this.gridOptionsService.is('functionsReadOnly')) {\n            return;\n        }\n        var nextState = !this.cbSelect.getValue();\n        this.onChangeCommon(nextState);\n    };\n    ToolPanelColumnComp.prototype.onCheckboxChanged = function (event) {\n        this.onChangeCommon(event.selected);\n    };\n    ToolPanelColumnComp.prototype.onChangeCommon = function (nextState) {\n        // ignore lock visible columns\n        if (this.cbSelect.isReadOnly()) {\n            return;\n        }\n        this.refreshAriaLabel();\n        // only want to action if the user clicked the checkbox, not if we are setting the checkbox because\n        // of a change in the model\n        if (this.processingColumnStateChange) {\n            return;\n        }\n        this.modelItemUtils.setColumn(this.column, nextState, 'toolPanelUi');\n    };\n    ToolPanelColumnComp.prototype.refreshAriaLabel = function () {\n        var translate = this.localeService.getLocaleTextFunc();\n        var columnLabel = translate('ariaColumn', 'Column');\n        var state = this.cbSelect.getValue() ? translate('ariaVisible', 'visible') : translate('ariaHidden', 'hidden');\n        var visibilityLabel = translate('ariaToggleVisibility', 'Press SPACE to toggle visibility');\n        _.setAriaLabel(this.focusWrapper, this.displayName + \" \" + columnLabel);\n        this.cbSelect.setInputAriaLabel(visibilityLabel + \" (\" + state + \")\");\n        _.setAriaDescribedBy(this.focusWrapper, this.cbSelect.getInputElement().id);\n    };\n    ToolPanelColumnComp.prototype.setupDragging = function () {\n        var _this = this;\n        if (!this.allowDragging) {\n            _.setDisplayed(this.eDragHandle, false);\n            return;\n        }\n        var hideColumnOnExit = !this.gridOptionsService.is('suppressDragLeaveHidesColumns');\n        var dragSource = {\n            type: DragSourceType.ToolPanel,\n            eElement: this.eDragHandle,\n            dragItemName: this.displayName,\n            defaultIconName: hideColumnOnExit ? DragAndDropService.ICON_HIDE : DragAndDropService.ICON_NOT_ALLOWED,\n            getDragItem: function () { return _this.createDragItem(); },\n            onDragStarted: function () {\n                var event = {\n                    type: Events.EVENT_COLUMN_PANEL_ITEM_DRAG_START,\n                    column: _this.column\n                };\n                _this.eventService.dispatchEvent(event);\n            },\n            onDragStopped: function () {\n                var event = {\n                    type: Events.EVENT_COLUMN_PANEL_ITEM_DRAG_END\n                };\n                _this.eventService.dispatchEvent(event);\n            },\n            onGridEnter: function () {\n                if (hideColumnOnExit) {\n                    // when dragged into the grid, mimic what happens when checkbox is enabled\n                    // this handles the behaviour for pivot which is different to just hiding a column.\n                    _this.onChangeCommon(true);\n                }\n            },\n            onGridExit: function () {\n                if (hideColumnOnExit) {\n                    // when dragged outside of the grid, mimic what happens when checkbox is disabled\n                    // this handles the behaviour for pivot which is different to just hiding a column.\n                    _this.onChangeCommon(false);\n                }\n            }\n        };\n        this.dragAndDropService.addDragSource(dragSource, true);\n        this.addDestroyFunc(function () { return _this.dragAndDropService.removeDragSource(dragSource); });\n    };\n    ToolPanelColumnComp.prototype.createDragItem = function () {\n        var visibleState = {};\n        visibleState[this.column.getId()] = this.column.isVisible();\n        return {\n            columns: [this.column],\n            visibleState: visibleState\n        };\n    };\n    ToolPanelColumnComp.prototype.onColumnStateChanged = function () {\n        this.processingColumnStateChange = true;\n        var isPivotMode = this.columnModel.isPivotMode();\n        if (isPivotMode) {\n            // if reducing, checkbox means column is one of pivot, value or group\n            var anyFunctionActive = this.column.isAnyFunctionActive();\n            this.cbSelect.setValue(anyFunctionActive);\n        }\n        else {\n            // if not reducing, the checkbox tells us if column is visible or not\n            this.cbSelect.setValue(this.column.isVisible());\n        }\n        var canBeToggled = true;\n        var canBeDragged = true;\n        if (isPivotMode) {\n            // when in pivot mode, the item should be read only if:\n            //  a) gui is not allowed make any changes\n            var functionsReadOnly = this.gridOptionsService.is('functionsReadOnly');\n            //  b) column is not allow any functions on it\n            var noFunctionsAllowed = !this.column.isAnyFunctionAllowed();\n            canBeToggled = !functionsReadOnly && !noFunctionsAllowed;\n            canBeDragged = canBeToggled;\n        }\n        else {\n            var _a = this.column.getColDef(), enableRowGroup = _a.enableRowGroup, enableValue = _a.enableValue, lockPosition = _a.lockPosition, suppressMovable = _a.suppressMovable, lockVisible = _a.lockVisible;\n            var forceDraggable = !!enableRowGroup || !!enableValue;\n            var disableDraggable = !!lockPosition || !!suppressMovable;\n            canBeToggled = !lockVisible;\n            canBeDragged = forceDraggable || !disableDraggable;\n        }\n        this.cbSelect.setReadOnly(!canBeToggled);\n        this.eDragHandle.classList.toggle('ag-column-select-column-readonly', !canBeDragged);\n        this.addOrRemoveCssClass('ag-column-select-column-readonly', !canBeDragged && !canBeToggled);\n        var checkboxPassive = isPivotMode && this.gridOptionsService.is('functionsPassive');\n        this.cbSelect.setPassive(checkboxPassive);\n        this.processingColumnStateChange = false;\n    };\n    ToolPanelColumnComp.prototype.getDisplayName = function () {\n        return this.displayName;\n    };\n    ToolPanelColumnComp.prototype.onSelectAllChanged = function (value) {\n        if (value !== this.cbSelect.getValue()) {\n            if (!this.cbSelect.isReadOnly()) {\n                this.cbSelect.toggle();\n            }\n        }\n    };\n    ToolPanelColumnComp.prototype.isSelected = function () {\n        return this.cbSelect.getValue();\n    };\n    ToolPanelColumnComp.prototype.isSelectable = function () {\n        return !this.cbSelect.isReadOnly();\n    };\n    ToolPanelColumnComp.prototype.isExpandable = function () {\n        return false;\n    };\n    ToolPanelColumnComp.prototype.setExpanded = function (value) {\n        console.warn('AG Grid: can not expand a column item that does not represent a column group header');\n    };\n    ToolPanelColumnComp.TEMPLATE = \"<div class=\\\"ag-column-select-column\\\" aria-hidden=\\\"true\\\">\\n            <ag-checkbox ref=\\\"cbSelect\\\" class=\\\"ag-column-select-checkbox\\\"></ag-checkbox>\\n            <span class=\\\"ag-column-select-column-label\\\" ref=\\\"eLabel\\\"></span>\\n        </div>\";\n    __decorate$2p([\n        Autowired('columnModel')\n    ], ToolPanelColumnComp.prototype, \"columnModel\", void 0);\n    __decorate$2p([\n        Autowired('dragAndDropService')\n    ], ToolPanelColumnComp.prototype, \"dragAndDropService\", void 0);\n    __decorate$2p([\n        Autowired('modelItemUtils')\n    ], ToolPanelColumnComp.prototype, \"modelItemUtils\", void 0);\n    __decorate$2p([\n        RefSelector('eLabel')\n    ], ToolPanelColumnComp.prototype, \"eLabel\", void 0);\n    __decorate$2p([\n        RefSelector('cbSelect')\n    ], ToolPanelColumnComp.prototype, \"cbSelect\", void 0);\n    __decorate$2p([\n        PostConstruct\n    ], ToolPanelColumnComp.prototype, \"init\", null);\n    return ToolPanelColumnComp;\n}(Component));\n\nvar __extends$3d = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$2o = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar UIColumnModel = /** @class */ (function () {\n    function UIColumnModel(items) {\n        this.items = items;\n    }\n    UIColumnModel.prototype.getRowCount = function () {\n        return this.items.length;\n    };\n    UIColumnModel.prototype.getRow = function (index) {\n        return this.items[index];\n    };\n    return UIColumnModel;\n}());\nvar PRIMARY_COLS_LIST_PANEL_CLASS = 'ag-column-select-list';\nvar PrimaryColsListPanel = /** @class */ (function (_super) {\n    __extends$3d(PrimaryColsListPanel, _super);\n    function PrimaryColsListPanel() {\n        var _this = _super.call(this, PrimaryColsListPanel.TEMPLATE) || this;\n        _this.destroyColumnItemFuncs = [];\n        return _this;\n    }\n    PrimaryColsListPanel.prototype.destroyColumnTree = function () {\n        this.allColsTree = [];\n        this.destroyColumnItemFuncs.forEach(function (f) { return f(); });\n        this.destroyColumnItemFuncs = [];\n    };\n    PrimaryColsListPanel.prototype.init = function (params, allowDragging, eventType) {\n        var _this = this;\n        this.params = params;\n        this.allowDragging = allowDragging;\n        this.eventType = eventType;\n        if (!this.params.suppressSyncLayoutWithGrid) {\n            this.addManagedListener(this.eventService, Events.EVENT_COLUMN_MOVED, this.onColumnsChanged.bind(this));\n        }\n        this.addManagedListener(this.eventService, Events.EVENT_NEW_COLUMNS_LOADED, this.onColumnsChanged.bind(this));\n        var eventsImpactingCheckedState = [\n            Events.EVENT_COLUMN_PIVOT_CHANGED,\n            Events.EVENT_COLUMN_PIVOT_MODE_CHANGED,\n            Events.EVENT_COLUMN_ROW_GROUP_CHANGED,\n            Events.EVENT_COLUMN_VALUE_CHANGED,\n            Events.EVENT_COLUMN_VISIBLE,\n            Events.EVENT_NEW_COLUMNS_LOADED\n        ];\n        eventsImpactingCheckedState.forEach(function (event) {\n            // update header select all checkbox with current selection state\n            _this.addManagedListener(_this.eventService, event, _this.fireSelectionChangedEvent.bind(_this));\n        });\n        this.expandGroupsByDefault = !this.params.contractColumnSelection;\n        var translate = this.localeService.getLocaleTextFunc();\n        var columnListName = translate('ariaColumnList', 'Column List');\n        this.virtualList = this.createManagedBean(new VirtualList('column-select', 'tree', columnListName));\n        this.appendChild(this.virtualList.getGui());\n        this.virtualList.setComponentCreator(function (item, listItemElement) {\n            _.setAriaLevel(listItemElement, (item.getDept() + 1));\n            return _this.createComponentFromItem(item, listItemElement);\n        });\n        if (this.columnModel.isReady()) {\n            this.onColumnsChanged();\n        }\n        if (!params.suppressColumnMove && !this.gridOptionsService.is('suppressMovableColumns')) {\n            this.createManagedBean(new PrimaryColsListPanelItemDragFeature(this, this.virtualList));\n        }\n    };\n    PrimaryColsListPanel.prototype.createComponentFromItem = function (item, listItemElement) {\n        if (item.isGroup()) {\n            var renderedGroup = new ToolPanelColumnGroupComp(item, this.allowDragging, this.eventType, listItemElement);\n            this.getContext().createBean(renderedGroup);\n            return renderedGroup;\n        }\n        var columnComp = new ToolPanelColumnComp(item.getColumn(), item.getDept(), this.allowDragging, this.groupsExist, listItemElement);\n        this.getContext().createBean(columnComp);\n        return columnComp;\n    };\n    PrimaryColsListPanel.prototype.onColumnsChanged = function () {\n        var expandedStates = this.getExpandedStates();\n        var pivotModeActive = this.columnModel.isPivotMode();\n        var shouldSyncColumnLayoutWithGrid = !this.params.suppressSyncLayoutWithGrid && !pivotModeActive;\n        if (shouldSyncColumnLayoutWithGrid) {\n            this.buildTreeFromWhatGridIsDisplaying();\n        }\n        else {\n            this.buildTreeFromProvidedColumnDefs();\n        }\n        this.setExpandedStates(expandedStates);\n        this.markFilteredColumns();\n        this.flattenAndFilterModel();\n    };\n    PrimaryColsListPanel.prototype.getDisplayedColsList = function () {\n        return this.displayedColsList;\n    };\n    PrimaryColsListPanel.prototype.getExpandedStates = function () {\n        if (!this.allColsTree) {\n            return {};\n        }\n        var res = {};\n        this.forEachItem(function (item) {\n            if (!item.isGroup()) {\n                return;\n            }\n            var colGroup = item.getColumnGroup();\n            if (colGroup) { // group should always exist, this is defensive\n                res[colGroup.getId()] = item.isExpanded();\n            }\n        });\n        return res;\n    };\n    PrimaryColsListPanel.prototype.setExpandedStates = function (states) {\n        if (!this.allColsTree) {\n            return;\n        }\n        this.forEachItem(function (item) {\n            if (!item.isGroup()) {\n                return;\n            }\n            var colGroup = item.getColumnGroup();\n            if (colGroup) { // group should always exist, this is defensive\n                var expanded = states[colGroup.getId()];\n                var groupExistedLastTime = expanded != null;\n                if (groupExistedLastTime) {\n                    item.setExpanded(expanded);\n                }\n            }\n        });\n    };\n    PrimaryColsListPanel.prototype.buildTreeFromWhatGridIsDisplaying = function () {\n        this.colDefService.syncLayoutWithGrid(this.setColumnLayout.bind(this));\n    };\n    PrimaryColsListPanel.prototype.setColumnLayout = function (colDefs) {\n        var columnTree = this.colDefService.createColumnTree(colDefs);\n        this.buildListModel(columnTree);\n        // using col defs to check if groups exist as it could be a custom layout\n        this.groupsExist = colDefs.some(function (colDef) {\n            return colDef && typeof colDef.children !== 'undefined';\n        });\n        this.markFilteredColumns();\n        this.flattenAndFilterModel();\n    };\n    PrimaryColsListPanel.prototype.buildTreeFromProvidedColumnDefs = function () {\n        // add column / group comps to tool panel\n        this.buildListModel(this.columnModel.getPrimaryColumnTree());\n        this.groupsExist = this.columnModel.isPrimaryColumnGroupsPresent();\n    };\n    PrimaryColsListPanel.prototype.buildListModel = function (columnTree) {\n        var _this = this;\n        var columnExpandedListener = this.onColumnExpanded.bind(this);\n        var addListeners = function (item) {\n            item.addEventListener(ColumnModelItem.EVENT_EXPANDED_CHANGED, columnExpandedListener);\n            var removeFunc = item.removeEventListener.bind(item, ColumnModelItem.EVENT_EXPANDED_CHANGED, columnExpandedListener);\n            _this.destroyColumnItemFuncs.push(removeFunc);\n        };\n        var recursivelyBuild = function (tree, dept, parentList) {\n            tree.forEach(function (child) {\n                if (child instanceof ProvidedColumnGroup) {\n                    createGroupItem(child, dept, parentList);\n                }\n                else {\n                    createColumnItem(child, dept, parentList);\n                }\n            });\n        };\n        var createGroupItem = function (columnGroup, dept, parentList) {\n            var columnGroupDef = columnGroup.getColGroupDef();\n            var skipThisGroup = columnGroupDef && columnGroupDef.suppressColumnsToolPanel;\n            if (skipThisGroup) {\n                return;\n            }\n            if (columnGroup.isPadding()) {\n                recursivelyBuild(columnGroup.getChildren(), dept, parentList);\n                return;\n            }\n            var displayName = _this.columnModel.getDisplayNameForProvidedColumnGroup(null, columnGroup, _this.eventType);\n            var item = new ColumnModelItem(displayName, columnGroup, dept, true, _this.expandGroupsByDefault);\n            parentList.push(item);\n            addListeners(item);\n            recursivelyBuild(columnGroup.getChildren(), dept + 1, item.getChildren());\n        };\n        var createColumnItem = function (column, dept, parentList) {\n            var skipThisColumn = column.getColDef() && column.getColDef().suppressColumnsToolPanel;\n            if (skipThisColumn) {\n                return;\n            }\n            var displayName = _this.columnModel.getDisplayNameForColumn(column, 'columnToolPanel');\n            parentList.push(new ColumnModelItem(displayName, column, dept));\n        };\n        this.destroyColumnTree();\n        recursivelyBuild(columnTree, 0, this.allColsTree);\n    };\n    PrimaryColsListPanel.prototype.onColumnExpanded = function () {\n        this.flattenAndFilterModel();\n    };\n    PrimaryColsListPanel.prototype.flattenAndFilterModel = function () {\n        var _this = this;\n        this.displayedColsList = [];\n        var recursiveFunc = function (item) {\n            if (!item.isPassesFilter()) {\n                return;\n            }\n            _this.displayedColsList.push(item);\n            if (item.isGroup() && item.isExpanded()) {\n                item.getChildren().forEach(recursiveFunc);\n            }\n        };\n        this.allColsTree.forEach(recursiveFunc);\n        this.virtualList.setModel(new UIColumnModel(this.displayedColsList));\n        var focusedRow = this.virtualList.getLastFocusedRow();\n        this.virtualList.refresh();\n        if (focusedRow != null) {\n            this.focusRowIfAlive(focusedRow);\n        }\n        this.notifyListeners();\n    };\n    PrimaryColsListPanel.prototype.focusRowIfAlive = function (rowIndex) {\n        var _this = this;\n        window.setTimeout(function () {\n            if (_this.isAlive()) {\n                _this.virtualList.focusRow(rowIndex);\n            }\n        }, 0);\n    };\n    PrimaryColsListPanel.prototype.forEachItem = function (callback) {\n        var recursiveFunc = function (items) {\n            items.forEach(function (item) {\n                callback(item);\n                if (item.isGroup()) {\n                    recursiveFunc(item.getChildren());\n                }\n            });\n        };\n        recursiveFunc(this.allColsTree);\n    };\n    PrimaryColsListPanel.prototype.doSetExpandedAll = function (value) {\n        this.forEachItem(function (item) {\n            if (item.isGroup()) {\n                item.setExpanded(value);\n            }\n        });\n    };\n    PrimaryColsListPanel.prototype.setGroupsExpanded = function (expand, groupIds) {\n        if (!groupIds) {\n            this.doSetExpandedAll(expand);\n            return;\n        }\n        var expandedGroupIds = [];\n        this.forEachItem(function (item) {\n            if (!item.isGroup()) {\n                return;\n            }\n            var groupId = item.getColumnGroup().getId();\n            if (groupIds.indexOf(groupId) >= 0) {\n                item.setExpanded(expand);\n                expandedGroupIds.push(groupId);\n            }\n        });\n        var unrecognisedGroupIds = groupIds.filter(function (groupId) { return !_.includes(expandedGroupIds, groupId); });\n        if (unrecognisedGroupIds.length > 0) {\n            console.warn('AG Grid: unable to find group(s) for supplied groupIds:', unrecognisedGroupIds);\n        }\n    };\n    PrimaryColsListPanel.prototype.getExpandState = function () {\n        var expandedCount = 0;\n        var notExpandedCount = 0;\n        this.forEachItem(function (item) {\n            if (!item.isGroup()) {\n                return;\n            }\n            if (item.isExpanded()) {\n                expandedCount++;\n            }\n            else {\n                notExpandedCount++;\n            }\n        });\n        if (expandedCount > 0 && notExpandedCount > 0) {\n            return ExpandState.INDETERMINATE;\n        }\n        if (notExpandedCount > 0) {\n            return ExpandState.COLLAPSED;\n        }\n        return ExpandState.EXPANDED;\n    };\n    PrimaryColsListPanel.prototype.doSetSelectedAll = function (selectAllChecked) {\n        this.modelItemUtils.selectAllChildren(this.allColsTree, selectAllChecked, this.eventType);\n    };\n    PrimaryColsListPanel.prototype.getSelectionState = function () {\n        var checkedCount = 0;\n        var uncheckedCount = 0;\n        var pivotMode = this.columnModel.isPivotMode();\n        this.forEachItem(function (item) {\n            if (item.isGroup()) {\n                return;\n            }\n            if (!item.isPassesFilter()) {\n                return;\n            }\n            var column = item.getColumn();\n            var colDef = column.getColDef();\n            var checked;\n            if (pivotMode) {\n                var noPivotModeOptionsAllowed = !column.isAllowPivot() && !column.isAllowRowGroup() && !column.isAllowValue();\n                if (noPivotModeOptionsAllowed) {\n                    return;\n                }\n                checked = column.isValueActive() || column.isPivotActive() || column.isRowGroupActive();\n            }\n            else {\n                if (colDef.lockVisible) {\n                    return;\n                }\n                checked = column.isVisible();\n            }\n            checked ? checkedCount++ : uncheckedCount++;\n        });\n        if (checkedCount > 0 && uncheckedCount > 0) {\n            return undefined;\n        }\n        return !(checkedCount === 0 || uncheckedCount > 0);\n    };\n    PrimaryColsListPanel.prototype.setFilterText = function (filterText) {\n        this.filterText = _.exists(filterText) ? filterText.toLowerCase() : null;\n        this.markFilteredColumns();\n        this.flattenAndFilterModel();\n    };\n    PrimaryColsListPanel.prototype.markFilteredColumns = function () {\n        var _this = this;\n        var passesFilter = function (item) {\n            if (!_.exists(_this.filterText)) {\n                return true;\n            }\n            var displayName = item.getDisplayName();\n            return displayName == null || displayName.toLowerCase().indexOf(_this.filterText) !== -1;\n        };\n        var recursivelyCheckFilter = function (item, parentPasses) {\n            var atLeastOneChildPassed = false;\n            if (item.isGroup()) {\n                var groupPasses_1 = passesFilter(item);\n                item.getChildren().forEach(function (child) {\n                    var childPasses = recursivelyCheckFilter(child, groupPasses_1 || parentPasses);\n                    if (childPasses) {\n                        atLeastOneChildPassed = childPasses;\n                    }\n                });\n            }\n            var filterPasses = (parentPasses || atLeastOneChildPassed) ? true : passesFilter(item);\n            item.setPassesFilter(filterPasses);\n            return filterPasses;\n        };\n        this.allColsTree.forEach(function (item) { return recursivelyCheckFilter(item, false); });\n    };\n    PrimaryColsListPanel.prototype.notifyListeners = function () {\n        this.fireGroupExpandedEvent();\n        this.fireSelectionChangedEvent();\n    };\n    PrimaryColsListPanel.prototype.fireGroupExpandedEvent = function () {\n        var expandState = this.getExpandState();\n        this.dispatchEvent({ type: 'groupExpanded', state: expandState });\n    };\n    PrimaryColsListPanel.prototype.fireSelectionChangedEvent = function () {\n        var selectionState = this.getSelectionState();\n        this.dispatchEvent({ type: 'selectionChanged', state: selectionState });\n    };\n    PrimaryColsListPanel.TEMPLATE = \"<div class=\\\"\" + PRIMARY_COLS_LIST_PANEL_CLASS + \"\\\" role=\\\"presentation\\\"></div>\";\n    __decorate$2o([\n        Autowired('columnModel')\n    ], PrimaryColsListPanel.prototype, \"columnModel\", void 0);\n    __decorate$2o([\n        Autowired('toolPanelColDefService')\n    ], PrimaryColsListPanel.prototype, \"colDefService\", void 0);\n    __decorate$2o([\n        Autowired('modelItemUtils')\n    ], PrimaryColsListPanel.prototype, \"modelItemUtils\", void 0);\n    __decorate$2o([\n        PreDestroy\n    ], PrimaryColsListPanel.prototype, \"destroyColumnTree\", null);\n    return PrimaryColsListPanel;\n}(Component));\n\nvar __extends$3c = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$2n = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar PivotModePanel = /** @class */ (function (_super) {\n    __extends$3c(PivotModePanel, _super);\n    function PivotModePanel() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    PivotModePanel.prototype.createTemplate = function () {\n        return /* html */ \"<div class=\\\"ag-pivot-mode-panel\\\">\\n                <ag-toggle-button ref=\\\"cbPivotMode\\\" class=\\\"ag-pivot-mode-select\\\"></ag-toggle-button>\\n            </div>\";\n    };\n    PivotModePanel.prototype.init = function () {\n        this.setTemplate(this.createTemplate());\n        this.cbPivotMode.setValue(this.columnModel.isPivotMode());\n        var localeTextFunc = this.localeService.getLocaleTextFunc();\n        this.cbPivotMode.setLabel(localeTextFunc('pivotMode', 'Pivot Mode'));\n        this.addManagedListener(this.cbPivotMode, AgCheckbox.EVENT_CHANGED, this.onBtPivotMode.bind(this));\n        this.addManagedListener(this.eventService, Events.EVENT_NEW_COLUMNS_LOADED, this.onPivotModeChanged.bind(this));\n        this.addManagedListener(this.eventService, Events.EVENT_COLUMN_PIVOT_MODE_CHANGED, this.onPivotModeChanged.bind(this));\n    };\n    PivotModePanel.prototype.onBtPivotMode = function () {\n        var newValue = !!this.cbPivotMode.getValue();\n        if (newValue !== this.columnModel.isPivotMode()) {\n            this.columnModel.setPivotMode(newValue, \"toolPanelUi\");\n            var api = this.gridOptionsService.api;\n            if (api) {\n                api.refreshHeader();\n            }\n        }\n    };\n    PivotModePanel.prototype.onPivotModeChanged = function () {\n        var pivotModeActive = this.columnModel.isPivotMode();\n        this.cbPivotMode.setValue(pivotModeActive);\n    };\n    __decorate$2n([\n        Autowired('columnModel')\n    ], PivotModePanel.prototype, \"columnModel\", void 0);\n    __decorate$2n([\n        RefSelector('cbPivotMode')\n    ], PivotModePanel.prototype, \"cbPivotMode\", void 0);\n    __decorate$2n([\n        PreConstruct\n    ], PivotModePanel.prototype, \"init\", null);\n    return PivotModePanel;\n}(Component));\n\nvar __extends$3b = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$2m = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar AggregationStage = /** @class */ (function (_super) {\n    __extends$3b(AggregationStage, _super);\n    function AggregationStage() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    // it's possible to recompute the aggregate without doing the other parts\n    // + api.refreshClientSideRowModel('aggregate')\n    AggregationStage.prototype.execute = function (params) {\n        // if changed path is active, it means we came from a) change detection or b) transaction update.\n        // for both of these, if no value columns are present, it means there is nothing to aggregate now\n        // and there is no cleanup to be done (as value columns don't change between transactions or change\n        // detections). if no value columns and no changed path, means we have to go through all nodes in\n        // case we need to clean up agg data from before.\n        var noValueColumns = _.missingOrEmpty(this.columnModel.getValueColumns());\n        var noUserAgg = !this.getGroupRowAggFunc();\n        var changedPathActive = params.changedPath && params.changedPath.isActive();\n        if (noValueColumns && noUserAgg && changedPathActive) {\n            return;\n        }\n        var aggDetails = this.createAggDetails(params);\n        this.recursivelyCreateAggData(aggDetails);\n    };\n    AggregationStage.prototype.getGroupRowAggFunc = function () {\n        var getGroupRowAgg = this.gridOptionsService.getCallback('getGroupRowAgg');\n        if (getGroupRowAgg) {\n            return getGroupRowAgg;\n        }\n        // this is the deprecated way, so provide a proxy to make it compatible\n        var groupRowAggNodes = this.gridOptionsService.get('groupRowAggNodes');\n        if (groupRowAggNodes) {\n            return function (params) { return groupRowAggNodes(params.nodes); };\n        }\n    };\n    AggregationStage.prototype.createAggDetails = function (params) {\n        var pivotActive = this.columnModel.isPivotActive();\n        var measureColumns = this.columnModel.getValueColumns();\n        var pivotColumns = pivotActive ? this.columnModel.getPivotColumns() : [];\n        var aggDetails = {\n            changedPath: params.changedPath,\n            valueColumns: measureColumns,\n            pivotColumns: pivotColumns\n        };\n        return aggDetails;\n    };\n    AggregationStage.prototype.isSuppressAggFilteredOnly = function () {\n        var isGroupAggFiltering = this.gridOptionsService.getGroupAggFiltering() !== undefined;\n        return isGroupAggFiltering || this.gridOptionsService.is('suppressAggFilteredOnly');\n    };\n    AggregationStage.prototype.recursivelyCreateAggData = function (aggDetails) {\n        var _this = this;\n        // update prop, in case changed since last time\n        this.filteredOnly = !this.isSuppressAggFilteredOnly();\n        var callback = function (rowNode) {\n            var hasNoChildren = !rowNode.hasChildren();\n            if (hasNoChildren) {\n                // this check is needed for TreeData, in case the node is no longer a child,\n                // but it was a child previously.\n                if (rowNode.aggData) {\n                    rowNode.setAggData(null);\n                }\n                // never agg data for leaf nodes\n                return;\n            }\n            //Optionally prevent the aggregation at the root Node\n            //https://ag-grid.atlassian.net/browse/AG-388\n            var isRootNode = rowNode.level === -1;\n            if (isRootNode) {\n                var notPivoting = !_this.columnModel.isPivotMode();\n                var suppressAggAtRootLevel = _this.gridOptionsService.is('suppressAggAtRootLevel');\n                if (suppressAggAtRootLevel && notPivoting) {\n                    return;\n                }\n            }\n            _this.aggregateRowNode(rowNode, aggDetails);\n        };\n        aggDetails.changedPath.forEachChangedNodeDepthFirst(callback, true);\n    };\n    AggregationStage.prototype.aggregateRowNode = function (rowNode, aggDetails) {\n        var measureColumnsMissing = aggDetails.valueColumns.length === 0;\n        var pivotColumnsMissing = aggDetails.pivotColumns.length === 0;\n        var userFunc = this.getGroupRowAggFunc();\n        var aggResult;\n        if (userFunc) {\n            var params = { nodes: rowNode.childrenAfterFilter };\n            aggResult = userFunc(params);\n        }\n        else if (measureColumnsMissing) {\n            aggResult = null;\n        }\n        else if (pivotColumnsMissing) {\n            aggResult = this.aggregateRowNodeUsingValuesOnly(rowNode, aggDetails);\n        }\n        else {\n            aggResult = this.aggregateRowNodeUsingValuesAndPivot(rowNode);\n        }\n        rowNode.setAggData(aggResult);\n        // if we are grouping, then it's possible there is a sibling footer\n        // to the group, so update the data here also if there is one\n        if (rowNode.sibling) {\n            rowNode.sibling.setAggData(aggResult);\n        }\n    };\n    AggregationStage.prototype.aggregateRowNodeUsingValuesAndPivot = function (rowNode) {\n        var _this = this;\n        var _a;\n        var result = {};\n        var secondaryColumns = (_a = this.columnModel.getSecondaryColumns()) !== null && _a !== void 0 ? _a : [];\n        secondaryColumns.forEach(function (secondaryCol) {\n            var _a = secondaryCol.getColDef(), pivotValueColumn = _a.pivotValueColumn, pivotTotalColumnIds = _a.pivotTotalColumnIds, colId = _a.colId, pivotKeys = _a.pivotKeys;\n            if (_.exists(pivotTotalColumnIds)) {\n                return;\n            }\n            var keys = pivotKeys !== null && pivotKeys !== void 0 ? pivotKeys : [];\n            var values;\n            if (rowNode.leafGroup) {\n                // lowest level group, get the values from the mapped set\n                values = _this.getValuesFromMappedSet(rowNode.childrenMapped, keys, pivotValueColumn);\n            }\n            else {\n                // value columns and pivot columns, non-leaf group\n                values = _this.getValuesPivotNonLeaf(rowNode, colId);\n            }\n            result[colId] = _this.aggregateValues(values, pivotValueColumn.getAggFunc(), pivotValueColumn, rowNode, secondaryCol);\n        });\n        secondaryColumns.forEach(function (secondaryCol) {\n            var _a = secondaryCol.getColDef(), pivotValueColumn = _a.pivotValueColumn, pivotTotalColumnIds = _a.pivotTotalColumnIds, colId = _a.colId;\n            if (!_.exists(pivotTotalColumnIds)) {\n                return;\n            }\n            var aggResults = [];\n            //retrieve results for colIds associated with this pivot total column\n            if (!pivotTotalColumnIds || !pivotTotalColumnIds.length) {\n                return;\n            }\n            pivotTotalColumnIds.forEach(function (currentColId) {\n                aggResults.push(result[currentColId]);\n            });\n            result[colId] = _this.aggregateValues(aggResults, pivotValueColumn.getAggFunc(), pivotValueColumn, rowNode, secondaryCol);\n        });\n        return result;\n    };\n    AggregationStage.prototype.aggregateRowNodeUsingValuesOnly = function (rowNode, aggDetails) {\n        var _this = this;\n        var result = {};\n        var changedValueColumns = aggDetails.changedPath.isActive() ?\n            aggDetails.changedPath.getValueColumnsForNode(rowNode, aggDetails.valueColumns)\n            : aggDetails.valueColumns;\n        var notChangedValueColumns = aggDetails.changedPath.isActive() ?\n            aggDetails.changedPath.getNotValueColumnsForNode(rowNode, aggDetails.valueColumns)\n            : null;\n        var values2d = this.getValuesNormal(rowNode, changedValueColumns);\n        var oldValues = rowNode.aggData;\n        changedValueColumns.forEach(function (valueColumn, index) {\n            result[valueColumn.getId()] = _this.aggregateValues(values2d[index], valueColumn.getAggFunc(), valueColumn, rowNode);\n        });\n        if (notChangedValueColumns && oldValues) {\n            notChangedValueColumns.forEach(function (valueColumn) {\n                result[valueColumn.getId()] = oldValues[valueColumn.getId()];\n            });\n        }\n        return result;\n    };\n    AggregationStage.prototype.getValuesPivotNonLeaf = function (rowNode, colId) {\n        var values = [];\n        rowNode.childrenAfterFilter.forEach(function (node) {\n            var value = node.aggData[colId];\n            values.push(value);\n        });\n        return values;\n    };\n    AggregationStage.prototype.getValuesFromMappedSet = function (mappedSet, keys, valueColumn) {\n        var _this = this;\n        var mapPointer = mappedSet;\n        keys.forEach(function (key) { return (mapPointer = mapPointer ? mapPointer[key] : null); });\n        if (!mapPointer) {\n            return [];\n        }\n        var values = [];\n        mapPointer.forEach(function (rowNode) {\n            var value = _this.valueService.getValue(valueColumn, rowNode);\n            values.push(value);\n        });\n        return values;\n    };\n    AggregationStage.prototype.getValuesNormal = function (rowNode, valueColumns) {\n        // create 2d array, of all values for all valueColumns\n        var values = [];\n        valueColumns.forEach(function () { return values.push([]); });\n        var valueColumnCount = valueColumns.length;\n        var nodeList = this.filteredOnly ? rowNode.childrenAfterFilter : rowNode.childrenAfterGroup;\n        var rowCount = nodeList.length;\n        for (var i = 0; i < rowCount; i++) {\n            var childNode = nodeList[i];\n            for (var j = 0; j < valueColumnCount; j++) {\n                var valueColumn = valueColumns[j];\n                // if the row is a group, then it will only have an agg result value,\n                // which means valueGetter is never used.\n                var value = this.valueService.getValue(valueColumn, childNode);\n                values[j].push(value);\n            }\n        }\n        return values;\n    };\n    AggregationStage.prototype.aggregateValues = function (values, aggFuncOrString, column, rowNode, pivotResultColumn) {\n        var aggFunc = typeof aggFuncOrString === 'string' ?\n            this.aggFuncService.getAggFunc(aggFuncOrString) :\n            aggFuncOrString;\n        if (typeof aggFunc !== 'function') {\n            console.error(\"AG Grid: unrecognised aggregation function \" + aggFuncOrString);\n            return null;\n        }\n        var aggFuncAny = aggFunc;\n        var params = {\n            values: values,\n            column: column,\n            colDef: column ? column.getColDef() : undefined,\n            pivotResultColumn: pivotResultColumn,\n            rowNode: rowNode,\n            data: rowNode ? rowNode.data : undefined,\n            api: this.gridApi,\n            columnApi: this.columnApi,\n            context: this.gridOptionsService.context,\n        }; // the \"as any\" is needed to allow the deprecation warning messages\n        return aggFuncAny(params);\n    };\n    __decorate$2m([\n        Autowired('columnModel')\n    ], AggregationStage.prototype, \"columnModel\", void 0);\n    __decorate$2m([\n        Autowired('valueService')\n    ], AggregationStage.prototype, \"valueService\", void 0);\n    __decorate$2m([\n        Autowired('aggFuncService')\n    ], AggregationStage.prototype, \"aggFuncService\", void 0);\n    __decorate$2m([\n        Autowired('gridApi')\n    ], AggregationStage.prototype, \"gridApi\", void 0);\n    __decorate$2m([\n        Autowired('columnApi')\n    ], AggregationStage.prototype, \"columnApi\", void 0);\n    AggregationStage = __decorate$2m([\n        Bean('aggregationStage')\n    ], AggregationStage);\n    return AggregationStage;\n}(BeanStub));\n\nvar BatchRemover = /** @class */ (function () {\n    function BatchRemover() {\n        this.allSets = {};\n        this.allParents = [];\n    }\n    BatchRemover.prototype.removeFromChildrenAfterGroup = function (parent, child) {\n        var set = this.getSet(parent);\n        set.removeFromChildrenAfterGroup[child.id] = true;\n    };\n    BatchRemover.prototype.isRemoveFromAllLeafChildren = function (parent, child) {\n        var set = this.getSet(parent);\n        return !!set.removeFromAllLeafChildren[child.id];\n    };\n    BatchRemover.prototype.preventRemoveFromAllLeafChildren = function (parent, child) {\n        var set = this.getSet(parent);\n        delete set.removeFromAllLeafChildren[child.id];\n    };\n    BatchRemover.prototype.removeFromAllLeafChildren = function (parent, child) {\n        var set = this.getSet(parent);\n        set.removeFromAllLeafChildren[child.id] = true;\n    };\n    BatchRemover.prototype.getSet = function (parent) {\n        if (!this.allSets[parent.id]) {\n            this.allSets[parent.id] = {\n                removeFromAllLeafChildren: {},\n                removeFromChildrenAfterGroup: {}\n            };\n            this.allParents.push(parent);\n        }\n        return this.allSets[parent.id];\n    };\n    BatchRemover.prototype.getAllParents = function () {\n        return this.allParents;\n    };\n    BatchRemover.prototype.flush = function () {\n        var _this = this;\n        this.allParents.forEach(function (parent) {\n            var nodeDetails = _this.allSets[parent.id];\n            parent.childrenAfterGroup = parent.childrenAfterGroup.filter(function (child) { return !nodeDetails.removeFromChildrenAfterGroup[child.id]; });\n            parent.allLeafChildren = parent.allLeafChildren.filter(function (child) { return !nodeDetails.removeFromAllLeafChildren[child.id]; });\n            parent.updateHasChildren();\n            if (parent.sibling) {\n                parent.sibling.childrenAfterGroup = parent.childrenAfterGroup;\n                parent.sibling.allLeafChildren = parent.allLeafChildren;\n            }\n        });\n        this.allSets = {};\n        this.allParents.length = 0;\n    };\n    return BatchRemover;\n}());\n\nvar __extends$3a = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$2l = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __read$1a = (undefined && undefined.__read) || function (o, n) {\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n    if (!m) return o;\n    var i = m.call(o), r, ar = [], e;\n    try {\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n    }\n    catch (error) { e = { error: error }; }\n    finally {\n        try {\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\n        }\n        finally { if (e) throw e.error; }\n    }\n    return ar;\n};\nvar __spread$I = (undefined && undefined.__spread) || function () {\n    for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read$1a(arguments[i]));\n    return ar;\n};\nvar GroupStage = /** @class */ (function (_super) {\n    __extends$3a(GroupStage, _super);\n    function GroupStage() {\n        var _this = _super !== null && _super.apply(this, arguments) || this;\n        // we use a sequence variable so that each time we do a grouping, we don't\n        // reuse the ids - otherwise the rowRenderer will confuse rowNodes between redraws\n        // when it tries to animate between rows.\n        _this.groupIdSequence = new NumberSequence();\n        return _this;\n    }\n    GroupStage.prototype.postConstruct = function () {\n        this.usingTreeData = this.gridOptionsService.isTreeData();\n        if (this.usingTreeData) {\n            this.getDataPath = this.gridOptionsService.get('getDataPath');\n        }\n    };\n    GroupStage.prototype.execute = function (params) {\n        var details = this.createGroupingDetails(params);\n        if (details.transactions) {\n            this.handleTransaction(details);\n        }\n        else {\n            var afterColsChanged = params.afterColumnsChanged === true;\n            this.shotgunResetEverything(details, afterColsChanged);\n        }\n        this.positionLeafsAndGroups(params.changedPath);\n        this.orderGroups(details.rootNode);\n        this.selectableService.updateSelectableAfterGrouping(details.rootNode);\n    };\n    GroupStage.prototype.positionLeafsAndGroups = function (changedPath) {\n        // we don't do group sorting for tree data\n        if (this.usingTreeData) {\n            return;\n        }\n        changedPath.forEachChangedNodeDepthFirst(function (group) {\n            if (group.childrenAfterGroup) {\n                var leafNodes_1 = [];\n                var groupNodes_1 = [];\n                var unbalancedNode_1;\n                group.childrenAfterGroup.forEach(function (row) {\n                    var _a;\n                    if (!((_a = row.childrenAfterGroup) === null || _a === void 0 ? void 0 : _a.length)) {\n                        leafNodes_1.push(row);\n                    }\n                    else {\n                        if (row.key === '' && !unbalancedNode_1) {\n                            unbalancedNode_1 = row;\n                        }\n                        else {\n                            groupNodes_1.push(row);\n                        }\n                    }\n                });\n                if (unbalancedNode_1) {\n                    groupNodes_1.push(unbalancedNode_1);\n                }\n                group.childrenAfterGroup = __spread$I(leafNodes_1, groupNodes_1);\n            }\n        }, false);\n    };\n    GroupStage.prototype.createGroupingDetails = function (params) {\n        var rowNode = params.rowNode, changedPath = params.changedPath, rowNodeTransactions = params.rowNodeTransactions, rowNodeOrder = params.rowNodeOrder;\n        var groupedCols = this.usingTreeData ? null : this.columnModel.getRowGroupColumns();\n        var details = {\n            // someone complained that the parent attribute was causing some change detection\n            // to break is some angular add-on - which i never used. taking the parent out breaks\n            // a cyclic dependency, hence this flag got introduced.\n            includeParents: !this.gridOptionsService.is('suppressParentsInRowNodes'),\n            expandByDefault: this.gridOptionsService.getNum('groupDefaultExpanded'),\n            groupedCols: groupedCols,\n            rootNode: rowNode,\n            pivotMode: this.columnModel.isPivotMode(),\n            groupedColCount: this.usingTreeData || !groupedCols ? 0 : groupedCols.length,\n            rowNodeOrder: rowNodeOrder,\n            transactions: rowNodeTransactions,\n            // if no transaction, then it's shotgun, changed path would be 'not active' at this point anyway\n            changedPath: changedPath\n        };\n        return details;\n    };\n    GroupStage.prototype.handleTransaction = function (details) {\n        var _this = this;\n        details.transactions.forEach(function (tran) {\n            // we don't allow batch remover for tree data as tree data uses Filler Nodes,\n            // and creating/deleting filler nodes needs to be done alongside the node deleting\n            // and moving. if we want to Batch Remover working with tree data then would need\n            // to consider how Filler Nodes would be impacted (it's possible that it can be easily\n            // modified to work, however for now I don't have the brain energy to work it all out).\n            var batchRemover = !_this.usingTreeData ? new BatchRemover() : undefined;\n            // the order here of [add, remove, update] needs to be the same as in ClientSideNodeManager,\n            // as the order is important when a record with the same id is added and removed in the same\n            // transaction.\n            if (_.existsAndNotEmpty(tran.remove)) {\n                _this.removeNodes(tran.remove, details, batchRemover);\n            }\n            if (_.existsAndNotEmpty(tran.update)) {\n                _this.moveNodesInWrongPath(tran.update, details, batchRemover);\n            }\n            if (_.existsAndNotEmpty(tran.add)) {\n                _this.insertNodes(tran.add, details, false);\n            }\n            // must flush here, and not allow another transaction to be applied,\n            // as each transaction must finish leaving the data in a consistent state.\n            if (batchRemover) {\n                var parentsWithChildrenRemoved = batchRemover.getAllParents().slice();\n                batchRemover.flush();\n                _this.removeEmptyGroups(parentsWithChildrenRemoved, details);\n            }\n        });\n        if (details.rowNodeOrder) {\n            this.sortChildren(details);\n        }\n    };\n    // this is used when doing delta updates, eg Redux, keeps nodes in right order\n    GroupStage.prototype.sortChildren = function (details) {\n        details.changedPath.forEachChangedNodeDepthFirst(function (node) {\n            if (!node.childrenAfterGroup) {\n                return;\n            }\n            var didSort = _.sortRowNodesByOrder(node.childrenAfterGroup, details.rowNodeOrder);\n            if (didSort) {\n                details.changedPath.addParentNode(node);\n            }\n        }, false, true);\n    };\n    GroupStage.prototype.orderGroups = function (rootNode) {\n        // we don't do group sorting for tree data\n        if (this.usingTreeData) {\n            return;\n        }\n        var comparator = this.getInitialGroupOrderComparator();\n        if (_.exists(comparator)) {\n            recursiveSort(rootNode);\n        }\n        function recursiveSort(rowNode) {\n            var doSort = _.exists(rowNode.childrenAfterGroup) &&\n                // we only want to sort groups, so we do not sort leafs (a leaf group has leafs as children)\n                !rowNode.leafGroup;\n            if (doSort) {\n                rowNode.childrenAfterGroup.sort(function (nodeA, nodeB) { return comparator({ nodeA: nodeA, nodeB: nodeB }); });\n                rowNode.childrenAfterGroup.forEach(function (childNode) { return recursiveSort(childNode); });\n            }\n        }\n    };\n    GroupStage.prototype.getInitialGroupOrderComparator = function () {\n        var initialGroupOrderComparator = this.gridOptionsService.getCallback('initialGroupOrderComparator');\n        if (initialGroupOrderComparator) {\n            return initialGroupOrderComparator;\n        }\n        // this is the deprecated way, so provide a proxy to make it compatible\n        var defaultGroupOrderComparator = this.gridOptionsService.get('defaultGroupOrderComparator');\n        if (defaultGroupOrderComparator) {\n            return function (params) { return defaultGroupOrderComparator(params.nodeA, params.nodeB); };\n        }\n    };\n    GroupStage.prototype.getExistingPathForNode = function (node, details) {\n        var res = [];\n        // when doing tree data, the node is part of the path,\n        // but when doing grid grouping, the node is not part of the path so we start with the parent.\n        var pointer = this.usingTreeData ? node : node.parent;\n        while (pointer && pointer !== details.rootNode) {\n            res.push({\n                key: pointer.key,\n                rowGroupColumn: pointer.rowGroupColumn,\n                field: pointer.field\n            });\n            pointer = pointer.parent;\n        }\n        res.reverse();\n        return res;\n    };\n    GroupStage.prototype.moveNodesInWrongPath = function (childNodes, details, batchRemover) {\n        var _this = this;\n        childNodes.forEach(function (childNode) {\n            // we add node, even if parent has not changed, as the data could have\n            // changed, hence aggregations will be wrong\n            if (details.changedPath.isActive()) {\n                details.changedPath.addParentNode(childNode.parent);\n            }\n            var infoToKeyMapper = function (item) { return item.key; };\n            var oldPath = _this.getExistingPathForNode(childNode, details).map(infoToKeyMapper);\n            var newPath = _this.getGroupInfo(childNode, details).map(infoToKeyMapper);\n            var nodeInCorrectPath = _.areEqual(oldPath, newPath);\n            if (!nodeInCorrectPath) {\n                _this.moveNode(childNode, details, batchRemover);\n            }\n        });\n    };\n    GroupStage.prototype.moveNode = function (childNode, details, batchRemover) {\n        this.removeNodesInStages([childNode], details, batchRemover);\n        this.insertOneNode(childNode, details, true, batchRemover);\n        // hack - if we didn't do this, then renaming a tree item (ie changing rowNode.key) wouldn't get\n        // refreshed into the gui.\n        // this is needed to kick off the event that rowComp listens to for refresh. this in turn\n        // then will get each cell in the row to refresh - which is what we need as we don't know which\n        // columns will be displaying the rowNode.key info.\n        childNode.setData(childNode.data);\n        // we add both old and new parents to changed path, as both will need to be refreshed.\n        // we already added the old parent (in calling method), so just add the new parent here\n        if (details.changedPath.isActive()) {\n            var newParent = childNode.parent;\n            details.changedPath.addParentNode(newParent);\n        }\n    };\n    GroupStage.prototype.removeNodes = function (leafRowNodes, details, batchRemover) {\n        this.removeNodesInStages(leafRowNodes, details, batchRemover);\n        if (details.changedPath.isActive()) {\n            leafRowNodes.forEach(function (rowNode) { return details.changedPath.addParentNode(rowNode.parent); });\n        }\n    };\n    GroupStage.prototype.removeNodesInStages = function (leafRowNodes, details, batchRemover) {\n        this.removeNodesFromParents(leafRowNodes, details, batchRemover);\n        if (this.usingTreeData) {\n            this.postRemoveCreateFillerNodes(leafRowNodes, details);\n            // When not TreeData, then removeEmptyGroups is called just before the BatchRemover is flushed.\n            // However for TreeData, there is no BatchRemover, so we have to call removeEmptyGroups here.\n            var nodeParents = leafRowNodes.map(function (n) { return n.parent; });\n            this.removeEmptyGroups(nodeParents, details);\n        }\n    };\n    GroupStage.prototype.forEachParentGroup = function (details, group, callback) {\n        var pointer = group;\n        while (pointer && pointer !== details.rootNode) {\n            callback(pointer);\n            pointer = pointer.parent;\n        }\n    };\n    GroupStage.prototype.removeNodesFromParents = function (nodesToRemove, details, provided) {\n        var _this = this;\n        // this method can be called with BatchRemover as optional. if it is missed, we created a local version\n        // and flush it at the end. if one is provided, we add to the provided one and it gets flushed elsewhere.\n        var batchRemoverIsLocal = provided == null;\n        var batchRemoverToUse = provided ? provided : new BatchRemover();\n        nodesToRemove.forEach(function (nodeToRemove) {\n            _this.removeFromParent(nodeToRemove, batchRemoverToUse);\n            // remove from allLeafChildren. we clear down all parents EXCEPT the Root Node, as\n            // the ClientSideNodeManager is responsible for the Root Node.\n            _this.forEachParentGroup(details, nodeToRemove.parent, function (parentNode) {\n                batchRemoverToUse.removeFromAllLeafChildren(parentNode, nodeToRemove);\n            });\n        });\n        if (batchRemoverIsLocal) {\n            batchRemoverToUse.flush();\n        }\n    };\n    GroupStage.prototype.postRemoveCreateFillerNodes = function (nodesToRemove, details) {\n        var _this = this;\n        nodesToRemove.forEach(function (nodeToRemove) {\n            // if not group, and children are present, need to move children to a group.\n            // otherwise if no children, we can just remove without replacing.\n            var replaceWithGroup = nodeToRemove.hasChildren();\n            if (replaceWithGroup) {\n                var oldPath = _this.getExistingPathForNode(nodeToRemove, details);\n                // because we just removed the userGroup, this will always return new support group\n                var newGroupNode_1 = _this.findParentForNode(nodeToRemove, oldPath, details);\n                // these properties are the ones that will be incorrect in the newly created group,\n                // so copy them from the old childNode\n                newGroupNode_1.expanded = nodeToRemove.expanded;\n                newGroupNode_1.allLeafChildren = nodeToRemove.allLeafChildren;\n                newGroupNode_1.childrenAfterGroup = nodeToRemove.childrenAfterGroup;\n                newGroupNode_1.childrenMapped = nodeToRemove.childrenMapped;\n                newGroupNode_1.updateHasChildren();\n                newGroupNode_1.childrenAfterGroup.forEach(function (rowNode) { return rowNode.parent = newGroupNode_1; });\n            }\n        });\n    };\n    GroupStage.prototype.removeEmptyGroups = function (possibleEmptyGroups, details) {\n        var _this = this;\n        // we do this multiple times, as when we remove groups, that means the parent of just removed\n        // group can then be empty. to get around this, if we remove, then we check everything again for\n        // newly emptied groups. the max number of times this will execute is the depth of the group tree.\n        var checkAgain = true;\n        var groupShouldBeRemoved = function (rowNode) {\n            // because of the while loop below, it's possible we already moved the node,\n            // so double check before trying to remove again.\n            var mapKey = _this.getChildrenMappedKey(rowNode.key, rowNode.rowGroupColumn);\n            var parentRowNode = rowNode.parent;\n            var groupAlreadyRemoved = (parentRowNode && parentRowNode.childrenMapped) ?\n                !parentRowNode.childrenMapped[mapKey] : true;\n            if (groupAlreadyRemoved) {\n                // if not linked, then group was already removed\n                return false;\n            }\n            // if still not removed, then we remove if this group is empty\n            return !!rowNode.isEmptyRowGroupNode();\n        };\n        var _loop_1 = function () {\n            checkAgain = false;\n            var batchRemover = new BatchRemover();\n            possibleEmptyGroups.forEach(function (possibleEmptyGroup) {\n                // remove empty groups\n                _this.forEachParentGroup(details, possibleEmptyGroup, function (rowNode) {\n                    if (groupShouldBeRemoved(rowNode)) {\n                        checkAgain = true;\n                        _this.removeFromParent(rowNode, batchRemover);\n                        // we remove selection on filler nodes here, as the selection would not be removed\n                        // from the RowNodeManager, as filler nodes don't exist on the RowNodeManager\n                        rowNode.setSelectedParams({ newValue: false, source: 'rowGroupChanged' });\n                    }\n                });\n            });\n            batchRemover.flush();\n        };\n        while (checkAgain) {\n            _loop_1();\n        }\n    };\n    // removes the node from the parent by:\n    // a) removing from childrenAfterGroup (using batchRemover if present, otherwise immediately)\n    // b) removing from childrenMapped (immediately)\n    // c) setRowTop(null) - as the rowRenderer uses this to know the RowNode is no longer needed\n    // d) setRowIndex(null) - as the rowNode will no longer be displayed.\n    GroupStage.prototype.removeFromParent = function (child, batchRemover) {\n        if (child.parent) {\n            if (batchRemover) {\n                batchRemover.removeFromChildrenAfterGroup(child.parent, child);\n            }\n            else {\n                _.removeFromArray(child.parent.childrenAfterGroup, child);\n                child.parent.updateHasChildren();\n            }\n        }\n        var mapKey = this.getChildrenMappedKey(child.key, child.rowGroupColumn);\n        if (child.parent && child.parent.childrenMapped) {\n            child.parent.childrenMapped[mapKey] = undefined;\n        }\n        // this is important for transition, see rowComp removeFirstPassFuncs. when doing animation and\n        // remove, if rowTop is still present, the rowComp thinks it's just moved position.\n        child.setRowTop(null);\n        child.setRowIndex(null);\n    };\n    GroupStage.prototype.addToParent = function (child, parent) {\n        var mapKey = this.getChildrenMappedKey(child.key, child.rowGroupColumn);\n        if (parent) {\n            var children = parent.childrenMapped != null;\n            if (children) {\n                parent.childrenMapped[mapKey] = child;\n            }\n            parent.childrenAfterGroup.push(child);\n            parent.updateHasChildren();\n        }\n    };\n    GroupStage.prototype.areGroupColsEqual = function (d1, d2) {\n        if (d1 == null || d2 == null || d1.pivotMode !== d2.pivotMode) {\n            return false;\n        }\n        return _.areEqual(d1.groupedCols, d2.groupedCols);\n    };\n    GroupStage.prototype.checkAllGroupDataAfterColsChanged = function (details) {\n        var _this = this;\n        var recurse = function (rowNodes) {\n            if (!rowNodes) {\n                return;\n            }\n            rowNodes.forEach(function (rowNode) {\n                var isLeafNode = !_this.usingTreeData && !rowNode.group;\n                if (isLeafNode) {\n                    return;\n                }\n                var groupInfo = {\n                    field: rowNode.field,\n                    key: rowNode.key,\n                    rowGroupColumn: rowNode.rowGroupColumn\n                };\n                _this.setGroupData(rowNode, groupInfo);\n                recurse(rowNode.childrenAfterGroup);\n            });\n        };\n        recurse(details.rootNode.childrenAfterGroup);\n    };\n    GroupStage.prototype.shotgunResetEverything = function (details, afterColumnsChanged) {\n        if (this.noChangeInGroupingColumns(details, afterColumnsChanged)) {\n            return;\n        }\n        // groups are about to get disposed, so need to deselect any that are selected\n        this.selectionService.filterFromSelection(function (node) { return node && !node.group; });\n        var rootNode = details.rootNode, groupedCols = details.groupedCols;\n        // because we are not creating the root node each time, we have the logic\n        // here to change leafGroup once.\n        // we set .leafGroup to false for tree data, as .leafGroup is only used when pivoting, and pivoting\n        // isn't allowed with treeData, so the grid never actually use .leafGroup when doing treeData.\n        rootNode.leafGroup = this.usingTreeData ? false : groupedCols.length === 0;\n        // we are doing everything from scratch, so reset childrenAfterGroup and childrenMapped from the rootNode\n        rootNode.childrenAfterGroup = [];\n        rootNode.childrenMapped = {};\n        rootNode.updateHasChildren();\n        var sibling = rootNode.sibling;\n        if (sibling) {\n            sibling.childrenAfterGroup = rootNode.childrenAfterGroup;\n            sibling.childrenMapped = rootNode.childrenMapped;\n        }\n        this.insertNodes(rootNode.allLeafChildren, details, false);\n    };\n    GroupStage.prototype.noChangeInGroupingColumns = function (details, afterColumnsChanged) {\n        var noFurtherProcessingNeeded = false;\n        var groupDisplayColumns = this.columnModel.getGroupDisplayColumns();\n        var newGroupDisplayColIds = groupDisplayColumns ?\n            groupDisplayColumns.map(function (c) { return c.getId(); }).join('-') : '';\n        if (afterColumnsChanged) {\n            // we only need to redo grouping if doing normal grouping (ie not tree data)\n            // and the group cols have changed.\n            noFurtherProcessingNeeded = this.usingTreeData || this.areGroupColsEqual(details, this.oldGroupingDetails);\n            // if the group display cols have changed, then we need to update rowNode.groupData\n            // (regardless of tree data or row grouping)\n            if (this.oldGroupDisplayColIds !== newGroupDisplayColIds) {\n                this.checkAllGroupDataAfterColsChanged(details);\n            }\n        }\n        this.oldGroupingDetails = details;\n        this.oldGroupDisplayColIds = newGroupDisplayColIds;\n        return noFurtherProcessingNeeded;\n    };\n    GroupStage.prototype.insertNodes = function (newRowNodes, details, isMove) {\n        var _this = this;\n        newRowNodes.forEach(function (rowNode) {\n            _this.insertOneNode(rowNode, details, isMove);\n            if (details.changedPath.isActive()) {\n                details.changedPath.addParentNode(rowNode.parent);\n            }\n        });\n    };\n    GroupStage.prototype.insertOneNode = function (childNode, details, isMove, batchRemover) {\n        var path = this.getGroupInfo(childNode, details);\n        var parentGroup = this.findParentForNode(childNode, path, details, batchRemover);\n        if (!parentGroup.group) {\n            console.warn(\"AG Grid: duplicate group keys for row data, keys should be unique\", [parentGroup.data, childNode.data]);\n        }\n        if (this.usingTreeData) {\n            this.swapGroupWithUserNode(parentGroup, childNode, isMove);\n        }\n        else {\n            childNode.parent = parentGroup;\n            childNode.level = path.length;\n            parentGroup.childrenAfterGroup.push(childNode);\n            parentGroup.updateHasChildren();\n        }\n    };\n    GroupStage.prototype.findParentForNode = function (childNode, path, details, batchRemover) {\n        var _this = this;\n        var nextNode = details.rootNode;\n        path.forEach(function (groupInfo, level) {\n            nextNode = _this.getOrCreateNextNode(nextNode, groupInfo, level, details);\n            // node gets added to all group nodes.\n            // note: we do not add to rootNode here, as the rootNode is the master list of rowNodes\n            if (!(batchRemover === null || batchRemover === void 0 ? void 0 : batchRemover.isRemoveFromAllLeafChildren(nextNode, childNode))) {\n                nextNode.allLeafChildren.push(childNode);\n            }\n            else {\n                // if this node is about to be removed, prevent that\n                batchRemover === null || batchRemover === void 0 ? void 0 : batchRemover.preventRemoveFromAllLeafChildren(nextNode, childNode);\n            }\n        });\n        return nextNode;\n    };\n    GroupStage.prototype.swapGroupWithUserNode = function (fillerGroup, userGroup, isMove) {\n        userGroup.parent = fillerGroup.parent;\n        userGroup.key = fillerGroup.key;\n        userGroup.field = fillerGroup.field;\n        userGroup.groupData = fillerGroup.groupData;\n        userGroup.level = fillerGroup.level;\n        // AG-3441 - preserve the existing expanded status of the node if we're moving it, so that\n        // you can drag a sub tree from one parent to another without changing its expansion\n        if (!isMove) {\n            userGroup.expanded = fillerGroup.expanded;\n        }\n        // we set .leafGroup to false for tree data, as .leafGroup is only used when pivoting, and pivoting\n        // isn't allowed with treeData, so the grid never actually use .leafGroup when doing treeData.\n        userGroup.leafGroup = fillerGroup.leafGroup;\n        // always null for userGroups, as row grouping is not allowed when doing tree data\n        userGroup.rowGroupIndex = fillerGroup.rowGroupIndex;\n        userGroup.allLeafChildren = fillerGroup.allLeafChildren;\n        userGroup.childrenAfterGroup = fillerGroup.childrenAfterGroup;\n        userGroup.childrenMapped = fillerGroup.childrenMapped;\n        userGroup.sibling = fillerGroup.sibling;\n        userGroup.updateHasChildren();\n        this.removeFromParent(fillerGroup);\n        userGroup.childrenAfterGroup.forEach(function (rowNode) { return rowNode.parent = userGroup; });\n        this.addToParent(userGroup, fillerGroup.parent);\n    };\n    GroupStage.prototype.getOrCreateNextNode = function (parentGroup, groupInfo, level, details) {\n        var key = this.getChildrenMappedKey(groupInfo.key, groupInfo.rowGroupColumn);\n        var nextNode = parentGroup.childrenMapped ? parentGroup.childrenMapped[key] : undefined;\n        if (!nextNode) {\n            nextNode = this.createGroup(groupInfo, parentGroup, level, details);\n            // attach the new group to the parent\n            this.addToParent(nextNode, parentGroup);\n        }\n        return nextNode;\n    };\n    GroupStage.prototype.createGroup = function (groupInfo, parent, level, details) {\n        var groupNode = new RowNode(this.beans);\n        groupNode.group = true;\n        groupNode.field = groupInfo.field;\n        groupNode.rowGroupColumn = groupInfo.rowGroupColumn;\n        this.setGroupData(groupNode, groupInfo);\n        // we put 'row-group-' before the group id, so it doesn't clash with standard row id's. we also use 't-' and 'b-'\n        // for top pinned and bottom pinned rows.\n        groupNode.id = RowNode.ID_PREFIX_ROW_GROUP + this.groupIdSequence.next();\n        groupNode.key = groupInfo.key;\n        groupNode.level = level;\n        groupNode.leafGroup = this.usingTreeData ? false : level === (details.groupedColCount - 1);\n        groupNode.allLeafChildren = [];\n        // why is this done here? we are not updating the children count as we go,\n        // i suspect this is updated in the filter stage\n        groupNode.setAllChildrenCount(0);\n        groupNode.rowGroupIndex = this.usingTreeData ? null : level;\n        groupNode.childrenAfterGroup = [];\n        groupNode.childrenMapped = {};\n        groupNode.updateHasChildren();\n        groupNode.parent = details.includeParents ? parent : null;\n        this.setExpandedInitialValue(details, groupNode);\n        if (this.gridOptionsService.is('groupIncludeFooter')) {\n            groupNode.createFooter();\n        }\n        return groupNode;\n    };\n    GroupStage.prototype.setGroupData = function (groupNode, groupInfo) {\n        var _this = this;\n        groupNode.groupData = {};\n        var groupDisplayCols = this.columnModel.getGroupDisplayColumns();\n        groupDisplayCols.forEach(function (col) {\n            // newGroup.rowGroupColumn=null when working off GroupInfo, and we always display the group in the group column\n            // if rowGroupColumn is present, then it's grid row grouping and we only include if configuration says so\n            var displayGroupForCol = _this.usingTreeData || (groupNode.rowGroupColumn ? col.isRowGroupDisplayed(groupNode.rowGroupColumn.getId()) : false);\n            if (displayGroupForCol) {\n                groupNode.groupData[col.getColId()] = groupInfo.key;\n            }\n        });\n    };\n    GroupStage.prototype.getChildrenMappedKey = function (key, rowGroupColumn) {\n        if (rowGroupColumn) {\n            // grouping by columns\n            return rowGroupColumn.getId() + '-' + key;\n        }\n        // tree data - we don't have rowGroupColumns\n        return key;\n    };\n    GroupStage.prototype.setExpandedInitialValue = function (details, groupNode) {\n        // if pivoting the leaf group is never expanded as we do not show leaf rows\n        if (details.pivotMode && groupNode.leafGroup) {\n            groupNode.expanded = false;\n            return;\n        }\n        // use callback if exists\n        var userCallback = this.gridOptionsService.getCallback('isGroupOpenByDefault');\n        if (userCallback) {\n            var params = {\n                rowNode: groupNode,\n                field: groupNode.field,\n                key: groupNode.key,\n                level: groupNode.level,\n                rowGroupColumn: groupNode.rowGroupColumn\n            };\n            groupNode.expanded = userCallback(params) == true;\n            return;\n        }\n        // use expandByDefault if exists\n        var expandByDefault = details.expandByDefault;\n        if (details.expandByDefault === -1) {\n            groupNode.expanded = true;\n            return;\n        }\n        // otherwise\n        groupNode.expanded = groupNode.level < expandByDefault;\n    };\n    GroupStage.prototype.getGroupInfo = function (rowNode, details) {\n        if (this.usingTreeData) {\n            return this.getGroupInfoFromCallback(rowNode);\n        }\n        return this.getGroupInfoFromGroupColumns(rowNode, details);\n    };\n    GroupStage.prototype.getGroupInfoFromCallback = function (rowNode) {\n        var keys = this.getDataPath ? this.getDataPath(rowNode.data) : null;\n        if (keys === null || keys === undefined || keys.length === 0) {\n            _.doOnce(function () { return console.warn(\"AG Grid: getDataPath() should not return an empty path for data\", rowNode.data); }, 'groupStage.getGroupInfoFromCallback');\n        }\n        var groupInfoMapper = function (key) { return ({ key: key, field: null, rowGroupColumn: null }); };\n        return keys ? keys.map(groupInfoMapper) : [];\n    };\n    GroupStage.prototype.getGroupInfoFromGroupColumns = function (rowNode, details) {\n        var _this = this;\n        var res = [];\n        details.groupedCols.forEach(function (groupCol) {\n            var key = _this.valueService.getKeyForNode(groupCol, rowNode);\n            var keyExists = key !== null && key !== undefined && key !== '';\n            // unbalanced tree and pivot mode don't work together - not because of the grid, it doesn't make\n            // mathematical sense as you are building up a cube. so if pivot mode, we put in a blank key where missing.\n            // this keeps the tree balanced and hence can be represented as a group.\n            var createGroupForEmpty = details.pivotMode || !_this.gridOptionsService.is('groupAllowUnbalanced');\n            if (createGroupForEmpty && !keyExists) {\n                key = '';\n                keyExists = true;\n            }\n            if (keyExists) {\n                var item = {\n                    key: key,\n                    field: groupCol.getColDef().field,\n                    rowGroupColumn: groupCol\n                };\n                res.push(item);\n            }\n        });\n        return res;\n    };\n    __decorate$2l([\n        Autowired('columnModel')\n    ], GroupStage.prototype, \"columnModel\", void 0);\n    __decorate$2l([\n        Autowired('selectableService')\n    ], GroupStage.prototype, \"selectableService\", void 0);\n    __decorate$2l([\n        Autowired('valueService')\n    ], GroupStage.prototype, \"valueService\", void 0);\n    __decorate$2l([\n        Autowired('beans')\n    ], GroupStage.prototype, \"beans\", void 0);\n    __decorate$2l([\n        Autowired('selectionService')\n    ], GroupStage.prototype, \"selectionService\", void 0);\n    __decorate$2l([\n        PostConstruct\n    ], GroupStage.prototype, \"postConstruct\", null);\n    GroupStage = __decorate$2l([\n        Bean('groupStage')\n    ], GroupStage);\n    return GroupStage;\n}(BeanStub));\n\nvar __extends$39 = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __assign$O = (undefined && undefined.__assign) || function () {\n    __assign$O = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign$O.apply(this, arguments);\n};\nvar __decorate$2k = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __read$19 = (undefined && undefined.__read) || function (o, n) {\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n    if (!m) return o;\n    var i = m.call(o), r, ar = [], e;\n    try {\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n    }\n    catch (error) { e = { error: error }; }\n    finally {\n        try {\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\n        }\n        finally { if (e) throw e.error; }\n    }\n    return ar;\n};\nvar __spread$H = (undefined && undefined.__spread) || function () {\n    for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read$19(arguments[i]));\n    return ar;\n};\nvar PivotColDefService = /** @class */ (function (_super) {\n    __extends$39(PivotColDefService, _super);\n    function PivotColDefService() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    PivotColDefService_1 = PivotColDefService;\n    PivotColDefService.prototype.createPivotColumnDefs = function (uniqueValues) {\n        // this is passed to the columnModel, to configure the columns and groups we show\n        var pivotColumns = this.columnModel.getPivotColumns();\n        var valueColumns = this.columnModel.getValueColumns();\n        var levelsDeep = pivotColumns.length;\n        var pivotColumnGroupDefs = this.recursiveBuildGroup(0, uniqueValues, [], levelsDeep, pivotColumns);\n        function extractColDefs(input, arr) {\n            if (arr === void 0) { arr = []; }\n            input.forEach(function (def) {\n                if (def.children !== undefined) {\n                    extractColDefs(def.children, arr);\n                }\n                else {\n                    arr.push(def);\n                }\n            });\n            return arr;\n        }\n        var pivotColumnDefs = extractColDefs(pivotColumnGroupDefs);\n        // additional columns that contain the aggregated total for each value column per row\n        this.addRowGroupTotals(pivotColumnGroupDefs, pivotColumnDefs, valueColumns);\n        // additional group columns that contain child totals for each collapsed child column / group\n        this.addExpandablePivotGroups(pivotColumnGroupDefs, pivotColumnDefs);\n        // additional group columns that contain an aggregated total across all child columns\n        this.addPivotTotalsToGroups(pivotColumnGroupDefs, pivotColumnDefs);\n        // we clone, so the colDefs in pivotColumnsGroupDefs and pivotColumnDefs are not shared. this is so that\n        // any changes the user makes (via processSecondaryColumnDefinitions) don't impact the internal aggregations,\n        // as these use the col defs also\n        var pivotColumnDefsClone = pivotColumnDefs.map(function (colDef) { return _.cloneObject(colDef); });\n        return {\n            pivotColumnGroupDefs: pivotColumnGroupDefs,\n            pivotColumnDefs: pivotColumnDefsClone\n        };\n    };\n    PivotColDefService.prototype.recursiveBuildGroup = function (index, uniqueValue, pivotKeys, maxDepth, primaryPivotColumns) {\n        var _this = this;\n        var measureColumns = this.columnModel.getValueColumns();\n        if (index >= maxDepth) { // Base case - build the measure columns\n            return this.buildMeasureCols(pivotKeys);\n        }\n        // sort by either user provided comparator, or our own one\n        var primaryPivotColumnDefs = primaryPivotColumns[index].getColDef();\n        var comparator = this.headerNameComparator.bind(this, primaryPivotColumnDefs.pivotComparator);\n        // Base case for the compact layout, instead of recursing build the last layer of groups as measure columns instead\n        if (measureColumns.length === 1 && this.gridOptionsService.is('removePivotHeaderRowWhenSingleValueColumn') && index === maxDepth - 1) {\n            var leafCols_1 = [];\n            _.iterateObject(uniqueValue, function (key) {\n                var newPivotKeys = __spread$H(pivotKeys, [key]);\n                leafCols_1.push(__assign$O(__assign$O({}, _this.createColDef(measureColumns[0], key, newPivotKeys)), { columnGroupShow: 'open' }));\n            });\n            leafCols_1.sort(comparator);\n            return leafCols_1;\n        }\n        // Recursive case\n        var groups = [];\n        _.iterateObject(uniqueValue, function (key, value) {\n            var newPivotKeys = __spread$H(pivotKeys, [key]);\n            groups.push({\n                children: _this.recursiveBuildGroup(index + 1, value, newPivotKeys, maxDepth, primaryPivotColumns),\n                headerName: key,\n                pivotKeys: newPivotKeys,\n                columnGroupShow: 'open',\n                groupId: _this.generateColumnGroupId(newPivotKeys),\n            });\n        });\n        groups.sort(comparator);\n        return groups;\n    };\n    PivotColDefService.prototype.buildMeasureCols = function (pivotKeys) {\n        var _this = this;\n        var measureColumns = this.columnModel.getValueColumns();\n        if (measureColumns.length === 0) {\n            // if no value columns selected, then we insert one blank column, so the user at least sees columns\n            // rendered. otherwise the grid would render with no columns (just empty groups) which would give the\n            // impression that the grid is broken\n            return [this.createColDef(null, '-', pivotKeys)];\n        }\n        return measureColumns.map(function (measureCol) {\n            var columnName = _this.columnModel.getDisplayNameForColumn(measureCol, 'header');\n            return __assign$O(__assign$O({}, _this.createColDef(measureCol, columnName, pivotKeys)), { columnGroupShow: 'open' });\n        });\n    };\n    PivotColDefService.prototype.addExpandablePivotGroups = function (pivotColumnGroupDefs, pivotColumnDefs) {\n        var _this = this;\n        if (this.gridOptionsService.is('suppressExpandablePivotGroups') ||\n            this.gridOptionsService.get('pivotColumnGroupTotals')) {\n            return;\n        }\n        var recursivelyAddSubTotals = function (groupDef, currentPivotColumnDefs, acc) {\n            var group = groupDef;\n            if (group.children) {\n                var childAcc_1 = new Map();\n                group.children.forEach(function (grp) {\n                    recursivelyAddSubTotals(grp, currentPivotColumnDefs, childAcc_1);\n                });\n                var firstGroup_1 = !group.children.some(function (child) { return child.children; });\n                _this.columnModel.getValueColumns().forEach(function (valueColumn) {\n                    var columnName = _this.columnModel.getDisplayNameForColumn(valueColumn, 'header');\n                    var totalColDef = _this.createColDef(valueColumn, columnName, groupDef.pivotKeys);\n                    totalColDef.pivotTotalColumnIds = childAcc_1.get(valueColumn.getColId());\n                    totalColDef.columnGroupShow = 'closed';\n                    totalColDef.aggFunc = valueColumn.getAggFunc();\n                    if (!firstGroup_1) {\n                        // add total colDef to group and pivot colDefs array\n                        var children = groupDef.children;\n                        children.push(totalColDef);\n                        currentPivotColumnDefs.push(totalColDef);\n                    }\n                });\n                _this.merge(acc, childAcc_1);\n            }\n            else {\n                var def = groupDef;\n                // check that value column exists, i.e. aggFunc is supplied\n                if (!def.pivotValueColumn) {\n                    return;\n                }\n                var pivotValueColId = def.pivotValueColumn.getColId();\n                var arr = acc.has(pivotValueColId) ? acc.get(pivotValueColId) : [];\n                arr.push(def.colId);\n                acc.set(pivotValueColId, arr);\n            }\n        };\n        pivotColumnGroupDefs.forEach(function (groupDef) {\n            recursivelyAddSubTotals(groupDef, pivotColumnDefs, new Map());\n        });\n    };\n    PivotColDefService.prototype.addPivotTotalsToGroups = function (pivotColumnGroupDefs, pivotColumnDefs) {\n        var _this = this;\n        if (!this.gridOptionsService.get('pivotColumnGroupTotals')) {\n            return;\n        }\n        var insertAfter = this.gridOptionsService.get('pivotColumnGroupTotals') === 'after';\n        var valueCols = this.columnModel.getValueColumns();\n        var aggFuncs = valueCols.map(function (valueCol) { return valueCol.getAggFunc(); });\n        // don't add pivot totals if there is less than 1 aggFunc or they are not all the same\n        if (!aggFuncs || aggFuncs.length < 1 || !this.sameAggFuncs(aggFuncs)) {\n            // console.warn('AG Grid: aborting adding pivot total columns - value columns require same aggFunc');\n            return;\n        }\n        // arbitrarily select a value column to use as a template for pivot columns\n        var valueColumn = valueCols[0];\n        pivotColumnGroupDefs.forEach(function (groupDef) {\n            _this.recursivelyAddPivotTotal(groupDef, pivotColumnDefs, valueColumn, insertAfter);\n        });\n    };\n    PivotColDefService.prototype.recursivelyAddPivotTotal = function (groupDef, pivotColumnDefs, valueColumn, insertAfter) {\n        var _this = this;\n        var group = groupDef;\n        if (!group.children) {\n            var def = groupDef;\n            return def.colId ? [def.colId] : null;\n        }\n        var colIds = [];\n        // need to recurse children first to obtain colIds used in the aggregation stage\n        group.children\n            .forEach(function (grp) {\n            var childColIds = _this.recursivelyAddPivotTotal(grp, pivotColumnDefs, valueColumn, insertAfter);\n            if (childColIds) {\n                colIds = colIds.concat(childColIds);\n            }\n        });\n        // only add total colDef if there is more than 1 child node\n        if (group.children.length > 1) {\n            var localeTextFunc = this.localeService.getLocaleTextFunc();\n            var headerName = localeTextFunc('pivotColumnGroupTotals', 'Total');\n            //create total colDef using an arbitrary value column as a template\n            var totalColDef = this.createColDef(valueColumn, headerName, groupDef.pivotKeys, true);\n            totalColDef.pivotTotalColumnIds = colIds;\n            totalColDef.aggFunc = valueColumn.getAggFunc();\n            // add total colDef to group and pivot colDefs array\n            var children = groupDef.children;\n            insertAfter ? children.push(totalColDef) : children.unshift(totalColDef);\n            pivotColumnDefs.push(totalColDef);\n        }\n        return colIds;\n    };\n    PivotColDefService.prototype.addRowGroupTotals = function (pivotColumnGroupDefs, pivotColumnDefs, valueColumns) {\n        var _this = this;\n        if (!this.gridOptionsService.get('pivotRowTotals')) {\n            return;\n        }\n        var insertAfter = this.gridOptionsService.get('pivotRowTotals') === 'after';\n        // order of row group totals depends on position\n        var valueCols = insertAfter ? valueColumns.slice() : valueColumns.slice().reverse();\n        var _loop_1 = function (i) {\n            var valueCol = valueCols[i];\n            var colIds = [];\n            pivotColumnGroupDefs.forEach(function (groupDef) {\n                colIds = colIds.concat(_this.extractColIdsForValueColumn(groupDef, valueCol));\n            });\n            var withGroup = valueCols.length > 1 || !this_1.gridOptionsService.is('removePivotHeaderRowWhenSingleValueColumn');\n            this_1.createRowGroupTotal(pivotColumnGroupDefs, pivotColumnDefs, valueCol, colIds, insertAfter, withGroup);\n        };\n        var this_1 = this;\n        for (var i = 0; i < valueCols.length; i++) {\n            _loop_1(i);\n        }\n    };\n    PivotColDefService.prototype.extractColIdsForValueColumn = function (groupDef, valueColumn) {\n        var _this = this;\n        var group = groupDef;\n        if (!group.children) {\n            var colDef = group;\n            return colDef.pivotValueColumn === valueColumn && colDef.colId ? [colDef.colId] : [];\n        }\n        var colIds = [];\n        group.children\n            .forEach(function (grp) {\n            _this.extractColIdsForValueColumn(grp, valueColumn);\n            var childColIds = _this.extractColIdsForValueColumn(grp, valueColumn);\n            colIds = colIds.concat(childColIds);\n        });\n        return colIds;\n    };\n    PivotColDefService.prototype.createRowGroupTotal = function (parentChildren, pivotColumnDefs, valueColumn, colIds, insertAfter, addGroup) {\n        var measureColumns = this.columnModel.getValueColumns();\n        var colDef;\n        if (measureColumns.length === 0) {\n            colDef = this.createColDef(null, '-', []);\n        }\n        else {\n            var columnName = this.columnModel.getDisplayNameForColumn(valueColumn, 'header');\n            colDef = this.createColDef(valueColumn, columnName, []);\n            colDef.pivotTotalColumnIds = colIds;\n        }\n        colDef.colId = PivotColDefService_1.PIVOT_ROW_TOTAL_PREFIX + colDef.colId;\n        pivotColumnDefs.push(colDef);\n        var valueGroup = addGroup ? {\n            children: [colDef],\n            pivotKeys: [],\n            groupId: PivotColDefService_1.PIVOT_ROW_TOTAL_PREFIX + \"_pivotGroup_\" + valueColumn.getColId(),\n        } : colDef;\n        insertAfter ? parentChildren.push(valueGroup) : parentChildren.unshift(valueGroup);\n    };\n    PivotColDefService.prototype.createColDef = function (valueColumn, headerName, pivotKeys, totalColumn) {\n        if (totalColumn === void 0) { totalColumn = false; }\n        var colDef = {};\n        // This is null when there are no measure columns and we're creating placeholder columns\n        if (valueColumn) {\n            var colDefToCopy = valueColumn.getColDef();\n            Object.assign(colDef, colDefToCopy);\n            // even if original column was hidden, we always show the pivot value column, otherwise it would be\n            // very confusing for people thinking the pivot is broken\n            colDef.hide = false;\n        }\n        colDef.headerName = headerName;\n        colDef.colId = this.generateColumnId(pivotKeys || [], valueColumn && !totalColumn ? valueColumn.getColId() : '');\n        // pivot columns repeat over field, so it makes sense to use the unique id instead. For example if you want to\n        // assign values to pinned bottom rows using setPinnedBottomRowData the value service will use this colId.\n        colDef.field = colDef.colId;\n        // this is to support using pinned rows, normally the data will be extracted from the aggData object using the colId\n        // however pinned rows still access the data object by field, this prevents values with dots from being treated as complex objects\n        colDef.valueGetter = function (params) { var _a; return (_a = params.data) === null || _a === void 0 ? void 0 : _a[params.colDef.field]; };\n        colDef.pivotKeys = pivotKeys;\n        colDef.pivotValueColumn = valueColumn;\n        if (colDef.filter === true) {\n            colDef.filter = 'agNumberColumnFilter';\n        }\n        return colDef;\n    };\n    PivotColDefService.prototype.sameAggFuncs = function (aggFuncs) {\n        if (aggFuncs.length == 1) {\n            return true;\n        }\n        //check if all aggFunc's match\n        for (var i = 1; i < aggFuncs.length; i++) {\n            if (aggFuncs[i] !== aggFuncs[0]) {\n                return false;\n            }\n        }\n        return true;\n    };\n    PivotColDefService.prototype.headerNameComparator = function (userComparator, a, b) {\n        if (userComparator) {\n            return userComparator(a.headerName, b.headerName);\n        }\n        else {\n            if (a.headerName && !b.headerName) {\n                return 1;\n            }\n            else if (!a.headerName && b.headerName) {\n                return -1;\n            }\n            // slightly naff here - just to satify typescript\n            // really should be &&, but if so ts complains\n            // the above if/else checks would deal with either being falsy, so at this stage if either are falsy, both are\n            // ..still naff though\n            if (!a.headerName || !b.headerName) {\n                return 0;\n            }\n            if (a.headerName < b.headerName) {\n                return -1;\n            }\n            if (a.headerName > b.headerName) {\n                return 1;\n            }\n            return 0;\n        }\n    };\n    PivotColDefService.prototype.merge = function (m1, m2) {\n        m2.forEach(function (value, key, map) {\n            var existingList = m1.has(key) ? m1.get(key) : [];\n            var updatedList = __spread$H(existingList, value);\n            m1.set(key, updatedList);\n        });\n    };\n    PivotColDefService.prototype.generateColumnGroupId = function (pivotKeys) {\n        var pivotCols = this.columnModel.getPivotColumns().map(function (col) { return col.getColId(); });\n        return \"pivotGroup_\" + pivotCols.join('-') + \"_\" + pivotKeys.join('-');\n    };\n    PivotColDefService.prototype.generateColumnId = function (pivotKeys, measureColumnId) {\n        var pivotCols = this.columnModel.getPivotColumns().map(function (col) { return col.getColId(); });\n        return \"pivot_\" + pivotCols.join('-') + \"_\" + pivotKeys.join('-') + \"_\" + measureColumnId;\n    };\n    var PivotColDefService_1;\n    PivotColDefService.PIVOT_ROW_TOTAL_PREFIX = 'PivotRowTotal_';\n    __decorate$2k([\n        Autowired('columnModel')\n    ], PivotColDefService.prototype, \"columnModel\", void 0);\n    PivotColDefService = PivotColDefService_1 = __decorate$2k([\n        Bean('pivotColDefService')\n    ], PivotColDefService);\n    return PivotColDefService;\n}(BeanStub));\n\nvar __extends$38 = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$2j = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar PivotStage = /** @class */ (function (_super) {\n    __extends$38(PivotStage, _super);\n    function PivotStage() {\n        var _this = _super !== null && _super.apply(this, arguments) || this;\n        _this.uniqueValues = {};\n        return _this;\n    }\n    PivotStage.prototype.execute = function (params) {\n        var changedPath = params.changedPath;\n        if (this.columnModel.isPivotActive()) {\n            this.executePivotOn(changedPath);\n        }\n        else {\n            this.executePivotOff(changedPath);\n        }\n    };\n    PivotStage.prototype.executePivotOff = function (changedPath) {\n        this.aggregationColumnsHashLastTime = null;\n        this.uniqueValues = {};\n        if (this.columnModel.isSecondaryColumnsPresent()) {\n            this.columnModel.setSecondaryColumns(null, \"rowModelUpdated\");\n            if (changedPath) {\n                changedPath.setInactive();\n            }\n        }\n    };\n    PivotStage.prototype.executePivotOn = function (changedPath) {\n        var uniqueValues = this.bucketUpRowNodes(changedPath);\n        var uniqueValuesChanged = this.setUniqueValues(uniqueValues);\n        var aggregationColumns = this.columnModel.getValueColumns();\n        var aggregationColumnsHash = aggregationColumns.map(function (column) { return column.getId() + \"-\" + column.getColDef().headerName; }).join('#');\n        var aggregationFuncsHash = aggregationColumns.map(function (column) { return column.getAggFunc().toString(); }).join('#');\n        var aggregationColumnsChanged = this.aggregationColumnsHashLastTime !== aggregationColumnsHash;\n        var aggregationFuncsChanged = this.aggregationFuncsHashLastTime !== aggregationFuncsHash;\n        this.aggregationColumnsHashLastTime = aggregationColumnsHash;\n        this.aggregationFuncsHashLastTime = aggregationFuncsHash;\n        var groupColumnsHash = this.columnModel.getRowGroupColumns().map(function (column) { return column.getId(); }).join('#');\n        var groupColumnsChanged = groupColumnsHash !== this.groupColumnsHashLastTime;\n        this.groupColumnsHashLastTime = groupColumnsHash;\n        if (uniqueValuesChanged || aggregationColumnsChanged || groupColumnsChanged || aggregationFuncsChanged) {\n            var _a = this.pivotColDefService.createPivotColumnDefs(this.uniqueValues), pivotColumnGroupDefs = _a.pivotColumnGroupDefs, pivotColumnDefs = _a.pivotColumnDefs;\n            this.pivotColumnDefs = pivotColumnDefs;\n            this.columnModel.setSecondaryColumns(pivotColumnGroupDefs, \"rowModelUpdated\");\n            // because the secondary columns have changed, then the aggregation needs to visit the whole\n            // tree again, so we make the changedPath not active, to force aggregation to visit all paths.\n            if (changedPath) {\n                changedPath.setInactive();\n            }\n        }\n    };\n    PivotStage.prototype.setUniqueValues = function (newValues) {\n        var json1 = JSON.stringify(newValues);\n        var json2 = JSON.stringify(this.uniqueValues);\n        var uniqueValuesChanged = json1 !== json2;\n        // we only continue the below if the unique values are different, as otherwise\n        // the result will be the same as the last time we did it\n        if (uniqueValuesChanged) {\n            this.uniqueValues = newValues;\n            return true;\n        }\n        else {\n            return false;\n        }\n    };\n    PivotStage.prototype.bucketUpRowNodes = function (changedPath) {\n        var _this = this;\n        // accessed from inside inner function\n        var uniqueValues = {};\n        // ensure childrenMapped is cleared, as if a node has been filtered out it should not have mapped children.\n        changedPath.forEachChangedNodeDepthFirst(function (node) {\n            if (node.leafGroup) {\n                node.childrenMapped = null;\n            }\n        });\n        var recursivelyBucketFilteredChildren = function (node) {\n            var _a;\n            if (node.leafGroup) {\n                _this.bucketRowNode(node, uniqueValues);\n            }\n            else {\n                (_a = node.childrenAfterFilter) === null || _a === void 0 ? void 0 : _a.forEach(recursivelyBucketFilteredChildren);\n            }\n        };\n        changedPath.executeFromRootNode(recursivelyBucketFilteredChildren);\n        return uniqueValues;\n    };\n    PivotStage.prototype.bucketRowNode = function (rowNode, uniqueValues) {\n        var pivotColumns = this.columnModel.getPivotColumns();\n        if (pivotColumns.length === 0) {\n            rowNode.childrenMapped = null;\n        }\n        else {\n            rowNode.childrenMapped = this.bucketChildren(rowNode.childrenAfterFilter, pivotColumns, 0, uniqueValues);\n        }\n        if (rowNode.sibling) {\n            rowNode.sibling.childrenMapped = rowNode.childrenMapped;\n        }\n    };\n    PivotStage.prototype.bucketChildren = function (children, pivotColumns, pivotIndex, uniqueValues) {\n        var _this = this;\n        var mappedChildren = {};\n        var pivotColumn = pivotColumns[pivotIndex];\n        // map the children out based on the pivot column\n        children.forEach(function (child) {\n            var key = _this.valueService.getKeyForNode(pivotColumn, child);\n            if (_.missing(key)) {\n                key = '';\n            }\n            if (!uniqueValues[key]) {\n                uniqueValues[key] = {};\n            }\n            if (!mappedChildren[key]) {\n                mappedChildren[key] = [];\n            }\n            mappedChildren[key].push(child);\n        });\n        // if it's the last pivot column, return as is, otherwise go one level further in the map\n        if (pivotIndex === pivotColumns.length - 1) {\n            return mappedChildren;\n        }\n        else {\n            var result_1 = {};\n            _.iterateObject(mappedChildren, function (key, value) {\n                result_1[key] = _this.bucketChildren(value, pivotColumns, pivotIndex + 1, uniqueValues[key]);\n            });\n            return result_1;\n        }\n    };\n    PivotStage.prototype.getPivotColumnDefs = function () {\n        return this.pivotColumnDefs;\n    };\n    __decorate$2j([\n        Autowired('valueService')\n    ], PivotStage.prototype, \"valueService\", void 0);\n    __decorate$2j([\n        Autowired('columnModel')\n    ], PivotStage.prototype, \"columnModel\", void 0);\n    __decorate$2j([\n        Autowired('pivotColDefService')\n    ], PivotStage.prototype, \"pivotColDefService\", void 0);\n    PivotStage = __decorate$2j([\n        Bean('pivotStage')\n    ], PivotStage);\n    return PivotStage;\n}(BeanStub));\n\nvar __extends$37 = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$2i = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n// @ts-ignore\nvar AGBigInt = typeof BigInt === 'undefined' ? null : BigInt;\nvar AggFuncService = /** @class */ (function (_super) {\n    __extends$37(AggFuncService, _super);\n    function AggFuncService() {\n        var _this = _super !== null && _super.apply(this, arguments) || this;\n        _this.aggFuncsMap = {};\n        _this.initialised = false;\n        return _this;\n    }\n    AggFuncService_1 = AggFuncService;\n    AggFuncService.prototype.init = function () {\n        if (this.initialised) {\n            return;\n        }\n        this.initialiseWithDefaultAggregations();\n        this.addAggFuncs(this.gridOptionsService.get('aggFuncs'));\n    };\n    AggFuncService.prototype.initialiseWithDefaultAggregations = function () {\n        this.aggFuncsMap[AggFuncService_1.AGG_SUM] = aggSum;\n        this.aggFuncsMap[AggFuncService_1.AGG_FIRST] = aggFirst;\n        this.aggFuncsMap[AggFuncService_1.AGG_LAST] = aggLast;\n        this.aggFuncsMap[AggFuncService_1.AGG_MIN] = aggMin;\n        this.aggFuncsMap[AggFuncService_1.AGG_MAX] = aggMax;\n        this.aggFuncsMap[AggFuncService_1.AGG_COUNT] = aggCount;\n        this.aggFuncsMap[AggFuncService_1.AGG_AVG] = aggAvg;\n        this.initialised = true;\n    };\n    AggFuncService.prototype.isAggFuncPossible = function (column, func) {\n        var allKeys = this.getFuncNames(column);\n        var allowed = _.includes(allKeys, func);\n        var funcExists = _.exists(this.aggFuncsMap[func]);\n        return allowed && funcExists;\n    };\n    AggFuncService.prototype.getDefaultAggFunc = function (column) {\n        var defaultAgg = column.getColDef().defaultAggFunc;\n        if (_.exists(defaultAgg) && this.isAggFuncPossible(column, defaultAgg)) {\n            return defaultAgg;\n        }\n        if (this.isAggFuncPossible(column, AggFuncService_1.AGG_SUM)) {\n            return AggFuncService_1.AGG_SUM;\n        }\n        var allKeys = this.getFuncNames(column);\n        return _.existsAndNotEmpty(allKeys) ? allKeys[0] : null;\n    };\n    AggFuncService.prototype.addAggFuncs = function (aggFuncs) {\n        _.iterateObject(aggFuncs, this.addAggFunc.bind(this));\n    };\n    AggFuncService.prototype.addAggFunc = function (key, aggFunc) {\n        this.init();\n        this.aggFuncsMap[key] = aggFunc;\n    };\n    AggFuncService.prototype.getAggFunc = function (name) {\n        this.init();\n        return this.aggFuncsMap[name];\n    };\n    AggFuncService.prototype.getFuncNames = function (column) {\n        var userAllowedFuncs = column.getColDef().allowedAggFuncs;\n        return userAllowedFuncs == null ? Object.keys(this.aggFuncsMap).sort() : userAllowedFuncs;\n    };\n    AggFuncService.prototype.clear = function () {\n        this.aggFuncsMap = {};\n    };\n    var AggFuncService_1;\n    AggFuncService.AGG_SUM = 'sum';\n    AggFuncService.AGG_FIRST = 'first';\n    AggFuncService.AGG_LAST = 'last';\n    AggFuncService.AGG_MIN = 'min';\n    AggFuncService.AGG_MAX = 'max';\n    AggFuncService.AGG_COUNT = 'count';\n    AggFuncService.AGG_AVG = 'avg';\n    __decorate$2i([\n        PostConstruct\n    ], AggFuncService.prototype, \"init\", null);\n    AggFuncService = AggFuncService_1 = __decorate$2i([\n        Bean('aggFuncService')\n    ], AggFuncService);\n    return AggFuncService;\n}(BeanStub));\nfunction aggSum(params) {\n    var values = params.values;\n    var result = null; // the logic ensures that we never combine bigint arithmetic with numbers, but TS is hard to please\n    // for optimum performance, we use a for loop here rather than calling any helper methods or using functional code\n    for (var i = 0; i < values.length; i++) {\n        var value = values[i];\n        if (typeof value === 'number') {\n            if (result === null) {\n                result = value;\n            }\n            else {\n                if (AGBigInt) {\n                    result += typeof result === 'number' ? value : AGBigInt(value);\n                }\n                else {\n                    result += value;\n                }\n            }\n        }\n        else if (typeof value === 'bigint') {\n            if (result === null) {\n                result = value;\n            }\n            else {\n                result = (typeof result === 'bigint' ? result : AGBigInt(result)) + value;\n            }\n        }\n    }\n    return result;\n}\nfunction aggFirst(params) {\n    return params.values.length > 0 ? params.values[0] : null;\n}\nfunction aggLast(params) {\n    return params.values.length > 0 ? _.last(params.values) : null;\n}\nfunction aggMin(params) {\n    var values = params.values;\n    var result = null;\n    // for optimum performance, we use a for loop here rather than calling any helper methods or using functional code\n    for (var i = 0; i < values.length; i++) {\n        var value = values[i];\n        if ((typeof value === 'number' || typeof value === 'bigint') && (result === null || result > value)) {\n            result = value;\n        }\n    }\n    return result;\n}\nfunction aggMax(params) {\n    var values = params.values;\n    var result = null;\n    // for optimum performance, we use a for loop here rather than calling any helper methods or using functional code\n    for (var i = 0; i < values.length; i++) {\n        var value = values[i];\n        if ((typeof value === 'number' || typeof value === 'bigint') && (result === null || result < value)) {\n            result = value;\n        }\n    }\n    return result;\n}\nfunction aggCount(params) {\n    var values = params.values;\n    var result = 0;\n    // for optimum performance, we use a for loop here rather than calling any helper methods or using functional code\n    for (var i = 0; i < values.length; i++) {\n        var value = values[i];\n        // check if the value is from a group, in which case use the group's count\n        result += value != null && typeof value.value === 'number' ? value.value : 1;\n    }\n    return result;\n}\n// the average function is tricky as the multiple levels require weighted averages\n// for the non-leaf node aggregations.\nfunction aggAvg(params) {\n    var _a, _b, _c;\n    var values = params.values;\n    var sum = 0; // the logic ensures that we never combine bigint arithmetic with numbers, but TS is hard to please\n    var count = 0;\n    // for optimum performance, we use a for loop here rather than calling any helper methods or using functional code\n    for (var i = 0; i < values.length; i++) {\n        var currentValue = values[i];\n        var valueToAdd = null;\n        if (typeof currentValue === 'number' || typeof currentValue === 'bigint') {\n            valueToAdd = currentValue;\n            count++;\n        }\n        else if (currentValue != null && (typeof currentValue.value === 'number' || typeof currentValue.value === 'bigint') && typeof currentValue.count === 'number') {\n            // we are aggregating groups, so we take the aggregated values to calculated a weighted average\n            if (AGBigInt) {\n                valueToAdd = currentValue.value * (typeof currentValue.value === 'number' ? currentValue.count : AGBigInt(currentValue.count));\n            }\n            else {\n                valueToAdd = currentValue.value * currentValue.count;\n            }\n            count += currentValue.count;\n        }\n        if (typeof valueToAdd === 'number') {\n            if (AGBigInt) {\n                sum += typeof sum === 'number' ? valueToAdd : AGBigInt(valueToAdd);\n            }\n            else {\n                sum += valueToAdd;\n            }\n        }\n        else if (typeof valueToAdd === 'bigint') {\n            sum = (typeof sum === 'bigint' ? sum : AGBigInt(sum)) + valueToAdd;\n        }\n    }\n    var value = null;\n    // avoid divide by zero error\n    if (count > 0) {\n        if (AGBigInt) {\n            value = sum / (typeof sum === 'number' ? count : AGBigInt(count));\n        }\n        else {\n            value = sum / count;\n        }\n    }\n    // the previous aggregation data\n    var existingAggData = (_b = (_a = params.rowNode) === null || _a === void 0 ? void 0 : _a.aggData) === null || _b === void 0 ? void 0 : _b[(_c = params.column) === null || _c === void 0 ? void 0 : _c.getColId()];\n    if (existingAggData && existingAggData.count === count && existingAggData.value === value) {\n        // the underlying values haven't changed, return the old object to avoid triggering change detection\n        return existingAggData;\n    }\n    // the result will be an object. when this cell is rendered, only the avg is shown.\n    // however when this cell is part of another aggregation, the count is also needed\n    // to create a weighted average for the next level.\n    return {\n        count: count,\n        value: value,\n        // the grid by default uses toString to render values for an object, so this\n        // is a trick to get the default cellRenderer to display the avg value\n        toString: function () {\n            return typeof this.value === 'number' || typeof this.value === 'bigint' ? this.value.toString() : '';\n        },\n        // used for sorting\n        toNumber: function () {\n            return this.value;\n        }\n    };\n}\n\nvar __extends$36 = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$2h = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar DropZoneColumnComp = /** @class */ (function (_super) {\n    __extends$36(DropZoneColumnComp, _super);\n    function DropZoneColumnComp(column, dragSourceDropTarget, ghost, dropZonePurpose, horizontal) {\n        var _this = _super.call(this) || this;\n        _this.column = column;\n        _this.dragSourceDropTarget = dragSourceDropTarget;\n        _this.ghost = ghost;\n        _this.dropZonePurpose = dropZonePurpose;\n        _this.horizontal = horizontal;\n        _this.popupShowing = false;\n        return _this;\n    }\n    DropZoneColumnComp.prototype.init = function () {\n        var _this = this;\n        this.setTemplate(DropZoneColumnComp.TEMPLATE);\n        var eGui = this.getGui();\n        var isFunctionsReadOnly = this.gridOptionsService.is('functionsReadOnly');\n        this.addElementClasses(eGui);\n        this.addElementClasses(this.eDragHandle, 'drag-handle');\n        this.addElementClasses(this.eText, 'text');\n        this.addElementClasses(this.eButton, 'button');\n        this.eDragHandle.appendChild(_.createIconNoSpan('columnDrag', this.gridOptionsService));\n        this.eButton.appendChild(_.createIconNoSpan('cancel', this.gridOptionsService));\n        this.setupSort();\n        this.displayName = this.columnModel.getDisplayNameForColumn(this.column, 'columnDrop');\n        this.setupComponents();\n        if (!this.ghost && !isFunctionsReadOnly) {\n            this.addDragSource();\n        }\n        this.setupAria();\n        this.addManagedListener(this.eventService, Column.EVENT_SORT_CHANGED, function () {\n            _this.setupAria();\n        });\n        this.setupTooltip();\n    };\n    DropZoneColumnComp.prototype.setupAria = function () {\n        var translate = this.localeService.getLocaleTextFunc();\n        var _a = this.getColumnAndAggFuncName(), name = _a.name, aggFuncName = _a.aggFuncName;\n        var aggSeparator = translate('ariaDropZoneColumnComponentAggFuncSeperator', ' of ');\n        var sortDirection = {\n            asc: translate('ariaDropZoneColumnComponentSortAscending', 'ascending'),\n            desc: translate('ariaDropZoneColumnComponentSortDescending', 'descending'),\n        };\n        var columnSort = this.column.getSort();\n        var isSortSuppressed = this.gridOptionsService.is('rowGroupPanelSuppressSort');\n        var ariaInstructions = [\n            [\n                aggFuncName && \"\" + aggFuncName + aggSeparator,\n                name,\n                this.isGroupingZone() && !isSortSuppressed && columnSort && \", \" + sortDirection[columnSort]\n            ].filter(function (part) { return !!part; }).join(''),\n        ];\n        var isFunctionsReadOnly = this.gridOptionsService.is('functionsReadOnly');\n        if (this.isAggregationZone() && !isFunctionsReadOnly) {\n            var aggregationMenuAria = translate('ariaDropZoneColumnValueItemDescription', 'Press ENTER to change the aggregation type');\n            ariaInstructions.push(aggregationMenuAria);\n        }\n        if (this.isGroupingZone() && this.column.getColDef().sortable && !isSortSuppressed) {\n            var sortProgressAria = translate('ariaDropZoneColumnGroupItemDescription', 'Press ENTER to sort');\n            ariaInstructions.push(sortProgressAria);\n        }\n        var deleteAria = translate('ariaDropZoneColumnComponentDescription', 'Press DELETE to remove');\n        ariaInstructions.push(deleteAria);\n        _.setAriaLabel(this.getGui(), ariaInstructions.join('. '));\n    };\n    DropZoneColumnComp.prototype.setupTooltip = function () {\n        var _this = this;\n        var refresh = function () {\n            var newTooltipText = _this.column.getColDef().headerTooltip;\n            _this.setTooltip(newTooltipText);\n        };\n        refresh();\n        this.addManagedListener(this.eventService, Events.EVENT_NEW_COLUMNS_LOADED, refresh);\n    };\n    DropZoneColumnComp.prototype.setupSort = function () {\n        var _this = this;\n        var canSort = this.column.getColDef().sortable;\n        var isGroupingZone = this.isGroupingZone();\n        if (!canSort || !isGroupingZone) {\n            return;\n        }\n        if (!this.gridOptionsService.is('rowGroupPanelSuppressSort')) {\n            this.eSortIndicator.setupSort(this.column, true);\n            var performSort_1 = function (event) {\n                event.preventDefault();\n                var sortUsingCtrl = _this.gridOptionsService.get('multiSortKey') === 'ctrl';\n                var multiSort = sortUsingCtrl ? (event.ctrlKey || event.metaKey) : event.shiftKey;\n                _this.sortController.progressSort(_this.column, multiSort, 'uiColumnSorted');\n            };\n            this.addGuiEventListener('click', performSort_1);\n            this.addGuiEventListener('keydown', function (e) {\n                var isEnter = e.key === KeyCode.ENTER;\n                if (isEnter && _this.isGroupingZone()) {\n                    performSort_1(e);\n                }\n            });\n        }\n    };\n    DropZoneColumnComp.prototype.addDragSource = function () {\n        var _this = this;\n        var dragSource = {\n            type: DragSourceType.ToolPanel,\n            eElement: this.eDragHandle,\n            defaultIconName: DragAndDropService.ICON_HIDE,\n            getDragItem: function () { return _this.createDragItem(); },\n            dragItemName: this.displayName,\n            dragSourceDropTarget: this.dragSourceDropTarget\n        };\n        this.dragAndDropService.addDragSource(dragSource, true);\n        this.addDestroyFunc(function () { return _this.dragAndDropService.removeDragSource(dragSource); });\n    };\n    DropZoneColumnComp.prototype.createDragItem = function () {\n        var visibleState = {};\n        visibleState[this.column.getId()] = this.column.isVisible();\n        return {\n            columns: [this.column],\n            visibleState: visibleState\n        };\n    };\n    DropZoneColumnComp.prototype.setupComponents = function () {\n        this.setTextValue();\n        this.setupRemove();\n        if (this.ghost) {\n            this.addCssClass('ag-column-drop-cell-ghost');\n        }\n        if (this.isAggregationZone() && !this.gridOptionsService.is('functionsReadOnly')) {\n            this.addGuiEventListener('click', this.onShowAggFuncSelection.bind(this));\n        }\n    };\n    DropZoneColumnComp.prototype.setupRemove = function () {\n        var _this = this;\n        _.setDisplayed(this.eButton, !this.gridOptionsService.is('functionsReadOnly'));\n        var agEvent = { type: DropZoneColumnComp.EVENT_COLUMN_REMOVE };\n        this.addGuiEventListener('keydown', function (e) {\n            var isEnter = e.key === KeyCode.ENTER;\n            var isDelete = e.key === KeyCode.DELETE;\n            if (isDelete) {\n                e.preventDefault();\n                _this.dispatchEvent(agEvent);\n            }\n            if (isEnter && _this.isAggregationZone() && !_this.gridOptionsService.is('functionsReadOnly')) {\n                e.preventDefault();\n                _this.onShowAggFuncSelection();\n            }\n        });\n        this.addManagedListener(this.eButton, 'click', function (mouseEvent) {\n            _this.dispatchEvent(agEvent);\n            mouseEvent.stopPropagation();\n        });\n        var touchListener = new TouchListener(this.eButton);\n        this.addManagedListener(touchListener, TouchListener.EVENT_TAP, function () {\n            _this.dispatchEvent(agEvent);\n        });\n        this.addDestroyFunc(touchListener.destroy.bind(touchListener));\n    };\n    DropZoneColumnComp.prototype.getColumnAndAggFuncName = function () {\n        var name = this.displayName;\n        var aggFuncName = '';\n        if (this.isAggregationZone()) {\n            var aggFunc = this.column.getAggFunc();\n            // if aggFunc is a string, we can use it, but if it's a function, then we swap with 'func'\n            var aggFuncString = typeof aggFunc === 'string' ? aggFunc : 'agg';\n            var localeTextFunc = this.localeService.getLocaleTextFunc();\n            aggFuncName = localeTextFunc(aggFuncString, aggFuncString);\n        }\n        return { name: name, aggFuncName: aggFuncName };\n    };\n    DropZoneColumnComp.prototype.setTextValue = function () {\n        var _a = this.getColumnAndAggFuncName(), name = _a.name, aggFuncName = _a.aggFuncName;\n        var displayValue = this.isAggregationZone() ? aggFuncName + \"(\" + name + \")\" : name;\n        var displayValueSanitised = _.escapeString(displayValue);\n        this.eText.innerHTML = displayValueSanitised;\n    };\n    DropZoneColumnComp.prototype.onShowAggFuncSelection = function () {\n        var _this = this;\n        if (this.popupShowing) {\n            return;\n        }\n        this.popupShowing = true;\n        var virtualList = new VirtualList('select-agg-func');\n        var rows = this.aggFuncService.getFuncNames(this.column);\n        var eGui = this.getGui();\n        var virtualListGui = virtualList.getGui();\n        virtualList.setModel({\n            getRow: function (index) { return rows[index]; },\n            getRowCount: function () { return rows.length; }\n        });\n        this.getContext().createBean(virtualList);\n        var ePopup = _.loadTemplate(/* html*/ \"<div class=\\\"ag-select-agg-func-popup\\\"></div>\");\n        ePopup.style.top = '0px';\n        ePopup.style.left = '0px';\n        ePopup.appendChild(virtualListGui);\n        // ePopup.style.height = this.gridOptionsService.getAggFuncPopupHeight() + 'px';\n        ePopup.style.width = eGui.clientWidth + \"px\";\n        var popupHiddenFunc = function () {\n            _this.destroyBean(virtualList);\n            _this.popupShowing = false;\n            eGui.focus();\n        };\n        var translate = this.localeService.getLocaleTextFunc();\n        var addPopupRes = this.popupService.addPopup({\n            modal: true,\n            eChild: ePopup,\n            closeOnEsc: true,\n            closedCallback: popupHiddenFunc,\n            ariaLabel: translate('ariaLabelAggregationFunction', 'Aggregation Function')\n        });\n        if (addPopupRes) {\n            virtualList.setComponentCreator(this.createAggSelect.bind(this, addPopupRes.hideFunc));\n        }\n        virtualList.addGuiEventListener('keydown', function (e) {\n            if (e.key === KeyCode.ENTER || e.key === KeyCode.SPACE) {\n                var row = virtualList.getLastFocusedRow();\n                if (row == null) {\n                    return;\n                }\n                var comp = virtualList.getComponentAt(row);\n                if (comp) {\n                    comp.selectItem();\n                }\n            }\n        });\n        this.popupService.positionPopupByComponent({\n            type: 'aggFuncSelect',\n            eventSource: eGui,\n            ePopup: ePopup,\n            keepWithinBounds: true,\n            column: this.column,\n            position: 'under'\n        });\n        virtualList.refresh();\n        var rowToFocus = rows.findIndex(function (r) { return r === _this.column.getAggFunc(); });\n        if (rowToFocus === -1) {\n            rowToFocus = 0;\n        }\n        virtualList.focusRow(rowToFocus);\n    };\n    DropZoneColumnComp.prototype.createAggSelect = function (hidePopup, value) {\n        var _this = this;\n        var itemSelected = function () {\n            hidePopup();\n            if (_this.gridOptionsService.is('functionsPassive')) {\n                var event_1 = {\n                    type: Events.EVENT_COLUMN_AGG_FUNC_CHANGE_REQUEST,\n                    columns: [_this.column],\n                    aggFunc: value\n                };\n                _this.eventService.dispatchEvent(event_1);\n            }\n            else {\n                _this.columnModel.setColumnAggFunc(_this.column, value, \"toolPanelDragAndDrop\");\n            }\n        };\n        var localeTextFunc = this.localeService.getLocaleTextFunc();\n        var aggFuncString = value.toString();\n        var aggFuncStringTranslated = localeTextFunc(aggFuncString, aggFuncString);\n        var comp = new AggItemComp(itemSelected, aggFuncStringTranslated);\n        return comp;\n    };\n    DropZoneColumnComp.prototype.addElementClasses = function (el, suffix) {\n        suffix = suffix ? \"-\" + suffix : '';\n        var direction = this.horizontal ? 'horizontal' : 'vertical';\n        el.classList.add(\"ag-column-drop-cell\" + suffix, \"ag-column-drop-\" + direction + \"-cell\" + suffix);\n    };\n    DropZoneColumnComp.prototype.isAggregationZone = function () {\n        return this.dropZonePurpose === 'aggregation';\n    };\n    DropZoneColumnComp.prototype.isGroupingZone = function () {\n        return this.dropZonePurpose === 'rowGroup';\n    };\n    DropZoneColumnComp.EVENT_COLUMN_REMOVE = 'columnRemove';\n    DropZoneColumnComp.TEMPLATE = \"<span role=\\\"option\\\" tabindex=\\\"0\\\">\\n          <span ref=\\\"eDragHandle\\\" class=\\\"ag-drag-handle ag-column-drop-cell-drag-handle\\\" role=\\\"presentation\\\"></span>\\n          <span ref=\\\"eText\\\" class=\\\"ag-column-drop-cell-text\\\" aria-hidden=\\\"true\\\"></span>\\n          <ag-sort-indicator ref=\\\"eSortIndicator\\\"></ag-sort-indicator>\\n          <span ref=\\\"eButton\\\" class=\\\"ag-column-drop-cell-button\\\" role=\\\"presentation\\\"></span>\\n        </span>\";\n    __decorate$2h([\n        Autowired('dragAndDropService')\n    ], DropZoneColumnComp.prototype, \"dragAndDropService\", void 0);\n    __decorate$2h([\n        Autowired('columnModel')\n    ], DropZoneColumnComp.prototype, \"columnModel\", void 0);\n    __decorate$2h([\n        Autowired('popupService')\n    ], DropZoneColumnComp.prototype, \"popupService\", void 0);\n    __decorate$2h([\n        Optional('aggFuncService')\n    ], DropZoneColumnComp.prototype, \"aggFuncService\", void 0);\n    __decorate$2h([\n        Autowired('sortController')\n    ], DropZoneColumnComp.prototype, \"sortController\", void 0);\n    __decorate$2h([\n        RefSelector('eText')\n    ], DropZoneColumnComp.prototype, \"eText\", void 0);\n    __decorate$2h([\n        RefSelector('eDragHandle')\n    ], DropZoneColumnComp.prototype, \"eDragHandle\", void 0);\n    __decorate$2h([\n        RefSelector('eButton')\n    ], DropZoneColumnComp.prototype, \"eButton\", void 0);\n    __decorate$2h([\n        RefSelector('eSortIndicator')\n    ], DropZoneColumnComp.prototype, \"eSortIndicator\", void 0);\n    __decorate$2h([\n        PostConstruct\n    ], DropZoneColumnComp.prototype, \"init\", null);\n    return DropZoneColumnComp;\n}(Component));\nvar AggItemComp = /** @class */ (function (_super) {\n    __extends$36(AggItemComp, _super);\n    function AggItemComp(itemSelected, value) {\n        var _this = _super.call(this, /* html */ \"<div class=\\\"ag-select-agg-func-item\\\"/>\") || this;\n        _this.selectItem = itemSelected;\n        _this.getGui().innerText = value;\n        _this.addGuiEventListener('click', _this.selectItem);\n        return _this;\n    }\n    return AggItemComp;\n}(Component));\n\nvar __extends$35 = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$2g = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __read$18 = (undefined && undefined.__read) || function (o, n) {\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n    if (!m) return o;\n    var i = m.call(o), r, ar = [], e;\n    try {\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n    }\n    catch (error) { e = { error: error }; }\n    finally {\n        try {\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\n        }\n        finally { if (e) throw e.error; }\n    }\n    return ar;\n};\nvar __spread$G = (undefined && undefined.__spread) || function () {\n    for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read$18(arguments[i]));\n    return ar;\n};\nvar BaseDropZonePanel = /** @class */ (function (_super) {\n    __extends$35(BaseDropZonePanel, _super);\n    function BaseDropZonePanel(horizontal, dropZonePurpose) {\n        var _this = _super.call(this, /* html */ \"<div class=\\\"ag-unselectable\\\" role=\\\"presentation\\\"></div>\") || this;\n        _this.horizontal = horizontal;\n        _this.dropZonePurpose = dropZonePurpose;\n        _this.state = BaseDropZonePanel.STATE_NOT_DRAGGING;\n        _this.guiDestroyFunctions = [];\n        _this.childColumnComponents = [];\n        _this.resizeEnabled = false;\n        _this.addElementClasses(_this.getGui());\n        _this.eColumnDropList = document.createElement('div');\n        _this.addElementClasses(_this.eColumnDropList, 'list');\n        _.setAriaRole(_this.eColumnDropList, 'listbox');\n        return _this;\n    }\n    BaseDropZonePanel.prototype.isHorizontal = function () {\n        return this.horizontal;\n    };\n    BaseDropZonePanel.prototype.toggleResizable = function (resizable) {\n        this.positionableFeature.setResizable(resizable ? { bottom: true } : false);\n        this.resizeEnabled = resizable;\n    };\n    BaseDropZonePanel.prototype.setBeans = function (beans) {\n        this.beans = beans;\n    };\n    BaseDropZonePanel.prototype.destroy = function () {\n        this.destroyGui();\n        _super.prototype.destroy.call(this);\n    };\n    BaseDropZonePanel.prototype.destroyGui = function () {\n        this.guiDestroyFunctions.forEach(function (func) { return func(); });\n        this.guiDestroyFunctions.length = 0;\n        this.childColumnComponents.length = 0;\n        _.clearElement(this.getGui());\n        _.clearElement(this.eColumnDropList);\n    };\n    BaseDropZonePanel.prototype.init = function (params) {\n        this.params = params;\n        this.createManagedBean(new ManagedFocusFeature(this.getFocusableElement(), {\n            handleKeyDown: this.handleKeyDown.bind(this)\n        }));\n        this.addManagedListener(this.beans.eventService, Events.EVENT_NEW_COLUMNS_LOADED, this.refreshGui.bind(this));\n        this.addManagedPropertyListener('functionsReadOnly', this.refreshGui.bind(this));\n        this.setupDropTarget();\n        this.positionableFeature = new PositionableFeature(this.getGui(), { minHeight: 100 });\n        this.createManagedBean(this.positionableFeature);\n        // we don't know if this bean will be initialised before columnModel.\n        // if columnModel first, then below will work\n        // if columnModel second, then below will put blank in, and then above event gets first when columnModel is set up\n        this.refreshGui();\n        _.setAriaLabel(this.eColumnDropList, this.getAriaLabel());\n    };\n    BaseDropZonePanel.prototype.handleKeyDown = function (e) {\n        var isVertical = !this.horizontal;\n        var isNext = e.key === KeyCode.DOWN;\n        var isPrevious = e.key === KeyCode.UP;\n        if (!isVertical) {\n            var isRtl = this.gridOptionsService.is('enableRtl');\n            isNext = (!isRtl && e.key === KeyCode.RIGHT) || (isRtl && e.key === KeyCode.LEFT);\n            isPrevious = (!isRtl && e.key === KeyCode.LEFT) || (isRtl && e.key === KeyCode.RIGHT);\n        }\n        if (!isNext && !isPrevious) {\n            return;\n        }\n        var el = this.focusService.findNextFocusableElement(this.getFocusableElement(), false, isPrevious);\n        if (el) {\n            e.preventDefault();\n            el.focus();\n        }\n    };\n    BaseDropZonePanel.prototype.addElementClasses = function (el, suffix) {\n        suffix = suffix ? \"-\" + suffix : '';\n        var direction = this.horizontal ? 'horizontal' : 'vertical';\n        el.classList.add(\"ag-column-drop\" + suffix, \"ag-column-drop-\" + direction + suffix);\n    };\n    BaseDropZonePanel.prototype.setupDropTarget = function () {\n        this.dropTarget = {\n            getContainer: this.getGui.bind(this),\n            getIconName: this.getIconName.bind(this),\n            onDragging: this.onDragging.bind(this),\n            onDragEnter: this.onDragEnter.bind(this),\n            onDragLeave: this.onDragLeave.bind(this),\n            onDragStop: this.onDragStop.bind(this),\n            isInterestedIn: this.isInterestedIn.bind(this)\n        };\n        this.beans.dragAndDropService.addDropTarget(this.dropTarget);\n    };\n    BaseDropZonePanel.prototype.isInterestedIn = function (type) {\n        // not interested in row drags\n        return type === DragSourceType.HeaderCell || type === DragSourceType.ToolPanel;\n    };\n    BaseDropZonePanel.prototype.checkInsertIndex = function (draggingEvent) {\n        var newIndex = this.getNewInsertIndex(draggingEvent);\n        // <0 happens when drag is no a direction we are interested in, eg drag is up/down but in horizontal panel\n        if (newIndex < 0) {\n            return false;\n        }\n        var changed = newIndex !== this.insertIndex;\n        if (changed) {\n            this.insertIndex = newIndex;\n        }\n        return changed;\n    };\n    BaseDropZonePanel.prototype.getNewInsertIndex = function (draggingEvent) {\n        var _this = this;\n        var mouseEvent = draggingEvent.event;\n        var mouseLocation = this.horizontal ? mouseEvent.clientX : mouseEvent.clientY;\n        var boundsList = this.childColumnComponents.map(function (col) { return (col.getGui().getBoundingClientRect()); });\n        // find the non-ghost component we're hovering\n        var hoveredIndex = boundsList.findIndex(function (rect) { return (_this.horizontal ? (rect.right > mouseLocation && rect.left < mouseLocation) : (rect.top < mouseLocation && rect.bottom > mouseLocation)); });\n        // not hovering a non-ghost component\n        if (hoveredIndex === -1) {\n            var enableRtl = this.beans.gridOptionsService.is('enableRtl');\n            // if mouse is below or right of all components then new index should be placed last\n            var isLast = boundsList.every(function (rect) { return (mouseLocation > (_this.horizontal ? rect.right : rect.bottom)); });\n            if (isLast) {\n                return enableRtl && this.horizontal ? 0 : this.childColumnComponents.length;\n            }\n            // if mouse is above or left of all components, new index is first\n            var isFirst = boundsList.every(function (rect) { return (mouseLocation < (_this.horizontal ? rect.left : rect.top)); });\n            if (isFirst) {\n                return enableRtl && this.horizontal ? this.childColumnComponents.length : 0;\n            }\n            // must be hovering a ghost, don't change the index\n            return this.insertIndex;\n        }\n        // if the old index is equal to or less than the index of our new target\n        // we need to shift right, to insert after rather than before\n        if (this.insertIndex <= hoveredIndex) {\n            return hoveredIndex + 1;\n        }\n        return hoveredIndex;\n    };\n    BaseDropZonePanel.prototype.checkDragStartedBySelf = function (draggingEvent) {\n        if (this.state !== BaseDropZonePanel.STATE_NOT_DRAGGING) {\n            return;\n        }\n        this.state = BaseDropZonePanel.STATE_REARRANGE_COLUMNS;\n        this.potentialDndColumns = draggingEvent.dragSource.getDragItem().columns || [];\n        this.refreshGui();\n        this.checkInsertIndex(draggingEvent);\n        this.refreshGui();\n    };\n    BaseDropZonePanel.prototype.onDragging = function (draggingEvent) {\n        this.checkDragStartedBySelf(draggingEvent);\n        if (this.checkInsertIndex(draggingEvent)) {\n            this.refreshGui();\n        }\n    };\n    BaseDropZonePanel.prototype.onDragEnter = function (draggingEvent) {\n        // this will contain all columns that are potential drops\n        var dragColumns = draggingEvent.dragSource.getDragItem().columns || [];\n        this.state = BaseDropZonePanel.STATE_NEW_COLUMNS_IN;\n        // take out columns that are not droppable\n        var goodDragColumns = dragColumns.filter(this.isColumnDroppable.bind(this));\n        if (goodDragColumns.length > 0) {\n            var hideColumnOnExit = this.isRowGroupPanel() && !this.gridOptionsService.is('suppressRowGroupHidesColumns') && !draggingEvent.fromNudge;\n            if (hideColumnOnExit) {\n                var dragItem = draggingEvent.dragSource.getDragItem();\n                var columns = dragItem.columns;\n                this.setColumnsVisible(columns, false, \"uiColumnDragged\");\n            }\n            this.potentialDndColumns = goodDragColumns;\n            this.checkInsertIndex(draggingEvent);\n            this.refreshGui();\n        }\n    };\n    BaseDropZonePanel.prototype.setColumnsVisible = function (columns, visible, source) {\n        if (source === void 0) { source = \"api\"; }\n        if (columns) {\n            var allowedCols = columns.filter(function (c) { return !c.getColDef().lockVisible; });\n            this.colModel.setColumnsVisible(allowedCols, visible, source);\n        }\n    };\n    BaseDropZonePanel.prototype.isPotentialDndColumns = function () {\n        return _.existsAndNotEmpty(this.potentialDndColumns);\n    };\n    BaseDropZonePanel.prototype.isRowGroupPanel = function () {\n        return this.dropZonePurpose === 'rowGroup';\n    };\n    BaseDropZonePanel.prototype.onDragLeave = function (draggingEvent) {\n        // if the dragging started from us, we remove the group, however if it started\n        // some place else, then we don't, as it was only 'asking'\n        if (this.state === BaseDropZonePanel.STATE_REARRANGE_COLUMNS) {\n            var columns = draggingEvent.dragSource.getDragItem().columns || [];\n            this.removeColumns(columns);\n        }\n        if (this.isPotentialDndColumns()) {\n            var showColumnOnExit = this.isRowGroupPanel() && !this.gridOptionsService.is('suppressMakeColumnVisibleAfterUnGroup') && !draggingEvent.fromNudge;\n            if (showColumnOnExit) {\n                var dragItem = draggingEvent.dragSource.getDragItem();\n                this.setColumnsVisible(dragItem.columns, true, \"uiColumnDragged\");\n            }\n            this.potentialDndColumns = [];\n            this.refreshGui();\n        }\n        this.state = BaseDropZonePanel.STATE_NOT_DRAGGING;\n    };\n    BaseDropZonePanel.prototype.onDragStop = function () {\n        if (this.isPotentialDndColumns()) {\n            var success = false;\n            if (this.state === BaseDropZonePanel.STATE_NEW_COLUMNS_IN) {\n                this.addColumns(this.potentialDndColumns);\n                success = true;\n            }\n            else {\n                success = this.rearrangeColumns(this.potentialDndColumns);\n            }\n            this.potentialDndColumns = [];\n            // If the function is passive, then we don't refresh, as we assume the client application\n            // is going to call setRowGroups / setPivots / setValues at a later point which will then\n            // cause a refresh. This gives a nice GUI where the ghost stays until the app has caught\n            // up with the changes. However, if there was no change in the order, then we do need to\n            // refresh to reset the columns\n            if (!this.beans.gridOptionsService.is('functionsPassive') || !success) {\n                this.refreshGui();\n            }\n        }\n        this.state = BaseDropZonePanel.STATE_NOT_DRAGGING;\n    };\n    BaseDropZonePanel.prototype.removeColumns = function (columnsToRemove) {\n        var newColumnList = this.getExistingColumns().filter(function (col) { return !_.includes(columnsToRemove, col); });\n        this.updateColumns(newColumnList);\n    };\n    BaseDropZonePanel.prototype.addColumns = function (columnsToAdd) {\n        if (!columnsToAdd) {\n            return;\n        }\n        var newColumnList = this.getExistingColumns().slice();\n        var colsToAddNoDuplicates = columnsToAdd.filter(function (col) { return newColumnList.indexOf(col) < 0; });\n        _.insertArrayIntoArray(newColumnList, colsToAddNoDuplicates, this.insertIndex);\n        this.updateColumns(newColumnList);\n    };\n    BaseDropZonePanel.prototype.rearrangeColumns = function (columnsToAdd) {\n        var newColumnList = this.getNonGhostColumns().slice();\n        _.insertArrayIntoArray(newColumnList, columnsToAdd, this.insertIndex);\n        if (_.areEqual(newColumnList, this.getExistingColumns())) {\n            return false;\n        }\n        this.updateColumns(newColumnList);\n        return true;\n    };\n    BaseDropZonePanel.prototype.refreshGui = function () {\n        // we reset the scroll position after the refresh.\n        // if we don't do this, then the list will always scroll to the top\n        // each time we refresh it. this is because part of the refresh empties\n        // out the list which sets scroll to zero. so the user could be just\n        // reordering the list - we want to prevent the resetting of the scroll.\n        // this is relevant for vertical display only (as horizontal has no scroll)\n        var scrollTop = this.eColumnDropList.scrollTop;\n        var resizeEnabled = this.resizeEnabled;\n        var focusedIndex = this.getFocusedItem();\n        var alternateElement = this.focusService.findNextFocusableElement();\n        if (!alternateElement) {\n            alternateElement = this.focusService.findNextFocusableElement(undefined, false, true);\n        }\n        this.toggleResizable(false);\n        this.destroyGui();\n        this.addIconAndTitleToGui();\n        this.addEmptyMessageToGui();\n        this.addColumnsToGui();\n        if (!this.isHorizontal()) {\n            this.eColumnDropList.scrollTop = scrollTop;\n        }\n        if (resizeEnabled) {\n            this.toggleResizable(resizeEnabled);\n        }\n        // focus should only be restored when keyboard mode\n        // otherwise mouse clicks will cause containers to scroll\n        // without no apparent reason.\n        if (this.focusService.isKeyboardMode()) {\n            this.restoreFocus(focusedIndex, alternateElement);\n        }\n    };\n    BaseDropZonePanel.prototype.getFocusedItem = function () {\n        var eGui = this.getGui();\n        var activeElement = this.gridOptionsService.getDocument().activeElement;\n        if (!eGui.contains(activeElement)) {\n            return -1;\n        }\n        var items = Array.from(eGui.querySelectorAll('.ag-column-drop-cell'));\n        return items.indexOf(activeElement);\n    };\n    BaseDropZonePanel.prototype.restoreFocus = function (index, alternateElement) {\n        var eGui = this.getGui();\n        var items = Array.from(eGui.querySelectorAll('.ag-column-drop-cell'));\n        if (index === -1) {\n            return;\n        }\n        if (items.length === 0) {\n            alternateElement.focus();\n        }\n        var indexToFocus = Math.min(items.length - 1, index);\n        var el = items[indexToFocus];\n        if (el) {\n            el.focus();\n        }\n    };\n    BaseDropZonePanel.prototype.getNonGhostColumns = function () {\n        var _this = this;\n        var existingColumns = this.getExistingColumns();\n        if (this.isPotentialDndColumns()) {\n            return existingColumns.filter(function (column) { return !_.includes(_this.potentialDndColumns, column); });\n        }\n        return existingColumns;\n    };\n    BaseDropZonePanel.prototype.addColumnsToGui = function () {\n        var _this = this;\n        var nonGhostColumns = this.getNonGhostColumns();\n        var itemsToAddToGui = nonGhostColumns.map(function (column) { return (_this.createColumnComponent(column, false)); });\n        if (this.isPotentialDndColumns()) {\n            var dndColumns = this.potentialDndColumns.map(function (column) { return (_this.createColumnComponent(column, true)); });\n            if (this.insertIndex >= itemsToAddToGui.length) {\n                itemsToAddToGui.push.apply(itemsToAddToGui, __spread$G(dndColumns));\n            }\n            else {\n                itemsToAddToGui.splice.apply(itemsToAddToGui, __spread$G([this.insertIndex, 0], dndColumns));\n            }\n        }\n        this.appendChild(this.eColumnDropList);\n        itemsToAddToGui.forEach(function (columnComponent, index) {\n            if (index > 0) {\n                _this.addArrow(_this.eColumnDropList);\n            }\n            _this.eColumnDropList.appendChild(columnComponent.getGui());\n        });\n        this.addAriaLabelsToComponents();\n    };\n    BaseDropZonePanel.prototype.addAriaLabelsToComponents = function () {\n        var _this = this;\n        this.childColumnComponents.forEach(function (comp, idx) {\n            var eGui = comp.getGui();\n            _.setAriaPosInSet(eGui, idx + 1);\n            _.setAriaSetSize(eGui, _this.childColumnComponents.length);\n        });\n    };\n    BaseDropZonePanel.prototype.createColumnComponent = function (column, ghost) {\n        var _this = this;\n        var columnComponent = new DropZoneColumnComp(column, this.dropTarget, ghost, this.dropZonePurpose, this.horizontal);\n        columnComponent.addEventListener(DropZoneColumnComp.EVENT_COLUMN_REMOVE, this.removeColumns.bind(this, [column]));\n        this.beans.context.createBean(columnComponent);\n        this.guiDestroyFunctions.push(function () { return _this.destroyBean(columnComponent); });\n        if (!ghost) {\n            this.childColumnComponents.push(columnComponent);\n        }\n        return columnComponent;\n    };\n    BaseDropZonePanel.prototype.addIconAndTitleToGui = function () {\n        var eGroupIcon = this.params.icon;\n        var eTitleBar = document.createElement('div');\n        _.setAriaHidden(eTitleBar, true);\n        this.addElementClasses(eTitleBar, 'title-bar');\n        this.addElementClasses(eGroupIcon, 'icon');\n        this.addOrRemoveCssClass('ag-column-drop-empty', this.isExistingColumnsEmpty());\n        eTitleBar.appendChild(eGroupIcon);\n        if (!this.horizontal) {\n            var eTitle = document.createElement('span');\n            this.addElementClasses(eTitle, 'title');\n            eTitle.innerHTML = this.params.title;\n            eTitleBar.appendChild(eTitle);\n        }\n        this.appendChild(eTitleBar);\n    };\n    BaseDropZonePanel.prototype.isExistingColumnsEmpty = function () {\n        return this.getExistingColumns().length === 0;\n    };\n    BaseDropZonePanel.prototype.addEmptyMessageToGui = function () {\n        if (!this.isExistingColumnsEmpty() || this.isPotentialDndColumns()) {\n            return;\n        }\n        var eMessage = document.createElement('span');\n        eMessage.innerHTML = this.params.emptyMessage;\n        this.addElementClasses(eMessage, 'empty-message');\n        this.eColumnDropList.appendChild(eMessage);\n    };\n    BaseDropZonePanel.prototype.addArrow = function (eParent) {\n        // only add the arrows if the layout is horizontal\n        if (this.horizontal) {\n            // for RTL it's a left arrow, otherwise it's a right arrow\n            var enableRtl = this.beans.gridOptionsService.is('enableRtl');\n            var icon = _.createIconNoSpan(enableRtl ? 'smallLeft' : 'smallRight', this.beans.gridOptionsService);\n            this.addElementClasses(icon, 'cell-separator');\n            eParent.appendChild(icon);\n        }\n    };\n    BaseDropZonePanel.STATE_NOT_DRAGGING = 'notDragging';\n    BaseDropZonePanel.STATE_NEW_COLUMNS_IN = 'newColumnsIn';\n    BaseDropZonePanel.STATE_REARRANGE_COLUMNS = 'rearrangeColumns';\n    __decorate$2g([\n        Autowired('columnModel')\n    ], BaseDropZonePanel.prototype, \"colModel\", void 0);\n    __decorate$2g([\n        Autowired('focusService')\n    ], BaseDropZonePanel.prototype, \"focusService\", void 0);\n    return BaseDropZonePanel;\n}(Component));\n\nvar __extends$34 = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$2f = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar RowGroupDropZonePanel = /** @class */ (function (_super) {\n    __extends$34(RowGroupDropZonePanel, _super);\n    function RowGroupDropZonePanel(horizontal) {\n        return _super.call(this, horizontal, 'rowGroup') || this;\n    }\n    RowGroupDropZonePanel.prototype.passBeansUp = function () {\n        _super.prototype.setBeans.call(this, {\n            gridOptionsService: this.gridOptionsService,\n            eventService: this.eventService,\n            context: this.getContext(),\n            loggerFactory: this.loggerFactory,\n            dragAndDropService: this.dragAndDropService\n        });\n        var localeTextFunc = this.localeService.getLocaleTextFunc();\n        var emptyMessage = localeTextFunc('rowGroupColumnsEmptyMessage', 'Drag here to set row groups');\n        var title = localeTextFunc('groups', 'Row Groups');\n        _super.prototype.init.call(this, {\n            dragAndDropIcon: DragAndDropService.ICON_GROUP,\n            icon: _.createIconNoSpan('rowGroupPanel', this.gridOptionsService, null),\n            emptyMessage: emptyMessage,\n            title: title\n        });\n        this.addManagedListener(this.eventService, Events.EVENT_COLUMN_ROW_GROUP_CHANGED, this.refreshGui.bind(this));\n    };\n    RowGroupDropZonePanel.prototype.getAriaLabel = function () {\n        var translate = this.localeService.getLocaleTextFunc();\n        var label = translate('ariaRowGroupDropZonePanelLabel', 'Row Groups');\n        return label;\n    };\n    RowGroupDropZonePanel.prototype.getTooltipParams = function () {\n        var res = _super.prototype.getTooltipParams.call(this);\n        res.location = 'rowGroupColumnsList';\n        return res;\n    };\n    RowGroupDropZonePanel.prototype.isColumnDroppable = function (column) {\n        // we never allow grouping of secondary columns\n        if (this.gridOptionsService.is('functionsReadOnly') || !column.isPrimary()) {\n            return false;\n        }\n        return column.isAllowRowGroup() && !column.isRowGroupActive();\n    };\n    RowGroupDropZonePanel.prototype.updateColumns = function (columns) {\n        if (this.gridOptionsService.is('functionsPassive')) {\n            var event_1 = {\n                type: Events.EVENT_COLUMN_ROW_GROUP_CHANGE_REQUEST,\n                columns: columns\n            };\n            this.eventService.dispatchEvent(event_1);\n        }\n        else {\n            this.columnModel.setRowGroupColumns(columns, \"toolPanelUi\");\n        }\n    };\n    RowGroupDropZonePanel.prototype.getIconName = function () {\n        return this.isPotentialDndColumns() ? DragAndDropService.ICON_GROUP : DragAndDropService.ICON_NOT_ALLOWED;\n    };\n    RowGroupDropZonePanel.prototype.getExistingColumns = function () {\n        return this.columnModel.getRowGroupColumns();\n    };\n    __decorate$2f([\n        Autowired('columnModel')\n    ], RowGroupDropZonePanel.prototype, \"columnModel\", void 0);\n    __decorate$2f([\n        Autowired('loggerFactory')\n    ], RowGroupDropZonePanel.prototype, \"loggerFactory\", void 0);\n    __decorate$2f([\n        Autowired('dragAndDropService')\n    ], RowGroupDropZonePanel.prototype, \"dragAndDropService\", void 0);\n    __decorate$2f([\n        PostConstruct\n    ], RowGroupDropZonePanel.prototype, \"passBeansUp\", null);\n    return RowGroupDropZonePanel;\n}(BaseDropZonePanel));\n\nvar __extends$33 = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$2e = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar PivotDropZonePanel = /** @class */ (function (_super) {\n    __extends$33(PivotDropZonePanel, _super);\n    function PivotDropZonePanel(horizontal) {\n        return _super.call(this, horizontal, 'pivot') || this;\n    }\n    PivotDropZonePanel.prototype.passBeansUp = function () {\n        _super.prototype.setBeans.call(this, {\n            gridOptionsService: this.gridOptionsService,\n            eventService: this.eventService,\n            context: this.getContext(),\n            loggerFactory: this.loggerFactory,\n            dragAndDropService: this.dragAndDropService\n        });\n        var localeTextFunc = this.localeService.getLocaleTextFunc();\n        var emptyMessage = localeTextFunc('pivotColumnsEmptyMessage', 'Drag here to set column labels');\n        var title = localeTextFunc('pivots', 'Column Labels');\n        _super.prototype.init.call(this, {\n            dragAndDropIcon: DragAndDropService.ICON_GROUP,\n            icon: _.createIconNoSpan('pivotPanel', this.gridOptionsService, null),\n            emptyMessage: emptyMessage,\n            title: title\n        });\n        this.addManagedListener(this.eventService, Events.EVENT_NEW_COLUMNS_LOADED, this.refresh.bind(this));\n        this.addManagedListener(this.eventService, Events.EVENT_COLUMN_PIVOT_CHANGED, this.refresh.bind(this));\n        this.addManagedListener(this.eventService, Events.EVENT_COLUMN_PIVOT_MODE_CHANGED, this.checkVisibility.bind(this));\n        this.refresh();\n    };\n    PivotDropZonePanel.prototype.getAriaLabel = function () {\n        var translate = this.localeService.getLocaleTextFunc();\n        var label = translate('ariaPivotDropZonePanelLabel', 'Column Labels');\n        return label;\n    };\n    PivotDropZonePanel.prototype.getTooltipParams = function () {\n        var res = _super.prototype.getTooltipParams.call(this);\n        res.location = 'pivotColumnsList';\n        return res;\n    };\n    PivotDropZonePanel.prototype.refresh = function () {\n        this.checkVisibility();\n        this.refreshGui();\n    };\n    PivotDropZonePanel.prototype.checkVisibility = function () {\n        var pivotMode = this.columnModel.isPivotMode();\n        if (this.isHorizontal()) {\n            // what we do for horizontal (ie the pivot panel at the top) depends\n            // on the user property as well as pivotMode.\n            switch (this.gridOptionsService.get('pivotPanelShow')) {\n                case 'always':\n                    this.setDisplayed(pivotMode);\n                    break;\n                case 'onlyWhenPivoting':\n                    var pivotActive = this.columnModel.isPivotActive();\n                    this.setDisplayed(pivotMode && pivotActive);\n                    break;\n                default:\n                    // never show it\n                    this.setDisplayed(false);\n                    break;\n            }\n        }\n        else {\n            // in toolPanel, the pivot panel is always shown when pivot mode is on\n            this.setDisplayed(pivotMode);\n        }\n    };\n    PivotDropZonePanel.prototype.isColumnDroppable = function (column) {\n        // we never allow grouping of secondary columns\n        if (this.gridOptionsService.is('functionsReadOnly') || !column.isPrimary()) {\n            return false;\n        }\n        return column.isAllowPivot() && !column.isPivotActive();\n    };\n    PivotDropZonePanel.prototype.updateColumns = function (columns) {\n        if (this.gridOptionsService.is('functionsPassive')) {\n            var event_1 = {\n                type: Events.EVENT_COLUMN_PIVOT_CHANGE_REQUEST,\n                columns: columns\n            };\n            this.eventService.dispatchEvent(event_1);\n        }\n        else {\n            this.columnModel.setPivotColumns(columns, \"toolPanelUi\");\n        }\n    };\n    PivotDropZonePanel.prototype.getIconName = function () {\n        return this.isPotentialDndColumns() ? DragAndDropService.ICON_PIVOT : DragAndDropService.ICON_NOT_ALLOWED;\n    };\n    PivotDropZonePanel.prototype.getExistingColumns = function () {\n        return this.columnModel.getPivotColumns();\n    };\n    __decorate$2e([\n        Autowired('columnModel')\n    ], PivotDropZonePanel.prototype, \"columnModel\", void 0);\n    __decorate$2e([\n        Autowired('loggerFactory')\n    ], PivotDropZonePanel.prototype, \"loggerFactory\", void 0);\n    __decorate$2e([\n        Autowired('dragAndDropService')\n    ], PivotDropZonePanel.prototype, \"dragAndDropService\", void 0);\n    __decorate$2e([\n        PostConstruct\n    ], PivotDropZonePanel.prototype, \"passBeansUp\", null);\n    return PivotDropZonePanel;\n}(BaseDropZonePanel));\n\nvar __extends$32 = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$2d = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar GridHeaderDropZones = /** @class */ (function (_super) {\n    __extends$32(GridHeaderDropZones, _super);\n    function GridHeaderDropZones() {\n        return _super.call(this) || this;\n    }\n    GridHeaderDropZones.prototype.postConstruct = function () {\n        this.setGui(this.createNorthPanel());\n        this.addManagedListener(this.eventService, Events.EVENT_COLUMN_ROW_GROUP_CHANGED, this.onRowGroupChanged.bind(this));\n        this.addManagedListener(this.eventService, Events.EVENT_NEW_COLUMNS_LOADED, this.onRowGroupChanged.bind(this));\n        this.addManagedPropertyListener('rowGroupPanelShow', this.onRowGroupChanged.bind(this));\n        this.onRowGroupChanged();\n    };\n    GridHeaderDropZones.prototype.createNorthPanel = function () {\n        var topPanelGui = document.createElement('div');\n        var dropPanelVisibleListener = this.onDropPanelVisible.bind(this);\n        topPanelGui.classList.add('ag-column-drop-wrapper');\n        _.setAriaRole(topPanelGui, 'presentation');\n        this.rowGroupComp = new RowGroupDropZonePanel(true);\n        this.createManagedBean(this.rowGroupComp);\n        this.pivotComp = new PivotDropZonePanel(true);\n        this.createManagedBean(this.pivotComp);\n        topPanelGui.appendChild(this.rowGroupComp.getGui());\n        topPanelGui.appendChild(this.pivotComp.getGui());\n        this.addManagedListener(this.rowGroupComp, Component.EVENT_DISPLAYED_CHANGED, dropPanelVisibleListener);\n        this.addManagedListener(this.pivotComp, Component.EVENT_DISPLAYED_CHANGED, dropPanelVisibleListener);\n        this.onDropPanelVisible();\n        return topPanelGui;\n    };\n    GridHeaderDropZones.prototype.onDropPanelVisible = function () {\n        var bothDisplayed = this.rowGroupComp.isDisplayed() && this.pivotComp.isDisplayed();\n        this.rowGroupComp.addOrRemoveCssClass('ag-column-drop-horizontal-half-width', bothDisplayed);\n        this.pivotComp.addOrRemoveCssClass('ag-column-drop-horizontal-half-width', bothDisplayed);\n    };\n    GridHeaderDropZones.prototype.onRowGroupChanged = function () {\n        if (!this.rowGroupComp) {\n            return;\n        }\n        var rowGroupPanelShow = this.gridOptionsService.get('rowGroupPanelShow');\n        if (rowGroupPanelShow === 'always') {\n            this.rowGroupComp.setDisplayed(true);\n        }\n        else if (rowGroupPanelShow === 'onlyWhenGrouping') {\n            var grouping = !this.columnModel.isRowGroupEmpty();\n            this.rowGroupComp.setDisplayed(grouping);\n        }\n        else {\n            this.rowGroupComp.setDisplayed(false);\n        }\n    };\n    __decorate$2d([\n        Autowired('columnModel')\n    ], GridHeaderDropZones.prototype, \"columnModel\", void 0);\n    __decorate$2d([\n        PostConstruct\n    ], GridHeaderDropZones.prototype, \"postConstruct\", null);\n    return GridHeaderDropZones;\n}(Component));\n\nvar __extends$31 = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$2c = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar FilterAggregatesStage = /** @class */ (function (_super) {\n    __extends$31(FilterAggregatesStage, _super);\n    function FilterAggregatesStage() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    FilterAggregatesStage.prototype.execute = function (params) {\n        var _this = this;\n        var isPivotMode = this.columnModel.isPivotMode();\n        var isAggFilterActive = this.filterManager.isAggregateFilterPresent();\n        // This is the default filter for applying only to leaf nodes, realistically this should not apply as primary agg columns,\n        // should not be applied by the filterManager if getGroupAggFiltering is missing. Predicate will apply filters to leaf level.\n        var defaultPrimaryColumnPredicate = function (params) { return !params.node.group; };\n        // Default secondary column predicate, selecting only leaf level groups.\n        var defaultSecondaryColumnPredicate = (function (params) { return params.node.leafGroup; });\n        // The predicate to determine whether filters should apply to this row. Either defined by the user in groupAggFiltering or a default depending\n        // on current pivot mode status.\n        var applyFilterToNode = this.gridOptionsService.getGroupAggFiltering()\n            || (isPivotMode ? defaultSecondaryColumnPredicate : defaultPrimaryColumnPredicate);\n        var changedPath = params.changedPath;\n        var preserveChildren = function (node, recursive) {\n            if (recursive === void 0) { recursive = false; }\n            if (node.childrenAfterFilter) {\n                node.childrenAfterAggFilter = node.childrenAfterFilter;\n                if (recursive) {\n                    node.childrenAfterAggFilter.forEach(function (child) { return preserveChildren(child, recursive); });\n                }\n                _this.setAllChildrenCount(node);\n            }\n            if (node.sibling) {\n                node.sibling.childrenAfterAggFilter = node.childrenAfterAggFilter;\n            }\n        };\n        var filterChildren = function (node) {\n            var _a;\n            node.childrenAfterAggFilter = ((_a = node.childrenAfterFilter) === null || _a === void 0 ? void 0 : _a.filter(function (child) {\n                var _a;\n                var shouldFilterRow = applyFilterToNode({ node: child });\n                if (shouldFilterRow) {\n                    var doesNodePassFilter = _this.filterManager.doesRowPassAggregateFilters({ rowNode: child });\n                    if (doesNodePassFilter) {\n                        // Node has passed, so preserve children\n                        preserveChildren(child, true);\n                        return true;\n                    }\n                }\n                var hasChildPassed = (_a = child.childrenAfterAggFilter) === null || _a === void 0 ? void 0 : _a.length;\n                return hasChildPassed;\n            })) || null;\n            _this.setAllChildrenCount(node);\n            if (node.sibling) {\n                node.sibling.childrenAfterAggFilter = node.childrenAfterAggFilter;\n            }\n        };\n        changedPath.forEachChangedNodeDepthFirst(isAggFilterActive ? filterChildren : preserveChildren, true);\n    };\n    FilterAggregatesStage.prototype.setAllChildrenCountTreeData = function (rowNode) {\n        // for tree data, we include all children, groups and leafs\n        var allChildrenCount = 0;\n        rowNode.childrenAfterAggFilter.forEach(function (child) {\n            // include child itself\n            allChildrenCount++;\n            // include children of children\n            allChildrenCount += child.allChildrenCount;\n        });\n        rowNode.setAllChildrenCount(allChildrenCount);\n    };\n    FilterAggregatesStage.prototype.setAllChildrenCountGridGrouping = function (rowNode) {\n        // for grid data, we only count the leafs\n        var allChildrenCount = 0;\n        rowNode.childrenAfterAggFilter.forEach(function (child) {\n            if (child.group) {\n                allChildrenCount += child.allChildrenCount;\n            }\n            else {\n                allChildrenCount++;\n            }\n        });\n        rowNode.setAllChildrenCount(allChildrenCount);\n    };\n    FilterAggregatesStage.prototype.setAllChildrenCount = function (rowNode) {\n        if (!rowNode.hasChildren()) {\n            rowNode.setAllChildrenCount(null);\n            return;\n        }\n        if (this.gridOptionsService.isTreeData()) {\n            this.setAllChildrenCountTreeData(rowNode);\n        }\n        else {\n            this.setAllChildrenCountGridGrouping(rowNode);\n        }\n    };\n    __decorate$2c([\n        Autowired('filterManager')\n    ], FilterAggregatesStage.prototype, \"filterManager\", void 0);\n    __decorate$2c([\n        Autowired('columnModel')\n    ], FilterAggregatesStage.prototype, \"columnModel\", void 0);\n    FilterAggregatesStage = __decorate$2c([\n        Bean('filterAggregatesStage')\n    ], FilterAggregatesStage);\n    return FilterAggregatesStage;\n}(BeanStub));\n\n// DO NOT UPDATE MANUALLY: Generated from script during build time\nvar VERSION$g = '29.3.5';\n\nvar __extends$30 = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$2b = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar GroupFilter = /** @class */ (function (_super) {\n    __extends$30(GroupFilter, _super);\n    function GroupFilter() {\n        return _super.call(this, /* html */ \"\\n            <div class=\\\"ag-group-filter\\\">\\n                <div ref=\\\"eGroupField\\\"></div>\\n                <div ref=\\\"eUnderlyingFilter\\\"></div>\\n            </div>\\n        \") || this;\n    }\n    GroupFilter.prototype.postConstruct = function () {\n        this.initialiseTabGuard({});\n    };\n    GroupFilter.prototype.init = function (params) {\n        var _this = this;\n        this.params = params;\n        this.validateParams();\n        return this.updateGroups().then(function () {\n            _this.addManagedListener(_this.eventService, Events.EVENT_COLUMN_ROW_GROUP_CHANGED, function () { return _this.onColumnRowGroupChanged(); });\n        });\n    };\n    GroupFilter.prototype.validateParams = function () {\n        var colDef = this.params.colDef;\n        if (colDef.field) {\n            _.doOnce(function () { return console.warn('AG Grid: Group Column Filter does not work with the colDef property \"field\". This property will be ignored.'); }, 'groupFilterFieldParam');\n        }\n        if (colDef.filterValueGetter) {\n            _.doOnce(function () { return console.warn('AG Grid: Group Column Filter does not work with the colDef property \"filterValueGetter\". This property will be ignored.'); }, 'groupFilterFilterValueGetterParam');\n        }\n        if (colDef.filterParams) {\n            _.doOnce(function () { return console.warn('AG Grid: Group Column Filter does not work with the colDef property \"filterParams\". This property will be ignored.'); }, 'groupFilterFilterParams');\n        }\n    };\n    GroupFilter.prototype.updateGroups = function () {\n        var sourceColumns = this.updateGroupField();\n        return this.getUnderlyingFilters(sourceColumns);\n    };\n    GroupFilter.prototype.getSourceColumns = function () {\n        this.groupColumn = this.params.column;\n        if (this.gridOptionsService.is('treeData')) {\n            _.doOnce(function () { return console.warn('AG Grid: Group Column Filter does not work with Tree Data enabled. Please disable Tree Data, or use a different filter.'); }, 'groupFilterTreeData');\n            return [];\n        }\n        var sourceColumns = this.columnModel.getSourceColumnsForGroupColumn(this.groupColumn);\n        if (!sourceColumns) {\n            _.doOnce(function () { return console.warn('AG Grid: Group Column Filter only works on group columns. Please use a different filter.'); }, 'groupFilterNotGroupColumn');\n            return [];\n        }\n        return sourceColumns;\n    };\n    GroupFilter.prototype.updateGroupField = function () {\n        var _this = this;\n        _.clearElement(this.eGroupField);\n        if (this.eGroupFieldSelect) {\n            this.destroyBean(this.eGroupFieldSelect);\n        }\n        var allSourceColumns = this.getSourceColumns();\n        var sourceColumns = allSourceColumns.filter(function (sourceColumn) { return sourceColumn.isFilterAllowed(); });\n        if (!sourceColumns.length) {\n            this.selectedColumn = undefined;\n            _.setDisplayed(this.eGroupField, false);\n            return null;\n        }\n        if (allSourceColumns.length === 1) {\n            // we only want to hide the group field element if there's only one group column.\n            // If there's one group column that has a filter, but multiple columns in total,\n            // we should still show the select so the user knows which column it's for.\n            this.selectedColumn = sourceColumns[0];\n            _.setDisplayed(this.eGroupField, false);\n        }\n        else {\n            // keep the old selected column if it's still valid\n            if (!this.selectedColumn || !sourceColumns.some(function (column) { return column.getId() === _this.selectedColumn.getId(); })) {\n                this.selectedColumn = sourceColumns[0];\n            }\n            this.createGroupFieldSelectElement(sourceColumns);\n            this.eGroupField.appendChild(this.eGroupFieldSelect.getGui());\n            this.eGroupField.appendChild(_.loadTemplate(/* html */ \"<div class=\\\"ag-filter-separator\\\"></div>\"));\n            _.setDisplayed(this.eGroupField, true);\n        }\n        return sourceColumns;\n    };\n    GroupFilter.prototype.createGroupFieldSelectElement = function (sourceColumns) {\n        var _this = this;\n        this.eGroupFieldSelect = this.createManagedBean(new AgSelect());\n        var localeTextFunc = this.localeService.getLocaleTextFunc();\n        this.eGroupFieldSelect.setLabel(localeTextFunc('groupFilterSelect', 'Select field:'));\n        this.eGroupFieldSelect.setLabelAlignment('top');\n        this.eGroupFieldSelect.addOptions(sourceColumns.map(function (sourceColumn) {\n            var _a;\n            return ({\n                value: sourceColumn.getId(),\n                text: (_a = _this.columnModel.getDisplayNameForColumn(sourceColumn, 'groupFilter', false)) !== null && _a !== void 0 ? _a : undefined\n            });\n        }));\n        this.eGroupFieldSelect.setValue(this.selectedColumn.getId());\n        this.eGroupFieldSelect.onValueChange(function (newValue) { return _this.updateSelectedColumn(newValue); });\n        this.eGroupFieldSelect.addCssClass('ag-group-filter-field-select-wrapper');\n        if (sourceColumns.length === 1) {\n            this.eGroupFieldSelect.setDisabled(true);\n        }\n    };\n    GroupFilter.prototype.getUnderlyingFilters = function (sourceColumns) {\n        var _this = this;\n        if (!sourceColumns) {\n            this.filterColumnPairs = undefined;\n            this.selectedFilter = undefined;\n            this.groupColumn.setFilterActive(false, 'columnRowGroupChanged');\n            return AgPromise.resolve();\n        }\n        var filterPromises = [];\n        var filterColumnPairs = [];\n        sourceColumns.forEach(function (column) {\n            var filterWrapper = _this.filterManager.getOrCreateFilterWrapper(column, 'COLUMN_MENU');\n            if (filterWrapper === null || filterWrapper === void 0 ? void 0 : filterWrapper.filterPromise) {\n                filterPromises.push(filterWrapper.filterPromise.then(function (filter) {\n                    if (filter) {\n                        filterColumnPairs.push({\n                            filter: filter,\n                            column: column\n                        });\n                    }\n                    if (column.getId() === _this.selectedColumn.getId()) {\n                        _this.selectedFilter = filter !== null && filter !== void 0 ? filter : undefined;\n                    }\n                    return filter;\n                }));\n            }\n        });\n        return AgPromise.all(filterPromises).then(function () {\n            _this.filterColumnPairs = filterColumnPairs;\n            _this.groupColumn.setFilterActive(_this.isFilterActive(), 'columnRowGroupChanged');\n        });\n    };\n    GroupFilter.prototype.addUnderlyingFilterElement = function () {\n        var _this = this;\n        _.clearElement(this.eUnderlyingFilter);\n        if (!this.selectedColumn) {\n            return AgPromise.resolve();\n        }\n        var filterWrapper = this.filterManager.getOrCreateFilterWrapper(this.selectedColumn, 'COLUMN_MENU');\n        if (!filterWrapper) {\n            return AgPromise.resolve();\n        }\n        return filterWrapper.guiPromise.then(function (gui) {\n            var _a;\n            _this.eUnderlyingFilter.appendChild(gui);\n            (_a = filterWrapper.filterPromise) === null || _a === void 0 ? void 0 : _a.then(function (filter) {\n                var _a, _b;\n                (_a = filter === null || filter === void 0 ? void 0 : filter.afterGuiAttached) === null || _a === void 0 ? void 0 : _a.call(filter, _this.afterGuiAttachedParams);\n                if (!((_b = _this.afterGuiAttachedParams) === null || _b === void 0 ? void 0 : _b.suppressFocus) && _this.eGroupFieldSelect && !_this.eGroupFieldSelect.isDisabled()) {\n                    _this.eGroupFieldSelect.getFocusableElement().focus();\n                }\n            });\n        });\n    };\n    GroupFilter.prototype.updateSelectedColumn = function (columnId) {\n        var _a, _b;\n        if (!columnId) {\n            return;\n        }\n        (_b = (_a = this.selectedFilter) === null || _a === void 0 ? void 0 : _a.afterGuiDetached) === null || _b === void 0 ? void 0 : _b.call(_a);\n        var selectedFilterColumnPair = this.getFilterColumnPair(columnId);\n        this.selectedColumn = selectedFilterColumnPair === null || selectedFilterColumnPair === void 0 ? void 0 : selectedFilterColumnPair.column;\n        this.selectedFilter = selectedFilterColumnPair === null || selectedFilterColumnPair === void 0 ? void 0 : selectedFilterColumnPair.filter;\n        this.dispatchEvent({\n            type: GroupFilter.EVENT_SELECTED_COLUMN_CHANGED\n        });\n        this.addUnderlyingFilterElement();\n    };\n    GroupFilter.prototype.isFilterActive = function () {\n        var _a;\n        return !!((_a = this.filterColumnPairs) === null || _a === void 0 ? void 0 : _a.some(function (_a) {\n            var filter = _a.filter;\n            return filter.isFilterActive();\n        }));\n    };\n    GroupFilter.prototype.doesFilterPass = function () {\n        return true;\n    };\n    GroupFilter.prototype.getModel = function () {\n        return null;\n    };\n    GroupFilter.prototype.setModel = function () {\n        return AgPromise.resolve();\n    };\n    GroupFilter.prototype.afterGuiAttached = function (params) {\n        this.afterGuiAttachedParams = params;\n        this.addUnderlyingFilterElement();\n    };\n    GroupFilter.prototype.afterGuiDetached = function () {\n        var _a, _b;\n        _.clearElement(this.eUnderlyingFilter);\n        (_b = (_a = this.selectedFilter) === null || _a === void 0 ? void 0 : _a.afterGuiDetached) === null || _b === void 0 ? void 0 : _b.call(_a);\n    };\n    GroupFilter.prototype.onColumnRowGroupChanged = function () {\n        var _this = this;\n        this.updateGroups().then(function () {\n            _this.dispatchEvent({\n                type: GroupFilter.EVENT_COLUMN_ROW_GROUP_CHANGED\n            });\n            _this.eventService.dispatchEvent({\n                type: 'filterAllowedUpdated'\n            });\n        });\n    };\n    GroupFilter.prototype.getFilterColumnPair = function (columnId) {\n        var _a;\n        if (!columnId) {\n            return undefined;\n        }\n        return (_a = this.filterColumnPairs) === null || _a === void 0 ? void 0 : _a.find(function (_a) {\n            var column = _a.column;\n            return column.getId() === columnId;\n        });\n    };\n    GroupFilter.prototype.getSelectedFilter = function () {\n        return this.selectedFilter;\n    };\n    GroupFilter.prototype.getSelectedColumn = function () {\n        return this.selectedColumn;\n    };\n    GroupFilter.prototype.isFilterAllowed = function () {\n        return !!this.selectedColumn;\n    };\n    GroupFilter.prototype.destroy = function () {\n        _super.prototype.destroy.call(this);\n    };\n    GroupFilter.EVENT_COLUMN_ROW_GROUP_CHANGED = 'columnRowGroupChanged';\n    GroupFilter.EVENT_SELECTED_COLUMN_CHANGED = 'selectedColumnChanged';\n    __decorate$2b([\n        Autowired('filterManager')\n    ], GroupFilter.prototype, \"filterManager\", void 0);\n    __decorate$2b([\n        Autowired('columnModel')\n    ], GroupFilter.prototype, \"columnModel\", void 0);\n    __decorate$2b([\n        RefSelector('eGroupField')\n    ], GroupFilter.prototype, \"eGroupField\", void 0);\n    __decorate$2b([\n        RefSelector('eUnderlyingFilter')\n    ], GroupFilter.prototype, \"eUnderlyingFilter\", void 0);\n    __decorate$2b([\n        PostConstruct\n    ], GroupFilter.prototype, \"postConstruct\", null);\n    return GroupFilter;\n}(TabGuardComp));\n\nvar __extends$2$ = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$2a = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar GroupFloatingFilterComp = /** @class */ (function (_super) {\n    __extends$2$(GroupFloatingFilterComp, _super);\n    function GroupFloatingFilterComp() {\n        return _super.call(this, /* html */ \"\\n            <div ref=\\\"eFloatingFilter\\\" class=\\\"ag-group-floating-filter ag-floating-filter-input\\\" role=\\\"presentation\\\"></div>\\n        \") || this;\n    }\n    GroupFloatingFilterComp.prototype.init = function (params) {\n        var _this = this;\n        this.params = params;\n        // we only support showing the underlying floating filter for multiple group columns\n        var canShowUnderlyingFloatingFilter = this.gridOptionsService.get('groupDisplayType') === 'multipleColumns';\n        return new AgPromise(function (resolve) {\n            _this.params.parentFilterInstance(function (parentFilterInstance) {\n                _this.parentFilterInstance = parentFilterInstance;\n                if (canShowUnderlyingFloatingFilter) {\n                    _this.setupUnderlyingFloatingFilterElement().then(function () { return resolve(); });\n                }\n                else {\n                    _this.setupReadOnlyFloatingFilterElement();\n                    resolve();\n                }\n            });\n        }).then(function () {\n            _this.addManagedListener(_this.parentFilterInstance, GroupFilter.EVENT_SELECTED_COLUMN_CHANGED, function () { return _this.onSelectedColumnChanged(); });\n            _this.addManagedListener(_this.parentFilterInstance, GroupFilter.EVENT_COLUMN_ROW_GROUP_CHANGED, function () { return _this.onColumnRowGroupChanged(); });\n        });\n    };\n    GroupFloatingFilterComp.prototype.setupReadOnlyFloatingFilterElement = function () {\n        var _this = this;\n        if (!this.eFloatingFilterText) {\n            this.eFloatingFilterText = this.createManagedBean(new AgInputTextField());\n            var displayName = this.columnModel.getDisplayNameForColumn(this.params.column, 'header', true);\n            var translate = this.localeService.getLocaleTextFunc();\n            this.eFloatingFilterText\n                .setDisabled(true)\n                .setInputAriaLabel(displayName + \" \" + translate('ariaFilterInput', 'Filter Input'))\n                .addGuiEventListener('click', function () { return _this.params.showParentFilter(); });\n        }\n        this.updateDisplayedValue();\n        this.eFloatingFilter.appendChild(this.eFloatingFilterText.getGui());\n    };\n    GroupFloatingFilterComp.prototype.setupUnderlyingFloatingFilterElement = function () {\n        var _this = this;\n        this.showingUnderlyingFloatingFilter = false;\n        this.underlyingFloatingFilter = undefined;\n        _.clearElement(this.eFloatingFilter);\n        var column = this.parentFilterInstance.getSelectedColumn();\n        // we can only show the underlying filter if there is one instance (e.g. the underlying column is not visible)\n        if (column && !column.isVisible()) {\n            var compDetails = this.filterManager.getFloatingFilterCompDetails(column, this.params.showParentFilter);\n            if (compDetails) {\n                if (!this.columnVisibleChangedListener) {\n                    this.columnVisibleChangedListener = this.addManagedListener(column, Column.EVENT_VISIBLE_CHANGED, this.onColumnVisibleChanged.bind(this));\n                }\n                return compDetails.newAgStackInstance().then(function (floatingFilter) {\n                    var _a, _b;\n                    _this.underlyingFloatingFilter = floatingFilter;\n                    (_a = _this.underlyingFloatingFilter) === null || _a === void 0 ? void 0 : _a.onParentModelChanged((_b = _this.parentFilterInstance.getSelectedFilter()) === null || _b === void 0 ? void 0 : _b.getModel());\n                    _this.appendChild(floatingFilter.getGui());\n                    _this.showingUnderlyingFloatingFilter = true;\n                });\n            }\n        }\n        // fallback to the read-only version\n        this.setupReadOnlyFloatingFilterElement();\n        return AgPromise.resolve();\n    };\n    GroupFloatingFilterComp.prototype.onColumnVisibleChanged = function () {\n        this.setupUnderlyingFloatingFilterElement();\n    };\n    GroupFloatingFilterComp.prototype.onParentModelChanged = function (_model, event) {\n        var _a, _b;\n        if (this.showingUnderlyingFloatingFilter) {\n            (_a = this.underlyingFloatingFilter) === null || _a === void 0 ? void 0 : _a.onParentModelChanged((_b = this.parentFilterInstance.getSelectedFilter()) === null || _b === void 0 ? void 0 : _b.getModel(), event);\n        }\n        else {\n            this.updateDisplayedValue();\n        }\n    };\n    GroupFloatingFilterComp.prototype.updateDisplayedValue = function () {\n        if (!this.parentFilterInstance || !this.eFloatingFilterText) {\n            return;\n        }\n        var selectedFilter = this.parentFilterInstance.getSelectedFilter();\n        if (!selectedFilter) {\n            this.eFloatingFilterText.setValue('');\n            this.eFloatingFilterText.setDisplayed(false);\n            return;\n        }\n        this.eFloatingFilterText.setDisplayed(true);\n        if (selectedFilter.getModelAsString) {\n            var filterModel = selectedFilter.getModel();\n            this.eFloatingFilterText.setValue(filterModel == null ? '' : selectedFilter.getModelAsString(filterModel));\n        }\n        else {\n            this.eFloatingFilterText.setValue('');\n        }\n    };\n    GroupFloatingFilterComp.prototype.onSelectedColumnChanged = function () {\n        if (!this.showingUnderlyingFloatingFilter) {\n            this.updateDisplayedValue();\n        }\n    };\n    GroupFloatingFilterComp.prototype.onColumnRowGroupChanged = function () {\n        if (!this.showingUnderlyingFloatingFilter) {\n            this.updateDisplayedValue();\n        }\n    };\n    GroupFloatingFilterComp.prototype.destroy = function () {\n        _super.prototype.destroy.call(this);\n    };\n    __decorate$2a([\n        Autowired('columnModel')\n    ], GroupFloatingFilterComp.prototype, \"columnModel\", void 0);\n    __decorate$2a([\n        Autowired('filterManager')\n    ], GroupFloatingFilterComp.prototype, \"filterManager\", void 0);\n    __decorate$2a([\n        RefSelector('eFloatingFilter')\n    ], GroupFloatingFilterComp.prototype, \"eFloatingFilter\", void 0);\n    return GroupFloatingFilterComp;\n}(Component));\n\nvar RowGroupingModule = {\n    version: VERSION$g,\n    moduleName: ModuleNames.RowGroupingModule,\n    beans: [AggregationStage, FilterAggregatesStage, GroupStage, PivotColDefService, PivotStage, AggFuncService],\n    agStackComponents: [\n        { componentName: 'AgGridHeaderDropZones', componentClass: GridHeaderDropZones }\n    ],\n    userComponents: [\n        { componentName: 'agGroupColumnFilter', componentClass: GroupFilter },\n        { componentName: 'agGroupColumnFloatingFilter', componentClass: GroupFloatingFilterComp },\n    ],\n    dependantModules: [\n        EnterpriseCoreModule\n    ]\n};\n\nvar __extends$2_ = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$29 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar ValuesDropZonePanel = /** @class */ (function (_super) {\n    __extends$2_(ValuesDropZonePanel, _super);\n    function ValuesDropZonePanel(horizontal) {\n        return _super.call(this, horizontal, 'aggregation') || this;\n    }\n    ValuesDropZonePanel.prototype.passBeansUp = function () {\n        _super.prototype.setBeans.call(this, {\n            gridOptionsService: this.gridOptionsService,\n            eventService: this.eventService,\n            context: this.getContext(),\n            loggerFactory: this.loggerFactory,\n            dragAndDropService: this.dragAndDropService\n        });\n        var localeTextFunc = this.localeService.getLocaleTextFunc();\n        var emptyMessage = localeTextFunc('valueColumnsEmptyMessage', 'Drag here to aggregate');\n        var title = localeTextFunc('values', 'Values');\n        _super.prototype.init.call(this, {\n            dragAndDropIcon: DragAndDropService.ICON_AGGREGATE,\n            icon: _.createIconNoSpan('valuePanel', this.gridOptionsService, null),\n            emptyMessage: emptyMessage,\n            title: title\n        });\n        this.addManagedListener(this.eventService, Events.EVENT_COLUMN_VALUE_CHANGED, this.refreshGui.bind(this));\n    };\n    ValuesDropZonePanel.prototype.getAriaLabel = function () {\n        var translate = this.localeService.getLocaleTextFunc();\n        var label = translate('ariaValuesDropZonePanelLabel', 'Values');\n        return label;\n    };\n    ValuesDropZonePanel.prototype.getTooltipParams = function () {\n        var res = _super.prototype.getTooltipParams.call(this);\n        res.location = 'valueColumnsList';\n        return res;\n    };\n    ValuesDropZonePanel.prototype.getIconName = function () {\n        return this.isPotentialDndColumns() ? DragAndDropService.ICON_AGGREGATE : DragAndDropService.ICON_NOT_ALLOWED;\n    };\n    ValuesDropZonePanel.prototype.isColumnDroppable = function (column) {\n        // we never allow grouping of secondary columns\n        if (this.gridOptionsService.is('functionsReadOnly') || !column.isPrimary()) {\n            return false;\n        }\n        return column.isAllowValue() && !column.isValueActive();\n    };\n    ValuesDropZonePanel.prototype.updateColumns = function (columns) {\n        if (this.gridOptionsService.is('functionsPassive')) {\n            var event_1 = {\n                type: Events.EVENT_COLUMN_VALUE_CHANGE_REQUEST,\n                columns: columns\n            };\n            this.eventService.dispatchEvent(event_1);\n        }\n        else {\n            this.columnModel.setValueColumns(columns, \"toolPanelUi\");\n        }\n    };\n    ValuesDropZonePanel.prototype.getExistingColumns = function () {\n        return this.columnModel.getValueColumns();\n    };\n    __decorate$29([\n        Autowired('columnModel')\n    ], ValuesDropZonePanel.prototype, \"columnModel\", void 0);\n    __decorate$29([\n        Autowired('loggerFactory')\n    ], ValuesDropZonePanel.prototype, \"loggerFactory\", void 0);\n    __decorate$29([\n        Autowired('dragAndDropService')\n    ], ValuesDropZonePanel.prototype, \"dragAndDropService\", void 0);\n    __decorate$29([\n        PostConstruct\n    ], ValuesDropZonePanel.prototype, \"passBeansUp\", null);\n    return ValuesDropZonePanel;\n}(BaseDropZonePanel));\n\nvar __extends$2Z = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$28 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar PrimaryColsPanel = /** @class */ (function (_super) {\n    __extends$2Z(PrimaryColsPanel, _super);\n    function PrimaryColsPanel() {\n        return _super.call(this, PrimaryColsPanel.TEMPLATE) || this;\n    }\n    // we allow dragging in the toolPanel, but not when this component appears in the column menu\n    PrimaryColsPanel.prototype.init = function (allowDragging, params, eventType) {\n        this.allowDragging = allowDragging;\n        this.params = params;\n        this.eventType = eventType;\n        this.primaryColsHeaderPanel.init(this.params);\n        var hideFilter = this.params.suppressColumnFilter;\n        var hideSelect = this.params.suppressColumnSelectAll;\n        var hideExpand = this.params.suppressColumnExpandAll;\n        if (hideExpand && hideFilter && hideSelect) {\n            this.primaryColsHeaderPanel.setDisplayed(false);\n        }\n        this.addManagedListener(this.primaryColsListPanel, 'groupExpanded', this.onGroupExpanded.bind(this));\n        this.addManagedListener(this.primaryColsListPanel, 'selectionChanged', this.onSelectionChange.bind(this));\n        this.primaryColsListPanel.init(this.params, this.allowDragging, this.eventType);\n        this.addManagedListener(this.primaryColsHeaderPanel, 'expandAll', this.onExpandAll.bind(this));\n        this.addManagedListener(this.primaryColsHeaderPanel, 'collapseAll', this.onCollapseAll.bind(this));\n        this.addManagedListener(this.primaryColsHeaderPanel, 'selectAll', this.onSelectAll.bind(this));\n        this.addManagedListener(this.primaryColsHeaderPanel, 'unselectAll', this.onUnselectAll.bind(this));\n        this.addManagedListener(this.primaryColsHeaderPanel, 'filterChanged', this.onFilterChanged.bind(this));\n        this.positionableFeature = new PositionableFeature(this.getGui(), { minHeight: 100 });\n        this.createManagedBean(this.positionableFeature);\n    };\n    PrimaryColsPanel.prototype.toggleResizable = function (resizable) {\n        this.positionableFeature.setResizable(resizable ? { bottom: true } : false);\n    };\n    PrimaryColsPanel.prototype.onExpandAll = function () {\n        this.primaryColsListPanel.doSetExpandedAll(true);\n    };\n    PrimaryColsPanel.prototype.onCollapseAll = function () {\n        this.primaryColsListPanel.doSetExpandedAll(false);\n    };\n    PrimaryColsPanel.prototype.expandGroups = function (groupIds) {\n        this.primaryColsListPanel.setGroupsExpanded(true, groupIds);\n    };\n    PrimaryColsPanel.prototype.collapseGroups = function (groupIds) {\n        this.primaryColsListPanel.setGroupsExpanded(false, groupIds);\n    };\n    PrimaryColsPanel.prototype.setColumnLayout = function (colDefs) {\n        this.primaryColsListPanel.setColumnLayout(colDefs);\n    };\n    PrimaryColsPanel.prototype.onFilterChanged = function (event) {\n        this.primaryColsListPanel.setFilterText(event.filterText);\n    };\n    PrimaryColsPanel.prototype.syncLayoutWithGrid = function () {\n        this.primaryColsListPanel.onColumnsChanged();\n    };\n    PrimaryColsPanel.prototype.onSelectAll = function () {\n        this.primaryColsListPanel.doSetSelectedAll(true);\n    };\n    PrimaryColsPanel.prototype.onUnselectAll = function () {\n        this.primaryColsListPanel.doSetSelectedAll(false);\n    };\n    PrimaryColsPanel.prototype.onGroupExpanded = function (event) {\n        this.primaryColsHeaderPanel.setExpandState(event.state);\n    };\n    PrimaryColsPanel.prototype.onSelectionChange = function (event) {\n        this.primaryColsHeaderPanel.setSelectionState(event.state);\n    };\n    PrimaryColsPanel.TEMPLATE = \"<div class=\\\"ag-column-select\\\">\\n            <ag-primary-cols-header ref=\\\"primaryColsHeaderPanel\\\"></ag-primary-cols-header>\\n            <ag-primary-cols-list ref=\\\"primaryColsListPanel\\\"></ag-primary-cols-list>\\n        </div>\";\n    __decorate$28([\n        RefSelector('primaryColsHeaderPanel')\n    ], PrimaryColsPanel.prototype, \"primaryColsHeaderPanel\", void 0);\n    __decorate$28([\n        RefSelector('primaryColsListPanel')\n    ], PrimaryColsPanel.prototype, \"primaryColsListPanel\", void 0);\n    return PrimaryColsPanel;\n}(Component));\n\nvar __extends$2Y = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __assign$N = (undefined && undefined.__assign) || function () {\n    __assign$N = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign$N.apply(this, arguments);\n};\nvar __decorate$27 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar ColumnToolPanel = /** @class */ (function (_super) {\n    __extends$2Y(ColumnToolPanel, _super);\n    function ColumnToolPanel() {\n        var _this = _super.call(this, ColumnToolPanel.TEMPLATE) || this;\n        _this.initialised = false;\n        _this.childDestroyFuncs = [];\n        return _this;\n    }\n    // lazy initialise the panel\n    ColumnToolPanel.prototype.setVisible = function (visible) {\n        _super.prototype.setDisplayed.call(this, visible);\n        if (visible && !this.initialised) {\n            this.init(this.params);\n        }\n    };\n    ColumnToolPanel.prototype.init = function (params) {\n        var _this = this;\n        var defaultParams = {\n            suppressColumnMove: false,\n            suppressColumnSelectAll: false,\n            suppressColumnFilter: false,\n            suppressColumnExpandAll: false,\n            contractColumnSelection: false,\n            suppressPivotMode: false,\n            suppressRowGroups: false,\n            suppressValues: false,\n            suppressPivots: false,\n            suppressSyncLayoutWithGrid: false,\n            api: this.gridApi,\n            columnApi: this.columnApi,\n        };\n        this.params = __assign$N(__assign$N(__assign$N({}, defaultParams), params), { context: this.gridOptionsService.context });\n        if (this.isRowGroupingModuleLoaded() && !this.params.suppressPivotMode) {\n            // DO NOT CHANGE TO createManagedBean\n            this.pivotModePanel = this.createBean(new PivotModePanel());\n            this.childDestroyFuncs.push(function () { return _this.destroyBean(_this.pivotModePanel); });\n            this.appendChild(this.pivotModePanel);\n        }\n        // DO NOT CHANGE TO createManagedBean\n        this.primaryColsPanel = this.createBean(new PrimaryColsPanel());\n        this.childDestroyFuncs.push(function () { return _this.destroyBean(_this.primaryColsPanel); });\n        this.primaryColsPanel.init(true, this.params, \"toolPanelUi\");\n        this.primaryColsPanel.addCssClass('ag-column-panel-column-select');\n        this.appendChild(this.primaryColsPanel);\n        if (this.isRowGroupingModuleLoaded()) {\n            if (!this.params.suppressRowGroups) {\n                // DO NOT CHANGE TO createManagedBean\n                this.rowGroupDropZonePanel = this.createBean(new RowGroupDropZonePanel(false));\n                this.childDestroyFuncs.push(function () { return _this.destroyBean(_this.rowGroupDropZonePanel); });\n                this.appendChild(this.rowGroupDropZonePanel);\n            }\n            if (!this.params.suppressValues) {\n                // DO NOT CHANGE TO createManagedBean\n                this.valuesDropZonePanel = this.createBean(new ValuesDropZonePanel(false));\n                this.childDestroyFuncs.push(function () { return _this.destroyBean(_this.valuesDropZonePanel); });\n                this.appendChild(this.valuesDropZonePanel);\n            }\n            if (!this.params.suppressPivots) {\n                // DO NOT CHANGE TO createManagedBean\n                this.pivotDropZonePanel = this.createBean(new PivotDropZonePanel(false));\n                this.childDestroyFuncs.push(function () { return _this.destroyBean(_this.pivotDropZonePanel); });\n                this.appendChild(this.pivotDropZonePanel);\n            }\n            this.setLastVisible();\n            var pivotModeListener_1 = this.addManagedListener(this.eventService, Events.EVENT_COLUMN_PIVOT_MODE_CHANGED, function () {\n                _this.resetChildrenHeight();\n                _this.setLastVisible();\n            });\n            this.childDestroyFuncs.push(function () { return pivotModeListener_1(); });\n        }\n        this.initialised = true;\n    };\n    ColumnToolPanel.prototype.setPivotModeSectionVisible = function (visible) {\n        var _this = this;\n        if (!this.isRowGroupingModuleLoaded()) {\n            return;\n        }\n        if (this.pivotModePanel) {\n            this.pivotModePanel.setDisplayed(visible);\n        }\n        else if (visible) {\n            this.pivotModePanel = this.createBean(new PivotModePanel());\n            // ensure pivot mode panel is positioned at the top of the columns tool panel\n            this.getGui().insertBefore(this.pivotModePanel.getGui(), this.getGui().firstChild);\n            this.childDestroyFuncs.push(function () { return _this.destroyBean(_this.pivotModePanel); });\n        }\n        this.setLastVisible();\n    };\n    ColumnToolPanel.prototype.setRowGroupsSectionVisible = function (visible) {\n        if (!this.isRowGroupingModuleLoaded()) {\n            return;\n        }\n        if (this.rowGroupDropZonePanel) {\n            this.rowGroupDropZonePanel.setDisplayed(visible);\n        }\n        else if (visible) {\n            this.rowGroupDropZonePanel = this.createManagedBean(new RowGroupDropZonePanel(false));\n            this.appendChild(this.rowGroupDropZonePanel);\n        }\n        this.setLastVisible();\n    };\n    ColumnToolPanel.prototype.setValuesSectionVisible = function (visible) {\n        if (!this.isRowGroupingModuleLoaded()) {\n            return;\n        }\n        if (this.valuesDropZonePanel) {\n            this.valuesDropZonePanel.setDisplayed(visible);\n        }\n        else if (visible) {\n            this.valuesDropZonePanel = this.createManagedBean(new ValuesDropZonePanel(false));\n            this.appendChild(this.valuesDropZonePanel);\n        }\n        this.setLastVisible();\n    };\n    ColumnToolPanel.prototype.setPivotSectionVisible = function (visible) {\n        if (!this.isRowGroupingModuleLoaded()) {\n            return;\n        }\n        if (this.pivotDropZonePanel) {\n            this.pivotDropZonePanel.setDisplayed(visible);\n        }\n        else if (visible) {\n            this.pivotDropZonePanel = this.createManagedBean(new PivotDropZonePanel(false));\n            this.appendChild(this.pivotDropZonePanel);\n            this.pivotDropZonePanel.setDisplayed(visible);\n        }\n        this.setLastVisible();\n    };\n    ColumnToolPanel.prototype.setResizers = function () {\n        [\n            this.primaryColsPanel,\n            this.rowGroupDropZonePanel,\n            this.valuesDropZonePanel,\n            this.pivotDropZonePanel\n        ].forEach(function (panel) {\n            if (!panel) {\n                return;\n            }\n            var eGui = panel.getGui();\n            panel.toggleResizable(!eGui.classList.contains('ag-last-column-drop') && !eGui.classList.contains('ag-hidden'));\n        });\n    };\n    ColumnToolPanel.prototype.setLastVisible = function () {\n        var eGui = this.getGui();\n        var columnDrops = Array.prototype.slice.call(eGui.querySelectorAll('.ag-column-drop'));\n        columnDrops.forEach(function (columnDrop) { return columnDrop.classList.remove('ag-last-column-drop'); });\n        var columnDropEls = eGui.querySelectorAll('.ag-column-drop:not(.ag-hidden)');\n        var lastVisible = _.last(columnDropEls);\n        if (lastVisible) {\n            lastVisible.classList.add('ag-last-column-drop');\n        }\n        this.setResizers();\n    };\n    ColumnToolPanel.prototype.resetChildrenHeight = function () {\n        var eGui = this.getGui();\n        var children = eGui.children;\n        for (var i = 0; i < children.length; i++) {\n            var child = children[i];\n            child.style.removeProperty('height');\n            child.style.removeProperty('flex');\n        }\n    };\n    ColumnToolPanel.prototype.isRowGroupingModuleLoaded = function () {\n        return ModuleRegistry.assertRegistered(ModuleNames.RowGroupingModule, 'Row Grouping');\n    };\n    ColumnToolPanel.prototype.expandColumnGroups = function (groupIds) {\n        this.primaryColsPanel.expandGroups(groupIds);\n    };\n    ColumnToolPanel.prototype.collapseColumnGroups = function (groupIds) {\n        this.primaryColsPanel.collapseGroups(groupIds);\n    };\n    ColumnToolPanel.prototype.setColumnLayout = function (colDefs) {\n        this.primaryColsPanel.setColumnLayout(colDefs);\n    };\n    ColumnToolPanel.prototype.syncLayoutWithGrid = function () {\n        this.primaryColsPanel.syncLayoutWithGrid();\n    };\n    ColumnToolPanel.prototype.destroyChildren = function () {\n        this.childDestroyFuncs.forEach(function (func) { return func(); });\n        this.childDestroyFuncs.length = 0;\n        _.clearElement(this.getGui());\n    };\n    ColumnToolPanel.prototype.refresh = function () {\n        this.destroyChildren();\n        this.init(this.params);\n    };\n    // this is a user component, and IComponent has \"public destroy()\" as part of the interface.\n    // so this must be public.\n    ColumnToolPanel.prototype.destroy = function () {\n        this.destroyChildren();\n        _super.prototype.destroy.call(this);\n    };\n    ColumnToolPanel.TEMPLATE = \"<div class=\\\"ag-column-panel\\\"></div>\";\n    __decorate$27([\n        Autowired(\"gridApi\")\n    ], ColumnToolPanel.prototype, \"gridApi\", void 0);\n    __decorate$27([\n        Autowired(\"columnApi\")\n    ], ColumnToolPanel.prototype, \"columnApi\", void 0);\n    return ColumnToolPanel;\n}(Component));\n\nvar __extends$2X = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$26 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar HorizontalResizeComp = /** @class */ (function (_super) {\n    __extends$2X(HorizontalResizeComp, _super);\n    function HorizontalResizeComp() {\n        var _this = _super.call(this, /* html */ \"<div class=\\\"ag-tool-panel-horizontal-resize\\\"></div>\") || this;\n        _this.minWidth = 100;\n        _this.maxWidth = null;\n        return _this;\n    }\n    HorizontalResizeComp.prototype.setElementToResize = function (elementToResize) {\n        this.elementToResize = elementToResize;\n    };\n    HorizontalResizeComp.prototype.postConstruct = function () {\n        var finishedWithResizeFunc = this.horizontalResizeService.addResizeBar({\n            eResizeBar: this.getGui(),\n            dragStartPixels: 1,\n            onResizeStart: this.onResizeStart.bind(this),\n            onResizing: this.onResizing.bind(this),\n            onResizeEnd: this.onResizeEnd.bind(this)\n        });\n        this.addDestroyFunc(finishedWithResizeFunc);\n        this.setInverted(this.gridOptionsService.is('enableRtl'));\n    };\n    HorizontalResizeComp.prototype.dispatchResizeEvent = function (start, end, width) {\n        var event = {\n            type: Events.EVENT_TOOL_PANEL_SIZE_CHANGED,\n            width: width,\n            started: start,\n            ended: end,\n        };\n        this.eventService.dispatchEvent(event);\n    };\n    HorizontalResizeComp.prototype.onResizeStart = function () {\n        this.startingWidth = this.elementToResize.offsetWidth;\n        this.dispatchResizeEvent(true, false, this.startingWidth);\n    };\n    HorizontalResizeComp.prototype.onResizeEnd = function (delta) {\n        return this.onResizing(delta, true);\n    };\n    HorizontalResizeComp.prototype.onResizing = function (delta, isEnd) {\n        if (isEnd === void 0) { isEnd = false; }\n        var direction = this.inverted ? -1 : 1;\n        var newWidth = Math.max(this.minWidth, Math.floor(this.startingWidth - (delta * direction)));\n        if (this.maxWidth != null) {\n            newWidth = Math.min(this.maxWidth, newWidth);\n        }\n        this.elementToResize.style.width = newWidth + \"px\";\n        this.dispatchResizeEvent(false, isEnd, newWidth);\n    };\n    HorizontalResizeComp.prototype.setInverted = function (inverted) {\n        this.inverted = inverted;\n    };\n    HorizontalResizeComp.prototype.setMaxWidth = function (value) {\n        this.maxWidth = value;\n    };\n    HorizontalResizeComp.prototype.setMinWidth = function (value) {\n        if (value != null) {\n            this.minWidth = value;\n        }\n        else {\n            this.minWidth = 100;\n        }\n    };\n    __decorate$26([\n        Autowired('horizontalResizeService')\n    ], HorizontalResizeComp.prototype, \"horizontalResizeService\", void 0);\n    __decorate$26([\n        PostConstruct\n    ], HorizontalResizeComp.prototype, \"postConstruct\", null);\n    return HorizontalResizeComp;\n}(Component));\n\nvar __extends$2W = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$25 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar SideBarButtonComp = /** @class */ (function (_super) {\n    __extends$2W(SideBarButtonComp, _super);\n    function SideBarButtonComp(toolPanelDef) {\n        var _this = _super.call(this) || this;\n        _this.toolPanelDef = toolPanelDef;\n        return _this;\n    }\n    SideBarButtonComp.prototype.getToolPanelId = function () {\n        return this.toolPanelDef.id;\n    };\n    SideBarButtonComp.prototype.postConstruct = function () {\n        var template = this.createTemplate();\n        this.setTemplate(template);\n        this.setLabel();\n        this.setIcon();\n        this.addManagedListener(this.eToggleButton, 'click', this.onButtonPressed.bind(this));\n    };\n    SideBarButtonComp.prototype.createTemplate = function () {\n        var res = /* html */ \"<div class=\\\"ag-side-button\\\" role=\\\"presentation\\\">\\n                <button type=\\\"button\\\" ref=\\\"eToggleButton\\\" tabindex=\\\"-1\\\" role=\\\"tab\\\" class=\\\"ag-side-button-button\\\">\\n                    <div ref=\\\"eIconWrapper\\\" class=\\\"ag-side-button-icon-wrapper\\\" aria-hidden=\\\"true\\\"></div>\\n                    <span ref =\\\"eLabel\\\" class=\\\"ag-side-button-label\\\"></span>\\n                </button>\\n            </div>\";\n        return res;\n    };\n    SideBarButtonComp.prototype.setLabel = function () {\n        var translate = this.localeService.getLocaleTextFunc();\n        var def = this.toolPanelDef;\n        var label = translate(def.labelKey, def.labelDefault);\n        this.eLabel.innerText = label;\n    };\n    SideBarButtonComp.prototype.setIcon = function () {\n        this.eIconWrapper.insertAdjacentElement('afterbegin', _.createIconNoSpan(this.toolPanelDef.iconKey, this.gridOptionsService));\n    };\n    SideBarButtonComp.prototype.onButtonPressed = function () {\n        this.dispatchEvent({ type: SideBarButtonComp.EVENT_TOGGLE_BUTTON_CLICKED });\n    };\n    SideBarButtonComp.prototype.setSelected = function (selected) {\n        this.addOrRemoveCssClass('ag-selected', selected);\n    };\n    SideBarButtonComp.EVENT_TOGGLE_BUTTON_CLICKED = 'toggleButtonClicked';\n    __decorate$25([\n        RefSelector('eToggleButton')\n    ], SideBarButtonComp.prototype, \"eToggleButton\", void 0);\n    __decorate$25([\n        RefSelector('eIconWrapper')\n    ], SideBarButtonComp.prototype, \"eIconWrapper\", void 0);\n    __decorate$25([\n        RefSelector('eLabel')\n    ], SideBarButtonComp.prototype, \"eLabel\", void 0);\n    __decorate$25([\n        PostConstruct\n    ], SideBarButtonComp.prototype, \"postConstruct\", null);\n    return SideBarButtonComp;\n}(Component));\n\nvar __extends$2V = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$24 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar SideBarButtonsComp = /** @class */ (function (_super) {\n    __extends$2V(SideBarButtonsComp, _super);\n    function SideBarButtonsComp() {\n        var _this = _super.call(this, SideBarButtonsComp.TEMPLATE) || this;\n        _this.buttonComps = [];\n        return _this;\n    }\n    SideBarButtonsComp.prototype.postConstruct = function () {\n        this.addManagedListener(this.getFocusableElement(), 'keydown', this.handleKeyDown.bind(this));\n    };\n    SideBarButtonsComp.prototype.handleKeyDown = function (e) {\n        if (e.key !== KeyCode.TAB || !e.shiftKey) {\n            return;\n        }\n        var lastColumn = _.last(this.columnModel.getAllDisplayedColumns());\n        if (this.focusService.focusGridView(lastColumn, true)) {\n            e.preventDefault();\n        }\n    };\n    SideBarButtonsComp.prototype.setToolPanelDefs = function (toolPanelDefs) {\n        toolPanelDefs.forEach(this.addButtonComp.bind(this));\n    };\n    SideBarButtonsComp.prototype.setActiveButton = function (id) {\n        this.buttonComps.forEach(function (comp) {\n            comp.setSelected(id === comp.getToolPanelId());\n        });\n    };\n    SideBarButtonsComp.prototype.addButtonComp = function (def) {\n        var _this = this;\n        var buttonComp = this.createBean(new SideBarButtonComp(def));\n        this.buttonComps.push(buttonComp);\n        this.appendChild(buttonComp);\n        buttonComp.addEventListener(SideBarButtonComp.EVENT_TOGGLE_BUTTON_CLICKED, function () {\n            _this.dispatchEvent({\n                type: SideBarButtonsComp.EVENT_SIDE_BAR_BUTTON_CLICKED,\n                toolPanelId: def.id\n            });\n        });\n    };\n    SideBarButtonsComp.prototype.clearButtons = function () {\n        this.buttonComps = this.destroyBeans(this.buttonComps);\n        _.clearElement(this.getGui());\n    };\n    SideBarButtonsComp.EVENT_SIDE_BAR_BUTTON_CLICKED = 'sideBarButtonClicked';\n    SideBarButtonsComp.TEMPLATE = \"<div class=\\\"ag-side-buttons\\\" role=\\\"tablist\\\"></div>\";\n    __decorate$24([\n        Autowired('focusService')\n    ], SideBarButtonsComp.prototype, \"focusService\", void 0);\n    __decorate$24([\n        Autowired('columnModel')\n    ], SideBarButtonsComp.prototype, \"columnModel\", void 0);\n    __decorate$24([\n        PostConstruct\n    ], SideBarButtonsComp.prototype, \"postConstruct\", null);\n    __decorate$24([\n        PreDestroy\n    ], SideBarButtonsComp.prototype, \"clearButtons\", null);\n    return SideBarButtonsComp;\n}(Component));\n\nvar SideBarDefParser = /** @class */ (function () {\n    function SideBarDefParser() {\n    }\n    SideBarDefParser.parse = function (toParse) {\n        if (!toParse) {\n            return undefined;\n        }\n        if (toParse === true) {\n            return {\n                toolPanels: [\n                    SideBarDefParser.DEFAULT_COLUMN_COMP,\n                    SideBarDefParser.DEFAULT_FILTER_COMP,\n                ],\n                defaultToolPanel: 'columns'\n            };\n        }\n        if (typeof toParse === 'string') {\n            return SideBarDefParser.parse([toParse]);\n        }\n        if (Array.isArray(toParse)) {\n            var comps_1 = [];\n            toParse.forEach(function (key) {\n                var lookupResult = SideBarDefParser.DEFAULT_BY_KEY[key];\n                if (!lookupResult) {\n                    console.warn(\"AG Grid: the key \" + key + \" is not a valid key for specifying a tool panel, valid keys are: \" + Object.keys(SideBarDefParser.DEFAULT_BY_KEY).join(','));\n                    return;\n                }\n                comps_1.push(lookupResult);\n            });\n            if (comps_1.length === 0) {\n                return undefined;\n            }\n            return {\n                toolPanels: comps_1,\n                defaultToolPanel: comps_1[0].id\n            };\n        }\n        var result = {\n            toolPanels: SideBarDefParser.parseComponents(toParse.toolPanels),\n            defaultToolPanel: toParse.defaultToolPanel,\n            hiddenByDefault: toParse.hiddenByDefault,\n            position: toParse.position\n        };\n        return result;\n    };\n    SideBarDefParser.parseComponents = function (from) {\n        var result = [];\n        if (!from) {\n            return result;\n        }\n        from.forEach(function (it) {\n            var toAdd = null;\n            if (typeof it === 'string') {\n                var lookupResult = SideBarDefParser.DEFAULT_BY_KEY[it];\n                if (!lookupResult) {\n                    console.warn(\"AG Grid: the key \" + it + \" is not a valid key for specifying a tool panel, valid keys are: \" + Object.keys(SideBarDefParser.DEFAULT_BY_KEY).join(','));\n                    return;\n                }\n                toAdd = lookupResult;\n            }\n            else {\n                toAdd = it;\n            }\n            result.push(toAdd);\n        });\n        return result;\n    };\n    SideBarDefParser.DEFAULT_COLUMN_COMP = {\n        id: 'columns',\n        labelDefault: 'Columns',\n        labelKey: 'columns',\n        iconKey: 'columns',\n        toolPanel: 'agColumnsToolPanel',\n    };\n    SideBarDefParser.DEFAULT_FILTER_COMP = {\n        id: 'filters',\n        labelDefault: 'Filters',\n        labelKey: 'filters',\n        iconKey: 'filter',\n        toolPanel: 'agFiltersToolPanel',\n    };\n    SideBarDefParser.DEFAULT_BY_KEY = {\n        columns: SideBarDefParser.DEFAULT_COLUMN_COMP,\n        filters: SideBarDefParser.DEFAULT_FILTER_COMP\n    };\n    return SideBarDefParser;\n}());\n\nvar __extends$2U = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$23 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar ToolPanelWrapper = /** @class */ (function (_super) {\n    __extends$2U(ToolPanelWrapper, _super);\n    function ToolPanelWrapper() {\n        return _super.call(this, ToolPanelWrapper.TEMPLATE) || this;\n    }\n    ToolPanelWrapper.prototype.setupResize = function () {\n        var eGui = this.getGui();\n        var resizeBar = this.resizeBar = this.createManagedBean(new HorizontalResizeComp());\n        resizeBar.setElementToResize(eGui);\n        this.appendChild(resizeBar);\n    };\n    ToolPanelWrapper.prototype.getToolPanelId = function () {\n        return this.toolPanelId;\n    };\n    ToolPanelWrapper.prototype.setToolPanelDef = function (toolPanelDef) {\n        var id = toolPanelDef.id, minWidth = toolPanelDef.minWidth, maxWidth = toolPanelDef.maxWidth, width = toolPanelDef.width;\n        this.toolPanelId = id;\n        this.width = width;\n        var params = {};\n        var compDetails = this.userComponentFactory.getToolPanelCompDetails(toolPanelDef, params);\n        var componentPromise = compDetails.newAgStackInstance();\n        if (componentPromise == null) {\n            console.warn(\"AG Grid: error processing tool panel component \" + id + \". You need to specify either 'toolPanel' or 'toolPanelFramework'\");\n            return;\n        }\n        componentPromise.then(this.setToolPanelComponent.bind(this));\n        if (minWidth != null) {\n            this.resizeBar.setMinWidth(minWidth);\n        }\n        if (maxWidth != null) {\n            this.resizeBar.setMaxWidth(maxWidth);\n        }\n    };\n    ToolPanelWrapper.prototype.setToolPanelComponent = function (compInstance) {\n        var _this = this;\n        this.toolPanelCompInstance = compInstance;\n        this.appendChild(compInstance.getGui());\n        this.addDestroyFunc(function () {\n            _this.destroyBean(compInstance);\n        });\n        if (this.width) {\n            this.getGui().style.width = this.width + \"px\";\n        }\n    };\n    ToolPanelWrapper.prototype.getToolPanelInstance = function () {\n        return this.toolPanelCompInstance;\n    };\n    ToolPanelWrapper.prototype.setResizerSizerSide = function (side) {\n        var isRtl = this.gridOptionsService.is('enableRtl');\n        var isLeft = side === 'left';\n        var inverted = isRtl ? isLeft : !isLeft;\n        this.resizeBar.setInverted(inverted);\n    };\n    ToolPanelWrapper.prototype.refresh = function () {\n        this.toolPanelCompInstance.refresh();\n    };\n    ToolPanelWrapper.TEMPLATE = \"<div class=\\\"ag-tool-panel-wrapper\\\"/>\";\n    __decorate$23([\n        Autowired(\"userComponentFactory\")\n    ], ToolPanelWrapper.prototype, \"userComponentFactory\", void 0);\n    __decorate$23([\n        PostConstruct\n    ], ToolPanelWrapper.prototype, \"setupResize\", null);\n    return ToolPanelWrapper;\n}(Component));\n\nvar __extends$2T = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$22 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar SideBarComp = /** @class */ (function (_super) {\n    __extends$2T(SideBarComp, _super);\n    function SideBarComp() {\n        var _this = _super.call(this, SideBarComp.TEMPLATE) || this;\n        _this.toolPanelWrappers = [];\n        return _this;\n    }\n    SideBarComp.prototype.postConstruct = function () {\n        var _this = this;\n        this.sideBarButtonsComp.addEventListener(SideBarButtonsComp.EVENT_SIDE_BAR_BUTTON_CLICKED, this.onToolPanelButtonClicked.bind(this));\n        this.setSideBarDef();\n        this.addManagedPropertyListener('sideBar', function () {\n            _this.clearDownUi();\n            _this.setSideBarDef();\n        });\n        this.gridApi.registerSideBarComp(this);\n        this.createManagedBean(new ManagedFocusFeature(this.getFocusableElement(), {\n            onTabKeyDown: this.onTabKeyDown.bind(this),\n            handleKeyDown: this.handleKeyDown.bind(this)\n        }));\n    };\n    SideBarComp.prototype.onTabKeyDown = function (e) {\n        if (e.defaultPrevented) {\n            return;\n        }\n        var _a = this, focusService = _a.focusService, sideBarButtonsComp = _a.sideBarButtonsComp;\n        var eGui = this.getGui();\n        var sideBarGui = sideBarButtonsComp.getGui();\n        var eDocument = this.gridOptionsService.getDocument();\n        var activeElement = eDocument.activeElement;\n        var openPanel = eGui.querySelector('.ag-tool-panel-wrapper:not(.ag-hidden)');\n        var target = e.target;\n        if (!openPanel) {\n            return;\n        }\n        if (sideBarGui.contains(activeElement)) {\n            if (focusService.focusInto(openPanel, e.shiftKey)) {\n                e.preventDefault();\n            }\n            return;\n        }\n        // only handle backwards focus to target the sideBar buttons\n        if (!e.shiftKey) {\n            return;\n        }\n        var nextEl = null;\n        if (openPanel.contains(activeElement)) {\n            nextEl = this.focusService.findNextFocusableElement(openPanel, undefined, true);\n        }\n        else if (focusService.isTargetUnderManagedComponent(openPanel, target) && e.shiftKey) {\n            nextEl = this.focusService.findFocusableElementBeforeTabGuard(openPanel, target);\n        }\n        if (!nextEl) {\n            nextEl = sideBarGui.querySelector('.ag-selected button');\n        }\n        if (nextEl) {\n            e.preventDefault();\n            nextEl.focus();\n        }\n    };\n    SideBarComp.prototype.handleKeyDown = function (e) {\n        var eDocument = this.gridOptionsService.getDocument();\n        if (!this.sideBarButtonsComp.getGui().contains(eDocument.activeElement)) {\n            return;\n        }\n        var sideBarGui = this.sideBarButtonsComp.getGui();\n        var buttons = Array.prototype.slice.call(sideBarGui.querySelectorAll('.ag-side-button'));\n        var currentButton = eDocument.activeElement;\n        var currentPos = buttons.findIndex(function (button) { return button.contains(currentButton); });\n        var nextPos = null;\n        switch (e.key) {\n            case KeyCode.LEFT:\n            case KeyCode.UP:\n                nextPos = Math.max(0, currentPos - 1);\n                break;\n            case KeyCode.RIGHT:\n            case KeyCode.DOWN:\n                nextPos = Math.min(currentPos + 1, buttons.length - 1);\n                break;\n        }\n        if (nextPos === null) {\n            return;\n        }\n        var innerButton = buttons[nextPos].querySelector('button');\n        if (innerButton) {\n            innerButton.focus();\n            e.preventDefault();\n        }\n    };\n    SideBarComp.prototype.onToolPanelButtonClicked = function (event) {\n        var id = event.toolPanelId;\n        var openedItem = this.openedItem();\n        // if item was already open, we close it\n        if (openedItem === id) {\n            this.openToolPanel(undefined, 'sideBarButtonClicked'); // passing undefined closes\n        }\n        else {\n            this.openToolPanel(id, 'sideBarButtonClicked');\n        }\n    };\n    SideBarComp.prototype.clearDownUi = function () {\n        this.sideBarButtonsComp.clearButtons();\n        this.destroyToolPanelWrappers();\n    };\n    SideBarComp.prototype.setSideBarDef = function () {\n        // initially hide side bar\n        this.setDisplayed(false);\n        var sideBarRaw = this.gridOptionsService.get('sideBar');\n        this.sideBar = SideBarDefParser.parse(sideBarRaw);\n        if (!!this.sideBar && !!this.sideBar.toolPanels) {\n            var shouldDisplaySideBar = !this.sideBar.hiddenByDefault;\n            this.setDisplayed(shouldDisplaySideBar);\n            var toolPanelDefs = this.sideBar.toolPanels;\n            this.sideBarButtonsComp.setToolPanelDefs(toolPanelDefs);\n            this.setupToolPanels(toolPanelDefs);\n            this.setSideBarPosition(this.sideBar.position);\n            if (!this.sideBar.hiddenByDefault) {\n                this.openToolPanel(this.sideBar.defaultToolPanel, 'sideBarInitializing');\n            }\n        }\n    };\n    SideBarComp.prototype.getDef = function () {\n        return this.sideBar;\n    };\n    SideBarComp.prototype.setSideBarPosition = function (position) {\n        if (!position) {\n            position = 'right';\n        }\n        var isLeft = position === 'left';\n        var resizerSide = isLeft ? 'right' : 'left';\n        this.addOrRemoveCssClass('ag-side-bar-left', isLeft);\n        this.addOrRemoveCssClass('ag-side-bar-right', !isLeft);\n        this.toolPanelWrappers.forEach(function (wrapper) {\n            wrapper.setResizerSizerSide(resizerSide);\n        });\n        return this;\n    };\n    SideBarComp.prototype.setupToolPanels = function (defs) {\n        var _this = this;\n        defs.forEach(function (def) {\n            if (def.id == null) {\n                console.warn(\"AG Grid: please review all your toolPanel components, it seems like at least one of them doesn't have an id\");\n                return;\n            }\n            // helpers, in case user doesn't have the right module loaded\n            if (def.toolPanel === 'agColumnsToolPanel') {\n                var moduleMissing = !ModuleRegistry.assertRegistered(ModuleNames.ColumnsToolPanelModule, 'Column Tool Panel');\n                if (moduleMissing) {\n                    return;\n                }\n            }\n            if (def.toolPanel === 'agFiltersToolPanel') {\n                var moduleMissing = !ModuleRegistry.assertRegistered(ModuleNames.FiltersToolPanelModule, 'Filters Tool Panel');\n                if (moduleMissing) {\n                    return;\n                }\n            }\n            var wrapper = new ToolPanelWrapper();\n            _this.getContext().createBean(wrapper);\n            wrapper.setToolPanelDef(def);\n            wrapper.setDisplayed(false);\n            _this.getGui().appendChild(wrapper.getGui());\n            _this.toolPanelWrappers.push(wrapper);\n        });\n    };\n    SideBarComp.prototype.refresh = function () {\n        this.toolPanelWrappers.forEach(function (wrapper) { return wrapper.refresh(); });\n    };\n    SideBarComp.prototype.openToolPanel = function (key, source) {\n        if (source === void 0) { source = 'api'; }\n        var currentlyOpenedKey = this.openedItem();\n        if (currentlyOpenedKey === key) {\n            return;\n        }\n        this.toolPanelWrappers.forEach(function (wrapper) {\n            var show = key === wrapper.getToolPanelId();\n            wrapper.setDisplayed(show);\n        });\n        var newlyOpenedKey = this.openedItem();\n        var openToolPanelChanged = currentlyOpenedKey !== newlyOpenedKey;\n        if (openToolPanelChanged) {\n            this.sideBarButtonsComp.setActiveButton(key);\n            this.raiseToolPanelVisibleEvent(key, currentlyOpenedKey !== null && currentlyOpenedKey !== void 0 ? currentlyOpenedKey : undefined, source);\n        }\n    };\n    SideBarComp.prototype.getToolPanelInstance = function (key) {\n        var toolPanelWrapper = this.toolPanelWrappers.filter(function (toolPanel) { return toolPanel.getToolPanelId() === key; })[0];\n        if (!toolPanelWrapper) {\n            console.warn(\"AG Grid: unable to lookup Tool Panel as invalid key supplied: \" + key);\n            return;\n        }\n        return toolPanelWrapper.getToolPanelInstance();\n    };\n    SideBarComp.prototype.raiseToolPanelVisibleEvent = function (key, previousKey, source) {\n        // To be removed in v30\n        var oldEvent = {\n            type: Events.EVENT_TOOL_PANEL_VISIBLE_CHANGED,\n            source: key,\n        };\n        this.eventService.dispatchEvent(oldEvent);\n        if (previousKey) {\n            var event_1 = {\n                type: Events.EVENT_INTERNAL_TOOL_PANEL_VISIBLE_CHANGED,\n                source: source,\n                key: previousKey,\n                visible: false,\n            };\n            this.eventService.dispatchEvent(event_1);\n        }\n        if (key) {\n            var event_2 = {\n                type: Events.EVENT_INTERNAL_TOOL_PANEL_VISIBLE_CHANGED,\n                source: source,\n                key: key,\n                visible: true,\n            };\n            this.eventService.dispatchEvent(event_2);\n        }\n    };\n    SideBarComp.prototype.close = function (source) {\n        if (source === void 0) { source = 'api'; }\n        this.openToolPanel(undefined, source);\n    };\n    SideBarComp.prototype.isToolPanelShowing = function () {\n        return !!this.openedItem();\n    };\n    SideBarComp.prototype.openedItem = function () {\n        var activeToolPanel = null;\n        this.toolPanelWrappers.forEach(function (wrapper) {\n            if (wrapper.isDisplayed()) {\n                activeToolPanel = wrapper.getToolPanelId();\n            }\n        });\n        return activeToolPanel;\n    };\n    SideBarComp.prototype.destroyToolPanelWrappers = function () {\n        var _this = this;\n        this.toolPanelWrappers.forEach(function (wrapper) {\n            _.removeFromParent(wrapper.getGui());\n            _this.destroyBean(wrapper);\n        });\n        this.toolPanelWrappers.length = 0;\n    };\n    SideBarComp.prototype.destroy = function () {\n        this.destroyToolPanelWrappers();\n        _super.prototype.destroy.call(this);\n    };\n    SideBarComp.TEMPLATE = \"<div class=\\\"ag-side-bar ag-unselectable\\\">\\n            <ag-side-bar-buttons ref=\\\"sideBarButtons\\\"></ag-side-bar-buttons>\\n        </div>\";\n    __decorate$22([\n        Autowired('gridApi')\n    ], SideBarComp.prototype, \"gridApi\", void 0);\n    __decorate$22([\n        Autowired('focusService')\n    ], SideBarComp.prototype, \"focusService\", void 0);\n    __decorate$22([\n        RefSelector('sideBarButtons')\n    ], SideBarComp.prototype, \"sideBarButtonsComp\", void 0);\n    __decorate$22([\n        PostConstruct\n    ], SideBarComp.prototype, \"postConstruct\", null);\n    return SideBarComp;\n}(Component));\n\nvar __extends$2S = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$21 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar ToolPanelColDefService = /** @class */ (function (_super) {\n    __extends$2S(ToolPanelColDefService, _super);\n    function ToolPanelColDefService() {\n        var _this = _super !== null && _super.apply(this, arguments) || this;\n        _this.isColGroupDef = function (colDef) { return colDef && typeof colDef.children !== 'undefined'; };\n        _this.getId = function (colDef) {\n            return _this.isColGroupDef(colDef) ? colDef.groupId : colDef.colId;\n        };\n        return _this;\n    }\n    ToolPanelColDefService.prototype.createColumnTree = function (colDefs) {\n        var _this = this;\n        var invalidColIds = [];\n        var createDummyColGroup = function (abstractColDef, depth) {\n            if (_this.isColGroupDef(abstractColDef)) {\n                // creating 'dummy' group which is not associated with grid column group\n                var groupDef = abstractColDef;\n                var groupId = (typeof groupDef.groupId !== 'undefined') ? groupDef.groupId : groupDef.headerName;\n                var group = new ProvidedColumnGroup(groupDef, groupId, false, depth);\n                var children_1 = [];\n                groupDef.children.forEach(function (def) {\n                    var child = createDummyColGroup(def, depth + 1);\n                    // check column exists in case invalid colDef is supplied for primary column\n                    if (child) {\n                        children_1.push(child);\n                    }\n                });\n                group.setChildren(children_1);\n                return group;\n            }\n            else {\n                var colDef = abstractColDef;\n                var key = colDef.colId ? colDef.colId : colDef.field;\n                var column = _this.columnModel.getPrimaryColumn(key);\n                if (!column) {\n                    invalidColIds.push(colDef);\n                }\n                return column;\n            }\n        };\n        var mappedResults = [];\n        colDefs.forEach(function (colDef) {\n            var result = createDummyColGroup(colDef, 0);\n            if (result) {\n                // only return correctly mapped colDef results\n                mappedResults.push(result);\n            }\n        });\n        if (invalidColIds.length > 0) {\n            console.warn('AG Grid: unable to find grid columns for the supplied colDef(s):', invalidColIds);\n        }\n        return mappedResults;\n    };\n    ToolPanelColDefService.prototype.syncLayoutWithGrid = function (syncLayoutCallback) {\n        // extract ordered list of leaf path trees (column group hierarchy for each individual leaf column)\n        var leafPathTrees = this.getLeafPathTrees();\n        // merge leaf path tree taking split column groups into account\n        var mergedColumnTrees = this.mergeLeafPathTrees(leafPathTrees);\n        // sync layout with merged column trees\n        syncLayoutCallback(mergedColumnTrees);\n    };\n    ToolPanelColDefService.prototype.getLeafPathTrees = function () {\n        // leaf tree paths are obtained by walking up the tree starting at a column until we reach the top level group.\n        var getLeafPathTree = function (node, childDef) {\n            var leafPathTree;\n            // build up tree in reverse order\n            if (node instanceof ProvidedColumnGroup) {\n                if (node.isPadding()) {\n                    // skip over padding groups\n                    leafPathTree = childDef;\n                }\n                else {\n                    var groupDef = Object.assign({}, node.getColGroupDef());\n                    // ensure group contains groupId\n                    groupDef.groupId = node.getGroupId();\n                    groupDef.children = [childDef];\n                    leafPathTree = groupDef;\n                }\n            }\n            else {\n                var colDef = Object.assign({}, node.getColDef());\n                // ensure col contains colId\n                colDef.colId = node.getColId();\n                leafPathTree = colDef;\n            }\n            // walk tree\n            var parent = node.getOriginalParent();\n            if (parent) {\n                // keep walking up the tree until we reach the root\n                return getLeafPathTree(parent, leafPathTree);\n            }\n            else {\n                // we have reached the root - exit with resulting leaf path tree\n                return leafPathTree;\n            }\n        };\n        // obtain a sorted list of all grid columns\n        var allGridColumns = this.columnModel.getAllGridColumns();\n        // only primary columns and non row group columns should appear in the tool panel\n        var allPrimaryGridColumns = allGridColumns.filter(function (column) {\n            var colDef = column.getColDef();\n            return column.isPrimary() && !colDef.showRowGroup;\n        });\n        // construct a leaf path tree for each column\n        return allPrimaryGridColumns.map(function (col) { return getLeafPathTree(col, col.getColDef()); });\n    };\n    ToolPanelColDefService.prototype.mergeLeafPathTrees = function (leafPathTrees) {\n        var _this = this;\n        var matchingRootGroupIds = function (pathA, pathB) {\n            var bothPathsAreGroups = _this.isColGroupDef(pathA) && _this.isColGroupDef(pathB);\n            return bothPathsAreGroups && _this.getId(pathA) === _this.getId(pathB);\n        };\n        var mergeTrees = function (treeA, treeB) {\n            if (!_this.isColGroupDef(treeB)) {\n                return treeA;\n            }\n            var mergeResult = treeA;\n            var groupToMerge = treeB;\n            if (groupToMerge.children && groupToMerge.groupId) {\n                var added = _this.addChildrenToGroup(mergeResult, groupToMerge.groupId, groupToMerge.children[0]);\n                if (added) {\n                    return mergeResult;\n                }\n            }\n            groupToMerge.children.forEach(function (child) { return mergeTrees(mergeResult, child); });\n            return mergeResult;\n        };\n        // we can't just merge the leaf path trees as groups can be split apart - instead only merge if leaf\n        // path groups with the same root group id are contiguous.\n        var mergeColDefs = [];\n        for (var i = 1; i <= leafPathTrees.length; i++) {\n            var first = leafPathTrees[i - 1];\n            var second = leafPathTrees[i];\n            if (matchingRootGroupIds(first, second)) {\n                leafPathTrees[i] = mergeTrees(first, second);\n            }\n            else {\n                mergeColDefs.push(first);\n            }\n        }\n        return mergeColDefs;\n    };\n    ToolPanelColDefService.prototype.addChildrenToGroup = function (tree, groupId, colDef) {\n        var _this = this;\n        var subGroupIsSplit = function (currentSubGroup, currentSubGroupToAdd) {\n            var existingChildIds = currentSubGroup.children.map(_this.getId);\n            var childGroupAlreadyExists = _.includes(existingChildIds, _this.getId(currentSubGroupToAdd));\n            var lastChild = _.last(currentSubGroup.children);\n            var lastChildIsDifferent = lastChild && _this.getId(lastChild) !== _this.getId(currentSubGroupToAdd);\n            return childGroupAlreadyExists && lastChildIsDifferent;\n        };\n        if (!this.isColGroupDef(tree)) {\n            return true;\n        }\n        var currentGroup = tree;\n        var groupToAdd = colDef;\n        if (subGroupIsSplit(currentGroup, groupToAdd)) {\n            currentGroup.children.push(groupToAdd);\n            return true;\n        }\n        if (currentGroup.groupId === groupId) {\n            // add children that don't already exist to group\n            var existingChildIds = currentGroup.children.map(this.getId);\n            var colDefAlreadyPresent = _.includes(existingChildIds, this.getId(groupToAdd));\n            if (!colDefAlreadyPresent) {\n                currentGroup.children.push(groupToAdd);\n                return true;\n            }\n        }\n        // recurse until correct group is found to add children\n        currentGroup.children.forEach(function (subGroup) { return _this.addChildrenToGroup(subGroup, groupId, colDef); });\n        return false;\n    };\n    __decorate$21([\n        Autowired('columnModel')\n    ], ToolPanelColDefService.prototype, \"columnModel\", void 0);\n    ToolPanelColDefService = __decorate$21([\n        Bean('toolPanelColDefService')\n    ], ToolPanelColDefService);\n    return ToolPanelColDefService;\n}(BeanStub));\n\n// DO NOT UPDATE MANUALLY: Generated from script during build time\nvar VERSION$f = '29.3.5';\n\nvar SideBarModule = {\n    version: VERSION$f,\n    moduleName: ModuleNames.SideBarModule,\n    beans: [ToolPanelColDefService],\n    agStackComponents: [\n        { componentName: 'AgHorizontalResize', componentClass: HorizontalResizeComp },\n        { componentName: 'AgSideBar', componentClass: SideBarComp },\n        { componentName: 'AgSideBarButtons', componentClass: SideBarButtonsComp },\n    ],\n    dependantModules: [\n        EnterpriseCoreModule\n    ]\n};\n\nvar __decorate$20 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar ModelItemUtils = /** @class */ (function () {\n    function ModelItemUtils() {\n    }\n    ModelItemUtils.prototype.selectAllChildren = function (colTree, selectAllChecked, eventType) {\n        var cols = this.extractAllLeafColumns(colTree);\n        this.setAllColumns(cols, selectAllChecked, eventType);\n    };\n    ModelItemUtils.prototype.setColumn = function (col, selectAllChecked, eventType) {\n        this.setAllColumns([col], selectAllChecked, eventType);\n    };\n    ModelItemUtils.prototype.setAllColumns = function (cols, selectAllChecked, eventType) {\n        if (this.columnModel.isPivotMode()) {\n            this.setAllPivot(cols, selectAllChecked, eventType);\n        }\n        else {\n            this.setAllVisible(cols, selectAllChecked, eventType);\n        }\n    };\n    ModelItemUtils.prototype.extractAllLeafColumns = function (allItems) {\n        var res = [];\n        var recursiveFunc = function (items) {\n            items.forEach(function (item) {\n                if (!item.isPassesFilter()) {\n                    return;\n                }\n                if (item.isGroup()) {\n                    recursiveFunc(item.getChildren());\n                }\n                else {\n                    res.push(item.getColumn());\n                }\n            });\n        };\n        recursiveFunc(allItems);\n        return res;\n    };\n    ModelItemUtils.prototype.setAllVisible = function (columns, visible, eventType) {\n        var colStateItems = [];\n        columns.forEach(function (col) {\n            if (col.getColDef().lockVisible) {\n                return;\n            }\n            if (col.isVisible() != visible) {\n                colStateItems.push({\n                    colId: col.getId(),\n                    hide: !visible\n                });\n            }\n        });\n        if (colStateItems.length > 0) {\n            this.columnModel.applyColumnState({ state: colStateItems }, eventType);\n        }\n    };\n    ModelItemUtils.prototype.setAllPivot = function (columns, value, eventType) {\n        if (this.gridOptionsService.is('functionsPassive')) {\n            this.setAllPivotPassive(columns, value);\n        }\n        else {\n            this.setAllPivotActive(columns, value, eventType);\n        }\n    };\n    ModelItemUtils.prototype.setAllPivotPassive = function (columns, value) {\n        var copyOfPivotColumns = this.columnModel.getPivotColumns().slice();\n        var copyOfValueColumns = this.columnModel.getValueColumns().slice();\n        var copyOfRowGroupColumns = this.columnModel.getRowGroupColumns().slice();\n        var pivotChanged = false;\n        var valueChanged = false;\n        var rowGroupChanged = false;\n        var turnOnAction = function (col) {\n            // don't change any column that's already got a function active\n            if (col.isAnyFunctionActive()) {\n                return;\n            }\n            if (col.isAllowValue()) {\n                copyOfValueColumns.push(col);\n                valueChanged = true;\n            }\n            else if (col.isAllowRowGroup()) {\n                copyOfRowGroupColumns.push(col);\n                pivotChanged = true;\n            }\n            else if (col.isAllowPivot()) {\n                copyOfPivotColumns.push(col);\n                rowGroupChanged = true;\n            }\n        };\n        var turnOffAction = function (col) {\n            if (!col.isAnyFunctionActive()) {\n                return;\n            }\n            if (copyOfPivotColumns.indexOf(col) >= 0) {\n                _.removeFromArray(copyOfPivotColumns, col);\n                pivotChanged = true;\n            }\n            if (copyOfValueColumns.indexOf(col) >= 0) {\n                _.removeFromArray(copyOfValueColumns, col);\n                valueChanged = true;\n            }\n            if (copyOfRowGroupColumns.indexOf(col) >= 0) {\n                _.removeFromArray(copyOfRowGroupColumns, col);\n                rowGroupChanged = true;\n            }\n        };\n        var action = value ? turnOnAction : turnOffAction;\n        columns.forEach(action);\n        if (pivotChanged) {\n            var event_1 = {\n                type: Events.EVENT_COLUMN_PIVOT_CHANGE_REQUEST,\n                columns: copyOfPivotColumns\n            };\n            this.eventService.dispatchEvent(event_1);\n        }\n        if (rowGroupChanged) {\n            var event_2 = {\n                type: Events.EVENT_COLUMN_ROW_GROUP_CHANGE_REQUEST,\n                columns: copyOfRowGroupColumns\n            };\n            this.eventService.dispatchEvent(event_2);\n        }\n        if (valueChanged) {\n            var event_3 = {\n                type: Events.EVENT_COLUMN_VALUE_CHANGE_REQUEST,\n                columns: copyOfRowGroupColumns\n            };\n            this.eventService.dispatchEvent(event_3);\n        }\n    };\n    ModelItemUtils.prototype.setAllPivotActive = function (columns, value, eventType) {\n        var _this = this;\n        var colStateItems = [];\n        var turnOnAction = function (col) {\n            // don't change any column that's already got a function active\n            if (col.isAnyFunctionActive()) {\n                return;\n            }\n            if (col.isAllowValue()) {\n                var aggFunc = typeof col.getAggFunc() === 'string'\n                    ? col.getAggFunc()\n                    : _this.aggFuncService.getDefaultAggFunc(col);\n                colStateItems.push({\n                    colId: col.getId(),\n                    aggFunc: aggFunc\n                });\n            }\n            else if (col.isAllowRowGroup()) {\n                colStateItems.push({\n                    colId: col.getId(),\n                    rowGroup: true\n                });\n            }\n            else if (col.isAllowPivot()) {\n                colStateItems.push({\n                    colId: col.getId(),\n                    pivot: true\n                });\n            }\n        };\n        var turnOffAction = function (col) {\n            var isActive = col.isPivotActive() || col.isRowGroupActive() || col.isValueActive();\n            if (isActive) {\n                colStateItems.push({\n                    colId: col.getId(),\n                    pivot: false,\n                    rowGroup: false,\n                    aggFunc: null\n                });\n            }\n        };\n        var action = value ? turnOnAction : turnOffAction;\n        columns.forEach(action);\n        if (colStateItems.length > 0) {\n            this.columnModel.applyColumnState({ state: colStateItems }, eventType);\n        }\n    };\n    __decorate$20([\n        Autowired('aggFuncService')\n    ], ModelItemUtils.prototype, \"aggFuncService\", void 0);\n    __decorate$20([\n        Autowired('columnModel')\n    ], ModelItemUtils.prototype, \"columnModel\", void 0);\n    __decorate$20([\n        Autowired('gridOptionsService')\n    ], ModelItemUtils.prototype, \"gridOptionsService\", void 0);\n    __decorate$20([\n        Autowired('eventService')\n    ], ModelItemUtils.prototype, \"eventService\", void 0);\n    ModelItemUtils = __decorate$20([\n        Bean('modelItemUtils')\n    ], ModelItemUtils);\n    return ModelItemUtils;\n}());\n\n// DO NOT UPDATE MANUALLY: Generated from script during build time\nvar VERSION$e = '29.3.5';\n\nvar ColumnsToolPanelModule = {\n    version: VERSION$e,\n    moduleName: ModuleNames.ColumnsToolPanelModule,\n    beans: [ModelItemUtils],\n    agStackComponents: [\n        { componentName: 'AgPrimaryColsHeader', componentClass: PrimaryColsHeaderPanel },\n        { componentName: 'AgPrimaryColsList', componentClass: PrimaryColsListPanel },\n        { componentName: 'AgPrimaryCols', componentClass: PrimaryColsPanel }\n    ],\n    userComponents: [\n        { componentName: 'agColumnsToolPanel', componentClass: ColumnToolPanel },\n    ],\n    dependantModules: [\n        EnterpriseCoreModule,\n        RowGroupingModule,\n        SideBarModule\n    ]\n};\n\nvar workbook = {\n    getTemplate: function () {\n        return {\n            name: \"Workbook\",\n            properties: {\n                prefixedAttributes: [{\n                        prefix: \"xmlns:\",\n                        map: {\n                            o: \"urn:schemas-microsoft-com:office:office\",\n                            x: \"urn:schemas-microsoft-com:office:excel\",\n                            ss: \"urn:schemas-microsoft-com:office:spreadsheet\",\n                            html: \"http://www.w3.org/TR/REC-html40\"\n                        },\n                    }],\n                rawMap: {\n                    xmlns: \"urn:schemas-microsoft-com:office:spreadsheet\"\n                }\n            }\n        };\n    }\n};\n\nvar excelWorkbook = {\n    getTemplate: function () {\n        return {\n            name: \"ExcelWorkbook\",\n            properties: {\n                rawMap: {\n                    xmlns: \"urn:schemas-microsoft-com:office:excel\"\n                }\n            },\n            children: [{\n                    name: \"WindowHeight\",\n                    textNode: \"8130\"\n                }, {\n                    name: \"WindowWidth\",\n                    textNode: \"15135\"\n                }, {\n                    name: \"WindowHeight\",\n                    textNode: \"8130\"\n                }, {\n                    name: \"WindowTopX\",\n                    textNode: \"120\"\n                }, {\n                    name: \"WindowTopY\",\n                    textNode: \"45\"\n                }, {\n                    name: \"ProtectStructure\",\n                    textNode: \"False\"\n                }, {\n                    name: \"ProtectWindow\",\n                    textNode: \"False\"\n                }]\n        };\n    }\n};\n\nvar column = {\n    getTemplate: function (c) {\n        var width = c.width;\n        return {\n            name: \"Column\",\n            properties: {\n                prefixedAttributes: [{\n                        prefix: \"ss:\",\n                        map: {\n                            Width: width\n                        }\n                    }]\n            }\n        };\n    }\n};\n\nvar cell = {\n    getTemplate: function (c) {\n        var mergeAcross = c.mergeAcross, styleId = c.styleId, data = c.data;\n        var properties = {};\n        if (mergeAcross) {\n            properties.MergeAcross = mergeAcross;\n        }\n        if (styleId) {\n            properties.StyleID = styleId;\n        }\n        return {\n            name: \"Cell\",\n            properties: {\n                prefixedAttributes: [{\n                        prefix: \"ss:\",\n                        map: properties\n                    }]\n            },\n            children: [{\n                    name: \"Data\",\n                    properties: {\n                        prefixedAttributes: [{\n                                prefix: \"ss:\",\n                                map: {\n                                    Type: data === null || data === void 0 ? void 0 : data.type\n                                }\n                            }]\n                    },\n                    textNode: data === null || data === void 0 ? void 0 : data.value\n                }]\n        };\n    }\n};\n\nvar row = {\n    getTemplate: function (r) {\n        var cells = r.cells;\n        return {\n            name: \"Row\",\n            children: cells.map(function (it) { return cell.getTemplate(it); })\n        };\n    }\n};\n\nvar worksheet = {\n    getTemplate: function (ws) {\n        var table = ws.table, name = ws.name;\n        var columns = table.columns, rows = table.rows;\n        var c = columns.map(function (it) { return column.getTemplate(it); });\n        var r = rows.map(function (it) { return row.getTemplate(it); });\n        return {\n            name: \"Worksheet\",\n            children: [{\n                    name: \"Table\",\n                    children: c.concat(r)\n                }],\n            properties: {\n                prefixedAttributes: [{\n                        prefix: \"ss:\",\n                        map: {\n                            Name: name\n                        }\n                    }]\n            }\n        };\n    }\n};\n\nvar documentProperties = {\n    getTemplate: function () {\n        return {\n            name: \"DocumentProperties\",\n            properties: {\n                rawMap: {\n                    xmlns: \"urn:schemas-microsoft-com:office:office\"\n                }\n            },\n            children: [{\n                    name: \"Version\",\n                    textNode: \"12.00\"\n                }]\n        };\n    }\n};\n\nvar alignment = {\n    getTemplate: function (styleProperties) {\n        var _a = styleProperties.alignment, vertical = _a.vertical, horizontal = _a.horizontal, indent = _a.indent, readingOrder = _a.readingOrder, rotate = _a.rotate, shrinkToFit = _a.shrinkToFit, verticalText = _a.verticalText, wrapText = _a.wrapText;\n        return {\n            name: 'Alignment',\n            properties: {\n                prefixedAttributes: [{\n                        prefix: \"ss:\",\n                        map: {\n                            Vertical: vertical,\n                            Horizontal: horizontal,\n                            Indent: indent,\n                            ReadingOrder: readingOrder,\n                            Rotate: rotate,\n                            ShrinkToFit: shrinkToFit,\n                            VerticalText: verticalText,\n                            WrapText: wrapText\n                        }\n                    }]\n            }\n        };\n    }\n};\n\nvar borders = {\n    getTemplate: function (styleProperties) {\n        var _a = styleProperties.borders, borderBottom = _a.borderBottom, borderLeft = _a.borderLeft, borderRight = _a.borderRight, borderTop = _a.borderTop;\n        return {\n            name: 'Borders',\n            children: [borderBottom, borderLeft, borderRight, borderTop].map(function (it, index) {\n                var current = index == 0 ? \"Bottom\" : index == 1 ? \"Left\" : index == 2 ? \"Right\" : \"Top\";\n                return {\n                    name: 'Border',\n                    properties: {\n                        prefixedAttributes: [{\n                                prefix: 'ss:',\n                                map: {\n                                    Position: current,\n                                    LineStyle: it.lineStyle,\n                                    Weight: it.weight,\n                                    Color: it.color\n                                }\n                            }]\n                    }\n                };\n            })\n        };\n    }\n};\n\nvar font = {\n    getTemplate: function (styleProperties) {\n        var _a = styleProperties.font, bold = _a.bold, fontName = _a.fontName, italic = _a.italic, color = _a.color, outline = _a.outline, shadow = _a.shadow, size = _a.size, strikeThrough = _a.strikeThrough, underline = _a.underline, verticalAlign = _a.verticalAlign, charSet = _a.charSet, family = _a.family;\n        return {\n            name: \"Font\",\n            properties: {\n                prefixedAttributes: [{\n                        prefix: \"ss:\",\n                        map: {\n                            Bold: bold,\n                            FontName: fontName,\n                            Italic: italic,\n                            Color: color,\n                            Outline: outline,\n                            Shadow: shadow,\n                            Size: size,\n                            StrikeThrough: strikeThrough,\n                            Underline: underline,\n                            VerticalAlign: verticalAlign\n                        }\n                    }, {\n                        prefix: \"x:\",\n                        map: {\n                            CharSet: charSet,\n                            Family: family\n                        }\n                    }]\n            }\n        };\n    }\n};\n\nvar interior = {\n    getTemplate: function (styleProperties) {\n        var _a = styleProperties.interior, color = _a.color, pattern = _a.pattern, patternColor = _a.patternColor;\n        return {\n            name: \"Interior\",\n            properties: {\n                prefixedAttributes: [{\n                        prefix: \"ss:\",\n                        map: {\n                            Color: color,\n                            Pattern: pattern,\n                            PatternColor: patternColor\n                        }\n                    }]\n            }\n        };\n    }\n};\n\nvar protection = {\n    getTemplate: function (styleProperties) {\n        return {\n            name: \"Protection\",\n            properties: {\n                prefixedAttributes: [{\n                        prefix: \"ss:\",\n                        map: {\n                            Protected: styleProperties.protection.protected,\n                            HideFormula: styleProperties.protection.hideFormula\n                        }\n                    }]\n            }\n        };\n    }\n};\n\nvar numberFormat = {\n    getTemplate: function (styleProperties) {\n        var format = styleProperties.numberFormat.format;\n        return {\n            name: \"NumberFormat\",\n            properties: {\n                prefixedAttributes: [{\n                        prefix: \"ss:\",\n                        map: {\n                            Format: format\n                        }\n                    }]\n            }\n        };\n    }\n};\n\nvar style = {\n    getTemplate: function (styleProperties) {\n        var id = styleProperties.id, name = styleProperties.name;\n        return {\n            name: 'Style',\n            properties: {\n                prefixedAttributes: [{\n                        prefix: \"ss:\",\n                        map: {\n                            ID: id,\n                            Name: name ? name : id\n                        }\n                    }]\n            }\n        };\n    }\n};\n\n/**\n * See https://msdn.microsoft.com/en-us/library/aa140066(v=office.10).aspx\n */\nvar ExcelXmlFactory = /** @class */ (function () {\n    function ExcelXmlFactory() {\n    }\n    ExcelXmlFactory.createExcel = function (styles, currentWorksheet) {\n        var header = this.excelXmlHeader();\n        var docProps = documentProperties.getTemplate();\n        var eWorkbook = excelWorkbook.getTemplate();\n        var wb = this.workbook(docProps, eWorkbook, styles, currentWorksheet);\n        return \"\" + header + XmlFactory.createXml(wb, function (boolean) { return boolean ? '1' : '0'; });\n    };\n    ExcelXmlFactory.workbook = function (docProperties, eWorkbook, styles, currentWorksheet) {\n        var children = [\n            docProperties,\n            eWorkbook,\n            this.stylesXmlElement(styles)\n        ].concat(worksheet.getTemplate(currentWorksheet));\n        return Object.assign({}, workbook.getTemplate(), { children: children });\n    };\n    ExcelXmlFactory.excelXmlHeader = function () {\n        return \"<?xml version=\\\"1.0\\\" ?>\\n        <?mso-application progid=\\\"Excel.Sheet\\\" ?>\\n        \";\n    };\n    ExcelXmlFactory.stylesXmlElement = function (styles) {\n        var _this = this;\n        return {\n            name: 'Styles',\n            children: styles ? styles.map(function (it) { return _this.styleXmlElement(it); }) : []\n        };\n    };\n    ExcelXmlFactory.styleXmlElement = function (styleProperties) {\n        var children = _.compose(this.addProperty('alignment', styleProperties), this.addProperty('borders', styleProperties), this.addProperty('font', styleProperties), this.addProperty('interior', styleProperties), this.addProperty('protection', styleProperties), this.addProperty('numberFormat', styleProperties))([]);\n        return Object.assign({}, style.getTemplate(styleProperties), { children: children });\n    };\n    ExcelXmlFactory.addProperty = function (property, styleProperties) {\n        return function (children) {\n            if (!styleProperties[property]) {\n                return children;\n            }\n            var options = {\n                alignment: alignment,\n                borders: borders,\n                font: font,\n                interior: interior,\n                numberFormat: numberFormat,\n                protection: protection\n            };\n            return children.concat(options[property].getTemplate(styleProperties));\n        };\n    };\n    ExcelXmlFactory.factoryMode = ExcelFactoryMode.SINGLE_SHEET;\n    return ExcelXmlFactory;\n}());\n\nvar INCH_TO_EMU = 9525;\nvar numberFormatMap = {\n    '0': 1,\n    '0.00': 2,\n    '#,##0': 3,\n    '#,##0.00': 4,\n    '0%': 9,\n    '0.00%': 10,\n    '0.00E+00': 11,\n    '# ?/?': 12,\n    '# ??/??': 13,\n    'mm-dd-yy': 14,\n    'd-mmm-yy': 15,\n    'd-mmm': 16,\n    'mmm-yy': 17,\n    'h:mm AM/PM': 18,\n    'h:mm:ss AM/PM': 19,\n    'h:mm': 20,\n    'h:mm:ss': 21,\n    'm/d/yy h:mm': 22,\n    '#,##0 ;(#,##0)': 37,\n    '#,##0 ;[Red](#,##0)': 38,\n    '#,##0.00;(#,##0.00)': 39,\n    '#,##0.00;[Red](#,##0.00)': 40,\n    'mm:ss': 45,\n    '[h]:mm:ss': 46,\n    'mmss.0': 47,\n    '##0.0E+0': 48,\n    '@': 49\n};\n\nvar pixelsToPoint = function (pixels) {\n    return Math.round(pixels * 72 / 96);\n};\nvar pointsToPixel = function (points) {\n    return Math.round(points * 96 / 72);\n};\nvar pixelsToEMU = function (value) {\n    return Math.ceil(value * INCH_TO_EMU);\n};\nvar getFontFamilyId = function (name) {\n    if (name === undefined) {\n        return;\n    }\n    var families = ['Automatic', 'Roman', 'Swiss', 'Modern', 'Script', 'Decorative'];\n    var pos = families.indexOf(name || 'Automatic');\n    return Math.max(pos, 0);\n};\nvar getHeightFromProperty = function (rowIndex, height) {\n    if (!height) {\n        return;\n    }\n    var finalHeight;\n    if (typeof height === 'number') {\n        finalHeight = height;\n    }\n    else {\n        var heightFunc = height;\n        finalHeight = heightFunc({ rowIndex: rowIndex });\n    }\n    return pixelsToPoint(finalHeight);\n};\nvar setExcelImageTotalWidth = function (image, columnsToExport) {\n    var _a = image.position, colSpan = _a.colSpan, column = _a.column;\n    if (image.width) {\n        if (colSpan) {\n            var columnsInSpan = columnsToExport.slice(column - 1, column + colSpan - 1);\n            var totalWidth = 0;\n            for (var i = 0; i < columnsInSpan.length; i++) {\n                var colWidth = columnsInSpan[i].getActualWidth();\n                if (image.width < totalWidth + colWidth) {\n                    image.position.colSpan = i + 1;\n                    image.totalWidth = image.width;\n                    image.width = image.totalWidth - totalWidth;\n                    break;\n                }\n                totalWidth += colWidth;\n            }\n        }\n        else {\n            image.totalWidth = image.width;\n        }\n    }\n};\nvar setExcelImageTotalHeight = function (image, rowHeight) {\n    var _a = image.position, rowSpan = _a.rowSpan, row = _a.row;\n    if (image.height) {\n        if (rowSpan) {\n            var totalHeight = 0;\n            var counter = 0;\n            for (var i = row; i < row + rowSpan; i++) {\n                var nextRowHeight = pointsToPixel(getHeightFromProperty(i, rowHeight) || 20);\n                if (image.height < totalHeight + nextRowHeight) {\n                    image.position.rowSpan = counter + 1;\n                    image.totalHeight = image.height;\n                    image.height = image.totalHeight - totalHeight;\n                    break;\n                }\n                totalHeight += nextRowHeight;\n                counter++;\n            }\n        }\n        else {\n            image.totalHeight = image.height;\n        }\n    }\n};\nvar createXmlPart = function (body) {\n    var header = XmlFactory.createHeader({\n        encoding: 'UTF-8',\n        standalone: 'yes'\n    });\n    var xmlBody = XmlFactory.createXml(body);\n    return \"\" + header + xmlBody;\n};\nvar getExcelColumnName = function (colIdx) {\n    var startCode = 65;\n    var tableWidth = 26;\n    var fromCharCode = String.fromCharCode;\n    var pos = Math.floor(colIdx / tableWidth);\n    var tableIdx = colIdx % tableWidth;\n    if (!pos || colIdx === tableWidth) {\n        return fromCharCode(startCode + colIdx - 1);\n    }\n    if (!tableIdx) {\n        return getExcelColumnName(pos - 1) + 'Z';\n    }\n    if (pos < tableWidth) {\n        return fromCharCode(startCode + pos - 1) + fromCharCode(startCode + tableIdx - 1);\n    }\n    return getExcelColumnName(pos) + fromCharCode(startCode + tableIdx - 1);\n};\n\nvar __extends$2R = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __assign$M = (undefined && undefined.__assign) || function () {\n    __assign$M = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign$M.apply(this, arguments);\n};\nvar __read$17 = (undefined && undefined.__read) || function (o, n) {\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n    if (!m) return o;\n    var i = m.call(o), r, ar = [], e;\n    try {\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n    }\n    catch (error) { e = { error: error }; }\n    finally {\n        try {\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\n        }\n        finally { if (e) throw e.error; }\n    }\n    return ar;\n};\nvar __spread$F = (undefined && undefined.__spread) || function () {\n    for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read$17(arguments[i]));\n    return ar;\n};\nvar BaseExcelSerializingSession = /** @class */ (function (_super) {\n    __extends$2R(BaseExcelSerializingSession, _super);\n    function BaseExcelSerializingSession(config) {\n        var _this = _super.call(this, config) || this;\n        _this.mixedStyles = {};\n        _this.mixedStyleCounter = 0;\n        _this.rows = [];\n        _this.config = Object.assign({}, config);\n        _this.stylesByIds = {};\n        _this.config.baseExcelStyles.forEach(function (style) {\n            _this.stylesByIds[style.id] = style;\n        });\n        _this.excelStyles = __spread$F(_this.config.baseExcelStyles);\n        return _this;\n    }\n    BaseExcelSerializingSession.prototype.addCustomContent = function (customContent) {\n        var _this = this;\n        customContent.forEach(function (row) {\n            var rowLen = _this.rows.length + 1;\n            var rowObj = {\n                height: getHeightFromProperty(rowLen, row.height || _this.config.rowHeight),\n                cells: (row.cells || []).map(function (cell, idx) {\n                    var _a, _b, _c;\n                    var image = _this.addImage(rowLen, _this.columnsToExport[idx], (_a = cell.data) === null || _a === void 0 ? void 0 : _a.value);\n                    var excelStyles = null;\n                    if (cell.styleId) {\n                        excelStyles = typeof cell.styleId === 'string' ? [cell.styleId] : cell.styleId;\n                    }\n                    var excelStyleId = _this.getStyleId(excelStyles);\n                    if (image) {\n                        return _this.createCell(excelStyleId, _this.getDataTypeForValue(image.value), image.value == null ? '' : image.value);\n                    }\n                    var value = (_c = (_b = cell.data) === null || _b === void 0 ? void 0 : _b.value) !== null && _c !== void 0 ? _c : '';\n                    var type = _this.getDataTypeForValue(value);\n                    if (cell.mergeAcross) {\n                        return _this.createMergedCell(excelStyleId, type, value, cell.mergeAcross);\n                    }\n                    return _this.createCell(excelStyleId, type, value);\n                }),\n                outlineLevel: row.outlineLevel || undefined\n            };\n            if (row.collapsed != null) {\n                rowObj.collapsed = row.collapsed;\n            }\n            if (row.hidden != null) {\n                rowObj.hidden = row.hidden;\n            }\n            _this.rows.push(rowObj);\n        });\n    };\n    BaseExcelSerializingSession.prototype.onNewHeaderGroupingRow = function () {\n        var _this = this;\n        var currentCells = [];\n        this.rows.push({\n            cells: currentCells,\n            height: getHeightFromProperty(this.rows.length + 1, this.config.headerRowHeight)\n        });\n        return {\n            onColumn: function (columnGroup, header, index, span, collapsibleRanges) {\n                var styleIds = _this.config.styleLinker({ rowType: RowType.HEADER_GROUPING, rowIndex: 1, value: \"grouping-\" + header, columnGroup: columnGroup });\n                currentCells.push(__assign$M(__assign$M({}, _this.createMergedCell(_this.getStyleId(styleIds), _this.getDataTypeForValue('string'), header, span)), { collapsibleRanges: collapsibleRanges }));\n            }\n        };\n    };\n    BaseExcelSerializingSession.prototype.onNewHeaderRow = function () {\n        return this.onNewRow(this.onNewHeaderColumn, this.config.headerRowHeight);\n    };\n    BaseExcelSerializingSession.prototype.onNewBodyRow = function () {\n        return this.onNewRow(this.onNewBodyColumn, this.config.rowHeight);\n    };\n    BaseExcelSerializingSession.prototype.prepare = function (columnsToExport) {\n        var _this = this;\n        _super.prototype.prepare.call(this, columnsToExport);\n        this.columnsToExport = __spread$F(columnsToExport);\n        this.cols = columnsToExport.map(function (col, i) { return _this.convertColumnToExcel(col, i); });\n    };\n    BaseExcelSerializingSession.prototype.parse = function () {\n        // adding custom content might have made some rows wider than the grid, so add new columns\n        var longestRow = this.rows.reduce(function (a, b) { return Math.max(a, b.cells.length); }, 0);\n        while (this.cols.length < longestRow) {\n            this.cols.push(this.convertColumnToExcel(null, this.cols.length + 1));\n        }\n        var data = {\n            name: this.config.sheetName,\n            table: {\n                columns: this.cols,\n                rows: this.rows\n            }\n        };\n        return this.createExcel(data);\n    };\n    BaseExcelSerializingSession.prototype.isFormula = function (value) {\n        if (value == null) {\n            return false;\n        }\n        return this.config.autoConvertFormulas && value.toString().startsWith('=');\n    };\n    BaseExcelSerializingSession.prototype.isNumerical = function (value) {\n        return isFinite(value) && value !== '' && !isNaN(parseFloat(value));\n    };\n    BaseExcelSerializingSession.prototype.getStyleById = function (styleId) {\n        if (styleId == null) {\n            return null;\n        }\n        return this.stylesByIds[styleId] || null;\n    };\n    BaseExcelSerializingSession.prototype.convertColumnToExcel = function (column, index) {\n        var columnWidth = this.config.columnWidth;\n        if (columnWidth) {\n            if (typeof columnWidth === 'number') {\n                return { width: columnWidth };\n            }\n            return { width: columnWidth({ column: column, index: index }) };\n        }\n        if (column) {\n            var smallestUsefulWidth = 75;\n            return { width: Math.max(column.getActualWidth(), smallestUsefulWidth) };\n        }\n        return {};\n    };\n    BaseExcelSerializingSession.prototype.onNewHeaderColumn = function (rowIndex, currentCells) {\n        var _this = this;\n        return function (column, index) {\n            var nameForCol = _this.extractHeaderValue(column);\n            var styleIds = _this.config.styleLinker({ rowType: RowType.HEADER, rowIndex: rowIndex, value: nameForCol, column: column });\n            currentCells.push(_this.createCell(_this.getStyleId(styleIds), _this.getDataTypeForValue('string'), nameForCol));\n        };\n    };\n    BaseExcelSerializingSession.prototype.onNewRow = function (onNewColumnAccumulator, height) {\n        var currentCells = [];\n        this.rows.push({\n            cells: currentCells,\n            height: getHeightFromProperty(this.rows.length + 1, height)\n        });\n        return {\n            onColumn: onNewColumnAccumulator.bind(this, this.rows.length, currentCells)()\n        };\n    };\n    BaseExcelSerializingSession.prototype.onNewBodyColumn = function (rowIndex, currentCells) {\n        var _this = this;\n        var skipCols = 0;\n        return function (column, index, node) {\n            if (skipCols > 0) {\n                skipCols -= 1;\n                return;\n            }\n            if (!_this.config.gridOptionsService.is('groupHideOpenParents') && node.level != null) {\n                var padding = node.footer ? 1 : 0;\n                _.last(_this.rows).outlineLevel = node.level + padding;\n            }\n            var valueForCell = _this.extractRowCellValue(column, index, rowIndex, 'excel', node);\n            var styleIds = _this.config.styleLinker({ rowType: RowType.BODY, rowIndex: rowIndex, value: valueForCell, column: column, node: node });\n            var excelStyleId = _this.getStyleId(styleIds);\n            var colSpan = column.getColSpan(node);\n            var addedImage = _this.addImage(rowIndex, column, valueForCell);\n            if (addedImage) {\n                currentCells.push(_this.createCell(excelStyleId, _this.getDataTypeForValue(addedImage.value), addedImage.value == null ? '' : addedImage.value));\n            }\n            else if (colSpan > 1) {\n                skipCols = colSpan - 1;\n                currentCells.push(_this.createMergedCell(excelStyleId, _this.getDataTypeForValue(valueForCell), valueForCell, colSpan - 1));\n            }\n            else {\n                currentCells.push(_this.createCell(excelStyleId, _this.getDataTypeForValue(valueForCell), valueForCell));\n            }\n        };\n    };\n    BaseExcelSerializingSession.prototype.getStyleId = function (styleIds) {\n        if (!styleIds || !styleIds.length) {\n            return null;\n        }\n        if (styleIds.length === 1) {\n            return styleIds[0];\n        }\n        var key = styleIds.join(\"-\");\n        if (!this.mixedStyles[key]) {\n            this.addNewMixedStyle(styleIds);\n        }\n        return this.mixedStyles[key].excelID;\n    };\n    BaseExcelSerializingSession.prototype.addNewMixedStyle = function (styleIds) {\n        var _this = this;\n        this.mixedStyleCounter += 1;\n        var excelId = \"mixedStyle\" + this.mixedStyleCounter;\n        var resultantStyle = {};\n        styleIds.forEach(function (styleId) {\n            _this.excelStyles.forEach(function (excelStyle) {\n                if (excelStyle.id === styleId) {\n                    _.mergeDeep(resultantStyle, _.deepCloneObject(excelStyle));\n                }\n            });\n        });\n        resultantStyle.id = excelId;\n        resultantStyle.name = excelId;\n        var key = styleIds.join(\"-\");\n        this.mixedStyles[key] = {\n            excelID: excelId,\n            key: key,\n            result: resultantStyle\n        };\n        this.excelStyles.push(resultantStyle);\n        this.stylesByIds[excelId] = resultantStyle;\n    };\n    return BaseExcelSerializingSession;\n}(BaseGridSerializingSession));\n\nvar __extends$2Q = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar ExcelXmlSerializingSession = /** @class */ (function (_super) {\n    __extends$2Q(ExcelXmlSerializingSession, _super);\n    function ExcelXmlSerializingSession() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    ExcelXmlSerializingSession.prototype.createExcel = function (data) {\n        return ExcelXmlFactory.createExcel(this.excelStyles, data);\n    };\n    ExcelXmlSerializingSession.prototype.getDataTypeForValue = function (valueForCell) {\n        return this.isNumerical(valueForCell) ? 'Number' : 'String';\n    };\n    ExcelXmlSerializingSession.prototype.getType = function (type, style, value) {\n        if (this.isFormula(value)) {\n            return 'Formula';\n        }\n        if (style && style.dataType) {\n            switch (style.dataType.toLocaleLowerCase()) {\n                case 'string':\n                    return 'Formula';\n                case 'number':\n                    return 'Number';\n                case 'datetime':\n                    return 'DateTime';\n                case 'error':\n                    return 'Error';\n                case 'boolean':\n                    return 'Boolean';\n                default:\n                    console.warn(\"AG Grid: Unrecognized data type for excel export [\" + style.id + \".dataType=\" + style.dataType + \"]\");\n            }\n        }\n        return type;\n    };\n    ExcelXmlSerializingSession.prototype.addImage = function () {\n        return;\n    };\n    ExcelXmlSerializingSession.prototype.createCell = function (styleId, type, value) {\n        var actualStyle = this.getStyleById(styleId);\n        var typeTransformed = (this.getType(type, actualStyle, value) || type);\n        return {\n            styleId: !!actualStyle ? styleId : undefined,\n            data: {\n                type: typeTransformed,\n                value: this.getValueTransformed(typeTransformed, value)\n            }\n        };\n    };\n    ExcelXmlSerializingSession.prototype.getValueTransformed = function (typeTransformed, value) {\n        var _this = this;\n        var wrapText = function (val) {\n            if (_this.config.suppressTextAsCDATA) {\n                return _.escapeString(val);\n            }\n            var cdataStart = '<![CDATA[';\n            var cdataEnd = ']]>';\n            var cdataEndRegex = new RegExp(cdataEnd, \"g\");\n            return cdataStart\n                // CDATA sections are closed by the character sequence ']]>' and there is no\n                // way of escaping this, so if the text contains the offending sequence, emit\n                // multiple CDATA sections and split the characters between them.\n                + String(val).replace(cdataEndRegex, ']]' + cdataEnd + cdataStart + '>')\n                + cdataEnd;\n        };\n        var convertBoolean = function (val) {\n            if (!val || val === '0' || val === 'false') {\n                return '0';\n            }\n            return '1';\n        };\n        switch (typeTransformed) {\n            case 'String':\n                return wrapText(value);\n            case 'Number':\n                return Number(value).valueOf() + '';\n            case 'Boolean':\n                return convertBoolean(value);\n            default:\n                return value;\n        }\n    };\n    ExcelXmlSerializingSession.prototype.createMergedCell = function (styleId, type, value, numOfCells) {\n        return {\n            styleId: !!this.getStyleById(styleId) ? styleId : undefined,\n            data: {\n                type: type,\n                value: value\n            },\n            mergeAcross: numOfCells\n        };\n    };\n    return ExcelXmlSerializingSession;\n}(BaseExcelSerializingSession));\n\nvar coreFactory = {\n    getTemplate: function (author) {\n        var dt = new Date();\n        var jsonDate = dt.toJSON();\n        return {\n            name: 'cp:coreProperties',\n            properties: {\n                prefixedAttributes: [{\n                        prefix: \"xmlns:\",\n                        map: {\n                            cp: \"http://schemas.openxmlformats.org/package/2006/metadata/core-properties\",\n                            dc: 'http://purl.org/dc/elements/1.1/',\n                            dcterms: 'http://purl.org/dc/terms/',\n                            dcmitype: 'http://purl.org/dc/dcmitype/',\n                            xsi: 'http://www.w3.org/2001/XMLSchema-instance'\n                        }\n                    }]\n            },\n            children: [{\n                    name: 'dc:creator',\n                    textNode: author\n                }, {\n                    name: 'dc:title',\n                    textNode: 'Workbook'\n                }, {\n                    name: 'dcterms:created',\n                    properties: {\n                        rawMap: {\n                            'xsi:type': 'dcterms:W3CDTF'\n                        }\n                    },\n                    textNode: jsonDate\n                }, {\n                    name: 'dcterms:modified',\n                    properties: {\n                        rawMap: {\n                            'xsi:type': 'dcterms:W3CDTF'\n                        }\n                    },\n                    textNode: jsonDate\n                }]\n        };\n    }\n};\n\nvar contentTypeFactory = {\n    getTemplate: function (config) {\n        var name = config.name, ContentType = config.ContentType, Extension = config.Extension, PartName = config.PartName;\n        return {\n            name: name,\n            properties: {\n                rawMap: {\n                    Extension: Extension,\n                    PartName: PartName,\n                    ContentType: ContentType\n                }\n            }\n        };\n    }\n};\n\nvar __read$16 = (undefined && undefined.__read) || function (o, n) {\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n    if (!m) return o;\n    var i = m.call(o), r, ar = [], e;\n    try {\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n    }\n    catch (error) { e = { error: error }; }\n    finally {\n        try {\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\n        }\n        finally { if (e) throw e.error; }\n    }\n    return ar;\n};\nvar __spread$E = (undefined && undefined.__spread) || function () {\n    for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read$16(arguments[i]));\n    return ar;\n};\nvar contentTypesFactory = {\n    getTemplate: function (sheetLen) {\n        var worksheets = new Array(sheetLen).fill(undefined).map(function (v, i) { return ({\n            name: 'Override',\n            ContentType: 'application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml',\n            PartName: \"/xl/worksheets/sheet\" + (i + 1) + \".xml\"\n        }); });\n        var sheetsWithImages = ExcelXlsxFactory.worksheetImages.size;\n        var imageTypesObject = {};\n        ExcelXlsxFactory.workbookImageIds.forEach(function (v) {\n            imageTypesObject[v.type] = true;\n        });\n        var imageDocs = new Array(sheetsWithImages).fill(undefined).map(function (v, i) { return ({\n            name: 'Override',\n            ContentType: 'application/vnd.openxmlformats-officedocument.drawing+xml',\n            PartName: \"/xl/drawings/drawing\" + (i + 1) + \".xml\"\n        }); });\n        var imageTypes = Object.keys(imageTypesObject).map(function (ext) { return ({\n            name: 'Default',\n            ContentType: \"image/\" + ext,\n            Extension: ext\n        }); });\n        var children = __spread$E(imageTypes, [\n            {\n                name: 'Default',\n                Extension: 'rels',\n                ContentType: 'application/vnd.openxmlformats-package.relationships+xml'\n            }, {\n                name: 'Default',\n                ContentType: 'application/xml',\n                Extension: 'xml'\n            }, {\n                name: 'Override',\n                ContentType: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml',\n                PartName: \"/xl/workbook.xml\"\n            }\n        ], worksheets, [\n            {\n                name: 'Override',\n                ContentType: 'application/vnd.openxmlformats-officedocument.theme+xml',\n                PartName: '/xl/theme/theme1.xml'\n            }, {\n                name: 'Override',\n                ContentType: 'application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml',\n                PartName: '/xl/styles.xml'\n            }, {\n                name: 'Override',\n                ContentType: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sharedStrings+xml',\n                PartName: '/xl/sharedStrings.xml'\n            }\n        ], imageDocs, [\n            {\n                name: 'Override',\n                ContentType: 'application/vnd.openxmlformats-package.core-properties+xml',\n                PartName: '/docProps/core.xml'\n            }\n        ]).map(function (contentType) { return contentTypeFactory.getTemplate(contentType); });\n        return {\n            name: \"Types\",\n            properties: {\n                rawMap: {\n                    xmlns: \"http://schemas.openxmlformats.org/package/2006/content-types\"\n                }\n            },\n            children: children\n        };\n    }\n};\n\nvar getAnchor = function (name, imageAnchor) { return ({\n    name: \"xdr:\" + name,\n    children: [{\n            name: 'xdr:col',\n            textNode: (imageAnchor.col).toString()\n        }, {\n            name: 'xdr:colOff',\n            textNode: imageAnchor.offsetX.toString()\n        }, {\n            name: 'xdr:row',\n            textNode: imageAnchor.row.toString()\n        }, {\n            name: 'xdr:rowOff',\n            textNode: imageAnchor.offsetY.toString()\n        }]\n}); };\nvar getExt = function (image) {\n    var children = [{\n            name: 'a:ext',\n            properties: {\n                rawMap: {\n                    uri: '{FF2B5EF4-FFF2-40B4-BE49-F238E27FC236}'\n                }\n            },\n            children: [{\n                    name: 'a16:creationId',\n                    properties: {\n                        rawMap: {\n                            'id': '{822E6D20-D7BC-2841-A643-D49A6EF008A2}',\n                            'xmlns:a16': 'http://schemas.microsoft.com/office/drawing/2014/main'\n                        }\n                    }\n                }]\n        }];\n    var recolor = image.recolor && image.recolor.toLowerCase();\n    switch (recolor) {\n        case 'grayscale':\n        case 'sepia':\n        case 'washout':\n            children.push({\n                name: 'a:ext',\n                properties: {\n                    rawMap: {\n                        uri: '{C183D7F6-B498-43B3-948B-1728B52AA6E4}'\n                    }\n                },\n                children: [{\n                        name: 'adec:decorative',\n                        properties: {\n                            rawMap: {\n                                'val': '0',\n                                'xmlns:adec': 'http://schemas.microsoft.com/office/drawing/2017/decorative'\n                            }\n                        }\n                    }]\n            });\n    }\n    return {\n        name: 'a:extLst',\n        children: children\n    };\n};\nvar getNvPicPr = function (image, index) { return ({\n    name: 'xdr:nvPicPr',\n    children: [{\n            name: 'xdr:cNvPr',\n            properties: {\n                rawMap: {\n                    id: index,\n                    name: image.id,\n                    descr: image.altText != null ? image.altText : undefined\n                }\n            },\n            children: [getExt(image)]\n        }, {\n            name: 'xdr:cNvPicPr',\n            properties: {\n                rawMap: {\n                    preferRelativeResize: '0'\n                }\n            },\n            children: [{\n                    name: 'a:picLocks'\n                }]\n        }]\n}); };\nvar getColorDetails = function (color) {\n    if (!color.saturation && !color.tint) {\n        return;\n    }\n    var ret = [];\n    if (color.saturation) {\n        ret.push({\n            name: 'a:satMod',\n            properties: {\n                rawMap: {\n                    val: color.saturation * 1000\n                }\n            }\n        });\n    }\n    if (color.tint) {\n        ret.push({\n            name: 'a:tint',\n            properties: {\n                rawMap: {\n                    val: color.tint * 1000\n                }\n            }\n        });\n    }\n    return ret;\n};\nvar getDuoTone = function (primaryColor, secondaryColor) {\n    return ({\n        name: 'a:duotone',\n        children: [{\n                name: 'a:prstClr',\n                properties: {\n                    rawMap: {\n                        val: primaryColor.color\n                    }\n                },\n                children: getColorDetails(primaryColor)\n            }, {\n                name: 'a:srgbClr',\n                properties: {\n                    rawMap: {\n                        val: secondaryColor.color\n                    }\n                },\n                children: getColorDetails(secondaryColor)\n            }]\n    });\n};\nvar getBlipFill = function (image, index) {\n    var blipChildren;\n    if (image.transparency) {\n        var transparency = Math.min(Math.max(image.transparency, 0), 100);\n        blipChildren = [{\n                name: 'a:alphaModFix',\n                properties: {\n                    rawMap: {\n                        amt: 100000 - Math.round(transparency * 1000),\n                    }\n                }\n            }];\n    }\n    if (image.recolor) {\n        if (!blipChildren) {\n            blipChildren = [];\n        }\n        switch (image.recolor.toLocaleLowerCase()) {\n            case 'grayscale':\n                blipChildren.push({ name: 'a:grayscl' });\n                break;\n            case 'sepia':\n                blipChildren.push(getDuoTone({ color: 'black' }, { color: 'D9C3A5', tint: 50, saturation: 180 }));\n                break;\n            case 'washout':\n                blipChildren.push({\n                    name: 'a:lum',\n                    properties: {\n                        rawMap: {\n                            bright: '70000',\n                            contrast: '-70000'\n                        }\n                    }\n                });\n                break;\n        }\n    }\n    return ({\n        name: 'xdr:blipFill',\n        children: [{\n                name: 'a:blip',\n                properties: {\n                    rawMap: {\n                        'cstate': 'print',\n                        'r:embed': \"rId\" + index,\n                        'xmlns:r': 'http://schemas.openxmlformats.org/officeDocument/2006/relationships'\n                    }\n                },\n                children: blipChildren\n            }, {\n                name: 'a:stretch',\n                children: [{\n                        name: 'a:fillRect'\n                    }]\n            }]\n    });\n};\nvar getSpPr = function (image, imageBoxSize) {\n    var xfrm = {\n        name: 'a:xfrm',\n        children: [{\n                name: 'a:off',\n                properties: {\n                    rawMap: {\n                        x: 0,\n                        y: 0\n                    }\n                }\n            }, {\n                name: 'a:ext',\n                properties: {\n                    rawMap: {\n                        cx: imageBoxSize.width,\n                        cy: imageBoxSize.height\n                    }\n                }\n            }]\n    };\n    if (image.rotation) {\n        var rotation = image.rotation;\n        xfrm.properties = {\n            rawMap: {\n                rot: Math.min(Math.max(rotation, 0), 360) * 60000\n            }\n        };\n    }\n    var prstGeom = {\n        name: 'a:prstGeom',\n        properties: {\n            rawMap: {\n                prst: 'rect'\n            }\n        },\n        children: [{ name: 'a:avLst' }]\n    };\n    var ret = {\n        name: 'xdr:spPr',\n        children: [xfrm, prstGeom]\n    };\n    return ret;\n};\nvar getImageBoxSize = function (image) {\n    image.fitCell = !!image.fitCell || (!image.width || !image.height);\n    var _a = image.position, position = _a === void 0 ? {} : _a, fitCell = image.fitCell, _b = image.width, width = _b === void 0 ? 0 : _b, _c = image.height, height = _c === void 0 ? 0 : _c, totalHeight = image.totalHeight, totalWidth = image.totalWidth;\n    var _d = position.offsetX, offsetX = _d === void 0 ? 0 : _d, _e = position.offsetY, offsetY = _e === void 0 ? 0 : _e, _f = position.row, row = _f === void 0 ? 1 : _f, _g = position.rowSpan, rowSpan = _g === void 0 ? 1 : _g, _h = position.column, column = _h === void 0 ? 1 : _h, _j = position.colSpan, colSpan = _j === void 0 ? 1 : _j;\n    return {\n        from: {\n            row: row - 1,\n            col: column - 1,\n            offsetX: pixelsToEMU(offsetX),\n            offsetY: pixelsToEMU(offsetY)\n        },\n        to: {\n            row: (row - 1) + (fitCell ? 1 : rowSpan - 1),\n            col: (column - 1) + (fitCell ? 1 : colSpan - 1),\n            offsetX: pixelsToEMU(width + offsetX),\n            offsetY: pixelsToEMU(height + offsetY)\n        },\n        height: pixelsToEMU(totalHeight || height),\n        width: pixelsToEMU(totalWidth || width)\n    };\n};\nvar getPicture = function (image, currentIndex, worksheetImageIndex, imageBoxSize) {\n    return {\n        name: 'xdr:pic',\n        children: [\n            getNvPicPr(image, currentIndex + 1),\n            getBlipFill(image, worksheetImageIndex + 1),\n            getSpPr(image, imageBoxSize)\n        ]\n    };\n};\nvar drawingFactory = {\n    getTemplate: function (config) {\n        var sheetIndex = config.sheetIndex;\n        var sheetImages = ExcelXlsxFactory.worksheetImages.get(sheetIndex);\n        var sheetImageIds = ExcelXlsxFactory.worksheetImageIds.get(sheetIndex);\n        var children = sheetImages.map(function (image, idx) {\n            var boxSize = getImageBoxSize(image);\n            return ({\n                name: 'xdr:twoCellAnchor',\n                properties: {\n                    rawMap: {\n                        editAs: 'absolute'\n                    }\n                },\n                children: [\n                    getAnchor('from', boxSize.from),\n                    getAnchor('to', boxSize.to),\n                    getPicture(image, idx, sheetImageIds.get(image.id).index, boxSize),\n                    { name: 'xdr:clientData' }\n                ]\n            });\n        });\n        return {\n            name: 'xdr:wsDr',\n            properties: {\n                rawMap: {\n                    'xmlns:a': 'http://schemas.openxmlformats.org/drawingml/2006/main',\n                    'xmlns:xdr': 'http://schemas.openxmlformats.org/drawingml/2006/spreadsheetDrawing'\n                }\n            },\n            children: children\n        };\n    }\n};\n\nvar __read$15 = (undefined && undefined.__read) || function (o, n) {\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n    if (!m) return o;\n    var i = m.call(o), r, ar = [], e;\n    try {\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n    }\n    catch (error) { e = { error: error }; }\n    finally {\n        try {\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\n        }\n        finally { if (e) throw e.error; }\n    }\n    return ar;\n};\nvar getColorChildren = function (props) {\n    var _a = __read$15(props, 4), type = _a[0], innerType = _a[1], val = _a[2], lastClr = _a[3];\n    return {\n        name: \"a:\" + type,\n        children: [{\n                name: \"a:\" + innerType,\n                properties: {\n                    rawMap: {\n                        val: val,\n                        lastClr: lastClr\n                    }\n                }\n            }]\n    };\n};\nvar colorScheme = {\n    getTemplate: function () {\n        return {\n            name: \"a:clrScheme\",\n            properties: {\n                rawMap: {\n                    name: \"Office\"\n                }\n            },\n            children: [\n                getColorChildren(['dk1', 'sysClr', 'windowText', '000000']),\n                getColorChildren(['lt1', 'sysClr', 'window', 'FFFFFF']),\n                getColorChildren(['dk2', 'srgbClr', '44546A']),\n                getColorChildren(['lt2', 'srgbClr', 'E7E6E6']),\n                getColorChildren(['accent1', 'srgbClr', '4472C4']),\n                getColorChildren(['accent2', 'srgbClr', 'ED7D31']),\n                getColorChildren(['accent3', 'srgbClr', 'A5A5A5']),\n                getColorChildren(['accent4', 'srgbClr', 'FFC000']),\n                getColorChildren(['accent5', 'srgbClr', '5B9BD5']),\n                getColorChildren(['accent6', 'srgbClr', '70AD47']),\n                getColorChildren(['hlink', 'srgbClr', '0563C1']),\n                getColorChildren(['folHlink', 'srgbClr', '954F72'])\n            ]\n        };\n    }\n};\n\nvar __read$14 = (undefined && undefined.__read) || function (o, n) {\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n    if (!m) return o;\n    var i = m.call(o), r, ar = [], e;\n    try {\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n    }\n    catch (error) { e = { error: error }; }\n    finally {\n        try {\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\n        }\n        finally { if (e) throw e.error; }\n    }\n    return ar;\n};\nvar getFont$1 = function (props) {\n    var _a = __read$14(props, 4), type = _a[0], typeface = _a[1], script = _a[2], panose = _a[3];\n    return {\n        name: \"a:\" + type,\n        properties: {\n            rawMap: {\n                script: script,\n                typeface: typeface,\n                panose: panose\n            }\n        }\n    };\n};\nvar fontScheme = {\n    getTemplate: function () {\n        var utf8_encode = _.utf8_encode;\n        return {\n            name: \"a:fontScheme\",\n            properties: {\n                rawMap: {\n                    name: \"Office\"\n                }\n            },\n            children: [{\n                    name: 'a:majorFont',\n                    children: [\n                        getFont$1(['latin', 'Calibri Light', undefined, '020F0302020204030204']),\n                        getFont$1(['ea', '']),\n                        getFont$1(['cs', '']),\n                        getFont$1(['font', utf8_encode('游ゴシック Light'), 'Jpan']),\n                        getFont$1(['font', utf8_encode('맑은 고딕'), 'Hang']),\n                        getFont$1(['font', utf8_encode('等线 Light'), 'Hans']),\n                        getFont$1(['font', utf8_encode('新細明體'), 'Hant']),\n                        getFont$1(['font', 'Times New Roman', 'Arab']),\n                        getFont$1(['font', 'Times New Roman', 'Hebr']),\n                        getFont$1(['font', 'Tahoma', 'Thai']),\n                        getFont$1(['font', 'Nyala', 'Ethi']),\n                        getFont$1(['font', 'Vrinda', 'Beng']),\n                        getFont$1(['font', 'Shruti', 'Gujr']),\n                        getFont$1(['font', 'MoolBoran', 'Khmr']),\n                        getFont$1(['font', 'Tunga', 'Knda']),\n                        getFont$1(['font', 'Raavi', 'Guru']),\n                        getFont$1(['font', 'Euphemia', 'Cans']),\n                        getFont$1(['font', 'Plantagenet Cherokee', 'Cher']),\n                        getFont$1(['font', 'Microsoft Yi Baiti', 'Yiii']),\n                        getFont$1(['font', 'Microsoft Himalaya', 'Tibt']),\n                        getFont$1(['font', 'MV Boli', 'Thaa']),\n                        getFont$1(['font', 'Mangal', 'Deva']),\n                        getFont$1(['font', 'Gautami', 'Telu']),\n                        getFont$1(['font', 'Latha', 'Taml']),\n                        getFont$1(['font', 'Estrangelo Edessa', 'Syrc']),\n                        getFont$1(['font', 'Kalinga', 'Orya']),\n                        getFont$1(['font', 'Kartika', 'Mlym']),\n                        getFont$1(['font', 'DokChampa', 'Laoo']),\n                        getFont$1(['font', 'Iskoola Pota', 'Sinh']),\n                        getFont$1(['font', 'Mongolian Baiti', 'Mong']),\n                        getFont$1(['font', 'Times New Roman', 'Viet']),\n                        getFont$1(['font', 'Microsoft Uighur', 'Uigh']),\n                        getFont$1(['font', 'Sylfaen', 'Geor']),\n                        getFont$1(['font', 'Arial', 'Armn']),\n                        getFont$1(['font', 'Leelawadee UI', 'Bugi']),\n                        getFont$1(['font', 'Microsoft JhengHei', 'Bopo']),\n                        getFont$1(['font', 'Javanese Text', 'Java']),\n                        getFont$1(['font', 'Segoe UI', 'Lisu']),\n                        getFont$1(['font', 'Myanmar Text', 'Mymr']),\n                        getFont$1(['font', 'Ebrima', 'Nkoo']),\n                        getFont$1(['font', 'Nirmala UI', 'Olck']),\n                        getFont$1(['font', 'Ebrima', 'Osma']),\n                        getFont$1(['font', 'Phagspa', 'Phag']),\n                        getFont$1(['font', 'Estrangelo Edessa', 'Syrn']),\n                        getFont$1(['font', 'Estrangelo Edessa', 'Syrj']),\n                        getFont$1(['font', 'Estrangelo Edessa', 'Syre']),\n                        getFont$1(['font', 'Nirmala UI', 'Sora']),\n                        getFont$1(['font', 'Microsoft Tai Le', 'Tale']),\n                        getFont$1(['font', 'Microsoft New Tai Lue', 'Talu']),\n                        getFont$1(['font', 'Ebrima', 'Tfng'])\n                    ]\n                }, {\n                    name: 'a:minorFont',\n                    children: [\n                        getFont$1(['latin', 'Calibri', undefined, '020F0502020204030204']),\n                        getFont$1(['ea', '']),\n                        getFont$1(['cs', '']),\n                        getFont$1(['font', utf8_encode('游ゴシック'), 'Jpan']),\n                        getFont$1(['font', utf8_encode('맑은 고딕'), 'Hang']),\n                        getFont$1(['font', utf8_encode('等线'), 'Hans']),\n                        getFont$1(['font', utf8_encode('新細明體'), 'Hant']),\n                        getFont$1(['font', 'Arial', 'Arab']),\n                        getFont$1(['font', 'Arial', 'Hebr']),\n                        getFont$1(['font', 'Tahoma', 'Thai']),\n                        getFont$1(['font', 'Nyala', 'Ethi']),\n                        getFont$1(['font', 'Vrinda', 'Beng']),\n                        getFont$1(['font', 'Shruti', 'Gujr']),\n                        getFont$1(['font', 'DaunPenh', 'Khmr']),\n                        getFont$1(['font', 'Tunga', 'Knda']),\n                        getFont$1(['font', 'Raavi', 'Guru']),\n                        getFont$1(['font', 'Euphemia', 'Cans']),\n                        getFont$1(['font', 'Plantagenet Cherokee', 'Cher']),\n                        getFont$1(['font', 'Microsoft Yi Baiti', 'Yiii']),\n                        getFont$1(['font', 'Microsoft Himalaya', 'Tibt']),\n                        getFont$1(['font', 'MV Boli', 'Thaa']),\n                        getFont$1(['font', 'Mangal', 'Deva']),\n                        getFont$1(['font', 'Gautami', 'Telu']),\n                        getFont$1(['font', 'Latha', 'Taml']),\n                        getFont$1(['font', 'Estrangelo Edessa', 'Syrc']),\n                        getFont$1(['font', 'Kalinga', 'Orya']),\n                        getFont$1(['font', 'Kartika', 'Mlym']),\n                        getFont$1(['font', 'DokChampa', 'Laoo']),\n                        getFont$1(['font', 'Iskoola Pota', 'Sinh']),\n                        getFont$1(['font', 'Mongolian Baiti', 'Mong']),\n                        getFont$1(['font', 'Arial', 'Viet']),\n                        getFont$1(['font', 'Microsoft Uighur', 'Uigh']),\n                        getFont$1(['font', 'Sylfaen', 'Geor']),\n                        getFont$1(['font', 'Arial', 'Armn']),\n                        getFont$1(['font', 'Leelawadee UI', 'Bugi']),\n                        getFont$1(['font', 'Microsoft JhengHei', 'Bopo']),\n                        getFont$1(['font', 'Javanese Text', 'Java']),\n                        getFont$1(['font', 'Segoe UI', 'Lisu']),\n                        getFont$1(['font', 'Myanmar Text', 'Mymr']),\n                        getFont$1(['font', 'Ebrima', 'Nkoo']),\n                        getFont$1(['font', 'Nirmala UI', 'Olck']),\n                        getFont$1(['font', 'Ebrima', 'Osma']),\n                        getFont$1(['font', 'Phagspa', 'Phag']),\n                        getFont$1(['font', 'Estrangelo Edessa', 'Syrn']),\n                        getFont$1(['font', 'Estrangelo Edessa', 'Syrj']),\n                        getFont$1(['font', 'Estrangelo Edessa', 'Syre']),\n                        getFont$1(['font', 'Nirmala UI', 'Sora']),\n                        getFont$1(['font', 'Microsoft Tai Le', 'Tale']),\n                        getFont$1(['font', 'Microsoft New Tai Lue', 'Talu']),\n                        getFont$1(['font', 'Ebrima', 'Tfng'])\n                    ]\n                }]\n        };\n    }\n};\n\nvar __read$13 = (undefined && undefined.__read) || function (o, n) {\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n    if (!m) return o;\n    var i = m.call(o), r, ar = [], e;\n    try {\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n    }\n    catch (error) { e = { error: error }; }\n    finally {\n        try {\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\n        }\n        finally { if (e) throw e.error; }\n    }\n    return ar;\n};\nvar getPropertyVal = function (name, val, children) { return ({\n    name: \"a:\" + name,\n    properties: {\n        rawMap: {\n            val: val\n        }\n    },\n    children: children\n}); };\nvar getGs = function (props) {\n    var _a = __read$13(props, 6), pos = _a[0], schemeColor = _a[1], satMod = _a[2], lumMod = _a[3], tint = _a[4], shade = _a[5];\n    var children = [];\n    children.push(getPropertyVal('satMod', satMod));\n    if (lumMod) {\n        children.push(getPropertyVal('lumMod', lumMod));\n    }\n    if (tint) {\n        children.push(getPropertyVal('tint', tint));\n    }\n    if (shade) {\n        children.push(getPropertyVal('shade', shade));\n    }\n    return {\n        name: 'a:gs',\n        properties: {\n            rawMap: {\n                pos: pos\n            }\n        },\n        children: [{\n                name: 'a:schemeClr',\n                properties: {\n                    rawMap: {\n                        val: schemeColor\n                    }\n                },\n                children: children\n            }]\n    };\n};\nvar getSolidFill = function (val, children) { return ({\n    name: 'a:solidFill',\n    children: [getPropertyVal('schemeClr', val, children)]\n}); };\nvar getGradFill = function (props) {\n    var _a = __read$13(props, 5), rotWithShape = _a[0], gs1 = _a[1], gs2 = _a[2], gs3 = _a[3], lin = _a[4];\n    var _b = __read$13(lin, 2), ang = _b[0], scaled = _b[1];\n    return {\n        name: 'a:gradFill',\n        properties: {\n            rawMap: {\n                rotWithShape: rotWithShape\n            }\n        },\n        children: [{\n                name: 'a:gsLst',\n                children: [\n                    getGs(gs1),\n                    getGs(gs2),\n                    getGs(gs3)\n                ]\n            }, {\n                name: 'a:lin',\n                properties: {\n                    rawMap: {\n                        ang: ang,\n                        scaled: scaled\n                    }\n                }\n            }]\n    };\n};\nvar getLine = function (props) {\n    var _a = __read$13(props, 4), w = _a[0], cap = _a[1], cmpd = _a[2], algn = _a[3];\n    return {\n        name: 'a:ln',\n        properties: {\n            rawMap: { w: w, cap: cap, cmpd: cmpd, algn: algn }\n        },\n        children: [\n            getSolidFill('phClr'),\n            getPropertyVal('prstDash', 'solid'),\n            {\n                name: 'a:miter',\n                properties: {\n                    rawMap: {\n                        lim: '800000'\n                    }\n                }\n            }\n        ]\n    };\n};\nvar getEffectStyle = function (shadow) {\n    var children = [];\n    if (shadow) {\n        var _a = __read$13(shadow, 5), blurRad = _a[0], dist = _a[1], dir = _a[2], algn = _a[3], rotWithShape = _a[4];\n        children.push({\n            name: 'a:outerShdw',\n            properties: {\n                rawMap: { blurRad: blurRad, dist: dist, dir: dir, algn: algn, rotWithShape: rotWithShape }\n            },\n            children: [\n                getPropertyVal('srgbClr', '000000', [getPropertyVal('alpha', '63000')])\n            ]\n        });\n    }\n    return {\n        name: 'a:effectStyle',\n        children: [Object.assign({}, {\n                name: 'a:effectLst'\n            }, children.length ? { children: children } : {})]\n    };\n};\nvar getFillStyleList = function () { return ({\n    name: 'a:fillStyleLst',\n    children: [\n        getSolidFill('phClr'),\n        getGradFill([\n            '1',\n            ['0', 'phClr', '105000', '110000', '67000'],\n            ['50000', 'phClr', '103000', '105000', '73000'],\n            ['100000', 'phClr', '109000', '105000', '81000'],\n            ['5400000', '0']\n        ]),\n        getGradFill([\n            '1',\n            ['0', 'phClr', '103000', '102000', '94000'],\n            ['50000', 'phClr', '110000', '100000', undefined, '100000'],\n            ['100000', 'phClr', '120000', '99000', undefined, '78000'],\n            ['5400000', '0']\n        ])\n    ]\n}); };\nvar getLineStyleList = function () { return ({\n    name: 'a:lnStyleLst',\n    children: [\n        getLine(['6350', 'flat', 'sng', 'ctr']),\n        getLine(['12700', 'flat', 'sng', 'ctr']),\n        getLine(['19050', 'flat', 'sng', 'ctr'])\n    ]\n}); };\nvar getEffectStyleList = function () { return ({\n    name: 'a:effectStyleLst',\n    children: [\n        getEffectStyle(),\n        getEffectStyle(),\n        getEffectStyle(['57150', '19050', '5400000', 'ctr', '0'])\n    ]\n}); };\nvar getBgFillStyleList = function () { return ({\n    name: 'a:bgFillStyleLst',\n    children: [\n        getSolidFill('phClr'),\n        getSolidFill('phClr', [\n            getPropertyVal('tint', '95000'),\n            getPropertyVal('satMod', '170000'),\n        ]),\n        getGradFill([\n            '1',\n            ['0', 'phClr', '150000', '102000', '93000', '98000'],\n            ['50000', 'phClr', '130000', '103000', '98000', '90000'],\n            ['100000', 'phClr', '120000', undefined, undefined, '63000'],\n            ['5400000', '0']\n        ])\n    ]\n}); };\nvar formatScheme = {\n    getTemplate: function () {\n        return {\n            name: \"a:fmtScheme\",\n            properties: {\n                rawMap: {\n                    name: \"Office\"\n                }\n            },\n            children: [\n                getFillStyleList(),\n                getLineStyleList(),\n                getEffectStyleList(),\n                getBgFillStyleList()\n            ]\n        };\n    }\n};\n\nvar themeElements = {\n    getTemplate: function () {\n        return {\n            name: \"a:themeElements\",\n            children: [\n                colorScheme.getTemplate(),\n                fontScheme.getTemplate(),\n                formatScheme.getTemplate()\n            ]\n        };\n    }\n};\n\nvar officeTheme = {\n    getTemplate: function () {\n        return {\n            name: \"a:theme\",\n            properties: {\n                prefixedAttributes: [{\n                        prefix: \"xmlns:\",\n                        map: {\n                            a: \"http://schemas.openxmlformats.org/drawingml/2006/main\"\n                        },\n                    }],\n                rawMap: {\n                    name: \"Office Theme\"\n                }\n            },\n            children: [\n                themeElements.getTemplate(),\n                {\n                    name: 'a:objectDefaults'\n                },\n                {\n                    name: 'a:extraClrSchemeLst'\n                }\n            ]\n        };\n    }\n};\n\nvar buildSharedString = function (strMap) {\n    var ret = [];\n    strMap.forEach(function (val, key) {\n        var textNode = key.toString();\n        var child = {\n            name: 't',\n            textNode: _.utf8_encode(_.escapeString(textNode))\n        };\n        // if we have leading or trailing spaces, instruct Excel not to trim them\n        var preserveSpaces = textNode.trim().length !== textNode.length;\n        if (preserveSpaces) {\n            child.properties = {\n                rawMap: {\n                    \"xml:space\": \"preserve\"\n                }\n            };\n        }\n        ret.push({\n            name: 'si',\n            children: [child]\n        });\n    });\n    return ret;\n};\nvar sharedStrings = {\n    getTemplate: function (strings) {\n        return {\n            name: \"sst\",\n            properties: {\n                rawMap: {\n                    xmlns: 'http://schemas.openxmlformats.org/spreadsheetml/2006/main',\n                    count: strings.size,\n                    uniqueCount: strings.size\n                }\n            },\n            children: buildSharedString(strings)\n        };\n    }\n};\n\nvar numberFormatFactory = {\n    getTemplate: function (numberFormat) {\n        var formatCode = numberFormat.formatCode, numFmtId = numberFormat.numFmtId;\n        return {\n            name: \"numFmt\",\n            properties: {\n                rawMap: {\n                    formatCode: formatCode,\n                    numFmtId: numFmtId\n                }\n            }\n        };\n    }\n};\n\nvar numberFormatsFactory = {\n    getTemplate: function (numberFormats) {\n        return {\n            name: \"numFmts\",\n            properties: {\n                rawMap: {\n                    count: numberFormats.length\n                }\n            },\n            children: numberFormats.map(function (numberFormat) { return numberFormatFactory.getTemplate(numberFormat); })\n        };\n    }\n};\n\nvar fontFactory = {\n    getTemplate: function (font) {\n        var size = font.size, colorTheme = font.colorTheme, _a = font.color, color = _a === void 0 ? 'FF000000' : _a, _b = font.fontName, fontName = _b === void 0 ? 'Calibri' : _b, family = font.family, scheme = font.scheme, italic = font.italic, bold = font.bold, strikeThrough = font.strikeThrough, outline = font.outline, shadow = font.shadow, underline = font.underline, verticalAlign = font.verticalAlign;\n        var children = [\n            { name: 'sz', properties: { rawMap: { val: size } } },\n            { name: 'color', properties: { rawMap: { theme: colorTheme, rgb: color } } },\n            { name: 'name', properties: { rawMap: { val: fontName } } }\n        ];\n        if (family) {\n            children.push({ name: 'family', properties: { rawMap: { val: family } } });\n        }\n        if (scheme) {\n            children.push({ name: 'scheme', properties: { rawMap: { val: scheme } } });\n        }\n        if (italic) {\n            children.push({ name: 'i' });\n        }\n        if (bold) {\n            children.push({ name: 'b' });\n        }\n        if (strikeThrough) {\n            children.push({ name: 'strike' });\n        }\n        if (outline) {\n            children.push({ name: 'outline' });\n        }\n        if (shadow) {\n            children.push({ name: 'shadow' });\n        }\n        if (underline) {\n            children.push({ name: 'u', properties: { rawMap: { val: underline } } });\n        }\n        if (verticalAlign) {\n            children.push({ name: 'vertAlign', properties: { rawMap: { val: verticalAlign } } });\n        }\n        return { name: \"font\", children: children };\n    }\n};\n\nvar fontsFactory = {\n    getTemplate: function (fonts) {\n        return {\n            name: \"fonts\",\n            properties: {\n                rawMap: {\n                    count: fonts.length\n                }\n            },\n            children: fonts.map(function (font) { return fontFactory.getTemplate(font); })\n        };\n    }\n};\n\nvar fillFactory = {\n    getTemplate: function (fill) {\n        var patternType = fill.patternType, fgTheme = fill.fgTheme, fgTint = fill.fgTint, fgRgb = fill.fgRgb, bgRgb = fill.bgRgb, bgIndexed = fill.bgIndexed;\n        var pf = {\n            name: 'patternFill',\n            properties: {\n                rawMap: {\n                    patternType: patternType\n                }\n            }\n        };\n        if (fgTheme || fgTint || fgRgb) {\n            pf.children = [{\n                    name: 'fgColor',\n                    properties: {\n                        rawMap: {\n                            theme: fgTheme,\n                            tint: fgTint,\n                            rgb: fgRgb\n                        }\n                    }\n                }];\n        }\n        if (bgIndexed || bgRgb) {\n            if (!pf.children) {\n                pf.children = [];\n            }\n            pf.children.push({\n                name: 'bgColor',\n                properties: {\n                    rawMap: {\n                        indexed: bgIndexed,\n                        rgb: bgRgb\n                    }\n                }\n            });\n        }\n        return {\n            name: \"fill\",\n            children: [pf]\n        };\n    }\n};\n\nvar fillsFactory = {\n    getTemplate: function (fills) {\n        return {\n            name: \"fills\",\n            properties: {\n                rawMap: {\n                    count: fills.length\n                }\n            },\n            children: fills.map(function (fill) { return fillFactory.getTemplate(fill); })\n        };\n    }\n};\n\nvar getWeightName = function (value) {\n    switch (value) {\n        case 1: return 'thin';\n        case 2: return 'medium';\n        case 3: return 'thick';\n        default: return 'hair';\n    }\n};\nvar mappedBorderNames = {\n    None: 'None',\n    Dot: 'Dotted',\n    Dash: 'Dashed',\n    Double: 'Double',\n    DashDot: 'DashDot',\n    DashDotDot: 'DashDotDot',\n    SlantDashDot: 'SlantDashDot'\n};\nvar mediumBorders = ['Dashed', 'DashDot', 'DashDotDot'];\nvar colorMap = {\n    None: 'none',\n    Solid: 'solid',\n    Gray50: 'mediumGray',\n    Gray75: 'darkGray',\n    Gray25: 'lightGray',\n    HorzStripe: 'darkHorizontal',\n    VertStripe: 'darkVertical',\n    ReverseDiagStripe: 'darkDown',\n    DiagStripe: 'darkUp',\n    DiagCross: 'darkGrid',\n    ThickDiagCross: 'darkTrellis',\n    ThinHorzStripe: 'lightHorizontal',\n    ThinVertStripe: 'lightVertical',\n    ThinReverseDiagStripe: 'lightDown',\n    ThinDiagStripe: 'lightUp',\n    ThinHorzCross: 'lightGrid',\n    ThinDiagCross: 'lightTrellis',\n    Gray125: 'gray125',\n    Gray0625: 'gray0625'\n};\nvar horizontalAlignmentMap = {\n    Automatic: 'general',\n    Left: 'left',\n    Center: 'center',\n    Right: 'right',\n    Fill: 'fill',\n    Justify: 'justify',\n    CenterAcrossSelection: 'centerContinuous',\n    Distributed: 'distributed',\n    JustifyDistributed: 'justify'\n};\nvar verticalAlignmentMap = {\n    Automatic: undefined,\n    Top: 'top',\n    Bottom: 'bottom',\n    Center: 'center',\n    Justify: 'justify',\n    Distributed: 'distributed',\n    JustifyDistributed: 'justify'\n};\nvar convertLegacyPattern = function (name) {\n    if (!name) {\n        return 'none';\n    }\n    return colorMap[name] || name;\n};\nvar convertLegacyColor = function (color) {\n    if (color == undefined) {\n        return color;\n    }\n    if (color.charAt(0) === '#') {\n        color = color.substr(1);\n    }\n    return color.length === 6 ? 'FF' + color : color;\n};\nvar convertLegacyBorder = function (type, weight) {\n    if (!type) {\n        return 'thin';\n    }\n    // Legacy Types are: None, Continuous, Dash, Dot, DashDot, DashDotDot, SlantDashDot, and Double\n    // Weight represents: 0—Hairline, 1—Thin , 2—Medium, 3—Thick\n    // New types: none, thin, medium, dashed, dotted, thick, double, hair, mediumDashed, dashDot, mediumDashDot,\n    // dashDotDot, mediumDashDotDot, slantDashDot\n    var namedWeight = getWeightName(weight);\n    var mappedName = mappedBorderNames[type];\n    if (type === 'Continuous') {\n        return namedWeight;\n    }\n    if (namedWeight === 'medium' && mediumBorders.indexOf(mappedName) !== -1) {\n        return \"medium\" + mappedName;\n    }\n    return mappedName.charAt(0).toLowerCase() + mappedName.substr(1);\n};\nvar convertLegacyHorizontalAlignment = function (alignment) {\n    return horizontalAlignmentMap[alignment] || 'general';\n};\nvar convertLegacyVerticalAlignment = function (alignment) {\n    return verticalAlignmentMap[alignment] || undefined;\n};\n\nvar getBorderColor = function (color) {\n    return {\n        name: 'color',\n        properties: {\n            rawMap: {\n                rgb: convertLegacyColor(color || '#000000')\n            }\n        }\n    };\n};\nvar borderFactory$1 = {\n    getTemplate: function (border) {\n        var left = border.left, right = border.right, top = border.top, bottom = border.bottom, diagonal = border.diagonal;\n        var leftChildren = left ? [getBorderColor(left.color)] : undefined;\n        var rightChildren = right ? [getBorderColor(right.color)] : undefined;\n        var topChildren = top ? [getBorderColor(top.color)] : undefined;\n        var bottomChildren = bottom ? [getBorderColor(bottom.color)] : undefined;\n        var diagonalChildren = diagonal ? [getBorderColor(diagonal.color)] : undefined;\n        return {\n            name: 'border',\n            children: [{\n                    name: 'left',\n                    properties: { rawMap: { style: left && left.style } },\n                    children: leftChildren\n                }, {\n                    name: 'right',\n                    properties: { rawMap: { style: right && right.style } },\n                    children: rightChildren\n                }, {\n                    name: 'top',\n                    properties: { rawMap: { style: top && top.style } },\n                    children: topChildren\n                }, {\n                    name: 'bottom',\n                    properties: { rawMap: { style: bottom && bottom.style } },\n                    children: bottomChildren\n                }, {\n                    name: 'diagonal',\n                    properties: { rawMap: { style: diagonal && diagonal.style } },\n                    children: diagonalChildren\n                }]\n        };\n    }\n};\n\nvar bordersFactory = {\n    getTemplate: function (borders) {\n        return {\n            name: \"borders\",\n            properties: {\n                rawMap: {\n                    count: borders.length\n                }\n            },\n            children: borders.map(function (border) { return borderFactory$1.getTemplate(border); })\n        };\n    }\n};\n\nvar getReadingOrderId = function (readingOrder) {\n    var order = ['Context', 'LeftToRight', 'RightToLeft'];\n    var pos = order.indexOf(readingOrder);\n    return Math.max(pos, 0);\n};\nvar alignmentFactory = {\n    getTemplate: function (alignment) {\n        var horizontal = alignment.horizontal, indent = alignment.indent, readingOrder = alignment.readingOrder, rotate = alignment.rotate, shrinkToFit = alignment.shrinkToFit, vertical = alignment.vertical, wrapText = alignment.wrapText;\n        return {\n            name: 'alignment',\n            properties: {\n                rawMap: {\n                    horizontal: horizontal && convertLegacyHorizontalAlignment(horizontal),\n                    indent: indent,\n                    readingOrder: readingOrder && getReadingOrderId(readingOrder),\n                    textRotation: rotate,\n                    shrinkToFit: shrinkToFit,\n                    vertical: vertical && convertLegacyVerticalAlignment(vertical),\n                    wrapText: wrapText\n                }\n            }\n        };\n    }\n};\n\nvar protectionFactory = {\n    getTemplate: function (protection) {\n        var locked = protection.protected === false ? 0 : 1;\n        var hidden = protection.hideFormula === true ? 1 : 0;\n        return {\n            name: 'protection',\n            properties: {\n                rawMap: {\n                    hidden: hidden,\n                    locked: locked\n                }\n            }\n        };\n    }\n};\n\nvar xfFactory = {\n    getTemplate: function (xf) {\n        var alignment = xf.alignment, borderId = xf.borderId, fillId = xf.fillId, fontId = xf.fontId, numFmtId = xf.numFmtId, protection = xf.protection, xfId = xf.xfId;\n        var children = [];\n        if (alignment) {\n            children.push(alignmentFactory.getTemplate(alignment));\n        }\n        if (protection) {\n            children.push(protectionFactory.getTemplate(protection));\n        }\n        return {\n            name: \"xf\",\n            properties: {\n                rawMap: {\n                    applyAlignment: alignment ? 1 : undefined,\n                    applyProtection: protection ? 1 : undefined,\n                    applyBorder: borderId ? 1 : undefined,\n                    applyFill: fillId ? 1 : undefined,\n                    borderId: borderId,\n                    fillId: fillId,\n                    applyFont: fontId ? 1 : undefined,\n                    fontId: fontId,\n                    applyNumberFormat: numFmtId ? 1 : undefined,\n                    numFmtId: numFmtId,\n                    xfId: xfId\n                }\n            },\n            children: children.length ? children : undefined\n        };\n    }\n};\n\nvar cellStylesXfsFactory = {\n    getTemplate: function (xfs) {\n        return {\n            name: \"cellStyleXfs\",\n            properties: {\n                rawMap: {\n                    count: xfs.length\n                }\n            },\n            children: xfs.map(function (xf) { return xfFactory.getTemplate(xf); })\n        };\n    }\n};\n\nvar cellXfsFactory = {\n    getTemplate: function (xfs) {\n        return {\n            name: \"cellXfs\",\n            properties: {\n                rawMap: {\n                    count: xfs.length\n                }\n            },\n            children: xfs.map(function (xf) { return xfFactory.getTemplate(xf); })\n        };\n    }\n};\n\nvar borderFactory = {\n    getTemplate: function (cellStyle) {\n        var builtinId = cellStyle.builtinId, name = cellStyle.name, xfId = cellStyle.xfId;\n        return {\n            name: \"cellStyle\",\n            properties: {\n                rawMap: {\n                    builtinId: builtinId,\n                    name: name,\n                    xfId: xfId\n                }\n            }\n        };\n    }\n};\n\nvar cellStylesFactory = {\n    getTemplate: function (cellStyles) {\n        return {\n            name: \"cellStyles\",\n            properties: {\n                rawMap: {\n                    count: cellStyles.length\n                }\n            },\n            children: cellStyles.map(function (cellStyle) { return borderFactory.getTemplate(cellStyle); })\n        };\n    }\n};\n\nvar __assign$L = (undefined && undefined.__assign) || function () {\n    __assign$L = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign$L.apply(this, arguments);\n};\nvar stylesMap;\nvar registeredNumberFmts;\nvar registeredFonts;\nvar registeredFills;\nvar registeredBorders;\nvar registeredCellStyleXfs;\nvar registeredCellXfs;\nvar registeredCellStyles;\nvar currentSheet;\nvar getStyleName = function (name, currentSheet) {\n    if (name.indexOf('mixedStyle') !== -1 && currentSheet > 1) {\n        name += \"_\" + currentSheet;\n    }\n    return name;\n};\nvar resetStylesheetValues = function () {\n    stylesMap = { base: 0 };\n    registeredNumberFmts = [];\n    registeredFonts = [{ fontName: 'Calibri', colorTheme: '1', family: '2', scheme: 'minor' }];\n    registeredFills = [{ patternType: 'none', }, { patternType: 'gray125' }];\n    registeredBorders = [{ left: undefined, right: undefined, top: undefined, bottom: undefined, diagonal: undefined }];\n    registeredCellStyleXfs = [{ borderId: 0, fillId: 0, fontId: 0, numFmtId: 0 }];\n    registeredCellXfs = [{ borderId: 0, fillId: 0, fontId: 0, numFmtId: 0, xfId: 0 }];\n    registeredCellStyles = [{ builtinId: 0, name: 'Normal', xfId: 0 }];\n};\nvar registerFill = function (fill) {\n    var convertedPattern = convertLegacyPattern(fill.pattern);\n    var convertedFillColor = convertLegacyColor(fill.color);\n    var convertedPatternColor = convertLegacyColor(fill.patternColor);\n    var pos = registeredFills.findIndex(function (currentFill) {\n        var patternType = currentFill.patternType, fgRgb = currentFill.fgRgb, bgRgb = currentFill.bgRgb;\n        if (patternType != convertedPattern ||\n            fgRgb != convertedFillColor ||\n            bgRgb != convertedPatternColor) {\n            return false;\n        }\n        return true;\n    });\n    if (pos === -1) {\n        pos = registeredFills.length;\n        registeredFills.push({ patternType: convertedPattern, fgRgb: convertedFillColor, bgRgb: convertedPatternColor });\n    }\n    return pos;\n};\nvar registerNumberFmt = function (format) {\n    format = _.utf8_encode(format);\n    if (numberFormatMap[format]) {\n        return numberFormatMap[format];\n    }\n    var pos = registeredNumberFmts.findIndex(function (currentFormat) { return currentFormat.formatCode === format; });\n    if (pos === -1) {\n        pos = registeredNumberFmts.length + 164;\n        registeredNumberFmts.push({ formatCode: format, numFmtId: pos });\n    }\n    else {\n        pos = registeredNumberFmts[pos].numFmtId;\n    }\n    return pos;\n};\nvar registerBorders = function (borders) {\n    var borderBottom = borders.borderBottom, borderTop = borders.borderTop, borderLeft = borders.borderLeft, borderRight = borders.borderRight;\n    var bottomStyle;\n    var topStyle;\n    var leftStyle;\n    var rightStyle;\n    var bottomColor;\n    var topColor;\n    var leftColor;\n    var rightColor;\n    if (borderLeft) {\n        leftStyle = convertLegacyBorder(borderLeft.lineStyle, borderLeft.weight);\n        leftColor = convertLegacyColor(borderLeft.color);\n    }\n    if (borderRight) {\n        rightStyle = convertLegacyBorder(borderRight.lineStyle, borderRight.weight);\n        rightColor = convertLegacyColor(borderRight.color);\n    }\n    if (borderBottom) {\n        bottomStyle = convertLegacyBorder(borderBottom.lineStyle, borderBottom.weight);\n        bottomColor = convertLegacyColor(borderBottom.color);\n    }\n    if (borderTop) {\n        topStyle = convertLegacyBorder(borderTop.lineStyle, borderTop.weight);\n        topColor = convertLegacyColor(borderTop.color);\n    }\n    var pos = registeredBorders.findIndex(function (currentBorder) {\n        var left = currentBorder.left, right = currentBorder.right, top = currentBorder.top, bottom = currentBorder.bottom;\n        if (!left && (leftStyle || leftColor)) {\n            return false;\n        }\n        if (!right && (rightStyle || rightColor)) {\n            return false;\n        }\n        if (!top && (topStyle || topColor)) {\n            return false;\n        }\n        if (!bottom && (bottomStyle || bottomColor)) {\n            return false;\n        }\n        var _a = left || {}, clS = _a.style, clC = _a.color;\n        var _b = right || {}, crS = _b.style, crC = _b.color;\n        var _c = top || {}, ctS = _c.style, ctC = _c.color;\n        var _d = bottom || {}, cbS = _d.style, cbC = _d.color;\n        if (clS != leftStyle || clC != leftColor) {\n            return false;\n        }\n        if (crS != rightStyle || crC != rightColor) {\n            return false;\n        }\n        if (ctS != topStyle || ctC != topColor) {\n            return false;\n        }\n        if (cbS != bottomStyle || cbC != bottomColor) {\n            return false;\n        }\n        return true;\n    });\n    if (pos === -1) {\n        pos = registeredBorders.length;\n        registeredBorders.push({\n            left: {\n                style: leftStyle, color: leftColor\n            },\n            right: {\n                style: rightStyle, color: rightColor\n            },\n            top: {\n                style: topStyle, color: topColor\n            },\n            bottom: {\n                style: bottomStyle, color: bottomColor\n            },\n            diagonal: {\n                style: undefined,\n                color: undefined\n            }\n        });\n    }\n    return pos;\n};\nvar registerFont = function (font) {\n    var _a = font.fontName, name = _a === void 0 ? 'Calibri' : _a, color = font.color, size = font.size, bold = font.bold, italic = font.italic, outline = font.outline, shadow = font.shadow, strikeThrough = font.strikeThrough, underline = font.underline, family = font.family, verticalAlign = font.verticalAlign;\n    var utf8Name = name ? _.utf8_encode(name) : name;\n    var convertedColor = convertLegacyColor(color);\n    var familyId = getFontFamilyId(family);\n    var convertedUnderline = underline ? underline.toLocaleLowerCase() : undefined;\n    var convertedVerticalAlign = verticalAlign ? verticalAlign.toLocaleLowerCase() : undefined;\n    var pos = registeredFonts.findIndex(function (currentFont) {\n        if (currentFont.fontName != utf8Name ||\n            currentFont.color != convertedColor ||\n            currentFont.size != size ||\n            currentFont.bold != bold ||\n            currentFont.italic != italic ||\n            currentFont.outline != outline ||\n            currentFont.shadow != shadow ||\n            currentFont.strikeThrough != strikeThrough ||\n            currentFont.underline != convertedUnderline ||\n            currentFont.verticalAlign != convertedVerticalAlign ||\n            // @ts-ignore\n            currentFont.family != familyId) {\n            return false;\n        }\n        return true;\n    });\n    if (pos === -1) {\n        pos = registeredFonts.length;\n        registeredFonts.push({\n            fontName: utf8Name,\n            color: convertedColor,\n            size: size,\n            bold: bold,\n            italic: italic,\n            outline: outline,\n            shadow: shadow,\n            strikeThrough: strikeThrough,\n            underline: convertedUnderline,\n            verticalAlign: convertedVerticalAlign,\n            family: familyId != null ? familyId.toString() : undefined\n        });\n    }\n    return pos;\n};\nvar registerStyle = function (config) {\n    var alignment = config.alignment, borders = config.borders, font = config.font, interior = config.interior, numberFormat = config.numberFormat, protection = config.protection;\n    var id = config.id;\n    var currentFill = 0;\n    var currentBorder = 0;\n    var currentFont = 0;\n    var currentNumberFmt = 0;\n    if (!id) {\n        return;\n    }\n    id = getStyleName(id, currentSheet);\n    if (stylesMap[id] != undefined) {\n        return;\n    }\n    if (interior) {\n        currentFill = registerFill(interior);\n    }\n    if (borders) {\n        currentBorder = registerBorders(borders);\n    }\n    if (font) {\n        currentFont = registerFont(font);\n    }\n    if (numberFormat) {\n        currentNumberFmt = registerNumberFmt(numberFormat.format);\n    }\n    stylesMap[id] = registeredCellXfs.length;\n    registeredCellXfs.push({\n        alignment: alignment,\n        borderId: currentBorder || 0,\n        fillId: currentFill || 0,\n        fontId: currentFont || 0,\n        numFmtId: currentNumberFmt || 0,\n        protection: protection,\n        xfId: 0\n    });\n};\nvar stylesheetFactory = {\n    getTemplate: function (defaultFontSize) {\n        var numberFormats = numberFormatsFactory.getTemplate(registeredNumberFmts);\n        var fonts = fontsFactory.getTemplate(registeredFonts.map(function (font) { return (__assign$L(__assign$L({}, font), { size: font.size != null ? font.size : defaultFontSize })); }));\n        var fills = fillsFactory.getTemplate(registeredFills);\n        var borders = bordersFactory.getTemplate(registeredBorders);\n        var cellStylesXfs = cellStylesXfsFactory.getTemplate(registeredCellStyleXfs);\n        var cellXfs = cellXfsFactory.getTemplate(registeredCellXfs);\n        var cellStyles = cellStylesFactory.getTemplate(registeredCellStyles);\n        resetStylesheetValues();\n        return {\n            name: 'styleSheet',\n            properties: {\n                rawMap: {\n                    'mc:Ignorable': 'x14ac x16r2 xr',\n                    'xmlns': 'http://schemas.openxmlformats.org/spreadsheetml/2006/main',\n                    'xmlns:mc': 'http://schemas.openxmlformats.org/markup-compatibility/2006',\n                    'xmlns:x14ac': 'http://schemas.microsoft.com/office/spreadsheetml/2009/9/ac',\n                    'xmlns:x16r2': 'http://schemas.microsoft.com/office/spreadsheetml/2015/02/main',\n                    'xmlns:xr': 'http://schemas.microsoft.com/office/spreadsheetml/2014/revision'\n                }\n            },\n            children: [\n                numberFormats,\n                fonts,\n                fills,\n                borders,\n                cellStylesXfs,\n                cellXfs,\n                cellStyles,\n                {\n                    name: 'tableStyles',\n                    properties: {\n                        rawMap: {\n                            count: 0,\n                            defaultPivotStyle: 'PivotStyleLight16',\n                            defaultTableStyle: 'TableStyleMedium2'\n                        }\n                    }\n                }\n            ]\n        };\n    }\n};\nvar getStyleId = function (name, currentSheet) {\n    return stylesMap[getStyleName(name, currentSheet)] || 0;\n};\nvar registerStyles = function (styles, _currentSheet) {\n    currentSheet = _currentSheet;\n    if (currentSheet === 1) {\n        resetStylesheetValues();\n    }\n    styles.forEach(registerStyle);\n};\n\nvar sheetFactory = {\n    getTemplate: function (name, idx) {\n        var sheetId = (idx + 1).toString();\n        return {\n            name: \"sheet\",\n            properties: {\n                rawMap: {\n                    \"name\": name,\n                    \"sheetId\": sheetId,\n                    \"r:id\": \"rId\" + sheetId\n                }\n            }\n        };\n    }\n};\n\nvar sheetsFactory = {\n    getTemplate: function (names) {\n        return {\n            name: \"sheets\",\n            children: names.map(function (sheet, idx) { return sheetFactory.getTemplate(sheet, idx); })\n        };\n    }\n};\n\nvar workbookFactory = {\n    getTemplate: function (names) {\n        return {\n            name: \"workbook\",\n            properties: {\n                prefixedAttributes: [{\n                        prefix: \"xmlns:\",\n                        map: {\n                            r: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships\"\n                        },\n                    }],\n                rawMap: {\n                    xmlns: \"http://schemas.openxmlformats.org/spreadsheetml/2006/main\"\n                }\n            },\n            children: [sheetsFactory.getTemplate(names)]\n        };\n    }\n};\n\n// https://docs.microsoft.com/en-us/office/troubleshoot/excel/determine-column-widths\nvar getExcelCellWidth = function (width) { return Math.ceil((width - 12) / 7 + 1); };\nvar columnFactory = {\n    getTemplate: function (config) {\n        var min = config.min, max = config.max, outlineLevel = config.outlineLevel, s = config.s, width = config.width, hidden = config.hidden, bestFit = config.bestFit;\n        var excelWidth = 1;\n        var customWidth = '0';\n        if (width > 1) {\n            excelWidth = getExcelCellWidth(width);\n            customWidth = '1';\n        }\n        return {\n            name: 'col',\n            properties: {\n                rawMap: {\n                    min: min,\n                    max: max,\n                    outlineLevel: outlineLevel != null ? outlineLevel : undefined,\n                    width: excelWidth,\n                    style: s,\n                    hidden: hidden ? '1' : '0',\n                    bestFit: bestFit ? '1' : '0',\n                    customWidth: customWidth\n                }\n            }\n        };\n    }\n};\n\nvar convertLegacyType = function (type) {\n    var t = type.charAt(0).toLowerCase();\n    return t === 's' ? 'inlineStr' : t;\n};\nvar cellFactory = {\n    getTemplate: function (config, idx, currentSheet) {\n        var ref = config.ref, data = config.data, styleId = config.styleId;\n        var _a = data || { type: 'empty', value: null }, type = _a.type, value = _a.value;\n        var convertedType = type;\n        if (type === 'f') {\n            convertedType = 'str';\n        }\n        else if (type.charAt(0) === type.charAt(0).toUpperCase()) {\n            convertedType = convertLegacyType(type);\n        }\n        var obj = {\n            name: 'c',\n            properties: {\n                rawMap: {\n                    r: ref,\n                    t: convertedType === 'empty' ? undefined : convertedType,\n                    s: styleId ? getStyleId(styleId, currentSheet) : undefined\n                }\n            }\n        };\n        if (convertedType === 'empty') {\n            return obj;\n        }\n        var children;\n        if (convertedType === 'str' && type === 'f') {\n            children = [{\n                    name: 'f',\n                    textNode: _.escapeString(_.utf8_encode(value))\n                }];\n        }\n        else if (convertedType === 'inlineStr') {\n            children = [{\n                    name: 'is',\n                    children: [{\n                            name: 't',\n                            textNode: _.escapeString(_.utf8_encode(value))\n                        }]\n                }];\n        }\n        else {\n            children = [{\n                    name: 'v',\n                    textNode: value\n                }];\n        }\n        return Object.assign({}, obj, { children: children });\n    }\n};\n\nvar __read$12 = (undefined && undefined.__read) || function (o, n) {\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n    if (!m) return o;\n    var i = m.call(o), r, ar = [], e;\n    try {\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n    }\n    catch (error) { e = { error: error }; }\n    finally {\n        try {\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\n        }\n        finally { if (e) throw e.error; }\n    }\n    return ar;\n};\nvar __spread$D = (undefined && undefined.__spread) || function () {\n    for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read$12(arguments[i]));\n    return ar;\n};\nvar addEmptyCells = function (cells, rowIdx) {\n    var mergeMap = [];\n    var posCounter = 0;\n    for (var i = 0; i < cells.length; i++) {\n        var cell = cells[i];\n        if (cell.mergeAcross) {\n            mergeMap.push({\n                pos: i,\n                excelPos: posCounter\n            });\n            posCounter += cell.mergeAcross;\n        }\n        posCounter++;\n    }\n    if (mergeMap.length) {\n        for (var i = mergeMap.length - 1; i >= 0; i--) {\n            var mergedCells = [];\n            var cell = cells[mergeMap[i].pos];\n            for (var j = 1; j <= cell.mergeAcross; j++) {\n                mergedCells.push({\n                    ref: \"\" + getExcelColumnName(mergeMap[i].excelPos + 1 + j) + (rowIdx + 1),\n                    styleId: cell.styleId,\n                    data: { type: 'empty', value: null }\n                });\n            }\n            if (mergedCells.length) {\n                cells.splice.apply(cells, __spread$D([mergeMap[i].pos + 1, 0], mergedCells));\n            }\n        }\n    }\n};\nvar shouldDisplayCell = function (cell) { var _a; return ((_a = cell.data) === null || _a === void 0 ? void 0 : _a.value) !== '' || cell.styleId !== undefined; };\nvar rowFactory = {\n    getTemplate: function (config, idx, currentSheet) {\n        var collapsed = config.collapsed, hidden = config.hidden, height = config.height, outlineLevel = config.outlineLevel, _a = config.cells, cells = _a === void 0 ? [] : _a;\n        addEmptyCells(cells, idx);\n        var children = cells.filter(shouldDisplayCell).map(function (cell, idx) { return cellFactory.getTemplate(cell, idx, currentSheet); });\n        return {\n            name: \"row\",\n            properties: {\n                rawMap: {\n                    r: idx + 1,\n                    collapsed: collapsed,\n                    hidden: hidden ? '1' : '0',\n                    ht: height,\n                    customHeight: height != null ? '1' : '0',\n                    spans: '1:1',\n                    outlineLevel: outlineLevel || undefined\n                }\n            },\n            children: children\n        };\n    }\n};\n\nvar mergeCellFactory = {\n    getTemplate: function (ref) {\n        return {\n            name: 'mergeCell',\n            properties: {\n                rawMap: {\n                    ref: ref\n                }\n            }\n        };\n    }\n};\n\nvar getMergedCellsAndAddColumnGroups = function (rows, cols) {\n    var mergedCells = [];\n    var cellsWithCollapsibleGroups = [];\n    rows.forEach(function (currentRow, rowIdx) {\n        var cells = currentRow.cells;\n        var merges = 0;\n        var lastCol;\n        cells.forEach(function (currentCell, cellIdx) {\n            var min = cellIdx + merges + 1;\n            var start = getExcelColumnName(min);\n            var outputRow = rowIdx + 1;\n            if (currentCell.mergeAcross) {\n                merges += currentCell.mergeAcross;\n                var end = getExcelColumnName(cellIdx + merges + 1);\n                mergedCells.push(\"\" + start + outputRow + \":\" + end + outputRow);\n            }\n            if (!cols[min - 1]) {\n                cols[min - 1] = {};\n            }\n            var collapsibleRanges = currentCell.collapsibleRanges;\n            if (collapsibleRanges) {\n                collapsibleRanges.forEach(function (range) {\n                    cellsWithCollapsibleGroups.push([min + range[0], min + range[1]]);\n                });\n            }\n            lastCol = cols[min - 1];\n            lastCol.min = min;\n            lastCol.max = min;\n            currentCell.ref = \"\" + start + outputRow;\n        });\n    });\n    cellsWithCollapsibleGroups.sort(function (a, b) {\n        if (a[0] !== b[0]) {\n            return a[0] - b[0];\n        }\n        return b[1] - a[1];\n    });\n    var rangeMap = new Map();\n    var outlineLevel = new Map();\n    cellsWithCollapsibleGroups.filter(function (currentRange) {\n        var rangeString = currentRange.toString();\n        var inMap = rangeMap.get(rangeString);\n        if (inMap) {\n            return false;\n        }\n        rangeMap.set(rangeString, true);\n        return true;\n    }).forEach(function (range) {\n        var refCol = cols.find(function (col) { return col.min == range[0] && col.max == range[1]; });\n        var currentOutlineLevel = outlineLevel.get(range[0]);\n        cols.push({\n            min: range[0],\n            max: range[1],\n            outlineLevel: currentOutlineLevel || 1,\n            width: (refCol || { width: 100 }).width\n        });\n        outlineLevel.set(range[0], (currentOutlineLevel || 0) + 1);\n    });\n    return mergedCells;\n};\nvar getPageOrientation = function (orientation) {\n    if (!orientation || (orientation !== 'Portrait' && orientation !== 'Landscape')) {\n        return 'portrait';\n    }\n    return orientation.toLocaleLowerCase();\n};\nvar getPageSize = function (pageSize) {\n    if (pageSize == null) {\n        return 1;\n    }\n    var positions = ['Letter', 'Letter Small', 'Tabloid', 'Ledger', 'Legal', 'Statement', 'Executive', 'A3', 'A4', 'A4 Small', 'A5', 'A6', 'B4', 'B5', 'Folio', 'Envelope', 'Envelope DL', 'Envelope C5', 'Envelope B5', 'Envelope C3', 'Envelope C4', 'Envelope C6', 'Envelope Monarch', 'Japanese Postcard', 'Japanese Double Postcard'];\n    var pos = positions.indexOf(pageSize);\n    return pos === -1 ? 1 : (pos + 1);\n};\nvar addColumns = function (columns) {\n    return function (children) {\n        if (columns.length) {\n            children.push({\n                name: 'cols',\n                children: columns.map(function (column) { return columnFactory.getTemplate(column); })\n            });\n        }\n        return children;\n    };\n};\nvar addSheetData = function (rows, sheetNumber) {\n    return function (children) {\n        if (rows.length) {\n            children.push({\n                name: 'sheetData',\n                children: rows.map(function (row, idx) { return rowFactory.getTemplate(row, idx, sheetNumber); })\n            });\n        }\n        return children;\n    };\n};\nvar addMergeCells = function (mergeCells) {\n    return function (children) {\n        if (mergeCells.length) {\n            children.push({\n                name: 'mergeCells',\n                properties: {\n                    rawMap: {\n                        count: mergeCells.length\n                    }\n                },\n                children: mergeCells.map(function (mergedCell) { return mergeCellFactory.getTemplate(mergedCell); })\n            });\n        }\n        return children;\n    };\n};\nvar addPageMargins = function (margins) {\n    return function (children) {\n        var _a = margins.top, top = _a === void 0 ? 0.75 : _a, _b = margins.right, right = _b === void 0 ? 0.7 : _b, _c = margins.bottom, bottom = _c === void 0 ? 0.75 : _c, _d = margins.left, left = _d === void 0 ? 0.7 : _d, _e = margins.header, header = _e === void 0 ? 0.3 : _e, _f = margins.footer, footer = _f === void 0 ? 0.3 : _f;\n        children.push({\n            name: 'pageMargins',\n            properties: {\n                rawMap: { bottom: bottom, footer: footer, header: header, left: left, right: right, top: top }\n            }\n        });\n        return children;\n    };\n};\nvar addPageSetup = function (pageSetup) {\n    return function (children) {\n        if (pageSetup) {\n            children.push({\n                name: 'pageSetup',\n                properties: {\n                    rawMap: {\n                        horizontalDpi: 0,\n                        verticalDpi: 0,\n                        orientation: getPageOrientation(pageSetup.orientation),\n                        paperSize: getPageSize(pageSetup.pageSize)\n                    }\n                }\n            });\n        }\n        return children;\n    };\n};\nvar replaceHeaderFooterTokens = function (value) {\n    var map = {\n        '&[Page]': '&P',\n        '&[Pages]': '&N',\n        '&[Date]': '&D',\n        '&[Time]': '&T',\n        '&[Tab]': '&A',\n        '&[Path]': '&Z',\n        '&[File]': '&F'\n    };\n    _.iterateObject(map, function (key, val) {\n        value = value.replace(key, val);\n    });\n    return value;\n};\nvar getHeaderPosition = function (position) {\n    if (position === 'Center') {\n        return 'C';\n    }\n    if (position === 'Right') {\n        return 'R';\n    }\n    return 'L';\n};\nvar applyHeaderFontStyle = function (headerString, font) {\n    if (!font) {\n        return headerString;\n    }\n    headerString += '&amp;&quot;';\n    headerString += font.fontName || 'Calibri';\n    if (font.bold !== font.italic) {\n        headerString += font.bold ? ',Bold' : ',Italic';\n    }\n    else if (font.bold) {\n        headerString += ',Bold Italic';\n    }\n    else {\n        headerString += ',Regular';\n    }\n    headerString += '&quot;';\n    if (font.size) {\n        headerString += \"&amp;\" + font.size;\n    }\n    if (font.strikeThrough) {\n        headerString += '&amp;S';\n    }\n    if (font.underline) {\n        headerString += \"&amp;\" + (font.underline === 'Double' ? 'E' : 'U');\n    }\n    if (font.color) {\n        headerString += \"&amp;K\" + font.color.replace('#', '').toUpperCase();\n    }\n    return headerString;\n};\nvar processHeaderFooterContent = function (content) {\n    return content.reduce(function (prev, curr) {\n        var pos = getHeaderPosition(curr.position);\n        var output = applyHeaderFontStyle(prev + \"&amp;\" + pos, curr.font);\n        return \"\" + output + _.escapeString(replaceHeaderFooterTokens(curr.value));\n    }, '');\n};\nvar buildHeaderFooter = function (headerFooterConfig) {\n    var rules = ['all', 'first', 'even'];\n    var headersAndFooters = [];\n    rules.forEach(function (rule) {\n        var headerFooter = headerFooterConfig[rule];\n        var namePrefix = rule === 'all' ? 'odd' : rule;\n        if (!headerFooter || (!headerFooter.header && !headerFooter.footer)) {\n            return;\n        }\n        _.iterateObject(headerFooter, function (key, value) {\n            var nameSuffix = \"\" + key.charAt(0).toUpperCase() + key.slice(1);\n            if (value) {\n                headersAndFooters.push({\n                    name: \"\" + namePrefix + nameSuffix,\n                    properties: {\n                        rawMap: {\n                            'xml:space': 'preserve'\n                        }\n                    },\n                    textNode: processHeaderFooterContent(value)\n                });\n            }\n        });\n    });\n    return headersAndFooters;\n};\nvar addHeaderFooter = function (headerFooterConfig) {\n    return function (children) {\n        if (!headerFooterConfig) {\n            return children;\n        }\n        var differentFirst = headerFooterConfig.first != null ? 1 : 0;\n        var differentOddEven = headerFooterConfig.even != null ? 1 : 0;\n        children.push({\n            name: 'headerFooter',\n            properties: {\n                rawMap: {\n                    differentFirst: differentFirst,\n                    differentOddEven: differentOddEven\n                }\n            },\n            children: buildHeaderFooter(headerFooterConfig)\n        });\n        return children;\n    };\n};\nvar addDrawingRel = function (currentSheet) {\n    return function (children) {\n        if (ExcelXlsxFactory.worksheetImages.get(currentSheet)) {\n            children.push({\n                name: 'drawing',\n                properties: {\n                    rawMap: {\n                        'r:id': 'rId1'\n                    }\n                }\n            });\n        }\n        return children;\n    };\n};\nvar addSheetPr = function () {\n    return function (children) {\n        children.push({\n            name: 'sheetPr',\n            children: [{\n                    name: 'outlinePr',\n                    properties: {\n                        rawMap: {\n                            summaryBelow: 0\n                        }\n                    }\n                }]\n        });\n        return children;\n    };\n};\nvar addSheetFormatPr = function (rows) {\n    return function (children) {\n        var maxOutline = rows.reduce(function (prev, row) {\n            if (row.outlineLevel && row.outlineLevel > prev) {\n                return row.outlineLevel;\n            }\n            return prev;\n        }, 0);\n        children.push({\n            name: 'sheetFormatPr',\n            properties: {\n                rawMap: {\n                    baseColWidth: 10,\n                    defaultRowHeight: 16,\n                    outlineLevelRow: maxOutline ? maxOutline : undefined\n                }\n            }\n        });\n        return children;\n    };\n};\nvar worksheetFactory = {\n    getTemplate: function (params) {\n        var worksheet = params.worksheet, currentSheet = params.currentSheet, _a = params.margins, margins = _a === void 0 ? {} : _a, pageSetup = params.pageSetup, headerFooterConfig = params.headerFooterConfig;\n        var table = worksheet.table;\n        var rows = table.rows, columns = table.columns;\n        var mergedCells = (columns && columns.length) ? getMergedCellsAndAddColumnGroups(rows, columns) : [];\n        var createWorksheetChildren = _.compose(addSheetPr(), addSheetFormatPr(rows), addColumns(columns), addSheetData(rows, currentSheet + 1), addMergeCells(mergedCells), addPageMargins(margins), addPageSetup(pageSetup), addHeaderFooter(headerFooterConfig), addDrawingRel(currentSheet));\n        var children = createWorksheetChildren([]);\n        return {\n            name: \"worksheet\",\n            properties: {\n                prefixedAttributes: [{\n                        prefix: \"xmlns:\",\n                        map: {\n                            r: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships\"\n                        }\n                    }],\n                rawMap: {\n                    xmlns: \"http://schemas.openxmlformats.org/spreadsheetml/2006/main\"\n                }\n            },\n            children: children\n        };\n    }\n};\n\nvar relationshipFactory = {\n    getTemplate: function (config) {\n        var Id = config.Id, Type = config.Type, Target = config.Target;\n        return {\n            name: \"Relationship\",\n            properties: {\n                rawMap: {\n                    Id: Id,\n                    Type: Type,\n                    Target: Target\n                }\n            }\n        };\n    }\n};\n\nvar relationshipsFactory = {\n    getTemplate: function (c) {\n        var children = c.map(function (relationship) { return relationshipFactory.getTemplate(relationship); });\n        return {\n            name: \"Relationships\",\n            properties: {\n                rawMap: {\n                    xmlns: \"http://schemas.openxmlformats.org/package/2006/relationships\"\n                }\n            },\n            children: children\n        };\n    }\n};\n\nvar __read$11 = (undefined && undefined.__read) || function (o, n) {\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n    if (!m) return o;\n    var i = m.call(o), r, ar = [], e;\n    try {\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n    }\n    catch (error) { e = { error: error }; }\n    finally {\n        try {\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\n        }\n        finally { if (e) throw e.error; }\n    }\n    return ar;\n};\nvar __spread$C = (undefined && undefined.__spread) || function () {\n    for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read$11(arguments[i]));\n    return ar;\n};\n/**\n * See https://www.ecma-international.org/news/TC45_current_work/OpenXML%20White%20Paper.pdf\n */\nvar ExcelXlsxFactory = /** @class */ (function () {\n    function ExcelXlsxFactory() {\n    }\n    ExcelXlsxFactory.createExcel = function (styles, worksheet, margins, pageSetup, headerFooterConfig) {\n        this.addSheetName(worksheet);\n        registerStyles(styles, this.sheetNames.length);\n        return this.createWorksheet(worksheet, margins, pageSetup, headerFooterConfig);\n    };\n    ExcelXlsxFactory.buildImageMap = function (image, rowIndex, col, columnsToExport, rowHeight) {\n        var currentSheetIndex = this.sheetNames.length;\n        var registeredImage = this.images.get(image.id);\n        if (!image.position || !image.position.row || !image.position.column) {\n            if (!image.position) {\n                image.position = {};\n            }\n            image.position = Object.assign({}, image.position, {\n                row: rowIndex,\n                column: columnsToExport.indexOf(col) + 1\n            });\n        }\n        var calculatedImage = image;\n        setExcelImageTotalWidth(calculatedImage, columnsToExport);\n        setExcelImageTotalHeight(calculatedImage, rowHeight);\n        if (registeredImage) {\n            var currentSheetImages = registeredImage.find(function (currentImage) { return currentImage.sheetId === currentSheetIndex; });\n            if (currentSheetImages) {\n                currentSheetImages.image.push(calculatedImage);\n            }\n            else {\n                registeredImage.push({\n                    sheetId: currentSheetIndex,\n                    image: [calculatedImage]\n                });\n            }\n        }\n        else {\n            this.images.set(calculatedImage.id, [{ sheetId: currentSheetIndex, image: [calculatedImage] }]);\n            this.workbookImageIds.set(calculatedImage.id, { type: calculatedImage.imageType, index: this.workbookImageIds.size });\n        }\n        this.buildSheetImageMap(currentSheetIndex, calculatedImage);\n    };\n    ExcelXlsxFactory.buildSheetImageMap = function (sheetIndex, image) {\n        var worksheetImageIdMap = this.worksheetImageIds.get(sheetIndex);\n        if (!worksheetImageIdMap) {\n            worksheetImageIdMap = new Map();\n            this.worksheetImageIds.set(sheetIndex, worksheetImageIdMap);\n        }\n        var sheetImages = this.worksheetImages.get(sheetIndex);\n        if (!sheetImages) {\n            this.worksheetImages.set(sheetIndex, [image]);\n            worksheetImageIdMap.set(image.id, { index: 0, type: image.imageType });\n        }\n        else {\n            sheetImages.push(image);\n            if (!worksheetImageIdMap.get(image.id)) {\n                worksheetImageIdMap.set(image.id, { index: worksheetImageIdMap.size, type: image.imageType });\n            }\n        }\n    };\n    ExcelXlsxFactory.addSheetName = function (worksheet) {\n        var name = _.escapeString(worksheet.name) || '';\n        var append = '';\n        while (this.sheetNames.indexOf(\"\" + name + append) !== -1) {\n            if (append === '') {\n                append = '_1';\n            }\n            else {\n                var curr = parseInt(append.slice(1), 10);\n                append = \"_\" + (curr + 1);\n            }\n        }\n        worksheet.name = \"\" + name + append;\n        this.sheetNames.push(worksheet.name);\n    };\n    ExcelXlsxFactory.getStringPosition = function (str) {\n        if (this.sharedStrings.has(str)) {\n            return this.sharedStrings.get(str);\n        }\n        this.sharedStrings.set(str, this.sharedStrings.size);\n        return this.sharedStrings.size - 1;\n    };\n    ExcelXlsxFactory.resetFactory = function () {\n        this.sharedStrings = new Map();\n        this.images = new Map();\n        this.worksheetImages = new Map();\n        this.workbookImageIds = new Map();\n        this.worksheetImageIds = new Map();\n        this.sheetNames = [];\n        this.factoryMode = ExcelFactoryMode.SINGLE_SHEET;\n    };\n    ExcelXlsxFactory.createWorkbook = function () {\n        return createXmlPart(workbookFactory.getTemplate(this.sheetNames));\n    };\n    ExcelXlsxFactory.createStylesheet = function (defaultFontSize) {\n        return createXmlPart(stylesheetFactory.getTemplate(defaultFontSize));\n    };\n    ExcelXlsxFactory.createSharedStrings = function () {\n        return createXmlPart(sharedStrings.getTemplate(this.sharedStrings));\n    };\n    ExcelXlsxFactory.createCore = function (author) {\n        return createXmlPart(coreFactory.getTemplate(author));\n    };\n    ExcelXlsxFactory.createContentTypes = function (sheetLen) {\n        return createXmlPart(contentTypesFactory.getTemplate(sheetLen));\n    };\n    ExcelXlsxFactory.createRels = function () {\n        var rs = relationshipsFactory.getTemplate([{\n                Id: 'rId1',\n                Type: 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument',\n                Target: 'xl/workbook.xml'\n            }, {\n                Id: 'rId2',\n                Type: 'http://schemas.openxmlformats.org/package/2006/relationships/metadata/core-properties',\n                Target: 'docProps/core.xml'\n            }]);\n        return createXmlPart(rs);\n    };\n    ExcelXlsxFactory.createTheme = function () {\n        return createXmlPart(officeTheme.getTemplate());\n    };\n    ExcelXlsxFactory.createWorkbookRels = function (sheetLen) {\n        var worksheets = new Array(sheetLen).fill(undefined).map(function (v, i) { return ({\n            Id: \"rId\" + (i + 1),\n            Type: 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/worksheet',\n            Target: \"worksheets/sheet\" + (i + 1) + \".xml\"\n        }); });\n        var rs = relationshipsFactory.getTemplate(__spread$C(worksheets, [\n            {\n                Id: \"rId\" + (sheetLen + 1),\n                Type: 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/theme',\n                Target: 'theme/theme1.xml'\n            }, {\n                Id: \"rId\" + (sheetLen + 2),\n                Type: 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/styles',\n                Target: 'styles.xml'\n            }, {\n                Id: \"rId\" + (sheetLen + 3),\n                Type: 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/sharedStrings',\n                Target: 'sharedStrings.xml'\n            }\n        ]));\n        return createXmlPart(rs);\n    };\n    ExcelXlsxFactory.createDrawing = function (sheetIndex) {\n        return createXmlPart(drawingFactory.getTemplate({ sheetIndex: sheetIndex }));\n    };\n    ExcelXlsxFactory.createDrawingRel = function (sheetIndex) {\n        var _this = this;\n        var worksheetImageIds = this.worksheetImageIds.get(sheetIndex);\n        var XMLArr = [];\n        worksheetImageIds.forEach(function (value, key) {\n            XMLArr.push({\n                Id: \"rId\" + (value.index + 1),\n                Type: 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/image',\n                Target: \"../media/image\" + (_this.workbookImageIds.get(key).index + 1) + \".\" + value.type\n            });\n        });\n        return createXmlPart(relationshipsFactory.getTemplate(XMLArr));\n    };\n    ExcelXlsxFactory.createWorksheetDrawingRel = function (currentRelationIndex) {\n        var rs = relationshipsFactory.getTemplate([{\n                Id: 'rId1',\n                Type: 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/drawing',\n                Target: \"../drawings/drawing\" + (currentRelationIndex + 1) + \".xml\"\n            }]);\n        return createXmlPart(rs);\n    };\n    ExcelXlsxFactory.createWorksheet = function (worksheet, margins, pageSetup, headerFooterConfig) {\n        return createXmlPart(worksheetFactory.getTemplate({\n            worksheet: worksheet,\n            currentSheet: this.sheetNames.length - 1,\n            margins: margins,\n            pageSetup: pageSetup,\n            headerFooterConfig: headerFooterConfig\n        }));\n    };\n    ExcelXlsxFactory.sharedStrings = new Map();\n    ExcelXlsxFactory.sheetNames = [];\n    /** Maps images to sheet */\n    ExcelXlsxFactory.images = new Map();\n    /** Maps sheets to images */\n    ExcelXlsxFactory.worksheetImages = new Map();\n    /** Maps all workbook images to a global Id */\n    ExcelXlsxFactory.workbookImageIds = new Map();\n    /** Maps all sheet images to unique Ids */\n    ExcelXlsxFactory.worksheetImageIds = new Map();\n    ExcelXlsxFactory.factoryMode = ExcelFactoryMode.SINGLE_SHEET;\n    return ExcelXlsxFactory;\n}());\n\nvar __extends$2P = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar ExcelXlsxSerializingSession = /** @class */ (function (_super) {\n    __extends$2P(ExcelXlsxSerializingSession, _super);\n    function ExcelXlsxSerializingSession() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    ExcelXlsxSerializingSession.prototype.createExcel = function (data) {\n        var _a = this, excelStyles = _a.excelStyles, config = _a.config;\n        var margins = config.margins, pageSetup = config.pageSetup, headerFooterConfig = config.headerFooterConfig;\n        return ExcelXlsxFactory.createExcel(excelStyles, data, margins, pageSetup, headerFooterConfig);\n    };\n    ExcelXlsxSerializingSession.prototype.getDataTypeForValue = function (valueForCell) {\n        if (valueForCell === undefined) {\n            return 'empty';\n        }\n        return this.isNumerical(valueForCell) ? 'n' : 's';\n    };\n    ExcelXlsxSerializingSession.prototype.getType = function (type, style, value) {\n        if (this.isFormula(value)) {\n            return 'f';\n        }\n        if (style && style.dataType) {\n            switch (style.dataType.toLocaleLowerCase()) {\n                case 'formula':\n                    return 'f';\n                case 'string':\n                    return 's';\n                case 'number':\n                    return 'n';\n                case 'datetime':\n                    return 'd';\n                case 'error':\n                    return 'e';\n                case 'boolean':\n                    return 'b';\n                default:\n                    console.warn(\"AG Grid: Unrecognized data type for excel export [\" + style.id + \".dataType=\" + style.dataType + \"]\");\n            }\n        }\n        return type;\n    };\n    ExcelXlsxSerializingSession.prototype.addImage = function (rowIndex, column, value) {\n        if (!this.config.addImageToCell) {\n            return;\n        }\n        var addedImage = this.config.addImageToCell(rowIndex, column, value);\n        if (!addedImage) {\n            return;\n        }\n        ExcelXlsxFactory.buildImageMap(addedImage.image, rowIndex, column, this.columnsToExport, this.config.rowHeight);\n        return addedImage;\n    };\n    ExcelXlsxSerializingSession.prototype.createCell = function (styleId, type, value) {\n        var actualStyle = this.getStyleById(styleId);\n        var typeTransformed = this.getType(type, actualStyle, value) || type;\n        return {\n            styleId: actualStyle ? styleId : undefined,\n            data: {\n                type: typeTransformed,\n                value: this.getCellValue(typeTransformed, value)\n            }\n        };\n    };\n    ExcelXlsxSerializingSession.prototype.createMergedCell = function (styleId, type, value, numOfCells) {\n        var valueToUse = value == null ? '' : value;\n        return {\n            styleId: !!this.getStyleById(styleId) ? styleId : undefined,\n            data: {\n                type: type,\n                value: type === 's' ? ExcelXlsxFactory.getStringPosition(valueToUse).toString() : value\n            },\n            mergeAcross: numOfCells\n        };\n    };\n    ExcelXlsxSerializingSession.prototype.getCellValue = function (type, value) {\n        if (value == null) {\n            return ExcelXlsxFactory.getStringPosition('').toString();\n        }\n        switch (type) {\n            case 's':\n                return value === '' ? '' : ExcelXlsxFactory.getStringPosition(value).toString();\n            case 'f':\n                return value.slice(1);\n            case 'n':\n                return Number(value).toString();\n            default:\n                return value;\n        }\n    };\n    return ExcelXlsxSerializingSession;\n}(BaseExcelSerializingSession));\n\nvar __extends$2O = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __assign$K = (undefined && undefined.__assign) || function () {\n    __assign$K = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign$K.apply(this, arguments);\n};\nvar __decorate$1$ = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar getMultipleSheetsAsExcel = function (params) {\n    var data = params.data, _a = params.fontSize, fontSize = _a === void 0 ? 11 : _a, _b = params.author, author = _b === void 0 ? 'AG Grid' : _b;\n    var hasImages = ExcelXlsxFactory.images.size > 0;\n    ZipContainer.addFolders([\n        '_rels/',\n        'docProps/',\n        'xl/',\n        'xl/theme/',\n        'xl/_rels/',\n        'xl/worksheets/'\n    ]);\n    if (hasImages) {\n        ZipContainer.addFolders([\n            'xl/worksheets/_rels',\n            'xl/drawings/',\n            'xl/drawings/_rels',\n            'xl/media/',\n        ]);\n        var imgCounter_1 = 0;\n        ExcelXlsxFactory.images.forEach(function (value) {\n            var firstImage = value[0].image[0];\n            var ext = firstImage.imageType;\n            ZipContainer.addFile(\"xl/media/image\" + ++imgCounter_1 + \".\" + ext, firstImage.base64, true);\n        });\n    }\n    if (!data || data.length === 0) {\n        console.warn(\"AG Grid: Invalid params supplied to getMultipleSheetsAsExcel() - `ExcelExportParams.data` is empty.\");\n        ExcelXlsxFactory.resetFactory();\n        return;\n    }\n    var sheetLen = data.length;\n    var imageRelationCounter = 0;\n    data.forEach(function (value, idx) {\n        ZipContainer.addFile(\"xl/worksheets/sheet\" + (idx + 1) + \".xml\", value);\n        if (hasImages && ExcelXlsxFactory.worksheetImages.get(idx)) {\n            createImageRelationsForSheet(idx, imageRelationCounter++);\n        }\n    });\n    ZipContainer.addFile('xl/workbook.xml', ExcelXlsxFactory.createWorkbook());\n    ZipContainer.addFile('xl/styles.xml', ExcelXlsxFactory.createStylesheet(fontSize));\n    ZipContainer.addFile('xl/sharedStrings.xml', ExcelXlsxFactory.createSharedStrings());\n    ZipContainer.addFile('xl/theme/theme1.xml', ExcelXlsxFactory.createTheme());\n    ZipContainer.addFile('xl/_rels/workbook.xml.rels', ExcelXlsxFactory.createWorkbookRels(sheetLen));\n    ZipContainer.addFile('docProps/core.xml', ExcelXlsxFactory.createCore(author));\n    ZipContainer.addFile('[Content_Types].xml', ExcelXlsxFactory.createContentTypes(sheetLen));\n    ZipContainer.addFile('_rels/.rels', ExcelXlsxFactory.createRels());\n    ExcelXlsxFactory.resetFactory();\n    var mimeType = params.mimeType || 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet';\n    return ZipContainer.getContent(mimeType);\n};\nvar exportMultipleSheetsAsExcel = function (params) {\n    var _a = params.fileName, fileName = _a === void 0 ? 'export.xlsx' : _a;\n    var contents = getMultipleSheetsAsExcel(params);\n    if (contents) {\n        Downloader.download(fileName, contents);\n    }\n};\nvar createImageRelationsForSheet = function (sheetIndex, currentRelationIndex) {\n    var drawingFolder = 'xl/drawings';\n    var drawingFileName = drawingFolder + \"/drawing\" + (currentRelationIndex + 1) + \".xml\";\n    var relFileName = drawingFolder + \"/_rels/drawing\" + (currentRelationIndex + 1) + \".xml.rels\";\n    var worksheetRelFile = \"xl/worksheets/_rels/sheet\" + (sheetIndex + 1) + \".xml.rels\";\n    ZipContainer.addFile(relFileName, ExcelXlsxFactory.createDrawingRel(sheetIndex));\n    ZipContainer.addFile(drawingFileName, ExcelXlsxFactory.createDrawing(sheetIndex));\n    ZipContainer.addFile(worksheetRelFile, ExcelXlsxFactory.createWorksheetDrawingRel(currentRelationIndex));\n};\nvar ExcelCreator = /** @class */ (function (_super) {\n    __extends$2O(ExcelCreator, _super);\n    function ExcelCreator() {\n        var _this = _super !== null && _super.apply(this, arguments) || this;\n        _this.exportMode = 'xlsx';\n        return _this;\n    }\n    ExcelCreator.prototype.postConstruct = function () {\n        this.setBeans({\n            gridSerializer: this.gridSerializer,\n            gridOptionsService: this.gridOptionsService\n        });\n    };\n    ExcelCreator.prototype.getMergedParams = function (params) {\n        var baseParams = this.gridOptionsService.get('defaultExcelExportParams');\n        return Object.assign({}, baseParams, params);\n    };\n    ExcelCreator.prototype.getData = function (params) {\n        this.setExportMode(params.exportMode || 'xlsx');\n        return _super.prototype.getData.call(this, params);\n    };\n    ExcelCreator.prototype.export = function (userParams) {\n        if (this.isExportSuppressed()) {\n            console.warn(\"AG Grid: Export cancelled. Export is not allowed as per your configuration.\");\n            return '';\n        }\n        var mergedParams = this.getMergedParams(userParams);\n        var data = this.getData(mergedParams);\n        var exportParams = {\n            data: [data],\n            fontSize: mergedParams.fontSize,\n            author: mergedParams.author,\n            mimeType: mergedParams.mimeType\n        };\n        var packageFile = this.packageFile(exportParams);\n        if (packageFile) {\n            Downloader.download(this.getFileName(mergedParams.fileName), packageFile);\n        }\n        return data;\n    };\n    ExcelCreator.prototype.exportDataAsExcel = function (params) {\n        return this.export(params);\n    };\n    ExcelCreator.prototype.getDataAsExcel = function (params) {\n        var mergedParams = this.getMergedParams(params);\n        var data = this.getData(mergedParams);\n        if (params && params.exportMode === 'xml') {\n            return data;\n        }\n        var exportParams = {\n            data: [data],\n            fontSize: mergedParams.fontSize,\n            author: mergedParams.author,\n            mimeType: mergedParams.mimeType\n        };\n        return this.packageFile(exportParams);\n    };\n    ExcelCreator.prototype.setFactoryMode = function (factoryMode, exportMode) {\n        if (exportMode === void 0) { exportMode = 'xlsx'; }\n        var factory = exportMode === 'xlsx' ? ExcelXlsxFactory : ExcelXmlFactory;\n        factory.factoryMode = factoryMode;\n    };\n    ExcelCreator.prototype.getFactoryMode = function (exportMode) {\n        var factory = exportMode === 'xlsx' ? ExcelXlsxFactory : ExcelXmlFactory;\n        return factory.factoryMode;\n    };\n    ExcelCreator.prototype.getSheetDataForExcel = function (params) {\n        var mergedParams = this.getMergedParams(params);\n        var data = this.getData(mergedParams);\n        return data;\n    };\n    ExcelCreator.prototype.getMultipleSheetsAsExcel = function (params) {\n        return getMultipleSheetsAsExcel(params);\n    };\n    ExcelCreator.prototype.exportMultipleSheetsAsExcel = function (params) {\n        return exportMultipleSheetsAsExcel(params);\n    };\n    ExcelCreator.prototype.getDefaultFileName = function () {\n        return \"export.\" + this.getExportMode();\n    };\n    ExcelCreator.prototype.getDefaultFileExtension = function () {\n        return this.getExportMode();\n    };\n    ExcelCreator.prototype.createSerializingSession = function (params) {\n        var _a = this, columnModel = _a.columnModel, valueService = _a.valueService, gridOptionsService = _a.gridOptionsService;\n        var isXlsx = this.getExportMode() === 'xlsx';\n        var sheetName = 'ag-grid';\n        if (params.sheetName != null) {\n            sheetName = _.utf8_encode(params.sheetName.toString().substr(0, 31));\n        }\n        var config = __assign$K(__assign$K({}, params), { sheetName: sheetName,\n            columnModel: columnModel,\n            valueService: valueService,\n            gridOptionsService: gridOptionsService, headerRowHeight: params.headerRowHeight || params.rowHeight, baseExcelStyles: this.gridOptionsService.get('excelStyles') || [], styleLinker: this.styleLinker.bind(this) });\n        return new (isXlsx ? ExcelXlsxSerializingSession : ExcelXmlSerializingSession)(config);\n    };\n    ExcelCreator.prototype.styleLinker = function (params) {\n        var rowType = params.rowType, rowIndex = params.rowIndex, value = params.value, column = params.column, columnGroup = params.columnGroup, node = params.node;\n        var isHeader = rowType === RowType.HEADER;\n        var isGroupHeader = rowType === RowType.HEADER_GROUPING;\n        var col = (isHeader ? column : columnGroup);\n        var headerClasses = [];\n        if (isHeader || isGroupHeader) {\n            headerClasses.push('header');\n            if (isGroupHeader) {\n                headerClasses.push('headerGroup');\n            }\n            if (col) {\n                headerClasses = headerClasses.concat(CssClassApplier.getHeaderClassesFromColDef(col.getDefinition(), this.gridOptionsService, column || null, columnGroup || null));\n            }\n            return headerClasses;\n        }\n        var styles = this.gridOptionsService.get('excelStyles');\n        var applicableStyles = [\"cell\"];\n        if (!styles || !styles.length) {\n            return applicableStyles;\n        }\n        var styleIds = styles.map(function (it) {\n            return it.id;\n        });\n        this.stylingService.processAllCellClasses(column.getDefinition(), {\n            value: value,\n            data: node.data,\n            node: node,\n            colDef: column.getDefinition(),\n            column: column,\n            rowIndex: rowIndex,\n            api: this.gridOptionsService.api,\n            columnApi: this.gridOptionsService.columnApi,\n            context: this.gridOptionsService.context\n        }, function (className) {\n            if (styleIds.indexOf(className) > -1) {\n                applicableStyles.push(className);\n            }\n        });\n        return applicableStyles.sort(function (left, right) {\n            return (styleIds.indexOf(left) < styleIds.indexOf(right)) ? -1 : 1;\n        });\n    };\n    ExcelCreator.prototype.isExportSuppressed = function () {\n        return this.gridOptionsService.is('suppressExcelExport');\n    };\n    ExcelCreator.prototype.setExportMode = function (exportMode) {\n        this.exportMode = exportMode;\n    };\n    ExcelCreator.prototype.getExportMode = function () {\n        return this.exportMode;\n    };\n    ExcelCreator.prototype.packageFile = function (params) {\n        if (this.getExportMode() === 'xml') {\n            var mimeType = params.mimeType || 'application/vnd.ms-excel';\n            return new Blob([\"\\ufeff\", params.data[0]], { type: mimeType });\n        }\n        return getMultipleSheetsAsExcel(params);\n    };\n    __decorate$1$([\n        Autowired('columnModel')\n    ], ExcelCreator.prototype, \"columnModel\", void 0);\n    __decorate$1$([\n        Autowired('valueService')\n    ], ExcelCreator.prototype, \"valueService\", void 0);\n    __decorate$1$([\n        Autowired('stylingService')\n    ], ExcelCreator.prototype, \"stylingService\", void 0);\n    __decorate$1$([\n        Autowired('gridSerializer')\n    ], ExcelCreator.prototype, \"gridSerializer\", void 0);\n    __decorate$1$([\n        Autowired('gridOptionsService')\n    ], ExcelCreator.prototype, \"gridOptionsService\", void 0);\n    __decorate$1$([\n        PostConstruct\n    ], ExcelCreator.prototype, \"postConstruct\", null);\n    ExcelCreator = __decorate$1$([\n        Bean('excelCreator')\n    ], ExcelCreator);\n    return ExcelCreator;\n}(BaseCreator));\n\n// DO NOT UPDATE MANUALLY: Generated from script during build time\nvar VERSION$d = '29.3.5';\n\nvar ExcelExportModule = {\n    version: VERSION$d,\n    moduleName: ModuleNames.ExcelExportModule,\n    beans: [\n        // beans in this module\n        ExcelCreator,\n        // these beans are part of CSV Export module\n        GridSerializer, CsvCreator\n    ],\n    dependantModules: [\n        CsvExportModule,\n        EnterpriseCoreModule\n    ]\n};\n\nvar __extends$2N = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$1_ = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar EXPAND_STATE;\n(function (EXPAND_STATE) {\n    EXPAND_STATE[EXPAND_STATE[\"EXPANDED\"] = 0] = \"EXPANDED\";\n    EXPAND_STATE[EXPAND_STATE[\"COLLAPSED\"] = 1] = \"COLLAPSED\";\n    EXPAND_STATE[EXPAND_STATE[\"INDETERMINATE\"] = 2] = \"INDETERMINATE\";\n})(EXPAND_STATE || (EXPAND_STATE = {}));\nvar FiltersToolPanelHeaderPanel = /** @class */ (function (_super) {\n    __extends$2N(FiltersToolPanelHeaderPanel, _super);\n    function FiltersToolPanelHeaderPanel() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    FiltersToolPanelHeaderPanel.prototype.preConstruct = function () {\n        this.setTemplate(/* html */ \"<div class=\\\"ag-filter-toolpanel-search\\\" role=\\\"presentation\\\">\\n                <div ref=\\\"eExpand\\\" class=\\\"ag-filter-toolpanel-expand\\\"></div>\\n                <ag-input-text-field ref=\\\"eFilterTextField\\\" class=\\\"ag-filter-toolpanel-search-input\\\"></ag-input-text-field>\\n            </div>\");\n    };\n    FiltersToolPanelHeaderPanel.prototype.postConstruct = function () {\n        var translate = this.localeService.getLocaleTextFunc();\n        this.eFilterTextField.onValueChange(this.onSearchTextChanged.bind(this));\n        this.eFilterTextField.setInputAriaLabel(translate('ariaFilterColumnsInput', 'Filter Columns Input'));\n        this.createExpandIcons();\n        this.setExpandState(EXPAND_STATE.EXPANDED);\n        this.addManagedListener(this.eExpand, 'click', this.onExpandClicked.bind(this));\n        this.addManagedListener(this.eventService, Events.EVENT_NEW_COLUMNS_LOADED, this.showOrHideOptions.bind(this));\n    };\n    FiltersToolPanelHeaderPanel.prototype.init = function (params) {\n        this.params = params;\n        if (this.columnModel.isReady()) {\n            this.showOrHideOptions();\n        }\n    };\n    FiltersToolPanelHeaderPanel.prototype.createExpandIcons = function () {\n        this.eExpand.appendChild(this.eExpandChecked = _.createIconNoSpan('columnSelectOpen', this.gridOptionsService));\n        this.eExpand.appendChild(this.eExpandUnchecked = _.createIconNoSpan('columnSelectClosed', this.gridOptionsService));\n        this.eExpand.appendChild(this.eExpandIndeterminate = _.createIconNoSpan('columnSelectIndeterminate', this.gridOptionsService));\n    };\n    // we only show expand / collapse if we are showing filters\n    FiltersToolPanelHeaderPanel.prototype.showOrHideOptions = function () {\n        var showFilterSearch = !this.params.suppressFilterSearch;\n        var showExpand = !this.params.suppressExpandAll;\n        var translate = this.localeService.getLocaleTextFunc();\n        this.eFilterTextField.setInputPlaceholder(translate('searchOoo', 'Search...'));\n        var isFilterGroupPresent = function (col) { return col.getOriginalParent() && col.isFilterAllowed(); };\n        var filterGroupsPresent = this.columnModel.getAllGridColumns().some(isFilterGroupPresent);\n        _.setDisplayed(this.eFilterTextField.getGui(), showFilterSearch);\n        _.setDisplayed(this.eExpand, showExpand && filterGroupsPresent);\n    };\n    FiltersToolPanelHeaderPanel.prototype.onSearchTextChanged = function () {\n        var _this = this;\n        if (!this.onSearchTextChangedDebounced) {\n            this.onSearchTextChangedDebounced = _.debounce(function () {\n                _this.dispatchEvent({ type: 'searchChanged', searchText: _this.eFilterTextField.getValue() });\n            }, 300);\n        }\n        this.onSearchTextChangedDebounced();\n    };\n    FiltersToolPanelHeaderPanel.prototype.onExpandClicked = function () {\n        var event = this.currentExpandState === EXPAND_STATE.EXPANDED ? { type: 'collapseAll' } : { type: 'expandAll' };\n        this.dispatchEvent(event);\n    };\n    FiltersToolPanelHeaderPanel.prototype.setExpandState = function (state) {\n        this.currentExpandState = state;\n        _.setDisplayed(this.eExpandChecked, this.currentExpandState === EXPAND_STATE.EXPANDED);\n        _.setDisplayed(this.eExpandUnchecked, this.currentExpandState === EXPAND_STATE.COLLAPSED);\n        _.setDisplayed(this.eExpandIndeterminate, this.currentExpandState === EXPAND_STATE.INDETERMINATE);\n    };\n    __decorate$1_([\n        Autowired('columnModel')\n    ], FiltersToolPanelHeaderPanel.prototype, \"columnModel\", void 0);\n    __decorate$1_([\n        RefSelector('eExpand')\n    ], FiltersToolPanelHeaderPanel.prototype, \"eExpand\", void 0);\n    __decorate$1_([\n        RefSelector('eFilterTextField')\n    ], FiltersToolPanelHeaderPanel.prototype, \"eFilterTextField\", void 0);\n    __decorate$1_([\n        PreConstruct\n    ], FiltersToolPanelHeaderPanel.prototype, \"preConstruct\", null);\n    __decorate$1_([\n        PostConstruct\n    ], FiltersToolPanelHeaderPanel.prototype, \"postConstruct\", null);\n    return FiltersToolPanelHeaderPanel;\n}(Component));\n\nvar __extends$2M = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$1Z = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar ToolPanelFilterComp = /** @class */ (function (_super) {\n    __extends$2M(ToolPanelFilterComp, _super);\n    function ToolPanelFilterComp(hideHeader) {\n        if (hideHeader === void 0) { hideHeader = false; }\n        var _this = _super.call(this, ToolPanelFilterComp.TEMPLATE) || this;\n        _this.expanded = false;\n        _this.hideHeader = hideHeader;\n        return _this;\n    }\n    ToolPanelFilterComp.prototype.postConstruct = function () {\n        this.eExpandChecked = _.createIconNoSpan('columnSelectOpen', this.gridOptionsService);\n        this.eExpandUnchecked = _.createIconNoSpan('columnSelectClosed', this.gridOptionsService);\n        this.eExpand.appendChild(this.eExpandChecked);\n        this.eExpand.appendChild(this.eExpandUnchecked);\n    };\n    ToolPanelFilterComp.prototype.setColumn = function (column) {\n        var _this = this;\n        this.column = column;\n        this.eFilterName.innerText = this.columnModel.getDisplayNameForColumn(this.column, 'filterToolPanel', false) || '';\n        this.addManagedListener(this.eFilterToolPanelHeader, 'click', this.toggleExpanded.bind(this));\n        this.addManagedListener(this.eFilterToolPanelHeader, 'keydown', function (e) {\n            if (e.key === KeyCode.ENTER) {\n                _this.toggleExpanded();\n            }\n        });\n        this.addManagedListener(this.eventService, Events.EVENT_FILTER_OPENED, this.onFilterOpened.bind(this));\n        this.addInIcon('filter', this.eFilterIcon, this.column);\n        _.setDisplayed(this.eFilterIcon, this.isFilterActive(), { skipAriaHidden: true });\n        _.setDisplayed(this.eExpandChecked, false);\n        if (this.hideHeader) {\n            _.setDisplayed(this.eFilterToolPanelHeader, false);\n            this.eFilterToolPanelHeader.removeAttribute('tabindex');\n        }\n        else {\n            this.eFilterToolPanelHeader.setAttribute('tabindex', '0');\n        }\n        this.addManagedListener(this.column, Column.EVENT_FILTER_CHANGED, this.onFilterChanged.bind(this));\n        this.addManagedListener(this.eventService, Events.EVENT_FILTER_DESTROYED, this.onFilterDestroyed.bind(this));\n    };\n    ToolPanelFilterComp.prototype.getColumn = function () {\n        return this.column;\n    };\n    ToolPanelFilterComp.prototype.getColumnFilterName = function () {\n        return this.columnModel.getDisplayNameForColumn(this.column, 'filterToolPanel', false);\n    };\n    ToolPanelFilterComp.prototype.addCssClassToTitleBar = function (cssClass) {\n        this.eFilterToolPanelHeader.classList.add(cssClass);\n    };\n    ToolPanelFilterComp.prototype.addInIcon = function (iconName, eParent, column) {\n        if (eParent == null) {\n            return;\n        }\n        var eIcon = _.createIconNoSpan(iconName, this.gridOptionsService, column);\n        eParent.appendChild(eIcon);\n    };\n    ToolPanelFilterComp.prototype.isFilterActive = function () {\n        return this.filterManager.isFilterActive(this.column);\n    };\n    ToolPanelFilterComp.prototype.onFilterChanged = function () {\n        _.setDisplayed(this.eFilterIcon, this.isFilterActive(), { skipAriaHidden: true });\n        this.dispatchEvent({ type: Column.EVENT_FILTER_CHANGED });\n    };\n    ToolPanelFilterComp.prototype.onFilterDestroyed = function (event) {\n        if (this.expanded &&\n            event.source === 'api' &&\n            event.column.getId() === this.column.getId() &&\n            this.columnModel.getPrimaryColumn(this.column)) {\n            // filter was visible and has been destroyed by the API. If the column still exists, need to recreate UI component\n            this.removeFilterElement();\n            this.addFilterElement();\n        }\n    };\n    ToolPanelFilterComp.prototype.toggleExpanded = function () {\n        this.expanded ? this.collapse() : this.expand();\n    };\n    ToolPanelFilterComp.prototype.expand = function () {\n        if (this.expanded) {\n            return;\n        }\n        this.expanded = true;\n        _.setAriaExpanded(this.eFilterToolPanelHeader, true);\n        _.setDisplayed(this.eExpandChecked, true);\n        _.setDisplayed(this.eExpandUnchecked, false);\n        this.addFilterElement();\n    };\n    ToolPanelFilterComp.prototype.addFilterElement = function () {\n        var _this = this;\n        var filterPanelWrapper = _.loadTemplate(/* html */ \"<div class=\\\"ag-filter-toolpanel-instance-filter\\\"></div>\");\n        var filterWrapper = this.filterManager.getOrCreateFilterWrapper(this.column, 'TOOLBAR');\n        if (!filterWrapper) {\n            return;\n        }\n        var filterPromise = filterWrapper.filterPromise, guiPromise = filterWrapper.guiPromise;\n        filterPromise === null || filterPromise === void 0 ? void 0 : filterPromise.then(function (filter) {\n            _this.underlyingFilter = filter;\n            if (!filter) {\n                return;\n            }\n            guiPromise.then(function (filterContainerEl) {\n                if (filterContainerEl) {\n                    filterPanelWrapper.appendChild(filterContainerEl);\n                }\n                _this.agFilterToolPanelBody.appendChild(filterPanelWrapper);\n                if (filter.afterGuiAttached) {\n                    filter.afterGuiAttached({ container: 'toolPanel' });\n                }\n            });\n        });\n    };\n    ToolPanelFilterComp.prototype.collapse = function () {\n        var _a, _b;\n        if (!this.expanded) {\n            return;\n        }\n        this.expanded = false;\n        _.setAriaExpanded(this.eFilterToolPanelHeader, false);\n        this.removeFilterElement();\n        _.setDisplayed(this.eExpandChecked, false);\n        _.setDisplayed(this.eExpandUnchecked, true);\n        (_b = (_a = this.underlyingFilter) === null || _a === void 0 ? void 0 : _a.afterGuiDetached) === null || _b === void 0 ? void 0 : _b.call(_a);\n    };\n    ToolPanelFilterComp.prototype.removeFilterElement = function () {\n        _.clearElement(this.agFilterToolPanelBody);\n    };\n    ToolPanelFilterComp.prototype.isExpanded = function () {\n        return this.expanded;\n    };\n    ToolPanelFilterComp.prototype.refreshFilter = function (isDisplayed) {\n        var _a;\n        if (!this.expanded) {\n            return;\n        }\n        var filter = this.underlyingFilter;\n        if (!filter) {\n            return;\n        }\n        if (isDisplayed) {\n            // set filters should be updated when the filter has been changed elsewhere, i.e. via api. Note that we can't\n            // use 'afterGuiAttached' to refresh the virtual list as it also focuses on the mini filter which changes the\n            // scroll position in the filter list panel\n            if (typeof filter.refreshVirtualList === 'function') {\n                filter.refreshVirtualList();\n            }\n        }\n        else {\n            (_a = filter.afterGuiDetached) === null || _a === void 0 ? void 0 : _a.call(filter);\n        }\n    };\n    ToolPanelFilterComp.prototype.onFilterOpened = function (event) {\n        if (event.source !== 'COLUMN_MENU') {\n            return;\n        }\n        if (event.column !== this.column) {\n            return;\n        }\n        if (!this.expanded) {\n            return;\n        }\n        this.collapse();\n    };\n    ToolPanelFilterComp.TEMPLATE = \"\\n        <div class=\\\"ag-filter-toolpanel-instance\\\">\\n            <div class=\\\"ag-filter-toolpanel-header ag-filter-toolpanel-instance-header\\\" ref=\\\"eFilterToolPanelHeader\\\" role=\\\"button\\\" aria-expanded=\\\"false\\\">\\n                <div ref=\\\"eExpand\\\" class=\\\"ag-filter-toolpanel-expand\\\"></div>\\n                <span ref=\\\"eFilterName\\\" class=\\\"ag-header-cell-text\\\"></span>\\n                <span ref=\\\"eFilterIcon\\\" class=\\\"ag-header-icon ag-filter-icon ag-filter-toolpanel-instance-header-icon\\\" aria-hidden=\\\"true\\\"></span>\\n            </div>\\n            <div class=\\\"ag-filter-toolpanel-instance-body ag-filter\\\" ref=\\\"agFilterToolPanelBody\\\"></div>\\n        </div>\";\n    __decorate$1Z([\n        RefSelector('eFilterToolPanelHeader')\n    ], ToolPanelFilterComp.prototype, \"eFilterToolPanelHeader\", void 0);\n    __decorate$1Z([\n        RefSelector('eFilterName')\n    ], ToolPanelFilterComp.prototype, \"eFilterName\", void 0);\n    __decorate$1Z([\n        RefSelector('agFilterToolPanelBody')\n    ], ToolPanelFilterComp.prototype, \"agFilterToolPanelBody\", void 0);\n    __decorate$1Z([\n        RefSelector('eFilterIcon')\n    ], ToolPanelFilterComp.prototype, \"eFilterIcon\", void 0);\n    __decorate$1Z([\n        RefSelector('eExpand')\n    ], ToolPanelFilterComp.prototype, \"eExpand\", void 0);\n    __decorate$1Z([\n        Autowired('filterManager')\n    ], ToolPanelFilterComp.prototype, \"filterManager\", void 0);\n    __decorate$1Z([\n        Autowired('columnModel')\n    ], ToolPanelFilterComp.prototype, \"columnModel\", void 0);\n    __decorate$1Z([\n        PostConstruct\n    ], ToolPanelFilterComp.prototype, \"postConstruct\", null);\n    return ToolPanelFilterComp;\n}(Component));\n\nvar __extends$2L = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$1Y = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar ToolPanelFilterGroupComp = /** @class */ (function (_super) {\n    __extends$2L(ToolPanelFilterGroupComp, _super);\n    function ToolPanelFilterGroupComp(columnGroup, childFilterComps, expandedCallback, depth, showingColumn) {\n        var _this = _super.call(this) || this;\n        _this.columnGroup = columnGroup;\n        _this.childFilterComps = childFilterComps;\n        _this.depth = depth;\n        _this.expandedCallback = expandedCallback;\n        _this.showingColumn = showingColumn;\n        return _this;\n    }\n    ToolPanelFilterGroupComp.prototype.preConstruct = function () {\n        var groupParams = {\n            cssIdentifier: 'filter-toolpanel',\n            direction: 'vertical'\n        };\n        this.setTemplate(ToolPanelFilterGroupComp.TEMPLATE, { filterGroupComp: groupParams });\n    };\n    ToolPanelFilterGroupComp.prototype.init = function () {\n        var _this = this;\n        this.setGroupTitle();\n        this.filterGroupComp.setAlignItems('stretch');\n        this.filterGroupComp.addCssClass(\"ag-filter-toolpanel-group-level-\" + this.depth);\n        this.filterGroupComp.addCssClassToTitleBar(\"ag-filter-toolpanel-group-level-\" + this.depth + \"-header\");\n        this.childFilterComps.forEach(function (filterComp) {\n            _this.filterGroupComp.addItem(filterComp);\n            filterComp.addCssClassToTitleBar(\"ag-filter-toolpanel-group-level-\" + (_this.depth + 1) + \"-header\");\n        });\n        this.refreshFilterClass();\n        this.addExpandCollapseListeners();\n        this.addFilterChangedListeners();\n        this.setupTooltip();\n    };\n    ToolPanelFilterGroupComp.prototype.setupTooltip = function () {\n        var _this = this;\n        // we don't show tooltips for groups, as when the group expands, it's div contains the columns which also\n        // have tooltips, so the tooltips would clash. Eg mouse over group, tooltip shows, mouse over column, another\n        // tooltip shows but cos we didn't leave the group the group tooltip remains. this should be fixed in the future,\n        // maybe the group shouldn't contain the children form a DOM perspective.\n        if (!this.showingColumn) {\n            return;\n        }\n        var refresh = function () {\n            var newTooltipText = _this.columnGroup.getColDef().headerTooltip;\n            _this.setTooltip(newTooltipText);\n        };\n        refresh();\n        this.addManagedListener(this.eventService, Events.EVENT_NEW_COLUMNS_LOADED, refresh);\n    };\n    ToolPanelFilterGroupComp.prototype.getTooltipParams = function () {\n        var res = _super.prototype.getTooltipParams.call(this);\n        res.location = 'filterToolPanelColumnGroup';\n        return res;\n    };\n    ToolPanelFilterGroupComp.prototype.addCssClassToTitleBar = function (cssClass) {\n        this.filterGroupComp.addCssClassToTitleBar(cssClass);\n    };\n    ToolPanelFilterGroupComp.prototype.refreshFilters = function (isDisplayed) {\n        this.childFilterComps.forEach(function (filterComp) {\n            if (filterComp instanceof ToolPanelFilterGroupComp) {\n                filterComp.refreshFilters(isDisplayed);\n            }\n            else {\n                filterComp.refreshFilter(isDisplayed);\n            }\n        });\n    };\n    ToolPanelFilterGroupComp.prototype.isColumnGroup = function () {\n        return this.columnGroup instanceof ProvidedColumnGroup;\n    };\n    ToolPanelFilterGroupComp.prototype.isExpanded = function () {\n        return this.filterGroupComp.isExpanded();\n    };\n    ToolPanelFilterGroupComp.prototype.getChildren = function () {\n        return this.childFilterComps;\n    };\n    ToolPanelFilterGroupComp.prototype.getFilterGroupName = function () {\n        return this.filterGroupName ? this.filterGroupName : '';\n    };\n    ToolPanelFilterGroupComp.prototype.getFilterGroupId = function () {\n        return this.columnGroup.getId();\n    };\n    ToolPanelFilterGroupComp.prototype.hideGroupItem = function (hide, index) {\n        this.filterGroupComp.hideItem(hide, index);\n    };\n    ToolPanelFilterGroupComp.prototype.hideGroup = function (hide) {\n        this.setDisplayed(!hide);\n    };\n    ToolPanelFilterGroupComp.prototype.forEachToolPanelFilterChild = function (action) {\n        this.childFilterComps.forEach(function (filterComp) {\n            if (filterComp instanceof ToolPanelFilterComp) {\n                action(filterComp);\n            }\n        });\n    };\n    ToolPanelFilterGroupComp.prototype.addExpandCollapseListeners = function () {\n        var _this = this;\n        var expandListener = this.isColumnGroup() ?\n            function () { return _this.expandedCallback(); } :\n            function () { return _this.forEachToolPanelFilterChild(function (filterComp) { return filterComp.expand(); }); };\n        var collapseListener = this.isColumnGroup() ?\n            function () { return _this.expandedCallback(); } :\n            function () { return _this.forEachToolPanelFilterChild(function (filterComp) { return filterComp.collapse(); }); };\n        this.addManagedListener(this.filterGroupComp, AgGroupComponent.EVENT_EXPANDED, expandListener);\n        this.addManagedListener(this.filterGroupComp, AgGroupComponent.EVENT_COLLAPSED, collapseListener);\n    };\n    ToolPanelFilterGroupComp.prototype.getColumns = function () {\n        if (this.columnGroup instanceof ProvidedColumnGroup) {\n            return this.columnGroup.getLeafColumns();\n        }\n        return [this.columnGroup];\n    };\n    ToolPanelFilterGroupComp.prototype.addFilterChangedListeners = function () {\n        var _this = this;\n        this.getColumns().forEach(function (column) {\n            _this.addManagedListener(column, Column.EVENT_FILTER_CHANGED, function () { return _this.refreshFilterClass(); });\n        });\n        if (!(this.columnGroup instanceof ProvidedColumnGroup)) {\n            this.addManagedListener(this.eventService, Events.EVENT_FILTER_OPENED, this.onFilterOpened.bind(this));\n        }\n    };\n    ToolPanelFilterGroupComp.prototype.refreshFilterClass = function () {\n        var columns = this.getColumns();\n        var anyChildFiltersActive = function () { return columns.some(function (col) { return col.isFilterActive(); }); };\n        this.filterGroupComp.addOrRemoveCssClass('ag-has-filter', anyChildFiltersActive());\n    };\n    ToolPanelFilterGroupComp.prototype.onFilterOpened = function (event) {\n        // when a filter is opened elsewhere, i.e. column menu we close the filter comp so we also need to collapse\n        // the column group. This approach means we don't need to try and sync filter models on the same column.\n        if (event.source !== 'COLUMN_MENU') {\n            return;\n        }\n        if (event.column !== this.columnGroup) {\n            return;\n        }\n        if (!this.isExpanded()) {\n            return;\n        }\n        this.collapse();\n    };\n    ToolPanelFilterGroupComp.prototype.expand = function () {\n        this.filterGroupComp.toggleGroupExpand(true);\n    };\n    ToolPanelFilterGroupComp.prototype.collapse = function () {\n        this.filterGroupComp.toggleGroupExpand(false);\n    };\n    ToolPanelFilterGroupComp.prototype.setGroupTitle = function () {\n        this.filterGroupName = (this.columnGroup instanceof ProvidedColumnGroup) ?\n            this.getColumnGroupName(this.columnGroup) : this.getColumnName(this.columnGroup);\n        this.filterGroupComp.setTitle(this.filterGroupName || '');\n    };\n    ToolPanelFilterGroupComp.prototype.getColumnGroupName = function (columnGroup) {\n        return this.columnModel.getDisplayNameForProvidedColumnGroup(null, columnGroup, 'filterToolPanel');\n    };\n    ToolPanelFilterGroupComp.prototype.getColumnName = function (column) {\n        return this.columnModel.getDisplayNameForColumn(column, 'filterToolPanel', false);\n    };\n    ToolPanelFilterGroupComp.prototype.destroyFilters = function () {\n        this.childFilterComps = this.destroyBeans(this.childFilterComps);\n        _.clearElement(this.getGui());\n    };\n    ToolPanelFilterGroupComp.prototype.destroy = function () {\n        this.destroyFilters();\n        _super.prototype.destroy.call(this);\n    };\n    ToolPanelFilterGroupComp.TEMPLATE = \"<div class=\\\"ag-filter-toolpanel-group-wrapper\\\">\\n            <ag-group-component ref=\\\"filterGroupComp\\\"></ag-group-component>\\n        </div>\";\n    __decorate$1Y([\n        RefSelector('filterGroupComp')\n    ], ToolPanelFilterGroupComp.prototype, \"filterGroupComp\", void 0);\n    __decorate$1Y([\n        Autowired('columnModel')\n    ], ToolPanelFilterGroupComp.prototype, \"columnModel\", void 0);\n    __decorate$1Y([\n        PreConstruct\n    ], ToolPanelFilterGroupComp.prototype, \"preConstruct\", null);\n    __decorate$1Y([\n        PostConstruct\n    ], ToolPanelFilterGroupComp.prototype, \"init\", null);\n    return ToolPanelFilterGroupComp;\n}(Component));\n\nvar __extends$2K = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$1X = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar FiltersToolPanelListPanel = /** @class */ (function (_super) {\n    __extends$2K(FiltersToolPanelListPanel, _super);\n    function FiltersToolPanelListPanel() {\n        var _this = _super.call(this, FiltersToolPanelListPanel.TEMPLATE) || this;\n        _this.initialised = false;\n        _this.filterGroupComps = [];\n        return _this;\n    }\n    FiltersToolPanelListPanel.prototype.init = function (params) {\n        var _this = this;\n        this.initialised = true;\n        var defaultParams = {\n            suppressExpandAll: false,\n            suppressFilterSearch: false,\n            suppressSyncLayoutWithGrid: false,\n            api: this.gridApi,\n            columnApi: this.columnApi,\n            context: this.gridOptionsService.context\n        };\n        _.mergeDeep(defaultParams, params);\n        this.params = defaultParams;\n        if (!this.params.suppressSyncLayoutWithGrid) {\n            this.addManagedListener(this.eventService, Events.EVENT_COLUMN_MOVED, function () { return _this.onColumnsChanged(); });\n        }\n        this.addManagedListener(this.eventService, Events.EVENT_NEW_COLUMNS_LOADED, function () { return _this.onColumnsChanged(); });\n        this.addManagedListener(this.eventService, Events.EVENT_INTERNAL_TOOL_PANEL_VISIBLE_CHANGED, function (event) {\n            // when re-entering the filters tool panel we need to refresh the virtual lists in the set filters in case\n            // filters have been changed elsewhere, i.e. via an api call.\n            if (event.key === 'filters') {\n                _this.refreshFilters(event.visible);\n            }\n        });\n        if (this.columnModel.isReady()) {\n            this.onColumnsChanged();\n        }\n    };\n    FiltersToolPanelListPanel.prototype.onColumnsChanged = function () {\n        var pivotModeActive = this.columnModel.isPivotMode();\n        var shouldSyncColumnLayoutWithGrid = !this.params.suppressSyncLayoutWithGrid && !pivotModeActive;\n        shouldSyncColumnLayoutWithGrid ? this.syncFilterLayout() : this.buildTreeFromProvidedColumnDefs();\n    };\n    FiltersToolPanelListPanel.prototype.syncFilterLayout = function () {\n        this.toolPanelColDefService.syncLayoutWithGrid(this.setFiltersLayout.bind(this));\n    };\n    FiltersToolPanelListPanel.prototype.buildTreeFromProvidedColumnDefs = function () {\n        var columnTree = this.columnModel.getPrimaryColumnTree();\n        this.recreateFilters(columnTree);\n    };\n    FiltersToolPanelListPanel.prototype.setFiltersLayout = function (colDefs) {\n        var columnTree = this.toolPanelColDefService.createColumnTree(colDefs);\n        this.recreateFilters(columnTree);\n    };\n    FiltersToolPanelListPanel.prototype.recreateFilters = function (columnTree) {\n        var _this = this;\n        // Underlying filter comp/element won't get recreated if the column still exists (the element just gets detached/re-attached).\n        // We can therefore restore focus if an element in the filter tool panel was focused.\n        var activeElement = this.gridOptionsService.getDocument().activeElement;\n        // Want to restore the expansion state where possible.\n        var expansionState = this.getExpansionState();\n        this.destroyFilters();\n        this.filterGroupComps = this.recursivelyAddComps(columnTree, 0, expansionState);\n        var len = this.filterGroupComps.length;\n        if (len) {\n            // skip the destroy function because this will be managed\n            // by the `destroyFilters` function\n            this.filterGroupComps.forEach(function (comp) { return _this.appendChild(comp); });\n            this.setFirstAndLastVisible(0, len - 1);\n        }\n        // perform search if searchFilterText exists\n        if (_.exists(this.searchFilterText)) {\n            this.searchFilters(this.searchFilterText);\n        }\n        // notify header of expand\n        this.fireExpandedEvent();\n        // We only care about restoring focus if the originally focused element was in the filter tool panel.\n        if (this.getGui().contains(activeElement)) {\n            activeElement.focus();\n        }\n    };\n    FiltersToolPanelListPanel.prototype.recursivelyAddComps = function (tree, depth, expansionState) {\n        var _this = this;\n        return _.flatten(tree.map(function (child) {\n            if (child instanceof ProvidedColumnGroup) {\n                return _.flatten(_this.recursivelyAddFilterGroupComps(child, depth, expansionState));\n            }\n            var column = child;\n            if (!_this.shouldDisplayFilter(column)) {\n                return [];\n            }\n            var hideFilterCompHeader = depth === 0;\n            var filterComp = new ToolPanelFilterComp(hideFilterCompHeader);\n            _this.createBean(filterComp);\n            filterComp.setColumn(column);\n            if (expansionState.get(column.getId())) {\n                // Default state on creation and desired state are both collapsed. Expand if expanded before.\n                filterComp.expand();\n            }\n            if (depth > 0) {\n                return filterComp;\n            }\n            var filterGroupComp = _this.createBean(new ToolPanelFilterGroupComp(column, [filterComp], _this.onGroupExpanded.bind(_this), depth, true));\n            filterGroupComp.addCssClassToTitleBar('ag-filter-toolpanel-header');\n            if (!expansionState.get(filterGroupComp.getFilterGroupId())) {\n                // Default state on creation is expanded. Desired initial state is collapsed. Always collapse unless expanded before.\n                filterGroupComp.collapse();\n            }\n            return filterGroupComp;\n        }));\n    };\n    FiltersToolPanelListPanel.prototype.recursivelyAddFilterGroupComps = function (columnGroup, depth, expansionState) {\n        if (!this.filtersExistInChildren(columnGroup.getChildren())) {\n            return;\n        }\n        var colGroupDef = columnGroup.getColGroupDef();\n        if (colGroupDef && colGroupDef.suppressFiltersToolPanel) {\n            return [];\n        }\n        var newDepth = columnGroup.isPadding() ? depth : depth + 1;\n        var childFilterComps = _.flatten(this.recursivelyAddComps(columnGroup.getChildren(), newDepth, expansionState));\n        if (columnGroup.isPadding()) {\n            return childFilterComps;\n        }\n        var filterGroupComp = new ToolPanelFilterGroupComp(columnGroup, childFilterComps, this.onGroupExpanded.bind(this), depth, false);\n        this.createBean(filterGroupComp);\n        filterGroupComp.addCssClassToTitleBar('ag-filter-toolpanel-header');\n        if (expansionState.get(filterGroupComp.getFilterGroupId()) === false) {\n            // Default state on creation is expanded. Desired initial state is expanded. Only collapse if collapsed before.\n            filterGroupComp.collapse();\n        }\n        return [filterGroupComp];\n    };\n    FiltersToolPanelListPanel.prototype.filtersExistInChildren = function (tree) {\n        var _this = this;\n        return tree.some(function (child) {\n            if (child instanceof ProvidedColumnGroup) {\n                return _this.filtersExistInChildren(child.getChildren());\n            }\n            return _this.shouldDisplayFilter(child);\n        });\n    };\n    FiltersToolPanelListPanel.prototype.shouldDisplayFilter = function (column) {\n        var suppressFiltersToolPanel = column.getColDef() && column.getColDef().suppressFiltersToolPanel;\n        return column.isFilterAllowed() && !suppressFiltersToolPanel;\n    };\n    FiltersToolPanelListPanel.prototype.getExpansionState = function () {\n        var expansionState = new Map();\n        var recursiveGetExpansionState = function (filterGroupComp) {\n            expansionState.set(filterGroupComp.getFilterGroupId(), filterGroupComp.isExpanded());\n            filterGroupComp.getChildren().forEach(function (child) {\n                if (child instanceof ToolPanelFilterGroupComp) {\n                    recursiveGetExpansionState(child);\n                }\n                else {\n                    expansionState.set(child.getColumn().getId(), child.isExpanded());\n                }\n            });\n        };\n        this.filterGroupComps.forEach(recursiveGetExpansionState);\n        return expansionState;\n    };\n    // we don't support refreshing, but must implement because it's on the tool panel interface\n    FiltersToolPanelListPanel.prototype.refresh = function () { };\n    // lazy initialise the panel\n    FiltersToolPanelListPanel.prototype.setVisible = function (visible) {\n        _super.prototype.setDisplayed.call(this, visible);\n        if (visible && !this.initialised) {\n            this.init(this.params);\n        }\n    };\n    FiltersToolPanelListPanel.prototype.expandFilterGroups = function (expand, groupIds) {\n        var updatedGroupIds = [];\n        var updateGroupExpandState = function (filterGroup) {\n            var groupId = filterGroup.getFilterGroupId();\n            var shouldExpandOrCollapse = !groupIds || _.includes(groupIds, groupId);\n            if (shouldExpandOrCollapse) {\n                // don't expand 'column groups', i.e. top level columns wrapped in a group\n                if (expand && filterGroup.isColumnGroup()) {\n                    filterGroup.expand();\n                }\n                else {\n                    filterGroup.collapse();\n                }\n                updatedGroupIds.push(groupId);\n            }\n            // recursively look for more groups to expand / collapse\n            filterGroup.getChildren().forEach(function (child) {\n                if (child instanceof ToolPanelFilterGroupComp) {\n                    updateGroupExpandState(child);\n                }\n            });\n        };\n        this.filterGroupComps.forEach(updateGroupExpandState);\n        // update header expand / collapse icon\n        this.onGroupExpanded();\n        if (groupIds) {\n            var unrecognisedGroupIds = groupIds.filter(function (groupId) { return updatedGroupIds.indexOf(groupId) < 0; });\n            if (unrecognisedGroupIds.length > 0) {\n                console.warn('AG Grid: unable to find groups for these supplied groupIds:', unrecognisedGroupIds);\n            }\n        }\n    };\n    FiltersToolPanelListPanel.prototype.expandFilters = function (expand, colIds) {\n        var updatedColIds = [];\n        var updateGroupExpandState = function (filterComp) {\n            if (filterComp instanceof ToolPanelFilterGroupComp) {\n                var anyChildrenChanged_1 = false;\n                filterComp.getChildren().forEach(function (child) {\n                    var childUpdated = updateGroupExpandState(child);\n                    if (childUpdated) {\n                        if (expand) {\n                            filterComp.expand();\n                            anyChildrenChanged_1 = true;\n                        }\n                        else if (!filterComp.isColumnGroup()) {\n                            // we only collapse columns wrapped in groups\n                            filterComp.collapse();\n                        }\n                    }\n                });\n                return anyChildrenChanged_1;\n            }\n            var colId = filterComp.getColumn().getColId();\n            var updateFilterExpandState = !colIds || _.includes(colIds, colId);\n            if (updateFilterExpandState) {\n                expand ? filterComp.expand() : filterComp.collapse();\n                updatedColIds.push(colId);\n            }\n            return updateFilterExpandState;\n        };\n        this.filterGroupComps.forEach(updateGroupExpandState);\n        // update header expand / collapse icon\n        this.onGroupExpanded();\n        if (colIds) {\n            var unrecognisedColIds = colIds.filter(function (colId) { return updatedColIds.indexOf(colId) < 0; });\n            if (unrecognisedColIds.length > 0) {\n                console.warn('AG Grid: unable to find columns for these supplied colIds:', unrecognisedColIds);\n            }\n        }\n    };\n    FiltersToolPanelListPanel.prototype.onGroupExpanded = function () {\n        this.fireExpandedEvent();\n    };\n    FiltersToolPanelListPanel.prototype.fireExpandedEvent = function () {\n        var expandedCount = 0;\n        var notExpandedCount = 0;\n        var updateExpandCounts = function (filterGroup) {\n            if (!filterGroup.isColumnGroup()) {\n                return;\n            }\n            filterGroup.isExpanded() ? expandedCount++ : notExpandedCount++;\n            filterGroup.getChildren().forEach(function (child) {\n                if (child instanceof ToolPanelFilterGroupComp) {\n                    updateExpandCounts(child);\n                }\n            });\n        };\n        this.filterGroupComps.forEach(updateExpandCounts);\n        var state;\n        if (expandedCount > 0 && notExpandedCount > 0) {\n            state = EXPAND_STATE.INDETERMINATE;\n        }\n        else if (notExpandedCount > 0) {\n            state = EXPAND_STATE.COLLAPSED;\n        }\n        else {\n            state = EXPAND_STATE.EXPANDED;\n        }\n        this.dispatchEvent({ type: 'groupExpanded', state: state });\n    };\n    FiltersToolPanelListPanel.prototype.performFilterSearch = function (searchText) {\n        this.searchFilterText = _.exists(searchText) ? searchText.toLowerCase() : null;\n        this.searchFilters(this.searchFilterText);\n    };\n    FiltersToolPanelListPanel.prototype.searchFilters = function (searchFilter) {\n        var passesFilter = function (groupName) {\n            return !_.exists(searchFilter) || groupName.toLowerCase().indexOf(searchFilter) !== -1;\n        };\n        var recursivelySearch = function (filterItem, parentPasses) {\n            if (!(filterItem instanceof ToolPanelFilterGroupComp)) {\n                return passesFilter(filterItem.getColumnFilterName() || '');\n            }\n            var children = filterItem.getChildren();\n            var groupNamePasses = passesFilter(filterItem.getFilterGroupName());\n            // if group or parent already passed - ensure this group and all children are visible\n            var alreadyPassed = parentPasses || groupNamePasses;\n            if (alreadyPassed) {\n                // ensure group visible\n                filterItem.hideGroup(false);\n                // ensure all children are visible\n                for (var i = 0; i < children.length; i++) {\n                    recursivelySearch(children[i], alreadyPassed);\n                    filterItem.hideGroupItem(false, i);\n                }\n                return true;\n            }\n            // hide group item filters\n            var anyChildPasses = false;\n            children.forEach(function (child, index) {\n                var childPasses = recursivelySearch(child, parentPasses);\n                filterItem.hideGroupItem(!childPasses, index);\n                if (childPasses) {\n                    anyChildPasses = true;\n                }\n            });\n            // hide group if no children pass\n            filterItem.hideGroup(!anyChildPasses);\n            return anyChildPasses;\n        };\n        var firstVisible;\n        var lastVisible;\n        this.filterGroupComps.forEach(function (filterGroup, idx) {\n            recursivelySearch(filterGroup, false);\n            if (firstVisible === undefined) {\n                if (!filterGroup.containsCssClass('ag-hidden')) {\n                    firstVisible = idx;\n                    lastVisible = idx;\n                }\n            }\n            else if (!filterGroup.containsCssClass('ag-hidden') && lastVisible !== idx) {\n                lastVisible = idx;\n            }\n        });\n        this.setFirstAndLastVisible(firstVisible, lastVisible);\n    };\n    FiltersToolPanelListPanel.prototype.setFirstAndLastVisible = function (firstIdx, lastIdx) {\n        this.filterGroupComps.forEach(function (filterGroup, idx) {\n            filterGroup.removeCssClass('ag-first-group-visible');\n            filterGroup.removeCssClass('ag-last-group-visible');\n            if (idx === firstIdx) {\n                filterGroup.addCssClass('ag-first-group-visible');\n            }\n            if (idx === lastIdx) {\n                filterGroup.addCssClass('ag-last-group-visible');\n            }\n        });\n    };\n    FiltersToolPanelListPanel.prototype.refreshFilters = function (isDisplayed) {\n        this.filterGroupComps.forEach(function (filterGroupComp) { return filterGroupComp.refreshFilters(isDisplayed); });\n    };\n    FiltersToolPanelListPanel.prototype.destroyFilters = function () {\n        this.filterGroupComps = this.destroyBeans(this.filterGroupComps);\n        _.clearElement(this.getGui());\n    };\n    FiltersToolPanelListPanel.prototype.destroy = function () {\n        this.destroyFilters();\n        _super.prototype.destroy.call(this);\n    };\n    FiltersToolPanelListPanel.TEMPLATE = \"<div class=\\\"ag-filter-list-panel\\\"></div>\";\n    __decorate$1X([\n        Autowired(\"gridApi\")\n    ], FiltersToolPanelListPanel.prototype, \"gridApi\", void 0);\n    __decorate$1X([\n        Autowired(\"columnApi\")\n    ], FiltersToolPanelListPanel.prototype, \"columnApi\", void 0);\n    __decorate$1X([\n        Autowired('toolPanelColDefService')\n    ], FiltersToolPanelListPanel.prototype, \"toolPanelColDefService\", void 0);\n    __decorate$1X([\n        Autowired('columnModel')\n    ], FiltersToolPanelListPanel.prototype, \"columnModel\", void 0);\n    return FiltersToolPanelListPanel;\n}(Component));\n\nvar __extends$2J = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __assign$J = (undefined && undefined.__assign) || function () {\n    __assign$J = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign$J.apply(this, arguments);\n};\nvar __decorate$1W = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar FiltersToolPanel = /** @class */ (function (_super) {\n    __extends$2J(FiltersToolPanel, _super);\n    function FiltersToolPanel() {\n        var _this = _super.call(this, FiltersToolPanel.TEMPLATE) || this;\n        _this.initialised = false;\n        _this.listenerDestroyFuncs = [];\n        return _this;\n    }\n    FiltersToolPanel.prototype.init = function (params) {\n        // if initialised is true, means this is a refresh\n        if (this.initialised) {\n            this.listenerDestroyFuncs.forEach(function (func) { return func(); });\n            this.listenerDestroyFuncs = [];\n        }\n        this.initialised = true;\n        var defaultParams = {\n            suppressExpandAll: false,\n            suppressFilterSearch: false,\n            suppressSyncLayoutWithGrid: false,\n            api: this.gridApi,\n            columnApi: this.columnApi,\n        };\n        this.params = __assign$J(__assign$J(__assign$J({}, defaultParams), params), { context: this.gridOptionsService.context });\n        this.filtersToolPanelHeaderPanel.init(this.params);\n        this.filtersToolPanelListPanel.init(this.params);\n        var hideExpand = this.params.suppressExpandAll;\n        var hideSearch = this.params.suppressFilterSearch;\n        if (hideExpand && hideSearch) {\n            this.filtersToolPanelHeaderPanel.setDisplayed(false);\n        }\n        // this is necessary to prevent a memory leak while refreshing the tool panel\n        this.listenerDestroyFuncs.push(this.addManagedListener(this.filtersToolPanelHeaderPanel, 'expandAll', this.onExpandAll.bind(this)), this.addManagedListener(this.filtersToolPanelHeaderPanel, 'collapseAll', this.onCollapseAll.bind(this)), this.addManagedListener(this.filtersToolPanelHeaderPanel, 'searchChanged', this.onSearchChanged.bind(this)), this.addManagedListener(this.filtersToolPanelListPanel, 'groupExpanded', this.onGroupExpanded.bind(this)));\n    };\n    // lazy initialise the panel\n    FiltersToolPanel.prototype.setVisible = function (visible) {\n        _super.prototype.setDisplayed.call(this, visible);\n        if (visible && !this.initialised) {\n            this.init(this.params);\n        }\n    };\n    FiltersToolPanel.prototype.onExpandAll = function () {\n        this.filtersToolPanelListPanel.expandFilterGroups(true);\n    };\n    FiltersToolPanel.prototype.onCollapseAll = function () {\n        this.filtersToolPanelListPanel.expandFilterGroups(false);\n    };\n    FiltersToolPanel.prototype.onSearchChanged = function (event) {\n        this.filtersToolPanelListPanel.performFilterSearch(event.searchText);\n    };\n    FiltersToolPanel.prototype.setFilterLayout = function (colDefs) {\n        this.filtersToolPanelListPanel.setFiltersLayout(colDefs);\n    };\n    FiltersToolPanel.prototype.onGroupExpanded = function (event) {\n        this.filtersToolPanelHeaderPanel.setExpandState(event.state);\n    };\n    FiltersToolPanel.prototype.expandFilterGroups = function (groupIds) {\n        this.filtersToolPanelListPanel.expandFilterGroups(true, groupIds);\n    };\n    FiltersToolPanel.prototype.collapseFilterGroups = function (groupIds) {\n        this.filtersToolPanelListPanel.expandFilterGroups(false, groupIds);\n    };\n    FiltersToolPanel.prototype.expandFilters = function (colIds) {\n        this.filtersToolPanelListPanel.expandFilters(true, colIds);\n    };\n    FiltersToolPanel.prototype.collapseFilters = function (colIds) {\n        this.filtersToolPanelListPanel.expandFilters(false, colIds);\n    };\n    FiltersToolPanel.prototype.syncLayoutWithGrid = function () {\n        this.filtersToolPanelListPanel.syncFilterLayout();\n    };\n    FiltersToolPanel.prototype.refresh = function () {\n        this.init(this.params);\n    };\n    // this is a user component, and IComponent has \"public destroy()\" as part of the interface.\n    // so we need to override destroy() just to make the method public.\n    FiltersToolPanel.prototype.destroy = function () {\n        _super.prototype.destroy.call(this);\n    };\n    FiltersToolPanel.TEMPLATE = \"<div class=\\\"ag-filter-toolpanel\\\">\\n            <ag-filters-tool-panel-header ref=\\\"filtersToolPanelHeaderPanel\\\"></ag-filters-tool-panel-header>\\n            <ag-filters-tool-panel-list ref=\\\"filtersToolPanelListPanel\\\"></ag-filters-tool-panel-list>\\n         </div>\";\n    __decorate$1W([\n        RefSelector('filtersToolPanelHeaderPanel')\n    ], FiltersToolPanel.prototype, \"filtersToolPanelHeaderPanel\", void 0);\n    __decorate$1W([\n        RefSelector('filtersToolPanelListPanel')\n    ], FiltersToolPanel.prototype, \"filtersToolPanelListPanel\", void 0);\n    __decorate$1W([\n        Autowired('gridApi')\n    ], FiltersToolPanel.prototype, \"gridApi\", void 0);\n    __decorate$1W([\n        Autowired('columnApi')\n    ], FiltersToolPanel.prototype, \"columnApi\", void 0);\n    return FiltersToolPanel;\n}(Component));\n\n// DO NOT UPDATE MANUALLY: Generated from script during build time\nvar VERSION$c = '29.3.5';\n\nvar FiltersToolPanelModule = {\n    version: VERSION$c,\n    moduleName: ModuleNames.FiltersToolPanelModule,\n    beans: [],\n    agStackComponents: [\n        { componentName: 'AgFiltersToolPanelHeader', componentClass: FiltersToolPanelHeaderPanel },\n        { componentName: 'AgFiltersToolPanelList', componentClass: FiltersToolPanelListPanel }\n    ],\n    userComponents: [\n        { componentName: 'agFiltersToolPanel', componentClass: FiltersToolPanel },\n    ],\n    dependantModules: [\n        SideBarModule,\n        EnterpriseCoreModule\n    ]\n};\n\nvar __extends$2I = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\n/**\n * The interval methods don't mutate Date parameters.\n */\nvar TimeInterval = /** @class */ (function () {\n    function TimeInterval(encode, decode, rangeCallback) {\n        this._encode = encode;\n        this._decode = decode;\n        this._rangeCallback = rangeCallback;\n    }\n    /**\n     * Returns a new date representing the latest interval boundary date before or equal to date.\n     * For example, `day.floor(date)` typically returns 12:00 AM local time on the given date.\n     * @param date\n     */\n    TimeInterval.prototype.floor = function (date) {\n        var d = new Date(date);\n        var e = this._encode(d);\n        return this._decode(e);\n    };\n    /**\n     * Returns a new date representing the earliest interval boundary date after or equal to date.\n     * @param date\n     */\n    TimeInterval.prototype.ceil = function (date) {\n        var d = new Date(Number(date) - 1);\n        var e = this._encode(d);\n        return this._decode(e + 1);\n    };\n    /**\n     * Returns an array of dates representing every interval boundary after or equal to start (inclusive) and before stop (exclusive).\n     * @param start Range start.\n     * @param stop Range end.\n     * @param extend If specified, the requested range will be extended to the closest \"nice\" values.\n     */\n    TimeInterval.prototype.range = function (start, stop, extend) {\n        var _a;\n        var rangeCallback = (_a = this._rangeCallback) === null || _a === void 0 ? void 0 : _a.call(this, start, stop);\n        var e0 = this._encode(extend ? this.floor(start) : this.ceil(start));\n        var e1 = this._encode(extend ? this.ceil(stop) : this.floor(stop));\n        if (e1 < e0) {\n            return [];\n        }\n        var range = [];\n        for (var e = e0; e <= e1; e++) {\n            var d = this._decode(e);\n            range.push(d);\n        }\n        rangeCallback === null || rangeCallback === void 0 ? void 0 : rangeCallback();\n        return range;\n    };\n    return TimeInterval;\n}());\nvar CountableTimeInterval = /** @class */ (function (_super) {\n    __extends$2I(CountableTimeInterval, _super);\n    function CountableTimeInterval() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    CountableTimeInterval.prototype.getOffset = function (snapTo, step) {\n        var s = typeof snapTo === 'number' || snapTo instanceof Date ? this._encode(new Date(snapTo)) : 0;\n        return Math.floor(s) % step;\n    };\n    /**\n     * Returns a filtered view of this interval representing every step'th date.\n     * It can be a number of minutes, hours, days etc.\n     * Must be a positive integer.\n     * @param step\n     */\n    CountableTimeInterval.prototype.every = function (step, options) {\n        var _this = this;\n        var offset = 0;\n        var rangeCallback;\n        var _a = (options !== null && options !== void 0 ? options : {}).snapTo, snapTo = _a === void 0 ? 'start' : _a;\n        if (typeof snapTo === 'string') {\n            var initialOffset_1 = offset;\n            rangeCallback = function (start, stop) {\n                var s = snapTo === 'start' ? start : stop;\n                offset = _this.getOffset(s, step);\n                return function () { return (offset = initialOffset_1); };\n            };\n        }\n        else if (typeof snapTo === 'number') {\n            offset = this.getOffset(new Date(snapTo), step);\n        }\n        else if (snapTo instanceof Date) {\n            offset = this.getOffset(snapTo, step);\n        }\n        var encode = function (date) {\n            var e = _this._encode(date);\n            return Math.floor((e - offset) / step);\n        };\n        var decode = function (encoded) {\n            return _this._decode(encoded * step + offset);\n        };\n        var interval = new TimeInterval(encode, decode, rangeCallback);\n        return interval;\n    };\n    return CountableTimeInterval;\n}(TimeInterval));\n\nfunction encode$b(date) {\n    return date.getTime();\n}\nfunction decode$b(encoded) {\n    return new Date(encoded);\n}\nvar millisecond = new CountableTimeInterval(encode$b, decode$b);\n\n// Common time unit sizes in milliseconds.\nnew Date(0).getFullYear();\nvar durationSecond = 1000;\nvar durationMinute = durationSecond * 60;\nvar durationHour = durationMinute * 60;\nvar durationDay = durationHour * 24;\nvar durationWeek = durationDay * 7;\nvar durationMonth = durationDay * 30;\nvar durationYear = durationDay * 365;\n\nvar offset$2 = new Date().getTimezoneOffset() * durationMinute;\nfunction encode$a(date) {\n    return Math.floor((date.getTime() - offset$2) / durationSecond);\n}\nfunction decode$a(encoded) {\n    return new Date(offset$2 + encoded * durationSecond);\n}\nvar second = new CountableTimeInterval(encode$a, decode$a);\n\nvar offset$1 = new Date().getTimezoneOffset() * durationMinute;\nfunction encode$9(date) {\n    return Math.floor((date.getTime() - offset$1) / durationMinute);\n}\nfunction decode$9(encoded) {\n    return new Date(offset$1 + encoded * durationMinute);\n}\nvar minute = new CountableTimeInterval(encode$9, decode$9);\n\nvar offset = new Date().getTimezoneOffset() * durationMinute;\nfunction encode$8(date) {\n    return Math.floor((date.getTime() - offset) / durationHour);\n}\nfunction decode$8(encoded) {\n    return new Date(offset + encoded * durationHour);\n}\nvar hour = new CountableTimeInterval(encode$8, decode$8);\n\nfunction encode$7(date) {\n    var utc = Date.UTC(date.getFullYear(), date.getMonth(), date.getDate());\n    return Math.floor(utc / durationDay);\n}\nfunction decode$7(encoded) {\n    var d = new Date(0);\n    d.setDate(d.getDate() + encoded);\n    d.setHours(0, 0, 0, 0);\n    return d;\n}\nvar day = new CountableTimeInterval(encode$7, decode$7);\n\nvar baseSunday = new Date(2023, 0, 1);\n// Set date to n-th day of the week.\nfunction weekday(n) {\n    // Use UTC for weeks calculation to get into account time zone shifts\n    var base = Date.UTC(baseSunday.getFullYear(), baseSunday.getMonth(), baseSunday.getDate()) + n * durationDay;\n    function encode(date) {\n        var utc = Date.UTC(date.getFullYear(), date.getMonth(), date.getDate());\n        return Math.floor((utc - base) / durationWeek);\n    }\n    function decode(encoded) {\n        var d = new Date(base);\n        d.setDate(d.getDate() + encoded * 7);\n        return d;\n    }\n    return new CountableTimeInterval(encode, decode);\n}\nvar sunday = weekday(0);\nvar monday = weekday(1);\nvar tuesday = weekday(2);\nvar wednesday = weekday(3);\nvar thursday = weekday(4);\nvar friday = weekday(5);\nvar saturday = weekday(6);\n\nfunction encode$6(date) {\n    return date.getFullYear() * 12 + date.getMonth();\n}\nfunction decode$6(encoded) {\n    var year = Math.floor(encoded / 12);\n    var month = encoded - year * 12;\n    return new Date(year, month, 1);\n}\nvar month = new CountableTimeInterval(encode$6, decode$6);\n\nfunction encode$5(date) {\n    return date.getFullYear();\n}\nfunction decode$5(encoded) {\n    // Note: assigning years through the constructor\n    // will break for years 0 - 99 AD (will turn 1900's).\n    var d = new Date();\n    d.setFullYear(encoded);\n    d.setMonth(0, 1);\n    d.setHours(0, 0, 0, 0);\n    return d;\n}\nvar year = new CountableTimeInterval(encode$5, decode$5);\n\nfunction encode$4(date) {\n    return Math.floor(date.getTime() / durationMinute);\n}\nfunction decode$4(encoded) {\n    return new Date(encoded * durationMinute);\n}\nvar utcMinute = new CountableTimeInterval(encode$4, decode$4);\n\nfunction encode$3(date) {\n    return Math.floor(date.getTime() / durationHour);\n}\nfunction decode$3(encoded) {\n    return new Date(encoded * durationHour);\n}\nvar utcHour = new CountableTimeInterval(encode$3, decode$3);\n\nfunction encode$2(date) {\n    return Math.floor(date.getTime() / durationDay);\n}\nfunction decode$2(encoded) {\n    var d = new Date(0);\n    d.setUTCDate(d.getUTCDate() + encoded);\n    d.setUTCHours(0, 0, 0, 0);\n    return d;\n}\nvar utcDay = new CountableTimeInterval(encode$2, decode$2);\n\nfunction encode$1(date) {\n    return date.getUTCFullYear() * 12 + date.getUTCMonth();\n}\nfunction decode$1(encoded) {\n    var year = Math.floor(encoded / 12);\n    var month = encoded - year * 12;\n    return new Date(Date.UTC(year, month, 1));\n}\nvar utcMonth = new CountableTimeInterval(encode$1, decode$1);\n\nfunction encode(date) {\n    return date.getUTCFullYear();\n}\nfunction decode(encoded) {\n    // Note: assigning years through the constructor\n    // will break for years 0 - 99 AD (will turn 1900's).\n    var d = new Date();\n    d.setUTCFullYear(encoded);\n    d.setUTCMonth(0, 1);\n    d.setUTCHours(0, 0, 0, 0);\n    return d;\n}\nvar utcYear = new CountableTimeInterval(encode, decode);\n\nvar time = /*#__PURE__*/Object.freeze({\n    __proto__: null,\n    millisecond: millisecond,\n    second: second,\n    minute: minute,\n    hour: hour,\n    day: day,\n    sunday: sunday,\n    monday: monday,\n    tuesday: tuesday,\n    wednesday: wednesday,\n    thursday: thursday,\n    friday: friday,\n    saturday: saturday,\n    month: month,\n    year: year,\n    utcMinute: utcMinute,\n    utcHour: utcHour,\n    utcDay: utcDay,\n    utcMonth: utcMonth,\n    utcYear: utcYear\n});\n\nvar MOBILE = [/Android/i, /webOS/i, /iPhone/i, /iPad/i, /iPod/i, /BlackBerry/i, /Windows Phone/i];\nfunction isDesktop() {\n    var userAgent = navigator.userAgent;\n    if (MOBILE.some(function (r) { return r.test(userAgent); })) {\n        return false;\n    }\n    return true;\n}\n\n/**\n * Wraps the native Canvas element and overrides its CanvasRenderingContext2D to\n * provide resolution independent rendering based on `window.devicePixelRatio`.\n */\nvar HdpiCanvas = /** @class */ (function () {\n    // The width/height attributes of the Canvas element default to\n    // 300/150 according to w3.org.\n    function HdpiCanvas(_a) {\n        var _b = _a.document, document = _b === void 0 ? window.document : _b, _c = _a.width, width = _c === void 0 ? 600 : _c, _d = _a.height, height = _d === void 0 ? 300 : _d, _e = _a.domLayer, domLayer = _e === void 0 ? false : _e, _f = _a.zIndex, zIndex = _f === void 0 ? 0 : _f, _g = _a.name, name = _g === void 0 ? undefined : _g, _h = _a.overrideDevicePixelRatio, overrideDevicePixelRatio = _h === void 0 ? undefined : _h;\n        this._container = undefined;\n        this._enabled = true;\n        // `NaN` is deliberate here, so that overrides are always applied\n        // and the `resetTransform` inside the `resize` method works in IE11.\n        this._pixelRatio = NaN;\n        this._width = 0;\n        this._height = 0;\n        this.document = document;\n        // Create canvas and immediately apply width + height to avoid out-of-memory\n        // errors on iOS/iPadOS Safari.\n        this.element = document.createElement('canvas');\n        this.element.width = width;\n        this.element.height = height;\n        this.context = this.element.getContext('2d');\n        this.imageSource = this.context.canvas;\n        var style = this.element.style;\n        style.userSelect = 'none';\n        style.display = 'block';\n        if (domLayer) {\n            style.position = 'absolute';\n            style.zIndex = String(zIndex);\n            style.top = '0';\n            style.left = '0';\n            style.pointerEvents = 'none';\n            style.opacity = \"1\";\n            if (name) {\n                this.element.id = name;\n            }\n        }\n        this.setPixelRatio(overrideDevicePixelRatio);\n        this.resize(width, height);\n    }\n    Object.defineProperty(HdpiCanvas.prototype, \"container\", {\n        get: function () {\n            return this._container;\n        },\n        set: function (value) {\n            if (this._container !== value) {\n                this.remove();\n                if (value) {\n                    value.appendChild(this.element);\n                }\n                this._container = value;\n            }\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(HdpiCanvas.prototype, \"enabled\", {\n        get: function () {\n            return this._enabled;\n        },\n        set: function (value) {\n            this.element.style.display = value ? 'block' : 'none';\n            this._enabled = !!value;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    HdpiCanvas.prototype.remove = function () {\n        var parentNode = this.element.parentNode;\n        if (parentNode != null) {\n            parentNode.removeChild(this.element);\n        }\n    };\n    HdpiCanvas.prototype.destroy = function () {\n        this.element.remove();\n        // Workaround memory allocation quirks in iOS Safari by resizing to 0x0 and clearing.\n        // See https://bugs.webkit.org/show_bug.cgi?id=195325.\n        this.element.width = 0;\n        this.element.height = 0;\n        this.context.clearRect(0, 0, 0, 0);\n        Object.freeze(this);\n    };\n    HdpiCanvas.prototype.snapshot = function () {\n        // No-op for compatibility with HdpiOffscreenCanvas.\n    };\n    HdpiCanvas.prototype.clear = function () {\n        this.context.save();\n        this.context.resetTransform();\n        this.context.clearRect(0, 0, this.width, this.height);\n        this.context.restore();\n    };\n    HdpiCanvas.prototype.toImage = function () {\n        var img = this.document.createElement('img');\n        img.src = this.getDataURL();\n        return img;\n    };\n    HdpiCanvas.prototype.getDataURL = function (type) {\n        return this.element.toDataURL(type);\n    };\n    /**\n     * @param fileName The name of the downloaded file.\n     * @param fileFormat The file format, the default is `image/png`\n     */\n    HdpiCanvas.prototype.download = function (fileName, fileFormat) {\n        if (fileFormat === void 0) { fileFormat = 'image/png'; }\n        fileName = (fileName || '').trim() || 'image';\n        var dataUrl = this.getDataURL(fileFormat);\n        var document = this.document;\n        var a = document.createElement('a');\n        a.href = dataUrl;\n        a.download = fileName;\n        a.style.display = 'none';\n        document.body.appendChild(a); // required for the `click` to work in Firefox\n        a.click();\n        document.body.removeChild(a);\n    };\n    Object.defineProperty(HdpiCanvas.prototype, \"pixelRatio\", {\n        get: function () {\n            return this._pixelRatio;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    /**\n     * Changes the pixel ratio of the Canvas element to the given value,\n     * or uses the window.devicePixelRatio (default), then resizes the Canvas\n     * element accordingly (default).\n     */\n    HdpiCanvas.prototype.setPixelRatio = function (ratio) {\n        var pixelRatio = ratio !== null && ratio !== void 0 ? ratio : window.devicePixelRatio;\n        if (!isDesktop()) {\n            // Mobile browsers have stricter memory limits, we reduce rendering resolution to\n            // improve stability on mobile browsers. iOS Safari 12->16 are pain-points since they\n            // have memory allocation quirks - see https://bugs.webkit.org/show_bug.cgi?id=195325.\n            pixelRatio = 1;\n        }\n        HdpiCanvas.overrideScale(this.context, pixelRatio);\n        this._pixelRatio = pixelRatio;\n    };\n    Object.defineProperty(HdpiCanvas.prototype, \"pixelated\", {\n        get: function () {\n            return this.element.style.imageRendering === 'pixelated';\n        },\n        set: function (value) {\n            this.element.style.imageRendering = value ? 'pixelated' : 'auto';\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(HdpiCanvas.prototype, \"width\", {\n        get: function () {\n            return this._width;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(HdpiCanvas.prototype, \"height\", {\n        get: function () {\n            return this._height;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    HdpiCanvas.prototype.resize = function (width, height) {\n        if (!(width > 0 && height > 0)) {\n            return;\n        }\n        var _a = this, element = _a.element, context = _a.context, pixelRatio = _a.pixelRatio;\n        element.width = Math.round(width * pixelRatio);\n        element.height = Math.round(height * pixelRatio);\n        element.style.width = width + 'px';\n        element.style.height = height + 'px';\n        context.resetTransform();\n        this._width = width;\n        this._height = height;\n    };\n    Object.defineProperty(HdpiCanvas, \"textMeasuringContext\", {\n        get: function () {\n            if (this._textMeasuringContext) {\n                return this._textMeasuringContext;\n            }\n            var canvas = document.createElement('canvas');\n            this._textMeasuringContext = canvas.getContext('2d');\n            return this._textMeasuringContext;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(HdpiCanvas, \"svgText\", {\n        get: function () {\n            if (this._svgText) {\n                return this._svgText;\n            }\n            var xmlns = 'http://www.w3.org/2000/svg';\n            var svg = document.createElementNS(xmlns, 'svg');\n            svg.setAttribute('width', '100');\n            svg.setAttribute('height', '100');\n            // Add a descriptive class name in case someone sees this SVG element\n            // in devtools and wonders about its purpose:\n            if (svg.classList) {\n                svg.classList.add('text-measuring-svg');\n            }\n            else {\n                svg.setAttribute('class', 'text-measuring-svg');\n            }\n            svg.style.position = 'absolute';\n            svg.style.top = '-1000px';\n            svg.style.visibility = 'hidden';\n            var svgText = document.createElementNS(xmlns, 'text');\n            svgText.setAttribute('x', '0');\n            svgText.setAttribute('y', '30');\n            svgText.setAttribute('text', 'black');\n            svg.appendChild(svgText);\n            document.body.appendChild(svg);\n            this._svgText = svgText;\n            return svgText;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(HdpiCanvas, \"has\", {\n        get: function () {\n            if (this._has) {\n                return this._has;\n            }\n            var isChrome = navigator.userAgent.indexOf('Chrome') > -1;\n            var isFirefox = navigator.userAgent.indexOf('Firefox') > -1;\n            var isSafari = !isChrome && navigator.userAgent.indexOf('Safari') > -1;\n            this._has = Object.freeze({\n                textMetrics: this.textMeasuringContext.measureText('test').actualBoundingBoxDescent !== undefined &&\n                    // Firefox implemented advanced TextMetrics object in v74:\n                    // https://bugzilla.mozilla.org/show_bug.cgi?id=1102584\n                    // but it's buggy, so we'll keep using the SVG for text measurement in Firefox for now.\n                    !isFirefox &&\n                    !isSafari,\n                getTransform: this.textMeasuringContext.getTransform !== undefined,\n            });\n            return this._has;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    HdpiCanvas.measureText = function (text, font, textBaseline, textAlign) {\n        var ctx = this.textMeasuringContext;\n        ctx.font = font;\n        ctx.textBaseline = textBaseline;\n        ctx.textAlign = textAlign;\n        return ctx.measureText(text);\n    };\n    /**\n     * Returns the width and height of the measured text.\n     * @param text The single-line text to measure.\n     * @param font The font shorthand string.\n     */\n    HdpiCanvas.getTextSize = function (text, font) {\n        if (this.has.textMetrics) {\n            var ctx = this.textMeasuringContext;\n            ctx.font = font;\n            var metrics = ctx.measureText(text);\n            return {\n                width: metrics.width,\n                height: metrics.actualBoundingBoxAscent + metrics.actualBoundingBoxDescent,\n            };\n        }\n        else {\n            return this.measureSvgText(text, font);\n        }\n    };\n    HdpiCanvas.measureSvgText = function (text, font) {\n        var cache = this.textSizeCache;\n        var fontCache = cache[font];\n        // Note: consider not caching the size of numeric strings.\n        // For example: if (isNaN(+text)) { // skip\n        if (fontCache) {\n            var size_1 = fontCache[text];\n            if (size_1) {\n                return size_1;\n            }\n        }\n        else {\n            cache[font] = {};\n        }\n        var svgText = this.svgText;\n        svgText.style.font = font;\n        svgText.textContent = text;\n        // `getBBox` returns an instance of `SVGRect` with the same `width` and `height`\n        // measurements as `DOMRect` instance returned by the `getBoundingClientRect`.\n        // But the `SVGRect` instance has half the properties of the `DOMRect`,\n        // so we use the `getBBox` method.\n        var bbox = svgText.getBBox();\n        var size = {\n            width: bbox.width,\n            height: bbox.height,\n        };\n        cache[font][text] = size;\n        return size;\n    };\n    HdpiCanvas.overrideScale = function (ctx, scale) {\n        var depth = 0;\n        var overrides = {\n            save: function () {\n                this.$save();\n                depth++;\n            },\n            restore: function () {\n                if (depth > 0) {\n                    this.$restore();\n                    depth--;\n                }\n                else {\n                    throw new Error('AG Charts - Unable to restore() past depth 0');\n                }\n            },\n            setTransform: function (a, b, c, d, e, f) {\n                if (typeof a === 'object') {\n                    this.$setTransform(a);\n                }\n                else {\n                    this.$setTransform(a * scale, b * scale, c * scale, d * scale, e * scale, f * scale);\n                }\n            },\n            resetTransform: function () {\n                // As of Jan 8, 2019, `resetTransform` is still an \"experimental technology\",\n                // and doesn't work in IE11 and Edge 44.\n                this.$setTransform(scale, 0, 0, scale, 0, 0);\n            },\n            verifyDepthZero: function () {\n                if (depth !== 0) {\n                    throw new Error('AG Charts - Save/restore depth is non-zero: ' + depth);\n                }\n            },\n        };\n        for (var name_1 in overrides) {\n            if (Object.prototype.hasOwnProperty.call(overrides, name_1)) {\n                // Save native methods under prefixed names,\n                // if this hasn't been done by the previous overrides already.\n                if (!ctx['$' + name_1]) {\n                    ctx['$' + name_1] = ctx[name_1];\n                }\n                // Replace native methods with overrides,\n                // or previous overrides with the new ones.\n                ctx[name_1] = overrides[name_1];\n            }\n        }\n    };\n    HdpiCanvas.textSizeCache = {};\n    return HdpiCanvas;\n}());\n\n// For small data structs like a bounding box, objects are superior to arrays\n// in terms of performance (by 3-4% in Chrome 71, Safari 12 and by 20% in Firefox 64).\n// They are also self descriptive and harder to abuse.\n// For example, one has to do:\n// `ctx.strokeRect(bbox.x, bbox.y, bbox.width, bbox.height);`\n// rather than become enticed by the much slower:\n// `ctx.strokeRect(...bbox);`\n// https://jsperf.com/array-vs-object-create-access\nvar __assign$I = (undefined && undefined.__assign) || function () {\n    __assign$I = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign$I.apply(this, arguments);\n};\nvar __read$10 = (undefined && undefined.__read) || function (o, n) {\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n    if (!m) return o;\n    var i = m.call(o), r, ar = [], e;\n    try {\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n    }\n    catch (error) { e = { error: error }; }\n    finally {\n        try {\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\n        }\n        finally { if (e) throw e.error; }\n    }\n    return ar;\n};\nvar BBox = /** @class */ (function () {\n    function BBox(x, y, width, height) {\n        this.x = x;\n        this.y = y;\n        this.width = width;\n        this.height = height;\n    }\n    BBox.prototype.clone = function () {\n        var _a = this, x = _a.x, y = _a.y, width = _a.width, height = _a.height;\n        return new BBox(x, y, width, height);\n    };\n    BBox.prototype.equals = function (other) {\n        return this.x === other.x && this.y === other.y && this.width === other.width && this.height === other.height;\n    };\n    BBox.prototype.containsPoint = function (x, y) {\n        return x >= this.x && x <= this.x + this.width && y >= this.y && y <= this.y + this.height;\n    };\n    BBox.prototype.collidesBBox = function (other) {\n        return (this.x < other.x + other.width &&\n            this.x + this.width > other.x &&\n            this.y < other.y + other.height &&\n            this.y + this.height > other.y);\n    };\n    BBox.prototype.isInfinite = function () {\n        return (Math.abs(this.x) === Infinity ||\n            Math.abs(this.y) === Infinity ||\n            Math.abs(this.width) === Infinity ||\n            Math.abs(this.height) === Infinity);\n    };\n    BBox.prototype.shrink = function (amount, position) {\n        var _this = this;\n        var apply = function (pos, amt) {\n            switch (pos) {\n                case 'top':\n                    _this.y += amt;\n                // eslint-disable-next-line no-fallthrough\n                case 'bottom':\n                    _this.height -= amt;\n                    break;\n                case 'left':\n                    _this.x += amt;\n                // eslint-disable-next-line no-fallthrough\n                case 'right':\n                    _this.width -= amt;\n                    break;\n                case 'vertical':\n                    _this.y += amt;\n                    _this.height -= amt * 2;\n                    break;\n                case 'horizontal':\n                    _this.x += amt;\n                    _this.width -= amt * 2;\n                    break;\n                default:\n                    _this.x += amt;\n                    _this.width -= amt * 2;\n                    _this.y += amt;\n                    _this.height -= amt * 2;\n            }\n        };\n        if (typeof amount === 'number') {\n            apply(position, amount);\n        }\n        else {\n            Object.entries(amount).forEach(function (_a) {\n                var _b = __read$10(_a, 2), pos = _b[0], amt = _b[1];\n                return apply(pos, amt);\n            });\n        }\n        return this;\n    };\n    BBox.prototype.grow = function (amount, position) {\n        if (typeof amount === 'number') {\n            this.shrink(-amount, position);\n        }\n        else {\n            var paddingCopy = __assign$I({}, amount);\n            for (var key in paddingCopy) {\n                paddingCopy[key] *= -1;\n            }\n            this.shrink(paddingCopy);\n        }\n        return this;\n    };\n    BBox.merge = function (boxes) {\n        var left = Infinity;\n        var top = Infinity;\n        var right = -Infinity;\n        var bottom = -Infinity;\n        boxes.forEach(function (box) {\n            if (box.x < left) {\n                left = box.x;\n            }\n            if (box.y < top) {\n                top = box.y;\n            }\n            if (box.x + box.width > right) {\n                right = box.x + box.width;\n            }\n            if (box.y + box.height > bottom) {\n                bottom = box.y + box.height;\n            }\n        });\n        return new BBox(left, top, right - left, bottom - top);\n    };\n    return BBox;\n}());\n\nvar __read$$ = (undefined && undefined.__read) || function (o, n) {\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n    if (!m) return o;\n    var i = m.call(o), r, ar = [], e;\n    try {\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n    }\n    catch (error) { e = { error: error }; }\n    finally {\n        try {\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\n        }\n        finally { if (e) throw e.error; }\n    }\n    return ar;\n};\n/**\n * As of Jan 8, 2019, Firefox still doesn't implement\n * `getTransform(): DOMMatrix;`\n * `setTransform(transform?: DOMMatrix2DInit)`\n * in the `CanvasRenderingContext2D`.\n * Bug: https://bugzilla.mozilla.org/show_bug.cgi?id=928150\n * IE11 and Edge 44 also don't have the support.\n * Thus this class, to keep track of the current transform and\n * combine transformations.\n * Standards:\n * https://html.spec.whatwg.org/dev/canvas.html\n * https://www.w3.org/TR/geometry-1/\n */\nvar Matrix = /** @class */ (function () {\n    function Matrix(elements) {\n        if (elements === void 0) { elements = [1, 0, 0, 1, 0, 0]; }\n        this.elements = elements;\n    }\n    Matrix.prototype.setElements = function (elements) {\n        var e = this.elements;\n        // `this.elements = elements.slice()` is 4-5 times slower\n        // (in Chrome 71 and FF 64) than manually copying elements,\n        // since slicing allocates new memory.\n        // The performance of passing parameters individually\n        // vs as an array is about the same in both browsers, so we\n        // go with a single (array of elements) parameter, because\n        // `setElements(elements)` and `setElements([a, b, c, d, e, f])`\n        // calls give us roughly the same performance, versus\n        // `setElements(...elements)` and `setElements(a, b, c, d, e, f)`,\n        // where the spread operator causes a 20-30x performance drop\n        // (30x when compiled to ES5's `.apply(this, elements)`\n        //  20x when used natively).\n        e[0] = elements[0];\n        e[1] = elements[1];\n        e[2] = elements[2];\n        e[3] = elements[3];\n        e[4] = elements[4];\n        e[5] = elements[5];\n        return this;\n    };\n    Object.defineProperty(Matrix.prototype, \"identity\", {\n        get: function () {\n            var e = this.elements;\n            return e[0] === 1 && e[1] === 0 && e[2] === 0 && e[3] === 1 && e[4] === 0 && e[5] === 0;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(Matrix.prototype, \"a\", {\n        get: function () {\n            return this.elements[0];\n        },\n        set: function (value) {\n            this.elements[0] = value;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(Matrix.prototype, \"b\", {\n        get: function () {\n            return this.elements[1];\n        },\n        set: function (value) {\n            this.elements[1] = value;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(Matrix.prototype, \"c\", {\n        get: function () {\n            return this.elements[2];\n        },\n        set: function (value) {\n            this.elements[2] = value;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(Matrix.prototype, \"d\", {\n        get: function () {\n            return this.elements[3];\n        },\n        set: function (value) {\n            this.elements[3] = value;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(Matrix.prototype, \"e\", {\n        get: function () {\n            return this.elements[4];\n        },\n        set: function (value) {\n            this.elements[4] = value;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(Matrix.prototype, \"f\", {\n        get: function () {\n            return this.elements[5];\n        },\n        set: function (value) {\n            this.elements[5] = value;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    /**\n     * Performs the AxB matrix multiplication and saves the result\n     * to `C`, if given, or to `A` otherwise.\n     */\n    Matrix.prototype.AxB = function (A, B, C) {\n        var a = A[0] * B[0] + A[2] * B[1], b = A[1] * B[0] + A[3] * B[1], c = A[0] * B[2] + A[2] * B[3], d = A[1] * B[2] + A[3] * B[3], e = A[0] * B[4] + A[2] * B[5] + A[4], f = A[1] * B[4] + A[3] * B[5] + A[5];\n        C = C || A;\n        C[0] = a;\n        C[1] = b;\n        C[2] = c;\n        C[3] = d;\n        C[4] = e;\n        C[5] = f;\n    };\n    /**\n     * The `other` matrix gets post-multiplied to the current matrix.\n     * Returns the current matrix.\n     * @param other\n     */\n    Matrix.prototype.multiplySelf = function (other) {\n        this.AxB(this.elements, other.elements);\n        return this;\n    };\n    /**\n     * The `other` matrix gets post-multiplied to the current matrix.\n     * Returns a new matrix.\n     * @param other\n     */\n    Matrix.prototype.multiply = function (other) {\n        var elements = new Array(6);\n        this.AxB(this.elements, other.elements, elements);\n        return new Matrix(elements);\n    };\n    Matrix.prototype.preMultiplySelf = function (other) {\n        this.AxB(other.elements, this.elements, this.elements);\n        return this;\n    };\n    /**\n     * Returns the inverse of this matrix as a new matrix.\n     */\n    Matrix.prototype.inverse = function () {\n        var el = this.elements;\n        var a = el[0], b = el[1], c = el[2], d = el[3];\n        var e = el[4], f = el[5];\n        var rD = 1 / (a * d - b * c); // reciprocal of determinant\n        a *= rD;\n        b *= rD;\n        c *= rD;\n        d *= rD;\n        return new Matrix([d, -b, -c, a, c * f - d * e, b * e - a * f]);\n    };\n    /**\n     * Save the inverse of this matrix to the given matrix.\n     */\n    Matrix.prototype.inverseTo = function (other) {\n        var el = this.elements;\n        var a = el[0], b = el[1], c = el[2], d = el[3];\n        var e = el[4], f = el[5];\n        var rD = 1 / (a * d - b * c); // reciprocal of determinant\n        a *= rD;\n        b *= rD;\n        c *= rD;\n        d *= rD;\n        other.setElements([d, -b, -c, a, c * f - d * e, b * e - a * f]);\n        return this;\n    };\n    Matrix.prototype.invertSelf = function () {\n        var el = this.elements;\n        var a = el[0], b = el[1], c = el[2], d = el[3];\n        var e = el[4], f = el[5];\n        var rD = 1 / (a * d - b * c); // reciprocal of determinant\n        a *= rD;\n        b *= rD;\n        c *= rD;\n        d *= rD;\n        el[0] = d;\n        el[1] = -b;\n        el[2] = -c;\n        el[3] = a;\n        el[4] = c * f - d * e;\n        el[5] = b * e - a * f;\n        return this;\n    };\n    Matrix.prototype.transformPoint = function (x, y) {\n        var e = this.elements;\n        return {\n            x: x * e[0] + y * e[2] + e[4],\n            y: x * e[1] + y * e[3] + e[5],\n        };\n    };\n    Matrix.prototype.transformBBox = function (bbox, target) {\n        var elements = this.elements;\n        var xx = elements[0];\n        var xy = elements[1];\n        var yx = elements[2];\n        var yy = elements[3];\n        var h_w = bbox.width * 0.5;\n        var h_h = bbox.height * 0.5;\n        var cx = bbox.x + h_w;\n        var cy = bbox.y + h_h;\n        var w = Math.abs(h_w * xx) + Math.abs(h_h * yx);\n        var h = Math.abs(h_w * xy) + Math.abs(h_h * yy);\n        if (!target) {\n            target = new BBox(0, 0, 0, 0);\n        }\n        target.x = cx * xx + cy * yx + elements[4] - w;\n        target.y = cx * xy + cy * yy + elements[5] - h;\n        target.width = w + w;\n        target.height = h + h;\n        return target;\n    };\n    Matrix.prototype.toContext = function (ctx) {\n        // It's fair to say that matrix multiplications are not cheap.\n        // However, updating path definitions on every frame isn't either, so\n        // it may be cheaper to just translate paths. It's also fair to\n        // say, that most paths will have to be re-rendered anyway, say\n        // rectangle paths in a bar chart, where an animation would happen when\n        // the data set changes and existing bars are morphed into new ones.\n        // Or a pie chart, where old sectors are also morphed into new ones.\n        // Same for the line chart. The only plausible case where translating\n        // existing paths would be enough, is the scatter chart, where marker\n        // icons, typically circles, stay the same size. But if circle radii\n        // are bound to some data points, even circle paths would have to be\n        // updated. And thus it makes sense to optimize for fewer matrix\n        // transforms, where transform matrices of paths are mostly identity\n        // matrices and `x`/`y`, `centerX`/`centerY` and similar properties\n        // are used to define a path at specific coordinates. And only groups\n        // are used to collectively apply a transform to a set of nodes.\n        // If the matrix is mostly identity (95% of the time),\n        // the `if (this.isIdentity)` check can make this call 3-4 times\n        // faster on average: https://jsperf.com/matrix-check-first-vs-always-set\n        if (this.identity) {\n            return;\n        }\n        var e = this.elements;\n        ctx.transform(e[0], e[1], e[2], e[3], e[4], e[5]);\n    };\n    Matrix.flyweight = function (sourceMatrix) {\n        return Matrix.instance.setElements(sourceMatrix.elements);\n    };\n    Matrix.updateTransformMatrix = function (matrix, scalingX, scalingY, rotation, translationX, translationY, opts) {\n        // Assume that centers of scaling and rotation are at the origin.\n        var _a = __read$$([0, 0], 2), bbcx = _a[0], bbcy = _a[1];\n        var sx = scalingX;\n        var sy = scalingY;\n        var scx;\n        var scy;\n        if (sx === 1 && sy === 1) {\n            scx = 0;\n            scy = 0;\n        }\n        else {\n            scx = (opts === null || opts === void 0 ? void 0 : opts.scalingCenterX) == null ? bbcx : opts === null || opts === void 0 ? void 0 : opts.scalingCenterX;\n            scy = (opts === null || opts === void 0 ? void 0 : opts.scalingCenterY) == null ? bbcy : opts === null || opts === void 0 ? void 0 : opts.scalingCenterY;\n        }\n        var r = rotation;\n        var cos = Math.cos(r);\n        var sin = Math.sin(r);\n        var rcx;\n        var rcy;\n        if (r === 0) {\n            rcx = 0;\n            rcy = 0;\n        }\n        else {\n            rcx = (opts === null || opts === void 0 ? void 0 : opts.rotationCenterX) == null ? bbcx : opts === null || opts === void 0 ? void 0 : opts.rotationCenterX;\n            rcy = (opts === null || opts === void 0 ? void 0 : opts.rotationCenterY) == null ? bbcy : opts === null || opts === void 0 ? void 0 : opts.rotationCenterY;\n        }\n        var tx = translationX;\n        var ty = translationY;\n        // The transform matrix `M` is a result of the following transformations:\n        // 1) translate the center of scaling to the origin\n        // 2) scale\n        // 3) translate back\n        // 4) translate the center of rotation to the origin\n        // 5) rotate\n        // 6) translate back\n        // 7) translate\n        //         (7)          (6)             (5)             (4)           (3)           (2)           (1)\n        //     | 1 0 tx |   | 1 0 rcx |   | cos -sin 0 |   | 1 0 -rcx |   | 1 0 scx |   | sx 0 0 |   | 1 0 -scx |\n        // M = | 0 1 ty | * | 0 1 rcy | * | sin  cos 0 | * | 0 1 -rcy | * | 0 1 scy | * | 0 sy 0 | * | 0 1 -scy |\n        //     | 0 0  1 |   | 0 0  1  |   |  0    0  1 |   | 0 0  1   |   | 0 0  1  |   | 0  0 0 |   | 0 0  1   |\n        // Translation after steps 1-4 above:\n        var tx4 = scx * (1 - sx) - rcx;\n        var ty4 = scy * (1 - sy) - rcy;\n        matrix.setElements([\n            cos * sx,\n            sin * sx,\n            -sin * sy,\n            cos * sy,\n            cos * tx4 - sin * ty4 + rcx + tx,\n            sin * tx4 + cos * ty4 + rcy + ty,\n        ]);\n        return matrix;\n    };\n    Matrix.fromContext = function (ctx) {\n        var domMatrix = ctx.getTransform();\n        return new Matrix([domMatrix.a, domMatrix.b, domMatrix.c, domMatrix.d, domMatrix.e, domMatrix.f]);\n    };\n    Matrix.instance = new Matrix();\n    return Matrix;\n}());\n\nvar ID_MAP = {};\nfunction createId$1(instance) {\n    var _a;\n    var constructor = instance.constructor;\n    var className = Object.prototype.hasOwnProperty.call(constructor, 'className')\n        ? constructor.className\n        : constructor.name;\n    if (!className) {\n        throw new Error(\"The \" + constructor + \" is missing the 'className' property.\");\n    }\n    var nextId = ((_a = ID_MAP[className]) !== null && _a !== void 0 ? _a : 0) + 1;\n    ID_MAP[className] = nextId;\n    return className + '-' + nextId;\n}\n\nfunction windowValue(name) {\n    /**\n     * Redeclaration of window that is safe for use with Gatsby server-side (webpack) compilation.\n     */\n    var WINDOW = typeof window !== 'undefined'\n        ? window\n        : // typeof global !== 'undefined' ? (global as any) :\n            undefined;\n    return WINDOW === null || WINDOW === void 0 ? void 0 : WINDOW[name];\n}\n\nvar RedrawType;\n(function (RedrawType) {\n    RedrawType[RedrawType[\"NONE\"] = 0] = \"NONE\";\n    // Canvas doesn't need clearing, an incremental re-rerender is sufficient.\n    RedrawType[RedrawType[\"TRIVIAL\"] = 1] = \"TRIVIAL\";\n    // Group needs clearing, a semi-incremental re-render is sufficient.\n    RedrawType[RedrawType[\"MINOR\"] = 2] = \"MINOR\";\n    // Canvas needs to be cleared for these redraw types.\n    RedrawType[RedrawType[\"MAJOR\"] = 3] = \"MAJOR\";\n})(RedrawType || (RedrawType = {}));\n/** @returns true if eval() is disabled in the current execution context. */\nfunction evalAvailable() {\n    try {\n        eval('');\n        return true;\n    }\n    catch (e) {\n        return false;\n    }\n}\nvar EVAL_USEABLE = evalAvailable();\nfunction SceneChangeDetection(opts) {\n    var _a = opts || {}, _b = _a.redraw, redraw = _b === void 0 ? RedrawType.TRIVIAL : _b, _c = _a.type, type = _c === void 0 ? 'normal' : _c, changeCb = _a.changeCb, convertor = _a.convertor, _d = _a.checkDirtyOnAssignment, checkDirtyOnAssignment = _d === void 0 ? false : _d;\n    var debug = windowValue('agChartsSceneChangeDetectionDebug') != null;\n    return function (target, key) {\n        // `target` is either a constructor (static member) or prototype (instance member)\n        var privateKey = \"__\" + key;\n        if (target[key]) {\n            return;\n        }\n        if (EVAL_USEABLE) {\n            // Optimised code-path.\n            // Remove all conditional logic from runtime - generate a setter with the exact necessary\n            // steps, as these setters are called a LOT during update cycles.\n            var setterJs = \"\\n                \" + (debug ? 'var setCount = 0;' : '') + \"\\n                function set_\" + key + \"(value) {\\n                    const oldValue = this.\" + privateKey + \";\\n                    \" + (convertor ? 'value = convertor(value);' : '') + \"\\n                    if (value !== oldValue) {\\n                        this.\" + privateKey + \" = value;\\n                        \" + (debug\n                ? \"console.log({ t: this, property: '\" + key + \"', oldValue, value, stack: new Error().stack });\"\n                : '') + \"\\n                        \" + (type === 'normal' ? \"this.markDirty(this, \" + redraw + \");\" : '') + \"\\n                        \" + (type === 'transform' ? \"this.markDirtyTransform(\" + redraw + \");\" : '') + \"\\n                        \" + (type === 'path'\n                ? \"if (!this._dirtyPath) { this._dirtyPath = true; this.markDirty(this, \" + redraw + \"); }\"\n                : '') + \"\\n                        \" + (type === 'font'\n                ? \"if (!this._dirtyFont) { this._dirtyFont = true; this.markDirty(this, \" + redraw + \"); }\"\n                : '') + \"\\n                        \" + (changeCb ? 'changeCb(this);' : '') + \"\\n                    }\\n                    \" + (checkDirtyOnAssignment\n                ? \"if (value != null && value._dirty > \" + RedrawType.NONE + \") { this.markDirty(value, value._dirty); }\"\n                : '') + \"\\n                };\\n                set_\" + key + \";\\n            \";\n            var getterJs = \"\\n                function get_\" + key + \"() {\\n                    return this.\" + privateKey + \";\\n                };\\n                get_\" + key + \";\\n            \";\n            Object.defineProperty(target, key, {\n                set: eval(setterJs),\n                get: eval(getterJs),\n                enumerable: true,\n                configurable: true,\n            });\n        }\n        else {\n            // Unoptimised but 'safe' code-path, for environments with CSP headers and no 'unsafe-eval'.\n            // We deliberately do not support debug branches found in the optimised path above, since\n            // for large data-set series performance deteriorates with every extra branch here.\n            var setter = function (value) {\n                var oldValue = this[privateKey];\n                value = convertor ? convertor(value) : value;\n                if (value !== oldValue) {\n                    this[privateKey] = value;\n                    if (type === 'normal')\n                        this.markDirty(this, redraw);\n                    if (type === 'transform')\n                        this.markDirtyTransform(redraw);\n                    if (type === 'path' && !this._dirtyPath) {\n                        this._dirtyPath = true;\n                        this.markDirty(this, redraw);\n                    }\n                    if (type === 'font' && !this._dirtyFont) {\n                        this._dirtyFont = true;\n                        this.markDirty(this, redraw);\n                    }\n                    if (changeCb)\n                        changeCb(this);\n                }\n                if (checkDirtyOnAssignment && value != null && value._dirty > RedrawType.NONE)\n                    this.markDirty(value, value._dirty);\n            };\n            var getter = function () {\n                return this[privateKey];\n            };\n            Object.defineProperty(target, key, {\n                set: setter,\n                get: getter,\n                enumerable: true,\n                configurable: true,\n            });\n        }\n    };\n}\nvar ChangeDetectable = /** @class */ (function () {\n    function ChangeDetectable() {\n        this._dirty = RedrawType.MAJOR;\n    }\n    ChangeDetectable.prototype.markDirty = function (_source, type) {\n        if (type === void 0) { type = RedrawType.TRIVIAL; }\n        if (this._dirty > type) {\n            return;\n        }\n        this._dirty = type;\n    };\n    ChangeDetectable.prototype.markClean = function (_opts) {\n        this._dirty = RedrawType.NONE;\n    };\n    ChangeDetectable.prototype.isDirty = function () {\n        return this._dirty > RedrawType.NONE;\n    };\n    return ChangeDetectable;\n}());\n\nvar __extends$2H = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$1V = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __values$B = (undefined && undefined.__values) || function(o) {\n    var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n    if (m) return m.call(o);\n    if (o && typeof o.length === \"number\") return {\n        next: function () {\n            if (o && i >= o.length) o = void 0;\n            return { value: o && o[i++], done: !o };\n        }\n    };\n    throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nvar __read$_ = (undefined && undefined.__read) || function (o, n) {\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n    if (!m) return o;\n    var i = m.call(o), r, ar = [], e;\n    try {\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n    }\n    catch (error) { e = { error: error }; }\n    finally {\n        try {\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\n        }\n        finally { if (e) throw e.error; }\n    }\n    return ar;\n};\nvar __spread$B = (undefined && undefined.__spread) || function () {\n    for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read$_(arguments[i]));\n    return ar;\n};\nvar PointerEvents;\n(function (PointerEvents) {\n    PointerEvents[PointerEvents[\"All\"] = 0] = \"All\";\n    PointerEvents[PointerEvents[\"None\"] = 1] = \"None\";\n})(PointerEvents || (PointerEvents = {}));\nvar zIndexChangedCallback = function (o) {\n    if (o.parent) {\n        o.parent.dirtyZIndex = true;\n    }\n    o.zIndexChanged();\n};\n/**\n * Abstract scene graph node.\n * Each node can have zero or one parent and belong to zero or one scene.\n */\nvar Node = /** @class */ (function (_super) {\n    __extends$2H(Node, _super);\n    function Node() {\n        var _this = _super !== null && _super.apply(this, arguments) || this;\n        /** Unique number to allow creation order to be easily determined. */\n        _this.serialNumber = Node._nextSerialNumber++;\n        /**\n         * Unique node ID in the form `ClassName-NaturalNumber`.\n         */\n        _this.id = createId$1(_this);\n        /**\n         * Some number to identify this node, typically within a `Group` node.\n         * Usually this will be some enum value used as a selector.\n         */\n        _this.tag = NaN;\n        /**\n         * To simplify the type system (especially in Selections) we don't have the `Parent` node\n         * (one that has children). Instead, we mimic HTML DOM, where any node can have children.\n         * But we still need to distinguish regular leaf nodes from container leafs somehow.\n         */\n        _this.isContainerNode = false;\n        _this._children = [];\n        // Used to check for duplicate nodes.\n        _this.childSet = {}; // new Set<Node>()\n        // These matrices may need to have package level visibility\n        // for performance optimization purposes.\n        _this.matrix = new Matrix();\n        _this.inverseMatrix = new Matrix();\n        _this._dirtyTransform = false;\n        _this.scalingX = 1;\n        _this.scalingY = 1;\n        /**\n         * The center of scaling.\n         * The default value of `null` means the scaling center will be\n         * determined automatically, as the center of the bounding box\n         * of a node.\n         */\n        _this.scalingCenterX = null;\n        _this.scalingCenterY = null;\n        _this.rotationCenterX = null;\n        _this.rotationCenterY = null;\n        /**\n         * Rotation angle in radians.\n         * The value is set as is. No normalization to the [-180, 180) or [0, 360)\n         * interval is performed.\n         */\n        _this.rotation = 0;\n        _this.translationX = 0;\n        _this.translationY = 0;\n        _this.visible = true;\n        _this.dirtyZIndex = false;\n        _this.zIndex = 0;\n        /** Discriminators for render order within a zIndex. */\n        _this.zIndexSubOrder = undefined;\n        _this.pointerEvents = PointerEvents.All;\n        return _this;\n    }\n    Object.defineProperty(Node.prototype, \"datum\", {\n        /**\n         * Some arbitrary data bound to the node.\n         */\n        get: function () {\n            var _a;\n            if (this._datum !== undefined) {\n                return this._datum;\n            }\n            return (_a = this._parent) === null || _a === void 0 ? void 0 : _a.datum;\n        },\n        set: function (datum) {\n            this._datum = datum;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Node.prototype._setLayerManager = function (value) {\n        var e_1, _a;\n        this._layerManager = value;\n        this._debug = value === null || value === void 0 ? void 0 : value.debug;\n        try {\n            for (var _b = __values$B(this.children), _c = _b.next(); !_c.done; _c = _b.next()) {\n                var child = _c.value;\n                child._setLayerManager(value);\n            }\n        }\n        catch (e_1_1) { e_1 = { error: e_1_1 }; }\n        finally {\n            try {\n                if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n            }\n            finally { if (e_1) throw e_1.error; }\n        }\n    };\n    Object.defineProperty(Node.prototype, \"layerManager\", {\n        get: function () {\n            return this._layerManager;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(Node.prototype, \"parent\", {\n        get: function () {\n            return this._parent;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(Node.prototype, \"children\", {\n        get: function () {\n            return this._children;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    /**\n     * Appends one or more new node instances to this parent.\n     * If one needs to:\n     * - move a child to the end of the list of children\n     * - move a child from one parent to another (including parents in other scenes)\n     * one should use the {@link insertBefore} method instead.\n     * @param nodes A node or nodes to append.\n     */\n    Node.prototype.append = function (nodes) {\n        var e_2, _a;\n        // Passing a single parameter to an open-ended version of `append`\n        // would be 30-35% slower than this.\n        if (!Array.isArray(nodes)) {\n            nodes = [nodes];\n        }\n        try {\n            for (var nodes_1 = __values$B(nodes), nodes_1_1 = nodes_1.next(); !nodes_1_1.done; nodes_1_1 = nodes_1.next()) {\n                var node = nodes_1_1.value;\n                if (node.parent) {\n                    throw new Error(node + \" already belongs to another parent: \" + node.parent + \".\");\n                }\n                if (node.layerManager) {\n                    throw new Error(node + \" already belongs to a scene: \" + node.layerManager + \".\");\n                }\n                if (this.childSet[node.id]) {\n                    // Cast to `any` to avoid `Property 'name' does not exist on type 'Function'`.\n                    throw new Error(\"Duplicate \" + node.constructor.name + \" node: \" + node);\n                }\n                this._children.push(node);\n                this.childSet[node.id] = true;\n                node._parent = this;\n                node._setLayerManager(this.layerManager);\n            }\n        }\n        catch (e_2_1) { e_2 = { error: e_2_1 }; }\n        finally {\n            try {\n                if (nodes_1_1 && !nodes_1_1.done && (_a = nodes_1.return)) _a.call(nodes_1);\n            }\n            finally { if (e_2) throw e_2.error; }\n        }\n        this.dirtyZIndex = true;\n        this.markDirty(this, RedrawType.MAJOR);\n    };\n    Node.prototype.appendChild = function (node) {\n        this.append(node);\n        return node;\n    };\n    Node.prototype.removeChild = function (node) {\n        if (node.parent === this) {\n            var i = this.children.indexOf(node);\n            if (i >= 0) {\n                this._children.splice(i, 1);\n                delete this.childSet[node.id];\n                node._parent = undefined;\n                node._setLayerManager();\n                this.dirtyZIndex = true;\n                this.markDirty(node, RedrawType.MAJOR);\n                return node;\n            }\n        }\n        throw new Error(\"The node to be removed is not a child of this node.\");\n    };\n    /**\n     * Inserts the node `node` before the existing child node `nextNode`.\n     * If `nextNode` is null, insert `node` at the end of the list of children.\n     * If the `node` belongs to another parent, it is first removed.\n     * Returns the `node`.\n     * @param node\n     * @param nextNode\n     */\n    Node.prototype.insertBefore = function (node, nextNode) {\n        var parent = node.parent;\n        if (node.parent) {\n            node.parent.removeChild(node);\n        }\n        if (nextNode && nextNode.parent === this) {\n            var i = this.children.indexOf(nextNode);\n            if (i >= 0) {\n                this._children.splice(i, 0, node);\n                this.childSet[node.id] = true;\n                node._parent = this;\n                node._setLayerManager(this.layerManager);\n            }\n            else {\n                throw new Error(nextNode + \" has \" + parent + \" as the parent, \" + \"but is not in its list of children.\");\n            }\n            this.dirtyZIndex = true;\n            this.markDirty(node, RedrawType.MAJOR);\n        }\n        else {\n            this.append(node);\n        }\n        return node;\n    };\n    Node.prototype.calculateCumulativeMatrix = function () {\n        this.computeTransformMatrix();\n        var matrix = Matrix.flyweight(this.matrix);\n        var parent = this.parent;\n        while (parent) {\n            parent.computeTransformMatrix();\n            matrix.preMultiplySelf(parent.matrix);\n            parent = parent.parent;\n        }\n        return matrix;\n    };\n    Node.prototype.transformPoint = function (x, y) {\n        var matrix = this.calculateCumulativeMatrix();\n        return matrix.invertSelf().transformPoint(x, y);\n    };\n    Node.prototype.inverseTransformPoint = function (x, y) {\n        var matrix = this.calculateCumulativeMatrix();\n        return matrix.transformPoint(x, y);\n    };\n    Node.prototype.transformBBox = function (bbox) {\n        var matrix = this.calculateCumulativeMatrix();\n        return matrix.invertSelf().transformBBox(bbox);\n    };\n    Node.prototype.inverseTransformBBox = function (bbox) {\n        var matrix = this.calculateCumulativeMatrix();\n        return matrix.transformBBox(bbox);\n    };\n    Node.prototype.markDirtyTransform = function () {\n        this._dirtyTransform = true;\n        this.markDirty(this, RedrawType.MAJOR);\n    };\n    Node.prototype.containsPoint = function (_x, _y) {\n        return false;\n    };\n    /**\n     * Hit testing method.\n     * Recursively checks if the given point is inside this node or any of its children.\n     * Returns the first matching node or `undefined`.\n     * Nodes that render later (show on top) are hit tested first.\n     */\n    Node.prototype.pickNode = function (x, y) {\n        var _a;\n        if (!this.visible || this.pointerEvents === PointerEvents.None || !this.containsPoint(x, y)) {\n            return;\n        }\n        var children = this.children;\n        if (children.length > 1000) {\n            // Try to optimise which children to interrogate; BBox calculation is an approximation\n            // for more complex shapes, so discarding items based on this will save a lot of\n            // processing when the point is nowhere near the child.\n            for (var i = children.length - 1; i >= 0; i--) {\n                var hit = ((_a = children[i].computeBBox()) === null || _a === void 0 ? void 0 : _a.containsPoint(x, y)) ? children[i].pickNode(x, y) : undefined;\n                if (hit) {\n                    return hit;\n                }\n            }\n        }\n        else if (children.length) {\n            // Nodes added later should be hit-tested first,\n            // as they are rendered on top of the previously added nodes.\n            for (var i = children.length - 1; i >= 0; i--) {\n                var hit = children[i].pickNode(x, y);\n                if (hit) {\n                    return hit;\n                }\n            }\n        }\n        else if (!this.isContainerNode) {\n            // a leaf node, but not a container leaf\n            return this;\n        }\n    };\n    Node.prototype.findNodes = function (predicate) {\n        var e_3, _a;\n        var result = predicate(this) ? [this] : [];\n        try {\n            for (var _b = __values$B(this.children), _c = _b.next(); !_c.done; _c = _b.next()) {\n                var child = _c.value;\n                var childResult = child.findNodes(predicate);\n                if (childResult) {\n                    result.push.apply(result, __spread$B(childResult));\n                }\n            }\n        }\n        catch (e_3_1) { e_3 = { error: e_3_1 }; }\n        finally {\n            try {\n                if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n            }\n            finally { if (e_3) throw e_3.error; }\n        }\n        return result;\n    };\n    Node.prototype.computeBBox = function () {\n        return;\n    };\n    Node.prototype.computeTransformedBBox = function () {\n        var bbox = this.computeBBox();\n        if (!bbox) {\n            return undefined;\n        }\n        this.computeTransformMatrix();\n        var matrix = Matrix.flyweight(this.matrix);\n        var parent = this.parent;\n        while (parent) {\n            parent.computeTransformMatrix();\n            matrix.preMultiplySelf(parent.matrix);\n            parent = parent.parent;\n        }\n        matrix.transformBBox(bbox, bbox);\n        return bbox;\n    };\n    Node.prototype.computeTransformMatrix = function () {\n        if (!this._dirtyTransform) {\n            return;\n        }\n        var _a = this, matrix = _a.matrix, scalingX = _a.scalingX, scalingY = _a.scalingY, rotation = _a.rotation, translationX = _a.translationX, translationY = _a.translationY, scalingCenterX = _a.scalingCenterX, scalingCenterY = _a.scalingCenterY, rotationCenterX = _a.rotationCenterX, rotationCenterY = _a.rotationCenterY;\n        Matrix.updateTransformMatrix(matrix, scalingX, scalingY, rotation, translationX, translationY, {\n            scalingCenterX: scalingCenterX,\n            scalingCenterY: scalingCenterY,\n            rotationCenterX: rotationCenterX,\n            rotationCenterY: rotationCenterY,\n        });\n        matrix.inverseTo(this.inverseMatrix);\n        this._dirtyTransform = false;\n    };\n    Node.prototype.render = function (renderCtx) {\n        var stats = renderCtx.stats;\n        this._dirty = RedrawType.NONE;\n        if (stats)\n            stats.nodesRendered++;\n    };\n    Node.prototype.clearBBox = function (ctx) {\n        var bbox = this.computeBBox();\n        if (bbox == null) {\n            return;\n        }\n        var x = bbox.x, y = bbox.y, width = bbox.width, height = bbox.height;\n        var topLeft = this.transformPoint(x, y);\n        var bottomRight = this.transformPoint(x + width, y + height);\n        ctx.clearRect(topLeft.x, topLeft.y, bottomRight.x - topLeft.x, bottomRight.y - topLeft.y);\n    };\n    Node.prototype.markDirty = function (_source, type, parentType) {\n        if (type === void 0) { type = RedrawType.TRIVIAL; }\n        if (parentType === void 0) { parentType = type; }\n        if (this._dirty > type) {\n            return;\n        }\n        if (this._dirty === type && type === parentType) {\n            return;\n        }\n        this._dirty = type;\n        if (this.parent) {\n            this.parent.markDirty(this, parentType);\n        }\n        else if (this.layerManager) {\n            this.layerManager.markDirty();\n        }\n    };\n    Object.defineProperty(Node.prototype, \"dirty\", {\n        get: function () {\n            return this._dirty;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Node.prototype.markClean = function (opts) {\n        var e_4, _a;\n        var _b = opts || {}, _c = _b.force, force = _c === void 0 ? false : _c, _d = _b.recursive, recursive = _d === void 0 ? true : _d;\n        if (this._dirty === RedrawType.NONE && !force) {\n            return;\n        }\n        this._dirty = RedrawType.NONE;\n        if (recursive) {\n            try {\n                for (var _e = __values$B(this.children), _f = _e.next(); !_f.done; _f = _e.next()) {\n                    var child = _f.value;\n                    child.markClean();\n                }\n            }\n            catch (e_4_1) { e_4 = { error: e_4_1 }; }\n            finally {\n                try {\n                    if (_f && !_f.done && (_a = _e.return)) _a.call(_e);\n                }\n                finally { if (e_4) throw e_4.error; }\n            }\n        }\n    };\n    Node.prototype.visibilityChanged = function () {\n        // Override point for sub-classes to react to visibility changes.\n    };\n    Object.defineProperty(Node.prototype, \"nodeCount\", {\n        get: function () {\n            var e_5, _a;\n            var count = 1;\n            var dirtyCount = this._dirty >= RedrawType.NONE || this._dirtyTransform ? 1 : 0;\n            var visibleCount = this.visible ? 1 : 0;\n            try {\n                for (var _b = __values$B(this._children), _c = _b.next(); !_c.done; _c = _b.next()) {\n                    var child = _c.value;\n                    var _d = child.nodeCount, childCount = _d.count, childVisibleCount = _d.visibleCount, childDirtyCount = _d.dirtyCount;\n                    count += childCount;\n                    visibleCount += childVisibleCount;\n                    dirtyCount += childDirtyCount;\n                }\n            }\n            catch (e_5_1) { e_5 = { error: e_5_1 }; }\n            finally {\n                try {\n                    if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n                }\n                finally { if (e_5) throw e_5.error; }\n            }\n            return { count: count, visibleCount: visibleCount, dirtyCount: dirtyCount };\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Node.prototype.zIndexChanged = function () {\n        // Override point for sub-classes.\n    };\n    Node._nextSerialNumber = 0;\n    __decorate$1V([\n        SceneChangeDetection({ type: 'transform' })\n    ], Node.prototype, \"scalingX\", void 0);\n    __decorate$1V([\n        SceneChangeDetection({ type: 'transform' })\n    ], Node.prototype, \"scalingY\", void 0);\n    __decorate$1V([\n        SceneChangeDetection({ type: 'transform' })\n    ], Node.prototype, \"scalingCenterX\", void 0);\n    __decorate$1V([\n        SceneChangeDetection({ type: 'transform' })\n    ], Node.prototype, \"scalingCenterY\", void 0);\n    __decorate$1V([\n        SceneChangeDetection({ type: 'transform' })\n    ], Node.prototype, \"rotationCenterX\", void 0);\n    __decorate$1V([\n        SceneChangeDetection({ type: 'transform' })\n    ], Node.prototype, \"rotationCenterY\", void 0);\n    __decorate$1V([\n        SceneChangeDetection({ type: 'transform' })\n    ], Node.prototype, \"rotation\", void 0);\n    __decorate$1V([\n        SceneChangeDetection({ type: 'transform' })\n    ], Node.prototype, \"translationX\", void 0);\n    __decorate$1V([\n        SceneChangeDetection({ type: 'transform' })\n    ], Node.prototype, \"translationY\", void 0);\n    __decorate$1V([\n        SceneChangeDetection({ redraw: RedrawType.MAJOR, changeCb: function (o) { return o.visibilityChanged(); } })\n    ], Node.prototype, \"visible\", void 0);\n    __decorate$1V([\n        SceneChangeDetection({\n            redraw: RedrawType.TRIVIAL,\n            changeCb: zIndexChangedCallback,\n        })\n    ], Node.prototype, \"zIndex\", void 0);\n    __decorate$1V([\n        SceneChangeDetection({\n            redraw: RedrawType.TRIVIAL,\n            changeCb: zIndexChangedCallback,\n        })\n    ], Node.prototype, \"zIndexSubOrder\", void 0);\n    return Node;\n}(ChangeDetectable));\n\nfunction ascendingStringNumberUndefined(a, b) {\n    var diff = 0;\n    if (typeof a === 'number' && typeof b === 'number') {\n        diff = a - b;\n    }\n    else if (typeof a === 'string' && typeof b === 'string') {\n        diff = a.localeCompare(b);\n    }\n    else if (a == null && b == null) ;\n    else if (a == null) {\n        diff = -1;\n    }\n    else if (b == null) {\n        diff = 1;\n    }\n    else {\n        diff = String(a).localeCompare(String(b));\n    }\n    return diff;\n}\nfunction compoundAscending(a, b, comparator) {\n    var toLiteral = function (v) {\n        if (typeof v === 'function') {\n            return v();\n        }\n        return v;\n    };\n    for (var idx in a) {\n        var diff = comparator(toLiteral(a[idx]), toLiteral(b[idx]));\n        if (diff !== 0) {\n            return diff;\n        }\n    }\n    return 0;\n}\n\nvar doOnceFlags$1 = {};\n/**\n * If the key was passed before, then doesn't execute the func\n */\nfunction doOnce$1(func, key) {\n    if (doOnceFlags$1[key]) {\n        return;\n    }\n    func();\n    doOnceFlags$1[key] = true;\n}\n\nvar __read$Z = (undefined && undefined.__read) || function (o, n) {\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n    if (!m) return o;\n    var i = m.call(o), r, ar = [], e;\n    try {\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n    }\n    catch (error) { e = { error: error }; }\n    finally {\n        try {\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\n        }\n        finally { if (e) throw e.error; }\n    }\n    return ar;\n};\nvar __spread$A = (undefined && undefined.__spread) || function () {\n    for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read$Z(arguments[i]));\n    return ar;\n};\nvar Logger = {\n    debug: function () {\n        var logContent = [];\n        for (var _i = 0; _i < arguments.length; _i++) {\n            logContent[_i] = arguments[_i];\n        }\n        console.log.apply(console, __spread$A(logContent));\n    },\n    warn: function (message) {\n        var logContent = [];\n        for (var _i = 1; _i < arguments.length; _i++) {\n            logContent[_i - 1] = arguments[_i];\n        }\n        console.warn.apply(console, __spread$A([\"AG Charts - \" + message], logContent));\n    },\n    error: function (message) {\n        var logContent = [];\n        for (var _i = 1; _i < arguments.length; _i++) {\n            logContent[_i - 1] = arguments[_i];\n        }\n        console.error.apply(console, __spread$A([\"AG Charts - \" + message], logContent));\n    },\n    warnOnce: function (message) {\n        var logContent = [];\n        for (var _i = 1; _i < arguments.length; _i++) {\n            logContent[_i - 1] = arguments[_i];\n        }\n        doOnce$1(function () { return Logger.warn.apply(Logger, __spread$A([message], logContent)); }, \"Logger.warn: \" + message);\n    },\n    errorOnce: function (message) {\n        var logContent = [];\n        for (var _i = 1; _i < arguments.length; _i++) {\n            logContent[_i - 1] = arguments[_i];\n        }\n        doOnce$1(function () { return Logger.error.apply(Logger, __spread$A([message], logContent)); }, \"Logger.warn: \" + message);\n    },\n};\n\nvar __extends$2G = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __assign$H = (undefined && undefined.__assign) || function () {\n    __assign$H = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign$H.apply(this, arguments);\n};\nvar __decorate$1U = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __values$A = (undefined && undefined.__values) || function(o) {\n    var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n    if (m) return m.call(o);\n    if (o && typeof o.length === \"number\") return {\n        next: function () {\n            if (o && i >= o.length) o = void 0;\n            return { value: o && o[i++], done: !o };\n        }\n    };\n    throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nvar __read$Y = (undefined && undefined.__read) || function (o, n) {\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n    if (!m) return o;\n    var i = m.call(o), r, ar = [], e;\n    try {\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n    }\n    catch (error) { e = { error: error }; }\n    finally {\n        try {\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\n        }\n        finally { if (e) throw e.error; }\n    }\n    return ar;\n};\nvar __spread$z = (undefined && undefined.__spread) || function () {\n    for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read$Y(arguments[i]));\n    return ar;\n};\nvar Group = /** @class */ (function (_super) {\n    __extends$2G(Group, _super);\n    function Group(opts) {\n        var _a;\n        var _this = _super.call(this) || this;\n        _this.opts = opts;\n        _this.opacity = 1;\n        _this.lastBBox = undefined;\n        var _b = opts || {}, zIndex = _b.zIndex, zIndexSubOrder = _b.zIndexSubOrder;\n        _this.isContainerNode = true;\n        if (zIndex !== undefined) {\n            _this.zIndex = zIndex;\n        }\n        if (zIndexSubOrder !== undefined) {\n            _this.zIndexSubOrder = zIndexSubOrder;\n        }\n        _this.name = (_a = _this.opts) === null || _a === void 0 ? void 0 : _a.name;\n        return _this;\n    }\n    Group.prototype.zIndexChanged = function () {\n        var _a;\n        if (this.layer) {\n            (_a = this._layerManager) === null || _a === void 0 ? void 0 : _a.moveLayer(this.layer, this.zIndex, this.zIndexSubOrder);\n        }\n    };\n    Group.prototype.isLayer = function () {\n        return this.layer != null;\n    };\n    Group.prototype._setLayerManager = function (scene) {\n        var _this = this;\n        var _a;\n        if (this._layerManager && this.layer) {\n            this._layerManager.removeLayer(this.layer);\n            this.layer = undefined;\n        }\n        if (this.layer) {\n            throw new Error('AG Charts - unable to deregister scene rendering layer!');\n        }\n        _super.prototype._setLayerManager.call(this, scene);\n        if (scene && ((_a = this.opts) === null || _a === void 0 ? void 0 : _a.layer)) {\n            var _b = this.opts || {}, zIndex = _b.zIndex, zIndexSubOrder = _b.zIndexSubOrder, name_1 = _b.name;\n            var getComputedOpacity = function () { return _this.getComputedOpacity(); };\n            var getVisibility = function () { return _this.getVisibility(); };\n            this.layer = scene.addLayer({ zIndex: zIndex, zIndexSubOrder: zIndexSubOrder, name: name_1, getComputedOpacity: getComputedOpacity, getVisibility: getVisibility });\n        }\n    };\n    Group.prototype.getComputedOpacity = function () {\n        var opacity = 1;\n        var node = this;\n        do {\n            if (node instanceof Group) {\n                opacity *= node.opacity;\n            }\n        } while ((node = node.parent));\n        return opacity;\n    };\n    Group.prototype.getVisibility = function () {\n        var node = this;\n        var visible = this.visible;\n        while ((node = node.parent)) {\n            if (node.visible) {\n                continue;\n            }\n            visible = node.visible;\n        }\n        return visible;\n    };\n    Group.prototype.visibilityChanged = function () {\n        if (this.layer) {\n            this.layer.enabled = this.visible;\n        }\n    };\n    Group.prototype.markDirty = function (source, type) {\n        if (type === void 0) { type = RedrawType.TRIVIAL; }\n        var parentType = type <= RedrawType.MINOR ? RedrawType.TRIVIAL : type;\n        _super.prototype.markDirty.call(this, source, type, parentType);\n    };\n    // We consider a group to be boundless, thus any point belongs to it.\n    Group.prototype.containsPoint = function (_x, _y) {\n        return true;\n    };\n    Group.prototype.computeBBox = function () {\n        this.computeTransformMatrix();\n        return Group.computeBBox(this.children);\n    };\n    Group.prototype.computeTransformedBBox = function () {\n        return this.computeBBox();\n    };\n    Group.prototype.render = function (renderCtx) {\n        var e_1, _a;\n        var _b, _c;\n        var _d = this.opts, _e = (_d === void 0 ? {} : _d).name, name = _e === void 0 ? undefined : _e;\n        var _f = this._debug, _g = (_f === void 0 ? {} : _f).consoleLog, consoleLog = _g === void 0 ? false : _g;\n        var _h = this, dirty = _h.dirty, dirtyZIndex = _h.dirtyZIndex, layer = _h.layer, children = _h.children, clipRect = _h.clipRect;\n        var ctx = renderCtx.ctx, forceRender = renderCtx.forceRender, clipBBox = renderCtx.clipBBox;\n        var resized = renderCtx.resized, stats = renderCtx.stats;\n        var canvasCtxTransform = ctx.getTransform();\n        var isDirty = dirty >= RedrawType.MINOR || dirtyZIndex || resized;\n        var isChildDirty = isDirty || children.some(function (n) { return n.dirty >= RedrawType.TRIVIAL; });\n        if (name && consoleLog) {\n            Logger.debug({ name: name, group: this, isDirty: isDirty, isChildDirty: isChildDirty, renderCtx: renderCtx, forceRender: forceRender });\n        }\n        if (layer) {\n            // If bounding-box of a layer changes, force re-render.\n            var currentBBox = this.computeBBox();\n            if (this.lastBBox === undefined || !this.lastBBox.equals(currentBBox)) {\n                forceRender = true;\n                this.lastBBox = currentBBox;\n            }\n            else if (!currentBBox.isInfinite()) {\n                // bbox for path2D is currently (Infinity) not calculated\n                // If it's not a path2D, turn off forceRender\n                // By default there is no need to force redraw a group which has it's own canvas layer\n                // as the layer is independent of any other layer\n                forceRender = false;\n            }\n        }\n        if (!isDirty && !isChildDirty && !forceRender) {\n            if (name && consoleLog && stats) {\n                var counts = this.nodeCount;\n                Logger.debug({ name: name, result: 'skipping', renderCtx: renderCtx, counts: counts, group: this });\n            }\n            if (layer && stats) {\n                stats.layersSkipped++;\n                stats.nodesSkipped += this.nodeCount.count;\n            }\n            this.markClean({ recursive: false });\n            // Nothing to do.\n            return;\n        }\n        var groupVisible = this.visible;\n        if (layer) {\n            // Switch context to the canvas layer we use for this group.\n            ctx = layer.context;\n            ctx.save();\n            ctx.resetTransform();\n            forceRender = true;\n            layer.clear();\n            if (clipBBox) {\n                // clipBBox is in the canvas coordinate space, when we hit a layer we apply the new clipping at which point there are no transforms in play\n                var width = clipBBox.width, height = clipBBox.height, x = clipBBox.x, y = clipBBox.y;\n                if (consoleLog) {\n                    Logger.debug({ name: name, clipBBox: clipBBox, ctxTransform: ctx.getTransform(), renderCtx: renderCtx, group: this });\n                }\n                this.clipCtx(ctx, x, y, width, height);\n            }\n            ctx.setTransform(canvasCtxTransform);\n        }\n        else {\n            // Only apply opacity if this isn't a distinct layer - opacity will be applied\n            // at composition time.\n            ctx.globalAlpha *= this.opacity;\n        }\n        // A group can have `scaling`, `rotation`, `translation` properties\n        // that are applied to the canvas context before children are rendered,\n        // so all children can be transformed at once.\n        this.computeTransformMatrix();\n        this.matrix.toContext(ctx);\n        if (clipRect) {\n            // clipRect is in the group's coordinate space\n            var x = clipRect.x, y = clipRect.y, width = clipRect.width, height = clipRect.height;\n            ctx.save();\n            if (consoleLog) {\n                Logger.debug({ name: name, clipRect: clipRect, ctxTransform: ctx.getTransform(), renderCtx: renderCtx, group: this });\n            }\n            this.clipCtx(ctx, x, y, width, height);\n            // clipBBox is in the canvas coordinate space, when we hit a layer we apply the new clipping at which point there are no transforms in play\n            clipBBox = this.matrix.inverse().transformBBox(clipRect);\n        }\n        if (dirtyZIndex) {\n            this.sortChildren();\n            forceRender = true;\n        }\n        // Reduce churn if renderCtx is identical.\n        var renderContextChanged = forceRender !== renderCtx.forceRender || clipBBox !== renderCtx.clipBBox || ctx !== renderCtx.ctx;\n        var childRenderContext = renderContextChanged ? __assign$H(__assign$H({}, renderCtx), { ctx: ctx, forceRender: forceRender, clipBBox: clipBBox }) : renderCtx;\n        // Render visible children.\n        var skipped = 0;\n        try {\n            for (var children_1 = __values$A(children), children_1_1 = children_1.next(); !children_1_1.done; children_1_1 = children_1.next()) {\n                var child = children_1_1.value;\n                if (!child.visible || !groupVisible) {\n                    // Skip invisible children, but make sure their dirty flag is reset.\n                    child.markClean();\n                    if (stats)\n                        skipped += child.nodeCount.count;\n                    continue;\n                }\n                if (!forceRender && child.dirty === RedrawType.NONE) {\n                    // Skip children that don't need to be redrawn.\n                    if (stats)\n                        skipped += child.nodeCount.count;\n                    continue;\n                }\n                // Render marks this node (and children) as clean - no need to explicitly markClean().\n                ctx.save();\n                child.render(childRenderContext);\n                ctx.restore();\n            }\n        }\n        catch (e_1_1) { e_1 = { error: e_1_1 }; }\n        finally {\n            try {\n                if (children_1_1 && !children_1_1.done && (_a = children_1.return)) _a.call(children_1);\n            }\n            finally { if (e_1) throw e_1.error; }\n        }\n        if (stats)\n            stats.nodesSkipped += skipped;\n        // Render marks this node as clean - no need to explicitly markClean().\n        _super.prototype.render.call(this, renderCtx);\n        if (clipRect) {\n            ctx.restore();\n        }\n        if (layer) {\n            if (stats)\n                stats.layersRendered++;\n            ctx.restore();\n            layer.snapshot();\n            // Check for save/restore depth of zero!\n            (_c = (_b = layer.context).verifyDepthZero) === null || _c === void 0 ? void 0 : _c.call(_b);\n        }\n        if (name && consoleLog && stats) {\n            var counts = this.nodeCount;\n            Logger.debug({ name: name, result: 'rendered', skipped: skipped, renderCtx: renderCtx, counts: counts, group: this });\n        }\n    };\n    Group.prototype.sortChildren = function () {\n        this.dirtyZIndex = false;\n        this.children.sort(function (a, b) {\n            var _a, _b;\n            return compoundAscending(__spread$z([a.zIndex], ((_a = a.zIndexSubOrder) !== null && _a !== void 0 ? _a : [undefined, undefined]), [a.serialNumber]), __spread$z([b.zIndex], ((_b = b.zIndexSubOrder) !== null && _b !== void 0 ? _b : [undefined, undefined]), [b.serialNumber]), ascendingStringNumberUndefined);\n        });\n    };\n    Group.prototype.clipCtx = function (ctx, x, y, width, height) {\n        ctx.beginPath();\n        ctx.moveTo(x, y);\n        ctx.lineTo(x + width, y);\n        ctx.lineTo(x + width, y + height);\n        ctx.lineTo(x, y + height);\n        ctx.closePath();\n        ctx.clip();\n    };\n    Group.computeBBox = function (nodes) {\n        var left = Infinity;\n        var right = -Infinity;\n        var top = Infinity;\n        var bottom = -Infinity;\n        nodes.forEach(function (n) {\n            if (!n.visible) {\n                return;\n            }\n            var bbox = n.computeTransformedBBox();\n            if (!bbox) {\n                return;\n            }\n            var x = bbox.x;\n            var y = bbox.y;\n            if (x < left) {\n                left = x;\n            }\n            if (y < top) {\n                top = y;\n            }\n            if (x + bbox.width > right) {\n                right = x + bbox.width;\n            }\n            if (y + bbox.height > bottom) {\n                bottom = y + bbox.height;\n            }\n        });\n        return new BBox(left, top, right - left, bottom - top);\n    };\n    /**\n     * Transforms bbox given in the canvas coordinate space to bbox in this group's coordinate space and\n     * sets this group's clipRect to the transformed bbox.\n     * @param bbox clipRect bbox in the canvas coordinate space.\n     */\n    Group.prototype.setClipRectInGroupCoordinateSpace = function (bbox) {\n        this.clipRect = bbox ? this.transformBBox(bbox) : undefined;\n    };\n    Group.className = 'Group';\n    __decorate$1U([\n        SceneChangeDetection({\n            convertor: function (v) { return Math.min(1, Math.max(0, v)); },\n        })\n    ], Group.prototype, \"opacity\", void 0);\n    return Group;\n}(Node));\n\n/**\n * Wraps a native OffscreenCanvas and overrides its OffscreenCanvasRenderingContext2D to\n * provide resolution independent rendering based on `window.devicePixelRatio`.\n */\nvar HdpiOffscreenCanvas = /** @class */ (function () {\n    // The width/height attributes of the Canvas element default to\n    // 300/150 according to w3.org.\n    function HdpiOffscreenCanvas(_a) {\n        var _b = _a.width, width = _b === void 0 ? 600 : _b, _c = _a.height, height = _c === void 0 ? 300 : _c, _d = _a.overrideDevicePixelRatio, overrideDevicePixelRatio = _d === void 0 ? undefined : _d;\n        this.enabled = true;\n        // `NaN` is deliberate here, so that overrides are always applied\n        // and the `resetTransform` inside the `resize` method works in IE11.\n        this._pixelRatio = NaN;\n        this._width = 0;\n        this._height = 0;\n        this.canvas = new OffscreenCanvas(width, height);\n        this.context = this.canvas.getContext('2d');\n        this.imageSource = this.canvas.transferToImageBitmap();\n        this.setPixelRatio(overrideDevicePixelRatio);\n        this.resize(width, height);\n    }\n    HdpiOffscreenCanvas.isSupported = function () {\n        return window['OffscreenCanvas'] != null;\n    };\n    HdpiOffscreenCanvas.prototype.snapshot = function () {\n        this.imageSource.close();\n        this.imageSource = this.canvas.transferToImageBitmap();\n    };\n    HdpiOffscreenCanvas.prototype.destroy = function () {\n        this.imageSource.close();\n        // Workaround memory allocation quirks in iOS Safari by resizing to 0x0 and clearing.\n        // See https://bugs.webkit.org/show_bug.cgi?id=195325.\n        this.canvas.width = 0;\n        this.canvas.height = 0;\n        this.context.clearRect(0, 0, 0, 0);\n    };\n    HdpiOffscreenCanvas.prototype.clear = function () {\n        this.context.save();\n        this.context.resetTransform();\n        this.context.clearRect(0, 0, this.width, this.height);\n        this.context.restore();\n    };\n    Object.defineProperty(HdpiOffscreenCanvas.prototype, \"pixelRatio\", {\n        get: function () {\n            return this._pixelRatio;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    /**\n     * Changes the pixel ratio of the Canvas element to the given value,\n     * or uses the window.devicePixelRatio (default), then resizes the Canvas\n     * element accordingly (default).\n     */\n    HdpiOffscreenCanvas.prototype.setPixelRatio = function (ratio) {\n        var pixelRatio = ratio !== null && ratio !== void 0 ? ratio : window.devicePixelRatio;\n        if (!isDesktop()) {\n            // Mobile browsers have stricter memory limits, we reduce rendering resolution to\n            // improve stability on mobile browsers. iOS Safari 12->16 are pain-points since they\n            // have memory allocation quirks - see https://bugs.webkit.org/show_bug.cgi?id=195325.\n            pixelRatio = 1;\n        }\n        HdpiCanvas.overrideScale(this.context, pixelRatio);\n        this._pixelRatio = pixelRatio;\n    };\n    Object.defineProperty(HdpiOffscreenCanvas.prototype, \"width\", {\n        get: function () {\n            return this._width;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(HdpiOffscreenCanvas.prototype, \"height\", {\n        get: function () {\n            return this._height;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    HdpiOffscreenCanvas.prototype.resize = function (width, height) {\n        if (!(width > 0 && height > 0)) {\n            return;\n        }\n        var _a = this, canvas = _a.canvas, context = _a.context, pixelRatio = _a.pixelRatio;\n        canvas.width = Math.round(width * pixelRatio);\n        canvas.height = Math.round(height * pixelRatio);\n        context.resetTransform();\n        this._width = width;\n        this._height = height;\n    };\n    return HdpiOffscreenCanvas;\n}());\n\nvar __assign$G = (undefined && undefined.__assign) || function () {\n    __assign$G = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign$G.apply(this, arguments);\n};\nvar __awaiter$f = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {\n    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n    return new (P || (P = Promise))(function (resolve, reject) {\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\n    });\n};\nvar __generator$f = (undefined && undefined.__generator) || function (thisArg, body) {\n    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n    return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n    function verb(n) { return function (v) { return step([n, v]); }; }\n    function step(op) {\n        if (f) throw new TypeError(\"Generator is already executing.\");\n        while (_) try {\n            if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n            if (y = 0, t) op = [op[0] & 2, t.value];\n            switch (op[0]) {\n                case 0: case 1: t = op; break;\n                case 4: _.label++; return { value: op[1], done: false };\n                case 5: _.label++; y = op[1]; op = [0]; continue;\n                case 7: op = _.ops.pop(); _.trys.pop(); continue;\n                default:\n                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n                    if (t[2]) _.ops.pop();\n                    _.trys.pop(); continue;\n            }\n            op = body.call(thisArg, _);\n        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n    }\n};\nvar __read$X = (undefined && undefined.__read) || function (o, n) {\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n    if (!m) return o;\n    var i = m.call(o), r, ar = [], e;\n    try {\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n    }\n    catch (error) { e = { error: error }; }\n    finally {\n        try {\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\n        }\n        finally { if (e) throw e.error; }\n    }\n    return ar;\n};\nvar __spread$y = (undefined && undefined.__spread) || function () {\n    for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read$X(arguments[i]));\n    return ar;\n};\nvar __values$z = (undefined && undefined.__values) || function(o) {\n    var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n    if (m) return m.call(o);\n    if (o && typeof o.length === \"number\") return {\n        next: function () {\n            if (o && i >= o.length) o = void 0;\n            return { value: o && o[i++], done: !o };\n        }\n    };\n    throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nfunction buildSceneNodeHighlight() {\n    var _a;\n    var config = (_a = windowValue('agChartsSceneDebug')) !== null && _a !== void 0 ? _a : [];\n    if (typeof config === 'string') {\n        config = [config];\n    }\n    var result = [];\n    config.forEach(function (name) {\n        if (name === 'layout') {\n            result.push('seriesRoot', 'legend', 'root', /.*Axis-\\d+-axis.*/);\n        }\n        else {\n            result.push(name);\n        }\n    });\n    return result;\n}\nvar Scene = /** @class */ (function () {\n    function Scene(opts) {\n        var _a, _b;\n        this.id = createId$1(this);\n        this.layers = [];\n        this._nextZIndex = 0;\n        this._nextLayerId = 0;\n        this._dirty = false;\n        this._root = null;\n        this.debug = {\n            dirtyTree: false,\n            stats: false,\n            renderBoundingBoxes: false,\n            consoleLog: false,\n            sceneNodeHighlight: [],\n        };\n        var _c = opts.document, document = _c === void 0 ? window.document : _c, _d = opts.mode, mode = _d === void 0 ? windowValue('agChartsSceneRenderModel') || 'adv-composite' : _d, width = opts.width, height = opts.height, _e = opts.overrideDevicePixelRatio, overrideDevicePixelRatio = _e === void 0 ? undefined : _e;\n        this.overrideDevicePixelRatio = overrideDevicePixelRatio;\n        this.opts = { document: document, mode: mode };\n        this.debug.consoleLog = windowValue('agChartsDebug') === true;\n        this.debug.stats = (_a = windowValue('agChartsSceneStats')) !== null && _a !== void 0 ? _a : false;\n        this.debug.dirtyTree = (_b = windowValue('agChartsSceneDirtyTree')) !== null && _b !== void 0 ? _b : false;\n        this.debug.sceneNodeHighlight = buildSceneNodeHighlight();\n        this.canvas = new HdpiCanvas({ document: document, width: width, height: height, overrideDevicePixelRatio: overrideDevicePixelRatio });\n    }\n    Object.defineProperty(Scene.prototype, \"container\", {\n        get: function () {\n            return this.canvas.container;\n        },\n        set: function (value) {\n            this.canvas.container = value;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Scene.prototype.download = function (fileName, fileFormat) {\n        this.canvas.download(fileName, fileFormat);\n    };\n    Scene.prototype.getDataURL = function (type) {\n        return this.canvas.getDataURL(type);\n    };\n    Object.defineProperty(Scene.prototype, \"width\", {\n        get: function () {\n            return this.pendingSize ? this.pendingSize[0] : this.canvas.width;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(Scene.prototype, \"height\", {\n        get: function () {\n            return this.pendingSize ? this.pendingSize[1] : this.canvas.height;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Scene.prototype.resize = function (width, height) {\n        width = Math.round(width);\n        height = Math.round(height);\n        // HdpiCanvas doesn't allow width/height <= 0.\n        var lessThanZero = width <= 0 || height <= 0;\n        var nan = isNaN(width) || isNaN(height);\n        var unchanged = width === this.width && height === this.height;\n        if (unchanged || nan || lessThanZero) {\n            return false;\n        }\n        this.pendingSize = [width, height];\n        this.markDirty();\n        return true;\n    };\n    Scene.prototype.addLayer = function (opts) {\n        var _a;\n        var mode = this.opts.mode;\n        var layeredModes = ['composite', 'dom-composite', 'adv-composite'];\n        if (!layeredModes.includes(mode)) {\n            return undefined;\n        }\n        var _b = opts.zIndex, zIndex = _b === void 0 ? this._nextZIndex++ : _b, name = opts.name, zIndexSubOrder = opts.zIndexSubOrder, getComputedOpacity = opts.getComputedOpacity, getVisibility = opts.getVisibility;\n        var _c = this, width = _c.width, height = _c.height, overrideDevicePixelRatio = _c.overrideDevicePixelRatio;\n        var domLayer = mode === 'dom-composite';\n        var advLayer = mode === 'adv-composite';\n        var canvas = !advLayer || !HdpiOffscreenCanvas.isSupported()\n            ? new HdpiCanvas({\n                document: this.opts.document,\n                width: width,\n                height: height,\n                domLayer: domLayer,\n                zIndex: zIndex,\n                name: name,\n                overrideDevicePixelRatio: overrideDevicePixelRatio,\n            })\n            : new HdpiOffscreenCanvas({\n                width: width,\n                height: height,\n                overrideDevicePixelRatio: overrideDevicePixelRatio,\n            });\n        var newLayer = {\n            id: this._nextLayerId++,\n            name: name,\n            zIndex: zIndex,\n            zIndexSubOrder: zIndexSubOrder,\n            canvas: canvas,\n            getComputedOpacity: getComputedOpacity,\n            getVisibility: getVisibility,\n        };\n        if (zIndex >= this._nextZIndex) {\n            this._nextZIndex = zIndex + 1;\n        }\n        this.layers.push(newLayer);\n        this.sortLayers();\n        if (domLayer) {\n            var domCanvases = this.layers\n                .map(function (v) { return v.canvas; })\n                .filter(function (v) { return v instanceof HdpiCanvas; });\n            var newLayerIndex = domCanvases.findIndex(function (v) { return v === canvas; });\n            var lastLayer = (_a = domCanvases[newLayerIndex - 1]) !== null && _a !== void 0 ? _a : this.canvas;\n            lastLayer.element.insertAdjacentElement('afterend', canvas.element);\n        }\n        if (this.debug.consoleLog) {\n            Logger.debug({ layers: this.layers });\n        }\n        return newLayer.canvas;\n    };\n    Scene.prototype.removeLayer = function (canvas) {\n        var index = this.layers.findIndex(function (l) { return l.canvas === canvas; });\n        if (index >= 0) {\n            this.layers.splice(index, 1);\n            canvas.destroy();\n            this.markDirty();\n            if (this.debug.consoleLog) {\n                Logger.debug({ layers: this.layers });\n            }\n        }\n    };\n    Scene.prototype.moveLayer = function (canvas, newZIndex, newZIndexSubOrder) {\n        var layer = this.layers.find(function (l) { return l.canvas === canvas; });\n        if (layer) {\n            layer.zIndex = newZIndex;\n            layer.zIndexSubOrder = newZIndexSubOrder;\n            this.sortLayers();\n            this.markDirty();\n            if (this.debug.consoleLog) {\n                Logger.debug({ layers: this.layers });\n            }\n        }\n    };\n    Scene.prototype.sortLayers = function () {\n        this.layers.sort(function (a, b) {\n            var _a, _b;\n            return compoundAscending(__spread$y([a.zIndex], ((_a = a.zIndexSubOrder) !== null && _a !== void 0 ? _a : [undefined, undefined]), [a.id]), __spread$y([b.zIndex], ((_b = b.zIndexSubOrder) !== null && _b !== void 0 ? _b : [undefined, undefined]), [b.id]), ascendingStringNumberUndefined);\n        });\n    };\n    Scene.prototype.markDirty = function () {\n        this._dirty = true;\n    };\n    Object.defineProperty(Scene.prototype, \"dirty\", {\n        get: function () {\n            return this._dirty;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(Scene.prototype, \"root\", {\n        get: function () {\n            return this._root;\n        },\n        set: function (node) {\n            if (node === this._root) {\n                return;\n            }\n            if (this._root) {\n                this._root._setLayerManager();\n            }\n            this._root = node;\n            if (node) {\n                // If `node` is the root node of another scene ...\n                if (node.parent === null && node.layerManager && node.layerManager !== this) {\n                    node.layerManager.root = null;\n                }\n                node._setLayerManager(this);\n            }\n            this.markDirty();\n        },\n        enumerable: false,\n        configurable: true\n    });\n    /** Alternative to destroy() that preserves re-usable resources. */\n    Scene.prototype.strip = function () {\n        var e_1, _a;\n        var layers = this.layers;\n        try {\n            for (var layers_1 = __values$z(layers), layers_1_1 = layers_1.next(); !layers_1_1.done; layers_1_1 = layers_1.next()) {\n                var layer = layers_1_1.value;\n                layer.canvas.destroy();\n                delete layer['canvas'];\n            }\n        }\n        catch (e_1_1) { e_1 = { error: e_1_1 }; }\n        finally {\n            try {\n                if (layers_1_1 && !layers_1_1.done && (_a = layers_1.return)) _a.call(layers_1);\n            }\n            finally { if (e_1) throw e_1.error; }\n        }\n        layers.splice(0, layers.length);\n        this.root = null;\n        this._dirty = false;\n        this.canvas.context.resetTransform();\n    };\n    Scene.prototype.destroy = function () {\n        this.container = undefined;\n        this.strip();\n        this.canvas.destroy();\n        Object.assign(this, { canvas: undefined, ctx: undefined });\n    };\n    Scene.prototype.render = function (opts) {\n        var _a;\n        return __awaiter$f(this, void 0, void 0, function () {\n            var _b, _c, debugSplitTimes, _d, extraDebugStats, _e, canvas, ctx, root, layers, pendingSize, mode, renderCtx, canvasCleared, _f, dirtyTree, paths;\n            var _g;\n            return __generator$f(this, function (_h) {\n                _b = opts || {}, _c = _b.debugSplitTimes, debugSplitTimes = _c === void 0 ? [performance.now()] : _c, _d = _b.extraDebugStats, extraDebugStats = _d === void 0 ? {} : _d;\n                _e = this, canvas = _e.canvas, ctx = _e.canvas.context, root = _e.root, layers = _e.layers, pendingSize = _e.pendingSize, mode = _e.opts.mode;\n                if (pendingSize) {\n                    (_g = this.canvas).resize.apply(_g, __spread$y(pendingSize));\n                    this.layers.forEach(function (layer) {\n                        var _a;\n                        return (_a = layer.canvas).resize.apply(_a, __spread$y(pendingSize));\n                    });\n                    this.pendingSize = undefined;\n                }\n                if (root && !root.visible) {\n                    this._dirty = false;\n                    return [2 /*return*/];\n                }\n                if (root && !this.dirty) {\n                    if (this.debug.consoleLog) {\n                        Logger.debug('no-op', {\n                            redrawType: RedrawType[root.dirty],\n                            tree: this.buildTree(root),\n                        });\n                    }\n                    this.debugStats(debugSplitTimes, ctx, undefined, extraDebugStats);\n                    return [2 /*return*/];\n                }\n                renderCtx = {\n                    ctx: ctx,\n                    forceRender: true,\n                    resized: !!pendingSize,\n                    debugNodes: {},\n                };\n                if (this.debug.stats === 'detailed') {\n                    renderCtx.stats = { layersRendered: 0, layersSkipped: 0, nodesRendered: 0, nodesSkipped: 0 };\n                }\n                canvasCleared = false;\n                if (!root || root.dirty >= RedrawType.TRIVIAL) {\n                    // start with a blank canvas, clear previous drawing\n                    canvasCleared = true;\n                    canvas.clear();\n                }\n                if (root && this.debug.dirtyTree) {\n                    _f = this.buildDirtyTree(root), dirtyTree = _f.dirtyTree, paths = _f.paths;\n                    Logger.debug({ dirtyTree: dirtyTree, paths: paths });\n                }\n                if (root && canvasCleared) {\n                    if (this.debug.consoleLog) {\n                        Logger.debug('before', {\n                            redrawType: RedrawType[root.dirty],\n                            canvasCleared: canvasCleared,\n                            tree: this.buildTree(root),\n                        });\n                    }\n                    if (root.visible) {\n                        ctx.save();\n                        root.render(renderCtx);\n                        ctx.restore();\n                    }\n                }\n                if (mode !== 'dom-composite' && layers.length > 0 && canvasCleared) {\n                    this.sortLayers();\n                    ctx.save();\n                    ctx.setTransform(1 / canvas.pixelRatio, 0, 0, 1 / canvas.pixelRatio, 0, 0);\n                    layers.forEach(function (_a) {\n                        var _b = _a.canvas, imageSource = _b.imageSource, enabled = _b.enabled, getComputedOpacity = _a.getComputedOpacity, getVisibility = _a.getVisibility;\n                        if (!enabled || !getVisibility()) {\n                            return;\n                        }\n                        ctx.globalAlpha = getComputedOpacity();\n                        ctx.drawImage(imageSource, 0, 0);\n                    });\n                    ctx.restore();\n                }\n                // Check for save/restore depth of zero!\n                (_a = ctx.verifyDepthZero) === null || _a === void 0 ? void 0 : _a.call(ctx);\n                this._dirty = false;\n                this.debugStats(debugSplitTimes, ctx, renderCtx.stats, extraDebugStats);\n                this.debugSceneNodeHighlight(ctx, this.debug.sceneNodeHighlight, renderCtx.debugNodes);\n                if (root && this.debug.consoleLog) {\n                    Logger.debug('after', { redrawType: RedrawType[root.dirty], canvasCleared: canvasCleared, tree: this.buildTree(root) });\n                }\n                return [2 /*return*/];\n            });\n        });\n    };\n    Scene.prototype.debugStats = function (debugSplitTimes, ctx, renderCtxStats, extraDebugStats) {\n        var e_2, _a;\n        if (extraDebugStats === void 0) { extraDebugStats = {}; }\n        var end = performance.now();\n        if (this.debug.stats) {\n            var start = debugSplitTimes[0];\n            debugSplitTimes.push(end);\n            var pct = function (rendered, skipped) {\n                var total = rendered + skipped;\n                return rendered + \" / \" + total + \" (\" + Math.round((100 * rendered) / total) + \"%)\";\n            };\n            var time_1 = function (start, end) {\n                return Math.round((end - start) * 100) / 100 + \"ms\";\n            };\n            var _b = renderCtxStats !== null && renderCtxStats !== void 0 ? renderCtxStats : {}, _c = _b.layersRendered, layersRendered = _c === void 0 ? 0 : _c, _d = _b.layersSkipped, layersSkipped = _d === void 0 ? 0 : _d, _e = _b.nodesRendered, nodesRendered = _e === void 0 ? 0 : _e, _f = _b.nodesSkipped, nodesSkipped = _f === void 0 ? 0 : _f;\n            var splits = debugSplitTimes\n                .map(function (t, i) { return (i > 0 ? time_1(debugSplitTimes[i - 1], t) : null); })\n                .filter(function (v) { return v != null; })\n                .join(' + ');\n            var extras = Object.entries(extraDebugStats)\n                .map(function (_a) {\n                var _b = __read$X(_a, 2), k = _b[0], v = _b[1];\n                return k + \": \" + v;\n            })\n                .join(' ; ');\n            var stats = [\n                time_1(start, end) + \" (\" + splits + \")\",\n                \"\" + extras,\n                this.debug.stats === 'detailed' ? \"Layers: \" + pct(layersRendered, layersSkipped) : null,\n                this.debug.stats === 'detailed' ? \"Nodes: \" + pct(nodesRendered, nodesSkipped) : null,\n            ].filter(function (v) { return v != null; });\n            var lineHeight = 15;\n            ctx.save();\n            ctx.fillStyle = 'white';\n            ctx.fillRect(0, 0, 200, 10 + lineHeight * stats.length);\n            ctx.fillStyle = 'black';\n            var index = 0;\n            try {\n                for (var stats_1 = __values$z(stats), stats_1_1 = stats_1.next(); !stats_1_1.done; stats_1_1 = stats_1.next()) {\n                    var stat = stats_1_1.value;\n                    ctx.fillText(stat, 2, 10 + index++ * lineHeight);\n                }\n            }\n            catch (e_2_1) { e_2 = { error: e_2_1 }; }\n            finally {\n                try {\n                    if (stats_1_1 && !stats_1_1.done && (_a = stats_1.return)) _a.call(stats_1);\n                }\n                finally { if (e_2) throw e_2.error; }\n            }\n            ctx.restore();\n        }\n    };\n    Scene.prototype.debugSceneNodeHighlight = function (ctx, sceneNodeHighlight, debugNodes) {\n        var e_3, _a, e_4, _b, e_5, _c;\n        var _d;\n        var regexpPredicate = function (matcher) { return function (n) {\n            if (matcher.test(n.id)) {\n                return true;\n            }\n            return n instanceof Group && n.name != null && matcher.test(n.name);\n        }; };\n        var stringPredicate = function (match) { return function (n) {\n            if (match === n.id) {\n                return true;\n            }\n            return n instanceof Group && n.name != null && match === n.name;\n        }; };\n        try {\n            for (var sceneNodeHighlight_1 = __values$z(sceneNodeHighlight), sceneNodeHighlight_1_1 = sceneNodeHighlight_1.next(); !sceneNodeHighlight_1_1.done; sceneNodeHighlight_1_1 = sceneNodeHighlight_1.next()) {\n                var next = sceneNodeHighlight_1_1.value;\n                if (typeof next === 'string' && debugNodes[next] != null)\n                    continue;\n                var predicate = typeof next === 'string' ? stringPredicate(next) : regexpPredicate(next);\n                var nodes = (_d = this.root) === null || _d === void 0 ? void 0 : _d.findNodes(predicate);\n                if (!nodes || nodes.length === 0) {\n                    Logger.debug(\"no debugging node with id [\" + next + \"] in scene graph.\");\n                    continue;\n                }\n                try {\n                    for (var nodes_1 = (e_4 = void 0, __values$z(nodes)), nodes_1_1 = nodes_1.next(); !nodes_1_1.done; nodes_1_1 = nodes_1.next()) {\n                        var node = nodes_1_1.value;\n                        if (node instanceof Group && node.name) {\n                            debugNodes[node.name] = node;\n                        }\n                        else {\n                            debugNodes[node.id] = node;\n                        }\n                    }\n                }\n                catch (e_4_1) { e_4 = { error: e_4_1 }; }\n                finally {\n                    try {\n                        if (nodes_1_1 && !nodes_1_1.done && (_b = nodes_1.return)) _b.call(nodes_1);\n                    }\n                    finally { if (e_4) throw e_4.error; }\n                }\n            }\n        }\n        catch (e_3_1) { e_3 = { error: e_3_1 }; }\n        finally {\n            try {\n                if (sceneNodeHighlight_1_1 && !sceneNodeHighlight_1_1.done && (_a = sceneNodeHighlight_1.return)) _a.call(sceneNodeHighlight_1);\n            }\n            finally { if (e_3) throw e_3.error; }\n        }\n        ctx.save();\n        try {\n            for (var _e = __values$z(Object.entries(debugNodes)), _f = _e.next(); !_f.done; _f = _e.next()) {\n                var _g = __read$X(_f.value, 2), name_1 = _g[0], node = _g[1];\n                var bbox = node.computeTransformedBBox();\n                if (!bbox) {\n                    Logger.debug(\"no bbox for debugged node [\" + name_1 + \"].\");\n                    continue;\n                }\n                ctx.globalAlpha = 0.8;\n                ctx.strokeStyle = 'red';\n                ctx.lineWidth = 1;\n                ctx.strokeRect(bbox.x, bbox.y, bbox.width, bbox.height);\n                ctx.fillStyle = 'red';\n                ctx.strokeStyle = 'white';\n                ctx.font = '16px sans-serif';\n                ctx.textBaseline = 'top';\n                ctx.textAlign = 'left';\n                ctx.lineWidth = 2;\n                ctx.strokeText(name_1, bbox.x, bbox.y, bbox.width);\n                ctx.fillText(name_1, bbox.x, bbox.y, bbox.width);\n            }\n        }\n        catch (e_5_1) { e_5 = { error: e_5_1 }; }\n        finally {\n            try {\n                if (_f && !_f.done && (_c = _e.return)) _c.call(_e);\n            }\n            finally { if (e_5) throw e_5.error; }\n        }\n        ctx.restore();\n    };\n    Scene.prototype.buildTree = function (node) {\n        var _this = this;\n        var _a;\n        var name = (_a = (node instanceof Group ? node.name : null)) !== null && _a !== void 0 ? _a : node.id;\n        return __assign$G({ name: name,\n            node: node, dirty: RedrawType[node.dirty] }, node.children\n            .map(function (c) { return _this.buildTree(c); })\n            .reduce(function (result, childTree) {\n            var treeNodeName = childTree.name;\n            var _a = childTree.node, visible = _a.visible, opacity = _a.opacity, zIndex = _a.zIndex, zIndexSubOrder = _a.zIndexSubOrder, childNode = childTree.node;\n            if (!visible || opacity <= 0) {\n                treeNodeName = \"(\" + treeNodeName + \")\";\n            }\n            if (childNode instanceof Group && childNode.isLayer()) {\n                treeNodeName = \"*\" + treeNodeName + \"*\";\n            }\n            var key = [\n                \"\" + (treeNodeName !== null && treeNodeName !== void 0 ? treeNodeName : '<unknown>'),\n                \"z: \" + zIndex,\n                zIndexSubOrder && \"zo: \" + zIndexSubOrder.join(' / '),\n            ]\n                .filter(function (v) { return !!v; })\n                .join(' ');\n            result[key] = childTree;\n            return result;\n        }, {}));\n    };\n    Scene.prototype.buildDirtyTree = function (node) {\n        var _this = this;\n        var _a;\n        if (node.dirty === RedrawType.NONE) {\n            return { dirtyTree: {}, paths: [] };\n        }\n        var childrenDirtyTree = node.children.map(function (c) { return _this.buildDirtyTree(c); }).filter(function (c) { return c.paths.length > 0; });\n        var name = (_a = (node instanceof Group ? node.name : null)) !== null && _a !== void 0 ? _a : node.id;\n        var paths = childrenDirtyTree.length === 0\n            ? [name]\n            : childrenDirtyTree\n                .map(function (c) { return c.paths; })\n                .reduce(function (r, p) { return r.concat(p); }, [])\n                .map(function (p) { return name + \".\" + p; });\n        return {\n            dirtyTree: __assign$G({ name: name,\n                node: node, dirty: RedrawType[node.dirty] }, childrenDirtyTree\n                .map(function (c) { return c.dirtyTree; })\n                .filter(function (t) { return t.dirty !== undefined; })\n                .reduce(function (result, childTree) {\n                result[childTree.name || '<unknown>'] = childTree;\n                return result;\n            }, {})),\n            paths: paths,\n        };\n    };\n    Scene.className = 'Scene';\n    return Scene;\n}());\n\nvar Observable = /** @class */ (function () {\n    function Observable() {\n        this.allEventListeners = new Map();\n    }\n    Observable.prototype.addEventListener = function (type, listener) {\n        if (typeof listener !== 'function') {\n            throw new Error('AG Charts - listener must be a Function');\n        }\n        var allEventListeners = this.allEventListeners;\n        var eventListeners = allEventListeners.get(type);\n        if (!eventListeners) {\n            eventListeners = new Set();\n            allEventListeners.set(type, eventListeners);\n        }\n        if (!eventListeners.has(listener)) {\n            eventListeners.add(listener);\n        }\n    };\n    Observable.prototype.removeEventListener = function (type, listener) {\n        var allEventListeners = this.allEventListeners;\n        var eventListeners = allEventListeners.get(type);\n        if (!eventListeners) {\n            return;\n        }\n        eventListeners.delete(listener);\n        if (eventListeners.size === 0) {\n            allEventListeners.delete(type);\n        }\n    };\n    Observable.prototype.hasEventListener = function (type) {\n        return this.allEventListeners.has(type);\n    };\n    Observable.prototype.clearEventListeners = function () {\n        this.allEventListeners.clear();\n    };\n    Observable.prototype.fireEvent = function (event) {\n        var listeners = this.allEventListeners.get(event.type);\n        listeners === null || listeners === void 0 ? void 0 : listeners.forEach(function (listener) { return listener(event); });\n    };\n    return Observable;\n}());\n\nvar isString$1 = function (v) { return typeof v === 'string'; };\nvar isStringObject$1 = function (v) {\n    return !!v && Object.prototype.hasOwnProperty.call(v, 'toString') && isString$1(v.toString());\n};\nvar isDate$1 = function (v) { return v instanceof Date && !isNaN(+v); };\nfunction isDiscrete(value) {\n    return isString$1(value) || isStringObject$1(value);\n}\nfunction isContinuous(value) {\n    var isNumberObject = function (v) {\n        return !!v && Object.prototype.hasOwnProperty.call(v, 'valueOf') && isNumber$4(v.valueOf());\n    };\n    var isDate = function (v) { return v instanceof Date && !isNaN(+v); };\n    return isNumber$4(value) || isNumberObject(value) || isDate(value);\n}\nfunction checkDatum(value, isContinuousScale) {\n    if (isContinuousScale && isContinuous(value)) {\n        return value;\n    }\n    else if (!isContinuousScale) {\n        if (!isDiscrete(value)) {\n            return String(value);\n        }\n        return value;\n    }\n    return undefined;\n}\nvar isNumber$4 = function (v) { return typeof v === 'number' && Number.isFinite(v); };\n\nvar __values$y = (undefined && undefined.__values) || function(o) {\n    var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n    if (m) return m.call(o);\n    if (o && typeof o.length === \"number\") return {\n        next: function () {\n            if (o && i >= o.length) o = void 0;\n            return { value: o && o[i++], done: !o };\n        }\n    };\n    throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nvar BREAK_TRANSFORM_CHAIN = Symbol('BREAK');\nvar CONFIG_KEY = '__decorator_config';\nfunction initialiseConfig(target, propertyKeyOrSymbol, propertyKey, valueStoreKey) {\n    if (Object.getOwnPropertyDescriptor(target, CONFIG_KEY) == null) {\n        Object.defineProperty(target, CONFIG_KEY, { value: {} });\n    }\n    var config = target[CONFIG_KEY];\n    if (config[propertyKey] != null) {\n        return config[propertyKey];\n    }\n    config[propertyKey] = { setters: [], getters: [] };\n    var descriptor = Object.getOwnPropertyDescriptor(target, propertyKeyOrSymbol);\n    var prevSet = descriptor === null || descriptor === void 0 ? void 0 : descriptor.set;\n    var prevGet = descriptor === null || descriptor === void 0 ? void 0 : descriptor.get;\n    var getter = function () {\n        var e_1, _a;\n        var _b, _c;\n        var value = prevGet ? prevGet.call(this) : this[valueStoreKey];\n        try {\n            for (var _d = __values$y((_c = (_b = config[propertyKey]) === null || _b === void 0 ? void 0 : _b.getters) !== null && _c !== void 0 ? _c : []), _e = _d.next(); !_e.done; _e = _d.next()) {\n                var transformFn = _e.value;\n                value = transformFn(this, propertyKeyOrSymbol, value);\n                if (value === BREAK_TRANSFORM_CHAIN) {\n                    return undefined;\n                }\n            }\n        }\n        catch (e_1_1) { e_1 = { error: e_1_1 }; }\n        finally {\n            try {\n                if (_e && !_e.done && (_a = _d.return)) _a.call(_d);\n            }\n            finally { if (e_1) throw e_1.error; }\n        }\n        return value;\n    };\n    var setter = function (value) {\n        var e_2, _a;\n        var _b, _c;\n        var setters = (_c = (_b = config[propertyKey]) === null || _b === void 0 ? void 0 : _b.setters) !== null && _c !== void 0 ? _c : [];\n        var oldValue;\n        if (setters.some(function (f) { return f.length > 2; })) {\n            // Lazily retrieve old value.\n            oldValue = prevGet ? prevGet.call(this) : this[valueStoreKey];\n        }\n        try {\n            for (var setters_1 = __values$y(setters), setters_1_1 = setters_1.next(); !setters_1_1.done; setters_1_1 = setters_1.next()) {\n                var transformFn = setters_1_1.value;\n                value = transformFn(this, propertyKeyOrSymbol, value, oldValue);\n                if (value === BREAK_TRANSFORM_CHAIN) {\n                    return;\n                }\n            }\n        }\n        catch (e_2_1) { e_2 = { error: e_2_1 }; }\n        finally {\n            try {\n                if (setters_1_1 && !setters_1_1.done && (_a = setters_1.return)) _a.call(setters_1);\n            }\n            finally { if (e_2) throw e_2.error; }\n        }\n        if (prevSet) {\n            prevSet.call(this, value);\n        }\n        else {\n            this[valueStoreKey] = value;\n        }\n    };\n    Object.defineProperty(target, propertyKeyOrSymbol, {\n        set: setter,\n        get: getter,\n        enumerable: true,\n        configurable: false,\n    });\n    return config[propertyKey];\n}\nfunction addTransformToInstanceProperty(setTransform, getTransform) {\n    return function (target, propertyKeyOrSymbol) {\n        var propertyKey = propertyKeyOrSymbol.toString();\n        var valueStoreKey = \"__\" + propertyKey;\n        var _a = initialiseConfig(target, propertyKeyOrSymbol, propertyKey, valueStoreKey), getters = _a.getters, setters = _a.setters;\n        setters.push(setTransform);\n        if (getTransform) {\n            getters.splice(0, 0, getTransform);\n        }\n    };\n}\n\nfunction createDeprecationWarning() {\n    return function (key, message) {\n        var msg = [\"Property [\" + key + \"] is deprecated.\", message].filter(function (v) { return v != null; }).join(' ');\n        Logger.warnOnce(msg);\n    };\n}\nfunction Deprecated(message, opts) {\n    var def = opts === null || opts === void 0 ? void 0 : opts.default;\n    var warn = createDeprecationWarning();\n    return addTransformToInstanceProperty(function (_, key, value) {\n        if (value !== def) {\n            warn(key.toString(), message);\n        }\n        return value;\n    });\n}\nfunction DeprecatedAndRenamedTo(newPropName, mapValue) {\n    var warnDeprecated = createDeprecationWarning();\n    return addTransformToInstanceProperty(function (target, key, value) {\n        if (value !== target[newPropName]) {\n            warnDeprecated(key.toString(), \"Use [\" + newPropName + \"] instead.\");\n            target[newPropName] = mapValue ? mapValue(value) : value;\n        }\n        return BREAK_TRANSFORM_CHAIN;\n    }, function (target, key) {\n        warnDeprecated(key.toString(), \"Use [\" + newPropName + \"] instead.\");\n        return target[newPropName];\n    });\n}\n\nvar __read$W = (undefined && undefined.__read) || function (o, n) {\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n    if (!m) return o;\n    var i = m.call(o), r, ar = [], e;\n    try {\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n    }\n    catch (error) { e = { error: error }; }\n    finally {\n        try {\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\n        }\n        finally { if (e) throw e.error; }\n    }\n    return ar;\n};\nvar Color = /** @class */ (function () {\n    /**\n     * Every color component should be in the [0, 1] range.\n     * Some easing functions (such as elastic easing) can overshoot the target value by some amount.\n     * So, when animating colors, if the source or target color components are already near\n     * or at the edge of the allowed [0, 1] range, it is possible for the intermediate color\n     * component value to end up outside of that range mid-animation. For this reason the constructor\n     * performs range checking/constraining.\n     * @param r Red component.\n     * @param g Green component.\n     * @param b Blue component.\n     * @param a Alpha (opacity) component.\n     */\n    function Color(r, g, b, a) {\n        if (a === void 0) { a = 1; }\n        // NaN is treated as 0.\n        this.r = Math.min(1, Math.max(0, r || 0));\n        this.g = Math.min(1, Math.max(0, g || 0));\n        this.b = Math.min(1, Math.max(0, b || 0));\n        this.a = Math.min(1, Math.max(0, a || 0));\n    }\n    /**\n     * A color string can be in one of the following formats to be valid:\n     * - #rgb\n     * - #rrggbb\n     * - rgb(r, g, b)\n     * - rgba(r, g, b, a)\n     * - CSS color name such as 'white', 'orange', 'cyan', etc.\n     */\n    Color.validColorString = function (str) {\n        if (str.indexOf('#') >= 0) {\n            return !!Color.parseHex(str);\n        }\n        if (str.indexOf('rgb') >= 0) {\n            return !!Color.stringToRgba(str);\n        }\n        return !!Color.nameToHex[str.toLowerCase()];\n    };\n    /**\n     * The given string can be in one of the following formats:\n     * - #rgb\n     * - #rrggbb\n     * - rgb(r, g, b)\n     * - rgba(r, g, b, a)\n     * - CSS color name such as 'white', 'orange', 'cyan', etc.\n     * @param str\n     */\n    Color.fromString = function (str) {\n        // hexadecimal notation\n        if (str.indexOf('#') >= 0) {\n            // there can be some leading whitespace\n            return Color.fromHexString(str);\n        }\n        // color name\n        var hex = Color.nameToHex[str.toLowerCase()];\n        if (hex) {\n            return Color.fromHexString(hex);\n        }\n        // rgb(a) notation\n        if (str.indexOf('rgb') >= 0) {\n            return Color.fromRgbaString(str);\n        }\n        throw new Error(\"Invalid color string: '\" + str + \"'\");\n    };\n    Color.tryParseFromString = function (str) {\n        try {\n            return Color.fromString(str);\n        }\n        catch (e) {\n            Logger.warnOnce(\"invalid color string: '\" + str + \"'.\");\n            return Color.fromArray([0, 0, 0]);\n        }\n    };\n    // See https://drafts.csswg.org/css-color/#hex-notation\n    Color.parseHex = function (input) {\n        input = input.replace(/ /g, '').slice(1);\n        var parts;\n        switch (input.length) {\n            case 6:\n            case 8:\n                parts = [];\n                for (var i = 0; i < input.length; i += 2) {\n                    parts.push(parseInt(\"\" + input[i] + input[i + 1], 16));\n                }\n                break;\n            case 3:\n            case 4:\n                parts = input\n                    .split('')\n                    .map(function (p) { return parseInt(p, 16); })\n                    .map(function (p) { return p + p * 16; });\n                break;\n        }\n        if ((parts === null || parts === void 0 ? void 0 : parts.length) >= 3) {\n            if (parts.every(function (p) { return p >= 0; })) {\n                if (parts.length === 3) {\n                    parts.push(255);\n                }\n                return parts;\n            }\n        }\n    };\n    Color.fromHexString = function (str) {\n        var values = Color.parseHex(str);\n        if (values) {\n            var _a = __read$W(values, 4), r = _a[0], g = _a[1], b = _a[2], a = _a[3];\n            return new Color(r / 255, g / 255, b / 255, a / 255);\n        }\n        throw new Error(\"Malformed hexadecimal color string: '\" + str + \"'\");\n    };\n    Color.stringToRgba = function (str) {\n        // Find positions of opening and closing parentheses.\n        var _a = __read$W([NaN, NaN], 2), po = _a[0], pc = _a[1];\n        for (var i = 0; i < str.length; i++) {\n            var c = str[i];\n            if (!po && c === '(') {\n                po = i;\n            }\n            else if (c === ')') {\n                pc = i;\n                break;\n            }\n        }\n        var contents = po && pc && str.substring(po + 1, pc);\n        if (!contents) {\n            return;\n        }\n        var parts = contents.split(',');\n        var rgba = [];\n        for (var i = 0; i < parts.length; i++) {\n            var part = parts[i];\n            var value = parseFloat(part);\n            if (isNaN(value)) {\n                return;\n            }\n            if (part.indexOf('%') >= 0) {\n                // percentage r, g, or b value\n                value = Math.max(0, Math.min(100, value));\n                value /= 100;\n            }\n            else {\n                if (i === 3) {\n                    // alpha component\n                    value = Math.max(0, Math.min(1, value));\n                }\n                else {\n                    // absolute r, g, or b value\n                    value = Math.max(0, Math.min(255, value));\n                    value /= 255;\n                }\n            }\n            rgba.push(value);\n        }\n        return rgba;\n    };\n    Color.fromRgbaString = function (str) {\n        var rgba = Color.stringToRgba(str);\n        if (rgba) {\n            if (rgba.length === 3) {\n                return new Color(rgba[0], rgba[1], rgba[2]);\n            }\n            else if (rgba.length === 4) {\n                return new Color(rgba[0], rgba[1], rgba[2], rgba[3]);\n            }\n        }\n        throw new Error(\"Malformed rgb/rgba color string: '\" + str + \"'\");\n    };\n    Color.fromArray = function (arr) {\n        if (arr.length === 4) {\n            return new Color(arr[0], arr[1], arr[2], arr[3]);\n        }\n        if (arr.length === 3) {\n            return new Color(arr[0], arr[1], arr[2]);\n        }\n        throw new Error('The given array should contain 3 or 4 color components (numbers).');\n    };\n    Color.fromHSB = function (h, s, b, alpha) {\n        if (alpha === void 0) { alpha = 1; }\n        var rgb = Color.HSBtoRGB(h, s, b);\n        return new Color(rgb[0], rgb[1], rgb[2], alpha);\n    };\n    Color.padHex = function (str) {\n        // Can't use `padStart(2, '0')` here because of IE.\n        return str.length === 1 ? '0' + str : str;\n    };\n    Color.prototype.toHexString = function () {\n        var hex = '#' +\n            Color.padHex(Math.round(this.r * 255).toString(16)) +\n            Color.padHex(Math.round(this.g * 255).toString(16)) +\n            Color.padHex(Math.round(this.b * 255).toString(16));\n        if (this.a < 1) {\n            hex += Color.padHex(Math.round(this.a * 255).toString(16));\n        }\n        return hex;\n    };\n    Color.prototype.toRgbaString = function (fractionDigits) {\n        if (fractionDigits === void 0) { fractionDigits = 3; }\n        var components = [Math.round(this.r * 255), Math.round(this.g * 255), Math.round(this.b * 255)];\n        var k = Math.pow(10, fractionDigits);\n        if (this.a !== 1) {\n            components.push(Math.round(this.a * k) / k);\n            return \"rgba(\" + components.join(', ') + \")\";\n        }\n        return \"rgb(\" + components.join(', ') + \")\";\n    };\n    Color.prototype.toString = function () {\n        if (this.a === 1) {\n            return this.toHexString();\n        }\n        return this.toRgbaString();\n    };\n    Color.prototype.toHSB = function () {\n        return Color.RGBtoHSB(this.r, this.g, this.b);\n    };\n    /**\n     * Converts the given RGB triple to an array of HSB (HSV) components.\n     * The hue component will be `NaN` for achromatic colors.\n     */\n    Color.RGBtoHSB = function (r, g, b) {\n        var min = Math.min(r, g, b);\n        var max = Math.max(r, g, b);\n        var S = max !== 0 ? (max - min) / max : 0;\n        var H = NaN;\n        // min == max, means all components are the same\n        // and the color is a shade of gray with no hue (H is NaN)\n        if (min !== max) {\n            var delta = max - min;\n            var rc = (max - r) / delta;\n            var gc_1 = (max - g) / delta;\n            var bc = (max - b) / delta;\n            if (r === max) {\n                H = bc - gc_1;\n            }\n            else if (g === max) {\n                H = 2.0 + rc - bc;\n            }\n            else {\n                H = 4.0 + gc_1 - rc;\n            }\n            H /= 6.0;\n            if (H < 0) {\n                H = H + 1.0;\n            }\n        }\n        return [H * 360, S, max];\n    };\n    /**\n     * Converts the given HSB (HSV) triple to an array of RGB components.\n     */\n    Color.HSBtoRGB = function (H, S, B) {\n        if (isNaN(H)) {\n            H = 0;\n        }\n        H = (((H % 360) + 360) % 360) / 360; // normalize hue to [0, 360] interval, then scale to [0, 1]\n        var r = 0;\n        var g = 0;\n        var b = 0;\n        if (S === 0) {\n            r = g = b = B;\n        }\n        else {\n            var h = (H - Math.floor(H)) * 6;\n            var f = h - Math.floor(h);\n            var p = B * (1 - S);\n            var q = B * (1 - S * f);\n            var t = B * (1 - S * (1 - f));\n            switch (h >> 0 // discard the floating point part of the number\n            ) {\n                case 0:\n                    r = B;\n                    g = t;\n                    b = p;\n                    break;\n                case 1:\n                    r = q;\n                    g = B;\n                    b = p;\n                    break;\n                case 2:\n                    r = p;\n                    g = B;\n                    b = t;\n                    break;\n                case 3:\n                    r = p;\n                    g = q;\n                    b = B;\n                    break;\n                case 4:\n                    r = t;\n                    g = p;\n                    b = B;\n                    break;\n                case 5:\n                    r = B;\n                    g = p;\n                    b = q;\n                    break;\n            }\n        }\n        return [r, g, b];\n    };\n    Color.prototype.derive = function (hueShift, saturationFactor, brightnessFactor, opacityFactor) {\n        var hsb = Color.RGBtoHSB(this.r, this.g, this.b);\n        var b = hsb[2];\n        if (b == 0 && brightnessFactor > 1.0) {\n            b = 0.05;\n        }\n        var h = (((hsb[0] + hueShift) % 360) + 360) % 360;\n        var s = Math.max(Math.min(hsb[1] * saturationFactor, 1.0), 0.0);\n        b = Math.max(Math.min(b * brightnessFactor, 1.0), 0.0);\n        var a = Math.max(Math.min(this.a * opacityFactor, 1.0), 0.0);\n        var rgba = Color.HSBtoRGB(h, s, b);\n        rgba.push(a);\n        return Color.fromArray(rgba);\n    };\n    Color.prototype.brighter = function () {\n        return this.derive(0, 1.0, 1.0 / 0.7, 1.0);\n    };\n    Color.prototype.darker = function () {\n        return this.derive(0, 1.0, 0.7, 1.0);\n    };\n    /**\n     * CSS Color Module Level 4:\n     * https://drafts.csswg.org/css-color/#named-colors\n     */\n    Color.nameToHex = Object.freeze({\n        aliceblue: '#F0F8FF',\n        antiquewhite: '#FAEBD7',\n        aqua: '#00FFFF',\n        aquamarine: '#7FFFD4',\n        azure: '#F0FFFF',\n        beige: '#F5F5DC',\n        bisque: '#FFE4C4',\n        black: '#000000',\n        blanchedalmond: '#FFEBCD',\n        blue: '#0000FF',\n        blueviolet: '#8A2BE2',\n        brown: '#A52A2A',\n        burlywood: '#DEB887',\n        cadetblue: '#5F9EA0',\n        chartreuse: '#7FFF00',\n        chocolate: '#D2691E',\n        coral: '#FF7F50',\n        cornflowerblue: '#6495ED',\n        cornsilk: '#FFF8DC',\n        crimson: '#DC143C',\n        cyan: '#00FFFF',\n        darkblue: '#00008B',\n        darkcyan: '#008B8B',\n        darkgoldenrod: '#B8860B',\n        darkgray: '#A9A9A9',\n        darkgreen: '#006400',\n        darkgrey: '#A9A9A9',\n        darkkhaki: '#BDB76B',\n        darkmagenta: '#8B008B',\n        darkolivegreen: '#556B2F',\n        darkorange: '#FF8C00',\n        darkorchid: '#9932CC',\n        darkred: '#8B0000',\n        darksalmon: '#E9967A',\n        darkseagreen: '#8FBC8F',\n        darkslateblue: '#483D8B',\n        darkslategray: '#2F4F4F',\n        darkslategrey: '#2F4F4F',\n        darkturquoise: '#00CED1',\n        darkviolet: '#9400D3',\n        deeppink: '#FF1493',\n        deepskyblue: '#00BFFF',\n        dimgray: '#696969',\n        dimgrey: '#696969',\n        dodgerblue: '#1E90FF',\n        firebrick: '#B22222',\n        floralwhite: '#FFFAF0',\n        forestgreen: '#228B22',\n        fuchsia: '#FF00FF',\n        gainsboro: '#DCDCDC',\n        ghostwhite: '#F8F8FF',\n        gold: '#FFD700',\n        goldenrod: '#DAA520',\n        gray: '#808080',\n        green: '#008000',\n        greenyellow: '#ADFF2F',\n        grey: '#808080',\n        honeydew: '#F0FFF0',\n        hotpink: '#FF69B4',\n        indianred: '#CD5C5C',\n        indigo: '#4B0082',\n        ivory: '#FFFFF0',\n        khaki: '#F0E68C',\n        lavender: '#E6E6FA',\n        lavenderblush: '#FFF0F5',\n        lawngreen: '#7CFC00',\n        lemonchiffon: '#FFFACD',\n        lightblue: '#ADD8E6',\n        lightcoral: '#F08080',\n        lightcyan: '#E0FFFF',\n        lightgoldenrodyellow: '#FAFAD2',\n        lightgray: '#D3D3D3',\n        lightgreen: '#90EE90',\n        lightgrey: '#D3D3D3',\n        lightpink: '#FFB6C1',\n        lightsalmon: '#FFA07A',\n        lightseagreen: '#20B2AA',\n        lightskyblue: '#87CEFA',\n        lightslategray: '#778899',\n        lightslategrey: '#778899',\n        lightsteelblue: '#B0C4DE',\n        lightyellow: '#FFFFE0',\n        lime: '#00FF00',\n        limegreen: '#32CD32',\n        linen: '#FAF0E6',\n        magenta: '#FF00FF',\n        maroon: '#800000',\n        mediumaquamarine: '#66CDAA',\n        mediumblue: '#0000CD',\n        mediumorchid: '#BA55D3',\n        mediumpurple: '#9370DB',\n        mediumseagreen: '#3CB371',\n        mediumslateblue: '#7B68EE',\n        mediumspringgreen: '#00FA9A',\n        mediumturquoise: '#48D1CC',\n        mediumvioletred: '#C71585',\n        midnightblue: '#191970',\n        mintcream: '#F5FFFA',\n        mistyrose: '#FFE4E1',\n        moccasin: '#FFE4B5',\n        navajowhite: '#FFDEAD',\n        navy: '#000080',\n        oldlace: '#FDF5E6',\n        olive: '#808000',\n        olivedrab: '#6B8E23',\n        orange: '#FFA500',\n        orangered: '#FF4500',\n        orchid: '#DA70D6',\n        palegoldenrod: '#EEE8AA',\n        palegreen: '#98FB98',\n        paleturquoise: '#AFEEEE',\n        palevioletred: '#DB7093',\n        papayawhip: '#FFEFD5',\n        peachpuff: '#FFDAB9',\n        peru: '#CD853F',\n        pink: '#FFC0CB',\n        plum: '#DDA0DD',\n        powderblue: '#B0E0E6',\n        purple: '#800080',\n        rebeccapurple: '#663399',\n        red: '#FF0000',\n        rosybrown: '#BC8F8F',\n        royalblue: '#4169E1',\n        saddlebrown: '#8B4513',\n        salmon: '#FA8072',\n        sandybrown: '#F4A460',\n        seagreen: '#2E8B57',\n        seashell: '#FFF5EE',\n        sienna: '#A0522D',\n        silver: '#C0C0C0',\n        skyblue: '#87CEEB',\n        slateblue: '#6A5ACD',\n        slategray: '#708090',\n        slategrey: '#708090',\n        snow: '#FFFAFA',\n        springgreen: '#00FF7F',\n        steelblue: '#4682B4',\n        tan: '#D2B48C',\n        teal: '#008080',\n        thistle: '#D8BFD8',\n        tomato: '#FF6347',\n        transparent: '#00000000',\n        turquoise: '#40E0D0',\n        violet: '#EE82EE',\n        wheat: '#F5DEB3',\n        white: '#FFFFFF',\n        whitesmoke: '#F5F5F5',\n        yellow: '#FFFF00',\n        yellowgreen: '#9ACD32',\n    });\n    return Color;\n}());\n\nfunction Validate(predicate) {\n    return addTransformToInstanceProperty(function (target, prop, v) {\n        var _a, _b, _c;\n        if (predicate(v, { target: target })) {\n            return v;\n        }\n        var cleanKey = prop.toString().replace(/^_*/, '');\n        var targetClass = (_b = (_a = target.constructor) === null || _a === void 0 ? void 0 : _a.className) !== null && _b !== void 0 ? _b : (_c = target.constructor) === null || _c === void 0 ? void 0 : _c.name;\n        if ((targetClass === null || targetClass === void 0 ? void 0 : targetClass.length) < 3) {\n            targetClass = null;\n        }\n        var targetClassName = targetClass ? \"of [\" + targetClass + \"] \" : '';\n        if (predicate.message) {\n            Logger.warn(\"Property [\" + cleanKey + \"] \" + targetClassName + \"cannot be set to [\" + JSON.stringify(v) + \"]; \" + predicate.message + \", ignoring.\");\n        }\n        else {\n            Logger.warn(\"Property [\" + cleanKey + \"] \" + targetClassName + \"cannot be set to [\" + JSON.stringify(v) + \"], ignoring.\");\n        }\n        return BREAK_TRANSFORM_CHAIN;\n    });\n}\nfunction predicateWithMessage(predicate, message) {\n    predicate.message = message;\n    return predicate;\n}\nvar OPTIONAL = function (v, ctx, predicate) {\n    return v === undefined || predicate(v, ctx);\n};\nvar ARRAY = function (length, predicate) {\n    return predicateWithMessage(function (v, ctx) {\n        return Array.isArray(v) &&\n            (length ? v.length === length : true) &&\n            (predicate ? v.every(function (e) { return predicate(e, ctx); }) : true);\n    }, \"expecting an Array\");\n};\nvar OPT_ARRAY = function (length) {\n    return predicateWithMessage(function (v, ctx) { return OPTIONAL(v, ctx, ARRAY(length)); }, 'expecting an optional Array');\n};\nvar AND = function () {\n    var predicates = [];\n    for (var _i = 0; _i < arguments.length; _i++) {\n        predicates[_i] = arguments[_i];\n    }\n    return predicateWithMessage(function (v, ctx) { return predicates.every(function (p) { return p(v, ctx); }); }, predicates\n        .map(function (p) { return p.message; })\n        .filter(function (m) { return m != null; })\n        .join(' AND '));\n};\nvar OR = function () {\n    var predicates = [];\n    for (var _i = 0; _i < arguments.length; _i++) {\n        predicates[_i] = arguments[_i];\n    }\n    return predicateWithMessage(function (v, ctx) { return predicates.some(function (p) { return p(v, ctx); }); }, predicates\n        .map(function (p) { return p.message; })\n        .filter(function (m) { return m != null; })\n        .join(' OR '));\n};\nvar isComparable = function (v) {\n    return v != null && !isNaN(v);\n};\nvar LESS_THAN = function (otherField) {\n    return predicateWithMessage(function (v, ctx) {\n        return !isComparable(v) || !isComparable(ctx.target[otherField]) || v < ctx.target[otherField];\n    }, \"expected to be less than \" + otherField);\n};\nvar GREATER_THAN = function (otherField) {\n    return predicateWithMessage(function (v, ctx) {\n        return !isComparable(v) || !isComparable(ctx.target[otherField]) || v > ctx.target[otherField];\n    }, \"expected to be greater than \" + otherField);\n};\nvar FUNCTION = predicateWithMessage(function (v) { return typeof v === 'function'; }, 'expecting a Function');\nvar OPT_FUNCTION = predicateWithMessage(function (v, ctx) { return OPTIONAL(v, ctx, FUNCTION); }, \"expecting an optional Function\");\nvar BOOLEAN = predicateWithMessage(function (v) { return v === true || v === false; }, 'expecting a Boolean');\nvar OPT_BOOLEAN = predicateWithMessage(function (v, ctx) { return OPTIONAL(v, ctx, BOOLEAN); }, 'expecting an optional Boolean');\nvar STRING = predicateWithMessage(function (v) { return typeof v === 'string'; }, 'expecting a String');\nvar OPT_STRING = predicateWithMessage(function (v, ctx) { return OPTIONAL(v, ctx, STRING); }, 'expecting an optional String');\nvar DATE = predicateWithMessage(function (v) { return v instanceof Date && !isNaN(+v); }, 'expecting a Date object');\nvar OPT_DATE = predicateWithMessage(function (v, ctx) { return OPTIONAL(v, ctx, DATE); }, 'expecting an optional Date');\npredicateWithMessage(ARRAY(undefined, DATE), 'expecting an Array of Date objects');\nvar DATETIME_MS = NUMBER(0);\nvar OPT_DATETIME_MS = predicateWithMessage(function (v, ctx) { return OPTIONAL(v, ctx, DATETIME_MS); }, 'expecting an optional number');\nvar OPT_DATE_OR_DATETIME_MS = OR(OPT_DATE, OPT_DATETIME_MS);\nvar colorMessage = \"A color string can be in one of the following formats to be valid: #rgb, #rrggbb, rgb(r, g, b), rgba(r, g, b, a) or a CSS color name such as 'white', 'orange', 'cyan', etc\";\nvar COLOR_STRING = predicateWithMessage(function (v) {\n    if (typeof v !== 'string') {\n        return false;\n    }\n    return Color.validColorString(v);\n}, \"expecting a color String. \" + colorMessage);\nvar OPT_COLOR_STRING = predicateWithMessage(function (v, ctx) { return OPTIONAL(v, ctx, COLOR_STRING); }, \"expecting an optional color String. \" + colorMessage);\nvar COLOR_STRING_ARRAY = predicateWithMessage(ARRAY(undefined, COLOR_STRING), \"expecting an Array of color strings. \" + colorMessage);\nvar OPT_COLOR_STRING_ARRAY = predicateWithMessage(function (v, ctx) { return OPTIONAL(v, ctx, COLOR_STRING_ARRAY); }, \"expecting an optional Array of color strings. \" + colorMessage);\nfunction NUMBER(min, max) {\n    var message = \"expecting a finite Number\" + ((min !== undefined ? ', more than or equal to ' + min : '') +\n        (max !== undefined ? ', less than or equal to ' + max : ''));\n    return predicateWithMessage(function (v) {\n        return typeof v === 'number' &&\n            Number.isFinite(v) &&\n            (min !== undefined ? v >= min : true) &&\n            (max !== undefined ? v <= max : true);\n    }, message);\n}\nfunction OPT_NUMBER(min, max) {\n    var message = \"expecting an optional finite Number\" + ((min !== undefined ? ', more than or equal to ' + min : '') +\n        (max !== undefined ? ', less than or equal to ' + max : ''));\n    return predicateWithMessage(function (v, ctx) { return OPTIONAL(v, ctx, NUMBER(min, max)); }, message);\n}\nfunction NUMBER_OR_NAN(min, max) {\n    // Can be NaN or finite number\n    var message = \"expecting a finite Number\" + ((min !== undefined ? ', more than or equal to ' + min : '') +\n        (max !== undefined ? ', less than or equal to ' + max : ''));\n    return predicateWithMessage(function (v) {\n        return typeof v === 'number' &&\n            (isNaN(v) ||\n                (Number.isFinite(v) && (min !== undefined ? v >= min : true) && (max !== undefined ? v <= max : true)));\n    }, message);\n}\nvar NUMBER_ARRAY = predicateWithMessage(ARRAY(undefined, NUMBER()), 'expecting an Array of numbers');\nvar OPT_NUMBER_ARRAY = predicateWithMessage(function (v, ctx) { return OPTIONAL(v, ctx, NUMBER_ARRAY); }, 'expecting an optional Array of numbers');\nvar STRING_ARRAY = predicateWithMessage(ARRAY(undefined, STRING), 'expecting an Array of strings');\npredicateWithMessage(function (v, ctx) { return OPTIONAL(v, ctx, STRING_ARRAY); }, 'expecting an optional Array of strings');\nfunction STRING_UNION() {\n    var values = [];\n    for (var _i = 0; _i < arguments.length; _i++) {\n        values[_i] = arguments[_i];\n    }\n    var message = \"expecting one of: \" + values.join(', ');\n    return predicateWithMessage(function (v) { return typeof v === 'string' && values.indexOf(v) >= 0; }, message);\n}\nvar BOOLEAN_ARRAY = predicateWithMessage(ARRAY(undefined, BOOLEAN), 'expecting an Array of boolean values');\npredicateWithMessage(function (v, ctx) { return OPTIONAL(v, ctx, BOOLEAN_ARRAY); }, 'expecting an optional Array of boolean values');\nvar FONT_WEIGHTS = [\n    'normal',\n    'bold',\n    'bolder',\n    'lighter',\n    '100',\n    '200',\n    '300',\n    '400',\n    '500',\n    '600',\n    '700',\n    '800',\n    '900',\n];\nvar FONT_STYLE = predicateWithMessage(function (v) { return v === 'normal' || v === 'italic' || v === 'oblique'; }, \"expecting a font style keyword such as 'normal', 'italic' or 'oblique'\");\nvar OPT_FONT_STYLE = predicateWithMessage(function (v, ctx) { return OPTIONAL(v, ctx, FONT_STYLE); }, \"expecting an optional font style keyword such as 'normal', 'italic' or 'oblique'\");\nvar FONT_WEIGHT = predicateWithMessage(function (v) { return FONT_WEIGHTS.includes(v); }, \"expecting a font weight keyword such as 'normal', 'bold' or 'bolder' or a numeric value such as 100, 300 or 600\");\nvar OPT_FONT_WEIGHT = predicateWithMessage(function (v, ctx) { return OPTIONAL(v, ctx, FONT_WEIGHT); }, \"expecting an optional font weight keyword such as 'normal', 'bold' or 'bolder' or a numeric value such as 100, 300 or 600\");\nvar LINE_DASH = predicateWithMessage(ARRAY(undefined, NUMBER(0)), 'expecting an Array of numbers specifying the length in pixels of alternating dashes and gaps, for example, [6, 3] means dashes with a length of 6 pixels with gaps between of 3 pixels.');\nvar OPT_LINE_DASH = predicateWithMessage(function (v, ctx) { return OPTIONAL(v, ctx, LINE_DASH); }, 'expecting an optional Array of numbers specifying the length in pixels of alternating dashes and gaps, for example, [6, 3] means dashes with a length of 6 pixels with gaps between of 3 pixels.');\nvar LINE_CAPS = ['butt', 'round', 'square'];\nvar LINE_CAP = predicateWithMessage(function (v) { return LINE_CAPS.includes(v); }, \"expecting a line cap keyword such as 'butt', 'round' or 'square'\");\npredicateWithMessage(function (v, ctx) { return OPTIONAL(v, ctx, LINE_CAP); }, \"expecting an optional line cap keyword such as 'butt', 'round' or 'square'\");\nvar LINE_JOINS = ['round', 'bevel', 'miter'];\nvar LINE_JOIN = predicateWithMessage(function (v) { return LINE_JOINS.includes(v); }, \"expecting a line join keyword such as 'round', 'bevel' or 'miter'\");\npredicateWithMessage(function (v, ctx) { return OPTIONAL(v, ctx, LINE_JOIN); }, \"expecting an optional line join keyword such as 'round', 'bevel' or 'miter'\");\nvar POSITIONS = ['top', 'right', 'bottom', 'left'];\nvar POSITION = predicateWithMessage(function (v) { return POSITIONS.includes(v); }, \"expecting a position keyword such as 'top', 'right', 'bottom' or 'left\");\nvar INTERACTION_RANGES = ['exact', 'nearest'];\nvar INTERACTION_RANGE = predicateWithMessage(function (v) { return (typeof v === 'number' && Number.isFinite(v)) || INTERACTION_RANGES.includes(v); }, \"expecting an interaction range of 'exact', 'nearest' or a number\");\n\n/**\n * Constants to declare the expected nominal zIndex for all types of layer in chart rendering.\n */\nvar Layers;\n(function (Layers) {\n    Layers[Layers[\"SERIES_BACKGROUND_ZINDEX\"] = -10] = \"SERIES_BACKGROUND_ZINDEX\";\n    Layers[Layers[\"AXIS_GRID_ZINDEX\"] = 0] = \"AXIS_GRID_ZINDEX\";\n    Layers[Layers[\"AXIS_ZINDEX\"] = 20] = \"AXIS_ZINDEX\";\n    Layers[Layers[\"SERIES_CROSSLINE_RANGE_ZINDEX\"] = 30] = \"SERIES_CROSSLINE_RANGE_ZINDEX\";\n    Layers[Layers[\"SERIES_LAYER_ZINDEX\"] = 500] = \"SERIES_LAYER_ZINDEX\";\n    Layers[Layers[\"SERIES_CROSSHAIR_ZINDEX\"] = 1000] = \"SERIES_CROSSHAIR_ZINDEX\";\n    Layers[Layers[\"SERIES_LABEL_ZINDEX\"] = 1500] = \"SERIES_LABEL_ZINDEX\";\n    Layers[Layers[\"SERIES_CROSSLINE_LINE_ZINDEX\"] = 2500] = \"SERIES_CROSSLINE_LINE_ZINDEX\";\n    Layers[Layers[\"LEGEND_ZINDEX\"] = 3000] = \"LEGEND_ZINDEX\";\n})(Layers || (Layers = {}));\n\nvar ChartAxisDirection;\n(function (ChartAxisDirection) {\n    ChartAxisDirection[\"X\"] = \"x\";\n    ChartAxisDirection[\"Y\"] = \"y\";\n})(ChartAxisDirection || (ChartAxisDirection = {}));\n\nvar __decorate$1T = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __values$x = (undefined && undefined.__values) || function(o) {\n    var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n    if (m) return m.call(o);\n    if (o && typeof o.length === \"number\") return {\n        next: function () {\n            if (o && i >= o.length) o = void 0;\n            return { value: o && o[i++], done: !o };\n        }\n    };\n    throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nvar DEFAULT_TOOLTIP_CLASS = 'ag-chart-tooltip';\nvar defaultTooltipCss$1 = \"\\n.\" + DEFAULT_TOOLTIP_CLASS + \" {\\n    transition: transform 0.1s ease;\\n    display: table;\\n    position: fixed;\\n    left: 0px;\\n    top: 0px;\\n    white-space: nowrap;\\n    z-index: 99999;\\n    font: 12px Verdana, sans-serif;\\n    color: black;\\n    background: rgb(244, 244, 244);\\n    border-radius: 5px;\\n    box-shadow: 0 0 1px rgba(3, 3, 3, 0.7), 0.5vh 0.5vh 1vh rgba(3, 3, 3, 0.25);\\n}\\n\\n.\" + DEFAULT_TOOLTIP_CLASS + \"-no-interaction {\\n    pointer-events: none;\\n    user-select: none;\\n}\\n\\n.\" + DEFAULT_TOOLTIP_CLASS + \"-no-animation {\\n    transition: none !important;\\n}\\n\\n.\" + DEFAULT_TOOLTIP_CLASS + \"-hidden {\\n    visibility: hidden;\\n}\\n\\n.\" + DEFAULT_TOOLTIP_CLASS + \"-title {\\n    font-weight: bold;\\n    padding: 7px;\\n    border-top-left-radius: 5px;\\n    border-top-right-radius: 5px;\\n    color: white;\\n    background-color: #888888;\\n    border-top-left-radius: 5px;\\n    border-top-right-radius: 5px;\\n}\\n\\n.\" + DEFAULT_TOOLTIP_CLASS + \"-content {\\n    padding: 7px;\\n    line-height: 1.7em;\\n    border-bottom-left-radius: 5px;\\n    border-bottom-right-radius: 5px;\\n    overflow: hidden;\\n}\\n\\n.\" + DEFAULT_TOOLTIP_CLASS + \"-content:empty {\\n    padding: 0;\\n    height: 7px;\\n}\\n\\n.\" + DEFAULT_TOOLTIP_CLASS + \"-arrow::before {\\n    content: \\\"\\\";\\n\\n    position: absolute;\\n    top: 100%;\\n    left: 50%;\\n    transform: translateX(-50%);\\n\\n    border: 6px solid #989898;\\n\\n    border-left-color: transparent;\\n    border-right-color: transparent;\\n    border-top-color: #989898;\\n    border-bottom-color: transparent;\\n\\n    width: 0;\\n    height: 0;\\n\\n    margin: 0 auto;\\n}\\n\\n.\" + DEFAULT_TOOLTIP_CLASS + \"-arrow::after {\\n    content: \\\"\\\";\\n\\n    position: absolute;\\n    top: 100%;\\n    left: 50%;\\n    transform: translateX(-50%);\\n\\n    border: 5px solid black;\\n\\n    border-left-color: transparent;\\n    border-right-color: transparent;\\n    border-top-color: rgb(244, 244, 244);\\n    border-bottom-color: transparent;\\n\\n    width: 0;\\n    height: 0;\\n\\n    margin: 0 auto;\\n}\\n\\n.ag-chart-wrapper {\\n    box-sizing: border-box;\\n    overflow: hidden;\\n}\\n\";\nfunction toTooltipHtml$1(input, defaults) {\n    if (typeof input === 'string') {\n        return input;\n    }\n    defaults = defaults || {};\n    var _a = input.content, content = _a === void 0 ? defaults.content || '' : _a, _b = input.title, title = _b === void 0 ? defaults.title || undefined : _b, _c = input.color, color = _c === void 0 ? defaults.color || 'white' : _c, _d = input.backgroundColor, backgroundColor = _d === void 0 ? defaults.backgroundColor || '#888' : _d;\n    var titleHtml = title\n        ? \"<div class=\\\"\" + DEFAULT_TOOLTIP_CLASS + \"-title\\\"\\n        style=\\\"color: \" + color + \"; background-color: \" + backgroundColor + \"\\\">\" + title + \"</div>\"\n        : '';\n    return titleHtml + \"<div class=\\\"\" + DEFAULT_TOOLTIP_CLASS + \"-content\\\">\" + content + \"</div>\";\n}\nvar POSITION_TYPES = ['pointer', 'node'];\nvar POSITION_TYPE = predicateWithMessage(function (v) { return POSITION_TYPES.includes(v); }, \"expecting a position type keyword such as 'pointer' or 'node'\");\nvar TooltipPosition = /** @class */ (function () {\n    function TooltipPosition() {\n        /** The type of positioning for the tooltip. By default, the tooltip follows the pointer. */\n        this.type = 'pointer';\n        /** The horizontal offset in pixels for the position of the tooltip. */\n        this.xOffset = 0;\n        /** The vertical offset in pixels for the position of the tooltip. */\n        this.yOffset = 0;\n    }\n    __decorate$1T([\n        Validate(POSITION_TYPE)\n    ], TooltipPosition.prototype, \"type\", void 0);\n    __decorate$1T([\n        Validate(NUMBER())\n    ], TooltipPosition.prototype, \"xOffset\", void 0);\n    __decorate$1T([\n        Validate(NUMBER())\n    ], TooltipPosition.prototype, \"yOffset\", void 0);\n    return TooltipPosition;\n}());\nvar Tooltip = /** @class */ (function () {\n    function Tooltip(canvasElement, document, container) {\n        var _this = this;\n        this.enableInteraction = false;\n        this.enabled = true;\n        this.class = undefined;\n        this.lastClass = undefined;\n        this.delay = 0;\n        this.range = 'nearest';\n        this.position = new TooltipPosition();\n        this.showTimeout = 0;\n        this.showArrow = true;\n        this.tooltipRoot = container;\n        var element = document.createElement('div');\n        this.element = this.tooltipRoot.appendChild(element);\n        this.element.classList.add(DEFAULT_TOOLTIP_CLASS);\n        this.canvasElement = canvasElement;\n        // Detect when the chart becomes invisible and hide the tooltip as well.\n        if (window.IntersectionObserver) {\n            var observer = new IntersectionObserver(function (entries) {\n                var e_1, _a;\n                try {\n                    for (var entries_1 = __values$x(entries), entries_1_1 = entries_1.next(); !entries_1_1.done; entries_1_1 = entries_1.next()) {\n                        var entry = entries_1_1.value;\n                        if (entry.target === _this.canvasElement && entry.intersectionRatio === 0) {\n                            _this.toggle(false);\n                        }\n                    }\n                }\n                catch (e_1_1) { e_1 = { error: e_1_1 }; }\n                finally {\n                    try {\n                        if (entries_1_1 && !entries_1_1.done && (_a = entries_1.return)) _a.call(entries_1);\n                    }\n                    finally { if (e_1) throw e_1.error; }\n                }\n            }, { root: this.tooltipRoot });\n            observer.observe(this.canvasElement);\n            this.observer = observer;\n        }\n        if (Tooltip.tooltipDocuments.indexOf(document) < 0) {\n            var styleElement = document.createElement('style');\n            styleElement.innerHTML = defaultTooltipCss$1;\n            // Make sure the default tooltip style goes before other styles so it can be overridden.\n            document.head.insertBefore(styleElement, document.head.querySelector('style'));\n            Tooltip.tooltipDocuments.push(document);\n        }\n    }\n    Tooltip.prototype.destroy = function () {\n        var parentNode = this.element.parentNode;\n        if (parentNode) {\n            parentNode.removeChild(this.element);\n        }\n        if (this.observer) {\n            this.observer.unobserve(this.canvasElement);\n        }\n    };\n    Tooltip.prototype.isVisible = function () {\n        var element = this.element;\n        return !element.classList.contains(DEFAULT_TOOLTIP_CLASS + '-hidden');\n    };\n    Tooltip.prototype.updateClass = function (visible, showArrow) {\n        var _a = this, element = _a.element, newClass = _a.class, lastClass = _a.lastClass, enableInteraction = _a.enableInteraction;\n        var wasVisible = this.isVisible();\n        var toggleClass = function (name, include) {\n            var className = DEFAULT_TOOLTIP_CLASS + \"-\" + name;\n            if (include) {\n                element.classList.add(className);\n            }\n            else {\n                element.classList.remove(className);\n            }\n        };\n        toggleClass('no-animation', !wasVisible && !!visible); // No animation on first show.\n        toggleClass('no-interaction', !enableInteraction); // Prevent interaction.\n        toggleClass('hidden', !visible); // Hide if not visible.\n        toggleClass('arrow', !!showArrow); // Add arrow if tooltip is constrained.\n        if (newClass !== lastClass) {\n            if (lastClass) {\n                element.classList.remove(lastClass);\n            }\n            if (newClass) {\n                element.classList.add(newClass);\n            }\n            this.lastClass = newClass;\n        }\n    };\n    /**\n     * Shows tooltip at the given event's coordinates.\n     * If the `html` parameter is missing, moves the existing tooltip to the new position.\n     */\n    Tooltip.prototype.show = function (meta, html, instantly) {\n        var _this = this;\n        var _a, _b, _c, _d, _e;\n        if (instantly === void 0) { instantly = false; }\n        var _f = this, element = _f.element, canvasElement = _f.canvasElement;\n        if (html !== undefined) {\n            element.innerHTML = html;\n        }\n        else if (!element.innerHTML) {\n            return;\n        }\n        var limit = function (low, actual, high) {\n            return Math.max(Math.min(actual, high), low);\n        };\n        var xOffset = (_b = (_a = meta.position) === null || _a === void 0 ? void 0 : _a.xOffset) !== null && _b !== void 0 ? _b : 0;\n        var yOffset = (_d = (_c = meta.position) === null || _c === void 0 ? void 0 : _c.yOffset) !== null && _d !== void 0 ? _d : 0;\n        var canvasRect = canvasElement.getBoundingClientRect();\n        var naiveLeft = canvasRect.left + meta.offsetX - element.clientWidth / 2 + xOffset;\n        var naiveTop = canvasRect.top + meta.offsetY - element.clientHeight - 8 + yOffset;\n        var windowBounds = this.getWindowBoundingBox();\n        var maxLeft = windowBounds.x + windowBounds.width - element.clientWidth - 1;\n        var maxTop = windowBounds.y + windowBounds.height - element.clientHeight;\n        var left = limit(windowBounds.x, naiveLeft, maxLeft);\n        var top = limit(windowBounds.y, naiveTop, maxTop);\n        var offsetApplied = xOffset !== 0 || yOffset !== 0;\n        var constrained = left !== naiveLeft || top !== naiveTop;\n        this.showArrow = !constrained && !offsetApplied;\n        element.style.transform = \"translate(\" + Math.round(left) + \"px, \" + Math.round(top) + \"px)\";\n        this.enableInteraction = (_e = meta.enableInteraction) !== null && _e !== void 0 ? _e : false;\n        if (this.delay > 0 && !instantly) {\n            this.toggle(false);\n            this.showTimeout = window.setTimeout(function () {\n                _this.toggle(true);\n            }, this.delay);\n            return;\n        }\n        this.toggle(true);\n    };\n    Tooltip.prototype.getWindowBoundingBox = function () {\n        return new BBox(0, 0, window.innerWidth, window.innerHeight);\n    };\n    Tooltip.prototype.toggle = function (visible) {\n        if (!visible) {\n            window.clearTimeout(this.showTimeout);\n        }\n        this.updateClass(visible, this.showArrow);\n    };\n    Tooltip.prototype.pointerLeftOntoTooltip = function (event) {\n        var _a;\n        if (!this.enableInteraction)\n            return false;\n        var classList = (_a = event.sourceEvent.relatedTarget) === null || _a === void 0 ? void 0 : _a.classList;\n        var classes = ['', '-title', '-content'];\n        var classListContains = Boolean(classes.filter(function (c) { return classList === null || classList === void 0 ? void 0 : classList.contains(\"\" + DEFAULT_TOOLTIP_CLASS + c); }));\n        return classList !== undefined && classListContains;\n    };\n    Tooltip.tooltipDocuments = [];\n    __decorate$1T([\n        Validate(BOOLEAN)\n    ], Tooltip.prototype, \"enabled\", void 0);\n    __decorate$1T([\n        Validate(OPT_STRING)\n    ], Tooltip.prototype, \"class\", void 0);\n    __decorate$1T([\n        Validate(NUMBER(0))\n    ], Tooltip.prototype, \"delay\", void 0);\n    __decorate$1T([\n        DeprecatedAndRenamedTo('range', function (value) { return (value ? 'nearest' : 'exact'); })\n    ], Tooltip.prototype, \"tracking\", void 0);\n    __decorate$1T([\n        Validate(INTERACTION_RANGE)\n    ], Tooltip.prototype, \"range\", void 0);\n    return Tooltip;\n}());\n\nvar __extends$2F = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __assign$F = (undefined && undefined.__assign) || function () {\n    __assign$F = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign$F.apply(this, arguments);\n};\nvar __decorate$1S = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __values$w = (undefined && undefined.__values) || function(o) {\n    var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n    if (m) return m.call(o);\n    if (o && typeof o.length === \"number\") return {\n        next: function () {\n            if (o && i >= o.length) o = void 0;\n            return { value: o && o[i++], done: !o };\n        }\n    };\n    throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nvar __read$V = (undefined && undefined.__read) || function (o, n) {\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n    if (!m) return o;\n    var i = m.call(o), r, ar = [], e;\n    try {\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n    }\n    catch (error) { e = { error: error }; }\n    finally {\n        try {\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\n        }\n        finally { if (e) throw e.error; }\n    }\n    return ar;\n};\nvar __spread$x = (undefined && undefined.__spread) || function () {\n    for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read$V(arguments[i]));\n    return ar;\n};\n/** Modes of matching user interactions to rendered nodes (e.g. hover or click) */\nvar SeriesNodePickMode;\n(function (SeriesNodePickMode) {\n    /** Pick matches based upon pick coordinates being inside a matching shape/marker. */\n    SeriesNodePickMode[SeriesNodePickMode[\"EXACT_SHAPE_MATCH\"] = 0] = \"EXACT_SHAPE_MATCH\";\n    /** Pick matches by nearest category/X-axis value, then distance within that category/X-value. */\n    SeriesNodePickMode[SeriesNodePickMode[\"NEAREST_BY_MAIN_AXIS_FIRST\"] = 1] = \"NEAREST_BY_MAIN_AXIS_FIRST\";\n    /** Pick matches by nearest category value, then distance within that category. */\n    SeriesNodePickMode[SeriesNodePickMode[\"NEAREST_BY_MAIN_CATEGORY_AXIS_FIRST\"] = 2] = \"NEAREST_BY_MAIN_CATEGORY_AXIS_FIRST\";\n    /** Pick matches based upon distance to ideal position */\n    SeriesNodePickMode[SeriesNodePickMode[\"NEAREST_NODE\"] = 3] = \"NEAREST_NODE\";\n})(SeriesNodePickMode || (SeriesNodePickMode = {}));\nvar warnDeprecated = createDeprecationWarning();\nvar warnSeriesDeprecated = function () { return warnDeprecated('series', 'Use seriesId to get the series ID'); };\nfunction keyProperty(propName, continuous, opts) {\n    if (opts === void 0) { opts = {}; }\n    var result = __assign$F(__assign$F({}, opts), { property: propName, type: 'key', valueType: continuous ? 'range' : 'category', validation: function (v) { return checkDatum(v, continuous) != null; } });\n    return result;\n}\nfunction valueProperty(propName, continuous, opts) {\n    if (opts === void 0) { opts = {}; }\n    var result = __assign$F(__assign$F({}, opts), { property: propName, type: 'value', valueType: continuous ? 'range' : 'category', validation: function (v) { return checkDatum(v, continuous) != null; } });\n    return result;\n}\nfunction sumProperties(props) {\n    var result = {\n        properties: props,\n        type: 'sum',\n    };\n    return result;\n}\nvar SeriesNodeBaseClickEvent = /** @class */ (function () {\n    function SeriesNodeBaseClickEvent(nativeEvent, datum, series) {\n        this.type = 'nodeClick';\n        this.event = nativeEvent;\n        this.datum = datum.datum;\n        this.seriesId = series.id;\n        this._series = series;\n    }\n    Object.defineProperty(SeriesNodeBaseClickEvent.prototype, \"series\", {\n        /** @deprecated */\n        get: function () {\n            warnSeriesDeprecated();\n            return this._series;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    return SeriesNodeBaseClickEvent;\n}());\nvar SeriesNodeClickEvent = /** @class */ (function (_super) {\n    __extends$2F(SeriesNodeClickEvent, _super);\n    function SeriesNodeClickEvent() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    return SeriesNodeClickEvent;\n}(SeriesNodeBaseClickEvent));\nvar SeriesNodeDoubleClickEvent = /** @class */ (function (_super) {\n    __extends$2F(SeriesNodeDoubleClickEvent, _super);\n    function SeriesNodeDoubleClickEvent() {\n        var _this = _super !== null && _super.apply(this, arguments) || this;\n        _this.type = 'nodeDoubleClick';\n        return _this;\n    }\n    return SeriesNodeDoubleClickEvent;\n}(SeriesNodeBaseClickEvent));\nvar SeriesItemHighlightStyle = /** @class */ (function () {\n    function SeriesItemHighlightStyle() {\n        this.fill = 'yellow';\n        this.fillOpacity = undefined;\n        this.stroke = undefined;\n        this.strokeWidth = undefined;\n    }\n    __decorate$1S([\n        Validate(OPT_COLOR_STRING)\n    ], SeriesItemHighlightStyle.prototype, \"fill\", void 0);\n    __decorate$1S([\n        Validate(OPT_NUMBER(0, 1))\n    ], SeriesItemHighlightStyle.prototype, \"fillOpacity\", void 0);\n    __decorate$1S([\n        Validate(OPT_COLOR_STRING)\n    ], SeriesItemHighlightStyle.prototype, \"stroke\", void 0);\n    __decorate$1S([\n        Validate(OPT_NUMBER(0))\n    ], SeriesItemHighlightStyle.prototype, \"strokeWidth\", void 0);\n    return SeriesItemHighlightStyle;\n}());\nvar SeriesHighlightStyle = /** @class */ (function () {\n    function SeriesHighlightStyle() {\n        this.strokeWidth = undefined;\n        this.dimOpacity = undefined;\n        this.enabled = undefined;\n    }\n    __decorate$1S([\n        Validate(OPT_NUMBER(0))\n    ], SeriesHighlightStyle.prototype, \"strokeWidth\", void 0);\n    __decorate$1S([\n        Validate(OPT_NUMBER(0, 1))\n    ], SeriesHighlightStyle.prototype, \"dimOpacity\", void 0);\n    __decorate$1S([\n        Validate(OPT_BOOLEAN)\n    ], SeriesHighlightStyle.prototype, \"enabled\", void 0);\n    return SeriesHighlightStyle;\n}());\nvar TextHighlightStyle = /** @class */ (function () {\n    function TextHighlightStyle() {\n        this.color = 'black';\n    }\n    __decorate$1S([\n        Validate(OPT_COLOR_STRING)\n    ], TextHighlightStyle.prototype, \"color\", void 0);\n    return TextHighlightStyle;\n}());\nvar HighlightStyle = /** @class */ (function () {\n    function HighlightStyle() {\n        this.item = new SeriesItemHighlightStyle();\n        this.series = new SeriesHighlightStyle();\n        this.text = new TextHighlightStyle();\n    }\n    return HighlightStyle;\n}());\nvar SeriesTooltip = /** @class */ (function () {\n    function SeriesTooltip() {\n        this.enabled = true;\n        this.interaction = new SeriesTooltipInteraction();\n        this.position = new TooltipPosition();\n    }\n    __decorate$1S([\n        Validate(BOOLEAN)\n    ], SeriesTooltip.prototype, \"enabled\", void 0);\n    return SeriesTooltip;\n}());\nvar SeriesTooltipInteraction = /** @class */ (function () {\n    function SeriesTooltipInteraction() {\n        this.enabled = false;\n    }\n    __decorate$1S([\n        Validate(BOOLEAN)\n    ], SeriesTooltipInteraction.prototype, \"enabled\", void 0);\n    return SeriesTooltipInteraction;\n}());\nvar Series = /** @class */ (function (_super) {\n    __extends$2F(Series, _super);\n    function Series(_a) {\n        var _b = _a === void 0 ? {} : _a, _c = _b.useSeriesGroupLayer, useSeriesGroupLayer = _c === void 0 ? true : _c, _d = _b.useLabelLayer, useLabelLayer = _d === void 0 ? false : _d, _e = _b.pickModes, pickModes = _e === void 0 ? [SeriesNodePickMode.NEAREST_BY_MAIN_AXIS_FIRST] : _e, _f = _b.directionKeys, directionKeys = _f === void 0 ? {} : _f;\n        var _this = _super.call(this) || this;\n        _this.id = createId$1(_this);\n        // The group node that contains all the nodes used to render this series.\n        _this.rootGroup = new Group({ name: 'seriesRoot' });\n        _this.directions = [ChartAxisDirection.X, ChartAxisDirection.Y];\n        // Flag to determine if we should recalculate node data.\n        _this.nodeDataRefresh = true;\n        _this._data = undefined;\n        _this._visible = true;\n        _this.showInLegend = true;\n        _this.cursor = 'default';\n        _this.nodeClickRange = 'exact';\n        _this._declarationOrder = -1;\n        _this.highlightStyle = new HighlightStyle();\n        var rootGroup = _this.rootGroup;\n        _this.directionKeys = directionKeys;\n        _this.contentGroup = rootGroup.appendChild(new Group({\n            name: _this.id + \"-content\",\n            layer: useSeriesGroupLayer,\n            zIndex: Layers.SERIES_LAYER_ZINDEX,\n            zIndexSubOrder: [function () { return _this._declarationOrder; }, 0],\n        }));\n        _this.highlightGroup = rootGroup.appendChild(new Group({\n            name: _this.id + \"-highlight\",\n            layer: true,\n            zIndex: Layers.SERIES_LAYER_ZINDEX,\n            zIndexSubOrder: [function () { return _this._declarationOrder; }, 15000],\n        }));\n        _this.highlightNode = _this.highlightGroup.appendChild(new Group({ name: 'highlightNode' }));\n        _this.highlightLabel = _this.highlightGroup.appendChild(new Group({ name: 'highlightLabel' }));\n        _this.highlightNode.zIndex = 0;\n        _this.highlightLabel.zIndex = 10;\n        _this.pickModes = pickModes;\n        if (useLabelLayer) {\n            _this.labelGroup = rootGroup.appendChild(new Group({\n                name: _this.id + \"-series-labels\",\n                layer: true,\n                zIndex: Layers.SERIES_LABEL_ZINDEX,\n            }));\n        }\n        return _this;\n    }\n    Object.defineProperty(Series.prototype, \"type\", {\n        get: function () {\n            return this.constructor.type || '';\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(Series.prototype, \"data\", {\n        get: function () {\n            return this._data;\n        },\n        set: function (input) {\n            this._data = input;\n            this.nodeDataRefresh = true;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Series.prototype.hasData = function () {\n        var data = this.data;\n        return data && (!Array.isArray(data) || data.length > 0);\n    };\n    Object.defineProperty(Series.prototype, \"visible\", {\n        get: function () {\n            return this._visible;\n        },\n        set: function (value) {\n            this._visible = value;\n            this.visibleChanged();\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Series.prototype.getBandScalePadding = function () {\n        return { inner: 1, outer: 0 };\n    };\n    Series.prototype.destroy = function () {\n        // Override point for sub-classes.\n    };\n    Object.defineProperty(Series.prototype, \"grouped\", {\n        set: function (g) {\n            if (g === true) {\n                throw new Error(\"AG Charts - grouped: true is unsupported for series of type: \" + this.type);\n            }\n        },\n        enumerable: false,\n        configurable: true\n    });\n    // Returns the actual keys used (to fetch the values from `data` items) for the given direction.\n    Series.prototype.getKeys = function (direction) {\n        var _this = this;\n        var directionKeys = this.directionKeys;\n        var resolvedDirection = this.resolveKeyDirection(direction);\n        var keys = directionKeys && directionKeys[resolvedDirection];\n        var values = [];\n        var flatten = function () {\n            var e_1, _a;\n            var array = [];\n            for (var _i = 0; _i < arguments.length; _i++) {\n                array[_i] = arguments[_i];\n            }\n            try {\n                for (var array_1 = __values$w(array), array_1_1 = array_1.next(); !array_1_1.done; array_1_1 = array_1.next()) {\n                    var value = array_1_1.value;\n                    addValue(value);\n                }\n            }\n            catch (e_1_1) { e_1 = { error: e_1_1 }; }\n            finally {\n                try {\n                    if (array_1_1 && !array_1_1.done && (_a = array_1.return)) _a.call(array_1);\n                }\n                finally { if (e_1) throw e_1.error; }\n            }\n        };\n        var addValue = function (value) {\n            if (Array.isArray(value)) {\n                flatten.apply(void 0, __spread$x(value));\n            }\n            else {\n                values.push(value);\n            }\n        };\n        if (!keys)\n            return values;\n        keys.forEach(function (key) {\n            var value = _this[key];\n            if (!value)\n                return;\n            addValue(value);\n        });\n        return values;\n    };\n    Series.prototype.resolveKeyDirection = function (direction) {\n        return direction;\n    };\n    // Indicate that something external changed and we should recalculate nodeData.\n    Series.prototype.markNodeDataDirty = function () {\n        this.nodeDataRefresh = true;\n    };\n    Series.prototype.visibleChanged = function () {\n        // Override point for this.visible change post-processing.\n    };\n    Series.prototype.getOpacity = function (datum) {\n        var _a = this.highlightStyle.series, _b = _a.dimOpacity, dimOpacity = _b === void 0 ? 1 : _b, _c = _a.enabled, enabled = _c === void 0 ? true : _c;\n        var defaultOpacity = 1;\n        if (enabled === false || dimOpacity === defaultOpacity) {\n            return defaultOpacity;\n        }\n        switch (this.isItemIdHighlighted(datum)) {\n            case 'no-highlight':\n            case 'highlighted':\n                return defaultOpacity;\n            case 'peer-highlighted':\n            case 'other-highlighted':\n                return dimOpacity;\n        }\n    };\n    Series.prototype.getStrokeWidth = function (defaultStrokeWidth, datum) {\n        var _a = this.highlightStyle.series, strokeWidth = _a.strokeWidth, _b = _a.enabled, enabled = _b === void 0 ? true : _b;\n        if (enabled === false || strokeWidth === undefined) {\n            // No change in styling for highlight cases.\n            return defaultStrokeWidth;\n        }\n        switch (this.isItemIdHighlighted(datum)) {\n            case 'highlighted':\n                return strokeWidth;\n            case 'no-highlight':\n            case 'other-highlighted':\n            case 'peer-highlighted':\n                return defaultStrokeWidth;\n        }\n    };\n    Series.prototype.isItemIdHighlighted = function (datum) {\n        var _a;\n        var highlightedDatum = (_a = this.highlightManager) === null || _a === void 0 ? void 0 : _a.getActiveHighlight();\n        var _b = highlightedDatum !== null && highlightedDatum !== void 0 ? highlightedDatum : {}, series = _b.series, itemId = _b.itemId;\n        var highlighting = series != null;\n        if (!highlighting) {\n            // Highlighting not active.\n            return 'no-highlight';\n        }\n        if (series !== this) {\n            // Highlighting active, this series not highlighted.\n            return 'other-highlighted';\n        }\n        if (itemId === undefined) {\n            // Series doesn't use itemIds - so no further refinement needed, series is highlighted.\n            return 'highlighted';\n        }\n        if (datum && highlightedDatum !== datum && itemId !== datum.itemId) {\n            // A peer (in same Series instance) sub-series has highlight active, but this sub-series\n            // does not.\n            return 'peer-highlighted';\n        }\n        return 'highlighted';\n    };\n    Series.prototype.pickNode = function (point, limitPickModes) {\n        var e_2, _a;\n        var _b = this, pickModes = _b.pickModes, visible = _b.visible, rootGroup = _b.rootGroup;\n        if (!visible || !rootGroup.visible) {\n            return;\n        }\n        try {\n            for (var pickModes_1 = __values$w(pickModes), pickModes_1_1 = pickModes_1.next(); !pickModes_1_1.done; pickModes_1_1 = pickModes_1.next()) {\n                var pickMode = pickModes_1_1.value;\n                if (limitPickModes && !limitPickModes.includes(pickMode)) {\n                    continue;\n                }\n                var match = undefined;\n                switch (pickMode) {\n                    case SeriesNodePickMode.EXACT_SHAPE_MATCH:\n                        match = this.pickNodeExactShape(point);\n                        break;\n                    case SeriesNodePickMode.NEAREST_BY_MAIN_AXIS_FIRST:\n                    case SeriesNodePickMode.NEAREST_BY_MAIN_CATEGORY_AXIS_FIRST:\n                        match = this.pickNodeMainAxisFirst(point, pickMode === SeriesNodePickMode.NEAREST_BY_MAIN_CATEGORY_AXIS_FIRST);\n                        break;\n                    case SeriesNodePickMode.NEAREST_NODE:\n                        match = this.pickNodeClosestDatum(point);\n                        break;\n                }\n                if (match) {\n                    return { pickMode: pickMode, match: match.datum, distance: match.distance };\n                }\n            }\n        }\n        catch (e_2_1) { e_2 = { error: e_2_1 }; }\n        finally {\n            try {\n                if (pickModes_1_1 && !pickModes_1_1.done && (_a = pickModes_1.return)) _a.call(pickModes_1);\n            }\n            finally { if (e_2) throw e_2.error; }\n        }\n    };\n    Series.prototype.pickNodeExactShape = function (point) {\n        var match = this.contentGroup.pickNode(point.x, point.y);\n        if (match) {\n            return {\n                datum: match.datum,\n                distance: 0,\n            };\n        }\n    };\n    Series.prototype.pickNodeClosestDatum = function (_point) {\n        // Override point for sub-classes - but if this is invoked, the sub-class specified it wants\n        // to use this feature.\n        throw new Error('AG Charts - Series.pickNodeClosestDatum() not implemented');\n    };\n    Series.prototype.pickNodeMainAxisFirst = function (_point, _requireCategoryAxis) {\n        // Override point for sub-classes - but if this is invoked, the sub-class specified it wants\n        // to use this feature.\n        throw new Error('AG Charts - Series.pickNodeMainAxisFirst() not implemented');\n    };\n    Series.prototype.fireNodeClickEvent = function (event, _datum) {\n        var eventObject = this.getNodeClickEvent(event, _datum);\n        this.fireEvent(eventObject);\n    };\n    Series.prototype.fireNodeDoubleClickEvent = function (event, _datum) {\n        var eventObject = this.getNodeDoubleClickEvent(event, _datum);\n        this.fireEvent(eventObject);\n    };\n    Series.prototype.getNodeClickEvent = function (event, datum) {\n        return new SeriesNodeClickEvent(event, datum, this);\n    };\n    Series.prototype.getNodeDoubleClickEvent = function (event, datum) {\n        return new SeriesNodeDoubleClickEvent(event, datum, this);\n    };\n    Series.prototype.toggleSeriesItem = function (_itemId, enabled) {\n        this.visible = enabled;\n        this.nodeDataRefresh = true;\n    };\n    Series.prototype.toggleOtherSeriesItems = function (_seriesToggled, _datumToggled, _enabled, _suggestedEnabled) {\n        return;\n    };\n    Series.prototype.isEnabled = function () {\n        return this.visible;\n    };\n    Series.prototype.fixNumericExtent = function (extent, axis) {\n        var _a;\n        if (extent === undefined) {\n            // Don't return a range, there is no range.\n            return [];\n        }\n        var _b = __read$V(extent, 2), min = _b[0], max = _b[1];\n        min = +min;\n        max = +max;\n        if (min === 0 && max === 0) {\n            // domain has zero length and the single valid value is 0. Use the default of [0, 1].\n            return [0, 1];\n        }\n        if (min === Infinity && max === -Infinity) {\n            // There's no data in the domain.\n            return [];\n        }\n        if (min === Infinity) {\n            min = 0;\n        }\n        if (max === -Infinity) {\n            max = 0;\n        }\n        if (min === max) {\n            // domain has zero length, there is only a single valid value in data\n            var padding = (_a = axis === null || axis === void 0 ? void 0 : axis.calculatePadding(min, max)) !== null && _a !== void 0 ? _a : 1;\n            min -= padding;\n            max += padding;\n        }\n        if (!(isNumber$4(min) && isNumber$4(max))) {\n            return [];\n        }\n        return [min, max];\n    };\n    Series.highlightedZIndex = 1000000000000;\n    __decorate$1S([\n        Validate(STRING)\n    ], Series.prototype, \"id\", void 0);\n    __decorate$1S([\n        Validate(BOOLEAN)\n    ], Series.prototype, \"_visible\", void 0);\n    __decorate$1S([\n        Validate(BOOLEAN)\n    ], Series.prototype, \"showInLegend\", void 0);\n    __decorate$1S([\n        Validate(STRING)\n    ], Series.prototype, \"cursor\", void 0);\n    __decorate$1S([\n        Validate(INTERACTION_RANGE)\n    ], Series.prototype, \"nodeClickRange\", void 0);\n    return Series;\n}(Observable));\n\nvar __decorate$1R = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar Padding$1 = /** @class */ (function () {\n    function Padding(top, right, bottom, left) {\n        if (top === void 0) { top = 0; }\n        if (right === void 0) { right = top; }\n        if (bottom === void 0) { bottom = top; }\n        if (left === void 0) { left = right; }\n        this.top = top;\n        this.right = right;\n        this.bottom = bottom;\n        this.left = left;\n    }\n    Padding.prototype.clear = function () {\n        this.top = this.right = this.bottom = this.left = 0;\n    };\n    __decorate$1R([\n        Validate(NUMBER(0))\n    ], Padding.prototype, \"top\", void 0);\n    __decorate$1R([\n        Validate(NUMBER(0))\n    ], Padding.prototype, \"right\", void 0);\n    __decorate$1R([\n        Validate(NUMBER(0))\n    ], Padding.prototype, \"bottom\", void 0);\n    __decorate$1R([\n        Validate(NUMBER(0))\n    ], Padding.prototype, \"left\", void 0);\n    return Padding;\n}());\n\nvar Selection = /** @class */ (function () {\n    function Selection(parent, classOrFactory) {\n        this._nodes = [];\n        this._data = [];\n        this._parent = parent;\n        this._factory = Object.prototype.isPrototypeOf.call(Node, classOrFactory)\n            ? function () { return new classOrFactory(); }\n            : classOrFactory;\n    }\n    Selection.select = function (parent, classOrFactory) {\n        return new Selection(parent, classOrFactory);\n    };\n    Selection.prototype.each = function (iterate) {\n        this._nodes.forEach(function (node, i) { return iterate(node, node.datum, i); });\n        return this;\n    };\n    Selection.prototype.update = function (data, init) {\n        var _this = this;\n        var old = this._data;\n        var parent = this._parent;\n        var factory = this._factory;\n        if (data.length > old.length) {\n            data.slice(old.length).forEach(function (datum) {\n                var node = factory(datum);\n                node.datum = datum;\n                init && init(node);\n                parent.appendChild(node);\n                _this._nodes.push(node);\n            });\n        }\n        else if (data.length < old.length) {\n            this._nodes.splice(data.length).forEach(function (node) {\n                parent.removeChild(node);\n            });\n        }\n        this._data = data.slice(0);\n        for (var i = 0; i < data.length; i++) {\n            this._nodes[i].datum = this._data[i];\n        }\n        return this;\n    };\n    Selection.prototype.clear = function () {\n        this.update([]);\n        return this;\n    };\n    Selection.prototype.select = function (predicate) {\n        var results = [];\n        var traverse = function (node) {\n            if (predicate(node)) {\n                results.push(node);\n            }\n            node.children.forEach(traverse);\n        };\n        traverse(this._parent);\n        return results;\n    };\n    Selection.prototype.selectByClass = function (Class) {\n        return this.select(function (node) { return node instanceof Class; });\n    };\n    Selection.prototype.selectByTag = function (tag) {\n        return this.select(function (node) { return node.tag === tag; });\n    };\n    Selection.prototype.nodes = function () {\n        return this._nodes;\n    };\n    return Selection;\n}());\n\nvar Gradient = /** @class */ (function () {\n    function Gradient() {\n        this.stops = [];\n    }\n    return Gradient;\n}());\n\nvar twoPi = Math.PI * 2;\n/**\n * Normalize the given angle to be in the [0, 2π) interval.\n * @param radians Angle in radians.\n */\nfunction normalizeAngle360(radians) {\n    radians %= twoPi;\n    radians += twoPi;\n    radians %= twoPi;\n    return radians;\n}\nfunction normalizeAngle360Inclusive(radians) {\n    radians %= twoPi;\n    radians += twoPi;\n    if (radians !== twoPi) {\n        radians %= twoPi;\n    }\n    return radians;\n}\n/**\n * Normalize the given angle to be in the [-π, π) interval.\n * @param radians Angle in radians.\n */\nfunction normalizeAngle180(radians) {\n    radians %= twoPi;\n    if (radians < -Math.PI) {\n        radians += twoPi;\n    }\n    else if (radians >= Math.PI) {\n        radians -= twoPi;\n    }\n    return radians;\n}\nfunction toRadians$1(degrees) {\n    return (degrees / 180) * Math.PI;\n}\n\nvar __extends$2E = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar LinearGradient = /** @class */ (function (_super) {\n    __extends$2E(LinearGradient, _super);\n    function LinearGradient() {\n        var _this = _super !== null && _super.apply(this, arguments) || this;\n        _this.angle = 0;\n        return _this;\n    }\n    LinearGradient.prototype.createGradient = function (ctx, bbox) {\n        // Gradient 0° angle starts at top according to CSS spec\n        var angleOffset = 90;\n        var _a = this, stops = _a.stops, angle = _a.angle;\n        var radians = normalizeAngle360(toRadians$1(angle + angleOffset));\n        var cos = Math.cos(radians);\n        var sin = Math.sin(radians);\n        var w = bbox.width;\n        var h = bbox.height;\n        var cx = bbox.x + w * 0.5;\n        var cy = bbox.y + h * 0.5;\n        if (w > 0 && h > 0) {\n            var diagonal = Math.sqrt(h * h + w * w) / 2;\n            var diagonalAngle = Math.atan2(h, w);\n            var quarteredAngle = void 0;\n            if (radians < Math.PI / 2) {\n                quarteredAngle = radians;\n            }\n            else if (radians < Math.PI) {\n                quarteredAngle = Math.PI - radians;\n            }\n            else if (radians < (3 * Math.PI) / 2) {\n                quarteredAngle = radians - Math.PI;\n            }\n            else {\n                quarteredAngle = 2 * Math.PI - radians;\n            }\n            var l = diagonal * Math.abs(Math.cos(quarteredAngle - diagonalAngle));\n            var gradient_1 = ctx.createLinearGradient(cx + cos * l, cy + sin * l, cx - cos * l, cy - sin * l);\n            stops.forEach(function (stop) {\n                gradient_1.addColorStop(stop.offset, stop.color);\n            });\n            return gradient_1;\n        }\n        return 'black';\n    };\n    return LinearGradient;\n}(Gradient));\n\nvar __extends$2D = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$1Q = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar LINEAR_GRADIENT_REGEXP = /^linear-gradient\\((.*?)deg,\\s*(.*?)\\s*\\)$/i;\nvar Shape = /** @class */ (function (_super) {\n    __extends$2D(Shape, _super);\n    function Shape() {\n        var _this = _super !== null && _super.apply(this, arguments) || this;\n        _this.lastInstanceId = 0;\n        _this.fillOpacity = 1;\n        _this.strokeOpacity = 1;\n        _this.fill = Shape.defaultStyles.fill;\n        /**\n         * Note that `strokeStyle = null` means invisible stroke,\n         * while `lineWidth = 0` means no stroke, and sometimes this can mean different things.\n         * For example, a rect shape with an invisible stroke may not align to the pixel grid\n         * properly because the stroke affects the rules of alignment, and arc shapes forming\n         * a pie chart will have a gap between them if they have an invisible stroke, whereas\n         * there would be not gap if there was no stroke at all.\n         * The preferred way of making the stroke invisible is setting the `lineWidth` to zero,\n         * unless specific looks that is achieved by having an invisible stroke is desired.\n         */\n        _this.stroke = Shape.defaultStyles.stroke;\n        _this.strokeWidth = Shape.defaultStyles.strokeWidth;\n        _this.lineDash = Shape.defaultStyles.lineDash;\n        _this.lineDashOffset = Shape.defaultStyles.lineDashOffset;\n        _this.lineCap = Shape.defaultStyles.lineCap;\n        _this.lineJoin = Shape.defaultStyles.lineJoin;\n        _this.opacity = Shape.defaultStyles.opacity;\n        _this.fillShadow = Shape.defaultStyles.fillShadow;\n        return _this;\n    }\n    /**\n     * Creates a light-weight instance of the given shape (that serves as a template).\n     * The created instance only stores the properites set on the instance itself\n     * and the rest of the properties come via the prototype chain from the template.\n     * This can greatly reduce memory usage in cases where one has many similar shapes,\n     * for example, circles of different size, position and color. The exact memory usage\n     * reduction will depend on the size of the template and the number of own properties\n     * set on its lightweight instances, but will typically be around an order of magnitude\n     * or more.\n     *\n     * Note: template shapes are not supposed to be part of the scene graph (they should not\n     * have a parent).\n     *\n     * @param template\n     */\n    Shape.createInstance = function (template) {\n        var shape = Object.create(template);\n        shape._setParent(undefined);\n        shape.id = template.id + '-Instance-' + String(++template.lastInstanceId);\n        return shape;\n    };\n    /**\n     * Restores the default styles introduced by this subclass.\n     */\n    Shape.prototype.restoreOwnStyles = function () {\n        var styles = this.constructor.defaultStyles;\n        var keys = Object.getOwnPropertyNames(styles);\n        // getOwnPropertyNames is about 2.5 times faster than\n        // for..in with the hasOwnProperty check and in this\n        // case, where most properties are inherited, can be\n        // more then an order of magnitude faster.\n        for (var i = 0, n = keys.length; i < n; i++) {\n            var key = keys[i];\n            this[key] = styles[key];\n        }\n    };\n    Shape.prototype.restoreAllStyles = function () {\n        var styles = this.constructor.defaultStyles;\n        for (var property in styles) {\n            this[property] = styles[property];\n        }\n    };\n    /**\n     * Restores the base class default styles that have been overridden by this subclass.\n     */\n    Shape.prototype.restoreOverriddenStyles = function () {\n        var styles = this.constructor.defaultStyles;\n        var protoStyles = Object.getPrototypeOf(styles);\n        for (var property in styles) {\n            if (Object.prototype.hasOwnProperty.call(styles, property) &&\n                Object.prototype.hasOwnProperty.call(protoStyles, property)) {\n                this[property] = styles[property];\n            }\n        }\n    };\n    Shape.prototype.updateGradient = function () {\n        var fill = this.fill;\n        var linearGradientMatch;\n        if ((fill === null || fill === void 0 ? void 0 : fill.startsWith('linear-gradient')) && (linearGradientMatch = fill.match(LINEAR_GRADIENT_REGEXP))) {\n            var angle = parseFloat(linearGradientMatch[1]);\n            var colors_1 = [];\n            var colorsPart = linearGradientMatch[2];\n            var colorRegex = /(#[0-9a-f]+)|(rgba?\\(.+?\\))|([a-z]+)/gi;\n            var c = void 0;\n            while ((c = colorRegex.exec(colorsPart))) {\n                colors_1.push(c[0]);\n            }\n            this.gradient = new LinearGradient();\n            this.gradient.angle = angle;\n            this.gradient.stops = colors_1.map(function (color, index) {\n                var offset = index / (colors_1.length - 1);\n                return { offset: offset, color: color };\n            });\n        }\n        else {\n            this.gradient = undefined;\n        }\n    };\n    /**\n     * Returns a device-pixel aligned coordinate (or length if length is supplied).\n     *\n     * NOTE: Not suitable for strokes, since the stroke needs to be offset to the middle\n     * of a device pixel.\n     */\n    Shape.prototype.align = function (start, length) {\n        var _a, _b, _c;\n        var pixelRatio = (_c = (_b = (_a = this.layerManager) === null || _a === void 0 ? void 0 : _a.canvas) === null || _b === void 0 ? void 0 : _b.pixelRatio) !== null && _c !== void 0 ? _c : 1;\n        var alignedStart = Math.round(start * pixelRatio) / pixelRatio;\n        if (length == undefined) {\n            return alignedStart;\n        }\n        if (length === 0) {\n            return 0;\n        }\n        if (length < 1) {\n            // Avoid hiding crisp shapes\n            return Math.ceil(length * pixelRatio) / pixelRatio;\n        }\n        // Account for the rounding of alignedStart by increasing length to compensate before\n        // alignment.\n        return Math.round((length + start) * pixelRatio) / pixelRatio - alignedStart;\n    };\n    Shape.prototype.fillStroke = function (ctx) {\n        this.renderFill(ctx);\n        this.renderStroke(ctx);\n    };\n    Shape.prototype.renderFill = function (ctx) {\n        if (this.fill) {\n            var globalAlpha = ctx.globalAlpha;\n            this.applyFill(ctx);\n            this.applyFillAlpha(ctx);\n            this.applyShadow(ctx);\n            ctx.fill();\n            ctx.globalAlpha = globalAlpha;\n        }\n        ctx.shadowColor = 'rgba(0, 0, 0, 0)';\n    };\n    Shape.prototype.applyFill = function (ctx) {\n        if (this.gradient) {\n            ctx.fillStyle = this.gradient.createGradient(ctx, this.computeBBox());\n        }\n        else {\n            ctx.fillStyle = this.fill;\n        }\n    };\n    Shape.prototype.applyFillAlpha = function (ctx) {\n        var globalAlpha = ctx.globalAlpha;\n        ctx.globalAlpha = globalAlpha * this.opacity * this.fillOpacity;\n    };\n    Shape.prototype.applyShadow = function (ctx) {\n        var _a, _b;\n        // The canvas context scaling (depends on the device's pixel ratio)\n        // has no effect on shadows, so we have to account for the pixel ratio\n        // manually here.\n        var pixelRatio = (_b = (_a = this.layerManager) === null || _a === void 0 ? void 0 : _a.canvas.pixelRatio) !== null && _b !== void 0 ? _b : 1;\n        var fillShadow = this.fillShadow;\n        if (fillShadow && fillShadow.enabled) {\n            ctx.shadowColor = fillShadow.color;\n            ctx.shadowOffsetX = fillShadow.xOffset * pixelRatio;\n            ctx.shadowOffsetY = fillShadow.yOffset * pixelRatio;\n            ctx.shadowBlur = fillShadow.blur * pixelRatio;\n        }\n    };\n    Shape.prototype.renderStroke = function (ctx) {\n        if (this.stroke && this.strokeWidth) {\n            var globalAlpha = ctx.globalAlpha;\n            ctx.strokeStyle = this.stroke;\n            ctx.globalAlpha = globalAlpha * this.opacity * this.strokeOpacity;\n            ctx.lineWidth = this.strokeWidth;\n            if (this.lineDash) {\n                ctx.setLineDash(this.lineDash);\n            }\n            if (this.lineDashOffset) {\n                ctx.lineDashOffset = this.lineDashOffset;\n            }\n            if (this.lineCap) {\n                ctx.lineCap = this.lineCap;\n            }\n            if (this.lineJoin) {\n                ctx.lineJoin = this.lineJoin;\n            }\n            ctx.stroke();\n            ctx.globalAlpha = globalAlpha;\n        }\n    };\n    Shape.prototype.containsPoint = function (x, y) {\n        return this.isPointInPath(x, y);\n    };\n    /**\n     * Defaults for style properties. Note that properties that affect the position\n     * and shape of the node are not considered style properties, for example:\n     * `x`, `y`, `width`, `height`, `radius`, `rotation`, etc.\n     * Can be used to reset to the original styling after some custom styling\n     * has been applied (using the `restoreOwnStyles` and `restoreAllStyles` methods).\n     * These static defaults are meant to be inherited by subclasses.\n     */\n    Shape.defaultStyles = Object.assign({}, {\n        fill: 'black',\n        stroke: undefined,\n        strokeWidth: 0,\n        lineDash: undefined,\n        lineDashOffset: 0,\n        lineCap: undefined,\n        lineJoin: undefined,\n        opacity: 1,\n        fillShadow: undefined,\n    });\n    __decorate$1Q([\n        SceneChangeDetection({ redraw: RedrawType.MINOR })\n    ], Shape.prototype, \"fillOpacity\", void 0);\n    __decorate$1Q([\n        SceneChangeDetection({ redraw: RedrawType.MINOR })\n    ], Shape.prototype, \"strokeOpacity\", void 0);\n    __decorate$1Q([\n        SceneChangeDetection({ redraw: RedrawType.MINOR, changeCb: function (s) { return s.updateGradient(); } })\n    ], Shape.prototype, \"fill\", void 0);\n    __decorate$1Q([\n        SceneChangeDetection({ redraw: RedrawType.MINOR })\n    ], Shape.prototype, \"stroke\", void 0);\n    __decorate$1Q([\n        SceneChangeDetection({ redraw: RedrawType.MINOR })\n    ], Shape.prototype, \"strokeWidth\", void 0);\n    __decorate$1Q([\n        SceneChangeDetection({ redraw: RedrawType.MINOR })\n    ], Shape.prototype, \"lineDash\", void 0);\n    __decorate$1Q([\n        SceneChangeDetection({ redraw: RedrawType.MINOR })\n    ], Shape.prototype, \"lineDashOffset\", void 0);\n    __decorate$1Q([\n        SceneChangeDetection({ redraw: RedrawType.MINOR })\n    ], Shape.prototype, \"lineCap\", void 0);\n    __decorate$1Q([\n        SceneChangeDetection({ redraw: RedrawType.MINOR })\n    ], Shape.prototype, \"lineJoin\", void 0);\n    __decorate$1Q([\n        SceneChangeDetection({\n            redraw: RedrawType.MINOR,\n            convertor: function (v) { return Math.min(1, Math.max(0, v)); },\n        })\n    ], Shape.prototype, \"opacity\", void 0);\n    __decorate$1Q([\n        SceneChangeDetection({ redraw: RedrawType.MINOR, checkDirtyOnAssignment: true })\n    ], Shape.prototype, \"fillShadow\", void 0);\n    return Shape;\n}(Node));\n\nvar __extends$2C = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$1P = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nfunction SceneFontChangeDetection(opts) {\n    var _a = opts || {}, _b = _a.redraw, redraw = _b === void 0 ? RedrawType.MAJOR : _b, changeCb = _a.changeCb;\n    return SceneChangeDetection({ redraw: redraw, type: 'font', changeCb: changeCb });\n}\nvar Text = /** @class */ (function (_super) {\n    __extends$2C(Text, _super);\n    function Text() {\n        var _this = _super !== null && _super.apply(this, arguments) || this;\n        _this.x = 0;\n        _this.y = 0;\n        _this.lines = [];\n        _this.text = '';\n        _this._dirtyFont = true;\n        _this.fontSize = 10;\n        _this.fontFamily = 'sans-serif';\n        _this.textAlign = Text.defaultStyles.textAlign;\n        _this.textBaseline = Text.defaultStyles.textBaseline;\n        // TextMetrics are used if lineHeight is not defined.\n        _this.lineHeight = undefined;\n        return _this;\n    }\n    Text.prototype._splitText = function () {\n        this.lines = typeof this.text === 'string' ? this.text.split(/\\r?\\n/g) : [];\n    };\n    Object.defineProperty(Text.prototype, \"font\", {\n        get: function () {\n            if (this._dirtyFont) {\n                this._dirtyFont = false;\n                this._font = getFont(this.fontSize, this.fontFamily, this.fontStyle, this.fontWeight);\n            }\n            return this._font;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Text.prototype.computeBBox = function () {\n        return HdpiCanvas.has.textMetrics ? this.getPreciseBBox() : this.getApproximateBBox();\n    };\n    Text.prototype.getPreciseBBox = function () {\n        var _a, _b;\n        var left = 0;\n        var top = 0;\n        var width = 0;\n        var height = 0;\n        // Distance between first and last base lines.\n        var baselineDistance = 0;\n        for (var i = 0; i < this.lines.length; i++) {\n            var metrics = HdpiCanvas.measureText(this.lines[i], this.font, this.textBaseline, this.textAlign);\n            left = Math.max(left, metrics.actualBoundingBoxLeft);\n            width = Math.max(width, metrics.width);\n            if (i == 0) {\n                top += metrics.actualBoundingBoxAscent;\n                height += metrics.actualBoundingBoxAscent;\n            }\n            else {\n                baselineDistance += (_a = metrics.fontBoundingBoxAscent) !== null && _a !== void 0 ? _a : metrics.emHeightAscent;\n            }\n            if (i == this.lines.length - 1) {\n                height += metrics.actualBoundingBoxDescent;\n            }\n            else {\n                baselineDistance += (_b = metrics.fontBoundingBoxDescent) !== null && _b !== void 0 ? _b : metrics.emHeightDescent;\n            }\n        }\n        if (this.lineHeight !== undefined) {\n            baselineDistance = (this.lines.length - 1) * this.lineHeight;\n        }\n        height += baselineDistance;\n        top += baselineDistance * this.getVerticalOffset();\n        return new BBox(this.x - left, this.y - top, width, height);\n    };\n    Text.prototype.getVerticalOffset = function () {\n        switch (this.textBaseline) {\n            case 'top':\n            case 'hanging':\n                return 0;\n            case 'bottom':\n            case 'alphabetic':\n            case 'ideographic':\n                return 1;\n            case 'middle':\n                return 0.5;\n        }\n    };\n    Text.prototype.getApproximateBBox = function () {\n        var _a;\n        var width = 0;\n        var firstLineHeight = 0;\n        // Distance between first and last base lines.\n        var baselineDistance = 0;\n        if (this.lines.length > 0) {\n            var lineSize = HdpiCanvas.getTextSize(this.lines[0], this.font);\n            width = lineSize.width;\n            firstLineHeight = lineSize.height;\n        }\n        for (var i = 1; i < this.lines.length; i++) {\n            var lineSize = HdpiCanvas.getTextSize(this.lines[i], this.font);\n            width = Math.max(width, lineSize.width);\n            baselineDistance += (_a = this.lineHeight) !== null && _a !== void 0 ? _a : lineSize.height;\n        }\n        var _b = this, x = _b.x, y = _b.y;\n        switch (this.textAlign) {\n            case 'end':\n            case 'right':\n                x -= width;\n                break;\n            case 'center':\n                x -= width / 2;\n        }\n        switch (this.textBaseline) {\n            case 'alphabetic':\n                y -= firstLineHeight * 0.7 + baselineDistance * 0.5;\n                break;\n            case 'middle':\n                y -= firstLineHeight * 0.45 + baselineDistance * 0.5;\n                break;\n            case 'ideographic':\n                y -= firstLineHeight + baselineDistance;\n                break;\n            case 'hanging':\n                y -= firstLineHeight * 0.2 + baselineDistance * 0.5;\n                break;\n            case 'bottom':\n                y -= firstLineHeight + baselineDistance;\n                break;\n        }\n        return new BBox(x, y, width, firstLineHeight + baselineDistance);\n    };\n    Text.prototype.getLineHeight = function (line) {\n        var _a, _b;\n        if (this.lineHeight)\n            return this.lineHeight;\n        if (HdpiCanvas.has.textMetrics) {\n            var metrics = HdpiCanvas.measureText(line, this.font, this.textBaseline, this.textAlign);\n            return (((_a = metrics.fontBoundingBoxAscent) !== null && _a !== void 0 ? _a : metrics.emHeightAscent) +\n                ((_b = metrics.fontBoundingBoxDescent) !== null && _b !== void 0 ? _b : metrics.emHeightDescent));\n        }\n        return HdpiCanvas.getTextSize(line, this.font).height;\n    };\n    Text.prototype.isPointInPath = function (x, y) {\n        var point = this.transformPoint(x, y);\n        var bbox = this.computeBBox();\n        return bbox ? bbox.containsPoint(point.x, point.y) : false;\n    };\n    Text.prototype.render = function (renderCtx) {\n        var ctx = renderCtx.ctx, forceRender = renderCtx.forceRender, stats = renderCtx.stats;\n        if (this.dirty === RedrawType.NONE && !forceRender) {\n            if (stats)\n                stats.nodesSkipped += this.nodeCount.count;\n            return;\n        }\n        if (!this.lines.length || !this.layerManager) {\n            if (stats)\n                stats.nodesSkipped += this.nodeCount.count;\n            return;\n        }\n        this.computeTransformMatrix();\n        this.matrix.toContext(ctx);\n        var _a = this, fill = _a.fill, stroke = _a.stroke, strokeWidth = _a.strokeWidth;\n        ctx.font = this.font;\n        ctx.textAlign = this.textAlign;\n        ctx.textBaseline = this.textBaseline;\n        var pixelRatio = this.layerManager.canvas.pixelRatio || 1;\n        var globalAlpha = ctx.globalAlpha;\n        if (fill) {\n            ctx.fillStyle = fill;\n            ctx.globalAlpha = globalAlpha * this.opacity * this.fillOpacity;\n            var fillShadow = this.fillShadow;\n            if (fillShadow && fillShadow.enabled) {\n                ctx.shadowColor = fillShadow.color;\n                ctx.shadowOffsetX = fillShadow.xOffset * pixelRatio;\n                ctx.shadowOffsetY = fillShadow.yOffset * pixelRatio;\n                ctx.shadowBlur = fillShadow.blur * pixelRatio;\n            }\n            this.renderLines(function (line, x, y) { return ctx.fillText(line, x, y); });\n        }\n        if (stroke && strokeWidth) {\n            ctx.strokeStyle = stroke;\n            ctx.lineWidth = strokeWidth;\n            ctx.globalAlpha = globalAlpha * this.opacity * this.strokeOpacity;\n            var _b = this, lineDash = _b.lineDash, lineDashOffset = _b.lineDashOffset, lineCap = _b.lineCap, lineJoin = _b.lineJoin;\n            if (lineDash) {\n                ctx.setLineDash(lineDash);\n            }\n            if (lineDashOffset) {\n                ctx.lineDashOffset = lineDashOffset;\n            }\n            if (lineCap) {\n                ctx.lineCap = lineCap;\n            }\n            if (lineJoin) {\n                ctx.lineJoin = lineJoin;\n            }\n            this.renderLines(function (line, x, y) { return ctx.strokeText(line, x, y); });\n        }\n        _super.prototype.render.call(this, renderCtx);\n    };\n    Text.prototype.renderLines = function (renderCallback) {\n        var _this = this;\n        var _a = this, lines = _a.lines, x = _a.x, y = _a.y;\n        var lineHeights = this.lines.map(function (line) { return _this.getLineHeight(line); });\n        var totalHeight = lineHeights.reduce(function (a, b) { return a + b; }, 0);\n        var offsetY = -(totalHeight - lineHeights[0]) * this.getVerticalOffset();\n        for (var i = 0; i < lines.length; i++) {\n            renderCallback(lines[i], x, y + offsetY);\n            offsetY += lineHeights[i];\n        }\n    };\n    Text.className = 'Text';\n    Text.defaultStyles = Object.assign({}, Shape.defaultStyles, {\n        textAlign: 'start',\n        fontStyle: undefined,\n        fontWeight: undefined,\n        fontSize: 10,\n        fontFamily: 'sans-serif',\n        textBaseline: 'alphabetic',\n    });\n    __decorate$1P([\n        SceneChangeDetection({ redraw: RedrawType.MAJOR })\n    ], Text.prototype, \"x\", void 0);\n    __decorate$1P([\n        SceneChangeDetection({ redraw: RedrawType.MAJOR })\n    ], Text.prototype, \"y\", void 0);\n    __decorate$1P([\n        SceneChangeDetection({ redraw: RedrawType.MAJOR, changeCb: function (o) { return o._splitText(); } })\n    ], Text.prototype, \"text\", void 0);\n    __decorate$1P([\n        SceneFontChangeDetection()\n    ], Text.prototype, \"fontStyle\", void 0);\n    __decorate$1P([\n        SceneFontChangeDetection()\n    ], Text.prototype, \"fontWeight\", void 0);\n    __decorate$1P([\n        SceneFontChangeDetection()\n    ], Text.prototype, \"fontSize\", void 0);\n    __decorate$1P([\n        SceneFontChangeDetection()\n    ], Text.prototype, \"fontFamily\", void 0);\n    __decorate$1P([\n        SceneChangeDetection({ redraw: RedrawType.MAJOR })\n    ], Text.prototype, \"textAlign\", void 0);\n    __decorate$1P([\n        SceneChangeDetection({ redraw: RedrawType.MAJOR })\n    ], Text.prototype, \"textBaseline\", void 0);\n    __decorate$1P([\n        SceneChangeDetection({ redraw: RedrawType.MAJOR })\n    ], Text.prototype, \"lineHeight\", void 0);\n    return Text;\n}(Shape));\nfunction getFont(fontSize, fontFamily, fontStyle, fontWeight) {\n    return [fontStyle || '', fontWeight || '', fontSize + 'px', fontFamily].join(' ').trim();\n}\n\n/**\n * Finds the roots of a parametric linear equation in `t`,\n * where `t` lies in the interval of `[0,1]`.\n */\nfunction linearRoot(a, b) {\n    var t = -b / a;\n    return a !== 0 && t >= 0 && t <= 1 ? [t] : [];\n}\n/**\n * Finds the roots of a parametric quadratic equation in `t`,\n * where `t` lies in the interval of `[0,1]`.\n */\nfunction quadraticRoots(a, b, c) {\n    if (a === 0) {\n        return linearRoot(b, c);\n    }\n    var D = b * b - 4 * a * c; // The polynomial's discriminant.\n    var roots = [];\n    if (D === 0) {\n        // A single real root.\n        var t = -b / (2 * a);\n        if (t >= 0 && t <= 1) {\n            roots.push(t);\n        }\n    }\n    else if (D > 0) {\n        // A pair of distinct real roots.\n        var rD = Math.sqrt(D);\n        var t1 = (-b - rD) / (2 * a);\n        var t2 = (-b + rD) / (2 * a);\n        if (t1 >= 0 && t1 <= 1) {\n            roots.push(t1);\n        }\n        if (t2 >= 0 && t2 <= 1) {\n            roots.push(t2);\n        }\n    }\n    // else -> Complex roots.\n    return roots;\n}\n/**\n * Finds the roots of a parametric cubic equation in `t`,\n * where `t` lies in the interval of `[0,1]`.\n * Returns an array of parametric intersection locations along the cubic,\n * excluding out-of-bounds intersections (before or after the end point\n * or in the imaginary plane).\n * An adaptation of http://www.particleincell.com/blog/2013/cubic-line-intersection/\n */\nfunction cubicRoots(a, b, c, d) {\n    if (a === 0) {\n        return quadraticRoots(b, c, d);\n    }\n    var A = b / a;\n    var B = c / a;\n    var C = d / a;\n    var Q = (3 * B - A * A) / 9;\n    var R = (9 * A * B - 27 * C - 2 * A * A * A) / 54;\n    var D = Q * Q * Q + R * R; // The polynomial's discriminant.\n    var third = 1 / 3;\n    var roots = [];\n    if (D >= 0) {\n        // Complex or duplicate roots.\n        var rD = Math.sqrt(D);\n        var S = Math.sign(R + rD) * Math.pow(Math.abs(R + rD), third);\n        var T = Math.sign(R - rD) * Math.pow(Math.abs(R - rD), third);\n        var Im = Math.abs((Math.sqrt(3) * (S - T)) / 2); // Complex part of the root pair.\n        var t = -third * A + (S + T); // A real root.\n        if (t >= 0 && t <= 1) {\n            roots.push(t);\n        }\n        if (Im === 0) {\n            var t_1 = -third * A - (S + T) / 2; // The real part of a complex root.\n            if (t_1 >= 0 && t_1 <= 1) {\n                roots.push(t_1);\n            }\n        }\n    }\n    else {\n        // Distinct real roots.\n        var theta = Math.acos(R / Math.sqrt(-Q * Q * Q));\n        var thirdA = third * A;\n        var twoSqrtQ = 2 * Math.sqrt(-Q);\n        var t1 = twoSqrtQ * Math.cos(third * theta) - thirdA;\n        var t2 = twoSqrtQ * Math.cos(third * (theta + 2 * Math.PI)) - thirdA;\n        var t3 = twoSqrtQ * Math.cos(third * (theta + 4 * Math.PI)) - thirdA;\n        if (t1 >= 0 && t1 <= 1) {\n            roots.push(t1);\n        }\n        if (t2 >= 0 && t2 <= 1) {\n            roots.push(t2);\n        }\n        if (t3 >= 0 && t3 <= 1) {\n            roots.push(t3);\n        }\n    }\n    return roots;\n}\n\nvar __values$v = (undefined && undefined.__values) || function(o) {\n    var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n    if (m) return m.call(o);\n    if (o && typeof o.length === \"number\") return {\n        next: function () {\n            if (o && i >= o.length) o = void 0;\n            return { value: o && o[i++], done: !o };\n        }\n    };\n    throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\n/**\n * Returns the intersection point for the given pair of line segments, or null,\n * if the segments are parallel or don't intersect.\n * Based on http://paulbourke.net/geometry/pointlineplane/\n */\nfunction segmentIntersection(ax1, ay1, ax2, ay2, bx1, by1, bx2, by2) {\n    var d = (ax2 - ax1) * (by2 - by1) - (ay2 - ay1) * (bx2 - bx1);\n    if (d === 0) {\n        // The lines are parallel.\n        return null;\n    }\n    var ua = ((bx2 - bx1) * (ay1 - by1) - (ax1 - bx1) * (by2 - by1)) / d;\n    var ub = ((ax2 - ax1) * (ay1 - by1) - (ay2 - ay1) * (ax1 - bx1)) / d;\n    if (ua >= 0 && ua <= 1 && ub >= 0 && ub <= 1) {\n        return {\n            x: ax1 + ua * (ax2 - ax1),\n            y: ay1 + ua * (ay2 - ay1),\n        };\n    }\n    return null; // The intersection point is outside either or both segments.\n}\n/**\n * Returns intersection points of the given cubic curve and the line segment.\n * Takes in x/y components of cubic control points and line segment start/end points\n * as parameters.\n */\nfunction cubicSegmentIntersections(px1, py1, px2, py2, px3, py3, px4, py4, x1, y1, x2, y2) {\n    var e_1, _a;\n    var intersections = [];\n    // Find line equation coefficients.\n    var A = y1 - y2;\n    var B = x2 - x1;\n    var C = x1 * (y2 - y1) - y1 * (x2 - x1);\n    // Find cubic Bezier curve equation coefficients from control points.\n    var bx = bezierCoefficients(px1, px2, px3, px4);\n    var by = bezierCoefficients(py1, py2, py3, py4);\n    var a = A * bx[0] + B * by[0]; // t^3\n    var b = A * bx[1] + B * by[1]; // t^2\n    var c = A * bx[2] + B * by[2]; // t\n    var d = A * bx[3] + B * by[3] + C; // 1\n    var roots = cubicRoots(a, b, c, d);\n    try {\n        // Verify that the roots are within bounds of the linear segment.\n        for (var roots_1 = __values$v(roots), roots_1_1 = roots_1.next(); !roots_1_1.done; roots_1_1 = roots_1.next()) {\n            var t = roots_1_1.value;\n            var tt = t * t;\n            var ttt = t * tt;\n            // Find the cartesian plane coordinates for the parametric root `t`.\n            var x = bx[0] * ttt + bx[1] * tt + bx[2] * t + bx[3];\n            var y = by[0] * ttt + by[1] * tt + by[2] * t + by[3];\n            // The parametric cubic roots we found are intersection points\n            // with an infinite line, and so the x/y coordinates above are as well.\n            // Make sure the x/y is also within the bounds of the given segment.\n            var s = void 0;\n            if (x1 !== x2) {\n                s = (x - x1) / (x2 - x1);\n            }\n            else {\n                // the line is vertical\n                s = (y - y1) / (y2 - y1);\n            }\n            if (s >= 0 && s <= 1) {\n                intersections.push({ x: x, y: y });\n            }\n        }\n    }\n    catch (e_1_1) { e_1 = { error: e_1_1 }; }\n    finally {\n        try {\n            if (roots_1_1 && !roots_1_1.done && (_a = roots_1.return)) _a.call(roots_1);\n        }\n        finally { if (e_1) throw e_1.error; }\n    }\n    return intersections;\n}\n/**\n * Returns the given coordinates vector multiplied by the coefficient matrix\n * of the parametric cubic Bézier equation.\n */\nfunction bezierCoefficients(P1, P2, P3, P4) {\n    return [\n        // Bézier expressed as matrix operations:\n        -P1 + 3 * P2 - 3 * P3 + P4,\n        3 * P1 - 6 * P2 + 3 * P3,\n        -3 * P1 + 3 * P2,\n        P1,\n    ];\n}\n/**\n * Returns intersection points of the arc and the line segment.\n * Takes in arc parameters and line segment start/end points.\n */\nfunction arcIntersections(cx, cy, r, startAngle, endAngle, counterClockwise, x1, y1, x2, y2) {\n    // Solving the quadratic equation:\n    // 1. y = k * x + y0\n    // 2. (x - cx)^2 + (y - cy)^2 = r^2\n    var k = (y2 - y1) / (x2 - x1);\n    var y0 = y1 - k * x1;\n    var a = Math.pow(k, 2) + 1;\n    var b = 2 * (k * (y0 - cy) - cx);\n    var c = Math.pow(cx, 2) + Math.pow(y0 - cy, 2) - Math.pow(r, 2);\n    var d = Math.pow(b, 2) - 4 * a * c;\n    if (d < 0) {\n        return [];\n    }\n    var i1x = (-b + Math.sqrt(d)) / 2 / a;\n    var i2x = (-b - Math.sqrt(d)) / 2 / a;\n    var intersections = [];\n    [i1x, i2x].forEach(function (x) {\n        var isXInsideLine = x >= Math.min(x1, x2) && x <= Math.max(x1, x2);\n        if (!isXInsideLine) {\n            return;\n        }\n        var y = k * x;\n        var a1 = normalizeAngle360(counterClockwise ? endAngle : startAngle);\n        var a2 = normalizeAngle360(counterClockwise ? startAngle : endAngle);\n        var intersectionAngle = normalizeAngle360(Math.atan2(y, x));\n        // Order angles clockwise after the start angle\n        // (end angle if counter-clockwise)\n        if (a2 <= a1) {\n            a2 += 2 * Math.PI;\n        }\n        if (intersectionAngle < a1) {\n            intersectionAngle += 2 * Math.PI;\n        }\n        if (intersectionAngle >= a1 && intersectionAngle <= a2) {\n            intersections.push({ x: x, y: y });\n        }\n    });\n    return intersections;\n}\n\nvar __values$u = (undefined && undefined.__values) || function(o) {\n    var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n    if (m) return m.call(o);\n    if (o && typeof o.length === \"number\") return {\n        next: function () {\n            if (o && i >= o.length) o = void 0;\n            return { value: o && o[i++], done: !o };\n        }\n    };\n    throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nvar Command;\n(function (Command) {\n    Command[Command[\"Move\"] = 0] = \"Move\";\n    Command[Command[\"Line\"] = 1] = \"Line\";\n    Command[Command[\"Arc\"] = 2] = \"Arc\";\n    Command[Command[\"Curve\"] = 3] = \"Curve\";\n    Command[Command[\"ClosePath\"] = 4] = \"ClosePath\";\n})(Command || (Command = {}));\nvar Path2D = /** @class */ (function () {\n    function Path2D() {\n        // The methods of this class will likely be called many times per animation frame,\n        // and any allocation can trigger a GC cycle during animation, so we attempt\n        // to minimize the number of allocations.\n        this.previousCommands = [];\n        this.previousParams = [];\n        this.previousClosedPath = false;\n        this.commands = [];\n        this.params = [];\n        this._closedPath = false;\n    }\n    Path2D.prototype.isDirty = function () {\n        if (this._closedPath !== this.previousClosedPath) {\n            return true;\n        }\n        if (this.previousCommands.length !== this.commands.length) {\n            return true;\n        }\n        if (this.previousParams.length !== this.params.length) {\n            return true;\n        }\n        for (var i = 0; i < this.commands.length; i++) {\n            if (this.commands[i] !== this.previousCommands[i]) {\n                return true;\n            }\n        }\n        for (var i = 0; i < this.params.length; i++) {\n            if (this.params[i] !== this.previousParams[i]) {\n                return true;\n            }\n        }\n        return false;\n    };\n    Path2D.prototype.draw = function (ctx) {\n        var e_1, _a;\n        var commands = this.commands;\n        var params = this.params;\n        var j = 0;\n        ctx.beginPath();\n        try {\n            for (var commands_1 = __values$u(commands), commands_1_1 = commands_1.next(); !commands_1_1.done; commands_1_1 = commands_1.next()) {\n                var command = commands_1_1.value;\n                switch (command) {\n                    case Command.Move:\n                        ctx.moveTo(params[j++], params[j++]);\n                        break;\n                    case Command.Line:\n                        ctx.lineTo(params[j++], params[j++]);\n                        break;\n                    case Command.Curve:\n                        ctx.bezierCurveTo(params[j++], params[j++], params[j++], params[j++], params[j++], params[j++]);\n                        break;\n                    case Command.Arc:\n                        ctx.arc(params[j++], params[j++], params[j++], params[j++], params[j++], params[j++] === 1);\n                        break;\n                    case Command.ClosePath:\n                        ctx.closePath();\n                        break;\n                }\n            }\n        }\n        catch (e_1_1) { e_1 = { error: e_1_1 }; }\n        finally {\n            try {\n                if (commands_1_1 && !commands_1_1.done && (_a = commands_1.return)) _a.call(commands_1);\n            }\n            finally { if (e_1) throw e_1.error; }\n        }\n        if (commands.length === 0) {\n            ctx.closePath();\n        }\n    };\n    Path2D.prototype.moveTo = function (x, y) {\n        if (this.xy) {\n            this.xy[0] = x;\n            this.xy[1] = y;\n        }\n        else {\n            this.xy = [x, y];\n        }\n        this.commands.push(Command.Move);\n        this.params.push(x, y);\n    };\n    Path2D.prototype.lineTo = function (x, y) {\n        if (this.xy) {\n            this.commands.push(Command.Line);\n            this.params.push(x, y);\n            this.xy[0] = x;\n            this.xy[1] = y;\n        }\n        else {\n            this.moveTo(x, y);\n        }\n    };\n    Path2D.prototype.rect = function (x, y, width, height) {\n        this.moveTo(x, y);\n        this.lineTo(x + width, y);\n        this.lineTo(x + width, y + height);\n        this.lineTo(x, y + height);\n        this.closePath();\n    };\n    Path2D.prototype.arc = function (x, y, r, sAngle, eAngle, antiClockwise) {\n        if (antiClockwise === void 0) { antiClockwise = false; }\n        var endX = x + r * Math.cos(eAngle);\n        var endY = y + r * Math.sin(eAngle);\n        if (this.xy) {\n            this.xy[0] = endX;\n            this.xy[1] = endY;\n        }\n        else {\n            this.xy = [endX, endY];\n        }\n        this.commands.push(Command.Arc);\n        this.params.push(x, y, r, sAngle, eAngle, antiClockwise ? 1 : 0);\n    };\n    Path2D.prototype.cubicCurveTo = function (cx1, cy1, cx2, cy2, x, y) {\n        if (!this.xy) {\n            this.moveTo(cx1, cy1);\n        }\n        this.commands.push(Command.Curve);\n        this.params.push(cx1, cy1, cx2, cy2, x, y);\n        this.xy[0] = x;\n        this.xy[1] = y;\n    };\n    Object.defineProperty(Path2D.prototype, \"closedPath\", {\n        get: function () {\n            return this._closedPath;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Path2D.prototype.closePath = function () {\n        if (this.xy) {\n            this.xy = undefined;\n            this.commands.push(Command.ClosePath);\n            this._closedPath = true;\n        }\n    };\n    Path2D.prototype.clear = function (_a) {\n        var trackChanges = (_a === void 0 ? { trackChanges: false } : _a).trackChanges;\n        if (trackChanges) {\n            this.previousCommands = this.commands;\n            this.previousParams = this.params;\n            this.previousClosedPath = this._closedPath;\n            this.commands = [];\n            this.params = [];\n        }\n        else {\n            this.commands.length = 0;\n            this.params.length = 0;\n        }\n        this.xy = undefined;\n        this._closedPath = false;\n    };\n    Path2D.prototype.isPointInPath = function (x, y) {\n        var commands = this.commands;\n        var params = this.params;\n        var cn = commands.length;\n        // Hit testing using ray casting method, where the ray's origin is some point\n        // outside the path. In this case, an offscreen point that is remote enough, so that\n        // even if the path itself is large and is partially offscreen, the ray's origin\n        // will likely be outside the path anyway. To test if the given point is inside the\n        // path or not, we cast a ray from the origin to the given point and check the number\n        // of intersections of this segment with the path. If the number of intersections is\n        // even, then the ray both entered and exited the path an equal number of times,\n        // therefore the point is outside the path, and inside the path, if the number of\n        // intersections is odd. Since the path is compound, we check if the ray segment\n        // intersects with each of the path's segments, which can be either a line segment\n        // (one or no intersection points) or a Bézier curve segment (up to 3 intersection\n        // points).\n        var ox = -10000;\n        var oy = -10000;\n        // the starting point of the  current path\n        var sx = NaN;\n        var sy = NaN;\n        // the previous point of the current path\n        var px = 0;\n        var py = 0;\n        var intersectionCount = 0;\n        for (var ci = 0, pi = 0; ci < cn; ci++) {\n            switch (commands[ci]) {\n                case Command.Move:\n                    if (!isNaN(sx)) {\n                        if (segmentIntersection(sx, sy, px, py, ox, oy, x, y)) {\n                            intersectionCount++;\n                        }\n                    }\n                    px = params[pi++];\n                    sx = px;\n                    py = params[pi++];\n                    sy = py;\n                    break;\n                case Command.Line:\n                    if (segmentIntersection(px, py, params[pi++], params[pi++], ox, oy, x, y)) {\n                        intersectionCount++;\n                    }\n                    px = params[pi - 2];\n                    py = params[pi - 1];\n                    break;\n                case Command.Curve:\n                    intersectionCount += cubicSegmentIntersections(px, py, params[pi++], params[pi++], params[pi++], params[pi++], params[pi++], params[pi++], ox, oy, x, y).length;\n                    px = params[pi - 2];\n                    py = params[pi - 1];\n                    break;\n                case Command.Arc:\n                    intersectionCount += arcIntersections(params[pi++], params[pi++], params[pi++], params[pi++], params[pi++], Boolean(params[pi++]), ox, oy, x, y).length;\n                    px = params[pi - 2];\n                    py = params[pi - 1];\n                    break;\n                case Command.ClosePath:\n                    if (!isNaN(sx)) {\n                        if (segmentIntersection(sx, sy, px, py, ox, oy, x, y)) {\n                            intersectionCount++;\n                        }\n                    }\n                    break;\n            }\n        }\n        return intersectionCount % 2 === 1;\n    };\n    return Path2D;\n}());\n\nvar __extends$2B = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$1O = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nfunction ScenePathChangeDetection(opts) {\n    var _a = opts || {}, _b = _a.redraw, redraw = _b === void 0 ? RedrawType.MAJOR : _b, changeCb = _a.changeCb, convertor = _a.convertor;\n    return SceneChangeDetection({ redraw: redraw, type: 'path', convertor: convertor, changeCb: changeCb });\n}\nvar Path = /** @class */ (function (_super) {\n    __extends$2B(Path, _super);\n    function Path() {\n        var _this = _super !== null && _super.apply(this, arguments) || this;\n        /**\n         * Declare a path to retain for later rendering and hit testing\n         * using custom Path2D class. Think of it as a TypeScript version\n         * of the native Path2D (with some differences) that works in all browsers.\n         */\n        _this.path = new Path2D();\n        /**\n         * The path only has to be updated when certain attributes change.\n         * For example, if transform attributes (such as `translationX`)\n         * are changed, we don't have to update the path. The `dirtyPath` flag\n         * is how we keep track if the path has to be updated or not.\n         */\n        _this._dirtyPath = true;\n        return _this;\n    }\n    Object.defineProperty(Path.prototype, \"dirtyPath\", {\n        get: function () {\n            return this._dirtyPath;\n        },\n        set: function (value) {\n            if (this._dirtyPath !== value) {\n                this._dirtyPath = value;\n                if (value) {\n                    this.markDirty(this, RedrawType.MAJOR);\n                }\n            }\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Path.prototype.checkPathDirty = function () {\n        var _a, _b;\n        if (this._dirtyPath) {\n            return;\n        }\n        this.dirtyPath = this.path.isDirty() || ((_b = (_a = this.fillShadow) === null || _a === void 0 ? void 0 : _a.isDirty()) !== null && _b !== void 0 ? _b : false);\n    };\n    Path.prototype.isPointInPath = function (x, y) {\n        var point = this.transformPoint(x, y);\n        return this.path.closedPath && this.path.isPointInPath(point.x, point.y);\n    };\n    Path.prototype.isDirtyPath = function () {\n        // Override point for more expensive dirty checks.\n        return false;\n    };\n    Path.prototype.updatePath = function () {\n        // Override point for subclasses.\n    };\n    Path.prototype.render = function (renderCtx) {\n        var _a, _b;\n        var ctx = renderCtx.ctx, forceRender = renderCtx.forceRender, stats = renderCtx.stats;\n        if (this.dirty === RedrawType.NONE && !forceRender) {\n            if (stats)\n                stats.nodesSkipped += this.nodeCount.count;\n            return;\n        }\n        this.computeTransformMatrix();\n        this.matrix.toContext(ctx);\n        if (this.dirtyPath || this.isDirtyPath()) {\n            this.updatePath();\n            this.dirtyPath = false;\n        }\n        if (this.clipPath) {\n            ctx.save();\n            if (this.clipMode === 'normal') {\n                // Bound the shape rendered to the clipping path.\n                this.clipPath.draw(ctx);\n                ctx.clip();\n            }\n            this.path.draw(ctx);\n            this.fillStroke(ctx);\n            if (this.clipMode === 'punch-out') {\n                // Bound the shape rendered to outside the clipping path.\n                this.clipPath.draw(ctx);\n                ctx.clip();\n                // Fallback values, but practically these should never be used.\n                var _c = (_a = this.computeBBox()) !== null && _a !== void 0 ? _a : {}, _d = _c.x, x = _d === void 0 ? -10000 : _d, _e = _c.y, y = _e === void 0 ? -10000 : _e, _f = _c.width, width = _f === void 0 ? 20000 : _f, _g = _c.height, height = _g === void 0 ? 20000 : _g;\n                ctx.clearRect(x, y, width, height);\n            }\n            ctx.restore();\n        }\n        else {\n            this.path.draw(ctx);\n            this.fillStroke(ctx);\n        }\n        (_b = this.fillShadow) === null || _b === void 0 ? void 0 : _b.markClean();\n        _super.prototype.render.call(this, renderCtx);\n    };\n    Path.className = 'Path';\n    __decorate$1O([\n        ScenePathChangeDetection()\n    ], Path.prototype, \"clipPath\", void 0);\n    __decorate$1O([\n        ScenePathChangeDetection()\n    ], Path.prototype, \"clipMode\", void 0);\n    return Path;\n}(Shape));\n\nvar __extends$2A = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$1N = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __values$t = (undefined && undefined.__values) || function(o) {\n    var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n    if (m) return m.call(o);\n    if (o && typeof o.length === \"number\") return {\n        next: function () {\n            if (o && i >= o.length) o = void 0;\n            return { value: o && o[i++], done: !o };\n        }\n    };\n    throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nvar Marker = /** @class */ (function (_super) {\n    __extends$2A(Marker, _super);\n    function Marker() {\n        var _this = _super !== null && _super.apply(this, arguments) || this;\n        _this.x = 0;\n        _this.y = 0;\n        _this.size = 12;\n        return _this;\n    }\n    Marker.prototype.computeBBox = function () {\n        var _a = this, x = _a.x, y = _a.y, size = _a.size;\n        var half = size / 2;\n        return new BBox(x - half, y - half, size, size);\n    };\n    Marker.prototype.applyPath = function (s, moves) {\n        var e_1, _a;\n        var path = this.path;\n        var _b = this, x = _b.x, y = _b.y;\n        path.clear();\n        try {\n            for (var moves_1 = __values$t(moves), moves_1_1 = moves_1.next(); !moves_1_1.done; moves_1_1 = moves_1.next()) {\n                var _c = moves_1_1.value, mx = _c.x, my = _c.y, t = _c.t;\n                x += mx * s;\n                y += my * s;\n                if (t === 'move') {\n                    path.moveTo(x, y);\n                }\n                else {\n                    path.lineTo(x, y);\n                }\n            }\n        }\n        catch (e_1_1) { e_1 = { error: e_1_1 }; }\n        finally {\n            try {\n                if (moves_1_1 && !moves_1_1.done && (_a = moves_1.return)) _a.call(moves_1);\n            }\n            finally { if (e_1) throw e_1.error; }\n        }\n        path.closePath();\n    };\n    __decorate$1N([\n        ScenePathChangeDetection()\n    ], Marker.prototype, \"x\", void 0);\n    __decorate$1N([\n        ScenePathChangeDetection()\n    ], Marker.prototype, \"y\", void 0);\n    __decorate$1N([\n        ScenePathChangeDetection({ convertor: Math.abs })\n    ], Marker.prototype, \"size\", void 0);\n    return Marker;\n}(Path));\n\nvar __extends$2z = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar Square = /** @class */ (function (_super) {\n    __extends$2z(Square, _super);\n    function Square() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    Square.prototype.updatePath = function () {\n        var _a = this, path = _a.path, x = _a.x, y = _a.y;\n        var hs = this.size / 2;\n        path.clear();\n        path.moveTo(this.align(x - hs), this.align(y - hs));\n        path.lineTo(this.align(x + hs), this.align(y - hs));\n        path.lineTo(this.align(x + hs), this.align(y + hs));\n        path.lineTo(this.align(x - hs), this.align(y + hs));\n        path.closePath();\n    };\n    Square.className = 'Square';\n    return Square;\n}(Marker));\n\nfunction ProxyPropertyOnWrite(childName, childProperty) {\n    return addTransformToInstanceProperty(function (target, key, value) {\n        target[childName][childProperty !== null && childProperty !== void 0 ? childProperty : key] = value;\n        return value;\n    });\n}\n/**\n * Allows side-effects to be triggered on property write.\n *\n * @param opts.newValue called when a new value is set - never called for undefined values.\n * @param opts.oldValue called with the old value before a new value is set - never called for\n *                      undefined values.\n * @param opts.changeValue called on any change to the value - always called.\n */\nfunction ActionOnSet(opts) {\n    var newValueFn = opts.newValue, oldValueFn = opts.oldValue, changeValueFn = opts.changeValue;\n    return addTransformToInstanceProperty(function (target, _, newValue, oldValue) {\n        if (newValue !== oldValue) {\n            if (oldValue !== undefined) {\n                oldValueFn === null || oldValueFn === void 0 ? void 0 : oldValueFn.call(target, oldValue);\n            }\n            if (newValue !== undefined) {\n                newValueFn === null || newValueFn === void 0 ? void 0 : newValueFn.call(target, newValue);\n            }\n            changeValueFn === null || changeValueFn === void 0 ? void 0 : changeValueFn.call(target, newValue, oldValue);\n        }\n        return newValue;\n    });\n}\n\nvar __extends$2y = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$1M = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar MarkerLabel = /** @class */ (function (_super) {\n    __extends$2y(MarkerLabel, _super);\n    function MarkerLabel() {\n        var _this = _super.call(this, { name: 'markerLabelGroup' }) || this;\n        _this.label = new Text();\n        _this._marker = new Square();\n        _this._markerSize = 15;\n        _this._spacing = 8;\n        var label = _this.label;\n        label.textBaseline = 'middle';\n        label.fontSize = 12;\n        label.fontFamily = 'Verdana, sans-serif';\n        label.fill = 'black';\n        // For better looking vertical alignment of labels to markers.\n        label.y = HdpiCanvas.has.textMetrics ? 1 : 0;\n        _this.append([_this.marker, label]);\n        _this.update();\n        return _this;\n    }\n    Object.defineProperty(MarkerLabel.prototype, \"marker\", {\n        get: function () {\n            return this._marker;\n        },\n        set: function (value) {\n            if (this._marker !== value) {\n                this.removeChild(this._marker);\n                this._marker = value;\n                this.appendChild(value);\n                this.update();\n            }\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(MarkerLabel.prototype, \"markerSize\", {\n        get: function () {\n            return this._markerSize;\n        },\n        set: function (value) {\n            if (this._markerSize !== value) {\n                this._markerSize = value;\n                this.update();\n            }\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(MarkerLabel.prototype, \"spacing\", {\n        get: function () {\n            return this._spacing;\n        },\n        set: function (value) {\n            if (this._spacing !== value) {\n                this._spacing = value;\n                this.update();\n            }\n        },\n        enumerable: false,\n        configurable: true\n    });\n    MarkerLabel.prototype.update = function () {\n        var marker = this.marker;\n        var markerSize = this.markerSize;\n        marker.size = markerSize;\n        this.label.x = markerSize / 2 + this.spacing;\n    };\n    MarkerLabel.prototype.render = function (renderCtx) {\n        // Cannot override field Group.opacity with get/set pair, so\n        // propagate opacity changes here.\n        this.marker.opacity = this.opacity;\n        this.label.opacity = this.opacity;\n        _super.prototype.render.call(this, renderCtx);\n    };\n    MarkerLabel.className = 'MarkerLabel';\n    __decorate$1M([\n        ProxyPropertyOnWrite('label')\n    ], MarkerLabel.prototype, \"text\", void 0);\n    __decorate$1M([\n        ProxyPropertyOnWrite('label')\n    ], MarkerLabel.prototype, \"fontStyle\", void 0);\n    __decorate$1M([\n        ProxyPropertyOnWrite('label')\n    ], MarkerLabel.prototype, \"fontWeight\", void 0);\n    __decorate$1M([\n        ProxyPropertyOnWrite('label')\n    ], MarkerLabel.prototype, \"fontSize\", void 0);\n    __decorate$1M([\n        ProxyPropertyOnWrite('label')\n    ], MarkerLabel.prototype, \"fontFamily\", void 0);\n    __decorate$1M([\n        ProxyPropertyOnWrite('label', 'fill')\n    ], MarkerLabel.prototype, \"color\", void 0);\n    __decorate$1M([\n        ProxyPropertyOnWrite('marker', 'fill')\n    ], MarkerLabel.prototype, \"markerFill\", void 0);\n    __decorate$1M([\n        ProxyPropertyOnWrite('marker', 'stroke')\n    ], MarkerLabel.prototype, \"markerStroke\", void 0);\n    __decorate$1M([\n        ProxyPropertyOnWrite('marker', 'strokeWidth')\n    ], MarkerLabel.prototype, \"markerStrokeWidth\", void 0);\n    __decorate$1M([\n        ProxyPropertyOnWrite('marker', 'fillOpacity')\n    ], MarkerLabel.prototype, \"markerFillOpacity\", void 0);\n    __decorate$1M([\n        ProxyPropertyOnWrite('marker', 'strokeOpacity')\n    ], MarkerLabel.prototype, \"markerStrokeOpacity\", void 0);\n    return MarkerLabel;\n}(Group));\n\nvar __extends$2x = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar Circle = /** @class */ (function (_super) {\n    __extends$2x(Circle, _super);\n    function Circle() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    Circle.prototype.updatePath = function () {\n        var _a = this, x = _a.x, y = _a.y, path = _a.path, size = _a.size;\n        var r = size / 2;\n        path.clear();\n        path.arc(x, y, r, 0, Math.PI * 2);\n        path.closePath();\n    };\n    Circle.className = 'Circle';\n    return Circle;\n}(Marker));\n\nvar __extends$2w = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar Cross = /** @class */ (function (_super) {\n    __extends$2w(Cross, _super);\n    function Cross() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    Cross.prototype.updatePath = function () {\n        var s = this.size / 4.2;\n        _super.prototype.applyPath.call(this, s, Cross.moves);\n    };\n    Cross.className = 'Cross';\n    Cross.moves = [\n        { x: -1, y: 0, t: 'move' },\n        { x: -1, y: -1 },\n        { x: +1, y: -1 },\n        { x: +1, y: +1 },\n        { x: +1, y: -1 },\n        { x: +1, y: +1 },\n        { x: -1, y: +1 },\n        { x: +1, y: +1 },\n        { x: -1, y: +1 },\n        { x: -1, y: -1 },\n        { x: -1, y: +1 },\n        { x: -1, y: -1 },\n    ];\n    return Cross;\n}(Marker));\n\nvar __extends$2v = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar Diamond = /** @class */ (function (_super) {\n    __extends$2v(Diamond, _super);\n    function Diamond() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    Diamond.prototype.updatePath = function () {\n        var s = this.size / 2;\n        _super.prototype.applyPath.call(this, s, Diamond.moves);\n    };\n    Diamond.className = 'Diamond';\n    Diamond.moves = [\n        { x: 0, y: -1, t: 'move' },\n        { x: +1, y: +1 },\n        { x: -1, y: +1 },\n        { x: -1, y: -1 },\n        { x: +1, y: -1 },\n    ];\n    return Diamond;\n}(Marker));\n\nvar __extends$2u = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar Heart = /** @class */ (function (_super) {\n    __extends$2u(Heart, _super);\n    function Heart() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    Heart.prototype.rad = function (degree) {\n        return (degree / 180) * Math.PI;\n    };\n    Heart.prototype.updatePath = function () {\n        var _a = this, x = _a.x, path = _a.path, size = _a.size, rad = _a.rad;\n        var r = size / 4;\n        var y = this.y + r / 2;\n        path.clear();\n        path.arc(x - r, y - r, r, rad(130), rad(330));\n        path.arc(x + r, y - r, r, rad(220), rad(50));\n        path.lineTo(x, y + r);\n        path.closePath();\n    };\n    Heart.className = 'Heart';\n    return Heart;\n}(Marker));\n\nvar __extends$2t = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar Plus = /** @class */ (function (_super) {\n    __extends$2t(Plus, _super);\n    function Plus() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    Plus.prototype.updatePath = function () {\n        var s = this.size / 3;\n        _super.prototype.applyPath.call(this, s, Plus.moves);\n    };\n    Plus.className = 'Plus';\n    Plus.moves = [\n        { x: -0.5, y: -0.5, t: 'move' },\n        { x: 0, y: -1 },\n        { x: +1, y: 0 },\n        { x: 0, y: +1 },\n        { x: +1, y: 0 },\n        { x: 0, y: +1 },\n        { x: -1, y: 0 },\n        { x: 0, y: +1 },\n        { x: -1, y: 0 },\n        { x: 0, y: -1 },\n        { x: -1, y: 0 },\n        { x: 0, y: -1 },\n    ];\n    return Plus;\n}(Marker));\n\nvar __extends$2s = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar Triangle = /** @class */ (function (_super) {\n    __extends$2s(Triangle, _super);\n    function Triangle() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    Triangle.prototype.updatePath = function () {\n        var s = this.size * 1.1;\n        _super.prototype.applyPath.call(this, s, Triangle.moves);\n    };\n    Triangle.className = 'Triangle';\n    Triangle.moves = [\n        { x: 0, y: -0.48, t: 'move' },\n        { x: 0.5, y: 0.87 },\n        { x: -1, y: 0 },\n    ];\n    return Triangle;\n}(Marker));\n\n// This function is in its own file because putting it into SeriesMarker makes the Legend\n// suddenly aware of the series (it's an agnostic component), and putting it into Marker\n// introduces circular dependencies.\nfunction getMarker$1(shape) {\n    if (shape === void 0) { shape = Square; }\n    if (typeof shape === 'string') {\n        switch (shape) {\n            case 'circle':\n                return Circle;\n            case 'cross':\n                return Cross;\n            case 'diamond':\n                return Diamond;\n            case 'heart':\n                return Heart;\n            case 'plus':\n                return Plus;\n            case 'triangle':\n                return Triangle;\n            default:\n                return Square;\n        }\n    }\n    if (typeof shape === 'function') {\n        return shape;\n    }\n    return Square;\n}\n\n/** Types of chart-update, in pipeline execution order. */\nvar ChartUpdateType;\n(function (ChartUpdateType) {\n    ChartUpdateType[ChartUpdateType[\"FULL\"] = 0] = \"FULL\";\n    ChartUpdateType[ChartUpdateType[\"PROCESS_DATA\"] = 1] = \"PROCESS_DATA\";\n    ChartUpdateType[ChartUpdateType[\"PERFORM_LAYOUT\"] = 2] = \"PERFORM_LAYOUT\";\n    ChartUpdateType[ChartUpdateType[\"SERIES_UPDATE\"] = 3] = \"SERIES_UPDATE\";\n    ChartUpdateType[ChartUpdateType[\"TOOLTIP_RECALCULATION\"] = 4] = \"TOOLTIP_RECALCULATION\";\n    ChartUpdateType[ChartUpdateType[\"SCENE_RENDER\"] = 5] = \"SCENE_RENDER\";\n    ChartUpdateType[ChartUpdateType[\"NONE\"] = 6] = \"NONE\";\n})(ChartUpdateType || (ChartUpdateType = {}));\n\nvar __values$s = (undefined && undefined.__values) || function(o) {\n    var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n    if (m) return m.call(o);\n    if (o && typeof o.length === \"number\") return {\n        next: function () {\n            if (o && i >= o.length) o = void 0;\n            return { value: o && o[i++], done: !o };\n        }\n    };\n    throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nfunction gridLayout(_a) {\n    var orientation = _a.orientation, bboxes = _a.bboxes, maxHeight = _a.maxHeight, maxWidth = _a.maxWidth, _b = _a.itemPaddingY, itemPaddingY = _b === void 0 ? 0 : _b, _c = _a.itemPaddingX, itemPaddingX = _c === void 0 ? 0 : _c, _d = _a.forceResult, forceResult = _d === void 0 ? false : _d;\n    var horizontal = orientation === 'horizontal';\n    var primary = {\n        max: horizontal ? maxWidth : maxHeight,\n        fn: horizontal ? function (b) { return b.width; } : function (b) { return b.height; },\n        padding: horizontal ? itemPaddingX : itemPaddingY,\n    };\n    var secondary = {\n        max: !horizontal ? maxWidth : maxHeight,\n        fn: !horizontal ? function (b) { return b.width; } : function (b) { return b.height; },\n        padding: !horizontal ? itemPaddingX : itemPaddingY,\n    };\n    var processedBBoxCount = 0;\n    var rawPages = [];\n    while (processedBBoxCount < bboxes.length) {\n        var unprocessedBBoxes = bboxes.slice(processedBBoxCount);\n        var result = processBBoxes(unprocessedBBoxes, processedBBoxCount, primary, secondary, forceResult);\n        if (!result) {\n            return;\n        }\n        processedBBoxCount += result.processedBBoxCount;\n        rawPages.push(result.pageIndices);\n    }\n    return buildPages(rawPages, orientation, bboxes, itemPaddingY, itemPaddingX);\n}\nfunction processBBoxes(bboxes, indexOffset, primary, secondary, forceResult) {\n    // If calculatePage() fails on the first guess, we could use the number of items that fit\n    // as a good guess for the next iteration.\n    var minGuess = 1;\n    var startingGuess = estimateStartingGuess(bboxes, primary);\n    if (startingGuess < minGuess) {\n        if (!forceResult) {\n            return undefined;\n        }\n        // Legend constraints too small! Display at least one row/column if forceResult is true\n        startingGuess = minGuess;\n    }\n    for (var guess = startingGuess; guess >= minGuess; guess--) {\n        var pageIndices = calculatePage(bboxes, indexOffset, guess, primary, secondary, forceResult);\n        if (pageIndices == null && guess <= minGuess) {\n            // Can't layout!\n            return undefined;\n        }\n        if (pageIndices == null) {\n            // Guess again!\n            continue;\n        }\n        if (typeof pageIndices === 'number') {\n            // calculatePage() suggested a better guess, use that if it's more than minGuess.\n            if (pageIndices <= minGuess) {\n                // Can't layout!\n                return undefined;\n            }\n            guess = pageIndices < guess && pageIndices > minGuess ? pageIndices : guess;\n            continue;\n        }\n        var processedBBoxCount = pageIndices.length * pageIndices[0].length; // this is an estimate, not all rows/columns will have the same length\n        return { processedBBoxCount: processedBBoxCount, pageIndices: pageIndices };\n    }\n}\nfunction calculatePage(bboxes, indexOffset, primaryCount, primary, secondary, forceResult) {\n    var _a;\n    var result = [];\n    var sumSecondary = 0;\n    var currentMaxSecondary = 0;\n    var currentPrimaryIndices = [];\n    var maxPrimaryValues = [];\n    for (var bboxIndex = 0; bboxIndex < bboxes.length; bboxIndex++) {\n        var primaryValueIdx = (bboxIndex + primaryCount) % primaryCount;\n        if (primaryValueIdx === 0) {\n            sumSecondary += currentMaxSecondary;\n            currentMaxSecondary = 0;\n            if (currentPrimaryIndices.length > 0) {\n                result.push(currentPrimaryIndices);\n            }\n            currentPrimaryIndices = [];\n        }\n        var primaryValue = primary.fn(bboxes[bboxIndex]) + primary.padding;\n        maxPrimaryValues[primaryValueIdx] = Math.max((_a = maxPrimaryValues[primaryValueIdx]) !== null && _a !== void 0 ? _a : 0, primaryValue);\n        currentMaxSecondary = Math.max(currentMaxSecondary, secondary.fn(bboxes[bboxIndex]) + secondary.padding);\n        var currentSecondaryDimension = sumSecondary + currentMaxSecondary;\n        var returnResult = !forceResult || result.length > 0;\n        if (currentSecondaryDimension > secondary.max && returnResult) {\n            // Breached max secondary dimension size, return indices accumlated so far (but not in-progress row/column).\n            currentPrimaryIndices = [];\n            break;\n        }\n        var sumPrimary = maxPrimaryValues.reduce(function (sum, next) { return sum + next; }, 0);\n        if (sumPrimary > primary.max && !forceResult) {\n            // Breached max main dimension size.\n            if (maxPrimaryValues.length < primaryCount) {\n                // Feedback as guess for next iteration if we're on the first round still.\n                return maxPrimaryValues.length;\n            }\n            return undefined;\n        }\n        currentPrimaryIndices.push(bboxIndex + indexOffset);\n    }\n    if (currentPrimaryIndices.length > 0) {\n        result.push(currentPrimaryIndices);\n    }\n    return result.length > 0 ? result : undefined;\n}\nfunction buildPages(rawPages, orientation, bboxes, itemPaddingY, itemPaddingX) {\n    var maxPageWidth = 0;\n    var maxPageHeight = 0;\n    var pages = rawPages.map(function (indices) {\n        if (orientation === 'horizontal') {\n            indices = transpose(indices);\n        }\n        var endIndex = 0;\n        var columns = indices.map(function (colIndices) {\n            var colBBoxes = colIndices.map(function (bboxIndex) {\n                endIndex = Math.max(bboxIndex, endIndex);\n                return bboxes[bboxIndex];\n            });\n            var columnHeight = 0;\n            var columnWidth = 0;\n            colBBoxes.forEach(function (bbox) {\n                columnHeight += bbox.height + itemPaddingY;\n                columnWidth = Math.max(columnWidth, bbox.width + itemPaddingX);\n            });\n            return {\n                indices: colIndices,\n                bboxes: colBBoxes,\n                columnHeight: columnHeight,\n                columnWidth: columnWidth,\n            };\n        });\n        var pageWidth = 0;\n        var pageHeight = 0;\n        columns.forEach(function (column) {\n            pageWidth += column.columnWidth;\n            pageHeight = Math.max(pageHeight, column.columnHeight);\n        });\n        maxPageWidth = Math.max(pageWidth, maxPageWidth);\n        maxPageHeight = Math.max(pageHeight, maxPageHeight);\n        return {\n            columns: columns,\n            startIndex: indices[0][0],\n            endIndex: endIndex,\n            pageWidth: pageWidth,\n            pageHeight: pageHeight,\n        };\n    });\n    return { pages: pages, maxPageWidth: maxPageWidth, maxPageHeight: maxPageHeight };\n}\nfunction transpose(data) {\n    var e_1, _a;\n    var result = [];\n    try {\n        for (var _b = __values$s(data[0]), _c = _b.next(); !_c.done; _c = _b.next()) {\n            var _ = _c.value;\n            result.push([]);\n        }\n    }\n    catch (e_1_1) { e_1 = { error: e_1_1 }; }\n    finally {\n        try {\n            if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n        }\n        finally { if (e_1) throw e_1.error; }\n    }\n    data.forEach(function (innerData, dataIdx) {\n        innerData.forEach(function (item, itemIdx) {\n            result[itemIdx][dataIdx] = item;\n        });\n    });\n    return result;\n}\nfunction estimateStartingGuess(bboxes, primary) {\n    var n = bboxes.length;\n    var primarySum = 0;\n    for (var bboxIndex = 0; bboxIndex < n; bboxIndex++) {\n        primarySum += primary.fn(bboxes[bboxIndex]) + primary.padding;\n        if (primarySum > primary.max) {\n            var ratio = n / bboxIndex;\n            if (ratio < 2) {\n                return Math.ceil(n / 2);\n            }\n            return bboxIndex;\n        }\n    }\n    return n;\n}\n\nvar __decorate$1L = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar PaginationLabel = /** @class */ (function () {\n    function PaginationLabel() {\n        this.color = 'black';\n        this.fontStyle = undefined;\n        this.fontWeight = undefined;\n        this.fontSize = 12;\n        this.fontFamily = 'Verdana, sans-serif';\n    }\n    __decorate$1L([\n        Validate(COLOR_STRING)\n    ], PaginationLabel.prototype, \"color\", void 0);\n    __decorate$1L([\n        Validate(OPT_FONT_STYLE)\n    ], PaginationLabel.prototype, \"fontStyle\", void 0);\n    __decorate$1L([\n        Validate(OPT_FONT_WEIGHT)\n    ], PaginationLabel.prototype, \"fontWeight\", void 0);\n    __decorate$1L([\n        Validate(NUMBER(0))\n    ], PaginationLabel.prototype, \"fontSize\", void 0);\n    __decorate$1L([\n        Validate(STRING)\n    ], PaginationLabel.prototype, \"fontFamily\", void 0);\n    return PaginationLabel;\n}());\nvar PaginationMarkerStyle = /** @class */ (function () {\n    function PaginationMarkerStyle() {\n        this.size = 15;\n        this.fill = undefined;\n        this.fillOpacity = undefined;\n        this.stroke = undefined;\n        this.strokeWidth = 1;\n        this.strokeOpacity = 1;\n    }\n    __decorate$1L([\n        Validate(NUMBER(0))\n    ], PaginationMarkerStyle.prototype, \"size\", void 0);\n    __decorate$1L([\n        Validate(OPT_COLOR_STRING)\n    ], PaginationMarkerStyle.prototype, \"fill\", void 0);\n    __decorate$1L([\n        Validate(OPT_NUMBER(0, 1))\n    ], PaginationMarkerStyle.prototype, \"fillOpacity\", void 0);\n    __decorate$1L([\n        Validate(OPT_COLOR_STRING)\n    ], PaginationMarkerStyle.prototype, \"stroke\", void 0);\n    __decorate$1L([\n        Validate(NUMBER(0))\n    ], PaginationMarkerStyle.prototype, \"strokeWidth\", void 0);\n    __decorate$1L([\n        Validate(NUMBER(0, 1))\n    ], PaginationMarkerStyle.prototype, \"strokeOpacity\", void 0);\n    return PaginationMarkerStyle;\n}());\nvar PaginationMarker = /** @class */ (function () {\n    function PaginationMarker() {\n        this.size = 15;\n        this._shape = Triangle;\n        /**\n         * Inner padding between a pagination button and the label.\n         */\n        this.padding = 8;\n    }\n    Object.defineProperty(PaginationMarker.prototype, \"shape\", {\n        get: function () {\n            return this._shape;\n        },\n        set: function (value) {\n            var _a;\n            this._shape = value;\n            (_a = this.parent) === null || _a === void 0 ? void 0 : _a.onMarkerShapeChange();\n        },\n        enumerable: false,\n        configurable: true\n    });\n    __decorate$1L([\n        Validate(NUMBER(0))\n    ], PaginationMarker.prototype, \"size\", void 0);\n    __decorate$1L([\n        Validate(NUMBER(0))\n    ], PaginationMarker.prototype, \"padding\", void 0);\n    return PaginationMarker;\n}());\nvar Pagination = /** @class */ (function () {\n    function Pagination(chartUpdateCallback, pageUpdateCallback, interactionManager, cursorManager) {\n        var _this = this;\n        this.chartUpdateCallback = chartUpdateCallback;\n        this.pageUpdateCallback = pageUpdateCallback;\n        this.interactionManager = interactionManager;\n        this.cursorManager = cursorManager;\n        this.id = createId$1(this);\n        this.group = new Group({ name: 'pagination' });\n        this.labelNode = new Text();\n        this.marker = new PaginationMarker();\n        this.activeStyle = new PaginationMarkerStyle();\n        this.inactiveStyle = new PaginationMarkerStyle();\n        this.highlightStyle = new PaginationMarkerStyle();\n        this.label = new PaginationLabel();\n        this.totalPages = 0;\n        this.currentPage = 0;\n        this.nextButtonDisabled = false;\n        this.previousButtonDisabled = false;\n        this._visible = true;\n        this._enabled = true;\n        this._orientation = 'vertical';\n        this._nextButton = new Triangle();\n        this._previousButton = new Triangle();\n        var labelNode = this.labelNode;\n        labelNode.textBaseline = 'middle';\n        labelNode.fontSize = 12;\n        labelNode.fontFamily = 'Verdana, sans-serif';\n        labelNode.fill = 'black';\n        labelNode.y = HdpiCanvas.has.textMetrics ? 1 : 0;\n        this.group.append([this.nextButton, this.previousButton, labelNode]);\n        this.interactionManager.addListener('click', function (event) { return _this.onPaginationClick(event); });\n        this.interactionManager.addListener('hover', function (event) { return _this.onPaginationMouseMove(event); });\n        this.marker.parent = this;\n        this.update();\n        this.updateMarkers();\n    }\n    Object.defineProperty(Pagination.prototype, \"visible\", {\n        get: function () {\n            return this._visible;\n        },\n        set: function (value) {\n            this._visible = value;\n            this.updateGroupVisibility();\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(Pagination.prototype, \"enabled\", {\n        get: function () {\n            return this._enabled;\n        },\n        set: function (value) {\n            this._enabled = value;\n            this.updateGroupVisibility();\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Pagination.prototype.updateGroupVisibility = function () {\n        this.group.visible = this.enabled && this.visible;\n    };\n    Object.defineProperty(Pagination.prototype, \"orientation\", {\n        get: function () {\n            return this._orientation;\n        },\n        set: function (value) {\n            this._orientation = value;\n            switch (value) {\n                case 'horizontal': {\n                    this.previousButton.rotation = -Math.PI / 2;\n                    this.nextButton.rotation = Math.PI / 2;\n                    break;\n                }\n                case 'vertical':\n                default: {\n                    this.previousButton.rotation = 0;\n                    this.nextButton.rotation = Math.PI;\n                }\n            }\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(Pagination.prototype, \"translationX\", {\n        get: function () {\n            return this.group.translationX;\n        },\n        set: function (value) {\n            this.group.translationX = value;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(Pagination.prototype, \"translationY\", {\n        get: function () {\n            return this.group.translationY;\n        },\n        set: function (value) {\n            this.group.translationY = value;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(Pagination.prototype, \"nextButton\", {\n        get: function () {\n            return this._nextButton;\n        },\n        set: function (value) {\n            if (this._nextButton !== value) {\n                this.group.removeChild(this._nextButton);\n                this._nextButton = value;\n                this.group.appendChild(value);\n            }\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(Pagination.prototype, \"previousButton\", {\n        get: function () {\n            return this._previousButton;\n        },\n        set: function (value) {\n            if (this._previousButton !== value) {\n                this.group.removeChild(this._previousButton);\n                this._previousButton = value;\n                this.group.appendChild(value);\n            }\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Pagination.prototype.update = function () {\n        this.updateLabel();\n        this.updatePositions();\n        this.enableOrDisableButtons();\n    };\n    Pagination.prototype.updatePositions = function () {\n        this.updateLabelPosition();\n        this.updateNextButtonPosition();\n    };\n    Pagination.prototype.updateLabelPosition = function () {\n        var _a = this.marker, markerSize = _a.size, markerPadding = _a.padding;\n        this.nextButton.size = markerSize;\n        this.previousButton.size = markerSize;\n        this.labelNode.x = markerSize / 2 + markerPadding;\n    };\n    Pagination.prototype.updateNextButtonPosition = function () {\n        var labelBBox = this.labelNode.computeBBox();\n        this.nextButton.translationX = labelBBox.x + labelBBox.width + this.marker.size / 2 + this.marker.padding;\n    };\n    Pagination.prototype.updateLabel = function () {\n        var _a = this, currentPage = _a.currentPage, pages = _a.totalPages, labelNode = _a.labelNode, _b = _a.label, color = _b.color, fontStyle = _b.fontStyle, fontWeight = _b.fontWeight, fontSize = _b.fontSize, fontFamily = _b.fontFamily;\n        labelNode.text = currentPage + 1 + \" / \" + pages;\n        labelNode.fill = color;\n        labelNode.fontStyle = fontStyle;\n        labelNode.fontWeight = fontWeight;\n        labelNode.fontSize = fontSize;\n        labelNode.fontFamily = fontFamily;\n    };\n    Pagination.prototype.updateMarkers = function () {\n        var _a = this, nextButton = _a.nextButton, previousButton = _a.previousButton, nextButtonDisabled = _a.nextButtonDisabled, previousButtonDisabled = _a.previousButtonDisabled, activeStyle = _a.activeStyle, inactiveStyle = _a.inactiveStyle, highlightStyle = _a.highlightStyle, highlightActive = _a.highlightActive;\n        var buttonStyle = function (button, disabled) {\n            if (disabled) {\n                return inactiveStyle;\n            }\n            else if (button === highlightActive) {\n                return highlightStyle;\n            }\n            return activeStyle;\n        };\n        this.updateMarker(nextButton, buttonStyle('next', nextButtonDisabled));\n        this.updateMarker(previousButton, buttonStyle('previous', previousButtonDisabled));\n    };\n    Pagination.prototype.updateMarker = function (marker, style) {\n        var _a;\n        var size = this.marker.size;\n        marker.size = size;\n        marker.fill = style.fill;\n        marker.fillOpacity = (_a = style.fillOpacity) !== null && _a !== void 0 ? _a : 1;\n        marker.stroke = style.stroke;\n        marker.strokeWidth = style.strokeWidth;\n        marker.strokeOpacity = style.strokeOpacity;\n    };\n    Pagination.prototype.enableOrDisableButtons = function () {\n        var _a = this, currentPage = _a.currentPage, totalPages = _a.totalPages;\n        var zeroPagesToDisplay = totalPages === 0;\n        var onLastPage = currentPage === totalPages - 1;\n        var onFirstPage = currentPage === 0;\n        this.nextButtonDisabled = onLastPage || zeroPagesToDisplay;\n        this.previousButtonDisabled = onFirstPage || zeroPagesToDisplay;\n    };\n    Pagination.prototype.nextButtonContainsPoint = function (offsetX, offsetY) {\n        return !this.nextButtonDisabled && this.nextButton.containsPoint(offsetX, offsetY);\n    };\n    Pagination.prototype.previousButtonContainsPoint = function (offsetX, offsetY) {\n        return !this.previousButtonDisabled && this.previousButton.containsPoint(offsetX, offsetY);\n    };\n    Pagination.prototype.onPaginationClick = function (event) {\n        var offsetX = event.offsetX, offsetY = event.offsetY;\n        if (this.nextButtonContainsPoint(offsetX, offsetY)) {\n            this.incrementPage();\n            this.onPaginationChanged();\n            event.consume();\n        }\n        else if (this.previousButtonContainsPoint(offsetX, offsetY)) {\n            this.decrementPage();\n            this.onPaginationChanged();\n            event.consume();\n        }\n    };\n    Pagination.prototype.onPaginationMouseMove = function (event) {\n        var offsetX = event.offsetX, offsetY = event.offsetY;\n        if (this.nextButtonContainsPoint(offsetX, offsetY)) {\n            this.cursorManager.updateCursor(this.id, 'pointer');\n            this.highlightActive = 'next';\n        }\n        else if (this.previousButtonContainsPoint(offsetX, offsetY)) {\n            this.cursorManager.updateCursor(this.id, 'pointer');\n            this.highlightActive = 'previous';\n        }\n        else {\n            this.cursorManager.updateCursor(this.id);\n            this.highlightActive = undefined;\n        }\n        this.updateMarkers();\n        this.chartUpdateCallback(ChartUpdateType.SCENE_RENDER);\n    };\n    Pagination.prototype.onPaginationChanged = function () {\n        this.pageUpdateCallback(this.currentPage);\n    };\n    Pagination.prototype.incrementPage = function () {\n        this.currentPage = Math.min(this.currentPage + 1, this.totalPages - 1);\n    };\n    Pagination.prototype.decrementPage = function () {\n        this.currentPage = Math.max(this.currentPage - 1, 0);\n    };\n    Pagination.prototype.onMarkerShapeChange = function () {\n        var Marker = getMarker$1(this.marker.shape || Triangle);\n        this.previousButton = new Marker();\n        this.nextButton = new Marker();\n        this.updatePositions();\n        this.updateMarkers();\n        this.chartUpdateCallback(ChartUpdateType.SCENE_RENDER);\n    };\n    Pagination.prototype.attachPagination = function (node) {\n        node.append(this.group);\n    };\n    Pagination.prototype.computeBBox = function () {\n        return this.group.computeBBox();\n    };\n    Pagination.className = 'Pagination';\n    return Pagination;\n}());\n\nvar __decorate$1K = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __read$U = (undefined && undefined.__read) || function (o, n) {\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n    if (!m) return o;\n    var i = m.call(o), r, ar = [], e;\n    try {\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n    }\n    catch (error) { e = { error: error }; }\n    finally {\n        try {\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\n        }\n        finally { if (e) throw e.error; }\n    }\n    return ar;\n};\nvar __spread$w = (undefined && undefined.__spread) || function () {\n    for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read$U(arguments[i]));\n    return ar;\n};\nvar __values$r = (undefined && undefined.__values) || function(o) {\n    var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n    if (m) return m.call(o);\n    if (o && typeof o.length === \"number\") return {\n        next: function () {\n            if (o && i >= o.length) o = void 0;\n            return { value: o && o[i++], done: !o };\n        }\n    };\n    throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nvar ORIENTATIONS = ['horizontal', 'vertical'];\nvar OPT_ORIENTATION = predicateWithMessage(function (v, ctx) { return OPTIONAL(v, ctx, function (v) { return ORIENTATIONS.includes(v); }); }, \"expecting an orientation keyword such as 'horizontal' or 'vertical'\");\nvar LegendLabel = /** @class */ (function () {\n    function LegendLabel() {\n        this.maxLength = undefined;\n        this.color = 'black';\n        this.fontStyle = undefined;\n        this.fontWeight = undefined;\n        this.fontSize = 12;\n        this.fontFamily = 'Verdana, sans-serif';\n        this.formatter = undefined;\n    }\n    LegendLabel.prototype.getFont = function () {\n        return getFont(this.fontSize, this.fontFamily, this.fontStyle, this.fontWeight);\n    };\n    __decorate$1K([\n        Validate(OPT_NUMBER(0))\n    ], LegendLabel.prototype, \"maxLength\", void 0);\n    __decorate$1K([\n        Validate(COLOR_STRING)\n    ], LegendLabel.prototype, \"color\", void 0);\n    __decorate$1K([\n        Validate(OPT_FONT_STYLE)\n    ], LegendLabel.prototype, \"fontStyle\", void 0);\n    __decorate$1K([\n        Validate(OPT_FONT_WEIGHT)\n    ], LegendLabel.prototype, \"fontWeight\", void 0);\n    __decorate$1K([\n        Validate(NUMBER(0))\n    ], LegendLabel.prototype, \"fontSize\", void 0);\n    __decorate$1K([\n        Validate(STRING)\n    ], LegendLabel.prototype, \"fontFamily\", void 0);\n    __decorate$1K([\n        Validate(OPT_FUNCTION)\n    ], LegendLabel.prototype, \"formatter\", void 0);\n    return LegendLabel;\n}());\nvar LegendMarker = /** @class */ (function () {\n    function LegendMarker() {\n        this.size = 15;\n        /**\n         * If the marker type is set, the legend will always use that marker type for all its items,\n         * regardless of the type that comes from the `data`.\n         */\n        this._shape = undefined;\n        /**\n         * Padding between the marker and the label within each legend item.\n         */\n        this.padding = 8;\n        this.strokeWidth = 1;\n    }\n    Object.defineProperty(LegendMarker.prototype, \"shape\", {\n        get: function () {\n            return this._shape;\n        },\n        set: function (value) {\n            var _a;\n            this._shape = value;\n            (_a = this.parent) === null || _a === void 0 ? void 0 : _a.onMarkerShapeChange();\n        },\n        enumerable: false,\n        configurable: true\n    });\n    __decorate$1K([\n        Validate(NUMBER(0))\n    ], LegendMarker.prototype, \"size\", void 0);\n    __decorate$1K([\n        Validate(NUMBER(0))\n    ], LegendMarker.prototype, \"padding\", void 0);\n    __decorate$1K([\n        Validate(NUMBER(0))\n    ], LegendMarker.prototype, \"strokeWidth\", void 0);\n    return LegendMarker;\n}());\nvar LegendItem = /** @class */ (function () {\n    function LegendItem() {\n        this.marker = new LegendMarker();\n        this.label = new LegendLabel();\n        /** Used to constrain the width of legend items. */\n        this.maxWidth = undefined;\n        /**\n         * The legend uses grid layout for its items, occupying as few columns as possible when positioned to left or right,\n         * and as few rows as possible when positioned to top or bottom. This config specifies the amount of horizontal\n         * padding between legend items.\n         */\n        this.paddingX = 16;\n        /**\n         * The legend uses grid layout for its items, occupying as few columns as possible when positioned to left or right,\n         * and as few rows as possible when positioned to top or bottom. This config specifies the amount of vertical\n         * padding between legend items.\n         */\n        this.paddingY = 8;\n        this.toggleSeriesVisible = true;\n    }\n    __decorate$1K([\n        Validate(OPT_NUMBER(0))\n    ], LegendItem.prototype, \"maxWidth\", void 0);\n    __decorate$1K([\n        Validate(NUMBER(0))\n    ], LegendItem.prototype, \"paddingX\", void 0);\n    __decorate$1K([\n        Validate(NUMBER(0))\n    ], LegendItem.prototype, \"paddingY\", void 0);\n    __decorate$1K([\n        Validate(BOOLEAN)\n    ], LegendItem.prototype, \"toggleSeriesVisible\", void 0);\n    return LegendItem;\n}());\nvar LegendListeners = /** @class */ (function () {\n    function LegendListeners() {\n        this.legendItemClick = undefined;\n        this.legendItemDoubleClick = undefined;\n    }\n    __decorate$1K([\n        Validate(OPT_FUNCTION)\n    ], LegendListeners.prototype, \"legendItemClick\", void 0);\n    return LegendListeners;\n}());\nvar Legend = /** @class */ (function () {\n    function Legend(chart, interactionManager, cursorManager, highlightManager, tooltipManager, layoutService) {\n        var _a;\n        var _this = this;\n        this.chart = chart;\n        this.interactionManager = interactionManager;\n        this.cursorManager = cursorManager;\n        this.highlightManager = highlightManager;\n        this.tooltipManager = tooltipManager;\n        this.layoutService = layoutService;\n        this.id = createId$1(this);\n        this.group = new Group({ name: 'legend', layer: true, zIndex: Layers.LEGEND_ZINDEX });\n        this.itemSelection = Selection.select(this.group, MarkerLabel);\n        this.oldSize = [0, 0];\n        this.pages = [];\n        this.maxPageSize = [0, 0];\n        /** Item index to track on re-pagination, so current page updates appropriately. */\n        this.paginationTrackingIndex = 0;\n        this.item = new LegendItem();\n        this.listeners = new LegendListeners();\n        this.truncatedItems = new Set();\n        this._data = [];\n        this._enabled = true;\n        this.position = 'right';\n        /** Used to constrain the width of the legend. */\n        this.maxWidth = undefined;\n        /** Used to constrain the height of the legend. */\n        this.maxHeight = undefined;\n        /** Reverse the display order of legend items if `true`. */\n        this.reverseOrder = undefined;\n        this.destroyFns = [];\n        /**\n         * Spacing between the legend and the edge of the chart's element.\n         */\n        this.spacing = 20;\n        this.characterWidths = new Map();\n        this.size = [0, 0];\n        this._visible = true;\n        this.item.marker.parent = this;\n        this.pagination = new Pagination(function (type) { return _this.chart.update(type); }, function (page) { return _this.updatePageNumber(page); }, this.interactionManager, this.cursorManager);\n        this.pagination.attachPagination(this.group);\n        this.item.marker.parent = this;\n        var interactionListeners = [\n            this.interactionManager.addListener('click', function (e) { return _this.checkLegendClick(e); }),\n            this.interactionManager.addListener('dblclick', function (e) { return _this.checkLegendDoubleClick(e); }),\n            this.interactionManager.addListener('hover', function (e) { return _this.handleLegendMouseMove(e); }),\n        ];\n        var layoutListeners = [\n            this.layoutService.addListener('start-layout', function (e) { return _this.positionLegend(e.shrinkRect); }),\n        ];\n        (_a = this.destroyFns).push.apply(_a, __spread$w(interactionListeners.map(function (s) { return function () { return _this.interactionManager.removeListener(s); }; }), layoutListeners.map(function (s) { return function () { return _this.layoutService.removeListener(s); }; })));\n    }\n    Object.defineProperty(Legend.prototype, \"translationX\", {\n        get: function () {\n            return this.group.translationX;\n        },\n        set: function (value) {\n            this.group.translationX = value;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(Legend.prototype, \"translationY\", {\n        get: function () {\n            return this.group.translationY;\n        },\n        set: function (value) {\n            this.group.translationY = value;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(Legend.prototype, \"data\", {\n        get: function () {\n            return this._data;\n        },\n        set: function (value) {\n            this._data = value;\n            this.updateGroupVisibility();\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(Legend.prototype, \"enabled\", {\n        get: function () {\n            return this._enabled;\n        },\n        set: function (value) {\n            this._enabled = value;\n            this.updateGroupVisibility();\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Legend.prototype.getOrientation = function () {\n        if (this.orientation !== undefined) {\n            return this.orientation;\n        }\n        switch (this.position) {\n            case 'right':\n            case 'left':\n                return 'vertical';\n            case 'bottom':\n            case 'top':\n                return 'horizontal';\n        }\n    };\n    Legend.prototype.destroy = function () {\n        this.destroyFns.forEach(function (f) { return f(); });\n    };\n    Legend.prototype.onMarkerShapeChange = function () {\n        this.itemSelection.clear();\n        this.group.markDirty(this.group, RedrawType.MINOR);\n    };\n    Legend.prototype.getCharacterWidths = function (font) {\n        var characterWidths = this.characterWidths;\n        if (characterWidths.has(font)) {\n            return characterWidths.get(font);\n        }\n        var cw = {\n            '...': HdpiCanvas.getTextSize('...', font).width,\n        };\n        characterWidths.set(font, cw);\n        return cw;\n    };\n    Object.defineProperty(Legend.prototype, \"visible\", {\n        get: function () {\n            return this._visible;\n        },\n        set: function (value) {\n            this._visible = value;\n            this.updateGroupVisibility();\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Legend.prototype.updateGroupVisibility = function () {\n        this.group.visible = this.enabled && this.visible && this.data.length > 0;\n    };\n    Legend.prototype.attachLegend = function (node) {\n        node.append(this.group);\n    };\n    /**\n     * The method is given the desired size of the legend, which only serves as a hint.\n     * The vertically oriented legend will take as much horizontal space as needed, but will\n     * respect the height constraints, and the horizontal legend will take as much vertical\n     * space as needed in an attempt not to exceed the given width.\n     * After the layout is done, the {@link size} will contain the actual size of the legend.\n     * If the actual size is not the same as the previous actual size, the legend will fire\n     * the 'layoutChange' event to communicate that another layout is needed, and the above\n     * process should be repeated.\n     * @param width\n     * @param height\n     */\n    Legend.prototype.performLayout = function (width, height) {\n        var _this = this;\n        var _a = this.item, paddingX = _a.paddingX, paddingY = _a.paddingY, label = _a.label, maxWidth = _a.maxWidth, _b = _a.marker, markerSize = _b.size, markerPadding = _b.padding, markerShape = _b.shape, _c = _a.label, _d = _c.maxLength, maxLength = _d === void 0 ? Infinity : _d, fontStyle = _c.fontStyle, fontWeight = _c.fontWeight, fontSize = _c.fontSize, fontFamily = _c.fontFamily;\n        var data = __spread$w(this.data);\n        if (this.reverseOrder) {\n            data.reverse();\n        }\n        this.itemSelection.update(data);\n        // Update properties that affect the size of the legend items and measure them.\n        var bboxes = [];\n        var font = label.getFont();\n        var itemMaxWidthPercentage = 0.8;\n        var maxItemWidth = maxWidth !== null && maxWidth !== void 0 ? maxWidth : width * itemMaxWidthPercentage;\n        var paddedMarkerWidth = markerSize + markerPadding + paddingX;\n        this.itemSelection.each(function (markerLabel, datum) {\n            var _a;\n            var Marker = getMarker$1(markerShape || datum.marker.shape);\n            if (!(markerLabel.marker && markerLabel.marker instanceof Marker)) {\n                markerLabel.marker = new Marker();\n            }\n            markerLabel.markerSize = markerSize;\n            markerLabel.spacing = markerPadding;\n            markerLabel.fontStyle = fontStyle;\n            markerLabel.fontWeight = fontWeight;\n            markerLabel.fontSize = fontSize;\n            markerLabel.fontFamily = fontFamily;\n            var id = datum.itemId || datum.id;\n            var text = ((_a = datum.label.text) !== null && _a !== void 0 ? _a : '<unknown>').replace(/\\r?\\n/g, ' ');\n            markerLabel.text = _this.truncate(text, maxLength, maxItemWidth, paddedMarkerWidth, font, id);\n            bboxes.push(markerLabel.computeBBox());\n        });\n        width = Math.max(1, width);\n        height = Math.max(1, height);\n        if (!isFinite(width)) {\n            return false;\n        }\n        var size = this.size;\n        var oldSize = this.oldSize;\n        size[0] = width;\n        size[1] = height;\n        if (size[0] !== oldSize[0] || size[1] !== oldSize[1]) {\n            oldSize[0] = size[0];\n            oldSize[1] = size[1];\n        }\n        var _e = this.updatePagination(bboxes, width, height), pages = _e.pages, maxPageHeight = _e.maxPageHeight, maxPageWidth = _e.maxPageWidth;\n        this.pages = pages;\n        this.maxPageSize = [maxPageWidth - paddingX, maxPageHeight - paddingY];\n        var pageNumber = this.pagination.currentPage;\n        var page = this.pages[pageNumber];\n        if (this.pages.length < 1 || !page) {\n            this.visible = false;\n            return;\n        }\n        this.visible = true;\n        // Position legend items\n        this.updatePositions(pageNumber);\n        // Update legend item properties that don't affect the layout.\n        this.update();\n    };\n    Legend.prototype.truncate = function (text, maxCharLength, maxItemWidth, paddedMarkerWidth, font, id) {\n        var e_1, _a;\n        var ellipsis = \"...\";\n        var textChars = text.split('');\n        var addEllipsis = false;\n        if (text.length > maxCharLength) {\n            text = \"\" + text.substring(0, maxCharLength);\n            addEllipsis = true;\n        }\n        var labelWidth = Math.floor(paddedMarkerWidth + HdpiCanvas.getTextSize(text, font).width);\n        if (labelWidth > maxItemWidth) {\n            var truncatedText = '';\n            var characterWidths = this.getCharacterWidths(font);\n            var cumulativeWidth = paddedMarkerWidth + characterWidths[ellipsis];\n            try {\n                for (var textChars_1 = __values$r(textChars), textChars_1_1 = textChars_1.next(); !textChars_1_1.done; textChars_1_1 = textChars_1.next()) {\n                    var char = textChars_1_1.value;\n                    if (!characterWidths[char]) {\n                        characterWidths[char] = HdpiCanvas.getTextSize(char, font).width;\n                    }\n                    cumulativeWidth += characterWidths[char];\n                    if (cumulativeWidth > maxItemWidth) {\n                        break;\n                    }\n                    truncatedText += char;\n                }\n            }\n            catch (e_1_1) { e_1 = { error: e_1_1 }; }\n            finally {\n                try {\n                    if (textChars_1_1 && !textChars_1_1.done && (_a = textChars_1.return)) _a.call(textChars_1);\n                }\n                finally { if (e_1) throw e_1.error; }\n            }\n            text = truncatedText;\n            addEllipsis = true;\n        }\n        if (addEllipsis) {\n            text += ellipsis;\n            this.truncatedItems.add(id);\n        }\n        else {\n            this.truncatedItems.delete(id);\n        }\n        return text;\n    };\n    Legend.prototype.updatePagination = function (bboxes, width, height) {\n        var orientation = this.getOrientation();\n        var trackingIndex = Math.min(this.paginationTrackingIndex, bboxes.length);\n        this.pagination.orientation = orientation;\n        this.pagination.translationX = 0;\n        this.pagination.translationY = 0;\n        var _a = this.calculatePagination(bboxes, width, height), pages = _a.pages, maxPageHeight = _a.maxPageHeight, maxPageWidth = _a.maxPageWidth, paginationBBox = _a.paginationBBox, paginationVertical = _a.paginationVertical;\n        var newCurrentPage = pages.findIndex(function (p) { return p.endIndex >= trackingIndex; });\n        this.pagination.currentPage = Math.min(Math.max(newCurrentPage, 0), pages.length - 1);\n        var _b = this.item, itemPaddingX = _b.paddingX, itemPaddingY = _b.paddingY;\n        var paginationComponentPadding = 8;\n        var legendItemsWidth = maxPageWidth - itemPaddingX;\n        var legendItemsHeight = maxPageHeight - itemPaddingY;\n        var paginationX = 0;\n        var paginationY = -paginationBBox.y - this.item.marker.size / 2;\n        if (paginationVertical) {\n            paginationY += legendItemsHeight + paginationComponentPadding;\n        }\n        else {\n            paginationX += -paginationBBox.x + legendItemsWidth + paginationComponentPadding;\n            paginationY += (legendItemsHeight - paginationBBox.height) / 2;\n        }\n        this.pagination.translationX = paginationX;\n        this.pagination.translationY = paginationY;\n        this.pagination.update();\n        this.pagination.updateMarkers();\n        return {\n            maxPageHeight: maxPageHeight,\n            maxPageWidth: maxPageWidth,\n            pages: pages,\n        };\n    };\n    Legend.prototype.calculatePagination = function (bboxes, width, height) {\n        var _a, _b, _c;\n        var _d = this.item, itemPaddingX = _d.paddingX, itemPaddingY = _d.paddingY;\n        var orientation = this.getOrientation();\n        var paginationVertical = ['left', 'right'].includes(this.position);\n        var paginationBBox = this.pagination.computeBBox();\n        var lastPassPaginationBBox = new BBox(0, 0, 0, 0);\n        var pages = [];\n        var maxPageWidth = 0;\n        var maxPageHeight = 0;\n        var count = 0;\n        var stableOutput = function (lastPassPaginationBBox) {\n            var width = lastPassPaginationBBox.width, height = lastPassPaginationBBox.height;\n            return width === paginationBBox.width && height === paginationBBox.height;\n        };\n        var forceResult = this.maxWidth !== undefined || this.maxHeight !== undefined;\n        do {\n            if (count++ > 10) {\n                Logger.warn('unable to find stable legend layout.');\n                break;\n            }\n            paginationBBox = lastPassPaginationBBox;\n            var maxWidth = width - (paginationVertical ? 0 : paginationBBox.width);\n            var maxHeight = height - (paginationVertical ? paginationBBox.height : 0);\n            var layout = gridLayout({\n                orientation: orientation,\n                bboxes: bboxes,\n                maxHeight: maxHeight,\n                maxWidth: maxWidth,\n                itemPaddingY: itemPaddingY,\n                itemPaddingX: itemPaddingX,\n                forceResult: forceResult,\n            });\n            pages = (_a = layout === null || layout === void 0 ? void 0 : layout.pages) !== null && _a !== void 0 ? _a : [];\n            maxPageWidth = (_b = layout === null || layout === void 0 ? void 0 : layout.maxPageWidth) !== null && _b !== void 0 ? _b : 0;\n            maxPageHeight = (_c = layout === null || layout === void 0 ? void 0 : layout.maxPageHeight) !== null && _c !== void 0 ? _c : 0;\n            var totalPages = pages.length;\n            this.pagination.visible = totalPages > 1;\n            this.pagination.totalPages = totalPages;\n            this.pagination.update();\n            lastPassPaginationBBox = this.pagination.computeBBox();\n            if (!this.pagination.visible) {\n                break;\n            }\n        } while (!stableOutput(lastPassPaginationBBox));\n        return { maxPageWidth: maxPageWidth, maxPageHeight: maxPageHeight, pages: pages, paginationBBox: paginationBBox, paginationVertical: paginationVertical };\n    };\n    Legend.prototype.updatePositions = function (pageNumber) {\n        if (pageNumber === void 0) { pageNumber = 0; }\n        var _a = this, paddingY = _a.item.paddingY, itemSelection = _a.itemSelection, pages = _a.pages;\n        if (pages.length < 1 || !pages[pageNumber]) {\n            return;\n        }\n        var _b = pages[pageNumber], columns = _b.columns, visibleStart = _b.startIndex, visibleEnd = _b.endIndex;\n        // Position legend items using the layout computed above.\n        var x = 0;\n        var y = 0;\n        var columnCount = columns.length;\n        var rowCount = columns[0].indices.length;\n        var horizontal = this.getOrientation() === 'horizontal';\n        var itemHeight = columns[0].bboxes[0].height + paddingY;\n        var rowSumColumnWidths = [];\n        itemSelection.each(function (markerLabel, _, i) {\n            var _a, _b;\n            if (i < visibleStart || i > visibleEnd) {\n                markerLabel.visible = false;\n                return;\n            }\n            var pageIndex = i - visibleStart;\n            var columnIndex = 0;\n            var rowIndex = 0;\n            if (horizontal) {\n                columnIndex = pageIndex % columnCount;\n                rowIndex = Math.floor(pageIndex / columnCount);\n            }\n            else {\n                columnIndex = Math.floor(pageIndex / rowCount);\n                rowIndex = pageIndex % rowCount;\n            }\n            markerLabel.visible = true;\n            var column = columns[columnIndex];\n            if (!column) {\n                return;\n            }\n            y = itemHeight * rowIndex;\n            x = (_a = rowSumColumnWidths[rowIndex]) !== null && _a !== void 0 ? _a : 0;\n            rowSumColumnWidths[rowIndex] = ((_b = rowSumColumnWidths[rowIndex]) !== null && _b !== void 0 ? _b : 0) + column.columnWidth;\n            // Round off for pixel grid alignment to work properly.\n            markerLabel.translationX = Math.floor(x);\n            markerLabel.translationY = Math.floor(y);\n        });\n    };\n    Legend.prototype.updatePageNumber = function (pageNumber) {\n        var pages = this.pages;\n        // Track an item on the page in re-pagination cases (e.g. resize).\n        var _a = pages[pageNumber], startIndex = _a.startIndex, endIndex = _a.endIndex;\n        if (startIndex === 0) {\n            // Stay on first page on pagination update.\n            this.paginationTrackingIndex = 0;\n        }\n        else if (pageNumber === pages.length - 1) {\n            // Stay on last page on pagination update.\n            this.paginationTrackingIndex = endIndex;\n        }\n        else {\n            // Track the middle item on the page).\n            this.paginationTrackingIndex = Math.floor((startIndex + endIndex) / 2);\n        }\n        this.pagination.update();\n        this.pagination.updateMarkers();\n        this.updatePositions(pageNumber);\n        this.chart.update(ChartUpdateType.SCENE_RENDER);\n    };\n    Legend.prototype.update = function () {\n        var _a = this.item, strokeWidth = _a.marker.strokeWidth, color = _a.label.color;\n        this.itemSelection.each(function (markerLabel, datum) {\n            var marker = datum.marker;\n            markerLabel.markerFill = marker.fill;\n            markerLabel.markerStroke = marker.stroke;\n            markerLabel.markerStrokeWidth = strokeWidth;\n            markerLabel.markerFillOpacity = marker.fillOpacity;\n            markerLabel.markerStrokeOpacity = marker.strokeOpacity;\n            markerLabel.opacity = datum.enabled ? 1 : 0.5;\n            markerLabel.color = color;\n        });\n    };\n    Legend.prototype.getDatumForPoint = function (x, y) {\n        var e_2, _a;\n        var visibleChildBBoxes = [];\n        var closestLeftTop = { dist: Infinity, datum: undefined };\n        try {\n            for (var _b = __values$r(this.group.children), _c = _b.next(); !_c.done; _c = _b.next()) {\n                var child = _c.value;\n                if (!child.visible)\n                    continue;\n                if (!(child instanceof MarkerLabel))\n                    continue;\n                var childBBox = child.computeBBox();\n                childBBox.grow(this.item.paddingX / 2, 'horizontal');\n                childBBox.grow(this.item.paddingY / 2, 'vertical');\n                if (childBBox.containsPoint(x, y)) {\n                    return child.datum;\n                }\n                var distX = x - childBBox.x - this.item.paddingX / 2;\n                var distY = y - childBBox.y - this.item.paddingY / 2;\n                var dist = Math.pow(distX, 2) + Math.pow(distY, 2);\n                var toTheLeftTop = distX >= 0 && distY >= 0;\n                if (toTheLeftTop && dist < closestLeftTop.dist) {\n                    closestLeftTop.dist = dist;\n                    closestLeftTop.datum = child.datum;\n                }\n                visibleChildBBoxes.push(childBBox);\n            }\n        }\n        catch (e_2_1) { e_2 = { error: e_2_1 }; }\n        finally {\n            try {\n                if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n            }\n            finally { if (e_2) throw e_2.error; }\n        }\n        var pageBBox = BBox.merge(visibleChildBBoxes);\n        if (!pageBBox.containsPoint(x, y)) {\n            // We're not in-between legend items.\n            return undefined;\n        }\n        // Fallback to returning closest match to the left/up.\n        return closestLeftTop.datum;\n    };\n    Legend.prototype.computeBBox = function () {\n        return this.group.computeBBox();\n    };\n    Legend.prototype.computePagedBBox = function () {\n        var actualBBox = this.group.computeBBox();\n        if (this.pages.length <= 1) {\n            return actualBBox;\n        }\n        var _a = __read$U(this.maxPageSize, 2), maxPageWidth = _a[0], maxPageHeight = _a[1];\n        actualBBox.height = Math.max(maxPageHeight, actualBBox.height);\n        actualBBox.width = Math.max(maxPageWidth, actualBBox.width);\n        return actualBBox;\n    };\n    Legend.prototype.checkLegendClick = function (event) {\n        var _a = this, legendItemClick = _a.listeners.legendItemClick, chart = _a.chart, highlightManager = _a.highlightManager, toggleSeriesVisible = _a.item.toggleSeriesVisible;\n        var datum = this.getDatumForPoint(event.offsetX, event.offsetY);\n        if (!datum) {\n            return;\n        }\n        var id = datum.id, itemId = datum.itemId, enabled = datum.enabled;\n        var series = chart.series.find(function (s) { return s.id === id; });\n        if (!series) {\n            return;\n        }\n        event.consume();\n        var newEnabled = enabled;\n        if (toggleSeriesVisible) {\n            newEnabled = !enabled;\n            chart.series.forEach(function (s) {\n                if (s.id === series.id) {\n                    s.toggleSeriesItem(itemId, newEnabled);\n                }\n                else {\n                    s.toggleOtherSeriesItems(series, datum, newEnabled);\n                }\n            });\n        }\n        if (!newEnabled) {\n            highlightManager.updateHighlight(this.id);\n        }\n        else {\n            highlightManager.updateHighlight(this.id, {\n                series: series,\n                itemId: itemId,\n                datum: undefined,\n            });\n        }\n        this.chart.update(ChartUpdateType.PROCESS_DATA, { forceNodeDataRefresh: true });\n        legendItemClick === null || legendItemClick === void 0 ? void 0 : legendItemClick({ type: 'click', enabled: newEnabled, itemId: itemId, seriesId: series.id });\n    };\n    Legend.prototype.checkLegendDoubleClick = function (event) {\n        var _a, _b;\n        var _c = this, legendItemDoubleClick = _c.listeners.legendItemDoubleClick, chart = _c.chart, toggleSeriesVisible = _c.item.toggleSeriesVisible;\n        // Integrated charts do not handle double click behaviour correctly due to multiple instances of the\n        // chart being created. See https://ag-grid.atlassian.net/browse/RTI-1381\n        if (chart.mode === 'integrated') {\n            return;\n        }\n        var datum = this.getDatumForPoint(event.offsetX, event.offsetY);\n        if (!datum) {\n            return;\n        }\n        var id = datum.id, itemId = datum.itemId, seriesId = datum.seriesId;\n        var series = chart.series.find(function (s) { return s.id === id; });\n        if (!series) {\n            return;\n        }\n        event.consume();\n        if (toggleSeriesVisible) {\n            var legendData = chart.series.reduce(function (ls, s) { return __spread$w(ls, s.getLegendData()); }, []);\n            var visibleItemsCount = legendData.filter(function (d) { return d.enabled; }).length;\n            var clickedItem = legendData.find(function (d) { return d.itemId === itemId && d.seriesId === seriesId; });\n            var seriesItemCounts = legendData.reduce(function (acc, d) {\n                var _a;\n                var _b;\n                (_a = acc[_b = d.seriesId]) !== null && _a !== void 0 ? _a : (acc[_b] = 0);\n                acc[d.seriesId]++;\n                return acc;\n            }, {});\n            var seriesItemEnabledCounts = legendData.reduce(function (acc, d) {\n                var _a;\n                var _b;\n                if (!d.enabled)\n                    return acc;\n                (_a = acc[_b = d.seriesId]) !== null && _a !== void 0 ? _a : (acc[_b] = 0);\n                acc[d.seriesId]++;\n                return acc;\n            }, {});\n            var eachSeriesHasSingleItem_1 = Object.values(seriesItemCounts).filter(function (c) { return c > 1; }).length === 0;\n            var singleEnabledInEachSeries = Object.values(seriesItemEnabledCounts).filter(function (count) { return count > 1; }).length === 0;\n            var singleSelectedWasNotClicked_1 = visibleItemsCount === 1 && ((_a = clickedItem === null || clickedItem === void 0 ? void 0 : clickedItem.enabled) !== null && _a !== void 0 ? _a : false);\n            var singleEnabledInEachSeriesWasNotClicked_1 = singleEnabledInEachSeries && ((_b = clickedItem === null || clickedItem === void 0 ? void 0 : clickedItem.enabled) !== null && _b !== void 0 ? _b : false);\n            chart.series.forEach(function (s) {\n                var legendData = s.getLegendData();\n                legendData.forEach(function (d) {\n                    var wasClicked = d.itemId === itemId && d.seriesId === seriesId;\n                    var newEnabled = wasClicked ||\n                        (eachSeriesHasSingleItem_1 && singleSelectedWasNotClicked_1) ||\n                        (!eachSeriesHasSingleItem_1 && singleEnabledInEachSeriesWasNotClicked_1);\n                    s.toggleSeriesItem(d.itemId, newEnabled);\n                });\n                if (s.id !== series.id) {\n                    s.toggleOtherSeriesItems(series, datum, undefined, singleEnabledInEachSeriesWasNotClicked_1);\n                }\n            });\n        }\n        this.chart.update(ChartUpdateType.PROCESS_DATA, { forceNodeDataRefresh: true });\n        legendItemDoubleClick === null || legendItemDoubleClick === void 0 ? void 0 : legendItemDoubleClick({ type: 'dblclick', enabled: true, itemId: itemId, seriesId: series.id });\n    };\n    Legend.prototype.handleLegendMouseMove = function (event) {\n        var _a = this, enabled = _a.enabled, toggleSeriesVisible = _a.item.toggleSeriesVisible, listeners = _a.listeners;\n        if (!enabled) {\n            return;\n        }\n        var legendBBox = this.computeBBox();\n        var pageX = event.pageX, pageY = event.pageY, offsetX = event.offsetX, offsetY = event.offsetY;\n        var pointerInsideLegend = this.group.visible && legendBBox.containsPoint(offsetX, offsetY);\n        if (!pointerInsideLegend) {\n            this.cursorManager.updateCursor(this.id);\n            this.highlightManager.updateHighlight(this.id);\n            this.tooltipManager.removeTooltip(this.id);\n            return;\n        }\n        // Prevent other handlers from consuming this event if it's generated inside the legend\n        // boundaries.\n        event.consume();\n        var datum = this.getDatumForPoint(offsetX, offsetY);\n        var pointerOverLegendDatum = pointerInsideLegend && datum !== undefined;\n        if (!pointerOverLegendDatum) {\n            this.cursorManager.updateCursor(this.id);\n            this.highlightManager.updateHighlight(this.id);\n            return;\n        }\n        var series = datum ? this.chart.series.find(function (series) { return series.id === (datum === null || datum === void 0 ? void 0 : datum.id); }) : undefined;\n        if (datum && this.truncatedItems.has(datum.itemId || datum.id)) {\n            this.tooltipManager.updateTooltip(this.id, { pageX: pageX, pageY: pageY, offsetX: offsetX, offsetY: offsetY, event: event }, toTooltipHtml$1({ content: datum.label.text }));\n        }\n        else {\n            this.tooltipManager.removeTooltip(this.id);\n        }\n        if (toggleSeriesVisible || listeners.legendItemClick != null) {\n            this.cursorManager.updateCursor(this.id, 'pointer');\n        }\n        if ((datum === null || datum === void 0 ? void 0 : datum.enabled) && series) {\n            this.highlightManager.updateHighlight(this.id, {\n                series: series,\n                itemId: datum === null || datum === void 0 ? void 0 : datum.itemId,\n                datum: undefined,\n            });\n        }\n        else {\n            this.highlightManager.updateHighlight(this.id);\n        }\n    };\n    Legend.prototype.positionLegend = function (shrinkRect) {\n        var _this = this;\n        var newShrinkRect = shrinkRect.clone();\n        if (!this.enabled || !this.data.length) {\n            return { shrinkRect: newShrinkRect };\n        }\n        var _a = __read$U(this.calculateLegendDimensions(shrinkRect), 2), legendWidth = _a[0], legendHeight = _a[1];\n        var translationX = 0;\n        var translationY = 0;\n        this.translationX = 0;\n        this.translationY = 0;\n        this.performLayout(legendWidth, legendHeight);\n        var legendBBox = this.computePagedBBox();\n        var calculateTranslationPerpendicularDimension = function () {\n            switch (_this.position) {\n                case 'top':\n                    return 0;\n                case 'bottom':\n                    return shrinkRect.height - legendBBox.height;\n                case 'left':\n                    return 0;\n                case 'right':\n                default:\n                    return shrinkRect.width - legendBBox.width;\n            }\n        };\n        if (this.visible) {\n            switch (this.position) {\n                case 'top':\n                case 'bottom':\n                    translationX = (shrinkRect.width - legendBBox.width) / 2;\n                    translationY = calculateTranslationPerpendicularDimension();\n                    newShrinkRect.shrink(legendBBox.height, this.position);\n                    break;\n                case 'left':\n                case 'right':\n                default:\n                    translationX = calculateTranslationPerpendicularDimension();\n                    translationY = (shrinkRect.height - legendBBox.height) / 2;\n                    newShrinkRect.shrink(legendBBox.width, this.position);\n            }\n            // Round off for pixel grid alignment to work properly.\n            this.translationX = Math.floor(-legendBBox.x + shrinkRect.x + translationX);\n            this.translationY = Math.floor(-legendBBox.y + shrinkRect.y + translationY);\n        }\n        if (this.visible && this.enabled && this.data.length) {\n            var legendPadding = this.spacing;\n            newShrinkRect.shrink(legendPadding, this.position);\n            var legendPositionedBBox = legendBBox.clone();\n            legendPositionedBBox.x += this.translationX;\n            legendPositionedBBox.y += this.translationY;\n            this.tooltipManager.updateExclusiveRect(this.id, legendPositionedBBox);\n        }\n        else {\n            this.tooltipManager.updateExclusiveRect(this.id);\n        }\n        return { shrinkRect: newShrinkRect };\n    };\n    Legend.prototype.calculateLegendDimensions = function (shrinkRect) {\n        var width = shrinkRect.width, height = shrinkRect.height;\n        var aspectRatio = width / height;\n        var maxCoefficient = 0.5;\n        var minHeightCoefficient = 0.2;\n        var minWidthCoefficient = 0.25;\n        var legendWidth = 0;\n        var legendHeight = 0;\n        switch (this.position) {\n            case 'top':\n            case 'bottom':\n                // A horizontal legend should take maximum between 20 to 50 percent of the chart height if height is larger than width\n                // and maximum 20 percent of the chart height if height is smaller than width.\n                var heightCoefficient = aspectRatio < 1\n                    ? Math.min(maxCoefficient, minHeightCoefficient * (1 / aspectRatio))\n                    : minHeightCoefficient;\n                legendWidth = this.maxWidth ? Math.min(this.maxWidth, width) : width;\n                legendHeight = this.maxHeight\n                    ? Math.min(this.maxHeight, height)\n                    : Math.round(height * heightCoefficient);\n                break;\n            case 'left':\n            case 'right':\n            default:\n                // A vertical legend should take maximum between 25 to 50 percent of the chart width if width is larger than height\n                // and maximum 25 percent of the chart width if width is smaller than height.\n                var widthCoefficient = aspectRatio > 1 ? Math.min(maxCoefficient, minWidthCoefficient * aspectRatio) : minWidthCoefficient;\n                legendWidth = this.maxWidth ? Math.min(this.maxWidth, width) : Math.round(width * widthCoefficient);\n                legendHeight = this.maxHeight ? Math.min(this.maxHeight, height) : height;\n        }\n        return [legendWidth, legendHeight];\n    };\n    Legend.className = 'Legend';\n    __decorate$1K([\n        Validate(BOOLEAN)\n    ], Legend.prototype, \"_enabled\", void 0);\n    __decorate$1K([\n        Validate(POSITION)\n    ], Legend.prototype, \"position\", void 0);\n    __decorate$1K([\n        Validate(OPT_NUMBER(0))\n    ], Legend.prototype, \"maxWidth\", void 0);\n    __decorate$1K([\n        Validate(OPT_NUMBER(0))\n    ], Legend.prototype, \"maxHeight\", void 0);\n    __decorate$1K([\n        Validate(OPT_BOOLEAN)\n    ], Legend.prototype, \"reverseOrder\", void 0);\n    __decorate$1K([\n        Validate(OPT_ORIENTATION)\n    ], Legend.prototype, \"orientation\", void 0);\n    __decorate$1K([\n        Validate(NUMBER(0))\n    ], Legend.prototype, \"spacing\", void 0);\n    return Legend;\n}());\n\nvar __values$q = (undefined && undefined.__values) || function(o) {\n    var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n    if (m) return m.call(o);\n    if (o && typeof o.length === \"number\") return {\n        next: function () {\n            if (o && i >= o.length) o = void 0;\n            return { value: o && o[i++], done: !o };\n        }\n    };\n    throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nvar SizeMonitor = /** @class */ (function () {\n    function SizeMonitor() {\n    }\n    SizeMonitor.init = function () {\n        var _this = this;\n        var NativeResizeObserver = window.ResizeObserver;\n        if (NativeResizeObserver) {\n            this.resizeObserver = new NativeResizeObserver(function (entries) {\n                var e_1, _a;\n                try {\n                    for (var entries_1 = __values$q(entries), entries_1_1 = entries_1.next(); !entries_1_1.done; entries_1_1 = entries_1.next()) {\n                        var entry = entries_1_1.value;\n                        var _b = entry.contentRect, width = _b.width, height = _b.height;\n                        _this.checkSize(_this.elements.get(entry.target), entry.target, width, height);\n                    }\n                }\n                catch (e_1_1) { e_1 = { error: e_1_1 }; }\n                finally {\n                    try {\n                        if (entries_1_1 && !entries_1_1.done && (_a = entries_1.return)) _a.call(entries_1);\n                    }\n                    finally { if (e_1) throw e_1.error; }\n                }\n            });\n        }\n        else {\n            // polyfill (more reliable even in browsers that support ResizeObserver)\n            var step = function () {\n                _this.elements.forEach(function (entry, element) {\n                    _this.checkClientSize(element, entry);\n                });\n            };\n            window.setInterval(step, 100);\n        }\n        this.ready = true;\n    };\n    SizeMonitor.checkSize = function (entry, element, width, height) {\n        if (entry) {\n            if (!entry.size || width !== entry.size.width || height !== entry.size.height) {\n                entry.size = { width: width, height: height };\n                entry.cb(entry.size, element);\n            }\n        }\n    };\n    // Only a single callback is supported.\n    SizeMonitor.observe = function (element, cb) {\n        if (!this.ready) {\n            this.init();\n        }\n        this.unobserve(element);\n        if (this.resizeObserver) {\n            this.resizeObserver.observe(element);\n        }\n        this.elements.set(element, { cb: cb });\n        // Ensure first size callback happens synchronously.\n        this.checkClientSize(element, { cb: cb });\n    };\n    SizeMonitor.unobserve = function (element) {\n        if (this.resizeObserver) {\n            this.resizeObserver.unobserve(element);\n        }\n        this.elements.delete(element);\n    };\n    SizeMonitor.checkClientSize = function (element, entry) {\n        var width = element.clientWidth ? element.clientWidth : 0;\n        var height = element.clientHeight ? element.clientHeight : 0;\n        this.checkSize(entry, element, width, height);\n    };\n    SizeMonitor.elements = new Map();\n    SizeMonitor.ready = false;\n    return SizeMonitor;\n}());\n\nfunction circleRectOverlap(c, x, y, w, h) {\n    // Find closest horizontal and vertical edges.\n    var edgeX = c.x < x ? x : c.x > x + w ? x + w : c.x;\n    var edgeY = c.y < y ? y : c.y > y + h ? y + h : c.y;\n    // Find distance to closest edges.\n    var dx = c.x - edgeX;\n    var dy = c.y - edgeY;\n    var d = Math.sqrt(dx * dx + dy * dy);\n    return d <= c.size * 0.5;\n}\nfunction rectRectOverlap(r1, x2, y2, w2, h2) {\n    var xOverlap = r1.x + r1.width > x2 && r1.x < x2 + w2;\n    var yOverlap = r1.y + r1.height > y2 && r1.y < y2 + h2;\n    return xOverlap && yOverlap;\n}\nfunction rectContainsRect(r1, r2x, r2y, r2w, r2h) {\n    return r2x + r2w < r1.x + r1.width && r2x > r1.x && r2y > r1.y && r2y + r2h < r1.y + r1.height;\n}\nfunction isPointLabelDatum(x) {\n    return x != null && typeof x.point === 'object' && typeof x.label === 'object';\n}\n/**\n * @param data Points and labels for one or more series. The order of series determines label placement precedence.\n * @param bounds Bounds to fit the labels into. If a label can't be fully contained, it doesn't fit.\n * @returns Placed labels for the given series (in the given order).\n */\nfunction placeLabels(data, bounds, padding) {\n    if (padding === void 0) { padding = 5; }\n    var result = [];\n    data = data.map(function (d) { return d.slice().sort(function (a, b) { return b.point.size - a.point.size; }); });\n    for (var j = 0; j < data.length; j++) {\n        var labels = (result[j] = []);\n        var datum = data[j];\n        if (!(datum && datum.length && datum[0].label)) {\n            continue;\n        }\n        var _loop_1 = function (i, ln) {\n            var d = datum[i];\n            var l = d.label;\n            var r = d.point.size * 0.5;\n            var x = d.point.x - l.width * 0.5;\n            var y = d.point.y - r - l.height - padding;\n            var width = l.width, height = l.height;\n            var withinBounds = !bounds || rectContainsRect(bounds, x, y, width, height);\n            if (!withinBounds) {\n                return \"continue\";\n            }\n            var overlapPoints = data.some(function (datum) {\n                return datum.some(function (d) { return circleRectOverlap(d.point, x, y, width, height); });\n            });\n            if (overlapPoints) {\n                return \"continue\";\n            }\n            var overlapLabels = result.some(function (labels) { return labels.some(function (l) { return rectRectOverlap(l, x, y, width, height); }); });\n            if (overlapLabels) {\n                return \"continue\";\n            }\n            labels.push({\n                index: i,\n                text: l.text,\n                x: x,\n                y: y,\n                width: width,\n                height: height,\n                datum: d,\n            });\n        };\n        for (var i = 0, ln = datum.length; i < ln; i++) {\n            _loop_1(i, ln);\n        }\n    }\n    return result;\n}\nfunction axisLabelsOverlap(data, padding) {\n    var result = [];\n    var _loop_2 = function (i) {\n        var datum = data[i];\n        var _a = datum.point, x = _a.x, y = _a.y, text = datum.label.text;\n        var _b = datum.label, width = _b.width, height = _b.height;\n        width += padding !== null && padding !== void 0 ? padding : 0;\n        height += padding !== null && padding !== void 0 ? padding : 0;\n        var overlapLabels = result.some(function (l) {\n            var overlap = rectRectOverlap(l, x, y, width, height);\n            return overlap;\n        });\n        if (overlapLabels) {\n            return { value: true };\n        }\n        result.push({\n            index: i,\n            text: text,\n            x: x,\n            y: y,\n            width: width,\n            height: height,\n            datum: datum,\n        });\n    };\n    for (var i = 0; i < data.length; i++) {\n        var state_1 = _loop_2(i);\n        if (typeof state_1 === \"object\")\n            return state_1.value;\n    }\n    return false;\n}\n\nvar __awaiter$e = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {\n    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n    return new (P || (P = Promise))(function (resolve, reject) {\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\n    });\n};\nvar __generator$e = (undefined && undefined.__generator) || function (thisArg, body) {\n    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n    return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n    function verb(n) { return function (v) { return step([n, v]); }; }\n    function step(op) {\n        if (f) throw new TypeError(\"Generator is already executing.\");\n        while (_) try {\n            if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n            if (y = 0, t) op = [op[0] & 2, t.value];\n            switch (op[0]) {\n                case 0: case 1: t = op; break;\n                case 4: _.label++; return { value: op[1], done: false };\n                case 5: _.label++; y = op[1]; op = [0]; continue;\n                case 7: op = _.ops.pop(); _.trys.pop(); continue;\n                default:\n                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n                    if (t[2]) _.ops.pop();\n                    _.trys.pop(); continue;\n            }\n            op = body.call(thisArg, _);\n        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n    }\n};\n/**\n * Wrap a function in debouncing trigger function. A requestAnimationFrame() is scheduled\n * after the first schedule() call, and subsequent schedule() calls will be ignored until the\n * animation callback executes.\n */\nfunction debouncedAnimationFrame(cb) {\n    return buildScheduler(function (cb) { return requestAnimationFrame(cb); }, cb);\n}\nfunction debouncedCallback(cb) {\n    return buildScheduler(function (cb) { return setTimeout(cb, 0); }, cb);\n}\nfunction buildScheduler(scheduleFn, cb) {\n    var scheduleCount = 0;\n    var promiseRunning = false;\n    var awaitingPromise;\n    var awaitingDone;\n    var busy = function () {\n        return promiseRunning;\n    };\n    var done = function () {\n        promiseRunning = false;\n        awaitingDone === null || awaitingDone === void 0 ? void 0 : awaitingDone();\n        awaitingDone = undefined;\n        awaitingPromise = undefined;\n        if (scheduleCount > 0) {\n            scheduleFn(scheduleCb);\n        }\n    };\n    var scheduleCb = function () {\n        var count = scheduleCount;\n        scheduleCount = 0;\n        promiseRunning = true;\n        var maybePromise = cb({ count: count });\n        if (!maybePromise) {\n            done();\n            return;\n        }\n        maybePromise.then(done).catch(done);\n    };\n    return {\n        schedule: function () {\n            if (scheduleCount === 0 && !busy()) {\n                scheduleFn(scheduleCb);\n            }\n            scheduleCount++;\n        },\n        await: function () {\n            return __awaiter$e(this, void 0, void 0, function () {\n                return __generator$e(this, function (_a) {\n                    switch (_a.label) {\n                        case 0:\n                            if (!busy()) {\n                                return [2 /*return*/];\n                            }\n                            if (!awaitingPromise) {\n                                awaitingPromise = new Promise(function (resolve) {\n                                    awaitingDone = resolve;\n                                });\n                            }\n                            _a.label = 1;\n                        case 1:\n                            if (!busy()) return [3 /*break*/, 3];\n                            return [4 /*yield*/, awaitingPromise];\n                        case 2:\n                            _a.sent();\n                            return [3 /*break*/, 1];\n                        case 3: return [2 /*return*/];\n                    }\n                });\n            });\n        },\n    };\n}\n\nvar __extends$2r = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$1J = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar MARKER_SHAPES = ['circle', 'cross', 'diamond', 'heart', 'plus', 'square', 'triangle'];\nvar MARKER_SHAPE = predicateWithMessage(function (v) { return MARKER_SHAPES.includes(v) || Object.getPrototypeOf(v) === Marker; }, \"expecting a marker shape keyword such as 'circle', 'diamond' or 'square' or an object extending the Marker class\");\nvar SeriesMarker = /** @class */ (function (_super) {\n    __extends$2r(SeriesMarker, _super);\n    function SeriesMarker() {\n        var _this = _super !== null && _super.apply(this, arguments) || this;\n        _this.enabled = true;\n        /**\n         * One of the predefined marker names, or a marker constructor function (for user-defined markers).\n         * A series will create one marker instance per data point.\n         */\n        _this.shape = Circle;\n        _this.size = 6;\n        /**\n         * In case a series has the `sizeKey` set, the `sizeKey` values along with the `size` and `maxSize` configs\n         * will be used to determine the size of the marker. All values will be mapped to a marker size\n         * within the `[size, maxSize]` range, where the largest values will correspond to the `maxSize`\n         * and the lowest to the `size`.\n         */\n        _this.maxSize = 30;\n        _this.domain = undefined;\n        _this.fill = undefined;\n        _this.stroke = undefined;\n        _this.strokeWidth = 1;\n        _this.fillOpacity = undefined;\n        _this.strokeOpacity = undefined;\n        return _this;\n    }\n    __decorate$1J([\n        Validate(BOOLEAN),\n        SceneChangeDetection({ redraw: RedrawType.MAJOR })\n    ], SeriesMarker.prototype, \"enabled\", void 0);\n    __decorate$1J([\n        Validate(MARKER_SHAPE),\n        SceneChangeDetection({ redraw: RedrawType.MAJOR })\n    ], SeriesMarker.prototype, \"shape\", void 0);\n    __decorate$1J([\n        Validate(NUMBER(0)),\n        SceneChangeDetection({ redraw: RedrawType.MAJOR })\n    ], SeriesMarker.prototype, \"size\", void 0);\n    __decorate$1J([\n        Validate(NUMBER(0)),\n        SceneChangeDetection({ redraw: RedrawType.MAJOR })\n    ], SeriesMarker.prototype, \"maxSize\", void 0);\n    __decorate$1J([\n        Validate(OPT_NUMBER_ARRAY),\n        SceneChangeDetection({ redraw: RedrawType.MAJOR })\n    ], SeriesMarker.prototype, \"domain\", void 0);\n    __decorate$1J([\n        Validate(OPT_COLOR_STRING),\n        SceneChangeDetection({ redraw: RedrawType.MAJOR })\n    ], SeriesMarker.prototype, \"fill\", void 0);\n    __decorate$1J([\n        Validate(OPT_COLOR_STRING),\n        SceneChangeDetection({ redraw: RedrawType.MAJOR })\n    ], SeriesMarker.prototype, \"stroke\", void 0);\n    __decorate$1J([\n        Validate(OPT_NUMBER(0)),\n        SceneChangeDetection({ redraw: RedrawType.MAJOR })\n    ], SeriesMarker.prototype, \"strokeWidth\", void 0);\n    __decorate$1J([\n        Validate(OPT_NUMBER(0, 1)),\n        SceneChangeDetection({ redraw: RedrawType.MAJOR })\n    ], SeriesMarker.prototype, \"fillOpacity\", void 0);\n    __decorate$1J([\n        Validate(OPT_NUMBER(0, 1)),\n        SceneChangeDetection({ redraw: RedrawType.MAJOR })\n    ], SeriesMarker.prototype, \"strokeOpacity\", void 0);\n    return SeriesMarker;\n}(ChangeDetectable));\n\nvar __read$T = (undefined && undefined.__read) || function (o, n) {\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n    if (!m) return o;\n    var i = m.call(o), r, ar = [], e;\n    try {\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n    }\n    catch (error) { e = { error: error }; }\n    finally {\n        try {\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\n        }\n        finally { if (e) throw e.error; }\n    }\n    return ar;\n};\nvar ContinuousScale = /** @class */ (function () {\n    function ContinuousScale(domain, range) {\n        this.domain = domain;\n        this.range = range;\n        this.nice = false;\n        this.tickCount = ContinuousScale.defaultTickCount;\n        this.minTickCount = 0;\n        this.maxTickCount = Infinity;\n        this.niceDomain = null;\n        this.strictClampByDefault = false;\n        this.cache = null;\n        this.cacheProps = ['domain', 'range', 'nice', 'tickCount', 'minTickCount', 'maxTickCount'];\n    }\n    ContinuousScale.prototype.transform = function (x) {\n        return x;\n    };\n    ContinuousScale.prototype.transformInvert = function (x) {\n        return x;\n    };\n    ContinuousScale.prototype.fromDomain = function (d) {\n        if (typeof d === 'number') {\n            return d;\n        }\n        else if (d instanceof Date) {\n            return d.getTime();\n        }\n        return NaN;\n    };\n    ContinuousScale.prototype.getDomain = function () {\n        if (this.nice) {\n            this.refresh();\n            if (this.niceDomain) {\n                return this.niceDomain;\n            }\n        }\n        return this.domain;\n    };\n    ContinuousScale.prototype.convert = function (x, params) {\n        var _this = this;\n        var _a;\n        if (!this.domain || this.domain.length < 2) {\n            return NaN;\n        }\n        this.refresh();\n        var strict = (_a = params === null || params === void 0 ? void 0 : params.strict) !== null && _a !== void 0 ? _a : this.strictClampByDefault;\n        var domain = this.getDomain().map(function (d) { return _this.transform(d); });\n        var _b = __read$T(domain, 2), d0 = _b[0], d1 = _b[1];\n        var range = this.range;\n        var _c = __read$T(range, 2), r0 = _c[0], r1 = _c[1];\n        x = this.transform(x);\n        if (x < d0) {\n            return strict ? NaN : r0;\n        }\n        else if (x > d1) {\n            return strict ? NaN : r1;\n        }\n        if (d0 === d1) {\n            return (r0 + r1) / 2;\n        }\n        else if (x === d0) {\n            return r0;\n        }\n        else if (x === d1) {\n            return r1;\n        }\n        return (r0 + ((this.fromDomain(x) - this.fromDomain(d0)) / (this.fromDomain(d1) - this.fromDomain(d0))) * (r1 - r0));\n    };\n    ContinuousScale.prototype.invert = function (x) {\n        var _this = this;\n        this.refresh();\n        var domain = this.getDomain().map(function (d) { return _this.transform(d); });\n        var _a = __read$T(domain, 2), d0 = _a[0], d1 = _a[1];\n        var range = this.range;\n        var _b = __read$T(range, 2), r0 = _b[0], r1 = _b[1];\n        var isReversed = r0 > r1;\n        var rMin = isReversed ? r1 : r0;\n        var rMax = isReversed ? r0 : r1;\n        var d;\n        if (x < rMin) {\n            return isReversed ? d1 : d0;\n        }\n        else if (x > rMax) {\n            return isReversed ? d0 : d1;\n        }\n        else if (r0 === r1) {\n            d = this.toDomain((this.fromDomain(d0) + this.fromDomain(d1)) / 2);\n        }\n        else {\n            d = this.toDomain(this.fromDomain(d0) + ((x - r0) / (r1 - r0)) * (this.fromDomain(d1) - this.fromDomain(d0)));\n        }\n        return this.transformInvert(d);\n    };\n    ContinuousScale.prototype.didChange = function () {\n        var _this = this;\n        var cache = this.cache;\n        var didChange = !cache || this.cacheProps.some(function (p) { return _this[p] !== cache[p]; });\n        if (didChange) {\n            this.cache = {};\n            this.cacheProps.forEach(function (p) { return (_this.cache[p] = _this[p]); });\n            return true;\n        }\n        return false;\n    };\n    ContinuousScale.prototype.refresh = function () {\n        if (this.didChange()) {\n            this.update();\n        }\n    };\n    ContinuousScale.prototype.isDenseInterval = function (_a) {\n        var start = _a.start, stop = _a.stop, interval = _a.interval, count = _a.count;\n        var range = this.range;\n        var domain = stop - start;\n        var min = Math.min(range[0], range[1]);\n        var max = Math.max(range[0], range[1]);\n        var availableRange = max - min;\n        var step = typeof interval === 'number' ? interval : 1;\n        count !== null && count !== void 0 ? count : (count = domain / step);\n        if (count >= availableRange) {\n            Logger.warn(\"the configured tick interval, \" + JSON.stringify(interval) + \", results in more than 1 tick per pixel, ignoring. Supply a larger tick interval or omit this configuration.\");\n            return true;\n        }\n        return false;\n    };\n    ContinuousScale.defaultTickCount = 5;\n    ContinuousScale.defaultMaxTickCount = 6;\n    return ContinuousScale;\n}());\n\nvar __read$S = (undefined && undefined.__read) || function (o, n) {\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n    if (!m) return o;\n    var i = m.call(o), r, ar = [], e;\n    try {\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n    }\n    catch (error) { e = { error: error }; }\n    finally {\n        try {\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\n        }\n        finally { if (e) throw e.error; }\n    }\n    return ar;\n};\nfunction clamp(x, min, max) {\n    return Math.max(min, Math.min(max, x));\n}\n/**\n * Maps a discrete domain to a continuous numeric range.\n */\nvar BandScale$5 = /** @class */ (function () {\n    function BandScale() {\n        this.type = 'band';\n        this.cache = null;\n        this.cacheProps = ['_domain', 'range', '_paddingInner', '_paddingOuter', 'round', 'interval'];\n        /**\n         * Maps datum to its index in the {@link domain} array.\n         * Used to check for duplicate datums (not allowed).\n         */\n        this.index = new Map();\n        /**\n         * The output range values for datum at each index.\n         */\n        this.ordinalRange = [];\n        /**\n         * Contains unique datums only. Since `{}` is used in place of `Map`\n         * for IE11 compatibility, the datums are converted `toString` before\n         * the uniqueness check.\n         */\n        this._domain = [];\n        this.range = [0, 1];\n        this._bandwidth = 1;\n        this._rawBandwidth = 1;\n        /**\n         * The ratio of the range that is reserved for space between bands.\n         */\n        this._paddingInner = 0;\n        /**\n         * The ratio of the range that is reserved for space before the first\n         * and after the last band.\n         */\n        this._paddingOuter = 0;\n        this.round = false;\n    }\n    BandScale.prototype.didChange = function () {\n        var _this = this;\n        var cache = this.cache;\n        var didChange = !cache || this.cacheProps.some(function (p) { return _this[p] !== cache[p]; });\n        if (didChange) {\n            this.cache = {};\n            this.cacheProps.forEach(function (p) { return (_this.cache[p] = _this[p]); });\n            return true;\n        }\n        return false;\n    };\n    BandScale.prototype.refresh = function () {\n        if (this.didChange()) {\n            this.update();\n        }\n    };\n    Object.defineProperty(BandScale.prototype, \"domain\", {\n        get: function () {\n            return this._domain;\n        },\n        set: function (values) {\n            var domain = [];\n            this.index = new Map();\n            var index = this.index;\n            // In case one wants to have duplicate domain values, for example, two 'Italy' categories,\n            // one should use objects rather than strings for domain values like so:\n            // { toString: () => 'Italy' }\n            // { toString: () => 'Italy' }\n            values.forEach(function (value) {\n                if (index.get(value) === undefined) {\n                    index.set(value, domain.push(value) - 1);\n                }\n            });\n            this._domain = domain;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    BandScale.prototype.ticks = function () {\n        this.refresh();\n        var _a = this.interval, interval = _a === void 0 ? 1 : _a;\n        var step = Math.abs(Math.round(interval));\n        return this._domain.filter(function (_, i) { return i % step === 0; });\n    };\n    BandScale.prototype.convert = function (d) {\n        this.refresh();\n        var i = this.index.get(d);\n        if (i === undefined) {\n            return NaN;\n        }\n        var r = this.ordinalRange[i];\n        if (r === undefined) {\n            return NaN;\n        }\n        return r;\n    };\n    BandScale.prototype.invert = function (position) {\n        this.refresh();\n        var index = this.ordinalRange.findIndex(function (p) { return p === position; });\n        return this.domain[index];\n    };\n    Object.defineProperty(BandScale.prototype, \"bandwidth\", {\n        get: function () {\n            this.refresh();\n            return this._bandwidth;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(BandScale.prototype, \"rawBandwidth\", {\n        get: function () {\n            this.refresh();\n            return this._rawBandwidth;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(BandScale.prototype, \"padding\", {\n        get: function () {\n            return this._paddingInner;\n        },\n        set: function (value) {\n            value = clamp(value, 0, 1);\n            this._paddingInner = value;\n            this._paddingOuter = value;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(BandScale.prototype, \"paddingInner\", {\n        get: function () {\n            return this._paddingInner;\n        },\n        set: function (value) {\n            this._paddingInner = clamp(value, 0, 1);\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(BandScale.prototype, \"paddingOuter\", {\n        get: function () {\n            return this._paddingOuter;\n        },\n        set: function (value) {\n            this._paddingOuter = clamp(value, 0, 1);\n        },\n        enumerable: false,\n        configurable: true\n    });\n    BandScale.prototype.update = function () {\n        var count = this._domain.length;\n        if (count === 0) {\n            return;\n        }\n        var round = this.round;\n        var paddingInner = this._paddingInner;\n        var paddingOuter = this._paddingOuter;\n        var _a = __read$S(this.range, 2), r0 = _a[0], r1 = _a[1];\n        var width = r1 - r0;\n        var rawStep = width / Math.max(1, count + 2 * paddingOuter - paddingInner);\n        var step = round ? Math.floor(rawStep) : rawStep;\n        var fullBandWidth = step * (count - paddingInner);\n        var x0 = r0 + (width - fullBandWidth) / 2;\n        var start = round ? Math.round(x0) : x0;\n        var bw = step * (1 - paddingInner);\n        var bandwidth = round ? Math.round(bw) : bw;\n        var rawBandwidth = rawStep * (1 - paddingInner);\n        var values = [];\n        for (var i = 0; i < count; i++) {\n            values.push(start + step * i);\n        }\n        this._bandwidth = bandwidth;\n        this._rawBandwidth = rawBandwidth;\n        this.ordinalRange = values;\n    };\n    return BandScale;\n}());\n\nvar __extends$2q = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$1I = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar Line = /** @class */ (function (_super) {\n    __extends$2q(Line, _super);\n    function Line() {\n        var _this = _super.call(this) || this;\n        _this.x1 = 0;\n        _this.y1 = 0;\n        _this.x2 = 0;\n        _this.y2 = 0;\n        _this.restoreOwnStyles();\n        return _this;\n    }\n    Line.prototype.computeBBox = function () {\n        return new BBox(this.x1, this.y1, this.x2 - this.x1, this.y2 - this.y1);\n    };\n    Line.prototype.isPointInPath = function (_x, _y) {\n        return false;\n    };\n    Line.prototype.render = function (renderCtx) {\n        var _a;\n        var ctx = renderCtx.ctx, forceRender = renderCtx.forceRender, stats = renderCtx.stats;\n        if (this.dirty === RedrawType.NONE && !forceRender) {\n            if (stats)\n                stats.nodesSkipped += this.nodeCount.count;\n            return;\n        }\n        this.computeTransformMatrix();\n        this.matrix.toContext(ctx);\n        var x1 = this.x1;\n        var y1 = this.y1;\n        var x2 = this.x2;\n        var y2 = this.y2;\n        // Align to the pixel grid if the line is strictly vertical\n        // or horizontal (but not both, i.e. a dot).\n        if (x1 === x2) {\n            var x = Math.round(x1) + (Math.floor(this.strokeWidth) % 2) / 2;\n            x1 = x;\n            x2 = x;\n        }\n        else if (y1 === y2) {\n            var y = Math.round(y1) + (Math.floor(this.strokeWidth) % 2) / 2;\n            y1 = y;\n            y2 = y;\n        }\n        ctx.beginPath();\n        ctx.moveTo(x1, y1);\n        ctx.lineTo(x2, y2);\n        this.fillStroke(ctx);\n        (_a = this.fillShadow) === null || _a === void 0 ? void 0 : _a.markClean();\n        _super.prototype.render.call(this, renderCtx);\n    };\n    Line.className = 'Line';\n    Line.defaultStyles = Object.assign({}, Shape.defaultStyles, {\n        fill: undefined,\n        strokeWidth: 1,\n    });\n    __decorate$1I([\n        SceneChangeDetection({ redraw: RedrawType.MAJOR })\n    ], Line.prototype, \"x1\", void 0);\n    __decorate$1I([\n        SceneChangeDetection({ redraw: RedrawType.MAJOR })\n    ], Line.prototype, \"y1\", void 0);\n    __decorate$1I([\n        SceneChangeDetection({ redraw: RedrawType.MAJOR })\n    ], Line.prototype, \"x2\", void 0);\n    __decorate$1I([\n        SceneChangeDetection({ redraw: RedrawType.MAJOR })\n    ], Line.prototype, \"y2\", void 0);\n    return Line;\n}(Shape));\n\nfunction isEqual$2(a, b, epsilon) {\n    if (epsilon === void 0) { epsilon = 1e-10; }\n    return Math.abs(a - b) < epsilon;\n}\n/**\n * `Number.toFixed(n)` always formats a number so that it has `n` digits after the decimal point.\n * For example, `Number(0.00003427).toFixed(2)` returns `0.00`.\n * That's not very helpful, because all the meaningful information is lost.\n * In this case we would want the formatted value to have at least two significant digits: `0.000034`,\n * not two fraction digits.\n * @param value\n * @param fractionOrSignificantDigits\n */\nfunction toFixed(value, fractionOrSignificantDigits) {\n    if (fractionOrSignificantDigits === void 0) { fractionOrSignificantDigits = 2; }\n    var power = Math.floor(Math.log(Math.abs(value)) / Math.LN10);\n    if (power >= 0 || !isFinite(power)) {\n        return value.toFixed(fractionOrSignificantDigits); // fraction digits\n    }\n    return value.toFixed(Math.abs(power) - 1 + fractionOrSignificantDigits); // significant digits\n}\n/**\n * Returns the mathematically correct n modulus of m. For context, the JS % operator is remainder\n * NOT modulus, which is why this is needed.\n */\nfunction mod(n, m) {\n    if (n >= 0) {\n        return Math.floor(n % m);\n    }\n    return Math.floor((n % m) + m);\n}\n\nvar __extends$2p = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$1H = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar ArcType;\n(function (ArcType) {\n    ArcType[ArcType[\"Open\"] = 0] = \"Open\";\n    ArcType[ArcType[\"Chord\"] = 1] = \"Chord\";\n    ArcType[ArcType[\"Round\"] = 2] = \"Round\";\n})(ArcType || (ArcType = {}));\n/**\n * Elliptical arc node.\n */\nvar Arc = /** @class */ (function (_super) {\n    __extends$2p(Arc, _super);\n    function Arc() {\n        var _this = _super.call(this) || this;\n        _this.centerX = 0;\n        _this.centerY = 0;\n        _this.radius = 10;\n        _this.startAngle = 0;\n        _this.endAngle = Math.PI * 2;\n        _this.counterClockwise = false;\n        /**\n         * The type of arc to render:\n         * - {@link ArcType.Open} - end points of the arc segment are not connected (default)\n         * - {@link ArcType.Chord} - end points of the arc segment are connected by a line segment\n         * - {@link ArcType.Round} - each of the end points of the arc segment are connected\n         *                           to the center of the arc\n         * Arcs with {@link ArcType.Open} do not support hit testing, even if they have their\n         * {@link Shape.fillStyle} set, because they are not closed paths. Hit testing support\n         * would require using two paths - one for rendering, another for hit testing - and there\n         * doesn't seem to be a compelling reason to do that, when one can just use {@link ArcType.Chord}\n         * to create a closed path.\n         */\n        _this.type = ArcType.Open;\n        _this.restoreOwnStyles();\n        return _this;\n    }\n    Object.defineProperty(Arc.prototype, \"fullPie\", {\n        get: function () {\n            return isEqual$2(normalizeAngle360(this.startAngle), normalizeAngle360(this.endAngle));\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Arc.prototype.updatePath = function () {\n        var path = this.path;\n        path.clear(); // No need to recreate the Path, can simply clear the existing one.\n        path.arc(this.centerX, this.centerY, this.radius, this.startAngle, this.endAngle, this.counterClockwise);\n        if (this.type === ArcType.Chord) {\n            path.closePath();\n        }\n        else if (this.type === ArcType.Round && !this.fullPie) {\n            path.lineTo(this.centerX, this.centerY);\n            path.closePath();\n        }\n    };\n    Arc.prototype.computeBBox = function () {\n        // Only works with full arcs (circles) and untransformed ellipses.\n        return new BBox(this.centerX - this.radius, this.centerY - this.radius, this.radius * 2, this.radius * 2);\n    };\n    Arc.prototype.isPointInPath = function (x, y) {\n        var point = this.transformPoint(x, y);\n        var bbox = this.computeBBox();\n        return (this.type !== ArcType.Open &&\n            bbox.containsPoint(point.x, point.y) &&\n            this.path.isPointInPath(point.x, point.y));\n    };\n    Arc.className = 'Arc';\n    Arc.defaultStyles = Object.assign({}, Shape.defaultStyles, {\n        lineWidth: 1,\n        fillStyle: null,\n    });\n    __decorate$1H([\n        ScenePathChangeDetection()\n    ], Arc.prototype, \"centerX\", void 0);\n    __decorate$1H([\n        ScenePathChangeDetection()\n    ], Arc.prototype, \"centerY\", void 0);\n    __decorate$1H([\n        ScenePathChangeDetection()\n    ], Arc.prototype, \"radius\", void 0);\n    __decorate$1H([\n        ScenePathChangeDetection()\n    ], Arc.prototype, \"startAngle\", void 0);\n    __decorate$1H([\n        ScenePathChangeDetection()\n    ], Arc.prototype, \"endAngle\", void 0);\n    __decorate$1H([\n        ScenePathChangeDetection()\n    ], Arc.prototype, \"counterClockwise\", void 0);\n    __decorate$1H([\n        ScenePathChangeDetection()\n    ], Arc.prototype, \"type\", void 0);\n    return Arc;\n}(Path));\n\nvar __decorate$1G = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar Caption = /** @class */ (function () {\n    function Caption() {\n        this.node = new Text();\n        this.enabled = false;\n        this.text = '';\n        this.fontSize = 10;\n        this.fontFamily = 'sans-serif';\n        this.spacing = Caption.PADDING;\n        this._lineHeight = undefined;\n        var node = this.node;\n        node.textAlign = 'center';\n        node.pointerEvents = PointerEvents.None;\n    }\n    Object.defineProperty(Caption.prototype, \"lineHeight\", {\n        get: function () {\n            return this._lineHeight;\n        },\n        set: function (value) {\n            this._lineHeight = value;\n            this.node.lineHeight = value;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Caption.PADDING = 10;\n    __decorate$1G([\n        Validate(BOOLEAN)\n    ], Caption.prototype, \"enabled\", void 0);\n    __decorate$1G([\n        Validate(STRING),\n        ProxyPropertyOnWrite('node')\n    ], Caption.prototype, \"text\", void 0);\n    __decorate$1G([\n        Validate(OPT_FONT_STYLE),\n        ProxyPropertyOnWrite('node')\n    ], Caption.prototype, \"fontStyle\", void 0);\n    __decorate$1G([\n        Validate(OPT_FONT_WEIGHT),\n        ProxyPropertyOnWrite('node')\n    ], Caption.prototype, \"fontWeight\", void 0);\n    __decorate$1G([\n        Validate(NUMBER(0)),\n        ProxyPropertyOnWrite('node')\n    ], Caption.prototype, \"fontSize\", void 0);\n    __decorate$1G([\n        Validate(STRING),\n        ProxyPropertyOnWrite('node')\n    ], Caption.prototype, \"fontFamily\", void 0);\n    __decorate$1G([\n        Validate(OPT_COLOR_STRING),\n        ProxyPropertyOnWrite('node', 'fill')\n    ], Caption.prototype, \"color\", void 0);\n    __decorate$1G([\n        Validate(OPT_NUMBER(0))\n    ], Caption.prototype, \"spacing\", void 0);\n    __decorate$1G([\n        Validate(OPT_NUMBER(0))\n    ], Caption.prototype, \"_lineHeight\", void 0);\n    return Caption;\n}());\n\nfunction areArrayItemsStrictlyEqual(arrA, arrB) {\n    return (arrA.length === arrB.length &&\n        arrA.every(function (a, i) {\n            var b = arrB[i];\n            if (Array.isArray(a) && Array.isArray(b)) {\n                return areArrayItemsStrictlyEqual(a, b);\n            }\n            return a === b;\n        }));\n}\nfunction areArrayNumbersEqual(arrA, arrB) {\n    return arrA.length === arrB.length && arrA.every(function (item, i) { return Number(item) === Number(arrB[i]); });\n}\n\nvar __extends$2o = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nfunction ticks (start, stop, count, minCount, maxCount) {\n    if (count < 2) {\n        return range(start, stop, stop - start);\n    }\n    var step = tickStep(start, stop, count, minCount, maxCount);\n    if (isNaN(step)) {\n        return new NumericTicks(0);\n    }\n    start = Math.ceil(start / step) * step;\n    stop = Math.floor(stop / step) * step;\n    return range(start, stop, step);\n}\nvar tickMultipliers = [1, 2, 5, 10];\nfunction tickStep(a, b, count, minCount, maxCount) {\n    if (minCount === void 0) { minCount = 0; }\n    if (maxCount === void 0) { maxCount = Infinity; }\n    var rawStep = (b - a) / count;\n    var power = Math.floor(Math.log10(rawStep));\n    var step = Math.pow(10, power);\n    var m = tickMultipliers\n        .map(function (multiplier) {\n        var s = multiplier * step;\n        var c = Math.ceil((b - a) / s);\n        var isWithinBounds = c >= minCount && c <= maxCount;\n        var diffCount = Math.abs(c - count);\n        return { multiplier: multiplier, isWithinBounds: isWithinBounds, diffCount: diffCount };\n    })\n        .sort(function (a, b) {\n        if (a.isWithinBounds !== b.isWithinBounds) {\n            return a.isWithinBounds ? -1 : 1;\n        }\n        return a.diffCount - b.diffCount;\n    })[0].multiplier;\n    if (!m || isNaN(m)) {\n        return NaN;\n    }\n    return m * step;\n}\nfunction singleTickDomain(a, b) {\n    var power = Math.floor(Math.log10(b - a));\n    var step = Math.pow(10, power);\n    return tickMultipliers\n        .map(function (multiplier) {\n        var s = multiplier * step;\n        var start = Math.floor(a / s) * s;\n        var end = Math.ceil(b / s) * s;\n        var error = 1 - (b - a) / (end - start);\n        var domain = [start, end];\n        return { error: error, domain: domain };\n    })\n        .sort(function (a, b) { return a.error - b.error; })[0].domain;\n}\nvar NumericTicks = /** @class */ (function (_super) {\n    __extends$2o(NumericTicks, _super);\n    function NumericTicks(fractionDigits, elements) {\n        var _this = _super.call(this) || this;\n        if (elements) {\n            for (var i = 0, n = elements.length; i < n; i++) {\n                _this[i] = elements[i];\n            }\n        }\n        _this.fractionDigits = fractionDigits;\n        return _this;\n    }\n    return NumericTicks;\n}(Array));\nfunction range(start, stop, step) {\n    var countDigits = function (expNo) {\n        var _a, _b;\n        var parts = expNo.split('e');\n        return Math.max(((_b = (_a = parts[0].split('.')[1]) === null || _a === void 0 ? void 0 : _a.length) !== null && _b !== void 0 ? _b : 0) - Number(parts[1]), 0);\n    };\n    var fractionalDigits = countDigits((step % 1).toExponential());\n    var f = Math.pow(10, fractionalDigits);\n    var n = Math.ceil((stop - start) / step);\n    var values = new NumericTicks(fractionalDigits);\n    for (var i = 0; i <= n; i++) {\n        var value = start + step * i;\n        values.push(Math.round(value * f) / f);\n    }\n    return values;\n}\n\nvar CONSTANTS = {\n    periods: ['AM', 'PM'],\n    days: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],\n    shortDays: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],\n    months: [\n        'January',\n        'February',\n        'March',\n        'April',\n        'May',\n        'June',\n        'July',\n        'August',\n        'September',\n        'October',\n        'November',\n        'December',\n    ],\n    shortMonths: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],\n};\nfunction dayOfYear(date, startOfYear) {\n    if (startOfYear === void 0) { startOfYear = new Date(date.getFullYear(), 0, 1); }\n    var startOffset = date.getTimezoneOffset() - startOfYear.getTimezoneOffset();\n    var timeDiff = date.getTime() - startOfYear.getTime() + startOffset * 60000;\n    var timeOneDay = 3600000 * 24;\n    return Math.floor(timeDiff / timeOneDay);\n}\nfunction weekOfYear(date, startDay) {\n    var startOfYear = new Date(date.getFullYear(), 0, 1);\n    var startOfYearDay = startOfYear.getDay();\n    var firstWeekStartOffset = (startDay - startOfYearDay + 7) % 7;\n    var startOffset = new Date(date.getFullYear(), 0, firstWeekStartOffset + 1);\n    if (startOffset <= date) {\n        return Math.floor(dayOfYear(date, startOffset) / 7) + 1;\n    }\n    // Days before week 1 are in week 0.\n    return 0;\n}\nvar SUNDAY = 0;\nvar MONDAY = 1;\nvar THURSDAY = 4;\nfunction isoWeekOfYear(date, year) {\n    if (year === void 0) { year = date.getFullYear(); }\n    var firstOfYear = new Date(year, 0, 1);\n    var firstOfYearDay = firstOfYear.getDay();\n    var firstThursdayOffset = (THURSDAY - firstOfYearDay + 7) % 7;\n    var startOffset = new Date(year, 0, firstThursdayOffset - (THURSDAY - MONDAY) + 1);\n    if (startOffset <= date) {\n        return Math.floor(dayOfYear(date, startOffset) / 7) + 1;\n    }\n    // Days before week 1 are in week 52/53 of previous year.\n    return isoWeekOfYear(date, year - 1);\n}\nfunction timezone(date) {\n    var offset = date.getTimezoneOffset();\n    var unsignedOffset = Math.abs(offset);\n    var sign = offset > 0 ? '-' : '+';\n    return \"\" + sign + pad(Math.floor(unsignedOffset / 60), 2, '0') + pad(Math.floor(unsignedOffset % 60), 2, '0');\n}\nvar FORMATTERS = {\n    a: function (d) { return CONSTANTS.shortDays[d.getDay()]; },\n    A: function (d) { return CONSTANTS.days[d.getDay()]; },\n    b: function (d) { return CONSTANTS.shortMonths[d.getMonth()]; },\n    B: function (d) { return CONSTANTS.months[d.getMonth()]; },\n    c: '%x, %X',\n    d: function (d, p) { return pad(d.getDate(), 2, p !== null && p !== void 0 ? p : '0'); },\n    e: '%_d',\n    f: function (d, p) { return pad(d.getMilliseconds() * 1000, 6, p !== null && p !== void 0 ? p : '0'); },\n    H: function (d, p) { return pad(d.getHours(), 2, p !== null && p !== void 0 ? p : '0'); },\n    I: function (d, p) {\n        var hours = d.getHours() % 12;\n        return hours === 0 ? '12' : pad(hours, 2, p !== null && p !== void 0 ? p : '0');\n    },\n    j: function (d, p) { return pad(dayOfYear(d) + 1, 3, p !== null && p !== void 0 ? p : '0'); },\n    m: function (d, p) { return pad(d.getMonth() + 1, 2, p !== null && p !== void 0 ? p : '0'); },\n    M: function (d, p) { return pad(d.getMinutes(), 2, p !== null && p !== void 0 ? p : '0'); },\n    L: function (d, p) { return pad(d.getMilliseconds(), 3, p !== null && p !== void 0 ? p : '0'); },\n    p: function (d) { return (d.getHours() < 12 ? 'AM' : 'PM'); },\n    Q: function (d) { return String(d.getTime()); },\n    s: function (d) { return String(Math.floor(d.getTime() / 1000)); },\n    S: function (d, p) { return pad(d.getSeconds(), 2, p !== null && p !== void 0 ? p : '0'); },\n    u: function (d) {\n        var day = d.getDay();\n        if (day < 1)\n            day += 7;\n        return String(day % 7);\n    },\n    U: function (d, p) { return pad(weekOfYear(d, SUNDAY), 2, p !== null && p !== void 0 ? p : '0'); },\n    V: function (d, p) { return pad(isoWeekOfYear(d), 2, p !== null && p !== void 0 ? p : '0'); },\n    w: function (d, p) { return pad(d.getDay(), 2, p !== null && p !== void 0 ? p : '0'); },\n    W: function (d, p) { return pad(weekOfYear(d, MONDAY), 2, p !== null && p !== void 0 ? p : '0'); },\n    x: '%-m/%-d/%Y',\n    X: '%-I:%M:%S %p',\n    y: function (d, p) { return pad(d.getFullYear() % 100, 2, p !== null && p !== void 0 ? p : '0'); },\n    Y: function (d, p) { return pad(d.getFullYear(), 4, p !== null && p !== void 0 ? p : '0'); },\n    Z: function (d) { return timezone(d); },\n    '%': function () { return '%'; },\n};\nvar PADS = {\n    _: ' ',\n    '0': '0',\n    '-': '',\n};\nfunction pad(value, size, padChar) {\n    var output = String(Math.floor(value));\n    if (output.length >= size) {\n        return output;\n    }\n    return \"\" + padChar.repeat(size - output.length) + output;\n}\nfunction buildFormatter(formatString) {\n    var formatParts = [];\n    while (formatString.length > 0) {\n        var nextEscapeIdx = formatString.indexOf('%');\n        if (nextEscapeIdx !== 0) {\n            var literalPart = nextEscapeIdx > 0 ? formatString.substring(0, nextEscapeIdx) : formatString;\n            formatParts.push(literalPart);\n        }\n        if (nextEscapeIdx < 0)\n            break;\n        var maybePadSpecifier = formatString[nextEscapeIdx + 1];\n        var maybePad = PADS[maybePadSpecifier];\n        if (maybePad != null) {\n            nextEscapeIdx++;\n        }\n        var maybeFormatterSpecifier = formatString[nextEscapeIdx + 1];\n        var maybeFormatter = FORMATTERS[maybeFormatterSpecifier];\n        if (typeof maybeFormatter === 'function') {\n            formatParts.push([maybeFormatter, maybePad]);\n        }\n        else if (typeof maybeFormatter === 'string') {\n            var formatter = buildFormatter(maybeFormatter);\n            formatParts.push([formatter, maybePad]);\n        }\n        else {\n            formatParts.push(\"\" + (maybePad !== null && maybePad !== void 0 ? maybePad : '') + maybeFormatterSpecifier);\n        }\n        formatString = formatString.substring(nextEscapeIdx + 2);\n    }\n    return function (dateTime) {\n        var dateTimeAsDate = typeof dateTime === 'number' ? new Date(dateTime) : dateTime;\n        return formatParts.map(function (c) { return (typeof c === 'string' ? c : c[0](dateTimeAsDate, c[1])); }).join('');\n    };\n}\n\nvar __extends$2n = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __values$p = (undefined && undefined.__values) || function(o) {\n    var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n    if (m) return m.call(o);\n    if (o && typeof o.length === \"number\") return {\n        next: function () {\n            if (o && i >= o.length) o = void 0;\n            return { value: o && o[i++], done: !o };\n        }\n    };\n    throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nvar __read$R = (undefined && undefined.__read) || function (o, n) {\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n    if (!m) return o;\n    var i = m.call(o), r, ar = [], e;\n    try {\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n    }\n    catch (error) { e = { error: error }; }\n    finally {\n        try {\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\n        }\n        finally { if (e) throw e.error; }\n    }\n    return ar;\n};\nvar __spread$v = (undefined && undefined.__spread) || function () {\n    for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read$R(arguments[i]));\n    return ar;\n};\nvar _a$2;\nvar DefaultTimeFormats;\n(function (DefaultTimeFormats) {\n    DefaultTimeFormats[DefaultTimeFormats[\"MILLISECOND\"] = 0] = \"MILLISECOND\";\n    DefaultTimeFormats[DefaultTimeFormats[\"SECOND\"] = 1] = \"SECOND\";\n    DefaultTimeFormats[DefaultTimeFormats[\"MINUTE\"] = 2] = \"MINUTE\";\n    DefaultTimeFormats[DefaultTimeFormats[\"HOUR\"] = 3] = \"HOUR\";\n    DefaultTimeFormats[DefaultTimeFormats[\"WEEK_DAY\"] = 4] = \"WEEK_DAY\";\n    DefaultTimeFormats[DefaultTimeFormats[\"SHORT_MONTH\"] = 5] = \"SHORT_MONTH\";\n    DefaultTimeFormats[DefaultTimeFormats[\"MONTH\"] = 6] = \"MONTH\";\n    DefaultTimeFormats[DefaultTimeFormats[\"SHORT_YEAR\"] = 7] = \"SHORT_YEAR\";\n    DefaultTimeFormats[DefaultTimeFormats[\"YEAR\"] = 8] = \"YEAR\";\n})(DefaultTimeFormats || (DefaultTimeFormats = {}));\nvar formatStrings = (_a$2 = {},\n    _a$2[DefaultTimeFormats.MILLISECOND] = '.%L',\n    _a$2[DefaultTimeFormats.SECOND] = ':%S',\n    _a$2[DefaultTimeFormats.MINUTE] = '%I:%M',\n    _a$2[DefaultTimeFormats.HOUR] = '%I %p',\n    _a$2[DefaultTimeFormats.WEEK_DAY] = '%a',\n    _a$2[DefaultTimeFormats.SHORT_MONTH] = '%b %d',\n    _a$2[DefaultTimeFormats.MONTH] = '%B',\n    _a$2[DefaultTimeFormats.SHORT_YEAR] = '%y',\n    _a$2[DefaultTimeFormats.YEAR] = '%Y',\n    _a$2);\nfunction toNumber(x) {\n    return x instanceof Date ? x.getTime() : x;\n}\nvar TimeScale$1 = /** @class */ (function (_super) {\n    __extends$2n(TimeScale, _super);\n    function TimeScale() {\n        var _this = _super.call(this, [new Date(2022, 11, 7), new Date(2022, 11, 8)], [0, 1]) || this;\n        _this.type = 'time';\n        _this.cacheProps = [\n            'domain',\n            'range',\n            'nice',\n            'tickCount',\n            'interval',\n            'minTickCount',\n            'maxTickCount',\n        ];\n        _this.year = year;\n        _this.month = month;\n        _this.week = sunday;\n        _this.day = day;\n        _this.hour = hour;\n        _this.minute = minute;\n        _this.second = second;\n        _this.millisecond = millisecond;\n        /**\n         * Array of default tick intervals in the following format:\n         *\n         *     [\n         *         interval (unit of time),\n         *         number of units (step),\n         *         the length of that number of units in milliseconds\n         *     ]\n         */\n        _this.tickIntervals = [\n            [_this.second, 1, durationSecond],\n            [_this.second, 5, 5 * durationSecond],\n            [_this.second, 15, 15 * durationSecond],\n            [_this.second, 30, 30 * durationSecond],\n            [_this.minute, 1, durationMinute],\n            [_this.minute, 5, 5 * durationMinute],\n            [_this.minute, 15, 15 * durationMinute],\n            [_this.minute, 30, 30 * durationMinute],\n            [_this.hour, 1, durationHour],\n            [_this.hour, 3, 3 * durationHour],\n            [_this.hour, 6, 6 * durationHour],\n            [_this.hour, 12, 12 * durationHour],\n            [_this.day, 1, durationDay],\n            [_this.day, 2, 2 * durationDay],\n            [_this.week, 1, durationWeek],\n            [_this.week, 2, 2 * durationWeek],\n            [_this.week, 3, 3 * durationWeek],\n            [_this.month, 1, durationMonth],\n            [_this.month, 2, 2 * durationMonth],\n            [_this.month, 3, 3 * durationMonth],\n            [_this.month, 4, 4 * durationMonth],\n            [_this.month, 6, 6 * durationMonth],\n            [_this.year, 1, durationYear],\n        ];\n        return _this;\n    }\n    TimeScale.prototype.toDomain = function (d) {\n        return new Date(d);\n    };\n    TimeScale.prototype.calculateDefaultTickFormat = function (ticks) {\n        var e_1, _a;\n        if (ticks === void 0) { ticks = []; }\n        var defaultTimeFormat = DefaultTimeFormats.YEAR;\n        var updateFormat = function (format) {\n            if (format < defaultTimeFormat) {\n                defaultTimeFormat = format;\n            }\n        };\n        try {\n            for (var ticks_1 = __values$p(ticks), ticks_1_1 = ticks_1.next(); !ticks_1_1.done; ticks_1_1 = ticks_1.next()) {\n                var value = ticks_1_1.value;\n                var format = this.getLowestGranularityFormat(value);\n                updateFormat(format);\n            }\n        }\n        catch (e_1_1) { e_1 = { error: e_1_1 }; }\n        finally {\n            try {\n                if (ticks_1_1 && !ticks_1_1.done && (_a = ticks_1.return)) _a.call(ticks_1);\n            }\n            finally { if (e_1) throw e_1.error; }\n        }\n        var firstTick = toNumber(ticks[0]);\n        var lastTick = toNumber(ticks[ticks.length - 1]);\n        var startYear = new Date(firstTick).getFullYear();\n        var stopYear = new Date(lastTick).getFullYear();\n        var yearChange = stopYear - startYear > 0;\n        return this.buildFormatString(defaultTimeFormat, yearChange);\n    };\n    TimeScale.prototype.buildFormatString = function (defaultTimeFormat, yearChange) {\n        var formatStringArray = [formatStrings[defaultTimeFormat]];\n        var timeEndIndex = 0;\n        var domain = this.getDomain();\n        var start = Math.min.apply(Math, __spread$v(domain.map(toNumber)));\n        var stop = Math.max.apply(Math, __spread$v(domain.map(toNumber)));\n        var extent = stop - start;\n        switch (defaultTimeFormat) {\n            case DefaultTimeFormats.SECOND:\n                if (extent / durationMinute > 1) {\n                    formatStringArray.push(formatStrings[DefaultTimeFormats.MINUTE]);\n                }\n            // fall through deliberately\n            case DefaultTimeFormats.MINUTE:\n                if (extent / durationHour > 1) {\n                    formatStringArray.push(formatStrings[DefaultTimeFormats.HOUR]);\n                }\n            // fall through deliberately\n            case DefaultTimeFormats.HOUR:\n                timeEndIndex = formatStringArray.length;\n                if (extent / durationDay > 1) {\n                    formatStringArray.push(formatStrings[DefaultTimeFormats.WEEK_DAY]);\n                }\n            // fall through deliberately\n            case DefaultTimeFormats.WEEK_DAY:\n                if (extent / durationWeek > 1 || yearChange) {\n                    // if it's more than a week or there is a year change, don't show week day\n                    var weekDayIndex = formatStringArray.indexOf(formatStrings[DefaultTimeFormats.WEEK_DAY]);\n                    if (weekDayIndex > -1) {\n                        formatStringArray.splice(weekDayIndex, 1, formatStrings[DefaultTimeFormats.SHORT_MONTH]);\n                    }\n                }\n            // fall through deliberately\n            case DefaultTimeFormats.SHORT_MONTH:\n            case DefaultTimeFormats.MONTH:\n                if (extent / durationYear > 1 || yearChange) {\n                    formatStringArray.push(formatStrings[DefaultTimeFormats.YEAR]);\n                }\n        }\n        if (timeEndIndex < formatStringArray.length) {\n            // Insert a gap between all date components.\n            formatStringArray = __spread$v(formatStringArray.slice(0, timeEndIndex), [\n                formatStringArray.slice(timeEndIndex).join(' '),\n            ]);\n        }\n        if (timeEndIndex > 0) {\n            // Reverse order of time components, since they should be displayed in descending\n            // granularity.\n            formatStringArray = __spread$v(formatStringArray.slice(0, timeEndIndex).reverse(), formatStringArray.slice(timeEndIndex));\n            if (timeEndIndex < formatStringArray.length) {\n                // Insert a gap between time and date components.\n                formatStringArray.splice(timeEndIndex, 0, ' ');\n            }\n        }\n        return formatStringArray.join('');\n    };\n    TimeScale.prototype.getLowestGranularityFormat = function (value) {\n        if (this.second.floor(value) < value) {\n            return DefaultTimeFormats.MILLISECOND;\n        }\n        else if (this.minute.floor(value) < value) {\n            return DefaultTimeFormats.SECOND;\n        }\n        else if (this.hour.floor(value) < value) {\n            return DefaultTimeFormats.MINUTE;\n        }\n        else if (this.day.floor(value) < value) {\n            return DefaultTimeFormats.HOUR;\n        }\n        else if (this.month.floor(value) < value) {\n            if (this.week.floor(value) < value) {\n                return DefaultTimeFormats.WEEK_DAY;\n            }\n            return DefaultTimeFormats.SHORT_MONTH;\n        }\n        else if (this.year.floor(value) < value) {\n            return DefaultTimeFormats.MONTH;\n        }\n        return DefaultTimeFormats.YEAR;\n    };\n    TimeScale.prototype.defaultTickFormat = function (ticks) {\n        var formatString = this.calculateDefaultTickFormat(ticks);\n        return function (date) { return buildFormatter(formatString)(date); };\n    };\n    /**\n     * @param options Tick interval options.\n     * @param options.start The start time (timestamp).\n     * @param options.stop The end time (timestamp).\n     * @param options.count Number of intervals between ticks.\n     */\n    TimeScale.prototype.getTickInterval = function (_a) {\n        var _b;\n        var start = _a.start, stop = _a.stop, count = _a.count, minCount = _a.minCount, maxCount = _a.maxCount;\n        var tickIntervals = this.tickIntervals;\n        var countableTimeInterval;\n        var step;\n        var tickCount = count !== null && count !== void 0 ? count : ContinuousScale.defaultTickCount;\n        var target = Math.abs(stop - start) / Math.max(tickCount, 1);\n        var i = 0;\n        while (i < tickIntervals.length && target > tickIntervals[i][2]) {\n            i++;\n        }\n        if (i === 0) {\n            step = Math.max(tickStep(start, stop, tickCount, minCount, maxCount), 1);\n            countableTimeInterval = this.millisecond;\n        }\n        else if (i === tickIntervals.length) {\n            var y0 = start / durationYear;\n            var y1 = stop / durationYear;\n            step = tickStep(y0, y1, tickCount, minCount, maxCount);\n            countableTimeInterval = this.year;\n        }\n        else {\n            var diff0 = target - tickIntervals[i - 1][2];\n            var diff1 = tickIntervals[i][2] - target;\n            var index = diff0 < diff1 ? i - 1 : i;\n            _b = __read$R(tickIntervals[index], 2), countableTimeInterval = _b[0], step = _b[1];\n        }\n        return countableTimeInterval.every(step);\n    };\n    TimeScale.prototype.invert = function (y) {\n        return new Date(_super.prototype.invert.call(this, y));\n    };\n    /**\n     * Returns uniformly-spaced dates that represent the scale's domain.\n     */\n    TimeScale.prototype.ticks = function () {\n        if (!this.domain || this.domain.length < 2) {\n            return [];\n        }\n        this.refresh();\n        var _a = __read$R(this.getDomain().map(toNumber), 2), t0 = _a[0], t1 = _a[1];\n        if (this.interval !== undefined) {\n            return this.getTicksForInterval({ start: t0, stop: t1 });\n        }\n        if (this.nice) {\n            var tickCount = this.tickCount;\n            if (tickCount === 2) {\n                return this.niceDomain;\n            }\n            if (tickCount === 1) {\n                return this.niceDomain.slice(0, 1);\n            }\n        }\n        return this.getDefaultTicks({ start: t0, stop: t1 });\n    };\n    TimeScale.prototype.getDefaultTicks = function (_a) {\n        var start = _a.start, stop = _a.stop;\n        var t = this.getTickInterval({\n            start: start,\n            stop: stop,\n            count: this.tickCount,\n            minCount: this.minTickCount,\n            maxCount: this.maxTickCount,\n        });\n        return t ? t.range(new Date(start), new Date(stop)) : []; // inclusive stop\n    };\n    TimeScale.prototype.getTicksForInterval = function (_a) {\n        var start = _a.start, stop = _a.stop;\n        var _b = this, interval = _b.interval, tickIntervals = _b.tickIntervals;\n        if (!interval) {\n            return [];\n        }\n        if (interval instanceof TimeInterval) {\n            var ticks_2 = interval.range(new Date(start), new Date(stop));\n            if (this.isDenseInterval({ start: start, stop: stop, interval: interval, count: ticks_2.length })) {\n                return this.getDefaultTicks({ start: start, stop: stop });\n            }\n            return ticks_2;\n        }\n        var absInterval = Math.abs(interval);\n        if (this.isDenseInterval({ start: start, stop: stop, interval: absInterval })) {\n            return this.getDefaultTicks({ start: start, stop: stop });\n        }\n        var reversedInterval = __spread$v(tickIntervals);\n        reversedInterval.reverse();\n        var timeInterval = reversedInterval.find(function (tickInterval) { return absInterval % tickInterval[2] === 0; });\n        if (timeInterval) {\n            var i = timeInterval[0].every(absInterval / (timeInterval[2] / timeInterval[1]));\n            return i.range(new Date(start), new Date(stop));\n        }\n        var date = new Date(start);\n        var stopDate = new Date(stop);\n        var ticks = [];\n        while (date <= stopDate) {\n            ticks.push(date);\n            date = new Date(date);\n            date.setMilliseconds(date.getMilliseconds() + absInterval);\n        }\n        return ticks;\n    };\n    /**\n     * Returns a time format function suitable for displaying tick values.\n     * @param specifier If the specifier string is provided, this method is equivalent to\n     * the {@link TimeLocaleObject.format} method.\n     * If no specifier is provided, this method returns the default time format function.\n     */\n    TimeScale.prototype.tickFormat = function (_a) {\n        var ticks = _a.ticks, specifier = _a.specifier;\n        return specifier == undefined ? this.defaultTickFormat(ticks) : buildFormatter(specifier);\n    };\n    TimeScale.prototype.update = function () {\n        if (!this.domain || this.domain.length < 2) {\n            return;\n        }\n        if (this.nice) {\n            this.updateNiceDomain();\n        }\n    };\n    /**\n     * Extends the domain so that it starts and ends on nice round values.\n     * This method typically modifies the scale’s domain, and may only extend the bounds to the nearest round value.\n     */\n    TimeScale.prototype.updateNiceDomain = function () {\n        var maxAttempts = 4;\n        var _a = __read$R(this.domain, 2), d0 = _a[0], d1 = _a[1];\n        for (var i = 0; i < maxAttempts; i++) {\n            this.updateNiceDomainIteration(d0, d1);\n            var _b = __read$R(this.niceDomain, 2), n0 = _b[0], n1 = _b[1];\n            if (toNumber(d0) === toNumber(n0) && toNumber(d1) === toNumber(n1)) {\n                break;\n            }\n            d0 = n0;\n            d1 = n1;\n        }\n    };\n    TimeScale.prototype.updateNiceDomainIteration = function (d0, d1) {\n        var start = toNumber(d0);\n        var stop = toNumber(d1);\n        var interval = this.interval;\n        var i;\n        if (interval instanceof TimeInterval) {\n            i = interval;\n        }\n        else {\n            var tickCount = typeof interval === 'number' ? (stop - start) / Math.max(interval, 1) : this.tickCount;\n            i = this.getTickInterval({\n                start: start,\n                stop: stop,\n                count: tickCount,\n                minCount: this.minTickCount,\n                maxCount: this.maxTickCount,\n            });\n        }\n        if (i) {\n            var intervalRange = i.range(d0, d1, true);\n            var n0 = intervalRange[0];\n            var n1 = intervalRange[intervalRange.length - 1];\n            this.niceDomain = [n0, n1];\n        }\n    };\n    return TimeScale;\n}(ContinuousScale));\n\nvar __read$Q = (undefined && undefined.__read) || function (o, n) {\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n    if (!m) return o;\n    var i = m.call(o), r, ar = [], e;\n    try {\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n    }\n    catch (error) { e = { error: error }; }\n    finally {\n        try {\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\n        }\n        finally { if (e) throw e.error; }\n    }\n    return ar;\n};\nvar __spread$u = (undefined && undefined.__spread) || function () {\n    for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read$Q(arguments[i]));\n    return ar;\n};\nvar _a$1;\nvar group = function (content) { return \"(\" + content + \")\"; };\nvar optionalGroup = function (content) { return group(content) + \"?\"; };\nvar nonCapturingGroup = function (content) { return optionalGroup(\"?:\" + content); };\nvar formatRegEx = (function () {\n    var fill = '.';\n    var align = '[<>=^]';\n    var sign = '[+\\\\-( ]';\n    var symbol = '[$€£¥₣₹#]';\n    var zero = '0';\n    var width = '\\\\d+';\n    var comma = ',';\n    var precision = '\\\\d+';\n    var tilde = '~';\n    var type = '[%a-z]';\n    return new RegExp([\n        '^',\n        nonCapturingGroup(\"\" + optionalGroup(fill) + group(align)),\n        optionalGroup(sign),\n        optionalGroup(symbol),\n        optionalGroup(zero),\n        optionalGroup(width),\n        optionalGroup(comma),\n        nonCapturingGroup(\"\\\\.\" + group(precision)),\n        optionalGroup(tilde),\n        optionalGroup(type),\n        '$',\n    ].join(''), 'i');\n})();\nvar surroundedRegEx = (function () {\n    var prefix = '.*?';\n    var content = '.+?';\n    var suffix = '.*?';\n    return new RegExp(['^', group(prefix), \"#\\\\{\" + group(content) + \"\\\\}\", group(suffix), '$'].join(''));\n})();\nfunction parseFormatter(formatter) {\n    var _a;\n    var prefix;\n    var suffix;\n    var surrounded = formatter.match(surroundedRegEx);\n    if (surrounded) {\n        _a = __read$Q(surrounded, 4), prefix = _a[1], formatter = _a[2], suffix = _a[3];\n    }\n    var match = formatter.match(formatRegEx);\n    if (!match) {\n        throw new Error(\"The number formatter is invalid: \" + formatter);\n    }\n    var _b = __read$Q(match, 11), fill = _b[1], align = _b[2], sign = _b[3], symbol = _b[4], zero = _b[5], width = _b[6], comma = _b[7], precision = _b[8], trim = _b[9], type = _b[10];\n    return {\n        fill: fill,\n        align: align,\n        sign: sign,\n        symbol: symbol,\n        zero: zero,\n        width: parseInt(width),\n        comma: comma,\n        precision: parseInt(precision),\n        trim: Boolean(trim),\n        type: type,\n        prefix: prefix,\n        suffix: suffix,\n    };\n}\nfunction format(formatter) {\n    var options = typeof formatter === 'string' ? parseFormatter(formatter) : formatter;\n    var fill = options.fill, align = options.align, _a = options.sign, sign = _a === void 0 ? '-' : _a, symbol = options.symbol, zero = options.zero, width = options.width, comma = options.comma, type = options.type, _b = options.prefix, prefix = _b === void 0 ? '' : _b, _c = options.suffix, suffix = _c === void 0 ? '' : _c;\n    var precision = options.precision, trim = options.trim;\n    var formatBody;\n    if (!type) {\n        formatBody = decimalTypes['g'];\n        trim = true;\n    }\n    else if (type in decimalTypes && type in integerTypes) {\n        formatBody = isNaN(precision) ? integerTypes[type] : decimalTypes[type];\n    }\n    else if (type in decimalTypes) {\n        formatBody = decimalTypes[type];\n    }\n    else if (type in integerTypes) {\n        formatBody = integerTypes[type];\n    }\n    else {\n        throw new Error(\"The number formatter type is invalid: \" + type);\n    }\n    if (isNaN(precision)) {\n        precision = type ? 6 : 12;\n    }\n    return function (n) {\n        var result = formatBody(n, precision);\n        if (trim) {\n            result = removeTrailingZeros(result);\n        }\n        if (comma) {\n            result = insertSeparator(result, comma);\n        }\n        result = addSign(n, result, sign);\n        if (symbol && symbol !== '#') {\n            result = \"\" + symbol + result;\n        }\n        if (symbol === '#' && type === 'x') {\n            result = \"0x\" + result;\n        }\n        if (type === 's') {\n            result = \"\" + result + getSIPrefix(n);\n        }\n        if (type === '%' || type === 'p') {\n            result = result + \"%\";\n        }\n        if (!isNaN(width)) {\n            result = addPadding(result, width, fill || zero, align);\n        }\n        result = \"\" + prefix + result + suffix;\n        return result;\n    };\n}\nvar absFloor = function (n) { return Math.floor(Math.abs(n)); };\nvar integerTypes = {\n    b: function (n) { return absFloor(n).toString(2); },\n    c: function (n) { return String.fromCharCode(n); },\n    d: function (n) { return Math.round(Math.abs(n)).toFixed(0); },\n    o: function (n) { return absFloor(n).toString(8); },\n    x: function (n) { return absFloor(n).toString(16); },\n    X: function (n) { return integerTypes.x(n).toUpperCase(); },\n    n: function (n) { return integerTypes.d(n); },\n    '%': function (n) { return \"\" + absFloor(n * 100).toFixed(0); },\n};\nvar decimalTypes = {\n    e: function (n, f) { return Math.abs(n).toExponential(f); },\n    E: function (n, f) { return decimalTypes.e(n, f).toUpperCase(); },\n    f: function (n, f) { return Math.abs(n).toFixed(f); },\n    F: function (n, f) { return decimalTypes.f(n, f).toUpperCase(); },\n    g: function (n, f) {\n        if (n === 0) {\n            return '0';\n        }\n        var a = Math.abs(n);\n        var p = Math.floor(Math.log10(a));\n        if (p >= -4 && p < f) {\n            return a.toFixed(f - 1 - p);\n        }\n        return a.toExponential(f - 1);\n    },\n    G: function (n, f) { return decimalTypes.g(n, f).toUpperCase(); },\n    n: function (n, f) { return decimalTypes.g(n, f); },\n    p: function (n, f) { return decimalTypes.r(n * 100, f); },\n    r: function (n, f) {\n        if (n === 0) {\n            return '0';\n        }\n        var a = Math.abs(n);\n        var p = Math.floor(Math.log10(a));\n        var q = p - (f - 1);\n        if (q <= 0) {\n            return a.toFixed(-q);\n        }\n        var x = Math.pow(10, q);\n        return (Math.round(a / x) * x).toFixed();\n    },\n    s: function (n, f) {\n        var p = getSIPrefixPower(n);\n        return decimalTypes.r(n / Math.pow(10, p), f);\n    },\n    '%': function (n, f) { return decimalTypes.f(n * 100, f); },\n};\nfunction removeTrailingZeros(numString) {\n    return numString.replace(/\\.0+$/, '').replace(/(\\.[1-9])0+$/, '$1');\n}\nfunction insertSeparator(numString, separator) {\n    var dotIndex = numString.indexOf('.');\n    if (dotIndex < 0) {\n        dotIndex = numString.length;\n    }\n    var integerChars = numString.substring(0, dotIndex).split('');\n    var fractionalPart = numString.substring(dotIndex);\n    for (var i = integerChars.length - 3; i > 0; i -= 3) {\n        integerChars.splice(i, 0, separator);\n    }\n    return \"\" + integerChars.join('') + fractionalPart;\n}\nfunction getSIPrefix(n) {\n    return siPrefixes[getSIPrefixPower(n)];\n}\nfunction getSIPrefixPower(n) {\n    var power = Math.log10(Math.abs(n));\n    var p = Math.floor(power / 3) * 3;\n    return Math.max(minSIPrefix, Math.min(maxSIPrefix, p));\n}\nvar minSIPrefix = -24;\nvar maxSIPrefix = 24;\nvar siPrefixes = (_a$1 = {},\n    _a$1[minSIPrefix] = 'y',\n    _a$1[-21] = 'z',\n    _a$1[-18] = 'a',\n    _a$1[-15] = 'f',\n    _a$1[-12] = 'p',\n    _a$1[-9] = 'n',\n    _a$1[-6] = 'µ',\n    _a$1[-3] = 'm',\n    _a$1[0] = '',\n    _a$1[3] = 'k',\n    _a$1[6] = 'M',\n    _a$1[9] = 'G',\n    _a$1[12] = 'T',\n    _a$1[15] = 'P',\n    _a$1[18] = 'E',\n    _a$1[21] = 'Z',\n    _a$1[maxSIPrefix] = 'Y',\n    _a$1);\nvar minusSign = '\\u2212';\nfunction addSign(num, numString, signType) {\n    if (signType === void 0) { signType = ''; }\n    if (signType === '(') {\n        return num >= 0 ? numString : \"(\" + numString + \")\";\n    }\n    var plusSign = signType === '+' ? '+' : '';\n    return \"\" + (num >= 0 ? plusSign : minusSign) + numString;\n}\nfunction addPadding(numString, width, fill, align) {\n    if (fill === void 0) { fill = ' '; }\n    if (align === void 0) { align = '>'; }\n    var result = numString;\n    if (align === '>' || !align) {\n        result = result.padStart(width, fill);\n    }\n    else if (align === '<') {\n        result = result.padEnd(width, fill);\n    }\n    else if (align === '^') {\n        var padWidth = Math.max(0, width - result.length);\n        var padLeft = Math.ceil(padWidth / 2);\n        var padRight = Math.floor(padWidth / 2);\n        result = result.padStart(padLeft + result.length, fill);\n        result = result.padEnd(padRight + result.length, fill);\n    }\n    return result;\n}\nfunction tickFormat(ticks, formatter) {\n    var options = parseFormatter(formatter || ',f');\n    if (isNaN(options.precision)) {\n        if (options.type === 'f' || options.type === '%') {\n            options.precision = Math.max.apply(Math, __spread$u(ticks.map(function (x) {\n                if (typeof x !== 'number' || x === 0) {\n                    return 0;\n                }\n                var l = Math.floor(Math.log10(Math.abs(x)));\n                var digits = options.type ? 6 : 12;\n                var exp = x.toExponential(digits - 1).replace(/\\.?0+e/, 'e');\n                var dotIndex = exp.indexOf('.');\n                if (dotIndex < 0) {\n                    return l >= 0 ? 0 : -l;\n                }\n                var s = exp.indexOf('e') - dotIndex;\n                return Math.max(0, s - l - 1);\n            })));\n        }\n        else if (!options.type || options.type in decimalTypes) {\n            options.precision = Math.max.apply(Math, __spread$u(ticks.map(function (x) {\n                if (typeof x !== 'number') {\n                    return 0;\n                }\n                var exp = x.toExponential((options.type ? 6 : 12) - 1).replace(/\\.?0+e/, 'e');\n                return exp.substring(0, exp.indexOf('e')).replace('.', '').length;\n            })));\n        }\n    }\n    var f = format(options);\n    return function (n) { return f(Number(n)); };\n}\n\nvar __extends$2m = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$1F = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __read$P = (undefined && undefined.__read) || function (o, n) {\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n    if (!m) return o;\n    var i = m.call(o), r, ar = [], e;\n    try {\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n    }\n    catch (error) { e = { error: error }; }\n    finally {\n        try {\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\n        }\n        finally { if (e) throw e.error; }\n    }\n    return ar;\n};\nvar __spread$t = (undefined && undefined.__spread) || function () {\n    for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read$P(arguments[i]));\n    return ar;\n};\nvar identity = function (x) { return x; };\nvar LogScale = /** @class */ (function (_super) {\n    __extends$2m(LogScale, _super);\n    function LogScale() {\n        var _this = _super.call(this, [1, 10], [0, 1]) || this;\n        _this.type = 'log';\n        _this.base = 10;\n        _this.cacheProps = ['domain', 'range', 'nice', 'tickCount', 'base'];\n        _this.baseLog = identity;\n        _this.basePow = identity;\n        _this.log = function (x) {\n            return _this.domain[0] >= 0 ? _this.baseLog(x) : -_this.baseLog(-x);\n        };\n        _this.pow = function (x) {\n            return _this.domain[0] >= 0 ? _this.basePow(x) : -_this.basePow(-x);\n        };\n        return _this;\n    }\n    LogScale.prototype.toDomain = function (d) {\n        return d;\n    };\n    LogScale.prototype.transform = function (x) {\n        return this.domain[0] >= 0 ? Math.log(x) : -Math.log(-x);\n    };\n    LogScale.prototype.transformInvert = function (x) {\n        return this.domain[0] >= 0 ? Math.exp(x) : -Math.exp(-x);\n    };\n    LogScale.prototype.update = function () {\n        if (!this.domain || this.domain.length < 2) {\n            return;\n        }\n        this.updateLogFn();\n        this.updatePowFn();\n        if (this.nice) {\n            this.updateNiceDomain();\n        }\n    };\n    LogScale.prototype.updateLogFn = function () {\n        var base = this.base;\n        var log;\n        if (base === 10) {\n            log = Math.log10;\n        }\n        else if (base === Math.E) {\n            log = Math.log;\n        }\n        else if (base === 2) {\n            log = Math.log2;\n        }\n        else {\n            var logBase_1 = Math.log(base);\n            log = function (x) { return Math.log(x) / logBase_1; };\n        }\n        this.baseLog = log;\n    };\n    LogScale.prototype.updatePowFn = function () {\n        var base = this.base;\n        var pow;\n        if (base === 10) {\n            pow = LogScale.pow10;\n        }\n        else if (base === Math.E) {\n            pow = Math.exp;\n        }\n        else {\n            pow = function (x) { return Math.pow(base, x); };\n        }\n        this.basePow = pow;\n    };\n    LogScale.prototype.updateNiceDomain = function () {\n        var _a = __read$P(this.domain, 2), d0 = _a[0], d1 = _a[1];\n        var n0 = this.pow(Math.floor(this.log(d0)));\n        var n1 = this.pow(Math.ceil(this.log(d1)));\n        this.niceDomain = [n0, n1];\n    };\n    LogScale.pow10 = function (x) {\n        return x >= 0 ? Math.pow(10, x) : 1 / Math.pow(10, -x);\n    };\n    LogScale.prototype.ticks = function () {\n        var _this = this;\n        var _a;\n        var count = (_a = this.tickCount) !== null && _a !== void 0 ? _a : 10;\n        if (!this.domain || this.domain.length < 2 || count < 1) {\n            return [];\n        }\n        this.refresh();\n        var base = this.base;\n        var _b = __read$P(this.getDomain(), 2), d0 = _b[0], d1 = _b[1];\n        var p0 = this.log(d0);\n        var p1 = this.log(d1);\n        if (this.interval) {\n            var step = Math.abs(this.interval);\n            var absDiff = Math.abs(p1 - p0);\n            var ticks_1 = range(p0, p1, Math.min(absDiff, step))\n                .map(function (x) { return _this.pow(x); })\n                .filter(function (t) { return t >= d0 && t <= d1; });\n            if (!this.isDenseInterval({ start: d0, stop: d1, interval: step, count: ticks_1.length })) {\n                return ticks_1;\n            }\n        }\n        var isBaseInteger = base % 1 === 0;\n        var isDiffLarge = p1 - p0 >= count;\n        if (!isBaseInteger || isDiffLarge) {\n            // Returns [10^1, 10^2, 10^3, 10^4, ...]\n            return ticks(p0, p1, Math.min(p1 - p0, count)).map(function (x) { return _this.pow(x); });\n        }\n        var ticks$1 = [];\n        var isPositive = d0 > 0;\n        p0 = Math.floor(p0) - 1;\n        p1 = Math.round(p1) + 1;\n        var min = Math.min.apply(Math, __spread$t(this.range));\n        var max = Math.max.apply(Math, __spread$t(this.range));\n        var availableSpacing = (max - min) / count;\n        var lastTickPosition = Infinity;\n        for (var p = p0; p <= p1; p++) {\n            var nextMagnitudeTickPosition = this.convert(this.pow(p + 1));\n            for (var k = 1; k < base; k++) {\n                var q = isPositive ? k : base - k + 1;\n                var t = this.pow(p) * q;\n                var tickPosition = this.convert(t);\n                var prevSpacing = Math.abs(lastTickPosition - tickPosition);\n                var nextSpacing = Math.abs(tickPosition - nextMagnitudeTickPosition);\n                var fits = prevSpacing >= availableSpacing && nextSpacing >= availableSpacing;\n                if (t >= d0 && t <= d1 && (k === 1 || fits)) {\n                    ticks$1.push(t);\n                    lastTickPosition = tickPosition;\n                }\n            }\n        }\n        return ticks$1;\n    };\n    LogScale.prototype.tickFormat = function (_a) {\n        var count = _a.count, ticks = _a.ticks, specifier = _a.specifier;\n        var base = this.base;\n        if (specifier == null) {\n            specifier = (base === 10 ? '.0e' : ',');\n        }\n        if (typeof specifier !== 'function') {\n            specifier = format(specifier);\n        }\n        if (count === Infinity) {\n            return specifier;\n        }\n        if (count == null) {\n            count = 10;\n        }\n        ticks = ticks !== null && ticks !== void 0 ? ticks : this.ticks();\n        return function (d) {\n            return specifier(d);\n        };\n    };\n    __decorate$1F([\n        Validate(NUMBER(0))\n    ], LogScale.prototype, \"base\", void 0);\n    return LogScale;\n}(ContinuousScale));\n\nfunction Default(defaultValue, replaces) {\n    if (replaces === void 0) { replaces = [undefined]; }\n    return addTransformToInstanceProperty(function (_, __, v) {\n        if (replaces.includes(v)) {\n            return defaultValue;\n        }\n        return v;\n    });\n}\n\n(undefined && undefined.__values) || function(o) {\n    var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n    if (m) return m.call(o);\n    if (o && typeof o.length === \"number\") return {\n        next: function () {\n            if (o && i >= o.length) o = void 0;\n            return { value: o && o[i++], done: !o };\n        }\n    };\n    throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nfunction extent$4(values) {\n    var length = values.length;\n    if (length === 0) {\n        return undefined;\n    }\n    var min = Infinity;\n    var max = -Infinity;\n    for (var i = 0; i < length; i++) {\n        var v = values[i];\n        if (v instanceof Date) {\n            v = v.getTime();\n        }\n        if (typeof v !== 'number') {\n            continue;\n        }\n        if (v < min) {\n            min = v;\n        }\n        if (v > max) {\n            max = v;\n        }\n    }\n    var extent = [min, max];\n    if (extent.some(function (v) { return !isFinite(v); })) {\n        return undefined;\n    }\n    return extent;\n}\n\nvar __decorate$1E = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar Label$1 = /** @class */ (function () {\n    function Label() {\n        this.enabled = true;\n        this.fontSize = 12;\n        this.fontFamily = 'Verdana, sans-serif';\n        this.fontStyle = undefined;\n        this.fontWeight = undefined;\n        this.color = 'rgba(70, 70, 70, 1)';\n    }\n    Label.prototype.getFont = function () {\n        return getFont(this.fontSize, this.fontFamily, this.fontStyle, this.fontWeight);\n    };\n    __decorate$1E([\n        Validate(BOOLEAN)\n    ], Label.prototype, \"enabled\", void 0);\n    __decorate$1E([\n        Validate(NUMBER(0))\n    ], Label.prototype, \"fontSize\", void 0);\n    __decorate$1E([\n        Validate(STRING)\n    ], Label.prototype, \"fontFamily\", void 0);\n    __decorate$1E([\n        Validate(OPT_FONT_STYLE)\n    ], Label.prototype, \"fontStyle\", void 0);\n    __decorate$1E([\n        Validate(OPT_FONT_WEIGHT)\n    ], Label.prototype, \"fontWeight\", void 0);\n    __decorate$1E([\n        Validate(COLOR_STRING)\n    ], Label.prototype, \"color\", void 0);\n    return Label;\n}());\nfunction calculateLabelRotation(opts) {\n    var _a = opts.parallelFlipRotation, parallelFlipRotation = _a === void 0 ? 0 : _a, _b = opts.regularFlipRotation, regularFlipRotation = _b === void 0 ? 0 : _b;\n    var labelRotation = opts.rotation ? normalizeAngle360(toRadians$1(opts.rotation)) : 0;\n    var parallelFlipFlag = !labelRotation && parallelFlipRotation >= 0 && parallelFlipRotation <= Math.PI ? -1 : 1;\n    // Flip if the axis rotation angle is in the top hemisphere.\n    var regularFlipFlag = !labelRotation && regularFlipRotation >= 0 && regularFlipRotation <= Math.PI ? -1 : 1;\n    var autoRotation = 0;\n    if (opts.parallel) {\n        autoRotation = (parallelFlipFlag * Math.PI) / 2;\n    }\n    else if (regularFlipFlag === -1) {\n        autoRotation = Math.PI;\n    }\n    return { labelRotation: labelRotation, autoRotation: autoRotation, parallelFlipFlag: parallelFlipFlag, regularFlipFlag: regularFlipFlag };\n}\n\nvar __decorate$1D = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __read$O = (undefined && undefined.__read) || function (o, n) {\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n    if (!m) return o;\n    var i = m.call(o), r, ar = [], e;\n    try {\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n    }\n    catch (error) { e = { error: error }; }\n    finally {\n        try {\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\n        }\n        finally { if (e) throw e.error; }\n    }\n    return ar;\n};\nvar __spread$s = (undefined && undefined.__spread) || function () {\n    for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read$O(arguments[i]));\n    return ar;\n};\nvar TICK_COUNT = predicateWithMessage(function (v, ctx) { return NUMBER(0)(v, ctx) || v instanceof TimeInterval; }, \"expecting a tick count Number value or, for a time axis, a Time Interval such as 'agCharts.time.month'\");\nvar OPT_TICK_COUNT = predicateWithMessage(function (v, ctx) { return OPTIONAL(v, ctx, TICK_COUNT); }, \"expecting an optional tick count Number value or, for a time axis, a Time Interval such as 'agCharts.time.month'\");\nvar OPT_TICK_INTERVAL = predicateWithMessage(function (v, ctx) { return OPTIONAL(v, ctx, function (v, ctx) { return (v !== 0 && NUMBER(0)(v, ctx)) || v instanceof TimeInterval; }); }, \"expecting an optional non-zero positive Number value or, for a time axis, a Time Interval such as 'agCharts.time.month'\");\nvar GRID_STYLE_KEYS = ['stroke', 'lineDash'];\nvar GRID_STYLE = predicateWithMessage(ARRAY(undefined, function (o) {\n    for (var key in o) {\n        if (!GRID_STYLE_KEYS.includes(key)) {\n            return false;\n        }\n    }\n    return true;\n}), \"expecting an Array of objects with gridline style properties such as 'stroke' and 'lineDash'\");\nvar Tags;\n(function (Tags) {\n    Tags[Tags[\"TickLine\"] = 0] = \"TickLine\";\n    Tags[Tags[\"TickLabel\"] = 1] = \"TickLabel\";\n    Tags[Tags[\"GridLine\"] = 2] = \"GridLine\";\n    Tags[Tags[\"GridArc\"] = 3] = \"GridArc\";\n    Tags[Tags[\"AxisLine\"] = 4] = \"AxisLine\";\n})(Tags || (Tags = {}));\nvar AxisLine = /** @class */ (function () {\n    function AxisLine() {\n        this.width = 1;\n        this.color = 'rgba(195, 195, 195, 1)';\n    }\n    __decorate$1D([\n        Validate(NUMBER(0))\n    ], AxisLine.prototype, \"width\", void 0);\n    __decorate$1D([\n        Validate(OPT_COLOR_STRING)\n    ], AxisLine.prototype, \"color\", void 0);\n    return AxisLine;\n}());\nvar AxisTick = /** @class */ (function () {\n    function AxisTick() {\n        /**\n         * The line width to be used by axis ticks.\n         */\n        this.width = 1;\n        /**\n         * The line length to be used by axis ticks.\n         */\n        this.size = 6;\n        /**\n         * The color of the axis ticks.\n         * Use `undefined` rather than `rgba(0, 0, 0, 0)` to make the ticks invisible.\n         */\n        this.color = 'rgba(195, 195, 195, 1)';\n        /**\n         * A hint of how many ticks to use (the exact number of ticks might differ),\n         * a `TimeInterval` or a `CountableTimeInterval`.\n         * For example:\n         *\n         *     axis.tick.count = 5;\n         *     axis.tick.count = year;\n         *     axis.tick.count = month.every(6);\n         */\n        this.count = undefined;\n        this.interval = undefined;\n        this.values = undefined;\n        this.minSpacing = NaN;\n        this.maxSpacing = NaN;\n    }\n    __decorate$1D([\n        Validate(NUMBER(0))\n    ], AxisTick.prototype, \"width\", void 0);\n    __decorate$1D([\n        Validate(NUMBER(0))\n    ], AxisTick.prototype, \"size\", void 0);\n    __decorate$1D([\n        Validate(OPT_COLOR_STRING)\n    ], AxisTick.prototype, \"color\", void 0);\n    __decorate$1D([\n        Validate(OPT_TICK_COUNT),\n        Deprecated('Use tick.interval or tick.minSpacing and tick.maxSpacing instead')\n    ], AxisTick.prototype, \"count\", void 0);\n    __decorate$1D([\n        Validate(OPT_TICK_INTERVAL)\n    ], AxisTick.prototype, \"interval\", void 0);\n    __decorate$1D([\n        Validate(OPT_ARRAY())\n    ], AxisTick.prototype, \"values\", void 0);\n    __decorate$1D([\n        Validate(AND(NUMBER_OR_NAN(1), LESS_THAN('maxSpacing'))),\n        Default(NaN)\n    ], AxisTick.prototype, \"minSpacing\", void 0);\n    __decorate$1D([\n        Validate(AND(NUMBER_OR_NAN(1), GREATER_THAN('minSpacing'))),\n        Default(NaN)\n    ], AxisTick.prototype, \"maxSpacing\", void 0);\n    return AxisTick;\n}());\nvar AxisLabel = /** @class */ (function () {\n    function AxisLabel() {\n        this.fontStyle = undefined;\n        this.fontWeight = undefined;\n        this.fontSize = 12;\n        this.fontFamily = 'Verdana, sans-serif';\n        /**\n         * The padding between the labels and the ticks.\n         */\n        this.padding = 5;\n        /**\n         * Minimum gap in pixels between the axis labels before being removed to avoid collisions.\n         */\n        this.minSpacing = NaN;\n        /**\n         * The color of the labels.\n         * Use `undefined` rather than `rgba(0, 0, 0, 0)` to make labels invisible.\n         */\n        this.color = 'rgba(87, 87, 87, 1)';\n        /**\n         * Custom label rotation in degrees.\n         * Labels are rendered perpendicular to the axis line by default.\n         * Or parallel to the axis line, if the {@link parallel} is set to `true`.\n         * The value of this config is used as the angular offset/deflection\n         * from the default rotation.\n         */\n        this.rotation = undefined;\n        /**\n         * If specified and axis labels may collide, they are rotated to reduce collisions. If the\n         * `rotation` property is specified, it takes precedence.\n         */\n        this.autoRotate = undefined;\n        /**\n         * Rotation angle to use when autoRotate is applied.\n         */\n        this.autoRotateAngle = 335;\n        /**\n         * Avoid axis label collision by automatically reducing the number of ticks displayed. If set to `false`, axis labels may collide.\n         */\n        this.avoidCollisions = true;\n        /**\n         * By default labels and ticks are positioned to the left of the axis line.\n         * `true` positions the labels to the right of the axis line.\n         * However, if the axis is rotated, it's easier to think in terms\n         * of this side or the opposite side, rather than left and right.\n         * We use the term `mirror` for conciseness, although it's not\n         * true mirroring - for example, when a label is rotated, so that\n         * it is inclined at the 45 degree angle, text flowing from north-west\n         * to south-east, ending at the tick to the left of the axis line,\n         * and then we set this config to `true`, the text will still be flowing\n         * from north-west to south-east, _starting_ at the tick to the right\n         * of the axis line.\n         */\n        this.mirrored = false;\n        /**\n         * Labels are rendered perpendicular to the axis line by default.\n         * Setting this config to `true` makes labels render parallel to the axis line\n         * and center aligns labels' text at the ticks.\n         */\n        this.parallel = false;\n        /**\n         * In case {@param value} is a number, the {@param fractionDigits} parameter will\n         * be provided as well. The `fractionDigits` corresponds to the number of fraction\n         * digits used by the tick step. For example, if the tick step is `0.0005`,\n         * the `fractionDigits` is 4.\n         */\n        this.formatter = undefined;\n        this.format = undefined;\n    }\n    __decorate$1D([\n        Validate(OPT_FONT_STYLE)\n    ], AxisLabel.prototype, \"fontStyle\", void 0);\n    __decorate$1D([\n        Validate(OPT_FONT_WEIGHT)\n    ], AxisLabel.prototype, \"fontWeight\", void 0);\n    __decorate$1D([\n        Validate(NUMBER(1))\n    ], AxisLabel.prototype, \"fontSize\", void 0);\n    __decorate$1D([\n        Validate(STRING)\n    ], AxisLabel.prototype, \"fontFamily\", void 0);\n    __decorate$1D([\n        Validate(NUMBER(0))\n    ], AxisLabel.prototype, \"padding\", void 0);\n    __decorate$1D([\n        Validate(NUMBER_OR_NAN()),\n        Default(NaN)\n    ], AxisLabel.prototype, \"minSpacing\", void 0);\n    __decorate$1D([\n        Validate(OPT_COLOR_STRING)\n    ], AxisLabel.prototype, \"color\", void 0);\n    __decorate$1D([\n        Validate(OPT_NUMBER(-360, 360))\n    ], AxisLabel.prototype, \"rotation\", void 0);\n    __decorate$1D([\n        Validate(OPT_BOOLEAN)\n    ], AxisLabel.prototype, \"autoRotate\", void 0);\n    __decorate$1D([\n        Validate(NUMBER(-360, 360))\n    ], AxisLabel.prototype, \"autoRotateAngle\", void 0);\n    __decorate$1D([\n        Validate(BOOLEAN)\n    ], AxisLabel.prototype, \"avoidCollisions\", void 0);\n    __decorate$1D([\n        Validate(BOOLEAN)\n    ], AxisLabel.prototype, \"mirrored\", void 0);\n    __decorate$1D([\n        Validate(BOOLEAN)\n    ], AxisLabel.prototype, \"parallel\", void 0);\n    __decorate$1D([\n        Validate(OPT_STRING)\n    ], AxisLabel.prototype, \"format\", void 0);\n    return AxisLabel;\n}());\n/**\n * A general purpose linear axis with no notion of orientation.\n * The axis is always rendered vertically, with horizontal labels positioned to the left\n * of the axis line by default. The axis can be {@link rotation | rotated} by an arbitrary angle,\n * so that it can be used as a top, right, bottom, left, radial or any other kind\n * of linear axis.\n * The generic `D` parameter is the type of the domain of the axis' scale.\n * The output range of the axis' scale is always numeric (screen coordinates).\n */\nvar Axis = /** @class */ (function () {\n    function Axis(scale) {\n        this.id = createId$1(this);\n        this.nice = true;\n        this.dataDomain = [];\n        this.axisGroup = new Group({ name: this.id + \"-axis\", zIndex: Layers.AXIS_ZINDEX });\n        this.lineNode = this.axisGroup.appendChild(new Line());\n        this.tickLineGroup = this.axisGroup.appendChild(new Group({ name: this.id + \"-Axis-tick-lines\", zIndex: Layers.AXIS_ZINDEX }));\n        this.tickLabelGroup = this.axisGroup.appendChild(new Group({ name: this.id + \"-Axis-tick-labels\", zIndex: Layers.AXIS_ZINDEX }));\n        this.crossLineGroup = new Group({ name: this.id + \"-CrossLines\" });\n        this.gridGroup = new Group({ name: this.id + \"-Axis-grid\" });\n        this.gridLineGroup = this.gridGroup.appendChild(new Group({\n            name: this.id + \"-gridLines\",\n            zIndex: Layers.AXIS_GRID_ZINDEX,\n        }));\n        this.gridArcGroup = this.gridGroup.appendChild(new Group({\n            name: this.id + \"-gridArcs\",\n            zIndex: Layers.AXIS_GRID_ZINDEX,\n        }));\n        this.tickLineGroupSelection = Selection.select(this.tickLineGroup, Line);\n        this.tickLabelGroupSelection = Selection.select(this.tickLabelGroup, Text);\n        this.gridLineGroupSelection = Selection.select(this.gridLineGroup, Line);\n        this.gridArcGroupSelection = Selection.select(this.gridArcGroup, Arc);\n        this._crossLines = [];\n        this.line = new AxisLine();\n        this.tick = new AxisTick();\n        this.label = new AxisLabel();\n        this.translation = { x: 0, y: 0 };\n        this.rotation = 0; // axis rotation angle in degrees\n        this.layout = {\n            label: {\n                align: 'center',\n                baseline: 'middle',\n                rotation: 0,\n                fractionDigits: 0,\n                padding: this.label.padding,\n                format: this.label.format,\n            },\n        };\n        this.requestedRange = [0, 1];\n        this._visibleRange = [0, 1];\n        this._title = undefined;\n        /**\n         * The length of the grid. The grid is only visible in case of a non-zero value.\n         * In case {@link radialGrid} is `true`, the value is interpreted as an angle\n         * (in degrees).\n         */\n        this._gridLength = 0;\n        /**\n         * The array of styles to cycle through when rendering grid lines.\n         * For example, use two {@link GridStyle} objects for alternating styles.\n         * Contains only one {@link GridStyle} object by default, meaning all grid lines\n         * have the same style.\n         */\n        this.gridStyle = [\n            {\n                stroke: 'rgba(219, 219, 219, 1)',\n                lineDash: [4, 2],\n            },\n        ];\n        /**\n         * `false` - render grid as lines of {@link gridLength} that extend the ticks\n         *           on the opposite side of the axis\n         * `true` - render grid as concentric circles that go through the ticks\n         */\n        this._radialGrid = false;\n        this.fractionDigits = 0;\n        /**\n         * The distance between the grid ticks and the axis ticks.\n         */\n        this.gridPadding = 0;\n        /**\n         * Is used to avoid collisions between axis labels and series.\n         */\n        this.seriesAreaPadding = 0;\n        this.thickness = 0;\n        this._scale = scale;\n        this.refreshScale();\n    }\n    Object.defineProperty(Axis.prototype, \"scale\", {\n        get: function () {\n            return this._scale;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(Axis.prototype, \"crossLines\", {\n        get: function () {\n            return this._crossLines;\n        },\n        set: function (value) {\n            var _this = this;\n            var _a, _b;\n            (_a = this._crossLines) === null || _a === void 0 ? void 0 : _a.forEach(function (crossLine) { return _this.detachCrossLine(crossLine); });\n            this._crossLines = value;\n            (_b = this._crossLines) === null || _b === void 0 ? void 0 : _b.forEach(function (crossLine) {\n                _this.attachCrossLine(crossLine);\n                _this.initCrossLine(crossLine);\n            });\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Axis.prototype.attachCrossLine = function (crossLine) {\n        this.crossLineGroup.appendChild(crossLine.group);\n    };\n    Axis.prototype.detachCrossLine = function (crossLine) {\n        this.crossLineGroup.removeChild(crossLine.group);\n    };\n    Axis.prototype.destroy = function () {\n        // For override by sub-classes.\n    };\n    Axis.prototype.refreshScale = function () {\n        var _this = this;\n        var _a;\n        this.requestedRange = this.scale.range.slice();\n        (_a = this.crossLines) === null || _a === void 0 ? void 0 : _a.forEach(function (crossLine) {\n            _this.initCrossLine(crossLine);\n        });\n    };\n    Axis.prototype.updateRange = function () {\n        var _a;\n        var _b = this, rr = _b.requestedRange, vr = _b.visibleRange, scale = _b.scale;\n        var span = (rr[1] - rr[0]) / (vr[1] - vr[0]);\n        var shift = span * vr[0];\n        var start = rr[0] - shift;\n        scale.range = [start, start + span];\n        (_a = this.crossLines) === null || _a === void 0 ? void 0 : _a.forEach(function (crossLine) {\n            crossLine.clippedRange = [rr[0], rr[1]];\n        });\n    };\n    Axis.prototype.setCrossLinesVisible = function (visible) {\n        this.crossLineGroup.visible = visible;\n    };\n    Axis.prototype.attachAxis = function (node, nextNode) {\n        node.insertBefore(this.gridGroup, nextNode);\n        node.insertBefore(this.axisGroup, nextNode);\n        node.insertBefore(this.crossLineGroup, nextNode);\n    };\n    Axis.prototype.detachAxis = function (node) {\n        node.removeChild(this.gridGroup);\n        node.removeChild(this.axisGroup);\n        node.removeChild(this.crossLineGroup);\n    };\n    /**\n     * Checks if a point or an object is in range.\n     * @param x A point (or object's starting point).\n     * @param width Object's width.\n     * @param tolerance Expands the range on both ends by this amount.\n     */\n    Axis.prototype.inRange = function (x, width, tolerance) {\n        if (width === void 0) { width = 0; }\n        if (tolerance === void 0) { tolerance = 0; }\n        return this.inRangeEx(x, width, tolerance) === 0;\n    };\n    Axis.prototype.inRangeEx = function (x, width, tolerance) {\n        if (width === void 0) { width = 0; }\n        if (tolerance === void 0) { tolerance = 0; }\n        var range = this.range;\n        // Account for inverted ranges, for example [500, 100] as well as [100, 500]\n        var min = Math.min(range[0], range[1]);\n        var max = Math.max(range[0], range[1]);\n        if (x + width < min - tolerance) {\n            return -1; // left of range\n        }\n        if (x > max + tolerance) {\n            return 1; // right of range\n        }\n        return 0; // in range\n    };\n    Object.defineProperty(Axis.prototype, \"range\", {\n        get: function () {\n            return this.requestedRange;\n        },\n        set: function (value) {\n            this.requestedRange = value.slice();\n            this.updateRange();\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(Axis.prototype, \"visibleRange\", {\n        get: function () {\n            return this._visibleRange.slice();\n        },\n        set: function (value) {\n            if (value && value.length === 2) {\n                var _a = __read$O(value, 2), min = _a[0], max = _a[1];\n                min = Math.max(0, min);\n                max = Math.min(1, max);\n                min = Math.min(min, max);\n                max = Math.max(min, max);\n                this._visibleRange = [min, max];\n                this.updateRange();\n            }\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Axis.prototype.onLabelFormatChange = function (ticks, format) {\n        var _a = this, scale = _a.scale, fractionDigits = _a.fractionDigits;\n        var logScale = scale instanceof LogScale;\n        var defaultLabelFormatter = !logScale && fractionDigits > 0\n            ? function (x) { return (typeof x === 'number' ? x.toFixed(fractionDigits) : String(x)); }\n            : function (x) { return String(x); };\n        if (format && scale && scale.tickFormat) {\n            try {\n                this.labelFormatter = scale.tickFormat({\n                    ticks: ticks,\n                    specifier: format,\n                });\n            }\n            catch (e) {\n                this.labelFormatter = defaultLabelFormatter;\n                Logger.warnOnce(\"the axis label format string \" + format + \" is invalid. No formatting will be applied\");\n            }\n        }\n        else {\n            this.labelFormatter = defaultLabelFormatter;\n        }\n    };\n    Object.defineProperty(Axis.prototype, \"title\", {\n        get: function () {\n            return this._title;\n        },\n        set: function (value) {\n            var oldTitle = this._title;\n            if (oldTitle !== value) {\n                if (oldTitle) {\n                    this.axisGroup.removeChild(oldTitle.node);\n                }\n                if (value) {\n                    value.node.rotation = -Math.PI / 2;\n                    this.axisGroup.appendChild(value.node);\n                }\n                this._title = value;\n                // position title so that it doesn't briefly get rendered in the top left hand corner of the canvas before update is called.\n                this.setTickCount(this.tick.count);\n                this.setTickInterval(this.tick.interval);\n                this.updateTitle({ ticks: this.scale.ticks() });\n            }\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Axis.prototype.setDomain = function () {\n        var _a;\n        var _b = this, scale = _b.scale, dataDomain = _b.dataDomain, tickValues = _b.tick.values;\n        if (tickValues && scale instanceof ContinuousScale) {\n            var _c = __read$O((_a = extent$4(tickValues)) !== null && _a !== void 0 ? _a : [Infinity, -Infinity], 2), tickMin = _c[0], tickMax = _c[1];\n            var min = Math.min(scale.fromDomain(dataDomain[0]), tickMin);\n            var max = Math.max(scale.fromDomain(dataDomain[1]), tickMax);\n            scale.domain = [scale.toDomain(min), scale.toDomain(max)];\n        }\n        else {\n            scale.domain = dataDomain;\n        }\n    };\n    Axis.prototype.setTickInterval = function (interval) {\n        var _a;\n        this.scale.interval = (_a = this.tick.interval) !== null && _a !== void 0 ? _a : interval;\n    };\n    Axis.prototype.setTickCount = function (count, minTickCount, maxTickCount) {\n        var scale = this.scale;\n        if (!(count && scale instanceof ContinuousScale)) {\n            return;\n        }\n        if (typeof count === 'number') {\n            scale.tickCount = count;\n            scale.minTickCount = minTickCount !== null && minTickCount !== void 0 ? minTickCount : 0;\n            scale.maxTickCount = maxTickCount !== null && maxTickCount !== void 0 ? maxTickCount : Infinity;\n            return;\n        }\n        if (scale instanceof TimeScale$1) {\n            this.setTickInterval(count);\n        }\n    };\n    Object.defineProperty(Axis.prototype, \"gridLength\", {\n        get: function () {\n            return this._gridLength;\n        },\n        set: function (value) {\n            var _this = this;\n            var _a;\n            // Was visible and now invisible, or was invisible and now visible.\n            if ((this._gridLength && !value) || (!this._gridLength && value)) {\n                this.gridLineGroupSelection = this.gridLineGroupSelection.clear();\n                this.gridArcGroupSelection = this.gridArcGroupSelection.clear();\n            }\n            this._gridLength = value;\n            (_a = this.crossLines) === null || _a === void 0 ? void 0 : _a.forEach(function (crossLine) {\n                _this.initCrossLine(crossLine);\n            });\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(Axis.prototype, \"radialGrid\", {\n        get: function () {\n            return this._radialGrid;\n        },\n        set: function (value) {\n            if (this._radialGrid !== value) {\n                this._radialGrid = value;\n                this.gridLineGroupSelection = this.gridLineGroupSelection.clear();\n                this.gridArcGroupSelection = this.gridArcGroupSelection.clear();\n            }\n        },\n        enumerable: false,\n        configurable: true\n    });\n    /**\n     * Creates/removes/updates the scene graph nodes that constitute the axis.\n     */\n    Axis.prototype.update = function (primaryTickCount) {\n        var _a, _b;\n        this.calculateDomain();\n        var _c = this, scale = _c.scale, gridLength = _c.gridLength, tick = _c.tick, _d = _c.label, parallelLabels = _d.parallel, mirrored = _d.mirrored, avoidCollisions = _d.avoidCollisions, requestedRange = _c.requestedRange;\n        var requestedRangeMin = Math.min.apply(Math, __spread$s(requestedRange));\n        var requestedRangeMax = Math.max.apply(Math, __spread$s(requestedRange));\n        var rotation = toRadians$1(this.rotation);\n        var anySeriesActive = this.isAnySeriesActive();\n        // The side of the axis line to position the labels on.\n        // -1 = left (default)\n        //  1 = right\n        var sideFlag = mirrored ? 1 : -1;\n        // When labels are parallel to the axis line, the `parallelFlipFlag` is used to\n        // flip the labels to avoid upside-down text, when the axis is rotated\n        // such that it is in the right hemisphere, i.e. the angle of rotation\n        // is in the [0, π] interval.\n        // The rotation angle is normalized, so that we have an easier time checking\n        // if it's in the said interval. Since the axis is always rendered vertically\n        // and then rotated, zero rotation means 12 (not 3) o-clock.\n        // -1 = flip\n        //  1 = don't flip (default)\n        var parallelFlipRotation = normalizeAngle360(rotation);\n        var regularFlipRotation = normalizeAngle360(rotation - Math.PI / 2);\n        var nice = this.nice;\n        this.setDomain();\n        this.setTickInterval(this.tick.interval);\n        if (scale instanceof ContinuousScale) {\n            scale.nice = nice;\n            this.setTickCount(this.tick.count);\n            scale.update();\n        }\n        var halfBandwidth = (scale.bandwidth || 0) / 2;\n        this.updatePosition();\n        this.updateLine();\n        var i = 0;\n        var labelOverlap = true;\n        var ticks = [];\n        var _e = this.estimateTickCount({\n            minSpacing: this.tick.minSpacing,\n            maxSpacing: this.tick.maxSpacing,\n        }), maxTickCount = _e.maxTickCount, minTickCount = _e.minTickCount, defaultTickCount = _e.defaultTickCount;\n        var continuous = scale instanceof ContinuousScale;\n        var secondaryAxis = primaryTickCount !== undefined;\n        var checkForOverlap = avoidCollisions && this.tick.interval === undefined && this.tick.values === undefined;\n        var tickSpacing = !isNaN(this.tick.minSpacing) || !isNaN(this.tick.maxSpacing);\n        var maxIterations = this.tick.count || !continuous || isNaN(maxTickCount) ? 10 : maxTickCount;\n        while (labelOverlap) {\n            var unchanged = true;\n            var _loop_1 = function () {\n                if (i > maxIterations) {\n                    return \"break\";\n                }\n                var prevTicks = ticks;\n                var tickCount = Math.max(defaultTickCount - i, minTickCount);\n                var filterTicks = checkForOverlap && !(continuous && this_1.tick.count === undefined) && (tickSpacing || i !== 0);\n                if (this_1.tick.values) {\n                    ticks = this_1.tick.values;\n                }\n                else if (maxTickCount === 0) {\n                    ticks = [];\n                }\n                else if (i === 0 || !filterTicks) {\n                    this_1.setTickCount((_a = this_1.tick.count) !== null && _a !== void 0 ? _a : tickCount, minTickCount, maxTickCount);\n                    ticks = scale.ticks();\n                }\n                if (filterTicks) {\n                    var keepEvery_1 = tickSpacing ? Math.ceil(ticks.length / tickCount) : 2;\n                    ticks = ticks.filter(function (_, i) { return i % keepEvery_1 === 0; });\n                }\n                var secondaryAxisTicks = void 0;\n                if (secondaryAxis) {\n                    // `updateSecondaryAxisTicks` mutates `scale.domain` based on `primaryTickCount`\n                    secondaryAxisTicks = this_1.updateSecondaryAxisTicks(primaryTickCount);\n                    ticks = secondaryAxisTicks;\n                }\n                this_1.updateSelections({\n                    halfBandwidth: halfBandwidth,\n                    gridLength: gridLength,\n                    ticks: ticks,\n                });\n                if (!secondaryAxis && ticks.length > 0) {\n                    primaryTickCount = ticks.length;\n                }\n                unchanged = checkForOverlap ? areArrayNumbersEqual(ticks, prevTicks) : false;\n                i++;\n            };\n            var this_1 = this;\n            while (unchanged) {\n                var state_1 = _loop_1();\n                if (state_1 === \"break\")\n                    break;\n            }\n            if (unchanged) {\n                break;\n            }\n            // When the scale domain or the ticks change, the label format may change\n            this.onLabelFormatChange(ticks, this.label.format);\n            var _f = this.updateLabels({\n                parallelFlipRotation: parallelFlipRotation,\n                regularFlipRotation: regularFlipRotation,\n                sideFlag: sideFlag,\n                tickLabelGroupSelection: this.tickLabelGroupSelection,\n                ticks: ticks,\n            }), labelData = _f.labelData, rotated = _f.rotated;\n            var labelSpacing = this.getLabelSpacing(rotated);\n            // no need for further iterations if `avoidCollisions` is false\n            labelOverlap = checkForOverlap ? axisLabelsOverlap(labelData, labelSpacing) : false;\n        }\n        this.updateGridLines({\n            gridLength: gridLength,\n            halfBandwidth: halfBandwidth,\n            sideFlag: sideFlag,\n        });\n        var anyTickVisible = false;\n        var visibleFn = function (node) {\n            var min = Math.floor(requestedRangeMin);\n            var max = Math.ceil(requestedRangeMax);\n            if (min === max) {\n                node.visible = false;\n                return;\n            }\n            // Fix an effect of rounding error\n            if (node.translationY >= min - 1 && node.translationY < min) {\n                node.translationY = min;\n            }\n            if (node.translationY > max && node.translationY <= max + 1) {\n                node.translationY = max;\n            }\n            var visible = node.translationY >= min && node.translationY <= max;\n            if (visible) {\n                anyTickVisible = true;\n            }\n            node.visible = visible;\n        };\n        var _g = this, gridLineGroupSelection = _g.gridLineGroupSelection, gridArcGroupSelection = _g.gridArcGroupSelection, tickLineGroupSelection = _g.tickLineGroupSelection, tickLabelGroupSelection = _g.tickLabelGroupSelection;\n        gridLineGroupSelection.each(visibleFn);\n        gridArcGroupSelection.each(visibleFn);\n        tickLineGroupSelection.each(visibleFn);\n        tickLabelGroupSelection.each(visibleFn);\n        this.tickLineGroup.visible = anyTickVisible;\n        this.tickLabelGroup.visible = anyTickVisible;\n        this.gridLineGroup.visible = anyTickVisible;\n        this.gridArcGroup.visible = anyTickVisible;\n        (_b = this.crossLines) === null || _b === void 0 ? void 0 : _b.forEach(function (crossLine) {\n            crossLine.sideFlag = -sideFlag;\n            crossLine.direction = rotation === -Math.PI / 2 ? ChartAxisDirection.X : ChartAxisDirection.Y;\n            crossLine.label.parallel =\n                crossLine.label.parallel !== undefined ? crossLine.label.parallel : parallelLabels;\n            crossLine.parallelFlipRotation = parallelFlipRotation;\n            crossLine.regularFlipRotation = regularFlipRotation;\n            crossLine.update(anySeriesActive);\n        });\n        this.updateTitle({ ticks: ticks });\n        tickLineGroupSelection.each(function (line) {\n            line.strokeWidth = tick.width;\n            line.stroke = tick.color;\n            line.visible = anyTickVisible;\n            line.x1 = sideFlag * tick.size;\n            line.x2 = 0;\n            line.y1 = 0;\n            line.y2 = 0;\n        });\n        return primaryTickCount;\n    };\n    Axis.prototype.estimateTickCount = function (_a) {\n        var minSpacing = _a.minSpacing, maxSpacing = _a.maxSpacing;\n        var requestedRange = this.requestedRange;\n        var min = Math.min.apply(Math, __spread$s(requestedRange));\n        var max = Math.max.apply(Math, __spread$s(requestedRange));\n        var availableRange = max - min;\n        var defaultMinSpacing = Math.max(Axis.defaultTickMinSpacing, availableRange / ContinuousScale.defaultMaxTickCount);\n        if (isNaN(minSpacing) && isNaN(maxSpacing)) {\n            minSpacing = defaultMinSpacing;\n            maxSpacing = availableRange;\n            if (minSpacing > maxSpacing) {\n                // Take automatic minSpacing if there is a conflict.\n                maxSpacing = minSpacing;\n            }\n        }\n        else if (isNaN(minSpacing)) {\n            minSpacing = defaultMinSpacing;\n            if (minSpacing > maxSpacing) {\n                // Take user-suplied maxSpacing if there is a conflict.\n                minSpacing = maxSpacing;\n            }\n        }\n        else if (isNaN(maxSpacing)) {\n            maxSpacing = availableRange;\n            if (minSpacing > maxSpacing) {\n                // Take user-suplied minSpacing if there is a conflict.\n                maxSpacing = minSpacing;\n            }\n        }\n        var maxTickCount = Math.max(1, Math.floor(availableRange / minSpacing));\n        var minTickCount = Math.min(maxTickCount, Math.ceil(availableRange / maxSpacing));\n        var defaultTickCount = ContinuousScale.defaultTickCount;\n        if (defaultTickCount > maxTickCount) {\n            defaultTickCount = maxTickCount;\n        }\n        else if (defaultTickCount < minTickCount) {\n            defaultTickCount = minTickCount;\n        }\n        return { minTickCount: minTickCount, maxTickCount: maxTickCount, defaultTickCount: defaultTickCount };\n    };\n    Axis.prototype.getLabelSpacing = function (rotated) {\n        var label = this.label;\n        if (!isNaN(label.minSpacing)) {\n            return label.minSpacing;\n        }\n        return rotated ? 0 : 10;\n    };\n    Axis.prototype.calculateDomain = function () {\n        // Placeholder for subclasses to override.\n    };\n    Axis.prototype.updatePosition = function () {\n        var _a = this, label = _a.label, crossLineGroup = _a.crossLineGroup, axisGroup = _a.axisGroup, gridGroup = _a.gridGroup, translation = _a.translation, gridLineGroupSelection = _a.gridLineGroupSelection, gridPadding = _a.gridPadding, gridLength = _a.gridLength;\n        var rotation = toRadians$1(this.rotation);\n        var sideFlag = label.mirrored ? 1 : -1;\n        var translationX = Math.floor(translation.x);\n        var translationY = Math.floor(translation.y);\n        crossLineGroup.translationX = translationX;\n        crossLineGroup.translationY = translationY;\n        crossLineGroup.rotation = rotation;\n        axisGroup.translationX = translationX;\n        axisGroup.translationY = translationY;\n        axisGroup.rotation = rotation;\n        gridGroup.translationX = translationX;\n        gridGroup.translationY = translationY;\n        gridGroup.rotation = rotation;\n        gridLineGroupSelection.each(function (line) {\n            line.x1 = gridPadding;\n            line.x2 = -sideFlag * gridLength + gridPadding;\n            line.y1 = 0;\n            line.y2 = 0;\n        });\n    };\n    Axis.prototype.updateSecondaryAxisTicks = function (_primaryTickCount) {\n        throw new Error('AG Charts - unexpected call to updateSecondaryAxisTicks() - check axes configuration.');\n    };\n    Axis.prototype.updateSelections = function (_a) {\n        var ticks = _a.ticks, halfBandwidth = _a.halfBandwidth, gridLength = _a.gridLength;\n        var scale = this.scale;\n        var data = ticks.map(function (t) { return ({ tick: t, translationY: scale.convert(t) + halfBandwidth }); });\n        var gridLineGroupSelection = this.radialGrid\n            ? this.gridLineGroupSelection\n            : this.gridLineGroupSelection.update(gridLength ? data : [], function (group) {\n                var node = new Line();\n                node.tag = Tags.GridLine;\n                group.append(node);\n            });\n        var gridArcGroupSelection = this.radialGrid\n            ? this.gridArcGroupSelection.update(gridLength ? data : [], function (group) {\n                var node = new Arc();\n                node.tag = Tags.GridArc;\n                group.append(node);\n            })\n            : this.gridArcGroupSelection;\n        var tickLineGroupSelection = this.tickLineGroupSelection.update(data, function (group) {\n            var line = new Line();\n            line.tag = Tags.TickLine;\n            group.appendChild(line);\n        });\n        var tickLabelGroupSelection = this.tickLabelGroupSelection.update(data, function (group) {\n            var text = new Text();\n            text.tag = Tags.TickLabel;\n            group.appendChild(text);\n        });\n        // We need raw `translationY` values on `datum` for accurate label collision detection in axes.update()\n        // But node `translationY` values must be rounded to get pixel grid alignment\n        var translationFn = function (node) { return (node.translationY = Math.round(node.datum.translationY)); };\n        gridLineGroupSelection.each(translationFn);\n        gridArcGroupSelection.each(translationFn);\n        tickLineGroupSelection.each(translationFn);\n        tickLabelGroupSelection.each(translationFn);\n        this.tickLineGroupSelection = tickLineGroupSelection;\n        this.tickLabelGroupSelection = tickLabelGroupSelection;\n        this.gridLineGroupSelection = gridLineGroupSelection;\n        this.gridArcGroupSelection = gridArcGroupSelection;\n    };\n    Axis.prototype.updateGridLines = function (_a) {\n        var gridLength = _a.gridLength, halfBandwidth = _a.halfBandwidth, sideFlag = _a.sideFlag;\n        var _b = this, gridStyle = _b.gridStyle, scale = _b.scale, tick = _b.tick, gridPadding = _b.gridPadding;\n        if (gridLength && gridStyle.length) {\n            var styleCount_1 = gridStyle.length;\n            var grid = void 0;\n            if (this.radialGrid) {\n                var angularGridLength_1 = normalizeAngle360Inclusive(toRadians$1(gridLength));\n                grid = this.gridArcGroupSelection.each(function (arc, datum) {\n                    var radius = Math.round(scale.convert(datum) + halfBandwidth);\n                    arc.centerX = 0;\n                    arc.centerY = scale.range[0] - radius;\n                    arc.endAngle = angularGridLength_1;\n                    arc.radius = radius;\n                });\n            }\n            else {\n                grid = this.gridLineGroupSelection.each(function (line) {\n                    line.x1 = gridPadding;\n                    line.x2 = -sideFlag * gridLength + gridPadding;\n                    line.y1 = 0;\n                    line.y2 = 0;\n                });\n            }\n            grid.each(function (node, _, index) {\n                var style = gridStyle[index % styleCount_1];\n                node.stroke = style.stroke;\n                node.strokeWidth = tick.width;\n                node.lineDash = style.lineDash;\n                node.fill = undefined;\n            });\n        }\n    };\n    Axis.prototype.updateLabels = function (_a) {\n        var _this = this;\n        var ticks = _a.ticks, tickLabelGroupSelection = _a.tickLabelGroupSelection, sideFlag = _a.sideFlag, parallelFlipRotation = _a.parallelFlipRotation, regularFlipRotation = _a.regularFlipRotation;\n        var _b = this, label = _b.label, _c = _b.label, parallel = _c.parallel, rotation = _c.rotation, tick = _b.tick;\n        var labelAutoRotation = 0;\n        var _d = calculateLabelRotation({\n            rotation: rotation,\n            parallel: parallel,\n            regularFlipRotation: regularFlipRotation,\n            parallelFlipRotation: parallelFlipRotation,\n        }), autoRotation = _d.autoRotation, labelRotation = _d.labelRotation, parallelFlipFlag = _d.parallelFlipFlag, regularFlipFlag = _d.regularFlipFlag;\n        // `ticks instanceof NumericTicks` doesn't work here, so we feature detect.\n        this.fractionDigits = ticks.fractionDigits >= 0 ? ticks.fractionDigits : 0;\n        // Update properties that affect the size of the axis labels and measure the labels\n        var labelBboxes = new Map();\n        var labelX = sideFlag * (tick.size + label.padding + this.seriesAreaPadding);\n        var labelMatrix = new Matrix();\n        Matrix.updateTransformMatrix(labelMatrix, 1, 1, autoRotation, 0, 0);\n        var labelData = [];\n        var labelSelection = tickLabelGroupSelection.each(function (node, datum, index) {\n            var tick = datum.tick, translationY = datum.translationY;\n            node.fontStyle = label.fontStyle;\n            node.fontWeight = label.fontWeight;\n            node.fontSize = label.fontSize;\n            node.fontFamily = label.fontFamily;\n            node.fill = label.color;\n            node.text = _this.formatTickDatum(tick, index);\n            var userHidden = node.text === '' || node.text == undefined;\n            var bbox = node.computeBBox();\n            var width = bbox.width, height = bbox.height;\n            var translatedBBox = new BBox(labelX, translationY, 0, 0);\n            labelMatrix.transformBBox(translatedBBox, bbox);\n            var _a = bbox.x, x = _a === void 0 ? 0 : _a, _b = bbox.y, y = _b === void 0 ? 0 : _b;\n            bbox.width = width;\n            bbox.height = height;\n            labelBboxes.set(index, userHidden ? null : bbox);\n            if (userHidden) {\n                return;\n            }\n            labelData.push({\n                point: {\n                    x: x,\n                    y: y,\n                    size: 0,\n                },\n                label: {\n                    width: width,\n                    height: height,\n                    text: '',\n                },\n            });\n        });\n        var labelSpacing = this.getLabelSpacing();\n        var rotate = axisLabelsOverlap(labelData, labelSpacing);\n        if (label.rotation === undefined && label.autoRotate === true && rotate) {\n            // When no user label rotation angle has been specified and the width of any label exceeds the average tick gap (`rotate` is `true`),\n            // automatically rotate the labels\n            labelAutoRotation = normalizeAngle360(toRadians$1(label.autoRotateAngle));\n        }\n        var labelTextBaseline = 'middle';\n        if (parallel && !labelRotation) {\n            if (sideFlag * parallelFlipFlag === -1) {\n                labelTextBaseline = 'hanging';\n            }\n            else {\n                labelTextBaseline = 'bottom';\n            }\n        }\n        var labelRotated = labelRotation > 0 && labelRotation <= Math.PI;\n        var labelAutoRotated = labelAutoRotation > 0 && labelAutoRotation <= Math.PI;\n        var alignFlag = labelRotated || labelAutoRotated ? -1 : 1;\n        var labelTextAlign = 'start';\n        if (parallel) {\n            if (labelRotation || labelAutoRotation) {\n                if (sideFlag * alignFlag === -1) {\n                    labelTextAlign = 'end';\n                }\n            }\n            else {\n                labelTextAlign = 'center';\n            }\n        }\n        else if (sideFlag * regularFlipFlag === -1) {\n            labelTextAlign = 'end';\n        }\n        var combinedRotation = autoRotation + labelRotation + labelAutoRotation;\n        if (combinedRotation) {\n            Matrix.updateTransformMatrix(labelMatrix, 1, 1, combinedRotation, 0, 0);\n        }\n        labelData = [];\n        labelSelection.each(function (label, datum, index) {\n            if (label.text === '' || label.text == undefined) {\n                label.visible = false; // hide empty labels\n                return;\n            }\n            label.textBaseline = labelTextBaseline;\n            label.textAlign = labelTextAlign;\n            label.x = labelX;\n            label.rotationCenterX = labelX;\n            label.rotation = combinedRotation;\n            // Text.computeBBox() does not take into account any of the transformations that have been applied to the label nodes, only the width and height are useful.\n            // Rather than taking into account all transformations including those of parent nodes which would be the result of `computeTransformedBBox()`, giving the x and y in the entire axis coordinate space,\n            // take into account only the rotation and translation applied to individual label nodes to get the x y coordinates of the labels relative to each other\n            // this makes label collision detection a lot simpler\n            var bbox = labelBboxes.get(index);\n            if (!bbox) {\n                return;\n            }\n            label.visible = true;\n            var _a = bbox.width, width = _a === void 0 ? 0 : _a, _b = bbox.height, height = _b === void 0 ? 0 : _b;\n            var translationY = datum.translationY;\n            var translatedBBox = new BBox(labelX, translationY, 0, 0);\n            labelMatrix.transformBBox(translatedBBox, bbox);\n            var _c = bbox.x, x = _c === void 0 ? 0 : _c, _d = bbox.y, y = _d === void 0 ? 0 : _d;\n            labelData.push({\n                point: {\n                    x: x,\n                    y: y,\n                    size: 0,\n                },\n                label: {\n                    width: width,\n                    height: height,\n                    text: label.text,\n                },\n            });\n        });\n        this.layout.label = {\n            align: labelTextAlign,\n            baseline: labelTextBaseline,\n            rotation: combinedRotation,\n            fractionDigits: this.fractionDigits,\n            padding: this.label.padding,\n            format: this.label.format,\n        };\n        return { labelData: labelData, rotated: !!(labelRotation || labelAutoRotation) };\n    };\n    Axis.prototype.updateLine = function () {\n        // Render axis line.\n        var _a = this, lineNode = _a.lineNode, requestedRange = _a.requestedRange;\n        lineNode.x1 = 0;\n        lineNode.x2 = 0;\n        lineNode.y1 = requestedRange[0];\n        lineNode.y2 = requestedRange[1];\n        lineNode.strokeWidth = this.line.width;\n        lineNode.stroke = this.line.color;\n        lineNode.visible = true;\n    };\n    Axis.prototype.updateTitle = function (_a) {\n        var ticks = _a.ticks;\n        var _b = this, label = _b.label, rotation = _b.rotation, title = _b.title, lineNode = _b.lineNode, requestedRange = _b.requestedRange, tickLineGroup = _b.tickLineGroup, tickLabelGroup = _b.tickLabelGroup;\n        if (!title) {\n            return;\n        }\n        var titleVisible = false;\n        if (title.enabled && lineNode.visible) {\n            titleVisible = true;\n            var sideFlag = label.mirrored ? 1 : -1;\n            var parallelFlipRotation = normalizeAngle360(rotation);\n            var padding = Caption.PADDING;\n            var titleNode = title.node;\n            var titleRotationFlag = sideFlag === -1 && parallelFlipRotation > Math.PI && parallelFlipRotation < Math.PI * 2 ? -1 : 1;\n            titleNode.rotation = (titleRotationFlag * sideFlag * Math.PI) / 2;\n            titleNode.x = Math.floor((titleRotationFlag * sideFlag * (requestedRange[0] + requestedRange[1])) / 2);\n            var bboxYDimension = 0;\n            if ((ticks === null || ticks === void 0 ? void 0 : ticks.length) > 0) {\n                var tickBBox = Group.computeBBox([tickLineGroup, tickLabelGroup]);\n                var tickWidth = rotation === 0 ? tickBBox.width : tickBBox.height;\n                if (Math.abs(tickWidth) < Infinity) {\n                    bboxYDimension += tickWidth;\n                }\n            }\n            if (sideFlag === -1) {\n                titleNode.y = Math.floor(titleRotationFlag * (-padding - bboxYDimension));\n            }\n            else {\n                titleNode.y = Math.floor(-padding - bboxYDimension);\n            }\n            titleNode.textBaseline = titleRotationFlag === 1 ? 'bottom' : 'top';\n        }\n        title.node.visible = titleVisible;\n    };\n    // For formatting (nice rounded) tick values.\n    Axis.prototype.formatTickDatum = function (datum, index) {\n        var _a = this, label = _a.label, labelFormatter = _a.labelFormatter, fractionDigits = _a.fractionDigits;\n        if (label.formatter) {\n            return label.formatter({\n                value: fractionDigits > 0 ? datum : String(datum),\n                index: index,\n                fractionDigits: fractionDigits,\n                formatter: labelFormatter,\n            });\n        }\n        else if (labelFormatter) {\n            return labelFormatter(datum);\n        }\n        // The axis is using a logScale or the`datum` is an integer, a string or an object\n        return String(datum);\n    };\n    // For formatting arbitrary values between the ticks.\n    Axis.prototype.formatDatum = function (datum) {\n        return String(datum);\n    };\n    Axis.prototype.computeBBox = function () {\n        return this.axisGroup.computeBBox();\n    };\n    Axis.prototype.initCrossLine = function (crossLine) {\n        crossLine.scale = this.scale;\n        crossLine.gridLength = this.gridLength;\n    };\n    Axis.prototype.isAnySeriesActive = function () {\n        return false;\n    };\n    Axis.prototype.clipTickLines = function (x, y, width, height) {\n        this.tickLineGroup.setClipRectInGroupCoordinateSpace(new BBox(x, y, width, height));\n    };\n    Axis.prototype.clipGrid = function (x, y, width, height) {\n        this.gridGroup.setClipRectInGroupCoordinateSpace(new BBox(x, y, width, height));\n    };\n    Axis.prototype.calculatePadding = function (min, _max) {\n        return Math.abs(min * 0.01);\n    };\n    Axis.defaultTickMinSpacing = 50;\n    __decorate$1D([\n        Validate(BOOLEAN)\n    ], Axis.prototype, \"nice\", void 0);\n    __decorate$1D([\n        Validate(GRID_STYLE)\n    ], Axis.prototype, \"gridStyle\", void 0);\n    __decorate$1D([\n        Validate(NUMBER(0))\n    ], Axis.prototype, \"thickness\", void 0);\n    return Axis;\n}());\n\nvar __extends$2l = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __read$N = (undefined && undefined.__read) || function (o, n) {\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n    if (!m) return o;\n    var i = m.call(o), r, ar = [], e;\n    try {\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n    }\n    catch (error) { e = { error: error }; }\n    finally {\n        try {\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\n        }\n        finally { if (e) throw e.error; }\n    }\n    return ar;\n};\n/**\n * Maps continuous domain to a continuous range.\n */\nvar LinearScale$1 = /** @class */ (function (_super) {\n    __extends$2l(LinearScale, _super);\n    function LinearScale() {\n        var _this = _super.call(this, [0, 1], [0, 1]) || this;\n        _this.type = 'linear';\n        return _this;\n    }\n    LinearScale.prototype.toDomain = function (d) {\n        return d;\n    };\n    LinearScale.prototype.ticks = function () {\n        var _a;\n        var count = (_a = this.tickCount) !== null && _a !== void 0 ? _a : ContinuousScale.defaultTickCount;\n        if (!this.domain || this.domain.length < 2 || count < 1 || this.domain.some(function (d) { return !isFinite(d); })) {\n            return [];\n        }\n        this.refresh();\n        var _b = __read$N(this.getDomain(), 2), d0 = _b[0], d1 = _b[1];\n        var interval = this.interval;\n        if (interval) {\n            var step = Math.abs(interval);\n            if (!this.isDenseInterval({ start: d0, stop: d1, interval: step })) {\n                return range(d0, d1, step);\n            }\n        }\n        return ticks(d0, d1, count, this.minTickCount, this.maxTickCount);\n    };\n    LinearScale.prototype.update = function () {\n        if (!this.domain || this.domain.length < 2) {\n            return;\n        }\n        if (this.nice) {\n            this.updateNiceDomain();\n        }\n    };\n    /**\n     * Extends the domain so that it starts and ends on nice round values.\n     * @param count Tick count.\n     */\n    LinearScale.prototype.updateNiceDomain = function () {\n        var _a, _b;\n        var count = (_a = this.tickCount) !== null && _a !== void 0 ? _a : ContinuousScale.defaultTickCount;\n        var _c = __read$N(this.domain, 2), start = _c[0], stop = _c[1];\n        if (count < 1) {\n            this.niceDomain = [start, stop];\n            return;\n        }\n        if (count === 1) {\n            this.niceDomain = singleTickDomain(start, stop);\n            return;\n        }\n        var maxAttempts = 4;\n        var prev0 = start;\n        var prev1 = stop;\n        for (var i = 0; i < maxAttempts; i++) {\n            var step = (_b = this.interval) !== null && _b !== void 0 ? _b : tickStep(start, stop, count, this.minTickCount, this.maxTickCount);\n            var _d = __read$N(this.domain, 2), d0 = _d[0], d1 = _d[1];\n            if (step >= 1) {\n                start = Math.floor(d0 / step) * step;\n                stop = Math.ceil(d1 / step) * step;\n            }\n            else {\n                // Prevent floating point error\n                var s = 1 / step;\n                start = Math.floor(d0 * s) / s;\n                stop = Math.ceil(d1 * s) / s;\n            }\n            if (start === prev0 && stop === prev1) {\n                break;\n            }\n            prev0 = start;\n            prev1 = stop;\n        }\n        this.niceDomain = [start, stop];\n    };\n    LinearScale.prototype.tickFormat = function (_a) {\n        var ticks = _a.ticks, specifier = _a.specifier;\n        return tickFormat(ticks || this.ticks(), specifier);\n    };\n    return LinearScale;\n}(ContinuousScale));\n\nvar __extends$2k = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __assign$E = (undefined && undefined.__assign) || function () {\n    __assign$E = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign$E.apply(this, arguments);\n};\nvar __decorate$1C = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __read$M = (undefined && undefined.__read) || function (o, n) {\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n    if (!m) return o;\n    var i = m.call(o), r, ar = [], e;\n    try {\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n    }\n    catch (error) { e = { error: error }; }\n    finally {\n        try {\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\n        }\n        finally { if (e) throw e.error; }\n    }\n    return ar;\n};\nvar __spread$r = (undefined && undefined.__spread) || function () {\n    for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read$M(arguments[i]));\n    return ar;\n};\nvar __values$o = (undefined && undefined.__values) || function(o) {\n    var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n    if (m) return m.call(o);\n    if (o && typeof o.length === \"number\") return {\n        next: function () {\n            if (o && i >= o.length) o = void 0;\n            return { value: o && o[i++], done: !o };\n        }\n    };\n    throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nfunction flipChartAxisDirection(direction) {\n    if (direction === ChartAxisDirection.X) {\n        return ChartAxisDirection.Y;\n    }\n    else {\n        return ChartAxisDirection.X;\n    }\n}\nvar ChartAxis = /** @class */ (function (_super) {\n    __extends$2k(ChartAxis, _super);\n    function ChartAxis(moduleCtx, scale) {\n        var _this = _super.call(this, scale) || this;\n        _this.moduleCtx = moduleCtx;\n        _this.keys = [];\n        _this.direction = ChartAxisDirection.Y;\n        _this.boundSeries = [];\n        _this.includeInvisibleDomains = false;\n        _this.modules = {};\n        _this._position = 'left';\n        return _this;\n    }\n    Object.defineProperty(ChartAxis.prototype, \"type\", {\n        get: function () {\n            return this.constructor.type || '';\n        },\n        enumerable: false,\n        configurable: true\n    });\n    ChartAxis.prototype.useCalculatedTickCount = function () {\n        // We only want to use the new algorithm for number axes. Category axes don't use a\n        // calculated or user-supplied tick-count, and time axes need special handling depending on\n        // the time-range involved.\n        return this.scale instanceof LinearScale$1;\n    };\n    Object.defineProperty(ChartAxis.prototype, \"position\", {\n        get: function () {\n            return this._position;\n        },\n        set: function (value) {\n            if (this._position !== value) {\n                this._position = value;\n                switch (value) {\n                    case 'top':\n                        this.direction = ChartAxisDirection.X;\n                        this.rotation = -90;\n                        this.label.mirrored = true;\n                        this.label.parallel = true;\n                        break;\n                    case 'right':\n                        this.direction = ChartAxisDirection.Y;\n                        this.rotation = 0;\n                        this.label.mirrored = true;\n                        this.label.parallel = false;\n                        break;\n                    case 'bottom':\n                        this.direction = ChartAxisDirection.X;\n                        this.rotation = -90;\n                        this.label.mirrored = false;\n                        this.label.parallel = true;\n                        break;\n                    case 'left':\n                        this.direction = ChartAxisDirection.Y;\n                        this.rotation = 0;\n                        this.label.mirrored = false;\n                        this.label.parallel = false;\n                        break;\n                }\n                if (this.axisContext) {\n                    this.axisContext.position = value;\n                    this.axisContext.direction = this.direction;\n                }\n            }\n        },\n        enumerable: false,\n        configurable: true\n    });\n    ChartAxis.prototype.calculateDomain = function () {\n        var _a;\n        var _b = this, direction = _b.direction, boundSeries = _b.boundSeries, includeInvisibleDomains = _b.includeInvisibleDomains;\n        if (this.linkedTo) {\n            this.dataDomain = this.linkedTo.dataDomain;\n        }\n        else {\n            var domains_1 = [];\n            boundSeries\n                .filter(function (s) { return includeInvisibleDomains || s.isEnabled(); })\n                .forEach(function (series) {\n                domains_1.push(series.getDomain(direction));\n            });\n            var domain = (_a = new Array()).concat.apply(_a, __spread$r(domains_1));\n            this.dataDomain = this.normaliseDataDomain(domain);\n        }\n    };\n    ChartAxis.prototype.normaliseDataDomain = function (d) {\n        return d;\n    };\n    ChartAxis.prototype.isAnySeriesActive = function () {\n        var _this = this;\n        return this.boundSeries.some(function (s) { return _this.includeInvisibleDomains || s.isEnabled(); });\n    };\n    ChartAxis.prototype.getLayoutState = function () {\n        return __assign$E({ rect: this.computeBBox(), gridPadding: this.gridPadding, seriesAreaPadding: this.seriesAreaPadding, tickSize: this.tick.size }, this.layout);\n    };\n    ChartAxis.prototype.addModule = function (module) {\n        var _this = this;\n        if (this.modules[module.optionsKey] != null) {\n            throw new Error('AG Charts - module already initialised: ' + module.optionsKey);\n        }\n        if (this.axisContext == null) {\n            var keys = function () {\n                return _this.boundSeries\n                    .map(function (s) { return s.getKeys(_this.direction); })\n                    .reduce(function (keys, seriesKeys) {\n                    keys.push.apply(keys, __spread$r(seriesKeys));\n                    return keys;\n                }, []);\n            };\n            this.axisContext = {\n                axisId: this.id,\n                position: this.position,\n                direction: this.direction,\n                continuous: this.scale instanceof ContinuousScale,\n                keys: keys,\n                scaleValueFormatter: function (specifier) { var _a, _b, _c; return (_c = (_b = (_a = _this.scale).tickFormat) === null || _b === void 0 ? void 0 : _b.call(_a, { specifier: specifier })) !== null && _c !== void 0 ? _c : undefined; },\n                scaleBandwidth: function () { var _a; return (_a = _this.scale.bandwidth) !== null && _a !== void 0 ? _a : 0; },\n                scaleConvert: function (val) { return _this.scale.convert(val); },\n                scaleInvert: function (val) { var _a, _b, _c; return (_c = (_b = (_a = _this.scale).invert) === null || _b === void 0 ? void 0 : _b.call(_a, val)) !== null && _c !== void 0 ? _c : undefined; },\n            };\n        }\n        var moduleMeta = module.initialiseModule(__assign$E(__assign$E({}, this.moduleCtx), { parent: this.axisContext }));\n        this.modules[module.optionsKey] = moduleMeta;\n        this[module.optionsKey] = moduleMeta.instance;\n    };\n    ChartAxis.prototype.removeModule = function (module) {\n        var _a, _b;\n        (_b = (_a = this.modules[module.optionsKey]) === null || _a === void 0 ? void 0 : _a.instance) === null || _b === void 0 ? void 0 : _b.destroy();\n        delete this.modules[module.optionsKey];\n        delete this[module.optionsKey];\n    };\n    ChartAxis.prototype.isModuleEnabled = function (module) {\n        return this.modules[module.optionsKey] != null;\n    };\n    ChartAxis.prototype.destroy = function () {\n        var e_1, _a;\n        _super.prototype.destroy.call(this);\n        try {\n            for (var _b = __values$o(Object.entries(this.modules)), _c = _b.next(); !_c.done; _c = _b.next()) {\n                var _d = __read$M(_c.value, 2), key = _d[0], module_1 = _d[1];\n                module_1.instance.destroy();\n                delete this.modules[key];\n                delete this[key];\n            }\n        }\n        catch (e_1_1) { e_1 = { error: e_1_1 }; }\n        finally {\n            try {\n                if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n            }\n            finally { if (e_1) throw e_1.error; }\n        }\n    };\n    __decorate$1C([\n        Validate(STRING_ARRAY)\n    ], ChartAxis.prototype, \"keys\", void 0);\n    __decorate$1C([\n        Validate(POSITION)\n    ], ChartAxis.prototype, \"_position\", void 0);\n    return ChartAxis;\n}(Axis));\n\nvar __extends$2j = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$1B = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __read$L = (undefined && undefined.__read) || function (o, n) {\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n    if (!m) return o;\n    var i = m.call(o), r, ar = [], e;\n    try {\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n    }\n    catch (error) { e = { error: error }; }\n    finally {\n        try {\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\n        }\n        finally { if (e) throw e.error; }\n    }\n    return ar;\n};\nvar __spread$q = (undefined && undefined.__spread) || function () {\n    for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read$L(arguments[i]));\n    return ar;\n};\nvar CategoryAxis = /** @class */ (function (_super) {\n    __extends$2j(CategoryAxis, _super);\n    function CategoryAxis(moduleCtx) {\n        var _this = _super.call(this, moduleCtx, new BandScale$5()) || this;\n        _this._paddingOverrideEnabled = false;\n        _this.groupPaddingInner = 0.1;\n        _this.includeInvisibleDomains = true;\n        return _this;\n    }\n    Object.defineProperty(CategoryAxis.prototype, \"paddingInner\", {\n        get: function () {\n            this._paddingOverrideEnabled = true;\n            return this.scale.paddingInner;\n        },\n        set: function (value) {\n            this._paddingOverrideEnabled = true;\n            this.scale.paddingInner = value;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(CategoryAxis.prototype, \"paddingOuter\", {\n        get: function () {\n            return this.scale.paddingOuter;\n        },\n        set: function (value) {\n            this.scale.paddingOuter = value;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    CategoryAxis.prototype.normaliseDataDomain = function (d) {\n        // Prevent duplicate categories.\n        var valuesSet = new Set(d);\n        return new (Array.bind.apply(Array, __spread$q([void 0], valuesSet.values())))();\n    };\n    CategoryAxis.prototype.calculateDomain = function () {\n        if (!this._paddingOverrideEnabled) {\n            var boundSeries = this.boundSeries;\n            var paddings = boundSeries.map(function (s) { var _a; return (_a = s.getBandScalePadding) === null || _a === void 0 ? void 0 : _a.call(s); }).filter(function (p) { return p != null; });\n            if (paddings.length > 0) {\n                this.scale.paddingInner = Math.min.apply(Math, __spread$q(paddings.map(function (p) { return p.inner; })));\n                this.scale.paddingOuter = Math.max.apply(Math, __spread$q(paddings.map(function (p) { return p.outer; })));\n            }\n        }\n        return _super.prototype.calculateDomain.call(this);\n    };\n    CategoryAxis.className = 'CategoryAxis';\n    CategoryAxis.type = 'category';\n    __decorate$1B([\n        Validate(NUMBER(0, 1))\n    ], CategoryAxis.prototype, \"groupPaddingInner\", void 0);\n    return CategoryAxis;\n}(ChartAxis));\n\nvar __assign$D = (undefined && undefined.__assign) || function () {\n    __assign$D = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign$D.apply(this, arguments);\n};\nvar __read$K = (undefined && undefined.__read) || function (o, n) {\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n    if (!m) return o;\n    var i = m.call(o), r, ar = [], e;\n    try {\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n    }\n    catch (error) { e = { error: error }; }\n    finally {\n        try {\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\n        }\n        finally { if (e) throw e.error; }\n    }\n    return ar;\n};\nvar __spread$p = (undefined && undefined.__spread) || function () {\n    for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read$K(arguments[i]));\n    return ar;\n};\nvar __values$n = (undefined && undefined.__values) || function(o) {\n    var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n    if (m) return m.call(o);\n    if (o && typeof o.length === \"number\") return {\n        next: function () {\n            if (o && i >= o.length) o = void 0;\n            return { value: o && o[i++], done: !o };\n        }\n    };\n    throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\n/**\n * Performs a JSON-diff between a source and target JSON structure.\n *\n * On a per property basis, takes the target property value where:\n * - types are different.\n * - type is primitive.\n * - type is array and length or content have changed.\n *\n * Recurses for object types.\n *\n * @param source starting point for diff\n * @param target target for diff vs. source\n *\n * @returns `null` if no differences, or an object with the subset of properties that have changed.\n */\nfunction jsonDiff(source, target) {\n    var e_1, _a;\n    var sourceType = classify(source);\n    var targetType = classify(target);\n    if (targetType === 'array') {\n        var targetArray = target;\n        if (sourceType !== 'array' || source.length !== targetArray.length) {\n            return __spread$p(targetArray);\n        }\n        if (targetArray.some(function (targetElement, i) { var _a; return jsonDiff((_a = source) === null || _a === void 0 ? void 0 : _a[i], targetElement) != null; })) {\n            return __spread$p(targetArray);\n        }\n        return null;\n    }\n    if (targetType === 'primitive') {\n        if (sourceType !== 'primitive') {\n            return __assign$D({}, target);\n        }\n        if (source !== target) {\n            return target;\n        }\n        return null;\n    }\n    var lhs = source || {};\n    var rhs = target || {};\n    var allProps = new Set(__spread$p(Object.keys(lhs), Object.keys(rhs)));\n    var propsChangedCount = 0;\n    var result = {};\n    var _loop_1 = function (prop) {\n        // Cheap-and-easy equality check.\n        if (lhs[prop] === rhs[prop]) {\n            return \"continue\";\n        }\n        var take = function (v) {\n            result[prop] = v;\n            propsChangedCount++;\n        };\n        var lhsType = classify(lhs[prop]);\n        var rhsType = classify(rhs[prop]);\n        if (lhsType !== rhsType) {\n            // Types changed, just take RHS.\n            take(rhs[prop]);\n            return \"continue\";\n        }\n        if (rhsType === 'primitive' || rhsType === null) {\n            take(rhs[prop]);\n            return \"continue\";\n        }\n        if (rhsType === 'array' && lhs[prop].length !== rhs[prop].length) {\n            // Arrays are different sizes, so just take target array.\n            take(rhs[prop]);\n            return \"continue\";\n        }\n        if (rhsType === 'class-instance') {\n            // Don't try to do anything tricky with array diffs!\n            take(rhs[prop]);\n            return \"continue\";\n        }\n        if (rhsType === 'function' && lhs[prop] !== rhs[prop]) {\n            take(rhs[prop]);\n            return \"continue\";\n        }\n        var diff = jsonDiff(lhs[prop], rhs[prop]);\n        if (diff !== null) {\n            take(diff);\n        }\n    };\n    try {\n        for (var allProps_1 = __values$n(allProps), allProps_1_1 = allProps_1.next(); !allProps_1_1.done; allProps_1_1 = allProps_1.next()) {\n            var prop = allProps_1_1.value;\n            _loop_1(prop);\n        }\n    }\n    catch (e_1_1) { e_1 = { error: e_1_1 }; }\n    finally {\n        try {\n            if (allProps_1_1 && !allProps_1_1.done && (_a = allProps_1.return)) _a.call(allProps_1);\n        }\n        finally { if (e_1) throw e_1.error; }\n    }\n    return propsChangedCount === 0 ? null : result;\n}\n/**\n * Special value used by `jsonMerge` to signal that a property should be removed from the merged\n * output.\n */\nvar DELETE = Symbol('<delete-property>');\nvar NOT_SPECIFIED = Symbol('<unspecified-property>');\n/**\n * Merge together the provide JSON object structures, with the precedence of application running\n * from higher indexes to lower indexes.\n *\n * Deep-clones all objects to avoid mutation of the inputs changing the output object. For arrays,\n * just performs a deep-clone of the entire array, no merging of elements attempted.\n *\n * @param json all json objects to merge\n * @param opts merge options\n * @param opts.avoidDeepClone contains a list of properties where deep clones should be avoided\n *\n * @returns the combination of all of the json inputs\n */\nfunction jsonMerge(json, opts) {\n    var e_2, _a;\n    var avoidDeepClone = (opts === null || opts === void 0 ? void 0 : opts.avoidDeepClone) || [];\n    var jsonTypes = json.map(function (v) { return classify(v); });\n    if (jsonTypes.some(function (v) { return v === 'array'; })) {\n        // Clone final array.\n        var finalValue = json[json.length - 1];\n        if (finalValue instanceof Array) {\n            return finalValue.map(function (v) {\n                var type = classify(v);\n                if (type === 'array')\n                    return jsonMerge([[], v], opts);\n                if (type === 'object')\n                    return jsonMerge([{}, v], opts);\n                return v;\n            });\n        }\n        return finalValue;\n    }\n    var result = {};\n    var props = new Set(json.map(function (v) { return (v != null ? Object.keys(v) : []); }).reduce(function (r, n) { return r.concat(n); }, []));\n    var _loop_2 = function (nextProp) {\n        var values = json\n            .map(function (j) { return (j != null && nextProp in j ? j[nextProp] : NOT_SPECIFIED); })\n            .filter(function (v) { return v !== NOT_SPECIFIED; });\n        if (values.length === 0) {\n            return \"continue\";\n        }\n        var lastValue = values[values.length - 1];\n        if (lastValue === DELETE) {\n            return \"continue\";\n        }\n        var types = values.map(function (v) { return classify(v); });\n        var type = types[0];\n        if (types.some(function (t) { return t !== type; })) {\n            // Short-circuit if mismatching types.\n            result[nextProp] = lastValue;\n            return \"continue\";\n        }\n        if ((type === 'array' || type === 'object') && !avoidDeepClone.includes(nextProp)) {\n            result[nextProp] = jsonMerge(values, opts);\n        }\n        else if (type === 'array') {\n            // Arrays need to be shallow copied to avoid external mutation and allow jsonDiff to\n            // detect changes.\n            result[nextProp] = __spread$p(lastValue);\n        }\n        else {\n            // Just directly assign/overwrite.\n            result[nextProp] = lastValue;\n        }\n    };\n    try {\n        for (var props_1 = __values$n(props), props_1_1 = props_1.next(); !props_1_1.done; props_1_1 = props_1.next()) {\n            var nextProp = props_1_1.value;\n            _loop_2(nextProp);\n        }\n    }\n    catch (e_2_1) { e_2 = { error: e_2_1 }; }\n    finally {\n        try {\n            if (props_1_1 && !props_1_1.done && (_a = props_1.return)) _a.call(props_1);\n        }\n        finally { if (e_2) throw e_2.error; }\n    }\n    return result;\n}\n/**\n * Recursively apply a JSON object into a class-hierarchy, optionally instantiating certain classes\n * by property name.\n *\n * @param target to apply source JSON properties into\n * @param source to be applied\n * @param params.path path for logging/error purposes, to aid with pinpointing problems\n * @param params.matcherPath path for pattern matching, to lookup allowedTypes override.\n * @param params.skip property names to skip from the source\n * @param params.constructors dictionary of property name to class constructors for properties that\n *                            require object construction\n * @param params.allowedTypes overrides by path for allowed property types\n */\nfunction jsonApply(target, source, params) {\n    var _a;\n    if (params === void 0) { params = {}; }\n    var _b = params.path, path = _b === void 0 ? undefined : _b, _c = params.matcherPath, matcherPath = _c === void 0 ? path ? path.replace(/(\\[[0-9+]+\\])/i, '[]') : undefined : _c, _d = params.skip, skip = _d === void 0 ? [] : _d, _e = params.constructors, constructors = _e === void 0 ? {} : _e, _f = params.allowedTypes, allowedTypes = _f === void 0 ? {} : _f, idx = params.idx;\n    if (target == null) {\n        throw new Error(\"AG Charts - target is uninitialised: \" + (path || '<root>'));\n    }\n    if (source == null) {\n        return target;\n    }\n    var targetAny = target;\n    if (idx != null && '_declarationOrder' in targetAny) {\n        targetAny['_declarationOrder'] = idx;\n    }\n    var targetType = classify(target);\n    var _loop_3 = function (property) {\n        var propertyMatcherPath = \"\" + (matcherPath ? matcherPath + '.' : '') + property;\n        if (skip.indexOf(propertyMatcherPath) >= 0) {\n            return \"continue\";\n        }\n        var newValue = source[property];\n        var propertyPath = \"\" + (path ? path + '.' : '') + property;\n        var targetClass = targetAny.constructor;\n        var currentValue = targetAny[property];\n        var ctr = (_a = constructors[property]) !== null && _a !== void 0 ? _a : constructors[propertyMatcherPath];\n        try {\n            var currentValueType = classify(currentValue);\n            var newValueType = classify(newValue);\n            if (targetType === 'class-instance' &&\n                !(property in target || Object.prototype.hasOwnProperty.call(targetAny, property))) {\n                Logger.warn(\"unable to set [\" + propertyPath + \"] in \" + (targetClass === null || targetClass === void 0 ? void 0 : targetClass.name) + \" - property is unknown\");\n                return \"continue\";\n            }\n            var allowableTypes = allowedTypes[propertyMatcherPath] || [currentValueType];\n            if (currentValueType === 'class-instance' && newValueType === 'object') {\n                // Allowed, this is the common case! - do not error.\n            }\n            else if (currentValueType != null && newValueType != null && !allowableTypes.includes(newValueType)) {\n                Logger.warn(\"unable to set [\" + propertyPath + \"] in \" + (targetClass === null || targetClass === void 0 ? void 0 : targetClass.name) + \" - can't apply type of [\" + newValueType + \"], allowed types are: [\" + allowableTypes + \"]\");\n                return \"continue\";\n            }\n            if (newValueType === 'array') {\n                ctr = ctr !== null && ctr !== void 0 ? ctr : constructors[propertyMatcherPath + \"[]\"];\n                if (ctr != null) {\n                    var newValueArray = newValue;\n                    targetAny[property] = newValueArray.map(function (v, idx) {\n                        return jsonApply(new ctr(), v, __assign$D(__assign$D({}, params), { path: propertyPath, matcherPath: propertyMatcherPath + '[]', idx: idx }));\n                    });\n                }\n                else {\n                    targetAny[property] = newValue;\n                }\n            }\n            else if (newValueType === 'class-instance') {\n                targetAny[property] = newValue;\n            }\n            else if (newValueType === 'object') {\n                if (currentValue != null) {\n                    jsonApply(currentValue, newValue, __assign$D(__assign$D({}, params), { path: propertyPath, matcherPath: propertyMatcherPath, idx: undefined }));\n                }\n                else if (ctr != null) {\n                    targetAny[property] = jsonApply(new ctr(), newValue, __assign$D(__assign$D({}, params), { path: propertyPath, matcherPath: propertyMatcherPath, idx: undefined }));\n                }\n                else {\n                    targetAny[property] = newValue;\n                }\n            }\n            else {\n                targetAny[property] = newValue;\n            }\n        }\n        catch (error) {\n            var err = error;\n            Logger.warn(\"unable to set [\" + propertyPath + \"] in [\" + (targetClass === null || targetClass === void 0 ? void 0 : targetClass.name) + \"]; nested error is: \" + err.message);\n            return \"continue\";\n        }\n    };\n    for (var property in source) {\n        _loop_3(property);\n    }\n    return target;\n}\n/**\n * Walk the given JSON object graphs, invoking the visit() callback for every object encountered.\n * Arrays are descended into without a callback, however their elements will have the visit()\n * callback invoked if they are objects.\n *\n * @param json to traverse\n * @param visit callback for each non-primitive and non-array object found\n * @param opts.skip property names to skip when walking\n * @param jsons to traverse in parallel\n */\nfunction jsonWalk(json, visit, opts) {\n    var jsons = [];\n    for (var _i = 3; _i < arguments.length; _i++) {\n        jsons[_i - 3] = arguments[_i];\n    }\n    var jsonType = classify(json);\n    var skip = opts.skip || [];\n    if (jsonType === 'array') {\n        json.forEach(function (element, index) {\n            jsonWalk.apply(void 0, __spread$p([element, visit, opts], (jsons !== null && jsons !== void 0 ? jsons : []).map(function (o) { return o === null || o === void 0 ? void 0 : o[index]; })));\n        });\n        return;\n    }\n    else if (jsonType !== 'object') {\n        return;\n    }\n    visit.apply(void 0, __spread$p([jsonType, json], jsons));\n    var _loop_4 = function (property) {\n        if (skip.indexOf(property) >= 0) {\n            return \"continue\";\n        }\n        var value = json[property];\n        var otherValues = jsons === null || jsons === void 0 ? void 0 : jsons.map(function (o) { return o === null || o === void 0 ? void 0 : o[property]; });\n        var valueType = classify(value);\n        if (valueType === 'object' || valueType === 'array') {\n            jsonWalk.apply(void 0, __spread$p([value, visit, opts], otherValues));\n        }\n    };\n    for (var property in json) {\n        _loop_4(property);\n    }\n}\n/**\n * Classify the type of a value to assist with handling for merge purposes.\n */\nfunction classify(value) {\n    if (value == null) {\n        return null;\n    }\n    else if (value instanceof HTMLElement) {\n        return 'primitive';\n    }\n    else if (value instanceof Array) {\n        return 'array';\n    }\n    else if (value instanceof Date) {\n        return 'primitive';\n    }\n    else if (typeof value === 'object' && value.constructor === Object) {\n        return 'object';\n    }\n    else if (typeof value === 'function') {\n        return 'function';\n    }\n    else if (typeof value === 'object' && value.constructor != null) {\n        return 'class-instance';\n    }\n    return 'primitive';\n}\n\nvar __extends$2i = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$1A = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __awaiter$d = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {\n    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n    return new (P || (P = Promise))(function (resolve, reject) {\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\n    });\n};\nvar __generator$d = (undefined && undefined.__generator) || function (thisArg, body) {\n    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n    return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n    function verb(n) { return function (v) { return step([n, v]); }; }\n    function step(op) {\n        if (f) throw new TypeError(\"Generator is already executing.\");\n        while (_) try {\n            if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n            if (y = 0, t) op = [op[0] & 2, t.value];\n            switch (op[0]) {\n                case 0: case 1: t = op; break;\n                case 4: _.label++; return { value: op[1], done: false };\n                case 5: _.label++; y = op[1]; op = [0]; continue;\n                case 7: op = _.ops.pop(); _.trys.pop(); continue;\n                default:\n                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n                    if (t[2]) _.ops.pop();\n                    _.trys.pop(); continue;\n            }\n            op = body.call(thisArg, _);\n        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n    }\n};\nvar __read$J = (undefined && undefined.__read) || function (o, n) {\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n    if (!m) return o;\n    var i = m.call(o), r, ar = [], e;\n    try {\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n    }\n    catch (error) { e = { error: error }; }\n    finally {\n        try {\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\n        }\n        finally { if (e) throw e.error; }\n    }\n    return ar;\n};\nvar __spread$o = (undefined && undefined.__spread) || function () {\n    for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read$J(arguments[i]));\n    return ar;\n};\nvar __values$m = (undefined && undefined.__values) || function(o) {\n    var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n    if (m) return m.call(o);\n    if (o && typeof o.length === \"number\") return {\n        next: function () {\n            if (o && i >= o.length) o = void 0;\n            return { value: o && o[i++], done: !o };\n        }\n    };\n    throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nvar _a;\nvar DEFAULT_DIRECTION_KEYS = (_a = {},\n    _a[ChartAxisDirection.X] = ['xKey'],\n    _a[ChartAxisDirection.Y] = ['yKey'],\n    _a);\nvar CartesianSeriesNodeBaseClickEvent = /** @class */ (function (_super) {\n    __extends$2i(CartesianSeriesNodeBaseClickEvent, _super);\n    function CartesianSeriesNodeBaseClickEvent(xKey, yKey, nativeEvent, datum, series) {\n        var _this = _super.call(this, nativeEvent, datum, series) || this;\n        _this.xKey = xKey;\n        _this.yKey = yKey;\n        return _this;\n    }\n    return CartesianSeriesNodeBaseClickEvent;\n}(SeriesNodeBaseClickEvent));\nvar CartesianSeriesNodeClickEvent = /** @class */ (function (_super) {\n    __extends$2i(CartesianSeriesNodeClickEvent, _super);\n    function CartesianSeriesNodeClickEvent() {\n        var _this = _super !== null && _super.apply(this, arguments) || this;\n        _this.type = 'nodeClick';\n        return _this;\n    }\n    return CartesianSeriesNodeClickEvent;\n}(CartesianSeriesNodeBaseClickEvent));\nvar CartesianSeriesNodeDoubleClickEvent = /** @class */ (function (_super) {\n    __extends$2i(CartesianSeriesNodeDoubleClickEvent, _super);\n    function CartesianSeriesNodeDoubleClickEvent() {\n        var _this = _super !== null && _super.apply(this, arguments) || this;\n        _this.type = 'nodeDoubleClick';\n        return _this;\n    }\n    return CartesianSeriesNodeDoubleClickEvent;\n}(CartesianSeriesNodeBaseClickEvent));\nvar CartesianSeries = /** @class */ (function (_super) {\n    __extends$2i(CartesianSeries, _super);\n    function CartesianSeries(opts) {\n        if (opts === void 0) { opts = {}; }\n        var _a;\n        var _this = _super.call(this, {\n            useSeriesGroupLayer: true,\n            pickModes: opts.pickModes,\n            directionKeys: (_a = opts.directionKeys) !== null && _a !== void 0 ? _a : DEFAULT_DIRECTION_KEYS,\n        }) || this;\n        _this._contextNodeData = [];\n        _this.nodeDataDependencies = {};\n        _this.highlightSelection = Selection.select(_this.highlightNode, function () {\n            return _this.opts.hasMarkers ? _this.markerFactory() : _this.nodeFactory();\n        });\n        _this.highlightLabelSelection = Selection.select(_this.highlightLabel, Text);\n        _this.subGroups = [];\n        _this.subGroupId = 0;\n        /**\n         * The assumption is that the values will be reset (to `true`)\n         * in the {@link yKeys} setter.\n         */\n        _this.seriesItemEnabled = new Map();\n        var _b = opts.pathsPerSeries, pathsPerSeries = _b === void 0 ? 1 : _b, _c = opts.hasMarkers, hasMarkers = _c === void 0 ? false : _c, _d = opts.pathsZIndexSubOrderOffset, pathsZIndexSubOrderOffset = _d === void 0 ? [] : _d, _e = opts.renderLayerPerSubSeries, renderLayerPerSubSeries = _e === void 0 ? true : _e;\n        _this.opts = { pathsPerSeries: pathsPerSeries, hasMarkers: hasMarkers, pathsZIndexSubOrderOffset: pathsZIndexSubOrderOffset, renderLayerPerSubSeries: renderLayerPerSubSeries };\n        return _this;\n    }\n    Object.defineProperty(CartesianSeries.prototype, \"contextNodeData\", {\n        get: function () {\n            var _a;\n            return (_a = this._contextNodeData) === null || _a === void 0 ? void 0 : _a.slice();\n        },\n        enumerable: false,\n        configurable: true\n    });\n    CartesianSeries.prototype.destroy = function () {\n        _super.prototype.destroy.call(this);\n        this._contextNodeData.splice(0, this._contextNodeData.length);\n        this.subGroups.splice(0, this.subGroups.length);\n    };\n    /**\n     * Note: we are passing `isContinuousX` and `isContinuousY` into this method because it will\n     *       typically be called inside a loop and this check only needs to happen once.\n     * @param x A domain value to be plotted along the x-axis.\n     * @param y A domain value to be plotted along the y-axis.\n     * @param isContinuousX Typically this will be the value of `xAxis.scale instanceof ContinuousScale`.\n     * @param isContinuousY Typically this will be the value of `yAxis.scale instanceof ContinuousScale`.\n     * @returns `[x, y]`, if both x and y are valid domain values for their respective axes/scales, or `undefined`.\n     */\n    CartesianSeries.prototype.checkDomainXY = function (x, y, isContinuousX, isContinuousY) {\n        var isValidDatum = ((isContinuousX && isContinuous(x)) || (!isContinuousX && isDiscrete(x))) &&\n            ((isContinuousY && isContinuous(y)) || (!isContinuousY && isDiscrete(y)));\n        return isValidDatum ? [x, y] : undefined;\n    };\n    /**\n     * Note: we are passing the xAxis and yAxis because the calling code is supposed to make sure\n     *       that series has both of them defined, and also to avoid one level of indirection,\n     *       e.g. `this.xAxis!.inRange(x)`, both of which are suboptimal in tight loops where this method is used.\n     * @param x A range value to be plotted along the x-axis.\n     * @param y A range value to be plotted along the y-axis.\n     * @param xAxis The series' x-axis.\n     * @param yAxis The series' y-axis.\n     * @returns\n     */\n    CartesianSeries.prototype.checkRangeXY = function (x, y, xAxis, yAxis) {\n        return !isNaN(x) && !isNaN(y) && xAxis.inRange(x) && yAxis.inRange(y);\n    };\n    CartesianSeries.prototype.update = function (_a) {\n        var _b, _c;\n        var seriesRect = _a.seriesRect;\n        return __awaiter$d(this, void 0, void 0, function () {\n            var _d, seriesItemEnabled, visible, series, seriesHighlighted, anySeriesItemEnabled, newNodeDataDependencies;\n            return __generator$d(this, function (_e) {\n                switch (_e.label) {\n                    case 0:\n                        _d = this, seriesItemEnabled = _d.seriesItemEnabled, visible = _d.visible;\n                        series = ((_c = (_b = this.highlightManager) === null || _b === void 0 ? void 0 : _b.getActiveHighlight()) !== null && _c !== void 0 ? _c : {}).series;\n                        seriesHighlighted = series ? series === this : undefined;\n                        anySeriesItemEnabled = (visible && seriesItemEnabled.size === 0) || __spread$o(seriesItemEnabled.values()).some(function (v) { return v === true; });\n                        newNodeDataDependencies = {\n                            seriesRectWidth: seriesRect === null || seriesRect === void 0 ? void 0 : seriesRect.width,\n                            seriesRectHeight: seriesRect === null || seriesRect === void 0 ? void 0 : seriesRect.height,\n                        };\n                        if (jsonDiff(this.nodeDataDependencies, newNodeDataDependencies) != null) {\n                            this.nodeDataDependencies = newNodeDataDependencies;\n                            this.markNodeDataDirty();\n                        }\n                        return [4 /*yield*/, this.updateSelections(seriesHighlighted, anySeriesItemEnabled)];\n                    case 1:\n                        _e.sent();\n                        return [4 /*yield*/, this.updateNodes(seriesHighlighted, anySeriesItemEnabled)];\n                    case 2:\n                        _e.sent();\n                        return [2 /*return*/];\n                }\n            });\n        });\n    };\n    CartesianSeries.prototype.updateSelections = function (seriesHighlighted, anySeriesItemEnabled) {\n        return __awaiter$d(this, void 0, void 0, function () {\n            var _a;\n            var _this = this;\n            return __generator$d(this, function (_b) {\n                switch (_b.label) {\n                    case 0: return [4 /*yield*/, this.updateHighlightSelection(seriesHighlighted)];\n                    case 1:\n                        _b.sent();\n                        if (!anySeriesItemEnabled) {\n                            return [2 /*return*/];\n                        }\n                        if (!this.nodeDataRefresh && !this.isPathOrSelectionDirty()) {\n                            return [2 /*return*/];\n                        }\n                        if (!this.nodeDataRefresh) return [3 /*break*/, 4];\n                        this.nodeDataRefresh = false;\n                        _a = this;\n                        return [4 /*yield*/, this.createNodeData()];\n                    case 2:\n                        _a._contextNodeData = _b.sent();\n                        return [4 /*yield*/, this.updateSeriesGroups()];\n                    case 3:\n                        _b.sent();\n                        _b.label = 4;\n                    case 4: return [4 /*yield*/, Promise.all(this.subGroups.map(function (g, i) { return _this.updateSeriesGroupSelections(g, i, seriesHighlighted); }))];\n                    case 5:\n                        _b.sent();\n                        return [2 /*return*/];\n                }\n            });\n        });\n    };\n    CartesianSeries.prototype.updateSeriesGroupSelections = function (subGroup, seriesIdx, seriesHighlighted) {\n        return __awaiter$d(this, void 0, void 0, function () {\n            var datumSelection, labelSelection, markerSelection, paths, contextData, nodeData, labelData, itemId, _a, _b, _c;\n            return __generator$d(this, function (_d) {\n                switch (_d.label) {\n                    case 0:\n                        datumSelection = subGroup.datumSelection, labelSelection = subGroup.labelSelection, markerSelection = subGroup.markerSelection, paths = subGroup.paths;\n                        contextData = this._contextNodeData[seriesIdx];\n                        nodeData = contextData.nodeData, labelData = contextData.labelData, itemId = contextData.itemId;\n                        return [4 /*yield*/, this.updatePaths({ seriesHighlighted: seriesHighlighted, itemId: itemId, contextData: contextData, paths: paths, seriesIdx: seriesIdx })];\n                    case 1:\n                        _d.sent();\n                        _a = subGroup;\n                        return [4 /*yield*/, this.updateDatumSelection({ nodeData: nodeData, datumSelection: datumSelection, seriesIdx: seriesIdx })];\n                    case 2:\n                        _a.datumSelection = _d.sent();\n                        _b = subGroup;\n                        return [4 /*yield*/, this.updateLabelSelection({ labelData: labelData, labelSelection: labelSelection, seriesIdx: seriesIdx })];\n                    case 3:\n                        _b.labelSelection = _d.sent();\n                        if (!markerSelection) return [3 /*break*/, 5];\n                        _c = subGroup;\n                        return [4 /*yield*/, this.updateMarkerSelection({\n                                nodeData: nodeData,\n                                markerSelection: markerSelection,\n                                seriesIdx: seriesIdx,\n                            })];\n                    case 4:\n                        _c.markerSelection = _d.sent();\n                        _d.label = 5;\n                    case 5: return [2 /*return*/];\n                }\n            });\n        });\n    };\n    CartesianSeries.prototype.nodeFactory = function () {\n        return new Group();\n    };\n    CartesianSeries.prototype.markerFactory = function () {\n        var MarkerShape = getMarker$1();\n        return new MarkerShape();\n    };\n    CartesianSeries.prototype.updateSeriesGroups = function () {\n        var _a;\n        return __awaiter$d(this, void 0, void 0, function () {\n            var _b, contextNodeData, contentGroup, subGroups, _c, pathsPerSeries, hasMarkers, pathsZIndexSubOrderOffset, renderLayerPerSubSeries, totalGroups, layer, subGroupId, subGroupZOffset, dataNodeGroup, markerGroup, labelGroup, pathParentGroup, paths, index;\n            var _this = this;\n            return __generator$d(this, function (_d) {\n                _b = this, contextNodeData = _b._contextNodeData, contentGroup = _b.contentGroup, subGroups = _b.subGroups, _c = _b.opts, pathsPerSeries = _c.pathsPerSeries, hasMarkers = _c.hasMarkers, pathsZIndexSubOrderOffset = _c.pathsZIndexSubOrderOffset, renderLayerPerSubSeries = _c.renderLayerPerSubSeries;\n                if (contextNodeData.length === subGroups.length) {\n                    return [2 /*return*/];\n                }\n                if (contextNodeData.length < subGroups.length) {\n                    subGroups.splice(contextNodeData.length).forEach(function (_a) {\n                        var e_1, _b;\n                        var dataNodeGroup = _a.dataNodeGroup, markerGroup = _a.markerGroup, labelGroup = _a.labelGroup, paths = _a.paths;\n                        contentGroup.removeChild(dataNodeGroup);\n                        if (markerGroup) {\n                            contentGroup.removeChild(markerGroup);\n                        }\n                        if (labelGroup) {\n                            contentGroup.removeChild(labelGroup);\n                        }\n                        try {\n                            for (var paths_1 = __values$m(paths), paths_1_1 = paths_1.next(); !paths_1_1.done; paths_1_1 = paths_1.next()) {\n                                var path = paths_1_1.value;\n                                contentGroup.removeChild(path);\n                            }\n                        }\n                        catch (e_1_1) { e_1 = { error: e_1_1 }; }\n                        finally {\n                            try {\n                                if (paths_1_1 && !paths_1_1.done && (_b = paths_1.return)) _b.call(paths_1);\n                            }\n                            finally { if (e_1) throw e_1.error; }\n                        }\n                    });\n                }\n                totalGroups = contextNodeData.length;\n                while (totalGroups > subGroups.length) {\n                    layer = renderLayerPerSubSeries;\n                    subGroupId = this.subGroupId++;\n                    subGroupZOffset = subGroupId;\n                    dataNodeGroup = new Group({\n                        name: this.id + \"-series-sub\" + subGroupId + \"-dataNodes\",\n                        layer: layer,\n                        zIndex: Layers.SERIES_LAYER_ZINDEX,\n                        zIndexSubOrder: [function () { return _this._declarationOrder; }, subGroupZOffset],\n                    });\n                    markerGroup = hasMarkers\n                        ? new Group({\n                            name: this.id + \"-series-sub\" + this.subGroupId++ + \"-markers\",\n                            layer: layer,\n                            zIndex: Layers.SERIES_LAYER_ZINDEX,\n                            zIndexSubOrder: [function () { return _this._declarationOrder; }, 10000 + subGroupId],\n                        })\n                        : undefined;\n                    labelGroup = new Group({\n                        name: this.id + \"-series-sub\" + this.subGroupId++ + \"-labels\",\n                        layer: layer,\n                        zIndex: Layers.SERIES_LABEL_ZINDEX,\n                        zIndexSubOrder: [function () { return _this._declarationOrder; }, subGroupId],\n                    });\n                    contentGroup.appendChild(dataNodeGroup);\n                    contentGroup.appendChild(labelGroup);\n                    if (markerGroup) {\n                        contentGroup.appendChild(markerGroup);\n                    }\n                    pathParentGroup = renderLayerPerSubSeries ? dataNodeGroup : contentGroup;\n                    paths = [];\n                    for (index = 0; index < pathsPerSeries; index++) {\n                        paths[index] = new Path();\n                        paths[index].zIndex = Layers.SERIES_LAYER_ZINDEX;\n                        paths[index].zIndexSubOrder = [\n                            function () { return _this._declarationOrder; },\n                            ((_a = pathsZIndexSubOrderOffset[index]) !== null && _a !== void 0 ? _a : 0) + subGroupZOffset,\n                        ];\n                        pathParentGroup.appendChild(paths[index]);\n                    }\n                    subGroups.push({\n                        paths: paths,\n                        dataNodeGroup: dataNodeGroup,\n                        markerGroup: markerGroup,\n                        labelGroup: labelGroup,\n                        labelSelection: Selection.select(labelGroup, Text),\n                        datumSelection: Selection.select(dataNodeGroup, function () { return _this.nodeFactory(); }),\n                        markerSelection: markerGroup ? Selection.select(markerGroup, function () { return _this.markerFactory(); }) : undefined,\n                    });\n                }\n                return [2 /*return*/];\n            });\n        });\n    };\n    CartesianSeries.prototype.updateNodes = function (seriesHighlighted, anySeriesItemEnabled) {\n        var _a;\n        return __awaiter$d(this, void 0, void 0, function () {\n            var _b, highlightSelection, highlightLabelSelection, contextNodeData, seriesItemEnabled, _c, hasMarkers, renderLayerPerSubSeries, visible, seriesOpacity, subGroupOpacities, isSubGroupOpacityDifferent;\n            var _this = this;\n            return __generator$d(this, function (_d) {\n                switch (_d.label) {\n                    case 0:\n                        _b = this, highlightSelection = _b.highlightSelection, highlightLabelSelection = _b.highlightLabelSelection, contextNodeData = _b._contextNodeData, seriesItemEnabled = _b.seriesItemEnabled, _c = _b.opts, hasMarkers = _c.hasMarkers, renderLayerPerSubSeries = _c.renderLayerPerSubSeries;\n                        visible = this.visible && ((_a = this._contextNodeData) === null || _a === void 0 ? void 0 : _a.length) > 0 && anySeriesItemEnabled;\n                        this.rootGroup.visible = visible;\n                        this.contentGroup.visible = visible;\n                        this.highlightGroup.visible = visible && !!seriesHighlighted;\n                        seriesOpacity = this.getOpacity();\n                        subGroupOpacities = this.subGroups.map(function (_, index) {\n                            var itemId = contextNodeData[index].itemId;\n                            return _this.getOpacity({ itemId: itemId });\n                        });\n                        isSubGroupOpacityDifferent = subGroupOpacities.some(function (subOp) { return subOp !== seriesOpacity; });\n                        this.contentGroup.opacity = isSubGroupOpacityDifferent ? 1 : seriesOpacity;\n                        if (!hasMarkers) return [3 /*break*/, 2];\n                        return [4 /*yield*/, this.updateMarkerNodes({\n                                markerSelection: highlightSelection,\n                                isHighlight: true,\n                                seriesIdx: -1,\n                            })];\n                    case 1:\n                        _d.sent();\n                        return [3 /*break*/, 4];\n                    case 2: return [4 /*yield*/, this.updateDatumNodes({ datumSelection: highlightSelection, isHighlight: true, seriesIdx: -1 })];\n                    case 3:\n                        _d.sent();\n                        _d.label = 4;\n                    case 4: return [4 /*yield*/, this.updateLabelNodes({ labelSelection: highlightLabelSelection, seriesIdx: -1 })];\n                    case 5:\n                        _d.sent();\n                        return [4 /*yield*/, Promise.all(this.subGroups.map(function (subGroup, seriesIdx) { return __awaiter$d(_this, void 0, void 0, function () {\n                                var dataNodeGroup, markerGroup, datumSelection, labelSelection, markerSelection, paths, labelGroup, itemId, subGroupVisible, subGroupOpacity, paths_2, paths_2_1, path;\n                                var e_2, _a;\n                                var _b;\n                                return __generator$d(this, function (_c) {\n                                    switch (_c.label) {\n                                        case 0:\n                                            dataNodeGroup = subGroup.dataNodeGroup, markerGroup = subGroup.markerGroup, datumSelection = subGroup.datumSelection, labelSelection = subGroup.labelSelection, markerSelection = subGroup.markerSelection, paths = subGroup.paths, labelGroup = subGroup.labelGroup;\n                                            itemId = contextNodeData[seriesIdx].itemId;\n                                            subGroupVisible = visible && ((_b = seriesItemEnabled.get(itemId)) !== null && _b !== void 0 ? _b : true);\n                                            subGroupOpacity = isSubGroupOpacityDifferent ? subGroupOpacities[seriesIdx] : 1;\n                                            dataNodeGroup.opacity = subGroupOpacity;\n                                            dataNodeGroup.visible = subGroupVisible;\n                                            labelGroup.visible = subGroupVisible;\n                                            if (markerGroup) {\n                                                markerGroup.opacity = subGroupOpacity;\n                                                markerGroup.zIndex =\n                                                    dataNodeGroup.zIndex >= Layers.SERIES_LAYER_ZINDEX\n                                                        ? dataNodeGroup.zIndex\n                                                        : dataNodeGroup.zIndex + 1;\n                                                markerGroup.visible = subGroupVisible;\n                                            }\n                                            if (labelGroup) {\n                                                labelGroup.opacity = subGroupOpacity;\n                                            }\n                                            try {\n                                                for (paths_2 = __values$m(paths), paths_2_1 = paths_2.next(); !paths_2_1.done; paths_2_1 = paths_2.next()) {\n                                                    path = paths_2_1.value;\n                                                    if (!renderLayerPerSubSeries) {\n                                                        path.opacity = subGroupOpacity;\n                                                        path.visible = subGroupVisible;\n                                                    }\n                                                }\n                                            }\n                                            catch (e_2_1) { e_2 = { error: e_2_1 }; }\n                                            finally {\n                                                try {\n                                                    if (paths_2_1 && !paths_2_1.done && (_a = paths_2.return)) _a.call(paths_2);\n                                                }\n                                                finally { if (e_2) throw e_2.error; }\n                                            }\n                                            if (!dataNodeGroup.visible) {\n                                                return [2 /*return*/];\n                                            }\n                                            return [4 /*yield*/, this.updatePathNodes({ seriesHighlighted: seriesHighlighted, itemId: itemId, paths: paths, seriesIdx: seriesIdx })];\n                                        case 1:\n                                            _c.sent();\n                                            return [4 /*yield*/, this.updateDatumNodes({ datumSelection: datumSelection, isHighlight: false, seriesIdx: seriesIdx })];\n                                        case 2:\n                                            _c.sent();\n                                            return [4 /*yield*/, this.updateLabelNodes({ labelSelection: labelSelection, seriesIdx: seriesIdx })];\n                                        case 3:\n                                            _c.sent();\n                                            if (!(hasMarkers && markerSelection)) return [3 /*break*/, 5];\n                                            return [4 /*yield*/, this.updateMarkerNodes({ markerSelection: markerSelection, isHighlight: false, seriesIdx: seriesIdx })];\n                                        case 4:\n                                            _c.sent();\n                                            _c.label = 5;\n                                        case 5: return [2 /*return*/];\n                                    }\n                                });\n                            }); }))];\n                    case 6:\n                        _d.sent();\n                        return [2 /*return*/];\n                }\n            });\n        });\n    };\n    CartesianSeries.prototype.updateHighlightSelection = function (seriesHighlighted) {\n        var _a;\n        return __awaiter$d(this, void 0, void 0, function () {\n            var _b, highlightSelection, highlightLabelSelection, contextNodeData, highlightedDatum, item, _c, labelItem, _d, itemId_1, contextNodeData_1, contextNodeData_1_1, labelData, _e;\n            var e_3, _f;\n            return __generator$d(this, function (_g) {\n                switch (_g.label) {\n                    case 0:\n                        _b = this, highlightSelection = _b.highlightSelection, highlightLabelSelection = _b.highlightLabelSelection, contextNodeData = _b._contextNodeData;\n                        highlightedDatum = (_a = this.highlightManager) === null || _a === void 0 ? void 0 : _a.getActiveHighlight();\n                        item = seriesHighlighted && (highlightedDatum === null || highlightedDatum === void 0 ? void 0 : highlightedDatum.datum) ? highlightedDatum : undefined;\n                        _c = this;\n                        return [4 /*yield*/, this.updateHighlightSelectionItem({ item: item, highlightSelection: highlightSelection })];\n                    case 1:\n                        _c.highlightSelection = _g.sent();\n                        if (this.isLabelEnabled() && item != null) {\n                            _d = item.itemId, itemId_1 = _d === void 0 ? undefined : _d;\n                            try {\n                                for (contextNodeData_1 = __values$m(contextNodeData), contextNodeData_1_1 = contextNodeData_1.next(); !contextNodeData_1_1.done; contextNodeData_1_1 = contextNodeData_1.next()) {\n                                    labelData = contextNodeData_1_1.value.labelData;\n                                    labelItem = labelData.find(function (ld) { return ld.datum === item.datum && ld.itemId === itemId_1; });\n                                    if (labelItem != null) {\n                                        break;\n                                    }\n                                }\n                            }\n                            catch (e_3_1) { e_3 = { error: e_3_1 }; }\n                            finally {\n                                try {\n                                    if (contextNodeData_1_1 && !contextNodeData_1_1.done && (_f = contextNodeData_1.return)) _f.call(contextNodeData_1);\n                                }\n                                finally { if (e_3) throw e_3.error; }\n                            }\n                        }\n                        _e = this;\n                        return [4 /*yield*/, this.updateHighlightSelectionLabel({\n                                item: labelItem,\n                                highlightLabelSelection: highlightLabelSelection,\n                            })];\n                    case 2:\n                        _e.highlightLabelSelection = _g.sent();\n                        return [2 /*return*/];\n                }\n            });\n        });\n    };\n    CartesianSeries.prototype.pickNodeExactShape = function (point) {\n        var e_4, _a;\n        var result = _super.prototype.pickNodeExactShape.call(this, point);\n        if (result) {\n            return result;\n        }\n        var x = point.x, y = point.y;\n        var hasMarkers = this.opts.hasMarkers;\n        try {\n            for (var _b = __values$m(this.subGroups), _c = _b.next(); !_c.done; _c = _b.next()) {\n                var _d = _c.value, dataNodeGroup = _d.dataNodeGroup, markerGroup = _d.markerGroup;\n                var match = dataNodeGroup.pickNode(x, y);\n                if (!match && hasMarkers) {\n                    match = markerGroup === null || markerGroup === void 0 ? void 0 : markerGroup.pickNode(x, y);\n                }\n                if (match) {\n                    return { datum: match.datum, distance: 0 };\n                }\n            }\n        }\n        catch (e_4_1) { e_4 = { error: e_4_1 }; }\n        finally {\n            try {\n                if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n            }\n            finally { if (e_4) throw e_4.error; }\n        }\n    };\n    CartesianSeries.prototype.pickNodeClosestDatum = function (point) {\n        var e_5, _a, e_6, _b;\n        var _c, _d;\n        var x = point.x, y = point.y;\n        var _e = this, xAxis = _e.xAxis, yAxis = _e.yAxis, rootGroup = _e.rootGroup, contextNodeData = _e._contextNodeData;\n        var hitPoint = rootGroup.transformPoint(x, y);\n        var minDistance = Infinity;\n        var closestDatum;\n        try {\n            for (var contextNodeData_2 = __values$m(contextNodeData), contextNodeData_2_1 = contextNodeData_2.next(); !contextNodeData_2_1.done; contextNodeData_2_1 = contextNodeData_2.next()) {\n                var context = contextNodeData_2_1.value;\n                try {\n                    for (var _f = (e_6 = void 0, __values$m(context.nodeData)), _g = _f.next(); !_g.done; _g = _f.next()) {\n                        var datum = _g.value;\n                        var _h = datum.point, _j = _h === void 0 ? {} : _h, _k = _j.x, datumX = _k === void 0 ? NaN : _k, _l = _j.y, datumY = _l === void 0 ? NaN : _l;\n                        if (isNaN(datumX) || isNaN(datumY)) {\n                            continue;\n                        }\n                        var isInRange = (xAxis === null || xAxis === void 0 ? void 0 : xAxis.inRange(datumX)) && (yAxis === null || yAxis === void 0 ? void 0 : yAxis.inRange(datumY));\n                        if (!isInRange) {\n                            continue;\n                        }\n                        // No need to use Math.sqrt() since x < y implies Math.sqrt(x) < Math.sqrt(y) for\n                        // values > 1\n                        var distance = Math.max(Math.pow((hitPoint.x - datumX), 2) + Math.pow((hitPoint.y - datumY), 2), 0);\n                        if (distance < minDistance) {\n                            minDistance = distance;\n                            closestDatum = datum;\n                        }\n                    }\n                }\n                catch (e_6_1) { e_6 = { error: e_6_1 }; }\n                finally {\n                    try {\n                        if (_g && !_g.done && (_b = _f.return)) _b.call(_f);\n                    }\n                    finally { if (e_6) throw e_6.error; }\n                }\n            }\n        }\n        catch (e_5_1) { e_5 = { error: e_5_1 }; }\n        finally {\n            try {\n                if (contextNodeData_2_1 && !contextNodeData_2_1.done && (_a = contextNodeData_2.return)) _a.call(contextNodeData_2);\n            }\n            finally { if (e_5) throw e_5.error; }\n        }\n        if (closestDatum) {\n            var distance = Math.max(Math.sqrt(minDistance) - ((_d = (_c = closestDatum.point) === null || _c === void 0 ? void 0 : _c.size) !== null && _d !== void 0 ? _d : 0), 0);\n            return { datum: closestDatum, distance: distance };\n        }\n    };\n    CartesianSeries.prototype.pickNodeMainAxisFirst = function (point, requireCategoryAxis) {\n        var e_7, _a, e_8, _b;\n        var _c, _d;\n        var x = point.x, y = point.y;\n        var _e = this, xAxis = _e.xAxis, yAxis = _e.yAxis, rootGroup = _e.rootGroup, contextNodeData = _e._contextNodeData;\n        // Prefer to start search with any available category axis.\n        var directions = [xAxis, yAxis]\n            .filter(function (a) { return a instanceof CategoryAxis; })\n            .map(function (a) { return a.direction; });\n        if (requireCategoryAxis && directions.length === 0) {\n            return;\n        }\n        // Default to X-axis unless we found a suitable category axis.\n        var _f = __read$J(directions, 1), _g = _f[0], primaryDirection = _g === void 0 ? ChartAxisDirection.X : _g;\n        var hitPoint = rootGroup.transformPoint(x, y);\n        var hitPointCoords = primaryDirection === ChartAxisDirection.X ? [hitPoint.x, hitPoint.y] : [hitPoint.y, hitPoint.x];\n        var minDistance = [Infinity, Infinity];\n        var closestDatum = undefined;\n        try {\n            for (var contextNodeData_3 = __values$m(contextNodeData), contextNodeData_3_1 = contextNodeData_3.next(); !contextNodeData_3_1.done; contextNodeData_3_1 = contextNodeData_3.next()) {\n                var context = contextNodeData_3_1.value;\n                try {\n                    for (var _h = (e_8 = void 0, __values$m(context.nodeData)), _j = _h.next(); !_j.done; _j = _h.next()) {\n                        var datum = _j.value;\n                        var _k = datum.point, _l = _k === void 0 ? {} : _k, _m = _l.x, datumX = _m === void 0 ? NaN : _m, _o = _l.y, datumY = _o === void 0 ? NaN : _o;\n                        if (isNaN(datumX) || isNaN(datumY)) {\n                            continue;\n                        }\n                        var isInRange = (xAxis === null || xAxis === void 0 ? void 0 : xAxis.inRange(datumX)) && (yAxis === null || yAxis === void 0 ? void 0 : yAxis.inRange(datumY));\n                        if (!isInRange) {\n                            continue;\n                        }\n                        var point_1 = primaryDirection === ChartAxisDirection.X ? [datumX, datumY] : [datumY, datumX];\n                        // Compare distances from most significant dimension to least.\n                        var newMinDistance = true;\n                        for (var i = 0; i < point_1.length; i++) {\n                            var dist = Math.abs(point_1[i] - hitPointCoords[i]);\n                            if (dist > minDistance[i]) {\n                                newMinDistance = false;\n                                break;\n                            }\n                            if (dist < minDistance[i]) {\n                                minDistance[i] = dist;\n                                minDistance.fill(Infinity, i + 1, minDistance.length);\n                            }\n                        }\n                        if (newMinDistance) {\n                            closestDatum = datum;\n                        }\n                    }\n                }\n                catch (e_8_1) { e_8 = { error: e_8_1 }; }\n                finally {\n                    try {\n                        if (_j && !_j.done && (_b = _h.return)) _b.call(_h);\n                    }\n                    finally { if (e_8) throw e_8.error; }\n                }\n            }\n        }\n        catch (e_7_1) { e_7 = { error: e_7_1 }; }\n        finally {\n            try {\n                if (contextNodeData_3_1 && !contextNodeData_3_1.done && (_a = contextNodeData_3.return)) _a.call(contextNodeData_3);\n            }\n            finally { if (e_7) throw e_7.error; }\n        }\n        if (closestDatum) {\n            var distance = Math.max(Math.sqrt(Math.pow(minDistance[0], 2) + Math.pow(minDistance[1], 2)) - ((_d = (_c = closestDatum.point) === null || _c === void 0 ? void 0 : _c.size) !== null && _d !== void 0 ? _d : 0), 0);\n            return { datum: closestDatum, distance: distance };\n        }\n    };\n    CartesianSeries.prototype.toggleSeriesItem = function (itemId, enabled) {\n        if (this.seriesItemEnabled.size > 0) {\n            this.seriesItemEnabled.set(itemId, enabled);\n            this.nodeDataRefresh = true;\n        }\n        else {\n            _super.prototype.toggleSeriesItem.call(this, itemId, enabled);\n        }\n    };\n    CartesianSeries.prototype.isEnabled = function () {\n        var e_9, _a;\n        if (this.seriesItemEnabled.size > 0) {\n            try {\n                for (var _b = __values$m(this.seriesItemEnabled), _c = _b.next(); !_c.done; _c = _b.next()) {\n                    var _d = __read$J(_c.value, 2), enabled = _d[1];\n                    if (enabled) {\n                        return true;\n                    }\n                }\n            }\n            catch (e_9_1) { e_9 = { error: e_9_1 }; }\n            finally {\n                try {\n                    if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n                }\n                finally { if (e_9) throw e_9.error; }\n            }\n            return false;\n        }\n        return _super.prototype.isEnabled.call(this);\n    };\n    CartesianSeries.prototype.isPathOrSelectionDirty = function () {\n        // Override point to allow more sophisticated dirty selection detection.\n        return false;\n    };\n    CartesianSeries.prototype.getLabelData = function () {\n        return [];\n    };\n    CartesianSeries.prototype.isAnySeriesVisible = function () {\n        var e_10, _a;\n        try {\n            for (var _b = __values$m(this.seriesItemEnabled.values()), _c = _b.next(); !_c.done; _c = _b.next()) {\n                var visible = _c.value;\n                if (visible) {\n                    return true;\n                }\n            }\n        }\n        catch (e_10_1) { e_10 = { error: e_10_1 }; }\n        finally {\n            try {\n                if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n            }\n            finally { if (e_10) throw e_10.error; }\n        }\n        return false;\n    };\n    CartesianSeries.prototype.validateXYData = function (xKey, yKey, data, xAxis, yAxis, xData, yData, yDepth) {\n        var _a;\n        if (yDepth === void 0) { yDepth = 1; }\n        if (((_a = this.chart) === null || _a === void 0 ? void 0 : _a.mode) === 'integrated') {\n            // Integrated Charts use-cases do not require this validation.\n            return true;\n        }\n        if (!xAxis || !yAxis || data.length === 0 || (this.seriesItemEnabled.size > 0 && !this.isAnySeriesVisible())) {\n            return true;\n        }\n        var hasNumber = function (items, depth, maxDepth) {\n            if (depth === void 0) { depth = 0; }\n            if (maxDepth === void 0) { maxDepth = 0; }\n            return items.some(depth === maxDepth ? function (y) { return isContinuous(y); } : function (arr) { return hasNumber(arr, depth + 1, maxDepth); });\n        };\n        var isContinuousX = xAxis.scale instanceof ContinuousScale;\n        var isContinuousY = yAxis.scale instanceof ContinuousScale;\n        var validationResult = true;\n        if (isContinuousX && !hasNumber(xData)) {\n            Logger.warnOnce(\"the number axis has no numeric data supplied for xKey: [\" + xKey + \"].\");\n            validationResult = false;\n        }\n        if (isContinuousY && !hasNumber(yData, 0, yDepth - 1)) {\n            Logger.warnOnce(\"the number axis has no numeric data supplied for yKey: [\" + yKey + \"].\");\n            validationResult = false;\n        }\n        return validationResult;\n    };\n    CartesianSeries.prototype.updatePaths = function (opts) {\n        return __awaiter$d(this, void 0, void 0, function () {\n            return __generator$d(this, function (_a) {\n                // Override point for sub-classes.\n                opts.paths.forEach(function (p) { return (p.visible = false); });\n                return [2 /*return*/];\n            });\n        });\n    };\n    CartesianSeries.prototype.updatePathNodes = function (_opts) {\n        return __awaiter$d(this, void 0, void 0, function () {\n            return __generator$d(this, function (_a) {\n                return [2 /*return*/];\n            });\n        });\n    };\n    CartesianSeries.prototype.updateHighlightSelectionItem = function (opts) {\n        return __awaiter$d(this, void 0, void 0, function () {\n            var hasMarkers, item, highlightSelection, nodeData, markerSelection;\n            return __generator$d(this, function (_a) {\n                hasMarkers = this.opts.hasMarkers;\n                item = opts.item, highlightSelection = opts.highlightSelection;\n                nodeData = item ? [item] : [];\n                if (hasMarkers) {\n                    markerSelection = highlightSelection;\n                    return [2 /*return*/, this.updateMarkerSelection({ nodeData: nodeData, markerSelection: markerSelection, seriesIdx: -1 })];\n                }\n                else {\n                    return [2 /*return*/, this.updateDatumSelection({ nodeData: nodeData, datumSelection: highlightSelection, seriesIdx: -1 })];\n                }\n            });\n        });\n    };\n    CartesianSeries.prototype.updateHighlightSelectionLabel = function (opts) {\n        return __awaiter$d(this, void 0, void 0, function () {\n            var item, highlightLabelSelection, labelData;\n            return __generator$d(this, function (_a) {\n                item = opts.item, highlightLabelSelection = opts.highlightLabelSelection;\n                labelData = item ? [item] : [];\n                return [2 /*return*/, this.updateLabelSelection({ labelData: labelData, labelSelection: highlightLabelSelection, seriesIdx: -1 })];\n            });\n        });\n    };\n    CartesianSeries.prototype.updateDatumSelection = function (opts) {\n        return __awaiter$d(this, void 0, void 0, function () {\n            return __generator$d(this, function (_a) {\n                // Override point for sub-classes.\n                return [2 /*return*/, opts.datumSelection];\n            });\n        });\n    };\n    CartesianSeries.prototype.updateDatumNodes = function (_opts) {\n        return __awaiter$d(this, void 0, void 0, function () {\n            return __generator$d(this, function (_a) {\n                return [2 /*return*/];\n            });\n        });\n    };\n    CartesianSeries.prototype.updateMarkerSelection = function (opts) {\n        return __awaiter$d(this, void 0, void 0, function () {\n            return __generator$d(this, function (_a) {\n                // Override point for sub-classes.\n                return [2 /*return*/, opts.markerSelection];\n            });\n        });\n    };\n    CartesianSeries.prototype.updateMarkerNodes = function (_opts) {\n        return __awaiter$d(this, void 0, void 0, function () {\n            return __generator$d(this, function (_a) {\n                return [2 /*return*/];\n            });\n        });\n    };\n    return CartesianSeries;\n}(Series));\nvar CartesianSeriesMarker = /** @class */ (function (_super) {\n    __extends$2i(CartesianSeriesMarker, _super);\n    function CartesianSeriesMarker() {\n        var _this = _super !== null && _super.apply(this, arguments) || this;\n        _this.formatter = undefined;\n        return _this;\n    }\n    __decorate$1A([\n        Validate(OPT_FUNCTION),\n        SceneChangeDetection({ redraw: RedrawType.MAJOR })\n    ], CartesianSeriesMarker.prototype, \"formatter\", void 0);\n    return CartesianSeriesMarker;\n}(SeriesMarker));\n\nfunction sleep(sleepTimeoutMs) {\n    return new Promise(function (resolve) {\n        setTimeout(function () { return resolve(undefined); }, sleepTimeoutMs);\n    });\n}\n\nvar __decorate$1z = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar Overlay = /** @class */ (function () {\n    function Overlay(className, parent) {\n        this.renderer = undefined;\n        this.text = undefined;\n        this.className = className;\n        this.parentElement = parent;\n    }\n    Overlay.prototype.show = function (rect) {\n        var _a, _b;\n        var element = this.element;\n        if (!this.element) {\n            element = document.createElement('div');\n            element.className = this.className;\n            this.element = element;\n        }\n        element.style.position = 'absolute';\n        element.style.left = rect.x + \"px\";\n        element.style.top = rect.y + \"px\";\n        element.style.width = rect.width + \"px\";\n        element.style.height = rect.height + \"px\";\n        if (this.renderer) {\n            this.element.innerHTML = this.renderer();\n        }\n        else {\n            var content = document.createElement('div');\n            content.style.alignItems = 'center';\n            content.style.boxSizing = 'border-box';\n            content.style.display = 'flex';\n            content.style.justifyContent = 'center';\n            content.style.margin = '8px';\n            content.style.height = '100%';\n            content.style.font = '12px Verdana, sans-serif';\n            content.innerText = (_a = this.text) !== null && _a !== void 0 ? _a : 'No data to display';\n            element.append(content);\n        }\n        (_b = this.parentElement) === null || _b === void 0 ? void 0 : _b.append(element);\n    };\n    Overlay.prototype.hide = function () {\n        var _a;\n        (_a = this.element) === null || _a === void 0 ? void 0 : _a.remove();\n        this.element = undefined;\n    };\n    __decorate$1z([\n        Validate(OPT_FUNCTION)\n    ], Overlay.prototype, \"renderer\", void 0);\n    __decorate$1z([\n        Validate(OPT_STRING)\n    ], Overlay.prototype, \"text\", void 0);\n    return Overlay;\n}());\n\nvar ChartOverlays = /** @class */ (function () {\n    function ChartOverlays(parent) {\n        this.noData = new Overlay('ag-chart-no-data-overlay', parent);\n    }\n    return ChartOverlays;\n}());\n\nvar __read$I = (undefined && undefined.__read) || function (o, n) {\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n    if (!m) return o;\n    var i = m.call(o), r, ar = [], e;\n    try {\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n    }\n    catch (error) { e = { error: error }; }\n    finally {\n        try {\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\n        }\n        finally { if (e) throw e.error; }\n    }\n    return ar;\n};\nvar __spread$n = (undefined && undefined.__spread) || function () {\n    for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read$I(arguments[i]));\n    return ar;\n};\nvar __values$l = (undefined && undefined.__values) || function(o) {\n    var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n    if (m) return m.call(o);\n    if (o && typeof o.length === \"number\") return {\n        next: function () {\n            if (o && i >= o.length) o = void 0;\n            return { value: o && o[i++], done: !o };\n        }\n    };\n    throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nvar Listeners = /** @class */ (function () {\n    function Listeners() {\n        this.registeredListeners = {};\n    }\n    Listeners.prototype.addListener = function (type, cb) {\n        var _a;\n        var symbol = Symbol(type);\n        if (!this.registeredListeners[type]) {\n            this.registeredListeners[type] = [];\n        }\n        (_a = this.registeredListeners[type]) === null || _a === void 0 ? void 0 : _a.push({ symbol: symbol, handler: cb });\n        return symbol;\n    };\n    Listeners.prototype.dispatch = function (type) {\n        var _a;\n        var params = [];\n        for (var _i = 1; _i < arguments.length; _i++) {\n            params[_i - 1] = arguments[_i];\n        }\n        var listeners = (_a = this.registeredListeners[type]) !== null && _a !== void 0 ? _a : [];\n        return listeners.map(function (l) { return l.handler.apply(l, __spread$n(params)); });\n    };\n    Listeners.prototype.cancellableDispatch = function (type, cancelled) {\n        var e_1, _a;\n        var _b;\n        var params = [];\n        for (var _i = 2; _i < arguments.length; _i++) {\n            params[_i - 2] = arguments[_i];\n        }\n        var listeners = (_b = this.registeredListeners[type]) !== null && _b !== void 0 ? _b : [];\n        var results = [];\n        try {\n            for (var listeners_1 = __values$l(listeners), listeners_1_1 = listeners_1.next(); !listeners_1_1.done; listeners_1_1 = listeners_1.next()) {\n                var listener = listeners_1_1.value;\n                if (cancelled())\n                    break;\n                results.push(listener.handler.apply(listener, __spread$n(params)));\n            }\n        }\n        catch (e_1_1) { e_1 = { error: e_1_1 }; }\n        finally {\n            try {\n                if (listeners_1_1 && !listeners_1_1.done && (_a = listeners_1.return)) _a.call(listeners_1);\n            }\n            finally { if (e_1) throw e_1.error; }\n        }\n        return results;\n    };\n    Listeners.prototype.reduceDispatch = function (type, reduceFn) {\n        var e_2, _a;\n        var _b;\n        var params = [];\n        for (var _i = 2; _i < arguments.length; _i++) {\n            params[_i - 2] = arguments[_i];\n        }\n        var listeners = (_b = this.registeredListeners[type]) !== null && _b !== void 0 ? _b : [];\n        var listenerResult = undefined;\n        try {\n            for (var listeners_2 = __values$l(listeners), listeners_2_1 = listeners_2.next(); !listeners_2_1.done; listeners_2_1 = listeners_2.next()) {\n                var listener = listeners_2_1.value;\n                listenerResult = listener.handler.apply(listener, __spread$n(params));\n                params = reduceFn.apply(void 0, __spread$n([listenerResult], params));\n            }\n        }\n        catch (e_2_1) { e_2 = { error: e_2_1 }; }\n        finally {\n            try {\n                if (listeners_2_1 && !listeners_2_1.done && (_a = listeners_2.return)) _a.call(listeners_2);\n            }\n            finally { if (e_2) throw e_2.error; }\n        }\n        return listenerResult;\n    };\n    Listeners.prototype.removeListener = function (listenerSymbol) {\n        for (var type in this.registeredListeners) {\n            var listeners = this.registeredListeners[type];\n            var match = listeners === null || listeners === void 0 ? void 0 : listeners.findIndex(function (entry) { return entry.symbol === listenerSymbol; });\n            if (match != null && match >= 0) {\n                listeners === null || listeners === void 0 ? void 0 : listeners.splice(match, 1);\n            }\n            if (match != null && (listeners === null || listeners === void 0 ? void 0 : listeners.length) === 0) {\n                delete this.registeredListeners[type];\n            }\n        }\n    };\n    return Listeners;\n}());\n\nvar BaseManager = /** @class */ (function () {\n    function BaseManager() {\n        this.listeners = new Listeners();\n    }\n    BaseManager.prototype.addListener = function (type, cb) {\n        return this.listeners.addListener(type, cb);\n    };\n    BaseManager.prototype.removeListener = function (listenerSymbol) {\n        this.listeners.removeListener(listenerSymbol);\n    };\n    return BaseManager;\n}());\n\nvar __extends$2h = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __assign$C = (undefined && undefined.__assign) || function () {\n    __assign$C = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign$C.apply(this, arguments);\n};\nvar __awaiter$c = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {\n    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n    return new (P || (P = Promise))(function (resolve, reject) {\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\n    });\n};\nvar __generator$c = (undefined && undefined.__generator) || function (thisArg, body) {\n    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n    return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n    function verb(n) { return function (v) { return step([n, v]); }; }\n    function step(op) {\n        if (f) throw new TypeError(\"Generator is already executing.\");\n        while (_) try {\n            if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n            if (y = 0, t) op = [op[0] & 2, t.value];\n            switch (op[0]) {\n                case 0: case 1: t = op; break;\n                case 4: _.label++; return { value: op[1], done: false };\n                case 5: _.label++; y = op[1]; op = [0]; continue;\n                case 7: op = _.ops.pop(); _.trys.pop(); continue;\n                default:\n                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n                    if (t[2]) _.ops.pop();\n                    _.trys.pop(); continue;\n            }\n            op = body.call(thisArg, _);\n        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n    }\n};\nvar __values$k = (undefined && undefined.__values) || function(o) {\n    var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n    if (m) return m.call(o);\n    if (o && typeof o.length === \"number\") return {\n        next: function () {\n            if (o && i >= o.length) o = void 0;\n            return { value: o && o[i++], done: !o };\n        }\n    };\n    throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nvar WINDOW_EVENT_HANDLERS = ['pagehide', 'mousemove', 'mouseup', 'wheel'];\nvar EVENT_HANDLERS = [\n    'click',\n    'dblclick',\n    'contextmenu',\n    'mousedown',\n    'mouseout',\n    'mouseenter',\n    'touchstart',\n    'touchmove',\n    'touchend',\n    'touchcancel',\n];\nvar CSS = \"\\n.ag-chart-wrapper {\\n    touch-action: none;\\n}\\n\";\n/**\n * Manages user interactions with a specific HTMLElement (or interactions that bubble from it's\n * children)\n */\nvar InteractionManager = /** @class */ (function (_super) {\n    __extends$2h(InteractionManager, _super);\n    function InteractionManager(element, doc) {\n        var e_1, _a, e_2, _b;\n        if (doc === void 0) { doc = document; }\n        var _this = _super.call(this) || this;\n        _this.eventHandler = function (event) { return _this.processEvent(event); };\n        _this.mouseDown = false;\n        _this.touchDown = false;\n        _this.rootElement = doc.body;\n        _this.element = element;\n        try {\n            for (var EVENT_HANDLERS_1 = __values$k(EVENT_HANDLERS), EVENT_HANDLERS_1_1 = EVENT_HANDLERS_1.next(); !EVENT_HANDLERS_1_1.done; EVENT_HANDLERS_1_1 = EVENT_HANDLERS_1.next()) {\n                var type = EVENT_HANDLERS_1_1.value;\n                if (type.startsWith('touch')) {\n                    element.addEventListener(type, _this.eventHandler, { passive: true });\n                }\n                else {\n                    element.addEventListener(type, _this.eventHandler);\n                }\n            }\n        }\n        catch (e_1_1) { e_1 = { error: e_1_1 }; }\n        finally {\n            try {\n                if (EVENT_HANDLERS_1_1 && !EVENT_HANDLERS_1_1.done && (_a = EVENT_HANDLERS_1.return)) _a.call(EVENT_HANDLERS_1);\n            }\n            finally { if (e_1) throw e_1.error; }\n        }\n        try {\n            for (var WINDOW_EVENT_HANDLERS_1 = __values$k(WINDOW_EVENT_HANDLERS), WINDOW_EVENT_HANDLERS_1_1 = WINDOW_EVENT_HANDLERS_1.next(); !WINDOW_EVENT_HANDLERS_1_1.done; WINDOW_EVENT_HANDLERS_1_1 = WINDOW_EVENT_HANDLERS_1.next()) {\n                var type = WINDOW_EVENT_HANDLERS_1_1.value;\n                window.addEventListener(type, _this.eventHandler);\n            }\n        }\n        catch (e_2_1) { e_2 = { error: e_2_1 }; }\n        finally {\n            try {\n                if (WINDOW_EVENT_HANDLERS_1_1 && !WINDOW_EVENT_HANDLERS_1_1.done && (_b = WINDOW_EVENT_HANDLERS_1.return)) _b.call(WINDOW_EVENT_HANDLERS_1);\n            }\n            finally { if (e_2) throw e_2.error; }\n        }\n        if (InteractionManager.interactionDocuments.indexOf(doc) < 0) {\n            var styleElement = document.createElement('style');\n            styleElement.innerHTML = CSS;\n            document.head.insertBefore(styleElement, document.head.querySelector('style'));\n            InteractionManager.interactionDocuments.push(doc);\n        }\n        return _this;\n    }\n    InteractionManager.prototype.destroy = function () {\n        var e_3, _a, e_4, _b;\n        try {\n            for (var WINDOW_EVENT_HANDLERS_2 = __values$k(WINDOW_EVENT_HANDLERS), WINDOW_EVENT_HANDLERS_2_1 = WINDOW_EVENT_HANDLERS_2.next(); !WINDOW_EVENT_HANDLERS_2_1.done; WINDOW_EVENT_HANDLERS_2_1 = WINDOW_EVENT_HANDLERS_2.next()) {\n                var type = WINDOW_EVENT_HANDLERS_2_1.value;\n                window.removeEventListener(type, this.eventHandler);\n            }\n        }\n        catch (e_3_1) { e_3 = { error: e_3_1 }; }\n        finally {\n            try {\n                if (WINDOW_EVENT_HANDLERS_2_1 && !WINDOW_EVENT_HANDLERS_2_1.done && (_a = WINDOW_EVENT_HANDLERS_2.return)) _a.call(WINDOW_EVENT_HANDLERS_2);\n            }\n            finally { if (e_3) throw e_3.error; }\n        }\n        try {\n            for (var EVENT_HANDLERS_2 = __values$k(EVENT_HANDLERS), EVENT_HANDLERS_2_1 = EVENT_HANDLERS_2.next(); !EVENT_HANDLERS_2_1.done; EVENT_HANDLERS_2_1 = EVENT_HANDLERS_2.next()) {\n                var type = EVENT_HANDLERS_2_1.value;\n                this.element.removeEventListener(type, this.eventHandler);\n            }\n        }\n        catch (e_4_1) { e_4 = { error: e_4_1 }; }\n        finally {\n            try {\n                if (EVENT_HANDLERS_2_1 && !EVENT_HANDLERS_2_1.done && (_b = EVENT_HANDLERS_2.return)) _b.call(EVENT_HANDLERS_2);\n            }\n            finally { if (e_4) throw e_4.error; }\n        }\n    };\n    InteractionManager.prototype.processEvent = function (event) {\n        var types = this.decideInteractionEventTypes(event);\n        if (types.length > 0) {\n            // Async dispatch to avoid blocking the event-processing thread.\n            this.dispatchEvent(event, types);\n        }\n    };\n    InteractionManager.prototype.dispatchEvent = function (event, types) {\n        return __awaiter$c(this, void 0, void 0, function () {\n            var coords, _loop_1, this_1, types_1, types_1_1, type;\n            var e_5, _a;\n            return __generator$c(this, function (_b) {\n                coords = this.calculateCoordinates(event);\n                if (coords == null) {\n                    return [2 /*return*/];\n                }\n                _loop_1 = function (type) {\n                    var interactionEvent = this_1.buildEvent(__assign$C(__assign$C({ event: event }, coords), { type: type }));\n                    this_1.listeners.cancellableDispatch(type, function () { return interactionEvent.consumed; }, interactionEvent);\n                };\n                this_1 = this;\n                try {\n                    for (types_1 = __values$k(types), types_1_1 = types_1.next(); !types_1_1.done; types_1_1 = types_1.next()) {\n                        type = types_1_1.value;\n                        _loop_1(type);\n                    }\n                }\n                catch (e_5_1) { e_5 = { error: e_5_1 }; }\n                finally {\n                    try {\n                        if (types_1_1 && !types_1_1.done && (_a = types_1.return)) _a.call(types_1);\n                    }\n                    finally { if (e_5) throw e_5.error; }\n                }\n                return [2 /*return*/];\n            });\n        });\n    };\n    InteractionManager.prototype.decideInteractionEventTypes = function (event) {\n        switch (event.type) {\n            case 'click':\n                return ['click'];\n            case 'dblclick':\n                return ['dblclick'];\n            case 'contextmenu':\n                return ['contextmenu'];\n            case 'mousedown':\n                this.mouseDown = true;\n                this.dragStartElement = event.target;\n                return ['drag-start'];\n            case 'touchstart':\n                this.touchDown = true;\n                this.dragStartElement = event.target;\n                return ['drag-start'];\n            case 'touchmove':\n            case 'mousemove':\n                if (!this.mouseDown && !this.touchDown && !this.isEventOverElement(event)) {\n                    // We only care about these events if the target is the canvas, unless\n                    // we're in the middle of a drag/slide.\n                    return [];\n                }\n                return this.mouseDown || this.touchDown ? ['drag'] : ['hover'];\n            case 'mouseup':\n                if (!this.mouseDown && !this.isEventOverElement(event)) {\n                    // We only care about these events if the target is the canvas, unless\n                    // we're in the middle of a drag.\n                    return [];\n                }\n                this.mouseDown = false;\n                this.dragStartElement = undefined;\n                return ['drag-end'];\n            case 'touchend':\n                if (!this.touchDown && !this.isEventOverElement(event)) {\n                    // We only care about these events if the target is the canvas, unless\n                    // we're in the middle of a slide.\n                    return [];\n                }\n                this.touchDown = false;\n                this.dragStartElement = undefined;\n                return ['drag-end'];\n            case 'mouseout':\n            case 'touchcancel':\n                return ['leave'];\n            case 'mouseenter':\n                var mouseButtonDown = event instanceof MouseEvent && (event.buttons & 1) === 1;\n                if (this.mouseDown !== mouseButtonDown) {\n                    this.mouseDown = mouseButtonDown;\n                    return [mouseButtonDown ? 'drag-start' : 'drag-end'];\n                }\n                return [];\n            case 'pagehide':\n                return ['page-left'];\n            case 'wheel':\n                return ['wheel'];\n        }\n        return [];\n    };\n    InteractionManager.prototype.isEventOverElement = function (event) {\n        var _a;\n        return event.target === this.element || ((_a = event.target) === null || _a === void 0 ? void 0 : _a.parentElement) === this.element;\n    };\n    InteractionManager.prototype.calculateCoordinates = function (event) {\n        var _a;\n        if (event instanceof MouseEvent) {\n            var clientX = event.clientX, clientY = event.clientY, pageX = event.pageX, pageY = event.pageY, offsetX = event.offsetX, offsetY = event.offsetY;\n            return this.fixOffsets(event, { clientX: clientX, clientY: clientY, pageX: pageX, pageY: pageY, offsetX: offsetX, offsetY: offsetY });\n        }\n        else if (typeof TouchEvent !== 'undefined' && event instanceof TouchEvent) {\n            var lastTouch = (_a = event.touches[0]) !== null && _a !== void 0 ? _a : event.changedTouches[0];\n            var clientX = lastTouch.clientX, clientY = lastTouch.clientY, pageX = lastTouch.pageX, pageY = lastTouch.pageY;\n            return __assign$C(__assign$C({}, InteractionManager.NULL_COORDS), { clientX: clientX, clientY: clientY, pageX: pageX, pageY: pageY });\n        }\n        else if (event instanceof PageTransitionEvent) {\n            if (event.persisted) {\n                // Don't fire the page-left event since the page maybe revisited.\n                return;\n            }\n            return InteractionManager.NULL_COORDS;\n        }\n        // Unsupported event - abort.\n    };\n    InteractionManager.prototype.fixOffsets = function (event, coords) {\n        var offsets = function (el) {\n            var x = 0;\n            var y = 0;\n            while (el) {\n                x += el.offsetLeft;\n                y += el.offsetTop;\n                el = el.offsetParent;\n            }\n            return { x: x, y: y };\n        };\n        if (this.dragStartElement != null && event.target !== this.dragStartElement) {\n            // Offsets need to be relative to the drag-start element to avoid jumps when\n            // the pointer moves between element boundaries.\n            var offsetDragStart = offsets(this.dragStartElement);\n            var offsetEvent = offsets(event.target);\n            coords.offsetX -= offsetDragStart.x - offsetEvent.x;\n            coords.offsetY -= offsetDragStart.y - offsetEvent.y;\n        }\n        return coords;\n    };\n    InteractionManager.prototype.buildEvent = function (opts) {\n        var type = opts.type, event = opts.event, clientX = opts.clientX, clientY = opts.clientY;\n        var offsetX = opts.offsetX, offsetY = opts.offsetY, pageX = opts.pageX, pageY = opts.pageY;\n        if (!isNumber$4(offsetX) || !isNumber$4(offsetY)) {\n            var rect = this.element.getBoundingClientRect();\n            offsetX = clientX - rect.left;\n            offsetY = clientY - rect.top;\n        }\n        if (!isNumber$4(pageX) || !isNumber$4(pageY)) {\n            var pageRect = this.rootElement.getBoundingClientRect();\n            pageX = clientX - pageRect.left;\n            pageY = clientY - pageRect.top;\n        }\n        var builtEvent = {\n            type: type,\n            offsetX: offsetX,\n            offsetY: offsetY,\n            pageX: pageX,\n            pageY: pageY,\n            sourceEvent: event,\n            consumed: false,\n            consume: function () { return (builtEvent.consumed = true); },\n        };\n        return builtEvent;\n    };\n    InteractionManager.interactionDocuments = [];\n    InteractionManager.NULL_COORDS = {\n        clientX: -Infinity,\n        clientY: -Infinity,\n        pageX: -Infinity,\n        pageY: -Infinity,\n        offsetX: -Infinity,\n        offsetY: -Infinity,\n    };\n    return InteractionManager;\n}(BaseManager));\n\nvar __read$H = (undefined && undefined.__read) || function (o, n) {\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n    if (!m) return o;\n    var i = m.call(o), r, ar = [], e;\n    try {\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n    }\n    catch (error) { e = { error: error }; }\n    finally {\n        try {\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\n        }\n        finally { if (e) throw e.error; }\n    }\n    return ar;\n};\n/**\n * Manages the cursor styling for an element. Tracks the requested styling from distinct\n * dependents and handles conflicting styling requests.\n */\nvar CursorManager = /** @class */ (function () {\n    function CursorManager(element) {\n        this.states = {};\n        this.element = element;\n    }\n    CursorManager.prototype.updateCursor = function (callerId, style) {\n        delete this.states[callerId];\n        if (style != null) {\n            this.states[callerId] = { style: style };\n        }\n        this.applyStates();\n    };\n    CursorManager.prototype.applyStates = function () {\n        var styleToApply = 'default';\n        // Last added entry wins.\n        Object.entries(this.states)\n            .reverse()\n            .slice(0, 1)\n            .forEach(function (_a) {\n            var _b = __read$H(_a, 2); _b[0]; var style = _b[1].style;\n            return (styleToApply = style);\n        });\n        this.element.style.cursor = styleToApply;\n    };\n    return CursorManager;\n}());\n\nvar __extends$2g = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __read$G = (undefined && undefined.__read) || function (o, n) {\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n    if (!m) return o;\n    var i = m.call(o), r, ar = [], e;\n    try {\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n    }\n    catch (error) { e = { error: error }; }\n    finally {\n        try {\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\n        }\n        finally { if (e) throw e.error; }\n    }\n    return ar;\n};\nfunction isEqual$1(a, b) {\n    if (a === b)\n        return true;\n    if ((a === null || a === void 0 ? void 0 : a.series) !== (b === null || b === void 0 ? void 0 : b.series))\n        return false;\n    if ((a === null || a === void 0 ? void 0 : a.itemId) !== (b === null || b === void 0 ? void 0 : b.itemId))\n        return false;\n    if ((a === null || a === void 0 ? void 0 : a.datum) !== (b === null || b === void 0 ? void 0 : b.datum))\n        return false;\n    return true;\n}\n/**\n * Manages the actively highlighted series/datum for a chart. Tracks the requested highlights from\n * distinct dependents and handles conflicting highlight requests.\n */\nvar HighlightManager = /** @class */ (function (_super) {\n    __extends$2g(HighlightManager, _super);\n    function HighlightManager() {\n        var _this = _super.call(this) || this;\n        _this.states = {};\n        _this.activeHighlight = undefined;\n        return _this;\n    }\n    HighlightManager.prototype.updateHighlight = function (callerId, highlightedDatum) {\n        delete this.states[callerId];\n        if (highlightedDatum != null) {\n            this.states[callerId] = { highlightedDatum: highlightedDatum };\n        }\n        this.applyStates();\n    };\n    HighlightManager.prototype.getActiveHighlight = function () {\n        return this.activeHighlight;\n    };\n    HighlightManager.prototype.applyStates = function () {\n        var previousHighlight = this.activeHighlight;\n        var highlightToApply = undefined;\n        // Last added entry wins.\n        Object.entries(this.states)\n            .reverse()\n            .slice(0, 1)\n            .forEach(function (_a) {\n            var _b = __read$G(_a, 2); _b[0]; var highlightedDatum = _b[1].highlightedDatum;\n            return (highlightToApply = highlightedDatum);\n        });\n        this.activeHighlight = highlightToApply;\n        var changed = !isEqual$1(previousHighlight, this.activeHighlight);\n        if (changed) {\n            var event_1 = {\n                type: 'highlight-change',\n                previousHighlight: previousHighlight,\n                currentHighlight: this.activeHighlight,\n            };\n            this.listeners.dispatch('highlight-change', event_1);\n        }\n    };\n    return HighlightManager;\n}(BaseManager));\n\nvar __values$j = (undefined && undefined.__values) || function(o) {\n    var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n    if (m) return m.call(o);\n    if (o && typeof o.length === \"number\") return {\n        next: function () {\n            if (o && i >= o.length) o = void 0;\n            return { value: o && o[i++], done: !o };\n        }\n    };\n    throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nvar __read$F = (undefined && undefined.__read) || function (o, n) {\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n    if (!m) return o;\n    var i = m.call(o), r, ar = [], e;\n    try {\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n    }\n    catch (error) { e = { error: error }; }\n    finally {\n        try {\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\n        }\n        finally { if (e) throw e.error; }\n    }\n    return ar;\n};\n/**\n * Manages the tooltip HTML an element. Tracks the requested HTML from distinct dependents and\n * handles conflicting tooltip requests.\n */\nvar TooltipManager = /** @class */ (function () {\n    function TooltipManager(tooltip, interactionManager) {\n        var _this = this;\n        this.states = {};\n        this.exclusiveAreas = {};\n        this.destroyFns = [];\n        this.tooltip = tooltip;\n        var hoverRef = interactionManager.addListener('hover', function (e) { return _this.checkExclusiveRects(e); });\n        this.destroyFns.push(function () { return interactionManager.removeListener(hoverRef); });\n    }\n    TooltipManager.prototype.updateTooltip = function (callerId, meta, content) {\n        var _a;\n        if (content == null) {\n            content = (_a = this.states[callerId]) === null || _a === void 0 ? void 0 : _a.content;\n        }\n        this.states[callerId] = { content: content, meta: meta };\n        this.applyStates();\n    };\n    TooltipManager.prototype.updateExclusiveRect = function (callerId, area) {\n        if (area) {\n            this.exclusiveAreas[callerId] = area;\n        }\n        else {\n            delete this.exclusiveAreas[callerId];\n        }\n    };\n    TooltipManager.prototype.removeTooltip = function (callerId) {\n        delete this.states[callerId];\n        this.applyStates();\n    };\n    TooltipManager.prototype.getTooltipMeta = function (callerId) {\n        var _a;\n        return (_a = this.states[callerId]) === null || _a === void 0 ? void 0 : _a.meta;\n    };\n    TooltipManager.prototype.destroy = function () {\n        var e_1, _a;\n        try {\n            for (var _b = __values$j(this.destroyFns), _c = _b.next(); !_c.done; _c = _b.next()) {\n                var destroyFn = _c.value;\n                destroyFn();\n            }\n        }\n        catch (e_1_1) { e_1 = { error: e_1_1 }; }\n        finally {\n            try {\n                if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n            }\n            finally { if (e_1) throw e_1.error; }\n        }\n    };\n    TooltipManager.prototype.checkExclusiveRects = function (e) {\n        var e_2, _a;\n        var newAppliedExclusiveArea;\n        try {\n            for (var _b = __values$j(Object.entries(this.exclusiveAreas)), _c = _b.next(); !_c.done; _c = _b.next()) {\n                var _d = __read$F(_c.value, 2), entryId = _d[0], area = _d[1];\n                if (!area.containsPoint(e.offsetX, e.offsetY)) {\n                    continue;\n                }\n                newAppliedExclusiveArea = entryId;\n                break;\n            }\n        }\n        catch (e_2_1) { e_2 = { error: e_2_1 }; }\n        finally {\n            try {\n                if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n            }\n            finally { if (e_2) throw e_2.error; }\n        }\n        if (newAppliedExclusiveArea === this.appliedExclusiveArea) {\n            return;\n        }\n        this.appliedExclusiveArea = newAppliedExclusiveArea;\n        this.applyStates();\n    };\n    TooltipManager.prototype.applyStates = function () {\n        var _this = this;\n        var _a;\n        var ids = this.appliedExclusiveArea ? [this.appliedExclusiveArea] : Object.keys(this.states);\n        var contentToApply = undefined;\n        var metaToApply = undefined;\n        // Last added entry wins.\n        ids.reverse()\n            .slice(0, 1)\n            .forEach(function (id) {\n            var _a;\n            var _b = (_a = _this.states[id]) !== null && _a !== void 0 ? _a : {}, content = _b.content, meta = _b.meta;\n            contentToApply = content;\n            metaToApply = meta;\n        });\n        if (metaToApply === undefined || contentToApply === undefined) {\n            this.appliedState = undefined;\n            this.tooltip.toggle(false);\n            return;\n        }\n        if (((_a = this.appliedState) === null || _a === void 0 ? void 0 : _a.content) === contentToApply) {\n            var renderInstantly = this.tooltip.isVisible();\n            this.tooltip.show(metaToApply, undefined, renderInstantly);\n        }\n        else {\n            this.tooltip.show(metaToApply, contentToApply);\n        }\n        this.appliedState = { content: contentToApply, meta: metaToApply };\n    };\n    return TooltipManager;\n}());\n\nvar __extends$2f = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __assign$B = (undefined && undefined.__assign) || function () {\n    __assign$B = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign$B.apply(this, arguments);\n};\nvar __values$i = (undefined && undefined.__values) || function(o) {\n    var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n    if (m) return m.call(o);\n    if (o && typeof o.length === \"number\") return {\n        next: function () {\n            if (o && i >= o.length) o = void 0;\n            return { value: o && o[i++], done: !o };\n        }\n    };\n    throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nvar __read$E = (undefined && undefined.__read) || function (o, n) {\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n    if (!m) return o;\n    var i = m.call(o), r, ar = [], e;\n    try {\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n    }\n    catch (error) { e = { error: error }; }\n    finally {\n        try {\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\n        }\n        finally { if (e) throw e.error; }\n    }\n    return ar;\n};\nfunction isEqual(a, b) {\n    var _a, _b, _c, _d, _e, _f, _g, _h;\n    if (a === b)\n        return true;\n    if (((_a = a === null || a === void 0 ? void 0 : a.x) === null || _a === void 0 ? void 0 : _a.min) !== ((_b = b === null || b === void 0 ? void 0 : b.x) === null || _b === void 0 ? void 0 : _b.min))\n        return false;\n    if (((_c = a === null || a === void 0 ? void 0 : a.x) === null || _c === void 0 ? void 0 : _c.max) !== ((_d = b === null || b === void 0 ? void 0 : b.x) === null || _d === void 0 ? void 0 : _d.max))\n        return false;\n    if (((_e = a === null || a === void 0 ? void 0 : a.y) === null || _e === void 0 ? void 0 : _e.max) !== ((_f = b === null || b === void 0 ? void 0 : b.y) === null || _f === void 0 ? void 0 : _f.max))\n        return false;\n    if (((_g = a === null || a === void 0 ? void 0 : a.y) === null || _g === void 0 ? void 0 : _g.min) !== ((_h = b === null || b === void 0 ? void 0 : b.y) === null || _h === void 0 ? void 0 : _h.min))\n        return false;\n    return true;\n}\n/**\n * Manages the current zoom state for a chart. Tracks the requested zoom from distinct dependents\n * and handles conflicting zoom requests.\n */\nvar ZoomManager = /** @class */ (function (_super) {\n    __extends$2f(ZoomManager, _super);\n    function ZoomManager() {\n        var _this = _super.call(this) || this;\n        _this.states = {};\n        _this.currentZoom = undefined;\n        return _this;\n    }\n    ZoomManager.prototype.updateZoom = function (callerId, newZoom) {\n        delete this.states[callerId];\n        if (newZoom != null) {\n            this.states[callerId] = __assign$B({}, newZoom);\n        }\n        this.applyStates();\n    };\n    ZoomManager.prototype.getZoom = function () {\n        return this.currentZoom;\n    };\n    ZoomManager.prototype.applyStates = function () {\n        var e_1, _a;\n        var currentZoom = this.currentZoom;\n        var zoomToApply = {};\n        try {\n            // Last added entry wins.\n            for (var _b = __values$i(Object.entries(this.states)), _c = _b.next(); !_c.done; _c = _b.next()) {\n                var _d = __read$E(_c.value, 2), _ = _d[0], _e = _d[1], x = _e.x, y = _e.y;\n                zoomToApply.x = x !== null && x !== void 0 ? x : zoomToApply.x;\n                zoomToApply.y = y !== null && y !== void 0 ? y : zoomToApply.y;\n            }\n        }\n        catch (e_1_1) { e_1 = { error: e_1_1 }; }\n        finally {\n            try {\n                if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n            }\n            finally { if (e_1) throw e_1.error; }\n        }\n        this.currentZoom = zoomToApply.x != null || zoomToApply.y != null ? zoomToApply : undefined;\n        var changed = !isEqual(currentZoom, this.currentZoom);\n        if (!changed) {\n            return;\n        }\n        var event = __assign$B({ type: 'zoom-change' }, (currentZoom !== null && currentZoom !== void 0 ? currentZoom : {}));\n        this.listeners.dispatch('zoom-change', event);\n    };\n    return ZoomManager;\n}(BaseManager));\n\nvar __assign$A = (undefined && undefined.__assign) || function () {\n    __assign$A = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign$A.apply(this, arguments);\n};\nfunction isLayoutStage(t) {\n    return t !== 'layout-complete';\n}\nfunction isLayoutComplete(t) {\n    return t === 'layout-complete';\n}\nvar LayoutService = /** @class */ (function () {\n    function LayoutService() {\n        this.layoutProcessors = new Listeners();\n        this.listeners = new Listeners();\n    }\n    LayoutService.prototype.addListener = function (type, cb) {\n        if (isLayoutStage(type)) {\n            return this.layoutProcessors.addListener(type, cb);\n        }\n        else if (isLayoutComplete(type)) {\n            return this.listeners.addListener(type, cb);\n        }\n        throw new Error('AG Charts - unsupported listener type: ' + type);\n    };\n    LayoutService.prototype.removeListener = function (listenerSymbol) {\n        this.listeners.removeListener(listenerSymbol);\n        this.layoutProcessors.removeListener(listenerSymbol);\n    };\n    LayoutService.prototype.dispatchPerformLayout = function (stage, ctx) {\n        var result = this.layoutProcessors.reduceDispatch(stage, function (_a, ctx) {\n            var shrinkRect = _a.shrinkRect;\n            return [__assign$A(__assign$A({}, ctx), { shrinkRect: shrinkRect })];\n        }, ctx);\n        return result !== null && result !== void 0 ? result : ctx;\n    };\n    LayoutService.prototype.dispatchLayoutComplete = function (event) {\n        this.listeners.dispatch('layout-complete', event);\n    };\n    return LayoutService;\n}());\n\nvar UpdateService = /** @class */ (function () {\n    function UpdateService(updateCallback) {\n        this.updateCallback = updateCallback;\n    }\n    UpdateService.prototype.update = function (type) {\n        if (type === void 0) { type = ChartUpdateType.FULL; }\n        this.updateCallback(type);\n    };\n    return UpdateService;\n}());\n\nvar __decorate$1y = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar ChartHighlight = /** @class */ (function () {\n    function ChartHighlight() {\n        this.range = 'tooltip';\n    }\n    __decorate$1y([\n        Validate(STRING_UNION('tooltip', 'node'))\n    ], ChartHighlight.prototype, \"range\", void 0);\n    return ChartHighlight;\n}());\n\nvar __extends$2e = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __assign$z = (undefined && undefined.__assign) || function () {\n    __assign$z = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign$z.apply(this, arguments);\n};\nvar __decorate$1x = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __awaiter$b = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {\n    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n    return new (P || (P = Promise))(function (resolve, reject) {\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\n    });\n};\nvar __generator$b = (undefined && undefined.__generator) || function (thisArg, body) {\n    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n    return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n    function verb(n) { return function (v) { return step([n, v]); }; }\n    function step(op) {\n        if (f) throw new TypeError(\"Generator is already executing.\");\n        while (_) try {\n            if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n            if (y = 0, t) op = [op[0] & 2, t.value];\n            switch (op[0]) {\n                case 0: case 1: t = op; break;\n                case 4: _.label++; return { value: op[1], done: false };\n                case 5: _.label++; y = op[1]; op = [0]; continue;\n                case 7: op = _.ops.pop(); _.trys.pop(); continue;\n                default:\n                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n                    if (t[2]) _.ops.pop();\n                    _.trys.pop(); continue;\n            }\n            op = body.call(thisArg, _);\n        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n    }\n};\nvar __values$h = (undefined && undefined.__values) || function(o) {\n    var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n    if (m) return m.call(o);\n    if (o && typeof o.length === \"number\") return {\n        next: function () {\n            if (o && i >= o.length) o = void 0;\n            return { value: o && o[i++], done: !o };\n        }\n    };\n    throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nvar __read$D = (undefined && undefined.__read) || function (o, n) {\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n    if (!m) return o;\n    var i = m.call(o), r, ar = [], e;\n    try {\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n    }\n    catch (error) { e = { error: error }; }\n    finally {\n        try {\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\n        }\n        finally { if (e) throw e.error; }\n    }\n    return ar;\n};\nvar __spread$m = (undefined && undefined.__spread) || function () {\n    for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read$D(arguments[i]));\n    return ar;\n};\nvar Chart = /** @class */ (function (_super) {\n    __extends$2e(Chart, _super);\n    function Chart(document, overrideDevicePixelRatio, resources) {\n        if (document === void 0) { document = window.document; }\n        var _a;\n        var _this = _super.call(this) || this;\n        _this.id = createId$1(_this);\n        _this.processedOptions = {};\n        _this.userOptions = {};\n        _this.queuedUserOptions = [];\n        _this.seriesRoot = new Group({ name: _this.id + \"-Series-root\" });\n        _this.extraDebugStats = {};\n        _this._container = undefined;\n        _this.data = [];\n        _this.padding = new Padding$1(20);\n        _this.seriesAreaPadding = new Padding$1(0);\n        _this.title = undefined;\n        _this.subtitle = undefined;\n        _this.footnote = undefined;\n        _this.mode = 'standalone';\n        _this._destroyed = false;\n        _this.modules = {};\n        _this._pendingFactoryUpdates = [];\n        _this._performUpdateNoRenderCount = 0;\n        _this._performUpdateType = ChartUpdateType.NONE;\n        _this.seriesToUpdate = new Set();\n        _this.performUpdateTrigger = debouncedCallback(function (_a) {\n            var count = _a.count;\n            return __awaiter$b(_this, void 0, void 0, function () {\n                var error_1;\n                return __generator$b(this, function (_b) {\n                    switch (_b.label) {\n                        case 0:\n                            if (this._destroyed)\n                                return [2 /*return*/];\n                            _b.label = 1;\n                        case 1:\n                            _b.trys.push([1, 3, , 4]);\n                            return [4 /*yield*/, this.performUpdate(count)];\n                        case 2:\n                            _b.sent();\n                            return [3 /*break*/, 4];\n                        case 3:\n                            error_1 = _b.sent();\n                            this._lastPerformUpdateError = error_1;\n                            Logger.error('update error', error_1);\n                            return [3 /*break*/, 4];\n                        case 4: return [2 /*return*/];\n                    }\n                });\n            });\n        });\n        _this._axes = [];\n        _this._series = [];\n        _this.lastInteractionEvent = undefined;\n        _this.pointerScheduler = debouncedAnimationFrame(function () {\n            if (_this.lastInteractionEvent) {\n                _this.handlePointer(_this.lastInteractionEvent);\n            }\n            _this.lastInteractionEvent = undefined;\n        });\n        _this.onSeriesNodeClick = function (event) {\n            var seriesNodeClickEvent = __assign$z(__assign$z({}, event), { type: 'seriesNodeClick' });\n            Object.defineProperty(seriesNodeClickEvent, 'series', {\n                enumerable: false,\n                // Should display the deprecation warning\n                get: function () { return event.series; },\n            });\n            _this.fireEvent(seriesNodeClickEvent);\n        };\n        _this.onSeriesNodeDoubleClick = function (event) {\n            var seriesNodeDoubleClick = __assign$z(__assign$z({}, event), { type: 'seriesNodeDoubleClick' });\n            _this.fireEvent(seriesNodeDoubleClick);\n        };\n        var scene = resources === null || resources === void 0 ? void 0 : resources.scene;\n        var element = (_a = resources === null || resources === void 0 ? void 0 : resources.element) !== null && _a !== void 0 ? _a : document.createElement('div');\n        var container = resources === null || resources === void 0 ? void 0 : resources.container;\n        var root = new Group({ name: 'root' });\n        // Prevent the scene from rendering chart components in an invalid state\n        // (before first layout is performed).\n        root.visible = false;\n        root.append(_this.seriesRoot);\n        _this.axisGroup = new Group({ name: 'Axes', layer: true, zIndex: Layers.AXIS_ZINDEX });\n        root.appendChild(_this.axisGroup);\n        _this.element = element;\n        element.classList.add('ag-chart-wrapper');\n        element.style.position = 'relative';\n        _this.scene = scene !== null && scene !== void 0 ? scene : new Scene({ document: document, overrideDevicePixelRatio: overrideDevicePixelRatio });\n        _this.debug = false;\n        _this.scene.debug.consoleLog = false;\n        _this.scene.root = root;\n        _this.scene.container = element;\n        _this.autoSize = true;\n        _this.interactionManager = new InteractionManager(element);\n        _this.cursorManager = new CursorManager(element);\n        _this.highlightManager = new HighlightManager();\n        _this.zoomManager = new ZoomManager();\n        _this.layoutService = new LayoutService();\n        _this.updateService = new UpdateService(function (type) {\n            if (type === void 0) { type = ChartUpdateType.FULL; }\n            return _this.update(type);\n        });\n        SizeMonitor.observe(_this.element, function (size) {\n            var width = size.width, height = size.height;\n            if (!_this.autoSize) {\n                return;\n            }\n            if (width === 0 && height === 0) {\n                return;\n            }\n            if (width === _this.width && height === _this.height) {\n                return;\n            }\n            _this._lastAutoSize = [width, height];\n            _this.resize(width, height);\n        });\n        _this.layoutService.addListener('start-layout', function (e) { return _this.positionPadding(e.shrinkRect); });\n        _this.layoutService.addListener('start-layout', function (e) { return _this.positionCaptions(e.shrinkRect); });\n        _this.tooltip = new Tooltip(_this.scene.canvas.element, document, document.body);\n        _this.tooltipManager = new TooltipManager(_this.tooltip, _this.interactionManager);\n        _this.legend = new Legend(_this, _this.interactionManager, _this.cursorManager, _this.highlightManager, _this.tooltipManager, _this.layoutService);\n        _this.overlays = new ChartOverlays(_this.element);\n        _this.highlight = new ChartHighlight();\n        _this.container = container;\n        // Add interaction listeners last so child components are registered first.\n        _this.interactionManager.addListener('click', function (event) { return _this.onClick(event); });\n        _this.interactionManager.addListener('dblclick', function (event) { return _this.onDoubleClick(event); });\n        _this.interactionManager.addListener('hover', function (event) { return _this.onMouseMove(event); });\n        _this.interactionManager.addListener('leave', function (event) { return _this.onLeave(event); });\n        _this.interactionManager.addListener('page-left', function () { return _this.destroy(); });\n        _this.interactionManager.addListener('wheel', function () { return _this.disablePointer(); });\n        _this.zoomManager.addListener('zoom-change', function (_) {\n            return _this.update(ChartUpdateType.PROCESS_DATA, { forceNodeDataRefresh: true });\n        });\n        _this.highlightManager.addListener('highlight-change', function (event) { return _this.changeHighlightDatum(event); });\n        return _this;\n    }\n    Chart.prototype.getOptions = function () {\n        var _a;\n        var queuedUserOptions = this.queuedUserOptions;\n        var lastUpdateOptions = (_a = queuedUserOptions[queuedUserOptions.length - 1]) !== null && _a !== void 0 ? _a : this.userOptions;\n        return jsonMerge([lastUpdateOptions]);\n    };\n    Object.defineProperty(Chart.prototype, \"container\", {\n        get: function () {\n            return this._container;\n        },\n        set: function (value) {\n            if (this._container !== value) {\n                var parentNode = this.element.parentNode;\n                if (parentNode != null) {\n                    parentNode.removeChild(this.element);\n                }\n                if (value && !this.destroyed) {\n                    value.appendChild(this.element);\n                }\n                this._container = value;\n            }\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Chart.prototype.autoSizeChanged = function (value) {\n        var style = this.element.style;\n        if (value) {\n            style.display = 'block';\n            style.width = '100%';\n            style.height = '100%';\n            if (!this._lastAutoSize) {\n                return;\n            }\n            this.resize(this._lastAutoSize[0], this._lastAutoSize[1]);\n        }\n        else {\n            style.display = 'inline-block';\n            style.width = 'auto';\n            style.height = 'auto';\n        }\n    };\n    Chart.prototype.download = function (fileName, fileFormat) {\n        this.scene.download(fileName, fileFormat);\n    };\n    Object.defineProperty(Chart.prototype, \"destroyed\", {\n        get: function () {\n            return this._destroyed;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Chart.prototype.addModule = function (module) {\n        if (this.modules[module.optionsKey] != null) {\n            throw new Error('AG Charts - module already initialised: ' + module.optionsKey);\n        }\n        var moduleMeta = module.initialiseModule(this.getModuleContext());\n        this.modules[module.optionsKey] = moduleMeta;\n        this[module.optionsKey] = moduleMeta.instance;\n    };\n    Chart.prototype.removeModule = function (module) {\n        var _a, _b;\n        (_b = (_a = this.modules[module.optionsKey]) === null || _a === void 0 ? void 0 : _a.instance) === null || _b === void 0 ? void 0 : _b.destroy();\n        delete this.modules[module.optionsKey];\n        delete this[module.optionsKey];\n    };\n    Chart.prototype.isModuleEnabled = function (module) {\n        return this.modules[module.optionsKey] != null;\n    };\n    Chart.prototype.getModuleContext = function () {\n        var _a = this, scene = _a.scene, interactionManager = _a.interactionManager, zoomManager = _a.zoomManager, cursorManager = _a.cursorManager, highlightManager = _a.highlightManager, tooltipManager = _a.tooltipManager, layoutService = _a.layoutService, updateService = _a.updateService;\n        return {\n            scene: scene,\n            interactionManager: interactionManager,\n            zoomManager: zoomManager,\n            cursorManager: cursorManager,\n            highlightManager: highlightManager,\n            tooltipManager: tooltipManager,\n            layoutService: layoutService,\n            updateService: updateService,\n        };\n    };\n    Chart.prototype.destroy = function (opts) {\n        var e_1, _a;\n        if (this._destroyed) {\n            return;\n        }\n        var keepTransferableResources = opts === null || opts === void 0 ? void 0 : opts.keepTransferableResources;\n        var result = undefined;\n        this._performUpdateType = ChartUpdateType.NONE;\n        this._pendingFactoryUpdates.splice(0);\n        this.tooltipManager.destroy();\n        this.tooltip.destroy();\n        this.legend.destroy();\n        SizeMonitor.unobserve(this.element);\n        try {\n            for (var _b = __values$h(Object.entries(this.modules)), _c = _b.next(); !_c.done; _c = _b.next()) {\n                var _d = __read$D(_c.value, 2), key = _d[0], module_1 = _d[1];\n                module_1.instance.destroy();\n                delete this.modules[key];\n                delete this[key];\n            }\n        }\n        catch (e_1_1) { e_1 = { error: e_1_1 }; }\n        finally {\n            try {\n                if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n            }\n            finally { if (e_1) throw e_1.error; }\n        }\n        this.interactionManager.destroy();\n        if (keepTransferableResources) {\n            this.scene.strip();\n            result = { container: this.container, scene: this.scene, element: this.element };\n        }\n        else {\n            this.scene.destroy();\n            this.container = undefined;\n        }\n        this.series.forEach(function (s) { return s.destroy(); });\n        this.series = [];\n        this.axes.forEach(function (a) { return a.destroy(); });\n        this.axes = [];\n        this._destroyed = true;\n        return result;\n    };\n    Chart.prototype.log = function (opts) {\n        if (this.debug) {\n            Logger.debug(opts);\n        }\n    };\n    Chart.prototype.disablePointer = function (highlightOnly) {\n        if (highlightOnly === void 0) { highlightOnly = false; }\n        if (!highlightOnly) {\n            this.tooltipManager.removeTooltip(this.id);\n        }\n        this.highlightManager.updateHighlight(this.id);\n        if (this.lastInteractionEvent) {\n            this.lastInteractionEvent = undefined;\n        }\n    };\n    Chart.prototype.requestFactoryUpdate = function (cb) {\n        var callbacks = this._pendingFactoryUpdates;\n        var count = callbacks.length;\n        if (count === 0) {\n            callbacks.push(cb);\n            this._processCallbacks();\n        }\n        else {\n            // Factory callback process already running, the callback will be invoked asynchronously.\n            // Clear the queue after the first callback to prevent unnecessary re-renderings.\n            callbacks.splice(1, count - 1, cb);\n        }\n    };\n    Chart.prototype._processCallbacks = function () {\n        return __awaiter$b(this, void 0, void 0, function () {\n            var callbacks, e_2;\n            return __generator$b(this, function (_a) {\n                switch (_a.label) {\n                    case 0:\n                        callbacks = this._pendingFactoryUpdates;\n                        _a.label = 1;\n                    case 1:\n                        if (!(callbacks.length > 0)) return [3 /*break*/, 7];\n                        if (!this.updatePending) return [3 /*break*/, 3];\n                        return [4 /*yield*/, sleep(1)];\n                    case 2:\n                        _a.sent();\n                        return [3 /*break*/, 1]; // Make sure to check queue has an item before continuing.\n                    case 3:\n                        _a.trys.push([3, 5, , 6]);\n                        return [4 /*yield*/, callbacks[0]()];\n                    case 4:\n                        _a.sent();\n                        return [3 /*break*/, 6];\n                    case 5:\n                        e_2 = _a.sent();\n                        Logger.error('update error', e_2);\n                        return [3 /*break*/, 6];\n                    case 6:\n                        callbacks.shift();\n                        return [3 /*break*/, 1];\n                    case 7: return [2 /*return*/];\n                }\n            });\n        });\n    };\n    Object.defineProperty(Chart.prototype, \"performUpdateType\", {\n        get: function () {\n            return this._performUpdateType;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(Chart.prototype, \"updatePending\", {\n        get: function () {\n            return this._performUpdateType !== ChartUpdateType.NONE || this.lastInteractionEvent != null;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(Chart.prototype, \"lastPerformUpdateError\", {\n        get: function () {\n            return this._lastPerformUpdateError;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Chart.prototype.awaitUpdateCompletion = function () {\n        return __awaiter$b(this, void 0, void 0, function () {\n            return __generator$b(this, function (_a) {\n                switch (_a.label) {\n                    case 0: return [4 /*yield*/, this.performUpdateTrigger.await()];\n                    case 1:\n                        _a.sent();\n                        return [2 /*return*/];\n                }\n            });\n        });\n    };\n    Chart.prototype.update = function (type, opts) {\n        var e_3, _a;\n        if (type === void 0) { type = ChartUpdateType.FULL; }\n        var _b = opts || {}, _c = _b.forceNodeDataRefresh, forceNodeDataRefresh = _c === void 0 ? false : _c, _d = _b.seriesToUpdate, seriesToUpdate = _d === void 0 ? this.series : _d;\n        if (forceNodeDataRefresh) {\n            this.series.forEach(function (series) { return series.markNodeDataDirty(); });\n        }\n        try {\n            for (var seriesToUpdate_1 = __values$h(seriesToUpdate), seriesToUpdate_1_1 = seriesToUpdate_1.next(); !seriesToUpdate_1_1.done; seriesToUpdate_1_1 = seriesToUpdate_1.next()) {\n                var series = seriesToUpdate_1_1.value;\n                this.seriesToUpdate.add(series);\n            }\n        }\n        catch (e_3_1) { e_3 = { error: e_3_1 }; }\n        finally {\n            try {\n                if (seriesToUpdate_1_1 && !seriesToUpdate_1_1.done && (_a = seriesToUpdate_1.return)) _a.call(seriesToUpdate_1);\n            }\n            finally { if (e_3) throw e_3.error; }\n        }\n        if (type < this._performUpdateType) {\n            this._performUpdateType = type;\n            this.performUpdateTrigger.schedule();\n        }\n    };\n    Chart.prototype.performUpdate = function (count) {\n        var _a;\n        return __awaiter$b(this, void 0, void 0, function () {\n            var _b, performUpdateType, extraDebugStats, splits, _c, count_1, seriesRect_1, seriesUpdates, tooltipMeta, end;\n            return __generator$b(this, function (_d) {\n                switch (_d.label) {\n                    case 0:\n                        _b = this, performUpdateType = _b._performUpdateType, extraDebugStats = _b.extraDebugStats;\n                        splits = [performance.now()];\n                        _c = performUpdateType;\n                        switch (_c) {\n                            case ChartUpdateType.FULL: return [3 /*break*/, 1];\n                            case ChartUpdateType.PROCESS_DATA: return [3 /*break*/, 1];\n                            case ChartUpdateType.PERFORM_LAYOUT: return [3 /*break*/, 3];\n                            case ChartUpdateType.SERIES_UPDATE: return [3 /*break*/, 5];\n                            case ChartUpdateType.TOOLTIP_RECALCULATION: return [3 /*break*/, 7];\n                            case ChartUpdateType.SCENE_RENDER: return [3 /*break*/, 8];\n                            case ChartUpdateType.NONE: return [3 /*break*/, 10];\n                        }\n                        return [3 /*break*/, 11];\n                    case 1: return [4 /*yield*/, this.processData()];\n                    case 2:\n                        _d.sent();\n                        this.disablePointer(true);\n                        splits.push(performance.now());\n                        _d.label = 3;\n                    case 3:\n                        if (this.autoSize && !this._lastAutoSize) {\n                            count_1 = this._performUpdateNoRenderCount++;\n                            if (count_1 < 5) {\n                                // Reschedule if canvas size hasn't been set yet to avoid a race.\n                                this._performUpdateType = ChartUpdateType.PERFORM_LAYOUT;\n                                this.performUpdateTrigger.schedule();\n                                return [3 /*break*/, 11];\n                            }\n                            // After several failed passes, continue and accept there maybe a redundant\n                            // render. Sometimes this case happens when we already have the correct\n                            // width/height, and we end up never rendering the chart in that scenario.\n                        }\n                        this._performUpdateNoRenderCount = 0;\n                        return [4 /*yield*/, this.performLayout()];\n                    case 4:\n                        _d.sent();\n                        this.handleOverlays();\n                        splits.push(performance.now());\n                        _d.label = 5;\n                    case 5:\n                        seriesRect_1 = this.seriesRect;\n                        seriesUpdates = __spread$m(this.seriesToUpdate).map(function (series) { return series.update({ seriesRect: seriesRect_1 }); });\n                        this.seriesToUpdate.clear();\n                        return [4 /*yield*/, Promise.all(seriesUpdates)];\n                    case 6:\n                        _d.sent();\n                        splits.push(performance.now());\n                        _d.label = 7;\n                    case 7:\n                        tooltipMeta = this.tooltipManager.getTooltipMeta(this.id);\n                        if (performUpdateType < ChartUpdateType.SERIES_UPDATE && ((_a = tooltipMeta === null || tooltipMeta === void 0 ? void 0 : tooltipMeta.event) === null || _a === void 0 ? void 0 : _a.type) === 'hover') {\n                            this.handlePointer(tooltipMeta.event);\n                        }\n                        _d.label = 8;\n                    case 8: return [4 /*yield*/, this.scene.render({ debugSplitTimes: splits, extraDebugStats: extraDebugStats })];\n                    case 9:\n                        _d.sent();\n                        this.extraDebugStats = {};\n                        _d.label = 10;\n                    case 10:\n                        // Do nothing.\n                        this._performUpdateType = ChartUpdateType.NONE;\n                        _d.label = 11;\n                    case 11:\n                        end = performance.now();\n                        this.log({\n                            chart: this,\n                            durationMs: Math.round((end - splits[0]) * 100) / 100,\n                            count: count,\n                            performUpdateType: ChartUpdateType[performUpdateType],\n                        });\n                        return [2 /*return*/];\n                }\n            });\n        });\n    };\n    Object.defineProperty(Chart.prototype, \"axes\", {\n        get: function () {\n            return this._axes;\n        },\n        set: function (values) {\n            var _this = this;\n            var removedAxes = new Set();\n            this._axes.forEach(function (axis) {\n                axis.detachAxis(_this.axisGroup);\n                removedAxes.add(axis);\n            });\n            // make linked axes go after the regular ones (simulates stable sort by `linkedTo` property)\n            this._axes = values.filter(function (a) { return !a.linkedTo; }).concat(values.filter(function (a) { return a.linkedTo; }));\n            this._axes.forEach(function (axis) {\n                axis.attachAxis(_this.axisGroup);\n                removedAxes.delete(axis);\n            });\n            removedAxes.forEach(function (axis) { return axis.destroy(); });\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(Chart.prototype, \"series\", {\n        get: function () {\n            return this._series;\n        },\n        set: function (values) {\n            var _this = this;\n            this.removeAllSeries();\n            values.forEach(function (series) { return _this.addSeries(series); });\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Chart.prototype.addSeries = function (series, before) {\n        var _a = this, allSeries = _a.series, seriesRoot = _a.seriesRoot;\n        var canAdd = allSeries.indexOf(series) < 0;\n        if (canAdd) {\n            var beforeIndex = before ? allSeries.indexOf(before) : -1;\n            if (beforeIndex >= 0) {\n                allSeries.splice(beforeIndex, 0, series);\n                seriesRoot.insertBefore(series.rootGroup, before.rootGroup);\n            }\n            else {\n                allSeries.push(series);\n                seriesRoot.append(series.rootGroup);\n            }\n            this.initSeries(series);\n            return true;\n        }\n        return false;\n    };\n    Chart.prototype.initSeries = function (series) {\n        series.chart = this;\n        series.highlightManager = this.highlightManager;\n        if (!series.data) {\n            series.data = this.data;\n        }\n        this.addSeriesListeners(series);\n    };\n    Chart.prototype.freeSeries = function (series) {\n        series.chart = undefined;\n        series.removeEventListener('nodeClick', this.onSeriesNodeClick);\n        series.removeEventListener('nodeDoubleClick', this.onSeriesNodeDoubleClick);\n    };\n    Chart.prototype.removeAllSeries = function () {\n        var _this = this;\n        this.series.forEach(function (series) {\n            _this.freeSeries(series);\n            _this.seriesRoot.removeChild(series.rootGroup);\n        });\n        this._series = []; // using `_series` instead of `series` to prevent infinite recursion\n    };\n    Chart.prototype.addSeriesListeners = function (series) {\n        if (this.hasEventListener('seriesNodeClick')) {\n            series.addEventListener('nodeClick', this.onSeriesNodeClick);\n        }\n        if (this.hasEventListener('seriesNodeDoubleClick')) {\n            series.addEventListener('nodeDoubleClick', this.onSeriesNodeDoubleClick);\n        }\n    };\n    Chart.prototype.updateAllSeriesListeners = function () {\n        var _this = this;\n        this.series.forEach(function (series) {\n            series.removeEventListener('nodeClick', _this.onSeriesNodeClick);\n            series.removeEventListener('nodeDoubleClick', _this.onSeriesNodeDoubleClick);\n            _this.addSeriesListeners(series);\n        });\n    };\n    Chart.prototype.assignSeriesToAxes = function () {\n        var _this = this;\n        this.axes.forEach(function (axis) {\n            axis.boundSeries = _this.series.filter(function (s) {\n                var seriesAxis = axis.direction === ChartAxisDirection.X ? s.xAxis : s.yAxis;\n                return seriesAxis === axis;\n            });\n        });\n    };\n    Chart.prototype.assignAxesToSeries = function (force) {\n        var _this = this;\n        if (force === void 0) { force = false; }\n        // This method has to run before `assignSeriesToAxes`.\n        var directionToAxesMap = {};\n        this.axes.forEach(function (axis) {\n            var direction = axis.direction;\n            var directionAxes = directionToAxesMap[direction] || (directionToAxesMap[direction] = []);\n            directionAxes.push(axis);\n        });\n        this.series.forEach(function (series) {\n            series.directions.forEach(function (direction) {\n                var currentAxis = direction === ChartAxisDirection.X ? series.xAxis : series.yAxis;\n                if (currentAxis && !force) {\n                    return;\n                }\n                var directionAxes = directionToAxesMap[direction];\n                if (!directionAxes) {\n                    Logger.warn(\"no available axis for direction [\" + direction + \"]; check series and axes configuration.\");\n                    return;\n                }\n                var seriesKeys = series.getKeys(direction);\n                var newAxis = _this.findMatchingAxis(directionAxes, series.getKeys(direction));\n                if (!newAxis) {\n                    Logger.warn(\"no matching axis for direction [\" + direction + \"] and keys [\" + seriesKeys + \"]; check series and axes configuration.\");\n                    return;\n                }\n                if (direction === ChartAxisDirection.X) {\n                    series.xAxis = newAxis;\n                }\n                else {\n                    series.yAxis = newAxis;\n                }\n            });\n        });\n    };\n    Chart.prototype.findMatchingAxis = function (directionAxes, directionKeys) {\n        var e_4, _a, e_5, _b;\n        try {\n            for (var directionAxes_1 = __values$h(directionAxes), directionAxes_1_1 = directionAxes_1.next(); !directionAxes_1_1.done; directionAxes_1_1 = directionAxes_1.next()) {\n                var axis = directionAxes_1_1.value;\n                var axisKeys = axis.keys;\n                if (!axisKeys.length) {\n                    return axis;\n                }\n                if (!directionKeys) {\n                    continue;\n                }\n                try {\n                    for (var directionKeys_1 = (e_5 = void 0, __values$h(directionKeys)), directionKeys_1_1 = directionKeys_1.next(); !directionKeys_1_1.done; directionKeys_1_1 = directionKeys_1.next()) {\n                        var directionKey = directionKeys_1_1.value;\n                        if (axisKeys.indexOf(directionKey) >= 0) {\n                            return axis;\n                        }\n                    }\n                }\n                catch (e_5_1) { e_5 = { error: e_5_1 }; }\n                finally {\n                    try {\n                        if (directionKeys_1_1 && !directionKeys_1_1.done && (_b = directionKeys_1.return)) _b.call(directionKeys_1);\n                    }\n                    finally { if (e_5) throw e_5.error; }\n                }\n            }\n        }\n        catch (e_4_1) { e_4 = { error: e_4_1 }; }\n        finally {\n            try {\n                if (directionAxes_1_1 && !directionAxes_1_1.done && (_a = directionAxes_1.return)) _a.call(directionAxes_1);\n            }\n            finally { if (e_4) throw e_4.error; }\n        }\n    };\n    Chart.prototype.resize = function (width, height) {\n        if (!width || !height || !Number.isFinite(width) || !Number.isFinite(height))\n            return;\n        if (this.scene.resize(width, height)) {\n            this.disablePointer();\n            this.update(ChartUpdateType.PERFORM_LAYOUT, { forceNodeDataRefresh: true });\n        }\n    };\n    Chart.prototype.processData = function () {\n        return __awaiter$b(this, void 0, void 0, function () {\n            return __generator$b(this, function (_a) {\n                switch (_a.label) {\n                    case 0:\n                        if (this.axes.length > 0 || this.series.some(function (s) { return s instanceof CartesianSeries; })) {\n                            this.assignAxesToSeries(true);\n                            this.assignSeriesToAxes();\n                        }\n                        return [4 /*yield*/, Promise.all(this.series.map(function (s) { return s.processData(); }))];\n                    case 1:\n                        _a.sent();\n                        return [4 /*yield*/, this.updateLegend()];\n                    case 2:\n                        _a.sent();\n                        return [2 /*return*/];\n                }\n            });\n        });\n    };\n    Chart.prototype.placeLabels = function () {\n        var e_6, _a;\n        var visibleSeries = [];\n        var data = [];\n        try {\n            for (var _b = __values$h(this.series), _c = _b.next(); !_c.done; _c = _b.next()) {\n                var series = _c.value;\n                if (!series.visible) {\n                    continue;\n                }\n                var labelData = series.getLabelData();\n                if (!(labelData && isPointLabelDatum(labelData[0]))) {\n                    continue;\n                }\n                data.push(labelData);\n                visibleSeries.push(series);\n            }\n        }\n        catch (e_6_1) { e_6 = { error: e_6_1 }; }\n        finally {\n            try {\n                if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n            }\n            finally { if (e_6) throw e_6.error; }\n        }\n        var seriesRect = this.seriesRect;\n        var labels = seriesRect && data.length > 0\n            ? placeLabels(data, { x: 0, y: 0, width: seriesRect.width, height: seriesRect.height })\n            : [];\n        return new Map(labels.map(function (l, i) { return [visibleSeries[i], l]; }));\n    };\n    Chart.prototype.updateLegend = function () {\n        return __awaiter$b(this, void 0, void 0, function () {\n            var legendData, formatter;\n            return __generator$b(this, function (_a) {\n                legendData = [];\n                this.series\n                    .filter(function (s) { return s.showInLegend; })\n                    .forEach(function (series) {\n                    legendData.push.apply(legendData, __spread$m(series.getLegendData()));\n                });\n                formatter = this.legend.item.label.formatter;\n                if (formatter) {\n                    legendData.forEach(function (datum) {\n                        return (datum.label.text = formatter({\n                            get id() {\n                                Logger.warnOnce(\"LegendLabelFormatterParams.id is deprecated, use seriesId instead\");\n                                return datum.seriesId;\n                            },\n                            itemId: datum.itemId,\n                            value: datum.label.text,\n                            seriesId: datum.seriesId,\n                        }));\n                    });\n                }\n                this.legend.data = legendData;\n                return [2 /*return*/];\n            });\n        });\n    };\n    Chart.prototype.performLayout = function () {\n        return __awaiter$b(this, void 0, void 0, function () {\n            var _a, width, height, shrinkRect;\n            return __generator$b(this, function (_b) {\n                this.scene.root.visible = true;\n                _a = this.scene, width = _a.width, height = _a.height;\n                shrinkRect = new BBox(0, 0, width, height);\n                (shrinkRect = this.layoutService.dispatchPerformLayout('start-layout', { shrinkRect: shrinkRect }).shrinkRect);\n                (shrinkRect = this.layoutService.dispatchPerformLayout('before-series', { shrinkRect: shrinkRect }).shrinkRect);\n                return [2 /*return*/, shrinkRect];\n            });\n        });\n    };\n    Chart.prototype.positionPadding = function (shrinkRect) {\n        var padding = this.padding;\n        shrinkRect.shrink(padding.left, 'left');\n        shrinkRect.shrink(padding.top, 'top');\n        shrinkRect.shrink(padding.right, 'right');\n        shrinkRect.shrink(padding.bottom, 'bottom');\n        return { shrinkRect: shrinkRect };\n    };\n    Chart.prototype.positionCaptions = function (shrinkRect) {\n        var _a = this, title = _a.title, subtitle = _a.subtitle, footnote = _a.footnote;\n        var newShrinkRect = shrinkRect.clone();\n        var positionTopAndShrinkBBox = function (caption) {\n            var _a;\n            var baseY = newShrinkRect.y;\n            caption.node.x = newShrinkRect.x + newShrinkRect.width / 2;\n            caption.node.y = baseY;\n            caption.node.textBaseline = 'top';\n            var bbox = caption.node.computeBBox();\n            // As the bbox (x,y) ends up at a different location than specified above, we need to\n            // take it into consideration when calculating how much space needs to be reserved to\n            // accommodate the caption.\n            var bboxHeight = Math.ceil(bbox.y - baseY + bbox.height + ((_a = caption.spacing) !== null && _a !== void 0 ? _a : 0));\n            newShrinkRect.shrink(bboxHeight, 'top');\n        };\n        var positionBottomAndShrinkBBox = function (caption) {\n            var _a;\n            var baseY = newShrinkRect.y + newShrinkRect.height;\n            caption.node.x = newShrinkRect.x + newShrinkRect.width / 2;\n            caption.node.y = baseY;\n            caption.node.textBaseline = 'bottom';\n            var bbox = caption.node.computeBBox();\n            var bboxHeight = Math.ceil(baseY - bbox.y + ((_a = caption.spacing) !== null && _a !== void 0 ? _a : 0));\n            newShrinkRect.shrink(bboxHeight, 'bottom');\n        };\n        if (title) {\n            title.node.visible = title.enabled;\n            if (title.node.visible) {\n                positionTopAndShrinkBBox(title);\n            }\n        }\n        if (subtitle) {\n            subtitle.node.visible = title !== undefined && title.enabled && subtitle.enabled;\n            if (subtitle.node.visible) {\n                positionTopAndShrinkBBox(subtitle);\n            }\n        }\n        if (footnote) {\n            footnote.node.visible = footnote.enabled;\n            if (footnote.node.visible) {\n                positionBottomAndShrinkBBox(footnote);\n            }\n        }\n        return { shrinkRect: newShrinkRect };\n    };\n    Chart.prototype.getSeriesRect = function () {\n        return this.seriesRect;\n    };\n    // x/y are local canvas coordinates in CSS pixels, not actual pixels\n    Chart.prototype.pickSeriesNode = function (point, exactMatchOnly, maxDistance) {\n        var e_7, _a;\n        var _b, _c;\n        var start = performance.now();\n        // Disable 'nearest match' options if looking for exact matches only\n        var pickModes = exactMatchOnly ? [SeriesNodePickMode.EXACT_SHAPE_MATCH] : undefined;\n        // Iterate through series in reverse, as later declared series appears on top of earlier\n        // declared series.\n        var reverseSeries = __spread$m(this.series).reverse();\n        var result = undefined;\n        try {\n            for (var reverseSeries_1 = __values$h(reverseSeries), reverseSeries_1_1 = reverseSeries_1.next(); !reverseSeries_1_1.done; reverseSeries_1_1 = reverseSeries_1.next()) {\n                var series = reverseSeries_1_1.value;\n                if (!series.visible || !series.rootGroup.visible) {\n                    continue;\n                }\n                var _d = (_b = series.pickNode(point, pickModes)) !== null && _b !== void 0 ? _b : {}, match = _d.match, distance = _d.distance;\n                if (!match || distance == null) {\n                    continue;\n                }\n                if ((!result || result.distance > distance) && distance <= (maxDistance !== null && maxDistance !== void 0 ? maxDistance : Infinity)) {\n                    result = { series: series, distance: distance, datum: match };\n                }\n                if (distance === 0) {\n                    break;\n                }\n            }\n        }\n        catch (e_7_1) { e_7 = { error: e_7_1 }; }\n        finally {\n            try {\n                if (reverseSeries_1_1 && !reverseSeries_1_1.done && (_a = reverseSeries_1.return)) _a.call(reverseSeries_1);\n            }\n            finally { if (e_7) throw e_7.error; }\n        }\n        this.extraDebugStats['pickSeriesNode'] = Math.round(((_c = this.extraDebugStats['pickSeriesNode']) !== null && _c !== void 0 ? _c : 0) + (performance.now() - start));\n        return result;\n    };\n    Chart.prototype.onMouseMove = function (event) {\n        this.lastInteractionEvent = event;\n        this.pointerScheduler.schedule();\n        this.extraDebugStats['mouseX'] = event.offsetX;\n        this.extraDebugStats['mouseY'] = event.offsetY;\n        this.update(ChartUpdateType.SCENE_RENDER);\n    };\n    Chart.prototype.onLeave = function (event) {\n        if (this.tooltip.pointerLeftOntoTooltip(event)) {\n            return;\n        }\n        this.disablePointer();\n    };\n    Chart.prototype.handlePointer = function (event) {\n        var _this = this;\n        var _a = this, lastPick = _a.lastPick, hoverRect = _a.hoverRect;\n        var offsetX = event.offsetX, offsetY = event.offsetY;\n        var disablePointer = function (highlightOnly) {\n            if (highlightOnly === void 0) { highlightOnly = false; }\n            if (lastPick) {\n                // Cursor moved from a non-marker node to empty space.\n                _this.disablePointer(highlightOnly);\n            }\n        };\n        if (!(hoverRect === null || hoverRect === void 0 ? void 0 : hoverRect.containsPoint(offsetX, offsetY))) {\n            disablePointer();\n            return;\n        }\n        // Handle node highlighting and tooltip toggling when pointer within `tooltip.range`\n        this.handlePointerTooltip(event, disablePointer);\n        // Handle node highlighting and mouse cursor when pointer withing `series[].nodeClickRange`\n        this.handlePointerNode(event);\n    };\n    Chart.prototype.handlePointerTooltip = function (event, disablePointer) {\n        var _a, _b;\n        var _c = this, lastPick = _c.lastPick, tooltip = _c.tooltip;\n        var range = tooltip.range;\n        var pageX = event.pageX, pageY = event.pageY, offsetX = event.offsetX, offsetY = event.offsetY;\n        var pixelRange;\n        if (typeof range === 'number' && Number.isFinite(range)) {\n            pixelRange = range;\n        }\n        var pick = this.pickSeriesNode({ x: offsetX, y: offsetY }, range === 'exact', pixelRange);\n        if (!pick) {\n            this.tooltipManager.updateTooltip(this.id);\n            if (this.highlight.range === 'tooltip')\n                disablePointer(true);\n            return;\n        }\n        var isNewDatum = this.highlight.range === 'node' || !lastPick || lastPick.datum !== pick.datum;\n        var html;\n        if (isNewDatum) {\n            html = pick.series.getTooltipHtml(pick.datum);\n            if (this.highlight.range === 'tooltip') {\n                this.highlightManager.updateHighlight(this.id, pick.datum);\n            }\n        }\n        else if (lastPick) {\n            lastPick.event = event.sourceEvent;\n        }\n        var isPixelRange = pixelRange != null;\n        var tooltipEnabled = this.tooltip.enabled && pick.series.tooltip.enabled;\n        var exactlyMatched = range === 'exact' && pick.distance === 0;\n        var rangeMatched = range === 'nearest' || isPixelRange || exactlyMatched;\n        var shouldUpdateTooltip = tooltipEnabled && rangeMatched && (!isNewDatum || html !== undefined);\n        var position = {\n            xOffset: pick.datum.series.tooltip.position.xOffset,\n            yOffset: pick.datum.series.tooltip.position.yOffset,\n        };\n        var meta = this.mergePointerDatum({ pageX: pageX, pageY: pageY, offsetX: offsetX, offsetY: offsetY, event: event, position: position }, pick.datum);\n        meta.enableInteraction = (_b = (_a = pick.series.tooltip.interaction) === null || _a === void 0 ? void 0 : _a.enabled) !== null && _b !== void 0 ? _b : false;\n        if (shouldUpdateTooltip) {\n            this.tooltipManager.updateTooltip(this.id, meta, html);\n        }\n    };\n    Chart.prototype.handlePointerNode = function (event) {\n        var _this = this;\n        var found = this.checkSeriesNodeRange(event, function (series, datum) {\n            if (series.hasEventListener('nodeClick') || series.hasEventListener('nodeDoubleClick')) {\n                _this.cursorManager.updateCursor('chart', 'pointer');\n            }\n            if (_this.highlight.range === 'node') {\n                _this.highlightManager.updateHighlight(_this.id, datum);\n            }\n        });\n        if (!found) {\n            this.cursorManager.updateCursor('chart');\n            if (this.highlight.range === 'node') {\n                this.highlightManager.updateHighlight(this.id);\n            }\n        }\n    };\n    Chart.prototype.onClick = function (event) {\n        if (this.checkSeriesNodeClick(event)) {\n            this.update(ChartUpdateType.SERIES_UPDATE);\n            return;\n        }\n        this.fireEvent({\n            type: 'click',\n            event: event.sourceEvent,\n        });\n    };\n    Chart.prototype.onDoubleClick = function (event) {\n        if (this.checkSeriesNodeDoubleClick(event)) {\n            this.update(ChartUpdateType.SERIES_UPDATE);\n            return;\n        }\n        this.fireEvent({\n            type: 'doubleClick',\n            event: event.sourceEvent,\n        });\n    };\n    Chart.prototype.checkSeriesNodeClick = function (event) {\n        return this.checkSeriesNodeRange(event, function (series, datum) {\n            return series.fireNodeClickEvent(event.sourceEvent, datum);\n        });\n    };\n    Chart.prototype.checkSeriesNodeDoubleClick = function (event) {\n        return this.checkSeriesNodeRange(event, function (series, datum) {\n            return series.fireNodeDoubleClickEvent(event.sourceEvent, datum);\n        });\n    };\n    Chart.prototype.checkSeriesNodeRange = function (event, callback) {\n        var nearestNode = this.pickSeriesNode({ x: event.offsetX, y: event.offsetY }, false);\n        var datum = nearestNode === null || nearestNode === void 0 ? void 0 : nearestNode.datum;\n        var nodeClickRange = datum === null || datum === void 0 ? void 0 : datum.series.nodeClickRange;\n        // First check if we should trigger the callback based on nearest node\n        if (datum && nodeClickRange === 'nearest') {\n            callback(datum.series, datum);\n            return true;\n        }\n        // Then check for an exact match or within the given range\n        var pixelRange;\n        if (typeof nodeClickRange === 'number' && Number.isFinite(nodeClickRange)) {\n            pixelRange = nodeClickRange;\n        }\n        var pick = this.pickSeriesNode({ x: event.offsetX, y: event.offsetY }, nodeClickRange === 'exact', pixelRange);\n        if (!pick)\n            return false;\n        // Then if we've picked a node within the pixel range, or exactly, trigger the callback\n        var isPixelRange = pixelRange != null;\n        var exactlyMatched = nodeClickRange === 'exact' && pick.distance === 0;\n        if (isPixelRange || exactlyMatched) {\n            callback(pick.series, pick.datum);\n            return true;\n        }\n        return false;\n    };\n    Chart.prototype.mergePointerDatum = function (meta, datum) {\n        var type = datum.series.tooltip.position.type;\n        if (type === 'node' && datum.nodeMidPoint) {\n            var _a = datum.nodeMidPoint, x = _a.x, y = _a.y;\n            var canvas = this.scene.canvas;\n            var point = datum.series.rootGroup.inverseTransformPoint(x, y);\n            var canvasRect = canvas.element.getBoundingClientRect();\n            return __assign$z(__assign$z({}, meta), { pageX: Math.round(canvasRect.left + window.scrollX + point.x), pageY: Math.round(canvasRect.top + window.scrollY + point.y), offsetX: Math.round(point.x), offsetY: Math.round(point.y) });\n        }\n        return meta;\n    };\n    Chart.prototype.changeHighlightDatum = function (event) {\n        var seriesToUpdate = new Set();\n        var _a = event.currentHighlight || {}, _b = _a.series, newSeries = _b === void 0 ? undefined : _b, newDatum = _a.datum;\n        var _c = event.previousHighlight || {}, _d = _c.series, lastSeries = _d === void 0 ? undefined : _d, lastDatum = _c.datum;\n        if (lastSeries) {\n            seriesToUpdate.add(lastSeries);\n        }\n        if (newSeries) {\n            seriesToUpdate.add(newSeries);\n        }\n        // Adjust cursor if a specific datum is highlighted, rather than just a series.\n        if ((lastSeries === null || lastSeries === void 0 ? void 0 : lastSeries.cursor) && lastDatum) {\n            this.cursorManager.updateCursor(lastSeries.id);\n        }\n        if ((newSeries === null || newSeries === void 0 ? void 0 : newSeries.cursor) && newDatum) {\n            this.cursorManager.updateCursor(newSeries.id, newSeries.cursor);\n        }\n        this.lastPick = event.currentHighlight ? { datum: event.currentHighlight } : undefined;\n        var updateAll = newSeries == null || lastSeries == null;\n        if (updateAll) {\n            this.update(ChartUpdateType.SERIES_UPDATE);\n        }\n        else {\n            this.update(ChartUpdateType.SERIES_UPDATE, { seriesToUpdate: seriesToUpdate });\n        }\n    };\n    Chart.prototype.waitForUpdate = function (timeoutMs) {\n        if (timeoutMs === void 0) { timeoutMs = 5000; }\n        return __awaiter$b(this, void 0, void 0, function () {\n            var start;\n            return __generator$b(this, function (_a) {\n                switch (_a.label) {\n                    case 0:\n                        start = performance.now();\n                        _a.label = 1;\n                    case 1:\n                        if (!(this._pendingFactoryUpdates.length > 0 || this.updatePending)) return [3 /*break*/, 3];\n                        if (performance.now() - start > timeoutMs) {\n                            throw new Error('waitForUpdate() timeout reached.');\n                        }\n                        return [4 /*yield*/, sleep(5)];\n                    case 2:\n                        _a.sent();\n                        return [3 /*break*/, 1];\n                    case 3: return [4 /*yield*/, this.awaitUpdateCompletion()];\n                    case 4:\n                        _a.sent();\n                        return [2 /*return*/];\n                }\n            });\n        });\n    };\n    Chart.prototype.handleOverlays = function () {\n        this.handleNoDataOverlay();\n    };\n    Chart.prototype.handleNoDataOverlay = function () {\n        var shouldDisplayNoDataOverlay = !this.series.some(function (s) { return s.hasData(); });\n        var rect = this.getSeriesRect();\n        if (shouldDisplayNoDataOverlay && rect) {\n            this.overlays.noData.show(rect);\n        }\n        else {\n            this.overlays.noData.hide();\n        }\n    };\n    __decorate$1x([\n        ActionOnSet({\n            newValue: function (value) {\n                this.scene.debug.consoleLog = value;\n            },\n        })\n    ], Chart.prototype, \"debug\", void 0);\n    __decorate$1x([\n        ActionOnSet({\n            newValue: function (value) {\n                var _a;\n                (_a = this.series) === null || _a === void 0 ? void 0 : _a.forEach(function (series) { return (series.data = value); });\n            },\n        })\n    ], Chart.prototype, \"data\", void 0);\n    __decorate$1x([\n        ActionOnSet({\n            newValue: function (value) {\n                this.autoSize = false;\n                this.resize(value, this.height);\n            },\n        })\n    ], Chart.prototype, \"width\", void 0);\n    __decorate$1x([\n        ActionOnSet({\n            newValue: function (value) {\n                this.autoSize = false;\n                this.resize(this.width, value);\n            },\n        })\n    ], Chart.prototype, \"height\", void 0);\n    __decorate$1x([\n        ActionOnSet({\n            changeValue: function (value) {\n                this.autoSizeChanged(value);\n            },\n        }),\n        Validate(BOOLEAN)\n    ], Chart.prototype, \"autoSize\", void 0);\n    __decorate$1x([\n        ActionOnSet({\n            newValue: function (value) {\n                var _a;\n                (_a = this.scene.root) === null || _a === void 0 ? void 0 : _a.appendChild(value.node);\n            },\n            oldValue: function (oldValue) {\n                var _a;\n                (_a = this.scene.root) === null || _a === void 0 ? void 0 : _a.removeChild(oldValue.node);\n            },\n        })\n    ], Chart.prototype, \"title\", void 0);\n    __decorate$1x([\n        ActionOnSet({\n            newValue: function (value) {\n                var _a;\n                (_a = this.scene.root) === null || _a === void 0 ? void 0 : _a.appendChild(value.node);\n            },\n            oldValue: function (oldValue) {\n                var _a;\n                (_a = this.scene.root) === null || _a === void 0 ? void 0 : _a.removeChild(oldValue.node);\n            },\n        })\n    ], Chart.prototype, \"subtitle\", void 0);\n    __decorate$1x([\n        ActionOnSet({\n            newValue: function (value) {\n                var _a;\n                (_a = this.scene.root) === null || _a === void 0 ? void 0 : _a.appendChild(value.node);\n            },\n            oldValue: function (oldValue) {\n                var _a;\n                (_a = this.scene.root) === null || _a === void 0 ? void 0 : _a.removeChild(oldValue.node);\n            },\n        })\n    ], Chart.prototype, \"footnote\", void 0);\n    __decorate$1x([\n        Validate(STRING_UNION('standalone', 'integrated'))\n    ], Chart.prototype, \"mode\", void 0);\n    return Chart;\n}(Observable));\n\n/**\n * The tree layout is calculated in abstract x/y coordinates, where the root is at (0, 0)\n * and the tree grows downward from the root.\n */\nvar TreeNode = /** @class */ (function () {\n    function TreeNode(label, parent, number) {\n        if (label === void 0) { label = ''; }\n        if (number === void 0) { number = 0; }\n        this.x = 0;\n        this.y = 0;\n        this.subtreeLeft = NaN;\n        this.subtreeRight = NaN;\n        this.screenX = 0;\n        this.screenY = 0;\n        this.children = [];\n        this.leafCount = 0;\n        this.prelim = 0;\n        this.mod = 0;\n        this.ancestor = this;\n        this.change = 0;\n        this.shift = 0;\n        this.label = label;\n        // screenX and screenY are meant to be recomputed from (layout) x and y\n        // when the tree is resized (without performing another layout)\n        this.parent = parent;\n        this.depth = parent ? parent.depth + 1 : 0;\n        this.number = number;\n    }\n    TreeNode.prototype.getLeftSibling = function () {\n        return this.number > 0 && this.parent ? this.parent.children[this.number - 1] : undefined;\n    };\n    TreeNode.prototype.getLeftmostSibling = function () {\n        return this.number > 0 && this.parent ? this.parent.children[0] : undefined;\n    };\n    // traverse the left contour of a subtree, return the successor of v on this contour\n    TreeNode.prototype.nextLeft = function () {\n        return this.children ? this.children[0] : this.thread;\n    };\n    // traverse the right contour of a subtree, return the successor of v on this contour\n    TreeNode.prototype.nextRight = function () {\n        return this.children ? this.children[this.children.length - 1] : this.thread;\n    };\n    TreeNode.prototype.getSiblings = function () {\n        var _this = this;\n        return this.parent ? this.parent.children.filter(function (_, i) { return i !== _this.number; }) : [];\n    };\n    return TreeNode;\n}());\n/**\n * Converts an array of ticks, where each tick has an array of labels, to a label tree.\n * If `pad` is `true`, will ensure that every branch matches the depth of the tree by\n * creating empty labels.\n */\nfunction ticksToTree(ticks, pad) {\n    if (pad === void 0) { pad = true; }\n    var root = new TreeNode();\n    var depth = 0;\n    if (pad) {\n        ticks.forEach(function (tick) { return (depth = Math.max(depth, tick.labels.length)); });\n    }\n    ticks.forEach(function (tick) {\n        if (pad) {\n            while (tick.labels.length < depth) {\n                tick.labels.unshift('');\n            }\n        }\n        insertTick(root, tick);\n    });\n    return root;\n}\nfunction insertTick(root, tick) {\n    var pathParts = tick.labels.slice().reverse(); // path elements from root to leaf label\n    var lastPartIndex = pathParts.length - 1;\n    pathParts.forEach(function (pathPart, partIndex) {\n        var children = root.children;\n        var existingNode = children.find(function (child) { return child.label === pathPart; });\n        var isNotLeaf = partIndex !== lastPartIndex;\n        if (existingNode && isNotLeaf) {\n            // the isNotLeaf check is to allow duplicate leafs\n            root = existingNode;\n        }\n        else {\n            var node = new TreeNode(pathPart, root);\n            node.number = children.length;\n            children.push(node);\n            if (isNotLeaf) {\n                root = node;\n            }\n        }\n    });\n}\n// Shift the subtree.\nfunction moveSubtree(wm, wp, shift) {\n    var subtrees = wp.number - wm.number;\n    var ratio = shift / subtrees;\n    wp.change -= ratio;\n    wp.shift += shift;\n    wm.change += ratio;\n    wp.prelim += shift;\n    wp.mod += shift;\n}\nfunction ancestor(vim, v, defaultAncestor) {\n    return v.getSiblings().indexOf(vim.ancestor) >= 0 ? vim.ancestor : defaultAncestor;\n}\n// Spaces out the children.\nfunction executeShifts(v) {\n    var children = v.children;\n    if (children) {\n        var shift = 0;\n        var change = 0;\n        for (var i = children.length - 1; i >= 0; i--) {\n            var w = children[i];\n            w.prelim += shift;\n            w.mod += shift;\n            change += w.change;\n            shift += w.shift + change;\n        }\n    }\n}\n// Moves current subtree with v as the root if some nodes are conflicting in space.\nfunction apportion(v, defaultAncestor, distance) {\n    var w = v.getLeftSibling();\n    if (w) {\n        var vop = v;\n        var vip = v;\n        var vim = w;\n        var vom = vip.getLeftmostSibling();\n        var sip = vip.mod;\n        var sop = vop.mod;\n        var sim = vim.mod;\n        var som = vom.mod;\n        while (vim.nextRight() && vip.nextLeft()) {\n            vim = vim.nextRight();\n            vip = vip.nextLeft();\n            vom = vom.nextLeft();\n            vop = vop.nextRight();\n            vop.ancestor = v;\n            var shift = vim.prelim + sim - (vip.prelim + sip) + distance;\n            if (shift > 0) {\n                moveSubtree(ancestor(vim, v, defaultAncestor), v, shift);\n                sip += shift;\n                sop += shift;\n            }\n            sim += vim.mod;\n            sip += vip.mod;\n            som += vom.mod;\n            sop += vop.mod;\n        }\n        if (vim.nextRight() && !vop.nextRight()) {\n            vop.thread = vim.nextRight();\n            vop.mod += sim - sop;\n        }\n        else {\n            if (vip.nextLeft() && !vom.nextLeft()) {\n                vom.thread = vip.nextLeft();\n                vom.mod += sip - som;\n            }\n            defaultAncestor = v;\n        }\n    }\n    return defaultAncestor;\n}\n// Compute the preliminary x-coordinate of node and its children (recursively).\nfunction firstWalk(node, distance) {\n    var children = node.children;\n    if (children.length) {\n        var defaultAncestor_1 = children[0];\n        children.forEach(function (child) {\n            firstWalk(child, distance);\n            defaultAncestor_1 = apportion(child, defaultAncestor_1, distance);\n        });\n        executeShifts(node);\n        var midpoint = (children[0].prelim + children[children.length - 1].prelim) / 2;\n        var leftSibling = node.getLeftSibling();\n        if (leftSibling) {\n            node.prelim = leftSibling.prelim + distance;\n            node.mod = node.prelim - midpoint;\n        }\n        else {\n            node.prelim = midpoint;\n        }\n    }\n    else {\n        var leftSibling = node.getLeftSibling();\n        node.prelim = leftSibling ? leftSibling.prelim + distance : 0;\n    }\n}\nvar Dimensions = /** @class */ (function () {\n    function Dimensions() {\n        this.top = Infinity;\n        this.right = -Infinity;\n        this.bottom = -Infinity;\n        this.left = Infinity;\n    }\n    Dimensions.prototype.update = function (node, xy) {\n        var _a = xy(node), x = _a.x, y = _a.y;\n        if (x > this.right) {\n            this.right = x;\n        }\n        if (x < this.left) {\n            this.left = x;\n        }\n        if (y > this.bottom) {\n            this.bottom = y;\n        }\n        if (y < this.top) {\n            this.top = y;\n        }\n    };\n    return Dimensions;\n}());\nfunction secondWalk(v, m, layout) {\n    v.x = v.prelim + m;\n    v.y = v.depth;\n    layout.update(v);\n    v.children.forEach(function (w) { return secondWalk(w, m + v.mod, layout); });\n}\n// After the second walk the parent nodes are positioned at the center of their immediate children.\n// If we want the parent nodes to be positioned at the center of the subtree for which they are roots,\n// we need a third walk to adjust the positions.\nfunction thirdWalk(v) {\n    var children = v.children;\n    var leafCount = 0;\n    children.forEach(function (w) {\n        thirdWalk(w);\n        if (w.children.length) {\n            leafCount += w.leafCount;\n        }\n        else {\n            leafCount++;\n        }\n    });\n    v.leafCount = leafCount;\n    if (children.length) {\n        v.subtreeLeft = children[0].subtreeLeft;\n        v.subtreeRight = children[v.children.length - 1].subtreeRight;\n        v.x = (v.subtreeLeft + v.subtreeRight) / 2;\n    }\n    else {\n        v.subtreeLeft = v.x;\n        v.subtreeRight = v.x;\n    }\n}\nfunction treeLayout(root) {\n    var layout = new TreeLayout();\n    firstWalk(root, 1);\n    secondWalk(root, -root.prelim, layout);\n    thirdWalk(root);\n    return layout;\n}\nvar TreeLayout = /** @class */ (function () {\n    function TreeLayout() {\n        this.dimensions = new Dimensions();\n        this.leafCount = 0;\n        this.nodes = [];\n        // One might want to process leaf nodes separately from the rest of the tree.\n        // For example, position labels corresponding to leafs vertically, rather than horizontally.\n        this.leafNodes = [];\n        this.nonLeafNodes = [];\n        this.depth = 0;\n    }\n    TreeLayout.prototype.update = function (node) {\n        this.dimensions.update(node, function (node) { return ({ x: node.x, y: node.y }); });\n        if (!node.children.length) {\n            this.leafCount++;\n            this.leafNodes.push(node);\n        }\n        else {\n            this.nonLeafNodes.push(node);\n        }\n        if (node.depth > this.depth) {\n            this.depth = node.depth;\n        }\n        this.nodes.push(node);\n    };\n    TreeLayout.prototype.resize = function (width, height, shiftX, shiftY, flipX) {\n        if (shiftX === void 0) { shiftX = 0; }\n        if (shiftY === void 0) { shiftY = 0; }\n        if (flipX === void 0) { flipX = false; }\n        var xSteps = this.leafCount - 1;\n        var ySteps = this.depth;\n        var dimensions = this.dimensions;\n        var scalingX = 1;\n        var scalingY = 1;\n        if (width > 0 && xSteps) {\n            var existingSpacingX = (dimensions.right - dimensions.left) / xSteps;\n            var desiredSpacingX = width / xSteps;\n            scalingX = desiredSpacingX / existingSpacingX;\n            if (flipX) {\n                scalingX = -scalingX;\n            }\n        }\n        if (height > 0 && ySteps) {\n            var existingSpacingY = (dimensions.bottom - dimensions.top) / ySteps;\n            var desiredSpacingY = height / ySteps;\n            scalingY = desiredSpacingY / existingSpacingY;\n        }\n        var screenDimensions = new Dimensions();\n        this.nodes.forEach(function (node) {\n            node.screenX = node.x * scalingX;\n            node.screenY = node.y * scalingY;\n            screenDimensions.update(node, function (node) { return ({ x: node.screenX, y: node.screenY }); });\n        });\n        // Normalize so that root top and leftmost leaf left start at zero.\n        var offsetX = -screenDimensions.left;\n        var offsetY = -screenDimensions.top;\n        this.nodes.forEach(function (node) {\n            node.screenX += offsetX + shiftX;\n            node.screenY += offsetY + shiftY;\n        });\n    };\n    return TreeLayout;\n}());\n\nvar __extends$2d = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$1w = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __read$C = (undefined && undefined.__read) || function (o, n) {\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n    if (!m) return o;\n    var i = m.call(o), r, ar = [], e;\n    try {\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n    }\n    catch (error) { e = { error: error }; }\n    finally {\n        try {\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\n        }\n        finally { if (e) throw e.error; }\n    }\n    return ar;\n};\nvar __spread$l = (undefined && undefined.__spread) || function () {\n    for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read$C(arguments[i]));\n    return ar;\n};\nvar GroupedCategoryAxisLabel = /** @class */ (function (_super) {\n    __extends$2d(GroupedCategoryAxisLabel, _super);\n    function GroupedCategoryAxisLabel() {\n        var _this = _super !== null && _super.apply(this, arguments) || this;\n        _this.grid = false;\n        return _this;\n    }\n    __decorate$1w([\n        Validate(BOOLEAN)\n    ], GroupedCategoryAxisLabel.prototype, \"grid\", void 0);\n    return GroupedCategoryAxisLabel;\n}(AxisLabel));\nvar GroupedCategoryAxis = /** @class */ (function (_super) {\n    __extends$2d(GroupedCategoryAxis, _super);\n    function GroupedCategoryAxis(moduleCtx) {\n        var _this = _super.call(this, moduleCtx, new BandScale$5()) || this;\n        // Label scale (labels are positioned between ticks, tick count = label count + 1).\n        // We don't call is `labelScale` for consistency with other axes.\n        _this.tickScale = new BandScale$5();\n        _this.translation = {\n            x: 0,\n            y: 0,\n        };\n        _this.line = new AxisLine();\n        _this.label = new GroupedCategoryAxisLabel();\n        /**\n         * The color of the labels.\n         * Use `undefined` rather than `rgba(0, 0, 0, 0)` to make labels invisible.\n         */\n        _this.labelColor = 'rgba(87, 87, 87, 1)';\n        _this.includeInvisibleDomains = true;\n        var _a = _this, tickLineGroup = _a.tickLineGroup, tickLabelGroup = _a.tickLabelGroup, gridLineGroup = _a.gridLineGroup, tickScale = _a.tickScale, scale = _a.scale;\n        scale.paddingOuter = 0.1;\n        scale.paddingInner = scale.paddingOuter * 2;\n        _this.requestedRange = scale.range.slice();\n        _this.refreshScale();\n        tickScale.paddingInner = 1;\n        tickScale.paddingOuter = 0;\n        _this.gridLineSelection = Selection.select(gridLineGroup, Line);\n        _this.axisLineSelection = Selection.select(tickLineGroup, Line);\n        _this.separatorSelection = Selection.select(tickLineGroup, Line);\n        _this.labelSelection = Selection.select(tickLabelGroup, Text);\n        return _this;\n    }\n    Object.defineProperty(GroupedCategoryAxis.prototype, \"range\", {\n        get: function () {\n            return this.requestedRange.slice();\n        },\n        set: function (value) {\n            this.requestedRange = value.slice();\n            this.updateRange();\n        },\n        enumerable: false,\n        configurable: true\n    });\n    GroupedCategoryAxis.prototype.updateRange = function () {\n        var _a = this, rr = _a.requestedRange, vr = _a.visibleRange, scale = _a.scale;\n        var span = (rr[1] - rr[0]) / (vr[1] - vr[0]);\n        var shift = span * vr[0];\n        var start = rr[0] - shift;\n        this.tickScale.range = scale.range = [start, start + span];\n        this.resizeTickTree();\n    };\n    GroupedCategoryAxis.prototype.resizeTickTree = function () {\n        var s = this.scale;\n        var range = s.domain.length ? [s.convert(s.domain[0]), s.convert(s.domain[s.domain.length - 1])] : s.range;\n        var layout = this.tickTreeLayout;\n        var lineHeight = this.lineHeight;\n        if (layout) {\n            layout.resize(Math.abs(range[1] - range[0]), layout.depth * lineHeight, (Math.min(range[0], range[1]) || 0) + (s.bandwidth || 0) / 2, -layout.depth * lineHeight, range[1] - range[0] < 0);\n        }\n    };\n    Object.defineProperty(GroupedCategoryAxis.prototype, \"lineHeight\", {\n        get: function () {\n            return this.label.fontSize * 1.5;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(GroupedCategoryAxis.prototype, \"gridLength\", {\n        get: function () {\n            return this._gridLength;\n        },\n        /**\n         * The length of the grid. The grid is only visible in case of a non-zero value.\n         */\n        set: function (value) {\n            // Was visible and now invisible, or was invisible and now visible.\n            if ((this._gridLength && !value) || (!this._gridLength && value)) {\n                this.gridLineSelection.clear();\n                this.labelSelection.clear();\n            }\n            this._gridLength = value;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    GroupedCategoryAxis.prototype.calculateDomain = function () {\n        var _a;\n        var _b = this, direction = _b.direction, boundSeries = _b.boundSeries;\n        var domains = [];\n        var isNumericX = undefined;\n        boundSeries\n            .filter(function (s) { return s.visible; })\n            .forEach(function (series) {\n            if (direction === ChartAxisDirection.X) {\n                if (isNumericX === undefined) {\n                    // always add first X domain\n                    var domain_1 = series.getDomain(direction);\n                    domains.push(domain_1);\n                    isNumericX = typeof domain_1[0] === 'number';\n                }\n                else if (isNumericX) {\n                    // only add further X domains if the axis is numeric\n                    domains.push(series.getDomain(direction));\n                }\n            }\n            else {\n                domains.push(series.getDomain(direction));\n            }\n        });\n        var domain = (_a = new Array()).concat.apply(_a, __spread$l(domains));\n        var values = extent$4(domain) || domain;\n        this.dataDomain = this.normaliseDataDomain(values);\n    };\n    GroupedCategoryAxis.prototype.normaliseDataDomain = function (d) {\n        // Prevent duplicate categories.\n        var values = d.filter(function (s, i, arr) { return arr.indexOf(s) === i; });\n        var tickTree = ticksToTree(values);\n        this.tickTreeLayout = treeLayout(tickTree);\n        var tickScaleDomain = values.slice();\n        tickScaleDomain.push('');\n        this.tickScale.domain = tickScaleDomain;\n        this.resizeTickTree();\n        return values;\n    };\n    /**\n     * Creates/removes/updates the scene graph nodes that constitute the axis.\n     * Supposed to be called _manually_ after changing _any_ of the axis properties.\n     * This allows to bulk set axis properties before updating the nodes.\n     * The node changes made by this method are rendered on the next animation frame.\n     * We could schedule this method call automatically on the next animation frame\n     * when any of the axis properties change (the way we do when properties of scene graph's\n     * nodes change), but this will mean that we first wait for the next animation\n     * frame to make changes to the nodes of the axis, then wait for another animation\n     * frame to render those changes. It's nice to have everything update automatically,\n     * but this extra level of async indirection will not just introduce an unwanted delay,\n     * it will also make it harder to reason about the program.\n     */\n    GroupedCategoryAxis.prototype.update = function (primaryTickCount) {\n        var _this = this;\n        this.calculateDomain();\n        var _a = this, scale = _a.scale, label = _a.label, parallel = _a.label.parallel, tickScale = _a.tickScale, requestedRange = _a.requestedRange;\n        scale.domain = this.dataDomain;\n        var rangeStart = scale.range[0];\n        var rangeEnd = scale.range[1];\n        var rangeLength = Math.abs(rangeEnd - rangeStart);\n        var bandwidth = rangeLength / scale.domain.length || 0;\n        var rotation = toRadians$1(this.rotation);\n        var isHorizontal = Math.abs(Math.cos(rotation)) < 1e-8;\n        this.updatePosition();\n        var title = this.title;\n        // The Text `node` of the Caption is not used to render the title of the grouped category axis.\n        // The phantom root of the tree layout is used instead.\n        if (title) {\n            title.node.visible = false;\n        }\n        var lineHeight = this.lineHeight;\n        // Render ticks and labels.\n        var tickTreeLayout = this.tickTreeLayout;\n        var labels = scale.ticks();\n        var treeLabels = tickTreeLayout ? tickTreeLayout.nodes : [];\n        var isLabelTree = tickTreeLayout ? tickTreeLayout.depth > 1 : false;\n        var ticks = tickScale.ticks();\n        // The side of the axis line to position the labels on.\n        // -1 = left (default)\n        //  1 = right\n        var sideFlag = label.mirrored ? 1 : -1;\n        // When labels are parallel to the axis line, the `parallelFlipFlag` is used to\n        // flip the labels to avoid upside-down text, when the axis is rotated\n        // such that it is in the right hemisphere, i.e. the angle of rotation\n        // is in the [0, π] interval.\n        // The rotation angle is normalized, so that we have an easier time checking\n        // if it's in the said interval. Since the axis is always rendered vertically\n        // and then rotated, zero rotation means 12 (not 3) o-clock.\n        // -1 = flip\n        //  1 = don't flip (default)\n        var _b = calculateLabelRotation({\n            rotation: label.rotation,\n            parallel: parallel,\n            regularFlipRotation: normalizeAngle360(rotation - Math.PI / 2),\n            parallelFlipRotation: normalizeAngle360(rotation),\n        }), autoRotation = _b.autoRotation, labelRotation = _b.labelRotation, parallelFlipFlag = _b.parallelFlipFlag;\n        var gridLineSelection = this.gridLineSelection.update(this.gridLength ? ticks : []);\n        var labelSelection = this.labelSelection.update(treeLabels);\n        var labelFormatter = label.formatter;\n        var labelBBoxes = new Map();\n        var maxLeafLabelWidth = 0;\n        labelSelection.each(function (node, datum, index) {\n            node.fontStyle = label.fontStyle;\n            node.fontWeight = label.fontWeight;\n            node.fontSize = label.fontSize;\n            node.fontFamily = label.fontFamily;\n            node.fill = label.color;\n            node.textBaseline = parallelFlipFlag === -1 ? 'bottom' : 'hanging';\n            node.textAlign = 'center';\n            node.translationX = datum.screenY - label.fontSize * 0.25;\n            node.translationY = datum.screenX;\n            if (index === 0) {\n                // use the phantom root as the axis title\n                if (title && title.enabled && labels.length > 0) {\n                    node.visible = true;\n                    node.text = title.text;\n                    node.fontSize = title.fontSize;\n                    node.fontStyle = title.fontStyle;\n                    node.fontWeight = title.fontWeight;\n                    node.fontFamily = title.fontFamily;\n                    node.textBaseline = 'hanging';\n                }\n                else {\n                    node.visible = false;\n                }\n            }\n            else {\n                node.text = labelFormatter\n                    ? labelFormatter({\n                        value: String(datum.label),\n                        index: index,\n                    })\n                    : String(datum.label);\n                node.visible = datum.screenX >= requestedRange[0] && datum.screenX <= requestedRange[1];\n            }\n            var bbox = node.computeBBox();\n            labelBBoxes.set(node.id, bbox);\n            if (bbox.width > maxLeafLabelWidth) {\n                maxLeafLabelWidth = bbox.width;\n            }\n        });\n        var labelX = sideFlag * label.padding;\n        var labelGrid = this.label.grid;\n        var separatorData = [];\n        labelSelection.each(function (label, datum, index) {\n            label.x = labelX;\n            label.rotationCenterX = labelX;\n            if (!datum.children.length) {\n                label.rotation = labelRotation;\n                label.textAlign = 'end';\n                label.textBaseline = 'middle';\n                var bbox = labelBBoxes.get(label.id);\n                if (bbox && bbox.height > bandwidth) {\n                    label.visible = false;\n                }\n            }\n            else {\n                label.translationX -= maxLeafLabelWidth - lineHeight + _this.label.padding;\n                var availableRange = datum.leafCount * bandwidth;\n                var bbox = labelBBoxes.get(label.id);\n                if (bbox && bbox.width > availableRange) {\n                    label.visible = false;\n                }\n                else if (isHorizontal) {\n                    label.rotation = autoRotation;\n                }\n                else {\n                    label.rotation = -Math.PI / 2;\n                }\n            }\n            // Calculate positions of label separators for all nodes except the root.\n            // Each separator is placed to the top of the current label.\n            if (datum.parent && isLabelTree) {\n                var y = !datum.children.length\n                    ? datum.screenX - bandwidth / 2\n                    : datum.screenX - (datum.leafCount * bandwidth) / 2;\n                if (!datum.children.length) {\n                    if (datum.number !== datum.children.length - 1 || labelGrid) {\n                        separatorData.push({\n                            y: y,\n                            x1: 0,\n                            x2: -maxLeafLabelWidth - _this.label.padding * 2,\n                            toString: function () { return String(index); },\n                        });\n                    }\n                }\n                else {\n                    var x = -maxLeafLabelWidth - _this.label.padding * 2 + datum.screenY;\n                    separatorData.push({\n                        y: y,\n                        x1: x + lineHeight,\n                        x2: x,\n                        toString: function () { return String(index); },\n                    });\n                }\n            }\n        });\n        // Calculate the position of the long separator on the far bottom of the axis.\n        var minX = 0;\n        separatorData.forEach(function (d) { return (minX = Math.min(minX, d.x2)); });\n        separatorData.push({\n            y: Math.max(rangeStart, rangeEnd),\n            x1: 0,\n            x2: minX,\n            toString: function () { return String(separatorData.length); },\n        });\n        var separatorSelection = this.separatorSelection.update(separatorData);\n        var epsilon = 0.0000001;\n        separatorSelection.each(function (line, datum) {\n            line.x1 = datum.x1;\n            line.x2 = datum.x2;\n            line.y1 = datum.y;\n            line.y2 = datum.y;\n            line.visible = datum.y >= requestedRange[0] - epsilon && datum.y <= requestedRange[1] + epsilon;\n            line.stroke = _this.tick.color;\n            line.fill = undefined;\n            line.strokeWidth = 1;\n        });\n        this.gridLineSelection = gridLineSelection;\n        this.labelSelection = labelSelection;\n        // Render axis lines.\n        var lineCount = tickTreeLayout ? tickTreeLayout.depth + 1 : 1;\n        var lines = [];\n        for (var i = 0; i < lineCount; i++) {\n            lines.push(i);\n        }\n        var axisLineSelection = this.axisLineSelection.update(lines);\n        axisLineSelection.each(function (line, _, index) {\n            var x = index > 0 ? -maxLeafLabelWidth - _this.label.padding * 2 - (index - 1) * lineHeight : 0;\n            line.x1 = x;\n            line.x2 = x;\n            line.y1 = requestedRange[0];\n            line.y2 = requestedRange[1];\n            line.strokeWidth = _this.line.width;\n            line.stroke = _this.line.color;\n            line.visible = labels.length > 0 && (index === 0 || (labelGrid && isLabelTree));\n        });\n        if (this.gridLength) {\n            var styles_1 = this.gridStyle;\n            var styleCount_1 = styles_1.length;\n            gridLineSelection.each(function (line, datum, index) {\n                var y = Math.round(tickScale.convert(datum));\n                line.x1 = 0;\n                line.x2 = -sideFlag * _this.gridLength;\n                line.y1 = y;\n                line.y2 = y;\n                line.visible = y >= requestedRange[0] && y <= requestedRange[1];\n                var style = styles_1[index % styleCount_1];\n                line.stroke = style.stroke;\n                line.strokeWidth = _this.tick.width;\n                line.lineDash = style.lineDash;\n                line.fill = undefined;\n            });\n        }\n        return primaryTickCount;\n    };\n    GroupedCategoryAxis.className = 'GroupedCategoryAxis';\n    GroupedCategoryAxis.type = 'groupedCategory';\n    __decorate$1w([\n        Validate(OPT_COLOR_STRING)\n    ], GroupedCategoryAxis.prototype, \"labelColor\", void 0);\n    return GroupedCategoryAxis;\n}(ChartAxis));\n\nvar __extends$2c = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __assign$y = (undefined && undefined.__assign) || function () {\n    __assign$y = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign$y.apply(this, arguments);\n};\nvar __awaiter$a = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {\n    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n    return new (P || (P = Promise))(function (resolve, reject) {\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\n    });\n};\nvar __generator$a = (undefined && undefined.__generator) || function (thisArg, body) {\n    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n    return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n    function verb(n) { return function (v) { return step([n, v]); }; }\n    function step(op) {\n        if (f) throw new TypeError(\"Generator is already executing.\");\n        while (_) try {\n            if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n            if (y = 0, t) op = [op[0] & 2, t.value];\n            switch (op[0]) {\n                case 0: case 1: t = op; break;\n                case 4: _.label++; return { value: op[1], done: false };\n                case 5: _.label++; y = op[1]; op = [0]; continue;\n                case 7: op = _.ops.pop(); _.trys.pop(); continue;\n                default:\n                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n                    if (t[2]) _.ops.pop();\n                    _.trys.pop(); continue;\n            }\n            op = body.call(thisArg, _);\n        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n    }\n};\nvar __values$g = (undefined && undefined.__values) || function(o) {\n    var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n    if (m) return m.call(o);\n    if (o && typeof o.length === \"number\") return {\n        next: function () {\n            if (o && i >= o.length) o = void 0;\n            return { value: o && o[i++], done: !o };\n        }\n    };\n    throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nvar __read$B = (undefined && undefined.__read) || function (o, n) {\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n    if (!m) return o;\n    var i = m.call(o), r, ar = [], e;\n    try {\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n    }\n    catch (error) { e = { error: error }; }\n    finally {\n        try {\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\n        }\n        finally { if (e) throw e.error; }\n    }\n    return ar;\n};\nvar directions = ['top', 'right', 'bottom', 'left'];\nvar CartesianChart = /** @class */ (function (_super) {\n    __extends$2c(CartesianChart, _super);\n    function CartesianChart(document, overrideDevicePixelRatio, resources) {\n        if (document === void 0) { document = window.document; }\n        var _this = _super.call(this, document, overrideDevicePixelRatio, resources) || this;\n        /** Integrated Charts feature state - not used in Standalone Charts. */\n        _this.paired = true;\n        _this._lastAxisWidths = {\n            top: 0,\n            bottom: 0,\n            left: 0,\n            right: 0,\n        };\n        _this._lastVisibility = {\n            crossLines: true,\n            series: true,\n        };\n        var root = _this.scene.root;\n        _this.legend.attachLegend(root);\n        return _this;\n    }\n    CartesianChart.prototype.performLayout = function () {\n        return __awaiter$a(this, void 0, void 0, function () {\n            var shrinkRect, _a, seriesRect, visibility, clipSeries, _b, seriesRoot, seriesAreaPadding, seriesPaddedRect, hoverRectPadding, hoverRect;\n            return __generator$a(this, function (_c) {\n                switch (_c.label) {\n                    case 0: return [4 /*yield*/, _super.prototype.performLayout.call(this)];\n                    case 1:\n                        shrinkRect = _c.sent();\n                        _a = this.updateAxes(shrinkRect), seriesRect = _a.seriesRect, visibility = _a.visibility, clipSeries = _a.clipSeries;\n                        this.seriesRoot.visible = visibility.series;\n                        this.seriesRect = seriesRect;\n                        this.series.forEach(function (series) {\n                            series.rootGroup.translationX = Math.floor(seriesRect.x);\n                            series.rootGroup.translationY = Math.floor(seriesRect.y);\n                        });\n                        _b = this, seriesRoot = _b.seriesRoot, seriesAreaPadding = _b.seriesAreaPadding;\n                        seriesPaddedRect = seriesRect.clone().grow(seriesAreaPadding);\n                        hoverRectPadding = 20;\n                        hoverRect = seriesPaddedRect.clone().grow(hoverRectPadding);\n                        this.hoverRect = hoverRect;\n                        this.layoutService.dispatchLayoutComplete({\n                            type: 'layout-complete',\n                            chart: { width: this.scene.width, height: this.scene.height },\n                            series: { rect: seriesRect, paddedRect: seriesPaddedRect, hoverRect: hoverRect, visible: visibility.series },\n                            axes: this.axes.map(function (axis) { return (__assign$y({ id: axis.id }, axis.getLayoutState())); }),\n                        });\n                        if (clipSeries) {\n                            seriesRoot.setClipRectInGroupCoordinateSpace(seriesPaddedRect);\n                        }\n                        else {\n                            seriesRoot.setClipRectInGroupCoordinateSpace();\n                        }\n                        return [2 /*return*/, shrinkRect];\n                }\n            });\n        });\n    };\n    CartesianChart.prototype.updateAxes = function (inputShrinkRect) {\n        var e_1, _a;\n        var _b;\n        // Start with a good approximation from the last update - this should mean that in many resize\n        // cases that only a single pass is needed \\o/.\n        var axisWidths = __assign$y({}, this._lastAxisWidths);\n        var visibility = __assign$y({}, this._lastVisibility);\n        // Clean any positions which aren't valid with the current axis status (otherwise we end up\n        // never being able to find a stable result).\n        var liveAxisWidths = new Set(this._axes.map(function (a) { return a.position; }));\n        try {\n            for (var _c = __values$g(Object.keys(axisWidths)), _d = _c.next(); !_d.done; _d = _c.next()) {\n                var position = _d.value;\n                if (!liveAxisWidths.has(position)) {\n                    delete axisWidths[position];\n                }\n            }\n        }\n        catch (e_1_1) { e_1 = { error: e_1_1 }; }\n        finally {\n            try {\n                if (_d && !_d.done && (_a = _c.return)) _a.call(_c);\n            }\n            finally { if (e_1) throw e_1.error; }\n        }\n        var stableOutputs = function (otherAxisWidths, otherVisibility) {\n            // Check for new axis positions.\n            if (Object.keys(otherAxisWidths).some(function (k) { return axisWidths[k] == null; })) {\n                return false;\n            }\n            return (visibility.crossLines === otherVisibility.crossLines &&\n                visibility.series === otherVisibility.series &&\n                // Check for existing axis positions and equality.\n                Object.entries(axisWidths).every(function (_a) {\n                    var _b = __read$B(_a, 2), p = _b[0], w = _b[1];\n                    var otherW = otherAxisWidths[p];\n                    if (w != null || otherW != null) {\n                        return w === otherW;\n                    }\n                    return true;\n                }));\n        };\n        var ceilValues = function (records) {\n            return Object.entries(records).reduce(function (out, _a) {\n                var _b = __read$B(_a, 2), key = _b[0], value = _b[1];\n                if (value && Math.abs(value) === Infinity) {\n                    value = 0;\n                }\n                out[key] = value != null ? Math.ceil(value) : value;\n                return out;\n            }, {});\n        };\n        // Iteratively try to resolve axis widths - since X axis width affects Y axis range,\n        // and vice-versa, we need to iteratively try and find a fit for the axes and their\n        // ticks/labels.\n        var lastPassAxisWidths = {};\n        var lastPassVisibility = {};\n        var clipSeries = false;\n        var seriesRect = (_b = this.seriesRect) === null || _b === void 0 ? void 0 : _b.clone();\n        var count = 0;\n        do {\n            Object.assign(axisWidths, lastPassAxisWidths);\n            Object.assign(visibility, lastPassVisibility);\n            var result = this.updateAxesPass(axisWidths, inputShrinkRect.clone(), seriesRect);\n            lastPassAxisWidths = ceilValues(result.axisWidths);\n            lastPassVisibility = result.visibility;\n            clipSeries = result.clipSeries;\n            seriesRect = result.seriesRect;\n            if (count++ > 10) {\n                Logger.warn('unable to find stable axis layout.');\n                break;\n            }\n        } while (!stableOutputs(lastPassAxisWidths, lastPassVisibility));\n        var clipRectPadding = 5;\n        this.axes.forEach(function (axis) {\n            // update visibility of crosslines\n            axis.setCrossLinesVisible(visibility.crossLines);\n            if (!seriesRect) {\n                return;\n            }\n            axis.clipGrid(seriesRect.x, seriesRect.y, seriesRect.width + clipRectPadding, seriesRect.height + clipRectPadding);\n            switch (axis.position) {\n                case 'left':\n                case 'right':\n                    axis.clipTickLines(inputShrinkRect.x, seriesRect.y, inputShrinkRect.width + clipRectPadding, seriesRect.height + clipRectPadding);\n                    break;\n                case 'top':\n                case 'bottom':\n                    axis.clipTickLines(seriesRect.x, inputShrinkRect.y, seriesRect.width + clipRectPadding, inputShrinkRect.height + clipRectPadding);\n                    break;\n            }\n        });\n        this._lastAxisWidths = axisWidths;\n        this._lastVisibility = visibility;\n        return { seriesRect: seriesRect, visibility: visibility, clipSeries: clipSeries };\n    };\n    CartesianChart.prototype.updateAxesPass = function (axisWidths, bounds, lastPassSeriesRect) {\n        var _this = this;\n        var axes = this.axes;\n        var visited = {};\n        var newAxisWidths = {};\n        var visibility = {\n            series: true,\n            crossLines: true,\n        };\n        var clipSeries = false;\n        var primaryTickCounts = {};\n        var paddedBounds = this.applySeriesPadding(bounds);\n        var crossLinePadding = lastPassSeriesRect ? this.buildCrossLinePadding(lastPassSeriesRect, axisWidths) : {};\n        var axisBound = this.buildAxisBound(paddedBounds, axisWidths, crossLinePadding, visibility);\n        var seriesRect = this.buildSeriesRect(axisBound, axisWidths);\n        // Set the number of ticks for continuous axes based on the available range\n        // before updating the axis domain via `this.updateAxes()` as the tick count has an effect on the calculated `nice` domain extent\n        axes.forEach(function (axis) {\n            var _a, _b;\n            var position = axis.position;\n            var _c = _this.calculateAxisDimensions({\n                axis: axis,\n                seriesRect: seriesRect,\n                axisWidths: axisWidths,\n                newAxisWidths: newAxisWidths,\n                primaryTickCounts: primaryTickCounts,\n                clipSeries: clipSeries,\n                addInterAxisPadding: ((_a = visited[position]) !== null && _a !== void 0 ? _a : 0) > 0,\n            }), newClipSeries = _c.clipSeries, axisThickness = _c.axisThickness, axisOffset = _c.axisOffset;\n            visited[position] = ((_b = visited[position]) !== null && _b !== void 0 ? _b : 0) + 1;\n            clipSeries = clipSeries || newClipSeries;\n            _this.positionAxis({\n                axis: axis,\n                axisBound: axisBound,\n                axisOffset: axisOffset,\n                axisThickness: axisThickness,\n                axisWidths: axisWidths,\n                primaryTickCounts: primaryTickCounts,\n                seriesRect: seriesRect,\n            });\n        });\n        return { clipSeries: clipSeries, seriesRect: seriesRect, axisWidths: newAxisWidths, visibility: visibility };\n    };\n    CartesianChart.prototype.buildCrossLinePadding = function (lastPassSeriesRect, axisWidths) {\n        var e_2, _a;\n        var _b;\n        var crossLinePadding = {};\n        this.axes.forEach(function (axis) {\n            if (axis.crossLines) {\n                axis.crossLines.forEach(function (crossLine) {\n                    crossLine.calculatePadding(crossLinePadding, lastPassSeriesRect);\n                });\n            }\n        });\n        try {\n            // Reduce cross-line padding to account for overlap with axes.\n            for (var _c = __values$g(Object.entries(crossLinePadding)), _d = _c.next(); !_d.done; _d = _c.next()) {\n                var _e = __read$B(_d.value, 2), side = _e[0], _f = _e[1], padding = _f === void 0 ? 0 : _f;\n                crossLinePadding[side] = Math.max(padding - ((_b = axisWidths[side]) !== null && _b !== void 0 ? _b : 0), 0);\n            }\n        }\n        catch (e_2_1) { e_2 = { error: e_2_1 }; }\n        finally {\n            try {\n                if (_d && !_d.done && (_a = _c.return)) _a.call(_c);\n            }\n            finally { if (e_2) throw e_2.error; }\n        }\n        return crossLinePadding;\n    };\n    CartesianChart.prototype.applySeriesPadding = function (bounds) {\n        var _this = this;\n        var paddedRect = bounds.clone();\n        var reversedAxes = this.axes.slice().reverse();\n        directions.forEach(function (dir) {\n            var padding = _this.seriesAreaPadding[dir];\n            var axis = reversedAxes.find(function (axis) { return axis.position === dir; });\n            if (axis) {\n                axis.seriesAreaPadding = padding;\n            }\n            else {\n                paddedRect.shrink(padding, dir);\n            }\n        });\n        return paddedRect;\n    };\n    CartesianChart.prototype.buildAxisBound = function (bounds, axisWidths, crossLinePadding, visibility) {\n        var _a, _b, _c, _d;\n        var result = bounds.clone();\n        var _e = crossLinePadding.top, top = _e === void 0 ? 0 : _e, _f = crossLinePadding.right, right = _f === void 0 ? 0 : _f, _g = crossLinePadding.bottom, bottom = _g === void 0 ? 0 : _g, _h = crossLinePadding.left, left = _h === void 0 ? 0 : _h;\n        var horizontalPadding = left + right;\n        var verticalPadding = top + bottom;\n        var totalWidth = ((_a = axisWidths.left) !== null && _a !== void 0 ? _a : 0) + ((_b = axisWidths.right) !== null && _b !== void 0 ? _b : 0) + horizontalPadding;\n        var totalHeight = ((_c = axisWidths.top) !== null && _c !== void 0 ? _c : 0) + ((_d = axisWidths.bottom) !== null && _d !== void 0 ? _d : 0) + verticalPadding;\n        if (result.width <= totalWidth || result.height <= totalHeight) {\n            // Not enough space for crossLines and series\n            visibility.crossLines = false;\n            visibility.series = false;\n            return result;\n        }\n        result.x += left;\n        result.y += top;\n        result.width -= horizontalPadding;\n        result.height -= verticalPadding;\n        return result;\n    };\n    CartesianChart.prototype.buildSeriesRect = function (axisBound, axisWidths) {\n        var result = axisBound.clone();\n        var top = axisWidths.top, bottom = axisWidths.bottom, left = axisWidths.left, right = axisWidths.right;\n        result.x += left !== null && left !== void 0 ? left : 0;\n        result.y += top !== null && top !== void 0 ? top : 0;\n        result.width -= (left !== null && left !== void 0 ? left : 0) + (right !== null && right !== void 0 ? right : 0);\n        result.height -= (top !== null && top !== void 0 ? top : 0) + (bottom !== null && bottom !== void 0 ? bottom : 0);\n        // Width and height should not be negative.\n        result.width = Math.max(0, result.width);\n        result.height = Math.max(0, result.height);\n        return result;\n    };\n    CartesianChart.prototype.clampToOutsideSeriesRect = function (seriesRect, value, dimension, direction) {\n        var x = seriesRect.x, y = seriesRect.y, width = seriesRect.width, height = seriesRect.height;\n        var clampBounds = [x, y, x + width, y + height];\n        var fn = direction === 1 ? Math.min : Math.max;\n        var compareTo = clampBounds[(dimension === 'x' ? 0 : 1) + (direction === 1 ? 0 : 2)];\n        return fn(value, compareTo);\n    };\n    CartesianChart.prototype.calculateAxisDimensions = function (opts) {\n        var _a, _b, _c, _d, _e, _f;\n        var axis = opts.axis, seriesRect = opts.seriesRect, axisWidths = opts.axisWidths, newAxisWidths = opts.newAxisWidths, primaryTickCounts = opts.primaryTickCounts, addInterAxisPadding = opts.addInterAxisPadding;\n        var clipSeries = opts.clipSeries;\n        var position = axis.position, direction = axis.direction;\n        var axisLeftRightRange = function (axis) {\n            if (axis instanceof CategoryAxis || axis instanceof GroupedCategoryAxis) {\n                return [0, seriesRect.height];\n            }\n            return [seriesRect.height, 0];\n        };\n        axis.label.mirrored = ['top', 'right'].includes(position);\n        var axisOffset = (_a = newAxisWidths[position]) !== null && _a !== void 0 ? _a : 0;\n        switch (position) {\n            case 'top':\n            case 'bottom':\n                axis.range = [0, seriesRect.width];\n                axis.gridLength = seriesRect.height;\n                break;\n            case 'right':\n            case 'left':\n                axis.range = axisLeftRightRange(axis);\n                axis.gridLength = seriesRect.width;\n                break;\n        }\n        var zoom = (_b = this.zoomManager.getZoom()) === null || _b === void 0 ? void 0 : _b[axis.direction];\n        var _g = zoom !== null && zoom !== void 0 ? zoom : {}, _h = _g.min, min = _h === void 0 ? 0 : _h, _j = _g.max, max = _j === void 0 ? 1 : _j;\n        axis.visibleRange = [min, max];\n        if (!clipSeries && (axis.visibleRange[0] > 0 || axis.visibleRange[1] < 1)) {\n            clipSeries = true;\n        }\n        var primaryTickCount = axis.nice ? primaryTickCounts[direction] : undefined;\n        primaryTickCount = axis.update(primaryTickCount);\n        primaryTickCounts[direction] = (_c = primaryTickCounts[direction]) !== null && _c !== void 0 ? _c : primaryTickCount;\n        var axisThickness = 0;\n        if (axis.thickness) {\n            axisThickness = axis.thickness;\n        }\n        else {\n            var bbox = axis.computeBBox();\n            axisThickness = direction === ChartAxisDirection.X ? bbox.height : bbox.width;\n        }\n        // for multiple axes in the same direction and position, apply padding at the top of each inner axis (i.e. between axes).\n        var axisPadding = 15;\n        if (addInterAxisPadding) {\n            axisThickness += axisPadding;\n        }\n        axisThickness = Math.ceil(axisThickness);\n        newAxisWidths[position] = ((_d = newAxisWidths[position]) !== null && _d !== void 0 ? _d : 0) + axisThickness;\n        axis.gridPadding = ((_e = axisWidths[position]) !== null && _e !== void 0 ? _e : 0) - ((_f = newAxisWidths[position]) !== null && _f !== void 0 ? _f : 0);\n        return { clipSeries: clipSeries, axisThickness: axisThickness, axisOffset: axisOffset };\n    };\n    CartesianChart.prototype.positionAxis = function (opts) {\n        var _a, _b, _c, _d;\n        var axis = opts.axis, axisBound = opts.axisBound, axisWidths = opts.axisWidths, seriesRect = opts.seriesRect, axisOffset = opts.axisOffset, axisThickness = opts.axisThickness;\n        var position = axis.position;\n        switch (position) {\n            case 'top':\n                axis.translation.x = axisBound.x + ((_a = axisWidths.left) !== null && _a !== void 0 ? _a : 0);\n                axis.translation.y = this.clampToOutsideSeriesRect(seriesRect, axisBound.y + 1 + axisOffset + axisThickness, 'y', 1);\n                break;\n            case 'bottom':\n                axis.translation.x = axisBound.x + ((_b = axisWidths.left) !== null && _b !== void 0 ? _b : 0);\n                axis.translation.y = this.clampToOutsideSeriesRect(seriesRect, axisBound.y + axisBound.height + 1 - axisThickness - axisOffset, 'y', -1);\n                break;\n            case 'left':\n                axis.translation.y = axisBound.y + ((_c = axisWidths.top) !== null && _c !== void 0 ? _c : 0);\n                axis.translation.x = this.clampToOutsideSeriesRect(seriesRect, axisBound.x + axisOffset + axisThickness, 'x', 1);\n                break;\n            case 'right':\n                axis.translation.y = axisBound.y + ((_d = axisWidths.top) !== null && _d !== void 0 ? _d : 0);\n                axis.translation.x = this.clampToOutsideSeriesRect(seriesRect, axisBound.x + axisBound.width - axisThickness - axisOffset, 'x', -1);\n                break;\n        }\n        axis.updatePosition();\n    };\n    CartesianChart.className = 'CartesianChart';\n    CartesianChart.type = 'cartesian';\n    return CartesianChart;\n}(Chart));\n\nvar __extends$2b = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar PolarSeries = /** @class */ (function (_super) {\n    __extends$2b(PolarSeries, _super);\n    function PolarSeries(_a) {\n        var _b;\n        var _c = _a.useLabelLayer, useLabelLayer = _c === void 0 ? false : _c;\n        var _this = _super.call(this, {\n            useLabelLayer: useLabelLayer,\n            pickModes: [SeriesNodePickMode.EXACT_SHAPE_MATCH],\n            directionKeys: (_b = {},\n                _b[ChartAxisDirection.X] = ['angleKey'],\n                _b[ChartAxisDirection.Y] = ['radiusKey'],\n                _b),\n        }) || this;\n        /**\n         * The center of the polar series (for example, the center of a pie).\n         * If the polar chart has multiple series, all of them will have their\n         * center set to the same value as a result of the polar chart layout.\n         * The center coordinates are not supposed to be set by the user.\n         */\n        _this.centerX = 0;\n        _this.centerY = 0;\n        /**\n         * The maximum radius the series can use.\n         * This value is set automatically as a result of the polar chart layout\n         * and is not supposed to be set by the user.\n         */\n        _this.radius = 0;\n        return _this;\n    }\n    PolarSeries.prototype.getLabelData = function () {\n        return [];\n    };\n    PolarSeries.prototype.computeLabelsBBox = function (_options) {\n        return null;\n    };\n    return PolarSeries;\n}(Series));\n\nvar __extends$2a = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __awaiter$9 = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {\n    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n    return new (P || (P = Promise))(function (resolve, reject) {\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\n    });\n};\nvar __generator$9 = (undefined && undefined.__generator) || function (thisArg, body) {\n    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n    return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n    function verb(n) { return function (v) { return step([n, v]); }; }\n    function step(op) {\n        if (f) throw new TypeError(\"Generator is already executing.\");\n        while (_) try {\n            if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n            if (y = 0, t) op = [op[0] & 2, t.value];\n            switch (op[0]) {\n                case 0: case 1: t = op; break;\n                case 4: _.label++; return { value: op[1], done: false };\n                case 5: _.label++; y = op[1]; op = [0]; continue;\n                case 7: op = _.ops.pop(); _.trys.pop(); continue;\n                default:\n                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n                    if (t[2]) _.ops.pop();\n                    _.trys.pop(); continue;\n            }\n            op = body.call(thisArg, _);\n        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n    }\n};\nvar PolarChart = /** @class */ (function (_super) {\n    __extends$2a(PolarChart, _super);\n    function PolarChart(document, overrideDevicePixelRatio, resources) {\n        if (document === void 0) { document = window.document; }\n        var _this = _super.call(this, document, overrideDevicePixelRatio, resources) || this;\n        _this.padding = new Padding$1(40);\n        var root = _this.scene.root;\n        _this.legend.attachLegend(root);\n        return _this;\n    }\n    PolarChart.prototype.performLayout = function () {\n        return __awaiter$9(this, void 0, void 0, function () {\n            var shrinkRect, fullSeriesRect, hoverRectPadding, hoverRect;\n            return __generator$9(this, function (_a) {\n                switch (_a.label) {\n                    case 0: return [4 /*yield*/, _super.prototype.performLayout.call(this)];\n                    case 1:\n                        shrinkRect = _a.sent();\n                        fullSeriesRect = shrinkRect.clone();\n                        this.computeSeriesRect(shrinkRect);\n                        this.computeCircle();\n                        hoverRectPadding = 20;\n                        hoverRect = shrinkRect.clone().grow(hoverRectPadding);\n                        this.hoverRect = hoverRect;\n                        this.layoutService.dispatchLayoutComplete({\n                            type: 'layout-complete',\n                            chart: { width: this.scene.width, height: this.scene.height },\n                            series: { rect: fullSeriesRect, paddedRect: shrinkRect, hoverRect: hoverRect, visible: true },\n                            axes: [],\n                        });\n                        return [2 /*return*/, shrinkRect];\n                }\n            });\n        });\n    };\n    PolarChart.prototype.computeSeriesRect = function (shrinkRect) {\n        var seriesAreaPadding = this.seriesAreaPadding;\n        shrinkRect.shrink(seriesAreaPadding.left, 'left');\n        shrinkRect.shrink(seriesAreaPadding.top, 'top');\n        shrinkRect.shrink(seriesAreaPadding.right, 'right');\n        shrinkRect.shrink(seriesAreaPadding.bottom, 'bottom');\n        this.seriesRect = shrinkRect;\n    };\n    PolarChart.prototype.computeCircle = function () {\n        var _this = this;\n        var seriesBox = this.seriesRect;\n        var polarSeries = this.series.filter(function (series) {\n            return series instanceof PolarSeries;\n        });\n        var setSeriesCircle = function (cx, cy, r) {\n            polarSeries.forEach(function (series) {\n                series.centerX = cx;\n                series.centerY = cy;\n                series.radius = r;\n            });\n        };\n        var centerX = seriesBox.x + seriesBox.width / 2;\n        var centerY = seriesBox.y + seriesBox.height / 2;\n        var initialRadius = Math.max(0, Math.min(seriesBox.width, seriesBox.height) / 2);\n        var radius = initialRadius;\n        setSeriesCircle(centerX, centerY, radius);\n        var shake = function (_a) {\n            var _b = (_a === void 0 ? {} : _a).hideWhenNecessary, hideWhenNecessary = _b === void 0 ? false : _b;\n            var labelBoxes = polarSeries\n                .map(function (series) { return series.computeLabelsBBox({ hideWhenNecessary: hideWhenNecessary }); })\n                .filter(function (box) { return box != null; });\n            if (labelBoxes.length === 0) {\n                setSeriesCircle(centerX, centerY, initialRadius);\n                return;\n            }\n            var labelBox = BBox.merge(labelBoxes);\n            var refined = _this.refineCircle(labelBox, radius);\n            setSeriesCircle(refined.centerX, refined.centerY, refined.radius);\n            if (refined.radius === radius) {\n                return;\n            }\n            radius = refined.radius;\n        };\n        shake(); // Initial attempt\n        shake(); // Precise attempt\n        shake(); // Just in case\n        shake({ hideWhenNecessary: true }); // Hide unnecessary labels\n        shake({ hideWhenNecessary: true }); // Final result\n    };\n    PolarChart.prototype.refineCircle = function (labelsBox, radius) {\n        var minCircleRatio = 0.5; // Prevents reduced circle to be too small\n        var seriesBox = this.seriesRect;\n        var circleLeft = -radius;\n        var circleTop = -radius;\n        var circleRight = radius;\n        var circleBottom = radius;\n        // Label padding around the circle\n        var padLeft = Math.max(0, circleLeft - labelsBox.x);\n        var padTop = Math.max(0, circleTop - labelsBox.y);\n        var padRight = Math.max(0, labelsBox.x + labelsBox.width - circleRight);\n        var padBottom = Math.max(0, labelsBox.y + labelsBox.height - circleBottom);\n        // Available area for the circle (after the padding will be applied)\n        var availCircleWidth = seriesBox.width - padLeft - padRight;\n        var availCircleHeight = seriesBox.height - padTop - padBottom;\n        var newRadius = Math.min(availCircleWidth, availCircleHeight) / 2;\n        var minHorizontalRadius = (minCircleRatio * seriesBox.width) / 2;\n        var minVerticalRadius = (minCircleRatio * seriesBox.height) / 2;\n        var minRadius = Math.min(minHorizontalRadius, minVerticalRadius);\n        if (newRadius < minRadius) {\n            // If the radius is too small, reduce the label padding\n            newRadius = minRadius;\n            var horizontalPadding = padLeft + padRight;\n            var verticalPadding = padTop + padBottom;\n            if (2 * newRadius + verticalPadding > seriesBox.height) {\n                var padHeight = seriesBox.height - 2 * newRadius;\n                if (Math.min(padTop, padBottom) * 2 > padHeight) {\n                    padTop = padHeight / 2;\n                    padBottom = padHeight / 2;\n                }\n                else if (padTop > padBottom) {\n                    padTop = padHeight - padBottom;\n                }\n                else {\n                    padBottom = padHeight - padTop;\n                }\n            }\n            if (2 * newRadius + horizontalPadding > seriesBox.width) {\n                var padWidth = seriesBox.width - 2 * newRadius;\n                if (Math.min(padLeft, padRight) * 2 > padWidth) {\n                    padLeft = padWidth / 2;\n                    padRight = padWidth / 2;\n                }\n                else if (padLeft > padRight) {\n                    padLeft = padWidth - padRight;\n                }\n                else {\n                    padRight = padWidth - padLeft;\n                }\n            }\n        }\n        var newWidth = padLeft + 2 * newRadius + padRight;\n        var newHeight = padTop + 2 * newRadius + padBottom;\n        return {\n            centerX: seriesBox.x + (seriesBox.width - newWidth) / 2 + padLeft + newRadius,\n            centerY: seriesBox.y + (seriesBox.height - newHeight) / 2 + padTop + newRadius,\n            radius: newRadius,\n        };\n    };\n    PolarChart.className = 'PolarChart';\n    PolarChart.type = 'polar';\n    return PolarChart;\n}(Chart));\n\nvar __extends$29 = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __awaiter$8 = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {\n    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n    return new (P || (P = Promise))(function (resolve, reject) {\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\n    });\n};\nvar __generator$8 = (undefined && undefined.__generator) || function (thisArg, body) {\n    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n    return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n    function verb(n) { return function (v) { return step([n, v]); }; }\n    function step(op) {\n        if (f) throw new TypeError(\"Generator is already executing.\");\n        while (_) try {\n            if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n            if (y = 0, t) op = [op[0] & 2, t.value];\n            switch (op[0]) {\n                case 0: case 1: t = op; break;\n                case 4: _.label++; return { value: op[1], done: false };\n                case 5: _.label++; y = op[1]; op = [0]; continue;\n                case 7: op = _.ops.pop(); _.trys.pop(); continue;\n                default:\n                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n                    if (t[2]) _.ops.pop();\n                    _.trys.pop(); continue;\n            }\n            op = body.call(thisArg, _);\n        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n    }\n};\nvar HierarchyChart = /** @class */ (function (_super) {\n    __extends$29(HierarchyChart, _super);\n    function HierarchyChart(document, overrideDevicePixelRatio, resources) {\n        if (document === void 0) { document = window.document; }\n        var _this = _super.call(this, document, overrideDevicePixelRatio, resources) || this;\n        _this._data = {};\n        var root = _this.scene.root;\n        _this.legend.attachLegend(root);\n        return _this;\n    }\n    HierarchyChart.prototype.performLayout = function () {\n        return __awaiter$8(this, void 0, void 0, function () {\n            var shrinkRect, seriesAreaPadding, fullSeriesRect, hoverRectPadding, hoverRect, seriesRoot;\n            return __generator$8(this, function (_a) {\n                switch (_a.label) {\n                    case 0: return [4 /*yield*/, _super.prototype.performLayout.call(this)];\n                    case 1:\n                        shrinkRect = _a.sent();\n                        seriesAreaPadding = this.seriesAreaPadding;\n                        fullSeriesRect = shrinkRect.clone();\n                        shrinkRect.shrink(seriesAreaPadding.left, 'left');\n                        shrinkRect.shrink(seriesAreaPadding.top, 'top');\n                        shrinkRect.shrink(seriesAreaPadding.right, 'right');\n                        shrinkRect.shrink(seriesAreaPadding.bottom, 'bottom');\n                        this.seriesRect = shrinkRect;\n                        hoverRectPadding = 20;\n                        hoverRect = shrinkRect.clone().grow(hoverRectPadding);\n                        this.hoverRect = hoverRect;\n                        this.series.forEach(function (series) {\n                            series.rootGroup.translationX = Math.floor(shrinkRect.x);\n                            series.rootGroup.translationY = Math.floor(shrinkRect.y);\n                            series.update({ seriesRect: shrinkRect }); // this has to happen after the `updateAxes` call\n                        });\n                        seriesRoot = this.seriesRoot;\n                        seriesRoot.setClipRectInGroupCoordinateSpace(new BBox(shrinkRect.x, shrinkRect.y, shrinkRect.width, shrinkRect.height));\n                        this.layoutService.dispatchLayoutComplete({\n                            type: 'layout-complete',\n                            chart: { width: this.scene.width, height: this.scene.height },\n                            series: { rect: fullSeriesRect, paddedRect: shrinkRect, hoverRect: hoverRect, visible: true },\n                            axes: [],\n                        });\n                        return [2 /*return*/, shrinkRect];\n                }\n            });\n        });\n    };\n    HierarchyChart.className = 'HierarchyChart';\n    HierarchyChart.type = 'hierarchy';\n    return HierarchyChart;\n}(Chart));\n\nvar __read$A = (undefined && undefined.__read) || function (o, n) {\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n    if (!m) return o;\n    var i = m.call(o), r, ar = [], e;\n    try {\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n    }\n    catch (error) { e = { error: error }; }\n    finally {\n        try {\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\n        }\n        finally { if (e) throw e.error; }\n    }\n    return ar;\n};\nvar interpolatePattern = /(#\\{(.*?)\\})/g;\nfunction interpolate(input, values, formats) {\n    return input.replace(interpolatePattern, function () {\n        var args = [];\n        for (var _i = 0; _i < arguments.length; _i++) {\n            args[_i] = arguments[_i];\n        }\n        var name = args[2];\n        var _a = __read$A(name.split(':'), 2), valueName = _a[0], formatName = _a[1];\n        var value = values[valueName];\n        if (typeof value === 'number') {\n            var format = formatName && formats && formats[formatName];\n            if (format) {\n                var _b = format, locales = _b.locales, options = _b.options;\n                return value.toLocaleString(locales, options);\n            }\n            return String(value);\n        }\n        if (value instanceof Date) {\n            var format = formatName && formats && formats[formatName];\n            if (typeof format === 'string') {\n                var formatter = buildFormatter(format);\n                return formatter(value);\n            }\n            return value.toDateString();\n        }\n        if (typeof value === 'string' || (value && value.toString)) {\n            return String(value);\n        }\n        return '';\n    });\n}\n\nvar element = null;\nfunction sanitizeHtml(text) {\n    element = element || document.createElement('div');\n    if (!text) {\n        return '';\n    }\n    element.textContent = text;\n    return element.innerHTML;\n}\n\nfunction calculateNiceSecondaryAxis(domain, primaryTickCount) {\n    // Make secondary axis domain nice using strict tick count, matching the tick count from the primary axis.\n    // This is to make the secondary axis grid lines/ tick positions align with the ones from the primary axis.\n    var start = Math.floor(domain[0]);\n    var stop = domain[1];\n    start = calculateNiceStart(start, stop, primaryTickCount);\n    var step = getTickStep(start, stop, primaryTickCount);\n    var segments = primaryTickCount - 1;\n    stop = start + segments * step;\n    var d = [start, stop];\n    var ticks = getTicks(start, step, primaryTickCount);\n    return [d, ticks];\n}\nfunction calculateNiceStart(a, b, count) {\n    var rawStep = Math.abs(b - a) / (count - 1);\n    var order = Math.floor(Math.log10(rawStep));\n    var magnitude = Math.pow(10, order);\n    return Math.floor(a / magnitude) * magnitude;\n}\nfunction getTicks(start, step, count) {\n    // power of the step will be negative if the step is a fraction (between 0 and 1)\n    var stepPower = Math.floor(Math.log10(step));\n    var fractionDigits = step > 0 && step < 1 ? Math.abs(stepPower) : 0;\n    var f = Math.pow(10, fractionDigits);\n    var ticks = new NumericTicks(fractionDigits);\n    for (var i = 0; i < count; i++) {\n        var tick = start + step * i;\n        ticks[i] = Math.round(tick * f) / f;\n    }\n    return ticks;\n}\nfunction getTickStep(start, stop, count) {\n    var segments = count - 1;\n    var rawStep = (stop - start) / segments;\n    return calculateNextNiceStep(rawStep);\n}\nfunction calculateNextNiceStep(rawStep) {\n    var order = Math.floor(Math.log10(rawStep));\n    var magnitude = Math.pow(10, order);\n    // Make order 1\n    var step = (rawStep / magnitude) * 10;\n    if (step > 0 && step <= 1) {\n        return magnitude / 10;\n    }\n    if (step > 1 && step <= 2) {\n        return (2 * magnitude) / 10;\n    }\n    if (step > 1 && step <= 5) {\n        return (5 * magnitude) / 10;\n    }\n    if (step > 5 && step <= 10) {\n        return (10 * magnitude) / 10;\n    }\n    if (step > 10 && step <= 20) {\n        return (20 * magnitude) / 10;\n    }\n    if (step > 20 && step <= 40) {\n        return (40 * magnitude) / 10;\n    }\n    if (step > 40 && step <= 50) {\n        return (50 * magnitude) / 10;\n    }\n    if (step > 50 && step <= 100) {\n        return (100 * magnitude) / 10;\n    }\n    return step;\n}\n\nvar __extends$28 = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$1v = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __read$z = (undefined && undefined.__read) || function (o, n) {\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n    if (!m) return o;\n    var i = m.call(o), r, ar = [], e;\n    try {\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n    }\n    catch (error) { e = { error: error }; }\n    finally {\n        try {\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\n        }\n        finally { if (e) throw e.error; }\n    }\n    return ar;\n};\nvar NumberAxis = /** @class */ (function (_super) {\n    __extends$28(NumberAxis, _super);\n    function NumberAxis(moduleCtx, scale) {\n        if (scale === void 0) { scale = new LinearScale$1(); }\n        var _this = _super.call(this, moduleCtx, scale) || this;\n        _this.min = NaN;\n        _this.max = NaN;\n        scale.strictClampByDefault = true;\n        return _this;\n    }\n    NumberAxis.prototype.normaliseDataDomain = function (d) {\n        var _a = this, min = _a.min, max = _a.max;\n        if (d.length > 2) {\n            d = extent$4(d) || [NaN, NaN];\n        }\n        if (!isNaN(min)) {\n            d = [min, d[1]];\n        }\n        if (!isNaN(max)) {\n            d = [d[0], max];\n        }\n        if (d[0] > d[1]) {\n            d = [];\n        }\n        return d;\n    };\n    NumberAxis.prototype.formatDatum = function (datum) {\n        if (typeof datum === 'number') {\n            return datum.toFixed(2);\n        }\n        else {\n            Logger.warnOnce('data contains Date objects which are being plotted against a number axis, please only use a number axis for numbers.');\n            return String(datum);\n        }\n    };\n    NumberAxis.prototype.updateSecondaryAxisTicks = function (primaryTickCount) {\n        if (this.dataDomain == null) {\n            throw new Error('AG Charts - dataDomain not calculated, cannot perform tick calculation.');\n        }\n        var _a = __read$z(calculateNiceSecondaryAxis(this.dataDomain, primaryTickCount !== null && primaryTickCount !== void 0 ? primaryTickCount : 0), 2), d = _a[0], ticks = _a[1];\n        this.scale.nice = false;\n        this.scale.domain = d;\n        this.scale.update();\n        return ticks;\n    };\n    NumberAxis.className = 'NumberAxis';\n    NumberAxis.type = 'number';\n    __decorate$1v([\n        Validate(AND(NUMBER_OR_NAN(), LESS_THAN('max'))),\n        Default(NaN)\n    ], NumberAxis.prototype, \"min\", void 0);\n    __decorate$1v([\n        Validate(AND(NUMBER_OR_NAN(), GREATER_THAN('min'))),\n        Default(NaN)\n    ], NumberAxis.prototype, \"max\", void 0);\n    return NumberAxis;\n}(ChartAxis));\n\nvar __extends$27 = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$1u = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nfunction NON_ZERO_NUMBER() {\n    // Cannot be 0\n    var message = \"expecting a non-zero Number\";\n    return predicateWithMessage(function (v) { return typeof v === 'number' && v !== 0; }, message);\n}\nvar LogAxis = /** @class */ (function (_super) {\n    __extends$27(LogAxis, _super);\n    function LogAxis(moduleCtx) {\n        var _this = _super.call(this, moduleCtx, new LogScale()) || this;\n        _this.min = NaN;\n        _this.max = NaN;\n        _this.scale.strictClampByDefault = true;\n        return _this;\n    }\n    LogAxis.prototype.normaliseDataDomain = function (d) {\n        var _a = this, min = _a.min, max = _a.max;\n        if (d.length > 2) {\n            d = extent$4(d) || [NaN, NaN];\n        }\n        if (!isNaN(min)) {\n            d = [min, d[1]];\n        }\n        if (!isNaN(max)) {\n            d = [d[0], max];\n        }\n        var isInverted = d[0] > d[1];\n        var crossesZero = d[0] < 0 && d[1] > 0;\n        var hasZeroExtent = d[0] === 0 && d[1] === 0;\n        var invalidDomain = isInverted || crossesZero || hasZeroExtent;\n        if (invalidDomain) {\n            d = [];\n            if (crossesZero) {\n                Logger.warn(\"the data domain crosses zero, the chart data cannot be rendered. See log axis documentation for more information.\");\n            }\n            else if (hasZeroExtent) {\n                Logger.warn(\"the data domain has 0 extent, no data is rendered.\");\n            }\n        }\n        if (d[0] === 0) {\n            d[0] = 1;\n        }\n        if (d[1] === 0) {\n            d[1] = -1;\n        }\n        return d;\n    };\n    Object.defineProperty(LogAxis.prototype, \"base\", {\n        get: function () {\n            return this.scale.base;\n        },\n        set: function (value) {\n            this.scale.base = value;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    LogAxis.className = 'LogAxis';\n    LogAxis.type = 'log';\n    __decorate$1u([\n        Validate(AND(NUMBER_OR_NAN(), LESS_THAN('max'), NON_ZERO_NUMBER())),\n        Default(NaN)\n    ], LogAxis.prototype, \"min\", void 0);\n    __decorate$1u([\n        Validate(AND(NUMBER_OR_NAN(), GREATER_THAN('min'), NON_ZERO_NUMBER())),\n        Default(NaN)\n    ], LogAxis.prototype, \"max\", void 0);\n    return LogAxis;\n}(NumberAxis));\n\nvar __assign$x = (undefined && undefined.__assign) || function () {\n    __assign$x = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign$x.apply(this, arguments);\n};\nvar __values$f = (undefined && undefined.__values) || function(o) {\n    var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n    if (m) return m.call(o);\n    if (o && typeof o.length === \"number\") return {\n        next: function () {\n            if (o && i >= o.length) o = void 0;\n            return { value: o && o[i++], done: !o };\n        }\n    };\n    throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nvar __read$y = (undefined && undefined.__read) || function (o, n) {\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n    if (!m) return o;\n    var i = m.call(o), r, ar = [], e;\n    try {\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n    }\n    catch (error) { e = { error: error }; }\n    finally {\n        try {\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\n        }\n        finally { if (e) throw e.error; }\n    }\n    return ar;\n};\nvar __spread$k = (undefined && undefined.__spread) || function () {\n    for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read$y(arguments[i]));\n    return ar;\n};\nfunction extendDomain(values, domain) {\n    var e_1, _a;\n    if (domain === void 0) { domain = [Infinity, -Infinity]; }\n    try {\n        for (var values_1 = __values$f(values), values_1_1 = values_1.next(); !values_1_1.done; values_1_1 = values_1.next()) {\n            var value = values_1_1.value;\n            if (typeof value !== 'number') {\n                continue;\n            }\n            if (value < domain[0]) {\n                domain[0] = value;\n            }\n            if (value > domain[1]) {\n                domain[1] = value;\n            }\n        }\n    }\n    catch (e_1_1) { e_1 = { error: e_1_1 }; }\n    finally {\n        try {\n            if (values_1_1 && !values_1_1.done && (_a = values_1.return)) _a.call(values_1);\n        }\n        finally { if (e_1) throw e_1.error; }\n    }\n    return domain;\n}\nfunction sumValues(values, accumulator) {\n    var e_2, _a;\n    if (accumulator === void 0) { accumulator = [0, 0]; }\n    try {\n        for (var values_2 = __values$f(values), values_2_1 = values_2.next(); !values_2_1.done; values_2_1 = values_2.next()) {\n            var value = values_2_1.value;\n            if (typeof value !== 'number') {\n                continue;\n            }\n            if (value < 0) {\n                accumulator[0] += value;\n            }\n            if (value > 0) {\n                accumulator[1] += value;\n            }\n        }\n    }\n    catch (e_2_1) { e_2 = { error: e_2_1 }; }\n    finally {\n        try {\n            if (values_2_1 && !values_2_1.done && (_a = values_2.return)) _a.call(values_2);\n        }\n        finally { if (e_2) throw e_2.error; }\n    }\n    return accumulator;\n}\nfunction toKeyString(keys) {\n    return keys\n        .map(function (v) {\n        if (v == null) {\n            return v;\n        }\n        else if (typeof v === 'number' || typeof v === 'string' || typeof v === 'boolean') {\n            return v;\n        }\n        else if (typeof v === 'object') {\n            return JSON.stringify(v);\n        }\n        return v;\n    })\n        .join('-');\n}\nvar SMALLEST_KEY_INTERVAL = {\n    type: 'reducer',\n    property: 'smallestKeyInterval',\n    initialValue: Infinity,\n    reducer: function () {\n        var prevX = NaN;\n        return function (smallestSoFar, next) {\n            var nextX = next.keys[0];\n            var interval = Math.abs(nextX - prevX);\n            prevX = nextX;\n            if (!isNaN(interval) && interval > 0 && interval < smallestSoFar) {\n                return interval;\n            }\n            return smallestSoFar;\n        };\n    },\n};\nvar SUM_VALUE_EXTENT = {\n    type: 'processor',\n    property: 'sumValueExtent',\n    calculate: function (processedData) {\n        var e_3, _a;\n        var _b, _c, _d, _e;\n        var result = __spread$k(((_c = (_b = processedData.domain.sumValues) === null || _b === void 0 ? void 0 : _b[0]) !== null && _c !== void 0 ? _c : [0, 0]));\n        try {\n            for (var _f = __values$f((_e = (_d = processedData.domain.sumValues) === null || _d === void 0 ? void 0 : _d.slice(1)) !== null && _e !== void 0 ? _e : []), _g = _f.next(); !_g.done; _g = _f.next()) {\n                var _h = __read$y(_g.value, 2), min = _h[0], max = _h[1];\n                if (min < result[0]) {\n                    result[0] = min;\n                }\n                if (max > result[1]) {\n                    result[1] = max;\n                }\n            }\n        }\n        catch (e_3_1) { e_3 = { error: e_3_1 }; }\n        finally {\n            try {\n                if (_g && !_g.done && (_a = _f.return)) _a.call(_f);\n            }\n            finally { if (e_3) throw e_3.error; }\n        }\n        return result;\n    },\n};\nvar INVALID_VALUE = Symbol('invalid');\nvar DataModel = /** @class */ (function () {\n    function DataModel(opts) {\n        var e_4, _a, e_5, _b;\n        var _this = this;\n        var _c;\n        var props = opts.props;\n        // Validate that keys appear before values in the definitions, as output ordering depends\n        // on configuration ordering, but we process keys before values.\n        var keys = true;\n        try {\n            for (var props_1 = __values$f(props), props_1_1 = props_1.next(); !props_1_1.done; props_1_1 = props_1.next()) {\n                var next = props_1_1.value;\n                if (next.type === 'key' && !keys) {\n                    throw new Error('AG Charts - internal config error: keys must come before values.');\n                }\n                if (next.type === 'value' && keys) {\n                    keys = false;\n                }\n            }\n        }\n        catch (e_4_1) { e_4 = { error: e_4_1 }; }\n        finally {\n            try {\n                if (props_1_1 && !props_1_1.done && (_a = props_1.return)) _a.call(props_1);\n            }\n            finally { if (e_4) throw e_4.error; }\n        }\n        this.opts = __assign$x({ dataVisible: true }, opts);\n        this.keys = props\n            .filter(function (def) { return def.type === 'key'; })\n            .map(function (def, index) { return (__assign$x(__assign$x({}, def), { index: index, missing: false })); });\n        this.values = props\n            .filter(function (def) { return def.type === 'value'; })\n            .map(function (def, index) { return (__assign$x(__assign$x({}, def), { index: index, missing: false })); });\n        this.sums = props.filter(function (def) { return def.type === 'sum'; });\n        this.reducers = props.filter(function (def) { return def.type === 'reducer'; });\n        this.processors = props.filter(function (def) { return def.type === 'processor'; });\n        try {\n            for (var _d = __values$f((_c = this.sums) !== null && _c !== void 0 ? _c : []), _e = _d.next(); !_e.done; _e = _d.next()) {\n                var properties = _e.value.properties;\n                if (properties.length === 0)\n                    continue;\n                if (!properties.some(function (prop) { return _this.values.some(function (def) { return def.property === prop; }); })) {\n                    throw new Error(\"AG Charts - internal config error: sum properties must match defined properties (\" + properties + \").\");\n                }\n            }\n        }\n        catch (e_5_1) { e_5 = { error: e_5_1 }; }\n        finally {\n            try {\n                if (_e && !_e.done && (_b = _d.return)) _b.call(_d);\n            }\n            finally { if (e_5) throw e_5.error; }\n        }\n    }\n    DataModel.prototype.resolveProcessedDataIndex = function (propName) {\n        var def = this.resolveProcessedDataDef(propName);\n        if ((def === null || def === void 0 ? void 0 : def.type) === 'key' || (def === null || def === void 0 ? void 0 : def.type) === 'value') {\n            return { type: def.type, index: def.index };\n        }\n    };\n    DataModel.prototype.resolveProcessedDataDef = function (propName) {\n        var _a = this, keys = _a.keys, values = _a.values;\n        var def = __spread$k(keys, values).find(function (_a) {\n            var property = _a.property;\n            return property === propName;\n        });\n        if (!def)\n            return undefined;\n        return def;\n    };\n    DataModel.prototype.getDomain = function (propName, processedData) {\n        var idx = this.resolveProcessedDataIndex(propName);\n        if (!idx) {\n            return [];\n        }\n        return processedData.domain[idx.type === 'key' ? 'keys' : 'values'][idx.index];\n    };\n    DataModel.prototype.processData = function (data) {\n        var e_6, _a, e_7, _b;\n        var _c = this, _d = _c.opts, groupByKeys = _d.groupByKeys, normaliseTo = _d.normaliseTo, sums = _c.sums, reducers = _c.reducers, processors = _c.processors;\n        var start = performance.now();\n        try {\n            for (var _e = __values$f(__spread$k(this.keys, this.values)), _f = _e.next(); !_f.done; _f = _e.next()) {\n                var def = _f.value;\n                def.missing = false;\n            }\n        }\n        catch (e_6_1) { e_6 = { error: e_6_1 }; }\n        finally {\n            try {\n                if (_f && !_f.done && (_a = _e.return)) _a.call(_e);\n            }\n            finally { if (e_6) throw e_6.error; }\n        }\n        if (groupByKeys && this.keys.length === 0) {\n            return undefined;\n        }\n        var processedData = this.extractData(data);\n        if (groupByKeys) {\n            processedData = this.groupData(processedData);\n        }\n        if (sums.length > 0) {\n            this.sumData(processedData);\n        }\n        if (typeof normaliseTo === 'number') {\n            this.normaliseData(processedData);\n        }\n        if (reducers.length > 0) {\n            this.reduceData(processedData);\n        }\n        if (processors.length > 0) {\n            this.postProcessData(processedData);\n        }\n        try {\n            for (var _g = __values$f(__spread$k(this.keys, this.values)), _h = _g.next(); !_h.done; _h = _g.next()) {\n                var def = _h.value;\n                if (def.missing) {\n                    Logger.warnOnce(\"the key '\" + def.property + \"' was not found in at least one data element.\");\n                }\n            }\n        }\n        catch (e_7_1) { e_7 = { error: e_7_1 }; }\n        finally {\n            try {\n                if (_h && !_h.done && (_b = _g.return)) _b.call(_g);\n            }\n            finally { if (e_7) throw e_7.error; }\n        }\n        var end = performance.now();\n        processedData.time = end - start;\n        return processedData;\n    };\n    DataModel.prototype.extractData = function (data) {\n        var e_8, _a, e_9, _b, e_10, _c;\n        var _d = this, keyDefs = _d.keys, valueDefs = _d.values, dataVisible = _d.opts.dataVisible;\n        var _e = this.initDataDomainProcessor(), dataDomain = _e.dataDomain, processValue = _e.processValue;\n        var resultData = new Array(dataVisible ? data.length : 0);\n        var resultDataIdx = 0;\n        try {\n            dataLoop: for (var data_1 = __values$f(data), data_1_1 = data_1.next(); !data_1_1.done; data_1_1 = data_1.next()) {\n                var datum = data_1_1.value;\n                var keys = dataVisible ? new Array(keyDefs.length) : undefined;\n                var keyIdx = 0;\n                try {\n                    for (var keyDefs_1 = (e_9 = void 0, __values$f(keyDefs)), keyDefs_1_1 = keyDefs_1.next(); !keyDefs_1_1.done; keyDefs_1_1 = keyDefs_1.next()) {\n                        var def = keyDefs_1_1.value;\n                        var key = processValue(def, datum);\n                        if (key === INVALID_VALUE) {\n                            continue dataLoop;\n                        }\n                        if (keys) {\n                            keys[keyIdx++] = key;\n                        }\n                    }\n                }\n                catch (e_9_1) { e_9 = { error: e_9_1 }; }\n                finally {\n                    try {\n                        if (keyDefs_1_1 && !keyDefs_1_1.done && (_b = keyDefs_1.return)) _b.call(keyDefs_1);\n                    }\n                    finally { if (e_9) throw e_9.error; }\n                }\n                var values = dataVisible ? new Array(valueDefs.length) : undefined;\n                var valueIdx = 0;\n                try {\n                    for (var valueDefs_1 = (e_10 = void 0, __values$f(valueDefs)), valueDefs_1_1 = valueDefs_1.next(); !valueDefs_1_1.done; valueDefs_1_1 = valueDefs_1.next()) {\n                        var def = valueDefs_1_1.value;\n                        var value = processValue(def, datum);\n                        if (value === INVALID_VALUE) {\n                            continue dataLoop;\n                        }\n                        if (values) {\n                            values[valueIdx++] = value;\n                        }\n                    }\n                }\n                catch (e_10_1) { e_10 = { error: e_10_1 }; }\n                finally {\n                    try {\n                        if (valueDefs_1_1 && !valueDefs_1_1.done && (_c = valueDefs_1.return)) _c.call(valueDefs_1);\n                    }\n                    finally { if (e_10) throw e_10.error; }\n                }\n                if (dataVisible) {\n                    resultData[resultDataIdx++] = {\n                        datum: datum,\n                        keys: keys,\n                        values: values,\n                    };\n                }\n            }\n        }\n        catch (e_8_1) { e_8 = { error: e_8_1 }; }\n        finally {\n            try {\n                if (data_1_1 && !data_1_1.done && (_a = data_1.return)) _a.call(data_1);\n            }\n            finally { if (e_8) throw e_8.error; }\n        }\n        resultData.length = resultDataIdx;\n        var propertyDomain = function (def) {\n            var result = dataDomain.get(def.property).domain;\n            if (Array.isArray(result) && result[0] > result[1]) {\n                // Ignore starting values.\n                return [];\n            }\n            return __spread$k(result);\n        };\n        return {\n            type: 'ungrouped',\n            data: resultData,\n            domain: {\n                keys: keyDefs.map(function (def) { return propertyDomain(def); }),\n                values: valueDefs.map(function (def) { return propertyDomain(def); }),\n            },\n            indices: {\n                keys: keyDefs.reduce(function (r, _a) {\n                    var property = _a.property, index = _a.index;\n                    r[property] = index;\n                    return r;\n                }, {}),\n                values: valueDefs.reduce(function (r, _a) {\n                    var property = _a.property, index = _a.index;\n                    r[property] = index;\n                    return r;\n                }, {}),\n            },\n            defs: {\n                keys: keyDefs,\n                values: valueDefs,\n            },\n            time: 0,\n        };\n    };\n    DataModel.prototype.groupData = function (data) {\n        var e_11, _a, e_12, _b;\n        var processedData = new Map();\n        try {\n            for (var _c = __values$f(data.data), _d = _c.next(); !_d.done; _d = _c.next()) {\n                var _e = _d.value, keys = _e.keys, values = _e.values, datum = _e.datum;\n                var keyStr = toKeyString(keys);\n                if (processedData.has(keyStr)) {\n                    var existingData = processedData.get(keyStr);\n                    existingData.values.push(values);\n                    existingData.datum.push(datum);\n                }\n                else {\n                    processedData.set(keyStr, { keys: keys, values: [values], datum: [datum] });\n                }\n            }\n        }\n        catch (e_11_1) { e_11 = { error: e_11_1 }; }\n        finally {\n            try {\n                if (_d && !_d.done && (_a = _c.return)) _a.call(_c);\n            }\n            finally { if (e_11) throw e_11.error; }\n        }\n        var resultData = new Array(processedData.size);\n        var dataIndex = 0;\n        try {\n            for (var _f = __values$f(processedData.entries()), _g = _f.next(); !_g.done; _g = _f.next()) {\n                var _h = __read$y(_g.value, 2), _j = _h[1], keys = _j.keys, values = _j.values, datum = _j.datum;\n                resultData[dataIndex++] = {\n                    keys: keys,\n                    values: values,\n                    datum: datum,\n                };\n            }\n        }\n        catch (e_12_1) { e_12 = { error: e_12_1 }; }\n        finally {\n            try {\n                if (_g && !_g.done && (_b = _f.return)) _b.call(_f);\n            }\n            finally { if (e_12) throw e_12.error; }\n        }\n        return __assign$x(__assign$x({}, data), { type: 'grouped', data: resultData });\n    };\n    DataModel.prototype.sumData = function (processedData) {\n        var e_13, _a, e_14, _b, e_15, _c;\n        var _d;\n        var _e = this, valueDefs = _e.values, sumDefs = _e.sums;\n        if (!sumDefs)\n            return;\n        var resultSumValues = sumDefs.map(function () { return [Infinity, -Infinity]; });\n        var resultSumValueIndices = sumDefs.map(function (defs) {\n            return defs.properties.map(function (prop) { return valueDefs.findIndex(function (def) { return def.property === prop; }); });\n        });\n        try {\n            for (var _f = __values$f(processedData.data), _g = _f.next(); !_g.done; _g = _f.next()) {\n                var group = _g.value;\n                var values = group.values;\n                (_d = group.sumValues) !== null && _d !== void 0 ? _d : (group.sumValues = new Array(resultSumValueIndices.length));\n                if (processedData.type === 'ungrouped') {\n                    values = [values];\n                }\n                var resultIdx = 0;\n                try {\n                    for (var resultSumValueIndices_1 = (e_14 = void 0, __values$f(resultSumValueIndices)), resultSumValueIndices_1_1 = resultSumValueIndices_1.next(); !resultSumValueIndices_1_1.done; resultSumValueIndices_1_1 = resultSumValueIndices_1.next()) {\n                        var indices = resultSumValueIndices_1_1.value;\n                        var groupDomain = extendDomain([]);\n                        var _loop_1 = function (distinctValues) {\n                            var valuesToSum = indices.map(function (valueIdx) { return distinctValues[valueIdx]; });\n                            var range = sumValues(valuesToSum);\n                            if (range) {\n                                extendDomain(range, groupDomain);\n                            }\n                        };\n                        try {\n                            for (var values_3 = (e_15 = void 0, __values$f(values)), values_3_1 = values_3.next(); !values_3_1.done; values_3_1 = values_3.next()) {\n                                var distinctValues = values_3_1.value;\n                                _loop_1(distinctValues);\n                            }\n                        }\n                        catch (e_15_1) { e_15 = { error: e_15_1 }; }\n                        finally {\n                            try {\n                                if (values_3_1 && !values_3_1.done && (_c = values_3.return)) _c.call(values_3);\n                            }\n                            finally { if (e_15) throw e_15.error; }\n                        }\n                        extendDomain(groupDomain, resultSumValues[resultIdx]);\n                        group.sumValues[resultIdx++] = groupDomain;\n                    }\n                }\n                catch (e_14_1) { e_14 = { error: e_14_1 }; }\n                finally {\n                    try {\n                        if (resultSumValueIndices_1_1 && !resultSumValueIndices_1_1.done && (_b = resultSumValueIndices_1.return)) _b.call(resultSumValueIndices_1);\n                    }\n                    finally { if (e_14) throw e_14.error; }\n                }\n            }\n        }\n        catch (e_13_1) { e_13 = { error: e_13_1 }; }\n        finally {\n            try {\n                if (_g && !_g.done && (_a = _f.return)) _a.call(_f);\n            }\n            finally { if (e_13) throw e_13.error; }\n        }\n        processedData.domain.sumValues = resultSumValues;\n    };\n    DataModel.prototype.normaliseData = function (processedData) {\n        var e_16, _a, e_17, _b, e_18, _c, e_19, _d, e_20, _e, e_21, _f, e_22, _g;\n        var _h;\n        var _j = this, sumDefs = _j.sums, valueDefs = _j.values, normaliseTo = _j.opts.normaliseTo;\n        if (normaliseTo == null)\n            return;\n        var sumValues = processedData.domain.sumValues;\n        var resultSumValueIndices = sumDefs.map(function (defs) {\n            return defs.properties.map(function (prop) { return valueDefs.findIndex(function (def) { return def.property === prop; }); });\n        });\n        // const normalisedRange = [-normaliseTo, normaliseTo];\n        var normalise = function (val, extent) {\n            var result = (val * normaliseTo) / extent;\n            if (result >= 0) {\n                return Math.min(normaliseTo, result);\n            }\n            return Math.max(-normaliseTo, result);\n        };\n        for (var sumIdx = 0; sumIdx < sumDefs.length; sumIdx++) {\n            var sums = sumValues === null || sumValues === void 0 ? void 0 : sumValues[sumIdx];\n            if (sums == null)\n                continue;\n            var sumAbsExtent = -Infinity;\n            try {\n                for (var sums_1 = (e_16 = void 0, __values$f(sums)), sums_1_1 = sums_1.next(); !sums_1_1.done; sums_1_1 = sums_1.next()) {\n                    var sum = sums_1_1.value;\n                    var sumAbs = Math.abs(sum);\n                    if (sumAbsExtent < sumAbs) {\n                        sumAbsExtent = sumAbs;\n                    }\n                }\n            }\n            catch (e_16_1) { e_16 = { error: e_16_1 }; }\n            finally {\n                try {\n                    if (sums_1_1 && !sums_1_1.done && (_a = sums_1.return)) _a.call(sums_1);\n                }\n                finally { if (e_16) throw e_16.error; }\n            }\n            var sumRangeIdx = 0;\n            try {\n                for (var sums_2 = (e_17 = void 0, __values$f(sums)), sums_2_1 = sums_2.next(); !sums_2_1.done; sums_2_1 = sums_2.next()) {\n                    var _ = sums_2_1.value;\n                    sums[sumRangeIdx] = normalise(sums[sumRangeIdx], sumAbsExtent);\n                    sumRangeIdx++;\n                }\n            }\n            catch (e_17_1) { e_17 = { error: e_17_1 }; }\n            finally {\n                try {\n                    if (sums_2_1 && !sums_2_1.done && (_b = sums_2.return)) _b.call(sums_2);\n                }\n                finally { if (e_17) throw e_17.error; }\n            }\n            try {\n                for (var _k = (e_18 = void 0, __values$f(processedData.data)), _l = _k.next(); !_l.done; _l = _k.next()) {\n                    var next = _l.value;\n                    var sumValues_1 = next.sumValues;\n                    var values = next.values;\n                    if (processedData.type === 'ungrouped') {\n                        values = [values];\n                    }\n                    var valuesSumExtent = 0;\n                    try {\n                        for (var _m = (e_19 = void 0, __values$f((_h = sumValues_1 === null || sumValues_1 === void 0 ? void 0 : sumValues_1[sumIdx]) !== null && _h !== void 0 ? _h : [])), _o = _m.next(); !_o.done; _o = _m.next()) {\n                            var sum = _o.value;\n                            var sumAbs = Math.abs(sum);\n                            if (valuesSumExtent < sumAbs) {\n                                valuesSumExtent = sumAbs;\n                            }\n                        }\n                    }\n                    catch (e_19_1) { e_19 = { error: e_19_1 }; }\n                    finally {\n                        try {\n                            if (_o && !_o.done && (_d = _m.return)) _d.call(_m);\n                        }\n                        finally { if (e_19) throw e_19.error; }\n                    }\n                    try {\n                        for (var values_4 = (e_20 = void 0, __values$f(values)), values_4_1 = values_4.next(); !values_4_1.done; values_4_1 = values_4.next()) {\n                            var row = values_4_1.value;\n                            try {\n                                for (var _p = (e_21 = void 0, __values$f(resultSumValueIndices[sumIdx])), _q = _p.next(); !_q.done; _q = _p.next()) {\n                                    var indices = _q.value;\n                                    row[indices] = normalise(row[indices], valuesSumExtent);\n                                }\n                            }\n                            catch (e_21_1) { e_21 = { error: e_21_1 }; }\n                            finally {\n                                try {\n                                    if (_q && !_q.done && (_f = _p.return)) _f.call(_p);\n                                }\n                                finally { if (e_21) throw e_21.error; }\n                            }\n                        }\n                    }\n                    catch (e_20_1) { e_20 = { error: e_20_1 }; }\n                    finally {\n                        try {\n                            if (values_4_1 && !values_4_1.done && (_e = values_4.return)) _e.call(values_4);\n                        }\n                        finally { if (e_20) throw e_20.error; }\n                    }\n                    if (sumValues_1 == null)\n                        continue;\n                    sumRangeIdx = 0;\n                    try {\n                        for (var _r = (e_22 = void 0, __values$f(sumValues_1[sumIdx])), _s = _r.next(); !_s.done; _s = _r.next()) {\n                            var _ = _s.value;\n                            sumValues_1[sumIdx][sumRangeIdx] = normalise(sumValues_1[sumIdx][sumRangeIdx], valuesSumExtent);\n                            sumRangeIdx++;\n                        }\n                    }\n                    catch (e_22_1) { e_22 = { error: e_22_1 }; }\n                    finally {\n                        try {\n                            if (_s && !_s.done && (_g = _r.return)) _g.call(_r);\n                        }\n                        finally { if (e_22) throw e_22.error; }\n                    }\n                }\n            }\n            catch (e_18_1) { e_18 = { error: e_18_1 }; }\n            finally {\n                try {\n                    if (_l && !_l.done && (_c = _k.return)) _c.call(_k);\n                }\n                finally { if (e_18) throw e_18.error; }\n            }\n        }\n    };\n    DataModel.prototype.reduceData = function (processedData) {\n        var e_23, _a, e_24, _b;\n        var _c;\n        var reducerDefs = this.reducers;\n        var reducers = reducerDefs.map(function (def) { return def.reducer(); });\n        var accValues = reducerDefs.map(function (def) { return def.initialValue; });\n        try {\n            for (var _d = __values$f(processedData.data), _e = _d.next(); !_e.done; _e = _d.next()) {\n                var group = _e.value;\n                var reducerIndex = 0;\n                try {\n                    for (var reducers_1 = (e_24 = void 0, __values$f(reducers)), reducers_1_1 = reducers_1.next(); !reducers_1_1.done; reducers_1_1 = reducers_1.next()) {\n                        var reducer = reducers_1_1.value;\n                        accValues[reducerIndex] = reducer(accValues[reducerIndex], group);\n                        reducerIndex++;\n                    }\n                }\n                catch (e_24_1) { e_24 = { error: e_24_1 }; }\n                finally {\n                    try {\n                        if (reducers_1_1 && !reducers_1_1.done && (_b = reducers_1.return)) _b.call(reducers_1);\n                    }\n                    finally { if (e_24) throw e_24.error; }\n                }\n            }\n        }\n        catch (e_23_1) { e_23 = { error: e_23_1 }; }\n        finally {\n            try {\n                if (_e && !_e.done && (_a = _d.return)) _a.call(_d);\n            }\n            finally { if (e_23) throw e_23.error; }\n        }\n        for (var accIdx = 0; accIdx < accValues.length; accIdx++) {\n            (_c = processedData.reduced) !== null && _c !== void 0 ? _c : (processedData.reduced = {});\n            processedData.reduced[reducerDefs[accIdx].property] = accValues[accIdx];\n        }\n    };\n    DataModel.prototype.postProcessData = function (processedData) {\n        var e_25, _a;\n        var _b;\n        var processorDefs = this.processors;\n        try {\n            for (var processorDefs_1 = __values$f(processorDefs), processorDefs_1_1 = processorDefs_1.next(); !processorDefs_1_1.done; processorDefs_1_1 = processorDefs_1.next()) {\n                var def = processorDefs_1_1.value;\n                (_b = processedData.reduced) !== null && _b !== void 0 ? _b : (processedData.reduced = {});\n                processedData.reduced[def.property] = def.calculate(processedData);\n            }\n        }\n        catch (e_25_1) { e_25 = { error: e_25_1 }; }\n        finally {\n            try {\n                if (processorDefs_1_1 && !processorDefs_1_1.done && (_a = processorDefs_1.return)) _a.call(processorDefs_1);\n            }\n            finally { if (e_25) throw e_25.error; }\n        }\n    };\n    DataModel.prototype.initDataDomainProcessor = function () {\n        var _a = this, keyDefs = _a.keys, valueDefs = _a.values;\n        var dataDomain = new Map();\n        var initDataDomainKey = function (key, type, updateDataDomain) {\n            if (type === 'category') {\n                updateDataDomain.set(key, { type: type, domain: new Set() });\n            }\n            else {\n                updateDataDomain.set(key, { type: type, domain: [Infinity, -Infinity] });\n            }\n        };\n        var initDataDomain = function (updateDataDomain) {\n            if (updateDataDomain === void 0) { updateDataDomain = dataDomain; }\n            keyDefs.forEach(function (def) { return initDataDomainKey(def.property, def.valueType, updateDataDomain); });\n            valueDefs.forEach(function (def) { return initDataDomainKey(def.property, def.valueType, updateDataDomain); });\n            return updateDataDomain;\n        };\n        initDataDomain();\n        var processValue = function (def, datum, updateDataDomain) {\n            var _a, _b;\n            if (updateDataDomain === void 0) { updateDataDomain = dataDomain; }\n            var valueInDatum = def.property in datum;\n            var missingValueDef = 'missingValue' in def;\n            if (!def.missing && !valueInDatum && !missingValueDef) {\n                def.missing = true;\n            }\n            if (!updateDataDomain.has(def.property)) {\n                initDataDomain(updateDataDomain);\n            }\n            var value = valueInDatum ? datum[def.property] : def.missingValue;\n            if (valueInDatum) {\n                var valid = (_b = (_a = def.validation) === null || _a === void 0 ? void 0 : _a.call(def, value)) !== null && _b !== void 0 ? _b : true;\n                if (!valid) {\n                    if ('invalidValue' in def) {\n                        value = def.invalidValue;\n                    }\n                    else {\n                        return INVALID_VALUE;\n                    }\n                }\n            }\n            var meta = updateDataDomain.get(def.property);\n            if ((meta === null || meta === void 0 ? void 0 : meta.type) === 'category') {\n                meta.domain.add(value);\n            }\n            else if ((meta === null || meta === void 0 ? void 0 : meta.type) === 'range') {\n                if (meta.domain[0] > value) {\n                    meta.domain[0] = value;\n                }\n                if (meta.domain[1] < value) {\n                    meta.domain[1] = value;\n                }\n            }\n            return value;\n        };\n        return { dataDomain: dataDomain, processValue: processValue, initDataDomain: initDataDomain };\n    };\n    return DataModel;\n}());\n\nvar __extends$26 = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$1t = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar TimeAxis = /** @class */ (function (_super) {\n    __extends$26(TimeAxis, _super);\n    function TimeAxis(moduleCtx) {\n        var _this = _super.call(this, moduleCtx, new TimeScale$1()) || this;\n        _this.datumFormat = '%m/%d/%y, %H:%M:%S';\n        _this.min = undefined;\n        _this.max = undefined;\n        var scale = _this.scale;\n        scale.strictClampByDefault = true;\n        _this.refreshScale();\n        _this.datumFormatter = scale.tickFormat({\n            specifier: _this.datumFormat,\n        });\n        return _this;\n    }\n    TimeAxis.prototype.normaliseDataDomain = function (d) {\n        var _a = this, min = _a.min, max = _a.max;\n        if (typeof min === 'number') {\n            min = new Date(min);\n        }\n        if (typeof max === 'number') {\n            max = new Date(max);\n        }\n        if (d.length > 2) {\n            d = (extent$4(d) || [0, 1000]).map(function (x) { return new Date(x); });\n        }\n        if (min instanceof Date) {\n            d = [min, d[1]];\n        }\n        if (max instanceof Date) {\n            d = [d[0], max];\n        }\n        if (d[0] > d[1]) {\n            d = [];\n        }\n        return d;\n    };\n    TimeAxis.prototype.onLabelFormatChange = function (ticks, format) {\n        if (format) {\n            _super.prototype.onLabelFormatChange.call(this, ticks, format);\n        }\n        else {\n            // For time axis labels to look nice, even if date format wasn't set.\n            this.labelFormatter = this.scale.tickFormat({ ticks: ticks });\n        }\n    };\n    TimeAxis.prototype.formatDatum = function (datum) {\n        return this.datumFormatter(datum);\n    };\n    TimeAxis.prototype.calculatePadding = function (_min, _max) {\n        // numbers in domain correspond to Unix timestamps\n        // automatically expand domain by 1 in each direction\n        return 1;\n    };\n    TimeAxis.className = 'TimeAxis';\n    TimeAxis.type = 'time';\n    __decorate$1t([\n        Validate(AND(OPT_DATE_OR_DATETIME_MS, LESS_THAN('max')))\n    ], TimeAxis.prototype, \"min\", void 0);\n    __decorate$1t([\n        Validate(AND(OPT_DATE_OR_DATETIME_MS, GREATER_THAN('min')))\n    ], TimeAxis.prototype, \"max\", void 0);\n    return TimeAxis;\n}(ChartAxis));\n\nvar __extends$25 = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$1s = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __awaiter$7 = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {\n    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n    return new (P || (P = Promise))(function (resolve, reject) {\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\n    });\n};\nvar __generator$7 = (undefined && undefined.__generator) || function (thisArg, body) {\n    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n    return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n    function verb(n) { return function (v) { return step([n, v]); }; }\n    function step(op) {\n        if (f) throw new TypeError(\"Generator is already executing.\");\n        while (_) try {\n            if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n            if (y = 0, t) op = [op[0] & 2, t.value];\n            switch (op[0]) {\n                case 0: case 1: t = op; break;\n                case 4: _.label++; return { value: op[1], done: false };\n                case 5: _.label++; y = op[1]; op = [0]; continue;\n                case 7: op = _.ops.pop(); _.trys.pop(); continue;\n                default:\n                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n                    if (t[2]) _.ops.pop();\n                    _.trys.pop(); continue;\n            }\n            op = body.call(thisArg, _);\n        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n    }\n};\nvar __read$x = (undefined && undefined.__read) || function (o, n) {\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n    if (!m) return o;\n    var i = m.call(o), r, ar = [], e;\n    try {\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n    }\n    catch (error) { e = { error: error }; }\n    finally {\n        try {\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\n        }\n        finally { if (e) throw e.error; }\n    }\n    return ar;\n};\nvar __spread$j = (undefined && undefined.__spread) || function () {\n    for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read$x(arguments[i]));\n    return ar;\n};\nvar __values$e = (undefined && undefined.__values) || function(o) {\n    var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n    if (m) return m.call(o);\n    if (o && typeof o.length === \"number\") return {\n        next: function () {\n            if (o && i >= o.length) o = void 0;\n            return { value: o && o[i++], done: !o };\n        }\n    };\n    throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nvar AreaSeriesLabel = /** @class */ (function (_super) {\n    __extends$25(AreaSeriesLabel, _super);\n    function AreaSeriesLabel() {\n        var _this = _super !== null && _super.apply(this, arguments) || this;\n        _this.formatter = undefined;\n        return _this;\n    }\n    __decorate$1s([\n        Validate(OPT_FUNCTION)\n    ], AreaSeriesLabel.prototype, \"formatter\", void 0);\n    return AreaSeriesLabel;\n}(Label$1));\nvar AreaSeriesTooltip = /** @class */ (function (_super) {\n    __extends$25(AreaSeriesTooltip, _super);\n    function AreaSeriesTooltip() {\n        var _this = _super !== null && _super.apply(this, arguments) || this;\n        _this.renderer = undefined;\n        _this.format = undefined;\n        return _this;\n    }\n    __decorate$1s([\n        Validate(OPT_FUNCTION)\n    ], AreaSeriesTooltip.prototype, \"renderer\", void 0);\n    __decorate$1s([\n        Validate(OPT_STRING)\n    ], AreaSeriesTooltip.prototype, \"format\", void 0);\n    return AreaSeriesTooltip;\n}(SeriesTooltip));\nvar AreaSeriesTag;\n(function (AreaSeriesTag) {\n    AreaSeriesTag[AreaSeriesTag[\"Fill\"] = 0] = \"Fill\";\n    AreaSeriesTag[AreaSeriesTag[\"Stroke\"] = 1] = \"Stroke\";\n    AreaSeriesTag[AreaSeriesTag[\"Marker\"] = 2] = \"Marker\";\n    AreaSeriesTag[AreaSeriesTag[\"Label\"] = 3] = \"Label\";\n})(AreaSeriesTag || (AreaSeriesTag = {}));\nvar AreaSeries = /** @class */ (function (_super) {\n    __extends$25(AreaSeries, _super);\n    function AreaSeries() {\n        var _this = _super.call(this, {\n            pathsPerSeries: 2,\n            pathsZIndexSubOrderOffset: [0, 1000],\n            hasMarkers: true,\n            renderLayerPerSubSeries: false,\n            directionKeys: {\n                x: ['xKey'],\n                y: ['yKeys'],\n            },\n        }) || this;\n        _this.tooltip = new AreaSeriesTooltip();\n        _this.marker = new CartesianSeriesMarker();\n        _this.label = new AreaSeriesLabel();\n        _this.fills = ['#c16068', '#a2bf8a', '#ebcc87', '#80a0c3', '#b58dae', '#85c0d1'];\n        _this.strokes = ['#874349', '#718661', '#a48f5f', '#5a7088', '#7f637a', '#5d8692'];\n        _this.fillOpacity = 1;\n        _this.strokeOpacity = 1;\n        _this.lineDash = [0];\n        _this.lineDashOffset = 0;\n        _this._xKey = '';\n        _this.xName = '';\n        _this._yKeys = [];\n        _this._visibles = [];\n        _this.yNames = [];\n        _this.strokeWidth = 2;\n        _this.shadow = undefined;\n        var _a = _this, marker = _a.marker, label = _a.label;\n        marker.enabled = false;\n        label.enabled = false;\n        return _this;\n    }\n    Object.defineProperty(AreaSeries.prototype, \"xKey\", {\n        get: function () {\n            return this._xKey;\n        },\n        set: function (value) {\n            this._xKey = value;\n            this.processedData = undefined;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(AreaSeries.prototype, \"yKeys\", {\n        get: function () {\n            return this._yKeys;\n        },\n        set: function (values) {\n            if (!areArrayItemsStrictlyEqual(this._yKeys, values)) {\n                this._yKeys = values;\n                this.processedData = undefined;\n                this.processSeriesItemEnabled();\n            }\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(AreaSeries.prototype, \"visibles\", {\n        get: function () {\n            return this._visibles;\n        },\n        set: function (visibles) {\n            this._visibles = visibles;\n            this.processSeriesItemEnabled();\n        },\n        enumerable: false,\n        configurable: true\n    });\n    AreaSeries.prototype.processSeriesItemEnabled = function () {\n        var _a = this, seriesItemEnabled = _a.seriesItemEnabled, _b = _a._visibles, visibles = _b === void 0 ? [] : _b;\n        seriesItemEnabled.clear();\n        this._yKeys.forEach(function (key, idx) { var _a; return seriesItemEnabled.set(key, (_a = visibles[idx]) !== null && _a !== void 0 ? _a : true); });\n    };\n    Object.defineProperty(AreaSeries.prototype, \"normalizedTo\", {\n        get: function () {\n            return this._normalizedTo;\n        },\n        set: function (value) {\n            var absValue = value ? Math.abs(value) : undefined;\n            if (this._normalizedTo !== absValue) {\n                this._normalizedTo = absValue;\n            }\n        },\n        enumerable: false,\n        configurable: true\n    });\n    AreaSeries.prototype.processData = function () {\n        return __awaiter$7(this, void 0, void 0, function () {\n            var _a, xKey, yKeys, seriesItemEnabled, xAxis, yAxis, normalizedTo, data, isContinuousX, isContinuousY, enabledYKeys, normaliseTo;\n            return __generator$7(this, function (_b) {\n                _a = this, xKey = _a.xKey, yKeys = _a.yKeys, seriesItemEnabled = _a.seriesItemEnabled, xAxis = _a.xAxis, yAxis = _a.yAxis, normalizedTo = _a.normalizedTo;\n                data = xKey && yKeys.length && this.data ? this.data : [];\n                isContinuousX = (xAxis === null || xAxis === void 0 ? void 0 : xAxis.scale) instanceof ContinuousScale;\n                isContinuousY = (yAxis === null || yAxis === void 0 ? void 0 : yAxis.scale) instanceof ContinuousScale;\n                enabledYKeys = __spread$j(seriesItemEnabled.entries()).filter(function (_a) {\n                    var _b = __read$x(_a, 2), enabled = _b[1];\n                    return enabled;\n                }).map(function (_a) {\n                    var _b = __read$x(_a, 1), yKey = _b[0];\n                    return yKey;\n                });\n                normaliseTo = normalizedTo && isFinite(normalizedTo) ? normalizedTo : undefined;\n                this.dataModel = new DataModel({\n                    props: __spread$j([\n                        keyProperty(xKey, isContinuousX)\n                    ], enabledYKeys.map(function (yKey) {\n                        return valueProperty(yKey, isContinuousY, {\n                            missingValue: NaN,\n                            invalidValue: undefined,\n                        });\n                    }), [\n                        sumProperties(enabledYKeys),\n                        SUM_VALUE_EXTENT,\n                    ]),\n                    groupByKeys: true,\n                    dataVisible: this.visible && enabledYKeys.length > 0,\n                    normaliseTo: normaliseTo,\n                });\n                this.processedData = this.dataModel.processData(data);\n                return [2 /*return*/];\n            });\n        });\n    };\n    AreaSeries.prototype.getDomain = function (direction) {\n        var _a = this, processedData = _a.processedData, xAxis = _a.xAxis, yAxis = _a.yAxis;\n        if (!processedData)\n            return [];\n        var _b = processedData, _c = __read$x(_b.defs.keys, 1), keyDef = _c[0], _d = _b.domain, _e = __read$x(_d.keys, 1), keys = _e[0], _f = __read$x(_d.values, 1), yExtent = _f[0], _g = _b.reduced, _h = SUM_VALUE_EXTENT.property, ySumExtent = (_g === void 0 ? {} : _g)[_h];\n        if (direction === ChartAxisDirection.X) {\n            if (keyDef.valueType === 'category') {\n                return keys;\n            }\n            return this.fixNumericExtent(extent$4(keys), xAxis);\n        }\n        else if (yAxis instanceof LogAxis || yAxis instanceof TimeAxis) {\n            return this.fixNumericExtent(yExtent, yAxis);\n        }\n        else {\n            return this.fixNumericExtent(ySumExtent, yAxis);\n        }\n    };\n    AreaSeries.prototype.createNodeData = function () {\n        return __awaiter$7(this, void 0, void 0, function () {\n            var _a, xAxis, yAxis, data, _b, groupedData, contexts, _c, yKeys, xKey, marker, label, fills, strokes, seriesId, xScale, yScale, continuousY, xOffset, xDataCount, cumulativePathValues, cumulativeMarkerValues, createPathCoordinates, createMarkerCoordinate;\n            var _this = this;\n            return __generator$7(this, function (_d) {\n                _a = this, xAxis = _a.xAxis, yAxis = _a.yAxis, data = _a.data, _b = _a.processedData, groupedData = (_b === void 0 ? {} : _b).data;\n                if (!xAxis || !yAxis || !data) {\n                    return [2 /*return*/, []];\n                }\n                contexts = [];\n                _c = this, yKeys = _c.yKeys, xKey = _c.xKey, marker = _c.marker, label = _c.label, fills = _c.fills, strokes = _c.strokes, seriesId = _c.id;\n                xScale = xAxis.scale;\n                yScale = yAxis.scale;\n                continuousY = yScale instanceof ContinuousScale;\n                xOffset = (xScale.bandwidth || 0) / 2;\n                xDataCount = data.length;\n                cumulativePathValues = new Array(xDataCount)\n                    .fill(null)\n                    .map(function () { return ({ left: 0, right: 0 }); });\n                cumulativeMarkerValues = new Array(xDataCount).fill(0);\n                createPathCoordinates = function (xDatum, yDatum, idx, side) {\n                    var x = xScale.convert(xDatum) + xOffset;\n                    var prevY = cumulativePathValues[idx][side];\n                    var currY = cumulativePathValues[idx][side] + yDatum;\n                    var prevYCoordinate = yScale.convert(prevY, { strict: false });\n                    var currYCoordinate = yScale.convert(currY, { strict: false });\n                    cumulativePathValues[idx][side] = currY;\n                    return [\n                        { x: x, y: currYCoordinate, size: marker.size },\n                        { x: x, y: prevYCoordinate, size: marker.size },\n                    ];\n                };\n                createMarkerCoordinate = function (xDatum, yDatum, idx, rawYDatum) {\n                    var currY;\n                    // if not normalized, the invalid data points will be processed as `undefined` in processData()\n                    // if normalized, the invalid data points will be processed as 0 rather than `undefined`\n                    // check if unprocessed datum is valid as we only want to show markers for valid points\n                    var normalized = _this.normalizedTo && isFinite(_this.normalizedTo);\n                    var normalizedAndValid = normalized && continuousY && isContinuous(rawYDatum);\n                    var valid = (!normalized && !isNaN(rawYDatum)) || normalizedAndValid;\n                    if (valid) {\n                        currY = cumulativeMarkerValues[idx] += yDatum;\n                    }\n                    var x = xScale.convert(xDatum) + xOffset;\n                    var y = yScale.convert(currY, { strict: false });\n                    return { x: x, y: y, size: marker.size };\n                };\n                yKeys.forEach(function (yKey, seriesIdx) {\n                    var _a;\n                    var yKeyDataIndex = (_a = _this.dataModel) === null || _a === void 0 ? void 0 : _a.resolveProcessedDataIndex(yKey);\n                    var labelSelectionData = [];\n                    var markerSelectionData = [];\n                    var strokeSelectionData = { itemId: yKey, points: [], yValues: [] };\n                    var fillSelectionData = { itemId: yKey, points: [] };\n                    contexts[seriesIdx] = {\n                        itemId: yKey,\n                        fillSelectionData: fillSelectionData,\n                        labelData: labelSelectionData,\n                        nodeData: markerSelectionData,\n                        strokeSelectionData: strokeSelectionData,\n                    };\n                    if (!yKeyDataIndex) {\n                        return;\n                    }\n                    var fillPoints = fillSelectionData.points;\n                    var fillPhantomPoints = [];\n                    var strokePoints = strokeSelectionData.points;\n                    var yValues = strokeSelectionData.yValues;\n                    var datumIdx = -1;\n                    groupedData === null || groupedData === void 0 ? void 0 : groupedData.forEach(function (datumGroup, dataIdx) {\n                        var _a = __read$x(datumGroup.keys, 1), xDatum = _a[0], datumArray = datumGroup.datum, valuesArray = datumGroup.values;\n                        valuesArray.forEach(function (values, valueIdx) {\n                            datumIdx++;\n                            var seriesDatum = datumArray[valueIdx];\n                            var rawYDatum = values[yKeyDataIndex.index];\n                            var yDatum = isNaN(rawYDatum) ? undefined : rawYDatum;\n                            var nextValuesSameGroup = valueIdx < valuesArray.length - 1;\n                            var nextDatumGroup = nextValuesSameGroup ? datumGroup : groupedData[dataIdx + 1];\n                            var nextXDatum = nextDatumGroup === null || nextDatumGroup === void 0 ? void 0 : nextDatumGroup.keys[0];\n                            var rawNextYIdx = nextValuesSameGroup ? valueIdx + 1 : 0;\n                            var rawNextYDatum = nextDatumGroup === null || nextDatumGroup === void 0 ? void 0 : nextDatumGroup.values[rawNextYIdx][yKeyDataIndex.index];\n                            var nextYDatum = isNaN(rawNextYDatum) ? undefined : rawNextYDatum;\n                            // marker data\n                            var point = createMarkerCoordinate(xDatum, +yDatum, datumIdx, seriesDatum[yKey]);\n                            if (marker) {\n                                markerSelectionData.push({\n                                    index: datumIdx,\n                                    series: _this,\n                                    itemId: yKey,\n                                    datum: seriesDatum,\n                                    nodeMidPoint: { x: point.x, y: point.y },\n                                    cumulativeValue: cumulativeMarkerValues[datumIdx],\n                                    yValue: yDatum,\n                                    yKey: yKey,\n                                    xKey: xKey,\n                                    point: point,\n                                    fill: fills[seriesIdx % fills.length],\n                                    stroke: strokes[seriesIdx % strokes.length],\n                                });\n                            }\n                            // label data\n                            var labelText;\n                            if (label.formatter) {\n                                labelText = label.formatter({ value: yDatum, seriesId: seriesId });\n                            }\n                            else {\n                                labelText = isNumber$4(yDatum) ? Number(yDatum).toFixed(2) : String(yDatum);\n                            }\n                            if (label) {\n                                labelSelectionData.push({\n                                    index: datumIdx,\n                                    itemId: yKey,\n                                    point: point,\n                                    label: labelText\n                                        ? {\n                                            text: labelText,\n                                            fontStyle: label.fontStyle,\n                                            fontWeight: label.fontWeight,\n                                            fontSize: label.fontSize,\n                                            fontFamily: label.fontFamily,\n                                            textAlign: 'center',\n                                            textBaseline: 'bottom',\n                                            fill: label.color,\n                                        }\n                                        : undefined,\n                                });\n                            }\n                            // fill data\n                            // Handle data in pairs of current and next x and y values\n                            var windowX = [xDatum, nextXDatum];\n                            var windowY = [yDatum, nextYDatum];\n                            if (windowX.some(function (v) { return v == undefined; })) {\n                                return;\n                            }\n                            if (windowY.some(function (v) { return v == undefined; })) {\n                                windowY[0] = 0;\n                                windowY[1] = 0;\n                            }\n                            var currCoordinates = createPathCoordinates(windowX[0], +windowY[0], datumIdx, 'right');\n                            fillPoints.push(currCoordinates[0]);\n                            fillPhantomPoints.push(currCoordinates[1]);\n                            var nextCoordinates = createPathCoordinates(windowX[1], +windowY[1], datumIdx, 'left');\n                            fillPoints.push(nextCoordinates[0]);\n                            fillPhantomPoints.push(nextCoordinates[1]);\n                            // stroke data\n                            strokePoints.push({ x: NaN, y: NaN }); // moveTo\n                            yValues.push(undefined);\n                            strokePoints.push(currCoordinates[0]);\n                            yValues.push(yDatum);\n                            if (nextYDatum !== undefined) {\n                                strokePoints.push(nextCoordinates[0]);\n                                yValues.push(yDatum);\n                            }\n                        });\n                    });\n                    for (var i = fillPhantomPoints.length - 1; i >= 0; i--) {\n                        fillPoints.push(fillPhantomPoints[i]);\n                    }\n                });\n                return [2 /*return*/, contexts];\n            });\n        });\n    };\n    AreaSeries.prototype.isPathOrSelectionDirty = function () {\n        return this.marker.isDirty();\n    };\n    AreaSeries.prototype.updatePaths = function (opts) {\n        return __awaiter$7(this, void 0, void 0, function () {\n            var _a, fillSelectionData, strokeSelectionData, _b, fill, stroke;\n            return __generator$7(this, function (_c) {\n                _a = opts.contextData, fillSelectionData = _a.fillSelectionData, strokeSelectionData = _a.strokeSelectionData, _b = __read$x(opts.paths, 2), fill = _b[0], stroke = _b[1];\n                fill.datum = fillSelectionData;\n                fill.tag = AreaSeriesTag.Fill;\n                fill.lineJoin = 'round';\n                fill.stroke = undefined;\n                fill.pointerEvents = PointerEvents.None;\n                stroke.datum = strokeSelectionData;\n                stroke.tag = AreaSeriesTag.Stroke;\n                stroke.fill = undefined;\n                stroke.lineJoin = stroke.lineCap = 'round';\n                stroke.pointerEvents = PointerEvents.None;\n                return [2 /*return*/];\n            });\n        });\n    };\n    AreaSeries.prototype.updatePathNodes = function (opts) {\n        return __awaiter$7(this, void 0, void 0, function () {\n            var _a, fill, stroke, seriesIdx, itemId, _b, strokes, fills, fillOpacity, strokeOpacity, strokeWidth, shadow, points, path, i, points_1, points_1_1, p, _c, points, yValues, moveTo_1, path, i, points_2, points_2_1, p;\n            var e_1, _d, e_2, _e;\n            return __generator$7(this, function (_f) {\n                _a = __read$x(opts.paths, 2), fill = _a[0], stroke = _a[1], seriesIdx = opts.seriesIdx, itemId = opts.itemId;\n                _b = this, strokes = _b.strokes, fills = _b.fills, fillOpacity = _b.fillOpacity, strokeOpacity = _b.strokeOpacity, strokeWidth = _b.strokeWidth, shadow = _b.shadow;\n                {\n                    points = fill.datum.points;\n                    fill.fill = fills[seriesIdx % fills.length];\n                    fill.fillOpacity = fillOpacity;\n                    fill.strokeOpacity = strokeOpacity;\n                    fill.strokeWidth = strokeWidth;\n                    fill.lineDash = this.lineDash;\n                    fill.lineDashOffset = this.lineDashOffset;\n                    fill.fillShadow = shadow;\n                    path = fill.path;\n                    path.clear({ trackChanges: true });\n                    i = 0;\n                    try {\n                        for (points_1 = __values$e(points), points_1_1 = points_1.next(); !points_1_1.done; points_1_1 = points_1.next()) {\n                            p = points_1_1.value;\n                            if (i++ > 0) {\n                                path.lineTo(p.x, p.y);\n                            }\n                            else {\n                                path.moveTo(p.x, p.y);\n                            }\n                        }\n                    }\n                    catch (e_1_1) { e_1 = { error: e_1_1 }; }\n                    finally {\n                        try {\n                            if (points_1_1 && !points_1_1.done && (_d = points_1.return)) _d.call(points_1);\n                        }\n                        finally { if (e_1) throw e_1.error; }\n                    }\n                    path.closePath();\n                    fill.checkPathDirty();\n                }\n                {\n                    _c = stroke.datum, points = _c.points, yValues = _c.yValues;\n                    moveTo_1 = true;\n                    stroke.stroke = strokes[seriesIdx % strokes.length];\n                    stroke.strokeWidth = this.getStrokeWidth(this.strokeWidth, { itemId: itemId });\n                    stroke.strokeOpacity = strokeOpacity;\n                    stroke.lineDash = this.lineDash;\n                    stroke.lineDashOffset = this.lineDashOffset;\n                    path = stroke.path;\n                    path.clear({ trackChanges: true });\n                    i = 0;\n                    try {\n                        for (points_2 = __values$e(points), points_2_1 = points_2.next(); !points_2_1.done; points_2_1 = points_2.next()) {\n                            p = points_2_1.value;\n                            if (yValues[i++] === undefined) {\n                                moveTo_1 = true;\n                            }\n                            else if (moveTo_1) {\n                                path.moveTo(p.x, p.y);\n                                moveTo_1 = false;\n                            }\n                            else {\n                                path.lineTo(p.x, p.y);\n                            }\n                        }\n                    }\n                    catch (e_2_1) { e_2 = { error: e_2_1 }; }\n                    finally {\n                        try {\n                            if (points_2_1 && !points_2_1.done && (_e = points_2.return)) _e.call(points_2);\n                        }\n                        finally { if (e_2) throw e_2.error; }\n                    }\n                    stroke.checkPathDirty();\n                }\n                return [2 /*return*/];\n            });\n        });\n    };\n    AreaSeries.prototype.markerFactory = function () {\n        var shape = this.marker.shape;\n        var MarkerShape = getMarker$1(shape);\n        return new MarkerShape();\n    };\n    AreaSeries.prototype.updateMarkerSelection = function (opts) {\n        return __awaiter$7(this, void 0, void 0, function () {\n            var nodeData, markerSelection, enabled, data;\n            return __generator$7(this, function (_a) {\n                nodeData = opts.nodeData, markerSelection = opts.markerSelection;\n                enabled = this.marker.enabled;\n                data = enabled && nodeData ? nodeData : [];\n                if (this.marker.isDirty()) {\n                    markerSelection.clear();\n                }\n                return [2 /*return*/, markerSelection.update(data, function (marker) {\n                        marker.tag = AreaSeriesTag.Marker;\n                    })];\n            });\n        });\n    };\n    AreaSeries.prototype.updateMarkerNodes = function (opts) {\n        return __awaiter$7(this, void 0, void 0, function () {\n            var markerSelection, isDatumHighlighted, _a, seriesId, xKey, marker, seriesItemEnabled, yKeys, fills, strokes, seriesFillOpacity, _b, markerFillOpacity, strokeOpacity, _c, highlightedFill, _d, highlightFillOpacity, highlightedStroke, highlightedDatumStrokeWidth, size, formatter, markerStrokeWidth, customMarker;\n            return __generator$7(this, function (_e) {\n                markerSelection = opts.markerSelection, isDatumHighlighted = opts.isHighlight;\n                _a = this, seriesId = _a.id, xKey = _a.xKey, marker = _a.marker, seriesItemEnabled = _a.seriesItemEnabled, yKeys = _a.yKeys, fills = _a.fills, strokes = _a.strokes, seriesFillOpacity = _a.fillOpacity, _b = _a.marker.fillOpacity, markerFillOpacity = _b === void 0 ? seriesFillOpacity : _b, strokeOpacity = _a.strokeOpacity, _c = _a.highlightStyle.item, highlightedFill = _c.fill, _d = _c.fillOpacity, highlightFillOpacity = _d === void 0 ? markerFillOpacity : _d, highlightedStroke = _c.stroke, highlightedDatumStrokeWidth = _c.strokeWidth;\n                size = marker.size, formatter = marker.formatter;\n                markerStrokeWidth = marker.strokeWidth !== undefined ? marker.strokeWidth : this.strokeWidth;\n                customMarker = typeof marker.shape === 'function';\n                markerSelection.each(function (node, datum) {\n                    var _a, _b;\n                    var yKeyIndex = yKeys.indexOf(datum.yKey);\n                    var fill = isDatumHighlighted && highlightedFill !== undefined\n                        ? highlightedFill\n                        : marker.fill || fills[yKeyIndex % fills.length];\n                    var fillOpacity = isDatumHighlighted ? highlightFillOpacity : markerFillOpacity;\n                    var stroke = isDatumHighlighted && highlightedStroke !== undefined\n                        ? highlightedStroke\n                        : marker.stroke || strokes[yKeyIndex % fills.length];\n                    var strokeWidth = isDatumHighlighted && highlightedDatumStrokeWidth !== undefined\n                        ? highlightedDatumStrokeWidth\n                        : markerStrokeWidth;\n                    var format = undefined;\n                    if (formatter) {\n                        format = formatter({\n                            datum: datum.datum,\n                            xKey: xKey,\n                            yKey: datum.yKey,\n                            fill: fill,\n                            stroke: stroke,\n                            strokeWidth: strokeWidth,\n                            size: size,\n                            highlighted: isDatumHighlighted,\n                            seriesId: seriesId,\n                        });\n                    }\n                    node.fill = (format && format.fill) || fill;\n                    node.stroke = (format && format.stroke) || stroke;\n                    node.strokeWidth = format && format.strokeWidth !== undefined ? format.strokeWidth : strokeWidth;\n                    node.fillOpacity = fillOpacity !== null && fillOpacity !== void 0 ? fillOpacity : 1;\n                    node.strokeOpacity = (_b = (_a = marker.strokeOpacity) !== null && _a !== void 0 ? _a : strokeOpacity) !== null && _b !== void 0 ? _b : 1;\n                    node.size = format && format.size !== undefined ? format.size : size;\n                    node.translationX = datum.point.x;\n                    node.translationY = datum.point.y;\n                    node.visible =\n                        node.size > 0 && !!seriesItemEnabled.get(datum.yKey) && !isNaN(datum.point.x) && !isNaN(datum.point.y);\n                    if (!customMarker || node.dirtyPath) {\n                        return;\n                    }\n                    // Only for cutom marker shapes\n                    node.path.clear({ trackChanges: true });\n                    node.updatePath();\n                    node.checkPathDirty();\n                });\n                if (!isDatumHighlighted) {\n                    this.marker.markClean();\n                }\n                return [2 /*return*/];\n            });\n        });\n    };\n    AreaSeries.prototype.updateLabelSelection = function (opts) {\n        return __awaiter$7(this, void 0, void 0, function () {\n            var labelData, labelSelection;\n            return __generator$7(this, function (_a) {\n                labelData = opts.labelData, labelSelection = opts.labelSelection;\n                return [2 /*return*/, labelSelection.update(labelData, function (text) {\n                        text.tag = AreaSeriesTag.Label;\n                    })];\n            });\n        });\n    };\n    AreaSeries.prototype.updateLabelNodes = function (opts) {\n        return __awaiter$7(this, void 0, void 0, function () {\n            var labelSelection, _a, labelEnabled, fontStyle, fontWeight, fontSize, fontFamily, color;\n            return __generator$7(this, function (_b) {\n                labelSelection = opts.labelSelection;\n                _a = this.label, labelEnabled = _a.enabled, fontStyle = _a.fontStyle, fontWeight = _a.fontWeight, fontSize = _a.fontSize, fontFamily = _a.fontFamily, color = _a.color;\n                labelSelection.each(function (text, datum) {\n                    var point = datum.point, label = datum.label;\n                    if (label && labelEnabled) {\n                        text.fontStyle = fontStyle;\n                        text.fontWeight = fontWeight;\n                        text.fontSize = fontSize;\n                        text.fontFamily = fontFamily;\n                        text.textAlign = label.textAlign;\n                        text.textBaseline = label.textBaseline;\n                        text.text = label.text;\n                        text.x = point.x;\n                        text.y = point.y - 10;\n                        text.fill = color;\n                        text.visible = true;\n                    }\n                    else {\n                        text.visible = false;\n                    }\n                });\n                return [2 /*return*/];\n            });\n        });\n    };\n    AreaSeries.prototype.getNodeClickEvent = function (event, datum) {\n        return new CartesianSeriesNodeClickEvent(this.xKey, datum.yKey, event, datum, this);\n    };\n    AreaSeries.prototype.getNodeDoubleClickEvent = function (event, datum) {\n        return new CartesianSeriesNodeDoubleClickEvent(this.xKey, datum.yKey, event, datum, this);\n    };\n    AreaSeries.prototype.getTooltipHtml = function (nodeDatum) {\n        var _a, _b, _c;\n        var _d = this, xKey = _d.xKey, seriesId = _d.id;\n        var yKey = nodeDatum.yKey;\n        var yKeyDataIndex = (_a = this.dataModel) === null || _a === void 0 ? void 0 : _a.resolveProcessedDataIndex(yKey);\n        if (!(xKey && yKey) || !yKeyDataIndex) {\n            return '';\n        }\n        var datum = nodeDatum.datum;\n        var xValue = datum[xKey];\n        var yValue = datum[yKey];\n        var _e = this, xAxis = _e.xAxis, yAxis = _e.yAxis, yKeys = _e.yKeys;\n        if (!(xAxis && yAxis && isNumber$4(yValue)) || !yKeyDataIndex) {\n            return '';\n        }\n        var _f = this, xName = _f.xName, yNames = _f.yNames, fills = _f.fills, strokes = _f.strokes, tooltip = _f.tooltip, marker = _f.marker;\n        var size = marker.size, markerFormatter = marker.formatter, markerStrokeWidth = marker.strokeWidth, markerFill = marker.fill, markerStroke = marker.stroke;\n        var xString = xAxis.formatDatum(xValue);\n        var yString = yAxis.formatDatum(yValue);\n        var yKeyIndex = yKeys.indexOf(yKey);\n        var processedYValue = (_c = (_b = this.processedData) === null || _b === void 0 ? void 0 : _b.data[nodeDatum.index]) === null || _c === void 0 ? void 0 : _c.values[0][yKeyDataIndex === null || yKeyDataIndex === void 0 ? void 0 : yKeyDataIndex.index];\n        var yName = yNames[yKeyIndex];\n        var title = sanitizeHtml(yName);\n        var content = sanitizeHtml(xString + ': ' + yString);\n        var strokeWidth = markerStrokeWidth !== undefined ? markerStrokeWidth : this.strokeWidth;\n        var fill = markerFill || fills[yKeyIndex % fills.length];\n        var stroke = markerStroke || strokes[yKeyIndex % fills.length];\n        var format = undefined;\n        if (markerFormatter) {\n            format = markerFormatter({\n                datum: datum,\n                xKey: xKey,\n                yKey: yKey,\n                fill: fill,\n                stroke: stroke,\n                strokeWidth: strokeWidth,\n                size: size,\n                highlighted: false,\n                seriesId: seriesId,\n            });\n        }\n        var color = (format && format.fill) || fill;\n        var defaults = {\n            title: title,\n            backgroundColor: color,\n            content: content,\n        };\n        var tooltipRenderer = tooltip.renderer, tooltipFormat = tooltip.format;\n        if (tooltipFormat || tooltipRenderer) {\n            var params = {\n                datum: datum,\n                xKey: xKey,\n                xName: xName,\n                xValue: xValue,\n                yKey: yKey,\n                yValue: yValue,\n                processedYValue: processedYValue,\n                yName: yName,\n                color: color,\n                title: title,\n                seriesId: seriesId,\n            };\n            if (tooltipFormat) {\n                return toTooltipHtml$1({\n                    content: interpolate(tooltipFormat, params),\n                }, defaults);\n            }\n            if (tooltipRenderer) {\n                return toTooltipHtml$1(tooltipRenderer(params), defaults);\n            }\n        }\n        return toTooltipHtml$1(defaults);\n    };\n    AreaSeries.prototype.getLegendData = function () {\n        var _a, _b;\n        var _c = this, data = _c.data, id = _c.id, xKey = _c.xKey, yKeys = _c.yKeys, yNames = _c.yNames, seriesItemEnabled = _c.seriesItemEnabled, marker = _c.marker, fills = _c.fills, strokes = _c.strokes, fillOpacity = _c.fillOpacity, strokeOpacity = _c.strokeOpacity;\n        if (!data || !data.length || !xKey || !yKeys.length) {\n            return [];\n        }\n        var legendData = [];\n        // Area stacks should be listed in the legend in reverse order, for symmetry with the\n        // vertical stack display order.\n        for (var index = yKeys.length - 1; index >= 0; index--) {\n            var yKey = yKeys[index];\n            legendData.push({\n                id: id,\n                itemId: yKey,\n                seriesId: id,\n                enabled: seriesItemEnabled.get(yKey) || false,\n                label: {\n                    text: yNames[index] || yKeys[index],\n                },\n                marker: {\n                    shape: marker.shape,\n                    fill: marker.fill || fills[index % fills.length],\n                    stroke: marker.stroke || strokes[index % strokes.length],\n                    fillOpacity: (_a = marker.fillOpacity) !== null && _a !== void 0 ? _a : fillOpacity,\n                    strokeOpacity: (_b = marker.strokeOpacity) !== null && _b !== void 0 ? _b : strokeOpacity,\n                },\n            });\n        }\n        return legendData;\n    };\n    AreaSeries.prototype.isLabelEnabled = function () {\n        return this.label.enabled;\n    };\n    AreaSeries.className = 'AreaSeries';\n    AreaSeries.type = 'area';\n    __decorate$1s([\n        Validate(COLOR_STRING_ARRAY)\n    ], AreaSeries.prototype, \"fills\", void 0);\n    __decorate$1s([\n        Validate(COLOR_STRING_ARRAY)\n    ], AreaSeries.prototype, \"strokes\", void 0);\n    __decorate$1s([\n        Validate(NUMBER(0, 1))\n    ], AreaSeries.prototype, \"fillOpacity\", void 0);\n    __decorate$1s([\n        Validate(NUMBER(0, 1))\n    ], AreaSeries.prototype, \"strokeOpacity\", void 0);\n    __decorate$1s([\n        Validate(OPT_LINE_DASH)\n    ], AreaSeries.prototype, \"lineDash\", void 0);\n    __decorate$1s([\n        Validate(NUMBER(0))\n    ], AreaSeries.prototype, \"lineDashOffset\", void 0);\n    __decorate$1s([\n        Validate(STRING)\n    ], AreaSeries.prototype, \"_xKey\", void 0);\n    __decorate$1s([\n        Validate(STRING)\n    ], AreaSeries.prototype, \"xName\", void 0);\n    __decorate$1s([\n        Validate(STRING_ARRAY)\n    ], AreaSeries.prototype, \"_yKeys\", void 0);\n    __decorate$1s([\n        Validate(BOOLEAN_ARRAY)\n    ], AreaSeries.prototype, \"_visibles\", void 0);\n    __decorate$1s([\n        Validate(STRING_ARRAY)\n    ], AreaSeries.prototype, \"yNames\", void 0);\n    __decorate$1s([\n        Validate(OPT_NUMBER())\n    ], AreaSeries.prototype, \"_normalizedTo\", void 0);\n    __decorate$1s([\n        Validate(NUMBER(0))\n    ], AreaSeries.prototype, \"strokeWidth\", void 0);\n    return AreaSeries;\n}(CartesianSeries));\n\nvar __extends$24 = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$1r = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar Rect = /** @class */ (function (_super) {\n    __extends$24(Rect, _super);\n    function Rect() {\n        var _this = _super !== null && _super.apply(this, arguments) || this;\n        _this.borderPath = new Path2D();\n        _this.x = 0;\n        _this.y = 0;\n        _this.width = 10;\n        _this.height = 10;\n        _this.radius = 0;\n        /**\n         * If `true`, the rect is aligned to the pixel grid for crisp looking lines.\n         * Animated rects may not look nice with this option enabled, for example\n         * when a rect is translated by a sub-pixel value on each frame.\n         */\n        _this.crisp = false;\n        _this.lastUpdatePathStrokeWidth = Shape.defaultStyles.strokeWidth;\n        _this.effectiveStrokeWidth = Shape.defaultStyles.strokeWidth;\n        /**\n         * When the rectangle's width or height is less than a pixel\n         * and crisp mode is on, the rectangle will still fit into the pixel,\n         * but will be less opaque to make an effect of holding less space.\n         */\n        _this.microPixelEffectOpacity = 1;\n        return _this;\n    }\n    Rect.prototype.isDirtyPath = function () {\n        var _a;\n        if (this.lastUpdatePathStrokeWidth !== this.strokeWidth) {\n            return true;\n        }\n        if (this.path.isDirty() || this.borderPath.isDirty() || ((_a = this.clipPath) === null || _a === void 0 ? void 0 : _a.isDirty())) {\n            return true;\n        }\n        return false;\n    };\n    Rect.prototype.updatePath = function () {\n        var _a, _b, _c;\n        var _d = this, path = _d.path, borderPath = _d.borderPath, crisp = _d.crisp;\n        var _e = this, x = _e.x, y = _e.y, w = _e.width, h = _e.height, strokeWidth = _e.strokeWidth;\n        var pixelRatio = (_b = (_a = this.layerManager) === null || _a === void 0 ? void 0 : _a.canvas.pixelRatio) !== null && _b !== void 0 ? _b : 1;\n        var pixelSize = 1 / pixelRatio;\n        var microPixelEffectOpacity = 1;\n        path.clear({ trackChanges: true });\n        borderPath.clear({ trackChanges: true });\n        if (crisp) {\n            if (w <= pixelSize) {\n                microPixelEffectOpacity *= w / pixelSize;\n            }\n            if (h <= pixelSize) {\n                microPixelEffectOpacity *= h / pixelSize;\n            }\n            w = this.align(x, w);\n            h = this.align(y, h);\n            x = this.align(x);\n            y = this.align(y);\n        }\n        if (strokeWidth) {\n            if (w < pixelSize) {\n                // Too narrow, draw a vertical stroke\n                var lx = x + pixelSize / 2;\n                borderPath.moveTo(lx, y);\n                borderPath.lineTo(lx, y + h);\n                strokeWidth = pixelSize;\n                this.borderClipPath = undefined;\n            }\n            else if (h < pixelSize) {\n                // Too narrow, draw a horizontal stroke\n                var ly = y + pixelSize / 2;\n                borderPath.moveTo(x, ly);\n                borderPath.lineTo(x + w, ly);\n                strokeWidth = pixelSize;\n                this.borderClipPath = undefined;\n            }\n            else if (strokeWidth < w && strokeWidth < h) {\n                var halfStrokeWidth = strokeWidth / 2;\n                x += halfStrokeWidth;\n                y += halfStrokeWidth;\n                w -= strokeWidth;\n                h -= strokeWidth;\n                // Clipping not needed in this case; fill to center of stroke.\n                this.borderClipPath = undefined;\n                path.rect(x, y, w, h);\n                borderPath.rect(x, y, w, h);\n            }\n            else {\n                // Skip the fill and just render the stroke.\n                this.borderClipPath = (_c = this.borderClipPath) !== null && _c !== void 0 ? _c : new Path2D();\n                this.borderClipPath.clear({ trackChanges: true });\n                this.borderClipPath.rect(x, y, w, h);\n                borderPath.rect(x, y, w, h);\n            }\n        }\n        else {\n            // No borderPath needed, and thus no clipPath needed either. Fill to full extent of\n            // Rect.\n            this.borderClipPath = undefined;\n            path.rect(x, y, w, h);\n        }\n        this.effectiveStrokeWidth = strokeWidth;\n        this.lastUpdatePathStrokeWidth = strokeWidth;\n        this.microPixelEffectOpacity = microPixelEffectOpacity;\n    };\n    Rect.prototype.computeBBox = function () {\n        var _a = this, x = _a.x, y = _a.y, width = _a.width, height = _a.height;\n        return new BBox(x, y, width, height);\n    };\n    Rect.prototype.isPointInPath = function (x, y) {\n        var point = this.transformPoint(x, y);\n        var bbox = this.computeBBox();\n        return bbox.containsPoint(point.x, point.y);\n    };\n    Rect.prototype.applyFillAlpha = function (ctx) {\n        var _a = this, fillOpacity = _a.fillOpacity, microPixelEffectOpacity = _a.microPixelEffectOpacity, opacity = _a.opacity;\n        ctx.globalAlpha = opacity * fillOpacity * microPixelEffectOpacity;\n    };\n    Rect.prototype.renderStroke = function (ctx) {\n        var _a = this, stroke = _a.stroke, effectiveStrokeWidth = _a.effectiveStrokeWidth, borderPath = _a.borderPath, borderClipPath = _a.borderClipPath, opacity = _a.opacity, microPixelEffectOpacity = _a.microPixelEffectOpacity;\n        var borderActive = !!stroke && !!effectiveStrokeWidth;\n        if (borderActive) {\n            var _b = this, strokeOpacity = _b.strokeOpacity, lineDash = _b.lineDash, lineDashOffset = _b.lineDashOffset, lineCap = _b.lineCap, lineJoin = _b.lineJoin;\n            if (borderClipPath) {\n                // strokeWidth is larger than width or height, so use clipping to render correctly.\n                // This is the simplest way to achieve the correct rendering due to nuances with ~0\n                // width/height lines in Canvas operations.\n                borderClipPath.draw(ctx);\n                ctx.clip();\n            }\n            borderPath.draw(ctx);\n            var globalAlpha = ctx.globalAlpha;\n            ctx.strokeStyle = stroke;\n            ctx.globalAlpha = globalAlpha * opacity * strokeOpacity * microPixelEffectOpacity;\n            ctx.lineWidth = effectiveStrokeWidth;\n            if (lineDash) {\n                ctx.setLineDash(lineDash);\n            }\n            if (lineDashOffset) {\n                ctx.lineDashOffset = lineDashOffset;\n            }\n            if (lineCap) {\n                ctx.lineCap = lineCap;\n            }\n            if (lineJoin) {\n                ctx.lineJoin = lineJoin;\n            }\n            ctx.stroke();\n            ctx.globalAlpha = globalAlpha;\n        }\n    };\n    Rect.className = 'Rect';\n    __decorate$1r([\n        ScenePathChangeDetection()\n    ], Rect.prototype, \"x\", void 0);\n    __decorate$1r([\n        ScenePathChangeDetection()\n    ], Rect.prototype, \"y\", void 0);\n    __decorate$1r([\n        ScenePathChangeDetection()\n    ], Rect.prototype, \"width\", void 0);\n    __decorate$1r([\n        ScenePathChangeDetection()\n    ], Rect.prototype, \"height\", void 0);\n    __decorate$1r([\n        ScenePathChangeDetection()\n    ], Rect.prototype, \"radius\", void 0);\n    __decorate$1r([\n        ScenePathChangeDetection()\n    ], Rect.prototype, \"crisp\", void 0);\n    return Rect;\n}(Path));\n\nvar __extends$23 = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$1q = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __awaiter$6 = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {\n    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n    return new (P || (P = Promise))(function (resolve, reject) {\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\n    });\n};\nvar __generator$6 = (undefined && undefined.__generator) || function (thisArg, body) {\n    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n    return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n    function verb(n) { return function (v) { return step([n, v]); }; }\n    function step(op) {\n        if (f) throw new TypeError(\"Generator is already executing.\");\n        while (_) try {\n            if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n            if (y = 0, t) op = [op[0] & 2, t.value];\n            switch (op[0]) {\n                case 0: case 1: t = op; break;\n                case 4: _.label++; return { value: op[1], done: false };\n                case 5: _.label++; y = op[1]; op = [0]; continue;\n                case 7: op = _.ops.pop(); _.trys.pop(); continue;\n                default:\n                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n                    if (t[2]) _.ops.pop();\n                    _.trys.pop(); continue;\n            }\n            op = body.call(thisArg, _);\n        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n    }\n};\nvar __read$w = (undefined && undefined.__read) || function (o, n) {\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n    if (!m) return o;\n    var i = m.call(o), r, ar = [], e;\n    try {\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n    }\n    catch (error) { e = { error: error }; }\n    finally {\n        try {\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\n        }\n        finally { if (e) throw e.error; }\n    }\n    return ar;\n};\nvar __spread$i = (undefined && undefined.__spread) || function () {\n    for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read$w(arguments[i]));\n    return ar;\n};\nvar BAR_LABEL_PLACEMENTS = ['inside', 'outside'];\nvar OPT_BAR_LABEL_PLACEMENT = function (v, ctx) {\n    return OPTIONAL(v, ctx, function (v) { return BAR_LABEL_PLACEMENTS.includes(v); });\n};\nvar BarSeriesNodeTag;\n(function (BarSeriesNodeTag) {\n    BarSeriesNodeTag[BarSeriesNodeTag[\"Bar\"] = 0] = \"Bar\";\n    BarSeriesNodeTag[BarSeriesNodeTag[\"Label\"] = 1] = \"Label\";\n})(BarSeriesNodeTag || (BarSeriesNodeTag = {}));\nvar BarSeriesLabel = /** @class */ (function (_super) {\n    __extends$23(BarSeriesLabel, _super);\n    function BarSeriesLabel() {\n        var _this = _super !== null && _super.apply(this, arguments) || this;\n        _this.formatter = undefined;\n        _this.placement = 'inside';\n        return _this;\n    }\n    __decorate$1q([\n        Validate(OPT_FUNCTION)\n    ], BarSeriesLabel.prototype, \"formatter\", void 0);\n    __decorate$1q([\n        Validate(OPT_BAR_LABEL_PLACEMENT)\n    ], BarSeriesLabel.prototype, \"placement\", void 0);\n    return BarSeriesLabel;\n}(Label$1));\nvar BarSeriesTooltip = /** @class */ (function (_super) {\n    __extends$23(BarSeriesTooltip, _super);\n    function BarSeriesTooltip() {\n        var _this = _super !== null && _super.apply(this, arguments) || this;\n        _this.renderer = undefined;\n        return _this;\n    }\n    __decorate$1q([\n        Validate(OPT_FUNCTION)\n    ], BarSeriesTooltip.prototype, \"renderer\", void 0);\n    return BarSeriesTooltip;\n}(SeriesTooltip));\nfunction is2dArray$1(array) {\n    return array.length > 0 && Array.isArray(array[0]);\n}\nvar BarSeries = /** @class */ (function (_super) {\n    __extends$23(BarSeries, _super);\n    function BarSeries() {\n        var _a;\n        var _this = _super.call(this, {\n            pickModes: [SeriesNodePickMode.EXACT_SHAPE_MATCH],\n            pathsPerSeries: 0,\n            directionKeys: (_a = {},\n                _a[ChartAxisDirection.X] = ['xKey'],\n                _a[ChartAxisDirection.Y] = ['yKeys'],\n                _a),\n        }) || this;\n        _this.label = new BarSeriesLabel();\n        _this.tooltip = new BarSeriesTooltip();\n        _this.flipXY = false;\n        _this.fills = ['#c16068', '#a2bf8a', '#ebcc87', '#80a0c3', '#b58dae', '#85c0d1'];\n        _this.strokes = ['#874349', '#718661', '#a48f5f', '#5a7088', '#7f637a', '#5d8692'];\n        _this.fillOpacity = 1;\n        _this.strokeOpacity = 1;\n        _this.lineDash = [0];\n        _this.lineDashOffset = 0;\n        _this.formatter = undefined;\n        /**\n         * Used to get the position of bars within each group.\n         */\n        _this.groupScale = new BandScale$5();\n        _this._xKey = '';\n        _this.xName = '';\n        _this.cumYKeyCount = [];\n        _this.flatYKeys = undefined; // only set when a user used a flat array for yKeys\n        _this.hideInLegend = [];\n        _this.yKeys = [];\n        _this.yKeysCache = [];\n        _this.visibles = [];\n        _this._grouped = false;\n        _this.stackGroups = {};\n        /**\n         * A map of `yKeys` to their names (used in legends and tooltips).\n         * For example, if a key is `product_name` it's name can be a more presentable `Product Name`.\n         */\n        _this.yNames = {};\n        _this.strokeWidth = 1;\n        _this.shadow = undefined;\n        _this.smallestDataInterval = undefined;\n        _this.label.enabled = false;\n        return _this;\n    }\n    BarSeries.prototype.resolveKeyDirection = function (direction) {\n        return this.flipXY ? flipChartAxisDirection(direction) : direction;\n    };\n    Object.defineProperty(BarSeries.prototype, \"xKey\", {\n        get: function () {\n            return this._xKey;\n        },\n        set: function (value) {\n            this._xKey = value;\n            this.processedData = undefined;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    BarSeries.prototype.processYKeys = function () {\n        var _this = this;\n        var yKeys = this.yKeys;\n        var flatYKeys = undefined;\n        // Convert from flat y-keys to grouped y-keys.\n        if (!is2dArray$1(yKeys)) {\n            flatYKeys = yKeys;\n            yKeys = this.grouped ? flatYKeys.map(function (k) { return [k]; }) : [flatYKeys];\n        }\n        var stackGroups = Object.values(this.stackGroups);\n        if (stackGroups.length > 0) {\n            var flattenKeys = function (keys) { return keys.reduce(function (res, k) { return res.concat(k); }, []); };\n            // Create a stack for items without a group\n            var flatKeys_1 = flattenKeys(yKeys);\n            var keysInStacks_1 = new Set(flattenKeys(stackGroups));\n            var ungroupedKeys = flatKeys_1.filter(function (k) { return !keysInStacks_1.has(k); });\n            yKeys = stackGroups.map(function (keys) { return keys; });\n            if (ungroupedKeys.length > 0) {\n                yKeys.push(ungroupedKeys);\n            }\n            // Preserve the order of colours and other properties\n            var indexMap = function (items) {\n                return items.reduce(function (map, key, index) { return map.set(key, index); }, new Map());\n            };\n            var newKeys = flattenKeys(yKeys);\n            var newKeysIndices_1 = indexMap(newKeys);\n            var sort = function (items) {\n                var result = Array.from({ length: items.length });\n                items.forEach(function (item, index) {\n                    var key = flatKeys_1[index];\n                    var newIndex = newKeysIndices_1.get(key);\n                    result[newIndex] = item;\n                });\n                return result;\n            };\n            this.fills = sort(this.fills);\n            this.strokes = sort(this.strokes);\n            this.visibles = sort(this.visibles);\n        }\n        if (!areArrayItemsStrictlyEqual(this.yKeysCache, yKeys)) {\n            this.flatYKeys = flatYKeys ? flatYKeys : undefined;\n            this.yKeys = yKeys;\n            var prevYKeyCount_1 = 0;\n            this.cumYKeyCount = [];\n            var visibleStacks_1 = [];\n            yKeys.forEach(function (stack, index) {\n                if (stack.length > 0) {\n                    visibleStacks_1.push(String(index));\n                }\n                _this.cumYKeyCount.push(prevYKeyCount_1);\n                prevYKeyCount_1 += stack.length;\n            });\n            this.processSeriesItemEnabled();\n            var groupScale = this.groupScale;\n            groupScale.domain = visibleStacks_1;\n        }\n        this.yKeysCache = yKeys;\n    };\n    BarSeries.prototype.processSeriesItemEnabled = function () {\n        var seriesItemEnabled = this.seriesItemEnabled;\n        var flattenFn = function (r, n) { return r.concat.apply(r, __spread$i((Array.isArray(n) ? n : [n]))); };\n        var visibles = this.visibles.reduce(flattenFn, []);\n        seriesItemEnabled.clear();\n        var visiblesIdx = 0;\n        this.yKeys.forEach(function (stack) {\n            stack.forEach(function (yKey) { var _a; return seriesItemEnabled.set(yKey, (_a = visibles[visiblesIdx++]) !== null && _a !== void 0 ? _a : true); });\n        });\n    };\n    Object.defineProperty(BarSeries.prototype, \"grouped\", {\n        get: function () {\n            return this._grouped;\n        },\n        set: function (value) {\n            this._grouped = value;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    BarSeries.prototype.getStackGroup = function (yKey) {\n        var _a;\n        var stackGroups = this.stackGroups;\n        return (_a = Object.entries(stackGroups).find(function (_a) {\n            var _b = __read$w(_a, 2); _b[0]; var keys = _b[1];\n            return keys.includes(yKey);\n        })) === null || _a === void 0 ? void 0 : _a[0];\n    };\n    BarSeries.prototype.processYNames = function () {\n        var values = this.yNames;\n        if (Array.isArray(values) && this.flatYKeys) {\n            var map_1 = {};\n            this.flatYKeys.forEach(function (k, i) {\n                map_1[k] = values[i];\n            });\n            this.yNames = map_1;\n        }\n    };\n    Object.defineProperty(BarSeries.prototype, \"normalizedTo\", {\n        get: function () {\n            return this._normalizedTo;\n        },\n        set: function (value) {\n            var absValue = value ? Math.abs(value) : undefined;\n            this._normalizedTo = absValue;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    BarSeries.prototype.processData = function () {\n        var _a, _b, _c, _d, _e;\n        return __awaiter$6(this, void 0, void 0, function () {\n            var _f, xKey, seriesItemEnabled, normalizedTo, _g, data, isContinuousX, isContinuousY, activeSeriesItems, activeStacks, normaliseTo;\n            return __generator$6(this, function (_h) {\n                this.processYKeys();\n                this.processYNames();\n                _f = this, xKey = _f.xKey, seriesItemEnabled = _f.seriesItemEnabled, normalizedTo = _f.normalizedTo, _g = _f.data, data = _g === void 0 ? [] : _g;\n                isContinuousX = ((_a = this.getCategoryAxis()) === null || _a === void 0 ? void 0 : _a.scale) instanceof ContinuousScale;\n                isContinuousY = ((_b = this.getValueAxis()) === null || _b === void 0 ? void 0 : _b.scale) instanceof ContinuousScale;\n                activeSeriesItems = __spread$i(seriesItemEnabled.entries()).filter(function (_a) {\n                    var _b = __read$w(_a, 2), enabled = _b[1];\n                    return enabled;\n                })\n                    .map(function (_a) {\n                    var _b = __read$w(_a, 1), yKey = _b[0];\n                    return yKey;\n                });\n                activeStacks = this.yKeys\n                    .map(function (stack) { return stack.filter(function (key) { return seriesItemEnabled.get(key); }); })\n                    .filter(function (stack) { return stack.length > 0; });\n                normaliseTo = normalizedTo && isFinite(normalizedTo) ? normalizedTo : undefined;\n                this.dataModel = new DataModel({\n                    props: __spread$i([\n                        keyProperty(xKey, isContinuousX)\n                    ], activeSeriesItems.map(function (yKey) { return valueProperty(yKey, isContinuousY, { invalidValue: null }); }), activeStacks.map(function (stack) { return sumProperties(stack); }), (isContinuousX ? [SMALLEST_KEY_INTERVAL] : []), [\n                        SUM_VALUE_EXTENT,\n                    ]),\n                    groupByKeys: true,\n                    dataVisible: this.visible && activeSeriesItems.length > 0,\n                    normaliseTo: normaliseTo,\n                });\n                this.processedData = this.dataModel.processData(data);\n                this.smallestDataInterval = {\n                    x: (_e = (_d = (_c = this.processedData) === null || _c === void 0 ? void 0 : _c.reduced) === null || _d === void 0 ? void 0 : _d[SMALLEST_KEY_INTERVAL.property]) !== null && _e !== void 0 ? _e : Infinity,\n                    y: Infinity,\n                };\n                return [2 /*return*/];\n            });\n        });\n    };\n    BarSeries.prototype.getDomain = function (direction) {\n        var _a = this, flipXY = _a.flipXY, processedData = _a.processedData;\n        if (!processedData)\n            return [];\n        if (flipXY) {\n            direction = flipChartAxisDirection(direction);\n        }\n        var _b = processedData, _c = __read$w(_b.defs.keys, 1), keyDef = _c[0], _d = _b.domain, _e = __read$w(_d.keys, 1), keys = _e[0], _f = __read$w(_d.values, 1), yExtent = _f[0], _g = _b.reduced, _h = _g === void 0 ? {} : _g, _j = SMALLEST_KEY_INTERVAL.property, smallestX = _h[_j], _k = SUM_VALUE_EXTENT.property, ySumExtent = _h[_k];\n        if (direction === ChartAxisDirection.X) {\n            if (keyDef.valueType === 'category') {\n                return keys;\n            }\n            var keysExtent = extent$4(keys) || [NaN, NaN];\n            if (flipXY) {\n                return [keysExtent[0] + -smallestX, keysExtent[1]];\n            }\n            return [keysExtent[0], keysExtent[1] + smallestX];\n        }\n        else if (this.getValueAxis() instanceof LogAxis) {\n            return this.fixNumericExtent(yExtent);\n        }\n        else {\n            return this.fixNumericExtent(ySumExtent);\n        }\n    };\n    BarSeries.prototype.getNodeClickEvent = function (event, datum) {\n        return new CartesianSeriesNodeClickEvent(this.xKey, datum.yKey, event, datum, this);\n    };\n    BarSeries.prototype.getNodeDoubleClickEvent = function (event, datum) {\n        return new CartesianSeriesNodeDoubleClickEvent(this.xKey, datum.yKey, event, datum, this);\n    };\n    BarSeries.prototype.getCategoryAxis = function () {\n        return this.flipXY ? this.yAxis : this.xAxis;\n    };\n    BarSeries.prototype.getValueAxis = function () {\n        return this.flipXY ? this.xAxis : this.yAxis;\n    };\n    BarSeries.prototype.calculateStep = function (range) {\n        var _a;\n        var smallestInterval = this.smallestDataInterval;\n        var xAxis = this.getCategoryAxis();\n        if (!xAxis) {\n            return;\n        }\n        // calculate step\n        var domainLength = xAxis.dataDomain[1] - xAxis.dataDomain[0];\n        var intervals = domainLength / ((_a = smallestInterval === null || smallestInterval === void 0 ? void 0 : smallestInterval.x) !== null && _a !== void 0 ? _a : 1) + 1;\n        // The number of intervals/bands is used to determine the width of individual bands by dividing the available range.\n        // Allow a maximum number of bands to ensure the step does not fall below 1 pixel.\n        // This means there could be some overlap of the bands in the chart.\n        var maxBands = Math.floor(range); // A minimum of 1px per bar/column means the maximum number of bands will equal the available range\n        var bands = Math.min(intervals, maxBands);\n        var step = range / Math.max(1, bands);\n        return step;\n    };\n    BarSeries.prototype.createNodeData = function () {\n        return __awaiter$6(this, void 0, void 0, function () {\n            var _a, data, visible, xAxis, yAxis, xScale, yScale, _b, groupScale, yKeys, xKey, cumYKeyCount, fills, strokes, strokeWidth, seriesItemEnabled, label, flipXY, seriesId, processedData, labelFontStyle, labelFontWeight, labelFontSize, labelFontFamily, labelColor, labelFormatter, labelPlacement, xBandWidth, availableRange, step, barWidth, contexts;\n            var _this = this;\n            return __generator$6(this, function (_c) {\n                _a = this, data = _a.data, visible = _a.visible;\n                xAxis = this.getCategoryAxis();\n                yAxis = this.getValueAxis();\n                if (!(data && visible && xAxis && yAxis)) {\n                    return [2 /*return*/, []];\n                }\n                xScale = xAxis.scale;\n                yScale = yAxis.scale;\n                _b = this, groupScale = _b.groupScale, yKeys = _b.yKeys, xKey = _b.xKey, cumYKeyCount = _b.cumYKeyCount, fills = _b.fills, strokes = _b.strokes, strokeWidth = _b.strokeWidth, seriesItemEnabled = _b.seriesItemEnabled, label = _b.label, flipXY = _b.flipXY, seriesId = _b.id, processedData = _b.processedData;\n                labelFontStyle = label.fontStyle, labelFontWeight = label.fontWeight, labelFontSize = label.fontSize, labelFontFamily = label.fontFamily, labelColor = label.color, labelFormatter = label.formatter, labelPlacement = label.placement;\n                xBandWidth = xScale.bandwidth;\n                if (xScale instanceof ContinuousScale) {\n                    availableRange = Math.max(xAxis.range[0], xAxis.range[1]);\n                    step = this.calculateStep(availableRange);\n                    xBandWidth = step;\n                }\n                groupScale.range = [0, xBandWidth];\n                if (xAxis instanceof CategoryAxis) {\n                    groupScale.padding = xAxis.groupPaddingInner;\n                }\n                else if (xAxis instanceof GroupedCategoryAxis) {\n                    groupScale.padding = 0.1;\n                }\n                else {\n                    // Number or Time axis\n                    groupScale.padding = 0;\n                }\n                // To get exactly `0` padding we need to turn off rounding\n                if (groupScale.padding === 0) {\n                    groupScale.round = false;\n                }\n                else {\n                    groupScale.round = true;\n                }\n                barWidth = groupScale.bandwidth >= 1\n                    ? // Pixel-rounded value for low-volume bar charts.\n                        groupScale.bandwidth\n                    : // Handle high-volume bar charts gracefully.\n                        groupScale.rawBandwidth;\n                contexts = [];\n                processedData === null || processedData === void 0 ? void 0 : processedData.data.forEach(function (_a, dataIndex) {\n                    var _b, _c, _d, _e, _f;\n                    var _g;\n                    var keys = _a.keys, seriesDatum = _a.datum, values = _a.values;\n                    var x = xScale.convert(keys[0]);\n                    for (var stackIndex = 0; stackIndex < ((_b = yKeys === null || yKeys === void 0 ? void 0 : yKeys.length) !== null && _b !== void 0 ? _b : 0); stackIndex++) {\n                        var stackYKeys = (_c = yKeys === null || yKeys === void 0 ? void 0 : yKeys[stackIndex]) !== null && _c !== void 0 ? _c : []; // y-data for a stack within a group\n                        (_d = contexts[stackIndex]) !== null && _d !== void 0 ? _d : (contexts[stackIndex] = []);\n                        var prevMinY = 0;\n                        var prevMaxY = 0;\n                        for (var levelIndex = 0; levelIndex < stackYKeys.length; levelIndex++) {\n                            var yKey = stackYKeys[levelIndex];\n                            var yIndex = (_e = processedData === null || processedData === void 0 ? void 0 : processedData.indices.values[yKey]) !== null && _e !== void 0 ? _e : -1;\n                            (_f = (_g = contexts[stackIndex])[levelIndex]) !== null && _f !== void 0 ? _f : (_g[levelIndex] = {\n                                itemId: yKey,\n                                nodeData: [],\n                                labelData: [],\n                            });\n                            if (yIndex === undefined)\n                                continue;\n                            var yValue = values[0][yIndex];\n                            var currY = +yValue;\n                            var barX = x + groupScale.convert(String(stackIndex));\n                            // Bars outside of visible range are not rendered, so we create node data\n                            // only for the visible subset of user data.\n                            if (!xAxis.inRange(barX, barWidth)) {\n                                continue;\n                            }\n                            if (isNaN(currY)) {\n                                continue;\n                            }\n                            var prevY = currY < 0 ? prevMinY : prevMaxY;\n                            var y = yScale.convert(prevY + currY, { strict: false });\n                            var bottomY = yScale.convert(prevY, { strict: false });\n                            var labelText = void 0;\n                            if (labelFormatter) {\n                                labelText = labelFormatter({\n                                    value: isNumber$4(yValue) ? yValue : undefined,\n                                    seriesId: seriesId,\n                                });\n                            }\n                            else {\n                                labelText = isNumber$4(yValue) ? yValue.toFixed(2) : '';\n                            }\n                            var labelX = void 0;\n                            var labelY = void 0;\n                            if (flipXY) {\n                                labelY = barX + barWidth / 2;\n                                if (labelPlacement === 'inside') {\n                                    labelX = y + ((yValue >= 0 ? -1 : 1) * Math.abs(bottomY - y)) / 2;\n                                }\n                                else {\n                                    labelX = y + (yValue >= 0 ? 1 : -1) * 4;\n                                }\n                            }\n                            else {\n                                labelX = barX + barWidth / 2;\n                                if (labelPlacement === 'inside') {\n                                    labelY = y + ((yValue >= 0 ? 1 : -1) * Math.abs(bottomY - y)) / 2;\n                                }\n                                else {\n                                    labelY = y + (yValue >= 0 ? -3 : 4);\n                                }\n                            }\n                            var labelTextAlign = void 0;\n                            var labelTextBaseline = void 0;\n                            if (labelPlacement === 'inside') {\n                                labelTextAlign = 'center';\n                                labelTextBaseline = 'middle';\n                            }\n                            else {\n                                labelTextAlign = flipXY ? (yValue >= 0 ? 'start' : 'end') : 'center';\n                                labelTextBaseline = flipXY ? 'middle' : yValue >= 0 ? 'bottom' : 'top';\n                            }\n                            var colorIndex = cumYKeyCount[stackIndex] + levelIndex;\n                            var rect = {\n                                x: flipXY ? Math.min(y, bottomY) : barX,\n                                y: flipXY ? barX : Math.min(y, bottomY),\n                                width: flipXY ? Math.abs(bottomY - y) : barWidth,\n                                height: flipXY ? barWidth : Math.abs(bottomY - y),\n                            };\n                            var nodeMidPoint = {\n                                x: rect.x + rect.width / 2,\n                                y: rect.y + rect.height / 2,\n                            };\n                            var nodeData = {\n                                index: dataIndex,\n                                series: _this,\n                                itemId: yKey,\n                                datum: seriesDatum[0],\n                                cumulativeValue: prevY + currY,\n                                yValue: yValue,\n                                yKey: yKey,\n                                xKey: xKey,\n                                x: rect.x,\n                                y: rect.y,\n                                width: rect.width,\n                                height: rect.height,\n                                nodeMidPoint: nodeMidPoint,\n                                colorIndex: colorIndex,\n                                fill: fills[colorIndex % fills.length],\n                                stroke: strokes[colorIndex % strokes.length],\n                                strokeWidth: strokeWidth,\n                                label: seriesItemEnabled.get(yKey) && labelText\n                                    ? {\n                                        text: labelText,\n                                        fontStyle: labelFontStyle,\n                                        fontWeight: labelFontWeight,\n                                        fontSize: labelFontSize,\n                                        fontFamily: labelFontFamily,\n                                        textAlign: labelTextAlign,\n                                        textBaseline: labelTextBaseline,\n                                        fill: labelColor,\n                                        x: labelX,\n                                        y: labelY,\n                                    }\n                                    : undefined,\n                            };\n                            contexts[stackIndex][levelIndex].nodeData.push(nodeData);\n                            contexts[stackIndex][levelIndex].labelData.push(nodeData);\n                            if (currY < 0) {\n                                prevMinY += currY;\n                            }\n                            else {\n                                prevMaxY += currY;\n                            }\n                        }\n                    }\n                });\n                return [2 /*return*/, contexts.reduce(function (r, n) { return r.concat.apply(r, __spread$i(n)); }, [])];\n            });\n        });\n    };\n    BarSeries.prototype.nodeFactory = function () {\n        return new Rect();\n    };\n    BarSeries.prototype.updateDatumSelection = function (opts) {\n        return __awaiter$6(this, void 0, void 0, function () {\n            var nodeData, datumSelection;\n            return __generator$6(this, function (_a) {\n                nodeData = opts.nodeData, datumSelection = opts.datumSelection;\n                return [2 /*return*/, datumSelection.update(nodeData, function (rect) { return (rect.tag = BarSeriesNodeTag.Bar); })];\n            });\n        });\n    };\n    BarSeries.prototype.updateDatumNodes = function (opts) {\n        var _a, _b;\n        return __awaiter$6(this, void 0, void 0, function () {\n            var datumSelection, isDatumHighlighted, _c, fills, strokes, seriesFillOpacity, strokeOpacity, shadow, formatter, xKey, flipXY, _d, highlightedFill, _e, highlightFillOpacity, highlightedStroke, highlightedDatumStrokeWidth, seriesId, _f, visibleMin, visibleMax, isZoomed, crisp;\n            var _this = this;\n            return __generator$6(this, function (_g) {\n                datumSelection = opts.datumSelection, isDatumHighlighted = opts.isHighlight;\n                _c = this, fills = _c.fills, strokes = _c.strokes, seriesFillOpacity = _c.fillOpacity, strokeOpacity = _c.strokeOpacity, shadow = _c.shadow, formatter = _c.formatter, xKey = _c.xKey, flipXY = _c.flipXY, _d = _c.highlightStyle.item, highlightedFill = _d.fill, _e = _d.fillOpacity, highlightFillOpacity = _e === void 0 ? seriesFillOpacity : _e, highlightedStroke = _d.stroke, highlightedDatumStrokeWidth = _d.strokeWidth, seriesId = _c.id;\n                _f = __read$w((_b = (_a = this.xAxis) === null || _a === void 0 ? void 0 : _a.visibleRange) !== null && _b !== void 0 ? _b : [], 2), visibleMin = _f[0], visibleMax = _f[1];\n                isZoomed = visibleMin !== 0 || visibleMax !== 1;\n                crisp = !isZoomed;\n                datumSelection.each(function (rect, datum) {\n                    var colorIndex = datum.colorIndex;\n                    var fill = isDatumHighlighted && highlightedFill !== undefined\n                        ? highlightedFill\n                        : fills[colorIndex % fills.length];\n                    var stroke = isDatumHighlighted && highlightedStroke !== undefined\n                        ? highlightedStroke\n                        : strokes[colorIndex % fills.length];\n                    var strokeWidth = isDatumHighlighted && highlightedDatumStrokeWidth !== undefined\n                        ? highlightedDatumStrokeWidth\n                        : _this.getStrokeWidth(_this.strokeWidth, datum);\n                    var fillOpacity = isDatumHighlighted ? highlightFillOpacity : seriesFillOpacity;\n                    var stackGroup = _this.getStackGroup(datum.yKey);\n                    var format = undefined;\n                    if (formatter) {\n                        format = formatter({\n                            datum: datum.datum,\n                            fill: fill,\n                            stroke: stroke,\n                            strokeWidth: strokeWidth,\n                            highlighted: isDatumHighlighted,\n                            xKey: xKey,\n                            yKey: datum.yKey,\n                            seriesId: seriesId,\n                            stackGroup: stackGroup,\n                        });\n                    }\n                    rect.crisp = crisp;\n                    rect.x = datum.x;\n                    rect.y = datum.y;\n                    rect.width = datum.width;\n                    rect.height = datum.height;\n                    rect.fill = (format && format.fill) || fill;\n                    rect.stroke = (format && format.stroke) || stroke;\n                    rect.strokeWidth = format && format.strokeWidth !== undefined ? format.strokeWidth : strokeWidth;\n                    rect.fillOpacity = fillOpacity;\n                    rect.strokeOpacity = strokeOpacity;\n                    rect.lineDash = _this.lineDash;\n                    rect.lineDashOffset = _this.lineDashOffset;\n                    rect.fillShadow = shadow;\n                    // Prevent stroke from rendering for zero height columns and zero width bars.\n                    rect.visible = flipXY ? datum.width > 0 : datum.height > 0;\n                });\n                return [2 /*return*/];\n            });\n        });\n    };\n    BarSeries.prototype.updateLabelSelection = function (opts) {\n        return __awaiter$6(this, void 0, void 0, function () {\n            var labelData, labelSelection, enabled, data;\n            return __generator$6(this, function (_a) {\n                labelData = opts.labelData, labelSelection = opts.labelSelection;\n                enabled = this.label.enabled;\n                data = enabled ? labelData : [];\n                return [2 /*return*/, labelSelection.update(data, function (text) {\n                        text.tag = BarSeriesNodeTag.Label;\n                        text.pointerEvents = PointerEvents.None;\n                    })];\n            });\n        });\n    };\n    BarSeries.prototype.updateLabelNodes = function (opts) {\n        return __awaiter$6(this, void 0, void 0, function () {\n            var labelSelection, _a, labelEnabled, fontStyle, fontWeight, fontSize, fontFamily, color;\n            return __generator$6(this, function (_b) {\n                labelSelection = opts.labelSelection;\n                _a = this.label, labelEnabled = _a.enabled, fontStyle = _a.fontStyle, fontWeight = _a.fontWeight, fontSize = _a.fontSize, fontFamily = _a.fontFamily, color = _a.color;\n                labelSelection.each(function (text, datum) {\n                    var label = datum.label;\n                    if (label && labelEnabled) {\n                        text.fontStyle = fontStyle;\n                        text.fontWeight = fontWeight;\n                        text.fontSize = fontSize;\n                        text.fontFamily = fontFamily;\n                        text.textAlign = label.textAlign;\n                        text.textBaseline = label.textBaseline;\n                        text.text = label.text;\n                        text.x = label.x;\n                        text.y = label.y;\n                        text.fill = color;\n                        text.visible = true;\n                    }\n                    else {\n                        text.visible = false;\n                    }\n                });\n                return [2 /*return*/];\n            });\n        });\n    };\n    BarSeries.prototype.getTooltipHtml = function (nodeDatum) {\n        var _a = this, xKey = _a.xKey, yKeys = _a.yKeys, processedData = _a.processedData;\n        var xAxis = this.getCategoryAxis();\n        var yAxis = this.getValueAxis();\n        var yKey = nodeDatum.yKey;\n        if (!processedData || !xKey || !yKey || !xAxis || !yAxis) {\n            return '';\n        }\n        var fillIndex = 0;\n        var i = 0;\n        var j = 0;\n        for (; j < yKeys.length; j++) {\n            var stack = yKeys[j];\n            i = stack.indexOf(yKey);\n            if (i >= 0) {\n                fillIndex += i;\n                break;\n            }\n            fillIndex += stack.length;\n        }\n        var _b = this, xName = _b.xName, yNames = _b.yNames, fills = _b.fills, strokes = _b.strokes, tooltip = _b.tooltip, formatter = _b.formatter, seriesId = _b.id;\n        var tooltipRenderer = tooltip.renderer;\n        var datum = nodeDatum.datum;\n        var yName = yNames[yKey];\n        var stackGroup = this.getStackGroup(yKey);\n        var fill = fills[fillIndex % fills.length];\n        var stroke = strokes[fillIndex % fills.length];\n        var strokeWidth = this.getStrokeWidth(this.strokeWidth);\n        var xValue = datum[xKey];\n        var yValue = datum[yKey];\n        var xString = sanitizeHtml(xAxis.formatDatum(xValue));\n        var yString = sanitizeHtml(yAxis.formatDatum(yValue));\n        var title = sanitizeHtml(yName);\n        var content = xString + ': ' + yString;\n        var format = undefined;\n        if (formatter) {\n            format = formatter({\n                datum: datum,\n                fill: fill,\n                stroke: stroke,\n                strokeWidth: strokeWidth,\n                highlighted: false,\n                xKey: xKey,\n                yKey: yKey,\n                seriesId: seriesId,\n                stackGroup: stackGroup,\n            });\n        }\n        var color = (format && format.fill) || fill;\n        var defaults = {\n            title: title,\n            backgroundColor: color,\n            content: content,\n        };\n        if (tooltipRenderer) {\n            return toTooltipHtml$1(tooltipRenderer({\n                datum: datum,\n                xKey: xKey,\n                xValue: xValue,\n                xName: xName,\n                yKey: yKey,\n                yValue: yValue,\n                yName: yName,\n                color: color,\n                title: title,\n                seriesId: seriesId,\n                stackGroup: stackGroup,\n            }), defaults);\n        }\n        return toTooltipHtml$1(defaults);\n    };\n    BarSeries.prototype.getLegendData = function () {\n        var _a = this, id = _a.id, data = _a.data, xKey = _a.xKey, yKeys = _a.yKeys, yNames = _a.yNames, cumYKeyCount = _a.cumYKeyCount, seriesItemEnabled = _a.seriesItemEnabled, hideInLegend = _a.hideInLegend, fills = _a.fills, strokes = _a.strokes, fillOpacity = _a.fillOpacity, strokeOpacity = _a.strokeOpacity, flipXY = _a.flipXY;\n        if (!data || !data.length || !xKey || !yKeys.length) {\n            return [];\n        }\n        var legendData = [];\n        this.yKeys.forEach(function (stack, stackIndex) {\n            // Column stacks should be listed in the legend in reverse order, for symmetry with the\n            // vertical stack display order. Bar stacks are already consistent left-to-right with\n            // the legend.\n            var startLevel = flipXY ? 0 : stack.length - 1;\n            var direction = flipXY ? 1 : -1;\n            for (var levelIndex = startLevel, step = 0; step < stack.length; levelIndex += direction, step++) {\n                var yKey = stack[levelIndex];\n                if (hideInLegend.indexOf(yKey) >= 0) {\n                    return;\n                }\n                var colorIndex = cumYKeyCount[stackIndex] + levelIndex;\n                legendData.push({\n                    id: id,\n                    itemId: yKey,\n                    seriesId: id,\n                    enabled: seriesItemEnabled.get(yKey) || false,\n                    label: {\n                        text: yNames[yKey] || yKey,\n                    },\n                    marker: {\n                        fill: fills[colorIndex % fills.length],\n                        stroke: strokes[colorIndex % strokes.length],\n                        fillOpacity: fillOpacity,\n                        strokeOpacity: strokeOpacity,\n                    },\n                });\n            }\n        });\n        return legendData;\n    };\n    BarSeries.prototype.toggleSeriesItem = function (itemId, enabled) {\n        _super.prototype.toggleSeriesItem.call(this, itemId, enabled);\n        var yKeys = this.yKeys.map(function (stack) { return stack.slice(); }); // deep clone\n        this.seriesItemEnabled.forEach(function (enabled, yKey) {\n            if (!enabled) {\n                yKeys.forEach(function (stack) {\n                    var index = stack.indexOf(yKey);\n                    if (index >= 0) {\n                        stack.splice(index, 1);\n                    }\n                });\n            }\n        });\n        var visibleStacks = [];\n        yKeys.forEach(function (stack, index) {\n            if (stack.length > 0) {\n                visibleStacks.push(String(index));\n            }\n        });\n        this.groupScale.domain = visibleStacks;\n        this.nodeDataRefresh = true;\n    };\n    BarSeries.prototype.isLabelEnabled = function () {\n        return this.label.enabled;\n    };\n    BarSeries.prototype.getBandScalePadding = function () {\n        return { inner: 0.2, outer: 0.3 };\n    };\n    BarSeries.className = 'BarSeries';\n    BarSeries.type = 'bar';\n    __decorate$1q([\n        Validate(BOOLEAN)\n    ], BarSeries.prototype, \"flipXY\", void 0);\n    __decorate$1q([\n        Validate(COLOR_STRING_ARRAY)\n    ], BarSeries.prototype, \"fills\", void 0);\n    __decorate$1q([\n        Validate(COLOR_STRING_ARRAY)\n    ], BarSeries.prototype, \"strokes\", void 0);\n    __decorate$1q([\n        Validate(NUMBER(0, 1))\n    ], BarSeries.prototype, \"fillOpacity\", void 0);\n    __decorate$1q([\n        Validate(NUMBER(0, 1))\n    ], BarSeries.prototype, \"strokeOpacity\", void 0);\n    __decorate$1q([\n        Validate(OPT_LINE_DASH)\n    ], BarSeries.prototype, \"lineDash\", void 0);\n    __decorate$1q([\n        Validate(NUMBER(0))\n    ], BarSeries.prototype, \"lineDashOffset\", void 0);\n    __decorate$1q([\n        Validate(OPT_FUNCTION)\n    ], BarSeries.prototype, \"formatter\", void 0);\n    __decorate$1q([\n        Validate(STRING)\n    ], BarSeries.prototype, \"_xKey\", void 0);\n    __decorate$1q([\n        Validate(STRING)\n    ], BarSeries.prototype, \"xName\", void 0);\n    __decorate$1q([\n        Validate(STRING_ARRAY)\n    ], BarSeries.prototype, \"hideInLegend\", void 0);\n    __decorate$1q([\n        Validate(BOOLEAN_ARRAY)\n    ], BarSeries.prototype, \"visibles\", void 0);\n    __decorate$1q([\n        Validate(BOOLEAN)\n    ], BarSeries.prototype, \"_grouped\", void 0);\n    __decorate$1q([\n        Validate(OPT_NUMBER())\n    ], BarSeries.prototype, \"_normalizedTo\", void 0);\n    __decorate$1q([\n        Validate(NUMBER(0))\n    ], BarSeries.prototype, \"strokeWidth\", void 0);\n    return BarSeries;\n}(CartesianSeries));\n\nvar __extends$22 = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$1p = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __awaiter$5 = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {\n    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n    return new (P || (P = Promise))(function (resolve, reject) {\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\n    });\n};\nvar __generator$5 = (undefined && undefined.__generator) || function (thisArg, body) {\n    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n    return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n    function verb(n) { return function (v) { return step([n, v]); }; }\n    function step(op) {\n        if (f) throw new TypeError(\"Generator is already executing.\");\n        while (_) try {\n            if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n            if (y = 0, t) op = [op[0] & 2, t.value];\n            switch (op[0]) {\n                case 0: case 1: t = op; break;\n                case 4: _.label++; return { value: op[1], done: false };\n                case 5: _.label++; y = op[1]; op = [0]; continue;\n                case 7: op = _.ops.pop(); _.trys.pop(); continue;\n                default:\n                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n                    if (t[2]) _.ops.pop();\n                    _.trys.pop(); continue;\n            }\n            op = body.call(thisArg, _);\n        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n    }\n};\nvar __read$v = (undefined && undefined.__read) || function (o, n) {\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n    if (!m) return o;\n    var i = m.call(o), r, ar = [], e;\n    try {\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n    }\n    catch (error) { e = { error: error }; }\n    finally {\n        try {\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\n        }\n        finally { if (e) throw e.error; }\n    }\n    return ar;\n};\nvar __spread$h = (undefined && undefined.__spread) || function () {\n    for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read$v(arguments[i]));\n    return ar;\n};\nvar HISTOGRAM_AGGREGATIONS = ['count', 'sum', 'mean'];\nvar HISTOGRAM_AGGREGATION = predicateWithMessage(function (v) { return HISTOGRAM_AGGREGATIONS.includes(v); }, \"expecting a histogram aggregation keyword such as 'count', 'sum' or 'mean\");\nvar HistogramSeriesNodeTag;\n(function (HistogramSeriesNodeTag) {\n    HistogramSeriesNodeTag[HistogramSeriesNodeTag[\"Bin\"] = 0] = \"Bin\";\n    HistogramSeriesNodeTag[HistogramSeriesNodeTag[\"Label\"] = 1] = \"Label\";\n})(HistogramSeriesNodeTag || (HistogramSeriesNodeTag = {}));\nvar HistogramSeriesLabel = /** @class */ (function (_super) {\n    __extends$22(HistogramSeriesLabel, _super);\n    function HistogramSeriesLabel() {\n        var _this = _super !== null && _super.apply(this, arguments) || this;\n        _this.formatter = undefined;\n        return _this;\n    }\n    __decorate$1p([\n        Validate(OPT_FUNCTION)\n    ], HistogramSeriesLabel.prototype, \"formatter\", void 0);\n    return HistogramSeriesLabel;\n}(Label$1));\nvar defaultBinCount = 10;\nvar aggregationFunctions = {\n    count: function (bin) { return bin.data.length; },\n    sum: function (bin, yKey) { return bin.data.reduce(function (acc, datum) { return acc + datum[yKey]; }, 0); },\n    mean: function (bin, yKey) { return aggregationFunctions.sum(bin, yKey) / aggregationFunctions.count(bin, yKey); },\n};\nvar HistogramBin = /** @class */ (function () {\n    function HistogramBin(_a) {\n        var _b = __read$v(_a, 2), domainMin = _b[0], domainMax = _b[1];\n        this.data = [];\n        this.aggregatedValue = 0;\n        this.frequency = 0;\n        this.domain = [domainMin, domainMax];\n    }\n    HistogramBin.prototype.addDatum = function (datum) {\n        this.data.push(datum);\n        this.frequency++;\n    };\n    Object.defineProperty(HistogramBin.prototype, \"domainWidth\", {\n        get: function () {\n            var _a = __read$v(this.domain, 2), domainMin = _a[0], domainMax = _a[1];\n            return domainMax - domainMin;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(HistogramBin.prototype, \"relativeHeight\", {\n        get: function () {\n            return this.aggregatedValue / this.domainWidth;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    HistogramBin.prototype.calculateAggregatedValue = function (aggregationName, yKey) {\n        if (!yKey) {\n            // not having a yKey forces us into a frequency plot\n            aggregationName = 'count';\n        }\n        var aggregationFunction = aggregationFunctions[aggregationName];\n        this.aggregatedValue = aggregationFunction(this, yKey);\n    };\n    HistogramBin.prototype.getY = function (areaPlot) {\n        return areaPlot ? this.relativeHeight : this.aggregatedValue;\n    };\n    return HistogramBin;\n}());\nvar HistogramSeriesTooltip = /** @class */ (function (_super) {\n    __extends$22(HistogramSeriesTooltip, _super);\n    function HistogramSeriesTooltip() {\n        var _this = _super !== null && _super.apply(this, arguments) || this;\n        _this.renderer = undefined;\n        return _this;\n    }\n    __decorate$1p([\n        Validate(OPT_FUNCTION)\n    ], HistogramSeriesTooltip.prototype, \"renderer\", void 0);\n    return HistogramSeriesTooltip;\n}(SeriesTooltip));\nvar HistogramSeries = /** @class */ (function (_super) {\n    __extends$22(HistogramSeries, _super);\n    function HistogramSeries() {\n        var _this = _super.call(this, { pickModes: [SeriesNodePickMode.EXACT_SHAPE_MATCH] }) || this;\n        _this.binnedData = [];\n        _this.xDomain = [];\n        _this.yDomain = [];\n        _this.label = new HistogramSeriesLabel();\n        _this.tooltip = new HistogramSeriesTooltip();\n        _this.fill = undefined;\n        _this.stroke = undefined;\n        _this.fillOpacity = 1;\n        _this.strokeOpacity = 1;\n        _this.lineDash = [0];\n        _this.lineDashOffset = 0;\n        _this.xKey = '';\n        _this.areaPlot = false;\n        _this.bins = undefined;\n        _this.aggregation = 'count';\n        _this.binCount = undefined;\n        _this.xName = '';\n        _this.yKey = '';\n        _this.yName = '';\n        _this.strokeWidth = 1;\n        _this.shadow = undefined;\n        _this.label.enabled = false;\n        return _this;\n    }\n    // During processData phase, used to unify different ways of the user specifying\n    // the bins. Returns bins in format[[min1, max1], [min2, max2], ... ].\n    HistogramSeries.prototype.deriveBins = function () {\n        var _this = this;\n        var bins = this.bins;\n        if (!this.data) {\n            return [];\n        }\n        var xData = this.data.map(function (datum) { return datum[_this.xKey]; });\n        var xDomain = this.fixNumericExtent(extent$4(xData));\n        if (this.binCount === undefined) {\n            if (bins) {\n                return bins;\n            }\n            var binStarts = ticks(xDomain[0], xDomain[1], defaultBinCount);\n            var binSize_1 = tickStep(xDomain[0], xDomain[1], defaultBinCount);\n            var firstBinEnd = binStarts[0];\n            var expandStartToBin = function (n) { return [n, n + binSize_1]; };\n            return __spread$h([[firstBinEnd - binSize_1, firstBinEnd]], binStarts.map(expandStartToBin));\n        }\n        else {\n            return this.calculateNiceBins(xDomain, this.binCount);\n        }\n    };\n    HistogramSeries.prototype.calculateNiceBins = function (domain, binCount) {\n        var startGuess = Math.floor(domain[0]);\n        var stop = domain[1];\n        var segments = binCount || 1;\n        var _a = this.calculateNiceStart(startGuess, stop, segments), start = _a.start, binSize = _a.binSize;\n        return this.getBins(start, stop, binSize, segments);\n    };\n    HistogramSeries.prototype.getBins = function (start, stop, step, count) {\n        var bins = [];\n        for (var i = 0; i < count; i++) {\n            var a = Math.round((start + i * step) * 10) / 10;\n            var b = Math.round((start + (i + 1) * step) * 10) / 10;\n            if (i === count - 1) {\n                b = Math.max(b, stop);\n            }\n            bins[i] = [a, b];\n        }\n        return bins;\n    };\n    HistogramSeries.prototype.calculateNiceStart = function (a, b, segments) {\n        var binSize = Math.abs(b - a) / segments;\n        var order = Math.floor(Math.log10(binSize));\n        var magnitude = Math.pow(10, order);\n        var start = Math.floor(a / magnitude) * magnitude;\n        return {\n            start: start,\n            binSize: binSize,\n        };\n    };\n    HistogramSeries.prototype.placeDataInBins = function (data) {\n        var _this = this;\n        var xKey = this.xKey;\n        var derivedBins = this.deriveBins();\n        this.bins = derivedBins;\n        // creating a sorted copy allows binning in O(n) rather than O(n²)\n        // but at the expense of more temporary memory\n        var sortedData = data.slice().sort(function (a, b) {\n            if (a[xKey] < b[xKey]) {\n                return -1;\n            }\n            if (a[xKey] > b[xKey]) {\n                return 1;\n            }\n            return 0;\n        });\n        var bins = [new HistogramBin(derivedBins[0])];\n        var currentBin = 0;\n        for (var i = 0; i < sortedData.length && currentBin < derivedBins.length; i++) {\n            var datum = sortedData[i];\n            while (datum[xKey] > derivedBins[currentBin][1] && currentBin < derivedBins.length) {\n                currentBin++;\n                bins.push(new HistogramBin(derivedBins[currentBin]));\n            }\n            if (currentBin < derivedBins.length) {\n                bins[currentBin].addDatum(datum);\n            }\n        }\n        bins.forEach(function (b) { return b.calculateAggregatedValue(_this.aggregation, _this.yKey); });\n        return bins;\n    };\n    Object.defineProperty(HistogramSeries.prototype, \"xMax\", {\n        get: function () {\n            var _this = this;\n            return (this.data &&\n                this.data.reduce(function (acc, datum) {\n                    return Math.max(acc, datum[_this.xKey]);\n                }, Number.NEGATIVE_INFINITY));\n        },\n        enumerable: false,\n        configurable: true\n    });\n    HistogramSeries.prototype.processData = function () {\n        return __awaiter$5(this, void 0, void 0, function () {\n            var _a, xKey, data, yData, yMinMax, firstBin, lastBin, xMin, xMax;\n            var _this = this;\n            return __generator$5(this, function (_b) {\n                _a = this, xKey = _a.xKey, data = _a.data;\n                this.binnedData = this.placeDataInBins(xKey && data ? data : []);\n                yData = this.binnedData.map(function (b) { return b.getY(_this.areaPlot); });\n                yMinMax = extent$4(yData);\n                this.yDomain = this.fixNumericExtent([0, yMinMax ? yMinMax[1] : 1]);\n                firstBin = this.binnedData[0];\n                lastBin = this.binnedData[this.binnedData.length - 1];\n                xMin = firstBin.domain[0];\n                xMax = lastBin.domain[1];\n                this.xDomain = [xMin, xMax];\n                return [2 /*return*/];\n            });\n        });\n    };\n    HistogramSeries.prototype.getDomain = function (direction) {\n        if (direction === ChartAxisDirection.X) {\n            return this.xDomain;\n        }\n        else {\n            return this.yDomain;\n        }\n    };\n    HistogramSeries.prototype.getNodeClickEvent = function (event, datum) {\n        return new CartesianSeriesNodeClickEvent(this.xKey, this.yKey, event, datum, this);\n    };\n    HistogramSeries.prototype.getNodeDoubleClickEvent = function (event, datum) {\n        return new CartesianSeriesNodeDoubleClickEvent(this.xKey, this.yKey, event, datum, this);\n    };\n    HistogramSeries.prototype.createNodeData = function () {\n        return __awaiter$5(this, void 0, void 0, function () {\n            var _a, xAxis, yAxis, xScale, yScale, _b, fill, stroke, strokeWidth, seriesId, yKey, xKey, nodeData, defaultLabelFormatter, _c, _d, labelFormatter, labelFontStyle, labelFontWeight, labelFontSize, labelFontFamily, labelColor;\n            var _this = this;\n            return __generator$5(this, function (_e) {\n                _a = this, xAxis = _a.xAxis, yAxis = _a.yAxis;\n                if (!this.seriesItemEnabled || !xAxis || !yAxis) {\n                    return [2 /*return*/, []];\n                }\n                xScale = xAxis.scale;\n                yScale = yAxis.scale;\n                _b = this, fill = _b.fill, stroke = _b.stroke, strokeWidth = _b.strokeWidth, seriesId = _b.id, yKey = _b.yKey, xKey = _b.xKey;\n                nodeData = [];\n                defaultLabelFormatter = function (params) { return String(params.value); };\n                _c = this.label, _d = _c.formatter, labelFormatter = _d === void 0 ? defaultLabelFormatter : _d, labelFontStyle = _c.fontStyle, labelFontWeight = _c.fontWeight, labelFontSize = _c.fontSize, labelFontFamily = _c.fontFamily, labelColor = _c.color;\n                this.binnedData.forEach(function (binOfData) {\n                    var total = binOfData.aggregatedValue, frequency = binOfData.frequency, _a = __read$v(binOfData.domain, 2), xDomainMin = _a[0], xDomainMax = _a[1], relativeHeight = binOfData.relativeHeight;\n                    var xMinPx = xScale.convert(xDomainMin), xMaxPx = xScale.convert(xDomainMax), \n                    // note: assuming can't be negative:\n                    y = _this.areaPlot ? relativeHeight : yKey ? total : frequency, yZeroPx = yScale.convert(0), yMaxPx = yScale.convert(y), w = xMaxPx - xMinPx, h = Math.abs(yMaxPx - yZeroPx);\n                    var selectionDatumLabel = y !== 0\n                        ? {\n                            text: labelFormatter({ value: binOfData.aggregatedValue, seriesId: seriesId }),\n                            fontStyle: labelFontStyle,\n                            fontWeight: labelFontWeight,\n                            fontSize: labelFontSize,\n                            fontFamily: labelFontFamily,\n                            fill: labelColor,\n                            x: xMinPx + w / 2,\n                            y: yMaxPx + h / 2,\n                        }\n                        : undefined;\n                    var nodeMidPoint = {\n                        x: xMinPx + w / 2,\n                        y: yMaxPx + h / 2,\n                    };\n                    nodeData.push({\n                        series: _this,\n                        datum: binOfData,\n                        // since each selection is an aggregation of multiple data.\n                        aggregatedValue: binOfData.aggregatedValue,\n                        domain: binOfData.domain,\n                        yKey: yKey,\n                        xKey: xKey,\n                        x: xMinPx,\n                        y: yMaxPx,\n                        width: w,\n                        height: h,\n                        nodeMidPoint: nodeMidPoint,\n                        fill: fill,\n                        stroke: stroke,\n                        strokeWidth: strokeWidth,\n                        label: selectionDatumLabel,\n                    });\n                });\n                return [2 /*return*/, [{ itemId: this.yKey, nodeData: nodeData, labelData: nodeData }]];\n            });\n        });\n    };\n    HistogramSeries.prototype.nodeFactory = function () {\n        return new Rect();\n    };\n    HistogramSeries.prototype.updateDatumSelection = function (opts) {\n        return __awaiter$5(this, void 0, void 0, function () {\n            var nodeData, datumSelection;\n            return __generator$5(this, function (_a) {\n                nodeData = opts.nodeData, datumSelection = opts.datumSelection;\n                return [2 /*return*/, datumSelection.update(nodeData, function (rect) {\n                        rect.tag = HistogramSeriesNodeTag.Bin;\n                        rect.crisp = true;\n                    })];\n            });\n        });\n    };\n    HistogramSeries.prototype.updateDatumNodes = function (opts) {\n        return __awaiter$5(this, void 0, void 0, function () {\n            var datumSelection, isDatumHighlighted, _a, seriesFillOpacity, strokeOpacity, shadow, _b, highlightedFill, _c, highlightFillOpacity, highlightedStroke, highlightedDatumStrokeWidth;\n            var _this = this;\n            return __generator$5(this, function (_d) {\n                datumSelection = opts.datumSelection, isDatumHighlighted = opts.isHighlight;\n                _a = this, seriesFillOpacity = _a.fillOpacity, strokeOpacity = _a.strokeOpacity, shadow = _a.shadow, _b = _a.highlightStyle.item, highlightedFill = _b.fill, _c = _b.fillOpacity, highlightFillOpacity = _c === void 0 ? seriesFillOpacity : _c, highlightedStroke = _b.stroke, highlightedDatumStrokeWidth = _b.strokeWidth;\n                datumSelection.each(function (rect, datum, index) {\n                    var strokeWidth = isDatumHighlighted && highlightedDatumStrokeWidth !== undefined\n                        ? highlightedDatumStrokeWidth\n                        : datum.strokeWidth;\n                    var fillOpacity = isDatumHighlighted ? highlightFillOpacity : seriesFillOpacity;\n                    rect.x = datum.x;\n                    rect.y = datum.y;\n                    rect.width = datum.width;\n                    rect.height = datum.height;\n                    rect.fill = isDatumHighlighted && highlightedFill !== undefined ? highlightedFill : datum.fill;\n                    rect.stroke = isDatumHighlighted && highlightedStroke !== undefined ? highlightedStroke : datum.stroke;\n                    rect.fillOpacity = fillOpacity;\n                    rect.strokeOpacity = strokeOpacity;\n                    rect.strokeWidth = strokeWidth;\n                    rect.lineDash = _this.lineDash;\n                    rect.lineDashOffset = _this.lineDashOffset;\n                    rect.fillShadow = shadow;\n                    rect.zIndex = isDatumHighlighted ? Series.highlightedZIndex : index;\n                    rect.visible = datum.height > 0; // prevent stroke from rendering for zero height columns\n                });\n                return [2 /*return*/];\n            });\n        });\n    };\n    HistogramSeries.prototype.updateLabelSelection = function (opts) {\n        return __awaiter$5(this, void 0, void 0, function () {\n            var labelData, labelSelection;\n            return __generator$5(this, function (_a) {\n                labelData = opts.labelData, labelSelection = opts.labelSelection;\n                return [2 /*return*/, labelSelection.update(labelData, function (text) {\n                        text.tag = HistogramSeriesNodeTag.Label;\n                        text.pointerEvents = PointerEvents.None;\n                        text.textAlign = 'center';\n                        text.textBaseline = 'middle';\n                    })];\n            });\n        });\n    };\n    HistogramSeries.prototype.updateLabelNodes = function (opts) {\n        return __awaiter$5(this, void 0, void 0, function () {\n            var labelSelection, labelEnabled;\n            return __generator$5(this, function (_a) {\n                labelSelection = opts.labelSelection;\n                labelEnabled = this.label.enabled;\n                labelSelection.each(function (text, datum) {\n                    var label = datum.label;\n                    if (label && labelEnabled) {\n                        text.text = label.text;\n                        text.x = label.x;\n                        text.y = label.y;\n                        text.fontStyle = label.fontStyle;\n                        text.fontWeight = label.fontWeight;\n                        text.fontSize = label.fontSize;\n                        text.fontFamily = label.fontFamily;\n                        text.fill = label.fill;\n                        text.visible = true;\n                    }\n                    else {\n                        text.visible = false;\n                    }\n                });\n                return [2 /*return*/];\n            });\n        });\n    };\n    HistogramSeries.prototype.getTooltipHtml = function (nodeDatum) {\n        var _a = this, xKey = _a.xKey, yKey = _a.yKey, xAxis = _a.xAxis, yAxis = _a.yAxis;\n        if (!xKey || !xAxis || !yAxis) {\n            return '';\n        }\n        var _b = this, xName = _b.xName, yName = _b.yName, color = _b.fill, tooltip = _b.tooltip, aggregation = _b.aggregation, seriesId = _b.id;\n        var tooltipRenderer = tooltip.renderer;\n        var bin = nodeDatum.datum;\n        var aggregatedValue = bin.aggregatedValue, frequency = bin.frequency, _c = __read$v(bin.domain, 2), rangeMin = _c[0], rangeMax = _c[1];\n        var title = sanitizeHtml(xName || xKey) + \": \" + xAxis.formatDatum(rangeMin) + \" - \" + xAxis.formatDatum(rangeMax);\n        var content = yKey\n            ? \"<b>\" + sanitizeHtml(yName || yKey) + \" (\" + aggregation + \")</b>: \" + yAxis.formatDatum(aggregatedValue) + \"<br>\"\n            : '';\n        content += \"<b>Frequency</b>: \" + frequency;\n        var defaults = {\n            title: title,\n            backgroundColor: color,\n            content: content,\n        };\n        if (tooltipRenderer) {\n            return toTooltipHtml$1(tooltipRenderer({\n                datum: bin,\n                xKey: xKey,\n                xValue: bin.domain,\n                xName: xName,\n                yKey: yKey,\n                yValue: bin.aggregatedValue,\n                yName: yName,\n                color: color,\n                title: title,\n                seriesId: seriesId,\n            }), defaults);\n        }\n        return toTooltipHtml$1(defaults);\n    };\n    HistogramSeries.prototype.getLegendData = function () {\n        var _a = this, id = _a.id, data = _a.data, xKey = _a.xKey, yName = _a.yName, visible = _a.visible, fill = _a.fill, stroke = _a.stroke, fillOpacity = _a.fillOpacity, strokeOpacity = _a.strokeOpacity;\n        if (!data || data.length === 0) {\n            return [];\n        }\n        return [\n            {\n                id: id,\n                itemId: xKey,\n                seriesId: id,\n                enabled: visible,\n                label: {\n                    text: yName || xKey || 'Frequency',\n                },\n                marker: {\n                    fill: fill || 'rgba(0, 0, 0, 0)',\n                    stroke: stroke || 'rgba(0, 0, 0, 0)',\n                    fillOpacity: fillOpacity,\n                    strokeOpacity: strokeOpacity,\n                },\n            },\n        ];\n    };\n    HistogramSeries.prototype.isLabelEnabled = function () {\n        return this.label.enabled;\n    };\n    HistogramSeries.className = 'HistogramSeries';\n    HistogramSeries.type = 'histogram';\n    __decorate$1p([\n        Validate(OPT_COLOR_STRING)\n    ], HistogramSeries.prototype, \"fill\", void 0);\n    __decorate$1p([\n        Validate(OPT_COLOR_STRING)\n    ], HistogramSeries.prototype, \"stroke\", void 0);\n    __decorate$1p([\n        Validate(NUMBER(0, 1))\n    ], HistogramSeries.prototype, \"fillOpacity\", void 0);\n    __decorate$1p([\n        Validate(NUMBER(0, 1))\n    ], HistogramSeries.prototype, \"strokeOpacity\", void 0);\n    __decorate$1p([\n        Validate(OPT_LINE_DASH)\n    ], HistogramSeries.prototype, \"lineDash\", void 0);\n    __decorate$1p([\n        Validate(NUMBER(0))\n    ], HistogramSeries.prototype, \"lineDashOffset\", void 0);\n    __decorate$1p([\n        Validate(STRING)\n    ], HistogramSeries.prototype, \"xKey\", void 0);\n    __decorate$1p([\n        Validate(BOOLEAN)\n    ], HistogramSeries.prototype, \"areaPlot\", void 0);\n    __decorate$1p([\n        Validate(OPT_ARRAY())\n    ], HistogramSeries.prototype, \"bins\", void 0);\n    __decorate$1p([\n        Validate(HISTOGRAM_AGGREGATION)\n    ], HistogramSeries.prototype, \"aggregation\", void 0);\n    __decorate$1p([\n        Validate(OPT_NUMBER(0))\n    ], HistogramSeries.prototype, \"binCount\", void 0);\n    __decorate$1p([\n        Validate(STRING)\n    ], HistogramSeries.prototype, \"xName\", void 0);\n    __decorate$1p([\n        Validate(STRING)\n    ], HistogramSeries.prototype, \"yKey\", void 0);\n    __decorate$1p([\n        Validate(STRING)\n    ], HistogramSeries.prototype, \"yName\", void 0);\n    __decorate$1p([\n        Validate(NUMBER(0))\n    ], HistogramSeries.prototype, \"strokeWidth\", void 0);\n    return HistogramSeries;\n}(CartesianSeries));\n\nvar __extends$21 = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$1o = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __awaiter$4 = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {\n    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n    return new (P || (P = Promise))(function (resolve, reject) {\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\n    });\n};\nvar __generator$4 = (undefined && undefined.__generator) || function (thisArg, body) {\n    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n    return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n    function verb(n) { return function (v) { return step([n, v]); }; }\n    function step(op) {\n        if (f) throw new TypeError(\"Generator is already executing.\");\n        while (_) try {\n            if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n            if (y = 0, t) op = [op[0] & 2, t.value];\n            switch (op[0]) {\n                case 0: case 1: t = op; break;\n                case 4: _.label++; return { value: op[1], done: false };\n                case 5: _.label++; y = op[1]; op = [0]; continue;\n                case 7: op = _.ops.pop(); _.trys.pop(); continue;\n                default:\n                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n                    if (t[2]) _.ops.pop();\n                    _.trys.pop(); continue;\n            }\n            op = body.call(thisArg, _);\n        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n    }\n};\nvar __values$d = (undefined && undefined.__values) || function(o) {\n    var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n    if (m) return m.call(o);\n    if (o && typeof o.length === \"number\") return {\n        next: function () {\n            if (o && i >= o.length) o = void 0;\n            return { value: o && o[i++], done: !o };\n        }\n    };\n    throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nvar __read$u = (undefined && undefined.__read) || function (o, n) {\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n    if (!m) return o;\n    var i = m.call(o), r, ar = [], e;\n    try {\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n    }\n    catch (error) { e = { error: error }; }\n    finally {\n        try {\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\n        }\n        finally { if (e) throw e.error; }\n    }\n    return ar;\n};\nvar LineSeriesLabel = /** @class */ (function (_super) {\n    __extends$21(LineSeriesLabel, _super);\n    function LineSeriesLabel() {\n        var _this = _super !== null && _super.apply(this, arguments) || this;\n        _this.formatter = undefined;\n        return _this;\n    }\n    __decorate$1o([\n        Validate(OPT_FUNCTION)\n    ], LineSeriesLabel.prototype, \"formatter\", void 0);\n    return LineSeriesLabel;\n}(Label$1));\nvar LineSeriesTooltip = /** @class */ (function (_super) {\n    __extends$21(LineSeriesTooltip, _super);\n    function LineSeriesTooltip() {\n        var _this = _super !== null && _super.apply(this, arguments) || this;\n        _this.renderer = undefined;\n        _this.format = undefined;\n        return _this;\n    }\n    __decorate$1o([\n        Validate(OPT_FUNCTION)\n    ], LineSeriesTooltip.prototype, \"renderer\", void 0);\n    __decorate$1o([\n        Validate(OPT_STRING)\n    ], LineSeriesTooltip.prototype, \"format\", void 0);\n    return LineSeriesTooltip;\n}(SeriesTooltip));\nvar LineSeries = /** @class */ (function (_super) {\n    __extends$21(LineSeries, _super);\n    function LineSeries() {\n        var _this = _super.call(this, {\n            hasMarkers: true,\n            pickModes: [\n                SeriesNodePickMode.NEAREST_BY_MAIN_CATEGORY_AXIS_FIRST,\n                SeriesNodePickMode.NEAREST_NODE,\n                SeriesNodePickMode.EXACT_SHAPE_MATCH,\n            ],\n        }) || this;\n        _this.xDomain = [];\n        _this.yDomain = [];\n        _this.pointsData = [];\n        _this.marker = new CartesianSeriesMarker();\n        _this.label = new LineSeriesLabel();\n        _this.title = undefined;\n        _this.stroke = '#874349';\n        _this.lineDash = [0];\n        _this.lineDashOffset = 0;\n        _this.strokeWidth = 2;\n        _this.strokeOpacity = 1;\n        _this.tooltip = new LineSeriesTooltip();\n        _this._xKey = '';\n        _this.xName = '';\n        _this._yKey = '';\n        _this.yName = '';\n        var _a = _this, marker = _a.marker, label = _a.label;\n        marker.fill = '#c16068';\n        marker.stroke = '#874349';\n        label.enabled = false;\n        return _this;\n    }\n    Object.defineProperty(LineSeries.prototype, \"xKey\", {\n        get: function () {\n            return this._xKey;\n        },\n        set: function (value) {\n            this._xKey = value;\n            this.pointsData.splice(0);\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(LineSeries.prototype, \"yKey\", {\n        get: function () {\n            return this._yKey;\n        },\n        set: function (value) {\n            this._yKey = value;\n            this.pointsData.splice(0);\n        },\n        enumerable: false,\n        configurable: true\n    });\n    LineSeries.prototype.getDomain = function (direction) {\n        if (direction === ChartAxisDirection.X) {\n            return this.xDomain;\n        }\n        return this.yDomain;\n    };\n    LineSeries.prototype.processData = function () {\n        return __awaiter$4(this, void 0, void 0, function () {\n            var _a, xAxis, yAxis, xKey, yKey, pointsData, data, isContinuousX, isContinuousY, xData, yData, data_1, data_1_1, datum, x, y, xDatum, yDatum;\n            var e_1, _b;\n            return __generator$4(this, function (_c) {\n                _a = this, xAxis = _a.xAxis, yAxis = _a.yAxis, xKey = _a.xKey, yKey = _a.yKey, pointsData = _a.pointsData;\n                data = xKey && yKey && this.data ? this.data : [];\n                if (!xAxis || !yAxis) {\n                    return [2 /*return*/];\n                }\n                isContinuousX = xAxis.scale instanceof ContinuousScale;\n                isContinuousY = yAxis.scale instanceof ContinuousScale;\n                xData = [];\n                yData = [];\n                pointsData.splice(0);\n                try {\n                    for (data_1 = __values$d(data), data_1_1 = data_1.next(); !data_1_1.done; data_1_1 = data_1.next()) {\n                        datum = data_1_1.value;\n                        x = datum[xKey];\n                        y = datum[yKey];\n                        xDatum = checkDatum(x, isContinuousX);\n                        if (isContinuousX && xDatum === undefined) {\n                            continue;\n                        }\n                        yDatum = checkDatum(y, isContinuousY);\n                        xData.push(xDatum);\n                        yData.push(yDatum);\n                        pointsData.push({\n                            xDatum: xDatum,\n                            yDatum: yDatum,\n                            datum: datum,\n                        });\n                    }\n                }\n                catch (e_1_1) { e_1 = { error: e_1_1 }; }\n                finally {\n                    try {\n                        if (data_1_1 && !data_1_1.done && (_b = data_1.return)) _b.call(data_1);\n                    }\n                    finally { if (e_1) throw e_1.error; }\n                }\n                this.validateXYData(this.xKey, this.yKey, data, xAxis, yAxis, xData, yData, 1);\n                this.xDomain = isContinuousX ? this.fixNumericExtent(extent$4(xData), xAxis) : xData;\n                this.yDomain = isContinuousY ? this.fixNumericExtent(extent$4(yData), yAxis) : yData;\n                return [2 /*return*/];\n            });\n        });\n    };\n    LineSeries.prototype.createNodeData = function () {\n        var _a;\n        return __awaiter$4(this, void 0, void 0, function () {\n            var _b, data, xAxis, yAxis, _c, markerEnabled, markerSize, strokeWidth, _d, pointsData, label, yKey, xKey, seriesId, xScale, yScale, xOffset, yOffset, nodeData, size, moveTo, prevXInRange, nextPoint, actualLength, i, point, xDatum, yDatum, datum, x, tolerance, xInRange, nextXInRange, y, labelText;\n            return __generator$4(this, function (_e) {\n                _b = this, data = _b.data, xAxis = _b.xAxis, yAxis = _b.yAxis, _c = _b.marker, markerEnabled = _c.enabled, markerSize = _c.size, strokeWidth = _c.strokeWidth;\n                if (!data || !xAxis || !yAxis) {\n                    return [2 /*return*/, []];\n                }\n                _d = this, pointsData = _d.pointsData, label = _d.label, yKey = _d.yKey, xKey = _d.xKey, seriesId = _d.id;\n                xScale = xAxis.scale;\n                yScale = yAxis.scale;\n                xOffset = (xScale.bandwidth || 0) / 2;\n                yOffset = (yScale.bandwidth || 0) / 2;\n                nodeData = new Array(data.length);\n                size = markerEnabled ? markerSize : 0;\n                moveTo = true;\n                prevXInRange = undefined;\n                nextPoint = undefined;\n                actualLength = 0;\n                for (i = 0; i < pointsData.length; i++) {\n                    point = nextPoint || pointsData[i];\n                    if (point.yDatum === undefined) {\n                        prevXInRange = undefined;\n                        moveTo = true;\n                    }\n                    else {\n                        xDatum = point.xDatum, yDatum = point.yDatum, datum = point.datum;\n                        x = xScale.convert(xDatum) + xOffset;\n                        if (isNaN(x)) {\n                            prevXInRange = undefined;\n                            moveTo = true;\n                            continue;\n                        }\n                        tolerance = (xScale.bandwidth || markerSize * 0.5 + (strokeWidth || 0)) + 1;\n                        nextPoint = ((_a = pointsData[i + 1]) === null || _a === void 0 ? void 0 : _a.yDatum) === undefined ? undefined : pointsData[i + 1];\n                        xInRange = xAxis.inRangeEx(x, 0, tolerance);\n                        nextXInRange = nextPoint && xAxis.inRangeEx(xScale.convert(nextPoint.xDatum) + xOffset, 0, tolerance);\n                        if (xInRange === -1 && nextXInRange === -1) {\n                            moveTo = true;\n                            continue;\n                        }\n                        if (xInRange === 1 && prevXInRange === 1) {\n                            moveTo = true;\n                            continue;\n                        }\n                        prevXInRange = xInRange;\n                        y = yScale.convert(yDatum) + yOffset;\n                        labelText = void 0;\n                        if (label.formatter) {\n                            labelText = label.formatter({ value: yDatum, seriesId: seriesId });\n                        }\n                        else {\n                            labelText =\n                                typeof yDatum === 'number' && isFinite(yDatum)\n                                    ? yDatum.toFixed(2)\n                                    : yDatum\n                                        ? String(yDatum)\n                                        : '';\n                        }\n                        nodeData[actualLength++] = {\n                            series: this,\n                            datum: datum,\n                            yKey: yKey,\n                            xKey: xKey,\n                            point: { x: x, y: y, moveTo: moveTo, size: size },\n                            nodeMidPoint: { x: x, y: y },\n                            label: labelText\n                                ? {\n                                    text: labelText,\n                                    fontStyle: label.fontStyle,\n                                    fontWeight: label.fontWeight,\n                                    fontSize: label.fontSize,\n                                    fontFamily: label.fontFamily,\n                                    textAlign: 'center',\n                                    textBaseline: 'bottom',\n                                    fill: label.color,\n                                }\n                                : undefined,\n                        };\n                        moveTo = false;\n                    }\n                }\n                nodeData.length = actualLength;\n                return [2 /*return*/, [{ itemId: yKey, nodeData: nodeData, labelData: nodeData }]];\n            });\n        });\n    };\n    LineSeries.prototype.isPathOrSelectionDirty = function () {\n        return this.marker.isDirty();\n    };\n    LineSeries.prototype.updatePaths = function (opts) {\n        return __awaiter$4(this, void 0, void 0, function () {\n            var nodeData, _a, lineNode, linePath, nodeData_1, nodeData_1_1, data;\n            var e_2, _b;\n            return __generator$4(this, function (_c) {\n                nodeData = opts.contextData.nodeData, _a = __read$u(opts.paths, 1), lineNode = _a[0];\n                linePath = lineNode.path;\n                lineNode.fill = undefined;\n                lineNode.lineJoin = 'round';\n                lineNode.pointerEvents = PointerEvents.None;\n                linePath.clear({ trackChanges: true });\n                try {\n                    for (nodeData_1 = __values$d(nodeData), nodeData_1_1 = nodeData_1.next(); !nodeData_1_1.done; nodeData_1_1 = nodeData_1.next()) {\n                        data = nodeData_1_1.value;\n                        if (data.point.moveTo) {\n                            linePath.moveTo(data.point.x, data.point.y);\n                        }\n                        else {\n                            linePath.lineTo(data.point.x, data.point.y);\n                        }\n                    }\n                }\n                catch (e_2_1) { e_2 = { error: e_2_1 }; }\n                finally {\n                    try {\n                        if (nodeData_1_1 && !nodeData_1_1.done && (_b = nodeData_1.return)) _b.call(nodeData_1);\n                    }\n                    finally { if (e_2) throw e_2.error; }\n                }\n                lineNode.checkPathDirty();\n                return [2 /*return*/];\n            });\n        });\n    };\n    LineSeries.prototype.updatePathNodes = function (opts) {\n        return __awaiter$4(this, void 0, void 0, function () {\n            var _a, lineNode;\n            return __generator$4(this, function (_b) {\n                _a = __read$u(opts.paths, 1), lineNode = _a[0];\n                lineNode.stroke = this.stroke;\n                lineNode.strokeWidth = this.getStrokeWidth(this.strokeWidth);\n                lineNode.strokeOpacity = this.strokeOpacity;\n                lineNode.lineDash = this.lineDash;\n                lineNode.lineDashOffset = this.lineDashOffset;\n                return [2 /*return*/];\n            });\n        });\n    };\n    LineSeries.prototype.markerFactory = function () {\n        var shape = this.marker.shape;\n        var MarkerShape = getMarker$1(shape);\n        return new MarkerShape();\n    };\n    LineSeries.prototype.updateMarkerSelection = function (opts) {\n        return __awaiter$4(this, void 0, void 0, function () {\n            var nodeData, markerSelection, _a, shape, enabled;\n            return __generator$4(this, function (_b) {\n                nodeData = opts.nodeData;\n                markerSelection = opts.markerSelection;\n                _a = this.marker, shape = _a.shape, enabled = _a.enabled;\n                nodeData = shape && enabled ? nodeData : [];\n                if (this.marker.isDirty()) {\n                    markerSelection.clear();\n                }\n                return [2 /*return*/, markerSelection.update(nodeData)];\n            });\n        });\n    };\n    LineSeries.prototype.updateMarkerNodes = function (opts) {\n        return __awaiter$4(this, void 0, void 0, function () {\n            var markerSelection, isDatumHighlighted, _a, marker, markerFillOpacity, xKey, yKey, lineStroke, strokeOpacity, _b, highlightedFill, _c, highlightFillOpacity, highlightedStroke, highlightedDatumStrokeWidth, seriesId, size, formatter, markerStrokeWidth, customMarker;\n            return __generator$4(this, function (_d) {\n                markerSelection = opts.markerSelection, isDatumHighlighted = opts.isHighlight;\n                _a = this, marker = _a.marker, markerFillOpacity = _a.marker.fillOpacity, xKey = _a.xKey, yKey = _a.yKey, lineStroke = _a.stroke, strokeOpacity = _a.strokeOpacity, _b = _a.highlightStyle.item, highlightedFill = _b.fill, _c = _b.fillOpacity, highlightFillOpacity = _c === void 0 ? markerFillOpacity : _c, highlightedStroke = _b.stroke, highlightedDatumStrokeWidth = _b.strokeWidth, seriesId = _a.id;\n                size = marker.size, formatter = marker.formatter;\n                markerStrokeWidth = marker.strokeWidth !== undefined ? marker.strokeWidth : this.strokeWidth;\n                customMarker = typeof marker.shape === 'function';\n                markerSelection.each(function (node, datum) {\n                    var _a, _b;\n                    var fill = isDatumHighlighted && highlightedFill !== undefined ? highlightedFill : marker.fill;\n                    var fillOpacity = isDatumHighlighted ? highlightFillOpacity : markerFillOpacity;\n                    var stroke = isDatumHighlighted && highlightedStroke !== undefined ? highlightedStroke : marker.stroke || lineStroke;\n                    var strokeWidth = isDatumHighlighted && highlightedDatumStrokeWidth !== undefined\n                        ? highlightedDatumStrokeWidth\n                        : markerStrokeWidth;\n                    var format = undefined;\n                    if (formatter) {\n                        format = formatter({\n                            datum: datum.datum,\n                            xKey: xKey,\n                            yKey: yKey,\n                            fill: fill,\n                            stroke: stroke,\n                            strokeWidth: strokeWidth,\n                            size: size,\n                            highlighted: isDatumHighlighted,\n                            seriesId: seriesId,\n                        });\n                    }\n                    node.fill = (format && format.fill) || fill;\n                    node.stroke = (format && format.stroke) || stroke;\n                    node.strokeWidth = format && format.strokeWidth !== undefined ? format.strokeWidth : strokeWidth;\n                    node.fillOpacity = fillOpacity !== null && fillOpacity !== void 0 ? fillOpacity : 1;\n                    node.strokeOpacity = (_b = (_a = marker.strokeOpacity) !== null && _a !== void 0 ? _a : strokeOpacity) !== null && _b !== void 0 ? _b : 1;\n                    node.size = format && format.size !== undefined ? format.size : size;\n                    node.translationX = datum.point.x;\n                    node.translationY = datum.point.y;\n                    node.visible = node.size > 0 && !isNaN(datum.point.x) && !isNaN(datum.point.y);\n                    if (!customMarker || node.dirtyPath) {\n                        return;\n                    }\n                    // Only for cutom marker shapes\n                    node.path.clear({ trackChanges: true });\n                    node.updatePath();\n                    node.checkPathDirty();\n                });\n                if (!isDatumHighlighted) {\n                    this.marker.markClean();\n                }\n                return [2 /*return*/];\n            });\n        });\n    };\n    LineSeries.prototype.updateLabelSelection = function (opts) {\n        return __awaiter$4(this, void 0, void 0, function () {\n            var labelData, labelSelection, _a, shape, enabled;\n            return __generator$4(this, function (_b) {\n                labelData = opts.labelData;\n                labelSelection = opts.labelSelection;\n                _a = this.marker, shape = _a.shape, enabled = _a.enabled;\n                labelData = shape && enabled ? labelData : [];\n                return [2 /*return*/, labelSelection.update(labelData)];\n            });\n        });\n    };\n    LineSeries.prototype.updateLabelNodes = function (opts) {\n        return __awaiter$4(this, void 0, void 0, function () {\n            var labelSelection, _a, labelEnabled, fontStyle, fontWeight, fontSize, fontFamily, color;\n            return __generator$4(this, function (_b) {\n                labelSelection = opts.labelSelection;\n                _a = this.label, labelEnabled = _a.enabled, fontStyle = _a.fontStyle, fontWeight = _a.fontWeight, fontSize = _a.fontSize, fontFamily = _a.fontFamily, color = _a.color;\n                labelSelection.each(function (text, datum) {\n                    var point = datum.point, label = datum.label;\n                    if (datum && label && labelEnabled) {\n                        text.fontStyle = fontStyle;\n                        text.fontWeight = fontWeight;\n                        text.fontSize = fontSize;\n                        text.fontFamily = fontFamily;\n                        text.textAlign = label.textAlign;\n                        text.textBaseline = label.textBaseline;\n                        text.text = label.text;\n                        text.x = point.x;\n                        text.y = point.y - 10;\n                        text.fill = color;\n                        text.visible = true;\n                    }\n                    else {\n                        text.visible = false;\n                    }\n                });\n                return [2 /*return*/];\n            });\n        });\n    };\n    LineSeries.prototype.getNodeClickEvent = function (event, datum) {\n        return new CartesianSeriesNodeClickEvent(this.xKey, this.yKey, event, datum, this);\n    };\n    LineSeries.prototype.getNodeDoubleClickEvent = function (event, datum) {\n        return new CartesianSeriesNodeDoubleClickEvent(this.xKey, this.yKey, event, datum, this);\n    };\n    LineSeries.prototype.getTooltipHtml = function (nodeDatum) {\n        var _a = this, xKey = _a.xKey, yKey = _a.yKey, xAxis = _a.xAxis, yAxis = _a.yAxis;\n        if (!xKey || !yKey || !xAxis || !yAxis) {\n            return '';\n        }\n        var _b = this, xName = _b.xName, yName = _b.yName, tooltip = _b.tooltip, marker = _b.marker, seriesId = _b.id;\n        var tooltipRenderer = tooltip.renderer, tooltipFormat = tooltip.format;\n        var datum = nodeDatum.datum;\n        var xValue = datum[xKey];\n        var yValue = datum[yKey];\n        var xString = xAxis.formatDatum(xValue);\n        var yString = yAxis.formatDatum(yValue);\n        var title = sanitizeHtml(this.title || yName);\n        var content = sanitizeHtml(xString + ': ' + yString);\n        var markerFormatter = marker.formatter, fill = marker.fill, stroke = marker.stroke, markerStrokeWidth = marker.strokeWidth, size = marker.size;\n        var strokeWidth = markerStrokeWidth !== undefined ? markerStrokeWidth : this.strokeWidth;\n        var format = undefined;\n        if (markerFormatter) {\n            format = markerFormatter({\n                datum: datum,\n                xKey: xKey,\n                yKey: yKey,\n                fill: fill,\n                stroke: stroke,\n                strokeWidth: strokeWidth,\n                size: size,\n                highlighted: false,\n                seriesId: seriesId,\n            });\n        }\n        var color = (format && format.fill) || fill;\n        var defaults = {\n            title: title,\n            backgroundColor: color,\n            content: content,\n        };\n        if (tooltipFormat || tooltipRenderer) {\n            var params = {\n                datum: datum,\n                xKey: xKey,\n                xValue: xValue,\n                xName: xName,\n                yKey: yKey,\n                yValue: yValue,\n                yName: yName,\n                title: title,\n                color: color,\n                seriesId: seriesId,\n            };\n            if (tooltipFormat) {\n                return toTooltipHtml$1({\n                    content: interpolate(tooltipFormat, params),\n                }, defaults);\n            }\n            if (tooltipRenderer) {\n                return toTooltipHtml$1(tooltipRenderer(params), defaults);\n            }\n        }\n        return toTooltipHtml$1(defaults);\n    };\n    LineSeries.prototype.getLegendData = function () {\n        var _a, _b, _c;\n        var _d = this, id = _d.id, data = _d.data, xKey = _d.xKey, yKey = _d.yKey, yName = _d.yName, visible = _d.visible, title = _d.title, marker = _d.marker, stroke = _d.stroke, strokeOpacity = _d.strokeOpacity;\n        if (!(data && data.length && xKey && yKey)) {\n            return [];\n        }\n        return [\n            {\n                id: id,\n                itemId: yKey,\n                seriesId: id,\n                enabled: visible,\n                label: {\n                    text: title || yName || yKey,\n                },\n                marker: {\n                    shape: marker.shape,\n                    fill: marker.fill || 'rgba(0, 0, 0, 0)',\n                    stroke: marker.stroke || stroke || 'rgba(0, 0, 0, 0)',\n                    fillOpacity: (_a = marker.fillOpacity) !== null && _a !== void 0 ? _a : 1,\n                    strokeOpacity: (_c = (_b = marker.strokeOpacity) !== null && _b !== void 0 ? _b : strokeOpacity) !== null && _c !== void 0 ? _c : 1,\n                },\n            },\n        ];\n    };\n    LineSeries.prototype.isLabelEnabled = function () {\n        return this.label.enabled;\n    };\n    LineSeries.className = 'LineSeries';\n    LineSeries.type = 'line';\n    __decorate$1o([\n        Validate(OPT_STRING)\n    ], LineSeries.prototype, \"title\", void 0);\n    __decorate$1o([\n        Validate(OPT_COLOR_STRING)\n    ], LineSeries.prototype, \"stroke\", void 0);\n    __decorate$1o([\n        Validate(OPT_LINE_DASH)\n    ], LineSeries.prototype, \"lineDash\", void 0);\n    __decorate$1o([\n        Validate(NUMBER(0))\n    ], LineSeries.prototype, \"lineDashOffset\", void 0);\n    __decorate$1o([\n        Validate(NUMBER(0))\n    ], LineSeries.prototype, \"strokeWidth\", void 0);\n    __decorate$1o([\n        Validate(NUMBER(0, 1))\n    ], LineSeries.prototype, \"strokeOpacity\", void 0);\n    __decorate$1o([\n        Validate(STRING)\n    ], LineSeries.prototype, \"_xKey\", void 0);\n    __decorate$1o([\n        Validate(STRING)\n    ], LineSeries.prototype, \"xName\", void 0);\n    __decorate$1o([\n        Validate(STRING)\n    ], LineSeries.prototype, \"_yKey\", void 0);\n    __decorate$1o([\n        Validate(STRING)\n    ], LineSeries.prototype, \"yName\", void 0);\n    return LineSeries;\n}(CartesianSeries));\n\nvar __extends$20 = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __assign$w = (undefined && undefined.__assign) || function () {\n    __assign$w = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign$w.apply(this, arguments);\n};\nvar __decorate$1n = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __awaiter$3 = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {\n    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n    return new (P || (P = Promise))(function (resolve, reject) {\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\n    });\n};\nvar __generator$3 = (undefined && undefined.__generator) || function (thisArg, body) {\n    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n    return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n    function verb(n) { return function (v) { return step([n, v]); }; }\n    function step(op) {\n        if (f) throw new TypeError(\"Generator is already executing.\");\n        while (_) try {\n            if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n            if (y = 0, t) op = [op[0] & 2, t.value];\n            switch (op[0]) {\n                case 0: case 1: t = op; break;\n                case 4: _.label++; return { value: op[1], done: false };\n                case 5: _.label++; y = op[1]; op = [0]; continue;\n                case 7: op = _.ops.pop(); _.trys.pop(); continue;\n                default:\n                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n                    if (t[2]) _.ops.pop();\n                    _.trys.pop(); continue;\n            }\n            op = body.call(thisArg, _);\n        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n    }\n};\nvar __read$t = (undefined && undefined.__read) || function (o, n) {\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n    if (!m) return o;\n    var i = m.call(o), r, ar = [], e;\n    try {\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n    }\n    catch (error) { e = { error: error }; }\n    finally {\n        try {\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\n        }\n        finally { if (e) throw e.error; }\n    }\n    return ar;\n};\nvar __spread$g = (undefined && undefined.__spread) || function () {\n    for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read$t(arguments[i]));\n    return ar;\n};\nvar __values$c = (undefined && undefined.__values) || function(o) {\n    var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n    if (m) return m.call(o);\n    if (o && typeof o.length === \"number\") return {\n        next: function () {\n            if (o && i >= o.length) o = void 0;\n            return { value: o && o[i++], done: !o };\n        }\n    };\n    throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nvar ScatterSeriesNodeBaseClickEvent = /** @class */ (function (_super) {\n    __extends$20(ScatterSeriesNodeBaseClickEvent, _super);\n    function ScatterSeriesNodeBaseClickEvent(sizeKey, xKey, yKey, nativeEvent, datum, series) {\n        var _this = _super.call(this, xKey, yKey, nativeEvent, datum, series) || this;\n        _this.sizeKey = sizeKey;\n        return _this;\n    }\n    return ScatterSeriesNodeBaseClickEvent;\n}(CartesianSeriesNodeBaseClickEvent));\nvar ScatterSeriesNodeClickEvent = /** @class */ (function (_super) {\n    __extends$20(ScatterSeriesNodeClickEvent, _super);\n    function ScatterSeriesNodeClickEvent() {\n        var _this = _super !== null && _super.apply(this, arguments) || this;\n        _this.type = 'nodeClick';\n        return _this;\n    }\n    return ScatterSeriesNodeClickEvent;\n}(ScatterSeriesNodeBaseClickEvent));\nvar ScatterSeriesNodeDoubleClickEvent = /** @class */ (function (_super) {\n    __extends$20(ScatterSeriesNodeDoubleClickEvent, _super);\n    function ScatterSeriesNodeDoubleClickEvent() {\n        var _this = _super !== null && _super.apply(this, arguments) || this;\n        _this.type = 'nodeDoubleClick';\n        return _this;\n    }\n    return ScatterSeriesNodeDoubleClickEvent;\n}(ScatterSeriesNodeBaseClickEvent));\nvar ScatterSeriesTooltip = /** @class */ (function (_super) {\n    __extends$20(ScatterSeriesTooltip, _super);\n    function ScatterSeriesTooltip() {\n        var _this = _super !== null && _super.apply(this, arguments) || this;\n        _this.renderer = undefined;\n        return _this;\n    }\n    __decorate$1n([\n        Validate(OPT_FUNCTION)\n    ], ScatterSeriesTooltip.prototype, \"renderer\", void 0);\n    return ScatterSeriesTooltip;\n}(SeriesTooltip));\nvar ScatterSeries = /** @class */ (function (_super) {\n    __extends$20(ScatterSeries, _super);\n    function ScatterSeries() {\n        var _this = _super.call(this, {\n            pickModes: [\n                SeriesNodePickMode.NEAREST_BY_MAIN_CATEGORY_AXIS_FIRST,\n                SeriesNodePickMode.NEAREST_NODE,\n                SeriesNodePickMode.EXACT_SHAPE_MATCH,\n            ],\n            pathsPerSeries: 0,\n            hasMarkers: true,\n        }) || this;\n        _this.sizeScale = new LinearScale$1();\n        _this.marker = new CartesianSeriesMarker();\n        _this.label = new Label$1();\n        _this.title = undefined;\n        _this.labelKey = undefined;\n        _this.xName = '';\n        _this.yName = '';\n        _this.sizeName = 'Size';\n        _this.labelName = 'Label';\n        _this._xKey = '';\n        _this._yKey = '';\n        _this._sizeKey = undefined;\n        _this.tooltip = new ScatterSeriesTooltip();\n        var label = _this.label;\n        label.enabled = false;\n        return _this;\n    }\n    Object.defineProperty(ScatterSeries.prototype, \"xKey\", {\n        get: function () {\n            return this._xKey;\n        },\n        set: function (value) {\n            this._xKey = value;\n            this.processedData = undefined;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(ScatterSeries.prototype, \"yKey\", {\n        get: function () {\n            return this._yKey;\n        },\n        set: function (value) {\n            this._yKey = value;\n            this.processedData = undefined;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(ScatterSeries.prototype, \"sizeKey\", {\n        get: function () {\n            return this._sizeKey;\n        },\n        set: function (value) {\n            this._sizeKey = value;\n            this.processedData = undefined;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    ScatterSeries.prototype.processData = function () {\n        var _a, _b, _c, _d;\n        return __awaiter$3(this, void 0, void 0, function () {\n            var _e, xKey, yKey, sizeKey, xAxis, yAxis, marker, data, isContinuousX, isContinuousY, sizeKeyIdx, processedSize;\n            return __generator$3(this, function (_f) {\n                _e = this, xKey = _e.xKey, yKey = _e.yKey, sizeKey = _e.sizeKey, xAxis = _e.xAxis, yAxis = _e.yAxis, marker = _e.marker, data = _e.data;\n                isContinuousX = (xAxis === null || xAxis === void 0 ? void 0 : xAxis.scale) instanceof ContinuousScale;\n                isContinuousY = (yAxis === null || yAxis === void 0 ? void 0 : yAxis.scale) instanceof ContinuousScale;\n                this.dataModel = new DataModel({\n                    props: __spread$g([\n                        valueProperty(xKey, isContinuousX),\n                        valueProperty(yKey, isContinuousY)\n                    ], (sizeKey ? [valueProperty(sizeKey, true)] : [])),\n                    dataVisible: this.visible,\n                });\n                this.processedData = this.dataModel.processData(data !== null && data !== void 0 ? data : []);\n                if (sizeKey) {\n                    sizeKeyIdx = (_b = (_a = this.dataModel.resolveProcessedDataIndex(sizeKey)) === null || _a === void 0 ? void 0 : _a.index) !== null && _b !== void 0 ? _b : -1;\n                    processedSize = (_d = (_c = this.processedData) === null || _c === void 0 ? void 0 : _c.domain.values[sizeKeyIdx]) !== null && _d !== void 0 ? _d : [];\n                    this.sizeScale.domain = marker.domain ? marker.domain : processedSize;\n                }\n                return [2 /*return*/];\n            });\n        });\n    };\n    ScatterSeries.prototype.getDomain = function (direction) {\n        var _a, _b, _c, _d, _e, _f;\n        var xDataIdx = (_a = this.dataModel) === null || _a === void 0 ? void 0 : _a.resolveProcessedDataIndex(this.xKey);\n        var yDataIdx = (_b = this.dataModel) === null || _b === void 0 ? void 0 : _b.resolveProcessedDataIndex(this.yKey);\n        if (!xDataIdx || !yDataIdx) {\n            return [];\n        }\n        if (direction === ChartAxisDirection.X) {\n            return (_d = (_c = this.processedData) === null || _c === void 0 ? void 0 : _c.domain.values[0]) !== null && _d !== void 0 ? _d : [];\n        }\n        else {\n            return (_f = (_e = this.processedData) === null || _e === void 0 ? void 0 : _e.domain.values[1]) !== null && _f !== void 0 ? _f : [];\n        }\n    };\n    ScatterSeries.prototype.getNodeClickEvent = function (event, datum) {\n        return new ScatterSeriesNodeClickEvent(this.sizeKey, this.xKey, this.yKey, event, datum, this);\n    };\n    ScatterSeries.prototype.getNodeDoubleClickEvent = function (event, datum) {\n        return new ScatterSeriesNodeDoubleClickEvent(this.sizeKey, this.xKey, this.yKey, event, datum, this);\n    };\n    ScatterSeries.prototype.createNodeData = function () {\n        var _a, _b, _c, _d, _e, _f;\n        return __awaiter$3(this, void 0, void 0, function () {\n            var _g, visible, xAxis, yAxis, yKey, xKey, label, labelKey, xDataIdx, yDataIdx, xScale, yScale, xOffset, yOffset, _h, sizeScale, marker, nodeData, font, actualLength, _j, _k, _l, values, datum, x, y, text, size, markerSize;\n            var e_1, _m;\n            return __generator$3(this, function (_o) {\n                _g = this, visible = _g.visible, xAxis = _g.xAxis, yAxis = _g.yAxis, yKey = _g.yKey, xKey = _g.xKey, label = _g.label, labelKey = _g.labelKey;\n                xDataIdx = (_a = this.dataModel) === null || _a === void 0 ? void 0 : _a.resolveProcessedDataIndex(xKey);\n                yDataIdx = (_b = this.dataModel) === null || _b === void 0 ? void 0 : _b.resolveProcessedDataIndex(yKey);\n                if (!(xDataIdx && yDataIdx && visible && xAxis && yAxis)) {\n                    return [2 /*return*/, []];\n                }\n                xScale = xAxis.scale;\n                yScale = yAxis.scale;\n                xOffset = (xScale.bandwidth || 0) / 2;\n                yOffset = (yScale.bandwidth || 0) / 2;\n                _h = this, sizeScale = _h.sizeScale, marker = _h.marker;\n                nodeData = new Array((_d = (_c = this.processedData) === null || _c === void 0 ? void 0 : _c.data.length) !== null && _d !== void 0 ? _d : 0);\n                sizeScale.range = [marker.size, marker.maxSize];\n                font = label.getFont();\n                actualLength = 0;\n                try {\n                    for (_j = __values$c((_f = (_e = this.processedData) === null || _e === void 0 ? void 0 : _e.data) !== null && _f !== void 0 ? _f : []), _k = _j.next(); !_k.done; _k = _j.next()) {\n                        _l = _k.value, values = _l.values, datum = _l.datum;\n                        x = xScale.convert(values[xDataIdx.index]) + xOffset;\n                        y = yScale.convert(values[yDataIdx.index]) + yOffset;\n                        if (!this.checkRangeXY(x, y, xAxis, yAxis)) {\n                            continue;\n                        }\n                        text = labelKey ? String(datum[labelKey]) : '';\n                        size = HdpiCanvas.getTextSize(text, font);\n                        markerSize = values.length > 2 ? sizeScale.convert(values[2]) : marker.size;\n                        nodeData[actualLength++] = {\n                            series: this,\n                            itemId: yKey,\n                            yKey: yKey,\n                            xKey: xKey,\n                            datum: datum,\n                            point: { x: x, y: y, size: markerSize },\n                            nodeMidPoint: { x: x, y: y },\n                            label: __assign$w({ text: text }, size),\n                        };\n                    }\n                }\n                catch (e_1_1) { e_1 = { error: e_1_1 }; }\n                finally {\n                    try {\n                        if (_k && !_k.done && (_m = _j.return)) _m.call(_j);\n                    }\n                    finally { if (e_1) throw e_1.error; }\n                }\n                nodeData.length = actualLength;\n                return [2 /*return*/, [{ itemId: this.yKey, nodeData: nodeData, labelData: nodeData }]];\n            });\n        });\n    };\n    ScatterSeries.prototype.isPathOrSelectionDirty = function () {\n        return this.marker.isDirty();\n    };\n    ScatterSeries.prototype.getLabelData = function () {\n        var _a;\n        return (_a = this.contextNodeData) === null || _a === void 0 ? void 0 : _a.reduce(function (r, n) { return r.concat(n.labelData); }, []);\n    };\n    ScatterSeries.prototype.markerFactory = function () {\n        var shape = this.marker.shape;\n        var MarkerShape = getMarker$1(shape);\n        return new MarkerShape();\n    };\n    ScatterSeries.prototype.updateMarkerSelection = function (opts) {\n        return __awaiter$3(this, void 0, void 0, function () {\n            var nodeData, markerSelection, enabled, data;\n            return __generator$3(this, function (_a) {\n                nodeData = opts.nodeData, markerSelection = opts.markerSelection;\n                enabled = this.marker.enabled;\n                if (this.marker.isDirty()) {\n                    markerSelection.clear();\n                }\n                data = enabled ? nodeData : [];\n                return [2 /*return*/, markerSelection.update(data)];\n            });\n        });\n    };\n    ScatterSeries.prototype.updateMarkerNodes = function (opts) {\n        return __awaiter$3(this, void 0, void 0, function () {\n            var markerSelection, isDatumHighlighted, _a, marker, xKey, yKey, sizeScale, _b, markerFillOpacity, markerStrokeOpacity, markerStrokeWidth, _c, highlightedFill, _d, highlightFillOpacity, highlightedStroke, highlightedDatumStrokeWidth, seriesId, formatter, customMarker;\n            return __generator$3(this, function (_e) {\n                markerSelection = opts.markerSelection, isDatumHighlighted = opts.isHighlight;\n                _a = this, marker = _a.marker, xKey = _a.xKey, yKey = _a.yKey, sizeScale = _a.sizeScale, _b = _a.marker, markerFillOpacity = _b.fillOpacity, markerStrokeOpacity = _b.strokeOpacity, markerStrokeWidth = _b.strokeWidth, _c = _a.highlightStyle.item, highlightedFill = _c.fill, _d = _c.fillOpacity, highlightFillOpacity = _d === void 0 ? markerFillOpacity : _d, highlightedStroke = _c.stroke, highlightedDatumStrokeWidth = _c.strokeWidth, seriesId = _a.id;\n                formatter = marker.formatter;\n                sizeScale.range = [marker.size, marker.maxSize];\n                customMarker = typeof marker.shape === 'function';\n                markerSelection.each(function (node, datum) {\n                    var _a, _b, _c, _d, _e, _f, _g;\n                    var fill = isDatumHighlighted && highlightedFill !== undefined ? highlightedFill : marker.fill;\n                    var fillOpacity = isDatumHighlighted ? highlightFillOpacity : markerFillOpacity;\n                    var stroke = isDatumHighlighted && highlightedStroke !== undefined ? highlightedStroke : marker.stroke;\n                    var strokeOpacity = markerStrokeOpacity;\n                    var strokeWidth = isDatumHighlighted && highlightedDatumStrokeWidth !== undefined\n                        ? highlightedDatumStrokeWidth\n                        : markerStrokeWidth !== null && markerStrokeWidth !== void 0 ? markerStrokeWidth : 1;\n                    var size = (_b = (_a = datum.point) === null || _a === void 0 ? void 0 : _a.size) !== null && _b !== void 0 ? _b : 0;\n                    var format = undefined;\n                    if (formatter) {\n                        format = formatter({\n                            datum: datum.datum,\n                            xKey: xKey,\n                            yKey: yKey,\n                            fill: fill,\n                            stroke: stroke,\n                            strokeWidth: strokeWidth,\n                            size: size,\n                            highlighted: isDatumHighlighted,\n                            seriesId: seriesId,\n                        });\n                    }\n                    node.fill = (format && format.fill) || fill;\n                    node.stroke = (format && format.stroke) || stroke;\n                    node.strokeWidth = (_c = format === null || format === void 0 ? void 0 : format.strokeWidth) !== null && _c !== void 0 ? _c : strokeWidth;\n                    node.size = format && format.size !== undefined ? format.size : size;\n                    node.fillOpacity = fillOpacity !== null && fillOpacity !== void 0 ? fillOpacity : 1;\n                    node.strokeOpacity = strokeOpacity !== null && strokeOpacity !== void 0 ? strokeOpacity : 1;\n                    node.translationX = (_e = (_d = datum.point) === null || _d === void 0 ? void 0 : _d.x) !== null && _e !== void 0 ? _e : 0;\n                    node.translationY = (_g = (_f = datum.point) === null || _f === void 0 ? void 0 : _f.y) !== null && _g !== void 0 ? _g : 0;\n                    node.visible = node.size > 0;\n                    if (!customMarker || node.dirtyPath) {\n                        return;\n                    }\n                    // Only for cutom marker shapes\n                    node.path.clear({ trackChanges: true });\n                    node.updatePath();\n                    node.checkPathDirty();\n                });\n                if (!isDatumHighlighted) {\n                    this.marker.markClean();\n                }\n                return [2 /*return*/];\n            });\n        });\n    };\n    ScatterSeries.prototype.updateLabelSelection = function (opts) {\n        var _a, _b;\n        return __awaiter$3(this, void 0, void 0, function () {\n            var labelSelection, enabled, placedLabels, placedNodeDatum;\n            return __generator$3(this, function (_c) {\n                labelSelection = opts.labelSelection;\n                enabled = this.label.enabled;\n                placedLabels = enabled ? (_b = (_a = this.chart) === null || _a === void 0 ? void 0 : _a.placeLabels().get(this)) !== null && _b !== void 0 ? _b : [] : [];\n                placedNodeDatum = placedLabels.map(function (v) { return (__assign$w(__assign$w({}, v.datum), { point: {\n                        x: v.x,\n                        y: v.y,\n                        size: v.datum.point.size,\n                    } })); });\n                return [2 /*return*/, labelSelection.update(placedNodeDatum)];\n            });\n        });\n    };\n    ScatterSeries.prototype.updateLabelNodes = function (opts) {\n        return __awaiter$3(this, void 0, void 0, function () {\n            var labelSelection, label;\n            return __generator$3(this, function (_a) {\n                labelSelection = opts.labelSelection;\n                label = this.label;\n                labelSelection.each(function (text, datum) {\n                    var _a, _b, _c, _d;\n                    text.text = datum.label.text;\n                    text.fill = label.color;\n                    text.x = (_b = (_a = datum.point) === null || _a === void 0 ? void 0 : _a.x) !== null && _b !== void 0 ? _b : 0;\n                    text.y = (_d = (_c = datum.point) === null || _c === void 0 ? void 0 : _c.y) !== null && _d !== void 0 ? _d : 0;\n                    text.fontStyle = label.fontStyle;\n                    text.fontWeight = label.fontWeight;\n                    text.fontSize = label.fontSize;\n                    text.fontFamily = label.fontFamily;\n                    text.textAlign = 'left';\n                    text.textBaseline = 'top';\n                });\n                return [2 /*return*/];\n            });\n        });\n    };\n    ScatterSeries.prototype.getTooltipHtml = function (nodeDatum) {\n        var _a, _b, _c;\n        var _d = this, xKey = _d.xKey, yKey = _d.yKey, xAxis = _d.xAxis, yAxis = _d.yAxis;\n        if (!xKey || !yKey || !xAxis || !yAxis) {\n            return '';\n        }\n        var _e = this, marker = _e.marker, tooltip = _e.tooltip, xName = _e.xName, yName = _e.yName, sizeKey = _e.sizeKey, sizeName = _e.sizeName, labelKey = _e.labelKey, labelName = _e.labelName, seriesId = _e.id;\n        var fill = marker.fill, stroke = marker.stroke;\n        var strokeWidth = this.getStrokeWidth((_a = marker.strokeWidth) !== null && _a !== void 0 ? _a : 1);\n        var formatter = this.marker.formatter;\n        var format = undefined;\n        if (formatter) {\n            format = formatter({\n                datum: nodeDatum,\n                xKey: xKey,\n                yKey: yKey,\n                fill: fill,\n                stroke: stroke,\n                strokeWidth: strokeWidth,\n                size: (_c = (_b = nodeDatum.point) === null || _b === void 0 ? void 0 : _b.size) !== null && _c !== void 0 ? _c : 0,\n                highlighted: false,\n                seriesId: seriesId,\n            });\n        }\n        var color = (format && format.fill) || fill || 'gray';\n        var title = this.title || yName;\n        var datum = nodeDatum.datum;\n        var xValue = datum[xKey];\n        var yValue = datum[yKey];\n        var xString = sanitizeHtml(xAxis.formatDatum(xValue));\n        var yString = sanitizeHtml(yAxis.formatDatum(yValue));\n        var content = \"<b>\" + sanitizeHtml(xName || xKey) + \"</b>: \" + xString + \"<br>\" +\n            (\"<b>\" + sanitizeHtml(yName || yKey) + \"</b>: \" + yString);\n        if (sizeKey) {\n            content += \"<br><b>\" + sanitizeHtml(sizeName || sizeKey) + \"</b>: \" + sanitizeHtml(datum[sizeKey]);\n        }\n        if (labelKey) {\n            content = \"<b>\" + sanitizeHtml(labelName || labelKey) + \"</b>: \" + sanitizeHtml(datum[labelKey]) + \"<br>\" + content;\n        }\n        var defaults = {\n            title: title,\n            backgroundColor: color,\n            content: content,\n        };\n        var tooltipRenderer = tooltip.renderer;\n        if (tooltipRenderer) {\n            return toTooltipHtml$1(tooltipRenderer({\n                datum: datum,\n                xKey: xKey,\n                xValue: xValue,\n                xName: xName,\n                yKey: yKey,\n                yValue: yValue,\n                yName: yName,\n                sizeKey: sizeKey,\n                sizeName: sizeName,\n                labelKey: labelKey,\n                labelName: labelName,\n                title: title,\n                color: color,\n                seriesId: seriesId,\n            }), defaults);\n        }\n        return toTooltipHtml$1(defaults);\n    };\n    ScatterSeries.prototype.getLegendData = function () {\n        var _a = this, id = _a.id, data = _a.data, xKey = _a.xKey, yKey = _a.yKey, yName = _a.yName, title = _a.title, visible = _a.visible, marker = _a.marker;\n        var fill = marker.fill, stroke = marker.stroke, fillOpacity = marker.fillOpacity, strokeOpacity = marker.strokeOpacity;\n        if (!(data && data.length && xKey && yKey)) {\n            return [];\n        }\n        return [\n            {\n                id: id,\n                itemId: yKey,\n                seriesId: id,\n                enabled: visible,\n                label: {\n                    text: title || yName || yKey,\n                },\n                marker: {\n                    shape: marker.shape,\n                    fill: marker.fill || fill || 'rgba(0, 0, 0, 0)',\n                    stroke: marker.stroke || stroke || 'rgba(0, 0, 0, 0)',\n                    fillOpacity: fillOpacity !== null && fillOpacity !== void 0 ? fillOpacity : 1,\n                    strokeOpacity: strokeOpacity !== null && strokeOpacity !== void 0 ? strokeOpacity : 1,\n                },\n            },\n        ];\n    };\n    ScatterSeries.prototype.isLabelEnabled = function () {\n        return this.label.enabled;\n    };\n    ScatterSeries.className = 'ScatterSeries';\n    ScatterSeries.type = 'scatter';\n    __decorate$1n([\n        Validate(OPT_STRING)\n    ], ScatterSeries.prototype, \"title\", void 0);\n    __decorate$1n([\n        Validate(OPT_STRING)\n    ], ScatterSeries.prototype, \"labelKey\", void 0);\n    __decorate$1n([\n        Validate(STRING)\n    ], ScatterSeries.prototype, \"xName\", void 0);\n    __decorate$1n([\n        Validate(STRING)\n    ], ScatterSeries.prototype, \"yName\", void 0);\n    __decorate$1n([\n        Validate(OPT_STRING)\n    ], ScatterSeries.prototype, \"sizeName\", void 0);\n    __decorate$1n([\n        Validate(OPT_STRING)\n    ], ScatterSeries.prototype, \"labelName\", void 0);\n    __decorate$1n([\n        Validate(STRING)\n    ], ScatterSeries.prototype, \"_xKey\", void 0);\n    __decorate$1n([\n        Validate(STRING)\n    ], ScatterSeries.prototype, \"_yKey\", void 0);\n    __decorate$1n([\n        Validate(OPT_STRING)\n    ], ScatterSeries.prototype, \"_sizeKey\", void 0);\n    return ScatterSeries;\n}(CartesianSeries));\n\nfunction isPointInSector(x, y, sector) {\n    var radius = Math.sqrt(Math.pow(x, 2) + Math.pow(y, 2));\n    var innerRadius = sector.innerRadius, outerRadius = sector.outerRadius;\n    if (radius < Math.min(innerRadius, outerRadius) || radius > Math.max(innerRadius, outerRadius)) {\n        return false;\n    }\n    // Start and End angles are expected to be [-90, 270]\n    // while Math.atan2 returns [-180, 180]\n    var angle = Math.atan2(y, x);\n    if (angle < -Math.PI / 2) {\n        angle += 2 * Math.PI;\n    }\n    // Start is actually bigger than End clock-wise\n    var startAngle = sector.startAngle, endAngle = sector.endAngle;\n    if (endAngle === -Math.PI / 2) {\n        return angle < startAngle;\n    }\n    if (startAngle === (3 * Math.PI) / 2) {\n        return angle > endAngle;\n    }\n    return angle >= endAngle && angle <= startAngle;\n}\nfunction lineCollidesSector(line, sector) {\n    var startAngle = sector.startAngle, endAngle = sector.endAngle, innerRadius = sector.innerRadius, outerRadius = sector.outerRadius;\n    var outerStart = { x: outerRadius * Math.cos(startAngle), y: outerRadius * Math.sin(startAngle) };\n    var outerEnd = { x: outerRadius * Math.cos(endAngle), y: outerRadius * Math.sin(endAngle) };\n    var innerStart = innerRadius === 0\n        ? { x: 0, y: 0 }\n        : { x: innerRadius * Math.cos(startAngle), y: innerRadius * Math.sin(startAngle) };\n    var innerEnd = innerRadius === 0\n        ? { x: 0, y: 0 }\n        : { x: innerRadius * Math.cos(endAngle), y: innerRadius * Math.sin(endAngle) };\n    return (segmentIntersection(line.start.x, line.start.y, line.end.x, line.end.y, outerStart.x, outerStart.y, innerStart.x, innerStart.y) != null ||\n        segmentIntersection(line.start.x, line.start.y, line.end.x, line.end.y, outerEnd.x, outerEnd.y, innerEnd.x, innerEnd.y) != null ||\n        arcIntersections(0, 0, outerRadius, startAngle, endAngle, true, line.start.x, line.start.y, line.end.x, line.end.y).length > 0);\n}\nfunction boxCollidesSector(box, sector) {\n    var topLeft = { x: box.x, y: box.y };\n    var topRight = { x: box.x + box.width, y: box.y };\n    var bottomLeft = { x: box.x, y: box.y + box.height };\n    var bottomRight = { x: box.x + box.width, y: box.y + box.height };\n    return (lineCollidesSector({ start: topLeft, end: topRight }, sector) ||\n        lineCollidesSector({ start: bottomLeft, end: bottomRight }, sector));\n}\n\nvar __extends$1$ = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$1m = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar Sector = /** @class */ (function (_super) {\n    __extends$1$(Sector, _super);\n    function Sector() {\n        var _this = _super !== null && _super.apply(this, arguments) || this;\n        _this.centerX = 0;\n        _this.centerY = 0;\n        _this.innerRadius = 10;\n        _this.outerRadius = 20;\n        _this.startAngle = 0;\n        _this.endAngle = Math.PI * 2;\n        _this.angleOffset = 0;\n        return _this;\n    }\n    Sector.prototype.computeBBox = function () {\n        var radius = this.outerRadius;\n        return new BBox(this.centerX - radius, this.centerY - radius, radius * 2, radius * 2);\n    };\n    Sector.prototype.updatePath = function () {\n        var path = this.path;\n        var angleOffset = this.angleOffset;\n        var startAngle = Math.min(this.startAngle, this.endAngle) + angleOffset;\n        var endAngle = Math.max(this.startAngle, this.endAngle) + angleOffset;\n        var innerRadius = Math.min(this.innerRadius, this.outerRadius);\n        var outerRadius = Math.max(this.innerRadius, this.outerRadius);\n        var fullPie = isEqual$2(normalizeAngle360(this.startAngle), normalizeAngle360(this.endAngle));\n        var centerX = this.centerX;\n        var centerY = this.centerY;\n        path.clear();\n        if (fullPie) {\n            path.arc(centerX, centerY, outerRadius, startAngle, endAngle);\n            if (innerRadius > 0) {\n                path.moveTo(centerX + innerRadius * Math.cos(endAngle), centerY + innerRadius * Math.sin(endAngle));\n                path.arc(centerX, centerY, innerRadius, endAngle, startAngle, true);\n            }\n        }\n        else {\n            path.moveTo(centerX + innerRadius * Math.cos(startAngle), centerY + innerRadius * Math.sin(startAngle));\n            path.arc(centerX, centerY, outerRadius, startAngle, endAngle);\n            if (innerRadius > 0) {\n                path.arc(centerX, centerY, innerRadius, endAngle, startAngle, true);\n            }\n            else {\n                path.lineTo(centerX, centerY);\n            }\n        }\n        path.closePath();\n        this.dirtyPath = false;\n    };\n    Sector.prototype.isPointInPath = function (x, y) {\n        var angleOffset = this.angleOffset;\n        var startAngle = this.startAngle + angleOffset;\n        var endAngle = this.endAngle + angleOffset;\n        var innerRadius = Math.min(this.innerRadius, this.outerRadius);\n        var outerRadius = Math.max(this.innerRadius, this.outerRadius);\n        var point = this.transformPoint(x, y);\n        return isPointInSector(point.x, point.y, { startAngle: startAngle, endAngle: endAngle, innerRadius: innerRadius, outerRadius: outerRadius });\n    };\n    Sector.className = 'Sector';\n    __decorate$1m([\n        ScenePathChangeDetection()\n    ], Sector.prototype, \"centerX\", void 0);\n    __decorate$1m([\n        ScenePathChangeDetection()\n    ], Sector.prototype, \"centerY\", void 0);\n    __decorate$1m([\n        ScenePathChangeDetection()\n    ], Sector.prototype, \"innerRadius\", void 0);\n    __decorate$1m([\n        ScenePathChangeDetection()\n    ], Sector.prototype, \"outerRadius\", void 0);\n    __decorate$1m([\n        ScenePathChangeDetection()\n    ], Sector.prototype, \"startAngle\", void 0);\n    __decorate$1m([\n        ScenePathChangeDetection()\n    ], Sector.prototype, \"endAngle\", void 0);\n    __decorate$1m([\n        ScenePathChangeDetection()\n    ], Sector.prototype, \"angleOffset\", void 0);\n    return Sector;\n}(Path));\n\nvar __extends$1_ = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __assign$v = (undefined && undefined.__assign) || function () {\n    __assign$v = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign$v.apply(this, arguments);\n};\nvar __decorate$1l = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __awaiter$2 = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {\n    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n    return new (P || (P = Promise))(function (resolve, reject) {\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\n    });\n};\nvar __generator$2 = (undefined && undefined.__generator) || function (thisArg, body) {\n    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n    return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n    function verb(n) { return function (v) { return step([n, v]); }; }\n    function step(op) {\n        if (f) throw new TypeError(\"Generator is already executing.\");\n        while (_) try {\n            if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n            if (y = 0, t) op = [op[0] & 2, t.value];\n            switch (op[0]) {\n                case 0: case 1: t = op; break;\n                case 4: _.label++; return { value: op[1], done: false };\n                case 5: _.label++; y = op[1]; op = [0]; continue;\n                case 7: op = _.ops.pop(); _.trys.pop(); continue;\n                default:\n                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n                    if (t[2]) _.ops.pop();\n                    _.trys.pop(); continue;\n            }\n            op = body.call(thisArg, _);\n        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n    }\n};\nvar __read$s = (undefined && undefined.__read) || function (o, n) {\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n    if (!m) return o;\n    var i = m.call(o), r, ar = [], e;\n    try {\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n    }\n    catch (error) { e = { error: error }; }\n    finally {\n        try {\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\n        }\n        finally { if (e) throw e.error; }\n    }\n    return ar;\n};\nvar __spread$f = (undefined && undefined.__spread) || function () {\n    for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read$s(arguments[i]));\n    return ar;\n};\nvar PieSeriesNodeBaseClickEvent = /** @class */ (function (_super) {\n    __extends$1_(PieSeriesNodeBaseClickEvent, _super);\n    function PieSeriesNodeBaseClickEvent(angleKey, calloutLabelKey, sectorLabelKey, radiusKey, nativeEvent, datum, series) {\n        var _this = _super.call(this, nativeEvent, datum, series) || this;\n        _this.angleKey = angleKey;\n        _this.calloutLabelKey = calloutLabelKey;\n        _this.sectorLabelKey = sectorLabelKey;\n        _this.radiusKey = radiusKey;\n        return _this;\n    }\n    __decorate$1l([\n        DeprecatedAndRenamedTo('calloutLabelKey')\n    ], PieSeriesNodeBaseClickEvent.prototype, \"labelKey\", void 0);\n    return PieSeriesNodeBaseClickEvent;\n}(SeriesNodeBaseClickEvent));\nvar PieSeriesNodeClickEvent = /** @class */ (function (_super) {\n    __extends$1_(PieSeriesNodeClickEvent, _super);\n    function PieSeriesNodeClickEvent() {\n        var _this = _super !== null && _super.apply(this, arguments) || this;\n        _this.type = 'nodeClick';\n        return _this;\n    }\n    return PieSeriesNodeClickEvent;\n}(PieSeriesNodeBaseClickEvent));\nvar PieSeriesNodeDoubleClickEvent = /** @class */ (function (_super) {\n    __extends$1_(PieSeriesNodeDoubleClickEvent, _super);\n    function PieSeriesNodeDoubleClickEvent() {\n        var _this = _super !== null && _super.apply(this, arguments) || this;\n        _this.type = 'nodeDoubleClick';\n        return _this;\n    }\n    return PieSeriesNodeDoubleClickEvent;\n}(PieSeriesNodeBaseClickEvent));\nvar PieNodeTag;\n(function (PieNodeTag) {\n    PieNodeTag[PieNodeTag[\"Sector\"] = 0] = \"Sector\";\n    PieNodeTag[PieNodeTag[\"Callout\"] = 1] = \"Callout\";\n    PieNodeTag[PieNodeTag[\"Label\"] = 2] = \"Label\";\n})(PieNodeTag || (PieNodeTag = {}));\nvar PieSeriesCalloutLabel = /** @class */ (function (_super) {\n    __extends$1_(PieSeriesCalloutLabel, _super);\n    function PieSeriesCalloutLabel() {\n        var _this = _super !== null && _super.apply(this, arguments) || this;\n        _this.offset = 3; // from the callout line\n        _this.minAngle = 0; // in degrees\n        _this.formatter = undefined;\n        _this.minSpacing = 4;\n        _this.maxCollisionOffset = 50;\n        return _this;\n    }\n    __decorate$1l([\n        Validate(NUMBER(0))\n    ], PieSeriesCalloutLabel.prototype, \"offset\", void 0);\n    __decorate$1l([\n        Validate(NUMBER(0))\n    ], PieSeriesCalloutLabel.prototype, \"minAngle\", void 0);\n    __decorate$1l([\n        Validate(OPT_FUNCTION)\n    ], PieSeriesCalloutLabel.prototype, \"formatter\", void 0);\n    __decorate$1l([\n        Validate(NUMBER(0))\n    ], PieSeriesCalloutLabel.prototype, \"minSpacing\", void 0);\n    __decorate$1l([\n        Validate(NUMBER(0))\n    ], PieSeriesCalloutLabel.prototype, \"maxCollisionOffset\", void 0);\n    return PieSeriesCalloutLabel;\n}(Label$1));\nvar PieSeriesSectorLabel = /** @class */ (function (_super) {\n    __extends$1_(PieSeriesSectorLabel, _super);\n    function PieSeriesSectorLabel() {\n        var _this = _super !== null && _super.apply(this, arguments) || this;\n        _this.positionOffset = 0;\n        _this.positionRatio = 0.5;\n        _this.formatter = undefined;\n        return _this;\n    }\n    __decorate$1l([\n        Validate(NUMBER())\n    ], PieSeriesSectorLabel.prototype, \"positionOffset\", void 0);\n    __decorate$1l([\n        Validate(NUMBER(0, 1))\n    ], PieSeriesSectorLabel.prototype, \"positionRatio\", void 0);\n    __decorate$1l([\n        Validate(OPT_FUNCTION)\n    ], PieSeriesSectorLabel.prototype, \"formatter\", void 0);\n    return PieSeriesSectorLabel;\n}(Label$1));\nvar PieSeriesCalloutLine = /** @class */ (function () {\n    function PieSeriesCalloutLine() {\n        this.colors = undefined;\n        this.length = 10;\n        this.strokeWidth = 1;\n    }\n    __decorate$1l([\n        Validate(OPT_COLOR_STRING_ARRAY)\n    ], PieSeriesCalloutLine.prototype, \"colors\", void 0);\n    __decorate$1l([\n        Validate(NUMBER(0))\n    ], PieSeriesCalloutLine.prototype, \"length\", void 0);\n    __decorate$1l([\n        Validate(NUMBER(0))\n    ], PieSeriesCalloutLine.prototype, \"strokeWidth\", void 0);\n    return PieSeriesCalloutLine;\n}());\nvar PieSeriesTooltip = /** @class */ (function (_super) {\n    __extends$1_(PieSeriesTooltip, _super);\n    function PieSeriesTooltip() {\n        var _this = _super !== null && _super.apply(this, arguments) || this;\n        _this.renderer = undefined;\n        return _this;\n    }\n    __decorate$1l([\n        Validate(OPT_FUNCTION)\n    ], PieSeriesTooltip.prototype, \"renderer\", void 0);\n    return PieSeriesTooltip;\n}(SeriesTooltip));\nvar PieTitle = /** @class */ (function (_super) {\n    __extends$1_(PieTitle, _super);\n    function PieTitle() {\n        var _this = _super !== null && _super.apply(this, arguments) || this;\n        _this.showInLegend = false;\n        return _this;\n    }\n    __decorate$1l([\n        Validate(BOOLEAN)\n    ], PieTitle.prototype, \"showInLegend\", void 0);\n    return PieTitle;\n}(Caption));\nvar DoughnutInnerLabel = /** @class */ (function (_super) {\n    __extends$1_(DoughnutInnerLabel, _super);\n    function DoughnutInnerLabel() {\n        var _this = _super !== null && _super.apply(this, arguments) || this;\n        _this.text = '';\n        _this.margin = 2;\n        return _this;\n    }\n    __decorate$1l([\n        Validate(STRING)\n    ], DoughnutInnerLabel.prototype, \"text\", void 0);\n    __decorate$1l([\n        Validate(NUMBER())\n    ], DoughnutInnerLabel.prototype, \"margin\", void 0);\n    return DoughnutInnerLabel;\n}(Label$1));\nvar DoughnutInnerCircle = /** @class */ (function () {\n    function DoughnutInnerCircle() {\n        this.fill = 'transparent';\n        this.fillOpacity = 1;\n    }\n    __decorate$1l([\n        Validate(COLOR_STRING)\n    ], DoughnutInnerCircle.prototype, \"fill\", void 0);\n    __decorate$1l([\n        Validate(OPT_NUMBER(0, 1))\n    ], DoughnutInnerCircle.prototype, \"fillOpacity\", void 0);\n    return DoughnutInnerCircle;\n}());\nvar PieSeries = /** @class */ (function (_super) {\n    __extends$1_(PieSeries, _super);\n    function PieSeries() {\n        var _this = _super.call(this, { useLabelLayer: true }) || this;\n        _this.radiusScale = new LinearScale$1();\n        _this.groupSelection = Selection.select(_this.contentGroup, Group);\n        _this.highlightSelection = Selection.select(_this.highlightGroup, Group);\n        /**\n         * The processed data that gets visualized.\n         */\n        _this.groupSelectionData = [];\n        _this.sectorFormatData = [];\n        _this.angleScale = (function () {\n            var scale = new LinearScale$1();\n            // Each sector is a ratio of the whole, where all ratios add up to 1.\n            scale.domain = [0, 1];\n            // Add 90 deg to start the first pie at 12 o'clock.\n            scale.range = [-Math.PI, Math.PI].map(function (angle) { return angle + Math.PI / 2; });\n            return scale;\n        })();\n        // When a user toggles a series item (e.g. from the legend), its boolean state is recorded here.\n        _this.seriesItemEnabled = [];\n        _this.calloutLabel = new PieSeriesCalloutLabel();\n        _this.label = _this.calloutLabel;\n        _this.sectorLabel = new PieSeriesSectorLabel();\n        _this.calloutLine = new PieSeriesCalloutLine();\n        _this.callout = _this.calloutLine;\n        _this.tooltip = new PieSeriesTooltip();\n        /**\n         * The key of the numeric field to use to determine the angle (for example,\n         * a pie sector angle).\n         */\n        _this.angleKey = '';\n        _this.angleName = '';\n        _this.innerLabels = [];\n        /**\n         * The key of the numeric field to use to determine the radii of pie sectors.\n         * The largest value will correspond to the full radius and smaller values to\n         * proportionally smaller radii.\n         */\n        _this.radiusKey = undefined;\n        _this.radiusName = undefined;\n        _this.radiusMin = undefined;\n        _this.radiusMax = undefined;\n        _this.calloutLabelKey = undefined;\n        _this.calloutLabelName = undefined;\n        _this.labelKey = undefined;\n        _this.labelName = undefined;\n        _this.sectorLabelKey = undefined;\n        _this.sectorLabelName = undefined;\n        _this.legendItemKey = undefined;\n        _this.fills = ['#c16068', '#a2bf8a', '#ebcc87', '#80a0c3', '#b58dae', '#85c0d1'];\n        _this.strokes = ['#874349', '#718661', '#a48f5f', '#5a7088', '#7f637a', '#5d8692'];\n        _this.fillOpacity = 1;\n        _this.strokeOpacity = 1;\n        _this.lineDash = [0];\n        _this.lineDashOffset = 0;\n        _this.formatter = undefined;\n        /**\n         * The series rotation in degrees.\n         */\n        _this.rotation = 0;\n        _this.outerRadiusOffset = 0;\n        _this.outerRadiusRatio = 1;\n        _this.innerRadiusOffset = 0;\n        _this.innerRadiusRatio = 1;\n        _this.strokeWidth = 1;\n        _this.shadow = undefined;\n        _this.highlightStyle = new HighlightStyle();\n        _this.datumSectorRefs = new WeakMap();\n        _this.backgroundGroup = _this.rootGroup.appendChild(new Group({\n            name: _this.id + \"-background\",\n            layer: true,\n            zIndex: Layers.SERIES_BACKGROUND_ZINDEX,\n        }));\n        var pieCalloutLabels = new Group({ name: 'pieCalloutLabels' });\n        var pieSectorLabels = new Group({ name: 'pieSectorLabels' });\n        var innerLabels = new Group({ name: 'innerLabels' });\n        _this.labelGroup.append(pieCalloutLabels);\n        _this.labelGroup.append(pieSectorLabels);\n        _this.labelGroup.append(innerLabels);\n        _this.calloutLabelSelection = Selection.select(pieCalloutLabels, Group);\n        _this.sectorLabelSelection = Selection.select(pieSectorLabels, Text);\n        _this.innerLabelsSelection = Selection.select(innerLabels, Text);\n        return _this;\n    }\n    Object.defineProperty(PieSeries.prototype, \"title\", {\n        get: function () {\n            return this._title;\n        },\n        set: function (value) {\n            var _a, _b;\n            var oldTitle = this._title;\n            if (oldTitle !== value) {\n                if (oldTitle) {\n                    (_a = this.labelGroup) === null || _a === void 0 ? void 0 : _a.removeChild(oldTitle.node);\n                }\n                if (value) {\n                    value.node.textBaseline = 'bottom';\n                    (_b = this.labelGroup) === null || _b === void 0 ? void 0 : _b.appendChild(value.node);\n                }\n                this._title = value;\n            }\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(PieSeries.prototype, \"data\", {\n        get: function () {\n            return this._data;\n        },\n        set: function (input) {\n            this._data = input;\n            this.processSeriesItemEnabled();\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(PieSeries.prototype, \"innerCircle\", {\n        get: function () {\n            return this._innerCircleConfig;\n        },\n        set: function (value) {\n            var _a;\n            var oldCircleCfg = this._innerCircleConfig;\n            if (oldCircleCfg !== value) {\n                var oldNode = this._innerCircleNode;\n                var circle = void 0;\n                if (oldNode) {\n                    this.backgroundGroup.removeChild(oldNode);\n                }\n                if (value) {\n                    circle = new Circle();\n                    circle.fill = value.fill;\n                    circle.fillOpacity = (_a = value.fillOpacity) !== null && _a !== void 0 ? _a : 1;\n                    this.backgroundGroup.appendChild(circle);\n                }\n                this._innerCircleConfig = value;\n                this._innerCircleNode = circle;\n            }\n        },\n        enumerable: false,\n        configurable: true\n    });\n    PieSeries.prototype.visibleChanged = function () {\n        this.processSeriesItemEnabled();\n    };\n    PieSeries.prototype.processSeriesItemEnabled = function () {\n        var _a = this, data = _a.data, visible = _a.visible;\n        this.seriesItemEnabled = (data === null || data === void 0 ? void 0 : data.map(function () { return visible; })) || [];\n    };\n    PieSeries.prototype.getDomain = function (direction) {\n        if (direction === ChartAxisDirection.X) {\n            return this.angleScale.domain;\n        }\n        else {\n            return this.radiusScale.domain;\n        }\n    };\n    PieSeries.prototype.processData = function () {\n        return __awaiter$2(this, void 0, void 0, function () {\n            var _a, angleKey, radiusKey, seriesItemEnabled, angleScale, groupSelectionData, sectorFormatData, calloutLabel, sectorLabel, seriesId, data, angleData, angleDataTotal, angleDataRatios, labelFormatter, labelKey, sectorLabelKey, labelData, sectorLabelData, radiusData, getLabelFormatterParams, showValueDeprecationWarning_1, sectorLabelFormatter, _b, radiusMin, radiusMax, radii, min_1, max, delta_1, rotation, halfPi, datumIndex, quadrantTextOpts, end;\n            var _this = this;\n            return __generator$2(this, function (_c) {\n                _a = this, angleKey = _a.angleKey, radiusKey = _a.radiusKey, seriesItemEnabled = _a.seriesItemEnabled, angleScale = _a.angleScale, groupSelectionData = _a.groupSelectionData, sectorFormatData = _a.sectorFormatData, calloutLabel = _a.calloutLabel, sectorLabel = _a.sectorLabel, seriesId = _a.id;\n                data = angleKey && this.data ? this.data : [];\n                angleData = data.map(function (datum, index) { return (seriesItemEnabled[index] && Math.abs(+datum[angleKey])) || 0; });\n                angleDataTotal = angleData.reduce(function (a, b) { return a + b; }, 0);\n                angleDataRatios = (function () {\n                    var sum = 0;\n                    return angleData.map(function (datum) { return (sum += datum / angleDataTotal); });\n                })();\n                labelFormatter = calloutLabel.formatter;\n                labelKey = calloutLabel.enabled ? this.calloutLabelKey : undefined;\n                sectorLabelKey = sectorLabel.enabled ? this.sectorLabelKey : undefined;\n                labelData = [];\n                sectorLabelData = [];\n                radiusData = [];\n                getLabelFormatterParams = function (datum) {\n                    return {\n                        datum: datum,\n                        angleKey: angleKey,\n                        angleValue: datum[angleKey],\n                        angleName: _this.angleName,\n                        radiusKey: radiusKey,\n                        radiusValue: radiusKey ? datum[radiusKey] : undefined,\n                        radiusName: _this.radiusName,\n                        labelKey: labelKey,\n                        labelValue: labelKey ? datum[labelKey] : undefined,\n                        labelName: _this.calloutLabelName,\n                        calloutLabelKey: labelKey,\n                        calloutLabelValue: labelKey ? datum[labelKey] : undefined,\n                        calloutLabelName: _this.calloutLabelName,\n                        sectorLabelKey: sectorLabelKey,\n                        sectorLabelValue: sectorLabelKey ? datum[sectorLabelKey] : undefined,\n                        sectorLabelName: _this.sectorLabelName,\n                        seriesId: seriesId,\n                    };\n                };\n                if (labelKey) {\n                    if (labelFormatter) {\n                        showValueDeprecationWarning_1 = function () {\n                            return Logger.warnOnce('the use of { value } in the pie chart label formatter function is deprecated. Please use { datum, labelKey, ... } instead.');\n                        };\n                        labelData = data.map(function (datum) {\n                            var deprecatedValue = datum[labelKey];\n                            var formatterParams = __assign$v(__assign$v({}, getLabelFormatterParams(datum)), { get value() {\n                                    showValueDeprecationWarning_1();\n                                    return deprecatedValue;\n                                },\n                                set value(v) {\n                                    showValueDeprecationWarning_1();\n                                    deprecatedValue = v;\n                                } });\n                            return labelFormatter(formatterParams);\n                        });\n                    }\n                    else {\n                        labelData = data.map(function (datum) { return String(datum[labelKey]); });\n                    }\n                }\n                sectorLabelFormatter = sectorLabel.formatter;\n                if (sectorLabelKey) {\n                    if (sectorLabelFormatter) {\n                        sectorLabelData = data.map(function (datum) {\n                            var formatterParams = getLabelFormatterParams(datum);\n                            return sectorLabelFormatter(formatterParams);\n                        });\n                    }\n                    else {\n                        sectorLabelData = data.map(function (datum) { return String(datum[sectorLabelKey]); });\n                    }\n                }\n                if (radiusKey) {\n                    _b = this, radiusMin = _b.radiusMin, radiusMax = _b.radiusMax;\n                    radii = data.map(function (datum) { return Math.abs(datum[radiusKey]); });\n                    min_1 = radiusMin !== null && radiusMin !== void 0 ? radiusMin : 0;\n                    max = radiusMax ? radiusMax : Math.max.apply(Math, __spread$f(radii));\n                    delta_1 = max - min_1;\n                    radiusData = radii.map(function (value) { return (delta_1 ? (value - min_1) / delta_1 : 1); });\n                }\n                groupSelectionData.length = 0;\n                sectorFormatData.length = 0;\n                sectorFormatData.push.apply(sectorFormatData, __spread$f(data.map(function (datum, datumIdx) { return _this.getSectorFormat(datum, datumIdx, datumIdx, false); })));\n                rotation = toRadians$1(this.rotation);\n                halfPi = Math.PI / 2;\n                datumIndex = 0;\n                quadrantTextOpts = [\n                    { textAlign: 'center', textBaseline: 'bottom' },\n                    { textAlign: 'left', textBaseline: 'middle' },\n                    { textAlign: 'center', textBaseline: 'hanging' },\n                    { textAlign: 'right', textBaseline: 'middle' },\n                ];\n                end = 0;\n                angleDataRatios.forEach(function (start) {\n                    if (isNaN(start)) {\n                        return;\n                    } // No sectors displayed - nothing to do.\n                    var radius = radiusKey ? radiusData[datumIndex] : 1;\n                    var startAngle = angleScale.convert(start) + rotation;\n                    var endAngle = angleScale.convert(end) + rotation;\n                    var midAngle = (startAngle + endAngle) / 2;\n                    var span = Math.abs(endAngle - startAngle);\n                    var midCos = Math.cos(midAngle);\n                    var midSin = Math.sin(midAngle);\n                    var labelMinAngle = toRadians$1(calloutLabel.minAngle);\n                    var labelVisible = labelKey && span > labelMinAngle;\n                    var midAngle180 = normalizeAngle180(midAngle);\n                    // Split the circle into quadrants like so: ⊗\n                    var quadrantStart = (-3 * Math.PI) / 4; // same as `normalizeAngle180(toRadians(-135))`\n                    var quadrantOffset = midAngle180 - quadrantStart;\n                    var quadrant = Math.floor(quadrantOffset / halfPi);\n                    var quadrantIndex = mod(quadrant, quadrantTextOpts.length);\n                    var _a = quadrantTextOpts[quadrantIndex], textAlign = _a.textAlign, textBaseline = _a.textBaseline;\n                    var datum = data[datumIndex];\n                    var itemId = datumIndex;\n                    groupSelectionData.push({\n                        series: _this,\n                        datum: datum,\n                        itemId: itemId,\n                        index: datumIndex,\n                        radius: radius,\n                        startAngle: startAngle,\n                        endAngle: endAngle,\n                        midAngle: midAngle,\n                        midCos: midCos,\n                        midSin: midSin,\n                        calloutLabel: labelVisible\n                            ? {\n                                text: labelData[datumIndex],\n                                textAlign: textAlign,\n                                textBaseline: textBaseline,\n                                hidden: false,\n                                collisionTextAlign: undefined,\n                                collisionOffsetY: 0,\n                                box: undefined,\n                            }\n                            : undefined,\n                        sectorLabel: sectorLabelKey\n                            ? {\n                                text: sectorLabelData[datumIndex],\n                            }\n                            : undefined,\n                        sectorFormat: sectorFormatData[datumIndex],\n                    });\n                    datumIndex++;\n                    end = start; // Update for next iteration.\n                });\n                return [2 /*return*/];\n            });\n        });\n    };\n    PieSeries.prototype.getSectorFormat = function (datum, itemId, index, highlight) {\n        var _a, _b, _c, _d, _e;\n        var _f = this, angleKey = _f.angleKey, radiusKey = _f.radiusKey, fills = _f.fills, strokes = _f.strokes, seriesFillOpacity = _f.fillOpacity, formatter = _f.formatter, seriesId = _f.id;\n        var highlightedDatum = (_a = this.highlightManager) === null || _a === void 0 ? void 0 : _a.getActiveHighlight();\n        var isDatumHighlighted = highlight && (highlightedDatum === null || highlightedDatum === void 0 ? void 0 : highlightedDatum.series) === this && itemId === highlightedDatum.itemId;\n        var highlightedStyle = isDatumHighlighted ? this.highlightStyle.item : null;\n        var fill = (highlightedStyle === null || highlightedStyle === void 0 ? void 0 : highlightedStyle.fill) || fills[index % fills.length];\n        var fillOpacity = (_b = highlightedStyle === null || highlightedStyle === void 0 ? void 0 : highlightedStyle.fillOpacity) !== null && _b !== void 0 ? _b : seriesFillOpacity;\n        var stroke = (highlightedStyle === null || highlightedStyle === void 0 ? void 0 : highlightedStyle.stroke) || strokes[index % strokes.length];\n        var strokeWidth = (_c = highlightedStyle === null || highlightedStyle === void 0 ? void 0 : highlightedStyle.strokeWidth) !== null && _c !== void 0 ? _c : this.getStrokeWidth(this.strokeWidth);\n        var format;\n        if (formatter) {\n            format = formatter({\n                datum: datum,\n                angleKey: angleKey,\n                radiusKey: radiusKey,\n                fill: fill,\n                stroke: stroke,\n                strokeWidth: strokeWidth,\n                highlighted: isDatumHighlighted,\n                seriesId: seriesId,\n            });\n        }\n        return {\n            fill: (format === null || format === void 0 ? void 0 : format.fill) || fill,\n            fillOpacity: (_d = format === null || format === void 0 ? void 0 : format.fillOpacity) !== null && _d !== void 0 ? _d : fillOpacity,\n            stroke: (format === null || format === void 0 ? void 0 : format.stroke) || stroke,\n            strokeWidth: (_e = format === null || format === void 0 ? void 0 : format.strokeWidth) !== null && _e !== void 0 ? _e : strokeWidth,\n        };\n    };\n    PieSeries.prototype.createNodeData = function () {\n        return __awaiter$2(this, void 0, void 0, function () {\n            return __generator$2(this, function (_a) {\n                return [2 /*return*/, []];\n            });\n        });\n    };\n    PieSeries.prototype.getInnerRadius = function () {\n        var _a = this, radius = _a.radius, innerRadiusRatio = _a.innerRadiusRatio, innerRadiusOffset = _a.innerRadiusOffset;\n        var innerRadius = radius * (innerRadiusRatio !== null && innerRadiusRatio !== void 0 ? innerRadiusRatio : 1) + (innerRadiusOffset ? innerRadiusOffset : 0);\n        if (innerRadius === radius || innerRadius < 0) {\n            return 0;\n        }\n        return innerRadius;\n    };\n    PieSeries.prototype.getOuterRadius = function () {\n        var _a = this, radius = _a.radius, outerRadiusRatio = _a.outerRadiusRatio, outerRadiusOffset = _a.outerRadiusOffset;\n        var outerRadius = radius * (outerRadiusRatio !== null && outerRadiusRatio !== void 0 ? outerRadiusRatio : 1) + (outerRadiusOffset ? outerRadiusOffset : 0);\n        if (outerRadius < 0) {\n            return 0;\n        }\n        return outerRadius;\n    };\n    PieSeries.prototype.updateRadiusScale = function () {\n        var innerRadius = this.getInnerRadius();\n        var outerRadius = this.getOuterRadius();\n        this.radiusScale.range = [innerRadius, outerRadius];\n    };\n    PieSeries.prototype.getTitleTranslationY = function () {\n        var _a, _b;\n        var outerRadius = Math.max(0, this.radiusScale.range[1]);\n        if (outerRadius === 0) {\n            return NaN;\n        }\n        var spacing = (_b = (_a = this.title) === null || _a === void 0 ? void 0 : _a.spacing) !== null && _b !== void 0 ? _b : 0;\n        var titleOffset = 2 + spacing;\n        var minLabelY = Math.min.apply(Math, __spread$f([0], this.groupSelectionData.map(function (d) { var _a, _b; return ((_b = (_a = d.calloutLabel) === null || _a === void 0 ? void 0 : _a.box) === null || _b === void 0 ? void 0 : _b.y) || 0; })));\n        var dy = Math.max(0, -outerRadius - minLabelY);\n        return -outerRadius - titleOffset - dy;\n    };\n    PieSeries.prototype.update = function () {\n        return __awaiter$2(this, void 0, void 0, function () {\n            var title, dy;\n            return __generator$2(this, function (_a) {\n                switch (_a.label) {\n                    case 0:\n                        title = this.title;\n                        this.updateRadiusScale();\n                        this.rootGroup.translationX = this.centerX;\n                        this.rootGroup.translationY = this.centerY;\n                        if (title) {\n                            dy = this.getTitleTranslationY();\n                            if (isFinite(dy)) {\n                                title.node.visible = title.enabled;\n                                title.node.translationY = dy;\n                            }\n                            else {\n                                title.node.visible = false;\n                            }\n                        }\n                        this.updateNodeMidPoint();\n                        return [4 /*yield*/, this.updateSelections()];\n                    case 1:\n                        _a.sent();\n                        return [4 /*yield*/, this.updateNodes()];\n                    case 2:\n                        _a.sent();\n                        return [2 /*return*/];\n                }\n            });\n        });\n    };\n    PieSeries.prototype.updateNodeMidPoint = function () {\n        var _this = this;\n        this.groupSelectionData.forEach(function (d) {\n            var radius = _this.radiusScale.convert(d.radius);\n            d.nodeMidPoint = {\n                x: d.midCos * Math.max(0, radius / 2),\n                y: d.midSin * Math.max(0, radius / 2),\n            };\n        });\n    };\n    PieSeries.prototype.updateSelections = function () {\n        return __awaiter$2(this, void 0, void 0, function () {\n            return __generator$2(this, function (_a) {\n                switch (_a.label) {\n                    case 0: return [4 /*yield*/, this.updateGroupSelection()];\n                    case 1:\n                        _a.sent();\n                        return [2 /*return*/];\n                }\n            });\n        });\n    };\n    PieSeries.prototype.updateGroupSelection = function () {\n        return __awaiter$2(this, void 0, void 0, function () {\n            var _a, groupSelection, highlightSelection, calloutLabelSelection, sectorLabelSelection, innerLabelsSelection, update;\n            var _this = this;\n            return __generator$2(this, function (_b) {\n                _a = this, groupSelection = _a.groupSelection, highlightSelection = _a.highlightSelection, calloutLabelSelection = _a.calloutLabelSelection, sectorLabelSelection = _a.sectorLabelSelection, innerLabelsSelection = _a.innerLabelsSelection;\n                update = function (selection) {\n                    return selection.update(_this.groupSelectionData, function (group) {\n                        var sector = new Sector();\n                        sector.tag = PieNodeTag.Sector;\n                        group.appendChild(sector);\n                    });\n                };\n                this.groupSelection = update(groupSelection);\n                this.highlightSelection = update(highlightSelection);\n                calloutLabelSelection.update(this.groupSelectionData, function (group) {\n                    var line = new Line();\n                    line.tag = PieNodeTag.Callout;\n                    line.pointerEvents = PointerEvents.None;\n                    group.appendChild(line);\n                    var text = new Text();\n                    text.tag = PieNodeTag.Label;\n                    text.pointerEvents = PointerEvents.None;\n                    group.appendChild(text);\n                });\n                sectorLabelSelection.update(this.groupSelectionData, function (node) {\n                    node.pointerEvents = PointerEvents.None;\n                });\n                innerLabelsSelection.update(this.innerLabels, function (node) {\n                    node.pointerEvents = PointerEvents.None;\n                });\n                return [2 /*return*/];\n            });\n        });\n    };\n    PieSeries.prototype.updateNodes = function () {\n        var _a;\n        return __awaiter$2(this, void 0, void 0, function () {\n            var highlightedDatum, isVisible, radiusScale, innerRadius, updateSectorFn;\n            var _this = this;\n            return __generator$2(this, function (_b) {\n                highlightedDatum = (_a = this.highlightManager) === null || _a === void 0 ? void 0 : _a.getActiveHighlight();\n                isVisible = this.seriesItemEnabled.indexOf(true) >= 0;\n                this.rootGroup.visible = isVisible;\n                this.backgroundGroup.visible = isVisible;\n                this.contentGroup.visible = isVisible;\n                this.highlightGroup.visible = isVisible && (highlightedDatum === null || highlightedDatum === void 0 ? void 0 : highlightedDatum.series) === this;\n                this.labelGroup.visible = isVisible;\n                this.contentGroup.opacity = this.getOpacity();\n                this.updateInnerCircle();\n                radiusScale = this.radiusScale;\n                innerRadius = radiusScale.convert(0);\n                updateSectorFn = function (sector, datum, index, isDatumHighlighted) {\n                    var radius = radiusScale.convert(datum.radius);\n                    // Bring highlighted sector's parent group to front.\n                    var sectorParent = sector.parent;\n                    var sectorGrandParent = sectorParent === null || sectorParent === void 0 ? void 0 : sectorParent.parent;\n                    if (isDatumHighlighted && sectorParent && sectorGrandParent) {\n                        sectorGrandParent.removeChild(sectorParent);\n                        sectorGrandParent.appendChild(sectorParent);\n                    }\n                    sector.innerRadius = Math.max(0, innerRadius);\n                    sector.outerRadius = Math.max(0, radius);\n                    sector.startAngle = datum.startAngle;\n                    sector.endAngle = datum.endAngle;\n                    var format = _this.getSectorFormat(datum.datum, datum.itemId, index, isDatumHighlighted);\n                    sector.fill = format.fill;\n                    sector.stroke = format.stroke;\n                    sector.strokeWidth = format.strokeWidth;\n                    sector.fillOpacity = format.fillOpacity;\n                    sector.strokeOpacity = _this.strokeOpacity;\n                    sector.lineDash = _this.lineDash;\n                    sector.lineDashOffset = _this.lineDashOffset;\n                    sector.fillShadow = _this.shadow;\n                    sector.lineJoin = 'round';\n                    sector.visible = _this.seriesItemEnabled[index];\n                    _this.datumSectorRefs.set(datum, sector);\n                };\n                this.groupSelection\n                    .selectByTag(PieNodeTag.Sector)\n                    .forEach(function (node, index) { return updateSectorFn(node, node.datum, index, false); });\n                this.highlightSelection.selectByTag(PieNodeTag.Sector).forEach(function (node, index) {\n                    var isDatumHighlighted = (highlightedDatum === null || highlightedDatum === void 0 ? void 0 : highlightedDatum.series) === _this && node.datum.itemId === highlightedDatum.itemId;\n                    node.visible = isDatumHighlighted;\n                    if (node.visible) {\n                        updateSectorFn(node, node.datum, index, isDatumHighlighted);\n                    }\n                });\n                this.updateCalloutLineNodes();\n                this.updateCalloutLabelNodes();\n                this.updateSectorLabelNodes();\n                this.updateInnerLabelNodes();\n                return [2 /*return*/];\n            });\n        });\n    };\n    PieSeries.prototype.updateCalloutLineNodes = function () {\n        var _a = this, radiusScale = _a.radiusScale, calloutLine = _a.calloutLine;\n        var calloutLength = calloutLine.length;\n        var calloutStrokeWidth = calloutLine.strokeWidth;\n        var calloutColors = calloutLine.colors || this.strokes;\n        var offset = this.calloutLabel.offset;\n        this.calloutLabelSelection.selectByTag(PieNodeTag.Callout).forEach(function (line, index) {\n            var datum = line.datum;\n            var radius = radiusScale.convert(datum.radius);\n            var outerRadius = Math.max(0, radius);\n            var label = datum.calloutLabel;\n            if (label && label.text && !label.hidden && outerRadius !== 0) {\n                line.visible = true;\n                line.strokeWidth = calloutStrokeWidth;\n                line.stroke = calloutColors[index % calloutColors.length];\n                line.fill = undefined;\n                var x1 = datum.midCos * outerRadius;\n                var y1 = datum.midSin * outerRadius;\n                var x2 = datum.midCos * (outerRadius + calloutLength);\n                var y2 = datum.midSin * (outerRadius + calloutLength);\n                if (label.collisionTextAlign || label.collisionOffsetY !== 0) {\n                    // Get the closest point to the text bounding box\n                    var box = label.box;\n                    var cx = x2 < box.x ? box.x : x2 > box.x + box.width ? box.x + box.width : x2;\n                    var cy = y2 < box.y ? box.y : y2 > box.y + box.height ? box.y + box.height : y2;\n                    // Apply label offset\n                    var dx = cx - x2;\n                    var dy = cy - y2;\n                    var length_1 = Math.sqrt(Math.pow(dx, 2) + Math.pow(dy, 2));\n                    var paddedLength = length_1 - offset;\n                    if (paddedLength > 0) {\n                        x2 = x2 + (dx * paddedLength) / length_1;\n                        y2 = y2 + (dy * paddedLength) / length_1;\n                    }\n                }\n                line.x1 = x1;\n                line.y1 = y1;\n                line.x2 = x2;\n                line.y2 = y2;\n            }\n            else {\n                line.visible = false;\n            }\n        });\n    };\n    PieSeries.prototype.getLabelOverflow = function (text, box) {\n        var seriesBox = this.chart.getSeriesRect();\n        var seriesLeft = seriesBox.x - this.centerX;\n        var seriesRight = seriesBox.x + seriesBox.width - this.centerX;\n        var seriesTop = seriesBox.y - this.centerY;\n        var seriesBottom = seriesBox.y + seriesBox.height - this.centerY;\n        var errPx = 1; // Prevents errors related to floating point calculations\n        var visibleTextPart = 1;\n        if (box.x + errPx < seriesLeft) {\n            visibleTextPart = (box.x + box.width - seriesLeft) / box.width;\n        }\n        else if (box.x + box.width - errPx > seriesRight) {\n            visibleTextPart = (seriesRight - box.x) / box.width;\n        }\n        var hasVerticalOverflow = box.y + errPx < seriesTop || box.y + box.height - errPx > seriesBottom;\n        var textLength = Math.floor(text.length * visibleTextPart) - 1;\n        return { visibleTextPart: visibleTextPart, textLength: textLength, hasVerticalOverflow: hasVerticalOverflow };\n    };\n    PieSeries.prototype.computeCalloutLabelCollisionOffsets = function () {\n        var _this = this;\n        var _a = this, radiusScale = _a.radiusScale, calloutLabel = _a.calloutLabel, calloutLine = _a.calloutLine;\n        var offset = calloutLabel.offset, minSpacing = calloutLabel.minSpacing;\n        var innerRadius = radiusScale.convert(0);\n        var shouldSkip = function (datum) {\n            var label = datum.calloutLabel;\n            var radius = radiusScale.convert(datum.radius);\n            var outerRadius = Math.max(0, radius);\n            return !label || outerRadius === 0;\n        };\n        var fullData = this.groupSelectionData;\n        var data = this.groupSelectionData.filter(function (text) { return !shouldSkip(text); });\n        data.forEach(function (datum) {\n            var label = datum.calloutLabel;\n            label.hidden = false;\n            label.collisionTextAlign = undefined;\n            label.collisionOffsetY = 0;\n        });\n        if (data.length <= 1) {\n            return;\n        }\n        var leftLabels = data.filter(function (d) { return d.midCos < 0; }).sort(function (a, b) { return a.midSin - b.midSin; });\n        var rightLabels = data.filter(function (d) { return d.midCos >= 0; }).sort(function (a, b) { return a.midSin - b.midSin; });\n        var topLabels = data\n            .filter(function (d) { return d.midSin < 0 && d.calloutLabel.textAlign === 'center'; })\n            .sort(function (a, b) { return a.midCos - b.midCos; });\n        var bottomLabels = data\n            .filter(function (d) { return d.midSin >= 0 && d.calloutLabel.textAlign === 'center'; })\n            .sort(function (a, b) { return a.midCos - b.midCos; });\n        var tempTextNode = new Text();\n        var getTextBBox = function (datum) {\n            var label = datum.calloutLabel;\n            var radius = radiusScale.convert(datum.radius);\n            var outerRadius = Math.max(0, radius);\n            var labelRadius = outerRadius + calloutLine.length + offset;\n            var x = datum.midCos * labelRadius;\n            var y = datum.midSin * labelRadius + label.collisionOffsetY;\n            _this.setTextDimensionalProps(tempTextNode, x, y, _this.calloutLabel, label);\n            return tempTextNode.computeBBox();\n        };\n        var avoidNeighbourYCollision = function (label, next, direction) {\n            var box = getTextBBox(label).grow(minSpacing / 2);\n            var other = getTextBBox(next).grow(minSpacing / 2);\n            // The full collision is not detected, because sometimes\n            // the next label can appear behind the label with offset\n            var collidesOrBehind = box.x < other.x + other.width &&\n                box.x + box.width > other.x &&\n                (direction === 'to-top' ? box.y < other.y + other.height : box.y + box.height > other.y);\n            if (collidesOrBehind) {\n                var dy = direction === 'to-top' ? box.y - other.y - other.height : box.y + box.height - other.y;\n                next.calloutLabel.collisionOffsetY = dy;\n            }\n        };\n        var avoidYCollisions = function (labels) {\n            var midLabel = labels.slice().sort(function (a, b) { return Math.abs(a.midSin) - Math.abs(b.midSin); })[0];\n            var midIndex = labels.indexOf(midLabel);\n            for (var i = midIndex - 1; i >= 0; i--) {\n                var prev = labels[i + 1];\n                var next = labels[i];\n                avoidNeighbourYCollision(prev, next, 'to-top');\n            }\n            for (var i = midIndex + 1; i < labels.length; i++) {\n                var prev = labels[i - 1];\n                var next = labels[i];\n                avoidNeighbourYCollision(prev, next, 'to-bottom');\n            }\n        };\n        var avoidXCollisions = function (labels) {\n            var labelsCollideLabelsByY = data.some(function (datum) { return datum.calloutLabel.collisionOffsetY !== 0; });\n            var boxes = labels.map(function (label) { return getTextBBox(label); });\n            var paddedBoxes = boxes.map(function (box) { return box.clone().grow(minSpacing / 2); });\n            var labelsCollideLabelsByX = false;\n            loop: for (var i = 0; i < paddedBoxes.length; i++) {\n                var box = paddedBoxes[i];\n                for (var j = i + 1; j < labels.length; j++) {\n                    var other = paddedBoxes[j];\n                    if (box.collidesBBox(other)) {\n                        labelsCollideLabelsByX = true;\n                        break loop;\n                    }\n                }\n            }\n            var sectors = fullData.map(function (datum) {\n                var startAngle = datum.startAngle, endAngle = datum.endAngle;\n                var radius = radiusScale.convert(datum.radius);\n                var outerRadius = Math.max(0, radius);\n                return { startAngle: startAngle, endAngle: endAngle, innerRadius: innerRadius, outerRadius: outerRadius };\n            });\n            var labelsCollideSectors = boxes.some(function (box) {\n                return sectors.some(function (sector) { return boxCollidesSector(box, sector); });\n            });\n            if (!labelsCollideLabelsByX && !labelsCollideLabelsByY && !labelsCollideSectors) {\n                return;\n            }\n            labels\n                .filter(function (datum) { return datum.calloutLabel.textAlign === 'center'; })\n                .forEach(function (datum) {\n                var label = datum.calloutLabel;\n                label.collisionTextAlign = datum.midCos < 0 ? 'right' : datum.midCos > 0 ? 'left' : 'center';\n            });\n        };\n        avoidYCollisions(leftLabels);\n        avoidYCollisions(rightLabels);\n        avoidXCollisions(topLabels);\n        avoidXCollisions(bottomLabels);\n    };\n    PieSeries.prototype.updateCalloutLabelNodes = function () {\n        var _this = this;\n        var _a = this, radiusScale = _a.radiusScale, calloutLabel = _a.calloutLabel, calloutLine = _a.calloutLine;\n        var calloutLength = calloutLine.length;\n        var offset = calloutLabel.offset, color = calloutLabel.color;\n        var tempTextNode = new Text();\n        this.calloutLabelSelection.selectByTag(PieNodeTag.Label).forEach(function (text) {\n            var datum = text.datum;\n            var label = datum.calloutLabel;\n            var radius = radiusScale.convert(datum.radius);\n            var outerRadius = Math.max(0, radius);\n            if (!label || !label.text || outerRadius === 0 || label.hidden) {\n                text.visible = false;\n                return;\n            }\n            var labelRadius = outerRadius + calloutLength + offset;\n            var x = datum.midCos * labelRadius;\n            var y = datum.midSin * labelRadius + label.collisionOffsetY;\n            // Detect text overflow\n            _this.setTextDimensionalProps(tempTextNode, x, y, _this.calloutLabel, label);\n            var box = tempTextNode.computeBBox();\n            var _a = _this.getLabelOverflow(label.text, box), visibleTextPart = _a.visibleTextPart, textLength = _a.textLength, hasVerticalOverflow = _a.hasVerticalOverflow;\n            var displayText = visibleTextPart === 1 ? label.text : label.text.substring(0, textLength) + \"\\u2026\";\n            _this.setTextDimensionalProps(text, x, y, _this.calloutLabel, __assign$v(__assign$v({}, label), { text: displayText }));\n            text.fill = color;\n            text.visible = !hasVerticalOverflow;\n        });\n    };\n    PieSeries.prototype.computeLabelsBBox = function (options) {\n        var _this = this;\n        var _a = this, radiusScale = _a.radiusScale, calloutLabel = _a.calloutLabel, calloutLine = _a.calloutLine;\n        var calloutLength = calloutLine.length;\n        var offset = calloutLabel.offset, maxCollisionOffset = calloutLabel.maxCollisionOffset;\n        this.updateRadiusScale();\n        this.computeCalloutLabelCollisionOffsets();\n        var text = new Text();\n        var textBoxes = this.groupSelectionData\n            .map(function (datum) {\n            var label = datum.calloutLabel;\n            var radius = radiusScale.convert(datum.radius);\n            var outerRadius = Math.max(0, radius);\n            if (!label || outerRadius === 0) {\n                return null;\n            }\n            var labelRadius = outerRadius + calloutLength + offset;\n            var x = datum.midCos * labelRadius;\n            var y = datum.midSin * labelRadius + label.collisionOffsetY;\n            _this.setTextDimensionalProps(text, x, y, _this.calloutLabel, label);\n            var box = text.computeBBox();\n            label.box = box;\n            if (Math.abs(label.collisionOffsetY) > maxCollisionOffset) {\n                label.hidden = true;\n                return null;\n            }\n            if (options.hideWhenNecessary) {\n                var _a = _this.getLabelOverflow(label.text, box), textLength = _a.textLength, hasVerticalOverflow = _a.hasVerticalOverflow;\n                var isTooShort = label.text.length > 2 && textLength < 2;\n                if (hasVerticalOverflow || isTooShort) {\n                    label.hidden = true;\n                    return null;\n                }\n            }\n            label.hidden = false;\n            return box;\n        })\n            .filter(function (box) { return box != null; });\n        if (this.title && this.title.text) {\n            var dy = this.getTitleTranslationY();\n            if (isFinite(dy)) {\n                this.setTextDimensionalProps(text, 0, dy, this.title, {\n                    text: this.title.text,\n                    textBaseline: 'bottom',\n                    textAlign: 'center',\n                    hidden: false,\n                    collisionTextAlign: undefined,\n                    collisionOffsetY: 0,\n                });\n                var box = text.computeBBox();\n                textBoxes.push(box);\n            }\n        }\n        if (textBoxes.length === 0) {\n            return null;\n        }\n        return BBox.merge(textBoxes);\n    };\n    PieSeries.prototype.setTextDimensionalProps = function (textNode, x, y, style, label) {\n        var fontStyle = style.fontStyle, fontWeight = style.fontWeight, fontSize = style.fontSize, fontFamily = style.fontFamily;\n        textNode.fontStyle = fontStyle;\n        textNode.fontWeight = fontWeight;\n        textNode.fontSize = fontSize;\n        textNode.fontFamily = fontFamily;\n        textNode.text = label.text;\n        textNode.x = x;\n        textNode.y = y;\n        textNode.textAlign = label.collisionTextAlign || label.textAlign;\n        textNode.textBaseline = label.textBaseline;\n    };\n    PieSeries.prototype.updateSectorLabelNodes = function () {\n        var _this = this;\n        var radiusScale = this.radiusScale;\n        var innerRadius = radiusScale.convert(0);\n        var _a = this.sectorLabel, fontSize = _a.fontSize, fontStyle = _a.fontStyle, fontWeight = _a.fontWeight, fontFamily = _a.fontFamily, positionOffset = _a.positionOffset, positionRatio = _a.positionRatio, color = _a.color;\n        var isDoughnut = innerRadius > 0;\n        var singleVisibleSector = this.seriesItemEnabled.filter(Boolean).length === 1;\n        this.sectorLabelSelection.each(function (text, datum) {\n            var sectorLabel = datum.sectorLabel;\n            var radius = radiusScale.convert(datum.radius);\n            var outerRadius = Math.max(0, radius);\n            var isTextVisible = false;\n            if (sectorLabel && outerRadius !== 0) {\n                var labelRadius = innerRadius * (1 - positionRatio) + radius * positionRatio + positionOffset;\n                text.fill = color;\n                text.fontStyle = fontStyle;\n                text.fontWeight = fontWeight;\n                text.fontSize = fontSize;\n                text.fontFamily = fontFamily;\n                text.text = sectorLabel.text;\n                var shouldPutTextInCenter = !isDoughnut && singleVisibleSector;\n                if (shouldPutTextInCenter) {\n                    text.x = 0;\n                    text.y = 0;\n                }\n                else {\n                    text.x = datum.midCos * labelRadius;\n                    text.y = datum.midSin * labelRadius;\n                }\n                text.textAlign = 'center';\n                text.textBaseline = 'middle';\n                var sector = _this.datumSectorRefs.get(datum);\n                if (sector) {\n                    var bbox = text.computeBBox();\n                    var corners = [\n                        [bbox.x, bbox.y],\n                        [bbox.x + bbox.width, bbox.y],\n                        [bbox.x + bbox.width, bbox.y + bbox.height],\n                        [bbox.x, bbox.y + bbox.height],\n                    ];\n                    var startAngle = datum.startAngle, endAngle = datum.endAngle;\n                    var sectorBounds_1 = { startAngle: startAngle, endAngle: endAngle, innerRadius: innerRadius, outerRadius: outerRadius };\n                    if (corners.every(function (_a) {\n                        var _b = __read$s(_a, 2), x = _b[0], y = _b[1];\n                        return isPointInSector(x, y, sectorBounds_1);\n                    })) {\n                        isTextVisible = true;\n                    }\n                }\n            }\n            text.visible = isTextVisible;\n        });\n    };\n    PieSeries.prototype.updateInnerCircle = function () {\n        var circle = this._innerCircleNode;\n        if (!circle) {\n            return;\n        }\n        var innerRadius = this.getInnerRadius();\n        if (innerRadius === 0) {\n            circle.size = 0;\n        }\n        else {\n            var circleRadius = Math.min(innerRadius, this.getOuterRadius());\n            var antiAliasingPadding = 1;\n            circle.size = Math.ceil(circleRadius * 2 + antiAliasingPadding);\n        }\n    };\n    PieSeries.prototype.updateInnerLabelNodes = function () {\n        var textBBoxes = [];\n        var margins = [];\n        this.innerLabelsSelection.each(function (text, datum) {\n            var fontStyle = datum.fontStyle, fontWeight = datum.fontWeight, fontSize = datum.fontSize, fontFamily = datum.fontFamily, color = datum.color;\n            text.fontStyle = fontStyle;\n            text.fontWeight = fontWeight;\n            text.fontSize = fontSize;\n            text.fontFamily = fontFamily;\n            text.text = datum.text;\n            text.x = 0;\n            text.y = 0;\n            text.fill = color;\n            text.textAlign = 'center';\n            text.textBaseline = 'alphabetic';\n            textBBoxes.push(text.computeBBox());\n            margins.push(datum.margin);\n        });\n        var getMarginTop = function (index) { return (index === 0 ? 0 : margins[index]); };\n        var getMarginBottom = function (index) { return (index === margins.length - 1 ? 0 : margins[index]); };\n        var totalHeight = textBBoxes.reduce(function (sum, bbox, i) {\n            return sum + bbox.height + getMarginTop(i) + getMarginBottom(i);\n        }, 0);\n        var totalWidth = Math.max.apply(Math, __spread$f(textBBoxes.map(function (bbox) { return bbox.width; })));\n        var innerRadius = this.getInnerRadius();\n        var labelRadius = Math.sqrt(Math.pow(totalWidth / 2, 2) + Math.pow(totalHeight / 2, 2));\n        var labelsVisible = labelRadius <= (innerRadius > 0 ? innerRadius : this.getOuterRadius());\n        var textBottoms = [];\n        for (var i = 0, prev = -totalHeight / 2; i < textBBoxes.length; i++) {\n            var bbox = textBBoxes[i];\n            var bottom = bbox.height + prev + getMarginTop(i);\n            textBottoms.push(bottom);\n            prev = bottom + getMarginBottom(i);\n        }\n        this.innerLabelsSelection.each(function (text, _datum, index) {\n            text.y = textBottoms[index];\n            text.visible = labelsVisible;\n        });\n    };\n    PieSeries.prototype.getNodeClickEvent = function (event, datum) {\n        return new PieSeriesNodeClickEvent(this.angleKey, this.calloutLabelKey, this.sectorLabelKey, this.radiusKey, event, datum, this);\n    };\n    PieSeries.prototype.getNodeDoubleClickEvent = function (event, datum) {\n        return new PieSeriesNodeDoubleClickEvent(this.angleKey, this.calloutLabelKey, this.sectorLabelKey, this.radiusKey, event, datum, this);\n    };\n    PieSeries.prototype.getTooltipHtml = function (nodeDatum) {\n        var angleKey = this.angleKey;\n        if (!angleKey) {\n            return '';\n        }\n        var _a = this, tooltip = _a.tooltip, angleName = _a.angleName, radiusKey = _a.radiusKey, radiusName = _a.radiusName, calloutLabelKey = _a.calloutLabelKey, sectorLabelKey = _a.sectorLabelKey, calloutLabelName = _a.calloutLabelName, sectorLabelName = _a.sectorLabelName, seriesId = _a.id;\n        var tooltipRenderer = tooltip.renderer;\n        var color = nodeDatum.sectorFormat.fill;\n        var datum = nodeDatum.datum;\n        var label = calloutLabelKey ? datum[calloutLabelKey] + \": \" : '';\n        var angleValue = datum[angleKey];\n        var formattedAngleValue = typeof angleValue === 'number' ? toFixed(angleValue) : angleValue.toString();\n        var title = this.title ? this.title.text : undefined;\n        var content = label + formattedAngleValue;\n        var defaults = {\n            title: title,\n            backgroundColor: color,\n            content: content,\n        };\n        if (tooltipRenderer) {\n            return toTooltipHtml$1(tooltipRenderer({\n                datum: datum,\n                angleKey: angleKey,\n                angleValue: angleValue,\n                angleName: angleName,\n                radiusKey: radiusKey,\n                radiusValue: radiusKey ? datum[radiusKey] : undefined,\n                radiusName: radiusName,\n                labelKey: calloutLabelKey,\n                labelName: calloutLabelName,\n                calloutLabelKey: calloutLabelKey,\n                calloutLabelName: calloutLabelName,\n                sectorLabelKey: sectorLabelKey,\n                sectorLabelName: sectorLabelName,\n                title: title,\n                color: color,\n                seriesId: seriesId,\n            }), defaults);\n        }\n        return toTooltipHtml$1(defaults);\n    };\n    PieSeries.prototype.getLegendData = function () {\n        var _this = this;\n        var _a = this, calloutLabelKey = _a.calloutLabelKey, legendItemKey = _a.legendItemKey, data = _a.data, id = _a.id, sectorFormatData = _a.sectorFormatData;\n        if (!data || data.length === 0 || (!legendItemKey && !calloutLabelKey))\n            return [];\n        var titleText = this.title && this.title.showInLegend && this.title.text;\n        var legendData = data.map(function (datum, index) {\n            var labelParts = [];\n            titleText && labelParts.push(titleText);\n            if (legendItemKey) {\n                labelParts.push(String(datum[legendItemKey]));\n            }\n            else if (calloutLabelKey) {\n                labelParts.push(String(datum[calloutLabelKey]));\n            }\n            return {\n                id: id,\n                itemId: index,\n                seriesId: id,\n                enabled: _this.seriesItemEnabled[index],\n                label: {\n                    text: labelParts.join(' - '),\n                },\n                marker: {\n                    fill: sectorFormatData[index].fill,\n                    stroke: sectorFormatData[index].stroke,\n                    fillOpacity: _this.fillOpacity,\n                    strokeOpacity: _this.strokeOpacity,\n                },\n            };\n        });\n        return legendData;\n    };\n    PieSeries.prototype.toggleSeriesItem = function (itemId, enabled) {\n        this.seriesItemEnabled[itemId] = enabled;\n        this.nodeDataRefresh = true;\n    };\n    PieSeries.prototype.toggleOtherSeriesItems = function (seriesToggled, datumToggled, enabled, suggestedEnabled) {\n        var _this = this;\n        var _a, _b;\n        var legendItemKey = this.legendItemKey;\n        if (seriesToggled.type !== 'pie')\n            return;\n        if (legendItemKey === undefined)\n            return;\n        var pieSeriesToggled = seriesToggled;\n        var datumToggledLegendItemValue = datumToggled &&\n            pieSeriesToggled.legendItemKey && ((_a = pieSeriesToggled.data) === null || _a === void 0 ? void 0 : _a.find(function (_, index) { return index === datumToggled.itemId; })[pieSeriesToggled.legendItemKey]);\n        if (!datumToggledLegendItemValue)\n            return;\n        (_b = this.data) === null || _b === void 0 ? void 0 : _b.forEach(function (d, itemId) {\n            if (enabled !== undefined && d[legendItemKey] === datumToggledLegendItemValue) {\n                _this.toggleSeriesItem(itemId, enabled);\n            }\n            else if (suggestedEnabled !== undefined) {\n                _this.toggleSeriesItem(itemId, suggestedEnabled || d[legendItemKey] === datumToggledLegendItemValue);\n            }\n        });\n    };\n    PieSeries.className = 'PieSeries';\n    PieSeries.type = 'pie';\n    __decorate$1l([\n        DeprecatedAndRenamedTo('calloutLabel')\n    ], PieSeries.prototype, \"label\", void 0);\n    __decorate$1l([\n        DeprecatedAndRenamedTo('calloutLine')\n    ], PieSeries.prototype, \"callout\", void 0);\n    __decorate$1l([\n        Validate(STRING)\n    ], PieSeries.prototype, \"angleKey\", void 0);\n    __decorate$1l([\n        Validate(STRING)\n    ], PieSeries.prototype, \"angleName\", void 0);\n    __decorate$1l([\n        Validate(OPT_STRING)\n    ], PieSeries.prototype, \"radiusKey\", void 0);\n    __decorate$1l([\n        Validate(OPT_STRING)\n    ], PieSeries.prototype, \"radiusName\", void 0);\n    __decorate$1l([\n        Validate(OPT_NUMBER(0))\n    ], PieSeries.prototype, \"radiusMin\", void 0);\n    __decorate$1l([\n        Validate(OPT_NUMBER(0))\n    ], PieSeries.prototype, \"radiusMax\", void 0);\n    __decorate$1l([\n        Validate(OPT_STRING)\n    ], PieSeries.prototype, \"calloutLabelKey\", void 0);\n    __decorate$1l([\n        Validate(OPT_STRING)\n    ], PieSeries.prototype, \"calloutLabelName\", void 0);\n    __decorate$1l([\n        DeprecatedAndRenamedTo('calloutLabelKey')\n    ], PieSeries.prototype, \"labelKey\", void 0);\n    __decorate$1l([\n        DeprecatedAndRenamedTo('calloutLabelName')\n    ], PieSeries.prototype, \"labelName\", void 0);\n    __decorate$1l([\n        Validate(OPT_STRING)\n    ], PieSeries.prototype, \"sectorLabelKey\", void 0);\n    __decorate$1l([\n        Validate(OPT_STRING)\n    ], PieSeries.prototype, \"sectorLabelName\", void 0);\n    __decorate$1l([\n        Validate(OPT_STRING)\n    ], PieSeries.prototype, \"legendItemKey\", void 0);\n    __decorate$1l([\n        Validate(COLOR_STRING_ARRAY)\n    ], PieSeries.prototype, \"fills\", void 0);\n    __decorate$1l([\n        Validate(COLOR_STRING_ARRAY)\n    ], PieSeries.prototype, \"strokes\", void 0);\n    __decorate$1l([\n        Validate(NUMBER(0, 1))\n    ], PieSeries.prototype, \"fillOpacity\", void 0);\n    __decorate$1l([\n        Validate(NUMBER(0, 1))\n    ], PieSeries.prototype, \"strokeOpacity\", void 0);\n    __decorate$1l([\n        Validate(OPT_LINE_DASH)\n    ], PieSeries.prototype, \"lineDash\", void 0);\n    __decorate$1l([\n        Validate(NUMBER(0))\n    ], PieSeries.prototype, \"lineDashOffset\", void 0);\n    __decorate$1l([\n        Validate(OPT_FUNCTION)\n    ], PieSeries.prototype, \"formatter\", void 0);\n    __decorate$1l([\n        Validate(NUMBER(-360, 360))\n    ], PieSeries.prototype, \"rotation\", void 0);\n    __decorate$1l([\n        Validate(NUMBER())\n    ], PieSeries.prototype, \"outerRadiusOffset\", void 0);\n    __decorate$1l([\n        Validate(NUMBER(0))\n    ], PieSeries.prototype, \"outerRadiusRatio\", void 0);\n    __decorate$1l([\n        Validate(NUMBER())\n    ], PieSeries.prototype, \"innerRadiusOffset\", void 0);\n    __decorate$1l([\n        Validate(NUMBER(0))\n    ], PieSeries.prototype, \"innerRadiusRatio\", void 0);\n    __decorate$1l([\n        Validate(NUMBER(0))\n    ], PieSeries.prototype, \"strokeWidth\", void 0);\n    return PieSeries;\n}(PolarSeries));\n\nvar __extends$1Z = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar HierarchySeries = /** @class */ (function (_super) {\n    __extends$1Z(HierarchySeries, _super);\n    function HierarchySeries() {\n        return _super.call(this, { pickModes: [SeriesNodePickMode.EXACT_SHAPE_MATCH] }) || this;\n    }\n    HierarchySeries.prototype.getLabelData = function () {\n        return [];\n    };\n    return HierarchySeries;\n}(Series));\n\nvar __extends$1Y = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$1k = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar DropShadow = /** @class */ (function (_super) {\n    __extends$1Y(DropShadow, _super);\n    function DropShadow() {\n        var _this = _super !== null && _super.apply(this, arguments) || this;\n        _this.enabled = true;\n        _this.color = 'rgba(0, 0, 0, 0.5)';\n        _this.xOffset = 0;\n        _this.yOffset = 0;\n        _this.blur = 5;\n        return _this;\n    }\n    __decorate$1k([\n        Validate(BOOLEAN),\n        SceneChangeDetection({ redraw: RedrawType.MAJOR })\n    ], DropShadow.prototype, \"enabled\", void 0);\n    __decorate$1k([\n        Validate(COLOR_STRING),\n        SceneChangeDetection({ redraw: RedrawType.MAJOR })\n    ], DropShadow.prototype, \"color\", void 0);\n    __decorate$1k([\n        Validate(NUMBER()),\n        SceneChangeDetection({ redraw: RedrawType.MAJOR })\n    ], DropShadow.prototype, \"xOffset\", void 0);\n    __decorate$1k([\n        Validate(NUMBER()),\n        SceneChangeDetection({ redraw: RedrawType.MAJOR })\n    ], DropShadow.prototype, \"yOffset\", void 0);\n    __decorate$1k([\n        Validate(NUMBER(0)),\n        SceneChangeDetection({ redraw: RedrawType.MAJOR })\n    ], DropShadow.prototype, \"blur\", void 0);\n    return DropShadow;\n}(ChangeDetectable));\n\nfunction number (a, b) {\n    a = +a;\n    b = +b;\n    return function (t) { return a * (1 - t) + b * t; };\n}\n\nfunction interpolateColor (a, b) {\n    if (typeof a === 'string') {\n        try {\n            a = Color.fromString(a);\n        }\n        catch (e) {\n            a = Color.fromArray([0, 0, 0]);\n        }\n    }\n    if (typeof b === 'string') {\n        try {\n            b = Color.fromString(b);\n        }\n        catch (e) {\n            b = Color.fromArray([0, 0, 0]);\n        }\n    }\n    var red = number(a.r, b.r);\n    var green = number(a.g, b.g);\n    var blue = number(a.b, b.b);\n    var alpha = number(a.a, b.a);\n    return function (t) {\n        return Color.fromArray([red(t), green(t), blue(t), alpha(t)]).toRgbaString();\n    };\n}\n\nvar ColorScale = /** @class */ (function () {\n    function ColorScale() {\n        this.domain = [0, 1];\n        this._range = ['red', 'green'];\n        this.parsedRange = this._range.map(function (v) { return Color.fromString(v); });\n    }\n    Object.defineProperty(ColorScale.prototype, \"range\", {\n        get: function () {\n            return this._range;\n        },\n        set: function (values) {\n            this._range = values;\n            this.parsedRange = values.map(function (v) { return Color.fromString(v); });\n        },\n        enumerable: false,\n        configurable: true\n    });\n    ColorScale.prototype.convert = function (x) {\n        var _a = this, domain = _a.domain, range = _a.range, parsedRange = _a.parsedRange;\n        var d0 = domain[0];\n        var d1 = domain[domain.length - 1];\n        var r0 = range[0];\n        var r1 = range[range.length - 1];\n        if (x <= d0) {\n            return r0;\n        }\n        if (x >= d1) {\n            return r1;\n        }\n        var index;\n        var q;\n        if (domain.length === 2) {\n            var t = (x - d0) / (d1 - d0);\n            var step = 1 / (range.length - 1);\n            index = range.length <= 2 ? 0 : Math.min(Math.floor(t * (range.length - 1)), range.length - 2);\n            q = (t - index * step) / step;\n        }\n        else {\n            for (index = 0; index < domain.length - 2; index++) {\n                if (x < domain[index + 1]) {\n                    break;\n                }\n            }\n            var a = domain[index];\n            var b = domain[index + 1];\n            q = (x - a) / (b - a);\n        }\n        var c0 = parsedRange[index];\n        var c1 = parsedRange[index + 1];\n        return interpolateColor(c0, c1)(q);\n    };\n    return ColorScale;\n}());\n\nvar __extends$1X = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __assign$u = (undefined && undefined.__assign) || function () {\n    __assign$u = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign$u.apply(this, arguments);\n};\nvar __decorate$1j = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __awaiter$1 = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {\n    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n    return new (P || (P = Promise))(function (resolve, reject) {\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\n    });\n};\nvar __generator$1 = (undefined && undefined.__generator) || function (thisArg, body) {\n    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n    return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n    function verb(n) { return function (v) { return step([n, v]); }; }\n    function step(op) {\n        if (f) throw new TypeError(\"Generator is already executing.\");\n        while (_) try {\n            if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n            if (y = 0, t) op = [op[0] & 2, t.value];\n            switch (op[0]) {\n                case 0: case 1: t = op; break;\n                case 4: _.label++; return { value: op[1], done: false };\n                case 5: _.label++; y = op[1]; op = [0]; continue;\n                case 7: op = _.ops.pop(); _.trys.pop(); continue;\n                default:\n                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n                    if (t[2]) _.ops.pop();\n                    _.trys.pop(); continue;\n            }\n            op = body.call(thisArg, _);\n        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n    }\n};\nvar TreemapSeriesTooltip = /** @class */ (function (_super) {\n    __extends$1X(TreemapSeriesTooltip, _super);\n    function TreemapSeriesTooltip() {\n        var _this = _super !== null && _super.apply(this, arguments) || this;\n        _this.renderer = undefined;\n        return _this;\n    }\n    __decorate$1j([\n        Validate(OPT_FUNCTION)\n    ], TreemapSeriesTooltip.prototype, \"renderer\", void 0);\n    return TreemapSeriesTooltip;\n}(SeriesTooltip));\nvar TreemapSeriesNodeBaseClickEvent = /** @class */ (function (_super) {\n    __extends$1X(TreemapSeriesNodeBaseClickEvent, _super);\n    function TreemapSeriesNodeBaseClickEvent(labelKey, sizeKey, colorKey, nativeEvent, datum, series) {\n        var _this = _super.call(this, nativeEvent, datum, series) || this;\n        _this.labelKey = labelKey;\n        _this.sizeKey = sizeKey;\n        _this.colorKey = colorKey;\n        return _this;\n    }\n    return TreemapSeriesNodeBaseClickEvent;\n}(SeriesNodeBaseClickEvent));\nvar TreemapSeriesNodeClickEvent = /** @class */ (function (_super) {\n    __extends$1X(TreemapSeriesNodeClickEvent, _super);\n    function TreemapSeriesNodeClickEvent() {\n        var _this = _super !== null && _super.apply(this, arguments) || this;\n        _this.type = 'nodeClick';\n        return _this;\n    }\n    return TreemapSeriesNodeClickEvent;\n}(TreemapSeriesNodeBaseClickEvent));\nvar TreemapSeriesNodeDoubleClickEvent = /** @class */ (function (_super) {\n    __extends$1X(TreemapSeriesNodeDoubleClickEvent, _super);\n    function TreemapSeriesNodeDoubleClickEvent() {\n        var _this = _super !== null && _super.apply(this, arguments) || this;\n        _this.type = 'nodeDoubleClick';\n        return _this;\n    }\n    return TreemapSeriesNodeDoubleClickEvent;\n}(TreemapSeriesNodeBaseClickEvent));\nvar TreemapSeriesLabel = /** @class */ (function (_super) {\n    __extends$1X(TreemapSeriesLabel, _super);\n    function TreemapSeriesLabel() {\n        var _this = _super !== null && _super.apply(this, arguments) || this;\n        _this.padding = 10;\n        return _this;\n    }\n    __decorate$1j([\n        Validate(NUMBER(0))\n    ], TreemapSeriesLabel.prototype, \"padding\", void 0);\n    return TreemapSeriesLabel;\n}(Label$1));\nvar TreemapValueLabel = /** @class */ (function () {\n    function TreemapValueLabel() {\n        this.style = (function () {\n            var label = new Label$1();\n            label.color = 'white';\n            return label;\n        })();\n    }\n    __decorate$1j([\n        Validate(OPT_STRING)\n    ], TreemapValueLabel.prototype, \"key\", void 0);\n    __decorate$1j([\n        Validate(OPT_STRING)\n    ], TreemapValueLabel.prototype, \"name\", void 0);\n    __decorate$1j([\n        Validate(OPT_FUNCTION)\n    ], TreemapValueLabel.prototype, \"formatter\", void 0);\n    return TreemapValueLabel;\n}());\nvar TextNodeTag;\n(function (TextNodeTag) {\n    TextNodeTag[TextNodeTag[\"Name\"] = 0] = \"Name\";\n    TextNodeTag[TextNodeTag[\"Value\"] = 1] = \"Value\";\n})(TextNodeTag || (TextNodeTag = {}));\nfunction getTextSize(text, style) {\n    return HdpiCanvas.getTextSize(text, [style.fontWeight, style.fontSize + \"px\", style.fontFamily].join(' '));\n}\nfunction validateColor(color) {\n    if (typeof color === 'string' && !Color.validColorString(color)) {\n        var fallbackColor = 'black';\n        Logger.warnOnce(\"invalid Treemap tile colour string \\\"\" + color + \"\\\". Affected treemap tiles will be coloured \" + fallbackColor + \".\");\n        return 'black';\n    }\n    return color;\n}\nvar TreemapTextHighlightStyle = /** @class */ (function () {\n    function TreemapTextHighlightStyle() {\n        this.color = 'black';\n    }\n    __decorate$1j([\n        Validate(OPT_COLOR_STRING)\n    ], TreemapTextHighlightStyle.prototype, \"color\", void 0);\n    return TreemapTextHighlightStyle;\n}());\nvar TreemapHighlightStyle = /** @class */ (function (_super) {\n    __extends$1X(TreemapHighlightStyle, _super);\n    function TreemapHighlightStyle() {\n        var _this = _super !== null && _super.apply(this, arguments) || this;\n        _this.text = new TreemapTextHighlightStyle();\n        return _this;\n    }\n    return TreemapHighlightStyle;\n}(HighlightStyle));\nvar TreemapSeries = /** @class */ (function (_super) {\n    __extends$1X(TreemapSeries, _super);\n    function TreemapSeries() {\n        var _this = _super !== null && _super.apply(this, arguments) || this;\n        _this.groupSelection = Selection.select(_this.contentGroup, Group);\n        _this.highlightSelection = Selection.select(_this.highlightGroup, Group);\n        _this.title = (function () {\n            var label = new TreemapSeriesLabel();\n            label.color = 'white';\n            label.fontWeight = 'bold';\n            label.fontSize = 12;\n            label.fontFamily = 'Verdana, sans-serif';\n            label.padding = 15;\n            return label;\n        })();\n        _this.subtitle = (function () {\n            var label = new TreemapSeriesLabel();\n            label.color = 'white';\n            label.fontSize = 9;\n            label.fontFamily = 'Verdana, sans-serif';\n            label.padding = 13;\n            return label;\n        })();\n        _this.labels = {\n            large: (function () {\n                var label = new Label$1();\n                label.color = 'white';\n                label.fontWeight = 'bold';\n                label.fontSize = 18;\n                return label;\n            })(),\n            medium: (function () {\n                var label = new Label$1();\n                label.color = 'white';\n                label.fontWeight = 'bold';\n                label.fontSize = 14;\n                return label;\n            })(),\n            small: (function () {\n                var label = new Label$1();\n                label.color = 'white';\n                label.fontWeight = 'bold';\n                label.fontSize = 10;\n                return label;\n            })(),\n            value: new TreemapValueLabel(),\n        };\n        _this.nodePadding = 2;\n        _this.labelKey = 'label';\n        _this.sizeKey = 'size';\n        _this.colorKey = 'color';\n        _this.colorDomain = [-5, 5];\n        _this.colorRange = ['#cb4b3f', '#6acb64'];\n        _this.groupFill = '#272931';\n        _this.groupStroke = 'black';\n        _this.groupStrokeWidth = 1;\n        _this.tileStroke = 'black';\n        _this.tileStrokeWidth = 1;\n        _this.gradient = true;\n        _this.formatter = undefined;\n        _this.colorName = 'Change';\n        _this.rootName = 'Root';\n        _this.highlightGroups = true;\n        _this.tileShadow = new DropShadow();\n        _this.labelShadow = new DropShadow();\n        _this.tooltip = new TreemapSeriesTooltip();\n        _this.highlightStyle = new TreemapHighlightStyle();\n        return _this;\n    }\n    TreemapSeries.prototype.getNodePaddingTop = function (nodeDatum, bbox) {\n        var _a = this, title = _a.title, subtitle = _a.subtitle, nodePadding = _a.nodePadding;\n        var label = nodeDatum.label;\n        if (nodeDatum.isLeaf || !label || nodeDatum.depth === 0) {\n            return nodePadding;\n        }\n        var font = nodeDatum.depth > 1 ? subtitle : title;\n        var textSize = getTextSize(label, font);\n        var heightRatioThreshold = 3;\n        if (font.fontSize > bbox.width / heightRatioThreshold || font.fontSize > bbox.height / heightRatioThreshold) {\n            return nodePadding;\n        }\n        if (textSize.height >= bbox.height) {\n            return nodePadding;\n        }\n        return textSize.height + nodePadding * 2;\n    };\n    TreemapSeries.prototype.getNodePadding = function (nodeDatum, bbox) {\n        var nodePadding = this.nodePadding;\n        var top = this.getNodePaddingTop(nodeDatum, bbox);\n        return {\n            top: top,\n            right: nodePadding,\n            bottom: nodePadding,\n            left: nodePadding,\n        };\n    };\n    /**\n     * Squarified Treemap algorithm\n     * https://www.win.tue.nl/~vanwijk/stm.pdf\n     */\n    TreemapSeries.prototype.squarify = function (nodeDatum, bbox, outputNodesBoxes) {\n        if (outputNodesBoxes === void 0) { outputNodesBoxes = new Map(); }\n        var targetTileAspectRatio = 1; // The width and height will tend to this ratio\n        var padding = this.getNodePadding(nodeDatum, bbox);\n        outputNodesBoxes.set(nodeDatum, bbox);\n        var width = bbox.width - padding.left - padding.right;\n        var height = bbox.height - padding.top - padding.bottom;\n        if (width <= 0 || height <= 0 || nodeDatum.value <= 0) {\n            return outputNodesBoxes;\n        }\n        var stackSum = 0;\n        var startIndex = 0;\n        var minRatioDiff = Infinity;\n        var partitionSum = nodeDatum.value;\n        var children = nodeDatum.children;\n        var partition = new BBox(bbox.x + padding.left, bbox.y + padding.top, width, height);\n        for (var i = 0; i < children.length; i++) {\n            var value = children[i].value;\n            var firstValue = children[startIndex].value;\n            var isVertical_1 = partition.width < partition.height;\n            stackSum += value;\n            var partThickness = isVertical_1 ? partition.height : partition.width;\n            var partLength = isVertical_1 ? partition.width : partition.height;\n            var firstTileLength = (partLength * firstValue) / stackSum;\n            var stackThickness = (partThickness * stackSum) / partitionSum;\n            var ratio = Math.max(firstTileLength, stackThickness) / Math.min(firstTileLength, stackThickness);\n            var diff = Math.abs(targetTileAspectRatio - ratio);\n            if (diff < minRatioDiff) {\n                minRatioDiff = diff;\n                continue;\n            }\n            // Go one step back and process the best match\n            stackSum -= value;\n            stackThickness = (partThickness * stackSum) / partitionSum;\n            var start_1 = isVertical_1 ? partition.x : partition.y;\n            for (var j = startIndex; j < i; j++) {\n                var child = children[j];\n                var x = isVertical_1 ? start_1 : partition.x;\n                var y = isVertical_1 ? partition.y : start_1;\n                var length_1 = (partLength * child.value) / stackSum;\n                var width_1 = isVertical_1 ? length_1 : stackThickness;\n                var height_1 = isVertical_1 ? stackThickness : length_1;\n                var childBox = new BBox(x, y, width_1, height_1);\n                this.squarify(child, childBox, outputNodesBoxes);\n                partitionSum -= child.value;\n                start_1 += length_1;\n            }\n            if (isVertical_1) {\n                partition.y += stackThickness;\n                partition.height -= stackThickness;\n            }\n            else {\n                partition.x += stackThickness;\n                partition.width -= stackThickness;\n            }\n            startIndex = i;\n            stackSum = 0;\n            minRatioDiff = Infinity;\n            i--;\n        }\n        // Process remaining space\n        var isVertical = partition.width < partition.height;\n        var start = isVertical ? partition.x : partition.y;\n        for (var i = startIndex; i < children.length; i++) {\n            var x = isVertical ? start : partition.x;\n            var y = isVertical ? partition.y : start;\n            var part = children[i].value / partitionSum;\n            var width_2 = partition.width * (isVertical ? part : 1);\n            var height_2 = partition.height * (isVertical ? 1 : part);\n            var childBox = new BBox(x, y, width_2, height_2);\n            this.squarify(children[i], childBox, outputNodesBoxes);\n            start += isVertical ? width_2 : height_2;\n        }\n        return outputNodesBoxes;\n    };\n    TreemapSeries.prototype.processData = function () {\n        return __awaiter$1(this, void 0, void 0, function () {\n            var _a, data, sizeKey, labelKey, colorKey, colorDomain, colorRange, groupFill, colorScale, createTreeNodeDatum;\n            var _this = this;\n            return __generator$1(this, function (_b) {\n                if (!this.data) {\n                    return [2 /*return*/];\n                }\n                _a = this, data = _a.data, sizeKey = _a.sizeKey, labelKey = _a.labelKey, colorKey = _a.colorKey, colorDomain = _a.colorDomain, colorRange = _a.colorRange, groupFill = _a.groupFill;\n                colorScale = new ColorScale();\n                colorScale.domain = colorDomain;\n                colorScale.range = colorRange;\n                createTreeNodeDatum = function (datum, depth, parent) {\n                    var _a, _b;\n                    if (depth === void 0) { depth = 0; }\n                    var label = (labelKey && datum[labelKey]) || '';\n                    var colorScaleValue = colorKey ? (_a = datum[colorKey]) !== null && _a !== void 0 ? _a : depth : depth;\n                    colorScaleValue = validateColor(colorScaleValue);\n                    var isLeaf = !datum.children;\n                    var fill = typeof colorScaleValue === 'string'\n                        ? colorScaleValue\n                        : isLeaf || !groupFill\n                            ? colorScale.convert(colorScaleValue)\n                            : groupFill;\n                    var nodeDatum = {\n                        datum: datum,\n                        depth: depth,\n                        parent: parent,\n                        value: 0,\n                        label: label,\n                        fill: fill,\n                        series: _this,\n                        isLeaf: isLeaf,\n                        children: [],\n                    };\n                    if (isLeaf) {\n                        nodeDatum.value = sizeKey ? (_b = datum[sizeKey]) !== null && _b !== void 0 ? _b : 1 : 1;\n                    }\n                    else {\n                        datum.children.forEach(function (child) {\n                            var childNodeDatum = createTreeNodeDatum(child, depth + 1, nodeDatum);\n                            var value = childNodeDatum.value;\n                            if (isNaN(value) || !isFinite(value) || value === 0) {\n                                return;\n                            }\n                            nodeDatum.value += value;\n                            nodeDatum.children.push(childNodeDatum);\n                        });\n                        nodeDatum.children.sort(function (a, b) {\n                            return b.value - a.value;\n                        });\n                    }\n                    return nodeDatum;\n                };\n                this.dataRoot = createTreeNodeDatum(data);\n                return [2 /*return*/];\n            });\n        });\n    };\n    TreemapSeries.prototype.createNodeData = function () {\n        return __awaiter$1(this, void 0, void 0, function () {\n            return __generator$1(this, function (_a) {\n                return [2 /*return*/, []];\n            });\n        });\n    };\n    TreemapSeries.prototype.update = function () {\n        return __awaiter$1(this, void 0, void 0, function () {\n            return __generator$1(this, function (_a) {\n                switch (_a.label) {\n                    case 0: return [4 /*yield*/, this.updateSelections()];\n                    case 1:\n                        _a.sent();\n                        return [4 /*yield*/, this.updateNodes()];\n                    case 2:\n                        _a.sent();\n                        return [2 /*return*/];\n                }\n            });\n        });\n    };\n    TreemapSeries.prototype.updateSelections = function () {\n        return __awaiter$1(this, void 0, void 0, function () {\n            var _a, chart, dataRoot, seriesRect, descendants, traverse, _b, groupSelection, highlightSelection, update;\n            return __generator$1(this, function (_c) {\n                if (!this.nodeDataRefresh) {\n                    return [2 /*return*/];\n                }\n                this.nodeDataRefresh = false;\n                _a = this, chart = _a.chart, dataRoot = _a.dataRoot;\n                if (!chart || !dataRoot) {\n                    return [2 /*return*/];\n                }\n                seriesRect = chart.getSeriesRect();\n                if (!seriesRect) {\n                    return [2 /*return*/];\n                }\n                descendants = [];\n                traverse = function (datum) {\n                    var _a;\n                    descendants.push(datum);\n                    (_a = datum.children) === null || _a === void 0 ? void 0 : _a.forEach(traverse);\n                };\n                traverse(this.dataRoot);\n                _b = this, groupSelection = _b.groupSelection, highlightSelection = _b.highlightSelection;\n                update = function (selection) {\n                    return selection.update(descendants, function (group) {\n                        var rect = new Rect();\n                        var nameLabel = new Text();\n                        nameLabel.tag = TextNodeTag.Name;\n                        var valueLabel = new Text();\n                        valueLabel.tag = TextNodeTag.Value;\n                        group.append([rect, nameLabel, valueLabel]);\n                    });\n                };\n                this.groupSelection = update(groupSelection);\n                this.highlightSelection = update(highlightSelection);\n                return [2 /*return*/];\n            });\n        });\n    };\n    TreemapSeries.prototype.isDatumHighlighted = function (datum) {\n        var _a;\n        var highlightedDatum = (_a = this.highlightManager) === null || _a === void 0 ? void 0 : _a.getActiveHighlight();\n        return datum === highlightedDatum && (datum.isLeaf || this.highlightGroups);\n    };\n    TreemapSeries.prototype.getTileFormat = function (datum, isHighlighted) {\n        var _a;\n        var formatter = this.formatter;\n        if (!formatter) {\n            return {};\n        }\n        var _b = this, gradient = _b.gradient, colorKey = _b.colorKey, labelKey = _b.labelKey, sizeKey = _b.sizeKey, tileStroke = _b.tileStroke, tileStrokeWidth = _b.tileStrokeWidth, groupStroke = _b.groupStroke, groupStrokeWidth = _b.groupStrokeWidth;\n        var stroke = datum.isLeaf ? tileStroke : groupStroke;\n        var strokeWidth = datum.isLeaf ? tileStrokeWidth : groupStrokeWidth;\n        return formatter({\n            seriesId: this.id,\n            datum: datum.datum,\n            depth: datum.depth,\n            parent: (_a = datum.parent) === null || _a === void 0 ? void 0 : _a.datum,\n            colorKey: colorKey,\n            sizeKey: sizeKey,\n            labelKey: labelKey,\n            fill: datum.fill,\n            stroke: stroke,\n            strokeWidth: strokeWidth,\n            gradient: gradient,\n            highlighted: isHighlighted,\n        });\n    };\n    TreemapSeries.prototype.updateNodes = function () {\n        return __awaiter$1(this, void 0, void 0, function () {\n            var _a, gradient, _b, _c, highlightedFill, highlightedFillOpacity, highlightedStroke, highlightedDatumStrokeWidth, highlightedTextColor, tileStroke, tileStrokeWidth, groupStroke, groupStrokeWidth, tileShadow, labelShadow, seriesRect, boxes, labelMeta, updateRectFn, updateLabelFn;\n            var _this = this;\n            return __generator$1(this, function (_d) {\n                if (!this.chart) {\n                    return [2 /*return*/];\n                }\n                _a = this, gradient = _a.gradient, _b = _a.highlightStyle, _c = _b.item, highlightedFill = _c.fill, highlightedFillOpacity = _c.fillOpacity, highlightedStroke = _c.stroke, highlightedDatumStrokeWidth = _c.strokeWidth, highlightedTextColor = _b.text.color, tileStroke = _a.tileStroke, tileStrokeWidth = _a.tileStrokeWidth, groupStroke = _a.groupStroke, groupStrokeWidth = _a.groupStrokeWidth, tileShadow = _a.tileShadow, labelShadow = _a.labelShadow;\n                seriesRect = this.chart.getSeriesRect();\n                boxes = this.squarify(this.dataRoot, new BBox(0, 0, seriesRect.width, seriesRect.height));\n                labelMeta = this.buildLabelMeta(boxes);\n                this.updateNodeMidPoint(boxes);\n                updateRectFn = function (rect, datum, isDatumHighlighted) {\n                    var _a, _b, _c, _d, _e, _f;\n                    var box = boxes.get(datum);\n                    if (!box) {\n                        rect.visible = false;\n                        return;\n                    }\n                    var fill = isDatumHighlighted && highlightedFill !== undefined ? highlightedFill : datum.fill;\n                    var fillOpacity = (_a = (isDatumHighlighted ? highlightedFillOpacity : 1)) !== null && _a !== void 0 ? _a : 1;\n                    var stroke = isDatumHighlighted && highlightedStroke !== undefined\n                        ? highlightedStroke\n                        : datum.isLeaf\n                            ? tileStroke\n                            : groupStroke;\n                    var strokeWidth = isDatumHighlighted && highlightedDatumStrokeWidth !== undefined\n                        ? highlightedDatumStrokeWidth\n                        : datum.isLeaf\n                            ? tileStrokeWidth\n                            : groupStrokeWidth;\n                    var format = _this.getTileFormat(datum, isDatumHighlighted);\n                    var fillColor = validateColor((_b = format === null || format === void 0 ? void 0 : format.fill) !== null && _b !== void 0 ? _b : fill);\n                    if ((_c = format === null || format === void 0 ? void 0 : format.gradient) !== null && _c !== void 0 ? _c : gradient) {\n                        var start = Color.tryParseFromString(fill).brighter().toString();\n                        var end = Color.tryParseFromString(fill).darker().toString();\n                        rect.fill = \"linear-gradient(180deg, \" + start + \", \" + end + \")\";\n                    }\n                    else {\n                        rect.fill = fillColor;\n                    }\n                    rect.fillOpacity = (_d = format === null || format === void 0 ? void 0 : format.fillOpacity) !== null && _d !== void 0 ? _d : fillOpacity;\n                    rect.stroke = validateColor((_e = format === null || format === void 0 ? void 0 : format.stroke) !== null && _e !== void 0 ? _e : stroke);\n                    rect.strokeWidth = (_f = format === null || format === void 0 ? void 0 : format.strokeWidth) !== null && _f !== void 0 ? _f : strokeWidth;\n                    rect.fillShadow = tileShadow;\n                    rect.crisp = true;\n                    rect.x = box.x;\n                    rect.y = box.y;\n                    rect.width = box.width;\n                    rect.height = box.height;\n                    rect.visible = true;\n                    if (isDatumHighlighted && !datum.isLeaf) {\n                        var padding = _this.getNodePadding(datum, box);\n                        var x0 = box.x + padding.left;\n                        var x1 = box.x + box.width - padding.right;\n                        var y0 = box.y + padding.top;\n                        var y1 = box.y + box.height - padding.bottom;\n                        if (rect.clipPath) {\n                            rect.clipPath.clear();\n                        }\n                        else {\n                            rect.clipPath = new Path2D();\n                        }\n                        rect.clipMode = 'punch-out';\n                        rect.clipPath.moveTo(x0, y0);\n                        rect.clipPath.lineTo(x1, y0);\n                        rect.clipPath.lineTo(x1, y1);\n                        rect.clipPath.lineTo(x0, y1);\n                        rect.clipPath.lineTo(x0, y0);\n                        rect.clipPath.closePath();\n                    }\n                };\n                this.groupSelection.selectByClass(Rect).forEach(function (rect) { return updateRectFn(rect, rect.datum, false); });\n                this.highlightSelection.selectByClass(Rect).forEach(function (rect) {\n                    var isDatumHighlighted = _this.isDatumHighlighted(rect.datum);\n                    rect.visible = isDatumHighlighted;\n                    if (rect.visible) {\n                        updateRectFn(rect, rect.datum, isDatumHighlighted);\n                    }\n                });\n                updateLabelFn = function (text, datum, highlighted, key) {\n                    var meta = labelMeta.get(datum);\n                    var label = meta === null || meta === void 0 ? void 0 : meta[key];\n                    if (!label) {\n                        text.visible = false;\n                        return;\n                    }\n                    text.text = label.text;\n                    text.fontFamily = label.style.fontFamily;\n                    text.fontSize = label.style.fontSize;\n                    text.fontWeight = label.style.fontWeight;\n                    text.fill = highlighted ? highlightedTextColor !== null && highlightedTextColor !== void 0 ? highlightedTextColor : label.style.color : label.style.color;\n                    text.fillShadow = highlighted ? undefined : labelShadow;\n                    text.textAlign = label.hAlign;\n                    text.textBaseline = label.vAlign;\n                    text.x = label.x;\n                    text.y = label.y;\n                    text.visible = true;\n                };\n                this.groupSelection\n                    .selectByTag(TextNodeTag.Name)\n                    .forEach(function (text) { return updateLabelFn(text, text.datum, false, 'label'); });\n                this.highlightSelection.selectByTag(TextNodeTag.Name).forEach(function (text) {\n                    var isDatumHighlighted = _this.isDatumHighlighted(text.datum);\n                    text.visible = isDatumHighlighted;\n                    if (text.visible) {\n                        updateLabelFn(text, text.datum, isDatumHighlighted, 'label');\n                    }\n                });\n                this.groupSelection\n                    .selectByTag(TextNodeTag.Value)\n                    .forEach(function (text) { return updateLabelFn(text, text.datum, false, 'value'); });\n                this.highlightSelection.selectByTag(TextNodeTag.Value).forEach(function (text) {\n                    var isDatumHighlighted = _this.isDatumHighlighted(text.datum);\n                    text.visible = isDatumHighlighted;\n                    if (text.visible) {\n                        updateLabelFn(text, text.datum, isDatumHighlighted, 'value');\n                    }\n                });\n                return [2 /*return*/];\n            });\n        });\n    };\n    TreemapSeries.prototype.updateNodeMidPoint = function (boxes) {\n        boxes.forEach(function (box, treeNodeDatum) {\n            treeNodeDatum.nodeMidPoint = {\n                x: box.x + box.width / 2,\n                y: box.y,\n            };\n        });\n    };\n    TreemapSeries.prototype.buildLabelMeta = function (boxes) {\n        var _a = this, labels = _a.labels, title = _a.title, subtitle = _a.subtitle, nodePadding = _a.nodePadding, labelKey = _a.labelKey;\n        var labelMeta = new Map();\n        boxes.forEach(function (box, datum) {\n            if (!labelKey || datum.depth === 0) {\n                return;\n            }\n            var labelText = datum.isLeaf ? datum.label : datum.label.toUpperCase();\n            var labelStyle;\n            if (datum.isLeaf) {\n                // Choose the font size that fits\n                labelStyle =\n                    [labels.large, labels.medium, labels.small].find(function (s) {\n                        var _a = getTextSize(labelText, s), width = _a.width, height = _a.height;\n                        return width < box.width && height < box.height;\n                    }) || labels.small;\n            }\n            else if (datum.depth === 1) {\n                labelStyle = title;\n            }\n            else {\n                labelStyle = subtitle;\n            }\n            var labelSize = getTextSize(labelText, labelStyle);\n            var availTextWidth = box.width - 2 * nodePadding;\n            var availTextHeight = box.height - 2 * nodePadding;\n            var minSizeRatio = 3;\n            if (labelStyle.fontSize > box.width / minSizeRatio || labelStyle.fontSize > box.height / minSizeRatio) {\n                // Avoid labels on too small tiles\n                return;\n            }\n            // Crop text if not enough space\n            if (labelSize.width > availTextWidth) {\n                var textLength = Math.floor((labelText.length * availTextWidth) / labelSize.width) - 1;\n                labelText = labelText.substring(0, textLength) + \"\\u2026\";\n            }\n            var valueConfig = labels.value;\n            var valueStyle = valueConfig.style;\n            var valueMargin = (labelStyle.fontSize + valueStyle.fontSize) / 8;\n            var valueText = String(datum.isLeaf\n                ? valueConfig.formatter\n                    ? valueConfig.formatter({ datum: datum.datum })\n                    : valueConfig.key\n                        ? datum.datum[valueConfig.key]\n                        : ''\n                : '');\n            var valueSize = getTextSize(valueText, valueStyle);\n            var hasValueText = valueText &&\n                valueSize.width < availTextWidth &&\n                valueSize.height + labelSize.height + valueMargin < availTextHeight;\n            labelMeta.set(datum, {\n                label: __assign$u({ text: labelText, style: labelStyle }, (datum.isLeaf\n                    ? {\n                        hAlign: 'center',\n                        vAlign: 'middle',\n                        x: box.x + box.width / 2,\n                        y: box.y + box.height / 2 - (hasValueText ? valueSize.height / 2 + valueMargin / 2 : 0),\n                    }\n                    : {\n                        hAlign: 'left',\n                        vAlign: 'top',\n                        x: box.x + nodePadding,\n                        y: box.y + nodePadding,\n                    })),\n                value: hasValueText\n                    ? {\n                        text: valueText,\n                        style: valueStyle,\n                        hAlign: 'center',\n                        vAlign: 'middle',\n                        x: box.x + box.width / 2,\n                        y: box.y + box.height / 2 + labelSize.height / 2 + valueMargin / 2,\n                    }\n                    : undefined,\n            });\n        });\n        return labelMeta;\n    };\n    TreemapSeries.prototype.getDomain = function (_direction) {\n        return [0, 1];\n    };\n    TreemapSeries.prototype.getNodeClickEvent = function (event, datum) {\n        return new TreemapSeriesNodeClickEvent(this.labelKey, this.sizeKey, this.colorKey, event, datum, this);\n    };\n    TreemapSeries.prototype.getNodeDoubleClickEvent = function (event, datum) {\n        return new TreemapSeriesNodeDoubleClickEvent(this.labelKey, this.sizeKey, this.colorKey, event, datum, this);\n    };\n    TreemapSeries.prototype.getTooltipHtml = function (nodeDatum) {\n        var _a;\n        if (!this.highlightGroups && !nodeDatum.isLeaf) {\n            return '';\n        }\n        var _b = this, tooltip = _b.tooltip, sizeKey = _b.sizeKey, labelKey = _b.labelKey, colorKey = _b.colorKey, rootName = _b.rootName, seriesId = _b.id, labels = _b.labels;\n        var datum = nodeDatum.datum;\n        var tooltipRenderer = tooltip.renderer;\n        var title = nodeDatum.depth ? datum[labelKey] : rootName || datum[labelKey];\n        var content = '';\n        var format = this.getTileFormat(nodeDatum, false);\n        var color = (format === null || format === void 0 ? void 0 : format.fill) || nodeDatum.fill || 'gray';\n        var valueKey = labels.value.key;\n        var valueFormatter = labels.value.formatter;\n        if (valueKey || valueFormatter) {\n            var valueText = '';\n            if (valueFormatter) {\n                valueText = valueFormatter({ datum: datum });\n            }\n            else {\n                var value = datum[valueKey];\n                if (typeof value === 'number' && isFinite(value)) {\n                    valueText = toFixed(value);\n                }\n            }\n            if (valueText) {\n                if (labels.value.name) {\n                    content += \"<b>\" + labels.value.name + \":</b> \";\n                }\n                content += valueText;\n            }\n        }\n        var defaults = {\n            title: title,\n            backgroundColor: color,\n            content: content,\n        };\n        if (tooltipRenderer) {\n            return toTooltipHtml$1(tooltipRenderer({\n                datum: nodeDatum.datum,\n                parent: (_a = nodeDatum.parent) === null || _a === void 0 ? void 0 : _a.datum,\n                depth: nodeDatum.depth,\n                sizeKey: sizeKey,\n                labelKey: labelKey,\n                colorKey: colorKey,\n                title: title,\n                color: color,\n                seriesId: seriesId,\n            }), defaults);\n        }\n        if (!title && !content) {\n            return '';\n        }\n        return toTooltipHtml$1(defaults);\n    };\n    TreemapSeries.prototype.getLegendData = function () {\n        // Override point for subclasses.\n        return [];\n    };\n    TreemapSeries.className = 'TreemapSeries';\n    TreemapSeries.type = 'treemap';\n    __decorate$1j([\n        Validate(NUMBER(0))\n    ], TreemapSeries.prototype, \"nodePadding\", void 0);\n    __decorate$1j([\n        Validate(STRING)\n    ], TreemapSeries.prototype, \"labelKey\", void 0);\n    __decorate$1j([\n        Validate(OPT_STRING)\n    ], TreemapSeries.prototype, \"sizeKey\", void 0);\n    __decorate$1j([\n        Validate(OPT_STRING)\n    ], TreemapSeries.prototype, \"colorKey\", void 0);\n    __decorate$1j([\n        Validate(NUMBER_ARRAY)\n    ], TreemapSeries.prototype, \"colorDomain\", void 0);\n    __decorate$1j([\n        Validate(COLOR_STRING_ARRAY)\n    ], TreemapSeries.prototype, \"colorRange\", void 0);\n    __decorate$1j([\n        Validate(OPT_STRING)\n    ], TreemapSeries.prototype, \"groupFill\", void 0);\n    __decorate$1j([\n        Validate(OPT_COLOR_STRING)\n    ], TreemapSeries.prototype, \"groupStroke\", void 0);\n    __decorate$1j([\n        Validate(OPT_NUMBER(0))\n    ], TreemapSeries.prototype, \"groupStrokeWidth\", void 0);\n    __decorate$1j([\n        Validate(OPT_COLOR_STRING)\n    ], TreemapSeries.prototype, \"tileStroke\", void 0);\n    __decorate$1j([\n        Validate(OPT_NUMBER(0))\n    ], TreemapSeries.prototype, \"tileStrokeWidth\", void 0);\n    __decorate$1j([\n        Validate(BOOLEAN)\n    ], TreemapSeries.prototype, \"gradient\", void 0);\n    __decorate$1j([\n        Validate(OPT_FUNCTION)\n    ], TreemapSeries.prototype, \"formatter\", void 0);\n    __decorate$1j([\n        Validate(STRING)\n    ], TreemapSeries.prototype, \"colorName\", void 0);\n    __decorate$1j([\n        Validate(STRING)\n    ], TreemapSeries.prototype, \"rootName\", void 0);\n    __decorate$1j([\n        Validate(OPT_BOOLEAN)\n    ], TreemapSeries.prototype, \"highlightGroups\", void 0);\n    return TreemapSeries;\n}(HierarchySeries));\n\nvar types$1 = {\n    area: 'cartesian',\n    bar: 'cartesian',\n    column: 'cartesian',\n    histogram: 'cartesian',\n    line: 'cartesian',\n    scatter: 'cartesian',\n    treemap: 'hierarchy',\n    pie: 'polar',\n};\nvar CHART_TYPES = {\n    add: function (seriesType, chartType) {\n        types$1[seriesType] = chartType;\n    },\n    delete: function (seriesType) {\n        delete types$1[seriesType];\n    },\n    has: function (seriesType) {\n        return Object.prototype.hasOwnProperty.call(types$1, seriesType);\n    },\n    isCartesian: function (seriesType) {\n        return types$1[seriesType] === 'cartesian';\n    },\n    isPolar: function (seriesType) {\n        return types$1[seriesType] === 'polar';\n    },\n    isHierarchy: function (seriesType) {\n        return types$1[seriesType] === 'hierarchy';\n    },\n    get seriesTypes() {\n        return Object.keys(types$1);\n    },\n    get cartesianTypes() {\n        var _this = this;\n        return this.seriesTypes.filter(function (t) { return _this.isCartesian(t); });\n    },\n    get polarTypes() {\n        var _this = this;\n        return this.seriesTypes.filter(function (t) { return _this.isPolar(t); });\n    },\n    get hierarchyTypes() {\n        var _this = this;\n        return this.seriesTypes.filter(function (t) { return _this.isHierarchy(t); });\n    },\n};\n\nfunction deepMerge$1(target, source) {\n    if (isPlainObject(target) && isPlainObject(source)) {\n        var result_1 = {};\n        Object.keys(target).forEach(function (key) {\n            if (key in source) {\n                result_1[key] = deepMerge$1(target[key], source[key]);\n            }\n            else {\n                result_1[key] = target[key];\n            }\n        });\n        Object.keys(source).forEach(function (key) {\n            if (!(key in target)) {\n                result_1[key] = source[key];\n            }\n        });\n        return result_1;\n    }\n    if ((Array.isArray(target) && !Array.isArray(source)) || (isObject(target) && !isObject(source))) {\n        return target;\n    }\n    return source;\n}\nfunction isObject(value) {\n    return value && typeof value === 'object';\n}\nfunction isPlainObject(x) {\n    return isObject(x) && x.constructor === Object;\n}\n\nvar __assign$t = (undefined && undefined.__assign) || function () {\n    __assign$t = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign$t.apply(this, arguments);\n};\nvar __read$r = (undefined && undefined.__read) || function (o, n) {\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n    if (!m) return o;\n    var i = m.call(o), r, ar = [], e;\n    try {\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n    }\n    catch (error) { e = { error: error }; }\n    finally {\n        try {\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\n        }\n        finally { if (e) throw e.error; }\n    }\n    return ar;\n};\nvar palette$8 = {\n    fills: ['#f3622d', '#fba71b', '#57b757', '#41a9c9', '#4258c9', '#9a42c8', '#c84164', '#888888'],\n    strokes: ['#aa4520', '#b07513', '#3d803d', '#2d768d', '#2e3e8d', '#6c2e8c', '#8c2d46', '#5f5f5f'],\n};\nvar BOLD = 'bold';\nvar INSIDE = 'inside';\nvar RIGHT = 'right';\nvar ChartTheme = /** @class */ (function () {\n    function ChartTheme(options) {\n        options = deepMerge$1({}, options || {});\n        var _a = options.overrides, overrides = _a === void 0 ? null : _a, _b = options.palette, palette = _b === void 0 ? null : _b;\n        var defaults = this.createChartConfigPerChartType(this.getDefaults());\n        if (overrides) {\n            var common = overrides.common, cartesian = overrides.cartesian, polar = overrides.polar, hierarchy = overrides.hierarchy;\n            var applyOverrides = function (type, seriesTypes, overrideOpts) {\n                if (overrideOpts) {\n                    defaults[type] = deepMerge$1(defaults[type], overrideOpts);\n                    seriesTypes.forEach(function (s) {\n                        var seriesType = s;\n                        defaults[seriesType] = deepMerge$1(defaults[seriesType], overrideOpts);\n                    });\n                }\n            };\n            applyOverrides('common', Object.keys(defaults), common);\n            applyOverrides('cartesian', CHART_TYPES.cartesianTypes, cartesian);\n            applyOverrides('polar', CHART_TYPES.polarTypes, polar);\n            applyOverrides('hierarchy', CHART_TYPES.hierarchyTypes, hierarchy);\n            CHART_TYPES.seriesTypes.forEach(function (s) {\n                var _a;\n                var seriesType = s;\n                var chartConfig = overrides[seriesType];\n                if (chartConfig) {\n                    if (chartConfig.series) {\n                        chartConfig.series = (_a = {}, _a[seriesType] = chartConfig.series, _a);\n                    }\n                    defaults[seriesType] = deepMerge$1(defaults[seriesType], chartConfig);\n                }\n            });\n        }\n        this.palette = palette !== null && palette !== void 0 ? palette : this.getPalette();\n        this.config = Object.freeze(defaults);\n    }\n    ChartTheme.prototype.getPalette = function () {\n        return palette$8;\n    };\n    ChartTheme.getAxisDefaults = function () {\n        return {\n            top: {},\n            right: {},\n            bottom: {},\n            left: {},\n            thickness: 0,\n            title: {\n                enabled: false,\n                text: 'Axis Title',\n                fontStyle: undefined,\n                fontWeight: BOLD,\n                fontSize: 12,\n                fontFamily: this.fontFamily,\n                color: 'rgb(70, 70, 70)',\n            },\n            label: {\n                fontStyle: undefined,\n                fontWeight: undefined,\n                fontSize: 12,\n                fontFamily: this.fontFamily,\n                padding: 5,\n                rotation: undefined,\n                color: 'rgb(87, 87, 87)',\n                formatter: undefined,\n                autoRotate: false,\n                avoidCollisions: true,\n            },\n            line: {\n                width: 1,\n                color: 'rgb(195, 195, 195)',\n            },\n            tick: {\n                width: 1,\n                size: 6,\n                color: 'rgb(195, 195, 195)',\n            },\n            gridStyle: [\n                {\n                    stroke: 'rgb(219, 219, 219)',\n                    lineDash: [4, 2],\n                },\n            ],\n            crossLines: {\n                enabled: false,\n                fill: 'rgb(187,221,232)',\n                stroke: 'rgb(70,162,192)',\n                strokeWidth: 1,\n                label: {\n                    enabled: false,\n                    fontStyle: undefined,\n                    fontWeight: undefined,\n                    fontSize: 12,\n                    fontFamily: this.fontFamily,\n                    padding: 5,\n                    color: 'rgb(87, 87, 87)',\n                    rotation: undefined,\n                },\n            },\n        };\n    };\n    ChartTheme.getSeriesDefaults = function () {\n        return {\n            tooltip: {\n                enabled: true,\n                renderer: undefined,\n            },\n            visible: true,\n            showInLegend: true,\n            highlightStyle: {\n                item: {\n                    fill: 'yellow',\n                    fillOpacity: 1,\n                },\n                series: {\n                    dimOpacity: 1,\n                },\n                text: {\n                    color: 'black',\n                },\n            },\n            nodeClickRange: 'exact',\n        };\n    };\n    ChartTheme.getBarSeriesDefaults = function () {\n        return __assign$t(__assign$t({}, this.getSeriesDefaults()), { flipXY: false, fillOpacity: 1, strokeOpacity: 1, xKey: '', xName: '', normalizedTo: undefined, strokeWidth: 1, lineDash: [0], lineDashOffset: 0, label: {\n                enabled: false,\n                fontStyle: undefined,\n                fontWeight: undefined,\n                fontSize: 12,\n                fontFamily: this.fontFamily,\n                color: 'rgb(70, 70, 70)',\n                formatter: undefined,\n                placement: INSIDE,\n            }, shadow: {\n                enabled: false,\n                color: 'rgba(0, 0, 0, 0.5)',\n                xOffset: 3,\n                yOffset: 3,\n                blur: 5,\n            } });\n    };\n    ChartTheme.getLineSeriesDefaults = function () {\n        var seriesDefaults = this.getSeriesDefaults();\n        return __assign$t(__assign$t({}, seriesDefaults), { tooltip: __assign$t(__assign$t({}, seriesDefaults.tooltip), { format: undefined, position: {\n                    type: 'node',\n                } }) });\n    };\n    ChartTheme.getAreaSeriesDefaults = function () {\n        var seriesDefaults = this.getSeriesDefaults();\n        return __assign$t(__assign$t({}, seriesDefaults), { nodeClickRange: 'nearest', tooltip: __assign$t(__assign$t({}, seriesDefaults.tooltip), { position: {\n                    type: 'node',\n                } }) });\n    };\n    ChartTheme.getScatterSeriesDefaults = function () {\n        var seriesDefaults = this.getSeriesDefaults();\n        return __assign$t(__assign$t({}, seriesDefaults), { tooltip: __assign$t(__assign$t({}, seriesDefaults.tooltip), { position: {\n                    type: 'node',\n                } }) });\n    };\n    ChartTheme.getCartesianSeriesMarkerDefaults = function () {\n        return {\n            enabled: true,\n            shape: 'circle',\n            size: 6,\n            maxSize: 30,\n            strokeWidth: 1,\n            formatter: undefined,\n        };\n    };\n    ChartTheme.getChartDefaults = function () {\n        return {\n            background: {\n                visible: true,\n                fill: 'white',\n            },\n            padding: {\n                top: 20,\n                right: 20,\n                bottom: 20,\n                left: 20,\n            },\n            title: {\n                enabled: false,\n                text: 'Title',\n                fontStyle: undefined,\n                fontWeight: BOLD,\n                fontSize: 16,\n                fontFamily: this.fontFamily,\n                color: 'rgb(70, 70, 70)',\n            },\n            subtitle: {\n                enabled: false,\n                text: 'Subtitle',\n                fontStyle: undefined,\n                fontWeight: undefined,\n                fontSize: 12,\n                fontFamily: this.fontFamily,\n                color: 'rgb(140, 140, 140)',\n            },\n            footnote: {\n                enabled: false,\n                text: 'Footnote',\n                fontStyle: undefined,\n                fontWeight: undefined,\n                fontSize: 12,\n                fontFamily: this.fontFamily,\n                color: 'rgb(140, 140, 140)',\n                spacing: 30,\n            },\n            legend: {\n                enabled: true,\n                position: RIGHT,\n                spacing: 20,\n                listeners: {},\n                item: {\n                    paddingX: 16,\n                    paddingY: 8,\n                    marker: {\n                        shape: undefined,\n                        size: 15,\n                        strokeWidth: 1,\n                        padding: 8,\n                    },\n                    label: {\n                        color: 'black',\n                        fontStyle: undefined,\n                        fontWeight: undefined,\n                        fontSize: 12,\n                        fontFamily: this.fontFamily,\n                        formatter: undefined,\n                    },\n                },\n                reverseOrder: false,\n                pagination: {\n                    marker: {\n                        size: 12,\n                    },\n                    activeStyle: {\n                        fill: 'rgb(70, 70, 70)',\n                    },\n                    inactiveStyle: {\n                        fill: 'rgb(219, 219, 219)',\n                    },\n                    highlightStyle: {\n                        fill: 'rgb(70, 70, 70)',\n                    },\n                    label: {\n                        color: 'rgb(70, 70, 70)',\n                    },\n                },\n            },\n            tooltip: {\n                enabled: true,\n                range: 'nearest',\n                delay: 0,\n            },\n            listeners: {},\n        };\n    };\n    ChartTheme.prototype.createChartConfigPerChartType = function (config) {\n        var typeToAliases = {\n            cartesian: CHART_TYPES.cartesianTypes,\n            polar: CHART_TYPES.polarTypes,\n            hierarchy: CHART_TYPES.hierarchyTypes,\n            groupedCategory: [],\n        };\n        Object.entries(typeToAliases).forEach(function (_a) {\n            var _b = __read$r(_a, 2), type = _b[0], aliases = _b[1];\n            aliases.forEach(function (alias) {\n                if (!config[alias]) {\n                    config[alias] = deepMerge$1({}, config[type]);\n                }\n            });\n        });\n        return config;\n    };\n    /**\n     * Meant to be overridden in subclasses. For example:\n     * ```\n     *     getDefaults() {\n     *         const subclassDefaults = { ... };\n     *         return this.mergeWithParentDefaults(subclassDefaults);\n     *     }\n     * ```\n     */\n    ChartTheme.prototype.getDefaults = function () {\n        var defaults = deepMerge$1({}, ChartTheme.defaults);\n        var getOverridesByType = function (seriesTypes) {\n            var result = {};\n            result.series = seriesTypes.reduce(function (obj, seriesType) {\n                if (Object.prototype.hasOwnProperty.call(ChartTheme.seriesThemeOverrides, seriesType)) {\n                    obj[seriesType] = ChartTheme.seriesThemeOverrides[seriesType]({\n                        seriesDefaults: ChartTheme.getSeriesDefaults(),\n                        defaultFontFamily: ChartTheme.fontFamily,\n                    });\n                }\n                return obj;\n            }, {});\n            return result;\n        };\n        var extension = {\n            cartesian: getOverridesByType(CHART_TYPES.cartesianTypes),\n            groupedCategory: getOverridesByType(CHART_TYPES.cartesianTypes),\n            polar: getOverridesByType(CHART_TYPES.polarTypes),\n            hierarchy: getOverridesByType(CHART_TYPES.hierarchyTypes),\n        };\n        return deepMerge$1(defaults, extension);\n    };\n    ChartTheme.prototype.mergeWithParentDefaults = function (parentDefaults, defaults) {\n        return deepMerge$1(parentDefaults, defaults);\n    };\n    ChartTheme.fontFamily = 'Verdana, sans-serif';\n    ChartTheme.seriesThemeOverrides = {};\n    ChartTheme.cartesianDefaults = __assign$t(__assign$t({}, ChartTheme.getChartDefaults()), { axes: {\n            number: __assign$t({}, ChartTheme.getAxisDefaults()),\n            log: __assign$t(__assign$t({}, ChartTheme.getAxisDefaults()), { base: 10 }),\n            category: __assign$t(__assign$t({}, ChartTheme.getAxisDefaults()), { groupPaddingInner: 0.1, label: __assign$t(__assign$t({}, ChartTheme.getAxisDefaults().label), { autoRotate: true }) }),\n            groupedCategory: __assign$t({}, ChartTheme.getAxisDefaults()),\n            time: __assign$t({}, ChartTheme.getAxisDefaults()),\n        }, series: {\n            column: __assign$t(__assign$t({}, ChartTheme.getBarSeriesDefaults()), { flipXY: false }),\n            bar: __assign$t(__assign$t({}, ChartTheme.getBarSeriesDefaults()), { flipXY: true }),\n            line: __assign$t(__assign$t({}, ChartTheme.getLineSeriesDefaults()), { title: undefined, xKey: '', xName: '', yKey: '', yName: '', strokeWidth: 2, strokeOpacity: 1, lineDash: [0], lineDashOffset: 0, marker: __assign$t(__assign$t({}, ChartTheme.getCartesianSeriesMarkerDefaults()), { fillOpacity: 1, strokeOpacity: 1 }), label: {\n                    enabled: false,\n                    fontStyle: undefined,\n                    fontWeight: undefined,\n                    fontSize: 12,\n                    fontFamily: ChartTheme.fontFamily,\n                    color: 'rgb(70, 70, 70)',\n                    formatter: undefined,\n                } }),\n            scatter: __assign$t(__assign$t({}, ChartTheme.getScatterSeriesDefaults()), { title: undefined, xKey: '', yKey: '', sizeKey: undefined, labelKey: undefined, xName: '', yName: '', sizeName: 'Size', labelName: 'Label', marker: __assign$t({}, ChartTheme.getCartesianSeriesMarkerDefaults()), label: {\n                    enabled: false,\n                    fontStyle: undefined,\n                    fontWeight: undefined,\n                    fontSize: 12,\n                    fontFamily: ChartTheme.fontFamily,\n                    color: 'rgb(70, 70, 70)',\n                } }),\n            area: __assign$t(__assign$t({}, ChartTheme.getAreaSeriesDefaults()), { xKey: '', xName: '', normalizedTo: undefined, fillOpacity: 0.8, strokeOpacity: 1, strokeWidth: 2, lineDash: [0], lineDashOffset: 0, shadow: {\n                    enabled: false,\n                    color: 'rgba(0, 0, 0, 0.5)',\n                    xOffset: 3,\n                    yOffset: 3,\n                    blur: 5,\n                }, marker: __assign$t(__assign$t({}, ChartTheme.getCartesianSeriesMarkerDefaults()), { fillOpacity: 1, strokeOpacity: 1, enabled: false }), label: {\n                    enabled: false,\n                    fontStyle: undefined,\n                    fontWeight: undefined,\n                    fontSize: 12,\n                    fontFamily: ChartTheme.fontFamily,\n                    color: 'rgb(70, 70, 70)',\n                    formatter: undefined,\n                } }),\n            histogram: __assign$t(__assign$t({}, ChartTheme.getSeriesDefaults()), { xKey: '', yKey: '', xName: '', yName: '', strokeWidth: 1, fillOpacity: 1, strokeOpacity: 1, lineDash: [0], lineDashOffset: 0, areaPlot: false, bins: undefined, aggregation: 'sum', label: {\n                    enabled: false,\n                    fontStyle: undefined,\n                    fontWeight: undefined,\n                    fontSize: 12,\n                    fontFamily: ChartTheme.fontFamily,\n                    color: 'rgb(70, 70, 70)',\n                    formatter: undefined,\n                }, shadow: {\n                    enabled: true,\n                    color: 'rgba(0, 0, 0, 0.5)',\n                    xOffset: 0,\n                    yOffset: 0,\n                    blur: 5,\n                } }),\n        }, navigator: {\n            enabled: false,\n            height: 30,\n            mask: {\n                fill: '#999999',\n                stroke: '#999999',\n                strokeWidth: 1,\n                fillOpacity: 0.2,\n            },\n            minHandle: {\n                fill: '#f2f2f2',\n                stroke: '#999999',\n                strokeWidth: 1,\n                width: 8,\n                height: 16,\n                gripLineGap: 2,\n                gripLineLength: 8,\n            },\n            maxHandle: {\n                fill: '#f2f2f2',\n                stroke: '#999999',\n                strokeWidth: 1,\n                width: 8,\n                height: 16,\n                gripLineGap: 2,\n                gripLineLength: 8,\n            },\n        } });\n    ChartTheme.polarDefaults = __assign$t(__assign$t({}, ChartTheme.getChartDefaults()), { series: {\n            pie: __assign$t(__assign$t({}, ChartTheme.getSeriesDefaults()), { title: {\n                    enabled: true,\n                    text: '',\n                    fontStyle: undefined,\n                    fontWeight: 'bold',\n                    fontSize: 14,\n                    fontFamily: ChartTheme.fontFamily,\n                    color: 'rgb(70, 70, 70)',\n                }, angleKey: '', angleName: '', radiusKey: undefined, radiusName: undefined, calloutLabelKey: undefined, calloutLabelName: undefined, sectorLabelKey: undefined, sectorLabelName: undefined, calloutLabel: {\n                    enabled: true,\n                    fontStyle: undefined,\n                    fontWeight: undefined,\n                    fontSize: 12,\n                    fontFamily: ChartTheme.fontFamily,\n                    color: 'rgb(70, 70, 70)',\n                    offset: 3,\n                    minAngle: 0,\n                }, sectorLabel: {\n                    enabled: true,\n                    fontStyle: undefined,\n                    fontWeight: undefined,\n                    fontSize: 12,\n                    fontFamily: ChartTheme.fontFamily,\n                    color: 'rgb(70, 70, 70)',\n                    positionOffset: 0,\n                    positionRatio: 0.5,\n                }, calloutLine: {\n                    length: 10,\n                    strokeWidth: 2,\n                }, fillOpacity: 1, strokeOpacity: 1, strokeWidth: 1, lineDash: [0], lineDashOffset: 0, rotation: 0, outerRadiusOffset: 0, innerRadiusOffset: 0, shadow: {\n                    enabled: false,\n                    color: 'rgba(0, 0, 0, 0.5)',\n                    xOffset: 3,\n                    yOffset: 3,\n                    blur: 5,\n                }, innerLabels: {\n                    fontStyle: undefined,\n                    fontWeight: undefined,\n                    fontSize: 12,\n                    fontFamily: ChartTheme.fontFamily,\n                    color: 'rgb(70, 70, 70)',\n                    margin: 2,\n                } }),\n        } });\n    ChartTheme.hierarchyDefaults = __assign$t(__assign$t({}, ChartTheme.getChartDefaults()), { series: {\n            treemap: __assign$t(__assign$t({}, ChartTheme.getSeriesDefaults()), { showInLegend: false, labelKey: 'label', sizeKey: 'size', colorKey: 'color', colorDomain: [-5, 5], colorRange: ['#cb4b3f', '#6acb64'], groupFill: '#272931', groupStroke: 'black', groupStrokeWidth: 1, tileStroke: 'black', tileStrokeWidth: 1, gradient: true, tileShadow: {\n                    enabled: false,\n                    color: 'rgba(0, 0, 0, 0.5)',\n                    xOffset: 3,\n                    yOffset: 3,\n                    blur: 5,\n                }, labelShadow: {\n                    enabled: true,\n                    color: 'rgba(0, 0, 0, 0.4)',\n                    xOffset: 1.5,\n                    yOffset: 1.5,\n                    blur: 5,\n                }, highlightGroups: true, nodePadding: 2, title: {\n                    enabled: true,\n                    color: 'white',\n                    fontStyle: undefined,\n                    fontWeight: 'bold',\n                    fontSize: 12,\n                    fontFamily: 'Verdana, sans-serif',\n                    padding: 15,\n                }, subtitle: {\n                    enabled: true,\n                    color: 'white',\n                    fontStyle: undefined,\n                    fontWeight: undefined,\n                    fontSize: 9,\n                    fontFamily: 'Verdana, sans-serif',\n                    padding: 13,\n                }, labels: {\n                    large: {\n                        enabled: true,\n                        fontStyle: undefined,\n                        fontWeight: 'bold',\n                        fontSize: 18,\n                        fontFamily: 'Verdana, sans-serif',\n                        color: 'white',\n                    },\n                    medium: {\n                        enabled: true,\n                        fontStyle: undefined,\n                        fontWeight: 'bold',\n                        fontSize: 14,\n                        fontFamily: 'Verdana, sans-serif',\n                        color: 'white',\n                    },\n                    small: {\n                        enabled: true,\n                        fontStyle: undefined,\n                        fontWeight: 'bold',\n                        fontSize: 10,\n                        fontFamily: 'Verdana, sans-serif',\n                        color: 'white',\n                    },\n                    value: {\n                        style: {\n                            enabled: true,\n                            fontStyle: undefined,\n                            fontWeight: undefined,\n                            fontSize: 12,\n                            fontFamily: 'Verdana, sans-serif',\n                            color: 'white',\n                        },\n                    },\n                } }),\n        } });\n    ChartTheme.defaults = {\n        cartesian: ChartTheme.cartesianDefaults,\n        groupedCategory: ChartTheme.cartesianDefaults,\n        polar: ChartTheme.polarDefaults,\n        hierarchy: ChartTheme.hierarchyDefaults,\n    };\n    return ChartTheme;\n}());\n\nvar __extends$1W = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __assign$s = (undefined && undefined.__assign) || function () {\n    __assign$s = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign$s.apply(this, arguments);\n};\nvar DarkTheme = /** @class */ (function (_super) {\n    __extends$1W(DarkTheme, _super);\n    function DarkTheme(options) {\n        return _super.call(this, options) || this;\n    }\n    DarkTheme.prototype.getDefaults = function () {\n        var fontColor = DarkTheme.fontColor;\n        var mutedFontColor = DarkTheme.mutedFontColor;\n        var axisDefaults = {\n            title: {\n                color: fontColor,\n            },\n            label: {\n                color: fontColor,\n            },\n            gridStyle: [\n                {\n                    stroke: 'rgb(88, 88, 88)',\n                    lineDash: [4, 2],\n                },\n            ],\n        };\n        var seriesLabelDefaults = {\n            label: {\n                color: fontColor,\n            },\n        };\n        var chartAxesDefaults = {\n            axes: {\n                number: __assign$s({}, axisDefaults),\n                category: __assign$s({}, axisDefaults),\n                time: __assign$s({}, axisDefaults),\n            },\n        };\n        var chartDefaults = {\n            background: {\n                fill: 'rgb(34, 38, 41)',\n            },\n            title: {\n                color: fontColor,\n            },\n            subtitle: {\n                color: mutedFontColor,\n            },\n            legend: {\n                item: {\n                    label: {\n                        color: fontColor,\n                    },\n                },\n                pagination: {\n                    activeStyle: {\n                        fill: fontColor,\n                    },\n                    inactiveStyle: {\n                        fill: mutedFontColor,\n                    },\n                    highlightStyle: {\n                        fill: fontColor,\n                    },\n                    label: {\n                        color: fontColor,\n                    },\n                },\n            },\n        };\n        var getOverridesByType = function (seriesTypes) {\n            return seriesTypes.reduce(function (obj, seriesType) {\n                if (Object.prototype.hasOwnProperty.call(DarkTheme.seriesDarkThemeOverrides, seriesType)) {\n                    obj[seriesType] = DarkTheme.seriesDarkThemeOverrides[seriesType]({\n                        seriesLabelDefaults: DarkTheme.seriesLabelDefaults,\n                    });\n                }\n                return obj;\n            }, {});\n        };\n        return this.mergeWithParentDefaults(_super.prototype.getDefaults.call(this), {\n            cartesian: __assign$s(__assign$s(__assign$s({}, chartDefaults), chartAxesDefaults), { series: __assign$s({ bar: __assign$s({}, seriesLabelDefaults), column: __assign$s({}, seriesLabelDefaults), histogram: __assign$s({}, seriesLabelDefaults) }, getOverridesByType(CHART_TYPES.cartesianTypes)) }),\n            groupedCategory: __assign$s(__assign$s(__assign$s({}, chartDefaults), chartAxesDefaults), { series: __assign$s({ bar: __assign$s({}, seriesLabelDefaults), column: __assign$s({}, seriesLabelDefaults), histogram: __assign$s({}, seriesLabelDefaults) }, getOverridesByType(CHART_TYPES.cartesianTypes)) }),\n            polar: __assign$s(__assign$s({}, chartDefaults), { series: __assign$s({ pie: {\n                        calloutLabel: {\n                            color: fontColor,\n                        },\n                        sectorLabel: {\n                            color: fontColor,\n                        },\n                        title: {\n                            color: fontColor,\n                        },\n                        innerLabels: {\n                            color: fontColor,\n                        },\n                    } }, getOverridesByType(CHART_TYPES.polarTypes)) }),\n            hierarchy: __assign$s(__assign$s({}, chartDefaults), { series: __assign$s({ treemap: {\n                        tileStroke: 'white',\n                        groupStroke: 'white',\n                        title: {\n                            color: fontColor,\n                        },\n                        subtitle: {\n                            color: mutedFontColor,\n                        },\n                        labels: {\n                            large: {\n                                color: fontColor,\n                            },\n                            medium: {\n                                color: fontColor,\n                            },\n                            small: {\n                                color: fontColor,\n                            },\n                            value: {\n                                style: {\n                                    color: fontColor,\n                                },\n                            },\n                        },\n                    } }, getOverridesByType(CHART_TYPES.hierarchyTypes)) }),\n        });\n    };\n    DarkTheme.fontColor = 'rgb(200, 200, 200)';\n    DarkTheme.mutedFontColor = 'rgb(150, 150, 150)';\n    DarkTheme.seriesLabelDefaults = {\n        label: {\n            color: DarkTheme.fontColor,\n        },\n    };\n    DarkTheme.seriesDarkThemeOverrides = {};\n    return DarkTheme;\n}(ChartTheme));\n\nvar __values$b = (undefined && undefined.__values) || function(o) {\n    var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n    if (m) return m.call(o);\n    if (o && typeof o.length === \"number\") return {\n        next: function () {\n            if (o && i >= o.length) o = void 0;\n            return { value: o && o[i++], done: !o };\n        }\n    };\n    throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nvar BaseModuleInstance = /** @class */ (function () {\n    function BaseModuleInstance() {\n        this.destroyFns = [];\n    }\n    BaseModuleInstance.prototype.destroy = function () {\n        var e_1, _a;\n        try {\n            for (var _b = __values$b(this.destroyFns), _c = _b.next(); !_c.done; _c = _b.next()) {\n                var destroyFn = _c.value;\n                destroyFn();\n            }\n        }\n        catch (e_1_1) { e_1 = { error: e_1_1 }; }\n        finally {\n            try {\n                if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n            }\n            finally { if (e_1) throw e_1.error; }\n        }\n    };\n    return BaseModuleInstance;\n}());\nvar REGISTERED_MODULES = [];\nfunction registerModule(module) {\n    var otherModule = REGISTERED_MODULES.find(function (other) {\n        return module.type === other.type && module.optionsKey === other.optionsKey;\n    });\n    if (otherModule) {\n        if (module.packageType === 'enterprise' && otherModule.packageType === 'community') {\n            // Replace the community module with an enterprise version\n            var index = REGISTERED_MODULES.indexOf(otherModule);\n            REGISTERED_MODULES.splice(index, 1, module);\n        }\n    }\n    else {\n        // Simply register the module\n        REGISTERED_MODULES.push(module);\n    }\n}\n\nvar __extends$1V = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$1i = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar RangeHandle$1 = /** @class */ (function (_super) {\n    __extends$1V(RangeHandle, _super);\n    function RangeHandle() {\n        var _this = _super !== null && _super.apply(this, arguments) || this;\n        _this._fill = '#f2f2f2';\n        _this._stroke = '#999999';\n        _this._strokeWidth = 1;\n        _this._lineCap = 'square';\n        _this._centerX = 0;\n        _this._centerY = 0;\n        // Use an even number for better looking results.\n        _this._width = 8;\n        // Use an even number for better looking results.\n        _this._gripLineGap = 2;\n        // Use an even number for better looking results.\n        _this._gripLineLength = 8;\n        _this._height = 16;\n        return _this;\n    }\n    Object.defineProperty(RangeHandle.prototype, \"centerX\", {\n        get: function () {\n            return this._centerX;\n        },\n        set: function (value) {\n            if (this._centerX !== value) {\n                this._centerX = value;\n                this.dirtyPath = true;\n            }\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(RangeHandle.prototype, \"centerY\", {\n        get: function () {\n            return this._centerY;\n        },\n        set: function (value) {\n            if (this._centerY !== value) {\n                this._centerY = value;\n                this.dirtyPath = true;\n            }\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(RangeHandle.prototype, \"width\", {\n        get: function () {\n            return this._width;\n        },\n        set: function (value) {\n            if (this._width !== value) {\n                this._width = value;\n                this.dirtyPath = true;\n            }\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(RangeHandle.prototype, \"gripLineGap\", {\n        get: function () {\n            return this._gripLineGap;\n        },\n        set: function (value) {\n            if (this._gripLineGap !== value) {\n                this._gripLineGap = value;\n                this.dirtyPath = true;\n            }\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(RangeHandle.prototype, \"gripLineLength\", {\n        get: function () {\n            return this._gripLineLength;\n        },\n        set: function (value) {\n            if (this._gripLineLength !== value) {\n                this._gripLineLength = value;\n                this.dirtyPath = true;\n            }\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(RangeHandle.prototype, \"height\", {\n        get: function () {\n            return this._height;\n        },\n        set: function (value) {\n            if (this._height !== value) {\n                this._height = value;\n                this.dirtyPath = true;\n            }\n        },\n        enumerable: false,\n        configurable: true\n    });\n    RangeHandle.prototype.computeBBox = function () {\n        var _a = this, centerX = _a.centerX, centerY = _a.centerY, width = _a.width, height = _a.height;\n        var x = centerX - width / 2;\n        var y = centerY - height / 2;\n        return new BBox(x, y, width, height);\n    };\n    RangeHandle.prototype.isPointInPath = function (x, y) {\n        var point = this.transformPoint(x, y);\n        var bbox = this.computeBBox();\n        return bbox.containsPoint(point.x, point.y);\n    };\n    RangeHandle.prototype.updatePath = function () {\n        var _a = this, path = _a.path, centerX = _a.centerX, centerY = _a.centerY, width = _a.width, height = _a.height;\n        path.clear();\n        var x = centerX - width / 2;\n        var y = centerY - height / 2;\n        var ax = this.align(x);\n        var ay = this.align(y);\n        var axw = ax + this.align(x, width);\n        var ayh = ay + this.align(y, height);\n        // Handle.\n        path.moveTo(ax, ay);\n        path.lineTo(axw, ay);\n        path.lineTo(axw, ayh);\n        path.lineTo(ax, ayh);\n        path.lineTo(ax, ay);\n        // Grip lines.\n        var dx = this.gripLineGap / 2;\n        var dy = this.gripLineLength / 2;\n        path.moveTo(this.align(centerX - dx), this.align(centerY - dy));\n        path.lineTo(this.align(centerX - dx), this.align(centerY + dy));\n        path.moveTo(this.align(centerX + dx), this.align(centerY - dy));\n        path.lineTo(this.align(centerX + dx), this.align(centerY + dy));\n    };\n    RangeHandle.className = 'RangeHandle';\n    __decorate$1i([\n        Validate(COLOR_STRING)\n    ], RangeHandle.prototype, \"_fill\", void 0);\n    __decorate$1i([\n        Validate(COLOR_STRING)\n    ], RangeHandle.prototype, \"_stroke\", void 0);\n    __decorate$1i([\n        Validate(NUMBER(0))\n    ], RangeHandle.prototype, \"_strokeWidth\", void 0);\n    __decorate$1i([\n        Validate(LINE_CAP)\n    ], RangeHandle.prototype, \"_lineCap\", void 0);\n    __decorate$1i([\n        Validate(NUMBER(0))\n    ], RangeHandle.prototype, \"_width\", void 0);\n    __decorate$1i([\n        Validate(NUMBER(0))\n    ], RangeHandle.prototype, \"_gripLineGap\", void 0);\n    __decorate$1i([\n        Validate(NUMBER(0))\n    ], RangeHandle.prototype, \"_gripLineLength\", void 0);\n    __decorate$1i([\n        Validate(NUMBER(0))\n    ], RangeHandle.prototype, \"_height\", void 0);\n    return RangeHandle;\n}(Path));\n\nvar __extends$1U = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$1h = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar RangeMask = /** @class */ (function (_super) {\n    __extends$1U(RangeMask, _super);\n    function RangeMask() {\n        var _this = _super !== null && _super.apply(this, arguments) || this;\n        _this._stroke = '#999999';\n        _this._strokeWidth = 1;\n        _this._fill = '#999999';\n        _this._fillOpacity = 0.2;\n        _this._lineCap = 'square';\n        _this._x = 0;\n        _this._y = 0;\n        _this._width = 200;\n        _this._height = 30;\n        _this.minRange = 0.05;\n        _this._min = 0;\n        _this._max = 1;\n        return _this;\n    }\n    Object.defineProperty(RangeMask.prototype, \"x\", {\n        get: function () {\n            return this._x;\n        },\n        set: function (value) {\n            if (this._x !== value) {\n                this._x = value;\n                this.dirtyPath = true;\n            }\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(RangeMask.prototype, \"y\", {\n        get: function () {\n            return this._y;\n        },\n        set: function (value) {\n            if (this._y !== value) {\n                this._y = value;\n                this.dirtyPath = true;\n            }\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(RangeMask.prototype, \"width\", {\n        get: function () {\n            return this._width;\n        },\n        set: function (value) {\n            if (this._width !== value) {\n                this._width = value;\n                this.dirtyPath = true;\n            }\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(RangeMask.prototype, \"height\", {\n        get: function () {\n            return this._height;\n        },\n        set: function (value) {\n            if (this._height !== value) {\n                this._height = value;\n                this.dirtyPath = true;\n            }\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(RangeMask.prototype, \"min\", {\n        get: function () {\n            return this._min;\n        },\n        set: function (value) {\n            var _a;\n            value = Math.min(Math.max(value, 0), this.max - this.minRange);\n            if (isNaN(value)) {\n                return;\n            }\n            if (this._min !== value) {\n                this._min = value;\n                this.dirtyPath = true;\n                (_a = this.onRangeChange) === null || _a === void 0 ? void 0 : _a.call(this);\n            }\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(RangeMask.prototype, \"max\", {\n        get: function () {\n            return this._max;\n        },\n        set: function (value) {\n            var _a;\n            value = Math.max(Math.min(value, 1), this.min + this.minRange);\n            if (isNaN(value)) {\n                return;\n            }\n            if (this._max !== value) {\n                this._max = value;\n                this.dirtyPath = true;\n                (_a = this.onRangeChange) === null || _a === void 0 ? void 0 : _a.call(this);\n            }\n        },\n        enumerable: false,\n        configurable: true\n    });\n    RangeMask.prototype.computeBBox = function () {\n        var _a = this, x = _a.x, y = _a.y, width = _a.width, height = _a.height;\n        return new BBox(x, y, width, height);\n    };\n    RangeMask.prototype.computeVisibleRangeBBox = function () {\n        var _a = this, x = _a.x, y = _a.y, width = _a.width, height = _a.height, min = _a.min, max = _a.max;\n        var minX = x + width * min;\n        var maxX = x + width * max;\n        return new BBox(minX, y, maxX - minX, height);\n    };\n    RangeMask.prototype.updatePath = function () {\n        var _a = this, path = _a.path, x = _a.x, y = _a.y, width = _a.width, height = _a.height, min = _a.min, max = _a.max;\n        path.clear();\n        var ax = this.align(x);\n        var ay = this.align(y);\n        var axw = ax + this.align(x, width);\n        var ayh = ay + this.align(y, height);\n        // Whole range.\n        path.moveTo(ax, ay);\n        path.lineTo(axw, ay);\n        path.lineTo(axw, ayh);\n        path.lineTo(ax, ayh);\n        path.lineTo(ax, ay);\n        var minX = this.align(x + width * min);\n        var maxX = this.align(x + width * max);\n        // Visible range.\n        path.moveTo(minX, ay);\n        path.lineTo(minX, ayh);\n        path.lineTo(maxX, ayh);\n        path.lineTo(maxX, ay);\n        path.lineTo(minX, ay);\n    };\n    RangeMask.className = 'RangeMask';\n    __decorate$1h([\n        Validate(COLOR_STRING)\n    ], RangeMask.prototype, \"_stroke\", void 0);\n    __decorate$1h([\n        Validate(NUMBER(0))\n    ], RangeMask.prototype, \"_strokeWidth\", void 0);\n    __decorate$1h([\n        Validate(COLOR_STRING)\n    ], RangeMask.prototype, \"_fill\", void 0);\n    __decorate$1h([\n        Validate(NUMBER(0, 1))\n    ], RangeMask.prototype, \"_fillOpacity\", void 0);\n    __decorate$1h([\n        Validate(LINE_CAP)\n    ], RangeMask.prototype, \"_lineCap\", void 0);\n    __decorate$1h([\n        Validate(NUMBER(0))\n    ], RangeMask.prototype, \"_width\", void 0);\n    __decorate$1h([\n        Validate(NUMBER(0))\n    ], RangeMask.prototype, \"_height\", void 0);\n    __decorate$1h([\n        Validate(NUMBER())\n    ], RangeMask.prototype, \"_min\", void 0);\n    __decorate$1h([\n        Validate(NUMBER())\n    ], RangeMask.prototype, \"_max\", void 0);\n    return RangeMask;\n}(Path));\n\nvar __extends$1T = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __assign$r = (undefined && undefined.__assign) || function () {\n    __assign$r = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign$r.apply(this, arguments);\n};\nvar RangeSelector = /** @class */ (function (_super) {\n    __extends$1T(RangeSelector, _super);\n    function RangeSelector() {\n        var _this = _super.call(this, { name: 'rangeSelectorGroup' }) || this;\n        _this.minHandle = new RangeHandle$1();\n        _this.maxHandle = new RangeHandle$1();\n        _this.mask = (function () {\n            var _a = RangeSelector.defaults, x = _a.x, y = _a.y, width = _a.width, height = _a.height, min = _a.min, max = _a.max;\n            var mask = new RangeMask();\n            mask.x = x;\n            mask.y = y;\n            mask.width = width;\n            mask.height = height;\n            mask.min = min;\n            mask.max = max;\n            var _b = _this, minHandle = _b.minHandle, maxHandle = _b.maxHandle;\n            minHandle.centerX = x;\n            maxHandle.centerX = x + width;\n            minHandle.centerY = maxHandle.centerY = y + height / 2;\n            _this.append([mask, minHandle, maxHandle]);\n            mask.onRangeChange = function () {\n                var _a;\n                _this.updateHandles();\n                (_a = _this.onRangeChange) === null || _a === void 0 ? void 0 : _a.call(_this);\n            };\n            return mask;\n        })();\n        _this._x = RangeSelector.defaults.x;\n        _this._y = RangeSelector.defaults.y;\n        _this._width = RangeSelector.defaults.width;\n        _this._height = RangeSelector.defaults.height;\n        _this._min = RangeSelector.defaults.min;\n        _this._max = RangeSelector.defaults.max;\n        _this.isContainerNode = true;\n        return _this;\n    }\n    Object.defineProperty(RangeSelector.prototype, \"x\", {\n        get: function () {\n            return this.mask.x;\n        },\n        set: function (value) {\n            this.mask.x = value;\n            this.updateHandles();\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(RangeSelector.prototype, \"y\", {\n        get: function () {\n            return this.mask.y;\n        },\n        set: function (value) {\n            this.mask.y = value;\n            this.updateHandles();\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(RangeSelector.prototype, \"width\", {\n        get: function () {\n            return this.mask.width;\n        },\n        set: function (value) {\n            this.mask.width = value;\n            this.updateHandles();\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(RangeSelector.prototype, \"height\", {\n        get: function () {\n            return this.mask.height;\n        },\n        set: function (value) {\n            this.mask.height = value;\n            this.updateHandles();\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(RangeSelector.prototype, \"min\", {\n        get: function () {\n            return this.mask.min;\n        },\n        set: function (value) {\n            this.mask.min = value;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(RangeSelector.prototype, \"max\", {\n        get: function () {\n            return this.mask.max;\n        },\n        set: function (value) {\n            this.mask.max = value;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    RangeSelector.prototype.updateHandles = function () {\n        var _a = this, minHandle = _a.minHandle, maxHandle = _a.maxHandle, x = _a.x, y = _a.y, width = _a.width, height = _a.height, mask = _a.mask;\n        minHandle.centerX = x + width * mask.min;\n        maxHandle.centerX = x + width * mask.max;\n        minHandle.centerY = maxHandle.centerY = y + height / 2;\n    };\n    RangeSelector.prototype.computeBBox = function () {\n        return this.mask.computeBBox();\n    };\n    RangeSelector.prototype.computeVisibleRangeBBox = function () {\n        return this.mask.computeVisibleRangeBBox();\n    };\n    RangeSelector.prototype.render = function (renderCtx) {\n        var ctx = renderCtx.ctx, forceRender = renderCtx.forceRender, stats = renderCtx.stats;\n        if (this.dirty === RedrawType.NONE && !forceRender) {\n            if (stats)\n                stats.nodesSkipped++;\n            return;\n        }\n        this.computeTransformMatrix();\n        this.matrix.toContext(ctx);\n        var _a = this, mask = _a.mask, minHandle = _a.minHandle, maxHandle = _a.maxHandle;\n        [mask, minHandle, maxHandle].forEach(function (child) {\n            if (child.visible && (forceRender || child.dirty > RedrawType.NONE)) {\n                ctx.save();\n                child.render(__assign$r(__assign$r({}, renderCtx), { ctx: ctx, forceRender: forceRender }));\n                ctx.restore();\n            }\n        });\n        this.markClean({ force: true });\n        if (stats)\n            stats.nodesRendered++;\n    };\n    RangeSelector.className = 'Range';\n    RangeSelector.defaults = {\n        x: 0,\n        y: 0,\n        width: 200,\n        height: 30,\n        min: 0,\n        max: 1,\n    };\n    return RangeSelector;\n}(Group));\n\nvar NavigatorMask = /** @class */ (function () {\n    function NavigatorMask(rangeMask) {\n        this.rm = rangeMask;\n    }\n    Object.defineProperty(NavigatorMask.prototype, \"fill\", {\n        get: function () {\n            return this.rm.fill;\n        },\n        set: function (value) {\n            this.rm.fill = value;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(NavigatorMask.prototype, \"stroke\", {\n        get: function () {\n            return this.rm.stroke;\n        },\n        set: function (value) {\n            this.rm.stroke = value;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(NavigatorMask.prototype, \"strokeWidth\", {\n        get: function () {\n            return this.rm.strokeWidth;\n        },\n        set: function (value) {\n            this.rm.strokeWidth = value;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(NavigatorMask.prototype, \"fillOpacity\", {\n        get: function () {\n            return this.rm.fillOpacity;\n        },\n        set: function (value) {\n            this.rm.fillOpacity = value;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    return NavigatorMask;\n}());\n\nvar NavigatorHandle = /** @class */ (function () {\n    function NavigatorHandle(rangeHandle) {\n        this.rh = rangeHandle;\n    }\n    Object.defineProperty(NavigatorHandle.prototype, \"fill\", {\n        get: function () {\n            return this.rh.fill;\n        },\n        set: function (value) {\n            this.rh.fill = value;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(NavigatorHandle.prototype, \"stroke\", {\n        get: function () {\n            return this.rh.stroke;\n        },\n        set: function (value) {\n            this.rh.stroke = value;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(NavigatorHandle.prototype, \"strokeWidth\", {\n        get: function () {\n            return this.rh.strokeWidth;\n        },\n        set: function (value) {\n            this.rh.strokeWidth = value;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(NavigatorHandle.prototype, \"width\", {\n        get: function () {\n            return this.rh.width;\n        },\n        set: function (value) {\n            this.rh.width = value;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(NavigatorHandle.prototype, \"height\", {\n        get: function () {\n            return this.rh.height;\n        },\n        set: function (value) {\n            this.rh.height = value;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(NavigatorHandle.prototype, \"gripLineGap\", {\n        get: function () {\n            return this.rh.gripLineGap;\n        },\n        set: function (value) {\n            this.rh.gripLineGap = value;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(NavigatorHandle.prototype, \"gripLineLength\", {\n        get: function () {\n            return this.rh.gripLineLength;\n        },\n        set: function (value) {\n            this.rh.gripLineLength = value;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    return NavigatorHandle;\n}());\n\nvar __extends$1S = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$1g = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar Navigator = /** @class */ (function (_super) {\n    __extends$1S(Navigator, _super);\n    function Navigator(ctx) {\n        var _this = _super.call(this) || this;\n        _this.ctx = ctx;\n        _this.rs = new RangeSelector();\n        // Wrappers to allow option application to the scene graph nodes.\n        _this.mask = new NavigatorMask(_this.rs.mask);\n        _this.minHandle = new NavigatorHandle(_this.rs.minHandle);\n        _this.maxHandle = new NavigatorHandle(_this.rs.maxHandle);\n        _this.minHandleDragging = false;\n        _this.maxHandleDragging = false;\n        _this.panHandleOffset = NaN;\n        _this._enabled = false;\n        _this.margin = 10;\n        _this._visible = true;\n        _this.rs.onRangeChange = function () {\n            return _this.ctx.zoomManager.updateZoom('navigator', { x: { min: _this.rs.min, max: _this.rs.max } });\n        };\n        [\n            ctx.interactionManager.addListener('drag-start', function (event) { return _this.onDragStart(event); }),\n            ctx.interactionManager.addListener('drag', function (event) { return _this.onDrag(event); }),\n            ctx.interactionManager.addListener('hover', function (event) { return _this.onDrag(event); }),\n            ctx.interactionManager.addListener('drag-end', function () { return _this.onDragStop(); }),\n        ].forEach(function (s) { return _this.destroyFns.push(function () { return ctx.interactionManager.removeListener(s); }); });\n        [\n            ctx.layoutService.addListener('before-series', function (event) { return _this.layout(event); }),\n            ctx.layoutService.addListener('layout-complete', function (event) { return _this.layoutComplete(event); }),\n        ].forEach(function (s) { return _this.destroyFns.push(function () { return ctx.layoutService.removeListener(s); }); });\n        ctx.scene.root.appendChild(_this.rs);\n        _this.destroyFns.push(function () { var _a; return (_a = ctx.scene.root) === null || _a === void 0 ? void 0 : _a.removeChild(_this.rs); });\n        _this.updateGroupVisibility();\n        return _this;\n    }\n    Object.defineProperty(Navigator.prototype, \"enabled\", {\n        get: function () {\n            return this._enabled;\n        },\n        set: function (value) {\n            this._enabled = value;\n            this.updateGroupVisibility();\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(Navigator.prototype, \"width\", {\n        get: function () {\n            return this.rs.width;\n        },\n        set: function (value) {\n            this.rs.width = value;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(Navigator.prototype, \"height\", {\n        get: function () {\n            return this.rs.height;\n        },\n        set: function (value) {\n            this.rs.height = value;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(Navigator.prototype, \"min\", {\n        get: function () {\n            return this.rs.min;\n        },\n        set: function (value) {\n            this.rs.min = value;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(Navigator.prototype, \"max\", {\n        get: function () {\n            return this.rs.max;\n        },\n        set: function (value) {\n            this.rs.max = value;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(Navigator.prototype, \"visible\", {\n        get: function () {\n            return this._visible;\n        },\n        set: function (value) {\n            this._visible = value;\n            this.updateGroupVisibility();\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Navigator.prototype.updateGroupVisibility = function () {\n        this.rs.visible = this.enabled && this.visible;\n    };\n    Navigator.prototype.layout = function (_a) {\n        var shrinkRect = _a.shrinkRect;\n        if (this.enabled) {\n            var navigatorTotalHeight = this.rs.height + this.margin;\n            shrinkRect.shrink(navigatorTotalHeight, 'bottom');\n            this.rs.y = shrinkRect.y + shrinkRect.height + this.margin;\n        }\n        return { shrinkRect: shrinkRect };\n    };\n    Navigator.prototype.layoutComplete = function (_a) {\n        var _b = _a.series, rect = _b.rect, visible = _b.visible;\n        if (this.enabled && visible) {\n            this.rs.x = rect.x;\n            this.rs.width = rect.width;\n        }\n        this.visible = visible;\n    };\n    Navigator.prototype.update = function () {\n        // Nothing to do!\n    };\n    Navigator.prototype.onDragStart = function (offset) {\n        if (!this.enabled) {\n            return;\n        }\n        var offsetX = offset.offsetX, offsetY = offset.offsetY;\n        var rs = this.rs;\n        var minHandle = rs.minHandle, maxHandle = rs.maxHandle, x = rs.x, width = rs.width, min = rs.min;\n        var visibleRange = rs.computeVisibleRangeBBox();\n        if (!(this.minHandleDragging || this.maxHandleDragging)) {\n            if (minHandle.containsPoint(offsetX, offsetY)) {\n                this.minHandleDragging = true;\n            }\n            else if (maxHandle.containsPoint(offsetX, offsetY)) {\n                this.maxHandleDragging = true;\n            }\n            else if (visibleRange.containsPoint(offsetX, offsetY)) {\n                this.panHandleOffset = (offsetX - x) / width - min;\n            }\n        }\n    };\n    Navigator.prototype.onDrag = function (offset) {\n        if (!this.enabled) {\n            return;\n        }\n        var _a = this, rs = _a.rs, panHandleOffset = _a.panHandleOffset;\n        var x = rs.x, y = rs.y, width = rs.width, height = rs.height, minHandle = rs.minHandle, maxHandle = rs.maxHandle;\n        var offsetX = offset.offsetX, offsetY = offset.offsetY;\n        var minX = x + width * rs.min;\n        var maxX = x + width * rs.max;\n        var visibleRange = new BBox(minX, y, maxX - minX, height);\n        var getRatio = function () { return Math.min(Math.max((offsetX - x) / width, 0), 1); };\n        if (minHandle.containsPoint(offsetX, offsetY) || maxHandle.containsPoint(offsetX, offsetY)) {\n            this.ctx.cursorManager.updateCursor('navigator', 'ew-resize');\n        }\n        else if (visibleRange.containsPoint(offsetX, offsetY)) {\n            this.ctx.cursorManager.updateCursor('navigator', 'grab');\n        }\n        else {\n            this.ctx.cursorManager.updateCursor('navigator');\n        }\n        if (this.minHandleDragging) {\n            rs.min = getRatio();\n        }\n        else if (this.maxHandleDragging) {\n            rs.max = getRatio();\n        }\n        else if (!isNaN(panHandleOffset)) {\n            var span = rs.max - rs.min;\n            var min = Math.min(getRatio() - panHandleOffset, 1 - span);\n            if (min <= rs.min) {\n                // pan left\n                rs.min = min;\n                rs.max = rs.min + span;\n            }\n            else {\n                // pan right\n                rs.max = min + span;\n                rs.min = rs.max - span;\n            }\n        }\n    };\n    Navigator.prototype.onDragStop = function () {\n        this.stopHandleDragging();\n    };\n    Navigator.prototype.stopHandleDragging = function () {\n        this.minHandleDragging = this.maxHandleDragging = false;\n        this.panHandleOffset = NaN;\n    };\n    __decorate$1g([\n        Validate(BOOLEAN)\n    ], Navigator.prototype, \"_enabled\", void 0);\n    __decorate$1g([\n        Validate(NUMBER(0))\n    ], Navigator.prototype, \"margin\", void 0);\n    return Navigator;\n}(BaseModuleInstance));\n\nvar CHART_NAVIGATOR_MODULE = {\n    type: 'root',\n    optionsKey: 'navigator',\n    packageType: 'community',\n    chartTypes: ['cartesian'],\n    initialiseModule: function (ctx) {\n        return {\n            instance: new Navigator(ctx),\n        };\n    },\n};\nregisterModule(CHART_NAVIGATOR_MODULE);\n\nvar __extends$1R = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$1f = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar Background = /** @class */ (function (_super) {\n    __extends$1R(Background, _super);\n    function Background(ctx) {\n        var _a;\n        var _this = _super.call(this) || this;\n        _this.onLayoutComplete = function (e) {\n            var _a = e.chart, width = _a.width, height = _a.height;\n            _this.rectNode.width = width;\n            _this.rectNode.height = height;\n        };\n        _this.node = new Group({ name: 'background' });\n        _this.node.zIndex = Layers.SERIES_BACKGROUND_ZINDEX;\n        _this.rectNode = new Rect();\n        _this.node.appendChild(_this.rectNode);\n        _this.fill = 'white';\n        _this.visible = true;\n        (_a = ctx.scene.root) === null || _a === void 0 ? void 0 : _a.appendChild(_this.node);\n        _this.destroyFns.push(function () { var _a; return (_a = ctx.scene.root) === null || _a === void 0 ? void 0 : _a.removeChild(_this.node); });\n        var layoutHandle = ctx.layoutService.addListener('layout-complete', _this.onLayoutComplete);\n        _this.destroyFns.push(function () { return ctx.layoutService.removeListener(layoutHandle); });\n        return _this;\n    }\n    Background.prototype.update = function () { };\n    __decorate$1f([\n        Validate(BOOLEAN),\n        ProxyPropertyOnWrite('node', 'visible')\n    ], Background.prototype, \"visible\", void 0);\n    __decorate$1f([\n        Validate(OPT_COLOR_STRING),\n        ProxyPropertyOnWrite('rectNode', 'fill')\n    ], Background.prototype, \"fill\", void 0);\n    return Background;\n}(BaseModuleInstance));\n\nvar CHART_BACKGROUND_MODULE = {\n    type: 'root',\n    optionsKey: 'background',\n    packageType: 'community',\n    chartTypes: ['cartesian', 'polar', 'hierarchy'],\n    initialiseModule: function (ctx) {\n        return {\n            instance: new Background(ctx),\n        };\n    },\n};\nregisterModule(CHART_BACKGROUND_MODULE);\n\nvar builtinSeriesTypes = {\n    area: AreaSeries,\n    bar: BarSeries,\n    column: BarSeries,\n    histogram: HistogramSeries,\n    line: LineSeries,\n    pie: PieSeries,\n    scatter: ScatterSeries,\n    treemap: TreemapSeries,\n};\nvar extraSeriesFactories = {};\nvar initialisedSeriesModules = new Map();\nfunction initialiseSeriesModules() {\n    REGISTERED_MODULES.filter(function (m) { return m.type === 'series'; })\n        .filter(function (m) { return !initialisedSeriesModules.has(m); })\n        .forEach(function (m) { return initialiseSeriesModule(m); });\n}\nvar seriesDefaults = {};\nfunction initialiseSeriesModule(mod) {\n    var seriesType = mod.optionsKey;\n    var instance = mod.initialiseModule({\n        seriesFactory: {\n            add: function (factory) {\n                extraSeriesFactories[seriesType] = factory;\n            },\n            delete: function () {\n                delete extraSeriesFactories[seriesType];\n            },\n        },\n        defaults: {\n            add: function (defaultOptions) {\n                seriesDefaults[seriesType] = defaultOptions;\n            },\n            delete: function () {\n                delete seriesDefaults[seriesType];\n            },\n        },\n        themes: {\n            chartTheme: {\n                add: function (fn) {\n                    ChartTheme.seriesThemeOverrides[seriesType] = fn;\n                },\n                delete: function () {\n                    delete ChartTheme.seriesThemeOverrides[seriesType];\n                },\n            },\n            darkTheme: {\n                add: function (fn) {\n                    DarkTheme.seriesDarkThemeOverrides[seriesType] = fn;\n                },\n                delete: function () {\n                    delete DarkTheme.seriesDarkThemeOverrides[seriesType];\n                },\n            },\n        },\n    });\n    initialisedSeriesModules.set(mod, instance);\n    var chartType = mod.chartTypes[0];\n    CHART_TYPES.add(seriesType, chartType);\n}\nfunction getSeries(chartType) {\n    if (Object.prototype.hasOwnProperty.call(extraSeriesFactories, chartType)) {\n        var factory = extraSeriesFactories[chartType];\n        return factory();\n    }\n    if (Object.prototype.hasOwnProperty.call(builtinSeriesTypes, chartType)) {\n        var SeriesConstructor = builtinSeriesTypes[chartType];\n        return new SeriesConstructor();\n    }\n    throw new Error(\"AG Charts - unknown series type: \" + chartType);\n}\n\nvar DEFAULT_CARTESIAN_CHART_OVERRIDES = {\n    axes: [\n        {\n            type: NumberAxis.type,\n            position: 'left',\n        },\n        {\n            type: CategoryAxis.type,\n            position: 'bottom',\n        },\n    ],\n};\nvar DEFAULT_BAR_CHART_OVERRIDES = {\n    axes: [\n        {\n            type: 'number',\n            position: 'bottom',\n        },\n        {\n            type: 'category',\n            position: 'left',\n        },\n    ],\n};\nvar DEFAULT_SCATTER_HISTOGRAM_CHART_OVERRIDES = {\n    axes: [\n        {\n            type: 'number',\n            position: 'bottom',\n        },\n        {\n            type: 'number',\n            position: 'left',\n        },\n    ],\n};\n\nvar __assign$q = (undefined && undefined.__assign) || function () {\n    __assign$q = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign$q.apply(this, arguments);\n};\nfunction transform(input, transforms) {\n    var result = {};\n    for (var p in input) {\n        var t = transforms[p] || (function (x) { return x; });\n        result[p] = t(input[p], input);\n    }\n    return result;\n}\nfunction is2dArray(input) {\n    return input != null && input instanceof Array && input[0] instanceof Array;\n}\nfunction yNamesMapping(p, src) {\n    if (p == null) {\n        return {};\n    }\n    if (!(p instanceof Array)) {\n        return p;\n    }\n    var yKeys = src.yKeys;\n    if (yKeys == null || is2dArray(yKeys)) {\n        throw new Error('AG Charts - yNames and yKeys mismatching configuration.');\n    }\n    var result = {};\n    yKeys.forEach(function (k, i) {\n        result[k] = p[i];\n    });\n    return result;\n}\nfunction yKeysMapping(p, src) {\n    if (p == null) {\n        return [[]];\n    }\n    if (is2dArray(p)) {\n        return p;\n    }\n    return src.grouped ? p.map(function (v) { return [v]; }) : [p];\n}\nfunction barSeriesTransform(options) {\n    var result = __assign$q({}, options);\n    delete result['yKey'];\n    delete result['yName'];\n    return transform(result, {\n        yNames: yNamesMapping,\n        yKeys: yKeysMapping,\n    });\n}\nfunction identityTransform(input) {\n    return input;\n}\nvar SERIES_TRANSFORMS = {\n    area: identityTransform,\n    bar: barSeriesTransform,\n    column: barSeriesTransform,\n    histogram: identityTransform,\n    line: identityTransform,\n    pie: identityTransform,\n    scatter: identityTransform,\n    treemap: identityTransform,\n};\nfunction applySeriesTransform(options) {\n    var type = options.type || 'line';\n    var transform = SERIES_TRANSFORMS[type];\n    return (transform !== null && transform !== void 0 ? transform : identityTransform)(options);\n}\n\nvar __extends$1Q = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar palette$7 = {\n    fills: [\n        '#f44336',\n        '#e91e63',\n        '#9c27b0',\n        '#673ab7',\n        '#3f51b5',\n        '#2196f3',\n        '#03a9f4',\n        '#00bcd4',\n        '#009688',\n        '#4caf50',\n        '#8bc34a',\n        '#cddc39',\n        '#ffeb3b',\n        '#ffc107',\n        '#ff9800',\n        '#ff5722',\n    ],\n    strokes: [\n        '#ab2f26',\n        '#a31545',\n        '#6d1b7b',\n        '#482980',\n        '#2c397f',\n        '#1769aa',\n        '#0276ab',\n        '#008494',\n        '#00695f',\n        '#357a38',\n        '#618834',\n        '#909a28',\n        '#b3a429',\n        '#b38705',\n        '#b36a00',\n        '#b33d18',\n    ],\n};\nvar MaterialLight = /** @class */ (function (_super) {\n    __extends$1Q(MaterialLight, _super);\n    function MaterialLight() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    MaterialLight.prototype.getPalette = function () {\n        return palette$7;\n    };\n    return MaterialLight;\n}(ChartTheme));\n\nvar __extends$1P = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar palette$6 = {\n    fills: [\n        '#f44336',\n        '#e91e63',\n        '#9c27b0',\n        '#673ab7',\n        '#3f51b5',\n        '#2196f3',\n        '#03a9f4',\n        '#00bcd4',\n        '#009688',\n        '#4caf50',\n        '#8bc34a',\n        '#cddc39',\n        '#ffeb3b',\n        '#ffc107',\n        '#ff9800',\n        '#ff5722',\n    ],\n    strokes: [\n        '#ab2f26',\n        '#a31545',\n        '#6d1b7b',\n        '#482980',\n        '#2c397f',\n        '#1769aa',\n        '#0276ab',\n        '#008494',\n        '#00695f',\n        '#357a38',\n        '#618834',\n        '#909a28',\n        '#b3a429',\n        '#b38705',\n        '#b36a00',\n        '#b33d18',\n    ],\n};\nvar MaterialDark = /** @class */ (function (_super) {\n    __extends$1P(MaterialDark, _super);\n    function MaterialDark() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    MaterialDark.prototype.getPalette = function () {\n        return palette$6;\n    };\n    return MaterialDark;\n}(DarkTheme));\n\nvar __extends$1O = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar palette$5 = {\n    fills: ['#c16068', '#a2bf8a', '#ebcc87', '#80a0c3', '#b58dae', '#85c0d1'],\n    strokes: ['#874349', '#718661', '#a48f5f', '#5a7088', '#7f637a', '#5d8692'],\n};\nvar PastelLight = /** @class */ (function (_super) {\n    __extends$1O(PastelLight, _super);\n    function PastelLight() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    PastelLight.prototype.getPalette = function () {\n        return palette$5;\n    };\n    return PastelLight;\n}(ChartTheme));\n\nvar __extends$1N = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar palette$4 = {\n    fills: ['#c16068', '#a2bf8a', '#ebcc87', '#80a0c3', '#b58dae', '#85c0d1'],\n    strokes: ['#874349', '#718661', '#a48f5f', '#5a7088', '#7f637a', '#5d8692'],\n};\nvar PastelDark = /** @class */ (function (_super) {\n    __extends$1N(PastelDark, _super);\n    function PastelDark() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    PastelDark.prototype.getPalette = function () {\n        return palette$4;\n    };\n    return PastelDark;\n}(DarkTheme));\n\nvar __extends$1M = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar palette$3 = {\n    fills: [\n        '#febe76',\n        '#ff7979',\n        '#badc58',\n        '#f9ca23',\n        '#f0932b',\n        '#eb4c4b',\n        '#6ab04c',\n        '#7ed6df',\n        '#e056fd',\n        '#686de0',\n    ],\n    strokes: [\n        '#b28553',\n        '#b35555',\n        '#829a3e',\n        '#ae8d19',\n        '#a8671e',\n        '#a43535',\n        '#4a7b35',\n        '#58969c',\n        '#9d3cb1',\n        '#494c9d',\n    ],\n};\nvar SolarLight = /** @class */ (function (_super) {\n    __extends$1M(SolarLight, _super);\n    function SolarLight() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    SolarLight.prototype.getPalette = function () {\n        return palette$3;\n    };\n    return SolarLight;\n}(ChartTheme));\n\nvar __extends$1L = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar palette$2 = {\n    fills: [\n        '#febe76',\n        '#ff7979',\n        '#badc58',\n        '#f9ca23',\n        '#f0932b',\n        '#eb4c4b',\n        '#6ab04c',\n        '#7ed6df',\n        '#e056fd',\n        '#686de0',\n    ],\n    strokes: [\n        '#b28553',\n        '#b35555',\n        '#829a3e',\n        '#ae8d19',\n        '#a8671e',\n        '#a43535',\n        '#4a7b35',\n        '#58969c',\n        '#9d3cb1',\n        '#494c9d',\n    ],\n};\nvar SolarDark = /** @class */ (function (_super) {\n    __extends$1L(SolarDark, _super);\n    function SolarDark() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    SolarDark.prototype.getPalette = function () {\n        return palette$2;\n    };\n    return SolarDark;\n}(DarkTheme));\n\nvar __extends$1K = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar palette$1 = {\n    fills: ['#5BC0EB', '#FDE74C', '#9BC53D', '#E55934', '#FA7921', '#fa3081'],\n    strokes: ['#4086a4', '#b1a235', '#6c8a2b', '#a03e24', '#af5517', '#af225a'],\n};\nvar VividLight = /** @class */ (function (_super) {\n    __extends$1K(VividLight, _super);\n    function VividLight() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    VividLight.prototype.getPalette = function () {\n        return palette$1;\n    };\n    return VividLight;\n}(ChartTheme));\n\nvar __extends$1J = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar palette = {\n    fills: ['#5BC0EB', '#FDE74C', '#9BC53D', '#E55934', '#FA7921', '#fa3081'],\n    strokes: ['#4086a4', '#b1a235', '#6c8a2b', '#a03e24', '#af5517', '#af225a'],\n};\nvar VividDark = /** @class */ (function (_super) {\n    __extends$1J(VividDark, _super);\n    function VividDark() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    VividDark.prototype.getPalette = function () {\n        return palette;\n    };\n    return VividDark;\n}(DarkTheme));\n\nvar __assign$p = (undefined && undefined.__assign) || function () {\n    __assign$p = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign$p.apply(this, arguments);\n};\nvar lightTheme = function () { return new ChartTheme(); };\nvar darkTheme = function () { return new DarkTheme(); };\nvar lightThemes = {\n    undefined: lightTheme,\n    null: lightTheme,\n    'ag-default': lightTheme,\n    'ag-material': function () { return new MaterialLight(); },\n    'ag-pastel': function () { return new PastelLight(); },\n    'ag-solar': function () { return new SolarLight(); },\n    'ag-vivid': function () { return new VividLight(); },\n};\nvar darkThemes = {\n    undefined: darkTheme,\n    null: darkTheme,\n    'ag-default-dark': darkTheme,\n    'ag-material-dark': function () { return new MaterialDark(); },\n    'ag-pastel-dark': function () { return new PastelDark(); },\n    'ag-solar-dark': function () { return new SolarDark(); },\n    'ag-vivid-dark': function () { return new VividDark(); },\n};\nvar themes$1 = __assign$p(__assign$p({}, darkThemes), lightThemes);\nfunction getChartTheme(value) {\n    var _a;\n    if (value instanceof ChartTheme) {\n        return value;\n    }\n    var stockTheme = themes$1[value];\n    if (stockTheme) {\n        return stockTheme();\n    }\n    value = value;\n    // Flatten recursive themes.\n    var overrides = [];\n    var palette;\n    while (typeof value === 'object') {\n        overrides.push((_a = value.overrides) !== null && _a !== void 0 ? _a : {});\n        // Use first palette found, they can't be merged.\n        if (value.palette && palette == null) {\n            palette = value.palette;\n        }\n        value = value.baseTheme;\n    }\n    overrides.reverse();\n    var flattenedTheme = __assign$p({ baseTheme: value, overrides: jsonMerge(overrides) }, (palette ? { palette: palette } : {}));\n    if (flattenedTheme.baseTheme || flattenedTheme.overrides) {\n        var baseTheme = getChartTheme(flattenedTheme.baseTheme);\n        return new baseTheme.constructor(flattenedTheme);\n    }\n    return lightTheme();\n}\n\nvar __assign$o = (undefined && undefined.__assign) || function () {\n    __assign$o = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign$o.apply(this, arguments);\n};\nvar __values$a = (undefined && undefined.__values) || function(o) {\n    var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n    if (m) return m.call(o);\n    if (o && typeof o.length === \"number\") return {\n        next: function () {\n            if (o && i >= o.length) o = void 0;\n            return { value: o && o[i++], done: !o };\n        }\n    };\n    throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nvar __read$q = (undefined && undefined.__read) || function (o, n) {\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n    if (!m) return o;\n    var i = m.call(o), r, ar = [], e;\n    try {\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n    }\n    catch (error) { e = { error: error }; }\n    finally {\n        try {\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\n        }\n        finally { if (e) throw e.error; }\n    }\n    return ar;\n};\nvar __spread$e = (undefined && undefined.__spread) || function () {\n    for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read$q(arguments[i]));\n    return ar;\n};\n/**\n * Groups the series options objects if they are of type `column` or `bar` and places them in an array at the index where the first instance of this series type was found.\n * Returns an array of arrays containing the ordered and grouped series options objects.\n */\nfunction groupSeriesByType(seriesOptions) {\n    var e_1, _a;\n    var indexMap = {};\n    var result = [];\n    try {\n        for (var seriesOptions_1 = __values$a(seriesOptions), seriesOptions_1_1 = seriesOptions_1.next(); !seriesOptions_1_1.done; seriesOptions_1_1 = seriesOptions_1.next()) {\n            var s = seriesOptions_1_1.value;\n            if (s.type !== 'column' && s.type !== 'bar' && (s.type !== 'area' || s.stacked !== true)) {\n                // No need to use index for these cases.\n                result.push([s]);\n                continue;\n            }\n            var seriesType = s.type || 'line';\n            var groupingKey = s.stacked ? 'stacked' : 'grouped';\n            var indexKey = seriesType + \"-\" + s.xKey + \"-\" + groupingKey;\n            if (indexMap[indexKey] == null) {\n                // Add indexed array to result on first addition.\n                indexMap[indexKey] = [];\n                result.push(indexMap[indexKey]);\n            }\n            indexMap[indexKey].push(s);\n        }\n    }\n    catch (e_1_1) { e_1 = { error: e_1_1 }; }\n    finally {\n        try {\n            if (seriesOptions_1_1 && !seriesOptions_1_1.done && (_a = seriesOptions_1.return)) _a.call(seriesOptions_1);\n        }\n        finally { if (e_1) throw e_1.error; }\n    }\n    return result;\n}\nvar FAIL = Symbol();\nvar SKIP = Symbol();\nvar ARRAY_REDUCER = function (prop) { return function (result, next) {\n    var _a;\n    return result.concat.apply(result, __spread$e(((_a = next[prop]) !== null && _a !== void 0 ? _a : [])));\n}; };\nvar BOOLEAN_OR_REDUCER = function (prop, defaultValue) { return function (result, next) {\n    if (typeof next[prop] === 'boolean') {\n        return (result !== null && result !== void 0 ? result : false) || next[prop];\n    }\n    return result !== null && result !== void 0 ? result : defaultValue;\n}; };\nvar DEFAULTING_ARRAY_REDUCER = function (prop, defaultValue) { return function (result, next, idx, length) {\n    var _a;\n    var sparse = defaultValue === SKIP || defaultValue === FAIL;\n    var nextValue = (_a = next[prop]) !== null && _a !== void 0 ? _a : defaultValue;\n    if (nextValue === FAIL) {\n        throw new Error(\"AG Charts - missing value for property [\" + prop + \"] on series config.\");\n    }\n    else if (nextValue === SKIP) {\n        return result;\n    }\n    if (result.length === 0 && !sparse) {\n        // Pre-populate values on first invocation as we will only be invoked for series with a\n        // value specified.\n        while (result.length < length) {\n            result = result.concat(defaultValue);\n        }\n    }\n    if (!sparse) {\n        result[idx] = nextValue;\n        return result;\n    }\n    return result.concat(nextValue);\n}; };\nvar YKEYS_REDUCER = function (prop, activationValue) { return function (result, next) {\n    if (next[prop] === activationValue) {\n        return result.concat.apply(result, __spread$e((next.yKey ? [next.yKey] : next.yKeys)));\n    }\n    return result;\n}; };\nvar STACK_GROUPS_REDUCER = function () { return function (result, next) {\n    var _a;\n    return __assign$o(__assign$o({}, result), (_a = {}, _a[next.stackGroup] = __spread$e((result[next.stackGroup] || []), [next.yKey]), _a));\n}; };\nvar REDUCE_CONFIG = {\n    hideInChart: { outputProp: 'hideInChart', reducer: ARRAY_REDUCER('hideInChart'), start: [] },\n    hideInLegend: { outputProp: 'hideInLegend', reducer: ARRAY_REDUCER('hideInLegend'), start: [] },\n    yKey: { outputProp: 'yKeys', reducer: DEFAULTING_ARRAY_REDUCER('yKey', SKIP), start: [] },\n    fill: { outputProp: 'fills', reducer: DEFAULTING_ARRAY_REDUCER('fill', SKIP), start: [] },\n    stroke: { outputProp: 'strokes', reducer: DEFAULTING_ARRAY_REDUCER('stroke', SKIP), start: [] },\n    yName: { outputProp: 'yNames', reducer: DEFAULTING_ARRAY_REDUCER('yName', SKIP), start: [] },\n    visible: { outputProp: 'visibles', reducer: DEFAULTING_ARRAY_REDUCER('visible', true), start: [] },\n    grouped: {\n        outputProp: 'grouped',\n        reducer: BOOLEAN_OR_REDUCER('grouped'),\n        seriesType: ['bar', 'column'],\n        start: undefined,\n    },\n    showInLegend: {\n        outputProp: 'hideInLegend',\n        reducer: YKEYS_REDUCER('showInLegend', false),\n        seriesType: ['bar', 'column'],\n        start: [],\n    },\n    stackGroup: {\n        outputProp: 'stackGroups',\n        reducer: STACK_GROUPS_REDUCER(),\n        seriesType: ['bar', 'column'],\n        start: {},\n    },\n};\n/**\n * Takes an array of bar or area series options objects and returns a single object with the combined area series options.\n */\nfunction reduceSeries(series) {\n    var options = {};\n    series.forEach(function (s, idx) {\n        Object.keys(s).forEach(function (prop) {\n            var _a;\n            var reducerConfig = REDUCE_CONFIG[prop];\n            var defaultReduce = function () {\n                var _a, _b;\n                options[prop] = (_b = (_a = s[prop]) !== null && _a !== void 0 ? _a : options[prop]) !== null && _b !== void 0 ? _b : undefined;\n            };\n            if (!reducerConfig) {\n                defaultReduce();\n                return;\n            }\n            var outputProp = reducerConfig.outputProp, reducer = reducerConfig.reducer, _b = reducerConfig.start, start = _b === void 0 ? undefined : _b, _c = reducerConfig.seriesType, seriesType = _c === void 0 ? [s.type] : _c;\n            if (!seriesType.includes(s.type)) {\n                defaultReduce();\n                return;\n            }\n            var result = reducer((_a = options[outputProp]) !== null && _a !== void 0 ? _a : start, s, idx, series.length);\n            if (result !== undefined) {\n                options[outputProp] = result;\n            }\n        });\n    });\n    return options;\n}\n/**\n * Transforms provided series options array into an array containing series options which are compatible with standalone charts series options.\n */\nfunction processSeriesOptions(seriesOptions) {\n    var e_2, _a;\n    var result = [];\n    var preprocessed = seriesOptions.map(function (series) {\n        // Change the default for bar/columns when yKey is used to be grouped rather than stacked.\n        if ((series.type === 'bar' || series.type === 'column') && series.yKey != null && !series.stacked) {\n            return __assign$o(__assign$o({}, series), { grouped: series.grouped != null ? series.grouped : true });\n        }\n        return series;\n    });\n    try {\n        for (var _b = __values$a(groupSeriesByType(preprocessed)), _c = _b.next(); !_c.done; _c = _b.next()) {\n            var series = _c.value;\n            switch (series[0].type) {\n                case 'column':\n                case 'bar':\n                case 'area':\n                    result.push(reduceSeries(series));\n                    break;\n                case 'line':\n                default:\n                    if (series.length > 1) {\n                        Logger.warn('unexpected grouping of series type: ' + series[0].type);\n                    }\n                    result.push(series[0]);\n                    break;\n            }\n        }\n    }\n    catch (e_2_1) { e_2 = { error: e_2_1 }; }\n    finally {\n        try {\n            if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n        }\n        finally { if (e_2) throw e_2.error; }\n    }\n    return result;\n}\n\nvar types = {\n    number: 'number',\n    time: 'time',\n    log: 'log',\n    category: 'category',\n    groupedCategory: 'groupedCategory',\n};\nvar CHART_AXES_TYPES = {\n    has: function (axisType) {\n        return Object.prototype.hasOwnProperty.call(types, axisType);\n    },\n    get axesTypes() {\n        return Object.keys(types);\n    },\n};\n\nvar __assign$n = (undefined && undefined.__assign) || function () {\n    __assign$n = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign$n.apply(this, arguments);\n};\nvar __values$9 = (undefined && undefined.__values) || function(o) {\n    var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n    if (m) return m.call(o);\n    if (o && typeof o.length === \"number\") return {\n        next: function () {\n            if (o && i >= o.length) o = void 0;\n            return { value: o && o[i++], done: !o };\n        }\n    };\n    throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nvar __read$p = (undefined && undefined.__read) || function (o, n) {\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n    if (!m) return o;\n    var i = m.call(o), r, ar = [], e;\n    try {\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n    }\n    catch (error) { e = { error: error }; }\n    finally {\n        try {\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\n        }\n        finally { if (e) throw e.error; }\n    }\n    return ar;\n};\nvar __spread$d = (undefined && undefined.__spread) || function () {\n    for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read$p(arguments[i]));\n    return ar;\n};\nfunction optionsType(input) {\n    var _a, _b, _c, _d;\n    return (_d = (_a = input.type) !== null && _a !== void 0 ? _a : (_c = (_b = input.series) === null || _b === void 0 ? void 0 : _b[0]) === null || _c === void 0 ? void 0 : _c.type) !== null && _d !== void 0 ? _d : 'line';\n}\nfunction isAgCartesianChartOptions(input) {\n    var specifiedType = optionsType(input);\n    if (specifiedType == null) {\n        return true;\n    }\n    if (specifiedType === 'cartesian') {\n        Logger.warnOnce(\"type '\" + specifiedType + \"' is deprecated, use a series type instead\");\n        return true;\n    }\n    return CHART_TYPES.isCartesian(specifiedType);\n}\nfunction isAgHierarchyChartOptions(input) {\n    var specifiedType = optionsType(input);\n    if (specifiedType == null) {\n        return false;\n    }\n    if (specifiedType === 'hierarchy') {\n        Logger.warnOnce(\"type '\" + specifiedType + \"' is deprecated, use a series type instead\");\n        return true;\n    }\n    return CHART_TYPES.isHierarchy(specifiedType);\n}\nfunction isAgPolarChartOptions(input) {\n    var specifiedType = optionsType(input);\n    if (specifiedType == null) {\n        return false;\n    }\n    if (specifiedType === 'polar') {\n        Logger.warnOnce(\"type '\" + specifiedType + \"' is deprecated, use a series type instead\");\n        return true;\n    }\n    return CHART_TYPES.isPolar(specifiedType);\n}\nfunction isSeriesOptionType(input) {\n    if (input == null) {\n        return false;\n    }\n    return CHART_TYPES.has(input);\n}\nfunction isAxisOptionType(input) {\n    if (input == null) {\n        return false;\n    }\n    return CHART_AXES_TYPES.has(input);\n}\nfunction countArrayElements(input) {\n    var e_1, _a;\n    var count = 0;\n    try {\n        for (var input_1 = __values$9(input), input_1_1 = input_1.next(); !input_1_1.done; input_1_1 = input_1.next()) {\n            var next = input_1_1.value;\n            if (next instanceof Array) {\n                count += countArrayElements(next);\n            }\n            if (next != null) {\n                count++;\n            }\n        }\n    }\n    catch (e_1_1) { e_1 = { error: e_1_1 }; }\n    finally {\n        try {\n            if (input_1_1 && !input_1_1.done && (_a = input_1.return)) _a.call(input_1);\n        }\n        finally { if (e_1) throw e_1.error; }\n    }\n    return count;\n}\nfunction takeColours(context, colours, maxCount) {\n    var result = [];\n    for (var count = 0; count < maxCount; count++) {\n        result.push(colours[(count + context.colourIndex) % colours.length]);\n    }\n    return result;\n}\nvar noDataCloneMergeOptions = {\n    avoidDeepClone: ['data'],\n};\nfunction prepareOptions(newOptions, fallbackOptions, seriesDefaults) {\n    var e_2, _a, e_3, _b;\n    var _c, _d, _e, _f;\n    var options = jsonMerge([fallbackOptions, newOptions], noDataCloneMergeOptions);\n    sanityCheckOptions(options);\n    // Determine type and ensure it's explicit in the options config.\n    var userSuppliedOptionsType = options.type;\n    var type = optionsType(options);\n    var globalTooltipPositionOptions = ((_c = options.tooltip) === null || _c === void 0 ? void 0 : _c.position) || {};\n    var checkSeriesType = function (type) {\n        if (type != null && !(isSeriesOptionType(type) || (seriesDefaults === null || seriesDefaults === void 0 ? void 0 : seriesDefaults[type]))) {\n            throw new Error(\"AG Charts - unknown series type: \" + type + \"; expected one of: \" + CHART_TYPES.seriesTypes);\n        }\n    };\n    checkSeriesType(type);\n    try {\n        for (var _g = __values$9((_d = options.series) !== null && _d !== void 0 ? _d : []), _h = _g.next(); !_h.done; _h = _g.next()) {\n            var seriesType = _h.value.type;\n            if (seriesType == null)\n                continue;\n            checkSeriesType(seriesType);\n        }\n    }\n    catch (e_2_1) { e_2 = { error: e_2_1 }; }\n    finally {\n        try {\n            if (_h && !_h.done && (_a = _g.return)) _a.call(_g);\n        }\n        finally { if (e_2) throw e_2.error; }\n    }\n    options = __assign$n(__assign$n({}, options), { type: type });\n    var defaultSeriesType = 'line';\n    if (isAgCartesianChartOptions(options)) {\n        defaultSeriesType = 'line';\n    }\n    else if (isAgHierarchyChartOptions(options)) {\n        defaultSeriesType = 'treemap';\n    }\n    else if (isAgPolarChartOptions(options)) {\n        defaultSeriesType = 'pie';\n    }\n    var defaultOverrides = {};\n    if (seriesDefaults && Object.prototype.hasOwnProperty.call(seriesDefaults, type)) {\n        defaultOverrides = seriesDefaults[type];\n    }\n    else if (type === 'bar') {\n        defaultOverrides = DEFAULT_BAR_CHART_OVERRIDES;\n    }\n    else if (type === 'scatter' || type === 'histogram') {\n        defaultOverrides = DEFAULT_SCATTER_HISTOGRAM_CHART_OVERRIDES;\n    }\n    else if (isAgCartesianChartOptions(options)) {\n        defaultOverrides = DEFAULT_CARTESIAN_CHART_OVERRIDES;\n    }\n    var _j = prepareMainOptions(defaultOverrides, options), context = _j.context, mergedOptions = _j.mergedOptions, axesThemes = _j.axesThemes, seriesThemes = _j.seriesThemes;\n    // Special cases where we have arrays of elements which need their own defaults.\n    // Apply series themes before calling processSeriesOptions() as it reduces and renames some\n    // properties, and in that case then cannot correctly have themes applied.\n    mergedOptions.series = processSeriesOptions((mergedOptions.series || []).map(function (s) {\n        var type = defaultSeriesType;\n        if (s.type) {\n            type = s.type;\n        }\n        else if (isSeriesOptionType(userSuppliedOptionsType)) {\n            type = userSuppliedOptionsType;\n        }\n        var mergedSeries = mergeSeriesOptions(s, type, seriesThemes, globalTooltipPositionOptions);\n        if (type === 'pie') {\n            preparePieOptions(seriesThemes.pie, s, mergedSeries);\n        }\n        return mergedSeries;\n    })).map(function (s) { return prepareSeries(context, s); });\n    var checkAxisType = function (type) {\n        var isAxisType = isAxisOptionType(type);\n        if (!isAxisType) {\n            Logger.warnOnce(\"AG Charts - unknown axis type: \" + type + \"; expected one of: \" + CHART_AXES_TYPES.axesTypes + \", ignoring.\");\n        }\n        return isAxisType;\n    };\n    if (isAgCartesianChartOptions(mergedOptions)) {\n        var validAxesTypes = true;\n        try {\n            for (var _k = __values$9((_e = mergedOptions.axes) !== null && _e !== void 0 ? _e : []), _l = _k.next(); !_l.done; _l = _k.next()) {\n                var axisType = _l.value.type;\n                if (!checkAxisType(axisType)) {\n                    validAxesTypes = false;\n                }\n            }\n        }\n        catch (e_3_1) { e_3 = { error: e_3_1 }; }\n        finally {\n            try {\n                if (_l && !_l.done && (_b = _k.return)) _b.call(_k);\n            }\n            finally { if (e_3) throw e_3.error; }\n        }\n        if (!validAxesTypes) {\n            mergedOptions.axes = defaultOverrides.axes;\n        }\n        else {\n            mergedOptions.axes = (_f = mergedOptions.axes) === null || _f === void 0 ? void 0 : _f.map(function (axis) {\n                var axisType = axis.type;\n                var axesTheme = jsonMerge([\n                    axesThemes[axisType],\n                    axesThemes[axisType][axis.position || 'unknown'] || {},\n                ]);\n                return prepareAxis(axis, axesTheme);\n            });\n        }\n    }\n    prepareEnabledOptions(options, mergedOptions);\n    return mergedOptions;\n}\nfunction sanityCheckOptions(options) {\n    var deprecatedArrayProps = {\n        yKeys: 'yKey',\n        yNames: 'yName',\n    };\n    Object.entries(deprecatedArrayProps).forEach(function (_a) {\n        var _b;\n        var _c = __read$p(_a, 2), oldProp = _c[0], newProp = _c[1];\n        if ((_b = options.series) === null || _b === void 0 ? void 0 : _b.some(function (s) { return s[oldProp] != null; })) {\n            Logger.warnOnce(\"property [series.\" + oldProp + \"] is deprecated, please use [series.\" + newProp + \"] and multiple series instead.\");\n        }\n    });\n}\nfunction mergeSeriesOptions(series, type, seriesThemes, globalTooltipPositionOptions) {\n    var _a;\n    var mergedTooltipPosition = jsonMerge([__assign$n({}, globalTooltipPositionOptions), (_a = series.tooltip) === null || _a === void 0 ? void 0 : _a.position], noDataCloneMergeOptions);\n    var mergedSeries = jsonMerge([\n        seriesThemes[type] || {},\n        __assign$n(__assign$n({}, series), { type: type, tooltip: __assign$n(__assign$n({}, series.tooltip), { position: mergedTooltipPosition }) }),\n    ], noDataCloneMergeOptions);\n    return mergedSeries;\n}\nfunction prepareMainOptions(defaultOverrides, options) {\n    var _a = prepareTheme(options), theme = _a.theme, cleanedTheme = _a.cleanedTheme, axesThemes = _a.axesThemes, seriesThemes = _a.seriesThemes;\n    var context = { colourIndex: 0, palette: theme.palette };\n    var mergedOptions = jsonMerge([defaultOverrides, cleanedTheme, options], noDataCloneMergeOptions);\n    return { context: context, mergedOptions: mergedOptions, axesThemes: axesThemes, seriesThemes: seriesThemes };\n}\nfunction prepareTheme(options) {\n    var theme = getChartTheme(options.theme);\n    var themeConfig = theme.config[optionsType(options) || 'cartesian'];\n    var seriesThemes = Object.entries(theme.config).reduce(function (result, _a) {\n        var _b = __read$p(_a, 2), seriesType = _b[0], series = _b[1].series;\n        result[seriesType] = series === null || series === void 0 ? void 0 : series[seriesType];\n        return result;\n    }, {});\n    return {\n        theme: theme,\n        axesThemes: themeConfig['axes'] || {},\n        seriesThemes: seriesThemes,\n        cleanedTheme: jsonMerge([themeConfig, { axes: DELETE, series: DELETE }]),\n    };\n}\nfunction prepareSeries(context, input) {\n    var defaults = [];\n    for (var _i = 2; _i < arguments.length; _i++) {\n        defaults[_i - 2] = arguments[_i];\n    }\n    var paletteOptions = calculateSeriesPalette(context, input);\n    // Part of the options interface, but not directly consumed by the series implementations.\n    var removeOptions = { stacked: DELETE };\n    var mergedResult = jsonMerge(__spread$d(defaults, [paletteOptions, input, removeOptions]), noDataCloneMergeOptions);\n    return applySeriesTransform(mergedResult);\n}\nfunction calculateSeriesPalette(context, input) {\n    var paletteOptions = {};\n    var _a = context.palette, fills = _a.fills, strokes = _a.strokes;\n    var inputAny = input;\n    var colourCount = countArrayElements(inputAny['yKeys'] || []) || 1; // Defaults to 1 if no yKeys.\n    switch (input.type) {\n        case 'pie':\n            colourCount = Math.max(fills.length, strokes.length);\n        // eslint-disable-next-line no-fallthrough\n        case 'area':\n        case 'bar':\n        case 'column':\n            paletteOptions.fills = takeColours(context, fills, colourCount);\n            paletteOptions.strokes = takeColours(context, strokes, colourCount);\n            break;\n        case 'histogram':\n            paletteOptions.fill = takeColours(context, fills, 1)[0];\n            paletteOptions.stroke = takeColours(context, strokes, 1)[0];\n            break;\n        case 'scatter':\n            paletteOptions.marker = {\n                stroke: takeColours(context, strokes, 1)[0],\n                fill: takeColours(context, fills, 1)[0],\n            };\n            break;\n        case 'line':\n            paletteOptions.stroke = takeColours(context, fills, 1)[0];\n            paletteOptions.marker = {\n                stroke: takeColours(context, strokes, 1)[0],\n                fill: takeColours(context, fills, 1)[0],\n            };\n            break;\n    }\n    context.colourIndex += colourCount;\n    return paletteOptions;\n}\nfunction prepareAxis(axis, axisTheme) {\n    // Remove redundant theme overload keys.\n    var removeOptions = { top: DELETE, bottom: DELETE, left: DELETE, right: DELETE };\n    // Special cross lines case where we have an array of cross line elements which need their own defaults.\n    if (axis.crossLines) {\n        if (!Array.isArray(axis.crossLines)) {\n            Logger.warn('axis[].crossLines should be an array.');\n            axis.crossLines = [];\n        }\n        var crossLinesTheme_1 = axisTheme.crossLines;\n        axis.crossLines = axis.crossLines.map(function (crossLine) { return jsonMerge([crossLinesTheme_1, crossLine]); });\n    }\n    var cleanTheme = { crossLines: DELETE };\n    return jsonMerge([axisTheme, cleanTheme, axis, removeOptions], noDataCloneMergeOptions);\n}\nfunction prepareEnabledOptions(options, mergedOptions) {\n    // Set `enabled: true` for all option objects where the user has provided values.\n    jsonWalk(options, function (_, visitingUserOpts, visitingMergedOpts) {\n        if (!visitingMergedOpts)\n            return;\n        var _enabledFromTheme = visitingMergedOpts._enabledFromTheme;\n        if (_enabledFromTheme != null) {\n            // Do not apply special handling, base enablement on theme.\n            delete visitingMergedOpts._enabledFromTheme;\n        }\n        if (!('enabled' in visitingMergedOpts))\n            return;\n        if (_enabledFromTheme)\n            return;\n        if (visitingUserOpts.enabled == null) {\n            visitingMergedOpts.enabled = true;\n        }\n    }, { skip: ['data', 'theme'] }, mergedOptions);\n    // Cleanup any special properties.\n    jsonWalk(mergedOptions, function (_, visitingMergedOpts) {\n        if (visitingMergedOpts._enabledFromTheme != null) {\n            // Do not apply special handling, base enablement on theme.\n            delete visitingMergedOpts._enabledFromTheme;\n        }\n    }, { skip: ['data', 'theme'] });\n}\nfunction preparePieOptions(pieSeriesTheme, seriesOptions, mergedSeries) {\n    if (Array.isArray(seriesOptions.innerLabels)) {\n        mergedSeries.innerLabels = seriesOptions.innerLabels.map(function (ln) {\n            return jsonMerge([pieSeriesTheme.innerLabels, ln]);\n        });\n    }\n    else {\n        mergedSeries.innerLabels = DELETE;\n    }\n}\n\nvar horizontalCrosslineTranslationDirections = {\n    top: { xTranslationDirection: 0, yTranslationDirection: -1 },\n    bottom: { xTranslationDirection: 0, yTranslationDirection: 1 },\n    left: { xTranslationDirection: -1, yTranslationDirection: 0 },\n    right: { xTranslationDirection: 1, yTranslationDirection: 0 },\n    topLeft: { xTranslationDirection: 1, yTranslationDirection: -1 },\n    topRight: { xTranslationDirection: -1, yTranslationDirection: -1 },\n    bottomLeft: { xTranslationDirection: 1, yTranslationDirection: 1 },\n    bottomRight: { xTranslationDirection: -1, yTranslationDirection: 1 },\n    inside: { xTranslationDirection: 0, yTranslationDirection: 0 },\n    insideLeft: { xTranslationDirection: 1, yTranslationDirection: 0 },\n    insideRight: { xTranslationDirection: -1, yTranslationDirection: 0 },\n    insideTop: { xTranslationDirection: 0, yTranslationDirection: 1 },\n    insideBottom: { xTranslationDirection: 0, yTranslationDirection: -1 },\n    insideTopLeft: { xTranslationDirection: 1, yTranslationDirection: 1 },\n    insideBottomLeft: { xTranslationDirection: 1, yTranslationDirection: -1 },\n    insideTopRight: { xTranslationDirection: -1, yTranslationDirection: 1 },\n    insideBottomRight: { xTranslationDirection: -1, yTranslationDirection: -1 },\n};\nvar verticalCrossLineTranslationDirections = {\n    top: { xTranslationDirection: 1, yTranslationDirection: 0 },\n    bottom: { xTranslationDirection: -1, yTranslationDirection: 0 },\n    left: { xTranslationDirection: 0, yTranslationDirection: -1 },\n    right: { xTranslationDirection: 0, yTranslationDirection: 1 },\n    topLeft: { xTranslationDirection: -1, yTranslationDirection: -1 },\n    topRight: { xTranslationDirection: -1, yTranslationDirection: 1 },\n    bottomLeft: { xTranslationDirection: 1, yTranslationDirection: -1 },\n    bottomRight: { xTranslationDirection: 1, yTranslationDirection: 1 },\n    inside: { xTranslationDirection: 0, yTranslationDirection: 0 },\n    insideLeft: { xTranslationDirection: 0, yTranslationDirection: 1 },\n    insideRight: { xTranslationDirection: 0, yTranslationDirection: -1 },\n    insideTop: { xTranslationDirection: -1, yTranslationDirection: 0 },\n    insideBottom: { xTranslationDirection: 1, yTranslationDirection: 0 },\n    insideTopLeft: { xTranslationDirection: -1, yTranslationDirection: 1 },\n    insideBottomLeft: { xTranslationDirection: 1, yTranslationDirection: 1 },\n    insideTopRight: { xTranslationDirection: -1, yTranslationDirection: -1 },\n    insideBottomRight: { xTranslationDirection: 1, yTranslationDirection: -1 },\n};\nvar calculateLabelTranslation = function (_a) {\n    var _b;\n    var yDirection = _a.yDirection, _c = _a.padding, padding = _c === void 0 ? 0 : _c, position = _a.position, bbox = _a.bbox;\n    var crossLineTranslationDirections = yDirection\n        ? horizontalCrosslineTranslationDirections\n        : verticalCrossLineTranslationDirections;\n    var _d = (_b = crossLineTranslationDirections[position]) !== null && _b !== void 0 ? _b : crossLineTranslationDirections['top'], xTranslationDirection = _d.xTranslationDirection, yTranslationDirection = _d.yTranslationDirection;\n    var w = yDirection ? bbox.width : bbox.height;\n    var h = yDirection ? bbox.height : bbox.width;\n    var xTranslation = xTranslationDirection * (padding + w / 2);\n    var yTranslation = yTranslationDirection * (padding + h / 2);\n    return {\n        xTranslation: xTranslation,\n        yTranslation: yTranslation,\n    };\n};\nvar POSITION_TOP_COORDINATES = function (_a) {\n    var yDirection = _a.yDirection, xEnd = _a.xEnd, yStart = _a.yStart, yEnd = _a.yEnd;\n    if (yDirection) {\n        return { x: xEnd / 2, y: yStart };\n    }\n    else {\n        return { x: xEnd, y: !isNaN(yEnd) ? (yStart + yEnd) / 2 : yStart };\n    }\n};\nvar POSITION_LEFT_COORDINATES = function (_a) {\n    var yDirection = _a.yDirection, xStart = _a.xStart, xEnd = _a.xEnd, yStart = _a.yStart, yEnd = _a.yEnd;\n    if (yDirection) {\n        return { x: xStart, y: !isNaN(yEnd) ? (yStart + yEnd) / 2 : yStart };\n    }\n    else {\n        return { x: xEnd / 2, y: yStart };\n    }\n};\nvar POSITION_RIGHT_COORDINATES = function (_a) {\n    var yDirection = _a.yDirection, xEnd = _a.xEnd, yStart = _a.yStart, yEnd = _a.yEnd;\n    if (yDirection) {\n        return { x: xEnd, y: !isNaN(yEnd) ? (yStart + yEnd) / 2 : yStart };\n    }\n    else {\n        return { x: xEnd / 2, y: !isNaN(yEnd) ? yEnd : yStart };\n    }\n};\nvar POSITION_BOTTOM_COORDINATES = function (_a) {\n    var yDirection = _a.yDirection, xStart = _a.xStart, xEnd = _a.xEnd, yStart = _a.yStart, yEnd = _a.yEnd;\n    if (yDirection) {\n        return { x: xEnd / 2, y: !isNaN(yEnd) ? yEnd : yStart };\n    }\n    else {\n        return { x: xStart, y: !isNaN(yEnd) ? (yStart + yEnd) / 2 : yStart };\n    }\n};\nvar POSITION_INSIDE_COORDINATES = function (_a) {\n    var xEnd = _a.xEnd, yStart = _a.yStart, yEnd = _a.yEnd;\n    return { x: xEnd / 2, y: !isNaN(yEnd) ? (yStart + yEnd) / 2 : yStart };\n};\nvar POSITION_TOP_LEFT_COORDINATES = function (_a) {\n    var yDirection = _a.yDirection, xStart = _a.xStart, xEnd = _a.xEnd, yStart = _a.yStart;\n    if (yDirection) {\n        return { x: xStart / 2, y: yStart };\n    }\n    else {\n        return { x: xEnd, y: yStart };\n    }\n};\nvar POSITION_BOTTOM_LEFT_COORDINATES = function (_a) {\n    var yDirection = _a.yDirection, xStart = _a.xStart, yStart = _a.yStart, yEnd = _a.yEnd;\n    if (yDirection) {\n        return { x: xStart, y: !isNaN(yEnd) ? yEnd : yStart };\n    }\n    else {\n        return { x: xStart, y: yStart };\n    }\n};\nvar POSITION_TOP_RIGHT_COORDINATES = function (_a) {\n    var yDirection = _a.yDirection, xEnd = _a.xEnd, yStart = _a.yStart, yEnd = _a.yEnd;\n    if (yDirection) {\n        return { x: xEnd, y: yStart };\n    }\n    else {\n        return { x: xEnd, y: !isNaN(yEnd) ? yEnd : yStart };\n    }\n};\nvar POSITION_BOTTOM_RIGHT_COORDINATES = function (_a) {\n    var yDirection = _a.yDirection, xStart = _a.xStart, xEnd = _a.xEnd, yStart = _a.yStart, yEnd = _a.yEnd;\n    if (yDirection) {\n        return { x: xEnd, y: !isNaN(yEnd) ? yEnd : yStart };\n    }\n    else {\n        return { x: xStart, y: !isNaN(yEnd) ? yEnd : yStart };\n    }\n};\nvar labeldDirectionHandling = {\n    top: { c: POSITION_TOP_COORDINATES },\n    bottom: { c: POSITION_BOTTOM_COORDINATES },\n    left: { c: POSITION_LEFT_COORDINATES },\n    right: { c: POSITION_RIGHT_COORDINATES },\n    topLeft: { c: POSITION_TOP_LEFT_COORDINATES },\n    topRight: { c: POSITION_TOP_RIGHT_COORDINATES },\n    bottomLeft: { c: POSITION_BOTTOM_LEFT_COORDINATES },\n    bottomRight: { c: POSITION_BOTTOM_RIGHT_COORDINATES },\n    inside: { c: POSITION_INSIDE_COORDINATES },\n    insideLeft: { c: POSITION_LEFT_COORDINATES },\n    insideRight: { c: POSITION_RIGHT_COORDINATES },\n    insideTop: { c: POSITION_TOP_COORDINATES },\n    insideBottom: { c: POSITION_BOTTOM_COORDINATES },\n    insideTopLeft: { c: POSITION_TOP_LEFT_COORDINATES },\n    insideBottomLeft: { c: POSITION_BOTTOM_LEFT_COORDINATES },\n    insideTopRight: { c: POSITION_TOP_RIGHT_COORDINATES },\n    insideBottomRight: { c: POSITION_BOTTOM_RIGHT_COORDINATES },\n};\n\nvar __extends$1I = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __assign$m = (undefined && undefined.__assign) || function () {\n    __assign$m = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign$m.apply(this, arguments);\n};\nvar __decorate$1e = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar Range = /** @class */ (function (_super) {\n    __extends$1I(Range, _super);\n    function Range() {\n        var _this = _super.call(this) || this;\n        _this.x1 = 0;\n        _this.y1 = 0;\n        _this.x2 = 0;\n        _this.y2 = 0;\n        _this.startLine = false;\n        _this.endLine = false;\n        _this.isRange = false;\n        _this.restoreOwnStyles();\n        return _this;\n    }\n    Range.prototype.computeBBox = function () {\n        return new BBox(this.x1, this.y1, this.x2 - this.x1, this.y2 - this.y1);\n    };\n    Range.prototype.isPointInPath = function (_x, _y) {\n        return false;\n    };\n    Range.prototype.render = function (renderCtx) {\n        var _a;\n        var ctx = renderCtx.ctx, forceRender = renderCtx.forceRender, stats = renderCtx.stats;\n        if (this.dirty === RedrawType.NONE && !forceRender) {\n            if (stats)\n                stats.nodesSkipped += this.nodeCount.count;\n            return;\n        }\n        this.computeTransformMatrix();\n        this.matrix.toContext(ctx);\n        var _b = this, x1 = _b.x1, y1 = _b.y1, x2 = _b.x2, y2 = _b.y2;\n        x1 = this.align(x1);\n        y1 = this.align(y1);\n        x2 = this.align(x2);\n        y2 = this.align(y2);\n        var _c = this, fill = _c.fill, opacity = _c.opacity, isRange = _c.isRange;\n        var fillActive = !!(isRange && fill);\n        if (fillActive) {\n            var fillOpacity = this.fillOpacity;\n            ctx.fillStyle = fill;\n            ctx.globalAlpha = opacity * fillOpacity;\n            ctx.beginPath();\n            ctx.moveTo(x1, y1);\n            ctx.lineTo(x2, y1);\n            ctx.lineTo(x2, y2);\n            ctx.lineTo(x1, y2);\n            ctx.closePath();\n            ctx.fill();\n        }\n        var _d = this, stroke = _d.stroke, strokeWidth = _d.strokeWidth, startLine = _d.startLine, endLine = _d.endLine;\n        var strokeActive = !!((startLine || endLine) && stroke && strokeWidth);\n        if (strokeActive) {\n            var _e = this, strokeOpacity = _e.strokeOpacity, lineDash = _e.lineDash, lineDashOffset = _e.lineDashOffset, lineCap = _e.lineCap, lineJoin = _e.lineJoin;\n            ctx.strokeStyle = stroke;\n            ctx.globalAlpha = opacity * strokeOpacity;\n            ctx.lineWidth = strokeWidth;\n            if (lineDash) {\n                ctx.setLineDash(lineDash);\n            }\n            if (lineDashOffset) {\n                ctx.lineDashOffset = lineDashOffset;\n            }\n            if (lineCap) {\n                ctx.lineCap = lineCap;\n            }\n            if (lineJoin) {\n                ctx.lineJoin = lineJoin;\n            }\n            ctx.beginPath();\n            if (startLine) {\n                ctx.moveTo(x1, y1);\n                ctx.lineTo(x2, y1);\n            }\n            if (endLine) {\n                ctx.moveTo(x2, y2);\n                ctx.lineTo(x1, y2);\n            }\n            ctx.stroke();\n        }\n        (_a = this.fillShadow) === null || _a === void 0 ? void 0 : _a.markClean();\n        _super.prototype.render.call(this, renderCtx);\n    };\n    Range.className = 'Range';\n    Range.defaultStyles = __assign$m(__assign$m({}, Shape.defaultStyles), { strokeWidth: 1 });\n    __decorate$1e([\n        SceneChangeDetection({ redraw: RedrawType.MINOR })\n    ], Range.prototype, \"x1\", void 0);\n    __decorate$1e([\n        SceneChangeDetection({ redraw: RedrawType.MINOR })\n    ], Range.prototype, \"y1\", void 0);\n    __decorate$1e([\n        SceneChangeDetection({ redraw: RedrawType.MINOR })\n    ], Range.prototype, \"x2\", void 0);\n    __decorate$1e([\n        SceneChangeDetection({ redraw: RedrawType.MINOR })\n    ], Range.prototype, \"y2\", void 0);\n    __decorate$1e([\n        SceneChangeDetection({ redraw: RedrawType.MINOR })\n    ], Range.prototype, \"startLine\", void 0);\n    __decorate$1e([\n        SceneChangeDetection({ redraw: RedrawType.MINOR })\n    ], Range.prototype, \"endLine\", void 0);\n    __decorate$1e([\n        SceneChangeDetection({ redraw: RedrawType.MINOR })\n    ], Range.prototype, \"isRange\", void 0);\n    return Range;\n}(Shape));\n\nvar __decorate$1d = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __read$o = (undefined && undefined.__read) || function (o, n) {\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n    if (!m) return o;\n    var i = m.call(o), r, ar = [], e;\n    try {\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n    }\n    catch (error) { e = { error: error }; }\n    finally {\n        try {\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\n        }\n        finally { if (e) throw e.error; }\n    }\n    return ar;\n};\nvar __spread$c = (undefined && undefined.__spread) || function () {\n    for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read$o(arguments[i]));\n    return ar;\n};\nvar CROSSLINE_LABEL_POSITIONS = [\n    'top',\n    'left',\n    'right',\n    'bottom',\n    'topLeft',\n    'topRight',\n    'bottomLeft',\n    'bottomRight',\n    'inside',\n    'insideLeft',\n    'insideRight',\n    'insideTop',\n    'insideBottom',\n    'insideTopLeft',\n    'insideBottomLeft',\n    'insideTopRight',\n    'insideBottomRight',\n];\nvar OPT_CROSSLINE_LABEL_POSITION = predicateWithMessage(function (v, ctx) { return OPTIONAL(v, ctx, function (v) { return CROSSLINE_LABEL_POSITIONS.includes(v); }); }, \"expecting an optional crossLine label position keyword such as 'topLeft', 'topRight' or 'inside'\");\nvar OPT_CROSSLINE_TYPE = predicateWithMessage(function (v, ctx) { return OPTIONAL(v, ctx, function (v) { return v === 'range' || v === 'line'; }); }, \"expecting a crossLine type keyword such as 'range' or 'line'\");\nvar CrossLineLabel = /** @class */ (function () {\n    function CrossLineLabel() {\n        this.enabled = undefined;\n        this.text = undefined;\n        this.fontStyle = undefined;\n        this.fontWeight = undefined;\n        this.fontSize = 14;\n        this.fontFamily = 'Verdana, sans-serif';\n        /**\n         * The padding between the label and the line.\n         */\n        this.padding = 5;\n        /**\n         * The color of the labels.\n         */\n        this.color = 'rgba(87, 87, 87, 1)';\n        this.position = undefined;\n        this.rotation = undefined;\n        this.parallel = undefined;\n    }\n    __decorate$1d([\n        Validate(OPT_BOOLEAN)\n    ], CrossLineLabel.prototype, \"enabled\", void 0);\n    __decorate$1d([\n        Validate(OPT_STRING)\n    ], CrossLineLabel.prototype, \"text\", void 0);\n    __decorate$1d([\n        Validate(OPT_FONT_STYLE)\n    ], CrossLineLabel.prototype, \"fontStyle\", void 0);\n    __decorate$1d([\n        Validate(OPT_FONT_WEIGHT)\n    ], CrossLineLabel.prototype, \"fontWeight\", void 0);\n    __decorate$1d([\n        Validate(NUMBER(0))\n    ], CrossLineLabel.prototype, \"fontSize\", void 0);\n    __decorate$1d([\n        Validate(STRING)\n    ], CrossLineLabel.prototype, \"fontFamily\", void 0);\n    __decorate$1d([\n        Validate(NUMBER(0))\n    ], CrossLineLabel.prototype, \"padding\", void 0);\n    __decorate$1d([\n        Validate(OPT_COLOR_STRING)\n    ], CrossLineLabel.prototype, \"color\", void 0);\n    __decorate$1d([\n        Validate(OPT_CROSSLINE_LABEL_POSITION)\n    ], CrossLineLabel.prototype, \"position\", void 0);\n    __decorate$1d([\n        Validate(OPT_NUMBER(-360, 360))\n    ], CrossLineLabel.prototype, \"rotation\", void 0);\n    __decorate$1d([\n        Validate(OPT_BOOLEAN)\n    ], CrossLineLabel.prototype, \"parallel\", void 0);\n    return CrossLineLabel;\n}());\nvar CrossLine = /** @class */ (function () {\n    function CrossLine() {\n        this.id = createId$1(this);\n        this.enabled = undefined;\n        this.type = undefined;\n        this.range = undefined;\n        this.value = undefined;\n        this.fill = undefined;\n        this.fillOpacity = undefined;\n        this.stroke = undefined;\n        this.strokeWidth = undefined;\n        this.strokeOpacity = undefined;\n        this.lineDash = undefined;\n        this.label = new CrossLineLabel();\n        this.scale = undefined;\n        this.clippedRange = [-Infinity, Infinity];\n        this.gridLength = 0;\n        this.sideFlag = -1;\n        this.parallelFlipRotation = 0;\n        this.regularFlipRotation = 0;\n        this.direction = ChartAxisDirection.X;\n        this.group = new Group({ name: \"\" + this.id, layer: true, zIndex: CrossLine.LINE_LAYER_ZINDEX });\n        this.crossLineRange = new Range();\n        this.crossLineLabel = new Text();\n        this.labelPoint = undefined;\n        this.data = [];\n        this.startLine = false;\n        this.endLine = false;\n        this.isRange = false;\n        var _a = this, group = _a.group, crossLineRange = _a.crossLineRange, crossLineLabel = _a.crossLineLabel;\n        group.append([crossLineRange, crossLineLabel]);\n        crossLineRange.pointerEvents = PointerEvents.None;\n    }\n    CrossLine.prototype.update = function (visible) {\n        if (!this.enabled) {\n            return;\n        }\n        this.group.visible = visible;\n        if (!visible) {\n            return;\n        }\n        var dataCreated = this.createNodeData();\n        if (!dataCreated) {\n            this.group.visible = false;\n            return;\n        }\n        this.updateNodes();\n        this.group.zIndex = this.getZIndex(this.isRange);\n    };\n    CrossLine.prototype.updateNodes = function () {\n        this.updateRangeNode();\n        if (this.label.enabled) {\n            this.updateLabel();\n            this.positionLabel();\n        }\n    };\n    CrossLine.prototype.createNodeData = function () {\n        var _a, _b, _c;\n        var _d, _e;\n        var _f = this, scale = _f.scale, gridLength = _f.gridLength, sideFlag = _f.sideFlag, direction = _f.direction, _g = _f.label.position, position = _g === void 0 ? 'top' : _g, clippedRange = _f.clippedRange, _h = _f.strokeWidth, strokeWidth = _h === void 0 ? 0 : _h;\n        if (!scale) {\n            return false;\n        }\n        var bandwidth = (_d = scale.bandwidth) !== null && _d !== void 0 ? _d : 0;\n        var clippedRangeClamper = function (x) {\n            return Math.max(Math.min.apply(Math, __spread$c(clippedRange)), Math.min(Math.max.apply(Math, __spread$c(clippedRange)), x));\n        };\n        var _j = __read$o([0, sideFlag * gridLength], 2), xStart = _j[0], xEnd = _j[1];\n        var _k = __read$o(this.getRange(), 2), yStart = _k[0], yEnd = _k[1];\n        var _l = __read$o([\n            Number(scale.convert(yStart, { strict: false })),\n            scale.convert(yEnd, { strict: false }) + bandwidth,\n        ], 2), clampedYStart = _l[0], clampedYEnd = _l[1];\n        clampedYStart = clippedRangeClamper(clampedYStart);\n        clampedYEnd = clippedRangeClamper(clampedYEnd);\n        _a = __read$o([Number(scale.convert(yStart)), scale.convert(yEnd) + bandwidth], 2), yStart = _a[0], yEnd = _a[1];\n        var validRange = !isNaN(clampedYStart) &&\n            !isNaN(clampedYEnd) &&\n            (yStart === clampedYStart || yEnd === clampedYEnd || clampedYStart !== clampedYEnd) &&\n            Math.abs(clampedYEnd - clampedYStart) > 0;\n        if (validRange) {\n            var reverse = clampedYStart !== Math.min(clampedYStart, clampedYEnd);\n            if (reverse) {\n                _b = __read$o([\n                    Math.min(clampedYStart, clampedYEnd),\n                    Math.max(clampedYStart, clampedYEnd),\n                ], 2), clampedYStart = _b[0], clampedYEnd = _b[1];\n                _c = __read$o([yEnd, yStart], 2), yStart = _c[0], yEnd = _c[1];\n            }\n        }\n        this.isRange = validRange;\n        this.startLine = !isNaN(yStart) && strokeWidth > 0 && yStart === clampedYStart;\n        this.endLine = !isNaN(yEnd) && strokeWidth > 0 && yEnd === clampedYEnd;\n        if (!validRange && !this.startLine && !this.endLine) {\n            return false;\n        }\n        this.data = [clampedYStart, clampedYEnd];\n        if (this.label.enabled) {\n            var yDirection = direction === ChartAxisDirection.Y;\n            var _m = ((_e = labeldDirectionHandling[position]) !== null && _e !== void 0 ? _e : {}).c, c = _m === void 0 ? POSITION_TOP_COORDINATES : _m;\n            var _o = c({ yDirection: yDirection, xStart: xStart, xEnd: xEnd, yStart: clampedYStart, yEnd: clampedYEnd }), labelX = _o.x, labelY = _o.y;\n            this.labelPoint = {\n                x: labelX,\n                y: labelY,\n            };\n        }\n        return true;\n    };\n    CrossLine.prototype.updateRangeNode = function () {\n        var _a;\n        var _b = this, crossLineRange = _b.crossLineRange, sideFlag = _b.sideFlag, gridLength = _b.gridLength, data = _b.data, startLine = _b.startLine, endLine = _b.endLine, isRange = _b.isRange, fill = _b.fill, fillOpacity = _b.fillOpacity, stroke = _b.stroke, strokeWidth = _b.strokeWidth, lineDash = _b.lineDash;\n        crossLineRange.x1 = 0;\n        crossLineRange.x2 = sideFlag * gridLength;\n        crossLineRange.y1 = data[0];\n        crossLineRange.y2 = data[1];\n        crossLineRange.startLine = startLine;\n        crossLineRange.endLine = endLine;\n        crossLineRange.isRange = isRange;\n        crossLineRange.fill = fill;\n        crossLineRange.fillOpacity = fillOpacity !== null && fillOpacity !== void 0 ? fillOpacity : 1;\n        crossLineRange.stroke = stroke;\n        crossLineRange.strokeWidth = strokeWidth !== null && strokeWidth !== void 0 ? strokeWidth : 1;\n        crossLineRange.strokeOpacity = (_a = this.strokeOpacity) !== null && _a !== void 0 ? _a : 1;\n        crossLineRange.lineDash = lineDash;\n    };\n    CrossLine.prototype.updateLabel = function () {\n        var _a = this, crossLineLabel = _a.crossLineLabel, label = _a.label;\n        if (!label.text) {\n            return;\n        }\n        crossLineLabel.fontStyle = label.fontStyle;\n        crossLineLabel.fontWeight = label.fontWeight;\n        crossLineLabel.fontSize = label.fontSize;\n        crossLineLabel.fontFamily = label.fontFamily;\n        crossLineLabel.fill = label.color;\n        crossLineLabel.text = label.text;\n    };\n    CrossLine.prototype.positionLabel = function () {\n        var _a = this, crossLineLabel = _a.crossLineLabel, _b = _a.labelPoint, _c = _b === void 0 ? {} : _b, _d = _c.x, x = _d === void 0 ? undefined : _d, _e = _c.y, y = _e === void 0 ? undefined : _e, _f = _a.label, parallel = _f.parallel, rotation = _f.rotation, _g = _f.position, position = _g === void 0 ? 'top' : _g, _h = _f.padding, padding = _h === void 0 ? 0 : _h, direction = _a.direction, parallelFlipRotation = _a.parallelFlipRotation, regularFlipRotation = _a.regularFlipRotation;\n        if (x === undefined || y === undefined) {\n            return;\n        }\n        var _j = calculateLabelRotation({\n            rotation: rotation,\n            parallel: parallel,\n            regularFlipRotation: regularFlipRotation,\n            parallelFlipRotation: parallelFlipRotation,\n        }), autoRotation = _j.autoRotation, labelRotation = _j.labelRotation;\n        crossLineLabel.rotation = autoRotation + labelRotation;\n        crossLineLabel.textBaseline = 'middle';\n        crossLineLabel.textAlign = 'center';\n        var bbox = this.computeLabelBBox();\n        if (!bbox) {\n            return;\n        }\n        var yDirection = direction === ChartAxisDirection.Y;\n        var _k = calculateLabelTranslation({ yDirection: yDirection, padding: padding, position: position, bbox: bbox }), xTranslation = _k.xTranslation, yTranslation = _k.yTranslation;\n        crossLineLabel.translationX = x + xTranslation;\n        crossLineLabel.translationY = y + yTranslation;\n    };\n    CrossLine.prototype.getZIndex = function (isRange) {\n        if (isRange === void 0) { isRange = false; }\n        if (isRange) {\n            return CrossLine.RANGE_LAYER_ZINDEX;\n        }\n        return CrossLine.LINE_LAYER_ZINDEX;\n    };\n    CrossLine.prototype.getRange = function () {\n        var _a;\n        var _b = this, value = _b.value, range = _b.range, scale = _b.scale;\n        var isContinuous = scale instanceof ContinuousScale;\n        var _c = __read$o(range !== null && range !== void 0 ? range : [value, undefined], 2), start = _c[0], end = _c[1];\n        if (!isContinuous && end === undefined) {\n            end = start;\n        }\n        _a = __read$o([checkDatum(start, isContinuous), checkDatum(end, isContinuous)], 2), start = _a[0], end = _a[1];\n        if (isContinuous && start === end) {\n            end = undefined;\n        }\n        if (start === undefined && end !== undefined) {\n            start = end;\n            end = undefined;\n        }\n        return [start, end];\n    };\n    CrossLine.prototype.computeLabelBBox = function () {\n        return this.crossLineLabel.computeTransformedBBox();\n    };\n    CrossLine.prototype.calculatePadding = function (padding, seriesRect) {\n        var _a, _b, _c, _d, _e, _f;\n        var _g = this, isRange = _g.isRange, startLine = _g.startLine, endLine = _g.endLine;\n        if (!isRange && !startLine && !endLine) {\n            return;\n        }\n        var crossLineLabelBBox = this.computeLabelBBox();\n        var labelX = crossLineLabelBBox === null || crossLineLabelBBox === void 0 ? void 0 : crossLineLabelBBox.x;\n        var labelY = crossLineLabelBBox === null || crossLineLabelBBox === void 0 ? void 0 : crossLineLabelBBox.y;\n        if (labelX == undefined || labelY == undefined) {\n            return;\n        }\n        var labelWidth = (_a = crossLineLabelBBox === null || crossLineLabelBBox === void 0 ? void 0 : crossLineLabelBBox.width) !== null && _a !== void 0 ? _a : 0;\n        var labelHeight = (_b = crossLineLabelBBox === null || crossLineLabelBBox === void 0 ? void 0 : crossLineLabelBBox.height) !== null && _b !== void 0 ? _b : 0;\n        if (labelWidth > seriesRect.width || labelHeight > seriesRect.height) {\n            // If label is bigger than seriesRect, trying to pad is just going to cause\n            // layout instability.\n            return;\n        }\n        if (labelX + labelWidth >= seriesRect.x + seriesRect.width) {\n            var paddingRight = labelX + labelWidth - (seriesRect.x + seriesRect.width);\n            padding.right = ((_c = padding.right) !== null && _c !== void 0 ? _c : 0) >= paddingRight ? padding.right : paddingRight;\n        }\n        else if (labelX <= seriesRect.x) {\n            var paddingLeft = seriesRect.x - labelX;\n            padding.left = ((_d = padding.left) !== null && _d !== void 0 ? _d : 0) >= paddingLeft ? padding.left : paddingLeft;\n        }\n        if (labelY + labelHeight >= seriesRect.y + seriesRect.height) {\n            var paddingBottom = labelY + labelHeight - (seriesRect.y + seriesRect.height);\n            padding.bottom = ((_e = padding.bottom) !== null && _e !== void 0 ? _e : 0) >= paddingBottom ? padding.bottom : paddingBottom;\n        }\n        else if (labelY <= seriesRect.y) {\n            var paddingTop = seriesRect.y - labelY;\n            padding.top = ((_f = padding.top) !== null && _f !== void 0 ? _f : 0) >= paddingTop ? padding.top : paddingTop;\n        }\n    };\n    CrossLine.LINE_LAYER_ZINDEX = Layers.SERIES_CROSSLINE_LINE_ZINDEX;\n    CrossLine.RANGE_LAYER_ZINDEX = Layers.SERIES_CROSSLINE_RANGE_ZINDEX;\n    CrossLine.className = 'CrossLine';\n    __decorate$1d([\n        Validate(OPT_BOOLEAN)\n    ], CrossLine.prototype, \"enabled\", void 0);\n    __decorate$1d([\n        Validate(OPT_CROSSLINE_TYPE)\n    ], CrossLine.prototype, \"type\", void 0);\n    __decorate$1d([\n        Validate(OPT_ARRAY(2))\n    ], CrossLine.prototype, \"range\", void 0);\n    __decorate$1d([\n        Validate(OPT_COLOR_STRING)\n    ], CrossLine.prototype, \"fill\", void 0);\n    __decorate$1d([\n        Validate(OPT_NUMBER(0, 1))\n    ], CrossLine.prototype, \"fillOpacity\", void 0);\n    __decorate$1d([\n        Validate(OPT_COLOR_STRING)\n    ], CrossLine.prototype, \"stroke\", void 0);\n    __decorate$1d([\n        Validate(OPT_NUMBER())\n    ], CrossLine.prototype, \"strokeWidth\", void 0);\n    __decorate$1d([\n        Validate(OPT_NUMBER(0, 1))\n    ], CrossLine.prototype, \"strokeOpacity\", void 0);\n    __decorate$1d([\n        Validate(OPT_LINE_DASH)\n    ], CrossLine.prototype, \"lineDash\", void 0);\n    return CrossLine;\n}());\n\nvar __extends$1H = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$1c = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar Image = /** @class */ (function (_super) {\n    __extends$1H(Image, _super);\n    function Image(sourceImage) {\n        var _this = _super.call(this) || this;\n        _this.x = 0;\n        _this.y = 0;\n        _this.width = 0;\n        _this.height = 0;\n        _this.opacity = 1;\n        _this.sourceImage = sourceImage;\n        return _this;\n    }\n    Image.prototype.render = function (renderCtx) {\n        var ctx = renderCtx.ctx, forceRender = renderCtx.forceRender, stats = renderCtx.stats;\n        if (this.dirty === RedrawType.NONE && !forceRender) {\n            if (stats)\n                stats.nodesSkipped++;\n            return;\n        }\n        this.computeTransformMatrix();\n        this.matrix.toContext(ctx);\n        var image = this.sourceImage;\n        ctx.globalAlpha = this.opacity;\n        ctx.drawImage(image, 0, 0, image.width, image.height, this.x, this.y, this.width, this.height);\n        _super.prototype.render.call(this, renderCtx);\n    };\n    __decorate$1c([\n        SceneChangeDetection({ redraw: RedrawType.MAJOR })\n    ], Image.prototype, \"x\", void 0);\n    __decorate$1c([\n        SceneChangeDetection({ redraw: RedrawType.MAJOR })\n    ], Image.prototype, \"y\", void 0);\n    __decorate$1c([\n        SceneChangeDetection({ redraw: RedrawType.MAJOR })\n    ], Image.prototype, \"width\", void 0);\n    __decorate$1c([\n        SceneChangeDetection({ redraw: RedrawType.MAJOR })\n    ], Image.prototype, \"height\", void 0);\n    __decorate$1c([\n        SceneChangeDetection({ redraw: RedrawType.MAJOR })\n    ], Image.prototype, \"opacity\", void 0);\n    return Image;\n}(Node));\n\nvar BackgroundImage = /** @class */ (function () {\n    function BackgroundImage() {\n        var _this = this;\n        this._image = document.createElement('img');\n        this.loadedSynchronously = true;\n        this.left = undefined;\n        this.top = undefined;\n        this.right = undefined;\n        this.bottom = undefined;\n        this.width = undefined;\n        this.height = undefined;\n        this.opacity = 1;\n        this.containerWidth = 0;\n        this.containerHeight = 0;\n        this.onload = undefined;\n        this.onImageLoad = function () {\n            if (_this.loadedSynchronously) {\n                return;\n            }\n            _this.node.visible = false; // Ensure marked dirty.\n            _this.performLayout(_this.containerWidth, _this.containerHeight);\n            if (_this.onload) {\n                _this.onload();\n            }\n        };\n        this.node = new Image(this._image);\n        this._image.onload = this.onImageLoad;\n    }\n    Object.defineProperty(BackgroundImage.prototype, \"url\", {\n        get: function () {\n            return this._image.src;\n        },\n        set: function (value) {\n            this._image.src = value;\n            this.loadedSynchronously = this.complete;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(BackgroundImage.prototype, \"complete\", {\n        get: function () {\n            // In tests image is nodejs-canvas Image, which doesn't report its status in the 'complete' method correctly.\n            return this._image.width > 0 && this._image.height > 0;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    BackgroundImage.prototype.performLayout = function (containerWidth, containerHeight) {\n        this.containerWidth = containerWidth;\n        this.containerHeight = containerHeight;\n        if (!this.complete) {\n            this.node.visible = false;\n            return;\n        }\n        var position = this.calculatePosition(this._image.width, this._image.height);\n        Object.assign(this.node, position);\n        this.node.visible = true;\n        this.node.opacity = this.opacity;\n    };\n    BackgroundImage.prototype.calculatePosition = function (naturalWidth, naturalHeight) {\n        var left = this.left;\n        var right = this.right;\n        var width = this.width;\n        var top = this.top;\n        var bottom = this.bottom;\n        var height = this.height;\n        if (left != null) {\n            if (right != null) {\n                width = this.containerWidth - left - right;\n            }\n            else if (width != null) {\n                right = this.containerWidth - left + width;\n            }\n        }\n        else if (right != null) {\n            if (width != null) {\n                left = this.containerWidth - right - width;\n            }\n        }\n        if (top != null) {\n            if (bottom != null) {\n                height = this.containerHeight - bottom - top;\n            }\n            else if (height != null) {\n                bottom = this.containerHeight - top - height;\n            }\n        }\n        else if (bottom != null) {\n            if (height != null) {\n                top = this.containerHeight - bottom - height;\n            }\n        }\n        // If width and height still undetermined, derive them from natural size.\n        if (width == null) {\n            if (height == null) {\n                width = naturalWidth;\n                height = naturalHeight;\n            }\n            else {\n                width = Math.ceil((naturalWidth * height) / naturalHeight);\n            }\n        }\n        else if (height == null) {\n            height = Math.ceil((naturalHeight * width) / naturalWidth);\n        }\n        if (left == null) {\n            if (right == null) {\n                left = Math.floor((this.containerWidth - width) / 2);\n            }\n            else {\n                left = this.containerWidth - right - width;\n            }\n        }\n        if (top == null) {\n            if (bottom == null) {\n                top = Math.floor((this.containerHeight - height) / 2);\n            }\n            else {\n                top = this.containerHeight - height - bottom;\n            }\n        }\n        return { x: left, y: top, width: width, height: height };\n    };\n    return BackgroundImage;\n}());\n\nvar __assign$l = (undefined && undefined.__assign) || function () {\n    __assign$l = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign$l.apply(this, arguments);\n};\nvar __awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {\n    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n    return new (P || (P = Promise))(function (resolve, reject) {\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\n    });\n};\nvar __generator = (undefined && undefined.__generator) || function (thisArg, body) {\n    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n    return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n    function verb(n) { return function (v) { return step([n, v]); }; }\n    function step(op) {\n        if (f) throw new TypeError(\"Generator is already executing.\");\n        while (_) try {\n            if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n            if (y = 0, t) op = [op[0] & 2, t.value];\n            switch (op[0]) {\n                case 0: case 1: t = op; break;\n                case 4: _.label++; return { value: op[1], done: false };\n                case 5: _.label++; y = op[1]; op = [0]; continue;\n                case 7: op = _.ops.pop(); _.trys.pop(); continue;\n                default:\n                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n                    if (t[2]) _.ops.pop();\n                    _.trys.pop(); continue;\n            }\n            op = body.call(thisArg, _);\n        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n    }\n};\nvar __read$n = (undefined && undefined.__read) || function (o, n) {\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n    if (!m) return o;\n    var i = m.call(o), r, ar = [], e;\n    try {\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n    }\n    catch (error) { e = { error: error }; }\n    finally {\n        try {\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\n        }\n        finally { if (e) throw e.error; }\n    }\n    return ar;\n};\nvar __spread$b = (undefined && undefined.__spread) || function () {\n    for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read$n(arguments[i]));\n    return ar;\n};\nvar __values$8 = (undefined && undefined.__values) || function(o) {\n    var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n    if (m) return m.call(o);\n    if (o && typeof o.length === \"number\") return {\n        next: function () {\n            if (o && i >= o.length) o = void 0;\n            return { value: o && o[i++], done: !o };\n        }\n    };\n    throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nfunction chartType(options) {\n    if (isAgCartesianChartOptions(options)) {\n        return 'cartesian';\n    }\n    else if (isAgPolarChartOptions(options)) {\n        return 'polar';\n    }\n    else if (isAgHierarchyChartOptions(options)) {\n        return 'hierarchy';\n    }\n    throw new Error(\"AG Chart - unknown type of chart for options with type: \" + options.type);\n}\n/**\n * Factory for creating and updating instances of AgChartInstance.\n *\n * @docsInterface\n */\nvar AgChart = /** @class */ (function () {\n    function AgChart() {\n    }\n    /**\n     * Create a new `AgChartInstance` based upon the given configuration options.\n     */\n    AgChart.create = function (options) {\n        return AgChartInternal.createOrUpdate(options);\n    };\n    /**\n     * Update an existing `AgChartInstance`. Options provided should be complete and not\n     * partial.\n     * <br/>\n     * <br/>\n     * **NOTE**: As each call could trigger a chart redraw, multiple calls to update options in\n     * quick succession could result in undesirable flickering, so callers should batch up and/or\n     * debounce changes to avoid unintended partial update renderings.\n     */\n    AgChart.update = function (chart, options) {\n        if (!AgChartInstanceProxy.isInstance(chart)) {\n            throw new Error('AG Charts - invalid chart reference passed');\n        }\n        AgChartInternal.createOrUpdate(options, chart);\n    };\n    /**\n     * Update an existing `AgChartInstance` by applying a partial set of option changes.\n     * <br/>\n     * <br/>\n     * **NOTE**: As each call could trigger a chart redraw, each individual delta options update\n     * should leave the chart in a valid options state. Also, multiple calls to update options in\n     * quick succession could result in undesirable flickering, so callers should batch up and/or\n     * debounce changes to avoid unintended partial update renderings.\n     */\n    AgChart.updateDelta = function (chart, deltaOptions) {\n        if (!AgChartInstanceProxy.isInstance(chart)) {\n            throw new Error('AG Charts - invalid chart reference passed');\n        }\n        return AgChartInternal.updateUserDelta(chart, deltaOptions);\n    };\n    /**\n     * Starts a browser-based image download for the given `AgChartInstance`.\n     */\n    AgChart.download = function (chart, options) {\n        if (!(chart instanceof AgChartInstanceProxy)) {\n            throw new Error('AG Charts - invalid chart reference passed');\n        }\n        return AgChartInternal.download(chart, options);\n    };\n    /**\n     * Returns a base64-encoded image data URL for the given `AgChartInstance`.\n     */\n    AgChart.getImageDataURL = function (chart, options) {\n        if (!(chart instanceof AgChartInstanceProxy)) {\n            throw new Error('AG Charts - invalid chart reference passed');\n        }\n        return AgChartInternal.getImageDataURL(chart, options);\n    };\n    return AgChart;\n}());\n/**\n * Proxy class, to allow library users to keep a stable reference to their chart, even if we need\n * to switch concrete class (e.g. when switching between CartesianChart vs. PolarChart).\n */\nvar AgChartInstanceProxy = /** @class */ (function () {\n    function AgChartInstanceProxy(chart) {\n        this.chart = chart;\n    }\n    AgChartInstanceProxy.isInstance = function (x) {\n        var _a, _b;\n        if (x instanceof AgChartInstanceProxy) {\n            // Simple case.\n            return true;\n        }\n        if (((_a = x.constructor) === null || _a === void 0 ? void 0 : _a.name) === 'AgChartInstanceProxy' && x.chart != null) {\n            // instanceof can fail if mixing bundles (e.g. grid all-modules vs. standalone).\n            return true;\n        }\n        var signatureProps = Object.keys((_b = x.constructor) === null || _b === void 0 ? void 0 : _b.prototype);\n        var heuristicTypeCheck = Object.keys(AgChartInstanceProxy.prototype).every(function (prop) {\n            return signatureProps.includes(prop);\n        });\n        if (heuristicTypeCheck && x.chart != null) {\n            // minimised code case - the constructor name is mangled but prototype names are not :P\n            return true;\n        }\n        return false;\n    };\n    AgChartInstanceProxy.prototype.getOptions = function () {\n        return this.chart.getOptions();\n    };\n    AgChartInstanceProxy.prototype.destroy = function () {\n        this.chart.destroy();\n    };\n    return AgChartInstanceProxy;\n}());\nvar AgChartInternal = /** @class */ (function () {\n    function AgChartInternal() {\n    }\n    AgChartInternal.createOrUpdate = function (userOptions, proxy) {\n        var _this = this;\n        debug('>>> createOrUpdate() user options', userOptions);\n        var mixinOpts = {};\n        if (AgChartInternal.DEBUG() === true) {\n            mixinOpts['debug'] = true;\n        }\n        var overrideDevicePixelRatio = userOptions.overrideDevicePixelRatio;\n        delete userOptions['overrideDevicePixelRatio'];\n        initialiseSeriesModules();\n        var processedOptions = prepareOptions(userOptions, mixinOpts, seriesDefaults);\n        var chart = proxy === null || proxy === void 0 ? void 0 : proxy.chart;\n        if (chart == null || chartType(userOptions) !== chartType(chart.processedOptions)) {\n            chart = AgChartInternal.createChartInstance(processedOptions, overrideDevicePixelRatio, chart);\n        }\n        if (proxy == null) {\n            proxy = new AgChartInstanceProxy(chart);\n        }\n        else {\n            proxy.chart = chart;\n        }\n        var chartToUpdate = chart;\n        chartToUpdate.queuedUserOptions.push(userOptions);\n        var dequeue = function () {\n            // If there are a lot of update calls, `requestFactoryUpdate()` may skip callbacks,\n            // so we need to remove all queue items up to the last successfully applied item.\n            var queuedOptionsIdx = chartToUpdate.queuedUserOptions.indexOf(userOptions);\n            chartToUpdate.queuedUserOptions.splice(0, queuedOptionsIdx);\n        };\n        chartToUpdate.requestFactoryUpdate(function () { return __awaiter(_this, void 0, void 0, function () {\n            var deltaOptions;\n            return __generator(this, function (_a) {\n                switch (_a.label) {\n                    case 0:\n                        // Chart destroyed, skip processing.\n                        if (chartToUpdate.destroyed)\n                            return [2 /*return*/];\n                        deltaOptions = jsonDiff(chartToUpdate.processedOptions, processedOptions);\n                        if (deltaOptions == null) {\n                            dequeue();\n                            return [2 /*return*/];\n                        }\n                        return [4 /*yield*/, AgChartInternal.updateDelta(chartToUpdate, deltaOptions, userOptions)];\n                    case 1:\n                        _a.sent();\n                        dequeue();\n                        return [2 /*return*/];\n                }\n            });\n        }); });\n        return proxy;\n    };\n    AgChartInternal.updateUserDelta = function (proxy, deltaOptions) {\n        var _a;\n        var chart = proxy.chart, queuedUserOptions = proxy.chart.queuedUserOptions;\n        var lastUpdateOptions = (_a = queuedUserOptions[queuedUserOptions.length - 1]) !== null && _a !== void 0 ? _a : chart.userOptions;\n        var userOptions = jsonMerge([lastUpdateOptions, deltaOptions]);\n        debug('>>> updateUserDelta() user delta', deltaOptions);\n        debug('base options', lastUpdateOptions);\n        AgChartInternal.createOrUpdate(userOptions, proxy);\n    };\n    /**\n     * Returns the content of the current canvas as an image.\n     * @param opts The download options including `width` and `height` of the image as well as `fileName` and `fileFormat`.\n     */\n    AgChartInternal.download = function (proxy, opts) {\n        var _this = this;\n        var asyncDownload = function () { return __awaiter(_this, void 0, void 0, function () {\n            var maybeClone, chart;\n            return __generator(this, function (_a) {\n                switch (_a.label) {\n                    case 0: return [4 /*yield*/, AgChartInternal.prepareResizedChart(proxy, opts)];\n                    case 1:\n                        maybeClone = _a.sent();\n                        chart = maybeClone.chart;\n                        chart.scene.download(opts === null || opts === void 0 ? void 0 : opts.fileName, opts === null || opts === void 0 ? void 0 : opts.fileFormat);\n                        if (maybeClone !== proxy) {\n                            maybeClone.destroy();\n                        }\n                        return [2 /*return*/];\n                }\n            });\n        }); };\n        asyncDownload();\n    };\n    AgChartInternal.getImageDataURL = function (proxy, opts) {\n        return __awaiter(this, void 0, void 0, function () {\n            var maybeClone, chart, result;\n            return __generator(this, function (_a) {\n                switch (_a.label) {\n                    case 0: return [4 /*yield*/, AgChartInternal.prepareResizedChart(proxy, opts)];\n                    case 1:\n                        maybeClone = _a.sent();\n                        chart = maybeClone.chart;\n                        result = chart.scene.canvas.getDataURL(opts === null || opts === void 0 ? void 0 : opts.fileFormat);\n                        if (maybeClone !== proxy) {\n                            maybeClone.destroy();\n                        }\n                        return [2 /*return*/, result];\n                }\n            });\n        });\n    };\n    AgChartInternal.prepareResizedChart = function (proxy, opts) {\n        return __awaiter(this, void 0, void 0, function () {\n            var chart, _a, width, height, currentWidth, currentHeight, unchanged, options, clonedChart;\n            return __generator(this, function (_b) {\n                switch (_b.label) {\n                    case 0:\n                        chart = proxy.chart;\n                        _a = opts || {}, width = _a.width, height = _a.height;\n                        currentWidth = chart.width;\n                        currentHeight = chart.height;\n                        unchanged = (width === undefined && height === undefined) ||\n                            (chart.scene.canvas.pixelRatio === 1 && currentWidth === width && currentHeight === height);\n                        if (unchanged) {\n                            return [2 /*return*/, proxy];\n                        }\n                        width = width !== null && width !== void 0 ? width : currentWidth;\n                        height = height !== null && height !== void 0 ? height : currentHeight;\n                        options = __assign$l(__assign$l({}, chart.userOptions), { container: document.createElement('div'), width: width,\n                            height: height, autoSize: false, overrideDevicePixelRatio: 1 });\n                        clonedChart = AgChartInternal.createOrUpdate(options);\n                        return [4 /*yield*/, clonedChart.chart.waitForUpdate()];\n                    case 1:\n                        _b.sent();\n                        return [2 /*return*/, clonedChart];\n                }\n            });\n        });\n    };\n    AgChartInternal.createChartInstance = function (options, overrideDevicePixelRatio, oldChart) {\n        var transferableResource = oldChart === null || oldChart === void 0 ? void 0 : oldChart.destroy({ keepTransferableResources: true });\n        if (isAgCartesianChartOptions(options)) {\n            return new CartesianChart(document, overrideDevicePixelRatio, transferableResource);\n        }\n        else if (isAgHierarchyChartOptions(options)) {\n            return new HierarchyChart(document, overrideDevicePixelRatio, transferableResource);\n        }\n        else if (isAgPolarChartOptions(options)) {\n            return new PolarChart(document, overrideDevicePixelRatio, transferableResource);\n        }\n        throw new Error(\"AG Charts - couldn't apply configuration, check type of options: \" + options['type']);\n    };\n    AgChartInternal.updateDelta = function (chart, processedOptions, userOptions) {\n        return __awaiter(this, void 0, void 0, function () {\n            return __generator(this, function (_a) {\n                switch (_a.label) {\n                    case 0:\n                        if (processedOptions.type == null) {\n                            processedOptions = __assign$l(__assign$l({}, processedOptions), { type: chart.processedOptions.type || optionsType(processedOptions) });\n                        }\n                        return [4 /*yield*/, chart.awaitUpdateCompletion()];\n                    case 1:\n                        _a.sent();\n                        if (chart.destroyed)\n                            return [2 /*return*/];\n                        debug('applying delta', processedOptions);\n                        applyChartOptions(chart, processedOptions, userOptions);\n                        return [2 /*return*/];\n                }\n            });\n        });\n    };\n    AgChartInternal.DEBUG = function () { var _a; return (_a = windowValue('agChartsDebug')) !== null && _a !== void 0 ? _a : false; };\n    return AgChartInternal;\n}());\nfunction debug(message) {\n    var optionalParams = [];\n    for (var _i = 1; _i < arguments.length; _i++) {\n        optionalParams[_i - 1] = arguments[_i];\n    }\n    if ([true, 'opts'].includes(AgChartInternal.DEBUG())) {\n        Logger.debug.apply(Logger, __spread$b([message], optionalParams));\n    }\n}\nfunction applyChartOptions(chart, processedOptions, userOptions) {\n    var _a, _b, _c, _d;\n    var completeOptions = jsonMerge([(_a = chart.processedOptions) !== null && _a !== void 0 ? _a : {}, processedOptions], noDataCloneMergeOptions);\n    var modulesChanged = applyModules(chart, completeOptions);\n    var skip = ['type', 'data', 'series', 'autoSize', 'listeners', 'theme', 'legend.listeners'];\n    if (isAgCartesianChartOptions(processedOptions)) {\n        // Append axes to defaults.\n        skip.push('axes');\n    }\n    else if (isAgPolarChartOptions(processedOptions) || isAgHierarchyChartOptions(processedOptions)) ;\n    else {\n        throw new Error(\"AG Charts - couldn't apply configuration, check type of options and chart: \" + processedOptions['type']);\n    }\n    // Needs to be done before applying the series to detect if a seriesNode[Double]Click listener has been added\n    if (processedOptions.listeners) {\n        registerListeners(chart, processedOptions.listeners);\n    }\n    applyOptionValues(chart, processedOptions, { skip: skip });\n    var forceNodeDataRefresh = false;\n    if (processedOptions.series && processedOptions.series.length > 0) {\n        applySeries(chart, processedOptions);\n        forceNodeDataRefresh = true;\n    }\n    if (isAgCartesianChartOptions(processedOptions) && processedOptions.axes) {\n        var axesPresent = applyAxes(chart, processedOptions);\n        if (axesPresent) {\n            forceNodeDataRefresh = true;\n        }\n    }\n    var seriesOpts = processedOptions.series;\n    var seriesDataUpdate = !!processedOptions.data || (seriesOpts === null || seriesOpts === void 0 ? void 0 : seriesOpts.some(function (s) { return s.data != null; }));\n    var otherRefreshUpdate = processedOptions.legend || processedOptions.title || processedOptions.subtitle;\n    forceNodeDataRefresh = forceNodeDataRefresh || seriesDataUpdate || !!otherRefreshUpdate;\n    if (processedOptions.data) {\n        chart.data = processedOptions.data;\n    }\n    // Needs to be done last to avoid overrides by width/height properties.\n    if (processedOptions.autoSize != null) {\n        chart.autoSize = processedOptions.autoSize;\n    }\n    if ((_b = processedOptions.legend) === null || _b === void 0 ? void 0 : _b.listeners) {\n        Object.assign(chart.legend.listeners, (_c = processedOptions.legend.listeners) !== null && _c !== void 0 ? _c : {});\n    }\n    if (processedOptions.listeners) {\n        chart.updateAllSeriesListeners();\n    }\n    chart.processedOptions = completeOptions;\n    chart.userOptions = jsonMerge([(_d = chart.userOptions) !== null && _d !== void 0 ? _d : {}, userOptions], noDataCloneMergeOptions);\n    var majorChange = forceNodeDataRefresh || modulesChanged;\n    var updateType = majorChange ? ChartUpdateType.PROCESS_DATA : ChartUpdateType.PERFORM_LAYOUT;\n    debug('chart update type', { updateType: ChartUpdateType[updateType] });\n    chart.update(updateType, { forceNodeDataRefresh: forceNodeDataRefresh });\n}\nfunction applyModules(chart, options) {\n    var e_1, _a;\n    var matchingChartType = function (module) {\n        return ((chart instanceof CartesianChart && module.chartTypes.includes('cartesian')) ||\n            (chart instanceof PolarChart && module.chartTypes.includes('polar')) ||\n            (chart instanceof HierarchyChart && module.chartTypes.includes('hierarchy')));\n    };\n    var modulesChanged = false;\n    var rootModules = REGISTERED_MODULES.filter(function (m) { return m.type === 'root'; });\n    try {\n        for (var rootModules_1 = __values$8(rootModules), rootModules_1_1 = rootModules_1.next(); !rootModules_1_1.done; rootModules_1_1 = rootModules_1.next()) {\n            var next = rootModules_1_1.value;\n            var shouldBeEnabled = matchingChartType(next) && options[next.optionsKey] != null;\n            var isEnabled = chart.isModuleEnabled(next);\n            if (shouldBeEnabled === isEnabled)\n                continue;\n            modulesChanged = true;\n            if (shouldBeEnabled) {\n                chart.addModule(next);\n            }\n            else {\n                chart.removeModule(next);\n            }\n        }\n    }\n    catch (e_1_1) { e_1 = { error: e_1_1 }; }\n    finally {\n        try {\n            if (rootModules_1_1 && !rootModules_1_1.done && (_a = rootModules_1.return)) _a.call(rootModules_1);\n        }\n        finally { if (e_1) throw e_1.error; }\n    }\n    return modulesChanged;\n}\nfunction applySeries(chart, options) {\n    var optSeries = options.series;\n    if (!optSeries) {\n        return;\n    }\n    var matchingTypes = chart.series.length === optSeries.length && chart.series.every(function (s, i) { var _a; return s.type === ((_a = optSeries[i]) === null || _a === void 0 ? void 0 : _a.type); });\n    // Try to optimise series updates if series count and types didn't change.\n    if (matchingTypes) {\n        chart.series.forEach(function (s, i) {\n            var _a, _b;\n            var previousOpts = ((_b = (_a = chart.processedOptions) === null || _a === void 0 ? void 0 : _a.series) === null || _b === void 0 ? void 0 : _b[i]) || {};\n            var seriesDiff = jsonDiff(previousOpts, optSeries[i] || {});\n            if (!seriesDiff) {\n                return;\n            }\n            debug(\"applying series diff idx \" + i, seriesDiff);\n            applySeriesValues(s, seriesDiff, { path: \"series[\" + i + \"]\", index: i });\n            s.markNodeDataDirty();\n        });\n        return;\n    }\n    chart.series = createSeries(optSeries);\n}\nfunction applyAxes(chart, options) {\n    var optAxes = options.axes;\n    if (!optAxes) {\n        return false;\n    }\n    var matchingTypes = chart.axes.length === optAxes.length && chart.axes.every(function (a, i) { return a.type === optAxes[i].type; });\n    // Try to optimise series updates if series count and types didn't change.\n    if (matchingTypes) {\n        var oldOpts_1 = chart.processedOptions;\n        if (isAgCartesianChartOptions(oldOpts_1)) {\n            chart.axes.forEach(function (a, i) {\n                var _a;\n                var previousOpts = ((_a = oldOpts_1.axes) === null || _a === void 0 ? void 0 : _a[i]) || {};\n                var axisDiff = jsonDiff(previousOpts, optAxes[i]);\n                debug(\"applying axis diff idx \" + i, axisDiff);\n                var path = \"axes[\" + i + \"]\";\n                var skip = ['axes[].type'];\n                applyOptionValues(a, axisDiff, { path: path, skip: skip });\n            });\n            return true;\n        }\n    }\n    chart.axes = createAxis(chart, optAxes);\n    return true;\n}\nfunction createSeries(options) {\n    var e_2, _a;\n    var series = [];\n    var index = 0;\n    try {\n        for (var _b = __values$8(options || []), _c = _b.next(); !_c.done; _c = _b.next()) {\n            var seriesOptions = _c.value;\n            var path = \"series[\" + index++ + \"]\";\n            var seriesInstance = getSeries(seriesOptions.type);\n            applySeriesValues(seriesInstance, seriesOptions, { path: path, index: index });\n            series.push(seriesInstance);\n        }\n    }\n    catch (e_2_1) { e_2 = { error: e_2_1 }; }\n    finally {\n        try {\n            if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n        }\n        finally { if (e_2) throw e_2.error; }\n    }\n    return series;\n}\nfunction createAxis(chart, options) {\n    var e_3, _a;\n    var axes = [];\n    var skip = ['axes[].type'];\n    var moduleContext = chart.getModuleContext();\n    var index = 0;\n    try {\n        for (var _b = __values$8(options || []), _c = _b.next(); !_c.done; _c = _b.next()) {\n            var axisOptions = _c.value;\n            var axis = void 0;\n            switch (axisOptions.type) {\n                case 'number':\n                    axis = new NumberAxis(moduleContext);\n                    break;\n                case LogAxis.type:\n                    axis = new LogAxis(moduleContext);\n                    break;\n                case CategoryAxis.type:\n                    axis = new CategoryAxis(moduleContext);\n                    break;\n                case GroupedCategoryAxis.type:\n                    axis = new GroupedCategoryAxis(moduleContext);\n                    break;\n                case TimeAxis.type:\n                    axis = new TimeAxis(moduleContext);\n                    break;\n                default:\n                    throw new Error('AG Charts - unknown axis type: ' + axisOptions['type']);\n            }\n            var path = \"axes[\" + index++ + \"]\";\n            applyAxisModules(axis, axisOptions);\n            applyOptionValues(axis, axisOptions, { path: path, skip: skip });\n            axes.push(axis);\n        }\n    }\n    catch (e_3_1) { e_3 = { error: e_3_1 }; }\n    finally {\n        try {\n            if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n        }\n        finally { if (e_3) throw e_3.error; }\n    }\n    return axes;\n}\nfunction applyAxisModules(axis, options) {\n    var e_4, _a;\n    var modulesChanged = false;\n    var rootModules = REGISTERED_MODULES.filter(function (m) { return m.type === 'axis'; });\n    try {\n        for (var rootModules_2 = __values$8(rootModules), rootModules_2_1 = rootModules_2.next(); !rootModules_2_1.done; rootModules_2_1 = rootModules_2.next()) {\n            var next = rootModules_2_1.value;\n            var shouldBeEnabled = options[next.optionsKey] != null;\n            var isEnabled = axis.isModuleEnabled(next);\n            if (shouldBeEnabled === isEnabled)\n                continue;\n            modulesChanged = true;\n            if (shouldBeEnabled) {\n                axis.addModule(next);\n            }\n            else {\n                axis.removeModule(next);\n            }\n        }\n    }\n    catch (e_4_1) { e_4 = { error: e_4_1 }; }\n    finally {\n        try {\n            if (rootModules_2_1 && !rootModules_2_1.done && (_a = rootModules_2.return)) _a.call(rootModules_2);\n        }\n        finally { if (e_4) throw e_4.error; }\n    }\n    return modulesChanged;\n}\nfunction registerListeners(source, listeners) {\n    source.clearEventListeners();\n    for (var property in listeners) {\n        var listener = listeners[property];\n        if (typeof listener !== 'function')\n            continue;\n        source.addEventListener(property, listener);\n    }\n}\nvar JSON_APPLY_OPTIONS = {\n    constructors: {\n        title: Caption,\n        subtitle: Caption,\n        footnote: Caption,\n        shadow: DropShadow,\n        innerCircle: DoughnutInnerCircle,\n        'axes[].crossLines[]': CrossLine,\n        'series[].innerLabels[]': DoughnutInnerLabel,\n        'background.image': BackgroundImage,\n    },\n    allowedTypes: {\n        'legend.pagination.marker.shape': ['primitive', 'function'],\n        'series[].marker.shape': ['primitive', 'function'],\n        'axis[].tick.count': ['primitive', 'class-instance'],\n    },\n};\nfunction applyOptionValues(target, options, _a) {\n    var _b = _a === void 0 ? {} : _a, skip = _b.skip, path = _b.path;\n    var applyOpts = __assign$l(__assign$l(__assign$l({}, JSON_APPLY_OPTIONS), { skip: skip }), (path ? { path: path } : {}));\n    return jsonApply(target, options, applyOpts);\n}\nfunction applySeriesValues(target, options, _a) {\n    var _b = _a === void 0 ? {} : _a, path = _b.path, index = _b.index;\n    var skip = ['series[].listeners'];\n    var ctrs = (JSON_APPLY_OPTIONS === null || JSON_APPLY_OPTIONS === void 0 ? void 0 : JSON_APPLY_OPTIONS.constructors) || {};\n    var seriesTypeOverrides = {\n        constructors: __assign$l(__assign$l({}, ctrs), { title: target.type === 'pie' ? PieTitle : ctrs['title'] }),\n    };\n    var applyOpts = __assign$l(__assign$l(__assign$l(__assign$l(__assign$l({}, JSON_APPLY_OPTIONS), seriesTypeOverrides), { skip: __spread$b(['series[].type'], (skip || [])) }), (path ? { path: path } : {})), { idx: index !== null && index !== void 0 ? index : -1 });\n    var result = jsonApply(target, options, applyOpts);\n    var listeners = options === null || options === void 0 ? void 0 : options.listeners;\n    if (listeners != null) {\n        registerListeners(target, listeners);\n    }\n    return result;\n}\n\n// DO NOT UPDATE MANUALLY: Generated from script during build time\nvar VERSION$b = '7.3.0';\n\nvar __read$m = (undefined && undefined.__read) || function (o, n) {\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n    if (!m) return o;\n    var i = m.call(o), r, ar = [], e;\n    try {\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n    }\n    catch (error) { e = { error: error }; }\n    finally {\n        try {\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\n        }\n        finally { if (e) throw e.error; }\n    }\n    return ar;\n};\nvar themes = Object.entries(themes$1).reduce(function (obj, _a) {\n    var _b = __read$m(_a, 2), name = _b[0], factory = _b[1];\n    obj[name] = factory();\n    return obj;\n}, {});\n\nvar __extends$1G = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$1b = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar ChartDatasource = /** @class */ (function (_super) {\n    __extends$1G(ChartDatasource, _super);\n    function ChartDatasource() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    ChartDatasource.prototype.getData = function (params) {\n        if (params.crossFiltering) {\n            if (params.grouping) {\n                console.warn(\"AG Grid: crossing filtering with row grouping is not supported.\");\n                return { chartData: [], columnNames: {} };\n            }\n            if (!this.gridOptionsService.isRowModelType('clientSide')) {\n                console.warn(\"AG Grid: crossing filtering is only supported in the client side row model.\");\n                return { chartData: [], columnNames: {} };\n            }\n        }\n        var isServerSide = this.gridOptionsService.isRowModelType('serverSide');\n        if (isServerSide && params.pivoting) {\n            this.updatePivotKeysForSSRM();\n        }\n        var result = this.extractRowsFromGridRowModel(params);\n        result.chartData = this.aggregateRowsByDimension(params, result.chartData);\n        return result;\n    };\n    ChartDatasource.prototype.extractRowsFromGridRowModel = function (params) {\n        var _this = this;\n        var extractedRowData = [];\n        var columnNames = {};\n        // maps used to keep track of expanded groups that need to be removed\n        var groupNodeIndexes = {};\n        var groupsToRemove = {};\n        // only used when cross filtering\n        var filteredNodes = {};\n        var allRowNodes = [];\n        var numRows;\n        if (params.crossFiltering) {\n            filteredNodes = this.getFilteredRowNodes();\n            allRowNodes = this.getAllRowNodes();\n            numRows = allRowNodes.length;\n        }\n        else {\n            // make sure enough rows in range to chart. if user filters and less rows, then end row will be\n            // the last displayed row, not where the range ends.\n            var modelLastRow = this.gridRowModel.getRowCount() - 1;\n            var rangeLastRow = params.endRow >= 0 ? Math.min(params.endRow, modelLastRow) : modelLastRow;\n            numRows = rangeLastRow - params.startRow + 1;\n        }\n        var _loop_1 = function (i) {\n            var data = {};\n            var rowNode = params.crossFiltering ? allRowNodes[i] : this_1.gridRowModel.getRow(i + params.startRow);\n            // first get data for dimensions columns\n            params.dimensionCols.forEach(function (col) {\n                var colId = col.colId;\n                var column = _this.columnModel.getGridColumn(colId);\n                if (column) {\n                    var valueObject = _this.valueService.getValue(column, rowNode);\n                    // when grouping we also need to build up multi category labels for charts\n                    if (params.grouping) {\n                        var valueString = valueObject && valueObject.toString ? String(valueObject.toString()) : '';\n                        // traverse parents to extract group label path\n                        var labels = ChartDatasource.getGroupLabels(rowNode, valueString);\n                        data[colId] = {\n                            labels: labels, toString: function () {\n                                return this.labels.filter(function (l) { return !!l; }).reverse().join(' - ');\n                            }\n                        };\n                        // keep track of group node indexes, so they can be padded when other groups are expanded\n                        if (rowNode.group) {\n                            groupNodeIndexes[labels.toString()] = i;\n                        }\n                        // if node (group or leaf) has parents then it is expanded and should be removed\n                        var groupKey = labels.slice(1, labels.length).toString();\n                        if (groupKey) {\n                            groupsToRemove[groupKey] = groupNodeIndexes[groupKey];\n                        }\n                    }\n                    else {\n                        // leaf nodes can be directly added to dimension columns\n                        data[colId] = valueObject;\n                    }\n                }\n                else {\n                    // introduce a default category when no dimensions exist with a value based off row index (+1)\n                    data[ChartDataModel.DEFAULT_CATEGORY] = i + 1;\n                }\n            });\n            // then get data for value columns\n            params.valueCols.forEach(function (col) {\n                var columnNamesArr = [];\n                // pivot keys should be added first\n                var pivotKeys = col.getColDef().pivotKeys;\n                if (pivotKeys) {\n                    columnNamesArr = pivotKeys.slice();\n                }\n                // then add column header name to results\n                var headerName = col.getColDef().headerName;\n                if (headerName) {\n                    columnNamesArr.push(headerName);\n                }\n                // add array of column names to results\n                if (columnNamesArr.length > 0) {\n                    columnNames[col.getId()] = columnNamesArr;\n                }\n                var colId = col.getColId();\n                if (params.crossFiltering) {\n                    var filteredOutColId = colId + '-filtered-out';\n                    // add data value to value column\n                    var value = _this.valueService.getValue(col, rowNode);\n                    var actualValue = value != null && typeof value.toNumber === 'function' ? value.toNumber() : value;\n                    if (filteredNodes[rowNode.id]) {\n                        data[colId] = actualValue;\n                        data[filteredOutColId] = params.aggFunc || params.isScatter ? undefined : 0;\n                    }\n                    else {\n                        data[colId] = params.aggFunc || params.isScatter ? undefined : 0;\n                        data[filteredOutColId] = actualValue;\n                    }\n                }\n                else {\n                    // add data value to value column\n                    var value = _this.valueService.getValue(col, rowNode);\n                    // aggregated value\n                    if (value && value.hasOwnProperty('toString')) {\n                        value = parseFloat(value.toString());\n                    }\n                    data[colId] = value != null && typeof value.toNumber === 'function' ? value.toNumber() : value;\n                }\n            });\n            // row data from footer nodes should not be included in charts\n            if (rowNode.footer) {\n                // 'stamping' data as footer to avoid impacting previously calculated `groupIndexesToRemove` and will\n                // be removed from the results along with any expanded group nodes\n                data.footer = true;\n            }\n            // add data to results\n            extractedRowData.push(data);\n        };\n        var this_1 = this;\n        for (var i = 0; i < numRows; i++) {\n            _loop_1(i);\n        }\n        if (params.grouping) {\n            var groupIndexesToRemove_1 = _.values(groupsToRemove);\n            var filterFunc = function (data, index) { return !data.footer && !_.includes(groupIndexesToRemove_1, index); };\n            extractedRowData = extractedRowData.filter(filterFunc);\n        }\n        return { chartData: extractedRowData, columnNames: columnNames };\n    };\n    ChartDatasource.prototype.aggregateRowsByDimension = function (params, dataFromGrid) {\n        var _this = this;\n        var dimensionCols = params.dimensionCols;\n        if (!params.aggFunc || dimensionCols.length === 0) {\n            return dataFromGrid;\n        }\n        var lastCol = _.last(dimensionCols);\n        var lastColId = lastCol && lastCol.colId;\n        var map = {};\n        var dataAggregated = [];\n        dataFromGrid.forEach(function (data) {\n            var currentMap = map;\n            dimensionCols.forEach(function (col) {\n                var colId = col.colId;\n                var key = data[colId];\n                if (colId === lastColId) {\n                    var groupItem_1 = currentMap[key];\n                    if (!groupItem_1) {\n                        groupItem_1 = { __children: [] };\n                        dimensionCols.forEach(function (dimCol) {\n                            var dimColId = dimCol.colId;\n                            groupItem_1[dimColId] = data[dimColId];\n                        });\n                        currentMap[key] = groupItem_1;\n                        dataAggregated.push(groupItem_1);\n                    }\n                    groupItem_1.__children.push(data);\n                }\n                else {\n                    // map of maps\n                    if (!currentMap[key]) {\n                        currentMap[key] = {};\n                    }\n                    currentMap = currentMap[key];\n                }\n            });\n        });\n        if (ModuleRegistry.assertRegistered(ModuleNames.RowGroupingModule, 'Charting Aggregation')) {\n            dataAggregated.forEach(function (groupItem) { return params.valueCols.forEach(function (col) {\n                if (params.crossFiltering) {\n                    params.valueCols.forEach(function (valueCol) {\n                        var colId = valueCol.getColId();\n                        // filtered data\n                        var dataToAgg = groupItem.__children\n                            .filter(function (child) { return typeof child[colId] !== 'undefined'; })\n                            .map(function (child) { return child[colId]; });\n                        var aggResult = _this.aggregationStage.aggregateValues(dataToAgg, params.aggFunc);\n                        groupItem[valueCol.getId()] = aggResult && typeof aggResult.value !== 'undefined' ? aggResult.value : aggResult;\n                        // filtered out data\n                        var filteredOutColId = colId + \"-filtered-out\";\n                        var dataToAggFiltered = groupItem.__children\n                            .filter(function (child) { return typeof child[filteredOutColId] !== 'undefined'; })\n                            .map(function (child) { return child[filteredOutColId]; });\n                        var aggResultFiltered = _this.aggregationStage.aggregateValues(dataToAggFiltered, params.aggFunc);\n                        groupItem[filteredOutColId] = aggResultFiltered && typeof aggResultFiltered.value !== 'undefined' ? aggResultFiltered.value : aggResultFiltered;\n                    });\n                }\n                else {\n                    var dataToAgg = groupItem.__children.map(function (child) { return child[col.getId()]; });\n                    var aggResult = 0;\n                    if (ModuleRegistry.assertRegistered(ModuleNames.RowGroupingModule, 'Charting Aggregation')) {\n                        aggResult = _this.aggregationStage.aggregateValues(dataToAgg, params.aggFunc);\n                    }\n                    groupItem[col.getId()] = aggResult && typeof aggResult.value !== 'undefined' ? aggResult.value : aggResult;\n                }\n            }); });\n        }\n        return dataAggregated;\n    };\n    ChartDatasource.prototype.updatePivotKeysForSSRM = function () {\n        var secondaryColumns = this.columnModel.getSecondaryColumns();\n        if (!secondaryColumns) {\n            return;\n        }\n        // we don't know what the application will use for the pivot key separator (i.e. '_' or '|' ) as the\n        // secondary columns are provided to grid by the application via columnApi.setSecondaryColumns()\n        var pivotKeySeparator = this.extractPivotKeySeparator(secondaryColumns);\n        // `pivotKeys` is not used by the SSRM for pivoting, so it is safe to reuse this colDef property. This way\n        // the same logic can be used for CSRM and SSRM to extract legend names in extractRowsFromGridRowModel()\n        secondaryColumns.forEach(function (col) {\n            if (pivotKeySeparator === '') {\n                col.getColDef().pivotKeys = [];\n            }\n            else {\n                var keys = col.getColId().split(pivotKeySeparator);\n                col.getColDef().pivotKeys = keys.slice(0, keys.length - 1);\n            }\n        });\n    };\n    ChartDatasource.prototype.extractPivotKeySeparator = function (secondaryColumns) {\n        if (secondaryColumns.length === 0) {\n            return '';\n        }\n        var extractSeparator = function (columnGroup, childId) {\n            var groupId = columnGroup.getGroupId();\n            if (!columnGroup.getParent()) {\n                // removing groupId ('2000') from childId ('2000|Swimming') yields '|Swimming' so first char is separator\n                return childId.split(groupId)[1][0];\n            }\n            return extractSeparator(columnGroup.getParent(), groupId);\n        };\n        var firstSecondaryCol = secondaryColumns[0];\n        if (firstSecondaryCol.getParent() == null) {\n            return '';\n        }\n        return extractSeparator(firstSecondaryCol.getParent(), firstSecondaryCol.getColId());\n    };\n    ChartDatasource.getGroupLabels = function (rowNode, initialLabel) {\n        var labels = [initialLabel];\n        while (rowNode && rowNode.level !== 0) {\n            rowNode = rowNode.parent;\n            if (rowNode) {\n                labels.push(rowNode.key);\n            }\n        }\n        return labels;\n    };\n    ChartDatasource.prototype.getFilteredRowNodes = function () {\n        var filteredNodes = {};\n        this.gridRowModel.forEachNodeAfterFilterAndSort(function (rowNode) {\n            filteredNodes[rowNode.id] = rowNode;\n        });\n        return filteredNodes;\n    };\n    ChartDatasource.prototype.getAllRowNodes = function () {\n        var allRowNodes = [];\n        this.gridRowModel.forEachNode(function (rowNode) {\n            allRowNodes.push(rowNode);\n        });\n        return this.sortRowNodes(allRowNodes);\n    };\n    ChartDatasource.prototype.sortRowNodes = function (rowNodes) {\n        var sortOptions = this.sortController.getSortOptions();\n        var noSort = !sortOptions || sortOptions.length == 0;\n        if (noSort)\n            return rowNodes;\n        return this.rowNodeSorter.doFullSort(rowNodes, sortOptions);\n    };\n    __decorate$1b([\n        Autowired('rowModel')\n    ], ChartDatasource.prototype, \"gridRowModel\", void 0);\n    __decorate$1b([\n        Autowired('valueService')\n    ], ChartDatasource.prototype, \"valueService\", void 0);\n    __decorate$1b([\n        Autowired('columnModel')\n    ], ChartDatasource.prototype, \"columnModel\", void 0);\n    __decorate$1b([\n        Autowired('rowNodeSorter')\n    ], ChartDatasource.prototype, \"rowNodeSorter\", void 0);\n    __decorate$1b([\n        Autowired('sortController')\n    ], ChartDatasource.prototype, \"sortController\", void 0);\n    __decorate$1b([\n        Optional('aggregationStage')\n    ], ChartDatasource.prototype, \"aggregationStage\", void 0);\n    return ChartDatasource;\n}(BeanStub));\n\nvar __extends$1F = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$1a = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __read$l = (undefined && undefined.__read) || function (o, n) {\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n    if (!m) return o;\n    var i = m.call(o), r, ar = [], e;\n    try {\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n    }\n    catch (error) { e = { error: error }; }\n    finally {\n        try {\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\n        }\n        finally { if (e) throw e.error; }\n    }\n    return ar;\n};\nvar __spread$a = (undefined && undefined.__spread) || function () {\n    for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read$l(arguments[i]));\n    return ar;\n};\nvar ChartDataModel = /** @class */ (function (_super) {\n    __extends$1F(ChartDataModel, _super);\n    function ChartDataModel(params) {\n        var _this = _super.call(this) || this;\n        _this.unlinked = false;\n        _this.chartData = [];\n        _this.valueColState = [];\n        _this.dimensionColState = [];\n        _this.columnNames = {};\n        _this.grouping = false;\n        _this.crossFiltering = false;\n        // this control flag is used to only log warning for the initial user config\n        _this.suppressComboChartWarnings = false;\n        _this.chartId = params.chartId;\n        _this.chartType = params.chartType;\n        _this.pivotChart = params.pivotChart;\n        _this.chartThemeName = params.chartThemeName;\n        _this.aggFunc = params.aggFunc;\n        _this.referenceCellRange = params.cellRange;\n        _this.suppliedCellRange = params.cellRange;\n        _this.suppressChartRanges = params.suppressChartRanges;\n        _this.unlinked = !!params.unlinkChart;\n        _this.crossFiltering = !!params.crossFiltering;\n        _this.seriesChartTypes = params.seriesChartTypes || [];\n        _this.initComboCharts(params);\n        return _this;\n    }\n    ChartDataModel.prototype.initComboCharts = function (params) {\n        var seriesChartTypesExist = this.seriesChartTypes && this.seriesChartTypes.length > 0;\n        var customCombo = params.chartType === 'customCombo' || seriesChartTypesExist;\n        if (customCombo) {\n            // it is not necessary to supply a chart type for combo charts when `seriesChartTypes` is supplied\n            this.chartType = 'customCombo';\n            // cache supplied `seriesChartTypes` to allow switching between different chart types in the settings panel\n            this.savedCustomSeriesChartTypes = this.seriesChartTypes || [];\n        }\n    };\n    ChartDataModel.prototype.init = function () {\n        this.datasource = this.createManagedBean(new ChartDatasource());\n        this.updateCellRanges();\n    };\n    ChartDataModel.prototype.updateCellRanges = function (updatedColState) {\n        if (this.valueCellRange) {\n            this.referenceCellRange = this.valueCellRange;\n        }\n        var _a = this.getAllChartColumns(), dimensionCols = _a.dimensionCols, valueCols = _a.valueCols;\n        var allColsFromRanges = this.getAllColumnsFromRanges();\n        if (updatedColState) {\n            this.updateColumnState(updatedColState);\n        }\n        this.setDimensionCellRange(dimensionCols, allColsFromRanges, updatedColState);\n        this.setValueCellRange(valueCols, allColsFromRanges, updatedColState);\n        if (!updatedColState) {\n            this.resetColumnState();\n            // dimension / category cell range could be out of sync after resetting column state when row grouping\n            this.syncDimensionCellRange();\n        }\n        this.updateSeriesChartTypes();\n        this.updateData();\n    };\n    ChartDataModel.prototype.updateSeriesChartTypes = function () {\n        if (!this.isComboChart()) {\n            return;\n        }\n        // ensure primary only chart types are not placed on secondary axis\n        this.seriesChartTypes = this.seriesChartTypes.map(function (seriesChartType) {\n            var primaryOnly = ['groupedColumn', 'stackedColumn', 'stackedArea'].includes(seriesChartType.chartType);\n            seriesChartType.secondaryAxis = primaryOnly ? false : seriesChartType.secondaryAxis;\n            return seriesChartType;\n        });\n        // note that when seriesChartTypes are supplied the chart type is also changed to 'customCombo'\n        if (this.chartType === 'customCombo') {\n            this.updateSeriesChartTypesForCustomCombo();\n            return;\n        }\n        this.updateChartSeriesTypesForBuiltInCombos();\n    };\n    ChartDataModel.prototype.updateSeriesChartTypesForCustomCombo = function () {\n        var _this = this;\n        var seriesChartTypesSupplied = this.seriesChartTypes && this.seriesChartTypes.length > 0;\n        if (!seriesChartTypesSupplied && !this.suppressComboChartWarnings) {\n            console.warn(\"AG Grid: 'seriesChartTypes' are required when the 'customCombo' chart type is specified.\");\n        }\n        // ensure correct chartTypes are supplied\n        this.seriesChartTypes = this.seriesChartTypes.map(function (s) {\n            if (!ChartDataModel.SUPPORTED_COMBO_CHART_TYPES.includes(s.chartType)) {\n                console.warn(\"AG Grid: invalid chartType '\" + s.chartType + \"' supplied in 'seriesChartTypes', converting to 'line' instead.\");\n                s.chartType = 'line';\n            }\n            return s;\n        });\n        var getSeriesChartType = function (valueCol) {\n            if (!_this.savedCustomSeriesChartTypes || _this.savedCustomSeriesChartTypes.length === 0) {\n                _this.savedCustomSeriesChartTypes = _this.seriesChartTypes;\n            }\n            var providedSeriesChartType = _this.savedCustomSeriesChartTypes.find(function (s) { return s.colId === valueCol.colId; });\n            if (!providedSeriesChartType) {\n                if (valueCol.selected && !_this.suppressComboChartWarnings) {\n                    console.warn(\"AG Grid: no 'seriesChartType' found for colId = '\" + valueCol.colId + \"', defaulting to 'line'.\");\n                }\n                return {\n                    colId: valueCol.colId,\n                    chartType: 'line',\n                    secondaryAxis: false\n                };\n            }\n            return providedSeriesChartType;\n        };\n        var updatedSeriesChartTypes = this.valueColState.map(getSeriesChartType);\n        this.seriesChartTypes = updatedSeriesChartTypes;\n        // also cache custom `seriesChartTypes` to allow for switching between different chart types\n        this.savedCustomSeriesChartTypes = updatedSeriesChartTypes;\n        // turn off warnings as first combo chart attempt has completed\n        this.suppressComboChartWarnings = true;\n    };\n    ChartDataModel.prototype.updateChartSeriesTypesForBuiltInCombos = function () {\n        var primaryChartType = this.chartType === 'columnLineCombo' ? 'groupedColumn' : 'stackedArea';\n        var secondaryChartType = this.chartType === 'columnLineCombo' ? 'line' : 'groupedColumn';\n        var selectedCols = this.valueColState.filter(function (cs) { return cs.selected; });\n        var lineIndex = Math.ceil(selectedCols.length / 2);\n        this.seriesChartTypes = selectedCols.map(function (valueCol, i) {\n            var seriesType = (i >= lineIndex) ? secondaryChartType : primaryChartType;\n            return { colId: valueCol.colId, chartType: seriesType, secondaryAxis: false };\n        });\n    };\n    ChartDataModel.prototype.updateData = function () {\n        var _a = this.getRowIndexes(), startRow = _a.startRow, endRow = _a.endRow;\n        if (this.pivotChart) {\n            this.resetColumnState();\n        }\n        this.grouping = this.isGrouping();\n        var params = {\n            aggFunc: this.aggFunc,\n            dimensionCols: [this.getSelectedDimension()],\n            grouping: this.grouping,\n            pivoting: this.isPivotActive(),\n            crossFiltering: this.crossFiltering,\n            valueCols: this.getSelectedValueCols(),\n            startRow: startRow,\n            endRow: endRow,\n            isScatter: _.includes(['scatter', 'bubble'], this.chartType)\n        };\n        var _b = this.datasource.getData(params), chartData = _b.chartData, columnNames = _b.columnNames;\n        this.chartData = chartData;\n        this.columnNames = columnNames;\n    };\n    ChartDataModel.prototype.isGrouping = function () {\n        var usingTreeData = this.gridOptionsService.isTreeData();\n        var groupedCols = usingTreeData ? null : this.columnModel.getRowGroupColumns();\n        var isGroupActive = usingTreeData || (groupedCols && groupedCols.length > 0);\n        // charts only group when the selected category is a group column\n        var colId = this.getSelectedDimension().colId;\n        var displayedGroupCols = this.columnModel.getGroupDisplayColumns();\n        var groupDimensionSelected = displayedGroupCols.map(function (col) { return col.getColId(); }).some(function (id) { return id === colId; });\n        return !!isGroupActive && groupDimensionSelected;\n    };\n    ChartDataModel.prototype.getSelectedValueCols = function () {\n        return this.valueColState.filter(function (cs) { return cs.selected; }).map(function (cs) { return cs.column; });\n    };\n    ChartDataModel.prototype.getSelectedDimension = function () {\n        return this.dimensionColState.filter(function (cs) { return cs.selected; })[0];\n    };\n    ChartDataModel.prototype.getColDisplayName = function (col) {\n        return this.columnModel.getDisplayNameForColumn(col, 'chart');\n    };\n    ChartDataModel.prototype.isPivotMode = function () {\n        return this.columnModel.isPivotMode();\n    };\n    ChartDataModel.prototype.getChartDataType = function (colId) {\n        var column = this.columnModel.getPrimaryColumn(colId);\n        return column ? column.getColDef().chartDataType : undefined;\n    };\n    ChartDataModel.prototype.isPivotActive = function () {\n        return this.columnModel.isPivotActive();\n    };\n    ChartDataModel.prototype.createCellRange = function (type) {\n        var columns = [];\n        for (var _i = 1; _i < arguments.length; _i++) {\n            columns[_i - 1] = arguments[_i];\n        }\n        return {\n            id: this.chartId,\n            startRow: this.referenceCellRange.startRow,\n            endRow: this.referenceCellRange.endRow,\n            columns: columns,\n            startColumn: type === CellRangeType.DIMENSION ? columns[0] : this.referenceCellRange.startColumn,\n            type: type\n        };\n    };\n    ChartDataModel.prototype.getAllColumnsFromRanges = function () {\n        if (this.pivotChart) {\n            return _.convertToSet(this.columnModel.getAllDisplayedColumns());\n        }\n        var columns = this.dimensionCellRange || this.valueCellRange ? [] : this.referenceCellRange.columns;\n        if (this.dimensionCellRange) {\n            columns.push.apply(columns, __spread$a(this.dimensionCellRange.columns));\n        }\n        if (this.valueCellRange) {\n            columns.push.apply(columns, __spread$a(this.valueCellRange.columns));\n        }\n        return _.convertToSet(columns);\n    };\n    ChartDataModel.prototype.getRowIndexes = function () {\n        var startRow = 0, endRow = 0;\n        var rangeService = this.rangeService;\n        var range = this.valueCellRange;\n        if (rangeService && range) {\n            startRow = rangeService.getRangeStartRow(range).rowIndex;\n            // when the last row the cell range is a pinned 'bottom' row, the `endRow` index is set to -1 which results\n            // in the ChartDatasource processing all non pinned rows from the `startRow` index.\n            var endRowPosition = rangeService.getRangeEndRow(range);\n            endRow = endRowPosition.rowPinned === 'bottom' ? -1 : endRowPosition.rowIndex;\n        }\n        return { startRow: startRow, endRow: endRow };\n    };\n    ChartDataModel.prototype.getAllChartColumns = function () {\n        var _this = this;\n        var displayedCols = this.columnModel.getAllDisplayedColumns();\n        var dimensionCols = new Set();\n        var valueCols = new Set();\n        displayedCols.forEach(function (col) {\n            var colDef = col.getColDef();\n            var chartDataType = colDef.chartDataType;\n            if (chartDataType) {\n                // chart data type was specified explicitly\n                switch (chartDataType) {\n                    case 'category':\n                    case 'time':\n                        dimensionCols.add(col);\n                        return;\n                    case 'series':\n                        valueCols.add(col);\n                        return;\n                    case 'excluded':\n                        return;\n                    default:\n                        console.warn(\"AG Grid: unexpected chartDataType value '\" + chartDataType + \"' supplied, instead use 'category', 'series' or 'excluded'\");\n                        break;\n                }\n            }\n            if (colDef.colId === 'ag-Grid-AutoColumn') {\n                dimensionCols.add(col);\n                return;\n            }\n            if (!col.isPrimary()) {\n                valueCols.add(col);\n                return;\n            }\n            // if 'chartDataType' is not provided then infer type based data contained in first row\n            (_this.isNumberCol(col) ? valueCols : dimensionCols).add(col);\n        });\n        return { dimensionCols: dimensionCols, valueCols: valueCols };\n    };\n    ChartDataModel.prototype.isNumberCol = function (col) {\n        if (col.getColId() === 'ag-Grid-AutoColumn') {\n            return false;\n        }\n        var row = this.rowRenderer.getRowNode({ rowIndex: 0, rowPinned: null });\n        if (!row) {\n            return false;\n        }\n        var cellValue = this.valueService.getValue(col, row);\n        if (cellValue == null) {\n            cellValue = this.extractLeafData(row, col);\n        }\n        if (cellValue != null && typeof cellValue.toNumber === 'function') {\n            cellValue = cellValue.toNumber();\n        }\n        return typeof cellValue === 'number';\n    };\n    ChartDataModel.prototype.extractLeafData = function (row, col) {\n        if (!row.allLeafChildren) {\n            return null;\n        }\n        for (var i = 0; i < row.allLeafChildren.length; i++) {\n            var childRow = row.allLeafChildren[i];\n            var value = this.valueService.getValue(col, childRow);\n            if (value != null) {\n                return value;\n            }\n        }\n        return null;\n    };\n    ChartDataModel.prototype.resetColumnState = function () {\n        var _this = this;\n        var _a = this.getAllChartColumns(), dimensionCols = _a.dimensionCols, valueCols = _a.valueCols;\n        var allCols = this.getAllColumnsFromRanges();\n        var isInitialising = this.valueColState.length < 1;\n        this.dimensionColState = [];\n        this.valueColState = [];\n        var hasSelectedDimension = false;\n        var order = 1;\n        var aggFuncDimension = this.suppliedCellRange.columns[0]; //TODO\n        dimensionCols.forEach(function (column) {\n            var isAutoGroupCol = column.getColId() === 'ag-Grid-AutoColumn';\n            var selected = false;\n            if (_this.crossFiltering && _this.aggFunc) {\n                if (aggFuncDimension.getColId() === column.getColId()) {\n                    selected = true;\n                }\n            }\n            else {\n                selected = isAutoGroupCol ? true : !hasSelectedDimension && allCols.has(column);\n            }\n            _this.dimensionColState.push({\n                column: column,\n                colId: column.getColId(),\n                displayName: _this.getColDisplayName(column),\n                selected: selected,\n                order: order++\n            });\n            if (selected) {\n                hasSelectedDimension = true;\n            }\n        });\n        var defaultCategory = {\n            colId: ChartDataModel.DEFAULT_CATEGORY,\n            displayName: this.chartTranslationService.translate('defaultCategory'),\n            selected: !hasSelectedDimension,\n            order: 0\n        };\n        this.dimensionColState.unshift(defaultCategory);\n        var valueColumnsFromReferenceRange = this.referenceCellRange.columns.filter(function (c) { return valueCols.has(c); });\n        valueCols.forEach(function (column) {\n            // first time the value cell range is set, preserve the column order from the supplied range\n            if (isInitialising && _.includes(_this.referenceCellRange.columns, column)) {\n                column = valueColumnsFromReferenceRange.shift();\n            }\n            _this.valueColState.push({\n                column: column,\n                colId: column.getColId(),\n                displayName: _this.getColDisplayName(column),\n                selected: allCols.has(column),\n                order: order++\n            });\n        });\n    };\n    ChartDataModel.prototype.updateColumnState = function (updatedCol) {\n        var idsMatch = function (cs) { return cs.colId === updatedCol.colId; };\n        var _a = this, dimensionColState = _a.dimensionColState, valueColState = _a.valueColState;\n        if (dimensionColState.filter(idsMatch).length > 0) {\n            // only one dimension should be selected\n            dimensionColState.forEach(function (cs) { return cs.selected = idsMatch(cs); });\n        }\n        else {\n            // just update the selected value on the supplied value column\n            valueColState.filter(idsMatch).forEach(function (cs) { return cs.selected = updatedCol.selected; });\n        }\n        var allColumns = __spread$a(dimensionColState, valueColState);\n        var orderedColIds = [];\n        // calculate new order\n        allColumns.forEach(function (col, i) {\n            if (i === updatedCol.order) {\n                orderedColIds.push(updatedCol.colId);\n            }\n            if (col.colId !== updatedCol.colId) {\n                orderedColIds.push(col.colId);\n            }\n        });\n        // update col state with new order\n        allColumns.forEach(function (col) {\n            var order = orderedColIds.indexOf(col.colId);\n            col.order = order >= 0 ? orderedColIds.indexOf(col.colId) : allColumns.length - 1;\n        });\n        this.reorderColState();\n    };\n    ChartDataModel.prototype.reorderColState = function () {\n        var ascColStateOrder = function (a, b) { return a.order - b.order; };\n        this.dimensionColState.sort(ascColStateOrder);\n        this.valueColState.sort(ascColStateOrder);\n    };\n    ChartDataModel.prototype.setDimensionCellRange = function (dimensionCols, colsInRange, updatedColState) {\n        var _this = this;\n        this.dimensionCellRange = undefined;\n        if (!updatedColState && !this.dimensionColState.length) {\n            // use first dimension column in range by default\n            dimensionCols.forEach(function (col) {\n                if (_this.dimensionCellRange || !colsInRange.has(col)) {\n                    return;\n                }\n                _this.dimensionCellRange = _this.createCellRange(CellRangeType.DIMENSION, col);\n            });\n            return;\n        }\n        var selectedDimensionColState = updatedColState;\n        if (this.crossFiltering && this.aggFunc) {\n            var aggFuncDimension_1 = this.suppliedCellRange.columns[0]; //TODO\n            selectedDimensionColState = this.dimensionColState.filter(function (cs) { return cs.colId === aggFuncDimension_1.getColId(); })[0];\n        }\n        else if (!selectedDimensionColState || !dimensionCols.has(selectedDimensionColState.column)) {\n            selectedDimensionColState = this.dimensionColState.filter(function (cs) { return cs.selected; })[0];\n        }\n        if (selectedDimensionColState && selectedDimensionColState.colId !== ChartDataModel.DEFAULT_CATEGORY) {\n            this.dimensionCellRange = this.createCellRange(CellRangeType.DIMENSION, selectedDimensionColState.column);\n        }\n    };\n    ChartDataModel.prototype.setValueCellRange = function (valueCols, colsInRange, updatedColState) {\n        this.valueCellRange = undefined;\n        var selectedValueCols = [];\n        valueCols.forEach(function (col) {\n            if (updatedColState && updatedColState.colId === col.getColId()) {\n                if (updatedColState.selected) {\n                    selectedValueCols.push(updatedColState.column);\n                }\n            }\n            else if (colsInRange.has(col)) {\n                selectedValueCols.push(col);\n            }\n        });\n        if (selectedValueCols.length > 0) {\n            var orderedColIds_1 = [];\n            if (this.valueColState.length > 0) {\n                orderedColIds_1 = this.valueColState.map(function (c) { return c.colId; });\n            }\n            else {\n                colsInRange.forEach(function (c) { return orderedColIds_1.push(c.getColId()); });\n            }\n            selectedValueCols.sort(function (a, b) { return orderedColIds_1.indexOf(a.getColId()) - orderedColIds_1.indexOf(b.getColId()); });\n            this.valueCellRange = this.createCellRange.apply(this, __spread$a([CellRangeType.VALUE], selectedValueCols));\n        }\n    };\n    ChartDataModel.prototype.syncDimensionCellRange = function () {\n        var selectedDimension = this.getSelectedDimension();\n        if (selectedDimension && selectedDimension.column) {\n            this.dimensionCellRange = this.createCellRange(CellRangeType.DIMENSION, selectedDimension.column);\n        }\n    };\n    ChartDataModel.prototype.isComboChart = function () {\n        return ['columnLineCombo', 'areaColumnCombo', 'customCombo'].includes(this.chartType);\n    };\n    ChartDataModel.DEFAULT_CATEGORY = 'AG-GRID-DEFAULT-CATEGORY';\n    ChartDataModel.SUPPORTED_COMBO_CHART_TYPES = ['line', 'groupedColumn', 'stackedColumn', 'area', 'stackedArea'];\n    __decorate$1a([\n        Autowired('columnModel')\n    ], ChartDataModel.prototype, \"columnModel\", void 0);\n    __decorate$1a([\n        Autowired('valueService')\n    ], ChartDataModel.prototype, \"valueService\", void 0);\n    __decorate$1a([\n        Autowired('rangeService')\n    ], ChartDataModel.prototype, \"rangeService\", void 0);\n    __decorate$1a([\n        Autowired('rowRenderer')\n    ], ChartDataModel.prototype, \"rowRenderer\", void 0);\n    __decorate$1a([\n        Autowired('chartTranslationService')\n    ], ChartDataModel.prototype, \"chartTranslationService\", void 0);\n    __decorate$1a([\n        PostConstruct\n    ], ChartDataModel.prototype, \"init\", null);\n    return ChartDataModel;\n}(BeanStub));\n\nvar VALID_SERIES_TYPES = [\n    'area',\n    'bar',\n    'column',\n    'histogram',\n    'line',\n    'pie',\n    'scatter',\n];\nfunction getSeriesType(chartType) {\n    switch (chartType) {\n        case 'bar':\n        case 'groupedBar':\n        case 'stackedBar':\n        case 'normalizedBar':\n            return 'bar';\n        case 'column':\n        case 'groupedColumn':\n        case 'stackedColumn':\n        case 'normalizedColumn':\n            return 'column';\n        case 'line':\n            return 'line';\n        case 'area':\n        case 'stackedArea':\n        case 'normalizedArea':\n            return 'area';\n        case 'scatter':\n        case 'bubble':\n            return 'scatter';\n        case 'histogram':\n            return 'histogram';\n        case 'pie':\n        case 'doughnut':\n            return 'pie';\n        default:\n            return 'cartesian';\n    }\n}\n\nvar ALL_AXIS_TYPES = ['number', 'category', 'groupedCategory', 'log', 'time'];\nfunction getLegacyAxisType(chartType) {\n    switch (chartType) {\n        case 'bar':\n        case 'stackedBar':\n        case 'normalizedBar':\n            return ['number', 'category'];\n        case 'groupedBar':\n            return ['number', 'groupedCategory'];\n        case 'column':\n        case 'stackedColumn':\n        case 'normalizedColumn':\n        case 'line':\n        case 'area':\n        case 'stackedArea':\n        case 'normalizedArea':\n        case 'histogram':\n            return ['category', 'number'];\n        case 'groupedColumn':\n            return ['groupedCategory', 'number'];\n        case 'scatter':\n        case 'bubble':\n            return ['number', 'number'];\n        default:\n            return undefined;\n    }\n}\n\nvar __assign$k = (undefined && undefined.__assign) || function () {\n    __assign$k = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign$k.apply(this, arguments);\n};\nfunction createAgChartTheme(chartProxyParams, proxy) {\n    var _a;\n    var chartOptionsToRestore = chartProxyParams.chartOptionsToRestore, chartPaletteToRestore = chartProxyParams.chartPaletteToRestore, chartThemeToRestore = chartProxyParams.chartThemeToRestore;\n    var themeName = getSelectedTheme(chartProxyParams);\n    var stockTheme = isStockTheme(themeName);\n    var rootTheme = stockTheme\n        ? { baseTheme: themeName }\n        : (_a = lookupCustomChartTheme(chartProxyParams, themeName)) !== null && _a !== void 0 ? _a : {};\n    var gridOptionsThemeOverrides = chartProxyParams.getGridOptionsChartThemeOverrides();\n    var apiThemeOverrides = chartProxyParams.apiChartThemeOverrides;\n    var standaloneChartType = getSeriesType(chartProxyParams.chartType);\n    var crossFilterThemeOverridePoint = standaloneChartType === 'pie' ? 'polar' : 'cartesian';\n    var crossFilteringOverrides = chartProxyParams.crossFiltering\n        ? createCrossFilterThemeOverrides(proxy, chartProxyParams, crossFilterThemeOverridePoint)\n        : undefined;\n    var formattingPanelOverrides = __assign$k({}, (chartOptionsToRestore !== null && chartOptionsToRestore !== void 0 ? chartOptionsToRestore : {}));\n    var isTitleEnabled = function () {\n        var isTitleEnabled = function (obj) {\n            if (!obj) {\n                return false;\n            }\n            return Object.keys(obj).some(function (key) { return _.get(obj[key], 'title.enabled', false); });\n        };\n        return isTitleEnabled(gridOptionsThemeOverrides) || isTitleEnabled(apiThemeOverrides);\n    };\n    // Overrides in ascending precedence ordering.\n    var overrides = [\n        stockTheme ? inbuiltStockThemeOverrides(chartProxyParams, isTitleEnabled()) : undefined,\n        crossFilteringOverrides,\n        gridOptionsThemeOverrides,\n        apiThemeOverrides,\n        formattingPanelOverrides,\n    ];\n    // Recursively nest theme overrides so they are applied with correct precedence in\n    // Standalone Charts - this is an undocumented feature.\n    // Outermost theme overrides will be the formatting panel configured values, so they are\n    // differentiated from grid-config and inbuilt overrides.\n    var theme = overrides\n        .filter(function (v) { return !!v; })\n        .reduce(function (r, n) { return ({\n        baseTheme: r,\n        overrides: n,\n    }); }, rootTheme);\n    // Avoid explicitly setting the `theme.palette` property unless we're using the restored theme\n    // AND the palette is actually different.\n    if (chartPaletteToRestore && themeName === chartThemeToRestore) {\n        var rootThemePalette = getChartTheme(rootTheme).palette;\n        if (!isIdenticalPalette(chartPaletteToRestore, rootThemePalette)) {\n            theme.palette = chartPaletteToRestore;\n        }\n    }\n    return theme;\n}\nfunction isIdenticalPalette(paletteA, paletteB) {\n    var arrayCompare = function (arrA, arrB) {\n        if (arrA.length !== arrB.length)\n            return false;\n        return arrA.every(function (v, i) { return v === arrB[i]; });\n    };\n    return arrayCompare(paletteA.fills, paletteB.fills) &&\n        arrayCompare(paletteA.strokes, paletteB.strokes);\n}\nfunction isStockTheme(themeName) {\n    return _.includes(Object.keys(themes), themeName);\n}\nfunction createCrossFilterThemeOverrides(proxy, chartProxyParams, overrideType) {\n    var _a;\n    var legend = {\n        listeners: {\n            legendItemClick: function (e) {\n                var chart = proxy.getChart();\n                chart.series.forEach(function (s) {\n                    s.toggleSeriesItem(e.itemId, e.enabled);\n                    s.toggleSeriesItem(e.itemId + \"-filtered-out\", e.enabled);\n                });\n            },\n        },\n    };\n    var series = {};\n    if (overrideType === 'polar') {\n        series.pie = {\n            tooltip: {\n                renderer: function (_a) {\n                    var angleName = _a.angleName, datum = _a.datum, calloutLabelKey = _a.calloutLabelKey, radiusKey = _a.radiusKey, angleValue = _a.angleValue;\n                    var title = angleName;\n                    var label = datum[calloutLabelKey];\n                    var ratio = datum[radiusKey];\n                    var totalValue = angleValue;\n                    return { title: title, content: label + \": \" + totalValue * ratio };\n                },\n            },\n        };\n    }\n    return _a = {},\n        _a[overrideType] = {\n            tooltip: {\n                delay: 500,\n            },\n            legend: legend,\n            listeners: {\n                click: function (e) { return chartProxyParams.crossFilterCallback(e, true); },\n            },\n            series: series,\n        },\n        _a;\n}\nvar STATIC_INBUILT_STOCK_THEME_AXES_OVERRIDES = ALL_AXIS_TYPES.reduce(function (r, n) {\n    var _a;\n    return (__assign$k(__assign$k({}, r), (_a = {}, _a[n] = { title: { _enabledFromTheme: true } }, _a)));\n}, {});\nfunction inbuiltStockThemeOverrides(params, titleEnabled) {\n    var extraPadding = params.getExtraPaddingDirections();\n    return {\n        common: {\n            axes: STATIC_INBUILT_STOCK_THEME_AXES_OVERRIDES,\n            padding: {\n                // don't add extra padding when a title is present!\n                top: !titleEnabled && extraPadding.includes('top') ? 40 : 20,\n                right: extraPadding.includes('right') ? 30 : 20,\n                bottom: extraPadding.includes('bottom') ? 40 : 20,\n                left: extraPadding.includes('left') ? 30 : 20,\n            },\n        },\n        pie: {\n            series: {\n                title: { _enabledFromTheme: true },\n                calloutLabel: { _enabledFromTheme: true },\n                sectorLabel: {\n                    enabled: false,\n                    _enabledFromTheme: true,\n                },\n            },\n        },\n    };\n}\nfunction getSelectedTheme(chartProxyParams) {\n    var chartThemeName = chartProxyParams.getChartThemeName();\n    var availableThemes = chartProxyParams.getChartThemes();\n    if (!_.includes(availableThemes, chartThemeName)) {\n        chartThemeName = availableThemes[0];\n    }\n    return chartThemeName;\n}\nfunction lookupCustomChartTheme(chartProxyParams, name) {\n    var customChartThemes = chartProxyParams.customChartThemes;\n    var customChartTheme = customChartThemes && customChartThemes[name];\n    if (!customChartTheme) {\n        console.warn(\"AG Grid: no stock theme exists with the name '\" + name + \"' and no \" +\n            \"custom chart theme with that name was supplied to 'customChartThemes'\");\n    }\n    return customChartTheme;\n}\n\nvar __extends$1E = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$19 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar DEFAULT_THEMES = ['ag-default', 'ag-material', 'ag-pastel', 'ag-vivid', 'ag-solar'];\nvar ChartController = /** @class */ (function (_super) {\n    __extends$1E(ChartController, _super);\n    function ChartController(model) {\n        var _this = _super.call(this) || this;\n        _this.model = model;\n        return _this;\n    }\n    ChartController.prototype.init = function () {\n        var _this = this;\n        this.setChartRange();\n        this.addManagedListener(this.eventService, Events.EVENT_RANGE_SELECTION_CHANGED, function (event) {\n            if (event.id && event.id === _this.model.chartId) {\n                _this.updateForRangeChange();\n            }\n        });\n        if (this.model.unlinked) {\n            if (this.rangeService) {\n                this.rangeService.setCellRanges([]);\n            }\n        }\n        this.addManagedListener(this.eventService, Events.EVENT_COLUMN_MOVED, this.updateForGridChange.bind(this));\n        this.addManagedListener(this.eventService, Events.EVENT_COLUMN_PINNED, this.updateForGridChange.bind(this));\n        this.addManagedListener(this.eventService, Events.EVENT_COLUMN_VISIBLE, this.updateForGridChange.bind(this));\n        this.addManagedListener(this.eventService, Events.EVENT_COLUMN_ROW_GROUP_CHANGED, this.updateForGridChange.bind(this));\n        this.addManagedListener(this.eventService, Events.EVENT_MODEL_UPDATED, this.updateForGridChange.bind(this));\n        this.addManagedListener(this.eventService, Events.EVENT_CELL_VALUE_CHANGED, this.updateForDataChange.bind(this));\n    };\n    ChartController.prototype.updateForGridChange = function () {\n        if (this.model.unlinked) {\n            return;\n        }\n        this.model.updateCellRanges();\n        this.setChartRange();\n    };\n    ChartController.prototype.updateForDataChange = function () {\n        if (this.model.unlinked) {\n            return;\n        }\n        this.model.updateData();\n        this.raiseChartModelUpdateEvent();\n    };\n    ChartController.prototype.updateForRangeChange = function () {\n        this.updateForGridChange();\n        this.raiseChartRangeSelectionChangedEvent();\n    };\n    ChartController.prototype.updateForPanelChange = function (updatedCol) {\n        this.model.updateCellRanges(updatedCol);\n        this.setChartRange();\n        this.raiseChartRangeSelectionChangedEvent();\n    };\n    ChartController.prototype.getChartUpdateParams = function () {\n        var selectedCols = this.getSelectedValueColState();\n        var fields = selectedCols.map(function (c) { return ({ colId: c.colId, displayName: c.displayName }); });\n        var data = this.getChartData();\n        var selectedDimension = this.getSelectedDimension();\n        return {\n            data: data,\n            grouping: this.isGrouping(),\n            category: {\n                id: selectedDimension.colId,\n                name: selectedDimension.displayName,\n                chartDataType: this.model.getChartDataType(selectedDimension.colId)\n            },\n            fields: fields,\n            chartId: this.getChartId(),\n            getCrossFilteringContext: function () { return ({ lastSelectedChartId: 'xxx' }); },\n            seriesChartTypes: this.getSeriesChartTypes()\n        };\n    };\n    ChartController.prototype.getChartModel = function () {\n        var modelType = this.model.pivotChart ? 'pivot' : 'range';\n        var seriesChartTypes = this.isComboChart() ? this.model.seriesChartTypes : undefined;\n        return {\n            modelType: modelType,\n            chartId: this.model.chartId,\n            chartType: this.model.chartType,\n            chartThemeName: this.getChartThemeName(),\n            chartOptions: this.chartProxy.getChartThemeOverrides(),\n            chartPalette: this.chartProxy.getChartPalette(),\n            cellRange: this.getCellRangeParams(),\n            suppressChartRanges: this.model.suppressChartRanges,\n            aggFunc: this.model.aggFunc,\n            unlinkChart: this.model.unlinked,\n            seriesChartTypes: seriesChartTypes\n        };\n    };\n    ChartController.prototype.getChartId = function () {\n        return this.model.chartId;\n    };\n    ChartController.prototype.getChartData = function () {\n        return this.model.chartData;\n    };\n    ChartController.prototype.getChartType = function () {\n        return this.model.chartType;\n    };\n    ChartController.prototype.setChartType = function (chartType) {\n        this.model.chartType = chartType;\n        this.model.updateSeriesChartTypes();\n        this.raiseChartModelUpdateEvent();\n        this.raiseChartOptionsChangedEvent();\n    };\n    ChartController.prototype.setChartThemeName = function (chartThemeName) {\n        this.model.chartThemeName = chartThemeName;\n        this.raiseChartModelUpdateEvent();\n        this.raiseChartOptionsChangedEvent();\n    };\n    ChartController.prototype.getChartThemeName = function () {\n        return this.model.chartThemeName;\n    };\n    ChartController.prototype.isPivotChart = function () {\n        return this.model.pivotChart;\n    };\n    ChartController.prototype.isPivotMode = function () {\n        return this.model.isPivotMode();\n    };\n    ChartController.prototype.isGrouping = function () {\n        return this.model.isGrouping();\n    };\n    ChartController.prototype.getThemes = function () {\n        return this.gridOptionsService.get('chartThemes') || DEFAULT_THEMES;\n    };\n    ChartController.prototype.getPalettes = function () {\n        var _this = this;\n        var themeNames = this.getThemes();\n        return themeNames.map(function (themeName) {\n            var stockTheme = isStockTheme(themeName);\n            var theme = stockTheme ? themeName : _this.chartProxy.lookupCustomChartTheme(themeName);\n            return getChartTheme(theme).palette;\n        });\n    };\n    ChartController.prototype.getValueColState = function () {\n        return this.model.valueColState.map(this.displayNameMapper.bind(this));\n    };\n    ChartController.prototype.getSelectedValueColState = function () {\n        return this.getValueColState().filter(function (cs) { return cs.selected; });\n    };\n    ChartController.prototype.getDimensionColState = function () {\n        return this.model.dimensionColState;\n    };\n    ChartController.prototype.getSelectedDimension = function () {\n        return this.model.getSelectedDimension();\n    };\n    ChartController.prototype.displayNameMapper = function (col) {\n        var columnNames = this.model.columnNames[col.colId];\n        col.displayName = columnNames ? columnNames.join(' - ') : this.model.getColDisplayName(col.column);\n        return col;\n    };\n    ChartController.prototype.getColStateForMenu = function () {\n        return { dimensionCols: this.model.dimensionColState, valueCols: this.getValueColState() };\n    };\n    ChartController.prototype.isDefaultCategorySelected = function () {\n        return this.model.getSelectedDimension().colId === ChartDataModel.DEFAULT_CATEGORY;\n    };\n    ChartController.prototype.setChartRange = function (silent) {\n        if (silent === void 0) { silent = false; }\n        if (this.rangeService && !this.model.suppressChartRanges && !this.model.unlinked) {\n            this.rangeService.setCellRanges(this.getCellRanges());\n        }\n        if (!silent) {\n            this.raiseChartModelUpdateEvent();\n        }\n    };\n    ChartController.prototype.detachChartRange = function () {\n        // when chart is detached it won't listen to changes from the grid\n        this.model.unlinked = !this.model.unlinked;\n        if (this.model.unlinked) {\n            // remove range from grid\n            if (this.rangeService) {\n                this.rangeService.setCellRanges([]);\n            }\n        }\n        else {\n            // update chart data may have changed\n            this.updateForGridChange();\n        }\n    };\n    ChartController.prototype.setChartProxy = function (chartProxy) {\n        this.chartProxy = chartProxy;\n    };\n    ChartController.prototype.getChartProxy = function () {\n        return this.chartProxy;\n    };\n    ChartController.prototype.isActiveXYChart = function () {\n        return _.includes(['scatter', 'bubble'], this.getChartType());\n    };\n    ChartController.prototype.isChartLinked = function () {\n        return !this.model.unlinked;\n    };\n    ChartController.prototype.customComboExists = function () {\n        return this.model.savedCustomSeriesChartTypes && this.model.savedCustomSeriesChartTypes.length > 0;\n    };\n    ChartController.prototype.getSeriesChartTypes = function () {\n        return this.model.seriesChartTypes;\n    };\n    ChartController.prototype.isComboChart = function () {\n        return this.model.isComboChart();\n    };\n    ChartController.prototype.updateSeriesChartType = function (colId, chartType, secondaryAxis) {\n        var seriesChartType = this.model.seriesChartTypes.find(function (s) { return s.colId === colId; });\n        if (seriesChartType) {\n            // once a combo chart has been modified it is now a 'customCombo' chart\n            var updateChartType = this.model.chartType !== 'customCombo';\n            if (updateChartType) {\n                this.model.chartType = 'customCombo';\n            }\n            var prevSeriesChartType = seriesChartType.chartType;\n            if (chartType != null) {\n                seriesChartType.chartType = chartType;\n            }\n            if (secondaryAxis != null) {\n                seriesChartType.secondaryAxis = secondaryAxis;\n            }\n            // replace existing custom series types with this latest version\n            this.model.savedCustomSeriesChartTypes = this.model.seriesChartTypes;\n            // series chart types can be modified, i.e. column chart types should be moved to primary axis\n            this.model.updateSeriesChartTypes();\n            this.updateForDataChange();\n            if (updateChartType) {\n                // update the settings panel by raising an EVENT_CHART_TYPE_CHANGED event\n                this.dispatchEvent({\n                    type: ChartController.EVENT_CHART_TYPE_CHANGED\n                });\n            }\n            if (prevSeriesChartType !== chartType) {\n                // update the format panel by raising an EVENT_CHART_SERIES_CHART_TYPE_CHANGED event\n                this.dispatchEvent({\n                    type: ChartController.EVENT_CHART_SERIES_CHART_TYPE_CHANGED\n                });\n            }\n            this.raiseChartOptionsChangedEvent();\n        }\n    };\n    ChartController.prototype.getActiveSeriesChartTypes = function () {\n        var selectedColIds = this.getSelectedValueColState().map(function (c) { return c.colId; });\n        return this.getSeriesChartTypes().filter(function (s) { return selectedColIds.includes(s.colId); });\n    };\n    ChartController.prototype.getChartSeriesTypes = function () {\n        var supportedComboSeriesTypes = ['line', 'column', 'area'];\n        return this.isComboChart() ? supportedComboSeriesTypes : [getSeriesType(this.getChartType())];\n    };\n    ChartController.prototype.getCellRanges = function () {\n        return [this.model.dimensionCellRange, this.model.valueCellRange].filter(function (r) { return r; });\n    };\n    ChartController.prototype.getCellRangeParams = function () {\n        var cellRanges = this.getCellRanges();\n        var firstCellRange = cellRanges[0];\n        var startRow = (firstCellRange && firstCellRange.startRow) || null;\n        var endRow = (firstCellRange && firstCellRange.endRow) || null;\n        return {\n            rowStartIndex: startRow && startRow.rowIndex,\n            rowStartPinned: startRow && startRow.rowPinned,\n            rowEndIndex: endRow && endRow.rowIndex,\n            rowEndPinned: endRow && endRow.rowPinned,\n            columns: cellRanges.reduce(function (columns, value) { return columns.concat(value.columns.map(function (c) { return c.getId(); })); }, [])\n        };\n    };\n    ChartController.prototype.raiseChartModelUpdateEvent = function () {\n        var event = {\n            type: ChartController.EVENT_CHART_MODEL_UPDATE\n        };\n        this.dispatchEvent(event);\n    };\n    ChartController.prototype.raiseChartUpdatedEvent = function () {\n        var event = {\n            type: ChartController.EVENT_CHART_UPDATED\n        };\n        this.dispatchEvent(event);\n    };\n    ChartController.prototype.raiseChartOptionsChangedEvent = function () {\n        var _a = this.getChartModel(), chartId = _a.chartId, chartType = _a.chartType;\n        var event = {\n            type: Events.EVENT_CHART_OPTIONS_CHANGED,\n            chartId: chartId,\n            chartType: chartType,\n            chartThemeName: this.getChartThemeName(),\n            chartOptions: this.chartProxy.getChartThemeOverrides()\n        };\n        this.eventService.dispatchEvent(event);\n    };\n    ChartController.prototype.raiseChartRangeSelectionChangedEvent = function () {\n        var event = {\n            type: Events.EVENT_CHART_RANGE_SELECTION_CHANGED,\n            id: this.model.chartId,\n            chartId: this.model.chartId,\n            cellRange: this.getCellRangeParams()\n        };\n        this.eventService.dispatchEvent(event);\n    };\n    ChartController.prototype.destroy = function () {\n        _super.prototype.destroy.call(this);\n        if (this.rangeService) {\n            this.rangeService.setCellRanges([]);\n        }\n    };\n    ChartController.EVENT_CHART_UPDATED = 'chartUpdated';\n    ChartController.EVENT_CHART_MODEL_UPDATE = 'chartModelUpdate';\n    ChartController.EVENT_CHART_TYPE_CHANGED = 'chartTypeChanged';\n    ChartController.EVENT_CHART_SERIES_CHART_TYPE_CHANGED = 'chartSeriesChartTypeChanged';\n    __decorate$19([\n        Autowired('rangeService')\n    ], ChartController.prototype, \"rangeService\", void 0);\n    __decorate$19([\n        PostConstruct\n    ], ChartController.prototype, \"init\", null);\n    return ChartController;\n}(BeanStub));\n\nvar __extends$1D = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$18 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __read$k = (undefined && undefined.__read) || function (o, n) {\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n    if (!m) return o;\n    var i = m.call(o), r, ar = [], e;\n    try {\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n    }\n    catch (error) { e = { error: error }; }\n    finally {\n        try {\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\n        }\n        finally { if (e) throw e.error; }\n    }\n    return ar;\n};\nvar __spread$9 = (undefined && undefined.__spread) || function () {\n    for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read$k(arguments[i]));\n    return ar;\n};\nvar __values$7 = (undefined && undefined.__values) || function(o) {\n    var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n    if (m) return m.call(o);\n    if (o && typeof o.length === \"number\") return {\n        next: function () {\n            if (o && i >= o.length) o = void 0;\n            return { value: o && o[i++], done: !o };\n        }\n    };\n    throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nvar DefaultDataPanelDef = {\n    groups: [\n        { type: 'categories', isOpen: true },\n        { type: 'series', isOpen: true },\n        { type: 'seriesChartType', isOpen: true }\n    ]\n};\nvar ChartDataPanel = /** @class */ (function (_super) {\n    __extends$1D(ChartDataPanel, _super);\n    function ChartDataPanel(chartController, chartOptionsService) {\n        var _this = _super.call(this, ChartDataPanel.TEMPLATE) || this;\n        _this.chartController = chartController;\n        _this.chartOptionsService = chartOptionsService;\n        _this.columnComps = new Map();\n        return _this;\n    }\n    ChartDataPanel.prototype.init = function () {\n        this.updatePanels();\n        this.addManagedListener(this.chartController, ChartController.EVENT_CHART_MODEL_UPDATE, this.updatePanels.bind(this));\n        this.createAutoScrollService();\n    };\n    ChartDataPanel.prototype.destroy = function () {\n        this.clearComponents();\n        _super.prototype.destroy.call(this);\n    };\n    ChartDataPanel.prototype.updatePanels = function () {\n        var _this = this;\n        var _a, _b;\n        var currentChartType = this.chartType;\n        var _c = this.chartController.getColStateForMenu(), dimensionCols = _c.dimensionCols, valueCols = _c.valueCols;\n        var colIds = dimensionCols.map(function (c) { return c.colId; }).concat(valueCols.map(function (c) { return c.colId; }));\n        this.chartType = this.chartController.getChartType();\n        var groupExpandedState = this.getGroupExpandedState();\n        if (_.areEqual(_.keys(this.columnComps), colIds) && this.chartType === currentChartType) {\n            // if possible, we just update existing components\n            __spread$9(dimensionCols, valueCols).forEach(function (col) {\n                _this.columnComps.get(col.colId).setValue(col.selected, true);\n            });\n            if (this.chartController.isActiveXYChart()) {\n                var getSeriesLabel_1 = this.generateGetSeriesLabel();\n                valueCols.forEach(function (col) {\n                    _this.columnComps.get(col.colId).setLabel(getSeriesLabel_1(col));\n                });\n            }\n            // recreate series chart type group if it exists as series may be added or removed via series group panel\n            _.removeFromParent(this.getGui().querySelector('#seriesChartTypeGroup'));\n            this.seriesChartTypeGroupComp = this.destroyBean(this.seriesChartTypeGroupComp);\n            var seriesChartTypeIndex = (_a = this.getDataPanelDef().groups) === null || _a === void 0 ? void 0 : _a.reduce(function (prevVal, _a, index) {\n                var type = _a.type;\n                if (type === 'seriesChartType') {\n                    return index;\n                }\n                return prevVal;\n            }, -1);\n            if (seriesChartTypeIndex !== -1) {\n                this.createSeriesChartTypeGroup(valueCols, seriesChartTypeIndex);\n            }\n        }\n        else {\n            // otherwise, we re-create everything\n            this.clearComponents();\n            (_b = this.getDataPanelDef().groups) === null || _b === void 0 ? void 0 : _b.forEach(function (_a) {\n                var type = _a.type;\n                if (type === 'categories') {\n                    _this.createCategoriesGroup(dimensionCols);\n                }\n                else if (type === 'series') {\n                    _this.createSeriesGroup(valueCols);\n                }\n                else if (type === 'seriesChartType') {\n                    _this.createSeriesChartTypeGroup(valueCols);\n                }\n                else {\n                    console.warn(\"AG Grid: invalid charts data panel group name supplied: '\" + type + \"'\");\n                }\n            });\n        }\n        this.restoreGroupExpandedState(groupExpandedState);\n    };\n    ChartDataPanel.prototype.getGroupExpandedState = function () {\n        var _this = this;\n        var groups = [\n            { groupType: 'categories', comp: this.categoriesGroupComp },\n            { groupType: 'series', comp: this.seriesGroupComp },\n            { groupType: 'seriesChartType', comp: this.seriesChartTypeGroupComp }\n        ];\n        return groups.map(function (_a) {\n            var _b, _c;\n            var groupType = _a.groupType, comp = _a.comp;\n            var defaultExpanded = Boolean((_c = (_b = _this.getDataPanelDef().groups) === null || _b === void 0 ? void 0 : _b.find(function (_a) {\n                var type = _a.type;\n                return type === groupType;\n            })) === null || _c === void 0 ? void 0 : _c.isOpen);\n            return !comp ? defaultExpanded : comp.isExpanded();\n        });\n    };\n    ChartDataPanel.prototype.restoreGroupExpandedState = function (groupExpandedState) {\n        [\n            this.categoriesGroupComp,\n            this.seriesGroupComp,\n            this.seriesChartTypeGroupComp\n        ].forEach(function (group, idx) {\n            if (!group) {\n                return;\n            }\n            group.toggleGroupExpand(groupExpandedState[idx]);\n        });\n    };\n    ChartDataPanel.prototype.createAutoScrollService = function () {\n        var eGui = this.getGui();\n        this.autoScrollService = new AutoScrollService({\n            scrollContainer: eGui,\n            scrollAxis: 'y',\n            getVerticalPosition: function () { return eGui.scrollTop; },\n            setVerticalPosition: function (position) { return eGui.scrollTop = position; }\n        });\n    };\n    ChartDataPanel.prototype.createComponent = function (component, id) {\n        var eDiv = document.createElement('div');\n        eDiv.id = id;\n        eDiv.className = 'ag-chart-data-section';\n        eDiv.appendChild(component.getGui());\n        return eDiv;\n    };\n    ChartDataPanel.prototype.addComponent = function (parent, component, id) {\n        var eDiv = this.createComponent(component, id);\n        parent.appendChild(eDiv);\n    };\n    ChartDataPanel.prototype.addComponentAtIndex = function (parent, component, id, index) {\n        var eDiv = this.createComponent(component, id);\n        parent.insertBefore(eDiv, parent.children[index]);\n    };\n    ChartDataPanel.prototype.addChangeListener = function (component, columnState) {\n        var _this = this;\n        this.addManagedListener(component, AgAbstractField.EVENT_CHANGED, function () {\n            columnState.selected = component.getValue();\n            _this.chartController.updateForPanelChange(columnState);\n        });\n    };\n    ChartDataPanel.prototype.createCategoriesGroup = function (columns) {\n        var _this = this;\n        this.categoriesGroupComp = this.createBean(new AgGroupComponent({\n            title: this.getCategoryGroupTitle(),\n            enabled: true,\n            suppressEnabledCheckbox: true,\n            suppressOpenCloseIcons: false,\n            cssIdentifier: 'charts-data'\n        }));\n        var inputName = \"chartDimension\" + this.getCompId();\n        columns.forEach(function (col) {\n            var comp = _this.categoriesGroupComp.createManagedBean(new AgRadioButton());\n            comp.setLabel(_.escapeString(col.displayName));\n            comp.setValue(col.selected);\n            comp.setInputName(inputName);\n            _this.addChangeListener(comp, col);\n            _this.categoriesGroupComp.addItem(comp);\n            _this.columnComps.set(col.colId, comp);\n        });\n        this.addComponent(this.getGui(), this.categoriesGroupComp, 'categoriesGroup');\n    };\n    ChartDataPanel.prototype.createSeriesGroup = function (columns) {\n        var _this = this;\n        this.seriesGroupComp = this.createManagedBean(new AgGroupComponent({\n            title: this.getSeriesGroupTitle(),\n            enabled: true,\n            suppressEnabledCheckbox: true,\n            suppressOpenCloseIcons: false,\n            cssIdentifier: 'charts-data'\n        }));\n        if (this.chartController.isActiveXYChart()) {\n            var pairedModeToggle = this.seriesGroupComp.createManagedBean(new AgToggleButton());\n            pairedModeToggle\n                .setLabel(this.chartTranslationService.translate('paired'))\n                .setLabelAlignment('left')\n                .setLabelWidth('flex')\n                .setInputWidth(45)\n                .setValue(this.chartOptionsService.getPairedMode())\n                .onValueChange(function (newValue) {\n                _this.chartOptionsService.setPairedMode(!!newValue);\n                _this.chartController.updateForGridChange();\n            });\n            this.seriesGroupComp.addItem(pairedModeToggle);\n        }\n        var getSeriesLabel = this.generateGetSeriesLabel();\n        columns.forEach(function (col) {\n            var comp = _this.seriesGroupComp.createManagedBean(new AgCheckbox());\n            comp.addCssClass('ag-data-select-checkbox');\n            var label = getSeriesLabel(col);\n            comp.setLabel(label);\n            comp.setValue(col.selected);\n            _this.addChangeListener(comp, col);\n            _this.seriesGroupComp.addItem(comp);\n            _this.columnComps.set(col.colId, comp);\n            _this.addDragHandle(comp, col);\n        });\n        var eGui = this.getGui();\n        var seriesGroupGui = this.seriesGroupComp.getGui();\n        this.addComponent(eGui, this.seriesGroupComp, 'seriesGroup');\n        var dropTarget = {\n            getIconName: function () { return DragAndDropService.ICON_MOVE; },\n            getContainer: function () { return seriesGroupGui; },\n            onDragging: function (params) { return _this.onDragging(params); },\n            onDragLeave: function () { return _this.onDragLeave(); },\n            isInterestedIn: this.isInterestedIn.bind(this),\n            targetContainsSource: true\n        };\n        this.dragAndDropService.addDropTarget(dropTarget);\n        this.addDestroyFunc(function () { return _this.dragAndDropService.removeDropTarget(dropTarget); });\n    };\n    ChartDataPanel.prototype.createSeriesChartTypeGroup = function (columns, index) {\n        var _this = this;\n        if (!this.chartController.isComboChart()) {\n            return;\n        }\n        this.seriesChartTypeGroupComp = this.createManagedBean(new AgGroupComponent({\n            title: this.chartTranslationService.translate('seriesChartType'),\n            enabled: true,\n            suppressEnabledCheckbox: true,\n            suppressOpenCloseIcons: false,\n            cssIdentifier: 'charts-data'\n        }));\n        var seriesChartTypes = this.chartController.getSeriesChartTypes();\n        columns.forEach(function (col) {\n            if (!col.selected) {\n                return;\n            }\n            var seriesChartType = seriesChartTypes.filter(function (s) { return s.colId === col.colId; })[0];\n            if (!seriesChartType) {\n                return;\n            }\n            var seriesItemGroup = _this.seriesChartTypeGroupComp.createManagedBean(new AgGroupComponent({\n                title: col.displayName,\n                enabled: true,\n                suppressEnabledCheckbox: true,\n                suppressOpenCloseIcons: true,\n                cssIdentifier: 'charts-format-sub-level'\n            }));\n            var secondaryAxisComp = _this.seriesChartTypeGroupComp\n                .createManagedBean(new AgCheckbox())\n                .setLabel(_this.chartTranslationService.translate('secondaryAxis'))\n                .setLabelWidth(\"flex\")\n                .setDisabled(['groupedColumn', 'stackedColumn', 'stackedArea'].includes(seriesChartType.chartType))\n                .setValue(!!seriesChartType.secondaryAxis)\n                .onValueChange(function (enabled) { return _this.chartController.updateSeriesChartType(col.colId, undefined, enabled); });\n            seriesItemGroup.addItem(secondaryAxisComp);\n            var translate = function (key, defaultText) {\n                return _this.chartTranslationService.translate(key, defaultText);\n            };\n            var availableChartTypes = [\n                { value: 'line', text: translate('line', 'Line') },\n                { value: 'area', text: translate('area', 'Area') },\n                { value: 'stackedArea', text: translate('stackedArea', 'StackedArea') },\n                { value: 'groupedColumn', text: translate('groupedColumn', 'Grouped Column') },\n                { value: 'stackedColumn', text: translate('stackedColumn', 'Stacked Column') },\n            ];\n            var chartTypeComp = seriesItemGroup.createManagedBean(new AgSelect());\n            chartTypeComp\n                .setLabelAlignment('left')\n                .setLabelWidth(\"flex\")\n                .addOptions(availableChartTypes)\n                .setValue(seriesChartType.chartType)\n                .onValueChange(function (chartType) { return _this.chartController.updateSeriesChartType(col.colId, chartType); });\n            seriesItemGroup.addItem(chartTypeComp);\n            _this.seriesChartTypeGroupComp.addItem(seriesItemGroup);\n        });\n        if (index === undefined) {\n            this.addComponent(this.getGui(), this.seriesChartTypeGroupComp, 'seriesChartTypeGroup');\n        }\n        else {\n            this.addComponentAtIndex(this.getGui(), this.seriesChartTypeGroupComp, 'seriesChartTypeGroup', index);\n        }\n    };\n    ChartDataPanel.prototype.addDragHandle = function (comp, col) {\n        var _this = this;\n        var eDragHandle = _.createIconNoSpan('columnDrag', this.gridOptionsService);\n        eDragHandle.classList.add('ag-drag-handle', 'ag-chart-data-column-drag-handle');\n        comp.getGui().insertAdjacentElement('beforeend', eDragHandle);\n        var dragSource = {\n            type: DragSourceType.ChartPanel,\n            eElement: eDragHandle,\n            dragItemName: col.displayName,\n            getDragItem: function () { return ({ columns: [col.column] }); },\n            onDragStopped: function () { return _this.onDragStop(); }\n        };\n        this.dragAndDropService.addDragSource(dragSource, true);\n        this.addDestroyFunc(function () { return _this.dragAndDropService.removeDragSource(dragSource); });\n    };\n    ChartDataPanel.prototype.generateGetSeriesLabel = function () {\n        if (!this.chartController.isActiveXYChart()) {\n            return function (col) { return _.escapeString(col.displayName); };\n        }\n        var isBubble = this.chartType === 'bubble';\n        var isInPairedMode = this.isInPairedMode();\n        var selectedValuesCount = 0;\n        var indexToAxisLabel = new Map();\n        indexToAxisLabel.set(0, 'X');\n        indexToAxisLabel.set(1, 'Y');\n        indexToAxisLabel.set(2, 'size');\n        return function (col) {\n            var escapedLabel = _.escapeString(col.displayName);\n            if (!col.selected) {\n                return escapedLabel;\n            }\n            var axisLabel;\n            if (isInPairedMode) {\n                axisLabel = indexToAxisLabel.get(selectedValuesCount % (isBubble ? 3 : 2));\n            }\n            else {\n                if (selectedValuesCount === 0) {\n                    axisLabel = 'X';\n                }\n                else {\n                    axisLabel = isBubble && selectedValuesCount % 2 === 0 ? 'size' : 'Y';\n                }\n            }\n            selectedValuesCount++;\n            return escapedLabel + \" (\" + axisLabel + \")\";\n        };\n    };\n    ChartDataPanel.prototype.getCategoryGroupTitle = function () {\n        return this.chartTranslationService.translate(this.chartController.isActiveXYChart() ? 'labels' : 'categories');\n    };\n    ChartDataPanel.prototype.getSeriesGroupTitle = function () {\n        return this.chartTranslationService.translate(this.chartController.isActiveXYChart() ? 'xyValues' : 'series');\n    };\n    ChartDataPanel.prototype.getDataPanelDef = function () {\n        var _a;\n        var userProvidedDataPanelDef = (_a = this.gridOptionsService.get('chartToolPanelsDef')) === null || _a === void 0 ? void 0 : _a.dataPanel;\n        return userProvidedDataPanelDef ? userProvidedDataPanelDef : DefaultDataPanelDef;\n    };\n    ChartDataPanel.prototype.isInPairedMode = function () {\n        return this.chartController.isActiveXYChart() && this.chartOptionsService.getSeriesOption('paired', 'scatter');\n    };\n    ChartDataPanel.prototype.clearComponents = function () {\n        _.clearElement(this.getGui());\n        this.categoriesGroupComp = this.destroyBean(this.categoriesGroupComp);\n        this.seriesGroupComp = this.destroyBean(this.seriesGroupComp);\n        this.seriesChartTypeGroupComp = this.destroyBean(this.seriesChartTypeGroupComp);\n        this.columnComps.clear();\n    };\n    ChartDataPanel.prototype.onDragging = function (draggingEvent) {\n        var itemHovered = this.checkHoveredItem(draggingEvent);\n        if (!itemHovered) {\n            return;\n        }\n        this.lastDraggedColumn = draggingEvent.dragItem.columns[0];\n        var comp = itemHovered.comp, position = itemHovered.position;\n        var _a = this.lastHoveredItem || {}, lastHoveredComp = _a.comp, lastHoveredPosition = _a.position;\n        if (comp === lastHoveredComp && position === lastHoveredPosition) {\n            return;\n        }\n        this.autoScrollService.check(draggingEvent.event);\n        this.clearHoveredItems();\n        this.lastHoveredItem = { comp: comp, position: position };\n        var eGui = comp.getGui();\n        eGui.classList.add('ag-list-item-hovered', \"ag-item-highlight-\" + position);\n    };\n    ChartDataPanel.prototype.checkHoveredItem = function (draggingEvent) {\n        var e_1, _a;\n        if (_.missing(draggingEvent.vDirection)) {\n            return null;\n        }\n        var mouseEvent = draggingEvent.event;\n        try {\n            for (var _b = __values$7(this.columnComps.values()), _c = _b.next(); !_c.done; _c = _b.next()) {\n                var comp = _c.value;\n                var eGui = comp.getGui();\n                if (!eGui.querySelector('.ag-chart-data-column-drag-handle')) {\n                    continue;\n                }\n                var rect = eGui.getBoundingClientRect();\n                var isOverComp = mouseEvent.clientY >= rect.top && mouseEvent.clientY <= rect.bottom;\n                if (isOverComp) {\n                    var height = eGui.clientHeight;\n                    var position = mouseEvent.clientY > rect.top + (height / 2) ? 'bottom' : 'top';\n                    return { comp: comp, position: position };\n                }\n            }\n        }\n        catch (e_1_1) { e_1 = { error: e_1_1 }; }\n        finally {\n            try {\n                if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n            }\n            finally { if (e_1) throw e_1.error; }\n        }\n        return null;\n    };\n    ChartDataPanel.prototype.onDragLeave = function () {\n        this.clearHoveredItems();\n    };\n    ChartDataPanel.prototype.onDragStop = function () {\n        var _this = this;\n        if (this.lastHoveredItem) {\n            var _a = this.chartController.getColStateForMenu(), dimensionCols = _a.dimensionCols, valueCols = _a.valueCols;\n            var draggedColumnState = __spread$9(dimensionCols, valueCols).find(function (state) { return state.column === _this.lastDraggedColumn; });\n            if (draggedColumnState) {\n                var targetIndex = Array.from(this.columnComps.values()).indexOf(this.lastHoveredItem.comp);\n                if (this.lastHoveredItem.position === 'bottom') {\n                    targetIndex++;\n                }\n                draggedColumnState.order = targetIndex;\n                this.chartController.updateForPanelChange(draggedColumnState);\n            }\n        }\n        this.clearHoveredItems();\n        this.lastDraggedColumn = undefined;\n        this.autoScrollService.ensureCleared();\n    };\n    ChartDataPanel.prototype.clearHoveredItems = function () {\n        this.columnComps.forEach(function (columnComp) {\n            columnComp.getGui().classList.remove('ag-list-item-hovered', 'ag-item-highlight-top', 'ag-item-highlight-bottom');\n        });\n        this.lastHoveredItem = undefined;\n    };\n    ChartDataPanel.prototype.isInterestedIn = function (type) {\n        return type === DragSourceType.ChartPanel;\n    };\n    ChartDataPanel.TEMPLATE = \"<div class=\\\"ag-chart-data-wrapper ag-scrollable-container\\\"></div>\";\n    __decorate$18([\n        Autowired('dragAndDropService')\n    ], ChartDataPanel.prototype, \"dragAndDropService\", void 0);\n    __decorate$18([\n        Autowired('chartTranslationService')\n    ], ChartDataPanel.prototype, \"chartTranslationService\", void 0);\n    __decorate$18([\n        PostConstruct\n    ], ChartDataPanel.prototype, \"init\", null);\n    return ChartDataPanel;\n}(Component));\n\nvar __extends$1C = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$17 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar FontPanel = /** @class */ (function (_super) {\n    __extends$1C(FontPanel, _super);\n    function FontPanel(params) {\n        var _this = _super.call(this) || this;\n        _this.activeComps = [];\n        _this.params = params;\n        return _this;\n    }\n    FontPanel.prototype.init = function () {\n        var groupParams = {\n            cssIdentifier: 'charts-format-sub-level',\n            direction: 'vertical',\n            suppressOpenCloseIcons: true\n        };\n        this.setTemplate(FontPanel.TEMPLATE, { fontGroup: groupParams });\n        this.initGroup();\n        this.initFontFamilySelect();\n        this.initFontWeightStyleSelect();\n        this.initFontSizeSelect();\n        this.initFontColorPicker();\n    };\n    FontPanel.prototype.addCompToPanel = function (comp) {\n        this.fontGroup.addItem(comp);\n        this.activeComps.push(comp);\n    };\n    FontPanel.prototype.setEnabled = function (enabled) {\n        this.fontGroup.setEnabled(enabled);\n    };\n    FontPanel.prototype.initGroup = function () {\n        var _this = this;\n        this.fontGroup\n            .setTitle(this.params.name || this.chartTranslationService.translate('font'))\n            .setEnabled(this.params.enabled)\n            .hideEnabledCheckbox(!!this.params.suppressEnabledCheckbox)\n            .hideOpenCloseIcons(true)\n            .onEnableChange(function (enabled) {\n            if (_this.params.setEnabled) {\n                _this.params.setEnabled(enabled);\n            }\n        });\n    };\n    FontPanel.prototype.initFontFamilySelect = function () {\n        var _this = this;\n        var families = [\n            'Arial, sans-serif',\n            'Aria Black, sans-serif',\n            'Book Antiqua,  serif',\n            'Charcoal, sans-serif',\n            'Comic Sans MS, cursive',\n            'Courier, monospace',\n            'Courier New, monospace',\n            'Gadget, sans-serif',\n            'Geneva, sans-serif',\n            'Helvetica, sans-serif',\n            'Impact, sans-serif',\n            'Lucida Console, monospace',\n            'Lucida Grande, sans-serif',\n            'Lucida Sans Unicode,  sans-serif',\n            'Monaco, monospace',\n            'Palatino Linotype, serif',\n            'Palatino, serif',\n            'Times New Roman, serif',\n            'Times, serif',\n            'Verdana, sans-serif'\n        ];\n        var family = this.params.initialFont.family;\n        var initialValue = families[0];\n        if (family) {\n            // check for known values using lowercase\n            var lowerCaseValues = families.map(function (f) { return f.toLowerCase(); });\n            var valueIndex = lowerCaseValues.indexOf(family.toLowerCase());\n            if (valueIndex >= 0) {\n                initialValue = families[valueIndex];\n            }\n            else {\n                // add user provided value to list\n                var capitalisedFontValue = _.capitalise(family);\n                families.push(capitalisedFontValue);\n                initialValue = capitalisedFontValue;\n            }\n        }\n        var options = families.sort().map(function (value) { return ({ value: value, text: value }); });\n        this.familySelect.addOptions(options)\n            .setInputWidth('flex')\n            .setValue(\"\" + initialValue)\n            .onValueChange(function (newValue) { return _this.params.setFont({ family: newValue }); });\n    };\n    FontPanel.prototype.initFontSizeSelect = function () {\n        var _this = this;\n        var sizes = [8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36];\n        var size = this.params.initialFont.size;\n        if (!_.includes(sizes, size)) {\n            sizes.push(size);\n        }\n        var options = sizes.sort(function (a, b) { return a - b; }).map(function (value) { return ({ value: \"\" + value, text: \"\" + value }); });\n        this.sizeSelect.addOptions(options)\n            .setInputWidth('flex')\n            .setValue(\"\" + size)\n            .onValueChange(function (newValue) { return _this.params.setFont({ size: parseInt(newValue, 10) }); });\n        this.sizeSelect.setLabel(this.chartTranslationService.translate('size'));\n    };\n    FontPanel.prototype.initFontWeightStyleSelect = function () {\n        var _this = this;\n        var _a = this.params.initialFont, _b = _a.weight, weight = _b === void 0 ? 'normal' : _b, _c = _a.style, style = _c === void 0 ? 'normal' : _c;\n        var weightStyles = [\n            { name: 'normal', weight: 'normal', style: 'normal' },\n            { name: 'bold', weight: 'bold', style: 'normal' },\n            { name: 'italic', weight: 'normal', style: 'italic' },\n            { name: 'boldItalic', weight: 'bold', style: 'italic' }\n        ];\n        var selectedOption = weightStyles.find(function (x) { return x.weight === weight && x.style === style; });\n        if (!selectedOption) {\n            selectedOption = { name: 'predefined', weight: weight, style: style };\n            weightStyles.unshift(selectedOption);\n        }\n        var options = weightStyles.map(function (ws) { return ({\n            value: ws.name,\n            text: _this.chartTranslationService.translate(ws.name),\n        }); });\n        this.weightStyleSelect.addOptions(options)\n            .setInputWidth('flex')\n            .setValue(selectedOption.name)\n            .onValueChange(function (newValue) {\n            var selectedWeightStyle = weightStyles.find(function (x) { return x.name === newValue; });\n            _this.params.setFont({ weight: selectedWeightStyle.weight, style: selectedWeightStyle.style });\n        });\n    };\n    FontPanel.prototype.initFontColorPicker = function () {\n        var _this = this;\n        this.colorPicker\n            .setLabel(this.chartTranslationService.translate('color'))\n            .setInputWidth(45)\n            .setValue(\"\" + this.params.initialFont.color)\n            .onValueChange(function (newColor) { return _this.params.setFont({ color: newColor }); });\n    };\n    FontPanel.prototype.addItemToPanel = function (item) {\n        this.fontGroup.addItem(item);\n        this.activeComps.push(item);\n    };\n    FontPanel.prototype.destroyActiveComps = function () {\n        var _this = this;\n        this.activeComps.forEach(function (comp) {\n            _.removeFromParent(comp.getGui());\n            _this.destroyBean(comp);\n        });\n    };\n    FontPanel.prototype.destroy = function () {\n        this.destroyActiveComps();\n        _super.prototype.destroy.call(this);\n    };\n    FontPanel.TEMPLATE = \"<div class=\\\"ag-font-panel\\\">\\n            <ag-group-component ref=\\\"fontGroup\\\">\\n                <ag-select ref=\\\"familySelect\\\"></ag-select>\\n                <ag-select ref=\\\"weightStyleSelect\\\"></ag-select>\\n                <div class=\\\"ag-charts-font-size-color\\\">\\n                    <ag-select ref=\\\"sizeSelect\\\"></ag-select>\\n                    <ag-color-picker ref=\\\"colorPicker\\\"></ag-color-picker>\\n                </div>\\n            </ag-group-component>\\n        </div>\";\n    __decorate$17([\n        RefSelector('fontGroup')\n    ], FontPanel.prototype, \"fontGroup\", void 0);\n    __decorate$17([\n        RefSelector('familySelect')\n    ], FontPanel.prototype, \"familySelect\", void 0);\n    __decorate$17([\n        RefSelector('weightStyleSelect')\n    ], FontPanel.prototype, \"weightStyleSelect\", void 0);\n    __decorate$17([\n        RefSelector('sizeSelect')\n    ], FontPanel.prototype, \"sizeSelect\", void 0);\n    __decorate$17([\n        RefSelector('colorPicker')\n    ], FontPanel.prototype, \"colorPicker\", void 0);\n    __decorate$17([\n        Autowired('chartTranslationService')\n    ], FontPanel.prototype, \"chartTranslationService\", void 0);\n    __decorate$17([\n        PostConstruct\n    ], FontPanel.prototype, \"init\", null);\n    return FontPanel;\n}(Component));\n\nvar __extends$1B = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$16 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar LegendPanel = /** @class */ (function (_super) {\n    __extends$1B(LegendPanel, _super);\n    function LegendPanel(_a) {\n        var chartOptionsService = _a.chartOptionsService, _b = _a.isExpandedOnInit, isExpandedOnInit = _b === void 0 ? false : _b;\n        var _this = _super.call(this) || this;\n        _this.activePanels = [];\n        _this.chartOptionsService = chartOptionsService;\n        _this.isExpandedOnInit = isExpandedOnInit;\n        return _this;\n    }\n    LegendPanel.prototype.init = function () {\n        var groupParams = {\n            cssIdentifier: 'charts-format-top-level',\n            direction: 'vertical'\n        };\n        this.setTemplate(LegendPanel.TEMPLATE, { legendGroup: groupParams });\n        this.initLegendGroup();\n        this.initLegendPosition();\n        this.initLegendPadding();\n        this.initLegendItems();\n        this.initLabelPanel();\n    };\n    LegendPanel.prototype.initLegendGroup = function () {\n        var _this = this;\n        this.legendGroup\n            .setTitle(this.chartTranslationService.translate(\"legend\"))\n            .hideEnabledCheckbox(false)\n            .setEnabled(this.chartOptionsService.getChartOption(\"legend.enabled\") || false)\n            .toggleGroupExpand(this.isExpandedOnInit)\n            .onEnableChange(function (enabled) {\n            _this.chartOptionsService.setChartOption(\"legend.enabled\", enabled);\n            _this.legendGroup.toggleGroupExpand(true);\n        });\n    };\n    LegendPanel.prototype.initLegendPosition = function () {\n        var _this = this;\n        var positions = ['top', 'right', 'bottom', 'left'];\n        this.legendPositionSelect\n            .setLabel(this.chartTranslationService.translate(\"position\"))\n            .setLabelWidth(\"flex\")\n            .setInputWidth(80)\n            .addOptions(positions.map(function (position) { return ({\n            value: position,\n            text: _this.chartTranslationService.translate(position)\n        }); }))\n            .setValue(this.chartOptionsService.getChartOption(\"legend.position\"))\n            .onValueChange(function (newValue) { return _this.chartOptionsService.setChartOption(\"legend.position\", newValue); });\n    };\n    LegendPanel.prototype.initLegendPadding = function () {\n        var _this = this;\n        var currentValue = this.chartOptionsService.getChartOption(\"legend.spacing\");\n        this.legendPaddingSlider\n            .setLabel(this.chartTranslationService.translate(\"spacing\"))\n            .setMaxValue(getMaxValue(currentValue, 200))\n            .setValue(\"\" + currentValue)\n            .setTextFieldWidth(45)\n            .onValueChange(function (newValue) { return _this.chartOptionsService.setChartOption(\"legend.spacing\", newValue); });\n    };\n    LegendPanel.prototype.initLegendItems = function () {\n        var _this = this;\n        var initSlider = function (expression, labelKey, input, defaultMaxValue) {\n            var currentValue = _this.chartOptionsService.getChartOption(\"legend.\" + expression);\n            input.setLabel(_this.chartTranslationService.translate(labelKey))\n                .setMaxValue(getMaxValue(currentValue, defaultMaxValue))\n                .setValue(\"\" + currentValue)\n                .setTextFieldWidth(45)\n                .onValueChange(function (newValue) {\n                _this.chartOptionsService.setChartOption(\"legend.\" + expression, newValue);\n            });\n        };\n        initSlider(\"item.marker.size\", \"markerSize\", this.markerSizeSlider, 40);\n        initSlider(\"item.marker.strokeWidth\", \"markerStroke\", this.markerStrokeSlider, 10);\n        initSlider(\"item.marker.padding\", \"itemSpacing\", this.markerPaddingSlider, 20);\n        initSlider(\"item.paddingX\", \"layoutHorizontalSpacing\", this.itemPaddingXSlider, 50);\n        initSlider(\"item.paddingY\", \"layoutVerticalSpacing\", this.itemPaddingYSlider, 50);\n    };\n    LegendPanel.prototype.initLabelPanel = function () {\n        var _this = this;\n        var chartProxy = this.chartOptionsService;\n        var initialFont = {\n            family: chartProxy.getChartOption(\"legend.item.label.fontFamily\"),\n            style: chartProxy.getChartOption(\"legend.item.label.fontStyle\"),\n            weight: chartProxy.getChartOption(\"legend.item.label.fontWeight\"),\n            size: chartProxy.getChartOption(\"legend.item.label.fontSize\"),\n            color: chartProxy.getChartOption(\"legend.item.label.color\")\n        };\n        var setFont = function (font) {\n            var proxy = _this.chartOptionsService;\n            if (font.family) {\n                proxy.setChartOption(\"legend.item.label.fontFamily\", font.family);\n            }\n            if (font.weight) {\n                proxy.setChartOption(\"legend.item.label.fontWeight\", font.weight);\n            }\n            if (font.style) {\n                proxy.setChartOption(\"legend.item.label.fontStyle\", font.style);\n            }\n            if (font.size) {\n                proxy.setChartOption(\"legend.item.label.fontSize\", font.size);\n            }\n            if (font.color) {\n                proxy.setChartOption(\"legend.item.label.color\", font.color);\n            }\n        };\n        var params = {\n            enabled: true,\n            suppressEnabledCheckbox: true,\n            initialFont: initialFont,\n            setFont: setFont\n        };\n        var fontPanelComp = this.createBean(new FontPanel(params));\n        this.legendGroup.addItem(fontPanelComp);\n        this.activePanels.push(fontPanelComp);\n    };\n    LegendPanel.prototype.destroyActivePanels = function () {\n        var _this = this;\n        this.activePanels.forEach(function (panel) {\n            _.removeFromParent(panel.getGui());\n            _this.destroyBean(panel);\n        });\n    };\n    LegendPanel.prototype.destroy = function () {\n        this.destroyActivePanels();\n        _super.prototype.destroy.call(this);\n    };\n    LegendPanel.TEMPLATE = \"<div>\\n            <ag-group-component ref=\\\"legendGroup\\\">\\n                <ag-select ref=\\\"legendPositionSelect\\\"></ag-select>\\n                <ag-slider ref=\\\"legendPaddingSlider\\\"></ag-slider>\\n                <ag-slider ref=\\\"markerSizeSlider\\\"></ag-slider>\\n                <ag-slider ref=\\\"markerStrokeSlider\\\"></ag-slider>\\n                <ag-slider ref=\\\"markerPaddingSlider\\\"></ag-slider>\\n                <ag-slider ref=\\\"itemPaddingXSlider\\\"></ag-slider>\\n                <ag-slider ref=\\\"itemPaddingYSlider\\\"></ag-slider>\\n            </ag-group-component>\\n        </div>\";\n    __decorate$16([\n        RefSelector('legendGroup')\n    ], LegendPanel.prototype, \"legendGroup\", void 0);\n    __decorate$16([\n        RefSelector('legendPositionSelect')\n    ], LegendPanel.prototype, \"legendPositionSelect\", void 0);\n    __decorate$16([\n        RefSelector('legendPaddingSlider')\n    ], LegendPanel.prototype, \"legendPaddingSlider\", void 0);\n    __decorate$16([\n        RefSelector('markerSizeSlider')\n    ], LegendPanel.prototype, \"markerSizeSlider\", void 0);\n    __decorate$16([\n        RefSelector('markerStrokeSlider')\n    ], LegendPanel.prototype, \"markerStrokeSlider\", void 0);\n    __decorate$16([\n        RefSelector('markerPaddingSlider')\n    ], LegendPanel.prototype, \"markerPaddingSlider\", void 0);\n    __decorate$16([\n        RefSelector('itemPaddingXSlider')\n    ], LegendPanel.prototype, \"itemPaddingXSlider\", void 0);\n    __decorate$16([\n        RefSelector('itemPaddingYSlider')\n    ], LegendPanel.prototype, \"itemPaddingYSlider\", void 0);\n    __decorate$16([\n        Autowired('chartTranslationService')\n    ], LegendPanel.prototype, \"chartTranslationService\", void 0);\n    __decorate$16([\n        PostConstruct\n    ], LegendPanel.prototype, \"init\", null);\n    return LegendPanel;\n}(Component));\n\nvar __extends$1A = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$15 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar AxisTicksPanel = /** @class */ (function (_super) {\n    __extends$1A(AxisTicksPanel, _super);\n    function AxisTicksPanel(chartOptionsService) {\n        var _this = _super.call(this) || this;\n        _this.chartOptionsService = chartOptionsService;\n        return _this;\n    }\n    AxisTicksPanel.prototype.init = function () {\n        var groupParams = {\n            cssIdentifier: 'charts-format-sub-level',\n            direction: 'vertical',\n            suppressOpenCloseIcons: true\n        };\n        this.setTemplate(AxisTicksPanel.TEMPLATE, { axisTicksGroup: groupParams });\n        this.initAxisTicks();\n    };\n    AxisTicksPanel.prototype.initAxisTicks = function () {\n        var _this = this;\n        this.axisTicksGroup\n            .setTitle(this.chartTranslationService.translate(\"ticks\"))\n            .hideOpenCloseIcons(true)\n            .hideEnabledCheckbox(true);\n        this.axisTicksColorPicker\n            .setLabel(this.chartTranslationService.translate(\"color\"))\n            .setLabelWidth(\"flex\")\n            .setInputWidth(45)\n            .setValue(this.chartOptionsService.getAxisProperty(\"tick.color\"))\n            .onValueChange(function (newColor) { return _this.chartOptionsService.setAxisProperty(\"tick.color\", newColor); });\n        var initInput = function (expression, input, label, defaultMaxValue) {\n            var currentValue = _this.chartOptionsService.getAxisProperty(expression);\n            input.setLabel(label)\n                .setMaxValue(getMaxValue(currentValue, defaultMaxValue))\n                .setValue(\"\" + currentValue)\n                .setTextFieldWidth(45)\n                .onValueChange(function (newValue) { return _this.chartOptionsService.setAxisProperty(expression, newValue); });\n        };\n        initInput(\"tick.width\", this.axisTicksWidthSlider, this.chartTranslationService.translate(\"width\"), 10);\n        initInput(\"tick.size\", this.axisTicksSizeSlider, this.chartTranslationService.translate(\"length\"), 30);\n    };\n    AxisTicksPanel.TEMPLATE = \"<div>\\n            <ag-group-component ref=\\\"axisTicksGroup\\\">\\n                <ag-color-picker ref=\\\"axisTicksColorPicker\\\"></ag-color-picker>\\n                <ag-slider ref=\\\"axisTicksWidthSlider\\\"></ag-slider>\\n                <ag-slider ref=\\\"axisTicksSizeSlider\\\"></ag-slider>\\n            </ag-group-component>\\n        </div>\";\n    __decorate$15([\n        RefSelector('axisTicksGroup')\n    ], AxisTicksPanel.prototype, \"axisTicksGroup\", void 0);\n    __decorate$15([\n        RefSelector('axisTicksColorPicker')\n    ], AxisTicksPanel.prototype, \"axisTicksColorPicker\", void 0);\n    __decorate$15([\n        RefSelector('axisTicksWidthSlider')\n    ], AxisTicksPanel.prototype, \"axisTicksWidthSlider\", void 0);\n    __decorate$15([\n        RefSelector('axisTicksSizeSlider')\n    ], AxisTicksPanel.prototype, \"axisTicksSizeSlider\", void 0);\n    __decorate$15([\n        Autowired('chartTranslationService')\n    ], AxisTicksPanel.prototype, \"chartTranslationService\", void 0);\n    __decorate$15([\n        PostConstruct\n    ], AxisTicksPanel.prototype, \"init\", null);\n    return AxisTicksPanel;\n}(Component));\n\nvar __extends$1z = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$14 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar AgAngleSelect = /** @class */ (function (_super) {\n    __extends$1z(AgAngleSelect, _super);\n    function AgAngleSelect(config) {\n        var _this = _super.call(this, config, AgAngleSelect.TEMPLATE) || this;\n        _this.radius = 0;\n        _this.offsetX = 0;\n        _this.offsetY = 0;\n        return _this;\n    }\n    AgAngleSelect.prototype.postConstruct = function () {\n        var _this = this;\n        _super.prototype.postConstruct.call(this);\n        this.dragListener = {\n            eElement: this.eParentCircle,\n            dragStartPixels: 0,\n            onDragStart: function (e) {\n                _this.parentCircleRect = _this.eParentCircle.getBoundingClientRect();\n            },\n            onDragging: function (e) { return _this.calculateAngleDrag(e); },\n            onDragStop: function () { }\n        };\n        this.dragService.addDragSource(this.dragListener);\n        this.eAngleValue\n            .setLabel('')\n            .setLabelWidth(5)\n            .setInputWidth(45)\n            .setMin(0)\n            .setMax(360)\n            .setValue(\"\" + this.degrees)\n            .onValueChange(function (value) {\n            if (value == null || value === '') {\n                value = '0';\n            }\n            value = _this.eAngleValue.normalizeValue(value);\n            var floatValue = parseFloat(value);\n            if (floatValue > 180) {\n                floatValue = floatValue - 360;\n            }\n            _this.setValue(floatValue);\n        });\n        this.updateNumberInput();\n        if (_.exists(this.getValue())) {\n            this.eAngleValue.setValue(this.normalizeNegativeValue(this.getValue()).toString());\n        }\n        this.addManagedListener(this, AgAbstractField.EVENT_CHANGED, function () {\n            var eDocument = _this.gridOptionsService.getDocument();\n            if (_this.eAngleValue.getInputElement().contains(eDocument.activeElement)) {\n                return;\n            }\n            _this.updateNumberInput();\n        });\n    };\n    AgAngleSelect.prototype.updateNumberInput = function () {\n        var normalizedValue = this.normalizeNegativeValue(this.getValue());\n        this.eAngleValue.setValue(normalizedValue.toString());\n    };\n    AgAngleSelect.prototype.positionChildCircle = function (radians) {\n        var rect = this.parentCircleRect || { width: 24, height: 24 };\n        var eChildCircle = this.eChildCircle;\n        var centerX = rect.width / 2;\n        var centerY = rect.height / 2;\n        eChildCircle.style.left = centerX + Math.cos(radians) * 8 + \"px\";\n        eChildCircle.style.top = centerY + Math.sin(radians) * 8 + \"px\";\n    };\n    AgAngleSelect.prototype.calculatePolar = function () {\n        var x = this.offsetX;\n        var y = this.offsetY;\n        var radians = Math.atan2(y, x);\n        this.degrees = this.toDegrees(radians);\n        this.radius = Math.sqrt((x * x) + (y * y));\n        this.positionChildCircle(radians);\n    };\n    AgAngleSelect.prototype.calculateCartesian = function () {\n        var radians = this.toRadians(this.getValue());\n        var radius = this.getRadius();\n        this\n            .setOffsetX(Math.cos(radians) * radius)\n            .setOffsetY(Math.sin(radians) * radius);\n    };\n    AgAngleSelect.prototype.setOffsetX = function (offset) {\n        if (this.offsetX !== offset) {\n            this.offsetX = offset;\n            this.calculatePolar();\n        }\n        return this;\n    };\n    AgAngleSelect.prototype.setOffsetY = function (offset) {\n        if (this.offsetY !== offset) {\n            this.offsetY = offset;\n            this.calculatePolar();\n        }\n        return this;\n    };\n    AgAngleSelect.prototype.calculateAngleDrag = function (e) {\n        var rect = this.parentCircleRect;\n        var centerX = rect.width / 2;\n        var centerY = rect.height / 2;\n        var x = e.clientX - rect.left;\n        var y = e.clientY - rect.top;\n        var dx = x - centerX;\n        var dy = y - centerY;\n        var radians = Math.atan2(dy, dx);\n        this.setValue(radians, true);\n    };\n    AgAngleSelect.prototype.toDegrees = function (radians) {\n        return radians / Math.PI * 180;\n    };\n    AgAngleSelect.prototype.toRadians = function (degrees) {\n        return degrees / 180 * Math.PI;\n    };\n    AgAngleSelect.prototype.normalizeNegativeValue = function (degrees) {\n        return degrees < 0 ? 360 + degrees : degrees;\n    };\n    AgAngleSelect.prototype.normalizeAngle180 = function (radians) {\n        radians %= Math.PI * 2;\n        if (radians < -Math.PI) {\n            radians += Math.PI * 2;\n        }\n        else if (radians >= Math.PI) {\n            radians -= Math.PI * 2;\n        }\n        return radians;\n    };\n    AgAngleSelect.prototype.getRadius = function () {\n        return this.radius;\n    };\n    AgAngleSelect.prototype.setRadius = function (r) {\n        if (this.radius === r) {\n            return this;\n        }\n        this.radius = r;\n        this.calculateCartesian();\n        return this;\n    };\n    AgAngleSelect.prototype.onValueChange = function (callbackFn) {\n        var _this = this;\n        this.addManagedListener(this, AgAbstractField.EVENT_CHANGED, function () {\n            callbackFn(_this.degrees);\n        });\n        return this;\n    };\n    AgAngleSelect.prototype.getValue = function (radians) {\n        return radians ? this.toRadians(this.degrees) : this.degrees;\n    };\n    AgAngleSelect.prototype.setValue = function (degrees, radians) {\n        var radiansValue;\n        if (!radians) {\n            radiansValue = this.normalizeAngle180(this.toRadians(degrees));\n        }\n        else {\n            radiansValue = degrees;\n        }\n        degrees = this.toDegrees(radiansValue);\n        if (this.degrees !== degrees) {\n            this.degrees = Math.floor(degrees);\n            this.calculateCartesian();\n            this.positionChildCircle(radiansValue);\n            this.dispatchEvent({ type: AgAbstractField.EVENT_CHANGED });\n        }\n        return this;\n    };\n    AgAngleSelect.prototype.setWidth = function (width) {\n        _.setFixedWidth(this.getGui(), width);\n        return this;\n    };\n    AgAngleSelect.prototype.setDisabled = function (disabled) {\n        _super.prototype.setDisabled.call(this, disabled);\n        this.eAngleValue.setDisabled(disabled);\n        return this;\n    };\n    AgAngleSelect.prototype.destroy = function () {\n        this.dragService.removeDragSource(this.dragListener);\n        _super.prototype.destroy.call(this);\n    };\n    AgAngleSelect.TEMPLATE = \"<div class=\\\"ag-angle-select\\\">\\n            <div ref=\\\"eLabel\\\"></div>\\n            <div class=\\\"ag-wrapper ag-angle-select-wrapper\\\">\\n                <div ref=\\\"eAngleSelectField\\\" class=\\\"ag-angle-select-field\\\">\\n                    <div ref=\\\"eParentCircle\\\" class=\\\"ag-angle-select-parent-circle\\\">\\n                        <div ref=\\\"eChildCircle\\\" class=\\\"ag-angle-select-child-circle\\\"></div>\\n                    </div>\\n                </div>\\n                <ag-input-number-field ref=\\\"eAngleValue\\\"></ag-input-number-field>\\n            </div>\\n        </div>\";\n    __decorate$14([\n        RefSelector('eLabel')\n    ], AgAngleSelect.prototype, \"eLabel\", void 0);\n    __decorate$14([\n        RefSelector('eParentCircle')\n    ], AgAngleSelect.prototype, \"eParentCircle\", void 0);\n    __decorate$14([\n        RefSelector('eChildCircle')\n    ], AgAngleSelect.prototype, \"eChildCircle\", void 0);\n    __decorate$14([\n        RefSelector('eAngleValue')\n    ], AgAngleSelect.prototype, \"eAngleValue\", void 0);\n    __decorate$14([\n        Autowired('dragService')\n    ], AgAngleSelect.prototype, \"dragService\", void 0);\n    return AgAngleSelect;\n}(AgAbstractLabel));\n\nvar __extends$1y = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$13 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar AxisPanel = /** @class */ (function (_super) {\n    __extends$1y(AxisPanel, _super);\n    function AxisPanel(_a) {\n        var chartController = _a.chartController, chartOptionsService = _a.chartOptionsService, _b = _a.isExpandedOnInit, isExpandedOnInit = _b === void 0 ? false : _b;\n        var _this = _super.call(this) || this;\n        _this.activePanels = [];\n        _this.axisLabelUpdateFuncs = [];\n        _this.prevXRotation = 0;\n        _this.prevYRotation = 0;\n        _this.chartController = chartController;\n        _this.chartOptionsService = chartOptionsService;\n        _this.isExpandedOnInit = isExpandedOnInit;\n        return _this;\n    }\n    AxisPanel.prototype.init = function () {\n        var _this = this;\n        var groupParams = {\n            cssIdentifier: 'charts-format-top-level',\n            direction: 'vertical'\n        };\n        this.setTemplate(AxisPanel.TEMPLATE, { axisGroup: groupParams });\n        this.initAxis();\n        this.initAxisTicks();\n        this.initAxisLabels();\n        var updateAxisLabelRotations = function () { return _this.axisLabelUpdateFuncs.forEach(function (func) { return func(); }); };\n        this.addManagedListener(this.chartController, ChartController.EVENT_CHART_UPDATED, updateAxisLabelRotations);\n    };\n    AxisPanel.prototype.initAxis = function () {\n        var _this = this;\n        this.axisGroup\n            .setTitle(this.translate(\"axis\"))\n            .toggleGroupExpand(this.isExpandedOnInit)\n            .hideEnabledCheckbox(true);\n        this.axisColorInput\n            .setLabel(this.translate(\"color\"))\n            .setLabelWidth(\"flex\")\n            .setInputWidth(45)\n            .setValue(this.chartOptionsService.getAxisProperty(\"line.color\"))\n            .onValueChange(function (newColor) { return _this.chartOptionsService.setAxisProperty(\"line.color\", newColor); });\n        var currentValue = this.chartOptionsService.getAxisProperty(\"line.width\");\n        this.axisLineWidthSlider\n            .setMaxValue(getMaxValue(currentValue, 10))\n            .setLabel(this.translate(\"thickness\"))\n            .setTextFieldWidth(45)\n            .setValue(\"\" + currentValue)\n            .onValueChange(function (newValue) { return _this.chartOptionsService.setAxisProperty(\"line.width\", newValue); });\n    };\n    AxisPanel.prototype.initAxisTicks = function () {\n        var axisTicksComp = this.createBean(new AxisTicksPanel(this.chartOptionsService));\n        this.axisGroup.addItem(axisTicksComp);\n        this.activePanels.push(axisTicksComp);\n    };\n    AxisPanel.prototype.initAxisLabels = function () {\n        var _this = this;\n        var initialFont = {\n            family: this.chartOptionsService.getAxisProperty(\"label.fontFamily\"),\n            style: this.chartOptionsService.getAxisProperty(\"label.fontStyle\"),\n            weight: this.chartOptionsService.getAxisProperty(\"label.fontWeight\"),\n            size: this.chartOptionsService.getAxisProperty(\"label.fontSize\"),\n            color: this.chartOptionsService.getAxisProperty(\"label.color\")\n        };\n        var setFont = function (font) {\n            if (font.family) {\n                _this.chartOptionsService.setAxisProperty(\"label.fontFamily\", font.family);\n            }\n            if (font.weight) {\n                _this.chartOptionsService.setAxisProperty(\"label.fontWeight\", font.weight);\n            }\n            if (font.style) {\n                _this.chartOptionsService.setAxisProperty(\"label.fontStyle\", font.style);\n            }\n            if (font.size) {\n                _this.chartOptionsService.setAxisProperty(\"label.fontSize\", font.size);\n            }\n            if (font.color) {\n                _this.chartOptionsService.setAxisProperty(\"label.color\", font.color);\n            }\n        };\n        var params = {\n            name: this.translate(\"labels\"),\n            enabled: true,\n            suppressEnabledCheckbox: true,\n            initialFont: initialFont,\n            setFont: setFont\n        };\n        var labelPanelComp = this.createBean(new FontPanel(params));\n        this.axisGroup.addItem(labelPanelComp);\n        this.activePanels.push(labelPanelComp);\n        this.addAdditionalLabelComps(labelPanelComp);\n    };\n    AxisPanel.prototype.addAdditionalLabelComps = function (labelPanelComp) {\n        this.addLabelPadding(labelPanelComp);\n        var _a = this.createRotationWidgets(), xRotationComp = _a.xRotationComp, yRotationComp = _a.yRotationComp;\n        var autoRotateCb = this.initLabelRotations(xRotationComp, yRotationComp);\n        labelPanelComp.addCompToPanel(autoRotateCb);\n        labelPanelComp.addCompToPanel(xRotationComp);\n        labelPanelComp.addCompToPanel(yRotationComp);\n    };\n    AxisPanel.prototype.initLabelRotations = function (xRotationComp, yRotationComp) {\n        var _this = this;\n        var getLabelRotation = function (axisType) {\n            return _this.chartOptionsService.getLabelRotation(axisType);\n        };\n        var setLabelRotation = function (axisType, value) {\n            _this.chartOptionsService.setLabelRotation(axisType, value);\n        };\n        var updateAutoRotate = function (autoRotate) {\n            _this.chartOptionsService.setAxisProperty(\"label.autoRotate\", autoRotate);\n            if (autoRotate) {\n                // store prev rotations before we remove them from the options\n                _this.prevXRotation = getLabelRotation(\"xAxis\");\n                _this.prevYRotation = getLabelRotation(\"yAxis\");\n                // `autoRotate` is only\n                setLabelRotation(\"xAxis\", undefined);\n                setLabelRotation(\"yAxis\", undefined);\n            }\n            else {\n                // reinstate prev rotations\n                setLabelRotation(\"xAxis\", _this.prevXRotation);\n                setLabelRotation(\"yAxis\", _this.prevYRotation);\n            }\n            xRotationComp.setDisabled(autoRotate);\n            yRotationComp.setDisabled(autoRotate);\n        };\n        var getAutoRotateValue = function () {\n            var xRotation = getLabelRotation(\"xAxis\");\n            var yRotation = getLabelRotation(\"yAxis\");\n            if (xRotation == undefined && yRotation == undefined) {\n                return _this.chartOptionsService.getAxisProperty(\"label.autoRotate\");\n            }\n            return false;\n        };\n        var autoRotate = getAutoRotateValue();\n        var autoRotateCheckbox = this.createBean(new AgCheckbox())\n            .setLabel(this.translate('autoRotate'))\n            .setValue(autoRotate)\n            .onValueChange(updateAutoRotate);\n        // init rotation comp state\n        xRotationComp.setDisabled(autoRotate);\n        yRotationComp.setDisabled(autoRotate);\n        return autoRotateCheckbox;\n    };\n    AxisPanel.prototype.createRotationWidgets = function () {\n        var _this = this;\n        var degreesSymbol = String.fromCharCode(176);\n        var createRotationComp = function (labelKey, axisType) {\n            var label = _this.chartTranslationService.translate(labelKey) + \" \" + degreesSymbol;\n            var value = _this.chartOptionsService.getLabelRotation(axisType);\n            var angleSelect = new AgAngleSelect()\n                .setLabel(label)\n                .setLabelWidth(\"flex\")\n                .setValue(value || 0)\n                .onValueChange(function (newValue) { return _this.chartOptionsService.setLabelRotation(axisType, newValue); });\n            // the axis label rotation needs to be updated when the default category changes in the data panel\n            _this.axisLabelUpdateFuncs.push(function () {\n                var value = _this.chartOptionsService.getLabelRotation(axisType);\n                angleSelect.setValue(value || 0);\n            });\n            return _this.createBean(angleSelect);\n        };\n        return {\n            xRotationComp: createRotationComp(\"xRotation\", \"xAxis\"),\n            yRotationComp: createRotationComp(\"yRotation\", \"yAxis\")\n        };\n    };\n    AxisPanel.prototype.addLabelPadding = function (labelPanelComp) {\n        var _this = this;\n        var labelPaddingSlider = this.createBean(new AgSlider());\n        var currentValue = this.chartOptionsService.getAxisProperty(\"label.padding\");\n        labelPaddingSlider.setLabel(this.chartTranslationService.translate(\"padding\"))\n            .setMaxValue(getMaxValue(currentValue, 30))\n            .setValue(\"\" + currentValue)\n            .setTextFieldWidth(45)\n            .onValueChange(function (newValue) { return _this.chartOptionsService.setAxisProperty(\"label.padding\", newValue); });\n        labelPanelComp.addCompToPanel(labelPaddingSlider);\n    };\n    AxisPanel.prototype.translate = function (key, defaultText) {\n        return this.chartTranslationService.translate(key, defaultText);\n    };\n    AxisPanel.prototype.destroyActivePanels = function () {\n        var _this = this;\n        this.activePanels.forEach(function (panel) {\n            _.removeFromParent(panel.getGui());\n            _this.destroyBean(panel);\n        });\n    };\n    AxisPanel.prototype.destroy = function () {\n        this.destroyActivePanels();\n        _super.prototype.destroy.call(this);\n    };\n    AxisPanel.TEMPLATE = \"<div>\\n            <ag-group-component ref=\\\"axisGroup\\\">\\n                <ag-color-picker ref=\\\"axisColorInput\\\"></ag-color-picker>\\n                <ag-slider ref=\\\"axisLineWidthSlider\\\"></ag-slider>\\n            </ag-group-component>\\n        </div>\";\n    __decorate$13([\n        RefSelector('axisGroup')\n    ], AxisPanel.prototype, \"axisGroup\", void 0);\n    __decorate$13([\n        RefSelector('axisColorInput')\n    ], AxisPanel.prototype, \"axisColorInput\", void 0);\n    __decorate$13([\n        RefSelector('axisLineWidthSlider')\n    ], AxisPanel.prototype, \"axisLineWidthSlider\", void 0);\n    __decorate$13([\n        Autowired('chartTranslationService')\n    ], AxisPanel.prototype, \"chartTranslationService\", void 0);\n    __decorate$13([\n        PostConstruct\n    ], AxisPanel.prototype, \"init\", null);\n    return AxisPanel;\n}(Component));\n\nvar __extends$1x = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$12 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar NavigatorPanel = /** @class */ (function (_super) {\n    __extends$1x(NavigatorPanel, _super);\n    function NavigatorPanel(_a) {\n        var chartOptionsService = _a.chartOptionsService, _b = _a.isExpandedOnInit, isExpandedOnInit = _b === void 0 ? false : _b;\n        var _this = _super.call(this) || this;\n        _this.chartOptionsService = chartOptionsService;\n        _this.isExpandedOnInit = isExpandedOnInit;\n        return _this;\n    }\n    NavigatorPanel.prototype.init = function () {\n        var groupParams = {\n            cssIdentifier: 'charts-format-top-level',\n            direction: 'vertical'\n        };\n        this.setTemplate(NavigatorPanel.TEMPLATE, { navigatorGroup: groupParams });\n        this.initNavigator();\n    };\n    NavigatorPanel.prototype.initNavigator = function () {\n        var _this = this;\n        var chartTranslationService = this.chartTranslationService;\n        this.navigatorGroup\n            .setTitle(chartTranslationService.translate(\"navigator\"))\n            .hideEnabledCheckbox(false)\n            .setEnabled(this.chartOptionsService.getChartOption(\"navigator.enabled\") || false)\n            .onEnableChange(function (enabled) {\n            _this.chartOptionsService.setChartOption(\"navigator.enabled\", enabled);\n            _this.navigatorGroup.toggleGroupExpand(true);\n        })\n            .toggleGroupExpand(this.isExpandedOnInit);\n        var currentValue = this.chartOptionsService.getChartOption(\"navigator.height\");\n        this.navigatorHeightSlider\n            .setLabel(chartTranslationService.translate(\"height\"))\n            .setMinValue(10)\n            .setMaxValue(getMaxValue(currentValue, 60))\n            .setTextFieldWidth(45)\n            .setValue(\"\" + (currentValue || 30))\n            .onValueChange(function (height) { return _this.chartOptionsService.setChartOption(\"navigator.height\", height); });\n    };\n    NavigatorPanel.prototype.destroy = function () {\n        _super.prototype.destroy.call(this);\n    };\n    NavigatorPanel.TEMPLATE = \"<div>\\n            <ag-group-component ref=\\\"navigatorGroup\\\">\\n                <ag-slider ref=\\\"navigatorHeightSlider\\\"></ag-slider>\\n            </ag-group-component>\\n        </div>\";\n    __decorate$12([\n        RefSelector('navigatorGroup')\n    ], NavigatorPanel.prototype, \"navigatorGroup\", void 0);\n    __decorate$12([\n        RefSelector('navigatorHeightSlider')\n    ], NavigatorPanel.prototype, \"navigatorHeightSlider\", void 0);\n    __decorate$12([\n        Autowired('chartTranslationService')\n    ], NavigatorPanel.prototype, \"chartTranslationService\", void 0);\n    __decorate$12([\n        PostConstruct\n    ], NavigatorPanel.prototype, \"init\", null);\n    return NavigatorPanel;\n}(Component));\n\nvar __extends$1w = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$11 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar PaddingPanel = /** @class */ (function (_super) {\n    __extends$1w(PaddingPanel, _super);\n    function PaddingPanel(chartOptionsService, chartController) {\n        var _this = _super.call(this) || this;\n        _this.chartOptionsService = chartOptionsService;\n        _this.chartController = chartController;\n        return _this;\n    }\n    PaddingPanel.prototype.init = function () {\n        var _this = this;\n        var groupParams = {\n            cssIdentifier: 'charts-format-sub-level',\n            direction: 'vertical',\n            suppressOpenCloseIcons: true\n        };\n        this.setTemplate(PaddingPanel.TEMPLATE, { chartPaddingGroup: groupParams });\n        this.addManagedListener(this.eventService, Events.EVENT_CHART_OPTIONS_CHANGED, function (e) {\n            _this.updateTopPadding(e.chartOptions);\n        });\n        this.initGroup();\n        this.initChartPaddingItems();\n    };\n    PaddingPanel.prototype.initGroup = function () {\n        this.chartPaddingGroup\n            .setTitle(this.chartTranslationService.translate(\"padding\"))\n            .hideOpenCloseIcons(true)\n            .hideEnabledCheckbox(true);\n    };\n    PaddingPanel.prototype.initChartPaddingItems = function () {\n        var _this = this;\n        var initInput = function (property, input) {\n            var currentValue = _this.chartOptionsService.getChartOption('padding.' + property);\n            input.setLabel(_this.chartTranslationService.translate(property))\n                .setMaxValue(getMaxValue(currentValue, 200))\n                .setValue(\"\" + currentValue)\n                .setTextFieldWidth(45)\n                .onValueChange(function (newValue) { return _this.chartOptionsService.setChartOption('padding.' + property, newValue); });\n        };\n        initInput('top', this.paddingTopSlider);\n        initInput('right', this.paddingRightSlider);\n        initInput('bottom', this.paddingBottomSlider);\n        initInput('left', this.paddingLeftSlider);\n    };\n    PaddingPanel.prototype.updateTopPadding = function (chartOptions) {\n        var _a, _b;\n        // keep 'top' padding in sync with chart as toggling chart title on / off change the 'top' padding\n        var seriesType = this.chartController.getChartSeriesTypes()[0];\n        var topPadding = (_b = (_a = chartOptions[seriesType]) === null || _a === void 0 ? void 0 : _a.padding) === null || _b === void 0 ? void 0 : _b.top;\n        if (topPadding != null) {\n            this.paddingTopSlider.setValue(topPadding);\n        }\n    };\n    PaddingPanel.TEMPLATE = \"<div>\\n            <ag-group-component ref=\\\"chartPaddingGroup\\\">\\n                <ag-slider ref=\\\"paddingTopSlider\\\"></ag-slider>\\n                <ag-slider ref=\\\"paddingRightSlider\\\"></ag-slider>\\n                <ag-slider ref=\\\"paddingBottomSlider\\\"></ag-slider>\\n                <ag-slider ref=\\\"paddingLeftSlider\\\"></ag-slider>\\n            </ag-group-component>\\n        <div>\";\n    __decorate$11([\n        RefSelector('chartPaddingGroup')\n    ], PaddingPanel.prototype, \"chartPaddingGroup\", void 0);\n    __decorate$11([\n        RefSelector('paddingTopSlider')\n    ], PaddingPanel.prototype, \"paddingTopSlider\", void 0);\n    __decorate$11([\n        RefSelector('paddingRightSlider')\n    ], PaddingPanel.prototype, \"paddingRightSlider\", void 0);\n    __decorate$11([\n        RefSelector('paddingBottomSlider')\n    ], PaddingPanel.prototype, \"paddingBottomSlider\", void 0);\n    __decorate$11([\n        RefSelector('paddingLeftSlider')\n    ], PaddingPanel.prototype, \"paddingLeftSlider\", void 0);\n    __decorate$11([\n        Autowired('chartTranslationService')\n    ], PaddingPanel.prototype, \"chartTranslationService\", void 0);\n    __decorate$11([\n        PostConstruct\n    ], PaddingPanel.prototype, \"init\", null);\n    return PaddingPanel;\n}(Component));\n\nvar __extends$1v = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$10 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar BackgroundPanel = /** @class */ (function (_super) {\n    __extends$1v(BackgroundPanel, _super);\n    function BackgroundPanel(chartOptionsService) {\n        var _this = _super.call(this) || this;\n        _this.chartOptionsService = chartOptionsService;\n        return _this;\n    }\n    BackgroundPanel.prototype.init = function () {\n        var groupParams = {\n            cssIdentifier: 'charts-format-sub-level',\n            direction: 'vertical',\n            suppressOpenCloseIcons: true\n        };\n        this.setTemplate(BackgroundPanel.TEMPLATE, { chartBackgroundGroup: groupParams });\n        this.initGroup();\n        this.initColorPicker();\n    };\n    BackgroundPanel.prototype.initGroup = function () {\n        var _this = this;\n        this.group\n            .setTitle(this.chartTranslationService.translate('background'))\n            .setEnabled(this.chartOptionsService.getChartOption('background.visible'))\n            .hideOpenCloseIcons(true)\n            .hideEnabledCheckbox(false)\n            .onEnableChange(function (enabled) { return _this.chartOptionsService.setChartOption('background.visible', enabled); });\n    };\n    BackgroundPanel.prototype.initColorPicker = function () {\n        var _this = this;\n        this.colorPicker\n            .setLabel(this.chartTranslationService.translate('color'))\n            .setLabelWidth('flex')\n            .setInputWidth(45)\n            .setValue(this.chartOptionsService.getChartOption('background.fill'))\n            .onValueChange(function (newColor) { return _this.chartOptionsService.setChartOption('background.fill', newColor); });\n    };\n    BackgroundPanel.TEMPLATE = \"<div>\\n            <ag-group-component ref=\\\"chartBackgroundGroup\\\">\\n                <ag-color-picker ref=\\\"colorPicker\\\"></ag-color-picker>\\n            </ag-group-component>\\n        <div>\";\n    __decorate$10([\n        RefSelector('chartBackgroundGroup')\n    ], BackgroundPanel.prototype, \"group\", void 0);\n    __decorate$10([\n        RefSelector('colorPicker')\n    ], BackgroundPanel.prototype, \"colorPicker\", void 0);\n    __decorate$10([\n        Autowired('chartTranslationService')\n    ], BackgroundPanel.prototype, \"chartTranslationService\", void 0);\n    __decorate$10([\n        PostConstruct\n    ], BackgroundPanel.prototype, \"init\", null);\n    return BackgroundPanel;\n}(Component));\n\nvar __extends$1u = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$$ = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar TitlePanel = /** @class */ (function (_super) {\n    __extends$1u(TitlePanel, _super);\n    function TitlePanel(chartOptionsService) {\n        var _this = _super.call(this, TitlePanel.TEMPLATE) || this;\n        _this.chartOptionsService = chartOptionsService;\n        _this.activePanels = [];\n        return _this;\n    }\n    TitlePanel.prototype.init = function () {\n        this.initFontPanel();\n        this.titlePlaceholder = this.chartTranslationService.translate('titlePlaceholder');\n    };\n    TitlePanel.prototype.hasTitle = function () {\n        var title = this.getOption('title');\n        return title && title.enabled && title.text && title.text.length > 0;\n    };\n    TitlePanel.prototype.initFontPanel = function () {\n        var _this = this;\n        var hasTitle = this.hasTitle();\n        var setFont = function (font, isSilent) {\n            if (font.family) {\n                _this.setOption('title.fontFamily', font.family, isSilent);\n            }\n            if (font.weight) {\n                _this.setOption('title.fontWeight', font.weight, isSilent);\n            }\n            if (font.style) {\n                _this.setOption('title.fontStyle', font.style, isSilent);\n            }\n            if (font.size) {\n                _this.setOption('title.fontSize', font.size, isSilent);\n            }\n            if (font.color) {\n                _this.setOption('title.color', font.color, isSilent);\n            }\n        };\n        var initialFont = {\n            family: this.getOption('title.fontFamily'),\n            style: this.getOption('title.fontStyle'),\n            weight: this.getOption('title.fontWeight'),\n            size: this.getOption('title.fontSize'),\n            color: this.getOption('title.color')\n        };\n        if (!hasTitle) {\n            setFont(initialFont, true);\n        }\n        var fontPanelParams = {\n            name: this.chartTranslationService.translate('title'),\n            enabled: hasTitle,\n            suppressEnabledCheckbox: false,\n            initialFont: initialFont,\n            setFont: setFont,\n            setEnabled: function (enabled) {\n                if (_this.toolbarExists()) {\n                    // extra padding is only included when the toolbar is present\n                    var topPadding = _this.getOption('padding.top');\n                    _this.setOption('padding.top', enabled ? topPadding - 20 : topPadding + 20);\n                }\n                _this.setOption('title.enabled', enabled);\n                var currentTitleText = _this.getOption('title.text');\n                var replaceableTitleText = currentTitleText === 'Title' || (currentTitleText === null || currentTitleText === void 0 ? void 0 : currentTitleText.trim().length) === 0;\n                if (enabled && replaceableTitleText) {\n                    _this.setOption('title.text', _this.titlePlaceholder);\n                }\n            }\n        };\n        var fontPanelComp = this.createBean(new FontPanel(fontPanelParams));\n        // add the title spacing slider to font panel\n        fontPanelComp.addItemToPanel(this.createSpacingSlicer());\n        this.getGui().appendChild(fontPanelComp.getGui());\n        this.activePanels.push(fontPanelComp);\n        // edits to the title can disable it, so keep the checkbox in sync:\n        this.addManagedListener(this.eventService, 'chartTitleEdit', function () {\n            fontPanelComp.setEnabled(_this.hasTitle());\n        });\n    };\n    TitlePanel.prototype.createSpacingSlicer = function () {\n        var _this = this;\n        var spacingSlider = this.createBean(new AgSlider());\n        var currentValue = this.chartOptionsService.getChartOption('title.spacing');\n        spacingSlider.setLabel(this.chartTranslationService.translate('spacing'))\n            .setMaxValue(Math.max(currentValue, 100))\n            .setValue(\"\" + currentValue)\n            .setTextFieldWidth(45)\n            .onValueChange(function (newValue) { return _this.chartOptionsService.setChartOption('title.spacing', newValue); });\n        return spacingSlider;\n    };\n    TitlePanel.prototype.toolbarExists = function () {\n        var toolbarItemsFunc = this.gridOptionsService.getCallback('getChartToolbarItems');\n        if (!toolbarItemsFunc) {\n            return true;\n        }\n        var params = {\n            defaultItems: ['chartUnlink', 'chartDownload']\n        };\n        var topItems = ['chartLink', 'chartUnlink', 'chartDownload'];\n        return topItems.some(function (v) { var _a; return (_a = (toolbarItemsFunc && toolbarItemsFunc(params))) === null || _a === void 0 ? void 0 : _a.includes(v); });\n    };\n    TitlePanel.prototype.getOption = function (expression) {\n        return this.chartOptionsService.getChartOption(expression);\n    };\n    TitlePanel.prototype.setOption = function (property, value, isSilent) {\n        this.chartOptionsService.setChartOption(property, value, isSilent);\n    };\n    TitlePanel.prototype.destroyActivePanels = function () {\n        var _this = this;\n        this.activePanels.forEach(function (panel) {\n            _.removeFromParent(panel.getGui());\n            _this.destroyBean(panel);\n        });\n    };\n    TitlePanel.prototype.destroy = function () {\n        this.destroyActivePanels();\n        _super.prototype.destroy.call(this);\n    };\n    TitlePanel.TEMPLATE = \"<div></div>\";\n    __decorate$$([\n        Autowired('chartTranslationService')\n    ], TitlePanel.prototype, \"chartTranslationService\", void 0);\n    __decorate$$([\n        PostConstruct\n    ], TitlePanel.prototype, \"init\", null);\n    return TitlePanel;\n}(Component));\n\nvar __extends$1t = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$_ = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar ChartPanel = /** @class */ (function (_super) {\n    __extends$1t(ChartPanel, _super);\n    function ChartPanel(_a) {\n        var chartController = _a.chartController, chartOptionsService = _a.chartOptionsService, _b = _a.isExpandedOnInit, isExpandedOnInit = _b === void 0 ? false : _b;\n        var _this = _super.call(this) || this;\n        _this.activePanels = [];\n        _this.chartController = chartController;\n        _this.chartOptionsService = chartOptionsService;\n        _this.isExpandedOnInit = isExpandedOnInit;\n        return _this;\n    }\n    ChartPanel.prototype.init = function () {\n        var groupParams = {\n            cssIdentifier: 'charts-format-top-level',\n            direction: 'vertical'\n        };\n        this.setTemplate(ChartPanel.TEMPLATE, { chartGroup: groupParams });\n        this.initGroup();\n        this.initTitles();\n        this.initPaddingPanel();\n        this.initBackgroundPanel();\n    };\n    ChartPanel.prototype.initGroup = function () {\n        this.chartGroup\n            .setTitle(this.chartTranslationService.translate('chart'))\n            .toggleGroupExpand(this.isExpandedOnInit)\n            .hideEnabledCheckbox(true);\n    };\n    ChartPanel.prototype.initTitles = function () {\n        var titlePanelComp = this.createBean(new TitlePanel(this.chartOptionsService));\n        this.chartGroup.addItem(titlePanelComp);\n        this.activePanels.push(titlePanelComp);\n    };\n    ChartPanel.prototype.initPaddingPanel = function () {\n        var paddingPanelComp = this.createBean(new PaddingPanel(this.chartOptionsService, this.chartController));\n        this.chartGroup.addItem(paddingPanelComp);\n        this.activePanels.push(paddingPanelComp);\n    };\n    ChartPanel.prototype.initBackgroundPanel = function () {\n        var backgroundPanelComp = this.createBean(new BackgroundPanel(this.chartOptionsService));\n        this.chartGroup.addItem(backgroundPanelComp);\n        this.activePanels.push(backgroundPanelComp);\n    };\n    ChartPanel.prototype.destroyActivePanels = function () {\n        var _this = this;\n        this.activePanels.forEach(function (panel) {\n            _.removeFromParent(panel.getGui());\n            _this.destroyBean(panel);\n        });\n    };\n    ChartPanel.prototype.destroy = function () {\n        this.destroyActivePanels();\n        _super.prototype.destroy.call(this);\n    };\n    ChartPanel.TEMPLATE = \"<div>\\n            <ag-group-component ref=\\\"chartGroup\\\"></ag-group-component>\\n        </div>\";\n    __decorate$_([\n        RefSelector('chartGroup')\n    ], ChartPanel.prototype, \"chartGroup\", void 0);\n    __decorate$_([\n        Autowired('chartTranslationService')\n    ], ChartPanel.prototype, \"chartTranslationService\", void 0);\n    __decorate$_([\n        PostConstruct\n    ], ChartPanel.prototype, \"init\", null);\n    return ChartPanel;\n}(Component));\n\nvar __extends$1s = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$Z = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar ShadowPanel = /** @class */ (function (_super) {\n    __extends$1s(ShadowPanel, _super);\n    function ShadowPanel(chartOptionsService, getSelectedSeries) {\n        var _this = _super.call(this) || this;\n        _this.chartOptionsService = chartOptionsService;\n        _this.getSelectedSeries = getSelectedSeries;\n        return _this;\n    }\n    ShadowPanel.prototype.init = function () {\n        var groupParams = {\n            cssIdentifier: 'charts-format-sub-level',\n            direction: 'vertical',\n            suppressOpenCloseIcons: true\n        };\n        this.setTemplate(ShadowPanel.TEMPLATE, { shadowGroup: groupParams });\n        this.shadowBlurSlider.setTextFieldWidth(45);\n        this.shadowXOffsetSlider.setTextFieldWidth(45);\n        this.shadowYOffsetSlider.setTextFieldWidth(45);\n        this.initSeriesShadow();\n    };\n    ShadowPanel.prototype.initSeriesShadow = function () {\n        var _this = this;\n        this.shadowGroup\n            .setTitle(this.chartTranslationService.translate(\"shadow\"))\n            .setEnabled(this.chartOptionsService.getSeriesOption(\"shadow.enabled\", this.getSelectedSeries()))\n            .hideOpenCloseIcons(true)\n            .hideEnabledCheckbox(false)\n            .onEnableChange(function (newValue) { return _this.chartOptionsService.setSeriesOption(\"shadow.enabled\", newValue, _this.getSelectedSeries()); });\n        this.shadowColorPicker\n            .setLabel(this.chartTranslationService.translate(\"color\"))\n            .setLabelWidth(\"flex\")\n            .setInputWidth(45)\n            .setValue(this.chartOptionsService.getSeriesOption(\"shadow.color\", this.getSelectedSeries()))\n            .onValueChange(function (newValue) { return _this.chartOptionsService.setSeriesOption(\"shadow.color\", newValue, _this.getSelectedSeries()); });\n        var initInput = function (input, property, minValue, defaultMaxValue) {\n            var currentValue = _this.chartOptionsService.getSeriesOption(\"shadow.\" + property, _this.getSelectedSeries());\n            input.setLabel(_this.chartTranslationService.translate(property))\n                .setMinValue(minValue)\n                .setMaxValue(getMaxValue(currentValue, defaultMaxValue))\n                .setValue(\"\" + currentValue)\n                .onValueChange(function (newValue) { return _this.chartOptionsService.setSeriesOption(\"shadow.\" + property, newValue, _this.getSelectedSeries()); });\n        };\n        initInput(this.shadowBlurSlider, \"blur\", 0, 20);\n        initInput(this.shadowXOffsetSlider, \"xOffset\", -10, 10);\n        initInput(this.shadowYOffsetSlider, \"yOffset\", -10, 10);\n    };\n    ShadowPanel.TEMPLATE = \"<div>\\n            <ag-group-component ref=\\\"shadowGroup\\\">\\n                <ag-color-picker ref=\\\"shadowColorPicker\\\"></ag-color-picker>\\n                <ag-slider ref=\\\"shadowBlurSlider\\\"></ag-slider>\\n                <ag-slider ref=\\\"shadowXOffsetSlider\\\"></ag-slider>\\n                <ag-slider ref=\\\"shadowYOffsetSlider\\\"></ag-slider>\\n            </ag-group-component>\\n        </div>\";\n    __decorate$Z([\n        RefSelector('shadowGroup')\n    ], ShadowPanel.prototype, \"shadowGroup\", void 0);\n    __decorate$Z([\n        RefSelector('shadowColorPicker')\n    ], ShadowPanel.prototype, \"shadowColorPicker\", void 0);\n    __decorate$Z([\n        RefSelector('shadowBlurSlider')\n    ], ShadowPanel.prototype, \"shadowBlurSlider\", void 0);\n    __decorate$Z([\n        RefSelector('shadowXOffsetSlider')\n    ], ShadowPanel.prototype, \"shadowXOffsetSlider\", void 0);\n    __decorate$Z([\n        RefSelector('shadowYOffsetSlider')\n    ], ShadowPanel.prototype, \"shadowYOffsetSlider\", void 0);\n    __decorate$Z([\n        Autowired('chartTranslationService')\n    ], ShadowPanel.prototype, \"chartTranslationService\", void 0);\n    __decorate$Z([\n        PostConstruct\n    ], ShadowPanel.prototype, \"init\", null);\n    return ShadowPanel;\n}(Component));\n\nfunction initFontPanelParams(_a) {\n    var labelName = _a.labelName, chartOptionsService = _a.chartOptionsService, getSelectedSeries = _a.getSelectedSeries, seriesOptionLabelProperty = _a.seriesOptionLabelProperty;\n    var getFontOptionExpression = function (fontOption) {\n        return seriesOptionLabelProperty + \".\" + fontOption;\n    };\n    var getFontOption = function (fontOption) {\n        var expression = getFontOptionExpression(fontOption);\n        return chartOptionsService.getSeriesOption(expression, getSelectedSeries());\n    };\n    var setFontOption = function (fontOption, value) {\n        var expression = getFontOptionExpression(fontOption);\n        chartOptionsService.setSeriesOption(expression, value, getSelectedSeries());\n    };\n    var initialFont = {\n        family: getFontOption('fontFamily'),\n        style: getFontOption('fontStyle'),\n        weight: getFontOption('fontWeight'),\n        size: getFontOption('fontSize'),\n        color: getFontOption('color'),\n    };\n    var setFont = function (font) {\n        if (font.family) {\n            setFontOption('fontFamily', font.family);\n        }\n        if (font.weight) {\n            setFontOption('fontWeight', font.weight);\n        }\n        if (font.style) {\n            setFontOption('fontStyle', font.style);\n        }\n        if (font.size) {\n            setFontOption('fontSize', font.size);\n        }\n        if (font.color) {\n            setFontOption('color', font.color);\n        }\n    };\n    var params = {\n        name: labelName,\n        enabled: getFontOption('enabled') || false,\n        setEnabled: function (enabled) { return setFontOption('enabled', enabled); },\n        suppressEnabledCheckbox: false,\n        initialFont: initialFont,\n        setFont: setFont\n    };\n    return params;\n}\n\nvar __extends$1r = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$Y = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar MarkersPanel = /** @class */ (function (_super) {\n    __extends$1r(MarkersPanel, _super);\n    function MarkersPanel(chartOptionsService, getSelectedSeries) {\n        var _this = _super.call(this) || this;\n        _this.chartOptionsService = chartOptionsService;\n        _this.getSelectedSeries = getSelectedSeries;\n        return _this;\n    }\n    MarkersPanel.prototype.init = function () {\n        var groupParams = {\n            cssIdentifier: 'charts-format-sub-level',\n            direction: 'vertical'\n        };\n        this.setTemplate(MarkersPanel.TEMPLATE, { seriesMarkersGroup: groupParams });\n        this.initMarkers();\n    };\n    MarkersPanel.prototype.initMarkers = function () {\n        var _this = this;\n        var seriesMarkerShapeOptions = [\n            {\n                value: 'square',\n                text: 'Square'\n            },\n            {\n                value: 'circle',\n                text: 'Circle'\n            },\n            {\n                value: 'cross',\n                text: 'Cross'\n            },\n            {\n                value: 'diamond',\n                text: 'Diamond'\n            },\n            {\n                value: 'plus',\n                text: 'Plus'\n            },\n            {\n                value: 'triangle',\n                text: 'Triangle'\n            },\n            {\n                value: 'heart',\n                text: 'Heart'\n            }\n        ];\n        this.seriesMarkerShapeSelect\n            .addOptions(seriesMarkerShapeOptions)\n            .setLabel(this.chartTranslationService.translate('shape'))\n            .setValue(this.getSeriesOption(\"marker.shape\"))\n            .onValueChange(function (value) { return _this.setSeriesOption(\"marker.shape\", value); });\n        // scatter charts should always show markers\n        var chartType = this.chartOptionsService.getChartType();\n        var shouldHideEnabledCheckbox = _.includes(['scatter', 'bubble'], chartType);\n        this.seriesMarkersGroup\n            .setTitle(this.chartTranslationService.translate(\"markers\"))\n            .hideEnabledCheckbox(shouldHideEnabledCheckbox)\n            .setEnabled(this.getSeriesOption(\"marker.enabled\") || false)\n            .hideOpenCloseIcons(true)\n            .onEnableChange(function (newValue) { return _this.setSeriesOption(\"marker.enabled\", newValue); });\n        var initInput = function (expression, input, labelKey, defaultMaxValue) {\n            var currentValue = _this.getSeriesOption(expression);\n            input.setLabel(_this.chartTranslationService.translate(labelKey))\n                .setMaxValue(getMaxValue(currentValue, defaultMaxValue))\n                .setValue(\"\" + currentValue)\n                .setTextFieldWidth(45)\n                .onValueChange(function (newValue) { return _this.setSeriesOption(expression, newValue); });\n        };\n        if (chartType === 'bubble') {\n            initInput(\"marker.maxSize\", this.seriesMarkerMinSizeSlider, \"maxSize\", 60);\n            initInput(\"marker.size\", this.seriesMarkerSizeSlider, \"minSize\", 60);\n        }\n        else {\n            this.seriesMarkerMinSizeSlider.setDisplayed(false);\n            initInput(\"marker.size\", this.seriesMarkerSizeSlider, \"size\", 60);\n        }\n        initInput(\"marker.strokeWidth\", this.seriesMarkerStrokeWidthSlider, \"strokeWidth\", 10);\n    };\n    MarkersPanel.prototype.getSeriesOption = function (expression) {\n        return this.chartOptionsService.getSeriesOption(expression, this.getSelectedSeries());\n    };\n    MarkersPanel.prototype.setSeriesOption = function (expression, newValue) {\n        this.chartOptionsService.setSeriesOption(expression, newValue, this.getSelectedSeries());\n    };\n    MarkersPanel.TEMPLATE = \"<div>\\n            <ag-group-component ref=\\\"seriesMarkersGroup\\\">\\n                <ag-select ref=\\\"seriesMarkerShapeSelect\\\"></ag-select>\\n                <ag-slider ref=\\\"seriesMarkerMinSizeSlider\\\"></ag-slider>\\n                <ag-slider ref=\\\"seriesMarkerSizeSlider\\\"></ag-slider>\\n                <ag-slider ref=\\\"seriesMarkerStrokeWidthSlider\\\"></ag-slider>\\n            </ag-group-component>\\n        </div>\";\n    __decorate$Y([\n        RefSelector('seriesMarkersGroup')\n    ], MarkersPanel.prototype, \"seriesMarkersGroup\", void 0);\n    __decorate$Y([\n        RefSelector('seriesMarkerShapeSelect')\n    ], MarkersPanel.prototype, \"seriesMarkerShapeSelect\", void 0);\n    __decorate$Y([\n        RefSelector('seriesMarkerSizeSlider')\n    ], MarkersPanel.prototype, \"seriesMarkerSizeSlider\", void 0);\n    __decorate$Y([\n        RefSelector('seriesMarkerMinSizeSlider')\n    ], MarkersPanel.prototype, \"seriesMarkerMinSizeSlider\", void 0);\n    __decorate$Y([\n        RefSelector('seriesMarkerStrokeWidthSlider')\n    ], MarkersPanel.prototype, \"seriesMarkerStrokeWidthSlider\", void 0);\n    __decorate$Y([\n        Autowired('chartTranslationService')\n    ], MarkersPanel.prototype, \"chartTranslationService\", void 0);\n    __decorate$Y([\n        PostConstruct\n    ], MarkersPanel.prototype, \"init\", null);\n    return MarkersPanel;\n}(Component));\n\nvar __extends$1q = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$X = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar CalloutPanel = /** @class */ (function (_super) {\n    __extends$1q(CalloutPanel, _super);\n    function CalloutPanel(chartOptionsService, getSelectedSeries) {\n        var _this = _super.call(this) || this;\n        _this.chartOptionsService = chartOptionsService;\n        _this.getSelectedSeries = getSelectedSeries;\n        return _this;\n    }\n    CalloutPanel.prototype.init = function () {\n        var groupParams = {\n            cssIdentifier: 'charts-format-sub-level',\n            direction: 'vertical'\n        };\n        this.setTemplate(CalloutPanel.TEMPLATE, { calloutGroup: groupParams });\n        this.initCalloutOptions();\n    };\n    CalloutPanel.prototype.initCalloutOptions = function () {\n        var _this = this;\n        this.calloutGroup\n            .setTitle(this.chartTranslationService.translate(\"callout\"))\n            .setEnabled(true)\n            .hideOpenCloseIcons(true)\n            .hideEnabledCheckbox(true);\n        var initInput = function (expression, input, labelKey, defaultMaxValue) {\n            var currentValue = _this.chartOptionsService.getSeriesOption(expression, _this.getSelectedSeries());\n            input.setLabel(_this.chartTranslationService.translate(labelKey))\n                .setMaxValue(getMaxValue(currentValue, defaultMaxValue))\n                .setValue(\"\" + currentValue)\n                .setTextFieldWidth(45)\n                .onValueChange(function (newValue) { return _this.chartOptionsService.setSeriesOption(expression, newValue, _this.getSelectedSeries()); });\n        };\n        initInput('calloutLine.length', this.calloutLengthSlider, 'length', 40);\n        initInput('calloutLine.strokeWidth', this.calloutStrokeWidthSlider, 'strokeWidth', 10);\n        initInput('calloutLabel.offset', this.labelOffsetSlider, 'offset', 30);\n    };\n    CalloutPanel.TEMPLATE = \"<div>\\n            <ag-group-component ref=\\\"calloutGroup\\\">\\n                <ag-slider ref=\\\"calloutLengthSlider\\\"></ag-slider>\\n                <ag-slider ref=\\\"calloutStrokeWidthSlider\\\"></ag-slider>\\n                <ag-slider ref=\\\"labelOffsetSlider\\\"></ag-slider>\\n            </ag-group-component>\\n        </div>\";\n    __decorate$X([\n        RefSelector('calloutGroup')\n    ], CalloutPanel.prototype, \"calloutGroup\", void 0);\n    __decorate$X([\n        RefSelector('calloutLengthSlider')\n    ], CalloutPanel.prototype, \"calloutLengthSlider\", void 0);\n    __decorate$X([\n        RefSelector('calloutStrokeWidthSlider')\n    ], CalloutPanel.prototype, \"calloutStrokeWidthSlider\", void 0);\n    __decorate$X([\n        RefSelector('labelOffsetSlider')\n    ], CalloutPanel.prototype, \"labelOffsetSlider\", void 0);\n    __decorate$X([\n        Autowired('chartTranslationService')\n    ], CalloutPanel.prototype, \"chartTranslationService\", void 0);\n    __decorate$X([\n        PostConstruct\n    ], CalloutPanel.prototype, \"init\", null);\n    return CalloutPanel;\n}(Component));\n\nvar __extends$1p = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$W = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar SeriesPanel = /** @class */ (function (_super) {\n    __extends$1p(SeriesPanel, _super);\n    function SeriesPanel(_a) {\n        var chartController = _a.chartController, chartOptionsService = _a.chartOptionsService, seriesType = _a.seriesType, _b = _a.isExpandedOnInit, isExpandedOnInit = _b === void 0 ? false : _b;\n        var _this = _super.call(this) || this;\n        _this.activePanels = [];\n        _this.widgetFuncs = {\n            'lineWidth': function () { return _this.initLineWidth(); },\n            'strokeWidth': function () { return _this.initStrokeWidth(); },\n            'lineDash': function () { return _this.initLineDash(); },\n            'lineOpacity': function () { return _this.initLineOpacity(); },\n            'fillOpacity': function () { return _this.initFillOpacity(); },\n            'markers': function () { return _this.initMarkers(); },\n            'labels': function () { return _this.initLabels(); },\n            'shadow': function () { return _this.initShadow(); },\n            'tooltips': function () { return _this.initTooltips(); },\n            'bins': function () { return _this.initBins(); },\n        };\n        _this.seriesWidgetMappings = {\n            'area': ['tooltips', 'lineWidth', 'lineDash', 'lineOpacity', 'fillOpacity', 'markers', 'labels', 'shadow'],\n            'bar': ['tooltips', 'strokeWidth', 'lineDash', 'lineOpacity', 'fillOpacity', 'labels', 'shadow'],\n            'column': ['tooltips', 'strokeWidth', 'lineDash', 'lineOpacity', 'fillOpacity', 'labels', 'shadow'],\n            'line': ['tooltips', 'lineWidth', 'lineDash', 'lineOpacity', 'markers', 'labels'],\n            'histogram': ['tooltips', 'bins', 'strokeWidth', 'lineDash', 'lineOpacity', 'fillOpacity', 'labels', 'shadow'],\n            'scatter': ['tooltips', 'markers', 'labels'],\n            'pie': ['tooltips', 'strokeWidth', 'lineOpacity', 'fillOpacity', 'labels', 'shadow'],\n        };\n        _this.chartController = chartController;\n        _this.chartOptionsService = chartOptionsService;\n        _this.seriesType = seriesType || _this.getChartSeriesType();\n        _this.isExpandedOnInit = isExpandedOnInit;\n        return _this;\n    }\n    SeriesPanel.prototype.init = function () {\n        var groupParams = {\n            cssIdentifier: 'charts-format-top-level',\n            direction: 'vertical'\n        };\n        this.setTemplate(SeriesPanel.TEMPLATE, { seriesGroup: groupParams });\n        this.seriesGroup\n            .setTitle(this.translate(\"series\"))\n            .toggleGroupExpand(this.isExpandedOnInit)\n            .hideEnabledCheckbox(true);\n        this.addManagedListener(this.chartController, ChartController.EVENT_CHART_SERIES_CHART_TYPE_CHANGED, this.refreshWidgets.bind(this));\n        this.refreshWidgets();\n    };\n    SeriesPanel.prototype.refreshWidgets = function () {\n        var _this = this;\n        this.destroyActivePanels();\n        var chart = this.chartController.getChartProxy().getChart();\n        chart.waitForUpdate().then(function () {\n            if (_this.chartController.isComboChart()) {\n                _this.updateSeriesType();\n                _this.initSeriesSelect();\n            }\n            _this.seriesWidgetMappings[_this.seriesType].forEach(function (w) { return _this.widgetFuncs[w](); });\n        });\n    };\n    SeriesPanel.prototype.initSeriesSelect = function () {\n        var _this = this;\n        var seriesSelect = this.seriesGroup.createManagedBean(new AgSelect());\n        seriesSelect\n            .setLabel(this.translate('seriesType'))\n            .setLabelAlignment(\"left\")\n            .setLabelWidth('flex')\n            .setInputWidth(100)\n            .addOptions(this.getSeriesSelectOptions())\n            .setValue(\"\" + this.seriesType)\n            .onValueChange(function (newValue) {\n            _this.seriesType = newValue;\n            _this.refreshWidgets();\n        });\n        this.seriesGroup.addItem(seriesSelect);\n        this.activePanels.push(seriesSelect);\n    };\n    SeriesPanel.prototype.initTooltips = function () {\n        var _this = this;\n        var seriesTooltipsToggle = this.createBean(new AgToggleButton());\n        seriesTooltipsToggle\n            .setLabel(this.translate(\"tooltips\"))\n            .setLabelAlignment(\"left\")\n            .setLabelWidth(\"flex\")\n            .setInputWidth(45)\n            .setValue(this.getSeriesOption(\"tooltip.enabled\") || false)\n            .onValueChange(function (newValue) { return _this.setSeriesOption(\"tooltip.enabled\", newValue); });\n        this.addWidget(seriesTooltipsToggle);\n    };\n    SeriesPanel.prototype.initStrokeWidth = function () {\n        var _this = this;\n        var currentValue = this.getSeriesOption(\"strokeWidth\");\n        var seriesStrokeWidthSlider = this.createBean(new AgSlider());\n        seriesStrokeWidthSlider\n            .setLabel(this.translate(\"strokeWidth\"))\n            .setMaxValue(getMaxValue(currentValue, 10))\n            .setTextFieldWidth(45)\n            .setValue(\"\" + currentValue)\n            .onValueChange(function (newValue) { return _this.setSeriesOption(\"strokeWidth\", newValue); });\n        this.addWidget(seriesStrokeWidthSlider);\n    };\n    SeriesPanel.prototype.initLineWidth = function () {\n        var _this = this;\n        var currentValue = this.getSeriesOption(\"strokeWidth\");\n        var seriesLineWidthSlider = this.createBean(new AgSlider());\n        seriesLineWidthSlider\n            .setLabel(this.translate('lineWidth'))\n            .setMaxValue(getMaxValue(currentValue, 10))\n            .setTextFieldWidth(45)\n            .setValue(\"\" + currentValue)\n            .onValueChange(function (newValue) { return _this.setSeriesOption(\"strokeWidth\", newValue); });\n        this.addWidget(seriesLineWidthSlider);\n    };\n    SeriesPanel.prototype.initLineDash = function () {\n        var _this = this;\n        var lineDash = this.getSeriesOption(\"lineDash\");\n        var currentValue = lineDash ? lineDash[0] : 0;\n        var seriesLineDashSlider = this.createBean(new AgSlider());\n        seriesLineDashSlider\n            .setLabel(this.translate('lineDash'))\n            .setMaxValue(getMaxValue(currentValue, 30))\n            .setTextFieldWidth(45)\n            .setValue(\"\" + currentValue)\n            .onValueChange(function (newValue) { return _this.setSeriesOption(\"lineDash\", [newValue]); });\n        this.addWidget(seriesLineDashSlider);\n    };\n    SeriesPanel.prototype.initLineOpacity = function () {\n        var _this = this;\n        var currentValue = this.getSeriesOption(\"strokeOpacity\");\n        var seriesLineOpacitySlider = this.createBean(new AgSlider());\n        seriesLineOpacitySlider\n            .setLabel(this.translate(\"strokeOpacity\"))\n            .setStep(0.05)\n            .setMaxValue(getMaxValue(currentValue, 1))\n            .setTextFieldWidth(45)\n            .setValue(\"\" + currentValue)\n            .onValueChange(function (newValue) { return _this.setSeriesOption(\"strokeOpacity\", newValue); });\n        this.addWidget(seriesLineOpacitySlider);\n    };\n    SeriesPanel.prototype.initFillOpacity = function () {\n        var _this = this;\n        var currentValue = this.getSeriesOption(\"fillOpacity\");\n        var seriesFillOpacitySlider = this.createBean(new AgSlider());\n        seriesFillOpacitySlider\n            .setLabel(this.translate(\"fillOpacity\"))\n            .setStep(0.05)\n            .setMaxValue(getMaxValue(currentValue, 1))\n            .setTextFieldWidth(45)\n            .setValue(\"\" + currentValue)\n            .onValueChange(function (newValue) { return _this.setSeriesOption(\"fillOpacity\", newValue); });\n        this.addWidget(seriesFillOpacitySlider);\n    };\n    SeriesPanel.prototype.initLabels = function () {\n        var _this = this;\n        var seriesOptionLabelProperty = this.seriesType === 'pie' ? 'calloutLabel' : 'label';\n        var labelName = this.seriesType === 'pie'\n            ? this.chartTranslationService.translate('calloutLabels')\n            : this.chartTranslationService.translate('labels');\n        var labelParams = initFontPanelParams({\n            labelName: labelName,\n            chartOptionsService: this.chartOptionsService,\n            getSelectedSeries: function () { return _this.seriesType; },\n            seriesOptionLabelProperty: seriesOptionLabelProperty\n        });\n        var labelPanelComp = this.createBean(new FontPanel(labelParams));\n        if (this.seriesType === 'pie') {\n            var calloutPanelComp = this.createBean(new CalloutPanel(this.chartOptionsService, function () { return _this.seriesType; }));\n            labelPanelComp.addCompToPanel(calloutPanelComp);\n            this.activePanels.push(calloutPanelComp);\n        }\n        this.addWidget(labelPanelComp);\n        if (this.seriesType === 'pie') {\n            var sectorParams = initFontPanelParams({\n                labelName: this.chartTranslationService.translate('sectorLabels'),\n                chartOptionsService: this.chartOptionsService,\n                getSelectedSeries: function () { return _this.seriesType; },\n                seriesOptionLabelProperty: 'sectorLabel'\n            });\n            var sectorPanelComp = this.createBean(new FontPanel(sectorParams));\n            var positionRatioComp = this.getSectorLabelPositionRatio();\n            sectorPanelComp.addCompToPanel(positionRatioComp);\n            this.addWidget(sectorPanelComp);\n        }\n    };\n    SeriesPanel.prototype.getSectorLabelPositionRatio = function () {\n        var _this = this;\n        var expression = 'sectorLabel.positionRatio';\n        var currentValue = this.chartOptionsService.getSeriesOption(expression, this.seriesType);\n        var sectorLabelPositionRatioSlider = this.createBean(new AgSlider());\n        return sectorLabelPositionRatioSlider\n            .setLabel(this.translate(\"positionRatio\"))\n            .setStep(0.05)\n            .setMaxValue(getMaxValue(currentValue, 1))\n            .setTextFieldWidth(45)\n            .setValue(\"\" + currentValue)\n            .onValueChange(function (newValue) { return _this.chartOptionsService.setSeriesOption(expression, newValue, _this.seriesType); });\n    };\n    SeriesPanel.prototype.initShadow = function () {\n        var _this = this;\n        var shadowPanelComp = this.createBean(new ShadowPanel(this.chartOptionsService, function () { return _this.seriesType; }));\n        this.addWidget(shadowPanelComp);\n    };\n    SeriesPanel.prototype.initMarkers = function () {\n        var _this = this;\n        var markersPanelComp = this.createBean(new MarkersPanel(this.chartOptionsService, function () { return _this.seriesType; }));\n        this.addWidget(markersPanelComp);\n    };\n    SeriesPanel.prototype.initBins = function () {\n        var _this = this;\n        var currentValue = this.getSeriesOption(\"bins\").length;\n        var seriesBinCountSlider = this.createBean(new AgSlider());\n        seriesBinCountSlider\n            .setLabel(this.translate(\"histogramBinCount\"))\n            .setMinValue(0)\n            .setMaxValue(getMaxValue(currentValue, 20))\n            .setTextFieldWidth(45)\n            .setValue(\"\" + currentValue)\n            .onValueChange(function (newValue) { return _this.setSeriesOption(\"binCount\", newValue); });\n        this.addWidget(seriesBinCountSlider);\n    };\n    SeriesPanel.prototype.addWidget = function (widget) {\n        this.seriesGroup.addItem(widget);\n        this.activePanels.push(widget);\n    };\n    SeriesPanel.prototype.getSeriesOption = function (expression) {\n        return this.chartOptionsService.getSeriesOption(expression, this.seriesType);\n    };\n    SeriesPanel.prototype.setSeriesOption = function (expression, newValue) {\n        this.chartOptionsService.setSeriesOption(expression, newValue, this.seriesType);\n    };\n    SeriesPanel.prototype.getChartSeriesType = function () {\n        if (this.chartController.getSeriesChartTypes().length === 0) {\n            return 'column';\n        }\n        var ct = this.chartController.getSeriesChartTypes()[0].chartType;\n        return (ct === 'columnLineCombo') ? 'column' : (ct === 'areaColumnCombo') ? 'area' : getSeriesType(ct);\n    };\n    SeriesPanel.prototype.getSeriesSelectOptions = function () {\n        var _this = this;\n        if (!this.seriesSelectOptions) {\n            // lazy init options as they are only required for combo charts\n            this.seriesSelectOptions = new Map([\n                ['area', { value: 'area', text: this.translate('area', 'Area') }],\n                ['bar', { value: 'bar', text: this.translate('bar', 'Bar') }],\n                ['column', { value: 'column', text: this.translate('column', 'Column') }],\n                ['line', { value: 'line', text: this.translate('line', 'Line') }],\n                ['scatter', { value: 'scatter', text: this.translate('scatter', 'Scatter') }],\n                ['histogram', { value: 'histogram', text: this.translate('histogram', 'Histogram') }],\n                ['pie', { value: 'pie', text: this.translate('pie', 'Pie') }],\n            ]);\n        }\n        var seriesSelectOptions = new Set();\n        this.chartController.getActiveSeriesChartTypes().forEach(function (s) {\n            var chartType = getSeriesType(s.chartType);\n            seriesSelectOptions.add(_this.seriesSelectOptions.get(chartType));\n        });\n        return Array.from(seriesSelectOptions);\n    };\n    SeriesPanel.prototype.updateSeriesType = function () {\n        var activeChartTypes = this.chartController.getActiveSeriesChartTypes().map(function (s) { return getSeriesType(s.chartType); });\n        var invalidSeriesType = !activeChartTypes.includes(this.seriesType);\n        if (invalidSeriesType && activeChartTypes.length > 0) {\n            this.seriesType = activeChartTypes[0]; // default to first active series type\n        }\n    };\n    SeriesPanel.prototype.translate = function (key, defaultText) {\n        return this.chartTranslationService.translate(key, defaultText);\n    };\n    SeriesPanel.prototype.destroyActivePanels = function () {\n        var _this = this;\n        this.activePanels.forEach(function (panel) {\n            _.removeFromParent(panel.getGui());\n            _this.destroyBean(panel);\n        });\n    };\n    SeriesPanel.prototype.destroy = function () {\n        this.destroyActivePanels();\n        _super.prototype.destroy.call(this);\n    };\n    SeriesPanel.TEMPLATE = \"<div>\\n            <ag-group-component ref=\\\"seriesGroup\\\">\\n            </ag-group-component>\\n        </div>\";\n    __decorate$W([\n        RefSelector('seriesGroup')\n    ], SeriesPanel.prototype, \"seriesGroup\", void 0);\n    __decorate$W([\n        Autowired('chartTranslationService')\n    ], SeriesPanel.prototype, \"chartTranslationService\", void 0);\n    __decorate$W([\n        PostConstruct\n    ], SeriesPanel.prototype, \"init\", null);\n    return SeriesPanel;\n}(Component));\n\nvar __extends$1o = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$V = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nfunction getMaxValue(currentValue, defaultMaxValue) {\n    return Math.max(currentValue, defaultMaxValue);\n}\nvar DefaultFormatPanelDef = {\n    groups: [\n        { type: 'chart' },\n        { type: 'legend' },\n        { type: 'series' },\n        { type: 'axis' },\n        { type: 'navigator' },\n    ]\n};\nvar FormatPanel = /** @class */ (function (_super) {\n    __extends$1o(FormatPanel, _super);\n    function FormatPanel(chartController, chartOptionsService) {\n        var _this = _super.call(this, FormatPanel.TEMPLATE) || this;\n        _this.chartController = chartController;\n        _this.chartOptionsService = chartOptionsService;\n        _this.panels = [];\n        _this.isGroupPanelShownInSeries = function (group, seriesType) {\n            var commonGroupPanels = ['chart', 'legend', 'series'];\n            if (commonGroupPanels.includes(group)) {\n                return true;\n            }\n            var cartesianOnlyGroupPanels = ['axis', 'navigator'];\n            var cartesianSeries = ['bar', 'column', 'line', 'area', 'scatter', 'histogram', 'cartesian'];\n            return !!(cartesianOnlyGroupPanels.includes(group) && cartesianSeries.includes(seriesType));\n        };\n        return _this;\n    }\n    FormatPanel.prototype.init = function () {\n        this.createPanels();\n        this.addManagedListener(this.chartController, ChartController.EVENT_CHART_UPDATED, this.createPanels.bind(this));\n    };\n    FormatPanel.prototype.createPanels = function () {\n        var _this = this;\n        var _a;\n        var chartType = this.chartController.getChartType();\n        var isGrouping = this.chartController.isGrouping();\n        var seriesType = getSeriesType(chartType);\n        if (chartType === this.chartType && isGrouping === this.isGrouping) {\n            // existing panels can be re-used\n            return;\n        }\n        this.destroyPanels();\n        (_a = this.getFormatPanelDef().groups) === null || _a === void 0 ? void 0 : _a.forEach(function (groupDef) {\n            var group = groupDef.type;\n            // ensure the group should be displayed for the current series type\n            if (!_this.isGroupPanelShownInSeries(group, seriesType)) {\n                return;\n            }\n            var opts = {\n                chartController: _this.chartController,\n                chartOptionsService: _this.chartOptionsService,\n                isExpandedOnInit: groupDef.isOpen,\n                seriesType: seriesType\n            };\n            if (group === 'chart') {\n                _this.addComponent(new ChartPanel(opts));\n            }\n            else if (group === 'legend') {\n                _this.addComponent(new LegendPanel(opts));\n            }\n            else if (group === 'axis') {\n                _this.addComponent(new AxisPanel(opts));\n            }\n            else if (group === 'series') {\n                _this.addComponent(new SeriesPanel(opts));\n            }\n            else if (group === 'navigator') {\n                _this.addComponent(new NavigatorPanel(opts));\n            }\n            else {\n                console.warn(\"AG Grid: invalid charts format panel group name supplied: '\" + groupDef.type + \"'\");\n            }\n        });\n        this.chartType = chartType;\n        this.isGrouping = isGrouping;\n    };\n    FormatPanel.prototype.getFormatPanelDef = function () {\n        var _a;\n        var userProvidedFormatPanelDef = (_a = this.gridOptionsService.get('chartToolPanelsDef')) === null || _a === void 0 ? void 0 : _a.formatPanel;\n        return userProvidedFormatPanelDef ? userProvidedFormatPanelDef : DefaultFormatPanelDef;\n    };\n    FormatPanel.prototype.addComponent = function (component) {\n        this.createBean(component);\n        this.panels.push(component);\n        component.addCssClass('ag-chart-format-section');\n        this.getGui().appendChild(component.getGui());\n    };\n    FormatPanel.prototype.destroyPanels = function () {\n        var _this = this;\n        this.panels.forEach(function (panel) {\n            _.removeFromParent(panel.getGui());\n            _this.destroyBean(panel);\n        });\n    };\n    FormatPanel.prototype.destroy = function () {\n        this.destroyPanels();\n        _super.prototype.destroy.call(this);\n    };\n    FormatPanel.TEMPLATE = \"<div class=\\\"ag-chart-format-wrapper\\\"></div>\";\n    __decorate$V([\n        PostConstruct\n    ], FormatPanel.prototype, \"init\", null);\n    return FormatPanel;\n}(Component));\n\nvar __extends$1n = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$U = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar MiniChart = /** @class */ (function (_super) {\n    __extends$1n(MiniChart, _super);\n    function MiniChart(container, tooltipName) {\n        var _this = _super.call(this) || this;\n        _this.size = 58;\n        _this.padding = 5;\n        _this.root = new Group();\n        var scene = new Scene({ document: window.document, width: _this.size, height: _this.size });\n        scene.canvas.element.classList.add('ag-chart-mini-thumbnail-canvas');\n        scene.root = _this.root;\n        scene.container = container;\n        _this.scene = scene;\n        _this.tooltipName = tooltipName;\n        return _this;\n    }\n    MiniChart.prototype.init = function () {\n        this.scene.canvas.element.title = this.chartTranslationService.translate(this.tooltipName);\n        // necessary to force scene graph render as we are not using the standalone factory!\n        this.scene.render();\n    };\n    __decorate$U([\n        Autowired('chartTranslationService')\n    ], MiniChart.prototype, \"chartTranslationService\", void 0);\n    __decorate$U([\n        PostConstruct\n    ], MiniChart.prototype, \"init\", null);\n    return MiniChart;\n}(Component));\n\nvar __extends$1m = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$T = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar MiniChartWithAxes = /** @class */ (function (_super) {\n    __extends$1m(MiniChartWithAxes, _super);\n    function MiniChartWithAxes(container, tooltipName) {\n        var _this = _super.call(this, container, tooltipName) || this;\n        _this.stroke = 'gray';\n        _this.axisOvershoot = 3;\n        return _this;\n    }\n    MiniChartWithAxes.prototype.addAxes = function () {\n        var size = this.size;\n        var padding = this.padding;\n        var leftAxis = new Line();\n        leftAxis.x1 = padding;\n        leftAxis.y1 = padding;\n        leftAxis.x2 = padding;\n        leftAxis.y2 = size - padding + this.axisOvershoot;\n        leftAxis.stroke = this.stroke;\n        var bottomAxis = new Line();\n        bottomAxis.x1 = padding - this.axisOvershoot + 1;\n        bottomAxis.y1 = size - padding;\n        bottomAxis.x2 = size - padding + 1;\n        bottomAxis.y2 = size - padding;\n        bottomAxis.stroke = this.stroke;\n        var root = this.root;\n        root.append(leftAxis);\n        root.append(bottomAxis);\n    };\n    __decorate$T([\n        PostConstruct\n    ], MiniChartWithAxes.prototype, \"addAxes\", null);\n    return MiniChartWithAxes;\n}(MiniChart));\n\nfunction createColumnRects(params) {\n    var stacked = params.stacked, size = params.size, padding = params.padding, xScalePadding = params.xScalePadding, xScaleDomain = params.xScaleDomain, yScaleDomain = params.yScaleDomain;\n    var xScale = new BandScale$5();\n    xScale.domain = xScaleDomain;\n    xScale.range = [padding, size - padding];\n    xScale.paddingInner = xScalePadding;\n    xScale.paddingOuter = xScalePadding;\n    var yScale = new LinearScale$1();\n    yScale.domain = yScaleDomain;\n    yScale.range = [size - padding, padding];\n    var createBars = function (series, xScale, yScale) {\n        return series.map(function (datum, i) {\n            var top = yScale.convert(datum);\n            var rect = new Rect();\n            rect.x = xScale.convert(i);\n            rect.y = top;\n            rect.width = xScale.bandwidth;\n            rect.height = yScale.convert(0) - top;\n            rect.strokeWidth = 1;\n            rect.crisp = true;\n            return rect;\n        });\n    };\n    if (stacked) {\n        return params.data.map(function (d) { return createBars(d, xScale, yScale); });\n    }\n    return createBars(params.data, xScale, yScale);\n}\nfunction createLinePaths(root, data, size, padding) {\n    var xScale = new LinearScale$1();\n    xScale.domain = [0, 4];\n    xScale.range = [padding, size - padding];\n    var yScale = new LinearScale$1();\n    yScale.domain = [0, 10];\n    yScale.range = [size - padding, padding];\n    var lines = data.map(function (series) {\n        var line = new Path();\n        line.strokeWidth = 3;\n        line.lineCap = 'round';\n        line.fill = undefined;\n        series.forEach(function (datum, i) {\n            line.path[i > 0 ? 'lineTo' : 'moveTo'](xScale.convert(i), yScale.convert(datum));\n        });\n        return line;\n    });\n    var linesGroup = new Group();\n    linesGroup.setClipRectInGroupCoordinateSpace(new BBox(padding, padding, size - padding * 2, size - padding * 2));\n    linesGroup.append(lines);\n    root.append(linesGroup);\n    return lines;\n}\n\nvar __extends$1l = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar MiniColumn = /** @class */ (function (_super) {\n    __extends$1l(MiniColumn, _super);\n    function MiniColumn(container, fills, strokes) {\n        var _this = _super.call(this, container, \"groupedColumnTooltip\") || this;\n        _this.columnData = [2, 3, 4];\n        var _a = _this, root = _a.root, columnData = _a.columnData, size = _a.size, padding = _a.padding;\n        _this.columns = createColumnRects({\n            stacked: false,\n            root: root,\n            data: columnData,\n            size: size,\n            padding: padding,\n            xScaleDomain: [0, 1, 2],\n            yScaleDomain: [0, 4],\n            xScalePadding: 0.3\n        });\n        root.append(_this.columns);\n        _this.updateColors(fills, strokes);\n        return _this;\n    }\n    MiniColumn.prototype.updateColors = function (fills, strokes) {\n        this.columns.forEach(function (column, i) {\n            column.fill = fills[i];\n            column.stroke = strokes[i];\n        });\n    };\n    MiniColumn.chartType = 'groupedColumn';\n    return MiniColumn;\n}(MiniChartWithAxes));\n\nvar __extends$1k = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar MiniStackedColumn = /** @class */ (function (_super) {\n    __extends$1k(MiniStackedColumn, _super);\n    function MiniStackedColumn(container, fills, strokes, data, yScaleDomain, tooltipName) {\n        if (data === void 0) { data = MiniStackedColumn.data; }\n        if (yScaleDomain === void 0) { yScaleDomain = [0, 16]; }\n        if (tooltipName === void 0) { tooltipName = \"stackedColumnTooltip\"; }\n        var _this = _super.call(this, container, tooltipName) || this;\n        var _a = _this, root = _a.root, size = _a.size, padding = _a.padding;\n        _this.stackedColumns = createColumnRects({\n            stacked: true,\n            root: root,\n            data: data,\n            size: size,\n            padding: padding,\n            xScaleDomain: [0, 1, 2],\n            yScaleDomain: yScaleDomain,\n            xScalePadding: 0.3,\n        });\n        root.append([].concat.apply([], _this.stackedColumns));\n        _this.updateColors(fills, strokes);\n        return _this;\n    }\n    MiniStackedColumn.prototype.updateColors = function (fills, strokes) {\n        this.stackedColumns.forEach(function (series, i) {\n            return series.forEach(function (column) {\n                column.fill = fills[i];\n                column.stroke = strokes[i];\n            });\n        });\n    };\n    MiniStackedColumn.chartType = 'stackedColumn';\n    MiniStackedColumn.data = [\n        [8, 12, 16],\n        [6, 9, 12],\n        [2, 3, 4]\n    ];\n    return MiniStackedColumn;\n}(MiniChartWithAxes));\n\nvar __extends$1j = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar MiniNormalizedColumn = /** @class */ (function (_super) {\n    __extends$1j(MiniNormalizedColumn, _super);\n    function MiniNormalizedColumn(container, fills, strokes) {\n        return _super.call(this, container, fills, strokes, MiniNormalizedColumn.data, [0, 10], \"normalizedColumnTooltip\") || this;\n    }\n    MiniNormalizedColumn.chartType = 'normalizedColumn';\n    MiniNormalizedColumn.data = [\n        [10, 10, 10],\n        [6, 7, 8],\n        [2, 4, 6]\n    ];\n    return MiniNormalizedColumn;\n}(MiniStackedColumn));\n\nvar __extends$1i = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar MiniBar = /** @class */ (function (_super) {\n    __extends$1i(MiniBar, _super);\n    function MiniBar(container, fills, strokes) {\n        var _this = _super.call(this, container, \"groupedBarTooltip\") || this;\n        var padding = _this.padding;\n        var size = _this.size;\n        var data = [2, 3, 4];\n        var yScale = new BandScale$5();\n        yScale.domain = [0, 1, 2];\n        yScale.range = [padding, size - padding];\n        yScale.paddingInner = 0.3;\n        yScale.paddingOuter = 0.3;\n        var xScale = new LinearScale$1();\n        xScale.domain = [0, 4];\n        xScale.range = [size - padding, padding];\n        var bottom = xScale.convert(0);\n        var height = yScale.bandwidth;\n        _this.bars = data.map(function (datum, i) {\n            var rect = new Rect();\n            rect.x = padding;\n            rect.y = yScale.convert(i);\n            rect.width = bottom - xScale.convert(datum);\n            rect.height = height;\n            rect.strokeWidth = 1;\n            rect.crisp = true;\n            return rect;\n        });\n        _this.updateColors(fills, strokes);\n        _this.root.append(_this.bars);\n        return _this;\n    }\n    MiniBar.prototype.updateColors = function (fills, strokes) {\n        this.bars.forEach(function (bar, i) {\n            bar.fill = fills[i];\n            bar.stroke = strokes[i];\n        });\n    };\n    MiniBar.chartType = 'groupedBar';\n    return MiniBar;\n}(MiniChartWithAxes));\n\nvar __extends$1h = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar MiniStackedBar = /** @class */ (function (_super) {\n    __extends$1h(MiniStackedBar, _super);\n    function MiniStackedBar(container, fills, strokes, data, xScaleDomain, tooltipName) {\n        if (data === void 0) { data = MiniStackedBar.data; }\n        if (xScaleDomain === void 0) { xScaleDomain = [0, 16]; }\n        if (tooltipName === void 0) { tooltipName = \"stackedBarTooltip\"; }\n        var _this = _super.call(this, container, tooltipName) || this;\n        var size = _this.size;\n        var padding = _this.padding;\n        var yScale = new BandScale$5();\n        yScale.domain = [0, 1, 2];\n        yScale.range = [padding, size - padding];\n        yScale.paddingInner = 0.3;\n        yScale.paddingOuter = 0.3;\n        var xScale = new LinearScale$1();\n        xScale.domain = xScaleDomain;\n        xScale.range = [size - padding, padding];\n        var bottom = xScale.convert(0);\n        var height = yScale.bandwidth;\n        _this.bars = data.map(function (series) {\n            return series.map(function (datum, i) {\n                var rect = new Rect();\n                rect.x = padding;\n                rect.y = yScale.convert(i);\n                rect.width = bottom - xScale.convert(datum);\n                rect.height = height;\n                rect.strokeWidth = 1;\n                rect.crisp = true;\n                return rect;\n            });\n        });\n        _this.updateColors(fills, strokes);\n        _this.root.append([].concat.apply([], _this.bars));\n        return _this;\n    }\n    MiniStackedBar.prototype.updateColors = function (fills, strokes) {\n        this.bars.forEach(function (series, i) {\n            return series.forEach(function (bar) {\n                bar.fill = fills[i];\n                bar.stroke = strokes[i];\n            });\n        });\n    };\n    MiniStackedBar.chartType = 'stackedBar';\n    MiniStackedBar.data = [\n        [8, 12, 16],\n        [6, 9, 12],\n        [2, 3, 4]\n    ];\n    return MiniStackedBar;\n}(MiniChartWithAxes));\n\nvar __extends$1g = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar MiniNormalizedBar = /** @class */ (function (_super) {\n    __extends$1g(MiniNormalizedBar, _super);\n    function MiniNormalizedBar(container, fills, strokes) {\n        return _super.call(this, container, fills, strokes, MiniNormalizedBar.data, [0, 10], \"normalizedBarTooltip\") || this;\n    }\n    MiniNormalizedBar.chartType = 'normalizedBar';\n    MiniNormalizedBar.data = [\n        [10, 10, 10],\n        [6, 7, 8],\n        [2, 4, 6]\n    ];\n    return MiniNormalizedBar;\n}(MiniStackedBar));\n\nvar __extends$1f = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __read$j = (undefined && undefined.__read) || function (o, n) {\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n    if (!m) return o;\n    var i = m.call(o), r, ar = [], e;\n    try {\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n    }\n    catch (error) { e = { error: error }; }\n    finally {\n        try {\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\n        }\n        finally { if (e) throw e.error; }\n    }\n    return ar;\n};\nvar toRadians = toRadians$1;\nvar MiniDoughnut = /** @class */ (function (_super) {\n    __extends$1f(MiniDoughnut, _super);\n    function MiniDoughnut(container, fills, strokes, centerRadiusScaler, tooltipName) {\n        if (centerRadiusScaler === void 0) { centerRadiusScaler = 0.6; }\n        if (tooltipName === void 0) { tooltipName = \"doughnutTooltip\"; }\n        var _this = _super.call(this, container, tooltipName) || this;\n        var radius = (_this.size - _this.padding * 2) / 2;\n        var center = radius + _this.padding;\n        var angles = [\n            [toRadians(-90), toRadians(30)],\n            [toRadians(30), toRadians(120)],\n            [toRadians(120), toRadians(180)],\n            [toRadians(180), toRadians(210)],\n            [toRadians(210), toRadians(240)],\n            [toRadians(240), toRadians(270)]\n        ];\n        _this.sectors = angles.map(function (_a) {\n            var _b = __read$j(_a, 2), startAngle = _b[0], endAngle = _b[1];\n            var sector = new Sector();\n            sector.centerX = center;\n            sector.centerY = center;\n            sector.innerRadius = radius * centerRadiusScaler;\n            sector.outerRadius = radius;\n            sector.startAngle = startAngle;\n            sector.endAngle = endAngle;\n            sector.stroke = undefined;\n            sector.strokeWidth = 1;\n            return sector;\n        });\n        _this.updateColors(fills, strokes);\n        _this.root.append(_this.sectors);\n        return _this;\n    }\n    MiniDoughnut.prototype.updateColors = function (fills, strokes) {\n        this.sectors.forEach(function (sector, i) {\n            sector.fill = fills[i % fills.length];\n            sector.stroke = strokes[i % strokes.length];\n        });\n    };\n    MiniDoughnut.chartType = 'doughnut';\n    return MiniDoughnut;\n}(MiniChart));\n\nvar __extends$1e = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar MiniPie = /** @class */ (function (_super) {\n    __extends$1e(MiniPie, _super);\n    function MiniPie(container, fills, strokes) {\n        return _super.call(this, container, fills, strokes, 0, \"pieTooltip\") || this;\n    }\n    MiniPie.chartType = 'pie';\n    return MiniPie;\n}(MiniDoughnut));\n\nvar __extends$1d = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar MiniLine = /** @class */ (function (_super) {\n    __extends$1d(MiniLine, _super);\n    function MiniLine(container, fills, strokes) {\n        var _this = _super.call(this, container, \"lineTooltip\") || this;\n        _this.data = [\n            [9, 7, 8, 5, 6],\n            [5, 6, 3, 4, 1],\n            [1, 3, 4, 8, 7]\n        ];\n        _this.lines = createLinePaths(_this.root, _this.data, _this.size, _this.padding);\n        _this.updateColors(fills, strokes);\n        return _this;\n    }\n    MiniLine.prototype.updateColors = function (fills, strokes) {\n        this.lines.forEach(function (line, i) {\n            line.stroke = fills[i];\n        });\n    };\n    MiniLine.chartType = 'line';\n    return MiniLine;\n}(MiniChartWithAxes));\n\nvar __extends$1c = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __read$i = (undefined && undefined.__read) || function (o, n) {\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n    if (!m) return o;\n    var i = m.call(o), r, ar = [], e;\n    try {\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n    }\n    catch (error) { e = { error: error }; }\n    finally {\n        try {\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\n        }\n        finally { if (e) throw e.error; }\n    }\n    return ar;\n};\nvar MiniScatter = /** @class */ (function (_super) {\n    __extends$1c(MiniScatter, _super);\n    function MiniScatter(container, fills, strokes) {\n        var _this = _super.call(this, container, \"scatterTooltip\") || this;\n        var size = _this.size;\n        var padding = _this.padding;\n        // [x, y] pairs\n        var data = [\n            [[0.3, 3], [1.1, 0.9], [2, 0.4], [3.4, 2.4]],\n            [[0, 0.3], [1, 2], [2.4, 1.4], [3, 0]]\n        ];\n        var xScale = new LinearScale$1();\n        xScale.domain = [-0.5, 4];\n        xScale.range = [padding * 2, size - padding];\n        var yScale = new LinearScale$1();\n        yScale.domain = [-0.5, 3.5];\n        yScale.range = [size - padding, padding];\n        var points = [];\n        data.forEach(function (series) {\n            series.forEach(function (_a) {\n                var _b = __read$i(_a, 2), x = _b[0], y = _b[1];\n                var arc = new Arc();\n                arc.strokeWidth = 1;\n                arc.centerX = xScale.convert(x);\n                arc.centerY = yScale.convert(y);\n                arc.radius = 2.5;\n                points.push(arc);\n            });\n        });\n        _this.points = points;\n        _this.updateColors(fills, strokes);\n        var pointsGroup = new Group();\n        pointsGroup.setClipRectInGroupCoordinateSpace(new BBox(padding, padding, size - padding * 2, size - padding * 2));\n        pointsGroup.append(_this.points);\n        _this.root.append(pointsGroup);\n        return _this;\n    }\n    MiniScatter.prototype.updateColors = function (fills, strokes) {\n        this.points.forEach(function (line, i) {\n            line.stroke = strokes[i % strokes.length];\n            line.fill = fills[i % fills.length];\n        });\n    };\n    MiniScatter.chartType = 'scatter';\n    return MiniScatter;\n}(MiniChartWithAxes));\n\nvar __extends$1b = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __read$h = (undefined && undefined.__read) || function (o, n) {\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n    if (!m) return o;\n    var i = m.call(o), r, ar = [], e;\n    try {\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n    }\n    catch (error) { e = { error: error }; }\n    finally {\n        try {\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\n        }\n        finally { if (e) throw e.error; }\n    }\n    return ar;\n};\nvar MiniBubble = /** @class */ (function (_super) {\n    __extends$1b(MiniBubble, _super);\n    function MiniBubble(container, fills, strokes) {\n        var _this = _super.call(this, container, \"bubbleTooltip\") || this;\n        var size = _this.size;\n        var padding = _this.padding;\n        // [x, y, radius] triples\n        var data = [\n            [[0.1, 0.3, 5], [0.5, 0.4, 7], [0.2, 0.8, 7]], [[0.8, 0.7, 5], [0.7, 0.3, 9]]\n        ];\n        var xScale = new LinearScale$1();\n        xScale.domain = [0, 1];\n        xScale.range = [padding * 2, size - padding];\n        var yScale = new LinearScale$1();\n        yScale.domain = [0, 1];\n        yScale.range = [size - padding, padding];\n        var points = [];\n        data.forEach(function (series) {\n            series.forEach(function (_a) {\n                var _b = __read$h(_a, 3), x = _b[0], y = _b[1], radius = _b[2];\n                var arc = new Arc();\n                arc.strokeWidth = 1;\n                arc.centerX = xScale.convert(x);\n                arc.centerY = yScale.convert(y);\n                arc.radius = radius;\n                arc.fillOpacity = 0.7;\n                points.push(arc);\n            });\n        });\n        _this.points = points;\n        _this.updateColors(fills, strokes);\n        var pointsGroup = new Group();\n        pointsGroup.setClipRectInGroupCoordinateSpace(new BBox(padding, padding, size - padding * 2, size - padding * 2));\n        pointsGroup.append(_this.points);\n        _this.root.append(pointsGroup);\n        return _this;\n    }\n    MiniBubble.prototype.updateColors = function (fills, strokes) {\n        this.points.forEach(function (line, i) {\n            line.stroke = strokes[i % strokes.length];\n            line.fill = fills[i % fills.length];\n        });\n    };\n    MiniBubble.chartType = 'bubble';\n    return MiniBubble;\n}(MiniChartWithAxes));\n\nvar __extends$1a = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar MiniArea = /** @class */ (function (_super) {\n    __extends$1a(MiniArea, _super);\n    function MiniArea(container, fills, strokes, data) {\n        if (data === void 0) { data = MiniArea.data; }\n        var _this = _super.call(this, container, \"groupedAreaTooltip\") || this;\n        var size = _this.size;\n        var padding = _this.padding;\n        var xScale = new BandScale$5();\n        xScale.domain = [0, 1, 2];\n        xScale.paddingInner = 1;\n        xScale.paddingOuter = 0;\n        xScale.range = [padding + 0.5, size - padding - 0.5];\n        var yScale = new LinearScale$1();\n        yScale.domain = [0, 6];\n        yScale.range = [size - padding + 0.5, padding];\n        var xCount = data.length;\n        var last = xCount * 2 - 1;\n        var pathData = [];\n        var bottomY = yScale.convert(0);\n        data.forEach(function (datum, i) {\n            var x = xScale.convert(i);\n            datum.forEach(function (yDatum, j) {\n                var y = yScale.convert(yDatum);\n                var points = pathData[j] || (pathData[j] = []);\n                points[i] = {\n                    x: x,\n                    y: y\n                };\n                points[last - i] = {\n                    x: x,\n                    y: bottomY\n                };\n            });\n        });\n        _this.areas = pathData.reverse().map(function (points) {\n            var area = new Path();\n            area.strokeWidth = 1;\n            area.fillOpacity = 0.7;\n            var path = area.path;\n            path.clear();\n            points.forEach(function (point, i) { return path[i > 0 ? \"lineTo\" : \"moveTo\"](point.x, point.y); });\n            path.closePath();\n            return area;\n        });\n        _this.updateColors(fills, strokes);\n        _this.root.append(_this.areas);\n        return _this;\n    }\n    MiniArea.prototype.updateColors = function (fills, strokes) {\n        this.areas.forEach(function (area, i) {\n            area.fill = fills[i];\n            area.stroke = strokes[i];\n        });\n    };\n    MiniArea.chartType = 'area';\n    MiniArea.data = [\n        [1, 3, 5],\n        [2, 6, 4],\n        [5, 3, 1]\n    ];\n    return MiniArea;\n}(MiniChartWithAxes));\n\nvar __extends$19 = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar MiniStackedArea = /** @class */ (function (_super) {\n    __extends$19(MiniStackedArea, _super);\n    function MiniStackedArea(container, fills, strokes, data, tooltipName) {\n        if (data === void 0) { data = MiniStackedArea.data; }\n        if (tooltipName === void 0) { tooltipName = \"stackedAreaTooltip\"; }\n        var _this = _super.call(this, container, tooltipName) || this;\n        var size = _this.size;\n        var padding = _this.padding;\n        var xScale = new BandScale$5();\n        xScale.domain = [0, 1, 2];\n        xScale.paddingInner = 1;\n        xScale.paddingOuter = 0;\n        xScale.range = [padding + 0.5, size - padding - 0.5];\n        var yScale = new LinearScale$1();\n        yScale.domain = [0, 16];\n        yScale.range = [size - padding + 0.5, padding + 0.5];\n        var xCount = data.length;\n        var last = xCount * 2 - 1;\n        var pathData = [];\n        data.forEach(function (datum, i) {\n            var x = xScale.convert(i);\n            var total = 0;\n            datum.forEach(function (yDatum, j) {\n                var y = yScale.convert(total + yDatum);\n                var points = pathData[j] || (pathData[j] = []);\n                points[i] = {\n                    x: x,\n                    y: y\n                };\n                points[last - i] = {\n                    x: x,\n                    y: yScale.convert(total) // bottom y\n                };\n                total += yDatum;\n            });\n        });\n        _this.areas = pathData.map(function (points) {\n            var area = new Path();\n            area.strokeWidth = 1;\n            var path = area.path;\n            path.clear();\n            points.forEach(function (point, i) { return path[i > 0 ? \"lineTo\" : \"moveTo\"](point.x, point.y); });\n            path.closePath();\n            return area;\n        });\n        _this.updateColors(fills, strokes);\n        _this.root.append(_this.areas);\n        return _this;\n    }\n    MiniStackedArea.prototype.updateColors = function (fills, strokes) {\n        this.areas.forEach(function (area, i) {\n            area.fill = fills[i];\n            area.stroke = strokes[i];\n        });\n    };\n    MiniStackedArea.chartType = 'stackedArea';\n    MiniStackedArea.data = [\n        [2, 3, 2],\n        [3, 6, 5],\n        [6, 2, 2]\n    ];\n    return MiniStackedArea;\n}(MiniChartWithAxes));\n\nvar __extends$18 = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar MiniNormalizedArea = /** @class */ (function (_super) {\n    __extends$18(MiniNormalizedArea, _super);\n    function MiniNormalizedArea(container, fills, strokes, data) {\n        if (data === void 0) { data = MiniNormalizedArea.data; }\n        return _super.call(this, container, fills, strokes, data, \"normalizedAreaTooltip\") || this;\n    }\n    MiniNormalizedArea.chartType = 'normalizedArea';\n    MiniNormalizedArea.data = MiniStackedArea.data.map(function (stack) {\n        var sum = stack.reduce(function (p, c) { return p + c; }, 0);\n        return stack.map(function (v) { return v / sum * 16; });\n    });\n    return MiniNormalizedArea;\n}(MiniStackedArea));\n\nvar __extends$17 = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __read$g = (undefined && undefined.__read) || function (o, n) {\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n    if (!m) return o;\n    var i = m.call(o), r, ar = [], e;\n    try {\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n    }\n    catch (error) { e = { error: error }; }\n    finally {\n        try {\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\n        }\n        finally { if (e) throw e.error; }\n    }\n    return ar;\n};\nvar MiniHistogram = /** @class */ (function (_super) {\n    __extends$17(MiniHistogram, _super);\n    function MiniHistogram(container, fills, strokes) {\n        var _this = _super.call(this, container, \"histogramTooltip\") || this;\n        var padding = _this.padding;\n        var size = _this.size;\n        // approx normal curve\n        var data = [2, 5, 11, 13, 10, 6, 1];\n        var xScale = new LinearScale$1();\n        xScale.domain = [0, data.length];\n        xScale.range = [padding, size - padding];\n        var yScale = new LinearScale$1();\n        yScale.domain = [0, data.reduce(function (a, b) { return Math.max(a, b); }, 0)];\n        yScale.range = [size - padding, padding];\n        var bottom = yScale.convert(0);\n        _this.bars = data.map(function (datum, i) {\n            var top = yScale.convert(datum);\n            var left = xScale.convert(i);\n            var right = xScale.convert(i + 1);\n            var rect = new Rect();\n            rect.x = left;\n            rect.y = top;\n            rect.width = right - left;\n            rect.height = bottom - top;\n            rect.strokeWidth = 1;\n            rect.crisp = true;\n            return rect;\n        });\n        _this.updateColors(fills, strokes);\n        _this.root.append(_this.bars);\n        return _this;\n    }\n    MiniHistogram.prototype.updateColors = function (_a, _b) {\n        var _c = __read$g(_a, 1), fill = _c[0];\n        var _d = __read$g(_b, 1), stroke = _d[0];\n        this.bars.forEach(function (bar) {\n            bar.fill = fill;\n            bar.stroke = stroke;\n        });\n    };\n    MiniHistogram.chartType = 'histogram';\n    return MiniHistogram;\n}(MiniChartWithAxes));\n\nvar __extends$16 = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar MiniColumnLineCombo = /** @class */ (function (_super) {\n    __extends$16(MiniColumnLineCombo, _super);\n    function MiniColumnLineCombo(container, fills, strokes) {\n        var _this = _super.call(this, container, \"columnLineComboTooltip\") || this;\n        _this.columnData = [3, 4];\n        _this.lineData = [\n            [5, 4, 6, 5, 4]\n        ];\n        var _a = _this, root = _a.root, columnData = _a.columnData, lineData = _a.lineData, size = _a.size, padding = _a.padding;\n        _this.columns = createColumnRects({\n            stacked: false,\n            root: root,\n            data: columnData,\n            size: size,\n            padding: padding,\n            xScaleDomain: [0, 1],\n            yScaleDomain: [0, 4],\n            xScalePadding: 0.5\n        });\n        root.append(_this.columns);\n        _this.lines = createLinePaths(root, lineData, size, padding);\n        _this.updateColors(fills, strokes);\n        return _this;\n    }\n    MiniColumnLineCombo.prototype.updateColors = function (fills, strokes) {\n        this.columns.forEach(function (bar, i) {\n            bar.fill = fills[i];\n            bar.stroke = strokes[i];\n        });\n        this.lines.forEach(function (line, i) {\n            line.stroke = fills[i + 2];\n        });\n    };\n    MiniColumnLineCombo.chartType = 'columnLineCombo';\n    return MiniColumnLineCombo;\n}(MiniChartWithAxes));\n\nvar __extends$15 = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar MiniAreaColumnCombo = /** @class */ (function (_super) {\n    __extends$15(MiniAreaColumnCombo, _super);\n    function MiniAreaColumnCombo(container, fills, strokes) {\n        var _this = _super.call(this, container, \"areaColumnComboTooltip\") || this;\n        _this.columnData = [3, 4.5];\n        _this.areaData = [\n            [5, 4, 6, 5, 4],\n        ];\n        var _a = _this, root = _a.root, columnData = _a.columnData, areaData = _a.areaData, size = _a.size, padding = _a.padding;\n        _this.columns = createColumnRects({\n            stacked: false,\n            root: root,\n            data: columnData,\n            size: size,\n            padding: padding,\n            xScaleDomain: [0, 1],\n            yScaleDomain: [0, 6],\n            xScalePadding: 0.5,\n        });\n        // scale for area series\n        var xScale = new BandScale$5();\n        xScale.range = [padding, size - padding];\n        xScale.domain = [0, 1, 2, 3, 4];\n        xScale.paddingInner = 1;\n        xScale.paddingOuter = 0;\n        var yScale = new LinearScale$1();\n        yScale.range = [size - padding, padding];\n        yScale.domain = [0, 6];\n        var pathData = [];\n        var yZero = yScale.convert(0);\n        var firstX = xScale.convert(0);\n        areaData.forEach(function (series, i) {\n            var points = pathData[i] || (pathData[i] = []);\n            series.forEach(function (data, j) {\n                var yDatum = data;\n                var xDatum = j;\n                var x = xScale.convert(xDatum);\n                var y = yScale.convert(yDatum);\n                points[j] = { x: x, y: y };\n            });\n            var lastX = xScale.convert(series.length - 1);\n            pathData[i].push({\n                x: lastX,\n                y: yZero\n            }, {\n                x: firstX,\n                y: yZero\n            });\n        });\n        _this.areas = pathData.map(function (points) {\n            var area = new Path();\n            area.strokeWidth = 1;\n            area.fillOpacity = 0.8;\n            var path = area.path;\n            points.forEach(function (point, i) { return path[i > 0 ? 'lineTo' : 'moveTo'](point.x, point.y); });\n            return area;\n        });\n        root.append(_this.areas);\n        root.append([].concat.apply([], _this.columns));\n        _this.updateColors(fills, strokes);\n        return _this;\n    }\n    MiniAreaColumnCombo.prototype.updateColors = function (fills, strokes) {\n        this.areas.forEach(function (area, i) {\n            area.fill = fills[i];\n            area.stroke = strokes[i];\n        });\n        this.columns.forEach(function (bar, i) {\n            bar.fill = fills[i + 1];\n            bar.stroke = strokes[i + 1];\n        });\n    };\n    MiniAreaColumnCombo.chartType = 'areaColumnCombo';\n    return MiniAreaColumnCombo;\n}(MiniChartWithAxes));\n\nvar __extends$14 = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar MiniCustomCombo = /** @class */ (function (_super) {\n    __extends$14(MiniCustomCombo, _super);\n    function MiniCustomCombo(container, fills, strokes) {\n        var _this = _super.call(this, container, 'customComboTooltip') || this;\n        _this.columnData = [3, 4];\n        _this.lineData = [[5, 4, 6, 5, 4]];\n        var _a = _this, root = _a.root, columnData = _a.columnData, lineData = _a.lineData, size = _a.size, padding = _a.padding;\n        _this.columns = createColumnRects({\n            stacked: false,\n            root: root,\n            data: columnData,\n            size: size,\n            padding: padding,\n            xScaleDomain: [0, 1],\n            yScaleDomain: [0, 4],\n            xScalePadding: 0.5,\n        });\n        root.append(_this.columns);\n        _this.lines = createLinePaths(root, lineData, size, padding);\n        var axisStroke = 'grey';\n        var axisOvershoot = 3;\n        var leftAxis = new Line();\n        leftAxis.x1 = padding;\n        leftAxis.y1 = padding;\n        leftAxis.x2 = padding;\n        leftAxis.y2 = size - padding + axisOvershoot;\n        leftAxis.stroke = axisStroke;\n        var bottomAxis = new Line();\n        bottomAxis.x1 = padding - axisOvershoot + 1;\n        bottomAxis.y1 = size - padding;\n        bottomAxis.x2 = size - padding + 1;\n        bottomAxis.y2 = size - padding;\n        bottomAxis.stroke = axisStroke;\n        var penIcon = new Path();\n        _this.buildPenIconPath(penIcon);\n        penIcon.fill = 'whitesmoke';\n        penIcon.stroke = 'darkslategrey';\n        penIcon.strokeWidth = 1;\n        root.append([bottomAxis, leftAxis, penIcon]);\n        _this.updateColors(fills, strokes);\n        return _this;\n    }\n    MiniCustomCombo.prototype.updateColors = function (fills, strokes) {\n        this.columns.forEach(function (bar, i) {\n            bar.fill = fills[i];\n            bar.stroke = strokes[i];\n        });\n        this.lines.forEach(function (line, i) {\n            line.stroke = fills[i + 2];\n        });\n    };\n    MiniCustomCombo.prototype.buildPenIconPath = function (penIcon) {\n        var path = penIcon.path;\n        path.moveTo(25.76, 43.46);\n        path.lineTo(31.27, 48.53);\n        path.moveTo(49.86, 22);\n        path.lineTo(49.86, 22);\n        path.cubicCurveTo(49.01994659053345, 21.317514933510974, 47.89593834348529, 21.09645997825817, 46.86, 21.41);\n        path.lineTo(46.86, 21.41);\n        path.cubicCurveTo(45.55460035985361, 21.77260167850787, 44.38777081121966, 22.517979360321792, 43.51, 23.55);\n        path.lineTo(25.51, 43.8);\n        path.lineTo(25.43, 43.89);\n        path.lineTo(23.01, 51.89);\n        path.lineTo(22.83, 52.46);\n        path.lineTo(31.02, 48.86);\n        path.lineTo(49.02, 28.52);\n        path.lineTo(49.02, 28.52);\n        path.cubicCurveTo(49.940716461596224, 27.521914221246085, 50.54302631059587, 26.2720342455763, 50.75, 24.93);\n        path.lineTo(50.75, 24.93);\n        path.cubicCurveTo(50.95363374988308, 23.866379846512814, 50.62080640232334, 22.77066734274871, 49.86, 22.0);\n        path.closePath();\n        path.moveTo(41.76, 25.5);\n        path.lineTo(47.34, 30.5);\n        path.moveTo(40.74, 26.65);\n        path.lineTo(46.25, 31.71);\n    };\n    MiniCustomCombo.chartType = 'customCombo';\n    return MiniCustomCombo;\n}(MiniChart));\n\nvar __extends$13 = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __assign$j = (undefined && undefined.__assign) || function () {\n    __assign$j = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign$j.apply(this, arguments);\n};\nvar __decorate$S = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar miniChartMapping = {\n    columnGroup: {\n        column: MiniColumn,\n        stackedColumn: MiniStackedColumn,\n        normalizedColumn: MiniNormalizedColumn\n    },\n    barGroup: {\n        bar: MiniBar,\n        stackedBar: MiniStackedBar,\n        normalizedBar: MiniNormalizedBar\n    },\n    pieGroup: {\n        pie: MiniPie,\n        doughnut: MiniDoughnut\n    },\n    lineGroup: {\n        line: MiniLine\n    },\n    scatterGroup: {\n        scatter: MiniScatter,\n        bubble: MiniBubble\n    },\n    areaGroup: {\n        area: MiniArea,\n        stackedArea: MiniStackedArea,\n        normalizedArea: MiniNormalizedArea\n    },\n    histogramGroup: {\n        histogram: MiniHistogram\n    },\n    combinationGroup: {\n        columnLineCombo: MiniColumnLineCombo,\n        areaColumnCombo: MiniAreaColumnCombo,\n        customCombo: MiniCustomCombo\n    }\n};\nvar MiniChartsContainer = /** @class */ (function (_super) {\n    __extends$13(MiniChartsContainer, _super);\n    function MiniChartsContainer(chartController, fills, strokes, chartGroups) {\n        if (chartGroups === void 0) { chartGroups = DEFAULT_CHART_GROUPS; }\n        var _this = _super.call(this, MiniChartsContainer.TEMPLATE) || this;\n        _this.wrappers = {};\n        _this.chartController = chartController;\n        _this.fills = fills;\n        _this.strokes = strokes;\n        _this.chartGroups = __assign$j({}, chartGroups);\n        return _this;\n    }\n    MiniChartsContainer.prototype.init = function () {\n        var _this = this;\n        // hide MiniCustomCombo if no custom combo exists\n        if (!this.chartController.customComboExists() && this.chartGroups.combinationGroup) {\n            this.chartGroups.combinationGroup = this.chartGroups.combinationGroup.filter(function (chartType) { return chartType !== 'customCombo'; });\n        }\n        var eGui = this.getGui();\n        Object.keys(this.chartGroups).forEach(function (group) {\n            var chartGroupValues = _this.chartGroups[group];\n            var groupComponent = _this.createBean(new AgGroupComponent({\n                title: _this.chartTranslationService.translate(group),\n                suppressEnabledCheckbox: true,\n                enabled: true,\n                suppressOpenCloseIcons: true,\n                cssIdentifier: 'charts-settings',\n                direction: 'horizontal'\n            }));\n            chartGroupValues.forEach(function (chartType) {\n                var _a;\n                var MiniClass = (_a = miniChartMapping[group]) === null || _a === void 0 ? void 0 : _a[chartType];\n                if (!MiniClass) {\n                    if (miniChartMapping[group]) {\n                        _.doOnce(function () { return console.warn(\"AG Grid - invalid chartGroupsDef config '\" + group + \".\" + chartType + \"'\"); }, \"invalid_chartGroupsDef\" + chartType + \"_\" + group);\n                    }\n                    else {\n                        _.doOnce(function () { return console.warn(\"AG Grid - invalid chartGroupsDef config '\" + group + \"'\"); }, \"invalid_chartGroupsDef\" + group);\n                    }\n                    return;\n                }\n                var miniWrapper = document.createElement('div');\n                miniWrapper.classList.add('ag-chart-mini-thumbnail');\n                var miniClassChartType = MiniClass.chartType;\n                _this.addManagedListener(miniWrapper, 'click', function () {\n                    _this.chartController.setChartType(miniClassChartType);\n                    _this.updateSelectedMiniChart();\n                });\n                _this.wrappers[miniClassChartType] = miniWrapper;\n                _this.createBean(new MiniClass(miniWrapper, _this.fills, _this.strokes));\n                groupComponent.addItem(miniWrapper);\n            });\n            eGui.appendChild(groupComponent.getGui());\n        });\n        this.updateSelectedMiniChart();\n    };\n    MiniChartsContainer.prototype.updateSelectedMiniChart = function () {\n        var selectedChartType = this.chartController.getChartType();\n        for (var miniChartType in this.wrappers) {\n            var miniChart = this.wrappers[miniChartType];\n            var selected = miniChartType === selectedChartType;\n            miniChart.classList.toggle('ag-selected', selected);\n        }\n    };\n    MiniChartsContainer.TEMPLATE = \"<div class=\\\"ag-chart-settings-mini-wrapper\\\"></div>\";\n    __decorate$S([\n        Autowired('chartTranslationService')\n    ], MiniChartsContainer.prototype, \"chartTranslationService\", void 0);\n    __decorate$S([\n        PostConstruct\n    ], MiniChartsContainer.prototype, \"init\", null);\n    return MiniChartsContainer;\n}(Component));\n\nvar __extends$12 = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$R = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar ChartSettingsPanel = /** @class */ (function (_super) {\n    __extends$12(ChartSettingsPanel, _super);\n    function ChartSettingsPanel(chartController) {\n        var _this = _super.call(this, ChartSettingsPanel.TEMPLATE) || this;\n        _this.miniChartsContainers = [];\n        _this.cardItems = [];\n        _this.activePaletteIndex = 0;\n        _this.palettes = [];\n        _this.themes = [];\n        _this.chartController = chartController;\n        return _this;\n    }\n    ChartSettingsPanel.prototype.postConstruct = function () {\n        var _this = this;\n        this.resetPalettes();\n        this.ePrevBtn.insertAdjacentElement('afterbegin', _.createIconNoSpan('previous', this.gridOptionsService));\n        this.eNextBtn.insertAdjacentElement('afterbegin', _.createIconNoSpan('next', this.gridOptionsService));\n        this.addManagedListener(this.ePrevBtn, 'click', function () { return _this.setActivePalette(_this.getPrev(), 'left'); });\n        this.addManagedListener(this.eNextBtn, 'click', function () { return _this.setActivePalette(_this.getNext(), 'right'); });\n        // change the selected chart when a combo chart is modified via the data panel, i.e. the custom combo should be selected\n        this.addManagedListener(this.chartController, ChartController.EVENT_CHART_TYPE_CHANGED, function () { return _this.resetPalettes(true); });\n        this.scrollSelectedIntoView();\n    };\n    ChartSettingsPanel.prototype.scrollSelectedIntoView = function () {\n        var _this = this;\n        // the panel is not immediately visible due to the slide animation, so we add a\n        // setTimeout to wait until the panel animation is over and is able to scroll\n        setTimeout(function () {\n            var isMiniChartsContainerVisible = function (miniChartsContainers) {\n                return !miniChartsContainers.getGui().classList.contains('ag-hidden');\n            };\n            var currentMiniChartContainer = _this.miniChartsContainers.find(isMiniChartsContainerVisible);\n            var currentChart = currentMiniChartContainer.getGui().querySelector('.ag-selected');\n            if (currentChart) {\n                var parent_1 = currentChart.offsetParent;\n                if (parent_1) {\n                    _this.eMiniChartsContainer.scrollTo(0, parent_1.offsetTop);\n                }\n            }\n        }, 250);\n    };\n    ChartSettingsPanel.prototype.resetPalettes = function (forceReset) {\n        var _this = this;\n        var _a, _b;\n        var palettes = this.chartController.getPalettes();\n        var chartGroups = (_b = (_a = this.gridOptionsService.get('chartToolPanelsDef')) === null || _a === void 0 ? void 0 : _a.settingsPanel) === null || _b === void 0 ? void 0 : _b.chartGroupsDef;\n        if ((_.shallowCompare(palettes, this.palettes) && !forceReset) || this.isAnimating) {\n            return;\n        }\n        this.palettes = palettes;\n        this.themes = this.chartController.getThemes();\n        this.activePaletteIndex = this.themes.findIndex(function (name) { return name === _this.chartController.getChartThemeName(); });\n        this.cardItems = [];\n        _.clearElement(this.eCardSelector);\n        this.destroyMiniCharts();\n        this.palettes.forEach(function (palette, index) {\n            var isActivePalette = _this.activePaletteIndex === index;\n            var fills = palette.fills, strokes = palette.strokes;\n            var miniChartsContainer = _this.createBean(new MiniChartsContainer(_this.chartController, fills, strokes, chartGroups));\n            _this.miniChartsContainers.push(miniChartsContainer);\n            _this.eMiniChartsContainer.appendChild(miniChartsContainer.getGui());\n            _this.addCardLink(index);\n            if (isActivePalette) {\n                miniChartsContainer.updateSelectedMiniChart();\n            }\n            else {\n                miniChartsContainer.setDisplayed(false);\n            }\n        });\n        _.setDisplayed(this.eNavBar, this.palettes.length > 1);\n        _.radioCssClass(this.cardItems[this.activePaletteIndex], 'ag-selected', 'ag-not-selected');\n    };\n    ChartSettingsPanel.prototype.addCardLink = function (index) {\n        var _this = this;\n        var link = document.createElement('div');\n        link.classList.add('ag-chart-settings-card-item');\n        this.addManagedListener(link, 'click', function () {\n            _this.setActivePalette(index, index < _this.activePaletteIndex ? 'left' : 'right');\n        });\n        this.eCardSelector.appendChild(link);\n        this.cardItems.push(link);\n    };\n    ChartSettingsPanel.prototype.getPrev = function () {\n        var prev = this.activePaletteIndex - 1;\n        if (prev < 0) {\n            prev = this.palettes.length - 1;\n        }\n        return prev;\n    };\n    ChartSettingsPanel.prototype.getNext = function () {\n        var next = this.activePaletteIndex + 1;\n        if (next >= this.palettes.length) {\n            next = 0;\n        }\n        return next;\n    };\n    ChartSettingsPanel.prototype.setActivePalette = function (index, animationDirection) {\n        var _this = this;\n        if (this.isAnimating || this.activePaletteIndex === index) {\n            return;\n        }\n        _.radioCssClass(this.cardItems[index], 'ag-selected', 'ag-not-selected');\n        var currentPalette = this.miniChartsContainers[this.activePaletteIndex];\n        var currentGui = currentPalette.getGui();\n        var futurePalette = this.miniChartsContainers[index];\n        var nextGui = futurePalette.getGui();\n        currentPalette.updateSelectedMiniChart();\n        futurePalette.updateSelectedMiniChart();\n        var multiplier = animationDirection === 'left' ? -1 : 1;\n        var final = nextGui.style.left = (_.getAbsoluteWidth(this.getGui()) * multiplier) + \"px\";\n        this.activePaletteIndex = index;\n        this.isAnimating = true;\n        var animatingClass = 'ag-animating';\n        futurePalette.setDisplayed(true);\n        currentPalette.addCssClass(animatingClass);\n        futurePalette.addCssClass(animatingClass);\n        this.chartController.setChartThemeName(this.themes[index]);\n        window.setTimeout(function () {\n            currentGui.style.left = -parseFloat(final) + \"px\";\n            nextGui.style.left = '0px';\n        }, 0);\n        window.setTimeout(function () {\n            _this.isAnimating = false;\n            currentPalette.removeCssClass(animatingClass);\n            futurePalette.removeCssClass(animatingClass);\n            currentPalette.setDisplayed(false);\n        }, 300);\n    };\n    ChartSettingsPanel.prototype.destroyMiniCharts = function () {\n        _.clearElement(this.eMiniChartsContainer);\n        this.miniChartsContainers = this.destroyBeans(this.miniChartsContainers);\n    };\n    ChartSettingsPanel.prototype.destroy = function () {\n        this.destroyMiniCharts();\n        _super.prototype.destroy.call(this);\n    };\n    ChartSettingsPanel.TEMPLATE = \"<div class=\\\"ag-chart-settings-wrapper\\\">\\n            <div ref=\\\"eMiniChartsContainer\\\" class=\\\"ag-chart-settings-mini-charts-container ag-scrollable-container\\\"></div>\\n            <div ref=\\\"eNavBar\\\" class=\\\"ag-chart-settings-nav-bar\\\">\\n                <div ref=\\\"ePrevBtn\\\" class=\\\"ag-chart-settings-prev\\\">\\n                    <button type=\\\"button\\\" class=\\\"ag-chart-settings-prev-button\\\"></button>\\n                </div>\\n                <div ref=\\\"eCardSelector\\\" class=\\\"ag-chart-settings-card-selector\\\"></div>\\n                <div ref=\\\"eNextBtn\\\" class=\\\"ag-chart-settings-next\\\">\\n                    <button type=\\\"button\\\" class=\\\"ag-chart-settings-next-button\\\"></button>\\n                </div>\\n            </div>\\n        </div>\";\n    __decorate$R([\n        Autowired('resizeObserverService')\n    ], ChartSettingsPanel.prototype, \"resizeObserverService\", void 0);\n    __decorate$R([\n        RefSelector('eMiniChartsContainer')\n    ], ChartSettingsPanel.prototype, \"eMiniChartsContainer\", void 0);\n    __decorate$R([\n        RefSelector('eNavBar')\n    ], ChartSettingsPanel.prototype, \"eNavBar\", void 0);\n    __decorate$R([\n        RefSelector('eCardSelector')\n    ], ChartSettingsPanel.prototype, \"eCardSelector\", void 0);\n    __decorate$R([\n        RefSelector('ePrevBtn')\n    ], ChartSettingsPanel.prototype, \"ePrevBtn\", void 0);\n    __decorate$R([\n        RefSelector('eNextBtn')\n    ], ChartSettingsPanel.prototype, \"eNextBtn\", void 0);\n    __decorate$R([\n        PostConstruct\n    ], ChartSettingsPanel.prototype, \"postConstruct\", null);\n    return ChartSettingsPanel;\n}(Component));\n\nvar __extends$11 = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$Q = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar TabbedChartMenu = /** @class */ (function (_super) {\n    __extends$11(TabbedChartMenu, _super);\n    function TabbedChartMenu(params) {\n        var _this = _super.call(this) || this;\n        _this.tabs = [];\n        var controller = params.controller, panels = params.panels, chartOptionsService = params.chartOptionsService;\n        _this.chartController = controller;\n        _this.chartOptionsService = chartOptionsService;\n        _this.panels = panels;\n        return _this;\n    }\n    TabbedChartMenu.prototype.init = function () {\n        var _this = this;\n        this.panels.forEach(function (panel) {\n            var panelType = panel.replace('chart', '').toLowerCase();\n            var _a = _this.createTab(panel, panelType, _this.getPanelClass(panelType)), comp = _a.comp, tab = _a.tab;\n            _this.tabs.push(tab);\n            _this.addDestroyFunc(function () { return _this.destroyBean(comp); });\n        });\n        this.tabbedLayout = new TabbedLayout({\n            items: this.tabs,\n            cssClass: 'ag-chart-tabbed-menu',\n            keepScrollPosition: true\n        });\n        this.getContext().createBean(this.tabbedLayout);\n    };\n    TabbedChartMenu.prototype.createTab = function (name, title, TabPanelClass) {\n        var eWrapperDiv = document.createElement('div');\n        eWrapperDiv.classList.add('ag-chart-tab', \"ag-chart-\" + title);\n        var comp = new TabPanelClass(this.chartController, this.chartOptionsService);\n        this.getContext().createBean(comp);\n        eWrapperDiv.appendChild(comp.getGui());\n        var titleEl = document.createElement('div');\n        var translatedTitle = this.chartTranslationService.translate(title);\n        titleEl.innerText = translatedTitle;\n        return {\n            comp: comp,\n            tab: {\n                title: titleEl,\n                titleLabel: translatedTitle,\n                bodyPromise: AgPromise.resolve(eWrapperDiv),\n                getScrollableContainer: function () {\n                    var scrollableContainer = eWrapperDiv.querySelector('.ag-scrollable-container');\n                    return (scrollableContainer || eWrapperDiv);\n                },\n                name: name\n            }\n        };\n    };\n    TabbedChartMenu.prototype.showTab = function (tab) {\n        var tabItem = this.tabs[tab];\n        this.tabbedLayout.showItem(tabItem);\n    };\n    TabbedChartMenu.prototype.getGui = function () {\n        return this.tabbedLayout && this.tabbedLayout.getGui();\n    };\n    TabbedChartMenu.prototype.destroy = function () {\n        if (this.parentComponent && this.parentComponent.isAlive()) {\n            this.destroyBean(this.parentComponent);\n        }\n        _super.prototype.destroy.call(this);\n    };\n    TabbedChartMenu.prototype.getPanelClass = function (panelType) {\n        switch (panelType) {\n            case TabbedChartMenu.TAB_DATA:\n                return ChartDataPanel;\n            case TabbedChartMenu.TAB_FORMAT:\n                return FormatPanel;\n            default:\n                return ChartSettingsPanel;\n        }\n    };\n    TabbedChartMenu.TAB_DATA = 'data';\n    TabbedChartMenu.TAB_FORMAT = 'format';\n    __decorate$Q([\n        Autowired('chartTranslationService')\n    ], TabbedChartMenu.prototype, \"chartTranslationService\", void 0);\n    __decorate$Q([\n        PostConstruct\n    ], TabbedChartMenu.prototype, \"init\", null);\n    return TabbedChartMenu;\n}(Component));\n\nvar __extends$10 = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$P = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __read$f = (undefined && undefined.__read) || function (o, n) {\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n    if (!m) return o;\n    var i = m.call(o), r, ar = [], e;\n    try {\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n    }\n    catch (error) { e = { error: error }; }\n    finally {\n        try {\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\n        }\n        finally { if (e) throw e.error; }\n    }\n    return ar;\n};\nvar __spread$8 = (undefined && undefined.__spread) || function () {\n    for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read$f(arguments[i]));\n    return ar;\n};\nvar ChartMenu = /** @class */ (function (_super) {\n    __extends$10(ChartMenu, _super);\n    function ChartMenu(eChartContainer, eMenuPanelContainer, chartController, chartOptionsService) {\n        var _this = _super.call(this, ChartMenu.TEMPLATE) || this;\n        _this.eChartContainer = eChartContainer;\n        _this.eMenuPanelContainer = eMenuPanelContainer;\n        _this.chartController = chartController;\n        _this.chartOptionsService = chartOptionsService;\n        _this.buttons = {\n            chartSettings: ['menu', function () { return _this.showMenu(_this.defaultPanel); }],\n            chartData: ['menu', function () { return _this.showMenu(\"chartData\"); }],\n            chartFormat: ['menu', function () { return _this.showMenu(\"chartFormat\"); }],\n            chartLink: ['linked', function (e) { return _this.toggleDetached(e); }],\n            chartUnlink: ['unlinked', function (e) { return _this.toggleDetached(e); }],\n            chartDownload: ['save', function () { return _this.saveChart(); }]\n        };\n        _this.panels = [];\n        _this.menuVisible = false;\n        return _this;\n    }\n    ChartMenu.prototype.postConstruct = function () {\n        var _this = this;\n        this.createButtons();\n        this.addManagedListener(this.eventService, Events.EVENT_CHART_CREATED, function (e) {\n            var _a;\n            if (e.chartId === _this.chartController.getChartId()) {\n                var showDefaultToolPanel = Boolean((_a = _this.gridOptionsService.get('chartToolPanelsDef')) === null || _a === void 0 ? void 0 : _a.defaultToolPanel);\n                if (showDefaultToolPanel) {\n                    _this.showMenu(_this.defaultPanel, false);\n                }\n            }\n        });\n        this.refreshMenuClasses();\n        if (!this.gridOptionsService.is('suppressChartToolPanelsButton') && this.panels.length > 0) {\n            this.getGui().classList.add('ag-chart-tool-panel-button-enable');\n            this.addManagedListener(this.eHideButton, 'click', this.toggleMenu.bind(this));\n        }\n    };\n    ChartMenu.prototype.isVisible = function () {\n        return this.menuVisible;\n    };\n    ChartMenu.prototype.getExtraPaddingDirections = function () {\n        var _this = this;\n        var topItems = ['chartLink', 'chartUnlink', 'chartDownload'];\n        var rightItems = ['chartSettings', 'chartData', 'chartFormat'];\n        var result = [];\n        if (topItems.some(function (v) { return _this.chartToolbarOptions.includes(v); })) {\n            result.push('top');\n        }\n        if (rightItems.some(function (v) { return _this.chartToolbarOptions.includes(v); })) {\n            result.push(this.gridOptionsService.is('enableRtl') ? 'left' : 'right');\n        }\n        return result;\n    };\n    ChartMenu.prototype.getToolbarOptions = function () {\n        var _this = this;\n        var _a, _b, _c;\n        var useChartToolPanelCustomisation = Boolean(this.gridOptionsService.get('chartToolPanelsDef'));\n        if (useChartToolPanelCustomisation) {\n            var defaultChartToolbarOptions = [\n                this.chartController.isChartLinked() ? 'chartLink' : 'chartUnlink',\n                'chartDownload'\n            ];\n            var toolbarItemsFunc = this.gridOptionsService.getCallback('getChartToolbarItems');\n            var params = {\n                defaultItems: defaultChartToolbarOptions\n            };\n            var chartToolbarOptions = toolbarItemsFunc\n                ? toolbarItemsFunc(params).filter(function (option) {\n                    if (!CHART_TOOLBAR_ALLOW_LIST.includes(option)) {\n                        var msg = CHART_TOOL_PANEL_ALLOW_LIST.includes(option)\n                            ? \"AG Grid: '\" + option + \"' is a Chart Tool Panel option and will be ignored since 'chartToolPanelsDef' is used. Please use 'chartToolPanelsDef.panels' grid option instead\"\n                            : \"AG Grid: '\" + option + \"' is not a valid Chart Toolbar Option\";\n                        console.warn(msg);\n                        return false;\n                    }\n                    return true;\n                })\n                : defaultChartToolbarOptions;\n            var panelsOverride = (_b = (_a = this.gridOptionsService.get('chartToolPanelsDef')) === null || _a === void 0 ? void 0 : _a.panels) === null || _b === void 0 ? void 0 : _b.map(function (panel) {\n                var menuOption = CHART_TOOL_PANEL_MENU_OPTIONS[panel];\n                if (!menuOption) {\n                    console.warn(\"AG Grid - invalid panel in chartToolPanelsDef.panels: '\" + panel + \"'\");\n                }\n                return menuOption;\n            }).filter(function (panel) { return Boolean(panel); });\n            this.panels = panelsOverride\n                ? panelsOverride\n                : Object.values(CHART_TOOL_PANEL_MENU_OPTIONS);\n            // pivot charts use the column tool panel instead of the data panel\n            if (this.chartController.isPivotChart()) {\n                this.panels = this.panels.filter(function (panel) { return panel !== 'chartData'; });\n            }\n            var defaultToolPanel = (_c = this.gridOptionsService.get('chartToolPanelsDef')) === null || _c === void 0 ? void 0 : _c.defaultToolPanel;\n            this.defaultPanel = (defaultToolPanel && CHART_TOOL_PANEL_MENU_OPTIONS[defaultToolPanel]) || this.panels[0];\n            return this.panels.length > 0\n                // Only one panel is required to display menu icon in toolbar\n                ? __spread$8([this.panels[0]], chartToolbarOptions) : chartToolbarOptions;\n        }\n        else { // To be deprecated in future. Toolbar options will be different to chart tool panels.\n            var tabOptions = [\n                'chartSettings',\n                'chartData',\n                'chartFormat',\n                this.chartController.isChartLinked() ? 'chartLink' : 'chartUnlink',\n                'chartDownload'\n            ];\n            var toolbarItemsFunc = this.gridOptionsService.getCallback('getChartToolbarItems');\n            if (toolbarItemsFunc) {\n                var isLegacyToolbar_1 = this.gridOptionsService.is('suppressChartToolPanelsButton');\n                var params = {\n                    defaultItems: isLegacyToolbar_1 ? tabOptions : CHART_TOOLBAR_ALLOW_LIST\n                };\n                tabOptions = toolbarItemsFunc(params).filter(function (option) {\n                    if (!_this.buttons[option]) {\n                        console.warn(\"AG Grid: '\" + option + \"' is not a valid Chart Toolbar Option\");\n                        return false;\n                    }\n                    // If not legacy, remove chart tool panel options here,\n                    // and add them all in one go below\n                    else if (!isLegacyToolbar_1 && CHART_TOOL_PANEL_ALLOW_LIST.includes(option)) {\n                        var msg = \"AG Grid: '\" + option + \"' is a Chart Tool Panel option and will be ignored. Please use 'chartToolPanelsDef.panels' grid option instead\";\n                        console.warn(msg);\n                        return false;\n                    }\n                    return true;\n                });\n                if (!isLegacyToolbar_1) {\n                    // Add all the chart tool panels, as `chartToolPanelsDef.panels`\n                    // should be used for configuration\n                    tabOptions = tabOptions.concat(CHART_TOOL_PANEL_ALLOW_LIST);\n                }\n            }\n            // pivot charts use the column tool panel instead of the data panel\n            if (this.chartController.isPivotChart()) {\n                tabOptions = tabOptions.filter(function (option) { return option !== 'chartData'; });\n            }\n            var ignoreOptions_1 = ['chartUnlink', 'chartLink', 'chartDownload'];\n            this.panels = tabOptions.filter(function (option) { return ignoreOptions_1.indexOf(option) === -1; });\n            this.defaultPanel = this.panels[0];\n            return tabOptions.filter(function (value) {\n                return ignoreOptions_1.indexOf(value) !== -1 ||\n                    (_this.panels.length && value === _this.panels[0]);\n            });\n        }\n    };\n    ChartMenu.prototype.toggleDetached = function (e) {\n        var target = e.target;\n        var active = target.classList.contains('ag-icon-linked');\n        target.classList.toggle('ag-icon-linked', !active);\n        target.classList.toggle('ag-icon-unlinked', active);\n        var tooltipKey = active ? 'chartUnlinkToolbarTooltip' : 'chartLinkToolbarTooltip';\n        var tooltipTitle = this.chartTranslationService.translate(tooltipKey);\n        if (tooltipTitle) {\n            target.title = tooltipTitle;\n        }\n        this.chartController.detachChartRange();\n    };\n    ChartMenu.prototype.createButtons = function () {\n        var _this = this;\n        this.chartToolbarOptions = this.getToolbarOptions();\n        var menuEl = this.eMenu;\n        this.chartToolbarOptions.forEach(function (button) {\n            var buttonConfig = _this.buttons[button];\n            var _a = __read$f(buttonConfig, 2), iconName = _a[0], callback = _a[1];\n            var buttonEl = _.createIconNoSpan(iconName, _this.gridOptionsService, undefined, true);\n            buttonEl.classList.add('ag-chart-menu-icon');\n            var tooltipTitle = _this.chartTranslationService.translate(button + 'ToolbarTooltip');\n            if (tooltipTitle && buttonEl instanceof HTMLElement) {\n                buttonEl.title = tooltipTitle;\n            }\n            _this.addManagedListener(buttonEl, 'click', callback);\n            menuEl.appendChild(buttonEl);\n        });\n    };\n    ChartMenu.prototype.saveChart = function () {\n        var event = { type: ChartMenu.EVENT_DOWNLOAD_CHART };\n        this.dispatchEvent(event);\n    };\n    ChartMenu.prototype.createMenuPanel = function (defaultTab) {\n        var _this = this;\n        var width = this.environment.chartMenuPanelWidth();\n        var menuPanel = this.menuPanel = this.createBean(new AgPanel({\n            minWidth: width,\n            width: width,\n            height: '100%',\n            closable: true,\n            hideTitleBar: true,\n            cssIdentifier: 'chart-menu'\n        }));\n        menuPanel.setParentComponent(this);\n        this.eMenuPanelContainer.appendChild(menuPanel.getGui());\n        this.tabbedMenu = this.createBean(new TabbedChartMenu({\n            controller: this.chartController,\n            type: this.chartController.getChartType(),\n            panels: this.panels,\n            chartOptionsService: this.chartOptionsService\n        }));\n        this.addManagedListener(menuPanel, Component.EVENT_DESTROYED, function () { return _this.destroyBean(_this.tabbedMenu); });\n        return new AgPromise(function (res) {\n            window.setTimeout(function () {\n                menuPanel.setBodyComponent(_this.tabbedMenu);\n                _this.tabbedMenu.showTab(defaultTab);\n                res(menuPanel);\n                _this.addManagedListener(_this.eChartContainer, 'click', function (event) {\n                    if (_this.getGui().contains(event.target)) {\n                        return;\n                    }\n                    if (_this.menuVisible) {\n                        _this.hideMenu();\n                    }\n                });\n            }, 100);\n        });\n    };\n    ChartMenu.prototype.showContainer = function () {\n        if (!this.menuPanel) {\n            return;\n        }\n        this.menuVisible = true;\n        this.showParent(this.menuPanel.getWidth());\n        this.refreshMenuClasses();\n    };\n    ChartMenu.prototype.toggleMenu = function () {\n        this.menuVisible ? this.hideMenu() : this.showMenu();\n    };\n    ChartMenu.prototype.showMenu = function (\n    /**\n     * Menu panel to show. If empty, shows the existing menu, or creates the default menu if menu panel has not been created\n     */\n    panel, \n    /**\n     * Whether to animate the menu opening\n     */\n    animate) {\n        var _this = this;\n        if (animate === void 0) { animate = true; }\n        if (!animate) {\n            this.eMenuPanelContainer.classList.add('ag-no-transition');\n        }\n        if (this.menuPanel && !panel) {\n            this.showContainer();\n        }\n        else {\n            var menuPanel = panel || this.defaultPanel;\n            var tab = this.panels.indexOf(menuPanel);\n            if (tab < 0) {\n                console.warn(\"AG Grid: '\" + panel + \"' is not a valid Chart Tool Panel name\");\n                tab = this.panels.indexOf(this.defaultPanel);\n            }\n            if (this.menuPanel) {\n                this.tabbedMenu.showTab(tab);\n                this.showContainer();\n            }\n            else {\n                this.createMenuPanel(tab).then(this.showContainer.bind(this));\n            }\n        }\n        if (!animate) {\n            // Wait for menu to render\n            setTimeout(function () {\n                if (!_this.isAlive()) {\n                    return;\n                }\n                _this.eMenuPanelContainer.classList.remove('ag-no-transition');\n            }, 500);\n        }\n    };\n    ChartMenu.prototype.hideMenu = function () {\n        var _this = this;\n        this.hideParent();\n        window.setTimeout(function () {\n            _this.menuVisible = false;\n            _this.refreshMenuClasses();\n        }, 500);\n    };\n    ChartMenu.prototype.refreshMenuClasses = function () {\n        this.eChartContainer.classList.toggle('ag-chart-menu-visible', this.menuVisible);\n        this.eChartContainer.classList.toggle('ag-chart-menu-hidden', !this.menuVisible);\n        if (!this.gridOptionsService.is('suppressChartToolPanelsButton')) {\n            this.eHideButtonIcon.classList.toggle('ag-icon-contracted', this.menuVisible);\n            this.eHideButtonIcon.classList.toggle('ag-icon-expanded', !this.menuVisible);\n        }\n    };\n    ChartMenu.prototype.showParent = function (width) {\n        this.eMenuPanelContainer.style.minWidth = width + \"px\";\n    };\n    ChartMenu.prototype.hideParent = function () {\n        this.eMenuPanelContainer.style.minWidth = '0';\n    };\n    ChartMenu.prototype.destroy = function () {\n        _super.prototype.destroy.call(this);\n        if (this.menuPanel && this.menuPanel.isAlive()) {\n            this.destroyBean(this.menuPanel);\n        }\n        if (this.tabbedMenu && this.tabbedMenu.isAlive()) {\n            this.destroyBean(this.tabbedMenu);\n        }\n    };\n    ChartMenu.EVENT_DOWNLOAD_CHART = \"downloadChart\";\n    ChartMenu.TEMPLATE = \"<div>\\n        <div class=\\\"ag-chart-menu\\\" ref=\\\"eMenu\\\"></div>\\n        <button class=\\\"ag-chart-menu-close\\\" ref=\\\"eHideButton\\\">\\n            <span class=\\\"ag-icon ag-icon-contracted\\\" ref=\\\"eHideButtonIcon\\\"></span>\\n        </button>\\n    </div>\";\n    __decorate$P([\n        Autowired('chartTranslationService')\n    ], ChartMenu.prototype, \"chartTranslationService\", void 0);\n    __decorate$P([\n        RefSelector(\"eMenu\")\n    ], ChartMenu.prototype, \"eMenu\", void 0);\n    __decorate$P([\n        RefSelector(\"eHideButton\")\n    ], ChartMenu.prototype, \"eHideButton\", void 0);\n    __decorate$P([\n        RefSelector(\"eHideButtonIcon\")\n    ], ChartMenu.prototype, \"eHideButtonIcon\", void 0);\n    __decorate$P([\n        PostConstruct\n    ], ChartMenu.prototype, \"postConstruct\", null);\n    return ChartMenu;\n}(Component));\n\nvar __extends$$ = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __assign$i = (undefined && undefined.__assign) || function () {\n    __assign$i = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign$i.apply(this, arguments);\n};\nvar __decorate$O = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __values$6 = (undefined && undefined.__values) || function(o) {\n    var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n    if (m) return m.call(o);\n    if (o && typeof o.length === \"number\") return {\n        next: function () {\n            if (o && i >= o.length) o = void 0;\n            return { value: o && o[i++], done: !o };\n        }\n    };\n    throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nvar TitleEdit = /** @class */ (function (_super) {\n    __extends$$(TitleEdit, _super);\n    function TitleEdit(chartMenu) {\n        var _this = _super.call(this, TitleEdit.TEMPLATE) || this;\n        _this.chartMenu = chartMenu;\n        _this.destroyableChartListeners = [];\n        _this.editing = false;\n        return _this;\n    }\n    TitleEdit.prototype.init = function () {\n        var _this = this;\n        this.addManagedListener(this.getGui(), 'keypress', function (e) {\n            if (_this.editing && e.key === 'Enter' && !e.shiftKey) {\n                _this.handleEndEditing();\n                e.preventDefault();\n            }\n        });\n        this.addManagedListener(this.getGui(), 'input', function () {\n            if (_this.editing) {\n                _this.updateHeight();\n            }\n        });\n        this.addManagedListener(this.getGui(), 'blur', function () { return _this.endEditing(); });\n    };\n    /* should be called when the containing component changes to a new chart proxy */\n    TitleEdit.prototype.refreshTitle = function (chartController, chartOptionsService) {\n        var e_1, _a;\n        var _this = this;\n        this.chartController = chartController;\n        this.chartOptionsService = chartOptionsService;\n        try {\n            for (var _b = __values$6(this.destroyableChartListeners), _c = _b.next(); !_c.done; _c = _b.next()) {\n                var destroyFn = _c.value;\n                destroyFn();\n            }\n        }\n        catch (e_1_1) { e_1 = { error: e_1_1 }; }\n        finally {\n            try {\n                if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n            }\n            finally { if (e_1) throw e_1.error; }\n        }\n        this.destroyableChartListeners = [];\n        var chartProxy = this.chartController.getChartProxy();\n        var chart = chartProxy.getChart();\n        var canvas = chart.scene.canvas.element;\n        var destroyDbleClickListener = this.addManagedListener(canvas, 'dblclick', function (event) {\n            var title = chart.title;\n            if (title && title.node.containsPoint(event.offsetX, event.offsetY)) {\n                var bbox = title.node.computeBBox();\n                var xy = title.node.inverseTransformPoint(bbox.x, bbox.y);\n                _this.startEditing(__assign$i(__assign$i({}, bbox), xy), canvas.width);\n            }\n        });\n        var wasInTitle = false;\n        var destroyMouseMoveListener = this.addManagedListener(canvas, 'mousemove', function (event) {\n            var title = chart.title;\n            var inTitle = !!(title && title.enabled && title.node.containsPoint(event.offsetX, event.offsetY));\n            if (wasInTitle !== inTitle) {\n                canvas.style.cursor = inTitle ? 'pointer' : '';\n            }\n            wasInTitle = inTitle;\n        });\n        this.destroyableChartListeners = [\n            destroyDbleClickListener,\n            destroyMouseMoveListener\n        ];\n    };\n    TitleEdit.prototype.startEditing = function (titleBBox, canvasWidth) {\n        if (this.chartMenu && this.chartMenu.isVisible()) {\n            // currently, we ignore requests to edit the chart title while the chart menu is showing\n            // because the click to edit the chart will also close the chart menu, making the position\n            // of the title change.\n            return;\n        }\n        if (this.editing) {\n            return;\n        }\n        this.editing = true;\n        var minimumTargetInputWidth = 300;\n        var inputWidth = Math.max(Math.min(titleBBox.width + 20, canvasWidth), minimumTargetInputWidth);\n        var element = this.getGui();\n        element.classList.add('currently-editing');\n        var inputStyle = element.style;\n        // match style of input to title that we're editing\n        inputStyle.fontFamily = this.chartOptionsService.getChartOption('title.fontFamily');\n        inputStyle.fontWeight = this.chartOptionsService.getChartOption('title.fontWeight');\n        inputStyle.fontStyle = this.chartOptionsService.getChartOption('title.fontStyle');\n        inputStyle.fontSize = this.chartOptionsService.getChartOption('title.fontSize') + 'px';\n        inputStyle.color = this.chartOptionsService.getChartOption('title.color');\n        // populate the input with the title, unless the title is the placeholder:\n        var oldTitle = this.chartOptionsService.getChartOption('title.text');\n        var isTitlePlaceholder = oldTitle === this.chartTranslationService.translate('titlePlaceholder');\n        element.value = isTitlePlaceholder ? '' : oldTitle;\n        var oldTitleLines = oldTitle.split(/\\r?\\n/g).length;\n        inputStyle.left = Math.round(titleBBox.x + titleBBox.width / 2 - inputWidth / 2 - 1) + 'px';\n        inputStyle.top = Math.round(titleBBox.y + titleBBox.height / 2 - (oldTitleLines * this.getLineHeight()) / 2 - 2) + 'px';\n        inputStyle.width = Math.round(inputWidth) + 'px';\n        inputStyle.lineHeight = this.getLineHeight() + 'px';\n        this.updateHeight();\n        element.focus();\n    };\n    TitleEdit.prototype.updateHeight = function () {\n        var element = this.getGui();\n        // The element should cover the title and provide enough space for the new one.\n        var oldTitleLines = this.chartOptionsService.getChartOption('title.text').split(/\\r?\\n/g).length;\n        var currentTitleLines = element.value.split(/\\r?\\n/g).length;\n        element.style.height = (Math.round(Math.max(oldTitleLines, currentTitleLines) * this.getLineHeight()) + 4) + 'px';\n    };\n    TitleEdit.prototype.getLineHeight = function () {\n        var fixedLineHeight = this.chartOptionsService.getChartOption('title.lineHeight');\n        if (fixedLineHeight) {\n            return parseInt(fixedLineHeight);\n        }\n        return Math.round(parseInt(this.chartOptionsService.getChartOption('title.fontSize')) * 1.2);\n    };\n    TitleEdit.prototype.handleEndEditing = function () {\n        // special handling to avoid flicker caused by delay when swapping old and new titles\n        var _this = this;\n        // 1 - store current title color\n        var titleColor = this.chartOptionsService.getChartOption('title.color');\n        // 2 - hide title by making it transparent\n        var transparentColor = 'rgba(0, 0, 0, 0)';\n        this.chartOptionsService.setChartOption('title.color', transparentColor);\n        // 3 - trigger 'end editing' - this will update the chart with the new title\n        this.chartOptionsService.awaitChartOptionUpdate(function () { return _this.endEditing(); });\n        // 4 - restore title color to its original value\n        this.chartOptionsService.awaitChartOptionUpdate(function () {\n            _this.chartOptionsService.setChartOption('title.color', titleColor);\n        });\n    };\n    TitleEdit.prototype.endEditing = function () {\n        var _this = this;\n        if (!this.editing) {\n            return;\n        }\n        this.editing = false;\n        var value = this.getGui().value;\n        if (value && value.trim() !== '') {\n            this.chartOptionsService.setChartOption('title.text', value);\n            this.chartOptionsService.setChartOption('title.enabled', true);\n        }\n        else {\n            this.chartOptionsService.setChartOption('title.text', '');\n            this.chartOptionsService.setChartOption('title.enabled', false);\n        }\n        this.getGui().classList.remove('currently-editing');\n        // await chart updates so `chartTitleEdit` event consumers can read the new state correctly\n        this.chartOptionsService.awaitChartOptionUpdate(function () {\n            _this.eventService.dispatchEvent({ type: 'chartTitleEdit' });\n        });\n    };\n    TitleEdit.TEMPLATE = \"<textarea\\n             class=\\\"ag-chart-title-edit\\\"\\n             style=\\\"padding:0; border:none; border-radius: 0; min-height: 0; text-align: center; resize: none;\\\" />\\n        \";\n    __decorate$O([\n        Autowired('chartTranslationService')\n    ], TitleEdit.prototype, \"chartTranslationService\", void 0);\n    __decorate$O([\n        PostConstruct\n    ], TitleEdit.prototype, \"init\", null);\n    return TitleEdit;\n}(Component));\n\nfunction deproxy(chartOrProxy) {\n    if (chartOrProxy.chart != null) {\n        return chartOrProxy.chart;\n    }\n    return chartOrProxy;\n}\n\nvar __assign$h = (undefined && undefined.__assign) || function () {\n    __assign$h = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign$h.apply(this, arguments);\n};\nvar ChartProxy = /** @class */ (function () {\n    function ChartProxy(chartProxyParams) {\n        this.chartProxyParams = chartProxyParams;\n        this.clearThemeOverrides = false;\n        this.chart = chartProxyParams.chartInstance;\n        this.chartType = chartProxyParams.chartType;\n        this.crossFiltering = chartProxyParams.crossFiltering;\n        this.crossFilterCallback = chartProxyParams.crossFilterCallback;\n        this.standaloneChartType = getSeriesType(this.chartType);\n        if (this.chart == null) {\n            this.chart = AgChart.create(this.getCommonChartOptions());\n        }\n        else {\n            // On chart change, reset formatting panel changes.\n            this.clearThemeOverrides = true;\n        }\n    }\n    ChartProxy.prototype.getChart = function () {\n        return deproxy(this.chart);\n    };\n    ChartProxy.prototype.getChartRef = function () {\n        return this.chart;\n    };\n    ChartProxy.prototype.downloadChart = function (dimensions, fileName, fileFormat) {\n        var chart = this.chart;\n        var rawChart = deproxy(chart);\n        var imageFileName = fileName || (rawChart.title ? rawChart.title.text : 'chart');\n        var _a = dimensions || {}, width = _a.width, height = _a.height;\n        AgChart.download(chart, { width: width, height: height, fileName: imageFileName, fileFormat: fileFormat });\n    };\n    ChartProxy.prototype.getChartImageDataURL = function (type) {\n        return this.getChart().scene.getDataURL(type);\n    };\n    ChartProxy.prototype.getChartOptions = function () {\n        return this.chart.getOptions();\n    };\n    ChartProxy.prototype.getChartThemeOverrides = function () {\n        var _a;\n        var chartOptionsTheme = this.getChartOptions().theme;\n        return (_a = chartOptionsTheme.overrides) !== null && _a !== void 0 ? _a : {};\n    };\n    ChartProxy.prototype.getChartPalette = function () {\n        return getChartTheme(this.getChartOptions().theme).palette;\n    };\n    ChartProxy.prototype.setPaired = function (paired) {\n        var _a;\n        // Special handling to make scatter charts operate in paired mode by default, where \n        // columns alternate between being X and Y (and size for bubble). In standard mode,\n        // the first column is used for X and every other column is treated as Y\n        // (or alternates between Y and size for bubble)\n        var seriesType = getSeriesType(this.chartProxyParams.chartType);\n        AgChart.updateDelta(this.chart, { theme: { overrides: (_a = {}, _a[seriesType] = { paired: paired }, _a) } });\n    };\n    ChartProxy.prototype.isPaired = function () {\n        var seriesType = getSeriesType(this.chartProxyParams.chartType);\n        return _.get(this.getChartThemeOverrides(), seriesType + \".paired\", true);\n    };\n    ChartProxy.prototype.lookupCustomChartTheme = function (themeName) {\n        return lookupCustomChartTheme(this.chartProxyParams, themeName);\n    };\n    ChartProxy.prototype.transformData = function (data, categoryKey, categoryAxis) {\n        if (categoryAxis) {\n            // replace the values for the selected category with a complex object to allow for duplicated categories\n            return data.map(function (d, index) {\n                var value = d[categoryKey];\n                var valueString = value && value.toString ? value.toString() : '';\n                var datum = __assign$h({}, d);\n                datum[categoryKey] = { id: index, value: value, toString: function () { return valueString; } };\n                return datum;\n            });\n        }\n        return data;\n    };\n    ChartProxy.prototype.getCommonChartOptions = function () {\n        var _a, _b;\n        // Only apply active overrides if chart is initialised.\n        var existingOptions = this.clearThemeOverrides ? {} : (_b = (_a = this.chart) === null || _a === void 0 ? void 0 : _a.getOptions()) !== null && _b !== void 0 ? _b : {};\n        var formattingPanelOverrides = this.chart != null ?\n            { overrides: this.getActiveFormattingPanelOverrides() } : {};\n        this.clearThemeOverrides = false;\n        return __assign$h(__assign$h({}, existingOptions), { theme: __assign$h(__assign$h({}, createAgChartTheme(this.chartProxyParams, this)), formattingPanelOverrides), container: this.chartProxyParams.parentElement, mode: 'integrated' });\n    };\n    ChartProxy.prototype.getActiveFormattingPanelOverrides = function () {\n        var _a, _b;\n        if (this.clearThemeOverrides) {\n            return {};\n        }\n        var inUseTheme = (_a = this.chart) === null || _a === void 0 ? void 0 : _a.getOptions().theme;\n        var overrides = (_b = inUseTheme === null || inUseTheme === void 0 ? void 0 : inUseTheme.overrides) !== null && _b !== void 0 ? _b : {};\n        return overrides;\n    };\n    ChartProxy.prototype.destroy = function (_a) {\n        var _b = (_a === void 0 ? {} : _a).keepChartInstance, keepChartInstance = _b === void 0 ? false : _b;\n        if (keepChartInstance) {\n            return this.chart;\n        }\n        this.destroyChart();\n    };\n    ChartProxy.prototype.destroyChart = function () {\n        if (this.chart) {\n            this.chart.destroy();\n            this.chart = undefined;\n        }\n    };\n    return ChartProxy;\n}());\n\nvar __extends$_ = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __assign$g = (undefined && undefined.__assign) || function () {\n    __assign$g = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign$g.apply(this, arguments);\n};\nvar CartesianChartProxy = /** @class */ (function (_super) {\n    __extends$_(CartesianChartProxy, _super);\n    function CartesianChartProxy(params) {\n        var _this = _super.call(this, params) || this;\n        _this.crossFilteringAllPoints = new Set();\n        _this.crossFilteringSelectedPoints = [];\n        return _this;\n    }\n    CartesianChartProxy.prototype.update = function (params) {\n        var axes = this.getAxes(params);\n        var options = __assign$g(__assign$g({}, this.getCommonChartOptions()), { data: this.getData(params, axes), axes: axes, series: this.getSeries(params) });\n        AgChart.update(this.getChartRef(), options);\n    };\n    CartesianChartProxy.prototype.getData = function (params, axes) {\n        var _a;\n        var supportsCrossFiltering = ['area', 'line'].includes(this.standaloneChartType);\n        var xPosition = this.standaloneChartType === 'bar' ? 'left' : 'bottom';\n        var xAxisIsCategory = ((_a = axes.find(function (o) { return o.position === xPosition; })) === null || _a === void 0 ? void 0 : _a.type) === 'category';\n        return this.crossFiltering && supportsCrossFiltering ?\n            this.getCrossFilterData(params) :\n            this.getDataTransformedData(params, xAxisIsCategory);\n    };\n    CartesianChartProxy.prototype.getDataTransformedData = function (params, isCategoryAxis) {\n        return this.transformData(params.data, params.category.id, isCategoryAxis);\n    };\n    CartesianChartProxy.prototype.getXAxisType = function (params) {\n        if (params.grouping) {\n            return 'groupedCategory';\n        }\n        else if (CartesianChartProxy.isTimeAxis(params)) {\n            return 'time';\n        }\n        return 'category';\n    };\n    CartesianChartProxy.isTimeAxis = function (params) {\n        if (params.category && params.category.chartDataType) {\n            return params.category.chartDataType === 'time';\n        }\n        var testDatum = params.data[0];\n        return (testDatum && testDatum[params.category.id]) instanceof Date;\n    };\n    CartesianChartProxy.prototype.crossFilteringReset = function () {\n        this.crossFilteringSelectedPoints = [];\n        this.crossFilteringAllPoints.clear();\n    };\n    CartesianChartProxy.prototype.crossFilteringPointSelected = function (point) {\n        return this.crossFilteringSelectedPoints.length == 0 || this.crossFilteringSelectedPoints.includes(point);\n    };\n    CartesianChartProxy.prototype.crossFilteringDeselectedPoints = function () {\n        return this.crossFilteringSelectedPoints.length > 0 &&\n            this.crossFilteringAllPoints.size !== this.crossFilteringSelectedPoints.length;\n    };\n    CartesianChartProxy.prototype.extractLineAreaCrossFilterSeries = function (series, params) {\n        var _this = this;\n        var getYKey = function (yKey) {\n            if (_this.standaloneChartType === 'area') {\n                var lastSelectedChartId = params.getCrossFilteringContext().lastSelectedChartId;\n                return (lastSelectedChartId === params.chartId) ? yKey + '-total' : yKey;\n            }\n            return yKey + '-total';\n        };\n        return series.map(function (s) {\n            s.yKey = getYKey(s.yKey);\n            s.listeners = {\n                nodeClick: function (e) {\n                    var value = e.datum[s.xKey];\n                    var multiSelection = e.event.metaKey || e.event.ctrlKey;\n                    _this.crossFilteringAddSelectedPoint(multiSelection, value);\n                    _this.crossFilterCallback(e);\n                }\n            };\n            s.marker = {\n                formatter: function (p) {\n                    var category = p.datum[params.category.id];\n                    return {\n                        fill: p.highlighted ? 'yellow' : p.fill,\n                        size: p.highlighted ? 14 : _this.crossFilteringPointSelected(category) ? 8 : 0,\n                    };\n                }\n            };\n            if (_this.standaloneChartType === 'area') {\n                s.fillOpacity = _this.crossFilteringDeselectedPoints() ? 0.3 : 1;\n            }\n            if (_this.standaloneChartType === 'line') {\n                s.strokeOpacity = _this.crossFilteringDeselectedPoints() ? 0.3 : 1;\n            }\n            return s;\n        });\n    };\n    CartesianChartProxy.prototype.getCrossFilterData = function (params) {\n        var _this = this;\n        this.crossFilteringAllPoints.clear();\n        var colId = params.fields[0].colId;\n        var filteredOutColId = colId + \"-filtered-out\";\n        var lastSelectedChartId = params.getCrossFilteringContext().lastSelectedChartId;\n        return params.data.map(function (d) {\n            var category = d[params.category.id];\n            _this.crossFilteringAllPoints.add(category);\n            var pointSelected = _this.crossFilteringPointSelected(category);\n            if (_this.standaloneChartType === 'area' && lastSelectedChartId === params.chartId) {\n                d[colId + \"-total\"] = pointSelected ? d[colId] : d[colId] + d[filteredOutColId];\n            }\n            if (_this.standaloneChartType === 'line') {\n                d[colId + \"-total\"] = pointSelected ? d[colId] : d[colId] + d[filteredOutColId];\n            }\n            return d;\n        });\n    };\n    CartesianChartProxy.prototype.crossFilteringAddSelectedPoint = function (multiSelection, value) {\n        multiSelection ? this.crossFilteringSelectedPoints.push(value) : this.crossFilteringSelectedPoints = [value];\n    };\n    return CartesianChartProxy;\n}(ChartProxy));\n\n// deepMerge\nfunction emptyTarget(value) {\n    return Array.isArray(value) ? [] : {};\n}\nfunction cloneUnlessOtherwiseSpecified(value, options) {\n    return (options.clone !== false && options.isMergeableObject(value))\n        ? deepMerge(emptyTarget(value), value, options)\n        : value;\n}\nfunction defaultArrayMerge(target, source, options) {\n    return target.concat(source).map(function (element) {\n        return cloneUnlessOtherwiseSpecified(element, options);\n    });\n}\nfunction getMergeFunction(key, options) {\n    if (!options.customMerge) {\n        return deepMerge;\n    }\n    var customMerge = options.customMerge(key);\n    return typeof customMerge === 'function' ? customMerge : deepMerge;\n}\nfunction getEnumerableOwnPropertySymbols(target) {\n    // @ts-ignore\n    return Object.getOwnPropertySymbols\n        // @ts-ignore\n        ? Object.getOwnPropertySymbols(target).filter(function (symbol) {\n            return target.propertyIsEnumerable(symbol);\n        })\n        : [];\n}\nfunction getKeys(target) {\n    return Object.keys(target).concat(getEnumerableOwnPropertySymbols(target));\n}\nfunction propertyIsOnObject(object, property) {\n    try {\n        return property in object;\n    }\n    catch (_) {\n        return false;\n    }\n}\n// Protects from prototype poisoning and unexpected merging up the prototype chain.\nfunction propertyIsUnsafe(target, key) {\n    return propertyIsOnObject(target, key) // Properties are safe to merge if they don't exist in the target yet,\n        && !(Object.hasOwnProperty.call(target, key) // unsafe if they exist up the prototype chain,\n            && Object.propertyIsEnumerable.call(target, key)); // and also unsafe if they're nonenumerable.\n}\nfunction mergeObject(target, source, options) {\n    if (target === void 0) { target = {}; }\n    if (source === void 0) { source = {}; }\n    var destination = {};\n    if (options.isMergeableObject(target)) {\n        getKeys(target).forEach(function (key) {\n            destination[key] = cloneUnlessOtherwiseSpecified(target[key], options);\n        });\n    }\n    getKeys(source).forEach(function (key) {\n        if (propertyIsUnsafe(target, key)) {\n            return;\n        }\n        if (propertyIsOnObject(target, key) && options.isMergeableObject(source[key])) {\n            destination[key] = getMergeFunction(key, options)(target[key], source[key], options);\n        }\n        else {\n            destination[key] = cloneUnlessOtherwiseSpecified(source[key], options);\n        }\n    });\n    return destination;\n}\nfunction defaultIsMergeableObject(value) {\n    return isNonNullObject(value) && !isSpecial(value);\n}\nfunction isNonNullObject(value) {\n    return !!value && typeof value === 'object';\n}\nfunction isSpecial(value) {\n    var stringValue = Object.prototype.toString.call(value);\n    return stringValue === '[object RegExp]' || stringValue === '[object Date]';\n}\nfunction deepMerge(target, source, options) {\n    options = options || {};\n    options.arrayMerge = options.arrayMerge || defaultArrayMerge;\n    options.isMergeableObject = options.isMergeableObject || defaultIsMergeableObject;\n    // cloneUnlessOtherwiseSpecified is added to `options` so that custom arrayMerge()\n    // implementations can use it. The caller may not replace it.\n    options.cloneUnlessOtherwiseSpecified = cloneUnlessOtherwiseSpecified;\n    var sourceIsArray = Array.isArray(source);\n    var targetIsArray = Array.isArray(target);\n    var sourceAndTargetTypesMatch = sourceIsArray === targetIsArray;\n    if (!sourceAndTargetTypesMatch) {\n        return cloneUnlessOtherwiseSpecified(source, options);\n    }\n    else if (sourceIsArray) {\n        return options.arrayMerge(target, source, options);\n    }\n    else {\n        return mergeObject(target, source, options);\n    }\n}\n\nfunction hexToRGBA(hex, alpha) {\n    var r = parseInt(hex.slice(1, 3), 16);\n    var g = parseInt(hex.slice(3, 5), 16);\n    var b = parseInt(hex.slice(5, 7), 16);\n    return alpha ? \"rgba(\" + r + \", \" + g + \", \" + b + \", \" + alpha + \")\" : \"rgba(\" + r + \", \" + g + \", \" + b + \")\";\n}\nfunction changeOpacity(fills, alpha) {\n    return fills.map(function (fill) {\n        var c = Color.fromString(fill);\n        return new Color(c.r, c.g, c.b, alpha).toHexString();\n    });\n}\n\nvar __extends$Z = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __assign$f = (undefined && undefined.__assign) || function () {\n    __assign$f = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign$f.apply(this, arguments);\n};\nvar BarChartProxy = /** @class */ (function (_super) {\n    __extends$Z(BarChartProxy, _super);\n    function BarChartProxy(params) {\n        return _super.call(this, params) || this;\n    }\n    BarChartProxy.prototype.getAxes = function (params) {\n        var isBar = this.standaloneChartType === 'bar';\n        var axes = [\n            {\n                type: this.getXAxisType(params),\n                position: isBar ? 'left' : 'bottom',\n            },\n            {\n                type: 'number',\n                position: isBar ? 'bottom' : 'left',\n            },\n        ];\n        // Add a default label formatter to show '%' for normalized charts if none is provided\n        if (this.isNormalised()) {\n            var numberAxis = axes[1];\n            numberAxis.label = __assign$f(__assign$f({}, numberAxis.label), { formatter: function (params) { return Math.round(params.value) + '%'; } });\n        }\n        return axes;\n    };\n    BarChartProxy.prototype.getSeries = function (params) {\n        var _this = this;\n        var groupedCharts = ['groupedColumn', 'groupedBar'];\n        var isGrouped = !this.crossFiltering && _.includes(groupedCharts, this.chartType);\n        var series = params.fields.map(function (f) { return ({\n            type: _this.standaloneChartType,\n            grouped: isGrouped,\n            normalizedTo: _this.isNormalised() ? 100 : undefined,\n            xKey: params.category.id,\n            xName: params.category.name,\n            yKey: f.colId,\n            yName: f.displayName\n        }); });\n        return this.crossFiltering ? this.extractCrossFilterSeries(series) : series;\n    };\n    BarChartProxy.prototype.extractCrossFilterSeries = function (series) {\n        var _this = this;\n        var palette = this.getChartPalette();\n        var updatePrimarySeries = function (seriesOptions, index) {\n            return __assign$f(__assign$f({}, seriesOptions), { highlightStyle: { item: { fill: undefined } }, fill: palette === null || palette === void 0 ? void 0 : palette.fills[index], stroke: palette === null || palette === void 0 ? void 0 : palette.strokes[index], listeners: {\n                    nodeClick: _this.crossFilterCallback\n                } });\n        };\n        var updateFilteredOutSeries = function (seriesOptions) {\n            var yKey = seriesOptions.yKey + '-filtered-out';\n            return __assign$f(__assign$f({}, deepMerge({}, seriesOptions)), { yKey: yKey, fill: hexToRGBA(seriesOptions.fill, '0.3'), stroke: hexToRGBA(seriesOptions.stroke, '0.3'), hideInLegend: [yKey] });\n        };\n        var allSeries = [];\n        for (var i = 0; i < series.length; i++) {\n            // update primary series\n            var primarySeries = updatePrimarySeries(series[i], i);\n            allSeries.push(primarySeries);\n            // add 'filtered-out' series\n            allSeries.push(updateFilteredOutSeries(primarySeries));\n        }\n        return allSeries;\n    };\n    BarChartProxy.prototype.isNormalised = function () {\n        var normalisedCharts = ['normalizedColumn', 'normalizedBar'];\n        return !this.crossFiltering && _.includes(normalisedCharts, this.chartType);\n    };\n    return BarChartProxy;\n}(CartesianChartProxy));\n\nvar __extends$Y = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __assign$e = (undefined && undefined.__assign) || function () {\n    __assign$e = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign$e.apply(this, arguments);\n};\nvar AreaChartProxy = /** @class */ (function (_super) {\n    __extends$Y(AreaChartProxy, _super);\n    function AreaChartProxy(params) {\n        return _super.call(this, params) || this;\n    }\n    AreaChartProxy.prototype.getAxes = function (params) {\n        var axes = [\n            {\n                type: this.getXAxisType(params),\n                position: 'bottom',\n            },\n            {\n                type: 'number',\n                position: 'left',\n            },\n        ];\n        // Add a default label formatter to show '%' for normalized charts if none is provided\n        if (this.isNormalised()) {\n            var numberAxis = axes[1];\n            numberAxis.label = __assign$e(__assign$e({}, numberAxis.label), { formatter: function (params) { return Math.round(params.value) + '%'; } });\n        }\n        return axes;\n    };\n    AreaChartProxy.prototype.getSeries = function (params) {\n        var _this = this;\n        var series = params.fields.map(function (f) { return ({\n            type: _this.standaloneChartType,\n            xKey: params.category.id,\n            xName: params.category.name,\n            yKey: f.colId,\n            yName: f.displayName,\n            normalizedTo: _this.chartType === 'normalizedArea' ? 100 : undefined,\n            stacked: ['normalizedArea', 'stackedArea'].includes(_this.chartType)\n        }); });\n        return this.crossFiltering ? this.extractLineAreaCrossFilterSeries(series, params) : series;\n    };\n    AreaChartProxy.prototype.isNormalised = function () {\n        return !this.crossFiltering && this.chartType === 'normalizedArea';\n    };\n    return AreaChartProxy;\n}(CartesianChartProxy));\n\nvar __extends$X = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar LineChartProxy = /** @class */ (function (_super) {\n    __extends$X(LineChartProxy, _super);\n    function LineChartProxy(params) {\n        return _super.call(this, params) || this;\n    }\n    LineChartProxy.prototype.getAxes = function (params) {\n        return [\n            {\n                type: this.getXAxisType(params),\n                position: 'bottom'\n            },\n            {\n                type: 'number',\n                position: 'left'\n            },\n        ];\n    };\n    LineChartProxy.prototype.getSeries = function (params) {\n        var _this = this;\n        var series = params.fields.map(function (f) { return ({\n            type: _this.standaloneChartType,\n            xKey: params.category.id,\n            xName: params.category.name,\n            yKey: f.colId,\n            yName: f.displayName\n        }); });\n        return this.crossFiltering ? this.extractLineAreaCrossFilterSeries(series, params) : series;\n    };\n    return LineChartProxy;\n}(CartesianChartProxy));\n\nvar __extends$W = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __assign$d = (undefined && undefined.__assign) || function () {\n    __assign$d = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign$d.apply(this, arguments);\n};\nvar PieChartProxy = /** @class */ (function (_super) {\n    __extends$W(PieChartProxy, _super);\n    function PieChartProxy(params) {\n        return _super.call(this, params) || this;\n    }\n    PieChartProxy.prototype.update = function (params) {\n        var data = params.data, category = params.category;\n        var options = __assign$d(__assign$d({}, this.getCommonChartOptions()), { data: this.crossFiltering ? this.getCrossFilterData(params) : this.transformData(data, category.id), series: this.getSeries(params) });\n        AgChart.update(this.getChartRef(), options);\n    };\n    PieChartProxy.prototype.getSeries = function (params) {\n        var _this = this;\n        var numFields = params.fields.length;\n        var offset = {\n            currentOffset: 0,\n            offsetAmount: numFields > 1 ? 20 : 40\n        };\n        var series = this.getFields(params).map(function (f) {\n            var _a;\n            // options shared by 'pie' and 'doughnut' charts\n            var options = {\n                type: _this.standaloneChartType,\n                angleKey: f.colId,\n                angleName: f.displayName,\n                sectorLabelKey: f.colId,\n                calloutLabelKey: params.category.id,\n                calloutLabelName: params.category.name,\n            };\n            if (_this.chartType === 'doughnut') {\n                var _b = PieChartProxy.calculateOffsets(offset), outerRadiusOffset = _b.outerRadiusOffset, innerRadiusOffset = _b.innerRadiusOffset;\n                var title = f.displayName ? {\n                    title: { text: f.displayName, showInLegend: numFields > 1 },\n                } : undefined;\n                // augment shared options with 'doughnut' specific options\n                return __assign$d(__assign$d(__assign$d(__assign$d({}, options), { outerRadiusOffset: outerRadiusOffset,\n                    innerRadiusOffset: innerRadiusOffset }), title), { calloutLine: {\n                        colors: (_a = _this.getChartPalette()) === null || _a === void 0 ? void 0 : _a.strokes,\n                    } });\n            }\n            return options;\n        });\n        return this.crossFiltering ? this.extractCrossFilterSeries(series) : series;\n    };\n    PieChartProxy.prototype.getCrossFilterData = function (params) {\n        var colId = params.fields[0].colId;\n        var filteredOutColId = colId + \"-filtered-out\";\n        return params.data.map(function (d) {\n            var total = d[colId] + d[filteredOutColId];\n            d[colId + \"-total\"] = total;\n            d[filteredOutColId] = 1; // normalise to 1\n            d[colId] = d[colId] / total; // fraction of 1\n            return d;\n        });\n    };\n    PieChartProxy.prototype.extractCrossFilterSeries = function (series) {\n        var _this = this;\n        var palette = this.getChartPalette();\n        var primaryOptions = function (seriesOptions) {\n            return __assign$d(__assign$d({}, seriesOptions), { calloutLabel: { enabled: false }, highlightStyle: { item: { fill: undefined } }, radiusKey: seriesOptions.angleKey, angleKey: seriesOptions.angleKey + '-total', radiusMin: 0, radiusMax: 1, listeners: {\n                    nodeClick: _this.crossFilterCallback,\n                } });\n        };\n        var filteredOutOptions = function (seriesOptions, angleKey) {\n            var _a, _b;\n            return __assign$d(__assign$d({}, deepMerge({}, primaryOpts)), { radiusKey: angleKey + '-filtered-out', fills: changeOpacity((_a = seriesOptions.fills) !== null && _a !== void 0 ? _a : palette.fills, 0.3), strokes: changeOpacity((_b = seriesOptions.strokes) !== null && _b !== void 0 ? _b : palette.strokes, 0.3), showInLegend: false });\n        };\n        // currently, only single 'doughnut' cross-filter series are supported\n        var primarySeries = series[0];\n        // update primary series\n        var angleKey = primarySeries.angleKey;\n        var primaryOpts = primaryOptions(primarySeries);\n        return [\n            filteredOutOptions(primarySeries, angleKey),\n            primaryOpts,\n        ];\n    };\n    PieChartProxy.calculateOffsets = function (offset) {\n        var outerRadiusOffset = offset.currentOffset;\n        offset.currentOffset -= offset.offsetAmount;\n        var innerRadiusOffset = offset.currentOffset;\n        offset.currentOffset -= offset.offsetAmount;\n        return { outerRadiusOffset: outerRadiusOffset, innerRadiusOffset: innerRadiusOffset };\n    };\n    PieChartProxy.prototype.getFields = function (params) {\n        return this.chartType === 'pie' ? params.fields.slice(0, 1) : params.fields;\n    };\n    PieChartProxy.prototype.crossFilteringReset = function () {\n        // not required in pie charts\n    };\n    return PieChartProxy;\n}(ChartProxy));\n\nvar __extends$V = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __assign$c = (undefined && undefined.__assign) || function () {\n    __assign$c = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign$c.apply(this, arguments);\n};\nvar __values$5 = (undefined && undefined.__values) || function(o) {\n    var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n    if (m) return m.call(o);\n    if (o && typeof o.length === \"number\") return {\n        next: function () {\n            if (o && i >= o.length) o = void 0;\n            return { value: o && o[i++], done: !o };\n        }\n    };\n    throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nvar __read$e = (undefined && undefined.__read) || function (o, n) {\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n    if (!m) return o;\n    var i = m.call(o), r, ar = [], e;\n    try {\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n    }\n    catch (error) { e = { error: error }; }\n    finally {\n        try {\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\n        }\n        finally { if (e) throw e.error; }\n    }\n    return ar;\n};\nvar __spread$7 = (undefined && undefined.__spread) || function () {\n    for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read$e(arguments[i]));\n    return ar;\n};\nvar ScatterChartProxy = /** @class */ (function (_super) {\n    __extends$V(ScatterChartProxy, _super);\n    function ScatterChartProxy(params) {\n        return _super.call(this, params) || this;\n    }\n    ScatterChartProxy.prototype.getAxes = function (_params) {\n        return [\n            {\n                type: 'number',\n                position: 'bottom',\n            },\n            {\n                type: 'number',\n                position: 'left',\n            },\n        ];\n    };\n    ScatterChartProxy.prototype.getSeries = function (params) {\n        var _this = this;\n        var paired = this.isPaired();\n        var seriesDefinitions = this.getSeriesDefinitions(params.fields, paired);\n        var labelFieldDefinition = params.category.id === ChartDataModel.DEFAULT_CATEGORY ? undefined : params.category;\n        var series = seriesDefinitions.map(function (seriesDefinition) { return ({\n            type: _this.standaloneChartType,\n            xKey: seriesDefinition.xField.colId,\n            xName: seriesDefinition.xField.displayName,\n            yKey: seriesDefinition.yField.colId,\n            yName: seriesDefinition.yField.displayName,\n            title: seriesDefinition.yField.displayName + \" vs \" + seriesDefinition.xField.displayName,\n            sizeKey: seriesDefinition.sizeField ? seriesDefinition.sizeField.colId : undefined,\n            sizeName: seriesDefinition.sizeField ? seriesDefinition.sizeField.displayName : undefined,\n            labelKey: labelFieldDefinition ? labelFieldDefinition.id : seriesDefinition.yField.colId,\n            labelName: labelFieldDefinition ? labelFieldDefinition.name : undefined,\n        }); });\n        return this.crossFiltering ? this.extractCrossFilterSeries(series, params) : series;\n    };\n    ScatterChartProxy.prototype.extractCrossFilterSeries = function (series, params) {\n        var _this = this;\n        var data = params.data;\n        var palette = this.getChartPalette();\n        var filteredOutKey = function (key) { return key + \"-filtered-out\"; };\n        var calcMarkerDomain = function (data, sizeKey) {\n            var e_1, _a;\n            var _b;\n            var markerDomain = [Infinity, -Infinity];\n            if (sizeKey != null) {\n                try {\n                    for (var data_1 = __values$5(data), data_1_1 = data_1.next(); !data_1_1.done; data_1_1 = data_1.next()) {\n                        var datum = data_1_1.value;\n                        var value = (_b = datum[sizeKey]) !== null && _b !== void 0 ? _b : datum[filteredOutKey(sizeKey)];\n                        if (value < markerDomain[0]) {\n                            markerDomain[0] = value;\n                        }\n                        if (value > markerDomain[1]) {\n                            markerDomain[1] = value;\n                        }\n                    }\n                }\n                catch (e_1_1) { e_1 = { error: e_1_1 }; }\n                finally {\n                    try {\n                        if (data_1_1 && !data_1_1.done && (_a = data_1.return)) _a.call(data_1);\n                    }\n                    finally { if (e_1) throw e_1.error; }\n                }\n            }\n            if (markerDomain[0] <= markerDomain[1]) {\n                return markerDomain;\n            }\n            return undefined;\n        };\n        var updatePrimarySeries = function (series, idx) {\n            var sizeKey = series.sizeKey;\n            var fill = palette === null || palette === void 0 ? void 0 : palette.fills[idx];\n            var stroke = palette === null || palette === void 0 ? void 0 : palette.strokes[idx];\n            var markerDomain = calcMarkerDomain(data, sizeKey);\n            var marker = __assign$c(__assign$c({}, series.marker), { fill: fill,\n                stroke: stroke, domain: markerDomain });\n            return __assign$c(__assign$c({}, series), { marker: marker, highlightStyle: { item: { fill: 'yellow' } }, listeners: __assign$c(__assign$c({}, series.listeners), { nodeClick: _this.crossFilterCallback }) });\n        };\n        var updateFilteredOutSeries = function (series) {\n            var sizeKey = series.sizeKey, yKey = series.yKey, xKey = series.xKey;\n            if (sizeKey != null) {\n                sizeKey = filteredOutKey(sizeKey);\n            }\n            return __assign$c(__assign$c({}, series), { yKey: filteredOutKey(yKey), xKey: filteredOutKey(xKey), marker: __assign$c(__assign$c({}, series.marker), { fillOpacity: 0.3, strokeOpacity: 0.3 }), sizeKey: sizeKey, showInLegend: false, listeners: __assign$c(__assign$c({}, series.listeners), { nodeClick: function (e) {\n                        var _a;\n                        var value = e.datum[filteredOutKey(xKey)];\n                        // Need to remove the `-filtered-out` suffixes from the event so that\n                        // upstream processing maps the event correctly onto grid column ids.\n                        var filterableEvent = __assign$c(__assign$c({}, e), { xKey: xKey, datum: __assign$c(__assign$c({}, e.datum), (_a = {}, _a[xKey] = value, _a)) });\n                        _this.crossFilterCallback(filterableEvent);\n                    } }) });\n        };\n        var updatedSeries = series.map(updatePrimarySeries);\n        return __spread$7(updatedSeries, updatedSeries.map(updateFilteredOutSeries));\n    };\n    ScatterChartProxy.prototype.getSeriesDefinitions = function (fields, paired) {\n        if (fields.length < 2) {\n            return [];\n        }\n        var isBubbleChart = this.chartType === 'bubble';\n        if (paired) {\n            if (isBubbleChart) {\n                return fields.map(function (currentXField, i) { return i % 3 === 0 ? ({\n                    xField: currentXField,\n                    yField: fields[i + 1],\n                    sizeField: fields[i + 2],\n                }) : null; }).filter(function (x) { return x && x.yField && x.sizeField; });\n            }\n            return fields.map(function (currentXField, i) { return i % 2 === 0 ? ({\n                xField: currentXField,\n                yField: fields[i + 1],\n            }) : null; }).filter(function (x) { return x && x.yField; });\n        }\n        var xField = fields[0];\n        if (isBubbleChart) {\n            return fields\n                .map(function (yField, i) { return i % 2 === 1 ? ({\n                xField: xField,\n                yField: yField,\n                sizeField: fields[i + 1],\n            }) : null; })\n                .filter(function (x) { return x && x.sizeField; });\n        }\n        return fields.filter(function (value, i) { return i > 0; }).map(function (yField) { return ({ xField: xField, yField: yField }); });\n    };\n    return ScatterChartProxy;\n}(CartesianChartProxy));\n\nvar __extends$U = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar HistogramChartProxy = /** @class */ (function (_super) {\n    __extends$U(HistogramChartProxy, _super);\n    function HistogramChartProxy(params) {\n        return _super.call(this, params) || this;\n    }\n    HistogramChartProxy.prototype.getSeries = function (params) {\n        var firstField = params.fields[0]; // multiple series are not supported!\n        return [\n            {\n                type: this.standaloneChartType,\n                xKey: firstField.colId,\n                xName: firstField.displayName,\n                yName: this.chartProxyParams.translate(\"histogramFrequency\"),\n                areaPlot: false,\n            }\n        ];\n    };\n    HistogramChartProxy.prototype.getAxes = function (_params) {\n        return [\n            {\n                type: 'number',\n                position: 'bottom',\n            },\n            {\n                type: 'number',\n                position: 'left',\n            },\n        ];\n    };\n    return HistogramChartProxy;\n}(CartesianChartProxy));\n\nvar __extends$T = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar ChartOptionsService = /** @class */ (function (_super) {\n    __extends$T(ChartOptionsService, _super);\n    function ChartOptionsService(chartController) {\n        var _this = _super.call(this) || this;\n        _this.chartController = chartController;\n        return _this;\n    }\n    ChartOptionsService.prototype.getChartOption = function (expression) {\n        // TODO: We shouldn't be reading the chart implementation directly, but right now\n        // it isn't possible to either get option defaults OR retrieve themed options.\n        return _.get(this.getChart(), expression, undefined);\n    };\n    ChartOptionsService.prototype.setChartOption = function (expression, value, isSilent) {\n        var _this = this;\n        var chartSeriesTypes = this.chartController.getChartSeriesTypes();\n        if (this.chartController.isComboChart()) {\n            chartSeriesTypes.push('cartesian');\n        }\n        var chartOptions = {};\n        // we need to update chart options on each series type for combo charts\n        chartSeriesTypes.forEach(function (seriesType) {\n            chartOptions = deepMerge(chartOptions, _this.createChartOptions({\n                seriesType: seriesType,\n                expression: expression,\n                value: value\n            }));\n        });\n        this.updateChart(chartOptions);\n        if (!isSilent) {\n            this.raiseChartOptionsChangedEvent();\n        }\n    };\n    ChartOptionsService.prototype.awaitChartOptionUpdate = function (func) {\n        var chart = this.chartController.getChartProxy().getChart();\n        chart.waitForUpdate().then(function () { return func(); });\n    };\n    ChartOptionsService.prototype.getAxisProperty = function (expression) {\n        var _a;\n        return _.get((_a = this.getChart().axes) === null || _a === void 0 ? void 0 : _a[0], expression, undefined);\n    };\n    ChartOptionsService.prototype.setAxisProperty = function (expression, value) {\n        var _this = this;\n        var _a;\n        // update axis options\n        var chart = this.getChart();\n        var chartOptions = {};\n        (_a = chart.axes) === null || _a === void 0 ? void 0 : _a.forEach(function (axis) {\n            chartOptions = deepMerge(chartOptions, _this.getUpdateAxisOptions(axis, expression, value));\n        });\n        this.updateChart(chartOptions);\n        this.raiseChartOptionsChangedEvent();\n    };\n    ChartOptionsService.prototype.getLabelRotation = function (axisType) {\n        var axis = this.getAxis(axisType);\n        return _.get(axis, 'label.rotation', undefined);\n    };\n    ChartOptionsService.prototype.setLabelRotation = function (axisType, value) {\n        var chartAxis = this.getAxis(axisType);\n        if (chartAxis) {\n            var chartOptions = this.getUpdateAxisOptions(chartAxis, 'label.rotation', value);\n            this.updateChart(chartOptions);\n            this.raiseChartOptionsChangedEvent();\n        }\n    };\n    ChartOptionsService.prototype.getSeriesOption = function (expression, seriesType) {\n        var series = this.getChart().series.find(function (s) { return ChartOptionsService.isMatchingSeries(seriesType, s); });\n        return _.get(series, expression, undefined);\n    };\n    ChartOptionsService.prototype.setSeriesOption = function (expression, value, seriesType) {\n        var chartOptions = this.createChartOptions({\n            seriesType: seriesType,\n            expression: \"series.\" + expression,\n            value: value\n        });\n        this.updateChart(chartOptions);\n        this.raiseChartOptionsChangedEvent();\n    };\n    ChartOptionsService.prototype.getPairedMode = function () {\n        return this.chartController.getChartProxy().isPaired();\n    };\n    ChartOptionsService.prototype.setPairedMode = function (paired) {\n        this.chartController.getChartProxy().setPaired(paired);\n    };\n    ChartOptionsService.prototype.getAxis = function (axisType) {\n        var chart = this.getChart();\n        if (!chart.axes || chart.axes.length < 1) {\n            return undefined;\n        }\n        if (axisType === 'xAxis') {\n            return (chart.axes && chart.axes[0].direction === 'x') ? chart.axes[0] : chart.axes[1];\n        }\n        return (chart.axes && chart.axes[1].direction === 'y') ? chart.axes[1] : chart.axes[0];\n    };\n    ChartOptionsService.prototype.getUpdateAxisOptions = function (chartAxis, expression, value) {\n        var seriesType = getSeriesType(this.getChartType());\n        var validAxisTypes = ['number', 'category', 'time', 'groupedCategory'];\n        if (!validAxisTypes.includes(chartAxis.type)) {\n            return {};\n        }\n        return this.createChartOptions({\n            seriesType: seriesType,\n            expression: \"axes.\" + chartAxis.type + \".\" + expression,\n            value: value\n        });\n    };\n    ChartOptionsService.prototype.getChartType = function () {\n        return this.chartController.getChartType();\n    };\n    ChartOptionsService.prototype.getChart = function () {\n        return this.chartController.getChartProxy().getChart();\n    };\n    ChartOptionsService.prototype.updateChart = function (chartOptions) {\n        var chartRef = this.chartController.getChartProxy().getChartRef();\n        AgChart.updateDelta(chartRef, chartOptions);\n    };\n    ChartOptionsService.prototype.createChartOptions = function (_a) {\n        var seriesType = _a.seriesType, expression = _a.expression, value = _a.value;\n        var overrides = {};\n        var chartOptions = {\n            theme: {\n                overrides: overrides\n            }\n        };\n        _.set(overrides, seriesType + \".\" + expression, value);\n        return chartOptions;\n    };\n    ChartOptionsService.prototype.raiseChartOptionsChangedEvent = function () {\n        var chartModel = this.chartController.getChartModel();\n        var event = {\n            type: Events.EVENT_CHART_OPTIONS_CHANGED,\n            chartId: chartModel.chartId,\n            chartType: chartModel.chartType,\n            chartThemeName: this.chartController.getChartThemeName(),\n            chartOptions: chartModel.chartOptions\n        };\n        this.eventService.dispatchEvent(event);\n    };\n    ChartOptionsService.isMatchingSeries = function (seriesType, series) {\n        var mapTypeToImplType = function (type) { return type === 'column' ? 'bar' : type; };\n        return VALID_SERIES_TYPES.includes(seriesType) &&\n            series.type === mapTypeToImplType(seriesType);\n    };\n    ChartOptionsService.prototype.destroy = function () {\n        _super.prototype.destroy.call(this);\n    };\n    return ChartOptionsService;\n}(BeanStub));\n\nvar __extends$S = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar ComboChartProxy = /** @class */ (function (_super) {\n    __extends$S(ComboChartProxy, _super);\n    function ComboChartProxy(params) {\n        return _super.call(this, params) || this;\n    }\n    ComboChartProxy.prototype.getAxes = function (params) {\n        var fields = params ? params.fields : [];\n        var fieldsMap = new Map(fields.map(function (f) { return [f.colId, f]; }));\n        var _a = this.getYKeys(fields, params.seriesChartTypes), primaryYKeys = _a.primaryYKeys, secondaryYKeys = _a.secondaryYKeys;\n        var axes = [\n            {\n                type: this.getXAxisType(params),\n                position: 'bottom',\n                gridStyle: [{ stroke: undefined }],\n            },\n        ];\n        if (primaryYKeys.length > 0) {\n            axes.push({\n                type: 'number',\n                keys: primaryYKeys,\n                position: 'left',\n                title: {\n                    text: primaryYKeys.map(function (key) {\n                        var field = fieldsMap.get(key);\n                        return field ? field.displayName : key;\n                    }).join(' / '),\n                },\n            });\n        }\n        if (secondaryYKeys.length > 0) {\n            secondaryYKeys.forEach(function (secondaryYKey, i) {\n                var field = fieldsMap.get(secondaryYKey);\n                var secondaryAxisIsVisible = field && field.colId === secondaryYKey;\n                if (!secondaryAxisIsVisible) {\n                    return;\n                }\n                var secondaryAxisOptions = {\n                    type: 'number',\n                    keys: [secondaryYKey],\n                    position: 'right',\n                    title: {\n                        text: field ? field.displayName : secondaryYKey,\n                    },\n                };\n                var primaryYAxis = primaryYKeys.some(function (primaryYKey) { return !!fieldsMap.get(primaryYKey); });\n                var lastSecondaryAxis = i === secondaryYKeys.length - 1;\n                if (!primaryYAxis && lastSecondaryAxis) ;\n                else {\n                    secondaryAxisOptions.gridStyle = [{ stroke: undefined }];\n                }\n                axes.push(secondaryAxisOptions);\n            });\n        }\n        return axes;\n    };\n    ComboChartProxy.prototype.getSeries = function (params) {\n        var fields = params.fields, category = params.category, seriesChartTypes = params.seriesChartTypes;\n        return fields.map(function (field) {\n            var seriesChartType = seriesChartTypes.find(function (s) { return s.colId === field.colId; });\n            if (seriesChartType) {\n                var chartType = seriesChartType.chartType;\n                return {\n                    type: getSeriesType(chartType),\n                    xKey: category.id,\n                    yKey: field.colId,\n                    yName: field.displayName,\n                    grouped: ['groupedColumn', 'groupedBar', 'groupedArea'].includes(chartType),\n                    stacked: ['stackedArea', 'stackedColumn'].includes(chartType),\n                };\n            }\n        });\n    };\n    ComboChartProxy.prototype.getYKeys = function (fields, seriesChartTypes) {\n        var primaryYKeys = [];\n        var secondaryYKeys = [];\n        fields.forEach(function (field) {\n            var colId = field.colId;\n            var seriesChartType = seriesChartTypes.find(function (s) { return s.colId === colId; });\n            if (seriesChartType) {\n                seriesChartType.secondaryAxis ? secondaryYKeys.push(colId) : primaryYKeys.push(colId);\n            }\n        });\n        return { primaryYKeys: primaryYKeys, secondaryYKeys: secondaryYKeys };\n    };\n    return ComboChartProxy;\n}(CartesianChartProxy));\n\nvar __extends$R = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$N = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar GridChartComp = /** @class */ (function (_super) {\n    __extends$R(GridChartComp, _super);\n    function GridChartComp(params) {\n        var _this = _super.call(this, GridChartComp.TEMPLATE) || this;\n        _this.params = params;\n        return _this;\n    }\n    GridChartComp.prototype.init = function () {\n        var _this = this;\n        var availableChartThemes = this.gridOptionsService.get('chartThemes') || DEFAULT_THEMES;\n        if (availableChartThemes.length < 1) {\n            throw new Error('Cannot create chart: no chart themes are available to be used.');\n        }\n        var chartThemeName = this.params.chartThemeName;\n        if (!_.includes(availableChartThemes, chartThemeName)) {\n            chartThemeName = availableChartThemes[0];\n        }\n        var modelParams = {\n            chartId: this.params.chartId,\n            pivotChart: this.params.pivotChart,\n            chartType: this.params.chartType,\n            chartThemeName: chartThemeName,\n            aggFunc: this.params.aggFunc,\n            cellRange: this.params.cellRange,\n            suppressChartRanges: this.params.suppressChartRanges,\n            unlinkChart: this.params.unlinkChart,\n            crossFiltering: this.params.crossFiltering,\n            seriesChartTypes: this.params.seriesChartTypes,\n        };\n        var isRtl = this.gridOptionsService.is('enableRtl');\n        this.addCssClass(isRtl ? 'ag-rtl' : 'ag-ltr');\n        // only the chart controller interacts with the chart model\n        var model = this.createBean(new ChartDataModel(modelParams));\n        this.chartController = this.createManagedBean(new ChartController(model));\n        this.validateCustomThemes();\n        // create chart before dialog to ensure dialog is correct size\n        this.createChart();\n        if (this.params.insideDialog) {\n            this.addDialog();\n        }\n        this.addMenu();\n        this.addTitleEditComp();\n        this.addManagedListener(this.getGui(), 'focusin', this.setActiveChartCellRange.bind(this));\n        this.addManagedListener(this.chartController, ChartController.EVENT_CHART_MODEL_UPDATE, this.update.bind(this));\n        if (this.chartMenu) {\n            // chart menu may not exist, i.e. cross filtering\n            this.addManagedListener(this.chartMenu, ChartMenu.EVENT_DOWNLOAD_CHART, function () { return _this.downloadChart(); });\n        }\n        this.update();\n        this.raiseChartCreatedEvent();\n    };\n    GridChartComp.prototype.validateCustomThemes = function () {\n        var suppliedThemes = this.getChartThemes();\n        var customChartThemes = this.gridOptionsService.get('customChartThemes');\n        if (customChartThemes) {\n            _.getAllKeysInObjects([customChartThemes]).forEach(function (customThemeName) {\n                if (!_.includes(suppliedThemes, customThemeName)) {\n                    console.warn(\"AG Grid: a custom chart theme with the name '\" + customThemeName + \"' has been \" +\n                        \"supplied but not added to the 'chartThemes' list\");\n                }\n            });\n        }\n    };\n    GridChartComp.prototype.createChart = function () {\n        var _this = this;\n        // if chart already exists, destroy it and remove it from DOM\n        var chartInstance = undefined;\n        if (this.chartProxy) {\n            chartInstance = this.chartProxy.destroy({ keepChartInstance: true });\n        }\n        var crossFilterCallback = function (event, reset) {\n            var ctx = _this.params.crossFilteringContext;\n            ctx.lastSelectedChartId = reset ? '' : _this.chartController.getChartId();\n            if (reset) {\n                _this.params.crossFilteringResetCallback();\n            }\n            _this.crossFilterService.filter(event, reset);\n        };\n        var chartType = this.chartController.getChartType();\n        var chartProxyParams = {\n            chartType: chartType,\n            chartInstance: chartInstance,\n            getChartThemeName: this.getChartThemeName.bind(this),\n            getChartThemes: this.getChartThemes.bind(this),\n            customChartThemes: this.gridOptionsService.get('customChartThemes'),\n            getGridOptionsChartThemeOverrides: function () { return _this.getGridOptionsChartThemeOverrides(); },\n            getExtraPaddingDirections: function () { var _a, _b; return (_b = (_a = _this.chartMenu) === null || _a === void 0 ? void 0 : _a.getExtraPaddingDirections()) !== null && _b !== void 0 ? _b : []; },\n            apiChartThemeOverrides: this.params.chartThemeOverrides,\n            crossFiltering: this.params.crossFiltering,\n            crossFilterCallback: crossFilterCallback,\n            parentElement: this.eChart,\n            grouping: this.chartController.isGrouping(),\n            chartThemeToRestore: this.params.chartThemeName,\n            chartOptionsToRestore: this.params.chartOptionsToRestore,\n            chartPaletteToRestore: this.params.chartPaletteToRestore,\n            seriesChartTypes: this.chartController.getSeriesChartTypes(),\n            translate: function (toTranslate, defaultText) { return _this.chartTranslationService.translate(toTranslate, defaultText); },\n        };\n        // ensure 'restoring' options are not reused when switching chart types\n        this.params.chartOptionsToRestore = undefined;\n        // set local state used to detect when chart changes\n        this.chartType = chartType;\n        this.chartThemeName = this.chartController.getChartThemeName();\n        this.chartProxy = GridChartComp.createChartProxy(chartProxyParams);\n        if (!this.chartProxy) {\n            console.warn('AG Grid: invalid chart type supplied: ', chartProxyParams.chartType);\n            return;\n        }\n        var canvas = this.eChart.querySelector('canvas');\n        if (canvas) {\n            canvas.classList.add('ag-charts-canvas');\n        }\n        this.chartController.setChartProxy(this.chartProxy);\n        this.chartOptionsService = this.createBean(new ChartOptionsService(this.chartController));\n        this.titleEdit && this.titleEdit.refreshTitle(this.chartController, this.chartOptionsService);\n    };\n    GridChartComp.prototype.getChartThemeName = function () {\n        return this.chartController.getChartThemeName();\n    };\n    GridChartComp.prototype.getChartThemes = function () {\n        return this.chartController.getThemes();\n    };\n    GridChartComp.prototype.getGridOptionsChartThemeOverrides = function () {\n        return this.gridOptionsService.get('chartThemeOverrides');\n    };\n    GridChartComp.createChartProxy = function (chartProxyParams) {\n        switch (chartProxyParams.chartType) {\n            case 'column':\n            case 'bar':\n            case 'groupedColumn':\n            case 'stackedColumn':\n            case 'normalizedColumn':\n            case 'groupedBar':\n            case 'stackedBar':\n            case 'normalizedBar':\n                return new BarChartProxy(chartProxyParams);\n            case 'pie':\n            case 'doughnut':\n                return new PieChartProxy(chartProxyParams);\n            case 'area':\n            case 'stackedArea':\n            case 'normalizedArea':\n                return new AreaChartProxy(chartProxyParams);\n            case 'line':\n                return new LineChartProxy(chartProxyParams);\n            case 'scatter':\n            case 'bubble':\n                return new ScatterChartProxy(chartProxyParams);\n            case 'histogram':\n                return new HistogramChartProxy(chartProxyParams);\n            case 'columnLineCombo':\n            case 'areaColumnCombo':\n            case 'customCombo':\n                return new ComboChartProxy(chartProxyParams);\n            default:\n                throw \"AG Grid: Unable to create chart as an invalid chartType = '\" + chartProxyParams.chartType + \"' was supplied.\";\n        }\n    };\n    GridChartComp.prototype.addDialog = function () {\n        var _this = this;\n        var title = this.chartTranslationService.translate(this.params.pivotChart ? 'pivotChartTitle' : 'rangeChartTitle');\n        var _a = this.getBestDialogSize(), width = _a.width, height = _a.height;\n        this.chartDialog = new AgDialog({\n            resizable: true,\n            movable: true,\n            maximizable: true,\n            title: title,\n            width: width,\n            height: height,\n            component: this,\n            centered: true,\n            closable: true\n        });\n        this.getContext().createBean(this.chartDialog);\n        this.chartDialog.addEventListener(AgDialog.EVENT_DESTROYED, function () { return _this.destroy(); });\n    };\n    GridChartComp.prototype.getBestDialogSize = function () {\n        var popupParent = this.popupService.getPopupParent();\n        var maxWidth = _.getAbsoluteWidth(popupParent) * 0.75;\n        var maxHeight = _.getAbsoluteHeight(popupParent) * 0.75;\n        var ratio = 0.553;\n        var chart = this.chartProxy.getChart();\n        var width = this.params.insideDialog ? 850 : chart.width;\n        var height = this.params.insideDialog ? 470 : chart.height;\n        if (width > maxWidth || height > maxHeight) {\n            width = Math.min(width, maxWidth);\n            height = Math.round(width * ratio);\n            if (height > maxHeight) {\n                height = maxHeight;\n                width = Math.min(width, Math.round(height / ratio));\n            }\n        }\n        return { width: width, height: height };\n    };\n    GridChartComp.prototype.addMenu = function () {\n        if (!this.params.crossFiltering) {\n            this.chartMenu = this.createBean(new ChartMenu(this.eChartContainer, this.eMenuContainer, this.chartController, this.chartOptionsService));\n            this.eChartContainer.appendChild(this.chartMenu.getGui());\n        }\n    };\n    GridChartComp.prototype.addTitleEditComp = function () {\n        this.titleEdit = this.createBean(new TitleEdit(this.chartMenu));\n        this.eTitleEditContainer.appendChild(this.titleEdit.getGui());\n        if (this.chartProxy) {\n            this.titleEdit.refreshTitle(this.chartController, this.chartOptionsService);\n        }\n    };\n    GridChartComp.prototype.update = function () {\n        if (this.shouldRecreateChart()) {\n            this.createChart();\n        }\n        this.updateChart();\n    };\n    GridChartComp.prototype.shouldRecreateChart = function () {\n        return this.chartType !== this.chartController.getChartType() || this.chartThemeName !== this.chartController.getChartThemeName();\n    };\n    GridChartComp.prototype.getCurrentChartType = function () {\n        return this.chartType;\n    };\n    GridChartComp.prototype.getChartModel = function () {\n        return this.chartController.getChartModel();\n    };\n    GridChartComp.prototype.getChartImageDataURL = function (fileFormat) {\n        return this.chartProxy.getChartImageDataURL(fileFormat);\n    };\n    GridChartComp.prototype.updateChart = function () {\n        var _this = this;\n        var chartProxy = this.chartProxy;\n        var selectedCols = this.chartController.getSelectedValueColState();\n        var fields = selectedCols.map(function (c) { return ({ colId: c.colId, displayName: c.displayName }); });\n        var data = this.chartController.getChartData();\n        var chartEmpty = this.handleEmptyChart(data, fields);\n        if (chartEmpty) {\n            return;\n        }\n        var chartUpdateParams = this.chartController.getChartUpdateParams();\n        chartProxy.update(chartUpdateParams);\n        this.chartProxy.getChart().waitForUpdate().then(function () {\n            _this.chartController.raiseChartUpdatedEvent();\n        });\n        this.titleEdit.refreshTitle(this.chartController, this.chartOptionsService);\n    };\n    GridChartComp.prototype.handleEmptyChart = function (data, fields) {\n        var pivotModeDisabled = this.chartController.isPivotChart() && !this.chartController.isPivotMode();\n        var minFieldsRequired = 1;\n        if (this.chartController.isActiveXYChart()) {\n            minFieldsRequired = this.chartController.getChartType() === 'bubble' ? 3 : 2;\n        }\n        var isEmptyChart = fields.length < minFieldsRequired || data.length === 0;\n        if (this.eChart) {\n            var isEmpty = pivotModeDisabled || isEmptyChart;\n            _.setDisplayed(this.eChart, !isEmpty);\n            _.setDisplayed(this.eEmpty, isEmpty);\n        }\n        if (pivotModeDisabled) {\n            this.eEmpty.innerText = this.chartTranslationService.translate('pivotChartRequiresPivotMode');\n            return true;\n        }\n        if (isEmptyChart) {\n            this.eEmpty.innerText = this.chartTranslationService.translate('noDataToChart');\n            return true;\n        }\n        return false;\n    };\n    GridChartComp.prototype.downloadChart = function (dimensions, fileName, fileFormat) {\n        this.chartProxy.downloadChart(dimensions, fileName, fileFormat);\n    };\n    GridChartComp.prototype.openChartToolPanel = function (panel) {\n        var menuPanel = panel ? CHART_TOOL_PANEL_MENU_OPTIONS[panel] : panel;\n        this.chartMenu.showMenu(menuPanel);\n    };\n    GridChartComp.prototype.closeChartToolPanel = function () {\n        this.chartMenu.hideMenu();\n    };\n    GridChartComp.prototype.getChartId = function () {\n        return this.chartController.getChartId();\n    };\n    GridChartComp.prototype.getUnderlyingChart = function () {\n        return this.chartProxy.getChartRef();\n    };\n    GridChartComp.prototype.crossFilteringReset = function () {\n        this.chartProxy.crossFilteringReset();\n    };\n    GridChartComp.prototype.setActiveChartCellRange = function (focusEvent) {\n        if (this.getGui().contains(focusEvent.relatedTarget)) {\n            return;\n        }\n        this.chartController.setChartRange(true);\n        this.gridApi.focusService.clearFocusedCell();\n    };\n    GridChartComp.prototype.raiseChartCreatedEvent = function () {\n        var _this = this;\n        var event = {\n            type: Events.EVENT_CHART_CREATED,\n            chartId: this.chartController.getChartId()\n        };\n        this.chartProxy.getChart().waitForUpdate().then(function () {\n            _this.eventService.dispatchEvent(event);\n        });\n    };\n    GridChartComp.prototype.raiseChartDestroyedEvent = function () {\n        var event = {\n            type: Events.EVENT_CHART_DESTROYED,\n            chartId: this.chartController.getChartId(),\n        };\n        this.eventService.dispatchEvent(event);\n    };\n    GridChartComp.prototype.destroy = function () {\n        _super.prototype.destroy.call(this);\n        if (this.chartProxy) {\n            this.chartProxy.destroy();\n        }\n        this.destroyBean(this.chartMenu);\n        this.destroyBean(this.titleEdit);\n        // don't want to invoke destroy() on the Dialog (prevents destroy loop)\n        if (this.chartDialog && this.chartDialog.isAlive()) {\n            this.destroyBean(this.chartDialog);\n        }\n        // if the user is providing containers for the charts, we need to clean up, otherwise the old chart\n        // data will still be visible although the chart is no longer bound to the grid\n        var eGui = this.getGui();\n        _.clearElement(eGui);\n        // remove from parent, so if user provided container, we detach from the provided dom element\n        _.removeFromParent(eGui);\n        this.raiseChartDestroyedEvent();\n    };\n    GridChartComp.TEMPLATE = \"<div class=\\\"ag-chart\\\" tabindex=\\\"-1\\\">\\n            <div ref=\\\"eChartContainer\\\" tabindex=\\\"-1\\\" class=\\\"ag-chart-components-wrapper\\\">\\n                <div ref=\\\"eChart\\\" class=\\\"ag-chart-canvas-wrapper\\\"></div>\\n                <div ref=\\\"eEmpty\\\" class=\\\"ag-chart-empty-text ag-unselectable\\\"></div>\\n            </div>\\n            <div ref=\\\"eTitleEditContainer\\\"></div>\\n            <div ref=\\\"eMenuContainer\\\" class=\\\"ag-chart-docked-container\\\"></div>\\n        </div>\";\n    __decorate$N([\n        RefSelector('eChart')\n    ], GridChartComp.prototype, \"eChart\", void 0);\n    __decorate$N([\n        RefSelector('eChartContainer')\n    ], GridChartComp.prototype, \"eChartContainer\", void 0);\n    __decorate$N([\n        RefSelector('eMenuContainer')\n    ], GridChartComp.prototype, \"eMenuContainer\", void 0);\n    __decorate$N([\n        RefSelector('eEmpty')\n    ], GridChartComp.prototype, \"eEmpty\", void 0);\n    __decorate$N([\n        RefSelector('eTitleEditContainer')\n    ], GridChartComp.prototype, \"eTitleEditContainer\", void 0);\n    __decorate$N([\n        Autowired('chartCrossFilterService')\n    ], GridChartComp.prototype, \"crossFilterService\", void 0);\n    __decorate$N([\n        Autowired('chartTranslationService')\n    ], GridChartComp.prototype, \"chartTranslationService\", void 0);\n    __decorate$N([\n        Autowired('gridApi')\n    ], GridChartComp.prototype, \"gridApi\", void 0);\n    __decorate$N([\n        Autowired('popupService')\n    ], GridChartComp.prototype, \"popupService\", void 0);\n    __decorate$N([\n        PostConstruct\n    ], GridChartComp.prototype, \"init\", null);\n    return GridChartComp;\n}(Component));\n\n// DO NOT UPDATE MANUALLY: Generated from script during build time\nvar VERSION$a = '29.3.5';\n\nvar __assign$b = (undefined && undefined.__assign) || function () {\n    __assign$b = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign$b.apply(this, arguments);\n};\nvar __rest = (undefined && undefined.__rest) || function (s, e) {\n    var t = {};\n    for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n        t[p] = s[p];\n    if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n        for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n            if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n                t[p[i]] = s[p[i]];\n        }\n    return t;\n};\nvar __read$d = (undefined && undefined.__read) || function (o, n) {\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n    if (!m) return o;\n    var i = m.call(o), r, ar = [], e;\n    try {\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n    }\n    catch (error) { e = { error: error }; }\n    finally {\n        try {\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\n        }\n        finally { if (e) throw e.error; }\n    }\n    return ar;\n};\nvar __values$4 = (undefined && undefined.__values) || function(o) {\n    var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n    if (m) return m.call(o);\n    if (o && typeof o.length === \"number\") return {\n        next: function () {\n            if (o && i >= o.length) o = void 0;\n            return { value: o && o[i++], done: !o };\n        }\n    };\n    throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nfunction upgradeChartModel(model) {\n    model.version;\n    if (model.version == null) {\n        // Try to guess the version so we can apply the right subset of migrations.\n        model.version = heuristicVersionDetection(model);\n    }\n    model = migrateIfBefore('23.0.0', model, migrateV23);\n    model = migrateIfBefore('24.0.0', model, migrateV24);\n    model = migrateIfBefore('25.1.0', model, migrateV25_1);\n    model = migrateIfBefore('26.0.0', model, migrateV26);\n    model = migrateIfBefore('26.1.0', model, migrateV26_1);\n    // Switch from iChartOptions to iAgChartOptions....\n    model = migrateIfBefore('26.2.0', model, migrateV26_2);\n    model = migrateIfBefore('28.0.0', model, migrateV28);\n    model = migrateIfBefore('28.2.0', model, migrateV28_2);\n    model = migrateIfBefore('29.0.0', model, migrateV29);\n    model = cleanup(model);\n    // Bump version to latest.\n    model = migrateIfBefore(VERSION$a, model, function (m) { return m; });\n    return model;\n}\nfunction migrateV23(model) {\n    // https://github.com/ag-grid/ag-grid/commit/76c6744ff2b732d298d1ade73c122188854b5bac\n    model = jsonRename('chartOptions.legend.item.marker.type', 'shape', model);\n    model = jsonRename('chartOptions.seriesDefaults.marker.type', 'shape', model);\n    // https://github.com/ag-grid/ag-grid/commit/7bdf2cfd666acda758a818733a9f9cb35ac1d7a7\n    model = jsonRename('chartOptions.legend.padding', 'spacing', model);\n    return model;\n}\nfunction migrateV24(model) {\n    var _a;\n    // https://github.com/ag-grid/ag-grid/commit/f4e854e3dc459400fa00e6da2873cb8e9cfff6fe#\n    model = jsonDelete('chartOptions.seriesDefaults.marker.minSize', model);\n    var _b = model, chartType = _b.chartType, chartPalette = _b.chartPalette, // Migrate.\n    _c = _b.chartOptions, xAxis = _c.xAxis, yAxis = _c.yAxis, chartOptions = __rest(_c, [\"xAxis\", \"yAxis\"]), chartModel = __rest(_b, [\"chartType\", \"chartPalette\", \"chartOptions\"]);\n    var axesTypes = getLegacyAxisType(chartType);\n    var axes = axesTypes === null || axesTypes === void 0 ? void 0 : axesTypes.map(function (type, i) { return (__assign$b({ type: type }, (i === 0 ? xAxis : yAxis))); });\n    return __assign$b({ chartType: chartType, chartThemeName: (_a = LEGACY_PALETTES[chartPalette]) !== null && _a !== void 0 ? _a : 'ag-default', chartOptions: __assign$b(__assign$b({}, chartOptions), { axes: axes,\n            xAxis: xAxis,\n            yAxis: yAxis }) }, chartModel);\n}\nfunction migrateV25_1(model) {\n    // https://github.com/ag-grid/ag-grid/commit/61943f9fecbfb5ac1b9a1fd93788f9fdd8687181\n    model = jsonRename('chartOptions.seriesDefaults.label.minRequiredAngle', 'minAngle', model);\n    return model;\n}\nfunction migrateV26(model) {\n    // https://github.com/ag-grid/ag-grid/commit/df2445d88e64cb4e831d6163104a0fa60ccde3b5\n    var highlightOptUpdate = function (_a) {\n        var dimOpacity = _a.dimOpacity, opts = __rest(_a, [\"dimOpacity\"]);\n        return (__assign$b(__assign$b({}, opts), (dimOpacity != null ? { series: { dimOpacity: dimOpacity } } : {})));\n    };\n    model = jsonMutate('chartOptions.seriesDefaults.highlightStyle', model, highlightOptUpdate);\n    // https://github.com/ag-grid/ag-grid/commit/f4e854e3dc459400fa00e6da2873cb8e9cfff6fe#\n    model = jsonDelete('chart', model);\n    model = jsonDelete('chartOptions.seriesDefaults.tooltipClass', model);\n    model = jsonDelete('chartOptions.seriesDefaults.tooltipTracking', model);\n    // Cleanup label.rotation === 0, which was treated as 'use the default' on reload prior to 26.\n    model = jsonDeleteDefault('chartOptions.axes[].label.rotation', 0, model);\n    model = jsonDeleteDefault('chartOptions.axes[].label.rotation', 335, model);\n    return model;\n}\nfunction migrateV26_1(model) {\n    // https://github.com/ag-grid/ag-grid/commit/df2445d88e64cb4e831d6163104a0fa60ccde3b5\n    var highlightOptUpdate = function (_a) {\n        var item = _a.item, series = _a.series, opts = __rest(_a, [\"item\", \"series\"]);\n        return (__assign$b({ item: __assign$b(__assign$b({}, opts), item) }, (series ? { series: series } : {})));\n    };\n    model = jsonMutate('chartOptions.seriesDefaults.highlightStyle', model, highlightOptUpdate);\n    model = jsonMutate('chartOptions.series[].highlightStyle', model, highlightOptUpdate);\n    return model;\n}\nfunction migrateV26_2(model) {\n    // https://github.com/ag-grid/ag-grid/commit/8b2e223cb1a687cb6c1d70b9f75f52fa29d00341\n    model = jsonMove('chartOptions.seriesDefaults.fill.opacity', 'chartOptions.seriesDefaults.fillOpacity', model);\n    model = jsonMove('chartOptions.seriesDefaults.stroke.opacity', 'chartOptions.seriesDefaults.strokeOpacity', model);\n    model = jsonMove('chartOptions.seriesDefaults.stroke.width', 'chartOptions.seriesDefaults.strokeWidth', model);\n    model = jsonDelete('chartOptions.seriesDefaults.fill', model);\n    model = jsonDelete('chartOptions.seriesDefaults.stroke', model);\n    model = jsonDelete('chartOptions.seriesDefaults.callout.colors', model);\n    model = jsonDelete('chartOptions.xAxis', model);\n    model = jsonDelete('chartOptions.yAxis', model);\n    var _a = model, chartType = _a.chartType, _b = _a.chartOptions, axes = _b.axes; _b.series; var seriesDefaults = _b.seriesDefaults, otherChartOptions = __rest(_b, [\"axes\", \"series\", \"seriesDefaults\"]), otherModelProps = __rest(_a, [\"chartType\", \"chartOptions\"]);\n    // At 26.2.0 combination charts weren't supported, so we can safely assume a single series type.\n    // We can't rely on the `series.type` field as it was incorrect (in v25.0.0 line chart has an\n    // `area` series).\n    var seriesTypes = [getSeriesType(chartType)];\n    var chartTypeMixin = {};\n    if (!seriesTypes.includes('pie')) {\n        var minimalAxis_1 = { top: {}, bottom: {}, left: {}, right: {} };\n        var updatedAxes_1 = axes\n            .map(function (_a) {\n            var _b;\n            var type = _a.type, axisProps = __rest(_a, [\"type\"]);\n            return (_b = {},\n                _b[type] = __assign$b(__assign$b({}, minimalAxis_1), axisProps),\n                _b);\n        })\n            .reduce(merge, {});\n        ALL_AXIS_TYPES.filter(function (v) { return updatedAxes_1[v] == null; }).forEach(function (v) {\n            updatedAxes_1[v] = __assign$b({}, minimalAxis_1);\n        });\n        chartTypeMixin.axes = updatedAxes_1;\n    }\n    var updatedChartOptions = seriesTypes\n        .map(function (t) {\n        var _a;\n        return (_a = {},\n            _a[t] = __assign$b(__assign$b(__assign$b({}, chartTypeMixin), { series: seriesDefaults }), otherChartOptions),\n            _a);\n    })\n        .reduce(merge, {});\n    model = __assign$b(__assign$b({}, otherModelProps), { chartType: chartType, chartOptions: updatedChartOptions });\n    return model;\n}\nfunction migrateV28(model) {\n    model = jsonDelete('chartOptions.*.title.padding', model);\n    model = jsonDelete('chartOptions.*.subtitle.padding', model);\n    model = jsonDelete('chartOptions.*.axes.*.title.padding', model);\n    model = jsonBackfill('chartOptions.*.axes.*.title.enabled', false, model);\n    return model;\n}\nfunction migrateV28_2(model) {\n    model = jsonRename('chartOptions.pie.series.callout', 'calloutLine', model);\n    model = jsonRename('chartOptions.pie.series.label', 'calloutLabel', model);\n    // series.yKeys => yKey ?\n    // series.yNames => yName ?\n    return model;\n}\nfunction migrateV29(model) {\n    model = jsonMoveIfMissing('chartOptions.scatter.series.fill', 'chartOptions.scatter.series.marker.fill', model);\n    model = jsonMoveIfMissing('chartOptions.scatter.series.fillOpacity', 'chartOptions.scatter.series.marker.fillOpacity', model);\n    model = jsonMoveIfMissing('chartOptions.scatter.series.stroke', 'chartOptions.scatter.series.marker.stroke', model);\n    model = jsonMoveIfMissing('chartOptions.scatter.series.strokeOpacity', 'chartOptions.scatter.series.marker.strokeOpacity', model);\n    model = jsonMoveIfMissing('chartOptions.scatter.series.strokeWidth', 'chartOptions.scatter.series.marker.strokeWidth', model);\n    model = jsonMove('chartOptions.scatter.series.paired', 'chartOptions.scatter.paired', model);\n    return model;\n}\nfunction cleanup(model) {\n    // Remove fixed width/height - this has never been supported via UI configuration.\n    model = jsonDelete('chartOptions.*.width', model);\n    model = jsonDelete('chartOptions.*.height', model);\n    model = jsonBackfill('chartOptions.*.axes.category.label.autoRotate', true, model);\n    return model;\n}\nfunction heuristicVersionDetection(model) {\n    var _a, _b;\n    var modelAny = model;\n    if (model.version != null) {\n        return model.version;\n    }\n    var hasKey = function (obj) {\n        var keys = [];\n        for (var _i = 1; _i < arguments.length; _i++) {\n            keys[_i - 1] = arguments[_i];\n        }\n        return Object.keys(obj || {}).some(function (k) { return keys.includes(k); });\n    };\n    var chartOptions = modelAny.chartOptions;\n    var seriesOptions = hasKey(chartOptions, 'seriesDefaults')\n        ? chartOptions === null || chartOptions === void 0 ? void 0 : chartOptions.seriesDefaults : chartOptions === null || chartOptions === void 0 ? void 0 : chartOptions[Object.keys(chartOptions)[0]];\n    var hints = {\n        '27.0.0': hasKey(modelAny, 'seriesChartTypes'),\n        '26.2.0': !hasKey(chartOptions, 'seriesDefaults'),\n        '26.1.0': hasKey(seriesOptions === null || seriesOptions === void 0 ? void 0 : seriesOptions.highlightStyle, 'item'),\n        '26.0.0': hasKey(seriesOptions === null || seriesOptions === void 0 ? void 0 : seriesOptions.highlightStyle, 'series'),\n        // '26.0.0': modelAny.chart === undefined,\n        '25.1.0': hasKey(seriesOptions === null || seriesOptions === void 0 ? void 0 : seriesOptions.label, 'minAngle'),\n        '25.0.0': hasKey(modelAny, 'modelType', 'aggFunc', 'unlinkChart', 'suppressChartRanges') ||\n            hasKey(seriesOptions, 'lineDash', 'lineDashOffset'),\n        '24.0.0': hasKey(modelAny, 'chartThemeName', 'chart') || hasKey(chartOptions, 'series'),\n        '23.2.0': hasKey(chartOptions, 'navigator'),\n        '23.0.0': hasKey((_b = (_a = chartOptions === null || chartOptions === void 0 ? void 0 : chartOptions.legend) === null || _a === void 0 ? void 0 : _a.item) === null || _b === void 0 ? void 0 : _b.marker, 'shape'),\n        '22.1.0': hasKey(modelAny, 'chartPalette', 'chartType'),\n    };\n    // Default to 27.1.0, the last version before we added `version`.\n    var defaultVersion = '27.1.0';\n    var matchingHints = Object.entries(hints).filter(function (_a) {\n        var _b = __read$d(_a, 2); _b[0]; var match = _b[1];\n        return match;\n    });\n    var _c = __read$d(matchingHints[0], 1), _d = _c[0], heuristicVersion = _d === void 0 ? defaultVersion : _d;\n    return heuristicVersion;\n}\nfunction migrateIfBefore(maxVersion, model, migration) {\n    if (versionNumber(maxVersion) > versionNumber(model.version)) {\n        var result = migration(model);\n        result.version = maxVersion;\n        return result;\n    }\n    return model;\n}\nfunction versionParts(version) {\n    var split = typeof version === 'string' ? version.split('.').map(function (v) { return Number(v); }) : [];\n    if (split.length !== 3 || split.some(function (v) { return isNaN(v); })) {\n        throw new Error('AG Grid - Illegal version string: ' + version);\n    }\n    return {\n        major: split[0],\n        minor: split[1],\n        patch: split[2],\n    };\n}\nfunction versionNumber(version) {\n    var _a = versionParts(version), major = _a.major, minor = _a.minor, patch = _a.patch;\n    // Return a number of the form MMmmPP.\n    return major * 10000 + minor * 100 + patch;\n}\nfunction jsonDeleteDefault(path, defaultValue, json) {\n    return jsonMutateProperty(path, true, json, function (parent, prop) {\n        if (parent[prop] === defaultValue) {\n            delete parent[prop];\n        }\n    });\n}\nfunction jsonBackfill(path, defaultValue, json) {\n    return jsonMutateProperty(path, false, json, function (parent, prop) {\n        if (parent[prop] == null) {\n            parent[prop] = defaultValue;\n        }\n    });\n}\nfunction jsonMove(from, to, json) {\n    var valueToMove = undefined;\n    var valueFound = false;\n    json = jsonMutateProperty(from, true, json, function (parent, prop) {\n        valueFound = true;\n        valueToMove = parent[prop];\n        delete parent[prop];\n    });\n    if (!valueFound) {\n        return json;\n    }\n    return jsonMutateProperty(to, false, json, function (parent, prop) {\n        parent[prop] = valueToMove;\n    });\n}\nfunction jsonMoveIfMissing(from, to, json) {\n    var valueToMove = undefined;\n    var valueFound = false;\n    json = jsonMutateProperty(from, true, json, function (parent, prop) {\n        valueFound = true;\n        valueToMove = parent[prop];\n        delete parent[prop];\n    });\n    if (!valueFound) {\n        return json;\n    }\n    return jsonMutateProperty(to, false, json, function (parent, prop) {\n        if (parent[prop] === undefined) {\n            parent[prop] = valueToMove;\n        }\n    });\n}\nfunction jsonRename(path, renameTo, json) {\n    return jsonMutateProperty(path, true, json, function (parent, prop) {\n        parent[renameTo] = parent[prop];\n        delete parent[prop];\n    });\n}\nfunction jsonDelete(path, json) {\n    return jsonMutateProperty(path, true, json, function (parent, prop) { return delete parent[prop]; });\n}\nfunction jsonMutateProperty(path, skipMissing, json, mutator) {\n    var pathElements = path instanceof Array ? path : path.split('.');\n    var parentPathElements = pathElements.slice(0, pathElements.length - 1);\n    var targetName = pathElements[pathElements.length - 1];\n    return jsonMutate(parentPathElements, json, function (parent) {\n        var hasProperty = Object.keys(parent).includes(targetName);\n        if (skipMissing && !hasProperty) {\n            return parent;\n        }\n        var result = __assign$b({}, parent);\n        mutator(result, targetName);\n        return result;\n    });\n}\nfunction jsonMutate(path, json, mutator) {\n    var e_1, _a;\n    var pathElements = path instanceof Array ? path : path.split('.');\n    // Clone to avoid mutating original input.\n    json = __assign$b({}, json);\n    if (pathElements.length === 0) {\n        return mutator(json);\n    }\n    else if (pathElements[0].startsWith('{')) {\n        var pathOptions = pathElements[0].substring(1, pathElements[0].lastIndexOf('}')).split(',');\n        try {\n            for (var pathOptions_1 = __values$4(pathOptions), pathOptions_1_1 = pathOptions_1.next(); !pathOptions_1_1.done; pathOptions_1_1 = pathOptions_1.next()) {\n                var pathOption = pathOptions_1_1.value;\n                if (json[pathOption] != null) {\n                    json[pathOption] = jsonMutate(pathElements.slice(1), json[pathOption], mutator);\n                }\n            }\n        }\n        catch (e_1_1) { e_1 = { error: e_1_1 }; }\n        finally {\n            try {\n                if (pathOptions_1_1 && !pathOptions_1_1.done && (_a = pathOptions_1.return)) _a.call(pathOptions_1);\n            }\n            finally { if (e_1) throw e_1.error; }\n        }\n    }\n    else if (pathElements[0].endsWith('[]')) {\n        var arrayName = pathElements[0].substring(0, path[0].indexOf('['));\n        if (json[arrayName] instanceof Array) {\n            json[arrayName] = json[arrayName].map(function (v) { return jsonMutate(pathElements.slice(1), v, mutator); });\n        }\n    }\n    else if (pathElements[0] === '*') {\n        for (var jsonProp in json) {\n            json[jsonProp] = jsonMutate(pathElements.slice(1), json[jsonProp], mutator);\n        }\n    }\n    else if (json[pathElements[0]] != null) {\n        json[pathElements[0]] = jsonMutate(pathElements.slice(1), json[pathElements[0]], mutator);\n    }\n    return json;\n}\nvar merge = function (r, n) { return (__assign$b(__assign$b({}, r), n)); };\n// Precise legacy palette fills/strokes can be found here for future reference:\n// https://github.com/ag-grid/ag-grid/blob/b22.1.0/grid-enterprise-modules/charts/src/charts/chart/palettes.ts\nvar LEGACY_PALETTES = {\n    borneo: 'ag-default',\n    material: 'ag-material',\n    pastel: 'ag-pastel',\n    bright: 'ag-vivid',\n    flat: 'ag-solar',\n};\n\nvar __extends$Q = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __assign$a = (undefined && undefined.__assign) || function () {\n    __assign$a = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign$a.apply(this, arguments);\n};\nvar __decorate$M = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar ChartService = /** @class */ (function (_super) {\n    __extends$Q(ChartService, _super);\n    function ChartService() {\n        var _this = _super !== null && _super.apply(this, arguments) || this;\n        // we destroy all charts bound to this grid when grid is destroyed. activeCharts contains all charts, including\n        // those in developer provided containers.\n        _this.activeCharts = new Set();\n        _this.activeChartComps = new Set();\n        // this shared (singleton) context is used by cross filtering in line and area charts\n        _this.crossFilteringContext = {\n            lastSelectedChartId: '',\n        };\n        return _this;\n    }\n    ChartService.prototype.getChartModels = function () {\n        var models = [];\n        var versionedModel = function (c) {\n            return __assign$a(__assign$a({}, c), { version: VERSION$a });\n        };\n        this.activeChartComps.forEach(function (c) { return models.push(versionedModel(c.getChartModel())); });\n        return models;\n    };\n    ChartService.prototype.getChartRef = function (chartId) {\n        var chartRef;\n        this.activeCharts.forEach(function (cr) {\n            if (cr.chartId === chartId) {\n                chartRef = cr;\n            }\n        });\n        return chartRef;\n    };\n    ChartService.prototype.getChartImageDataURL = function (params) {\n        var url;\n        this.activeChartComps.forEach(function (c) {\n            if (c.getChartId() === params.chartId) {\n                url = c.getChartImageDataURL(params.fileFormat);\n            }\n        });\n        return url;\n    };\n    ChartService.prototype.downloadChart = function (params) {\n        var chartComp = Array.from(this.activeChartComps).find(function (c) { return c.getChartId() === params.chartId; });\n        chartComp === null || chartComp === void 0 ? void 0 : chartComp.downloadChart(params.dimensions, params.fileName, params.fileFormat);\n    };\n    ChartService.prototype.openChartToolPanel = function (params) {\n        var chartComp = Array.from(this.activeChartComps).find(function (c) { return c.getChartId() === params.chartId; });\n        chartComp === null || chartComp === void 0 ? void 0 : chartComp.openChartToolPanel(params.panel);\n    };\n    ChartService.prototype.closeChartToolPanel = function (chartId) {\n        var chartComp = Array.from(this.activeChartComps).find(function (c) { return c.getChartId() === chartId; });\n        chartComp === null || chartComp === void 0 ? void 0 : chartComp.closeChartToolPanel();\n    };\n    ChartService.prototype.createChartFromCurrentRange = function (chartType) {\n        if (chartType === void 0) { chartType = 'groupedColumn'; }\n        var selectedRange = this.getSelectedRange();\n        return this.createChart(selectedRange, chartType);\n    };\n    ChartService.prototype.restoreChart = function (model, chartContainer) {\n        var _this = this;\n        if (!model) {\n            console.warn(\"AG Grid - unable to restore chart as no chart model is provided\");\n            return;\n        }\n        if (model.version !== VERSION$a) {\n            model = upgradeChartModel(model);\n        }\n        var params = {\n            cellRange: model.cellRange,\n            chartType: model.chartType,\n            chartThemeName: model.chartThemeName,\n            chartContainer: chartContainer,\n            suppressChartRanges: model.suppressChartRanges,\n            aggFunc: model.aggFunc,\n            unlinkChart: model.unlinkChart,\n            seriesChartTypes: model.seriesChartTypes\n        };\n        var getCellRange = function (cellRangeParams) {\n            return _this.rangeService\n                ? _this.rangeService.createCellRangeFromCellRangeParams(cellRangeParams)\n                : undefined;\n        };\n        if (model.modelType === 'pivot') {\n            // if required enter pivot mode\n            if (!this.columnModel.isPivotMode()) {\n                this.columnModel.setPivotMode(true, \"pivotChart\");\n            }\n            // pivot chart range contains all visible column without a row range to include all rows\n            var columns = this.columnModel.getAllDisplayedColumns().map(function (col) { return col.getColId(); });\n            var chartAllRangeParams = {\n                rowStartIndex: null,\n                rowStartPinned: undefined,\n                rowEndIndex: null,\n                rowEndPinned: undefined,\n                columns: columns\n            };\n            var cellRange_1 = getCellRange(chartAllRangeParams);\n            if (!cellRange_1) {\n                console.warn(\"AG Grid - unable to create chart as there are no columns in the grid.\");\n                return;\n            }\n            return this.createChart(cellRange_1, params.chartType, params.chartThemeName, true, true, params.chartContainer, undefined, undefined, params.unlinkChart, false, model.chartOptions);\n        }\n        var cellRange = getCellRange(params.cellRange);\n        if (!cellRange) {\n            console.warn(\"AG Grid - unable to create chart as no range is selected\");\n            return;\n        }\n        return this.createChart(cellRange, params.chartType, params.chartThemeName, false, params.suppressChartRanges, params.chartContainer, params.aggFunc, undefined, params.unlinkChart, false, model.chartOptions, model.chartPalette, params.seriesChartTypes);\n    };\n    ChartService.prototype.createRangeChart = function (params) {\n        var cellRange = this.rangeService\n            ? this.rangeService.createCellRangeFromCellRangeParams(params.cellRange)\n            : undefined;\n        if (!cellRange) {\n            console.warn(\"AG Grid - unable to create chart as no range is selected\");\n            return;\n        }\n        return this.createChart(cellRange, params.chartType, params.chartThemeName, false, params.suppressChartRanges, params.chartContainer, params.aggFunc, params.chartThemeOverrides, params.unlinkChart, undefined, undefined, undefined, params.seriesChartTypes);\n    };\n    ChartService.prototype.createPivotChart = function (params) {\n        // if required enter pivot mode\n        if (!this.columnModel.isPivotMode()) {\n            this.columnModel.setPivotMode(true, \"pivotChart\");\n        }\n        // pivot chart range contains all visible column without a row range to include all rows\n        var chartAllRangeParams = {\n            rowStartIndex: null,\n            rowStartPinned: undefined,\n            rowEndIndex: null,\n            rowEndPinned: undefined,\n            columns: this.columnModel.getAllDisplayedColumns().map(function (col) { return col.getColId(); })\n        };\n        var cellRange = this.rangeService\n            ? this.rangeService.createCellRangeFromCellRangeParams(chartAllRangeParams)\n            : undefined;\n        if (!cellRange) {\n            console.warn(\"AG Grid - unable to create chart as there are no columns in the grid.\");\n            return;\n        }\n        return this.createChart(cellRange, params.chartType, params.chartThemeName, true, true, params.chartContainer, undefined, params.chartThemeOverrides, params.unlinkChart);\n    };\n    ChartService.prototype.createCrossFilterChart = function (params) {\n        var cellRange = this.rangeService\n            ? this.rangeService.createCellRangeFromCellRangeParams(params.cellRange)\n            : undefined;\n        if (!cellRange) {\n            console.warn(\"AG Grid - unable to create chart as no range is selected\");\n            return;\n        }\n        var crossFiltering = true;\n        var suppressChartRangesSupplied = typeof params.suppressChartRanges !== 'undefined' && params.suppressChartRanges !== null;\n        var suppressChartRanges = suppressChartRangesSupplied ? params.suppressChartRanges : true;\n        return this.createChart(cellRange, params.chartType, params.chartThemeName, false, suppressChartRanges, params.chartContainer, params.aggFunc, params.chartThemeOverrides, params.unlinkChart, crossFiltering);\n    };\n    ChartService.prototype.createChart = function (cellRange, chartType, chartThemeName, pivotChart, suppressChartRanges, container, aggFunc, chartThemeOverrides, unlinkChart, crossFiltering, chartOptionsToRestore, chartPaletteToRestore, seriesChartTypes) {\n        var _this = this;\n        if (pivotChart === void 0) { pivotChart = false; }\n        if (suppressChartRanges === void 0) { suppressChartRanges = false; }\n        if (unlinkChart === void 0) { unlinkChart = false; }\n        if (crossFiltering === void 0) { crossFiltering = false; }\n        var createChartContainerFunc = this.gridOptionsService.getCallback('createChartContainer');\n        var params = {\n            chartId: this.generateId(),\n            pivotChart: pivotChart,\n            cellRange: cellRange,\n            chartType: chartType,\n            chartThemeName: chartThemeName,\n            insideDialog: !(container || createChartContainerFunc),\n            suppressChartRanges: suppressChartRanges,\n            aggFunc: aggFunc,\n            chartThemeOverrides: chartThemeOverrides,\n            unlinkChart: unlinkChart,\n            crossFiltering: crossFiltering,\n            crossFilteringContext: this.crossFilteringContext,\n            chartOptionsToRestore: chartOptionsToRestore,\n            chartPaletteToRestore: chartPaletteToRestore,\n            seriesChartTypes: seriesChartTypes,\n            crossFilteringResetCallback: function () { return _this.activeChartComps.forEach(function (c) { return c.crossFilteringReset(); }); }\n        };\n        var chartComp = new GridChartComp(params);\n        this.context.createBean(chartComp);\n        var chartRef = this.createChartRef(chartComp);\n        if (container) {\n            // if container exists, means developer initiated chart create via API, so place in provided container\n            container.appendChild(chartComp.getGui());\n            // if the chart container was placed outside of an element that\n            // has the grid's theme, we manually add the current theme to\n            // make sure all styles for the chartMenu are rendered correctly\n            var theme = this.environment.getTheme();\n            if (theme.el && !theme.el.contains(container)) {\n                container.classList.add(theme.theme);\n            }\n        }\n        else if (createChartContainerFunc) {\n            // otherwise user created chart via grid UI, check if developer provides containers (eg if the application\n            // is using its own dialogs rather than the grid provided dialogs)\n            createChartContainerFunc(chartRef);\n        }\n        else {\n            // add listener to remove from active charts list when charts are destroyed, e.g. closing chart dialog\n            chartComp.addEventListener(GridChartComp.EVENT_DESTROYED, function () {\n                _this.activeChartComps.delete(chartComp);\n                _this.activeCharts.delete(chartRef);\n            });\n        }\n        return chartRef;\n    };\n    ChartService.prototype.createChartRef = function (chartComp) {\n        var _this = this;\n        var chartRef = {\n            destroyChart: function () {\n                if (_this.activeCharts.has(chartRef)) {\n                    _this.context.destroyBean(chartComp);\n                    _this.activeChartComps.delete(chartComp);\n                    _this.activeCharts.delete(chartRef);\n                }\n            },\n            chartElement: chartComp.getGui(),\n            chart: chartComp.getUnderlyingChart(),\n            chartId: chartComp.getChartModel().chartId\n        };\n        this.activeCharts.add(chartRef);\n        this.activeChartComps.add(chartComp);\n        return chartRef;\n    };\n    ChartService.prototype.getSelectedRange = function () {\n        var ranges = this.rangeService.getCellRanges();\n        return ranges.length > 0 ? ranges[0] : {};\n    };\n    ChartService.prototype.generateId = function () {\n        return 'id-' + Math.random().toString(36).substr(2, 16);\n    };\n    ChartService.prototype.destroyAllActiveCharts = function () {\n        this.activeCharts.forEach(function (chart) { return chart.destroyChart(); });\n    };\n    ChartService.CHARTS_VERSION = VERSION$b;\n    __decorate$M([\n        Optional('rangeService')\n    ], ChartService.prototype, \"rangeService\", void 0);\n    __decorate$M([\n        Autowired('columnModel')\n    ], ChartService.prototype, \"columnModel\", void 0);\n    __decorate$M([\n        PreDestroy\n    ], ChartService.prototype, \"destroyAllActiveCharts\", null);\n    ChartService = __decorate$M([\n        Bean('chartService')\n    ], ChartService);\n    return ChartService;\n}(BeanStub));\n\nvar __extends$P = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$L = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar ChartTranslationService = /** @class */ (function (_super) {\n    __extends$P(ChartTranslationService, _super);\n    function ChartTranslationService() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    ChartTranslationService_1 = ChartTranslationService;\n    ChartTranslationService.prototype.translate = function (toTranslate, defaultText) {\n        var translate = this.localeService.getLocaleTextFunc();\n        var defaultTranslation = ChartTranslationService_1.DEFAULT_TRANSLATIONS[toTranslate] || defaultText;\n        return translate(toTranslate, defaultTranslation);\n    };\n    var ChartTranslationService_1;\n    ChartTranslationService.DEFAULT_TRANSLATIONS = {\n        pivotChartTitle: 'Pivot Chart',\n        rangeChartTitle: 'Range Chart',\n        settings: 'Settings',\n        data: 'Data',\n        format: 'Format',\n        categories: 'Categories',\n        defaultCategory: '(None)',\n        series: 'Series',\n        xyValues: 'X Y Values',\n        paired: 'Paired Mode',\n        axis: 'Axis',\n        navigator: 'Navigator',\n        color: 'Color',\n        thickness: 'Thickness',\n        xType: 'X Type',\n        automatic: 'Automatic',\n        category: 'Category',\n        number: 'Number',\n        time: 'Time',\n        autoRotate: 'Auto Rotate',\n        xRotation: 'X Rotation',\n        yRotation: 'Y Rotation',\n        ticks: 'Ticks',\n        width: 'Width',\n        height: 'Height',\n        length: 'Length',\n        padding: 'Padding',\n        spacing: 'Spacing',\n        chart: 'Chart',\n        title: 'Title',\n        titlePlaceholder: 'Chart title - double click to edit',\n        background: 'Background',\n        font: 'Font',\n        top: 'Top',\n        right: 'Right',\n        bottom: 'Bottom',\n        left: 'Left',\n        labels: 'Labels',\n        calloutLabels: 'Callout Labels',\n        sectorLabels: 'Sector Labels',\n        positionRatio: 'Position Ratio',\n        size: 'Size',\n        shape: 'Shape',\n        minSize: 'Minimum Size',\n        maxSize: 'Maximum Size',\n        legend: 'Legend',\n        position: 'Position',\n        markerSize: 'Marker Size',\n        markerStroke: 'Marker Stroke',\n        markerPadding: 'Marker Padding',\n        itemSpacing: 'Item Spacing',\n        itemPaddingX: 'Item Padding X',\n        itemPaddingY: 'Item Padding Y',\n        layoutHorizontalSpacing: 'Horizontal Spacing',\n        layoutVerticalSpacing: 'Vertical Spacing',\n        strokeWidth: 'Stroke Width',\n        offset: 'Offset',\n        offsets: 'Offsets',\n        tooltips: 'Tooltips',\n        callout: 'Callout',\n        markers: 'Markers',\n        shadow: 'Shadow',\n        blur: 'Blur',\n        xOffset: 'X Offset',\n        yOffset: 'Y Offset',\n        lineWidth: 'Line Width',\n        lineDash: 'Line Dash',\n        normal: 'Normal',\n        bold: 'Bold',\n        italic: 'Italic',\n        boldItalic: 'Bold Italic',\n        predefined: 'Predefined',\n        fillOpacity: 'Fill Opacity',\n        strokeOpacity: 'Line Opacity',\n        histogramBinCount: 'Bin count',\n        columnGroup: 'Column',\n        barGroup: 'Bar',\n        pieGroup: 'Pie',\n        lineGroup: 'Line',\n        scatterGroup: 'X Y (Scatter)',\n        areaGroup: 'Area',\n        histogramGroup: 'Histogram',\n        combinationGroup: 'Combination',\n        groupedColumnTooltip: 'Grouped',\n        stackedColumnTooltip: 'Stacked',\n        normalizedColumnTooltip: '100% Stacked',\n        groupedBarTooltip: 'Grouped',\n        stackedBarTooltip: 'Stacked',\n        normalizedBarTooltip: '100% Stacked',\n        pieTooltip: 'Pie',\n        doughnutTooltip: 'Doughnut',\n        lineTooltip: 'Line',\n        groupedAreaTooltip: 'Area',\n        stackedAreaTooltip: 'Stacked',\n        normalizedAreaTooltip: '100% Stacked',\n        scatterTooltip: 'Scatter',\n        bubbleTooltip: 'Bubble',\n        histogramTooltip: 'Histogram',\n        columnLineComboTooltip: 'Column & Line',\n        areaColumnComboTooltip: 'Area & Column',\n        customComboTooltip: 'Custom Combination',\n        noDataToChart: 'No data available to be charted.',\n        pivotChartRequiresPivotMode: 'Pivot Chart requires Pivot Mode enabled.',\n        chartSettingsToolbarTooltip: 'Menu',\n        chartLinkToolbarTooltip: 'Linked to Grid',\n        chartUnlinkToolbarTooltip: 'Unlinked from Grid',\n        chartDownloadToolbarTooltip: 'Download Chart',\n        histogramFrequency: \"Frequency\",\n        seriesChartType: 'Series Chart Type',\n        seriesType: 'Series Type',\n        secondaryAxis: 'Secondary Axis',\n    };\n    ChartTranslationService = ChartTranslationService_1 = __decorate$L([\n        Bean(\"chartTranslationService\")\n    ], ChartTranslationService);\n    return ChartTranslationService;\n}(BeanStub));\n\nvar __extends$O = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$K = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar ChartCrossFilterService = /** @class */ (function (_super) {\n    __extends$O(ChartCrossFilterService, _super);\n    function ChartCrossFilterService() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    ChartCrossFilterService_1 = ChartCrossFilterService;\n    ChartCrossFilterService.prototype.filter = function (event, reset) {\n        if (reset === void 0) { reset = false; }\n        var filterModel = this.gridApi.getFilterModel();\n        // filters should be reset when user clicks on canvas background\n        if (reset) {\n            this.resetFilters(filterModel);\n            return;\n        }\n        var colId = ChartCrossFilterService_1.extractFilterColId(event);\n        if (this.isValidColumnFilter(colId)) {\n            // update filters based on current chart selections\n            this.updateFilters(filterModel, event, colId);\n        }\n        else {\n            console.warn(\"AG Grid: cross filtering requires a 'agSetColumnFilter' or 'agMultiColumnFilter' \" +\n                \"to be defined on the column with id: '\" + colId + \"'\");\n        }\n    };\n    ChartCrossFilterService.prototype.resetFilters = function (filterModel) {\n        var filtersExist = Object.keys(filterModel).length > 0;\n        if (filtersExist) {\n            // only reset filters / charts when necessary to prevent undesirable flickering effect\n            this.gridApi.setFilterModel(null);\n            this.gridApi.onFilterChanged();\n        }\n    };\n    ChartCrossFilterService.prototype.updateFilters = function (filterModel, event, colId) {\n        var _a;\n        var dataKey = ChartCrossFilterService_1.extractFilterColId(event);\n        var rawValue = event.datum[dataKey];\n        if (rawValue === undefined) {\n            return;\n        }\n        var selectedValue = rawValue.toString();\n        if (event.event.metaKey || event.event.ctrlKey) {\n            var existingGridValues = this.getCurrentGridValuesForCategory(colId);\n            var valueAlreadyExists = _.includes(existingGridValues, selectedValue);\n            var updatedValues = void 0;\n            if (valueAlreadyExists) {\n                updatedValues = existingGridValues.filter(function (v) { return v !== selectedValue; });\n            }\n            else {\n                updatedValues = existingGridValues;\n                updatedValues.push(selectedValue);\n            }\n            filterModel[colId] = this.getUpdatedFilterModel(colId, updatedValues);\n        }\n        else {\n            var updatedValues = [selectedValue];\n            filterModel = (_a = {}, _a[colId] = this.getUpdatedFilterModel(colId, updatedValues), _a);\n        }\n        this.gridApi.setFilterModel(filterModel);\n    };\n    ChartCrossFilterService.prototype.getUpdatedFilterModel = function (colId, updatedValues) {\n        var columnFilterType = this.getColumnFilterType(colId);\n        if (columnFilterType === 'agMultiColumnFilter') {\n            return { filterType: 'multi', filterModels: [null, { filterType: 'set', values: updatedValues }] };\n        }\n        return { filterType: 'set', values: updatedValues };\n    };\n    ChartCrossFilterService.prototype.getCurrentGridValuesForCategory = function (colId) {\n        var _this = this;\n        var filteredValues = [];\n        var column = this.getColumnById(colId);\n        this.gridApi.forEachNodeAfterFilter(function (rowNode) {\n            if (column && !rowNode.group) {\n                var value = _this.valueService.getValue(column, rowNode) + '';\n                if (!filteredValues.includes(value)) {\n                    filteredValues.push(value);\n                }\n            }\n        });\n        return filteredValues;\n    };\n    ChartCrossFilterService.extractFilterColId = function (event) {\n        return event.xKey || event.calloutLabelKey;\n    };\n    ChartCrossFilterService.prototype.isValidColumnFilter = function (colId) {\n        if (colId.indexOf('-filtered-out')) {\n            colId = colId.replace('-filtered-out', '');\n        }\n        var filterType = this.getColumnFilterType(colId);\n        if (typeof filterType === 'boolean') {\n            return filterType;\n        }\n        return _.includes(['agSetColumnFilter', 'agMultiColumnFilter'], filterType);\n    };\n    ChartCrossFilterService.prototype.getColumnFilterType = function (colId) {\n        var gridColumn = this.getColumnById(colId);\n        if (gridColumn) {\n            var colDef = gridColumn.getColDef();\n            return colDef.filter != null ? colDef.filter : colDef.filterFramework;\n        }\n    };\n    ChartCrossFilterService.prototype.getColumnById = function (colId) {\n        return this.columnModel.getGridColumn(colId);\n    };\n    var ChartCrossFilterService_1;\n    __decorate$K([\n        Autowired('gridApi')\n    ], ChartCrossFilterService.prototype, \"gridApi\", void 0);\n    __decorate$K([\n        Autowired('columnModel')\n    ], ChartCrossFilterService.prototype, \"columnModel\", void 0);\n    __decorate$K([\n        Autowired('valueService')\n    ], ChartCrossFilterService.prototype, \"valueService\", void 0);\n    ChartCrossFilterService = ChartCrossFilterService_1 = __decorate$K([\n        Bean(\"chartCrossFilterService\")\n    ], ChartCrossFilterService);\n    return ChartCrossFilterService;\n}(BeanStub));\n\nvar __extends$N = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __assign$9 = (undefined && undefined.__assign) || function () {\n    __assign$9 = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign$9.apply(this, arguments);\n};\nvar __decorate$J = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __read$c = (undefined && undefined.__read) || function (o, n) {\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n    if (!m) return o;\n    var i = m.call(o), r, ar = [], e;\n    try {\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n    }\n    catch (error) { e = { error: error }; }\n    finally {\n        try {\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\n        }\n        finally { if (e) throw e.error; }\n    }\n    return ar;\n};\nvar __spread$6 = (undefined && undefined.__spread) || function () {\n    for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read$c(arguments[i]));\n    return ar;\n};\nvar __values$3 = (undefined && undefined.__values) || function(o) {\n    var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n    if (m) return m.call(o);\n    if (o && typeof o.length === \"number\") return {\n        next: function () {\n            if (o && i >= o.length) o = void 0;\n            return { value: o && o[i++], done: !o };\n        }\n    };\n    throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nvar RangeService = /** @class */ (function (_super) {\n    __extends$N(RangeService, _super);\n    function RangeService() {\n        var _this = _super !== null && _super.apply(this, arguments) || this;\n        _this.cellRanges = [];\n        _this.bodyScrollListener = _this.onBodyScroll.bind(_this);\n        _this.dragging = false;\n        _this.intersectionRange = false; // When dragging ends, the current range will be used to intersect all other ranges\n        return _this;\n    }\n    RangeService.prototype.init = function () {\n        var _this = this;\n        this.addManagedListener(this.eventService, Events.EVENT_NEW_COLUMNS_LOADED, function () { return _this.onColumnsChanged(); });\n        this.addManagedListener(this.eventService, Events.EVENT_COLUMN_VISIBLE, this.onColumnsChanged.bind(this));\n        this.addManagedListener(this.eventService, Events.EVENT_COLUMN_VALUE_CHANGED, this.onColumnsChanged.bind(this));\n        this.addManagedListener(this.eventService, Events.EVENT_COLUMN_PIVOT_MODE_CHANGED, function () { return _this.removeAllCellRanges(); });\n        this.addManagedListener(this.eventService, Events.EVENT_COLUMN_ROW_GROUP_CHANGED, function () { return _this.removeAllCellRanges(); });\n        this.addManagedListener(this.eventService, Events.EVENT_COLUMN_PIVOT_CHANGED, function () { return _this.removeAllCellRanges(); });\n        this.addManagedListener(this.eventService, Events.EVENT_COLUMN_GROUP_OPENED, this.refreshLastRangeStart.bind(this));\n        this.addManagedListener(this.eventService, Events.EVENT_COLUMN_MOVED, this.refreshLastRangeStart.bind(this));\n        this.addManagedListener(this.eventService, Events.EVENT_COLUMN_PINNED, this.refreshLastRangeStart.bind(this));\n        this.ctrlsService.whenReady(function () {\n            var gridBodyCtrl = _this.ctrlsService.getGridBodyCtrl();\n            _this.autoScrollService = new AutoScrollService({\n                scrollContainer: gridBodyCtrl.getBodyViewportElement(),\n                scrollAxis: 'xy',\n                getVerticalPosition: function () { return gridBodyCtrl.getScrollFeature().getVScrollPosition().top; },\n                setVerticalPosition: function (position) { return gridBodyCtrl.getScrollFeature().setVerticalScrollPosition(position); },\n                getHorizontalPosition: function () { return gridBodyCtrl.getScrollFeature().getHScrollPosition().left; },\n                setHorizontalPosition: function (position) { return gridBodyCtrl.getScrollFeature().setHorizontalScrollPosition(position); },\n                shouldSkipVerticalScroll: function () { return !_this.gridOptionsService.isDomLayout('normal'); },\n                shouldSkipHorizontalScroll: function () { return !gridBodyCtrl.getScrollFeature().isHorizontalScrollShowing(); }\n            });\n        });\n    };\n    // Called for both columns loaded & column visibility events\n    RangeService.prototype.onColumnsChanged = function () {\n        var _this = this;\n        // first move start column in last cell range (i.e. series chart range)\n        this.refreshLastRangeStart();\n        var allColumns = this.columnModel.getAllDisplayedColumns();\n        // check that the columns in each range still exist and are visible\n        this.cellRanges.forEach(function (cellRange) {\n            var beforeCols = cellRange.columns;\n            // remove hidden or removed cols from cell range\n            cellRange.columns = cellRange.columns.filter(function (col) { return col.isVisible() && allColumns.indexOf(col) !== -1; });\n            var colsInRangeChanged = !_.areEqual(beforeCols, cellRange.columns);\n            if (colsInRangeChanged) {\n                // notify users and other parts of grid (i.e. status panel) that range has changed\n                _this.dispatchChangedEvent(false, true, cellRange.id);\n            }\n        });\n        // Remove empty cell ranges\n        var countBefore = this.cellRanges.length;\n        this.cellRanges = this.cellRanges.filter(function (range) { return range.columns.length > 0; });\n        if (countBefore > this.cellRanges.length) {\n            this.dispatchChangedEvent(false, true);\n        }\n    };\n    RangeService.prototype.refreshLastRangeStart = function () {\n        var lastRange = _.last(this.cellRanges);\n        if (!lastRange) {\n            return;\n        }\n        this.refreshRangeStart(lastRange);\n    };\n    RangeService.prototype.isContiguousRange = function (cellRange) {\n        var rangeColumns = cellRange.columns;\n        if (!rangeColumns.length) {\n            return false;\n        }\n        var allColumns = this.columnModel.getAllDisplayedColumns();\n        var allPositions = rangeColumns.map(function (c) { return allColumns.indexOf(c); }).sort(function (a, b) { return a - b; });\n        return _.last(allPositions) - allPositions[0] + 1 === rangeColumns.length;\n    };\n    RangeService.prototype.getRangeStartRow = function (cellRange) {\n        if (cellRange.startRow && cellRange.endRow) {\n            return this.rowPositionUtils.before(cellRange.startRow, cellRange.endRow) ?\n                cellRange.startRow : cellRange.endRow;\n        }\n        var rowPinned = this.pinnedRowModel.getPinnedTopRowCount() > 0 ? 'top' : null;\n        return { rowIndex: 0, rowPinned: rowPinned };\n    };\n    RangeService.prototype.getRangeEndRow = function (cellRange) {\n        if (cellRange.startRow && cellRange.endRow) {\n            return this.rowPositionUtils.before(cellRange.startRow, cellRange.endRow) ?\n                cellRange.endRow : cellRange.startRow;\n        }\n        var pinnedBottomRowCount = this.pinnedRowModel.getPinnedBottomRowCount();\n        var pinnedBottom = pinnedBottomRowCount > 0;\n        if (pinnedBottom) {\n            return {\n                rowIndex: pinnedBottomRowCount - 1,\n                rowPinned: 'bottom'\n            };\n        }\n        return {\n            rowIndex: this.rowModel.getRowCount() - 1,\n            rowPinned: null\n        };\n    };\n    RangeService.prototype.setRangeToCell = function (cell, appendRange) {\n        if (appendRange === void 0) { appendRange = false; }\n        if (!this.gridOptionsService.isEnableRangeSelection()) {\n            return;\n        }\n        var columns = this.calculateColumnsBetween(cell.column, cell.column);\n        if (!columns) {\n            return;\n        }\n        var suppressMultiRangeSelections = this.gridOptionsService.is('suppressMultiRangeSelection');\n        // if not appending, then clear previous range selections\n        if (suppressMultiRangeSelections || !appendRange || _.missing(this.cellRanges)) {\n            this.removeAllCellRanges(true);\n        }\n        var rowForCell = {\n            rowIndex: cell.rowIndex,\n            rowPinned: cell.rowPinned\n        };\n        var cellRange = {\n            startRow: rowForCell,\n            endRow: rowForCell,\n            columns: columns,\n            startColumn: cell.column\n        };\n        this.cellRanges.push(cellRange);\n        this.setNewestRangeStartCell(cell);\n        this.onDragStop();\n        this.dispatchChangedEvent(true, true);\n    };\n    RangeService.prototype.extendLatestRangeToCell = function (cellPosition) {\n        if (this.isEmpty() || !this.newestRangeStartCell) {\n            return;\n        }\n        var cellRange = _.last(this.cellRanges);\n        this.updateRangeEnd(cellRange, cellPosition);\n    };\n    RangeService.prototype.updateRangeEnd = function (cellRange, cellPosition, silent) {\n        if (silent === void 0) { silent = false; }\n        var endColumn = cellPosition.column;\n        var colsToAdd = this.calculateColumnsBetween(cellRange.startColumn, endColumn);\n        if (!colsToAdd || this.isLastCellOfRange(cellRange, cellPosition)) {\n            return;\n        }\n        cellRange.columns = colsToAdd;\n        cellRange.endRow = { rowIndex: cellPosition.rowIndex, rowPinned: cellPosition.rowPinned };\n        if (!silent) {\n            this.dispatchChangedEvent(true, true, cellRange.id);\n        }\n    };\n    RangeService.prototype.refreshRangeStart = function (cellRange) {\n        var startColumn = cellRange.startColumn, columns = cellRange.columns;\n        var moveColInCellRange = function (colToMove, moveToFront) {\n            var otherCols = cellRange.columns.filter(function (col) { return col !== colToMove; });\n            if (colToMove) {\n                cellRange.startColumn = colToMove;\n                cellRange.columns = moveToFront ? __spread$6([colToMove], otherCols) : __spread$6(otherCols, [colToMove]);\n            }\n            else {\n                cellRange.columns = otherCols;\n            }\n        };\n        var _a = this.getRangeEdgeColumns(cellRange), left = _a.left, right = _a.right;\n        var shouldMoveLeftCol = startColumn === columns[0] && startColumn !== left;\n        if (shouldMoveLeftCol) {\n            moveColInCellRange(left, true);\n            return;\n        }\n        var shouldMoveRightCol = startColumn === _.last(columns) && startColumn === right;\n        if (shouldMoveRightCol) {\n            moveColInCellRange(right, false);\n            return;\n        }\n    };\n    RangeService.prototype.getRangeEdgeColumns = function (cellRange) {\n        var allColumns = this.columnModel.getAllDisplayedColumns();\n        var allIndices = cellRange.columns\n            .map(function (c) { return allColumns.indexOf(c); })\n            .filter(function (i) { return i > -1; })\n            .sort(function (a, b) { return a - b; });\n        return {\n            left: allColumns[allIndices[0]],\n            right: allColumns[_.last(allIndices)]\n        };\n    };\n    // returns true if successful, false if not successful\n    RangeService.prototype.extendLatestRangeInDirection = function (event) {\n        if (this.isEmpty() || !this.newestRangeStartCell) {\n            return;\n        }\n        var key = event.key;\n        var ctrlKey = event.ctrlKey || event.metaKey;\n        var lastRange = _.last(this.cellRanges);\n        var startCell = this.newestRangeStartCell;\n        var firstCol = lastRange.columns[0];\n        var lastCol = _.last(lastRange.columns);\n        // find the cell that is at the furthest away corner from the starting cell\n        var endCellIndex = lastRange.endRow.rowIndex;\n        var endCellFloating = lastRange.endRow.rowPinned;\n        var endCellColumn = startCell.column === firstCol ? lastCol : firstCol;\n        var endCell = { column: endCellColumn, rowIndex: endCellIndex, rowPinned: endCellFloating };\n        var newEndCell = this.cellNavigationService.getNextCellToFocus(key, endCell, ctrlKey);\n        // if user is at end of grid, so no cell to extend to, we return false\n        if (!newEndCell) {\n            return;\n        }\n        this.setCellRange({\n            rowStartIndex: startCell.rowIndex,\n            rowStartPinned: startCell.rowPinned,\n            rowEndIndex: newEndCell.rowIndex,\n            rowEndPinned: newEndCell.rowPinned,\n            columnStart: startCell.column,\n            columnEnd: newEndCell.column\n        });\n        return newEndCell;\n    };\n    RangeService.prototype.setCellRange = function (params) {\n        if (!this.gridOptionsService.isEnableRangeSelection()) {\n            return;\n        }\n        this.removeAllCellRanges(true);\n        this.addCellRange(params);\n    };\n    RangeService.prototype.setCellRanges = function (cellRanges) {\n        var _this = this;\n        if (_.shallowCompare(this.cellRanges, cellRanges)) {\n            return;\n        }\n        this.removeAllCellRanges(true);\n        cellRanges.forEach(function (newRange) {\n            if (newRange.columns && newRange.startRow) {\n                _this.setNewestRangeStartCell({\n                    rowIndex: newRange.startRow.rowIndex,\n                    rowPinned: newRange.startRow.rowPinned,\n                    column: newRange.columns[0]\n                });\n            }\n            _this.cellRanges.push(newRange);\n        });\n        this.dispatchChangedEvent(false, true);\n    };\n    RangeService.prototype.setNewestRangeStartCell = function (position) {\n        this.newestRangeStartCell = position;\n    };\n    RangeService.prototype.clearCellRangeCellValues = function (cellRanges, source) {\n        var _this = this;\n        if (source === void 0) { source = 'rangeService'; }\n        if (!cellRanges) {\n            cellRanges = this.cellRanges;\n        }\n        cellRanges.forEach(function (cellRange) {\n            _this.forEachRowInRange(cellRange, function (rowPosition) {\n                var rowNode = _this.rowPositionUtils.getRowNode(rowPosition);\n                if (!rowNode) {\n                    return;\n                }\n                for (var i = 0; i < cellRange.columns.length; i++) {\n                    var column = _this.columnModel.getGridColumn(cellRange.columns[i]);\n                    if (!column || !column.isCellEditable(rowNode)) {\n                        return;\n                    }\n                    rowNode.setDataValue(column, null, source);\n                }\n            });\n        });\n    };\n    RangeService.prototype.createCellRangeFromCellRangeParams = function (params) {\n        var _this = this;\n        var columns;\n        var startsOnTheRight = false;\n        if (params.columns) {\n            columns = params.columns.map(function (c) { return _this.columnModel.getColumnWithValidation(c); }).filter(function (c) { return c; });\n        }\n        else {\n            var columnStart = this.columnModel.getColumnWithValidation(params.columnStart);\n            var columnEnd = this.columnModel.getColumnWithValidation(params.columnEnd);\n            if (!columnStart || !columnEnd) {\n                return;\n            }\n            columns = this.calculateColumnsBetween(columnStart, columnEnd);\n            if (columns && columns.length) {\n                startsOnTheRight = columns[0] !== columnStart;\n            }\n        }\n        if (!columns) {\n            return;\n        }\n        var startRow = params.rowStartIndex != null ? {\n            rowIndex: params.rowStartIndex,\n            rowPinned: params.rowStartPinned || null\n        } : undefined;\n        var endRow = params.rowEndIndex != null ? {\n            rowIndex: params.rowEndIndex,\n            rowPinned: params.rowEndPinned || null\n        } : undefined;\n        return {\n            startRow: startRow,\n            endRow: endRow,\n            columns: columns,\n            startColumn: startsOnTheRight ? _.last(columns) : columns[0]\n        };\n    };\n    RangeService.prototype.addCellRange = function (params) {\n        if (!this.gridOptionsService.isEnableRangeSelection()) {\n            return;\n        }\n        var newRange = this.createCellRangeFromCellRangeParams(params);\n        if (newRange) {\n            if (newRange.startRow) {\n                this.setNewestRangeStartCell({\n                    rowIndex: newRange.startRow.rowIndex,\n                    rowPinned: newRange.startRow.rowPinned,\n                    column: newRange.startColumn\n                });\n            }\n            this.cellRanges.push(newRange);\n            this.dispatchChangedEvent(false, true, newRange.id);\n        }\n    };\n    RangeService.prototype.getCellRanges = function () {\n        return this.cellRanges;\n    };\n    RangeService.prototype.isEmpty = function () {\n        return this.cellRanges.length === 0;\n    };\n    RangeService.prototype.isMoreThanOneCell = function () {\n        var len = this.cellRanges.length;\n        if (len === 0) {\n            return false;\n        }\n        if (len > 1) {\n            return true; // Assumes a cell range must contain at least one cell\n        }\n        // only one range, return true if range has more than one\n        var range = this.cellRanges[0];\n        var startRow = this.getRangeStartRow(range);\n        var endRow = this.getRangeEndRow(range);\n        return startRow.rowPinned !== endRow.rowPinned ||\n            startRow.rowIndex !== endRow.rowIndex ||\n            range.columns.length !== 1;\n    };\n    RangeService.prototype.areAllRangesAbleToMerge = function () {\n        var e_1, _a;\n        var _this = this;\n        var rowToColumnMap = new Map();\n        var len = this.cellRanges.length;\n        if (len <= 1)\n            return true;\n        this.cellRanges.forEach(function (range) {\n            _this.forEachRowInRange(range, function (row) {\n                var rowName = (row.rowPinned || 'normal') + \"_\" + row.rowIndex;\n                var columns = rowToColumnMap.get(rowName);\n                var currentRangeColIds = range.columns.map(function (col) { return col.getId(); });\n                if (columns) {\n                    var filteredColumns = currentRangeColIds.filter(function (col) { return columns.indexOf(col) === -1; });\n                    columns.push.apply(columns, __spread$6(filteredColumns));\n                }\n                else {\n                    rowToColumnMap.set(rowName, currentRangeColIds);\n                }\n            });\n        });\n        var columnsString;\n        try {\n            for (var _b = __values$3(rowToColumnMap.values()), _c = _b.next(); !_c.done; _c = _b.next()) {\n                var val = _c.value;\n                var currentValString = val.sort().join();\n                if (columnsString === undefined) {\n                    columnsString = currentValString;\n                    continue;\n                }\n                if (columnsString !== currentValString) {\n                    return false;\n                }\n            }\n        }\n        catch (e_1_1) { e_1 = { error: e_1_1 }; }\n        finally {\n            try {\n                if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n            }\n            finally { if (e_1) throw e_1.error; }\n        }\n        return true;\n    };\n    RangeService.prototype.forEachRowInRange = function (cellRange, callback) {\n        var topRow = this.getRangeStartRow(cellRange);\n        var bottomRow = this.getRangeEndRow(cellRange);\n        var currentRow = topRow;\n        while (currentRow) {\n            callback(currentRow);\n            if (this.rowPositionUtils.sameRow(currentRow, bottomRow)) {\n                break;\n            }\n            currentRow = this.cellNavigationService.getRowBelow(currentRow);\n        }\n    };\n    RangeService.prototype.removeAllCellRanges = function (silent) {\n        if (this.isEmpty()) {\n            return;\n        }\n        this.onDragStop();\n        this.cellRanges.length = 0;\n        if (!silent) {\n            this.dispatchChangedEvent(false, true);\n        }\n    };\n    // as the user is dragging outside of the panel, the div starts to scroll, which in turn\n    // means we are selection more (or less) cells, but the mouse isn't moving, so we recalculate\n    // the selection my mimicking a new mouse event\n    RangeService.prototype.onBodyScroll = function () {\n        if (this.dragging && this.lastMouseEvent) {\n            this.onDragging(this.lastMouseEvent);\n        }\n    };\n    RangeService.prototype.isCellInAnyRange = function (cell) {\n        return this.getCellRangeCount(cell) > 0;\n    };\n    RangeService.prototype.isCellInSpecificRange = function (cell, range) {\n        var columnInRange = range.columns !== null && _.includes(range.columns, cell.column);\n        var rowInRange = this.isRowInRange(cell.rowIndex, cell.rowPinned, range);\n        return columnInRange && rowInRange;\n    };\n    RangeService.prototype.isLastCellOfRange = function (cellRange, cell) {\n        var startRow = cellRange.startRow, endRow = cellRange.endRow;\n        var lastRow = this.rowPositionUtils.before(startRow, endRow) ? endRow : startRow;\n        var isLastRow = cell.rowIndex === lastRow.rowIndex && cell.rowPinned === lastRow.rowPinned;\n        var rangeFirstIndexColumn = cellRange.columns[0];\n        var rangeLastIndexColumn = _.last(cellRange.columns);\n        var lastRangeColumn = cellRange.startColumn === rangeFirstIndexColumn ? rangeLastIndexColumn : rangeFirstIndexColumn;\n        var isLastColumn = cell.column === lastRangeColumn;\n        return isLastColumn && isLastRow;\n    };\n    RangeService.prototype.isBottomRightCell = function (cellRange, cell) {\n        var allColumns = this.columnModel.getAllDisplayedColumns();\n        var allPositions = cellRange.columns.map(function (c) { return allColumns.indexOf(c); }).sort(function (a, b) { return a - b; });\n        var startRow = cellRange.startRow, endRow = cellRange.endRow;\n        var lastRow = this.rowPositionUtils.before(startRow, endRow) ? endRow : startRow;\n        var isRightColumn = allColumns.indexOf(cell.column) === _.last(allPositions);\n        var isLastRow = cell.rowIndex === lastRow.rowIndex && _.makeNull(cell.rowPinned) === _.makeNull(lastRow.rowPinned);\n        return isRightColumn && isLastRow;\n    };\n    // returns the number of ranges this cell is in\n    RangeService.prototype.getCellRangeCount = function (cell) {\n        var _this = this;\n        if (this.isEmpty()) {\n            return 0;\n        }\n        return this.cellRanges.filter(function (cellRange) { return _this.isCellInSpecificRange(cell, cellRange); }).length;\n    };\n    RangeService.prototype.isRowInRange = function (rowIndex, floating, cellRange) {\n        var firstRow = this.getRangeStartRow(cellRange);\n        var lastRow = this.getRangeEndRow(cellRange);\n        var thisRow = { rowIndex: rowIndex, rowPinned: floating || null };\n        // compare rowPinned with == instead of === because it can be `null` or `undefined`\n        var equalsFirstRow = thisRow.rowIndex === firstRow.rowIndex && thisRow.rowPinned == firstRow.rowPinned;\n        var equalsLastRow = thisRow.rowIndex === lastRow.rowIndex && thisRow.rowPinned == lastRow.rowPinned;\n        if (equalsFirstRow || equalsLastRow) {\n            return true;\n        }\n        var afterFirstRow = !this.rowPositionUtils.before(thisRow, firstRow);\n        var beforeLastRow = this.rowPositionUtils.before(thisRow, lastRow);\n        return afterFirstRow && beforeLastRow;\n    };\n    RangeService.prototype.getDraggingRange = function () {\n        return this.draggingRange;\n    };\n    RangeService.prototype.onDragStart = function (mouseEvent) {\n        if (!this.gridOptionsService.isEnableRangeSelection()) {\n            return;\n        }\n        var ctrlKey = mouseEvent.ctrlKey, metaKey = mouseEvent.metaKey, shiftKey = mouseEvent.shiftKey;\n        // ctrlKey for windows, metaKey for Apple\n        var multiKeyPressed = ctrlKey || metaKey;\n        var allowMulti = !this.gridOptionsService.is('suppressMultiRangeSelection');\n        var multiSelectKeyPressed = allowMulti ? multiKeyPressed : false;\n        var extendRange = shiftKey && _.existsAndNotEmpty(this.cellRanges);\n        if (!multiSelectKeyPressed && (!extendRange || _.exists(_.last(this.cellRanges).type))) {\n            this.removeAllCellRanges(true);\n        }\n        // The browser changes the Event target of cached events when working with the ShadowDOM\n        // so we need to retrieve the initial DragStartTarget.\n        var startTarget = this.dragService.getStartTarget();\n        if (startTarget) {\n            this.updateValuesOnMove(startTarget);\n        }\n        if (!this.lastCellHovered) {\n            return;\n        }\n        this.dragging = true;\n        this.lastMouseEvent = mouseEvent;\n        this.intersectionRange = multiSelectKeyPressed && this.getCellRangeCount(this.lastCellHovered) > 1;\n        if (!extendRange) {\n            this.setNewestRangeStartCell(this.lastCellHovered);\n        }\n        // if we didn't clear the ranges, then dragging means the user clicked, and when the\n        // user clicks it means a range of one cell was created. we need to extend this range\n        // rather than creating another range. otherwise we end up with two distinct ranges\n        // from a drag operation (one from click, and one from drag).\n        if (this.cellRanges.length > 0) {\n            this.draggingRange = _.last(this.cellRanges);\n        }\n        else {\n            var mouseRowPosition = {\n                rowIndex: this.lastCellHovered.rowIndex,\n                rowPinned: this.lastCellHovered.rowPinned\n            };\n            this.draggingRange = {\n                startRow: mouseRowPosition,\n                endRow: mouseRowPosition,\n                columns: [this.lastCellHovered.column],\n                startColumn: this.newestRangeStartCell.column\n            };\n            this.cellRanges.push(this.draggingRange);\n        }\n        this.ctrlsService.getGridBodyCtrl().addScrollEventListener(this.bodyScrollListener);\n        this.dispatchChangedEvent(true, false, this.draggingRange.id);\n    };\n    RangeService.prototype.intersectLastRange = function (fromMouseClick) {\n        var _this = this;\n        // when ranges are created due to a mouse click without drag (happens in cellMouseListener)\n        // this method will be called with `fromMouseClick=true`.\n        if (fromMouseClick && this.dragging) {\n            return;\n        }\n        if (this.gridOptionsService.is('suppressMultiRangeSelection')) {\n            return;\n        }\n        if (this.isEmpty()) {\n            return;\n        }\n        var lastRange = _.last(this.cellRanges);\n        var intersectionStartRow = this.getRangeStartRow(lastRange);\n        var intersectionEndRow = this.getRangeEndRow(lastRange);\n        var newRanges = [];\n        this.cellRanges.slice(0, -1).forEach(function (range) {\n            var startRow = _this.getRangeStartRow(range);\n            var endRow = _this.getRangeEndRow(range);\n            var cols = range.columns;\n            var intersectCols = cols.filter(function (col) { return lastRange.columns.indexOf(col) === -1; });\n            if (intersectCols.length === cols.length) {\n                // No overlapping columns, retain previous range\n                newRanges.push(range);\n                return;\n            }\n            if (_this.rowPositionUtils.before(intersectionEndRow, startRow) || _this.rowPositionUtils.before(endRow, intersectionStartRow)) {\n                // No overlapping rows, retain previous range\n                newRanges.push(range);\n                return;\n            }\n            var rangeCountBefore = newRanges.length;\n            // Top\n            if (_this.rowPositionUtils.before(startRow, intersectionStartRow)) {\n                var top_1 = {\n                    columns: __spread$6(cols),\n                    startColumn: lastRange.startColumn,\n                    startRow: __assign$9({}, startRow),\n                    endRow: _this.cellNavigationService.getRowAbove(intersectionStartRow),\n                };\n                newRanges.push(top_1);\n            }\n            // Left & Right (not contiguous with columns)\n            if (intersectCols.length > 0) {\n                var middle = {\n                    columns: intersectCols,\n                    startColumn: _.includes(intersectCols, lastRange.startColumn) ? lastRange.startColumn : intersectCols[0],\n                    startRow: _this.rowPositionUtils.rowMax([__assign$9({}, intersectionStartRow), __assign$9({}, startRow)]),\n                    endRow: _this.rowPositionUtils.rowMin([__assign$9({}, intersectionEndRow), __assign$9({}, endRow)]),\n                };\n                newRanges.push(middle);\n            }\n            // Bottom\n            if (_this.rowPositionUtils.before(intersectionEndRow, endRow)) {\n                newRanges.push({\n                    columns: __spread$6(cols),\n                    startColumn: lastRange.startColumn,\n                    startRow: _this.cellNavigationService.getRowBelow(intersectionEndRow),\n                    endRow: __assign$9({}, endRow),\n                });\n            }\n            if ((newRanges.length - rangeCountBefore) === 1) {\n                // Only one range result from the intersection.\n                // Copy the source range's id, since essentially we just reduced it's size\n                newRanges[newRanges.length - 1].id = range.id;\n            }\n        });\n        this.cellRanges = newRanges;\n        // when this is called because of a clickEvent and the ranges were changed\n        // we need to force a dragEnd event to update the UI.\n        if (fromMouseClick) {\n            this.dispatchChangedEvent(false, true);\n        }\n    };\n    RangeService.prototype.updateValuesOnMove = function (eventTarget) {\n        var cellCtrl = _.getCtrlForEventTarget(this.gridOptionsService, eventTarget, CellCtrl.DOM_DATA_KEY_CELL_CTRL);\n        var cell = cellCtrl === null || cellCtrl === void 0 ? void 0 : cellCtrl.getCellPosition();\n        this.cellHasChanged = false;\n        if (!cell || (this.lastCellHovered && this.cellPositionUtils.equals(cell, this.lastCellHovered))) {\n            return;\n        }\n        if (this.lastCellHovered) {\n            this.cellHasChanged = true;\n        }\n        this.lastCellHovered = cell;\n    };\n    RangeService.prototype.onDragging = function (mouseEvent) {\n        var _this = this;\n        if (!this.dragging || !mouseEvent) {\n            return;\n        }\n        this.updateValuesOnMove(mouseEvent.target);\n        this.lastMouseEvent = mouseEvent;\n        var cellPosition = this.lastCellHovered;\n        var isMouseAndStartInPinned = function (position) {\n            return cellPosition && cellPosition.rowPinned === position && _this.newestRangeStartCell.rowPinned === position;\n        };\n        var skipVerticalScroll = isMouseAndStartInPinned('top') || isMouseAndStartInPinned('bottom');\n        this.autoScrollService.check(mouseEvent, skipVerticalScroll);\n        if (!this.cellHasChanged) {\n            return;\n        }\n        var columns = this.calculateColumnsBetween(this.newestRangeStartCell.column, cellPosition.column);\n        if (!columns) {\n            return;\n        }\n        this.draggingRange.endRow = {\n            rowIndex: cellPosition.rowIndex,\n            rowPinned: cellPosition.rowPinned\n        };\n        this.draggingRange.columns = columns;\n        this.dispatchChangedEvent(false, false, this.draggingRange.id);\n    };\n    RangeService.prototype.onDragStop = function () {\n        if (!this.dragging) {\n            return;\n        }\n        var id = this.draggingRange.id;\n        this.autoScrollService.ensureCleared();\n        this.ctrlsService.getGridBodyCtrl().removeScrollEventListener(this.bodyScrollListener);\n        this.lastMouseEvent = null;\n        this.dragging = false;\n        this.draggingRange = undefined;\n        this.lastCellHovered = undefined;\n        if (this.intersectionRange) {\n            this.intersectionRange = false;\n            this.intersectLastRange();\n        }\n        this.dispatchChangedEvent(false, true, id);\n    };\n    RangeService.prototype.dispatchChangedEvent = function (started, finished, id) {\n        var event = {\n            type: Events.EVENT_RANGE_SELECTION_CHANGED,\n            started: started,\n            finished: finished,\n            id: id,\n        };\n        this.eventService.dispatchEvent(event);\n    };\n    RangeService.prototype.calculateColumnsBetween = function (columnFrom, columnTo) {\n        var allColumns = this.columnModel.getAllDisplayedColumns();\n        var isSameColumn = columnFrom === columnTo;\n        var fromIndex = allColumns.indexOf(columnFrom);\n        if (fromIndex < 0) {\n            console.warn(\"AG Grid: column \" + columnFrom.getId() + \" is not visible\");\n            return;\n        }\n        var toIndex = isSameColumn ? fromIndex : allColumns.indexOf(columnTo);\n        if (toIndex < 0) {\n            console.warn(\"AG Grid: column \" + columnTo.getId() + \" is not visible\");\n            return;\n        }\n        if (isSameColumn) {\n            return [columnFrom];\n        }\n        var firstIndex = Math.min(fromIndex, toIndex);\n        var lastIndex = firstIndex === fromIndex ? toIndex : fromIndex;\n        var columns = [];\n        for (var i = firstIndex; i <= lastIndex; i++) {\n            columns.push(allColumns[i]);\n        }\n        return columns;\n    };\n    __decorate$J([\n        Autowired('rowModel')\n    ], RangeService.prototype, \"rowModel\", void 0);\n    __decorate$J([\n        Autowired('dragService')\n    ], RangeService.prototype, \"dragService\", void 0);\n    __decorate$J([\n        Autowired('columnModel')\n    ], RangeService.prototype, \"columnModel\", void 0);\n    __decorate$J([\n        Autowired('cellNavigationService')\n    ], RangeService.prototype, \"cellNavigationService\", void 0);\n    __decorate$J([\n        Autowired(\"pinnedRowModel\")\n    ], RangeService.prototype, \"pinnedRowModel\", void 0);\n    __decorate$J([\n        Autowired('rowPositionUtils')\n    ], RangeService.prototype, \"rowPositionUtils\", void 0);\n    __decorate$J([\n        Autowired('cellPositionUtils')\n    ], RangeService.prototype, \"cellPositionUtils\", void 0);\n    __decorate$J([\n        Autowired('ctrlsService')\n    ], RangeService.prototype, \"ctrlsService\", void 0);\n    __decorate$J([\n        PostConstruct\n    ], RangeService.prototype, \"init\", null);\n    RangeService = __decorate$J([\n        Bean('rangeService')\n    ], RangeService);\n    return RangeService;\n}(BeanStub));\n\nvar __extends$M = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$I = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar AbstractSelectionHandle = /** @class */ (function (_super) {\n    __extends$M(AbstractSelectionHandle, _super);\n    function AbstractSelectionHandle() {\n        var _this = _super !== null && _super.apply(this, arguments) || this;\n        _this.changedCalculatedValues = false;\n        _this.dragging = false;\n        _this.shouldDestroyOnEndDragging = false;\n        return _this;\n    }\n    AbstractSelectionHandle.prototype.init = function () {\n        var _this = this;\n        this.dragService.addDragSource({\n            dragStartPixels: 0,\n            eElement: this.getGui(),\n            onDragStart: this.onDragStart.bind(this),\n            onDragging: function (e) {\n                _this.dragging = true;\n                _this.rangeService.autoScrollService.check(e);\n                if (_this.changedCalculatedValues) {\n                    _this.onDrag(e);\n                    _this.changedCalculatedValues = false;\n                }\n            },\n            onDragStop: function (e) {\n                _this.dragging = false;\n                _this.onDragEnd(e);\n                _this.clearValues();\n                _this.rangeService.autoScrollService.ensureCleared();\n                // TODO: this causes a bug where if there are multiple grids in the same page, all of them will\n                // be affected by a drag on any. Move it to the root element.\n                document.body.classList.remove(_this.getDraggingCssClass());\n                if (_this.shouldDestroyOnEndDragging) {\n                    _this.destroy();\n                }\n            }\n        });\n        this.addManagedListener(this.getGui(), 'mousedown', this.preventRangeExtension.bind(this));\n    };\n    AbstractSelectionHandle.prototype.isDragging = function () {\n        return this.dragging;\n    };\n    AbstractSelectionHandle.prototype.getCellCtrl = function () {\n        return this.cellCtrl;\n    };\n    AbstractSelectionHandle.prototype.setCellCtrl = function (cellComp) {\n        this.cellCtrl = cellComp;\n    };\n    AbstractSelectionHandle.prototype.getCellRange = function () {\n        return this.cellRange;\n    };\n    AbstractSelectionHandle.prototype.setCellRange = function (range) {\n        this.cellRange = range;\n    };\n    AbstractSelectionHandle.prototype.getRangeStartRow = function () {\n        return this.rangeStartRow;\n    };\n    AbstractSelectionHandle.prototype.setRangeStartRow = function (row) {\n        this.rangeStartRow = row;\n    };\n    AbstractSelectionHandle.prototype.getRangeEndRow = function () {\n        return this.rangeEndRow;\n    };\n    AbstractSelectionHandle.prototype.setRangeEndRow = function (row) {\n        this.rangeEndRow = row;\n    };\n    AbstractSelectionHandle.prototype.getLastCellHovered = function () {\n        return this.lastCellHovered;\n    };\n    AbstractSelectionHandle.prototype.preventRangeExtension = function (e) {\n        e.stopPropagation();\n    };\n    AbstractSelectionHandle.prototype.onDragStart = function (e) {\n        this.cellHoverListener = this.addManagedListener(this.ctrlsService.getGridCtrl().getGui(), 'mousemove', this.updateValuesOnMove.bind(this));\n        document.body.classList.add(this.getDraggingCssClass());\n    };\n    AbstractSelectionHandle.prototype.getDraggingCssClass = function () {\n        return \"ag-dragging-\" + (this.type === SelectionHandleType.FILL ? 'fill' : 'range') + \"-handle\";\n    };\n    AbstractSelectionHandle.prototype.updateValuesOnMove = function (e) {\n        var cell = this.mouseEventService.getCellPositionForEvent(e);\n        if (!cell || (this.lastCellHovered && this.cellPositionUtils.equals(cell, this.lastCellHovered))) {\n            return;\n        }\n        this.lastCellHovered = cell;\n        this.changedCalculatedValues = true;\n    };\n    AbstractSelectionHandle.prototype.getType = function () {\n        return this.type;\n    };\n    AbstractSelectionHandle.prototype.refresh = function (cellCtrl) {\n        var oldCellComp = this.getCellCtrl();\n        var eGui = this.getGui();\n        var cellRange = _.last(this.rangeService.getCellRanges());\n        var start = cellRange.startRow;\n        var end = cellRange.endRow;\n        if (start && end) {\n            var isBefore = this.rowPositionUtils.before(end, start);\n            if (isBefore) {\n                this.setRangeStartRow(end);\n                this.setRangeEndRow(start);\n            }\n            else {\n                this.setRangeStartRow(start);\n                this.setRangeEndRow(end);\n            }\n        }\n        if (oldCellComp !== cellCtrl || !_.isVisible(eGui)) {\n            this.setCellCtrl(cellCtrl);\n            var eParentOfValue = cellCtrl.getComp().getParentOfValue();\n            if (eParentOfValue) {\n                eParentOfValue.appendChild(eGui);\n            }\n        }\n        this.setCellRange(cellRange);\n    };\n    AbstractSelectionHandle.prototype.clearValues = function () {\n        this.lastCellHovered = undefined;\n        this.removeListeners();\n    };\n    AbstractSelectionHandle.prototype.removeListeners = function () {\n        if (this.cellHoverListener) {\n            this.cellHoverListener();\n            this.cellHoverListener = undefined;\n        }\n    };\n    AbstractSelectionHandle.prototype.destroy = function () {\n        if (!this.shouldDestroyOnEndDragging && this.isDragging()) {\n            _.setDisplayed(this.getGui(), false);\n            this.shouldDestroyOnEndDragging = true;\n            return;\n        }\n        this.shouldDestroyOnEndDragging = false;\n        _super.prototype.destroy.call(this);\n        this.removeListeners();\n        var eGui = this.getGui();\n        if (eGui.parentElement) {\n            eGui.parentElement.removeChild(eGui);\n        }\n    };\n    __decorate$I([\n        Autowired(\"rowRenderer\")\n    ], AbstractSelectionHandle.prototype, \"rowRenderer\", void 0);\n    __decorate$I([\n        Autowired(\"dragService\")\n    ], AbstractSelectionHandle.prototype, \"dragService\", void 0);\n    __decorate$I([\n        Autowired(\"rangeService\")\n    ], AbstractSelectionHandle.prototype, \"rangeService\", void 0);\n    __decorate$I([\n        Autowired(\"mouseEventService\")\n    ], AbstractSelectionHandle.prototype, \"mouseEventService\", void 0);\n    __decorate$I([\n        Autowired(\"columnModel\")\n    ], AbstractSelectionHandle.prototype, \"columnModel\", void 0);\n    __decorate$I([\n        Autowired(\"cellNavigationService\")\n    ], AbstractSelectionHandle.prototype, \"cellNavigationService\", void 0);\n    __decorate$I([\n        Autowired(\"navigationService\")\n    ], AbstractSelectionHandle.prototype, \"navigationService\", void 0);\n    __decorate$I([\n        Autowired('rowPositionUtils')\n    ], AbstractSelectionHandle.prototype, \"rowPositionUtils\", void 0);\n    __decorate$I([\n        Autowired('cellPositionUtils')\n    ], AbstractSelectionHandle.prototype, \"cellPositionUtils\", void 0);\n    __decorate$I([\n        Autowired('ctrlsService')\n    ], AbstractSelectionHandle.prototype, \"ctrlsService\", void 0);\n    __decorate$I([\n        PostConstruct\n    ], AbstractSelectionHandle.prototype, \"init\", null);\n    return AbstractSelectionHandle;\n}(Component));\n\nfunction findLineByLeastSquares(values) {\n    var len = values.length;\n    var maxDecimals = 0;\n    if (len <= 1) {\n        return values;\n    }\n    for (var i = 0; i < values.length; i++) {\n        var value = values[i];\n        var splitExponent = value.toString().split('e-');\n        if (splitExponent.length > 1) {\n            maxDecimals = Math.max(maxDecimals, parseInt(splitExponent[1], 10));\n            continue;\n        }\n        if (Math.floor(value) === value) {\n            continue;\n        }\n        maxDecimals = Math.max(maxDecimals, value.toString().split('.')[1].length);\n    }\n    var sum_x = 0;\n    var sum_y = 0;\n    var sum_xy = 0;\n    var sum_xx = 0;\n    var y = 0;\n    for (var x = 0; x < len; x++) {\n        y = values[x];\n        sum_x += x;\n        sum_y += y;\n        sum_xx += x * x;\n        sum_xy += x * y;\n    }\n    var m = (len * sum_xy - sum_x * sum_y) / (len * sum_xx - sum_x * sum_x);\n    var b = (sum_y / len) - (m * sum_x) / len;\n    var result = [];\n    for (var x = 0; x <= len; x++) {\n        result.push(parseFloat((x * m + b).toFixed(maxDecimals)));\n    }\n    return result;\n}\n\nvar __extends$L = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __assign$8 = (undefined && undefined.__assign) || function () {\n    __assign$8 = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign$8.apply(this, arguments);\n};\nvar __decorate$H = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __read$b = (undefined && undefined.__read) || function (o, n) {\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n    if (!m) return o;\n    var i = m.call(o), r, ar = [], e;\n    try {\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n    }\n    catch (error) { e = { error: error }; }\n    finally {\n        try {\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\n        }\n        finally { if (e) throw e.error; }\n    }\n    return ar;\n};\nvar __spread$5 = (undefined && undefined.__spread) || function () {\n    for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read$b(arguments[i]));\n    return ar;\n};\nvar FillHandle = /** @class */ (function (_super) {\n    __extends$L(FillHandle, _super);\n    function FillHandle() {\n        var _this = _super.call(this, FillHandle.TEMPLATE) || this;\n        _this.markedCells = [];\n        _this.cellValues = [];\n        _this.isUp = false;\n        _this.isLeft = false;\n        _this.isReduce = false;\n        _this.type = SelectionHandleType.FILL;\n        return _this;\n    }\n    FillHandle.prototype.updateValuesOnMove = function (e) {\n        _super.prototype.updateValuesOnMove.call(this, e);\n        if (!this.initialXY) {\n            this.initialXY = this.mouseEventService.getNormalisedPosition(e);\n        }\n        var _a = this.initialXY, x = _a.x, y = _a.y;\n        var _b = this.mouseEventService.getNormalisedPosition(e), newX = _b.x, newY = _b.y;\n        var diffX = Math.abs(x - newX);\n        var diffY = Math.abs(y - newY);\n        var allowedDirection = this.getFillHandleDirection();\n        var direction;\n        if (allowedDirection === 'xy') {\n            direction = diffX > diffY ? 'x' : 'y';\n        }\n        else {\n            direction = allowedDirection;\n        }\n        if (direction !== this.dragAxis) {\n            this.dragAxis = direction;\n            this.changedCalculatedValues = true;\n        }\n    };\n    FillHandle.prototype.onDrag = function (e) {\n        if (!this.initialPosition) {\n            var cellCtrl = this.getCellCtrl();\n            if (!cellCtrl) {\n                return;\n            }\n            this.initialPosition = cellCtrl.getCellPosition();\n        }\n        var lastCellHovered = this.getLastCellHovered();\n        if (lastCellHovered) {\n            this.markPathFrom(this.initialPosition, lastCellHovered);\n        }\n    };\n    FillHandle.prototype.onDragEnd = function (e) {\n        this.initialXY = null;\n        if (!this.markedCells.length) {\n            return;\n        }\n        var isX = this.dragAxis === 'x';\n        var initialRange = this.getCellRange();\n        var colLen = initialRange.columns.length;\n        var rangeStartRow = this.getRangeStartRow();\n        var rangeEndRow = this.getRangeEndRow();\n        var finalRange;\n        if (!this.isUp && !this.isLeft) {\n            finalRange = this.rangeService.createCellRangeFromCellRangeParams({\n                rowStartIndex: rangeStartRow.rowIndex,\n                rowStartPinned: rangeStartRow.rowPinned,\n                columnStart: initialRange.columns[0],\n                rowEndIndex: isX ? rangeEndRow.rowIndex : this.lastCellMarked.rowIndex,\n                rowEndPinned: isX ? rangeEndRow.rowPinned : this.lastCellMarked.rowPinned,\n                columnEnd: isX ? this.lastCellMarked.column : initialRange.columns[colLen - 1]\n            });\n        }\n        else {\n            var startRow = isX ? rangeStartRow : this.lastCellMarked;\n            finalRange = this.rangeService.createCellRangeFromCellRangeParams({\n                rowStartIndex: startRow.rowIndex,\n                rowStartPinned: startRow.rowPinned,\n                columnStart: isX ? this.lastCellMarked.column : initialRange.columns[0],\n                rowEndIndex: rangeEndRow.rowIndex,\n                rowEndPinned: rangeEndRow.rowPinned,\n                columnEnd: initialRange.columns[colLen - 1]\n            });\n        }\n        if (finalRange) {\n            // raising fill events for undo / redo\n            this.raiseFillStartEvent();\n            this.handleValueChanged(initialRange, finalRange, e);\n            this.rangeService.setCellRanges([finalRange]);\n            this.raiseFillEndEvent(initialRange, finalRange);\n        }\n    };\n    FillHandle.prototype.getFillHandleDirection = function () {\n        var direction = this.gridOptionsService.get('fillHandleDirection');\n        if (!direction) {\n            return 'xy';\n        }\n        if (direction !== 'x' && direction !== 'y' && direction !== 'xy') {\n            _.doOnce(function () { return console.warn(\"AG Grid: valid values for fillHandleDirection are 'x', 'y' and 'xy'. Default to 'xy'.\"); }, 'warn invalid fill direction');\n            return 'xy';\n        }\n        return direction;\n    };\n    FillHandle.prototype.raiseFillStartEvent = function () {\n        var fillStartEvent = {\n            type: Events.EVENT_FILL_START\n        };\n        this.eventService.dispatchEvent(fillStartEvent);\n    };\n    FillHandle.prototype.raiseFillEndEvent = function (initialRange, finalRange) {\n        var fillEndEvent = {\n            type: Events.EVENT_FILL_END,\n            initialRange: initialRange,\n            finalRange: finalRange\n        };\n        this.eventService.dispatchEvent(fillEndEvent);\n    };\n    FillHandle.prototype.handleValueChanged = function (initialRange, finalRange, e) {\n        var _this = this;\n        var initialRangeEndRow = this.rangeService.getRangeEndRow(initialRange);\n        var initialRangeStartRow = this.rangeService.getRangeStartRow(initialRange);\n        var finalRangeEndRow = this.rangeService.getRangeEndRow(finalRange);\n        var finalRangeStartRow = this.rangeService.getRangeStartRow(finalRange);\n        var isVertical = this.dragAxis === 'y';\n        // if the range is being reduced in size, all we need to do is\n        // clear the cells that are no longer part of the range\n        if (this.isReduce && !this.gridOptionsService.is('suppressClearOnFillReduction')) {\n            var columns = isVertical\n                ? initialRange.columns\n                : initialRange.columns.filter(function (col) { return finalRange.columns.indexOf(col) < 0; });\n            var startRow = isVertical ? this.cellNavigationService.getRowBelow(finalRangeEndRow) : finalRangeStartRow;\n            if (startRow) {\n                this.clearCellsInRange(startRow, initialRangeEndRow, columns);\n            }\n            return;\n        }\n        var withinInitialRange = true;\n        var values = [];\n        var initialValues = [];\n        var idx = 0;\n        var resetValues = function () {\n            values.length = 0;\n            initialValues.length = 0;\n            idx = 0;\n        };\n        var iterateAcrossCells = function (column, columns) {\n            var currentRow = _this.isUp ? initialRangeEndRow : initialRangeStartRow;\n            var finished = false;\n            if (isVertical) {\n                withinInitialRange = true;\n                resetValues();\n            }\n            var _loop_1 = function () {\n                var rowNode = _this.rowPositionUtils.getRowNode(currentRow);\n                if (!rowNode) {\n                    return \"break\";\n                }\n                if (isVertical && column) {\n                    fillValues(values, column, rowNode, function () {\n                        return !_this.rowPositionUtils.sameRow(currentRow, _this.isUp ? initialRangeStartRow : initialRangeEndRow);\n                    });\n                }\n                else if (columns) {\n                    withinInitialRange = true;\n                    resetValues();\n                    columns.forEach(function (col) { return fillValues(values, col, rowNode, function () { return col !== (_this.isLeft ? initialRange.columns[0] : _.last(initialRange.columns)); }); });\n                }\n                finished = _this.rowPositionUtils.sameRow(currentRow, _this.isUp ? finalRangeStartRow : finalRangeEndRow);\n                currentRow = _this.isUp\n                    ? _this.cellNavigationService.getRowAbove(currentRow)\n                    : _this.cellNavigationService.getRowBelow(currentRow);\n            };\n            while (!finished && currentRow) {\n                var state_1 = _loop_1();\n                if (state_1 === \"break\")\n                    break;\n            }\n        };\n        var fillValues = function (currentValues, col, rowNode, updateInitialSet) {\n            var currentValue;\n            var skipValue = false;\n            if (withinInitialRange) {\n                currentValue = _this.valueService.getValue(col, rowNode);\n                initialValues.push(currentValue);\n                withinInitialRange = updateInitialSet();\n            }\n            else {\n                var _a = _this.processValues(e, currentValues, initialValues, col, rowNode, idx++), value = _a.value, fromUserFunction = _a.fromUserFunction;\n                currentValue = value;\n                if (col.isCellEditable(rowNode)) {\n                    var cellValue = _this.valueService.getValue(col, rowNode);\n                    if (!fromUserFunction || cellValue !== currentValue) {\n                        rowNode.setDataValue(col, currentValue, 'rangeService');\n                    }\n                    else {\n                        skipValue = true;\n                    }\n                }\n            }\n            if (!skipValue) {\n                currentValues.push(currentValue);\n            }\n        };\n        if (isVertical) {\n            initialRange.columns.forEach(function (col) {\n                iterateAcrossCells(col);\n            });\n        }\n        else {\n            var columns = this.isLeft ? __spread$5(finalRange.columns).reverse() : finalRange.columns;\n            iterateAcrossCells(undefined, columns);\n        }\n    };\n    FillHandle.prototype.clearCellsInRange = function (startRow, endRow, columns) {\n        var cellRange = {\n            startRow: startRow,\n            endRow: endRow,\n            columns: columns,\n            startColumn: columns[0]\n        };\n        this.rangeService.clearCellRangeCellValues([cellRange]);\n    };\n    FillHandle.prototype.processValues = function (event, values, initialValues, col, rowNode, idx) {\n        var userFillOperation = this.gridOptionsService.getCallback('fillOperation');\n        var isVertical = this.dragAxis === 'y';\n        var direction;\n        if (isVertical) {\n            direction = this.isUp ? 'up' : 'down';\n        }\n        else {\n            direction = this.isLeft ? 'left' : 'right';\n        }\n        if (userFillOperation) {\n            var params = {\n                event: event,\n                values: values,\n                initialValues: initialValues,\n                currentIndex: idx,\n                currentCellValue: this.valueService.getValue(col, rowNode),\n                direction: direction,\n                column: col,\n                rowNode: rowNode\n            };\n            var userResult = userFillOperation(params);\n            if (userResult !== false) {\n                return { value: userResult, fromUserFunction: true };\n            }\n        }\n        var allNumbers = !values.some(function (val) {\n            var asFloat = parseFloat(val);\n            return isNaN(asFloat) || asFloat.toString() !== val.toString();\n        });\n        // values should be copied in order if the alt key is pressed\n        // or if the values contain strings and numbers\n        // However, if we only have one initial value selected, and that\n        // value is a number and we are also pressing alt, then we should\n        // increment or decrement the value by 1 based on direction.\n        if (event.altKey || !allNumbers) {\n            if (allNumbers && initialValues.length === 1) {\n                var multiplier = (this.isUp || this.isLeft) ? -1 : 1;\n                return { value: parseFloat(_.last(values)) + 1 * multiplier, fromUserFunction: false };\n            }\n            return { value: values[idx % values.length], fromUserFunction: false };\n        }\n        return { value: _.last(findLineByLeastSquares(values.map(Number))), fromUserFunction: false };\n    };\n    FillHandle.prototype.clearValues = function () {\n        this.clearMarkedPath();\n        this.clearCellValues();\n        this.lastCellMarked = undefined;\n        _super.prototype.clearValues.call(this);\n    };\n    FillHandle.prototype.clearMarkedPath = function () {\n        this.markedCells.forEach(function (cell) {\n            if (!cell.isAlive()) {\n                return;\n            }\n            var comp = cell.getComp();\n            comp.addOrRemoveCssClass('ag-selection-fill-top', false);\n            comp.addOrRemoveCssClass('ag-selection-fill-right', false);\n            comp.addOrRemoveCssClass('ag-selection-fill-bottom', false);\n            comp.addOrRemoveCssClass('ag-selection-fill-left', false);\n        });\n        this.markedCells.length = 0;\n        this.isUp = false;\n        this.isLeft = false;\n        this.isReduce = false;\n    };\n    FillHandle.prototype.clearCellValues = function () {\n        this.cellValues.length = 0;\n    };\n    FillHandle.prototype.markPathFrom = function (initialPosition, currentPosition) {\n        this.clearMarkedPath();\n        this.clearCellValues();\n        if (this.dragAxis === 'y') {\n            if (this.rowPositionUtils.sameRow(currentPosition, initialPosition)) {\n                return;\n            }\n            var isBefore = this.rowPositionUtils.before(currentPosition, initialPosition);\n            var rangeStartRow = this.getRangeStartRow();\n            var rangeEndRow = this.getRangeEndRow();\n            if (isBefore && ((currentPosition.rowPinned == rangeStartRow.rowPinned &&\n                currentPosition.rowIndex >= rangeStartRow.rowIndex) ||\n                (rangeStartRow.rowPinned != rangeEndRow.rowPinned &&\n                    currentPosition.rowPinned == rangeEndRow.rowPinned &&\n                    currentPosition.rowIndex <= rangeEndRow.rowIndex))) {\n                this.reduceVertical(initialPosition, currentPosition);\n                this.isReduce = true;\n            }\n            else {\n                this.extendVertical(initialPosition, currentPosition, isBefore);\n                this.isReduce = false;\n            }\n        }\n        else {\n            var initialColumn = initialPosition.column;\n            var currentColumn = currentPosition.column;\n            if (initialColumn === currentColumn) {\n                return;\n            }\n            var displayedColumns = this.columnModel.getAllDisplayedColumns();\n            var initialIndex = displayedColumns.indexOf(initialColumn);\n            var currentIndex = displayedColumns.indexOf(currentColumn);\n            if (currentIndex <= initialIndex && currentIndex >= displayedColumns.indexOf(this.getCellRange().columns[0])) {\n                this.reduceHorizontal(initialPosition, currentPosition);\n                this.isReduce = true;\n            }\n            else {\n                this.extendHorizontal(initialPosition, currentPosition, currentIndex < initialIndex);\n                this.isReduce = false;\n            }\n        }\n        this.lastCellMarked = currentPosition;\n    };\n    FillHandle.prototype.extendVertical = function (initialPosition, endPosition, isMovingUp) {\n        var _a = this, navigationService = _a.navigationService, rangeService = _a.rangeService;\n        var row = initialPosition;\n        do {\n            var cellRange = this.getCellRange();\n            var colLen = cellRange.columns.length;\n            for (var i = 0; i < colLen; i++) {\n                var column = cellRange.columns[i];\n                var rowPos = { rowIndex: row.rowIndex, rowPinned: row.rowPinned };\n                var cellPos = __assign$8(__assign$8({}, rowPos), { column: column });\n                var cellInRange = rangeService.isCellInSpecificRange(cellPos, cellRange);\n                var isInitialRow = this.rowPositionUtils.sameRow(row, initialPosition);\n                if (isMovingUp) {\n                    this.isUp = true;\n                }\n                if (!isInitialRow) {\n                    var cell = navigationService.getCellByPosition(cellPos);\n                    if (cell) {\n                        this.markedCells.push(cell);\n                        var cellCtrl = cell.getComp();\n                        if (!cellInRange) {\n                            cellCtrl.addOrRemoveCssClass('ag-selection-fill-left', i === 0);\n                            cellCtrl.addOrRemoveCssClass('ag-selection-fill-right', i === colLen - 1);\n                        }\n                        cellCtrl.addOrRemoveCssClass(isMovingUp ? 'ag-selection-fill-top' : 'ag-selection-fill-bottom', this.rowPositionUtils.sameRow(row, endPosition));\n                    }\n                }\n            }\n            if (this.rowPositionUtils.sameRow(row, endPosition)) {\n                break;\n            }\n        } while (\n        // tslint:disable-next-line\n        row = isMovingUp\n            ? this.cellNavigationService.getRowAbove(row)\n            : this.cellNavigationService.getRowBelow(row));\n    };\n    FillHandle.prototype.reduceVertical = function (initialPosition, endPosition) {\n        var row = initialPosition;\n        do {\n            var cellRange = this.getCellRange();\n            var colLen = cellRange.columns.length;\n            var isLastRow = this.rowPositionUtils.sameRow(row, endPosition);\n            for (var i = 0; i < colLen; i++) {\n                var rowPos = { rowIndex: row.rowIndex, rowPinned: row.rowPinned };\n                var celPos = __assign$8(__assign$8({}, rowPos), { column: cellRange.columns[i] });\n                var cell = this.navigationService.getCellByPosition(celPos);\n                if (cell) {\n                    this.markedCells.push(cell);\n                    var cellComp = cell.getComp();\n                    cellComp.addOrRemoveCssClass('ag-selection-fill-bottom', this.rowPositionUtils.sameRow(row, endPosition));\n                }\n            }\n            if (isLastRow) {\n                break;\n            }\n            // tslint:disable-next-line\n        } while (row = this.cellNavigationService.getRowAbove(row));\n    };\n    FillHandle.prototype.extendHorizontal = function (initialPosition, endPosition, isMovingLeft) {\n        var _this = this;\n        var allCols = this.columnModel.getAllDisplayedColumns();\n        var startCol = allCols.indexOf(isMovingLeft ? endPosition.column : initialPosition.column);\n        var endCol = allCols.indexOf(isMovingLeft ? this.getCellRange().columns[0] : endPosition.column);\n        var offset = isMovingLeft ? 0 : 1;\n        var colsToMark = allCols.slice(startCol + offset, endCol + offset);\n        var rangeStartRow = this.getRangeStartRow();\n        var rangeEndRow = this.getRangeEndRow();\n        colsToMark.forEach(function (column) {\n            var row = rangeStartRow;\n            var isLastRow = false;\n            do {\n                isLastRow = _this.rowPositionUtils.sameRow(row, rangeEndRow);\n                var cell = _this.navigationService.getCellByPosition({\n                    rowIndex: row.rowIndex,\n                    rowPinned: row.rowPinned,\n                    column: column\n                });\n                if (cell) {\n                    _this.markedCells.push(cell);\n                    var cellComp = cell.getComp();\n                    cellComp.addOrRemoveCssClass('ag-selection-fill-top', _this.rowPositionUtils.sameRow(row, rangeStartRow));\n                    cellComp.addOrRemoveCssClass('ag-selection-fill-bottom', _this.rowPositionUtils.sameRow(row, rangeEndRow));\n                    if (isMovingLeft) {\n                        _this.isLeft = true;\n                        cellComp.addOrRemoveCssClass('ag-selection-fill-left', column === colsToMark[0]);\n                    }\n                    else {\n                        cellComp.addOrRemoveCssClass('ag-selection-fill-right', column === _.last(colsToMark));\n                    }\n                }\n                row = _this.cellNavigationService.getRowBelow(row);\n            } while (!isLastRow);\n        });\n    };\n    FillHandle.prototype.reduceHorizontal = function (initialPosition, endPosition) {\n        var _this = this;\n        var allCols = this.columnModel.getAllDisplayedColumns();\n        var startCol = allCols.indexOf(endPosition.column);\n        var endCol = allCols.indexOf(initialPosition.column);\n        var colsToMark = allCols.slice(startCol, endCol);\n        var rangeStartRow = this.getRangeStartRow();\n        var rangeEndRow = this.getRangeEndRow();\n        colsToMark.forEach(function (column) {\n            var row = rangeStartRow;\n            var isLastRow = false;\n            do {\n                isLastRow = _this.rowPositionUtils.sameRow(row, rangeEndRow);\n                var cell = _this.navigationService.getCellByPosition({\n                    rowIndex: row.rowIndex,\n                    rowPinned: row.rowPinned,\n                    column: column\n                });\n                if (cell) {\n                    _this.markedCells.push(cell);\n                    var cellComp = cell.getComp();\n                    cellComp.addOrRemoveCssClass('ag-selection-fill-right', column === colsToMark[0]);\n                }\n                row = _this.cellNavigationService.getRowBelow(row);\n            } while (!isLastRow);\n        });\n    };\n    FillHandle.prototype.refresh = function (cellCtrl) {\n        var cellRange = this.rangeService.getCellRanges()[0];\n        var isColumnRange = !cellRange.startRow || !cellRange.endRow;\n        if (isColumnRange) {\n            this.destroy();\n            return;\n        }\n        _super.prototype.refresh.call(this, cellCtrl);\n    };\n    FillHandle.TEMPLATE = \"<div class=\\\"ag-fill-handle\\\"></div>\";\n    __decorate$H([\n        Autowired('valueService')\n    ], FillHandle.prototype, \"valueService\", void 0);\n    return FillHandle;\n}(AbstractSelectionHandle));\n\nvar __extends$K = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __assign$7 = (undefined && undefined.__assign) || function () {\n    __assign$7 = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign$7.apply(this, arguments);\n};\nvar RangeHandle = /** @class */ (function (_super) {\n    __extends$K(RangeHandle, _super);\n    function RangeHandle() {\n        var _this = _super.call(this, RangeHandle.TEMPLATE) || this;\n        _this.type = SelectionHandleType.RANGE;\n        _this.rangeFixed = false;\n        return _this;\n    }\n    RangeHandle.prototype.onDrag = function (e) {\n        var lastCellHovered = this.getLastCellHovered();\n        if (!lastCellHovered) {\n            return;\n        }\n        var cellRanges = this.rangeService.getCellRanges();\n        var lastRange = _.last(cellRanges);\n        if (!this.rangeFixed) {\n            this.fixRangeStartEnd(lastRange);\n            this.rangeFixed = true;\n        }\n        this.endPosition = {\n            rowIndex: lastCellHovered.rowIndex,\n            rowPinned: lastCellHovered.rowPinned,\n            column: lastCellHovered.column\n        };\n        // check if the cell ranges are for a chart\n        if (cellRanges.length === 2 && cellRanges[0].type === CellRangeType.DIMENSION && lastRange.type === CellRangeType.VALUE) {\n            var rowChanged = !this.rowPositionUtils.sameRow(this.endPosition, this.rangeService.getRangeEndRow(lastRange));\n            if (rowChanged) {\n                // ensure the dimension range is kept in sync with the value range (which has the handle)\n                this.rangeService.updateRangeEnd(cellRanges[0], __assign$7(__assign$7({}, this.endPosition), { column: cellRanges[0].columns[0] }), true);\n            }\n        }\n        this.rangeService.extendLatestRangeToCell(this.endPosition);\n    };\n    RangeHandle.prototype.onDragEnd = function (e) {\n        var cellRange = _.last(this.rangeService.getCellRanges());\n        this.fixRangeStartEnd(cellRange);\n        this.rangeFixed = false;\n    };\n    RangeHandle.prototype.fixRangeStartEnd = function (cellRange) {\n        var startRow = this.rangeService.getRangeStartRow(cellRange);\n        var endRow = this.rangeService.getRangeEndRow(cellRange);\n        var column = cellRange.columns[0];\n        cellRange.startRow = startRow;\n        cellRange.endRow = endRow;\n        cellRange.startColumn = column;\n    };\n    RangeHandle.TEMPLATE = \"<div class=\\\"ag-range-handle\\\"></div>\";\n    return RangeHandle;\n}(AbstractSelectionHandle));\n\nvar __extends$J = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$G = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar SelectionHandleFactory = /** @class */ (function (_super) {\n    __extends$J(SelectionHandleFactory, _super);\n    function SelectionHandleFactory() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    SelectionHandleFactory.prototype.createSelectionHandle = function (type) {\n        return this.createBean(type === SelectionHandleType.RANGE ? new RangeHandle() : new FillHandle());\n    };\n    SelectionHandleFactory = __decorate$G([\n        Bean('selectionHandleFactory')\n    ], SelectionHandleFactory);\n    return SelectionHandleFactory;\n}(BeanStub));\n\n// DO NOT UPDATE MANUALLY: Generated from script during build time\nvar VERSION$9 = '29.3.5';\n\nvar RangeSelectionModule = {\n    version: VERSION$9,\n    moduleName: ModuleNames.RangeSelectionModule,\n    beans: [RangeService, SelectionHandleFactory],\n    agStackComponents: [\n        { componentName: 'AgFillHandle', componentClass: FillHandle },\n        { componentName: 'AgRangeHandle', componentClass: RangeHandle }\n    ],\n    dependantModules: [\n        EnterpriseCoreModule\n    ]\n};\n\nvar __extends$I = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$F = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __read$a = (undefined && undefined.__read) || function (o, n) {\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n    if (!m) return o;\n    var i = m.call(o), r, ar = [], e;\n    try {\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n    }\n    catch (error) { e = { error: error }; }\n    finally {\n        try {\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\n        }\n        finally { if (e) throw e.error; }\n    }\n    return ar;\n};\nvar AgColorPanel = /** @class */ (function (_super) {\n    __extends$I(AgColorPanel, _super);\n    function AgColorPanel(config) {\n        var _this = _super.call(this, AgColorPanel.TEMPLATE) || this;\n        _this.H = 1; // in the [0, 1] range\n        _this.S = 1; // in the [0, 1] range\n        _this.B = 1; // in the [0, 1] range\n        _this.A = 1; // in the [0, 1] range\n        _this.isSpectrumDragging = false;\n        _this.isSpectrumHueDragging = false;\n        _this.isSpectrumAlphaDragging = false;\n        _this.colorChanged = false;\n        _this.picker = config.picker;\n        return _this;\n    }\n    AgColorPanel.prototype.postConstruct = function () {\n        var eGui = this.getGui();\n        this.initRecentColors();\n        this.addManagedListener(this.spectrumVal, 'mousedown', this.onSpectrumDraggerDown.bind(this));\n        this.addManagedListener(eGui, 'mousemove', this.onSpectrumDraggerMove.bind(this));\n        this.addManagedListener(this.spectrumHue, 'mousedown', this.onSpectrumHueDown.bind(this));\n        this.addManagedListener(eGui, 'mousemove', this.onSpectrumHueMove.bind(this));\n        this.addManagedListener(this.spectrumAlpha, 'mousedown', this.onSpectrumAlphaDown.bind(this));\n        this.addManagedListener(eGui, 'mousemove', this.onSpectrumAlphaMove.bind(this));\n        // Listening to `mouseup` on the document on purpose. The user might release the mouse button\n        // outside the UI control. When the mouse returns back to the control's area, the dragging\n        // of the thumb is not expected and seen as a bug.\n        this.addManagedListener(document, 'mouseup', this.onMouseUp.bind(this));\n        this.addManagedListener(this.recentColors, 'click', this.onRecentColorClick.bind(this));\n    };\n    AgColorPanel.prototype.refreshSpectrumRect = function () {\n        return this.spectrumValRect = this.spectrumVal.getBoundingClientRect();\n    };\n    AgColorPanel.prototype.refreshHueRect = function () {\n        return this.spectrumHueRect = this.spectrumHue.getBoundingClientRect();\n    };\n    AgColorPanel.prototype.refreshAlphaRect = function () {\n        return this.spectrumAlphaRect = this.spectrumAlpha.getBoundingClientRect();\n    };\n    AgColorPanel.prototype.onSpectrumDraggerDown = function (e) {\n        this.refreshSpectrumRect();\n        this.isSpectrumDragging = true;\n        this.moveDragger(e);\n    };\n    AgColorPanel.prototype.onSpectrumDraggerMove = function (e) {\n        if (this.isSpectrumDragging) {\n            this.moveDragger(e);\n        }\n    };\n    AgColorPanel.prototype.onSpectrumHueDown = function (e) {\n        this.refreshHueRect();\n        this.isSpectrumHueDragging = true;\n        this.moveHueSlider(e);\n    };\n    AgColorPanel.prototype.onSpectrumHueMove = function (e) {\n        if (this.isSpectrumHueDragging) {\n            this.moveHueSlider(e);\n        }\n    };\n    AgColorPanel.prototype.onSpectrumAlphaDown = function (e) {\n        this.refreshAlphaRect();\n        this.isSpectrumAlphaDragging = true;\n        this.moveAlphaSlider(e);\n    };\n    AgColorPanel.prototype.onSpectrumAlphaMove = function (e) {\n        if (this.isSpectrumAlphaDragging) {\n            this.moveAlphaSlider(e);\n        }\n    };\n    AgColorPanel.prototype.onMouseUp = function () {\n        this.isSpectrumDragging = false;\n        this.isSpectrumHueDragging = false;\n        this.isSpectrumAlphaDragging = false;\n    };\n    AgColorPanel.prototype.moveDragger = function (e) {\n        var valRect = this.spectrumValRect;\n        if (valRect) {\n            var x = e.clientX - valRect.left;\n            var y = e.clientY - valRect.top;\n            x = Math.max(x, 0);\n            x = Math.min(x, valRect.width);\n            y = Math.max(y, 0);\n            y = Math.min(y, valRect.height);\n            this.setSpectrumValue(x / valRect.width, 1 - y / valRect.height);\n        }\n    };\n    AgColorPanel.prototype.moveHueSlider = function (e) {\n        var hueRect = this.spectrumHueRect;\n        if (hueRect) {\n            var slider = this.spectrumHueSlider;\n            var sliderRect = slider.getBoundingClientRect();\n            var x = e.clientX - hueRect.left;\n            x = Math.max(x, 0);\n            x = Math.min(x, hueRect.width);\n            this.H = 1 - x / hueRect.width;\n            slider.style.left = (x + sliderRect.width / 2) + 'px';\n            this.update();\n        }\n    };\n    AgColorPanel.prototype.moveAlphaSlider = function (e) {\n        var alphaRect = this.spectrumAlphaRect;\n        if (alphaRect) {\n            var slider = this.spectrumAlphaSlider;\n            var sliderRect = slider.getBoundingClientRect();\n            var x = e.clientX - alphaRect.left;\n            x = Math.max(x, 0);\n            x = Math.min(x, alphaRect.width);\n            this.A = x / alphaRect.width;\n            slider.style.left = (x + sliderRect.width / 2) + 'px';\n            this.update();\n        }\n    };\n    AgColorPanel.prototype.update = function () {\n        var color = Color.fromHSB(this.H * 360, this.S, this.B, this.A);\n        var spectrumColor = Color.fromHSB(this.H * 360, 1, 1);\n        var rgbaColor = color.toRgbaString();\n        // the recent color list needs to know color has actually changed\n        var colorPicker = this.picker;\n        var existingColor = Color.fromString(colorPicker.getValue());\n        if (existingColor.toRgbaString() !== rgbaColor) {\n            this.colorChanged = true;\n        }\n        colorPicker.setValue(rgbaColor);\n        this.spectrumColor.style.backgroundColor = spectrumColor.toRgbaString();\n        this.spectrumDragger.style.backgroundColor = rgbaColor;\n    };\n    /**\n     * @param saturation In the [0, 1] interval.\n     * @param brightness In the [0, 1] interval.\n     */\n    AgColorPanel.prototype.setSpectrumValue = function (saturation, brightness) {\n        var valRect = this.spectrumValRect || this.refreshSpectrumRect();\n        if (valRect) {\n            var dragger = this.spectrumDragger;\n            var draggerRect = dragger.getBoundingClientRect();\n            saturation = Math.max(0, saturation);\n            saturation = Math.min(1, saturation);\n            brightness = Math.max(0, brightness);\n            brightness = Math.min(1, brightness);\n            this.S = saturation;\n            this.B = brightness;\n            dragger.style.left = (saturation * valRect.width - draggerRect.width / 2) + 'px';\n            dragger.style.top = ((1 - brightness) * valRect.height - draggerRect.height / 2) + 'px';\n            this.update();\n        }\n    };\n    AgColorPanel.prototype.initRecentColors = function () {\n        var recentColors = AgColorPanel.recentColors;\n        var innerHtml = recentColors.map(function (color, index) {\n            return \"<div class=\\\"ag-recent-color\\\" id=\" + index + \" style=\\\"background-color: \" + color + \"; width: 15px; height: 15px;\\\" recent-color=\\\"\" + color + \"\\\"></div>\";\n        });\n        this.recentColors.innerHTML = innerHtml.join('');\n    };\n    AgColorPanel.prototype.setValue = function (val) {\n        var color = Color.fromString(val);\n        var _a = __read$a(color.toHSB(), 3), h = _a[0], s = _a[1], b = _a[2];\n        this.H = (isNaN(h) ? 0 : h) / 360;\n        this.A = color.a;\n        var spectrumHueRect = this.spectrumHueRect || this.refreshHueRect();\n        var spectrumAlphaRect = this.spectrumAlphaRect || this.refreshAlphaRect();\n        this.spectrumHueSlider.style.left = ((this.H - 1) * -spectrumHueRect.width) + \"px\";\n        this.spectrumAlphaSlider.style.left = (this.A * spectrumAlphaRect.width) + \"px\";\n        this.setSpectrumValue(s, b);\n    };\n    AgColorPanel.prototype.onRecentColorClick = function (e) {\n        var target = e.target;\n        if (!_.exists(target.id)) {\n            return;\n        }\n        var id = parseInt(target.id, 10);\n        this.setValue(AgColorPanel.recentColors[id]);\n        this.destroy();\n    };\n    AgColorPanel.prototype.addRecentColor = function () {\n        var color = Color.fromHSB(this.H * 360, this.S, this.B, this.A);\n        var rgbaColor = color.toRgbaString();\n        var recentColors = AgColorPanel.recentColors;\n        if (!this.colorChanged || recentColors[0] === rgbaColor) {\n            return;\n        }\n        // remove duplicate color\n        recentColors = recentColors.filter(function (currentColor) { return currentColor != rgbaColor; });\n        // add color to head\n        recentColors = [rgbaColor].concat(recentColors);\n        // ensure we don't exceed max number of recent colors\n        if (recentColors.length > AgColorPanel.maxRecentColors) {\n            recentColors = recentColors.slice(0, AgColorPanel.maxRecentColors);\n        }\n        AgColorPanel.recentColors = recentColors;\n    };\n    AgColorPanel.prototype.destroy = function () {\n        this.addRecentColor();\n        _super.prototype.destroy.call(this);\n    };\n    AgColorPanel.maxRecentColors = 8;\n    AgColorPanel.recentColors = [];\n    AgColorPanel.TEMPLATE = \"<div class=\\\"ag-color-panel\\\">\\n            <div ref=\\\"spectrumColor\\\" class=\\\"ag-spectrum-color\\\">\\n                <div class=\\\"ag-spectrum-sat ag-spectrum-fill\\\">\\n                    <div ref=\\\"spectrumVal\\\" class=\\\"ag-spectrum-val ag-spectrum-fill\\\">\\n                        <div ref=\\\"spectrumDragger\\\" class=\\\"ag-spectrum-dragger\\\"></div>\\n                    </div>\\n                </div>\\n            </div>\\n            <div class=\\\"ag-spectrum-tools\\\">\\n                <div ref=\\\"spectrumHue\\\" class=\\\"ag-spectrum-hue ag-spectrum-tool\\\">\\n                    <div class=\\\"ag-spectrum-hue-background\\\"></div>\\n                    <div ref=\\\"spectrumHueSlider\\\" class=\\\"ag-spectrum-slider\\\"></div>\\n                </div>\\n                <div ref=\\\"spectrumAlpha\\\" class=\\\"ag-spectrum-alpha ag-spectrum-tool\\\">\\n                    <div class=\\\"ag-spectrum-alpha-background\\\"></div>\\n                    <div ref=\\\"spectrumAlphaSlider\\\" class=\\\"ag-spectrum-slider\\\"></div>\\n                </div>\\n                <div ref=\\\"recentColors\\\" class=\\\"ag-recent-colors\\\"></div>\\n            </div>\\n        </div>\";\n    __decorate$F([\n        RefSelector('spectrumColor')\n    ], AgColorPanel.prototype, \"spectrumColor\", void 0);\n    __decorate$F([\n        RefSelector('spectrumVal')\n    ], AgColorPanel.prototype, \"spectrumVal\", void 0);\n    __decorate$F([\n        RefSelector('spectrumDragger')\n    ], AgColorPanel.prototype, \"spectrumDragger\", void 0);\n    __decorate$F([\n        RefSelector('spectrumHue')\n    ], AgColorPanel.prototype, \"spectrumHue\", void 0);\n    __decorate$F([\n        RefSelector('spectrumHueSlider')\n    ], AgColorPanel.prototype, \"spectrumHueSlider\", void 0);\n    __decorate$F([\n        RefSelector('spectrumAlpha')\n    ], AgColorPanel.prototype, \"spectrumAlpha\", void 0);\n    __decorate$F([\n        RefSelector('spectrumAlphaSlider')\n    ], AgColorPanel.prototype, \"spectrumAlphaSlider\", void 0);\n    __decorate$F([\n        RefSelector('recentColors')\n    ], AgColorPanel.prototype, \"recentColors\", void 0);\n    __decorate$F([\n        PostConstruct\n    ], AgColorPanel.prototype, \"postConstruct\", null);\n    return AgColorPanel;\n}(Component));\n\nvar __extends$H = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar AgColorPicker = /** @class */ (function (_super) {\n    __extends$H(AgColorPicker, _super);\n    function AgColorPicker(config) {\n        var _this = _super.call(this, config, 'ag-color-picker', 'colorPicker') || this;\n        if (config && config.color) {\n            _this.value = config.color;\n        }\n        return _this;\n    }\n    AgColorPicker.prototype.postConstruct = function () {\n        _super.prototype.postConstruct.call(this);\n        if (this.value) {\n            this.setValue(this.value);\n        }\n    };\n    AgColorPicker.prototype.showPicker = function () {\n        var _this = this;\n        var eGuiRect = this.getGui().getBoundingClientRect();\n        var colorDialog = this.createBean(new AgDialog({\n            closable: false,\n            modal: true,\n            hideTitleBar: true,\n            minWidth: 190,\n            width: 190,\n            height: 250,\n            x: eGuiRect.right - 190,\n            y: eGuiRect.top - 250\n        }));\n        this.isPickerDisplayed = true;\n        colorDialog.addCssClass('ag-color-dialog');\n        _.setAriaExpanded(this.eWrapper, true);\n        var colorPanel = this.createBean(new AgColorPanel({ picker: this }));\n        colorPanel.addDestroyFunc(function () {\n            if (colorDialog.isAlive()) {\n                _this.destroyBean(colorDialog);\n            }\n        });\n        colorDialog.setParentComponent(this);\n        colorDialog.setBodyComponent(colorPanel);\n        colorPanel.setValue(this.getValue());\n        colorDialog.addDestroyFunc(function () {\n            // here we check if the picker was already being\n            // destroyed to avoid a stack overflow\n            if (!_this.isDestroyingPicker) {\n                _this.isDestroyingPicker = true;\n                if (colorPanel.isAlive()) {\n                    _this.destroyBean(colorPanel);\n                }\n            }\n            else {\n                _this.isDestroyingPicker = false;\n            }\n            if (_this.isAlive()) {\n                _.setAriaExpanded(_this.eWrapper, false);\n                _this.getFocusableElement().focus();\n            }\n            _this.isPickerDisplayed = false;\n        });\n        return colorDialog;\n    };\n    AgColorPicker.prototype.setValue = function (color) {\n        if (this.value === color) {\n            return this;\n        }\n        this.eDisplayField.style.backgroundColor = color;\n        return _super.prototype.setValue.call(this, color);\n    };\n    AgColorPicker.prototype.getValue = function () {\n        return this.value;\n    };\n    return AgColorPicker;\n}(AgPickerField));\n\nvar __read$9 = (undefined && undefined.__read) || function (o, n) {\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n    if (!m) return o;\n    var i = m.call(o), r, ar = [], e;\n    try {\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n    }\n    catch (error) { e = { error: error }; }\n    finally {\n        try {\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\n        }\n        finally { if (e) throw e.error; }\n    }\n    return ar;\n};\nvar VERSION_CHECKING_FIRST_GRID_MAJOR_VERSION = 28;\nvar VERSION_CHECKING_FIRST_CHARTS_MAJOR_VERSION = 6;\nfunction isValidVersion(version) {\n    return version && version.match(/\\d+\\.\\d+\\.\\d+/);\n}\nfunction isValidMajorVersion(_a) {\n    var gridMajorVersion = _a.gridMajorVersion, chartsMajorVersion = _a.chartsMajorVersion;\n    var gridMajor = parseInt(gridMajorVersion, 10);\n    var chartsMajor = parseInt(chartsMajorVersion, 10);\n    var gridMajorDifference = gridMajor - VERSION_CHECKING_FIRST_GRID_MAJOR_VERSION;\n    var chartsMajorDifference = chartsMajor - VERSION_CHECKING_FIRST_CHARTS_MAJOR_VERSION;\n    var isFirstOrAfterVersion = gridMajorDifference >= 0;\n    return gridMajorDifference === chartsMajorDifference && isFirstOrAfterVersion;\n}\nfunction gridChartVersion(gridVersion) {\n    if (!gridVersion || !isValidVersion(gridVersion)) {\n        return undefined;\n    }\n    var _a = __read$9(gridVersion.split('.') || [], 2), gridMajor = _a[0], gridMinor = _a[1];\n    var gridMajorMinor = gridMajor + \".\" + gridMinor + \".x\";\n    var gridMajorNumber = parseInt(gridMajor, 10);\n    var chartsMajor = (gridMajorNumber - VERSION_CHECKING_FIRST_GRID_MAJOR_VERSION) + VERSION_CHECKING_FIRST_CHARTS_MAJOR_VERSION;\n    if (chartsMajor < 0) {\n        return undefined;\n    }\n    var chartsMinor = gridMinor;\n    var chartsMajorMinor = chartsMajor + \".\" + chartsMinor + \".x\";\n    return {\n        gridMajorMinor: gridMajorMinor,\n        chartsMajorMinor: chartsMajorMinor\n    };\n}\nfunction validGridChartsVersionErrorMessage(_a) {\n    var type = _a.type, gridVersion = _a.gridVersion, chartsVersion = _a.chartsVersion;\n    var invalidMessage = 'AG Grid: AG Grid version is incompatible. Please see https://www.ag-grid.com/javascript-data-grid/modules/ for more information.';\n    if (!gridVersion) {\n        return invalidMessage;\n    }\n    var version = gridChartVersion(gridVersion);\n    if (!version) {\n        return invalidMessage;\n    }\n    var gridMajorMinor = version.gridMajorMinor, chartsMajorMinor = version.chartsMajorMinor;\n    if (type === 'incompatible') {\n        return \"AG Grid version \" + gridVersion + \" and AG Charts version \" + chartsVersion + \" is not supported. AG Grid version \" + gridMajorMinor + \" should be used with AG Chart \" + chartsMajorMinor + \". Please see https://www.ag-grid.com/javascript-data-grid/modules/ for more information.\";\n    }\n    else if (type === 'invalidCharts') {\n        return \"AG Grid version \" + gridMajorMinor + \" should be used with AG Chart \" + chartsMajorMinor + \". Please see https://www.ag-grid.com/javascript-data-grid/modules/ for more information.\";\n    }\n    return invalidMessage;\n}\nfunction validGridChartsVersion(_a) {\n    var gridVersion = _a.gridVersion, chartsVersion = _a.chartsVersion;\n    if (!isValidVersion(chartsVersion)) {\n        return {\n            isValid: false,\n            message: validGridChartsVersionErrorMessage({ type: 'invalidCharts', gridVersion: gridVersion, chartsVersion: chartsVersion })\n        };\n    }\n    if (!isValidVersion(gridVersion)) {\n        return {\n            isValid: false,\n            message: validGridChartsVersionErrorMessage({ type: 'invalidGrid', gridVersion: gridVersion, chartsVersion: chartsVersion })\n        };\n    }\n    var _b = __read$9(gridVersion.split('.') || [], 2), gridMajor = _b[0], gridMinor = _b[1];\n    var _c = __read$9(chartsVersion.split('.') || [], 2), chartsMajor = _c[0], chartsMinor = _c[1];\n    var isValidMajor = isValidMajorVersion({\n        gridMajorVersion: gridMajor,\n        chartsMajorVersion: chartsMajor\n    });\n    if (isValidMajor && gridMinor === chartsMinor) {\n        return {\n            isValid: true\n        };\n    }\n    else if (!isValidMajor || gridMinor !== chartsMinor) {\n        return {\n            isValid: false,\n            message: validGridChartsVersionErrorMessage({ type: 'incompatible', gridVersion: gridVersion, chartsVersion: chartsVersion })\n        };\n    }\n    return {\n        isValid: false,\n        message: validGridChartsVersionErrorMessage({ type: 'invalid', gridVersion: gridVersion, chartsVersion: chartsVersion })\n    };\n}\n\nvar GridChartsModule = {\n    version: VERSION$a,\n    validate: function () {\n        return validGridChartsVersion({\n            gridVersion: VERSION$a,\n            chartsVersion: ChartService.CHARTS_VERSION\n        });\n    },\n    moduleName: ModuleNames.GridChartsModule,\n    beans: [\n        ChartService, ChartTranslationService, ChartCrossFilterService\n    ],\n    agStackComponents: [\n        { componentName: 'AgColorPicker', componentClass: AgColorPicker },\n        { componentName: 'AgAngleSelect', componentClass: AgAngleSelect },\n    ],\n    dependantModules: [\n        RangeSelectionModule,\n        EnterpriseCoreModule\n    ]\n};\n\n/**\n * Internal Use Only: Used to ensure this file is treated as a module until we can use moduleDetection flag in Ts v4.7\n */\nvar __FORCE_MODULE_DETECTION_AG_GRID_CORE_EXT = 0;\n\nvar agCharts = {\n    time: time,\n    AgChart: AgChart\n};\n\nvar __extends$G = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __assign$6 = (undefined && undefined.__assign) || function () {\n    __assign$6 = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign$6.apply(this, arguments);\n};\nvar __decorate$E = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar DetailCellRendererCtrl = /** @class */ (function (_super) {\n    __extends$G(DetailCellRendererCtrl, _super);\n    function DetailCellRendererCtrl() {\n        var _this = _super !== null && _super.apply(this, arguments) || this;\n        _this.loadRowDataVersion = 0;\n        _this.needRefresh = false;\n        return _this;\n    }\n    DetailCellRendererCtrl.prototype.init = function (comp, params) {\n        var _this = this;\n        this.params = params;\n        this.comp = comp;\n        var doNothingBecauseInsidePinnedSection = params.pinned != null;\n        if (doNothingBecauseInsidePinnedSection) {\n            return;\n        }\n        this.setAutoHeightClasses();\n        this.setupRefreshStrategy();\n        this.addThemeToDetailGrid();\n        this.createDetailGrid();\n        this.loadRowData();\n        this.addManagedListener(params.node.parent, RowNode.EVENT_DATA_CHANGED, function () {\n            _this.needRefresh = true;\n        });\n        this.addManagedListener(this.eventService, Events.EVENT_FULL_WIDTH_ROW_FOCUSED, this.onFullWidthRowFocused.bind(this));\n    };\n    DetailCellRendererCtrl.prototype.onFullWidthRowFocused = function (e) {\n        var params = this.params;\n        var row = { rowIndex: params.node.rowIndex, rowPinned: params.node.rowPinned };\n        var eventRow = { rowIndex: e.rowIndex, rowPinned: e.rowPinned };\n        var isSameRow = this.rowPositionUtils.sameRow(row, eventRow);\n        if (!isSameRow) {\n            return;\n        }\n        this.focusService.focusInto(this.comp.getGui(), e.fromBelow);\n    };\n    DetailCellRendererCtrl.prototype.setAutoHeightClasses = function () {\n        var autoHeight = this.gridOptionsService.is('detailRowAutoHeight');\n        var parentClass = autoHeight ? 'ag-details-row-auto-height' : 'ag-details-row-fixed-height';\n        var detailClass = autoHeight ? 'ag-details-grid-auto-height' : 'ag-details-grid-fixed-height';\n        this.comp.addOrRemoveCssClass(parentClass, true);\n        this.comp.addOrRemoveDetailGridCssClass(detailClass, true);\n    };\n    DetailCellRendererCtrl.prototype.setupRefreshStrategy = function () {\n        var providedStrategy = this.params.refreshStrategy;\n        var validSelection = providedStrategy == 'everything' || providedStrategy == 'nothing' || providedStrategy == 'rows';\n        if (validSelection) {\n            this.refreshStrategy = providedStrategy;\n            return;\n        }\n        if (providedStrategy != null) {\n            console.warn(\"AG Grid: invalid cellRendererParams.refreshStrategy = '\" + providedStrategy +\n                \"' supplied, defaulting to refreshStrategy = 'rows'.\");\n        }\n        this.refreshStrategy = 'rows';\n    };\n    DetailCellRendererCtrl.prototype.addThemeToDetailGrid = function () {\n        // this is needed by environment service of the child grid, the class needs to be on\n        // the grid div itself - the browser's CSS on the other hand just inherits from the parent grid theme.\n        var theme = this.environment.getTheme().theme;\n        if (theme) {\n            this.comp.addOrRemoveDetailGridCssClass(theme, true);\n        }\n    };\n    DetailCellRendererCtrl.prototype.createDetailGrid = function () {\n        if (_.missing(this.params.detailGridOptions)) {\n            console.warn('AG Grid: could not find detail grid options for master detail, ' +\n                'please set gridOptions.detailCellRendererParams.detailGridOptions');\n            return;\n        }\n        var autoHeight = this.gridOptionsService.is('detailRowAutoHeight');\n        // we clone the detail grid options, as otherwise it would be shared\n        // across many instances, and that would be a problem because we set\n        // api and columnApi into gridOptions\n        var gridOptions = __assign$6({}, this.params.detailGridOptions);\n        if (autoHeight) {\n            gridOptions.domLayout = 'autoHeight';\n        }\n        this.comp.setDetailGrid(gridOptions);\n    };\n    DetailCellRendererCtrl.prototype.registerDetailWithMaster = function (api, columnApi) {\n        var rowId = this.params.node.id;\n        var masterGridApi = this.params.api;\n        var gridInfo = {\n            id: rowId,\n            api: api,\n            columnApi: columnApi\n        };\n        var rowNode = this.params.node;\n        // register with api\n        masterGridApi.addDetailGridInfo(rowId, gridInfo);\n        // register with node\n        rowNode.detailGridInfo = gridInfo;\n        this.addDestroyFunc(function () {\n            // the gridInfo can be stale if a refresh happens and\n            // a new row is created before the old one is destroyed.\n            if (rowNode.detailGridInfo !== gridInfo) {\n                return;\n            }\n            masterGridApi.removeDetailGridInfo(rowId); // unregister from api\n            rowNode.detailGridInfo = null; // unregister from node\n        });\n    };\n    DetailCellRendererCtrl.prototype.loadRowData = function () {\n        var _this = this;\n        // in case a refresh happens before the last refresh completes (as we depend on async\n        // application logic) we keep track on what the latest call was.\n        this.loadRowDataVersion++;\n        var versionThisCall = this.loadRowDataVersion;\n        var userFunc = this.params.getDetailRowData;\n        if (!userFunc) {\n            console.warn('AG Grid: could not find getDetailRowData for master / detail, ' +\n                'please set gridOptions.detailCellRendererParams.getDetailRowData');\n            return;\n        }\n        var successCallback = function (rowData) {\n            var mostRecentCall = _this.loadRowDataVersion === versionThisCall;\n            if (mostRecentCall) {\n                _this.comp.setRowData(rowData);\n            }\n        };\n        var funcParams = {\n            node: this.params.node,\n            // we take data from node, rather than params.data\n            // as the data could have been updated with new instance\n            data: this.params.node.data,\n            successCallback: successCallback,\n            context: this.gridOptionsService.context\n        };\n        userFunc(funcParams);\n    };\n    DetailCellRendererCtrl.prototype.refresh = function () {\n        var GET_GRID_TO_REFRESH = false;\n        var GET_GRID_TO_DO_NOTHING = true;\n        // if we return true, it means we pretend to the grid\n        // that we have refreshed, so refresh will never happen.\n        var doNotRefresh = !this.needRefresh || this.refreshStrategy === 'nothing';\n        if (doNotRefresh) {\n            // we do nothing in this refresh method, and also tell the grid to do nothing\n            return GET_GRID_TO_DO_NOTHING;\n        }\n        // reset flag, so don't refresh again until more data changes.\n        this.needRefresh = false;\n        if (this.refreshStrategy === 'everything') {\n            // we want full refresh, so tell the grid to destroy and recreate this cell\n            return GET_GRID_TO_REFRESH;\n        }\n        else {\n            // do the refresh here, and tell the grid to do nothing\n            this.loadRowData();\n            return GET_GRID_TO_DO_NOTHING;\n        }\n    };\n    __decorate$E([\n        Autowired('rowPositionUtils')\n    ], DetailCellRendererCtrl.prototype, \"rowPositionUtils\", void 0);\n    __decorate$E([\n        Autowired('focusService')\n    ], DetailCellRendererCtrl.prototype, \"focusService\", void 0);\n    return DetailCellRendererCtrl;\n}(BeanStub));\n\nvar __extends$F = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$D = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar DetailCellRenderer = /** @class */ (function (_super) {\n    __extends$F(DetailCellRenderer, _super);\n    function DetailCellRenderer() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    DetailCellRenderer.prototype.init = function (params) {\n        var _this = this;\n        this.params = params;\n        this.selectAndSetTemplate();\n        var compProxy = {\n            addOrRemoveCssClass: function (cssClassName, on) { return _this.addOrRemoveCssClass(cssClassName, on); },\n            addOrRemoveDetailGridCssClass: function (cssClassName, on) { return _this.eDetailGrid.classList.toggle(cssClassName, on); },\n            setDetailGrid: function (gridOptions) { return _this.setDetailGrid(gridOptions); },\n            setRowData: function (rowData) { return _this.setRowData(rowData); },\n            getGui: function () { return _this.eDetailGrid; }\n        };\n        this.ctrl = this.createManagedBean(new DetailCellRendererCtrl());\n        this.ctrl.init(compProxy, params);\n    };\n    DetailCellRenderer.prototype.refresh = function () {\n        return this.ctrl && this.ctrl.refresh();\n    };\n    // this is a user component, and IComponent has \"public destroy()\" as part of the interface.\n    // so we need to override destroy() just to make the method public.\n    DetailCellRenderer.prototype.destroy = function () {\n        _super.prototype.destroy.call(this);\n    };\n    DetailCellRenderer.prototype.selectAndSetTemplate = function () {\n        var _this = this;\n        if (this.params.pinned) {\n            this.setTemplate('<div class=\"ag-details-row\"></div>');\n            return;\n        }\n        var setDefaultTemplate = function () {\n            _this.setTemplate(DetailCellRenderer.TEMPLATE);\n        };\n        if (_.missing(this.params.template)) {\n            // use default template\n            setDefaultTemplate();\n        }\n        else {\n            // use user provided template\n            if (typeof this.params.template === 'string') {\n                this.setTemplate(this.params.template);\n            }\n            else if (typeof this.params.template === 'function') {\n                var templateFunc = this.params.template;\n                var template = templateFunc(this.params);\n                this.setTemplate(template);\n            }\n            else {\n                console.warn('AG Grid: detailCellRendererParams.template should be function or string');\n                setDefaultTemplate();\n            }\n        }\n        if (this.eDetailGrid == null) {\n            console.warn('AG Grid: reference to eDetailGrid was missing from the details template. ' +\n                'Please add ref=\"eDetailGrid\" to the template.');\n        }\n    };\n    DetailCellRenderer.prototype.setDetailGrid = function (gridOptions) {\n        if (!this.eDetailGrid) {\n            return;\n        }\n        // AG-1715\n        // this is only needed when reactUi=false, once we remove the old way\n        // of doing react, and Master / Details is all native React, then we\n        // can remove this code.\n        var agGridReact = this.context.getBean('agGridReact');\n        var agGridReactCloned = agGridReact ? _.cloneObject(agGridReact) : undefined;\n        // when we create detail grid, the detail grid needs frameworkComponentWrapper so that\n        // it created child components correctly, ie  Angular detail grid can have Angular cell renderer.\n        // this is only used by Angular and Vue, as React uses native React AG Grid detail grids\n        var frameworkComponentWrapper = this.context.getBean('frameworkComponentWrapper');\n        var frameworkOverrides = this.getFrameworkOverrides();\n        // tslint:disable-next-line\n        new Grid(this.eDetailGrid, gridOptions, {\n            frameworkOverrides: frameworkOverrides,\n            providedBeanInstances: {\n                agGridReact: agGridReactCloned,\n                frameworkComponentWrapper: frameworkComponentWrapper\n            }\n        });\n        this.detailApi = gridOptions.api;\n        this.ctrl.registerDetailWithMaster(gridOptions.api, gridOptions.columnApi);\n        this.addDestroyFunc(function () {\n            if (gridOptions.api) {\n                gridOptions.api.destroy();\n            }\n        });\n    };\n    DetailCellRenderer.prototype.setRowData = function (rowData) {\n        // ensure detail grid api still exists (grid may be destroyed when async call tries to set data)\n        this.detailApi && this.detailApi.setRowData(rowData);\n    };\n    DetailCellRenderer.TEMPLATE = \"<div class=\\\"ag-details-row\\\" role=\\\"gridcell\\\">\\n            <div ref=\\\"eDetailGrid\\\" class=\\\"ag-details-grid\\\" role=\\\"presentation\\\"></div>\\n        </div>\";\n    __decorate$D([\n        RefSelector('eDetailGrid')\n    ], DetailCellRenderer.prototype, \"eDetailGrid\", void 0);\n    return DetailCellRenderer;\n}(Component));\n\n// DO NOT UPDATE MANUALLY: Generated from script during build time\nvar VERSION$8 = '29.3.5';\n\nvar MasterDetailModule = {\n    version: VERSION$8,\n    moduleName: ModuleNames.MasterDetailModule,\n    beans: [],\n    userComponents: [\n        { componentName: 'agDetailCellRenderer', componentClass: DetailCellRenderer }\n    ],\n    controllers: [\n        { controllerName: 'detailCellRenderer', controllerClass: DetailCellRendererCtrl }\n    ],\n    dependantModules: [\n        EnterpriseCoreModule\n    ]\n};\n\nvar __extends$E = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$C = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar EnterpriseMenuFactory = /** @class */ (function (_super) {\n    __extends$E(EnterpriseMenuFactory, _super);\n    function EnterpriseMenuFactory() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    EnterpriseMenuFactory.prototype.hideActiveMenu = function () {\n        this.destroyBean(this.activeMenu);\n    };\n    EnterpriseMenuFactory.prototype.showMenuAfterMouseEvent = function (column, mouseEvent, defaultTab) {\n        var _this = this;\n        this.showMenu(column, function (menu) {\n            var ePopup = menu.getGui();\n            _this.popupService.positionPopupUnderMouseEvent({\n                type: 'columnMenu',\n                column: column,\n                mouseEvent: mouseEvent,\n                ePopup: ePopup\n            });\n            if (defaultTab) {\n                menu.showTab(defaultTab);\n            }\n        }, 'columnMenu', defaultTab, undefined, mouseEvent.target);\n    };\n    EnterpriseMenuFactory.prototype.showMenuAfterButtonClick = function (column, eventSource, containerType, defaultTab, restrictToTabs) {\n        var _this = this;\n        var multiplier = -1;\n        var alignSide = 'left';\n        if (this.gridOptionsService.is('enableRtl')) {\n            multiplier = 1;\n            alignSide = 'right';\n        }\n        this.showMenu(column, function (menu) {\n            var ePopup = menu.getGui();\n            _this.popupService.positionPopupByComponent({\n                type: containerType,\n                column: column,\n                eventSource: eventSource,\n                ePopup: ePopup,\n                alignSide: alignSide,\n                nudgeX: 9 * multiplier,\n                nudgeY: -23,\n                position: 'under',\n                keepWithinBounds: true,\n            });\n            if (defaultTab) {\n                menu.showTab(defaultTab);\n            }\n        }, containerType, defaultTab, restrictToTabs, eventSource);\n    };\n    EnterpriseMenuFactory.prototype.showMenu = function (column, positionCallback, containerType, defaultTab, restrictToTabs, eventSource) {\n        var _this = this;\n        var _a = this.getMenuParams(column, restrictToTabs, eventSource), menu = _a.menu, eMenuGui = _a.eMenuGui, currentHeaderPosition = _a.currentHeaderPosition, currentColumnIndex = _a.currentColumnIndex, anchorToElement = _a.anchorToElement;\n        var closedFuncs = [];\n        closedFuncs.push(this.getClosedCallback(column, menu, currentHeaderPosition, currentColumnIndex, eventSource));\n        var translate = this.localeService.getLocaleTextFunc();\n        // need to show filter before positioning, as only after filter\n        // is visible can we find out what the width of it is\n        var addPopupRes = this.popupService.addPopup({\n            modal: true,\n            eChild: eMenuGui,\n            closeOnEsc: true,\n            closedCallback: function (e) {\n                closedFuncs.forEach(function (f) { return f(e); });\n            },\n            afterGuiAttached: function (params) { return menu.afterGuiAttached(Object.assign({}, { container: containerType }, params)); },\n            // if defaultTab is not present, positionCallback will be called\n            // after `showTabBasedOnPreviousSelection` is called.\n            positionCallback: !!defaultTab ? function () { return positionCallback(menu); } : undefined,\n            anchorToElement: anchorToElement,\n            ariaLabel: translate('ariaLabelColumnMenu', 'Column Menu')\n        });\n        // if user starts showing / hiding columns, or otherwise move the underlying column\n        // for this menu, we want to stop tracking the menu with the column position. otherwise\n        // the menu would move as the user is using the columns tab inside the menu.\n        this.addStopAnchoring(addPopupRes === null || addPopupRes === void 0 ? void 0 : addPopupRes.stopAnchoringPromise, column, closedFuncs);\n        if (!defaultTab) {\n            menu.showTabBasedOnPreviousSelection();\n            // reposition the menu because the method above could load\n            // an element that is bigger than enterpriseMenu header.\n            positionCallback(menu);\n        }\n        menu.addEventListener(EnterpriseMenu.EVENT_TAB_SELECTED, function (event) {\n            _this.lastSelectedTab = event.key;\n        });\n        column.setMenuVisible(true, 'contextMenu');\n        this.activeMenu = menu;\n        menu.addEventListener(BeanStub.EVENT_DESTROYED, function () {\n            if (_this.activeMenu === menu) {\n                _this.activeMenu = null;\n            }\n        });\n    };\n    EnterpriseMenuFactory.prototype.getClosedCallback = function (column, menu, headerPosition, columnIndex, eventSource) {\n        var _this = this;\n        return function (e) {\n            _this.destroyBean(menu);\n            column.setMenuVisible(false, 'contextMenu');\n            var isKeyboardEvent = e instanceof KeyboardEvent;\n            if (!isKeyboardEvent || !eventSource) {\n                return;\n            }\n            if (_.isVisible(eventSource)) {\n                var focusableEl = _this.focusService.findTabbableParent(eventSource);\n                if (focusableEl) {\n                    if (column) {\n                        _this.headerNavigationService.scrollToColumn(column);\n                    }\n                    focusableEl.focus();\n                }\n            }\n            // if the focusEl is no longer in the DOM, we try to focus\n            // the header that is closest to the previous header position\n            else if (headerPosition && columnIndex !== -1) {\n                var allColumns = _this.columnModel.getAllDisplayedColumns();\n                var columnToFocus = allColumns[columnIndex] || _.last(allColumns);\n                if (columnToFocus) {\n                    _this.focusService.focusHeaderPosition({\n                        headerPosition: {\n                            headerRowIndex: headerPosition.headerRowIndex,\n                            column: columnToFocus\n                        }\n                    });\n                }\n            }\n        };\n    };\n    EnterpriseMenuFactory.prototype.addStopAnchoring = function (stopAnchoringPromise, column, closedFuncsArr) {\n        if (!stopAnchoringPromise) {\n            return;\n        }\n        stopAnchoringPromise.then(function (stopAnchoringFunc) {\n            column.addEventListener('leftChanged', stopAnchoringFunc);\n            column.addEventListener('visibleChanged', stopAnchoringFunc);\n            closedFuncsArr.push(function () {\n                column.removeEventListener('leftChanged', stopAnchoringFunc);\n                column.removeEventListener('visibleChanged', stopAnchoringFunc);\n            });\n        });\n    };\n    EnterpriseMenuFactory.prototype.getMenuParams = function (column, restrictToTabs, eventSource) {\n        var menu = this.createBean(new EnterpriseMenu(column, this.lastSelectedTab, restrictToTabs));\n        return {\n            menu: menu,\n            eMenuGui: menu.getGui(),\n            currentHeaderPosition: this.focusService.getFocusedHeader(),\n            currentColumnIndex: this.columnModel.getAllDisplayedColumns().indexOf(column),\n            anchorToElement: eventSource || this.ctrlsService.getGridBodyCtrl().getGui()\n        };\n    };\n    EnterpriseMenuFactory.prototype.isMenuEnabled = function (column) {\n        return column.getMenuTabs(EnterpriseMenu.TABS_DEFAULT).length > 0;\n    };\n    __decorate$C([\n        Autowired('popupService')\n    ], EnterpriseMenuFactory.prototype, \"popupService\", void 0);\n    __decorate$C([\n        Autowired('focusService')\n    ], EnterpriseMenuFactory.prototype, \"focusService\", void 0);\n    __decorate$C([\n        Autowired('headerNavigationService')\n    ], EnterpriseMenuFactory.prototype, \"headerNavigationService\", void 0);\n    __decorate$C([\n        Autowired('ctrlsService')\n    ], EnterpriseMenuFactory.prototype, \"ctrlsService\", void 0);\n    __decorate$C([\n        Autowired('columnModel')\n    ], EnterpriseMenuFactory.prototype, \"columnModel\", void 0);\n    EnterpriseMenuFactory = __decorate$C([\n        Bean('menuFactory')\n    ], EnterpriseMenuFactory);\n    return EnterpriseMenuFactory;\n}(BeanStub));\nvar EnterpriseMenu = /** @class */ (function (_super) {\n    __extends$E(EnterpriseMenu, _super);\n    function EnterpriseMenu(column, initialSelection, restrictTo) {\n        var _this = _super.call(this) || this;\n        _this.tabFactories = {};\n        _this.includeChecks = {};\n        _this.column = column;\n        _this.initialSelection = initialSelection;\n        _this.tabFactories[EnterpriseMenu.TAB_GENERAL] = _this.createMainPanel.bind(_this);\n        _this.tabFactories[EnterpriseMenu.TAB_FILTER] = _this.createFilterPanel.bind(_this);\n        _this.tabFactories[EnterpriseMenu.TAB_COLUMNS] = _this.createColumnsPanel.bind(_this);\n        _this.includeChecks[EnterpriseMenu.TAB_GENERAL] = function () { return true; };\n        _this.includeChecks[EnterpriseMenu.TAB_FILTER] = function () { return _this.filterManager.isFilterAllowed(column); };\n        _this.includeChecks[EnterpriseMenu.TAB_COLUMNS] = function () { return true; };\n        _this.restrictTo = restrictTo;\n        return _this;\n    }\n    EnterpriseMenu.prototype.init = function () {\n        var _this = this;\n        var tabs = this.getTabsToCreate().map(function (name) { return _this.createTab(name); });\n        this.tabbedLayout = new TabbedLayout({\n            items: tabs,\n            cssClass: 'ag-menu',\n            onActiveItemClicked: this.onHidePopup.bind(this),\n            onItemClicked: this.onTabItemClicked.bind(this)\n        });\n        this.createBean(this.tabbedLayout);\n        if (this.mainMenuList) {\n            this.mainMenuList.setParentComponent(this.tabbedLayout);\n        }\n        this.addDestroyFunc(function () { return _this.destroyBean(_this.tabbedLayout); });\n    };\n    EnterpriseMenu.prototype.getTabsToCreate = function () {\n        var _this = this;\n        if (this.restrictTo) {\n            return this.restrictTo;\n        }\n        return this.column.getMenuTabs(EnterpriseMenu.TABS_DEFAULT)\n            .filter(function (tabName) { return _this.isValidMenuTabItem(tabName); })\n            .filter(function (tabName) { return _this.isNotSuppressed(tabName); })\n            .filter(function (tabName) { return _this.isModuleLoaded(tabName); });\n    };\n    EnterpriseMenu.prototype.isModuleLoaded = function (menuTabName) {\n        if (menuTabName === EnterpriseMenu.TAB_COLUMNS) {\n            return ModuleRegistry.isRegistered(ModuleNames.ColumnsToolPanelModule);\n        }\n        return true;\n    };\n    EnterpriseMenu.prototype.isValidMenuTabItem = function (menuTabName) {\n        var isValid = true;\n        var itemsToConsider = EnterpriseMenu.TABS_DEFAULT;\n        if (this.restrictTo != null) {\n            isValid = this.restrictTo.indexOf(menuTabName) > -1;\n            itemsToConsider = this.restrictTo;\n        }\n        isValid = isValid && EnterpriseMenu.TABS_DEFAULT.indexOf(menuTabName) > -1;\n        if (!isValid) {\n            console.warn(\"AG Grid: Trying to render an invalid menu item '\" + menuTabName + \"'. Check that your 'menuTabs' contains one of [\" + itemsToConsider + \"]\");\n        }\n        return isValid;\n    };\n    EnterpriseMenu.prototype.isNotSuppressed = function (menuTabName) {\n        return this.includeChecks[menuTabName]();\n    };\n    EnterpriseMenu.prototype.createTab = function (name) {\n        return this.tabFactories[name]();\n    };\n    EnterpriseMenu.prototype.showTabBasedOnPreviousSelection = function () {\n        // show the tab the user was on last time they had a menu open\n        this.showTab(this.initialSelection);\n    };\n    EnterpriseMenu.prototype.showTab = function (toShow) {\n        if (this.tabItemColumns && toShow === EnterpriseMenu.TAB_COLUMNS) {\n            this.tabbedLayout.showItem(this.tabItemColumns);\n        }\n        else if (this.tabItemFilter && toShow === EnterpriseMenu.TAB_FILTER) {\n            this.tabbedLayout.showItem(this.tabItemFilter);\n        }\n        else if (this.tabItemGeneral && toShow === EnterpriseMenu.TAB_GENERAL) {\n            this.tabbedLayout.showItem(this.tabItemGeneral);\n        }\n        else {\n            this.tabbedLayout.showFirstItem();\n        }\n    };\n    EnterpriseMenu.prototype.onTabItemClicked = function (event) {\n        var key = null;\n        switch (event.item) {\n            case this.tabItemColumns:\n                key = EnterpriseMenu.TAB_COLUMNS;\n                break;\n            case this.tabItemFilter:\n                key = EnterpriseMenu.TAB_FILTER;\n                break;\n            case this.tabItemGeneral:\n                key = EnterpriseMenu.TAB_GENERAL;\n                break;\n        }\n        if (key) {\n            this.activateTab(key);\n        }\n    };\n    EnterpriseMenu.prototype.activateTab = function (tab) {\n        var ev = {\n            type: EnterpriseMenu.EVENT_TAB_SELECTED,\n            key: tab\n        };\n        this.dispatchEvent(ev);\n    };\n    EnterpriseMenu.prototype.getMenuItems = function () {\n        var defaultMenuOptions = this.getDefaultMenuOptions();\n        var result;\n        var userFunc = this.gridOptionsService.getCallback('getMainMenuItems');\n        if (userFunc) {\n            result = userFunc({\n                column: this.column,\n                defaultItems: defaultMenuOptions\n            });\n        }\n        else {\n            result = defaultMenuOptions;\n        }\n        // GUI looks weird when two separators are side by side. this can happen accidentally\n        // if we remove items from the menu then two separators can edit up adjacent.\n        _.removeRepeatsFromArray(result, EnterpriseMenu.MENU_ITEM_SEPARATOR);\n        return result;\n    };\n    EnterpriseMenu.prototype.getDefaultMenuOptions = function () {\n        var result = [];\n        var allowPinning = !this.column.getColDef().lockPinned;\n        var rowGroupCount = this.columnModel.getRowGroupColumns().length;\n        var doingGrouping = rowGroupCount > 0;\n        var groupedByThisColumn = this.columnModel.getRowGroupColumns().indexOf(this.column) >= 0;\n        var allowValue = this.column.isAllowValue();\n        var allowRowGroup = this.column.isAllowRowGroup();\n        var isPrimary = this.column.isPrimary();\n        var pivotModeOn = this.columnModel.isPivotMode();\n        var isInMemoryRowModel = this.rowModel.getType() === 'clientSide';\n        var usingTreeData = this.gridOptionsService.isTreeData();\n        var allowValueAgg = \n        // if primary, then only allow aggValue if grouping and it's a value columns\n        (isPrimary && doingGrouping && allowValue)\n            // secondary columns can always have aggValue, as it means it's a pivot value column\n            || !isPrimary;\n        if (allowPinning) {\n            result.push('pinSubMenu');\n        }\n        if (allowValueAgg) {\n            result.push('valueAggSubMenu');\n        }\n        if (allowPinning || allowValueAgg) {\n            result.push(EnterpriseMenu.MENU_ITEM_SEPARATOR);\n        }\n        result.push('autoSizeThis');\n        result.push('autoSizeAll');\n        result.push(EnterpriseMenu.MENU_ITEM_SEPARATOR);\n        if (allowRowGroup && this.column.isPrimary()) {\n            if (groupedByThisColumn) {\n                result.push('rowUnGroup');\n            }\n            else {\n                result.push('rowGroup');\n            }\n        }\n        result.push(EnterpriseMenu.MENU_ITEM_SEPARATOR);\n        result.push('resetColumns');\n        // only add grouping expand/collapse if grouping in the InMemoryRowModel\n        // if pivoting, we only have expandable groups if grouping by 2 or more columns\n        // as the lowest level group is not expandable while pivoting.\n        // if not pivoting, then any active row group can be expanded.\n        var allowExpandAndContract = isInMemoryRowModel && (usingTreeData || rowGroupCount > (pivotModeOn ? 1 : 0));\n        if (allowExpandAndContract) {\n            result.push('expandAll');\n            result.push('contractAll');\n        }\n        return result;\n    };\n    EnterpriseMenu.prototype.createMainPanel = function () {\n        this.mainMenuList = this.createManagedBean(new AgMenuList());\n        var menuItems = this.getMenuItems();\n        var menuItemsMapped = this.menuItemMapper.mapWithStockItems(menuItems, this.column);\n        this.mainMenuList.addMenuItems(menuItemsMapped);\n        this.mainMenuList.addEventListener(AgMenuItemComponent.EVENT_MENU_ITEM_SELECTED, this.onHidePopup.bind(this));\n        this.tabItemGeneral = {\n            title: _.createIconNoSpan('menu', this.gridOptionsService, this.column),\n            titleLabel: EnterpriseMenu.TAB_GENERAL.replace('MenuTab', ''),\n            bodyPromise: AgPromise.resolve(this.mainMenuList.getGui()),\n            name: EnterpriseMenu.TAB_GENERAL\n        };\n        return this.tabItemGeneral;\n    };\n    EnterpriseMenu.prototype.onHidePopup = function (event) {\n        var keyboardEvent;\n        if (event && event.event && event.event instanceof KeyboardEvent) {\n            keyboardEvent = event.event;\n        }\n        this.hidePopupFunc(keyboardEvent && { keyboardEvent: keyboardEvent });\n        // this method only gets called when the menu was closed by selection an option\n        // in this case we highlight the cell that was previously highlighted\n        var focusedCell = this.focusService.getFocusedCell();\n        var eDocument = this.gridOptionsService.getDocument();\n        if (eDocument.activeElement === eDocument.body && focusedCell) {\n            var rowIndex = focusedCell.rowIndex, rowPinned = focusedCell.rowPinned, column = focusedCell.column;\n            this.focusService.setFocusedCell({ rowIndex: rowIndex, column: column, rowPinned: rowPinned, forceBrowserFocus: true, preventScrollOnBrowserFocus: true });\n        }\n    };\n    EnterpriseMenu.prototype.createFilterPanel = function () {\n        var filterWrapper = this.filterManager.getOrCreateFilterWrapper(this.column, 'COLUMN_MENU');\n        if (!filterWrapper) {\n            throw new Error('AG Grid - Unable to instantiate filter');\n        }\n        var afterFilterAttachedCallback = function (params) {\n            if (!(filterWrapper === null || filterWrapper === void 0 ? void 0 : filterWrapper.filterPromise)) {\n                return;\n            }\n            // slightly odd block this - this promise will always have been resolved by the time it gets here, so won't be\n            // async (_unless_ in react or similar, but if so why not encountered before now?).\n            // I'd suggest a future improvement would be to remove/replace this promise as this block just wont work if it is\n            // async and is confusing if you don't have this context\n            filterWrapper.filterPromise.then(function (filter) {\n                if (filter && filter.afterGuiAttached) {\n                    filter.afterGuiAttached(params);\n                }\n            });\n        };\n        // see comment above\n        var afterDetachedCallback = function () { var _a; return (_a = filterWrapper === null || filterWrapper === void 0 ? void 0 : filterWrapper.filterPromise) === null || _a === void 0 ? void 0 : _a.then(function (filter) { var _a; return (_a = filter === null || filter === void 0 ? void 0 : filter.afterGuiDetached) === null || _a === void 0 ? void 0 : _a.call(filter); }); };\n        this.tabItemFilter = {\n            title: _.createIconNoSpan('filter', this.gridOptionsService, this.column),\n            titleLabel: EnterpriseMenu.TAB_FILTER.replace('MenuTab', ''),\n            bodyPromise: filterWrapper === null || filterWrapper === void 0 ? void 0 : filterWrapper.guiPromise,\n            afterAttachedCallback: afterFilterAttachedCallback,\n            afterDetachedCallback: afterDetachedCallback,\n            name: EnterpriseMenu.TAB_FILTER\n        };\n        return this.tabItemFilter;\n    };\n    EnterpriseMenu.prototype.createColumnsPanel = function () {\n        var eWrapperDiv = document.createElement('div');\n        eWrapperDiv.classList.add('ag-menu-column-select-wrapper');\n        var columnSelectPanel = this.createManagedBean(new PrimaryColsPanel());\n        var columnsMenuParams = this.column.getColDef().columnsMenuParams;\n        if (!columnsMenuParams) {\n            columnsMenuParams = {};\n        }\n        var contractColumnSelection = columnsMenuParams.contractColumnSelection, suppressColumnExpandAll = columnsMenuParams.suppressColumnExpandAll, suppressColumnFilter = columnsMenuParams.suppressColumnFilter, suppressColumnSelectAll = columnsMenuParams.suppressColumnSelectAll, suppressSyncLayoutWithGrid = columnsMenuParams.suppressSyncLayoutWithGrid, columnLayout = columnsMenuParams.columnLayout;\n        columnSelectPanel.init(false, {\n            suppressColumnMove: false,\n            suppressValues: false,\n            suppressPivots: false,\n            suppressRowGroups: false,\n            suppressPivotMode: false,\n            contractColumnSelection: !!contractColumnSelection,\n            suppressColumnExpandAll: !!suppressColumnExpandAll,\n            suppressColumnFilter: !!suppressColumnFilter,\n            suppressColumnSelectAll: !!suppressColumnSelectAll,\n            suppressSyncLayoutWithGrid: !!columnLayout || !!suppressSyncLayoutWithGrid,\n            api: this.gridApi,\n            columnApi: this.columnApi,\n            context: this.gridOptionsService.context\n        }, 'columnMenu');\n        if (columnLayout) {\n            columnSelectPanel.setColumnLayout(columnLayout);\n        }\n        var columnSelectPanelGui = columnSelectPanel.getGui();\n        columnSelectPanelGui.classList.add('ag-menu-column-select');\n        eWrapperDiv.appendChild(columnSelectPanelGui);\n        this.tabItemColumns = {\n            title: _.createIconNoSpan('columns', this.gridOptionsService, this.column),\n            titleLabel: EnterpriseMenu.TAB_COLUMNS.replace('MenuTab', ''),\n            bodyPromise: AgPromise.resolve(eWrapperDiv),\n            name: EnterpriseMenu.TAB_COLUMNS\n        };\n        return this.tabItemColumns;\n    };\n    EnterpriseMenu.prototype.afterGuiAttached = function (params) {\n        var container = params.container, hidePopup = params.hidePopup;\n        this.tabbedLayout.setAfterAttachedParams({ container: container, hidePopup: hidePopup });\n        if (hidePopup) {\n            this.hidePopupFunc = hidePopup;\n            this.addDestroyFunc(hidePopup);\n        }\n    };\n    EnterpriseMenu.prototype.getGui = function () {\n        return this.tabbedLayout.getGui();\n    };\n    EnterpriseMenu.EVENT_TAB_SELECTED = 'tabSelected';\n    EnterpriseMenu.TAB_FILTER = 'filterMenuTab';\n    EnterpriseMenu.TAB_GENERAL = 'generalMenuTab';\n    EnterpriseMenu.TAB_COLUMNS = 'columnsMenuTab';\n    EnterpriseMenu.TABS_DEFAULT = [EnterpriseMenu.TAB_GENERAL, EnterpriseMenu.TAB_FILTER, EnterpriseMenu.TAB_COLUMNS];\n    EnterpriseMenu.MENU_ITEM_SEPARATOR = 'separator';\n    __decorate$C([\n        Autowired('columnModel')\n    ], EnterpriseMenu.prototype, \"columnModel\", void 0);\n    __decorate$C([\n        Autowired('filterManager')\n    ], EnterpriseMenu.prototype, \"filterManager\", void 0);\n    __decorate$C([\n        Autowired('gridApi')\n    ], EnterpriseMenu.prototype, \"gridApi\", void 0);\n    __decorate$C([\n        Autowired('columnApi')\n    ], EnterpriseMenu.prototype, \"columnApi\", void 0);\n    __decorate$C([\n        Autowired('menuItemMapper')\n    ], EnterpriseMenu.prototype, \"menuItemMapper\", void 0);\n    __decorate$C([\n        Autowired('rowModel')\n    ], EnterpriseMenu.prototype, \"rowModel\", void 0);\n    __decorate$C([\n        Autowired('focusService')\n    ], EnterpriseMenu.prototype, \"focusService\", void 0);\n    __decorate$C([\n        PostConstruct\n    ], EnterpriseMenu.prototype, \"init\", null);\n    return EnterpriseMenu;\n}(BeanStub));\n\nvar __extends$D = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __assign$5 = (undefined && undefined.__assign) || function () {\n    __assign$5 = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign$5.apply(this, arguments);\n};\nvar __decorate$B = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar CSS_MENU = 'ag-menu';\nvar CSS_CONTEXT_MENU_OPEN = 'ag-context-menu-open';\nvar ContextMenuFactory = /** @class */ (function (_super) {\n    __extends$D(ContextMenuFactory, _super);\n    function ContextMenuFactory() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    ContextMenuFactory.prototype.hideActiveMenu = function () {\n        this.destroyBean(this.activeMenu);\n    };\n    ContextMenuFactory.prototype.getMenuItems = function (node, column, value) {\n        var defaultMenuOptions = [];\n        if (_.exists(node) && ModuleRegistry.isRegistered(ModuleNames.ClipboardModule)) {\n            if (column) {\n                // only makes sense if column exists, could have originated from a row\n                if (!this.gridOptionsService.is('suppressCutToClipboard')) {\n                    defaultMenuOptions.push('cut');\n                }\n                defaultMenuOptions.push('copy', 'copyWithHeaders', 'copyWithGroupHeaders', 'paste', 'separator');\n            }\n        }\n        if (this.gridOptionsService.is('enableCharts') && ModuleRegistry.isRegistered(ModuleNames.GridChartsModule)) {\n            if (this.columnModel.isPivotMode()) {\n                defaultMenuOptions.push('pivotChart');\n            }\n            if (this.rangeService && !this.rangeService.isEmpty()) {\n                defaultMenuOptions.push('chartRange');\n            }\n        }\n        if (_.exists(node)) {\n            // if user clicks a cell\n            var csvModuleMissing = !ModuleRegistry.isRegistered(ModuleNames.CsvExportModule);\n            var excelModuleMissing = !ModuleRegistry.isRegistered(ModuleNames.ExcelExportModule);\n            var suppressExcel = this.gridOptionsService.is('suppressExcelExport') || excelModuleMissing;\n            var suppressCsv = this.gridOptionsService.is('suppressCsvExport') || csvModuleMissing;\n            var onIPad = _.isIOSUserAgent();\n            var anyExport = !onIPad && (!suppressExcel || !suppressCsv);\n            if (anyExport) {\n                defaultMenuOptions.push('export');\n            }\n        }\n        var userFunc = this.gridOptionsService.getCallback('getContextMenuItems');\n        if (userFunc) {\n            var params = {\n                node: node,\n                column: column,\n                value: value,\n                defaultItems: defaultMenuOptions.length ? defaultMenuOptions : undefined,\n            };\n            return userFunc(params);\n        }\n        return defaultMenuOptions;\n    };\n    ContextMenuFactory.prototype.onContextMenu = function (mouseEvent, touchEvent, rowNode, column, value, anchorToElement) {\n        // to allow us to debug in chrome, we ignore the event if ctrl is pressed.\n        // not everyone wants this, so first 'if' below allows to turn this hack off.\n        if (!this.gridOptionsService.is('allowContextMenuWithControlKey')) {\n            // then do the check\n            if (mouseEvent && (mouseEvent.ctrlKey || mouseEvent.metaKey)) {\n                return;\n            }\n        }\n        // need to do this regardless of context menu showing or not, so doing\n        // before the isSuppressContextMenu() check\n        if (mouseEvent) {\n            this.blockMiddleClickScrollsIfNeeded(mouseEvent);\n        }\n        if (this.gridOptionsService.is('suppressContextMenu')) {\n            return;\n        }\n        var eventOrTouch = mouseEvent ? mouseEvent : touchEvent.touches[0];\n        if (this.showMenu(rowNode, column, value, eventOrTouch, anchorToElement)) {\n            var event_1 = mouseEvent ? mouseEvent : touchEvent;\n            event_1.preventDefault();\n        }\n    };\n    ContextMenuFactory.prototype.blockMiddleClickScrollsIfNeeded = function (mouseEvent) {\n        // if we don't do this, then middle click will never result in a 'click' event, as 'mousedown'\n        // will be consumed by the browser to mean 'scroll' (as you can scroll with the middle mouse\n        // button in the browser). so this property allows the user to receive middle button clicks if\n        // they want.\n        var gridOptionsService = this.gridOptionsService;\n        var which = mouseEvent.which;\n        if (gridOptionsService.is('suppressMiddleClickScrolls') && which === 2) {\n            mouseEvent.preventDefault();\n        }\n    };\n    ContextMenuFactory.prototype.showMenu = function (node, column, value, mouseEvent, anchorToElement) {\n        var _this = this;\n        var menuItems = this.getMenuItems(node, column, value);\n        var eGridBodyGui = this.ctrlsService.getGridBodyCtrl().getGui();\n        if (menuItems === undefined || _.missingOrEmpty(menuItems)) {\n            return false;\n        }\n        var menu = new ContextMenu(menuItems);\n        this.createBean(menu);\n        var eMenuGui = menu.getGui();\n        var positionParams = {\n            column: column,\n            rowNode: node,\n            type: 'contextMenu',\n            mouseEvent: mouseEvent,\n            ePopup: eMenuGui,\n            // move one pixel away so that accidentally double clicking\n            // won't show the browser's contextmenu\n            nudgeY: 1\n        };\n        var translate = this.localeService.getLocaleTextFunc();\n        var addPopupRes = this.popupService.addPopup({\n            modal: true,\n            eChild: eMenuGui,\n            closeOnEsc: true,\n            closedCallback: function () {\n                eGridBodyGui.classList.remove(CSS_CONTEXT_MENU_OPEN);\n                _this.destroyBean(menu);\n            },\n            click: mouseEvent,\n            positionCallback: function () {\n                var isRtl = _this.gridOptionsService.is('enableRtl');\n                _this.popupService.positionPopupUnderMouseEvent(__assign$5(__assign$5({}, positionParams), { nudgeX: isRtl ? (eMenuGui.offsetWidth + 1) * -1 : 1 }));\n            },\n            // so when browser is scrolled down, or grid is scrolled, context menu stays with cell\n            anchorToElement: anchorToElement,\n            ariaLabel: translate('ariaLabelContextMenu', 'Context Menu')\n        });\n        if (addPopupRes) {\n            eGridBodyGui.classList.add(CSS_CONTEXT_MENU_OPEN);\n            menu.afterGuiAttached({ container: 'contextMenu', hidePopup: addPopupRes.hideFunc });\n        }\n        // there should never be an active menu at this point, however it was found\n        // that you could right click a second time just 1 or 2 pixels from the first\n        // click, and another menu would pop up. so somehow the logic for closing the\n        // first menu (clicking outside should close it) was glitchy somehow. an easy\n        // way to avoid this is just remove the old context menu here if it exists.\n        if (this.activeMenu) {\n            this.hideActiveMenu();\n        }\n        this.activeMenu = menu;\n        menu.addEventListener(BeanStub.EVENT_DESTROYED, function () {\n            if (_this.activeMenu === menu) {\n                _this.activeMenu = null;\n            }\n        });\n        // hide the popup if something gets selected\n        if (addPopupRes) {\n            menu.addEventListener(AgMenuItemComponent.EVENT_MENU_ITEM_SELECTED, addPopupRes.hideFunc);\n        }\n        return true;\n    };\n    __decorate$B([\n        Autowired('popupService')\n    ], ContextMenuFactory.prototype, \"popupService\", void 0);\n    __decorate$B([\n        Optional('rangeService')\n    ], ContextMenuFactory.prototype, \"rangeService\", void 0);\n    __decorate$B([\n        Autowired('ctrlsService')\n    ], ContextMenuFactory.prototype, \"ctrlsService\", void 0);\n    __decorate$B([\n        Autowired('columnModel')\n    ], ContextMenuFactory.prototype, \"columnModel\", void 0);\n    ContextMenuFactory = __decorate$B([\n        Bean('contextMenuFactory')\n    ], ContextMenuFactory);\n    return ContextMenuFactory;\n}(BeanStub));\nvar ContextMenu = /** @class */ (function (_super) {\n    __extends$D(ContextMenu, _super);\n    function ContextMenu(menuItems) {\n        var _this = _super.call(this, /* html */ \"<div class=\\\"\" + CSS_MENU + \"\\\" role=\\\"presentation\\\"></div>\") || this;\n        _this.menuList = null;\n        _this.focusedCell = null;\n        _this.menuItems = menuItems;\n        return _this;\n    }\n    ContextMenu.prototype.addMenuItems = function () {\n        var _this = this;\n        var menuList = this.createManagedBean(new AgMenuList());\n        var menuItemsMapped = this.menuItemMapper.mapWithStockItems(this.menuItems, null);\n        menuList.addMenuItems(menuItemsMapped);\n        this.appendChild(menuList);\n        this.menuList = menuList;\n        menuList.addEventListener(AgMenuItemComponent.EVENT_MENU_ITEM_SELECTED, function (e) { return _this.dispatchEvent(e); });\n    };\n    ContextMenu.prototype.afterGuiAttached = function (params) {\n        if (params.hidePopup) {\n            this.addDestroyFunc(params.hidePopup);\n        }\n        this.focusedCell = this.focusService.getFocusedCell();\n        if (this.menuList) {\n            this.focusService.focusInto(this.menuList.getGui());\n        }\n    };\n    ContextMenu.prototype.restoreFocusedCell = function () {\n        var currentFocusedCell = this.focusService.getFocusedCell();\n        if (currentFocusedCell && this.focusedCell && this.cellPositionUtils.equals(currentFocusedCell, this.focusedCell)) {\n            var _a = this.focusedCell, rowIndex = _a.rowIndex, rowPinned = _a.rowPinned, column = _a.column;\n            var doc = this.gridOptionsService.getDocument();\n            if (doc.activeElement === doc.body) {\n                this.focusService.setFocusedCell({ rowIndex: rowIndex, column: column, rowPinned: rowPinned, forceBrowserFocus: true });\n            }\n        }\n    };\n    ContextMenu.prototype.destroy = function () {\n        this.restoreFocusedCell();\n        _super.prototype.destroy.call(this);\n    };\n    __decorate$B([\n        Autowired('menuItemMapper')\n    ], ContextMenu.prototype, \"menuItemMapper\", void 0);\n    __decorate$B([\n        Autowired('focusService')\n    ], ContextMenu.prototype, \"focusService\", void 0);\n    __decorate$B([\n        Autowired('cellPositionUtils')\n    ], ContextMenu.prototype, \"cellPositionUtils\", void 0);\n    __decorate$B([\n        PostConstruct\n    ], ContextMenu.prototype, \"addMenuItems\", null);\n    return ContextMenu;\n}(Component));\n\nvar __extends$C = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __assign$4 = (undefined && undefined.__assign) || function () {\n    __assign$4 = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign$4.apply(this, arguments);\n};\nvar __decorate$A = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar MenuItemMapper = /** @class */ (function (_super) {\n    __extends$C(MenuItemMapper, _super);\n    function MenuItemMapper() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    MenuItemMapper.prototype.mapWithStockItems = function (originalList, column) {\n        var _this = this;\n        if (!originalList) {\n            return [];\n        }\n        var resultList = [];\n        originalList.forEach(function (menuItemOrString) {\n            var result;\n            if (typeof menuItemOrString === 'string') {\n                result = _this.getStockMenuItem(menuItemOrString, column);\n            }\n            else {\n                // Spread to prevent leaking mapped subMenus back into the original menuItem\n                result = __assign$4({}, menuItemOrString);\n            }\n            // if no mapping, can happen when module is not loaded but user tries to use module anyway\n            if (!result) {\n                return;\n            }\n            var resultDef = result;\n            var subMenu = resultDef.subMenu;\n            if (subMenu && subMenu instanceof Array) {\n                resultDef.subMenu = _this.mapWithStockItems(subMenu, column);\n            }\n            if (result != null) {\n                resultList.push(result);\n            }\n        });\n        return resultList;\n    };\n    MenuItemMapper.prototype.getStockMenuItem = function (key, column) {\n        var _this = this;\n        var _a;\n        var localeTextFunc = this.localeService.getLocaleTextFunc();\n        var skipHeaderOnAutoSize = this.gridOptionsService.is('skipHeaderOnAutoSize');\n        switch (key) {\n            case 'pinSubMenu':\n                return {\n                    name: localeTextFunc('pinColumn', 'Pin Column'),\n                    icon: _.createIconNoSpan('menuPin', this.gridOptionsService, null),\n                    subMenu: ['clearPinned', 'pinLeft', 'pinRight']\n                };\n            case 'pinLeft':\n                return {\n                    name: localeTextFunc('pinLeft', 'Pin Left'),\n                    action: function () { return _this.columnModel.setColumnPinned(column, 'left', \"contextMenu\"); },\n                    checked: !!column && column.isPinnedLeft()\n                };\n            case 'pinRight':\n                return {\n                    name: localeTextFunc('pinRight', 'Pin Right'),\n                    action: function () { return _this.columnModel.setColumnPinned(column, 'right', \"contextMenu\"); },\n                    checked: !!column && column.isPinnedRight()\n                };\n            case 'clearPinned':\n                return {\n                    name: localeTextFunc('noPin', 'No Pin'),\n                    action: function () { return _this.columnModel.setColumnPinned(column, null, \"contextMenu\"); },\n                    checked: !!column && !column.isPinned()\n                };\n            case 'valueAggSubMenu':\n                if (ModuleRegistry.assertRegistered(ModuleNames.RowGroupingModule, 'Aggregation from Menu')) {\n                    if (!(column === null || column === void 0 ? void 0 : column.isPrimary()) && !(column === null || column === void 0 ? void 0 : column.getColDef().pivotValueColumn)) {\n                        return null;\n                    }\n                    return {\n                        name: localeTextFunc('valueAggregation', 'Value Aggregation'),\n                        icon: _.createIconNoSpan('menuValue', this.gridOptionsService, null),\n                        subMenu: this.createAggregationSubMenu(column)\n                    };\n                }\n                else {\n                    return null;\n                }\n            case 'autoSizeThis':\n                return {\n                    name: localeTextFunc('autosizeThiscolumn', 'Autosize This Column'),\n                    action: function () { return _this.columnModel.autoSizeColumn(column, skipHeaderOnAutoSize, \"contextMenu\"); }\n                };\n            case 'autoSizeAll':\n                return {\n                    name: localeTextFunc('autosizeAllColumns', 'Autosize All Columns'),\n                    action: function () { return _this.columnModel.autoSizeAllColumns(skipHeaderOnAutoSize, \"contextMenu\"); }\n                };\n            case 'rowGroup':\n                return {\n                    name: localeTextFunc('groupBy', 'Group by') + ' ' + _.escapeString(this.columnModel.getDisplayNameForColumn(column, 'header')),\n                    action: function () { return _this.columnModel.addRowGroupColumn(column, \"contextMenu\"); },\n                    icon: _.createIconNoSpan('menuAddRowGroup', this.gridOptionsService, null)\n                };\n            case 'rowUnGroup':\n                return {\n                    name: localeTextFunc('ungroupBy', 'Un-Group by') + ' ' + _.escapeString(this.columnModel.getDisplayNameForColumn(column, 'header')),\n                    action: function () { return _this.columnModel.removeRowGroupColumn(column, \"contextMenu\"); },\n                    icon: _.createIconNoSpan('menuRemoveRowGroup', this.gridOptionsService, null)\n                };\n            case 'resetColumns':\n                return {\n                    name: localeTextFunc('resetColumns', 'Reset Columns'),\n                    action: function () { return _this.columnModel.resetColumnState(\"contextMenu\"); }\n                };\n            case 'expandAll':\n                return {\n                    name: localeTextFunc('expandAll', 'Expand All'),\n                    action: function () { return _this.gridApi.expandAll(); }\n                };\n            case 'contractAll':\n                return {\n                    name: localeTextFunc('collapseAll', 'Collapse All'),\n                    action: function () { return _this.gridApi.collapseAll(); }\n                };\n            case 'copy':\n                if (ModuleRegistry.assertRegistered(ModuleNames.ClipboardModule, 'Copy from Menu')) {\n                    return {\n                        name: localeTextFunc('copy', 'Copy'),\n                        shortcut: localeTextFunc('ctrlC', 'Ctrl+C'),\n                        icon: _.createIconNoSpan('clipboardCopy', this.gridOptionsService, null),\n                        action: function () { return _this.clipboardService.copyToClipboard(); }\n                    };\n                }\n                else {\n                    return null;\n                }\n            case 'copyWithHeaders':\n                if (ModuleRegistry.assertRegistered(ModuleNames.ClipboardModule, 'Copy with Headers from Menu')) {\n                    return {\n                        name: localeTextFunc('copyWithHeaders', 'Copy with Headers'),\n                        // shortcut: localeTextFunc('ctrlC','Ctrl+C'),\n                        icon: _.createIconNoSpan('clipboardCopy', this.gridOptionsService, null),\n                        action: function () { return _this.clipboardService.copyToClipboard({ includeHeaders: true }); }\n                    };\n                }\n                else {\n                    return null;\n                }\n            case 'copyWithGroupHeaders':\n                if (ModuleRegistry.assertRegistered(ModuleNames.ClipboardModule, 'Copy with Group Headers from Menu')) {\n                    return {\n                        name: localeTextFunc('copyWithGroupHeaders', 'Copy with Group Headers'),\n                        // shortcut: localeTextFunc('ctrlC','Ctrl+C'),\n                        icon: _.createIconNoSpan('clipboardCopy', this.gridOptionsService, null),\n                        action: function () { return _this.clipboardService.copyToClipboard({ includeHeaders: true, includeGroupHeaders: true }); }\n                    };\n                }\n                else {\n                    return null;\n                }\n            case 'cut':\n                if (ModuleRegistry.assertRegistered(ModuleNames.ClipboardModule, 'Cut from Menu')) {\n                    var focusedCell = this.focusService.getFocusedCell();\n                    var rowNode = focusedCell ? this.rowPositionUtils.getRowNode(focusedCell) : null;\n                    var isEditable = rowNode ? focusedCell === null || focusedCell === void 0 ? void 0 : focusedCell.column.isCellEditable(rowNode) : false;\n                    return {\n                        name: localeTextFunc('cut', 'Cut'),\n                        shortcut: localeTextFunc('ctrlX', 'Ctrl+X'),\n                        icon: _.createIconNoSpan('clipboardCut', this.gridOptionsService, null),\n                        disabled: !isEditable || this.gridOptionsService.is('suppressCutToClipboard'),\n                        action: function () { return _this.clipboardService.cutToClipboard(); }\n                    };\n                }\n                else {\n                    return null;\n                }\n            case 'paste':\n                if (ModuleRegistry.assertRegistered(ModuleNames.ClipboardModule, 'Paste from Clipboard')) {\n                    return {\n                        name: localeTextFunc('paste', 'Paste'),\n                        shortcut: localeTextFunc('ctrlV', 'Ctrl+V'),\n                        disabled: true,\n                        icon: _.createIconNoSpan('clipboardPaste', this.gridOptionsService, null),\n                        action: function () { return _this.clipboardService.pasteFromClipboard(); }\n                    };\n                }\n                else {\n                    return null;\n                }\n            case 'export':\n                var exportSubMenuItems = [];\n                var csvModuleLoaded = ModuleRegistry.isRegistered(ModuleNames.CsvExportModule);\n                var excelModuleLoaded = ModuleRegistry.isRegistered(ModuleNames.ExcelExportModule);\n                if (!this.gridOptionsService.is('suppressCsvExport') && csvModuleLoaded) {\n                    exportSubMenuItems.push('csvExport');\n                }\n                if (!this.gridOptionsService.is('suppressExcelExport') && excelModuleLoaded) {\n                    exportSubMenuItems.push('excelExport');\n                }\n                return {\n                    name: localeTextFunc('export', 'Export'),\n                    subMenu: exportSubMenuItems,\n                    icon: _.createIconNoSpan('save', this.gridOptionsService, null),\n                };\n            case 'csvExport':\n                return {\n                    name: localeTextFunc('csvExport', 'CSV Export'),\n                    icon: _.createIconNoSpan('csvExport', this.gridOptionsService, null),\n                    action: function () { return _this.gridApi.exportDataAsCsv({}); }\n                };\n            case 'excelExport':\n                return {\n                    name: localeTextFunc('excelExport', 'Excel Export'),\n                    icon: _.createIconNoSpan('excelExport', this.gridOptionsService, null),\n                    action: function () { return _this.gridApi.exportDataAsExcel(); }\n                };\n            case 'separator':\n                return 'separator';\n            case 'pivotChart':\n            case 'chartRange':\n                return (_a = this.chartMenuItemMapper.getChartItems(key)) !== null && _a !== void 0 ? _a : null;\n            default: {\n                console.warn(\"AG Grid: unknown menu item type \" + key);\n                return null;\n            }\n        }\n    };\n    MenuItemMapper.prototype.createAggregationSubMenu = function (column) {\n        var _this = this;\n        var localeTextFunc = this.localeService.getLocaleTextFunc();\n        var columnToUse;\n        if (column.isPrimary()) {\n            columnToUse = column;\n        }\n        else {\n            var pivotValueColumn = column.getColDef().pivotValueColumn;\n            columnToUse = _.exists(pivotValueColumn) ? pivotValueColumn : undefined;\n        }\n        var result = [];\n        if (columnToUse) {\n            var columnIsAlreadyAggValue_1 = columnToUse.isValueActive();\n            var funcNames = this.aggFuncService.getFuncNames(columnToUse);\n            result.push({\n                name: localeTextFunc('noAggregation', 'None'),\n                action: function () {\n                    _this.columnModel.removeValueColumn(columnToUse, \"contextMenu\");\n                    _this.columnModel.setColumnAggFunc(columnToUse, undefined, \"contextMenu\");\n                },\n                checked: !columnIsAlreadyAggValue_1\n            });\n            funcNames.forEach(function (funcName) {\n                result.push({\n                    name: localeTextFunc(funcName, _.capitalise(funcName)),\n                    action: function () {\n                        _this.columnModel.setColumnAggFunc(columnToUse, funcName, \"contextMenu\");\n                        _this.columnModel.addValueColumn(columnToUse, \"contextMenu\");\n                    },\n                    checked: columnIsAlreadyAggValue_1 && columnToUse.getAggFunc() === funcName\n                });\n            });\n        }\n        return result;\n    };\n    __decorate$A([\n        Autowired('columnModel')\n    ], MenuItemMapper.prototype, \"columnModel\", void 0);\n    __decorate$A([\n        Autowired('gridApi')\n    ], MenuItemMapper.prototype, \"gridApi\", void 0);\n    __decorate$A([\n        Optional('clipboardService')\n    ], MenuItemMapper.prototype, \"clipboardService\", void 0);\n    __decorate$A([\n        Optional('aggFuncService')\n    ], MenuItemMapper.prototype, \"aggFuncService\", void 0);\n    __decorate$A([\n        Autowired('focusService')\n    ], MenuItemMapper.prototype, \"focusService\", void 0);\n    __decorate$A([\n        Autowired('rowPositionUtils')\n    ], MenuItemMapper.prototype, \"rowPositionUtils\", void 0);\n    __decorate$A([\n        Autowired('chartMenuItemMapper')\n    ], MenuItemMapper.prototype, \"chartMenuItemMapper\", void 0);\n    MenuItemMapper = __decorate$A([\n        Bean('menuItemMapper')\n    ], MenuItemMapper);\n    return MenuItemMapper;\n}(BeanStub));\n\n// DO NOT UPDATE MANUALLY: Generated from script during build time\nvar VERSION$7 = '29.3.5';\n\nvar __extends$B = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __assign$3 = (undefined && undefined.__assign) || function () {\n    __assign$3 = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign$3.apply(this, arguments);\n};\nvar __decorate$z = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __read$8 = (undefined && undefined.__read) || function (o, n) {\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n    if (!m) return o;\n    var i = m.call(o), r, ar = [], e;\n    try {\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n    }\n    catch (error) { e = { error: error }; }\n    finally {\n        try {\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\n        }\n        finally { if (e) throw e.error; }\n    }\n    return ar;\n};\nvar ChartMenuItemMapper = /** @class */ (function (_super) {\n    __extends$B(ChartMenuItemMapper, _super);\n    function ChartMenuItemMapper() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    ChartMenuItemMapper_1 = ChartMenuItemMapper;\n    ChartMenuItemMapper.prototype.getChartItems = function (key) {\n        var _a, _b;\n        if (!this.chartService) {\n            ModuleRegistry.assertRegistered(ModuleNames.GridChartsModule, \"the Context Menu key \\\"\" + key + \"\\\"\");\n            return undefined;\n        }\n        var builder = key === 'pivotChart'\n            ? new PivotMenuItemMapper(this.gridOptionsService, this.chartService, this.localeService)\n            : new RangeMenuItemMapper(this.gridOptionsService, this.chartService, this.localeService);\n        var topLevelMenuItem = builder.getMenuItem();\n        var chartGroupsDef = (_b = (_a = this.gridOptionsService.get('chartToolPanelsDef')) === null || _a === void 0 ? void 0 : _a.settingsPanel) === null || _b === void 0 ? void 0 : _b.chartGroupsDef;\n        if (chartGroupsDef) {\n            // Apply filtering and ordering if chartGroupsDef provided\n            topLevelMenuItem = ChartMenuItemMapper_1.filterAndOrderChartMenu(topLevelMenuItem, chartGroupsDef, builder.getConfigLookup());\n        }\n        return this.cleanInternals(topLevelMenuItem);\n    };\n    // Remove our internal _key properties so this does not leak out of the class on the menu items.\n    ChartMenuItemMapper.prototype.cleanInternals = function (menuItem) {\n        if (!menuItem) {\n            return menuItem;\n        }\n        var removeKey = function (m) {\n            var _a;\n            m === null || m === void 0 ? true : delete m._key;\n            (_a = m === null || m === void 0 ? void 0 : m.subMenu) === null || _a === void 0 ? void 0 : _a.forEach(function (s) { return removeKey(s); });\n            return m;\n        };\n        return removeKey(menuItem);\n    };\n    ChartMenuItemMapper.buildLookup = function (menuItem) {\n        var itemLookup = {};\n        var addItem = function (item) {\n            itemLookup[item._key] = item;\n            if (item.subMenu) {\n                item.subMenu.forEach(function (s) { return addItem(s); });\n            }\n        };\n        addItem(menuItem);\n        return itemLookup;\n    };\n    /**\n     * Make the MenuItem match the charts provided and their ordering on the ChartGroupsDef config object as provided by the user.\n     */\n    ChartMenuItemMapper.filterAndOrderChartMenu = function (topLevelMenuItem, chartGroupsDef, configLookup) {\n        var _a;\n        var menuItemLookup = this.buildLookup(topLevelMenuItem);\n        var orderedAndFiltered = __assign$3(__assign$3({}, topLevelMenuItem), { subMenu: [] });\n        Object.entries(chartGroupsDef).forEach(function (_a) {\n            var _b, _c;\n            var _d = __read$8(_a, 2), group = _d[0], chartTypes = _d[1];\n            var chartConfigGroup = configLookup[group];\n            if (chartConfigGroup == undefined) {\n                _.doOnce(function () { return console.warn(\"AG Grid - invalid chartGroupsDef config '\" + group + \"'\"); }, \"invalid_chartGroupsDef\" + group);\n                return undefined;\n            }\n            var menuItem = menuItemLookup[chartConfigGroup._key];\n            if (menuItem) {\n                if (menuItem.subMenu) {\n                    var subMenus = chartTypes.map(function (chartType) {\n                        var itemKey = chartConfigGroup[chartType];\n                        if (itemKey == undefined) {\n                            _.doOnce(function () { return console.warn(\"AG Grid - invalid chartGroupsDef config '\" + group + \".\" + chartType + \"'\"); }, \"invalid_chartGroupsDef\" + chartType + \"_\" + group);\n                            return undefined;\n                        }\n                        return menuItemLookup[itemKey];\n                    }).filter(function (s) { return s !== undefined; });\n                    if (subMenus.length > 0) {\n                        menuItem.subMenu = subMenus;\n                        (_b = orderedAndFiltered.subMenu) === null || _b === void 0 ? void 0 : _b.push(menuItem);\n                    }\n                }\n                else {\n                    // Handles line case which is not actually a sub subMenu\n                    (_c = orderedAndFiltered.subMenu) === null || _c === void 0 ? void 0 : _c.push(menuItem);\n                }\n            }\n        });\n        if (((_a = orderedAndFiltered.subMenu) === null || _a === void 0 ? void 0 : _a.length) == 0) {\n            return undefined;\n        }\n        return orderedAndFiltered;\n    };\n    var ChartMenuItemMapper_1;\n    __decorate$z([\n        Optional('chartService')\n    ], ChartMenuItemMapper.prototype, \"chartService\", void 0);\n    ChartMenuItemMapper = ChartMenuItemMapper_1 = __decorate$z([\n        Bean('chartMenuItemMapper')\n    ], ChartMenuItemMapper);\n    return ChartMenuItemMapper;\n}(BeanStub));\nvar PivotMenuItemMapper = /** @class */ (function () {\n    function PivotMenuItemMapper(gridOptionsService, chartService, localeService) {\n        this.gridOptionsService = gridOptionsService;\n        this.chartService = chartService;\n        this.localeService = localeService;\n    }\n    PivotMenuItemMapper.prototype.getMenuItem = function () {\n        var _this = this;\n        var localeTextFunc = this.localeService.getLocaleTextFunc();\n        var getMenuItem = function (localeKey, defaultText, chartType, key) {\n            return {\n                name: localeTextFunc(localeKey, defaultText),\n                action: function () { return _this.chartService.createPivotChart({ chartType: chartType }); },\n                _key: key\n            };\n        };\n        return {\n            name: localeTextFunc('pivotChart', 'Pivot Chart'),\n            _key: 'pivotChart',\n            subMenu: [\n                {\n                    _key: 'pivotColumnChart',\n                    name: localeTextFunc('columnChart', 'Column'),\n                    subMenu: [\n                        getMenuItem('groupedColumn', 'Grouped&lrm;', 'groupedColumn', 'pivotGroupedColumn'),\n                        getMenuItem('stackedColumn', 'Stacked&lrm;', 'stackedColumn', 'pivotStackedColumn'),\n                        getMenuItem('normalizedColumn', '100% Stacked&lrm;', 'normalizedColumn', 'pivotNormalizedColumn')\n                    ]\n                },\n                {\n                    _key: 'pivotBarChart',\n                    name: localeTextFunc('barChart', 'Bar'),\n                    subMenu: [\n                        getMenuItem('groupedBar', 'Grouped&lrm;', 'groupedBar', 'pivotGroupedBar'),\n                        getMenuItem('stackedBar', 'Stacked&lrm;', 'stackedBar', 'pivotStackedBar'),\n                        getMenuItem('normalizedBar', '100% Stacked&lrm;', 'normalizedBar', 'pivotNormalizedBar')\n                    ]\n                },\n                {\n                    _key: 'pivotPieChart',\n                    name: localeTextFunc('pieChart', 'Pie'),\n                    subMenu: [\n                        getMenuItem('pie', 'Pie&lrm;', 'pie', 'pivotPie'),\n                        getMenuItem('doughnut', 'Doughnut&lrm;', 'doughnut', 'pivotDoughnut')\n                    ]\n                },\n                getMenuItem('line', 'Line&lrm;', 'line', 'pivotLineChart'),\n                {\n                    _key: 'pivotXYChart',\n                    name: localeTextFunc('xyChart', 'X Y (Scatter)'),\n                    subMenu: [\n                        getMenuItem('scatter', 'Scatter&lrm;', 'scatter', 'pivotScatter'),\n                        getMenuItem('bubble', 'Bubble&lrm;', 'bubble', 'pivotBubble')\n                    ]\n                },\n                {\n                    _key: 'pivotAreaChart',\n                    name: localeTextFunc('areaChart', 'Area'),\n                    subMenu: [\n                        getMenuItem('area', 'Area&lrm;', 'area', 'pivotArea'),\n                        getMenuItem('stackedArea', 'Stacked&lrm;', 'stackedArea', 'pivotStackedArea'),\n                        getMenuItem('normalizedArea', '100% Stacked&lrm;', 'normalizedArea', 'pivotNormalizedArea')\n                    ]\n                },\n                getMenuItem('histogramChart', 'Histogram&lrm;', 'histogram', 'pivotHistogramChart'),\n                {\n                    _key: 'pivotCombinationChart',\n                    name: localeTextFunc('combinationChart', 'Combination'),\n                    subMenu: [\n                        getMenuItem('columnLineCombo', 'Column & Line&lrm;', 'columnLineCombo', 'pivotColumnLineCombo'),\n                        getMenuItem('AreaColumnCombo', 'Area & Column&lrm;', 'areaColumnCombo', 'pivotAreaColumnCombo')\n                    ]\n                }\n            ],\n            icon: _.createIconNoSpan('chart', this.gridOptionsService, undefined),\n        };\n    };\n    PivotMenuItemMapper.prototype.getConfigLookup = function () {\n        return {\n            columnGroup: {\n                _key: 'pivotColumnChart',\n                column: 'pivotGroupedColumn',\n                stackedColumn: 'pivotStackedColumn',\n                normalizedColumn: 'pivotNormalizedColumn',\n            },\n            barGroup: {\n                _key: 'pivotBarChart',\n                bar: 'pivotGroupedBar',\n                stackedBar: 'pivotStackedBar',\n                normalizedBar: 'pivotNormalizedBar',\n            },\n            pieGroup: {\n                _key: 'pivotPieChart',\n                pie: 'pivotPie',\n                doughnut: 'pivotDoughnut',\n            },\n            lineGroup: {\n                _key: 'pivotLineChart',\n                line: 'pivotLineChart',\n            },\n            scatterGroup: {\n                _key: 'pivotXYChart',\n                bubble: 'pivotBubble',\n                scatter: 'pivotScatter',\n            },\n            areaGroup: {\n                _key: 'pivotAreaChart',\n                area: 'pivotArea',\n                stackedArea: 'pivotStackedArea',\n                normalizedArea: 'pivotNormalizedArea',\n            },\n            histogramGroup: {\n                _key: 'pivotHistogramChart',\n                histogram: 'pivotHistogramChart',\n            },\n            combinationGroup: {\n                _key: 'pivotCombinationChart',\n                columnLineCombo: 'pivotColumnLineCombo',\n                areaColumnCombo: 'pivotAreaColumnCombo',\n                customCombo: '' // Not currently supported but needs a value to separate from a missing value\n            }\n        };\n    };\n    return PivotMenuItemMapper;\n}());\nvar RangeMenuItemMapper = /** @class */ (function () {\n    function RangeMenuItemMapper(gridOptionsService, chartService, localeService) {\n        this.gridOptionsService = gridOptionsService;\n        this.chartService = chartService;\n        this.localeService = localeService;\n    }\n    RangeMenuItemMapper.prototype.getMenuItem = function () {\n        var _this = this;\n        var localeTextFunc = this.localeService.getLocaleTextFunc();\n        var getMenuItem = function (localeKey, defaultText, chartType, key) {\n            return {\n                name: localeTextFunc(localeKey, defaultText),\n                action: function () { return _this.chartService.createChartFromCurrentRange(chartType); },\n                _key: key\n            };\n        };\n        return {\n            name: localeTextFunc('chartRange', 'Chart Range'),\n            _key: 'chartRange',\n            subMenu: [\n                {\n                    name: localeTextFunc('columnChart', 'Column'),\n                    subMenu: [\n                        getMenuItem('groupedColumn', 'Grouped&lrm;', 'groupedColumn', 'rangeGroupedColumn'),\n                        getMenuItem('stackedColumn', 'Stacked&lrm;', 'stackedColumn', 'rangeStackedColumn'),\n                        getMenuItem('normalizedColumn', '100% Stacked&lrm;', 'normalizedColumn', 'rangeNormalizedColumn')\n                    ],\n                    _key: 'rangeColumnChart'\n                },\n                {\n                    name: localeTextFunc('barChart', 'Bar'),\n                    subMenu: [\n                        getMenuItem('groupedBar', 'Grouped&lrm;', 'groupedBar', 'rangeGroupedBar'),\n                        getMenuItem('stackedBar', 'Stacked&lrm;', 'stackedBar', 'rangeStackedBar'),\n                        getMenuItem('normalizedBar', '100% Stacked&lrm;', 'normalizedBar', 'rangeNormalizedBar')\n                    ],\n                    _key: 'rangeBarChart'\n                },\n                {\n                    name: localeTextFunc('pieChart', 'Pie'),\n                    subMenu: [\n                        getMenuItem('pie', 'Pie&lrm;', 'pie', 'rangePie'),\n                        getMenuItem('doughnut', 'Doughnut&lrm;', 'doughnut', 'rangeDoughnut')\n                    ],\n                    _key: 'rangePieChart'\n                },\n                getMenuItem('line', 'Line&lrm;', 'line', 'rangeLineChart'),\n                {\n                    name: localeTextFunc('xyChart', 'X Y (Scatter)'),\n                    subMenu: [\n                        getMenuItem('scatter', 'Scatter&lrm;', 'scatter', 'rangeScatter'),\n                        getMenuItem('bubble', 'Bubble&lrm;', 'bubble', 'rangeBubble')\n                    ],\n                    _key: 'rangeXYChart'\n                },\n                {\n                    name: localeTextFunc('areaChart', 'Area'),\n                    subMenu: [\n                        getMenuItem('area', 'Area&lrm;', 'area', 'rangeArea'),\n                        getMenuItem('stackedArea', 'Stacked&lrm;', 'stackedArea', 'rangeStackedArea'),\n                        getMenuItem('normalizedArea', '100% Stacked&lrm;', 'normalizedArea', 'rangeNormalizedArea')\n                    ],\n                    _key: 'rangeAreaChart'\n                },\n                getMenuItem('histogramChart', 'Histogram&lrm;', 'histogram', 'rangeHistogramChart'),\n                {\n                    name: localeTextFunc('combinationChart', 'Combination'),\n                    subMenu: [\n                        getMenuItem('columnLineCombo', 'Column & Line&lrm;', 'columnLineCombo', 'rangeColumnLineCombo'),\n                        getMenuItem('AreaColumnCombo', 'Area & Column&lrm;', 'areaColumnCombo', 'rangeAreaColumnCombo')\n                    ],\n                    _key: 'rangeCombinationChart'\n                }\n            ],\n            icon: _.createIconNoSpan('chart', this.gridOptionsService, undefined),\n        };\n    };\n    RangeMenuItemMapper.prototype.getConfigLookup = function () {\n        return {\n            columnGroup: {\n                _key: 'rangeColumnChart',\n                column: 'rangeGroupedColumn',\n                stackedColumn: 'rangeStackedColumn',\n                normalizedColumn: 'rangeNormalizedColumn',\n            },\n            barGroup: {\n                _key: 'rangeBarChart',\n                bar: 'rangeGroupedBar',\n                stackedBar: 'rangeStackedBar',\n                normalizedBar: 'rangeNormalizedBar',\n            },\n            pieGroup: {\n                _key: 'rangePieChart',\n                pie: 'rangePie',\n                doughnut: 'rangeDoughnut',\n            },\n            lineGroup: {\n                _key: 'rangeLineChart',\n                line: 'rangeLineChart',\n            },\n            scatterGroup: {\n                _key: 'rangeXYChart',\n                bubble: 'rangeBubble',\n                scatter: 'rangeScatter',\n            },\n            areaGroup: {\n                _key: 'rangeAreaChart',\n                area: 'rangeArea',\n                stackedArea: 'rangeStackedArea',\n                normalizedArea: 'rangeNormalizedArea',\n            },\n            histogramGroup: {\n                _key: 'rangeHistogramChart',\n                histogram: 'rangeHistogramChart',\n            },\n            combinationGroup: {\n                _key: 'rangeCombinationChart',\n                columnLineCombo: 'rangeColumnLineCombo',\n                areaColumnCombo: 'rangeAreaColumnCombo',\n                customCombo: '' // Not currently supported but needs a value to separate from a missing value\n            }\n        };\n    };\n    return RangeMenuItemMapper;\n}());\n\nvar MenuModule = {\n    version: VERSION$7,\n    moduleName: ModuleNames.MenuModule,\n    beans: [EnterpriseMenuFactory, ContextMenuFactory, MenuItemMapper, ChartMenuItemMapper],\n    dependantModules: [\n        EnterpriseCoreModule\n    ]\n};\n\nvar __extends$A = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __assign$2 = (undefined && undefined.__assign) || function () {\n    __assign$2 = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign$2.apply(this, arguments);\n};\nvar __decorate$y = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar MultiFilter = /** @class */ (function (_super) {\n    __extends$A(MultiFilter, _super);\n    function MultiFilter() {\n        var _this = _super.call(this, /* html */ \"<div class=\\\"ag-multi-filter ag-menu-list-compact\\\"></div>\") || this;\n        _this.filterDefs = [];\n        _this.filters = [];\n        _this.guiDestroyFuncs = [];\n        _this.activeFilterIndices = [];\n        _this.lastActivatedMenuItem = null;\n        _this.afterFiltersReadyFuncs = [];\n        return _this;\n    }\n    MultiFilter.prototype.postConstruct = function () {\n        var _this = this;\n        this.initialiseTabGuard({\n            onFocusIn: function (e) { return _this.onFocusIn(e); }\n        });\n    };\n    MultiFilter.getFilterDefs = function (params) {\n        var filters = params.filters;\n        return filters && filters.length > 0 ?\n            filters :\n            [{ filter: 'agTextColumnFilter' }, { filter: 'agSetColumnFilter' }];\n    };\n    MultiFilter.prototype.init = function (params) {\n        var _this = this;\n        this.params = params;\n        this.filterDefs = MultiFilter.getFilterDefs(params);\n        var column = params.column, filterChangedCallback = params.filterChangedCallback;\n        this.column = column;\n        this.filterChangedCallback = filterChangedCallback;\n        var filterPromises = [];\n        this.filterDefs.forEach(function (filterDef, index) {\n            var filterPromise = _this.createFilter(filterDef, index);\n            if (filterPromise != null) {\n                filterPromises.push(filterPromise);\n            }\n        });\n        // we have to refresh the GUI here to ensure that Angular components are not rendered in odd places\n        return AgPromise\n            .all(filterPromises)\n            .then(function (filters) {\n            _this.filters = filters;\n            _this.refreshGui('columnMenu');\n            _this.afterFiltersReadyFuncs.forEach(function (f) { return f(); });\n            _this.afterFiltersReadyFuncs.length = 0;\n        });\n    };\n    MultiFilter.prototype.refreshGui = function (container) {\n        var _this = this;\n        if (container === this.lastOpenedInContainer) {\n            return;\n        }\n        this.removeAllChildrenExceptTabGuards();\n        this.destroyChildren();\n        this.filters.forEach(function (filter, index) {\n            if (index > 0) {\n                _this.appendChild(_.loadTemplate(/* html */ \"<div class=\\\"ag-filter-separator\\\"></div>\"));\n            }\n            var filterDef = _this.filterDefs[index];\n            var filterTitle = _this.getFilterTitle(filter, filterDef);\n            var filterGui;\n            if (filterDef.display === 'subMenu' && container !== 'toolPanel') {\n                // prevent sub-menu being used in tool panel\n                var menuItem = _this.insertFilterMenu(filter, filterTitle);\n                filterGui = menuItem.getGui();\n            }\n            else if (filterDef.display === 'subMenu' || filterDef.display === 'accordion') {\n                // sub-menus should appear as groups in the tool panel\n                var group = _this.insertFilterGroup(filter, filterTitle);\n                filterGui = group.getGui();\n            }\n            else {\n                // display inline\n                filterGui = filter.getGui();\n            }\n            _this.appendChild(filterGui);\n        });\n        this.lastOpenedInContainer = container;\n    };\n    MultiFilter.prototype.getFilterTitle = function (filter, filterDef) {\n        if (filterDef.title != null) {\n            return filterDef.title;\n        }\n        var filterWithoutType = filter;\n        return typeof filterWithoutType.getFilterTitle === 'function' ? filterWithoutType.getFilterTitle() : 'Filter';\n    };\n    MultiFilter.prototype.destroyChildren = function () {\n        this.guiDestroyFuncs.forEach(function (func) { return func(); });\n        this.guiDestroyFuncs.length = 0;\n    };\n    MultiFilter.prototype.insertFilterMenu = function (filter, name) {\n        var _this = this;\n        var menuItem = this.createBean(new AgMenuItemComponent({\n            name: name,\n            subMenu: filter,\n            cssClasses: ['ag-multi-filter-menu-item'],\n            isCompact: true,\n            isAnotherSubMenuOpen: function () { return false; },\n        }));\n        menuItem.setParentComponent(this);\n        this.guiDestroyFuncs.push(function () { return _this.destroyBean(menuItem); });\n        this.addManagedListener(menuItem, AgMenuItemComponent.EVENT_MENU_ITEM_ACTIVATED, function (event) {\n            if (_this.lastActivatedMenuItem && _this.lastActivatedMenuItem !== event.menuItem) {\n                _this.lastActivatedMenuItem.deactivate();\n            }\n            _this.lastActivatedMenuItem = event.menuItem;\n        });\n        menuItem.addGuiEventListener('focusin', function () { return menuItem.activate(); });\n        menuItem.addGuiEventListener('focusout', function () {\n            if (!menuItem.isSubMenuOpen()) {\n                menuItem.deactivate();\n            }\n        });\n        return menuItem;\n    };\n    MultiFilter.prototype.insertFilterGroup = function (filter, title) {\n        var _this = this;\n        var group = this.createBean(new AgGroupComponent({\n            title: title,\n            cssIdentifier: 'multi-filter',\n        }));\n        this.guiDestroyFuncs.push(function () { return _this.destroyBean(group); });\n        group.addItem(filter.getGui());\n        group.toggleGroupExpand(false);\n        if (filter.afterGuiAttached) {\n            var params_1 = { container: this.lastOpenedInContainer, suppressFocus: true };\n            group.addManagedListener(group, AgGroupComponent.EVENT_EXPANDED, function () { return filter.afterGuiAttached(params_1); });\n        }\n        return group;\n    };\n    MultiFilter.prototype.isFilterActive = function () {\n        return this.filters.some(function (filter) { return filter.isFilterActive(); });\n    };\n    MultiFilter.prototype.getLastActiveFilterIndex = function () {\n        return this.activeFilterIndices.length > 0 ? this.activeFilterIndices[this.activeFilterIndices.length - 1] : null;\n    };\n    MultiFilter.prototype.doesFilterPass = function (params, filterToSkip) {\n        var rowPasses = true;\n        this.filters.forEach(function (filter) {\n            if (!rowPasses || filter === filterToSkip || !filter.isFilterActive()) {\n                return;\n            }\n            rowPasses = filter.doesFilterPass(params);\n        });\n        return rowPasses;\n    };\n    MultiFilter.prototype.getFilterType = function () {\n        return 'multi';\n    };\n    MultiFilter.prototype.getModelFromUi = function () {\n        var model = {\n            filterType: this.getFilterType(),\n            filterModels: this.filters.map(function (filter) {\n                var providedFilter = filter;\n                if (typeof providedFilter.getModelFromUi === 'function') {\n                    return providedFilter.getModelFromUi();\n                }\n                return null;\n            })\n        };\n        return model;\n    };\n    MultiFilter.prototype.getModel = function () {\n        if (!this.isFilterActive()) {\n            return null;\n        }\n        var model = {\n            filterType: this.getFilterType(),\n            filterModels: this.filters.map(function (filter) {\n                if (filter.isFilterActive()) {\n                    return filter.getModel();\n                }\n                return null;\n            })\n        };\n        return model;\n    };\n    MultiFilter.prototype.setModel = function (model) {\n        var _this = this;\n        var setFilterModel = function (filter, filterModel) {\n            return new AgPromise(function (resolve) {\n                var promise = filter.setModel(filterModel);\n                promise ? promise.then(function () { return resolve(); }) : resolve();\n            });\n        };\n        var promises = [];\n        if (model == null) {\n            promises = this.filters.map(function (filter, index) {\n                var res = setFilterModel(filter, null).then(function () {\n                    _this.updateActiveList(index);\n                });\n                return res;\n            });\n        }\n        else {\n            this.filters.forEach(function (filter, index) {\n                var filterModel = model.filterModels.length > index ? model.filterModels[index] : null;\n                var res = setFilterModel(filter, filterModel).then(function () {\n                    _this.updateActiveList(index);\n                });\n                promises.push(res);\n            });\n        }\n        return AgPromise.all(promises).then(function () { });\n    };\n    MultiFilter.prototype.applyModel = function (source) {\n        if (source === void 0) { source = 'api'; }\n        var result = false;\n        this.filters.forEach(function (filter) {\n            if (filter instanceof ProvidedFilter) {\n                result = filter.applyModel(source) || result;\n            }\n        });\n        return result;\n    };\n    MultiFilter.prototype.getChildFilterInstance = function (index) {\n        return this.filters[index];\n    };\n    MultiFilter.prototype.afterGuiAttached = function (params) {\n        if (params) {\n            this.refreshGui(params.container);\n        }\n        var filters = this.params.filters;\n        var suppressFocus = filters && filters.some(function (filter) { return filter.display && filter.display !== 'inline'; });\n        this.executeFunctionIfExists('afterGuiAttached', __assign$2(__assign$2({}, params || {}), { suppressFocus: suppressFocus }));\n        var eDocument = this.gridOptionsService.getDocument();\n        var activeEl = eDocument.activeElement;\n        // if suppress focus is true, we might run into two scenarios:\n        // 1 - we are loading the filter for the first time and the component isn't ready,\n        //     which means the document will have focus.\n        // 2 - The focus will be somewhere inside the component due to auto focus\n        // In both cases we need to force the focus somewhere valid but outside the filter.\n        if (suppressFocus && (activeEl === eDocument.body || this.getGui().contains(activeEl))) {\n            // reset focus to the top of the container, and blur\n            this.forceFocusOutOfContainer(true);\n        }\n    };\n    MultiFilter.prototype.afterGuiDetached = function () {\n        this.executeFunctionIfExists('afterGuiDetached');\n    };\n    MultiFilter.prototype.onAnyFilterChanged = function () {\n        this.executeFunctionIfExists('onAnyFilterChanged');\n    };\n    MultiFilter.prototype.onNewRowsLoaded = function () {\n        this.executeFunctionIfExists('onNewRowsLoaded');\n    };\n    MultiFilter.prototype.destroy = function () {\n        var _this = this;\n        this.filters.forEach(function (filter) {\n            filter.setModel(null);\n            _this.destroyBean(filter);\n        });\n        this.filters.length = 0;\n        this.destroyChildren();\n        _super.prototype.destroy.call(this);\n    };\n    MultiFilter.prototype.executeFunctionIfExists = function (name) {\n        var params = [];\n        for (var _i = 1; _i < arguments.length; _i++) {\n            params[_i - 1] = arguments[_i];\n        }\n        // The first filter is always the \"dominant\" one. By iterating in reverse order we ensure the first filter\n        // always gets the last say\n        _.forEachReverse(this.filters, function (filter) {\n            var func = filter[name];\n            if (typeof func === 'function') {\n                func.apply(filter, params);\n            }\n        });\n    };\n    MultiFilter.prototype.createFilter = function (filterDef, index) {\n        var _this = this;\n        var _a = this.params, filterModifiedCallback = _a.filterModifiedCallback, doesRowPassOtherFilter = _a.doesRowPassOtherFilter;\n        var filterInstance;\n        var filterParams = __assign$2(__assign$2({}, this.filterManager.createFilterParams(this.column, this.column.getColDef())), { filterModifiedCallback: filterModifiedCallback, filterChangedCallback: function (additionalEventAttributes) {\n                _this.executeWhenAllFiltersReady(function () { return _this.filterChanged(index, additionalEventAttributes); });\n            }, doesRowPassOtherFilter: function (node) {\n                return doesRowPassOtherFilter(node) && _this.doesFilterPass({ node: node, data: node.data }, filterInstance);\n            } });\n        var compDetails = this.userComponentFactory.getFilterDetails(filterDef, filterParams, 'agTextColumnFilter');\n        if (!compDetails) {\n            return null;\n        }\n        var filterPromise = compDetails.newAgStackInstance();\n        if (filterPromise) {\n            filterPromise.then(function (filter) { return filterInstance = filter; });\n        }\n        return filterPromise;\n    };\n    MultiFilter.prototype.executeWhenAllFiltersReady = function (action) {\n        if (this.filters && this.filters.length > 0) {\n            action();\n        }\n        else {\n            this.afterFiltersReadyFuncs.push(action);\n        }\n    };\n    MultiFilter.prototype.updateActiveList = function (index) {\n        var changedFilter = this.filters[index];\n        _.removeFromArray(this.activeFilterIndices, index);\n        if (changedFilter.isFilterActive()) {\n            this.activeFilterIndices.push(index);\n        }\n    };\n    MultiFilter.prototype.filterChanged = function (index, additionalEventAttributes) {\n        this.updateActiveList(index);\n        this.filterChangedCallback(additionalEventAttributes);\n        var changedFilter = this.filters[index];\n        this.filters.forEach(function (filter) {\n            if (filter === changedFilter) {\n                return;\n            }\n            if (typeof filter.onAnyFilterChanged === 'function') {\n                filter.onAnyFilterChanged();\n            }\n        });\n    };\n    MultiFilter.prototype.onFocusIn = function (e) {\n        if (this.lastActivatedMenuItem != null && !this.lastActivatedMenuItem.getGui().contains(e.target)) {\n            this.lastActivatedMenuItem.deactivate();\n            this.lastActivatedMenuItem = null;\n        }\n        return true;\n    };\n    MultiFilter.prototype.getModelAsString = function (model) {\n        var _a, _b, _c, _d;\n        if (!this.filters || !((_a = model === null || model === void 0 ? void 0 : model.filterModels) === null || _a === void 0 ? void 0 : _a.length)) {\n            return '';\n        }\n        var lastActiveIndex = (_b = this.getLastActiveFilterIndex()) !== null && _b !== void 0 ? _b : 0;\n        var activeFilter = this.filters[lastActiveIndex];\n        return (_d = (_c = activeFilter.getModelAsString) === null || _c === void 0 ? void 0 : _c.call(activeFilter, model.filterModels[lastActiveIndex])) !== null && _d !== void 0 ? _d : '';\n    };\n    __decorate$y([\n        Autowired('filterManager')\n    ], MultiFilter.prototype, \"filterManager\", void 0);\n    __decorate$y([\n        Autowired('userComponentFactory')\n    ], MultiFilter.prototype, \"userComponentFactory\", void 0);\n    __decorate$y([\n        PostConstruct\n    ], MultiFilter.prototype, \"postConstruct\", null);\n    return MultiFilter;\n}(TabGuardComp));\n\nvar __extends$z = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __assign$1 = (undefined && undefined.__assign) || function () {\n    __assign$1 = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign$1.apply(this, arguments);\n};\nvar __decorate$x = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar MultiFloatingFilterComp = /** @class */ (function (_super) {\n    __extends$z(MultiFloatingFilterComp, _super);\n    function MultiFloatingFilterComp() {\n        var _this = _super.call(this, /* html */ \"<div class=\\\"ag-multi-floating-filter ag-floating-filter-input\\\"></div>\") || this;\n        _this.floatingFilters = [];\n        return _this;\n    }\n    MultiFloatingFilterComp.prototype.init = function (params) {\n        var _this = this;\n        this.params = params;\n        var filterParams = params.filterParams;\n        var floatingFilterPromises = [];\n        MultiFilter.getFilterDefs(filterParams).forEach(function (filterDef, index) {\n            var floatingFilterParams = __assign$1(__assign$1({}, params), { \n                // set the parent filter instance for each floating filter to the relevant child filter instance\n                parentFilterInstance: function (callback) {\n                    _this.parentMultiFilterInstance(function (parent) {\n                        var child = parent.getChildFilterInstance(index);\n                        if (child == null) {\n                            return;\n                        }\n                        callback(child);\n                    });\n                } });\n            _.mergeDeep(floatingFilterParams.filterParams, filterDef.filterParams);\n            var floatingFilterPromise = _this.createFloatingFilter(filterDef, floatingFilterParams);\n            if (floatingFilterPromise != null) {\n                floatingFilterPromises.push(floatingFilterPromise);\n            }\n        });\n        return AgPromise.all(floatingFilterPromises).then(function (floatingFilters) {\n            floatingFilters.forEach(function (floatingFilter, index) {\n                _this.floatingFilters.push(floatingFilter);\n                var gui = floatingFilter.getGui();\n                _this.appendChild(gui);\n                if (index > 0) {\n                    _.setDisplayed(gui, false);\n                }\n            });\n        });\n    };\n    MultiFloatingFilterComp.prototype.onParentModelChanged = function (model, event) {\n        var _this = this;\n        // We don't want to update the floating filter if the floating filter caused the change,\n        // because the UI is already in sync. if we didn't do this, the UI would behave strangely\n        // as it would be updating as the user is typing\n        if (event && event.afterFloatingFilter) {\n            return;\n        }\n        this.parentMultiFilterInstance(function (parent) {\n            if (model == null) {\n                _this.floatingFilters.forEach(function (filter, i) {\n                    filter.onParentModelChanged(null, event);\n                    _.setDisplayed(filter.getGui(), i === 0);\n                });\n            }\n            else {\n                var lastActiveFloatingFilterIndex_1 = parent.getLastActiveFilterIndex();\n                _this.floatingFilters.forEach(function (filter, i) {\n                    var filterModel = model.filterModels.length > i ? model.filterModels[i] : null;\n                    filter.onParentModelChanged(filterModel, event);\n                    var shouldShow = lastActiveFloatingFilterIndex_1 == null ? i === 0 : i === lastActiveFloatingFilterIndex_1;\n                    _.setDisplayed(filter.getGui(), shouldShow);\n                });\n            }\n        });\n    };\n    MultiFloatingFilterComp.prototype.destroy = function () {\n        this.destroyBeans(this.floatingFilters);\n        this.floatingFilters.length = 0;\n        _super.prototype.destroy.call(this);\n    };\n    MultiFloatingFilterComp.prototype.createFloatingFilter = function (filterDef, params) {\n        var _a;\n        var defaultComponentName = (_a = this.userComponentFactory.getDefaultFloatingFilterType(filterDef)) !== null && _a !== void 0 ? _a : 'agReadOnlyFloatingFilter';\n        var compDetails = this.userComponentFactory.getFloatingFilterCompDetails(filterDef, params, defaultComponentName);\n        return compDetails ? compDetails.newAgStackInstance() : null;\n    };\n    MultiFloatingFilterComp.prototype.parentMultiFilterInstance = function (cb) {\n        this.params.parentFilterInstance(function (parent) {\n            if (!(parent instanceof MultiFilter)) {\n                throw new Error('AG Grid - MultiFloatingFilterComp expects MultiFilter as its parent');\n            }\n            cb(parent);\n        });\n    };\n    __decorate$x([\n        Autowired('userComponentFactory')\n    ], MultiFloatingFilterComp.prototype, \"userComponentFactory\", void 0);\n    return MultiFloatingFilterComp;\n}(Component));\n\n// DO NOT UPDATE MANUALLY: Generated from script during build time\nvar VERSION$6 = '29.3.5';\n\nvar MultiFilterModule = {\n    version: VERSION$6,\n    moduleName: ModuleNames.MultiFilterModule,\n    beans: [],\n    userComponents: [\n        { componentName: 'agMultiColumnFilter', componentClass: MultiFilter },\n        { componentName: 'agMultiColumnFloatingFilter', componentClass: MultiFloatingFilterComp },\n    ],\n    dependantModules: [\n        EnterpriseCoreModule\n    ]\n};\n\n/**\n * cell renderers are used in a few places. they bind to dom slightly differently to other cell renderes as they\n * can return back strings (instead of html elemnt) in the getGui() method. common code placed here to handle that.\n * @param {AgPromise<ICellRendererComp>} cellRendererPromise\n * @param {HTMLElement} eTarget\n */\nfunction bindCellRendererToHtmlElement(cellRendererPromise, eTarget) {\n    cellRendererPromise.then(function (cellRenderer) {\n        var gui = cellRenderer.getGui();\n        if (gui != null) {\n            if (typeof gui === 'object') {\n                eTarget.appendChild(gui);\n            }\n            else {\n                eTarget.innerHTML = gui;\n            }\n        }\n    });\n}\n\nvar __extends$y = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$w = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar RichSelectRow = /** @class */ (function (_super) {\n    __extends$y(RichSelectRow, _super);\n    function RichSelectRow(params) {\n        var _this = _super.call(this, /* html */ \"<div class=\\\"ag-rich-select-row\\\" role=\\\"presentation\\\"></div>\") || this;\n        _this.params = params;\n        return _this;\n    }\n    RichSelectRow.prototype.setState = function (value, valueFormatted, selected) {\n        var rendererSuccessful = this.populateWithRenderer(value, valueFormatted);\n        if (!rendererSuccessful) {\n            this.populateWithoutRenderer(value, valueFormatted);\n        }\n        this.updateSelected(selected);\n    };\n    RichSelectRow.prototype.updateSelected = function (selected) {\n        this.addOrRemoveCssClass('ag-rich-select-row-selected', selected);\n    };\n    RichSelectRow.prototype.populateWithoutRenderer = function (value, valueFormatted) {\n        var valueFormattedExits = valueFormatted !== null && valueFormatted !== undefined;\n        var valueToRender = valueFormattedExits ? valueFormatted : value;\n        if (_.exists(valueToRender) && valueToRender !== '') {\n            // not using innerHTML to prevent injection of HTML\n            // https://developer.mozilla.org/en-US/docs/Web/API/Element/innerHTML#Security_considerations\n            this.getGui().textContent = valueToRender.toString();\n        }\n        else {\n            // putting in blank, so if missing, at least the user can click on it\n            this.getGui().innerHTML = '&nbsp;';\n        }\n    };\n    RichSelectRow.prototype.populateWithRenderer = function (value, valueFormatted) {\n        var _this = this;\n        // bad coder here - we are not populating all values of the cellRendererParams\n        var params = {\n            value: value,\n            valueFormatted: valueFormatted,\n            api: this.gridOptionsService.api\n        };\n        var compDetails = this.userComponentFactory.getCellRendererDetails(this.params, params);\n        var cellRendererPromise = compDetails ? compDetails.newAgStackInstance() : undefined;\n        if (cellRendererPromise != null) {\n            bindCellRendererToHtmlElement(cellRendererPromise, this.getGui());\n        }\n        else {\n            this.getGui().innerText = params.valueFormatted != null ? params.valueFormatted : params.value;\n        }\n        if (cellRendererPromise) {\n            cellRendererPromise.then(function (childComponent) {\n                _this.addDestroyFunc(function () {\n                    _this.getContext().destroyBean(childComponent);\n                });\n            });\n            return true;\n        }\n        return false;\n    };\n    __decorate$w([\n        Autowired('userComponentFactory')\n    ], RichSelectRow.prototype, \"userComponentFactory\", void 0);\n    return RichSelectRow;\n}(Component));\n\nvar __extends$x = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$v = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar RichSelectCellEditor = /** @class */ (function (_super) {\n    __extends$x(RichSelectCellEditor, _super);\n    function RichSelectCellEditor() {\n        var _this = _super.call(this, RichSelectCellEditor.TEMPLATE) || this;\n        _this.selectionConfirmed = false;\n        _this.searchString = '';\n        return _this;\n    }\n    RichSelectCellEditor.prototype.init = function (params) {\n        this.params = params;\n        this.selectedValue = params.value;\n        this.originalSelectedValue = params.value;\n        this.focusAfterAttached = params.cellStartedEdit;\n        var icon = _.createIconNoSpan('smallDown', this.gridOptionsService);\n        icon.classList.add('ag-rich-select-value-icon');\n        this.eValue.appendChild(icon);\n        this.virtualList = this.createManagedBean(new VirtualList('rich-select'));\n        this.virtualList.setComponentCreator(this.createRowComponent.bind(this));\n        this.eList.appendChild(this.virtualList.getGui());\n        if (_.exists(this.params.cellHeight)) {\n            this.virtualList.setRowHeight(this.params.cellHeight);\n        }\n        this.renderSelectedValue();\n        if (_.missing(params.values)) {\n            console.warn('AG Grid: richSelectCellEditor requires values for it to work');\n            return;\n        }\n        var values = params.values;\n        this.virtualList.setModel({\n            getRowCount: function () { return values.length; },\n            getRow: function (index) { return values[index]; }\n        });\n        this.addGuiEventListener('keydown', this.onKeyDown.bind(this));\n        var virtualListGui = this.virtualList.getGui();\n        this.addManagedListener(virtualListGui, 'click', this.onClick.bind(this));\n        this.addManagedListener(virtualListGui, 'mousemove', this.onMouseMove.bind(this));\n        var debounceDelay = _.exists(params.searchDebounceDelay) ? params.searchDebounceDelay : 300;\n        this.clearSearchString = _.debounce(this.clearSearchString, debounceDelay);\n        if (_.exists(params.charPress)) {\n            this.searchText(params.charPress);\n        }\n    };\n    RichSelectCellEditor.prototype.onKeyDown = function (event) {\n        var key = event.key;\n        event.preventDefault();\n        switch (key) {\n            case KeyCode.ENTER:\n                this.onEnterKeyDown();\n                break;\n            case KeyCode.TAB:\n                this.confirmSelection();\n                break;\n            case KeyCode.DOWN:\n            case KeyCode.UP:\n                this.onNavigationKeyPressed(event, key);\n                break;\n            default:\n                this.searchText(event);\n        }\n    };\n    RichSelectCellEditor.prototype.confirmSelection = function () {\n        this.selectionConfirmed = true;\n    };\n    RichSelectCellEditor.prototype.onEnterKeyDown = function () {\n        this.confirmSelection();\n        this.params.stopEditing();\n    };\n    RichSelectCellEditor.prototype.onNavigationKeyPressed = function (event, key) {\n        // if we don't preventDefault the page body and/or grid scroll will move.\n        event.preventDefault();\n        var oldIndex = this.params.values.indexOf(this.selectedValue);\n        var newIndex = key === KeyCode.UP ? oldIndex - 1 : oldIndex + 1;\n        if (newIndex >= 0 && newIndex < this.params.values.length) {\n            var valueToSelect = this.params.values[newIndex];\n            this.setSelectedValue(valueToSelect);\n        }\n    };\n    RichSelectCellEditor.prototype.searchText = function (key) {\n        if (typeof key !== 'string') {\n            var keyString = key.key;\n            if (keyString === KeyCode.BACKSPACE) {\n                this.searchString = this.searchString.slice(0, -1);\n                keyString = '';\n            }\n            else if (!_.isEventFromPrintableCharacter(key)) {\n                return;\n            }\n            this.searchText(keyString);\n            return;\n        }\n        this.searchString += key;\n        this.runSearch();\n        this.clearSearchString();\n    };\n    RichSelectCellEditor.prototype.runSearch = function () {\n        var _this = this;\n        var values = this.params.values;\n        var searchStrings;\n        if (typeof values[0] === 'number' || typeof values[0] === 'string') {\n            searchStrings = values.map(function (v) { return _this.params.formatValue(v); });\n        }\n        if (typeof values[0] === 'object' && this.params.colDef.keyCreator) {\n            searchStrings = values.map(function (value) {\n                var keyParams = {\n                    value: value,\n                    colDef: _this.params.colDef,\n                    column: _this.params.column,\n                    node: _this.params.node,\n                    data: _this.params.data,\n                    api: _this.gridOptionsService.api,\n                    columnApi: _this.gridOptionsService.columnApi,\n                    context: _this.gridOptionsService.context\n                };\n                return _this.params.colDef.keyCreator(keyParams);\n            });\n        }\n        if (!searchStrings) {\n            return;\n        }\n        var topSuggestion = _.fuzzySuggestions(this.searchString, searchStrings, true)[0];\n        if (!topSuggestion) {\n            return;\n        }\n        var topSuggestionIndex = searchStrings.indexOf(topSuggestion);\n        var topValue = values[topSuggestionIndex];\n        this.setSelectedValue(topValue);\n    };\n    RichSelectCellEditor.prototype.clearSearchString = function () {\n        this.searchString = '';\n    };\n    RichSelectCellEditor.prototype.renderSelectedValue = function () {\n        var _this = this;\n        var valueFormatted = this.params.formatValue(this.selectedValue);\n        var eValue = this.eValue;\n        var params = {\n            value: this.selectedValue,\n            valueFormatted: valueFormatted,\n            api: this.gridOptionsService.api,\n        };\n        var compDetails = this.userComponentFactory.getCellRendererDetails(this.params, params);\n        var promise = compDetails ? compDetails.newAgStackInstance() : undefined;\n        if (promise) {\n            bindCellRendererToHtmlElement(promise, eValue);\n            promise.then(function (renderer) {\n                _this.addDestroyFunc(function () { return _this.getContext().destroyBean(renderer); });\n            });\n        }\n        else {\n            if (_.exists(this.selectedValue)) {\n                eValue.innerText = valueFormatted;\n            }\n            else {\n                _.clearElement(eValue);\n            }\n        }\n    };\n    RichSelectCellEditor.prototype.setSelectedValue = function (value) {\n        if (this.selectedValue === value) {\n            return;\n        }\n        var index = this.params.values.indexOf(value);\n        if (index === -1) {\n            return;\n        }\n        this.selectedValue = value;\n        this.virtualList.ensureIndexVisible(index);\n        this.virtualList.forEachRenderedRow(function (cmp, idx) {\n            cmp.updateSelected(index === idx);\n        });\n        this.virtualList.focusRow(index);\n    };\n    RichSelectCellEditor.prototype.createRowComponent = function (value) {\n        var valueFormatted = this.params.formatValue(value);\n        var row = new RichSelectRow(this.params);\n        this.getContext().createBean(row);\n        row.setState(value, valueFormatted, value === this.selectedValue);\n        return row;\n    };\n    RichSelectCellEditor.prototype.onMouseMove = function (mouseEvent) {\n        var rect = this.virtualList.getGui().getBoundingClientRect();\n        var scrollTop = this.virtualList.getScrollTop();\n        var mouseY = mouseEvent.clientY - rect.top + scrollTop;\n        var row = Math.floor(mouseY / this.virtualList.getRowHeight());\n        var value = this.params.values[row];\n        // not using utils.exist() as want empty string test to pass\n        if (value !== undefined) {\n            this.setSelectedValue(value);\n        }\n    };\n    RichSelectCellEditor.prototype.onClick = function () {\n        this.confirmSelection();\n        this.params.stopEditing();\n    };\n    // we need to have the gui attached before we can draw the virtual rows, as the\n    // virtual row logic needs info about the gui state\n    RichSelectCellEditor.prototype.afterGuiAttached = function () {\n        var selectedIndex = this.params.values.indexOf(this.selectedValue);\n        // we have to call this here to get the list to have the right height, ie\n        // otherwise it would not have scrolls yet and ensureIndexVisible would do nothing\n        this.virtualList.refresh();\n        if (selectedIndex >= 0) {\n            this.virtualList.ensureIndexVisible(selectedIndex);\n        }\n        // we call refresh again, as the list could of moved, and we need to render the new rows\n        this.virtualList.refresh();\n        if (this.focusAfterAttached) {\n            var indexToSelect = selectedIndex !== -1 ? selectedIndex : 0;\n            if (this.params.values.length) {\n                this.virtualList.focusRow(indexToSelect);\n            }\n            else {\n                this.getGui().focus();\n            }\n        }\n    };\n    RichSelectCellEditor.prototype.getValue = function () {\n        // NOTE: we don't use valueParser for Set Filter. The user should provide values that are to be\n        // set into the data. valueParser only really makese sense when the user is typing in text (not picking\n        // form a set).\n        return this.selectionConfirmed ? this.selectedValue : this.originalSelectedValue;\n    };\n    // tab index is needed so we can focus, which is needed for keyboard events\n    RichSelectCellEditor.TEMPLATE = \"<div class=\\\"ag-rich-select\\\" tabindex=\\\"-1\\\">\\n            <div ref=\\\"eValue\\\" class=\\\"ag-rich-select-value\\\"></div>\\n            <div ref=\\\"eList\\\" class=\\\"ag-rich-select-list\\\"></div>\\n        </div>\";\n    __decorate$v([\n        Autowired('userComponentFactory')\n    ], RichSelectCellEditor.prototype, \"userComponentFactory\", void 0);\n    __decorate$v([\n        RefSelector('eValue')\n    ], RichSelectCellEditor.prototype, \"eValue\", void 0);\n    __decorate$v([\n        RefSelector('eList')\n    ], RichSelectCellEditor.prototype, \"eList\", void 0);\n    return RichSelectCellEditor;\n}(PopupComponent));\n\n// DO NOT UPDATE MANUALLY: Generated from script during build time\nvar VERSION$5 = '29.3.5';\n\nvar RichSelectModule = {\n    version: VERSION$5,\n    moduleName: ModuleNames.RichSelectModule,\n    beans: [],\n    userComponents: [\n        { componentName: 'agRichSelect', componentClass: RichSelectCellEditor },\n        { componentName: 'agRichSelectCellEditor', componentClass: RichSelectCellEditor }\n    ],\n    dependantModules: [\n        EnterpriseCoreModule\n    ]\n};\n\nvar __extends$w = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$u = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar FullStore = /** @class */ (function (_super) {\n    __extends$w(FullStore, _super);\n    function FullStore(ssrmParams, storeParams, parentRowNode) {\n        var _this = \n        // finite block represents a cache with just one block, thus 0 is the id, it's the first block\n        _super.call(this, 0) || this;\n        _this.nodeIdSequence = new NumberSequence();\n        _this.info = {};\n        _this.ssrmParams = ssrmParams;\n        _this.parentRowNode = parentRowNode;\n        _this.level = parentRowNode.level + 1;\n        _this.groupLevel = ssrmParams.rowGroupCols ? _this.level < ssrmParams.rowGroupCols.length : undefined;\n        _this.leafGroup = ssrmParams.rowGroupCols ? _this.level === ssrmParams.rowGroupCols.length - 1 : false;\n        return _this;\n    }\n    FullStore.prototype.postConstruct = function () {\n        var _this = this;\n        this.usingTreeData = this.gridOptionsService.isTreeData();\n        this.nodeIdPrefix = this.blockUtils.createNodeIdPrefix(this.parentRowNode);\n        if (!this.usingTreeData && this.groupLevel) {\n            var groupColVo = this.ssrmParams.rowGroupCols[this.level];\n            this.groupField = groupColVo.field;\n            this.rowGroupColumn = this.columnModel.getRowGroupColumns()[this.level];\n        }\n        var initialRowCount = 1;\n        var isRootStore = this.parentRowNode.level === -1;\n        var userInitialRowCount = this.storeUtils.getServerSideInitialRowCount();\n        if (isRootStore && userInitialRowCount !== undefined) {\n            initialRowCount = userInitialRowCount;\n        }\n        this.initialiseRowNodes(initialRowCount);\n        this.rowNodeBlockLoader.addBlock(this);\n        this.addDestroyFunc(function () { return _this.rowNodeBlockLoader.removeBlock(_this); });\n    };\n    FullStore.prototype.destroyRowNodes = function () {\n        this.blockUtils.destroyRowNodes(this.allRowNodes);\n        this.allRowNodes = [];\n        this.nodesAfterSort = [];\n        this.nodesAfterFilter = [];\n        this.allNodesMap = {};\n    };\n    FullStore.prototype.initialiseRowNodes = function (loadingRowsCount, failedLoad) {\n        if (failedLoad === void 0) { failedLoad = false; }\n        this.destroyRowNodes();\n        for (var i = 0; i < loadingRowsCount; i++) {\n            var loadingRowNode = this.blockUtils.createRowNode({\n                field: this.groupField,\n                group: this.groupLevel,\n                leafGroup: this.leafGroup,\n                level: this.level, parent: this.parentRowNode, rowGroupColumn: this.rowGroupColumn\n            });\n            if (failedLoad) {\n                loadingRowNode.failedLoad = true;\n            }\n            this.allRowNodes.push(loadingRowNode);\n            this.nodesAfterFilter.push(loadingRowNode);\n            this.nodesAfterSort.push(loadingRowNode);\n        }\n    };\n    FullStore.prototype.getBlockStateJson = function () {\n        return {\n            id: this.nodeIdPrefix ? this.nodeIdPrefix : '',\n            state: this.getState()\n        };\n    };\n    FullStore.prototype.loadFromDatasource = function () {\n        this.storeUtils.loadFromDatasource({\n            startRow: undefined,\n            endRow: undefined,\n            parentBlock: this,\n            parentNode: this.parentRowNode,\n            storeParams: this.ssrmParams,\n            successCallback: this.pageLoaded.bind(this, this.getVersion()),\n            success: this.success.bind(this, this.getVersion()),\n            failCallback: this.pageLoadFailed.bind(this, this.getVersion()),\n            fail: this.pageLoadFailed.bind(this, this.getVersion())\n        });\n    };\n    FullStore.prototype.getStartRow = function () {\n        return 0; // always zero as not in a cache\n    };\n    FullStore.prototype.getEndRow = function () {\n        return this.nodesAfterSort.length;\n    };\n    FullStore.prototype.createDataNode = function (data, index) {\n        var rowNode = this.blockUtils.createRowNode({\n            field: this.groupField,\n            group: this.groupLevel,\n            leafGroup: this.leafGroup,\n            level: this.level, parent: this.parentRowNode, rowGroupColumn: this.rowGroupColumn\n        });\n        if (index != null) {\n            _.insertIntoArray(this.allRowNodes, rowNode, index);\n        }\n        else {\n            this.allRowNodes.push(rowNode);\n        }\n        var defaultId = this.prefixId(this.nodeIdSequence.next());\n        this.blockUtils.setDataIntoRowNode(rowNode, data, defaultId, undefined);\n        this.nodeManager.addRowNode(rowNode);\n        this.blockUtils.checkOpenByDefault(rowNode);\n        this.allNodesMap[rowNode.id] = rowNode;\n        return rowNode;\n    };\n    FullStore.prototype.prefixId = function (id) {\n        if (this.nodeIdPrefix) {\n            return this.nodeIdPrefix + '-' + id;\n        }\n        else {\n            return id.toString();\n        }\n    };\n    FullStore.prototype.processServerFail = function () {\n        this.initialiseRowNodes(1, true);\n        this.fireStoreUpdatedEvent();\n        this.flushAsyncTransactions();\n    };\n    FullStore.prototype.processServerResult = function (params) {\n        if (!this.isAlive()) {\n            return;\n        }\n        var info = params.storeInfo || params.groupLevelInfo;\n        if (info) {\n            Object.assign(this.info, info);\n        }\n        var nodesToRecycle = this.allRowNodes.length > 0 ? this.allNodesMap : undefined;\n        this.allRowNodes = [];\n        this.nodesAfterSort = [];\n        this.nodesAfterFilter = [];\n        this.allNodesMap = {};\n        if (!params.rowData) {\n            var message_1 = 'AG Grid: \"params.data\" is missing from Server-Side Row Model success() callback. Please use the \"data\" attribute. If no data is returned, set an empty list.';\n            _.doOnce(function () { return console.warn(message_1, params); }, 'FullStore.noData');\n        }\n        this.createOrRecycleNodes(nodesToRecycle, params.rowData);\n        if (nodesToRecycle) {\n            this.blockUtils.destroyRowNodes(_.getAllValuesInObject(nodesToRecycle));\n        }\n        this.filterAndSortNodes();\n        this.fireStoreUpdatedEvent();\n        this.flushAsyncTransactions();\n    };\n    FullStore.prototype.createOrRecycleNodes = function (nodesToRecycle, rowData) {\n        var _this = this;\n        if (!rowData) {\n            return;\n        }\n        var lookupNodeToRecycle = function (data) {\n            if (!nodesToRecycle) {\n                return undefined;\n            }\n            var getRowIdFunc = _this.gridOptionsService.getRowIdFunc();\n            if (!getRowIdFunc) {\n                return undefined;\n            }\n            var parentKeys = _this.parentRowNode.getGroupKeys();\n            var level = _this.level;\n            var id = getRowIdFunc({\n                data: data,\n                parentKeys: parentKeys.length > 0 ? parentKeys : undefined,\n                level: level,\n            });\n            var foundNode = nodesToRecycle[id];\n            if (!foundNode) {\n                return undefined;\n            }\n            delete nodesToRecycle[id];\n            return foundNode;\n        };\n        var recycleNode = function (rowNode, dataItem) {\n            _this.allNodesMap[rowNode.id] = rowNode;\n            _this.blockUtils.updateDataIntoRowNode(rowNode, dataItem);\n            _this.allRowNodes.push(rowNode);\n        };\n        rowData.forEach(function (dataItem) {\n            var nodeToRecycle = lookupNodeToRecycle(dataItem);\n            if (nodeToRecycle) {\n                recycleNode(nodeToRecycle, dataItem);\n            }\n            else {\n                _this.createDataNode(dataItem);\n            }\n        });\n    };\n    FullStore.prototype.flushAsyncTransactions = function () {\n        var _this = this;\n        // we want to update the store with any outstanding transactions straight away,\n        // as otherwise if waitTimeMillis is large (eg 5s), then the user could be looking\n        // at old data for a few seconds before the transactions is applied, which isn't what\n        // you would expect when we advertise 'transaction is applied when data is loaded'.\n        // we do this in a timeout as flushAsyncTransactions expects the grid to be in a settled\n        // state, not in the middle of loading rows! keeps the VM Turns more simple and deterministic.\n        window.setTimeout(function () { return _this.transactionManager.flushAsyncTransactions(); }, 0);\n    };\n    FullStore.prototype.filterAndSortNodes = function () {\n        this.filterRowNodes();\n        this.sortRowNodes();\n    };\n    FullStore.prototype.sortRowNodes = function () {\n        var serverIsSorting = this.storeUtils.isServerSideSortAllLevels() || this.storeUtils.isServerSideSortOnServer();\n        var sortOptions = this.sortController.getSortOptions();\n        var noSortApplied = !sortOptions || sortOptions.length == 0;\n        if (serverIsSorting || noSortApplied) {\n            this.nodesAfterSort = this.nodesAfterFilter;\n            return;\n        }\n        this.nodesAfterSort = this.rowNodeSorter.doFullSort(this.nodesAfterFilter, sortOptions);\n    };\n    FullStore.prototype.filterRowNodes = function () {\n        var _this = this;\n        var serverIsFiltering = this.storeUtils.isServerSideFilterAllLevels() || this.storeUtils.isServerSideFilterOnServer();\n        // filtering for InFullStore only works at lowest level details.\n        // reason is the logic for group filtering was to difficult to work out how it should work at time of writing.\n        var groupLevel = this.groupLevel;\n        if (serverIsFiltering || groupLevel) {\n            this.nodesAfterFilter = this.allRowNodes;\n            return;\n        }\n        this.nodesAfterFilter = this.allRowNodes.filter(function (rowNode) { return _this.filterManager.doesRowPassFilter({ rowNode: rowNode }); });\n    };\n    FullStore.prototype.clearDisplayIndexes = function () {\n        var _this = this;\n        this.displayIndexStart = undefined;\n        this.displayIndexEnd = undefined;\n        this.allRowNodes.forEach(function (rowNode) { return _this.blockUtils.clearDisplayIndex(rowNode); });\n    };\n    FullStore.prototype.getDisplayIndexEnd = function () {\n        return this.displayIndexEnd;\n    };\n    FullStore.prototype.isDisplayIndexInStore = function (displayIndex) {\n        if (this.getRowCount() === 0) {\n            return false;\n        }\n        return displayIndex >= this.displayIndexStart && displayIndex < this.displayIndexEnd;\n    };\n    FullStore.prototype.setDisplayIndexes = function (displayIndexSeq, nextRowTop) {\n        var _this = this;\n        this.displayIndexStart = displayIndexSeq.peek();\n        this.topPx = nextRowTop.value;\n        var visibleNodeIds = {};\n        // set on all visible nodes\n        this.nodesAfterSort.forEach(function (rowNode) {\n            _this.blockUtils.setDisplayIndex(rowNode, displayIndexSeq, nextRowTop);\n            visibleNodeIds[rowNode.id] = true;\n        });\n        // and clear on all non-visible nodes\n        this.allRowNodes.forEach(function (rowNode) {\n            if (!visibleNodeIds[rowNode.id]) {\n                _this.blockUtils.clearDisplayIndex(rowNode);\n            }\n        });\n        this.displayIndexEnd = displayIndexSeq.peek();\n        this.heightPx = nextRowTop.value - this.topPx;\n    };\n    FullStore.prototype.forEachStoreDeep = function (callback, sequence) {\n        if (sequence === void 0) { sequence = new NumberSequence(); }\n        callback(this, sequence.next());\n        this.allRowNodes.forEach(function (rowNode) {\n            var childCache = rowNode.childStore;\n            if (childCache) {\n                childCache.forEachStoreDeep(callback, sequence);\n            }\n        });\n    };\n    FullStore.prototype.forEachNodeDeep = function (callback, sequence) {\n        if (sequence === void 0) { sequence = new NumberSequence(); }\n        this.allRowNodes.forEach(function (rowNode) {\n            callback(rowNode, sequence.next());\n            var childCache = rowNode.childStore;\n            if (childCache) {\n                childCache.forEachNodeDeep(callback, sequence);\n            }\n        });\n    };\n    FullStore.prototype.forEachNodeDeepAfterFilterAndSort = function (callback, sequence) {\n        if (sequence === void 0) { sequence = new NumberSequence(); }\n        this.nodesAfterSort.forEach(function (rowNode) {\n            callback(rowNode, sequence.next());\n            var childCache = rowNode.childStore;\n            if (childCache) {\n                childCache.forEachNodeDeepAfterFilterAndSort(callback, sequence);\n            }\n        });\n    };\n    FullStore.prototype.getRowUsingDisplayIndex = function (displayRowIndex) {\n        // this can happen if asking for a row that doesn't exist in the model,\n        // eg if a cell range is selected, and the user filters so rows no longer exists\n        if (!this.isDisplayIndexInStore(displayRowIndex)) {\n            return undefined;\n        }\n        var res = this.blockUtils.binarySearchForDisplayIndex(displayRowIndex, this.nodesAfterSort);\n        return res;\n    };\n    FullStore.prototype.getRowBounds = function (index) {\n        for (var i = 0; i < this.nodesAfterSort.length; i++) {\n            var rowNode = this.nodesAfterSort[i];\n            var res = this.blockUtils.extractRowBounds(rowNode, index);\n            if (res) {\n                return res;\n            }\n        }\n        return null;\n    };\n    FullStore.prototype.isPixelInRange = function (pixel) {\n        return pixel >= this.topPx && pixel < (this.topPx + this.heightPx);\n    };\n    FullStore.prototype.getRowIndexAtPixel = function (pixel) {\n        var _this = this;\n        // if pixel before block, return first row\n        var pixelBeforeThisStore = pixel <= this.topPx;\n        if (pixelBeforeThisStore) {\n            var firstNode = this.nodesAfterSort[0];\n            return firstNode.rowIndex;\n        }\n        // if pixel after store, return last row, however the last\n        // row could be a child store\n        var pixelAfterThisStore = pixel >= (this.topPx + this.heightPx);\n        if (pixelAfterThisStore) {\n            var lastRowNode = this.nodesAfterSort[this.nodesAfterSort.length - 1];\n            var lastRowNodeBottomPx = lastRowNode.rowTop + lastRowNode.rowHeight;\n            if (pixel >= lastRowNodeBottomPx && lastRowNode.expanded) {\n                if (lastRowNode.childStore && lastRowNode.childStore.getRowCount() > 0) {\n                    return lastRowNode.childStore.getRowIndexAtPixel(pixel);\n                }\n                if (lastRowNode.detailNode) {\n                    return lastRowNode.detailNode.rowIndex;\n                }\n            }\n            return lastRowNode.rowIndex;\n        }\n        var res = null;\n        this.nodesAfterSort.forEach(function (rowNode) {\n            var res2 = _this.blockUtils.getIndexAtPixel(rowNode, pixel);\n            if (res2 != null) {\n                res = res2;\n            }\n        });\n        var pixelIsPastLastRow = res == null;\n        if (pixelIsPastLastRow) {\n            return this.displayIndexEnd - 1;\n        }\n        return res;\n    };\n    FullStore.prototype.getChildStore = function (keys) {\n        var _this = this;\n        return this.storeUtils.getChildStore(keys, this, function (key) {\n            var rowNode = _this.allRowNodes.find(function (currentRowNode) {\n                return currentRowNode.key == key;\n            });\n            return rowNode;\n        });\n    };\n    FullStore.prototype.forEachChildStoreShallow = function (callback) {\n        this.allRowNodes.forEach(function (rowNode) {\n            var childStore = rowNode.childStore;\n            if (childStore) {\n                callback(childStore);\n            }\n        });\n    };\n    FullStore.prototype.refreshAfterFilter = function (params) {\n        var serverIsFiltering = this.storeUtils.isServerSideFilterOnServer();\n        var storeIsImpacted = this.storeUtils.isServerRefreshNeeded(this.parentRowNode, this.ssrmParams.rowGroupCols, params);\n        var serverIsFilteringAllLevels = this.storeUtils.isServerSideFilterAllLevels();\n        if (serverIsFilteringAllLevels || (serverIsFiltering && storeIsImpacted)) {\n            this.refreshStore(true);\n            this.sortRowNodes();\n            return;\n        }\n        this.filterRowNodes();\n        this.sortRowNodes();\n        this.forEachChildStoreShallow(function (store) { return store.refreshAfterFilter(params); });\n    };\n    FullStore.prototype.refreshAfterSort = function (params) {\n        var serverIsSorting = this.storeUtils.isServerSideSortOnServer();\n        var storeIsImpacted = this.storeUtils.isServerRefreshNeeded(this.parentRowNode, this.ssrmParams.rowGroupCols, params);\n        var serverIsSortingAllLevels = this.storeUtils.isServerSideSortAllLevels();\n        if (serverIsSortingAllLevels || (serverIsSorting && storeIsImpacted)) {\n            this.refreshStore(true);\n            this.filterRowNodes();\n            return;\n        }\n        this.filterRowNodes();\n        this.sortRowNodes();\n        this.forEachChildStoreShallow(function (store) { return store.refreshAfterSort(params); });\n    };\n    FullStore.prototype.applyTransaction = function (transaction) {\n        // we only apply transactions to loaded state\n        switch (this.getState()) {\n            case RowNodeBlock.STATE_FAILED:\n                return { status: ServerSideTransactionResultStatus.StoreLoadingFailed };\n            case RowNodeBlock.STATE_LOADING:\n                return { status: ServerSideTransactionResultStatus.StoreLoading };\n            case RowNodeBlock.STATE_WAITING_TO_LOAD:\n                return { status: ServerSideTransactionResultStatus.StoreWaitingToLoad };\n        }\n        var applyCallback = this.gridOptionsService.getCallback('isApplyServerSideTransaction');\n        if (applyCallback) {\n            var params = {\n                transaction: transaction,\n                parentNode: this.parentRowNode,\n                storeInfo: this.info,\n                groupLevelInfo: this.info\n            };\n            var apply = applyCallback(params);\n            if (!apply) {\n                return { status: ServerSideTransactionResultStatus.Cancelled };\n            }\n        }\n        var res = {\n            status: ServerSideTransactionResultStatus.Applied,\n            remove: [],\n            update: [],\n            add: []\n        };\n        var nodesToUnselect = [];\n        this.executeAdd(transaction, res);\n        this.executeRemove(transaction, res, nodesToUnselect);\n        this.executeUpdate(transaction, res, nodesToUnselect);\n        this.filterAndSortNodes();\n        this.updateSelection(nodesToUnselect);\n        return res;\n    };\n    FullStore.prototype.updateSelection = function (nodesToUnselect) {\n        var selectionChanged = nodesToUnselect.length > 0;\n        if (selectionChanged) {\n            nodesToUnselect.forEach(function (rowNode) {\n                rowNode.setSelected(false, false, true, 'rowDataChanged');\n            });\n            var event_1 = {\n                type: Events.EVENT_SELECTION_CHANGED,\n                source: 'rowDataChanged'\n            };\n            this.eventService.dispatchEvent(event_1);\n        }\n    };\n    FullStore.prototype.executeAdd = function (rowDataTran, rowNodeTransaction) {\n        var _this = this;\n        var add = rowDataTran.add, addIndex = rowDataTran.addIndex;\n        if (_.missingOrEmpty(add)) {\n            return;\n        }\n        var useIndex = typeof addIndex === 'number' && addIndex >= 0;\n        if (useIndex) {\n            // items get inserted in reverse order for index insertion\n            add.reverse().forEach(function (item) {\n                var newRowNode = _this.createDataNode(item, addIndex);\n                rowNodeTransaction.add.push(newRowNode);\n            });\n        }\n        else {\n            add.forEach(function (item) {\n                var newRowNode = _this.createDataNode(item);\n                rowNodeTransaction.add.push(newRowNode);\n            });\n        }\n    };\n    FullStore.prototype.executeRemove = function (rowDataTran, rowNodeTransaction, nodesToUnselect) {\n        var _this = this;\n        var remove = rowDataTran.remove;\n        if (remove == null) {\n            return;\n        }\n        var rowIdsRemoved = {};\n        remove.forEach(function (item) {\n            var rowNode = _this.lookupRowNode(item);\n            if (!rowNode) {\n                return;\n            }\n            // do delete - setting 'suppressFinishActions = true' to ensure EVENT_SELECTION_CHANGED is not raised for\n            // each row node updated, instead it is raised once by the calling code if any selected nodes exist.\n            if (rowNode.isSelected()) {\n                nodesToUnselect.push(rowNode);\n            }\n            // so row renderer knows to fade row out (and not reposition it)\n            rowNode.clearRowTopAndRowIndex();\n            // NOTE: were we could remove from allLeaveChildren, however _.removeFromArray() is expensive, especially\n            // if called multiple times (eg deleting lots of rows) and if allLeafChildren is a large list\n            rowIdsRemoved[rowNode.id] = true;\n            // _.removeFromArray(this.rootNode.allLeafChildren, rowNode);\n            delete _this.allNodesMap[rowNode.id];\n            rowNodeTransaction.remove.push(rowNode);\n            _this.nodeManager.removeNode(rowNode);\n        });\n        this.allRowNodes = this.allRowNodes.filter(function (rowNode) { return !rowIdsRemoved[rowNode.id]; });\n    };\n    FullStore.prototype.executeUpdate = function (rowDataTran, rowNodeTransaction, nodesToUnselect) {\n        var _this = this;\n        var update = rowDataTran.update;\n        if (update == null) {\n            return;\n        }\n        update.forEach(function (item) {\n            var rowNode = _this.lookupRowNode(item);\n            if (!rowNode) {\n                return;\n            }\n            _this.blockUtils.updateDataIntoRowNode(rowNode, item);\n            if (!rowNode.selectable && rowNode.isSelected()) {\n                nodesToUnselect.push(rowNode);\n            }\n            rowNodeTransaction.update.push(rowNode);\n        });\n    };\n    FullStore.prototype.lookupRowNode = function (data) {\n        var getRowIdFunc = this.gridOptionsService.getRowIdFunc();\n        var rowNode;\n        if (getRowIdFunc != null) {\n            // find rowNode using id\n            var level = this.level;\n            var parentKeys = this.parentRowNode.getGroupKeys();\n            var id = getRowIdFunc({\n                data: data,\n                parentKeys: parentKeys.length > 0 ? parentKeys : undefined,\n                level: level,\n            });\n            rowNode = this.allNodesMap[id];\n            if (!rowNode) {\n                console.error(\"AG Grid: could not find row id=\" + id + \", data item was not found for this id\");\n                return null;\n            }\n        }\n        else {\n            // find rowNode using object references\n            rowNode = this.allRowNodes.find(function (currentRowNode) { return currentRowNode.data === data; });\n            if (!rowNode) {\n                console.error(\"AG Grid: could not find data item as object was not found\", data);\n                return null;\n            }\n        }\n        return rowNode;\n    };\n    FullStore.prototype.addStoreStates = function (result) {\n        result.push({\n            suppressInfiniteScroll: true,\n            route: this.parentRowNode.getGroupKeys(),\n            rowCount: this.allRowNodes.length,\n            info: this.info\n        });\n        this.forEachChildStoreShallow(function (childStore) { return childStore.addStoreStates(result); });\n    };\n    FullStore.prototype.refreshStore = function (purge) {\n        if (purge) {\n            var loadingRowsToShow = this.nodesAfterSort ? this.nodesAfterSort.length : 1;\n            this.initialiseRowNodes(loadingRowsToShow);\n        }\n        this.scheduleLoad();\n        this.fireStoreUpdatedEvent();\n    };\n    FullStore.prototype.retryLoads = function () {\n        if (this.getState() === RowNodeBlock.STATE_FAILED) {\n            this.initialiseRowNodes(1);\n            this.scheduleLoad();\n        }\n        this.forEachChildStoreShallow(function (store) { return store.retryLoads(); });\n    };\n    FullStore.prototype.scheduleLoad = function () {\n        this.setStateWaitingToLoad();\n        this.rowNodeBlockLoader.checkBlockToLoad();\n    };\n    // gets called 1) row count changed 2) cache purged 3) items inserted\n    FullStore.prototype.fireStoreUpdatedEvent = function () {\n        // this results in row model firing ModelUpdated.\n        // server side row model also updates the row indexes first\n        var event = {\n            type: Events.EVENT_STORE_UPDATED\n        };\n        this.eventService.dispatchEvent(event);\n    };\n    FullStore.prototype.getRowCount = function () {\n        return this.nodesAfterSort.length;\n    };\n    FullStore.prototype.getTopLevelRowDisplayedIndex = function (topLevelIndex) {\n        var rowNode = this.nodesAfterSort[topLevelIndex];\n        return rowNode.rowIndex;\n    };\n    FullStore.prototype.isLastRowIndexKnown = function () {\n        return this.getState() == RowNodeBlock.STATE_LOADED;\n    };\n    FullStore.prototype.getRowNodesInRange = function (firstInRange, lastInRange) {\n        var result = [];\n        var inActiveRange = false;\n        // if only one node passed, we start the selection at the top\n        if (_.missing(firstInRange)) {\n            inActiveRange = true;\n        }\n        this.nodesAfterSort.forEach(function (rowNode) {\n            var hitFirstOrLast = rowNode === firstInRange || rowNode === lastInRange;\n            if (inActiveRange || hitFirstOrLast) {\n                result.push(rowNode);\n            }\n            if (hitFirstOrLast) {\n                inActiveRange = !inActiveRange;\n            }\n        });\n        // inActiveRange will be still true if we never hit the second rowNode\n        var invalidRange = inActiveRange;\n        return invalidRange ? [] : result;\n    };\n    FullStore.prototype.getStoreBounds = function () {\n        return {\n            topPx: this.topPx,\n            heightPx: this.heightPx,\n        };\n    };\n    __decorate$u([\n        Autowired('ssrmStoreUtils')\n    ], FullStore.prototype, \"storeUtils\", void 0);\n    __decorate$u([\n        Autowired('ssrmBlockUtils')\n    ], FullStore.prototype, \"blockUtils\", void 0);\n    __decorate$u([\n        Autowired('columnModel')\n    ], FullStore.prototype, \"columnModel\", void 0);\n    __decorate$u([\n        Autowired('rowNodeBlockLoader')\n    ], FullStore.prototype, \"rowNodeBlockLoader\", void 0);\n    __decorate$u([\n        Autowired('rowNodeSorter')\n    ], FullStore.prototype, \"rowNodeSorter\", void 0);\n    __decorate$u([\n        Autowired('sortController')\n    ], FullStore.prototype, \"sortController\", void 0);\n    __decorate$u([\n        Autowired('ssrmNodeManager')\n    ], FullStore.prototype, \"nodeManager\", void 0);\n    __decorate$u([\n        Autowired('filterManager')\n    ], FullStore.prototype, \"filterManager\", void 0);\n    __decorate$u([\n        Autowired('ssrmTransactionManager')\n    ], FullStore.prototype, \"transactionManager\", void 0);\n    __decorate$u([\n        PostConstruct\n    ], FullStore.prototype, \"postConstruct\", null);\n    __decorate$u([\n        PreDestroy\n    ], FullStore.prototype, \"destroyRowNodes\", null);\n    return FullStore;\n}(RowNodeBlock));\n\nvar __extends$v = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$t = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __read$7 = (undefined && undefined.__read) || function (o, n) {\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n    if (!m) return o;\n    var i = m.call(o), r, ar = [], e;\n    try {\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n    }\n    catch (error) { e = { error: error }; }\n    finally {\n        try {\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\n        }\n        finally { if (e) throw e.error; }\n    }\n    return ar;\n};\nvar LazyBlockLoader = /** @class */ (function (_super) {\n    __extends$v(LazyBlockLoader, _super);\n    function LazyBlockLoader(cache, parentNode, storeParams) {\n        var _this = _super.call(this) || this;\n        _this.loadingNodes = new Set();\n        _this.checkForLoadQueued = false;\n        _this.loaderTimeout = undefined;\n        _this.nextBlockToLoad = undefined;\n        _this.parentNode = parentNode;\n        _this.cache = cache;\n        _this.storeParams = storeParams;\n        return _this;\n    }\n    LazyBlockLoader.prototype.init = function () {\n        var _this = this;\n        this.addManagedListener(this.rowNodeBlockLoader, RowNodeBlockLoader.BLOCK_LOADED_EVENT, function () { return _this.queueLoadAction(); });\n    };\n    LazyBlockLoader.prototype.isRowLoading = function (index) {\n        return this.loadingNodes.has(index);\n    };\n    LazyBlockLoader.prototype.getBlockToLoad = function () {\n        var _a;\n        var firstRowInViewport = this.api.getFirstDisplayedRow();\n        var lastRowInViewport = this.api.getLastDisplayedRow();\n        // quick look-up for priority rows needing loading in viewport.\n        for (var i = firstRowInViewport; i <= lastRowInViewport; i++) {\n            var node = this.cache.getNodeCachedByDisplayIndex(i);\n            if (!node) {\n                // if no row details, ignore, as row hasn't been created\n                // and it's too expensive to work out its location here\n                continue;\n            }\n            var lazyNode = this.cache.getNodes().getBy('node', node);\n            if (!lazyNode) {\n                continue;\n            }\n            if (this.isRowLoading(lazyNode.index)) {\n                continue;\n            }\n            if (node.__needsRefreshWhenVisible || (node.stub && !node.failedLoad)) {\n                return this.getBlockStartIndexForIndex(lazyNode.index);\n            }\n        }\n        var nodesToRefresh = this.cache.getNodesToRefresh();\n        var nodeToRefresh = null;\n        var nodeToRefreshDist = Number.MAX_SAFE_INTEGER;\n        nodesToRefresh.forEach(function (node) {\n            if (node.rowIndex == null) {\n                nodeToRefresh = node;\n                return;\n            }\n            var distToViewportTop = Math.abs(firstRowInViewport - node.rowIndex);\n            var distToViewportBottom = Math.abs(node.rowIndex - lastRowInViewport);\n            if (distToViewportTop < nodeToRefreshDist) {\n                nodeToRefresh = node;\n                nodeToRefreshDist = distToViewportTop;\n            }\n            if (distToViewportBottom < nodeToRefreshDist) {\n                nodeToRefresh = node;\n                nodeToRefreshDist = distToViewportBottom;\n            }\n        });\n        var lazyIndex = (_a = this.cache.getNodes().getBy('node', nodeToRefresh)) === null || _a === void 0 ? void 0 : _a.index;\n        return lazyIndex == null ? undefined : this.getBlockStartIndexForIndex(lazyIndex);\n    };\n    LazyBlockLoader.prototype.reset = function () {\n        this.loadingNodes.clear();\n        clearTimeout(this.loaderTimeout);\n        this.loaderTimeout = undefined;\n    };\n    LazyBlockLoader.prototype.executeLoad = function (startRow, endRow) {\n        var _this = this;\n        var _a;\n        var ssrmParams = this.cache.getSsrmParams();\n        var request = {\n            startRow: startRow,\n            endRow: endRow,\n            rowGroupCols: ssrmParams.rowGroupCols,\n            valueCols: ssrmParams.valueCols,\n            pivotCols: ssrmParams.pivotCols,\n            pivotMode: ssrmParams.pivotMode,\n            groupKeys: this.parentNode.getGroupKeys(),\n            filterModel: ssrmParams.filterModel,\n            sortModel: ssrmParams.sortModel,\n        };\n        var removeNodesFromLoadingMap = function () {\n            for (var i = 0; i < endRow - startRow; i++) {\n                _this.loadingNodes.delete(startRow + i);\n            }\n        };\n        var addNodesToLoadingMap = function () {\n            for (var i = 0; i < endRow - startRow; i++) {\n                _this.loadingNodes.add(startRow + i);\n            }\n        };\n        var success = function (params) {\n            _this.rowNodeBlockLoader.loadComplete();\n            _this.cache.onLoadSuccess(startRow, endRow - startRow, params);\n            removeNodesFromLoadingMap();\n            _this.queueLoadAction();\n        };\n        var fail = function () {\n            _this.rowNodeBlockLoader.loadComplete();\n            _this.cache.onLoadFailed(startRow, endRow - startRow);\n            removeNodesFromLoadingMap();\n            _this.queueLoadAction();\n        };\n        var params = {\n            request: request,\n            successCallback: function (rowData, rowCount) { return success({ rowData: rowData, rowCount: rowCount }); },\n            success: success,\n            failCallback: fail,\n            fail: fail,\n            parentNode: this.parentNode,\n            api: this.api,\n            columnApi: this.columnApi,\n            context: this.gridOptionsService.context\n        };\n        addNodesToLoadingMap();\n        (_a = this.cache.getSsrmParams().datasource) === null || _a === void 0 ? void 0 : _a.getRows(params);\n    };\n    LazyBlockLoader.prototype.getNextBlockToLoad = function () {\n        var result = this.getBlockToLoad();\n        if (result != null && result < 0) {\n            this.getBlockToLoad();\n        }\n        if (result != null) {\n            return [String(result), result + this.getBlockSize()];\n        }\n        return null;\n    };\n    LazyBlockLoader.prototype.queueLoadCheck = function () {\n        var _this = this;\n        // already going to check next cycle, ignore.\n        if (this.checkForLoadQueued) {\n            return;\n        }\n        this.checkForLoadQueued = true;\n        window.queueMicrotask(function () {\n            _this.checkForLoadQueued = false;\n            _this.queueLoadAction();\n        });\n    };\n    LazyBlockLoader.prototype.queueLoadAction = function () {\n        var _this = this;\n        var _a;\n        var nextBlockToLoad = this.getNextBlockToLoad();\n        if (!nextBlockToLoad) {\n            // there's no block we should be loading right now, clear the timeouts\n            window.clearTimeout(this.loaderTimeout);\n            this.loaderTimeout = undefined;\n            this.nextBlockToLoad = undefined;\n            return;\n        }\n        // if the next required block has changed, reset the loading timeout\n        if (!this.nextBlockToLoad || (this.nextBlockToLoad[0] !== nextBlockToLoad[0] && this.nextBlockToLoad[1] !== nextBlockToLoad[1])) {\n            this.nextBlockToLoad = nextBlockToLoad;\n            window.clearTimeout(this.loaderTimeout);\n            var _b = __read$7(this.nextBlockToLoad, 2), startRowString = _b[0], endRow_1 = _b[1];\n            var startRow_1 = Number(startRowString);\n            this.loaderTimeout = window.setTimeout(function () {\n                if (!_this.cache.isAlive()) {\n                    return;\n                }\n                _this.loaderTimeout = undefined;\n                _this.attemptLoad(startRow_1, endRow_1);\n                _this.nextBlockToLoad = undefined;\n            }, (_a = this.gridOptionsService.getNum('blockLoadDebounceMillis')) !== null && _a !== void 0 ? _a : 0);\n        }\n    };\n    LazyBlockLoader.prototype.attemptLoad = function (start, end) {\n        var availableLoadingCount = this.rowNodeBlockLoader.getAvailableLoadingCount();\n        // too many loads already, ignore the request as a successful request will requeue itself anyway\n        if (availableLoadingCount != null && availableLoadingCount === 0) {\n            return;\n        }\n        this.rowNodeBlockLoader.registerLoads(1);\n        this.executeLoad(start, end);\n        this.queueLoadAction();\n    };\n    LazyBlockLoader.prototype.getBlockSize = function () {\n        return this.storeParams.cacheBlockSize || LazyBlockLoader.DEFAULT_BLOCK_SIZE;\n    };\n    LazyBlockLoader.prototype.getBlockStartIndexForIndex = function (storeIndex) {\n        var blockSize = this.getBlockSize();\n        return storeIndex - (storeIndex % blockSize);\n    };\n    LazyBlockLoader.prototype.getBlockBoundsForIndex = function (storeIndex) {\n        var startOfBlock = this.getBlockStartIndexForIndex(storeIndex);\n        var blockSize = this.getBlockSize();\n        return [startOfBlock, startOfBlock + blockSize];\n    };\n    LazyBlockLoader.DEFAULT_BLOCK_SIZE = 100;\n    __decorate$t([\n        Autowired('gridApi')\n    ], LazyBlockLoader.prototype, \"api\", void 0);\n    __decorate$t([\n        Autowired('columnApi')\n    ], LazyBlockLoader.prototype, \"columnApi\", void 0);\n    __decorate$t([\n        Autowired('rowNodeBlockLoader')\n    ], LazyBlockLoader.prototype, \"rowNodeBlockLoader\", void 0);\n    __decorate$t([\n        PostConstruct\n    ], LazyBlockLoader.prototype, \"init\", null);\n    return LazyBlockLoader;\n}(BeanStub));\n\nvar MultiIndexMap = /** @class */ (function () {\n    function MultiIndexMap() {\n        var indexes = [];\n        for (var _i = 0; _i < arguments.length; _i++) {\n            indexes[_i] = arguments[_i];\n        }\n        if (indexes.length < 1) {\n            throw new Error('AG Grid: At least one index must be provided.');\n        }\n        this.indexes = indexes;\n        this.maps = new Map(this.indexes.map(function (index) { return [index, new Map()]; }));\n    }\n    MultiIndexMap.prototype.getBy = function (index, key) {\n        var map = this.maps.get(index);\n        if (!map) {\n            throw new Error(\"AG Grid: \" + String(index) + \" not found\");\n        }\n        return map.get(key);\n    };\n    MultiIndexMap.prototype.set = function (item) {\n        var _this = this;\n        this.indexes.forEach(function (index) {\n            var map = _this.maps.get(index);\n            if (!map) {\n                throw new Error(\"AG Grid: \" + String(index) + \" not found\");\n            }\n            map.set(item[index], item);\n        });\n    };\n    MultiIndexMap.prototype.delete = function (item) {\n        var _this = this;\n        this.indexes.forEach(function (index) {\n            var map = _this.maps.get(index);\n            if (!map) {\n                throw new Error(\"AG Grid: \" + String(index) + \" not found\");\n            }\n            map.delete(item[index]);\n        });\n    };\n    MultiIndexMap.prototype.clear = function () {\n        this.maps.forEach(function (map) { return map.clear(); });\n    };\n    MultiIndexMap.prototype.getIterator = function (index) {\n        var map = this.maps.get(index);\n        if (!map) {\n            throw new Error(\"AG Grid: \" + String(index) + \" not found\");\n        }\n        return map.values();\n    };\n    MultiIndexMap.prototype.forEach = function (callback) {\n        var iterator = this.getIterator(this.indexes[0]);\n        var pointer;\n        while (pointer = iterator.next()) {\n            if (pointer.done)\n                break;\n            callback(pointer.value);\n        }\n    };\n    MultiIndexMap.prototype.find = function (callback) {\n        var iterator = this.getIterator(this.indexes[0]);\n        var pointer;\n        while (pointer = iterator.next()) {\n            if (pointer.done)\n                break;\n            if (callback(pointer.value)) {\n                return pointer.value;\n            }\n        }\n    };\n    MultiIndexMap.prototype.filter = function (predicate) {\n        var iterator = this.getIterator(this.indexes[0]);\n        var pointer;\n        var result = [];\n        while (pointer = iterator.next()) {\n            if (pointer.done)\n                break;\n            if (predicate(pointer.value)) {\n                result.push(pointer.value);\n            }\n        }\n        return result;\n    };\n    return MultiIndexMap;\n}());\n\nvar __extends$u = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$s = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __read$6 = (undefined && undefined.__read) || function (o, n) {\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n    if (!m) return o;\n    var i = m.call(o), r, ar = [], e;\n    try {\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n    }\n    catch (error) { e = { error: error }; }\n    finally {\n        try {\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\n        }\n        finally { if (e) throw e.error; }\n    }\n    return ar;\n};\nvar __spread$4 = (undefined && undefined.__spread) || function () {\n    for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read$6(arguments[i]));\n    return ar;\n};\nvar LazyCache = /** @class */ (function (_super) {\n    __extends$u(LazyCache, _super);\n    function LazyCache(store, numberOfRows, storeParams) {\n        var _this = _super.call(this) || this;\n        /**\n         * Indicates whether this is still the live dataset for this store (used for ignoring old requests after purge)\n         */\n        _this.live = true;\n        _this.store = store;\n        _this.numberOfRows = numberOfRows;\n        _this.isLastRowKnown = false;\n        _this.storeParams = storeParams;\n        return _this;\n    }\n    LazyCache.prototype.init = function () {\n        // initiate the node map to be indexed at 'index', 'id' and 'node' for quick look-up.\n        // it's important id isn't first, as stub nodes overwrite each-other, and the first index is\n        // used for iteration.\n        this.nodeMap = new MultiIndexMap('index', 'id', 'node');\n        this.nodeDisplayIndexMap = new Map();\n        this.nodesToRefresh = new Set();\n        this.defaultNodeIdPrefix = this.blockUtils.createNodeIdPrefix(this.store.getParentNode());\n        this.rowLoader = this.createManagedBean(new LazyBlockLoader(this, this.store.getParentNode(), this.storeParams));\n        this.getRowIdFunc = this.gridOptionsService.getRowIdFunc();\n        this.isMasterDetail = this.gridOptionsService.isMasterDetail();\n    };\n    LazyCache.prototype.destroyRowNodes = function () {\n        var _this = this;\n        this.numberOfRows = 0;\n        this.nodeMap.forEach(function (node) { return _this.blockUtils.destroyRowNode(node.node); });\n        this.nodeMap.clear();\n        this.nodeDisplayIndexMap.clear();\n        this.nodesToRefresh.clear();\n        this.live = false;\n    };\n    /**\n     * Get the row node for a specific display index from this store\n     * @param displayIndex the display index of the node to find\n     * @returns undefined if the node is not in the store bounds, otherwise will always return a node\n     */\n    LazyCache.prototype.getRowByDisplayIndex = function (displayIndex) {\n        var _a, _b, _c, _d;\n        // if index isn't in store, nothing to return\n        if (!this.store.isDisplayIndexInStore(displayIndex)) {\n            return undefined;\n        }\n        // first try to directly look this node up in the display index map\n        var node = this.nodeDisplayIndexMap.get(displayIndex);\n        if (node) {\n            // if we have the node, check if it needs refreshed when rendered\n            if (node.stub || node.__needsRefreshWhenVisible) {\n                this.rowLoader.queueLoadCheck();\n            }\n            return node;\n        }\n        // next check if this is the first row, if so return a stub node\n        // this is a performance optimisation, as it is the most common scenario\n        // and enables the node - 1 check to kick in more often.\n        if (displayIndex === this.store.getDisplayIndexStart()) {\n            return this.createStubNode(0, displayIndex);\n        }\n        // check if the row immediately prior is available in the store\n        var contiguouslyPreviousNode = this.nodeDisplayIndexMap.get(displayIndex - 1);\n        if (contiguouslyPreviousNode) {\n            // if previous row is master detail, and expanded, this node must be detail\n            if (this.isMasterDetail && contiguouslyPreviousNode.master && contiguouslyPreviousNode.expanded) {\n                return contiguouslyPreviousNode.detailNode;\n            }\n            // if previous row is expanded group, this node will belong to that group.\n            if (contiguouslyPreviousNode.expanded && ((_a = contiguouslyPreviousNode.childStore) === null || _a === void 0 ? void 0 : _a.isDisplayIndexInStore(displayIndex))) {\n                return (_b = contiguouslyPreviousNode.childStore) === null || _b === void 0 ? void 0 : _b.getRowUsingDisplayIndex(displayIndex);\n            }\n            // otherwise, row must be a stub node\n            var lazyCacheNode = this.nodeMap.getBy('node', contiguouslyPreviousNode);\n            return this.createStubNode(lazyCacheNode.index + 1, displayIndex);\n        }\n        var adjacentNodes = this.getSurroundingNodesByDisplayIndex(displayIndex);\n        // if no bounds skipped includes this, calculate from end index\n        if (adjacentNodes == null) {\n            var storeIndexFromEndIndex_1 = this.store.getRowCount() - (this.store.getDisplayIndexEnd() - displayIndex);\n            return this.createStubNode(storeIndexFromEndIndex_1, displayIndex);\n        }\n        var previousNode = adjacentNodes.previousNode, nextNode = adjacentNodes.nextNode;\n        // if the node before this node is expanded, this node might be a child of that node\n        if (previousNode && previousNode.node.expanded && ((_c = previousNode.node.childStore) === null || _c === void 0 ? void 0 : _c.isDisplayIndexInStore(displayIndex))) {\n            return (_d = previousNode.node.childStore) === null || _d === void 0 ? void 0 : _d.getRowUsingDisplayIndex(displayIndex);\n        }\n        // if we have the node after this node, we can calculate the store index of this node by the difference\n        // in display indexes between the two nodes.\n        if (nextNode) {\n            var displayIndexDiff = nextNode.node.rowIndex - displayIndex;\n            var newStoreIndex = nextNode.index - displayIndexDiff;\n            return this.createStubNode(newStoreIndex, displayIndex);\n        }\n        // if no next node, calculate from end index of this store\n        var storeIndexFromEndIndex = this.store.getRowCount() - (this.store.getDisplayIndexEnd() - displayIndex);\n        return this.createStubNode(storeIndexFromEndIndex, displayIndex);\n    };\n    /**\n     * Used for creating and positioning a stub node without firing a store updated event\n     */\n    LazyCache.prototype.createStubNode = function (storeIndex, displayIndex) {\n        var _this = this;\n        // bounds are acquired before creating the node, as otherwise it'll use it's own empty self to calculate\n        var rowBounds = this.store.getRowBounds(displayIndex);\n        var newNode = this.createRowAtIndex(storeIndex, null, function (node) {\n            node.setRowIndex(displayIndex);\n            node.setRowTop(rowBounds.rowTop);\n            _this.nodeDisplayIndexMap.set(displayIndex, node);\n        });\n        this.rowLoader.queueLoadCheck();\n        return newNode;\n    };\n    /**\n     * @param index The row index relative to this store\n     * @returns A rowNode at the given store index\n     */\n    LazyCache.prototype.getRowByStoreIndex = function (index) {\n        var _a;\n        return (_a = this.nodeMap.getBy('index', index)) === null || _a === void 0 ? void 0 : _a.node;\n    };\n    /**\n     * Given a number of rows, skips through the given sequence & row top reference (using default row height)\n     * @param numberOfRowsToSkip number of rows to skip over in the given sequence\n     * @param displayIndexSeq the sequence in which to skip\n     * @param nextRowTop the row top reference in which to skip\n     */\n    LazyCache.prototype.skipDisplayIndexes = function (numberOfRowsToSkip, displayIndexSeq, nextRowTop) {\n        if (numberOfRowsToSkip === 0) {\n            return;\n        }\n        var defaultRowHeight = this.gridOptionsService.getRowHeightAsNumber();\n        displayIndexSeq.skip(numberOfRowsToSkip);\n        nextRowTop.value += numberOfRowsToSkip * defaultRowHeight;\n    };\n    /**\n     * @param displayIndexSeq the number sequence for generating the display index of each row\n     * @param nextRowTop an object containing the next row top value intended to be modified by ref per row\n     */\n    LazyCache.prototype.setDisplayIndexes = function (displayIndexSeq, nextRowTop) {\n        // Create a map of display index nodes for access speed\n        this.nodeDisplayIndexMap.clear();\n        // create an object indexed by store index, as this will sort all of the nodes when we iterate\n        // the object\n        var orderedMap = {};\n        this.nodeMap.forEach(function (lazyNode) {\n            orderedMap[lazyNode.index] = lazyNode.node;\n        });\n        var lastIndex = -1;\n        // iterate over the nodes in order, setting the display index on each node.\n        for (var stringIndex in orderedMap) {\n            var node = orderedMap[stringIndex];\n            var numericIndex = Number(stringIndex);\n            // if any nodes aren't currently in the store, skip the display indexes too\n            var numberOfRowsToSkip_1 = (numericIndex - 1) - lastIndex;\n            this.skipDisplayIndexes(numberOfRowsToSkip_1, displayIndexSeq, nextRowTop);\n            // set this nodes index and row top\n            this.blockUtils.setDisplayIndex(node, displayIndexSeq, nextRowTop);\n            this.nodeDisplayIndexMap.set(node.rowIndex, node);\n            // store this index for skipping after this\n            lastIndex = numericIndex;\n        }\n        // need to skip rows until the end of this store\n        var numberOfRowsToSkip = (this.numberOfRows - 1) - lastIndex;\n        this.skipDisplayIndexes(numberOfRowsToSkip, displayIndexSeq, nextRowTop);\n        // this is not terribly efficient, and could probs be improved\n        this.purgeExcessRows();\n    };\n    LazyCache.prototype.getRowCount = function () {\n        return this.numberOfRows;\n    };\n    LazyCache.prototype.setRowCount = function (rowCount, isLastRowIndexKnown) {\n        if (rowCount < 0) {\n            throw new Error('AG Grid: setRowCount can only accept a positive row count.');\n        }\n        this.numberOfRows = rowCount;\n        if (isLastRowIndexKnown != null) {\n            this.isLastRowKnown = isLastRowIndexKnown;\n            if (isLastRowIndexKnown === false) {\n                this.numberOfRows += 1;\n            }\n        }\n        this.fireStoreUpdatedEvent();\n    };\n    LazyCache.prototype.getNodes = function () {\n        return this.nodeMap;\n    };\n    LazyCache.prototype.getNodeCachedByDisplayIndex = function (displayIndex) {\n        var _a;\n        return (_a = this.nodeDisplayIndexMap.get(displayIndex)) !== null && _a !== void 0 ? _a : null;\n    };\n    LazyCache.prototype.getNodesToRefresh = function () {\n        return this.nodesToRefresh;\n    };\n    /**\n     * @returns the previous and next loaded row nodes surrounding the given display index\n     */\n    LazyCache.prototype.getSurroundingNodesByDisplayIndex = function (displayIndex) {\n        var nextNode;\n        var previousNode;\n        this.nodeMap.forEach(function (lazyNode) {\n            // previous node\n            if (displayIndex > lazyNode.node.rowIndex) {\n                // get the largest previous node\n                if (previousNode == null || previousNode.node.rowIndex < lazyNode.node.rowIndex) {\n                    previousNode = lazyNode;\n                }\n                return;\n            }\n            // next node\n            // get the smallest next node\n            if (nextNode == null || nextNode.node.rowIndex > lazyNode.node.rowIndex) {\n                nextNode = lazyNode;\n                return;\n            }\n        });\n        if (!previousNode && !nextNode)\n            return null;\n        return { previousNode: previousNode, nextNode: nextNode };\n    };\n    /**\n     * Get or calculate the display index for a given store index\n     * @param storeIndex the rows index within this store\n     * @returns the rows visible display index relative to the grid\n     */\n    LazyCache.prototype.getDisplayIndexFromStoreIndex = function (storeIndex) {\n        var _a, _b;\n        var nodeAtIndex = this.nodeMap.getBy('index', storeIndex);\n        if (nodeAtIndex) {\n            return nodeAtIndex.node.rowIndex;\n        }\n        var nextNode;\n        var previousNode;\n        this.nodeMap.forEach(function (lazyNode) {\n            // previous node\n            if (storeIndex > lazyNode.index) {\n                // get the largest previous node\n                if (previousNode == null || previousNode.index < lazyNode.index) {\n                    previousNode = lazyNode;\n                }\n                return;\n            }\n            // next node\n            // get the smallest next node\n            if (nextNode == null || nextNode.index > lazyNode.index) {\n                nextNode = lazyNode;\n                return;\n            }\n        });\n        if (!nextNode) {\n            return this.store.getDisplayIndexEnd() - (this.numberOfRows - storeIndex);\n        }\n        if (!previousNode) {\n            return this.store.getDisplayIndexStart() + storeIndex;\n        }\n        var storeIndexDiff = storeIndex - previousNode.index;\n        var previousDisplayIndex = ((_b = (_a = previousNode.node.childStore) === null || _a === void 0 ? void 0 : _a.getDisplayIndexEnd()) !== null && _b !== void 0 ? _b : previousNode.node.rowIndex);\n        return previousDisplayIndex + storeIndexDiff;\n    };\n    /**\n     * Creates a new row and inserts it at the given index\n     * @param atStoreIndex the node index relative to this store\n     * @param data the data object to populate the node with\n     * @returns the new row node\n     */\n    LazyCache.prototype.createRowAtIndex = function (atStoreIndex, data, createNodeCallback) {\n        // make sure an existing node isn't being overwritten\n        var lazyNode = this.nodeMap.getBy('index', atStoreIndex);\n        // if node already exists, update it or destroy it\n        if (lazyNode) {\n            var node = lazyNode.node;\n            this.nodesToRefresh.delete(node);\n            node.__needsRefreshWhenVisible = false;\n            // if the node is the same, just update the content\n            if (this.doesNodeMatch(data, node)) {\n                this.blockUtils.updateDataIntoRowNode(node, data);\n                return node;\n            }\n            // if there's no id and this is an open group, protect this node from changes\n            if (this.getRowIdFunc == null && node.group && node.expanded) {\n                return node;\n            }\n            // destroy the old node, might be worth caching state here\n            this.destroyRowAtIndex(atStoreIndex);\n        }\n        // if the node already exists elsewhere, update it and move it to the new location\n        if (data && this.getRowIdFunc != null) {\n            var id = this.getRowId(data);\n            var lazyNode_1 = this.nodeMap.getBy('id', id);\n            if (lazyNode_1) {\n                // delete old lazy node so we can insert it at different location\n                this.nodeMap.delete(lazyNode_1);\n                var node = lazyNode_1.node, index = lazyNode_1.index;\n                this.blockUtils.updateDataIntoRowNode(node, data);\n                this.nodeMap.set({\n                    id: node.id,\n                    node: node,\n                    index: atStoreIndex\n                });\n                // mark all of the old block as needsVerify to trigger it for a refresh, as nodes\n                // should not be out of place\n                this.markBlockForVerify(index);\n                return node;\n            }\n        }\n        // node doesn't exist, create a new one\n        var newNode = this.blockUtils.createRowNode(this.store.getRowDetails());\n        if (data != null) {\n            var defaultId = this.getPrefixedId(this.store.getIdSequence().next());\n            this.blockUtils.setDataIntoRowNode(newNode, data, defaultId, undefined);\n            this.blockUtils.checkOpenByDefault(newNode);\n            this.nodeManager.addRowNode(newNode);\n        }\n        // add the new node to the store, has to be done after the display index is calculated so it doesn't take itself into account\n        this.nodeMap.set({\n            id: newNode.id,\n            node: newNode,\n            index: atStoreIndex,\n        });\n        if (createNodeCallback) {\n            createNodeCallback(newNode);\n        }\n        return newNode;\n    };\n    LazyCache.prototype.getBlockStates = function () {\n        var _this = this;\n        var blockCounts = {};\n        var blockStates = {};\n        this.nodeMap.forEach(function (_a) {\n            var _b;\n            var node = _a.node, index = _a.index;\n            var blockStart = _this.rowLoader.getBlockStartIndexForIndex(index);\n            if (!node.stub && !node.failedLoad) {\n                blockCounts[blockStart] = ((_b = blockCounts[blockStart]) !== null && _b !== void 0 ? _b : 0) + 1;\n            }\n            var rowState = 'loaded';\n            if (node.failedLoad) {\n                rowState = 'failed';\n            }\n            else if (_this.rowLoader.isRowLoading(blockStart)) {\n                rowState = 'loading';\n            }\n            else if (_this.nodesToRefresh.has(node) || node.stub) {\n                rowState = 'needsLoading';\n            }\n            if (!blockStates[blockStart]) {\n                blockStates[blockStart] = new Set();\n            }\n            blockStates[blockStart].add(rowState);\n        });\n        var statePriorityMap = {\n            loading: 4,\n            failed: 3,\n            needsLoading: 2,\n            loaded: 1,\n        };\n        var blockPrefix = this.blockUtils.createNodeIdPrefix(this.store.getParentNode());\n        var results = {};\n        Object.entries(blockStates).forEach(function (_a) {\n            var _b;\n            var _c = __read$6(_a, 2), blockStart = _c[0], uniqueStates = _c[1];\n            var sortedStates = __spread$4(uniqueStates).sort(function (a, b) { var _a, _b; return ((_a = statePriorityMap[a]) !== null && _a !== void 0 ? _a : 0) - ((_b = statePriorityMap[b]) !== null && _b !== void 0 ? _b : 0); });\n            var priorityState = sortedStates[0];\n            var blockNumber = Number(blockStart) / _this.rowLoader.getBlockSize();\n            var blockId = blockPrefix ? blockPrefix + \"-\" + blockNumber : String(blockNumber);\n            results[blockId] = {\n                blockNumber: blockNumber,\n                startRow: Number(blockStart),\n                endRow: Number(blockStart) + _this.rowLoader.getBlockSize(),\n                pageStatus: priorityState,\n                loadedRowCount: (_b = blockCounts[blockStart]) !== null && _b !== void 0 ? _b : 0,\n            };\n        });\n        return results;\n    };\n    LazyCache.prototype.destroyRowAtIndex = function (atStoreIndex) {\n        var lazyNode = this.nodeMap.getBy('index', atStoreIndex);\n        if (!lazyNode) {\n            return;\n        }\n        this.nodeMap.delete(lazyNode);\n        this.nodeDisplayIndexMap.delete(lazyNode.node.rowIndex);\n        this.nodesToRefresh.delete(lazyNode.node);\n        this.blockUtils.destroyRowNode(lazyNode.node);\n    };\n    LazyCache.prototype.getSsrmParams = function () {\n        return this.store.getSsrmParams();\n    };\n    /**\n     * @param id the base id to be prefixed\n     * @returns a node id with prefix if required\n     */\n    LazyCache.prototype.getPrefixedId = function (id) {\n        if (this.defaultNodeIdPrefix) {\n            return this.defaultNodeIdPrefix + '-' + id;\n        }\n        else {\n            return id.toString();\n        }\n    };\n    LazyCache.prototype.markBlockForVerify = function (rowIndex) {\n        var _a = __read$6(this.rowLoader.getBlockBoundsForIndex(rowIndex), 2), start = _a[0], end = _a[1];\n        var lazyNodesInRange = this.nodeMap.filter(function (lazyNode) { return lazyNode.index >= start && lazyNode.index < end; });\n        lazyNodesInRange.forEach(function (_a) {\n            var node = _a.node;\n            node.__needsRefreshWhenVisible = true;\n        });\n    };\n    LazyCache.prototype.doesNodeMatch = function (data, node) {\n        if (node.stub) {\n            return false;\n        }\n        if (this.getRowIdFunc != null) {\n            var id = this.getRowId(data);\n            return node.id === id;\n        }\n        return node.data === data;\n    };\n    /**\n     * Deletes any stub nodes not within the given range\n     */\n    LazyCache.prototype.purgeStubsOutsideOfViewport = function () {\n        var _this = this;\n        var firstRow = this.api.getFirstDisplayedRow();\n        var lastRow = this.api.getLastDisplayedRow();\n        var firstRowBlockStart = this.rowLoader.getBlockStartIndexForIndex(firstRow);\n        var _a = __read$6(this.rowLoader.getBlockBoundsForIndex(lastRow), 2); _a[0]; var lastRowBlockEnd = _a[1];\n        this.nodeMap.forEach(function (lazyNode) {\n            if (_this.rowLoader.isRowLoading(lazyNode.index)) {\n                return;\n            }\n            if (lazyNode.node.stub && (lazyNode.index < firstRowBlockStart || lazyNode.index > lastRowBlockEnd)) {\n                _this.destroyRowAtIndex(lazyNode.index);\n            }\n        });\n    };\n    LazyCache.prototype.getBlocksDistanceFromRow = function (nodes, otherDisplayIndex) {\n        var _this = this;\n        var blockDistanceToMiddle = {};\n        nodes.forEach(function (_a) {\n            var node = _a.node, index = _a.index;\n            var _b = __read$6(_this.rowLoader.getBlockBoundsForIndex(index), 2), blockStart = _b[0], blockEnd = _b[1];\n            if (blockStart in blockDistanceToMiddle) {\n                return;\n            }\n            var distStart = Math.abs(node.rowIndex - otherDisplayIndex);\n            var distEnd;\n            // may not have an end node if the block came back small \n            var lastLazyNode = _this.nodeMap.getBy('index', [blockEnd - 1]);\n            if (lastLazyNode)\n                distEnd = Math.abs(lastLazyNode.node.rowIndex - otherDisplayIndex);\n            var farthest = distEnd == null || distStart < distEnd ? distStart : distEnd;\n            blockDistanceToMiddle[blockStart] = farthest;\n        });\n        return Object.entries(blockDistanceToMiddle);\n    };\n    LazyCache.prototype.purgeExcessRows = function () {\n        var _this = this;\n        var _a;\n        // Delete all stub nodes which aren't in the viewport or already loading\n        this.purgeStubsOutsideOfViewport();\n        if (this.store.getDisplayIndexEnd() == null || this.storeParams.maxBlocksInCache == null) {\n            // if group is collapsed, or max blocks missing, ignore the event\n            return;\n        }\n        var firstRowInViewport = this.api.getFirstDisplayedRow();\n        var lastRowInViewport = this.api.getLastDisplayedRow();\n        // the start storeIndex of every block in this store\n        var allLoadedBlocks = new Set();\n        // the start storeIndex of every displayed block in this store\n        var blocksInViewport = new Set();\n        this.nodeMap.forEach(function (_a) {\n            var index = _a.index, node = _a.node;\n            var blockStart = _this.rowLoader.getBlockStartIndexForIndex(index);\n            allLoadedBlocks.add(blockStart);\n            var isInViewport = node.rowIndex >= firstRowInViewport && node.rowIndex <= lastRowInViewport;\n            if (isInViewport) {\n                blocksInViewport.add(blockStart);\n            }\n        });\n        // if the viewport is larger than the max blocks, then the viewport size is minimum cache size\n        var numberOfBlocksToRetain = Math.max(blocksInViewport.size, (_a = this.storeParams.maxBlocksInCache) !== null && _a !== void 0 ? _a : 0);\n        // ensure there is blocks that can be removed\n        var loadedBlockCount = allLoadedBlocks.size;\n        var blocksToRemove = loadedBlockCount - numberOfBlocksToRetain;\n        if (blocksToRemove <= 0) {\n            return;\n        }\n        // the first and last block in the viewport\n        var firstRowBlockStart = Number.MAX_SAFE_INTEGER;\n        var lastRowBlockStart = Number.MIN_SAFE_INTEGER;\n        blocksInViewport.forEach(function (blockStart) {\n            if (firstRowBlockStart > blockStart) {\n                firstRowBlockStart = blockStart;\n            }\n            if (lastRowBlockStart < blockStart) {\n                lastRowBlockStart = blockStart;\n            }\n        });\n        // all nodes which aren't cached or in the viewport, and so can be removed\n        var disposableNodes = this.nodeMap.filter(function (_a) {\n            var node = _a.node, index = _a.index;\n            var rowBlockStart = _this.rowLoader.getBlockStartIndexForIndex(index);\n            var rowBlockInViewport = rowBlockStart >= firstRowBlockStart && rowBlockStart <= lastRowBlockStart;\n            return !rowBlockInViewport && !_this.isNodeCached(node);\n        });\n        if (disposableNodes.length === 0) {\n            return;\n        }\n        var midViewportRow = firstRowInViewport + ((lastRowInViewport - firstRowInViewport) / 2);\n        var blockDistanceArray = this.getBlocksDistanceFromRow(disposableNodes, midViewportRow);\n        var blockSize = this.rowLoader.getBlockSize();\n        // sort the blocks by distance from middle of viewport\n        blockDistanceArray.sort(function (a, b) { return Math.sign(b[1] - a[1]); });\n        // remove excess blocks, starting from furthest from viewport\n        for (var i = 0; i < Math.min(blocksToRemove, blockDistanceArray.length); i++) {\n            var blockStart = Number(blockDistanceArray[i][0]);\n            for (var x = blockStart; x < blockStart + blockSize; x++) {\n                var lazyNode = this.nodeMap.getBy('index', x);\n                if (!lazyNode || this.isNodeCached(lazyNode.node)) {\n                    continue;\n                }\n                this.destroyRowAtIndex(x);\n            }\n        }\n    };\n    LazyCache.prototype.isNodeFocused = function (node) {\n        var focusedCell = this.focusService.getFocusCellToUseAfterRefresh();\n        if (!focusedCell) {\n            return false;\n        }\n        if (focusedCell.rowPinned != null) {\n            return false;\n        }\n        var hasFocus = focusedCell.rowIndex === node.rowIndex;\n        return hasFocus;\n    };\n    LazyCache.prototype.isNodeCached = function (node) {\n        return (node.isExpandable() && node.expanded) || this.isNodeFocused(node);\n    };\n    LazyCache.prototype.extractDuplicateIds = function (rows) {\n        var _this = this;\n        if (!this.getRowIdFunc == null) {\n            return [];\n        }\n        var newIds = new Set();\n        var duplicates = new Set();\n        rows.forEach(function (data) {\n            var id = _this.getRowId(data);\n            if (newIds.has(id)) {\n                duplicates.add(id);\n                return;\n            }\n            newIds.add(id);\n        });\n        return __spread$4(duplicates);\n    };\n    LazyCache.prototype.onLoadSuccess = function (firstRowIndex, numberOfRowsExpected, response) {\n        var _this = this;\n        var _a;\n        if (!this.live)\n            return;\n        var info = (_a = response.groupLevelInfo) !== null && _a !== void 0 ? _a : response.storeInfo;\n        this.store.setStoreInfo(info);\n        if (this.getRowIdFunc != null) {\n            var duplicates = this.extractDuplicateIds(response.rowData);\n            if (duplicates.length > 0) {\n                var duplicateIdText = duplicates.join(', ');\n                console.warn(\"AG Grid: Unable to display rows as duplicate row ids (\" + duplicateIdText + \") were returned by the getRowId callback. Please modify the getRowId callback to provide unique ids.\");\n                this.onLoadFailed(firstRowIndex, numberOfRowsExpected);\n                return;\n            }\n        }\n        var wasRefreshing = this.nodesToRefresh.size > 0;\n        response.rowData.forEach(function (data, responseRowIndex) {\n            var _a;\n            var rowIndex = firstRowIndex + responseRowIndex;\n            var nodeFromCache = _this.nodeMap.getBy('index', rowIndex);\n            // if stub, overwrite\n            if ((_a = nodeFromCache === null || nodeFromCache === void 0 ? void 0 : nodeFromCache.node) === null || _a === void 0 ? void 0 : _a.stub) {\n                _this.createRowAtIndex(rowIndex, data);\n                return;\n            }\n            if (nodeFromCache && _this.doesNodeMatch(data, nodeFromCache.node)) {\n                _this.blockUtils.updateDataIntoRowNode(nodeFromCache.node, data);\n                _this.nodesToRefresh.delete(nodeFromCache.node);\n                nodeFromCache.node.__needsRefreshWhenVisible = false;\n                return;\n            }\n            // create row will handle deleting the overwritten row\n            _this.createRowAtIndex(rowIndex, data);\n        });\n        var finishedRefreshing = this.nodesToRefresh.size === 0;\n        if (wasRefreshing && finishedRefreshing) {\n            this.fireRefreshFinishedEvent();\n        }\n        if (response.rowCount != undefined && response.rowCount !== -1) {\n            // if the rowCount has been provided, set the row count\n            this.numberOfRows = response.rowCount;\n            this.isLastRowKnown = true;\n        }\n        else if (numberOfRowsExpected > response.rowData.length) {\n            // infer the last row as the response came back short\n            this.numberOfRows = firstRowIndex + response.rowData.length;\n            this.isLastRowKnown = true;\n        }\n        else if (!this.isLastRowKnown) {\n            // add 1 for loading row, as we don't know the last row\n            var lastInferredRow = firstRowIndex + response.rowData.length + 1;\n            if (lastInferredRow > this.numberOfRows) {\n                this.numberOfRows = lastInferredRow;\n            }\n        }\n        if (this.isLastRowKnown) {\n            // delete any rows after the last index\n            var lazyNodesAfterStoreEnd = this.nodeMap.filter(function (lazyNode) { return lazyNode.index >= _this.numberOfRows; });\n            lazyNodesAfterStoreEnd.forEach(function (lazyNode) { return _this.destroyRowAtIndex(lazyNode.index); });\n        }\n        this.fireStoreUpdatedEvent();\n    };\n    LazyCache.prototype.fireRefreshFinishedEvent = function () {\n        var finishedRefreshing = this.nodesToRefresh.size === 0;\n        // if anything refreshing currently, skip.\n        if (!finishedRefreshing) {\n            return;\n        }\n        this.store.fireRefreshFinishedEvent();\n    };\n    LazyCache.prototype.isLastRowIndexKnown = function () {\n        return this.isLastRowKnown;\n    };\n    LazyCache.prototype.onLoadFailed = function (firstRowIndex, numberOfRowsExpected) {\n        if (!this.live)\n            return;\n        var failedNodes = this.nodeMap.filter(function (node) { return node.index >= firstRowIndex && node.index < firstRowIndex + numberOfRowsExpected; });\n        failedNodes.forEach(function (node) { return node.node.failedLoad = true; });\n        this.fireStoreUpdatedEvent();\n    };\n    LazyCache.prototype.markNodesForRefresh = function () {\n        var _this = this;\n        this.nodeMap.forEach(function (lazyNode) {\n            if (lazyNode.node.stub) {\n                return;\n            }\n            _this.nodesToRefresh.add(lazyNode.node);\n        });\n        this.rowLoader.queueLoadCheck();\n        if (this.isLastRowKnown && this.numberOfRows === 0) {\n            this.numberOfRows = 1;\n            this.isLastRowKnown = false;\n            this.fireStoreUpdatedEvent();\n        }\n    };\n    LazyCache.prototype.isNodeInCache = function (id) {\n        return !!this.nodeMap.getBy('id', id);\n    };\n    // gets called 1) row count changed 2) cache purged 3) items inserted\n    LazyCache.prototype.fireStoreUpdatedEvent = function () {\n        if (!this.live) {\n            return;\n        }\n        this.store.fireStoreUpdatedEvent();\n    };\n    LazyCache.prototype.getRowId = function (data) {\n        if (this.getRowIdFunc == null) {\n            return null;\n        }\n        // find rowNode using id\n        var level = this.store.getRowDetails().level;\n        var parentKeys = this.store.getParentNode().getGroupKeys();\n        var id = this.getRowIdFunc({\n            data: data,\n            parentKeys: parentKeys.length > 0 ? parentKeys : undefined,\n            level: level,\n        });\n        return String(id);\n    };\n    LazyCache.prototype.updateRowNodes = function (updates) {\n        var _this = this;\n        if (this.getRowIdFunc == null) {\n            // throw error, as this is type checked in the store. User likely abusing internal apis if here.\n            throw new Error('AG Grid: Insert transactions can only be applied when row ids are supplied.');\n        }\n        var updatedNodes = [];\n        updates.forEach(function (data) {\n            var id = _this.getRowId(data);\n            var lazyNode = _this.nodeMap.getBy('id', id);\n            if (lazyNode) {\n                _this.blockUtils.updateDataIntoRowNode(lazyNode.node, data);\n                updatedNodes.push(lazyNode.node);\n            }\n        });\n        return updatedNodes;\n    };\n    LazyCache.prototype.insertRowNodes = function (inserts, indexToAdd) {\n        var _this = this;\n        // if missing and we know the last row, we're inserting at the end\n        var addIndex = indexToAdd == null && this.isLastRowKnown ? this.store.getRowCount() : indexToAdd;\n        // can't insert nodes past the end of the store\n        if (addIndex == null || this.store.getRowCount() < addIndex) {\n            return [];\n        }\n        if (this.getRowIdFunc == null) {\n            // throw error, as this is type checked in the store. User likely abusing internal apis if here.\n            throw new Error('AG Grid: Insert transactions can only be applied when row ids are supplied.');\n        }\n        var uniqueInsertsMap = {};\n        inserts.forEach(function (data) {\n            var dataId = _this.getRowId(data);\n            if (dataId && _this.isNodeInCache(dataId)) {\n                return;\n            }\n            uniqueInsertsMap[dataId] = data;\n        });\n        var uniqueInserts = Object.values(uniqueInsertsMap);\n        var numberOfInserts = uniqueInserts.length;\n        if (numberOfInserts === 0) {\n            return [];\n        }\n        var nodesToMove = this.nodeMap.filter(function (node) { return node.index >= addIndex; });\n        // delete all nodes which need moved first, so they don't get overwritten\n        nodesToMove.forEach(function (lazyNode) { return _this.nodeMap.delete(lazyNode); });\n        // then move the nodes to their new locations\n        nodesToMove.forEach(function (lazyNode) {\n            _this.nodeMap.set({\n                node: lazyNode.node,\n                index: lazyNode.index + numberOfInserts,\n                id: lazyNode.id,\n            });\n        });\n        // increase the store size to accommodate\n        this.numberOfRows += numberOfInserts;\n        // finally insert the new rows\n        return uniqueInserts.map(function (data, uniqueInsertOffset) { return _this.createRowAtIndex(addIndex + uniqueInsertOffset, data); });\n    };\n    LazyCache.prototype.getOrderedNodeMap = function () {\n        var obj = {};\n        this.nodeMap.forEach(function (node) { return obj[node.index] = node; });\n        return obj;\n    };\n    LazyCache.prototype.clearDisplayIndexes = function () {\n        this.nodeDisplayIndexMap.clear();\n    };\n    LazyCache.prototype.removeRowNodes = function (idsToRemove) {\n        if (this.getRowIdFunc == null) {\n            // throw error, as this is type checked in the store. User likely abusing internal apis if here.\n            throw new Error('AG Grid: Insert transactions can only be applied when row ids are supplied.');\n        }\n        var removedNodes = [];\n        var nodesToVerify = [];\n        // track how many nodes have been deleted, as when we pass other nodes we need to shift them up\n        var deletedNodeCount = 0;\n        var remainingIdsToRemove = __spread$4(idsToRemove);\n        var allNodes = this.getOrderedNodeMap();\n        var contiguousIndex = -1;\n        var _loop_1 = function (stringIndex) {\n            contiguousIndex += 1;\n            var node = allNodes[stringIndex];\n            // finding the index allows the use of splice which should be slightly faster than both a check and filter\n            var matchIndex = remainingIdsToRemove.findIndex(function (idToRemove) { return idToRemove === node.id; });\n            if (matchIndex !== -1) {\n                // found node, remove it from nodes to remove\n                remainingIdsToRemove.splice(matchIndex, 1);\n                this_1.destroyRowAtIndex(Number(stringIndex));\n                removedNodes.push(node.node);\n                deletedNodeCount += 1;\n                return \"continue\";\n            }\n            // no nodes removed and this node doesn't match, so no need to shift\n            if (deletedNodeCount === 0) {\n                return \"continue\";\n            }\n            var numericStoreIndex = Number(stringIndex);\n            if (contiguousIndex !== numericStoreIndex) {\n                nodesToVerify.push(node.node);\n            }\n            // shift normal node up by number of deleted prior to this point\n            this_1.nodeMap.delete(allNodes[stringIndex]);\n            this_1.nodeMap.set({\n                id: node.id,\n                node: node.node,\n                index: numericStoreIndex - deletedNodeCount,\n            });\n        };\n        var this_1 = this;\n        for (var stringIndex in allNodes) {\n            _loop_1(stringIndex);\n        }\n        this.numberOfRows -= this.isLastRowIndexKnown() ? idsToRemove.length : deletedNodeCount;\n        if (remainingIdsToRemove.length > 0 && nodesToVerify.length > 0) {\n            nodesToVerify.forEach(function (node) { return node.__needsRefreshWhenVisible = true; });\n            this.rowLoader.queueLoadCheck();\n        }\n        return removedNodes;\n    };\n    __decorate$s([\n        Autowired('gridApi')\n    ], LazyCache.prototype, \"api\", void 0);\n    __decorate$s([\n        Autowired('ssrmBlockUtils')\n    ], LazyCache.prototype, \"blockUtils\", void 0);\n    __decorate$s([\n        Autowired('focusService')\n    ], LazyCache.prototype, \"focusService\", void 0);\n    __decorate$s([\n        Autowired('ssrmNodeManager')\n    ], LazyCache.prototype, \"nodeManager\", void 0);\n    __decorate$s([\n        PostConstruct\n    ], LazyCache.prototype, \"init\", null);\n    __decorate$s([\n        PreDestroy\n    ], LazyCache.prototype, \"destroyRowNodes\", null);\n    return LazyCache;\n}(BeanStub));\n\nvar __extends$t = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$r = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __read$5 = (undefined && undefined.__read) || function (o, n) {\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n    if (!m) return o;\n    var i = m.call(o), r, ar = [], e;\n    try {\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n    }\n    catch (error) { e = { error: error }; }\n    finally {\n        try {\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\n        }\n        finally { if (e) throw e.error; }\n    }\n    return ar;\n};\nvar __spread$3 = (undefined && undefined.__spread) || function () {\n    for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read$5(arguments[i]));\n    return ar;\n};\nvar LazyStore = /** @class */ (function (_super) {\n    __extends$t(LazyStore, _super);\n    function LazyStore(ssrmParams, storeParams, parentRowNode) {\n        var _this = _super.call(this) || this;\n        _this.idSequence = new NumberSequence();\n        _this.ssrmParams = ssrmParams;\n        _this.parentRowNode = parentRowNode;\n        _this.storeParams = storeParams;\n        _this.level = parentRowNode.level + 1;\n        _this.group = ssrmParams.rowGroupCols ? _this.level < ssrmParams.rowGroupCols.length : false;\n        _this.leafGroup = ssrmParams.rowGroupCols ? _this.level === ssrmParams.rowGroupCols.length - 1 : false;\n        _this.info = {};\n        return _this;\n    }\n    LazyStore.prototype.init = function () {\n        var numberOfRows = 1;\n        if (this.level === 0) {\n            numberOfRows = this.storeUtils.getServerSideInitialRowCount();\n        }\n        this.cache = this.createManagedBean(new LazyCache(this, numberOfRows, this.storeParams));\n        var usingTreeData = this.gridOptionsService.isTreeData();\n        if (!usingTreeData && this.group) {\n            var groupColVo = this.ssrmParams.rowGroupCols[this.level];\n            this.groupField = groupColVo.field;\n            this.rowGroupColumn = this.columnModel.getRowGroupColumns()[this.level];\n        }\n    };\n    LazyStore.prototype.destroyRowNodes = function () {\n        this.displayIndexStart = undefined;\n        this.displayIndexEnd = undefined;\n        this.destroyBean(this.cache);\n    };\n    /**\n     * Applies a given transaction to the data set within this store\n     *\n     * @param transaction an object containing delta instructions determining the changes to apply to this store\n     * @returns an object determining the status of this transaction and effected nodes\n     */\n    LazyStore.prototype.applyTransaction = function (transaction) {\n        var _this = this;\n        var _a, _b, _c;\n        var idFunc = this.gridOptionsService.getRowIdFunc();\n        if (!idFunc) {\n            console.warn('AG Grid: getRowId callback must be implemented for transactions to work. Transaction was ignored.');\n            return {\n                status: ServerSideTransactionResultStatus.Cancelled,\n            };\n        }\n        var applyCallback = this.gridOptionsService.getCallback('isApplyServerSideTransaction');\n        if (applyCallback) {\n            var params = {\n                transaction: transaction,\n                parentNode: this.parentRowNode,\n                storeInfo: this.info,\n                groupLevelInfo: this.info\n            };\n            var apply = applyCallback(params);\n            if (!apply) {\n                return { status: ServerSideTransactionResultStatus.Cancelled };\n            }\n        }\n        var updatedNodes = undefined;\n        if ((_a = transaction.update) === null || _a === void 0 ? void 0 : _a.length) {\n            updatedNodes = this.cache.updateRowNodes(transaction.update);\n        }\n        var insertedNodes = undefined;\n        if ((_b = transaction.add) === null || _b === void 0 ? void 0 : _b.length) {\n            var addIndex = transaction.addIndex;\n            if (addIndex != null && addIndex < 0) {\n                addIndex = undefined;\n            }\n            insertedNodes = this.cache.insertRowNodes(transaction.add, addIndex);\n        }\n        var removedNodes = undefined;\n        if ((_c = transaction.remove) === null || _c === void 0 ? void 0 : _c.length) {\n            var allIdsToRemove = transaction.remove.map(function (data) { return (idFunc({ level: _this.level, parentKeys: _this.parentRowNode.getGroupKeys(), data: data })); });\n            var allUniqueIdsToRemove = __spread$3(new Set(allIdsToRemove));\n            removedNodes = this.cache.removeRowNodes(allUniqueIdsToRemove);\n        }\n        this.updateSelectionAfterTransaction(updatedNodes, removedNodes);\n        return {\n            status: ServerSideTransactionResultStatus.Applied,\n            update: updatedNodes,\n            add: insertedNodes,\n            remove: removedNodes,\n        };\n    };\n    LazyStore.prototype.updateSelectionAfterTransaction = function (updatedNodes, removedNodes) {\n        var fireSelectionUpdatedEvent = false;\n        updatedNodes === null || updatedNodes === void 0 ? void 0 : updatedNodes.forEach(function (node) {\n            if (node.isSelected() && !node.selectable) {\n                node.setSelected(false, false, true, 'rowDataChanged');\n                fireSelectionUpdatedEvent = true;\n            }\n        });\n        removedNodes === null || removedNodes === void 0 ? void 0 : removedNodes.forEach(function (node) {\n            if (node.isSelected()) {\n                node.setSelected(false, false, true, 'rowDataChanged');\n                fireSelectionUpdatedEvent = true;\n            }\n        });\n        if (fireSelectionUpdatedEvent) {\n            var event_1 = {\n                type: Events.EVENT_SELECTION_CHANGED,\n                source: 'rowDataChanged'\n            };\n            this.eventService.dispatchEvent(event_1);\n        }\n    };\n    /**\n     * Clear the display indexes, used for fading rows out when stores are not being destroyed\n     */\n    LazyStore.prototype.clearDisplayIndexes = function () {\n        var _this = this;\n        this.displayIndexStart = undefined;\n        this.displayIndexEnd = undefined;\n        this.cache.getNodes().forEach(function (lazyNode) { return _this.blockUtils.clearDisplayIndex(lazyNode.node); });\n        this.cache.clearDisplayIndexes();\n    };\n    /**\n     * @returns an index representing the last sequentially displayed row in the grid for this store\n     */\n    LazyStore.prototype.getDisplayIndexStart = function () {\n        return this.displayIndexStart;\n    };\n    /**\n     * @returns the index representing one after the last sequentially displayed row in the grid for this store\n     */\n    LazyStore.prototype.getDisplayIndexEnd = function () {\n        return this.displayIndexEnd;\n    };\n    /**\n     * @returns the virtual size of this store\n     */\n    LazyStore.prototype.getRowCount = function () {\n        return this.cache.getRowCount();\n    };\n    /**\n     * Sets the current row count of the store, and whether the last row index is known\n     */\n    LazyStore.prototype.setRowCount = function (rowCount, isLastRowIndexKnown) {\n        this.cache.setRowCount(rowCount, isLastRowIndexKnown);\n    };\n    /**\n     * Given a display index, returns whether that row is within this store or a child store of this store\n     *\n     * @param displayIndex the visible index of a row\n     * @returns whether or not the row exists within this store\n     */\n    LazyStore.prototype.isDisplayIndexInStore = function (displayIndex) {\n        if (this.cache.getRowCount() === 0)\n            return false;\n        return this.displayIndexStart <= displayIndex && displayIndex < this.getDisplayIndexEnd();\n    };\n    /**\n     * Recursively sets up the display indexes and top position of every node belonging to this store.\n     *\n     * Called after a row height changes, or a store updated event.\n     *\n     * @param displayIndexSeq the number sequence for generating the display index of each row\n     * @param nextRowTop an object containing the next row top value intended to be modified by ref per row\n     */\n    LazyStore.prototype.setDisplayIndexes = function (displayIndexSeq, nextRowTop) {\n        this.displayIndexStart = displayIndexSeq.peek();\n        this.topPx = nextRowTop.value;\n        // delegate to the store to set the row display indexes\n        this.cache.setDisplayIndexes(displayIndexSeq, nextRowTop);\n        this.displayIndexEnd = displayIndexSeq.peek();\n        this.heightPx = nextRowTop.value - this.topPx;\n    };\n    /**\n     * Recursively applies a provided function to every node\n     *\n     * For the purpose of exclusively server side filtered stores, this is the same as getNodes().forEachDeepAfterFilterAndSort\n     */\n    LazyStore.prototype.forEachStoreDeep = function (callback, sequence) {\n        if (sequence === void 0) { sequence = new NumberSequence(); }\n        callback(this, sequence.next());\n        this.cache.getNodes().forEach(function (lazyNode) {\n            var childCache = lazyNode.node.childStore;\n            if (childCache) {\n                childCache.forEachStoreDeep(callback, sequence);\n            }\n        });\n    };\n    /**\n     * Recursively applies a provided function to every node\n     *\n     * For the purpose of exclusively server side filtered stores, this is the same as getNodes().forEachDeepAfterFilterAndSort\n     */\n    LazyStore.prototype.forEachNodeDeep = function (callback, sequence) {\n        if (sequence === void 0) { sequence = new NumberSequence(); }\n        this.cache.getNodes().forEach(function (lazyNode) {\n            callback(lazyNode.node, sequence.next());\n            var childCache = lazyNode.node.childStore;\n            if (childCache) {\n                childCache.forEachNodeDeep(callback, sequence);\n            }\n        });\n    };\n    /**\n     * Recursively applies a provided function to every node\n     *\n     * For the purpose of exclusively server side filtered stores, this is the same as getNodes().forEachDeep\n     */\n    LazyStore.prototype.forEachNodeDeepAfterFilterAndSort = function (callback, sequence) {\n        if (sequence === void 0) { sequence = new NumberSequence(); }\n        var orderedNodes = this.cache.getOrderedNodeMap();\n        for (var key in orderedNodes) {\n            var lazyNode = orderedNodes[key];\n            callback(lazyNode.node, sequence.next());\n            var childCache = lazyNode.node.childStore;\n            if (childCache) {\n                childCache.forEachNodeDeepAfterFilterAndSort(callback, sequence);\n            }\n        }\n    };\n    /**\n     * Removes the failed status from all nodes, and marks them as stub to encourage reloading\n     */\n    LazyStore.prototype.retryLoads = function () {\n        this.cache.getNodes().forEach(function (_a) {\n            var node = _a.node;\n            if (node.failedLoad) {\n                node.failedLoad = false;\n                node.__needsRefreshWhenVisible = true;\n                node.stub = true;\n            }\n        });\n        this.forEachChildStoreShallow(function (store) { return store.retryLoads(); });\n        this.fireStoreUpdatedEvent();\n    };\n    /**\n     * Given a display index, returns the row at that location.\n     *\n     * @param displayRowIndex the displayed index within the grid to search for\n     * @returns the row node if the display index falls within the store, if it didn't exist this will create a new stub to return\n     */\n    LazyStore.prototype.getRowUsingDisplayIndex = function (displayRowIndex) {\n        return this.cache.getRowByDisplayIndex(displayRowIndex);\n    };\n    /**\n     * Given a display index, returns the row top and height for the row at that index.\n     *\n     * @param displayIndex the display index of the node\n     * @returns an object containing the rowTop and rowHeight of the node at the given displayIndex\n     */\n    LazyStore.prototype.getRowBounds = function (displayIndex) {\n        var _a;\n        if (!this.isDisplayIndexInStore(displayIndex)) {\n            return null;\n        }\n        var thisNode = this.cache.getNodeCachedByDisplayIndex(displayIndex);\n        if (thisNode) {\n            var boundsFromRow = this.blockUtils.extractRowBounds(thisNode, displayIndex);\n            if (boundsFromRow) {\n                return boundsFromRow;\n            }\n        }\n        var _b = (_a = this.cache.getSurroundingNodesByDisplayIndex(displayIndex)) !== null && _a !== void 0 ? _a : {}, previousNode = _b.previousNode, nextNode = _b.nextNode;\n        // previous node may equal, or catch via detail node or child of group\n        if (previousNode) {\n            var boundsFromRow = this.blockUtils.extractRowBounds(previousNode.node, displayIndex);\n            if (boundsFromRow != null) {\n                return boundsFromRow;\n            }\n        }\n        var defaultRowHeight = this.gridOptionsService.getRowHeightAsNumber();\n        // if node after this, can calculate backwards (and ignore detail/grouping)\n        if (nextNode) {\n            var numberOfRowDiff_1 = Math.floor((nextNode.node.rowIndex - displayIndex) * defaultRowHeight);\n            return {\n                rowTop: nextNode.node.rowTop - numberOfRowDiff_1,\n                rowHeight: defaultRowHeight,\n            };\n        }\n        // otherwise calculate from end of store\n        var lastTop = this.topPx + this.heightPx;\n        var numberOfRowDiff = Math.floor((this.getDisplayIndexEnd() - displayIndex) * defaultRowHeight);\n        return {\n            rowTop: lastTop - numberOfRowDiff,\n            rowHeight: defaultRowHeight,\n        };\n    };\n    /**\n     * Given a vertical pixel, determines whether this store contains a row at that pixel\n     *\n     * @param pixel a vertical pixel position from the grid\n     * @returns whether that pixel points to a virtual space belonging to this store\n     */\n    LazyStore.prototype.isPixelInRange = function (pixel) {\n        return pixel >= this.topPx && pixel < (this.topPx + this.heightPx);\n    };\n    /**\n     * Given a vertical pixel, returns the row existing at that pixel location\n     *\n     * @param pixel a vertical pixel position from the grid\n     * @returns the display index at the given pixel location\n     */\n    LazyStore.prototype.getRowIndexAtPixel = function (pixel) {\n        if (pixel < this.topPx) {\n            return this.getDisplayIndexStart();\n        }\n        if (pixel >= this.topPx + this.heightPx) {\n            return this.getDisplayIndexEnd() - 1;\n        }\n        var distToPreviousNodeTop = Number.MAX_SAFE_INTEGER;\n        var previousNode = null;\n        var distToNextNodeTop = Number.MAX_SAFE_INTEGER;\n        var nextNode = null;\n        this.cache.getNodes().forEach(function (_a) {\n            var node = _a.node;\n            var distBetween = Math.abs(pixel - node.rowTop);\n            // previous node\n            if (node.rowTop < pixel) {\n                if (distBetween < distToPreviousNodeTop) {\n                    distToPreviousNodeTop = distBetween;\n                    previousNode = node;\n                }\n                return;\n            }\n            // next node\n            if (distBetween < distToNextNodeTop) {\n                distToNextNodeTop = distBetween;\n                nextNode = node;\n            }\n        });\n        // cast these back as typescript doesn't understand the forEach above\n        previousNode = previousNode;\n        nextNode = nextNode;\n        // previous node may equal, or catch via detail node or child of group\n        if (previousNode) {\n            var indexOfRow = this.blockUtils.getIndexAtPixel(previousNode, pixel);\n            if (indexOfRow != null) {\n                return indexOfRow;\n            }\n        }\n        var defaultRowHeight = this.gridOptionsService.getRowHeightAsNumber();\n        // if node after this, can calculate backwards (and ignore detail/grouping)\n        if (nextNode) {\n            var nextTop_1 = nextNode.rowTop;\n            var numberOfRowDiff_2 = Math.ceil((nextTop_1 - pixel) / defaultRowHeight);\n            return nextNode.rowIndex - numberOfRowDiff_2;\n        }\n        // otherwise calculate from end of store\n        var nextTop = this.topPx + this.heightPx;\n        var numberOfRowDiff = Math.floor((nextTop - pixel) / defaultRowHeight);\n        return this.getDisplayIndexEnd() - numberOfRowDiff;\n    };\n    /**\n     * Given a path of group keys, returns the child store for that group.\n     *\n     * @param keys the grouping path to the desired store\n     * @returns the child store for the given keys, or null if not found\n     */\n    LazyStore.prototype.getChildStore = function (keys) {\n        var _this = this;\n        return this.storeUtils.getChildStore(keys, this, function (key) {\n            var lazyNode = _this.cache.getNodes().find(function (lazyNode) { return lazyNode.node.key == key; });\n            if (!lazyNode) {\n                return null;\n            }\n            return lazyNode.node;\n        });\n    };\n    /**\n     * Executes a provided callback on each child store belonging to this store\n     *\n     * @param cb the callback to execute\n     */\n    LazyStore.prototype.forEachChildStoreShallow = function (cb) {\n        this.cache.getNodes().forEach(function (_a) {\n            var node = _a.node;\n            if (node.childStore) {\n                cb(node.childStore);\n            }\n        });\n    };\n    /**\n     * Executes after a change to sorting, determines recursively whether this store or a child requires refreshed.\n     *\n     * If a purge refresh occurs, the row count is preserved.\n     *\n     * @param params a set of properties pertaining to the sort changes\n     */\n    LazyStore.prototype.refreshAfterSort = function (params) {\n        var serverSortsAllLevels = this.storeUtils.isServerSideSortAllLevels();\n        if (serverSortsAllLevels || this.storeUtils.isServerRefreshNeeded(this.parentRowNode, this.ssrmParams.rowGroupCols, params)) {\n            var oldCount = this.cache.getRowCount();\n            this.destroyBean(this.cache);\n            this.cache = this.createManagedBean(new LazyCache(this, oldCount, this.storeParams));\n            this.fireStoreUpdatedEvent();\n            return;\n        }\n        // call refreshAfterSort on children, as we did not purge.\n        // if we did purge, no need to do this as all children were destroyed\n        this.forEachChildStoreShallow(function (store) { return store.refreshAfterSort(params); });\n    };\n    /**\n     * Executes after a change to filtering, determines recursively whether this store or a child requires refreshed.\n     *\n     * If a refresh occurs, the row count is reset.\n     *\n     * @param params a set of properties pertaining to the filter changes\n     */\n    LazyStore.prototype.refreshAfterFilter = function (params) {\n        var serverFiltersAllLevels = this.storeUtils.isServerSideFilterAllLevels();\n        if (serverFiltersAllLevels || this.storeUtils.isServerRefreshNeeded(this.parentRowNode, this.ssrmParams.rowGroupCols, params)) {\n            this.refreshStore(true);\n            return;\n        }\n        // call refreshAfterSort on children, as we did not purge.\n        // if we did purge, no need to do this as all children were destroyed\n        this.forEachChildStoreShallow(function (store) { return store.refreshAfterFilter(params); });\n    };\n    /**\n     * Marks all existing nodes as requiring reloaded, and triggers a load check\n     *\n     * @param purge whether to remove all nodes and data in favour of stub nodes\n     */\n    LazyStore.prototype.refreshStore = function (purge) {\n        if (purge) {\n            this.destroyBean(this.cache);\n            this.cache = this.createManagedBean(new LazyCache(this, 1, this.storeParams));\n            this.fireStoreUpdatedEvent();\n            return;\n        }\n        this.cache.markNodesForRefresh();\n    };\n    /**\n     * Used for pagination, given a local/store index, returns the display index of that row\n     *\n     * @param topLevelIndex the store index of a row\n     * @returns the display index for the given store index\n     */\n    LazyStore.prototype.getTopLevelRowDisplayedIndex = function (topLevelIndex) {\n        var displayIndex = this.cache.getDisplayIndexFromStoreIndex(topLevelIndex);\n        return displayIndex !== null && displayIndex !== void 0 ? displayIndex : topLevelIndex;\n    };\n    /**\n     * Used for pagination to determine if the last page is known, and for aria to determine if the last grid row is known\n     *\n     * @returns whether the last index of this store is known, or if lazy loading still required\n     */\n    LazyStore.prototype.isLastRowIndexKnown = function () {\n        return this.cache.isLastRowIndexKnown();\n    };\n    /**\n     * Used by the selection service to select a range of nodes\n     *\n     * @param firstInRange the first node in the range to find\n     * @param lastInRange the last node in the range to find\n     * @returns a range of nodes between firstInRange and lastInRange inclusive\n     */\n    LazyStore.prototype.getRowNodesInRange = function (firstInRange, lastInRange) {\n        // if only one node passed, we start the selection at the top\n        if (_.missing(firstInRange)) ;\n        return this.cache.getNodes().filter(function (_a) {\n            var node = _a.node;\n            return node.rowIndex >= firstInRange.rowIndex && node.rowIndex <= lastInRange.rowIndex;\n        }).map(function (_a) {\n            var node = _a.node;\n            return node;\n        });\n    };\n    /**\n     * Mutates a given array to add this stores state, and recursively add all the children store states.\n     *\n     * @param result a mutable results array\n     */\n    LazyStore.prototype.addStoreStates = function (result) {\n        result.push({\n            suppressInfiniteScroll: false,\n            route: this.parentRowNode.getGroupKeys(),\n            rowCount: this.getRowCount(),\n            lastRowIndexKnown: this.isLastRowIndexKnown(),\n            info: this.info,\n            maxBlocksInCache: this.storeParams.maxBlocksInCache,\n            cacheBlockSize: this.storeParams.cacheBlockSize,\n        });\n        this.forEachChildStoreShallow(function (childStore) { return childStore.addStoreStates(result); });\n    };\n    LazyStore.prototype.getIdSequence = function () {\n        return this.idSequence;\n    };\n    LazyStore.prototype.getParentNode = function () {\n        return this.parentRowNode;\n    };\n    LazyStore.prototype.getRowDetails = function () {\n        return {\n            field: this.groupField,\n            group: this.group,\n            leafGroup: this.leafGroup,\n            level: this.level,\n            parent: this.parentRowNode,\n            rowGroupColumn: this.rowGroupColumn,\n        };\n    };\n    LazyStore.prototype.getSsrmParams = function () {\n        return this.ssrmParams;\n    };\n    LazyStore.prototype.setStoreInfo = function (info) {\n        if (info) {\n            Object.assign(this.info, info);\n        }\n    };\n    // gets called 1) row count changed 2) cache purged\n    LazyStore.prototype.fireStoreUpdatedEvent = function () {\n        // this results in row model firing ModelUpdated.\n        // server side row model also updates the row indexes first\n        var event = {\n            type: Events.EVENT_STORE_UPDATED\n        };\n        this.eventService.dispatchEvent(event);\n    };\n    // gets called when row data updated, and no more refreshing needed\n    LazyStore.prototype.fireRefreshFinishedEvent = function () {\n        var event = {\n            type: Events.EVENT_STORE_REFRESHED,\n            route: this.parentRowNode.getRoute(),\n        };\n        this.eventService.dispatchEvent(event);\n    };\n    LazyStore.prototype.getBlockStates = function () {\n        return this.cache.getBlockStates();\n    };\n    LazyStore.prototype.getStoreBounds = function () {\n        return {\n            topPx: this.topPx,\n            heightPx: this.heightPx,\n        };\n    };\n    __decorate$r([\n        Autowired('ssrmBlockUtils')\n    ], LazyStore.prototype, \"blockUtils\", void 0);\n    __decorate$r([\n        Autowired('ssrmStoreUtils')\n    ], LazyStore.prototype, \"storeUtils\", void 0);\n    __decorate$r([\n        Autowired('columnModel')\n    ], LazyStore.prototype, \"columnModel\", void 0);\n    __decorate$r([\n        PostConstruct\n    ], LazyStore.prototype, \"init\", null);\n    __decorate$r([\n        PreDestroy\n    ], LazyStore.prototype, \"destroyRowNodes\", null);\n    return LazyStore;\n}(BeanStub));\n\nvar __extends$s = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$q = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __read$4 = (undefined && undefined.__read) || function (o, n) {\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n    if (!m) return o;\n    var i = m.call(o), r, ar = [], e;\n    try {\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n    }\n    catch (error) { e = { error: error }; }\n    finally {\n        try {\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\n        }\n        finally { if (e) throw e.error; }\n    }\n    return ar;\n};\nvar ServerSideRowModel = /** @class */ (function (_super) {\n    __extends$s(ServerSideRowModel, _super);\n    function ServerSideRowModel() {\n        var _this = _super !== null && _super.apply(this, arguments) || this;\n        _this.onRowHeightChanged_debounced = _.debounce(_this.onRowHeightChanged.bind(_this), 100);\n        _this.pauseStoreUpdateListening = false;\n        _this.started = false;\n        return _this;\n    }\n    // we don't implement as lazy row heights is not supported in this row model\n    ServerSideRowModel.prototype.ensureRowHeightsValid = function () { return false; };\n    ServerSideRowModel.prototype.start = function () {\n        this.started = true;\n        var datasource = this.gridOptionsService.get('serverSideDatasource');\n        if (datasource) {\n            this.setDatasource(datasource);\n        }\n    };\n    ServerSideRowModel.prototype.destroyDatasource = function () {\n        if (!this.datasource) {\n            return;\n        }\n        if (this.datasource.destroy) {\n            this.datasource.destroy();\n        }\n        this.rowRenderer.datasourceChanged();\n        this.datasource = undefined;\n    };\n    ServerSideRowModel.prototype.addEventListeners = function () {\n        this.addManagedListener(this.eventService, Events.EVENT_NEW_COLUMNS_LOADED, this.onColumnEverything.bind(this));\n        this.addManagedListener(this.eventService, Events.EVENT_STORE_UPDATED, this.onStoreUpdated.bind(this));\n        var resetListener = this.resetRootStore.bind(this);\n        this.addManagedListener(this.eventService, Events.EVENT_COLUMN_VALUE_CHANGED, resetListener);\n        this.addManagedListener(this.eventService, Events.EVENT_COLUMN_PIVOT_CHANGED, resetListener);\n        this.addManagedListener(this.eventService, Events.EVENT_COLUMN_ROW_GROUP_CHANGED, resetListener);\n        this.addManagedListener(this.eventService, Events.EVENT_COLUMN_PIVOT_MODE_CHANGED, resetListener);\n        this.verifyProps();\n    };\n    ServerSideRowModel.prototype.verifyProps = function () {\n        if (this.gridOptionsService.exists('initialGroupOrderComparator') || this.gridOptionsService.exists('defaultGroupOrderComparator')) {\n            var message_1 = \"AG Grid: initialGroupOrderComparator cannot be used with Server Side Row Model. If using Full Store, then provide the rows to the grid in the desired sort order. If using Infinite Scroll, then sorting is done on the server side, nothing to do with the client.\";\n            _.doOnce(function () { return console.warn(message_1); }, 'SSRM.InitialGroupOrderComparator');\n        }\n        if (this.gridOptionsService.isRowSelection() && !this.gridOptionsService.exists('getRowId')) {\n            var message_2 = \"AG Grid: getRowId callback must be provided for Server Side Row Model selection to work correctly.\";\n            _.doOnce(function () { return console.warn(message_2); }, 'SSRM.SelectionNeedsRowNodeIdFunc');\n        }\n    };\n    ServerSideRowModel.prototype.setDatasource = function (datasource) {\n        // sometimes React, due to async, can call gridApi.setDatasource() before we have started.\n        // this happens when React app does this:\n        //      useEffect(() => setDatasource(ds), []);\n        // thus if we set the datasource before the grid UI has finished initialising, we do not set it,\n        // and the ssrm.start() method will set the datasoure when the grid is ready.\n        if (!this.started) {\n            return;\n        }\n        this.destroyDatasource();\n        this.datasource = datasource;\n        this.resetRootStore();\n    };\n    ServerSideRowModel.prototype.isLastRowIndexKnown = function () {\n        var cache = this.getRootStore();\n        if (!cache) {\n            return false;\n        }\n        return cache.isLastRowIndexKnown();\n    };\n    ServerSideRowModel.prototype.onColumnEverything = function () {\n        // if first time, always reset\n        if (!this.storeParams) {\n            this.resetRootStore();\n            return;\n        }\n        // check if anything pertaining to fetching data has changed, and if it has, reset, but if\n        // it has not, don't reset\n        var rowGroupColumnVos = this.columnsToValueObjects(this.columnModel.getRowGroupColumns());\n        var valueColumnVos = this.columnsToValueObjects(this.columnModel.getValueColumns());\n        var pivotColumnVos = this.columnsToValueObjects(this.columnModel.getPivotColumns());\n        // compares two sets of columns, ensuring no columns have been added or removed (unless specified via allowRemovedColumns)\n        // if the columns are found, also ensures the field and aggFunc properties have not been changed.\n        var areColsSame = function (params) {\n            var oldColsMap = {};\n            params.oldCols.forEach(function (col) { return oldColsMap[col.id] = col; });\n            var allColsUnchanged = params.newCols.every(function (col) {\n                var equivalentCol = oldColsMap[col.id];\n                if (equivalentCol) {\n                    delete oldColsMap[col.id];\n                }\n                return equivalentCol && equivalentCol.field === col.field && equivalentCol.aggFunc === col.aggFunc;\n            });\n            var missingCols = !params.allowRemovedColumns && !!Object.values(oldColsMap).length;\n            return allColsUnchanged && !missingCols;\n        };\n        var sortModelDifferent = !_.jsonEquals(this.storeParams.sortModel, this.sortListener.extractSortModel());\n        var rowGroupDifferent = !areColsSame({\n            oldCols: this.storeParams.rowGroupCols,\n            newCols: rowGroupColumnVos,\n        });\n        var pivotDifferent = !areColsSame({\n            oldCols: this.storeParams.pivotCols,\n            newCols: pivotColumnVos,\n        });\n        var valuesDifferent = !!(rowGroupColumnVos === null || rowGroupColumnVos === void 0 ? void 0 : rowGroupColumnVos.length) && !areColsSame({\n            oldCols: this.storeParams.valueCols,\n            newCols: valueColumnVos,\n            allowRemovedColumns: true,\n        });\n        var resetRequired = sortModelDifferent || rowGroupDifferent || pivotDifferent || valuesDifferent;\n        if (resetRequired) {\n            this.resetRootStore();\n        }\n        else {\n            // cols may have changed even if we didn't do a reset. storeParams ref will be provided when getRows\n            // is called, so it's important to keep it up to date.\n            var newParams = this.createStoreParams();\n            this.storeParams.rowGroupCols = newParams.rowGroupCols;\n            this.storeParams.pivotCols = newParams.pivotCols;\n            this.storeParams.valueCols = newParams.valueCols;\n        }\n    };\n    ServerSideRowModel.prototype.destroyRootStore = function () {\n        if (!this.rootNode || !this.rootNode.childStore) {\n            return;\n        }\n        this.rootNode.childStore = this.destroyBean(this.rootNode.childStore);\n        this.nodeManager.clear();\n    };\n    ServerSideRowModel.prototype.refreshAfterSort = function (newSortModel, params) {\n        if (this.storeParams) {\n            this.storeParams.sortModel = newSortModel;\n        }\n        var rootStore = this.getRootStore();\n        if (!rootStore) {\n            return;\n        }\n        rootStore.refreshAfterSort(params);\n        this.onStoreUpdated();\n    };\n    ServerSideRowModel.prototype.resetRootStore = function () {\n        this.destroyRootStore();\n        this.rootNode = new RowNode(this.beans);\n        this.rootNode.group = true;\n        this.rootNode.level = -1;\n        if (this.datasource) {\n            this.storeParams = this.createStoreParams();\n            this.rootNode.childStore = this.createBean(this.storeFactory.createStore(this.storeParams, this.rootNode));\n            this.updateRowIndexesAndBounds();\n        }\n        // this event shows/hides 'no rows' overlay\n        var rowDataChangedEvent = {\n            type: Events.EVENT_ROW_DATA_UPDATED\n        };\n        this.eventService.dispatchEvent(rowDataChangedEvent);\n        // this gets the row to render rows (or remove the previously rendered rows, as it's blank to start).\n        // important to NOT pass in an event with keepRenderedRows or animate, as we want the renderer\n        // to treat the rows as new rows, as it's all new data\n        this.dispatchModelUpdated(true);\n    };\n    ServerSideRowModel.prototype.columnsToValueObjects = function (columns) {\n        var _this = this;\n        return columns.map(function (col) { return ({\n            id: col.getId(),\n            aggFunc: col.getAggFunc(),\n            displayName: _this.columnModel.getDisplayNameForColumn(col, 'model'),\n            field: col.getColDef().field\n        }); });\n    };\n    ServerSideRowModel.prototype.createStoreParams = function () {\n        var rowGroupColumnVos = this.columnsToValueObjects(this.columnModel.getRowGroupColumns());\n        var valueColumnVos = this.columnsToValueObjects(this.columnModel.getValueColumns());\n        var pivotColumnVos = this.columnsToValueObjects(this.columnModel.getPivotColumns());\n        var dynamicRowHeight = this.gridOptionsService.isGetRowHeightFunction();\n        var params = {\n            // the columns the user has grouped and aggregated by\n            valueCols: valueColumnVos,\n            rowGroupCols: rowGroupColumnVos,\n            pivotCols: pivotColumnVos,\n            pivotMode: this.columnModel.isPivotMode(),\n            // sort and filter model\n            filterModel: this.filterManager.getFilterModel(),\n            sortModel: this.sortListener.extractSortModel(),\n            datasource: this.datasource,\n            lastAccessedSequence: new NumberSequence(),\n            // blockSize: blockSize == null ? 100 : blockSize,\n            dynamicRowHeight: dynamicRowHeight\n        };\n        return params;\n    };\n    ServerSideRowModel.prototype.getParams = function () {\n        return this.storeParams;\n    };\n    ServerSideRowModel.prototype.dispatchModelUpdated = function (reset) {\n        if (reset === void 0) { reset = false; }\n        var modelUpdatedEvent = {\n            type: Events.EVENT_MODEL_UPDATED,\n            animate: !reset,\n            keepRenderedRows: !reset,\n            newPage: false,\n            newData: false\n        };\n        this.eventService.dispatchEvent(modelUpdatedEvent);\n    };\n    ServerSideRowModel.prototype.onStoreUpdated = function () {\n        // sometimes if doing a batch update, we do the batch first,\n        // then call onStoreUpdated manually. eg expandAll() method.\n        if (this.pauseStoreUpdateListening) {\n            return;\n        }\n        this.updateRowIndexesAndBounds();\n        this.dispatchModelUpdated();\n    };\n    /** This method is debounced. It is used for row auto-height. If we don't debounce,\n     * then the Row Models will end up recalculating each row position\n     * for each row height change and result in the Row Renderer laying out rows.\n     * This is particularly bad if using print layout, and showing eg 1,000 rows,\n     * each row will change it's height, causing Row Model to update 1,000 times.\n     */\n    ServerSideRowModel.prototype.onRowHeightChangedDebounced = function () {\n        this.onRowHeightChanged_debounced();\n    };\n    ServerSideRowModel.prototype.onRowHeightChanged = function () {\n        this.updateRowIndexesAndBounds();\n        this.dispatchModelUpdated();\n    };\n    ServerSideRowModel.prototype.updateRowIndexesAndBounds = function () {\n        var rootStore = this.getRootStore();\n        if (!rootStore) {\n            return;\n        }\n        rootStore.setDisplayIndexes(new NumberSequence(), { value: 0 });\n    };\n    ServerSideRowModel.prototype.retryLoads = function () {\n        var rootStore = this.getRootStore();\n        if (!rootStore) {\n            return;\n        }\n        rootStore.retryLoads();\n        this.onStoreUpdated();\n    };\n    ServerSideRowModel.prototype.getRow = function (index) {\n        var rootStore = this.getRootStore();\n        if (!rootStore) {\n            return undefined;\n        }\n        return rootStore.getRowUsingDisplayIndex(index);\n    };\n    ServerSideRowModel.prototype.expandAll = function (value) {\n        // if we don't pause store updating, we are needlessly\n        // recalculating row-indexes etc, and also getting rendering\n        // engine to re-render (listens on ModelUpdated event)\n        this.pauseStoreUpdateListening = true;\n        this.forEachNode(function (node) {\n            if (node.stub) {\n                return;\n            }\n            if (node.hasChildren()) {\n                node.setExpanded(value);\n            }\n        });\n        this.pauseStoreUpdateListening = false;\n        this.onStoreUpdated();\n    };\n    ServerSideRowModel.prototype.refreshAfterFilter = function (newFilterModel, params) {\n        if (this.storeParams) {\n            this.storeParams.filterModel = newFilterModel;\n        }\n        var rootStore = this.getRootStore();\n        if (!rootStore) {\n            return;\n        }\n        rootStore.refreshAfterFilter(params);\n        this.onStoreUpdated();\n    };\n    ServerSideRowModel.prototype.getRootStore = function () {\n        if (this.rootNode && this.rootNode.childStore) {\n            return this.rootNode.childStore;\n        }\n    };\n    ServerSideRowModel.prototype.getRowCount = function () {\n        var rootStore = this.getRootStore();\n        if (!rootStore) {\n            return 0;\n        }\n        return rootStore.getDisplayIndexEnd();\n    };\n    ServerSideRowModel.prototype.getTopLevelRowCount = function () {\n        var rootStore = this.getRootStore();\n        if (!rootStore) {\n            return 1;\n        }\n        return rootStore.getRowCount();\n    };\n    ServerSideRowModel.prototype.getTopLevelRowDisplayedIndex = function (topLevelIndex) {\n        var rootStore = this.getRootStore();\n        if (!rootStore) {\n            return topLevelIndex;\n        }\n        return rootStore.getTopLevelRowDisplayedIndex(topLevelIndex);\n    };\n    ServerSideRowModel.prototype.getRowBounds = function (index) {\n        var rootStore = this.getRootStore();\n        if (!rootStore) {\n            var rowHeight = this.gridOptionsService.getRowHeightAsNumber();\n            return {\n                rowTop: 0,\n                rowHeight: rowHeight\n            };\n        }\n        return rootStore.getRowBounds(index);\n    };\n    ServerSideRowModel.prototype.getBlockStates = function () {\n        var root = this.getRootStore();\n        if (!root) {\n            return undefined;\n        }\n        var states = {};\n        root.forEachStoreDeep(function (store) {\n            if (store instanceof FullStore) {\n                var _a = store.getBlockStateJson(), id = _a.id, state = _a.state;\n                states[id] = state;\n            }\n            else if (store instanceof LazyStore) {\n                Object.entries(store.getBlockStates()).forEach(function (_a) {\n                    var _b = __read$4(_a, 2), block = _b[0], state = _b[1];\n                    states[block] = state;\n                });\n            }\n            else {\n                throw new Error('AG Grid: Unsupported store type');\n            }\n        });\n        return states;\n    };\n    ServerSideRowModel.prototype.getRowIndexAtPixel = function (pixel) {\n        var rootStore = this.getRootStore();\n        if (pixel <= 0 || !rootStore) {\n            return 0;\n        }\n        return rootStore.getRowIndexAtPixel(pixel);\n    };\n    ServerSideRowModel.prototype.isEmpty = function () {\n        return false;\n    };\n    ServerSideRowModel.prototype.isRowsToRender = function () {\n        return this.getRootStore() != null && this.getRowCount() > 0;\n    };\n    ServerSideRowModel.prototype.getType = function () {\n        return 'serverSide';\n    };\n    ServerSideRowModel.prototype.forEachNode = function (callback) {\n        var rootStore = this.getRootStore();\n        if (!rootStore) {\n            return;\n        }\n        rootStore.forEachNodeDeep(callback);\n    };\n    ServerSideRowModel.prototype.forEachNodeAfterFilterAndSort = function (callback) {\n        var rootStore = this.getRootStore();\n        if (!rootStore) {\n            return;\n        }\n        rootStore.forEachNodeDeepAfterFilterAndSort(callback);\n    };\n    ServerSideRowModel.prototype.executeOnStore = function (route, callback) {\n        var rootStore = this.getRootStore();\n        if (!rootStore) {\n            return;\n        }\n        var storeToExecuteOn = rootStore.getChildStore(route);\n        if (storeToExecuteOn) {\n            callback(storeToExecuteOn);\n        }\n    };\n    ServerSideRowModel.prototype.refreshStore = function (params) {\n        if (params === void 0) { params = {}; }\n        var route = params.route ? params.route : [];\n        this.executeOnStore(route, function (store) { return store.refreshStore(params.purge == true); });\n    };\n    ServerSideRowModel.prototype.getStoreState = function () {\n        var res = [];\n        var rootStore = this.getRootStore();\n        if (rootStore) {\n            rootStore.addStoreStates(res);\n        }\n        return res;\n    };\n    ServerSideRowModel.prototype.getNodesInRangeForSelection = function (firstInRange, lastInRange) {\n        if (!_.exists(firstInRange)) {\n            return [];\n        }\n        if (!lastInRange) {\n            return [firstInRange];\n        }\n        var startIndex = firstInRange.rowIndex;\n        var endIndex = lastInRange.rowIndex;\n        if (startIndex === null || endIndex === null) {\n            return [firstInRange];\n        }\n        var nodeRange = [];\n        var _a = __read$4([startIndex, endIndex].sort(function (a, b) { return a - b; }), 2), firstIndex = _a[0], lastIndex = _a[1];\n        this.forEachNode(function (node) {\n            var thisRowIndex = node.rowIndex;\n            if (thisRowIndex == null || node.stub) {\n                return;\n            }\n            if (thisRowIndex >= firstIndex && thisRowIndex <= lastIndex) {\n                nodeRange.push(node);\n            }\n        });\n        var rowsAreContiguous = nodeRange.every(function (node, idx, all) {\n            if (idx === 0) {\n                return node.rowIndex === firstIndex;\n            }\n            return all[idx - 1].rowIndex === (node.rowIndex - 1);\n        });\n        // don't allow range selection if we don't have the full range of rows\n        if (!rowsAreContiguous || nodeRange.length !== (lastIndex - firstIndex + 1)) {\n            return [firstInRange];\n        }\n        return nodeRange;\n    };\n    ServerSideRowModel.prototype.getRowNode = function (id) {\n        var result;\n        this.forEachNode(function (rowNode) {\n            if (rowNode.id === id) {\n                result = rowNode;\n            }\n            if (rowNode.detailNode && rowNode.detailNode.id === id) {\n                result = rowNode.detailNode;\n            }\n        });\n        return result;\n    };\n    ServerSideRowModel.prototype.isRowPresent = function (rowNode) {\n        var foundRowNode = this.getRowNode(rowNode.id);\n        return !!foundRowNode;\n    };\n    ServerSideRowModel.prototype.setRowCount = function (rowCount, lastRowIndexKnown) {\n        var rootStore = this.getRootStore();\n        if (rootStore) {\n            if (rootStore instanceof LazyStore) {\n                rootStore.setRowCount(rowCount, lastRowIndexKnown);\n                return;\n            }\n            console.error('AG Grid: Infinite scrolling must be enabled in order to set the row count.');\n        }\n    };\n    __decorate$q([\n        Autowired('columnModel')\n    ], ServerSideRowModel.prototype, \"columnModel\", void 0);\n    __decorate$q([\n        Autowired('filterManager')\n    ], ServerSideRowModel.prototype, \"filterManager\", void 0);\n    __decorate$q([\n        Autowired('rowRenderer')\n    ], ServerSideRowModel.prototype, \"rowRenderer\", void 0);\n    __decorate$q([\n        Autowired('ssrmSortService')\n    ], ServerSideRowModel.prototype, \"sortListener\", void 0);\n    __decorate$q([\n        Autowired('ssrmNodeManager')\n    ], ServerSideRowModel.prototype, \"nodeManager\", void 0);\n    __decorate$q([\n        Autowired('ssrmStoreFactory')\n    ], ServerSideRowModel.prototype, \"storeFactory\", void 0);\n    __decorate$q([\n        Autowired('beans')\n    ], ServerSideRowModel.prototype, \"beans\", void 0);\n    __decorate$q([\n        PreDestroy\n    ], ServerSideRowModel.prototype, \"destroyDatasource\", null);\n    __decorate$q([\n        PostConstruct\n    ], ServerSideRowModel.prototype, \"addEventListeners\", null);\n    __decorate$q([\n        PreDestroy\n    ], ServerSideRowModel.prototype, \"destroyRootStore\", null);\n    ServerSideRowModel = __decorate$q([\n        Bean('rowModel')\n    ], ServerSideRowModel);\n    return ServerSideRowModel;\n}(BeanStub));\n\nvar __extends$r = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$p = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar StoreUtils = /** @class */ (function (_super) {\n    __extends$r(StoreUtils, _super);\n    function StoreUtils() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    StoreUtils.prototype.loadFromDatasource = function (p) {\n        var storeParams = p.storeParams, parentBlock = p.parentBlock, parentNode = p.parentNode;\n        var groupKeys = parentNode.getGroupKeys();\n        if (!storeParams.datasource) {\n            return;\n        }\n        var request = {\n            startRow: p.startRow,\n            endRow: p.endRow,\n            rowGroupCols: storeParams.rowGroupCols,\n            valueCols: storeParams.valueCols,\n            pivotCols: storeParams.pivotCols,\n            pivotMode: storeParams.pivotMode,\n            groupKeys: groupKeys,\n            filterModel: storeParams.filterModel,\n            sortModel: storeParams.sortModel\n        };\n        var getRowsParams = {\n            successCallback: p.successCallback,\n            success: p.success,\n            failCallback: p.failCallback,\n            fail: p.fail,\n            request: request,\n            parentNode: p.parentNode,\n            api: this.gridApi,\n            columnApi: this.columnApi,\n            context: this.gridOptionsService.context\n        };\n        window.setTimeout(function () {\n            if (!storeParams.datasource || !parentBlock.isAlive()) {\n                // failCallback() is important, to reduce the 'RowNodeBlockLoader.activeBlockLoadsCount' count\n                p.failCallback();\n                return;\n            }\n            storeParams.datasource.getRows(getRowsParams);\n        }, 0);\n    };\n    StoreUtils.prototype.getChildStore = function (keys, currentCache, findNodeFunc) {\n        if (_.missingOrEmpty(keys)) {\n            return currentCache;\n        }\n        var nextKey = keys[0];\n        var nextNode = findNodeFunc(nextKey);\n        if (nextNode) {\n            var keyListForNextLevel = keys.slice(1, keys.length);\n            var nextStore = nextNode.childStore;\n            return nextStore ? nextStore.getChildStore(keyListForNextLevel) : null;\n        }\n        return null;\n    };\n    StoreUtils.prototype.isServerRefreshNeeded = function (parentRowNode, rowGroupCols, params) {\n        if (params.valueColChanged || params.secondaryColChanged) {\n            return true;\n        }\n        var level = parentRowNode.level + 1;\n        var grouping = level < rowGroupCols.length;\n        var leafNodes = !grouping;\n        if (leafNodes) {\n            return true;\n        }\n        var colIdThisGroup = rowGroupCols[level].id;\n        var actionOnThisGroup = params.changedColumns.indexOf(colIdThisGroup) > -1;\n        if (actionOnThisGroup) {\n            return true;\n        }\n        var allCols = this.columnModel.getAllGridColumns();\n        var affectedGroupCols = allCols\n            // find all impacted cols which also a group display column\n            .filter(function (col) { return col.getColDef().showRowGroup && params.changedColumns.includes(col.getId()); })\n            .map(function (col) { return col.getColDef().showRowGroup; })\n            // if displaying all groups, or displaying the effected col for this group, refresh\n            .some(function (group) { return group === true || group === colIdThisGroup; });\n        return affectedGroupCols;\n    };\n    StoreUtils.prototype.getServerSideInitialRowCount = function () {\n        var rowCount = this.gridOptionsService.getNum('serverSideInitialRowCount');\n        if (typeof rowCount === 'number' && rowCount > 0) {\n            return rowCount;\n        }\n        return 1;\n    };\n    StoreUtils.prototype.assertRowModelIsServerSide = function (key) {\n        if (!this.gridOptionsService.isRowModelType('serverSide')) {\n            _.doOnce(function () { return console.warn(\"AG Grid: The '\" + key + \"' property can only be used with the Server Side Row Model.\"); }, key);\n            return false;\n        }\n        return true;\n    };\n    StoreUtils.prototype.assertNotTreeData = function (key) {\n        if (this.gridOptionsService.is('treeData')) {\n            _.doOnce(function () { return console.warn(\"AG Grid: The '\" + key + \"' property cannot be used while using tree data.\"); }, key + '_TreeData');\n            return false;\n        }\n        return true;\n    };\n    StoreUtils.prototype.isServerSideSortAllLevels = function () {\n        return this.gridOptionsService.is('serverSideSortAllLevels') && this.assertRowModelIsServerSide('serverSideSortAllLevels');\n    };\n    StoreUtils.prototype.isServerSideFilterAllLevels = function () {\n        return this.gridOptionsService.is('serverSideFilterAllLevels') && this.assertRowModelIsServerSide('serverSideFilterAllLevels');\n    };\n    StoreUtils.prototype.isServerSideSortOnServer = function () {\n        return this.gridOptionsService.is('serverSideSortOnServer') && this.assertRowModelIsServerSide('serverSideSortOnServer') && this.assertNotTreeData('serverSideSortOnServer');\n    };\n    StoreUtils.prototype.isServerSideFilterOnServer = function () {\n        return this.gridOptionsService.is('serverSideFilterOnServer') && this.assertRowModelIsServerSide('serverSideFilterOnServer') && this.assertNotTreeData('serverSideFilterOnServer');\n    };\n    __decorate$p([\n        Autowired('columnApi')\n    ], StoreUtils.prototype, \"columnApi\", void 0);\n    __decorate$p([\n        Autowired('columnModel')\n    ], StoreUtils.prototype, \"columnModel\", void 0);\n    __decorate$p([\n        Autowired('gridApi')\n    ], StoreUtils.prototype, \"gridApi\", void 0);\n    StoreUtils = __decorate$p([\n        Bean('ssrmStoreUtils')\n    ], StoreUtils);\n    return StoreUtils;\n}(BeanStub));\n\nvar __extends$q = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$o = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar GROUP_MISSING_KEY_ID = 'ag-Grid-MissingKey';\nvar BlockUtils = /** @class */ (function (_super) {\n    __extends$q(BlockUtils, _super);\n    function BlockUtils() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    BlockUtils.prototype.postConstruct = function () {\n        this.rowHeight = this.gridOptionsService.getRowHeightAsNumber();\n        this.usingTreeData = this.gridOptionsService.isTreeData();\n        this.usingMasterDetail = this.gridOptionsService.isMasterDetail();\n    };\n    BlockUtils.prototype.createRowNode = function (params) {\n        var rowNode = new RowNode(this.beans);\n        var rowHeight = params.rowHeight != null ? params.rowHeight : this.rowHeight;\n        rowNode.setRowHeight(rowHeight);\n        rowNode.group = params.group;\n        rowNode.leafGroup = params.leafGroup;\n        rowNode.level = params.level;\n        rowNode.uiLevel = params.level;\n        rowNode.parent = params.parent;\n        // stub gets set to true here, and then false when this rowNode gets it's data\n        rowNode.stub = true;\n        rowNode.__needsRefreshWhenVisible = false;\n        if (rowNode.group) {\n            rowNode.expanded = false;\n            rowNode.field = params.field;\n            rowNode.rowGroupColumn = params.rowGroupColumn;\n        }\n        return rowNode;\n    };\n    BlockUtils.prototype.destroyRowNodes = function (rowNodes) {\n        var _this = this;\n        if (rowNodes) {\n            rowNodes.forEach(function (row) { return _this.destroyRowNode(row); });\n        }\n    };\n    BlockUtils.prototype.destroyRowNode = function (rowNode, preserveStore) {\n        if (preserveStore === void 0) { preserveStore = false; }\n        if (rowNode.childStore && !preserveStore) {\n            this.destroyBean(rowNode.childStore);\n            rowNode.childStore = null;\n        }\n        // this is needed, so row render knows to fade out the row, otherwise it\n        // sees row top is present, and thinks the row should be shown. maybe\n        // rowNode should have a flag on whether it is visible???\n        rowNode.clearRowTopAndRowIndex();\n        if (rowNode.id != null) {\n            this.nodeManager.removeNode(rowNode);\n        }\n    };\n    BlockUtils.prototype.setTreeGroupInfo = function (rowNode) {\n        rowNode.updateHasChildren();\n        var getKeyFunc = this.gridOptionsService.get('getServerSideGroupKey');\n        if (rowNode.hasChildren() && getKeyFunc != null) {\n            rowNode.key = getKeyFunc(rowNode.data);\n        }\n        if (!rowNode.hasChildren() && rowNode.childStore != null) {\n            this.destroyBean(rowNode.childStore);\n            rowNode.childStore = null;\n            rowNode.expanded = false;\n        }\n    };\n    BlockUtils.prototype.setRowGroupInfo = function (rowNode) {\n        rowNode.key = this.valueService.getValue(rowNode.rowGroupColumn, rowNode);\n        if (rowNode.key === null || rowNode.key === undefined) {\n            _.doOnce(function () {\n                console.warn(\"AG Grid: null and undefined values are not allowed for server side row model keys\");\n                if (rowNode.rowGroupColumn) {\n                    console.warn(\"column = \" + rowNode.rowGroupColumn.getId());\n                }\n                console.warn(\"data is \", rowNode.data);\n            }, 'ServerSideBlock-CannotHaveNullOrUndefinedForKey');\n        }\n    };\n    BlockUtils.prototype.setMasterDetailInfo = function (rowNode) {\n        var isMasterFunc = this.gridOptionsService.get('isRowMaster');\n        if (isMasterFunc != null) {\n            rowNode.master = isMasterFunc(rowNode.data);\n        }\n        else {\n            rowNode.master = true;\n        }\n    };\n    BlockUtils.prototype.updateDataIntoRowNode = function (rowNode, data) {\n        rowNode.updateData(data);\n        if (this.usingTreeData) {\n            this.setTreeGroupInfo(rowNode);\n            this.setChildCountIntoRowNode(rowNode);\n        }\n        else if (rowNode.group) {\n            this.setChildCountIntoRowNode(rowNode);\n            // it's not possible for a node to change whether it's a group or not\n            // when doing row grouping (as only rows at certain levels are groups),\n            // so nothing to do here\n        }\n        else if (this.usingMasterDetail) ;\n    };\n    BlockUtils.prototype.setDataIntoRowNode = function (rowNode, data, defaultId, cachedRowHeight) {\n        rowNode.stub = false;\n        if (_.exists(data)) {\n            rowNode.setDataAndId(data, defaultId);\n            if (this.usingTreeData) {\n                this.setTreeGroupInfo(rowNode);\n            }\n            else if (rowNode.group) {\n                this.setRowGroupInfo(rowNode);\n            }\n            else if (this.usingMasterDetail) {\n                this.setMasterDetailInfo(rowNode);\n            }\n        }\n        else {\n            rowNode.setDataAndId(undefined, undefined);\n            rowNode.key = null;\n        }\n        if (this.usingTreeData || rowNode.group) {\n            this.setGroupDataIntoRowNode(rowNode);\n            this.setChildCountIntoRowNode(rowNode);\n        }\n        // this needs to be done AFTER setGroupDataIntoRowNode(), as the height can depend on the group data\n        // getting set, if it's a group node and colDef.autoHeight=true\n        if (_.exists(data)) {\n            rowNode.setRowHeight(this.gridOptionsService.getRowHeightForNode(rowNode, false, cachedRowHeight).height);\n        }\n    };\n    BlockUtils.prototype.setChildCountIntoRowNode = function (rowNode) {\n        var getChildCount = this.gridOptionsService.get('getChildCount');\n        if (getChildCount) {\n            rowNode.setAllChildrenCount(getChildCount(rowNode.data));\n        }\n    };\n    BlockUtils.prototype.setGroupDataIntoRowNode = function (rowNode) {\n        var _this = this;\n        var groupDisplayCols = this.columnModel.getGroupDisplayColumns();\n        var usingTreeData = this.gridOptionsService.isTreeData();\n        groupDisplayCols.forEach(function (col) {\n            if (rowNode.groupData == null) {\n                rowNode.groupData = {};\n            }\n            if (usingTreeData) {\n                rowNode.groupData[col.getColId()] = rowNode.key;\n            }\n            else if (col.isRowGroupDisplayed(rowNode.rowGroupColumn.getId())) {\n                var groupValue = _this.valueService.getValue(rowNode.rowGroupColumn, rowNode);\n                rowNode.groupData[col.getColId()] = groupValue;\n            }\n        });\n    };\n    BlockUtils.prototype.clearDisplayIndex = function (rowNode) {\n        rowNode.clearRowTopAndRowIndex();\n        var hasChildStore = rowNode.hasChildren() && _.exists(rowNode.childStore);\n        if (hasChildStore) {\n            var childStore = rowNode.childStore;\n            childStore.clearDisplayIndexes();\n        }\n        var hasDetailNode = rowNode.master && rowNode.detailNode;\n        if (hasDetailNode) {\n            rowNode.detailNode.clearRowTopAndRowIndex();\n        }\n    };\n    BlockUtils.prototype.setDisplayIndex = function (rowNode, displayIndexSeq, nextRowTop) {\n        // set this row\n        rowNode.setRowIndex(displayIndexSeq.next());\n        rowNode.setRowTop(nextRowTop.value);\n        nextRowTop.value += rowNode.rowHeight;\n        // set child for master / detail\n        var hasDetailRow = rowNode.master;\n        if (hasDetailRow) {\n            if (rowNode.expanded && rowNode.detailNode) {\n                rowNode.detailNode.setRowIndex(displayIndexSeq.next());\n                rowNode.detailNode.setRowTop(nextRowTop.value);\n                nextRowTop.value += rowNode.detailNode.rowHeight;\n            }\n            else if (rowNode.detailNode) {\n                rowNode.detailNode.clearRowTopAndRowIndex();\n            }\n        }\n        // set children for SSRM child rows\n        var hasChildStore = rowNode.hasChildren() && _.exists(rowNode.childStore);\n        if (hasChildStore) {\n            var childStore = rowNode.childStore;\n            if (rowNode.expanded) {\n                childStore.setDisplayIndexes(displayIndexSeq, nextRowTop);\n            }\n            else {\n                // we need to clear the row tops, as the row renderer depends on\n                // this to know if the row should be faded out\n                childStore.clearDisplayIndexes();\n            }\n        }\n    };\n    BlockUtils.prototype.binarySearchForDisplayIndex = function (displayRowIndex, rowNodes) {\n        var bottomPointer = 0;\n        var topPointer = rowNodes.length - 1;\n        if (_.missing(topPointer) || _.missing(bottomPointer)) {\n            console.warn(\"AG Grid: error: topPointer = \" + topPointer + \", bottomPointer = \" + bottomPointer);\n            return undefined;\n        }\n        while (true) {\n            var midPointer = Math.floor((bottomPointer + topPointer) / 2);\n            var currentRowNode = rowNodes[midPointer];\n            // first check current row for index\n            if (currentRowNode.rowIndex === displayRowIndex) {\n                return currentRowNode;\n            }\n            // then check if current row contains a detail row with the index\n            var expandedMasterRow = currentRowNode.master && currentRowNode.expanded;\n            var detailNode = currentRowNode.detailNode;\n            if (expandedMasterRow && detailNode && detailNode.rowIndex === displayRowIndex) {\n                return currentRowNode.detailNode;\n            }\n            // then check if child cache contains index\n            var childStore = currentRowNode.childStore;\n            if (currentRowNode.expanded && childStore && childStore.isDisplayIndexInStore(displayRowIndex)) {\n                return childStore.getRowUsingDisplayIndex(displayRowIndex);\n            }\n            // otherwise adjust pointers to continue searching for index\n            if (currentRowNode.rowIndex < displayRowIndex) {\n                bottomPointer = midPointer + 1;\n            }\n            else if (currentRowNode.rowIndex > displayRowIndex) {\n                topPointer = midPointer - 1;\n            }\n            else {\n                console.warn(\"AG Grid: error: unable to locate rowIndex = \" + displayRowIndex + \" in cache\");\n                return undefined;\n            }\n        }\n    };\n    BlockUtils.prototype.extractRowBounds = function (rowNode, index) {\n        var extractRowBounds = function (currentRowNode) { return ({\n            rowHeight: currentRowNode.rowHeight,\n            rowTop: currentRowNode.rowTop\n        }); };\n        if (rowNode.rowIndex === index) {\n            return extractRowBounds(rowNode);\n        }\n        if (rowNode.hasChildren() && rowNode.expanded && _.exists(rowNode.childStore)) {\n            var childStore = rowNode.childStore;\n            if (childStore.isDisplayIndexInStore(index)) {\n                return childStore.getRowBounds(index);\n            }\n        }\n        else if (rowNode.master && rowNode.expanded && _.exists(rowNode.detailNode)) {\n            if (rowNode.detailNode.rowIndex === index) {\n                return extractRowBounds(rowNode.detailNode);\n            }\n        }\n    };\n    BlockUtils.prototype.getIndexAtPixel = function (rowNode, pixel) {\n        // first check if pixel is in range of current row\n        if (rowNode.isPixelInRange(pixel)) {\n            return rowNode.rowIndex;\n        }\n        // then check if current row contains a detail row with pixel in range\n        var expandedMasterRow = rowNode.master && rowNode.expanded;\n        var detailNode = rowNode.detailNode;\n        if (expandedMasterRow && detailNode && detailNode.isPixelInRange(pixel)) {\n            return rowNode.detailNode.rowIndex;\n        }\n        // then check if it's a group row with a child cache with pixel in range\n        if (rowNode.hasChildren() && rowNode.expanded && _.exists(rowNode.childStore)) {\n            var childStore = rowNode.childStore;\n            if (childStore.isPixelInRange(pixel)) {\n                return childStore.getRowIndexAtPixel(pixel);\n            }\n        }\n        return null;\n        // pixel is not within this row node or it's children / detail, so return undefined\n    };\n    BlockUtils.prototype.createNodeIdPrefix = function (parentRowNode) {\n        var parts = [];\n        var rowNode = parentRowNode;\n        // pull keys from all parent nodes, but do not include the root node\n        while (rowNode && rowNode.level >= 0) {\n            if (rowNode.key === '') {\n                parts.push(GROUP_MISSING_KEY_ID);\n            }\n            else {\n                parts.push(rowNode.key);\n            }\n            rowNode = rowNode.parent;\n        }\n        if (parts.length > 0) {\n            return parts.reverse().join('-');\n        }\n        // no prefix, so node id's are left as they are\n        return undefined;\n    };\n    BlockUtils.prototype.checkOpenByDefault = function (rowNode) {\n        if (!rowNode.isExpandable()) {\n            return;\n        }\n        var userFunc = this.gridOptionsService.getCallback('isServerSideGroupOpenByDefault');\n        if (!userFunc) {\n            return;\n        }\n        var params = {\n            data: rowNode.data,\n            rowNode: rowNode\n        };\n        var userFuncRes = userFunc(params);\n        if (userFuncRes) {\n            // we do this in a timeout, so that we don't expand a row node while in the middle\n            // of setting up rows, setting up rows is complex enough without another chunk of work\n            // getting added to the call stack. this is also helpful as openByDefault may or may\n            // not happen (so makes setting up rows more deterministic by expands never happening)\n            // and also checkOpenByDefault is shard with both store types, so easier control how it\n            // impacts things by keeping it in new VM turn.\n            window.setTimeout(function () { return rowNode.setExpanded(true); }, 0);\n        }\n    };\n    __decorate$o([\n        Autowired('valueService')\n    ], BlockUtils.prototype, \"valueService\", void 0);\n    __decorate$o([\n        Autowired('columnModel')\n    ], BlockUtils.prototype, \"columnModel\", void 0);\n    __decorate$o([\n        Autowired('ssrmNodeManager')\n    ], BlockUtils.prototype, \"nodeManager\", void 0);\n    __decorate$o([\n        Autowired('beans')\n    ], BlockUtils.prototype, \"beans\", void 0);\n    __decorate$o([\n        PostConstruct\n    ], BlockUtils.prototype, \"postConstruct\", null);\n    BlockUtils = __decorate$o([\n        Bean('ssrmBlockUtils')\n    ], BlockUtils);\n    return BlockUtils;\n}(BeanStub));\n\nvar __decorate$n = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar NodeManager = /** @class */ (function () {\n    function NodeManager() {\n        this.rowNodes = {};\n    }\n    NodeManager.prototype.addRowNode = function (rowNode) {\n        var id = rowNode.id;\n        if (this.rowNodes[id]) {\n            console.warn(\"AG Grid: Duplicate node id \" + rowNode.id + \". Row ID's are provided via the getRowId() callback. Please modify the getRowId() callback code to provide unique row id values.\");\n            console.warn('first instance', this.rowNodes[id].data);\n            console.warn('second instance', rowNode.data);\n        }\n        this.rowNodes[id] = rowNode;\n    };\n    NodeManager.prototype.removeNode = function (rowNode) {\n        var id = rowNode.id;\n        if (this.rowNodes[id]) {\n            this.rowNodes[id] = undefined;\n        }\n    };\n    NodeManager.prototype.clear = function () {\n        this.rowNodes = {};\n    };\n    __decorate$n([\n        PreDestroy\n    ], NodeManager.prototype, \"clear\", null);\n    NodeManager = __decorate$n([\n        Bean('ssrmNodeManager')\n    ], NodeManager);\n    return NodeManager;\n}());\n\nvar __extends$p = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$m = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar TransactionManager = /** @class */ (function (_super) {\n    __extends$p(TransactionManager, _super);\n    function TransactionManager() {\n        var _this = _super !== null && _super.apply(this, arguments) || this;\n        _this.asyncTransactions = [];\n        return _this;\n    }\n    TransactionManager.prototype.postConstruct = function () {\n        // only want to be active if SSRM active, otherwise would be interfering with other row models\n        if (!this.gridOptionsService.isRowModelType('serverSide')) {\n            return;\n        }\n    };\n    TransactionManager.prototype.applyTransactionAsync = function (transaction, callback) {\n        if (this.asyncTransactionsTimeout == null) {\n            this.scheduleExecuteAsync();\n        }\n        this.asyncTransactions.push({ transaction: transaction, callback: callback });\n    };\n    TransactionManager.prototype.scheduleExecuteAsync = function () {\n        var _this = this;\n        var waitMillis = this.gridOptionsService.getAsyncTransactionWaitMillis();\n        this.asyncTransactionsTimeout = window.setTimeout(function () {\n            _this.executeAsyncTransactions();\n        }, waitMillis);\n    };\n    TransactionManager.prototype.executeAsyncTransactions = function () {\n        var _this = this;\n        if (!this.asyncTransactions) {\n            return;\n        }\n        var resultFuncs = [];\n        var resultsForEvent = [];\n        var transactionsToRetry = [];\n        var atLeastOneTransactionApplied = false;\n        this.asyncTransactions.forEach(function (txWrapper) {\n            var result;\n            _this.serverSideRowModel.executeOnStore(txWrapper.transaction.route, function (cache) {\n                result = cache.applyTransaction(txWrapper.transaction);\n            });\n            if (result == undefined) {\n                result = { status: ServerSideTransactionResultStatus.StoreNotFound };\n            }\n            resultsForEvent.push(result);\n            var retryTransaction = result.status == ServerSideTransactionResultStatus.StoreLoading;\n            if (retryTransaction) {\n                transactionsToRetry.push(txWrapper);\n                return;\n            }\n            if (txWrapper.callback) {\n                resultFuncs.push(function () { return txWrapper.callback(result); });\n            }\n            if (result.status === ServerSideTransactionResultStatus.Applied) {\n                atLeastOneTransactionApplied = true;\n            }\n        });\n        // do callbacks in next VM turn so it's async\n        if (resultFuncs.length > 0) {\n            window.setTimeout(function () {\n                resultFuncs.forEach(function (func) { return func(); });\n            }, 0);\n        }\n        this.asyncTransactionsTimeout = undefined;\n        // this will be empty list if nothing to retry\n        this.asyncTransactions = transactionsToRetry;\n        if (atLeastOneTransactionApplied) {\n            this.valueCache.onDataChanged();\n            this.eventService.dispatchEvent({ type: Events.EVENT_STORE_UPDATED });\n        }\n        if (resultsForEvent.length > 0) {\n            var event_1 = {\n                type: Events.EVENT_ASYNC_TRANSACTIONS_FLUSHED,\n                results: resultsForEvent\n            };\n            this.eventService.dispatchEvent(event_1);\n        }\n    };\n    TransactionManager.prototype.flushAsyncTransactions = function () {\n        // the timeout could be missing, if we are flushing due to row data loaded\n        if (this.asyncTransactionsTimeout != null) {\n            clearTimeout(this.asyncTransactionsTimeout);\n        }\n        this.executeAsyncTransactions();\n    };\n    TransactionManager.prototype.applyTransaction = function (transaction) {\n        var res;\n        this.serverSideRowModel.executeOnStore(transaction.route, function (store) {\n            res = store.applyTransaction(transaction);\n        });\n        if (res) {\n            this.valueCache.onDataChanged();\n            if (res.remove) {\n                var removedRowIds = res.remove.map(function (row) { return row.id; });\n                this.selectionService.deleteSelectionStateFromParent(transaction.route || [], removedRowIds);\n            }\n            this.eventService.dispatchEvent({ type: Events.EVENT_STORE_UPDATED });\n            return res;\n        }\n        else {\n            return { status: ServerSideTransactionResultStatus.StoreNotFound };\n        }\n    };\n    __decorate$m([\n        Autowired('rowNodeBlockLoader')\n    ], TransactionManager.prototype, \"rowNodeBlockLoader\", void 0);\n    __decorate$m([\n        Autowired('valueCache')\n    ], TransactionManager.prototype, \"valueCache\", void 0);\n    __decorate$m([\n        Autowired('rowModel')\n    ], TransactionManager.prototype, \"serverSideRowModel\", void 0);\n    __decorate$m([\n        Autowired('rowRenderer')\n    ], TransactionManager.prototype, \"rowRenderer\", void 0);\n    __decorate$m([\n        Autowired('selectionService')\n    ], TransactionManager.prototype, \"selectionService\", void 0);\n    __decorate$m([\n        PostConstruct\n    ], TransactionManager.prototype, \"postConstruct\", null);\n    TransactionManager = __decorate$m([\n        Bean('ssrmTransactionManager')\n    ], TransactionManager);\n    return TransactionManager;\n}(BeanStub));\n\nvar __extends$o = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$l = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar ExpandListener = /** @class */ (function (_super) {\n    __extends$o(ExpandListener, _super);\n    function ExpandListener() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    ExpandListener.prototype.postConstruct = function () {\n        // only want to be active if SSRM active, otherwise would be interfering with other row models\n        if (!this.gridOptionsService.isRowModelType('serverSide')) {\n            return;\n        }\n        this.addManagedListener(this.eventService, Events.EVENT_ROW_GROUP_OPENED, this.onRowGroupOpened.bind(this));\n    };\n    ExpandListener.prototype.onRowGroupOpened = function (event) {\n        var rowNode = event.node;\n        if (rowNode.expanded) {\n            if (rowNode.master) {\n                this.createDetailNode(rowNode);\n            }\n            else if (_.missing(rowNode.childStore)) {\n                var storeParams = this.serverSideRowModel.getParams();\n                rowNode.childStore = this.createBean(this.storeFactory.createStore(storeParams, rowNode));\n            }\n        }\n        else if (this.gridOptionsService.is('purgeClosedRowNodes') && _.exists(rowNode.childStore)) {\n            rowNode.childStore = this.destroyBean(rowNode.childStore);\n        }\n        var storeUpdatedEvent = { type: Events.EVENT_STORE_UPDATED };\n        this.eventService.dispatchEvent(storeUpdatedEvent);\n    };\n    ExpandListener.prototype.createDetailNode = function (masterNode) {\n        if (_.exists(masterNode.detailNode)) {\n            return masterNode.detailNode;\n        }\n        var detailNode = new RowNode(this.beans);\n        detailNode.detail = true;\n        detailNode.selectable = false;\n        detailNode.parent = masterNode;\n        if (_.exists(masterNode.id)) {\n            detailNode.id = 'detail_' + masterNode.id;\n        }\n        detailNode.data = masterNode.data;\n        detailNode.level = masterNode.level + 1;\n        var defaultDetailRowHeight = 200;\n        var rowHeight = this.gridOptionsService.getRowHeightForNode(detailNode).height;\n        detailNode.rowHeight = rowHeight ? rowHeight : defaultDetailRowHeight;\n        masterNode.detailNode = detailNode;\n        return detailNode;\n    };\n    __decorate$l([\n        Autowired('rowModel')\n    ], ExpandListener.prototype, \"serverSideRowModel\", void 0);\n    __decorate$l([\n        Autowired('ssrmStoreFactory')\n    ], ExpandListener.prototype, \"storeFactory\", void 0);\n    __decorate$l([\n        Autowired('beans')\n    ], ExpandListener.prototype, \"beans\", void 0);\n    __decorate$l([\n        PostConstruct\n    ], ExpandListener.prototype, \"postConstruct\", null);\n    ExpandListener = __decorate$l([\n        Bean('ssrmExpandListener')\n    ], ExpandListener);\n    return ExpandListener;\n}(BeanStub));\n\nvar __extends$n = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$k = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar SortListener = /** @class */ (function (_super) {\n    __extends$n(SortListener, _super);\n    function SortListener() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    SortListener.prototype.postConstruct = function () {\n        // only want to be active if SSRM active, otherwise would be interfering with other row models\n        if (!this.gridOptionsService.isRowModelType('serverSide')) {\n            return;\n        }\n        this.addManagedListener(this.eventService, Events.EVENT_SORT_CHANGED, this.onSortChanged.bind(this));\n    };\n    SortListener.prototype.extractSortModel = function () {\n        var sortModel = this.sortController.getSortModel();\n        // when using tree data we just return the sort model with the 'ag-Grid-AutoColumn' as is, i.e not broken out\n        // into it's constitute group columns as they are not defined up front and can vary per node.\n        if (this.gridOptionsService.isTreeData()) {\n            return sortModel;\n        }\n        // it autoCol is active, we don't want to send this to the server. instead we want to\n        // send the\n        this.replaceAutoGroupColumnWithActualRowGroupColumns(sortModel);\n        this.removeMultiColumnPrefixOnColumnIds(sortModel);\n        return sortModel;\n    };\n    SortListener.prototype.removeMultiColumnPrefixOnColumnIds = function (sortModel) {\n        if (this.gridOptionsService.isGroupMultiAutoColumn()) {\n            var multiColumnPrefix = GROUP_AUTO_COLUMN_ID + \"-\";\n            for (var i = 0; i < sortModel.length; ++i) {\n                if (sortModel[i].colId.indexOf(multiColumnPrefix) > -1) {\n                    sortModel[i].colId = sortModel[i].colId.substr(multiColumnPrefix.length);\n                }\n            }\n        }\n    };\n    SortListener.prototype.replaceAutoGroupColumnWithActualRowGroupColumns = function (sortModel) {\n        // find index of auto group column in sort model\n        var autoGroupSortModel = sortModel.find(function (sm) { return sm.colId == GROUP_AUTO_COLUMN_ID; });\n        // replace auto column with individual group columns\n        if (autoGroupSortModel) {\n            // remove auto group column\n            var autoGroupIndex = sortModel.indexOf(autoGroupSortModel);\n            _.removeFromArray(sortModel, autoGroupSortModel);\n            var isNotInSortModel = function (col) { return sortModel.filter(function (sm) { return sm.colId === col.getColId(); }).length == 0; };\n            var mapColumnToSortModel = function (col) { return ({ colId: col.getId(), sort: autoGroupSortModel.sort }); };\n            var newModels = this.columnModel.getRowGroupColumns()\n                .filter(isNotInSortModel)\n                .map(mapColumnToSortModel);\n            _.insertArrayIntoArray(sortModel, newModels, autoGroupIndex);\n        }\n    };\n    SortListener.prototype.onSortChanged = function () {\n        var storeParams = this.serverSideRowModel.getParams();\n        if (!storeParams) {\n            return;\n        } // params is undefined if no datasource set\n        var newSortModel = this.extractSortModel();\n        var oldSortModel = storeParams.sortModel;\n        var changedColumns = this.findChangedColumnsInSort(newSortModel, oldSortModel);\n        var valueColChanged = this.listenerUtils.isSortingWithValueColumn(changedColumns);\n        var secondaryColChanged = this.listenerUtils.isSortingWithSecondaryColumn(changedColumns);\n        var params = {\n            valueColChanged: valueColChanged,\n            secondaryColChanged: secondaryColChanged,\n            changedColumns: changedColumns\n        };\n        this.serverSideRowModel.refreshAfterSort(newSortModel, params);\n    };\n    // returns back all the cols that were effected by the sorting. eg if we were sorting by col A,\n    // and now we are sorting by col B, the list of impacted cols should be A and B. so if a cache\n    // is impacted by sorting on A or B then it needs to be refreshed. this includes where the cache\n    // was previously sorted by A and then the A sort now needs to be cleared.\n    SortListener.prototype.findChangedColumnsInSort = function (newSortModel, oldSortModel) {\n        var allColsInBothSorts = [];\n        [newSortModel, oldSortModel].forEach(function (sortModel) {\n            if (sortModel) {\n                var ids = sortModel.map(function (sm) { return sm.colId; });\n                allColsInBothSorts = allColsInBothSorts.concat(ids);\n            }\n        });\n        var differentSorts = function (oldSortItem, newSortItem) {\n            var oldSort = oldSortItem ? oldSortItem.sort : null;\n            var newSort = newSortItem ? newSortItem.sort : null;\n            return oldSort !== newSort;\n        };\n        var differentIndexes = function (oldSortItem, newSortItem) {\n            var oldIndex = oldSortItem ? oldSortModel.indexOf(oldSortItem) : -1;\n            var newIndex = newSortItem ? newSortModel.indexOf(newSortItem) : -1;\n            return oldIndex !== newIndex;\n        };\n        return allColsInBothSorts.filter(function (colId) {\n            var oldSortItem = oldSortModel.find(function (sm) { return sm.colId === colId; });\n            var newSortItem = newSortModel.find(function (sm) { return sm.colId === colId; });\n            return differentSorts(oldSortItem, newSortItem) || differentIndexes(oldSortItem, newSortItem);\n        });\n    };\n    __decorate$k([\n        Autowired('sortController')\n    ], SortListener.prototype, \"sortController\", void 0);\n    __decorate$k([\n        Autowired('columnModel')\n    ], SortListener.prototype, \"columnModel\", void 0);\n    __decorate$k([\n        Autowired('rowModel')\n    ], SortListener.prototype, \"serverSideRowModel\", void 0);\n    __decorate$k([\n        Autowired('ssrmListenerUtils')\n    ], SortListener.prototype, \"listenerUtils\", void 0);\n    __decorate$k([\n        PostConstruct\n    ], SortListener.prototype, \"postConstruct\", null);\n    SortListener = __decorate$k([\n        Bean('ssrmSortService')\n    ], SortListener);\n    return SortListener;\n}(BeanStub));\n\nvar __extends$m = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$j = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar FilterListener = /** @class */ (function (_super) {\n    __extends$m(FilterListener, _super);\n    function FilterListener() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    FilterListener.prototype.postConstruct = function () {\n        // only want to be active if SSRM active, otherwise would be interfering with other row models\n        if (!this.gridOptionsService.isRowModelType('serverSide')) {\n            return;\n        }\n        this.addManagedListener(this.eventService, Events.EVENT_FILTER_CHANGED, this.onFilterChanged.bind(this));\n    };\n    FilterListener.prototype.onFilterChanged = function () {\n        var storeParams = this.serverSideRowModel.getParams();\n        if (!storeParams) {\n            return;\n        } // params is undefined if no datasource set\n        var newModel = this.filterManager.getFilterModel();\n        var oldModel = storeParams ? storeParams.filterModel : {};\n        var changedColumns = this.findChangedColumns(newModel, oldModel);\n        var valueColChanged = this.listenerUtils.isSortingWithValueColumn(changedColumns);\n        var secondaryColChanged = this.listenerUtils.isSortingWithSecondaryColumn(changedColumns);\n        var params = {\n            valueColChanged: valueColChanged,\n            secondaryColChanged: secondaryColChanged,\n            changedColumns: changedColumns\n        };\n        this.serverSideRowModel.refreshAfterFilter(newModel, params);\n    };\n    FilterListener.prototype.findChangedColumns = function (oldModel, newModel) {\n        var allColKeysMap = {};\n        Object.keys(oldModel).forEach(function (key) { return allColKeysMap[key] = true; });\n        Object.keys(newModel).forEach(function (key) { return allColKeysMap[key] = true; });\n        var res = [];\n        Object.keys(allColKeysMap).forEach(function (key) {\n            var oldJson = JSON.stringify(oldModel[key]);\n            var newJson = JSON.stringify(newModel[key]);\n            var filterChanged = oldJson != newJson;\n            if (filterChanged) {\n                res.push(key);\n            }\n        });\n        return res;\n    };\n    __decorate$j([\n        Autowired('rowModel')\n    ], FilterListener.prototype, \"serverSideRowModel\", void 0);\n    __decorate$j([\n        Autowired('filterManager')\n    ], FilterListener.prototype, \"filterManager\", void 0);\n    __decorate$j([\n        Autowired('ssrmListenerUtils')\n    ], FilterListener.prototype, \"listenerUtils\", void 0);\n    __decorate$j([\n        PostConstruct\n    ], FilterListener.prototype, \"postConstruct\", null);\n    FilterListener = __decorate$j([\n        Bean('ssrmFilterListener')\n    ], FilterListener);\n    return FilterListener;\n}(BeanStub));\n\nvar __decorate$i = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar StoreFactory = /** @class */ (function () {\n    function StoreFactory() {\n    }\n    StoreFactory.prototype.createStore = function (ssrmParams, parentNode) {\n        var storeParams = this.getStoreParams(ssrmParams, parentNode);\n        var CacheClass = storeParams.suppressInfiniteScroll ? FullStore : LazyStore;\n        return new CacheClass(ssrmParams, storeParams, parentNode);\n    };\n    StoreFactory.prototype.getStoreParams = function (ssrmParams, parentNode) {\n        var userStoreParams = this.getLevelSpecificParams(parentNode);\n        // if user provided overrideParams, we take infiniteScroll from there if it exists\n        var infiniteScroll = this.isInfiniteScroll(userStoreParams);\n        var cacheBlockSize = this.getBlockSize(infiniteScroll, userStoreParams);\n        var maxBlocksInCache = this.getMaxBlocksInCache(infiniteScroll, ssrmParams, userStoreParams);\n        var storeParams = {\n            suppressInfiniteScroll: !infiniteScroll,\n            cacheBlockSize: cacheBlockSize,\n            maxBlocksInCache: maxBlocksInCache\n        };\n        return storeParams;\n    };\n    StoreFactory.prototype.getMaxBlocksInCache = function (infiniteScroll, ssrmParams, userStoreParams) {\n        if (!infiniteScroll) {\n            return undefined;\n        }\n        var maxBlocksInCache = (userStoreParams && userStoreParams.maxBlocksInCache != null)\n            ? userStoreParams.maxBlocksInCache\n            : this.gridOptionsService.getNum('maxBlocksInCache');\n        var maxBlocksActive = maxBlocksInCache != null && maxBlocksInCache >= 0;\n        if (!maxBlocksActive) {\n            return undefined;\n        }\n        if (ssrmParams.dynamicRowHeight) {\n            var message_1 = 'AG Grid: Server Side Row Model does not support Dynamic Row Height and Cache Purging. ' +\n                'Either a) remove getRowHeight() callback or b) remove maxBlocksInCache property. Purging has been disabled.';\n            _.doOnce(function () { return console.warn(message_1); }, 'storeFactory.maxBlocksInCache.dynamicRowHeight');\n            return undefined;\n        }\n        if (this.columnModel.isAutoRowHeightActive()) {\n            var message_2 = 'AG Grid: Server Side Row Model does not support Auto Row Height and Cache Purging. ' +\n                'Either a) remove colDef.autoHeight or b) remove maxBlocksInCache property. Purging has been disabled.';\n            _.doOnce(function () { return console.warn(message_2); }, 'storeFactory.maxBlocksInCache.autoRowHeightActive');\n            return undefined;\n        }\n        return maxBlocksInCache;\n    };\n    StoreFactory.prototype.getBlockSize = function (infiniteScroll, userStoreParams) {\n        if (!infiniteScroll) {\n            return undefined;\n        }\n        var blockSize = (userStoreParams && userStoreParams.cacheBlockSize != null)\n            ? userStoreParams.cacheBlockSize\n            : this.gridOptionsService.getNum('cacheBlockSize');\n        if (blockSize != null && blockSize > 0) {\n            return blockSize;\n        }\n        else {\n            return 100;\n        }\n    };\n    StoreFactory.prototype.getLevelSpecificParams = function (parentNode) {\n        var callback = this.gridOptionsService.getCallback('getServerSideGroupLevelParams');\n        if (!callback) {\n            return undefined;\n        }\n        var params = {\n            level: parentNode.level + 1,\n            parentRowNode: parentNode.level >= 0 ? parentNode : undefined,\n            rowGroupColumns: this.columnModel.getRowGroupColumns(),\n            pivotColumns: this.columnModel.getPivotColumns(),\n            pivotMode: this.columnModel.isPivotMode()\n        };\n        var res = callback(params);\n        if (res.storeType != null) {\n            res.suppressInfiniteScroll = res.storeType !== \"partial\";\n        }\n        return res;\n    };\n    StoreFactory.prototype.isInfiniteScroll = function (storeParams) {\n        var res = (storeParams && storeParams.suppressInfiniteScroll != null)\n            ? storeParams.suppressInfiniteScroll\n            : this.isSuppressServerSideInfiniteScroll();\n        return !res;\n    };\n    StoreFactory.prototype.isSuppressServerSideInfiniteScroll = function () {\n        return this.gridOptionsService.is('suppressServerSideInfiniteScroll');\n    };\n    __decorate$i([\n        Autowired('gridOptionsService')\n    ], StoreFactory.prototype, \"gridOptionsService\", void 0);\n    __decorate$i([\n        Autowired('columnModel')\n    ], StoreFactory.prototype, \"columnModel\", void 0);\n    StoreFactory = __decorate$i([\n        Bean('ssrmStoreFactory')\n    ], StoreFactory);\n    return StoreFactory;\n}());\n\nvar __decorate$h = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar ListenerUtils = /** @class */ (function () {\n    function ListenerUtils() {\n    }\n    ListenerUtils.prototype.isSortingWithValueColumn = function (changedColumnsInSort) {\n        var valueColIds = this.columnModel.getValueColumns().map(function (col) { return col.getColId(); });\n        for (var i = 0; i < changedColumnsInSort.length; i++) {\n            if (valueColIds.indexOf(changedColumnsInSort[i]) > -1) {\n                return true;\n            }\n        }\n        return false;\n    };\n    ListenerUtils.prototype.isSortingWithSecondaryColumn = function (changedColumnsInSort) {\n        if (!this.columnModel.getSecondaryColumns()) {\n            return false;\n        }\n        var secondaryColIds = this.columnModel.getSecondaryColumns().map(function (col) { return col.getColId(); });\n        for (var i = 0; i < changedColumnsInSort.length; i++) {\n            if (secondaryColIds.indexOf(changedColumnsInSort[i]) > -1) {\n                return true;\n            }\n        }\n        return false;\n    };\n    __decorate$h([\n        Autowired('columnModel')\n    ], ListenerUtils.prototype, \"columnModel\", void 0);\n    ListenerUtils = __decorate$h([\n        Bean('ssrmListenerUtils')\n    ], ListenerUtils);\n    return ListenerUtils;\n}());\n\nvar __extends$l = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$g = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __read$3 = (undefined && undefined.__read) || function (o, n) {\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n    if (!m) return o;\n    var i = m.call(o), r, ar = [], e;\n    try {\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n    }\n    catch (error) { e = { error: error }; }\n    finally {\n        try {\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\n        }\n        finally { if (e) throw e.error; }\n    }\n    return ar;\n};\nvar __spread$2 = (undefined && undefined.__spread) || function () {\n    for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read$3(arguments[i]));\n    return ar;\n};\nvar DefaultStrategy = /** @class */ (function (_super) {\n    __extends$l(DefaultStrategy, _super);\n    function DefaultStrategy() {\n        var _this = _super !== null && _super.apply(this, arguments) || this;\n        _this.selectedState = { selectAll: false, toggledNodes: new Set() };\n        _this.lastSelected = null;\n        _this.selectAllUsed = false;\n        // this is to prevent regressions, default selectionService retains reference of clicked nodes.\n        _this.selectedNodes = {};\n        return _this;\n    }\n    DefaultStrategy.prototype.init = function () {\n        var _this = this;\n        this.rowSelection = this.gridOptionsService.get('rowSelection');\n        this.addManagedPropertyListener('rowSelection', function (propChange) {\n            _this.rowSelection = propChange.currentValue;\n        });\n    };\n    DefaultStrategy.prototype.getSelectedState = function () {\n        return {\n            selectAll: this.selectedState.selectAll,\n            toggledNodes: __spread$2(this.selectedState.toggledNodes),\n        };\n    };\n    DefaultStrategy.prototype.setSelectedState = function (state) {\n        // fire selection changed event\n        var newState = {\n            selectAll: false,\n            toggledNodes: new Set(),\n        };\n        if (typeof state !== 'object') {\n            console.error('AG Grid: The provided selection state should be an object.');\n            return;\n        }\n        if ('selectAll' in state && typeof state.selectAll === 'boolean') {\n            newState.selectAll = state.selectAll;\n        }\n        else {\n            console.error('AG Grid: Select all status should be of boolean type.');\n            return;\n        }\n        if ('toggledNodes' in state && Array.isArray(state.toggledNodes)) {\n            state.toggledNodes.forEach(function (key) {\n                if (typeof key === 'string') {\n                    newState.toggledNodes.add(key);\n                }\n                else {\n                    console.warn(\"AG Grid: Provided ids must be of string type. Invalid id provided: \" + key);\n                }\n            });\n        }\n        else {\n            console.error('AG Grid: `toggledNodes` must be an array of string ids.');\n            return;\n        }\n        this.selectedState = newState;\n    };\n    DefaultStrategy.prototype.deleteSelectionStateFromParent = function (parentPath, removedNodeIds) {\n        var _this = this;\n        if (this.selectedState.toggledNodes.size === 0) {\n            return false;\n        }\n        var anyNodesToggled = false;\n        removedNodeIds.forEach(function (id) {\n            if (_this.selectedState.toggledNodes.delete(id)) {\n                anyNodesToggled = true;\n            }\n        });\n        return anyNodesToggled;\n    };\n    DefaultStrategy.prototype.setNodeSelected = function (params) {\n        var _a;\n        var _this = this;\n        var onlyThisNode = params.clearSelection && params.newValue && !params.rangeSelect;\n        if (this.rowSelection !== 'multiple' || onlyThisNode) {\n            if (params.newValue) {\n                this.selectedNodes = (_a = {}, _a[params.node.id] = params.node, _a);\n                this.selectedState = {\n                    selectAll: false,\n                    toggledNodes: new Set([params.node.id]),\n                };\n            }\n            else {\n                this.selectedNodes = {};\n                this.selectedState = {\n                    selectAll: false,\n                    toggledNodes: new Set(),\n                };\n            }\n            this.lastSelected = params.node.id;\n            return 1;\n        }\n        var updateNodeState = function (node) {\n            if (params.newValue) {\n                _this.selectedNodes[node.id] = node;\n            }\n            else {\n                delete _this.selectedNodes[node.id];\n            }\n            var doesNodeConform = params.newValue === _this.selectedState.selectAll;\n            if (doesNodeConform) {\n                _this.selectedState.toggledNodes.delete(node.id);\n                return;\n            }\n            _this.selectedState.toggledNodes.add(node.id);\n        };\n        if (params.rangeSelect && this.lastSelected) {\n            var lastSelectedNode = this.rowModel.getRowNode(this.lastSelected);\n            this.rowModel.getNodesInRangeForSelection(params.node, lastSelectedNode !== null && lastSelectedNode !== void 0 ? lastSelectedNode : null).forEach(updateNodeState);\n            this.lastSelected = params.node.id;\n            return 1;\n        }\n        updateNodeState(params.node);\n        this.lastSelected = params.node.id;\n        return 1;\n    };\n    DefaultStrategy.prototype.processNewRow = function (node) {\n        if (this.selectedNodes[node.id]) {\n            this.selectedNodes[node.id] = node;\n        }\n    };\n    DefaultStrategy.prototype.isNodeSelected = function (node) {\n        var isToggled = this.selectedState.toggledNodes.has(node.id);\n        return this.selectedState.selectAll ? !isToggled : isToggled;\n    };\n    DefaultStrategy.prototype.getSelectedNodes = function () {\n        if (this.selectAllUsed) {\n            console.warn(\"AG Grid: getSelectedNodes and getSelectedRows functions cannot be used with select all functionality with the server-side row model.\\n                Use `api.getServerSideSelectionState()` instead.\");\n        }\n        return Object.values(this.selectedNodes);\n    };\n    DefaultStrategy.prototype.getSelectedRows = function () {\n        return this.getSelectedNodes().map(function (node) { return node.data; });\n    };\n    DefaultStrategy.prototype.getSelectionCount = function () {\n        if (this.selectedState.selectAll) {\n            return -1;\n        }\n        return this.selectedState.toggledNodes.size;\n    };\n    DefaultStrategy.prototype.clearOtherNodes = function (rowNodeToKeepSelected, source) {\n        var clearedRows = this.selectedState.selectAll ? 1 : this.selectedState.toggledNodes.size - 1;\n        this.selectedState = {\n            selectAll: false,\n            toggledNodes: new Set([rowNodeToKeepSelected.id]),\n        };\n        this.rowModel.forEachNode(function (node) {\n            if (node !== rowNodeToKeepSelected) {\n                node.selectThisNode(false, undefined, source);\n            }\n        });\n        var event = {\n            type: Events.EVENT_SELECTION_CHANGED,\n            source: source,\n        };\n        this.eventService.dispatchEvent(event);\n        return clearedRows;\n    };\n    DefaultStrategy.prototype.isEmpty = function () {\n        var _a;\n        return !this.selectedState.selectAll && !((_a = this.selectedState.toggledNodes) === null || _a === void 0 ? void 0 : _a.size);\n    };\n    DefaultStrategy.prototype.selectAllRowNodes = function (params) {\n        this.selectedState = { selectAll: true, toggledNodes: new Set() };\n        this.selectedNodes = {};\n        this.selectAllUsed = true;\n    };\n    DefaultStrategy.prototype.deselectAllRowNodes = function (params) {\n        this.selectedState = { selectAll: false, toggledNodes: new Set() };\n        this.selectedNodes = {};\n    };\n    DefaultStrategy.prototype.getSelectAllState = function (justFiltered, justCurrentPage) {\n        if (this.selectedState.selectAll) {\n            if (this.selectedState.toggledNodes.size > 0) {\n                return null;\n            }\n            return true;\n        }\n        if (this.selectedState.toggledNodes.size > 0) {\n            return null;\n        }\n        return false;\n    };\n    __decorate$g([\n        Autowired('rowModel')\n    ], DefaultStrategy.prototype, \"rowModel\", void 0);\n    __decorate$g([\n        PostConstruct\n    ], DefaultStrategy.prototype, \"init\", null);\n    return DefaultStrategy;\n}(BeanStub));\n\nvar __extends$k = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$f = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __read$2 = (undefined && undefined.__read) || function (o, n) {\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n    if (!m) return o;\n    var i = m.call(o), r, ar = [], e;\n    try {\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n    }\n    catch (error) { e = { error: error }; }\n    finally {\n        try {\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\n        }\n        finally { if (e) throw e.error; }\n    }\n    return ar;\n};\nvar __spread$1 = (undefined && undefined.__spread) || function () {\n    for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read$2(arguments[i]));\n    return ar;\n};\nvar GroupSelectsChildrenStrategy = /** @class */ (function (_super) {\n    __extends$k(GroupSelectsChildrenStrategy, _super);\n    function GroupSelectsChildrenStrategy() {\n        var _this = _super !== null && _super.apply(this, arguments) || this;\n        _this.selectedState = { selectAllChildren: false, toggledNodes: new Map() };\n        _this.lastSelected = null;\n        return _this;\n    }\n    GroupSelectsChildrenStrategy.prototype.init = function () {\n        var _this = this;\n        // if model has updated, a store may now be fully loaded to clean up indeterminate states\n        this.addManagedListener(this.eventService, Events.EVENT_MODEL_UPDATED, function () { return _this.removeRedundantState(); });\n        // when the grouping changes, the state no longer makes sense, so reset the state.\n        this.addManagedListener(this.eventService, Events.EVENT_COLUMN_ROW_GROUP_CHANGED, function () { return _this.selectionService.reset(); });\n    };\n    GroupSelectsChildrenStrategy.prototype.getSelectedState = function () {\n        var _this = this;\n        var recursivelySerializeState = function (state, level, nodeId) {\n            var normalisedState = {\n                nodeId: nodeId,\n            };\n            if (level <= _this.columnModel.getRowGroupColumns().length) {\n                normalisedState.selectAllChildren = state.selectAllChildren;\n            }\n            // omit toggledNodes if empty\n            if (state.toggledNodes.size) {\n                var toggledNodes_1 = [];\n                state.toggledNodes.forEach(function (value, key) {\n                    var newState = recursivelySerializeState(value, level + 1, key);\n                    toggledNodes_1.push(newState);\n                });\n                normalisedState.toggledNodes = toggledNodes_1;\n            }\n            return normalisedState;\n        };\n        return recursivelySerializeState(this.selectedState, 0);\n    };\n    GroupSelectsChildrenStrategy.prototype.setSelectedState = function (state) {\n        var recursivelyDeserializeState = function (normalisedState, parentSelected) {\n            var _a, _b;\n            if (typeof normalisedState !== 'object') {\n                throw new Error('AG Grid: Each provided state object must be an object.');\n            }\n            if ('selectAllChildren' in normalisedState && typeof normalisedState.selectAllChildren !== 'boolean') {\n                throw new Error('AG Grid: `selectAllChildren` must be a boolean value or undefined.');\n            }\n            if ('toggledNodes' in normalisedState) {\n                if (!Array.isArray(normalisedState.toggledNodes)) {\n                    throw new Error('AG Grid: `toggledNodes` must be an array.');\n                }\n                var allHaveIds = normalisedState.toggledNodes.every(function (innerState) { return (typeof innerState === 'object' && 'nodeId' in innerState && typeof innerState.nodeId === 'string'); });\n                if (!allHaveIds) {\n                    throw new Error('AG Grid: Every `toggledNode` requires an associated string id.');\n                }\n            }\n            var isThisNodeSelected = (_a = normalisedState.selectAllChildren) !== null && _a !== void 0 ? _a : !parentSelected;\n            var convertedChildren = (_b = normalisedState.toggledNodes) === null || _b === void 0 ? void 0 : _b.map(function (innerState) { return ([innerState.nodeId, recursivelyDeserializeState(innerState, isThisNodeSelected)]); });\n            var doesRedundantStateExist = convertedChildren === null || convertedChildren === void 0 ? void 0 : convertedChildren.some(function (_a) {\n                var _b = __read$2(_a, 2); _b[0]; var innerState = _b[1];\n                return isThisNodeSelected === innerState.selectAllChildren && innerState.toggledNodes.size === 0;\n            });\n            if (doesRedundantStateExist) {\n                throw new Error(\"\\n                    AG Grid: AG Grid: Row selection state could not be parsed due to invalid data. Ensure all child state has toggledNodes or does not conform with the parent rule.\\n                    Please rebuild the selection state and reapply it.\\n                \");\n            }\n            return {\n                selectAllChildren: isThisNodeSelected,\n                toggledNodes: new Map(convertedChildren),\n            };\n        };\n        try {\n            this.selectedState = recursivelyDeserializeState(state, !!state.selectAllChildren);\n        }\n        catch (e) {\n            console.error(e.message);\n        }\n    };\n    GroupSelectsChildrenStrategy.prototype.deleteSelectionStateFromParent = function (parentRoute, removedNodeIds) {\n        var parentState = this.selectedState;\n        var remainingRoute = __spread$1(parentRoute);\n        while (parentState && remainingRoute.length) {\n            parentState = parentState.toggledNodes.get(remainingRoute.pop());\n        }\n        // parent has no explicit state, nothing to remove\n        if (!parentState) {\n            return false;\n        }\n        var anyStateChanged = false;\n        removedNodeIds.forEach(function (id) {\n            if (parentState === null || parentState === void 0 ? void 0 : parentState.toggledNodes.delete(id)) {\n                anyStateChanged = true;\n            }\n        });\n        if (anyStateChanged) {\n            this.removeRedundantState();\n        }\n        return anyStateChanged;\n    };\n    GroupSelectsChildrenStrategy.prototype.setNodeSelected = function (params) {\n        var _this = this;\n        if (params.rangeSelect) {\n            var nodes = this.rowModel.getNodesInRangeForSelection(params.node, this.lastSelected);\n            // sort the routes by route length, high to low, this means we can do the lowest level children first\n            var routes = nodes.map(this.getRouteToNode).sort(function (a, b) { return b.length - a.length; });\n            // skip routes if we've already done a descendent\n            var completedRoutes_1 = new Set();\n            routes.forEach(function (route) {\n                // skip routes if we've already selected a descendent\n                if (completedRoutes_1.has(route[route.length - 1])) {\n                    return;\n                }\n                route.forEach(function (part) { return completedRoutes_1.add(part); });\n                _this.recursivelySelectNode(route, _this.selectedState, params);\n            });\n            this.removeRedundantState();\n            this.lastSelected = params.node;\n            return 1;\n        }\n        var idPathToNode = this.getRouteToNode(params.node);\n        this.recursivelySelectNode(idPathToNode, this.selectedState, params);\n        this.removeRedundantState();\n        this.lastSelected = params.node;\n        return 1;\n    };\n    GroupSelectsChildrenStrategy.prototype.isNodeSelected = function (node) {\n        var path = this.getRouteToNode(node);\n        return this.isNodePathSelected(path, this.selectedState);\n    };\n    GroupSelectsChildrenStrategy.prototype.isNodePathSelected = function (_a, state) {\n        var _b = __read$2(_a), nextNode = _b[0], nodes = _b.slice(1);\n        if (nodes.length === 0) {\n            var isToggled = state.toggledNodes.has(nextNode.id);\n            if (nextNode.hasChildren()) {\n                var groupState = state.toggledNodes.get(nextNode.id);\n                if (groupState && groupState.toggledNodes.size) {\n                    return undefined;\n                }\n            }\n            return state.selectAllChildren ? !isToggled : isToggled;\n        }\n        // if there's a deeper level, check recursively\n        if (state.toggledNodes.has(nextNode.id)) {\n            var nextState = state.toggledNodes.get(nextNode.id);\n            if (nextState) {\n                return this.isNodePathSelected(nodes, nextState);\n            }\n        }\n        // no deeper custom state, respect the closest default\n        return !!state.selectAllChildren;\n    };\n    GroupSelectsChildrenStrategy.prototype.getRouteToNode = function (node) {\n        var pathToNode = [];\n        var tempNode = node;\n        while (tempNode.parent) {\n            pathToNode.push(tempNode);\n            tempNode = tempNode.parent;\n        }\n        return pathToNode.reverse();\n    };\n    GroupSelectsChildrenStrategy.prototype.removeRedundantState = function () {\n        var _this = this;\n        if (this.filterManager.isAnyFilterPresent()) {\n            return;\n        }\n        var recursivelyRemoveState = function (selectedState, store, node) {\n            if (selectedState === void 0) { selectedState = _this.selectedState; }\n            if (store === void 0) { store = _this.serverSideRowModel.getRootStore(); }\n            var allChildNodesFound = true;\n            var noIndeterminateChildren = true;\n            selectedState.toggledNodes.forEach(function (state, id) {\n                var parentNode = _this.rowModel.getRowNode(id);\n                if (!parentNode) {\n                    allChildNodesFound = false;\n                }\n                var nextStore = parentNode === null || parentNode === void 0 ? void 0 : parentNode.childStore;\n                if (!nextStore) {\n                    if (state.toggledNodes.size > 0) {\n                        noIndeterminateChildren = false;\n                    }\n                    return;\n                }\n                // if child was cleared, check if this state is still relevant\n                if (recursivelyRemoveState(state, nextStore, parentNode)) {\n                    // cleans out groups which have no toggled nodes and an equivalent default to its parent\n                    if (selectedState.selectAllChildren === state.selectAllChildren) {\n                        selectedState.toggledNodes.delete(id);\n                    }\n                }\n                if (state.toggledNodes.size > 0) {\n                    noIndeterminateChildren = false;\n                }\n            });\n            if (!store || !store.isLastRowIndexKnown() || store.getRowCount() !== selectedState.toggledNodes.size) {\n                // if row count unknown, or doesn't match the size of toggledNodes, ignore.\n                return false;\n            }\n            if (noIndeterminateChildren && allChildNodesFound) {\n                selectedState.toggledNodes.clear();\n                selectedState.selectAllChildren = !selectedState.selectAllChildren;\n                // if node was indeterminate, it's not any more.\n                if (node && (node === null || node === void 0 ? void 0 : node.isSelected()) !== selectedState.selectAllChildren) {\n                    node.selectThisNode(selectedState.selectAllChildren, undefined, 'api');\n                }\n                return true;\n            }\n            return false;\n        };\n        recursivelyRemoveState();\n    };\n    GroupSelectsChildrenStrategy.prototype.recursivelySelectNode = function (_a, selectedState, params) {\n        var _b = __read$2(_a), nextNode = _b[0], nodes = _b.slice(1);\n        if (!nextNode) {\n            return;\n        }\n        // if this is the last node, hard add/remove based on its selectAllChildren state\n        var isLastNode = !nodes.length;\n        if (isLastNode) {\n            var needsDeleted = selectedState.selectAllChildren === params.newValue;\n            if (needsDeleted) {\n                selectedState.toggledNodes.delete(nextNode.id);\n                return;\n            }\n            var newState = {\n                selectAllChildren: params.newValue,\n                toggledNodes: new Map(),\n            };\n            selectedState.toggledNodes.set(nextNode.id, newState);\n            return;\n        }\n        var doesStateAlreadyExist = selectedState.toggledNodes.has(nextNode.id);\n        var childState = doesStateAlreadyExist ? (selectedState.toggledNodes.get(nextNode.id)) : {\n            selectAllChildren: selectedState.selectAllChildren,\n            toggledNodes: new Map(),\n        };\n        if (!doesStateAlreadyExist) {\n            selectedState.toggledNodes.set(nextNode.id, childState);\n        }\n        this.recursivelySelectNode(nodes, childState, params);\n        // cleans out groups which have no toggled nodes and an equivalent default to its parent\n        if (selectedState.selectAllChildren === childState.selectAllChildren && childState.toggledNodes.size === 0) {\n            selectedState.toggledNodes.delete(nextNode.id);\n        }\n    };\n    GroupSelectsChildrenStrategy.prototype.getSelectedNodes = function () {\n        console.warn(\"AG Grid: `getSelectedNodes` and `getSelectedRows` functions cannot be used with `groupSelectsChildren` and the server-side row model.\\n            Use `api.getServerSideSelectionState()` instead.\");\n        var selectedNodes = [];\n        this.rowModel.forEachNode(function (node) {\n            if (node.isSelected()) {\n                selectedNodes.push(node);\n            }\n        });\n        return selectedNodes;\n    };\n    GroupSelectsChildrenStrategy.prototype.processNewRow = function (node) {\n        // This is used for updating outdated node refs, as this model entirely uses ids it's irrelevant\n    };\n    GroupSelectsChildrenStrategy.prototype.getSelectedRows = function () {\n        return this.getSelectedNodes().map(function (node) { return node.data; });\n    };\n    GroupSelectsChildrenStrategy.prototype.getSelectionCount = function () {\n        return -1;\n    };\n    GroupSelectsChildrenStrategy.prototype.isEmpty = function () {\n        var _a;\n        return !this.selectedState.selectAllChildren && !((_a = this.selectedState.toggledNodes) === null || _a === void 0 ? void 0 : _a.size);\n    };\n    GroupSelectsChildrenStrategy.prototype.selectAllRowNodes = function (params) {\n        this.selectedState = { selectAllChildren: true, toggledNodes: new Map() };\n    };\n    GroupSelectsChildrenStrategy.prototype.deselectAllRowNodes = function (params) {\n        this.selectedState = { selectAllChildren: false, toggledNodes: new Map() };\n    };\n    GroupSelectsChildrenStrategy.prototype.getSelectAllState = function (justFiltered, justCurrentPage) {\n        if (this.selectedState.selectAllChildren) {\n            if (this.selectedState.toggledNodes.size > 0) {\n                return null;\n            }\n            return true;\n        }\n        if (this.selectedState.toggledNodes.size > 0) {\n            return null;\n        }\n        return false;\n    };\n    __decorate$f([\n        Autowired('rowModel')\n    ], GroupSelectsChildrenStrategy.prototype, \"rowModel\", void 0);\n    __decorate$f([\n        Autowired('columnModel')\n    ], GroupSelectsChildrenStrategy.prototype, \"columnModel\", void 0);\n    __decorate$f([\n        Autowired('filterManager')\n    ], GroupSelectsChildrenStrategy.prototype, \"filterManager\", void 0);\n    __decorate$f([\n        Autowired('rowModel')\n    ], GroupSelectsChildrenStrategy.prototype, \"serverSideRowModel\", void 0);\n    __decorate$f([\n        Autowired('selectionService')\n    ], GroupSelectsChildrenStrategy.prototype, \"selectionService\", void 0);\n    __decorate$f([\n        PostConstruct\n    ], GroupSelectsChildrenStrategy.prototype, \"init\", null);\n    return GroupSelectsChildrenStrategy;\n}(BeanStub));\n\nvar __extends$j = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$e = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar ServerSideSelectionService = /** @class */ (function (_super) {\n    __extends$j(ServerSideSelectionService, _super);\n    function ServerSideSelectionService() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    ServerSideSelectionService.prototype.init = function () {\n        var _this = this;\n        var groupSelectsChildren = this.gridOptionsService.is('groupSelectsChildren');\n        this.addManagedPropertyListener('groupSelectsChildren', function (propChange) {\n            _this.destroyBean(_this.selectionStrategy);\n            var StrategyClazz = !propChange.currentValue ? DefaultStrategy : GroupSelectsChildrenStrategy;\n            _this.selectionStrategy = _this.createManagedBean(new StrategyClazz());\n            _this.shotgunResetNodeSelectionState();\n            var event = {\n                type: Events.EVENT_SELECTION_CHANGED,\n                source: 'api',\n            };\n            _this.eventService.dispatchEvent(event);\n        });\n        var StrategyClazz = !groupSelectsChildren ? DefaultStrategy : GroupSelectsChildrenStrategy;\n        this.selectionStrategy = this.createManagedBean(new StrategyClazz());\n    };\n    ServerSideSelectionService.prototype.getServerSideSelectionState = function () {\n        return this.selectionStrategy.getSelectedState();\n    };\n    ServerSideSelectionService.prototype.setServerSideSelectionState = function (state) {\n        this.selectionStrategy.setSelectedState(state);\n        this.shotgunResetNodeSelectionState();\n        var event = {\n            type: Events.EVENT_SELECTION_CHANGED,\n            source: 'api',\n        };\n        this.eventService.dispatchEvent(event);\n    };\n    ServerSideSelectionService.prototype.setNodeSelected = function (params) {\n        var changedNodes = this.selectionStrategy.setNodeSelected(params);\n        this.shotgunResetNodeSelectionState(params.source);\n        var event = {\n            type: Events.EVENT_SELECTION_CHANGED,\n            source: params.source,\n        };\n        this.eventService.dispatchEvent(event);\n        return changedNodes;\n    };\n    /**\n     * Deletes the selection state for a set of nodes, for use after deleting nodes via\n     * transaction. As this is designed for transactions, all nodes should belong to the same group.\n     */\n    ServerSideSelectionService.prototype.deleteSelectionStateFromParent = function (storeRoute, removedNodeIds) {\n        var stateChanged = this.selectionStrategy.deleteSelectionStateFromParent(storeRoute, removedNodeIds);\n        if (!stateChanged) {\n            return;\n        }\n        this.shotgunResetNodeSelectionState();\n        var event = {\n            type: Events.EVENT_SELECTION_CHANGED,\n            source: 'api',\n        };\n        this.eventService.dispatchEvent(event);\n    };\n    ServerSideSelectionService.prototype.shotgunResetNodeSelectionState = function (source) {\n        var _this = this;\n        this.rowModel.forEachNode(function (node) {\n            if (node.stub) {\n                return;\n            }\n            var isNodeSelected = _this.selectionStrategy.isNodeSelected(node);\n            if (isNodeSelected !== node.isSelected()) {\n                node.selectThisNode(isNodeSelected, undefined, source);\n            }\n        });\n    };\n    ServerSideSelectionService.prototype.getSelectedNodes = function () {\n        return this.selectionStrategy.getSelectedNodes();\n    };\n    ServerSideSelectionService.prototype.getSelectedRows = function () {\n        return this.selectionStrategy.getSelectedRows();\n    };\n    ServerSideSelectionService.prototype.getSelectionCount = function () {\n        return this.selectionStrategy.getSelectionCount();\n    };\n    ServerSideSelectionService.prototype.syncInRowNode = function (rowNode, oldNode) {\n        // update any refs being held in the strategies\n        this.selectionStrategy.processNewRow(rowNode);\n        var isNodeSelected = this.selectionStrategy.isNodeSelected(rowNode);\n        rowNode.setSelectedInitialValue(isNodeSelected);\n    };\n    ServerSideSelectionService.prototype.reset = function () {\n        this.selectionStrategy.deselectAllRowNodes({ source: 'api' });\n    };\n    ServerSideSelectionService.prototype.isEmpty = function () {\n        return this.selectionStrategy.isEmpty();\n    };\n    ServerSideSelectionService.prototype.selectAllRowNodes = function (params) {\n        if (params.justCurrentPage || params.justFiltered) {\n            console.warn(\"AG Grid: selecting just filtered only works when gridOptions.rowModelType='clientSide'\");\n        }\n        this.selectionStrategy.selectAllRowNodes(params);\n        this.rowModel.forEachNode(function (node) {\n            if (node.stub) {\n                return;\n            }\n            node.selectThisNode(true, undefined, params.source);\n        });\n        var event = {\n            type: Events.EVENT_SELECTION_CHANGED,\n            source: params.source,\n        };\n        this.eventService.dispatchEvent(event);\n    };\n    ServerSideSelectionService.prototype.deselectAllRowNodes = function (params) {\n        if (params.justCurrentPage || params.justFiltered) {\n            console.warn(\"AG Grid: selecting just filtered only works when gridOptions.rowModelType='clientSide'\");\n        }\n        this.selectionStrategy.deselectAllRowNodes(params);\n        this.rowModel.forEachNode(function (node) {\n            if (node.stub) {\n                return;\n            }\n            node.selectThisNode(false, undefined, params.source);\n        });\n        var event = {\n            type: Events.EVENT_SELECTION_CHANGED,\n            source: params.source,\n        };\n        this.eventService.dispatchEvent(event);\n    };\n    ServerSideSelectionService.prototype.getSelectAllState = function (justFiltered, justCurrentPage) {\n        return this.selectionStrategy.getSelectAllState(justFiltered, justCurrentPage);\n    };\n    // used by CSRM\n    ServerSideSelectionService.prototype.updateGroupsFromChildrenSelections = function (source, changedPath) {\n        return false;\n    };\n    // used by CSRM\n    ServerSideSelectionService.prototype.getBestCostNodeSelection = function () {\n        console.warn('AG Grid: calling gridApi.getBestCostNodeSelection() is only possible when using rowModelType=`clientSide`.');\n        return undefined;\n    };\n    // used by CSRM\n    ServerSideSelectionService.prototype.filterFromSelection = function () {\n        return;\n    };\n    __decorate$e([\n        Autowired('rowModel')\n    ], ServerSideSelectionService.prototype, \"rowModel\", void 0);\n    __decorate$e([\n        PostConstruct\n    ], ServerSideSelectionService.prototype, \"init\", null);\n    ServerSideSelectionService = __decorate$e([\n        Bean('selectionService')\n    ], ServerSideSelectionService);\n    return ServerSideSelectionService;\n}(BeanStub));\n\n// DO NOT UPDATE MANUALLY: Generated from script during build time\nvar VERSION$4 = '29.3.5';\n\nvar ServerSideRowModelModule = {\n    version: VERSION$4,\n    moduleName: ModuleNames.ServerSideRowModelModule,\n    rowModel: 'serverSide',\n    beans: [ServerSideRowModel, ExpandListener, SortListener, StoreUtils, BlockUtils, NodeManager, TransactionManager,\n        FilterListener, StoreFactory, ListenerUtils, ServerSideSelectionService],\n    dependantModules: [\n        EnterpriseCoreModule\n    ]\n};\n\n/** @param V type of value in the Set Filter */\nvar ClientSideValuesExtractor = /** @class */ (function () {\n    function ClientSideValuesExtractor(rowModel, filterParams, createKey, caseFormat, columnModel, valueService, treeDataOrGrouping, treeData, getDataPath) {\n        this.rowModel = rowModel;\n        this.filterParams = filterParams;\n        this.createKey = createKey;\n        this.caseFormat = caseFormat;\n        this.columnModel = columnModel;\n        this.valueService = valueService;\n        this.treeDataOrGrouping = treeDataOrGrouping;\n        this.treeData = treeData;\n        this.getDataPath = getDataPath;\n    }\n    ClientSideValuesExtractor.prototype.extractUniqueValues = function (predicate, existingValues) {\n        var _this = this;\n        var values = new Map();\n        var existingFormattedKeys = this.extractExistingFormattedKeys(existingValues);\n        var formattedKeys = new Set();\n        var treeData = this.treeData && !!this.getDataPath;\n        var groupedCols = this.columnModel.getRowGroupColumns();\n        var addValue = function (unformattedKey, value) {\n            var formattedKey = _this.caseFormat(unformattedKey);\n            if (!formattedKeys.has(formattedKey)) {\n                formattedKeys.add(formattedKey);\n                var keyToAdd = unformattedKey;\n                var valueToAdd = _.makeNull(value);\n                // when case insensitive, we pick the first value to use. if this is later filtered out,\n                // we still want to use the original value and not one with a different case\n                var existingUnformattedKey = existingFormattedKeys === null || existingFormattedKeys === void 0 ? void 0 : existingFormattedKeys.get(formattedKey);\n                if (existingUnformattedKey != null) {\n                    keyToAdd = existingUnformattedKey;\n                    valueToAdd = existingValues.get(existingUnformattedKey);\n                }\n                values.set(keyToAdd, valueToAdd);\n            }\n        };\n        this.rowModel.forEachLeafNode(function (node) {\n            // only pull values from rows that have data. this means we skip filler group nodes.\n            if (!node.data || !predicate(node)) {\n                return;\n            }\n            if (_this.treeDataOrGrouping) {\n                _this.addValueForTreeDataOrGrouping(node, treeData, groupedCols, addValue);\n                return;\n            }\n            var value = _this.getValue(node);\n            if (_this.filterParams.convertValuesToStrings) {\n                // for backwards compatibility - keeping separate as it will eventually be removed\n                _this.addValueForConvertValuesToString(node, value, addValue);\n                return;\n            }\n            if (value != null && Array.isArray(value)) {\n                value.forEach(function (x) {\n                    addValue(_this.createKey(x, node), x);\n                });\n                if (value.length === 0) {\n                    addValue(null, null);\n                }\n            }\n            else {\n                addValue(_this.createKey(value, node), value);\n            }\n        });\n        return values;\n    };\n    ClientSideValuesExtractor.prototype.addValueForConvertValuesToString = function (node, value, addValue) {\n        var key = this.createKey(value, node);\n        if (key != null && Array.isArray(key)) {\n            key.forEach(function (part) {\n                var processedPart = _.toStringOrNull(_.makeNull(part));\n                addValue(processedPart, processedPart);\n            });\n            if (key.length === 0) {\n                addValue(null, null);\n            }\n        }\n        else {\n            addValue(key, key);\n        }\n    };\n    ClientSideValuesExtractor.prototype.addValueForTreeDataOrGrouping = function (node, treeData, groupedCols, addValue) {\n        var _this = this;\n        var _a;\n        var dataPath;\n        if (treeData) {\n            if ((_a = node.childrenAfterGroup) === null || _a === void 0 ? void 0 : _a.length) {\n                return;\n            }\n            dataPath = this.getDataPath(node.data);\n        }\n        else {\n            dataPath = groupedCols.map(function (groupCol) { return _this.valueService.getKeyForNode(groupCol, node); });\n            dataPath.push(this.getValue(node));\n        }\n        if (dataPath) {\n            dataPath = dataPath.map(function (treeKey) { return _.toStringOrNull(_.makeNull(treeKey)); });\n        }\n        if (dataPath === null || dataPath === void 0 ? void 0 : dataPath.some(function (treeKey) { return treeKey == null; })) {\n            dataPath = null;\n        }\n        addValue(this.createKey(dataPath), dataPath);\n    };\n    ClientSideValuesExtractor.prototype.getValue = function (node) {\n        var _a = this.filterParams, api = _a.api, colDef = _a.colDef, column = _a.column, columnApi = _a.columnApi, context = _a.context;\n        return this.filterParams.valueGetter({\n            api: api,\n            colDef: colDef,\n            column: column,\n            columnApi: columnApi,\n            context: context,\n            data: node.data,\n            getValue: function (field) { return node.data[field]; },\n            node: node,\n        });\n    };\n    ClientSideValuesExtractor.prototype.extractExistingFormattedKeys = function (existingValues) {\n        var _this = this;\n        if (!existingValues) {\n            return null;\n        }\n        var existingFormattedKeys = new Map();\n        existingValues.forEach(function (_value, key) {\n            existingFormattedKeys.set(_this.caseFormat(key), key);\n        });\n        return existingFormattedKeys;\n    };\n    return ClientSideValuesExtractor;\n}());\n\nvar SetFilterDisplayValue = /** @class */ (function () {\n    function SetFilterDisplayValue() {\n    }\n    SetFilterDisplayValue.SELECT_ALL = '__AG_SELECT_ALL__';\n    return SetFilterDisplayValue;\n}());\n\nvar __values$2 = (undefined && undefined.__values) || function(o) {\n    var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n    if (m) return m.call(o);\n    if (o && typeof o.length === \"number\") return {\n        next: function () {\n            if (o && i >= o.length) o = void 0;\n            return { value: o && o[i++], done: !o };\n        }\n    };\n    throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nvar FlatSetDisplayValueModel = /** @class */ (function () {\n    function FlatSetDisplayValueModel(valueFormatterService, valueFormatter, formatter, column) {\n        this.valueFormatterService = valueFormatterService;\n        this.valueFormatter = valueFormatter;\n        this.formatter = formatter;\n        this.column = column;\n        /** All keys that are currently displayed, after the mini-filter has been applied. */\n        this.displayedKeys = [];\n    }\n    FlatSetDisplayValueModel.prototype.updateDisplayedValuesToAllAvailable = function (_getValue, _allKeys, availableKeys) {\n        this.displayedKeys = Array.from(availableKeys);\n    };\n    FlatSetDisplayValueModel.prototype.updateDisplayedValuesToMatchMiniFilter = function (getValue, _allKeys, availableKeys, matchesFilter, nullMatchesFilter) {\n        var e_1, _a;\n        this.displayedKeys = [];\n        try {\n            for (var availableKeys_1 = __values$2(availableKeys), availableKeys_1_1 = availableKeys_1.next(); !availableKeys_1_1.done; availableKeys_1_1 = availableKeys_1.next()) {\n                var key = availableKeys_1_1.value;\n                if (key == null) {\n                    if (nullMatchesFilter) {\n                        this.displayedKeys.push(key);\n                    }\n                }\n                else {\n                    var value = getValue(key);\n                    var valueFormatterValue = this.valueFormatterService.formatValue(this.column, null, value, this.valueFormatter, false);\n                    var textFormatterValue = this.formatter(valueFormatterValue);\n                    if (matchesFilter(textFormatterValue)) {\n                        this.displayedKeys.push(key);\n                    }\n                }\n            }\n        }\n        catch (e_1_1) { e_1 = { error: e_1_1 }; }\n        finally {\n            try {\n                if (availableKeys_1_1 && !availableKeys_1_1.done && (_a = availableKeys_1.return)) _a.call(availableKeys_1);\n            }\n            finally { if (e_1) throw e_1.error; }\n        }\n    };\n    FlatSetDisplayValueModel.prototype.getDisplayedValueCount = function () {\n        return this.displayedKeys.length;\n    };\n    FlatSetDisplayValueModel.prototype.getDisplayedItem = function (index) {\n        return this.displayedKeys[index];\n    };\n    FlatSetDisplayValueModel.prototype.getSelectAllItem = function () {\n        return SetFilterDisplayValue.SELECT_ALL;\n    };\n    FlatSetDisplayValueModel.prototype.getDisplayedKeys = function () {\n        return this.displayedKeys;\n    };\n    FlatSetDisplayValueModel.prototype.forEachDisplayedKey = function (func) {\n        this.displayedKeys.forEach(func);\n    };\n    FlatSetDisplayValueModel.prototype.someDisplayedKey = function (func) {\n        return this.displayedKeys.some(func);\n    };\n    FlatSetDisplayValueModel.prototype.hasGroups = function () {\n        return false;\n    };\n    FlatSetDisplayValueModel.prototype.refresh = function () {\n        // not used\n    };\n    return FlatSetDisplayValueModel;\n}());\n\nvar __read$1 = (undefined && undefined.__read) || function (o, n) {\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n    if (!m) return o;\n    var i = m.call(o), r, ar = [], e;\n    try {\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n    }\n    catch (error) { e = { error: error }; }\n    finally {\n        try {\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\n        }\n        finally { if (e) throw e.error; }\n    }\n    return ar;\n};\nvar __spread = (undefined && undefined.__spread) || function () {\n    for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read$1(arguments[i]));\n    return ar;\n};\nvar __values$1 = (undefined && undefined.__values) || function(o) {\n    var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n    if (m) return m.call(o);\n    if (o && typeof o.length === \"number\") return {\n        next: function () {\n            if (o && i >= o.length) o = void 0;\n            return { value: o && o[i++], done: !o };\n        }\n    };\n    throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nvar TreeSetDisplayValueModel = /** @class */ (function () {\n    function TreeSetDisplayValueModel(formatter, treeListPathGetter, treeListFormatter, treeDataOrGrouping) {\n        this.formatter = formatter;\n        this.treeListPathGetter = treeListPathGetter;\n        this.treeListFormatter = treeListFormatter;\n        this.treeDataOrGrouping = treeDataOrGrouping;\n        /** all displayed items in a tree structure */\n        this.allDisplayedItemsTree = [];\n        /** all displayed items flattened and filtered */\n        this.activeDisplayedItemsFlat = [];\n        this.selectAllItem = {\n            depth: 0,\n            filterPasses: true,\n            available: true,\n            treeKey: SetFilterDisplayValue.SELECT_ALL,\n            children: this.allDisplayedItemsTree,\n            expanded: true,\n            key: SetFilterDisplayValue.SELECT_ALL,\n            parentTreeKeys: []\n        };\n    }\n    TreeSetDisplayValueModel.prototype.updateDisplayedValuesToAllAvailable = function (getValue, allKeys, availableKeys, source) {\n        if (source === 'reload') {\n            this.generateItemTree(getValue, allKeys, availableKeys);\n        }\n        else if (source === 'otherFilter') {\n            this.updateAvailable(availableKeys);\n            this.updateExpandAll();\n        }\n        else if (source === 'miniFilter') {\n            this.resetFilter();\n            this.updateExpandAll();\n        }\n        this.flattenItems();\n    };\n    TreeSetDisplayValueModel.prototype.updateDisplayedValuesToMatchMiniFilter = function (getValue, allKeys, availableKeys, matchesFilter, nullMatchesFilter, source) {\n        if (source === 'reload') {\n            this.generateItemTree(getValue, allKeys, availableKeys);\n        }\n        else if (source === 'otherFilter') {\n            this.updateAvailable(availableKeys);\n        }\n        this.updateFilter(matchesFilter, nullMatchesFilter);\n        this.updateExpandAll();\n        this.flattenItems();\n    };\n    TreeSetDisplayValueModel.prototype.generateItemTree = function (getValue, allKeys, availableKeys) {\n        var e_1, _a;\n        var _b;\n        this.allDisplayedItemsTree = [];\n        this.groupsExist = false;\n        var treeListPathGetter = this.getTreeListPathGetter(getValue, availableKeys);\n        var _loop_1 = function (key) {\n            var value = getValue(key);\n            var dataPath = (_b = treeListPathGetter(value)) !== null && _b !== void 0 ? _b : [null];\n            if (dataPath.length > 1) {\n                this_1.groupsExist = true;\n            }\n            var available = availableKeys.has(key);\n            var children = this_1.allDisplayedItemsTree;\n            var item;\n            var parentTreeKeys = [];\n            dataPath.forEach(function (treeKey, depth) {\n                if (!children) {\n                    children = [];\n                    item.children = children;\n                }\n                item = children.find(function (child) { var _a; return ((_a = child.treeKey) === null || _a === void 0 ? void 0 : _a.toUpperCase()) === (treeKey === null || treeKey === void 0 ? void 0 : treeKey.toUpperCase()); });\n                if (!item) {\n                    item = { treeKey: treeKey, depth: depth, filterPasses: true, expanded: false, available: available, parentTreeKeys: parentTreeKeys };\n                    if (depth === dataPath.length - 1) {\n                        item.key = key;\n                    }\n                    children.push(item);\n                }\n                children = item.children;\n                parentTreeKeys = __spread(parentTreeKeys, [treeKey]);\n            });\n        };\n        var this_1 = this;\n        try {\n            for (var allKeys_1 = __values$1(allKeys), allKeys_1_1 = allKeys_1.next(); !allKeys_1_1.done; allKeys_1_1 = allKeys_1.next()) {\n                var key = allKeys_1_1.value;\n                _loop_1(key);\n            }\n        }\n        catch (e_1_1) { e_1 = { error: e_1_1 }; }\n        finally {\n            try {\n                if (allKeys_1_1 && !allKeys_1_1.done && (_a = allKeys_1.return)) _a.call(allKeys_1);\n            }\n            finally { if (e_1) throw e_1.error; }\n        }\n        // update the parent availability based on the children\n        this.updateAvailable(availableKeys);\n        this.selectAllItem.children = this.allDisplayedItemsTree;\n        this.selectAllItem.expanded = false;\n    };\n    TreeSetDisplayValueModel.prototype.getTreeListPathGetter = function (getValue, availableKeys) {\n        var e_2, _a;\n        if (this.treeListPathGetter) {\n            return this.treeListPathGetter;\n        }\n        if (this.treeDataOrGrouping) {\n            return function (value) { return value; };\n        }\n        // infer from data\n        var isDate = false;\n        try {\n            for (var availableKeys_1 = __values$1(availableKeys), availableKeys_1_1 = availableKeys_1.next(); !availableKeys_1_1.done; availableKeys_1_1 = availableKeys_1.next()) {\n                var availableKey = availableKeys_1_1.value;\n                // find the first non-null value\n                var value = getValue(availableKey);\n                if (value instanceof Date) {\n                    isDate = true;\n                    break;\n                }\n                else if (value != null) {\n                    break;\n                }\n            }\n        }\n        catch (e_2_1) { e_2 = { error: e_2_1 }; }\n        finally {\n            try {\n                if (availableKeys_1_1 && !availableKeys_1_1.done && (_a = availableKeys_1.return)) _a.call(availableKeys_1);\n            }\n            finally { if (e_2) throw e_2.error; }\n        }\n        if (isDate) {\n            return TreeSetDisplayValueModel.DATE_TREE_LIST_PATH_GETTER;\n        }\n        _.doOnce(function () { return console.warn('AG Grid: property treeList=true for Set Filter params, but you did not provide a treeListPathGetter or values of type Date.'); }, 'getTreeListPathGetter');\n        return function (value) { return [String(value)]; };\n    };\n    TreeSetDisplayValueModel.prototype.flattenItems = function () {\n        var _this = this;\n        this.activeDisplayedItemsFlat = [];\n        var recursivelyFlattenDisplayedItems = function (items) {\n            items.forEach(function (item) {\n                if (!item.filterPasses || !item.available) {\n                    return;\n                }\n                _this.activeDisplayedItemsFlat.push(item);\n                if (item.children && item.expanded) {\n                    recursivelyFlattenDisplayedItems(item.children);\n                }\n            });\n        };\n        recursivelyFlattenDisplayedItems(this.allDisplayedItemsTree);\n    };\n    TreeSetDisplayValueModel.prototype.resetFilter = function () {\n        var recursiveFilterReset = function (item) {\n            if (item.children) {\n                item.children.forEach(function (child) {\n                    recursiveFilterReset(child);\n                });\n            }\n            item.filterPasses = true;\n        };\n        this.allDisplayedItemsTree.forEach(function (item) { return recursiveFilterReset(item); });\n    };\n    TreeSetDisplayValueModel.prototype.updateFilter = function (matchesFilter, nullMatchesFilter) {\n        var _this = this;\n        var passesFilter = function (item) {\n            if (!item.available) {\n                return false;\n            }\n            if (item.treeKey == null) {\n                return nullMatchesFilter;\n            }\n            return matchesFilter(_this.formatter(_this.treeListFormatter ? _this.treeListFormatter(item.treeKey, item.depth, item.parentTreeKeys) : item.treeKey));\n        };\n        this.allDisplayedItemsTree.forEach(function (item) { return _this.recursiveItemCheck(item, false, passesFilter, 'filterPasses'); });\n    };\n    TreeSetDisplayValueModel.prototype.getDisplayedValueCount = function () {\n        return this.activeDisplayedItemsFlat.length;\n    };\n    TreeSetDisplayValueModel.prototype.getDisplayedItem = function (index) {\n        return this.activeDisplayedItemsFlat[index];\n    };\n    TreeSetDisplayValueModel.prototype.getSelectAllItem = function () {\n        return this.selectAllItem;\n    };\n    TreeSetDisplayValueModel.prototype.getDisplayedKeys = function () {\n        var displayedKeys = [];\n        this.forEachDisplayedKey(function (key) { return displayedKeys.push(key); });\n        return displayedKeys;\n    };\n    TreeSetDisplayValueModel.prototype.forEachDisplayedKey = function (func) {\n        var recursiveForEachItem = function (item, topParentExpanded) {\n            if (item.children) {\n                if (!item.expanded || !topParentExpanded) {\n                    // if the parent is not expanded, we need to iterate the entire tree\n                    item.children.forEach(function (child) {\n                        if (child.filterPasses) {\n                            recursiveForEachItem(child, false);\n                        }\n                    });\n                }\n            }\n            else {\n                func(item.key);\n            }\n        };\n        this.activeDisplayedItemsFlat.forEach(function (item) { return recursiveForEachItem(item, true); });\n    };\n    TreeSetDisplayValueModel.prototype.someDisplayedKey = function (func) {\n        var recursiveSomeItem = function (item, topParentExpanded) {\n            if (item.children) {\n                if (!item.expanded || !topParentExpanded) {\n                    // if the parent is not expanded, we need to iterate the entire tree\n                    return item.children.some(function (child) {\n                        if (child.filterPasses) {\n                            return recursiveSomeItem(child, false);\n                        }\n                        return false;\n                    });\n                }\n            }\n            else {\n                return func(item.key);\n            }\n            return false;\n        };\n        return this.activeDisplayedItemsFlat.some(function (item) { return recursiveSomeItem(item, true); });\n    };\n    TreeSetDisplayValueModel.prototype.hasGroups = function () {\n        return this.groupsExist;\n    };\n    TreeSetDisplayValueModel.prototype.refresh = function () {\n        this.updateExpandAll();\n        this.flattenItems();\n    };\n    TreeSetDisplayValueModel.prototype.updateExpandAll = function () {\n        var recursiveExpansionCheck = function (items, someTrue, someFalse) {\n            var e_3, _a;\n            try {\n                for (var items_1 = __values$1(items), items_1_1 = items_1.next(); !items_1_1.done; items_1_1 = items_1.next()) {\n                    var item_1 = items_1_1.value;\n                    if (!item_1.filterPasses || !item_1.available || !item_1.children) {\n                        continue;\n                    }\n                    // indeterminate state only exists for expand all, so don't need to check for the current item\n                    someTrue = someTrue || !!item_1.expanded;\n                    someFalse = someFalse || !item_1.expanded;\n                    if (someTrue && someFalse) {\n                        // already indeterminate. No need to check the children\n                        return undefined;\n                    }\n                    var childExpanded = recursiveExpansionCheck(item_1.children, someTrue, someFalse);\n                    if (childExpanded === undefined) {\n                        return undefined;\n                    }\n                    else if (childExpanded) {\n                        someTrue = true;\n                    }\n                    else {\n                        someFalse = true;\n                    }\n                }\n            }\n            catch (e_3_1) { e_3 = { error: e_3_1 }; }\n            finally {\n                try {\n                    if (items_1_1 && !items_1_1.done && (_a = items_1.return)) _a.call(items_1);\n                }\n                finally { if (e_3) throw e_3.error; }\n            }\n            return someTrue && someFalse ? undefined : someTrue;\n        };\n        var item = this.getSelectAllItem();\n        item.expanded = recursiveExpansionCheck(item.children, false, false);\n    };\n    TreeSetDisplayValueModel.prototype.recursiveItemCheck = function (item, parentPasses, checkFunction, itemProp) {\n        var _this = this;\n        var atLeastOneChildPassed = false;\n        if (item.children) {\n            item.children.forEach(function (child) {\n                var childPasses = _this.recursiveItemCheck(child, parentPasses || checkFunction(item), checkFunction, itemProp);\n                atLeastOneChildPassed = atLeastOneChildPassed || childPasses;\n            });\n        }\n        var itemPasses = parentPasses || atLeastOneChildPassed || checkFunction(item);\n        item[itemProp] = itemPasses;\n        return itemPasses;\n    };\n    TreeSetDisplayValueModel.prototype.updateAvailable = function (availableKeys) {\n        var _this = this;\n        var isAvailable = function (item) { return availableKeys.has(item.key); };\n        this.allDisplayedItemsTree.forEach(function (item) { return _this.recursiveItemCheck(item, false, isAvailable, 'available'); });\n    };\n    TreeSetDisplayValueModel.DATE_TREE_LIST_PATH_GETTER = function (date) { return date ? [String(date.getFullYear()), String(date.getMonth() + 1), String(date.getDate())] : null; };\n    return TreeSetDisplayValueModel;\n}());\n\nvar __read = (undefined && undefined.__read) || function (o, n) {\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n    if (!m) return o;\n    var i = m.call(o), r, ar = [], e;\n    try {\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n    }\n    catch (error) { e = { error: error }; }\n    finally {\n        try {\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\n        }\n        finally { if (e) throw e.error; }\n    }\n    return ar;\n};\nvar SetFilterModelValuesType;\n(function (SetFilterModelValuesType) {\n    SetFilterModelValuesType[SetFilterModelValuesType[\"PROVIDED_LIST\"] = 0] = \"PROVIDED_LIST\";\n    SetFilterModelValuesType[SetFilterModelValuesType[\"PROVIDED_CALLBACK\"] = 1] = \"PROVIDED_CALLBACK\";\n    SetFilterModelValuesType[SetFilterModelValuesType[\"TAKEN_FROM_GRID_VALUES\"] = 2] = \"TAKEN_FROM_GRID_VALUES\";\n})(SetFilterModelValuesType || (SetFilterModelValuesType = {}));\n/** @param V type of value in the Set Filter */\nvar SetValueModel = /** @class */ (function () {\n    function SetValueModel(params) {\n        var _this = this;\n        var _a;\n        this.localEventService = new EventService();\n        this.miniFilterText = null;\n        /** Values provided to the filter for use. */\n        this.providedValues = null;\n        /** All possible values for the filter, sorted if required. */\n        this.allValues = new Map();\n        /** Remaining keys when filters from other columns have been applied. */\n        this.availableKeys = new Set();\n        /** Keys that have been selected for this filter. */\n        this.selectedKeys = new Set();\n        this.initialised = false;\n        var usingComplexObjects = params.usingComplexObjects, columnModel = params.columnModel, valueService = params.valueService, treeDataTreeList = params.treeDataTreeList, groupingTreeList = params.groupingTreeList, filterParams = params.filterParams, gridOptionsService = params.gridOptionsService, valueFormatterService = params.valueFormatterService, valueFormatter = params.valueFormatter;\n        var column = filterParams.column, colDef = filterParams.colDef, textFormatter = filterParams.textFormatter, doesRowPassOtherFilter = filterParams.doesRowPassOtherFilter, suppressSorting = filterParams.suppressSorting, comparator = filterParams.comparator, rowModel = filterParams.rowModel, values = filterParams.values, caseSensitive = filterParams.caseSensitive, convertValuesToStrings = filterParams.convertValuesToStrings, treeList = filterParams.treeList, treeListPathGetter = filterParams.treeListPathGetter, treeListFormatter = filterParams.treeListFormatter;\n        this.filterParams = filterParams;\n        this.setIsLoading = params.setIsLoading;\n        this.translate = params.translate;\n        this.caseFormat = params.caseFormat;\n        this.createKey = params.createKey;\n        this.usingComplexObjects = !!params.usingComplexObjects;\n        this.formatter = textFormatter || TextFilter.DEFAULT_FORMATTER;\n        this.doesRowPassOtherFilters = doesRowPassOtherFilter;\n        this.suppressSorting = suppressSorting || false;\n        this.convertValuesToStrings = !!convertValuesToStrings;\n        var keyComparator = comparator !== null && comparator !== void 0 ? comparator : colDef.comparator;\n        var treeDataOrGrouping = !!treeDataTreeList || !!groupingTreeList;\n        // If using complex objects and a comparator is provided, sort by values, otherwise need to sort by the string keys.\n        // Also if tree data, grouping, or date with tree list, then need to do value sort\n        this.compareByValue = !!((usingComplexObjects && keyComparator) || treeDataOrGrouping || (treeList && !treeListPathGetter));\n        if (treeDataOrGrouping && !keyComparator) {\n            this.entryComparator = this.createTreeDataOrGroupingComparator();\n        }\n        else if (treeList && !treeListPathGetter && !keyComparator) {\n            this.entryComparator = function (_a, _b) {\n                var _c = __read(_a, 2); _c[0]; var aValue = _c[1];\n                var _d = __read(_b, 2); _d[0]; var bValue = _d[1];\n                return _.defaultComparator(aValue, bValue);\n            };\n        }\n        else {\n            this.entryComparator = function (_a, _b) {\n                var _c = __read(_a, 2); _c[0]; var aValue = _c[1];\n                var _d = __read(_b, 2); _d[0]; var bValue = _d[1];\n                return keyComparator(aValue, bValue);\n            };\n        }\n        this.keyComparator = (_a = keyComparator) !== null && _a !== void 0 ? _a : _.defaultComparator;\n        this.caseSensitive = !!caseSensitive;\n        var getDataPath = gridOptionsService.get('getDataPath');\n        if (rowModel.getType() === 'clientSide') {\n            this.clientSideValuesExtractor = new ClientSideValuesExtractor(rowModel, this.filterParams, this.createKey, this.caseFormat, columnModel, valueService, treeDataOrGrouping, !!treeDataTreeList, getDataPath);\n        }\n        if (values == null) {\n            this.valuesType = SetFilterModelValuesType.TAKEN_FROM_GRID_VALUES;\n        }\n        else {\n            this.valuesType = Array.isArray(values) ?\n                SetFilterModelValuesType.PROVIDED_LIST :\n                SetFilterModelValuesType.PROVIDED_CALLBACK;\n            this.providedValues = values;\n        }\n        this.displayValueModel = treeList ? new TreeSetDisplayValueModel(this.formatter, treeListPathGetter, treeListFormatter, treeDataTreeList || groupingTreeList) : new FlatSetDisplayValueModel(valueFormatterService, valueFormatter, this.formatter, column);\n        this.updateAllValues().then(function (updatedKeys) { return _this.resetSelectionState(updatedKeys || []); });\n    }\n    SetValueModel.prototype.addEventListener = function (eventType, listener, async) {\n        this.localEventService.addEventListener(eventType, listener, async);\n    };\n    SetValueModel.prototype.removeEventListener = function (eventType, listener, async) {\n        this.localEventService.removeEventListener(eventType, listener, async);\n    };\n    /**\n     * Re-fetches the values used in the filter from the value source.\n     * If keepSelection is false, the filter selection will be reset to everything selected,\n     * otherwise the current selection will be preserved.\n     */\n    SetValueModel.prototype.refreshValues = function () {\n        var currentModel = this.getModel();\n        this.updateAllValues();\n        // ensure model is updated for new values\n        return this.setModel(currentModel);\n    };\n    /**\n     * Overrides the current values being used for the set filter.\n     * If keepSelection is false, the filter selection will be reset to everything selected,\n     * otherwise the current selection will be preserved.\n     */\n    SetValueModel.prototype.overrideValues = function (valuesToUse) {\n        var _this = this;\n        return new AgPromise(function (resolve) {\n            // wait for any existing values to be populated before overriding\n            _this.allValuesPromise.then(function () {\n                _this.valuesType = SetFilterModelValuesType.PROVIDED_LIST;\n                _this.providedValues = valuesToUse;\n                _this.refreshValues().then(function () { return resolve(); });\n            });\n        });\n    };\n    /** @return has anything been updated */\n    SetValueModel.prototype.refreshAfterAnyFilterChanged = function () {\n        var _this = this;\n        if (this.showAvailableOnly()) {\n            return this.allValuesPromise.then(function (keys) {\n                _this.updateAvailableKeys(keys !== null && keys !== void 0 ? keys : [], 'otherFilter');\n                return true;\n            });\n        }\n        return AgPromise.resolve(false);\n    };\n    SetValueModel.prototype.isInitialised = function () {\n        return this.initialised;\n    };\n    SetValueModel.prototype.updateAllValues = function () {\n        var _this = this;\n        this.allValuesPromise = new AgPromise(function (resolve) {\n            switch (_this.valuesType) {\n                case SetFilterModelValuesType.TAKEN_FROM_GRID_VALUES:\n                case SetFilterModelValuesType.PROVIDED_LIST: {\n                    resolve(_this.processAllKeys(_this.valuesType === SetFilterModelValuesType.TAKEN_FROM_GRID_VALUES, _this.providedValues));\n                    break;\n                }\n                case SetFilterModelValuesType.PROVIDED_CALLBACK: {\n                    _this.setIsLoading(true);\n                    var callback_1 = _this.providedValues;\n                    var _a = _this.filterParams, columnApi = _a.columnApi, api = _a.api, context = _a.context, column = _a.column, colDef = _a.colDef;\n                    var params_1 = {\n                        success: function (values) {\n                            _this.setIsLoading(false);\n                            resolve(_this.processAllKeys(false, values));\n                        },\n                        colDef: colDef,\n                        column: column,\n                        columnApi: columnApi,\n                        api: api,\n                        context: context,\n                    };\n                    window.setTimeout(function () { return callback_1(params_1); }, 0);\n                    break;\n                }\n                default:\n                    throw new Error('Unrecognised valuesType');\n            }\n        });\n        this.allValuesPromise.then(function (values) { return _this.updateAvailableKeys(values || [], 'reload'); }).then(function () { return _this.initialised = true; });\n        return this.allValuesPromise;\n    };\n    SetValueModel.prototype.processAllKeys = function (getFromRows, providedValues) {\n        var values = getFromRows ? this.getValuesFromRows(false) : this.uniqueValues(this.validateProvidedValues(providedValues));\n        var sortedKeys = this.sortKeys(values);\n        this.allValues = values !== null && values !== void 0 ? values : new Map();\n        return sortedKeys;\n    };\n    SetValueModel.prototype.validateProvidedValues = function (values) {\n        if (this.usingComplexObjects && (values === null || values === void 0 ? void 0 : values.length)) {\n            var firstValue = values[0];\n            if (firstValue && typeof firstValue !== 'object' && typeof firstValue !== 'function') {\n                var firstKey = this.createKey(firstValue);\n                if (firstKey == null) {\n                    _.doOnce(function () { return console.warn('Set Filter Key Creator is returning null for provided values and provided values are primitives. Please provide complex objects or set convertValuesToStrings=true in the filterParams. See https://www.ag-grid.com/javascript-data-grid/filter-set-filter-list/#filter-value-types'); }, 'setFilterComplexObjectsProvidedNull');\n                }\n                else {\n                    _.doOnce(function () { return console.warn('AG Grid: Set Filter has a Key Creator, but provided values are primitives. Did you mean to provide complex objects or enable convertValuesToStrings?'); }, 'setFilterComplexObjectsProvidedPrimitive');\n                }\n            }\n        }\n        return values;\n    };\n    SetValueModel.prototype.setValuesType = function (value) {\n        this.valuesType = value;\n    };\n    SetValueModel.prototype.getValuesType = function () {\n        return this.valuesType;\n    };\n    SetValueModel.prototype.isKeyAvailable = function (key) {\n        return this.availableKeys.has(key);\n    };\n    SetValueModel.prototype.showAvailableOnly = function () {\n        return this.valuesType === SetFilterModelValuesType.TAKEN_FROM_GRID_VALUES;\n    };\n    SetValueModel.prototype.updateAvailableKeys = function (allKeys, source) {\n        var availableKeys = this.showAvailableOnly() ? this.sortKeys(this.getValuesFromRows(true)) : allKeys;\n        this.availableKeys = new Set(availableKeys);\n        this.localEventService.dispatchEvent({ type: SetValueModel.EVENT_AVAILABLE_VALUES_CHANGED });\n        this.updateDisplayedValues(source, allKeys);\n    };\n    SetValueModel.prototype.sortKeys = function (nullableValues) {\n        var values = nullableValues !== null && nullableValues !== void 0 ? nullableValues : new Map();\n        if (this.suppressSorting) {\n            return Array.from(values.keys());\n        }\n        var sortedKeys;\n        if (this.compareByValue) {\n            sortedKeys = Array.from(values.entries()).sort(this.entryComparator).map(function (_a) {\n                var _b = __read(_a, 1), key = _b[0];\n                return key;\n            });\n        }\n        else {\n            sortedKeys = Array.from(values.keys()).sort(this.keyComparator);\n        }\n        if (this.filterParams.excelMode && values.has(null)) {\n            // ensure the blank value always appears last\n            sortedKeys = sortedKeys.filter(function (v) { return v != null; });\n            sortedKeys.push(null);\n        }\n        return sortedKeys;\n    };\n    SetValueModel.prototype.getValuesFromRows = function (removeUnavailableValues) {\n        var _this = this;\n        if (removeUnavailableValues === void 0) { removeUnavailableValues = false; }\n        if (!this.clientSideValuesExtractor) {\n            console.error('AG Grid: Set Filter cannot initialise because you are using a row model that does not contain all rows in the browser. Either use a different filter type, or configure Set Filter such that you provide it with values');\n            return null;\n        }\n        var predicate = function (node) { return (!removeUnavailableValues || _this.doesRowPassOtherFilters(node)); };\n        return this.clientSideValuesExtractor.extractUniqueValues(predicate, removeUnavailableValues && !this.caseSensitive ? this.allValues : undefined);\n    };\n    /** Sets mini filter value. Returns true if it changed from last value, otherwise false. */\n    SetValueModel.prototype.setMiniFilter = function (value) {\n        value = _.makeNull(value);\n        if (this.miniFilterText === value) {\n            //do nothing if filter has not changed\n            return false;\n        }\n        this.miniFilterText = value;\n        this.updateDisplayedValues('miniFilter');\n        return true;\n    };\n    SetValueModel.prototype.getMiniFilter = function () {\n        return this.miniFilterText;\n    };\n    SetValueModel.prototype.updateDisplayedValues = function (source, allKeys) {\n        var _this = this;\n        if (source === 'expansion') {\n            this.displayValueModel.refresh();\n            return;\n        }\n        // if no filter, just display all available values\n        if (this.miniFilterText == null) {\n            this.displayValueModel.updateDisplayedValuesToAllAvailable(function (key) { return _this.getValue(key); }, allKeys, this.availableKeys, source);\n            return;\n        }\n        // if filter present, we filter down the list\n        // to allow for case insensitive searches, upper-case both filter text and value\n        var formattedFilterText = this.caseFormat(this.formatter(this.miniFilterText) || '');\n        var matchesFilter = function (valueToCheck) {\n            return valueToCheck != null && _this.caseFormat(valueToCheck).indexOf(formattedFilterText) >= 0;\n        };\n        var nullMatchesFilter = !!this.filterParams.excelMode && matchesFilter(this.translate('blanks'));\n        this.displayValueModel.updateDisplayedValuesToMatchMiniFilter(function (key) { return _this.getValue(key); }, allKeys, this.availableKeys, matchesFilter, nullMatchesFilter, source);\n    };\n    SetValueModel.prototype.getDisplayedValueCount = function () {\n        return this.displayValueModel.getDisplayedValueCount();\n    };\n    SetValueModel.prototype.getDisplayedItem = function (index) {\n        return this.displayValueModel.getDisplayedItem(index);\n    };\n    SetValueModel.prototype.getSelectAllItem = function () {\n        return this.displayValueModel.getSelectAllItem();\n    };\n    SetValueModel.prototype.hasSelections = function () {\n        return this.filterParams.defaultToNothingSelected ?\n            this.selectedKeys.size > 0 :\n            this.allValues.size !== this.selectedKeys.size;\n    };\n    SetValueModel.prototype.getKeys = function () {\n        return Array.from(this.allValues.keys());\n    };\n    SetValueModel.prototype.getValues = function () {\n        return Array.from(this.allValues.values());\n    };\n    SetValueModel.prototype.getValue = function (key) {\n        return this.allValues.get(key);\n    };\n    SetValueModel.prototype.selectAllMatchingMiniFilter = function (clearExistingSelection) {\n        var _this = this;\n        if (clearExistingSelection === void 0) { clearExistingSelection = false; }\n        if (this.miniFilterText == null) {\n            // ensure everything is selected\n            this.selectedKeys = new Set(this.allValues.keys());\n        }\n        else {\n            // ensure everything that matches the mini filter is selected\n            if (clearExistingSelection) {\n                this.selectedKeys.clear();\n            }\n            this.displayValueModel.forEachDisplayedKey(function (key) { return _this.selectedKeys.add(key); });\n        }\n    };\n    SetValueModel.prototype.deselectAllMatchingMiniFilter = function () {\n        var _this = this;\n        if (this.miniFilterText == null) {\n            // ensure everything is deselected\n            this.selectedKeys.clear();\n        }\n        else {\n            // ensure everything that matches the mini filter is deselected\n            this.displayValueModel.forEachDisplayedKey(function (key) { return _this.selectedKeys.delete(key); });\n        }\n    };\n    SetValueModel.prototype.selectKey = function (key) {\n        this.selectedKeys.add(key);\n    };\n    SetValueModel.prototype.deselectKey = function (key) {\n        if (this.filterParams.excelMode && this.isEverythingVisibleSelected()) {\n            // ensure we're starting from the correct \"everything selected\" state\n            this.resetSelectionState(this.displayValueModel.getDisplayedKeys());\n        }\n        this.selectedKeys.delete(key);\n    };\n    SetValueModel.prototype.isKeySelected = function (key) {\n        return this.selectedKeys.has(key);\n    };\n    SetValueModel.prototype.isEverythingVisibleSelected = function () {\n        var _this = this;\n        return !this.displayValueModel.someDisplayedKey(function (it) { return !_this.isKeySelected(it); });\n    };\n    SetValueModel.prototype.isNothingVisibleSelected = function () {\n        var _this = this;\n        return !this.displayValueModel.someDisplayedKey(function (it) { return _this.isKeySelected(it); });\n    };\n    SetValueModel.prototype.getModel = function () {\n        return this.hasSelections() ? Array.from(this.selectedKeys) : null;\n    };\n    SetValueModel.prototype.setModel = function (model) {\n        var _this = this;\n        return this.allValuesPromise.then(function (keys) {\n            if (model == null) {\n                _this.resetSelectionState(keys !== null && keys !== void 0 ? keys : []);\n            }\n            else {\n                // select all values from the model that exist in the filter\n                _this.selectedKeys.clear();\n                var existingFormattedKeys_1 = new Map();\n                _this.allValues.forEach(function (_value, key) {\n                    existingFormattedKeys_1.set(_this.caseFormat(key), key);\n                });\n                model.forEach(function (unformattedKey) {\n                    var formattedKey = _this.caseFormat(unformattedKey);\n                    var existingUnformattedKey = existingFormattedKeys_1.get(formattedKey);\n                    if (existingUnformattedKey !== undefined) {\n                        _this.selectKey(existingUnformattedKey);\n                    }\n                });\n            }\n        });\n    };\n    SetValueModel.prototype.uniqueValues = function (values) {\n        var _this = this;\n        var uniqueValues = new Map();\n        var formattedKeys = new Set();\n        (values !== null && values !== void 0 ? values : []).forEach(function (value) {\n            var valueToUse = _.makeNull(value);\n            var unformattedKey = _this.convertAndGetKey(valueToUse);\n            var formattedKey = _this.caseFormat(unformattedKey);\n            if (!formattedKeys.has(formattedKey)) {\n                formattedKeys.add(formattedKey);\n                uniqueValues.set(unformattedKey, valueToUse);\n            }\n        });\n        return uniqueValues;\n    };\n    SetValueModel.prototype.convertAndGetKey = function (value) {\n        return this.convertValuesToStrings ? value : this.createKey(value);\n    };\n    SetValueModel.prototype.resetSelectionState = function (keys) {\n        if (this.filterParams.defaultToNothingSelected) {\n            this.selectedKeys.clear();\n        }\n        else {\n            this.selectedKeys = new Set(keys);\n        }\n    };\n    SetValueModel.prototype.hasGroups = function () {\n        return this.displayValueModel.hasGroups();\n    };\n    SetValueModel.prototype.createTreeDataOrGroupingComparator = function () {\n        return function (_a, _b) {\n            var _c = __read(_a, 2); _c[0]; var aValue = _c[1];\n            var _d = __read(_b, 2); _d[0]; var bValue = _d[1];\n            if (aValue == null) {\n                return bValue == null ? 0 : -1;\n            }\n            else if (bValue == null) {\n                return 1;\n            }\n            for (var i = 0; i < aValue.length; i++) {\n                if (i >= bValue.length) {\n                    return 1;\n                }\n                var diff = _.defaultComparator(aValue[i], bValue[i]);\n                if (diff !== 0) {\n                    return diff;\n                }\n            }\n            return 0;\n        };\n    };\n    SetValueModel.EVENT_AVAILABLE_VALUES_CHANGED = 'availableValuesChanged';\n    return SetValueModel;\n}());\n\nvar __extends$i = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$d = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n/** @param V type of value in the Set Filter */\nvar SetFilterListItem = /** @class */ (function (_super) {\n    __extends$i(SetFilterListItem, _super);\n    function SetFilterListItem(params) {\n        var _a;\n        var _this = _super.call(this, params.isGroup ? SetFilterListItem.GROUP_TEMPLATE : SetFilterListItem.TEMPLATE) || this;\n        _this.focusWrapper = params.focusWrapper;\n        _this.value = params.value;\n        _this.params = params.params;\n        _this.translate = params.translate;\n        _this.valueFormatter = params.valueFormatter;\n        _this.item = params.item;\n        _this.isSelected = params.isSelected;\n        _this.isTree = params.isTree;\n        _this.depth = (_a = params.depth) !== null && _a !== void 0 ? _a : 0;\n        _this.isGroup = params.isGroup;\n        _this.groupsExist = params.groupsExist;\n        _this.isExpanded = params.isExpanded;\n        _this.hasIndeterminateExpandState = params.hasIndeterminateExpandState;\n        return _this;\n    }\n    SetFilterListItem.prototype.init = function () {\n        var _this = this;\n        this.render();\n        this.eCheckbox.setLabelEllipsis(true);\n        this.eCheckbox.setValue(this.isSelected, true);\n        this.eCheckbox.setDisabled(!!this.params.readOnly);\n        this.eCheckbox.getInputElement().setAttribute('tabindex', '-1');\n        this.refreshVariableAriaLabels();\n        if (this.isTree) {\n            if (this.depth > 0) {\n                this.addCssClass('ag-set-filter-indent-' + this.depth);\n            }\n            if (this.isGroup) {\n                this.setupExpansion();\n            }\n            else {\n                if (this.groupsExist) {\n                    this.addCssClass('ag-set-filter-add-group-indent');\n                }\n            }\n            _.setAriaLevel(this.focusWrapper, this.depth + 1);\n        }\n        if (!!this.params.readOnly) {\n            // Don't add event listeners if we're read-only.\n            return;\n        }\n        this.eCheckbox.onValueChange(function (value) { return _this.onCheckboxChanged(!!value); });\n    };\n    SetFilterListItem.prototype.setupExpansion = function () {\n        this.eGroupClosedIcon.appendChild(_.createIcon('setFilterGroupClosed', this.gridOptionsService, null));\n        this.eGroupOpenedIcon.appendChild(_.createIcon('setFilterGroupOpen', this.gridOptionsService, null));\n        this.addManagedListener(this.eGroupClosedIcon, 'click', this.onExpandOrContractClicked.bind(this));\n        this.addManagedListener(this.eGroupOpenedIcon, 'click', this.onExpandOrContractClicked.bind(this));\n        if (this.hasIndeterminateExpandState) {\n            this.eGroupIndeterminateIcon.appendChild(_.createIcon('setFilterGroupIndeterminate', this.gridOptionsService, null));\n            this.addManagedListener(this.eGroupIndeterminateIcon, 'click', this.onExpandOrContractClicked.bind(this));\n        }\n        this.setExpandedIcons();\n        this.refreshAriaExpanded();\n    };\n    SetFilterListItem.prototype.onExpandOrContractClicked = function () {\n        this.setExpanded(!this.isExpanded);\n    };\n    SetFilterListItem.prototype.setExpanded = function (isExpanded, silent) {\n        if (this.isGroup && isExpanded !== this.isExpanded) {\n            this.isExpanded = isExpanded;\n            var event_1 = {\n                type: SetFilterListItem.EVENT_EXPANDED_CHANGED,\n                isExpanded: !!isExpanded,\n                item: this.item\n            };\n            if (!silent) {\n                this.dispatchEvent(event_1);\n            }\n            this.setExpandedIcons();\n            this.refreshAriaExpanded();\n        }\n    };\n    SetFilterListItem.prototype.refreshAriaExpanded = function () {\n        _.setAriaExpanded(this.focusWrapper, !!this.isExpanded);\n    };\n    SetFilterListItem.prototype.setExpandedIcons = function () {\n        _.setDisplayed(this.eGroupClosedIcon, this.hasIndeterminateExpandState ? this.isExpanded === false : !this.isExpanded);\n        _.setDisplayed(this.eGroupOpenedIcon, this.isExpanded === true);\n        if (this.hasIndeterminateExpandState) {\n            _.setDisplayed(this.eGroupIndeterminateIcon, this.isExpanded === undefined);\n        }\n    };\n    SetFilterListItem.prototype.onCheckboxChanged = function (isSelected) {\n        this.isSelected = isSelected;\n        var event = {\n            type: SetFilterListItem.EVENT_SELECTION_CHANGED,\n            isSelected: isSelected,\n            item: this.item\n        };\n        this.dispatchEvent(event);\n        this.refreshVariableAriaLabels();\n    };\n    SetFilterListItem.prototype.toggleSelected = function () {\n        if (!!this.params.readOnly) {\n            return;\n        }\n        this.setSelected(!this.isSelected);\n    };\n    SetFilterListItem.prototype.setSelected = function (isSelected, silent) {\n        this.isSelected = isSelected;\n        this.eCheckbox.setValue(this.isSelected, silent);\n    };\n    SetFilterListItem.prototype.refreshVariableAriaLabels = function () {\n        if (!this.isTree) {\n            return;\n        }\n        var translate = this.localeService.getLocaleTextFunc();\n        var checkboxValue = this.eCheckbox.getValue();\n        var state = checkboxValue === undefined ?\n            translate('ariaIndeterminate', 'indeterminate') :\n            (checkboxValue ? translate('ariaVisible', 'visible') : translate('ariaHidden', 'hidden'));\n        var visibilityLabel = translate('ariaToggleVisibility', 'Press SPACE to toggle visibility');\n        _.setAriaLabelledBy(this.eCheckbox.getInputElement(), undefined);\n        this.eCheckbox.setInputAriaLabel(visibilityLabel + \" (\" + state + \")\");\n    };\n    SetFilterListItem.prototype.setupFixedAriaLabels = function (value) {\n        if (!this.isTree) {\n            return;\n        }\n        var translate = this.localeService.getLocaleTextFunc();\n        var itemLabel = translate('ariaFilterValue', 'Filter Value');\n        _.setAriaLabel(this.focusWrapper, value + \" \" + itemLabel);\n        _.setAriaDescribedBy(this.focusWrapper, this.eCheckbox.getInputElement().id);\n    };\n    SetFilterListItem.prototype.refresh = function (item, isSelected, isExpanded) {\n        var _a, _b;\n        this.item = item;\n        // setExpanded checks if value has changed, setSelected does not\n        if (isSelected !== this.isSelected) {\n            this.setSelected(isSelected, true);\n        }\n        this.setExpanded(isExpanded, true);\n        if (this.valueFunction) {\n            // underlying value might have changed, so call again and re-render\n            var value = this.valueFunction();\n            this.setTooltipAndCellRendererParams(value, value);\n            if (!this.cellRendererComponent) {\n                this.renderCellWithoutCellRenderer();\n            }\n        }\n        (_b = (_a = this.cellRendererComponent) === null || _a === void 0 ? void 0 : _a.refresh) === null || _b === void 0 ? void 0 : _b.call(_a, this.cellRendererParams);\n    };\n    SetFilterListItem.prototype.render = function () {\n        var column = this.params.column;\n        var value = this.value;\n        var formattedValue = null;\n        if (typeof value === 'function') {\n            this.valueFunction = value;\n            formattedValue = this.valueFunction();\n            // backwards compatibility for select all in value\n            value = formattedValue;\n        }\n        else if (this.isTree) {\n            // tree values are already formatted via treeListFormatter\n            formattedValue = _.toStringOrNull(value);\n        }\n        else {\n            formattedValue = this.getFormattedValue(column, value);\n        }\n        this.setTooltipAndCellRendererParams(value, formattedValue);\n        this.renderCell();\n    };\n    SetFilterListItem.prototype.setTooltipAndCellRendererParams = function (value, formattedValue) {\n        if (this.params.showTooltips) {\n            var tooltipValue = formattedValue != null ? formattedValue : _.toStringOrNull(value);\n            this.setTooltip(tooltipValue);\n        }\n        this.cellRendererParams = {\n            value: value,\n            valueFormatted: formattedValue,\n            api: this.gridOptionsService.api,\n            columnApi: this.gridOptionsService.columnApi,\n            context: this.gridOptionsService.context,\n            colDef: this.params.colDef,\n            column: this.params.column,\n        };\n    };\n    SetFilterListItem.prototype.getTooltipParams = function () {\n        var res = _super.prototype.getTooltipParams.call(this);\n        res.location = 'setFilterValue';\n        res.colDef = this.getComponentHolder();\n        if (this.isTree) {\n            res.level = this.depth;\n        }\n        return res;\n    };\n    SetFilterListItem.prototype.getFormattedValue = function (column, value) {\n        return this.valueFormatterService.formatValue(column, null, value, this.valueFormatter, false);\n    };\n    SetFilterListItem.prototype.renderCell = function () {\n        var _this = this;\n        var compDetails = this.userComponentFactory.getSetFilterCellRendererDetails(this.params, this.cellRendererParams);\n        var cellRendererPromise = compDetails ? compDetails.newAgStackInstance() : undefined;\n        if (cellRendererPromise == null) {\n            this.renderCellWithoutCellRenderer();\n            return;\n        }\n        cellRendererPromise.then(function (component) {\n            if (component) {\n                _this.cellRendererComponent = component;\n                _this.eCheckbox.setLabel(component.getGui());\n                _this.addDestroyFunc(function () { return _this.destroyBean(component); });\n            }\n        });\n    };\n    SetFilterListItem.prototype.renderCellWithoutCellRenderer = function () {\n        var _a;\n        var valueToRender = (_a = (this.cellRendererParams.valueFormatted == null ? this.cellRendererParams.value : this.cellRendererParams.valueFormatted)) !== null && _a !== void 0 ? _a : this.translate('blanks');\n        if (typeof valueToRender !== 'string') {\n            _.doOnce(function () { return console.warn('AG Grid: Set Filter Value Formatter must return string values. Please ensure the Set Filter Value Formatter returns string values for complex objects, or set convertValuesToStrings=true in the filterParams. See https://www.ag-grid.com/javascript-data-grid/filter-set-filter-list/#filter-value-types'); }, 'setFilterComplexObjectsValueFormatter');\n            valueToRender = '';\n        }\n        this.eCheckbox.setLabel(valueToRender);\n        this.setupFixedAriaLabels(valueToRender);\n    };\n    SetFilterListItem.prototype.getComponentHolder = function () {\n        return this.params.column.getColDef();\n    };\n    SetFilterListItem.EVENT_SELECTION_CHANGED = 'selectionChanged';\n    SetFilterListItem.EVENT_EXPANDED_CHANGED = 'expandedChanged';\n    SetFilterListItem.GROUP_TEMPLATE = \"\\n        <div class=\\\"ag-set-filter-item\\\" aria-hidden=\\\"true\\\">\\n            <span class=\\\"ag-set-filter-group-icons\\\">\\n                <span class=\\\"ag-set-filter-group-closed-icon\\\" ref=\\\"eGroupClosedIcon\\\"></span>\\n                <span class=\\\"ag-set-filter-group-opened-icon\\\" ref=\\\"eGroupOpenedIcon\\\"></span>\\n                <span class=\\\"ag-set-filter-group-indeterminate-icon\\\" ref=\\\"eGroupIndeterminateIcon\\\"></span>\\n            </span>\\n            <ag-checkbox ref=\\\"eCheckbox\\\" class=\\\"ag-set-filter-item-checkbox\\\"></ag-checkbox>\\n        </div>\";\n    SetFilterListItem.TEMPLATE = \"\\n        <div class=\\\"ag-set-filter-item\\\">\\n            <ag-checkbox ref=\\\"eCheckbox\\\" class=\\\"ag-set-filter-item-checkbox\\\"></ag-checkbox>\\n        </div>\";\n    __decorate$d([\n        Autowired('valueFormatterService')\n    ], SetFilterListItem.prototype, \"valueFormatterService\", void 0);\n    __decorate$d([\n        Autowired('userComponentFactory')\n    ], SetFilterListItem.prototype, \"userComponentFactory\", void 0);\n    __decorate$d([\n        RefSelector('eCheckbox')\n    ], SetFilterListItem.prototype, \"eCheckbox\", void 0);\n    __decorate$d([\n        RefSelector('eGroupOpenedIcon')\n    ], SetFilterListItem.prototype, \"eGroupOpenedIcon\", void 0);\n    __decorate$d([\n        RefSelector('eGroupClosedIcon')\n    ], SetFilterListItem.prototype, \"eGroupClosedIcon\", void 0);\n    __decorate$d([\n        RefSelector('eGroupIndeterminateIcon')\n    ], SetFilterListItem.prototype, \"eGroupIndeterminateIcon\", void 0);\n    __decorate$d([\n        PostConstruct\n    ], SetFilterListItem.prototype, \"init\", null);\n    return SetFilterListItem;\n}(Component));\n\nvar DEFAULT_LOCALE_TEXT = {\n    loadingOoo: 'Loading...',\n    blanks: '(Blanks)',\n    searchOoo: 'Search...',\n    selectAll: '(Select All)',\n    selectAllSearchResults: '(Select All Search Results)',\n    noMatches: 'No matches.'\n};\n\nvar SetFilterModelFormatter = /** @class */ (function () {\n    function SetFilterModelFormatter() {\n    }\n    SetFilterModelFormatter.prototype.getModelAsString = function (model, setFilter) {\n        var values = (model || setFilter.getModel() || {}).values;\n        var valueModel = setFilter.getValueModel();\n        if (values == null || valueModel == null) {\n            return '';\n        }\n        var availableKeys = values.filter(function (v) { return valueModel.isKeyAvailable(v); });\n        var numValues = availableKeys.length;\n        var formattedValues = availableKeys.slice(0, 10).map(function (key) { return setFilter.getFormattedValue(key); });\n        return \"(\" + numValues + \") \" + formattedValues.join(',') + (numValues > 10 ? ',...' : '');\n    };\n    return SetFilterModelFormatter;\n}());\n\nvar __extends$h = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$c = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n/** @param V type of value in the Set Filter */\nvar SetFilter = /** @class */ (function (_super) {\n    __extends$h(SetFilter, _super);\n    function SetFilter() {\n        var _this = _super.call(this, 'setFilter') || this;\n        _this.valueModel = null;\n        _this.setFilterParams = null;\n        _this.virtualList = null;\n        _this.caseSensitive = false;\n        _this.convertValuesToStrings = false;\n        _this.treeDataTreeList = false;\n        _this.groupingTreeList = false;\n        _this.hardRefreshVirtualList = false;\n        _this.noValueFormatterSupplied = false;\n        // To make the filtering super fast, we store the keys in an Set rather than using the default array\n        _this.appliedModelKeys = null;\n        _this.noAppliedModelKeys = false;\n        _this.filterModelFormatter = new SetFilterModelFormatter();\n        return _this;\n    }\n    SetFilter.prototype.postConstruct = function () {\n        _super.prototype.postConstruct.call(this);\n    };\n    // unlike the simple filters, nothing in the set filter UI shows/hides.\n    // maybe this method belongs in abstractSimpleFilter???\n    SetFilter.prototype.updateUiVisibility = function () { };\n    SetFilter.prototype.createBodyTemplate = function () {\n        return /* html */ \"\\n            <div class=\\\"ag-set-filter\\\">\\n                <div ref=\\\"eFilterLoading\\\" class=\\\"ag-filter-loading ag-hidden\\\">\" + this.translateForSetFilter('loadingOoo') + \"</div>\\n                <ag-input-text-field class=\\\"ag-mini-filter\\\" ref=\\\"eMiniFilter\\\"></ag-input-text-field>\\n                <div ref=\\\"eFilterNoMatches\\\" class=\\\"ag-filter-no-matches ag-hidden\\\">\" + this.translateForSetFilter('noMatches') + \"</div>\\n                <div ref=\\\"eSetFilterList\\\" class=\\\"ag-set-filter-list\\\" role=\\\"presentation\\\"></div>\\n            </div>\";\n    };\n    SetFilter.prototype.handleKeyDown = function (e) {\n        _super.prototype.handleKeyDown.call(this, e);\n        if (e.defaultPrevented) {\n            return;\n        }\n        switch (e.key) {\n            case KeyCode.SPACE:\n                this.handleKeySpace(e);\n                break;\n            case KeyCode.ENTER:\n                this.handleKeyEnter(e);\n                break;\n            case KeyCode.LEFT:\n                this.handleKeyLeft(e);\n                break;\n            case KeyCode.RIGHT:\n                this.handleKeyRight(e);\n                break;\n        }\n    };\n    SetFilter.prototype.handleKeySpace = function (e) {\n        var _a;\n        (_a = this.getComponentForKeyEvent(e)) === null || _a === void 0 ? void 0 : _a.toggleSelected();\n    };\n    SetFilter.prototype.handleKeyEnter = function (e) {\n        if (!this.setFilterParams) {\n            return;\n        }\n        var _a = this.setFilterParams || {}, excelMode = _a.excelMode, readOnly = _a.readOnly;\n        if (!excelMode || !!readOnly) {\n            return;\n        }\n        e.preventDefault();\n        // in Excel Mode, hitting Enter is the same as pressing the Apply button\n        this.onBtApply(false, false, e);\n        if (this.setFilterParams.excelMode === 'mac') {\n            // in Mac version, select all the input text\n            this.eMiniFilter.getInputElement().select();\n        }\n    };\n    SetFilter.prototype.handleKeyLeft = function (e) {\n        var _a;\n        (_a = this.getComponentForKeyEvent(e)) === null || _a === void 0 ? void 0 : _a.setExpanded(false);\n    };\n    SetFilter.prototype.handleKeyRight = function (e) {\n        var _a;\n        (_a = this.getComponentForKeyEvent(e)) === null || _a === void 0 ? void 0 : _a.setExpanded(true);\n    };\n    SetFilter.prototype.getComponentForKeyEvent = function (e) {\n        var _a;\n        var eDocument = this.gridOptionsService.getDocument();\n        if (!this.eSetFilterList.contains(eDocument.activeElement) || !this.virtualList) {\n            return;\n        }\n        var currentItem = this.virtualList.getLastFocusedRow();\n        if (currentItem == null) {\n            return;\n        }\n        var component = this.virtualList.getComponentAt(currentItem);\n        if (component == null) {\n            return;\n        }\n        e.preventDefault();\n        var readOnly = ((_a = this.setFilterParams) !== null && _a !== void 0 ? _a : {}).readOnly;\n        if (!!readOnly) {\n            return;\n        }\n        return component;\n    };\n    SetFilter.prototype.getCssIdentifier = function () {\n        return 'set-filter';\n    };\n    SetFilter.prototype.setModel = function (model) {\n        var _a;\n        if (model == null && ((_a = this.valueModel) === null || _a === void 0 ? void 0 : _a.getModel()) == null) {\n            // refreshing is expensive. if new and old model are both null (e.g. nothing set), skip.\n            // mini filter isn't contained within the model, so always reset\n            this.setMiniFilter(null);\n            return AgPromise.resolve();\n        }\n        return _super.prototype.setModel.call(this, model);\n    };\n    SetFilter.prototype.setModelAndRefresh = function (values) {\n        var _this = this;\n        return this.valueModel ? this.valueModel.setModel(values).then(function () { return _this.refresh(); }) : AgPromise.resolve();\n    };\n    SetFilter.prototype.resetUiToDefaults = function () {\n        this.setMiniFilter(null);\n        return this.setModelAndRefresh(null);\n    };\n    SetFilter.prototype.setModelIntoUi = function (model) {\n        this.setMiniFilter(null);\n        var values = model == null ? null : model.values;\n        return this.setModelAndRefresh(values);\n    };\n    SetFilter.prototype.getModelFromUi = function () {\n        if (!this.valueModel) {\n            throw new Error('Value model has not been created.');\n        }\n        var values = this.valueModel.getModel();\n        if (!values) {\n            return null;\n        }\n        return { values: values, filterType: this.getFilterType() };\n    };\n    SetFilter.prototype.getFilterType = function () {\n        return 'set';\n    };\n    SetFilter.prototype.getValueModel = function () {\n        return this.valueModel;\n    };\n    SetFilter.prototype.areModelsEqual = function (a, b) {\n        // both are missing\n        if (a == null && b == null) {\n            return true;\n        }\n        return a != null && b != null && _.areEqual(a.values, b.values);\n    };\n    SetFilter.prototype.setParams = function (params) {\n        var _this = this;\n        var _a;\n        this.applyExcelModeOptions(params);\n        _super.prototype.setParams.call(this, params);\n        this.setFilterParams = params;\n        this.convertValuesToStrings = !!params.convertValuesToStrings;\n        this.caseSensitive = !!params.caseSensitive;\n        var keyCreator = (_a = params.keyCreator) !== null && _a !== void 0 ? _a : params.colDef.keyCreator;\n        this.setValueFormatter(params.valueFormatter, keyCreator, this.convertValuesToStrings, !!params.treeList, !!params.colDef.refData);\n        var isGroupCol = params.column.getId().startsWith(GROUP_AUTO_COLUMN_ID);\n        this.treeDataTreeList = this.gridOptionsService.is('treeData') && !!params.treeList && isGroupCol;\n        this.getDataPath = this.gridOptionsService.get('getDataPath');\n        this.groupingTreeList = !!this.columnModel.getRowGroupColumns().length && !!params.treeList && isGroupCol;\n        this.createKey = this.generateCreateKey(keyCreator, this.convertValuesToStrings, this.treeDataTreeList || this.groupingTreeList);\n        this.valueModel = new SetValueModel({\n            filterParams: params,\n            setIsLoading: function (loading) { return _this.setIsLoading(loading); },\n            valueFormatterService: this.valueFormatterService,\n            translate: function (key) { return _this.translateForSetFilter(key); },\n            caseFormat: function (v) { return _this.caseFormat(v); },\n            createKey: this.createKey,\n            valueFormatter: this.valueFormatter,\n            usingComplexObjects: !!keyCreator,\n            gridOptionsService: this.gridOptionsService,\n            columnModel: this.columnModel,\n            valueService: this.valueService,\n            treeDataTreeList: this.treeDataTreeList,\n            groupingTreeList: this.groupingTreeList\n        });\n        this.initialiseFilterBodyUi();\n        this.addEventListenersForDataChanges();\n    };\n    SetFilter.prototype.setValueFormatter = function (providedValueFormatter, keyCreator, convertValuesToStrings, treeList, isRefData) {\n        var valueFormatter = providedValueFormatter;\n        if (!valueFormatter) {\n            if (keyCreator && !convertValuesToStrings && !treeList) {\n                throw new Error('AG Grid: Must supply a Value Formatter in Set Filter params when using a Key Creator unless convertValuesToStrings is enabled');\n            }\n            this.noValueFormatterSupplied = true;\n            // ref data is handled by ValueFormatterService\n            if (!isRefData) {\n                valueFormatter = function (params) { return _.toStringOrNull(params.value); };\n            }\n        }\n        this.valueFormatter = valueFormatter;\n    };\n    SetFilter.prototype.generateCreateKey = function (keyCreator, convertValuesToStrings, treeDataOrGrouping) {\n        var _this = this;\n        if (treeDataOrGrouping && !keyCreator) {\n            throw new Error('AG Grid: Must supply a Key Creator in Set Filter params when `treeList = true` on a group column, and Tree Data or Row Grouping is enabled.');\n        }\n        if (keyCreator) {\n            return function (value, node) {\n                if (node === void 0) { node = null; }\n                var params = _this.getKeyCreatorParams(value, node);\n                return _.makeNull(keyCreator(params));\n            };\n        }\n        if (convertValuesToStrings) {\n            // for backwards compatibility - keeping separate as it will eventually be removed\n            return function (value) { return Array.isArray(value) ? value : _.makeNull(_.toStringOrNull(value)); };\n        }\n        else {\n            return function (value) { return _.makeNull(_.toStringOrNull(value)); };\n        }\n    };\n    SetFilter.prototype.getFormattedValue = function (key) {\n        var _a;\n        var value = this.valueModel.getValue(key);\n        if (this.noValueFormatterSupplied && (this.treeDataTreeList || this.groupingTreeList) && Array.isArray(value)) {\n            // essentially get back the cell value\n            value = _.last(value);\n        }\n        var formattedValue = this.valueFormatterService.formatValue(this.setFilterParams.column, null, value, this.valueFormatter, false);\n        return (_a = (formattedValue == null ? _.toStringOrNull(value) : formattedValue)) !== null && _a !== void 0 ? _a : this.translateForSetFilter('blanks');\n    };\n    SetFilter.prototype.applyExcelModeOptions = function (params) {\n        // apply default options to match Excel behaviour, unless they have already been specified\n        if (params.excelMode === 'windows') {\n            if (!params.buttons) {\n                params.buttons = ['apply', 'cancel'];\n            }\n            if (params.closeOnApply == null) {\n                params.closeOnApply = true;\n            }\n        }\n        else if (params.excelMode === 'mac') {\n            if (!params.buttons) {\n                params.buttons = ['reset'];\n            }\n            if (params.applyMiniFilterWhileTyping == null) {\n                params.applyMiniFilterWhileTyping = true;\n            }\n            if (params.debounceMs == null) {\n                params.debounceMs = 500;\n            }\n        }\n        if (params.excelMode && params.defaultToNothingSelected) {\n            _.doOnce(function () { return console.warn('AG Grid: The Set Filter Parameter \"defaultToNothingSelected\" does not work with \"excelMode\".'); }, 'setFilterExcelModeDefaultToNothingSelect');\n        }\n    };\n    SetFilter.prototype.addEventListenersForDataChanges = function () {\n        var _this = this;\n        if (!this.isValuesTakenFromGrid()) {\n            return;\n        }\n        this.addManagedListener(this.eventService, Events.EVENT_CELL_VALUE_CHANGED, function (event) {\n            // only interested in changes to do with this column\n            if (_this.setFilterParams && event.column === _this.setFilterParams.column) {\n                _this.syncAfterDataChange();\n            }\n        });\n    };\n    SetFilter.prototype.syncAfterDataChange = function () {\n        var _this = this;\n        if (!this.valueModel) {\n            throw new Error('Value model has not been created.');\n        }\n        var promise = this.valueModel.refreshValues();\n        return promise.then(function () {\n            _this.refresh();\n            _this.onBtApply(false, true);\n        });\n    };\n    SetFilter.prototype.setIsLoading = function (isLoading) {\n        _.setDisplayed(this.eFilterLoading, isLoading);\n        if (!isLoading) {\n            // hard refresh when async data received\n            this.hardRefreshVirtualList = true;\n        }\n    };\n    SetFilter.prototype.initialiseFilterBodyUi = function () {\n        this.initVirtualList();\n        this.initMiniFilter();\n    };\n    SetFilter.prototype.initVirtualList = function () {\n        var _this = this;\n        if (!this.setFilterParams) {\n            throw new Error('Set filter params have not been provided.');\n        }\n        if (!this.valueModel) {\n            throw new Error('Value model has not been created.');\n        }\n        var translate = this.localeService.getLocaleTextFunc();\n        var filterListName = translate('ariaFilterList', 'Filter List');\n        var isTree = !!this.setFilterParams.treeList;\n        var virtualList = this.virtualList = this.createBean(new VirtualList('filter', isTree ? 'tree' : 'listbox', filterListName));\n        var eSetFilterList = this.getRefElement('eSetFilterList');\n        if (isTree) {\n            eSetFilterList.classList.add('ag-set-filter-tree-list');\n        }\n        if (eSetFilterList) {\n            eSetFilterList.appendChild(virtualList.getGui());\n        }\n        var cellHeight = this.setFilterParams.cellHeight;\n        if (cellHeight != null) {\n            virtualList.setRowHeight(cellHeight);\n        }\n        var componentCreator = function (item, listItemElement) { return _this.createSetListItem(item, isTree, listItemElement); };\n        virtualList.setComponentCreator(componentCreator);\n        var componentUpdater = function (item, component) { return _this.updateSetListItem(item, component); };\n        virtualList.setComponentUpdater(componentUpdater);\n        var model;\n        if (this.setFilterParams.suppressSelectAll) {\n            model = new ModelWrapper(this.valueModel);\n        }\n        else {\n            model = new ModelWrapperWithSelectAll(this.valueModel, function () { return _this.isSelectAllSelected(); });\n        }\n        if (isTree) {\n            model = new TreeModelWrapper(model);\n        }\n        virtualList.setModel(model);\n    };\n    SetFilter.prototype.getSelectAllLabel = function () {\n        if (!this.setFilterParams) {\n            throw new Error('Set filter params have not been provided.');\n        }\n        if (!this.valueModel) {\n            throw new Error('Value model has not been created.');\n        }\n        var key = this.valueModel.getMiniFilter() == null || !this.setFilterParams.excelMode ?\n            'selectAll' : 'selectAllSearchResults';\n        return this.translateForSetFilter(key);\n    };\n    SetFilter.prototype.createSetListItem = function (item, isTree, focusWrapper) {\n        var _this = this;\n        var _a, _b, _c, _d, _e, _f;\n        if (!this.setFilterParams) {\n            throw new Error('Set filter params have not been provided.');\n        }\n        if (!this.valueModel) {\n            throw new Error('Value model has not been created.');\n        }\n        var groupsExist = this.valueModel.hasGroups();\n        var value;\n        var depth;\n        var isGroup;\n        var hasIndeterminateExpandState;\n        var selectedListener;\n        var expandedListener;\n        if (this.isSetFilterModelTreeItem(item)) {\n            depth = item.depth;\n            if (item.key === SetFilterDisplayValue.SELECT_ALL) {\n                // select all\n                value = function () { return _this.getSelectAllLabel(); };\n                isGroup = groupsExist;\n                hasIndeterminateExpandState = true;\n                selectedListener = function (e) { return _this.onSelectAll(e.isSelected); };\n                expandedListener = function (e) { return _this.onExpandAll(e.item, e.isExpanded); };\n            }\n            else if (item.children) {\n                // group\n                value = (_c = (_b = (_a = this.setFilterParams).treeListFormatter) === null || _b === void 0 ? void 0 : _b.call(_a, item.treeKey, item.depth, item.parentTreeKeys)) !== null && _c !== void 0 ? _c : item.treeKey;\n                isGroup = true;\n                selectedListener = function (e) { return _this.onGroupItemSelected(e.item, e.isSelected); };\n                expandedListener = function (e) { return _this.onExpandedChanged(e.item, e.isExpanded); };\n            }\n            else {\n                // leaf\n                value = (_f = (_e = (_d = this.setFilterParams).treeListFormatter) === null || _e === void 0 ? void 0 : _e.call(_d, item.treeKey, item.depth, item.parentTreeKeys)) !== null && _f !== void 0 ? _f : item.treeKey;\n                selectedListener = function (e) { return _this.onItemSelected(e.item.key, e.isSelected); };\n            }\n        }\n        else {\n            if (item === SetFilterDisplayValue.SELECT_ALL) {\n                value = function () { return _this.getSelectAllLabel(); };\n                selectedListener = function (e) { return _this.onSelectAll(e.isSelected); };\n            }\n            else {\n                value = this.valueModel.getValue(item);\n                selectedListener = function (e) { return _this.onItemSelected(e.item, e.isSelected); };\n            }\n        }\n        var _g = this.isSelectedExpanded(item), isSelected = _g.isSelected, isExpanded = _g.isExpanded;\n        var itemParams = {\n            focusWrapper: focusWrapper,\n            value: value,\n            params: this.setFilterParams,\n            translate: function (translateKey) { return _this.translateForSetFilter(translateKey); },\n            valueFormatter: this.valueFormatter,\n            item: item,\n            isSelected: isSelected,\n            isTree: isTree,\n            depth: depth,\n            groupsExist: groupsExist,\n            isGroup: isGroup,\n            isExpanded: isExpanded,\n            hasIndeterminateExpandState: hasIndeterminateExpandState,\n        };\n        var listItem = this.createBean(new SetFilterListItem(itemParams));\n        listItem.addEventListener(SetFilterListItem.EVENT_SELECTION_CHANGED, selectedListener);\n        if (expandedListener) {\n            listItem.addEventListener(SetFilterListItem.EVENT_EXPANDED_CHANGED, expandedListener);\n        }\n        return listItem;\n    };\n    SetFilter.prototype.updateSetListItem = function (item, component) {\n        var _a = this.isSelectedExpanded(item), isSelected = _a.isSelected, isExpanded = _a.isExpanded;\n        component.refresh(item, isSelected, isExpanded);\n    };\n    SetFilter.prototype.isSelectedExpanded = function (item) {\n        var isSelected;\n        var isExpanded;\n        if (this.isSetFilterModelTreeItem(item)) {\n            isExpanded = item.expanded;\n            if (item.key === SetFilterDisplayValue.SELECT_ALL) {\n                isSelected = this.isSelectAllSelected();\n            }\n            else if (item.children) {\n                isSelected = this.areAllChildrenSelected(item);\n            }\n            else {\n                isSelected = this.valueModel.isKeySelected(item.key);\n            }\n        }\n        else {\n            if (item === SetFilterDisplayValue.SELECT_ALL) {\n                isSelected = this.isSelectAllSelected();\n            }\n            else {\n                isSelected = this.valueModel.isKeySelected(item);\n            }\n        }\n        return { isSelected: isSelected, isExpanded: isExpanded };\n    };\n    SetFilter.prototype.isSetFilterModelTreeItem = function (item) {\n        return (item === null || item === void 0 ? void 0 : item.treeKey) !== undefined;\n    };\n    SetFilter.prototype.initMiniFilter = function () {\n        var _this = this;\n        if (!this.setFilterParams) {\n            throw new Error('Set filter params have not been provided.');\n        }\n        if (!this.valueModel) {\n            throw new Error('Value model has not been created.');\n        }\n        var _a = this, eMiniFilter = _a.eMiniFilter, localeService = _a.localeService;\n        var translate = localeService.getLocaleTextFunc();\n        eMiniFilter.setDisplayed(!this.setFilterParams.suppressMiniFilter);\n        eMiniFilter.setValue(this.valueModel.getMiniFilter());\n        eMiniFilter.onValueChange(function () { return _this.onMiniFilterInput(); });\n        eMiniFilter.setInputAriaLabel(translate('ariaSearchFilterValues', 'Search filter values'));\n        this.addManagedListener(eMiniFilter.getInputElement(), 'keypress', function (e) { return _this.onMiniFilterKeyPress(e); });\n    };\n    // we need to have the GUI attached before we can draw the virtual rows, as the\n    // virtual row logic needs info about the GUI state\n    SetFilter.prototype.afterGuiAttached = function (params) {\n        if (!this.setFilterParams) {\n            throw new Error('Set filter params have not been provided.');\n        }\n        _super.prototype.afterGuiAttached.call(this, params);\n        // collapse all tree list items (if tree list)\n        this.resetExpansion();\n        this.refreshVirtualList();\n        var eMiniFilter = this.eMiniFilter;\n        eMiniFilter.setInputPlaceholder(this.translateForSetFilter('searchOoo'));\n        if (!params || !params.suppressFocus) {\n            eMiniFilter.getFocusableElement().focus();\n        }\n    };\n    SetFilter.prototype.afterGuiDetached = function () {\n        var _a, _b;\n        _super.prototype.afterGuiDetached.call(this);\n        // discard any unapplied UI state (reset to model)\n        if ((_a = this.setFilterParams) === null || _a === void 0 ? void 0 : _a.excelMode) {\n            this.resetMiniFilter();\n        }\n        var appliedModel = this.getModel();\n        if (((_b = this.setFilterParams) === null || _b === void 0 ? void 0 : _b.excelMode) || !this.areModelsEqual(appliedModel, this.getModelFromUi())) {\n            this.resetUiToActiveModel(appliedModel);\n            this.showOrHideResults();\n        }\n    };\n    SetFilter.prototype.applyModel = function (source) {\n        var _this = this;\n        if (source === void 0) { source = 'api'; }\n        if (!this.setFilterParams) {\n            throw new Error('Set filter params have not been provided.');\n        }\n        if (!this.valueModel) {\n            throw new Error('Value model has not been created.');\n        }\n        if (this.setFilterParams.excelMode && source !== 'rowDataUpdated' && this.valueModel.isEverythingVisibleSelected()) {\n            // In Excel, if the filter is applied with all visible values selected, then any active filter on the\n            // column is removed. This ensures the filter is removed in this situation.\n            this.valueModel.selectAllMatchingMiniFilter();\n        }\n        var result = _super.prototype.applyModel.call(this, source);\n        // keep appliedModelKeys in sync with the applied model\n        var appliedModel = this.getModel();\n        if (appliedModel) {\n            this.appliedModelKeys = new Set();\n            appliedModel.values.forEach(function (key) {\n                _this.appliedModelKeys.add(_this.caseFormat(key));\n            });\n        }\n        else {\n            this.appliedModelKeys = null;\n        }\n        this.noAppliedModelKeys = (appliedModel === null || appliedModel === void 0 ? void 0 : appliedModel.values.length) === 0;\n        return result;\n    };\n    SetFilter.prototype.isModelValid = function (model) {\n        return this.setFilterParams && this.setFilterParams.excelMode ? model == null || model.values.length > 0 : true;\n    };\n    SetFilter.prototype.doesFilterPass = function (params) {\n        var _this = this;\n        if (!this.setFilterParams || !this.valueModel || !this.appliedModelKeys) {\n            return true;\n        }\n        // if nothing selected, don't need to check value\n        if (this.noAppliedModelKeys) {\n            return false;\n        }\n        var node = params.node, data = params.data;\n        if (this.treeDataTreeList) {\n            return this.doesFilterPassForTreeData(node, data);\n        }\n        if (this.groupingTreeList) {\n            return this.doesFilterPassForGrouping(node, data);\n        }\n        var value = this.getValueFromNode(node, data);\n        if (this.convertValuesToStrings) {\n            // for backwards compatibility - keeping separate as it will eventually be removed\n            return this.doesFilterPassForConvertValuesToString(node, value);\n        }\n        if (value != null && Array.isArray(value)) {\n            if (value.length === 0) {\n                return this.appliedModelKeys.has(null);\n            }\n            return value.some(function (v) { return _this.isInAppliedModel(_this.createKey(v, node)); });\n        }\n        return this.isInAppliedModel(this.createKey(value, node));\n    };\n    SetFilter.prototype.doesFilterPassForConvertValuesToString = function (node, value) {\n        var _this = this;\n        var key = this.createKey(value, node);\n        if (key != null && Array.isArray(key)) {\n            if (key.length === 0) {\n                return this.appliedModelKeys.has(null);\n            }\n            return key.some(function (v) { return _this.isInAppliedModel(v); });\n        }\n        return this.isInAppliedModel(key);\n    };\n    SetFilter.prototype.doesFilterPassForTreeData = function (node, data) {\n        var _a;\n        if ((_a = node.childrenAfterGroup) === null || _a === void 0 ? void 0 : _a.length) {\n            // only perform checking on leaves. The core filtering logic for tree data won't work properly otherwise\n            return false;\n        }\n        return this.isInAppliedModel(this.createKey(this.checkMakeNullDataPath(this.getDataPath(data))));\n    };\n    SetFilter.prototype.doesFilterPassForGrouping = function (node, data) {\n        var _this = this;\n        var dataPath = this.columnModel.getRowGroupColumns().map(function (groupCol) { return _this.valueService.getKeyForNode(groupCol, node); });\n        dataPath.push(this.getValueFromNode(node, data));\n        return this.isInAppliedModel(this.createKey(this.checkMakeNullDataPath(dataPath)));\n    };\n    SetFilter.prototype.checkMakeNullDataPath = function (dataPath) {\n        if (dataPath) {\n            dataPath = dataPath.map(function (treeKey) { return _.toStringOrNull(_.makeNull(treeKey)); });\n        }\n        if (dataPath === null || dataPath === void 0 ? void 0 : dataPath.some(function (treeKey) { return treeKey == null; })) {\n            return null;\n        }\n        return dataPath;\n    };\n    SetFilter.prototype.isInAppliedModel = function (key) {\n        return this.appliedModelKeys.has(this.caseFormat(key));\n    };\n    SetFilter.prototype.getValueFromNode = function (node, data) {\n        var _a = this.setFilterParams, valueGetter = _a.valueGetter, api = _a.api, colDef = _a.colDef, column = _a.column, columnApi = _a.columnApi, context = _a.context;\n        return valueGetter({\n            api: api,\n            colDef: colDef,\n            column: column,\n            columnApi: columnApi,\n            context: context,\n            data: data,\n            getValue: function (field) { return data[field]; },\n            node: node,\n        });\n    };\n    SetFilter.prototype.getKeyCreatorParams = function (value, node) {\n        if (node === void 0) { node = null; }\n        return {\n            value: value,\n            colDef: this.setFilterParams.colDef,\n            column: this.setFilterParams.column,\n            node: node,\n            data: node === null || node === void 0 ? void 0 : node.data,\n            api: this.setFilterParams.api,\n            columnApi: this.setFilterParams.columnApi,\n            context: this.setFilterParams.context\n        };\n    };\n    SetFilter.prototype.onNewRowsLoaded = function () {\n        if (!this.isValuesTakenFromGrid()) {\n            return;\n        }\n        this.syncAfterDataChange();\n    };\n    SetFilter.prototype.isValuesTakenFromGrid = function () {\n        if (!this.valueModel) {\n            return false;\n        }\n        var valuesType = this.valueModel.getValuesType();\n        return valuesType === SetFilterModelValuesType.TAKEN_FROM_GRID_VALUES;\n    };\n    //noinspection JSUnusedGlobalSymbols\n    /**\n     * Public method provided so the user can change the value of the filter once\n     * the filter has been already started\n     * @param values The values to use.\n     */\n    SetFilter.prototype.setFilterValues = function (values) {\n        var _this = this;\n        if (!this.valueModel) {\n            throw new Error('Value model has not been created.');\n        }\n        this.valueModel.overrideValues(values).then(function () {\n            _this.refresh();\n            _this.onUiChanged();\n        });\n    };\n    //noinspection JSUnusedGlobalSymbols\n    /**\n     * Public method provided so the user can reset the values of the filter once that it has started.\n     */\n    SetFilter.prototype.resetFilterValues = function () {\n        if (!this.valueModel) {\n            throw new Error('Value model has not been created.');\n        }\n        this.valueModel.setValuesType(SetFilterModelValuesType.TAKEN_FROM_GRID_VALUES);\n        this.syncAfterDataChange();\n    };\n    SetFilter.prototype.refreshFilterValues = function () {\n        var _this = this;\n        if (!this.valueModel) {\n            throw new Error('Value model has not been created.');\n        }\n        // the model is still being initialised\n        if (!this.valueModel.isInitialised()) {\n            return;\n        }\n        this.valueModel.refreshValues().then(function () {\n            _this.refresh();\n            _this.onUiChanged();\n        });\n    };\n    SetFilter.prototype.onAnyFilterChanged = function () {\n        var _this = this;\n        // don't block the current action when updating the values for this filter\n        setTimeout(function () {\n            if (!_this.isAlive()) {\n                return;\n            }\n            if (!_this.valueModel) {\n                throw new Error('Value model has not been created.');\n            }\n            _this.valueModel.refreshAfterAnyFilterChanged().then(function (refresh) {\n                if (refresh) {\n                    _this.refresh();\n                    _this.showOrHideResults();\n                }\n            });\n        }, 0);\n    };\n    SetFilter.prototype.onMiniFilterInput = function () {\n        if (!this.setFilterParams) {\n            throw new Error('Set filter params have not been provided.');\n        }\n        if (!this.valueModel) {\n            throw new Error('Value model has not been created.');\n        }\n        if (!this.valueModel.setMiniFilter(this.eMiniFilter.getValue())) {\n            return;\n        }\n        var _a = this.setFilterParams || {}, applyMiniFilterWhileTyping = _a.applyMiniFilterWhileTyping, readOnly = _a.readOnly;\n        if (!readOnly && applyMiniFilterWhileTyping) {\n            this.filterOnAllVisibleValues(false);\n        }\n        else {\n            this.updateUiAfterMiniFilterChange();\n        }\n    };\n    SetFilter.prototype.updateUiAfterMiniFilterChange = function () {\n        if (!this.setFilterParams) {\n            throw new Error('Set filter params have not been provided.');\n        }\n        if (!this.valueModel) {\n            throw new Error('Value model has not been created.');\n        }\n        var _a = this.setFilterParams || {}, excelMode = _a.excelMode, readOnly = _a.readOnly;\n        if (excelMode == null || !!readOnly) {\n            this.refresh();\n        }\n        else if (this.valueModel.getMiniFilter() == null) {\n            this.resetUiToActiveModel(this.getModel());\n        }\n        else {\n            this.valueModel.selectAllMatchingMiniFilter(true);\n            this.refresh();\n            this.onUiChanged();\n        }\n        this.showOrHideResults();\n    };\n    SetFilter.prototype.showOrHideResults = function () {\n        if (!this.valueModel) {\n            throw new Error('Value model has not been created.');\n        }\n        var hideResults = this.valueModel.getMiniFilter() != null && this.valueModel.getDisplayedValueCount() < 1;\n        _.setDisplayed(this.eNoMatches, hideResults);\n        _.setDisplayed(this.eSetFilterList, !hideResults);\n    };\n    SetFilter.prototype.resetMiniFilter = function () {\n        var _a;\n        this.eMiniFilter.setValue(null, true);\n        (_a = this.valueModel) === null || _a === void 0 ? void 0 : _a.setMiniFilter(null);\n    };\n    SetFilter.prototype.resetUiToActiveModel = function (currentModel, afterUiUpdatedFunc) {\n        var _this = this;\n        // override the default behaviour as we don't always want to clear the mini filter\n        this.setModelAndRefresh(currentModel == null ? null : currentModel.values).then(function () {\n            _this.onUiChanged(false, 'prevent');\n            afterUiUpdatedFunc === null || afterUiUpdatedFunc === void 0 ? void 0 : afterUiUpdatedFunc();\n        });\n    };\n    SetFilter.prototype.handleCancelEnd = function (e) {\n        this.setMiniFilter(null);\n        _super.prototype.handleCancelEnd.call(this, e);\n    };\n    SetFilter.prototype.onMiniFilterKeyPress = function (e) {\n        var _a = this.setFilterParams || {}, excelMode = _a.excelMode, readOnly = _a.readOnly;\n        if (e.key === KeyCode.ENTER && !excelMode && !readOnly) {\n            this.filterOnAllVisibleValues();\n        }\n    };\n    SetFilter.prototype.filterOnAllVisibleValues = function (applyImmediately) {\n        if (applyImmediately === void 0) { applyImmediately = true; }\n        var readOnly = (this.setFilterParams || {}).readOnly;\n        if (!this.valueModel) {\n            throw new Error('Value model has not been created.');\n        }\n        if (!!readOnly) {\n            throw new Error('Unable to filter in readOnly mode.');\n        }\n        this.valueModel.selectAllMatchingMiniFilter(true);\n        this.refresh();\n        this.onUiChanged(false, applyImmediately ? 'immediately' : 'debounce');\n        this.showOrHideResults();\n    };\n    SetFilter.prototype.focusRowIfAlive = function (rowIndex) {\n        var _this = this;\n        if (rowIndex == null) {\n            return;\n        }\n        window.setTimeout(function () {\n            if (!_this.virtualList) {\n                throw new Error('Virtual list has not been created.');\n            }\n            if (_this.isAlive()) {\n                _this.virtualList.focusRow(rowIndex);\n            }\n        }, 0);\n    };\n    SetFilter.prototype.onSelectAll = function (isSelected) {\n        if (!this.valueModel) {\n            throw new Error('Value model has not been created.');\n        }\n        if (!this.virtualList) {\n            throw new Error('Virtual list has not been created.');\n        }\n        if (isSelected) {\n            this.valueModel.selectAllMatchingMiniFilter();\n        }\n        else {\n            this.valueModel.deselectAllMatchingMiniFilter();\n        }\n        this.refreshAfterSelection();\n    };\n    SetFilter.prototype.onGroupItemSelected = function (item, isSelected) {\n        var _this = this;\n        var recursiveGroupSelection = function (i) {\n            if (i.children) {\n                i.children.forEach(function (childItem) { return recursiveGroupSelection(childItem); });\n            }\n            else {\n                _this.selectItem(i.key, isSelected);\n            }\n        };\n        recursiveGroupSelection(item);\n        this.refreshAfterSelection();\n    };\n    SetFilter.prototype.onItemSelected = function (key, isSelected) {\n        if (!this.valueModel) {\n            throw new Error('Value model has not been created.');\n        }\n        if (!this.virtualList) {\n            throw new Error('Virtual list has not been created.');\n        }\n        this.selectItem(key, isSelected);\n        this.refreshAfterSelection();\n    };\n    SetFilter.prototype.selectItem = function (key, isSelected) {\n        if (isSelected) {\n            this.valueModel.selectKey(key);\n        }\n        else {\n            this.valueModel.deselectKey(key);\n        }\n    };\n    SetFilter.prototype.onExpandAll = function (item, isExpanded) {\n        var recursiveExpansion = function (i) {\n            if (i.filterPasses && i.available && i.children) {\n                i.children.forEach(function (childItem) { return recursiveExpansion(childItem); });\n                i.expanded = isExpanded;\n            }\n        };\n        recursiveExpansion(item);\n        this.refreshAfterExpansion();\n    };\n    SetFilter.prototype.onExpandedChanged = function (item, isExpanded) {\n        item.expanded = isExpanded;\n        this.refreshAfterExpansion();\n    };\n    SetFilter.prototype.refreshAfterExpansion = function () {\n        var focusedRow = this.virtualList.getLastFocusedRow();\n        this.valueModel.updateDisplayedValues('expansion');\n        this.refresh();\n        this.focusRowIfAlive(focusedRow);\n    };\n    SetFilter.prototype.refreshAfterSelection = function () {\n        var focusedRow = this.virtualList.getLastFocusedRow();\n        this.refresh();\n        this.onUiChanged();\n        this.focusRowIfAlive(focusedRow);\n    };\n    SetFilter.prototype.setMiniFilter = function (newMiniFilter) {\n        this.eMiniFilter.setValue(newMiniFilter);\n        this.onMiniFilterInput();\n    };\n    SetFilter.prototype.getMiniFilter = function () {\n        return this.valueModel ? this.valueModel.getMiniFilter() : null;\n    };\n    SetFilter.prototype.refresh = function () {\n        if (!this.virtualList) {\n            throw new Error('Virtual list has not been created.');\n        }\n        this.virtualList.refresh(!this.hardRefreshVirtualList);\n        if (this.hardRefreshVirtualList) {\n            this.hardRefreshVirtualList = false;\n        }\n    };\n    SetFilter.prototype.getFilterKeys = function () {\n        return this.valueModel ? this.valueModel.getKeys() : [];\n    };\n    SetFilter.prototype.getFilterValues = function () {\n        return this.valueModel ? this.valueModel.getValues() : [];\n    };\n    SetFilter.prototype.getValues = function () {\n        return this.getFilterKeys();\n    };\n    SetFilter.prototype.refreshVirtualList = function () {\n        if (this.setFilterParams && this.setFilterParams.refreshValuesOnOpen) {\n            this.refreshFilterValues();\n        }\n        else {\n            this.refresh();\n        }\n    };\n    SetFilter.prototype.translateForSetFilter = function (key) {\n        var translate = this.localeService.getLocaleTextFunc();\n        return translate(key, DEFAULT_LOCALE_TEXT[key]);\n    };\n    SetFilter.prototype.isSelectAllSelected = function () {\n        if (!this.setFilterParams || !this.valueModel) {\n            return false;\n        }\n        if (!this.setFilterParams.defaultToNothingSelected) {\n            // everything selected by default\n            if (this.valueModel.hasSelections() && this.valueModel.isNothingVisibleSelected()) {\n                return false;\n            }\n            if (this.valueModel.isEverythingVisibleSelected()) {\n                return true;\n            }\n        }\n        else {\n            // nothing selected by default\n            if (this.valueModel.hasSelections() && this.valueModel.isEverythingVisibleSelected()) {\n                return true;\n            }\n            if (this.valueModel.isNothingVisibleSelected()) {\n                return false;\n            }\n        }\n        // returning `undefined` means the checkbox status is indeterminate.\n        return undefined;\n    };\n    SetFilter.prototype.areAllChildrenSelected = function (item) {\n        var _this = this;\n        var recursiveChildSelectionCheck = function (i) {\n            if (i.children) {\n                var someTrue_1 = false;\n                var someFalse_1 = false;\n                var mixed = i.children.some(function (child) {\n                    if (!child.filterPasses || !child.available) {\n                        return false;\n                    }\n                    var childSelected = recursiveChildSelectionCheck(child);\n                    if (childSelected === undefined) {\n                        return true;\n                    }\n                    if (childSelected) {\n                        someTrue_1 = true;\n                    }\n                    else {\n                        someFalse_1 = true;\n                    }\n                    return someTrue_1 && someFalse_1;\n                });\n                // returning `undefined` means the checkbox status is indeterminate.\n                // if not mixed and some true, all must be true\n                return mixed ? undefined : someTrue_1;\n            }\n            else {\n                return _this.valueModel.isKeySelected(i.key);\n            }\n        };\n        if (!this.setFilterParams.defaultToNothingSelected) {\n            // everything selected by default\n            return recursiveChildSelectionCheck(item);\n        }\n        else {\n            // nothing selected by default\n            return this.valueModel.hasSelections() && recursiveChildSelectionCheck(item);\n        }\n    };\n    SetFilter.prototype.destroy = function () {\n        if (this.virtualList != null) {\n            this.virtualList.destroy();\n            this.virtualList = null;\n        }\n        _super.prototype.destroy.call(this);\n    };\n    SetFilter.prototype.caseFormat = function (valueToFormat) {\n        if (valueToFormat == null || typeof valueToFormat !== 'string') {\n            return valueToFormat;\n        }\n        return this.caseSensitive ? valueToFormat : valueToFormat.toUpperCase();\n    };\n    SetFilter.prototype.resetExpansion = function () {\n        var _a, _b;\n        if (!((_a = this.setFilterParams) === null || _a === void 0 ? void 0 : _a.treeList)) {\n            return;\n        }\n        var selectAllItem = (_b = this.valueModel) === null || _b === void 0 ? void 0 : _b.getSelectAllItem();\n        if (this.isSetFilterModelTreeItem(selectAllItem)) {\n            var recursiveCollapse_1 = function (i) {\n                if (i.children) {\n                    i.children.forEach(function (childItem) { return recursiveCollapse_1(childItem); });\n                    i.expanded = false;\n                }\n            };\n            recursiveCollapse_1(selectAllItem);\n            this.valueModel.updateDisplayedValues('expansion');\n        }\n    };\n    SetFilter.prototype.getModelAsString = function (model) {\n        return this.filterModelFormatter.getModelAsString(model, this);\n    };\n    SetFilter.prototype.getPositionableElement = function () {\n        return this.eSetFilterList;\n    };\n    __decorate$c([\n        RefSelector('eMiniFilter')\n    ], SetFilter.prototype, \"eMiniFilter\", void 0);\n    __decorate$c([\n        RefSelector('eFilterLoading')\n    ], SetFilter.prototype, \"eFilterLoading\", void 0);\n    __decorate$c([\n        RefSelector('eSetFilterList')\n    ], SetFilter.prototype, \"eSetFilterList\", void 0);\n    __decorate$c([\n        RefSelector('eFilterNoMatches')\n    ], SetFilter.prototype, \"eNoMatches\", void 0);\n    __decorate$c([\n        Autowired('valueFormatterService')\n    ], SetFilter.prototype, \"valueFormatterService\", void 0);\n    __decorate$c([\n        Autowired('columnModel')\n    ], SetFilter.prototype, \"columnModel\", void 0);\n    __decorate$c([\n        Autowired('valueService')\n    ], SetFilter.prototype, \"valueService\", void 0);\n    return SetFilter;\n}(ProvidedFilter));\nvar ModelWrapper = /** @class */ (function () {\n    function ModelWrapper(model) {\n        this.model = model;\n    }\n    ModelWrapper.prototype.getRowCount = function () {\n        return this.model.getDisplayedValueCount();\n    };\n    ModelWrapper.prototype.getRow = function (index) {\n        return this.model.getDisplayedItem(index);\n    };\n    ModelWrapper.prototype.isRowSelected = function (index) {\n        return this.model.isKeySelected(this.getRow(index));\n    };\n    ModelWrapper.prototype.areRowsEqual = function (oldRow, newRow) {\n        return oldRow === newRow;\n    };\n    return ModelWrapper;\n}());\nvar ModelWrapperWithSelectAll = /** @class */ (function () {\n    function ModelWrapperWithSelectAll(model, isSelectAllSelected) {\n        this.model = model;\n        this.isSelectAllSelected = isSelectAllSelected;\n    }\n    ModelWrapperWithSelectAll.prototype.getRowCount = function () {\n        return this.model.getDisplayedValueCount() + 1;\n    };\n    ModelWrapperWithSelectAll.prototype.getRow = function (index) {\n        return index === 0 ? this.model.getSelectAllItem() : this.model.getDisplayedItem(index - 1);\n    };\n    ModelWrapperWithSelectAll.prototype.isRowSelected = function (index) {\n        return index === 0 ? this.isSelectAllSelected() : this.model.isKeySelected(this.getRow(index));\n    };\n    ModelWrapperWithSelectAll.prototype.areRowsEqual = function (oldRow, newRow) {\n        return oldRow === newRow;\n    };\n    return ModelWrapperWithSelectAll;\n}());\n// isRowSelected is used by VirtualList to add aria tags for flat lists. We want to suppress this when using trees\nvar TreeModelWrapper = /** @class */ (function () {\n    function TreeModelWrapper(model) {\n        this.model = model;\n    }\n    TreeModelWrapper.prototype.getRowCount = function () {\n        return this.model.getRowCount();\n    };\n    TreeModelWrapper.prototype.getRow = function (index) {\n        return this.model.getRow(index);\n    };\n    TreeModelWrapper.prototype.areRowsEqual = function (oldRow, newRow) {\n        if (oldRow == null && newRow == null) {\n            return true;\n        }\n        return oldRow != null && newRow != null && oldRow.treeKey === newRow.treeKey && oldRow.depth === newRow.depth;\n    };\n    return TreeModelWrapper;\n}());\n\nvar __extends$g = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$b = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar SetFloatingFilterComp = /** @class */ (function (_super) {\n    __extends$g(SetFloatingFilterComp, _super);\n    function SetFloatingFilterComp() {\n        var _this = _super.call(this, /* html */ \"\\n            <div class=\\\"ag-floating-filter-input\\\" role=\\\"presentation\\\">\\n                <ag-input-text-field ref=\\\"eFloatingFilterText\\\"></ag-input-text-field>\\n            </div>\") || this;\n        _this.availableValuesListenerAdded = false;\n        _this.filterModelFormatter = new SetFilterModelFormatter();\n        return _this;\n    }\n    // this is a user component, and IComponent has \"public destroy()\" as part of the interface.\n    // so we need to override destroy() just to make the method public.\n    SetFloatingFilterComp.prototype.destroy = function () {\n        _super.prototype.destroy.call(this);\n    };\n    SetFloatingFilterComp.prototype.init = function (params) {\n        var displayName = this.columnModel.getDisplayNameForColumn(params.column, 'header', true);\n        var translate = this.localeService.getLocaleTextFunc();\n        this.eFloatingFilterText\n            .setDisabled(true)\n            .setInputAriaLabel(displayName + \" \" + translate('ariaFilterInput', 'Filter Input'))\n            .addGuiEventListener('click', function () { return params.showParentFilter(); });\n        this.params = params;\n    };\n    SetFloatingFilterComp.prototype.onParentModelChanged = function (parentModel) {\n        this.updateFloatingFilterText(parentModel);\n    };\n    SetFloatingFilterComp.prototype.parentSetFilterInstance = function (cb) {\n        this.params.parentFilterInstance(function (filter) {\n            if (!(filter instanceof SetFilter)) {\n                throw new Error('AG Grid - SetFloatingFilter expects SetFilter as its parent');\n            }\n            cb(filter);\n        });\n    };\n    SetFloatingFilterComp.prototype.addAvailableValuesListener = function () {\n        var _this = this;\n        this.parentSetFilterInstance(function (setFilter) {\n            var setValueModel = setFilter.getValueModel();\n            if (!setValueModel) {\n                return;\n            }\n            // unlike other filters, what we show in the floating filter can be different, even\n            // if another filter changes. this is due to how set filter restricts its values based\n            // on selections in other filters, e.g. if you filter Language to English, then the set filter\n            // on Country will only show English speaking countries. Thus the list of items to show\n            // in the floating filter can change.\n            _this.addManagedListener(setValueModel, SetValueModel.EVENT_AVAILABLE_VALUES_CHANGED, function () { return _this.updateFloatingFilterText(); });\n        });\n        this.availableValuesListenerAdded = true;\n    };\n    SetFloatingFilterComp.prototype.updateFloatingFilterText = function (parentModel) {\n        var _this = this;\n        if (!this.availableValuesListenerAdded) {\n            this.addAvailableValuesListener();\n        }\n        this.parentSetFilterInstance(function (setFilter) {\n            _this.eFloatingFilterText.setValue(_this.filterModelFormatter.getModelAsString(parentModel, setFilter));\n        });\n    };\n    __decorate$b([\n        RefSelector('eFloatingFilterText')\n    ], SetFloatingFilterComp.prototype, \"eFloatingFilterText\", void 0);\n    __decorate$b([\n        Autowired('columnModel')\n    ], SetFloatingFilterComp.prototype, \"columnModel\", void 0);\n    return SetFloatingFilterComp;\n}(Component));\n\n// DO NOT UPDATE MANUALLY: Generated from script during build time\nvar VERSION$3 = '29.3.5';\n\nvar SetFilterModule = {\n    version: VERSION$3,\n    moduleName: ModuleNames.SetFilterModule,\n    beans: [],\n    userComponents: [\n        { componentName: 'agSetColumnFilter', componentClass: SetFilter },\n        { componentName: 'agSetColumnFloatingFilter', componentClass: SetFloatingFilterComp },\n    ],\n    dependantModules: [\n        EnterpriseCoreModule\n    ]\n};\n\nvar __extends$f = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$a = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar StatusBarService = /** @class */ (function (_super) {\n    __extends$f(StatusBarService, _super);\n    // tslint:disable-next-line\n    function StatusBarService() {\n        var _this = _super.call(this) || this;\n        _this.allComponents = {};\n        return _this;\n    }\n    StatusBarService.prototype.registerStatusPanel = function (key, component) {\n        this.allComponents[key] = component;\n    };\n    StatusBarService.prototype.getStatusPanel = function (key) {\n        return this.allComponents[key];\n    };\n    StatusBarService = __decorate$a([\n        Bean('statusBarService')\n    ], StatusBarService);\n    return StatusBarService;\n}(BeanStub));\n\nvar __extends$e = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$9 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar StatusBar = /** @class */ (function (_super) {\n    __extends$e(StatusBar, _super);\n    function StatusBar() {\n        return _super.call(this, StatusBar.TEMPLATE) || this;\n    }\n    StatusBar.prototype.postConstruct = function () {\n        var _a;\n        var statusPanels = (_a = this.gridOptionsService.get('statusBar')) === null || _a === void 0 ? void 0 : _a.statusPanels;\n        if (statusPanels) {\n            var leftStatusPanelComponents = statusPanels\n                .filter(function (componentConfig) { return componentConfig.align === 'left'; });\n            this.createAndRenderComponents(leftStatusPanelComponents, this.eStatusBarLeft);\n            var centerStatusPanelComponents = statusPanels\n                .filter(function (componentConfig) { return componentConfig.align === 'center'; });\n            this.createAndRenderComponents(centerStatusPanelComponents, this.eStatusBarCenter);\n            var rightStatusPanelComponents = statusPanels\n                .filter(function (componentConfig) { return (!componentConfig.align || componentConfig.align === 'right'); });\n            this.createAndRenderComponents(rightStatusPanelComponents, this.eStatusBarRight);\n        }\n        else {\n            this.setDisplayed(false);\n        }\n    };\n    StatusBar.prototype.createAndRenderComponents = function (statusBarComponents, ePanelComponent) {\n        var _this = this;\n        var componentDetails = [];\n        statusBarComponents.forEach(function (componentConfig) {\n            var params = {};\n            var compDetails = _this.userComponentFactory.getStatusPanelCompDetails(componentConfig, params);\n            var promise = compDetails.newAgStackInstance();\n            if (!promise) {\n                return;\n            }\n            componentDetails.push({\n                // default to the component name if no key supplied\n                key: componentConfig.key || componentConfig.statusPanel,\n                promise: promise\n            });\n        });\n        AgPromise.all(componentDetails.map(function (details) { return details.promise; }))\n            .then(function () {\n            componentDetails.forEach(function (componentDetail) {\n                componentDetail.promise.then(function (component) {\n                    var destroyFunc = function () {\n                        _this.getContext().destroyBean(component);\n                    };\n                    if (_this.isAlive()) {\n                        _this.statusBarService.registerStatusPanel(componentDetail.key, component);\n                        ePanelComponent.appendChild(component.getGui());\n                        _this.addDestroyFunc(destroyFunc);\n                    }\n                    else {\n                        destroyFunc();\n                    }\n                });\n            });\n        });\n    };\n    StatusBar.TEMPLATE = \"<div class=\\\"ag-status-bar\\\">\\n            <div ref=\\\"eStatusBarLeft\\\" class=\\\"ag-status-bar-left\\\" role=\\\"status\\\"></div>\\n            <div ref=\\\"eStatusBarCenter\\\" class=\\\"ag-status-bar-center\\\" role=\\\"status\\\"></div>\\n            <div ref=\\\"eStatusBarRight\\\" class=\\\"ag-status-bar-right\\\" role=\\\"status\\\"></div>\\n        </div>\";\n    __decorate$9([\n        Autowired('userComponentFactory')\n    ], StatusBar.prototype, \"userComponentFactory\", void 0);\n    __decorate$9([\n        Autowired('statusBarService')\n    ], StatusBar.prototype, \"statusBarService\", void 0);\n    __decorate$9([\n        RefSelector('eStatusBarLeft')\n    ], StatusBar.prototype, \"eStatusBarLeft\", void 0);\n    __decorate$9([\n        RefSelector('eStatusBarCenter')\n    ], StatusBar.prototype, \"eStatusBarCenter\", void 0);\n    __decorate$9([\n        RefSelector('eStatusBarRight')\n    ], StatusBar.prototype, \"eStatusBarRight\", void 0);\n    __decorate$9([\n        PostConstruct\n    ], StatusBar.prototype, \"postConstruct\", null);\n    return StatusBar;\n}(Component));\n\nvar __extends$d = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$8 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar NameValueComp = /** @class */ (function (_super) {\n    __extends$d(NameValueComp, _super);\n    function NameValueComp() {\n        return _super.call(this, NameValueComp.TEMPLATE) || this;\n    }\n    NameValueComp.prototype.setLabel = function (key, defaultValue) {\n        // we want to hide until the first value comes in\n        this.setDisplayed(false);\n        var localeTextFunc = this.localeService.getLocaleTextFunc();\n        this.eLabel.innerHTML = localeTextFunc(key, defaultValue);\n    };\n    NameValueComp.prototype.setValue = function (value) {\n        this.eValue.innerHTML = value;\n    };\n    NameValueComp.TEMPLATE = \"<div class=\\\"ag-status-name-value\\\">\\n            <span ref=\\\"eLabel\\\"></span>:&nbsp;\\n            <span ref=\\\"eValue\\\" class=\\\"ag-status-name-value-value\\\"></span>\\n        </div>\";\n    __decorate$8([\n        RefSelector('eLabel')\n    ], NameValueComp.prototype, \"eLabel\", void 0);\n    __decorate$8([\n        RefSelector('eValue')\n    ], NameValueComp.prototype, \"eValue\", void 0);\n    return NameValueComp;\n}(Component));\n\nvar __extends$c = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$7 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar TotalAndFilteredRowsComp = /** @class */ (function (_super) {\n    __extends$c(TotalAndFilteredRowsComp, _super);\n    function TotalAndFilteredRowsComp() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    TotalAndFilteredRowsComp.prototype.postConstruct = function () {\n        // this component is only really useful with client side row model\n        if (this.gridApi.getModel().getType() !== 'clientSide') {\n            console.warn(\"AG Grid: agTotalAndFilteredRowCountComponent should only be used with the client side row model.\");\n            return;\n        }\n        this.setLabel('totalAndFilteredRows', 'Rows');\n        this.addCssClass('ag-status-panel');\n        this.addCssClass('ag-status-panel-total-and-filtered-row-count');\n        this.setDisplayed(true);\n        this.addManagedListener(this.eventService, Events.EVENT_MODEL_UPDATED, this.onDataChanged.bind(this));\n        this.onDataChanged();\n    };\n    TotalAndFilteredRowsComp.prototype.onDataChanged = function () {\n        var localeTextFunc = this.localeService.getLocaleTextFunc();\n        var thousandSeparator = localeTextFunc('thousandSeparator', ',');\n        var decimalSeparator = localeTextFunc('decimalSeparator', '.');\n        var rowCount = _.formatNumberCommas(this.getFilteredRowCountValue(), thousandSeparator, decimalSeparator);\n        var totalRowCount = _.formatNumberCommas(this.getTotalRowCount(), thousandSeparator, decimalSeparator);\n        if (rowCount === totalRowCount) {\n            this.setValue(rowCount);\n        }\n        else {\n            var localeTextFunc_1 = this.localeService.getLocaleTextFunc();\n            this.setValue(rowCount + \" \" + localeTextFunc_1('of', 'of') + \" \" + totalRowCount);\n        }\n    };\n    TotalAndFilteredRowsComp.prototype.getFilteredRowCountValue = function () {\n        var filteredRowCount = 0;\n        this.gridApi.forEachNodeAfterFilter(function (node) {\n            if (!node.group) {\n                filteredRowCount++;\n            }\n        });\n        return filteredRowCount;\n    };\n    TotalAndFilteredRowsComp.prototype.getTotalRowCount = function () {\n        var totalRowCount = 0;\n        this.gridApi.forEachNode(function (node) {\n            if (!node.group) {\n                totalRowCount++;\n            }\n        });\n        return totalRowCount;\n    };\n    TotalAndFilteredRowsComp.prototype.init = function () { };\n    // this is a user component, and IComponent has \"public destroy()\" as part of the interface.\n    // so we need to override destroy() just to make the method public.\n    TotalAndFilteredRowsComp.prototype.destroy = function () {\n        _super.prototype.destroy.call(this);\n    };\n    __decorate$7([\n        Autowired('gridApi')\n    ], TotalAndFilteredRowsComp.prototype, \"gridApi\", void 0);\n    __decorate$7([\n        PostConstruct\n    ], TotalAndFilteredRowsComp.prototype, \"postConstruct\", null);\n    return TotalAndFilteredRowsComp;\n}(NameValueComp));\n\nvar __extends$b = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$6 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar FilteredRowsComp = /** @class */ (function (_super) {\n    __extends$b(FilteredRowsComp, _super);\n    function FilteredRowsComp() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    FilteredRowsComp.prototype.postConstruct = function () {\n        this.setLabel('filteredRows', 'Filtered');\n        // this component is only really useful with client side row model\n        if (this.gridApi.getModel().getType() !== 'clientSide') {\n            console.warn(\"AG Grid: agFilteredRowCountComponent should only be used with the client side row model.\");\n            return;\n        }\n        this.addCssClass('ag-status-panel');\n        this.addCssClass('ag-status-panel-filtered-row-count');\n        this.setDisplayed(true);\n        var listener = this.onDataChanged.bind(this);\n        this.addManagedListener(this.eventService, Events.EVENT_MODEL_UPDATED, listener);\n        listener();\n    };\n    FilteredRowsComp.prototype.onDataChanged = function () {\n        var totalRowCountValue = this.getTotalRowCountValue();\n        var filteredRowCountValue = this.getFilteredRowCountValue();\n        var localeTextFunc = this.localeService.getLocaleTextFunc();\n        var thousandSeparator = localeTextFunc('thousandSeparator', ',');\n        var decimalSeparator = localeTextFunc('decimalSeparator', '.');\n        this.setValue(_.formatNumberCommas(filteredRowCountValue, thousandSeparator, decimalSeparator));\n        this.setDisplayed(totalRowCountValue !== filteredRowCountValue);\n    };\n    FilteredRowsComp.prototype.getTotalRowCountValue = function () {\n        var totalRowCount = 0;\n        this.gridApi.forEachNode(function (node) { return totalRowCount += 1; });\n        return totalRowCount;\n    };\n    FilteredRowsComp.prototype.getFilteredRowCountValue = function () {\n        var filteredRowCount = 0;\n        this.gridApi.forEachNodeAfterFilter(function (node) {\n            if (!node.group) {\n                filteredRowCount += 1;\n            }\n        });\n        return filteredRowCount;\n    };\n    FilteredRowsComp.prototype.init = function () { };\n    // this is a user component, and IComponent has \"public destroy()\" as part of the interface.\n    // so we need to override destroy() just to make the method public.\n    FilteredRowsComp.prototype.destroy = function () {\n        _super.prototype.destroy.call(this);\n    };\n    __decorate$6([\n        Autowired('gridApi')\n    ], FilteredRowsComp.prototype, \"gridApi\", void 0);\n    __decorate$6([\n        PostConstruct\n    ], FilteredRowsComp.prototype, \"postConstruct\", null);\n    return FilteredRowsComp;\n}(NameValueComp));\n\nvar __extends$a = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$5 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar TotalRowsComp = /** @class */ (function (_super) {\n    __extends$a(TotalRowsComp, _super);\n    function TotalRowsComp() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    TotalRowsComp.prototype.postConstruct = function () {\n        this.setLabel('totalRows', 'Total Rows');\n        // this component is only really useful with client side row model\n        if (this.gridApi.getModel().getType() !== 'clientSide') {\n            console.warn(\"AG Grid: agTotalRowCountComponent should only be used with the client side row model.\");\n            return;\n        }\n        this.addCssClass('ag-status-panel');\n        this.addCssClass('ag-status-panel-total-row-count');\n        this.setDisplayed(true);\n        this.addManagedListener(this.eventService, Events.EVENT_MODEL_UPDATED, this.onDataChanged.bind(this));\n        this.onDataChanged();\n    };\n    TotalRowsComp.prototype.onDataChanged = function () {\n        var localeTextFunc = this.localeService.getLocaleTextFunc();\n        var thousandSeparator = localeTextFunc('thousandSeparator', ',');\n        var decimalSeparator = localeTextFunc('decimalSeparator', '.');\n        this.setValue(_.formatNumberCommas(this.getRowCountValue(), thousandSeparator, decimalSeparator));\n    };\n    TotalRowsComp.prototype.getRowCountValue = function () {\n        var totalRowCount = 0;\n        this.gridApi.forEachLeafNode(function (node) { return totalRowCount += 1; });\n        return totalRowCount;\n    };\n    TotalRowsComp.prototype.init = function () {\n    };\n    // this is a user component, and IComponent has \"public destroy()\" as part of the interface.\n    // so we need to override destroy() just to make the method public.\n    TotalRowsComp.prototype.destroy = function () {\n        _super.prototype.destroy.call(this);\n    };\n    __decorate$5([\n        Autowired('gridApi')\n    ], TotalRowsComp.prototype, \"gridApi\", void 0);\n    __decorate$5([\n        PostConstruct\n    ], TotalRowsComp.prototype, \"postConstruct\", null);\n    return TotalRowsComp;\n}(NameValueComp));\n\nvar __extends$9 = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$4 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar SelectedRowsComp = /** @class */ (function (_super) {\n    __extends$9(SelectedRowsComp, _super);\n    function SelectedRowsComp() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    SelectedRowsComp.prototype.postConstruct = function () {\n        if (!this.isValidRowModel()) {\n            console.warn(\"AG Grid: agSelectedRowCountComponent should only be used with the client and server side row model.\");\n            return;\n        }\n        this.setLabel('selectedRows', 'Selected');\n        this.addCssClass('ag-status-panel');\n        this.addCssClass('ag-status-panel-selected-row-count');\n        this.onRowSelectionChanged();\n        var eventListener = this.onRowSelectionChanged.bind(this);\n        this.addManagedListener(this.eventService, Events.EVENT_MODEL_UPDATED, eventListener);\n        this.addManagedListener(this.eventService, Events.EVENT_SELECTION_CHANGED, eventListener);\n    };\n    SelectedRowsComp.prototype.isValidRowModel = function () {\n        // this component is only really useful with client or server side rowmodels\n        var rowModelType = this.gridApi.getModel().getType();\n        return rowModelType === 'clientSide' || rowModelType === 'serverSide';\n    };\n    SelectedRowsComp.prototype.onRowSelectionChanged = function () {\n        var selectedRowCount = this.selectionService.getSelectionCount();\n        if (selectedRowCount < 0) {\n            this.setValue('?');\n            this.setDisplayed(true);\n            return;\n        }\n        var localeTextFunc = this.localeService.getLocaleTextFunc();\n        var thousandSeparator = localeTextFunc('thousandSeparator', ',');\n        var decimalSeparator = localeTextFunc('decimalSeparator', '.');\n        this.setValue(_.formatNumberCommas(selectedRowCount, thousandSeparator, decimalSeparator));\n        this.setDisplayed(selectedRowCount > 0);\n    };\n    SelectedRowsComp.prototype.init = function () {\n    };\n    // this is a user component, and IComponent has \"public destroy()\" as part of the interface.\n    // so we need to override destroy() just to make the method public.\n    SelectedRowsComp.prototype.destroy = function () {\n        _super.prototype.destroy.call(this);\n    };\n    __decorate$4([\n        Autowired('gridApi')\n    ], SelectedRowsComp.prototype, \"gridApi\", void 0);\n    __decorate$4([\n        Autowired('selectionService')\n    ], SelectedRowsComp.prototype, \"selectionService\", void 0);\n    __decorate$4([\n        PostConstruct\n    ], SelectedRowsComp.prototype, \"postConstruct\", null);\n    return SelectedRowsComp;\n}(NameValueComp));\n\nvar __extends$8 = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$3 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar AggregationComp = /** @class */ (function (_super) {\n    __extends$8(AggregationComp, _super);\n    function AggregationComp() {\n        return _super.call(this, AggregationComp.TEMPLATE) || this;\n    }\n    // this is a user component, and IComponent has \"public destroy()\" as part of the interface.\n    // so we need to override destroy() just to make the method public.\n    AggregationComp.prototype.destroy = function () {\n        _super.prototype.destroy.call(this);\n    };\n    AggregationComp.prototype.postConstruct = function () {\n        if (!this.isValidRowModel()) {\n            console.warn(\"AG Grid: agAggregationComponent should only be used with the client and server side row model.\");\n            return;\n        }\n        this.avgAggregationComp.setLabel('avg', 'Average');\n        this.countAggregationComp.setLabel('count', 'Count');\n        this.minAggregationComp.setLabel('min', 'Min');\n        this.maxAggregationComp.setLabel('max', 'Max');\n        this.sumAggregationComp.setLabel('sum', 'Sum');\n        this.addManagedListener(this.eventService, Events.EVENT_RANGE_SELECTION_CHANGED, this.onRangeSelectionChanged.bind(this));\n        this.addManagedListener(this.eventService, Events.EVENT_MODEL_UPDATED, this.onRangeSelectionChanged.bind(this));\n    };\n    AggregationComp.prototype.isValidRowModel = function () {\n        // this component is only really useful with client or server side rowmodels\n        var rowModelType = this.gridApi.getModel().getType();\n        return rowModelType === 'clientSide' || rowModelType === 'serverSide';\n    };\n    AggregationComp.prototype.init = function () {\n    };\n    AggregationComp.prototype.setAggregationComponentValue = function (aggFuncName, value, visible) {\n        var statusBarValueComponent = this.getAggregationValueComponent(aggFuncName);\n        if (_.exists(statusBarValueComponent) && statusBarValueComponent) {\n            var localeTextFunc = this.localeService.getLocaleTextFunc();\n            var thousandSeparator = localeTextFunc('thousandSeparator', ',');\n            var decimalSeparator = localeTextFunc('decimalSeparator', '.');\n            statusBarValueComponent.setValue(_.formatNumberTwoDecimalPlacesAndCommas(value, thousandSeparator, decimalSeparator));\n            statusBarValueComponent.setDisplayed(visible);\n        }\n    };\n    AggregationComp.prototype.getAggregationValueComponent = function (aggFuncName) {\n        // converts user supplied agg name to our reference - eg: sum => sumAggregationComp\n        var refComponentName = aggFuncName + \"AggregationComp\";\n        // if the user has specified the agAggregationPanelComp but no aggFuncs we show the all\n        // if the user has specified the agAggregationPanelComp and aggFuncs, then we only show the aggFuncs listed\n        var statusBarValueComponent = null;\n        var statusBar = this.gridOptionsService.get('statusBar');\n        var aggregationPanelConfig = _.exists(statusBar) && statusBar ? statusBar.statusPanels.find(function (panel) { return panel.statusPanel === 'agAggregationComponent'; }) : null;\n        if (_.exists(aggregationPanelConfig) && aggregationPanelConfig) {\n            // a little defensive here - if no statusPanelParams show it, if componentParams we also expect aggFuncs\n            if (!_.exists(aggregationPanelConfig.statusPanelParams) ||\n                (_.exists(aggregationPanelConfig.statusPanelParams) &&\n                    _.exists(aggregationPanelConfig.statusPanelParams.aggFuncs) &&\n                    _.exists(aggregationPanelConfig.statusPanelParams.aggFuncs.find(function (func) { return func === aggFuncName; })))) {\n                statusBarValueComponent = this[refComponentName];\n            }\n        }\n        else {\n            // components not specified - assume we can show this component\n            statusBarValueComponent = this[refComponentName];\n        }\n        // either we can't find it (which would indicate a typo or similar user side), or the user has deliberately\n        // not listed the component in aggFuncs\n        return statusBarValueComponent;\n    };\n    AggregationComp.prototype.onRangeSelectionChanged = function () {\n        var _this = this;\n        var cellRanges = this.rangeService ? this.rangeService.getCellRanges() : undefined;\n        var sum = 0;\n        var count = 0;\n        var numberCount = 0;\n        var min = null;\n        var max = null;\n        var cellsSoFar = {};\n        if (cellRanges && !_.missingOrEmpty(cellRanges)) {\n            cellRanges.forEach(function (cellRange) {\n                var currentRow = _this.rangeService.getRangeStartRow(cellRange);\n                var lastRow = _this.rangeService.getRangeEndRow(cellRange);\n                while (true) {\n                    var finishedAllRows = _.missing(currentRow) || !currentRow || _this.rowPositionUtils.before(lastRow, currentRow);\n                    if (finishedAllRows || !currentRow || !cellRange.columns) {\n                        break;\n                    }\n                    cellRange.columns.forEach(function (col) {\n                        if (currentRow === null) {\n                            return;\n                        }\n                        // we only want to include each cell once, in case a cell is in multiple ranges\n                        var cellId = _this.cellPositionUtils.createId({\n                            rowPinned: currentRow.rowPinned,\n                            column: col,\n                            rowIndex: currentRow.rowIndex\n                        });\n                        if (cellsSoFar[cellId]) {\n                            return;\n                        }\n                        cellsSoFar[cellId] = true;\n                        var rowNode = _this.rowRenderer.getRowNode(currentRow);\n                        if (_.missing(rowNode)) {\n                            return;\n                        }\n                        var value = _this.valueService.getValue(col, rowNode);\n                        // if empty cell, skip it, doesn't impact count or anything\n                        if (_.missing(value) || value === '') {\n                            return;\n                        }\n                        // see if value is wrapped, can happen when doing count() or avg() functions\n                        if (typeof value === 'object' && 'value' in value) {\n                            value = value.value;\n                        }\n                        if (typeof value === 'string') {\n                            value = Number(value);\n                        }\n                        if (typeof value === 'number' && !isNaN(value)) {\n                            sum += value;\n                            if (max === null || value > max) {\n                                max = value;\n                            }\n                            if (min === null || value < min) {\n                                min = value;\n                            }\n                            numberCount++;\n                        }\n                        count++;\n                    });\n                    currentRow = _this.cellNavigationService.getRowBelow(currentRow);\n                }\n            });\n        }\n        var gotResult = count > 1;\n        var gotNumberResult = numberCount > 1;\n        // we show count even if no numbers\n        this.setAggregationComponentValue('count', count, gotResult);\n        // show if numbers found\n        this.setAggregationComponentValue('sum', sum, gotNumberResult);\n        this.setAggregationComponentValue('min', min, gotNumberResult);\n        this.setAggregationComponentValue('max', max, gotNumberResult);\n        this.setAggregationComponentValue('avg', (sum / numberCount), gotNumberResult);\n    };\n    AggregationComp.TEMPLATE = \"<div class=\\\"ag-status-panel ag-status-panel-aggregations\\\">\\n            <ag-name-value ref=\\\"avgAggregationComp\\\"></ag-name-value>\\n            <ag-name-value ref=\\\"countAggregationComp\\\"></ag-name-value>\\n            <ag-name-value ref=\\\"minAggregationComp\\\"></ag-name-value>\\n            <ag-name-value ref=\\\"maxAggregationComp\\\"></ag-name-value>\\n            <ag-name-value ref=\\\"sumAggregationComp\\\"></ag-name-value>\\n        </div>\";\n    __decorate$3([\n        Optional('rangeService')\n    ], AggregationComp.prototype, \"rangeService\", void 0);\n    __decorate$3([\n        Autowired('valueService')\n    ], AggregationComp.prototype, \"valueService\", void 0);\n    __decorate$3([\n        Autowired('cellNavigationService')\n    ], AggregationComp.prototype, \"cellNavigationService\", void 0);\n    __decorate$3([\n        Autowired('rowRenderer')\n    ], AggregationComp.prototype, \"rowRenderer\", void 0);\n    __decorate$3([\n        Autowired('gridApi')\n    ], AggregationComp.prototype, \"gridApi\", void 0);\n    __decorate$3([\n        Autowired('cellPositionUtils')\n    ], AggregationComp.prototype, \"cellPositionUtils\", void 0);\n    __decorate$3([\n        Autowired('rowPositionUtils')\n    ], AggregationComp.prototype, \"rowPositionUtils\", void 0);\n    __decorate$3([\n        RefSelector('sumAggregationComp')\n    ], AggregationComp.prototype, \"sumAggregationComp\", void 0);\n    __decorate$3([\n        RefSelector('countAggregationComp')\n    ], AggregationComp.prototype, \"countAggregationComp\", void 0);\n    __decorate$3([\n        RefSelector('minAggregationComp')\n    ], AggregationComp.prototype, \"minAggregationComp\", void 0);\n    __decorate$3([\n        RefSelector('maxAggregationComp')\n    ], AggregationComp.prototype, \"maxAggregationComp\", void 0);\n    __decorate$3([\n        RefSelector('avgAggregationComp')\n    ], AggregationComp.prototype, \"avgAggregationComp\", void 0);\n    __decorate$3([\n        PostConstruct\n    ], AggregationComp.prototype, \"postConstruct\", null);\n    return AggregationComp;\n}(Component));\n\n// DO NOT UPDATE MANUALLY: Generated from script during build time\nvar VERSION$2 = '29.3.5';\n\nvar StatusBarModule = {\n    version: VERSION$2,\n    moduleName: ModuleNames.StatusBarModule,\n    beans: [StatusBarService],\n    agStackComponents: [\n        { componentName: 'AgStatusBar', componentClass: StatusBar },\n        { componentName: 'AgNameValue', componentClass: NameValueComp },\n    ],\n    userComponents: [\n        { componentName: 'agAggregationComponent', componentClass: AggregationComp },\n        { componentName: 'agSelectedRowCountComponent', componentClass: SelectedRowsComp },\n        { componentName: 'agTotalRowCountComponent', componentClass: TotalRowsComp },\n        { componentName: 'agFilteredRowCountComponent', componentClass: FilteredRowsComp },\n        { componentName: 'agTotalAndFilteredRowCountComponent', componentClass: TotalAndFilteredRowsComp }\n    ],\n    dependantModules: [\n        EnterpriseCoreModule\n    ]\n};\n\n// DO NOT UPDATE MANUALLY: Generated from script during build time\nvar VERSION$1 = '29.3.5';\n\nvar __extends$7 = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate$2 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar DEFAULT_VIEWPORT_ROW_MODEL_PAGE_SIZE = 5;\nvar DEFAULT_VIEWPORT_ROW_MODEL_BUFFER_SIZE = 5;\nvar ViewportRowModel = /** @class */ (function (_super) {\n    __extends$7(ViewportRowModel, _super);\n    function ViewportRowModel() {\n        var _this = _super !== null && _super.apply(this, arguments) || this;\n        // rowRenderer tells us these\n        _this.firstRow = -1;\n        _this.lastRow = -1;\n        // datasource tells us this\n        _this.rowCount = -1;\n        _this.rowNodesByIndex = {};\n        return _this;\n    }\n    // we don't implement as lazy row heights is not supported in this row model\n    ViewportRowModel.prototype.ensureRowHeightsValid = function (startPixel, endPixel, startLimitIndex, endLimitIndex) { return false; };\n    ViewportRowModel.prototype.init = function () {\n        this.rowHeight = this.gridOptionsService.getRowHeightAsNumber();\n        this.addManagedListener(this.eventService, Events.EVENT_VIEWPORT_CHANGED, this.onViewportChanged.bind(this));\n    };\n    ViewportRowModel.prototype.start = function () {\n        if (this.gridOptionsService.get('viewportDatasource')) {\n            this.setViewportDatasource(this.gridOptionsService.get('viewportDatasource'));\n        }\n    };\n    ViewportRowModel.prototype.isLastRowIndexKnown = function () {\n        return true;\n    };\n    ViewportRowModel.prototype.destroyDatasource = function () {\n        if (!this.viewportDatasource) {\n            return;\n        }\n        if (this.viewportDatasource.destroy) {\n            this.viewportDatasource.destroy();\n        }\n        this.rowRenderer.datasourceChanged();\n        this.firstRow = -1;\n        this.lastRow = -1;\n    };\n    ViewportRowModel.prototype.getViewportRowModelPageSize = function () {\n        return _.oneOrGreater(this.gridOptionsService.getNum('viewportRowModelPageSize'), DEFAULT_VIEWPORT_ROW_MODEL_PAGE_SIZE);\n    };\n    ViewportRowModel.prototype.getViewportRowModelBufferSize = function () {\n        return _.zeroOrGreater(this.gridOptionsService.getNum('viewportRowModelBufferSize'), DEFAULT_VIEWPORT_ROW_MODEL_BUFFER_SIZE);\n    };\n    ViewportRowModel.prototype.calculateFirstRow = function (firstRenderedRow) {\n        var bufferSize = this.getViewportRowModelBufferSize();\n        var pageSize = this.getViewportRowModelPageSize();\n        var afterBuffer = firstRenderedRow - bufferSize;\n        if (afterBuffer < 0) {\n            return 0;\n        }\n        return Math.floor(afterBuffer / pageSize) * pageSize;\n    };\n    ViewportRowModel.prototype.calculateLastRow = function (lastRenderedRow) {\n        if (lastRenderedRow === -1) {\n            return lastRenderedRow;\n        }\n        var bufferSize = this.getViewportRowModelBufferSize();\n        var pageSize = this.getViewportRowModelPageSize();\n        var afterBuffer = lastRenderedRow + bufferSize;\n        var result = Math.ceil(afterBuffer / pageSize) * pageSize;\n        var lastRowIndex = this.rowCount - 1;\n        return Math.min(result, lastRowIndex);\n    };\n    ViewportRowModel.prototype.onViewportChanged = function (event) {\n        var newFirst = this.calculateFirstRow(event.firstRow);\n        var newLast = this.calculateLastRow(event.lastRow);\n        if (this.firstRow !== newFirst || this.lastRow !== newLast) {\n            this.firstRow = newFirst;\n            this.lastRow = newLast;\n            this.purgeRowsNotInViewport();\n            if (this.viewportDatasource) {\n                this.viewportDatasource.setViewportRange(this.firstRow, this.lastRow);\n            }\n        }\n    };\n    ViewportRowModel.prototype.purgeRowsNotInViewport = function () {\n        var _this = this;\n        Object.keys(this.rowNodesByIndex).forEach(function (indexStr) {\n            var index = parseInt(indexStr, 10);\n            if (index < _this.firstRow || index > _this.lastRow) {\n                if (_this.isRowFocused(index)) {\n                    return;\n                }\n                delete _this.rowNodesByIndex[index];\n            }\n        });\n    };\n    ViewportRowModel.prototype.isRowFocused = function (rowIndex) {\n        var focusedCell = this.focusService.getFocusCellToUseAfterRefresh();\n        if (!focusedCell) {\n            return false;\n        }\n        if (focusedCell.rowPinned != null) {\n            return false;\n        }\n        var hasFocus = focusedCell.rowIndex === rowIndex;\n        return hasFocus;\n    };\n    ViewportRowModel.prototype.setViewportDatasource = function (viewportDatasource) {\n        this.destroyDatasource();\n        this.viewportDatasource = viewportDatasource;\n        this.rowCount = -1;\n        if (!viewportDatasource.init) {\n            console.warn('AG Grid: viewport is missing init method.');\n        }\n        else {\n            viewportDatasource.init({\n                setRowCount: this.setRowCount.bind(this),\n                setRowData: this.setRowData.bind(this),\n                getRow: this.getRow.bind(this)\n            });\n        }\n    };\n    ViewportRowModel.prototype.getType = function () {\n        return 'viewport';\n    };\n    ViewportRowModel.prototype.getRow = function (rowIndex) {\n        if (!this.rowNodesByIndex[rowIndex]) {\n            this.rowNodesByIndex[rowIndex] = this.createBlankRowNode(rowIndex);\n        }\n        return this.rowNodesByIndex[rowIndex];\n    };\n    ViewportRowModel.prototype.getRowNode = function (id) {\n        var result;\n        this.forEachNode(function (rowNode) {\n            if (rowNode.id === id) {\n                result = rowNode;\n            }\n        });\n        return result;\n    };\n    ViewportRowModel.prototype.getRowCount = function () {\n        return this.rowCount === -1 ? 0 : this.rowCount;\n    };\n    ViewportRowModel.prototype.getRowIndexAtPixel = function (pixel) {\n        if (this.rowHeight !== 0) { // avoid divide by zero error\n            return Math.floor(pixel / this.rowHeight);\n        }\n        return 0;\n    };\n    ViewportRowModel.prototype.getRowBounds = function (index) {\n        return {\n            rowHeight: this.rowHeight,\n            rowTop: this.rowHeight * index\n        };\n    };\n    ViewportRowModel.prototype.getTopLevelRowCount = function () {\n        return this.getRowCount();\n    };\n    ViewportRowModel.prototype.getTopLevelRowDisplayedIndex = function (topLevelIndex) {\n        return topLevelIndex;\n    };\n    ViewportRowModel.prototype.isEmpty = function () {\n        return this.rowCount > 0;\n    };\n    ViewportRowModel.prototype.isRowsToRender = function () {\n        return this.rowCount > 0;\n    };\n    ViewportRowModel.prototype.getNodesInRangeForSelection = function (firstInRange, lastInRange) {\n        var firstIndex = _.missing(firstInRange) ? 0 : firstInRange.rowIndex;\n        var lastIndex = lastInRange.rowIndex;\n        var firstNodeOutOfRange = firstIndex < this.firstRow || firstIndex > this.lastRow;\n        var lastNodeOutOfRange = lastIndex < this.firstRow || lastIndex > this.lastRow;\n        if (firstNodeOutOfRange || lastNodeOutOfRange) {\n            return [];\n        }\n        var result = [];\n        var startIndex = firstIndex <= lastIndex ? firstIndex : lastIndex;\n        var endIndex = firstIndex <= lastIndex ? lastIndex : firstIndex;\n        for (var i = startIndex; i <= endIndex; i++) {\n            result.push(this.rowNodesByIndex[i]);\n        }\n        return result;\n    };\n    ViewportRowModel.prototype.forEachNode = function (callback) {\n        var _this = this;\n        var callbackCount = 0;\n        Object.keys(this.rowNodesByIndex).forEach(function (indexStr) {\n            var index = parseInt(indexStr, 10);\n            var rowNode = _this.rowNodesByIndex[index];\n            callback(rowNode, callbackCount);\n            callbackCount++;\n        });\n    };\n    ViewportRowModel.prototype.setRowData = function (rowData) {\n        var _this = this;\n        _.iterateObject(rowData, function (indexStr, dataItem) {\n            var index = parseInt(indexStr, 10);\n            // we should never keep rows that we didn't specifically ask for, this\n            // guarantees the contract we have with the server.\n            if (index >= _this.firstRow && index <= _this.lastRow) {\n                var rowNode = _this.rowNodesByIndex[index];\n                // the abnormal case is we requested a row even though the grid didn't need it\n                // as a result of the paging and buffer (ie the row is off screen), in which\n                // case we need to create a new node now\n                if (_.missing(rowNode)) {\n                    rowNode = _this.createBlankRowNode(index);\n                    _this.rowNodesByIndex[index] = rowNode;\n                }\n                // now we deffo have a row node, so set in the details\n                // if the grid already asked for this row (the normal case), then we would\n                // of put a placeholder node in place.\n                rowNode.setDataAndId(dataItem, index.toString());\n            }\n        });\n    };\n    ViewportRowModel.prototype.createBlankRowNode = function (rowIndex) {\n        var rowNode = new RowNode(this.beans);\n        rowNode.setRowHeight(this.rowHeight);\n        rowNode.setRowTop(this.rowHeight * rowIndex);\n        rowNode.setRowIndex(rowIndex);\n        return rowNode;\n    };\n    ViewportRowModel.prototype.setRowCount = function (rowCount, keepRenderedRows) {\n        if (keepRenderedRows === void 0) { keepRenderedRows = false; }\n        if (rowCount === this.rowCount) {\n            return;\n        }\n        this.rowCount = rowCount;\n        var event = {\n            type: Events.EVENT_MODEL_UPDATED,\n            newData: false,\n            newPage: false,\n            keepRenderedRows: keepRenderedRows,\n            animate: false\n        };\n        this.eventService.dispatchEvent(event);\n    };\n    ViewportRowModel.prototype.isRowPresent = function (rowNode) {\n        var foundRowNode = this.getRowNode(rowNode.id);\n        return !!foundRowNode;\n    };\n    __decorate$2([\n        Autowired('rowRenderer')\n    ], ViewportRowModel.prototype, \"rowRenderer\", void 0);\n    __decorate$2([\n        Autowired('focusService')\n    ], ViewportRowModel.prototype, \"focusService\", void 0);\n    __decorate$2([\n        Autowired('beans')\n    ], ViewportRowModel.prototype, \"beans\", void 0);\n    __decorate$2([\n        PostConstruct\n    ], ViewportRowModel.prototype, \"init\", null);\n    __decorate$2([\n        PreDestroy\n    ], ViewportRowModel.prototype, \"destroyDatasource\", null);\n    ViewportRowModel = __decorate$2([\n        Bean('rowModel')\n    ], ViewportRowModel);\n    return ViewportRowModel;\n}(BeanStub));\n\nvar ViewportRowModelModule = {\n    version: VERSION$1,\n    moduleName: ModuleNames.ViewportRowModelModule,\n    rowModel: 'viewport',\n    beans: [ViewportRowModel],\n    dependantModules: [\n        EnterpriseCoreModule\n    ]\n};\n\nvar defaultTooltipCss = \"\\n.ag-sparkline-tooltip-wrapper {\\n    position: absolute;\\n    user-select: none;\\n    pointer-events: none;\\n}\\n\\n.ag-sparkline-tooltip {\\n    position: relative;\\n    font: 12px arial,sans-serif;\\n    border-radius: 2px;\\n    box-shadow: 0 1px 3px rgb(0 0 0 / 20%), 0 1px 1px rgb(0 0 0 / 14%);\\n    line-height: 1.7em;\\n    overflow: hidden;\\n    white-space: nowrap;\\n    z-index: 99999;\\n    background-color: rgb(255, 255, 255);\\n    color: rgba(0,0,0, 0.67);\\n}\\n\\n.ag-sparkline-tooltip-content {\\n    padding: 0 7px;\\n    opacity: 1;\\n}\\n\\n.ag-sparkline-tooltip-title {\\n    padding-left: 7px;\\n    opacity: 1;\\n}\\n\\n.ag-sparkline-tooltip-wrapper-hidden {\\n    top: -10000px !important;\\n}\\n\\n.ag-sparkline-wrapper {\\n    box-sizing: border-box;\\n    overflow: hidden;\\n}\\n\";\n\nvar __values = (undefined && undefined.__values) || function(o) {\n    var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n    if (m) return m.call(o);\n    if (o && typeof o.length === \"number\") return {\n        next: function () {\n            if (o && i >= o.length) o = void 0;\n            return { value: o && o[i++], done: !o };\n        }\n    };\n    throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nvar extent$3 = extent$4, isNumber$3 = isNumber$4, isString = isString$1, isStringObject = isStringObject$1, isDate = isDate$1, createId = createId$1, Padding = Padding$1;\nvar LinearScale = LinearScale$1, BandScale$4 = BandScale$5, TimeScale = TimeScale$1;\n/**\n * Constants to declare the expected nominal zIndex for nodes in a sparkline rendering.\n */\nvar ZINDICIES;\n(function (ZINDICIES) {\n    ZINDICIES[ZINDICIES[\"SERIES_FILL_ZINDEX\"] = 50] = \"SERIES_FILL_ZINDEX\";\n    ZINDICIES[ZINDICIES[\"AXIS_LINE_ZINDEX\"] = 500] = \"AXIS_LINE_ZINDEX\";\n    ZINDICIES[ZINDICIES[\"SERIES_STROKE_ZINDEX\"] = 1000] = \"SERIES_STROKE_ZINDEX\";\n    ZINDICIES[ZINDICIES[\"SERIES_LABEL_ZINDEX\"] = 1500] = \"SERIES_LABEL_ZINDEX\";\n    ZINDICIES[ZINDICIES[\"CROSSHAIR_ZINDEX\"] = 2000] = \"CROSSHAIR_ZINDEX\";\n    ZINDICIES[ZINDICIES[\"SERIES_MARKERS_ZINDEX\"] = 2500] = \"SERIES_MARKERS_ZINDEX\";\n})(ZINDICIES || (ZINDICIES = {}));\nvar SparklineAxis = /** @class */ (function () {\n    function SparklineAxis() {\n        this.type = 'category';\n        this.stroke = 'rgb(204, 214, 235)';\n        this.strokeWidth = 1;\n    }\n    return SparklineAxis;\n}());\nvar Sparkline = /** @class */ (function () {\n    function Sparkline() {\n        this.id = createId(this);\n        this.seriesRect = {\n            x: 0,\n            y: 0,\n            width: 0,\n            height: 0,\n        };\n        this._context = undefined;\n        this._container = undefined;\n        this._data = undefined;\n        this.padding = new Padding(3);\n        this.xKey = 'x';\n        this.yKey = 'y';\n        this.dataType = undefined;\n        this.xData = [];\n        this.yData = [];\n        // Minimum y value in provided data.\n        this.min = undefined;\n        // Maximum y value in provided data.\n        this.max = undefined;\n        this.yScale = new LinearScale();\n        this.axis = new SparklineAxis();\n        this.highlightStyle = {\n            size: 6,\n            fill: 'yellow',\n            stroke: 'silver',\n            strokeWidth: 1,\n        };\n        this._width = 100;\n        this._height = 100;\n        this.smallestInterval = undefined;\n        this.layoutId = 0;\n        this.defaultDateFormatter = new Intl.DateTimeFormat('en-US', {\n            year: 'numeric',\n            month: '2-digit',\n            day: '2-digit',\n            hour: '2-digit',\n            minute: '2-digit',\n            second: '2-digit',\n            hour12: false,\n        });\n        this._onMouseMove = this.onMouseMove.bind(this);\n        this._onMouseOut = this.onMouseOut.bind(this);\n        var root = new Group();\n        this.rootGroup = root;\n        var element = document.createElement('div');\n        element.setAttribute('class', 'ag-sparkline-wrapper');\n        var scene = new Scene({ document: document });\n        this.scene = scene;\n        this.canvasElement = scene.canvas.element;\n        scene.root = root;\n        scene.container = element;\n        scene.resize(this.width, this.height);\n        this.seriesRect.width = this.width;\n        this.seriesRect.height = this.height;\n        // one style element for tooltip styles per document\n        if (Sparkline.tooltipDocuments.indexOf(document) === -1) {\n            var styleElement = document.createElement('style');\n            styleElement.innerHTML = defaultTooltipCss;\n            document.head.insertBefore(styleElement, document.head.querySelector('style'));\n            Sparkline.tooltipDocuments.push(document);\n        }\n        this.setupDomEventListeners(this.scene.canvas.element);\n    }\n    Object.defineProperty(Sparkline.prototype, \"context\", {\n        get: function () {\n            return this._context;\n        },\n        set: function (value) {\n            if (this._context !== value) {\n                this._context = value;\n            }\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(Sparkline.prototype, \"container\", {\n        get: function () {\n            return this._container;\n        },\n        set: function (value) {\n            if (this._container !== value) {\n                var parentNode = this.canvasElement.parentNode;\n                if (parentNode != null) {\n                    parentNode.removeChild(this.canvasElement);\n                }\n                if (value) {\n                    value.appendChild(this.canvasElement);\n                }\n                this._container = value;\n            }\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(Sparkline.prototype, \"data\", {\n        get: function () {\n            return this._data;\n        },\n        set: function (value) {\n            if (this._data !== value) {\n                this._data = value;\n                this.processData();\n                if (this.mouseMoveEvent && this.highlightedDatum) {\n                    this.updateHitPoint(this.mouseMoveEvent);\n                }\n            }\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(Sparkline.prototype, \"width\", {\n        get: function () {\n            return this._width;\n        },\n        set: function (value) {\n            if (this._width !== value) {\n                this._width = value;\n                this.scene.resize(value, this.height);\n                this.scheduleLayout();\n            }\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(Sparkline.prototype, \"height\", {\n        get: function () {\n            return this._height;\n        },\n        set: function (value) {\n            if (this._height !== value) {\n                this._height = value;\n                this.scene.resize(this.width, value);\n                this.scheduleLayout();\n            }\n        },\n        enumerable: false,\n        configurable: true\n    });\n    /**\n     * Generate node data from processed data.\n     * Produce data joins.\n     * Update selection's nodes using node data.\n     */\n    Sparkline.prototype.update = function () { };\n    // Update y scale based on processed data.\n    Sparkline.prototype.updateYScale = function () {\n        this.updateYScaleRange();\n        this.updateYScaleDomain();\n    };\n    // Update y scale domain based on processed data.\n    Sparkline.prototype.updateYScaleDomain = function () { };\n    // Update y scale range based on height and padding (seriesRect).\n    Sparkline.prototype.updateYScaleRange = function () {\n        var _a = this, yScale = _a.yScale, seriesRect = _a.seriesRect;\n        yScale.range = [seriesRect.height, 0];\n    };\n    // Update x scale based on processed data.\n    Sparkline.prototype.updateXScale = function () {\n        var type = this.axis.type;\n        this.xScale = this.getXScale(type);\n        this.updateXScaleRange();\n        this.updateXScaleDomain();\n    };\n    // Update x scale range based on width and padding (seriesRect).\n    Sparkline.prototype.updateXScaleRange = function () {\n        this.xScale.range = [0, this.seriesRect.width];\n    };\n    // Update x scale domain based on processed data and type of scale.\n    Sparkline.prototype.updateXScaleDomain = function () {\n        var _a = this, xData = _a.xData, xScale = _a.xScale;\n        var xMinMax;\n        if (xScale instanceof LinearScale || xScale instanceof TimeScale) {\n            xMinMax = extent$3(xData);\n        }\n        this.xScale.domain = xMinMax ? xMinMax.slice() : xData;\n    };\n    /**\n     * Return xScale instance based on the provided type or return a `BandScale` by default.\n     * The default type is `category`.\n     * @param type\n     */\n    Sparkline.prototype.getXScale = function (type) {\n        if (type === void 0) { type = 'category'; }\n        switch (type) {\n            case 'number':\n                return new LinearScale();\n            case 'time':\n                return new TimeScale();\n            case 'category':\n            default:\n                return new BandScale$4();\n        }\n    };\n    // Update axis line.\n    Sparkline.prototype.updateAxisLine = function () { };\n    // Update X and Y scales and the axis line.\n    Sparkline.prototype.updateAxes = function () {\n        this.updateYScale();\n        this.updateXScale();\n        this.updateAxisLine();\n    };\n    // Update horizontal and vertical crosshair lines.\n    Sparkline.prototype.updateCrosshairs = function () {\n        this.updateXCrosshairLine();\n        this.updateYCrosshairLine();\n    };\n    // Using processed data, generate data that backs visible nodes.\n    Sparkline.prototype.generateNodeData = function () {\n        return [];\n    };\n    // Returns persisted node data associated with the sparkline's data.\n    Sparkline.prototype.getNodeData = function () {\n        return [];\n    };\n    // Update the selection's nodes.\n    Sparkline.prototype.updateNodes = function () { };\n    // Update the vertical crosshair line.\n    Sparkline.prototype.updateXCrosshairLine = function () { };\n    // Update the horizontal crosshair line.\n    Sparkline.prototype.updateYCrosshairLine = function () { };\n    Sparkline.prototype.highlightDatum = function (closestDatum) {\n        this.updateNodes();\n    };\n    Sparkline.prototype.dehighlightDatum = function () {\n        this.highlightedDatum = undefined;\n        this.updateNodes();\n        this.updateCrosshairs();\n    };\n    /**\n     * Highlight closest datum and display tooltip if enabled.\n     * Only update if necessary, i.e. only update if the highlighted datum is different from previously highlighted datum,\n     * or if there is no previously highlighted datum.\n     * @param event\n     */\n    Sparkline.prototype.onMouseMove = function (event) {\n        this.mouseMoveEvent = event;\n        this.updateHitPoint(event);\n    };\n    Sparkline.prototype.updateHitPoint = function (event) {\n        var _a, _b, _c;\n        var closestDatum = this.pickClosestSeriesNodeDatum(event.offsetX, event.offsetY);\n        if (!closestDatum) {\n            return;\n        }\n        var oldHighlightedDatum = this.highlightedDatum;\n        this.highlightedDatum = closestDatum;\n        if ((this.highlightedDatum && !oldHighlightedDatum) ||\n            (this.highlightedDatum && oldHighlightedDatum && this.highlightedDatum !== oldHighlightedDatum)) {\n            this.highlightDatum(closestDatum);\n            this.updateCrosshairs();\n            this.scene.render();\n        }\n        var tooltipEnabled = (_c = (_b = (_a = this.processedOptions) === null || _a === void 0 ? void 0 : _a.tooltip) === null || _b === void 0 ? void 0 : _b.enabled) !== null && _c !== void 0 ? _c : true;\n        if (tooltipEnabled) {\n            this.handleTooltip(event, closestDatum);\n        }\n    };\n    /**\n     * Dehighlight all nodes and remove tooltip.\n     * @param event\n     */\n    Sparkline.prototype.onMouseOut = function (event) {\n        this.dehighlightDatum();\n        this.tooltip.toggle(false);\n        this.scene.render();\n    };\n    // Fetch required values from the data object and process them.\n    Sparkline.prototype.processData = function () {\n        var _this = this;\n        var _a = this, data = _a.data, yData = _a.yData, xData = _a.xData;\n        if (!data || this.invalidData(this.data)) {\n            return;\n        }\n        yData.length = 0;\n        xData.length = 0;\n        var n = data.length;\n        var dataType = this.getDataType(data);\n        this.dataType = dataType;\n        var xValueType = this.axis.type;\n        var xType = xValueType !== 'number' && xValueType !== 'time' ? 'category' : xValueType;\n        var isContinuousX = xType === 'number' || xType === 'time';\n        var setSmallestXInterval = function (curr, prev) {\n            if (_this.smallestInterval == undefined) {\n                _this.smallestInterval = { x: Infinity, y: Infinity };\n            }\n            var x = _this.smallestInterval.x;\n            var interval = Math.abs(curr - prev);\n            if (interval > 0 && interval < x) {\n                _this.smallestInterval.x = interval;\n            }\n        };\n        var prevX;\n        if (dataType === 'number') {\n            for (var i = 0; i < n; i++) {\n                var xDatum = i;\n                var yDatum = data[i];\n                var x = this.getDatum(xDatum, xType);\n                var y = this.getDatum(yDatum, 'number');\n                if (isContinuousX) {\n                    setSmallestXInterval(x, prevX);\n                }\n                xData.push(x);\n                yData.push(y);\n                prevX = x;\n            }\n        }\n        else if (dataType === 'array') {\n            for (var i = 0; i < n; i++) {\n                var datum = data[i];\n                if (Array.isArray(datum)) {\n                    var xDatum = datum[0];\n                    var yDatum = datum[1];\n                    var x = this.getDatum(xDatum, xType);\n                    var y = this.getDatum(yDatum, 'number');\n                    if (x == undefined) {\n                        continue;\n                    }\n                    if (isContinuousX) {\n                        setSmallestXInterval(x, prevX);\n                    }\n                    xData.push(x);\n                    yData.push(y);\n                    prevX = x;\n                }\n            }\n        }\n        else if (dataType === 'object') {\n            var _b = this, yKey = _b.yKey, xKey = _b.xKey;\n            for (var i = 0; i < n; i++) {\n                var datum = data[i];\n                if (typeof datum === 'object' && !Array.isArray(datum)) {\n                    var xDatum = datum[xKey];\n                    var yDatum = datum[yKey];\n                    var x = this.getDatum(xDatum, xType);\n                    var y = this.getDatum(yDatum, 'number');\n                    if (x == undefined) {\n                        continue;\n                    }\n                    if (isContinuousX) {\n                        setSmallestXInterval(x, prevX);\n                    }\n                    xData.push(x);\n                    yData.push(y);\n                    prevX = x;\n                }\n            }\n        }\n        // update axes\n        this.updateAxes();\n        // produce data joins and update selection's nodes\n        this.update();\n        this.scene.render();\n    };\n    /**\n     * Return the type of data provided to the sparkline based on the first truthy value in the data array.\n     * If the value is not a number, array or object, return `undefined`.\n     * @param data\n     */\n    Sparkline.prototype.getDataType = function (data) {\n        var e_1, _a;\n        try {\n            for (var data_1 = __values(data), data_1_1 = data_1.next(); !data_1_1.done; data_1_1 = data_1.next()) {\n                var datum = data_1_1.value;\n                if (datum != undefined) {\n                    if (isNumber$3(datum)) {\n                        return 'number';\n                    }\n                    else if (Array.isArray(datum)) {\n                        return 'array';\n                    }\n                    else if (typeof datum === 'object') {\n                        return 'object';\n                    }\n                }\n            }\n        }\n        catch (e_1_1) { e_1 = { error: e_1_1 }; }\n        finally {\n            try {\n                if (data_1_1 && !data_1_1.done && (_a = data_1.return)) _a.call(data_1);\n            }\n            finally { if (e_1) throw e_1.error; }\n        }\n    };\n    /**\n     * Return the given value depending on the type of axis.\n     * Return `undefined` if the value is invalid for the given axis type.\n     * @param value\n     */\n    Sparkline.prototype.getDatum = function (value, type) {\n        if ((type === 'number' && isNumber$3(value)) || (type === 'time' && (isNumber$3(value) || isDate(value)))) {\n            return value;\n        }\n        else if (type === 'category') {\n            if (isString(value) || isDate(value) || isNumber$3(value)) {\n                return { toString: function () { return String(value); } };\n            }\n            else if (isStringObject(value)) {\n                return value;\n            }\n        }\n    };\n    Object.defineProperty(Sparkline.prototype, \"layoutScheduled\", {\n        /**\n         * Only `true` while we are waiting for the layout to start.\n         * This will be `false` if the layout has already started and is ongoing.\n         */\n        get: function () {\n            return !!this.layoutId;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    /**\n     * Execute update method on the next available screen repaint to make changes to the canvas.\n     * If we are waiting for a layout to start and a new layout is requested,\n     * cancel the previous layout using the non 0 integer (this.layoutId) returned from requestAnimationFrame.\n     */\n    Sparkline.prototype.scheduleLayout = function () {\n        var _this = this;\n        if (this.layoutId) {\n            cancelAnimationFrame(this.layoutId);\n        }\n        this.layoutId = requestAnimationFrame(function () {\n            _this.setSparklineDimensions();\n            if (_this.invalidData(_this.data)) {\n                return;\n            }\n            // update axes ranges\n            _this.updateXScaleRange();\n            _this.updateYScaleRange();\n            // update axis line\n            _this.updateAxisLine();\n            // produce data joins and update selection's nodes\n            _this.update();\n            _this.scene.render();\n            _this.layoutId = 0;\n        });\n    };\n    Sparkline.prototype.setSparklineDimensions = function () {\n        var _a = this, width = _a.width, height = _a.height, padding = _a.padding, seriesRect = _a.seriesRect, rootGroup = _a.rootGroup;\n        var shrunkWidth = width - padding.left - padding.right;\n        var shrunkHeight = height - padding.top - padding.bottom;\n        seriesRect.width = shrunkWidth;\n        seriesRect.height = shrunkHeight;\n        seriesRect.x = padding.left;\n        seriesRect.y = padding.top;\n        rootGroup.translationX = seriesRect.x;\n        rootGroup.translationY = seriesRect.y;\n    };\n    /**\n     * Return the closest data point to x/y canvas coordinates.\n     * @param x\n     * @param y\n     */\n    Sparkline.prototype.pickClosestSeriesNodeDatum = function (x, y) {\n        var minDistance = Infinity;\n        var closestDatum;\n        var hitPoint = this.rootGroup.transformPoint(x, y);\n        var nodeData = this.getNodeData();\n        for (var i = 0; i < nodeData.length; i++) {\n            var datum = nodeData[i];\n            if (!datum.point) {\n                return;\n            }\n            var distance = this.getDistance(hitPoint, datum.point);\n            if (distance <= minDistance) {\n                minDistance = distance;\n                closestDatum = datum;\n            }\n        }\n        return closestDatum;\n    };\n    /**\n     * Return the relevant distance between two points.\n     * The distance will be calculated based on the x value of the points for all sparklines except bar sparkline, where the distance is based on the y values.\n     * @param x\n     * @param y\n     */\n    Sparkline.prototype.getDistance = function (p1, p2) {\n        return Math.abs(p1.x - p2.x);\n    };\n    /**\n     * calculate x/y coordinates for tooltip based on coordinates of highlighted datum, position of canvas and page offset.\n     * @param datum\n     */\n    Sparkline.prototype.handleTooltip = function (event, datum) {\n        var _a, _b;\n        var seriesDatum = datum.seriesDatum;\n        var canvasElement = this.canvasElement;\n        var clientX = event.clientX, clientY = event.clientY;\n        var tooltipOptions = (_a = this.processedOptions) === null || _a === void 0 ? void 0 : _a.tooltip;\n        var meta = {\n            pageX: clientX,\n            pageY: clientY,\n            position: {\n                xOffset: tooltipOptions === null || tooltipOptions === void 0 ? void 0 : tooltipOptions.xOffset,\n                yOffset: tooltipOptions === null || tooltipOptions === void 0 ? void 0 : tooltipOptions.yOffset,\n            },\n            container: tooltipOptions === null || tooltipOptions === void 0 ? void 0 : tooltipOptions.container,\n        };\n        // confine tooltip to sparkline width if tooltip container not provided.\n        if (meta.container == undefined) {\n            meta.container = canvasElement;\n        }\n        var yValue = seriesDatum.y;\n        var xValue = seriesDatum.x;\n        // check if tooltip is enabled for this specific data point\n        var enabled = (_b = tooltipOptions === null || tooltipOptions === void 0 ? void 0 : tooltipOptions.enabled) !== null && _b !== void 0 ? _b : true;\n        var tooltipRenderer = tooltipOptions === null || tooltipOptions === void 0 ? void 0 : tooltipOptions.renderer;\n        if (tooltipRenderer) {\n            var tooltipRendererResult = tooltipRenderer({\n                context: this.context,\n                datum: seriesDatum,\n                yValue: yValue,\n                xValue: xValue,\n            });\n            enabled =\n                typeof tooltipRendererResult !== 'string' && tooltipRendererResult.enabled !== undefined\n                    ? tooltipRendererResult.enabled\n                    : enabled;\n        }\n        var html = enabled && seriesDatum.y !== undefined && this.getTooltipHtml(datum);\n        if (html) {\n            this.tooltip.show(meta, html);\n        }\n    };\n    Sparkline.prototype.formatNumericDatum = function (datum) {\n        return String(Math.round(datum * 10) / 10);\n    };\n    // locale.format('%m/%d/%y, %H:%M:%S');\n    Sparkline.prototype.formatDatum = function (datum) {\n        var type = this.axis.type || 'category';\n        if (type === 'number' && typeof datum === 'number') {\n            return this.formatNumericDatum(datum);\n        }\n        else if (type === 'time' && (datum instanceof Date || isNumber$3(datum))) {\n            return this.defaultDateFormatter.format(datum);\n        }\n        else {\n            return String(datum);\n        }\n    };\n    Sparkline.prototype.setupDomEventListeners = function (chartElement) {\n        chartElement.addEventListener('mousemove', this._onMouseMove);\n        chartElement.addEventListener('mouseout', this._onMouseOut);\n    };\n    Sparkline.prototype.cleanupDomEventListeners = function (chartElement) {\n        chartElement.removeEventListener('mousemove', this._onMouseMove);\n        chartElement.removeEventListener('mouseout', this._onMouseOut);\n    };\n    Sparkline.prototype.invalidData = function (data) {\n        return !data || !Array.isArray(data) || data.length === 0;\n    };\n    /**\n     * Cleanup and remove canvas element from the DOM.\n     */\n    Sparkline.prototype.destroy = function () {\n        this.scene.container = undefined;\n        // remove canvas element from the DOM\n        this.container = undefined;\n        this.cleanupDomEventListeners(this.scene.canvas.element);\n    };\n    Sparkline.tooltipDocuments = [];\n    return Sparkline;\n}());\n\nfunction toTooltipHtml(input, defaults) {\n    if (typeof input === 'string') {\n        return input;\n    }\n    defaults = defaults || {};\n    var _a = input.content, content = _a === void 0 ? defaults.content || '' : _a, _b = input.title, title = _b === void 0 ? defaults.title || undefined : _b, _c = input.color, color = _c === void 0 ? defaults.color : _c, _d = input.backgroundColor, backgroundColor = _d === void 0 ? defaults.backgroundColor : _d, _e = input.opacity, opacity = _e === void 0 ? defaults.opacity || 1 : _e;\n    var titleHtml;\n    var contentHtml;\n    if (color) {\n        titleHtml = title\n            ? \"<span class=\\\"\" + SparklineTooltip.class + \"-title\\\"; style=\\\"color: \" + color + \"\\\">\" + title + \"</span>\"\n            : '';\n        contentHtml = \"<span class=\\\"\" + SparklineTooltip.class + \"-content\\\" style=\\\"color: \" + color + \"\\\">\" + content + \"</span>\";\n    }\n    else {\n        titleHtml = title ? \"<span class=\\\"\" + SparklineTooltip.class + \"-title\\\">\" + title + \"</span>\" : '';\n        contentHtml = \"<span class=\\\"\" + SparklineTooltip.class + \"-content\\\">\" + content + \"</span>\";\n    }\n    var style = \"opacity: \" + opacity;\n    if (backgroundColor) {\n        style += \"; background-color: \" + backgroundColor.toLowerCase();\n    }\n    return \"<div class=\\\"\" + SparklineTooltip.class + \"\\\" style=\\\"\" + style + \"\\\">\\n                \" + titleHtml + \"\\n                \" + contentHtml + \"\\n            </div>\";\n}\nvar SparklineTooltip = /** @class */ (function () {\n    function SparklineTooltip() {\n        this.element = document.createElement('div');\n        var tooltipRoot = document.body;\n        tooltipRoot.appendChild(this.element);\n    }\n    SparklineTooltip.prototype.isVisible = function () {\n        var element = this.element;\n        if (element.classList) {\n            return !element.classList.contains(SparklineTooltip.class + \"-wrapper-hidden\");\n        }\n        // IE11\n        var classes = element.getAttribute('class');\n        if (classes) {\n            return classes.split(' ').indexOf(SparklineTooltip.class + \"-wrapper-hidden\") < 0;\n        }\n        return false;\n    };\n    SparklineTooltip.prototype.updateClass = function (visible) {\n        var classList = [SparklineTooltip.class + \"-wrapper\"];\n        if (visible !== true) {\n            classList.push(SparklineTooltip.class + \"-wrapper-hidden\");\n        }\n        this.element.setAttribute('class', classList.join(' '));\n    };\n    SparklineTooltip.prototype.show = function (meta, html) {\n        var _a, _b, _c, _d;\n        this.toggle(false);\n        var element = this.element;\n        if (html !== undefined) {\n            element.innerHTML = html;\n        }\n        else if (!element.innerHTML) {\n            return;\n        }\n        var xOffset = (_b = (_a = meta.position) === null || _a === void 0 ? void 0 : _a.xOffset) !== null && _b !== void 0 ? _b : 10;\n        var yOffset = (_d = (_c = meta.position) === null || _c === void 0 ? void 0 : _c.yOffset) !== null && _d !== void 0 ? _d : 0;\n        var left = meta.pageX + xOffset;\n        var top = meta.pageY + yOffset;\n        var tooltipRect = element.getBoundingClientRect();\n        var maxLeft = window.innerWidth - tooltipRect.width;\n        if (meta.container) {\n            var containerRect = meta.container.getBoundingClientRect();\n            maxLeft = containerRect.left + (containerRect.width - tooltipRect.width);\n        }\n        if (left > maxLeft) {\n            left = meta.pageX - element.clientWidth - xOffset;\n        }\n        if (typeof scrollX !== 'undefined') {\n            left += scrollX;\n        }\n        if (typeof scrollY !== 'undefined') {\n            top += scrollY;\n        }\n        element.style.left = Math.round(left) + \"px\";\n        element.style.top = Math.round(top) + \"px\";\n        this.toggle(true);\n    };\n    SparklineTooltip.prototype.toggle = function (visible) {\n        this.updateClass(visible);\n    };\n    SparklineTooltip.prototype.destroy = function () {\n        var parentNode = this.element.parentNode;\n        if (parentNode) {\n            parentNode.removeChild(this.element);\n        }\n    };\n    SparklineTooltip.class = 'ag-sparkline-tooltip';\n    return SparklineTooltip;\n}());\n\nfunction getMarker(shape) {\n    switch (shape) {\n        case 'circle':\n            return Circle;\n        case 'square':\n            return Square;\n        case 'diamond':\n            return Diamond;\n        default:\n            return Circle;\n    }\n}\n\nfunction getLineDash(lineCap, lineDash) {\n    if (lineDash === void 0) { lineDash = 'solid'; }\n    var buttOrNull = {\n        solid: [],\n        dash: [4, 3],\n        dot: [1, 3],\n        dashDot: [4, 3, 1, 3],\n        dashDotDot: [4, 3, 1, 3, 1, 3],\n        shortDot: [1, 1],\n        shortDash: [3, 1],\n        shortDashDot: [3, 1, 1, 1],\n        shortDashDotDot: [3, 1, 1, 1, 1, 1],\n        longDash: [8, 3],\n        longDashDot: [8, 3, 1, 3],\n        longDashDotDot: [8, 3, 1, 3, 1, 3]\n    };\n    var roundOrSquare = {\n        solid: [],\n        dash: [3, 3],\n        dot: [0, 3],\n        dashDot: [3, 3, 0, 3],\n        dashDotDot: [3, 3, 0, 3, 0, 3],\n        shortDot: [0, 2],\n        shortDash: [2, 2],\n        shortDashDot: [2, 2, 0, 2],\n        shortDashDotDot: [2, 2, 0, 2, 0, 2],\n        longDash: [7, 3],\n        longDashDot: [7, 3, 0, 3],\n        longDashDotDot: [7, 3, 0, 3, 0, 3]\n    };\n    if (lineCap === 'round' || lineCap === 'square') {\n        if (roundOrSquare[lineDash] == undefined) {\n            console.warn(\"'\" + lineDash + \"' is not a valid 'lineDash' option.\");\n            return roundOrSquare.solid;\n        }\n        return roundOrSquare[lineDash];\n    }\n    if (buttOrNull[lineDash] == undefined) {\n        console.warn(\"'\" + lineDash + \"' is not a valid 'lineDash' option.\");\n        return buttOrNull.solid;\n    }\n    return buttOrNull[lineDash];\n}\n\nvar __extends$6 = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar extent$2 = extent$4;\nvar BandScale$3 = BandScale$5;\nvar SparklineMarker$1 = /** @class */ (function () {\n    function SparklineMarker() {\n        this.enabled = true;\n        this.shape = 'circle';\n        this.size = 0;\n        this.fill = 'rgb(124, 181, 236)';\n        this.stroke = 'rgb(124, 181, 236)';\n        this.strokeWidth = 1;\n        this.formatter = undefined;\n    }\n    return SparklineMarker;\n}());\nvar SparklineLine$1 = /** @class */ (function () {\n    function SparklineLine() {\n        this.stroke = 'rgb(124, 181, 236)';\n        this.strokeWidth = 1;\n    }\n    return SparklineLine;\n}());\nvar SparklineCrosshairs$1 = /** @class */ (function () {\n    function SparklineCrosshairs() {\n        this.xLine = {\n            enabled: true,\n            stroke: 'rgba(0,0,0, 0.54)',\n            strokeWidth: 1,\n            lineDash: 'solid',\n            lineCap: undefined,\n        };\n        this.yLine = {\n            enabled: false,\n            stroke: 'rgba(0,0,0, 0.54)',\n            strokeWidth: 1,\n            lineDash: 'solid',\n            lineCap: undefined,\n        };\n    }\n    return SparklineCrosshairs;\n}());\nvar AreaSparkline = /** @class */ (function (_super) {\n    __extends$6(AreaSparkline, _super);\n    function AreaSparkline() {\n        var _this = _super.call(this) || this;\n        _this.fill = 'rgba(124, 181, 236, 0.25)';\n        _this.strokePath = new Path();\n        _this.fillPath = new Path();\n        _this.xCrosshairLine = new Line();\n        _this.yCrosshairLine = new Line();\n        _this.areaSparklineGroup = new Group();\n        _this.xAxisLine = new Line();\n        _this.markers = new Group();\n        _this.markerSelection = Selection.select(_this.markers, function () { return _this.markerFactory(); });\n        _this.markerSelectionData = [];\n        _this.marker = new SparklineMarker$1();\n        _this.line = new SparklineLine$1();\n        _this.crosshairs = new SparklineCrosshairs$1();\n        _this.rootGroup.append(_this.areaSparklineGroup);\n        _this.xAxisLine.zIndex = ZINDICIES.AXIS_LINE_ZINDEX;\n        _this.fillPath.zIndex = ZINDICIES.SERIES_FILL_ZINDEX;\n        _this.strokePath.zIndex = ZINDICIES.SERIES_STROKE_ZINDEX;\n        _this.xCrosshairLine.zIndex = ZINDICIES.CROSSHAIR_ZINDEX;\n        _this.yCrosshairLine.zIndex = ZINDICIES.CROSSHAIR_ZINDEX;\n        _this.markers.zIndex = ZINDICIES.SERIES_MARKERS_ZINDEX;\n        _this.areaSparklineGroup.append([\n            _this.fillPath,\n            _this.xAxisLine,\n            _this.strokePath,\n            _this.xCrosshairLine,\n            _this.yCrosshairLine,\n            _this.markers,\n        ]);\n        return _this;\n    }\n    AreaSparkline.prototype.markerFactory = function () {\n        var shape = this.marker.shape;\n        var MarkerShape = getMarker(shape);\n        return new MarkerShape();\n    };\n    AreaSparkline.prototype.getNodeData = function () {\n        return this.markerSelectionData;\n    };\n    AreaSparkline.prototype.update = function () {\n        var data = this.generateNodeData();\n        if (!data) {\n            return;\n        }\n        var nodeData = data.nodeData, fillData = data.fillData, strokeData = data.strokeData;\n        this.markerSelectionData = nodeData;\n        this.updateSelection(nodeData);\n        this.updateNodes();\n        this.updateStroke(strokeData);\n        this.updateFill(fillData);\n    };\n    AreaSparkline.prototype.updateYScaleDomain = function () {\n        var _a = this, yData = _a.yData, yScale = _a.yScale;\n        var yMinMax = extent$2(yData);\n        var yMin = 0;\n        var yMax = 1;\n        if (yMinMax !== undefined) {\n            yMin = this.min = yMinMax[0];\n            yMax = this.max = yMinMax[1];\n        }\n        // if yMin is positive, set yMin to 0\n        yMin = yMin < 0 ? yMin : 0;\n        // if yMax is negative, set yMax to 0\n        yMax = yMax < 0 ? 0 : yMax;\n        yScale.domain = [yMin, yMax];\n    };\n    AreaSparkline.prototype.generateNodeData = function () {\n        var _a = this, data = _a.data, yData = _a.yData, xData = _a.xData, xScale = _a.xScale, yScale = _a.yScale;\n        if (!data) {\n            return;\n        }\n        var continuous = !(xScale instanceof BandScale$3);\n        var offsetX = !continuous ? xScale.bandwidth / 2 : 0;\n        var n = yData.length;\n        var nodeData = [];\n        var fillData = [];\n        var strokeData = [];\n        var firstValidX;\n        var lastValidX;\n        var previousX;\n        var nextX;\n        var yZero = yScale.convert(0);\n        for (var i = 0; i < n; i++) {\n            var yDatum = yData[i];\n            var xDatum = xData[i];\n            var x = xScale.convert(continuous ? xScale.toDomain(xDatum) : xDatum) + offsetX;\n            var y = yDatum === undefined ? NaN : yScale.convert(yDatum);\n            // if this iteration is not the last, set nextX using the next value in the data array\n            if (i + 1 < n) {\n                nextX = xScale.convert(continuous ? xScale.toDomain(xData[i + 1]) : xData[i + 1]) + offsetX;\n            }\n            // set stroke data regardless of missing/ undefined values. Undefined values will be handled in the updateStroke() method\n            strokeData.push({\n                seriesDatum: { x: xDatum, y: yDatum },\n                point: { x: x, y: y },\n            });\n            if (yDatum === undefined && previousX !== undefined) {\n                // if yDatum is undefined and there is a valid previous data point, add a phantom point at yZero\n                // if a next data point exists, add a phantom point at yZero at the next X\n                fillData.push({ seriesDatum: undefined, point: { x: previousX, y: yZero } });\n                if (nextX !== undefined) {\n                    fillData.push({ seriesDatum: undefined, point: { x: nextX, y: yZero } });\n                }\n            }\n            else if (yDatum !== undefined) {\n                fillData.push({\n                    seriesDatum: { x: xDatum, y: yDatum },\n                    point: { x: x, y: y },\n                });\n                // set node data only if yDatum is not undefined. These values are used in the updateSelection() method to update markers\n                nodeData.push({\n                    seriesDatum: { x: xDatum, y: yDatum },\n                    point: { x: x, y: y },\n                });\n                firstValidX = firstValidX !== undefined ? firstValidX : x;\n                lastValidX = x;\n            }\n            previousX = x;\n        }\n        // phantom points for creating closed area\n        fillData.push({ seriesDatum: undefined, point: { x: lastValidX, y: yZero } }, { seriesDatum: undefined, point: { x: firstValidX, y: yZero } });\n        return { nodeData: nodeData, fillData: fillData, strokeData: strokeData };\n    };\n    AreaSparkline.prototype.updateAxisLine = function () {\n        var _a = this, xScale = _a.xScale, yScale = _a.yScale, axis = _a.axis, xAxisLine = _a.xAxisLine;\n        xAxisLine.x1 = xScale.range[0];\n        xAxisLine.x2 = xScale.range[1];\n        xAxisLine.y1 = xAxisLine.y2 = 0;\n        xAxisLine.stroke = axis.stroke;\n        xAxisLine.strokeWidth = axis.strokeWidth;\n        var yZero = yScale.convert(0);\n        xAxisLine.translationY = yZero;\n    };\n    AreaSparkline.prototype.updateSelection = function (selectionData) {\n        this.markerSelection.update(selectionData);\n    };\n    AreaSparkline.prototype.updateNodes = function () {\n        var _this = this;\n        var _a = this, highlightedDatum = _a.highlightedDatum, highlightStyle = _a.highlightStyle, marker = _a.marker;\n        var highlightSize = highlightStyle.size, highlightFill = highlightStyle.fill, highlightStroke = highlightStyle.stroke, highlightStrokeWidth = highlightStyle.strokeWidth;\n        var markerFormatter = marker.formatter;\n        this.markerSelection.each(function (node, datum, index) {\n            var point = datum.point, seriesDatum = datum.seriesDatum;\n            if (!point) {\n                return;\n            }\n            var highlighted = datum === highlightedDatum;\n            var markerFill = highlighted && highlightFill !== undefined ? highlightFill : marker.fill;\n            var markerStroke = highlighted && highlightStroke !== undefined ? highlightStroke : marker.stroke;\n            var markerStrokeWidth = highlighted && highlightStrokeWidth !== undefined ? highlightStrokeWidth : marker.strokeWidth;\n            var markerSize = highlighted && highlightSize !== undefined ? highlightSize : marker.size;\n            var markerFormat;\n            if (markerFormatter) {\n                var first = index === 0;\n                var last = index === _this.markerSelectionData.length - 1;\n                var min = seriesDatum.y === _this.min;\n                var max = seriesDatum.y === _this.max;\n                markerFormat = markerFormatter({\n                    datum: datum,\n                    xValue: seriesDatum.x,\n                    yValue: seriesDatum.y,\n                    min: min,\n                    max: max,\n                    first: first,\n                    last: last,\n                    fill: markerFill,\n                    stroke: markerStroke,\n                    strokeWidth: markerStrokeWidth,\n                    size: markerSize,\n                    highlighted: highlighted,\n                });\n            }\n            node.size = markerFormat && markerFormat.size != undefined ? markerFormat.size : markerSize;\n            node.fill = markerFormat && markerFormat.fill != undefined ? markerFormat.fill : markerFill;\n            node.stroke = markerFormat && markerFormat.stroke != undefined ? markerFormat.stroke : markerStroke;\n            node.strokeWidth =\n                markerFormat && markerFormat.strokeWidth != undefined ? markerFormat.strokeWidth : markerStrokeWidth;\n            node.translationX = point.x;\n            node.translationY = point.y;\n            node.visible =\n                markerFormat && markerFormat.enabled != undefined\n                    ? markerFormat.enabled\n                    : marker.enabled && node.size > 0;\n        });\n    };\n    AreaSparkline.prototype.updateStroke = function (strokeData) {\n        var _a = this, strokePath = _a.strokePath, yData = _a.yData, line = _a.line;\n        if (yData.length < 2) {\n            return;\n        }\n        var path = strokePath.path;\n        var n = strokeData.length;\n        var moveTo = true;\n        path.clear();\n        for (var i = 0; i < n; i++) {\n            var _b = strokeData[i], point = _b.point, seriesDatum = _b.seriesDatum;\n            var x = point.x;\n            var y = point.y;\n            if (seriesDatum.y == undefined) {\n                moveTo = true;\n            }\n            else {\n                if (moveTo) {\n                    path.moveTo(x, y);\n                    moveTo = false;\n                }\n                else {\n                    path.lineTo(x, y);\n                }\n            }\n        }\n        strokePath.lineJoin = strokePath.lineCap = 'round';\n        strokePath.fill = undefined;\n        strokePath.stroke = line.stroke;\n        strokePath.strokeWidth = line.strokeWidth;\n    };\n    AreaSparkline.prototype.updateFill = function (areaData) {\n        var _a = this, fillPath = _a.fillPath, yData = _a.yData, fill = _a.fill;\n        var path = fillPath.path;\n        var n = areaData.length;\n        path.clear();\n        if (yData.length < 2) {\n            return;\n        }\n        for (var i = 0; i < n; i++) {\n            var point = areaData[i].point;\n            var x = point.x;\n            var y = point.y;\n            if (i > 0) {\n                path.lineTo(x, y);\n            }\n            else {\n                path.moveTo(x, y);\n            }\n        }\n        path.closePath();\n        fillPath.lineJoin = 'round';\n        fillPath.stroke = undefined;\n        fillPath.fill = fill;\n    };\n    AreaSparkline.prototype.updateXCrosshairLine = function () {\n        var _a = this, yScale = _a.yScale, xCrosshairLine = _a.xCrosshairLine, highlightedDatum = _a.highlightedDatum, xLine = _a.crosshairs.xLine;\n        if (!xLine.enabled || highlightedDatum == undefined) {\n            xCrosshairLine.strokeWidth = 0;\n            return;\n        }\n        xCrosshairLine.y1 = yScale.range[0];\n        xCrosshairLine.y2 = yScale.range[1];\n        xCrosshairLine.x1 = xCrosshairLine.x2 = 0;\n        xCrosshairLine.stroke = xLine.stroke;\n        xCrosshairLine.strokeWidth = xLine.strokeWidth || 1;\n        xCrosshairLine.lineCap = xLine.lineCap === 'round' || xLine.lineCap === 'square' ? xLine.lineCap : undefined;\n        var lineDash = xLine.lineDash;\n        xCrosshairLine.lineDash = Array.isArray(lineDash)\n            ? lineDash\n            : getLineDash(xCrosshairLine.lineCap, xLine.lineDash);\n        xCrosshairLine.translationX = highlightedDatum.point.x;\n    };\n    AreaSparkline.prototype.updateYCrosshairLine = function () {\n        var _a = this, xScale = _a.xScale, yCrosshairLine = _a.yCrosshairLine, highlightedDatum = _a.highlightedDatum, yLine = _a.crosshairs.yLine;\n        if (!yLine.enabled || highlightedDatum == undefined) {\n            yCrosshairLine.strokeWidth = 0;\n            return;\n        }\n        yCrosshairLine.x1 = xScale.range[0];\n        yCrosshairLine.x2 = xScale.range[1];\n        yCrosshairLine.y1 = yCrosshairLine.y2 = 0;\n        yCrosshairLine.stroke = yLine.stroke;\n        yCrosshairLine.strokeWidth = yLine.strokeWidth || 1;\n        yCrosshairLine.lineCap = yLine.lineCap === 'round' || yLine.lineCap === 'square' ? yLine.lineCap : undefined;\n        var lineDash = yLine.lineDash;\n        yCrosshairLine.lineDash = Array.isArray(lineDash)\n            ? lineDash\n            : getLineDash(yCrosshairLine.lineCap, yLine.lineDash);\n        yCrosshairLine.translationY = highlightedDatum.point.y;\n    };\n    AreaSparkline.prototype.getTooltipHtml = function (datum) {\n        var _a, _b;\n        var dataType = this.dataType;\n        var seriesDatum = datum.seriesDatum;\n        var yValue = seriesDatum.y;\n        var xValue = seriesDatum.x;\n        var content = this.formatNumericDatum(yValue);\n        var title = dataType === 'array' || dataType === 'object' ? this.formatDatum(xValue) : undefined;\n        var defaults = {\n            content: content,\n            title: title,\n        };\n        var tooltipRenderer = (_b = (_a = this.processedOptions) === null || _a === void 0 ? void 0 : _a.tooltip) === null || _b === void 0 ? void 0 : _b.renderer;\n        if (tooltipRenderer) {\n            return toTooltipHtml(tooltipRenderer({\n                context: this.context,\n                datum: seriesDatum,\n                yValue: yValue,\n                xValue: xValue,\n            }), defaults);\n        }\n        return toTooltipHtml(defaults);\n    };\n    AreaSparkline.className = 'AreaSparkline';\n    return AreaSparkline;\n}(Sparkline));\n\nvar __extends$5 = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar extent$1 = extent$4;\nvar BandScale$2 = BandScale$5;\nvar SparklineMarker = /** @class */ (function () {\n    function SparklineMarker() {\n        this.enabled = true;\n        this.shape = 'circle';\n        this.size = 0;\n        this.fill = 'rgb(124, 181, 236)';\n        this.stroke = 'rgb(124, 181, 236)';\n        this.strokeWidth = 1;\n        this.formatter = undefined;\n    }\n    return SparklineMarker;\n}());\nvar SparklineLine = /** @class */ (function () {\n    function SparklineLine() {\n        this.stroke = 'rgb(124, 181, 236)';\n        this.strokeWidth = 1;\n    }\n    return SparklineLine;\n}());\nvar SparklineCrosshairs = /** @class */ (function () {\n    function SparklineCrosshairs() {\n        this.xLine = {\n            enabled: true,\n            stroke: 'rgba(0,0,0, 0.54)',\n            strokeWidth: 1,\n            lineDash: 'solid',\n            lineCap: undefined,\n        };\n        this.yLine = {\n            enabled: false,\n            stroke: 'rgba(0,0,0, 0.54)',\n            strokeWidth: 1,\n            lineDash: 'solid',\n            lineCap: undefined,\n        };\n    }\n    return SparklineCrosshairs;\n}());\nvar LineSparkline = /** @class */ (function (_super) {\n    __extends$5(LineSparkline, _super);\n    function LineSparkline() {\n        var _this = _super.call(this) || this;\n        _this.linePath = new Path();\n        _this.xCrosshairLine = new Line();\n        _this.yCrosshairLine = new Line();\n        _this.lineSparklineGroup = new Group();\n        _this.markers = new Group();\n        _this.markerSelection = Selection.select(_this.markers, function () { return _this.markerFactory(); });\n        _this.markerSelectionData = [];\n        _this.marker = new SparklineMarker();\n        _this.line = new SparklineLine();\n        _this.crosshairs = new SparklineCrosshairs();\n        _this.rootGroup.append(_this.lineSparklineGroup);\n        _this.linePath.zIndex = ZINDICIES.SERIES_STROKE_ZINDEX;\n        _this.xCrosshairLine.zIndex = ZINDICIES.CROSSHAIR_ZINDEX;\n        _this.yCrosshairLine.zIndex = ZINDICIES.CROSSHAIR_ZINDEX;\n        _this.markers.zIndex = ZINDICIES.SERIES_MARKERS_ZINDEX;\n        _this.lineSparklineGroup.append([_this.linePath, _this.xCrosshairLine, _this.yCrosshairLine, _this.markers]);\n        return _this;\n    }\n    LineSparkline.prototype.getNodeData = function () {\n        return this.markerSelectionData;\n    };\n    LineSparkline.prototype.markerFactory = function () {\n        var shape = this.marker.shape;\n        var MarkerShape = getMarker(shape);\n        return new MarkerShape();\n    };\n    /**\n     * If marker shape is changed, this method should be called to remove the previous marker nodes selection.\n     */\n    LineSparkline.prototype.onMarkerShapeChange = function () {\n        this.markerSelection = this.markerSelection.clear();\n        this.scheduleLayout();\n    };\n    LineSparkline.prototype.update = function () {\n        var nodeData = this.generateNodeData();\n        if (!nodeData) {\n            return;\n        }\n        this.markerSelectionData = nodeData;\n        this.updateSelection(nodeData);\n        this.updateNodes();\n        this.updateLine();\n    };\n    LineSparkline.prototype.updateYScaleDomain = function () {\n        var _a = this, yData = _a.yData, yScale = _a.yScale;\n        var yMinMax = extent$1(yData);\n        var yMin = 0;\n        var yMax = 1;\n        if (yMinMax !== undefined) {\n            yMin = this.min = yMinMax[0];\n            yMax = this.max = yMinMax[1];\n        }\n        if (yMin === yMax) {\n            // if all values in the data are the same, yMin and yMax will be equal, need to adjust the domain with some padding\n            var padding = Math.abs(yMin * 0.01);\n            yMin -= padding;\n            yMax += padding;\n        }\n        yScale.domain = [yMin, yMax];\n    };\n    LineSparkline.prototype.generateNodeData = function () {\n        var _a = this, data = _a.data, yData = _a.yData, xData = _a.xData, xScale = _a.xScale, yScale = _a.yScale;\n        if (!data) {\n            return;\n        }\n        var continuous = !(xScale instanceof BandScale$2);\n        var offsetX = !continuous ? xScale.bandwidth / 2 : 0;\n        var nodeData = [];\n        for (var i = 0; i < yData.length; i++) {\n            var yDatum = yData[i];\n            var xDatum = xData[i];\n            if (yDatum == undefined) {\n                continue;\n            }\n            var x = xScale.convert(continuous ? xScale.toDomain(xDatum) : xDatum) + offsetX;\n            var y = yDatum === undefined ? NaN : yScale.convert(yDatum);\n            nodeData.push({\n                seriesDatum: { x: xDatum, y: yDatum },\n                point: { x: x, y: y },\n            });\n        }\n        return nodeData;\n    };\n    LineSparkline.prototype.updateSelection = function (selectionData) {\n        this.markerSelection.update(selectionData);\n    };\n    LineSparkline.prototype.updateNodes = function () {\n        var _this = this;\n        var _a = this, highlightedDatum = _a.highlightedDatum, highlightStyle = _a.highlightStyle, marker = _a.marker;\n        var highlightSize = highlightStyle.size, highlightFill = highlightStyle.fill, highlightStroke = highlightStyle.stroke, highlightStrokeWidth = highlightStyle.strokeWidth;\n        var markerFormatter = marker.formatter;\n        this.markerSelection.each(function (node, datum, index) {\n            var highlighted = datum === highlightedDatum;\n            var markerFill = highlighted && highlightFill !== undefined ? highlightFill : marker.fill;\n            var markerStroke = highlighted && highlightStroke !== undefined ? highlightStroke : marker.stroke;\n            var markerStrokeWidth = highlighted && highlightStrokeWidth !== undefined ? highlightStrokeWidth : marker.strokeWidth;\n            var markerSize = highlighted && highlightSize !== undefined ? highlightSize : marker.size;\n            var markerFormat;\n            var seriesDatum = datum.seriesDatum, point = datum.point;\n            if (markerFormatter) {\n                var first = index === 0;\n                var last = index === _this.markerSelectionData.length - 1;\n                var min = seriesDatum.y === _this.min;\n                var max = seriesDatum.y === _this.max;\n                markerFormat = markerFormatter({\n                    datum: datum,\n                    xValue: seriesDatum.x,\n                    yValue: seriesDatum.y,\n                    min: min,\n                    max: max,\n                    first: first,\n                    last: last,\n                    fill: markerFill,\n                    stroke: markerStroke,\n                    strokeWidth: markerStrokeWidth,\n                    size: markerSize,\n                    highlighted: highlighted,\n                });\n            }\n            node.size = markerFormat && markerFormat.size != undefined ? markerFormat.size : markerSize;\n            node.fill = markerFormat && markerFormat.fill != undefined ? markerFormat.fill : markerFill;\n            node.stroke = markerFormat && markerFormat.stroke != undefined ? markerFormat.stroke : markerStroke;\n            node.strokeWidth =\n                markerFormat && markerFormat.strokeWidth != undefined ? markerFormat.strokeWidth : markerStrokeWidth;\n            node.translationX = point.x;\n            node.translationY = point.y;\n            node.visible =\n                markerFormat && markerFormat.enabled != undefined\n                    ? markerFormat.enabled\n                    : marker.enabled && node.size > 0;\n        });\n    };\n    LineSparkline.prototype.updateLine = function () {\n        var _a = this, linePath = _a.linePath, yData = _a.yData, xData = _a.xData, xScale = _a.xScale, yScale = _a.yScale, line = _a.line;\n        if (yData.length < 2) {\n            return;\n        }\n        var continuous = !(xScale instanceof BandScale$2);\n        var path = linePath.path;\n        var n = yData.length;\n        var offsetX = !continuous ? xScale.bandwidth / 2 : 0;\n        var moveTo = true;\n        path.clear();\n        for (var i = 0; i < n; i++) {\n            var xDatum = xData[i];\n            var yDatum = yData[i];\n            var x = xScale.convert(continuous ? xScale.toDomain(xDatum) : xDatum) + offsetX;\n            var y = yDatum === undefined ? NaN : yScale.convert(yDatum);\n            if (yDatum == undefined) {\n                moveTo = true;\n            }\n            else {\n                if (moveTo) {\n                    path.moveTo(x, y);\n                    moveTo = false;\n                }\n                else {\n                    path.lineTo(x, y);\n                }\n            }\n        }\n        linePath.fill = undefined;\n        linePath.stroke = line.stroke;\n        linePath.strokeWidth = line.strokeWidth;\n    };\n    LineSparkline.prototype.updateXCrosshairLine = function () {\n        var _a = this, yScale = _a.yScale, xCrosshairLine = _a.xCrosshairLine, highlightedDatum = _a.highlightedDatum, xLine = _a.crosshairs.xLine;\n        if (!xLine.enabled || highlightedDatum == undefined) {\n            xCrosshairLine.strokeWidth = 0;\n            return;\n        }\n        xCrosshairLine.y1 = yScale.range[0];\n        xCrosshairLine.y2 = yScale.range[1];\n        xCrosshairLine.x1 = xCrosshairLine.x2 = 0;\n        xCrosshairLine.stroke = xLine.stroke;\n        xCrosshairLine.strokeWidth = xLine.strokeWidth || 1;\n        xCrosshairLine.lineCap = xLine.lineCap === 'round' || xLine.lineCap === 'square' ? xLine.lineCap : undefined;\n        var lineDash = xLine.lineDash;\n        xCrosshairLine.lineDash = Array.isArray(lineDash)\n            ? lineDash\n            : getLineDash(xCrosshairLine.lineCap, xLine.lineDash);\n        xCrosshairLine.translationX = highlightedDatum.point.x;\n    };\n    LineSparkline.prototype.updateYCrosshairLine = function () {\n        var _a = this, xScale = _a.xScale, yCrosshairLine = _a.yCrosshairLine, highlightedDatum = _a.highlightedDatum, yLine = _a.crosshairs.yLine;\n        if (!yLine.enabled || highlightedDatum == undefined) {\n            yCrosshairLine.strokeWidth = 0;\n            return;\n        }\n        yCrosshairLine.x1 = xScale.range[0];\n        yCrosshairLine.x2 = xScale.range[1];\n        yCrosshairLine.y1 = yCrosshairLine.y2 = 0;\n        yCrosshairLine.stroke = yLine.stroke;\n        yCrosshairLine.strokeWidth = yLine.strokeWidth || 1;\n        yCrosshairLine.lineCap = yLine.lineCap === 'round' || yLine.lineCap === 'square' ? yLine.lineCap : undefined;\n        var lineDash = yLine.lineDash;\n        yCrosshairLine.lineDash = Array.isArray(lineDash)\n            ? lineDash\n            : getLineDash(yCrosshairLine.lineCap, yLine.lineDash);\n        yCrosshairLine.translationY = highlightedDatum.point.y;\n    };\n    LineSparkline.prototype.getTooltipHtml = function (datum) {\n        var _a, _b;\n        var dataType = this.dataType;\n        var seriesDatum = datum.seriesDatum;\n        var yValue = seriesDatum.y;\n        var xValue = seriesDatum.x;\n        var content = this.formatNumericDatum(yValue);\n        var title = dataType === 'array' || dataType === 'object' ? this.formatDatum(xValue) : undefined;\n        var defaults = {\n            content: content,\n            title: title,\n        };\n        var tooltipRenderer = (_b = (_a = this.processedOptions) === null || _a === void 0 ? void 0 : _a.tooltip) === null || _b === void 0 ? void 0 : _b.renderer;\n        if (tooltipRenderer) {\n            return toTooltipHtml(tooltipRenderer({\n                context: this.context,\n                datum: seriesDatum,\n                yValue: yValue,\n                xValue: xValue,\n            }), defaults);\n        }\n        return toTooltipHtml(defaults);\n    };\n    LineSparkline.className = 'LineSparkline';\n    return LineSparkline;\n}(Sparkline));\n\nvar Label = /** @class */ (function () {\n    function Label() {\n        this.enabled = true;\n        this.fontSize = 8;\n        this.fontFamily = 'Verdana, sans-serif';\n        this.fontStyle = undefined;\n        this.fontWeight = undefined;\n        this.color = 'rgba(70, 70, 70, 1)';\n    }\n    return Label;\n}());\n\nvar __extends$4 = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar extent = extent$4;\nvar BarColumnNodeTag;\n(function (BarColumnNodeTag) {\n    BarColumnNodeTag[BarColumnNodeTag[\"Rect\"] = 0] = \"Rect\";\n    BarColumnNodeTag[BarColumnNodeTag[\"Label\"] = 1] = \"Label\";\n})(BarColumnNodeTag || (BarColumnNodeTag = {}));\nvar BarColumnLabelPlacement;\n(function (BarColumnLabelPlacement) {\n    BarColumnLabelPlacement[\"InsideBase\"] = \"insideBase\";\n    BarColumnLabelPlacement[\"InsideEnd\"] = \"insideEnd\";\n    BarColumnLabelPlacement[\"Center\"] = \"center\";\n    BarColumnLabelPlacement[\"OutsideEnd\"] = \"outsideEnd\";\n})(BarColumnLabelPlacement || (BarColumnLabelPlacement = {}));\nvar BarColumnLabel = /** @class */ (function (_super) {\n    __extends$4(BarColumnLabel, _super);\n    function BarColumnLabel() {\n        var _this = _super !== null && _super.apply(this, arguments) || this;\n        _this.formatter = undefined;\n        _this.placement = BarColumnLabelPlacement.InsideEnd;\n        return _this;\n    }\n    return BarColumnLabel;\n}(Label));\nvar BarColumnSparkline = /** @class */ (function (_super) {\n    __extends$4(BarColumnSparkline, _super);\n    function BarColumnSparkline() {\n        var _this = _super.call(this) || this;\n        _this.fill = 'rgb(124, 181, 236)';\n        _this.stroke = 'silver';\n        _this.strokeWidth = 0;\n        _this.paddingInner = 0.1;\n        _this.paddingOuter = 0.2;\n        _this.valueAxisDomain = undefined;\n        _this.formatter = undefined;\n        _this.axisLine = new Line();\n        _this.bandWidth = 0;\n        _this.sparklineGroup = new Group();\n        _this.rectGroup = new Group();\n        _this.labelGroup = new Group();\n        _this.rectSelection = Selection.select(_this.rectGroup, Rect);\n        _this.labelSelection = Selection.select(_this.labelGroup, Text);\n        _this.nodeSelectionData = [];\n        _this.label = new BarColumnLabel();\n        _this.rootGroup.append(_this.sparklineGroup);\n        _this.rectGroup.zIndex = ZINDICIES.SERIES_FILL_ZINDEX;\n        _this.axisLine.zIndex = ZINDICIES.AXIS_LINE_ZINDEX;\n        _this.labelGroup.zIndex = ZINDICIES.SERIES_LABEL_ZINDEX;\n        _this.sparklineGroup.append([_this.rectGroup, _this.axisLine, _this.labelGroup]);\n        _this.axisLine.lineCap = 'round';\n        _this.label.enabled = false;\n        return _this;\n    }\n    BarColumnSparkline.prototype.getNodeData = function () {\n        return this.nodeSelectionData;\n    };\n    BarColumnSparkline.prototype.update = function () {\n        this.updateSelections();\n        this.updateNodes();\n    };\n    BarColumnSparkline.prototype.updateSelections = function () {\n        var nodeData = this.generateNodeData();\n        if (!nodeData) {\n            return;\n        }\n        this.nodeSelectionData = nodeData;\n        this.updateRectSelection(nodeData);\n        this.updateLabelSelection(nodeData);\n    };\n    BarColumnSparkline.prototype.updateNodes = function () {\n        this.updateRectNodes();\n        this.updateLabelNodes();\n    };\n    BarColumnSparkline.prototype.calculateStep = function (range) {\n        var _a;\n        var _b = this, xScale = _b.xScale, paddingInner = _b.paddingInner, paddingOuter = _b.paddingOuter, smallestInterval = _b.smallestInterval;\n        // calculate step\n        var domainLength = xScale.domain[1] - xScale.domain[0];\n        var intervals = domainLength / ((_a = smallestInterval === null || smallestInterval === void 0 ? void 0 : smallestInterval.x) !== null && _a !== void 0 ? _a : 1) + 1;\n        // The number of intervals/bands is used to determine the width of individual bands by dividing the available range.\n        // Allow a maximum of 50 bands to ensure the step (width of individual bands + padding) does not fall below a certain number of pixels.\n        // If the number of intervals exceeds 50, calculate the step for 50 bands within the given range.\n        // This means there could be some overlap of the bands in the sparkline.\n        var maxBands = 50;\n        var bands = Math.min(intervals, maxBands);\n        var gaps = bands - 1; // number of gaps (padding between bands)\n        var step = range / Math.max(1, 2 * paddingOuter + gaps * paddingInner + bands); // step width is a combination of band width and gap width\n        return step;\n    };\n    BarColumnSparkline.prototype.updateYScaleDomain = function () {\n        var _a = this, yScale = _a.yScale, yData = _a.yData, valueAxisDomain = _a.valueAxisDomain;\n        var yMinMax = extent(yData);\n        var yMin = 0;\n        var yMax = 1;\n        if (yMinMax !== undefined) {\n            yMin = this.min = yMinMax[0];\n            yMax = this.max = yMinMax[1];\n        }\n        // if yMin is positive, set yMin to 0\n        yMin = yMin < 0 ? yMin : 0;\n        // if yMax is negative, set yMax to 0\n        yMax = yMax < 0 ? 0 : yMax;\n        if (valueAxisDomain) {\n            if (valueAxisDomain[1] < yMax) {\n                valueAxisDomain[1] = yMax;\n            }\n            if (valueAxisDomain[0] > yMin) {\n                valueAxisDomain[0] = yMin;\n            }\n        }\n        yScale.domain = valueAxisDomain ? valueAxisDomain : [yMin, yMax];\n    };\n    BarColumnSparkline.prototype.updateRectSelection = function (selectionData) {\n        this.rectSelection.update(selectionData);\n    };\n    BarColumnSparkline.prototype.updateRectNodes = function () {\n        var _this = this;\n        var _a = this, highlightedDatum = _a.highlightedDatum, nodeFormatter = _a.formatter, fill = _a.fill, stroke = _a.stroke, strokeWidth = _a.strokeWidth;\n        var _b = this.highlightStyle, highlightFill = _b.fill, highlightStroke = _b.stroke, highlightStrokeWidth = _b.strokeWidth;\n        this.rectSelection.each(function (node, datum, index) {\n            var highlighted = datum === highlightedDatum;\n            var nodeFill = highlighted && highlightFill !== undefined ? highlightFill : fill;\n            var nodeStroke = highlighted && highlightStroke !== undefined ? highlightStroke : stroke;\n            var nodeStrokeWidth = highlighted && highlightStrokeWidth !== undefined ? highlightStrokeWidth : strokeWidth;\n            var nodeFormat;\n            var x = datum.x, y = datum.y, width = datum.width, height = datum.height, seriesDatum = datum.seriesDatum;\n            if (nodeFormatter) {\n                var first = index === 0;\n                var last = index === _this.nodeSelectionData.length - 1;\n                var min = seriesDatum.y === _this.min;\n                var max = seriesDatum.y === _this.max;\n                nodeFormat = nodeFormatter({\n                    datum: datum,\n                    xValue: seriesDatum.x,\n                    yValue: seriesDatum.y,\n                    width: width,\n                    height: height,\n                    min: min,\n                    max: max,\n                    first: first,\n                    last: last,\n                    fill: nodeFill,\n                    stroke: nodeStroke,\n                    strokeWidth: nodeStrokeWidth,\n                    highlighted: highlighted,\n                });\n            }\n            node.fill = (nodeFormat && nodeFormat.fill) || nodeFill;\n            node.stroke = (nodeFormat && nodeFormat.stroke) || nodeStroke;\n            node.strokeWidth = (nodeFormat && nodeFormat.strokeWidth) || nodeStrokeWidth;\n            node.x = node.y = 0;\n            node.width = width;\n            node.height = height;\n            node.visible = node.height > 0;\n            node.translationX = x;\n            node.translationY = y;\n            // shifts bars upwards?\n            // node.crisp = true;\n        });\n    };\n    BarColumnSparkline.prototype.updateLabelSelection = function (selectionData) {\n        this.labelSelection.update(selectionData, function (text) {\n            text.tag = BarColumnNodeTag.Label;\n            text.pointerEvents = PointerEvents.None;\n        });\n    };\n    BarColumnSparkline.prototype.updateLabelNodes = function () {\n        var _a = this.label, labelEnabled = _a.enabled, fontStyle = _a.fontStyle, fontWeight = _a.fontWeight, fontSize = _a.fontSize, fontFamily = _a.fontFamily, color = _a.color;\n        this.labelSelection.each(function (text, datum) {\n            var label = datum.label;\n            if (label && labelEnabled) {\n                text.fontStyle = fontStyle;\n                text.fontWeight = fontWeight;\n                text.fontSize = fontSize;\n                text.fontFamily = fontFamily;\n                text.textAlign = label.textAlign;\n                text.textBaseline = label.textBaseline;\n                text.text = label.text;\n                text.x = label.x;\n                text.y = label.y;\n                text.fill = color;\n                text.visible = true;\n            }\n            else {\n                text.visible = false;\n            }\n        });\n    };\n    BarColumnSparkline.prototype.getTooltipHtml = function (datum) {\n        var _a, _b;\n        var dataType = this.dataType;\n        var seriesDatum = datum.seriesDatum;\n        var yValue = seriesDatum.y;\n        var xValue = seriesDatum.x;\n        var content = this.formatNumericDatum(yValue);\n        var title = dataType === 'array' || dataType === 'object' ? this.formatDatum(xValue) : undefined;\n        var defaults = {\n            content: content,\n            title: title,\n        };\n        var tooltipRenderer = (_b = (_a = this.processedOptions) === null || _a === void 0 ? void 0 : _a.tooltip) === null || _b === void 0 ? void 0 : _b.renderer;\n        if (tooltipRenderer) {\n            return toTooltipHtml(tooltipRenderer({\n                context: this.context,\n                datum: seriesDatum,\n                yValue: yValue,\n                xValue: xValue,\n            }), defaults);\n        }\n        return toTooltipHtml(defaults);\n    };\n    BarColumnSparkline.prototype.formatLabelValue = function (value) {\n        return value % 1 !== 0 ? value.toFixed(1) : value.toFixed(0);\n    };\n    return BarColumnSparkline;\n}(Sparkline));\n\nvar __extends$3 = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar isNumber$2 = isNumber$4;\nvar BandScale$1 = BandScale$5;\nvar BarSparkline = /** @class */ (function (_super) {\n    __extends$3(BarSparkline, _super);\n    function BarSparkline() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    BarSparkline.prototype.updateYScaleRange = function () {\n        var _a = this, seriesRect = _a.seriesRect, yScale = _a.yScale;\n        yScale.range = [0, seriesRect.width];\n    };\n    BarSparkline.prototype.updateXScaleRange = function () {\n        var _a = this, xScale = _a.xScale, seriesRect = _a.seriesRect, paddingOuter = _a.paddingOuter, paddingInner = _a.paddingInner;\n        if (xScale instanceof BandScale$1) {\n            xScale.range = [0, seriesRect.height];\n            xScale.paddingInner = paddingInner;\n            xScale.paddingOuter = paddingOuter;\n        }\n        else {\n            // last node will be clipped if the scale is not a band scale\n            // subtract last band width from the range so that the last band is not clipped\n            var step = this.calculateStep(seriesRect.height);\n            // PaddingOuter and paddingInner are fractions of the step with values between 0 and 1\n            var padding = step * paddingOuter; // left and right outer padding\n            this.bandWidth = step * (1 - paddingInner);\n            xScale.range = [padding, seriesRect.height - padding - this.bandWidth];\n        }\n    };\n    BarSparkline.prototype.updateAxisLine = function () {\n        var _a = this, yScale = _a.yScale, axis = _a.axis, axisLine = _a.axisLine, seriesRect = _a.seriesRect;\n        var strokeWidth = axis.strokeWidth;\n        axisLine.x1 = 0;\n        axisLine.x2 = 0;\n        axisLine.y1 = 0;\n        axisLine.y2 = seriesRect.height;\n        axisLine.stroke = axis.stroke;\n        axisLine.strokeWidth = strokeWidth + (strokeWidth % 2 === 1 ? 1 : 0);\n        var yZero = yScale.convert(0);\n        axisLine.translationX = yZero;\n    };\n    BarSparkline.prototype.generateNodeData = function () {\n        var _a = this, data = _a.data, yData = _a.yData, xData = _a.xData, xScale = _a.xScale, yScale = _a.yScale, fill = _a.fill, stroke = _a.stroke, strokeWidth = _a.strokeWidth, label = _a.label;\n        if (!data) {\n            return;\n        }\n        var labelFontStyle = label.fontStyle, labelFontWeight = label.fontWeight, labelFontSize = label.fontSize, labelFontFamily = label.fontFamily, labelColor = label.color, labelFormatter = label.formatter, labelPlacement = label.placement;\n        var nodeData = [];\n        var yZero = yScale.convert(0);\n        var continuous = !(xScale instanceof BandScale$1);\n        for (var i = 0, n = yData.length; i < n; i++) {\n            var yDatum = yData[i];\n            var xDatum = xData[i];\n            var invalidDatum = yDatum === undefined;\n            if (invalidDatum) {\n                yDatum = 0;\n            }\n            var y = xScale.convert(continuous ? xScale.toDomain(xDatum) : xDatum);\n            var x = Math.min(yDatum === undefined ? NaN : yScale.convert(yDatum), yZero);\n            var bottom = Math.max(yDatum === undefined ? NaN : yScale.convert(yDatum), yZero);\n            // if the scale is a band scale, the width of the rects will be the bandwidth, otherwise the width of the rects will be the range / number of items in the data\n            var height = !continuous ? xScale.bandwidth : this.bandWidth;\n            var width = bottom - x;\n            var midPoint = {\n                x: yZero,\n                y: y,\n            };\n            var labelText = void 0;\n            if (labelFormatter) {\n                labelText = labelFormatter({ value: yDatum });\n            }\n            else {\n                labelText = yDatum !== undefined && isNumber$2(yDatum) ? this.formatLabelValue(yDatum) : '';\n            }\n            var labelY = y + height / 2;\n            var labelX = void 0;\n            var labelTextBaseline = 'middle';\n            var labelTextAlign = void 0;\n            var isPositiveY = yDatum !== undefined && yDatum >= 0;\n            var labelPadding = 4;\n            if (labelPlacement === BarColumnLabelPlacement.Center) {\n                labelX = x + width / 2;\n                labelTextAlign = 'center';\n            }\n            else if (labelPlacement === BarColumnLabelPlacement.OutsideEnd) {\n                labelX = x + (isPositiveY ? width + labelPadding : -labelPadding);\n                labelTextAlign = isPositiveY ? 'start' : 'end';\n            }\n            else if (labelPlacement === BarColumnLabelPlacement.InsideEnd) {\n                labelX = x + (isPositiveY ? width - labelPadding : labelPadding);\n                labelTextAlign = isPositiveY ? 'end' : 'start';\n                var textSize = HdpiCanvas.getTextSize(labelText, labelFontFamily);\n                var textWidth = textSize.width || 20;\n                var positiveBoundary = yZero + textWidth;\n                var negativeBoundary = yZero - textWidth;\n                var exceedsBoundaries = (isPositiveY && labelX < positiveBoundary) || (!isPositiveY && labelX > negativeBoundary);\n                if (exceedsBoundaries) {\n                    // if labelX exceeds the boundary, labels should be positioned at `insideBase`.\n                    labelX = yZero + labelPadding * (isPositiveY ? 1 : -1);\n                    labelTextAlign = isPositiveY ? 'start' : 'end';\n                }\n            }\n            else {\n                // if labelPlacement === BarColumnLabelPlacement.InsideBase\n                labelX = yZero + labelPadding * (isPositiveY ? 1 : -1);\n                labelTextAlign = isPositiveY ? 'start' : 'end';\n            }\n            nodeData.push({\n                x: x,\n                y: y,\n                width: width,\n                height: height,\n                fill: fill,\n                stroke: stroke,\n                strokeWidth: strokeWidth,\n                seriesDatum: { x: xDatum, y: invalidDatum ? undefined : yDatum },\n                point: midPoint,\n                label: {\n                    x: labelX,\n                    y: labelY,\n                    text: labelText,\n                    fontStyle: labelFontStyle,\n                    fontWeight: labelFontWeight,\n                    fontSize: labelFontSize,\n                    fontFamily: labelFontFamily,\n                    textAlign: labelTextAlign,\n                    textBaseline: labelTextBaseline,\n                    fill: labelColor,\n                },\n            });\n        }\n        return nodeData;\n    };\n    BarSparkline.prototype.getDistance = function (p1, p2) {\n        return Math.abs(p1.y - p2.y);\n    };\n    BarSparkline.className = 'BarSparkline';\n    return BarSparkline;\n}(BarColumnSparkline));\n\nvar __extends$2 = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar isNumber$1 = isNumber$4;\nvar BandScale = BandScale$5;\nvar ColumnSparkline = /** @class */ (function (_super) {\n    __extends$2(ColumnSparkline, _super);\n    function ColumnSparkline() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    ColumnSparkline.prototype.updateYScaleRange = function () {\n        var _a = this, seriesRect = _a.seriesRect, yScale = _a.yScale;\n        yScale.range = [seriesRect.height, 0];\n    };\n    ColumnSparkline.prototype.updateXScaleRange = function () {\n        var _a = this, xScale = _a.xScale, seriesRect = _a.seriesRect, paddingOuter = _a.paddingOuter, paddingInner = _a.paddingInner;\n        if (xScale instanceof BandScale) {\n            xScale.range = [0, seriesRect.width];\n            xScale.paddingInner = paddingInner;\n            xScale.paddingOuter = paddingOuter;\n        }\n        else {\n            // last node will be clipped if the scale is not a band scale\n            // subtract last band width from the range so that the last band is not clipped\n            var step = this.calculateStep(seriesRect.width);\n            // PaddingOuter and paddingInner are fractions of the step with values between 0 and 1\n            var padding = step * paddingOuter; // left and right outer padding\n            this.bandWidth = step * (1 - paddingInner);\n            xScale.range = [padding, seriesRect.width - padding - this.bandWidth];\n        }\n    };\n    ColumnSparkline.prototype.updateAxisLine = function () {\n        var _a = this, yScale = _a.yScale, axis = _a.axis, axisLine = _a.axisLine, seriesRect = _a.seriesRect;\n        var strokeWidth = axis.strokeWidth;\n        axisLine.x1 = 0;\n        axisLine.x2 = seriesRect.width;\n        axisLine.y1 = 0;\n        axisLine.y2 = 0;\n        axisLine.stroke = axis.stroke;\n        axisLine.strokeWidth = strokeWidth + (strokeWidth % 2 === 1 ? 1 : 0);\n        var yZero = yScale.convert(0);\n        axisLine.translationY = yZero;\n    };\n    ColumnSparkline.prototype.generateNodeData = function () {\n        var _a = this, data = _a.data, yData = _a.yData, xData = _a.xData, xScale = _a.xScale, yScale = _a.yScale, fill = _a.fill, stroke = _a.stroke, strokeWidth = _a.strokeWidth, label = _a.label;\n        if (!data) {\n            return;\n        }\n        var labelFontStyle = label.fontStyle, labelFontWeight = label.fontWeight, labelFontSize = label.fontSize, labelFontFamily = label.fontFamily, labelColor = label.color, labelFormatter = label.formatter, labelPlacement = label.placement;\n        var nodeData = [];\n        var yZero = yScale.convert(0);\n        var continuous = !(xScale instanceof BandScale);\n        for (var i = 0, n = yData.length; i < n; i++) {\n            var yDatum = yData[i];\n            var xDatum = xData[i];\n            var invalidDatum = yDatum === undefined;\n            if (invalidDatum) {\n                yDatum = 0;\n            }\n            var y = Math.min(yDatum === undefined ? NaN : yScale.convert(yDatum), yZero);\n            var x = xScale.convert(continuous ? xScale.toDomain(xDatum) : xDatum);\n            var bottom = Math.max(yDatum === undefined ? NaN : yScale.convert(yDatum), yZero);\n            // if the scale is a band scale, the width of the rects will be the bandwidth, otherwise the width of the rects will be the range / number of items in the data\n            var width = !continuous ? xScale.bandwidth : this.bandWidth;\n            var height = bottom - y;\n            var midPoint = {\n                x: x + width / 2,\n                y: yZero,\n            };\n            var labelText = void 0;\n            if (labelFormatter) {\n                labelText = labelFormatter({ value: yDatum });\n            }\n            else {\n                labelText = yDatum !== undefined && isNumber$1(yDatum) ? this.formatLabelValue(yDatum) : '';\n            }\n            var labelX = x + width / 2;\n            var labelY = void 0;\n            var labelTextAlign = 'center';\n            var labelTextBaseline = void 0;\n            var isPositiveY = yDatum !== undefined && yDatum >= 0;\n            var labelPadding = 2;\n            if (labelPlacement === BarColumnLabelPlacement.Center) {\n                labelY = y + height / 2;\n                labelTextBaseline = 'middle';\n            }\n            else if (labelPlacement === BarColumnLabelPlacement.OutsideEnd) {\n                labelY = y + (isPositiveY ? -labelPadding : height + labelPadding);\n                labelTextBaseline = isPositiveY ? 'bottom' : 'top';\n            }\n            else if (labelPlacement === BarColumnLabelPlacement.InsideEnd) {\n                labelY = y + (isPositiveY ? labelPadding : height - labelPadding);\n                labelTextBaseline = isPositiveY ? 'top' : 'bottom';\n                var textSize = HdpiCanvas.getTextSize(labelText, labelFontFamily);\n                var textHeight = textSize.height || 10;\n                var positiveBoundary = yZero - textHeight;\n                var negativeBoundary = yZero + textHeight;\n                var exceedsBoundaries = (isPositiveY && labelY > positiveBoundary) || (!isPositiveY && labelY < negativeBoundary);\n                if (exceedsBoundaries) {\n                    // if labelY exceeds the y boundary, labels should be positioned at the insideBase\n                    labelY = yZero + labelPadding * (isPositiveY ? -1 : 1);\n                    labelTextBaseline = isPositiveY ? 'bottom' : 'top';\n                }\n            }\n            else {\n                // if labelPlacement === BarColumnLabelPlacement.InsideBase\n                labelY = yZero + labelPadding * (isPositiveY ? -1 : 1);\n                labelTextBaseline = isPositiveY ? 'bottom' : 'top';\n            }\n            nodeData.push({\n                x: x,\n                y: y,\n                width: width,\n                height: height,\n                fill: fill,\n                stroke: stroke,\n                strokeWidth: strokeWidth,\n                seriesDatum: { x: xDatum, y: invalidDatum ? undefined : yDatum },\n                point: midPoint,\n                label: {\n                    x: labelX,\n                    y: labelY,\n                    text: labelText,\n                    fontStyle: labelFontStyle,\n                    fontWeight: labelFontWeight,\n                    fontSize: labelFontSize,\n                    fontFamily: labelFontFamily,\n                    textAlign: labelTextAlign,\n                    textBaseline: labelTextBaseline,\n                    fill: labelColor,\n                },\n            });\n        }\n        return nodeData;\n    };\n    ColumnSparkline.className = 'ColumnSparkline';\n    return ColumnSparkline;\n}(BarColumnSparkline));\n\nvar isNumber = isNumber$4;\nvar AgSparkline = /** @class */ (function () {\n    function AgSparkline() {\n    }\n    AgSparkline.create = function (options, tooltip) {\n        // avoid mutating user provided options\n        options = jsonMerge([options]);\n        var sparkline = getSparklineInstance(options.type);\n        if (tooltip) {\n            sparkline.tooltip = tooltip;\n        }\n        initSparkline(sparkline, options);\n        initSparklineByType(sparkline, options);\n        if (options.data) {\n            sparkline.data = options.data;\n        }\n        sparkline.processedOptions = options;\n        return sparkline;\n    };\n    return AgSparkline;\n}());\nfunction getSparklineInstance(type) {\n    if (type === void 0) { type = 'line'; }\n    switch (type) {\n        case 'column':\n            return new ColumnSparkline();\n        case 'bar':\n            return new BarSparkline();\n        case 'area':\n            return new AreaSparkline();\n        case 'line':\n        default:\n            return new LineSparkline();\n    }\n}\nfunction initSparklineByType(sparkline, options) {\n    switch (options.type) {\n        case 'bar':\n            initBarColumnSparkline(sparkline, options);\n            break;\n        case 'column':\n            initBarColumnSparkline(sparkline, options);\n            break;\n        case 'area':\n            initAreaSparkline(sparkline, options);\n            break;\n        case 'line':\n        default:\n            initLineSparkline(sparkline, options);\n            break;\n    }\n}\nfunction initSparkline(sparkline, options) {\n    setValueIfPropertyExists(sparkline, 'context', options.context, options);\n    setValueIfPropertyExists(sparkline, 'width', options.width, options);\n    setValueIfPropertyExists(sparkline, 'height', options.height, options);\n    setValueIfPropertyExists(sparkline, 'container', options.container, options);\n    setValueIfPropertyExists(sparkline, 'xKey', options.xKey, options);\n    setValueIfPropertyExists(sparkline, 'yKey', options.yKey, options);\n    if (options.padding) {\n        initPaddingOptions(sparkline.padding, options.padding);\n    }\n    if (options.axis) {\n        initAxisOptions(sparkline.axis, options.axis);\n    }\n    if (options.highlightStyle) {\n        initHighlightStyleOptions(sparkline.highlightStyle, options.highlightStyle);\n    }\n}\nfunction initLineSparkline(sparkline, options) {\n    if (options.marker) {\n        initMarkerOptions(sparkline.marker, options.marker);\n    }\n    if (options.line) {\n        initLineOptions(sparkline.line, options.line);\n    }\n    if (options.crosshairs) {\n        initCrosshairsOptions(sparkline.crosshairs, options.crosshairs);\n    }\n}\nfunction initAreaSparkline(sparkline, options) {\n    setValueIfPropertyExists(sparkline, 'fill', options.fill, options);\n    if (options.marker) {\n        initMarkerOptions(sparkline.marker, options.marker);\n    }\n    if (options.line) {\n        initLineOptions(sparkline.line, options.line);\n    }\n    if (options.crosshairs) {\n        initCrosshairsOptions(sparkline.crosshairs, options.crosshairs);\n    }\n}\nfunction initBarColumnSparkline(sparkline, options) {\n    setValueIfPropertyExists(sparkline, 'valueAxisDomain', options.valueAxisDomain, options);\n    setValueIfPropertyExists(sparkline, 'fill', options.fill, options);\n    setValueIfPropertyExists(sparkline, 'stroke', options.stroke, options);\n    setValueIfPropertyExists(sparkline, 'strokeWidth', options.strokeWidth, options);\n    setValueIfPropertyExists(sparkline, 'paddingInner', options.paddingInner, options);\n    setValueIfPropertyExists(sparkline, 'paddingOuter', options.paddingOuter, options);\n    setValueIfPropertyExists(sparkline, 'formatter', options.formatter, options);\n    if (options.label) {\n        initLabelOptions(sparkline.label, options.label);\n    }\n}\nfunction initPaddingOptions(target, options) {\n    setValueIfPropertyExists(target, 'top', options.top, options);\n    setValueIfPropertyExists(target, 'right', options.right, options);\n    setValueIfPropertyExists(target, 'bottom', options.bottom, options);\n    setValueIfPropertyExists(target, 'left', options.left, options);\n}\nfunction initMarkerOptions(target, options) {\n    setValueIfPropertyExists(target, 'enabled', options.enabled, options);\n    setValueIfPropertyExists(target, 'size', options.size, options);\n    setValueIfPropertyExists(target, 'shape', options.shape, options);\n    setValueIfPropertyExists(target, 'fill', options.fill, options);\n    setValueIfPropertyExists(target, 'stroke', options.stroke, options);\n    setValueIfPropertyExists(target, 'strokeWidth', options.strokeWidth, options);\n    setValueIfPropertyExists(target, 'formatter', options.formatter, options);\n}\nfunction initLabelOptions(target, options) {\n    setValueIfPropertyExists(target, 'enabled', options.enabled, options);\n    setValueIfPropertyExists(target, 'fontStyle', options.fontStyle, options);\n    setValueIfPropertyExists(target, 'fontWeight', options.fontWeight, options);\n    setValueIfPropertyExists(target, 'fontSize', options.fontSize, options);\n    setValueIfPropertyExists(target, 'fontFamily', options.fontFamily, options);\n    setValueIfPropertyExists(target, 'textAlign', options.textAlign, options);\n    setValueIfPropertyExists(target, 'textBaseline', options.textBaseline, options);\n    setValueIfPropertyExists(target, 'color', options.color, options);\n    setValueIfPropertyExists(target, 'formatter', options.formatter, options);\n    setValueIfPropertyExists(target, 'placement', options.placement, options);\n}\nfunction initLineOptions(target, options) {\n    setValueIfPropertyExists(target, 'stroke', options.stroke, options);\n    setValueIfPropertyExists(target, 'strokeWidth', options.strokeWidth, options);\n}\nfunction initAxisOptions(target, options) {\n    setValueIfPropertyExists(target, 'type', options.type, options);\n    setValueIfPropertyExists(target, 'stroke', options.stroke, options);\n    setValueIfPropertyExists(target, 'strokeWidth', options.strokeWidth, options);\n}\nfunction initHighlightStyleOptions(target, options) {\n    setValueIfPropertyExists(target, 'fill', options.fill, options);\n    setValueIfPropertyExists(target, 'size', options.size, options);\n    setValueIfPropertyExists(target, 'stroke', options.stroke, options);\n    setValueIfPropertyExists(target, 'strokeWidth', options.strokeWidth, options);\n}\nfunction initCrosshairsOptions(target, options) {\n    if (target.xLine && options.xLine) {\n        initCrosshairLineOptions(target.xLine, options.xLine);\n    }\n    if (target.yLine && options.yLine) {\n        initCrosshairLineOptions(target.yLine, options.yLine);\n    }\n}\nfunction initCrosshairLineOptions(target, options) {\n    setValueIfPropertyExists(target, 'enabled', options.enabled, options);\n    setValueIfPropertyExists(target, 'stroke', options.stroke, options);\n    setValueIfPropertyExists(target, 'strokeWidth', options.strokeWidth, options);\n    setValueIfPropertyExists(target, 'lineDash', options.lineDash, options);\n    setValueIfPropertyExists(target, 'lineCap', options.lineCap, options);\n}\nvar doOnceFlags = {};\n/**\n * If the key was passed before, then doesn't execute the func\n * @param {Function} func\n * @param {string} key\n */\nfunction doOnce(func, key) {\n    if (doOnceFlags[key]) {\n        return;\n    }\n    func();\n    doOnceFlags[key] = true;\n}\nvar offsetValidator = function (property, value, defaultOffset) {\n    if (isNumber(value)) {\n        return true;\n    }\n    var message = \"AG Charts: \" + property + \" must be a number, the value you provided is not a valid number. Using the default of \" + defaultOffset + \"px.\";\n    doOnce(function () { return console.warn(message); }, property + \" not a number\");\n    return false;\n};\nvar validators = {\n    xOffset: offsetValidator,\n    yOffset: offsetValidator,\n};\nfunction setValueIfPropertyExists(target, property, value, options) {\n    if (property in options) {\n        if (property in target) {\n            var validator = validators[property];\n            var isValid = validator ? validator(property, value, target[property]) : true;\n            if (isValid && target[property] !== value) {\n                // only set property if the value is different to new value\n                target[property] = value;\n            }\n        }\n        else {\n            console.warn(\"Property \" + property + \" does not exist on the target object.\");\n        }\n    }\n}\n\nvar __extends$1 = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __assign = (undefined && undefined.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\nvar __decorate$1 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar SparklineCellRenderer = /** @class */ (function (_super) {\n    __extends$1(SparklineCellRenderer, _super);\n    function SparklineCellRenderer() {\n        return _super.call(this, SparklineCellRenderer.TEMPLATE) || this;\n    }\n    SparklineCellRenderer.prototype.init = function (params) {\n        var _this = this;\n        var firstTimeIn = true;\n        var updateSparkline = function () {\n            var _a = _this.getGui(), clientWidth = _a.clientWidth, clientHeight = _a.clientHeight;\n            if (clientWidth === 0 || clientHeight === 0) {\n                return;\n            }\n            if (firstTimeIn) {\n                var options = __assign({ data: params.value, width: clientWidth, height: clientHeight, context: {\n                        data: params.data,\n                    } }, params.sparklineOptions);\n                // create new instance of sparkline\n                _this.sparkline = AgSparkline.create(options, _this.sparklineTooltipSingleton.getSparklineTooltip());\n                // append sparkline canvas to cell renderer element\n                _this.eSparkline.appendChild(_this.sparkline.canvasElement);\n                firstTimeIn = false;\n            }\n            else {\n                _this.sparkline.width = clientWidth;\n                _this.sparkline.height = clientHeight;\n            }\n        };\n        var unsubscribeFromResize = this.resizeObserverService.observeResize(this.getGui(), updateSparkline);\n        this.addDestroyFunc(function () { return unsubscribeFromResize(); });\n    };\n    SparklineCellRenderer.prototype.refresh = function (params) {\n        if (this.sparkline) {\n            this.sparkline.data = params.value;\n            return true;\n        }\n        return false;\n    };\n    SparklineCellRenderer.prototype.destroy = function () {\n        if (this.sparkline) {\n            this.sparkline.destroy();\n        }\n        _super.prototype.destroy.call(this);\n    };\n    SparklineCellRenderer.TEMPLATE /* html */ = \"<div class=\\\"ag-sparkline-wrapper\\\">\\n            <span ref=\\\"eSparkline\\\"></span>\\n        </div>\";\n    __decorate$1([\n        RefSelector('eSparkline')\n    ], SparklineCellRenderer.prototype, \"eSparkline\", void 0);\n    __decorate$1([\n        Autowired('resizeObserverService')\n    ], SparklineCellRenderer.prototype, \"resizeObserverService\", void 0);\n    __decorate$1([\n        Autowired('sparklineTooltipSingleton')\n    ], SparklineCellRenderer.prototype, \"sparklineTooltipSingleton\", void 0);\n    return SparklineCellRenderer;\n}(Component));\n\nvar __extends = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n/**\n * This 'bean' creates a single sparkline tooltip that is bound to the grid lifecycle.\n */\nvar SparklineTooltipSingleton = /** @class */ (function (_super) {\n    __extends(SparklineTooltipSingleton, _super);\n    function SparklineTooltipSingleton() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    SparklineTooltipSingleton.prototype.postConstruct = function () {\n        this.tooltip = new SparklineTooltip();\n    };\n    SparklineTooltipSingleton.prototype.getSparklineTooltip = function () {\n        return this.tooltip;\n    };\n    SparklineTooltipSingleton.prototype.destroyTooltip = function () {\n        if (this.tooltip) {\n            this.tooltip.destroy();\n        }\n    };\n    __decorate([\n        PostConstruct\n    ], SparklineTooltipSingleton.prototype, \"postConstruct\", null);\n    __decorate([\n        PreDestroy\n    ], SparklineTooltipSingleton.prototype, \"destroyTooltip\", null);\n    SparklineTooltipSingleton = __decorate([\n        Bean('sparklineTooltipSingleton')\n    ], SparklineTooltipSingleton);\n    return SparklineTooltipSingleton;\n}(BeanStub));\n\n// DO NOT UPDATE MANUALLY: Generated from script during build time\nvar VERSION = '29.3.5';\n\nvar SparklinesModule = {\n    version: VERSION,\n    moduleName: ModuleNames.SparklinesModule,\n    beans: [SparklineTooltipSingleton],\n    userComponents: [{ componentName: 'agSparklineCellRenderer', componentClass: SparklineCellRenderer }],\n    dependantModules: [EnterpriseCoreModule],\n};\n\nvar AllEnterpriseModules = [\n    ClipboardModule,\n    ColumnsToolPanelModule,\n    ExcelExportModule,\n    FiltersToolPanelModule,\n    GridChartsModule,\n    MasterDetailModule,\n    MenuModule,\n    MultiFilterModule,\n    RangeSelectionModule,\n    RichSelectModule,\n    RowGroupingModule,\n    ServerSideRowModelModule,\n    SetFilterModule,\n    SideBarModule,\n    StatusBarModule,\n    ViewportRowModelModule,\n    SparklinesModule\n];\nvar AllModules = AllCommunityModules.concat(AllEnterpriseModules);\n\nModuleRegistry.registerModules(AllEnterpriseModules);\n\nexport { AllEnterpriseModules, AllModules, ClipboardModule, ColumnsToolPanelModule, EnterpriseCoreModule, ExcelExportModule, FiltersToolPanelModule, GridChartsModule, GridLicenseManager as LicenseManager, MasterDetailModule, MenuModule, MultiFilter, MultiFilterModule, PivotDropZonePanel, PrimaryColsPanel, RangeSelectionModule, RichSelectModule, RowGroupDropZonePanel, RowGroupingModule, ServerSideRowModelModule, SetFilter, SetFilterModule, SideBarModule, SparklinesModule, StatusBarModule, ToolPanelColDefService, ValuesDropZonePanel, ViewportRowModelModule, __FORCE_MODULE_DETECTION_AG_GRID_CORE_EXT, agCharts, exportMultipleSheetsAsExcel, getMultipleSheetsAsExcel };\n","// ag-grid-react v29.3.5\n\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __assign = (this && this.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n    if (k2 === undefined) k2 = k;\n    Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n    if (k2 === undefined) k2 = k;\n    o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n    Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n    o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n    if (mod && mod.__esModule) return mod;\n    var result = {};\n    if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n    __setModuleDefault(result, mod);\n    return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.AgGridReact = void 0;\nvar react_1 = __importStar(require(\"react\"));\nvar agGridReactLegacy_1 = require(\"./legacy/agGridReactLegacy\");\nvar agGridReactUi_1 = require(\"./reactUi/agGridReactUi\");\nvar AgGridReact = /** @class */ (function (_super) {\n    __extends(AgGridReact, _super);\n    function AgGridReact() {\n        var _this = _super !== null && _super.apply(this, arguments) || this;\n        _this.setGridApi = function (api, columnApi) {\n            _this.api = api;\n            _this.columnApi = columnApi;\n        };\n        return _this;\n    }\n    AgGridReact.prototype.render = function () {\n        var ReactComponentToUse = this.props.suppressReactUi ?\n            react_1.default.createElement(agGridReactLegacy_1.AgGridReactLegacy, __assign({}, this.props, { setGridApi: this.setGridApi }))\n            : react_1.default.createElement(agGridReactUi_1.AgGridReactUi, __assign({}, this.props, { setGridApi: this.setGridApi }));\n        return ReactComponentToUse;\n    };\n    return AgGridReact;\n}(react_1.Component));\nexports.AgGridReact = AgGridReact;\n","// ag-grid-react v29.3.5\n\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __assign = (this && this.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n    if (k2 === undefined) k2 = k;\n    Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n    if (k2 === undefined) k2 = k;\n    o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n    Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n    o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n    if (mod && mod.__esModule) return mod;\n    var result = {};\n    if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n    __setModuleDefault(result, mod);\n    return result;\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n    return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.AgGridReactLegacy = void 0;\nvar ag_grid_community_1 = require(\"ag-grid-community\");\nvar prop_types_1 = __importDefault(require(\"prop-types\"));\nvar react_1 = __importStar(require(\"react\"));\nvar legacyReactComponent_1 = require(\"./legacyReactComponent\");\nvar newReactComponent_1 = require(\"../shared/newReactComponent\");\nvar portalManager_1 = require(\"../shared/portalManager\");\nvar reactFrameworkOverrides_1 = require(\"../shared/reactFrameworkOverrides\");\nvar AgGridReactLegacy = /** @class */ (function (_super) {\n    __extends(AgGridReactLegacy, _super);\n    function AgGridReactLegacy(props) {\n        var _this = _super.call(this, props) || this;\n        _this.props = props;\n        _this.api = null;\n        _this.destroyed = false;\n        _this.SYNCHRONOUS_CHANGE_PROPERTIES = ['context'];\n        _this.portalManager = new portalManager_1.PortalManager(_this, props.componentWrappingElement, props.maxComponentCreationTimeMs);\n        return _this;\n    }\n    AgGridReactLegacy.prototype.render = function () {\n        var _this = this;\n        return react_1.default.createElement('div', {\n            style: this.createStyleForDiv(),\n            className: this.props.className,\n            ref: function (e) {\n                _this.eGridDiv = e;\n            }\n        }, this.portalManager.getPortals());\n    };\n    AgGridReactLegacy.prototype.createStyleForDiv = function () {\n        return __assign({ height: '100%' }, (this.props.containerStyle || {}));\n    };\n    AgGridReactLegacy.prototype.componentDidMount = function () {\n        var modules = this.props.modules || [];\n        var gridParams = {\n            providedBeanInstances: {\n                agGridReact: this,\n                frameworkComponentWrapper: new ReactFrameworkComponentWrapper(this, this.portalManager)\n            },\n            modules: modules,\n            frameworkOverrides: new reactFrameworkOverrides_1.ReactFrameworkOverrides(false)\n        };\n        var gridOptions = this.props.gridOptions || {};\n        this.gridOptions = ag_grid_community_1.ComponentUtil.copyAttributesToGridOptions(gridOptions, this.props);\n        this.checkForDeprecations(this.props);\n        // don't need the return value\n        new ag_grid_community_1.Grid(this.eGridDiv, this.gridOptions, gridParams);\n        this.api = this.gridOptions.api;\n        this.columnApi = this.gridOptions.columnApi;\n        this.props.setGridApi(this.api, this.columnApi);\n    };\n    AgGridReactLegacy.prototype.checkForDeprecations = function (props) {\n        if (props.rowDataChangeDetectionStrategy) {\n            ag_grid_community_1._.doOnce(function () { return console.warn('AG Grid: Since v29 rowDataChangeDetectionStrategy has been deprecated. Row data property changes will be compared by reference via triple equals ===. See https://ag-grid.com/react-data-grid/react-hooks/'); }, 'rowDataChangeDetectionStrategy_Deprecation');\n        }\n    };\n    AgGridReactLegacy.prototype.shouldComponentUpdate = function (nextProps) {\n        this.processPropsChanges(this.props, nextProps);\n        // we want full control of the dom, as AG Grid doesn't use React internally,\n        // so for performance reasons we tell React we don't need render called after\n        // property changes.\n        return false;\n    };\n    AgGridReactLegacy.prototype.componentDidUpdate = function (prevProps) {\n        this.processPropsChanges(prevProps, this.props);\n    };\n    AgGridReactLegacy.prototype.processPropsChanges = function (prevProps, nextProps) {\n        var changes = {};\n        this.extractGridPropertyChanges(prevProps, nextProps, changes);\n        this.processSynchronousChanges(changes);\n        this.processAsynchronousChanges(changes);\n    };\n    AgGridReactLegacy.prototype.extractGridPropertyChanges = function (prevProps, nextProps, changes) {\n        var debugLogging = !!nextProps.debug;\n        Object.keys(nextProps).forEach(function (propKey) {\n            if (ag_grid_community_1.ComponentUtil.ALL_PROPERTIES_SET.has(propKey)) {\n                if (prevProps[propKey] !== nextProps[propKey]) {\n                    if (debugLogging) {\n                        console.log(\"agGridReact: [\" + propKey + \"] property changed\");\n                    }\n                    changes[propKey] = {\n                        previousValue: prevProps[propKey],\n                        currentValue: nextProps[propKey]\n                    };\n                }\n            }\n        });\n        ag_grid_community_1.ComponentUtil.EVENT_CALLBACKS.forEach(function (funcName) {\n            if (prevProps[funcName] !== nextProps[funcName]) {\n                if (debugLogging) {\n                    console.log(\"agGridReact: [\" + funcName + \"] event callback changed\");\n                }\n                changes[funcName] = {\n                    previousValue: prevProps[funcName],\n                    currentValue: nextProps[funcName]\n                };\n            }\n        });\n    };\n    AgGridReactLegacy.prototype.componentWillUnmount = function () {\n        if (this.api) {\n            this.api.destroy();\n            this.api = null;\n        }\n        this.destroyed = true;\n        this.portalManager.destroy();\n    };\n    AgGridReactLegacy.prototype.isDisableStaticMarkup = function () {\n        return this.props.disableStaticMarkup === true;\n    };\n    AgGridReactLegacy.prototype.isLegacyComponentRendering = function () {\n        return this.props.legacyComponentRendering === true;\n    };\n    AgGridReactLegacy.prototype.processSynchronousChanges = function (changes) {\n        var asyncChanges = __assign({}, changes);\n        if (Object.keys(asyncChanges).length > 0) {\n            var synchronousChanges_1 = {};\n            this.SYNCHRONOUS_CHANGE_PROPERTIES.forEach(function (synchronousChangeProperty) {\n                if (asyncChanges[synchronousChangeProperty]) {\n                    synchronousChanges_1[synchronousChangeProperty] = asyncChanges[synchronousChangeProperty];\n                    delete asyncChanges[synchronousChangeProperty];\n                }\n            });\n            if (Object.keys(synchronousChanges_1).length > 0 && !!this.api) {\n                ag_grid_community_1.ComponentUtil.processOnChange(synchronousChanges_1, this.api);\n            }\n        }\n        return asyncChanges;\n    };\n    AgGridReactLegacy.prototype.processAsynchronousChanges = function (changes) {\n        var _this = this;\n        if (Object.keys(changes).length > 0) {\n            window.setTimeout(function () {\n                // destroyed?\n                if (_this.api) {\n                    ag_grid_community_1.ComponentUtil.processOnChange(changes, _this.api);\n                }\n            });\n        }\n    };\n    AgGridReactLegacy.MAX_COMPONENT_CREATION_TIME_IN_MS = 1000; // a second should be more than enough to instantiate a component\n    AgGridReactLegacy.defaultProps = {\n        legacyComponentRendering: false,\n        disableStaticMarkup: false,\n        maxComponentCreationTimeMs: AgGridReactLegacy.MAX_COMPONENT_CREATION_TIME_IN_MS\n    };\n    return AgGridReactLegacy;\n}(react_1.Component));\nexports.AgGridReactLegacy = AgGridReactLegacy;\nAgGridReactLegacy.propTypes = {\n    gridOptions: prop_types_1.default.object\n};\naddProperties(ag_grid_community_1.ComponentUtil.EVENT_CALLBACKS, prop_types_1.default.func);\naddProperties(ag_grid_community_1.ComponentUtil.BOOLEAN_PROPERTIES, prop_types_1.default.bool);\naddProperties(ag_grid_community_1.ComponentUtil.STRING_PROPERTIES, prop_types_1.default.string);\naddProperties(ag_grid_community_1.ComponentUtil.OBJECT_PROPERTIES, prop_types_1.default.object);\naddProperties(ag_grid_community_1.ComponentUtil.ARRAY_PROPERTIES, prop_types_1.default.array);\naddProperties(ag_grid_community_1.ComponentUtil.NUMBER_PROPERTIES, prop_types_1.default.number);\naddProperties(ag_grid_community_1.ComponentUtil.FUNCTION_PROPERTIES, prop_types_1.default.func);\nfunction addProperties(listOfProps, propType) {\n    listOfProps.forEach(function (propKey) {\n        AgGridReactLegacy[propKey] = propType;\n    });\n}\nvar ReactFrameworkComponentWrapper = /** @class */ (function (_super) {\n    __extends(ReactFrameworkComponentWrapper, _super);\n    function ReactFrameworkComponentWrapper(agGridReact, portalManager) {\n        var _this = _super.call(this) || this;\n        _this.agGridReact = agGridReact;\n        _this.portalManager = portalManager;\n        return _this;\n    }\n    ReactFrameworkComponentWrapper.prototype.createWrapper = function (UserReactComponent, componentType) {\n        if (this.agGridReact.isLegacyComponentRendering()) {\n            return new legacyReactComponent_1.LegacyReactComponent(UserReactComponent, this.agGridReact, this.portalManager, componentType);\n        }\n        else {\n            return new newReactComponent_1.NewReactComponent(UserReactComponent, this.portalManager, componentType);\n        }\n    };\n    return ReactFrameworkComponentWrapper;\n}(ag_grid_community_1.BaseComponentWrapper));\n","// ag-grid-react v29.3.5\n\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n    return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.LegacyReactComponent = void 0;\nvar react_1 = require(\"react\");\nvar react_dom_1 = require(\"react-dom\");\nvar ag_grid_community_1 = require(\"ag-grid-community\");\nvar reactComponent_1 = require(\"../shared/reactComponent\");\nvar server_1 = require(\"react-dom/server\");\nvar keyGenerator_1 = __importDefault(require(\"../shared/keyGenerator\"));\nvar LegacyReactComponent = /** @class */ (function (_super) {\n    __extends(LegacyReactComponent, _super);\n    function LegacyReactComponent(reactComponent, parentComponent, portalManager, componentType) {\n        var _this = _super.call(this, reactComponent, portalManager, componentType) || this;\n        _this.staticMarkup = null;\n        _this.staticRenderTime = 0;\n        _this.parentComponent = parentComponent;\n        return _this;\n    }\n    LegacyReactComponent.prototype.init = function (params) {\n        var _this = this;\n        this.eParentElement = this.createParentElement(params);\n        this.renderStaticMarkup(params);\n        return new ag_grid_community_1.AgPromise(function (resolve) { return _this.createReactComponent(params, resolve); });\n    };\n    LegacyReactComponent.prototype.createReactComponent = function (params, resolve) {\n        var _this = this;\n        // regular components (ie not functional)\n        if (!this.isStatelessComponent()) {\n            // grab hold of the actual instance created\n            params.ref = function (element) {\n                _this.componentInstance = element;\n                _this.addParentContainerStyleAndClasses();\n                _this.removeStaticMarkup();\n            };\n        }\n        var reactComponent = react_1.createElement(this.reactComponent, params);\n        var portal = react_dom_1.createPortal(reactComponent, this.eParentElement, keyGenerator_1.default() // fixed deltaRowModeRefreshCompRenderer\n        );\n        this.portal = portal;\n        this.portalManager.mountReactPortal(portal, this, function (value) {\n            resolve(value);\n            // functional/stateless components have a slightly different lifecycle (no refs) so we'll clean them up\n            // here\n            if (_this.isStatelessComponent()) {\n                if (_this.isSlowRenderer()) {\n                    _this.removeStaticMarkup();\n                }\n                setTimeout(function () {\n                    _this.removeStaticMarkup();\n                });\n            }\n        });\n    };\n    LegacyReactComponent.prototype.fallbackMethodAvailable = function (name) {\n        return false;\n    };\n    LegacyReactComponent.prototype.fallbackMethod = function (name, params) { };\n    LegacyReactComponent.prototype.isSlowRenderer = function () {\n        return this.staticRenderTime >= LegacyReactComponent.SLOW_RENDERING_THRESHOLD;\n    };\n    LegacyReactComponent.prototype.isNullValue = function () {\n        return this.staticMarkup === '';\n    };\n    /*\n     * Attempt to render the component as static markup if possible\n     * What this does is eliminate any visible flicker for the user in the scenario where a component is destroyed and\n     * recreated with exactly the same data (ie with force refresh)\n     * Note: Some use cases will throw an error (ie when using Context) so if an error occurs just ignore it any move on\n     */\n    LegacyReactComponent.prototype.renderStaticMarkup = function (params) {\n        if (this.parentComponent.isDisableStaticMarkup() || !this.componentType.cellRenderer) {\n            return;\n        }\n        var originalConsoleError = console.error;\n        var reactComponent = react_1.createElement(this.reactComponent, params);\n        try {\n            // if a user is doing anything that uses useLayoutEffect (like material ui) then it will throw and we\n            // can't do anything to stop it; this is just a warning and has no effect on anything so just suppress it\n            // for this single operation\n            console.error = function () {\n            };\n            var start = Date.now();\n            var staticMarkup = server_1.renderToStaticMarkup(reactComponent);\n            this.staticRenderTime = Date.now() - start;\n            console.error = originalConsoleError;\n            // if the render method returns null the result will be an empty string\n            if (staticMarkup === '') {\n                this.staticMarkup = staticMarkup;\n            }\n            else {\n                if (staticMarkup) {\n                    // we wrap the content as if there is \"trailing\" text etc it's not easy to safely remove\n                    // the same is true for memoized renderers, renderers that that return simple strings or NaN etc\n                    this.staticMarkup = document.createElement('span');\n                    this.staticMarkup.innerHTML = staticMarkup;\n                    this.eParentElement.appendChild(this.staticMarkup);\n                }\n            }\n        }\n        catch (e) {\n            // we tried - this can happen with certain (rare) edge cases\n        }\n        finally {\n            console.error = originalConsoleError;\n        }\n    };\n    LegacyReactComponent.prototype.removeStaticMarkup = function () {\n        if (this.parentComponent.isDisableStaticMarkup() || !this.componentType.cellRenderer) {\n            return;\n        }\n        if (this.staticMarkup) {\n            if (this.staticMarkup.remove) {\n                // everyone else in the world\n                this.staticMarkup.remove();\n                this.staticMarkup = null;\n            }\n            else if (this.eParentElement.removeChild) {\n                // ie11...\n                this.eParentElement.removeChild(this.staticMarkup);\n                this.staticMarkup = null;\n            }\n        }\n    };\n    LegacyReactComponent.prototype.rendered = function () {\n        return this.isNullValue() ||\n            !!this.staticMarkup || (this.isStatelessComponent() && this.statelessComponentRendered()) ||\n            !!(!this.isStatelessComponent() && this.getFrameworkComponentInstance());\n    };\n    LegacyReactComponent.SLOW_RENDERING_THRESHOLD = 3;\n    return LegacyReactComponent;\n}(reactComponent_1.ReactComponent));\nexports.LegacyReactComponent = LegacyReactComponent;\n","// ag-grid-react v29.3.5\n\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __assign = (this && this.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n    if (k2 === undefined) k2 = k;\n    Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n    if (k2 === undefined) k2 = k;\n    o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n    Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n    o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n    if (mod && mod.__esModule) return mod;\n    var result = {};\n    if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n    __setModuleDefault(result, mod);\n    return result;\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n    return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.AgGridReactUi = void 0;\nvar ag_grid_community_1 = require(\"ag-grid-community\");\nvar react_1 = __importStar(require(\"react\"));\nvar newReactComponent_1 = require(\"../shared/newReactComponent\");\nvar portalManager_1 = require(\"../shared/portalManager\");\nvar gridComp_1 = __importDefault(require(\"./gridComp\"));\nvar reactFrameworkOverrides_1 = require(\"../shared/reactFrameworkOverrides\");\nfunction debug(msg, obj) {\n    // console.log(msg, obj);\n}\nvar AgGridReactUi = /** @class */ (function (_super) {\n    __extends(AgGridReactUi, _super);\n    // Would like props to be of type AgReactUiProps<TData> but currently breaks build\n    function AgGridReactUi(props) {\n        var _this = _super.call(this, props) || this;\n        _this.props = props;\n        _this.destroyFuncs = [];\n        _this.eGui = react_1.default.createRef();\n        _this.whenReadyFuncs = [];\n        _this.ready = false;\n        _this.renderedAfterMount = false;\n        _this.mounted = false;\n        debug('AgGridReactUi.constructor');\n        _this.state = { context: undefined };\n        _this.portalManager = new portalManager_1.PortalManager(_this, props.componentWrappingElement, props.maxComponentCreationTimeMs);\n        _this.destroyFuncs.push(function () { return _this.portalManager.destroy(); });\n        return _this;\n    }\n    AgGridReactUi.prototype.render = function () {\n        debug('AgGridReactUi.render, context = ' + (this.state.context));\n        if (this.state.context) {\n            this.renderedAfterMount = true;\n        }\n        return (react_1.default.createElement(\"div\", { style: this.createStyleForDiv(), className: this.props.className, ref: this.eGui },\n            this.state.context && react_1.default.createElement(gridComp_1.default, { context: this.state.context }),\n            this.portalManager.getPortals()));\n    };\n    AgGridReactUi.prototype.createStyleForDiv = function () {\n        return __assign({ height: '100%' }, (this.props.containerStyle || {}));\n    };\n    AgGridReactUi.prototype.componentDidMount = function () {\n        var _this = this;\n        if (this.mounted) {\n            debug('AgGridReactUi.componentDidMount - skipping');\n            return;\n        }\n        debug('AgGridReactUi.componentDidMount');\n        this.mounted = true;\n        var modules = this.props.modules || [];\n        var gridParams = {\n            providedBeanInstances: {\n                frameworkComponentWrapper: new ReactFrameworkComponentWrapper(this.portalManager)\n            },\n            modules: modules,\n            frameworkOverrides: new reactFrameworkOverrides_1.ReactFrameworkOverrides(true)\n        };\n        this.gridOptions = this.props.gridOptions || {};\n        this.gridOptions = ag_grid_community_1.ComponentUtil.copyAttributesToGridOptions(this.gridOptions, this.props);\n        this.checkForDeprecations(this.props);\n        var createUiCallback = function (context) {\n            _this.setState({ context: context });\n            // because React is Async, we need to wait for the UI to be initialised before exposing the API's\n            var ctrlsService = context.getBean(ag_grid_community_1.CtrlsService.NAME);\n            ctrlsService.whenReady(function () {\n                debug('AgGridReactUi.createUiCallback');\n                _this.api = _this.gridOptions.api;\n                _this.columnApi = _this.gridOptions.columnApi;\n                _this.props.setGridApi(_this.api, _this.columnApi);\n                _this.destroyFuncs.push(function () { return _this.api.destroy(); });\n            });\n        };\n        // this callback adds to ctrlsService.whenReady(), just like above, however because whenReady() executes\n        // funcs in the order they were received, we know adding items here will be AFTER the grid has set columns\n        // and data. this is because GridCoreCreator sets these between calling createUiCallback and acceptChangesCallback\n        var acceptChangesCallback = function (context) {\n            var ctrlsService = context.getBean(ag_grid_community_1.CtrlsService.NAME);\n            ctrlsService.whenReady(function () {\n                debug('AgGridReactUi.acceptChangesCallback');\n                _this.whenReadyFuncs.forEach(function (f) { return f(); });\n                _this.whenReadyFuncs.length = 0;\n                _this.ready = true;\n            });\n        };\n        // don't need the return value\n        var gridCoreCreator = new ag_grid_community_1.GridCoreCreator();\n        gridCoreCreator.create(this.eGui.current, this.gridOptions, createUiCallback, acceptChangesCallback, gridParams);\n    };\n    AgGridReactUi.prototype.checkForDeprecations = function (props) {\n        if (props.rowDataChangeDetectionStrategy) {\n            ag_grid_community_1._.doOnce(function () { return console.warn('AG Grid: Since v29 rowDataChangeDetectionStrategy has been deprecated. Row data property changes will be compared by reference via triple equals ===. See https://ag-grid.com/react-data-grid/react-hooks/'); }, 'rowDataChangeDetectionStrategy_Deprecation');\n        }\n    };\n    AgGridReactUi.prototype.componentWillUnmount = function () {\n        if (this.renderedAfterMount) {\n            debug('AgGridReactUi.componentWillUnmount - executing');\n            this.destroyFuncs.forEach(function (f) { return f(); });\n            this.destroyFuncs.length = 0;\n        }\n        else {\n            debug('AgGridReactUi.componentWillUnmount - skipping');\n        }\n    };\n    AgGridReactUi.prototype.componentDidUpdate = function (prevProps) {\n        this.processPropsChanges(prevProps, this.props);\n    };\n    AgGridReactUi.prototype.processPropsChanges = function (prevProps, nextProps) {\n        var changes = {};\n        this.extractGridPropertyChanges(prevProps, nextProps, changes);\n        this.processChanges(changes);\n    };\n    AgGridReactUi.prototype.extractGridPropertyChanges = function (prevProps, nextProps, changes) {\n        var debugLogging = !!nextProps.debug;\n        Object.keys(nextProps).forEach(function (propKey) {\n            if (ag_grid_community_1.ComponentUtil.ALL_PROPERTIES_SET.has(propKey)) {\n                if (prevProps[propKey] !== nextProps[propKey]) {\n                    if (debugLogging) {\n                        console.log(\"agGridReact: [\" + propKey + \"] property changed\");\n                    }\n                    changes[propKey] = {\n                        previousValue: prevProps[propKey],\n                        currentValue: nextProps[propKey]\n                    };\n                }\n            }\n        });\n        ag_grid_community_1.ComponentUtil.EVENT_CALLBACKS.forEach(function (funcName) {\n            if (prevProps[funcName] !== nextProps[funcName]) {\n                if (debugLogging) {\n                    console.log(\"agGridReact: [\" + funcName + \"] event callback changed\");\n                }\n                changes[funcName] = {\n                    previousValue: prevProps[funcName],\n                    currentValue: nextProps[funcName]\n                };\n            }\n        });\n    };\n    AgGridReactUi.prototype.processChanges = function (changes) {\n        var _this = this;\n        this.processWhenReady(function () {\n            return ag_grid_community_1.ComponentUtil.processOnChange(changes, _this.api);\n        });\n    };\n    AgGridReactUi.prototype.processWhenReady = function (func) {\n        if (this.ready) {\n            debug('AgGridReactUi.processWhenReady sync');\n            func();\n        }\n        else {\n            debug('AgGridReactUi.processWhenReady async');\n            this.whenReadyFuncs.push(func);\n        }\n    };\n    return AgGridReactUi;\n}(react_1.Component));\nexports.AgGridReactUi = AgGridReactUi;\nvar ReactFrameworkComponentWrapper = /** @class */ (function (_super) {\n    __extends(ReactFrameworkComponentWrapper, _super);\n    function ReactFrameworkComponentWrapper(parent) {\n        var _this = _super.call(this) || this;\n        _this.parent = parent;\n        return _this;\n    }\n    ReactFrameworkComponentWrapper.prototype.createWrapper = function (UserReactComponent, componentType) {\n        return new newReactComponent_1.NewReactComponent(UserReactComponent, this.parent, componentType);\n    };\n    return ReactFrameworkComponentWrapper;\n}(ag_grid_community_1.BaseComponentWrapper));\n","// ag-grid-react v29.3.5\n\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n    return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.BeansContext = void 0;\nvar react_1 = __importDefault(require(\"react\"));\nexports.BeansContext = react_1.default.createContext({});\n","// ag-grid-react v29.3.5\n\"use strict\";\nvar __assign = (this && this.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n    if (k2 === undefined) k2 = k;\n    Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n    if (k2 === undefined) k2 = k;\n    o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n    Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n    o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n    if (mod && mod.__esModule) return mod;\n    var result = {};\n    if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n    __setModuleDefault(result, mod);\n    return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar react_1 = __importStar(require(\"react\"));\nvar utils_1 = require(\"../utils\");\nvar beansContext_1 = require(\"../beansContext\");\nvar agGridReactUi_1 = require(\"../agGridReactUi\");\nvar useEffectOnce_1 = require(\"../useEffectOnce\");\nvar DetailCellRenderer = function (props, ref) {\n    var _a = react_1.useContext(beansContext_1.BeansContext), ctrlsFactory = _a.ctrlsFactory, context = _a.context, gridOptionsService = _a.gridOptionsService, resizeObserverService = _a.resizeObserverService, clientSideRowModel = _a.clientSideRowModel, serverSideRowModel = _a.serverSideRowModel;\n    var _b = react_1.useState(new utils_1.CssClasses()), cssClasses = _b[0], setCssClasses = _b[1];\n    var _c = react_1.useState(new utils_1.CssClasses()), gridCssClasses = _c[0], setGridCssClasses = _c[1];\n    var _d = react_1.useState(), detailGridOptions = _d[0], setDetailGridOptions = _d[1];\n    var _e = react_1.useState(), detailRowData = _e[0], setDetailRowData = _e[1];\n    var ctrlRef = react_1.useRef();\n    var eGuiRef = react_1.useRef(null);\n    var topClassName = react_1.useMemo(function () { return cssClasses.toString() + ' ag-details-row'; }, [cssClasses]);\n    var gridClassName = react_1.useMemo(function () { return gridCssClasses.toString() + ' ag-details-grid'; }, [gridCssClasses]);\n    if (ref) {\n        react_1.useImperativeHandle(ref, function () { return ({\n            refresh: function () { return ctrlRef.current.refresh(); }\n        }); });\n    }\n    useEffectOnce_1.useLayoutEffectOnce(function () {\n        if (props.template && typeof props.template === 'string') {\n            console.warn('AG Grid: detailCellRendererParams.template is not supported by React - this only works with frameworks that work against String templates. To change the template, please provide your own React Detail Cell Renderer.');\n        }\n    });\n    useEffectOnce_1.useLayoutEffectOnce(function () {\n        var compProxy = {\n            addOrRemoveCssClass: function (name, on) { return setCssClasses(function (prev) { return prev.setClass(name, on); }); },\n            addOrRemoveDetailGridCssClass: function (name, on) { return setGridCssClasses(function (prev) { return prev.setClass(name, on); }); },\n            setDetailGrid: function (gridOptions) { return setDetailGridOptions(gridOptions); },\n            setRowData: function (rowData) { return setDetailRowData(rowData); },\n            getGui: function () { return eGuiRef.current; }\n        };\n        var ctrl = ctrlsFactory.getInstance('detailCellRenderer');\n        if (!ctrl) {\n            return;\n        } // should never happen, means master/detail module not loaded\n        context.createBean(ctrl);\n        ctrl.init(compProxy, props);\n        ctrlRef.current = ctrl;\n        var resizeObserverDestroyFunc;\n        if (gridOptionsService.is('detailRowAutoHeight')) {\n            var checkRowSizeFunc = function () {\n                // when disposed, current is null, so nothing to do, and the resize observer will\n                // be disposed of soon\n                if (eGuiRef.current == null) {\n                    return;\n                }\n                var clientHeight = eGuiRef.current.clientHeight;\n                // if the UI is not ready, the height can be 0, which we ignore, as otherwise a flicker will occur\n                // as UI goes from the default height, to 0, then to the real height as UI becomes ready. this means\n                // it's not possible for have 0 as auto-height, however this is an improbable use case, as even an\n                // empty detail grid would still have some styling around it giving at least a few pixels.\n                if (clientHeight != null && clientHeight > 0) {\n                    // we do the update in a timeout, to make sure we are not calling from inside the grid\n                    // doing another update\n                    var updateRowHeightFunc = function () {\n                        props.node.setRowHeight(clientHeight);\n                        if (clientSideRowModel) {\n                            clientSideRowModel.onRowHeightChanged();\n                        }\n                        else if (serverSideRowModel) {\n                            serverSideRowModel.onRowHeightChanged();\n                        }\n                    };\n                    setTimeout(updateRowHeightFunc, 0);\n                }\n            };\n            resizeObserverDestroyFunc = resizeObserverService.observeResize(eGuiRef.current, checkRowSizeFunc);\n            checkRowSizeFunc();\n        }\n        return function () {\n            context.destroyBean(ctrl);\n            if (resizeObserverDestroyFunc) {\n                resizeObserverDestroyFunc();\n            }\n        };\n    });\n    var setGridApi = react_1.useCallback(function (api, columnApi) {\n        ctrlRef.current.registerDetailWithMaster(api, columnApi);\n    }, []);\n    return (react_1.default.createElement(\"div\", { className: topClassName, ref: eGuiRef }, detailGridOptions &&\n        react_1.default.createElement(agGridReactUi_1.AgGridReactUi, __assign({ className: gridClassName }, detailGridOptions, { rowData: detailRowData, setGridApi: setGridApi }))));\n};\nexports.default = react_1.forwardRef(DetailCellRenderer);\n","// ag-grid-react v29.3.5\n\"use strict\";\nvar __assign = (this && this.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n    if (k2 === undefined) k2 = k;\n    Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n    if (k2 === undefined) k2 = k;\n    o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n    Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n    o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n    if (mod && mod.__esModule) return mod;\n    var result = {};\n    if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n    __setModuleDefault(result, mod);\n    return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar ag_grid_community_1 = require(\"ag-grid-community\");\nvar react_1 = __importStar(require(\"react\"));\nvar beansContext_1 = require(\"../beansContext\");\nvar jsComp_1 = require(\"../jsComp\");\nvar useEffectOnce_1 = require(\"../useEffectOnce\");\nvar utils_1 = require(\"../utils\");\nvar GroupCellRenderer = react_1.forwardRef(function (props, ref) {\n    var context = react_1.useContext(beansContext_1.BeansContext).context;\n    var eGui = react_1.useRef(null);\n    var eValueRef = react_1.useRef(null);\n    var eCheckboxRef = react_1.useRef(null);\n    var eExpandedRef = react_1.useRef(null);\n    var eContractedRef = react_1.useRef(null);\n    var _a = react_1.useState(), innerCompDetails = _a[0], setInnerCompDetails = _a[1];\n    var _b = react_1.useState(), childCount = _b[0], setChildCount = _b[1];\n    var _c = react_1.useState(), value = _c[0], setValue = _c[1];\n    var _d = react_1.useState(new utils_1.CssClasses()), cssClasses = _d[0], setCssClasses = _d[1];\n    var _e = react_1.useState(new utils_1.CssClasses('ag-hidden')), expandedCssClasses = _e[0], setExpandedCssClasses = _e[1];\n    var _f = react_1.useState(new utils_1.CssClasses('ag-hidden')), contractedCssClasses = _f[0], setContractedCssClasses = _f[1];\n    var _g = react_1.useState(new utils_1.CssClasses('ag-invisible')), checkboxCssClasses = _g[0], setCheckboxCssClasses = _g[1];\n    react_1.useImperativeHandle(ref, function () {\n        return {\n            // force new instance when grid tries to refresh\n            refresh: function () { return false; }\n        };\n    });\n    react_1.useLayoutEffect(function () {\n        return jsComp_1.showJsComp(innerCompDetails, context, eValueRef.current);\n    }, [innerCompDetails]);\n    useEffectOnce_1.useLayoutEffectOnce(function () {\n        var compProxy = {\n            setInnerRenderer: function (details, valueToDisplay) {\n                setInnerCompDetails(details);\n                setValue(valueToDisplay);\n            },\n            setChildCount: function (count) { return setChildCount(count); },\n            addOrRemoveCssClass: function (name, on) { return setCssClasses(function (prev) { return prev.setClass(name, on); }); },\n            setContractedDisplayed: function (displayed) { return setContractedCssClasses(function (prev) { return prev.setClass('ag-hidden', !displayed); }); },\n            setExpandedDisplayed: function (displayed) { return setExpandedCssClasses(function (prev) { return prev.setClass('ag-hidden', !displayed); }); },\n            setCheckboxVisible: function (visible) { return setCheckboxCssClasses(function (prev) { return prev.setClass('ag-invisible', !visible); }); }\n        };\n        var ctrl = context.createBean(new ag_grid_community_1.GroupCellRendererCtrl());\n        ctrl.init(compProxy, eGui.current, eCheckboxRef.current, eExpandedRef.current, eContractedRef.current, GroupCellRenderer, props);\n        return function () { context.destroyBean(ctrl); };\n    });\n    var className = react_1.useMemo(function () { return \"ag-cell-wrapper \" + cssClasses.toString(); }, [cssClasses]);\n    var expandedClassName = react_1.useMemo(function () { return \"ag-group-expanded \" + expandedCssClasses.toString(); }, [expandedCssClasses]);\n    var contractedClassName = react_1.useMemo(function () { return \"ag-group-contracted \" + contractedCssClasses.toString(); }, [contractedCssClasses]);\n    var checkboxClassName = react_1.useMemo(function () { return \"ag-group-checkbox \" + checkboxCssClasses.toString(); }, [checkboxCssClasses]);\n    var useFwRenderer = innerCompDetails && innerCompDetails.componentFromFramework;\n    var FwRenderer = useFwRenderer ? innerCompDetails.componentClass : undefined;\n    var useValue = innerCompDetails == null && value != null;\n    var escapedValue = ag_grid_community_1._.escapeString(value, true);\n    return (react_1.default.createElement(\"span\", __assign({ className: className, ref: eGui }, (!props.colDef ? { role: 'gridcell' } : {})),\n        react_1.default.createElement(\"span\", { className: expandedClassName, ref: eExpandedRef }),\n        react_1.default.createElement(\"span\", { className: contractedClassName, ref: eContractedRef }),\n        react_1.default.createElement(\"span\", { className: checkboxClassName, ref: eCheckboxRef }),\n        react_1.default.createElement(\"span\", { className: \"ag-group-value\", ref: eValueRef },\n            useValue && react_1.default.createElement(react_1.default.Fragment, null, escapedValue),\n            useFwRenderer && react_1.default.createElement(FwRenderer, __assign({}, innerCompDetails.params))),\n        react_1.default.createElement(\"span\", { className: \"ag-group-child-count\" }, childCount)));\n});\n// we do not memo() here, as it would stop the forwardRef working\nexports.default = GroupCellRenderer;\n","// ag-grid-react v29.3.5\n\"use strict\";\nvar __assign = (this && this.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n    if (k2 === undefined) k2 = k;\n    Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n    if (k2 === undefined) k2 = k;\n    o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n    Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n    o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n    if (mod && mod.__esModule) return mod;\n    var result = {};\n    if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n    __setModuleDefault(result, mod);\n    return result;\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n    return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.CellCompState = void 0;\nvar ag_grid_community_1 = require(\"ag-grid-community\");\nvar react_1 = __importStar(require(\"react\"));\nvar utils_1 = require(\"../utils\");\nvar popupEditorComp_1 = __importDefault(require(\"./popupEditorComp\"));\nvar showJsRenderer_1 = __importDefault(require(\"./showJsRenderer\"));\nvar beansContext_1 = require(\"../beansContext\");\nvar jsComp_1 = require(\"../jsComp\");\nvar useEffectOnce_1 = require(\"../useEffectOnce\");\nvar CellCompState;\n(function (CellCompState) {\n    CellCompState[CellCompState[\"ShowValue\"] = 0] = \"ShowValue\";\n    CellCompState[CellCompState[\"EditValue\"] = 1] = \"EditValue\";\n})(CellCompState = exports.CellCompState || (exports.CellCompState = {}));\nvar checkCellEditorDeprecations = function (popup, cellEditor, cellCtrl) {\n    var col = cellCtrl.getColumn();\n    // cellEditor is written to be a popup editor, however colDef.cellEditorPopup is not set\n    if (!popup && cellEditor.isPopup && cellEditor.isPopup()) {\n        var msg_1 = \"AG Grid: Found an issue in column \" + col.getColId() + \". If using React, specify an editor is a popup using colDef.cellEditorPopup=true. AG Grid React cannot depend on the editor component specifying if it's in a popup (via the isPopup() method on the editor), as React needs to know this information BEFORE the component is created.\";\n        ag_grid_community_1._.doOnce(function () { return console.warn(msg_1); }, 'jsEditorComp-isPopup-' + cellCtrl.getColumn().getColId());\n    }\n    // cellEditor is a popup and is trying to position itself the deprecated way\n    if (popup && cellEditor.getPopupPosition && cellEditor.getPopupPosition() != null) {\n        var msg_2 = \"AG Grid: Found an issue in column \" + col.getColId() + \". If using React, specify an editor popup position using colDef.cellEditorPopupPosition=true. AG Grid React cannot depend on the editor component specifying it's position (via the getPopupPosition() method on the editor), as React needs to know this information BEFORE the component is created.\";\n        ag_grid_community_1._.doOnce(function () { return console.warn(msg_2); }, 'jsEditorComp-getPopupPosition-' + cellCtrl.getColumn().getColId());\n    }\n};\nvar jsxEditValue = function (editDetails, setInlineCellEditorRef, setPopupCellEditorRef, eGui, cellCtrl, jsEditorComp) {\n    var compDetails = editDetails.compDetails;\n    var CellEditorClass = compDetails.componentClass;\n    var reactInlineEditor = compDetails.componentFromFramework && !editDetails.popup;\n    var reactPopupEditor = compDetails.componentFromFramework && editDetails.popup;\n    var jsPopupEditor = !compDetails.componentFromFramework && editDetails.popup;\n    return (react_1.default.createElement(react_1.default.Fragment, null,\n        reactInlineEditor && react_1.default.createElement(CellEditorClass, __assign({}, editDetails.compDetails.params, { ref: setInlineCellEditorRef })),\n        reactPopupEditor &&\n            react_1.default.createElement(popupEditorComp_1.default, { editDetails: editDetails, cellCtrl: cellCtrl, eParentCell: eGui, wrappedContent: react_1.default.createElement(CellEditorClass, __assign({}, editDetails.compDetails.params, { ref: setPopupCellEditorRef })) }),\n        jsPopupEditor &&\n            jsEditorComp &&\n            react_1.default.createElement(popupEditorComp_1.default, { editDetails: editDetails, cellCtrl: cellCtrl, eParentCell: eGui, jsChildComp: jsEditorComp })));\n};\nvar jsxShowValue = function (showDetails, key, parentId, cellRendererRef, showCellWrapper, reactCellRendererStateless, setECellValue) {\n    var compDetails = showDetails.compDetails, value = showDetails.value;\n    var noCellRenderer = !compDetails;\n    var reactCellRenderer = compDetails && compDetails.componentFromFramework;\n    var CellRendererClass = compDetails && compDetails.componentClass;\n    // if we didn't do this, objects would cause React error. we depend on objects for things\n    // like the aggregation functions avg and count, which return objects and depend on toString()\n    // getting called.\n    var valueForNoCellRenderer = (value === null || value === void 0 ? void 0 : value.toString) ? value.toString() : value;\n    var bodyJsxFunc = function () { return (react_1.default.createElement(react_1.default.Fragment, null,\n        noCellRenderer && react_1.default.createElement(react_1.default.Fragment, null, valueForNoCellRenderer),\n        reactCellRenderer && !reactCellRendererStateless && react_1.default.createElement(CellRendererClass, __assign({}, compDetails.params, { key: key, ref: cellRendererRef })),\n        reactCellRenderer && reactCellRendererStateless && react_1.default.createElement(CellRendererClass, __assign({}, compDetails.params, { key: key })))); };\n    return (react_1.default.createElement(react_1.default.Fragment, null, showCellWrapper\n        ? (react_1.default.createElement(\"span\", { role: \"presentation\", id: \"cell-\" + parentId, className: \"ag-cell-value\", ref: setECellValue }, bodyJsxFunc()))\n        : bodyJsxFunc()));\n};\nvar CellComp = function (props) {\n    var context = react_1.useContext(beansContext_1.BeansContext).context;\n    var cellCtrl = props.cellCtrl, printLayout = props.printLayout, editingRow = props.editingRow;\n    var _a = react_1.useState(), renderDetails = _a[0], setRenderDetails = _a[1];\n    var _b = react_1.useState(), editDetails = _b[0], setEditDetails = _b[1];\n    var _c = react_1.useState(1), renderKey = _c[0], setRenderKey = _c[1];\n    var _d = react_1.useState(), userStyles = _d[0], setUserStyles = _d[1];\n    var _e = react_1.useState(), tabIndex = _e[0], setTabIndex = _e[1];\n    var _f = react_1.useState(), role = _f[0], setRole = _f[1];\n    var _g = react_1.useState(), colId = _g[0], setColId = _g[1];\n    var _h = react_1.useState(), title = _h[0], setTitle = _h[1];\n    var _j = react_1.useState(false), includeSelection = _j[0], setIncludeSelection = _j[1];\n    var _k = react_1.useState(false), includeRowDrag = _k[0], setIncludeRowDrag = _k[1];\n    var _l = react_1.useState(false), includeDndSource = _l[0], setIncludeDndSource = _l[1];\n    var _m = react_1.useState(), jsEditorComp = _m[0], setJsEditorComp = _m[1];\n    var forceWrapper = react_1.useMemo(function () { return cellCtrl.isForceWrapper(); }, []);\n    var eGui = react_1.useRef(null);\n    var cellRendererRef = react_1.useRef(null);\n    var jsCellRendererRef = react_1.useRef();\n    var cellEditorRef = react_1.useRef();\n    // when setting the ref, we also update the state item to force a re-render\n    var eCellWrapper = react_1.useRef();\n    var _o = react_1.useState(0), cellWrapperVersion = _o[0], setCellWrapperVersion = _o[1];\n    var setCellWrapperRef = react_1.useCallback(function (ref) {\n        eCellWrapper.current = ref;\n        setCellWrapperVersion(function (v) { return v + 1; });\n    }, []);\n    // when setting the ref, we also update the state item to force a re-render\n    var eCellValue = react_1.useRef();\n    var _p = react_1.useState(0), cellValueVersion = _p[0], setCellValueVersion = _p[1];\n    var setCellValueRef = react_1.useCallback(function (ref) {\n        eCellValue.current = ref;\n        setCellValueVersion(function (v) { return v + 1; });\n    }, []);\n    var showTools = renderDetails != null && (includeSelection || includeDndSource || includeRowDrag);\n    var showCellWrapper = forceWrapper || showTools;\n    var setCellEditorRef = react_1.useCallback(function (popup, cellEditor) {\n        cellEditorRef.current = cellEditor;\n        if (cellEditor) {\n            checkCellEditorDeprecations(popup, cellEditor, cellCtrl);\n            var editingCancelledByUserComp = cellEditor.isCancelBeforeStart && cellEditor.isCancelBeforeStart();\n            if (editingCancelledByUserComp) {\n                // we cannot set state inside render, so hack is to do it in next VM turn\n                setTimeout(function () {\n                    cellCtrl.stopEditing(true);\n                    cellCtrl.focusCell(true);\n                });\n            }\n        }\n    }, []);\n    var setPopupCellEditorRef = react_1.useCallback(function (cellRenderer) { return setCellEditorRef(true, cellRenderer); }, []);\n    var setInlineCellEditorRef = react_1.useCallback(function (cellRenderer) { return setCellEditorRef(false, cellRenderer); }, []);\n    var cssClassManager = react_1.useMemo(function () { return new ag_grid_community_1.CssClassManager(function () { return eGui.current; }); }, []);\n    showJsRenderer_1.default(renderDetails, showCellWrapper, eCellValue.current, cellValueVersion, jsCellRendererRef, eGui);\n    // if RenderDetails changed, need to call refresh. This is not our preferred way (the preferred\n    // way for React is just allow the new props to propagate down to the React Cell Renderer)\n    // however we do this for backwards compatibility, as having refresh used to be supported.\n    var lastRenderDetails = react_1.useRef();\n    react_1.useLayoutEffect(function () {\n        var oldDetails = lastRenderDetails.current;\n        var newDetails = renderDetails;\n        lastRenderDetails.current = renderDetails;\n        // if not updating renderDetails, do nothing\n        if (oldDetails == null ||\n            oldDetails.compDetails == null ||\n            newDetails == null ||\n            newDetails.compDetails == null) {\n            return;\n        }\n        var oldCompDetails = oldDetails.compDetails;\n        var newCompDetails = newDetails.compDetails;\n        // if different Cell Renderer, then do nothing, as renderer will be recreated\n        if (oldCompDetails.componentClass != newCompDetails.componentClass) {\n            return;\n        }\n        // if no refresh method, do nothing\n        if (cellRendererRef.current == null || cellRendererRef.current.refresh == null) {\n            return;\n        }\n        var result = cellRendererRef.current.refresh(newCompDetails.params);\n        if (result != true) {\n            // increasing the render key forces the refresh. this is undocumented (for React users,\n            // we don't document the refresh method, instead we tell them to act on new params).\n            // however the GroupCellRenderer has this logic in it and would need a small refactor\n            // to get it working without using refresh() returning false. so this hack staying in,\n            // in React if refresh() is implemented and returns false (or undefined), we force a refresh\n            setRenderKey(function (prev) { return prev + 1; });\n        }\n    }, [renderDetails]);\n    react_1.useLayoutEffect(function () {\n        var doingJsEditor = editDetails && !editDetails.compDetails.componentFromFramework;\n        if (!doingJsEditor) {\n            return;\n        }\n        var compDetails = editDetails.compDetails;\n        var isPopup = editDetails.popup === true;\n        var cellEditor = jsComp_1.createSyncJsComp(compDetails);\n        if (!cellEditor) {\n            return;\n        }\n        var compGui = cellEditor.getGui();\n        setCellEditorRef(isPopup, cellEditor);\n        if (!isPopup) {\n            var parentEl = (forceWrapper ? eCellWrapper : eGui).current;\n            parentEl === null || parentEl === void 0 ? void 0 : parentEl.appendChild(compGui);\n            cellEditor.afterGuiAttached && cellEditor.afterGuiAttached();\n        }\n        setJsEditorComp(cellEditor);\n        return function () {\n            context.destroyBean(cellEditor);\n            setCellEditorRef(isPopup, undefined);\n            setJsEditorComp(undefined);\n            if (compGui && compGui.parentElement) {\n                compGui.parentElement.removeChild(compGui);\n            }\n        };\n    }, [editDetails]);\n    // tool widgets effect\n    react_1.useLayoutEffect(function () {\n        if (!cellCtrl || !context) {\n            return;\n        }\n        if (!eCellWrapper.current || !showCellWrapper) {\n            return;\n        }\n        var destroyFuncs = [];\n        var addComp = function (comp) {\n            if (comp) {\n                var eGui_1 = comp.getGui();\n                eCellWrapper.current.insertAdjacentElement('afterbegin', eGui_1);\n                destroyFuncs.push(function () {\n                    context.destroyBean(comp);\n                    ag_grid_community_1._.removeFromParent(eGui_1);\n                });\n            }\n            return comp;\n        };\n        if (includeSelection) {\n            var checkboxSelectionComp = cellCtrl.createSelectionCheckbox();\n            addComp(checkboxSelectionComp);\n        }\n        if (includeDndSource) {\n            addComp(cellCtrl.createDndSource());\n        }\n        if (includeRowDrag) {\n            addComp(cellCtrl.createRowDragComp());\n        }\n        return function () { return destroyFuncs.forEach(function (f) { return f(); }); };\n    }, [showCellWrapper, includeDndSource, includeRowDrag, includeSelection, cellWrapperVersion]);\n    // we use layout effect here as we want to synchronously process setComp and it's side effects\n    // to ensure the component is fully initialised prior to the first browser paint. See AG-7018.\n    useEffectOnce_1.useLayoutEffectOnce(function () {\n        if (!cellCtrl) {\n            return;\n        }\n        var compProxy = {\n            addOrRemoveCssClass: function (name, on) { return cssClassManager.addOrRemoveCssClass(name, on); },\n            setUserStyles: function (styles) { return setUserStyles(styles); },\n            getFocusableElement: function () { return eGui.current; },\n            setTabIndex: function (tabIndex) { return setTabIndex(tabIndex); },\n            setRole: function (role) { return setRole(role); },\n            setColId: function (colId) { return setColId(colId); },\n            setTitle: function (title) { return setTitle(title); },\n            setIncludeSelection: function (include) { return setIncludeSelection(include); },\n            setIncludeRowDrag: function (include) { return setIncludeRowDrag(include); },\n            setIncludeDndSource: function (include) { return setIncludeDndSource(include); },\n            getCellEditor: function () { return cellEditorRef.current || null; },\n            getCellRenderer: function () { return cellRendererRef.current ? cellRendererRef.current : jsCellRendererRef.current; },\n            getParentOfValue: function () { return eCellValue.current ? eCellValue.current : eCellWrapper.current ? eCellWrapper.current : eGui.current; },\n            setRenderDetails: function (compDetails, value, force) {\n                setRenderDetails({\n                    value: value,\n                    compDetails: compDetails,\n                    force: force\n                });\n            },\n            setEditDetails: function (compDetails, popup, popupPosition) {\n                if (compDetails) {\n                    // start editing\n                    setEditDetails({\n                        compDetails: compDetails,\n                        popup: popup,\n                        popupPosition: popupPosition\n                    });\n                    if (!popup) {\n                        setRenderDetails(undefined);\n                    }\n                }\n                else {\n                    // stop editing\n                    setEditDetails(undefined);\n                }\n            }\n        };\n        var cellWrapperOrUndefined = eCellWrapper.current || undefined;\n        cellCtrl.setComp(compProxy, eGui.current, cellWrapperOrUndefined, printLayout, editingRow);\n    });\n    var reactCellRendererStateless = react_1.useMemo(function () {\n        var res = renderDetails &&\n            renderDetails.compDetails &&\n            renderDetails.compDetails.componentFromFramework &&\n            utils_1.isComponentStateless(renderDetails.compDetails.componentClass);\n        return !!res;\n    }, [renderDetails]);\n    react_1.useEffect(function () {\n        var _a;\n        if (!eGui.current) {\n            return;\n        }\n        cssClassManager.addOrRemoveCssClass('ag-cell-value', !showCellWrapper);\n        cssClassManager.addOrRemoveCssClass('ag-cell-inline-editing', !!editDetails && !editDetails.popup);\n        cssClassManager.addOrRemoveCssClass('ag-cell-popup-editing', !!editDetails && !!editDetails.popup);\n        cssClassManager.addOrRemoveCssClass('ag-cell-not-inline-editing', !editDetails || !!editDetails.popup);\n        (_a = cellCtrl.getRowCtrl()) === null || _a === void 0 ? void 0 : _a.setInlineEditingCss(!!editDetails);\n    });\n    var cellInstanceId = react_1.useMemo(function () { return cellCtrl.getInstanceId(); }, []);\n    var showContents = function () { return (react_1.default.createElement(react_1.default.Fragment, null,\n        (renderDetails != null && jsxShowValue(renderDetails, renderKey, cellInstanceId, cellRendererRef, showCellWrapper, reactCellRendererStateless, setCellValueRef)),\n        (editDetails != null && jsxEditValue(editDetails, setInlineCellEditorRef, setPopupCellEditorRef, eGui.current, cellCtrl, jsEditorComp)))); };\n    return (react_1.default.createElement(\"div\", { ref: eGui, style: userStyles, tabIndex: tabIndex, role: role, \"col-id\": colId, title: title }, showCellWrapper\n        ? (react_1.default.createElement(\"div\", { className: \"ag-cell-wrapper\", role: \"presentation\", ref: setCellWrapperRef }, showContents()))\n        : showContents()));\n};\nexports.default = react_1.memo(CellComp);\n","// ag-grid-react v29.3.5\n\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n    if (k2 === undefined) k2 = k;\n    Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n    if (k2 === undefined) k2 = k;\n    o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n    Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n    o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n    if (mod && mod.__esModule) return mod;\n    var result = {};\n    if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n    __setModuleDefault(result, mod);\n    return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar ag_grid_community_1 = require(\"ag-grid-community\");\nvar react_1 = __importStar(require(\"react\"));\nvar react_dom_1 = require(\"react-dom\");\nvar beansContext_1 = require(\"../beansContext\");\nvar useEffectOnce_1 = require(\"../useEffectOnce\");\nvar PopupEditorComp = function (props) {\n    var _a = react_1.useState(), popupEditorWrapper = _a[0], setPopupEditorWrapper = _a[1];\n    var _b = react_1.useContext(beansContext_1.BeansContext), context = _b.context, popupService = _b.popupService, localeService = _b.localeService, gridOptionsService = _b.gridOptionsService;\n    useEffectOnce_1.useLayoutEffectOnce(function () {\n        var editDetails = props.editDetails, cellCtrl = props.cellCtrl, eParentCell = props.eParentCell;\n        var compDetails = editDetails.compDetails;\n        var useModelPopup = gridOptionsService.is('stopEditingWhenCellsLoseFocus');\n        var wrapper = context.createBean(new ag_grid_community_1.PopupEditorWrapper(compDetails.params));\n        var ePopupGui = wrapper.getGui();\n        if (props.jsChildComp) {\n            var eChildGui = props.jsChildComp.getGui();\n            if (eChildGui) {\n                ePopupGui.appendChild(eChildGui);\n            }\n        }\n        var positionParams = {\n            column: cellCtrl.getColumn(),\n            rowNode: cellCtrl.getRowNode(),\n            type: 'popupCellEditor',\n            eventSource: eParentCell,\n            ePopup: ePopupGui,\n            position: editDetails.popupPosition,\n            keepWithinBounds: true\n        };\n        var positionCallback = popupService.positionPopupByComponent.bind(popupService, positionParams);\n        var translate = localeService.getLocaleTextFunc();\n        var addPopupRes = popupService.addPopup({\n            modal: useModelPopup,\n            eChild: ePopupGui,\n            closeOnEsc: true,\n            closedCallback: function () { cellCtrl.onPopupEditorClosed(); },\n            anchorToElement: eParentCell,\n            positionCallback: positionCallback,\n            ariaLabel: translate('ariaLabelCellEditor', 'Cell Editor')\n        });\n        var hideEditorPopup = addPopupRes ? addPopupRes.hideFunc : undefined;\n        setPopupEditorWrapper(wrapper);\n        props.jsChildComp && props.jsChildComp.afterGuiAttached && props.jsChildComp.afterGuiAttached();\n        return function () {\n            if (hideEditorPopup != null) {\n                hideEditorPopup();\n            }\n            context.destroyBean(wrapper);\n        };\n    });\n    return (react_1.default.createElement(react_1.default.Fragment, null, popupEditorWrapper && props.wrappedContent\n        && react_dom_1.createPortal(props.wrappedContent, popupEditorWrapper.getGui())));\n};\nexports.default = react_1.memo(PopupEditorComp);\n","// ag-grid-react v29.3.5\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar react_1 = require(\"react\");\nvar beansContext_1 = require(\"../beansContext\");\nvar useEffectOnce_1 = require(\"../useEffectOnce\");\nvar useJsCellRenderer = function (showDetails, showTools, eCellValue, cellValueVersion, jsCellRendererRef, eGui) {\n    var _a = react_1.useContext(beansContext_1.BeansContext), context = _a.context, userComponentFactory = _a.userComponentFactory;\n    var destroyCellRenderer = react_1.useCallback(function () {\n        var comp = jsCellRendererRef.current;\n        if (!comp) {\n            return;\n        }\n        var compGui = comp.getGui();\n        if (compGui && compGui.parentElement) {\n            compGui.parentElement.removeChild(compGui);\n        }\n        context.destroyBean(comp);\n        jsCellRendererRef.current = undefined;\n    }, []);\n    // create or refresh JS cell renderer\n    react_1.useEffect(function () {\n        var showValue = showDetails != null;\n        var jsCompDetails = showDetails && showDetails.compDetails && !showDetails.compDetails.componentFromFramework;\n        var waitingForToolsSetup = showTools && eCellValue == null;\n        var showComp = showValue && jsCompDetails && !waitingForToolsSetup;\n        // if not showing comp, destroy any existing one and return\n        if (!showComp) {\n            destroyCellRenderer();\n            return;\n        }\n        var compDetails = showDetails.compDetails;\n        if (jsCellRendererRef.current) {\n            // attempt refresh if refresh method exists\n            var comp_1 = jsCellRendererRef.current;\n            var attemptRefresh = comp_1.refresh != null && showDetails.force == false;\n            var refreshResult = attemptRefresh ? comp_1.refresh(compDetails.params) : false;\n            var refreshWorked = refreshResult === true || refreshResult === undefined;\n            // if refresh worked, nothing else to do\n            if (refreshWorked) {\n                return;\n            }\n            // if refresh didn't work, we destroy it and continue, so new cell renderer created below\n            destroyCellRenderer();\n        }\n        var promise = compDetails.newAgStackInstance();\n        ;\n        if (!promise) {\n            return;\n        }\n        var comp = promise.resolveNow(null, function (x) { return x; }); // js comps are never async\n        if (!comp) {\n            return;\n        }\n        var compGui = comp.getGui();\n        if (!compGui) {\n            return;\n        }\n        var parent = showTools ? eCellValue : eGui.current;\n        parent.appendChild(compGui);\n        jsCellRendererRef.current = comp;\n    }, [showDetails, showTools, cellValueVersion]);\n    // this effect makes sure destroyCellRenderer gets called when the\n    // component is destroyed. as the other effect only updates when there\n    // is a change in state\n    useEffectOnce_1.useEffectOnce(function () {\n        return destroyCellRenderer;\n    });\n};\nexports.default = useJsCellRenderer;\n","// ag-grid-react v29.3.5\n\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n    if (k2 === undefined) k2 = k;\n    Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n    if (k2 === undefined) k2 = k;\n    o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n    Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n    o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n    if (mod && mod.__esModule) return mod;\n    var result = {};\n    if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n    __setModuleDefault(result, mod);\n    return result;\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n    return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar ag_grid_community_1 = require(\"ag-grid-community\");\nvar react_1 = __importStar(require(\"react\"));\nvar beansContext_1 = require(\"./beansContext\");\nvar gridHeaderComp_1 = __importDefault(require(\"./header/gridHeaderComp\"));\nvar reactComment_1 = __importDefault(require(\"./reactComment\"));\nvar rowContainerComp_1 = __importDefault(require(\"./rows/rowContainerComp\"));\nvar useEffectOnce_1 = require(\"./useEffectOnce\");\nvar utils_1 = require(\"./utils\");\nvar GridBodyComp = function () {\n    var _a = react_1.useContext(beansContext_1.BeansContext), context = _a.context, agStackComponentsRegistry = _a.agStackComponentsRegistry, resizeObserverService = _a.resizeObserverService;\n    var _b = react_1.useState(''), rowAnimationClass = _b[0], setRowAnimationClass = _b[1];\n    var _c = react_1.useState(0), topHeight = _c[0], setTopHeight = _c[1];\n    var _d = react_1.useState(0), bottomHeight = _d[0], setBottomHeight = _d[1];\n    var _e = react_1.useState('0px'), stickyTopHeight = _e[0], setStickyTopHeight = _e[1];\n    var _f = react_1.useState('0px'), stickyTopTop = _f[0], setStickyTopTop = _f[1];\n    var _g = react_1.useState('100%'), stickyTopWidth = _g[0], setStickyTopWidth = _g[1];\n    var _h = react_1.useState(''), topDisplay = _h[0], setTopDisplay = _h[1];\n    var _j = react_1.useState(''), bottomDisplay = _j[0], setBottomDisplay = _j[1];\n    var _k = react_1.useState(null), forceVerticalScrollClass = _k[0], setForceVerticalScrollClass = _k[1];\n    var _l = react_1.useState(''), topAndBottomOverflowY = _l[0], setTopAndBottomOverflowY = _l[1];\n    var _m = react_1.useState(null), cellSelectableCss = _m[0], setCellSelectableCss = _m[1];\n    // we initialise layoutClass to 'ag-layout-normal', because if we don't, the comp will initially\n    // render with no width (as ag-layout-normal sets width to 0, which is needed for flex) which\n    // gives the grid a massive width, which then renders a massive amount of columns. this problem\n    // is due to React been async, for the non-async version (ie when not using React) this is not a\n    // problem as the UI will finish initialising before we set data.\n    var _o = react_1.useState('ag-layout-normal'), layoutClass = _o[0], setLayoutClass = _o[1];\n    var cssClassManager = react_1.useMemo(function () { return new ag_grid_community_1.CssClassManager(function () { return eRoot.current; }); }, []);\n    var eRoot = react_1.useRef(null);\n    var eTop = react_1.useRef(null);\n    var eStickyTop = react_1.useRef(null);\n    var eBody = react_1.useRef(null);\n    var eBodyViewport = react_1.useRef(null);\n    var eBottom = react_1.useRef(null);\n    reactComment_1.default(' AG Grid Body ', eRoot);\n    reactComment_1.default(' AG Pinned Top ', eTop);\n    reactComment_1.default(' AG Sticky Top ', eStickyTop);\n    reactComment_1.default(' AG Middle ', eBodyViewport);\n    reactComment_1.default(' AG Pinned Bottom ', eBottom);\n    useEffectOnce_1.useLayoutEffectOnce(function () {\n        var beansToDestroy = [];\n        var destroyFuncs = [];\n        if (!context) {\n            return;\n        }\n        var newComp = function (tag) {\n            var CompClass = agStackComponentsRegistry.getComponentClass(tag);\n            var comp = context.createBean(new CompClass());\n            beansToDestroy.push(comp);\n            return comp;\n        };\n        eRoot.current.appendChild(document.createComment(' AG Fake Horizontal Scroll '));\n        eRoot.current.appendChild(newComp('AG-FAKE-HORIZONTAL-SCROLL').getGui());\n        eRoot.current.appendChild(document.createComment(' AG Overlay Wrapper '));\n        eRoot.current.appendChild(newComp('AG-OVERLAY-WRAPPER').getGui());\n        eBody.current.appendChild(document.createComment(' AG Fake Vertical Scroll '));\n        eBody.current.appendChild(newComp('AG-FAKE-VERTICAL-SCROLL').getGui());\n        var compProxy = {\n            setRowAnimationCssOnBodyViewport: setRowAnimationClass,\n            setColumnCount: function (count) { return ag_grid_community_1._.setAriaColCount(eRoot.current, count); },\n            setRowCount: function (count) { return ag_grid_community_1._.setAriaRowCount(eRoot.current, count); },\n            setTopHeight: setTopHeight,\n            setBottomHeight: setBottomHeight,\n            setStickyTopHeight: setStickyTopHeight,\n            setStickyTopTop: setStickyTopTop,\n            setStickyTopWidth: setStickyTopWidth,\n            setTopDisplay: setTopDisplay,\n            setBottomDisplay: setBottomDisplay,\n            setColumnMovingCss: function (cssClass, flag) { return cssClassManager.addOrRemoveCssClass(cssClass, flag); },\n            updateLayoutClasses: setLayoutClass,\n            setAlwaysVerticalScrollClass: setForceVerticalScrollClass,\n            setPinnedTopBottomOverflowY: setTopAndBottomOverflowY,\n            setCellSelectableCss: setCellSelectableCss,\n            setBodyViewportWidth: function (width) { return eBodyViewport.current.style.width = width; },\n            registerBodyViewportResizeListener: function (listener) {\n                var unsubscribeFromResize = resizeObserverService.observeResize(eBodyViewport.current, listener);\n                destroyFuncs.push(function () { return unsubscribeFromResize(); });\n            }\n        };\n        var ctrl = context.createBean(new ag_grid_community_1.GridBodyCtrl());\n        beansToDestroy.push(ctrl);\n        ctrl.setComp(compProxy, eRoot.current, eBodyViewport.current, eTop.current, eBottom.current, eStickyTop.current);\n        return function () {\n            context.destroyBeans(beansToDestroy);\n            destroyFuncs.forEach(function (f) { return f(); });\n        };\n    });\n    var rootClasses = react_1.useMemo(function () {\n        return utils_1.classesList('ag-root', 'ag-unselectable', layoutClass);\n    }, [layoutClass]);\n    var bodyViewportClasses = react_1.useMemo(function () {\n        return utils_1.classesList('ag-body-viewport', rowAnimationClass, layoutClass, forceVerticalScrollClass, cellSelectableCss);\n    }, [rowAnimationClass, layoutClass, forceVerticalScrollClass, cellSelectableCss]);\n    var bodyClasses = react_1.useMemo(function () {\n        return utils_1.classesList('ag-body', layoutClass);\n    }, [layoutClass]);\n    var bodyClipperClasses = react_1.useMemo(function () {\n        return utils_1.classesList('ag-body-clipper', layoutClass);\n    }, [layoutClass]);\n    var topClasses = react_1.useMemo(function () {\n        return utils_1.classesList('ag-floating-top', cellSelectableCss);\n    }, [cellSelectableCss]);\n    var stickyTopClasses = react_1.useMemo(function () {\n        return utils_1.classesList('ag-sticky-top', cellSelectableCss);\n    }, [cellSelectableCss]);\n    var bottomClasses = react_1.useMemo(function () {\n        return utils_1.classesList('ag-floating-bottom', cellSelectableCss);\n    }, [cellSelectableCss]);\n    var topStyle = react_1.useMemo(function () { return ({\n        height: topHeight,\n        minHeight: topHeight,\n        display: topDisplay,\n        overflowY: topAndBottomOverflowY\n    }); }, [topHeight, topDisplay, topAndBottomOverflowY]);\n    var stickyTopStyle = react_1.useMemo(function () { return ({\n        height: stickyTopHeight,\n        top: stickyTopTop,\n        width: stickyTopWidth\n    }); }, [stickyTopHeight, stickyTopTop, stickyTopWidth]);\n    var bottomStyle = react_1.useMemo(function () { return ({\n        height: bottomHeight,\n        minHeight: bottomHeight,\n        display: bottomDisplay,\n        overflowY: topAndBottomOverflowY\n    }); }, [bottomHeight, bottomDisplay, topAndBottomOverflowY]);\n    var createRowContainer = function (container) { return react_1.default.createElement(rowContainerComp_1.default, { name: container, key: container + \"-container\" }); };\n    var createSection = function (_a) {\n        var section = _a.section, children = _a.children, className = _a.className, style = _a.style;\n        return (react_1.default.createElement(\"div\", { ref: section, className: className, role: \"presentation\", style: style }, children.map(createRowContainer)));\n    };\n    return (react_1.default.createElement(\"div\", { ref: eRoot, className: rootClasses, role: \"treegrid\" },\n        react_1.default.createElement(gridHeaderComp_1.default, null),\n        createSection({ section: eTop, className: topClasses, style: topStyle, children: [\n                ag_grid_community_1.RowContainerName.TOP_LEFT,\n                ag_grid_community_1.RowContainerName.TOP_CENTER,\n                ag_grid_community_1.RowContainerName.TOP_RIGHT,\n                ag_grid_community_1.RowContainerName.TOP_FULL_WIDTH,\n            ] }),\n        react_1.default.createElement(\"div\", { className: bodyClasses, ref: eBody, role: \"presentation\" },\n            react_1.default.createElement(\"div\", { className: bodyClipperClasses, role: \"presentation\" }, createSection({ section: eBodyViewport, className: bodyViewportClasses,\n                children: [\n                    ag_grid_community_1.RowContainerName.LEFT,\n                    ag_grid_community_1.RowContainerName.CENTER,\n                    ag_grid_community_1.RowContainerName.RIGHT,\n                    ag_grid_community_1.RowContainerName.FULL_WIDTH,\n                ] }))),\n        createSection({ section: eStickyTop, className: stickyTopClasses, style: stickyTopStyle, children: [\n                ag_grid_community_1.RowContainerName.STICKY_TOP_LEFT,\n                ag_grid_community_1.RowContainerName.STICKY_TOP_CENTER,\n                ag_grid_community_1.RowContainerName.STICKY_TOP_RIGHT,\n                ag_grid_community_1.RowContainerName.STICKY_TOP_FULL_WIDTH,\n            ] }),\n        createSection({ section: eBottom, className: bottomClasses, style: bottomStyle, children: [\n                ag_grid_community_1.RowContainerName.BOTTOM_LEFT,\n                ag_grid_community_1.RowContainerName.BOTTOM_CENTER,\n                ag_grid_community_1.RowContainerName.BOTTOM_RIGHT,\n                ag_grid_community_1.RowContainerName.BOTTOM_FULL_WIDTH,\n            ] })));\n};\nexports.default = react_1.memo(GridBodyComp);\n","// ag-grid-react v29.3.5\n\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n    if (k2 === undefined) k2 = k;\n    Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n    if (k2 === undefined) k2 = k;\n    o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n    Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n    o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n    if (mod && mod.__esModule) return mod;\n    var result = {};\n    if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n    __setModuleDefault(result, mod);\n    return result;\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n    return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar ag_grid_community_1 = require(\"ag-grid-community\");\nvar react_1 = __importStar(require(\"react\"));\nvar beansContext_1 = require(\"./beansContext\");\nvar gridBodyComp_1 = __importDefault(require(\"./gridBodyComp\"));\nvar reactComment_1 = __importDefault(require(\"./reactComment\"));\nvar tabGuardComp_1 = __importDefault(require(\"./tabGuardComp\"));\nvar useEffectOnce_1 = require(\"./useEffectOnce\");\nvar utils_1 = require(\"./utils\");\nvar GridComp = function (_a) {\n    var context = _a.context;\n    var _b = react_1.useState(''), rtlClass = _b[0], setRtlClass = _b[1];\n    var _c = react_1.useState(''), keyboardFocusClass = _c[0], setKeyboardFocusClass = _c[1];\n    var _d = react_1.useState(''), layoutClass = _d[0], setLayoutClass = _d[1];\n    var _e = react_1.useState(null), cursor = _e[0], setCursor = _e[1];\n    var _f = react_1.useState(null), userSelect = _f[0], setUserSelect = _f[1];\n    var _g = react_1.useState(false), initialised = _g[0], setInitialised = _g[1];\n    var _h = react_1.useState(), tabGuardReady = _h[0], setTabGuardReady = _h[1];\n    var gridCtrlRef = react_1.useRef(null);\n    var eRootWrapperRef = react_1.useRef(null);\n    var tabGuardRef = react_1.useRef();\n    var eGridBodyParentRef = react_1.useRef(null);\n    var focusInnerElementRef = react_1.useRef(function () { return undefined; });\n    var onTabKeyDown = react_1.useCallback(function () { return undefined; }, []);\n    var beans = react_1.useMemo(function () { return context.getBean('beans'); }, []);\n    reactComment_1.default(' AG Grid ', eRootWrapperRef);\n    // create shared controller.\n    useEffectOnce_1.useLayoutEffectOnce(function () {\n        var currentController = gridCtrlRef.current = context.createBean(new ag_grid_community_1.GridCtrl());\n        return function () {\n            context.destroyBean(currentController);\n            gridCtrlRef.current = null;\n        };\n    });\n    // initialise the UI\n    useEffectOnce_1.useLayoutEffectOnce(function () {\n        var gridCtrl = gridCtrlRef.current;\n        focusInnerElementRef.current = gridCtrl.focusInnerElement.bind(gridCtrl);\n        var compProxy = {\n            destroyGridUi: function () { },\n            setRtlClass: setRtlClass,\n            addOrRemoveKeyboardFocusClass: function (addOrRemove) { return setKeyboardFocusClass(addOrRemove ? ag_grid_community_1.FocusService.AG_KEYBOARD_FOCUS : ''); },\n            forceFocusOutOfContainer: function () {\n                tabGuardRef.current.forceFocusOutOfContainer();\n            },\n            updateLayoutClasses: setLayoutClass,\n            getFocusableContainers: function () {\n                var els = [];\n                var gridBodyCompEl = eRootWrapperRef.current.querySelector('.ag-root');\n                var sideBarEl = eRootWrapperRef.current.querySelector('.ag-side-bar:not(.ag-hidden)');\n                if (gridBodyCompEl) {\n                    els.push(gridBodyCompEl);\n                }\n                if (sideBarEl) {\n                    els.push(sideBarEl);\n                }\n                return els;\n            },\n            setCursor: setCursor,\n            setUserSelect: setUserSelect\n        };\n        gridCtrl.setComp(compProxy, eRootWrapperRef.current, eRootWrapperRef.current);\n        setInitialised(true);\n    });\n    // initialise the extra components\n    react_1.useEffect(function () {\n        if (!tabGuardReady) {\n            return;\n        }\n        var gridCtrl = gridCtrlRef.current;\n        var beansToDestroy = [];\n        var agStackComponentsRegistry = beans.agStackComponentsRegistry;\n        var HeaderDropZonesClass = agStackComponentsRegistry.getComponentClass('AG-GRID-HEADER-DROP-ZONES');\n        var SideBarClass = agStackComponentsRegistry.getComponentClass('AG-SIDE-BAR');\n        var StatusBarClass = agStackComponentsRegistry.getComponentClass('AG-STATUS-BAR');\n        var WatermarkClass = agStackComponentsRegistry.getComponentClass('AG-WATERMARK');\n        var PaginationClass = agStackComponentsRegistry.getComponentClass('AG-PAGINATION');\n        var additionalEls = [];\n        var eRootWrapper = eRootWrapperRef.current;\n        var eGridBodyParent = eGridBodyParentRef.current;\n        if (gridCtrl.showDropZones() && HeaderDropZonesClass) {\n            var headerDropZonesComp = context.createBean(new HeaderDropZonesClass());\n            var eGui = headerDropZonesComp.getGui();\n            eRootWrapper.insertAdjacentElement('afterbegin', eGui);\n            additionalEls.push(eGui);\n            beansToDestroy.push(headerDropZonesComp);\n        }\n        if (gridCtrl.showSideBar() && SideBarClass) {\n            var sideBarComp = context.createBean(new SideBarClass());\n            var eGui = sideBarComp.getGui();\n            var bottomTabGuard = eGridBodyParent.querySelector('.ag-tab-guard-bottom');\n            if (bottomTabGuard) {\n                bottomTabGuard.insertAdjacentElement('beforebegin', eGui);\n                additionalEls.push(eGui);\n            }\n            beansToDestroy.push(sideBarComp);\n        }\n        if (gridCtrl.showStatusBar() && StatusBarClass) {\n            var statusBarComp = context.createBean(new StatusBarClass());\n            var eGui = statusBarComp.getGui();\n            eRootWrapper.insertAdjacentElement('beforeend', eGui);\n            additionalEls.push(eGui);\n            beansToDestroy.push(statusBarComp);\n        }\n        if (PaginationClass) {\n            var paginationComp = context.createBean(new PaginationClass());\n            var eGui = paginationComp.getGui();\n            eRootWrapper.insertAdjacentElement('beforeend', eGui);\n            additionalEls.push(eGui);\n            beansToDestroy.push(paginationComp);\n        }\n        if (gridCtrl.showWatermark() && WatermarkClass) {\n            var watermarkComp = context.createBean(new WatermarkClass());\n            var eGui = watermarkComp.getGui();\n            eRootWrapper.insertAdjacentElement('beforeend', eGui);\n            additionalEls.push(eGui);\n            beansToDestroy.push(watermarkComp);\n        }\n        return function () {\n            context.destroyBeans(beansToDestroy);\n            additionalEls.forEach(function (el) {\n                if (el.parentElement) {\n                    el.parentElement.removeChild(el);\n                }\n            });\n        };\n    }, [tabGuardReady]);\n    var rootWrapperClasses = react_1.useMemo(function () { return utils_1.classesList('ag-root-wrapper', rtlClass, keyboardFocusClass, layoutClass); }, [rtlClass, keyboardFocusClass, layoutClass]);\n    var rootWrapperBodyClasses = react_1.useMemo(function () { return utils_1.classesList('ag-root-wrapper-body', 'ag-focus-managed', layoutClass); }, [layoutClass]);\n    var topStyle = react_1.useMemo(function () { return ({\n        userSelect: userSelect != null ? userSelect : '',\n        WebkitUserSelect: userSelect != null ? userSelect : '',\n        cursor: cursor != null ? cursor : ''\n    }); }, [userSelect, cursor]);\n    var eGridBodyParent = eGridBodyParentRef.current;\n    var setTabGuardCompRef = react_1.useCallback(function (ref) {\n        tabGuardRef.current = ref;\n        setTabGuardReady(true);\n    }, []);\n    return (react_1.default.createElement(\"div\", { ref: eRootWrapperRef, className: rootWrapperClasses, style: topStyle, role: \"presentation\" },\n        react_1.default.createElement(\"div\", { className: rootWrapperBodyClasses, ref: eGridBodyParentRef, role: \"presentation\" }, initialised && eGridBodyParent &&\n            react_1.default.createElement(beansContext_1.BeansContext.Provider, { value: beans },\n                react_1.default.createElement(tabGuardComp_1.default, { ref: setTabGuardCompRef, eFocusableElement: eGridBodyParent, onTabKeyDown: onTabKeyDown, gridCtrl: gridCtrlRef.current }, // we wait for initialised before rending the children, so GridComp has created and registered with it's\n                // GridCtrl before we create the child GridBodyComp. Otherwise the GridBodyComp would initialise first,\n                // before we have set the the Layout CSS classes, causing the GridBodyComp to render rows to a grid that\n                // doesn't have it's height specified, which would result if all the rows getting rendered (and if many rows,\n                // hangs the UI)\n                react_1.default.createElement(gridBodyComp_1.default, null))))));\n};\nexports.default = react_1.memo(GridComp);\n","// ag-grid-react v29.3.5\n\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n    if (k2 === undefined) k2 = k;\n    Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n    if (k2 === undefined) k2 = k;\n    o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n    Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n    o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n    if (mod && mod.__esModule) return mod;\n    var result = {};\n    if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n    __setModuleDefault(result, mod);\n    return result;\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n    return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar react_1 = __importStar(require(\"react\"));\nvar beansContext_1 = require(\"../beansContext\");\nvar ag_grid_community_1 = require(\"ag-grid-community\");\nvar utils_1 = require(\"../utils\");\nvar headerRowContainerComp_1 = __importDefault(require(\"./headerRowContainerComp\"));\nvar useEffectOnce_1 = require(\"../useEffectOnce\");\nvar GridHeaderComp = function () {\n    var _a = react_1.useState(new utils_1.CssClasses()), cssClasses = _a[0], setCssClasses = _a[1];\n    var _b = react_1.useState(), height = _b[0], setHeight = _b[1];\n    var context = react_1.useContext(beansContext_1.BeansContext).context;\n    var eGui = react_1.useRef(null);\n    useEffectOnce_1.useLayoutEffectOnce(function () {\n        var compProxy = {\n            addOrRemoveCssClass: function (name, on) { return setCssClasses(function (prev) { return prev.setClass(name, on); }); },\n            setHeightAndMinHeight: function (height) { return setHeight(height); }\n        };\n        var ctrl = context.createBean(new ag_grid_community_1.GridHeaderCtrl());\n        ctrl.setComp(compProxy, eGui.current, eGui.current);\n        return function () {\n            context.destroyBean(ctrl);\n        };\n    });\n    var className = react_1.useMemo(function () {\n        var res = cssClasses.toString();\n        return 'ag-header ' + res;\n    }, [cssClasses]);\n    var style = react_1.useMemo(function () { return ({\n        height: height,\n        minHeight: height\n    }); }, [height]);\n    return (react_1.default.createElement(\"div\", { ref: eGui, className: className, style: style, role: \"presentation\" },\n        react_1.default.createElement(headerRowContainerComp_1.default, { pinned: 'left' }),\n        react_1.default.createElement(headerRowContainerComp_1.default, { pinned: null }),\n        react_1.default.createElement(headerRowContainerComp_1.default, { pinned: 'right' })));\n};\nexports.default = react_1.memo(GridHeaderComp);\n","// ag-grid-react v29.3.5\n\"use strict\";\nvar __assign = (this && this.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n    if (k2 === undefined) k2 = k;\n    Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n    if (k2 === undefined) k2 = k;\n    o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n    Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n    o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n    if (mod && mod.__esModule) return mod;\n    var result = {};\n    if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n    __setModuleDefault(result, mod);\n    return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar react_1 = __importStar(require(\"react\"));\nvar beansContext_1 = require(\"../beansContext\");\nvar ag_grid_community_1 = require(\"ag-grid-community\");\nvar utils_1 = require(\"../utils\");\nvar jsComp_1 = require(\"../jsComp\");\nvar useEffectOnce_1 = require(\"../useEffectOnce\");\nvar HeaderCellComp = function (props) {\n    var context = react_1.useContext(beansContext_1.BeansContext).context;\n    var _a = react_1.useState(), title = _a[0], setTitle = _a[1];\n    var _b = react_1.useState(), colId = _b[0], setColId = _b[1];\n    var _c = react_1.useState(), ariaSort = _c[0], setAriaSort = _c[1];\n    var _d = react_1.useState(), ariaDescription = _d[0], setAriaDescription = _d[1];\n    var _e = react_1.useState(), userCompDetails = _e[0], setUserCompDetails = _e[1];\n    var eGui = react_1.useRef(null);\n    var eResize = react_1.useRef(null);\n    var eHeaderCompWrapper = react_1.useRef(null);\n    var userCompRef = react_1.useRef();\n    var ctrl = props.ctrl;\n    var cssClassManager = react_1.useMemo(function () { return new ag_grid_community_1.CssClassManager(function () { return eGui.current; }); }, []);\n    useEffectOnce_1.useLayoutEffectOnce(function () {\n        var compProxy = {\n            setWidth: function (width) { return eGui.current.style.width = width; },\n            addOrRemoveCssClass: function (name, on) { return cssClassManager.addOrRemoveCssClass(name, on); },\n            setColId: function (id) { return setColId(id); },\n            setTitle: function (title) { return setTitle(title); },\n            setAriaDescription: function (description) { return setAriaDescription(description); },\n            setAriaSort: function (sort) { return setAriaSort(sort); },\n            setUserCompDetails: function (compDetails) { return setUserCompDetails(compDetails); },\n            getUserCompInstance: function () { return userCompRef.current || undefined; }\n        };\n        ctrl.setComp(compProxy, eGui.current, eResize.current, eHeaderCompWrapper.current);\n        var selectAllGui = ctrl.getSelectAllGui();\n        eResize.current.insertAdjacentElement('afterend', selectAllGui);\n    });\n    // js comps\n    react_1.useLayoutEffect(function () { return jsComp_1.showJsComp(userCompDetails, context, eHeaderCompWrapper.current, userCompRef); }, [userCompDetails]);\n    // add drag handling, must be done after component is added to the dom\n    react_1.useEffect(function () {\n        ctrl.setDragSource(eGui.current);\n    }, [userCompDetails]);\n    var userCompStateless = react_1.useMemo(function () {\n        var res = (userCompDetails === null || userCompDetails === void 0 ? void 0 : userCompDetails.componentFromFramework) && utils_1.isComponentStateless(userCompDetails.componentClass);\n        return !!res;\n    }, [userCompDetails]);\n    var reactUserComp = userCompDetails && userCompDetails.componentFromFramework;\n    var UserCompClass = userCompDetails && userCompDetails.componentClass;\n    return (react_1.default.createElement(\"div\", { ref: eGui, className: \"ag-header-cell\", title: title, \"col-id\": colId, \"aria-sort\": ariaSort, role: \"columnheader\", tabIndex: -1, \"aria-description\": ariaDescription },\n        react_1.default.createElement(\"div\", { ref: eResize, className: \"ag-header-cell-resize\", role: \"presentation\" }),\n        react_1.default.createElement(\"div\", { ref: eHeaderCompWrapper, className: \"ag-header-cell-comp-wrapper\", role: \"presentation\" },\n            reactUserComp && userCompStateless && react_1.default.createElement(UserCompClass, __assign({}, userCompDetails.params)),\n            reactUserComp && !userCompStateless && react_1.default.createElement(UserCompClass, __assign({}, userCompDetails.params, { ref: userCompRef })))));\n};\nexports.default = react_1.memo(HeaderCellComp);\n","// ag-grid-react v29.3.5\n\"use strict\";\nvar __assign = (this && this.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n    if (k2 === undefined) k2 = k;\n    Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n    if (k2 === undefined) k2 = k;\n    o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n    Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n    o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n    if (mod && mod.__esModule) return mod;\n    var result = {};\n    if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n    __setModuleDefault(result, mod);\n    return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar react_1 = __importStar(require(\"react\"));\nvar beansContext_1 = require(\"../beansContext\");\nvar ag_grid_community_1 = require(\"ag-grid-community\");\nvar utils_1 = require(\"../utils\");\nvar jsComp_1 = require(\"../jsComp\");\nvar useEffectOnce_1 = require(\"../useEffectOnce\");\nvar HeaderFilterCellComp = function (props) {\n    var context = react_1.useContext(beansContext_1.BeansContext).context;\n    var _a = react_1.useState(new utils_1.CssClasses('ag-header-cell', 'ag-floating-filter')), cssClasses = _a[0], setCssClasses = _a[1];\n    var _b = react_1.useState(new utils_1.CssClasses()), cssBodyClasses = _b[0], setBodyCssClasses = _b[1];\n    var _c = react_1.useState(new utils_1.CssClasses('ag-floating-filter-button', 'ag-hidden')), cssButtonWrapperClasses = _c[0], setButtonWrapperCssClasses = _c[1];\n    var _d = react_1.useState(\"false\"), buttonWrapperAriaHidden = _d[0], setButtonWrapperAriaHidden = _d[1];\n    var _e = react_1.useState(), userCompDetails = _e[0], setUserCompDetails = _e[1];\n    var eGui = react_1.useRef(null);\n    var eFloatingFilterBody = react_1.useRef(null);\n    var eButtonWrapper = react_1.useRef(null);\n    var eButtonShowMainFilter = react_1.useRef(null);\n    var alreadyResolved = react_1.useRef(false);\n    var userCompResolve = react_1.useRef();\n    var userCompPromise = react_1.useRef();\n    useEffectOnce_1.useLayoutEffectOnce(function () {\n        userCompPromise.current = new ag_grid_community_1.AgPromise(function (resolve) {\n            userCompResolve.current = resolve;\n        });\n    });\n    var userCompRef = function (value) {\n        // i don't know why, but react was calling this method multiple\n        // times, thus un-setting, them immediately setting the reference again.\n        // because we are resolving a promise, it's not good to be resolving\n        // the promise multiple times, so we only resolve the first time.\n        if (alreadyResolved.current) {\n            return;\n        }\n        // we also skip when it's un-setting\n        if (value == null) {\n            return;\n        }\n        userCompResolve.current && userCompResolve.current(value);\n        alreadyResolved.current = true;\n    };\n    var ctrl = props.ctrl;\n    useEffectOnce_1.useLayoutEffectOnce(function () {\n        var compProxy = {\n            addOrRemoveCssClass: function (name, on) { return setCssClasses(function (prev) { return prev.setClass(name, on); }); },\n            addOrRemoveBodyCssClass: function (name, on) { return setBodyCssClasses(function (prev) { return prev.setClass(name, on); }); },\n            setButtonWrapperDisplayed: function (displayed) {\n                setButtonWrapperCssClasses(function (prev) { return prev.setClass('ag-hidden', !displayed); });\n                setButtonWrapperAriaHidden(!displayed ? \"true\" : \"false\");\n            },\n            setWidth: function (width) { return eGui.current.style.width = width; },\n            setCompDetails: function (compDetails) { return setUserCompDetails(compDetails); },\n            getFloatingFilterComp: function () { return userCompPromise.current ? userCompPromise.current : null; },\n            setMenuIcon: function (eIcon) { return eButtonShowMainFilter.current.appendChild(eIcon); }\n        };\n        ctrl.setComp(compProxy, eGui.current, eButtonShowMainFilter.current, eFloatingFilterBody.current);\n    });\n    // js comps\n    react_1.useLayoutEffect(function () { return jsComp_1.showJsComp(userCompDetails, context, eFloatingFilterBody.current, userCompRef); }, [userCompDetails]);\n    var className = react_1.useMemo(function () { return cssClasses.toString(); }, [cssClasses]);\n    var bodyClassName = react_1.useMemo(function () { return cssBodyClasses.toString(); }, [cssBodyClasses]);\n    var buttonWrapperClassName = react_1.useMemo(function () { return cssButtonWrapperClasses.toString(); }, [cssButtonWrapperClasses]);\n    var userCompStateless = react_1.useMemo(function () {\n        var res = userCompDetails\n            && userCompDetails.componentFromFramework\n            && utils_1.isComponentStateless(userCompDetails.componentClass);\n        return !!res;\n    }, [userCompDetails]);\n    var reactUserComp = userCompDetails && userCompDetails.componentFromFramework;\n    var UserCompClass = userCompDetails && userCompDetails.componentClass;\n    return (react_1.default.createElement(\"div\", { ref: eGui, className: className, role: \"gridcell\", tabIndex: -1 },\n        react_1.default.createElement(\"div\", { ref: eFloatingFilterBody, className: bodyClassName, role: \"presentation\" },\n            reactUserComp && userCompStateless && react_1.default.createElement(UserCompClass, __assign({}, userCompDetails.params)),\n            reactUserComp && !userCompStateless && react_1.default.createElement(UserCompClass, __assign({}, userCompDetails.params, { ref: userCompRef }))),\n        react_1.default.createElement(\"div\", { ref: eButtonWrapper, \"aria-hidden\": buttonWrapperAriaHidden, className: buttonWrapperClassName, role: \"presentation\" },\n            react_1.default.createElement(\"button\", { ref: eButtonShowMainFilter, type: \"button\", \"aria-label\": \"Open Filter Menu\", className: \"ag-floating-filter-button-button\", tabIndex: -1 }))));\n};\nexports.default = react_1.memo(HeaderFilterCellComp);\n","// ag-grid-react v29.3.5\n\"use strict\";\nvar __assign = (this && this.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n    if (k2 === undefined) k2 = k;\n    Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n    if (k2 === undefined) k2 = k;\n    o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n    Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n    o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n    if (mod && mod.__esModule) return mod;\n    var result = {};\n    if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n    __setModuleDefault(result, mod);\n    return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar react_1 = __importStar(require(\"react\"));\nvar beansContext_1 = require(\"../beansContext\");\nvar jsComp_1 = require(\"../jsComp\");\nvar useEffectOnce_1 = require(\"../useEffectOnce\");\nvar utils_1 = require(\"../utils\");\nvar HeaderGroupCellComp = function (props) {\n    var context = react_1.useContext(beansContext_1.BeansContext).context;\n    var _a = react_1.useState(new utils_1.CssClasses()), cssClasses = _a[0], setCssClasses = _a[1];\n    var _b = react_1.useState(new utils_1.CssClasses()), cssResizableClasses = _b[0], setResizableCssClasses = _b[1];\n    var _c = react_1.useState(\"false\"), resizableAriaHidden = _c[0], setResizableAriaHidden = _c[1];\n    var _d = react_1.useState(), title = _d[0], setTitle = _d[1];\n    var _e = react_1.useState(), colId = _e[0], setColId = _e[1];\n    var _f = react_1.useState(), ariaExpanded = _f[0], setAriaExpanded = _f[1];\n    var _g = react_1.useState(), userCompDetails = _g[0], setUserCompDetails = _g[1];\n    var eGui = react_1.useRef(null);\n    var eResize = react_1.useRef(null);\n    var ctrl = props.ctrl;\n    useEffectOnce_1.useLayoutEffectOnce(function () {\n        var compProxy = {\n            setWidth: function (width) { return eGui.current.style.width = width; },\n            addOrRemoveCssClass: function (name, on) { return setCssClasses(function (prev) { return prev.setClass(name, on); }); },\n            setColId: function (id) { return setColId(id); },\n            setTitle: function (title) { return setTitle(title); },\n            setUserCompDetails: function (compDetails) { return setUserCompDetails(compDetails); },\n            setResizableDisplayed: function (displayed) {\n                setResizableCssClasses(function (prev) { return prev.setClass('ag-hidden', !displayed); });\n                setResizableAriaHidden(!displayed ? \"true\" : \"false\");\n            },\n            setAriaExpanded: function (expanded) { return setAriaExpanded(expanded); }\n        };\n        ctrl.setComp(compProxy, eGui.current, eResize.current);\n    });\n    // js comps\n    react_1.useLayoutEffect(function () { return jsComp_1.showJsComp(userCompDetails, context, eGui.current); }, [userCompDetails]);\n    // add drag handling, must be done after component is added to the dom\n    react_1.useEffect(function () {\n        var userCompDomElement = undefined;\n        eGui.current.childNodes.forEach(function (node) {\n            if (node != null && node !== eResize.current) {\n                userCompDomElement = node;\n            }\n        });\n        userCompDomElement && ctrl.setDragSource(userCompDomElement);\n    }, [userCompDetails]);\n    var className = react_1.useMemo(function () { return 'ag-header-group-cell ' + cssClasses.toString(); }, [cssClasses]);\n    var resizableClassName = react_1.useMemo(function () { return 'ag-header-cell-resize ' + cssResizableClasses.toString(); }, [cssResizableClasses]);\n    var reactUserComp = userCompDetails && userCompDetails.componentFromFramework;\n    var UserCompClass = userCompDetails && userCompDetails.componentClass;\n    return (react_1.default.createElement(\"div\", { ref: eGui, className: className, title: title, \"col-id\": colId, role: \"columnheader\", tabIndex: -1, \"aria-expanded\": ariaExpanded },\n        reactUserComp && react_1.default.createElement(UserCompClass, __assign({}, userCompDetails.params)),\n        react_1.default.createElement(\"div\", { ref: eResize, \"aria-hidden\": resizableAriaHidden, className: resizableClassName })));\n};\nexports.default = react_1.memo(HeaderGroupCellComp);\n","// ag-grid-react v29.3.5\n\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n    if (k2 === undefined) k2 = k;\n    Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n    if (k2 === undefined) k2 = k;\n    o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n    Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n    o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n    if (mod && mod.__esModule) return mod;\n    var result = {};\n    if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n    __setModuleDefault(result, mod);\n    return result;\n};\nvar __spreadArrays = (this && this.__spreadArrays) || function () {\n    for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n    for (var r = Array(s), k = 0, i = 0; i < il; i++)\n        for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n            r[k] = a[j];\n    return r;\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n    return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar ag_grid_community_1 = require(\"ag-grid-community\");\nvar react_1 = __importStar(require(\"react\"));\nvar beansContext_1 = require(\"../beansContext\");\nvar headerCellComp_1 = __importDefault(require(\"./headerCellComp\"));\nvar headerGroupCellComp_1 = __importDefault(require(\"./headerGroupCellComp\"));\nvar headerFilterCellComp_1 = __importDefault(require(\"./headerFilterCellComp\"));\nvar useEffectOnce_1 = require(\"../useEffectOnce\");\nvar HeaderRowComp = function (props) {\n    var gridOptionsService = react_1.useContext(beansContext_1.BeansContext).gridOptionsService;\n    var _a = react_1.useState(), transform = _a[0], setTransform = _a[1];\n    var _b = react_1.useState(), height = _b[0], setHeight = _b[1];\n    var _c = react_1.useState(), top = _c[0], setTop = _c[1];\n    var _d = react_1.useState(), ariaRowIndex = _d[0], setAriaRowIndex = _d[1];\n    var _e = react_1.useState([]), cellCtrls = _e[0], setCellCtrls = _e[1];\n    var eGui = react_1.useRef(null);\n    var ctrl = props.ctrl;\n    var typeColumn = ctrl.getType() === ag_grid_community_1.HeaderRowType.COLUMN;\n    var typeGroup = ctrl.getType() === ag_grid_community_1.HeaderRowType.COLUMN_GROUP;\n    var typeFilter = ctrl.getType() === ag_grid_community_1.HeaderRowType.FLOATING_FILTER;\n    var setCellCtrlsMaintainOrder = react_1.useCallback(function (prev, next) {\n        var isEnsureDomOrder = gridOptionsService.is('ensureDomOrder');\n        var isPrintLayout = gridOptionsService.isDomLayout('print');\n        // if we are ensuring dom order, we set the ctrls into the dom in the same order they appear on screen\n        if (isEnsureDomOrder || isPrintLayout) {\n            return next;\n        }\n        // if not maintaining order, we want to keep the dom elements we have and add new ones to the end,\n        // otherwise we will loose transition effects as elements are placed in different dom locations\n        var prevMap = ag_grid_community_1._.mapById(prev, function (c) { return c.getInstanceId(); });\n        var nextMap = ag_grid_community_1._.mapById(next, function (c) { return c.getInstanceId(); });\n        var oldCtrlsWeAreKeeping = prev.filter(function (c) { return nextMap.has(c.getInstanceId()); });\n        var newCtrls = next.filter(function (c) { return !prevMap.has(c.getInstanceId()); });\n        return __spreadArrays(oldCtrlsWeAreKeeping, newCtrls);\n    }, []);\n    useEffectOnce_1.useLayoutEffectOnce(function () {\n        var compProxy = {\n            setTransform: function (transform) { return setTransform(transform); },\n            setHeight: function (height) { return setHeight(height); },\n            setTop: function (top) { return setTop(top); },\n            setHeaderCtrls: function (ctrls) { return setCellCtrls(function (prev) { return setCellCtrlsMaintainOrder(prev, ctrls); }); },\n            setWidth: function (width) { return eGui.current.style.width = width; },\n            setAriaRowIndex: function (rowIndex) { return setAriaRowIndex(rowIndex); }\n        };\n        ctrl.setComp(compProxy);\n    });\n    var style = react_1.useMemo(function () { return ({\n        transform: transform,\n        height: height,\n        top: top,\n    }); }, [transform, height, top]);\n    var className = react_1.useMemo(function () {\n        var res = [\"ag-header-row\"];\n        typeColumn && res.push(\"ag-header-row-column\");\n        typeGroup && res.push(\"ag-header-row-column-group\");\n        typeFilter && res.push(\"ag-header-row-column-filter\");\n        return res.join(' ');\n    }, []);\n    var createCellJsx = react_1.useCallback(function (cellCtrl) {\n        switch (ctrl.getType()) {\n            case ag_grid_community_1.HeaderRowType.COLUMN_GROUP:\n                return react_1.default.createElement(headerGroupCellComp_1.default, { ctrl: cellCtrl, key: cellCtrl.getInstanceId() });\n            case ag_grid_community_1.HeaderRowType.FLOATING_FILTER:\n                return react_1.default.createElement(headerFilterCellComp_1.default, { ctrl: cellCtrl, key: cellCtrl.getInstanceId() });\n            default:\n                return react_1.default.createElement(headerCellComp_1.default, { ctrl: cellCtrl, key: cellCtrl.getInstanceId() });\n        }\n    }, []);\n    return (react_1.default.createElement(\"div\", { ref: eGui, className: className, role: \"row\", style: style, \"aria-rowindex\": ariaRowIndex }, cellCtrls.map(createCellJsx)));\n};\nexports.default = react_1.memo(HeaderRowComp);\n","// ag-grid-react v29.3.5\n\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n    if (k2 === undefined) k2 = k;\n    Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n    if (k2 === undefined) k2 = k;\n    o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n    Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n    o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n    if (mod && mod.__esModule) return mod;\n    var result = {};\n    if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n    __setModuleDefault(result, mod);\n    return result;\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n    return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar react_1 = __importStar(require(\"react\"));\nvar beansContext_1 = require(\"../beansContext\");\nvar ag_grid_community_1 = require(\"ag-grid-community\");\nvar utils_1 = require(\"../utils\");\nvar headerRowComp_1 = __importDefault(require(\"./headerRowComp\"));\nvar useEffectOnce_1 = require(\"../useEffectOnce\");\nvar HeaderRowContainerComp = function (props) {\n    var _a = react_1.useState(new utils_1.CssClasses()), cssClasses = _a[0], setCssClasses = _a[1];\n    var _b = react_1.useState(false), ariaHidden = _b[0], setAriaHidden = _b[1];\n    var _c = react_1.useState([]), headerRowCtrls = _c[0], setHeaderRowCtrls = _c[1];\n    var context = react_1.useContext(beansContext_1.BeansContext).context;\n    var eGui = react_1.useRef(null);\n    var eCenterContainer = react_1.useRef(null);\n    var pinnedLeft = props.pinned === 'left';\n    var pinnedRight = props.pinned === 'right';\n    var centre = !pinnedLeft && !pinnedRight;\n    useEffectOnce_1.useLayoutEffectOnce(function () {\n        var compProxy = {\n            setDisplayed: function (displayed) {\n                setCssClasses(function (prev) { return prev.setClass('ag-hidden', !displayed); });\n                setAriaHidden(!displayed);\n            },\n            setCtrls: function (ctrls) { return setHeaderRowCtrls(ctrls); },\n            // centre only\n            setCenterWidth: function (width) {\n                if (eCenterContainer.current) {\n                    eCenterContainer.current.style.width = width;\n                }\n            },\n            setViewportScrollLeft: function (left) {\n                if (eGui.current) {\n                    eGui.current.scrollLeft = left;\n                }\n            },\n            // pinned only\n            setPinnedContainerWidth: function (width) {\n                eGui.current.style.width = width;\n                eGui.current.style.minWidth = width;\n                eGui.current.style.maxWidth = width;\n            }\n        };\n        var ctrl = context.createBean(new ag_grid_community_1.HeaderRowContainerCtrl(props.pinned));\n        ctrl.setComp(compProxy, eGui.current);\n        return function () {\n            context.destroyBean(ctrl);\n        };\n    });\n    var className = react_1.useMemo(function () { return cssClasses.toString(); }, [cssClasses]);\n    var insertRowsJsx = function () { return headerRowCtrls.map(function (ctrl) { return react_1.default.createElement(headerRowComp_1.default, { ctrl: ctrl, key: ctrl.getInstanceId() }); }); };\n    return (react_1.default.createElement(react_1.default.Fragment, null,\n        pinnedLeft &&\n            react_1.default.createElement(\"div\", { ref: eGui, className: \"ag-pinned-left-header \" + className, \"aria-hidden\": ariaHidden, role: \"presentation\" }, insertRowsJsx()),\n        pinnedRight &&\n            react_1.default.createElement(\"div\", { ref: eGui, className: \"ag-pinned-right-header \" + className, \"aria-hidden\": ariaHidden, role: \"presentation\" }, insertRowsJsx()),\n        centre &&\n            react_1.default.createElement(\"div\", { ref: eGui, className: \"ag-header-viewport \" + className, role: \"presentation\" },\n                react_1.default.createElement(\"div\", { ref: eCenterContainer, className: \"ag-header-container\", role: \"rowgroup\" }, insertRowsJsx()))));\n};\nexports.default = react_1.memo(HeaderRowContainerComp);\n","// ag-grid-react v29.3.5\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createSyncJsComp = exports.showJsComp = void 0;\n/**\n * Show a JS Component\n * @returns Effect Cleanup function\n */\nexports.showJsComp = function (compDetails, context, eParent, ref) {\n    var doNothing = !compDetails || compDetails.componentFromFramework;\n    if (doNothing) {\n        return;\n    }\n    var promise = compDetails.newAgStackInstance();\n    if (!promise) {\n        return;\n    }\n    // almost all JS Comps are NOT async, however the Floating Multi Filter is Async as it could\n    // be wrapping a React filter, so we need to cater for async comps here.\n    var comp;\n    var compGui;\n    var destroyed = false;\n    promise.then(function (c) {\n        if (destroyed) {\n            context.destroyBean(c);\n            return;\n        }\n        comp = c;\n        compGui = comp.getGui();\n        eParent.appendChild(compGui);\n        setRef(ref, comp);\n    });\n    return function () {\n        destroyed = true;\n        if (!comp) {\n            return;\n        } // in case we were destroyed before async comp was returned\n        if (compGui && compGui.parentElement) {\n            compGui.parentElement.removeChild(compGui);\n        }\n        context.destroyBean(comp);\n        if (ref) {\n            setRef(ref, undefined);\n        }\n    };\n};\nvar setRef = function (ref, value) {\n    if (!ref) {\n        return;\n    }\n    if (ref instanceof Function) {\n        var refCallback = ref;\n        refCallback(value);\n    }\n    else {\n        var refObj = ref;\n        refObj.current = value;\n    }\n};\nexports.createSyncJsComp = function (compDetails) {\n    var promise = compDetails.newAgStackInstance();\n    if (!promise) {\n        return;\n    }\n    return promise.resolveNow(null, function (x) { return x; }); // js comps are never async\n};\n","// ag-grid-react v29.3.5\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar useEffectOnce_1 = require(\"./useEffectOnce\");\nvar useReactCommentEffect = function (comment, eForCommentRef) {\n    useEffectOnce_1.useEffectOnce(function () {\n        var eForComment = eForCommentRef.current;\n        var eParent = eForComment.parentElement;\n        if (!eParent) {\n            return;\n        }\n        var eComment = document.createComment(comment);\n        eParent.insertBefore(eComment, eForComment);\n        return function () {\n            eParent.removeChild(eComment);\n        };\n    });\n};\nexports.default = useReactCommentEffect;\n","// ag-grid-react v29.3.5\n\"use strict\";\nvar __assign = (this && this.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n    if (k2 === undefined) k2 = k;\n    Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n    if (k2 === undefined) k2 = k;\n    o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n    Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n    o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n    if (mod && mod.__esModule) return mod;\n    var result = {};\n    if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n    __setModuleDefault(result, mod);\n    return result;\n};\nvar __spreadArrays = (this && this.__spreadArrays) || function () {\n    for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n    for (var r = Array(s), k = 0, i = 0; i < il; i++)\n        for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n            r[k] = a[j];\n    return r;\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n    return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar react_1 = __importStar(require(\"react\"));\nvar ag_grid_community_1 = require(\"ag-grid-community\");\nvar jsComp_1 = require(\"../jsComp\");\nvar utils_1 = require(\"../utils\");\nvar beansContext_1 = require(\"../beansContext\");\nvar cellComp_1 = __importDefault(require(\"../cells/cellComp\"));\nvar useEffectOnce_1 = require(\"../useEffectOnce\");\nvar maintainOrderOnColumns = function (prev, next, domOrder) {\n    if (domOrder) {\n        var res_1 = { list: next, instanceIdMap: new Map() };\n        next.forEach(function (c) { return res_1.instanceIdMap.set(c.getInstanceId(), c); });\n        return res_1;\n    }\n    // if dom order not important, we don't want to change the order\n    // of the elements in the dom, as this would break transition styles\n    var oldCellCtrls = [];\n    var newCellCtrls = [];\n    var newInstanceIdMap = new Map();\n    var tempMap = new Map();\n    next.forEach(function (c) { return tempMap.set(c.getInstanceId(), c); });\n    prev.list.forEach(function (c) {\n        var instanceId = c.getInstanceId();\n        if (tempMap.has(instanceId)) {\n            oldCellCtrls.push(c);\n            newInstanceIdMap.set(instanceId, c);\n        }\n    });\n    next.forEach(function (c) {\n        var instanceId = c.getInstanceId();\n        if (!prev.instanceIdMap.has(instanceId)) {\n            newCellCtrls.push(c);\n            newInstanceIdMap.set(instanceId, c);\n        }\n    });\n    var res = {\n        list: __spreadArrays(oldCellCtrls, newCellCtrls),\n        instanceIdMap: newInstanceIdMap\n    };\n    return res;\n};\nvar RowComp = function (params) {\n    var context = react_1.useContext(beansContext_1.BeansContext).context;\n    var rowCtrl = params.rowCtrl, containerType = params.containerType;\n    var _a = react_1.useState(), rowIndex = _a[0], setRowIndex = _a[1];\n    var _b = react_1.useState(), rowId = _b[0], setRowId = _b[1];\n    var _c = react_1.useState(), role = _c[0], setRole = _c[1];\n    var _d = react_1.useState(), rowBusinessKey = _d[0], setRowBusinessKey = _d[1];\n    var _e = react_1.useState(), tabIndex = _e[0], setTabIndex = _e[1];\n    var _f = react_1.useState(), userStyles = _f[0], setUserStyles = _f[1];\n    var _g = react_1.useState({ list: [], instanceIdMap: new Map() }), cellCtrls = _g[0], setCellCtrls = _g[1];\n    var _h = react_1.useState(), fullWidthCompDetails = _h[0], setFullWidthCompDetails = _h[1];\n    var _j = react_1.useState(false), domOrder = _j[0], setDomOrder = _j[1];\n    // these styles have initial values, so element is placed into the DOM with them,\n    // rather than an transition getting applied.\n    var _k = react_1.useState(rowCtrl.getInitialRowTop(containerType)), top = _k[0], setTop = _k[1];\n    var _l = react_1.useState(rowCtrl.getInitialTransform(containerType)), transform = _l[0], setTransform = _l[1];\n    var eGui = react_1.useRef(null);\n    var fullWidthCompRef = react_1.useRef();\n    var autoHeightSetup = react_1.useRef(false);\n    var _m = react_1.useState(0), autoHeightSetupAttempt = _m[0], setAutoHeightSetupAttempt = _m[1];\n    // puts autoHeight onto full with detail rows. this needs trickery, as we need\n    // the HTMLElement for the provided Detail Cell Renderer, however the Detail Cell Renderer\n    // could be a stateless React Func Comp which won't work with useRef, so we need\n    // to poll (we limit to 10) looking for the Detail HTMLElement (which will be the only\n    // child) after the fullWidthCompDetails is set.\n    react_1.useEffect(function () {\n        var _a;\n        if (autoHeightSetup.current) {\n            return;\n        }\n        if (!fullWidthCompDetails) {\n            return;\n        }\n        if (autoHeightSetupAttempt > 10) {\n            return;\n        }\n        var eChild = (_a = eGui.current) === null || _a === void 0 ? void 0 : _a.firstChild;\n        if (eChild) {\n            rowCtrl.setupDetailRowAutoHeight(eChild);\n            autoHeightSetup.current = true;\n        }\n        else {\n            setAutoHeightSetupAttempt(function (prev) { return prev + 1; });\n        }\n    }, [fullWidthCompDetails, autoHeightSetupAttempt]);\n    var cssClassManager = react_1.useMemo(function () { return new ag_grid_community_1.CssClassManager(function () { return eGui.current; }); }, []);\n    // we use layout effect here as we want to synchronously process setComp and it's side effects\n    // to ensure the component is fully initialised prior to the first browser paint. See AG-7018.\n    useEffectOnce_1.useLayoutEffectOnce(function () {\n        // because React is asynchronous, it's possible the RowCtrl is no longer a valid RowCtrl. This can\n        // happen if user calls two API methods one after the other, with the second API invalidating the rows\n        // the first call created. Thus the rows for the first call could still get created even though no longer needed.\n        if (!rowCtrl.isAlive()) {\n            return;\n        }\n        var compProxy = {\n            // the rowTop is managed by state, instead of direct style manipulation by rowCtrl (like all the other styles)\n            // as we need to have an initial value when it's placed into he DOM for the first time, for animation to work.\n            setTop: function (value) { return setTop(value); },\n            setTransform: function (value) { return setTransform(value); },\n            // i found using React for managing classes at the row level was to slow, as modifying classes caused a lot of\n            // React code to execute, so avoiding React for managing CSS Classes made the grid go much faster.\n            addOrRemoveCssClass: function (name, on) { return cssClassManager.addOrRemoveCssClass(name, on); },\n            setDomOrder: function (domOrder) { return setDomOrder(domOrder); },\n            setRowIndex: function (value) { return setRowIndex(value); },\n            setRowId: function (value) { return setRowId(value); },\n            setRowBusinessKey: function (value) { return setRowBusinessKey(value); },\n            setTabIndex: function (value) { return setTabIndex(value); },\n            setUserStyles: function (styles) { return setUserStyles(styles); },\n            setRole: function (value) { return setRole(value); },\n            // if we don't maintain the order, then cols will be ripped out and into the dom\n            // when cols reordered, which would stop the CSS transitions from working\n            setCellCtrls: function (next, useFlushSync) {\n                utils_1.agFlushSync(useFlushSync, function () {\n                    setCellCtrls(function (prev) { return maintainOrderOnColumns(prev, next, domOrder); });\n                });\n            },\n            showFullWidth: function (compDetails) { return setFullWidthCompDetails(compDetails); },\n            getFullWidthCellRenderer: function () { return fullWidthCompRef.current; },\n        };\n        rowCtrl.setComp(compProxy, eGui.current, containerType);\n        return function () {\n            rowCtrl.unsetComp(containerType);\n        };\n    });\n    react_1.useLayoutEffect(function () { return jsComp_1.showJsComp(fullWidthCompDetails, context, eGui.current, fullWidthCompRef); }, [fullWidthCompDetails]);\n    var rowStyles = react_1.useMemo(function () {\n        var res = { top: top, transform: transform };\n        Object.assign(res, userStyles);\n        return res;\n    }, [top, transform, userStyles]);\n    var showFullWidthFramework = fullWidthCompDetails && fullWidthCompDetails.componentFromFramework;\n    var showCells = cellCtrls != null;\n    var reactFullWidthCellRendererStateless = react_1.useMemo(function () {\n        var res = (fullWidthCompDetails === null || fullWidthCompDetails === void 0 ? void 0 : fullWidthCompDetails.componentFromFramework) && utils_1.isComponentStateless(fullWidthCompDetails.componentClass);\n        return !!res;\n    }, [fullWidthCompDetails]);\n    var showCellsJsx = function () { return cellCtrls.list.map(function (cellCtrl) { return (react_1.default.createElement(cellComp_1.default, { cellCtrl: cellCtrl, editingRow: rowCtrl.isEditing(), printLayout: rowCtrl.isPrintLayout(), key: cellCtrl.getInstanceId() })); }); };\n    var showFullWidthFrameworkJsx = function () {\n        var FullWidthComp = fullWidthCompDetails.componentClass;\n        return (react_1.default.createElement(react_1.default.Fragment, null,\n            reactFullWidthCellRendererStateless\n                && react_1.default.createElement(FullWidthComp, __assign({}, fullWidthCompDetails.params)),\n            !reactFullWidthCellRendererStateless\n                && react_1.default.createElement(FullWidthComp, __assign({}, fullWidthCompDetails.params, { ref: fullWidthCompRef }))));\n    };\n    return (react_1.default.createElement(\"div\", { ref: eGui, role: role, style: rowStyles, \"row-index\": rowIndex, \"row-id\": rowId, \"row-business-key\": rowBusinessKey, tabIndex: tabIndex },\n        showCells && showCellsJsx(),\n        showFullWidthFramework && showFullWidthFrameworkJsx()));\n};\nexports.default = react_1.memo(RowComp);\n","// ag-grid-react v29.3.5\n\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n    if (k2 === undefined) k2 = k;\n    Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n    if (k2 === undefined) k2 = k;\n    o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n    Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n    o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n    if (mod && mod.__esModule) return mod;\n    var result = {};\n    if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n    __setModuleDefault(result, mod);\n    return result;\n};\nvar __spreadArrays = (this && this.__spreadArrays) || function () {\n    for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n    for (var r = Array(s), k = 0, i = 0; i < il; i++)\n        for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n            r[k] = a[j];\n    return r;\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n    return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar ag_grid_community_1 = require(\"ag-grid-community\");\nvar react_1 = __importStar(require(\"react\"));\nvar utils_1 = require(\"../utils\");\nvar reactComment_1 = __importDefault(require(\"../reactComment\"));\nvar rowComp_1 = __importDefault(require(\"./rowComp\"));\nvar beansContext_1 = require(\"../beansContext\");\nvar useEffectOnce_1 = require(\"../useEffectOnce\");\nvar RowContainerComp = function (params) {\n    var context = react_1.useContext(beansContext_1.BeansContext).context;\n    var _a = react_1.useState([]), rowCtrlsOrdered = _a[0], setRowCtrlsOrdered = _a[1];\n    var name = params.name;\n    var containerType = react_1.useMemo(function () { return ag_grid_community_1.getRowContainerTypeForName(name); }, [name]);\n    var eWrapper = react_1.useRef(null);\n    var eViewport = react_1.useRef(null);\n    var eContainer = react_1.useRef(null);\n    var rowCtrlsRef = react_1.useRef([]);\n    var domOrderRef = react_1.useRef(false);\n    var cssClasses = react_1.useMemo(function () { return ag_grid_community_1.RowContainerCtrl.getRowContainerCssClasses(name); }, [name]);\n    var wrapperClasses = react_1.useMemo(function () { return utils_1.classesList(cssClasses.wrapper); }, []);\n    var viewportClasses = react_1.useMemo(function () { return utils_1.classesList(cssClasses.viewport); }, []);\n    var containerClasses = react_1.useMemo(function () { return utils_1.classesList(cssClasses.container); }, []);\n    // no need to useMemo for boolean types\n    var template1 = name === ag_grid_community_1.RowContainerName.CENTER;\n    var template2 = name === ag_grid_community_1.RowContainerName.TOP_CENTER\n        || name === ag_grid_community_1.RowContainerName.BOTTOM_CENTER\n        || name === ag_grid_community_1.RowContainerName.STICKY_TOP_CENTER;\n    var template3 = !template1 && !template2;\n    var topLevelRef = template1 ? eWrapper : template2 ? eViewport : eContainer;\n    reactComment_1.default(' AG Row Container ' + name + ' ', topLevelRef);\n    // if domOrder=true, then we just copy rowCtrls into rowCtrlsOrdered observing order,\n    // however if false, then we need to keep the order as they are in the dom, otherwise rowAnimation breaks\n    function updateRowCtrlsOrdered(useFlushSync) {\n        utils_1.agFlushSync(useFlushSync, function () {\n            setRowCtrlsOrdered(function (prev) {\n                var rowCtrls = rowCtrlsRef.current;\n                if (domOrderRef.current) {\n                    return rowCtrls;\n                }\n                // if dom order not important, we don't want to change the order\n                // of the elements in the dom, as this would break transition styles\n                var oldRows = prev.filter(function (r) { return rowCtrls.indexOf(r) >= 0; });\n                var newRows = rowCtrls.filter(function (r) { return oldRows.indexOf(r) < 0; });\n                return __spreadArrays(oldRows, newRows);\n            });\n        });\n    }\n    useEffectOnce_1.useLayoutEffectOnce(function () {\n        var beansToDestroy = [];\n        var compProxy = {\n            setViewportHeight: function (height) { return eViewport.current.style.height = height; },\n            setRowCtrls: function (rowCtrls, useFlushSync) {\n                if (rowCtrlsRef.current !== rowCtrls) {\n                    var useFlush = useFlushSync && rowCtrlsRef.current.length > 0 && rowCtrls.length > 0;\n                    rowCtrlsRef.current = rowCtrls;\n                    updateRowCtrlsOrdered(useFlush);\n                }\n            },\n            setDomOrder: function (domOrder) {\n                if (domOrderRef.current != domOrder) {\n                    domOrderRef.current = domOrder;\n                    updateRowCtrlsOrdered(false);\n                }\n            },\n            setContainerWidth: function (width) { return eContainer.current.style.width = width; }\n        };\n        var ctrl = context.createBean(new ag_grid_community_1.RowContainerCtrl(name));\n        beansToDestroy.push(ctrl);\n        ctrl.setComp(compProxy, eContainer.current, eViewport.current, eWrapper.current);\n        return function () {\n            context.destroyBeans(beansToDestroy);\n        };\n    });\n    var buildContainer = function () { return (react_1.default.createElement(\"div\", { className: containerClasses, ref: eContainer, role: rowCtrlsOrdered.length ? \"rowgroup\" : \"presentation\" }, rowCtrlsOrdered.map(function (rowCtrl) {\n        return react_1.default.createElement(rowComp_1.default, { rowCtrl: rowCtrl, containerType: containerType, key: rowCtrl.getInstanceId() });\n    }))); };\n    return (react_1.default.createElement(react_1.default.Fragment, null,\n        template1 &&\n            react_1.default.createElement(\"div\", { className: wrapperClasses, ref: eWrapper, role: \"presentation\" },\n                react_1.default.createElement(\"div\", { className: viewportClasses, ref: eViewport, role: \"presentation\" }, buildContainer())),\n        template2 &&\n            react_1.default.createElement(\"div\", { className: viewportClasses, ref: eViewport, role: \"presentation\" }, buildContainer()),\n        template3 && buildContainer()));\n};\nexports.default = react_1.memo(RowContainerComp);\n","// ag-grid-react v29.3.5\n\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n    if (k2 === undefined) k2 = k;\n    Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n    if (k2 === undefined) k2 = k;\n    o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n    Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n    o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n    if (mod && mod.__esModule) return mod;\n    var result = {};\n    if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n    __setModuleDefault(result, mod);\n    return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar react_1 = __importStar(require(\"react\"));\nvar ag_grid_community_1 = require(\"ag-grid-community\");\nvar beansContext_1 = require(\"./beansContext\");\nvar useEffectOnce_1 = require(\"./useEffectOnce\");\nvar TabGuardCompRef = function (props, forwardRef) {\n    var children = props.children, eFocusableElement = props.eFocusableElement, onTabKeyDown = props.onTabKeyDown, gridCtrl = props.gridCtrl;\n    var context = react_1.useContext(beansContext_1.BeansContext).context;\n    var topTabGuardRef = react_1.useRef(null);\n    var bottomTabGuardRef = react_1.useRef(null);\n    var tabGuardCtrlRef = react_1.useRef();\n    var _a = react_1.useState(), tabIndex = _a[0], setTabIndex = _a[1];\n    react_1.useImperativeHandle(forwardRef, function () { return ({\n        forceFocusOutOfContainer: function () {\n            tabGuardCtrlRef.current.forceFocusOutOfContainer();\n        }\n    }); });\n    useEffectOnce_1.useLayoutEffectOnce(function () {\n        var eTopGuard = topTabGuardRef.current;\n        var eBottomGuard = bottomTabGuardRef.current;\n        var compProxy = {\n            setTabIndex: function (value) { return value == null ? setTabIndex(undefined) : setTabIndex(parseInt(value, 10)); }\n        };\n        var ctrl = tabGuardCtrlRef.current = context.createBean(new ag_grid_community_1.TabGuardCtrl({\n            comp: compProxy,\n            eTopGuard: eTopGuard,\n            eBottomGuard: eBottomGuard,\n            eFocusableElement: eFocusableElement,\n            onTabKeyDown: onTabKeyDown,\n            focusInnerElement: function (fromBottom) { return gridCtrl.focusInnerElement(fromBottom); }\n        }));\n        return function () {\n            context.destroyBean(ctrl);\n        };\n    });\n    var createTabGuard = function (side) {\n        var className = side === 'top' ? ag_grid_community_1.TabGuardClassNames.TAB_GUARD_TOP : ag_grid_community_1.TabGuardClassNames.TAB_GUARD_BOTTOM;\n        return (react_1.default.createElement(\"div\", { className: ag_grid_community_1.TabGuardClassNames.TAB_GUARD + \" \" + className, role: \"presentation\", tabIndex: tabIndex, ref: side === 'top' ? topTabGuardRef : bottomTabGuardRef }));\n    };\n    return (react_1.default.createElement(react_1.default.Fragment, null,\n        createTabGuard('top'),\n        children,\n        createTabGuard('bottom')));\n};\nvar TabGuardComp = react_1.forwardRef(TabGuardCompRef);\nexports.default = react_1.memo(TabGuardComp);\n","// ag-grid-react v29.3.5\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.useLayoutEffectOnce = exports.useEffectOnce = void 0;\nvar react_1 = require(\"react\");\nexports.useEffectOnce = function (effect) {\n    var effectFn = react_1.useRef(effect);\n    var destroyFn = react_1.useRef();\n    var effectCalled = react_1.useRef(false);\n    var rendered = react_1.useRef(false);\n    var _a = react_1.useState(0), setVal = _a[1];\n    if (effectCalled.current) {\n        rendered.current = true;\n    }\n    react_1.useEffect(function () {\n        // only execute the effect first time around\n        if (!effectCalled.current) {\n            destroyFn.current = effectFn.current();\n            effectCalled.current = true;\n        }\n        // this forces one render after the effect is run\n        setVal(function (val) { return val + 1; });\n        return function () {\n            // if the comp didn't render since the useEffect was called,\n            // we know it's the dummy React cycle\n            if (!rendered.current) {\n                return;\n            }\n            // otherwise this is not a dummy destroy, so call the destroy func\n            if (destroyFn.current) {\n                destroyFn.current();\n            }\n        };\n    }, []);\n};\nexports.useLayoutEffectOnce = function (effect) {\n    var effectFn = react_1.useRef(effect);\n    var destroyFn = react_1.useRef();\n    var effectCalled = react_1.useRef(false);\n    var rendered = react_1.useRef(false);\n    var _a = react_1.useState(0), setVal = _a[1];\n    if (effectCalled.current) {\n        rendered.current = true;\n    }\n    react_1.useLayoutEffect(function () {\n        // only execute the effect first time around\n        if (!effectCalled.current) {\n            destroyFn.current = effectFn.current();\n            effectCalled.current = true;\n        }\n        // this forces one render after the effect is run\n        setVal(function (val) { return val + 1; });\n        return function () {\n            // if the comp didn't render since the useEffect was called,\n            // we know it's the dummy React cycle\n            if (!rendered.current) {\n                return;\n            }\n            // otherwise this is not a dummy destroy, so call the destroy func\n            if (destroyFn.current) {\n                destroyFn.current();\n            }\n        };\n    }, []);\n};\n","// ag-grid-react v29.3.5\n\"use strict\";\nvar __assign = (this && this.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n    return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.agFlushSync = exports.isComponentStateless = exports.CssClasses = exports.classesList = void 0;\nvar react_dom_1 = __importDefault(require(\"react-dom\"));\nexports.classesList = function () {\n    var list = [];\n    for (var _i = 0; _i < arguments.length; _i++) {\n        list[_i] = arguments[_i];\n    }\n    var filtered = list.filter(function (s) { return s != null && s !== ''; });\n    return filtered.join(' ');\n};\nvar CssClasses = /** @class */ (function () {\n    function CssClasses() {\n        var _this = this;\n        var initialClasses = [];\n        for (var _i = 0; _i < arguments.length; _i++) {\n            initialClasses[_i] = arguments[_i];\n        }\n        this.classesMap = {};\n        initialClasses.forEach(function (className) {\n            _this.classesMap[className] = true;\n        });\n    }\n    CssClasses.prototype.setClass = function (className, on) {\n        // important to not make a copy if nothing has changed, so react\n        // won't trigger a render cycle on new object instance\n        var nothingHasChanged = !!this.classesMap[className] == on;\n        if (nothingHasChanged) {\n            return this;\n        }\n        var res = new CssClasses();\n        res.classesMap = __assign({}, this.classesMap);\n        res.classesMap[className] = on;\n        return res;\n    };\n    CssClasses.prototype.toString = function () {\n        var _this = this;\n        var res = Object.keys(this.classesMap).filter(function (key) { return _this.classesMap[key]; }).join(' ');\n        return res;\n    };\n    return CssClasses;\n}());\nexports.CssClasses = CssClasses;\nexports.isComponentStateless = function (Component) {\n    var hasSymbol = function () { return typeof Symbol === 'function' && Symbol.for; };\n    var getMemoType = function () { return hasSymbol() ? Symbol.for('react.memo') : 0xead3; };\n    return (typeof Component === 'function' && !(Component.prototype && Component.prototype.isReactComponent)) || (typeof Component === 'object' && Component.$$typeof === getMemoType());\n};\n// CreateRoot is only available from React 18, which if used requires us to use flushSync.\nvar createRootAndFlushSyncAvailable = react_dom_1.default.createRoot != null && react_dom_1.default.flushSync != null;\n/**\n * Wrapper around flushSync to provide backwards compatibility with React 16-17\n * Also allows us to control via the `useFlushSync` param whether we want to use flushSync or not\n * as we do not want to use flushSync when we are likely to already be in a render cycle\n */\nexports.agFlushSync = function (useFlushSync, fn) {\n    if (createRootAndFlushSyncAvailable && useFlushSync) {\n        react_dom_1.default.flushSync(fn);\n    }\n    else {\n        fn();\n    }\n};\n","// ag-grid-react v29.3.5\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ChangeDetectionStrategyType = void 0;\n/** @deprecated v29 ChangeDetectionStrategyType has been deprecated. IdentityCheck will always be used now for a more consistent approach. */\nvar ChangeDetectionStrategyType;\n(function (ChangeDetectionStrategyType) {\n    ChangeDetectionStrategyType[\"IdentityCheck\"] = \"IdentityCheck\";\n    ChangeDetectionStrategyType[\"DeepValueCheck\"] = \"DeepValueCheck\";\n    ChangeDetectionStrategyType[\"NoCheck\"] = \"NoCheck\";\n})(ChangeDetectionStrategyType = exports.ChangeDetectionStrategyType || (exports.ChangeDetectionStrategyType = {}));\n","// ag-grid-react v29.3.5\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar counter = 0;\nfunction generateNewKey() {\n    return \"agPortalKey_\" + ++counter;\n}\nexports.default = generateNewKey;\n","// ag-grid-react v29.3.5\n\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __assign = (this && this.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n    return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.NewReactComponent = void 0;\nvar react_1 = require(\"react\");\nvar react_dom_1 = require(\"react-dom\");\nvar ag_grid_community_1 = require(\"ag-grid-community\");\nvar reactComponent_1 = require(\"./reactComponent\");\nvar server_1 = require(\"react-dom/server\");\nvar keyGenerator_1 = __importDefault(require(\"./keyGenerator\"));\nvar NewReactComponent = /** @class */ (function (_super) {\n    __extends(NewReactComponent, _super);\n    function NewReactComponent(reactComponent, parentComponent, componentType) {\n        var _this = _super.call(this, reactComponent, parentComponent, componentType) || this;\n        _this.oldPortal = null;\n        _this.key = keyGenerator_1.default();\n        _this.portalKey = keyGenerator_1.default();\n        return _this;\n    }\n    NewReactComponent.prototype.init = function (params) {\n        var _this = this;\n        this.eParentElement = this.createParentElement(params);\n        this.params = params;\n        this.createOrUpdatePortal(params);\n        return new ag_grid_community_1.AgPromise(function (resolve) { return _this.createReactComponent(resolve); });\n    };\n    NewReactComponent.prototype.createOrUpdatePortal = function (params) {\n        var _this = this;\n        if (!this.isStatelessComponent()) {\n            // grab hold of the actual instance created\n            params.ref = function (element) {\n                _this.componentInstance = element;\n                _this.addParentContainerStyleAndClasses();\n            };\n        }\n        this.reactElement = react_1.createElement(this.reactComponent, __assign(__assign({}, params), { key: this.key }));\n        this.portal = react_dom_1.createPortal(this.reactElement, this.eParentElement, this.portalKey // fixed deltaRowModeRefreshCompRenderer\n        );\n    };\n    NewReactComponent.prototype.createReactComponent = function (resolve) {\n        this.portalManager.mountReactPortal(this.portal, this, function (value) {\n            resolve(value);\n        });\n    };\n    NewReactComponent.prototype.isNullValue = function () {\n        return this.valueRenderedIsNull(this.params);\n    };\n    NewReactComponent.prototype.rendered = function () {\n        return (this.isStatelessComponent() && this.statelessComponentRendered()) ||\n            !!(!this.isStatelessComponent() && this.getFrameworkComponentInstance());\n    };\n    NewReactComponent.prototype.valueRenderedIsNull = function (params) {\n        // we only do this for cellRenderers\n        if (!this.componentType.cellRenderer) {\n            return false;\n        }\n        // we've no way of knowing if a component returns null without rendering it first\n        // so we render it to markup and check the output - if it'll be null we know and won't timeout\n        // waiting for a component that will never be created\n        var originalConsoleError = console.error;\n        try {\n            // if a user is doing anything that uses useLayoutEffect (like material ui) then it will throw and we\n            // can't do anything to stop it; this is just a warning and has no effect on anything so just suppress it\n            // for this single operation\n            console.error = function () {\n            };\n            var staticMarkup = server_1.renderToStaticMarkup(react_1.createElement(this.reactComponent, params));\n            return staticMarkup === '';\n        }\n        catch (ignore) {\n        }\n        finally {\n            console.error = originalConsoleError;\n        }\n        return false;\n    };\n    /*\n    * fallback methods - these will be invoked if a corresponding instance method is not present\n    * for example if refresh is called and is not available on the component instance, then refreshComponent on this\n    * class will be invoked instead\n    *\n    * Currently only refresh is supported\n    */\n    NewReactComponent.prototype.refreshComponent = function (args) {\n        this.oldPortal = this.portal;\n        this.createOrUpdatePortal(args);\n        this.portalManager.updateReactPortal(this.oldPortal, this.portal);\n    };\n    NewReactComponent.prototype.fallbackMethod = function (name, params) {\n        var method = this[name + \"Component\"];\n        if (!!method) {\n            return method.bind(this)(params);\n        }\n    };\n    NewReactComponent.prototype.fallbackMethodAvailable = function (name) {\n        var method = this[name + \"Component\"];\n        return !!method;\n    };\n    return NewReactComponent;\n}(reactComponent_1.ReactComponent));\nexports.NewReactComponent = NewReactComponent;\n","// ag-grid-react v29.3.5\n\"use strict\";\nvar __spreadArrays = (this && this.__spreadArrays) || function () {\n    for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n    for (var r = Array(s), k = 0, i = 0; i < il; i++)\n        for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n            r[k] = a[j];\n    return r;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.PortalManager = void 0;\nvar PortalManager = /** @class */ (function () {\n    function PortalManager(parent, wrappingElement, maxComponentCreationTimeMs) {\n        this.destroyed = false;\n        this.portals = [];\n        this.hasPendingPortalUpdate = false;\n        this.wrappingElement = wrappingElement ? wrappingElement : 'div';\n        this.parent = parent;\n        this.maxComponentCreationTimeMs = maxComponentCreationTimeMs ? maxComponentCreationTimeMs : PortalManager.MAX_COMPONENT_CREATION_TIME_IN_MS;\n    }\n    PortalManager.prototype.getPortals = function () {\n        return this.portals;\n    };\n    PortalManager.prototype.destroy = function () {\n        this.destroyed = true;\n    };\n    PortalManager.prototype.destroyPortal = function (portal) {\n        this.portals = this.portals.filter(function (curPortal) { return curPortal !== portal; });\n        this.batchUpdate();\n    };\n    PortalManager.prototype.getComponentWrappingElement = function () {\n        return this.wrappingElement;\n    };\n    PortalManager.prototype.mountReactPortal = function (portal, reactComponent, resolve) {\n        this.portals = __spreadArrays(this.portals, [portal]);\n        this.waitForInstance(reactComponent, resolve);\n        this.batchUpdate();\n    };\n    PortalManager.prototype.updateReactPortal = function (oldPortal, newPortal) {\n        this.portals[this.portals.indexOf(oldPortal)] = newPortal;\n        this.batchUpdate();\n    };\n    PortalManager.prototype.batchUpdate = function () {\n        var _this = this;\n        if (this.hasPendingPortalUpdate) {\n            return;\n        }\n        setTimeout(function () {\n            if (!_this.destroyed) { // destroyed?\n                _this.parent.forceUpdate(function () {\n                    _this.hasPendingPortalUpdate = false;\n                });\n            }\n        });\n        this.hasPendingPortalUpdate = true;\n    };\n    PortalManager.prototype.waitForInstance = function (reactComponent, resolve, startTime) {\n        var _this = this;\n        if (startTime === void 0) { startTime = Date.now(); }\n        // if the grid has been destroyed in the meantime just resolve\n        if (this.destroyed) {\n            resolve(null);\n            return;\n        }\n        if (reactComponent.rendered()) {\n            resolve(reactComponent);\n        }\n        else {\n            if (Date.now() - startTime >= this.maxComponentCreationTimeMs && !this.hasPendingPortalUpdate) {\n                // last check - we check if this is a null value being rendered - we do this last as using SSR to check the value\n                // can mess up contexts\n                if (reactComponent.isNullValue()) {\n                    resolve(reactComponent);\n                    return;\n                }\n                console.error(\"AG Grid: React Component '\" + reactComponent.getReactComponentName() + \"' not created within \" + this.maxComponentCreationTimeMs + \"ms\");\n                return;\n            }\n            window.setTimeout(function () {\n                _this.waitForInstance(reactComponent, resolve, startTime);\n            });\n        }\n    };\n    PortalManager.MAX_COMPONENT_CREATION_TIME_IN_MS = 1000; // a second should be more than enough to instantiate a component\n    return PortalManager;\n}());\nexports.PortalManager = PortalManager;\n","// ag-grid-react v29.3.5\n\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ReactComponent = void 0;\nvar BaseReactComponent = /** @class */ (function () {\n    function BaseReactComponent() {\n    }\n    return BaseReactComponent;\n}());\nvar ReactComponent = /** @class */ (function (_super) {\n    __extends(ReactComponent, _super);\n    function ReactComponent(reactComponent, portalManager, componentType) {\n        var _this = _super.call(this) || this;\n        _this.portal = null;\n        _this.reactComponent = reactComponent;\n        _this.portalManager = portalManager;\n        _this.componentType = componentType;\n        _this.statelessComponent = _this.isStateless(_this.reactComponent);\n        return _this;\n    }\n    ReactComponent.prototype.getGui = function () {\n        return this.eParentElement;\n    };\n    ReactComponent.prototype.destroy = function () {\n        if (this.componentInstance && typeof this.componentInstance.destroy == 'function') {\n            this.componentInstance.destroy();\n        }\n        return this.portalManager.destroyPortal(this.portal);\n    };\n    ReactComponent.prototype.createParentElement = function (params) {\n        var componentWrappingElement = this.portalManager.getComponentWrappingElement();\n        var eParentElement = document.createElement(componentWrappingElement || 'div');\n        eParentElement.classList.add('ag-react-container');\n        // DEPRECATED - use componentInstance.getReactContainerStyle or componentInstance.getReactContainerClasses instead\n        // so user can have access to the react container, to add css class or style\n        params.reactContainer = eParentElement;\n        return eParentElement;\n    };\n    ReactComponent.prototype.addParentContainerStyleAndClasses = function () {\n        var _this = this;\n        if (!this.componentInstance) {\n            return;\n        }\n        if (this.componentInstance.getReactContainerStyle && this.componentInstance.getReactContainerStyle()) {\n            Object.assign(this.eParentElement.style, this.componentInstance.getReactContainerStyle());\n        }\n        if (this.componentInstance.getReactContainerClasses && this.componentInstance.getReactContainerClasses()) {\n            var parentContainerClasses = this.componentInstance.getReactContainerClasses();\n            parentContainerClasses.forEach(function (className) { return _this.eParentElement.classList.add(className); });\n        }\n    };\n    ReactComponent.prototype.statelessComponentRendered = function () {\n        // fixed fragmentsFuncRendererCreateDestroy funcRendererWithNan (changeDetectionService too for NaN)\n        return this.eParentElement.childElementCount > 0 || this.eParentElement.childNodes.length > 0;\n    };\n    ReactComponent.prototype.getFrameworkComponentInstance = function () {\n        return this.componentInstance;\n    };\n    ReactComponent.prototype.isStatelessComponent = function () {\n        return this.statelessComponent;\n    };\n    ReactComponent.prototype.getReactComponentName = function () {\n        return this.reactComponent.name;\n    };\n    ReactComponent.prototype.getMemoType = function () {\n        return this.hasSymbol() ? Symbol.for('react.memo') : 0xead3;\n    };\n    ReactComponent.prototype.hasSymbol = function () {\n        return typeof Symbol === 'function' && Symbol.for;\n    };\n    ReactComponent.prototype.isStateless = function (Component) {\n        return (typeof Component === 'function' && !(Component.prototype && Component.prototype.isReactComponent))\n            || (typeof Component === 'object' && Component.$$typeof === this.getMemoType());\n    };\n    ReactComponent.prototype.hasMethod = function (name) {\n        var frameworkComponentInstance = this.getFrameworkComponentInstance();\n        return (!!frameworkComponentInstance && frameworkComponentInstance[name] !== null) ||\n            this.fallbackMethodAvailable(name);\n    };\n    ReactComponent.prototype.callMethod = function (name, args) {\n        var _this = this;\n        var frameworkComponentInstance = this.getFrameworkComponentInstance();\n        if (this.isStatelessComponent()) {\n            return this.fallbackMethod(name, !!args && args[0] ? args[0] : {});\n        }\n        else if (!(!!frameworkComponentInstance)) {\n            // instance not ready yet - wait for it\n            setTimeout(function () { return _this.callMethod(name, args); });\n            return;\n        }\n        var method = frameworkComponentInstance[name];\n        if (!!method) {\n            return method.apply(frameworkComponentInstance, args);\n        }\n        if (this.fallbackMethodAvailable(name)) {\n            return this.fallbackMethod(name, !!args && args[0] ? args[0] : {});\n        }\n    };\n    ReactComponent.prototype.addMethod = function (name, callback) {\n        this[name] = callback;\n    };\n    return ReactComponent;\n}(BaseReactComponent));\nexports.ReactComponent = ReactComponent;\n","// ag-grid-react v29.3.5\n\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n    return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ReactFrameworkOverrides = void 0;\nvar ag_grid_community_1 = require(\"ag-grid-community\");\nvar groupCellRenderer_1 = __importDefault(require(\"../reactUi/cellRenderer/groupCellRenderer\"));\nvar detailCellRenderer_1 = __importDefault(require(\"../reactUi/cellRenderer/detailCellRenderer\"));\nvar ReactFrameworkOverrides = /** @class */ (function (_super) {\n    __extends(ReactFrameworkOverrides, _super);\n    function ReactFrameworkOverrides(reactUi) {\n        var _this = _super.call(this) || this;\n        _this.frameworkComponents = {\n            agGroupCellRenderer: groupCellRenderer_1.default,\n            agGroupRowRenderer: groupCellRenderer_1.default,\n            agDetailCellRenderer: detailCellRenderer_1.default\n        };\n        _this.reactUi = reactUi;\n        return _this;\n    }\n    ReactFrameworkOverrides.prototype.frameworkComponent = function (name) {\n        if (!this.reactUi) {\n            return;\n        }\n        return this.frameworkComponents[name];\n    };\n    ReactFrameworkOverrides.prototype.isFrameworkComponent = function (comp) {\n        if (!comp) {\n            return false;\n        }\n        var prototype = comp.prototype;\n        var isJsComp = prototype && 'getGui' in prototype;\n        return !isJsComp;\n    };\n    return ReactFrameworkOverrides;\n}(ag_grid_community_1.VanillaFrameworkOverrides));\nexports.ReactFrameworkOverrides = ReactFrameworkOverrides;\n","exports.AgGridReact = require('./lib/agGridReact').AgGridReact;\nexports.ChangeDetectionStrategyType = require('./lib/shared/interfaces').ChangeDetectionStrategyType;\nexports.AgGridReactUi = require('./lib/reactUi/agGridReactUi').AgGridReactUi;\n","\"use strict\";\n\nexports.__esModule = true;\n\nexports.default = function (file, acceptedFiles) {\n  if (file && acceptedFiles) {\n    var acceptedFilesArray = Array.isArray(acceptedFiles) ? acceptedFiles : acceptedFiles.split(',');\n    var fileName = file.name || '';\n    var mimeType = (file.type || '').toLowerCase();\n    var baseMimeType = mimeType.replace(/\\/.*$/, '');\n    return acceptedFilesArray.some(function (type) {\n      var validType = type.trim().toLowerCase();\n\n      if (validType.charAt(0) === '.') {\n        return fileName.toLowerCase().endsWith(validType);\n      } else if (validType.endsWith('/*')) {\n        // This is something like a image/* mime type\n        return baseMimeType === validType.replace(/\\/.*$/, '');\n      }\n\n      return mimeType === validType;\n    });\n  }\n\n  return true;\n};","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"axios-request\"] = factory();\n\telse\n\t\troot[\"axios-request\"] = factory();\n})(this, function() {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, {\n/******/ \t\t\t\tconfigurable: false,\n/******/ \t\t\t\tenumerable: true,\n/******/ \t\t\t\tget: getter\n/******/ \t\t\t});\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"/\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 9);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar bind = __webpack_require__(1);\nvar isBuffer = __webpack_require__(13);\n\n/*global toString:true*/\n\n// utils is a library of generic helper functions non-specific to axios\n\nvar toString = Object.prototype.toString;\n\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Array, otherwise false\n */\nfunction isArray(val) {\n  return toString.call(val) === '[object Array]';\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nfunction isArrayBuffer(val) {\n  return toString.call(val) === '[object ArrayBuffer]';\n}\n\n/**\n * Determine if a value is a FormData\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nfunction isFormData(val) {\n  return typeof FormData !== 'undefined' && val instanceof FormData;\n}\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n  var result;\n  if (typeof ArrayBuffer !== 'undefined' && ArrayBuffer.isView) {\n    result = ArrayBuffer.isView(val);\n  } else {\n    result = val && val.buffer && val.buffer instanceof ArrayBuffer;\n  }\n  return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a String, otherwise false\n */\nfunction isString(val) {\n  return typeof val === 'string';\n}\n\n/**\n * Determine if a value is a Number\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Number, otherwise false\n */\nfunction isNumber(val) {\n  return typeof val === 'number';\n}\n\n/**\n * Determine if a value is undefined\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nfunction isUndefined(val) {\n  return typeof val === 'undefined';\n}\n\n/**\n * Determine if a value is an Object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Object, otherwise false\n */\nfunction isObject(val) {\n  return val !== null && (typeof val === 'undefined' ? 'undefined' : _typeof(val)) === 'object';\n}\n\n/**\n * Determine if a value is a Date\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Date, otherwise false\n */\nfunction isDate(val) {\n  return toString.call(val) === '[object Date]';\n}\n\n/**\n * Determine if a value is a File\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a File, otherwise false\n */\nfunction isFile(val) {\n  return toString.call(val) === '[object File]';\n}\n\n/**\n * Determine if a value is a Blob\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nfunction isBlob(val) {\n  return toString.call(val) === '[object Blob]';\n}\n\n/**\n * Determine if a value is a Function\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nfunction isFunction(val) {\n  return toString.call(val) === '[object Function]';\n}\n\n/**\n * Determine if a value is a Stream\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nfunction isStream(val) {\n  return isObject(val) && isFunction(val.pipe);\n}\n\n/**\n * Determine if a value is a URLSearchParams object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nfunction isURLSearchParams(val) {\n  return typeof URLSearchParams !== 'undefined' && val instanceof URLSearchParams;\n}\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n * @returns {String} The String freed of excess whitespace\n */\nfunction trim(str) {\n  return str.replace(/^\\s*/, '').replace(/\\s*$/, '');\n}\n\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n *  typeof window -> undefined\n *  typeof document -> undefined\n *\n * react-native:\n *  navigator.product -> 'ReactNative'\n * nativescript\n *  navigator.product -> 'NativeScript' or 'NS'\n */\nfunction isStandardBrowserEnv() {\n  if (typeof navigator !== 'undefined' && (navigator.product === 'ReactNative' || navigator.product === 'NativeScript' || navigator.product === 'NS')) {\n    return false;\n  }\n  return typeof window !== 'undefined' && typeof document !== 'undefined';\n}\n\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n */\nfunction forEach(obj, fn) {\n  // Don't bother if no value provided\n  if (obj === null || typeof obj === 'undefined') {\n    return;\n  }\n\n  // Force an array if not already something iterable\n  if ((typeof obj === 'undefined' ? 'undefined' : _typeof(obj)) !== 'object') {\n    /*eslint no-param-reassign:0*/\n    obj = [obj];\n  }\n\n  if (isArray(obj)) {\n    // Iterate over array values\n    for (var i = 0, l = obj.length; i < l; i++) {\n      fn.call(null, obj[i], i, obj);\n    }\n  } else {\n    // Iterate over object keys\n    for (var key in obj) {\n      if (Object.prototype.hasOwnProperty.call(obj, key)) {\n        fn.call(null, obj[key], key, obj);\n      }\n    }\n  }\n}\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * var result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n * @returns {Object} Result of all merge properties\n */\nfunction merge() /* obj1, obj2, obj3, ... */{\n  var result = {};\n  function assignValue(val, key) {\n    if (_typeof(result[key]) === 'object' && (typeof val === 'undefined' ? 'undefined' : _typeof(val)) === 'object') {\n      result[key] = merge(result[key], val);\n    } else {\n      result[key] = val;\n    }\n  }\n\n  for (var i = 0, l = arguments.length; i < l; i++) {\n    forEach(arguments[i], assignValue);\n  }\n  return result;\n}\n\n/**\n * Function equal to merge with the difference being that no reference\n * to original objects is kept.\n *\n * @see merge\n * @param {Object} obj1 Object to merge\n * @returns {Object} Result of all merge properties\n */\nfunction deepMerge() /* obj1, obj2, obj3, ... */{\n  var result = {};\n  function assignValue(val, key) {\n    if (_typeof(result[key]) === 'object' && (typeof val === 'undefined' ? 'undefined' : _typeof(val)) === 'object') {\n      result[key] = deepMerge(result[key], val);\n    } else if ((typeof val === 'undefined' ? 'undefined' : _typeof(val)) === 'object') {\n      result[key] = deepMerge({}, val);\n    } else {\n      result[key] = val;\n    }\n  }\n\n  for (var i = 0, l = arguments.length; i < l; i++) {\n    forEach(arguments[i], assignValue);\n  }\n  return result;\n}\n\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n * @return {Object} The resulting value of object a\n */\nfunction extend(a, b, thisArg) {\n  forEach(b, function assignValue(val, key) {\n    if (thisArg && typeof val === 'function') {\n      a[key] = bind(val, thisArg);\n    } else {\n      a[key] = val;\n    }\n  });\n  return a;\n}\n\nmodule.exports = {\n  isArray: isArray,\n  isArrayBuffer: isArrayBuffer,\n  isBuffer: isBuffer,\n  isFormData: isFormData,\n  isArrayBufferView: isArrayBufferView,\n  isString: isString,\n  isNumber: isNumber,\n  isObject: isObject,\n  isUndefined: isUndefined,\n  isDate: isDate,\n  isFile: isFile,\n  isBlob: isBlob,\n  isFunction: isFunction,\n  isStream: isStream,\n  isURLSearchParams: isURLSearchParams,\n  isStandardBrowserEnv: isStandardBrowserEnv,\n  forEach: forEach,\n  merge: merge,\n  deepMerge: deepMerge,\n  extend: extend,\n  trim: trim\n};\n\n/***/ }),\n/* 1 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nmodule.exports = function bind(fn, thisArg) {\n  return function wrap() {\n    var args = new Array(arguments.length);\n    for (var i = 0; i < args.length; i++) {\n      args[i] = arguments[i];\n    }\n    return fn.apply(thisArg, args);\n  };\n};\n\n/***/ }),\n/* 2 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar utils = __webpack_require__(0);\n\nfunction encode(val) {\n  return encodeURIComponent(val).replace(/%40/gi, '@').replace(/%3A/gi, ':').replace(/%24/g, '$').replace(/%2C/gi, ',').replace(/%20/g, '+').replace(/%5B/gi, '[').replace(/%5D/gi, ']');\n}\n\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @returns {string} The formatted url\n */\nmodule.exports = function buildURL(url, params, paramsSerializer) {\n  /*eslint no-param-reassign:0*/\n  if (!params) {\n    return url;\n  }\n\n  var serializedParams;\n  if (paramsSerializer) {\n    serializedParams = paramsSerializer(params);\n  } else if (utils.isURLSearchParams(params)) {\n    serializedParams = params.toString();\n  } else {\n    var parts = [];\n\n    utils.forEach(params, function serialize(val, key) {\n      if (val === null || typeof val === 'undefined') {\n        return;\n      }\n\n      if (utils.isArray(val)) {\n        key = key + '[]';\n      } else {\n        val = [val];\n      }\n\n      utils.forEach(val, function parseValue(v) {\n        if (utils.isDate(v)) {\n          v = v.toISOString();\n        } else if (utils.isObject(v)) {\n          v = JSON.stringify(v);\n        }\n        parts.push(encode(key) + '=' + encode(v));\n      });\n    });\n\n    serializedParams = parts.join('&');\n  }\n\n  if (serializedParams) {\n    var hashmarkIndex = url.indexOf('#');\n    if (hashmarkIndex !== -1) {\n      url = url.slice(0, hashmarkIndex);\n    }\n\n    url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n  }\n\n  return url;\n};\n\n/***/ }),\n/* 3 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nmodule.exports = function isCancel(value) {\n  return !!(value && value.__CANCEL__);\n};\n\n/***/ }),\n/* 4 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/* WEBPACK VAR INJECTION */(function(process) {\n\nvar utils = __webpack_require__(0);\nvar normalizeHeaderName = __webpack_require__(19);\n\nvar DEFAULT_CONTENT_TYPE = {\n  'Content-Type': 'application/x-www-form-urlencoded'\n};\n\nfunction setContentTypeIfUnset(headers, value) {\n  if (!utils.isUndefined(headers) && utils.isUndefined(headers['Content-Type'])) {\n    headers['Content-Type'] = value;\n  }\n}\n\nfunction getDefaultAdapter() {\n  var adapter;\n  // Only Node.JS has a process variable that is of [[Class]] process\n  if (typeof process !== 'undefined' && Object.prototype.toString.call(process) === '[object process]') {\n    // For node use HTTP adapter\n    adapter = __webpack_require__(5);\n  } else if (typeof XMLHttpRequest !== 'undefined') {\n    // For browsers use XHR adapter\n    adapter = __webpack_require__(5);\n  }\n  return adapter;\n}\n\nvar defaults = {\n  adapter: getDefaultAdapter(),\n\n  transformRequest: [function transformRequest(data, headers) {\n    normalizeHeaderName(headers, 'Accept');\n    normalizeHeaderName(headers, 'Content-Type');\n    if (utils.isFormData(data) || utils.isArrayBuffer(data) || utils.isBuffer(data) || utils.isStream(data) || utils.isFile(data) || utils.isBlob(data)) {\n      return data;\n    }\n    if (utils.isArrayBufferView(data)) {\n      return data.buffer;\n    }\n    if (utils.isURLSearchParams(data)) {\n      setContentTypeIfUnset(headers, 'application/x-www-form-urlencoded;charset=utf-8');\n      return data.toString();\n    }\n    if (utils.isObject(data)) {\n      setContentTypeIfUnset(headers, 'application/json;charset=utf-8');\n      return JSON.stringify(data);\n    }\n    return data;\n  }],\n\n  transformResponse: [function transformResponse(data) {\n    /*eslint no-param-reassign:0*/\n    if (typeof data === 'string') {\n      try {\n        data = JSON.parse(data);\n      } catch (e) {/* Ignore */}\n    }\n    return data;\n  }],\n\n  /**\n   * A timeout in milliseconds to abort a request. If set to 0 (default) a\n   * timeout is not created.\n   */\n  timeout: 0,\n\n  xsrfCookieName: 'XSRF-TOKEN',\n  xsrfHeaderName: 'X-XSRF-TOKEN',\n\n  maxContentLength: -1,\n\n  validateStatus: function validateStatus(status) {\n    return status >= 200 && status < 300;\n  }\n};\n\ndefaults.headers = {\n  common: {\n    'Accept': 'application/json, text/plain, */*'\n  }\n};\n\nutils.forEach(['delete', 'get', 'head'], function forEachMethodNoData(method) {\n  defaults.headers[method] = {};\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n  defaults.headers[method] = utils.merge(DEFAULT_CONTENT_TYPE);\n});\n\nmodule.exports = defaults;\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(18)))\n\n/***/ }),\n/* 5 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar utils = __webpack_require__(0);\nvar settle = __webpack_require__(20);\nvar buildURL = __webpack_require__(2);\nvar parseHeaders = __webpack_require__(22);\nvar isURLSameOrigin = __webpack_require__(23);\nvar createError = __webpack_require__(6);\n\nmodule.exports = function xhrAdapter(config) {\n  return new Promise(function dispatchXhrRequest(resolve, reject) {\n    var requestData = config.data;\n    var requestHeaders = config.headers;\n\n    if (utils.isFormData(requestData)) {\n      delete requestHeaders['Content-Type']; // Let the browser set it\n    }\n\n    var request = new XMLHttpRequest();\n\n    // HTTP basic authentication\n    if (config.auth) {\n      var username = config.auth.username || '';\n      var password = config.auth.password || '';\n      requestHeaders.Authorization = 'Basic ' + btoa(username + ':' + password);\n    }\n\n    request.open(config.method.toUpperCase(), buildURL(config.url, config.params, config.paramsSerializer), true);\n\n    // Set the request timeout in MS\n    request.timeout = config.timeout;\n\n    // Listen for ready state\n    request.onreadystatechange = function handleLoad() {\n      if (!request || request.readyState !== 4) {\n        return;\n      }\n\n      // The request errored out and we didn't get a response, this will be\n      // handled by onerror instead\n      // With one exception: request that using file: protocol, most browsers\n      // will return status as 0 even though it's a successful request\n      if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {\n        return;\n      }\n\n      // Prepare the response\n      var responseHeaders = 'getAllResponseHeaders' in request ? parseHeaders(request.getAllResponseHeaders()) : null;\n      var responseData = !config.responseType || config.responseType === 'text' ? request.responseText : request.response;\n      var response = {\n        data: responseData,\n        status: request.status,\n        statusText: request.statusText,\n        headers: responseHeaders,\n        config: config,\n        request: request\n      };\n\n      settle(resolve, reject, response);\n\n      // Clean up request\n      request = null;\n    };\n\n    // Handle browser request cancellation (as opposed to a manual cancellation)\n    request.onabort = function handleAbort() {\n      if (!request) {\n        return;\n      }\n\n      reject(createError('Request aborted', config, 'ECONNABORTED', request));\n\n      // Clean up request\n      request = null;\n    };\n\n    // Handle low level network errors\n    request.onerror = function handleError() {\n      // Real errors are hidden from us by the browser\n      // onerror should only fire if it's a network error\n      reject(createError('Network Error', config, null, request));\n\n      // Clean up request\n      request = null;\n    };\n\n    // Handle timeout\n    request.ontimeout = function handleTimeout() {\n      reject(createError('timeout of ' + config.timeout + 'ms exceeded', config, 'ECONNABORTED', request));\n\n      // Clean up request\n      request = null;\n    };\n\n    // Add xsrf header\n    // This is only done if running in a standard browser environment.\n    // Specifically not if we're in a web worker, or react-native.\n    if (utils.isStandardBrowserEnv()) {\n      var cookies = __webpack_require__(24);\n\n      // Add xsrf header\n      var xsrfValue = (config.withCredentials || isURLSameOrigin(config.url)) && config.xsrfCookieName ? cookies.read(config.xsrfCookieName) : undefined;\n\n      if (xsrfValue) {\n        requestHeaders[config.xsrfHeaderName] = xsrfValue;\n      }\n    }\n\n    // Add headers to the request\n    if ('setRequestHeader' in request) {\n      utils.forEach(requestHeaders, function setRequestHeader(val, key) {\n        if (typeof requestData === 'undefined' && key.toLowerCase() === 'content-type') {\n          // Remove Content-Type if data is undefined\n          delete requestHeaders[key];\n        } else {\n          // Otherwise add header to the request\n          request.setRequestHeader(key, val);\n        }\n      });\n    }\n\n    // Add withCredentials to request if needed\n    if (config.withCredentials) {\n      request.withCredentials = true;\n    }\n\n    // Add responseType to request if needed\n    if (config.responseType) {\n      try {\n        request.responseType = config.responseType;\n      } catch (e) {\n        // Expected DOMException thrown by browsers not compatible XMLHttpRequest Level 2.\n        // But, this can be suppressed for 'json' type as it can be parsed by default 'transformResponse' function.\n        if (config.responseType !== 'json') {\n          throw e;\n        }\n      }\n    }\n\n    // Handle progress if needed\n    if (typeof config.onDownloadProgress === 'function') {\n      request.addEventListener('progress', config.onDownloadProgress);\n    }\n\n    // Not all browsers support upload events\n    if (typeof config.onUploadProgress === 'function' && request.upload) {\n      request.upload.addEventListener('progress', config.onUploadProgress);\n    }\n\n    if (config.cancelToken) {\n      // Handle cancellation\n      config.cancelToken.promise.then(function onCanceled(cancel) {\n        if (!request) {\n          return;\n        }\n\n        request.abort();\n        reject(cancel);\n        // Clean up request\n        request = null;\n      });\n    }\n\n    if (requestData === undefined) {\n      requestData = null;\n    }\n\n    // Send the request\n    request.send(requestData);\n  });\n};\n\n/***/ }),\n/* 6 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar enhanceError = __webpack_require__(21);\n\n/**\n * Create an Error with the specified message, config, error code, request and response.\n *\n * @param {string} message The error message.\n * @param {Object} config The config.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The created error.\n */\nmodule.exports = function createError(message, config, code, request, response) {\n  var error = new Error(message);\n  return enhanceError(error, config, code, request, response);\n};\n\n/***/ }),\n/* 7 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar utils = __webpack_require__(0);\n\n/**\n * Config-specific merge-function which creates a new config-object\n * by merging two configuration objects together.\n *\n * @param {Object} config1\n * @param {Object} config2\n * @returns {Object} New object resulting from merging config2 to config1\n */\nmodule.exports = function mergeConfig(config1, config2) {\n  // eslint-disable-next-line no-param-reassign\n  config2 = config2 || {};\n  var config = {};\n\n  utils.forEach(['url', 'method', 'params', 'data'], function valueFromConfig2(prop) {\n    if (typeof config2[prop] !== 'undefined') {\n      config[prop] = config2[prop];\n    }\n  });\n\n  utils.forEach(['headers', 'auth', 'proxy'], function mergeDeepProperties(prop) {\n    if (utils.isObject(config2[prop])) {\n      config[prop] = utils.deepMerge(config1[prop], config2[prop]);\n    } else if (typeof config2[prop] !== 'undefined') {\n      config[prop] = config2[prop];\n    } else if (utils.isObject(config1[prop])) {\n      config[prop] = utils.deepMerge(config1[prop]);\n    } else if (typeof config1[prop] !== 'undefined') {\n      config[prop] = config1[prop];\n    }\n  });\n\n  utils.forEach(['baseURL', 'transformRequest', 'transformResponse', 'paramsSerializer', 'timeout', 'withCredentials', 'adapter', 'responseType', 'xsrfCookieName', 'xsrfHeaderName', 'onUploadProgress', 'onDownloadProgress', 'maxContentLength', 'validateStatus', 'maxRedirects', 'httpAgent', 'httpsAgent', 'cancelToken', 'socketPath'], function defaultToConfig2(prop) {\n    if (typeof config2[prop] !== 'undefined') {\n      config[prop] = config2[prop];\n    } else if (typeof config1[prop] !== 'undefined') {\n      config[prop] = config1[prop];\n    }\n  });\n\n  return config;\n};\n\n/***/ }),\n/* 8 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n/**\n * A `Cancel` is an object that is thrown when an operation is canceled.\n *\n * @class\n * @param {string=} message The message.\n */\n\nfunction Cancel(message) {\n  this.message = message;\n}\n\nCancel.prototype.toString = function toString() {\n  return 'Cancel' + (this.message ? ': ' + this.message : '');\n};\n\nCancel.prototype.__CANCEL__ = true;\n\nmodule.exports = Cancel;\n\n/***/ }),\n/* 9 */\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = __webpack_require__(10);\n\n\n/***/ }),\n/* 10 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\n\nvar cov_15j8tpybze = function () {\n    var path = '/home/mike/projects/axios-request/src/axios-request.js',\n        hash = '59a64c6be56ac2c7f8f8ad25e520b8b4e5bc6060',\n        global = new Function('return this')(),\n        gcv = '__coverage__',\n        coverageData = {\n        path: '/home/mike/projects/axios-request/src/axios-request.js',\n        statementMap: {\n            '0': {\n                start: {\n                    line: 5,\n                    column: 8\n                },\n                end: {\n                    line: 5,\n                    column: 27\n                }\n            },\n            '1': {\n                start: {\n                    line: 6,\n                    column: 8\n                },\n                end: {\n                    line: 6,\n                    column: 32\n                }\n            },\n            '2': {\n                start: {\n                    line: 7,\n                    column: 8\n                },\n                end: {\n                    line: 7,\n                    column: 26\n                }\n            },\n            '3': {\n                start: {\n                    line: 8,\n                    column: 8\n                },\n                end: {\n                    line: 8,\n                    column: 27\n                }\n            },\n            '4': {\n                start: {\n                    line: 9,\n                    column: 8\n                },\n                end: {\n                    line: 9,\n                    column: 36\n                }\n            },\n            '5': {\n                start: {\n                    line: 10,\n                    column: 8\n                },\n                end: {\n                    line: 13,\n                    column: 10\n                }\n            },\n            '6': {\n                start: {\n                    line: 14,\n                    column: 8\n                },\n                end: {\n                    line: 14,\n                    column: 33\n                }\n            },\n            '7': {\n                start: {\n                    line: 15,\n                    column: 8\n                },\n                end: {\n                    line: 15,\n                    column: 25\n                }\n            },\n            '8': {\n                start: {\n                    line: 18,\n                    column: 8\n                },\n                end: {\n                    line: 18,\n                    column: 59\n                }\n            },\n            '9': {\n                start: {\n                    line: 21,\n                    column: 8\n                },\n                end: {\n                    line: 21,\n                    column: 23\n                }\n            },\n            '10': {\n                start: {\n                    line: 24,\n                    column: 8\n                },\n                end: {\n                    line: 24,\n                    column: 40\n                }\n            },\n            '11': {\n                start: {\n                    line: 27,\n                    column: 8\n                },\n                end: {\n                    line: 40,\n                    column: 9\n                }\n            },\n            '12': {\n                start: {\n                    line: 28,\n                    column: 27\n                },\n                end: {\n                    line: 28,\n                    column: 53\n                }\n            },\n            '13': {\n                start: {\n                    line: 29,\n                    column: 28\n                },\n                end: {\n                    line: 29,\n                    column: 49\n                }\n            },\n            '14': {\n                start: {\n                    line: 31,\n                    column: 12\n                },\n                end: {\n                    line: 33,\n                    column: 13\n                }\n            },\n            '15': {\n                start: {\n                    line: 32,\n                    column: 16\n                },\n                end: {\n                    line: 32,\n                    column: 25\n                }\n            },\n            '16': {\n                start: {\n                    line: 34,\n                    column: 12\n                },\n                end: {\n                    line: 36,\n                    column: 13\n                }\n            },\n            '17': {\n                start: {\n                    line: 35,\n                    column: 16\n                },\n                end: {\n                    line: 35,\n                    column: 38\n                }\n            },\n            '18': {\n                start: {\n                    line: 38,\n                    column: 12\n                },\n                end: {\n                    line: 38,\n                    column: 100\n                }\n            },\n            '19': {\n                start: {\n                    line: 38,\n                    column: 66\n                },\n                end: {\n                    line: 38,\n                    column: 97\n                }\n            },\n            '20': {\n                start: {\n                    line: 39,\n                    column: 12\n                },\n                end: {\n                    line: 39,\n                    column: 102\n                }\n            },\n            '21': {\n                start: {\n                    line: 39,\n                    column: 61\n                },\n                end: {\n                    line: 39,\n                    column: 99\n                }\n            },\n            '22': {\n                start: {\n                    line: 41,\n                    column: 8\n                },\n                end: {\n                    line: 41,\n                    column: 20\n                }\n            },\n            '23': {\n                start: {\n                    line: 44,\n                    column: 8\n                },\n                end: {\n                    line: 46,\n                    column: 9\n                }\n            },\n            '24': {\n                start: {\n                    line: 45,\n                    column: 12\n                },\n                end: {\n                    line: 45,\n                    column: 42\n                }\n            },\n            '25': {\n                start: {\n                    line: 47,\n                    column: 8\n                },\n                end: {\n                    line: 47,\n                    column: 92\n                }\n            },\n            '26': {\n                start: {\n                    line: 47,\n                    column: 63\n                },\n                end: {\n                    line: 47,\n                    column: 90\n                }\n            },\n            '27': {\n                start: {\n                    line: 50,\n                    column: 8\n                },\n                end: {\n                    line: 52,\n                    column: 9\n                }\n            },\n            '28': {\n                start: {\n                    line: 51,\n                    column: 12\n                },\n                end: {\n                    line: 51,\n                    column: 52\n                }\n            },\n            '29': {\n                start: {\n                    line: 53,\n                    column: 8\n                },\n                end: {\n                    line: 53,\n                    column: 112\n                }\n            },\n            '30': {\n                start: {\n                    line: 53,\n                    column: 73\n                },\n                end: {\n                    line: 53,\n                    column: 110\n                }\n            },\n            '31': {\n                start: {\n                    line: 56,\n                    column: 8\n                },\n                end: {\n                    line: 58,\n                    column: 9\n                }\n            },\n            '32': {\n                start: {\n                    line: 57,\n                    column: 12\n                },\n                end: {\n                    line: 57,\n                    column: 43\n                }\n            },\n            '33': {\n                start: {\n                    line: 59,\n                    column: 8\n                },\n                end: {\n                    line: 59,\n                    column: 96\n                }\n            },\n            '34': {\n                start: {\n                    line: 59,\n                    column: 65\n                },\n                end: {\n                    line: 59,\n                    column: 94\n                }\n            },\n            '35': {\n                start: {\n                    line: 62,\n                    column: 8\n                },\n                end: {\n                    line: 62,\n                    column: 37\n                }\n            },\n            '36': {\n                start: {\n                    line: 63,\n                    column: 8\n                },\n                end: {\n                    line: 63,\n                    column: 38\n                }\n            },\n            '37': {\n                start: {\n                    line: 66,\n                    column: 8\n                },\n                end: {\n                    line: 66,\n                    column: 41\n                }\n            },\n            '38': {\n                start: {\n                    line: 67,\n                    column: 8\n                },\n                end: {\n                    line: 67,\n                    column: 24\n                }\n            },\n            '39': {\n                start: {\n                    line: 70,\n                    column: 8\n                },\n                end: {\n                    line: 70,\n                    column: 41\n                }\n            },\n            '40': {\n                start: {\n                    line: 71,\n                    column: 8\n                },\n                end: {\n                    line: 71,\n                    column: 47\n                }\n            },\n            '41': {\n                start: {\n                    line: 72,\n                    column: 8\n                },\n                end: {\n                    line: 76,\n                    column: 9\n                }\n            },\n            '42': {\n                start: {\n                    line: 73,\n                    column: 12\n                },\n                end: {\n                    line: 73,\n                    column: 53\n                }\n            },\n            '43': {\n                start: {\n                    line: 75,\n                    column: 12\n                },\n                end: {\n                    line: 75,\n                    column: 24\n                }\n            },\n            '44': {\n                start: {\n                    line: 78,\n                    column: 20\n                },\n                end: {\n                    line: 81,\n                    column: 5\n                }\n            },\n            '45': {\n                start: {\n                    line: 79,\n                    column: 30\n                },\n                end: {\n                    line: 79,\n                    column: 75\n                }\n            },\n            '46': {\n                start: {\n                    line: 80,\n                    column: 31\n                },\n                end: {\n                    line: 80,\n                    column: 77\n                }\n            },\n            '47': {\n                start: {\n                    line: 82,\n                    column: 21\n                },\n                end: {\n                    line: 82,\n                    column: 53\n                }\n            },\n            '48': {\n                start: {\n                    line: 83,\n                    column: 22\n                },\n                end: {\n                    line: 83,\n                    column: 55\n                }\n            },\n            '49': {\n                start: {\n                    line: 85,\n                    column: 8\n                },\n                end: {\n                    line: 100,\n                    column: 10\n                }\n            },\n            '50': {\n                start: {\n                    line: 86,\n                    column: 12\n                },\n                end: {\n                    line: 86,\n                    column: 50\n                }\n            },\n            '51': {\n                start: {\n                    line: 88,\n                    column: 12\n                },\n                end: {\n                    line: 90,\n                    column: 13\n                }\n            },\n            '52': {\n                start: {\n                    line: 89,\n                    column: 16\n                },\n                end: {\n                    line: 89,\n                    column: 47\n                }\n            },\n            '53': {\n                start: {\n                    line: 91,\n                    column: 12\n                },\n                end: {\n                    line: 98,\n                    column: 13\n                }\n            },\n            '54': {\n                start: {\n                    line: 92,\n                    column: 32\n                },\n                end: {\n                    line: 94,\n                    column: 24\n                }\n            },\n            '55': {\n                start: {\n                    line: 93,\n                    column: 20\n                },\n                end: {\n                    line: 93,\n                    column: 73\n                }\n            },\n            '56': {\n                start: {\n                    line: 95,\n                    column: 16\n                },\n                end: {\n                    line: 95,\n                    column: 49\n                }\n            },\n            '57': {\n                start: {\n                    line: 97,\n                    column: 16\n                },\n                end: {\n                    line: 97,\n                    column: 55\n                }\n            },\n            '58': {\n                start: {\n                    line: 99,\n                    column: 12\n                },\n                end: {\n                    line: 99,\n                    column: 28\n                }\n            },\n            '59': {\n                start: {\n                    line: 106,\n                    column: 12\n                },\n                end: {\n                    line: 106,\n                    column: 52\n                }\n            },\n            '60': {\n                start: {\n                    line: 107,\n                    column: 8\n                },\n                end: {\n                    line: 109,\n                    column: 9\n                }\n            },\n            '61': {\n                start: {\n                    line: 108,\n                    column: 12\n                },\n                end: {\n                    line: 108,\n                    column: 68\n                }\n            },\n            '62': {\n                start: {\n                    line: 110,\n                    column: 8\n                },\n                end: {\n                    line: 112,\n                    column: 9\n                }\n            },\n            '63': {\n                start: {\n                    line: 111,\n                    column: 12\n                },\n                end: {\n                    line: 111,\n                    column: 32\n                }\n            },\n            '64': {\n                start: {\n                    line: 113,\n                    column: 8\n                },\n                end: {\n                    line: 113,\n                    column: 43\n                }\n            },\n            '65': {\n                start: {\n                    line: 114,\n                    column: 8\n                },\n                end: {\n                    line: 114,\n                    column: 36\n                }\n            },\n            '66': {\n                start: {\n                    line: 115,\n                    column: 8\n                },\n                end: {\n                    line: 124,\n                    column: 70\n                }\n            },\n            '67': {\n                start: {\n                    line: 120,\n                    column: 16\n                },\n                end: {\n                    line: 120,\n                    column: 47\n                }\n            },\n            '68': {\n                start: {\n                    line: 123,\n                    column: 25\n                },\n                end: {\n                    line: 123,\n                    column: 66\n                }\n            },\n            '69': {\n                start: {\n                    line: 124,\n                    column: 26\n                },\n                end: {\n                    line: 124,\n                    column: 68\n                }\n            }\n        },\n        fnMap: {\n            '0': {\n                name: '(anonymous_0)',\n                decl: {\n                    start: {\n                        line: 4,\n                        column: 4\n                    },\n                    end: {\n                        line: 4,\n                        column: 5\n                    }\n                },\n                loc: {\n                    start: {\n                        line: 4,\n                        column: 35\n                    },\n                    end: {\n                        line: 16,\n                        column: 5\n                    }\n                },\n                line: 4\n            },\n            '1': {\n                name: '(anonymous_1)',\n                decl: {\n                    start: {\n                        line: 17,\n                        column: 17\n                    },\n                    end: {\n                        line: 17,\n                        column: 18\n                    }\n                },\n                loc: {\n                    start: {\n                        line: 17,\n                        column: 30\n                    },\n                    end: {\n                        line: 19,\n                        column: 5\n                    }\n                },\n                line: 17\n            },\n            '2': {\n                name: '(anonymous_2)',\n                decl: {\n                    start: {\n                        line: 20,\n                        column: 13\n                    },\n                    end: {\n                        line: 20,\n                        column: 14\n                    }\n                },\n                loc: {\n                    start: {\n                        line: 20,\n                        column: 22\n                    },\n                    end: {\n                        line: 22,\n                        column: 5\n                    }\n                },\n                line: 20\n            },\n            '3': {\n                name: '(anonymous_3)',\n                decl: {\n                    start: {\n                        line: 23,\n                        column: 17\n                    },\n                    end: {\n                        line: 23,\n                        column: 18\n                    }\n                },\n                loc: {\n                    start: {\n                        line: 23,\n                        column: 38\n                    },\n                    end: {\n                        line: 25,\n                        column: 5\n                    }\n                },\n                line: 23\n            },\n            '4': {\n                name: '(anonymous_4)',\n                decl: {\n                    start: {\n                        line: 26,\n                        column: 13\n                    },\n                    end: {\n                        line: 26,\n                        column: 14\n                    }\n                },\n                loc: {\n                    start: {\n                        line: 26,\n                        column: 25\n                    },\n                    end: {\n                        line: 42,\n                        column: 5\n                    }\n                },\n                line: 26\n            },\n            '5': {\n                name: '(anonymous_5)',\n                decl: {\n                    start: {\n                        line: 38,\n                        column: 52\n                    },\n                    end: {\n                        line: 38,\n                        column: 53\n                    }\n                },\n                loc: {\n                    start: {\n                        line: 38,\n                        column: 66\n                    },\n                    end: {\n                        line: 38,\n                        column: 97\n                    }\n                },\n                line: 38\n            },\n            '6': {\n                name: '(anonymous_6)',\n                decl: {\n                    start: {\n                        line: 39,\n                        column: 47\n                    },\n                    end: {\n                        line: 39,\n                        column: 48\n                    }\n                },\n                loc: {\n                    start: {\n                        line: 39,\n                        column: 61\n                    },\n                    end: {\n                        line: 39,\n                        column: 99\n                    }\n                },\n                line: 39\n            },\n            '7': {\n                name: '(anonymous_7)',\n                decl: {\n                    start: {\n                        line: 43,\n                        column: 16\n                    },\n                    end: {\n                        line: 43,\n                        column: 17\n                    }\n                },\n                loc: {\n                    start: {\n                        line: 43,\n                        column: 28\n                    },\n                    end: {\n                        line: 48,\n                        column: 5\n                    }\n                },\n                line: 43\n            },\n            '8': {\n                name: '(anonymous_8)',\n                decl: {\n                    start: {\n                        line: 47,\n                        column: 46\n                    },\n                    end: {\n                        line: 47,\n                        column: 47\n                    }\n                },\n                loc: {\n                    start: {\n                        line: 47,\n                        column: 63\n                    },\n                    end: {\n                        line: 47,\n                        column: 90\n                    }\n                },\n                line: 47\n            },\n            '9': {\n                name: '(anonymous_9)',\n                decl: {\n                    start: {\n                        line: 49,\n                        column: 16\n                    },\n                    end: {\n                        line: 49,\n                        column: 17\n                    }\n                },\n                loc: {\n                    start: {\n                        line: 49,\n                        column: 28\n                    },\n                    end: {\n                        line: 54,\n                        column: 5\n                    }\n                },\n                line: 49\n            },\n            '10': {\n                name: '(anonymous_10)',\n                decl: {\n                    start: {\n                        line: 53,\n                        column: 56\n                    },\n                    end: {\n                        line: 53,\n                        column: 57\n                    }\n                },\n                loc: {\n                    start: {\n                        line: 53,\n                        column: 73\n                    },\n                    end: {\n                        line: 53,\n                        column: 110\n                    }\n                },\n                line: 53\n            },\n            '11': {\n                name: '(anonymous_11)',\n                decl: {\n                    start: {\n                        line: 55,\n                        column: 17\n                    },\n                    end: {\n                        line: 55,\n                        column: 18\n                    }\n                },\n                loc: {\n                    start: {\n                        line: 55,\n                        column: 29\n                    },\n                    end: {\n                        line: 60,\n                        column: 5\n                    }\n                },\n                line: 55\n            },\n            '12': {\n                name: '(anonymous_12)',\n                decl: {\n                    start: {\n                        line: 59,\n                        column: 47\n                    },\n                    end: {\n                        line: 59,\n                        column: 48\n                    }\n                },\n                loc: {\n                    start: {\n                        line: 59,\n                        column: 65\n                    },\n                    end: {\n                        line: 59,\n                        column: 94\n                    }\n                },\n                line: 59\n            },\n            '13': {\n                name: '(anonymous_13)',\n                decl: {\n                    start: {\n                        line: 61,\n                        column: 26\n                    },\n                    end: {\n                        line: 61,\n                        column: 27\n                    }\n                },\n                loc: {\n                    start: {\n                        line: 61,\n                        column: 38\n                    },\n                    end: {\n                        line: 64,\n                        column: 5\n                    }\n                },\n                line: 61\n            },\n            '14': {\n                name: '(anonymous_14)',\n                decl: {\n                    start: {\n                        line: 65,\n                        column: 30\n                    },\n                    end: {\n                        line: 65,\n                        column: 31\n                    }\n                },\n                loc: {\n                    start: {\n                        line: 65,\n                        column: 52\n                    },\n                    end: {\n                        line: 68,\n                        column: 5\n                    }\n                },\n                line: 65\n            },\n            '15': {\n                name: '(anonymous_15)',\n                decl: {\n                    start: {\n                        line: 69,\n                        column: 31\n                    },\n                    end: {\n                        line: 69,\n                        column: 32\n                    }\n                },\n                loc: {\n                    start: {\n                        line: 69,\n                        column: 50\n                    },\n                    end: {\n                        line: 77,\n                        column: 5\n                    }\n                },\n                line: 69\n            },\n            '16': {\n                name: '(anonymous_16)',\n                decl: {\n                    start: {\n                        line: 78,\n                        column: 11\n                    },\n                    end: {\n                        line: 78,\n                        column: 12\n                    }\n                },\n                loc: {\n                    start: {\n                        line: 78,\n                        column: 20\n                    },\n                    end: {\n                        line: 81,\n                        column: 5\n                    }\n                },\n                line: 78\n            },\n            '17': {\n                name: '(anonymous_17)',\n                decl: {\n                    start: {\n                        line: 79,\n                        column: 13\n                    },\n                    end: {\n                        line: 79,\n                        column: 14\n                    }\n                },\n                loc: {\n                    start: {\n                        line: 79,\n                        column: 30\n                    },\n                    end: {\n                        line: 79,\n                        column: 75\n                    }\n                },\n                line: 79\n            },\n            '18': {\n                name: '(anonymous_18)',\n                decl: {\n                    start: {\n                        line: 80,\n                        column: 14\n                    },\n                    end: {\n                        line: 80,\n                        column: 15\n                    }\n                },\n                loc: {\n                    start: {\n                        line: 80,\n                        column: 31\n                    },\n                    end: {\n                        line: 80,\n                        column: 77\n                    }\n                },\n                line: 80\n            },\n            '19': {\n                name: '(anonymous_19)',\n                decl: {\n                    start: {\n                        line: 82,\n                        column: 10\n                    },\n                    end: {\n                        line: 82,\n                        column: 11\n                    }\n                },\n                loc: {\n                    start: {\n                        line: 82,\n                        column: 21\n                    },\n                    end: {\n                        line: 82,\n                        column: 53\n                    }\n                },\n                line: 82\n            },\n            '20': {\n                name: '(anonymous_20)',\n                decl: {\n                    start: {\n                        line: 83,\n                        column: 11\n                    },\n                    end: {\n                        line: 83,\n                        column: 12\n                    }\n                },\n                loc: {\n                    start: {\n                        line: 83,\n                        column: 22\n                    },\n                    end: {\n                        line: 83,\n                        column: 55\n                    }\n                },\n                line: 83\n            },\n            '21': {\n                name: '(anonymous_21)',\n                decl: {\n                    start: {\n                        line: 84,\n                        column: 21\n                    },\n                    end: {\n                        line: 84,\n                        column: 22\n                    }\n                },\n                loc: {\n                    start: {\n                        line: 85,\n                        column: 8\n                    },\n                    end: {\n                        line: 100,\n                        column: 10\n                    }\n                },\n                line: 85\n            },\n            '22': {\n                name: '(anonymous_22)',\n                decl: {\n                    start: {\n                        line: 85,\n                        column: 57\n                    },\n                    end: {\n                        line: 85,\n                        column: 58\n                    }\n                },\n                loc: {\n                    start: {\n                        line: 85,\n                        column: 71\n                    },\n                    end: {\n                        line: 100,\n                        column: 9\n                    }\n                },\n                line: 85\n            },\n            '23': {\n                name: '(anonymous_23)',\n                decl: {\n                    start: {\n                        line: 92,\n                        column: 43\n                    },\n                    end: {\n                        line: 92,\n                        column: 44\n                    }\n                },\n                loc: {\n                    start: {\n                        line: 92,\n                        column: 49\n                    },\n                    end: {\n                        line: 94,\n                        column: 17\n                    }\n                },\n                line: 92\n            },\n            '24': {\n                name: '(anonymous_24)',\n                decl: {\n                    start: {\n                        line: 101,\n                        column: 18\n                    },\n                    end: {\n                        line: 101,\n                        column: 19\n                    }\n                },\n                loc: {\n                    start: {\n                        line: 101,\n                        column: 54\n                    },\n                    end: {\n                        line: 125,\n                        column: 5\n                    }\n                },\n                line: 101\n            },\n            '25': {\n                name: '(anonymous_25)',\n                decl: {\n                    start: {\n                        line: 119,\n                        column: 47\n                    },\n                    end: {\n                        line: 119,\n                        column: 48\n                    }\n                },\n                loc: {\n                    start: {\n                        line: 119,\n                        column: 54\n                    },\n                    end: {\n                        line: 121,\n                        column: 13\n                    }\n                },\n                line: 119\n            },\n            '26': {\n                name: '(anonymous_26)',\n                decl: {\n                    start: {\n                        line: 123,\n                        column: 18\n                    },\n                    end: {\n                        line: 123,\n                        column: 19\n                    }\n                },\n                loc: {\n                    start: {\n                        line: 123,\n                        column: 25\n                    },\n                    end: {\n                        line: 123,\n                        column: 66\n                    }\n                },\n                line: 123\n            },\n            '27': {\n                name: '(anonymous_27)',\n                decl: {\n                    start: {\n                        line: 124,\n                        column: 19\n                    },\n                    end: {\n                        line: 124,\n                        column: 20\n                    }\n                },\n                loc: {\n                    start: {\n                        line: 124,\n                        column: 26\n                    },\n                    end: {\n                        line: 124,\n                        column: 68\n                    }\n                },\n                line: 124\n            }\n        },\n        branchMap: {\n            '0': {\n                loc: {\n                    start: {\n                        line: 4,\n                        column: 21\n                    },\n                    end: {\n                        line: 4,\n                        column: 33\n                    }\n                },\n                type: 'default-arg',\n                locations: [{\n                    start: {\n                        line: 4,\n                        column: 31\n                    },\n                    end: {\n                        line: 4,\n                        column: 33\n                    }\n                }],\n                line: 4\n            },\n            '1': {\n                loc: {\n                    start: {\n                        line: 27,\n                        column: 8\n                    },\n                    end: {\n                        line: 40,\n                        column: 9\n                    }\n                },\n                type: 'if',\n                locations: [{\n                    start: {\n                        line: 27,\n                        column: 8\n                    },\n                    end: {\n                        line: 40,\n                        column: 9\n                    }\n                }, {\n                    start: {\n                        line: 27,\n                        column: 8\n                    },\n                    end: {\n                        line: 40,\n                        column: 9\n                    }\n                }],\n                line: 27\n            },\n            '2': {\n                loc: {\n                    start: {\n                        line: 31,\n                        column: 12\n                    },\n                    end: {\n                        line: 33,\n                        column: 13\n                    }\n                },\n                type: 'if',\n                locations: [{\n                    start: {\n                        line: 31,\n                        column: 12\n                    },\n                    end: {\n                        line: 33,\n                        column: 13\n                    }\n                }, {\n                    start: {\n                        line: 31,\n                        column: 12\n                    },\n                    end: {\n                        line: 33,\n                        column: 13\n                    }\n                }],\n                line: 31\n            },\n            '3': {\n                loc: {\n                    start: {\n                        line: 34,\n                        column: 12\n                    },\n                    end: {\n                        line: 36,\n                        column: 13\n                    }\n                },\n                type: 'if',\n                locations: [{\n                    start: {\n                        line: 34,\n                        column: 12\n                    },\n                    end: {\n                        line: 36,\n                        column: 13\n                    }\n                }, {\n                    start: {\n                        line: 34,\n                        column: 12\n                    },\n                    end: {\n                        line: 36,\n                        column: 13\n                    }\n                }],\n                line: 34\n            },\n            '4': {\n                loc: {\n                    start: {\n                        line: 44,\n                        column: 8\n                    },\n                    end: {\n                        line: 46,\n                        column: 9\n                    }\n                },\n                type: 'if',\n                locations: [{\n                    start: {\n                        line: 44,\n                        column: 8\n                    },\n                    end: {\n                        line: 46,\n                        column: 9\n                    }\n                }, {\n                    start: {\n                        line: 44,\n                        column: 8\n                    },\n                    end: {\n                        line: 46,\n                        column: 9\n                    }\n                }],\n                line: 44\n            },\n            '5': {\n                loc: {\n                    start: {\n                        line: 50,\n                        column: 8\n                    },\n                    end: {\n                        line: 52,\n                        column: 9\n                    }\n                },\n                type: 'if',\n                locations: [{\n                    start: {\n                        line: 50,\n                        column: 8\n                    },\n                    end: {\n                        line: 52,\n                        column: 9\n                    }\n                }, {\n                    start: {\n                        line: 50,\n                        column: 8\n                    },\n                    end: {\n                        line: 52,\n                        column: 9\n                    }\n                }],\n                line: 50\n            },\n            '6': {\n                loc: {\n                    start: {\n                        line: 56,\n                        column: 8\n                    },\n                    end: {\n                        line: 58,\n                        column: 9\n                    }\n                },\n                type: 'if',\n                locations: [{\n                    start: {\n                        line: 56,\n                        column: 8\n                    },\n                    end: {\n                        line: 58,\n                        column: 9\n                    }\n                }, {\n                    start: {\n                        line: 56,\n                        column: 8\n                    },\n                    end: {\n                        line: 58,\n                        column: 9\n                    }\n                }],\n                line: 56\n            },\n            '7': {\n                loc: {\n                    start: {\n                        line: 72,\n                        column: 8\n                    },\n                    end: {\n                        line: 76,\n                        column: 9\n                    }\n                },\n                type: 'if',\n                locations: [{\n                    start: {\n                        line: 72,\n                        column: 8\n                    },\n                    end: {\n                        line: 76,\n                        column: 9\n                    }\n                }, {\n                    start: {\n                        line: 72,\n                        column: 8\n                    },\n                    end: {\n                        line: 76,\n                        column: 9\n                    }\n                }],\n                line: 72\n            },\n            '8': {\n                loc: {\n                    start: {\n                        line: 88,\n                        column: 12\n                    },\n                    end: {\n                        line: 90,\n                        column: 13\n                    }\n                },\n                type: 'if',\n                locations: [{\n                    start: {\n                        line: 88,\n                        column: 12\n                    },\n                    end: {\n                        line: 90,\n                        column: 13\n                    }\n                }, {\n                    start: {\n                        line: 88,\n                        column: 12\n                    },\n                    end: {\n                        line: 90,\n                        column: 13\n                    }\n                }],\n                line: 88\n            },\n            '9': {\n                loc: {\n                    start: {\n                        line: 91,\n                        column: 12\n                    },\n                    end: {\n                        line: 98,\n                        column: 13\n                    }\n                },\n                type: 'if',\n                locations: [{\n                    start: {\n                        line: 91,\n                        column: 12\n                    },\n                    end: {\n                        line: 98,\n                        column: 13\n                    }\n                }, {\n                    start: {\n                        line: 91,\n                        column: 12\n                    },\n                    end: {\n                        line: 98,\n                        column: 13\n                    }\n                }],\n                line: 91\n            },\n            '10': {\n                loc: {\n                    start: {\n                        line: 91,\n                        column: 16\n                    },\n                    end: {\n                        line: 91,\n                        column: 49\n                    }\n                },\n                type: 'binary-expr',\n                locations: [{\n                    start: {\n                        line: 91,\n                        column: 16\n                    },\n                    end: {\n                        line: 91,\n                        column: 20\n                    }\n                }, {\n                    start: {\n                        line: 91,\n                        column: 24\n                    },\n                    end: {\n                        line: 91,\n                        column: 49\n                    }\n                }],\n                line: 91\n            },\n            '11': {\n                loc: {\n                    start: {\n                        line: 101,\n                        column: 27\n                    },\n                    end: {\n                        line: 101,\n                        column: 39\n                    }\n                },\n                type: 'default-arg',\n                locations: [{\n                    start: {\n                        line: 101,\n                        column: 37\n                    },\n                    end: {\n                        line: 101,\n                        column: 39\n                    }\n                }],\n                line: 101\n            },\n            '12': {\n                loc: {\n                    start: {\n                        line: 107,\n                        column: 8\n                    },\n                    end: {\n                        line: 109,\n                        column: 9\n                    }\n                },\n                type: 'if',\n                locations: [{\n                    start: {\n                        line: 107,\n                        column: 8\n                    },\n                    end: {\n                        line: 109,\n                        column: 9\n                    }\n                }, {\n                    start: {\n                        line: 107,\n                        column: 8\n                    },\n                    end: {\n                        line: 109,\n                        column: 9\n                    }\n                }],\n                line: 107\n            },\n            '13': {\n                loc: {\n                    start: {\n                        line: 107,\n                        column: 12\n                    },\n                    end: {\n                        line: 107,\n                        column: 59\n                    }\n                },\n                type: 'binary-expr',\n                locations: [{\n                    start: {\n                        line: 107,\n                        column: 12\n                    },\n                    end: {\n                        line: 107,\n                        column: 20\n                    }\n                }, {\n                    start: {\n                        line: 107,\n                        column: 24\n                    },\n                    end: {\n                        line: 107,\n                        column: 33\n                    }\n                }, {\n                    start: {\n                        line: 107,\n                        column: 37\n                    },\n                    end: {\n                        line: 107,\n                        column: 59\n                    }\n                }],\n                line: 107\n            },\n            '14': {\n                loc: {\n                    start: {\n                        line: 110,\n                        column: 8\n                    },\n                    end: {\n                        line: 112,\n                        column: 9\n                    }\n                },\n                type: 'if',\n                locations: [{\n                    start: {\n                        line: 110,\n                        column: 8\n                    },\n                    end: {\n                        line: 112,\n                        column: 9\n                    }\n                }, {\n                    start: {\n                        line: 110,\n                        column: 8\n                    },\n                    end: {\n                        line: 112,\n                        column: 9\n                    }\n                }],\n                line: 110\n            }\n        },\n        s: {\n            '0': 0,\n            '1': 0,\n            '2': 0,\n            '3': 0,\n            '4': 0,\n            '5': 0,\n            '6': 0,\n            '7': 0,\n            '8': 0,\n            '9': 0,\n            '10': 0,\n            '11': 0,\n            '12': 0,\n            '13': 0,\n            '14': 0,\n            '15': 0,\n            '16': 0,\n            '17': 0,\n            '18': 0,\n            '19': 0,\n            '20': 0,\n            '21': 0,\n            '22': 0,\n            '23': 0,\n            '24': 0,\n            '25': 0,\n            '26': 0,\n            '27': 0,\n            '28': 0,\n            '29': 0,\n            '30': 0,\n            '31': 0,\n            '32': 0,\n            '33': 0,\n            '34': 0,\n            '35': 0,\n            '36': 0,\n            '37': 0,\n            '38': 0,\n            '39': 0,\n            '40': 0,\n            '41': 0,\n            '42': 0,\n            '43': 0,\n            '44': 0,\n            '45': 0,\n            '46': 0,\n            '47': 0,\n            '48': 0,\n            '49': 0,\n            '50': 0,\n            '51': 0,\n            '52': 0,\n            '53': 0,\n            '54': 0,\n            '55': 0,\n            '56': 0,\n            '57': 0,\n            '58': 0,\n            '59': 0,\n            '60': 0,\n            '61': 0,\n            '62': 0,\n            '63': 0,\n            '64': 0,\n            '65': 0,\n            '66': 0,\n            '67': 0,\n            '68': 0,\n            '69': 0\n        },\n        f: {\n            '0': 0,\n            '1': 0,\n            '2': 0,\n            '3': 0,\n            '4': 0,\n            '5': 0,\n            '6': 0,\n            '7': 0,\n            '8': 0,\n            '9': 0,\n            '10': 0,\n            '11': 0,\n            '12': 0,\n            '13': 0,\n            '14': 0,\n            '15': 0,\n            '16': 0,\n            '17': 0,\n            '18': 0,\n            '19': 0,\n            '20': 0,\n            '21': 0,\n            '22': 0,\n            '23': 0,\n            '24': 0,\n            '25': 0,\n            '26': 0,\n            '27': 0\n        },\n        b: {\n            '0': [0],\n            '1': [0, 0],\n            '2': [0, 0],\n            '3': [0, 0],\n            '4': [0, 0],\n            '5': [0, 0],\n            '6': [0, 0],\n            '7': [0, 0],\n            '8': [0, 0],\n            '9': [0, 0],\n            '10': [0, 0],\n            '11': [0],\n            '12': [0, 0],\n            '13': [0, 0, 0],\n            '14': [0, 0]\n        },\n        _coverageSchema: '332fd63041d2c1bcb487cc26dd0d5f7d97098a6c'\n    },\n        coverage = global[gcv] || (global[gcv] = {});\n\n    if (coverage[path] && coverage[path].hash === hash) {\n        return coverage[path];\n    }\n\n    coverageData.hash = hash;\n    return coverage[path] = coverageData;\n}();\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _axios = __webpack_require__(11);\n\nvar _axios2 = _interopRequireDefault(_axios);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar Request = function Request(url) {\n    var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : (cov_15j8tpybze.b[0][0]++, {});\n\n    _classCallCheck(this, Request);\n\n    _initialiseProps.call(this);\n\n    cov_15j8tpybze.f[0]++;\n    cov_15j8tpybze.s[0]++;\n\n    this.timeouts = {};\n    cov_15j8tpybze.s[1]++;\n    this.cancelMethods = {};\n    cov_15j8tpybze.s[2]++;\n    this.pending = {};\n    cov_15j8tpybze.s[3]++;\n    this.updating = {};\n    cov_15j8tpybze.s[4]++;\n    this.pollingInProgress = {};\n    cov_15j8tpybze.s[5]++;\n    this.options = {\n        lockable: false,\n        cancelable: true\n    };\n    cov_15j8tpybze.s[6]++;\n    this.setOptions(options);\n    cov_15j8tpybze.s[7]++;\n    this.setUrl(url);\n};\n\nvar _initialiseProps = function _initialiseProps() {\n    var _this = this;\n\n    this.setOptions = function (options) {\n        cov_15j8tpybze.f[1]++;\n        cov_15j8tpybze.s[8]++;\n\n        _this.option = Object.assign(_this.options, options);\n    };\n\n    this.setUrl = function (url) {\n        cov_15j8tpybze.f[2]++;\n        cov_15j8tpybze.s[9]++;\n\n        _this.url = url;\n    };\n\n    this.setTimeout = function (timeout, method) {\n        cov_15j8tpybze.f[3]++;\n        cov_15j8tpybze.s[10]++;\n\n        _this.timeouts[method] = timeout;\n    };\n\n    this.cancel = function (method) {\n        cov_15j8tpybze.f[4]++;\n        cov_15j8tpybze.s[11]++;\n\n        if (method) {\n            cov_15j8tpybze.b[1][0]++;\n\n            var cancel = (cov_15j8tpybze.s[12]++, _this.cancelMethods[method]);\n            var timeout = (cov_15j8tpybze.s[13]++, _this.timeouts[method]);\n\n            cov_15j8tpybze.s[14]++;\n            if (typeof cancel === 'function') {\n                cov_15j8tpybze.b[2][0]++;\n                cov_15j8tpybze.s[15]++;\n\n                cancel();\n            } else {\n                cov_15j8tpybze.b[2][1]++;\n            }\n            cov_15j8tpybze.s[16]++;\n            if (timeout) {\n                cov_15j8tpybze.b[3][0]++;\n                cov_15j8tpybze.s[17]++;\n\n                clearTimeout(timeout);\n            } else {\n                cov_15j8tpybze.b[3][1]++;\n            }\n        } else {\n            cov_15j8tpybze.b[1][1]++;\n            cov_15j8tpybze.s[18]++;\n\n            Object.keys(_this.cancelMethods).forEach(function (reqMethod) {\n                cov_15j8tpybze.f[5]++;\n                cov_15j8tpybze.s[19]++;\n                return _this.cancelMethods[reqMethod]();\n            });\n            cov_15j8tpybze.s[20]++;\n            Object.keys(_this.timeouts).forEach(function (reqMethod) {\n                cov_15j8tpybze.f[6]++;\n                cov_15j8tpybze.s[21]++;\n                return clearTimeout(_this.timeouts[reqMethod]);\n            });\n        }\n        cov_15j8tpybze.s[22]++;\n        return _this;\n    };\n\n    this.isPending = function (method) {\n        cov_15j8tpybze.f[7]++;\n        cov_15j8tpybze.s[23]++;\n\n        if (method) {\n            cov_15j8tpybze.b[4][0]++;\n            cov_15j8tpybze.s[24]++;\n\n            return !!_this.pending[method];\n        } else {\n            cov_15j8tpybze.b[4][1]++;\n        }\n        cov_15j8tpybze.s[25]++;\n        return Object.keys(_this.pending).some(function (pendingMethod) {\n            cov_15j8tpybze.f[8]++;\n            cov_15j8tpybze.s[26]++;\n            return _this.pending[pendingMethod];\n        });\n    };\n\n    this.isPolling = function (method) {\n        cov_15j8tpybze.f[9]++;\n        cov_15j8tpybze.s[27]++;\n\n        if (method) {\n            cov_15j8tpybze.b[5][0]++;\n            cov_15j8tpybze.s[28]++;\n\n            return !!_this.pollingInProgress[method];\n        } else {\n            cov_15j8tpybze.b[5][1]++;\n        }\n        cov_15j8tpybze.s[29]++;\n        return Object.keys(_this.pollingInProgress).some(function (pollingMethod) {\n            cov_15j8tpybze.f[10]++;\n            cov_15j8tpybze.s[30]++;\n            return _this.pollingInProgress[pollingMethod];\n        });\n    };\n\n    this.isUpdating = function (method) {\n        cov_15j8tpybze.f[11]++;\n        cov_15j8tpybze.s[31]++;\n\n        if (method) {\n            cov_15j8tpybze.b[6][0]++;\n            cov_15j8tpybze.s[32]++;\n\n            return !!_this.updating[method];\n        } else {\n            cov_15j8tpybze.b[6][1]++;\n        }\n        cov_15j8tpybze.s[33]++;\n        return Object.keys(_this.updating).some(function (updatingMethod) {\n            cov_15j8tpybze.f[12]++;\n            cov_15j8tpybze.s[34]++;\n            return _this.updating[updatingMethod];\n        });\n    };\n\n    this.setOffPendingStatus = function (method) {\n        cov_15j8tpybze.f[13]++;\n        cov_15j8tpybze.s[35]++;\n\n        _this.pending[method] = false;\n        cov_15j8tpybze.s[36]++;\n        _this.updating[method] = false;\n    };\n\n    this.setOffPendingStatusThen = function (response, method) {\n        cov_15j8tpybze.f[14]++;\n        cov_15j8tpybze.s[37]++;\n\n        _this.setOffPendingStatus(method);\n        cov_15j8tpybze.s[38]++;\n        return response;\n    };\n\n    this.setOffPendingStatusCatch = function (error, method) {\n        cov_15j8tpybze.f[15]++;\n        cov_15j8tpybze.s[39]++;\n\n        _this.setOffPendingStatus(method);\n        cov_15j8tpybze.s[40]++;\n        _this.pollingInProgress[method] = false;\n        cov_15j8tpybze.s[41]++;\n        if (_this.options.errorHandler) {\n            cov_15j8tpybze.b[7][0]++;\n            cov_15j8tpybze.s[42]++;\n\n            _this.options.errorHandler(error, method);\n        } else {\n            cov_15j8tpybze.b[7][1]++;\n            cov_15j8tpybze.s[43]++;\n\n            throw error;\n        }\n    };\n\n    this.poll = function (time) {\n        cov_15j8tpybze.f[16]++;\n        cov_15j8tpybze.s[44]++;\n        return {\n            get: function get(cl, options) {\n                cov_15j8tpybze.f[17]++;\n                cov_15j8tpybze.s[45]++;\n                return _this.pollingRequest(cl, options, time, 'get');\n            },\n            post: function post(cl, options) {\n                cov_15j8tpybze.f[18]++;\n                cov_15j8tpybze.s[46]++;\n                return _this.pollingRequest(cl, options, time, 'post');\n            }\n        };\n    };\n\n    this.get = function (options) {\n        cov_15j8tpybze.f[19]++;\n        cov_15j8tpybze.s[47]++;\n        return _this.sendRequest('get', options);\n    };\n\n    this.post = function (options) {\n        cov_15j8tpybze.f[20]++;\n        cov_15j8tpybze.s[48]++;\n        return _this.sendRequest('post', options);\n    };\n\n    this.pollingRequest = function (cl, options, time, method, updating) {\n        cov_15j8tpybze.f[21]++;\n        cov_15j8tpybze.s[49]++;\n        return _this.sendRequest(method, options, updating).then(function (response) {\n            cov_15j8tpybze.f[22]++;\n            cov_15j8tpybze.s[50]++;\n\n            _this.pollingInProgress[method] = true;\n            var continuePolling = void 0;\n            cov_15j8tpybze.s[51]++;\n            if (cl) {\n                cov_15j8tpybze.b[8][0]++;\n                cov_15j8tpybze.s[52]++;\n\n                continuePolling = cl(response);\n            } else {\n                cov_15j8tpybze.b[8][1]++;\n            }\n            cov_15j8tpybze.s[53]++;\n            if ((cov_15j8tpybze.b[10][0]++, time) && (cov_15j8tpybze.b[10][1]++, continuePolling !== false)) {\n                cov_15j8tpybze.b[9][0]++;\n\n                var timeOut = (cov_15j8tpybze.s[54]++, setTimeout(function () {\n                    cov_15j8tpybze.f[23]++;\n                    cov_15j8tpybze.s[55]++;\n\n                    _this.pollingRequest(cl, options, time, method, true);\n                }, time));\n                cov_15j8tpybze.s[56]++;\n                _this.setTimeout(timeOut, method);\n            } else {\n                cov_15j8tpybze.b[9][1]++;\n                cov_15j8tpybze.s[57]++;\n\n                _this.pollingInProgress[method] = false;\n            }\n            cov_15j8tpybze.s[58]++;\n            return response;\n        });\n    };\n\n    this.sendRequest = function (method) {\n        var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : (cov_15j8tpybze.b[11][0]++, {});\n        var updating = arguments[2];\n        cov_15j8tpybze.f[24]++;\n\n        var _ref = (cov_15j8tpybze.s[59]++, Object.assign({}, _this.options, options)),\n            lockable = _ref.lockable,\n            cancelable = _ref.cancelable,\n            axiosOption = _objectWithoutProperties(_ref, ['lockable', 'cancelable']);\n\n        cov_15j8tpybze.s[60]++;\n\n        if ((cov_15j8tpybze.b[13][0]++, lockable) && (cov_15j8tpybze.b[13][1]++, !updating) && (cov_15j8tpybze.b[13][2]++, _this.isPending(method))) {\n            cov_15j8tpybze.b[12][0]++;\n            cov_15j8tpybze.s[61]++;\n\n            return Promise.reject(new Error('Request in progress'));\n        } else {\n            cov_15j8tpybze.b[12][1]++;\n        }\n        cov_15j8tpybze.s[62]++;\n        if (cancelable) {\n            cov_15j8tpybze.b[14][0]++;\n            cov_15j8tpybze.s[63]++;\n\n            _this.cancel(method);\n        } else {\n            cov_15j8tpybze.b[14][1]++;\n        }\n        cov_15j8tpybze.s[64]++;\n        _this.updating[method] = !!updating;\n        cov_15j8tpybze.s[65]++;\n        _this.pending[method] = true;\n        cov_15j8tpybze.s[66]++;\n        return (0, _axios2.default)(_extends({}, axiosOption, {\n            method: method,\n            url: _this.url,\n            cancelToken: new _axios2.default.CancelToken(function (c) {\n                cov_15j8tpybze.f[25]++;\n                cov_15j8tpybze.s[67]++;\n\n                _this.cancelMethods[method] = c;\n            })\n        })).then(function (res) {\n            cov_15j8tpybze.f[26]++;\n            cov_15j8tpybze.s[68]++;\n            return _this.setOffPendingStatusThen(res, method);\n        }).catch(function (err) {\n            cov_15j8tpybze.f[27]++;\n            cov_15j8tpybze.s[69]++;\n            return _this.setOffPendingStatusCatch(err, method);\n        });\n    };\n};\n\nexports.default = Request;\n\n/***/ }),\n/* 11 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nmodule.exports = __webpack_require__(12);\n\n/***/ }),\n/* 12 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar utils = __webpack_require__(0);\nvar bind = __webpack_require__(1);\nvar Axios = __webpack_require__(14);\nvar mergeConfig = __webpack_require__(7);\nvar defaults = __webpack_require__(4);\n\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n * @return {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n  var context = new Axios(defaultConfig);\n  var instance = bind(Axios.prototype.request, context);\n\n  // Copy axios.prototype to instance\n  utils.extend(instance, Axios.prototype, context);\n\n  // Copy context to instance\n  utils.extend(instance, context);\n\n  return instance;\n}\n\n// Create the default instance to be exported\nvar axios = createInstance(defaults);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios;\n\n// Factory for creating new instances\naxios.create = function create(instanceConfig) {\n  return createInstance(mergeConfig(axios.defaults, instanceConfig));\n};\n\n// Expose Cancel & CancelToken\naxios.Cancel = __webpack_require__(8);\naxios.CancelToken = __webpack_require__(27);\naxios.isCancel = __webpack_require__(3);\n\n// Expose all/spread\naxios.all = function all(promises) {\n  return Promise.all(promises);\n};\naxios.spread = __webpack_require__(28);\n\nmodule.exports = axios;\n\n// Allow use of default import syntax in TypeScript\nmodule.exports.default = axios;\n\n/***/ }),\n/* 13 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n/*!\n * Determine if an object is a Buffer\n *\n * @author   Feross Aboukhadijeh <https://feross.org>\n * @license  MIT\n */\n\nmodule.exports = function isBuffer(obj) {\n  return obj != null && obj.constructor != null && typeof obj.constructor.isBuffer === 'function' && obj.constructor.isBuffer(obj);\n};\n\n/***/ }),\n/* 14 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar utils = __webpack_require__(0);\nvar buildURL = __webpack_require__(2);\nvar InterceptorManager = __webpack_require__(15);\nvar dispatchRequest = __webpack_require__(16);\nvar mergeConfig = __webpack_require__(7);\n\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n */\nfunction Axios(instanceConfig) {\n  this.defaults = instanceConfig;\n  this.interceptors = {\n    request: new InterceptorManager(),\n    response: new InterceptorManager()\n  };\n}\n\n/**\n * Dispatch a request\n *\n * @param {Object} config The config specific for this request (merged with this.defaults)\n */\nAxios.prototype.request = function request(config) {\n  /*eslint no-param-reassign:0*/\n  // Allow for axios('example/url'[, config]) a la fetch API\n  if (typeof config === 'string') {\n    config = arguments[1] || {};\n    config.url = arguments[0];\n  } else {\n    config = config || {};\n  }\n\n  config = mergeConfig(this.defaults, config);\n  config.method = config.method ? config.method.toLowerCase() : 'get';\n\n  // Hook up interceptors middleware\n  var chain = [dispatchRequest, undefined];\n  var promise = Promise.resolve(config);\n\n  this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n    chain.unshift(interceptor.fulfilled, interceptor.rejected);\n  });\n\n  this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n    chain.push(interceptor.fulfilled, interceptor.rejected);\n  });\n\n  while (chain.length) {\n    promise = promise.then(chain.shift(), chain.shift());\n  }\n\n  return promise;\n};\n\nAxios.prototype.getUri = function getUri(config) {\n  config = mergeConfig(this.defaults, config);\n  return buildURL(config.url, config.params, config.paramsSerializer).replace(/^\\?/, '');\n};\n\n// Provide aliases for supported request methods\nutils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n  /*eslint func-names:0*/\n  Axios.prototype[method] = function (url, config) {\n    return this.request(utils.merge(config || {}, {\n      method: method,\n      url: url\n    }));\n  };\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n  /*eslint func-names:0*/\n  Axios.prototype[method] = function (url, data, config) {\n    return this.request(utils.merge(config || {}, {\n      method: method,\n      url: url,\n      data: data\n    }));\n  };\n});\n\nmodule.exports = Axios;\n\n/***/ }),\n/* 15 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar utils = __webpack_require__(0);\n\nfunction InterceptorManager() {\n  this.handlers = [];\n}\n\n/**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n *\n * @return {Number} An ID used to remove interceptor later\n */\nInterceptorManager.prototype.use = function use(fulfilled, rejected) {\n  this.handlers.push({\n    fulfilled: fulfilled,\n    rejected: rejected\n  });\n  return this.handlers.length - 1;\n};\n\n/**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n */\nInterceptorManager.prototype.eject = function eject(id) {\n  if (this.handlers[id]) {\n    this.handlers[id] = null;\n  }\n};\n\n/**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n */\nInterceptorManager.prototype.forEach = function forEach(fn) {\n  utils.forEach(this.handlers, function forEachHandler(h) {\n    if (h !== null) {\n      fn(h);\n    }\n  });\n};\n\nmodule.exports = InterceptorManager;\n\n/***/ }),\n/* 16 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar utils = __webpack_require__(0);\nvar transformData = __webpack_require__(17);\nvar isCancel = __webpack_require__(3);\nvar defaults = __webpack_require__(4);\nvar isAbsoluteURL = __webpack_require__(25);\nvar combineURLs = __webpack_require__(26);\n\n/**\n * Throws a `Cancel` if cancellation has been requested.\n */\nfunction throwIfCancellationRequested(config) {\n  if (config.cancelToken) {\n    config.cancelToken.throwIfRequested();\n  }\n}\n\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n * @returns {Promise} The Promise to be fulfilled\n */\nmodule.exports = function dispatchRequest(config) {\n  throwIfCancellationRequested(config);\n\n  // Support baseURL config\n  if (config.baseURL && !isAbsoluteURL(config.url)) {\n    config.url = combineURLs(config.baseURL, config.url);\n  }\n\n  // Ensure headers exist\n  config.headers = config.headers || {};\n\n  // Transform request data\n  config.data = transformData(config.data, config.headers, config.transformRequest);\n\n  // Flatten headers\n  config.headers = utils.merge(config.headers.common || {}, config.headers[config.method] || {}, config.headers || {});\n\n  utils.forEach(['delete', 'get', 'head', 'post', 'put', 'patch', 'common'], function cleanHeaderConfig(method) {\n    delete config.headers[method];\n  });\n\n  var adapter = config.adapter || defaults.adapter;\n\n  return adapter(config).then(function onAdapterResolution(response) {\n    throwIfCancellationRequested(config);\n\n    // Transform response data\n    response.data = transformData(response.data, response.headers, config.transformResponse);\n\n    return response;\n  }, function onAdapterRejection(reason) {\n    if (!isCancel(reason)) {\n      throwIfCancellationRequested(config);\n\n      // Transform response data\n      if (reason && reason.response) {\n        reason.response.data = transformData(reason.response.data, reason.response.headers, config.transformResponse);\n      }\n    }\n\n    return Promise.reject(reason);\n  });\n};\n\n/***/ }),\n/* 17 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar utils = __webpack_require__(0);\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Object|String} data The data to be transformed\n * @param {Array} headers The headers for the request or response\n * @param {Array|Function} fns A single function or Array of functions\n * @returns {*} The resulting transformed data\n */\nmodule.exports = function transformData(data, headers, fns) {\n  /*eslint no-param-reassign:0*/\n  utils.forEach(fns, function transform(fn) {\n    data = fn(data, headers);\n  });\n\n  return data;\n};\n\n/***/ }),\n/* 18 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things.  But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals.  It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n    throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout() {\n    throw new Error('clearTimeout has not been defined');\n}\n(function () {\n    try {\n        if (typeof setTimeout === 'function') {\n            cachedSetTimeout = setTimeout;\n        } else {\n            cachedSetTimeout = defaultSetTimout;\n        }\n    } catch (e) {\n        cachedSetTimeout = defaultSetTimout;\n    }\n    try {\n        if (typeof clearTimeout === 'function') {\n            cachedClearTimeout = clearTimeout;\n        } else {\n            cachedClearTimeout = defaultClearTimeout;\n        }\n    } catch (e) {\n        cachedClearTimeout = defaultClearTimeout;\n    }\n})();\nfunction runTimeout(fun) {\n    if (cachedSetTimeout === setTimeout) {\n        //normal enviroments in sane situations\n        return setTimeout(fun, 0);\n    }\n    // if setTimeout wasn't available but was latter defined\n    if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n        cachedSetTimeout = setTimeout;\n        return setTimeout(fun, 0);\n    }\n    try {\n        // when when somebody has screwed with setTimeout but no I.E. maddness\n        return cachedSetTimeout(fun, 0);\n    } catch (e) {\n        try {\n            // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n            return cachedSetTimeout.call(null, fun, 0);\n        } catch (e) {\n            // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n            return cachedSetTimeout.call(this, fun, 0);\n        }\n    }\n}\nfunction runClearTimeout(marker) {\n    if (cachedClearTimeout === clearTimeout) {\n        //normal enviroments in sane situations\n        return clearTimeout(marker);\n    }\n    // if clearTimeout wasn't available but was latter defined\n    if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n        cachedClearTimeout = clearTimeout;\n        return clearTimeout(marker);\n    }\n    try {\n        // when when somebody has screwed with setTimeout but no I.E. maddness\n        return cachedClearTimeout(marker);\n    } catch (e) {\n        try {\n            // When we are in I.E. but the script has been evaled so I.E. doesn't  trust the global object when called normally\n            return cachedClearTimeout.call(null, marker);\n        } catch (e) {\n            // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n            // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n            return cachedClearTimeout.call(this, marker);\n        }\n    }\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n    if (!draining || !currentQueue) {\n        return;\n    }\n    draining = false;\n    if (currentQueue.length) {\n        queue = currentQueue.concat(queue);\n    } else {\n        queueIndex = -1;\n    }\n    if (queue.length) {\n        drainQueue();\n    }\n}\n\nfunction drainQueue() {\n    if (draining) {\n        return;\n    }\n    var timeout = runTimeout(cleanUpNextTick);\n    draining = true;\n\n    var len = queue.length;\n    while (len) {\n        currentQueue = queue;\n        queue = [];\n        while (++queueIndex < len) {\n            if (currentQueue) {\n                currentQueue[queueIndex].run();\n            }\n        }\n        queueIndex = -1;\n        len = queue.length;\n    }\n    currentQueue = null;\n    draining = false;\n    runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n    var args = new Array(arguments.length - 1);\n    if (arguments.length > 1) {\n        for (var i = 1; i < arguments.length; i++) {\n            args[i - 1] = arguments[i];\n        }\n    }\n    queue.push(new Item(fun, args));\n    if (queue.length === 1 && !draining) {\n        runTimeout(drainQueue);\n    }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n    this.fun = fun;\n    this.array = array;\n}\nItem.prototype.run = function () {\n    this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) {\n    return [];\n};\n\nprocess.binding = function (name) {\n    throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () {\n    return '/';\n};\nprocess.chdir = function (dir) {\n    throw new Error('process.chdir is not supported');\n};\nprocess.umask = function () {\n    return 0;\n};\n\n/***/ }),\n/* 19 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar utils = __webpack_require__(0);\n\nmodule.exports = function normalizeHeaderName(headers, normalizedName) {\n  utils.forEach(headers, function processHeader(value, name) {\n    if (name !== normalizedName && name.toUpperCase() === normalizedName.toUpperCase()) {\n      headers[normalizedName] = value;\n      delete headers[name];\n    }\n  });\n};\n\n/***/ }),\n/* 20 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar createError = __webpack_require__(6);\n\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n */\nmodule.exports = function settle(resolve, reject, response) {\n  var validateStatus = response.config.validateStatus;\n  if (!validateStatus || validateStatus(response.status)) {\n    resolve(response);\n  } else {\n    reject(createError('Request failed with status code ' + response.status, response.config, null, response.request, response));\n  }\n};\n\n/***/ }),\n/* 21 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n/**\n * Update an Error with the specified config, error code, and response.\n *\n * @param {Error} error The error to update.\n * @param {Object} config The config.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The error.\n */\n\nmodule.exports = function enhanceError(error, config, code, request, response) {\n  error.config = config;\n  if (code) {\n    error.code = code;\n  }\n\n  error.request = request;\n  error.response = response;\n  error.isAxiosError = true;\n\n  error.toJSON = function () {\n    return {\n      // Standard\n      message: this.message,\n      name: this.name,\n      // Microsoft\n      description: this.description,\n      number: this.number,\n      // Mozilla\n      fileName: this.fileName,\n      lineNumber: this.lineNumber,\n      columnNumber: this.columnNumber,\n      stack: this.stack,\n      // Axios\n      config: this.config,\n      code: this.code\n    };\n  };\n  return error;\n};\n\n/***/ }),\n/* 22 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar utils = __webpack_require__(0);\n\n// Headers whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nvar ignoreDuplicateOf = ['age', 'authorization', 'content-length', 'content-type', 'etag', 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since', 'last-modified', 'location', 'max-forwards', 'proxy-authorization', 'referer', 'retry-after', 'user-agent'];\n\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} headers Headers needing to be parsed\n * @returns {Object} Headers parsed into an object\n */\nmodule.exports = function parseHeaders(headers) {\n  var parsed = {};\n  var key;\n  var val;\n  var i;\n\n  if (!headers) {\n    return parsed;\n  }\n\n  utils.forEach(headers.split('\\n'), function parser(line) {\n    i = line.indexOf(':');\n    key = utils.trim(line.substr(0, i)).toLowerCase();\n    val = utils.trim(line.substr(i + 1));\n\n    if (key) {\n      if (parsed[key] && ignoreDuplicateOf.indexOf(key) >= 0) {\n        return;\n      }\n      if (key === 'set-cookie') {\n        parsed[key] = (parsed[key] ? parsed[key] : []).concat([val]);\n      } else {\n        parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n      }\n    }\n  });\n\n  return parsed;\n};\n\n/***/ }),\n/* 23 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar utils = __webpack_require__(0);\n\nmodule.exports = utils.isStandardBrowserEnv() ?\n\n// Standard browser envs have full support of the APIs needed to test\n// whether the request URL is of the same origin as current location.\nfunction standardBrowserEnv() {\n  var msie = /(msie|trident)/i.test(navigator.userAgent);\n  var urlParsingNode = document.createElement('a');\n  var originURL;\n\n  /**\n  * Parse a URL to discover it's components\n  *\n  * @param {String} url The URL to be parsed\n  * @returns {Object}\n  */\n  function resolveURL(url) {\n    var href = url;\n\n    if (msie) {\n      // IE needs attribute set twice to normalize properties\n      urlParsingNode.setAttribute('href', href);\n      href = urlParsingNode.href;\n    }\n\n    urlParsingNode.setAttribute('href', href);\n\n    // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils\n    return {\n      href: urlParsingNode.href,\n      protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '',\n      host: urlParsingNode.host,\n      search: urlParsingNode.search ? urlParsingNode.search.replace(/^\\?/, '') : '',\n      hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '',\n      hostname: urlParsingNode.hostname,\n      port: urlParsingNode.port,\n      pathname: urlParsingNode.pathname.charAt(0) === '/' ? urlParsingNode.pathname : '/' + urlParsingNode.pathname\n    };\n  }\n\n  originURL = resolveURL(window.location.href);\n\n  /**\n  * Determine if a URL shares the same origin as the current location\n  *\n  * @param {String} requestURL The URL to test\n  * @returns {boolean} True if URL shares the same origin, otherwise false\n  */\n  return function isURLSameOrigin(requestURL) {\n    var parsed = utils.isString(requestURL) ? resolveURL(requestURL) : requestURL;\n    return parsed.protocol === originURL.protocol && parsed.host === originURL.host;\n  };\n}() :\n\n// Non standard browser envs (web workers, react-native) lack needed support.\nfunction nonStandardBrowserEnv() {\n  return function isURLSameOrigin() {\n    return true;\n  };\n}();\n\n/***/ }),\n/* 24 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar utils = __webpack_require__(0);\n\nmodule.exports = utils.isStandardBrowserEnv() ?\n\n// Standard browser envs support document.cookie\nfunction standardBrowserEnv() {\n  return {\n    write: function write(name, value, expires, path, domain, secure) {\n      var cookie = [];\n      cookie.push(name + '=' + encodeURIComponent(value));\n\n      if (utils.isNumber(expires)) {\n        cookie.push('expires=' + new Date(expires).toGMTString());\n      }\n\n      if (utils.isString(path)) {\n        cookie.push('path=' + path);\n      }\n\n      if (utils.isString(domain)) {\n        cookie.push('domain=' + domain);\n      }\n\n      if (secure === true) {\n        cookie.push('secure');\n      }\n\n      document.cookie = cookie.join('; ');\n    },\n\n    read: function read(name) {\n      var match = document.cookie.match(new RegExp('(^|;\\\\s*)(' + name + ')=([^;]*)'));\n      return match ? decodeURIComponent(match[3]) : null;\n    },\n\n    remove: function remove(name) {\n      this.write(name, '', Date.now() - 86400000);\n    }\n  };\n}() :\n\n// Non standard browser env (web workers, react-native) lack needed support.\nfunction nonStandardBrowserEnv() {\n  return {\n    write: function write() {},\n    read: function read() {\n      return null;\n    },\n    remove: function remove() {}\n  };\n}();\n\n/***/ }),\n/* 25 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\n\nmodule.exports = function isAbsoluteURL(url) {\n  // A URL is considered absolute if it begins with \"<scheme>://\" or \"//\" (protocol-relative URL).\n  // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n  // by any combination of letters, digits, plus, period, or hyphen.\n  return (/^([a-z][a-z\\d\\+\\-\\.]*:)?\\/\\//i.test(url)\n  );\n};\n\n/***/ }),\n/* 26 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n * @returns {string} The combined URL\n */\n\nmodule.exports = function combineURLs(baseURL, relativeURL) {\n  return relativeURL ? baseURL.replace(/\\/+$/, '') + '/' + relativeURL.replace(/^\\/+/, '') : baseURL;\n};\n\n/***/ }),\n/* 27 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar Cancel = __webpack_require__(8);\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @class\n * @param {Function} executor The executor function.\n */\nfunction CancelToken(executor) {\n  if (typeof executor !== 'function') {\n    throw new TypeError('executor must be a function.');\n  }\n\n  var resolvePromise;\n  this.promise = new Promise(function promiseExecutor(resolve) {\n    resolvePromise = resolve;\n  });\n\n  var token = this;\n  executor(function cancel(message) {\n    if (token.reason) {\n      // Cancellation has already been requested\n      return;\n    }\n\n    token.reason = new Cancel(message);\n    resolvePromise(token.reason);\n  });\n}\n\n/**\n * Throws a `Cancel` if cancellation has been requested.\n */\nCancelToken.prototype.throwIfRequested = function throwIfRequested() {\n  if (this.reason) {\n    throw this.reason;\n  }\n};\n\n/**\n * Returns an object that contains a new `CancelToken` and a function that, when called,\n * cancels the `CancelToken`.\n */\nCancelToken.source = function source() {\n  var cancel;\n  var token = new CancelToken(function executor(c) {\n    cancel = c;\n  });\n  return {\n    token: token,\n    cancel: cancel\n  };\n};\n\nmodule.exports = CancelToken;\n\n/***/ }),\n/* 28 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n *  ```js\n *  function f(x, y, z) {}\n *  var args = [1, 2, 3];\n *  f.apply(null, args);\n *  ```\n *\n * With `spread` this example can be re-written.\n *\n *  ```js\n *  spread(function(x, y, z) {})([1, 2, 3]);\n *  ```\n *\n * @param {Function} callback\n * @returns {Function}\n */\n\nmodule.exports = function spread(callback) {\n  return function wrap(arr) {\n    return callback.apply(null, arr);\n  };\n};\n\n/***/ })\n/******/ ]);\n});\n//# sourceMappingURL=axios-request.js.map","/*!\n  Copyright (c) 2018 Jed Watson.\n  Licensed under the MIT License (MIT), see\n  http://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\n\tfunction classNames () {\n\t\tvar classes = [];\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (!arg) continue;\n\n\t\t\tvar argType = typeof arg;\n\n\t\t\tif (argType === 'string' || argType === 'number') {\n\t\t\t\tclasses.push(this && this[arg] || arg);\n\t\t\t} else if (Array.isArray(arg)) {\n\t\t\t\tclasses.push(classNames.apply(this, arg));\n\t\t\t} else if (argType === 'object') {\n\t\t\t\tif (arg.toString === Object.prototype.toString) {\n\t\t\t\t\tfor (var key in arg) {\n\t\t\t\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\t\t\t\tclasses.push(this && this[key] || key);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tclasses.push(arg.toString());\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn classes.join(' ');\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n","/*!\n  Copyright (c) 2018 Jed Watson.\n  Licensed under the MIT License (MIT), see\n  http://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\n\tfunction classNames() {\n\t\tvar classes = [];\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (!arg) continue;\n\n\t\t\tvar argType = typeof arg;\n\n\t\t\tif (argType === 'string' || argType === 'number') {\n\t\t\t\tclasses.push(arg);\n\t\t\t} else if (Array.isArray(arg)) {\n\t\t\t\tif (arg.length) {\n\t\t\t\t\tvar inner = classNames.apply(null, arg);\n\t\t\t\t\tif (inner) {\n\t\t\t\t\t\tclasses.push(inner);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if (argType === 'object') {\n\t\t\t\tif (arg.toString === Object.prototype.toString) {\n\t\t\t\t\tfor (var key in arg) {\n\t\t\t\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\t\t\t\tclasses.push(key);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tclasses.push(arg.toString());\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn classes.join(' ');\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \"/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */\\n\\n/* Document\\n   ========================================================================== */\\n\\n/**\\n * 1. Correct the line height in all browsers.\\n * 2. Prevent adjustments of font size after orientation changes in iOS.\\n */\\n\\nhtml {\\n  line-height: 1.15; /* 1 */\\n  -webkit-text-size-adjust: 100%; /* 2 */\\n}\\n\\n/* Sections\\n   ========================================================================== */\\n\\n/**\\n * Remove the margin in all browsers.\\n */\\n\\nbody {\\n  margin: 0;\\n}\\n\\n/**\\n * Render the `main` element consistently in IE.\\n */\\n\\nmain {\\n  display: block;\\n}\\n\\n/**\\n * Correct the font size and margin on `h1` elements within `section` and\\n * `article` contexts in Chrome, Firefox, and Safari.\\n */\\n\\nh1 {\\n  font-size: 2em;\\n  margin: 0.67em 0;\\n}\\n\\n/* Grouping content\\n   ========================================================================== */\\n\\n/**\\n * 1. Add the correct box sizing in Firefox.\\n * 2. Show the overflow in Edge and IE.\\n */\\n\\nhr {\\n  box-sizing: content-box; /* 1 */\\n  height: 0; /* 1 */\\n  overflow: visible; /* 2 */\\n}\\n\\n/**\\n * 1. Correct the inheritance and scaling of font size in all browsers.\\n * 2. Correct the odd `em` font sizing in all browsers.\\n */\\n\\npre {\\n  font-family: monospace, monospace; /* 1 */\\n  font-size: 1em; /* 2 */\\n}\\n\\n/* Text-level semantics\\n   ========================================================================== */\\n\\n/**\\n * Remove the gray background on active links in IE 10.\\n */\\n\\na {\\n  background-color: transparent;\\n}\\n\\n/**\\n * 1. Remove the bottom border in Chrome 57-\\n * 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari.\\n */\\n\\nabbr[title] {\\n  border-bottom: none; /* 1 */\\n  text-decoration: underline; /* 2 */\\n  text-decoration: underline dotted; /* 2 */\\n}\\n\\n/**\\n * Add the correct font weight in Chrome, Edge, and Safari.\\n */\\n\\nb,\\nstrong {\\n  font-weight: bolder;\\n}\\n\\n/**\\n * 1. Correct the inheritance and scaling of font size in all browsers.\\n * 2. Correct the odd `em` font sizing in all browsers.\\n */\\n\\ncode,\\nkbd,\\nsamp {\\n  font-family: monospace, monospace; /* 1 */\\n  font-size: 1em; /* 2 */\\n}\\n\\n/**\\n * Add the correct font size in all browsers.\\n */\\n\\nsmall {\\n  font-size: 80%;\\n}\\n\\n/**\\n * Prevent `sub` and `sup` elements from affecting the line height in\\n * all browsers.\\n */\\n\\nsub,\\nsup {\\n  font-size: 75%;\\n  line-height: 0;\\n  position: relative;\\n  vertical-align: baseline;\\n}\\n\\nsub {\\n  bottom: -0.25em;\\n}\\n\\nsup {\\n  top: -0.5em;\\n}\\n\\n/* Embedded content\\n   ========================================================================== */\\n\\n/**\\n * Remove the border on images inside links in IE 10.\\n */\\n\\nimg {\\n  border-style: none;\\n}\\n\\n/* Forms\\n   ========================================================================== */\\n\\n/**\\n * 1. Change the font styles in all browsers.\\n * 2. Remove the margin in Firefox and Safari.\\n */\\n\\nbutton,\\ninput,\\noptgroup,\\nselect,\\ntextarea {\\n  font-family: inherit; /* 1 */\\n  font-size: 100%; /* 1 */\\n  line-height: 1.15; /* 1 */\\n  margin: 0; /* 2 */\\n}\\n\\n/**\\n * Show the overflow in IE.\\n * 1. Show the overflow in Edge.\\n */\\n\\nbutton,\\ninput { /* 1 */\\n  overflow: visible;\\n}\\n\\n/**\\n * Remove the inheritance of text transform in Edge, Firefox, and IE.\\n * 1. Remove the inheritance of text transform in Firefox.\\n */\\n\\nbutton,\\nselect { /* 1 */\\n  text-transform: none;\\n}\\n\\n/**\\n * Correct the inability to style clickable types in iOS and Safari.\\n */\\n\\nbutton,\\n[type=\\\"button\\\"],\\n[type=\\\"reset\\\"],\\n[type=\\\"submit\\\"] {\\n  -webkit-appearance: button;\\n}\\n\\n/**\\n * Remove the inner border and padding in Firefox.\\n */\\n\\nbutton::-moz-focus-inner,\\n[type=\\\"button\\\"]::-moz-focus-inner,\\n[type=\\\"reset\\\"]::-moz-focus-inner,\\n[type=\\\"submit\\\"]::-moz-focus-inner {\\n  border-style: none;\\n  padding: 0;\\n}\\n\\n/**\\n * Restore the focus styles unset by the previous rule.\\n */\\n\\nbutton:-moz-focusring,\\n[type=\\\"button\\\"]:-moz-focusring,\\n[type=\\\"reset\\\"]:-moz-focusring,\\n[type=\\\"submit\\\"]:-moz-focusring {\\n  outline: 1px dotted ButtonText;\\n}\\n\\n/**\\n * Correct the padding in Firefox.\\n */\\n\\nfieldset {\\n  padding: 0.35em 0.75em 0.625em;\\n}\\n\\n/**\\n * 1. Correct the text wrapping in Edge and IE.\\n * 2. Correct the color inheritance from `fieldset` elements in IE.\\n * 3. Remove the padding so developers are not caught out when they zero out\\n *    `fieldset` elements in all browsers.\\n */\\n\\nlegend {\\n  box-sizing: border-box; /* 1 */\\n  color: inherit; /* 2 */\\n  display: table; /* 1 */\\n  max-width: 100%; /* 1 */\\n  padding: 0; /* 3 */\\n  white-space: normal; /* 1 */\\n}\\n\\n/**\\n * Add the correct vertical alignment in Chrome, Firefox, and Opera.\\n */\\n\\nprogress {\\n  vertical-align: baseline;\\n}\\n\\n/**\\n * Remove the default vertical scrollbar in IE 10+.\\n */\\n\\ntextarea {\\n  overflow: auto;\\n}\\n\\n/**\\n * 1. Add the correct box sizing in IE 10.\\n * 2. Remove the padding in IE 10.\\n */\\n\\n[type=\\\"checkbox\\\"],\\n[type=\\\"radio\\\"] {\\n  box-sizing: border-box; /* 1 */\\n  padding: 0; /* 2 */\\n}\\n\\n/**\\n * Correct the cursor style of increment and decrement buttons in Chrome.\\n */\\n\\n[type=\\\"number\\\"]::-webkit-inner-spin-button,\\n[type=\\\"number\\\"]::-webkit-outer-spin-button {\\n  height: auto;\\n}\\n\\n/**\\n * 1. Correct the odd appearance in Chrome and Safari.\\n * 2. Correct the outline style in Safari.\\n */\\n\\n[type=\\\"search\\\"] {\\n  -webkit-appearance: textfield; /* 1 */\\n  outline-offset: -2px; /* 2 */\\n}\\n\\n/**\\n * Remove the inner padding in Chrome and Safari on macOS.\\n */\\n\\n[type=\\\"search\\\"]::-webkit-search-decoration {\\n  -webkit-appearance: none;\\n}\\n\\n/**\\n * 1. Correct the inability to style clickable types in iOS and Safari.\\n * 2. Change font properties to `inherit` in Safari.\\n */\\n\\n::-webkit-file-upload-button {\\n  -webkit-appearance: button; /* 1 */\\n  font: inherit; /* 2 */\\n}\\n\\n/* Interactive\\n   ========================================================================== */\\n\\n/*\\n * Add the correct display in Edge, IE 10+, and Firefox.\\n */\\n\\ndetails {\\n  display: block;\\n}\\n\\n/*\\n * Add the correct display in all browsers.\\n */\\n\\nsummary {\\n  display: list-item;\\n}\\n\\n/* Misc\\n   ========================================================================== */\\n\\n/**\\n * Add the correct display in IE 10+.\\n */\\n\\ntemplate {\\n  display: none;\\n}\\n\\n/**\\n * Add the correct display in IE 10.\\n */\\n\\n[hidden] {\\n  display: none;\\n}\\n\", \"\"]);\n// Exports\nmodule.exports = exports;\n","\"use strict\";\n\n/*\n  MIT License http://www.opensource.org/licenses/mit-license.php\n  Author Tobias Koppers @sokra\n*/\n// css base code, injected by the css-loader\n// eslint-disable-next-line func-names\nmodule.exports = function (useSourceMap) {\n  var list = []; // return the list of modules as css string\n\n  list.toString = function toString() {\n    return this.map(function (item) {\n      var content = cssWithMappingToString(item, useSourceMap);\n\n      if (item[2]) {\n        return \"@media \".concat(item[2], \" {\").concat(content, \"}\");\n      }\n\n      return content;\n    }).join('');\n  }; // import a list of modules into the list\n  // eslint-disable-next-line func-names\n\n\n  list.i = function (modules, mediaQuery, dedupe) {\n    if (typeof modules === 'string') {\n      // eslint-disable-next-line no-param-reassign\n      modules = [[null, modules, '']];\n    }\n\n    var alreadyImportedModules = {};\n\n    if (dedupe) {\n      for (var i = 0; i < this.length; i++) {\n        // eslint-disable-next-line prefer-destructuring\n        var id = this[i][0];\n\n        if (id != null) {\n          alreadyImportedModules[id] = true;\n        }\n      }\n    }\n\n    for (var _i = 0; _i < modules.length; _i++) {\n      var item = [].concat(modules[_i]);\n\n      if (dedupe && alreadyImportedModules[item[0]]) {\n        // eslint-disable-next-line no-continue\n        continue;\n      }\n\n      if (mediaQuery) {\n        if (!item[2]) {\n          item[2] = mediaQuery;\n        } else {\n          item[2] = \"\".concat(mediaQuery, \" and \").concat(item[2]);\n        }\n      }\n\n      list.push(item);\n    }\n  };\n\n  return list;\n};\n\nfunction cssWithMappingToString(item, useSourceMap) {\n  var content = item[1] || ''; // eslint-disable-next-line prefer-destructuring\n\n  var cssMapping = item[3];\n\n  if (!cssMapping) {\n    return content;\n  }\n\n  if (useSourceMap && typeof btoa === 'function') {\n    var sourceMapping = toComment(cssMapping);\n    var sourceURLs = cssMapping.sources.map(function (source) {\n      return \"/*# sourceURL=\".concat(cssMapping.sourceRoot || '').concat(source, \" */\");\n    });\n    return [content].concat(sourceURLs).concat([sourceMapping]).join('\\n');\n  }\n\n  return [content].join('\\n');\n} // Adapted from convert-source-map (MIT)\n\n\nfunction toComment(sourceMap) {\n  // eslint-disable-next-line no-undef\n  var base64 = btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap))));\n  var data = \"sourceMappingURL=data:application/json;charset=utf-8;base64,\".concat(base64);\n  return \"/*# \".concat(data, \" */\");\n}","// Adds floating point numbers with twice the normal precision.\n// Reference: J. R. Shewchuk, Adaptive Precision Floating-Point Arithmetic and\n// Fast Robust Geometric Predicates, Discrete & Computational Geometry 18(3)\n// 305–363 (1997).\n// Code adapted from GeographicLib by Charles F. F. Karney,\n// http://geographiclib.sourceforge.net/\n\nexport default function() {\n  return new Adder;\n}\n\nfunction Adder() {\n  this.reset();\n}\n\nAdder.prototype = {\n  constructor: Adder,\n  reset: function() {\n    this.s = // rounded value\n    this.t = 0; // exact error\n  },\n  add: function(y) {\n    add(temp, y, this.t);\n    add(this, temp.s, this.s);\n    if (this.s) this.t += temp.t;\n    else this.s = temp.t;\n  },\n  valueOf: function() {\n    return this.s;\n  }\n};\n\nvar temp = new Adder;\n\nfunction add(adder, a, b) {\n  var x = adder.s = a + b,\n      bv = x - a,\n      av = x - bv;\n  adder.t = (a - av) + (b - bv);\n}\n","export var epsilon = 1e-6;\nexport var epsilon2 = 1e-12;\nexport var pi = Math.PI;\nexport var halfPi = pi / 2;\nexport var quarterPi = pi / 4;\nexport var tau = pi * 2;\n\nexport var degrees = 180 / pi;\nexport var radians = pi / 180;\n\nexport var abs = Math.abs;\nexport var atan = Math.atan;\nexport var atan2 = Math.atan2;\nexport var cos = Math.cos;\nexport var ceil = Math.ceil;\nexport var exp = Math.exp;\nexport var floor = Math.floor;\nexport var log = Math.log;\nexport var pow = Math.pow;\nexport var sin = Math.sin;\nexport var sign = Math.sign || function(x) { return x > 0 ? 1 : x < 0 ? -1 : 0; };\nexport var sqrt = Math.sqrt;\nexport var tan = Math.tan;\n\nexport function acos(x) {\n  return x > 1 ? 0 : x < -1 ? pi : Math.acos(x);\n}\n\nexport function asin(x) {\n  return x > 1 ? halfPi : x < -1 ? -halfPi : Math.asin(x);\n}\n\nexport function haversin(x) {\n  return (x = sin(x / 2)) * x;\n}\n","export default function noop() {}\n","function streamGeometry(geometry, stream) {\n  if (geometry && streamGeometryType.hasOwnProperty(geometry.type)) {\n    streamGeometryType[geometry.type](geometry, stream);\n  }\n}\n\nvar streamObjectType = {\n  Feature: function(object, stream) {\n    streamGeometry(object.geometry, stream);\n  },\n  FeatureCollection: function(object, stream) {\n    var features = object.features, i = -1, n = features.length;\n    while (++i < n) streamGeometry(features[i].geometry, stream);\n  }\n};\n\nvar streamGeometryType = {\n  Sphere: function(object, stream) {\n    stream.sphere();\n  },\n  Point: function(object, stream) {\n    object = object.coordinates;\n    stream.point(object[0], object[1], object[2]);\n  },\n  MultiPoint: function(object, stream) {\n    var coordinates = object.coordinates, i = -1, n = coordinates.length;\n    while (++i < n) object = coordinates[i], stream.point(object[0], object[1], object[2]);\n  },\n  LineString: function(object, stream) {\n    streamLine(object.coordinates, stream, 0);\n  },\n  MultiLineString: function(object, stream) {\n    var coordinates = object.coordinates, i = -1, n = coordinates.length;\n    while (++i < n) streamLine(coordinates[i], stream, 0);\n  },\n  Polygon: function(object, stream) {\n    streamPolygon(object.coordinates, stream);\n  },\n  MultiPolygon: function(object, stream) {\n    var coordinates = object.coordinates, i = -1, n = coordinates.length;\n    while (++i < n) streamPolygon(coordinates[i], stream);\n  },\n  GeometryCollection: function(object, stream) {\n    var geometries = object.geometries, i = -1, n = geometries.length;\n    while (++i < n) streamGeometry(geometries[i], stream);\n  }\n};\n\nfunction streamLine(coordinates, stream, closed) {\n  var i = -1, n = coordinates.length - closed, coordinate;\n  stream.lineStart();\n  while (++i < n) coordinate = coordinates[i], stream.point(coordinate[0], coordinate[1], coordinate[2]);\n  stream.lineEnd();\n}\n\nfunction streamPolygon(coordinates, stream) {\n  var i = -1, n = coordinates.length;\n  stream.polygonStart();\n  while (++i < n) streamLine(coordinates[i], stream, 1);\n  stream.polygonEnd();\n}\n\nexport default function(object, stream) {\n  if (object && streamObjectType.hasOwnProperty(object.type)) {\n    streamObjectType[object.type](object, stream);\n  } else {\n    streamGeometry(object, stream);\n  }\n}\n","import adder from \"./adder\";\nimport {atan2, cos, quarterPi, radians, sin, tau} from \"./math\";\nimport noop from \"./noop\";\nimport stream from \"./stream\";\n\nexport var areaRingSum = adder();\n\nvar areaSum = adder(),\n    lambda00,\n    phi00,\n    lambda0,\n    cosPhi0,\n    sinPhi0;\n\nexport var areaStream = {\n  point: noop,\n  lineStart: noop,\n  lineEnd: noop,\n  polygonStart: function() {\n    areaRingSum.reset();\n    areaStream.lineStart = areaRingStart;\n    areaStream.lineEnd = areaRingEnd;\n  },\n  polygonEnd: function() {\n    var areaRing = +areaRingSum;\n    areaSum.add(areaRing < 0 ? tau + areaRing : areaRing);\n    this.lineStart = this.lineEnd = this.point = noop;\n  },\n  sphere: function() {\n    areaSum.add(tau);\n  }\n};\n\nfunction areaRingStart() {\n  areaStream.point = areaPointFirst;\n}\n\nfunction areaRingEnd() {\n  areaPoint(lambda00, phi00);\n}\n\nfunction areaPointFirst(lambda, phi) {\n  areaStream.point = areaPoint;\n  lambda00 = lambda, phi00 = phi;\n  lambda *= radians, phi *= radians;\n  lambda0 = lambda, cosPhi0 = cos(phi = phi / 2 + quarterPi), sinPhi0 = sin(phi);\n}\n\nfunction areaPoint(lambda, phi) {\n  lambda *= radians, phi *= radians;\n  phi = phi / 2 + quarterPi; // half the angular distance from south pole\n\n  // Spherical excess E for a spherical triangle with vertices: south pole,\n  // previous point, current point.  Uses a formula derived from Cagnoli’s\n  // theorem.  See Todhunter, Spherical Trig. (1871), Sec. 103, Eq. (2).\n  var dLambda = lambda - lambda0,\n      sdLambda = dLambda >= 0 ? 1 : -1,\n      adLambda = sdLambda * dLambda,\n      cosPhi = cos(phi),\n      sinPhi = sin(phi),\n      k = sinPhi0 * sinPhi,\n      u = cosPhi0 * cosPhi + k * cos(adLambda),\n      v = k * sdLambda * sin(adLambda);\n  areaRingSum.add(atan2(v, u));\n\n  // Advance the previous points.\n  lambda0 = lambda, cosPhi0 = cosPhi, sinPhi0 = sinPhi;\n}\n\nexport default function(object) {\n  areaSum.reset();\n  stream(object, areaStream);\n  return areaSum * 2;\n}\n","import {asin, atan2, cos, sin, sqrt} from \"./math\";\n\nexport function spherical(cartesian) {\n  return [atan2(cartesian[1], cartesian[0]), asin(cartesian[2])];\n}\n\nexport function cartesian(spherical) {\n  var lambda = spherical[0], phi = spherical[1], cosPhi = cos(phi);\n  return [cosPhi * cos(lambda), cosPhi * sin(lambda), sin(phi)];\n}\n\nexport function cartesianDot(a, b) {\n  return a[0] * b[0] + a[1] * b[1] + a[2] * b[2];\n}\n\nexport function cartesianCross(a, b) {\n  return [a[1] * b[2] - a[2] * b[1], a[2] * b[0] - a[0] * b[2], a[0] * b[1] - a[1] * b[0]];\n}\n\n// TODO return a\nexport function cartesianAddInPlace(a, b) {\n  a[0] += b[0], a[1] += b[1], a[2] += b[2];\n}\n\nexport function cartesianScale(vector, k) {\n  return [vector[0] * k, vector[1] * k, vector[2] * k];\n}\n\n// TODO return d\nexport function cartesianNormalizeInPlace(d) {\n  var l = sqrt(d[0] * d[0] + d[1] * d[1] + d[2] * d[2]);\n  d[0] /= l, d[1] /= l, d[2] /= l;\n}\n","import adder from \"./adder\";\nimport {areaStream, areaRingSum} from \"./area\";\nimport {cartesian, cartesianCross, cartesianNormalizeInPlace, spherical} from \"./cartesian\";\nimport {abs, degrees, epsilon, radians} from \"./math\";\nimport stream from \"./stream\";\n\nvar lambda0, phi0, lambda1, phi1, // bounds\n    lambda2, // previous lambda-coordinate\n    lambda00, phi00, // first point\n    p0, // previous 3D point\n    deltaSum = adder(),\n    ranges,\n    range;\n\nvar boundsStream = {\n  point: boundsPoint,\n  lineStart: boundsLineStart,\n  lineEnd: boundsLineEnd,\n  polygonStart: function() {\n    boundsStream.point = boundsRingPoint;\n    boundsStream.lineStart = boundsRingStart;\n    boundsStream.lineEnd = boundsRingEnd;\n    deltaSum.reset();\n    areaStream.polygonStart();\n  },\n  polygonEnd: function() {\n    areaStream.polygonEnd();\n    boundsStream.point = boundsPoint;\n    boundsStream.lineStart = boundsLineStart;\n    boundsStream.lineEnd = boundsLineEnd;\n    if (areaRingSum < 0) lambda0 = -(lambda1 = 180), phi0 = -(phi1 = 90);\n    else if (deltaSum > epsilon) phi1 = 90;\n    else if (deltaSum < -epsilon) phi0 = -90;\n    range[0] = lambda0, range[1] = lambda1;\n  }\n};\n\nfunction boundsPoint(lambda, phi) {\n  ranges.push(range = [lambda0 = lambda, lambda1 = lambda]);\n  if (phi < phi0) phi0 = phi;\n  if (phi > phi1) phi1 = phi;\n}\n\nfunction linePoint(lambda, phi) {\n  var p = cartesian([lambda * radians, phi * radians]);\n  if (p0) {\n    var normal = cartesianCross(p0, p),\n        equatorial = [normal[1], -normal[0], 0],\n        inflection = cartesianCross(equatorial, normal);\n    cartesianNormalizeInPlace(inflection);\n    inflection = spherical(inflection);\n    var delta = lambda - lambda2,\n        sign = delta > 0 ? 1 : -1,\n        lambdai = inflection[0] * degrees * sign,\n        phii,\n        antimeridian = abs(delta) > 180;\n    if (antimeridian ^ (sign * lambda2 < lambdai && lambdai < sign * lambda)) {\n      phii = inflection[1] * degrees;\n      if (phii > phi1) phi1 = phii;\n    } else if (lambdai = (lambdai + 360) % 360 - 180, antimeridian ^ (sign * lambda2 < lambdai && lambdai < sign * lambda)) {\n      phii = -inflection[1] * degrees;\n      if (phii < phi0) phi0 = phii;\n    } else {\n      if (phi < phi0) phi0 = phi;\n      if (phi > phi1) phi1 = phi;\n    }\n    if (antimeridian) {\n      if (lambda < lambda2) {\n        if (angle(lambda0, lambda) > angle(lambda0, lambda1)) lambda1 = lambda;\n      } else {\n        if (angle(lambda, lambda1) > angle(lambda0, lambda1)) lambda0 = lambda;\n      }\n    } else {\n      if (lambda1 >= lambda0) {\n        if (lambda < lambda0) lambda0 = lambda;\n        if (lambda > lambda1) lambda1 = lambda;\n      } else {\n        if (lambda > lambda2) {\n          if (angle(lambda0, lambda) > angle(lambda0, lambda1)) lambda1 = lambda;\n        } else {\n          if (angle(lambda, lambda1) > angle(lambda0, lambda1)) lambda0 = lambda;\n        }\n      }\n    }\n  } else {\n    ranges.push(range = [lambda0 = lambda, lambda1 = lambda]);\n  }\n  if (phi < phi0) phi0 = phi;\n  if (phi > phi1) phi1 = phi;\n  p0 = p, lambda2 = lambda;\n}\n\nfunction boundsLineStart() {\n  boundsStream.point = linePoint;\n}\n\nfunction boundsLineEnd() {\n  range[0] = lambda0, range[1] = lambda1;\n  boundsStream.point = boundsPoint;\n  p0 = null;\n}\n\nfunction boundsRingPoint(lambda, phi) {\n  if (p0) {\n    var delta = lambda - lambda2;\n    deltaSum.add(abs(delta) > 180 ? delta + (delta > 0 ? 360 : -360) : delta);\n  } else {\n    lambda00 = lambda, phi00 = phi;\n  }\n  areaStream.point(lambda, phi);\n  linePoint(lambda, phi);\n}\n\nfunction boundsRingStart() {\n  areaStream.lineStart();\n}\n\nfunction boundsRingEnd() {\n  boundsRingPoint(lambda00, phi00);\n  areaStream.lineEnd();\n  if (abs(deltaSum) > epsilon) lambda0 = -(lambda1 = 180);\n  range[0] = lambda0, range[1] = lambda1;\n  p0 = null;\n}\n\n// Finds the left-right distance between two longitudes.\n// This is almost the same as (lambda1 - lambda0 + 360°) % 360°, except that we want\n// the distance between ±180° to be 360°.\nfunction angle(lambda0, lambda1) {\n  return (lambda1 -= lambda0) < 0 ? lambda1 + 360 : lambda1;\n}\n\nfunction rangeCompare(a, b) {\n  return a[0] - b[0];\n}\n\nfunction rangeContains(range, x) {\n  return range[0] <= range[1] ? range[0] <= x && x <= range[1] : x < range[0] || range[1] < x;\n}\n\nexport default function(feature) {\n  var i, n, a, b, merged, deltaMax, delta;\n\n  phi1 = lambda1 = -(lambda0 = phi0 = Infinity);\n  ranges = [];\n  stream(feature, boundsStream);\n\n  // First, sort ranges by their minimum longitudes.\n  if (n = ranges.length) {\n    ranges.sort(rangeCompare);\n\n    // Then, merge any ranges that overlap.\n    for (i = 1, a = ranges[0], merged = [a]; i < n; ++i) {\n      b = ranges[i];\n      if (rangeContains(a, b[0]) || rangeContains(a, b[1])) {\n        if (angle(a[0], b[1]) > angle(a[0], a[1])) a[1] = b[1];\n        if (angle(b[0], a[1]) > angle(a[0], a[1])) a[0] = b[0];\n      } else {\n        merged.push(a = b);\n      }\n    }\n\n    // Finally, find the largest gap between the merged ranges.\n    // The final bounding box will be the inverse of this gap.\n    for (deltaMax = -Infinity, n = merged.length - 1, i = 0, a = merged[n]; i <= n; a = b, ++i) {\n      b = merged[i];\n      if ((delta = angle(a[1], b[0])) > deltaMax) deltaMax = delta, lambda0 = b[0], lambda1 = a[1];\n    }\n  }\n\n  ranges = range = null;\n\n  return lambda0 === Infinity || phi0 === Infinity\n      ? [[NaN, NaN], [NaN, NaN]]\n      : [[lambda0, phi0], [lambda1, phi1]];\n}\n","import {asin, atan2, cos, degrees, epsilon, epsilon2, radians, sin, sqrt} from \"./math\";\nimport noop from \"./noop\";\nimport stream from \"./stream\";\n\nvar W0, W1,\n    X0, Y0, Z0,\n    X1, Y1, Z1,\n    X2, Y2, Z2,\n    lambda00, phi00, // first point\n    x0, y0, z0; // previous point\n\nvar centroidStream = {\n  sphere: noop,\n  point: centroidPoint,\n  lineStart: centroidLineStart,\n  lineEnd: centroidLineEnd,\n  polygonStart: function() {\n    centroidStream.lineStart = centroidRingStart;\n    centroidStream.lineEnd = centroidRingEnd;\n  },\n  polygonEnd: function() {\n    centroidStream.lineStart = centroidLineStart;\n    centroidStream.lineEnd = centroidLineEnd;\n  }\n};\n\n// Arithmetic mean of Cartesian vectors.\nfunction centroidPoint(lambda, phi) {\n  lambda *= radians, phi *= radians;\n  var cosPhi = cos(phi);\n  centroidPointCartesian(cosPhi * cos(lambda), cosPhi * sin(lambda), sin(phi));\n}\n\nfunction centroidPointCartesian(x, y, z) {\n  ++W0;\n  X0 += (x - X0) / W0;\n  Y0 += (y - Y0) / W0;\n  Z0 += (z - Z0) / W0;\n}\n\nfunction centroidLineStart() {\n  centroidStream.point = centroidLinePointFirst;\n}\n\nfunction centroidLinePointFirst(lambda, phi) {\n  lambda *= radians, phi *= radians;\n  var cosPhi = cos(phi);\n  x0 = cosPhi * cos(lambda);\n  y0 = cosPhi * sin(lambda);\n  z0 = sin(phi);\n  centroidStream.point = centroidLinePoint;\n  centroidPointCartesian(x0, y0, z0);\n}\n\nfunction centroidLinePoint(lambda, phi) {\n  lambda *= radians, phi *= radians;\n  var cosPhi = cos(phi),\n      x = cosPhi * cos(lambda),\n      y = cosPhi * sin(lambda),\n      z = sin(phi),\n      w = atan2(sqrt((w = y0 * z - z0 * y) * w + (w = z0 * x - x0 * z) * w + (w = x0 * y - y0 * x) * w), x0 * x + y0 * y + z0 * z);\n  W1 += w;\n  X1 += w * (x0 + (x0 = x));\n  Y1 += w * (y0 + (y0 = y));\n  Z1 += w * (z0 + (z0 = z));\n  centroidPointCartesian(x0, y0, z0);\n}\n\nfunction centroidLineEnd() {\n  centroidStream.point = centroidPoint;\n}\n\n// See J. E. Brock, The Inertia Tensor for a Spherical Triangle,\n// J. Applied Mechanics 42, 239 (1975).\nfunction centroidRingStart() {\n  centroidStream.point = centroidRingPointFirst;\n}\n\nfunction centroidRingEnd() {\n  centroidRingPoint(lambda00, phi00);\n  centroidStream.point = centroidPoint;\n}\n\nfunction centroidRingPointFirst(lambda, phi) {\n  lambda00 = lambda, phi00 = phi;\n  lambda *= radians, phi *= radians;\n  centroidStream.point = centroidRingPoint;\n  var cosPhi = cos(phi);\n  x0 = cosPhi * cos(lambda);\n  y0 = cosPhi * sin(lambda);\n  z0 = sin(phi);\n  centroidPointCartesian(x0, y0, z0);\n}\n\nfunction centroidRingPoint(lambda, phi) {\n  lambda *= radians, phi *= radians;\n  var cosPhi = cos(phi),\n      x = cosPhi * cos(lambda),\n      y = cosPhi * sin(lambda),\n      z = sin(phi),\n      cx = y0 * z - z0 * y,\n      cy = z0 * x - x0 * z,\n      cz = x0 * y - y0 * x,\n      m = sqrt(cx * cx + cy * cy + cz * cz),\n      w = asin(m), // line weight = angle\n      v = m && -w / m; // area weight multiplier\n  X2 += v * cx;\n  Y2 += v * cy;\n  Z2 += v * cz;\n  W1 += w;\n  X1 += w * (x0 + (x0 = x));\n  Y1 += w * (y0 + (y0 = y));\n  Z1 += w * (z0 + (z0 = z));\n  centroidPointCartesian(x0, y0, z0);\n}\n\nexport default function(object) {\n  W0 = W1 =\n  X0 = Y0 = Z0 =\n  X1 = Y1 = Z1 =\n  X2 = Y2 = Z2 = 0;\n  stream(object, centroidStream);\n\n  var x = X2,\n      y = Y2,\n      z = Z2,\n      m = x * x + y * y + z * z;\n\n  // If the area-weighted ccentroid is undefined, fall back to length-weighted ccentroid.\n  if (m < epsilon2) {\n    x = X1, y = Y1, z = Z1;\n    // If the feature has zero length, fall back to arithmetic mean of point vectors.\n    if (W1 < epsilon) x = X0, y = Y0, z = Z0;\n    m = x * x + y * y + z * z;\n    // If the feature still has an undefined ccentroid, then return.\n    if (m < epsilon2) return [NaN, NaN];\n  }\n\n  return [atan2(y, x) * degrees, asin(z / sqrt(m)) * degrees];\n}\n","import ascending from \"./ascending\";\n\nexport default function(compare) {\n  if (compare.length === 1) compare = ascendingComparator(compare);\n  return {\n    left: function(a, x, lo, hi) {\n      if (lo == null) lo = 0;\n      if (hi == null) hi = a.length;\n      while (lo < hi) {\n        var mid = lo + hi >>> 1;\n        if (compare(a[mid], x) < 0) lo = mid + 1;\n        else hi = mid;\n      }\n      return lo;\n    },\n    right: function(a, x, lo, hi) {\n      if (lo == null) lo = 0;\n      if (hi == null) hi = a.length;\n      while (lo < hi) {\n        var mid = lo + hi >>> 1;\n        if (compare(a[mid], x) > 0) hi = mid;\n        else lo = mid + 1;\n      }\n      return lo;\n    }\n  };\n}\n\nfunction ascendingComparator(f) {\n  return function(d, x) {\n    return ascending(f(d), x);\n  };\n}\n","export default function(x) {\n  return function() {\n    return x;\n  };\n}\n","export default function(a, b) {\n\n  function compose(x, y) {\n    return x = a(x, y), b(x[0], x[1]);\n  }\n\n  if (a.invert && b.invert) compose.invert = function(x, y) {\n    return x = b.invert(x, y), x && a.invert(x[0], x[1]);\n  };\n\n  return compose;\n}\n","import compose from \"./compose\";\nimport {asin, atan2, cos, degrees, pi, radians, sin, tau} from \"./math\";\n\nfunction rotationIdentity(lambda, phi) {\n  return [lambda > pi ? lambda - tau : lambda < -pi ? lambda + tau : lambda, phi];\n}\n\nrotationIdentity.invert = rotationIdentity;\n\nexport function rotateRadians(deltaLambda, deltaPhi, deltaGamma) {\n  return (deltaLambda %= tau) ? (deltaPhi || deltaGamma ? compose(rotationLambda(deltaLambda), rotationPhiGamma(deltaPhi, deltaGamma))\n    : rotationLambda(deltaLambda))\n    : (deltaPhi || deltaGamma ? rotationPhiGamma(deltaPhi, deltaGamma)\n    : rotationIdentity);\n}\n\nfunction forwardRotationLambda(deltaLambda) {\n  return function(lambda, phi) {\n    return lambda += deltaLambda, [lambda > pi ? lambda - tau : lambda < -pi ? lambda + tau : lambda, phi];\n  };\n}\n\nfunction rotationLambda(deltaLambda) {\n  var rotation = forwardRotationLambda(deltaLambda);\n  rotation.invert = forwardRotationLambda(-deltaLambda);\n  return rotation;\n}\n\nfunction rotationPhiGamma(deltaPhi, deltaGamma) {\n  var cosDeltaPhi = cos(deltaPhi),\n      sinDeltaPhi = sin(deltaPhi),\n      cosDeltaGamma = cos(deltaGamma),\n      sinDeltaGamma = sin(deltaGamma);\n\n  function rotation(lambda, phi) {\n    var cosPhi = cos(phi),\n        x = cos(lambda) * cosPhi,\n        y = sin(lambda) * cosPhi,\n        z = sin(phi),\n        k = z * cosDeltaPhi + x * sinDeltaPhi;\n    return [\n      atan2(y * cosDeltaGamma - k * sinDeltaGamma, x * cosDeltaPhi - z * sinDeltaPhi),\n      asin(k * cosDeltaGamma + y * sinDeltaGamma)\n    ];\n  }\n\n  rotation.invert = function(lambda, phi) {\n    var cosPhi = cos(phi),\n        x = cos(lambda) * cosPhi,\n        y = sin(lambda) * cosPhi,\n        z = sin(phi),\n        k = z * cosDeltaGamma - y * sinDeltaGamma;\n    return [\n      atan2(y * cosDeltaGamma + z * sinDeltaGamma, x * cosDeltaPhi + k * sinDeltaPhi),\n      asin(k * cosDeltaPhi - x * sinDeltaPhi)\n    ];\n  };\n\n  return rotation;\n}\n\nexport default function(rotate) {\n  rotate = rotateRadians(rotate[0] * radians, rotate[1] * radians, rotate.length > 2 ? rotate[2] * radians : 0);\n\n  function forward(coordinates) {\n    coordinates = rotate(coordinates[0] * radians, coordinates[1] * radians);\n    return coordinates[0] *= degrees, coordinates[1] *= degrees, coordinates;\n  }\n\n  forward.invert = function(coordinates) {\n    coordinates = rotate.invert(coordinates[0] * radians, coordinates[1] * radians);\n    return coordinates[0] *= degrees, coordinates[1] *= degrees, coordinates;\n  };\n\n  return forward;\n}\n","import {cartesian, cartesianNormalizeInPlace, spherical} from \"./cartesian\";\nimport constant from \"./constant\";\nimport {acos, cos, degrees, epsilon, radians, sin, tau} from \"./math\";\nimport {rotateRadians} from \"./rotation\";\n\n// Generates a circle centered at [0°, 0°], with a given radius and precision.\nexport function circleStream(stream, radius, delta, direction, t0, t1) {\n  if (!delta) return;\n  var cosRadius = cos(radius),\n      sinRadius = sin(radius),\n      step = direction * delta;\n  if (t0 == null) {\n    t0 = radius + direction * tau;\n    t1 = radius - step / 2;\n  } else {\n    t0 = circleRadius(cosRadius, t0);\n    t1 = circleRadius(cosRadius, t1);\n    if (direction > 0 ? t0 < t1 : t0 > t1) t0 += direction * tau;\n  }\n  for (var point, t = t0; direction > 0 ? t > t1 : t < t1; t -= step) {\n    point = spherical([cosRadius, -sinRadius * cos(t), -sinRadius * sin(t)]);\n    stream.point(point[0], point[1]);\n  }\n}\n\n// Returns the signed angle of a cartesian point relative to [cosRadius, 0, 0].\nfunction circleRadius(cosRadius, point) {\n  point = cartesian(point), point[0] -= cosRadius;\n  cartesianNormalizeInPlace(point);\n  var radius = acos(-point[1]);\n  return ((-point[2] < 0 ? -radius : radius) + tau - epsilon) % tau;\n}\n\nexport default function() {\n  var center = constant([0, 0]),\n      radius = constant(90),\n      precision = constant(6),\n      ring,\n      rotate,\n      stream = {point: point};\n\n  function point(x, y) {\n    ring.push(x = rotate(x, y));\n    x[0] *= degrees, x[1] *= degrees;\n  }\n\n  function circle() {\n    var c = center.apply(this, arguments),\n        r = radius.apply(this, arguments) * radians,\n        p = precision.apply(this, arguments) * radians;\n    ring = [];\n    rotate = rotateRadians(-c[0] * radians, -c[1] * radians, 0).invert;\n    circleStream(stream, r, p, 1);\n    c = {type: \"Polygon\", coordinates: [ring]};\n    ring = rotate = null;\n    return c;\n  }\n\n  circle.center = function(_) {\n    return arguments.length ? (center = typeof _ === \"function\" ? _ : constant([+_[0], +_[1]]), circle) : center;\n  };\n\n  circle.radius = function(_) {\n    return arguments.length ? (radius = typeof _ === \"function\" ? _ : constant(+_), circle) : radius;\n  };\n\n  circle.precision = function(_) {\n    return arguments.length ? (precision = typeof _ === \"function\" ? _ : constant(+_), circle) : precision;\n  };\n\n  return circle;\n}\n","import noop from \"../noop\";\n\nexport default function() {\n  var lines = [],\n      line;\n  return {\n    point: function(x, y) {\n      line.push([x, y]);\n    },\n    lineStart: function() {\n      lines.push(line = []);\n    },\n    lineEnd: noop,\n    rejoin: function() {\n      if (lines.length > 1) lines.push(lines.pop().concat(lines.shift()));\n    },\n    result: function() {\n      var result = lines;\n      lines = [];\n      line = null;\n      return result;\n    }\n  };\n}\n","import {abs, epsilon} from \"./math\";\n\nexport default function(a, b) {\n  return abs(a[0] - b[0]) < epsilon && abs(a[1] - b[1]) < epsilon;\n}\n","import pointEqual from \"../pointEqual\";\n\nfunction Intersection(point, points, other, entry) {\n  this.x = point;\n  this.z = points;\n  this.o = other; // another intersection\n  this.e = entry; // is an entry?\n  this.v = false; // visited\n  this.n = this.p = null; // next & previous\n}\n\n// A generalized polygon clipping algorithm: given a polygon that has been cut\n// into its visible line segments, and rejoins the segments by interpolating\n// along the clip edge.\nexport default function(segments, compareIntersection, startInside, interpolate, stream) {\n  var subject = [],\n      clip = [],\n      i,\n      n;\n\n  segments.forEach(function(segment) {\n    if ((n = segment.length - 1) <= 0) return;\n    var n, p0 = segment[0], p1 = segment[n], x;\n\n    // If the first and last points of a segment are coincident, then treat as a\n    // closed ring. TODO if all rings are closed, then the winding order of the\n    // exterior ring should be checked.\n    if (pointEqual(p0, p1)) {\n      stream.lineStart();\n      for (i = 0; i < n; ++i) stream.point((p0 = segment[i])[0], p0[1]);\n      stream.lineEnd();\n      return;\n    }\n\n    subject.push(x = new Intersection(p0, segment, null, true));\n    clip.push(x.o = new Intersection(p0, null, x, false));\n    subject.push(x = new Intersection(p1, segment, null, false));\n    clip.push(x.o = new Intersection(p1, null, x, true));\n  });\n\n  if (!subject.length) return;\n\n  clip.sort(compareIntersection);\n  link(subject);\n  link(clip);\n\n  for (i = 0, n = clip.length; i < n; ++i) {\n    clip[i].e = startInside = !startInside;\n  }\n\n  var start = subject[0],\n      points,\n      point;\n\n  while (1) {\n    // Find first unvisited intersection.\n    var current = start,\n        isSubject = true;\n    while (current.v) if ((current = current.n) === start) return;\n    points = current.z;\n    stream.lineStart();\n    do {\n      current.v = current.o.v = true;\n      if (current.e) {\n        if (isSubject) {\n          for (i = 0, n = points.length; i < n; ++i) stream.point((point = points[i])[0], point[1]);\n        } else {\n          interpolate(current.x, current.n.x, 1, stream);\n        }\n        current = current.n;\n      } else {\n        if (isSubject) {\n          points = current.p.z;\n          for (i = points.length - 1; i >= 0; --i) stream.point((point = points[i])[0], point[1]);\n        } else {\n          interpolate(current.x, current.p.x, -1, stream);\n        }\n        current = current.p;\n      }\n      current = current.o;\n      points = current.z;\n      isSubject = !isSubject;\n    } while (!current.v);\n    stream.lineEnd();\n  }\n}\n\nfunction link(array) {\n  if (!(n = array.length)) return;\n  var n,\n      i = 0,\n      a = array[0],\n      b;\n  while (++i < n) {\n    a.n = b = array[i];\n    b.p = a;\n    a = b;\n  }\n  a.n = b = array[0];\n  b.p = a;\n}\n","export default function(a, b) {\n  return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n","import ascending from \"./ascending\";\nimport bisector from \"./bisector\";\n\nvar ascendingBisect = bisector(ascending);\nexport var bisectRight = ascendingBisect.right;\nexport var bisectLeft = ascendingBisect.left;\nexport default bisectRight;\n","var array = Array.prototype;\n\nexport var slice = array.slice;\nexport var map = array.map;\n","export default function(arrays) {\n  var n = arrays.length,\n      m,\n      i = -1,\n      j = 0,\n      merged,\n      array;\n\n  while (++i < n) j += arrays[i].length;\n  merged = new Array(j);\n\n  while (--n >= 0) {\n    array = arrays[n];\n    m = array.length;\n    while (--m >= 0) {\n      merged[--j] = array[m];\n    }\n  }\n\n  return merged;\n}\n","export default function(start, stop, step) {\n  start = +start, stop = +stop, step = (n = arguments.length) < 2 ? (stop = start, start = 0, 1) : n < 3 ? 1 : +step;\n\n  var i = -1,\n      n = Math.max(0, Math.ceil((stop - start) / step)) | 0,\n      range = new Array(n);\n\n  while (++i < n) {\n    range[i] = start + i * step;\n  }\n\n  return range;\n}\n","var e10 = Math.sqrt(50),\n    e5 = Math.sqrt(10),\n    e2 = Math.sqrt(2);\n\nexport default function(start, stop, count) {\n  var reverse,\n      i = -1,\n      n,\n      ticks,\n      step;\n\n  stop = +stop, start = +start, count = +count;\n  if (start === stop && count > 0) return [start];\n  if (reverse = stop < start) n = start, start = stop, stop = n;\n  if ((step = tickIncrement(start, stop, count)) === 0 || !isFinite(step)) return [];\n\n  if (step > 0) {\n    start = Math.ceil(start / step);\n    stop = Math.floor(stop / step);\n    ticks = new Array(n = Math.ceil(stop - start + 1));\n    while (++i < n) ticks[i] = (start + i) * step;\n  } else {\n    start = Math.floor(start * step);\n    stop = Math.ceil(stop * step);\n    ticks = new Array(n = Math.ceil(start - stop + 1));\n    while (++i < n) ticks[i] = (start - i) / step;\n  }\n\n  if (reverse) ticks.reverse();\n\n  return ticks;\n}\n\nexport function tickIncrement(start, stop, count) {\n  var step = (stop - start) / Math.max(0, count),\n      power = Math.floor(Math.log(step) / Math.LN10),\n      error = step / Math.pow(10, power);\n  return power >= 0\n      ? (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1) * Math.pow(10, power)\n      : -Math.pow(10, -power) / (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1);\n}\n\nexport function tickStep(start, stop, count) {\n  var step0 = Math.abs(stop - start) / Math.max(0, count),\n      step1 = Math.pow(10, Math.floor(Math.log(step0) / Math.LN10)),\n      error = step0 / step1;\n  if (error >= e10) step1 *= 10;\n  else if (error >= e5) step1 *= 5;\n  else if (error >= e2) step1 *= 2;\n  return stop < start ? -step1 : step1;\n}\n","import {abs, epsilon} from \"../math\";\nimport clipBuffer from \"./buffer\";\nimport clipLine from \"./line\";\nimport clipPolygon from \"./polygon\";\nimport {merge} from \"d3-array\";\n\nvar clipMax = 1e9, clipMin = -clipMax;\n\n// TODO Use d3-polygon’s polygonContains here for the ring check?\n// TODO Eliminate duplicate buffering in clipBuffer and polygon.push?\n\nexport function clipExtent(x0, y0, x1, y1) {\n\n  function visible(x, y) {\n    return x0 <= x && x <= x1 && y0 <= y && y <= y1;\n  }\n\n  function interpolate(from, to, direction, stream) {\n    var a = 0, a1 = 0;\n    if (from == null\n        || (a = corner(from, direction)) !== (a1 = corner(to, direction))\n        || comparePoint(from, to) < 0 ^ direction > 0) {\n      do stream.point(a === 0 || a === 3 ? x0 : x1, a > 1 ? y1 : y0);\n      while ((a = (a + direction + 4) % 4) !== a1);\n    } else {\n      stream.point(to[0], to[1]);\n    }\n  }\n\n  function corner(p, direction) {\n    return abs(p[0] - x0) < epsilon ? direction > 0 ? 0 : 3\n        : abs(p[0] - x1) < epsilon ? direction > 0 ? 2 : 1\n        : abs(p[1] - y0) < epsilon ? direction > 0 ? 1 : 0\n        : direction > 0 ? 3 : 2; // abs(p[1] - y1) < epsilon\n  }\n\n  function compareIntersection(a, b) {\n    return comparePoint(a.x, b.x);\n  }\n\n  function comparePoint(a, b) {\n    var ca = corner(a, 1),\n        cb = corner(b, 1);\n    return ca !== cb ? ca - cb\n        : ca === 0 ? b[1] - a[1]\n        : ca === 1 ? a[0] - b[0]\n        : ca === 2 ? a[1] - b[1]\n        : b[0] - a[0];\n  }\n\n  return function(stream) {\n    var activeStream = stream,\n        bufferStream = clipBuffer(),\n        segments,\n        polygon,\n        ring,\n        x__, y__, v__, // first point\n        x_, y_, v_, // previous point\n        first,\n        clean;\n\n    var clipStream = {\n      point: point,\n      lineStart: lineStart,\n      lineEnd: lineEnd,\n      polygonStart: polygonStart,\n      polygonEnd: polygonEnd\n    };\n\n    function point(x, y) {\n      if (visible(x, y)) activeStream.point(x, y);\n    }\n\n    function polygonInside() {\n      var winding = 0;\n\n      for (var i = 0, n = polygon.length; i < n; ++i) {\n        for (var ring = polygon[i], j = 1, m = ring.length, point = ring[0], a0, a1, b0 = point[0], b1 = point[1]; j < m; ++j) {\n          a0 = b0, a1 = b1, point = ring[j], b0 = point[0], b1 = point[1];\n          if (a1 <= y1) { if (b1 > y1 && (b0 - a0) * (y1 - a1) > (b1 - a1) * (x0 - a0)) ++winding; }\n          else { if (b1 <= y1 && (b0 - a0) * (y1 - a1) < (b1 - a1) * (x0 - a0)) --winding; }\n        }\n      }\n\n      return winding;\n    }\n\n    // Buffer geometry within a polygon and then clip it en masse.\n    function polygonStart() {\n      activeStream = bufferStream, segments = [], polygon = [], clean = true;\n    }\n\n    function polygonEnd() {\n      var startInside = polygonInside(),\n          cleanInside = clean && startInside,\n          visible = (segments = merge(segments)).length;\n      if (cleanInside || visible) {\n        stream.polygonStart();\n        if (cleanInside) {\n          stream.lineStart();\n          interpolate(null, null, 1, stream);\n          stream.lineEnd();\n        }\n        if (visible) {\n          clipPolygon(segments, compareIntersection, startInside, interpolate, stream);\n        }\n        stream.polygonEnd();\n      }\n      activeStream = stream, segments = polygon = ring = null;\n    }\n\n    function lineStart() {\n      clipStream.point = linePoint;\n      if (polygon) polygon.push(ring = []);\n      first = true;\n      v_ = false;\n      x_ = y_ = NaN;\n    }\n\n    // TODO rather than special-case polygons, simply handle them separately.\n    // Ideally, coincident intersection points should be jittered to avoid\n    // clipping issues.\n    function lineEnd() {\n      if (segments) {\n        linePoint(x__, y__);\n        if (v__ && v_) bufferStream.rejoin();\n        segments.push(bufferStream.result());\n      }\n      clipStream.point = point;\n      if (v_) activeStream.lineEnd();\n    }\n\n    function linePoint(x, y) {\n      var v = visible(x, y);\n      if (polygon) ring.push([x, y]);\n      if (first) {\n        x__ = x, y__ = y, v__ = v;\n        first = false;\n        if (v) {\n          activeStream.lineStart();\n          activeStream.point(x, y);\n        }\n      } else {\n        if (v && v_) activeStream.point(x, y);\n        else {\n          var a = [x_ = Math.max(clipMin, Math.min(clipMax, x_)), y_ = Math.max(clipMin, Math.min(clipMax, y_))],\n              b = [x = Math.max(clipMin, Math.min(clipMax, x)), y = Math.max(clipMin, Math.min(clipMax, y))];\n          if (clipLine(a, b, x0, y0, x1, y1)) {\n            if (!v_) {\n              activeStream.lineStart();\n              activeStream.point(a[0], a[1]);\n            }\n            activeStream.point(b[0], b[1]);\n            if (!v) activeStream.lineEnd();\n            clean = false;\n          } else if (v) {\n            activeStream.lineStart();\n            activeStream.point(x, y);\n            clean = false;\n          }\n        }\n      }\n      x_ = x, y_ = y, v_ = v;\n    }\n\n    return clipStream;\n  };\n}\n\nexport default function() {\n  var x0 = 0,\n      y0 = 0,\n      x1 = 960,\n      y1 = 500,\n      cache,\n      cacheStream,\n      clip;\n\n  return clip = {\n    stream: function(stream) {\n      return cache && cacheStream === stream ? cache : cache = clipExtent(x0, y0, x1, y1)(cacheStream = stream);\n    },\n    extent: function(_) {\n      return arguments.length ? (x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1], cache = cacheStream = null, clip) : [[x0, y0], [x1, y1]];\n    }\n  };\n}\n","export default function(a, b, x0, y0, x1, y1) {\n  var ax = a[0],\n      ay = a[1],\n      bx = b[0],\n      by = b[1],\n      t0 = 0,\n      t1 = 1,\n      dx = bx - ax,\n      dy = by - ay,\n      r;\n\n  r = x0 - ax;\n  if (!dx && r > 0) return;\n  r /= dx;\n  if (dx < 0) {\n    if (r < t0) return;\n    if (r < t1) t1 = r;\n  } else if (dx > 0) {\n    if (r > t1) return;\n    if (r > t0) t0 = r;\n  }\n\n  r = x1 - ax;\n  if (!dx && r < 0) return;\n  r /= dx;\n  if (dx < 0) {\n    if (r > t1) return;\n    if (r > t0) t0 = r;\n  } else if (dx > 0) {\n    if (r < t0) return;\n    if (r < t1) t1 = r;\n  }\n\n  r = y0 - ay;\n  if (!dy && r > 0) return;\n  r /= dy;\n  if (dy < 0) {\n    if (r < t0) return;\n    if (r < t1) t1 = r;\n  } else if (dy > 0) {\n    if (r > t1) return;\n    if (r > t0) t0 = r;\n  }\n\n  r = y1 - ay;\n  if (!dy && r < 0) return;\n  r /= dy;\n  if (dy < 0) {\n    if (r > t1) return;\n    if (r > t0) t0 = r;\n  } else if (dy > 0) {\n    if (r < t0) return;\n    if (r < t1) t1 = r;\n  }\n\n  if (t0 > 0) a[0] = ax + t0 * dx, a[1] = ay + t0 * dy;\n  if (t1 < 1) b[0] = ax + t1 * dx, b[1] = ay + t1 * dy;\n  return true;\n}\n","import adder from \"./adder\";\nimport {cartesian, cartesianCross, cartesianNormalizeInPlace} from \"./cartesian\";\nimport {asin, atan2, cos, epsilon, pi, quarterPi, sin, tau} from \"./math\";\n\nvar sum = adder();\n\nexport default function(polygon, point) {\n  var lambda = point[0],\n      phi = point[1],\n      normal = [sin(lambda), -cos(lambda), 0],\n      angle = 0,\n      winding = 0;\n\n  sum.reset();\n\n  for (var i = 0, n = polygon.length; i < n; ++i) {\n    if (!(m = (ring = polygon[i]).length)) continue;\n    var ring,\n        m,\n        point0 = ring[m - 1],\n        lambda0 = point0[0],\n        phi0 = point0[1] / 2 + quarterPi,\n        sinPhi0 = sin(phi0),\n        cosPhi0 = cos(phi0);\n\n    for (var j = 0; j < m; ++j, lambda0 = lambda1, sinPhi0 = sinPhi1, cosPhi0 = cosPhi1, point0 = point1) {\n      var point1 = ring[j],\n          lambda1 = point1[0],\n          phi1 = point1[1] / 2 + quarterPi,\n          sinPhi1 = sin(phi1),\n          cosPhi1 = cos(phi1),\n          delta = lambda1 - lambda0,\n          sign = delta >= 0 ? 1 : -1,\n          absDelta = sign * delta,\n          antimeridian = absDelta > pi,\n          k = sinPhi0 * sinPhi1;\n\n      sum.add(atan2(k * sign * sin(absDelta), cosPhi0 * cosPhi1 + k * cos(absDelta)));\n      angle += antimeridian ? delta + sign * tau : delta;\n\n      // Are the longitudes either side of the point’s meridian (lambda),\n      // and are the latitudes smaller than the parallel (phi)?\n      if (antimeridian ^ lambda0 >= lambda ^ lambda1 >= lambda) {\n        var arc = cartesianCross(cartesian(point0), cartesian(point1));\n        cartesianNormalizeInPlace(arc);\n        var intersection = cartesianCross(normal, arc);\n        cartesianNormalizeInPlace(intersection);\n        var phiArc = (antimeridian ^ delta >= 0 ? -1 : 1) * asin(intersection[2]);\n        if (phi > phiArc || phi === phiArc && (arc[0] || arc[1])) {\n          winding += antimeridian ^ delta >= 0 ? 1 : -1;\n        }\n      }\n    }\n  }\n\n  // First, determine whether the South pole is inside or outside:\n  //\n  // It is inside if:\n  // * the polygon winds around it in a clockwise direction.\n  // * the polygon does not (cumulatively) wind around it, but has a negative\n  //   (counter-clockwise) area.\n  //\n  // Second, count the (signed) number of times a segment crosses a lambda\n  // from the point to the South pole.  If it is zero, then the point is the\n  // same side as the South pole.\n\n  return (angle < -epsilon || angle < epsilon && sum < -epsilon) ^ (winding & 1);\n}\n","import adder from \"./adder\";\nimport {abs, atan2, cos, radians, sin, sqrt} from \"./math\";\nimport noop from \"./noop\";\nimport stream from \"./stream\";\n\nvar lengthSum = adder(),\n    lambda0,\n    sinPhi0,\n    cosPhi0;\n\nvar lengthStream = {\n  sphere: noop,\n  point: noop,\n  lineStart: lengthLineStart,\n  lineEnd: noop,\n  polygonStart: noop,\n  polygonEnd: noop\n};\n\nfunction lengthLineStart() {\n  lengthStream.point = lengthPointFirst;\n  lengthStream.lineEnd = lengthLineEnd;\n}\n\nfunction lengthLineEnd() {\n  lengthStream.point = lengthStream.lineEnd = noop;\n}\n\nfunction lengthPointFirst(lambda, phi) {\n  lambda *= radians, phi *= radians;\n  lambda0 = lambda, sinPhi0 = sin(phi), cosPhi0 = cos(phi);\n  lengthStream.point = lengthPoint;\n}\n\nfunction lengthPoint(lambda, phi) {\n  lambda *= radians, phi *= radians;\n  var sinPhi = sin(phi),\n      cosPhi = cos(phi),\n      delta = abs(lambda - lambda0),\n      cosDelta = cos(delta),\n      sinDelta = sin(delta),\n      x = cosPhi * sinDelta,\n      y = cosPhi0 * sinPhi - sinPhi0 * cosPhi * cosDelta,\n      z = sinPhi0 * sinPhi + cosPhi0 * cosPhi * cosDelta;\n  lengthSum.add(atan2(sqrt(x * x + y * y), z));\n  lambda0 = lambda, sinPhi0 = sinPhi, cosPhi0 = cosPhi;\n}\n\nexport default function(object) {\n  lengthSum.reset();\n  stream(object, lengthStream);\n  return +lengthSum;\n}\n","import length from \"./length\";\n\nvar coordinates = [null, null],\n    object = {type: \"LineString\", coordinates: coordinates};\n\nexport default function(a, b) {\n  coordinates[0] = a;\n  coordinates[1] = b;\n  return length(object);\n}\n","import {default as polygonContains} from \"./polygonContains\";\nimport {default as distance} from \"./distance\";\nimport {epsilon, radians} from \"./math\";\n\nvar containsObjectType = {\n  Feature: function(object, point) {\n    return containsGeometry(object.geometry, point);\n  },\n  FeatureCollection: function(object, point) {\n    var features = object.features, i = -1, n = features.length;\n    while (++i < n) if (containsGeometry(features[i].geometry, point)) return true;\n    return false;\n  }\n};\n\nvar containsGeometryType = {\n  Sphere: function() {\n    return true;\n  },\n  Point: function(object, point) {\n    return containsPoint(object.coordinates, point);\n  },\n  MultiPoint: function(object, point) {\n    var coordinates = object.coordinates, i = -1, n = coordinates.length;\n    while (++i < n) if (containsPoint(coordinates[i], point)) return true;\n    return false;\n  },\n  LineString: function(object, point) {\n    return containsLine(object.coordinates, point);\n  },\n  MultiLineString: function(object, point) {\n    var coordinates = object.coordinates, i = -1, n = coordinates.length;\n    while (++i < n) if (containsLine(coordinates[i], point)) return true;\n    return false;\n  },\n  Polygon: function(object, point) {\n    return containsPolygon(object.coordinates, point);\n  },\n  MultiPolygon: function(object, point) {\n    var coordinates = object.coordinates, i = -1, n = coordinates.length;\n    while (++i < n) if (containsPolygon(coordinates[i], point)) return true;\n    return false;\n  },\n  GeometryCollection: function(object, point) {\n    var geometries = object.geometries, i = -1, n = geometries.length;\n    while (++i < n) if (containsGeometry(geometries[i], point)) return true;\n    return false;\n  }\n};\n\nfunction containsGeometry(geometry, point) {\n  return geometry && containsGeometryType.hasOwnProperty(geometry.type)\n      ? containsGeometryType[geometry.type](geometry, point)\n      : false;\n}\n\nfunction containsPoint(coordinates, point) {\n  return distance(coordinates, point) === 0;\n}\n\nfunction containsLine(coordinates, point) {\n  var ab = distance(coordinates[0], coordinates[1]),\n      ao = distance(coordinates[0], point),\n      ob = distance(point, coordinates[1]);\n  return ao + ob <= ab + epsilon;\n}\n\nfunction containsPolygon(coordinates, point) {\n  return !!polygonContains(coordinates.map(ringRadians), pointRadians(point));\n}\n\nfunction ringRadians(ring) {\n  return ring = ring.map(pointRadians), ring.pop(), ring;\n}\n\nfunction pointRadians(point) {\n  return [point[0] * radians, point[1] * radians];\n}\n\nexport default function(object, point) {\n  return (object && containsObjectType.hasOwnProperty(object.type)\n      ? containsObjectType[object.type]\n      : containsGeometry)(object, point);\n}\n","import {range} from \"d3-array\";\nimport {abs, ceil, epsilon} from \"./math\";\n\nfunction graticuleX(y0, y1, dy) {\n  var y = range(y0, y1 - epsilon, dy).concat(y1);\n  return function(x) { return y.map(function(y) { return [x, y]; }); };\n}\n\nfunction graticuleY(x0, x1, dx) {\n  var x = range(x0, x1 - epsilon, dx).concat(x1);\n  return function(y) { return x.map(function(x) { return [x, y]; }); };\n}\n\nexport default function graticule() {\n  var x1, x0, X1, X0,\n      y1, y0, Y1, Y0,\n      dx = 10, dy = dx, DX = 90, DY = 360,\n      x, y, X, Y,\n      precision = 2.5;\n\n  function graticule() {\n    return {type: \"MultiLineString\", coordinates: lines()};\n  }\n\n  function lines() {\n    return range(ceil(X0 / DX) * DX, X1, DX).map(X)\n        .concat(range(ceil(Y0 / DY) * DY, Y1, DY).map(Y))\n        .concat(range(ceil(x0 / dx) * dx, x1, dx).filter(function(x) { return abs(x % DX) > epsilon; }).map(x))\n        .concat(range(ceil(y0 / dy) * dy, y1, dy).filter(function(y) { return abs(y % DY) > epsilon; }).map(y));\n  }\n\n  graticule.lines = function() {\n    return lines().map(function(coordinates) { return {type: \"LineString\", coordinates: coordinates}; });\n  };\n\n  graticule.outline = function() {\n    return {\n      type: \"Polygon\",\n      coordinates: [\n        X(X0).concat(\n        Y(Y1).slice(1),\n        X(X1).reverse().slice(1),\n        Y(Y0).reverse().slice(1))\n      ]\n    };\n  };\n\n  graticule.extent = function(_) {\n    if (!arguments.length) return graticule.extentMinor();\n    return graticule.extentMajor(_).extentMinor(_);\n  };\n\n  graticule.extentMajor = function(_) {\n    if (!arguments.length) return [[X0, Y0], [X1, Y1]];\n    X0 = +_[0][0], X1 = +_[1][0];\n    Y0 = +_[0][1], Y1 = +_[1][1];\n    if (X0 > X1) _ = X0, X0 = X1, X1 = _;\n    if (Y0 > Y1) _ = Y0, Y0 = Y1, Y1 = _;\n    return graticule.precision(precision);\n  };\n\n  graticule.extentMinor = function(_) {\n    if (!arguments.length) return [[x0, y0], [x1, y1]];\n    x0 = +_[0][0], x1 = +_[1][0];\n    y0 = +_[0][1], y1 = +_[1][1];\n    if (x0 > x1) _ = x0, x0 = x1, x1 = _;\n    if (y0 > y1) _ = y0, y0 = y1, y1 = _;\n    return graticule.precision(precision);\n  };\n\n  graticule.step = function(_) {\n    if (!arguments.length) return graticule.stepMinor();\n    return graticule.stepMajor(_).stepMinor(_);\n  };\n\n  graticule.stepMajor = function(_) {\n    if (!arguments.length) return [DX, DY];\n    DX = +_[0], DY = +_[1];\n    return graticule;\n  };\n\n  graticule.stepMinor = function(_) {\n    if (!arguments.length) return [dx, dy];\n    dx = +_[0], dy = +_[1];\n    return graticule;\n  };\n\n  graticule.precision = function(_) {\n    if (!arguments.length) return precision;\n    precision = +_;\n    x = graticuleX(y0, y1, 90);\n    y = graticuleY(x0, x1, precision);\n    X = graticuleX(Y0, Y1, 90);\n    Y = graticuleY(X0, X1, precision);\n    return graticule;\n  };\n\n  return graticule\n      .extentMajor([[-180, -90 + epsilon], [180, 90 - epsilon]])\n      .extentMinor([[-180, -80 - epsilon], [180, 80 + epsilon]]);\n}\n\nexport function graticule10() {\n  return graticule()();\n}\n","import {asin, atan2, cos, degrees, haversin, radians, sin, sqrt} from \"./math\";\n\nexport default function(a, b) {\n  var x0 = a[0] * radians,\n      y0 = a[1] * radians,\n      x1 = b[0] * radians,\n      y1 = b[1] * radians,\n      cy0 = cos(y0),\n      sy0 = sin(y0),\n      cy1 = cos(y1),\n      sy1 = sin(y1),\n      kx0 = cy0 * cos(x0),\n      ky0 = cy0 * sin(x0),\n      kx1 = cy1 * cos(x1),\n      ky1 = cy1 * sin(x1),\n      d = 2 * asin(sqrt(haversin(y1 - y0) + cy0 * cy1 * haversin(x1 - x0))),\n      k = sin(d);\n\n  var interpolate = d ? function(t) {\n    var B = sin(t *= d) / k,\n        A = sin(d - t) / k,\n        x = A * kx0 + B * kx1,\n        y = A * ky0 + B * ky1,\n        z = A * sy0 + B * sy1;\n    return [\n      atan2(y, x) * degrees,\n      atan2(z, sqrt(x * x + y * y)) * degrees\n    ];\n  } : function() {\n    return [x0 * degrees, y0 * degrees];\n  };\n\n  interpolate.distance = d;\n\n  return interpolate;\n}\n","export default function(x) {\n  return x;\n}\n","import adder from \"../adder\";\nimport {abs} from \"../math\";\nimport noop from \"../noop\";\n\nvar areaSum = adder(),\n    areaRingSum = adder(),\n    x00,\n    y00,\n    x0,\n    y0;\n\nvar areaStream = {\n  point: noop,\n  lineStart: noop,\n  lineEnd: noop,\n  polygonStart: function() {\n    areaStream.lineStart = areaRingStart;\n    areaStream.lineEnd = areaRingEnd;\n  },\n  polygonEnd: function() {\n    areaStream.lineStart = areaStream.lineEnd = areaStream.point = noop;\n    areaSum.add(abs(areaRingSum));\n    areaRingSum.reset();\n  },\n  result: function() {\n    var area = areaSum / 2;\n    areaSum.reset();\n    return area;\n  }\n};\n\nfunction areaRingStart() {\n  areaStream.point = areaPointFirst;\n}\n\nfunction areaPointFirst(x, y) {\n  areaStream.point = areaPoint;\n  x00 = x0 = x, y00 = y0 = y;\n}\n\nfunction areaPoint(x, y) {\n  areaRingSum.add(y0 * x - x0 * y);\n  x0 = x, y0 = y;\n}\n\nfunction areaRingEnd() {\n  areaPoint(x00, y00);\n}\n\nexport default areaStream;\n","import noop from \"../noop\";\n\nvar x0 = Infinity,\n    y0 = x0,\n    x1 = -x0,\n    y1 = x1;\n\nvar boundsStream = {\n  point: boundsPoint,\n  lineStart: noop,\n  lineEnd: noop,\n  polygonStart: noop,\n  polygonEnd: noop,\n  result: function() {\n    var bounds = [[x0, y0], [x1, y1]];\n    x1 = y1 = -(y0 = x0 = Infinity);\n    return bounds;\n  }\n};\n\nfunction boundsPoint(x, y) {\n  if (x < x0) x0 = x;\n  if (x > x1) x1 = x;\n  if (y < y0) y0 = y;\n  if (y > y1) y1 = y;\n}\n\nexport default boundsStream;\n","import {sqrt} from \"../math\";\n\n// TODO Enforce positive area for exterior, negative area for interior?\n\nvar X0 = 0,\n    Y0 = 0,\n    Z0 = 0,\n    X1 = 0,\n    Y1 = 0,\n    Z1 = 0,\n    X2 = 0,\n    Y2 = 0,\n    Z2 = 0,\n    x00,\n    y00,\n    x0,\n    y0;\n\nvar centroidStream = {\n  point: centroidPoint,\n  lineStart: centroidLineStart,\n  lineEnd: centroidLineEnd,\n  polygonStart: function() {\n    centroidStream.lineStart = centroidRingStart;\n    centroidStream.lineEnd = centroidRingEnd;\n  },\n  polygonEnd: function() {\n    centroidStream.point = centroidPoint;\n    centroidStream.lineStart = centroidLineStart;\n    centroidStream.lineEnd = centroidLineEnd;\n  },\n  result: function() {\n    var centroid = Z2 ? [X2 / Z2, Y2 / Z2]\n        : Z1 ? [X1 / Z1, Y1 / Z1]\n        : Z0 ? [X0 / Z0, Y0 / Z0]\n        : [NaN, NaN];\n    X0 = Y0 = Z0 =\n    X1 = Y1 = Z1 =\n    X2 = Y2 = Z2 = 0;\n    return centroid;\n  }\n};\n\nfunction centroidPoint(x, y) {\n  X0 += x;\n  Y0 += y;\n  ++Z0;\n}\n\nfunction centroidLineStart() {\n  centroidStream.point = centroidPointFirstLine;\n}\n\nfunction centroidPointFirstLine(x, y) {\n  centroidStream.point = centroidPointLine;\n  centroidPoint(x0 = x, y0 = y);\n}\n\nfunction centroidPointLine(x, y) {\n  var dx = x - x0, dy = y - y0, z = sqrt(dx * dx + dy * dy);\n  X1 += z * (x0 + x) / 2;\n  Y1 += z * (y0 + y) / 2;\n  Z1 += z;\n  centroidPoint(x0 = x, y0 = y);\n}\n\nfunction centroidLineEnd() {\n  centroidStream.point = centroidPoint;\n}\n\nfunction centroidRingStart() {\n  centroidStream.point = centroidPointFirstRing;\n}\n\nfunction centroidRingEnd() {\n  centroidPointRing(x00, y00);\n}\n\nfunction centroidPointFirstRing(x, y) {\n  centroidStream.point = centroidPointRing;\n  centroidPoint(x00 = x0 = x, y00 = y0 = y);\n}\n\nfunction centroidPointRing(x, y) {\n  var dx = x - x0,\n      dy = y - y0,\n      z = sqrt(dx * dx + dy * dy);\n\n  X1 += z * (x0 + x) / 2;\n  Y1 += z * (y0 + y) / 2;\n  Z1 += z;\n\n  z = y0 * x - x0 * y;\n  X2 += z * (x0 + x);\n  Y2 += z * (y0 + y);\n  Z2 += z * 3;\n  centroidPoint(x0 = x, y0 = y);\n}\n\nexport default centroidStream;\n","import {tau} from \"../math\";\nimport noop from \"../noop\";\n\nexport default function PathContext(context) {\n  this._context = context;\n}\n\nPathContext.prototype = {\n  _radius: 4.5,\n  pointRadius: function(_) {\n    return this._radius = _, this;\n  },\n  polygonStart: function() {\n    this._line = 0;\n  },\n  polygonEnd: function() {\n    this._line = NaN;\n  },\n  lineStart: function() {\n    this._point = 0;\n  },\n  lineEnd: function() {\n    if (this._line === 0) this._context.closePath();\n    this._point = NaN;\n  },\n  point: function(x, y) {\n    switch (this._point) {\n      case 0: {\n        this._context.moveTo(x, y);\n        this._point = 1;\n        break;\n      }\n      case 1: {\n        this._context.lineTo(x, y);\n        break;\n      }\n      default: {\n        this._context.moveTo(x + this._radius, y);\n        this._context.arc(x, y, this._radius, 0, tau);\n        break;\n      }\n    }\n  },\n  result: noop\n};\n","import adder from \"../adder\";\nimport {sqrt} from \"../math\";\nimport noop from \"../noop\";\n\nvar lengthSum = adder(),\n    lengthRing,\n    x00,\n    y00,\n    x0,\n    y0;\n\nvar lengthStream = {\n  point: noop,\n  lineStart: function() {\n    lengthStream.point = lengthPointFirst;\n  },\n  lineEnd: function() {\n    if (lengthRing) lengthPoint(x00, y00);\n    lengthStream.point = noop;\n  },\n  polygonStart: function() {\n    lengthRing = true;\n  },\n  polygonEnd: function() {\n    lengthRing = null;\n  },\n  result: function() {\n    var length = +lengthSum;\n    lengthSum.reset();\n    return length;\n  }\n};\n\nfunction lengthPointFirst(x, y) {\n  lengthStream.point = lengthPoint;\n  x00 = x0 = x, y00 = y0 = y;\n}\n\nfunction lengthPoint(x, y) {\n  x0 -= x, y0 -= y;\n  lengthSum.add(sqrt(x0 * x0 + y0 * y0));\n  x0 = x, y0 = y;\n}\n\nexport default lengthStream;\n","export default function PathString() {\n  this._string = [];\n}\n\nPathString.prototype = {\n  _radius: 4.5,\n  _circle: circle(4.5),\n  pointRadius: function(_) {\n    if ((_ = +_) !== this._radius) this._radius = _, this._circle = null;\n    return this;\n  },\n  polygonStart: function() {\n    this._line = 0;\n  },\n  polygonEnd: function() {\n    this._line = NaN;\n  },\n  lineStart: function() {\n    this._point = 0;\n  },\n  lineEnd: function() {\n    if (this._line === 0) this._string.push(\"Z\");\n    this._point = NaN;\n  },\n  point: function(x, y) {\n    switch (this._point) {\n      case 0: {\n        this._string.push(\"M\", x, \",\", y);\n        this._point = 1;\n        break;\n      }\n      case 1: {\n        this._string.push(\"L\", x, \",\", y);\n        break;\n      }\n      default: {\n        if (this._circle == null) this._circle = circle(this._radius);\n        this._string.push(\"M\", x, \",\", y, this._circle);\n        break;\n      }\n    }\n  },\n  result: function() {\n    if (this._string.length) {\n      var result = this._string.join(\"\");\n      this._string = [];\n      return result;\n    } else {\n      return null;\n    }\n  }\n};\n\nfunction circle(radius) {\n  return \"m0,\" + radius\n      + \"a\" + radius + \",\" + radius + \" 0 1,1 0,\" + -2 * radius\n      + \"a\" + radius + \",\" + radius + \" 0 1,1 0,\" + 2 * radius\n      + \"z\";\n}\n","import identity from \"../identity\";\nimport stream from \"../stream\";\nimport pathArea from \"./area\";\nimport pathBounds from \"./bounds\";\nimport pathCentroid from \"./centroid\";\nimport PathContext from \"./context\";\nimport pathMeasure from \"./measure\";\nimport PathString from \"./string\";\n\nexport default function(projection, context) {\n  var pointRadius = 4.5,\n      projectionStream,\n      contextStream;\n\n  function path(object) {\n    if (object) {\n      if (typeof pointRadius === \"function\") contextStream.pointRadius(+pointRadius.apply(this, arguments));\n      stream(object, projectionStream(contextStream));\n    }\n    return contextStream.result();\n  }\n\n  path.area = function(object) {\n    stream(object, projectionStream(pathArea));\n    return pathArea.result();\n  };\n\n  path.measure = function(object) {\n    stream(object, projectionStream(pathMeasure));\n    return pathMeasure.result();\n  };\n\n  path.bounds = function(object) {\n    stream(object, projectionStream(pathBounds));\n    return pathBounds.result();\n  };\n\n  path.centroid = function(object) {\n    stream(object, projectionStream(pathCentroid));\n    return pathCentroid.result();\n  };\n\n  path.projection = function(_) {\n    return arguments.length ? (projectionStream = _ == null ? (projection = null, identity) : (projection = _).stream, path) : projection;\n  };\n\n  path.context = function(_) {\n    if (!arguments.length) return context;\n    contextStream = _ == null ? (context = null, new PathString) : new PathContext(context = _);\n    if (typeof pointRadius !== \"function\") contextStream.pointRadius(pointRadius);\n    return path;\n  };\n\n  path.pointRadius = function(_) {\n    if (!arguments.length) return pointRadius;\n    pointRadius = typeof _ === \"function\" ? _ : (contextStream.pointRadius(+_), +_);\n    return path;\n  };\n\n  return path.projection(projection).context(context);\n}\n","import clipBuffer from \"./buffer\";\nimport clipPolygon from \"./polygon\";\nimport {epsilon, halfPi} from \"../math\";\nimport polygonContains from \"../polygonContains\";\nimport {merge} from \"d3-array\";\n\nexport default function(pointVisible, clipLine, interpolate, start) {\n  return function(rotate, sink) {\n    var line = clipLine(sink),\n        rotatedStart = rotate.invert(start[0], start[1]),\n        ringBuffer = clipBuffer(),\n        ringSink = clipLine(ringBuffer),\n        polygonStarted = false,\n        polygon,\n        segments,\n        ring;\n\n    var clip = {\n      point: point,\n      lineStart: lineStart,\n      lineEnd: lineEnd,\n      polygonStart: function() {\n        clip.point = pointRing;\n        clip.lineStart = ringStart;\n        clip.lineEnd = ringEnd;\n        segments = [];\n        polygon = [];\n      },\n      polygonEnd: function() {\n        clip.point = point;\n        clip.lineStart = lineStart;\n        clip.lineEnd = lineEnd;\n        segments = merge(segments);\n        var startInside = polygonContains(polygon, rotatedStart);\n        if (segments.length) {\n          if (!polygonStarted) sink.polygonStart(), polygonStarted = true;\n          clipPolygon(segments, compareIntersection, startInside, interpolate, sink);\n        } else if (startInside) {\n          if (!polygonStarted) sink.polygonStart(), polygonStarted = true;\n          sink.lineStart();\n          interpolate(null, null, 1, sink);\n          sink.lineEnd();\n        }\n        if (polygonStarted) sink.polygonEnd(), polygonStarted = false;\n        segments = polygon = null;\n      },\n      sphere: function() {\n        sink.polygonStart();\n        sink.lineStart();\n        interpolate(null, null, 1, sink);\n        sink.lineEnd();\n        sink.polygonEnd();\n      }\n    };\n\n    function point(lambda, phi) {\n      var point = rotate(lambda, phi);\n      if (pointVisible(lambda = point[0], phi = point[1])) sink.point(lambda, phi);\n    }\n\n    function pointLine(lambda, phi) {\n      var point = rotate(lambda, phi);\n      line.point(point[0], point[1]);\n    }\n\n    function lineStart() {\n      clip.point = pointLine;\n      line.lineStart();\n    }\n\n    function lineEnd() {\n      clip.point = point;\n      line.lineEnd();\n    }\n\n    function pointRing(lambda, phi) {\n      ring.push([lambda, phi]);\n      var point = rotate(lambda, phi);\n      ringSink.point(point[0], point[1]);\n    }\n\n    function ringStart() {\n      ringSink.lineStart();\n      ring = [];\n    }\n\n    function ringEnd() {\n      pointRing(ring[0][0], ring[0][1]);\n      ringSink.lineEnd();\n\n      var clean = ringSink.clean(),\n          ringSegments = ringBuffer.result(),\n          i, n = ringSegments.length, m,\n          segment,\n          point;\n\n      ring.pop();\n      polygon.push(ring);\n      ring = null;\n\n      if (!n) return;\n\n      // No intersections.\n      if (clean & 1) {\n        segment = ringSegments[0];\n        if ((m = segment.length - 1) > 0) {\n          if (!polygonStarted) sink.polygonStart(), polygonStarted = true;\n          sink.lineStart();\n          for (i = 0; i < m; ++i) sink.point((point = segment[i])[0], point[1]);\n          sink.lineEnd();\n        }\n        return;\n      }\n\n      // Rejoin connected segments.\n      // TODO reuse ringBuffer.rejoin()?\n      if (n > 1 && clean & 2) ringSegments.push(ringSegments.pop().concat(ringSegments.shift()));\n\n      segments.push(ringSegments.filter(validSegment));\n    }\n\n    return clip;\n  };\n}\n\nfunction validSegment(segment) {\n  return segment.length > 1;\n}\n\n// Intersections are sorted along the clip edge. For both antimeridian cutting\n// and circle clipping, the same comparison is used.\nfunction compareIntersection(a, b) {\n  return ((a = a.x)[0] < 0 ? a[1] - halfPi - epsilon : halfPi - a[1])\n       - ((b = b.x)[0] < 0 ? b[1] - halfPi - epsilon : halfPi - b[1]);\n}\n","import clip from \"./index\";\nimport {abs, atan, cos, epsilon, halfPi, pi, sin} from \"../math\";\n\nexport default clip(\n  function() { return true; },\n  clipAntimeridianLine,\n  clipAntimeridianInterpolate,\n  [-pi, -halfPi]\n);\n\n// Takes a line and cuts into visible segments. Return values: 0 - there were\n// intersections or the line was empty; 1 - no intersections; 2 - there were\n// intersections, and the first and last segments should be rejoined.\nfunction clipAntimeridianLine(stream) {\n  var lambda0 = NaN,\n      phi0 = NaN,\n      sign0 = NaN,\n      clean; // no intersections\n\n  return {\n    lineStart: function() {\n      stream.lineStart();\n      clean = 1;\n    },\n    point: function(lambda1, phi1) {\n      var sign1 = lambda1 > 0 ? pi : -pi,\n          delta = abs(lambda1 - lambda0);\n      if (abs(delta - pi) < epsilon) { // line crosses a pole\n        stream.point(lambda0, phi0 = (phi0 + phi1) / 2 > 0 ? halfPi : -halfPi);\n        stream.point(sign0, phi0);\n        stream.lineEnd();\n        stream.lineStart();\n        stream.point(sign1, phi0);\n        stream.point(lambda1, phi0);\n        clean = 0;\n      } else if (sign0 !== sign1 && delta >= pi) { // line crosses antimeridian\n        if (abs(lambda0 - sign0) < epsilon) lambda0 -= sign0 * epsilon; // handle degeneracies\n        if (abs(lambda1 - sign1) < epsilon) lambda1 -= sign1 * epsilon;\n        phi0 = clipAntimeridianIntersect(lambda0, phi0, lambda1, phi1);\n        stream.point(sign0, phi0);\n        stream.lineEnd();\n        stream.lineStart();\n        stream.point(sign1, phi0);\n        clean = 0;\n      }\n      stream.point(lambda0 = lambda1, phi0 = phi1);\n      sign0 = sign1;\n    },\n    lineEnd: function() {\n      stream.lineEnd();\n      lambda0 = phi0 = NaN;\n    },\n    clean: function() {\n      return 2 - clean; // if intersections, rejoin first and last segments\n    }\n  };\n}\n\nfunction clipAntimeridianIntersect(lambda0, phi0, lambda1, phi1) {\n  var cosPhi0,\n      cosPhi1,\n      sinLambda0Lambda1 = sin(lambda0 - lambda1);\n  return abs(sinLambda0Lambda1) > epsilon\n      ? atan((sin(phi0) * (cosPhi1 = cos(phi1)) * sin(lambda1)\n          - sin(phi1) * (cosPhi0 = cos(phi0)) * sin(lambda0))\n          / (cosPhi0 * cosPhi1 * sinLambda0Lambda1))\n      : (phi0 + phi1) / 2;\n}\n\nfunction clipAntimeridianInterpolate(from, to, direction, stream) {\n  var phi;\n  if (from == null) {\n    phi = direction * halfPi;\n    stream.point(-pi, phi);\n    stream.point(0, phi);\n    stream.point(pi, phi);\n    stream.point(pi, 0);\n    stream.point(pi, -phi);\n    stream.point(0, -phi);\n    stream.point(-pi, -phi);\n    stream.point(-pi, 0);\n    stream.point(-pi, phi);\n  } else if (abs(from[0] - to[0]) > epsilon) {\n    var lambda = from[0] < to[0] ? pi : -pi;\n    phi = direction * lambda / 2;\n    stream.point(-lambda, phi);\n    stream.point(0, phi);\n    stream.point(lambda, phi);\n  } else {\n    stream.point(to[0], to[1]);\n  }\n}\n","export default function(methods) {\n  return {\n    stream: transformer(methods)\n  };\n}\n\nexport function transformer(methods) {\n  return function(stream) {\n    var s = new TransformStream;\n    for (var key in methods) s[key] = methods[key];\n    s.stream = stream;\n    return s;\n  };\n}\n\nfunction TransformStream() {}\n\nTransformStream.prototype = {\n  constructor: TransformStream,\n  point: function(x, y) { this.stream.point(x, y); },\n  sphere: function() { this.stream.sphere(); },\n  lineStart: function() { this.stream.lineStart(); },\n  lineEnd: function() { this.stream.lineEnd(); },\n  polygonStart: function() { this.stream.polygonStart(); },\n  polygonEnd: function() { this.stream.polygonEnd(); }\n};\n","import {default as geoStream} from \"../stream\";\nimport boundsStream from \"../path/bounds\";\n\nexport function fitExtent(projection, extent, object) {\n  var w = extent[1][0] - extent[0][0],\n      h = extent[1][1] - extent[0][1],\n      clip = projection.clipExtent && projection.clipExtent();\n\n  projection\n      .scale(150)\n      .translate([0, 0]);\n\n  if (clip != null) projection.clipExtent(null);\n\n  geoStream(object, projection.stream(boundsStream));\n\n  var b = boundsStream.result(),\n      k = Math.min(w / (b[1][0] - b[0][0]), h / (b[1][1] - b[0][1])),\n      x = +extent[0][0] + (w - k * (b[1][0] + b[0][0])) / 2,\n      y = +extent[0][1] + (h - k * (b[1][1] + b[0][1])) / 2;\n\n  if (clip != null) projection.clipExtent(clip);\n\n  return projection\n      .scale(k * 150)\n      .translate([x, y]);\n}\n\nexport function fitSize(projection, size, object) {\n  return fitExtent(projection, [[0, 0], size], object);\n}\n","import {cartesian} from \"../cartesian\";\nimport {abs, asin, atan2, cos, epsilon, radians, sqrt} from \"../math\";\nimport {transformer} from \"../transform\";\n\nvar maxDepth = 16, // maximum depth of subdivision\n    cosMinDistance = cos(30 * radians); // cos(minimum angular distance)\n\nexport default function(project, delta2) {\n  return +delta2 ? resample(project, delta2) : resampleNone(project);\n}\n\nfunction resampleNone(project) {\n  return transformer({\n    point: function(x, y) {\n      x = project(x, y);\n      this.stream.point(x[0], x[1]);\n    }\n  });\n}\n\nfunction resample(project, delta2) {\n\n  function resampleLineTo(x0, y0, lambda0, a0, b0, c0, x1, y1, lambda1, a1, b1, c1, depth, stream) {\n    var dx = x1 - x0,\n        dy = y1 - y0,\n        d2 = dx * dx + dy * dy;\n    if (d2 > 4 * delta2 && depth--) {\n      var a = a0 + a1,\n          b = b0 + b1,\n          c = c0 + c1,\n          m = sqrt(a * a + b * b + c * c),\n          phi2 = asin(c /= m),\n          lambda2 = abs(abs(c) - 1) < epsilon || abs(lambda0 - lambda1) < epsilon ? (lambda0 + lambda1) / 2 : atan2(b, a),\n          p = project(lambda2, phi2),\n          x2 = p[0],\n          y2 = p[1],\n          dx2 = x2 - x0,\n          dy2 = y2 - y0,\n          dz = dy * dx2 - dx * dy2;\n      if (dz * dz / d2 > delta2 // perpendicular projected distance\n          || abs((dx * dx2 + dy * dy2) / d2 - 0.5) > 0.3 // midpoint close to an end\n          || a0 * a1 + b0 * b1 + c0 * c1 < cosMinDistance) { // angular distance\n        resampleLineTo(x0, y0, lambda0, a0, b0, c0, x2, y2, lambda2, a /= m, b /= m, c, depth, stream);\n        stream.point(x2, y2);\n        resampleLineTo(x2, y2, lambda2, a, b, c, x1, y1, lambda1, a1, b1, c1, depth, stream);\n      }\n    }\n  }\n  return function(stream) {\n    var lambda00, x00, y00, a00, b00, c00, // first point\n        lambda0, x0, y0, a0, b0, c0; // previous point\n\n    var resampleStream = {\n      point: point,\n      lineStart: lineStart,\n      lineEnd: lineEnd,\n      polygonStart: function() { stream.polygonStart(); resampleStream.lineStart = ringStart; },\n      polygonEnd: function() { stream.polygonEnd(); resampleStream.lineStart = lineStart; }\n    };\n\n    function point(x, y) {\n      x = project(x, y);\n      stream.point(x[0], x[1]);\n    }\n\n    function lineStart() {\n      x0 = NaN;\n      resampleStream.point = linePoint;\n      stream.lineStart();\n    }\n\n    function linePoint(lambda, phi) {\n      var c = cartesian([lambda, phi]), p = project(lambda, phi);\n      resampleLineTo(x0, y0, lambda0, a0, b0, c0, x0 = p[0], y0 = p[1], lambda0 = lambda, a0 = c[0], b0 = c[1], c0 = c[2], maxDepth, stream);\n      stream.point(x0, y0);\n    }\n\n    function lineEnd() {\n      resampleStream.point = point;\n      stream.lineEnd();\n    }\n\n    function ringStart() {\n      lineStart();\n      resampleStream.point = ringPoint;\n      resampleStream.lineEnd = ringEnd;\n    }\n\n    function ringPoint(lambda, phi) {\n      linePoint(lambda00 = lambda, phi), x00 = x0, y00 = y0, a00 = a0, b00 = b0, c00 = c0;\n      resampleStream.point = linePoint;\n    }\n\n    function ringEnd() {\n      resampleLineTo(x0, y0, lambda0, a0, b0, c0, x00, y00, lambda00, a00, b00, c00, maxDepth, stream);\n      resampleStream.lineEnd = lineEnd;\n      lineEnd();\n    }\n\n    return resampleStream;\n  };\n}\n","import clipAntimeridian from \"../clip/antimeridian\";\nimport clipCircle from \"../clip/circle\";\nimport {clipExtent} from \"../clip/extent\";\nimport compose from \"../compose\";\nimport identity from \"../identity\";\nimport {degrees, radians, sqrt} from \"../math\";\nimport {rotateRadians} from \"../rotation\";\nimport {transformer} from \"../transform\";\nimport {fitExtent, fitSize} from \"./fit\";\nimport resample from \"./resample\";\n\nvar transformRadians = transformer({\n  point: function(x, y) {\n    this.stream.point(x * radians, y * radians);\n  }\n});\n\nexport default function projection(project) {\n  return projectionMutator(function() { return project; })();\n}\n\nexport function projectionMutator(projectAt) {\n  var project,\n      k = 150, // scale\n      x = 480, y = 250, // translate\n      dx, dy, lambda = 0, phi = 0, // center\n      deltaLambda = 0, deltaPhi = 0, deltaGamma = 0, rotate, projectRotate, // rotate\n      theta = null, preclip = clipAntimeridian, // clip angle\n      x0 = null, y0, x1, y1, postclip = identity, // clip extent\n      delta2 = 0.5, projectResample = resample(projectTransform, delta2), // precision\n      cache,\n      cacheStream;\n\n  function projection(point) {\n    point = projectRotate(point[0] * radians, point[1] * radians);\n    return [point[0] * k + dx, dy - point[1] * k];\n  }\n\n  function invert(point) {\n    point = projectRotate.invert((point[0] - dx) / k, (dy - point[1]) / k);\n    return point && [point[0] * degrees, point[1] * degrees];\n  }\n\n  function projectTransform(x, y) {\n    return x = project(x, y), [x[0] * k + dx, dy - x[1] * k];\n  }\n\n  projection.stream = function(stream) {\n    return cache && cacheStream === stream ? cache : cache = transformRadians(preclip(rotate, projectResample(postclip(cacheStream = stream))));\n  };\n\n  projection.clipAngle = function(_) {\n    return arguments.length ? (preclip = +_ ? clipCircle(theta = _ * radians, 6 * radians) : (theta = null, clipAntimeridian), reset()) : theta * degrees;\n  };\n\n  projection.clipExtent = function(_) {\n    return arguments.length ? (postclip = _ == null ? (x0 = y0 = x1 = y1 = null, identity) : clipExtent(x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1]), reset()) : x0 == null ? null : [[x0, y0], [x1, y1]];\n  };\n\n  projection.scale = function(_) {\n    return arguments.length ? (k = +_, recenter()) : k;\n  };\n\n  projection.translate = function(_) {\n    return arguments.length ? (x = +_[0], y = +_[1], recenter()) : [x, y];\n  };\n\n  projection.center = function(_) {\n    return arguments.length ? (lambda = _[0] % 360 * radians, phi = _[1] % 360 * radians, recenter()) : [lambda * degrees, phi * degrees];\n  };\n\n  projection.rotate = function(_) {\n    return arguments.length ? (deltaLambda = _[0] % 360 * radians, deltaPhi = _[1] % 360 * radians, deltaGamma = _.length > 2 ? _[2] % 360 * radians : 0, recenter()) : [deltaLambda * degrees, deltaPhi * degrees, deltaGamma * degrees];\n  };\n\n  projection.precision = function(_) {\n    return arguments.length ? (projectResample = resample(projectTransform, delta2 = _ * _), reset()) : sqrt(delta2);\n  };\n\n  projection.fitExtent = function(extent, object) {\n    return fitExtent(projection, extent, object);\n  };\n\n  projection.fitSize = function(size, object) {\n    return fitSize(projection, size, object);\n  };\n\n  function recenter() {\n    projectRotate = compose(rotate = rotateRadians(deltaLambda, deltaPhi, deltaGamma), project);\n    var center = project(lambda, phi);\n    dx = x - center[0] * k;\n    dy = y + center[1] * k;\n    return reset();\n  }\n\n  function reset() {\n    cache = cacheStream = null;\n    return projection;\n  }\n\n  return function() {\n    project = projectAt.apply(this, arguments);\n    projection.invert = project.invert && invert;\n    return recenter();\n  };\n}\n","import {cartesian, cartesianAddInPlace, cartesianCross, cartesianDot, cartesianScale, spherical} from \"../cartesian\";\nimport {circleStream} from \"../circle\";\nimport {abs, cos, epsilon, pi, sqrt} from \"../math\";\nimport pointEqual from \"../pointEqual\";\nimport clip from \"./index\";\n\nexport default function(radius, delta) {\n  var cr = cos(radius),\n      smallRadius = cr > 0,\n      notHemisphere = abs(cr) > epsilon; // TODO optimise for this common case\n\n  function interpolate(from, to, direction, stream) {\n    circleStream(stream, radius, delta, direction, from, to);\n  }\n\n  function visible(lambda, phi) {\n    return cos(lambda) * cos(phi) > cr;\n  }\n\n  // Takes a line and cuts into visible segments. Return values used for polygon\n  // clipping: 0 - there were intersections or the line was empty; 1 - no\n  // intersections 2 - there were intersections, and the first and last segments\n  // should be rejoined.\n  function clipLine(stream) {\n    var point0, // previous point\n        c0, // code for previous point\n        v0, // visibility of previous point\n        v00, // visibility of first point\n        clean; // no intersections\n    return {\n      lineStart: function() {\n        v00 = v0 = false;\n        clean = 1;\n      },\n      point: function(lambda, phi) {\n        var point1 = [lambda, phi],\n            point2,\n            v = visible(lambda, phi),\n            c = smallRadius\n              ? v ? 0 : code(lambda, phi)\n              : v ? code(lambda + (lambda < 0 ? pi : -pi), phi) : 0;\n        if (!point0 && (v00 = v0 = v)) stream.lineStart();\n        // Handle degeneracies.\n        // TODO ignore if not clipping polygons.\n        if (v !== v0) {\n          point2 = intersect(point0, point1);\n          if (!point2 || pointEqual(point0, point2) || pointEqual(point1, point2)) {\n            point1[0] += epsilon;\n            point1[1] += epsilon;\n            v = visible(point1[0], point1[1]);\n          }\n        }\n        if (v !== v0) {\n          clean = 0;\n          if (v) {\n            // outside going in\n            stream.lineStart();\n            point2 = intersect(point1, point0);\n            stream.point(point2[0], point2[1]);\n          } else {\n            // inside going out\n            point2 = intersect(point0, point1);\n            stream.point(point2[0], point2[1]);\n            stream.lineEnd();\n          }\n          point0 = point2;\n        } else if (notHemisphere && point0 && smallRadius ^ v) {\n          var t;\n          // If the codes for two points are different, or are both zero,\n          // and there this segment intersects with the small circle.\n          if (!(c & c0) && (t = intersect(point1, point0, true))) {\n            clean = 0;\n            if (smallRadius) {\n              stream.lineStart();\n              stream.point(t[0][0], t[0][1]);\n              stream.point(t[1][0], t[1][1]);\n              stream.lineEnd();\n            } else {\n              stream.point(t[1][0], t[1][1]);\n              stream.lineEnd();\n              stream.lineStart();\n              stream.point(t[0][0], t[0][1]);\n            }\n          }\n        }\n        if (v && (!point0 || !pointEqual(point0, point1))) {\n          stream.point(point1[0], point1[1]);\n        }\n        point0 = point1, v0 = v, c0 = c;\n      },\n      lineEnd: function() {\n        if (v0) stream.lineEnd();\n        point0 = null;\n      },\n      // Rejoin first and last segments if there were intersections and the first\n      // and last points were visible.\n      clean: function() {\n        return clean | ((v00 && v0) << 1);\n      }\n    };\n  }\n\n  // Intersects the great circle between a and b with the clip circle.\n  function intersect(a, b, two) {\n    var pa = cartesian(a),\n        pb = cartesian(b);\n\n    // We have two planes, n1.p = d1 and n2.p = d2.\n    // Find intersection line p(t) = c1 n1 + c2 n2 + t (n1 ⨯ n2).\n    var n1 = [1, 0, 0], // normal\n        n2 = cartesianCross(pa, pb),\n        n2n2 = cartesianDot(n2, n2),\n        n1n2 = n2[0], // cartesianDot(n1, n2),\n        determinant = n2n2 - n1n2 * n1n2;\n\n    // Two polar points.\n    if (!determinant) return !two && a;\n\n    var c1 =  cr * n2n2 / determinant,\n        c2 = -cr * n1n2 / determinant,\n        n1xn2 = cartesianCross(n1, n2),\n        A = cartesianScale(n1, c1),\n        B = cartesianScale(n2, c2);\n    cartesianAddInPlace(A, B);\n\n    // Solve |p(t)|^2 = 1.\n    var u = n1xn2,\n        w = cartesianDot(A, u),\n        uu = cartesianDot(u, u),\n        t2 = w * w - uu * (cartesianDot(A, A) - 1);\n\n    if (t2 < 0) return;\n\n    var t = sqrt(t2),\n        q = cartesianScale(u, (-w - t) / uu);\n    cartesianAddInPlace(q, A);\n    q = spherical(q);\n\n    if (!two) return q;\n\n    // Two intersection points.\n    var lambda0 = a[0],\n        lambda1 = b[0],\n        phi0 = a[1],\n        phi1 = b[1],\n        z;\n\n    if (lambda1 < lambda0) z = lambda0, lambda0 = lambda1, lambda1 = z;\n\n    var delta = lambda1 - lambda0,\n        polar = abs(delta - pi) < epsilon,\n        meridian = polar || delta < epsilon;\n\n    if (!polar && phi1 < phi0) z = phi0, phi0 = phi1, phi1 = z;\n\n    // Check that the first point is between a and b.\n    if (meridian\n        ? polar\n          ? phi0 + phi1 > 0 ^ q[1] < (abs(q[0] - lambda0) < epsilon ? phi0 : phi1)\n          : phi0 <= q[1] && q[1] <= phi1\n        : delta > pi ^ (lambda0 <= q[0] && q[0] <= lambda1)) {\n      var q1 = cartesianScale(u, (-w + t) / uu);\n      cartesianAddInPlace(q1, A);\n      return [q, spherical(q1)];\n    }\n  }\n\n  // Generates a 4-bit vector representing the location of a point relative to\n  // the small circle's bounding box.\n  function code(lambda, phi) {\n    var r = smallRadius ? radius : pi - radius,\n        code = 0;\n    if (lambda < -r) code |= 1; // left\n    else if (lambda > r) code |= 2; // right\n    if (phi < -r) code |= 4; // below\n    else if (phi > r) code |= 8; // above\n    return code;\n  }\n\n  return clip(visible, clipLine, interpolate, smallRadius ? [0, -radius] : [-pi, radius - pi]);\n}\n","import {degrees, pi, radians} from \"../math\";\nimport {projectionMutator} from \"./index\";\n\nexport function conicProjection(projectAt) {\n  var phi0 = 0,\n      phi1 = pi / 3,\n      m = projectionMutator(projectAt),\n      p = m(phi0, phi1);\n\n  p.parallels = function(_) {\n    return arguments.length ? m(phi0 = _[0] * radians, phi1 = _[1] * radians) : [phi0 * degrees, phi1 * degrees];\n  };\n\n  return p;\n}\n","import {abs, asin, atan2, cos, epsilon, sign, sin, sqrt} from \"../math\";\nimport {conicProjection} from \"./conic\";\nimport {cylindricalEqualAreaRaw} from \"./cylindricalEqualArea\";\n\nexport function conicEqualAreaRaw(y0, y1) {\n  var sy0 = sin(y0), n = (sy0 + sin(y1)) / 2;\n\n  // Are the parallels symmetrical around the Equator?\n  if (abs(n) < epsilon) return cylindricalEqualAreaRaw(y0);\n\n  var c = 1 + sy0 * (2 * n - sy0), r0 = sqrt(c) / n;\n\n  function project(x, y) {\n    var r = sqrt(c - 2 * n * sin(y)) / n;\n    return [r * sin(x *= n), r0 - r * cos(x)];\n  }\n\n  project.invert = function(x, y) {\n    var r0y = r0 - y;\n    return [atan2(x, abs(r0y)) / n * sign(r0y), asin((c - (x * x + r0y * r0y) * n * n) / (2 * n))];\n  };\n\n  return project;\n}\n\nexport default function() {\n  return conicProjection(conicEqualAreaRaw)\n      .scale(155.424)\n      .center([0, 33.6442]);\n}\n","import {asin, cos, sin} from \"../math\";\n\nexport function cylindricalEqualAreaRaw(phi0) {\n  var cosPhi0 = cos(phi0);\n\n  function forward(lambda, phi) {\n    return [lambda * cosPhi0, sin(phi) / cosPhi0];\n  }\n\n  forward.invert = function(x, y) {\n    return [x / cosPhi0, asin(y * cosPhi0)];\n  };\n\n  return forward;\n}\n","import conicEqualArea from \"./conicEqualArea\";\n\nexport default function() {\n  return conicEqualArea()\n      .parallels([29.5, 45.5])\n      .scale(1070)\n      .translate([480, 250])\n      .rotate([96, 0])\n      .center([-0.6, 38.7]);\n}\n","import {epsilon} from \"../math\";\nimport albers from \"./albers\";\nimport conicEqualArea from \"./conicEqualArea\";\nimport {fitExtent, fitSize} from \"./fit\";\n\n// The projections must have mutually exclusive clip regions on the sphere,\n// as this will avoid emitting interleaving lines and polygons.\nfunction multiplex(streams) {\n  var n = streams.length;\n  return {\n    point: function(x, y) { var i = -1; while (++i < n) streams[i].point(x, y); },\n    sphere: function() { var i = -1; while (++i < n) streams[i].sphere(); },\n    lineStart: function() { var i = -1; while (++i < n) streams[i].lineStart(); },\n    lineEnd: function() { var i = -1; while (++i < n) streams[i].lineEnd(); },\n    polygonStart: function() { var i = -1; while (++i < n) streams[i].polygonStart(); },\n    polygonEnd: function() { var i = -1; while (++i < n) streams[i].polygonEnd(); }\n  };\n}\n\n// A composite projection for the United States, configured by default for\n// 960×500. The projection also works quite well at 960×600 if you change the\n// scale to 1285 and adjust the translate accordingly. The set of standard\n// parallels for each region comes from USGS, which is published here:\n// http://egsc.usgs.gov/isb/pubs/MapProjections/projections.html#albers\nexport default function() {\n  var cache,\n      cacheStream,\n      lower48 = albers(), lower48Point,\n      alaska = conicEqualArea().rotate([154, 0]).center([-2, 58.5]).parallels([55, 65]), alaskaPoint, // EPSG:3338\n      hawaii = conicEqualArea().rotate([157, 0]).center([-3, 19.9]).parallels([8, 18]), hawaiiPoint, // ESRI:102007\n      point, pointStream = {point: function(x, y) { point = [x, y]; }};\n\n  function albersUsa(coordinates) {\n    var x = coordinates[0], y = coordinates[1];\n    return point = null,\n        (lower48Point.point(x, y), point)\n        || (alaskaPoint.point(x, y), point)\n        || (hawaiiPoint.point(x, y), point);\n  }\n\n  albersUsa.invert = function(coordinates) {\n    var k = lower48.scale(),\n        t = lower48.translate(),\n        x = (coordinates[0] - t[0]) / k,\n        y = (coordinates[1] - t[1]) / k;\n    return (y >= 0.120 && y < 0.234 && x >= -0.425 && x < -0.214 ? alaska\n        : y >= 0.166 && y < 0.234 && x >= -0.214 && x < -0.115 ? hawaii\n        : lower48).invert(coordinates);\n  };\n\n  albersUsa.stream = function(stream) {\n    return cache && cacheStream === stream ? cache : cache = multiplex([lower48.stream(cacheStream = stream), alaska.stream(stream), hawaii.stream(stream)]);\n  };\n\n  albersUsa.precision = function(_) {\n    if (!arguments.length) return lower48.precision();\n    lower48.precision(_), alaska.precision(_), hawaii.precision(_);\n    return reset();\n  };\n\n  albersUsa.scale = function(_) {\n    if (!arguments.length) return lower48.scale();\n    lower48.scale(_), alaska.scale(_ * 0.35), hawaii.scale(_);\n    return albersUsa.translate(lower48.translate());\n  };\n\n  albersUsa.translate = function(_) {\n    if (!arguments.length) return lower48.translate();\n    var k = lower48.scale(), x = +_[0], y = +_[1];\n\n    lower48Point = lower48\n        .translate(_)\n        .clipExtent([[x - 0.455 * k, y - 0.238 * k], [x + 0.455 * k, y + 0.238 * k]])\n        .stream(pointStream);\n\n    alaskaPoint = alaska\n        .translate([x - 0.307 * k, y + 0.201 * k])\n        .clipExtent([[x - 0.425 * k + epsilon, y + 0.120 * k + epsilon], [x - 0.214 * k - epsilon, y + 0.234 * k - epsilon]])\n        .stream(pointStream);\n\n    hawaiiPoint = hawaii\n        .translate([x - 0.205 * k, y + 0.212 * k])\n        .clipExtent([[x - 0.214 * k + epsilon, y + 0.166 * k + epsilon], [x - 0.115 * k - epsilon, y + 0.234 * k - epsilon]])\n        .stream(pointStream);\n\n    return reset();\n  };\n\n  albersUsa.fitExtent = function(extent, object) {\n    return fitExtent(albersUsa, extent, object);\n  };\n\n  albersUsa.fitSize = function(size, object) {\n    return fitSize(albersUsa, size, object);\n  };\n\n  function reset() {\n    cache = cacheStream = null;\n    return albersUsa;\n  }\n\n  return albersUsa.scale(1070);\n}\n","import {asin, atan2, cos, sin, sqrt} from \"../math\";\n\nexport function azimuthalRaw(scale) {\n  return function(x, y) {\n    var cx = cos(x),\n        cy = cos(y),\n        k = scale(cx * cy);\n    return [\n      k * cy * sin(x),\n      k * sin(y)\n    ];\n  }\n}\n\nexport function azimuthalInvert(angle) {\n  return function(x, y) {\n    var z = sqrt(x * x + y * y),\n        c = angle(z),\n        sc = sin(c),\n        cc = cos(c);\n    return [\n      atan2(x * sc, z * cc),\n      asin(z && y * sc / z)\n    ];\n  }\n}\n","import {asin, sqrt} from \"../math\";\nimport {azimuthalRaw, azimuthalInvert} from \"./azimuthal\";\nimport projection from \"./index\";\n\nexport var azimuthalEqualAreaRaw = azimuthalRaw(function(cxcy) {\n  return sqrt(2 / (1 + cxcy));\n});\n\nazimuthalEqualAreaRaw.invert = azimuthalInvert(function(z) {\n  return 2 * asin(z / 2);\n});\n\nexport default function() {\n  return projection(azimuthalEqualAreaRaw)\n      .scale(124.75)\n      .clipAngle(180 - 1e-3);\n}\n","import {acos, sin} from \"../math\";\nimport {azimuthalRaw, azimuthalInvert} from \"./azimuthal\";\nimport projection from \"./index\";\n\nexport var azimuthalEquidistantRaw = azimuthalRaw(function(c) {\n  return (c = acos(c)) && c / sin(c);\n});\n\nazimuthalEquidistantRaw.invert = azimuthalInvert(function(z) {\n  return z;\n});\n\nexport default function() {\n  return projection(azimuthalEquidistantRaw)\n      .scale(79.4188)\n      .clipAngle(180 - 1e-3);\n}\n","import {atan, exp, halfPi, log, pi, tan, tau} from \"../math\";\nimport rotation from \"../rotation\";\nimport projection from \"./index\";\n\nexport function mercatorRaw(lambda, phi) {\n  return [lambda, log(tan((halfPi + phi) / 2))];\n}\n\nmercatorRaw.invert = function(x, y) {\n  return [x, 2 * atan(exp(y)) - halfPi];\n};\n\nexport default function() {\n  return mercatorProjection(mercatorRaw)\n      .scale(961 / tau);\n}\n\nexport function mercatorProjection(project) {\n  var m = projection(project),\n      center = m.center,\n      scale = m.scale,\n      translate = m.translate,\n      clipExtent = m.clipExtent,\n      x0 = null, y0, x1, y1; // clip extent\n\n  m.scale = function(_) {\n    return arguments.length ? (scale(_), reclip()) : scale();\n  };\n\n  m.translate = function(_) {\n    return arguments.length ? (translate(_), reclip()) : translate();\n  };\n\n  m.center = function(_) {\n    return arguments.length ? (center(_), reclip()) : center();\n  };\n\n  m.clipExtent = function(_) {\n    return arguments.length ? ((_ == null ? x0 = y0 = x1 = y1 = null : (x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1])), reclip()) : x0 == null ? null : [[x0, y0], [x1, y1]];\n  };\n\n  function reclip() {\n    var k = pi * scale(),\n        t = m(rotation(m.rotate()).invert([0, 0]));\n    return clipExtent(x0 == null\n        ? [[t[0] - k, t[1] - k], [t[0] + k, t[1] + k]] : project === mercatorRaw\n        ? [[Math.max(t[0] - k, x0), y0], [Math.min(t[0] + k, x1), y1]]\n        : [[x0, Math.max(t[1] - k, y0)], [x1, Math.min(t[1] + k, y1)]]);\n  }\n\n  return reclip();\n}\n","import {abs, atan, atan2, cos, epsilon, halfPi, log, pow, sign, sin, sqrt, tan} from \"../math\";\nimport {conicProjection} from \"./conic\";\nimport {mercatorRaw} from \"./mercator\";\n\nfunction tany(y) {\n  return tan((halfPi + y) / 2);\n}\n\nexport function conicConformalRaw(y0, y1) {\n  var cy0 = cos(y0),\n      n = y0 === y1 ? sin(y0) : log(cy0 / cos(y1)) / log(tany(y1) / tany(y0)),\n      f = cy0 * pow(tany(y0), n) / n;\n\n  if (!n) return mercatorRaw;\n\n  function project(x, y) {\n    if (f > 0) { if (y < -halfPi + epsilon) y = -halfPi + epsilon; }\n    else { if (y > halfPi - epsilon) y = halfPi - epsilon; }\n    var r = f / pow(tany(y), n);\n    return [r * sin(n * x), f - r * cos(n * x)];\n  }\n\n  project.invert = function(x, y) {\n    var fy = f - y, r = sign(n) * sqrt(x * x + fy * fy);\n    return [atan2(x, abs(fy)) / n * sign(fy), 2 * atan(pow(f / r, 1 / n)) - halfPi];\n  };\n\n  return project;\n}\n\nexport default function() {\n  return conicProjection(conicConformalRaw)\n      .scale(109.5)\n      .parallels([30, 30]);\n}\n","import projection from \"./index\";\n\nexport function equirectangularRaw(lambda, phi) {\n  return [lambda, phi];\n}\n\nequirectangularRaw.invert = equirectangularRaw;\n\nexport default function() {\n  return projection(equirectangularRaw)\n      .scale(152.63);\n}\n","import {abs, atan2, cos, epsilon, sign, sin, sqrt} from \"../math\";\nimport {conicProjection} from \"./conic\";\nimport {equirectangularRaw} from \"./equirectangular\";\n\nexport function conicEquidistantRaw(y0, y1) {\n  var cy0 = cos(y0),\n      n = y0 === y1 ? sin(y0) : (cy0 - cos(y1)) / (y1 - y0),\n      g = cy0 / n + y0;\n\n  if (abs(n) < epsilon) return equirectangularRaw;\n\n  function project(x, y) {\n    var gy = g - y, nx = n * x;\n    return [gy * sin(nx), g - gy * cos(nx)];\n  }\n\n  project.invert = function(x, y) {\n    var gy = g - y;\n    return [atan2(x, abs(gy)) / n * sign(gy), g - sign(n) * sqrt(x * x + gy * gy)];\n  };\n\n  return project;\n}\n\nexport default function() {\n  return conicProjection(conicEquidistantRaw)\n      .scale(131.154)\n      .center([0, 13.9389]);\n}\n","import {atan, cos, sin} from \"../math\";\nimport {azimuthalInvert} from \"./azimuthal\";\nimport projection from \"./index\";\n\nexport function gnomonicRaw(x, y) {\n  var cy = cos(y), k = cos(x) * cy;\n  return [cy * sin(x) / k, sin(y) / k];\n}\n\ngnomonicRaw.invert = azimuthalInvert(atan);\n\nexport default function() {\n  return projection(gnomonicRaw)\n      .scale(144.049)\n      .clipAngle(60);\n}\n","import {clipExtent} from \"../clip/extent\";\nimport identity from \"../identity\";\nimport {transformer} from \"../transform\";\nimport {fitExtent, fitSize} from \"./fit\";\n\nfunction scaleTranslate(kx, ky, tx, ty) {\n  return kx === 1 && ky === 1 && tx === 0 && ty === 0 ? identity : transformer({\n    point: function(x, y) {\n      this.stream.point(x * kx + tx, y * ky + ty);\n    }\n  });\n}\n\nexport default function() {\n  var k = 1, tx = 0, ty = 0, sx = 1, sy = 1, transform = identity, // scale, translate and reflect\n      x0 = null, y0, x1, y1, clip = identity, // clip extent\n      cache,\n      cacheStream,\n      projection;\n\n  function reset() {\n    cache = cacheStream = null;\n    return projection;\n  }\n\n  return projection = {\n    stream: function(stream) {\n      return cache && cacheStream === stream ? cache : cache = transform(clip(cacheStream = stream));\n    },\n    clipExtent: function(_) {\n      return arguments.length ? (clip = _ == null ? (x0 = y0 = x1 = y1 = null, identity) : clipExtent(x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1]), reset()) : x0 == null ? null : [[x0, y0], [x1, y1]];\n    },\n    scale: function(_) {\n      return arguments.length ? (transform = scaleTranslate((k = +_) * sx, k * sy, tx, ty), reset()) : k;\n    },\n    translate: function(_) {\n      return arguments.length ? (transform = scaleTranslate(k * sx, k * sy, tx = +_[0], ty = +_[1]), reset()) : [tx, ty];\n    },\n    reflectX: function(_) {\n      return arguments.length ? (transform = scaleTranslate(k * (sx = _ ? -1 : 1), k * sy, tx, ty), reset()) : sx < 0;\n    },\n    reflectY: function(_) {\n      return arguments.length ? (transform = scaleTranslate(k * sx, k * (sy = _ ? -1 : 1), tx, ty), reset()) : sy < 0;\n    },\n    fitExtent: function(extent, object) {\n      return fitExtent(projection, extent, object);\n    },\n    fitSize: function(size, object) {\n      return fitSize(projection, size, object);\n    }\n  };\n}\n","import projection from \"./index\";\nimport {abs, epsilon} from \"../math\";\n\nexport function naturalEarth1Raw(lambda, phi) {\n  var phi2 = phi * phi, phi4 = phi2 * phi2;\n  return [\n    lambda * (0.8707 - 0.131979 * phi2 + phi4 * (-0.013791 + phi4 * (0.003971 * phi2 - 0.001529 * phi4))),\n    phi * (1.007226 + phi2 * (0.015085 + phi4 * (-0.044475 + 0.028874 * phi2 - 0.005916 * phi4)))\n  ];\n}\n\nnaturalEarth1Raw.invert = function(x, y) {\n  var phi = y, i = 25, delta;\n  do {\n    var phi2 = phi * phi, phi4 = phi2 * phi2;\n    phi -= delta = (phi * (1.007226 + phi2 * (0.015085 + phi4 * (-0.044475 + 0.028874 * phi2 - 0.005916 * phi4))) - y) /\n        (1.007226 + phi2 * (0.015085 * 3 + phi4 * (-0.044475 * 7 + 0.028874 * 9 * phi2 - 0.005916 * 11 * phi4)));\n  } while (abs(delta) > epsilon && --i > 0);\n  return [\n    x / (0.8707 + (phi2 = phi * phi) * (-0.131979 + phi2 * (-0.013791 + phi2 * phi2 * phi2 * (0.003971 - 0.001529 * phi2)))),\n    phi\n  ];\n};\n\nexport default function() {\n  return projection(naturalEarth1Raw)\n      .scale(175.295);\n}\n","import {asin, cos, epsilon, sin} from \"../math\";\nimport {azimuthalInvert} from \"./azimuthal\";\nimport projection from \"./index\";\n\nexport function orthographicRaw(x, y) {\n  return [cos(y) * sin(x), sin(y)];\n}\n\northographicRaw.invert = azimuthalInvert(asin);\n\nexport default function() {\n  return projection(orthographicRaw)\n      .scale(249.5)\n      .clipAngle(90 + epsilon);\n}\n","import {atan, cos, sin} from \"../math\";\nimport {azimuthalInvert} from \"./azimuthal\";\nimport projection from \"./index\";\n\nexport function stereographicRaw(x, y) {\n  var cy = cos(y), k = 1 + cos(x) * cy;\n  return [cy * sin(x) / k, sin(y) / k];\n}\n\nstereographicRaw.invert = azimuthalInvert(function(z) {\n  return 2 * atan(z);\n});\n\nexport default function() {\n  return projection(stereographicRaw)\n      .scale(250)\n      .clipAngle(142);\n}\n","import {atan, exp, halfPi, log, tan} from \"../math\";\nimport {mercatorProjection} from \"./mercator\";\n\nexport function transverseMercatorRaw(lambda, phi) {\n  return [log(tan((halfPi + phi) / 2)), -lambda];\n}\n\ntransverseMercatorRaw.invert = function(x, y) {\n  return [-y, 2 * atan(exp(x)) - halfPi];\n};\n\nexport default function() {\n  var m = mercatorProjection(transverseMercatorRaw),\n      center = m.center,\n      rotate = m.rotate;\n\n  m.center = function(_) {\n    return arguments.length ? center([-_[1], _[0]]) : (_ = center(), [_[1], -_[0]]);\n  };\n\n  m.rotate = function(_) {\n    return arguments.length ? rotate([_[0], _[1], _.length > 2 ? _[2] + 90 : 90]) : (_ = rotate(), [_[0], _[1], _[2] - 90]);\n  };\n\n  return rotate([0, 0, 90])\n      .scale(159.155);\n}\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = addLeadingZeros;\nfunction addLeadingZeros(number, targetLength) {\n  var sign = number < 0 ? '-' : '';\n  var output = Math.abs(number).toString();\n  while (output.length < targetLength) {\n    output = '0' + output;\n  }\n  return sign + output;\n}\nmodule.exports = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = assign;\nfunction assign(target, object) {\n  if (target == null) {\n    throw new TypeError('assign requires that input parameter not be null or undefined');\n  }\n  for (var property in object) {\n    if (Object.prototype.hasOwnProperty.call(object, property)) {\n      ;\n      target[property] = object[property];\n    }\n  }\n  return target;\n}\nmodule.exports = exports.default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = cloneObject;\nvar _index = _interopRequireDefault(require(\"../assign/index.js\"));\nfunction cloneObject(object) {\n  return (0, _index.default)({}, object);\n}\nmodule.exports = exports.default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\nvar _index = _interopRequireDefault(require(\"../../locale/en-US/index.js\"));\nvar _default = _index.default;\nexports.default = _default;\nmodule.exports = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.getDefaultOptions = getDefaultOptions;\nexports.setDefaultOptions = setDefaultOptions;\nvar defaultOptions = {};\nfunction getDefaultOptions() {\n  return defaultOptions;\n}\nfunction setDefaultOptions(newOptions) {\n  defaultOptions = newOptions;\n}","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\nvar _index = _interopRequireDefault(require(\"../../../_lib/getUTCDayOfYear/index.js\"));\nvar _index2 = _interopRequireDefault(require(\"../../../_lib/getUTCISOWeek/index.js\"));\nvar _index3 = _interopRequireDefault(require(\"../../../_lib/getUTCISOWeekYear/index.js\"));\nvar _index4 = _interopRequireDefault(require(\"../../../_lib/getUTCWeek/index.js\"));\nvar _index5 = _interopRequireDefault(require(\"../../../_lib/getUTCWeekYear/index.js\"));\nvar _index6 = _interopRequireDefault(require(\"../../addLeadingZeros/index.js\"));\nvar _index7 = _interopRequireDefault(require(\"../lightFormatters/index.js\"));\nvar dayPeriodEnum = {\n  am: 'am',\n  pm: 'pm',\n  midnight: 'midnight',\n  noon: 'noon',\n  morning: 'morning',\n  afternoon: 'afternoon',\n  evening: 'evening',\n  night: 'night'\n};\n/*\n * |     | Unit                           |     | Unit                           |\n * |-----|--------------------------------|-----|--------------------------------|\n * |  a  | AM, PM                         |  A* | Milliseconds in day            |\n * |  b  | AM, PM, noon, midnight         |  B  | Flexible day period            |\n * |  c  | Stand-alone local day of week  |  C* | Localized hour w/ day period   |\n * |  d  | Day of month                   |  D  | Day of year                    |\n * |  e  | Local day of week              |  E  | Day of week                    |\n * |  f  |                                |  F* | Day of week in month           |\n * |  g* | Modified Julian day            |  G  | Era                            |\n * |  h  | Hour [1-12]                    |  H  | Hour [0-23]                    |\n * |  i! | ISO day of week                |  I! | ISO week of year               |\n * |  j* | Localized hour w/ day period   |  J* | Localized hour w/o day period  |\n * |  k  | Hour [1-24]                    |  K  | Hour [0-11]                    |\n * |  l* | (deprecated)                   |  L  | Stand-alone month              |\n * |  m  | Minute                         |  M  | Month                          |\n * |  n  |                                |  N  |                                |\n * |  o! | Ordinal number modifier        |  O  | Timezone (GMT)                 |\n * |  p! | Long localized time            |  P! | Long localized date            |\n * |  q  | Stand-alone quarter            |  Q  | Quarter                        |\n * |  r* | Related Gregorian year         |  R! | ISO week-numbering year        |\n * |  s  | Second                         |  S  | Fraction of second             |\n * |  t! | Seconds timestamp              |  T! | Milliseconds timestamp         |\n * |  u  | Extended year                  |  U* | Cyclic year                    |\n * |  v* | Timezone (generic non-locat.)  |  V* | Timezone (location)            |\n * |  w  | Local week of year             |  W* | Week of month                  |\n * |  x  | Timezone (ISO-8601 w/o Z)      |  X  | Timezone (ISO-8601)            |\n * |  y  | Year (abs)                     |  Y  | Local week-numbering year      |\n * |  z  | Timezone (specific non-locat.) |  Z* | Timezone (aliases)             |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n *\n * Letters marked by ! are non-standard, but implemented by date-fns:\n * - `o` modifies the previous token to turn it into an ordinal (see `format` docs)\n * - `i` is ISO day of week. For `i` and `ii` is returns numeric ISO week days,\n *   i.e. 7 for Sunday, 1 for Monday, etc.\n * - `I` is ISO week of year, as opposed to `w` which is local week of year.\n * - `R` is ISO week-numbering year, as opposed to `Y` which is local week-numbering year.\n *   `R` is supposed to be used in conjunction with `I` and `i`\n *   for universal ISO week-numbering date, whereas\n *   `Y` is supposed to be used in conjunction with `w` and `e`\n *   for week-numbering date specific to the locale.\n * - `P` is long localized date format\n * - `p` is long localized time format\n */\n\nvar formatters = {\n  // Era\n  G: function G(date, token, localize) {\n    var era = date.getUTCFullYear() > 0 ? 1 : 0;\n    switch (token) {\n      // AD, BC\n      case 'G':\n      case 'GG':\n      case 'GGG':\n        return localize.era(era, {\n          width: 'abbreviated'\n        });\n      // A, B\n      case 'GGGGG':\n        return localize.era(era, {\n          width: 'narrow'\n        });\n      // Anno Domini, Before Christ\n      case 'GGGG':\n      default:\n        return localize.era(era, {\n          width: 'wide'\n        });\n    }\n  },\n  // Year\n  y: function y(date, token, localize) {\n    // Ordinal number\n    if (token === 'yo') {\n      var signedYear = date.getUTCFullYear();\n      // Returns 1 for 1 BC (which is year 0 in JavaScript)\n      var year = signedYear > 0 ? signedYear : 1 - signedYear;\n      return localize.ordinalNumber(year, {\n        unit: 'year'\n      });\n    }\n    return _index7.default.y(date, token);\n  },\n  // Local week-numbering year\n  Y: function Y(date, token, localize, options) {\n    var signedWeekYear = (0, _index5.default)(date, options);\n    // Returns 1 for 1 BC (which is year 0 in JavaScript)\n    var weekYear = signedWeekYear > 0 ? signedWeekYear : 1 - signedWeekYear;\n\n    // Two digit year\n    if (token === 'YY') {\n      var twoDigitYear = weekYear % 100;\n      return (0, _index6.default)(twoDigitYear, 2);\n    }\n\n    // Ordinal number\n    if (token === 'Yo') {\n      return localize.ordinalNumber(weekYear, {\n        unit: 'year'\n      });\n    }\n\n    // Padding\n    return (0, _index6.default)(weekYear, token.length);\n  },\n  // ISO week-numbering year\n  R: function R(date, token) {\n    var isoWeekYear = (0, _index3.default)(date);\n\n    // Padding\n    return (0, _index6.default)(isoWeekYear, token.length);\n  },\n  // Extended year. This is a single number designating the year of this calendar system.\n  // The main difference between `y` and `u` localizers are B.C. years:\n  // | Year | `y` | `u` |\n  // |------|-----|-----|\n  // | AC 1 |   1 |   1 |\n  // | BC 1 |   1 |   0 |\n  // | BC 2 |   2 |  -1 |\n  // Also `yy` always returns the last two digits of a year,\n  // while `uu` pads single digit years to 2 characters and returns other years unchanged.\n  u: function u(date, token) {\n    var year = date.getUTCFullYear();\n    return (0, _index6.default)(year, token.length);\n  },\n  // Quarter\n  Q: function Q(date, token, localize) {\n    var quarter = Math.ceil((date.getUTCMonth() + 1) / 3);\n    switch (token) {\n      // 1, 2, 3, 4\n      case 'Q':\n        return String(quarter);\n      // 01, 02, 03, 04\n      case 'QQ':\n        return (0, _index6.default)(quarter, 2);\n      // 1st, 2nd, 3rd, 4th\n      case 'Qo':\n        return localize.ordinalNumber(quarter, {\n          unit: 'quarter'\n        });\n      // Q1, Q2, Q3, Q4\n      case 'QQQ':\n        return localize.quarter(quarter, {\n          width: 'abbreviated',\n          context: 'formatting'\n        });\n      // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n      case 'QQQQQ':\n        return localize.quarter(quarter, {\n          width: 'narrow',\n          context: 'formatting'\n        });\n      // 1st quarter, 2nd quarter, ...\n      case 'QQQQ':\n      default:\n        return localize.quarter(quarter, {\n          width: 'wide',\n          context: 'formatting'\n        });\n    }\n  },\n  // Stand-alone quarter\n  q: function q(date, token, localize) {\n    var quarter = Math.ceil((date.getUTCMonth() + 1) / 3);\n    switch (token) {\n      // 1, 2, 3, 4\n      case 'q':\n        return String(quarter);\n      // 01, 02, 03, 04\n      case 'qq':\n        return (0, _index6.default)(quarter, 2);\n      // 1st, 2nd, 3rd, 4th\n      case 'qo':\n        return localize.ordinalNumber(quarter, {\n          unit: 'quarter'\n        });\n      // Q1, Q2, Q3, Q4\n      case 'qqq':\n        return localize.quarter(quarter, {\n          width: 'abbreviated',\n          context: 'standalone'\n        });\n      // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n      case 'qqqqq':\n        return localize.quarter(quarter, {\n          width: 'narrow',\n          context: 'standalone'\n        });\n      // 1st quarter, 2nd quarter, ...\n      case 'qqqq':\n      default:\n        return localize.quarter(quarter, {\n          width: 'wide',\n          context: 'standalone'\n        });\n    }\n  },\n  // Month\n  M: function M(date, token, localize) {\n    var month = date.getUTCMonth();\n    switch (token) {\n      case 'M':\n      case 'MM':\n        return _index7.default.M(date, token);\n      // 1st, 2nd, ..., 12th\n      case 'Mo':\n        return localize.ordinalNumber(month + 1, {\n          unit: 'month'\n        });\n      // Jan, Feb, ..., Dec\n      case 'MMM':\n        return localize.month(month, {\n          width: 'abbreviated',\n          context: 'formatting'\n        });\n      // J, F, ..., D\n      case 'MMMMM':\n        return localize.month(month, {\n          width: 'narrow',\n          context: 'formatting'\n        });\n      // January, February, ..., December\n      case 'MMMM':\n      default:\n        return localize.month(month, {\n          width: 'wide',\n          context: 'formatting'\n        });\n    }\n  },\n  // Stand-alone month\n  L: function L(date, token, localize) {\n    var month = date.getUTCMonth();\n    switch (token) {\n      // 1, 2, ..., 12\n      case 'L':\n        return String(month + 1);\n      // 01, 02, ..., 12\n      case 'LL':\n        return (0, _index6.default)(month + 1, 2);\n      // 1st, 2nd, ..., 12th\n      case 'Lo':\n        return localize.ordinalNumber(month + 1, {\n          unit: 'month'\n        });\n      // Jan, Feb, ..., Dec\n      case 'LLL':\n        return localize.month(month, {\n          width: 'abbreviated',\n          context: 'standalone'\n        });\n      // J, F, ..., D\n      case 'LLLLL':\n        return localize.month(month, {\n          width: 'narrow',\n          context: 'standalone'\n        });\n      // January, February, ..., December\n      case 'LLLL':\n      default:\n        return localize.month(month, {\n          width: 'wide',\n          context: 'standalone'\n        });\n    }\n  },\n  // Local week of year\n  w: function w(date, token, localize, options) {\n    var week = (0, _index4.default)(date, options);\n    if (token === 'wo') {\n      return localize.ordinalNumber(week, {\n        unit: 'week'\n      });\n    }\n    return (0, _index6.default)(week, token.length);\n  },\n  // ISO week of year\n  I: function I(date, token, localize) {\n    var isoWeek = (0, _index2.default)(date);\n    if (token === 'Io') {\n      return localize.ordinalNumber(isoWeek, {\n        unit: 'week'\n      });\n    }\n    return (0, _index6.default)(isoWeek, token.length);\n  },\n  // Day of the month\n  d: function d(date, token, localize) {\n    if (token === 'do') {\n      return localize.ordinalNumber(date.getUTCDate(), {\n        unit: 'date'\n      });\n    }\n    return _index7.default.d(date, token);\n  },\n  // Day of year\n  D: function D(date, token, localize) {\n    var dayOfYear = (0, _index.default)(date);\n    if (token === 'Do') {\n      return localize.ordinalNumber(dayOfYear, {\n        unit: 'dayOfYear'\n      });\n    }\n    return (0, _index6.default)(dayOfYear, token.length);\n  },\n  // Day of week\n  E: function E(date, token, localize) {\n    var dayOfWeek = date.getUTCDay();\n    switch (token) {\n      // Tue\n      case 'E':\n      case 'EE':\n      case 'EEE':\n        return localize.day(dayOfWeek, {\n          width: 'abbreviated',\n          context: 'formatting'\n        });\n      // T\n      case 'EEEEE':\n        return localize.day(dayOfWeek, {\n          width: 'narrow',\n          context: 'formatting'\n        });\n      // Tu\n      case 'EEEEEE':\n        return localize.day(dayOfWeek, {\n          width: 'short',\n          context: 'formatting'\n        });\n      // Tuesday\n      case 'EEEE':\n      default:\n        return localize.day(dayOfWeek, {\n          width: 'wide',\n          context: 'formatting'\n        });\n    }\n  },\n  // Local day of week\n  e: function e(date, token, localize, options) {\n    var dayOfWeek = date.getUTCDay();\n    var localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7;\n    switch (token) {\n      // Numerical value (Nth day of week with current locale or weekStartsOn)\n      case 'e':\n        return String(localDayOfWeek);\n      // Padded numerical value\n      case 'ee':\n        return (0, _index6.default)(localDayOfWeek, 2);\n      // 1st, 2nd, ..., 7th\n      case 'eo':\n        return localize.ordinalNumber(localDayOfWeek, {\n          unit: 'day'\n        });\n      case 'eee':\n        return localize.day(dayOfWeek, {\n          width: 'abbreviated',\n          context: 'formatting'\n        });\n      // T\n      case 'eeeee':\n        return localize.day(dayOfWeek, {\n          width: 'narrow',\n          context: 'formatting'\n        });\n      // Tu\n      case 'eeeeee':\n        return localize.day(dayOfWeek, {\n          width: 'short',\n          context: 'formatting'\n        });\n      // Tuesday\n      case 'eeee':\n      default:\n        return localize.day(dayOfWeek, {\n          width: 'wide',\n          context: 'formatting'\n        });\n    }\n  },\n  // Stand-alone local day of week\n  c: function c(date, token, localize, options) {\n    var dayOfWeek = date.getUTCDay();\n    var localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7;\n    switch (token) {\n      // Numerical value (same as in `e`)\n      case 'c':\n        return String(localDayOfWeek);\n      // Padded numerical value\n      case 'cc':\n        return (0, _index6.default)(localDayOfWeek, token.length);\n      // 1st, 2nd, ..., 7th\n      case 'co':\n        return localize.ordinalNumber(localDayOfWeek, {\n          unit: 'day'\n        });\n      case 'ccc':\n        return localize.day(dayOfWeek, {\n          width: 'abbreviated',\n          context: 'standalone'\n        });\n      // T\n      case 'ccccc':\n        return localize.day(dayOfWeek, {\n          width: 'narrow',\n          context: 'standalone'\n        });\n      // Tu\n      case 'cccccc':\n        return localize.day(dayOfWeek, {\n          width: 'short',\n          context: 'standalone'\n        });\n      // Tuesday\n      case 'cccc':\n      default:\n        return localize.day(dayOfWeek, {\n          width: 'wide',\n          context: 'standalone'\n        });\n    }\n  },\n  // ISO day of week\n  i: function i(date, token, localize) {\n    var dayOfWeek = date.getUTCDay();\n    var isoDayOfWeek = dayOfWeek === 0 ? 7 : dayOfWeek;\n    switch (token) {\n      // 2\n      case 'i':\n        return String(isoDayOfWeek);\n      // 02\n      case 'ii':\n        return (0, _index6.default)(isoDayOfWeek, token.length);\n      // 2nd\n      case 'io':\n        return localize.ordinalNumber(isoDayOfWeek, {\n          unit: 'day'\n        });\n      // Tue\n      case 'iii':\n        return localize.day(dayOfWeek, {\n          width: 'abbreviated',\n          context: 'formatting'\n        });\n      // T\n      case 'iiiii':\n        return localize.day(dayOfWeek, {\n          width: 'narrow',\n          context: 'formatting'\n        });\n      // Tu\n      case 'iiiiii':\n        return localize.day(dayOfWeek, {\n          width: 'short',\n          context: 'formatting'\n        });\n      // Tuesday\n      case 'iiii':\n      default:\n        return localize.day(dayOfWeek, {\n          width: 'wide',\n          context: 'formatting'\n        });\n    }\n  },\n  // AM or PM\n  a: function a(date, token, localize) {\n    var hours = date.getUTCHours();\n    var dayPeriodEnumValue = hours / 12 >= 1 ? 'pm' : 'am';\n    switch (token) {\n      case 'a':\n      case 'aa':\n        return localize.dayPeriod(dayPeriodEnumValue, {\n          width: 'abbreviated',\n          context: 'formatting'\n        });\n      case 'aaa':\n        return localize.dayPeriod(dayPeriodEnumValue, {\n          width: 'abbreviated',\n          context: 'formatting'\n        }).toLowerCase();\n      case 'aaaaa':\n        return localize.dayPeriod(dayPeriodEnumValue, {\n          width: 'narrow',\n          context: 'formatting'\n        });\n      case 'aaaa':\n      default:\n        return localize.dayPeriod(dayPeriodEnumValue, {\n          width: 'wide',\n          context: 'formatting'\n        });\n    }\n  },\n  // AM, PM, midnight, noon\n  b: function b(date, token, localize) {\n    var hours = date.getUTCHours();\n    var dayPeriodEnumValue;\n    if (hours === 12) {\n      dayPeriodEnumValue = dayPeriodEnum.noon;\n    } else if (hours === 0) {\n      dayPeriodEnumValue = dayPeriodEnum.midnight;\n    } else {\n      dayPeriodEnumValue = hours / 12 >= 1 ? 'pm' : 'am';\n    }\n    switch (token) {\n      case 'b':\n      case 'bb':\n        return localize.dayPeriod(dayPeriodEnumValue, {\n          width: 'abbreviated',\n          context: 'formatting'\n        });\n      case 'bbb':\n        return localize.dayPeriod(dayPeriodEnumValue, {\n          width: 'abbreviated',\n          context: 'formatting'\n        }).toLowerCase();\n      case 'bbbbb':\n        return localize.dayPeriod(dayPeriodEnumValue, {\n          width: 'narrow',\n          context: 'formatting'\n        });\n      case 'bbbb':\n      default:\n        return localize.dayPeriod(dayPeriodEnumValue, {\n          width: 'wide',\n          context: 'formatting'\n        });\n    }\n  },\n  // in the morning, in the afternoon, in the evening, at night\n  B: function B(date, token, localize) {\n    var hours = date.getUTCHours();\n    var dayPeriodEnumValue;\n    if (hours >= 17) {\n      dayPeriodEnumValue = dayPeriodEnum.evening;\n    } else if (hours >= 12) {\n      dayPeriodEnumValue = dayPeriodEnum.afternoon;\n    } else if (hours >= 4) {\n      dayPeriodEnumValue = dayPeriodEnum.morning;\n    } else {\n      dayPeriodEnumValue = dayPeriodEnum.night;\n    }\n    switch (token) {\n      case 'B':\n      case 'BB':\n      case 'BBB':\n        return localize.dayPeriod(dayPeriodEnumValue, {\n          width: 'abbreviated',\n          context: 'formatting'\n        });\n      case 'BBBBB':\n        return localize.dayPeriod(dayPeriodEnumValue, {\n          width: 'narrow',\n          context: 'formatting'\n        });\n      case 'BBBB':\n      default:\n        return localize.dayPeriod(dayPeriodEnumValue, {\n          width: 'wide',\n          context: 'formatting'\n        });\n    }\n  },\n  // Hour [1-12]\n  h: function h(date, token, localize) {\n    if (token === 'ho') {\n      var hours = date.getUTCHours() % 12;\n      if (hours === 0) hours = 12;\n      return localize.ordinalNumber(hours, {\n        unit: 'hour'\n      });\n    }\n    return _index7.default.h(date, token);\n  },\n  // Hour [0-23]\n  H: function H(date, token, localize) {\n    if (token === 'Ho') {\n      return localize.ordinalNumber(date.getUTCHours(), {\n        unit: 'hour'\n      });\n    }\n    return _index7.default.H(date, token);\n  },\n  // Hour [0-11]\n  K: function K(date, token, localize) {\n    var hours = date.getUTCHours() % 12;\n    if (token === 'Ko') {\n      return localize.ordinalNumber(hours, {\n        unit: 'hour'\n      });\n    }\n    return (0, _index6.default)(hours, token.length);\n  },\n  // Hour [1-24]\n  k: function k(date, token, localize) {\n    var hours = date.getUTCHours();\n    if (hours === 0) hours = 24;\n    if (token === 'ko') {\n      return localize.ordinalNumber(hours, {\n        unit: 'hour'\n      });\n    }\n    return (0, _index6.default)(hours, token.length);\n  },\n  // Minute\n  m: function m(date, token, localize) {\n    if (token === 'mo') {\n      return localize.ordinalNumber(date.getUTCMinutes(), {\n        unit: 'minute'\n      });\n    }\n    return _index7.default.m(date, token);\n  },\n  // Second\n  s: function s(date, token, localize) {\n    if (token === 'so') {\n      return localize.ordinalNumber(date.getUTCSeconds(), {\n        unit: 'second'\n      });\n    }\n    return _index7.default.s(date, token);\n  },\n  // Fraction of second\n  S: function S(date, token) {\n    return _index7.default.S(date, token);\n  },\n  // Timezone (ISO-8601. If offset is 0, output is always `'Z'`)\n  X: function X(date, token, _localize, options) {\n    var originalDate = options._originalDate || date;\n    var timezoneOffset = originalDate.getTimezoneOffset();\n    if (timezoneOffset === 0) {\n      return 'Z';\n    }\n    switch (token) {\n      // Hours and optional minutes\n      case 'X':\n        return formatTimezoneWithOptionalMinutes(timezoneOffset);\n\n      // Hours, minutes and optional seconds without `:` delimiter\n      // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n      // so this token always has the same output as `XX`\n      case 'XXXX':\n      case 'XX':\n        // Hours and minutes without `:` delimiter\n        return formatTimezone(timezoneOffset);\n\n      // Hours, minutes and optional seconds with `:` delimiter\n      // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n      // so this token always has the same output as `XXX`\n      case 'XXXXX':\n      case 'XXX': // Hours and minutes with `:` delimiter\n      default:\n        return formatTimezone(timezoneOffset, ':');\n    }\n  },\n  // Timezone (ISO-8601. If offset is 0, output is `'+00:00'` or equivalent)\n  x: function x(date, token, _localize, options) {\n    var originalDate = options._originalDate || date;\n    var timezoneOffset = originalDate.getTimezoneOffset();\n    switch (token) {\n      // Hours and optional minutes\n      case 'x':\n        return formatTimezoneWithOptionalMinutes(timezoneOffset);\n\n      // Hours, minutes and optional seconds without `:` delimiter\n      // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n      // so this token always has the same output as `xx`\n      case 'xxxx':\n      case 'xx':\n        // Hours and minutes without `:` delimiter\n        return formatTimezone(timezoneOffset);\n\n      // Hours, minutes and optional seconds with `:` delimiter\n      // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n      // so this token always has the same output as `xxx`\n      case 'xxxxx':\n      case 'xxx': // Hours and minutes with `:` delimiter\n      default:\n        return formatTimezone(timezoneOffset, ':');\n    }\n  },\n  // Timezone (GMT)\n  O: function O(date, token, _localize, options) {\n    var originalDate = options._originalDate || date;\n    var timezoneOffset = originalDate.getTimezoneOffset();\n    switch (token) {\n      // Short\n      case 'O':\n      case 'OO':\n      case 'OOO':\n        return 'GMT' + formatTimezoneShort(timezoneOffset, ':');\n      // Long\n      case 'OOOO':\n      default:\n        return 'GMT' + formatTimezone(timezoneOffset, ':');\n    }\n  },\n  // Timezone (specific non-location)\n  z: function z(date, token, _localize, options) {\n    var originalDate = options._originalDate || date;\n    var timezoneOffset = originalDate.getTimezoneOffset();\n    switch (token) {\n      // Short\n      case 'z':\n      case 'zz':\n      case 'zzz':\n        return 'GMT' + formatTimezoneShort(timezoneOffset, ':');\n      // Long\n      case 'zzzz':\n      default:\n        return 'GMT' + formatTimezone(timezoneOffset, ':');\n    }\n  },\n  // Seconds timestamp\n  t: function t(date, token, _localize, options) {\n    var originalDate = options._originalDate || date;\n    var timestamp = Math.floor(originalDate.getTime() / 1000);\n    return (0, _index6.default)(timestamp, token.length);\n  },\n  // Milliseconds timestamp\n  T: function T(date, token, _localize, options) {\n    var originalDate = options._originalDate || date;\n    var timestamp = originalDate.getTime();\n    return (0, _index6.default)(timestamp, token.length);\n  }\n};\nfunction formatTimezoneShort(offset, dirtyDelimiter) {\n  var sign = offset > 0 ? '-' : '+';\n  var absOffset = Math.abs(offset);\n  var hours = Math.floor(absOffset / 60);\n  var minutes = absOffset % 60;\n  if (minutes === 0) {\n    return sign + String(hours);\n  }\n  var delimiter = dirtyDelimiter || '';\n  return sign + String(hours) + delimiter + (0, _index6.default)(minutes, 2);\n}\nfunction formatTimezoneWithOptionalMinutes(offset, dirtyDelimiter) {\n  if (offset % 60 === 0) {\n    var sign = offset > 0 ? '-' : '+';\n    return sign + (0, _index6.default)(Math.abs(offset) / 60, 2);\n  }\n  return formatTimezone(offset, dirtyDelimiter);\n}\nfunction formatTimezone(offset, dirtyDelimiter) {\n  var delimiter = dirtyDelimiter || '';\n  var sign = offset > 0 ? '-' : '+';\n  var absOffset = Math.abs(offset);\n  var hours = (0, _index6.default)(Math.floor(absOffset / 60), 2);\n  var minutes = (0, _index6.default)(absOffset % 60, 2);\n  return sign + hours + delimiter + minutes;\n}\nvar _default = formatters;\nexports.default = _default;\nmodule.exports = exports.default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\nvar _index = _interopRequireDefault(require(\"../../addLeadingZeros/index.js\"));\n/*\n * |     | Unit                           |     | Unit                           |\n * |-----|--------------------------------|-----|--------------------------------|\n * |  a  | AM, PM                         |  A* |                                |\n * |  d  | Day of month                   |  D  |                                |\n * |  h  | Hour [1-12]                    |  H  | Hour [0-23]                    |\n * |  m  | Minute                         |  M  | Month                          |\n * |  s  | Second                         |  S  | Fraction of second             |\n * |  y  | Year (abs)                     |  Y  |                                |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n */\n\nvar formatters = {\n  // Year\n  y: function y(date, token) {\n    // From http://www.unicode.org/reports/tr35/tr35-31/tr35-dates.html#Date_Format_tokens\n    // | Year     |     y | yy |   yyy |  yyyy | yyyyy |\n    // |----------|-------|----|-------|-------|-------|\n    // | AD 1     |     1 | 01 |   001 |  0001 | 00001 |\n    // | AD 12    |    12 | 12 |   012 |  0012 | 00012 |\n    // | AD 123   |   123 | 23 |   123 |  0123 | 00123 |\n    // | AD 1234  |  1234 | 34 |  1234 |  1234 | 01234 |\n    // | AD 12345 | 12345 | 45 | 12345 | 12345 | 12345 |\n\n    var signedYear = date.getUTCFullYear();\n    // Returns 1 for 1 BC (which is year 0 in JavaScript)\n    var year = signedYear > 0 ? signedYear : 1 - signedYear;\n    return (0, _index.default)(token === 'yy' ? year % 100 : year, token.length);\n  },\n  // Month\n  M: function M(date, token) {\n    var month = date.getUTCMonth();\n    return token === 'M' ? String(month + 1) : (0, _index.default)(month + 1, 2);\n  },\n  // Day of the month\n  d: function d(date, token) {\n    return (0, _index.default)(date.getUTCDate(), token.length);\n  },\n  // AM or PM\n  a: function a(date, token) {\n    var dayPeriodEnumValue = date.getUTCHours() / 12 >= 1 ? 'pm' : 'am';\n    switch (token) {\n      case 'a':\n      case 'aa':\n        return dayPeriodEnumValue.toUpperCase();\n      case 'aaa':\n        return dayPeriodEnumValue;\n      case 'aaaaa':\n        return dayPeriodEnumValue[0];\n      case 'aaaa':\n      default:\n        return dayPeriodEnumValue === 'am' ? 'a.m.' : 'p.m.';\n    }\n  },\n  // Hour [1-12]\n  h: function h(date, token) {\n    return (0, _index.default)(date.getUTCHours() % 12 || 12, token.length);\n  },\n  // Hour [0-23]\n  H: function H(date, token) {\n    return (0, _index.default)(date.getUTCHours(), token.length);\n  },\n  // Minute\n  m: function m(date, token) {\n    return (0, _index.default)(date.getUTCMinutes(), token.length);\n  },\n  // Second\n  s: function s(date, token) {\n    return (0, _index.default)(date.getUTCSeconds(), token.length);\n  },\n  // Fraction of second\n  S: function S(date, token) {\n    var numberOfDigits = token.length;\n    var milliseconds = date.getUTCMilliseconds();\n    var fractionalSeconds = Math.floor(milliseconds * Math.pow(10, numberOfDigits - 3));\n    return (0, _index.default)(fractionalSeconds, token.length);\n  }\n};\nvar _default = formatters;\nexports.default = _default;\nmodule.exports = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\nvar dateLongFormatter = function dateLongFormatter(pattern, formatLong) {\n  switch (pattern) {\n    case 'P':\n      return formatLong.date({\n        width: 'short'\n      });\n    case 'PP':\n      return formatLong.date({\n        width: 'medium'\n      });\n    case 'PPP':\n      return formatLong.date({\n        width: 'long'\n      });\n    case 'PPPP':\n    default:\n      return formatLong.date({\n        width: 'full'\n      });\n  }\n};\nvar timeLongFormatter = function timeLongFormatter(pattern, formatLong) {\n  switch (pattern) {\n    case 'p':\n      return formatLong.time({\n        width: 'short'\n      });\n    case 'pp':\n      return formatLong.time({\n        width: 'medium'\n      });\n    case 'ppp':\n      return formatLong.time({\n        width: 'long'\n      });\n    case 'pppp':\n    default:\n      return formatLong.time({\n        width: 'full'\n      });\n  }\n};\nvar dateTimeLongFormatter = function dateTimeLongFormatter(pattern, formatLong) {\n  var matchResult = pattern.match(/(P+)(p+)?/) || [];\n  var datePattern = matchResult[1];\n  var timePattern = matchResult[2];\n  if (!timePattern) {\n    return dateLongFormatter(pattern, formatLong);\n  }\n  var dateTimeFormat;\n  switch (datePattern) {\n    case 'P':\n      dateTimeFormat = formatLong.dateTime({\n        width: 'short'\n      });\n      break;\n    case 'PP':\n      dateTimeFormat = formatLong.dateTime({\n        width: 'medium'\n      });\n      break;\n    case 'PPP':\n      dateTimeFormat = formatLong.dateTime({\n        width: 'long'\n      });\n      break;\n    case 'PPPP':\n    default:\n      dateTimeFormat = formatLong.dateTime({\n        width: 'full'\n      });\n      break;\n  }\n  return dateTimeFormat.replace('{{date}}', dateLongFormatter(datePattern, formatLong)).replace('{{time}}', timeLongFormatter(timePattern, formatLong));\n};\nvar longFormatters = {\n  p: timeLongFormatter,\n  P: dateTimeLongFormatter\n};\nvar _default = longFormatters;\nexports.default = _default;\nmodule.exports = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = getTimezoneOffsetInMilliseconds;\n/**\n * Google Chrome as of 67.0.3396.87 introduced timezones with offset that includes seconds.\n * They usually appear for dates that denote time before the timezones were introduced\n * (e.g. for 'Europe/Prague' timezone the offset is GMT+00:57:44 before 1 October 1891\n * and GMT+01:00:00 after that date)\n *\n * Date#getTimezoneOffset returns the offset in minutes and would return 57 for the example above,\n * which would lead to incorrect calculations.\n *\n * This function returns the timezone offset in milliseconds that takes seconds in account.\n */\nfunction getTimezoneOffsetInMilliseconds(date) {\n  var utcDate = new Date(Date.UTC(date.getFullYear(), date.getMonth(), date.getDate(), date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds()));\n  utcDate.setUTCFullYear(date.getFullYear());\n  return date.getTime() - utcDate.getTime();\n}\nmodule.exports = exports.default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = getUTCDayOfYear;\nvar _index = _interopRequireDefault(require(\"../../toDate/index.js\"));\nvar _index2 = _interopRequireDefault(require(\"../requiredArgs/index.js\"));\nvar MILLISECONDS_IN_DAY = 86400000;\nfunction getUTCDayOfYear(dirtyDate) {\n  (0, _index2.default)(1, arguments);\n  var date = (0, _index.default)(dirtyDate);\n  var timestamp = date.getTime();\n  date.setUTCMonth(0, 1);\n  date.setUTCHours(0, 0, 0, 0);\n  var startOfYearTimestamp = date.getTime();\n  var difference = timestamp - startOfYearTimestamp;\n  return Math.floor(difference / MILLISECONDS_IN_DAY) + 1;\n}\nmodule.exports = exports.default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = getUTCISOWeek;\nvar _index = _interopRequireDefault(require(\"../../toDate/index.js\"));\nvar _index2 = _interopRequireDefault(require(\"../startOfUTCISOWeek/index.js\"));\nvar _index3 = _interopRequireDefault(require(\"../startOfUTCISOWeekYear/index.js\"));\nvar _index4 = _interopRequireDefault(require(\"../requiredArgs/index.js\"));\nvar MILLISECONDS_IN_WEEK = 604800000;\nfunction getUTCISOWeek(dirtyDate) {\n  (0, _index4.default)(1, arguments);\n  var date = (0, _index.default)(dirtyDate);\n  var diff = (0, _index2.default)(date).getTime() - (0, _index3.default)(date).getTime();\n\n  // Round the number of days to the nearest integer\n  // because the number of milliseconds in a week is not constant\n  // (e.g. it's different in the week of the daylight saving time clock shift)\n  return Math.round(diff / MILLISECONDS_IN_WEEK) + 1;\n}\nmodule.exports = exports.default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = getUTCISOWeekYear;\nvar _index = _interopRequireDefault(require(\"../../toDate/index.js\"));\nvar _index2 = _interopRequireDefault(require(\"../requiredArgs/index.js\"));\nvar _index3 = _interopRequireDefault(require(\"../startOfUTCISOWeek/index.js\"));\nfunction getUTCISOWeekYear(dirtyDate) {\n  (0, _index2.default)(1, arguments);\n  var date = (0, _index.default)(dirtyDate);\n  var year = date.getUTCFullYear();\n  var fourthOfJanuaryOfNextYear = new Date(0);\n  fourthOfJanuaryOfNextYear.setUTCFullYear(year + 1, 0, 4);\n  fourthOfJanuaryOfNextYear.setUTCHours(0, 0, 0, 0);\n  var startOfNextYear = (0, _index3.default)(fourthOfJanuaryOfNextYear);\n  var fourthOfJanuaryOfThisYear = new Date(0);\n  fourthOfJanuaryOfThisYear.setUTCFullYear(year, 0, 4);\n  fourthOfJanuaryOfThisYear.setUTCHours(0, 0, 0, 0);\n  var startOfThisYear = (0, _index3.default)(fourthOfJanuaryOfThisYear);\n  if (date.getTime() >= startOfNextYear.getTime()) {\n    return year + 1;\n  } else if (date.getTime() >= startOfThisYear.getTime()) {\n    return year;\n  } else {\n    return year - 1;\n  }\n}\nmodule.exports = exports.default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = getUTCWeek;\nvar _index = _interopRequireDefault(require(\"../../toDate/index.js\"));\nvar _index2 = _interopRequireDefault(require(\"../startOfUTCWeek/index.js\"));\nvar _index3 = _interopRequireDefault(require(\"../startOfUTCWeekYear/index.js\"));\nvar _index4 = _interopRequireDefault(require(\"../requiredArgs/index.js\"));\nvar MILLISECONDS_IN_WEEK = 604800000;\nfunction getUTCWeek(dirtyDate, options) {\n  (0, _index4.default)(1, arguments);\n  var date = (0, _index.default)(dirtyDate);\n  var diff = (0, _index2.default)(date, options).getTime() - (0, _index3.default)(date, options).getTime();\n\n  // Round the number of days to the nearest integer\n  // because the number of milliseconds in a week is not constant\n  // (e.g. it's different in the week of the daylight saving time clock shift)\n  return Math.round(diff / MILLISECONDS_IN_WEEK) + 1;\n}\nmodule.exports = exports.default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = getUTCWeekYear;\nvar _index = _interopRequireDefault(require(\"../../toDate/index.js\"));\nvar _index2 = _interopRequireDefault(require(\"../requiredArgs/index.js\"));\nvar _index3 = _interopRequireDefault(require(\"../startOfUTCWeek/index.js\"));\nvar _index4 = _interopRequireDefault(require(\"../toInteger/index.js\"));\nvar _index5 = require(\"../defaultOptions/index.js\");\nfunction getUTCWeekYear(dirtyDate, options) {\n  var _ref, _ref2, _ref3, _options$firstWeekCon, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2;\n  (0, _index2.default)(1, arguments);\n  var date = (0, _index.default)(dirtyDate);\n  var year = date.getUTCFullYear();\n  var defaultOptions = (0, _index5.getDefaultOptions)();\n  var firstWeekContainsDate = (0, _index4.default)((_ref = (_ref2 = (_ref3 = (_options$firstWeekCon = options === null || options === void 0 ? void 0 : options.firstWeekContainsDate) !== null && _options$firstWeekCon !== void 0 ? _options$firstWeekCon : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.firstWeekContainsDate) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions.firstWeekContainsDate) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.firstWeekContainsDate) !== null && _ref !== void 0 ? _ref : 1);\n\n  // Test if weekStartsOn is between 1 and 7 _and_ is not NaN\n  if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) {\n    throw new RangeError('firstWeekContainsDate must be between 1 and 7 inclusively');\n  }\n  var firstWeekOfNextYear = new Date(0);\n  firstWeekOfNextYear.setUTCFullYear(year + 1, 0, firstWeekContainsDate);\n  firstWeekOfNextYear.setUTCHours(0, 0, 0, 0);\n  var startOfNextYear = (0, _index3.default)(firstWeekOfNextYear, options);\n  var firstWeekOfThisYear = new Date(0);\n  firstWeekOfThisYear.setUTCFullYear(year, 0, firstWeekContainsDate);\n  firstWeekOfThisYear.setUTCHours(0, 0, 0, 0);\n  var startOfThisYear = (0, _index3.default)(firstWeekOfThisYear, options);\n  if (date.getTime() >= startOfNextYear.getTime()) {\n    return year + 1;\n  } else if (date.getTime() >= startOfThisYear.getTime()) {\n    return year;\n  } else {\n    return year - 1;\n  }\n}\nmodule.exports = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.isProtectedDayOfYearToken = isProtectedDayOfYearToken;\nexports.isProtectedWeekYearToken = isProtectedWeekYearToken;\nexports.throwProtectedError = throwProtectedError;\nvar protectedDayOfYearTokens = ['D', 'DD'];\nvar protectedWeekYearTokens = ['YY', 'YYYY'];\nfunction isProtectedDayOfYearToken(token) {\n  return protectedDayOfYearTokens.indexOf(token) !== -1;\n}\nfunction isProtectedWeekYearToken(token) {\n  return protectedWeekYearTokens.indexOf(token) !== -1;\n}\nfunction throwProtectedError(token, format, input) {\n  if (token === 'YYYY') {\n    throw new RangeError(\"Use `yyyy` instead of `YYYY` (in `\".concat(format, \"`) for formatting years to the input `\").concat(input, \"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\"));\n  } else if (token === 'YY') {\n    throw new RangeError(\"Use `yy` instead of `YY` (in `\".concat(format, \"`) for formatting years to the input `\").concat(input, \"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\"));\n  } else if (token === 'D') {\n    throw new RangeError(\"Use `d` instead of `D` (in `\".concat(format, \"`) for formatting days of the month to the input `\").concat(input, \"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\"));\n  } else if (token === 'DD') {\n    throw new RangeError(\"Use `dd` instead of `DD` (in `\".concat(format, \"`) for formatting days of the month to the input `\").concat(input, \"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\"));\n  }\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = requiredArgs;\nfunction requiredArgs(required, args) {\n  if (args.length < required) {\n    throw new TypeError(required + ' argument' + (required > 1 ? 's' : '') + ' required, but only ' + args.length + ' present');\n  }\n}\nmodule.exports = exports.default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = startOfUTCISOWeek;\nvar _index = _interopRequireDefault(require(\"../../toDate/index.js\"));\nvar _index2 = _interopRequireDefault(require(\"../requiredArgs/index.js\"));\nfunction startOfUTCISOWeek(dirtyDate) {\n  (0, _index2.default)(1, arguments);\n  var weekStartsOn = 1;\n  var date = (0, _index.default)(dirtyDate);\n  var day = date.getUTCDay();\n  var diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;\n  date.setUTCDate(date.getUTCDate() - diff);\n  date.setUTCHours(0, 0, 0, 0);\n  return date;\n}\nmodule.exports = exports.default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = startOfUTCISOWeekYear;\nvar _index = _interopRequireDefault(require(\"../getUTCISOWeekYear/index.js\"));\nvar _index2 = _interopRequireDefault(require(\"../startOfUTCISOWeek/index.js\"));\nvar _index3 = _interopRequireDefault(require(\"../requiredArgs/index.js\"));\nfunction startOfUTCISOWeekYear(dirtyDate) {\n  (0, _index3.default)(1, arguments);\n  var year = (0, _index.default)(dirtyDate);\n  var fourthOfJanuary = new Date(0);\n  fourthOfJanuary.setUTCFullYear(year, 0, 4);\n  fourthOfJanuary.setUTCHours(0, 0, 0, 0);\n  var date = (0, _index2.default)(fourthOfJanuary);\n  return date;\n}\nmodule.exports = exports.default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = startOfUTCWeek;\nvar _index = _interopRequireDefault(require(\"../../toDate/index.js\"));\nvar _index2 = _interopRequireDefault(require(\"../requiredArgs/index.js\"));\nvar _index3 = _interopRequireDefault(require(\"../toInteger/index.js\"));\nvar _index4 = require(\"../defaultOptions/index.js\");\nfunction startOfUTCWeek(dirtyDate, options) {\n  var _ref, _ref2, _ref3, _options$weekStartsOn, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2;\n  (0, _index2.default)(1, arguments);\n  var defaultOptions = (0, _index4.getDefaultOptions)();\n  var weekStartsOn = (0, _index3.default)((_ref = (_ref2 = (_ref3 = (_options$weekStartsOn = options === null || options === void 0 ? void 0 : options.weekStartsOn) !== null && _options$weekStartsOn !== void 0 ? _options$weekStartsOn : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.weekStartsOn) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions.weekStartsOn) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.weekStartsOn) !== null && _ref !== void 0 ? _ref : 0);\n\n  // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n  if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n    throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n  }\n  var date = (0, _index.default)(dirtyDate);\n  var day = date.getUTCDay();\n  var diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;\n  date.setUTCDate(date.getUTCDate() - diff);\n  date.setUTCHours(0, 0, 0, 0);\n  return date;\n}\nmodule.exports = exports.default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = startOfUTCWeekYear;\nvar _index = _interopRequireDefault(require(\"../getUTCWeekYear/index.js\"));\nvar _index2 = _interopRequireDefault(require(\"../requiredArgs/index.js\"));\nvar _index3 = _interopRequireDefault(require(\"../startOfUTCWeek/index.js\"));\nvar _index4 = _interopRequireDefault(require(\"../toInteger/index.js\"));\nvar _index5 = require(\"../defaultOptions/index.js\");\nfunction startOfUTCWeekYear(dirtyDate, options) {\n  var _ref, _ref2, _ref3, _options$firstWeekCon, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2;\n  (0, _index2.default)(1, arguments);\n  var defaultOptions = (0, _index5.getDefaultOptions)();\n  var firstWeekContainsDate = (0, _index4.default)((_ref = (_ref2 = (_ref3 = (_options$firstWeekCon = options === null || options === void 0 ? void 0 : options.firstWeekContainsDate) !== null && _options$firstWeekCon !== void 0 ? _options$firstWeekCon : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.firstWeekContainsDate) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions.firstWeekContainsDate) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.firstWeekContainsDate) !== null && _ref !== void 0 ? _ref : 1);\n  var year = (0, _index.default)(dirtyDate, options);\n  var firstWeek = new Date(0);\n  firstWeek.setUTCFullYear(year, 0, firstWeekContainsDate);\n  firstWeek.setUTCHours(0, 0, 0, 0);\n  var date = (0, _index3.default)(firstWeek, options);\n  return date;\n}\nmodule.exports = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = toInteger;\nfunction toInteger(dirtyNumber) {\n  if (dirtyNumber === null || dirtyNumber === true || dirtyNumber === false) {\n    return NaN;\n  }\n  var number = Number(dirtyNumber);\n  if (isNaN(number)) {\n    return number;\n  }\n  return number < 0 ? Math.ceil(number) : Math.floor(number);\n}\nmodule.exports = exports.default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = addMilliseconds;\nvar _index = _interopRequireDefault(require(\"../_lib/toInteger/index.js\"));\nvar _index2 = _interopRequireDefault(require(\"../toDate/index.js\"));\nvar _index3 = _interopRequireDefault(require(\"../_lib/requiredArgs/index.js\"));\n/**\n * @name addMilliseconds\n * @category Millisecond Helpers\n * @summary Add the specified number of milliseconds to the given date.\n *\n * @description\n * Add the specified number of milliseconds to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of milliseconds to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the milliseconds added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 750 milliseconds to 10 July 2014 12:45:30.000:\n * const result = addMilliseconds(new Date(2014, 6, 10, 12, 45, 30, 0), 750)\n * //=> Thu Jul 10 2014 12:45:30.750\n */\nfunction addMilliseconds(dirtyDate, dirtyAmount) {\n  (0, _index3.default)(2, arguments);\n  var timestamp = (0, _index2.default)(dirtyDate).getTime();\n  var amount = (0, _index.default)(dirtyAmount);\n  return new Date(timestamp + amount);\n}\nmodule.exports = exports.default;","var defaultOptions = {};\nexport function getDefaultOptions() {\n  return defaultOptions;\n}\nexport function setDefaultOptions(newOptions) {\n  defaultOptions = newOptions;\n}","/**\n * Google Chrome as of 67.0.3396.87 introduced timezones with offset that includes seconds.\n * They usually appear for dates that denote time before the timezones were introduced\n * (e.g. for 'Europe/Prague' timezone the offset is GMT+00:57:44 before 1 October 1891\n * and GMT+01:00:00 after that date)\n *\n * Date#getTimezoneOffset returns the offset in minutes and would return 57 for the example above,\n * which would lead to incorrect calculations.\n *\n * This function returns the timezone offset in milliseconds that takes seconds in account.\n */\nexport default function getTimezoneOffsetInMilliseconds(date) {\n  var utcDate = new Date(Date.UTC(date.getFullYear(), date.getMonth(), date.getDate(), date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds()));\n  utcDate.setUTCFullYear(date.getFullYear());\n  return date.getTime() - utcDate.getTime();\n}","export default function requiredArgs(required, args) {\n  if (args.length < required) {\n    throw new TypeError(required + ' argument' + (required > 1 ? 's' : '') + ' required, but only ' + args.length + ' present');\n  }\n}","var roundingMap = {\n  ceil: Math.ceil,\n  round: Math.round,\n  floor: Math.floor,\n  trunc: function trunc(value) {\n    return value < 0 ? Math.ceil(value) : Math.floor(value);\n  } // Math.trunc is not supported by IE\n};\n\nvar defaultRoundingMethod = 'trunc';\nexport function getRoundingMethod(method) {\n  return method ? roundingMap[method] : roundingMap[defaultRoundingMethod];\n}","export default function toInteger(dirtyNumber) {\n  if (dirtyNumber === null || dirtyNumber === true || dirtyNumber === false) {\n    return NaN;\n  }\n  var number = Number(dirtyNumber);\n  if (isNaN(number)) {\n    return number;\n  }\n  return number < 0 ? Math.ceil(number) : Math.floor(number);\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name addDays\n * @category Day Helpers\n * @summary Add the specified number of days to the given date.\n *\n * @description\n * Add the specified number of days to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of days to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} - the new date with the days added\n * @throws {TypeError} - 2 arguments required\n *\n * @example\n * // Add 10 days to 1 September 2014:\n * const result = addDays(new Date(2014, 8, 1), 10)\n * //=> Thu Sep 11 2014 00:00:00\n */\nexport default function addDays(dirtyDate, dirtyAmount) {\n  requiredArgs(2, arguments);\n  var date = toDate(dirtyDate);\n  var amount = toInteger(dirtyAmount);\n  if (isNaN(amount)) {\n    return new Date(NaN);\n  }\n  if (!amount) {\n    // If 0 days, no-op to avoid changing times in the hour before end of DST\n    return date;\n  }\n  date.setDate(date.getDate() + amount);\n  return date;\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport addMilliseconds from \"../addMilliseconds/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nvar MILLISECONDS_IN_HOUR = 3600000;\n\n/**\n * @name addHours\n * @category Hour Helpers\n * @summary Add the specified number of hours to the given date.\n *\n * @description\n * Add the specified number of hours to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of hours to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the hours added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 2 hours to 10 July 2014 23:00:00:\n * const result = addHours(new Date(2014, 6, 10, 23, 0), 2)\n * //=> Fri Jul 11 2014 01:00:00\n */\nexport default function addHours(dirtyDate, dirtyAmount) {\n  requiredArgs(2, arguments);\n  var amount = toInteger(dirtyAmount);\n  return addMilliseconds(dirtyDate, amount * MILLISECONDS_IN_HOUR);\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name addMilliseconds\n * @category Millisecond Helpers\n * @summary Add the specified number of milliseconds to the given date.\n *\n * @description\n * Add the specified number of milliseconds to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of milliseconds to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the milliseconds added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 750 milliseconds to 10 July 2014 12:45:30.000:\n * const result = addMilliseconds(new Date(2014, 6, 10, 12, 45, 30, 0), 750)\n * //=> Thu Jul 10 2014 12:45:30.750\n */\nexport default function addMilliseconds(dirtyDate, dirtyAmount) {\n  requiredArgs(2, arguments);\n  var timestamp = toDate(dirtyDate).getTime();\n  var amount = toInteger(dirtyAmount);\n  return new Date(timestamp + amount);\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name addMonths\n * @category Month Helpers\n * @summary Add the specified number of months to the given date.\n *\n * @description\n * Add the specified number of months to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of months to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the months added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 5 months to 1 September 2014:\n * const result = addMonths(new Date(2014, 8, 1), 5)\n * //=> Sun Feb 01 2015 00:00:00\n */\nexport default function addMonths(dirtyDate, dirtyAmount) {\n  requiredArgs(2, arguments);\n  var date = toDate(dirtyDate);\n  var amount = toInteger(dirtyAmount);\n  if (isNaN(amount)) {\n    return new Date(NaN);\n  }\n  if (!amount) {\n    // If 0 months, no-op to avoid changing times in the hour before end of DST\n    return date;\n  }\n  var dayOfMonth = date.getDate();\n\n  // The JS Date object supports date math by accepting out-of-bounds values for\n  // month, day, etc. For example, new Date(2020, 0, 0) returns 31 Dec 2019 and\n  // new Date(2020, 13, 1) returns 1 Feb 2021.  This is *almost* the behavior we\n  // want except that dates will wrap around the end of a month, meaning that\n  // new Date(2020, 13, 31) will return 3 Mar 2021 not 28 Feb 2021 as desired. So\n  // we'll default to the end of the desired month by adding 1 to the desired\n  // month and using a date of 0 to back up one day to the end of the desired\n  // month.\n  var endOfDesiredMonth = new Date(date.getTime());\n  endOfDesiredMonth.setMonth(date.getMonth() + amount + 1, 0);\n  var daysInMonth = endOfDesiredMonth.getDate();\n  if (dayOfMonth >= daysInMonth) {\n    // If we're already at the end of the month, then this is the correct date\n    // and we're done.\n    return endOfDesiredMonth;\n  } else {\n    // Otherwise, we now know that setting the original day-of-month value won't\n    // cause an overflow, so set the desired day-of-month. Note that we can't\n    // just set the date of `endOfDesiredMonth` because that object may have had\n    // its time changed in the unusual case where where a DST transition was on\n    // the last day of the month and its local time was in the hour skipped or\n    // repeated next to a DST transition.  So we use `date` instead which is\n    // guaranteed to still have the original time.\n    date.setFullYear(endOfDesiredMonth.getFullYear(), endOfDesiredMonth.getMonth(), dayOfMonth);\n    return date;\n  }\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport addDays from \"../addDays/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name addWeeks\n * @category Week Helpers\n * @summary Add the specified number of weeks to the given date.\n *\n * @description\n * Add the specified number of week to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of weeks to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the weeks added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 4 weeks to 1 September 2014:\n * const result = addWeeks(new Date(2014, 8, 1), 4)\n * //=> Mon Sep 29 2014 00:00:00\n */\nexport default function addWeeks(dirtyDate, dirtyAmount) {\n  requiredArgs(2, arguments);\n  var amount = toInteger(dirtyAmount);\n  var days = amount * 7;\n  return addDays(dirtyDate, days);\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport addMonths from \"../addMonths/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name addYears\n * @category Year Helpers\n * @summary Add the specified number of years to the given date.\n *\n * @description\n * Add the specified number of years to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of years to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the years added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 5 years to 1 September 2014:\n * const result = addYears(new Date(2014, 8, 1), 5)\n * //=> Sun Sep 01 2019 00:00:00\n */\nexport default function addYears(dirtyDate, dirtyAmount) {\n  requiredArgs(2, arguments);\n  var amount = toInteger(dirtyAmount);\n  return addMonths(dirtyDate, amount * 12);\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name compareAsc\n * @category Common Helpers\n * @summary Compare the two dates and return -1, 0 or 1.\n *\n * @description\n * Compare the two dates and return 1 if the first date is after the second,\n * -1 if the first date is before the second or 0 if dates are equal.\n *\n * @param {Date|Number} dateLeft - the first date to compare\n * @param {Date|Number} dateRight - the second date to compare\n * @returns {Number} the result of the comparison\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Compare 11 February 1987 and 10 July 1989:\n * const result = compareAsc(new Date(1987, 1, 11), new Date(1989, 6, 10))\n * //=> -1\n *\n * @example\n * // Sort the array of dates:\n * const result = [\n *   new Date(1995, 6, 2),\n *   new Date(1987, 1, 11),\n *   new Date(1989, 6, 10)\n * ].sort(compareAsc)\n * //=> [\n * //   Wed Feb 11 1987 00:00:00,\n * //   Mon Jul 10 1989 00:00:00,\n * //   Sun Jul 02 1995 00:00:00\n * // ]\n */\nexport default function compareAsc(dirtyDateLeft, dirtyDateRight) {\n  requiredArgs(2, arguments);\n  var dateLeft = toDate(dirtyDateLeft);\n  var dateRight = toDate(dirtyDateRight);\n  var diff = dateLeft.getTime() - dateRight.getTime();\n  if (diff < 0) {\n    return -1;\n  } else if (diff > 0) {\n    return 1;\n    // Return 0 if diff is 0; return NaN if diff is NaN\n  } else {\n    return diff;\n  }\n}","/**\n * Days in 1 week.\n *\n * @name daysInWeek\n * @constant\n * @type {number}\n * @default\n */\nexport var daysInWeek = 7;\n\n/**\n * Days in 1 year\n * One years equals 365.2425 days according to the formula:\n *\n * > Leap year occures every 4 years, except for years that are divisable by 100 and not divisable by 400.\n * > 1 mean year = (365+1/4-1/100+1/400) days = 365.2425 days\n *\n * @name daysInYear\n * @constant\n * @type {number}\n * @default\n */\nexport var daysInYear = 365.2425;\n\n/**\n * Maximum allowed time.\n *\n * @name maxTime\n * @constant\n * @type {number}\n * @default\n */\nexport var maxTime = Math.pow(10, 8) * 24 * 60 * 60 * 1000;\n\n/**\n * Milliseconds in 1 minute\n *\n * @name millisecondsInMinute\n * @constant\n * @type {number}\n * @default\n */\nexport var millisecondsInMinute = 60000;\n\n/**\n * Milliseconds in 1 hour\n *\n * @name millisecondsInHour\n * @constant\n * @type {number}\n * @default\n */\nexport var millisecondsInHour = 3600000;\n\n/**\n * Milliseconds in 1 second\n *\n * @name millisecondsInSecond\n * @constant\n * @type {number}\n * @default\n */\nexport var millisecondsInSecond = 1000;\n\n/**\n * Minimum allowed time.\n *\n * @name minTime\n * @constant\n * @type {number}\n * @default\n */\nexport var minTime = -maxTime;\n\n/**\n * Minutes in 1 hour\n *\n * @name minutesInHour\n * @constant\n * @type {number}\n * @default\n */\nexport var minutesInHour = 60;\n\n/**\n * Months in 1 quarter\n *\n * @name monthsInQuarter\n * @constant\n * @type {number}\n * @default\n */\nexport var monthsInQuarter = 3;\n\n/**\n * Months in 1 year\n *\n * @name monthsInYear\n * @constant\n * @type {number}\n * @default\n */\nexport var monthsInYear = 12;\n\n/**\n * Quarters in 1 year\n *\n * @name quartersInYear\n * @constant\n * @type {number}\n * @default\n */\nexport var quartersInYear = 4;\n\n/**\n * Seconds in 1 hour\n *\n * @name secondsInHour\n * @constant\n * @type {number}\n * @default\n */\nexport var secondsInHour = 3600;\n\n/**\n * Seconds in 1 minute\n *\n * @name secondsInMinute\n * @constant\n * @type {number}\n * @default\n */\nexport var secondsInMinute = 60;\n\n/**\n * Seconds in 1 day\n *\n * @name secondsInDay\n * @constant\n * @type {number}\n * @default\n */\nexport var secondsInDay = secondsInHour * 24;\n\n/**\n * Seconds in 1 week\n *\n * @name secondsInWeek\n * @constant\n * @type {number}\n * @default\n */\nexport var secondsInWeek = secondsInDay * 7;\n\n/**\n * Seconds in 1 year\n *\n * @name secondsInYear\n * @constant\n * @type {number}\n * @default\n */\nexport var secondsInYear = secondsInDay * daysInYear;\n\n/**\n * Seconds in 1 month\n *\n * @name secondsInMonth\n * @constant\n * @type {number}\n * @default\n */\nexport var secondsInMonth = secondsInYear / 12;\n\n/**\n * Seconds in 1 quarter\n *\n * @name secondsInQuarter\n * @constant\n * @type {number}\n * @default\n */\nexport var secondsInQuarter = secondsInMonth * 3;","import getTimezoneOffsetInMilliseconds from \"../_lib/getTimezoneOffsetInMilliseconds/index.js\";\nimport startOfDay from \"../startOfDay/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nvar MILLISECONDS_IN_DAY = 86400000;\n\n/**\n * @name differenceInCalendarDays\n * @category Day Helpers\n * @summary Get the number of calendar days between the given dates.\n *\n * @description\n * Get the number of calendar days between the given dates. This means that the times are removed\n * from the dates and then the difference in days is calculated.\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @returns {Number} the number of calendar days\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many calendar days are between\n * // 2 July 2011 23:00:00 and 2 July 2012 00:00:00?\n * const result = differenceInCalendarDays(\n *   new Date(2012, 6, 2, 0, 0),\n *   new Date(2011, 6, 2, 23, 0)\n * )\n * //=> 366\n * // How many calendar days are between\n * // 2 July 2011 23:59:00 and 3 July 2011 00:01:00?\n * const result = differenceInCalendarDays(\n *   new Date(2011, 6, 3, 0, 1),\n *   new Date(2011, 6, 2, 23, 59)\n * )\n * //=> 1\n */\nexport default function differenceInCalendarDays(dirtyDateLeft, dirtyDateRight) {\n  requiredArgs(2, arguments);\n  var startOfDayLeft = startOfDay(dirtyDateLeft);\n  var startOfDayRight = startOfDay(dirtyDateRight);\n  var timestampLeft = startOfDayLeft.getTime() - getTimezoneOffsetInMilliseconds(startOfDayLeft);\n  var timestampRight = startOfDayRight.getTime() - getTimezoneOffsetInMilliseconds(startOfDayRight);\n\n  // Round the number of days to the nearest integer\n  // because the number of milliseconds in a day is not constant\n  // (e.g. it's different in the day of the daylight saving time clock shift)\n  return Math.round((timestampLeft - timestampRight) / MILLISECONDS_IN_DAY);\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name differenceInCalendarMonths\n * @category Month Helpers\n * @summary Get the number of calendar months between the given dates.\n *\n * @description\n * Get the number of calendar months between the given dates.\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @returns {Number} the number of calendar months\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many calendar months are between 31 January 2014 and 1 September 2014?\n * const result = differenceInCalendarMonths(\n *   new Date(2014, 8, 1),\n *   new Date(2014, 0, 31)\n * )\n * //=> 8\n */\nexport default function differenceInCalendarMonths(dirtyDateLeft, dirtyDateRight) {\n  requiredArgs(2, arguments);\n  var dateLeft = toDate(dirtyDateLeft);\n  var dateRight = toDate(dirtyDateRight);\n  var yearDiff = dateLeft.getFullYear() - dateRight.getFullYear();\n  var monthDiff = dateLeft.getMonth() - dateRight.getMonth();\n  return yearDiff * 12 + monthDiff;\n}","import toDate from \"../toDate/index.js\";\nimport differenceInCalendarDays from \"../differenceInCalendarDays/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\"; // Like `compareAsc` but uses local time not UTC, which is needed\n// for accurate equality comparisons of UTC timestamps that end up\n// having the same representation in local time, e.g. one hour before\n// DST ends vs. the instant that DST ends.\nfunction compareLocalAsc(dateLeft, dateRight) {\n  var diff = dateLeft.getFullYear() - dateRight.getFullYear() || dateLeft.getMonth() - dateRight.getMonth() || dateLeft.getDate() - dateRight.getDate() || dateLeft.getHours() - dateRight.getHours() || dateLeft.getMinutes() - dateRight.getMinutes() || dateLeft.getSeconds() - dateRight.getSeconds() || dateLeft.getMilliseconds() - dateRight.getMilliseconds();\n  if (diff < 0) {\n    return -1;\n  } else if (diff > 0) {\n    return 1;\n    // Return 0 if diff is 0; return NaN if diff is NaN\n  } else {\n    return diff;\n  }\n}\n\n/**\n * @name differenceInDays\n * @category Day Helpers\n * @summary Get the number of full days between the given dates.\n *\n * @description\n * Get the number of full day periods between two dates. Fractional days are\n * truncated towards zero.\n *\n * One \"full day\" is the distance between a local time in one day to the same\n * local time on the next or previous day. A full day can sometimes be less than\n * or more than 24 hours if a daylight savings change happens between two dates.\n *\n * To ignore DST and only measure exact 24-hour periods, use this instead:\n * `Math.floor(differenceInHours(dateLeft, dateRight)/24)|0`.\n *\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @returns {Number} the number of full days according to the local timezone\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many full days are between\n * // 2 July 2011 23:00:00 and 2 July 2012 00:00:00?\n * const result = differenceInDays(\n *   new Date(2012, 6, 2, 0, 0),\n *   new Date(2011, 6, 2, 23, 0)\n * )\n * //=> 365\n * // How many full days are between\n * // 2 July 2011 23:59:00 and 3 July 2011 00:01:00?\n * const result = differenceInDays(\n *   new Date(2011, 6, 3, 0, 1),\n *   new Date(2011, 6, 2, 23, 59)\n * )\n * //=> 0\n * // How many full days are between\n * // 1 March 2020 0:00 and 1 June 2020 0:00 ?\n * // Note: because local time is used, the\n * // result will always be 92 days, even in\n * // time zones where DST starts and the\n * // period has only 92*24-1 hours.\n * const result = differenceInDays(\n *   new Date(2020, 5, 1),\n *   new Date(2020, 2, 1)\n * )\n//=> 92\n */\nexport default function differenceInDays(dirtyDateLeft, dirtyDateRight) {\n  requiredArgs(2, arguments);\n  var dateLeft = toDate(dirtyDateLeft);\n  var dateRight = toDate(dirtyDateRight);\n  var sign = compareLocalAsc(dateLeft, dateRight);\n  var difference = Math.abs(differenceInCalendarDays(dateLeft, dateRight));\n  dateLeft.setDate(dateLeft.getDate() - sign * difference);\n\n  // Math.abs(diff in full days - diff in calendar days) === 1 if last calendar day is not full\n  // If so, result must be decreased by 1 in absolute value\n  var isLastDayNotFull = Number(compareLocalAsc(dateLeft, dateRight) === -sign);\n  var result = sign * (difference - isLastDayNotFull);\n  // Prevent negative zero\n  return result === 0 ? 0 : result;\n}","import { millisecondsInHour } from \"../constants/index.js\";\nimport differenceInMilliseconds from \"../differenceInMilliseconds/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport { getRoundingMethod } from \"../_lib/roundingMethods/index.js\";\n/**\n * @name differenceInHours\n * @category Hour Helpers\n * @summary Get the number of hours between the given dates.\n *\n * @description\n * Get the number of hours between the given dates.\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @param {Object} [options] - an object with options.\n * @param {String} [options.roundingMethod='trunc'] - a rounding method (`ceil`, `floor`, `round` or `trunc`)\n * @returns {Number} the number of hours\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many hours are between 2 July 2014 06:50:00 and 2 July 2014 19:00:00?\n * const result = differenceInHours(\n *   new Date(2014, 6, 2, 19, 0),\n *   new Date(2014, 6, 2, 6, 50)\n * )\n * //=> 12\n */\nexport default function differenceInHours(dateLeft, dateRight, options) {\n  requiredArgs(2, arguments);\n  var diff = differenceInMilliseconds(dateLeft, dateRight) / millisecondsInHour;\n  return getRoundingMethod(options === null || options === void 0 ? void 0 : options.roundingMethod)(diff);\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name differenceInMilliseconds\n * @category Millisecond Helpers\n * @summary Get the number of milliseconds between the given dates.\n *\n * @description\n * Get the number of milliseconds between the given dates.\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @returns {Number} the number of milliseconds\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many milliseconds are between\n * // 2 July 2014 12:30:20.600 and 2 July 2014 12:30:21.700?\n * const result = differenceInMilliseconds(\n *   new Date(2014, 6, 2, 12, 30, 21, 700),\n *   new Date(2014, 6, 2, 12, 30, 20, 600)\n * )\n * //=> 1100\n */\nexport default function differenceInMilliseconds(dateLeft, dateRight) {\n  requiredArgs(2, arguments);\n  return toDate(dateLeft).getTime() - toDate(dateRight).getTime();\n}","import { millisecondsInMinute } from \"../constants/index.js\";\nimport differenceInMilliseconds from \"../differenceInMilliseconds/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport { getRoundingMethod } from \"../_lib/roundingMethods/index.js\";\n/**\n * @name differenceInMinutes\n * @category Minute Helpers\n * @summary Get the number of minutes between the given dates.\n *\n * @description\n * Get the signed number of full (rounded towards 0) minutes between the given dates.\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @param {Object} [options] - an object with options.\n * @param {String} [options.roundingMethod='trunc'] - a rounding method (`ceil`, `floor`, `round` or `trunc`)\n * @returns {Number} the number of minutes\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many minutes are between 2 July 2014 12:07:59 and 2 July 2014 12:20:00?\n * const result = differenceInMinutes(\n *   new Date(2014, 6, 2, 12, 20, 0),\n *   new Date(2014, 6, 2, 12, 7, 59)\n * )\n * //=> 12\n *\n * @example\n * // How many minutes are between 10:01:59 and 10:00:00\n * const result = differenceInMinutes(\n *   new Date(2000, 0, 1, 10, 0, 0),\n *   new Date(2000, 0, 1, 10, 1, 59)\n * )\n * //=> -1\n */\nexport default function differenceInMinutes(dateLeft, dateRight, options) {\n  requiredArgs(2, arguments);\n  var diff = differenceInMilliseconds(dateLeft, dateRight) / millisecondsInMinute;\n  return getRoundingMethod(options === null || options === void 0 ? void 0 : options.roundingMethod)(diff);\n}","import toDate from \"../toDate/index.js\";\nimport differenceInCalendarMonths from \"../differenceInCalendarMonths/index.js\";\nimport compareAsc from \"../compareAsc/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport isLastDayOfMonth from \"../isLastDayOfMonth/index.js\";\n/**\n * @name differenceInMonths\n * @category Month Helpers\n * @summary Get the number of full months between the given dates.\n *\n * @description\n * Get the number of full months between the given dates using trunc as a default rounding method.\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @returns {Number} the number of full months\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many full months are between 31 January 2014 and 1 September 2014?\n * const result = differenceInMonths(new Date(2014, 8, 1), new Date(2014, 0, 31))\n * //=> 7\n */\nexport default function differenceInMonths(dirtyDateLeft, dirtyDateRight) {\n  requiredArgs(2, arguments);\n  var dateLeft = toDate(dirtyDateLeft);\n  var dateRight = toDate(dirtyDateRight);\n  var sign = compareAsc(dateLeft, dateRight);\n  var difference = Math.abs(differenceInCalendarMonths(dateLeft, dateRight));\n  var result;\n\n  // Check for the difference of less than month\n  if (difference < 1) {\n    result = 0;\n  } else {\n    if (dateLeft.getMonth() === 1 && dateLeft.getDate() > 27) {\n      // This will check if the date is end of Feb and assign a higher end of month date\n      // to compare it with Jan\n      dateLeft.setDate(30);\n    }\n    dateLeft.setMonth(dateLeft.getMonth() - sign * difference);\n\n    // Math.abs(diff in full months - diff in calendar months) === 1 if last calendar month is not full\n    // If so, result must be decreased by 1 in absolute value\n    var isLastMonthNotFull = compareAsc(dateLeft, dateRight) === -sign;\n\n    // Check for cases of one full calendar month\n    if (isLastDayOfMonth(toDate(dirtyDateLeft)) && difference === 1 && compareAsc(dirtyDateLeft, dateRight) === 1) {\n      isLastMonthNotFull = false;\n    }\n    result = sign * (difference - Number(isLastMonthNotFull));\n  }\n\n  // Prevent negative zero\n  return result === 0 ? 0 : result;\n}","import toDate from \"../toDate/index.js\";\nimport endOfDay from \"../endOfDay/index.js\";\nimport endOfMonth from \"../endOfMonth/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isLastDayOfMonth\n * @category Month Helpers\n * @summary Is the given date the last day of a month?\n *\n * @description\n * Is the given date the last day of a month?\n *\n * @param {Date|Number} date - the date to check\n * @returns {Boolean} the date is the last day of a month\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Is 28 February 2014 the last day of a month?\n * const result = isLastDayOfMonth(new Date(2014, 1, 28))\n * //=> true\n */\nexport default function isLastDayOfMonth(dirtyDate) {\n  requiredArgs(1, arguments);\n  var date = toDate(dirtyDate);\n  return endOfDay(date).getTime() === endOfMonth(date).getTime();\n}","import differenceInMilliseconds from \"../differenceInMilliseconds/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport { getRoundingMethod } from \"../_lib/roundingMethods/index.js\";\n/**\n * @name differenceInSeconds\n * @category Second Helpers\n * @summary Get the number of seconds between the given dates.\n *\n * @description\n * Get the number of seconds between the given dates.\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @param {Object} [options] - an object with options.\n * @param {String} [options.roundingMethod='trunc'] - a rounding method (`ceil`, `floor`, `round` or `trunc`)\n * @returns {Number} the number of seconds\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many seconds are between\n * // 2 July 2014 12:30:07.999 and 2 July 2014 12:30:20.000?\n * const result = differenceInSeconds(\n *   new Date(2014, 6, 2, 12, 30, 20, 0),\n *   new Date(2014, 6, 2, 12, 30, 7, 999)\n * )\n * //=> 12\n */\nexport default function differenceInSeconds(dateLeft, dateRight, options) {\n  requiredArgs(2, arguments);\n  var diff = differenceInMilliseconds(dateLeft, dateRight) / 1000;\n  return getRoundingMethod(options === null || options === void 0 ? void 0 : options.roundingMethod)(diff);\n}","import toDate from \"../toDate/index.js\";\nimport differenceInCalendarYears from \"../differenceInCalendarYears/index.js\";\nimport compareAsc from \"../compareAsc/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name differenceInYears\n * @category Year Helpers\n * @summary Get the number of full years between the given dates.\n *\n * @description\n * Get the number of full years between the given dates.\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @returns {Number} the number of full years\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many full years are between 31 December 2013 and 11 February 2015?\n * const result = differenceInYears(new Date(2015, 1, 11), new Date(2013, 11, 31))\n * //=> 1\n */\nexport default function differenceInYears(dirtyDateLeft, dirtyDateRight) {\n  requiredArgs(2, arguments);\n  var dateLeft = toDate(dirtyDateLeft);\n  var dateRight = toDate(dirtyDateRight);\n  var sign = compareAsc(dateLeft, dateRight);\n  var difference = Math.abs(differenceInCalendarYears(dateLeft, dateRight));\n\n  // Set both dates to a valid leap year for accurate comparison when dealing\n  // with leap days\n  dateLeft.setFullYear(1584);\n  dateRight.setFullYear(1584);\n\n  // Math.abs(diff in full years - diff in calendar years) === 1 if last calendar year is not full\n  // If so, result must be decreased by 1 in absolute value\n  var isLastYearNotFull = compareAsc(dateLeft, dateRight) === -sign;\n  var result = sign * (difference - Number(isLastYearNotFull));\n  // Prevent negative zero\n  return result === 0 ? 0 : result;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name differenceInCalendarYears\n * @category Year Helpers\n * @summary Get the number of calendar years between the given dates.\n *\n * @description\n * Get the number of calendar years between the given dates.\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @returns {Number} the number of calendar years\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many calendar years are between 31 December 2013 and 11 February 2015?\n * const result = differenceInCalendarYears(\n *   new Date(2015, 1, 11),\n *   new Date(2013, 11, 31)\n * )\n * //=> 2\n */\nexport default function differenceInCalendarYears(dirtyDateLeft, dirtyDateRight) {\n  requiredArgs(2, arguments);\n  var dateLeft = toDate(dirtyDateLeft);\n  var dateRight = toDate(dirtyDateRight);\n  return dateLeft.getFullYear() - dateRight.getFullYear();\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name eachDayOfInterval\n * @category Interval Helpers\n * @summary Return the array of dates within the specified time interval.\n *\n * @description\n * Return the array of dates within the specified time interval.\n *\n * @param {Interval} interval - the interval. See [Interval]{@link https://date-fns.org/docs/Interval}\n * @param {Object} [options] - an object with options.\n * @param {Number} [options.step=1] - the step to increment by. The value should be more than 1.\n * @returns {Date[]} the array with starts of days from the day of the interval start to the day of the interval end\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.step` must be a number greater than 1\n * @throws {RangeError} The start of an interval cannot be after its end\n * @throws {RangeError} Date in interval cannot be `Invalid Date`\n *\n * @example\n * // Each day between 6 October 2014 and 10 October 2014:\n * const result = eachDayOfInterval({\n *   start: new Date(2014, 9, 6),\n *   end: new Date(2014, 9, 10)\n * })\n * //=> [\n * //   Mon Oct 06 2014 00:00:00,\n * //   Tue Oct 07 2014 00:00:00,\n * //   Wed Oct 08 2014 00:00:00,\n * //   Thu Oct 09 2014 00:00:00,\n * //   Fri Oct 10 2014 00:00:00\n * // ]\n */\nexport default function eachDayOfInterval(dirtyInterval, options) {\n  var _options$step;\n  requiredArgs(1, arguments);\n  var interval = dirtyInterval || {};\n  var startDate = toDate(interval.start);\n  var endDate = toDate(interval.end);\n  var endTime = endDate.getTime();\n\n  // Throw an exception if start date is after end date or if any date is `Invalid Date`\n  if (!(startDate.getTime() <= endTime)) {\n    throw new RangeError('Invalid interval');\n  }\n  var dates = [];\n  var currentDate = startDate;\n  currentDate.setHours(0, 0, 0, 0);\n  var step = Number((_options$step = options === null || options === void 0 ? void 0 : options.step) !== null && _options$step !== void 0 ? _options$step : 1);\n  if (step < 1 || isNaN(step)) throw new RangeError('`options.step` must be a number greater than 1');\n  while (currentDate.getTime() <= endTime) {\n    dates.push(toDate(currentDate));\n    currentDate.setDate(currentDate.getDate() + step);\n    currentDate.setHours(0, 0, 0, 0);\n  }\n  return dates;\n}","import addWeeks from \"../addWeeks/index.js\";\nimport startOfWeek from \"../startOfWeek/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name eachWeekOfInterval\n * @category Interval Helpers\n * @summary Return the array of weeks within the specified time interval.\n *\n * @description\n * Return the array of weeks within the specified time interval.\n *\n * @param {Interval} interval - the interval. See [Interval]{@link https://date-fns.org/docs/Interval}\n * @param {Object} [options] - an object with options.\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @returns {Date[]} the array with starts of weeks from the week of the interval start to the week of the interval end\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.weekStartsOn` must be 0, 1, ..., 6\n * @throws {RangeError} The start of an interval cannot be after its end\n * @throws {RangeError} Date in interval cannot be `Invalid Date`\n *\n * @example\n * // Each week within interval 6 October 2014 - 23 November 2014:\n * const result = eachWeekOfInterval({\n *   start: new Date(2014, 9, 6),\n *   end: new Date(2014, 10, 23)\n * })\n * //=> [\n * //   Sun Oct 05 2014 00:00:00,\n * //   Sun Oct 12 2014 00:00:00,\n * //   Sun Oct 19 2014 00:00:00,\n * //   Sun Oct 26 2014 00:00:00,\n * //   Sun Nov 02 2014 00:00:00,\n * //   Sun Nov 09 2014 00:00:00,\n * //   Sun Nov 16 2014 00:00:00,\n * //   Sun Nov 23 2014 00:00:00\n * // ]\n */\nexport default function eachWeekOfInterval(dirtyInterval, options) {\n  requiredArgs(1, arguments);\n  var interval = dirtyInterval || {};\n  var startDate = toDate(interval.start);\n  var endDate = toDate(interval.end);\n  var endTime = endDate.getTime();\n\n  // Throw an exception if start date is after end date or if any date is `Invalid Date`\n  if (!(startDate.getTime() <= endTime)) {\n    throw new RangeError('Invalid interval');\n  }\n  var startDateWeek = startOfWeek(startDate, options);\n  var endDateWeek = startOfWeek(endDate, options);\n\n  // Some timezones switch DST at midnight, making start of day unreliable in these timezones, 3pm is a safe bet\n  startDateWeek.setHours(15);\n  endDateWeek.setHours(15);\n  endTime = endDateWeek.getTime();\n  var weeks = [];\n  var currentWeek = startDateWeek;\n  while (currentWeek.getTime() <= endTime) {\n    currentWeek.setHours(0);\n    weeks.push(toDate(currentWeek));\n    currentWeek = addWeeks(currentWeek, 1);\n    currentWeek.setHours(15);\n  }\n  return weeks;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name endOfDay\n * @category Day Helpers\n * @summary Return the end of a day for the given date.\n *\n * @description\n * Return the end of a day for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the end of a day\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The end of a day for 2 September 2014 11:55:00:\n * const result = endOfDay(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 02 2014 23:59:59.999\n */\nexport default function endOfDay(dirtyDate) {\n  requiredArgs(1, arguments);\n  var date = toDate(dirtyDate);\n  date.setHours(23, 59, 59, 999);\n  return date;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name endOfMonth\n * @category Month Helpers\n * @summary Return the end of a month for the given date.\n *\n * @description\n * Return the end of a month for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the end of a month\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The end of a month for 2 September 2014 11:55:00:\n * const result = endOfMonth(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 30 2014 23:59:59.999\n */\nexport default function endOfMonth(dirtyDate) {\n  requiredArgs(1, arguments);\n  var date = toDate(dirtyDate);\n  var month = date.getMonth();\n  date.setFullYear(date.getFullYear(), month + 1, 0);\n  date.setHours(23, 59, 59, 999);\n  return date;\n}","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nexport default function startOfUTCISOWeek(dirtyDate) {\n  requiredArgs(1, arguments);\n  var weekStartsOn = 1;\n  var date = toDate(dirtyDate);\n  var day = date.getUTCDay();\n  var diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;\n  date.setUTCDate(date.getUTCDate() - diff);\n  date.setUTCHours(0, 0, 0, 0);\n  return date;\n}","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nimport startOfUTCISOWeek from \"../startOfUTCISOWeek/index.js\";\nexport default function getUTCISOWeekYear(dirtyDate) {\n  requiredArgs(1, arguments);\n  var date = toDate(dirtyDate);\n  var year = date.getUTCFullYear();\n  var fourthOfJanuaryOfNextYear = new Date(0);\n  fourthOfJanuaryOfNextYear.setUTCFullYear(year + 1, 0, 4);\n  fourthOfJanuaryOfNextYear.setUTCHours(0, 0, 0, 0);\n  var startOfNextYear = startOfUTCISOWeek(fourthOfJanuaryOfNextYear);\n  var fourthOfJanuaryOfThisYear = new Date(0);\n  fourthOfJanuaryOfThisYear.setUTCFullYear(year, 0, 4);\n  fourthOfJanuaryOfThisYear.setUTCHours(0, 0, 0, 0);\n  var startOfThisYear = startOfUTCISOWeek(fourthOfJanuaryOfThisYear);\n  if (date.getTime() >= startOfNextYear.getTime()) {\n    return year + 1;\n  } else if (date.getTime() >= startOfThisYear.getTime()) {\n    return year;\n  } else {\n    return year - 1;\n  }\n}","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nimport toInteger from \"../toInteger/index.js\";\nimport { getDefaultOptions } from \"../defaultOptions/index.js\";\nexport default function startOfUTCWeek(dirtyDate, options) {\n  var _ref, _ref2, _ref3, _options$weekStartsOn, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2;\n  requiredArgs(1, arguments);\n  var defaultOptions = getDefaultOptions();\n  var weekStartsOn = toInteger((_ref = (_ref2 = (_ref3 = (_options$weekStartsOn = options === null || options === void 0 ? void 0 : options.weekStartsOn) !== null && _options$weekStartsOn !== void 0 ? _options$weekStartsOn : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.weekStartsOn) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions.weekStartsOn) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.weekStartsOn) !== null && _ref !== void 0 ? _ref : 0);\n\n  // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n  if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n    throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n  }\n  var date = toDate(dirtyDate);\n  var day = date.getUTCDay();\n  var diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;\n  date.setUTCDate(date.getUTCDate() - diff);\n  date.setUTCHours(0, 0, 0, 0);\n  return date;\n}","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nimport startOfUTCWeek from \"../startOfUTCWeek/index.js\";\nimport toInteger from \"../toInteger/index.js\";\nimport { getDefaultOptions } from \"../defaultOptions/index.js\";\nexport default function getUTCWeekYear(dirtyDate, options) {\n  var _ref, _ref2, _ref3, _options$firstWeekCon, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2;\n  requiredArgs(1, arguments);\n  var date = toDate(dirtyDate);\n  var year = date.getUTCFullYear();\n  var defaultOptions = getDefaultOptions();\n  var firstWeekContainsDate = toInteger((_ref = (_ref2 = (_ref3 = (_options$firstWeekCon = options === null || options === void 0 ? void 0 : options.firstWeekContainsDate) !== null && _options$firstWeekCon !== void 0 ? _options$firstWeekCon : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.firstWeekContainsDate) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions.firstWeekContainsDate) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.firstWeekContainsDate) !== null && _ref !== void 0 ? _ref : 1);\n\n  // Test if weekStartsOn is between 1 and 7 _and_ is not NaN\n  if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) {\n    throw new RangeError('firstWeekContainsDate must be between 1 and 7 inclusively');\n  }\n  var firstWeekOfNextYear = new Date(0);\n  firstWeekOfNextYear.setUTCFullYear(year + 1, 0, firstWeekContainsDate);\n  firstWeekOfNextYear.setUTCHours(0, 0, 0, 0);\n  var startOfNextYear = startOfUTCWeek(firstWeekOfNextYear, options);\n  var firstWeekOfThisYear = new Date(0);\n  firstWeekOfThisYear.setUTCFullYear(year, 0, firstWeekContainsDate);\n  firstWeekOfThisYear.setUTCHours(0, 0, 0, 0);\n  var startOfThisYear = startOfUTCWeek(firstWeekOfThisYear, options);\n  if (date.getTime() >= startOfNextYear.getTime()) {\n    return year + 1;\n  } else if (date.getTime() >= startOfThisYear.getTime()) {\n    return year;\n  } else {\n    return year - 1;\n  }\n}","export default function addLeadingZeros(number, targetLength) {\n  var sign = number < 0 ? '-' : '';\n  var output = Math.abs(number).toString();\n  while (output.length < targetLength) {\n    output = '0' + output;\n  }\n  return sign + output;\n}","import addLeadingZeros from \"../../addLeadingZeros/index.js\";\n/*\n * |     | Unit                           |     | Unit                           |\n * |-----|--------------------------------|-----|--------------------------------|\n * |  a  | AM, PM                         |  A* |                                |\n * |  d  | Day of month                   |  D  |                                |\n * |  h  | Hour [1-12]                    |  H  | Hour [0-23]                    |\n * |  m  | Minute                         |  M  | Month                          |\n * |  s  | Second                         |  S  | Fraction of second             |\n * |  y  | Year (abs)                     |  Y  |                                |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n */\nvar formatters = {\n  // Year\n  y: function y(date, token) {\n    // From http://www.unicode.org/reports/tr35/tr35-31/tr35-dates.html#Date_Format_tokens\n    // | Year     |     y | yy |   yyy |  yyyy | yyyyy |\n    // |----------|-------|----|-------|-------|-------|\n    // | AD 1     |     1 | 01 |   001 |  0001 | 00001 |\n    // | AD 12    |    12 | 12 |   012 |  0012 | 00012 |\n    // | AD 123   |   123 | 23 |   123 |  0123 | 00123 |\n    // | AD 1234  |  1234 | 34 |  1234 |  1234 | 01234 |\n    // | AD 12345 | 12345 | 45 | 12345 | 12345 | 12345 |\n\n    var signedYear = date.getUTCFullYear();\n    // Returns 1 for 1 BC (which is year 0 in JavaScript)\n    var year = signedYear > 0 ? signedYear : 1 - signedYear;\n    return addLeadingZeros(token === 'yy' ? year % 100 : year, token.length);\n  },\n  // Month\n  M: function M(date, token) {\n    var month = date.getUTCMonth();\n    return token === 'M' ? String(month + 1) : addLeadingZeros(month + 1, 2);\n  },\n  // Day of the month\n  d: function d(date, token) {\n    return addLeadingZeros(date.getUTCDate(), token.length);\n  },\n  // AM or PM\n  a: function a(date, token) {\n    var dayPeriodEnumValue = date.getUTCHours() / 12 >= 1 ? 'pm' : 'am';\n    switch (token) {\n      case 'a':\n      case 'aa':\n        return dayPeriodEnumValue.toUpperCase();\n      case 'aaa':\n        return dayPeriodEnumValue;\n      case 'aaaaa':\n        return dayPeriodEnumValue[0];\n      case 'aaaa':\n      default:\n        return dayPeriodEnumValue === 'am' ? 'a.m.' : 'p.m.';\n    }\n  },\n  // Hour [1-12]\n  h: function h(date, token) {\n    return addLeadingZeros(date.getUTCHours() % 12 || 12, token.length);\n  },\n  // Hour [0-23]\n  H: function H(date, token) {\n    return addLeadingZeros(date.getUTCHours(), token.length);\n  },\n  // Minute\n  m: function m(date, token) {\n    return addLeadingZeros(date.getUTCMinutes(), token.length);\n  },\n  // Second\n  s: function s(date, token) {\n    return addLeadingZeros(date.getUTCSeconds(), token.length);\n  },\n  // Fraction of second\n  S: function S(date, token) {\n    var numberOfDigits = token.length;\n    var milliseconds = date.getUTCMilliseconds();\n    var fractionalSeconds = Math.floor(milliseconds * Math.pow(10, numberOfDigits - 3));\n    return addLeadingZeros(fractionalSeconds, token.length);\n  }\n};\nexport default formatters;","import getUTCDayOfYear from \"../../../_lib/getUTCDayOfYear/index.js\";\nimport getUTCISOWeek from \"../../../_lib/getUTCISOWeek/index.js\";\nimport getUTCISOWeekYear from \"../../../_lib/getUTCISOWeekYear/index.js\";\nimport getUTCWeek from \"../../../_lib/getUTCWeek/index.js\";\nimport getUTCWeekYear from \"../../../_lib/getUTCWeekYear/index.js\";\nimport addLeadingZeros from \"../../addLeadingZeros/index.js\";\nimport lightFormatters from \"../lightFormatters/index.js\";\nvar dayPeriodEnum = {\n  am: 'am',\n  pm: 'pm',\n  midnight: 'midnight',\n  noon: 'noon',\n  morning: 'morning',\n  afternoon: 'afternoon',\n  evening: 'evening',\n  night: 'night'\n};\n/*\n * |     | Unit                           |     | Unit                           |\n * |-----|--------------------------------|-----|--------------------------------|\n * |  a  | AM, PM                         |  A* | Milliseconds in day            |\n * |  b  | AM, PM, noon, midnight         |  B  | Flexible day period            |\n * |  c  | Stand-alone local day of week  |  C* | Localized hour w/ day period   |\n * |  d  | Day of month                   |  D  | Day of year                    |\n * |  e  | Local day of week              |  E  | Day of week                    |\n * |  f  |                                |  F* | Day of week in month           |\n * |  g* | Modified Julian day            |  G  | Era                            |\n * |  h  | Hour [1-12]                    |  H  | Hour [0-23]                    |\n * |  i! | ISO day of week                |  I! | ISO week of year               |\n * |  j* | Localized hour w/ day period   |  J* | Localized hour w/o day period  |\n * |  k  | Hour [1-24]                    |  K  | Hour [0-11]                    |\n * |  l* | (deprecated)                   |  L  | Stand-alone month              |\n * |  m  | Minute                         |  M  | Month                          |\n * |  n  |                                |  N  |                                |\n * |  o! | Ordinal number modifier        |  O  | Timezone (GMT)                 |\n * |  p! | Long localized time            |  P! | Long localized date            |\n * |  q  | Stand-alone quarter            |  Q  | Quarter                        |\n * |  r* | Related Gregorian year         |  R! | ISO week-numbering year        |\n * |  s  | Second                         |  S  | Fraction of second             |\n * |  t! | Seconds timestamp              |  T! | Milliseconds timestamp         |\n * |  u  | Extended year                  |  U* | Cyclic year                    |\n * |  v* | Timezone (generic non-locat.)  |  V* | Timezone (location)            |\n * |  w  | Local week of year             |  W* | Week of month                  |\n * |  x  | Timezone (ISO-8601 w/o Z)      |  X  | Timezone (ISO-8601)            |\n * |  y  | Year (abs)                     |  Y  | Local week-numbering year      |\n * |  z  | Timezone (specific non-locat.) |  Z* | Timezone (aliases)             |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n *\n * Letters marked by ! are non-standard, but implemented by date-fns:\n * - `o` modifies the previous token to turn it into an ordinal (see `format` docs)\n * - `i` is ISO day of week. For `i` and `ii` is returns numeric ISO week days,\n *   i.e. 7 for Sunday, 1 for Monday, etc.\n * - `I` is ISO week of year, as opposed to `w` which is local week of year.\n * - `R` is ISO week-numbering year, as opposed to `Y` which is local week-numbering year.\n *   `R` is supposed to be used in conjunction with `I` and `i`\n *   for universal ISO week-numbering date, whereas\n *   `Y` is supposed to be used in conjunction with `w` and `e`\n *   for week-numbering date specific to the locale.\n * - `P` is long localized date format\n * - `p` is long localized time format\n */\n\nvar formatters = {\n  // Era\n  G: function G(date, token, localize) {\n    var era = date.getUTCFullYear() > 0 ? 1 : 0;\n    switch (token) {\n      // AD, BC\n      case 'G':\n      case 'GG':\n      case 'GGG':\n        return localize.era(era, {\n          width: 'abbreviated'\n        });\n      // A, B\n      case 'GGGGG':\n        return localize.era(era, {\n          width: 'narrow'\n        });\n      // Anno Domini, Before Christ\n      case 'GGGG':\n      default:\n        return localize.era(era, {\n          width: 'wide'\n        });\n    }\n  },\n  // Year\n  y: function y(date, token, localize) {\n    // Ordinal number\n    if (token === 'yo') {\n      var signedYear = date.getUTCFullYear();\n      // Returns 1 for 1 BC (which is year 0 in JavaScript)\n      var year = signedYear > 0 ? signedYear : 1 - signedYear;\n      return localize.ordinalNumber(year, {\n        unit: 'year'\n      });\n    }\n    return lightFormatters.y(date, token);\n  },\n  // Local week-numbering year\n  Y: function Y(date, token, localize, options) {\n    var signedWeekYear = getUTCWeekYear(date, options);\n    // Returns 1 for 1 BC (which is year 0 in JavaScript)\n    var weekYear = signedWeekYear > 0 ? signedWeekYear : 1 - signedWeekYear;\n\n    // Two digit year\n    if (token === 'YY') {\n      var twoDigitYear = weekYear % 100;\n      return addLeadingZeros(twoDigitYear, 2);\n    }\n\n    // Ordinal number\n    if (token === 'Yo') {\n      return localize.ordinalNumber(weekYear, {\n        unit: 'year'\n      });\n    }\n\n    // Padding\n    return addLeadingZeros(weekYear, token.length);\n  },\n  // ISO week-numbering year\n  R: function R(date, token) {\n    var isoWeekYear = getUTCISOWeekYear(date);\n\n    // Padding\n    return addLeadingZeros(isoWeekYear, token.length);\n  },\n  // Extended year. This is a single number designating the year of this calendar system.\n  // The main difference between `y` and `u` localizers are B.C. years:\n  // | Year | `y` | `u` |\n  // |------|-----|-----|\n  // | AC 1 |   1 |   1 |\n  // | BC 1 |   1 |   0 |\n  // | BC 2 |   2 |  -1 |\n  // Also `yy` always returns the last two digits of a year,\n  // while `uu` pads single digit years to 2 characters and returns other years unchanged.\n  u: function u(date, token) {\n    var year = date.getUTCFullYear();\n    return addLeadingZeros(year, token.length);\n  },\n  // Quarter\n  Q: function Q(date, token, localize) {\n    var quarter = Math.ceil((date.getUTCMonth() + 1) / 3);\n    switch (token) {\n      // 1, 2, 3, 4\n      case 'Q':\n        return String(quarter);\n      // 01, 02, 03, 04\n      case 'QQ':\n        return addLeadingZeros(quarter, 2);\n      // 1st, 2nd, 3rd, 4th\n      case 'Qo':\n        return localize.ordinalNumber(quarter, {\n          unit: 'quarter'\n        });\n      // Q1, Q2, Q3, Q4\n      case 'QQQ':\n        return localize.quarter(quarter, {\n          width: 'abbreviated',\n          context: 'formatting'\n        });\n      // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n      case 'QQQQQ':\n        return localize.quarter(quarter, {\n          width: 'narrow',\n          context: 'formatting'\n        });\n      // 1st quarter, 2nd quarter, ...\n      case 'QQQQ':\n      default:\n        return localize.quarter(quarter, {\n          width: 'wide',\n          context: 'formatting'\n        });\n    }\n  },\n  // Stand-alone quarter\n  q: function q(date, token, localize) {\n    var quarter = Math.ceil((date.getUTCMonth() + 1) / 3);\n    switch (token) {\n      // 1, 2, 3, 4\n      case 'q':\n        return String(quarter);\n      // 01, 02, 03, 04\n      case 'qq':\n        return addLeadingZeros(quarter, 2);\n      // 1st, 2nd, 3rd, 4th\n      case 'qo':\n        return localize.ordinalNumber(quarter, {\n          unit: 'quarter'\n        });\n      // Q1, Q2, Q3, Q4\n      case 'qqq':\n        return localize.quarter(quarter, {\n          width: 'abbreviated',\n          context: 'standalone'\n        });\n      // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n      case 'qqqqq':\n        return localize.quarter(quarter, {\n          width: 'narrow',\n          context: 'standalone'\n        });\n      // 1st quarter, 2nd quarter, ...\n      case 'qqqq':\n      default:\n        return localize.quarter(quarter, {\n          width: 'wide',\n          context: 'standalone'\n        });\n    }\n  },\n  // Month\n  M: function M(date, token, localize) {\n    var month = date.getUTCMonth();\n    switch (token) {\n      case 'M':\n      case 'MM':\n        return lightFormatters.M(date, token);\n      // 1st, 2nd, ..., 12th\n      case 'Mo':\n        return localize.ordinalNumber(month + 1, {\n          unit: 'month'\n        });\n      // Jan, Feb, ..., Dec\n      case 'MMM':\n        return localize.month(month, {\n          width: 'abbreviated',\n          context: 'formatting'\n        });\n      // J, F, ..., D\n      case 'MMMMM':\n        return localize.month(month, {\n          width: 'narrow',\n          context: 'formatting'\n        });\n      // January, February, ..., December\n      case 'MMMM':\n      default:\n        return localize.month(month, {\n          width: 'wide',\n          context: 'formatting'\n        });\n    }\n  },\n  // Stand-alone month\n  L: function L(date, token, localize) {\n    var month = date.getUTCMonth();\n    switch (token) {\n      // 1, 2, ..., 12\n      case 'L':\n        return String(month + 1);\n      // 01, 02, ..., 12\n      case 'LL':\n        return addLeadingZeros(month + 1, 2);\n      // 1st, 2nd, ..., 12th\n      case 'Lo':\n        return localize.ordinalNumber(month + 1, {\n          unit: 'month'\n        });\n      // Jan, Feb, ..., Dec\n      case 'LLL':\n        return localize.month(month, {\n          width: 'abbreviated',\n          context: 'standalone'\n        });\n      // J, F, ..., D\n      case 'LLLLL':\n        return localize.month(month, {\n          width: 'narrow',\n          context: 'standalone'\n        });\n      // January, February, ..., December\n      case 'LLLL':\n      default:\n        return localize.month(month, {\n          width: 'wide',\n          context: 'standalone'\n        });\n    }\n  },\n  // Local week of year\n  w: function w(date, token, localize, options) {\n    var week = getUTCWeek(date, options);\n    if (token === 'wo') {\n      return localize.ordinalNumber(week, {\n        unit: 'week'\n      });\n    }\n    return addLeadingZeros(week, token.length);\n  },\n  // ISO week of year\n  I: function I(date, token, localize) {\n    var isoWeek = getUTCISOWeek(date);\n    if (token === 'Io') {\n      return localize.ordinalNumber(isoWeek, {\n        unit: 'week'\n      });\n    }\n    return addLeadingZeros(isoWeek, token.length);\n  },\n  // Day of the month\n  d: function d(date, token, localize) {\n    if (token === 'do') {\n      return localize.ordinalNumber(date.getUTCDate(), {\n        unit: 'date'\n      });\n    }\n    return lightFormatters.d(date, token);\n  },\n  // Day of year\n  D: function D(date, token, localize) {\n    var dayOfYear = getUTCDayOfYear(date);\n    if (token === 'Do') {\n      return localize.ordinalNumber(dayOfYear, {\n        unit: 'dayOfYear'\n      });\n    }\n    return addLeadingZeros(dayOfYear, token.length);\n  },\n  // Day of week\n  E: function E(date, token, localize) {\n    var dayOfWeek = date.getUTCDay();\n    switch (token) {\n      // Tue\n      case 'E':\n      case 'EE':\n      case 'EEE':\n        return localize.day(dayOfWeek, {\n          width: 'abbreviated',\n          context: 'formatting'\n        });\n      // T\n      case 'EEEEE':\n        return localize.day(dayOfWeek, {\n          width: 'narrow',\n          context: 'formatting'\n        });\n      // Tu\n      case 'EEEEEE':\n        return localize.day(dayOfWeek, {\n          width: 'short',\n          context: 'formatting'\n        });\n      // Tuesday\n      case 'EEEE':\n      default:\n        return localize.day(dayOfWeek, {\n          width: 'wide',\n          context: 'formatting'\n        });\n    }\n  },\n  // Local day of week\n  e: function e(date, token, localize, options) {\n    var dayOfWeek = date.getUTCDay();\n    var localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7;\n    switch (token) {\n      // Numerical value (Nth day of week with current locale or weekStartsOn)\n      case 'e':\n        return String(localDayOfWeek);\n      // Padded numerical value\n      case 'ee':\n        return addLeadingZeros(localDayOfWeek, 2);\n      // 1st, 2nd, ..., 7th\n      case 'eo':\n        return localize.ordinalNumber(localDayOfWeek, {\n          unit: 'day'\n        });\n      case 'eee':\n        return localize.day(dayOfWeek, {\n          width: 'abbreviated',\n          context: 'formatting'\n        });\n      // T\n      case 'eeeee':\n        return localize.day(dayOfWeek, {\n          width: 'narrow',\n          context: 'formatting'\n        });\n      // Tu\n      case 'eeeeee':\n        return localize.day(dayOfWeek, {\n          width: 'short',\n          context: 'formatting'\n        });\n      // Tuesday\n      case 'eeee':\n      default:\n        return localize.day(dayOfWeek, {\n          width: 'wide',\n          context: 'formatting'\n        });\n    }\n  },\n  // Stand-alone local day of week\n  c: function c(date, token, localize, options) {\n    var dayOfWeek = date.getUTCDay();\n    var localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7;\n    switch (token) {\n      // Numerical value (same as in `e`)\n      case 'c':\n        return String(localDayOfWeek);\n      // Padded numerical value\n      case 'cc':\n        return addLeadingZeros(localDayOfWeek, token.length);\n      // 1st, 2nd, ..., 7th\n      case 'co':\n        return localize.ordinalNumber(localDayOfWeek, {\n          unit: 'day'\n        });\n      case 'ccc':\n        return localize.day(dayOfWeek, {\n          width: 'abbreviated',\n          context: 'standalone'\n        });\n      // T\n      case 'ccccc':\n        return localize.day(dayOfWeek, {\n          width: 'narrow',\n          context: 'standalone'\n        });\n      // Tu\n      case 'cccccc':\n        return localize.day(dayOfWeek, {\n          width: 'short',\n          context: 'standalone'\n        });\n      // Tuesday\n      case 'cccc':\n      default:\n        return localize.day(dayOfWeek, {\n          width: 'wide',\n          context: 'standalone'\n        });\n    }\n  },\n  // ISO day of week\n  i: function i(date, token, localize) {\n    var dayOfWeek = date.getUTCDay();\n    var isoDayOfWeek = dayOfWeek === 0 ? 7 : dayOfWeek;\n    switch (token) {\n      // 2\n      case 'i':\n        return String(isoDayOfWeek);\n      // 02\n      case 'ii':\n        return addLeadingZeros(isoDayOfWeek, token.length);\n      // 2nd\n      case 'io':\n        return localize.ordinalNumber(isoDayOfWeek, {\n          unit: 'day'\n        });\n      // Tue\n      case 'iii':\n        return localize.day(dayOfWeek, {\n          width: 'abbreviated',\n          context: 'formatting'\n        });\n      // T\n      case 'iiiii':\n        return localize.day(dayOfWeek, {\n          width: 'narrow',\n          context: 'formatting'\n        });\n      // Tu\n      case 'iiiiii':\n        return localize.day(dayOfWeek, {\n          width: 'short',\n          context: 'formatting'\n        });\n      // Tuesday\n      case 'iiii':\n      default:\n        return localize.day(dayOfWeek, {\n          width: 'wide',\n          context: 'formatting'\n        });\n    }\n  },\n  // AM or PM\n  a: function a(date, token, localize) {\n    var hours = date.getUTCHours();\n    var dayPeriodEnumValue = hours / 12 >= 1 ? 'pm' : 'am';\n    switch (token) {\n      case 'a':\n      case 'aa':\n        return localize.dayPeriod(dayPeriodEnumValue, {\n          width: 'abbreviated',\n          context: 'formatting'\n        });\n      case 'aaa':\n        return localize.dayPeriod(dayPeriodEnumValue, {\n          width: 'abbreviated',\n          context: 'formatting'\n        }).toLowerCase();\n      case 'aaaaa':\n        return localize.dayPeriod(dayPeriodEnumValue, {\n          width: 'narrow',\n          context: 'formatting'\n        });\n      case 'aaaa':\n      default:\n        return localize.dayPeriod(dayPeriodEnumValue, {\n          width: 'wide',\n          context: 'formatting'\n        });\n    }\n  },\n  // AM, PM, midnight, noon\n  b: function b(date, token, localize) {\n    var hours = date.getUTCHours();\n    var dayPeriodEnumValue;\n    if (hours === 12) {\n      dayPeriodEnumValue = dayPeriodEnum.noon;\n    } else if (hours === 0) {\n      dayPeriodEnumValue = dayPeriodEnum.midnight;\n    } else {\n      dayPeriodEnumValue = hours / 12 >= 1 ? 'pm' : 'am';\n    }\n    switch (token) {\n      case 'b':\n      case 'bb':\n        return localize.dayPeriod(dayPeriodEnumValue, {\n          width: 'abbreviated',\n          context: 'formatting'\n        });\n      case 'bbb':\n        return localize.dayPeriod(dayPeriodEnumValue, {\n          width: 'abbreviated',\n          context: 'formatting'\n        }).toLowerCase();\n      case 'bbbbb':\n        return localize.dayPeriod(dayPeriodEnumValue, {\n          width: 'narrow',\n          context: 'formatting'\n        });\n      case 'bbbb':\n      default:\n        return localize.dayPeriod(dayPeriodEnumValue, {\n          width: 'wide',\n          context: 'formatting'\n        });\n    }\n  },\n  // in the morning, in the afternoon, in the evening, at night\n  B: function B(date, token, localize) {\n    var hours = date.getUTCHours();\n    var dayPeriodEnumValue;\n    if (hours >= 17) {\n      dayPeriodEnumValue = dayPeriodEnum.evening;\n    } else if (hours >= 12) {\n      dayPeriodEnumValue = dayPeriodEnum.afternoon;\n    } else if (hours >= 4) {\n      dayPeriodEnumValue = dayPeriodEnum.morning;\n    } else {\n      dayPeriodEnumValue = dayPeriodEnum.night;\n    }\n    switch (token) {\n      case 'B':\n      case 'BB':\n      case 'BBB':\n        return localize.dayPeriod(dayPeriodEnumValue, {\n          width: 'abbreviated',\n          context: 'formatting'\n        });\n      case 'BBBBB':\n        return localize.dayPeriod(dayPeriodEnumValue, {\n          width: 'narrow',\n          context: 'formatting'\n        });\n      case 'BBBB':\n      default:\n        return localize.dayPeriod(dayPeriodEnumValue, {\n          width: 'wide',\n          context: 'formatting'\n        });\n    }\n  },\n  // Hour [1-12]\n  h: function h(date, token, localize) {\n    if (token === 'ho') {\n      var hours = date.getUTCHours() % 12;\n      if (hours === 0) hours = 12;\n      return localize.ordinalNumber(hours, {\n        unit: 'hour'\n      });\n    }\n    return lightFormatters.h(date, token);\n  },\n  // Hour [0-23]\n  H: function H(date, token, localize) {\n    if (token === 'Ho') {\n      return localize.ordinalNumber(date.getUTCHours(), {\n        unit: 'hour'\n      });\n    }\n    return lightFormatters.H(date, token);\n  },\n  // Hour [0-11]\n  K: function K(date, token, localize) {\n    var hours = date.getUTCHours() % 12;\n    if (token === 'Ko') {\n      return localize.ordinalNumber(hours, {\n        unit: 'hour'\n      });\n    }\n    return addLeadingZeros(hours, token.length);\n  },\n  // Hour [1-24]\n  k: function k(date, token, localize) {\n    var hours = date.getUTCHours();\n    if (hours === 0) hours = 24;\n    if (token === 'ko') {\n      return localize.ordinalNumber(hours, {\n        unit: 'hour'\n      });\n    }\n    return addLeadingZeros(hours, token.length);\n  },\n  // Minute\n  m: function m(date, token, localize) {\n    if (token === 'mo') {\n      return localize.ordinalNumber(date.getUTCMinutes(), {\n        unit: 'minute'\n      });\n    }\n    return lightFormatters.m(date, token);\n  },\n  // Second\n  s: function s(date, token, localize) {\n    if (token === 'so') {\n      return localize.ordinalNumber(date.getUTCSeconds(), {\n        unit: 'second'\n      });\n    }\n    return lightFormatters.s(date, token);\n  },\n  // Fraction of second\n  S: function S(date, token) {\n    return lightFormatters.S(date, token);\n  },\n  // Timezone (ISO-8601. If offset is 0, output is always `'Z'`)\n  X: function X(date, token, _localize, options) {\n    var originalDate = options._originalDate || date;\n    var timezoneOffset = originalDate.getTimezoneOffset();\n    if (timezoneOffset === 0) {\n      return 'Z';\n    }\n    switch (token) {\n      // Hours and optional minutes\n      case 'X':\n        return formatTimezoneWithOptionalMinutes(timezoneOffset);\n\n      // Hours, minutes and optional seconds without `:` delimiter\n      // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n      // so this token always has the same output as `XX`\n      case 'XXXX':\n      case 'XX':\n        // Hours and minutes without `:` delimiter\n        return formatTimezone(timezoneOffset);\n\n      // Hours, minutes and optional seconds with `:` delimiter\n      // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n      // so this token always has the same output as `XXX`\n      case 'XXXXX':\n      case 'XXX': // Hours and minutes with `:` delimiter\n      default:\n        return formatTimezone(timezoneOffset, ':');\n    }\n  },\n  // Timezone (ISO-8601. If offset is 0, output is `'+00:00'` or equivalent)\n  x: function x(date, token, _localize, options) {\n    var originalDate = options._originalDate || date;\n    var timezoneOffset = originalDate.getTimezoneOffset();\n    switch (token) {\n      // Hours and optional minutes\n      case 'x':\n        return formatTimezoneWithOptionalMinutes(timezoneOffset);\n\n      // Hours, minutes and optional seconds without `:` delimiter\n      // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n      // so this token always has the same output as `xx`\n      case 'xxxx':\n      case 'xx':\n        // Hours and minutes without `:` delimiter\n        return formatTimezone(timezoneOffset);\n\n      // Hours, minutes and optional seconds with `:` delimiter\n      // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n      // so this token always has the same output as `xxx`\n      case 'xxxxx':\n      case 'xxx': // Hours and minutes with `:` delimiter\n      default:\n        return formatTimezone(timezoneOffset, ':');\n    }\n  },\n  // Timezone (GMT)\n  O: function O(date, token, _localize, options) {\n    var originalDate = options._originalDate || date;\n    var timezoneOffset = originalDate.getTimezoneOffset();\n    switch (token) {\n      // Short\n      case 'O':\n      case 'OO':\n      case 'OOO':\n        return 'GMT' + formatTimezoneShort(timezoneOffset, ':');\n      // Long\n      case 'OOOO':\n      default:\n        return 'GMT' + formatTimezone(timezoneOffset, ':');\n    }\n  },\n  // Timezone (specific non-location)\n  z: function z(date, token, _localize, options) {\n    var originalDate = options._originalDate || date;\n    var timezoneOffset = originalDate.getTimezoneOffset();\n    switch (token) {\n      // Short\n      case 'z':\n      case 'zz':\n      case 'zzz':\n        return 'GMT' + formatTimezoneShort(timezoneOffset, ':');\n      // Long\n      case 'zzzz':\n      default:\n        return 'GMT' + formatTimezone(timezoneOffset, ':');\n    }\n  },\n  // Seconds timestamp\n  t: function t(date, token, _localize, options) {\n    var originalDate = options._originalDate || date;\n    var timestamp = Math.floor(originalDate.getTime() / 1000);\n    return addLeadingZeros(timestamp, token.length);\n  },\n  // Milliseconds timestamp\n  T: function T(date, token, _localize, options) {\n    var originalDate = options._originalDate || date;\n    var timestamp = originalDate.getTime();\n    return addLeadingZeros(timestamp, token.length);\n  }\n};\nfunction formatTimezoneShort(offset, dirtyDelimiter) {\n  var sign = offset > 0 ? '-' : '+';\n  var absOffset = Math.abs(offset);\n  var hours = Math.floor(absOffset / 60);\n  var minutes = absOffset % 60;\n  if (minutes === 0) {\n    return sign + String(hours);\n  }\n  var delimiter = dirtyDelimiter || '';\n  return sign + String(hours) + delimiter + addLeadingZeros(minutes, 2);\n}\nfunction formatTimezoneWithOptionalMinutes(offset, dirtyDelimiter) {\n  if (offset % 60 === 0) {\n    var sign = offset > 0 ? '-' : '+';\n    return sign + addLeadingZeros(Math.abs(offset) / 60, 2);\n  }\n  return formatTimezone(offset, dirtyDelimiter);\n}\nfunction formatTimezone(offset, dirtyDelimiter) {\n  var delimiter = dirtyDelimiter || '';\n  var sign = offset > 0 ? '-' : '+';\n  var absOffset = Math.abs(offset);\n  var hours = addLeadingZeros(Math.floor(absOffset / 60), 2);\n  var minutes = addLeadingZeros(absOffset % 60, 2);\n  return sign + hours + delimiter + minutes;\n}\nexport default formatters;","import toDate from \"../../toDate/index.js\";\nimport startOfUTCWeek from \"../startOfUTCWeek/index.js\";\nimport startOfUTCWeekYear from \"../startOfUTCWeekYear/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nvar MILLISECONDS_IN_WEEK = 604800000;\nexport default function getUTCWeek(dirtyDate, options) {\n  requiredArgs(1, arguments);\n  var date = toDate(dirtyDate);\n  var diff = startOfUTCWeek(date, options).getTime() - startOfUTCWeekYear(date, options).getTime();\n\n  // Round the number of days to the nearest integer\n  // because the number of milliseconds in a week is not constant\n  // (e.g. it's different in the week of the daylight saving time clock shift)\n  return Math.round(diff / MILLISECONDS_IN_WEEK) + 1;\n}","import getUTCWeekYear from \"../getUTCWeekYear/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nimport startOfUTCWeek from \"../startOfUTCWeek/index.js\";\nimport toInteger from \"../toInteger/index.js\";\nimport { getDefaultOptions } from \"../defaultOptions/index.js\";\nexport default function startOfUTCWeekYear(dirtyDate, options) {\n  var _ref, _ref2, _ref3, _options$firstWeekCon, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2;\n  requiredArgs(1, arguments);\n  var defaultOptions = getDefaultOptions();\n  var firstWeekContainsDate = toInteger((_ref = (_ref2 = (_ref3 = (_options$firstWeekCon = options === null || options === void 0 ? void 0 : options.firstWeekContainsDate) !== null && _options$firstWeekCon !== void 0 ? _options$firstWeekCon : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.firstWeekContainsDate) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions.firstWeekContainsDate) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.firstWeekContainsDate) !== null && _ref !== void 0 ? _ref : 1);\n  var year = getUTCWeekYear(dirtyDate, options);\n  var firstWeek = new Date(0);\n  firstWeek.setUTCFullYear(year, 0, firstWeekContainsDate);\n  firstWeek.setUTCHours(0, 0, 0, 0);\n  var date = startOfUTCWeek(firstWeek, options);\n  return date;\n}","import toDate from \"../../toDate/index.js\";\nimport startOfUTCISOWeek from \"../startOfUTCISOWeek/index.js\";\nimport startOfUTCISOWeekYear from \"../startOfUTCISOWeekYear/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nvar MILLISECONDS_IN_WEEK = 604800000;\nexport default function getUTCISOWeek(dirtyDate) {\n  requiredArgs(1, arguments);\n  var date = toDate(dirtyDate);\n  var diff = startOfUTCISOWeek(date).getTime() - startOfUTCISOWeekYear(date).getTime();\n\n  // Round the number of days to the nearest integer\n  // because the number of milliseconds in a week is not constant\n  // (e.g. it's different in the week of the daylight saving time clock shift)\n  return Math.round(diff / MILLISECONDS_IN_WEEK) + 1;\n}","import getUTCISOWeekYear from \"../getUTCISOWeekYear/index.js\";\nimport startOfUTCISOWeek from \"../startOfUTCISOWeek/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nexport default function startOfUTCISOWeekYear(dirtyDate) {\n  requiredArgs(1, arguments);\n  var year = getUTCISOWeekYear(dirtyDate);\n  var fourthOfJanuary = new Date(0);\n  fourthOfJanuary.setUTCFullYear(year, 0, 4);\n  fourthOfJanuary.setUTCHours(0, 0, 0, 0);\n  var date = startOfUTCISOWeek(fourthOfJanuary);\n  return date;\n}","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nvar MILLISECONDS_IN_DAY = 86400000;\nexport default function getUTCDayOfYear(dirtyDate) {\n  requiredArgs(1, arguments);\n  var date = toDate(dirtyDate);\n  var timestamp = date.getTime();\n  date.setUTCMonth(0, 1);\n  date.setUTCHours(0, 0, 0, 0);\n  var startOfYearTimestamp = date.getTime();\n  var difference = timestamp - startOfYearTimestamp;\n  return Math.floor(difference / MILLISECONDS_IN_DAY) + 1;\n}","var dateLongFormatter = function dateLongFormatter(pattern, formatLong) {\n  switch (pattern) {\n    case 'P':\n      return formatLong.date({\n        width: 'short'\n      });\n    case 'PP':\n      return formatLong.date({\n        width: 'medium'\n      });\n    case 'PPP':\n      return formatLong.date({\n        width: 'long'\n      });\n    case 'PPPP':\n    default:\n      return formatLong.date({\n        width: 'full'\n      });\n  }\n};\nvar timeLongFormatter = function timeLongFormatter(pattern, formatLong) {\n  switch (pattern) {\n    case 'p':\n      return formatLong.time({\n        width: 'short'\n      });\n    case 'pp':\n      return formatLong.time({\n        width: 'medium'\n      });\n    case 'ppp':\n      return formatLong.time({\n        width: 'long'\n      });\n    case 'pppp':\n    default:\n      return formatLong.time({\n        width: 'full'\n      });\n  }\n};\nvar dateTimeLongFormatter = function dateTimeLongFormatter(pattern, formatLong) {\n  var matchResult = pattern.match(/(P+)(p+)?/) || [];\n  var datePattern = matchResult[1];\n  var timePattern = matchResult[2];\n  if (!timePattern) {\n    return dateLongFormatter(pattern, formatLong);\n  }\n  var dateTimeFormat;\n  switch (datePattern) {\n    case 'P':\n      dateTimeFormat = formatLong.dateTime({\n        width: 'short'\n      });\n      break;\n    case 'PP':\n      dateTimeFormat = formatLong.dateTime({\n        width: 'medium'\n      });\n      break;\n    case 'PPP':\n      dateTimeFormat = formatLong.dateTime({\n        width: 'long'\n      });\n      break;\n    case 'PPPP':\n    default:\n      dateTimeFormat = formatLong.dateTime({\n        width: 'full'\n      });\n      break;\n  }\n  return dateTimeFormat.replace('{{date}}', dateLongFormatter(datePattern, formatLong)).replace('{{time}}', timeLongFormatter(timePattern, formatLong));\n};\nvar longFormatters = {\n  p: timeLongFormatter,\n  P: dateTimeLongFormatter\n};\nexport default longFormatters;","var protectedDayOfYearTokens = ['D', 'DD'];\nvar protectedWeekYearTokens = ['YY', 'YYYY'];\nexport function isProtectedDayOfYearToken(token) {\n  return protectedDayOfYearTokens.indexOf(token) !== -1;\n}\nexport function isProtectedWeekYearToken(token) {\n  return protectedWeekYearTokens.indexOf(token) !== -1;\n}\nexport function throwProtectedError(token, format, input) {\n  if (token === 'YYYY') {\n    throw new RangeError(\"Use `yyyy` instead of `YYYY` (in `\".concat(format, \"`) for formatting years to the input `\").concat(input, \"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\"));\n  } else if (token === 'YY') {\n    throw new RangeError(\"Use `yy` instead of `YY` (in `\".concat(format, \"`) for formatting years to the input `\").concat(input, \"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\"));\n  } else if (token === 'D') {\n    throw new RangeError(\"Use `d` instead of `D` (in `\".concat(format, \"`) for formatting days of the month to the input `\").concat(input, \"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\"));\n  } else if (token === 'DD') {\n    throw new RangeError(\"Use `dd` instead of `DD` (in `\".concat(format, \"`) for formatting days of the month to the input `\").concat(input, \"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\"));\n  }\n}","import defaultLocale from \"../../locale/en-US/index.js\";\nexport default defaultLocale;","import isValid from \"../isValid/index.js\";\nimport subMilliseconds from \"../subMilliseconds/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport formatters from \"../_lib/format/formatters/index.js\";\nimport longFormatters from \"../_lib/format/longFormatters/index.js\";\nimport getTimezoneOffsetInMilliseconds from \"../_lib/getTimezoneOffsetInMilliseconds/index.js\";\nimport { isProtectedDayOfYearToken, isProtectedWeekYearToken, throwProtectedError } from \"../_lib/protectedTokens/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport { getDefaultOptions } from \"../_lib/defaultOptions/index.js\";\nimport defaultLocale from \"../_lib/defaultLocale/index.js\"; // This RegExp consists of three parts separated by `|`:\n// - [yYQqMLwIdDecihHKkms]o matches any available ordinal number token\n//   (one of the certain letters followed by `o`)\n// - (\\w)\\1* matches any sequences of the same letter\n// - '' matches two quote characters in a row\n// - '(''|[^'])+('|$) matches anything surrounded by two quote characters ('),\n//   except a single quote symbol, which ends the sequence.\n//   Two quote characters do not end the sequence.\n//   If there is no matching single quote\n//   then the sequence will continue until the end of the string.\n// - . matches any single character unmatched by previous parts of the RegExps\nvar formattingTokensRegExp = /[yYQqMLwIdDecihHKkms]o|(\\w)\\1*|''|'(''|[^'])+('|$)|./g;\n\n// This RegExp catches symbols escaped by quotes, and also\n// sequences of symbols P, p, and the combinations like `PPPPPPPppppp`\nvar longFormattingTokensRegExp = /P+p+|P+|p+|''|'(''|[^'])+('|$)|./g;\nvar escapedStringRegExp = /^'([^]*?)'?$/;\nvar doubleQuoteRegExp = /''/g;\nvar unescapedLatinCharacterRegExp = /[a-zA-Z]/;\n\n/**\n * @name format\n * @category Common Helpers\n * @summary Format the date.\n *\n * @description\n * Return the formatted date string in the given format. The result may vary by locale.\n *\n * > ⚠️ Please note that the `format` tokens differ from Moment.js and other libraries.\n * > See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * The characters wrapped between two single quotes characters (') are escaped.\n * Two single quotes in a row, whether inside or outside a quoted sequence, represent a 'real' single quote.\n * (see the last example)\n *\n * Format of the string is based on Unicode Technical Standard #35:\n * https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n * with a few additions (see note 7 below the table).\n *\n * Accepted patterns:\n * | Unit                            | Pattern | Result examples                   | Notes |\n * |---------------------------------|---------|-----------------------------------|-------|\n * | Era                             | G..GGG  | AD, BC                            |       |\n * |                                 | GGGG    | Anno Domini, Before Christ        | 2     |\n * |                                 | GGGGG   | A, B                              |       |\n * | Calendar year                   | y       | 44, 1, 1900, 2017                 | 5     |\n * |                                 | yo      | 44th, 1st, 0th, 17th              | 5,7   |\n * |                                 | yy      | 44, 01, 00, 17                    | 5     |\n * |                                 | yyy     | 044, 001, 1900, 2017              | 5     |\n * |                                 | yyyy    | 0044, 0001, 1900, 2017            | 5     |\n * |                                 | yyyyy   | ...                               | 3,5   |\n * | Local week-numbering year       | Y       | 44, 1, 1900, 2017                 | 5     |\n * |                                 | Yo      | 44th, 1st, 1900th, 2017th         | 5,7   |\n * |                                 | YY      | 44, 01, 00, 17                    | 5,8   |\n * |                                 | YYY     | 044, 001, 1900, 2017              | 5     |\n * |                                 | YYYY    | 0044, 0001, 1900, 2017            | 5,8   |\n * |                                 | YYYYY   | ...                               | 3,5   |\n * | ISO week-numbering year         | R       | -43, 0, 1, 1900, 2017             | 5,7   |\n * |                                 | RR      | -43, 00, 01, 1900, 2017           | 5,7   |\n * |                                 | RRR     | -043, 000, 001, 1900, 2017        | 5,7   |\n * |                                 | RRRR    | -0043, 0000, 0001, 1900, 2017     | 5,7   |\n * |                                 | RRRRR   | ...                               | 3,5,7 |\n * | Extended year                   | u       | -43, 0, 1, 1900, 2017             | 5     |\n * |                                 | uu      | -43, 01, 1900, 2017               | 5     |\n * |                                 | uuu     | -043, 001, 1900, 2017             | 5     |\n * |                                 | uuuu    | -0043, 0001, 1900, 2017           | 5     |\n * |                                 | uuuuu   | ...                               | 3,5   |\n * | Quarter (formatting)            | Q       | 1, 2, 3, 4                        |       |\n * |                                 | Qo      | 1st, 2nd, 3rd, 4th                | 7     |\n * |                                 | QQ      | 01, 02, 03, 04                    |       |\n * |                                 | QQQ     | Q1, Q2, Q3, Q4                    |       |\n * |                                 | QQQQ    | 1st quarter, 2nd quarter, ...     | 2     |\n * |                                 | QQQQQ   | 1, 2, 3, 4                        | 4     |\n * | Quarter (stand-alone)           | q       | 1, 2, 3, 4                        |       |\n * |                                 | qo      | 1st, 2nd, 3rd, 4th                | 7     |\n * |                                 | qq      | 01, 02, 03, 04                    |       |\n * |                                 | qqq     | Q1, Q2, Q3, Q4                    |       |\n * |                                 | qqqq    | 1st quarter, 2nd quarter, ...     | 2     |\n * |                                 | qqqqq   | 1, 2, 3, 4                        | 4     |\n * | Month (formatting)              | M       | 1, 2, ..., 12                     |       |\n * |                                 | Mo      | 1st, 2nd, ..., 12th               | 7     |\n * |                                 | MM      | 01, 02, ..., 12                   |       |\n * |                                 | MMM     | Jan, Feb, ..., Dec                |       |\n * |                                 | MMMM    | January, February, ..., December  | 2     |\n * |                                 | MMMMM   | J, F, ..., D                      |       |\n * | Month (stand-alone)             | L       | 1, 2, ..., 12                     |       |\n * |                                 | Lo      | 1st, 2nd, ..., 12th               | 7     |\n * |                                 | LL      | 01, 02, ..., 12                   |       |\n * |                                 | LLL     | Jan, Feb, ..., Dec                |       |\n * |                                 | LLLL    | January, February, ..., December  | 2     |\n * |                                 | LLLLL   | J, F, ..., D                      |       |\n * | Local week of year              | w       | 1, 2, ..., 53                     |       |\n * |                                 | wo      | 1st, 2nd, ..., 53th               | 7     |\n * |                                 | ww      | 01, 02, ..., 53                   |       |\n * | ISO week of year                | I       | 1, 2, ..., 53                     | 7     |\n * |                                 | Io      | 1st, 2nd, ..., 53th               | 7     |\n * |                                 | II      | 01, 02, ..., 53                   | 7     |\n * | Day of month                    | d       | 1, 2, ..., 31                     |       |\n * |                                 | do      | 1st, 2nd, ..., 31st               | 7     |\n * |                                 | dd      | 01, 02, ..., 31                   |       |\n * | Day of year                     | D       | 1, 2, ..., 365, 366               | 9     |\n * |                                 | Do      | 1st, 2nd, ..., 365th, 366th       | 7     |\n * |                                 | DD      | 01, 02, ..., 365, 366             | 9     |\n * |                                 | DDD     | 001, 002, ..., 365, 366           |       |\n * |                                 | DDDD    | ...                               | 3     |\n * | Day of week (formatting)        | E..EEE  | Mon, Tue, Wed, ..., Sun           |       |\n * |                                 | EEEE    | Monday, Tuesday, ..., Sunday      | 2     |\n * |                                 | EEEEE   | M, T, W, T, F, S, S               |       |\n * |                                 | EEEEEE  | Mo, Tu, We, Th, Fr, Sa, Su        |       |\n * | ISO day of week (formatting)    | i       | 1, 2, 3, ..., 7                   | 7     |\n * |                                 | io      | 1st, 2nd, ..., 7th                | 7     |\n * |                                 | ii      | 01, 02, ..., 07                   | 7     |\n * |                                 | iii     | Mon, Tue, Wed, ..., Sun           | 7     |\n * |                                 | iiii    | Monday, Tuesday, ..., Sunday      | 2,7   |\n * |                                 | iiiii   | M, T, W, T, F, S, S               | 7     |\n * |                                 | iiiiii  | Mo, Tu, We, Th, Fr, Sa, Su        | 7     |\n * | Local day of week (formatting)  | e       | 2, 3, 4, ..., 1                   |       |\n * |                                 | eo      | 2nd, 3rd, ..., 1st                | 7     |\n * |                                 | ee      | 02, 03, ..., 01                   |       |\n * |                                 | eee     | Mon, Tue, Wed, ..., Sun           |       |\n * |                                 | eeee    | Monday, Tuesday, ..., Sunday      | 2     |\n * |                                 | eeeee   | M, T, W, T, F, S, S               |       |\n * |                                 | eeeeee  | Mo, Tu, We, Th, Fr, Sa, Su        |       |\n * | Local day of week (stand-alone) | c       | 2, 3, 4, ..., 1                   |       |\n * |                                 | co      | 2nd, 3rd, ..., 1st                | 7     |\n * |                                 | cc      | 02, 03, ..., 01                   |       |\n * |                                 | ccc     | Mon, Tue, Wed, ..., Sun           |       |\n * |                                 | cccc    | Monday, Tuesday, ..., Sunday      | 2     |\n * |                                 | ccccc   | M, T, W, T, F, S, S               |       |\n * |                                 | cccccc  | Mo, Tu, We, Th, Fr, Sa, Su        |       |\n * | AM, PM                          | a..aa   | AM, PM                            |       |\n * |                                 | aaa     | am, pm                            |       |\n * |                                 | aaaa    | a.m., p.m.                        | 2     |\n * |                                 | aaaaa   | a, p                              |       |\n * | AM, PM, noon, midnight          | b..bb   | AM, PM, noon, midnight            |       |\n * |                                 | bbb     | am, pm, noon, midnight            |       |\n * |                                 | bbbb    | a.m., p.m., noon, midnight        | 2     |\n * |                                 | bbbbb   | a, p, n, mi                       |       |\n * | Flexible day period             | B..BBB  | at night, in the morning, ...     |       |\n * |                                 | BBBB    | at night, in the morning, ...     | 2     |\n * |                                 | BBBBB   | at night, in the morning, ...     |       |\n * | Hour [1-12]                     | h       | 1, 2, ..., 11, 12                 |       |\n * |                                 | ho      | 1st, 2nd, ..., 11th, 12th         | 7     |\n * |                                 | hh      | 01, 02, ..., 11, 12               |       |\n * | Hour [0-23]                     | H       | 0, 1, 2, ..., 23                  |       |\n * |                                 | Ho      | 0th, 1st, 2nd, ..., 23rd          | 7     |\n * |                                 | HH      | 00, 01, 02, ..., 23               |       |\n * | Hour [0-11]                     | K       | 1, 2, ..., 11, 0                  |       |\n * |                                 | Ko      | 1st, 2nd, ..., 11th, 0th          | 7     |\n * |                                 | KK      | 01, 02, ..., 11, 00               |       |\n * | Hour [1-24]                     | k       | 24, 1, 2, ..., 23                 |       |\n * |                                 | ko      | 24th, 1st, 2nd, ..., 23rd         | 7     |\n * |                                 | kk      | 24, 01, 02, ..., 23               |       |\n * | Minute                          | m       | 0, 1, ..., 59                     |       |\n * |                                 | mo      | 0th, 1st, ..., 59th               | 7     |\n * |                                 | mm      | 00, 01, ..., 59                   |       |\n * | Second                          | s       | 0, 1, ..., 59                     |       |\n * |                                 | so      | 0th, 1st, ..., 59th               | 7     |\n * |                                 | ss      | 00, 01, ..., 59                   |       |\n * | Fraction of second              | S       | 0, 1, ..., 9                      |       |\n * |                                 | SS      | 00, 01, ..., 99                   |       |\n * |                                 | SSS     | 000, 001, ..., 999                |       |\n * |                                 | SSSS    | ...                               | 3     |\n * | Timezone (ISO-8601 w/ Z)        | X       | -08, +0530, Z                     |       |\n * |                                 | XX      | -0800, +0530, Z                   |       |\n * |                                 | XXX     | -08:00, +05:30, Z                 |       |\n * |                                 | XXXX    | -0800, +0530, Z, +123456          | 2     |\n * |                                 | XXXXX   | -08:00, +05:30, Z, +12:34:56      |       |\n * | Timezone (ISO-8601 w/o Z)       | x       | -08, +0530, +00                   |       |\n * |                                 | xx      | -0800, +0530, +0000               |       |\n * |                                 | xxx     | -08:00, +05:30, +00:00            | 2     |\n * |                                 | xxxx    | -0800, +0530, +0000, +123456      |       |\n * |                                 | xxxxx   | -08:00, +05:30, +00:00, +12:34:56 |       |\n * | Timezone (GMT)                  | O...OOO | GMT-8, GMT+5:30, GMT+0            |       |\n * |                                 | OOOO    | GMT-08:00, GMT+05:30, GMT+00:00   | 2     |\n * | Timezone (specific non-locat.)  | z...zzz | GMT-8, GMT+5:30, GMT+0            | 6     |\n * |                                 | zzzz    | GMT-08:00, GMT+05:30, GMT+00:00   | 2,6   |\n * | Seconds timestamp               | t       | 512969520                         | 7     |\n * |                                 | tt      | ...                               | 3,7   |\n * | Milliseconds timestamp          | T       | 512969520900                      | 7     |\n * |                                 | TT      | ...                               | 3,7   |\n * | Long localized date             | P       | 04/29/1453                        | 7     |\n * |                                 | PP      | Apr 29, 1453                      | 7     |\n * |                                 | PPP     | April 29th, 1453                  | 7     |\n * |                                 | PPPP    | Friday, April 29th, 1453          | 2,7   |\n * | Long localized time             | p       | 12:00 AM                          | 7     |\n * |                                 | pp      | 12:00:00 AM                       | 7     |\n * |                                 | ppp     | 12:00:00 AM GMT+2                 | 7     |\n * |                                 | pppp    | 12:00:00 AM GMT+02:00             | 2,7   |\n * | Combination of date and time    | Pp      | 04/29/1453, 12:00 AM              | 7     |\n * |                                 | PPpp    | Apr 29, 1453, 12:00:00 AM         | 7     |\n * |                                 | PPPppp  | April 29th, 1453 at ...           | 7     |\n * |                                 | PPPPpppp| Friday, April 29th, 1453 at ...   | 2,7   |\n * Notes:\n * 1. \"Formatting\" units (e.g. formatting quarter) in the default en-US locale\n *    are the same as \"stand-alone\" units, but are different in some languages.\n *    \"Formatting\" units are declined according to the rules of the language\n *    in the context of a date. \"Stand-alone\" units are always nominative singular:\n *\n *    `format(new Date(2017, 10, 6), 'do LLLL', {locale: cs}) //=> '6. listopad'`\n *\n *    `format(new Date(2017, 10, 6), 'do MMMM', {locale: cs}) //=> '6. listopadu'`\n *\n * 2. Any sequence of the identical letters is a pattern, unless it is escaped by\n *    the single quote characters (see below).\n *    If the sequence is longer than listed in table (e.g. `EEEEEEEEEEE`)\n *    the output will be the same as default pattern for this unit, usually\n *    the longest one (in case of ISO weekdays, `EEEE`). Default patterns for units\n *    are marked with \"2\" in the last column of the table.\n *\n *    `format(new Date(2017, 10, 6), 'MMM') //=> 'Nov'`\n *\n *    `format(new Date(2017, 10, 6), 'MMMM') //=> 'November'`\n *\n *    `format(new Date(2017, 10, 6), 'MMMMM') //=> 'N'`\n *\n *    `format(new Date(2017, 10, 6), 'MMMMMM') //=> 'November'`\n *\n *    `format(new Date(2017, 10, 6), 'MMMMMMM') //=> 'November'`\n *\n * 3. Some patterns could be unlimited length (such as `yyyyyyyy`).\n *    The output will be padded with zeros to match the length of the pattern.\n *\n *    `format(new Date(2017, 10, 6), 'yyyyyyyy') //=> '00002017'`\n *\n * 4. `QQQQQ` and `qqqqq` could be not strictly numerical in some locales.\n *    These tokens represent the shortest form of the quarter.\n *\n * 5. The main difference between `y` and `u` patterns are B.C. years:\n *\n *    | Year | `y` | `u` |\n *    |------|-----|-----|\n *    | AC 1 |   1 |   1 |\n *    | BC 1 |   1 |   0 |\n *    | BC 2 |   2 |  -1 |\n *\n *    Also `yy` always returns the last two digits of a year,\n *    while `uu` pads single digit years to 2 characters and returns other years unchanged:\n *\n *    | Year | `yy` | `uu` |\n *    |------|------|------|\n *    | 1    |   01 |   01 |\n *    | 14   |   14 |   14 |\n *    | 376  |   76 |  376 |\n *    | 1453 |   53 | 1453 |\n *\n *    The same difference is true for local and ISO week-numbering years (`Y` and `R`),\n *    except local week-numbering years are dependent on `options.weekStartsOn`\n *    and `options.firstWeekContainsDate` (compare [getISOWeekYear]{@link https://date-fns.org/docs/getISOWeekYear}\n *    and [getWeekYear]{@link https://date-fns.org/docs/getWeekYear}).\n *\n * 6. Specific non-location timezones are currently unavailable in `date-fns`,\n *    so right now these tokens fall back to GMT timezones.\n *\n * 7. These patterns are not in the Unicode Technical Standard #35:\n *    - `i`: ISO day of week\n *    - `I`: ISO week of year\n *    - `R`: ISO week-numbering year\n *    - `t`: seconds timestamp\n *    - `T`: milliseconds timestamp\n *    - `o`: ordinal number modifier\n *    - `P`: long localized date\n *    - `p`: long localized time\n *\n * 8. `YY` and `YYYY` tokens represent week-numbering years but they are often confused with years.\n *    You should enable `options.useAdditionalWeekYearTokens` to use them. See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * 9. `D` and `DD` tokens represent days of the year but they are often confused with days of the month.\n *    You should enable `options.useAdditionalDayOfYearTokens` to use them. See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * @param {Date|Number} date - the original date\n * @param {String} format - the string of tokens\n * @param {Object} [options] - an object with options.\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @param {Number} [options.firstWeekContainsDate=1] - the day of January, which is\n * @param {Boolean} [options.useAdditionalWeekYearTokens=false] - if true, allows usage of the week-numbering year tokens `YY` and `YYYY`;\n *   see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @param {Boolean} [options.useAdditionalDayOfYearTokens=false] - if true, allows usage of the day of year tokens `D` and `DD`;\n *   see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @returns {String} the formatted date string\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `date` must not be Invalid Date\n * @throws {RangeError} `options.locale` must contain `localize` property\n * @throws {RangeError} `options.locale` must contain `formatLong` property\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n * @throws {RangeError} `options.firstWeekContainsDate` must be between 1 and 7\n * @throws {RangeError} use `yyyy` instead of `YYYY` for formatting years using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws {RangeError} use `yy` instead of `YY` for formatting years using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws {RangeError} use `d` instead of `D` for formatting days of the month using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws {RangeError} use `dd` instead of `DD` for formatting days of the month using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws {RangeError} format string contains an unescaped latin alphabet character\n *\n * @example\n * // Represent 11 February 2014 in middle-endian format:\n * const result = format(new Date(2014, 1, 11), 'MM/dd/yyyy')\n * //=> '02/11/2014'\n *\n * @example\n * // Represent 2 July 2014 in Esperanto:\n * import { eoLocale } from 'date-fns/locale/eo'\n * const result = format(new Date(2014, 6, 2), \"do 'de' MMMM yyyy\", {\n *   locale: eoLocale\n * })\n * //=> '2-a de julio 2014'\n *\n * @example\n * // Escape string by single quote characters:\n * const result = format(new Date(2014, 6, 2, 15), \"h 'o''clock'\")\n * //=> \"3 o'clock\"\n */\n\nexport default function format(dirtyDate, dirtyFormatStr, options) {\n  var _ref, _options$locale, _ref2, _ref3, _ref4, _options$firstWeekCon, _options$locale2, _options$locale2$opti, _defaultOptions$local, _defaultOptions$local2, _ref5, _ref6, _ref7, _options$weekStartsOn, _options$locale3, _options$locale3$opti, _defaultOptions$local3, _defaultOptions$local4;\n  requiredArgs(2, arguments);\n  var formatStr = String(dirtyFormatStr);\n  var defaultOptions = getDefaultOptions();\n  var locale = (_ref = (_options$locale = options === null || options === void 0 ? void 0 : options.locale) !== null && _options$locale !== void 0 ? _options$locale : defaultOptions.locale) !== null && _ref !== void 0 ? _ref : defaultLocale;\n  var firstWeekContainsDate = toInteger((_ref2 = (_ref3 = (_ref4 = (_options$firstWeekCon = options === null || options === void 0 ? void 0 : options.firstWeekContainsDate) !== null && _options$firstWeekCon !== void 0 ? _options$firstWeekCon : options === null || options === void 0 ? void 0 : (_options$locale2 = options.locale) === null || _options$locale2 === void 0 ? void 0 : (_options$locale2$opti = _options$locale2.options) === null || _options$locale2$opti === void 0 ? void 0 : _options$locale2$opti.firstWeekContainsDate) !== null && _ref4 !== void 0 ? _ref4 : defaultOptions.firstWeekContainsDate) !== null && _ref3 !== void 0 ? _ref3 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.firstWeekContainsDate) !== null && _ref2 !== void 0 ? _ref2 : 1);\n\n  // Test if weekStartsOn is between 1 and 7 _and_ is not NaN\n  if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) {\n    throw new RangeError('firstWeekContainsDate must be between 1 and 7 inclusively');\n  }\n  var weekStartsOn = toInteger((_ref5 = (_ref6 = (_ref7 = (_options$weekStartsOn = options === null || options === void 0 ? void 0 : options.weekStartsOn) !== null && _options$weekStartsOn !== void 0 ? _options$weekStartsOn : options === null || options === void 0 ? void 0 : (_options$locale3 = options.locale) === null || _options$locale3 === void 0 ? void 0 : (_options$locale3$opti = _options$locale3.options) === null || _options$locale3$opti === void 0 ? void 0 : _options$locale3$opti.weekStartsOn) !== null && _ref7 !== void 0 ? _ref7 : defaultOptions.weekStartsOn) !== null && _ref6 !== void 0 ? _ref6 : (_defaultOptions$local3 = defaultOptions.locale) === null || _defaultOptions$local3 === void 0 ? void 0 : (_defaultOptions$local4 = _defaultOptions$local3.options) === null || _defaultOptions$local4 === void 0 ? void 0 : _defaultOptions$local4.weekStartsOn) !== null && _ref5 !== void 0 ? _ref5 : 0);\n\n  // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n  if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n    throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n  }\n  if (!locale.localize) {\n    throw new RangeError('locale must contain localize property');\n  }\n  if (!locale.formatLong) {\n    throw new RangeError('locale must contain formatLong property');\n  }\n  var originalDate = toDate(dirtyDate);\n  if (!isValid(originalDate)) {\n    throw new RangeError('Invalid time value');\n  }\n\n  // Convert the date in system timezone to the same date in UTC+00:00 timezone.\n  // This ensures that when UTC functions will be implemented, locales will be compatible with them.\n  // See an issue about UTC functions: https://github.com/date-fns/date-fns/issues/376\n  var timezoneOffset = getTimezoneOffsetInMilliseconds(originalDate);\n  var utcDate = subMilliseconds(originalDate, timezoneOffset);\n  var formatterOptions = {\n    firstWeekContainsDate: firstWeekContainsDate,\n    weekStartsOn: weekStartsOn,\n    locale: locale,\n    _originalDate: originalDate\n  };\n  var result = formatStr.match(longFormattingTokensRegExp).map(function (substring) {\n    var firstCharacter = substring[0];\n    if (firstCharacter === 'p' || firstCharacter === 'P') {\n      var longFormatter = longFormatters[firstCharacter];\n      return longFormatter(substring, locale.formatLong);\n    }\n    return substring;\n  }).join('').match(formattingTokensRegExp).map(function (substring) {\n    // Replace two single quote characters with one single quote character\n    if (substring === \"''\") {\n      return \"'\";\n    }\n    var firstCharacter = substring[0];\n    if (firstCharacter === \"'\") {\n      return cleanEscapedString(substring);\n    }\n    var formatter = formatters[firstCharacter];\n    if (formatter) {\n      if (!(options !== null && options !== void 0 && options.useAdditionalWeekYearTokens) && isProtectedWeekYearToken(substring)) {\n        throwProtectedError(substring, dirtyFormatStr, String(dirtyDate));\n      }\n      if (!(options !== null && options !== void 0 && options.useAdditionalDayOfYearTokens) && isProtectedDayOfYearToken(substring)) {\n        throwProtectedError(substring, dirtyFormatStr, String(dirtyDate));\n      }\n      return formatter(utcDate, substring, locale.localize, formatterOptions);\n    }\n    if (firstCharacter.match(unescapedLatinCharacterRegExp)) {\n      throw new RangeError('Format string contains an unescaped latin alphabet character `' + firstCharacter + '`');\n    }\n    return substring;\n  }).join('');\n  return result;\n}\nfunction cleanEscapedString(input) {\n  var matched = input.match(escapedStringRegExp);\n  if (!matched) {\n    return input;\n  }\n  return matched[1].replace(doubleQuoteRegExp, \"'\");\n}","import addMilliseconds from \"../addMilliseconds/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\n/**\n * @name subMilliseconds\n * @category Millisecond Helpers\n * @summary Subtract the specified number of milliseconds from the given date.\n *\n * @description\n * Subtract the specified number of milliseconds from the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of milliseconds to be subtracted. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the milliseconds subtracted\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Subtract 750 milliseconds from 10 July 2014 12:45:30.000:\n * const result = subMilliseconds(new Date(2014, 6, 10, 12, 45, 30, 0), 750)\n * //=> Thu Jul 10 2014 12:45:29.250\n */\nexport default function subMilliseconds(dirtyDate, dirtyAmount) {\n  requiredArgs(2, arguments);\n  var amount = toInteger(dirtyAmount);\n  return addMilliseconds(dirtyDate, -amount);\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name getDay\n * @category Weekday Helpers\n * @summary Get the day of the week of the given date.\n *\n * @description\n * Get the day of the week of the given date.\n *\n * @param {Date|Number} date - the given date\n * @returns {0|1|2|3|4|5|6} the day of week, 0 represents Sunday\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Which day of the week is 29 February 2012?\n * const result = getDay(new Date(2012, 1, 29))\n * //=> 3\n */\nexport default function getDay(dirtyDate) {\n  requiredArgs(1, arguments);\n  var date = toDate(dirtyDate);\n  var day = date.getDay();\n  return day;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name getHours\n * @category Hour Helpers\n * @summary Get the hours of the given date.\n *\n * @description\n * Get the hours of the given date.\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the hours\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Get the hours of 29 February 2012 11:45:00:\n * const result = getHours(new Date(2012, 1, 29, 11, 45))\n * //=> 11\n */\nexport default function getHours(dirtyDate) {\n  requiredArgs(1, arguments);\n  var date = toDate(dirtyDate);\n  var hours = date.getHours();\n  return hours;\n}","import startOfISOWeekYear from \"../startOfISOWeekYear/index.js\";\nimport addWeeks from \"../addWeeks/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nvar MILLISECONDS_IN_WEEK = 604800000;\n\n/**\n * @name getISOWeeksInYear\n * @category ISO Week-Numbering Year Helpers\n * @summary Get the number of weeks in an ISO week-numbering year of the given date.\n *\n * @description\n * Get the number of weeks in an ISO week-numbering year of the given date.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the number of ISO weeks in a year\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // How many weeks are in ISO week-numbering year 2015?\n * const result = getISOWeeksInYear(new Date(2015, 1, 11))\n * //=> 53\n */\nexport default function getISOWeeksInYear(dirtyDate) {\n  requiredArgs(1, arguments);\n  var thisYear = startOfISOWeekYear(dirtyDate);\n  var nextYear = startOfISOWeekYear(addWeeks(thisYear, 60));\n  var diff = nextYear.valueOf() - thisYear.valueOf();\n  // Round the number of weeks to the nearest integer\n  // because the number of milliseconds in a week is not constant\n  // (e.g. it's different in the week of the daylight saving time clock shift)\n  return Math.round(diff / MILLISECONDS_IN_WEEK);\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name getMilliseconds\n * @category Millisecond Helpers\n * @summary Get the milliseconds of the given date.\n *\n * @description\n * Get the milliseconds of the given date.\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the milliseconds\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Get the milliseconds of 29 February 2012 11:45:05.123:\n * const result = getMilliseconds(new Date(2012, 1, 29, 11, 45, 5, 123))\n * //=> 123\n */\nexport default function getMilliseconds(dirtyDate) {\n  requiredArgs(1, arguments);\n  var date = toDate(dirtyDate);\n  var milliseconds = date.getMilliseconds();\n  return milliseconds;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name getMinutes\n * @category Minute Helpers\n * @summary Get the minutes of the given date.\n *\n * @description\n * Get the minutes of the given date.\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the minutes\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Get the minutes of 29 February 2012 11:45:05:\n * const result = getMinutes(new Date(2012, 1, 29, 11, 45, 5))\n * //=> 45\n */\nexport default function getMinutes(dirtyDate) {\n  requiredArgs(1, arguments);\n  var date = toDate(dirtyDate);\n  var minutes = date.getMinutes();\n  return minutes;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name getSeconds\n * @category Second Helpers\n * @summary Get the seconds of the given date.\n *\n * @description\n * Get the seconds of the given date.\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the seconds\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Get the seconds of 29 February 2012 11:45:05.123:\n * const result = getSeconds(new Date(2012, 1, 29, 11, 45, 5, 123))\n * //=> 5\n */\nexport default function getSeconds(dirtyDate) {\n  requiredArgs(1, arguments);\n  var date = toDate(dirtyDate);\n  var seconds = date.getSeconds();\n  return seconds;\n}","import startOfWeek from \"../startOfWeek/index.js\";\nimport startOfWeekYear from \"../startOfWeekYear/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nvar MILLISECONDS_IN_WEEK = 604800000;\n\n/**\n * @name getWeek\n * @category Week Helpers\n * @summary Get the local week index of the given date.\n *\n * @description\n * Get the local week index of the given date.\n * The exact calculation depends on the values of\n * `options.weekStartsOn` (which is the index of the first day of the week)\n * and `options.firstWeekContainsDate` (which is the day of January, which is always in\n * the first week of the week-numbering year)\n *\n * Week numbering: https://en.wikipedia.org/wiki/Week#Week_numbering\n *\n * @param {Date|Number} date - the given date\n * @param {Object} [options] - an object with options.\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @param {1|2|3|4|5|6|7} [options.firstWeekContainsDate=1] - the day of January, which is always in the first week of the year\n * @returns {Number} the week\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n * @throws {RangeError} `options.firstWeekContainsDate` must be between 1 and 7\n *\n * @example\n * // Which week of the local week numbering year is 2 January 2005 with default options?\n * const result = getWeek(new Date(2005, 0, 2))\n * //=> 2\n *\n * // Which week of the local week numbering year is 2 January 2005,\n * // if Monday is the first day of the week,\n * // and the first week of the year always contains 4 January?\n * const result = getWeek(new Date(2005, 0, 2), {\n *   weekStartsOn: 1,\n *   firstWeekContainsDate: 4\n * })\n * //=> 53\n */\n\nexport default function getWeek(dirtyDate, options) {\n  requiredArgs(1, arguments);\n  var date = toDate(dirtyDate);\n  var diff = startOfWeek(date, options).getTime() - startOfWeekYear(date, options).getTime();\n\n  // Round the number of days to the nearest integer\n  // because the number of milliseconds in a week is not constant\n  // (e.g. it's different in the week of the daylight saving time clock shift)\n  return Math.round(diff / MILLISECONDS_IN_WEEK) + 1;\n}","import getWeekYear from \"../getWeekYear/index.js\";\nimport startOfWeek from \"../startOfWeek/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport { getDefaultOptions } from \"../_lib/defaultOptions/index.js\";\n/**\n * @name startOfWeekYear\n * @category Week-Numbering Year Helpers\n * @summary Return the start of a local week-numbering year for the given date.\n *\n * @description\n * Return the start of a local week-numbering year.\n * The exact calculation depends on the values of\n * `options.weekStartsOn` (which is the index of the first day of the week)\n * and `options.firstWeekContainsDate` (which is the day of January, which is always in\n * the first week of the week-numbering year)\n *\n * Week numbering: https://en.wikipedia.org/wiki/Week#Week_numbering\n *\n * @param {Date|Number} date - the original date\n * @param {Object} [options] - an object with options.\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @param {1|2|3|4|5|6|7} [options.firstWeekContainsDate=1] - the day of January, which is always in the first week of the year\n * @returns {Date} the start of a week-numbering year\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n * @throws {RangeError} `options.firstWeekContainsDate` must be between 1 and 7\n *\n * @example\n * // The start of an a week-numbering year for 2 July 2005 with default settings:\n * const result = startOfWeekYear(new Date(2005, 6, 2))\n * //=> Sun Dec 26 2004 00:00:00\n *\n * @example\n * // The start of a week-numbering year for 2 July 2005\n * // if Monday is the first day of week\n * // and 4 January is always in the first week of the year:\n * const result = startOfWeekYear(new Date(2005, 6, 2), {\n *   weekStartsOn: 1,\n *   firstWeekContainsDate: 4\n * })\n * //=> Mon Jan 03 2005 00:00:00\n */\nexport default function startOfWeekYear(dirtyDate, options) {\n  var _ref, _ref2, _ref3, _options$firstWeekCon, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2;\n  requiredArgs(1, arguments);\n  var defaultOptions = getDefaultOptions();\n  var firstWeekContainsDate = toInteger((_ref = (_ref2 = (_ref3 = (_options$firstWeekCon = options === null || options === void 0 ? void 0 : options.firstWeekContainsDate) !== null && _options$firstWeekCon !== void 0 ? _options$firstWeekCon : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.firstWeekContainsDate) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions.firstWeekContainsDate) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.firstWeekContainsDate) !== null && _ref !== void 0 ? _ref : 1);\n  var year = getWeekYear(dirtyDate, options);\n  var firstWeek = new Date(0);\n  firstWeek.setFullYear(year, 0, firstWeekContainsDate);\n  firstWeek.setHours(0, 0, 0, 0);\n  var date = startOfWeek(firstWeek, options);\n  return date;\n}","import startOfWeek from \"../startOfWeek/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport { getDefaultOptions } from \"../_lib/defaultOptions/index.js\";\n/**\n * @name getWeekYear\n * @category Week-Numbering Year Helpers\n * @summary Get the local week-numbering year of the given date.\n *\n * @description\n * Get the local week-numbering year of the given date.\n * The exact calculation depends on the values of\n * `options.weekStartsOn` (which is the index of the first day of the week)\n * and `options.firstWeekContainsDate` (which is the day of January, which is always in\n * the first week of the week-numbering year)\n *\n * Week numbering: https://en.wikipedia.org/wiki/Week#Week_numbering\n *\n * @param {Date|Number} date - the given date\n * @param {Object} [options] - an object with options.\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @param {1|2|3|4|5|6|7} [options.firstWeekContainsDate=1] - the day of January, which is always in the first week of the year\n * @returns {Number} the local week-numbering year\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n * @throws {RangeError} `options.firstWeekContainsDate` must be between 1 and 7\n *\n * @example\n * // Which week numbering year is 26 December 2004 with the default settings?\n * const result = getWeekYear(new Date(2004, 11, 26))\n * //=> 2005\n *\n * @example\n * // Which week numbering year is 26 December 2004 if week starts on Saturday?\n * const result = getWeekYear(new Date(2004, 11, 26), { weekStartsOn: 6 })\n * //=> 2004\n *\n * @example\n * // Which week numbering year is 26 December 2004 if the first week contains 4 January?\n * const result = getWeekYear(new Date(2004, 11, 26), { firstWeekContainsDate: 4 })\n * //=> 2004\n */\nexport default function getWeekYear(dirtyDate, options) {\n  var _ref, _ref2, _ref3, _options$firstWeekCon, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2;\n  requiredArgs(1, arguments);\n  var date = toDate(dirtyDate);\n  var year = date.getFullYear();\n  var defaultOptions = getDefaultOptions();\n  var firstWeekContainsDate = toInteger((_ref = (_ref2 = (_ref3 = (_options$firstWeekCon = options === null || options === void 0 ? void 0 : options.firstWeekContainsDate) !== null && _options$firstWeekCon !== void 0 ? _options$firstWeekCon : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.firstWeekContainsDate) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions.firstWeekContainsDate) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.firstWeekContainsDate) !== null && _ref !== void 0 ? _ref : 1);\n\n  // Test if weekStartsOn is between 1 and 7 _and_ is not NaN\n  if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) {\n    throw new RangeError('firstWeekContainsDate must be between 1 and 7 inclusively');\n  }\n  var firstWeekOfNextYear = new Date(0);\n  firstWeekOfNextYear.setFullYear(year + 1, 0, firstWeekContainsDate);\n  firstWeekOfNextYear.setHours(0, 0, 0, 0);\n  var startOfNextYear = startOfWeek(firstWeekOfNextYear, options);\n  var firstWeekOfThisYear = new Date(0);\n  firstWeekOfThisYear.setFullYear(year, 0, firstWeekContainsDate);\n  firstWeekOfThisYear.setHours(0, 0, 0, 0);\n  var startOfThisYear = startOfWeek(firstWeekOfThisYear, options);\n  if (date.getTime() >= startOfNextYear.getTime()) {\n    return year + 1;\n  } else if (date.getTime() >= startOfThisYear.getTime()) {\n    return year;\n  } else {\n    return year - 1;\n  }\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isAfter\n * @category Common Helpers\n * @summary Is the first date after the second one?\n *\n * @description\n * Is the first date after the second one?\n *\n * @param {Date|Number} date - the date that should be after the other one to return true\n * @param {Date|Number} dateToCompare - the date to compare with\n * @returns {Boolean} the first date is after the second date\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Is 10 July 1989 after 11 February 1987?\n * const result = isAfter(new Date(1989, 6, 10), new Date(1987, 1, 11))\n * //=> true\n */\nexport default function isAfter(dirtyDate, dirtyDateToCompare) {\n  requiredArgs(2, arguments);\n  var date = toDate(dirtyDate);\n  var dateToCompare = toDate(dirtyDateToCompare);\n  return date.getTime() > dateToCompare.getTime();\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isBefore\n * @category Common Helpers\n * @summary Is the first date before the second one?\n *\n * @description\n * Is the first date before the second one?\n *\n * @param {Date|Number} date - the date that should be before the other one to return true\n * @param {Date|Number} dateToCompare - the date to compare with\n * @returns {Boolean} the first date is before the second date\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Is 10 July 1989 before 11 February 1987?\n * const result = isBefore(new Date(1989, 6, 10), new Date(1987, 1, 11))\n * //=> false\n */\nexport default function isBefore(dirtyDate, dirtyDateToCompare) {\n  requiredArgs(2, arguments);\n  var date = toDate(dirtyDate);\n  var dateToCompare = toDate(dirtyDateToCompare);\n  return date.getTime() < dateToCompare.getTime();\n}","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isDate\n * @category Common Helpers\n * @summary Is the given value a date?\n *\n * @description\n * Returns true if the given value is an instance of Date. The function works for dates transferred across iframes.\n *\n * @param {*} value - the value to check\n * @returns {boolean} true if the given value is a date\n * @throws {TypeError} 1 arguments required\n *\n * @example\n * // For a valid date:\n * const result = isDate(new Date())\n * //=> true\n *\n * @example\n * // For an invalid date:\n * const result = isDate(new Date(NaN))\n * //=> true\n *\n * @example\n * // For some value:\n * const result = isDate('2014-02-31')\n * //=> false\n *\n * @example\n * // For an object:\n * const result = isDate({})\n * //=> false\n */\nexport default function isDate(value) {\n  requiredArgs(1, arguments);\n  return value instanceof Date || _typeof(value) === 'object' && Object.prototype.toString.call(value) === '[object Date]';\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isEqual\n * @category Common Helpers\n * @summary Are the given dates equal?\n *\n * @description\n * Are the given dates equal?\n *\n * @param {Date|Number} dateLeft - the first date to compare\n * @param {Date|Number} dateRight - the second date to compare\n * @returns {Boolean} the dates are equal\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Are 2 July 2014 06:30:45.000 and 2 July 2014 06:30:45.500 equal?\n * const result = isEqual(\n *   new Date(2014, 6, 2, 6, 30, 45, 0),\n *   new Date(2014, 6, 2, 6, 30, 45, 500)\n * )\n * //=> false\n */\nexport default function isEqual(dirtyLeftDate, dirtyRightDate) {\n  requiredArgs(2, arguments);\n  var dateLeft = toDate(dirtyLeftDate);\n  var dateRight = toDate(dirtyRightDate);\n  return dateLeft.getTime() === dateRight.getTime();\n}","import startOfDay from \"../startOfDay/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isSameDay\n * @category Day Helpers\n * @summary Are the given dates in the same day (and year and month)?\n *\n * @description\n * Are the given dates in the same day (and year and month)?\n *\n * @param {Date|Number} dateLeft - the first date to check\n * @param {Date|Number} dateRight - the second date to check\n * @returns {Boolean} the dates are in the same day (and year and month)\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Are 4 September 06:00:00 and 4 September 18:00:00 in the same day?\n * const result = isSameDay(new Date(2014, 8, 4, 6, 0), new Date(2014, 8, 4, 18, 0))\n * //=> true\n *\n * @example\n * // Are 4 September and 4 October in the same day?\n * const result = isSameDay(new Date(2014, 8, 4), new Date(2014, 9, 4))\n * //=> false\n *\n * @example\n * // Are 4 September, 2014 and 4 September, 2015 in the same day?\n * const result = isSameDay(new Date(2014, 8, 4), new Date(2015, 8, 4))\n * //=> false\n */\nexport default function isSameDay(dirtyDateLeft, dirtyDateRight) {\n  requiredArgs(2, arguments);\n  var dateLeftStartOfDay = startOfDay(dirtyDateLeft);\n  var dateRightStartOfDay = startOfDay(dirtyDateRight);\n  return dateLeftStartOfDay.getTime() === dateRightStartOfDay.getTime();\n}","import isSameDay from \"../isSameDay/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isToday\n * @category Day Helpers\n * @summary Is the given date today?\n * @pure false\n *\n * @description\n * Is the given date today?\n *\n * > ⚠️ Please note that this function is not present in the FP submodule as\n * > it uses `Date.now()` internally hence impure and can't be safely curried.\n *\n * @param {Date|Number} date - the date to check\n * @returns {Boolean} the date is today\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // If today is 6 October 2014, is 6 October 14:00:00 today?\n * const result = isToday(new Date(2014, 9, 6, 14, 0))\n * //=> true\n */\nexport default function isToday(dirtyDate) {\n  requiredArgs(1, arguments);\n  return isSameDay(dirtyDate, Date.now());\n}","import isDate from \"../isDate/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isValid\n * @category Common Helpers\n * @summary Is the given date valid?\n *\n * @description\n * Returns false if argument is Invalid Date and true otherwise.\n * Argument is converted to Date using `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * Invalid Date is a Date, whose time value is NaN.\n *\n * Time value of Date: http://es5.github.io/#x15.9.1.1\n *\n * @param {*} date - the date to check\n * @returns {Boolean} the date is valid\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // For the valid date:\n * const result = isValid(new Date(2014, 1, 31))\n * //=> true\n *\n * @example\n * // For the value, convertable into a date:\n * const result = isValid(1393804800000)\n * //=> true\n *\n * @example\n * // For the invalid date:\n * const result = isValid(new Date(''))\n * //=> false\n */\nexport default function isValid(dirtyDate) {\n  requiredArgs(1, arguments);\n  if (!isDate(dirtyDate) && typeof dirtyDate !== 'number') {\n    return false;\n  }\n  var date = toDate(dirtyDate);\n  return !isNaN(Number(date));\n}","import toDate from \"../toDate/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport { getDefaultOptions } from \"../_lib/defaultOptions/index.js\";\n/**\n * @name lastDayOfWeek\n * @category Week Helpers\n * @summary Return the last day of a week for the given date.\n *\n * @description\n * Return the last day of a week for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|Number} date - the original date\n * @param {Object} [options] - an object with options.\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @returns {Date} the last day of a week\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n *\n * @example\n * // The last day of a week for 2 September 2014 11:55:00:\n * const result = lastDayOfWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Sat Sep 06 2014 00:00:00\n *\n * @example\n * // If the week starts on Monday, the last day of the week for 2 September 2014 11:55:00:\n * const result = lastDayOfWeek(new Date(2014, 8, 2, 11, 55, 0), { weekStartsOn: 1 })\n * //=> Sun Sep 07 2014 00:00:00\n */\nexport default function lastDayOfWeek(dirtyDate, options) {\n  var _ref, _ref2, _ref3, _options$weekStartsOn, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2;\n  requiredArgs(1, arguments);\n  var defaultOptions = getDefaultOptions();\n  var weekStartsOn = toInteger((_ref = (_ref2 = (_ref3 = (_options$weekStartsOn = options === null || options === void 0 ? void 0 : options.weekStartsOn) !== null && _options$weekStartsOn !== void 0 ? _options$weekStartsOn : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.weekStartsOn) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions.weekStartsOn) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.weekStartsOn) !== null && _ref !== void 0 ? _ref : 0);\n\n  // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n  if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n    throw new RangeError('weekStartsOn must be between 0 and 6');\n  }\n  var date = toDate(dirtyDate);\n  var day = date.getDay();\n  var diff = (day < weekStartsOn ? -7 : 0) + 6 - (day - weekStartsOn);\n  date.setHours(0, 0, 0, 0);\n  date.setDate(date.getDate() + diff);\n  return date;\n}","export default function buildFormatLongFn(args) {\n  return function () {\n    var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n    // TODO: Remove String()\n    var width = options.width ? String(options.width) : args.defaultWidth;\n    var format = args.formats[width] || args.formats[args.defaultWidth];\n    return format;\n  };\n}","import buildFormatLongFn from \"../../../_lib/buildFormatLongFn/index.js\";\nvar dateFormats = {\n  full: 'EEEE, d MMMM yyyy',\n  long: 'd MMMM yyyy',\n  medium: 'd MMM yyyy',\n  short: 'dd/MM/yyyy'\n};\nvar timeFormats = {\n  full: 'HH:mm:ss zzzz',\n  long: 'HH:mm:ss z',\n  medium: 'HH:mm:ss',\n  short: 'HH:mm'\n};\nvar dateTimeFormats = {\n  full: \"{{date}} 'at' {{time}}\",\n  long: \"{{date}} 'at' {{time}}\",\n  medium: '{{date}}, {{time}}',\n  short: '{{date}}, {{time}}'\n};\nvar formatLong = {\n  date: buildFormatLongFn({\n    formats: dateFormats,\n    defaultWidth: 'full'\n  }),\n  time: buildFormatLongFn({\n    formats: timeFormats,\n    defaultWidth: 'full'\n  }),\n  dateTime: buildFormatLongFn({\n    formats: dateTimeFormats,\n    defaultWidth: 'full'\n  })\n};\nexport default formatLong;","import formatDistance from \"../en-US/_lib/formatDistance/index.js\";\nimport formatRelative from \"../en-US/_lib/formatRelative/index.js\";\nimport localize from \"../en-US/_lib/localize/index.js\";\nimport match from \"../en-US/_lib/match/index.js\";\nimport formatLong from \"./_lib/formatLong/index.js\";\n/**\n * @type {Locale}\n * @category Locales\n * @summary English locale (United Kingdom).\n * @language English\n * @iso-639-2 eng\n * @author Alex [@glintik]{@link https://github.com/glintik}\n */\nvar locale = {\n  code: 'en-GB',\n  formatDistance: formatDistance,\n  formatLong: formatLong,\n  formatRelative: formatRelative,\n  localize: localize,\n  match: match,\n  options: {\n    weekStartsOn: 1 /* Monday */,\n    firstWeekContainsDate: 4\n  }\n};\nexport default locale;","var formatDistanceLocale = {\n  lessThanXSeconds: {\n    one: 'less than a second',\n    other: 'less than {{count}} seconds'\n  },\n  xSeconds: {\n    one: '1 second',\n    other: '{{count}} seconds'\n  },\n  halfAMinute: 'half a minute',\n  lessThanXMinutes: {\n    one: 'less than a minute',\n    other: 'less than {{count}} minutes'\n  },\n  xMinutes: {\n    one: '1 minute',\n    other: '{{count}} minutes'\n  },\n  aboutXHours: {\n    one: 'about 1 hour',\n    other: 'about {{count}} hours'\n  },\n  xHours: {\n    one: '1 hour',\n    other: '{{count}} hours'\n  },\n  xDays: {\n    one: '1 day',\n    other: '{{count}} days'\n  },\n  aboutXWeeks: {\n    one: 'about 1 week',\n    other: 'about {{count}} weeks'\n  },\n  xWeeks: {\n    one: '1 week',\n    other: '{{count}} weeks'\n  },\n  aboutXMonths: {\n    one: 'about 1 month',\n    other: 'about {{count}} months'\n  },\n  xMonths: {\n    one: '1 month',\n    other: '{{count}} months'\n  },\n  aboutXYears: {\n    one: 'about 1 year',\n    other: 'about {{count}} years'\n  },\n  xYears: {\n    one: '1 year',\n    other: '{{count}} years'\n  },\n  overXYears: {\n    one: 'over 1 year',\n    other: 'over {{count}} years'\n  },\n  almostXYears: {\n    one: 'almost 1 year',\n    other: 'almost {{count}} years'\n  }\n};\nvar formatDistance = function formatDistance(token, count, options) {\n  var result;\n  var tokenValue = formatDistanceLocale[token];\n  if (typeof tokenValue === 'string') {\n    result = tokenValue;\n  } else if (count === 1) {\n    result = tokenValue.one;\n  } else {\n    result = tokenValue.other.replace('{{count}}', count.toString());\n  }\n  if (options !== null && options !== void 0 && options.addSuffix) {\n    if (options.comparison && options.comparison > 0) {\n      return 'in ' + result;\n    } else {\n      return result + ' ago';\n    }\n  }\n  return result;\n};\nexport default formatDistance;","var formatRelativeLocale = {\n  lastWeek: \"'last' eeee 'at' p\",\n  yesterday: \"'yesterday at' p\",\n  today: \"'today at' p\",\n  tomorrow: \"'tomorrow at' p\",\n  nextWeek: \"eeee 'at' p\",\n  other: 'P'\n};\nvar formatRelative = function formatRelative(token, _date, _baseDate, _options) {\n  return formatRelativeLocale[token];\n};\nexport default formatRelative;","export default function buildLocalizeFn(args) {\n  return function (dirtyIndex, options) {\n    var context = options !== null && options !== void 0 && options.context ? String(options.context) : 'standalone';\n    var valuesArray;\n    if (context === 'formatting' && args.formattingValues) {\n      var defaultWidth = args.defaultFormattingWidth || args.defaultWidth;\n      var width = options !== null && options !== void 0 && options.width ? String(options.width) : defaultWidth;\n      valuesArray = args.formattingValues[width] || args.formattingValues[defaultWidth];\n    } else {\n      var _defaultWidth = args.defaultWidth;\n      var _width = options !== null && options !== void 0 && options.width ? String(options.width) : args.defaultWidth;\n      valuesArray = args.values[_width] || args.values[_defaultWidth];\n    }\n    var index = args.argumentCallback ? args.argumentCallback(dirtyIndex) : dirtyIndex;\n    // @ts-ignore: For some reason TypeScript just don't want to match it, no matter how hard we try. I challenge you to try to remove it!\n    return valuesArray[index];\n  };\n}","import buildLocalizeFn from \"../../../_lib/buildLocalizeFn/index.js\";\nvar eraValues = {\n  narrow: ['B', 'A'],\n  abbreviated: ['BC', 'AD'],\n  wide: ['Before Christ', 'Anno Domini']\n};\nvar quarterValues = {\n  narrow: ['1', '2', '3', '4'],\n  abbreviated: ['Q1', 'Q2', 'Q3', 'Q4'],\n  wide: ['1st quarter', '2nd quarter', '3rd quarter', '4th quarter']\n};\n\n// Note: in English, the names of days of the week and months are capitalized.\n// If you are making a new locale based on this one, check if the same is true for the language you're working on.\n// Generally, formatted dates should look like they are in the middle of a sentence,\n// e.g. in Spanish language the weekdays and months should be in the lowercase.\nvar monthValues = {\n  narrow: ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'],\n  abbreviated: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],\n  wide: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']\n};\nvar dayValues = {\n  narrow: ['S', 'M', 'T', 'W', 'T', 'F', 'S'],\n  short: ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'],\n  abbreviated: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],\n  wide: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday']\n};\nvar dayPeriodValues = {\n  narrow: {\n    am: 'a',\n    pm: 'p',\n    midnight: 'mi',\n    noon: 'n',\n    morning: 'morning',\n    afternoon: 'afternoon',\n    evening: 'evening',\n    night: 'night'\n  },\n  abbreviated: {\n    am: 'AM',\n    pm: 'PM',\n    midnight: 'midnight',\n    noon: 'noon',\n    morning: 'morning',\n    afternoon: 'afternoon',\n    evening: 'evening',\n    night: 'night'\n  },\n  wide: {\n    am: 'a.m.',\n    pm: 'p.m.',\n    midnight: 'midnight',\n    noon: 'noon',\n    morning: 'morning',\n    afternoon: 'afternoon',\n    evening: 'evening',\n    night: 'night'\n  }\n};\nvar formattingDayPeriodValues = {\n  narrow: {\n    am: 'a',\n    pm: 'p',\n    midnight: 'mi',\n    noon: 'n',\n    morning: 'in the morning',\n    afternoon: 'in the afternoon',\n    evening: 'in the evening',\n    night: 'at night'\n  },\n  abbreviated: {\n    am: 'AM',\n    pm: 'PM',\n    midnight: 'midnight',\n    noon: 'noon',\n    morning: 'in the morning',\n    afternoon: 'in the afternoon',\n    evening: 'in the evening',\n    night: 'at night'\n  },\n  wide: {\n    am: 'a.m.',\n    pm: 'p.m.',\n    midnight: 'midnight',\n    noon: 'noon',\n    morning: 'in the morning',\n    afternoon: 'in the afternoon',\n    evening: 'in the evening',\n    night: 'at night'\n  }\n};\nvar ordinalNumber = function ordinalNumber(dirtyNumber, _options) {\n  var number = Number(dirtyNumber);\n\n  // If ordinal numbers depend on context, for example,\n  // if they are different for different grammatical genders,\n  // use `options.unit`.\n  //\n  // `unit` can be 'year', 'quarter', 'month', 'week', 'date', 'dayOfYear',\n  // 'day', 'hour', 'minute', 'second'.\n\n  var rem100 = number % 100;\n  if (rem100 > 20 || rem100 < 10) {\n    switch (rem100 % 10) {\n      case 1:\n        return number + 'st';\n      case 2:\n        return number + 'nd';\n      case 3:\n        return number + 'rd';\n    }\n  }\n  return number + 'th';\n};\nvar localize = {\n  ordinalNumber: ordinalNumber,\n  era: buildLocalizeFn({\n    values: eraValues,\n    defaultWidth: 'wide'\n  }),\n  quarter: buildLocalizeFn({\n    values: quarterValues,\n    defaultWidth: 'wide',\n    argumentCallback: function argumentCallback(quarter) {\n      return quarter - 1;\n    }\n  }),\n  month: buildLocalizeFn({\n    values: monthValues,\n    defaultWidth: 'wide'\n  }),\n  day: buildLocalizeFn({\n    values: dayValues,\n    defaultWidth: 'wide'\n  }),\n  dayPeriod: buildLocalizeFn({\n    values: dayPeriodValues,\n    defaultWidth: 'wide',\n    formattingValues: formattingDayPeriodValues,\n    defaultFormattingWidth: 'wide'\n  })\n};\nexport default localize;","export default function buildMatchFn(args) {\n  return function (string) {\n    var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n    var width = options.width;\n    var matchPattern = width && args.matchPatterns[width] || args.matchPatterns[args.defaultMatchWidth];\n    var matchResult = string.match(matchPattern);\n    if (!matchResult) {\n      return null;\n    }\n    var matchedString = matchResult[0];\n    var parsePatterns = width && args.parsePatterns[width] || args.parsePatterns[args.defaultParseWidth];\n    var key = Array.isArray(parsePatterns) ? findIndex(parsePatterns, function (pattern) {\n      return pattern.test(matchedString);\n    }) : findKey(parsePatterns, function (pattern) {\n      return pattern.test(matchedString);\n    });\n    var value;\n    value = args.valueCallback ? args.valueCallback(key) : key;\n    value = options.valueCallback ? options.valueCallback(value) : value;\n    var rest = string.slice(matchedString.length);\n    return {\n      value: value,\n      rest: rest\n    };\n  };\n}\nfunction findKey(object, predicate) {\n  for (var key in object) {\n    if (object.hasOwnProperty(key) && predicate(object[key])) {\n      return key;\n    }\n  }\n  return undefined;\n}\nfunction findIndex(array, predicate) {\n  for (var key = 0; key < array.length; key++) {\n    if (predicate(array[key])) {\n      return key;\n    }\n  }\n  return undefined;\n}","import buildMatchFn from \"../../../_lib/buildMatchFn/index.js\";\nimport buildMatchPatternFn from \"../../../_lib/buildMatchPatternFn/index.js\";\nvar matchOrdinalNumberPattern = /^(\\d+)(th|st|nd|rd)?/i;\nvar parseOrdinalNumberPattern = /\\d+/i;\nvar matchEraPatterns = {\n  narrow: /^(b|a)/i,\n  abbreviated: /^(b\\.?\\s?c\\.?|b\\.?\\s?c\\.?\\s?e\\.?|a\\.?\\s?d\\.?|c\\.?\\s?e\\.?)/i,\n  wide: /^(before christ|before common era|anno domini|common era)/i\n};\nvar parseEraPatterns = {\n  any: [/^b/i, /^(a|c)/i]\n};\nvar matchQuarterPatterns = {\n  narrow: /^[1234]/i,\n  abbreviated: /^q[1234]/i,\n  wide: /^[1234](th|st|nd|rd)? quarter/i\n};\nvar parseQuarterPatterns = {\n  any: [/1/i, /2/i, /3/i, /4/i]\n};\nvar matchMonthPatterns = {\n  narrow: /^[jfmasond]/i,\n  abbreviated: /^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,\n  wide: /^(january|february|march|april|may|june|july|august|september|october|november|december)/i\n};\nvar parseMonthPatterns = {\n  narrow: [/^j/i, /^f/i, /^m/i, /^a/i, /^m/i, /^j/i, /^j/i, /^a/i, /^s/i, /^o/i, /^n/i, /^d/i],\n  any: [/^ja/i, /^f/i, /^mar/i, /^ap/i, /^may/i, /^jun/i, /^jul/i, /^au/i, /^s/i, /^o/i, /^n/i, /^d/i]\n};\nvar matchDayPatterns = {\n  narrow: /^[smtwf]/i,\n  short: /^(su|mo|tu|we|th|fr|sa)/i,\n  abbreviated: /^(sun|mon|tue|wed|thu|fri|sat)/i,\n  wide: /^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i\n};\nvar parseDayPatterns = {\n  narrow: [/^s/i, /^m/i, /^t/i, /^w/i, /^t/i, /^f/i, /^s/i],\n  any: [/^su/i, /^m/i, /^tu/i, /^w/i, /^th/i, /^f/i, /^sa/i]\n};\nvar matchDayPeriodPatterns = {\n  narrow: /^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,\n  any: /^([ap]\\.?\\s?m\\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i\n};\nvar parseDayPeriodPatterns = {\n  any: {\n    am: /^a/i,\n    pm: /^p/i,\n    midnight: /^mi/i,\n    noon: /^no/i,\n    morning: /morning/i,\n    afternoon: /afternoon/i,\n    evening: /evening/i,\n    night: /night/i\n  }\n};\nvar match = {\n  ordinalNumber: buildMatchPatternFn({\n    matchPattern: matchOrdinalNumberPattern,\n    parsePattern: parseOrdinalNumberPattern,\n    valueCallback: function valueCallback(value) {\n      return parseInt(value, 10);\n    }\n  }),\n  era: buildMatchFn({\n    matchPatterns: matchEraPatterns,\n    defaultMatchWidth: 'wide',\n    parsePatterns: parseEraPatterns,\n    defaultParseWidth: 'any'\n  }),\n  quarter: buildMatchFn({\n    matchPatterns: matchQuarterPatterns,\n    defaultMatchWidth: 'wide',\n    parsePatterns: parseQuarterPatterns,\n    defaultParseWidth: 'any',\n    valueCallback: function valueCallback(index) {\n      return index + 1;\n    }\n  }),\n  month: buildMatchFn({\n    matchPatterns: matchMonthPatterns,\n    defaultMatchWidth: 'wide',\n    parsePatterns: parseMonthPatterns,\n    defaultParseWidth: 'any'\n  }),\n  day: buildMatchFn({\n    matchPatterns: matchDayPatterns,\n    defaultMatchWidth: 'wide',\n    parsePatterns: parseDayPatterns,\n    defaultParseWidth: 'any'\n  }),\n  dayPeriod: buildMatchFn({\n    matchPatterns: matchDayPeriodPatterns,\n    defaultMatchWidth: 'any',\n    parsePatterns: parseDayPeriodPatterns,\n    defaultParseWidth: 'any'\n  })\n};\nexport default match;","export default function buildMatchPatternFn(args) {\n  return function (string) {\n    var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n    var matchResult = string.match(args.matchPattern);\n    if (!matchResult) return null;\n    var matchedString = matchResult[0];\n    var parseResult = string.match(args.parsePattern);\n    if (!parseResult) return null;\n    var value = args.valueCallback ? args.valueCallback(parseResult[0]) : parseResult[0];\n    value = options.valueCallback ? options.valueCallback(value) : value;\n    var rest = string.slice(matchedString.length);\n    return {\n      value: value,\n      rest: rest\n    };\n  };\n}","import buildFormatLongFn from \"../../../_lib/buildFormatLongFn/index.js\";\nvar dateFormats = {\n  full: 'EEEE, MMMM do, y',\n  long: 'MMMM do, y',\n  medium: 'MMM d, y',\n  short: 'MM/dd/yyyy'\n};\nvar timeFormats = {\n  full: 'h:mm:ss a zzzz',\n  long: 'h:mm:ss a z',\n  medium: 'h:mm:ss a',\n  short: 'h:mm a'\n};\nvar dateTimeFormats = {\n  full: \"{{date}} 'at' {{time}}\",\n  long: \"{{date}} 'at' {{time}}\",\n  medium: '{{date}}, {{time}}',\n  short: '{{date}}, {{time}}'\n};\nvar formatLong = {\n  date: buildFormatLongFn({\n    formats: dateFormats,\n    defaultWidth: 'full'\n  }),\n  time: buildFormatLongFn({\n    formats: timeFormats,\n    defaultWidth: 'full'\n  }),\n  dateTime: buildFormatLongFn({\n    formats: dateTimeFormats,\n    defaultWidth: 'full'\n  })\n};\nexport default formatLong;","import formatDistance from \"./_lib/formatDistance/index.js\";\nimport formatLong from \"./_lib/formatLong/index.js\";\nimport formatRelative from \"./_lib/formatRelative/index.js\";\nimport localize from \"./_lib/localize/index.js\";\nimport match from \"./_lib/match/index.js\";\n/**\n * @type {Locale}\n * @category Locales\n * @summary English locale (United States).\n * @language English\n * @iso-639-2 eng\n * @author Sasha Koss [@kossnocorp]{@link https://github.com/kossnocorp}\n * @author Lesha Koss [@leshakoss]{@link https://github.com/leshakoss}\n */\nvar locale = {\n  code: 'en-US',\n  formatDistance: formatDistance,\n  formatLong: formatLong,\n  formatRelative: formatRelative,\n  localize: localize,\n  match: match,\n  options: {\n    weekStartsOn: 0 /* Sunday */,\n    firstWeekContainsDate: 1\n  }\n};\nexport default locale;","import { millisecondsInHour, millisecondsInMinute } from \"../constants/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\n/**\n * @name parseISO\n * @category Common Helpers\n * @summary Parse ISO string\n *\n * @description\n * Parse the given string in ISO 8601 format and return an instance of Date.\n *\n * Function accepts complete ISO 8601 formats as well as partial implementations.\n * ISO 8601: http://en.wikipedia.org/wiki/ISO_8601\n *\n * If the argument isn't a string, the function cannot parse the string or\n * the values are invalid, it returns Invalid Date.\n *\n * @param {String} argument - the value to convert\n * @param {Object} [options] - an object with options.\n * @param {0|1|2} [options.additionalDigits=2] - the additional number of digits in the extended year format\n * @returns {Date} the parsed date in the local time zone\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Convert string '2014-02-11T11:30:30' to date:\n * const result = parseISO('2014-02-11T11:30:30')\n * //=> Tue Feb 11 2014 11:30:30\n *\n * @example\n * // Convert string '+02014101' to date,\n * // if the additional number of digits in the extended year format is 1:\n * const result = parseISO('+02014101', { additionalDigits: 1 })\n * //=> Fri Apr 11 2014 00:00:00\n */\nexport default function parseISO(argument, options) {\n  var _options$additionalDi;\n  requiredArgs(1, arguments);\n  var additionalDigits = toInteger((_options$additionalDi = options === null || options === void 0 ? void 0 : options.additionalDigits) !== null && _options$additionalDi !== void 0 ? _options$additionalDi : 2);\n  if (additionalDigits !== 2 && additionalDigits !== 1 && additionalDigits !== 0) {\n    throw new RangeError('additionalDigits must be 0, 1 or 2');\n  }\n  if (!(typeof argument === 'string' || Object.prototype.toString.call(argument) === '[object String]')) {\n    return new Date(NaN);\n  }\n  var dateStrings = splitDateString(argument);\n  var date;\n  if (dateStrings.date) {\n    var parseYearResult = parseYear(dateStrings.date, additionalDigits);\n    date = parseDate(parseYearResult.restDateString, parseYearResult.year);\n  }\n  if (!date || isNaN(date.getTime())) {\n    return new Date(NaN);\n  }\n  var timestamp = date.getTime();\n  var time = 0;\n  var offset;\n  if (dateStrings.time) {\n    time = parseTime(dateStrings.time);\n    if (isNaN(time)) {\n      return new Date(NaN);\n    }\n  }\n  if (dateStrings.timezone) {\n    offset = parseTimezone(dateStrings.timezone);\n    if (isNaN(offset)) {\n      return new Date(NaN);\n    }\n  } else {\n    var dirtyDate = new Date(timestamp + time);\n    // js parsed string assuming it's in UTC timezone\n    // but we need it to be parsed in our timezone\n    // so we use utc values to build date in our timezone.\n    // Year values from 0 to 99 map to the years 1900 to 1999\n    // so set year explicitly with setFullYear.\n    var result = new Date(0);\n    result.setFullYear(dirtyDate.getUTCFullYear(), dirtyDate.getUTCMonth(), dirtyDate.getUTCDate());\n    result.setHours(dirtyDate.getUTCHours(), dirtyDate.getUTCMinutes(), dirtyDate.getUTCSeconds(), dirtyDate.getUTCMilliseconds());\n    return result;\n  }\n  return new Date(timestamp + time + offset);\n}\nvar patterns = {\n  dateTimeDelimiter: /[T ]/,\n  timeZoneDelimiter: /[Z ]/i,\n  timezone: /([Z+-].*)$/\n};\nvar dateRegex = /^-?(?:(\\d{3})|(\\d{2})(?:-?(\\d{2}))?|W(\\d{2})(?:-?(\\d{1}))?|)$/;\nvar timeRegex = /^(\\d{2}(?:[.,]\\d*)?)(?::?(\\d{2}(?:[.,]\\d*)?))?(?::?(\\d{2}(?:[.,]\\d*)?))?$/;\nvar timezoneRegex = /^([+-])(\\d{2})(?::?(\\d{2}))?$/;\nfunction splitDateString(dateString) {\n  var dateStrings = {};\n  var array = dateString.split(patterns.dateTimeDelimiter);\n  var timeString;\n\n  // The regex match should only return at maximum two array elements.\n  // [date], [time], or [date, time].\n  if (array.length > 2) {\n    return dateStrings;\n  }\n  if (/:/.test(array[0])) {\n    timeString = array[0];\n  } else {\n    dateStrings.date = array[0];\n    timeString = array[1];\n    if (patterns.timeZoneDelimiter.test(dateStrings.date)) {\n      dateStrings.date = dateString.split(patterns.timeZoneDelimiter)[0];\n      timeString = dateString.substr(dateStrings.date.length, dateString.length);\n    }\n  }\n  if (timeString) {\n    var token = patterns.timezone.exec(timeString);\n    if (token) {\n      dateStrings.time = timeString.replace(token[1], '');\n      dateStrings.timezone = token[1];\n    } else {\n      dateStrings.time = timeString;\n    }\n  }\n  return dateStrings;\n}\nfunction parseYear(dateString, additionalDigits) {\n  var regex = new RegExp('^(?:(\\\\d{4}|[+-]\\\\d{' + (4 + additionalDigits) + '})|(\\\\d{2}|[+-]\\\\d{' + (2 + additionalDigits) + '})$)');\n  var captures = dateString.match(regex);\n  // Invalid ISO-formatted year\n  if (!captures) return {\n    year: NaN,\n    restDateString: ''\n  };\n  var year = captures[1] ? parseInt(captures[1]) : null;\n  var century = captures[2] ? parseInt(captures[2]) : null;\n\n  // either year or century is null, not both\n  return {\n    year: century === null ? year : century * 100,\n    restDateString: dateString.slice((captures[1] || captures[2]).length)\n  };\n}\nfunction parseDate(dateString, year) {\n  // Invalid ISO-formatted year\n  if (year === null) return new Date(NaN);\n  var captures = dateString.match(dateRegex);\n  // Invalid ISO-formatted string\n  if (!captures) return new Date(NaN);\n  var isWeekDate = !!captures[4];\n  var dayOfYear = parseDateUnit(captures[1]);\n  var month = parseDateUnit(captures[2]) - 1;\n  var day = parseDateUnit(captures[3]);\n  var week = parseDateUnit(captures[4]);\n  var dayOfWeek = parseDateUnit(captures[5]) - 1;\n  if (isWeekDate) {\n    if (!validateWeekDate(year, week, dayOfWeek)) {\n      return new Date(NaN);\n    }\n    return dayOfISOWeekYear(year, week, dayOfWeek);\n  } else {\n    var date = new Date(0);\n    if (!validateDate(year, month, day) || !validateDayOfYearDate(year, dayOfYear)) {\n      return new Date(NaN);\n    }\n    date.setUTCFullYear(year, month, Math.max(dayOfYear, day));\n    return date;\n  }\n}\nfunction parseDateUnit(value) {\n  return value ? parseInt(value) : 1;\n}\nfunction parseTime(timeString) {\n  var captures = timeString.match(timeRegex);\n  if (!captures) return NaN; // Invalid ISO-formatted time\n\n  var hours = parseTimeUnit(captures[1]);\n  var minutes = parseTimeUnit(captures[2]);\n  var seconds = parseTimeUnit(captures[3]);\n  if (!validateTime(hours, minutes, seconds)) {\n    return NaN;\n  }\n  return hours * millisecondsInHour + minutes * millisecondsInMinute + seconds * 1000;\n}\nfunction parseTimeUnit(value) {\n  return value && parseFloat(value.replace(',', '.')) || 0;\n}\nfunction parseTimezone(timezoneString) {\n  if (timezoneString === 'Z') return 0;\n  var captures = timezoneString.match(timezoneRegex);\n  if (!captures) return 0;\n  var sign = captures[1] === '+' ? -1 : 1;\n  var hours = parseInt(captures[2]);\n  var minutes = captures[3] && parseInt(captures[3]) || 0;\n  if (!validateTimezone(hours, minutes)) {\n    return NaN;\n  }\n  return sign * (hours * millisecondsInHour + minutes * millisecondsInMinute);\n}\nfunction dayOfISOWeekYear(isoWeekYear, week, day) {\n  var date = new Date(0);\n  date.setUTCFullYear(isoWeekYear, 0, 4);\n  var fourthOfJanuaryDay = date.getUTCDay() || 7;\n  var diff = (week - 1) * 7 + day + 1 - fourthOfJanuaryDay;\n  date.setUTCDate(date.getUTCDate() + diff);\n  return date;\n}\n\n// Validation functions\n\n// February is null to handle the leap year (using ||)\nvar daysInMonths = [31, null, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\nfunction isLeapYearIndex(year) {\n  return year % 400 === 0 || year % 4 === 0 && year % 100 !== 0;\n}\nfunction validateDate(year, month, date) {\n  return month >= 0 && month <= 11 && date >= 1 && date <= (daysInMonths[month] || (isLeapYearIndex(year) ? 29 : 28));\n}\nfunction validateDayOfYearDate(year, dayOfYear) {\n  return dayOfYear >= 1 && dayOfYear <= (isLeapYearIndex(year) ? 366 : 365);\n}\nfunction validateWeekDate(_year, week, day) {\n  return week >= 1 && week <= 53 && day >= 0 && day <= 6;\n}\nfunction validateTime(hours, minutes, seconds) {\n  if (hours === 24) {\n    return minutes === 0 && seconds === 0;\n  }\n  return seconds >= 0 && seconds < 60 && minutes >= 0 && minutes < 60 && hours >= 0 && hours < 25;\n}\nfunction validateTimezone(_hours, minutes) {\n  return minutes >= 0 && minutes <= 59;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name startOfDay\n * @category Day Helpers\n * @summary Return the start of a day for the given date.\n *\n * @description\n * Return the start of a day for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the start of a day\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The start of a day for 2 September 2014 11:55:00:\n * const result = startOfDay(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 02 2014 00:00:00\n */\nexport default function startOfDay(dirtyDate) {\n  requiredArgs(1, arguments);\n  var date = toDate(dirtyDate);\n  date.setHours(0, 0, 0, 0);\n  return date;\n}","import startOfWeek from \"../startOfWeek/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name startOfISOWeek\n * @category ISO Week Helpers\n * @summary Return the start of an ISO week for the given date.\n *\n * @description\n * Return the start of an ISO week for the given date.\n * The result will be in the local timezone.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the start of an ISO week\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The start of an ISO week for 2 September 2014 11:55:00:\n * const result = startOfISOWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Mon Sep 01 2014 00:00:00\n */\nexport default function startOfISOWeek(dirtyDate) {\n  requiredArgs(1, arguments);\n  return startOfWeek(dirtyDate, {\n    weekStartsOn: 1\n  });\n}","import getISOWeekYear from \"../getISOWeekYear/index.js\";\nimport startOfISOWeek from \"../startOfISOWeek/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name startOfISOWeekYear\n * @category ISO Week-Numbering Year Helpers\n * @summary Return the start of an ISO week-numbering year for the given date.\n *\n * @description\n * Return the start of an ISO week-numbering year,\n * which always starts 3 days before the year's first Thursday.\n * The result will be in the local timezone.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the start of an ISO week-numbering year\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The start of an ISO week-numbering year for 2 July 2005:\n * const result = startOfISOWeekYear(new Date(2005, 6, 2))\n * //=> Mon Jan 03 2005 00:00:00\n */\nexport default function startOfISOWeekYear(dirtyDate) {\n  requiredArgs(1, arguments);\n  var year = getISOWeekYear(dirtyDate);\n  var fourthOfJanuary = new Date(0);\n  fourthOfJanuary.setFullYear(year, 0, 4);\n  fourthOfJanuary.setHours(0, 0, 0, 0);\n  var date = startOfISOWeek(fourthOfJanuary);\n  return date;\n}","import toDate from \"../toDate/index.js\";\nimport startOfISOWeek from \"../startOfISOWeek/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name getISOWeekYear\n * @category ISO Week-Numbering Year Helpers\n * @summary Get the ISO week-numbering year of the given date.\n *\n * @description\n * Get the ISO week-numbering year of the given date,\n * which always starts 3 days before the year's first Thursday.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the ISO week-numbering year\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Which ISO-week numbering year is 2 January 2005?\n * const result = getISOWeekYear(new Date(2005, 0, 2))\n * //=> 2004\n */\nexport default function getISOWeekYear(dirtyDate) {\n  requiredArgs(1, arguments);\n  var date = toDate(dirtyDate);\n  var year = date.getFullYear();\n  var fourthOfJanuaryOfNextYear = new Date(0);\n  fourthOfJanuaryOfNextYear.setFullYear(year + 1, 0, 4);\n  fourthOfJanuaryOfNextYear.setHours(0, 0, 0, 0);\n  var startOfNextYear = startOfISOWeek(fourthOfJanuaryOfNextYear);\n  var fourthOfJanuaryOfThisYear = new Date(0);\n  fourthOfJanuaryOfThisYear.setFullYear(year, 0, 4);\n  fourthOfJanuaryOfThisYear.setHours(0, 0, 0, 0);\n  var startOfThisYear = startOfISOWeek(fourthOfJanuaryOfThisYear);\n  if (date.getTime() >= startOfNextYear.getTime()) {\n    return year + 1;\n  } else if (date.getTime() >= startOfThisYear.getTime()) {\n    return year;\n  } else {\n    return year - 1;\n  }\n}","/**\n * @name startOfTomorrow\n * @category Day Helpers\n * @summary Return the start of tomorrow.\n * @pure false\n *\n * @description\n * Return the start of tomorrow.\n *\n * > ⚠️ Please note that this function is not present in the FP submodule as\n * > it uses `new Date()` internally hence impure and can't be safely curried.\n *\n * @returns {Date} the start of tomorrow\n *\n * @example\n * // If today is 6 October 2014:\n * const result = startOfTomorrow()\n * //=> Tue Oct 7 2014 00:00:00\n */\nexport default function startOfTomorrow() {\n  var now = new Date();\n  var year = now.getFullYear();\n  var month = now.getMonth();\n  var day = now.getDate();\n  var date = new Date(0);\n  date.setFullYear(year, month, day + 1);\n  date.setHours(0, 0, 0, 0);\n  return date;\n}","import toDate from \"../toDate/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport { getDefaultOptions } from \"../_lib/defaultOptions/index.js\";\n/**\n * @name startOfWeek\n * @category Week Helpers\n * @summary Return the start of a week for the given date.\n *\n * @description\n * Return the start of a week for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|Number} date - the original date\n * @param {Object} [options] - an object with options.\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @returns {Date} the start of a week\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n *\n * @example\n * // The start of a week for 2 September 2014 11:55:00:\n * const result = startOfWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Sun Aug 31 2014 00:00:00\n *\n * @example\n * // If the week starts on Monday, the start of the week for 2 September 2014 11:55:00:\n * const result = startOfWeek(new Date(2014, 8, 2, 11, 55, 0), { weekStartsOn: 1 })\n * //=> Mon Sep 01 2014 00:00:00\n */\nexport default function startOfWeek(dirtyDate, options) {\n  var _ref, _ref2, _ref3, _options$weekStartsOn, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2;\n  requiredArgs(1, arguments);\n  var defaultOptions = getDefaultOptions();\n  var weekStartsOn = toInteger((_ref = (_ref2 = (_ref3 = (_options$weekStartsOn = options === null || options === void 0 ? void 0 : options.weekStartsOn) !== null && _options$weekStartsOn !== void 0 ? _options$weekStartsOn : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.weekStartsOn) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions.weekStartsOn) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.weekStartsOn) !== null && _ref !== void 0 ? _ref : 0);\n\n  // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n  if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n    throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n  }\n  var date = toDate(dirtyDate);\n  var day = date.getDay();\n  var diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;\n  date.setDate(date.getDate() - diff);\n  date.setHours(0, 0, 0, 0);\n  return date;\n}","import addDays from \"../addDays/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\n/**\n * @name subDays\n * @category Day Helpers\n * @summary Subtract the specified number of days from the given date.\n *\n * @description\n * Subtract the specified number of days from the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of days to be subtracted. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the days subtracted\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Subtract 10 days from 1 September 2014:\n * const result = subDays(new Date(2014, 8, 1), 10)\n * //=> Fri Aug 22 2014 00:00:00\n */\nexport default function subDays(dirtyDate, dirtyAmount) {\n  requiredArgs(2, arguments);\n  var amount = toInteger(dirtyAmount);\n  return addDays(dirtyDate, -amount);\n}","import addHours from \"../addHours/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\n/**\n * @name subHours\n * @category Hour Helpers\n * @summary Subtract the specified number of hours from the given date.\n *\n * @description\n * Subtract the specified number of hours from the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of hours to be subtracted. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the hours subtracted\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Subtract 2 hours from 11 July 2014 01:00:00:\n * const result = subHours(new Date(2014, 6, 11, 1, 0), 2)\n * //=> Thu Jul 10 2014 23:00:00\n */\nexport default function subHours(dirtyDate, dirtyAmount) {\n  requiredArgs(2, arguments);\n  var amount = toInteger(dirtyAmount);\n  return addHours(dirtyDate, -amount);\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport addYears from \"../addYears/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name subYears\n * @category Year Helpers\n * @summary Subtract the specified number of years from the given date.\n *\n * @description\n * Subtract the specified number of years from the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of years to be subtracted. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the years subtracted\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Subtract 5 years from 1 September 2014:\n * const result = subYears(new Date(2014, 8, 1), 5)\n * //=> Tue Sep 01 2009 00:00:00\n */\nexport default function subYears(dirtyDate, dirtyAmount) {\n  requiredArgs(2, arguments);\n  var amount = toInteger(dirtyAmount);\n  return addYears(dirtyDate, -amount);\n}","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name toDate\n * @category Common Helpers\n * @summary Convert the given argument to an instance of Date.\n *\n * @description\n * Convert the given argument to an instance of Date.\n *\n * If the argument is an instance of Date, the function returns its clone.\n *\n * If the argument is a number, it is treated as a timestamp.\n *\n * If the argument is none of the above, the function returns Invalid Date.\n *\n * **Note**: *all* Date arguments passed to any *date-fns* function is processed by `toDate`.\n *\n * @param {Date|Number} argument - the value to convert\n * @returns {Date} the parsed date in the local time zone\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Clone the date:\n * const result = toDate(new Date(2014, 1, 11, 11, 30, 30))\n * //=> Tue Feb 11 2014 11:30:30\n *\n * @example\n * // Convert the timestamp to date:\n * const result = toDate(1392098430000)\n * //=> Tue Feb 11 2014 11:30:30\n */\nexport default function toDate(argument) {\n  requiredArgs(1, arguments);\n  var argStr = Object.prototype.toString.call(argument);\n\n  // Clone the date\n  if (argument instanceof Date || _typeof(argument) === 'object' && argStr === '[object Date]') {\n    // Prevent the date to lose the milliseconds when passed to new Date() in IE10\n    return new Date(argument.getTime());\n  } else if (typeof argument === 'number' || argStr === '[object Number]') {\n    return new Date(argument);\n  } else {\n    if ((typeof argument === 'string' || argStr === '[object String]') && typeof console !== 'undefined') {\n      // eslint-disable-next-line no-console\n      console.warn(\"Starting with v2.0.0-beta.1 date-fns doesn't accept strings as date arguments. Please use `parseISO` to parse strings. See: https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#string-arguments\");\n      // eslint-disable-next-line no-console\n      console.warn(new Error().stack);\n    }\n    return new Date(NaN);\n  }\n}","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = format;\nvar _index = _interopRequireDefault(require(\"../isValid/index.js\"));\nvar _index2 = _interopRequireDefault(require(\"../subMilliseconds/index.js\"));\nvar _index3 = _interopRequireDefault(require(\"../toDate/index.js\"));\nvar _index4 = _interopRequireDefault(require(\"../_lib/format/formatters/index.js\"));\nvar _index5 = _interopRequireDefault(require(\"../_lib/format/longFormatters/index.js\"));\nvar _index6 = _interopRequireDefault(require(\"../_lib/getTimezoneOffsetInMilliseconds/index.js\"));\nvar _index7 = require(\"../_lib/protectedTokens/index.js\");\nvar _index8 = _interopRequireDefault(require(\"../_lib/toInteger/index.js\"));\nvar _index9 = _interopRequireDefault(require(\"../_lib/requiredArgs/index.js\"));\nvar _index10 = require(\"../_lib/defaultOptions/index.js\");\nvar _index11 = _interopRequireDefault(require(\"../_lib/defaultLocale/index.js\"));\n// This RegExp consists of three parts separated by `|`:\n// - [yYQqMLwIdDecihHKkms]o matches any available ordinal number token\n//   (one of the certain letters followed by `o`)\n// - (\\w)\\1* matches any sequences of the same letter\n// - '' matches two quote characters in a row\n// - '(''|[^'])+('|$) matches anything surrounded by two quote characters ('),\n//   except a single quote symbol, which ends the sequence.\n//   Two quote characters do not end the sequence.\n//   If there is no matching single quote\n//   then the sequence will continue until the end of the string.\n// - . matches any single character unmatched by previous parts of the RegExps\nvar formattingTokensRegExp = /[yYQqMLwIdDecihHKkms]o|(\\w)\\1*|''|'(''|[^'])+('|$)|./g;\n\n// This RegExp catches symbols escaped by quotes, and also\n// sequences of symbols P, p, and the combinations like `PPPPPPPppppp`\nvar longFormattingTokensRegExp = /P+p+|P+|p+|''|'(''|[^'])+('|$)|./g;\nvar escapedStringRegExp = /^'([^]*?)'?$/;\nvar doubleQuoteRegExp = /''/g;\nvar unescapedLatinCharacterRegExp = /[a-zA-Z]/;\n\n/**\n * @name format\n * @category Common Helpers\n * @summary Format the date.\n *\n * @description\n * Return the formatted date string in the given format. The result may vary by locale.\n *\n * > ⚠️ Please note that the `format` tokens differ from Moment.js and other libraries.\n * > See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * The characters wrapped between two single quotes characters (') are escaped.\n * Two single quotes in a row, whether inside or outside a quoted sequence, represent a 'real' single quote.\n * (see the last example)\n *\n * Format of the string is based on Unicode Technical Standard #35:\n * https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n * with a few additions (see note 7 below the table).\n *\n * Accepted patterns:\n * | Unit                            | Pattern | Result examples                   | Notes |\n * |---------------------------------|---------|-----------------------------------|-------|\n * | Era                             | G..GGG  | AD, BC                            |       |\n * |                                 | GGGG    | Anno Domini, Before Christ        | 2     |\n * |                                 | GGGGG   | A, B                              |       |\n * | Calendar year                   | y       | 44, 1, 1900, 2017                 | 5     |\n * |                                 | yo      | 44th, 1st, 0th, 17th              | 5,7   |\n * |                                 | yy      | 44, 01, 00, 17                    | 5     |\n * |                                 | yyy     | 044, 001, 1900, 2017              | 5     |\n * |                                 | yyyy    | 0044, 0001, 1900, 2017            | 5     |\n * |                                 | yyyyy   | ...                               | 3,5   |\n * | Local week-numbering year       | Y       | 44, 1, 1900, 2017                 | 5     |\n * |                                 | Yo      | 44th, 1st, 1900th, 2017th         | 5,7   |\n * |                                 | YY      | 44, 01, 00, 17                    | 5,8   |\n * |                                 | YYY     | 044, 001, 1900, 2017              | 5     |\n * |                                 | YYYY    | 0044, 0001, 1900, 2017            | 5,8   |\n * |                                 | YYYYY   | ...                               | 3,5   |\n * | ISO week-numbering year         | R       | -43, 0, 1, 1900, 2017             | 5,7   |\n * |                                 | RR      | -43, 00, 01, 1900, 2017           | 5,7   |\n * |                                 | RRR     | -043, 000, 001, 1900, 2017        | 5,7   |\n * |                                 | RRRR    | -0043, 0000, 0001, 1900, 2017     | 5,7   |\n * |                                 | RRRRR   | ...                               | 3,5,7 |\n * | Extended year                   | u       | -43, 0, 1, 1900, 2017             | 5     |\n * |                                 | uu      | -43, 01, 1900, 2017               | 5     |\n * |                                 | uuu     | -043, 001, 1900, 2017             | 5     |\n * |                                 | uuuu    | -0043, 0001, 1900, 2017           | 5     |\n * |                                 | uuuuu   | ...                               | 3,5   |\n * | Quarter (formatting)            | Q       | 1, 2, 3, 4                        |       |\n * |                                 | Qo      | 1st, 2nd, 3rd, 4th                | 7     |\n * |                                 | QQ      | 01, 02, 03, 04                    |       |\n * |                                 | QQQ     | Q1, Q2, Q3, Q4                    |       |\n * |                                 | QQQQ    | 1st quarter, 2nd quarter, ...     | 2     |\n * |                                 | QQQQQ   | 1, 2, 3, 4                        | 4     |\n * | Quarter (stand-alone)           | q       | 1, 2, 3, 4                        |       |\n * |                                 | qo      | 1st, 2nd, 3rd, 4th                | 7     |\n * |                                 | qq      | 01, 02, 03, 04                    |       |\n * |                                 | qqq     | Q1, Q2, Q3, Q4                    |       |\n * |                                 | qqqq    | 1st quarter, 2nd quarter, ...     | 2     |\n * |                                 | qqqqq   | 1, 2, 3, 4                        | 4     |\n * | Month (formatting)              | M       | 1, 2, ..., 12                     |       |\n * |                                 | Mo      | 1st, 2nd, ..., 12th               | 7     |\n * |                                 | MM      | 01, 02, ..., 12                   |       |\n * |                                 | MMM     | Jan, Feb, ..., Dec                |       |\n * |                                 | MMMM    | January, February, ..., December  | 2     |\n * |                                 | MMMMM   | J, F, ..., D                      |       |\n * | Month (stand-alone)             | L       | 1, 2, ..., 12                     |       |\n * |                                 | Lo      | 1st, 2nd, ..., 12th               | 7     |\n * |                                 | LL      | 01, 02, ..., 12                   |       |\n * |                                 | LLL     | Jan, Feb, ..., Dec                |       |\n * |                                 | LLLL    | January, February, ..., December  | 2     |\n * |                                 | LLLLL   | J, F, ..., D                      |       |\n * | Local week of year              | w       | 1, 2, ..., 53                     |       |\n * |                                 | wo      | 1st, 2nd, ..., 53th               | 7     |\n * |                                 | ww      | 01, 02, ..., 53                   |       |\n * | ISO week of year                | I       | 1, 2, ..., 53                     | 7     |\n * |                                 | Io      | 1st, 2nd, ..., 53th               | 7     |\n * |                                 | II      | 01, 02, ..., 53                   | 7     |\n * | Day of month                    | d       | 1, 2, ..., 31                     |       |\n * |                                 | do      | 1st, 2nd, ..., 31st               | 7     |\n * |                                 | dd      | 01, 02, ..., 31                   |       |\n * | Day of year                     | D       | 1, 2, ..., 365, 366               | 9     |\n * |                                 | Do      | 1st, 2nd, ..., 365th, 366th       | 7     |\n * |                                 | DD      | 01, 02, ..., 365, 366             | 9     |\n * |                                 | DDD     | 001, 002, ..., 365, 366           |       |\n * |                                 | DDDD    | ...                               | 3     |\n * | Day of week (formatting)        | E..EEE  | Mon, Tue, Wed, ..., Sun           |       |\n * |                                 | EEEE    | Monday, Tuesday, ..., Sunday      | 2     |\n * |                                 | EEEEE   | M, T, W, T, F, S, S               |       |\n * |                                 | EEEEEE  | Mo, Tu, We, Th, Fr, Sa, Su        |       |\n * | ISO day of week (formatting)    | i       | 1, 2, 3, ..., 7                   | 7     |\n * |                                 | io      | 1st, 2nd, ..., 7th                | 7     |\n * |                                 | ii      | 01, 02, ..., 07                   | 7     |\n * |                                 | iii     | Mon, Tue, Wed, ..., Sun           | 7     |\n * |                                 | iiii    | Monday, Tuesday, ..., Sunday      | 2,7   |\n * |                                 | iiiii   | M, T, W, T, F, S, S               | 7     |\n * |                                 | iiiiii  | Mo, Tu, We, Th, Fr, Sa, Su        | 7     |\n * | Local day of week (formatting)  | e       | 2, 3, 4, ..., 1                   |       |\n * |                                 | eo      | 2nd, 3rd, ..., 1st                | 7     |\n * |                                 | ee      | 02, 03, ..., 01                   |       |\n * |                                 | eee     | Mon, Tue, Wed, ..., Sun           |       |\n * |                                 | eeee    | Monday, Tuesday, ..., Sunday      | 2     |\n * |                                 | eeeee   | M, T, W, T, F, S, S               |       |\n * |                                 | eeeeee  | Mo, Tu, We, Th, Fr, Sa, Su        |       |\n * | Local day of week (stand-alone) | c       | 2, 3, 4, ..., 1                   |       |\n * |                                 | co      | 2nd, 3rd, ..., 1st                | 7     |\n * |                                 | cc      | 02, 03, ..., 01                   |       |\n * |                                 | ccc     | Mon, Tue, Wed, ..., Sun           |       |\n * |                                 | cccc    | Monday, Tuesday, ..., Sunday      | 2     |\n * |                                 | ccccc   | M, T, W, T, F, S, S               |       |\n * |                                 | cccccc  | Mo, Tu, We, Th, Fr, Sa, Su        |       |\n * | AM, PM                          | a..aa   | AM, PM                            |       |\n * |                                 | aaa     | am, pm                            |       |\n * |                                 | aaaa    | a.m., p.m.                        | 2     |\n * |                                 | aaaaa   | a, p                              |       |\n * | AM, PM, noon, midnight          | b..bb   | AM, PM, noon, midnight            |       |\n * |                                 | bbb     | am, pm, noon, midnight            |       |\n * |                                 | bbbb    | a.m., p.m., noon, midnight        | 2     |\n * |                                 | bbbbb   | a, p, n, mi                       |       |\n * | Flexible day period             | B..BBB  | at night, in the morning, ...     |       |\n * |                                 | BBBB    | at night, in the morning, ...     | 2     |\n * |                                 | BBBBB   | at night, in the morning, ...     |       |\n * | Hour [1-12]                     | h       | 1, 2, ..., 11, 12                 |       |\n * |                                 | ho      | 1st, 2nd, ..., 11th, 12th         | 7     |\n * |                                 | hh      | 01, 02, ..., 11, 12               |       |\n * | Hour [0-23]                     | H       | 0, 1, 2, ..., 23                  |       |\n * |                                 | Ho      | 0th, 1st, 2nd, ..., 23rd          | 7     |\n * |                                 | HH      | 00, 01, 02, ..., 23               |       |\n * | Hour [0-11]                     | K       | 1, 2, ..., 11, 0                  |       |\n * |                                 | Ko      | 1st, 2nd, ..., 11th, 0th          | 7     |\n * |                                 | KK      | 01, 02, ..., 11, 00               |       |\n * | Hour [1-24]                     | k       | 24, 1, 2, ..., 23                 |       |\n * |                                 | ko      | 24th, 1st, 2nd, ..., 23rd         | 7     |\n * |                                 | kk      | 24, 01, 02, ..., 23               |       |\n * | Minute                          | m       | 0, 1, ..., 59                     |       |\n * |                                 | mo      | 0th, 1st, ..., 59th               | 7     |\n * |                                 | mm      | 00, 01, ..., 59                   |       |\n * | Second                          | s       | 0, 1, ..., 59                     |       |\n * |                                 | so      | 0th, 1st, ..., 59th               | 7     |\n * |                                 | ss      | 00, 01, ..., 59                   |       |\n * | Fraction of second              | S       | 0, 1, ..., 9                      |       |\n * |                                 | SS      | 00, 01, ..., 99                   |       |\n * |                                 | SSS     | 000, 001, ..., 999                |       |\n * |                                 | SSSS    | ...                               | 3     |\n * | Timezone (ISO-8601 w/ Z)        | X       | -08, +0530, Z                     |       |\n * |                                 | XX      | -0800, +0530, Z                   |       |\n * |                                 | XXX     | -08:00, +05:30, Z                 |       |\n * |                                 | XXXX    | -0800, +0530, Z, +123456          | 2     |\n * |                                 | XXXXX   | -08:00, +05:30, Z, +12:34:56      |       |\n * | Timezone (ISO-8601 w/o Z)       | x       | -08, +0530, +00                   |       |\n * |                                 | xx      | -0800, +0530, +0000               |       |\n * |                                 | xxx     | -08:00, +05:30, +00:00            | 2     |\n * |                                 | xxxx    | -0800, +0530, +0000, +123456      |       |\n * |                                 | xxxxx   | -08:00, +05:30, +00:00, +12:34:56 |       |\n * | Timezone (GMT)                  | O...OOO | GMT-8, GMT+5:30, GMT+0            |       |\n * |                                 | OOOO    | GMT-08:00, GMT+05:30, GMT+00:00   | 2     |\n * | Timezone (specific non-locat.)  | z...zzz | GMT-8, GMT+5:30, GMT+0            | 6     |\n * |                                 | zzzz    | GMT-08:00, GMT+05:30, GMT+00:00   | 2,6   |\n * | Seconds timestamp               | t       | 512969520                         | 7     |\n * |                                 | tt      | ...                               | 3,7   |\n * | Milliseconds timestamp          | T       | 512969520900                      | 7     |\n * |                                 | TT      | ...                               | 3,7   |\n * | Long localized date             | P       | 04/29/1453                        | 7     |\n * |                                 | PP      | Apr 29, 1453                      | 7     |\n * |                                 | PPP     | April 29th, 1453                  | 7     |\n * |                                 | PPPP    | Friday, April 29th, 1453          | 2,7   |\n * | Long localized time             | p       | 12:00 AM                          | 7     |\n * |                                 | pp      | 12:00:00 AM                       | 7     |\n * |                                 | ppp     | 12:00:00 AM GMT+2                 | 7     |\n * |                                 | pppp    | 12:00:00 AM GMT+02:00             | 2,7   |\n * | Combination of date and time    | Pp      | 04/29/1453, 12:00 AM              | 7     |\n * |                                 | PPpp    | Apr 29, 1453, 12:00:00 AM         | 7     |\n * |                                 | PPPppp  | April 29th, 1453 at ...           | 7     |\n * |                                 | PPPPpppp| Friday, April 29th, 1453 at ...   | 2,7   |\n * Notes:\n * 1. \"Formatting\" units (e.g. formatting quarter) in the default en-US locale\n *    are the same as \"stand-alone\" units, but are different in some languages.\n *    \"Formatting\" units are declined according to the rules of the language\n *    in the context of a date. \"Stand-alone\" units are always nominative singular:\n *\n *    `format(new Date(2017, 10, 6), 'do LLLL', {locale: cs}) //=> '6. listopad'`\n *\n *    `format(new Date(2017, 10, 6), 'do MMMM', {locale: cs}) //=> '6. listopadu'`\n *\n * 2. Any sequence of the identical letters is a pattern, unless it is escaped by\n *    the single quote characters (see below).\n *    If the sequence is longer than listed in table (e.g. `EEEEEEEEEEE`)\n *    the output will be the same as default pattern for this unit, usually\n *    the longest one (in case of ISO weekdays, `EEEE`). Default patterns for units\n *    are marked with \"2\" in the last column of the table.\n *\n *    `format(new Date(2017, 10, 6), 'MMM') //=> 'Nov'`\n *\n *    `format(new Date(2017, 10, 6), 'MMMM') //=> 'November'`\n *\n *    `format(new Date(2017, 10, 6), 'MMMMM') //=> 'N'`\n *\n *    `format(new Date(2017, 10, 6), 'MMMMMM') //=> 'November'`\n *\n *    `format(new Date(2017, 10, 6), 'MMMMMMM') //=> 'November'`\n *\n * 3. Some patterns could be unlimited length (such as `yyyyyyyy`).\n *    The output will be padded with zeros to match the length of the pattern.\n *\n *    `format(new Date(2017, 10, 6), 'yyyyyyyy') //=> '00002017'`\n *\n * 4. `QQQQQ` and `qqqqq` could be not strictly numerical in some locales.\n *    These tokens represent the shortest form of the quarter.\n *\n * 5. The main difference between `y` and `u` patterns are B.C. years:\n *\n *    | Year | `y` | `u` |\n *    |------|-----|-----|\n *    | AC 1 |   1 |   1 |\n *    | BC 1 |   1 |   0 |\n *    | BC 2 |   2 |  -1 |\n *\n *    Also `yy` always returns the last two digits of a year,\n *    while `uu` pads single digit years to 2 characters and returns other years unchanged:\n *\n *    | Year | `yy` | `uu` |\n *    |------|------|------|\n *    | 1    |   01 |   01 |\n *    | 14   |   14 |   14 |\n *    | 376  |   76 |  376 |\n *    | 1453 |   53 | 1453 |\n *\n *    The same difference is true for local and ISO week-numbering years (`Y` and `R`),\n *    except local week-numbering years are dependent on `options.weekStartsOn`\n *    and `options.firstWeekContainsDate` (compare [getISOWeekYear]{@link https://date-fns.org/docs/getISOWeekYear}\n *    and [getWeekYear]{@link https://date-fns.org/docs/getWeekYear}).\n *\n * 6. Specific non-location timezones are currently unavailable in `date-fns`,\n *    so right now these tokens fall back to GMT timezones.\n *\n * 7. These patterns are not in the Unicode Technical Standard #35:\n *    - `i`: ISO day of week\n *    - `I`: ISO week of year\n *    - `R`: ISO week-numbering year\n *    - `t`: seconds timestamp\n *    - `T`: milliseconds timestamp\n *    - `o`: ordinal number modifier\n *    - `P`: long localized date\n *    - `p`: long localized time\n *\n * 8. `YY` and `YYYY` tokens represent week-numbering years but they are often confused with years.\n *    You should enable `options.useAdditionalWeekYearTokens` to use them. See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * 9. `D` and `DD` tokens represent days of the year but they are often confused with days of the month.\n *    You should enable `options.useAdditionalDayOfYearTokens` to use them. See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * @param {Date|Number} date - the original date\n * @param {String} format - the string of tokens\n * @param {Object} [options] - an object with options.\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @param {Number} [options.firstWeekContainsDate=1] - the day of January, which is\n * @param {Boolean} [options.useAdditionalWeekYearTokens=false] - if true, allows usage of the week-numbering year tokens `YY` and `YYYY`;\n *   see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @param {Boolean} [options.useAdditionalDayOfYearTokens=false] - if true, allows usage of the day of year tokens `D` and `DD`;\n *   see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @returns {String} the formatted date string\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `date` must not be Invalid Date\n * @throws {RangeError} `options.locale` must contain `localize` property\n * @throws {RangeError} `options.locale` must contain `formatLong` property\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n * @throws {RangeError} `options.firstWeekContainsDate` must be between 1 and 7\n * @throws {RangeError} use `yyyy` instead of `YYYY` for formatting years using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws {RangeError} use `yy` instead of `YY` for formatting years using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws {RangeError} use `d` instead of `D` for formatting days of the month using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws {RangeError} use `dd` instead of `DD` for formatting days of the month using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws {RangeError} format string contains an unescaped latin alphabet character\n *\n * @example\n * // Represent 11 February 2014 in middle-endian format:\n * const result = format(new Date(2014, 1, 11), 'MM/dd/yyyy')\n * //=> '02/11/2014'\n *\n * @example\n * // Represent 2 July 2014 in Esperanto:\n * import { eoLocale } from 'date-fns/locale/eo'\n * const result = format(new Date(2014, 6, 2), \"do 'de' MMMM yyyy\", {\n *   locale: eoLocale\n * })\n * //=> '2-a de julio 2014'\n *\n * @example\n * // Escape string by single quote characters:\n * const result = format(new Date(2014, 6, 2, 15), \"h 'o''clock'\")\n * //=> \"3 o'clock\"\n */\n\nfunction format(dirtyDate, dirtyFormatStr, options) {\n  var _ref, _options$locale, _ref2, _ref3, _ref4, _options$firstWeekCon, _options$locale2, _options$locale2$opti, _defaultOptions$local, _defaultOptions$local2, _ref5, _ref6, _ref7, _options$weekStartsOn, _options$locale3, _options$locale3$opti, _defaultOptions$local3, _defaultOptions$local4;\n  (0, _index9.default)(2, arguments);\n  var formatStr = String(dirtyFormatStr);\n  var defaultOptions = (0, _index10.getDefaultOptions)();\n  var locale = (_ref = (_options$locale = options === null || options === void 0 ? void 0 : options.locale) !== null && _options$locale !== void 0 ? _options$locale : defaultOptions.locale) !== null && _ref !== void 0 ? _ref : _index11.default;\n  var firstWeekContainsDate = (0, _index8.default)((_ref2 = (_ref3 = (_ref4 = (_options$firstWeekCon = options === null || options === void 0 ? void 0 : options.firstWeekContainsDate) !== null && _options$firstWeekCon !== void 0 ? _options$firstWeekCon : options === null || options === void 0 ? void 0 : (_options$locale2 = options.locale) === null || _options$locale2 === void 0 ? void 0 : (_options$locale2$opti = _options$locale2.options) === null || _options$locale2$opti === void 0 ? void 0 : _options$locale2$opti.firstWeekContainsDate) !== null && _ref4 !== void 0 ? _ref4 : defaultOptions.firstWeekContainsDate) !== null && _ref3 !== void 0 ? _ref3 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.firstWeekContainsDate) !== null && _ref2 !== void 0 ? _ref2 : 1);\n\n  // Test if weekStartsOn is between 1 and 7 _and_ is not NaN\n  if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) {\n    throw new RangeError('firstWeekContainsDate must be between 1 and 7 inclusively');\n  }\n  var weekStartsOn = (0, _index8.default)((_ref5 = (_ref6 = (_ref7 = (_options$weekStartsOn = options === null || options === void 0 ? void 0 : options.weekStartsOn) !== null && _options$weekStartsOn !== void 0 ? _options$weekStartsOn : options === null || options === void 0 ? void 0 : (_options$locale3 = options.locale) === null || _options$locale3 === void 0 ? void 0 : (_options$locale3$opti = _options$locale3.options) === null || _options$locale3$opti === void 0 ? void 0 : _options$locale3$opti.weekStartsOn) !== null && _ref7 !== void 0 ? _ref7 : defaultOptions.weekStartsOn) !== null && _ref6 !== void 0 ? _ref6 : (_defaultOptions$local3 = defaultOptions.locale) === null || _defaultOptions$local3 === void 0 ? void 0 : (_defaultOptions$local4 = _defaultOptions$local3.options) === null || _defaultOptions$local4 === void 0 ? void 0 : _defaultOptions$local4.weekStartsOn) !== null && _ref5 !== void 0 ? _ref5 : 0);\n\n  // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n  if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n    throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n  }\n  if (!locale.localize) {\n    throw new RangeError('locale must contain localize property');\n  }\n  if (!locale.formatLong) {\n    throw new RangeError('locale must contain formatLong property');\n  }\n  var originalDate = (0, _index3.default)(dirtyDate);\n  if (!(0, _index.default)(originalDate)) {\n    throw new RangeError('Invalid time value');\n  }\n\n  // Convert the date in system timezone to the same date in UTC+00:00 timezone.\n  // This ensures that when UTC functions will be implemented, locales will be compatible with them.\n  // See an issue about UTC functions: https://github.com/date-fns/date-fns/issues/376\n  var timezoneOffset = (0, _index6.default)(originalDate);\n  var utcDate = (0, _index2.default)(originalDate, timezoneOffset);\n  var formatterOptions = {\n    firstWeekContainsDate: firstWeekContainsDate,\n    weekStartsOn: weekStartsOn,\n    locale: locale,\n    _originalDate: originalDate\n  };\n  var result = formatStr.match(longFormattingTokensRegExp).map(function (substring) {\n    var firstCharacter = substring[0];\n    if (firstCharacter === 'p' || firstCharacter === 'P') {\n      var longFormatter = _index5.default[firstCharacter];\n      return longFormatter(substring, locale.formatLong);\n    }\n    return substring;\n  }).join('').match(formattingTokensRegExp).map(function (substring) {\n    // Replace two single quote characters with one single quote character\n    if (substring === \"''\") {\n      return \"'\";\n    }\n    var firstCharacter = substring[0];\n    if (firstCharacter === \"'\") {\n      return cleanEscapedString(substring);\n    }\n    var formatter = _index4.default[firstCharacter];\n    if (formatter) {\n      if (!(options !== null && options !== void 0 && options.useAdditionalWeekYearTokens) && (0, _index7.isProtectedWeekYearToken)(substring)) {\n        (0, _index7.throwProtectedError)(substring, dirtyFormatStr, String(dirtyDate));\n      }\n      if (!(options !== null && options !== void 0 && options.useAdditionalDayOfYearTokens) && (0, _index7.isProtectedDayOfYearToken)(substring)) {\n        (0, _index7.throwProtectedError)(substring, dirtyFormatStr, String(dirtyDate));\n      }\n      return formatter(utcDate, substring, locale.localize, formatterOptions);\n    }\n    if (firstCharacter.match(unescapedLatinCharacterRegExp)) {\n      throw new RangeError('Format string contains an unescaped latin alphabet character `' + firstCharacter + '`');\n    }\n    return substring;\n  }).join('');\n  return result;\n}\nfunction cleanEscapedString(input) {\n  var matched = input.match(escapedStringRegExp);\n  if (!matched) {\n    return input;\n  }\n  return matched[1].replace(doubleQuoteRegExp, \"'\");\n}\nmodule.exports = exports.default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = isDate;\nvar _typeof2 = _interopRequireDefault(require(\"@babel/runtime/helpers/typeof\"));\nvar _index = _interopRequireDefault(require(\"../_lib/requiredArgs/index.js\"));\n/**\n * @name isDate\n * @category Common Helpers\n * @summary Is the given value a date?\n *\n * @description\n * Returns true if the given value is an instance of Date. The function works for dates transferred across iframes.\n *\n * @param {*} value - the value to check\n * @returns {boolean} true if the given value is a date\n * @throws {TypeError} 1 arguments required\n *\n * @example\n * // For a valid date:\n * const result = isDate(new Date())\n * //=> true\n *\n * @example\n * // For an invalid date:\n * const result = isDate(new Date(NaN))\n * //=> true\n *\n * @example\n * // For some value:\n * const result = isDate('2014-02-31')\n * //=> false\n *\n * @example\n * // For an object:\n * const result = isDate({})\n * //=> false\n */\nfunction isDate(value) {\n  (0, _index.default)(1, arguments);\n  return value instanceof Date || (0, _typeof2.default)(value) === 'object' && Object.prototype.toString.call(value) === '[object Date]';\n}\nmodule.exports = exports.default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = isValid;\nvar _index = _interopRequireDefault(require(\"../isDate/index.js\"));\nvar _index2 = _interopRequireDefault(require(\"../toDate/index.js\"));\nvar _index3 = _interopRequireDefault(require(\"../_lib/requiredArgs/index.js\"));\n/**\n * @name isValid\n * @category Common Helpers\n * @summary Is the given date valid?\n *\n * @description\n * Returns false if argument is Invalid Date and true otherwise.\n * Argument is converted to Date using `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * Invalid Date is a Date, whose time value is NaN.\n *\n * Time value of Date: http://es5.github.io/#x15.9.1.1\n *\n * @param {*} date - the date to check\n * @returns {Boolean} the date is valid\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // For the valid date:\n * const result = isValid(new Date(2014, 1, 31))\n * //=> true\n *\n * @example\n * // For the value, convertable into a date:\n * const result = isValid(1393804800000)\n * //=> true\n *\n * @example\n * // For the invalid date:\n * const result = isValid(new Date(''))\n * //=> false\n */\nfunction isValid(dirtyDate) {\n  (0, _index3.default)(1, arguments);\n  if (!(0, _index.default)(dirtyDate) && typeof dirtyDate !== 'number') {\n    return false;\n  }\n  var date = (0, _index2.default)(dirtyDate);\n  return !isNaN(Number(date));\n}\nmodule.exports = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = buildFormatLongFn;\nfunction buildFormatLongFn(args) {\n  return function () {\n    var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n    // TODO: Remove String()\n    var width = options.width ? String(options.width) : args.defaultWidth;\n    var format = args.formats[width] || args.formats[args.defaultWidth];\n    return format;\n  };\n}\nmodule.exports = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = buildLocalizeFn;\nfunction buildLocalizeFn(args) {\n  return function (dirtyIndex, options) {\n    var context = options !== null && options !== void 0 && options.context ? String(options.context) : 'standalone';\n    var valuesArray;\n    if (context === 'formatting' && args.formattingValues) {\n      var defaultWidth = args.defaultFormattingWidth || args.defaultWidth;\n      var width = options !== null && options !== void 0 && options.width ? String(options.width) : defaultWidth;\n      valuesArray = args.formattingValues[width] || args.formattingValues[defaultWidth];\n    } else {\n      var _defaultWidth = args.defaultWidth;\n      var _width = options !== null && options !== void 0 && options.width ? String(options.width) : args.defaultWidth;\n      valuesArray = args.values[_width] || args.values[_defaultWidth];\n    }\n    var index = args.argumentCallback ? args.argumentCallback(dirtyIndex) : dirtyIndex;\n    // @ts-ignore: For some reason TypeScript just don't want to match it, no matter how hard we try. I challenge you to try to remove it!\n    return valuesArray[index];\n  };\n}\nmodule.exports = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = buildMatchFn;\nfunction buildMatchFn(args) {\n  return function (string) {\n    var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n    var width = options.width;\n    var matchPattern = width && args.matchPatterns[width] || args.matchPatterns[args.defaultMatchWidth];\n    var matchResult = string.match(matchPattern);\n    if (!matchResult) {\n      return null;\n    }\n    var matchedString = matchResult[0];\n    var parsePatterns = width && args.parsePatterns[width] || args.parsePatterns[args.defaultParseWidth];\n    var key = Array.isArray(parsePatterns) ? findIndex(parsePatterns, function (pattern) {\n      return pattern.test(matchedString);\n    }) : findKey(parsePatterns, function (pattern) {\n      return pattern.test(matchedString);\n    });\n    var value;\n    value = args.valueCallback ? args.valueCallback(key) : key;\n    value = options.valueCallback ? options.valueCallback(value) : value;\n    var rest = string.slice(matchedString.length);\n    return {\n      value: value,\n      rest: rest\n    };\n  };\n}\nfunction findKey(object, predicate) {\n  for (var key in object) {\n    if (object.hasOwnProperty(key) && predicate(object[key])) {\n      return key;\n    }\n  }\n  return undefined;\n}\nfunction findIndex(array, predicate) {\n  for (var key = 0; key < array.length; key++) {\n    if (predicate(array[key])) {\n      return key;\n    }\n  }\n  return undefined;\n}\nmodule.exports = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = buildMatchPatternFn;\nfunction buildMatchPatternFn(args) {\n  return function (string) {\n    var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n    var matchResult = string.match(args.matchPattern);\n    if (!matchResult) return null;\n    var matchedString = matchResult[0];\n    var parseResult = string.match(args.parsePattern);\n    if (!parseResult) return null;\n    var value = args.valueCallback ? args.valueCallback(parseResult[0]) : parseResult[0];\n    value = options.valueCallback ? options.valueCallback(value) : value;\n    var rest = string.slice(matchedString.length);\n    return {\n      value: value,\n      rest: rest\n    };\n  };\n}\nmodule.exports = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\nvar formatDistanceLocale = {\n  lessThanXSeconds: {\n    one: 'less than a second',\n    other: 'less than {{count}} seconds'\n  },\n  xSeconds: {\n    one: '1 second',\n    other: '{{count}} seconds'\n  },\n  halfAMinute: 'half a minute',\n  lessThanXMinutes: {\n    one: 'less than a minute',\n    other: 'less than {{count}} minutes'\n  },\n  xMinutes: {\n    one: '1 minute',\n    other: '{{count}} minutes'\n  },\n  aboutXHours: {\n    one: 'about 1 hour',\n    other: 'about {{count}} hours'\n  },\n  xHours: {\n    one: '1 hour',\n    other: '{{count}} hours'\n  },\n  xDays: {\n    one: '1 day',\n    other: '{{count}} days'\n  },\n  aboutXWeeks: {\n    one: 'about 1 week',\n    other: 'about {{count}} weeks'\n  },\n  xWeeks: {\n    one: '1 week',\n    other: '{{count}} weeks'\n  },\n  aboutXMonths: {\n    one: 'about 1 month',\n    other: 'about {{count}} months'\n  },\n  xMonths: {\n    one: '1 month',\n    other: '{{count}} months'\n  },\n  aboutXYears: {\n    one: 'about 1 year',\n    other: 'about {{count}} years'\n  },\n  xYears: {\n    one: '1 year',\n    other: '{{count}} years'\n  },\n  overXYears: {\n    one: 'over 1 year',\n    other: 'over {{count}} years'\n  },\n  almostXYears: {\n    one: 'almost 1 year',\n    other: 'almost {{count}} years'\n  }\n};\nvar formatDistance = function formatDistance(token, count, options) {\n  var result;\n  var tokenValue = formatDistanceLocale[token];\n  if (typeof tokenValue === 'string') {\n    result = tokenValue;\n  } else if (count === 1) {\n    result = tokenValue.one;\n  } else {\n    result = tokenValue.other.replace('{{count}}', count.toString());\n  }\n  if (options !== null && options !== void 0 && options.addSuffix) {\n    if (options.comparison && options.comparison > 0) {\n      return 'in ' + result;\n    } else {\n      return result + ' ago';\n    }\n  }\n  return result;\n};\nvar _default = formatDistance;\nexports.default = _default;\nmodule.exports = exports.default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\nvar _index = _interopRequireDefault(require(\"../../../_lib/buildFormatLongFn/index.js\"));\nvar dateFormats = {\n  full: 'EEEE, MMMM do, y',\n  long: 'MMMM do, y',\n  medium: 'MMM d, y',\n  short: 'MM/dd/yyyy'\n};\nvar timeFormats = {\n  full: 'h:mm:ss a zzzz',\n  long: 'h:mm:ss a z',\n  medium: 'h:mm:ss a',\n  short: 'h:mm a'\n};\nvar dateTimeFormats = {\n  full: \"{{date}} 'at' {{time}}\",\n  long: \"{{date}} 'at' {{time}}\",\n  medium: '{{date}}, {{time}}',\n  short: '{{date}}, {{time}}'\n};\nvar formatLong = {\n  date: (0, _index.default)({\n    formats: dateFormats,\n    defaultWidth: 'full'\n  }),\n  time: (0, _index.default)({\n    formats: timeFormats,\n    defaultWidth: 'full'\n  }),\n  dateTime: (0, _index.default)({\n    formats: dateTimeFormats,\n    defaultWidth: 'full'\n  })\n};\nvar _default = formatLong;\nexports.default = _default;\nmodule.exports = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\nvar formatRelativeLocale = {\n  lastWeek: \"'last' eeee 'at' p\",\n  yesterday: \"'yesterday at' p\",\n  today: \"'today at' p\",\n  tomorrow: \"'tomorrow at' p\",\n  nextWeek: \"eeee 'at' p\",\n  other: 'P'\n};\nvar formatRelative = function formatRelative(token, _date, _baseDate, _options) {\n  return formatRelativeLocale[token];\n};\nvar _default = formatRelative;\nexports.default = _default;\nmodule.exports = exports.default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\nvar _index = _interopRequireDefault(require(\"../../../_lib/buildLocalizeFn/index.js\"));\nvar eraValues = {\n  narrow: ['B', 'A'],\n  abbreviated: ['BC', 'AD'],\n  wide: ['Before Christ', 'Anno Domini']\n};\nvar quarterValues = {\n  narrow: ['1', '2', '3', '4'],\n  abbreviated: ['Q1', 'Q2', 'Q3', 'Q4'],\n  wide: ['1st quarter', '2nd quarter', '3rd quarter', '4th quarter']\n};\n\n// Note: in English, the names of days of the week and months are capitalized.\n// If you are making a new locale based on this one, check if the same is true for the language you're working on.\n// Generally, formatted dates should look like they are in the middle of a sentence,\n// e.g. in Spanish language the weekdays and months should be in the lowercase.\nvar monthValues = {\n  narrow: ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'],\n  abbreviated: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],\n  wide: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']\n};\nvar dayValues = {\n  narrow: ['S', 'M', 'T', 'W', 'T', 'F', 'S'],\n  short: ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'],\n  abbreviated: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],\n  wide: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday']\n};\nvar dayPeriodValues = {\n  narrow: {\n    am: 'a',\n    pm: 'p',\n    midnight: 'mi',\n    noon: 'n',\n    morning: 'morning',\n    afternoon: 'afternoon',\n    evening: 'evening',\n    night: 'night'\n  },\n  abbreviated: {\n    am: 'AM',\n    pm: 'PM',\n    midnight: 'midnight',\n    noon: 'noon',\n    morning: 'morning',\n    afternoon: 'afternoon',\n    evening: 'evening',\n    night: 'night'\n  },\n  wide: {\n    am: 'a.m.',\n    pm: 'p.m.',\n    midnight: 'midnight',\n    noon: 'noon',\n    morning: 'morning',\n    afternoon: 'afternoon',\n    evening: 'evening',\n    night: 'night'\n  }\n};\nvar formattingDayPeriodValues = {\n  narrow: {\n    am: 'a',\n    pm: 'p',\n    midnight: 'mi',\n    noon: 'n',\n    morning: 'in the morning',\n    afternoon: 'in the afternoon',\n    evening: 'in the evening',\n    night: 'at night'\n  },\n  abbreviated: {\n    am: 'AM',\n    pm: 'PM',\n    midnight: 'midnight',\n    noon: 'noon',\n    morning: 'in the morning',\n    afternoon: 'in the afternoon',\n    evening: 'in the evening',\n    night: 'at night'\n  },\n  wide: {\n    am: 'a.m.',\n    pm: 'p.m.',\n    midnight: 'midnight',\n    noon: 'noon',\n    morning: 'in the morning',\n    afternoon: 'in the afternoon',\n    evening: 'in the evening',\n    night: 'at night'\n  }\n};\nvar ordinalNumber = function ordinalNumber(dirtyNumber, _options) {\n  var number = Number(dirtyNumber);\n\n  // If ordinal numbers depend on context, for example,\n  // if they are different for different grammatical genders,\n  // use `options.unit`.\n  //\n  // `unit` can be 'year', 'quarter', 'month', 'week', 'date', 'dayOfYear',\n  // 'day', 'hour', 'minute', 'second'.\n\n  var rem100 = number % 100;\n  if (rem100 > 20 || rem100 < 10) {\n    switch (rem100 % 10) {\n      case 1:\n        return number + 'st';\n      case 2:\n        return number + 'nd';\n      case 3:\n        return number + 'rd';\n    }\n  }\n  return number + 'th';\n};\nvar localize = {\n  ordinalNumber: ordinalNumber,\n  era: (0, _index.default)({\n    values: eraValues,\n    defaultWidth: 'wide'\n  }),\n  quarter: (0, _index.default)({\n    values: quarterValues,\n    defaultWidth: 'wide',\n    argumentCallback: function argumentCallback(quarter) {\n      return quarter - 1;\n    }\n  }),\n  month: (0, _index.default)({\n    values: monthValues,\n    defaultWidth: 'wide'\n  }),\n  day: (0, _index.default)({\n    values: dayValues,\n    defaultWidth: 'wide'\n  }),\n  dayPeriod: (0, _index.default)({\n    values: dayPeriodValues,\n    defaultWidth: 'wide',\n    formattingValues: formattingDayPeriodValues,\n    defaultFormattingWidth: 'wide'\n  })\n};\nvar _default = localize;\nexports.default = _default;\nmodule.exports = exports.default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\nvar _index = _interopRequireDefault(require(\"../../../_lib/buildMatchFn/index.js\"));\nvar _index2 = _interopRequireDefault(require(\"../../../_lib/buildMatchPatternFn/index.js\"));\nvar matchOrdinalNumberPattern = /^(\\d+)(th|st|nd|rd)?/i;\nvar parseOrdinalNumberPattern = /\\d+/i;\nvar matchEraPatterns = {\n  narrow: /^(b|a)/i,\n  abbreviated: /^(b\\.?\\s?c\\.?|b\\.?\\s?c\\.?\\s?e\\.?|a\\.?\\s?d\\.?|c\\.?\\s?e\\.?)/i,\n  wide: /^(before christ|before common era|anno domini|common era)/i\n};\nvar parseEraPatterns = {\n  any: [/^b/i, /^(a|c)/i]\n};\nvar matchQuarterPatterns = {\n  narrow: /^[1234]/i,\n  abbreviated: /^q[1234]/i,\n  wide: /^[1234](th|st|nd|rd)? quarter/i\n};\nvar parseQuarterPatterns = {\n  any: [/1/i, /2/i, /3/i, /4/i]\n};\nvar matchMonthPatterns = {\n  narrow: /^[jfmasond]/i,\n  abbreviated: /^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,\n  wide: /^(january|february|march|april|may|june|july|august|september|october|november|december)/i\n};\nvar parseMonthPatterns = {\n  narrow: [/^j/i, /^f/i, /^m/i, /^a/i, /^m/i, /^j/i, /^j/i, /^a/i, /^s/i, /^o/i, /^n/i, /^d/i],\n  any: [/^ja/i, /^f/i, /^mar/i, /^ap/i, /^may/i, /^jun/i, /^jul/i, /^au/i, /^s/i, /^o/i, /^n/i, /^d/i]\n};\nvar matchDayPatterns = {\n  narrow: /^[smtwf]/i,\n  short: /^(su|mo|tu|we|th|fr|sa)/i,\n  abbreviated: /^(sun|mon|tue|wed|thu|fri|sat)/i,\n  wide: /^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i\n};\nvar parseDayPatterns = {\n  narrow: [/^s/i, /^m/i, /^t/i, /^w/i, /^t/i, /^f/i, /^s/i],\n  any: [/^su/i, /^m/i, /^tu/i, /^w/i, /^th/i, /^f/i, /^sa/i]\n};\nvar matchDayPeriodPatterns = {\n  narrow: /^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,\n  any: /^([ap]\\.?\\s?m\\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i\n};\nvar parseDayPeriodPatterns = {\n  any: {\n    am: /^a/i,\n    pm: /^p/i,\n    midnight: /^mi/i,\n    noon: /^no/i,\n    morning: /morning/i,\n    afternoon: /afternoon/i,\n    evening: /evening/i,\n    night: /night/i\n  }\n};\nvar match = {\n  ordinalNumber: (0, _index2.default)({\n    matchPattern: matchOrdinalNumberPattern,\n    parsePattern: parseOrdinalNumberPattern,\n    valueCallback: function valueCallback(value) {\n      return parseInt(value, 10);\n    }\n  }),\n  era: (0, _index.default)({\n    matchPatterns: matchEraPatterns,\n    defaultMatchWidth: 'wide',\n    parsePatterns: parseEraPatterns,\n    defaultParseWidth: 'any'\n  }),\n  quarter: (0, _index.default)({\n    matchPatterns: matchQuarterPatterns,\n    defaultMatchWidth: 'wide',\n    parsePatterns: parseQuarterPatterns,\n    defaultParseWidth: 'any',\n    valueCallback: function valueCallback(index) {\n      return index + 1;\n    }\n  }),\n  month: (0, _index.default)({\n    matchPatterns: matchMonthPatterns,\n    defaultMatchWidth: 'wide',\n    parsePatterns: parseMonthPatterns,\n    defaultParseWidth: 'any'\n  }),\n  day: (0, _index.default)({\n    matchPatterns: matchDayPatterns,\n    defaultMatchWidth: 'wide',\n    parsePatterns: parseDayPatterns,\n    defaultParseWidth: 'any'\n  }),\n  dayPeriod: (0, _index.default)({\n    matchPatterns: matchDayPeriodPatterns,\n    defaultMatchWidth: 'any',\n    parsePatterns: parseDayPeriodPatterns,\n    defaultParseWidth: 'any'\n  })\n};\nvar _default = match;\nexports.default = _default;\nmodule.exports = exports.default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\nvar _index = _interopRequireDefault(require(\"./_lib/formatDistance/index.js\"));\nvar _index2 = _interopRequireDefault(require(\"./_lib/formatLong/index.js\"));\nvar _index3 = _interopRequireDefault(require(\"./_lib/formatRelative/index.js\"));\nvar _index4 = _interopRequireDefault(require(\"./_lib/localize/index.js\"));\nvar _index5 = _interopRequireDefault(require(\"./_lib/match/index.js\"));\n/**\n * @type {Locale}\n * @category Locales\n * @summary English locale (United States).\n * @language English\n * @iso-639-2 eng\n * @author Sasha Koss [@kossnocorp]{@link https://github.com/kossnocorp}\n * @author Lesha Koss [@leshakoss]{@link https://github.com/leshakoss}\n */\nvar locale = {\n  code: 'en-US',\n  formatDistance: _index.default,\n  formatLong: _index2.default,\n  formatRelative: _index3.default,\n  localize: _index4.default,\n  match: _index5.default,\n  options: {\n    weekStartsOn: 0 /* Sunday */,\n    firstWeekContainsDate: 1\n  }\n};\nvar _default = locale;\nexports.default = _default;\nmodule.exports = exports.default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = subMilliseconds;\nvar _index = _interopRequireDefault(require(\"../addMilliseconds/index.js\"));\nvar _index2 = _interopRequireDefault(require(\"../_lib/requiredArgs/index.js\"));\nvar _index3 = _interopRequireDefault(require(\"../_lib/toInteger/index.js\"));\n/**\n * @name subMilliseconds\n * @category Millisecond Helpers\n * @summary Subtract the specified number of milliseconds from the given date.\n *\n * @description\n * Subtract the specified number of milliseconds from the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of milliseconds to be subtracted. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the milliseconds subtracted\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Subtract 750 milliseconds from 10 July 2014 12:45:30.000:\n * const result = subMilliseconds(new Date(2014, 6, 10, 12, 45, 30, 0), 750)\n * //=> Thu Jul 10 2014 12:45:29.250\n */\nfunction subMilliseconds(dirtyDate, dirtyAmount) {\n  (0, _index2.default)(2, arguments);\n  var amount = (0, _index3.default)(dirtyAmount);\n  return (0, _index.default)(dirtyDate, -amount);\n}\nmodule.exports = exports.default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = toDate;\nvar _typeof2 = _interopRequireDefault(require(\"@babel/runtime/helpers/typeof\"));\nvar _index = _interopRequireDefault(require(\"../_lib/requiredArgs/index.js\"));\n/**\n * @name toDate\n * @category Common Helpers\n * @summary Convert the given argument to an instance of Date.\n *\n * @description\n * Convert the given argument to an instance of Date.\n *\n * If the argument is an instance of Date, the function returns its clone.\n *\n * If the argument is a number, it is treated as a timestamp.\n *\n * If the argument is none of the above, the function returns Invalid Date.\n *\n * **Note**: *all* Date arguments passed to any *date-fns* function is processed by `toDate`.\n *\n * @param {Date|Number} argument - the value to convert\n * @returns {Date} the parsed date in the local time zone\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Clone the date:\n * const result = toDate(new Date(2014, 1, 11, 11, 30, 30))\n * //=> Tue Feb 11 2014 11:30:30\n *\n * @example\n * // Convert the timestamp to date:\n * const result = toDate(1392098430000)\n * //=> Tue Feb 11 2014 11:30:30\n */\nfunction toDate(argument) {\n  (0, _index.default)(1, arguments);\n  var argStr = Object.prototype.toString.call(argument);\n\n  // Clone the date\n  if (argument instanceof Date || (0, _typeof2.default)(argument) === 'object' && argStr === '[object Date]') {\n    // Prevent the date to lose the milliseconds when passed to new Date() in IE10\n    return new Date(argument.getTime());\n  } else if (typeof argument === 'number' || argStr === '[object Number]') {\n    return new Date(argument);\n  } else {\n    if ((typeof argument === 'string' || argStr === '[object String]') && typeof console !== 'undefined') {\n      // eslint-disable-next-line no-console\n      console.warn(\"Starting with v2.0.0-beta.1 date-fns doesn't accept strings as date arguments. Please use `parseISO` to parse strings. See: https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#string-arguments\");\n      // eslint-disable-next-line no-console\n      console.warn(new Error().stack);\n    }\n    return new Date(NaN);\n  }\n}\nmodule.exports = exports.default;","'use strict';\nvar token = '%[a-f0-9]{2}';\nvar singleMatcher = new RegExp(token, 'gi');\nvar multiMatcher = new RegExp('(' + token + ')+', 'gi');\n\nfunction decodeComponents(components, split) {\n\ttry {\n\t\t// Try to decode the entire string first\n\t\treturn decodeURIComponent(components.join(''));\n\t} catch (err) {\n\t\t// Do nothing\n\t}\n\n\tif (components.length === 1) {\n\t\treturn components;\n\t}\n\n\tsplit = split || 1;\n\n\t// Split the array in 2 parts\n\tvar left = components.slice(0, split);\n\tvar right = components.slice(split);\n\n\treturn Array.prototype.concat.call([], decodeComponents(left), decodeComponents(right));\n}\n\nfunction decode(input) {\n\ttry {\n\t\treturn decodeURIComponent(input);\n\t} catch (err) {\n\t\tvar tokens = input.match(singleMatcher);\n\n\t\tfor (var i = 1; i < tokens.length; i++) {\n\t\t\tinput = decodeComponents(tokens, i).join('');\n\n\t\t\ttokens = input.match(singleMatcher);\n\t\t}\n\n\t\treturn input;\n\t}\n}\n\nfunction customDecodeURIComponent(input) {\n\t// Keep track of all the replacements and prefill the map with the `BOM`\n\tvar replaceMap = {\n\t\t'%FE%FF': '\\uFFFD\\uFFFD',\n\t\t'%FF%FE': '\\uFFFD\\uFFFD'\n\t};\n\n\tvar match = multiMatcher.exec(input);\n\twhile (match) {\n\t\ttry {\n\t\t\t// Decode as big chunks as possible\n\t\t\treplaceMap[match[0]] = decodeURIComponent(match[0]);\n\t\t} catch (err) {\n\t\t\tvar result = decode(match[0]);\n\n\t\t\tif (result !== match[0]) {\n\t\t\t\treplaceMap[match[0]] = result;\n\t\t\t}\n\t\t}\n\n\t\tmatch = multiMatcher.exec(input);\n\t}\n\n\t// Add `%C2` at the end of the map to make sure it does not replace the combinator before everything else\n\treplaceMap['%C2'] = '\\uFFFD';\n\n\tvar entries = Object.keys(replaceMap);\n\n\tfor (var i = 0; i < entries.length; i++) {\n\t\t// Replace all decoded components\n\t\tvar key = entries[i];\n\t\tinput = input.replace(new RegExp(key, 'g'), replaceMap[key]);\n\t}\n\n\treturn input;\n}\n\nmodule.exports = function (encodedURI) {\n\tif (typeof encodedURI !== 'string') {\n\t\tthrow new TypeError('Expected `encodedURI` to be of type `string`, got `' + typeof encodedURI + '`');\n\t}\n\n\ttry {\n\t\tencodedURI = encodedURI.replace(/\\+/g, ' ');\n\n\t\t// Try the built in decoder first\n\t\treturn decodeURIComponent(encodedURI);\n\t} catch (err) {\n\t\t// Fallback to a more advanced decoder\n\t\treturn customDecodeURIComponent(encodedURI);\n\t}\n};\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","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n    extendStatics = Object.setPrototypeOf ||\r\n        ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n        function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n    return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n    extendStatics(d, b);\r\n    function __() { this.constructor = d; }\r\n    d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n    __assign = Object.assign || function __assign(t) {\r\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n            s = arguments[i];\r\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n        }\r\n        return t;\r\n    }\r\n    return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n    var t = {};\r\n    for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n        t[p] = s[p];\r\n    if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n        for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n            if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n                t[p[i]] = s[p[i]];\r\n        }\r\n    return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n    return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n    if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n    return new (P || (P = Promise))(function (resolve, reject) {\r\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n    });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n    return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n    function verb(n) { return function (v) { return step([n, v]); }; }\r\n    function step(op) {\r\n        if (f) throw new TypeError(\"Generator is already executing.\");\r\n        while (_) try {\r\n            if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n            if (y = 0, t) op = [op[0] & 2, t.value];\r\n            switch (op[0]) {\r\n                case 0: case 1: t = op; break;\r\n                case 4: _.label++; return { value: op[1], done: false };\r\n                case 5: _.label++; y = op[1]; op = [0]; continue;\r\n                case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n                default:\r\n                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n                    if (t[2]) _.ops.pop();\r\n                    _.trys.pop(); continue;\r\n            }\r\n            op = body.call(thisArg, _);\r\n        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n    }\r\n}\r\n\r\nexport function __createBinding(o, m, k, k2) {\r\n    if (k2 === undefined) k2 = k;\r\n    o[k2] = m[k];\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n    for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n    var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n    if (m) return m.call(o);\r\n    if (o && typeof o.length === \"number\") return {\r\n        next: function () {\r\n            if (o && i >= o.length) o = void 0;\r\n            return { value: o && o[i++], done: !o };\r\n        }\r\n    };\r\n    throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n    if (!m) return o;\r\n    var i = m.call(o), r, ar = [], e;\r\n    try {\r\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n    }\r\n    catch (error) { e = { error: error }; }\r\n    finally {\r\n        try {\r\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n        }\r\n        finally { if (e) throw e.error; }\r\n    }\r\n    return ar;\r\n}\r\n\r\nexport function __spread() {\r\n    for (var ar = [], i = 0; i < arguments.length; i++)\r\n        ar = ar.concat(__read(arguments[i]));\r\n    return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n    for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n    for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n        for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n            r[k] = a[j];\r\n    return r;\r\n};\r\n\r\nexport function __await(v) {\r\n    return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n    if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n    var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n    return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n    function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n    function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n    function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n    function fulfill(value) { resume(\"next\", value); }\r\n    function reject(value) { resume(\"throw\", value); }\r\n    function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n    var i, p;\r\n    return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n    function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n    if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n    var m = o[Symbol.asyncIterator], i;\r\n    return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n    function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n    function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n    if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n    return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n    if (mod && mod.__esModule) return mod;\r\n    var result = {};\r\n    if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n    result.default = mod;\r\n    return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n    return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n    if (!privateMap.has(receiver)) {\r\n        throw new TypeError(\"attempted to get private field on non-instance\");\r\n    }\r\n    return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n    if (!privateMap.has(receiver)) {\r\n        throw new TypeError(\"attempted to set private field on non-instance\");\r\n    }\r\n    privateMap.set(receiver, value);\r\n    return value;\r\n}\r\n","/**\n * 保留 object 中的部分内容\n * @param obj\n * @param keys\n */\nexport function pick(obj, keys) {\n    var r = {};\n    keys.forEach(function (key) {\n        r[key] = obj[key];\n    });\n    return r;\n}\n//# sourceMappingURL=pick.js.map","export function isFunction(v) {\n    return typeof v === 'function';\n}\n//# sourceMappingURL=is-function.js.map","import { __extends } from \"tslib\";\nimport * as echarts from 'echarts';\nimport EChartsReactCore from './core';\n// export the Component the echarts Object.\nvar EChartsReact = /** @class */ (function (_super) {\n    __extends(EChartsReact, _super);\n    function EChartsReact(props) {\n        var _this = _super.call(this, props) || this;\n        // 初始化为 echarts 整个包\n        _this.echarts = echarts;\n        return _this;\n    }\n    return EChartsReact;\n}(EChartsReactCore));\nexport default EChartsReact;\n//# sourceMappingURL=index.js.map","import { __assign, __extends } from \"tslib\";\nimport React, { PureComponent } from 'react';\nimport { bind, clear } from 'size-sensor';\nimport { pick } from './helper/pick';\nimport { isFunction } from './helper/is-function';\nimport { isString } from './helper/is-string';\nimport { isEqual } from './helper/is-equal';\n/**\n * core component for echarts binding\n */\nvar EChartsReactCore = /** @class */ (function (_super) {\n    __extends(EChartsReactCore, _super);\n    function EChartsReactCore(props) {\n        var _this = _super.call(this, props) || this;\n        _this.echarts = props.echarts;\n        _this.ele = null;\n        _this.isInitialResize = true;\n        return _this;\n    }\n    EChartsReactCore.prototype.componentDidMount = function () {\n        this.renderNewEcharts();\n    };\n    // update\n    EChartsReactCore.prototype.componentDidUpdate = function (prevProps) {\n        /**\n         * if shouldSetOption return false, then return, not update echarts options\n         * default is true\n         */\n        var shouldSetOption = this.props.shouldSetOption;\n        if (isFunction(shouldSetOption) && !shouldSetOption(prevProps, this.props)) {\n            return;\n        }\n        // 以下属性修改的时候，需要 dispose 之后再新建\n        // 1. 切换 theme 的时候\n        // 2. 修改 opts 的时候\n        // 3. 修改 onEvents 的时候，这样可以取消所有之前绑定的事件 issue #151\n        if (!isEqual(prevProps.theme, this.props.theme) ||\n            !isEqual(prevProps.opts, this.props.opts) ||\n            !isEqual(prevProps.onEvents, this.props.onEvents)) {\n            this.dispose();\n            this.renderNewEcharts(); // 重建\n            return;\n        }\n        // when these props are not isEqual, update echarts\n        var pickKeys = ['option', 'notMerge', 'lazyUpdate', 'showLoading', 'loadingOption'];\n        if (!isEqual(pick(this.props, pickKeys), pick(prevProps, pickKeys))) {\n            this.updateEChartsOption();\n        }\n        /**\n         * when style or class name updated, change size.\n         */\n        if (!isEqual(prevProps.style, this.props.style) || !isEqual(prevProps.className, this.props.className)) {\n            this.resize();\n        }\n    };\n    EChartsReactCore.prototype.componentWillUnmount = function () {\n        this.dispose();\n    };\n    /**\n     * return the echart object\n     * 1. if exist, return the existed instance\n     * 2. or new one instance\n     */\n    EChartsReactCore.prototype.getEchartsInstance = function () {\n        return this.echarts.getInstanceByDom(this.ele) || this.echarts.init(this.ele, this.props.theme, this.props.opts);\n    };\n    /**\n     * dispose echarts and clear size-sensor\n     */\n    EChartsReactCore.prototype.dispose = function () {\n        if (this.ele) {\n            try {\n                clear(this.ele);\n            }\n            catch (e) {\n                console.warn(e);\n            }\n            // dispose echarts instance\n            this.echarts.dispose(this.ele);\n        }\n    };\n    /**\n     * render a new echarts instance\n     */\n    EChartsReactCore.prototype.renderNewEcharts = function () {\n        var _this = this;\n        var _a = this.props, onEvents = _a.onEvents, onChartReady = _a.onChartReady;\n        // 1. new echarts instance\n        var echartsInstance = this.updateEChartsOption();\n        // 2. bind events\n        this.bindEvents(echartsInstance, onEvents || {});\n        // 3. on chart ready\n        if (isFunction(onChartReady))\n            onChartReady(echartsInstance);\n        // 4. on resize\n        if (this.ele) {\n            bind(this.ele, function () {\n                _this.resize();\n            });\n        }\n    };\n    // bind the events\n    EChartsReactCore.prototype.bindEvents = function (instance, events) {\n        function _bindEvent(eventName, func) {\n            // ignore the event config which not satisfy\n            if (isString(eventName) && isFunction(func)) {\n                // binding event\n                instance.on(eventName, function (param) {\n                    func(param, instance);\n                });\n            }\n        }\n        // loop and bind\n        for (var eventName in events) {\n            if (Object.prototype.hasOwnProperty.call(events, eventName)) {\n                _bindEvent(eventName, events[eventName]);\n            }\n        }\n    };\n    /**\n     * render the echarts\n     */\n    EChartsReactCore.prototype.updateEChartsOption = function () {\n        var _a = this.props, option = _a.option, _b = _a.notMerge, notMerge = _b === void 0 ? false : _b, _c = _a.lazyUpdate, lazyUpdate = _c === void 0 ? false : _c, showLoading = _a.showLoading, _d = _a.loadingOption, loadingOption = _d === void 0 ? null : _d;\n        // 1. get or initial the echarts object\n        var echartInstance = this.getEchartsInstance();\n        // 2. set the echarts option\n        echartInstance.setOption(option, notMerge, lazyUpdate);\n        // 3. set loading mask\n        if (showLoading)\n            echartInstance.showLoading(loadingOption);\n        else\n            echartInstance.hideLoading();\n        return echartInstance;\n    };\n    /**\n     * resize wrapper\n     */\n    EChartsReactCore.prototype.resize = function () {\n        // 1. get the echarts object\n        var echartsInstance = this.getEchartsInstance();\n        // 2. call echarts instance resize if not the initial resize\n        // resize should not happen on first render as it will cancel initial echarts animations\n        if (!this.isInitialResize) {\n            try {\n                echartsInstance.resize();\n            }\n            catch (e) {\n                console.warn(e);\n            }\n        }\n        // 3. update variable for future calls\n        this.isInitialResize = false;\n    };\n    EChartsReactCore.prototype.render = function () {\n        var _this = this;\n        var _a = this.props, style = _a.style, _b = _a.className, className = _b === void 0 ? '' : _b;\n        // default height = 300\n        var newStyle = __assign({ height: 300 }, style);\n        return (React.createElement(\"div\", { ref: function (e) {\n                _this.ele = e;\n            }, style: newStyle, className: \"echarts-for-react \" + className }));\n    };\n    return EChartsReactCore;\n}(PureComponent));\nexport default EChartsReactCore;\n//# sourceMappingURL=core.js.map","export function isString(v) {\n    return typeof v === 'string';\n}\n//# sourceMappingURL=is-string.js.map","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n    extendStatics = Object.setPrototypeOf ||\r\n        ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n        function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n    return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n    if (typeof b !== \"function\" && b !== null)\r\n        throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n    extendStatics(d, b);\r\n    function __() { this.constructor = d; }\r\n    d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n    __assign = Object.assign || function __assign(t) {\r\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n            s = arguments[i];\r\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n        }\r\n        return t;\r\n    }\r\n    return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n    var t = {};\r\n    for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n        t[p] = s[p];\r\n    if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n        for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n            if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n                t[p[i]] = s[p[i]];\r\n        }\r\n    return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n    return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n    if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n    return new (P || (P = Promise))(function (resolve, reject) {\r\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n    });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n    return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n    function verb(n) { return function (v) { return step([n, v]); }; }\r\n    function step(op) {\r\n        if (f) throw new TypeError(\"Generator is already executing.\");\r\n        while (_) try {\r\n            if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n            if (y = 0, t) op = [op[0] & 2, t.value];\r\n            switch (op[0]) {\r\n                case 0: case 1: t = op; break;\r\n                case 4: _.label++; return { value: op[1], done: false };\r\n                case 5: _.label++; y = op[1]; op = [0]; continue;\r\n                case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n                default:\r\n                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n                    if (t[2]) _.ops.pop();\r\n                    _.trys.pop(); continue;\r\n            }\r\n            op = body.call(thisArg, _);\r\n        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n    }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n    if (k2 === undefined) k2 = k;\r\n    Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n    if (k2 === undefined) k2 = k;\r\n    o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n    for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n    var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n    if (m) return m.call(o);\r\n    if (o && typeof o.length === \"number\") return {\r\n        next: function () {\r\n            if (o && i >= o.length) o = void 0;\r\n            return { value: o && o[i++], done: !o };\r\n        }\r\n    };\r\n    throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n    if (!m) return o;\r\n    var i = m.call(o), r, ar = [], e;\r\n    try {\r\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n    }\r\n    catch (error) { e = { error: error }; }\r\n    finally {\r\n        try {\r\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n        }\r\n        finally { if (e) throw e.error; }\r\n    }\r\n    return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n    for (var ar = [], i = 0; i < arguments.length; i++)\r\n        ar = ar.concat(__read(arguments[i]));\r\n    return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n    for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n    for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n        for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n            r[k] = a[j];\r\n    return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n    if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n        if (ar || !(i in from)) {\r\n            if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n            ar[i] = from[i];\r\n        }\r\n    }\r\n    return to.concat(ar || from);\r\n}\r\n\r\nexport function __await(v) {\r\n    return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n    if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n    var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n    return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n    function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n    function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n    function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n    function fulfill(value) { resume(\"next\", value); }\r\n    function reject(value) { resume(\"throw\", value); }\r\n    function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n    var i, p;\r\n    return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n    function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n    if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n    var m = o[Symbol.asyncIterator], i;\r\n    return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n    function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n    function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n    if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n    return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n    Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n    o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n    if (mod && mod.__esModule) return mod;\r\n    var result = {};\r\n    if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n    __setModuleDefault(result, mod);\r\n    return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n    return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n    if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n    if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n    return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n    if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n    if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n    if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n    return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n","var Browser = (function () {\n    function Browser() {\n        this.firefox = false;\n        this.ie = false;\n        this.edge = false;\n        this.newEdge = false;\n        this.weChat = false;\n    }\n    return Browser;\n}());\nvar Env = (function () {\n    function Env() {\n        this.browser = new Browser();\n        this.node = false;\n        this.wxa = false;\n        this.worker = false;\n        this.svgSupported = false;\n        this.touchEventsSupported = false;\n        this.pointerEventsSupported = false;\n        this.domSupported = false;\n        this.transformSupported = false;\n        this.transform3dSupported = false;\n        this.hasGlobalWindow = typeof window !== 'undefined';\n    }\n    return Env;\n}());\nvar env = new Env();\nif (typeof wx === 'object' && typeof wx.getSystemInfoSync === 'function') {\n    env.wxa = true;\n    env.touchEventsSupported = true;\n}\nelse if (typeof document === 'undefined' && typeof self !== 'undefined') {\n    env.worker = true;\n}\nelse if (typeof navigator === 'undefined') {\n    env.node = true;\n    env.svgSupported = true;\n}\nelse {\n    detect(navigator.userAgent, env);\n}\nfunction detect(ua, env) {\n    var browser = env.browser;\n    var firefox = ua.match(/Firefox\\/([\\d.]+)/);\n    var ie = ua.match(/MSIE\\s([\\d.]+)/)\n        || ua.match(/Trident\\/.+?rv:(([\\d.]+))/);\n    var edge = ua.match(/Edge?\\/([\\d.]+)/);\n    var weChat = (/micromessenger/i).test(ua);\n    if (firefox) {\n        browser.firefox = true;\n        browser.version = firefox[1];\n    }\n    if (ie) {\n        browser.ie = true;\n        browser.version = ie[1];\n    }\n    if (edge) {\n        browser.edge = true;\n        browser.version = edge[1];\n        browser.newEdge = +edge[1].split('.')[0] > 18;\n    }\n    if (weChat) {\n        browser.weChat = true;\n    }\n    env.svgSupported = typeof SVGRect !== 'undefined';\n    env.touchEventsSupported = 'ontouchstart' in window && !browser.ie && !browser.edge;\n    env.pointerEventsSupported = 'onpointerdown' in window\n        && (browser.edge || (browser.ie && +browser.version >= 11));\n    env.domSupported = typeof document !== 'undefined';\n    var style = document.documentElement.style;\n    env.transform3dSupported = ((browser.ie && 'transition' in style)\n        || browser.edge\n        || (('WebKitCSSMatrix' in window) && ('m11' in new WebKitCSSMatrix()))\n        || 'MozPerspective' in style)\n        && !('OTransition' in style);\n    env.transformSupported = env.transform3dSupported\n        || (browser.ie && +browser.version >= 9);\n}\nexport default env;\n","export var DEFAULT_FONT_SIZE = 12;\nexport var DEFAULT_FONT_FAMILY = 'sans-serif';\nexport var DEFAULT_FONT = DEFAULT_FONT_SIZE + \"px \" + DEFAULT_FONT_FAMILY;\nvar OFFSET = 20;\nvar SCALE = 100;\nvar defaultWidthMapStr = \"007LLmW'55;N0500LLLLLLLLLL00NNNLzWW\\\\\\\\WQb\\\\0FWLg\\\\bWb\\\\WQ\\\\WrWWQ000CL5LLFLL0LL**F*gLLLL5F0LF\\\\FFF5.5N\";\nfunction getTextWidthMap(mapStr) {\n    var map = {};\n    if (typeof JSON === 'undefined') {\n        return map;\n    }\n    for (var i = 0; i < mapStr.length; i++) {\n        var char = String.fromCharCode(i + 32);\n        var size = (mapStr.charCodeAt(i) - OFFSET) / SCALE;\n        map[char] = size;\n    }\n    return map;\n}\nexport var DEFAULT_TEXT_WIDTH_MAP = getTextWidthMap(defaultWidthMapStr);\nexport var platformApi = {\n    createCanvas: function () {\n        return typeof document !== 'undefined'\n            && document.createElement('canvas');\n    },\n    measureText: (function () {\n        var _ctx;\n        var _cachedFont;\n        return function (text, font) {\n            if (!_ctx) {\n                var canvas = platformApi.createCanvas();\n                _ctx = canvas && canvas.getContext('2d');\n            }\n            if (_ctx) {\n                if (_cachedFont !== font) {\n                    _cachedFont = _ctx.font = font || DEFAULT_FONT;\n                }\n                return _ctx.measureText(text);\n            }\n            else {\n                text = text || '';\n                font = font || DEFAULT_FONT;\n                var res = /(\\d+)px/.exec(font);\n                var fontSize = res && +res[1] || DEFAULT_FONT_SIZE;\n                var width = 0;\n                if (font.indexOf('mono') >= 0) {\n                    width = fontSize * text.length;\n                }\n                else {\n                    for (var i = 0; i < text.length; i++) {\n                        var preCalcWidth = DEFAULT_TEXT_WIDTH_MAP[text[i]];\n                        width += preCalcWidth == null ? fontSize : (preCalcWidth * fontSize);\n                    }\n                }\n                return { width: width };\n            }\n        };\n    })(),\n    loadImage: function (src, onload, onerror) {\n        var image = new Image();\n        image.onload = onload;\n        image.onerror = onerror;\n        image.src = src;\n        return image;\n    }\n};\nexport function setPlatformAPI(newPlatformApis) {\n    for (var key in platformApi) {\n        if (newPlatformApis[key]) {\n            platformApi[key] = newPlatformApis[key];\n        }\n    }\n}\n","import { platformApi } from './platform.js';\nvar BUILTIN_OBJECT = reduce([\n    'Function',\n    'RegExp',\n    'Date',\n    'Error',\n    'CanvasGradient',\n    'CanvasPattern',\n    'Image',\n    'Canvas'\n], function (obj, val) {\n    obj['[object ' + val + ']'] = true;\n    return obj;\n}, {});\nvar TYPED_ARRAY = reduce([\n    'Int8',\n    'Uint8',\n    'Uint8Clamped',\n    'Int16',\n    'Uint16',\n    'Int32',\n    'Uint32',\n    'Float32',\n    'Float64'\n], function (obj, val) {\n    obj['[object ' + val + 'Array]'] = true;\n    return obj;\n}, {});\nvar objToString = Object.prototype.toString;\nvar arrayProto = Array.prototype;\nvar nativeForEach = arrayProto.forEach;\nvar nativeFilter = arrayProto.filter;\nvar nativeSlice = arrayProto.slice;\nvar nativeMap = arrayProto.map;\nvar ctorFunction = function () { }.constructor;\nvar protoFunction = ctorFunction ? ctorFunction.prototype : null;\nvar protoKey = '__proto__';\nvar idStart = 0x0907;\nexport function guid() {\n    return idStart++;\n}\nexport function logError() {\n    var args = [];\n    for (var _i = 0; _i < arguments.length; _i++) {\n        args[_i] = arguments[_i];\n    }\n    if (typeof console !== 'undefined') {\n        console.error.apply(console, args);\n    }\n}\nexport function clone(source) {\n    if (source == null || typeof source !== 'object') {\n        return source;\n    }\n    var result = source;\n    var typeStr = objToString.call(source);\n    if (typeStr === '[object Array]') {\n        if (!isPrimitive(source)) {\n            result = [];\n            for (var i = 0, len = source.length; i < len; i++) {\n                result[i] = clone(source[i]);\n            }\n        }\n    }\n    else if (TYPED_ARRAY[typeStr]) {\n        if (!isPrimitive(source)) {\n            var Ctor = source.constructor;\n            if (Ctor.from) {\n                result = Ctor.from(source);\n            }\n            else {\n                result = new Ctor(source.length);\n                for (var i = 0, len = source.length; i < len; i++) {\n                    result[i] = source[i];\n                }\n            }\n        }\n    }\n    else if (!BUILTIN_OBJECT[typeStr] && !isPrimitive(source) && !isDom(source)) {\n        result = {};\n        for (var key in source) {\n            if (source.hasOwnProperty(key) && key !== protoKey) {\n                result[key] = clone(source[key]);\n            }\n        }\n    }\n    return result;\n}\nexport function merge(target, source, overwrite) {\n    if (!isObject(source) || !isObject(target)) {\n        return overwrite ? clone(source) : target;\n    }\n    for (var key in source) {\n        if (source.hasOwnProperty(key) && key !== protoKey) {\n            var targetProp = target[key];\n            var sourceProp = source[key];\n            if (isObject(sourceProp)\n                && isObject(targetProp)\n                && !isArray(sourceProp)\n                && !isArray(targetProp)\n                && !isDom(sourceProp)\n                && !isDom(targetProp)\n                && !isBuiltInObject(sourceProp)\n                && !isBuiltInObject(targetProp)\n                && !isPrimitive(sourceProp)\n                && !isPrimitive(targetProp)) {\n                merge(targetProp, sourceProp, overwrite);\n            }\n            else if (overwrite || !(key in target)) {\n                target[key] = clone(source[key]);\n            }\n        }\n    }\n    return target;\n}\nexport function mergeAll(targetAndSources, overwrite) {\n    var result = targetAndSources[0];\n    for (var i = 1, len = targetAndSources.length; i < len; i++) {\n        result = merge(result, targetAndSources[i], overwrite);\n    }\n    return result;\n}\nexport function extend(target, source) {\n    if (Object.assign) {\n        Object.assign(target, source);\n    }\n    else {\n        for (var key in source) {\n            if (source.hasOwnProperty(key) && key !== protoKey) {\n                target[key] = source[key];\n            }\n        }\n    }\n    return target;\n}\nexport function defaults(target, source, overlay) {\n    var keysArr = keys(source);\n    for (var i = 0; i < keysArr.length; i++) {\n        var key = keysArr[i];\n        if ((overlay ? source[key] != null : target[key] == null)) {\n            target[key] = source[key];\n        }\n    }\n    return target;\n}\nexport var createCanvas = platformApi.createCanvas;\nexport function indexOf(array, value) {\n    if (array) {\n        if (array.indexOf) {\n            return array.indexOf(value);\n        }\n        for (var i = 0, len = array.length; i < len; i++) {\n            if (array[i] === value) {\n                return i;\n            }\n        }\n    }\n    return -1;\n}\nexport function inherits(clazz, baseClazz) {\n    var clazzPrototype = clazz.prototype;\n    function F() { }\n    F.prototype = baseClazz.prototype;\n    clazz.prototype = new F();\n    for (var prop in clazzPrototype) {\n        if (clazzPrototype.hasOwnProperty(prop)) {\n            clazz.prototype[prop] = clazzPrototype[prop];\n        }\n    }\n    clazz.prototype.constructor = clazz;\n    clazz.superClass = baseClazz;\n}\nexport function mixin(target, source, override) {\n    target = 'prototype' in target ? target.prototype : target;\n    source = 'prototype' in source ? source.prototype : source;\n    if (Object.getOwnPropertyNames) {\n        var keyList = Object.getOwnPropertyNames(source);\n        for (var i = 0; i < keyList.length; i++) {\n            var key = keyList[i];\n            if (key !== 'constructor') {\n                if ((override ? source[key] != null : target[key] == null)) {\n                    target[key] = source[key];\n                }\n            }\n        }\n    }\n    else {\n        defaults(target, source, override);\n    }\n}\nexport function isArrayLike(data) {\n    if (!data) {\n        return false;\n    }\n    if (typeof data === 'string') {\n        return false;\n    }\n    return typeof data.length === 'number';\n}\nexport function each(arr, cb, context) {\n    if (!(arr && cb)) {\n        return;\n    }\n    if (arr.forEach && arr.forEach === nativeForEach) {\n        arr.forEach(cb, context);\n    }\n    else if (arr.length === +arr.length) {\n        for (var i = 0, len = arr.length; i < len; i++) {\n            cb.call(context, arr[i], i, arr);\n        }\n    }\n    else {\n        for (var key in arr) {\n            if (arr.hasOwnProperty(key)) {\n                cb.call(context, arr[key], key, arr);\n            }\n        }\n    }\n}\nexport function map(arr, cb, context) {\n    if (!arr) {\n        return [];\n    }\n    if (!cb) {\n        return slice(arr);\n    }\n    if (arr.map && arr.map === nativeMap) {\n        return arr.map(cb, context);\n    }\n    else {\n        var result = [];\n        for (var i = 0, len = arr.length; i < len; i++) {\n            result.push(cb.call(context, arr[i], i, arr));\n        }\n        return result;\n    }\n}\nexport function reduce(arr, cb, memo, context) {\n    if (!(arr && cb)) {\n        return;\n    }\n    for (var i = 0, len = arr.length; i < len; i++) {\n        memo = cb.call(context, memo, arr[i], i, arr);\n    }\n    return memo;\n}\nexport function filter(arr, cb, context) {\n    if (!arr) {\n        return [];\n    }\n    if (!cb) {\n        return slice(arr);\n    }\n    if (arr.filter && arr.filter === nativeFilter) {\n        return arr.filter(cb, context);\n    }\n    else {\n        var result = [];\n        for (var i = 0, len = arr.length; i < len; i++) {\n            if (cb.call(context, arr[i], i, arr)) {\n                result.push(arr[i]);\n            }\n        }\n        return result;\n    }\n}\nexport function find(arr, cb, context) {\n    if (!(arr && cb)) {\n        return;\n    }\n    for (var i = 0, len = arr.length; i < len; i++) {\n        if (cb.call(context, arr[i], i, arr)) {\n            return arr[i];\n        }\n    }\n}\nexport function keys(obj) {\n    if (!obj) {\n        return [];\n    }\n    if (Object.keys) {\n        return Object.keys(obj);\n    }\n    var keyList = [];\n    for (var key in obj) {\n        if (obj.hasOwnProperty(key)) {\n            keyList.push(key);\n        }\n    }\n    return keyList;\n}\nfunction bindPolyfill(func, context) {\n    var args = [];\n    for (var _i = 2; _i < arguments.length; _i++) {\n        args[_i - 2] = arguments[_i];\n    }\n    return function () {\n        return func.apply(context, args.concat(nativeSlice.call(arguments)));\n    };\n}\nexport var bind = (protoFunction && isFunction(protoFunction.bind))\n    ? protoFunction.call.bind(protoFunction.bind)\n    : bindPolyfill;\nfunction curry(func) {\n    var args = [];\n    for (var _i = 1; _i < arguments.length; _i++) {\n        args[_i - 1] = arguments[_i];\n    }\n    return function () {\n        return func.apply(this, args.concat(nativeSlice.call(arguments)));\n    };\n}\nexport { curry };\nexport function isArray(value) {\n    if (Array.isArray) {\n        return Array.isArray(value);\n    }\n    return objToString.call(value) === '[object Array]';\n}\nexport function isFunction(value) {\n    return typeof value === 'function';\n}\nexport function isString(value) {\n    return typeof value === 'string';\n}\nexport function isStringSafe(value) {\n    return objToString.call(value) === '[object String]';\n}\nexport function isNumber(value) {\n    return typeof value === 'number';\n}\nexport function isObject(value) {\n    var type = typeof value;\n    return type === 'function' || (!!value && type === 'object');\n}\nexport function isBuiltInObject(value) {\n    return !!BUILTIN_OBJECT[objToString.call(value)];\n}\nexport function isTypedArray(value) {\n    return !!TYPED_ARRAY[objToString.call(value)];\n}\nexport function isDom(value) {\n    return typeof value === 'object'\n        && typeof value.nodeType === 'number'\n        && typeof value.ownerDocument === 'object';\n}\nexport function isGradientObject(value) {\n    return value.colorStops != null;\n}\nexport function isImagePatternObject(value) {\n    return value.image != null;\n}\nexport function isRegExp(value) {\n    return objToString.call(value) === '[object RegExp]';\n}\nexport function eqNaN(value) {\n    return value !== value;\n}\nexport function retrieve() {\n    var args = [];\n    for (var _i = 0; _i < arguments.length; _i++) {\n        args[_i] = arguments[_i];\n    }\n    for (var i = 0, len = args.length; i < len; i++) {\n        if (args[i] != null) {\n            return args[i];\n        }\n    }\n}\nexport function retrieve2(value0, value1) {\n    return value0 != null\n        ? value0\n        : value1;\n}\nexport function retrieve3(value0, value1, value2) {\n    return value0 != null\n        ? value0\n        : value1 != null\n            ? value1\n            : value2;\n}\nexport function slice(arr) {\n    var args = [];\n    for (var _i = 1; _i < arguments.length; _i++) {\n        args[_i - 1] = arguments[_i];\n    }\n    return nativeSlice.apply(arr, args);\n}\nexport function normalizeCssArray(val) {\n    if (typeof (val) === 'number') {\n        return [val, val, val, val];\n    }\n    var len = val.length;\n    if (len === 2) {\n        return [val[0], val[1], val[0], val[1]];\n    }\n    else if (len === 3) {\n        return [val[0], val[1], val[2], val[1]];\n    }\n    return val;\n}\nexport function assert(condition, message) {\n    if (!condition) {\n        throw new Error(message);\n    }\n}\nexport function trim(str) {\n    if (str == null) {\n        return null;\n    }\n    else if (typeof str.trim === 'function') {\n        return str.trim();\n    }\n    else {\n        return str.replace(/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g, '');\n    }\n}\nvar primitiveKey = '__ec_primitive__';\nexport function setAsPrimitive(obj) {\n    obj[primitiveKey] = true;\n}\nexport function isPrimitive(obj) {\n    return obj[primitiveKey];\n}\nvar MapPolyfill = (function () {\n    function MapPolyfill() {\n        this.data = {};\n    }\n    MapPolyfill.prototype[\"delete\"] = function (key) {\n        var existed = this.has(key);\n        if (existed) {\n            delete this.data[key];\n        }\n        return existed;\n    };\n    MapPolyfill.prototype.has = function (key) {\n        return this.data.hasOwnProperty(key);\n    };\n    MapPolyfill.prototype.get = function (key) {\n        return this.data[key];\n    };\n    MapPolyfill.prototype.set = function (key, value) {\n        this.data[key] = value;\n        return this;\n    };\n    MapPolyfill.prototype.keys = function () {\n        return keys(this.data);\n    };\n    MapPolyfill.prototype.forEach = function (callback) {\n        var data = this.data;\n        for (var key in data) {\n            if (data.hasOwnProperty(key)) {\n                callback(data[key], key);\n            }\n        }\n    };\n    return MapPolyfill;\n}());\nvar isNativeMapSupported = typeof Map === 'function';\nfunction maybeNativeMap() {\n    return (isNativeMapSupported ? new Map() : new MapPolyfill());\n}\nvar HashMap = (function () {\n    function HashMap(obj) {\n        var isArr = isArray(obj);\n        this.data = maybeNativeMap();\n        var thisMap = this;\n        (obj instanceof HashMap)\n            ? obj.each(visit)\n            : (obj && each(obj, visit));\n        function visit(value, key) {\n            isArr ? thisMap.set(value, key) : thisMap.set(key, value);\n        }\n    }\n    HashMap.prototype.hasKey = function (key) {\n        return this.data.has(key);\n    };\n    HashMap.prototype.get = function (key) {\n        return this.data.get(key);\n    };\n    HashMap.prototype.set = function (key, value) {\n        this.data.set(key, value);\n        return value;\n    };\n    HashMap.prototype.each = function (cb, context) {\n        this.data.forEach(function (value, key) {\n            cb.call(context, value, key);\n        });\n    };\n    HashMap.prototype.keys = function () {\n        var keys = this.data.keys();\n        return isNativeMapSupported\n            ? Array.from(keys)\n            : keys;\n    };\n    HashMap.prototype.removeKey = function (key) {\n        this.data[\"delete\"](key);\n    };\n    return HashMap;\n}());\nexport { HashMap };\nexport function createHashMap(obj) {\n    return new HashMap(obj);\n}\nexport function concatArray(a, b) {\n    var newArray = new a.constructor(a.length + b.length);\n    for (var i = 0; i < a.length; i++) {\n        newArray[i] = a[i];\n    }\n    var offset = a.length;\n    for (var i = 0; i < b.length; i++) {\n        newArray[i + offset] = b[i];\n    }\n    return newArray;\n}\nexport function createObject(proto, properties) {\n    var obj;\n    if (Object.create) {\n        obj = Object.create(proto);\n    }\n    else {\n        var StyleCtor = function () { };\n        StyleCtor.prototype = proto;\n        obj = new StyleCtor();\n    }\n    if (properties) {\n        extend(obj, properties);\n    }\n    return obj;\n}\nexport function disableUserSelect(dom) {\n    var domStyle = dom.style;\n    domStyle.webkitUserSelect = 'none';\n    domStyle.userSelect = 'none';\n    domStyle.webkitTapHighlightColor = 'rgba(0,0,0,0)';\n    domStyle['-webkit-touch-callout'] = 'none';\n}\nexport function hasOwn(own, prop) {\n    return own.hasOwnProperty(prop);\n}\nexport function noop() { }\nexport var RADIAN_TO_DEGREE = 180 / Math.PI;\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n    extendStatics = Object.setPrototypeOf ||\r\n        ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n        function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n    return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n    if (typeof b !== \"function\" && b !== null)\r\n        throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n    extendStatics(d, b);\r\n    function __() { this.constructor = d; }\r\n    d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n    __assign = Object.assign || function __assign(t) {\r\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n            s = arguments[i];\r\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n        }\r\n        return t;\r\n    }\r\n    return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n    var t = {};\r\n    for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n        t[p] = s[p];\r\n    if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n        for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n            if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n                t[p[i]] = s[p[i]];\r\n        }\r\n    return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n    return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n    if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n    return new (P || (P = Promise))(function (resolve, reject) {\r\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n    });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n    return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n    function verb(n) { return function (v) { return step([n, v]); }; }\r\n    function step(op) {\r\n        if (f) throw new TypeError(\"Generator is already executing.\");\r\n        while (_) try {\r\n            if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n            if (y = 0, t) op = [op[0] & 2, t.value];\r\n            switch (op[0]) {\r\n                case 0: case 1: t = op; break;\r\n                case 4: _.label++; return { value: op[1], done: false };\r\n                case 5: _.label++; y = op[1]; op = [0]; continue;\r\n                case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n                default:\r\n                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n                    if (t[2]) _.ops.pop();\r\n                    _.trys.pop(); continue;\r\n            }\r\n            op = body.call(thisArg, _);\r\n        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n    }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n    if (k2 === undefined) k2 = k;\r\n    Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n    if (k2 === undefined) k2 = k;\r\n    o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n    for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n    var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n    if (m) return m.call(o);\r\n    if (o && typeof o.length === \"number\") return {\r\n        next: function () {\r\n            if (o && i >= o.length) o = void 0;\r\n            return { value: o && o[i++], done: !o };\r\n        }\r\n    };\r\n    throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n    if (!m) return o;\r\n    var i = m.call(o), r, ar = [], e;\r\n    try {\r\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n    }\r\n    catch (error) { e = { error: error }; }\r\n    finally {\r\n        try {\r\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n        }\r\n        finally { if (e) throw e.error; }\r\n    }\r\n    return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n    for (var ar = [], i = 0; i < arguments.length; i++)\r\n        ar = ar.concat(__read(arguments[i]));\r\n    return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n    for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n    for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n        for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n            r[k] = a[j];\r\n    return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n    if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n        if (ar || !(i in from)) {\r\n            if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n            ar[i] = from[i];\r\n        }\r\n    }\r\n    return to.concat(ar || from);\r\n}\r\n\r\nexport function __await(v) {\r\n    return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n    if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n    var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n    return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n    function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n    function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n    function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n    function fulfill(value) { resume(\"next\", value); }\r\n    function reject(value) { resume(\"throw\", value); }\r\n    function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n    var i, p;\r\n    return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n    function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n    if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n    var m = o[Symbol.asyncIterator], i;\r\n    return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n    function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n    function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n    if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n    return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n    Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n    o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n    if (mod && mod.__esModule) return mod;\r\n    var result = {};\r\n    if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n    __setModuleDefault(result, mod);\r\n    return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n    return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n    if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n    if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n    return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n    if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n    if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n    if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n    return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n","export function create(x, y) {\n    if (x == null) {\n        x = 0;\n    }\n    if (y == null) {\n        y = 0;\n    }\n    return [x, y];\n}\nexport function copy(out, v) {\n    out[0] = v[0];\n    out[1] = v[1];\n    return out;\n}\nexport function clone(v) {\n    return [v[0], v[1]];\n}\nexport function set(out, a, b) {\n    out[0] = a;\n    out[1] = b;\n    return out;\n}\nexport function add(out, v1, v2) {\n    out[0] = v1[0] + v2[0];\n    out[1] = v1[1] + v2[1];\n    return out;\n}\nexport function scaleAndAdd(out, v1, v2, a) {\n    out[0] = v1[0] + v2[0] * a;\n    out[1] = v1[1] + v2[1] * a;\n    return out;\n}\nexport function sub(out, v1, v2) {\n    out[0] = v1[0] - v2[0];\n    out[1] = v1[1] - v2[1];\n    return out;\n}\nexport function len(v) {\n    return Math.sqrt(lenSquare(v));\n}\nexport var length = len;\nexport function lenSquare(v) {\n    return v[0] * v[0] + v[1] * v[1];\n}\nexport var lengthSquare = lenSquare;\nexport function mul(out, v1, v2) {\n    out[0] = v1[0] * v2[0];\n    out[1] = v1[1] * v2[1];\n    return out;\n}\nexport function div(out, v1, v2) {\n    out[0] = v1[0] / v2[0];\n    out[1] = v1[1] / v2[1];\n    return out;\n}\nexport function dot(v1, v2) {\n    return v1[0] * v2[0] + v1[1] * v2[1];\n}\nexport function scale(out, v, s) {\n    out[0] = v[0] * s;\n    out[1] = v[1] * s;\n    return out;\n}\nexport function normalize(out, v) {\n    var d = len(v);\n    if (d === 0) {\n        out[0] = 0;\n        out[1] = 0;\n    }\n    else {\n        out[0] = v[0] / d;\n        out[1] = v[1] / d;\n    }\n    return out;\n}\nexport function distance(v1, v2) {\n    return Math.sqrt((v1[0] - v2[0]) * (v1[0] - v2[0])\n        + (v1[1] - v2[1]) * (v1[1] - v2[1]));\n}\nexport var dist = distance;\nexport function distanceSquare(v1, v2) {\n    return (v1[0] - v2[0]) * (v1[0] - v2[0])\n        + (v1[1] - v2[1]) * (v1[1] - v2[1]);\n}\nexport var distSquare = distanceSquare;\nexport function negate(out, v) {\n    out[0] = -v[0];\n    out[1] = -v[1];\n    return out;\n}\nexport function lerp(out, v1, v2, t) {\n    out[0] = v1[0] + t * (v2[0] - v1[0]);\n    out[1] = v1[1] + t * (v2[1] - v1[1]);\n    return out;\n}\nexport function applyTransform(out, v, m) {\n    var x = v[0];\n    var y = v[1];\n    out[0] = m[0] * x + m[2] * y + m[4];\n    out[1] = m[1] * x + m[3] * y + m[5];\n    return out;\n}\nexport function min(out, v1, v2) {\n    out[0] = Math.min(v1[0], v2[0]);\n    out[1] = Math.min(v1[1], v2[1]);\n    return out;\n}\nexport function max(out, v1, v2) {\n    out[0] = Math.max(v1[0], v2[0]);\n    out[1] = Math.max(v1[1], v2[1]);\n    return out;\n}\n","var Param = (function () {\n    function Param(target, e) {\n        this.target = target;\n        this.topTarget = e && e.topTarget;\n    }\n    return Param;\n}());\nvar Draggable = (function () {\n    function Draggable(handler) {\n        this.handler = handler;\n        handler.on('mousedown', this._dragStart, this);\n        handler.on('mousemove', this._drag, this);\n        handler.on('mouseup', this._dragEnd, this);\n    }\n    Draggable.prototype._dragStart = function (e) {\n        var draggingTarget = e.target;\n        while (draggingTarget && !draggingTarget.draggable) {\n            draggingTarget = draggingTarget.parent || draggingTarget.__hostTarget;\n        }\n        if (draggingTarget) {\n            this._draggingTarget = draggingTarget;\n            draggingTarget.dragging = true;\n            this._x = e.offsetX;\n            this._y = e.offsetY;\n            this.handler.dispatchToElement(new Param(draggingTarget, e), 'dragstart', e.event);\n        }\n    };\n    Draggable.prototype._drag = function (e) {\n        var draggingTarget = this._draggingTarget;\n        if (draggingTarget) {\n            var x = e.offsetX;\n            var y = e.offsetY;\n            var dx = x - this._x;\n            var dy = y - this._y;\n            this._x = x;\n            this._y = y;\n            draggingTarget.drift(dx, dy, e);\n            this.handler.dispatchToElement(new Param(draggingTarget, e), 'drag', e.event);\n            var dropTarget = this.handler.findHover(x, y, draggingTarget).target;\n            var lastDropTarget = this._dropTarget;\n            this._dropTarget = dropTarget;\n            if (draggingTarget !== dropTarget) {\n                if (lastDropTarget && dropTarget !== lastDropTarget) {\n                    this.handler.dispatchToElement(new Param(lastDropTarget, e), 'dragleave', e.event);\n                }\n                if (dropTarget && dropTarget !== lastDropTarget) {\n                    this.handler.dispatchToElement(new Param(dropTarget, e), 'dragenter', e.event);\n                }\n            }\n        }\n    };\n    Draggable.prototype._dragEnd = function (e) {\n        var draggingTarget = this._draggingTarget;\n        if (draggingTarget) {\n            draggingTarget.dragging = false;\n        }\n        this.handler.dispatchToElement(new Param(draggingTarget, e), 'dragend', e.event);\n        if (this._dropTarget) {\n            this.handler.dispatchToElement(new Param(this._dropTarget, e), 'drop', e.event);\n        }\n        this._draggingTarget = null;\n        this._dropTarget = null;\n    };\n    return Draggable;\n}());\nexport default Draggable;\n","var Eventful = (function () {\n    function Eventful(eventProcessors) {\n        if (eventProcessors) {\n            this._$eventProcessor = eventProcessors;\n        }\n    }\n    Eventful.prototype.on = function (event, query, handler, context) {\n        if (!this._$handlers) {\n            this._$handlers = {};\n        }\n        var _h = this._$handlers;\n        if (typeof query === 'function') {\n            context = handler;\n            handler = query;\n            query = null;\n        }\n        if (!handler || !event) {\n            return this;\n        }\n        var eventProcessor = this._$eventProcessor;\n        if (query != null && eventProcessor && eventProcessor.normalizeQuery) {\n            query = eventProcessor.normalizeQuery(query);\n        }\n        if (!_h[event]) {\n            _h[event] = [];\n        }\n        for (var i = 0; i < _h[event].length; i++) {\n            if (_h[event][i].h === handler) {\n                return this;\n            }\n        }\n        var wrap = {\n            h: handler,\n            query: query,\n            ctx: (context || this),\n            callAtLast: handler.zrEventfulCallAtLast\n        };\n        var lastIndex = _h[event].length - 1;\n        var lastWrap = _h[event][lastIndex];\n        (lastWrap && lastWrap.callAtLast)\n            ? _h[event].splice(lastIndex, 0, wrap)\n            : _h[event].push(wrap);\n        return this;\n    };\n    Eventful.prototype.isSilent = function (eventName) {\n        var _h = this._$handlers;\n        return !_h || !_h[eventName] || !_h[eventName].length;\n    };\n    Eventful.prototype.off = function (eventType, handler) {\n        var _h = this._$handlers;\n        if (!_h) {\n            return this;\n        }\n        if (!eventType) {\n            this._$handlers = {};\n            return this;\n        }\n        if (handler) {\n            if (_h[eventType]) {\n                var newList = [];\n                for (var i = 0, l = _h[eventType].length; i < l; i++) {\n                    if (_h[eventType][i].h !== handler) {\n                        newList.push(_h[eventType][i]);\n                    }\n                }\n                _h[eventType] = newList;\n            }\n            if (_h[eventType] && _h[eventType].length === 0) {\n                delete _h[eventType];\n            }\n        }\n        else {\n            delete _h[eventType];\n        }\n        return this;\n    };\n    Eventful.prototype.trigger = function (eventType) {\n        var args = [];\n        for (var _i = 1; _i < arguments.length; _i++) {\n            args[_i - 1] = arguments[_i];\n        }\n        if (!this._$handlers) {\n            return this;\n        }\n        var _h = this._$handlers[eventType];\n        var eventProcessor = this._$eventProcessor;\n        if (_h) {\n            var argLen = args.length;\n            var len = _h.length;\n            for (var i = 0; i < len; i++) {\n                var hItem = _h[i];\n                if (eventProcessor\n                    && eventProcessor.filter\n                    && hItem.query != null\n                    && !eventProcessor.filter(eventType, hItem.query)) {\n                    continue;\n                }\n                switch (argLen) {\n                    case 0:\n                        hItem.h.call(hItem.ctx);\n                        break;\n                    case 1:\n                        hItem.h.call(hItem.ctx, args[0]);\n                        break;\n                    case 2:\n                        hItem.h.call(hItem.ctx, args[0], args[1]);\n                        break;\n                    default:\n                        hItem.h.apply(hItem.ctx, args);\n                        break;\n                }\n            }\n        }\n        eventProcessor && eventProcessor.afterTrigger\n            && eventProcessor.afterTrigger(eventType);\n        return this;\n    };\n    Eventful.prototype.triggerWithContext = function (type) {\n        var args = [];\n        for (var _i = 1; _i < arguments.length; _i++) {\n            args[_i - 1] = arguments[_i];\n        }\n        if (!this._$handlers) {\n            return this;\n        }\n        var _h = this._$handlers[type];\n        var eventProcessor = this._$eventProcessor;\n        if (_h) {\n            var argLen = args.length;\n            var ctx = args[argLen - 1];\n            var len = _h.length;\n            for (var i = 0; i < len; i++) {\n                var hItem = _h[i];\n                if (eventProcessor\n                    && eventProcessor.filter\n                    && hItem.query != null\n                    && !eventProcessor.filter(type, hItem.query)) {\n                    continue;\n                }\n                switch (argLen) {\n                    case 0:\n                        hItem.h.call(ctx);\n                        break;\n                    case 1:\n                        hItem.h.call(ctx, args[0]);\n                        break;\n                    case 2:\n                        hItem.h.call(ctx, args[0], args[1]);\n                        break;\n                    default:\n                        hItem.h.apply(ctx, args.slice(1, argLen - 1));\n                        break;\n                }\n            }\n        }\n        eventProcessor && eventProcessor.afterTrigger\n            && eventProcessor.afterTrigger(type);\n        return this;\n    };\n    return Eventful;\n}());\nexport default Eventful;\n","var LN2 = Math.log(2);\nfunction determinant(rows, rank, rowStart, rowMask, colMask, detCache) {\n    var cacheKey = rowMask + '-' + colMask;\n    var fullRank = rows.length;\n    if (detCache.hasOwnProperty(cacheKey)) {\n        return detCache[cacheKey];\n    }\n    if (rank === 1) {\n        var colStart = Math.round(Math.log(((1 << fullRank) - 1) & ~colMask) / LN2);\n        return rows[rowStart][colStart];\n    }\n    var subRowMask = rowMask | (1 << rowStart);\n    var subRowStart = rowStart + 1;\n    while (rowMask & (1 << subRowStart)) {\n        subRowStart++;\n    }\n    var sum = 0;\n    for (var j = 0, colLocalIdx = 0; j < fullRank; j++) {\n        var colTag = 1 << j;\n        if (!(colTag & colMask)) {\n            sum += (colLocalIdx % 2 ? -1 : 1) * rows[rowStart][j]\n                * determinant(rows, rank - 1, subRowStart, subRowMask, colMask | colTag, detCache);\n            colLocalIdx++;\n        }\n    }\n    detCache[cacheKey] = sum;\n    return sum;\n}\nexport function buildTransformer(src, dest) {\n    var mA = [\n        [src[0], src[1], 1, 0, 0, 0, -dest[0] * src[0], -dest[0] * src[1]],\n        [0, 0, 0, src[0], src[1], 1, -dest[1] * src[0], -dest[1] * src[1]],\n        [src[2], src[3], 1, 0, 0, 0, -dest[2] * src[2], -dest[2] * src[3]],\n        [0, 0, 0, src[2], src[3], 1, -dest[3] * src[2], -dest[3] * src[3]],\n        [src[4], src[5], 1, 0, 0, 0, -dest[4] * src[4], -dest[4] * src[5]],\n        [0, 0, 0, src[4], src[5], 1, -dest[5] * src[4], -dest[5] * src[5]],\n        [src[6], src[7], 1, 0, 0, 0, -dest[6] * src[6], -dest[6] * src[7]],\n        [0, 0, 0, src[6], src[7], 1, -dest[7] * src[6], -dest[7] * src[7]]\n    ];\n    var detCache = {};\n    var det = determinant(mA, 8, 0, 0, 0, detCache);\n    if (det === 0) {\n        return;\n    }\n    var vh = [];\n    for (var i = 0; i < 8; i++) {\n        for (var j = 0; j < 8; j++) {\n            vh[j] == null && (vh[j] = 0);\n            vh[j] += ((i + j) % 2 ? -1 : 1)\n                * determinant(mA, 7, i === 0 ? 1 : 0, 1 << i, 1 << j, detCache)\n                / det * dest[i];\n        }\n    }\n    return function (out, srcPointX, srcPointY) {\n        var pk = srcPointX * vh[6] + srcPointY * vh[7] + 1;\n        out[0] = (srcPointX * vh[0] + srcPointY * vh[1] + vh[2]) / pk;\n        out[1] = (srcPointX * vh[3] + srcPointY * vh[4] + vh[5]) / pk;\n    };\n}\n","import env from './env.js';\nimport { buildTransformer } from './fourPointsTransform.js';\nvar EVENT_SAVED_PROP = '___zrEVENTSAVED';\nvar _calcOut = [];\nexport function transformLocalCoord(out, elFrom, elTarget, inX, inY) {\n    return transformCoordWithViewport(_calcOut, elFrom, inX, inY, true)\n        && transformCoordWithViewport(out, elTarget, _calcOut[0], _calcOut[1]);\n}\nexport function transformCoordWithViewport(out, el, inX, inY, inverse) {\n    if (el.getBoundingClientRect && env.domSupported && !isCanvasEl(el)) {\n        var saved = el[EVENT_SAVED_PROP] || (el[EVENT_SAVED_PROP] = {});\n        var markers = prepareCoordMarkers(el, saved);\n        var transformer = preparePointerTransformer(markers, saved, inverse);\n        if (transformer) {\n            transformer(out, inX, inY);\n            return true;\n        }\n    }\n    return false;\n}\nfunction prepareCoordMarkers(el, saved) {\n    var markers = saved.markers;\n    if (markers) {\n        return markers;\n    }\n    markers = saved.markers = [];\n    var propLR = ['left', 'right'];\n    var propTB = ['top', 'bottom'];\n    for (var i = 0; i < 4; i++) {\n        var marker = document.createElement('div');\n        var stl = marker.style;\n        var idxLR = i % 2;\n        var idxTB = (i >> 1) % 2;\n        stl.cssText = [\n            'position: absolute',\n            'visibility: hidden',\n            'padding: 0',\n            'margin: 0',\n            'border-width: 0',\n            'user-select: none',\n            'width:0',\n            'height:0',\n            propLR[idxLR] + ':0',\n            propTB[idxTB] + ':0',\n            propLR[1 - idxLR] + ':auto',\n            propTB[1 - idxTB] + ':auto',\n            ''\n        ].join('!important;');\n        el.appendChild(marker);\n        markers.push(marker);\n    }\n    return markers;\n}\nfunction preparePointerTransformer(markers, saved, inverse) {\n    var transformerName = inverse ? 'invTrans' : 'trans';\n    var transformer = saved[transformerName];\n    var oldSrcCoords = saved.srcCoords;\n    var srcCoords = [];\n    var destCoords = [];\n    var oldCoordTheSame = true;\n    for (var i = 0; i < 4; i++) {\n        var rect = markers[i].getBoundingClientRect();\n        var ii = 2 * i;\n        var x = rect.left;\n        var y = rect.top;\n        srcCoords.push(x, y);\n        oldCoordTheSame = oldCoordTheSame && oldSrcCoords && x === oldSrcCoords[ii] && y === oldSrcCoords[ii + 1];\n        destCoords.push(markers[i].offsetLeft, markers[i].offsetTop);\n    }\n    return (oldCoordTheSame && transformer)\n        ? transformer\n        : (saved.srcCoords = srcCoords,\n            saved[transformerName] = inverse\n                ? buildTransformer(destCoords, srcCoords)\n                : buildTransformer(srcCoords, destCoords));\n}\nexport function isCanvasEl(el) {\n    return el.nodeName.toUpperCase() === 'CANVAS';\n}\nvar replaceReg = /([&<>\"'])/g;\nvar replaceMap = {\n    '&': '&amp;',\n    '<': '&lt;',\n    '>': '&gt;',\n    '\"': '&quot;',\n    '\\'': '&#39;'\n};\nexport function encodeHTML(source) {\n    return source == null\n        ? ''\n        : (source + '').replace(replaceReg, function (str, c) {\n            return replaceMap[c];\n        });\n}\n","import Eventful from './Eventful.js';\nimport env from './env.js';\nimport { isCanvasEl, transformCoordWithViewport } from './dom.js';\nvar MOUSE_EVENT_REG = /^(?:mouse|pointer|contextmenu|drag|drop)|click/;\nvar _calcOut = [];\nvar firefoxNotSupportOffsetXY = env.browser.firefox\n    && +env.browser.version.split('.')[0] < 39;\nexport function clientToLocal(el, e, out, calculate) {\n    out = out || {};\n    if (calculate) {\n        calculateZrXY(el, e, out);\n    }\n    else if (firefoxNotSupportOffsetXY\n        && e.layerX != null\n        && e.layerX !== e.offsetX) {\n        out.zrX = e.layerX;\n        out.zrY = e.layerY;\n    }\n    else if (e.offsetX != null) {\n        out.zrX = e.offsetX;\n        out.zrY = e.offsetY;\n    }\n    else {\n        calculateZrXY(el, e, out);\n    }\n    return out;\n}\nfunction calculateZrXY(el, e, out) {\n    if (env.domSupported && el.getBoundingClientRect) {\n        var ex = e.clientX;\n        var ey = e.clientY;\n        if (isCanvasEl(el)) {\n            var box = el.getBoundingClientRect();\n            out.zrX = ex - box.left;\n            out.zrY = ey - box.top;\n            return;\n        }\n        else {\n            if (transformCoordWithViewport(_calcOut, el, ex, ey)) {\n                out.zrX = _calcOut[0];\n                out.zrY = _calcOut[1];\n                return;\n            }\n        }\n    }\n    out.zrX = out.zrY = 0;\n}\nexport function getNativeEvent(e) {\n    return e\n        || window.event;\n}\nexport function normalizeEvent(el, e, calculate) {\n    e = getNativeEvent(e);\n    if (e.zrX != null) {\n        return e;\n    }\n    var eventType = e.type;\n    var isTouch = eventType && eventType.indexOf('touch') >= 0;\n    if (!isTouch) {\n        clientToLocal(el, e, e, calculate);\n        var wheelDelta = getWheelDeltaMayPolyfill(e);\n        e.zrDelta = wheelDelta ? wheelDelta / 120 : -(e.detail || 0) / 3;\n    }\n    else {\n        var touch = eventType !== 'touchend'\n            ? e.targetTouches[0]\n            : e.changedTouches[0];\n        touch && clientToLocal(el, touch, e, calculate);\n    }\n    var button = e.button;\n    if (e.which == null && button !== undefined && MOUSE_EVENT_REG.test(e.type)) {\n        e.which = (button & 1 ? 1 : (button & 2 ? 3 : (button & 4 ? 2 : 0)));\n    }\n    return e;\n}\nfunction getWheelDeltaMayPolyfill(e) {\n    var rawWheelDelta = e.wheelDelta;\n    if (rawWheelDelta) {\n        return rawWheelDelta;\n    }\n    var deltaX = e.deltaX;\n    var deltaY = e.deltaY;\n    if (deltaX == null || deltaY == null) {\n        return rawWheelDelta;\n    }\n    var delta = deltaY !== 0 ? Math.abs(deltaY) : Math.abs(deltaX);\n    var sign = deltaY > 0 ? -1\n        : deltaY < 0 ? 1\n            : deltaX > 0 ? -1\n                : 1;\n    return 3 * delta * sign;\n}\nexport function addEventListener(el, name, handler, opt) {\n    el.addEventListener(name, handler, opt);\n}\nexport function removeEventListener(el, name, handler, opt) {\n    el.removeEventListener(name, handler, opt);\n}\nexport var stop = function (e) {\n    e.preventDefault();\n    e.stopPropagation();\n    e.cancelBubble = true;\n};\nexport function isMiddleOrRightButtonOnMouseUpDown(e) {\n    return e.which === 2 || e.which === 3;\n}\nexport { Eventful as Dispatcher };\n","import * as eventUtil from './event.js';\nvar GestureMgr = (function () {\n    function GestureMgr() {\n        this._track = [];\n    }\n    GestureMgr.prototype.recognize = function (event, target, root) {\n        this._doTrack(event, target, root);\n        return this._recognize(event);\n    };\n    GestureMgr.prototype.clear = function () {\n        this._track.length = 0;\n        return this;\n    };\n    GestureMgr.prototype._doTrack = function (event, target, root) {\n        var touches = event.touches;\n        if (!touches) {\n            return;\n        }\n        var trackItem = {\n            points: [],\n            touches: [],\n            target: target,\n            event: event\n        };\n        for (var i = 0, len = touches.length; i < len; i++) {\n            var touch = touches[i];\n            var pos = eventUtil.clientToLocal(root, touch, {});\n            trackItem.points.push([pos.zrX, pos.zrY]);\n            trackItem.touches.push(touch);\n        }\n        this._track.push(trackItem);\n    };\n    GestureMgr.prototype._recognize = function (event) {\n        for (var eventName in recognizers) {\n            if (recognizers.hasOwnProperty(eventName)) {\n                var gestureInfo = recognizers[eventName](this._track, event);\n                if (gestureInfo) {\n                    return gestureInfo;\n                }\n            }\n        }\n    };\n    return GestureMgr;\n}());\nexport { GestureMgr };\nfunction dist(pointPair) {\n    var dx = pointPair[1][0] - pointPair[0][0];\n    var dy = pointPair[1][1] - pointPair[0][1];\n    return Math.sqrt(dx * dx + dy * dy);\n}\nfunction center(pointPair) {\n    return [\n        (pointPair[0][0] + pointPair[1][0]) / 2,\n        (pointPair[0][1] + pointPair[1][1]) / 2\n    ];\n}\nvar recognizers = {\n    pinch: function (tracks, event) {\n        var trackLen = tracks.length;\n        if (!trackLen) {\n            return;\n        }\n        var pinchEnd = (tracks[trackLen - 1] || {}).points;\n        var pinchPre = (tracks[trackLen - 2] || {}).points || pinchEnd;\n        if (pinchPre\n            && pinchPre.length > 1\n            && pinchEnd\n            && pinchEnd.length > 1) {\n            var pinchScale = dist(pinchEnd) / dist(pinchPre);\n            !isFinite(pinchScale) && (pinchScale = 1);\n            event.pinchScale = pinchScale;\n            var pinchCenter = center(pinchEnd);\n            event.pinchX = pinchCenter[0];\n            event.pinchY = pinchCenter[1];\n            return {\n                type: 'pinch',\n                target: tracks[0].target,\n                event: event\n            };\n        }\n    }\n};\n","export function create() {\n    return [1, 0, 0, 1, 0, 0];\n}\nexport function identity(out) {\n    out[0] = 1;\n    out[1] = 0;\n    out[2] = 0;\n    out[3] = 1;\n    out[4] = 0;\n    out[5] = 0;\n    return out;\n}\nexport function copy(out, m) {\n    out[0] = m[0];\n    out[1] = m[1];\n    out[2] = m[2];\n    out[3] = m[3];\n    out[4] = m[4];\n    out[5] = m[5];\n    return out;\n}\nexport function mul(out, m1, m2) {\n    var out0 = m1[0] * m2[0] + m1[2] * m2[1];\n    var out1 = m1[1] * m2[0] + m1[3] * m2[1];\n    var out2 = m1[0] * m2[2] + m1[2] * m2[3];\n    var out3 = m1[1] * m2[2] + m1[3] * m2[3];\n    var out4 = m1[0] * m2[4] + m1[2] * m2[5] + m1[4];\n    var out5 = m1[1] * m2[4] + m1[3] * m2[5] + m1[5];\n    out[0] = out0;\n    out[1] = out1;\n    out[2] = out2;\n    out[3] = out3;\n    out[4] = out4;\n    out[5] = out5;\n    return out;\n}\nexport function translate(out, a, v) {\n    out[0] = a[0];\n    out[1] = a[1];\n    out[2] = a[2];\n    out[3] = a[3];\n    out[4] = a[4] + v[0];\n    out[5] = a[5] + v[1];\n    return out;\n}\nexport function rotate(out, a, rad) {\n    var aa = a[0];\n    var ac = a[2];\n    var atx = a[4];\n    var ab = a[1];\n    var ad = a[3];\n    var aty = a[5];\n    var st = Math.sin(rad);\n    var ct = Math.cos(rad);\n    out[0] = aa * ct + ab * st;\n    out[1] = -aa * st + ab * ct;\n    out[2] = ac * ct + ad * st;\n    out[3] = -ac * st + ct * ad;\n    out[4] = ct * atx + st * aty;\n    out[5] = ct * aty - st * atx;\n    return out;\n}\nexport function scale(out, a, v) {\n    var vx = v[0];\n    var vy = v[1];\n    out[0] = a[0] * vx;\n    out[1] = a[1] * vy;\n    out[2] = a[2] * vx;\n    out[3] = a[3] * vy;\n    out[4] = a[4] * vx;\n    out[5] = a[5] * vy;\n    return out;\n}\nexport function invert(out, a) {\n    var aa = a[0];\n    var ac = a[2];\n    var atx = a[4];\n    var ab = a[1];\n    var ad = a[3];\n    var aty = a[5];\n    var det = aa * ad - ab * ac;\n    if (!det) {\n        return null;\n    }\n    det = 1.0 / det;\n    out[0] = ad * det;\n    out[1] = -ab * det;\n    out[2] = -ac * det;\n    out[3] = aa * det;\n    out[4] = (ac * aty - ad * atx) * det;\n    out[5] = (ab * atx - aa * aty) * det;\n    return out;\n}\nexport function clone(a) {\n    var b = create();\n    copy(b, a);\n    return b;\n}\n","var Point = (function () {\n    function Point(x, y) {\n        this.x = x || 0;\n        this.y = y || 0;\n    }\n    Point.prototype.copy = function (other) {\n        this.x = other.x;\n        this.y = other.y;\n        return this;\n    };\n    Point.prototype.clone = function () {\n        return new Point(this.x, this.y);\n    };\n    Point.prototype.set = function (x, y) {\n        this.x = x;\n        this.y = y;\n        return this;\n    };\n    Point.prototype.equal = function (other) {\n        return other.x === this.x && other.y === this.y;\n    };\n    Point.prototype.add = function (other) {\n        this.x += other.x;\n        this.y += other.y;\n        return this;\n    };\n    Point.prototype.scale = function (scalar) {\n        this.x *= scalar;\n        this.y *= scalar;\n    };\n    Point.prototype.scaleAndAdd = function (other, scalar) {\n        this.x += other.x * scalar;\n        this.y += other.y * scalar;\n    };\n    Point.prototype.sub = function (other) {\n        this.x -= other.x;\n        this.y -= other.y;\n        return this;\n    };\n    Point.prototype.dot = function (other) {\n        return this.x * other.x + this.y * other.y;\n    };\n    Point.prototype.len = function () {\n        return Math.sqrt(this.x * this.x + this.y * this.y);\n    };\n    Point.prototype.lenSquare = function () {\n        return this.x * this.x + this.y * this.y;\n    };\n    Point.prototype.normalize = function () {\n        var len = this.len();\n        this.x /= len;\n        this.y /= len;\n        return this;\n    };\n    Point.prototype.distance = function (other) {\n        var dx = this.x - other.x;\n        var dy = this.y - other.y;\n        return Math.sqrt(dx * dx + dy * dy);\n    };\n    Point.prototype.distanceSquare = function (other) {\n        var dx = this.x - other.x;\n        var dy = this.y - other.y;\n        return dx * dx + dy * dy;\n    };\n    Point.prototype.negate = function () {\n        this.x = -this.x;\n        this.y = -this.y;\n        return this;\n    };\n    Point.prototype.transform = function (m) {\n        if (!m) {\n            return;\n        }\n        var x = this.x;\n        var y = this.y;\n        this.x = m[0] * x + m[2] * y + m[4];\n        this.y = m[1] * x + m[3] * y + m[5];\n        return this;\n    };\n    Point.prototype.toArray = function (out) {\n        out[0] = this.x;\n        out[1] = this.y;\n        return out;\n    };\n    Point.prototype.fromArray = function (input) {\n        this.x = input[0];\n        this.y = input[1];\n    };\n    Point.set = function (p, x, y) {\n        p.x = x;\n        p.y = y;\n    };\n    Point.copy = function (p, p2) {\n        p.x = p2.x;\n        p.y = p2.y;\n    };\n    Point.len = function (p) {\n        return Math.sqrt(p.x * p.x + p.y * p.y);\n    };\n    Point.lenSquare = function (p) {\n        return p.x * p.x + p.y * p.y;\n    };\n    Point.dot = function (p0, p1) {\n        return p0.x * p1.x + p0.y * p1.y;\n    };\n    Point.add = function (out, p0, p1) {\n        out.x = p0.x + p1.x;\n        out.y = p0.y + p1.y;\n    };\n    Point.sub = function (out, p0, p1) {\n        out.x = p0.x - p1.x;\n        out.y = p0.y - p1.y;\n    };\n    Point.scale = function (out, p0, scalar) {\n        out.x = p0.x * scalar;\n        out.y = p0.y * scalar;\n    };\n    Point.scaleAndAdd = function (out, p0, p1, scalar) {\n        out.x = p0.x + p1.x * scalar;\n        out.y = p0.y + p1.y * scalar;\n    };\n    Point.lerp = function (out, p0, p1, t) {\n        var onet = 1 - t;\n        out.x = onet * p0.x + t * p1.x;\n        out.y = onet * p0.y + t * p1.y;\n    };\n    return Point;\n}());\nexport default Point;\n","import * as matrix from './matrix.js';\nimport Point from './Point.js';\nvar mathMin = Math.min;\nvar mathMax = Math.max;\nvar lt = new Point();\nvar rb = new Point();\nvar lb = new Point();\nvar rt = new Point();\nvar minTv = new Point();\nvar maxTv = new Point();\nvar BoundingRect = (function () {\n    function BoundingRect(x, y, width, height) {\n        if (width < 0) {\n            x = x + width;\n            width = -width;\n        }\n        if (height < 0) {\n            y = y + height;\n            height = -height;\n        }\n        this.x = x;\n        this.y = y;\n        this.width = width;\n        this.height = height;\n    }\n    BoundingRect.prototype.union = function (other) {\n        var x = mathMin(other.x, this.x);\n        var y = mathMin(other.y, this.y);\n        if (isFinite(this.x) && isFinite(this.width)) {\n            this.width = mathMax(other.x + other.width, this.x + this.width) - x;\n        }\n        else {\n            this.width = other.width;\n        }\n        if (isFinite(this.y) && isFinite(this.height)) {\n            this.height = mathMax(other.y + other.height, this.y + this.height) - y;\n        }\n        else {\n            this.height = other.height;\n        }\n        this.x = x;\n        this.y = y;\n    };\n    BoundingRect.prototype.applyTransform = function (m) {\n        BoundingRect.applyTransform(this, this, m);\n    };\n    BoundingRect.prototype.calculateTransform = function (b) {\n        var a = this;\n        var sx = b.width / a.width;\n        var sy = b.height / a.height;\n        var m = matrix.create();\n        matrix.translate(m, m, [-a.x, -a.y]);\n        matrix.scale(m, m, [sx, sy]);\n        matrix.translate(m, m, [b.x, b.y]);\n        return m;\n    };\n    BoundingRect.prototype.intersect = function (b, mtv) {\n        if (!b) {\n            return false;\n        }\n        if (!(b instanceof BoundingRect)) {\n            b = BoundingRect.create(b);\n        }\n        var a = this;\n        var ax0 = a.x;\n        var ax1 = a.x + a.width;\n        var ay0 = a.y;\n        var ay1 = a.y + a.height;\n        var bx0 = b.x;\n        var bx1 = b.x + b.width;\n        var by0 = b.y;\n        var by1 = b.y + b.height;\n        var overlap = !(ax1 < bx0 || bx1 < ax0 || ay1 < by0 || by1 < ay0);\n        if (mtv) {\n            var dMin = Infinity;\n            var dMax = 0;\n            var d0 = Math.abs(ax1 - bx0);\n            var d1 = Math.abs(bx1 - ax0);\n            var d2 = Math.abs(ay1 - by0);\n            var d3 = Math.abs(by1 - ay0);\n            var dx = Math.min(d0, d1);\n            var dy = Math.min(d2, d3);\n            if (ax1 < bx0 || bx1 < ax0) {\n                if (dx > dMax) {\n                    dMax = dx;\n                    if (d0 < d1) {\n                        Point.set(maxTv, -d0, 0);\n                    }\n                    else {\n                        Point.set(maxTv, d1, 0);\n                    }\n                }\n            }\n            else {\n                if (dx < dMin) {\n                    dMin = dx;\n                    if (d0 < d1) {\n                        Point.set(minTv, d0, 0);\n                    }\n                    else {\n                        Point.set(minTv, -d1, 0);\n                    }\n                }\n            }\n            if (ay1 < by0 || by1 < ay0) {\n                if (dy > dMax) {\n                    dMax = dy;\n                    if (d2 < d3) {\n                        Point.set(maxTv, 0, -d2);\n                    }\n                    else {\n                        Point.set(maxTv, 0, d3);\n                    }\n                }\n            }\n            else {\n                if (dx < dMin) {\n                    dMin = dx;\n                    if (d2 < d3) {\n                        Point.set(minTv, 0, d2);\n                    }\n                    else {\n                        Point.set(minTv, 0, -d3);\n                    }\n                }\n            }\n        }\n        if (mtv) {\n            Point.copy(mtv, overlap ? minTv : maxTv);\n        }\n        return overlap;\n    };\n    BoundingRect.prototype.contain = function (x, y) {\n        var rect = this;\n        return x >= rect.x\n            && x <= (rect.x + rect.width)\n            && y >= rect.y\n            && y <= (rect.y + rect.height);\n    };\n    BoundingRect.prototype.clone = function () {\n        return new BoundingRect(this.x, this.y, this.width, this.height);\n    };\n    BoundingRect.prototype.copy = function (other) {\n        BoundingRect.copy(this, other);\n    };\n    BoundingRect.prototype.plain = function () {\n        return {\n            x: this.x,\n            y: this.y,\n            width: this.width,\n            height: this.height\n        };\n    };\n    BoundingRect.prototype.isFinite = function () {\n        return isFinite(this.x)\n            && isFinite(this.y)\n            && isFinite(this.width)\n            && isFinite(this.height);\n    };\n    BoundingRect.prototype.isZero = function () {\n        return this.width === 0 || this.height === 0;\n    };\n    BoundingRect.create = function (rect) {\n        return new BoundingRect(rect.x, rect.y, rect.width, rect.height);\n    };\n    BoundingRect.copy = function (target, source) {\n        target.x = source.x;\n        target.y = source.y;\n        target.width = source.width;\n        target.height = source.height;\n    };\n    BoundingRect.applyTransform = function (target, source, m) {\n        if (!m) {\n            if (target !== source) {\n                BoundingRect.copy(target, source);\n            }\n            return;\n        }\n        if (m[1] < 1e-5 && m[1] > -1e-5 && m[2] < 1e-5 && m[2] > -1e-5) {\n            var sx = m[0];\n            var sy = m[3];\n            var tx = m[4];\n            var ty = m[5];\n            target.x = source.x * sx + tx;\n            target.y = source.y * sy + ty;\n            target.width = source.width * sx;\n            target.height = source.height * sy;\n            if (target.width < 0) {\n                target.x += target.width;\n                target.width = -target.width;\n            }\n            if (target.height < 0) {\n                target.y += target.height;\n                target.height = -target.height;\n            }\n            return;\n        }\n        lt.x = lb.x = source.x;\n        lt.y = rt.y = source.y;\n        rb.x = rt.x = source.x + source.width;\n        rb.y = lb.y = source.y + source.height;\n        lt.transform(m);\n        rt.transform(m);\n        rb.transform(m);\n        lb.transform(m);\n        target.x = mathMin(lt.x, rb.x, lb.x, rt.x);\n        target.y = mathMin(lt.y, rb.y, lb.y, rt.y);\n        var maxX = mathMax(lt.x, rb.x, lb.x, rt.x);\n        var maxY = mathMax(lt.y, rb.y, lb.y, rt.y);\n        target.width = maxX - target.x;\n        target.height = maxY - target.y;\n    };\n    return BoundingRect;\n}());\nexport default BoundingRect;\n","import { __extends } from \"tslib\";\nimport * as util from './core/util.js';\nimport * as vec2 from './core/vector.js';\nimport Draggable from './mixin/Draggable.js';\nimport Eventful from './core/Eventful.js';\nimport * as eventTool from './core/event.js';\nimport { GestureMgr } from './core/GestureMgr.js';\nimport BoundingRect from './core/BoundingRect.js';\nvar SILENT = 'silent';\nfunction makeEventPacket(eveType, targetInfo, event) {\n    return {\n        type: eveType,\n        event: event,\n        target: targetInfo.target,\n        topTarget: targetInfo.topTarget,\n        cancelBubble: false,\n        offsetX: event.zrX,\n        offsetY: event.zrY,\n        gestureEvent: event.gestureEvent,\n        pinchX: event.pinchX,\n        pinchY: event.pinchY,\n        pinchScale: event.pinchScale,\n        wheelDelta: event.zrDelta,\n        zrByTouch: event.zrByTouch,\n        which: event.which,\n        stop: stopEvent\n    };\n}\nfunction stopEvent() {\n    eventTool.stop(this.event);\n}\nvar EmptyProxy = (function (_super) {\n    __extends(EmptyProxy, _super);\n    function EmptyProxy() {\n        var _this = _super !== null && _super.apply(this, arguments) || this;\n        _this.handler = null;\n        return _this;\n    }\n    EmptyProxy.prototype.dispose = function () { };\n    EmptyProxy.prototype.setCursor = function () { };\n    return EmptyProxy;\n}(Eventful));\nvar HoveredResult = (function () {\n    function HoveredResult(x, y) {\n        this.x = x;\n        this.y = y;\n    }\n    return HoveredResult;\n}());\nvar handlerNames = [\n    'click', 'dblclick', 'mousewheel', 'mouseout',\n    'mouseup', 'mousedown', 'mousemove', 'contextmenu'\n];\nvar tmpRect = new BoundingRect(0, 0, 0, 0);\nvar Handler = (function (_super) {\n    __extends(Handler, _super);\n    function Handler(storage, painter, proxy, painterRoot, pointerSize) {\n        var _this = _super.call(this) || this;\n        _this._hovered = new HoveredResult(0, 0);\n        _this.storage = storage;\n        _this.painter = painter;\n        _this.painterRoot = painterRoot;\n        _this._pointerSize = pointerSize;\n        proxy = proxy || new EmptyProxy();\n        _this.proxy = null;\n        _this.setHandlerProxy(proxy);\n        _this._draggingMgr = new Draggable(_this);\n        return _this;\n    }\n    Handler.prototype.setHandlerProxy = function (proxy) {\n        if (this.proxy) {\n            this.proxy.dispose();\n        }\n        if (proxy) {\n            util.each(handlerNames, function (name) {\n                proxy.on && proxy.on(name, this[name], this);\n            }, this);\n            proxy.handler = this;\n        }\n        this.proxy = proxy;\n    };\n    Handler.prototype.mousemove = function (event) {\n        var x = event.zrX;\n        var y = event.zrY;\n        var isOutside = isOutsideBoundary(this, x, y);\n        var lastHovered = this._hovered;\n        var lastHoveredTarget = lastHovered.target;\n        if (lastHoveredTarget && !lastHoveredTarget.__zr) {\n            lastHovered = this.findHover(lastHovered.x, lastHovered.y);\n            lastHoveredTarget = lastHovered.target;\n        }\n        var hovered = this._hovered = isOutside ? new HoveredResult(x, y) : this.findHover(x, y);\n        var hoveredTarget = hovered.target;\n        var proxy = this.proxy;\n        proxy.setCursor && proxy.setCursor(hoveredTarget ? hoveredTarget.cursor : 'default');\n        if (lastHoveredTarget && hoveredTarget !== lastHoveredTarget) {\n            this.dispatchToElement(lastHovered, 'mouseout', event);\n        }\n        this.dispatchToElement(hovered, 'mousemove', event);\n        if (hoveredTarget && hoveredTarget !== lastHoveredTarget) {\n            this.dispatchToElement(hovered, 'mouseover', event);\n        }\n    };\n    Handler.prototype.mouseout = function (event) {\n        var eventControl = event.zrEventControl;\n        if (eventControl !== 'only_globalout') {\n            this.dispatchToElement(this._hovered, 'mouseout', event);\n        }\n        if (eventControl !== 'no_globalout') {\n            this.trigger('globalout', { type: 'globalout', event: event });\n        }\n    };\n    Handler.prototype.resize = function () {\n        this._hovered = new HoveredResult(0, 0);\n    };\n    Handler.prototype.dispatch = function (eventName, eventArgs) {\n        var handler = this[eventName];\n        handler && handler.call(this, eventArgs);\n    };\n    Handler.prototype.dispose = function () {\n        this.proxy.dispose();\n        this.storage = null;\n        this.proxy = null;\n        this.painter = null;\n    };\n    Handler.prototype.setCursorStyle = function (cursorStyle) {\n        var proxy = this.proxy;\n        proxy.setCursor && proxy.setCursor(cursorStyle);\n    };\n    Handler.prototype.dispatchToElement = function (targetInfo, eventName, event) {\n        targetInfo = targetInfo || {};\n        var el = targetInfo.target;\n        if (el && el.silent) {\n            return;\n        }\n        var eventKey = ('on' + eventName);\n        var eventPacket = makeEventPacket(eventName, targetInfo, event);\n        while (el) {\n            el[eventKey]\n                && (eventPacket.cancelBubble = !!el[eventKey].call(el, eventPacket));\n            el.trigger(eventName, eventPacket);\n            el = el.__hostTarget ? el.__hostTarget : el.parent;\n            if (eventPacket.cancelBubble) {\n                break;\n            }\n        }\n        if (!eventPacket.cancelBubble) {\n            this.trigger(eventName, eventPacket);\n            if (this.painter && this.painter.eachOtherLayer) {\n                this.painter.eachOtherLayer(function (layer) {\n                    if (typeof (layer[eventKey]) === 'function') {\n                        layer[eventKey].call(layer, eventPacket);\n                    }\n                    if (layer.trigger) {\n                        layer.trigger(eventName, eventPacket);\n                    }\n                });\n            }\n        }\n    };\n    Handler.prototype.findHover = function (x, y, exclude) {\n        var list = this.storage.getDisplayList();\n        var out = new HoveredResult(x, y);\n        setHoverTarget(list, out, x, y, exclude);\n        if (this._pointerSize && !out.target) {\n            var candidates = [];\n            var pointerSize = this._pointerSize;\n            var targetSizeHalf = pointerSize / 2;\n            var pointerRect = new BoundingRect(x - targetSizeHalf, y - targetSizeHalf, pointerSize, pointerSize);\n            for (var i = list.length - 1; i >= 0; i--) {\n                var el = list[i];\n                if (el !== exclude\n                    && !el.ignore\n                    && !el.ignoreCoarsePointer\n                    && (!el.parent || !el.parent.ignoreCoarsePointer)) {\n                    tmpRect.copy(el.getBoundingRect());\n                    if (el.transform) {\n                        tmpRect.applyTransform(el.transform);\n                    }\n                    if (tmpRect.intersect(pointerRect)) {\n                        candidates.push(el);\n                    }\n                }\n            }\n            if (candidates.length) {\n                var rStep = 4;\n                var thetaStep = Math.PI / 12;\n                var PI2 = Math.PI * 2;\n                for (var r = 0; r < targetSizeHalf; r += rStep) {\n                    for (var theta = 0; theta < PI2; theta += thetaStep) {\n                        var x1 = x + r * Math.cos(theta);\n                        var y1 = y + r * Math.sin(theta);\n                        setHoverTarget(candidates, out, x1, y1, exclude);\n                        if (out.target) {\n                            return out;\n                        }\n                    }\n                }\n            }\n        }\n        return out;\n    };\n    Handler.prototype.processGesture = function (event, stage) {\n        if (!this._gestureMgr) {\n            this._gestureMgr = new GestureMgr();\n        }\n        var gestureMgr = this._gestureMgr;\n        stage === 'start' && gestureMgr.clear();\n        var gestureInfo = gestureMgr.recognize(event, this.findHover(event.zrX, event.zrY, null).target, this.proxy.dom);\n        stage === 'end' && gestureMgr.clear();\n        if (gestureInfo) {\n            var type = gestureInfo.type;\n            event.gestureEvent = type;\n            var res = new HoveredResult();\n            res.target = gestureInfo.target;\n            this.dispatchToElement(res, type, gestureInfo.event);\n        }\n    };\n    return Handler;\n}(Eventful));\nutil.each(['click', 'mousedown', 'mouseup', 'mousewheel', 'dblclick', 'contextmenu'], function (name) {\n    Handler.prototype[name] = function (event) {\n        var x = event.zrX;\n        var y = event.zrY;\n        var isOutside = isOutsideBoundary(this, x, y);\n        var hovered;\n        var hoveredTarget;\n        if (name !== 'mouseup' || !isOutside) {\n            hovered = this.findHover(x, y);\n            hoveredTarget = hovered.target;\n        }\n        if (name === 'mousedown') {\n            this._downEl = hoveredTarget;\n            this._downPoint = [event.zrX, event.zrY];\n            this._upEl = hoveredTarget;\n        }\n        else if (name === 'mouseup') {\n            this._upEl = hoveredTarget;\n        }\n        else if (name === 'click') {\n            if (this._downEl !== this._upEl\n                || !this._downPoint\n                || vec2.dist(this._downPoint, [event.zrX, event.zrY]) > 4) {\n                return;\n            }\n            this._downPoint = null;\n        }\n        this.dispatchToElement(hovered, name, event);\n    };\n});\nfunction isHover(displayable, x, y) {\n    if (displayable[displayable.rectHover ? 'rectContain' : 'contain'](x, y)) {\n        var el = displayable;\n        var isSilent = void 0;\n        var ignoreClip = false;\n        while (el) {\n            if (el.ignoreClip) {\n                ignoreClip = true;\n            }\n            if (!ignoreClip) {\n                var clipPath = el.getClipPath();\n                if (clipPath && !clipPath.contain(x, y)) {\n                    return false;\n                }\n                if (el.silent) {\n                    isSilent = true;\n                }\n            }\n            var hostEl = el.__hostTarget;\n            el = hostEl ? hostEl : el.parent;\n        }\n        return isSilent ? SILENT : true;\n    }\n    return false;\n}\nfunction setHoverTarget(list, out, x, y, exclude) {\n    for (var i = list.length - 1; i >= 0; i--) {\n        var el = list[i];\n        var hoverCheckResult = void 0;\n        if (el !== exclude\n            && !el.ignore\n            && (hoverCheckResult = isHover(el, x, y))) {\n            !out.topTarget && (out.topTarget = el);\n            if (hoverCheckResult !== SILENT) {\n                out.target = el;\n                break;\n            }\n        }\n    }\n}\nfunction isOutsideBoundary(handlerInstance, x, y) {\n    var painter = handlerInstance.painter;\n    return x < 0 || x > painter.getWidth() || y < 0 || y > painter.getHeight();\n}\nexport default Handler;\n","var DEFAULT_MIN_MERGE = 32;\nvar DEFAULT_MIN_GALLOPING = 7;\nvar DEFAULT_TMP_STORAGE_LENGTH = 256;\nfunction minRunLength(n) {\n    var r = 0;\n    while (n >= DEFAULT_MIN_MERGE) {\n        r |= n & 1;\n        n >>= 1;\n    }\n    return n + r;\n}\nfunction makeAscendingRun(array, lo, hi, compare) {\n    var runHi = lo + 1;\n    if (runHi === hi) {\n        return 1;\n    }\n    if (compare(array[runHi++], array[lo]) < 0) {\n        while (runHi < hi && compare(array[runHi], array[runHi - 1]) < 0) {\n            runHi++;\n        }\n        reverseRun(array, lo, runHi);\n    }\n    else {\n        while (runHi < hi && compare(array[runHi], array[runHi - 1]) >= 0) {\n            runHi++;\n        }\n    }\n    return runHi - lo;\n}\nfunction reverseRun(array, lo, hi) {\n    hi--;\n    while (lo < hi) {\n        var t = array[lo];\n        array[lo++] = array[hi];\n        array[hi--] = t;\n    }\n}\nfunction binaryInsertionSort(array, lo, hi, start, compare) {\n    if (start === lo) {\n        start++;\n    }\n    for (; start < hi; start++) {\n        var pivot = array[start];\n        var left = lo;\n        var right = start;\n        var mid;\n        while (left < right) {\n            mid = left + right >>> 1;\n            if (compare(pivot, array[mid]) < 0) {\n                right = mid;\n            }\n            else {\n                left = mid + 1;\n            }\n        }\n        var n = start - left;\n        switch (n) {\n            case 3:\n                array[left + 3] = array[left + 2];\n            case 2:\n                array[left + 2] = array[left + 1];\n            case 1:\n                array[left + 1] = array[left];\n                break;\n            default:\n                while (n > 0) {\n                    array[left + n] = array[left + n - 1];\n                    n--;\n                }\n        }\n        array[left] = pivot;\n    }\n}\nfunction gallopLeft(value, array, start, length, hint, compare) {\n    var lastOffset = 0;\n    var maxOffset = 0;\n    var offset = 1;\n    if (compare(value, array[start + hint]) > 0) {\n        maxOffset = length - hint;\n        while (offset < maxOffset && compare(value, array[start + hint + offset]) > 0) {\n            lastOffset = offset;\n            offset = (offset << 1) + 1;\n            if (offset <= 0) {\n                offset = maxOffset;\n            }\n        }\n        if (offset > maxOffset) {\n            offset = maxOffset;\n        }\n        lastOffset += hint;\n        offset += hint;\n    }\n    else {\n        maxOffset = hint + 1;\n        while (offset < maxOffset && compare(value, array[start + hint - offset]) <= 0) {\n            lastOffset = offset;\n            offset = (offset << 1) + 1;\n            if (offset <= 0) {\n                offset = maxOffset;\n            }\n        }\n        if (offset > maxOffset) {\n            offset = maxOffset;\n        }\n        var tmp = lastOffset;\n        lastOffset = hint - offset;\n        offset = hint - tmp;\n    }\n    lastOffset++;\n    while (lastOffset < offset) {\n        var m = lastOffset + (offset - lastOffset >>> 1);\n        if (compare(value, array[start + m]) > 0) {\n            lastOffset = m + 1;\n        }\n        else {\n            offset = m;\n        }\n    }\n    return offset;\n}\nfunction gallopRight(value, array, start, length, hint, compare) {\n    var lastOffset = 0;\n    var maxOffset = 0;\n    var offset = 1;\n    if (compare(value, array[start + hint]) < 0) {\n        maxOffset = hint + 1;\n        while (offset < maxOffset && compare(value, array[start + hint - offset]) < 0) {\n            lastOffset = offset;\n            offset = (offset << 1) + 1;\n            if (offset <= 0) {\n                offset = maxOffset;\n            }\n        }\n        if (offset > maxOffset) {\n            offset = maxOffset;\n        }\n        var tmp = lastOffset;\n        lastOffset = hint - offset;\n        offset = hint - tmp;\n    }\n    else {\n        maxOffset = length - hint;\n        while (offset < maxOffset && compare(value, array[start + hint + offset]) >= 0) {\n            lastOffset = offset;\n            offset = (offset << 1) + 1;\n            if (offset <= 0) {\n                offset = maxOffset;\n            }\n        }\n        if (offset > maxOffset) {\n            offset = maxOffset;\n        }\n        lastOffset += hint;\n        offset += hint;\n    }\n    lastOffset++;\n    while (lastOffset < offset) {\n        var m = lastOffset + (offset - lastOffset >>> 1);\n        if (compare(value, array[start + m]) < 0) {\n            offset = m;\n        }\n        else {\n            lastOffset = m + 1;\n        }\n    }\n    return offset;\n}\nfunction TimSort(array, compare) {\n    var minGallop = DEFAULT_MIN_GALLOPING;\n    var length = 0;\n    var tmpStorageLength = DEFAULT_TMP_STORAGE_LENGTH;\n    var stackLength = 0;\n    var runStart;\n    var runLength;\n    var stackSize = 0;\n    length = array.length;\n    if (length < 2 * DEFAULT_TMP_STORAGE_LENGTH) {\n        tmpStorageLength = length >>> 1;\n    }\n    var tmp = [];\n    stackLength = length < 120 ? 5 : length < 1542 ? 10 : length < 119151 ? 19 : 40;\n    runStart = [];\n    runLength = [];\n    function pushRun(_runStart, _runLength) {\n        runStart[stackSize] = _runStart;\n        runLength[stackSize] = _runLength;\n        stackSize += 1;\n    }\n    function mergeRuns() {\n        while (stackSize > 1) {\n            var n = stackSize - 2;\n            if ((n >= 1 && runLength[n - 1] <= runLength[n] + runLength[n + 1])\n                || (n >= 2 && runLength[n - 2] <= runLength[n] + runLength[n - 1])) {\n                if (runLength[n - 1] < runLength[n + 1]) {\n                    n--;\n                }\n            }\n            else if (runLength[n] > runLength[n + 1]) {\n                break;\n            }\n            mergeAt(n);\n        }\n    }\n    function forceMergeRuns() {\n        while (stackSize > 1) {\n            var n = stackSize - 2;\n            if (n > 0 && runLength[n - 1] < runLength[n + 1]) {\n                n--;\n            }\n            mergeAt(n);\n        }\n    }\n    function mergeAt(i) {\n        var start1 = runStart[i];\n        var length1 = runLength[i];\n        var start2 = runStart[i + 1];\n        var length2 = runLength[i + 1];\n        runLength[i] = length1 + length2;\n        if (i === stackSize - 3) {\n            runStart[i + 1] = runStart[i + 2];\n            runLength[i + 1] = runLength[i + 2];\n        }\n        stackSize--;\n        var k = gallopRight(array[start2], array, start1, length1, 0, compare);\n        start1 += k;\n        length1 -= k;\n        if (length1 === 0) {\n            return;\n        }\n        length2 = gallopLeft(array[start1 + length1 - 1], array, start2, length2, length2 - 1, compare);\n        if (length2 === 0) {\n            return;\n        }\n        if (length1 <= length2) {\n            mergeLow(start1, length1, start2, length2);\n        }\n        else {\n            mergeHigh(start1, length1, start2, length2);\n        }\n    }\n    function mergeLow(start1, length1, start2, length2) {\n        var i = 0;\n        for (i = 0; i < length1; i++) {\n            tmp[i] = array[start1 + i];\n        }\n        var cursor1 = 0;\n        var cursor2 = start2;\n        var dest = start1;\n        array[dest++] = array[cursor2++];\n        if (--length2 === 0) {\n            for (i = 0; i < length1; i++) {\n                array[dest + i] = tmp[cursor1 + i];\n            }\n            return;\n        }\n        if (length1 === 1) {\n            for (i = 0; i < length2; i++) {\n                array[dest + i] = array[cursor2 + i];\n            }\n            array[dest + length2] = tmp[cursor1];\n            return;\n        }\n        var _minGallop = minGallop;\n        var count1;\n        var count2;\n        var exit;\n        while (1) {\n            count1 = 0;\n            count2 = 0;\n            exit = false;\n            do {\n                if (compare(array[cursor2], tmp[cursor1]) < 0) {\n                    array[dest++] = array[cursor2++];\n                    count2++;\n                    count1 = 0;\n                    if (--length2 === 0) {\n                        exit = true;\n                        break;\n                    }\n                }\n                else {\n                    array[dest++] = tmp[cursor1++];\n                    count1++;\n                    count2 = 0;\n                    if (--length1 === 1) {\n                        exit = true;\n                        break;\n                    }\n                }\n            } while ((count1 | count2) < _minGallop);\n            if (exit) {\n                break;\n            }\n            do {\n                count1 = gallopRight(array[cursor2], tmp, cursor1, length1, 0, compare);\n                if (count1 !== 0) {\n                    for (i = 0; i < count1; i++) {\n                        array[dest + i] = tmp[cursor1 + i];\n                    }\n                    dest += count1;\n                    cursor1 += count1;\n                    length1 -= count1;\n                    if (length1 <= 1) {\n                        exit = true;\n                        break;\n                    }\n                }\n                array[dest++] = array[cursor2++];\n                if (--length2 === 0) {\n                    exit = true;\n                    break;\n                }\n                count2 = gallopLeft(tmp[cursor1], array, cursor2, length2, 0, compare);\n                if (count2 !== 0) {\n                    for (i = 0; i < count2; i++) {\n                        array[dest + i] = array[cursor2 + i];\n                    }\n                    dest += count2;\n                    cursor2 += count2;\n                    length2 -= count2;\n                    if (length2 === 0) {\n                        exit = true;\n                        break;\n                    }\n                }\n                array[dest++] = tmp[cursor1++];\n                if (--length1 === 1) {\n                    exit = true;\n                    break;\n                }\n                _minGallop--;\n            } while (count1 >= DEFAULT_MIN_GALLOPING || count2 >= DEFAULT_MIN_GALLOPING);\n            if (exit) {\n                break;\n            }\n            if (_minGallop < 0) {\n                _minGallop = 0;\n            }\n            _minGallop += 2;\n        }\n        minGallop = _minGallop;\n        minGallop < 1 && (minGallop = 1);\n        if (length1 === 1) {\n            for (i = 0; i < length2; i++) {\n                array[dest + i] = array[cursor2 + i];\n            }\n            array[dest + length2] = tmp[cursor1];\n        }\n        else if (length1 === 0) {\n            throw new Error();\n        }\n        else {\n            for (i = 0; i < length1; i++) {\n                array[dest + i] = tmp[cursor1 + i];\n            }\n        }\n    }\n    function mergeHigh(start1, length1, start2, length2) {\n        var i = 0;\n        for (i = 0; i < length2; i++) {\n            tmp[i] = array[start2 + i];\n        }\n        var cursor1 = start1 + length1 - 1;\n        var cursor2 = length2 - 1;\n        var dest = start2 + length2 - 1;\n        var customCursor = 0;\n        var customDest = 0;\n        array[dest--] = array[cursor1--];\n        if (--length1 === 0) {\n            customCursor = dest - (length2 - 1);\n            for (i = 0; i < length2; i++) {\n                array[customCursor + i] = tmp[i];\n            }\n            return;\n        }\n        if (length2 === 1) {\n            dest -= length1;\n            cursor1 -= length1;\n            customDest = dest + 1;\n            customCursor = cursor1 + 1;\n            for (i = length1 - 1; i >= 0; i--) {\n                array[customDest + i] = array[customCursor + i];\n            }\n            array[dest] = tmp[cursor2];\n            return;\n        }\n        var _minGallop = minGallop;\n        while (true) {\n            var count1 = 0;\n            var count2 = 0;\n            var exit = false;\n            do {\n                if (compare(tmp[cursor2], array[cursor1]) < 0) {\n                    array[dest--] = array[cursor1--];\n                    count1++;\n                    count2 = 0;\n                    if (--length1 === 0) {\n                        exit = true;\n                        break;\n                    }\n                }\n                else {\n                    array[dest--] = tmp[cursor2--];\n                    count2++;\n                    count1 = 0;\n                    if (--length2 === 1) {\n                        exit = true;\n                        break;\n                    }\n                }\n            } while ((count1 | count2) < _minGallop);\n            if (exit) {\n                break;\n            }\n            do {\n                count1 = length1 - gallopRight(tmp[cursor2], array, start1, length1, length1 - 1, compare);\n                if (count1 !== 0) {\n                    dest -= count1;\n                    cursor1 -= count1;\n                    length1 -= count1;\n                    customDest = dest + 1;\n                    customCursor = cursor1 + 1;\n                    for (i = count1 - 1; i >= 0; i--) {\n                        array[customDest + i] = array[customCursor + i];\n                    }\n                    if (length1 === 0) {\n                        exit = true;\n                        break;\n                    }\n                }\n                array[dest--] = tmp[cursor2--];\n                if (--length2 === 1) {\n                    exit = true;\n                    break;\n                }\n                count2 = length2 - gallopLeft(array[cursor1], tmp, 0, length2, length2 - 1, compare);\n                if (count2 !== 0) {\n                    dest -= count2;\n                    cursor2 -= count2;\n                    length2 -= count2;\n                    customDest = dest + 1;\n                    customCursor = cursor2 + 1;\n                    for (i = 0; i < count2; i++) {\n                        array[customDest + i] = tmp[customCursor + i];\n                    }\n                    if (length2 <= 1) {\n                        exit = true;\n                        break;\n                    }\n                }\n                array[dest--] = array[cursor1--];\n                if (--length1 === 0) {\n                    exit = true;\n                    break;\n                }\n                _minGallop--;\n            } while (count1 >= DEFAULT_MIN_GALLOPING || count2 >= DEFAULT_MIN_GALLOPING);\n            if (exit) {\n                break;\n            }\n            if (_minGallop < 0) {\n                _minGallop = 0;\n            }\n            _minGallop += 2;\n        }\n        minGallop = _minGallop;\n        if (minGallop < 1) {\n            minGallop = 1;\n        }\n        if (length2 === 1) {\n            dest -= length1;\n            cursor1 -= length1;\n            customDest = dest + 1;\n            customCursor = cursor1 + 1;\n            for (i = length1 - 1; i >= 0; i--) {\n                array[customDest + i] = array[customCursor + i];\n            }\n            array[dest] = tmp[cursor2];\n        }\n        else if (length2 === 0) {\n            throw new Error();\n        }\n        else {\n            customCursor = dest - (length2 - 1);\n            for (i = 0; i < length2; i++) {\n                array[customCursor + i] = tmp[i];\n            }\n        }\n    }\n    return {\n        mergeRuns: mergeRuns,\n        forceMergeRuns: forceMergeRuns,\n        pushRun: pushRun\n    };\n}\nexport default function sort(array, compare, lo, hi) {\n    if (!lo) {\n        lo = 0;\n    }\n    if (!hi) {\n        hi = array.length;\n    }\n    var remaining = hi - lo;\n    if (remaining < 2) {\n        return;\n    }\n    var runLength = 0;\n    if (remaining < DEFAULT_MIN_MERGE) {\n        runLength = makeAscendingRun(array, lo, hi, compare);\n        binaryInsertionSort(array, lo, hi, lo + runLength, compare);\n        return;\n    }\n    var ts = TimSort(array, compare);\n    var minRun = minRunLength(remaining);\n    do {\n        runLength = makeAscendingRun(array, lo, hi, compare);\n        if (runLength < minRun) {\n            var force = remaining;\n            if (force > minRun) {\n                force = minRun;\n            }\n            binaryInsertionSort(array, lo, lo + force, lo + runLength, compare);\n            runLength = force;\n        }\n        ts.pushRun(lo, runLength);\n        ts.mergeRuns();\n        remaining -= runLength;\n        lo += runLength;\n    } while (remaining !== 0);\n    ts.forceMergeRuns();\n}\n","export var REDRAW_BIT = 1;\nexport var STYLE_CHANGED_BIT = 2;\nexport var SHAPE_CHANGED_BIT = 4;\n","import * as util from './core/util.js';\nimport timsort from './core/timsort.js';\nimport { REDRAW_BIT } from './graphic/constants.js';\nvar invalidZErrorLogged = false;\nfunction logInvalidZError() {\n    if (invalidZErrorLogged) {\n        return;\n    }\n    invalidZErrorLogged = true;\n    console.warn('z / z2 / zlevel of displayable is invalid, which may cause unexpected errors');\n}\nfunction shapeCompareFunc(a, b) {\n    if (a.zlevel === b.zlevel) {\n        if (a.z === b.z) {\n            return a.z2 - b.z2;\n        }\n        return a.z - b.z;\n    }\n    return a.zlevel - b.zlevel;\n}\nvar Storage = (function () {\n    function Storage() {\n        this._roots = [];\n        this._displayList = [];\n        this._displayListLen = 0;\n        this.displayableSortFunc = shapeCompareFunc;\n    }\n    Storage.prototype.traverse = function (cb, context) {\n        for (var i = 0; i < this._roots.length; i++) {\n            this._roots[i].traverse(cb, context);\n        }\n    };\n    Storage.prototype.getDisplayList = function (update, includeIgnore) {\n        includeIgnore = includeIgnore || false;\n        var displayList = this._displayList;\n        if (update || !displayList.length) {\n            this.updateDisplayList(includeIgnore);\n        }\n        return displayList;\n    };\n    Storage.prototype.updateDisplayList = function (includeIgnore) {\n        this._displayListLen = 0;\n        var roots = this._roots;\n        var displayList = this._displayList;\n        for (var i = 0, len = roots.length; i < len; i++) {\n            this._updateAndAddDisplayable(roots[i], null, includeIgnore);\n        }\n        displayList.length = this._displayListLen;\n        timsort(displayList, shapeCompareFunc);\n    };\n    Storage.prototype._updateAndAddDisplayable = function (el, clipPaths, includeIgnore) {\n        if (el.ignore && !includeIgnore) {\n            return;\n        }\n        el.beforeUpdate();\n        el.update();\n        el.afterUpdate();\n        var userSetClipPath = el.getClipPath();\n        if (el.ignoreClip) {\n            clipPaths = null;\n        }\n        else if (userSetClipPath) {\n            if (clipPaths) {\n                clipPaths = clipPaths.slice();\n            }\n            else {\n                clipPaths = [];\n            }\n            var currentClipPath = userSetClipPath;\n            var parentClipPath = el;\n            while (currentClipPath) {\n                currentClipPath.parent = parentClipPath;\n                currentClipPath.updateTransform();\n                clipPaths.push(currentClipPath);\n                parentClipPath = currentClipPath;\n                currentClipPath = currentClipPath.getClipPath();\n            }\n        }\n        if (el.childrenRef) {\n            var children = el.childrenRef();\n            for (var i = 0; i < children.length; i++) {\n                var child = children[i];\n                if (el.__dirty) {\n                    child.__dirty |= REDRAW_BIT;\n                }\n                this._updateAndAddDisplayable(child, clipPaths, includeIgnore);\n            }\n            el.__dirty = 0;\n        }\n        else {\n            var disp = el;\n            if (clipPaths && clipPaths.length) {\n                disp.__clipPaths = clipPaths;\n            }\n            else if (disp.__clipPaths && disp.__clipPaths.length > 0) {\n                disp.__clipPaths = [];\n            }\n            if (isNaN(disp.z)) {\n                logInvalidZError();\n                disp.z = 0;\n            }\n            if (isNaN(disp.z2)) {\n                logInvalidZError();\n                disp.z2 = 0;\n            }\n            if (isNaN(disp.zlevel)) {\n                logInvalidZError();\n                disp.zlevel = 0;\n            }\n            this._displayList[this._displayListLen++] = disp;\n        }\n        var decalEl = el.getDecalElement && el.getDecalElement();\n        if (decalEl) {\n            this._updateAndAddDisplayable(decalEl, clipPaths, includeIgnore);\n        }\n        var textGuide = el.getTextGuideLine();\n        if (textGuide) {\n            this._updateAndAddDisplayable(textGuide, clipPaths, includeIgnore);\n        }\n        var textEl = el.getTextContent();\n        if (textEl) {\n            this._updateAndAddDisplayable(textEl, clipPaths, includeIgnore);\n        }\n    };\n    Storage.prototype.addRoot = function (el) {\n        if (el.__zr && el.__zr.storage === this) {\n            return;\n        }\n        this._roots.push(el);\n    };\n    Storage.prototype.delRoot = function (el) {\n        if (el instanceof Array) {\n            for (var i = 0, l = el.length; i < l; i++) {\n                this.delRoot(el[i]);\n            }\n            return;\n        }\n        var idx = util.indexOf(this._roots, el);\n        if (idx >= 0) {\n            this._roots.splice(idx, 1);\n        }\n    };\n    Storage.prototype.delAllRoots = function () {\n        this._roots = [];\n        this._displayList = [];\n        this._displayListLen = 0;\n        return;\n    };\n    Storage.prototype.getRoots = function () {\n        return this._roots;\n    };\n    Storage.prototype.dispose = function () {\n        this._displayList = null;\n        this._roots = null;\n    };\n    return Storage;\n}());\nexport default Storage;\n","import env from '../core/env.js';\nvar requestAnimationFrame;\nrequestAnimationFrame = (env.hasGlobalWindow\n    && ((window.requestAnimationFrame && window.requestAnimationFrame.bind(window))\n        || (window.msRequestAnimationFrame && window.msRequestAnimationFrame.bind(window))\n        || window.mozRequestAnimationFrame\n        || window.webkitRequestAnimationFrame)) || function (func) {\n    return setTimeout(func, 16);\n};\nexport default requestAnimationFrame;\n","var easingFuncs = {\n    linear: function (k) {\n        return k;\n    },\n    quadraticIn: function (k) {\n        return k * k;\n    },\n    quadraticOut: function (k) {\n        return k * (2 - k);\n    },\n    quadraticInOut: function (k) {\n        if ((k *= 2) < 1) {\n            return 0.5 * k * k;\n        }\n        return -0.5 * (--k * (k - 2) - 1);\n    },\n    cubicIn: function (k) {\n        return k * k * k;\n    },\n    cubicOut: function (k) {\n        return --k * k * k + 1;\n    },\n    cubicInOut: function (k) {\n        if ((k *= 2) < 1) {\n            return 0.5 * k * k * k;\n        }\n        return 0.5 * ((k -= 2) * k * k + 2);\n    },\n    quarticIn: function (k) {\n        return k * k * k * k;\n    },\n    quarticOut: function (k) {\n        return 1 - (--k * k * k * k);\n    },\n    quarticInOut: function (k) {\n        if ((k *= 2) < 1) {\n            return 0.5 * k * k * k * k;\n        }\n        return -0.5 * ((k -= 2) * k * k * k - 2);\n    },\n    quinticIn: function (k) {\n        return k * k * k * k * k;\n    },\n    quinticOut: function (k) {\n        return --k * k * k * k * k + 1;\n    },\n    quinticInOut: function (k) {\n        if ((k *= 2) < 1) {\n            return 0.5 * k * k * k * k * k;\n        }\n        return 0.5 * ((k -= 2) * k * k * k * k + 2);\n    },\n    sinusoidalIn: function (k) {\n        return 1 - Math.cos(k * Math.PI / 2);\n    },\n    sinusoidalOut: function (k) {\n        return Math.sin(k * Math.PI / 2);\n    },\n    sinusoidalInOut: function (k) {\n        return 0.5 * (1 - Math.cos(Math.PI * k));\n    },\n    exponentialIn: function (k) {\n        return k === 0 ? 0 : Math.pow(1024, k - 1);\n    },\n    exponentialOut: function (k) {\n        return k === 1 ? 1 : 1 - Math.pow(2, -10 * k);\n    },\n    exponentialInOut: function (k) {\n        if (k === 0) {\n            return 0;\n        }\n        if (k === 1) {\n            return 1;\n        }\n        if ((k *= 2) < 1) {\n            return 0.5 * Math.pow(1024, k - 1);\n        }\n        return 0.5 * (-Math.pow(2, -10 * (k - 1)) + 2);\n    },\n    circularIn: function (k) {\n        return 1 - Math.sqrt(1 - k * k);\n    },\n    circularOut: function (k) {\n        return Math.sqrt(1 - (--k * k));\n    },\n    circularInOut: function (k) {\n        if ((k *= 2) < 1) {\n            return -0.5 * (Math.sqrt(1 - k * k) - 1);\n        }\n        return 0.5 * (Math.sqrt(1 - (k -= 2) * k) + 1);\n    },\n    elasticIn: function (k) {\n        var s;\n        var a = 0.1;\n        var p = 0.4;\n        if (k === 0) {\n            return 0;\n        }\n        if (k === 1) {\n            return 1;\n        }\n        if (!a || a < 1) {\n            a = 1;\n            s = p / 4;\n        }\n        else {\n            s = p * Math.asin(1 / a) / (2 * Math.PI);\n        }\n        return -(a * Math.pow(2, 10 * (k -= 1))\n            * Math.sin((k - s) * (2 * Math.PI) / p));\n    },\n    elasticOut: function (k) {\n        var s;\n        var a = 0.1;\n        var p = 0.4;\n        if (k === 0) {\n            return 0;\n        }\n        if (k === 1) {\n            return 1;\n        }\n        if (!a || a < 1) {\n            a = 1;\n            s = p / 4;\n        }\n        else {\n            s = p * Math.asin(1 / a) / (2 * Math.PI);\n        }\n        return (a * Math.pow(2, -10 * k)\n            * Math.sin((k - s) * (2 * Math.PI) / p) + 1);\n    },\n    elasticInOut: function (k) {\n        var s;\n        var a = 0.1;\n        var p = 0.4;\n        if (k === 0) {\n            return 0;\n        }\n        if (k === 1) {\n            return 1;\n        }\n        if (!a || a < 1) {\n            a = 1;\n            s = p / 4;\n        }\n        else {\n            s = p * Math.asin(1 / a) / (2 * Math.PI);\n        }\n        if ((k *= 2) < 1) {\n            return -0.5 * (a * Math.pow(2, 10 * (k -= 1))\n                * Math.sin((k - s) * (2 * Math.PI) / p));\n        }\n        return a * Math.pow(2, -10 * (k -= 1))\n            * Math.sin((k - s) * (2 * Math.PI) / p) * 0.5 + 1;\n    },\n    backIn: function (k) {\n        var s = 1.70158;\n        return k * k * ((s + 1) * k - s);\n    },\n    backOut: function (k) {\n        var s = 1.70158;\n        return --k * k * ((s + 1) * k + s) + 1;\n    },\n    backInOut: function (k) {\n        var s = 1.70158 * 1.525;\n        if ((k *= 2) < 1) {\n            return 0.5 * (k * k * ((s + 1) * k - s));\n        }\n        return 0.5 * ((k -= 2) * k * ((s + 1) * k + s) + 2);\n    },\n    bounceIn: function (k) {\n        return 1 - easingFuncs.bounceOut(1 - k);\n    },\n    bounceOut: function (k) {\n        if (k < (1 / 2.75)) {\n            return 7.5625 * k * k;\n        }\n        else if (k < (2 / 2.75)) {\n            return 7.5625 * (k -= (1.5 / 2.75)) * k + 0.75;\n        }\n        else if (k < (2.5 / 2.75)) {\n            return 7.5625 * (k -= (2.25 / 2.75)) * k + 0.9375;\n        }\n        else {\n            return 7.5625 * (k -= (2.625 / 2.75)) * k + 0.984375;\n        }\n    },\n    bounceInOut: function (k) {\n        if (k < 0.5) {\n            return easingFuncs.bounceIn(k * 2) * 0.5;\n        }\n        return easingFuncs.bounceOut(k * 2 - 1) * 0.5 + 0.5;\n    }\n};\nexport default easingFuncs;\n","import { create as v2Create, distSquare as v2DistSquare } from './vector.js';\nvar mathPow = Math.pow;\nvar mathSqrt = Math.sqrt;\nvar EPSILON = 1e-8;\nvar EPSILON_NUMERIC = 1e-4;\nvar THREE_SQRT = mathSqrt(3);\nvar ONE_THIRD = 1 / 3;\nvar _v0 = v2Create();\nvar _v1 = v2Create();\nvar _v2 = v2Create();\nfunction isAroundZero(val) {\n    return val > -EPSILON && val < EPSILON;\n}\nfunction isNotAroundZero(val) {\n    return val > EPSILON || val < -EPSILON;\n}\nexport function cubicAt(p0, p1, p2, p3, t) {\n    var onet = 1 - t;\n    return onet * onet * (onet * p0 + 3 * t * p1)\n        + t * t * (t * p3 + 3 * onet * p2);\n}\nexport function cubicDerivativeAt(p0, p1, p2, p3, t) {\n    var onet = 1 - t;\n    return 3 * (((p1 - p0) * onet + 2 * (p2 - p1) * t) * onet\n        + (p3 - p2) * t * t);\n}\nexport function cubicRootAt(p0, p1, p2, p3, val, roots) {\n    var a = p3 + 3 * (p1 - p2) - p0;\n    var b = 3 * (p2 - p1 * 2 + p0);\n    var c = 3 * (p1 - p0);\n    var d = p0 - val;\n    var A = b * b - 3 * a * c;\n    var B = b * c - 9 * a * d;\n    var C = c * c - 3 * b * d;\n    var n = 0;\n    if (isAroundZero(A) && isAroundZero(B)) {\n        if (isAroundZero(b)) {\n            roots[0] = 0;\n        }\n        else {\n            var t1 = -c / b;\n            if (t1 >= 0 && t1 <= 1) {\n                roots[n++] = t1;\n            }\n        }\n    }\n    else {\n        var disc = B * B - 4 * A * C;\n        if (isAroundZero(disc)) {\n            var K = B / A;\n            var t1 = -b / a + K;\n            var t2 = -K / 2;\n            if (t1 >= 0 && t1 <= 1) {\n                roots[n++] = t1;\n            }\n            if (t2 >= 0 && t2 <= 1) {\n                roots[n++] = t2;\n            }\n        }\n        else if (disc > 0) {\n            var discSqrt = mathSqrt(disc);\n            var Y1 = A * b + 1.5 * a * (-B + discSqrt);\n            var Y2 = A * b + 1.5 * a * (-B - discSqrt);\n            if (Y1 < 0) {\n                Y1 = -mathPow(-Y1, ONE_THIRD);\n            }\n            else {\n                Y1 = mathPow(Y1, ONE_THIRD);\n            }\n            if (Y2 < 0) {\n                Y2 = -mathPow(-Y2, ONE_THIRD);\n            }\n            else {\n                Y2 = mathPow(Y2, ONE_THIRD);\n            }\n            var t1 = (-b - (Y1 + Y2)) / (3 * a);\n            if (t1 >= 0 && t1 <= 1) {\n                roots[n++] = t1;\n            }\n        }\n        else {\n            var T = (2 * A * b - 3 * a * B) / (2 * mathSqrt(A * A * A));\n            var theta = Math.acos(T) / 3;\n            var ASqrt = mathSqrt(A);\n            var tmp = Math.cos(theta);\n            var t1 = (-b - 2 * ASqrt * tmp) / (3 * a);\n            var t2 = (-b + ASqrt * (tmp + THREE_SQRT * Math.sin(theta))) / (3 * a);\n            var t3 = (-b + ASqrt * (tmp - THREE_SQRT * Math.sin(theta))) / (3 * a);\n            if (t1 >= 0 && t1 <= 1) {\n                roots[n++] = t1;\n            }\n            if (t2 >= 0 && t2 <= 1) {\n                roots[n++] = t2;\n            }\n            if (t3 >= 0 && t3 <= 1) {\n                roots[n++] = t3;\n            }\n        }\n    }\n    return n;\n}\nexport function cubicExtrema(p0, p1, p2, p3, extrema) {\n    var b = 6 * p2 - 12 * p1 + 6 * p0;\n    var a = 9 * p1 + 3 * p3 - 3 * p0 - 9 * p2;\n    var c = 3 * p1 - 3 * p0;\n    var n = 0;\n    if (isAroundZero(a)) {\n        if (isNotAroundZero(b)) {\n            var t1 = -c / b;\n            if (t1 >= 0 && t1 <= 1) {\n                extrema[n++] = t1;\n            }\n        }\n    }\n    else {\n        var disc = b * b - 4 * a * c;\n        if (isAroundZero(disc)) {\n            extrema[0] = -b / (2 * a);\n        }\n        else if (disc > 0) {\n            var discSqrt = mathSqrt(disc);\n            var t1 = (-b + discSqrt) / (2 * a);\n            var t2 = (-b - discSqrt) / (2 * a);\n            if (t1 >= 0 && t1 <= 1) {\n                extrema[n++] = t1;\n            }\n            if (t2 >= 0 && t2 <= 1) {\n                extrema[n++] = t2;\n            }\n        }\n    }\n    return n;\n}\nexport function cubicSubdivide(p0, p1, p2, p3, t, out) {\n    var p01 = (p1 - p0) * t + p0;\n    var p12 = (p2 - p1) * t + p1;\n    var p23 = (p3 - p2) * t + p2;\n    var p012 = (p12 - p01) * t + p01;\n    var p123 = (p23 - p12) * t + p12;\n    var p0123 = (p123 - p012) * t + p012;\n    out[0] = p0;\n    out[1] = p01;\n    out[2] = p012;\n    out[3] = p0123;\n    out[4] = p0123;\n    out[5] = p123;\n    out[6] = p23;\n    out[7] = p3;\n}\nexport function cubicProjectPoint(x0, y0, x1, y1, x2, y2, x3, y3, x, y, out) {\n    var t;\n    var interval = 0.005;\n    var d = Infinity;\n    var prev;\n    var next;\n    var d1;\n    var d2;\n    _v0[0] = x;\n    _v0[1] = y;\n    for (var _t = 0; _t < 1; _t += 0.05) {\n        _v1[0] = cubicAt(x0, x1, x2, x3, _t);\n        _v1[1] = cubicAt(y0, y1, y2, y3, _t);\n        d1 = v2DistSquare(_v0, _v1);\n        if (d1 < d) {\n            t = _t;\n            d = d1;\n        }\n    }\n    d = Infinity;\n    for (var i = 0; i < 32; i++) {\n        if (interval < EPSILON_NUMERIC) {\n            break;\n        }\n        prev = t - interval;\n        next = t + interval;\n        _v1[0] = cubicAt(x0, x1, x2, x3, prev);\n        _v1[1] = cubicAt(y0, y1, y2, y3, prev);\n        d1 = v2DistSquare(_v1, _v0);\n        if (prev >= 0 && d1 < d) {\n            t = prev;\n            d = d1;\n        }\n        else {\n            _v2[0] = cubicAt(x0, x1, x2, x3, next);\n            _v2[1] = cubicAt(y0, y1, y2, y3, next);\n            d2 = v2DistSquare(_v2, _v0);\n            if (next <= 1 && d2 < d) {\n                t = next;\n                d = d2;\n            }\n            else {\n                interval *= 0.5;\n            }\n        }\n    }\n    if (out) {\n        out[0] = cubicAt(x0, x1, x2, x3, t);\n        out[1] = cubicAt(y0, y1, y2, y3, t);\n    }\n    return mathSqrt(d);\n}\nexport function cubicLength(x0, y0, x1, y1, x2, y2, x3, y3, iteration) {\n    var px = x0;\n    var py = y0;\n    var d = 0;\n    var step = 1 / iteration;\n    for (var i = 1; i <= iteration; i++) {\n        var t = i * step;\n        var x = cubicAt(x0, x1, x2, x3, t);\n        var y = cubicAt(y0, y1, y2, y3, t);\n        var dx = x - px;\n        var dy = y - py;\n        d += Math.sqrt(dx * dx + dy * dy);\n        px = x;\n        py = y;\n    }\n    return d;\n}\nexport function quadraticAt(p0, p1, p2, t) {\n    var onet = 1 - t;\n    return onet * (onet * p0 + 2 * t * p1) + t * t * p2;\n}\nexport function quadraticDerivativeAt(p0, p1, p2, t) {\n    return 2 * ((1 - t) * (p1 - p0) + t * (p2 - p1));\n}\nexport function quadraticRootAt(p0, p1, p2, val, roots) {\n    var a = p0 - 2 * p1 + p2;\n    var b = 2 * (p1 - p0);\n    var c = p0 - val;\n    var n = 0;\n    if (isAroundZero(a)) {\n        if (isNotAroundZero(b)) {\n            var t1 = -c / b;\n            if (t1 >= 0 && t1 <= 1) {\n                roots[n++] = t1;\n            }\n        }\n    }\n    else {\n        var disc = b * b - 4 * a * c;\n        if (isAroundZero(disc)) {\n            var t1 = -b / (2 * a);\n            if (t1 >= 0 && t1 <= 1) {\n                roots[n++] = t1;\n            }\n        }\n        else if (disc > 0) {\n            var discSqrt = mathSqrt(disc);\n            var t1 = (-b + discSqrt) / (2 * a);\n            var t2 = (-b - discSqrt) / (2 * a);\n            if (t1 >= 0 && t1 <= 1) {\n                roots[n++] = t1;\n            }\n            if (t2 >= 0 && t2 <= 1) {\n                roots[n++] = t2;\n            }\n        }\n    }\n    return n;\n}\nexport function quadraticExtremum(p0, p1, p2) {\n    var divider = p0 + p2 - 2 * p1;\n    if (divider === 0) {\n        return 0.5;\n    }\n    else {\n        return (p0 - p1) / divider;\n    }\n}\nexport function quadraticSubdivide(p0, p1, p2, t, out) {\n    var p01 = (p1 - p0) * t + p0;\n    var p12 = (p2 - p1) * t + p1;\n    var p012 = (p12 - p01) * t + p01;\n    out[0] = p0;\n    out[1] = p01;\n    out[2] = p012;\n    out[3] = p012;\n    out[4] = p12;\n    out[5] = p2;\n}\nexport function quadraticProjectPoint(x0, y0, x1, y1, x2, y2, x, y, out) {\n    var t;\n    var interval = 0.005;\n    var d = Infinity;\n    _v0[0] = x;\n    _v0[1] = y;\n    for (var _t = 0; _t < 1; _t += 0.05) {\n        _v1[0] = quadraticAt(x0, x1, x2, _t);\n        _v1[1] = quadraticAt(y0, y1, y2, _t);\n        var d1 = v2DistSquare(_v0, _v1);\n        if (d1 < d) {\n            t = _t;\n            d = d1;\n        }\n    }\n    d = Infinity;\n    for (var i = 0; i < 32; i++) {\n        if (interval < EPSILON_NUMERIC) {\n            break;\n        }\n        var prev = t - interval;\n        var next = t + interval;\n        _v1[0] = quadraticAt(x0, x1, x2, prev);\n        _v1[1] = quadraticAt(y0, y1, y2, prev);\n        var d1 = v2DistSquare(_v1, _v0);\n        if (prev >= 0 && d1 < d) {\n            t = prev;\n            d = d1;\n        }\n        else {\n            _v2[0] = quadraticAt(x0, x1, x2, next);\n            _v2[1] = quadraticAt(y0, y1, y2, next);\n            var d2 = v2DistSquare(_v2, _v0);\n            if (next <= 1 && d2 < d) {\n                t = next;\n                d = d2;\n            }\n            else {\n                interval *= 0.5;\n            }\n        }\n    }\n    if (out) {\n        out[0] = quadraticAt(x0, x1, x2, t);\n        out[1] = quadraticAt(y0, y1, y2, t);\n    }\n    return mathSqrt(d);\n}\nexport function quadraticLength(x0, y0, x1, y1, x2, y2, iteration) {\n    var px = x0;\n    var py = y0;\n    var d = 0;\n    var step = 1 / iteration;\n    for (var i = 1; i <= iteration; i++) {\n        var t = i * step;\n        var x = quadraticAt(x0, x1, x2, t);\n        var y = quadraticAt(y0, y1, y2, t);\n        var dx = x - px;\n        var dy = y - py;\n        d += Math.sqrt(dx * dx + dy * dy);\n        px = x;\n        py = y;\n    }\n    return d;\n}\n","import { cubicAt, cubicRootAt } from '../core/curve.js';\nimport { trim } from '../core/util.js';\nvar regexp = /cubic-bezier\\(([0-9,\\.e ]+)\\)/;\nexport function createCubicEasingFunc(cubicEasingStr) {\n    var cubic = cubicEasingStr && regexp.exec(cubicEasingStr);\n    if (cubic) {\n        var points = cubic[1].split(',');\n        var a_1 = +trim(points[0]);\n        var b_1 = +trim(points[1]);\n        var c_1 = +trim(points[2]);\n        var d_1 = +trim(points[3]);\n        if (isNaN(a_1 + b_1 + c_1 + d_1)) {\n            return;\n        }\n        var roots_1 = [];\n        return function (p) {\n            return p <= 0\n                ? 0 : p >= 1\n                ? 1\n                : cubicRootAt(0, a_1, c_1, 1, p, roots_1) && cubicAt(0, b_1, d_1, 1, roots_1[0]);\n        };\n    }\n}\n","import easingFuncs from './easing.js';\nimport { isFunction, noop } from '../core/util.js';\nimport { createCubicEasingFunc } from './cubicEasing.js';\nvar Clip = (function () {\n    function Clip(opts) {\n        this._inited = false;\n        this._startTime = 0;\n        this._pausedTime = 0;\n        this._paused = false;\n        this._life = opts.life || 1000;\n        this._delay = opts.delay || 0;\n        this.loop = opts.loop || false;\n        this.onframe = opts.onframe || noop;\n        this.ondestroy = opts.ondestroy || noop;\n        this.onrestart = opts.onrestart || noop;\n        opts.easing && this.setEasing(opts.easing);\n    }\n    Clip.prototype.step = function (globalTime, deltaTime) {\n        if (!this._inited) {\n            this._startTime = globalTime + this._delay;\n            this._inited = true;\n        }\n        if (this._paused) {\n            this._pausedTime += deltaTime;\n            return;\n        }\n        var life = this._life;\n        var elapsedTime = globalTime - this._startTime - this._pausedTime;\n        var percent = elapsedTime / life;\n        if (percent < 0) {\n            percent = 0;\n        }\n        percent = Math.min(percent, 1);\n        var easingFunc = this.easingFunc;\n        var schedule = easingFunc ? easingFunc(percent) : percent;\n        this.onframe(schedule);\n        if (percent === 1) {\n            if (this.loop) {\n                var remainder = elapsedTime % life;\n                this._startTime = globalTime - remainder;\n                this._pausedTime = 0;\n                this.onrestart();\n            }\n            else {\n                return true;\n            }\n        }\n        return false;\n    };\n    Clip.prototype.pause = function () {\n        this._paused = true;\n    };\n    Clip.prototype.resume = function () {\n        this._paused = false;\n    };\n    Clip.prototype.setEasing = function (easing) {\n        this.easing = easing;\n        this.easingFunc = isFunction(easing)\n            ? easing\n            : easingFuncs[easing] || createCubicEasingFunc(easing);\n    };\n    return Clip;\n}());\nexport default Clip;\n","var Entry = (function () {\n    function Entry(val) {\n        this.value = val;\n    }\n    return Entry;\n}());\nexport { Entry };\nvar LinkedList = (function () {\n    function LinkedList() {\n        this._len = 0;\n    }\n    LinkedList.prototype.insert = function (val) {\n        var entry = new Entry(val);\n        this.insertEntry(entry);\n        return entry;\n    };\n    LinkedList.prototype.insertEntry = function (entry) {\n        if (!this.head) {\n            this.head = this.tail = entry;\n        }\n        else {\n            this.tail.next = entry;\n            entry.prev = this.tail;\n            entry.next = null;\n            this.tail = entry;\n        }\n        this._len++;\n    };\n    LinkedList.prototype.remove = function (entry) {\n        var prev = entry.prev;\n        var next = entry.next;\n        if (prev) {\n            prev.next = next;\n        }\n        else {\n            this.head = next;\n        }\n        if (next) {\n            next.prev = prev;\n        }\n        else {\n            this.tail = prev;\n        }\n        entry.next = entry.prev = null;\n        this._len--;\n    };\n    LinkedList.prototype.len = function () {\n        return this._len;\n    };\n    LinkedList.prototype.clear = function () {\n        this.head = this.tail = null;\n        this._len = 0;\n    };\n    return LinkedList;\n}());\nexport { LinkedList };\nvar LRU = (function () {\n    function LRU(maxSize) {\n        this._list = new LinkedList();\n        this._maxSize = 10;\n        this._map = {};\n        this._maxSize = maxSize;\n    }\n    LRU.prototype.put = function (key, value) {\n        var list = this._list;\n        var map = this._map;\n        var removed = null;\n        if (map[key] == null) {\n            var len = list.len();\n            var entry = this._lastRemovedEntry;\n            if (len >= this._maxSize && len > 0) {\n                var leastUsedEntry = list.head;\n                list.remove(leastUsedEntry);\n                delete map[leastUsedEntry.key];\n                removed = leastUsedEntry.value;\n                this._lastRemovedEntry = leastUsedEntry;\n            }\n            if (entry) {\n                entry.value = value;\n            }\n            else {\n                entry = new Entry(value);\n            }\n            entry.key = key;\n            list.insertEntry(entry);\n            map[key] = entry;\n        }\n        return removed;\n    };\n    LRU.prototype.get = function (key) {\n        var entry = this._map[key];\n        var list = this._list;\n        if (entry != null) {\n            if (entry !== list.tail) {\n                list.remove(entry);\n                list.insertEntry(entry);\n            }\n            return entry.value;\n        }\n    };\n    LRU.prototype.clear = function () {\n        this._list.clear();\n        this._map = {};\n    };\n    LRU.prototype.len = function () {\n        return this._list.len();\n    };\n    return LRU;\n}());\nexport default LRU;\n","import LRU from '../core/LRU.js';\nvar kCSSColorTable = {\n    'transparent': [0, 0, 0, 0], 'aliceblue': [240, 248, 255, 1],\n    'antiquewhite': [250, 235, 215, 1], 'aqua': [0, 255, 255, 1],\n    'aquamarine': [127, 255, 212, 1], 'azure': [240, 255, 255, 1],\n    'beige': [245, 245, 220, 1], 'bisque': [255, 228, 196, 1],\n    'black': [0, 0, 0, 1], 'blanchedalmond': [255, 235, 205, 1],\n    'blue': [0, 0, 255, 1], 'blueviolet': [138, 43, 226, 1],\n    'brown': [165, 42, 42, 1], 'burlywood': [222, 184, 135, 1],\n    'cadetblue': [95, 158, 160, 1], 'chartreuse': [127, 255, 0, 1],\n    'chocolate': [210, 105, 30, 1], 'coral': [255, 127, 80, 1],\n    'cornflowerblue': [100, 149, 237, 1], 'cornsilk': [255, 248, 220, 1],\n    'crimson': [220, 20, 60, 1], 'cyan': [0, 255, 255, 1],\n    'darkblue': [0, 0, 139, 1], 'darkcyan': [0, 139, 139, 1],\n    'darkgoldenrod': [184, 134, 11, 1], 'darkgray': [169, 169, 169, 1],\n    'darkgreen': [0, 100, 0, 1], 'darkgrey': [169, 169, 169, 1],\n    'darkkhaki': [189, 183, 107, 1], 'darkmagenta': [139, 0, 139, 1],\n    'darkolivegreen': [85, 107, 47, 1], 'darkorange': [255, 140, 0, 1],\n    'darkorchid': [153, 50, 204, 1], 'darkred': [139, 0, 0, 1],\n    'darksalmon': [233, 150, 122, 1], 'darkseagreen': [143, 188, 143, 1],\n    'darkslateblue': [72, 61, 139, 1], 'darkslategray': [47, 79, 79, 1],\n    'darkslategrey': [47, 79, 79, 1], 'darkturquoise': [0, 206, 209, 1],\n    'darkviolet': [148, 0, 211, 1], 'deeppink': [255, 20, 147, 1],\n    'deepskyblue': [0, 191, 255, 1], 'dimgray': [105, 105, 105, 1],\n    'dimgrey': [105, 105, 105, 1], 'dodgerblue': [30, 144, 255, 1],\n    'firebrick': [178, 34, 34, 1], 'floralwhite': [255, 250, 240, 1],\n    'forestgreen': [34, 139, 34, 1], 'fuchsia': [255, 0, 255, 1],\n    'gainsboro': [220, 220, 220, 1], 'ghostwhite': [248, 248, 255, 1],\n    'gold': [255, 215, 0, 1], 'goldenrod': [218, 165, 32, 1],\n    'gray': [128, 128, 128, 1], 'green': [0, 128, 0, 1],\n    'greenyellow': [173, 255, 47, 1], 'grey': [128, 128, 128, 1],\n    'honeydew': [240, 255, 240, 1], 'hotpink': [255, 105, 180, 1],\n    'indianred': [205, 92, 92, 1], 'indigo': [75, 0, 130, 1],\n    'ivory': [255, 255, 240, 1], 'khaki': [240, 230, 140, 1],\n    'lavender': [230, 230, 250, 1], 'lavenderblush': [255, 240, 245, 1],\n    'lawngreen': [124, 252, 0, 1], 'lemonchiffon': [255, 250, 205, 1],\n    'lightblue': [173, 216, 230, 1], 'lightcoral': [240, 128, 128, 1],\n    'lightcyan': [224, 255, 255, 1], 'lightgoldenrodyellow': [250, 250, 210, 1],\n    'lightgray': [211, 211, 211, 1], 'lightgreen': [144, 238, 144, 1],\n    'lightgrey': [211, 211, 211, 1], 'lightpink': [255, 182, 193, 1],\n    'lightsalmon': [255, 160, 122, 1], 'lightseagreen': [32, 178, 170, 1],\n    'lightskyblue': [135, 206, 250, 1], 'lightslategray': [119, 136, 153, 1],\n    'lightslategrey': [119, 136, 153, 1], 'lightsteelblue': [176, 196, 222, 1],\n    'lightyellow': [255, 255, 224, 1], 'lime': [0, 255, 0, 1],\n    'limegreen': [50, 205, 50, 1], 'linen': [250, 240, 230, 1],\n    'magenta': [255, 0, 255, 1], 'maroon': [128, 0, 0, 1],\n    'mediumaquamarine': [102, 205, 170, 1], 'mediumblue': [0, 0, 205, 1],\n    'mediumorchid': [186, 85, 211, 1], 'mediumpurple': [147, 112, 219, 1],\n    'mediumseagreen': [60, 179, 113, 1], 'mediumslateblue': [123, 104, 238, 1],\n    'mediumspringgreen': [0, 250, 154, 1], 'mediumturquoise': [72, 209, 204, 1],\n    'mediumvioletred': [199, 21, 133, 1], 'midnightblue': [25, 25, 112, 1],\n    'mintcream': [245, 255, 250, 1], 'mistyrose': [255, 228, 225, 1],\n    'moccasin': [255, 228, 181, 1], 'navajowhite': [255, 222, 173, 1],\n    'navy': [0, 0, 128, 1], 'oldlace': [253, 245, 230, 1],\n    'olive': [128, 128, 0, 1], 'olivedrab': [107, 142, 35, 1],\n    'orange': [255, 165, 0, 1], 'orangered': [255, 69, 0, 1],\n    'orchid': [218, 112, 214, 1], 'palegoldenrod': [238, 232, 170, 1],\n    'palegreen': [152, 251, 152, 1], 'paleturquoise': [175, 238, 238, 1],\n    'palevioletred': [219, 112, 147, 1], 'papayawhip': [255, 239, 213, 1],\n    'peachpuff': [255, 218, 185, 1], 'peru': [205, 133, 63, 1],\n    'pink': [255, 192, 203, 1], 'plum': [221, 160, 221, 1],\n    'powderblue': [176, 224, 230, 1], 'purple': [128, 0, 128, 1],\n    'red': [255, 0, 0, 1], 'rosybrown': [188, 143, 143, 1],\n    'royalblue': [65, 105, 225, 1], 'saddlebrown': [139, 69, 19, 1],\n    'salmon': [250, 128, 114, 1], 'sandybrown': [244, 164, 96, 1],\n    'seagreen': [46, 139, 87, 1], 'seashell': [255, 245, 238, 1],\n    'sienna': [160, 82, 45, 1], 'silver': [192, 192, 192, 1],\n    'skyblue': [135, 206, 235, 1], 'slateblue': [106, 90, 205, 1],\n    'slategray': [112, 128, 144, 1], 'slategrey': [112, 128, 144, 1],\n    'snow': [255, 250, 250, 1], 'springgreen': [0, 255, 127, 1],\n    'steelblue': [70, 130, 180, 1], 'tan': [210, 180, 140, 1],\n    'teal': [0, 128, 128, 1], 'thistle': [216, 191, 216, 1],\n    'tomato': [255, 99, 71, 1], 'turquoise': [64, 224, 208, 1],\n    'violet': [238, 130, 238, 1], 'wheat': [245, 222, 179, 1],\n    'white': [255, 255, 255, 1], 'whitesmoke': [245, 245, 245, 1],\n    'yellow': [255, 255, 0, 1], 'yellowgreen': [154, 205, 50, 1]\n};\nfunction clampCssByte(i) {\n    i = Math.round(i);\n    return i < 0 ? 0 : i > 255 ? 255 : i;\n}\nfunction clampCssAngle(i) {\n    i = Math.round(i);\n    return i < 0 ? 0 : i > 360 ? 360 : i;\n}\nfunction clampCssFloat(f) {\n    return f < 0 ? 0 : f > 1 ? 1 : f;\n}\nfunction parseCssInt(val) {\n    var str = val;\n    if (str.length && str.charAt(str.length - 1) === '%') {\n        return clampCssByte(parseFloat(str) / 100 * 255);\n    }\n    return clampCssByte(parseInt(str, 10));\n}\nfunction parseCssFloat(val) {\n    var str = val;\n    if (str.length && str.charAt(str.length - 1) === '%') {\n        return clampCssFloat(parseFloat(str) / 100);\n    }\n    return clampCssFloat(parseFloat(str));\n}\nfunction cssHueToRgb(m1, m2, h) {\n    if (h < 0) {\n        h += 1;\n    }\n    else if (h > 1) {\n        h -= 1;\n    }\n    if (h * 6 < 1) {\n        return m1 + (m2 - m1) * h * 6;\n    }\n    if (h * 2 < 1) {\n        return m2;\n    }\n    if (h * 3 < 2) {\n        return m1 + (m2 - m1) * (2 / 3 - h) * 6;\n    }\n    return m1;\n}\nfunction lerpNumber(a, b, p) {\n    return a + (b - a) * p;\n}\nfunction setRgba(out, r, g, b, a) {\n    out[0] = r;\n    out[1] = g;\n    out[2] = b;\n    out[3] = a;\n    return out;\n}\nfunction copyRgba(out, a) {\n    out[0] = a[0];\n    out[1] = a[1];\n    out[2] = a[2];\n    out[3] = a[3];\n    return out;\n}\nvar colorCache = new LRU(20);\nvar lastRemovedArr = null;\nfunction putToCache(colorStr, rgbaArr) {\n    if (lastRemovedArr) {\n        copyRgba(lastRemovedArr, rgbaArr);\n    }\n    lastRemovedArr = colorCache.put(colorStr, lastRemovedArr || (rgbaArr.slice()));\n}\nexport function parse(colorStr, rgbaArr) {\n    if (!colorStr) {\n        return;\n    }\n    rgbaArr = rgbaArr || [];\n    var cached = colorCache.get(colorStr);\n    if (cached) {\n        return copyRgba(rgbaArr, cached);\n    }\n    colorStr = colorStr + '';\n    var str = colorStr.replace(/ /g, '').toLowerCase();\n    if (str in kCSSColorTable) {\n        copyRgba(rgbaArr, kCSSColorTable[str]);\n        putToCache(colorStr, rgbaArr);\n        return rgbaArr;\n    }\n    var strLen = str.length;\n    if (str.charAt(0) === '#') {\n        if (strLen === 4 || strLen === 5) {\n            var iv = parseInt(str.slice(1, 4), 16);\n            if (!(iv >= 0 && iv <= 0xfff)) {\n                setRgba(rgbaArr, 0, 0, 0, 1);\n                return;\n            }\n            setRgba(rgbaArr, ((iv & 0xf00) >> 4) | ((iv & 0xf00) >> 8), (iv & 0xf0) | ((iv & 0xf0) >> 4), (iv & 0xf) | ((iv & 0xf) << 4), strLen === 5 ? parseInt(str.slice(4), 16) / 0xf : 1);\n            putToCache(colorStr, rgbaArr);\n            return rgbaArr;\n        }\n        else if (strLen === 7 || strLen === 9) {\n            var iv = parseInt(str.slice(1, 7), 16);\n            if (!(iv >= 0 && iv <= 0xffffff)) {\n                setRgba(rgbaArr, 0, 0, 0, 1);\n                return;\n            }\n            setRgba(rgbaArr, (iv & 0xff0000) >> 16, (iv & 0xff00) >> 8, iv & 0xff, strLen === 9 ? parseInt(str.slice(7), 16) / 0xff : 1);\n            putToCache(colorStr, rgbaArr);\n            return rgbaArr;\n        }\n        return;\n    }\n    var op = str.indexOf('(');\n    var ep = str.indexOf(')');\n    if (op !== -1 && ep + 1 === strLen) {\n        var fname = str.substr(0, op);\n        var params = str.substr(op + 1, ep - (op + 1)).split(',');\n        var alpha = 1;\n        switch (fname) {\n            case 'rgba':\n                if (params.length !== 4) {\n                    return params.length === 3\n                        ? setRgba(rgbaArr, +params[0], +params[1], +params[2], 1)\n                        : setRgba(rgbaArr, 0, 0, 0, 1);\n                }\n                alpha = parseCssFloat(params.pop());\n            case 'rgb':\n                if (params.length >= 3) {\n                    setRgba(rgbaArr, parseCssInt(params[0]), parseCssInt(params[1]), parseCssInt(params[2]), params.length === 3 ? alpha : parseCssFloat(params[3]));\n                    putToCache(colorStr, rgbaArr);\n                    return rgbaArr;\n                }\n                else {\n                    setRgba(rgbaArr, 0, 0, 0, 1);\n                    return;\n                }\n            case 'hsla':\n                if (params.length !== 4) {\n                    setRgba(rgbaArr, 0, 0, 0, 1);\n                    return;\n                }\n                params[3] = parseCssFloat(params[3]);\n                hsla2rgba(params, rgbaArr);\n                putToCache(colorStr, rgbaArr);\n                return rgbaArr;\n            case 'hsl':\n                if (params.length !== 3) {\n                    setRgba(rgbaArr, 0, 0, 0, 1);\n                    return;\n                }\n                hsla2rgba(params, rgbaArr);\n                putToCache(colorStr, rgbaArr);\n                return rgbaArr;\n            default:\n                return;\n        }\n    }\n    setRgba(rgbaArr, 0, 0, 0, 1);\n    return;\n}\nfunction hsla2rgba(hsla, rgba) {\n    var h = (((parseFloat(hsla[0]) % 360) + 360) % 360) / 360;\n    var s = parseCssFloat(hsla[1]);\n    var l = parseCssFloat(hsla[2]);\n    var m2 = l <= 0.5 ? l * (s + 1) : l + s - l * s;\n    var m1 = l * 2 - m2;\n    rgba = rgba || [];\n    setRgba(rgba, clampCssByte(cssHueToRgb(m1, m2, h + 1 / 3) * 255), clampCssByte(cssHueToRgb(m1, m2, h) * 255), clampCssByte(cssHueToRgb(m1, m2, h - 1 / 3) * 255), 1);\n    if (hsla.length === 4) {\n        rgba[3] = hsla[3];\n    }\n    return rgba;\n}\nfunction rgba2hsla(rgba) {\n    if (!rgba) {\n        return;\n    }\n    var R = rgba[0] / 255;\n    var G = rgba[1] / 255;\n    var B = rgba[2] / 255;\n    var vMin = Math.min(R, G, B);\n    var vMax = Math.max(R, G, B);\n    var delta = vMax - vMin;\n    var L = (vMax + vMin) / 2;\n    var H;\n    var S;\n    if (delta === 0) {\n        H = 0;\n        S = 0;\n    }\n    else {\n        if (L < 0.5) {\n            S = delta / (vMax + vMin);\n        }\n        else {\n            S = delta / (2 - vMax - vMin);\n        }\n        var deltaR = (((vMax - R) / 6) + (delta / 2)) / delta;\n        var deltaG = (((vMax - G) / 6) + (delta / 2)) / delta;\n        var deltaB = (((vMax - B) / 6) + (delta / 2)) / delta;\n        if (R === vMax) {\n            H = deltaB - deltaG;\n        }\n        else if (G === vMax) {\n            H = (1 / 3) + deltaR - deltaB;\n        }\n        else if (B === vMax) {\n            H = (2 / 3) + deltaG - deltaR;\n        }\n        if (H < 0) {\n            H += 1;\n        }\n        if (H > 1) {\n            H -= 1;\n        }\n    }\n    var hsla = [H * 360, S, L];\n    if (rgba[3] != null) {\n        hsla.push(rgba[3]);\n    }\n    return hsla;\n}\nexport function lift(color, level) {\n    var colorArr = parse(color);\n    if (colorArr) {\n        for (var i = 0; i < 3; i++) {\n            if (level < 0) {\n                colorArr[i] = colorArr[i] * (1 - level) | 0;\n            }\n            else {\n                colorArr[i] = ((255 - colorArr[i]) * level + colorArr[i]) | 0;\n            }\n            if (colorArr[i] > 255) {\n                colorArr[i] = 255;\n            }\n            else if (colorArr[i] < 0) {\n                colorArr[i] = 0;\n            }\n        }\n        return stringify(colorArr, colorArr.length === 4 ? 'rgba' : 'rgb');\n    }\n}\nexport function toHex(color) {\n    var colorArr = parse(color);\n    if (colorArr) {\n        return ((1 << 24) + (colorArr[0] << 16) + (colorArr[1] << 8) + (+colorArr[2])).toString(16).slice(1);\n    }\n}\nexport function fastLerp(normalizedValue, colors, out) {\n    if (!(colors && colors.length)\n        || !(normalizedValue >= 0 && normalizedValue <= 1)) {\n        return;\n    }\n    out = out || [];\n    var value = normalizedValue * (colors.length - 1);\n    var leftIndex = Math.floor(value);\n    var rightIndex = Math.ceil(value);\n    var leftColor = colors[leftIndex];\n    var rightColor = colors[rightIndex];\n    var dv = value - leftIndex;\n    out[0] = clampCssByte(lerpNumber(leftColor[0], rightColor[0], dv));\n    out[1] = clampCssByte(lerpNumber(leftColor[1], rightColor[1], dv));\n    out[2] = clampCssByte(lerpNumber(leftColor[2], rightColor[2], dv));\n    out[3] = clampCssFloat(lerpNumber(leftColor[3], rightColor[3], dv));\n    return out;\n}\nexport var fastMapToColor = fastLerp;\nexport function lerp(normalizedValue, colors, fullOutput) {\n    if (!(colors && colors.length)\n        || !(normalizedValue >= 0 && normalizedValue <= 1)) {\n        return;\n    }\n    var value = normalizedValue * (colors.length - 1);\n    var leftIndex = Math.floor(value);\n    var rightIndex = Math.ceil(value);\n    var leftColor = parse(colors[leftIndex]);\n    var rightColor = parse(colors[rightIndex]);\n    var dv = value - leftIndex;\n    var color = stringify([\n        clampCssByte(lerpNumber(leftColor[0], rightColor[0], dv)),\n        clampCssByte(lerpNumber(leftColor[1], rightColor[1], dv)),\n        clampCssByte(lerpNumber(leftColor[2], rightColor[2], dv)),\n        clampCssFloat(lerpNumber(leftColor[3], rightColor[3], dv))\n    ], 'rgba');\n    return fullOutput\n        ? {\n            color: color,\n            leftIndex: leftIndex,\n            rightIndex: rightIndex,\n            value: value\n        }\n        : color;\n}\nexport var mapToColor = lerp;\nexport function modifyHSL(color, h, s, l) {\n    var colorArr = parse(color);\n    if (color) {\n        colorArr = rgba2hsla(colorArr);\n        h != null && (colorArr[0] = clampCssAngle(h));\n        s != null && (colorArr[1] = parseCssFloat(s));\n        l != null && (colorArr[2] = parseCssFloat(l));\n        return stringify(hsla2rgba(colorArr), 'rgba');\n    }\n}\nexport function modifyAlpha(color, alpha) {\n    var colorArr = parse(color);\n    if (colorArr && alpha != null) {\n        colorArr[3] = clampCssFloat(alpha);\n        return stringify(colorArr, 'rgba');\n    }\n}\nexport function stringify(arrColor, type) {\n    if (!arrColor || !arrColor.length) {\n        return;\n    }\n    var colorStr = arrColor[0] + ',' + arrColor[1] + ',' + arrColor[2];\n    if (type === 'rgba' || type === 'hsva' || type === 'hsla') {\n        colorStr += ',' + arrColor[3];\n    }\n    return type + '(' + colorStr + ')';\n}\nexport function lum(color, backgroundLum) {\n    var arr = parse(color);\n    return arr\n        ? (0.299 * arr[0] + 0.587 * arr[1] + 0.114 * arr[2]) * arr[3] / 255\n            + (1 - arr[3]) * backgroundLum\n        : 0;\n}\nexport function random() {\n    return stringify([\n        Math.round(Math.random() * 255),\n        Math.round(Math.random() * 255),\n        Math.round(Math.random() * 255)\n    ], 'rgb');\n}\n","import { RADIAN_TO_DEGREE, retrieve2, logError, isFunction } from '../core/util.js';\nimport { parse } from '../tool/color.js';\nimport env from '../core/env.js';\nvar mathRound = Math.round;\nexport function normalizeColor(color) {\n    var opacity;\n    if (!color || color === 'transparent') {\n        color = 'none';\n    }\n    else if (typeof color === 'string' && color.indexOf('rgba') > -1) {\n        var arr = parse(color);\n        if (arr) {\n            color = 'rgb(' + arr[0] + ',' + arr[1] + ',' + arr[2] + ')';\n            opacity = arr[3];\n        }\n    }\n    return {\n        color: color,\n        opacity: opacity == null ? 1 : opacity\n    };\n}\nvar EPSILON = 1e-4;\nexport function isAroundZero(transform) {\n    return transform < EPSILON && transform > -EPSILON;\n}\nexport function round3(transform) {\n    return mathRound(transform * 1e3) / 1e3;\n}\nexport function round4(transform) {\n    return mathRound(transform * 1e4) / 1e4;\n}\nexport function round1(transform) {\n    return mathRound(transform * 10) / 10;\n}\nexport function getMatrixStr(m) {\n    return 'matrix('\n        + round3(m[0]) + ','\n        + round3(m[1]) + ','\n        + round3(m[2]) + ','\n        + round3(m[3]) + ','\n        + round4(m[4]) + ','\n        + round4(m[5])\n        + ')';\n}\nexport var TEXT_ALIGN_TO_ANCHOR = {\n    left: 'start',\n    right: 'end',\n    center: 'middle',\n    middle: 'middle'\n};\nexport function adjustTextY(y, lineHeight, textBaseline) {\n    if (textBaseline === 'top') {\n        y += lineHeight / 2;\n    }\n    else if (textBaseline === 'bottom') {\n        y -= lineHeight / 2;\n    }\n    return y;\n}\nexport function hasShadow(style) {\n    return style\n        && (style.shadowBlur || style.shadowOffsetX || style.shadowOffsetY);\n}\nexport function getShadowKey(displayable) {\n    var style = displayable.style;\n    var globalScale = displayable.getGlobalScale();\n    return [\n        style.shadowColor,\n        (style.shadowBlur || 0).toFixed(2),\n        (style.shadowOffsetX || 0).toFixed(2),\n        (style.shadowOffsetY || 0).toFixed(2),\n        globalScale[0],\n        globalScale[1]\n    ].join(',');\n}\nexport function getClipPathsKey(clipPaths) {\n    var key = [];\n    if (clipPaths) {\n        for (var i = 0; i < clipPaths.length; i++) {\n            var clipPath = clipPaths[i];\n            key.push(clipPath.id);\n        }\n    }\n    return key.join(',');\n}\nexport function isImagePattern(val) {\n    return val && (!!val.image);\n}\nexport function isSVGPattern(val) {\n    return val && (!!val.svgElement);\n}\nexport function isPattern(val) {\n    return isImagePattern(val) || isSVGPattern(val);\n}\nexport function isLinearGradient(val) {\n    return val.type === 'linear';\n}\nexport function isRadialGradient(val) {\n    return val.type === 'radial';\n}\nexport function isGradient(val) {\n    return val && (val.type === 'linear'\n        || val.type === 'radial');\n}\nexport function getIdURL(id) {\n    return \"url(#\" + id + \")\";\n}\nexport function getPathPrecision(el) {\n    var scale = el.getGlobalScale();\n    var size = Math.max(scale[0], scale[1]);\n    return Math.max(Math.ceil(Math.log(size) / Math.log(10)), 1);\n}\nexport function getSRTTransformString(transform) {\n    var x = transform.x || 0;\n    var y = transform.y || 0;\n    var rotation = (transform.rotation || 0) * RADIAN_TO_DEGREE;\n    var scaleX = retrieve2(transform.scaleX, 1);\n    var scaleY = retrieve2(transform.scaleY, 1);\n    var skewX = transform.skewX || 0;\n    var skewY = transform.skewY || 0;\n    var res = [];\n    if (x || y) {\n        res.push(\"translate(\" + x + \"px,\" + y + \"px)\");\n    }\n    if (rotation) {\n        res.push(\"rotate(\" + rotation + \")\");\n    }\n    if (scaleX !== 1 || scaleY !== 1) {\n        res.push(\"scale(\" + scaleX + \",\" + scaleY + \")\");\n    }\n    if (skewX || skewY) {\n        res.push(\"skew(\" + mathRound(skewX * RADIAN_TO_DEGREE) + \"deg, \" + mathRound(skewY * RADIAN_TO_DEGREE) + \"deg)\");\n    }\n    return res.join(' ');\n}\nexport var encodeBase64 = (function () {\n    if (env.hasGlobalWindow && isFunction(window.btoa)) {\n        return function (str) {\n            return window.btoa(unescape(encodeURIComponent(str)));\n        };\n    }\n    if (typeof Buffer !== 'undefined') {\n        return function (str) {\n            return Buffer.from(str).toString('base64');\n        };\n    }\n    return function (str) {\n        if (process.env.NODE_ENV !== 'production') {\n            logError('Base64 isn\\'t natively supported in the current environment.');\n        }\n        return null;\n    };\n})();\n","import Clip from './Clip.js';\nimport * as color from '../tool/color.js';\nimport { eqNaN, extend, isArrayLike, isFunction, isGradientObject, isNumber, isString, keys, logError, map } from '../core/util.js';\nimport easingFuncs from './easing.js';\nimport { createCubicEasingFunc } from './cubicEasing.js';\nimport { isLinearGradient, isRadialGradient } from '../svg/helper.js';\n;\nvar arraySlice = Array.prototype.slice;\nfunction interpolateNumber(p0, p1, percent) {\n    return (p1 - p0) * percent + p0;\n}\nfunction interpolate1DArray(out, p0, p1, percent) {\n    var len = p0.length;\n    for (var i = 0; i < len; i++) {\n        out[i] = interpolateNumber(p0[i], p1[i], percent);\n    }\n    return out;\n}\nfunction interpolate2DArray(out, p0, p1, percent) {\n    var len = p0.length;\n    var len2 = len && p0[0].length;\n    for (var i = 0; i < len; i++) {\n        if (!out[i]) {\n            out[i] = [];\n        }\n        for (var j = 0; j < len2; j++) {\n            out[i][j] = interpolateNumber(p0[i][j], p1[i][j], percent);\n        }\n    }\n    return out;\n}\nfunction add1DArray(out, p0, p1, sign) {\n    var len = p0.length;\n    for (var i = 0; i < len; i++) {\n        out[i] = p0[i] + p1[i] * sign;\n    }\n    return out;\n}\nfunction add2DArray(out, p0, p1, sign) {\n    var len = p0.length;\n    var len2 = len && p0[0].length;\n    for (var i = 0; i < len; i++) {\n        if (!out[i]) {\n            out[i] = [];\n        }\n        for (var j = 0; j < len2; j++) {\n            out[i][j] = p0[i][j] + p1[i][j] * sign;\n        }\n    }\n    return out;\n}\nfunction fillColorStops(val0, val1) {\n    var len0 = val0.length;\n    var len1 = val1.length;\n    var shorterArr = len0 > len1 ? val1 : val0;\n    var shorterLen = Math.min(len0, len1);\n    var last = shorterArr[shorterLen - 1] || { color: [0, 0, 0, 0], offset: 0 };\n    for (var i = shorterLen; i < Math.max(len0, len1); i++) {\n        shorterArr.push({\n            offset: last.offset,\n            color: last.color.slice()\n        });\n    }\n}\nfunction fillArray(val0, val1, arrDim) {\n    var arr0 = val0;\n    var arr1 = val1;\n    if (!arr0.push || !arr1.push) {\n        return;\n    }\n    var arr0Len = arr0.length;\n    var arr1Len = arr1.length;\n    if (arr0Len !== arr1Len) {\n        var isPreviousLarger = arr0Len > arr1Len;\n        if (isPreviousLarger) {\n            arr0.length = arr1Len;\n        }\n        else {\n            for (var i = arr0Len; i < arr1Len; i++) {\n                arr0.push(arrDim === 1 ? arr1[i] : arraySlice.call(arr1[i]));\n            }\n        }\n    }\n    var len2 = arr0[0] && arr0[0].length;\n    for (var i = 0; i < arr0.length; i++) {\n        if (arrDim === 1) {\n            if (isNaN(arr0[i])) {\n                arr0[i] = arr1[i];\n            }\n        }\n        else {\n            for (var j = 0; j < len2; j++) {\n                if (isNaN(arr0[i][j])) {\n                    arr0[i][j] = arr1[i][j];\n                }\n            }\n        }\n    }\n}\nexport function cloneValue(value) {\n    if (isArrayLike(value)) {\n        var len = value.length;\n        if (isArrayLike(value[0])) {\n            var ret = [];\n            for (var i = 0; i < len; i++) {\n                ret.push(arraySlice.call(value[i]));\n            }\n            return ret;\n        }\n        return arraySlice.call(value);\n    }\n    return value;\n}\nfunction rgba2String(rgba) {\n    rgba[0] = Math.floor(rgba[0]) || 0;\n    rgba[1] = Math.floor(rgba[1]) || 0;\n    rgba[2] = Math.floor(rgba[2]) || 0;\n    rgba[3] = rgba[3] == null ? 1 : rgba[3];\n    return 'rgba(' + rgba.join(',') + ')';\n}\nfunction guessArrayDim(value) {\n    return isArrayLike(value && value[0]) ? 2 : 1;\n}\nvar VALUE_TYPE_NUMBER = 0;\nvar VALUE_TYPE_1D_ARRAY = 1;\nvar VALUE_TYPE_2D_ARRAY = 2;\nvar VALUE_TYPE_COLOR = 3;\nvar VALUE_TYPE_LINEAR_GRADIENT = 4;\nvar VALUE_TYPE_RADIAL_GRADIENT = 5;\nvar VALUE_TYPE_UNKOWN = 6;\nfunction isGradientValueType(valType) {\n    return valType === VALUE_TYPE_LINEAR_GRADIENT || valType === VALUE_TYPE_RADIAL_GRADIENT;\n}\nfunction isArrayValueType(valType) {\n    return valType === VALUE_TYPE_1D_ARRAY || valType === VALUE_TYPE_2D_ARRAY;\n}\nvar tmpRgba = [0, 0, 0, 0];\nvar Track = (function () {\n    function Track(propName) {\n        this.keyframes = [];\n        this.discrete = false;\n        this._invalid = false;\n        this._needsSort = false;\n        this._lastFr = 0;\n        this._lastFrP = 0;\n        this.propName = propName;\n    }\n    Track.prototype.isFinished = function () {\n        return this._finished;\n    };\n    Track.prototype.setFinished = function () {\n        this._finished = true;\n        if (this._additiveTrack) {\n            this._additiveTrack.setFinished();\n        }\n    };\n    Track.prototype.needsAnimate = function () {\n        return this.keyframes.length >= 1;\n    };\n    Track.prototype.getAdditiveTrack = function () {\n        return this._additiveTrack;\n    };\n    Track.prototype.addKeyframe = function (time, rawValue, easing) {\n        this._needsSort = true;\n        var keyframes = this.keyframes;\n        var len = keyframes.length;\n        var discrete = false;\n        var valType = VALUE_TYPE_UNKOWN;\n        var value = rawValue;\n        if (isArrayLike(rawValue)) {\n            var arrayDim = guessArrayDim(rawValue);\n            valType = arrayDim;\n            if (arrayDim === 1 && !isNumber(rawValue[0])\n                || arrayDim === 2 && !isNumber(rawValue[0][0])) {\n                discrete = true;\n            }\n        }\n        else {\n            if (isNumber(rawValue) && !eqNaN(rawValue)) {\n                valType = VALUE_TYPE_NUMBER;\n            }\n            else if (isString(rawValue)) {\n                if (!isNaN(+rawValue)) {\n                    valType = VALUE_TYPE_NUMBER;\n                }\n                else {\n                    var colorArray = color.parse(rawValue);\n                    if (colorArray) {\n                        value = colorArray;\n                        valType = VALUE_TYPE_COLOR;\n                    }\n                }\n            }\n            else if (isGradientObject(rawValue)) {\n                var parsedGradient = extend({}, value);\n                parsedGradient.colorStops = map(rawValue.colorStops, function (colorStop) { return ({\n                    offset: colorStop.offset,\n                    color: color.parse(colorStop.color)\n                }); });\n                if (isLinearGradient(rawValue)) {\n                    valType = VALUE_TYPE_LINEAR_GRADIENT;\n                }\n                else if (isRadialGradient(rawValue)) {\n                    valType = VALUE_TYPE_RADIAL_GRADIENT;\n                }\n                value = parsedGradient;\n            }\n        }\n        if (len === 0) {\n            this.valType = valType;\n        }\n        else if (valType !== this.valType || valType === VALUE_TYPE_UNKOWN) {\n            discrete = true;\n        }\n        this.discrete = this.discrete || discrete;\n        var kf = {\n            time: time,\n            value: value,\n            rawValue: rawValue,\n            percent: 0\n        };\n        if (easing) {\n            kf.easing = easing;\n            kf.easingFunc = isFunction(easing)\n                ? easing\n                : easingFuncs[easing] || createCubicEasingFunc(easing);\n        }\n        keyframes.push(kf);\n        return kf;\n    };\n    Track.prototype.prepare = function (maxTime, additiveTrack) {\n        var kfs = this.keyframes;\n        if (this._needsSort) {\n            kfs.sort(function (a, b) {\n                return a.time - b.time;\n            });\n        }\n        var valType = this.valType;\n        var kfsLen = kfs.length;\n        var lastKf = kfs[kfsLen - 1];\n        var isDiscrete = this.discrete;\n        var isArr = isArrayValueType(valType);\n        var isGradient = isGradientValueType(valType);\n        for (var i = 0; i < kfsLen; i++) {\n            var kf = kfs[i];\n            var value = kf.value;\n            var lastValue = lastKf.value;\n            kf.percent = kf.time / maxTime;\n            if (!isDiscrete) {\n                if (isArr && i !== kfsLen - 1) {\n                    fillArray(value, lastValue, valType);\n                }\n                else if (isGradient) {\n                    fillColorStops(value.colorStops, lastValue.colorStops);\n                }\n            }\n        }\n        if (!isDiscrete\n            && valType !== VALUE_TYPE_RADIAL_GRADIENT\n            && additiveTrack\n            && this.needsAnimate()\n            && additiveTrack.needsAnimate()\n            && valType === additiveTrack.valType\n            && !additiveTrack._finished) {\n            this._additiveTrack = additiveTrack;\n            var startValue = kfs[0].value;\n            for (var i = 0; i < kfsLen; i++) {\n                if (valType === VALUE_TYPE_NUMBER) {\n                    kfs[i].additiveValue = kfs[i].value - startValue;\n                }\n                else if (valType === VALUE_TYPE_COLOR) {\n                    kfs[i].additiveValue =\n                        add1DArray([], kfs[i].value, startValue, -1);\n                }\n                else if (isArrayValueType(valType)) {\n                    kfs[i].additiveValue = valType === VALUE_TYPE_1D_ARRAY\n                        ? add1DArray([], kfs[i].value, startValue, -1)\n                        : add2DArray([], kfs[i].value, startValue, -1);\n                }\n            }\n        }\n    };\n    Track.prototype.step = function (target, percent) {\n        if (this._finished) {\n            return;\n        }\n        if (this._additiveTrack && this._additiveTrack._finished) {\n            this._additiveTrack = null;\n        }\n        var isAdditive = this._additiveTrack != null;\n        var valueKey = isAdditive ? 'additiveValue' : 'value';\n        var valType = this.valType;\n        var keyframes = this.keyframes;\n        var kfsNum = keyframes.length;\n        var propName = this.propName;\n        var isValueColor = valType === VALUE_TYPE_COLOR;\n        var frameIdx;\n        var lastFrame = this._lastFr;\n        var mathMin = Math.min;\n        var frame;\n        var nextFrame;\n        if (kfsNum === 1) {\n            frame = nextFrame = keyframes[0];\n        }\n        else {\n            if (percent < 0) {\n                frameIdx = 0;\n            }\n            else if (percent < this._lastFrP) {\n                var start = mathMin(lastFrame + 1, kfsNum - 1);\n                for (frameIdx = start; frameIdx >= 0; frameIdx--) {\n                    if (keyframes[frameIdx].percent <= percent) {\n                        break;\n                    }\n                }\n                frameIdx = mathMin(frameIdx, kfsNum - 2);\n            }\n            else {\n                for (frameIdx = lastFrame; frameIdx < kfsNum; frameIdx++) {\n                    if (keyframes[frameIdx].percent > percent) {\n                        break;\n                    }\n                }\n                frameIdx = mathMin(frameIdx - 1, kfsNum - 2);\n            }\n            nextFrame = keyframes[frameIdx + 1];\n            frame = keyframes[frameIdx];\n        }\n        if (!(frame && nextFrame)) {\n            return;\n        }\n        this._lastFr = frameIdx;\n        this._lastFrP = percent;\n        var interval = (nextFrame.percent - frame.percent);\n        var w = interval === 0 ? 1 : mathMin((percent - frame.percent) / interval, 1);\n        if (nextFrame.easingFunc) {\n            w = nextFrame.easingFunc(w);\n        }\n        var targetArr = isAdditive ? this._additiveValue\n            : (isValueColor ? tmpRgba : target[propName]);\n        if ((isArrayValueType(valType) || isValueColor) && !targetArr) {\n            targetArr = this._additiveValue = [];\n        }\n        if (this.discrete) {\n            target[propName] = w < 1 ? frame.rawValue : nextFrame.rawValue;\n        }\n        else if (isArrayValueType(valType)) {\n            valType === VALUE_TYPE_1D_ARRAY\n                ? interpolate1DArray(targetArr, frame[valueKey], nextFrame[valueKey], w)\n                : interpolate2DArray(targetArr, frame[valueKey], nextFrame[valueKey], w);\n        }\n        else if (isGradientValueType(valType)) {\n            var val = frame[valueKey];\n            var nextVal_1 = nextFrame[valueKey];\n            var isLinearGradient_1 = valType === VALUE_TYPE_LINEAR_GRADIENT;\n            target[propName] = {\n                type: isLinearGradient_1 ? 'linear' : 'radial',\n                x: interpolateNumber(val.x, nextVal_1.x, w),\n                y: interpolateNumber(val.y, nextVal_1.y, w),\n                colorStops: map(val.colorStops, function (colorStop, idx) {\n                    var nextColorStop = nextVal_1.colorStops[idx];\n                    return {\n                        offset: interpolateNumber(colorStop.offset, nextColorStop.offset, w),\n                        color: rgba2String(interpolate1DArray([], colorStop.color, nextColorStop.color, w))\n                    };\n                }),\n                global: nextVal_1.global\n            };\n            if (isLinearGradient_1) {\n                target[propName].x2 = interpolateNumber(val.x2, nextVal_1.x2, w);\n                target[propName].y2 = interpolateNumber(val.y2, nextVal_1.y2, w);\n            }\n            else {\n                target[propName].r = interpolateNumber(val.r, nextVal_1.r, w);\n            }\n        }\n        else if (isValueColor) {\n            interpolate1DArray(targetArr, frame[valueKey], nextFrame[valueKey], w);\n            if (!isAdditive) {\n                target[propName] = rgba2String(targetArr);\n            }\n        }\n        else {\n            var value = interpolateNumber(frame[valueKey], nextFrame[valueKey], w);\n            if (isAdditive) {\n                this._additiveValue = value;\n            }\n            else {\n                target[propName] = value;\n            }\n        }\n        if (isAdditive) {\n            this._addToTarget(target);\n        }\n    };\n    Track.prototype._addToTarget = function (target) {\n        var valType = this.valType;\n        var propName = this.propName;\n        var additiveValue = this._additiveValue;\n        if (valType === VALUE_TYPE_NUMBER) {\n            target[propName] = target[propName] + additiveValue;\n        }\n        else if (valType === VALUE_TYPE_COLOR) {\n            color.parse(target[propName], tmpRgba);\n            add1DArray(tmpRgba, tmpRgba, additiveValue, 1);\n            target[propName] = rgba2String(tmpRgba);\n        }\n        else if (valType === VALUE_TYPE_1D_ARRAY) {\n            add1DArray(target[propName], target[propName], additiveValue, 1);\n        }\n        else if (valType === VALUE_TYPE_2D_ARRAY) {\n            add2DArray(target[propName], target[propName], additiveValue, 1);\n        }\n    };\n    return Track;\n}());\nvar Animator = (function () {\n    function Animator(target, loop, allowDiscreteAnimation, additiveTo) {\n        this._tracks = {};\n        this._trackKeys = [];\n        this._maxTime = 0;\n        this._started = 0;\n        this._clip = null;\n        this._target = target;\n        this._loop = loop;\n        if (loop && additiveTo) {\n            logError('Can\\' use additive animation on looped animation.');\n            return;\n        }\n        this._additiveAnimators = additiveTo;\n        this._allowDiscrete = allowDiscreteAnimation;\n    }\n    Animator.prototype.getMaxTime = function () {\n        return this._maxTime;\n    };\n    Animator.prototype.getDelay = function () {\n        return this._delay;\n    };\n    Animator.prototype.getLoop = function () {\n        return this._loop;\n    };\n    Animator.prototype.getTarget = function () {\n        return this._target;\n    };\n    Animator.prototype.changeTarget = function (target) {\n        this._target = target;\n    };\n    Animator.prototype.when = function (time, props, easing) {\n        return this.whenWithKeys(time, props, keys(props), easing);\n    };\n    Animator.prototype.whenWithKeys = function (time, props, propNames, easing) {\n        var tracks = this._tracks;\n        for (var i = 0; i < propNames.length; i++) {\n            var propName = propNames[i];\n            var track = tracks[propName];\n            if (!track) {\n                track = tracks[propName] = new Track(propName);\n                var initialValue = void 0;\n                var additiveTrack = this._getAdditiveTrack(propName);\n                if (additiveTrack) {\n                    var addtiveTrackKfs = additiveTrack.keyframes;\n                    var lastFinalKf = addtiveTrackKfs[addtiveTrackKfs.length - 1];\n                    initialValue = lastFinalKf && lastFinalKf.value;\n                    if (additiveTrack.valType === VALUE_TYPE_COLOR && initialValue) {\n                        initialValue = rgba2String(initialValue);\n                    }\n                }\n                else {\n                    initialValue = this._target[propName];\n                }\n                if (initialValue == null) {\n                    continue;\n                }\n                if (time > 0) {\n                    track.addKeyframe(0, cloneValue(initialValue), easing);\n                }\n                this._trackKeys.push(propName);\n            }\n            track.addKeyframe(time, cloneValue(props[propName]), easing);\n        }\n        this._maxTime = Math.max(this._maxTime, time);\n        return this;\n    };\n    Animator.prototype.pause = function () {\n        this._clip.pause();\n        this._paused = true;\n    };\n    Animator.prototype.resume = function () {\n        this._clip.resume();\n        this._paused = false;\n    };\n    Animator.prototype.isPaused = function () {\n        return !!this._paused;\n    };\n    Animator.prototype.duration = function (duration) {\n        this._maxTime = duration;\n        this._force = true;\n        return this;\n    };\n    Animator.prototype._doneCallback = function () {\n        this._setTracksFinished();\n        this._clip = null;\n        var doneList = this._doneCbs;\n        if (doneList) {\n            var len = doneList.length;\n            for (var i = 0; i < len; i++) {\n                doneList[i].call(this);\n            }\n        }\n    };\n    Animator.prototype._abortedCallback = function () {\n        this._setTracksFinished();\n        var animation = this.animation;\n        var abortedList = this._abortedCbs;\n        if (animation) {\n            animation.removeClip(this._clip);\n        }\n        this._clip = null;\n        if (abortedList) {\n            for (var i = 0; i < abortedList.length; i++) {\n                abortedList[i].call(this);\n            }\n        }\n    };\n    Animator.prototype._setTracksFinished = function () {\n        var tracks = this._tracks;\n        var tracksKeys = this._trackKeys;\n        for (var i = 0; i < tracksKeys.length; i++) {\n            tracks[tracksKeys[i]].setFinished();\n        }\n    };\n    Animator.prototype._getAdditiveTrack = function (trackName) {\n        var additiveTrack;\n        var additiveAnimators = this._additiveAnimators;\n        if (additiveAnimators) {\n            for (var i = 0; i < additiveAnimators.length; i++) {\n                var track = additiveAnimators[i].getTrack(trackName);\n                if (track) {\n                    additiveTrack = track;\n                }\n            }\n        }\n        return additiveTrack;\n    };\n    Animator.prototype.start = function (easing) {\n        if (this._started > 0) {\n            return;\n        }\n        this._started = 1;\n        var self = this;\n        var tracks = [];\n        var maxTime = this._maxTime || 0;\n        for (var i = 0; i < this._trackKeys.length; i++) {\n            var propName = this._trackKeys[i];\n            var track = this._tracks[propName];\n            var additiveTrack = this._getAdditiveTrack(propName);\n            var kfs = track.keyframes;\n            var kfsNum = kfs.length;\n            track.prepare(maxTime, additiveTrack);\n            if (track.needsAnimate()) {\n                if (!this._allowDiscrete && track.discrete) {\n                    var lastKf = kfs[kfsNum - 1];\n                    if (lastKf) {\n                        self._target[track.propName] = lastKf.rawValue;\n                    }\n                    track.setFinished();\n                }\n                else {\n                    tracks.push(track);\n                }\n            }\n        }\n        if (tracks.length || this._force) {\n            var clip = new Clip({\n                life: maxTime,\n                loop: this._loop,\n                delay: this._delay || 0,\n                onframe: function (percent) {\n                    self._started = 2;\n                    var additiveAnimators = self._additiveAnimators;\n                    if (additiveAnimators) {\n                        var stillHasAdditiveAnimator = false;\n                        for (var i = 0; i < additiveAnimators.length; i++) {\n                            if (additiveAnimators[i]._clip) {\n                                stillHasAdditiveAnimator = true;\n                                break;\n                            }\n                        }\n                        if (!stillHasAdditiveAnimator) {\n                            self._additiveAnimators = null;\n                        }\n                    }\n                    for (var i = 0; i < tracks.length; i++) {\n                        tracks[i].step(self._target, percent);\n                    }\n                    var onframeList = self._onframeCbs;\n                    if (onframeList) {\n                        for (var i = 0; i < onframeList.length; i++) {\n                            onframeList[i](self._target, percent);\n                        }\n                    }\n                },\n                ondestroy: function () {\n                    self._doneCallback();\n                }\n            });\n            this._clip = clip;\n            if (this.animation) {\n                this.animation.addClip(clip);\n            }\n            if (easing) {\n                clip.setEasing(easing);\n            }\n        }\n        else {\n            this._doneCallback();\n        }\n        return this;\n    };\n    Animator.prototype.stop = function (forwardToLast) {\n        if (!this._clip) {\n            return;\n        }\n        var clip = this._clip;\n        if (forwardToLast) {\n            clip.onframe(1);\n        }\n        this._abortedCallback();\n    };\n    Animator.prototype.delay = function (time) {\n        this._delay = time;\n        return this;\n    };\n    Animator.prototype.during = function (cb) {\n        if (cb) {\n            if (!this._onframeCbs) {\n                this._onframeCbs = [];\n            }\n            this._onframeCbs.push(cb);\n        }\n        return this;\n    };\n    Animator.prototype.done = function (cb) {\n        if (cb) {\n            if (!this._doneCbs) {\n                this._doneCbs = [];\n            }\n            this._doneCbs.push(cb);\n        }\n        return this;\n    };\n    Animator.prototype.aborted = function (cb) {\n        if (cb) {\n            if (!this._abortedCbs) {\n                this._abortedCbs = [];\n            }\n            this._abortedCbs.push(cb);\n        }\n        return this;\n    };\n    Animator.prototype.getClip = function () {\n        return this._clip;\n    };\n    Animator.prototype.getTrack = function (propName) {\n        return this._tracks[propName];\n    };\n    Animator.prototype.getTracks = function () {\n        var _this = this;\n        return map(this._trackKeys, function (key) { return _this._tracks[key]; });\n    };\n    Animator.prototype.stopTracks = function (propNames, forwardToLast) {\n        if (!propNames.length || !this._clip) {\n            return true;\n        }\n        var tracks = this._tracks;\n        var tracksKeys = this._trackKeys;\n        for (var i = 0; i < propNames.length; i++) {\n            var track = tracks[propNames[i]];\n            if (track && !track.isFinished()) {\n                if (forwardToLast) {\n                    track.step(this._target, 1);\n                }\n                else if (this._started === 1) {\n                    track.step(this._target, 0);\n                }\n                track.setFinished();\n            }\n        }\n        var allAborted = true;\n        for (var i = 0; i < tracksKeys.length; i++) {\n            if (!tracks[tracksKeys[i]].isFinished()) {\n                allAborted = false;\n                break;\n            }\n        }\n        if (allAborted) {\n            this._abortedCallback();\n        }\n        return allAborted;\n    };\n    Animator.prototype.saveTo = function (target, trackKeys, firstOrLast) {\n        if (!target) {\n            return;\n        }\n        trackKeys = trackKeys || this._trackKeys;\n        for (var i = 0; i < trackKeys.length; i++) {\n            var propName = trackKeys[i];\n            var track = this._tracks[propName];\n            if (!track || track.isFinished()) {\n                continue;\n            }\n            var kfs = track.keyframes;\n            var kf = kfs[firstOrLast ? 0 : kfs.length - 1];\n            if (kf) {\n                target[propName] = cloneValue(kf.rawValue);\n            }\n        }\n    };\n    Animator.prototype.__changeFinalValue = function (finalProps, trackKeys) {\n        trackKeys = trackKeys || keys(finalProps);\n        for (var i = 0; i < trackKeys.length; i++) {\n            var propName = trackKeys[i];\n            var track = this._tracks[propName];\n            if (!track) {\n                continue;\n            }\n            var kfs = track.keyframes;\n            if (kfs.length > 1) {\n                var lastKf = kfs.pop();\n                track.addKeyframe(lastKf.time, finalProps[propName]);\n                track.prepare(this._maxTime, track.getAdditiveTrack());\n            }\n        }\n    };\n    return Animator;\n}());\nexport default Animator;\n","import { __extends } from \"tslib\";\nimport Eventful from '../core/Eventful.js';\nimport requestAnimationFrame from './requestAnimationFrame.js';\nimport Animator from './Animator.js';\nexport function getTime() {\n    return new Date().getTime();\n}\nvar Animation = (function (_super) {\n    __extends(Animation, _super);\n    function Animation(opts) {\n        var _this = _super.call(this) || this;\n        _this._running = false;\n        _this._time = 0;\n        _this._pausedTime = 0;\n        _this._pauseStart = 0;\n        _this._paused = false;\n        opts = opts || {};\n        _this.stage = opts.stage || {};\n        return _this;\n    }\n    Animation.prototype.addClip = function (clip) {\n        if (clip.animation) {\n            this.removeClip(clip);\n        }\n        if (!this._head) {\n            this._head = this._tail = clip;\n        }\n        else {\n            this._tail.next = clip;\n            clip.prev = this._tail;\n            clip.next = null;\n            this._tail = clip;\n        }\n        clip.animation = this;\n    };\n    Animation.prototype.addAnimator = function (animator) {\n        animator.animation = this;\n        var clip = animator.getClip();\n        if (clip) {\n            this.addClip(clip);\n        }\n    };\n    Animation.prototype.removeClip = function (clip) {\n        if (!clip.animation) {\n            return;\n        }\n        var prev = clip.prev;\n        var next = clip.next;\n        if (prev) {\n            prev.next = next;\n        }\n        else {\n            this._head = next;\n        }\n        if (next) {\n            next.prev = prev;\n        }\n        else {\n            this._tail = prev;\n        }\n        clip.next = clip.prev = clip.animation = null;\n    };\n    Animation.prototype.removeAnimator = function (animator) {\n        var clip = animator.getClip();\n        if (clip) {\n            this.removeClip(clip);\n        }\n        animator.animation = null;\n    };\n    Animation.prototype.update = function (notTriggerFrameAndStageUpdate) {\n        var time = getTime() - this._pausedTime;\n        var delta = time - this._time;\n        var clip = this._head;\n        while (clip) {\n            var nextClip = clip.next;\n            var finished = clip.step(time, delta);\n            if (finished) {\n                clip.ondestroy();\n                this.removeClip(clip);\n                clip = nextClip;\n            }\n            else {\n                clip = nextClip;\n            }\n        }\n        this._time = time;\n        if (!notTriggerFrameAndStageUpdate) {\n            this.trigger('frame', delta);\n            this.stage.update && this.stage.update();\n        }\n    };\n    Animation.prototype._startLoop = function () {\n        var self = this;\n        this._running = true;\n        function step() {\n            if (self._running) {\n                requestAnimationFrame(step);\n                !self._paused && self.update();\n            }\n        }\n        requestAnimationFrame(step);\n    };\n    Animation.prototype.start = function () {\n        if (this._running) {\n            return;\n        }\n        this._time = getTime();\n        this._pausedTime = 0;\n        this._startLoop();\n    };\n    Animation.prototype.stop = function () {\n        this._running = false;\n    };\n    Animation.prototype.pause = function () {\n        if (!this._paused) {\n            this._pauseStart = getTime();\n            this._paused = true;\n        }\n    };\n    Animation.prototype.resume = function () {\n        if (this._paused) {\n            this._pausedTime += getTime() - this._pauseStart;\n            this._paused = false;\n        }\n    };\n    Animation.prototype.clear = function () {\n        var clip = this._head;\n        while (clip) {\n            var nextClip = clip.next;\n            clip.prev = clip.next = clip.animation = null;\n            clip = nextClip;\n        }\n        this._head = this._tail = null;\n    };\n    Animation.prototype.isFinished = function () {\n        return this._head == null;\n    };\n    Animation.prototype.animate = function (target, options) {\n        options = options || {};\n        this.start();\n        var animator = new Animator(target, options.loop);\n        this.addAnimator(animator);\n        return animator;\n    };\n    return Animation;\n}(Eventful));\nexport default Animation;\n","import { __extends } from \"tslib\";\nimport { addEventListener, removeEventListener, normalizeEvent, getNativeEvent } from '../core/event.js';\nimport * as zrUtil from '../core/util.js';\nimport Eventful from '../core/Eventful.js';\nimport env from '../core/env.js';\nvar TOUCH_CLICK_DELAY = 300;\nvar globalEventSupported = env.domSupported;\nvar localNativeListenerNames = (function () {\n    var mouseHandlerNames = [\n        'click', 'dblclick', 'mousewheel', 'wheel', 'mouseout',\n        'mouseup', 'mousedown', 'mousemove', 'contextmenu'\n    ];\n    var touchHandlerNames = [\n        'touchstart', 'touchend', 'touchmove'\n    ];\n    var pointerEventNameMap = {\n        pointerdown: 1, pointerup: 1, pointermove: 1, pointerout: 1\n    };\n    var pointerHandlerNames = zrUtil.map(mouseHandlerNames, function (name) {\n        var nm = name.replace('mouse', 'pointer');\n        return pointerEventNameMap.hasOwnProperty(nm) ? nm : name;\n    });\n    return {\n        mouse: mouseHandlerNames,\n        touch: touchHandlerNames,\n        pointer: pointerHandlerNames\n    };\n})();\nvar globalNativeListenerNames = {\n    mouse: ['mousemove', 'mouseup'],\n    pointer: ['pointermove', 'pointerup']\n};\nvar wheelEventSupported = false;\nfunction isPointerFromTouch(event) {\n    var pointerType = event.pointerType;\n    return pointerType === 'pen' || pointerType === 'touch';\n}\nfunction setTouchTimer(scope) {\n    scope.touching = true;\n    if (scope.touchTimer != null) {\n        clearTimeout(scope.touchTimer);\n        scope.touchTimer = null;\n    }\n    scope.touchTimer = setTimeout(function () {\n        scope.touching = false;\n        scope.touchTimer = null;\n    }, 700);\n}\nfunction markTouch(event) {\n    event && (event.zrByTouch = true);\n}\nfunction normalizeGlobalEvent(instance, event) {\n    return normalizeEvent(instance.dom, new FakeGlobalEvent(instance, event), true);\n}\nfunction isLocalEl(instance, el) {\n    var elTmp = el;\n    var isLocal = false;\n    while (elTmp && elTmp.nodeType !== 9\n        && !(isLocal = elTmp.domBelongToZr\n            || (elTmp !== el && elTmp === instance.painterRoot))) {\n        elTmp = elTmp.parentNode;\n    }\n    return isLocal;\n}\nvar FakeGlobalEvent = (function () {\n    function FakeGlobalEvent(instance, event) {\n        this.stopPropagation = zrUtil.noop;\n        this.stopImmediatePropagation = zrUtil.noop;\n        this.preventDefault = zrUtil.noop;\n        this.type = event.type;\n        this.target = this.currentTarget = instance.dom;\n        this.pointerType = event.pointerType;\n        this.clientX = event.clientX;\n        this.clientY = event.clientY;\n    }\n    return FakeGlobalEvent;\n}());\nvar localDOMHandlers = {\n    mousedown: function (event) {\n        event = normalizeEvent(this.dom, event);\n        this.__mayPointerCapture = [event.zrX, event.zrY];\n        this.trigger('mousedown', event);\n    },\n    mousemove: function (event) {\n        event = normalizeEvent(this.dom, event);\n        var downPoint = this.__mayPointerCapture;\n        if (downPoint && (event.zrX !== downPoint[0] || event.zrY !== downPoint[1])) {\n            this.__togglePointerCapture(true);\n        }\n        this.trigger('mousemove', event);\n    },\n    mouseup: function (event) {\n        event = normalizeEvent(this.dom, event);\n        this.__togglePointerCapture(false);\n        this.trigger('mouseup', event);\n    },\n    mouseout: function (event) {\n        event = normalizeEvent(this.dom, event);\n        var element = event.toElement || event.relatedTarget;\n        if (!isLocalEl(this, element)) {\n            if (this.__pointerCapturing) {\n                event.zrEventControl = 'no_globalout';\n            }\n            this.trigger('mouseout', event);\n        }\n    },\n    wheel: function (event) {\n        wheelEventSupported = true;\n        event = normalizeEvent(this.dom, event);\n        this.trigger('mousewheel', event);\n    },\n    mousewheel: function (event) {\n        if (wheelEventSupported) {\n            return;\n        }\n        event = normalizeEvent(this.dom, event);\n        this.trigger('mousewheel', event);\n    },\n    touchstart: function (event) {\n        event = normalizeEvent(this.dom, event);\n        markTouch(event);\n        this.__lastTouchMoment = new Date();\n        this.handler.processGesture(event, 'start');\n        localDOMHandlers.mousemove.call(this, event);\n        localDOMHandlers.mousedown.call(this, event);\n    },\n    touchmove: function (event) {\n        event = normalizeEvent(this.dom, event);\n        markTouch(event);\n        this.handler.processGesture(event, 'change');\n        localDOMHandlers.mousemove.call(this, event);\n    },\n    touchend: function (event) {\n        event = normalizeEvent(this.dom, event);\n        markTouch(event);\n        this.handler.processGesture(event, 'end');\n        localDOMHandlers.mouseup.call(this, event);\n        if (+new Date() - (+this.__lastTouchMoment) < TOUCH_CLICK_DELAY) {\n            localDOMHandlers.click.call(this, event);\n        }\n    },\n    pointerdown: function (event) {\n        localDOMHandlers.mousedown.call(this, event);\n    },\n    pointermove: function (event) {\n        if (!isPointerFromTouch(event)) {\n            localDOMHandlers.mousemove.call(this, event);\n        }\n    },\n    pointerup: function (event) {\n        localDOMHandlers.mouseup.call(this, event);\n    },\n    pointerout: function (event) {\n        if (!isPointerFromTouch(event)) {\n            localDOMHandlers.mouseout.call(this, event);\n        }\n    }\n};\nzrUtil.each(['click', 'dblclick', 'contextmenu'], function (name) {\n    localDOMHandlers[name] = function (event) {\n        event = normalizeEvent(this.dom, event);\n        this.trigger(name, event);\n    };\n});\nvar globalDOMHandlers = {\n    pointermove: function (event) {\n        if (!isPointerFromTouch(event)) {\n            globalDOMHandlers.mousemove.call(this, event);\n        }\n    },\n    pointerup: function (event) {\n        globalDOMHandlers.mouseup.call(this, event);\n    },\n    mousemove: function (event) {\n        this.trigger('mousemove', event);\n    },\n    mouseup: function (event) {\n        var pointerCaptureReleasing = this.__pointerCapturing;\n        this.__togglePointerCapture(false);\n        this.trigger('mouseup', event);\n        if (pointerCaptureReleasing) {\n            event.zrEventControl = 'only_globalout';\n            this.trigger('mouseout', event);\n        }\n    }\n};\nfunction mountLocalDOMEventListeners(instance, scope) {\n    var domHandlers = scope.domHandlers;\n    if (env.pointerEventsSupported) {\n        zrUtil.each(localNativeListenerNames.pointer, function (nativeEventName) {\n            mountSingleDOMEventListener(scope, nativeEventName, function (event) {\n                domHandlers[nativeEventName].call(instance, event);\n            });\n        });\n    }\n    else {\n        if (env.touchEventsSupported) {\n            zrUtil.each(localNativeListenerNames.touch, function (nativeEventName) {\n                mountSingleDOMEventListener(scope, nativeEventName, function (event) {\n                    domHandlers[nativeEventName].call(instance, event);\n                    setTouchTimer(scope);\n                });\n            });\n        }\n        zrUtil.each(localNativeListenerNames.mouse, function (nativeEventName) {\n            mountSingleDOMEventListener(scope, nativeEventName, function (event) {\n                event = getNativeEvent(event);\n                if (!scope.touching) {\n                    domHandlers[nativeEventName].call(instance, event);\n                }\n            });\n        });\n    }\n}\nfunction mountGlobalDOMEventListeners(instance, scope) {\n    if (env.pointerEventsSupported) {\n        zrUtil.each(globalNativeListenerNames.pointer, mount);\n    }\n    else if (!env.touchEventsSupported) {\n        zrUtil.each(globalNativeListenerNames.mouse, mount);\n    }\n    function mount(nativeEventName) {\n        function nativeEventListener(event) {\n            event = getNativeEvent(event);\n            if (!isLocalEl(instance, event.target)) {\n                event = normalizeGlobalEvent(instance, event);\n                scope.domHandlers[nativeEventName].call(instance, event);\n            }\n        }\n        mountSingleDOMEventListener(scope, nativeEventName, nativeEventListener, { capture: true });\n    }\n}\nfunction mountSingleDOMEventListener(scope, nativeEventName, listener, opt) {\n    scope.mounted[nativeEventName] = listener;\n    scope.listenerOpts[nativeEventName] = opt;\n    addEventListener(scope.domTarget, nativeEventName, listener, opt);\n}\nfunction unmountDOMEventListeners(scope) {\n    var mounted = scope.mounted;\n    for (var nativeEventName in mounted) {\n        if (mounted.hasOwnProperty(nativeEventName)) {\n            removeEventListener(scope.domTarget, nativeEventName, mounted[nativeEventName], scope.listenerOpts[nativeEventName]);\n        }\n    }\n    scope.mounted = {};\n}\nvar DOMHandlerScope = (function () {\n    function DOMHandlerScope(domTarget, domHandlers) {\n        this.mounted = {};\n        this.listenerOpts = {};\n        this.touching = false;\n        this.domTarget = domTarget;\n        this.domHandlers = domHandlers;\n    }\n    return DOMHandlerScope;\n}());\nvar HandlerDomProxy = (function (_super) {\n    __extends(HandlerDomProxy, _super);\n    function HandlerDomProxy(dom, painterRoot) {\n        var _this = _super.call(this) || this;\n        _this.__pointerCapturing = false;\n        _this.dom = dom;\n        _this.painterRoot = painterRoot;\n        _this._localHandlerScope = new DOMHandlerScope(dom, localDOMHandlers);\n        if (globalEventSupported) {\n            _this._globalHandlerScope = new DOMHandlerScope(document, globalDOMHandlers);\n        }\n        mountLocalDOMEventListeners(_this, _this._localHandlerScope);\n        return _this;\n    }\n    HandlerDomProxy.prototype.dispose = function () {\n        unmountDOMEventListeners(this._localHandlerScope);\n        if (globalEventSupported) {\n            unmountDOMEventListeners(this._globalHandlerScope);\n        }\n    };\n    HandlerDomProxy.prototype.setCursor = function (cursorStyle) {\n        this.dom.style && (this.dom.style.cursor = cursorStyle || 'default');\n    };\n    HandlerDomProxy.prototype.__togglePointerCapture = function (isPointerCapturing) {\n        this.__mayPointerCapture = null;\n        if (globalEventSupported\n            && ((+this.__pointerCapturing) ^ (+isPointerCapturing))) {\n            this.__pointerCapturing = isPointerCapturing;\n            var globalHandlerScope = this._globalHandlerScope;\n            isPointerCapturing\n                ? mountGlobalDOMEventListeners(this, globalHandlerScope)\n                : unmountDOMEventListeners(globalHandlerScope);\n        }\n    };\n    return HandlerDomProxy;\n}(Eventful));\nexport default HandlerDomProxy;\n","import env from './core/env.js';\nvar dpr = 1;\nif (env.hasGlobalWindow) {\n    dpr = Math.max(window.devicePixelRatio\n        || (window.screen && window.screen.deviceXDPI / window.screen.logicalXDPI)\n        || 1, 1);\n}\nexport var debugMode = 0;\nexport var devicePixelRatio = dpr;\nexport var DARK_MODE_THRESHOLD = 0.4;\nexport var DARK_LABEL_COLOR = '#333';\nexport var LIGHT_LABEL_COLOR = '#ccc';\nexport var LIGHTER_LABEL_COLOR = '#eee';\n","import * as matrix from './matrix.js';\nimport * as vector from './vector.js';\nvar mIdentity = matrix.identity;\nvar EPSILON = 5e-5;\nfunction isNotAroundZero(val) {\n    return val > EPSILON || val < -EPSILON;\n}\nvar scaleTmp = [];\nvar tmpTransform = [];\nvar originTransform = matrix.create();\nvar abs = Math.abs;\nvar Transformable = (function () {\n    function Transformable() {\n    }\n    Transformable.prototype.getLocalTransform = function (m) {\n        return Transformable.getLocalTransform(this, m);\n    };\n    Transformable.prototype.setPosition = function (arr) {\n        this.x = arr[0];\n        this.y = arr[1];\n    };\n    Transformable.prototype.setScale = function (arr) {\n        this.scaleX = arr[0];\n        this.scaleY = arr[1];\n    };\n    Transformable.prototype.setSkew = function (arr) {\n        this.skewX = arr[0];\n        this.skewY = arr[1];\n    };\n    Transformable.prototype.setOrigin = function (arr) {\n        this.originX = arr[0];\n        this.originY = arr[1];\n    };\n    Transformable.prototype.needLocalTransform = function () {\n        return isNotAroundZero(this.rotation)\n            || isNotAroundZero(this.x)\n            || isNotAroundZero(this.y)\n            || isNotAroundZero(this.scaleX - 1)\n            || isNotAroundZero(this.scaleY - 1)\n            || isNotAroundZero(this.skewX)\n            || isNotAroundZero(this.skewY);\n    };\n    Transformable.prototype.updateTransform = function () {\n        var parentTransform = this.parent && this.parent.transform;\n        var needLocalTransform = this.needLocalTransform();\n        var m = this.transform;\n        if (!(needLocalTransform || parentTransform)) {\n            if (m) {\n                mIdentity(m);\n                this.invTransform = null;\n            }\n            return;\n        }\n        m = m || matrix.create();\n        if (needLocalTransform) {\n            this.getLocalTransform(m);\n        }\n        else {\n            mIdentity(m);\n        }\n        if (parentTransform) {\n            if (needLocalTransform) {\n                matrix.mul(m, parentTransform, m);\n            }\n            else {\n                matrix.copy(m, parentTransform);\n            }\n        }\n        this.transform = m;\n        this._resolveGlobalScaleRatio(m);\n    };\n    Transformable.prototype._resolveGlobalScaleRatio = function (m) {\n        var globalScaleRatio = this.globalScaleRatio;\n        if (globalScaleRatio != null && globalScaleRatio !== 1) {\n            this.getGlobalScale(scaleTmp);\n            var relX = scaleTmp[0] < 0 ? -1 : 1;\n            var relY = scaleTmp[1] < 0 ? -1 : 1;\n            var sx = ((scaleTmp[0] - relX) * globalScaleRatio + relX) / scaleTmp[0] || 0;\n            var sy = ((scaleTmp[1] - relY) * globalScaleRatio + relY) / scaleTmp[1] || 0;\n            m[0] *= sx;\n            m[1] *= sx;\n            m[2] *= sy;\n            m[3] *= sy;\n        }\n        this.invTransform = this.invTransform || matrix.create();\n        matrix.invert(this.invTransform, m);\n    };\n    Transformable.prototype.getComputedTransform = function () {\n        var transformNode = this;\n        var ancestors = [];\n        while (transformNode) {\n            ancestors.push(transformNode);\n            transformNode = transformNode.parent;\n        }\n        while (transformNode = ancestors.pop()) {\n            transformNode.updateTransform();\n        }\n        return this.transform;\n    };\n    Transformable.prototype.setLocalTransform = function (m) {\n        if (!m) {\n            return;\n        }\n        var sx = m[0] * m[0] + m[1] * m[1];\n        var sy = m[2] * m[2] + m[3] * m[3];\n        var rotation = Math.atan2(m[1], m[0]);\n        var shearX = Math.PI / 2 + rotation - Math.atan2(m[3], m[2]);\n        sy = Math.sqrt(sy) * Math.cos(shearX);\n        sx = Math.sqrt(sx);\n        this.skewX = shearX;\n        this.skewY = 0;\n        this.rotation = -rotation;\n        this.x = +m[4];\n        this.y = +m[5];\n        this.scaleX = sx;\n        this.scaleY = sy;\n        this.originX = 0;\n        this.originY = 0;\n    };\n    Transformable.prototype.decomposeTransform = function () {\n        if (!this.transform) {\n            return;\n        }\n        var parent = this.parent;\n        var m = this.transform;\n        if (parent && parent.transform) {\n            matrix.mul(tmpTransform, parent.invTransform, m);\n            m = tmpTransform;\n        }\n        var ox = this.originX;\n        var oy = this.originY;\n        if (ox || oy) {\n            originTransform[4] = ox;\n            originTransform[5] = oy;\n            matrix.mul(tmpTransform, m, originTransform);\n            tmpTransform[4] -= ox;\n            tmpTransform[5] -= oy;\n            m = tmpTransform;\n        }\n        this.setLocalTransform(m);\n    };\n    Transformable.prototype.getGlobalScale = function (out) {\n        var m = this.transform;\n        out = out || [];\n        if (!m) {\n            out[0] = 1;\n            out[1] = 1;\n            return out;\n        }\n        out[0] = Math.sqrt(m[0] * m[0] + m[1] * m[1]);\n        out[1] = Math.sqrt(m[2] * m[2] + m[3] * m[3]);\n        if (m[0] < 0) {\n            out[0] = -out[0];\n        }\n        if (m[3] < 0) {\n            out[1] = -out[1];\n        }\n        return out;\n    };\n    Transformable.prototype.transformCoordToLocal = function (x, y) {\n        var v2 = [x, y];\n        var invTransform = this.invTransform;\n        if (invTransform) {\n            vector.applyTransform(v2, v2, invTransform);\n        }\n        return v2;\n    };\n    Transformable.prototype.transformCoordToGlobal = function (x, y) {\n        var v2 = [x, y];\n        var transform = this.transform;\n        if (transform) {\n            vector.applyTransform(v2, v2, transform);\n        }\n        return v2;\n    };\n    Transformable.prototype.getLineScale = function () {\n        var m = this.transform;\n        return m && abs(m[0] - 1) > 1e-10 && abs(m[3] - 1) > 1e-10\n            ? Math.sqrt(abs(m[0] * m[3] - m[2] * m[1]))\n            : 1;\n    };\n    Transformable.prototype.copyTransform = function (source) {\n        copyTransform(this, source);\n    };\n    Transformable.getLocalTransform = function (target, m) {\n        m = m || [];\n        var ox = target.originX || 0;\n        var oy = target.originY || 0;\n        var sx = target.scaleX;\n        var sy = target.scaleY;\n        var ax = target.anchorX;\n        var ay = target.anchorY;\n        var rotation = target.rotation || 0;\n        var x = target.x;\n        var y = target.y;\n        var skewX = target.skewX ? Math.tan(target.skewX) : 0;\n        var skewY = target.skewY ? Math.tan(-target.skewY) : 0;\n        if (ox || oy || ax || ay) {\n            var dx = ox + ax;\n            var dy = oy + ay;\n            m[4] = -dx * sx - skewX * dy * sy;\n            m[5] = -dy * sy - skewY * dx * sx;\n        }\n        else {\n            m[4] = m[5] = 0;\n        }\n        m[0] = sx;\n        m[3] = sy;\n        m[1] = skewY * sx;\n        m[2] = skewX * sy;\n        rotation && matrix.rotate(m, m, rotation);\n        m[4] += ox + x;\n        m[5] += oy + y;\n        return m;\n    };\n    Transformable.initDefaultProps = (function () {\n        var proto = Transformable.prototype;\n        proto.scaleX =\n            proto.scaleY =\n                proto.globalScaleRatio = 1;\n        proto.x =\n            proto.y =\n                proto.originX =\n                    proto.originY =\n                        proto.skewX =\n                            proto.skewY =\n                                proto.rotation =\n                                    proto.anchorX =\n                                        proto.anchorY = 0;\n    })();\n    return Transformable;\n}());\n;\nexport var TRANSFORMABLE_PROPS = [\n    'x', 'y', 'originX', 'originY', 'anchorX', 'anchorY', 'rotation', 'scaleX', 'scaleY', 'skewX', 'skewY'\n];\nexport function copyTransform(target, source) {\n    for (var i = 0; i < TRANSFORMABLE_PROPS.length; i++) {\n        var propName = TRANSFORMABLE_PROPS[i];\n        target[propName] = source[propName];\n    }\n}\nexport default Transformable;\n","import BoundingRect from '../core/BoundingRect.js';\nimport LRU from '../core/LRU.js';\nimport { DEFAULT_FONT, platformApi } from '../core/platform.js';\nvar textWidthCache = {};\nexport function getWidth(text, font) {\n    font = font || DEFAULT_FONT;\n    var cacheOfFont = textWidthCache[font];\n    if (!cacheOfFont) {\n        cacheOfFont = textWidthCache[font] = new LRU(500);\n    }\n    var width = cacheOfFont.get(text);\n    if (width == null) {\n        width = platformApi.measureText(text, font).width;\n        cacheOfFont.put(text, width);\n    }\n    return width;\n}\nexport function innerGetBoundingRect(text, font, textAlign, textBaseline) {\n    var width = getWidth(text, font);\n    var height = getLineHeight(font);\n    var x = adjustTextX(0, width, textAlign);\n    var y = adjustTextY(0, height, textBaseline);\n    var rect = new BoundingRect(x, y, width, height);\n    return rect;\n}\nexport function getBoundingRect(text, font, textAlign, textBaseline) {\n    var textLines = ((text || '') + '').split('\\n');\n    var len = textLines.length;\n    if (len === 1) {\n        return innerGetBoundingRect(textLines[0], font, textAlign, textBaseline);\n    }\n    else {\n        var uniondRect = new BoundingRect(0, 0, 0, 0);\n        for (var i = 0; i < textLines.length; i++) {\n            var rect = innerGetBoundingRect(textLines[i], font, textAlign, textBaseline);\n            i === 0 ? uniondRect.copy(rect) : uniondRect.union(rect);\n        }\n        return uniondRect;\n    }\n}\nexport function adjustTextX(x, width, textAlign) {\n    if (textAlign === 'right') {\n        x -= width;\n    }\n    else if (textAlign === 'center') {\n        x -= width / 2;\n    }\n    return x;\n}\nexport function adjustTextY(y, height, verticalAlign) {\n    if (verticalAlign === 'middle') {\n        y -= height / 2;\n    }\n    else if (verticalAlign === 'bottom') {\n        y -= height;\n    }\n    return y;\n}\nexport function getLineHeight(font) {\n    return getWidth('国', font);\n}\nexport function measureText(text, font) {\n    return platformApi.measureText(text, font);\n}\nexport function parsePercent(value, maxValue) {\n    if (typeof value === 'string') {\n        if (value.lastIndexOf('%') >= 0) {\n            return parseFloat(value) / 100 * maxValue;\n        }\n        return parseFloat(value);\n    }\n    return value;\n}\nexport function calculateTextPosition(out, opts, rect) {\n    var textPosition = opts.position || 'inside';\n    var distance = opts.distance != null ? opts.distance : 5;\n    var height = rect.height;\n    var width = rect.width;\n    var halfHeight = height / 2;\n    var x = rect.x;\n    var y = rect.y;\n    var textAlign = 'left';\n    var textVerticalAlign = 'top';\n    if (textPosition instanceof Array) {\n        x += parsePercent(textPosition[0], rect.width);\n        y += parsePercent(textPosition[1], rect.height);\n        textAlign = null;\n        textVerticalAlign = null;\n    }\n    else {\n        switch (textPosition) {\n            case 'left':\n                x -= distance;\n                y += halfHeight;\n                textAlign = 'right';\n                textVerticalAlign = 'middle';\n                break;\n            case 'right':\n                x += distance + width;\n                y += halfHeight;\n                textVerticalAlign = 'middle';\n                break;\n            case 'top':\n                x += width / 2;\n                y -= distance;\n                textAlign = 'center';\n                textVerticalAlign = 'bottom';\n                break;\n            case 'bottom':\n                x += width / 2;\n                y += height + distance;\n                textAlign = 'center';\n                break;\n            case 'inside':\n                x += width / 2;\n                y += halfHeight;\n                textAlign = 'center';\n                textVerticalAlign = 'middle';\n                break;\n            case 'insideLeft':\n                x += distance;\n                y += halfHeight;\n                textVerticalAlign = 'middle';\n                break;\n            case 'insideRight':\n                x += width - distance;\n                y += halfHeight;\n                textAlign = 'right';\n                textVerticalAlign = 'middle';\n                break;\n            case 'insideTop':\n                x += width / 2;\n                y += distance;\n                textAlign = 'center';\n                break;\n            case 'insideBottom':\n                x += width / 2;\n                y += height - distance;\n                textAlign = 'center';\n                textVerticalAlign = 'bottom';\n                break;\n            case 'insideTopLeft':\n                x += distance;\n                y += distance;\n                break;\n            case 'insideTopRight':\n                x += width - distance;\n                y += distance;\n                textAlign = 'right';\n                break;\n            case 'insideBottomLeft':\n                x += distance;\n                y += height - distance;\n                textVerticalAlign = 'bottom';\n                break;\n            case 'insideBottomRight':\n                x += width - distance;\n                y += height - distance;\n                textAlign = 'right';\n                textVerticalAlign = 'bottom';\n                break;\n        }\n    }\n    out = out || {};\n    out.x = x;\n    out.y = y;\n    out.align = textAlign;\n    out.verticalAlign = textVerticalAlign;\n    return out;\n}\n","import Transformable, { TRANSFORMABLE_PROPS } from './core/Transformable.js';\nimport Animator, { cloneValue } from './animation/Animator.js';\nimport BoundingRect from './core/BoundingRect.js';\nimport Eventful from './core/Eventful.js';\nimport { calculateTextPosition, parsePercent } from './contain/text.js';\nimport { guid, isObject, keys, extend, indexOf, logError, mixin, isArrayLike, isTypedArray, isGradientObject, filter, reduce } from './core/util.js';\nimport { LIGHT_LABEL_COLOR, DARK_LABEL_COLOR } from './config.js';\nimport { parse, stringify } from './tool/color.js';\nimport { REDRAW_BIT } from './graphic/constants.js';\nexport var PRESERVED_NORMAL_STATE = '__zr_normal__';\nvar PRIMARY_STATES_KEYS = TRANSFORMABLE_PROPS.concat(['ignore']);\nvar DEFAULT_ANIMATABLE_MAP = reduce(TRANSFORMABLE_PROPS, function (obj, key) {\n    obj[key] = true;\n    return obj;\n}, { ignore: false });\nvar tmpTextPosCalcRes = {};\nvar tmpBoundingRect = new BoundingRect(0, 0, 0, 0);\nvar Element = (function () {\n    function Element(props) {\n        this.id = guid();\n        this.animators = [];\n        this.currentStates = [];\n        this.states = {};\n        this._init(props);\n    }\n    Element.prototype._init = function (props) {\n        this.attr(props);\n    };\n    Element.prototype.drift = function (dx, dy, e) {\n        switch (this.draggable) {\n            case 'horizontal':\n                dy = 0;\n                break;\n            case 'vertical':\n                dx = 0;\n                break;\n        }\n        var m = this.transform;\n        if (!m) {\n            m = this.transform = [1, 0, 0, 1, 0, 0];\n        }\n        m[4] += dx;\n        m[5] += dy;\n        this.decomposeTransform();\n        this.markRedraw();\n    };\n    Element.prototype.beforeUpdate = function () { };\n    Element.prototype.afterUpdate = function () { };\n    Element.prototype.update = function () {\n        this.updateTransform();\n        if (this.__dirty) {\n            this.updateInnerText();\n        }\n    };\n    Element.prototype.updateInnerText = function (forceUpdate) {\n        var textEl = this._textContent;\n        if (textEl && (!textEl.ignore || forceUpdate)) {\n            if (!this.textConfig) {\n                this.textConfig = {};\n            }\n            var textConfig = this.textConfig;\n            var isLocal = textConfig.local;\n            var innerTransformable = textEl.innerTransformable;\n            var textAlign = void 0;\n            var textVerticalAlign = void 0;\n            var textStyleChanged = false;\n            innerTransformable.parent = isLocal ? this : null;\n            var innerOrigin = false;\n            innerTransformable.copyTransform(textEl);\n            if (textConfig.position != null) {\n                var layoutRect = tmpBoundingRect;\n                if (textConfig.layoutRect) {\n                    layoutRect.copy(textConfig.layoutRect);\n                }\n                else {\n                    layoutRect.copy(this.getBoundingRect());\n                }\n                if (!isLocal) {\n                    layoutRect.applyTransform(this.transform);\n                }\n                if (this.calculateTextPosition) {\n                    this.calculateTextPosition(tmpTextPosCalcRes, textConfig, layoutRect);\n                }\n                else {\n                    calculateTextPosition(tmpTextPosCalcRes, textConfig, layoutRect);\n                }\n                innerTransformable.x = tmpTextPosCalcRes.x;\n                innerTransformable.y = tmpTextPosCalcRes.y;\n                textAlign = tmpTextPosCalcRes.align;\n                textVerticalAlign = tmpTextPosCalcRes.verticalAlign;\n                var textOrigin = textConfig.origin;\n                if (textOrigin && textConfig.rotation != null) {\n                    var relOriginX = void 0;\n                    var relOriginY = void 0;\n                    if (textOrigin === 'center') {\n                        relOriginX = layoutRect.width * 0.5;\n                        relOriginY = layoutRect.height * 0.5;\n                    }\n                    else {\n                        relOriginX = parsePercent(textOrigin[0], layoutRect.width);\n                        relOriginY = parsePercent(textOrigin[1], layoutRect.height);\n                    }\n                    innerOrigin = true;\n                    innerTransformable.originX = -innerTransformable.x + relOriginX + (isLocal ? 0 : layoutRect.x);\n                    innerTransformable.originY = -innerTransformable.y + relOriginY + (isLocal ? 0 : layoutRect.y);\n                }\n            }\n            if (textConfig.rotation != null) {\n                innerTransformable.rotation = textConfig.rotation;\n            }\n            var textOffset = textConfig.offset;\n            if (textOffset) {\n                innerTransformable.x += textOffset[0];\n                innerTransformable.y += textOffset[1];\n                if (!innerOrigin) {\n                    innerTransformable.originX = -textOffset[0];\n                    innerTransformable.originY = -textOffset[1];\n                }\n            }\n            var isInside = textConfig.inside == null\n                ? (typeof textConfig.position === 'string' && textConfig.position.indexOf('inside') >= 0)\n                : textConfig.inside;\n            var innerTextDefaultStyle = this._innerTextDefaultStyle || (this._innerTextDefaultStyle = {});\n            var textFill = void 0;\n            var textStroke = void 0;\n            var autoStroke = void 0;\n            if (isInside && this.canBeInsideText()) {\n                textFill = textConfig.insideFill;\n                textStroke = textConfig.insideStroke;\n                if (textFill == null || textFill === 'auto') {\n                    textFill = this.getInsideTextFill();\n                }\n                if (textStroke == null || textStroke === 'auto') {\n                    textStroke = this.getInsideTextStroke(textFill);\n                    autoStroke = true;\n                }\n            }\n            else {\n                textFill = textConfig.outsideFill;\n                textStroke = textConfig.outsideStroke;\n                if (textFill == null || textFill === 'auto') {\n                    textFill = this.getOutsideFill();\n                }\n                if (textStroke == null || textStroke === 'auto') {\n                    textStroke = this.getOutsideStroke(textFill);\n                    autoStroke = true;\n                }\n            }\n            textFill = textFill || '#000';\n            if (textFill !== innerTextDefaultStyle.fill\n                || textStroke !== innerTextDefaultStyle.stroke\n                || autoStroke !== innerTextDefaultStyle.autoStroke\n                || textAlign !== innerTextDefaultStyle.align\n                || textVerticalAlign !== innerTextDefaultStyle.verticalAlign) {\n                textStyleChanged = true;\n                innerTextDefaultStyle.fill = textFill;\n                innerTextDefaultStyle.stroke = textStroke;\n                innerTextDefaultStyle.autoStroke = autoStroke;\n                innerTextDefaultStyle.align = textAlign;\n                innerTextDefaultStyle.verticalAlign = textVerticalAlign;\n                textEl.setDefaultTextStyle(innerTextDefaultStyle);\n            }\n            textEl.__dirty |= REDRAW_BIT;\n            if (textStyleChanged) {\n                textEl.dirtyStyle(true);\n            }\n        }\n    };\n    Element.prototype.canBeInsideText = function () {\n        return true;\n    };\n    Element.prototype.getInsideTextFill = function () {\n        return '#fff';\n    };\n    Element.prototype.getInsideTextStroke = function (textFill) {\n        return '#000';\n    };\n    Element.prototype.getOutsideFill = function () {\n        return this.__zr && this.__zr.isDarkMode() ? LIGHT_LABEL_COLOR : DARK_LABEL_COLOR;\n    };\n    Element.prototype.getOutsideStroke = function (textFill) {\n        var backgroundColor = this.__zr && this.__zr.getBackgroundColor();\n        var colorArr = typeof backgroundColor === 'string' && parse(backgroundColor);\n        if (!colorArr) {\n            colorArr = [255, 255, 255, 1];\n        }\n        var alpha = colorArr[3];\n        var isDark = this.__zr.isDarkMode();\n        for (var i = 0; i < 3; i++) {\n            colorArr[i] = colorArr[i] * alpha + (isDark ? 0 : 255) * (1 - alpha);\n        }\n        colorArr[3] = 1;\n        return stringify(colorArr, 'rgba');\n    };\n    Element.prototype.traverse = function (cb, context) { };\n    Element.prototype.attrKV = function (key, value) {\n        if (key === 'textConfig') {\n            this.setTextConfig(value);\n        }\n        else if (key === 'textContent') {\n            this.setTextContent(value);\n        }\n        else if (key === 'clipPath') {\n            this.setClipPath(value);\n        }\n        else if (key === 'extra') {\n            this.extra = this.extra || {};\n            extend(this.extra, value);\n        }\n        else {\n            this[key] = value;\n        }\n    };\n    Element.prototype.hide = function () {\n        this.ignore = true;\n        this.markRedraw();\n    };\n    Element.prototype.show = function () {\n        this.ignore = false;\n        this.markRedraw();\n    };\n    Element.prototype.attr = function (keyOrObj, value) {\n        if (typeof keyOrObj === 'string') {\n            this.attrKV(keyOrObj, value);\n        }\n        else if (isObject(keyOrObj)) {\n            var obj = keyOrObj;\n            var keysArr = keys(obj);\n            for (var i = 0; i < keysArr.length; i++) {\n                var key = keysArr[i];\n                this.attrKV(key, keyOrObj[key]);\n            }\n        }\n        this.markRedraw();\n        return this;\n    };\n    Element.prototype.saveCurrentToNormalState = function (toState) {\n        this._innerSaveToNormal(toState);\n        var normalState = this._normalState;\n        for (var i = 0; i < this.animators.length; i++) {\n            var animator = this.animators[i];\n            var fromStateTransition = animator.__fromStateTransition;\n            if (animator.getLoop() || fromStateTransition && fromStateTransition !== PRESERVED_NORMAL_STATE) {\n                continue;\n            }\n            var targetName = animator.targetName;\n            var target = targetName\n                ? normalState[targetName] : normalState;\n            animator.saveTo(target);\n        }\n    };\n    Element.prototype._innerSaveToNormal = function (toState) {\n        var normalState = this._normalState;\n        if (!normalState) {\n            normalState = this._normalState = {};\n        }\n        if (toState.textConfig && !normalState.textConfig) {\n            normalState.textConfig = this.textConfig;\n        }\n        this._savePrimaryToNormal(toState, normalState, PRIMARY_STATES_KEYS);\n    };\n    Element.prototype._savePrimaryToNormal = function (toState, normalState, primaryKeys) {\n        for (var i = 0; i < primaryKeys.length; i++) {\n            var key = primaryKeys[i];\n            if (toState[key] != null && !(key in normalState)) {\n                normalState[key] = this[key];\n            }\n        }\n    };\n    Element.prototype.hasState = function () {\n        return this.currentStates.length > 0;\n    };\n    Element.prototype.getState = function (name) {\n        return this.states[name];\n    };\n    Element.prototype.ensureState = function (name) {\n        var states = this.states;\n        if (!states[name]) {\n            states[name] = {};\n        }\n        return states[name];\n    };\n    Element.prototype.clearStates = function (noAnimation) {\n        this.useState(PRESERVED_NORMAL_STATE, false, noAnimation);\n    };\n    Element.prototype.useState = function (stateName, keepCurrentStates, noAnimation, forceUseHoverLayer) {\n        var toNormalState = stateName === PRESERVED_NORMAL_STATE;\n        var hasStates = this.hasState();\n        if (!hasStates && toNormalState) {\n            return;\n        }\n        var currentStates = this.currentStates;\n        var animationCfg = this.stateTransition;\n        if (indexOf(currentStates, stateName) >= 0 && (keepCurrentStates || currentStates.length === 1)) {\n            return;\n        }\n        var state;\n        if (this.stateProxy && !toNormalState) {\n            state = this.stateProxy(stateName);\n        }\n        if (!state) {\n            state = (this.states && this.states[stateName]);\n        }\n        if (!state && !toNormalState) {\n            logError(\"State \" + stateName + \" not exists.\");\n            return;\n        }\n        if (!toNormalState) {\n            this.saveCurrentToNormalState(state);\n        }\n        var useHoverLayer = !!((state && state.hoverLayer) || forceUseHoverLayer);\n        if (useHoverLayer) {\n            this._toggleHoverLayerFlag(true);\n        }\n        this._applyStateObj(stateName, state, this._normalState, keepCurrentStates, !noAnimation && !this.__inHover && animationCfg && animationCfg.duration > 0, animationCfg);\n        var textContent = this._textContent;\n        var textGuide = this._textGuide;\n        if (textContent) {\n            textContent.useState(stateName, keepCurrentStates, noAnimation, useHoverLayer);\n        }\n        if (textGuide) {\n            textGuide.useState(stateName, keepCurrentStates, noAnimation, useHoverLayer);\n        }\n        if (toNormalState) {\n            this.currentStates = [];\n            this._normalState = {};\n        }\n        else {\n            if (!keepCurrentStates) {\n                this.currentStates = [stateName];\n            }\n            else {\n                this.currentStates.push(stateName);\n            }\n        }\n        this._updateAnimationTargets();\n        this.markRedraw();\n        if (!useHoverLayer && this.__inHover) {\n            this._toggleHoverLayerFlag(false);\n            this.__dirty &= ~REDRAW_BIT;\n        }\n        return state;\n    };\n    Element.prototype.useStates = function (states, noAnimation, forceUseHoverLayer) {\n        if (!states.length) {\n            this.clearStates();\n        }\n        else {\n            var stateObjects = [];\n            var currentStates = this.currentStates;\n            var len = states.length;\n            var notChange = len === currentStates.length;\n            if (notChange) {\n                for (var i = 0; i < len; i++) {\n                    if (states[i] !== currentStates[i]) {\n                        notChange = false;\n                        break;\n                    }\n                }\n            }\n            if (notChange) {\n                return;\n            }\n            for (var i = 0; i < len; i++) {\n                var stateName = states[i];\n                var stateObj = void 0;\n                if (this.stateProxy) {\n                    stateObj = this.stateProxy(stateName, states);\n                }\n                if (!stateObj) {\n                    stateObj = this.states[stateName];\n                }\n                if (stateObj) {\n                    stateObjects.push(stateObj);\n                }\n            }\n            var lastStateObj = stateObjects[len - 1];\n            var useHoverLayer = !!((lastStateObj && lastStateObj.hoverLayer) || forceUseHoverLayer);\n            if (useHoverLayer) {\n                this._toggleHoverLayerFlag(true);\n            }\n            var mergedState = this._mergeStates(stateObjects);\n            var animationCfg = this.stateTransition;\n            this.saveCurrentToNormalState(mergedState);\n            this._applyStateObj(states.join(','), mergedState, this._normalState, false, !noAnimation && !this.__inHover && animationCfg && animationCfg.duration > 0, animationCfg);\n            var textContent = this._textContent;\n            var textGuide = this._textGuide;\n            if (textContent) {\n                textContent.useStates(states, noAnimation, useHoverLayer);\n            }\n            if (textGuide) {\n                textGuide.useStates(states, noAnimation, useHoverLayer);\n            }\n            this._updateAnimationTargets();\n            this.currentStates = states.slice();\n            this.markRedraw();\n            if (!useHoverLayer && this.__inHover) {\n                this._toggleHoverLayerFlag(false);\n                this.__dirty &= ~REDRAW_BIT;\n            }\n        }\n    };\n    Element.prototype._updateAnimationTargets = function () {\n        for (var i = 0; i < this.animators.length; i++) {\n            var animator = this.animators[i];\n            if (animator.targetName) {\n                animator.changeTarget(this[animator.targetName]);\n            }\n        }\n    };\n    Element.prototype.removeState = function (state) {\n        var idx = indexOf(this.currentStates, state);\n        if (idx >= 0) {\n            var currentStates = this.currentStates.slice();\n            currentStates.splice(idx, 1);\n            this.useStates(currentStates);\n        }\n    };\n    Element.prototype.replaceState = function (oldState, newState, forceAdd) {\n        var currentStates = this.currentStates.slice();\n        var idx = indexOf(currentStates, oldState);\n        var newStateExists = indexOf(currentStates, newState) >= 0;\n        if (idx >= 0) {\n            if (!newStateExists) {\n                currentStates[idx] = newState;\n            }\n            else {\n                currentStates.splice(idx, 1);\n            }\n        }\n        else if (forceAdd && !newStateExists) {\n            currentStates.push(newState);\n        }\n        this.useStates(currentStates);\n    };\n    Element.prototype.toggleState = function (state, enable) {\n        if (enable) {\n            this.useState(state, true);\n        }\n        else {\n            this.removeState(state);\n        }\n    };\n    Element.prototype._mergeStates = function (states) {\n        var mergedState = {};\n        var mergedTextConfig;\n        for (var i = 0; i < states.length; i++) {\n            var state = states[i];\n            extend(mergedState, state);\n            if (state.textConfig) {\n                mergedTextConfig = mergedTextConfig || {};\n                extend(mergedTextConfig, state.textConfig);\n            }\n        }\n        if (mergedTextConfig) {\n            mergedState.textConfig = mergedTextConfig;\n        }\n        return mergedState;\n    };\n    Element.prototype._applyStateObj = function (stateName, state, normalState, keepCurrentStates, transition, animationCfg) {\n        var needsRestoreToNormal = !(state && keepCurrentStates);\n        if (state && state.textConfig) {\n            this.textConfig = extend({}, keepCurrentStates ? this.textConfig : normalState.textConfig);\n            extend(this.textConfig, state.textConfig);\n        }\n        else if (needsRestoreToNormal) {\n            if (normalState.textConfig) {\n                this.textConfig = normalState.textConfig;\n            }\n        }\n        var transitionTarget = {};\n        var hasTransition = false;\n        for (var i = 0; i < PRIMARY_STATES_KEYS.length; i++) {\n            var key = PRIMARY_STATES_KEYS[i];\n            var propNeedsTransition = transition && DEFAULT_ANIMATABLE_MAP[key];\n            if (state && state[key] != null) {\n                if (propNeedsTransition) {\n                    hasTransition = true;\n                    transitionTarget[key] = state[key];\n                }\n                else {\n                    this[key] = state[key];\n                }\n            }\n            else if (needsRestoreToNormal) {\n                if (normalState[key] != null) {\n                    if (propNeedsTransition) {\n                        hasTransition = true;\n                        transitionTarget[key] = normalState[key];\n                    }\n                    else {\n                        this[key] = normalState[key];\n                    }\n                }\n            }\n        }\n        if (!transition) {\n            for (var i = 0; i < this.animators.length; i++) {\n                var animator = this.animators[i];\n                var targetName = animator.targetName;\n                if (!animator.getLoop()) {\n                    animator.__changeFinalValue(targetName\n                        ? (state || normalState)[targetName]\n                        : (state || normalState));\n                }\n            }\n        }\n        if (hasTransition) {\n            this._transitionState(stateName, transitionTarget, animationCfg);\n        }\n    };\n    Element.prototype._attachComponent = function (componentEl) {\n        if (componentEl.__zr && !componentEl.__hostTarget) {\n            if (process.env.NODE_ENV !== 'production') {\n                throw new Error('Text element has been added to zrender.');\n            }\n            return;\n        }\n        if (componentEl === this) {\n            if (process.env.NODE_ENV !== 'production') {\n                throw new Error('Recursive component attachment.');\n            }\n            return;\n        }\n        var zr = this.__zr;\n        if (zr) {\n            componentEl.addSelfToZr(zr);\n        }\n        componentEl.__zr = zr;\n        componentEl.__hostTarget = this;\n    };\n    Element.prototype._detachComponent = function (componentEl) {\n        if (componentEl.__zr) {\n            componentEl.removeSelfFromZr(componentEl.__zr);\n        }\n        componentEl.__zr = null;\n        componentEl.__hostTarget = null;\n    };\n    Element.prototype.getClipPath = function () {\n        return this._clipPath;\n    };\n    Element.prototype.setClipPath = function (clipPath) {\n        if (this._clipPath && this._clipPath !== clipPath) {\n            this.removeClipPath();\n        }\n        this._attachComponent(clipPath);\n        this._clipPath = clipPath;\n        this.markRedraw();\n    };\n    Element.prototype.removeClipPath = function () {\n        var clipPath = this._clipPath;\n        if (clipPath) {\n            this._detachComponent(clipPath);\n            this._clipPath = null;\n            this.markRedraw();\n        }\n    };\n    Element.prototype.getTextContent = function () {\n        return this._textContent;\n    };\n    Element.prototype.setTextContent = function (textEl) {\n        var previousTextContent = this._textContent;\n        if (previousTextContent === textEl) {\n            return;\n        }\n        if (previousTextContent && previousTextContent !== textEl) {\n            this.removeTextContent();\n        }\n        if (process.env.NODE_ENV !== 'production') {\n            if (textEl.__zr && !textEl.__hostTarget) {\n                throw new Error('Text element has been added to zrender.');\n            }\n        }\n        textEl.innerTransformable = new Transformable();\n        this._attachComponent(textEl);\n        this._textContent = textEl;\n        this.markRedraw();\n    };\n    Element.prototype.setTextConfig = function (cfg) {\n        if (!this.textConfig) {\n            this.textConfig = {};\n        }\n        extend(this.textConfig, cfg);\n        this.markRedraw();\n    };\n    Element.prototype.removeTextConfig = function () {\n        this.textConfig = null;\n        this.markRedraw();\n    };\n    Element.prototype.removeTextContent = function () {\n        var textEl = this._textContent;\n        if (textEl) {\n            textEl.innerTransformable = null;\n            this._detachComponent(textEl);\n            this._textContent = null;\n            this._innerTextDefaultStyle = null;\n            this.markRedraw();\n        }\n    };\n    Element.prototype.getTextGuideLine = function () {\n        return this._textGuide;\n    };\n    Element.prototype.setTextGuideLine = function (guideLine) {\n        if (this._textGuide && this._textGuide !== guideLine) {\n            this.removeTextGuideLine();\n        }\n        this._attachComponent(guideLine);\n        this._textGuide = guideLine;\n        this.markRedraw();\n    };\n    Element.prototype.removeTextGuideLine = function () {\n        var textGuide = this._textGuide;\n        if (textGuide) {\n            this._detachComponent(textGuide);\n            this._textGuide = null;\n            this.markRedraw();\n        }\n    };\n    Element.prototype.markRedraw = function () {\n        this.__dirty |= REDRAW_BIT;\n        var zr = this.__zr;\n        if (zr) {\n            if (this.__inHover) {\n                zr.refreshHover();\n            }\n            else {\n                zr.refresh();\n            }\n        }\n        if (this.__hostTarget) {\n            this.__hostTarget.markRedraw();\n        }\n    };\n    Element.prototype.dirty = function () {\n        this.markRedraw();\n    };\n    Element.prototype._toggleHoverLayerFlag = function (inHover) {\n        this.__inHover = inHover;\n        var textContent = this._textContent;\n        var textGuide = this._textGuide;\n        if (textContent) {\n            textContent.__inHover = inHover;\n        }\n        if (textGuide) {\n            textGuide.__inHover = inHover;\n        }\n    };\n    Element.prototype.addSelfToZr = function (zr) {\n        if (this.__zr === zr) {\n            return;\n        }\n        this.__zr = zr;\n        var animators = this.animators;\n        if (animators) {\n            for (var i = 0; i < animators.length; i++) {\n                zr.animation.addAnimator(animators[i]);\n            }\n        }\n        if (this._clipPath) {\n            this._clipPath.addSelfToZr(zr);\n        }\n        if (this._textContent) {\n            this._textContent.addSelfToZr(zr);\n        }\n        if (this._textGuide) {\n            this._textGuide.addSelfToZr(zr);\n        }\n    };\n    Element.prototype.removeSelfFromZr = function (zr) {\n        if (!this.__zr) {\n            return;\n        }\n        this.__zr = null;\n        var animators = this.animators;\n        if (animators) {\n            for (var i = 0; i < animators.length; i++) {\n                zr.animation.removeAnimator(animators[i]);\n            }\n        }\n        if (this._clipPath) {\n            this._clipPath.removeSelfFromZr(zr);\n        }\n        if (this._textContent) {\n            this._textContent.removeSelfFromZr(zr);\n        }\n        if (this._textGuide) {\n            this._textGuide.removeSelfFromZr(zr);\n        }\n    };\n    Element.prototype.animate = function (key, loop, allowDiscreteAnimation) {\n        var target = key ? this[key] : this;\n        if (process.env.NODE_ENV !== 'production') {\n            if (!target) {\n                logError('Property \"'\n                    + key\n                    + '\" is not existed in element '\n                    + this.id);\n                return;\n            }\n        }\n        var animator = new Animator(target, loop, allowDiscreteAnimation);\n        key && (animator.targetName = key);\n        this.addAnimator(animator, key);\n        return animator;\n    };\n    Element.prototype.addAnimator = function (animator, key) {\n        var zr = this.__zr;\n        var el = this;\n        animator.during(function () {\n            el.updateDuringAnimation(key);\n        }).done(function () {\n            var animators = el.animators;\n            var idx = indexOf(animators, animator);\n            if (idx >= 0) {\n                animators.splice(idx, 1);\n            }\n        });\n        this.animators.push(animator);\n        if (zr) {\n            zr.animation.addAnimator(animator);\n        }\n        zr && zr.wakeUp();\n    };\n    Element.prototype.updateDuringAnimation = function (key) {\n        this.markRedraw();\n    };\n    Element.prototype.stopAnimation = function (scope, forwardToLast) {\n        var animators = this.animators;\n        var len = animators.length;\n        var leftAnimators = [];\n        for (var i = 0; i < len; i++) {\n            var animator = animators[i];\n            if (!scope || scope === animator.scope) {\n                animator.stop(forwardToLast);\n            }\n            else {\n                leftAnimators.push(animator);\n            }\n        }\n        this.animators = leftAnimators;\n        return this;\n    };\n    Element.prototype.animateTo = function (target, cfg, animationProps) {\n        animateTo(this, target, cfg, animationProps);\n    };\n    Element.prototype.animateFrom = function (target, cfg, animationProps) {\n        animateTo(this, target, cfg, animationProps, true);\n    };\n    Element.prototype._transitionState = function (stateName, target, cfg, animationProps) {\n        var animators = animateTo(this, target, cfg, animationProps);\n        for (var i = 0; i < animators.length; i++) {\n            animators[i].__fromStateTransition = stateName;\n        }\n    };\n    Element.prototype.getBoundingRect = function () {\n        return null;\n    };\n    Element.prototype.getPaintRect = function () {\n        return null;\n    };\n    Element.initDefaultProps = (function () {\n        var elProto = Element.prototype;\n        elProto.type = 'element';\n        elProto.name = '';\n        elProto.ignore =\n            elProto.silent =\n                elProto.isGroup =\n                    elProto.draggable =\n                        elProto.dragging =\n                            elProto.ignoreClip =\n                                elProto.__inHover = false;\n        elProto.__dirty = REDRAW_BIT;\n        var logs = {};\n        function logDeprecatedError(key, xKey, yKey) {\n            if (!logs[key + xKey + yKey]) {\n                console.warn(\"DEPRECATED: '\" + key + \"' has been deprecated. use '\" + xKey + \"', '\" + yKey + \"' instead\");\n                logs[key + xKey + yKey] = true;\n            }\n        }\n        function createLegacyProperty(key, privateKey, xKey, yKey) {\n            Object.defineProperty(elProto, key, {\n                get: function () {\n                    if (process.env.NODE_ENV !== 'production') {\n                        logDeprecatedError(key, xKey, yKey);\n                    }\n                    if (!this[privateKey]) {\n                        var pos = this[privateKey] = [];\n                        enhanceArray(this, pos);\n                    }\n                    return this[privateKey];\n                },\n                set: function (pos) {\n                    if (process.env.NODE_ENV !== 'production') {\n                        logDeprecatedError(key, xKey, yKey);\n                    }\n                    this[xKey] = pos[0];\n                    this[yKey] = pos[1];\n                    this[privateKey] = pos;\n                    enhanceArray(this, pos);\n                }\n            });\n            function enhanceArray(self, pos) {\n                Object.defineProperty(pos, 0, {\n                    get: function () {\n                        return self[xKey];\n                    },\n                    set: function (val) {\n                        self[xKey] = val;\n                    }\n                });\n                Object.defineProperty(pos, 1, {\n                    get: function () {\n                        return self[yKey];\n                    },\n                    set: function (val) {\n                        self[yKey] = val;\n                    }\n                });\n            }\n        }\n        if (Object.defineProperty) {\n            createLegacyProperty('position', '_legacyPos', 'x', 'y');\n            createLegacyProperty('scale', '_legacyScale', 'scaleX', 'scaleY');\n            createLegacyProperty('origin', '_legacyOrigin', 'originX', 'originY');\n        }\n    })();\n    return Element;\n}());\nmixin(Element, Eventful);\nmixin(Element, Transformable);\nfunction animateTo(animatable, target, cfg, animationProps, reverse) {\n    cfg = cfg || {};\n    var animators = [];\n    animateToShallow(animatable, '', animatable, target, cfg, animationProps, animators, reverse);\n    var finishCount = animators.length;\n    var doneHappened = false;\n    var cfgDone = cfg.done;\n    var cfgAborted = cfg.aborted;\n    var doneCb = function () {\n        doneHappened = true;\n        finishCount--;\n        if (finishCount <= 0) {\n            doneHappened\n                ? (cfgDone && cfgDone())\n                : (cfgAborted && cfgAborted());\n        }\n    };\n    var abortedCb = function () {\n        finishCount--;\n        if (finishCount <= 0) {\n            doneHappened\n                ? (cfgDone && cfgDone())\n                : (cfgAborted && cfgAborted());\n        }\n    };\n    if (!finishCount) {\n        cfgDone && cfgDone();\n    }\n    if (animators.length > 0 && cfg.during) {\n        animators[0].during(function (target, percent) {\n            cfg.during(percent);\n        });\n    }\n    for (var i = 0; i < animators.length; i++) {\n        var animator = animators[i];\n        if (doneCb) {\n            animator.done(doneCb);\n        }\n        if (abortedCb) {\n            animator.aborted(abortedCb);\n        }\n        if (cfg.force) {\n            animator.duration(cfg.duration);\n        }\n        animator.start(cfg.easing);\n    }\n    return animators;\n}\nfunction copyArrShallow(source, target, len) {\n    for (var i = 0; i < len; i++) {\n        source[i] = target[i];\n    }\n}\nfunction is2DArray(value) {\n    return isArrayLike(value[0]);\n}\nfunction copyValue(target, source, key) {\n    if (isArrayLike(source[key])) {\n        if (!isArrayLike(target[key])) {\n            target[key] = [];\n        }\n        if (isTypedArray(source[key])) {\n            var len = source[key].length;\n            if (target[key].length !== len) {\n                target[key] = new (source[key].constructor)(len);\n                copyArrShallow(target[key], source[key], len);\n            }\n        }\n        else {\n            var sourceArr = source[key];\n            var targetArr = target[key];\n            var len0 = sourceArr.length;\n            if (is2DArray(sourceArr)) {\n                var len1 = sourceArr[0].length;\n                for (var i = 0; i < len0; i++) {\n                    if (!targetArr[i]) {\n                        targetArr[i] = Array.prototype.slice.call(sourceArr[i]);\n                    }\n                    else {\n                        copyArrShallow(targetArr[i], sourceArr[i], len1);\n                    }\n                }\n            }\n            else {\n                copyArrShallow(targetArr, sourceArr, len0);\n            }\n            targetArr.length = sourceArr.length;\n        }\n    }\n    else {\n        target[key] = source[key];\n    }\n}\nfunction isValueSame(val1, val2) {\n    return val1 === val2\n        || isArrayLike(val1) && isArrayLike(val2) && is1DArraySame(val1, val2);\n}\nfunction is1DArraySame(arr0, arr1) {\n    var len = arr0.length;\n    if (len !== arr1.length) {\n        return false;\n    }\n    for (var i = 0; i < len; i++) {\n        if (arr0[i] !== arr1[i]) {\n            return false;\n        }\n    }\n    return true;\n}\nfunction animateToShallow(animatable, topKey, animateObj, target, cfg, animationProps, animators, reverse) {\n    var targetKeys = keys(target);\n    var duration = cfg.duration;\n    var delay = cfg.delay;\n    var additive = cfg.additive;\n    var setToFinal = cfg.setToFinal;\n    var animateAll = !isObject(animationProps);\n    var existsAnimators = animatable.animators;\n    var animationKeys = [];\n    for (var k = 0; k < targetKeys.length; k++) {\n        var innerKey = targetKeys[k];\n        var targetVal = target[innerKey];\n        if (targetVal != null && animateObj[innerKey] != null\n            && (animateAll || animationProps[innerKey])) {\n            if (isObject(targetVal)\n                && !isArrayLike(targetVal)\n                && !isGradientObject(targetVal)) {\n                if (topKey) {\n                    if (!reverse) {\n                        animateObj[innerKey] = targetVal;\n                        animatable.updateDuringAnimation(topKey);\n                    }\n                    continue;\n                }\n                animateToShallow(animatable, innerKey, animateObj[innerKey], targetVal, cfg, animationProps && animationProps[innerKey], animators, reverse);\n            }\n            else {\n                animationKeys.push(innerKey);\n            }\n        }\n        else if (!reverse) {\n            animateObj[innerKey] = targetVal;\n            animatable.updateDuringAnimation(topKey);\n            animationKeys.push(innerKey);\n        }\n    }\n    var keyLen = animationKeys.length;\n    if (!additive && keyLen) {\n        for (var i = 0; i < existsAnimators.length; i++) {\n            var animator = existsAnimators[i];\n            if (animator.targetName === topKey) {\n                var allAborted = animator.stopTracks(animationKeys);\n                if (allAborted) {\n                    var idx = indexOf(existsAnimators, animator);\n                    existsAnimators.splice(idx, 1);\n                }\n            }\n        }\n    }\n    if (!cfg.force) {\n        animationKeys = filter(animationKeys, function (key) { return !isValueSame(target[key], animateObj[key]); });\n        keyLen = animationKeys.length;\n    }\n    if (keyLen > 0\n        || (cfg.force && !animators.length)) {\n        var revertedSource = void 0;\n        var reversedTarget = void 0;\n        var sourceClone = void 0;\n        if (reverse) {\n            reversedTarget = {};\n            if (setToFinal) {\n                revertedSource = {};\n            }\n            for (var i = 0; i < keyLen; i++) {\n                var innerKey = animationKeys[i];\n                reversedTarget[innerKey] = animateObj[innerKey];\n                if (setToFinal) {\n                    revertedSource[innerKey] = target[innerKey];\n                }\n                else {\n                    animateObj[innerKey] = target[innerKey];\n                }\n            }\n        }\n        else if (setToFinal) {\n            sourceClone = {};\n            for (var i = 0; i < keyLen; i++) {\n                var innerKey = animationKeys[i];\n                sourceClone[innerKey] = cloneValue(animateObj[innerKey]);\n                copyValue(animateObj, target, innerKey);\n            }\n        }\n        var animator = new Animator(animateObj, false, false, additive ? filter(existsAnimators, function (animator) { return animator.targetName === topKey; }) : null);\n        animator.targetName = topKey;\n        if (cfg.scope) {\n            animator.scope = cfg.scope;\n        }\n        if (setToFinal && revertedSource) {\n            animator.whenWithKeys(0, revertedSource, animationKeys);\n        }\n        if (sourceClone) {\n            animator.whenWithKeys(0, sourceClone, animationKeys);\n        }\n        animator.whenWithKeys(duration == null ? 500 : duration, reverse ? reversedTarget : target, animationKeys).delay(delay || 0);\n        animatable.addAnimator(animator, topKey);\n        animators.push(animator);\n    }\n}\nexport default Element;\n","import { __extends } from \"tslib\";\nimport * as zrUtil from '../core/util.js';\nimport Element from '../Element.js';\nimport BoundingRect from '../core/BoundingRect.js';\nvar Group = (function (_super) {\n    __extends(Group, _super);\n    function Group(opts) {\n        var _this = _super.call(this) || this;\n        _this.isGroup = true;\n        _this._children = [];\n        _this.attr(opts);\n        return _this;\n    }\n    Group.prototype.childrenRef = function () {\n        return this._children;\n    };\n    Group.prototype.children = function () {\n        return this._children.slice();\n    };\n    Group.prototype.childAt = function (idx) {\n        return this._children[idx];\n    };\n    Group.prototype.childOfName = function (name) {\n        var children = this._children;\n        for (var i = 0; i < children.length; i++) {\n            if (children[i].name === name) {\n                return children[i];\n            }\n        }\n    };\n    Group.prototype.childCount = function () {\n        return this._children.length;\n    };\n    Group.prototype.add = function (child) {\n        if (child) {\n            if (child !== this && child.parent !== this) {\n                this._children.push(child);\n                this._doAdd(child);\n            }\n            if (process.env.NODE_ENV !== 'production') {\n                if (child.__hostTarget) {\n                    throw 'This elemenet has been used as an attachment';\n                }\n            }\n        }\n        return this;\n    };\n    Group.prototype.addBefore = function (child, nextSibling) {\n        if (child && child !== this && child.parent !== this\n            && nextSibling && nextSibling.parent === this) {\n            var children = this._children;\n            var idx = children.indexOf(nextSibling);\n            if (idx >= 0) {\n                children.splice(idx, 0, child);\n                this._doAdd(child);\n            }\n        }\n        return this;\n    };\n    Group.prototype.replace = function (oldChild, newChild) {\n        var idx = zrUtil.indexOf(this._children, oldChild);\n        if (idx >= 0) {\n            this.replaceAt(newChild, idx);\n        }\n        return this;\n    };\n    Group.prototype.replaceAt = function (child, index) {\n        var children = this._children;\n        var old = children[index];\n        if (child && child !== this && child.parent !== this && child !== old) {\n            children[index] = child;\n            old.parent = null;\n            var zr = this.__zr;\n            if (zr) {\n                old.removeSelfFromZr(zr);\n            }\n            this._doAdd(child);\n        }\n        return this;\n    };\n    Group.prototype._doAdd = function (child) {\n        if (child.parent) {\n            child.parent.remove(child);\n        }\n        child.parent = this;\n        var zr = this.__zr;\n        if (zr && zr !== child.__zr) {\n            child.addSelfToZr(zr);\n        }\n        zr && zr.refresh();\n    };\n    Group.prototype.remove = function (child) {\n        var zr = this.__zr;\n        var children = this._children;\n        var idx = zrUtil.indexOf(children, child);\n        if (idx < 0) {\n            return this;\n        }\n        children.splice(idx, 1);\n        child.parent = null;\n        if (zr) {\n            child.removeSelfFromZr(zr);\n        }\n        zr && zr.refresh();\n        return this;\n    };\n    Group.prototype.removeAll = function () {\n        var children = this._children;\n        var zr = this.__zr;\n        for (var i = 0; i < children.length; i++) {\n            var child = children[i];\n            if (zr) {\n                child.removeSelfFromZr(zr);\n            }\n            child.parent = null;\n        }\n        children.length = 0;\n        return this;\n    };\n    Group.prototype.eachChild = function (cb, context) {\n        var children = this._children;\n        for (var i = 0; i < children.length; i++) {\n            var child = children[i];\n            cb.call(context, child, i);\n        }\n        return this;\n    };\n    Group.prototype.traverse = function (cb, context) {\n        for (var i = 0; i < this._children.length; i++) {\n            var child = this._children[i];\n            var stopped = cb.call(context, child);\n            if (child.isGroup && !stopped) {\n                child.traverse(cb, context);\n            }\n        }\n        return this;\n    };\n    Group.prototype.addSelfToZr = function (zr) {\n        _super.prototype.addSelfToZr.call(this, zr);\n        for (var i = 0; i < this._children.length; i++) {\n            var child = this._children[i];\n            child.addSelfToZr(zr);\n        }\n    };\n    Group.prototype.removeSelfFromZr = function (zr) {\n        _super.prototype.removeSelfFromZr.call(this, zr);\n        for (var i = 0; i < this._children.length; i++) {\n            var child = this._children[i];\n            child.removeSelfFromZr(zr);\n        }\n    };\n    Group.prototype.getBoundingRect = function (includeChildren) {\n        var tmpRect = new BoundingRect(0, 0, 0, 0);\n        var children = includeChildren || this._children;\n        var tmpMat = [];\n        var rect = null;\n        for (var i = 0; i < children.length; i++) {\n            var child = children[i];\n            if (child.ignore || child.invisible) {\n                continue;\n            }\n            var childRect = child.getBoundingRect();\n            var transform = child.getLocalTransform(tmpMat);\n            if (transform) {\n                BoundingRect.applyTransform(tmpRect, childRect, transform);\n                rect = rect || tmpRect.clone();\n                rect.union(tmpRect);\n            }\n            else {\n                rect = rect || childRect.clone();\n                rect.union(childRect);\n            }\n        }\n        return rect || tmpRect;\n    };\n    return Group;\n}(Element));\nGroup.prototype.type = 'group';\nexport default Group;\n","/*!\n* ZRender, a high performance 2d drawing library.\n*\n* Copyright (c) 2013, Baidu Inc.\n* All rights reserved.\n*\n* LICENSE\n* https://github.com/ecomfe/zrender/blob/master/LICENSE.txt\n*/\nimport env from './core/env.js';\nimport * as zrUtil from './core/util.js';\nimport Handler from './Handler.js';\nimport Storage from './Storage.js';\nimport Animation, { getTime } from './animation/Animation.js';\nimport HandlerProxy from './dom/HandlerProxy.js';\nimport { lum } from './tool/color.js';\nimport { DARK_MODE_THRESHOLD } from './config.js';\nimport Group from './graphic/Group.js';\nvar painterCtors = {};\nvar instances = {};\nfunction delInstance(id) {\n    delete instances[id];\n}\nfunction isDarkMode(backgroundColor) {\n    if (!backgroundColor) {\n        return false;\n    }\n    if (typeof backgroundColor === 'string') {\n        return lum(backgroundColor, 1) < DARK_MODE_THRESHOLD;\n    }\n    else if (backgroundColor.colorStops) {\n        var colorStops = backgroundColor.colorStops;\n        var totalLum = 0;\n        var len = colorStops.length;\n        for (var i = 0; i < len; i++) {\n            totalLum += lum(colorStops[i].color, 1);\n        }\n        totalLum /= len;\n        return totalLum < DARK_MODE_THRESHOLD;\n    }\n    return false;\n}\nvar ZRender = (function () {\n    function ZRender(id, dom, opts) {\n        var _this = this;\n        this._sleepAfterStill = 10;\n        this._stillFrameAccum = 0;\n        this._needsRefresh = true;\n        this._needsRefreshHover = true;\n        this._darkMode = false;\n        opts = opts || {};\n        this.dom = dom;\n        this.id = id;\n        var storage = new Storage();\n        var rendererType = opts.renderer || 'canvas';\n        if (!painterCtors[rendererType]) {\n            rendererType = zrUtil.keys(painterCtors)[0];\n        }\n        if (process.env.NODE_ENV !== 'production') {\n            if (!painterCtors[rendererType]) {\n                throw new Error(\"Renderer '\" + rendererType + \"' is not imported. Please import it first.\");\n            }\n        }\n        opts.useDirtyRect = opts.useDirtyRect == null\n            ? false\n            : opts.useDirtyRect;\n        var painter = new painterCtors[rendererType](dom, storage, opts, id);\n        var ssrMode = opts.ssr || painter.ssrOnly;\n        this.storage = storage;\n        this.painter = painter;\n        var handerProxy = (!env.node && !env.worker && !ssrMode)\n            ? new HandlerProxy(painter.getViewportRoot(), painter.root)\n            : null;\n        var useCoarsePointer = opts.useCoarsePointer;\n        var usePointerSize = (useCoarsePointer == null || useCoarsePointer === 'auto')\n            ? env.touchEventsSupported\n            : !!useCoarsePointer;\n        var defaultPointerSize = 44;\n        var pointerSize;\n        if (usePointerSize) {\n            pointerSize = zrUtil.retrieve2(opts.pointerSize, defaultPointerSize);\n        }\n        this.handler = new Handler(storage, painter, handerProxy, painter.root, pointerSize);\n        this.animation = new Animation({\n            stage: {\n                update: ssrMode ? null : function () { return _this._flush(true); }\n            }\n        });\n        if (!ssrMode) {\n            this.animation.start();\n        }\n    }\n    ZRender.prototype.add = function (el) {\n        if (!el) {\n            return;\n        }\n        this.storage.addRoot(el);\n        el.addSelfToZr(this);\n        this.refresh();\n    };\n    ZRender.prototype.remove = function (el) {\n        if (!el) {\n            return;\n        }\n        this.storage.delRoot(el);\n        el.removeSelfFromZr(this);\n        this.refresh();\n    };\n    ZRender.prototype.configLayer = function (zLevel, config) {\n        if (this.painter.configLayer) {\n            this.painter.configLayer(zLevel, config);\n        }\n        this.refresh();\n    };\n    ZRender.prototype.setBackgroundColor = function (backgroundColor) {\n        if (this.painter.setBackgroundColor) {\n            this.painter.setBackgroundColor(backgroundColor);\n        }\n        this.refresh();\n        this._backgroundColor = backgroundColor;\n        this._darkMode = isDarkMode(backgroundColor);\n    };\n    ZRender.prototype.getBackgroundColor = function () {\n        return this._backgroundColor;\n    };\n    ZRender.prototype.setDarkMode = function (darkMode) {\n        this._darkMode = darkMode;\n    };\n    ZRender.prototype.isDarkMode = function () {\n        return this._darkMode;\n    };\n    ZRender.prototype.refreshImmediately = function (fromInside) {\n        if (!fromInside) {\n            this.animation.update(true);\n        }\n        this._needsRefresh = false;\n        this.painter.refresh();\n        this._needsRefresh = false;\n    };\n    ZRender.prototype.refresh = function () {\n        this._needsRefresh = true;\n        this.animation.start();\n    };\n    ZRender.prototype.flush = function () {\n        this._flush(false);\n    };\n    ZRender.prototype._flush = function (fromInside) {\n        var triggerRendered;\n        var start = getTime();\n        if (this._needsRefresh) {\n            triggerRendered = true;\n            this.refreshImmediately(fromInside);\n        }\n        if (this._needsRefreshHover) {\n            triggerRendered = true;\n            this.refreshHoverImmediately();\n        }\n        var end = getTime();\n        if (triggerRendered) {\n            this._stillFrameAccum = 0;\n            this.trigger('rendered', {\n                elapsedTime: end - start\n            });\n        }\n        else if (this._sleepAfterStill > 0) {\n            this._stillFrameAccum++;\n            if (this._stillFrameAccum > this._sleepAfterStill) {\n                this.animation.stop();\n            }\n        }\n    };\n    ZRender.prototype.setSleepAfterStill = function (stillFramesCount) {\n        this._sleepAfterStill = stillFramesCount;\n    };\n    ZRender.prototype.wakeUp = function () {\n        this.animation.start();\n        this._stillFrameAccum = 0;\n    };\n    ZRender.prototype.refreshHover = function () {\n        this._needsRefreshHover = true;\n    };\n    ZRender.prototype.refreshHoverImmediately = function () {\n        this._needsRefreshHover = false;\n        if (this.painter.refreshHover && this.painter.getType() === 'canvas') {\n            this.painter.refreshHover();\n        }\n    };\n    ZRender.prototype.resize = function (opts) {\n        opts = opts || {};\n        this.painter.resize(opts.width, opts.height);\n        this.handler.resize();\n    };\n    ZRender.prototype.clearAnimation = function () {\n        this.animation.clear();\n    };\n    ZRender.prototype.getWidth = function () {\n        return this.painter.getWidth();\n    };\n    ZRender.prototype.getHeight = function () {\n        return this.painter.getHeight();\n    };\n    ZRender.prototype.setCursorStyle = function (cursorStyle) {\n        this.handler.setCursorStyle(cursorStyle);\n    };\n    ZRender.prototype.findHover = function (x, y) {\n        return this.handler.findHover(x, y);\n    };\n    ZRender.prototype.on = function (eventName, eventHandler, context) {\n        this.handler.on(eventName, eventHandler, context);\n        return this;\n    };\n    ZRender.prototype.off = function (eventName, eventHandler) {\n        this.handler.off(eventName, eventHandler);\n    };\n    ZRender.prototype.trigger = function (eventName, event) {\n        this.handler.trigger(eventName, event);\n    };\n    ZRender.prototype.clear = function () {\n        var roots = this.storage.getRoots();\n        for (var i = 0; i < roots.length; i++) {\n            if (roots[i] instanceof Group) {\n                roots[i].removeSelfFromZr(this);\n            }\n        }\n        this.storage.delAllRoots();\n        this.painter.clear();\n    };\n    ZRender.prototype.dispose = function () {\n        this.animation.stop();\n        this.clear();\n        this.storage.dispose();\n        this.painter.dispose();\n        this.handler.dispose();\n        this.animation =\n            this.storage =\n                this.painter =\n                    this.handler = null;\n        delInstance(this.id);\n    };\n    return ZRender;\n}());\nexport function init(dom, opts) {\n    var zr = new ZRender(zrUtil.guid(), dom, opts);\n    instances[zr.id] = zr;\n    return zr;\n}\nexport function dispose(zr) {\n    zr.dispose();\n}\nexport function disposeAll() {\n    for (var key in instances) {\n        if (instances.hasOwnProperty(key)) {\n            instances[key].dispose();\n        }\n    }\n    instances = {};\n}\nexport function getInstance(id) {\n    return instances[id];\n}\nexport function registerPainter(name, Ctor) {\n    painterCtors[name] = Ctor;\n}\nexport var version = '5.4.4';\n;\n","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\n\n/*\r\n* A third-party license is embedded for some of the code in this file:\r\n* The method \"quantile\" was copied from \"d3.js\".\r\n* (See more details in the comment of the method below.)\r\n* The use of the source code of this file is also subject to the terms\r\n* and consitions of the license of \"d3.js\" (BSD-3Clause, see\r\n* </licenses/LICENSE-d3>).\r\n*/\nimport * as zrUtil from 'zrender/lib/core/util.js';\nvar RADIAN_EPSILON = 1e-4; // Although chrome already enlarge this number to 100 for `toFixed`, but\n// we sill follow the spec for compatibility.\n\nvar ROUND_SUPPORTED_PRECISION_MAX = 20;\n\nfunction _trim(str) {\n  return str.replace(/^\\s+|\\s+$/g, '');\n}\n/**\r\n * Linear mapping a value from domain to range\r\n * @param  val\r\n * @param  domain Domain extent domain[0] can be bigger than domain[1]\r\n * @param  range  Range extent range[0] can be bigger than range[1]\r\n * @param  clamp Default to be false\r\n */\n\n\nexport function linearMap(val, domain, range, clamp) {\n  var d0 = domain[0];\n  var d1 = domain[1];\n  var r0 = range[0];\n  var r1 = range[1];\n  var subDomain = d1 - d0;\n  var subRange = r1 - r0;\n\n  if (subDomain === 0) {\n    return subRange === 0 ? r0 : (r0 + r1) / 2;\n  } // Avoid accuracy problem in edge, such as\n  // 146.39 - 62.83 === 83.55999999999999.\n  // See echarts/test/ut/spec/util/number.js#linearMap#accuracyError\n  // It is a little verbose for efficiency considering this method\n  // is a hotspot.\n\n\n  if (clamp) {\n    if (subDomain > 0) {\n      if (val <= d0) {\n        return r0;\n      } else if (val >= d1) {\n        return r1;\n      }\n    } else {\n      if (val >= d0) {\n        return r0;\n      } else if (val <= d1) {\n        return r1;\n      }\n    }\n  } else {\n    if (val === d0) {\n      return r0;\n    }\n\n    if (val === d1) {\n      return r1;\n    }\n  }\n\n  return (val - d0) / subDomain * subRange + r0;\n}\n/**\r\n * Convert a percent string to absolute number.\r\n * Returns NaN if percent is not a valid string or number\r\n */\n\nexport function parsePercent(percent, all) {\n  switch (percent) {\n    case 'center':\n    case 'middle':\n      percent = '50%';\n      break;\n\n    case 'left':\n    case 'top':\n      percent = '0%';\n      break;\n\n    case 'right':\n    case 'bottom':\n      percent = '100%';\n      break;\n  }\n\n  if (zrUtil.isString(percent)) {\n    if (_trim(percent).match(/%$/)) {\n      return parseFloat(percent) / 100 * all;\n    }\n\n    return parseFloat(percent);\n  }\n\n  return percent == null ? NaN : +percent;\n}\nexport function round(x, precision, returnStr) {\n  if (precision == null) {\n    precision = 10;\n  } // Avoid range error\n\n\n  precision = Math.min(Math.max(0, precision), ROUND_SUPPORTED_PRECISION_MAX); // PENDING: 1.005.toFixed(2) is '1.00' rather than '1.01'\n\n  x = (+x).toFixed(precision);\n  return returnStr ? x : +x;\n}\n/**\r\n * Inplacd asc sort arr.\r\n * The input arr will be modified.\r\n */\n\nexport function asc(arr) {\n  arr.sort(function (a, b) {\n    return a - b;\n  });\n  return arr;\n}\n/**\r\n * Get precision.\r\n */\n\nexport function getPrecision(val) {\n  val = +val;\n\n  if (isNaN(val)) {\n    return 0;\n  } // It is much faster than methods converting number to string as follows\n  //      let tmp = val.toString();\n  //      return tmp.length - 1 - tmp.indexOf('.');\n  // especially when precision is low\n  // Notice:\n  // (1) If the loop count is over about 20, it is slower than `getPrecisionSafe`.\n  //     (see https://jsbench.me/2vkpcekkvw/1)\n  // (2) If the val is less than for example 1e-15, the result may be incorrect.\n  //     (see test/ut/spec/util/number.test.ts `getPrecision_equal_random`)\n\n\n  if (val > 1e-14) {\n    var e = 1;\n\n    for (var i = 0; i < 15; i++, e *= 10) {\n      if (Math.round(val * e) / e === val) {\n        return i;\n      }\n    }\n  }\n\n  return getPrecisionSafe(val);\n}\n/**\r\n * Get precision with slow but safe method\r\n */\n\nexport function getPrecisionSafe(val) {\n  // toLowerCase for: '3.4E-12'\n  var str = val.toString().toLowerCase(); // Consider scientific notation: '3.4e-12' '3.4e+12'\n\n  var eIndex = str.indexOf('e');\n  var exp = eIndex > 0 ? +str.slice(eIndex + 1) : 0;\n  var significandPartLen = eIndex > 0 ? eIndex : str.length;\n  var dotIndex = str.indexOf('.');\n  var decimalPartLen = dotIndex < 0 ? 0 : significandPartLen - 1 - dotIndex;\n  return Math.max(0, decimalPartLen - exp);\n}\n/**\r\n * Minimal dicernible data precisioin according to a single pixel.\r\n */\n\nexport function getPixelPrecision(dataExtent, pixelExtent) {\n  var log = Math.log;\n  var LN10 = Math.LN10;\n  var dataQuantity = Math.floor(log(dataExtent[1] - dataExtent[0]) / LN10);\n  var sizeQuantity = Math.round(log(Math.abs(pixelExtent[1] - pixelExtent[0])) / LN10); // toFixed() digits argument must be between 0 and 20.\n\n  var precision = Math.min(Math.max(-dataQuantity + sizeQuantity, 0), 20);\n  return !isFinite(precision) ? 20 : precision;\n}\n/**\r\n * Get a data of given precision, assuring the sum of percentages\r\n * in valueList is 1.\r\n * The largest remainder method is used.\r\n * https://en.wikipedia.org/wiki/Largest_remainder_method\r\n *\r\n * @param valueList a list of all data\r\n * @param idx index of the data to be processed in valueList\r\n * @param precision integer number showing digits of precision\r\n * @return percent ranging from 0 to 100\r\n */\n\nexport function getPercentWithPrecision(valueList, idx, precision) {\n  if (!valueList[idx]) {\n    return 0;\n  }\n\n  var seats = getPercentSeats(valueList, precision);\n  return seats[idx] || 0;\n}\n/**\r\n * Get a data of given precision, assuring the sum of percentages\r\n * in valueList is 1.\r\n * The largest remainder method is used.\r\n * https://en.wikipedia.org/wiki/Largest_remainder_method\r\n *\r\n * @param valueList a list of all data\r\n * @param precision integer number showing digits of precision\r\n * @return {Array<number>}\r\n */\n\nexport function getPercentSeats(valueList, precision) {\n  var sum = zrUtil.reduce(valueList, function (acc, val) {\n    return acc + (isNaN(val) ? 0 : val);\n  }, 0);\n\n  if (sum === 0) {\n    return [];\n  }\n\n  var digits = Math.pow(10, precision);\n  var votesPerQuota = zrUtil.map(valueList, function (val) {\n    return (isNaN(val) ? 0 : val) / sum * digits * 100;\n  });\n  var targetSeats = digits * 100;\n  var seats = zrUtil.map(votesPerQuota, function (votes) {\n    // Assign automatic seats.\n    return Math.floor(votes);\n  });\n  var currentSum = zrUtil.reduce(seats, function (acc, val) {\n    return acc + val;\n  }, 0);\n  var remainder = zrUtil.map(votesPerQuota, function (votes, idx) {\n    return votes - seats[idx];\n  }); // Has remainding votes.\n\n  while (currentSum < targetSeats) {\n    // Find next largest remainder.\n    var max = Number.NEGATIVE_INFINITY;\n    var maxId = null;\n\n    for (var i = 0, len = remainder.length; i < len; ++i) {\n      if (remainder[i] > max) {\n        max = remainder[i];\n        maxId = i;\n      }\n    } // Add a vote to max remainder.\n\n\n    ++seats[maxId];\n    remainder[maxId] = 0;\n    ++currentSum;\n  }\n\n  return zrUtil.map(seats, function (seat) {\n    return seat / digits;\n  });\n}\n/**\r\n * Solve the floating point adding problem like 0.1 + 0.2 === 0.30000000000000004\r\n * See <http://0.30000000000000004.com/>\r\n */\n\nexport function addSafe(val0, val1) {\n  var maxPrecision = Math.max(getPrecision(val0), getPrecision(val1)); // const multiplier = Math.pow(10, maxPrecision);\n  // return (Math.round(val0 * multiplier) + Math.round(val1 * multiplier)) / multiplier;\n\n  var sum = val0 + val1; // // PENDING: support more?\n\n  return maxPrecision > ROUND_SUPPORTED_PRECISION_MAX ? sum : round(sum, maxPrecision);\n} // Number.MAX_SAFE_INTEGER, ie do not support.\n\nexport var MAX_SAFE_INTEGER = 9007199254740991;\n/**\r\n * To 0 - 2 * PI, considering negative radian.\r\n */\n\nexport function remRadian(radian) {\n  var pi2 = Math.PI * 2;\n  return (radian % pi2 + pi2) % pi2;\n}\n/**\r\n * @param {type} radian\r\n * @return {boolean}\r\n */\n\nexport function isRadianAroundZero(val) {\n  return val > -RADIAN_EPSILON && val < RADIAN_EPSILON;\n} // eslint-disable-next-line\n\nvar TIME_REG = /^(?:(\\d{4})(?:[-\\/](\\d{1,2})(?:[-\\/](\\d{1,2})(?:[T ](\\d{1,2})(?::(\\d{1,2})(?::(\\d{1,2})(?:[.,](\\d+))?)?)?(Z|[\\+\\-]\\d\\d:?\\d\\d)?)?)?)?)?$/; // jshint ignore:line\n\n/**\r\n * @param value valid type: number | string | Date, otherwise return `new Date(NaN)`\r\n *   These values can be accepted:\r\n *   + An instance of Date, represent a time in its own time zone.\r\n *   + Or string in a subset of ISO 8601, only including:\r\n *     + only year, month, date: '2012-03', '2012-03-01', '2012-03-01 05', '2012-03-01 05:06',\r\n *     + separated with T or space: '2012-03-01T12:22:33.123', '2012-03-01 12:22:33.123',\r\n *     + time zone: '2012-03-01T12:22:33Z', '2012-03-01T12:22:33+8000', '2012-03-01T12:22:33-05:00',\r\n *     all of which will be treated as local time if time zone is not specified\r\n *     (see <https://momentjs.com/>).\r\n *   + Or other string format, including (all of which will be treated as local time):\r\n *     '2012', '2012-3-1', '2012/3/1', '2012/03/01',\r\n *     '2009/6/12 2:00', '2009/6/12 2:05:08', '2009/6/12 2:05:08.123'\r\n *   + a timestamp, which represent a time in UTC.\r\n * @return date Never be null/undefined. If invalid, return `new Date(NaN)`.\r\n */\n\nexport function parseDate(value) {\n  if (value instanceof Date) {\n    return value;\n  } else if (zrUtil.isString(value)) {\n    // Different browsers parse date in different way, so we parse it manually.\n    // Some other issues:\n    // new Date('1970-01-01') is UTC,\n    // new Date('1970/01/01') and new Date('1970-1-01') is local.\n    // See issue #3623\n    var match = TIME_REG.exec(value);\n\n    if (!match) {\n      // return Invalid Date.\n      return new Date(NaN);\n    } // Use local time when no timezone offset is specified.\n\n\n    if (!match[8]) {\n      // match[n] can only be string or undefined.\n      // But take care of '12' + 1 => '121'.\n      return new Date(+match[1], +(match[2] || 1) - 1, +match[3] || 1, +match[4] || 0, +(match[5] || 0), +match[6] || 0, match[7] ? +match[7].substring(0, 3) : 0);\n    } // Timezoneoffset of Javascript Date has considered DST (Daylight Saving Time,\n    // https://tc39.github.io/ecma262/#sec-daylight-saving-time-adjustment).\n    // For example, system timezone is set as \"Time Zone: America/Toronto\",\n    // then these code will get different result:\n    // `new Date(1478411999999).getTimezoneOffset();  // get 240`\n    // `new Date(1478412000000).getTimezoneOffset();  // get 300`\n    // So we should not use `new Date`, but use `Date.UTC`.\n    else {\n        var hour = +match[4] || 0;\n\n        if (match[8].toUpperCase() !== 'Z') {\n          hour -= +match[8].slice(0, 3);\n        }\n\n        return new Date(Date.UTC(+match[1], +(match[2] || 1) - 1, +match[3] || 1, hour, +(match[5] || 0), +match[6] || 0, match[7] ? +match[7].substring(0, 3) : 0));\n      }\n  } else if (value == null) {\n    return new Date(NaN);\n  }\n\n  return new Date(Math.round(value));\n}\n/**\r\n * Quantity of a number. e.g. 0.1, 1, 10, 100\r\n *\r\n * @param val\r\n * @return\r\n */\n\nexport function quantity(val) {\n  return Math.pow(10, quantityExponent(val));\n}\n/**\r\n * Exponent of the quantity of a number\r\n * e.g., 1234 equals to 1.234*10^3, so quantityExponent(1234) is 3\r\n *\r\n * @param val non-negative value\r\n * @return\r\n */\n\nexport function quantityExponent(val) {\n  if (val === 0) {\n    return 0;\n  }\n\n  var exp = Math.floor(Math.log(val) / Math.LN10);\n  /**\r\n   * exp is expected to be the rounded-down result of the base-10 log of val.\r\n   * But due to the precision loss with Math.log(val), we need to restore it\r\n   * using 10^exp to make sure we can get val back from exp. #11249\r\n   */\n\n  if (val / Math.pow(10, exp) >= 10) {\n    exp++;\n  }\n\n  return exp;\n}\n/**\r\n * find a “nice” number approximately equal to x. Round the number if round = true,\r\n * take ceiling if round = false. The primary observation is that the “nicest”\r\n * numbers in decimal are 1, 2, and 5, and all power-of-ten multiples of these numbers.\r\n *\r\n * See \"Nice Numbers for Graph Labels\" of Graphic Gems.\r\n *\r\n * @param  val Non-negative value.\r\n * @param  round\r\n * @return Niced number\r\n */\n\nexport function nice(val, round) {\n  var exponent = quantityExponent(val);\n  var exp10 = Math.pow(10, exponent);\n  var f = val / exp10; // 1 <= f < 10\n\n  var nf;\n\n  if (round) {\n    if (f < 1.5) {\n      nf = 1;\n    } else if (f < 2.5) {\n      nf = 2;\n    } else if (f < 4) {\n      nf = 3;\n    } else if (f < 7) {\n      nf = 5;\n    } else {\n      nf = 10;\n    }\n  } else {\n    if (f < 1) {\n      nf = 1;\n    } else if (f < 2) {\n      nf = 2;\n    } else if (f < 3) {\n      nf = 3;\n    } else if (f < 5) {\n      nf = 5;\n    } else {\n      nf = 10;\n    }\n  }\n\n  val = nf * exp10; // Fix 3 * 0.1 === 0.30000000000000004 issue (see IEEE 754).\n  // 20 is the uppper bound of toFixed.\n\n  return exponent >= -20 ? +val.toFixed(exponent < 0 ? -exponent : 0) : val;\n}\n/**\r\n * This code was copied from \"d3.js\"\r\n * <https://github.com/d3/d3/blob/9cc9a875e636a1dcf36cc1e07bdf77e1ad6e2c74/src/arrays/quantile.js>.\r\n * See the license statement at the head of this file.\r\n * @param ascArr\r\n */\n\nexport function quantile(ascArr, p) {\n  var H = (ascArr.length - 1) * p + 1;\n  var h = Math.floor(H);\n  var v = +ascArr[h - 1];\n  var e = H - h;\n  return e ? v + e * (ascArr[h] - v) : v;\n}\n/**\r\n * Order intervals asc, and split them when overlap.\r\n * expect(numberUtil.reformIntervals([\r\n *     {interval: [18, 62], close: [1, 1]},\r\n *     {interval: [-Infinity, -70], close: [0, 0]},\r\n *     {interval: [-70, -26], close: [1, 1]},\r\n *     {interval: [-26, 18], close: [1, 1]},\r\n *     {interval: [62, 150], close: [1, 1]},\r\n *     {interval: [106, 150], close: [1, 1]},\r\n *     {interval: [150, Infinity], close: [0, 0]}\r\n * ])).toEqual([\r\n *     {interval: [-Infinity, -70], close: [0, 0]},\r\n *     {interval: [-70, -26], close: [1, 1]},\r\n *     {interval: [-26, 18], close: [0, 1]},\r\n *     {interval: [18, 62], close: [0, 1]},\r\n *     {interval: [62, 150], close: [0, 1]},\r\n *     {interval: [150, Infinity], close: [0, 0]}\r\n * ]);\r\n * @param list, where `close` mean open or close\r\n *        of the interval, and Infinity can be used.\r\n * @return The origin list, which has been reformed.\r\n */\n\nexport function reformIntervals(list) {\n  list.sort(function (a, b) {\n    return littleThan(a, b, 0) ? -1 : 1;\n  });\n  var curr = -Infinity;\n  var currClose = 1;\n\n  for (var i = 0; i < list.length;) {\n    var interval = list[i].interval;\n    var close_1 = list[i].close;\n\n    for (var lg = 0; lg < 2; lg++) {\n      if (interval[lg] <= curr) {\n        interval[lg] = curr;\n        close_1[lg] = !lg ? 1 - currClose : 1;\n      }\n\n      curr = interval[lg];\n      currClose = close_1[lg];\n    }\n\n    if (interval[0] === interval[1] && close_1[0] * close_1[1] !== 1) {\n      list.splice(i, 1);\n    } else {\n      i++;\n    }\n  }\n\n  return list;\n\n  function littleThan(a, b, lg) {\n    return a.interval[lg] < b.interval[lg] || a.interval[lg] === b.interval[lg] && (a.close[lg] - b.close[lg] === (!lg ? 1 : -1) || !lg && littleThan(a, b, 1));\n  }\n}\n/**\r\n * [Numeric is defined as]:\r\n *     `parseFloat(val) == val`\r\n * For example:\r\n * numeric:\r\n *     typeof number except NaN, '-123', '123', '2e3', '-2e3', '011', 'Infinity', Infinity,\r\n *     and they rounded by white-spaces or line-terminal like ' -123 \\n ' (see es spec)\r\n * not-numeric:\r\n *     null, undefined, [], {}, true, false, 'NaN', NaN, '123ab',\r\n *     empty string, string with only white-spaces or line-terminal (see es spec),\r\n *     0x12, '0x12', '-0x12', 012, '012', '-012',\r\n *     non-string, ...\r\n *\r\n * @test See full test cases in `test/ut/spec/util/number.js`.\r\n * @return Must be a typeof number. If not numeric, return NaN.\r\n */\n\nexport function numericToNumber(val) {\n  var valFloat = parseFloat(val);\n  return valFloat == val // eslint-disable-line eqeqeq\n  && (valFloat !== 0 || !zrUtil.isString(val) || val.indexOf('x') <= 0) // For case ' 0x0 '.\n  ? valFloat : NaN;\n}\n/**\r\n * Definition of \"numeric\": see `numericToNumber`.\r\n */\n\nexport function isNumeric(val) {\n  return !isNaN(numericToNumber(val));\n}\n/**\r\n * Use random base to prevent users hard code depending on\r\n * this auto generated marker id.\r\n * @return An positive integer.\r\n */\n\nexport function getRandomIdBase() {\n  return Math.round(Math.random() * 9);\n}\n/**\r\n * Get the greatest common divisor.\r\n *\r\n * @param {number} a one number\r\n * @param {number} b the other number\r\n */\n\nexport function getGreatestCommonDividor(a, b) {\n  if (b === 0) {\n    return a;\n  }\n\n  return getGreatestCommonDividor(b, a % b);\n}\n/**\r\n * Get the least common multiple.\r\n *\r\n * @param {number} a one number\r\n * @param {number} b the other number\r\n */\n\nexport function getLeastCommonMultiple(a, b) {\n  if (a == null) {\n    return b;\n  }\n\n  if (b == null) {\n    return a;\n  }\n\n  return a * b / getGreatestCommonDividor(a, b);\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { each, isObject, isArray, createHashMap, map, assert, isString, indexOf, isStringSafe, isNumber } from 'zrender/lib/core/util.js';\nimport env from 'zrender/lib/core/env.js';\nimport { isNumeric, getRandomIdBase, getPrecision, round } from './number.js';\nimport { warn } from './log.js';\n\nfunction interpolateNumber(p0, p1, percent) {\n  return (p1 - p0) * percent + p0;\n}\n/**\r\n * Make the name displayable. But we should\r\n * make sure it is not duplicated with user\r\n * specified name, so use '\\0';\r\n */\n\n\nvar DUMMY_COMPONENT_NAME_PREFIX = 'series\\0';\nvar INTERNAL_COMPONENT_ID_PREFIX = '\\0_ec_\\0';\n/**\r\n * If value is not array, then translate it to array.\r\n * @param  {*} value\r\n * @return {Array} [value] or value\r\n */\n\nexport function normalizeToArray(value) {\n  return value instanceof Array ? value : value == null ? [] : [value];\n}\n/**\r\n * Sync default option between normal and emphasis like `position` and `show`\r\n * In case some one will write code like\r\n *     label: {\r\n *          show: false,\r\n *          position: 'outside',\r\n *          fontSize: 18\r\n *     },\r\n *     emphasis: {\r\n *          label: { show: true }\r\n *     }\r\n */\n\nexport function defaultEmphasis(opt, key, subOpts) {\n  // Caution: performance sensitive.\n  if (opt) {\n    opt[key] = opt[key] || {};\n    opt.emphasis = opt.emphasis || {};\n    opt.emphasis[key] = opt.emphasis[key] || {}; // Default emphasis option from normal\n\n    for (var i = 0, len = subOpts.length; i < len; i++) {\n      var subOptName = subOpts[i];\n\n      if (!opt.emphasis[key].hasOwnProperty(subOptName) && opt[key].hasOwnProperty(subOptName)) {\n        opt.emphasis[key][subOptName] = opt[key][subOptName];\n      }\n    }\n  }\n}\nexport var TEXT_STYLE_OPTIONS = ['fontStyle', 'fontWeight', 'fontSize', 'fontFamily', 'rich', 'tag', 'color', 'textBorderColor', 'textBorderWidth', 'width', 'height', 'lineHeight', 'align', 'verticalAlign', 'baseline', 'shadowColor', 'shadowBlur', 'shadowOffsetX', 'shadowOffsetY', 'textShadowColor', 'textShadowBlur', 'textShadowOffsetX', 'textShadowOffsetY', 'backgroundColor', 'borderColor', 'borderWidth', 'borderRadius', 'padding']; // modelUtil.LABEL_OPTIONS = modelUtil.TEXT_STYLE_OPTIONS.concat([\n//     'position', 'offset', 'rotate', 'origin', 'show', 'distance', 'formatter',\n//     'fontStyle', 'fontWeight', 'fontSize', 'fontFamily',\n//     // FIXME: deprecated, check and remove it.\n//     'textStyle'\n// ]);\n\n/**\r\n * The method does not ensure performance.\r\n * data could be [12, 2323, {value: 223}, [1221, 23], {value: [2, 23]}]\r\n * This helper method retrieves value from data.\r\n */\n\nexport function getDataItemValue(dataItem) {\n  return isObject(dataItem) && !isArray(dataItem) && !(dataItem instanceof Date) ? dataItem.value : dataItem;\n}\n/**\r\n * data could be [12, 2323, {value: 223}, [1221, 23], {value: [2, 23]}]\r\n * This helper method determine if dataItem has extra option besides value\r\n */\n\nexport function isDataItemOption(dataItem) {\n  return isObject(dataItem) && !(dataItem instanceof Array); // // markLine data can be array\n  // && !(dataItem[0] && isObject(dataItem[0]) && !(dataItem[0] instanceof Array));\n}\n;\n/**\r\n * Mapping to existings for merge.\r\n *\r\n * Mode \"normalMege\":\r\n *     The mapping result (merge result) will keep the order of the existing\r\n *     component, rather than the order of new option. Because we should ensure\r\n *     some specified index reference (like xAxisIndex) keep work.\r\n *     And in most cases, \"merge option\" is used to update partial option but not\r\n *     be expected to change the order.\r\n *\r\n * Mode \"replaceMege\":\r\n *     (1) Only the id mapped components will be merged.\r\n *     (2) Other existing components (except internal components) will be removed.\r\n *     (3) Other new options will be used to create new component.\r\n *     (4) The index of the existing components will not be modified.\r\n *     That means their might be \"hole\" after the removal.\r\n *     The new components are created first at those available index.\r\n *\r\n * Mode \"replaceAll\":\r\n *     This mode try to support that reproduce an echarts instance from another\r\n *     echarts instance (via `getOption`) in some simple cases.\r\n *     In this scenario, the `result` index are exactly the consistent with the `newCmptOptions`,\r\n *     which ensures the component index referring (like `xAxisIndex: ?`) corrent. That is,\r\n *     the \"hole\" in `newCmptOptions` will also be kept.\r\n *     On the contrary, other modes try best to eliminate holes.\r\n *     PENDING: This is an experimental mode yet.\r\n *\r\n * @return See the comment of <MappingResult>.\r\n */\n\nexport function mappingToExists(existings, newCmptOptions, mode) {\n  var isNormalMergeMode = mode === 'normalMerge';\n  var isReplaceMergeMode = mode === 'replaceMerge';\n  var isReplaceAllMode = mode === 'replaceAll';\n  existings = existings || [];\n  newCmptOptions = (newCmptOptions || []).slice();\n  var existingIdIdxMap = createHashMap(); // Validate id and name on user input option.\n\n  each(newCmptOptions, function (cmptOption, index) {\n    if (!isObject(cmptOption)) {\n      newCmptOptions[index] = null;\n      return;\n    }\n\n    if (process.env.NODE_ENV !== 'production') {\n      // There is some legacy case that name is set as `false`.\n      // But should work normally rather than throw error.\n      if (cmptOption.id != null && !isValidIdOrName(cmptOption.id)) {\n        warnInvalidateIdOrName(cmptOption.id);\n      }\n\n      if (cmptOption.name != null && !isValidIdOrName(cmptOption.name)) {\n        warnInvalidateIdOrName(cmptOption.name);\n      }\n    }\n  });\n  var result = prepareResult(existings, existingIdIdxMap, mode);\n\n  if (isNormalMergeMode || isReplaceMergeMode) {\n    mappingById(result, existings, existingIdIdxMap, newCmptOptions);\n  }\n\n  if (isNormalMergeMode) {\n    mappingByName(result, newCmptOptions);\n  }\n\n  if (isNormalMergeMode || isReplaceMergeMode) {\n    mappingByIndex(result, newCmptOptions, isReplaceMergeMode);\n  } else if (isReplaceAllMode) {\n    mappingInReplaceAllMode(result, newCmptOptions);\n  }\n\n  makeIdAndName(result); // The array `result` MUST NOT contain elided items, otherwise the\n  // forEach will omit those items and result in incorrect result.\n\n  return result;\n}\n\nfunction prepareResult(existings, existingIdIdxMap, mode) {\n  var result = [];\n\n  if (mode === 'replaceAll') {\n    return result;\n  } // Do not use native `map` to in case that the array `existings`\n  // contains elided items, which will be omitted.\n\n\n  for (var index = 0; index < existings.length; index++) {\n    var existing = existings[index]; // Because of replaceMerge, `existing` may be null/undefined.\n\n    if (existing && existing.id != null) {\n      existingIdIdxMap.set(existing.id, index);\n    } // For non-internal-componnets:\n    //     Mode \"normalMerge\": all existings kept.\n    //     Mode \"replaceMerge\": all existing removed unless mapped by id.\n    // For internal-components:\n    //     go with \"replaceMerge\" approach in both mode.\n\n\n    result.push({\n      existing: mode === 'replaceMerge' || isComponentIdInternal(existing) ? null : existing,\n      newOption: null,\n      keyInfo: null,\n      brandNew: null\n    });\n  }\n\n  return result;\n}\n\nfunction mappingById(result, existings, existingIdIdxMap, newCmptOptions) {\n  // Mapping by id if specified.\n  each(newCmptOptions, function (cmptOption, index) {\n    if (!cmptOption || cmptOption.id == null) {\n      return;\n    }\n\n    var optionId = makeComparableKey(cmptOption.id);\n    var existingIdx = existingIdIdxMap.get(optionId);\n\n    if (existingIdx != null) {\n      var resultItem = result[existingIdx];\n      assert(!resultItem.newOption, 'Duplicated option on id \"' + optionId + '\".');\n      resultItem.newOption = cmptOption; // In both mode, if id matched, new option will be merged to\n      // the existings rather than creating new component model.\n\n      resultItem.existing = existings[existingIdx];\n      newCmptOptions[index] = null;\n    }\n  });\n}\n\nfunction mappingByName(result, newCmptOptions) {\n  // Mapping by name if specified.\n  each(newCmptOptions, function (cmptOption, index) {\n    if (!cmptOption || cmptOption.name == null) {\n      return;\n    }\n\n    for (var i = 0; i < result.length; i++) {\n      var existing = result[i].existing;\n\n      if (!result[i].newOption // Consider name: two map to one.\n      // Can not match when both ids existing but different.\n      && existing && (existing.id == null || cmptOption.id == null) && !isComponentIdInternal(cmptOption) && !isComponentIdInternal(existing) && keyExistAndEqual('name', existing, cmptOption)) {\n        result[i].newOption = cmptOption;\n        newCmptOptions[index] = null;\n        return;\n      }\n    }\n  });\n}\n\nfunction mappingByIndex(result, newCmptOptions, brandNew) {\n  each(newCmptOptions, function (cmptOption) {\n    if (!cmptOption) {\n      return;\n    } // Find the first place that not mapped by id and not internal component (consider the \"hole\").\n\n\n    var resultItem;\n    var nextIdx = 0;\n\n    while ( // Be `!resultItem` only when `nextIdx >= result.length`.\n    (resultItem = result[nextIdx]) && ( // (1) Existing models that already have id should be able to mapped to. Because\n    // after mapping performed, model will always be assigned with an id if user not given.\n    // After that all models have id.\n    // (2) If new option has id, it can only set to a hole or append to the last. It should\n    // not be merged to the existings with different id. Because id should not be overwritten.\n    // (3) Name can be overwritten, because axis use name as 'show label text'.\n    resultItem.newOption || isComponentIdInternal(resultItem.existing) || // In mode \"replaceMerge\", here no not-mapped-non-internal-existing.\n    resultItem.existing && cmptOption.id != null && !keyExistAndEqual('id', cmptOption, resultItem.existing))) {\n      nextIdx++;\n    }\n\n    if (resultItem) {\n      resultItem.newOption = cmptOption;\n      resultItem.brandNew = brandNew;\n    } else {\n      result.push({\n        newOption: cmptOption,\n        brandNew: brandNew,\n        existing: null,\n        keyInfo: null\n      });\n    }\n\n    nextIdx++;\n  });\n}\n\nfunction mappingInReplaceAllMode(result, newCmptOptions) {\n  each(newCmptOptions, function (cmptOption) {\n    // The feature \"reproduce\" requires \"hole\" will also reproduced\n    // in case that component index referring are broken.\n    result.push({\n      newOption: cmptOption,\n      brandNew: true,\n      existing: null,\n      keyInfo: null\n    });\n  });\n}\n/**\r\n * Make id and name for mapping result (result of mappingToExists)\r\n * into `keyInfo` field.\r\n */\n\n\nfunction makeIdAndName(mapResult) {\n  // We use this id to hash component models and view instances\n  // in echarts. id can be specified by user, or auto generated.\n  // The id generation rule ensures new view instance are able\n  // to mapped to old instance when setOption are called in\n  // no-merge mode. So we generate model id by name and plus\n  // type in view id.\n  // name can be duplicated among components, which is convenient\n  // to specify multi components (like series) by one name.\n  // Ensure that each id is distinct.\n  var idMap = createHashMap();\n  each(mapResult, function (item) {\n    var existing = item.existing;\n    existing && idMap.set(existing.id, item);\n  });\n  each(mapResult, function (item) {\n    var opt = item.newOption; // Force ensure id not duplicated.\n\n    assert(!opt || opt.id == null || !idMap.get(opt.id) || idMap.get(opt.id) === item, 'id duplicates: ' + (opt && opt.id));\n    opt && opt.id != null && idMap.set(opt.id, item);\n    !item.keyInfo && (item.keyInfo = {});\n  }); // Make name and id.\n\n  each(mapResult, function (item, index) {\n    var existing = item.existing;\n    var opt = item.newOption;\n    var keyInfo = item.keyInfo;\n\n    if (!isObject(opt)) {\n      return;\n    } // Name can be overwritten. Consider case: axis.name = '20km'.\n    // But id generated by name will not be changed, which affect\n    // only in that case: setOption with 'not merge mode' and view\n    // instance will be recreated, which can be accepted.\n\n\n    keyInfo.name = opt.name != null ? makeComparableKey(opt.name) : existing ? existing.name // Avoid that different series has the same name,\n    // because name may be used like in color pallet.\n    : DUMMY_COMPONENT_NAME_PREFIX + index;\n\n    if (existing) {\n      keyInfo.id = makeComparableKey(existing.id);\n    } else if (opt.id != null) {\n      keyInfo.id = makeComparableKey(opt.id);\n    } else {\n      // Consider this situatoin:\n      //  optionA: [{name: 'a'}, {name: 'a'}, {..}]\n      //  optionB [{..}, {name: 'a'}, {name: 'a'}]\n      // Series with the same name between optionA and optionB\n      // should be mapped.\n      var idNum = 0;\n\n      do {\n        keyInfo.id = '\\0' + keyInfo.name + '\\0' + idNum++;\n      } while (idMap.get(keyInfo.id));\n    }\n\n    idMap.set(keyInfo.id, item);\n  });\n}\n\nfunction keyExistAndEqual(attr, obj1, obj2) {\n  var key1 = convertOptionIdName(obj1[attr], null);\n  var key2 = convertOptionIdName(obj2[attr], null); // See `MappingExistingItem`. `id` and `name` trade string equals to number.\n\n  return key1 != null && key2 != null && key1 === key2;\n}\n/**\r\n * @return return null if not exist.\r\n */\n\n\nfunction makeComparableKey(val) {\n  if (process.env.NODE_ENV !== 'production') {\n    if (val == null) {\n      throw new Error();\n    }\n  }\n\n  return convertOptionIdName(val, '');\n}\n\nexport function convertOptionIdName(idOrName, defaultValue) {\n  if (idOrName == null) {\n    return defaultValue;\n  }\n\n  return isString(idOrName) ? idOrName : isNumber(idOrName) || isStringSafe(idOrName) ? idOrName + '' : defaultValue;\n}\n\nfunction warnInvalidateIdOrName(idOrName) {\n  if (process.env.NODE_ENV !== 'production') {\n    warn('`' + idOrName + '` is invalid id or name. Must be a string or number.');\n  }\n}\n\nfunction isValidIdOrName(idOrName) {\n  return isStringSafe(idOrName) || isNumeric(idOrName);\n}\n\nexport function isNameSpecified(componentModel) {\n  var name = componentModel.name; // Is specified when `indexOf` get -1 or > 0.\n\n  return !!(name && name.indexOf(DUMMY_COMPONENT_NAME_PREFIX));\n}\n/**\r\n * @public\r\n * @param {Object} cmptOption\r\n * @return {boolean}\r\n */\n\nexport function isComponentIdInternal(cmptOption) {\n  return cmptOption && cmptOption.id != null && makeComparableKey(cmptOption.id).indexOf(INTERNAL_COMPONENT_ID_PREFIX) === 0;\n}\nexport function makeInternalComponentId(idSuffix) {\n  return INTERNAL_COMPONENT_ID_PREFIX + idSuffix;\n}\nexport function setComponentTypeToKeyInfo(mappingResult, mainType, componentModelCtor) {\n  // Set mainType and complete subType.\n  each(mappingResult, function (item) {\n    var newOption = item.newOption;\n\n    if (isObject(newOption)) {\n      item.keyInfo.mainType = mainType;\n      item.keyInfo.subType = determineSubType(mainType, newOption, item.existing, componentModelCtor);\n    }\n  });\n}\n\nfunction determineSubType(mainType, newCmptOption, existComponent, componentModelCtor) {\n  var subType = newCmptOption.type ? newCmptOption.type : existComponent ? existComponent.subType // Use determineSubType only when there is no existComponent.\n  : componentModelCtor.determineSubType(mainType, newCmptOption); // tooltip, markline, markpoint may always has no subType\n\n  return subType;\n}\n/**\r\n * A helper for removing duplicate items between batchA and batchB,\r\n * and in themselves, and categorize by series.\r\n *\r\n * @param batchA Like: [{seriesId: 2, dataIndex: [32, 4, 5]}, ...]\r\n * @param batchB Like: [{seriesId: 2, dataIndex: [32, 4, 5]}, ...]\r\n * @return result: [resultBatchA, resultBatchB]\r\n */\n\n\nexport function compressBatches(batchA, batchB) {\n  var mapA = {};\n  var mapB = {};\n  makeMap(batchA || [], mapA);\n  makeMap(batchB || [], mapB, mapA);\n  return [mapToArray(mapA), mapToArray(mapB)];\n\n  function makeMap(sourceBatch, map, otherMap) {\n    for (var i = 0, len = sourceBatch.length; i < len; i++) {\n      var seriesId = convertOptionIdName(sourceBatch[i].seriesId, null);\n\n      if (seriesId == null) {\n        return;\n      }\n\n      var dataIndices = normalizeToArray(sourceBatch[i].dataIndex);\n      var otherDataIndices = otherMap && otherMap[seriesId];\n\n      for (var j = 0, lenj = dataIndices.length; j < lenj; j++) {\n        var dataIndex = dataIndices[j];\n\n        if (otherDataIndices && otherDataIndices[dataIndex]) {\n          otherDataIndices[dataIndex] = null;\n        } else {\n          (map[seriesId] || (map[seriesId] = {}))[dataIndex] = 1;\n        }\n      }\n    }\n  }\n\n  function mapToArray(map, isData) {\n    var result = [];\n\n    for (var i in map) {\n      if (map.hasOwnProperty(i) && map[i] != null) {\n        if (isData) {\n          result.push(+i);\n        } else {\n          var dataIndices = mapToArray(map[i], true);\n          dataIndices.length && result.push({\n            seriesId: i,\n            dataIndex: dataIndices\n          });\n        }\n      }\n    }\n\n    return result;\n  }\n}\n/**\r\n * @param payload Contains dataIndex (means rawIndex) / dataIndexInside / name\r\n *                         each of which can be Array or primary type.\r\n * @return dataIndex If not found, return undefined/null.\r\n */\n\nexport function queryDataIndex(data, payload) {\n  if (payload.dataIndexInside != null) {\n    return payload.dataIndexInside;\n  } else if (payload.dataIndex != null) {\n    return isArray(payload.dataIndex) ? map(payload.dataIndex, function (value) {\n      return data.indexOfRawIndex(value);\n    }) : data.indexOfRawIndex(payload.dataIndex);\n  } else if (payload.name != null) {\n    return isArray(payload.name) ? map(payload.name, function (value) {\n      return data.indexOfName(value);\n    }) : data.indexOfName(payload.name);\n  }\n}\n/**\r\n * Enable property storage to any host object.\r\n * Notice: Serialization is not supported.\r\n *\r\n * For example:\r\n * let inner = zrUitl.makeInner();\r\n *\r\n * function some1(hostObj) {\r\n *      inner(hostObj).someProperty = 1212;\r\n *      ...\r\n * }\r\n * function some2() {\r\n *      let fields = inner(this);\r\n *      fields.someProperty1 = 1212;\r\n *      fields.someProperty2 = 'xx';\r\n *      ...\r\n * }\r\n *\r\n * @return {Function}\r\n */\n\nexport function makeInner() {\n  var key = '__ec_inner_' + innerUniqueIndex++;\n  return function (hostObj) {\n    return hostObj[key] || (hostObj[key] = {});\n  };\n}\nvar innerUniqueIndex = getRandomIdBase();\n/**\r\n * The same behavior as `component.getReferringComponents`.\r\n */\n\nexport function parseFinder(ecModel, finderInput, opt) {\n  var _a = preParseFinder(finderInput, opt),\n      mainTypeSpecified = _a.mainTypeSpecified,\n      queryOptionMap = _a.queryOptionMap,\n      others = _a.others;\n\n  var result = others;\n  var defaultMainType = opt ? opt.defaultMainType : null;\n\n  if (!mainTypeSpecified && defaultMainType) {\n    queryOptionMap.set(defaultMainType, {});\n  }\n\n  queryOptionMap.each(function (queryOption, mainType) {\n    var queryResult = queryReferringComponents(ecModel, mainType, queryOption, {\n      useDefault: defaultMainType === mainType,\n      enableAll: opt && opt.enableAll != null ? opt.enableAll : true,\n      enableNone: opt && opt.enableNone != null ? opt.enableNone : true\n    });\n    result[mainType + 'Models'] = queryResult.models;\n    result[mainType + 'Model'] = queryResult.models[0];\n  });\n  return result;\n}\nexport function preParseFinder(finderInput, opt) {\n  var finder;\n\n  if (isString(finderInput)) {\n    var obj = {};\n    obj[finderInput + 'Index'] = 0;\n    finder = obj;\n  } else {\n    finder = finderInput;\n  }\n\n  var queryOptionMap = createHashMap();\n  var others = {};\n  var mainTypeSpecified = false;\n  each(finder, function (value, key) {\n    // Exclude 'dataIndex' and other illgal keys.\n    if (key === 'dataIndex' || key === 'dataIndexInside') {\n      others[key] = value;\n      return;\n    }\n\n    var parsedKey = key.match(/^(\\w+)(Index|Id|Name)$/) || [];\n    var mainType = parsedKey[1];\n    var queryType = (parsedKey[2] || '').toLowerCase();\n\n    if (!mainType || !queryType || opt && opt.includeMainTypes && indexOf(opt.includeMainTypes, mainType) < 0) {\n      return;\n    }\n\n    mainTypeSpecified = mainTypeSpecified || !!mainType;\n    var queryOption = queryOptionMap.get(mainType) || queryOptionMap.set(mainType, {});\n    queryOption[queryType] = value;\n  });\n  return {\n    mainTypeSpecified: mainTypeSpecified,\n    queryOptionMap: queryOptionMap,\n    others: others\n  };\n}\nexport var SINGLE_REFERRING = {\n  useDefault: true,\n  enableAll: false,\n  enableNone: false\n};\nexport var MULTIPLE_REFERRING = {\n  useDefault: false,\n  enableAll: true,\n  enableNone: true\n};\nexport function queryReferringComponents(ecModel, mainType, userOption, opt) {\n  opt = opt || SINGLE_REFERRING;\n  var indexOption = userOption.index;\n  var idOption = userOption.id;\n  var nameOption = userOption.name;\n  var result = {\n    models: null,\n    specified: indexOption != null || idOption != null || nameOption != null\n  };\n\n  if (!result.specified) {\n    // Use the first as default if `useDefault`.\n    var firstCmpt = void 0;\n    result.models = opt.useDefault && (firstCmpt = ecModel.getComponent(mainType)) ? [firstCmpt] : [];\n    return result;\n  }\n\n  if (indexOption === 'none' || indexOption === false) {\n    assert(opt.enableNone, '`\"none\"` or `false` is not a valid value on index option.');\n    result.models = [];\n    return result;\n  } // `queryComponents` will return all components if\n  // both all of index/id/name are null/undefined.\n\n\n  if (indexOption === 'all') {\n    assert(opt.enableAll, '`\"all\"` is not a valid value on index option.');\n    indexOption = idOption = nameOption = null;\n  }\n\n  result.models = ecModel.queryComponents({\n    mainType: mainType,\n    index: indexOption,\n    id: idOption,\n    name: nameOption\n  });\n  return result;\n}\nexport function setAttribute(dom, key, value) {\n  dom.setAttribute ? dom.setAttribute(key, value) : dom[key] = value;\n}\nexport function getAttribute(dom, key) {\n  return dom.getAttribute ? dom.getAttribute(key) : dom[key];\n}\nexport function getTooltipRenderMode(renderModeOption) {\n  if (renderModeOption === 'auto') {\n    // Using html when `document` exists, use richText otherwise\n    return env.domSupported ? 'html' : 'richText';\n  } else {\n    return renderModeOption || 'html';\n  }\n}\n/**\r\n * Group a list by key.\r\n */\n\nexport function groupData(array, getKey // return key\n) {\n  var buckets = createHashMap();\n  var keys = [];\n  each(array, function (item) {\n    var key = getKey(item);\n    (buckets.get(key) || (keys.push(key), buckets.set(key, []))).push(item);\n  });\n  return {\n    keys: keys,\n    buckets: buckets\n  };\n}\n/**\r\n * Interpolate raw values of a series with percent\r\n *\r\n * @param data         data\r\n * @param labelModel   label model of the text element\r\n * @param sourceValue  start value. May be null/undefined when init.\r\n * @param targetValue  end value\r\n * @param percent      0~1 percentage; 0 uses start value while 1 uses end value\r\n * @return             interpolated values\r\n *                     If `sourceValue` and `targetValue` are `number`, return `number`.\r\n *                     If `sourceValue` and `targetValue` are `string`, return `string`.\r\n *                     If `sourceValue` and `targetValue` are `(string | number)[]`, return `(string | number)[]`.\r\n *                     Other cases do not supported.\r\n */\n\nexport function interpolateRawValues(data, precision, sourceValue, targetValue, percent) {\n  var isAutoPrecision = precision == null || precision === 'auto';\n\n  if (targetValue == null) {\n    return targetValue;\n  }\n\n  if (isNumber(targetValue)) {\n    var value = interpolateNumber(sourceValue || 0, targetValue, percent);\n    return round(value, isAutoPrecision ? Math.max(getPrecision(sourceValue || 0), getPrecision(targetValue)) : precision);\n  } else if (isString(targetValue)) {\n    return percent < 1 ? sourceValue : targetValue;\n  } else {\n    var interpolated = [];\n    var leftArr = sourceValue;\n    var rightArr = targetValue;\n    var length_1 = Math.max(leftArr ? leftArr.length : 0, rightArr.length);\n\n    for (var i = 0; i < length_1; ++i) {\n      var info = data.getDimensionInfo(i); // Don't interpolate ordinal dims\n\n      if (info && info.type === 'ordinal') {\n        // In init, there is no `sourceValue`, but should better not to get undefined result.\n        interpolated[i] = (percent < 1 && leftArr ? leftArr : rightArr)[i];\n      } else {\n        var leftVal = leftArr && leftArr[i] ? leftArr[i] : 0;\n        var rightVal = rightArr[i];\n        var value = interpolateNumber(leftVal, rightVal, percent);\n        interpolated[i] = round(value, isAutoPrecision ? Math.max(getPrecision(leftVal), getPrecision(rightVal)) : precision);\n      }\n    }\n\n    return interpolated;\n  }\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { __extends } from \"tslib\";\nimport * as zrUtil from 'zrender/lib/core/util.js';\nvar TYPE_DELIMITER = '.';\nvar IS_CONTAINER = '___EC__COMPONENT__CONTAINER___';\nvar IS_EXTENDED_CLASS = '___EC__EXTENDED_CLASS___';\n/**\r\n * Notice, parseClassType('') should returns {main: '', sub: ''}\r\n * @public\r\n */\n\nexport function parseClassType(componentType) {\n  var ret = {\n    main: '',\n    sub: ''\n  };\n\n  if (componentType) {\n    var typeArr = componentType.split(TYPE_DELIMITER);\n    ret.main = typeArr[0] || '';\n    ret.sub = typeArr[1] || '';\n  }\n\n  return ret;\n}\n/**\r\n * @public\r\n */\n\nfunction checkClassType(componentType) {\n  zrUtil.assert(/^[a-zA-Z0-9_]+([.][a-zA-Z0-9_]+)?$/.test(componentType), 'componentType \"' + componentType + '\" illegal');\n}\n\nexport function isExtendedClass(clz) {\n  return !!(clz && clz[IS_EXTENDED_CLASS]);\n}\n/**\r\n * Implements `ExtendableConstructor` for `rootClz`.\r\n *\r\n * @usage\r\n * ```ts\r\n * class Xxx {}\r\n * type XxxConstructor = typeof Xxx & ExtendableConstructor\r\n * enableClassExtend(Xxx as XxxConstructor);\r\n * ```\r\n */\n\nexport function enableClassExtend(rootClz, mandatoryMethods) {\n  rootClz.$constructor = rootClz; // FIXME: not necessary?\n\n  rootClz.extend = function (proto) {\n    if (process.env.NODE_ENV !== 'production') {\n      zrUtil.each(mandatoryMethods, function (method) {\n        if (!proto[method]) {\n          console.warn('Method `' + method + '` should be implemented' + (proto.type ? ' in ' + proto.type : '') + '.');\n        }\n      });\n    }\n\n    var superClass = this;\n    var ExtendedClass;\n\n    if (isESClass(superClass)) {\n      ExtendedClass =\n      /** @class */\n      function (_super) {\n        __extends(class_1, _super);\n\n        function class_1() {\n          return _super.apply(this, arguments) || this;\n        }\n\n        return class_1;\n      }(superClass);\n    } else {\n      // For backward compat, we both support ts class inheritance and this\n      // \"extend\" approach.\n      // The constructor should keep the same behavior as ts class inheritance:\n      // If this constructor/$constructor is not declared, auto invoke the super\n      // constructor.\n      // If this constructor/$constructor is declared, it is responsible for\n      // calling the super constructor.\n      ExtendedClass = function () {\n        (proto.$constructor || superClass).apply(this, arguments);\n      };\n\n      zrUtil.inherits(ExtendedClass, this);\n    }\n\n    zrUtil.extend(ExtendedClass.prototype, proto);\n    ExtendedClass[IS_EXTENDED_CLASS] = true;\n    ExtendedClass.extend = this.extend;\n    ExtendedClass.superCall = superCall;\n    ExtendedClass.superApply = superApply;\n    ExtendedClass.superClass = superClass;\n    return ExtendedClass;\n  };\n}\n\nfunction isESClass(fn) {\n  return zrUtil.isFunction(fn) && /^class\\s/.test(Function.prototype.toString.call(fn));\n}\n/**\r\n * A work around to both support ts extend and this extend mechanism.\r\n * on sub-class.\r\n * @usage\r\n * ```ts\r\n * class Component { ... }\r\n * classUtil.enableClassExtend(Component);\r\n * classUtil.enableClassManagement(Component, {registerWhenExtend: true});\r\n *\r\n * class Series extends Component { ... }\r\n * // Without calling `markExtend`, `registerWhenExtend` will not work.\r\n * Component.markExtend(Series);\r\n * ```\r\n */\n\n\nexport function mountExtend(SubClz, SupperClz) {\n  SubClz.extend = SupperClz.extend;\n} // A random offset.\n\nvar classBase = Math.round(Math.random() * 10);\n/**\r\n * Implements `CheckableConstructor` for `target`.\r\n * Can not use instanceof, consider different scope by\r\n * cross domain or es module import in ec extensions.\r\n * Mount a method \"isInstance()\" to Clz.\r\n *\r\n * @usage\r\n * ```ts\r\n * class Xxx {}\r\n * type XxxConstructor = typeof Xxx & CheckableConstructor;\r\n * enableClassCheck(Xxx as XxxConstructor)\r\n * ```\r\n */\n\nexport function enableClassCheck(target) {\n  var classAttr = ['__\\0is_clz', classBase++].join('_');\n  target.prototype[classAttr] = true;\n\n  if (process.env.NODE_ENV !== 'production') {\n    zrUtil.assert(!target.isInstance, 'The method \"is\" can not be defined.');\n  }\n\n  target.isInstance = function (obj) {\n    return !!(obj && obj[classAttr]);\n  };\n} // superCall should have class info, which can not be fetched from 'this'.\n// Consider this case:\n// class A has method f,\n// class B inherits class A, overrides method f, f call superApply('f'),\n// class C inherits class B, does not override method f,\n// then when method of class C is called, dead loop occurred.\n\nfunction superCall(context, methodName) {\n  var args = [];\n\n  for (var _i = 2; _i < arguments.length; _i++) {\n    args[_i - 2] = arguments[_i];\n  }\n\n  return this.superClass.prototype[methodName].apply(context, args);\n}\n\nfunction superApply(context, methodName, args) {\n  return this.superClass.prototype[methodName].apply(context, args);\n}\n/**\r\n * Implements `ClassManager` for `target`\r\n *\r\n * @usage\r\n * ```ts\r\n * class Xxx {}\r\n * type XxxConstructor = typeof Xxx & ClassManager\r\n * enableClassManagement(Xxx as XxxConstructor);\r\n * ```\r\n */\n\n\nexport function enableClassManagement(target) {\n  /**\r\n   * Component model classes\r\n   * key: componentType,\r\n   * value:\r\n   *     componentClass, when componentType is 'a'\r\n   *     or Object.<subKey, componentClass>, when componentType is 'a.b'\r\n   */\n  var storage = {};\n\n  target.registerClass = function (clz) {\n    // `type` should not be a \"instance member\".\n    // If using TS class, should better declared as `static type = 'series.pie'`.\n    // otherwise users have to mount `type` on prototype manually.\n    // For backward compat and enable instance visit type via `this.type`,\n    // we still support fetch `type` from prototype.\n    var componentFullType = clz.type || clz.prototype.type;\n\n    if (componentFullType) {\n      checkClassType(componentFullType); // If only static type declared, we assign it to prototype mandatorily.\n\n      clz.prototype.type = componentFullType;\n      var componentTypeInfo = parseClassType(componentFullType);\n\n      if (!componentTypeInfo.sub) {\n        if (process.env.NODE_ENV !== 'production') {\n          if (storage[componentTypeInfo.main]) {\n            console.warn(componentTypeInfo.main + ' exists.');\n          }\n        }\n\n        storage[componentTypeInfo.main] = clz;\n      } else if (componentTypeInfo.sub !== IS_CONTAINER) {\n        var container = makeContainer(componentTypeInfo);\n        container[componentTypeInfo.sub] = clz;\n      }\n    }\n\n    return clz;\n  };\n\n  target.getClass = function (mainType, subType, throwWhenNotFound) {\n    var clz = storage[mainType];\n\n    if (clz && clz[IS_CONTAINER]) {\n      clz = subType ? clz[subType] : null;\n    }\n\n    if (throwWhenNotFound && !clz) {\n      throw new Error(!subType ? mainType + '.' + 'type should be specified.' : 'Component ' + mainType + '.' + (subType || '') + ' is used but not imported.');\n    }\n\n    return clz;\n  };\n\n  target.getClassesByMainType = function (componentType) {\n    var componentTypeInfo = parseClassType(componentType);\n    var result = [];\n    var obj = storage[componentTypeInfo.main];\n\n    if (obj && obj[IS_CONTAINER]) {\n      zrUtil.each(obj, function (o, type) {\n        type !== IS_CONTAINER && result.push(o);\n      });\n    } else {\n      result.push(obj);\n    }\n\n    return result;\n  };\n\n  target.hasClass = function (componentType) {\n    // Just consider componentType.main.\n    var componentTypeInfo = parseClassType(componentType);\n    return !!storage[componentTypeInfo.main];\n  };\n  /**\r\n   * @return Like ['aa', 'bb'], but can not be ['aa.xx']\r\n   */\n\n\n  target.getAllClassMainTypes = function () {\n    var types = [];\n    zrUtil.each(storage, function (obj, type) {\n      types.push(type);\n    });\n    return types;\n  };\n  /**\r\n   * If a main type is container and has sub types\r\n   */\n\n\n  target.hasSubTypes = function (componentType) {\n    var componentTypeInfo = parseClassType(componentType);\n    var obj = storage[componentTypeInfo.main];\n    return obj && obj[IS_CONTAINER];\n  };\n\n  function makeContainer(componentTypeInfo) {\n    var container = storage[componentTypeInfo.main];\n\n    if (!container || !container[IS_CONTAINER]) {\n      container = storage[componentTypeInfo.main] = {};\n      container[IS_CONTAINER] = true;\n    }\n\n    return container;\n  }\n} // /**\n//  * @param {string|Array.<string>} properties\n//  */\n// export function setReadOnly(obj, properties) {\n// FIXME It seems broken in IE8 simulation of IE11\n// if (!zrUtil.isArray(properties)) {\n//     properties = properties != null ? [properties] : [];\n// }\n// zrUtil.each(properties, function (prop) {\n//     let value = obj[prop];\n//     Object.defineProperty\n//         && Object.defineProperty(obj, prop, {\n//             value: value, writable: false\n//         });\n//     zrUtil.isArray(obj[prop])\n//         && Object.freeze\n//         && Object.freeze(obj[prop]);\n// });\n// }","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\n// TODO Parse shadow style\n// TODO Only shallow path support\nimport * as zrUtil from 'zrender/lib/core/util.js';\nexport default function makeStyleMapper(properties, ignoreParent) {\n  // Normalize\n  for (var i = 0; i < properties.length; i++) {\n    if (!properties[i][1]) {\n      properties[i][1] = properties[i][0];\n    }\n  }\n\n  ignoreParent = ignoreParent || false;\n  return function (model, excludes, includes) {\n    var style = {};\n\n    for (var i = 0; i < properties.length; i++) {\n      var propName = properties[i][1];\n\n      if (excludes && zrUtil.indexOf(excludes, propName) >= 0 || includes && zrUtil.indexOf(includes, propName) < 0) {\n        continue;\n      }\n\n      var val = model.getShallow(propName, ignoreParent);\n\n      if (val != null) {\n        style[properties[i][0]] = val;\n      }\n    } // TODO Text or image?\n\n\n    return style;\n  };\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport makeStyleMapper from './makeStyleMapper.js';\nexport var AREA_STYLE_KEY_MAP = [['fill', 'color'], ['shadowBlur'], ['shadowOffsetX'], ['shadowOffsetY'], ['opacity'], ['shadowColor'] // Option decal is in `DecalObject` but style.decal is in `PatternObject`.\n// So do not transfer decal directly.\n];\nvar getAreaStyle = makeStyleMapper(AREA_STYLE_KEY_MAP);\n\nvar AreaStyleMixin =\n/** @class */\nfunction () {\n  function AreaStyleMixin() {}\n\n  AreaStyleMixin.prototype.getAreaStyle = function (excludes, includes) {\n    return getAreaStyle(this, excludes, includes);\n  };\n\n  return AreaStyleMixin;\n}();\n\n;\nexport { AreaStyleMixin };","import LRU from '../../core/LRU.js';\nimport { platformApi } from '../../core/platform.js';\nvar globalImageCache = new LRU(50);\nexport function findExistImage(newImageOrSrc) {\n    if (typeof newImageOrSrc === 'string') {\n        var cachedImgObj = globalImageCache.get(newImageOrSrc);\n        return cachedImgObj && cachedImgObj.image;\n    }\n    else {\n        return newImageOrSrc;\n    }\n}\nexport function createOrUpdateImage(newImageOrSrc, image, hostEl, onload, cbPayload) {\n    if (!newImageOrSrc) {\n        return image;\n    }\n    else if (typeof newImageOrSrc === 'string') {\n        if ((image && image.__zrImageSrc === newImageOrSrc) || !hostEl) {\n            return image;\n        }\n        var cachedImgObj = globalImageCache.get(newImageOrSrc);\n        var pendingWrap = { hostEl: hostEl, cb: onload, cbPayload: cbPayload };\n        if (cachedImgObj) {\n            image = cachedImgObj.image;\n            !isImageReady(image) && cachedImgObj.pending.push(pendingWrap);\n        }\n        else {\n            image = platformApi.loadImage(newImageOrSrc, imageOnLoad, imageOnLoad);\n            image.__zrImageSrc = newImageOrSrc;\n            globalImageCache.put(newImageOrSrc, image.__cachedImgObj = {\n                image: image,\n                pending: [pendingWrap]\n            });\n        }\n        return image;\n    }\n    else {\n        return newImageOrSrc;\n    }\n}\nfunction imageOnLoad() {\n    var cachedImgObj = this.__cachedImgObj;\n    this.onload = this.onerror = this.__cachedImgObj = null;\n    for (var i = 0; i < cachedImgObj.pending.length; i++) {\n        var pendingWrap = cachedImgObj.pending[i];\n        var cb = pendingWrap.cb;\n        cb && cb(this, pendingWrap.cbPayload);\n        pendingWrap.hostEl.dirty();\n    }\n    cachedImgObj.pending.length = 0;\n}\nexport function isImageReady(image) {\n    return image && image.width && image.height;\n}\n","import * as imageHelper from '../helper/image.js';\nimport { extend, retrieve2, retrieve3, reduce } from '../../core/util.js';\nimport { getLineHeight, getWidth, parsePercent } from '../../contain/text.js';\nvar STYLE_REG = /\\{([a-zA-Z0-9_]+)\\|([^}]*)\\}/g;\nexport function truncateText(text, containerWidth, font, ellipsis, options) {\n    if (!containerWidth) {\n        return '';\n    }\n    var textLines = (text + '').split('\\n');\n    options = prepareTruncateOptions(containerWidth, font, ellipsis, options);\n    for (var i = 0, len = textLines.length; i < len; i++) {\n        textLines[i] = truncateSingleLine(textLines[i], options);\n    }\n    return textLines.join('\\n');\n}\nfunction prepareTruncateOptions(containerWidth, font, ellipsis, options) {\n    options = options || {};\n    var preparedOpts = extend({}, options);\n    preparedOpts.font = font;\n    ellipsis = retrieve2(ellipsis, '...');\n    preparedOpts.maxIterations = retrieve2(options.maxIterations, 2);\n    var minChar = preparedOpts.minChar = retrieve2(options.minChar, 0);\n    preparedOpts.cnCharWidth = getWidth('国', font);\n    var ascCharWidth = preparedOpts.ascCharWidth = getWidth('a', font);\n    preparedOpts.placeholder = retrieve2(options.placeholder, '');\n    var contentWidth = containerWidth = Math.max(0, containerWidth - 1);\n    for (var i = 0; i < minChar && contentWidth >= ascCharWidth; i++) {\n        contentWidth -= ascCharWidth;\n    }\n    var ellipsisWidth = getWidth(ellipsis, font);\n    if (ellipsisWidth > contentWidth) {\n        ellipsis = '';\n        ellipsisWidth = 0;\n    }\n    contentWidth = containerWidth - ellipsisWidth;\n    preparedOpts.ellipsis = ellipsis;\n    preparedOpts.ellipsisWidth = ellipsisWidth;\n    preparedOpts.contentWidth = contentWidth;\n    preparedOpts.containerWidth = containerWidth;\n    return preparedOpts;\n}\nfunction truncateSingleLine(textLine, options) {\n    var containerWidth = options.containerWidth;\n    var font = options.font;\n    var contentWidth = options.contentWidth;\n    if (!containerWidth) {\n        return '';\n    }\n    var lineWidth = getWidth(textLine, font);\n    if (lineWidth <= containerWidth) {\n        return textLine;\n    }\n    for (var j = 0;; j++) {\n        if (lineWidth <= contentWidth || j >= options.maxIterations) {\n            textLine += options.ellipsis;\n            break;\n        }\n        var subLength = j === 0\n            ? estimateLength(textLine, contentWidth, options.ascCharWidth, options.cnCharWidth)\n            : lineWidth > 0\n                ? Math.floor(textLine.length * contentWidth / lineWidth)\n                : 0;\n        textLine = textLine.substr(0, subLength);\n        lineWidth = getWidth(textLine, font);\n    }\n    if (textLine === '') {\n        textLine = options.placeholder;\n    }\n    return textLine;\n}\nfunction estimateLength(text, contentWidth, ascCharWidth, cnCharWidth) {\n    var width = 0;\n    var i = 0;\n    for (var len = text.length; i < len && width < contentWidth; i++) {\n        var charCode = text.charCodeAt(i);\n        width += (0 <= charCode && charCode <= 127) ? ascCharWidth : cnCharWidth;\n    }\n    return i;\n}\nexport function parsePlainText(text, style) {\n    text != null && (text += '');\n    var overflow = style.overflow;\n    var padding = style.padding;\n    var font = style.font;\n    var truncate = overflow === 'truncate';\n    var calculatedLineHeight = getLineHeight(font);\n    var lineHeight = retrieve2(style.lineHeight, calculatedLineHeight);\n    var bgColorDrawn = !!(style.backgroundColor);\n    var truncateLineOverflow = style.lineOverflow === 'truncate';\n    var width = style.width;\n    var lines;\n    if (width != null && (overflow === 'break' || overflow === 'breakAll')) {\n        lines = text ? wrapText(text, style.font, width, overflow === 'breakAll', 0).lines : [];\n    }\n    else {\n        lines = text ? text.split('\\n') : [];\n    }\n    var contentHeight = lines.length * lineHeight;\n    var height = retrieve2(style.height, contentHeight);\n    if (contentHeight > height && truncateLineOverflow) {\n        var lineCount = Math.floor(height / lineHeight);\n        lines = lines.slice(0, lineCount);\n    }\n    if (text && truncate && width != null) {\n        var options = prepareTruncateOptions(width, font, style.ellipsis, {\n            minChar: style.truncateMinChar,\n            placeholder: style.placeholder\n        });\n        for (var i = 0; i < lines.length; i++) {\n            lines[i] = truncateSingleLine(lines[i], options);\n        }\n    }\n    var outerHeight = height;\n    var contentWidth = 0;\n    for (var i = 0; i < lines.length; i++) {\n        contentWidth = Math.max(getWidth(lines[i], font), contentWidth);\n    }\n    if (width == null) {\n        width = contentWidth;\n    }\n    var outerWidth = contentWidth;\n    if (padding) {\n        outerHeight += padding[0] + padding[2];\n        outerWidth += padding[1] + padding[3];\n        width += padding[1] + padding[3];\n    }\n    if (bgColorDrawn) {\n        outerWidth = width;\n    }\n    return {\n        lines: lines,\n        height: height,\n        outerWidth: outerWidth,\n        outerHeight: outerHeight,\n        lineHeight: lineHeight,\n        calculatedLineHeight: calculatedLineHeight,\n        contentWidth: contentWidth,\n        contentHeight: contentHeight,\n        width: width\n    };\n}\nvar RichTextToken = (function () {\n    function RichTextToken() {\n    }\n    return RichTextToken;\n}());\nvar RichTextLine = (function () {\n    function RichTextLine(tokens) {\n        this.tokens = [];\n        if (tokens) {\n            this.tokens = tokens;\n        }\n    }\n    return RichTextLine;\n}());\nvar RichTextContentBlock = (function () {\n    function RichTextContentBlock() {\n        this.width = 0;\n        this.height = 0;\n        this.contentWidth = 0;\n        this.contentHeight = 0;\n        this.outerWidth = 0;\n        this.outerHeight = 0;\n        this.lines = [];\n    }\n    return RichTextContentBlock;\n}());\nexport { RichTextContentBlock };\nexport function parseRichText(text, style) {\n    var contentBlock = new RichTextContentBlock();\n    text != null && (text += '');\n    if (!text) {\n        return contentBlock;\n    }\n    var topWidth = style.width;\n    var topHeight = style.height;\n    var overflow = style.overflow;\n    var wrapInfo = (overflow === 'break' || overflow === 'breakAll') && topWidth != null\n        ? { width: topWidth, accumWidth: 0, breakAll: overflow === 'breakAll' }\n        : null;\n    var lastIndex = STYLE_REG.lastIndex = 0;\n    var result;\n    while ((result = STYLE_REG.exec(text)) != null) {\n        var matchedIndex = result.index;\n        if (matchedIndex > lastIndex) {\n            pushTokens(contentBlock, text.substring(lastIndex, matchedIndex), style, wrapInfo);\n        }\n        pushTokens(contentBlock, result[2], style, wrapInfo, result[1]);\n        lastIndex = STYLE_REG.lastIndex;\n    }\n    if (lastIndex < text.length) {\n        pushTokens(contentBlock, text.substring(lastIndex, text.length), style, wrapInfo);\n    }\n    var pendingList = [];\n    var calculatedHeight = 0;\n    var calculatedWidth = 0;\n    var stlPadding = style.padding;\n    var truncate = overflow === 'truncate';\n    var truncateLine = style.lineOverflow === 'truncate';\n    function finishLine(line, lineWidth, lineHeight) {\n        line.width = lineWidth;\n        line.lineHeight = lineHeight;\n        calculatedHeight += lineHeight;\n        calculatedWidth = Math.max(calculatedWidth, lineWidth);\n    }\n    outer: for (var i = 0; i < contentBlock.lines.length; i++) {\n        var line = contentBlock.lines[i];\n        var lineHeight = 0;\n        var lineWidth = 0;\n        for (var j = 0; j < line.tokens.length; j++) {\n            var token = line.tokens[j];\n            var tokenStyle = token.styleName && style.rich[token.styleName] || {};\n            var textPadding = token.textPadding = tokenStyle.padding;\n            var paddingH = textPadding ? textPadding[1] + textPadding[3] : 0;\n            var font = token.font = tokenStyle.font || style.font;\n            token.contentHeight = getLineHeight(font);\n            var tokenHeight = retrieve2(tokenStyle.height, token.contentHeight);\n            token.innerHeight = tokenHeight;\n            textPadding && (tokenHeight += textPadding[0] + textPadding[2]);\n            token.height = tokenHeight;\n            token.lineHeight = retrieve3(tokenStyle.lineHeight, style.lineHeight, tokenHeight);\n            token.align = tokenStyle && tokenStyle.align || style.align;\n            token.verticalAlign = tokenStyle && tokenStyle.verticalAlign || 'middle';\n            if (truncateLine && topHeight != null && calculatedHeight + token.lineHeight > topHeight) {\n                if (j > 0) {\n                    line.tokens = line.tokens.slice(0, j);\n                    finishLine(line, lineWidth, lineHeight);\n                    contentBlock.lines = contentBlock.lines.slice(0, i + 1);\n                }\n                else {\n                    contentBlock.lines = contentBlock.lines.slice(0, i);\n                }\n                break outer;\n            }\n            var styleTokenWidth = tokenStyle.width;\n            var tokenWidthNotSpecified = styleTokenWidth == null || styleTokenWidth === 'auto';\n            if (typeof styleTokenWidth === 'string' && styleTokenWidth.charAt(styleTokenWidth.length - 1) === '%') {\n                token.percentWidth = styleTokenWidth;\n                pendingList.push(token);\n                token.contentWidth = getWidth(token.text, font);\n            }\n            else {\n                if (tokenWidthNotSpecified) {\n                    var textBackgroundColor = tokenStyle.backgroundColor;\n                    var bgImg = textBackgroundColor && textBackgroundColor.image;\n                    if (bgImg) {\n                        bgImg = imageHelper.findExistImage(bgImg);\n                        if (imageHelper.isImageReady(bgImg)) {\n                            token.width = Math.max(token.width, bgImg.width * tokenHeight / bgImg.height);\n                        }\n                    }\n                }\n                var remainTruncWidth = truncate && topWidth != null\n                    ? topWidth - lineWidth : null;\n                if (remainTruncWidth != null && remainTruncWidth < token.width) {\n                    if (!tokenWidthNotSpecified || remainTruncWidth < paddingH) {\n                        token.text = '';\n                        token.width = token.contentWidth = 0;\n                    }\n                    else {\n                        token.text = truncateText(token.text, remainTruncWidth - paddingH, font, style.ellipsis, { minChar: style.truncateMinChar });\n                        token.width = token.contentWidth = getWidth(token.text, font);\n                    }\n                }\n                else {\n                    token.contentWidth = getWidth(token.text, font);\n                }\n            }\n            token.width += paddingH;\n            lineWidth += token.width;\n            tokenStyle && (lineHeight = Math.max(lineHeight, token.lineHeight));\n        }\n        finishLine(line, lineWidth, lineHeight);\n    }\n    contentBlock.outerWidth = contentBlock.width = retrieve2(topWidth, calculatedWidth);\n    contentBlock.outerHeight = contentBlock.height = retrieve2(topHeight, calculatedHeight);\n    contentBlock.contentHeight = calculatedHeight;\n    contentBlock.contentWidth = calculatedWidth;\n    if (stlPadding) {\n        contentBlock.outerWidth += stlPadding[1] + stlPadding[3];\n        contentBlock.outerHeight += stlPadding[0] + stlPadding[2];\n    }\n    for (var i = 0; i < pendingList.length; i++) {\n        var token = pendingList[i];\n        var percentWidth = token.percentWidth;\n        token.width = parseInt(percentWidth, 10) / 100 * contentBlock.width;\n    }\n    return contentBlock;\n}\nfunction pushTokens(block, str, style, wrapInfo, styleName) {\n    var isEmptyStr = str === '';\n    var tokenStyle = styleName && style.rich[styleName] || {};\n    var lines = block.lines;\n    var font = tokenStyle.font || style.font;\n    var newLine = false;\n    var strLines;\n    var linesWidths;\n    if (wrapInfo) {\n        var tokenPadding = tokenStyle.padding;\n        var tokenPaddingH = tokenPadding ? tokenPadding[1] + tokenPadding[3] : 0;\n        if (tokenStyle.width != null && tokenStyle.width !== 'auto') {\n            var outerWidth_1 = parsePercent(tokenStyle.width, wrapInfo.width) + tokenPaddingH;\n            if (lines.length > 0) {\n                if (outerWidth_1 + wrapInfo.accumWidth > wrapInfo.width) {\n                    strLines = str.split('\\n');\n                    newLine = true;\n                }\n            }\n            wrapInfo.accumWidth = outerWidth_1;\n        }\n        else {\n            var res = wrapText(str, font, wrapInfo.width, wrapInfo.breakAll, wrapInfo.accumWidth);\n            wrapInfo.accumWidth = res.accumWidth + tokenPaddingH;\n            linesWidths = res.linesWidths;\n            strLines = res.lines;\n        }\n    }\n    else {\n        strLines = str.split('\\n');\n    }\n    for (var i = 0; i < strLines.length; i++) {\n        var text = strLines[i];\n        var token = new RichTextToken();\n        token.styleName = styleName;\n        token.text = text;\n        token.isLineHolder = !text && !isEmptyStr;\n        if (typeof tokenStyle.width === 'number') {\n            token.width = tokenStyle.width;\n        }\n        else {\n            token.width = linesWidths\n                ? linesWidths[i]\n                : getWidth(text, font);\n        }\n        if (!i && !newLine) {\n            var tokens = (lines[lines.length - 1] || (lines[0] = new RichTextLine())).tokens;\n            var tokensLen = tokens.length;\n            (tokensLen === 1 && tokens[0].isLineHolder)\n                ? (tokens[0] = token)\n                : ((text || !tokensLen || isEmptyStr) && tokens.push(token));\n        }\n        else {\n            lines.push(new RichTextLine([token]));\n        }\n    }\n}\nfunction isAlphabeticLetter(ch) {\n    var code = ch.charCodeAt(0);\n    return code >= 0x20 && code <= 0x24F\n        || code >= 0x370 && code <= 0x10FF\n        || code >= 0x1200 && code <= 0x13FF\n        || code >= 0x1E00 && code <= 0x206F;\n}\nvar breakCharMap = reduce(',&?/;] '.split(''), function (obj, ch) {\n    obj[ch] = true;\n    return obj;\n}, {});\nfunction isWordBreakChar(ch) {\n    if (isAlphabeticLetter(ch)) {\n        if (breakCharMap[ch]) {\n            return true;\n        }\n        return false;\n    }\n    return true;\n}\nfunction wrapText(text, font, lineWidth, isBreakAll, lastAccumWidth) {\n    var lines = [];\n    var linesWidths = [];\n    var line = '';\n    var currentWord = '';\n    var currentWordWidth = 0;\n    var accumWidth = 0;\n    for (var i = 0; i < text.length; i++) {\n        var ch = text.charAt(i);\n        if (ch === '\\n') {\n            if (currentWord) {\n                line += currentWord;\n                accumWidth += currentWordWidth;\n            }\n            lines.push(line);\n            linesWidths.push(accumWidth);\n            line = '';\n            currentWord = '';\n            currentWordWidth = 0;\n            accumWidth = 0;\n            continue;\n        }\n        var chWidth = getWidth(ch, font);\n        var inWord = isBreakAll ? false : !isWordBreakChar(ch);\n        if (!lines.length\n            ? lastAccumWidth + accumWidth + chWidth > lineWidth\n            : accumWidth + chWidth > lineWidth) {\n            if (!accumWidth) {\n                if (inWord) {\n                    lines.push(currentWord);\n                    linesWidths.push(currentWordWidth);\n                    currentWord = ch;\n                    currentWordWidth = chWidth;\n                }\n                else {\n                    lines.push(ch);\n                    linesWidths.push(chWidth);\n                }\n            }\n            else if (line || currentWord) {\n                if (inWord) {\n                    if (!line) {\n                        line = currentWord;\n                        currentWord = '';\n                        currentWordWidth = 0;\n                        accumWidth = currentWordWidth;\n                    }\n                    lines.push(line);\n                    linesWidths.push(accumWidth - currentWordWidth);\n                    currentWord += ch;\n                    currentWordWidth += chWidth;\n                    line = '';\n                    accumWidth = currentWordWidth;\n                }\n                else {\n                    if (currentWord) {\n                        line += currentWord;\n                        currentWord = '';\n                        currentWordWidth = 0;\n                    }\n                    lines.push(line);\n                    linesWidths.push(accumWidth);\n                    line = ch;\n                    accumWidth = chWidth;\n                }\n            }\n            continue;\n        }\n        accumWidth += chWidth;\n        if (inWord) {\n            currentWord += ch;\n            currentWordWidth += chWidth;\n        }\n        else {\n            if (currentWord) {\n                line += currentWord;\n                currentWord = '';\n                currentWordWidth = 0;\n            }\n            line += ch;\n        }\n    }\n    if (!lines.length && !line) {\n        line = text;\n        currentWord = '';\n        currentWordWidth = 0;\n    }\n    if (currentWord) {\n        line += currentWord;\n    }\n    if (line) {\n        lines.push(line);\n        linesWidths.push(accumWidth);\n    }\n    if (lines.length === 1) {\n        accumWidth += lastAccumWidth;\n    }\n    return {\n        accumWidth: accumWidth,\n        lines: lines,\n        linesWidths: linesWidths\n    };\n}\n","import { __extends } from \"tslib\";\nimport Element from '../Element.js';\nimport BoundingRect from '../core/BoundingRect.js';\nimport { keys, extend, createObject } from '../core/util.js';\nimport { REDRAW_BIT, STYLE_CHANGED_BIT } from './constants.js';\nvar STYLE_MAGIC_KEY = '__zr_style_' + Math.round((Math.random() * 10));\nexport var DEFAULT_COMMON_STYLE = {\n    shadowBlur: 0,\n    shadowOffsetX: 0,\n    shadowOffsetY: 0,\n    shadowColor: '#000',\n    opacity: 1,\n    blend: 'source-over'\n};\nexport var DEFAULT_COMMON_ANIMATION_PROPS = {\n    style: {\n        shadowBlur: true,\n        shadowOffsetX: true,\n        shadowOffsetY: true,\n        shadowColor: true,\n        opacity: true\n    }\n};\nDEFAULT_COMMON_STYLE[STYLE_MAGIC_KEY] = true;\nvar PRIMARY_STATES_KEYS = ['z', 'z2', 'invisible'];\nvar PRIMARY_STATES_KEYS_IN_HOVER_LAYER = ['invisible'];\nvar Displayable = (function (_super) {\n    __extends(Displayable, _super);\n    function Displayable(props) {\n        return _super.call(this, props) || this;\n    }\n    Displayable.prototype._init = function (props) {\n        var keysArr = keys(props);\n        for (var i = 0; i < keysArr.length; i++) {\n            var key = keysArr[i];\n            if (key === 'style') {\n                this.useStyle(props[key]);\n            }\n            else {\n                _super.prototype.attrKV.call(this, key, props[key]);\n            }\n        }\n        if (!this.style) {\n            this.useStyle({});\n        }\n    };\n    Displayable.prototype.beforeBrush = function () { };\n    Displayable.prototype.afterBrush = function () { };\n    Displayable.prototype.innerBeforeBrush = function () { };\n    Displayable.prototype.innerAfterBrush = function () { };\n    Displayable.prototype.shouldBePainted = function (viewWidth, viewHeight, considerClipPath, considerAncestors) {\n        var m = this.transform;\n        if (this.ignore\n            || this.invisible\n            || this.style.opacity === 0\n            || (this.culling\n                && isDisplayableCulled(this, viewWidth, viewHeight))\n            || (m && !m[0] && !m[3])) {\n            return false;\n        }\n        if (considerClipPath && this.__clipPaths) {\n            for (var i = 0; i < this.__clipPaths.length; ++i) {\n                if (this.__clipPaths[i].isZeroArea()) {\n                    return false;\n                }\n            }\n        }\n        if (considerAncestors && this.parent) {\n            var parent_1 = this.parent;\n            while (parent_1) {\n                if (parent_1.ignore) {\n                    return false;\n                }\n                parent_1 = parent_1.parent;\n            }\n        }\n        return true;\n    };\n    Displayable.prototype.contain = function (x, y) {\n        return this.rectContain(x, y);\n    };\n    Displayable.prototype.traverse = function (cb, context) {\n        cb.call(context, this);\n    };\n    Displayable.prototype.rectContain = function (x, y) {\n        var coord = this.transformCoordToLocal(x, y);\n        var rect = this.getBoundingRect();\n        return rect.contain(coord[0], coord[1]);\n    };\n    Displayable.prototype.getPaintRect = function () {\n        var rect = this._paintRect;\n        if (!this._paintRect || this.__dirty) {\n            var transform = this.transform;\n            var elRect = this.getBoundingRect();\n            var style = this.style;\n            var shadowSize = style.shadowBlur || 0;\n            var shadowOffsetX = style.shadowOffsetX || 0;\n            var shadowOffsetY = style.shadowOffsetY || 0;\n            rect = this._paintRect || (this._paintRect = new BoundingRect(0, 0, 0, 0));\n            if (transform) {\n                BoundingRect.applyTransform(rect, elRect, transform);\n            }\n            else {\n                rect.copy(elRect);\n            }\n            if (shadowSize || shadowOffsetX || shadowOffsetY) {\n                rect.width += shadowSize * 2 + Math.abs(shadowOffsetX);\n                rect.height += shadowSize * 2 + Math.abs(shadowOffsetY);\n                rect.x = Math.min(rect.x, rect.x + shadowOffsetX - shadowSize);\n                rect.y = Math.min(rect.y, rect.y + shadowOffsetY - shadowSize);\n            }\n            var tolerance = this.dirtyRectTolerance;\n            if (!rect.isZero()) {\n                rect.x = Math.floor(rect.x - tolerance);\n                rect.y = Math.floor(rect.y - tolerance);\n                rect.width = Math.ceil(rect.width + 1 + tolerance * 2);\n                rect.height = Math.ceil(rect.height + 1 + tolerance * 2);\n            }\n        }\n        return rect;\n    };\n    Displayable.prototype.setPrevPaintRect = function (paintRect) {\n        if (paintRect) {\n            this._prevPaintRect = this._prevPaintRect || new BoundingRect(0, 0, 0, 0);\n            this._prevPaintRect.copy(paintRect);\n        }\n        else {\n            this._prevPaintRect = null;\n        }\n    };\n    Displayable.prototype.getPrevPaintRect = function () {\n        return this._prevPaintRect;\n    };\n    Displayable.prototype.animateStyle = function (loop) {\n        return this.animate('style', loop);\n    };\n    Displayable.prototype.updateDuringAnimation = function (targetKey) {\n        if (targetKey === 'style') {\n            this.dirtyStyle();\n        }\n        else {\n            this.markRedraw();\n        }\n    };\n    Displayable.prototype.attrKV = function (key, value) {\n        if (key !== 'style') {\n            _super.prototype.attrKV.call(this, key, value);\n        }\n        else {\n            if (!this.style) {\n                this.useStyle(value);\n            }\n            else {\n                this.setStyle(value);\n            }\n        }\n    };\n    Displayable.prototype.setStyle = function (keyOrObj, value) {\n        if (typeof keyOrObj === 'string') {\n            this.style[keyOrObj] = value;\n        }\n        else {\n            extend(this.style, keyOrObj);\n        }\n        this.dirtyStyle();\n        return this;\n    };\n    Displayable.prototype.dirtyStyle = function (notRedraw) {\n        if (!notRedraw) {\n            this.markRedraw();\n        }\n        this.__dirty |= STYLE_CHANGED_BIT;\n        if (this._rect) {\n            this._rect = null;\n        }\n    };\n    Displayable.prototype.dirty = function () {\n        this.dirtyStyle();\n    };\n    Displayable.prototype.styleChanged = function () {\n        return !!(this.__dirty & STYLE_CHANGED_BIT);\n    };\n    Displayable.prototype.styleUpdated = function () {\n        this.__dirty &= ~STYLE_CHANGED_BIT;\n    };\n    Displayable.prototype.createStyle = function (obj) {\n        return createObject(DEFAULT_COMMON_STYLE, obj);\n    };\n    Displayable.prototype.useStyle = function (obj) {\n        if (!obj[STYLE_MAGIC_KEY]) {\n            obj = this.createStyle(obj);\n        }\n        if (this.__inHover) {\n            this.__hoverStyle = obj;\n        }\n        else {\n            this.style = obj;\n        }\n        this.dirtyStyle();\n    };\n    Displayable.prototype.isStyleObject = function (obj) {\n        return obj[STYLE_MAGIC_KEY];\n    };\n    Displayable.prototype._innerSaveToNormal = function (toState) {\n        _super.prototype._innerSaveToNormal.call(this, toState);\n        var normalState = this._normalState;\n        if (toState.style && !normalState.style) {\n            normalState.style = this._mergeStyle(this.createStyle(), this.style);\n        }\n        this._savePrimaryToNormal(toState, normalState, PRIMARY_STATES_KEYS);\n    };\n    Displayable.prototype._applyStateObj = function (stateName, state, normalState, keepCurrentStates, transition, animationCfg) {\n        _super.prototype._applyStateObj.call(this, stateName, state, normalState, keepCurrentStates, transition, animationCfg);\n        var needsRestoreToNormal = !(state && keepCurrentStates);\n        var targetStyle;\n        if (state && state.style) {\n            if (transition) {\n                if (keepCurrentStates) {\n                    targetStyle = state.style;\n                }\n                else {\n                    targetStyle = this._mergeStyle(this.createStyle(), normalState.style);\n                    this._mergeStyle(targetStyle, state.style);\n                }\n            }\n            else {\n                targetStyle = this._mergeStyle(this.createStyle(), keepCurrentStates ? this.style : normalState.style);\n                this._mergeStyle(targetStyle, state.style);\n            }\n        }\n        else if (needsRestoreToNormal) {\n            targetStyle = normalState.style;\n        }\n        if (targetStyle) {\n            if (transition) {\n                var sourceStyle = this.style;\n                this.style = this.createStyle(needsRestoreToNormal ? {} : sourceStyle);\n                if (needsRestoreToNormal) {\n                    var changedKeys = keys(sourceStyle);\n                    for (var i = 0; i < changedKeys.length; i++) {\n                        var key = changedKeys[i];\n                        if (key in targetStyle) {\n                            targetStyle[key] = targetStyle[key];\n                            this.style[key] = sourceStyle[key];\n                        }\n                    }\n                }\n                var targetKeys = keys(targetStyle);\n                for (var i = 0; i < targetKeys.length; i++) {\n                    var key = targetKeys[i];\n                    this.style[key] = this.style[key];\n                }\n                this._transitionState(stateName, {\n                    style: targetStyle\n                }, animationCfg, this.getAnimationStyleProps());\n            }\n            else {\n                this.useStyle(targetStyle);\n            }\n        }\n        var statesKeys = this.__inHover ? PRIMARY_STATES_KEYS_IN_HOVER_LAYER : PRIMARY_STATES_KEYS;\n        for (var i = 0; i < statesKeys.length; i++) {\n            var key = statesKeys[i];\n            if (state && state[key] != null) {\n                this[key] = state[key];\n            }\n            else if (needsRestoreToNormal) {\n                if (normalState[key] != null) {\n                    this[key] = normalState[key];\n                }\n            }\n        }\n    };\n    Displayable.prototype._mergeStates = function (states) {\n        var mergedState = _super.prototype._mergeStates.call(this, states);\n        var mergedStyle;\n        for (var i = 0; i < states.length; i++) {\n            var state = states[i];\n            if (state.style) {\n                mergedStyle = mergedStyle || {};\n                this._mergeStyle(mergedStyle, state.style);\n            }\n        }\n        if (mergedStyle) {\n            mergedState.style = mergedStyle;\n        }\n        return mergedState;\n    };\n    Displayable.prototype._mergeStyle = function (targetStyle, sourceStyle) {\n        extend(targetStyle, sourceStyle);\n        return targetStyle;\n    };\n    Displayable.prototype.getAnimationStyleProps = function () {\n        return DEFAULT_COMMON_ANIMATION_PROPS;\n    };\n    Displayable.initDefaultProps = (function () {\n        var dispProto = Displayable.prototype;\n        dispProto.type = 'displayable';\n        dispProto.invisible = false;\n        dispProto.z = 0;\n        dispProto.z2 = 0;\n        dispProto.zlevel = 0;\n        dispProto.culling = false;\n        dispProto.cursor = 'pointer';\n        dispProto.rectHover = false;\n        dispProto.incremental = false;\n        dispProto._rect = null;\n        dispProto.dirtyRectTolerance = 0;\n        dispProto.__dirty = REDRAW_BIT | STYLE_CHANGED_BIT;\n    })();\n    return Displayable;\n}(Element));\nvar tmpRect = new BoundingRect(0, 0, 0, 0);\nvar viewRect = new BoundingRect(0, 0, 0, 0);\nfunction isDisplayableCulled(el, width, height) {\n    tmpRect.copy(el.getBoundingRect());\n    if (el.transform) {\n        tmpRect.applyTransform(el.transform);\n    }\n    viewRect.width = width;\n    viewRect.height = height;\n    return !tmpRect.intersect(viewRect);\n}\nexport default Displayable;\n","import * as vec2 from './vector.js';\nimport * as curve from './curve.js';\nvar mathMin = Math.min;\nvar mathMax = Math.max;\nvar mathSin = Math.sin;\nvar mathCos = Math.cos;\nvar PI2 = Math.PI * 2;\nvar start = vec2.create();\nvar end = vec2.create();\nvar extremity = vec2.create();\nexport function fromPoints(points, min, max) {\n    if (points.length === 0) {\n        return;\n    }\n    var p = points[0];\n    var left = p[0];\n    var right = p[0];\n    var top = p[1];\n    var bottom = p[1];\n    for (var i = 1; i < points.length; i++) {\n        p = points[i];\n        left = mathMin(left, p[0]);\n        right = mathMax(right, p[0]);\n        top = mathMin(top, p[1]);\n        bottom = mathMax(bottom, p[1]);\n    }\n    min[0] = left;\n    min[1] = top;\n    max[0] = right;\n    max[1] = bottom;\n}\nexport function fromLine(x0, y0, x1, y1, min, max) {\n    min[0] = mathMin(x0, x1);\n    min[1] = mathMin(y0, y1);\n    max[0] = mathMax(x0, x1);\n    max[1] = mathMax(y0, y1);\n}\nvar xDim = [];\nvar yDim = [];\nexport function fromCubic(x0, y0, x1, y1, x2, y2, x3, y3, min, max) {\n    var cubicExtrema = curve.cubicExtrema;\n    var cubicAt = curve.cubicAt;\n    var n = cubicExtrema(x0, x1, x2, x3, xDim);\n    min[0] = Infinity;\n    min[1] = Infinity;\n    max[0] = -Infinity;\n    max[1] = -Infinity;\n    for (var i = 0; i < n; i++) {\n        var x = cubicAt(x0, x1, x2, x3, xDim[i]);\n        min[0] = mathMin(x, min[0]);\n        max[0] = mathMax(x, max[0]);\n    }\n    n = cubicExtrema(y0, y1, y2, y3, yDim);\n    for (var i = 0; i < n; i++) {\n        var y = cubicAt(y0, y1, y2, y3, yDim[i]);\n        min[1] = mathMin(y, min[1]);\n        max[1] = mathMax(y, max[1]);\n    }\n    min[0] = mathMin(x0, min[0]);\n    max[0] = mathMax(x0, max[0]);\n    min[0] = mathMin(x3, min[0]);\n    max[0] = mathMax(x3, max[0]);\n    min[1] = mathMin(y0, min[1]);\n    max[1] = mathMax(y0, max[1]);\n    min[1] = mathMin(y3, min[1]);\n    max[1] = mathMax(y3, max[1]);\n}\nexport function fromQuadratic(x0, y0, x1, y1, x2, y2, min, max) {\n    var quadraticExtremum = curve.quadraticExtremum;\n    var quadraticAt = curve.quadraticAt;\n    var tx = mathMax(mathMin(quadraticExtremum(x0, x1, x2), 1), 0);\n    var ty = mathMax(mathMin(quadraticExtremum(y0, y1, y2), 1), 0);\n    var x = quadraticAt(x0, x1, x2, tx);\n    var y = quadraticAt(y0, y1, y2, ty);\n    min[0] = mathMin(x0, x2, x);\n    min[1] = mathMin(y0, y2, y);\n    max[0] = mathMax(x0, x2, x);\n    max[1] = mathMax(y0, y2, y);\n}\nexport function fromArc(x, y, rx, ry, startAngle, endAngle, anticlockwise, min, max) {\n    var vec2Min = vec2.min;\n    var vec2Max = vec2.max;\n    var diff = Math.abs(startAngle - endAngle);\n    if (diff % PI2 < 1e-4 && diff > 1e-4) {\n        min[0] = x - rx;\n        min[1] = y - ry;\n        max[0] = x + rx;\n        max[1] = y + ry;\n        return;\n    }\n    start[0] = mathCos(startAngle) * rx + x;\n    start[1] = mathSin(startAngle) * ry + y;\n    end[0] = mathCos(endAngle) * rx + x;\n    end[1] = mathSin(endAngle) * ry + y;\n    vec2Min(min, start, end);\n    vec2Max(max, start, end);\n    startAngle = startAngle % (PI2);\n    if (startAngle < 0) {\n        startAngle = startAngle + PI2;\n    }\n    endAngle = endAngle % (PI2);\n    if (endAngle < 0) {\n        endAngle = endAngle + PI2;\n    }\n    if (startAngle > endAngle && !anticlockwise) {\n        endAngle += PI2;\n    }\n    else if (startAngle < endAngle && anticlockwise) {\n        startAngle += PI2;\n    }\n    if (anticlockwise) {\n        var tmp = endAngle;\n        endAngle = startAngle;\n        startAngle = tmp;\n    }\n    for (var angle = 0; angle < endAngle; angle += Math.PI / 2) {\n        if (angle > startAngle) {\n            extremity[0] = mathCos(angle) * rx + x;\n            extremity[1] = mathSin(angle) * ry + y;\n            vec2Min(min, extremity, min);\n            vec2Max(max, extremity, max);\n        }\n    }\n}\n","import * as vec2 from './vector.js';\nimport BoundingRect from './BoundingRect.js';\nimport { devicePixelRatio as dpr } from '../config.js';\nimport { fromLine, fromCubic, fromQuadratic, fromArc } from './bbox.js';\nimport { cubicLength, cubicSubdivide, quadraticLength, quadraticSubdivide } from './curve.js';\nvar CMD = {\n    M: 1,\n    L: 2,\n    C: 3,\n    Q: 4,\n    A: 5,\n    Z: 6,\n    R: 7\n};\nvar tmpOutX = [];\nvar tmpOutY = [];\nvar min = [];\nvar max = [];\nvar min2 = [];\nvar max2 = [];\nvar mathMin = Math.min;\nvar mathMax = Math.max;\nvar mathCos = Math.cos;\nvar mathSin = Math.sin;\nvar mathAbs = Math.abs;\nvar PI = Math.PI;\nvar PI2 = PI * 2;\nvar hasTypedArray = typeof Float32Array !== 'undefined';\nvar tmpAngles = [];\nfunction modPI2(radian) {\n    var n = Math.round(radian / PI * 1e8) / 1e8;\n    return (n % 2) * PI;\n}\nexport function normalizeArcAngles(angles, anticlockwise) {\n    var newStartAngle = modPI2(angles[0]);\n    if (newStartAngle < 0) {\n        newStartAngle += PI2;\n    }\n    var delta = newStartAngle - angles[0];\n    var newEndAngle = angles[1];\n    newEndAngle += delta;\n    if (!anticlockwise && newEndAngle - newStartAngle >= PI2) {\n        newEndAngle = newStartAngle + PI2;\n    }\n    else if (anticlockwise && newStartAngle - newEndAngle >= PI2) {\n        newEndAngle = newStartAngle - PI2;\n    }\n    else if (!anticlockwise && newStartAngle > newEndAngle) {\n        newEndAngle = newStartAngle + (PI2 - modPI2(newStartAngle - newEndAngle));\n    }\n    else if (anticlockwise && newStartAngle < newEndAngle) {\n        newEndAngle = newStartAngle - (PI2 - modPI2(newEndAngle - newStartAngle));\n    }\n    angles[0] = newStartAngle;\n    angles[1] = newEndAngle;\n}\nvar PathProxy = (function () {\n    function PathProxy(notSaveData) {\n        this.dpr = 1;\n        this._xi = 0;\n        this._yi = 0;\n        this._x0 = 0;\n        this._y0 = 0;\n        this._len = 0;\n        if (notSaveData) {\n            this._saveData = false;\n        }\n        if (this._saveData) {\n            this.data = [];\n        }\n    }\n    PathProxy.prototype.increaseVersion = function () {\n        this._version++;\n    };\n    PathProxy.prototype.getVersion = function () {\n        return this._version;\n    };\n    PathProxy.prototype.setScale = function (sx, sy, segmentIgnoreThreshold) {\n        segmentIgnoreThreshold = segmentIgnoreThreshold || 0;\n        if (segmentIgnoreThreshold > 0) {\n            this._ux = mathAbs(segmentIgnoreThreshold / dpr / sx) || 0;\n            this._uy = mathAbs(segmentIgnoreThreshold / dpr / sy) || 0;\n        }\n    };\n    PathProxy.prototype.setDPR = function (dpr) {\n        this.dpr = dpr;\n    };\n    PathProxy.prototype.setContext = function (ctx) {\n        this._ctx = ctx;\n    };\n    PathProxy.prototype.getContext = function () {\n        return this._ctx;\n    };\n    PathProxy.prototype.beginPath = function () {\n        this._ctx && this._ctx.beginPath();\n        this.reset();\n        return this;\n    };\n    PathProxy.prototype.reset = function () {\n        if (this._saveData) {\n            this._len = 0;\n        }\n        if (this._pathSegLen) {\n            this._pathSegLen = null;\n            this._pathLen = 0;\n        }\n        this._version++;\n    };\n    PathProxy.prototype.moveTo = function (x, y) {\n        this._drawPendingPt();\n        this.addData(CMD.M, x, y);\n        this._ctx && this._ctx.moveTo(x, y);\n        this._x0 = x;\n        this._y0 = y;\n        this._xi = x;\n        this._yi = y;\n        return this;\n    };\n    PathProxy.prototype.lineTo = function (x, y) {\n        var dx = mathAbs(x - this._xi);\n        var dy = mathAbs(y - this._yi);\n        var exceedUnit = dx > this._ux || dy > this._uy;\n        this.addData(CMD.L, x, y);\n        if (this._ctx && exceedUnit) {\n            this._ctx.lineTo(x, y);\n        }\n        if (exceedUnit) {\n            this._xi = x;\n            this._yi = y;\n            this._pendingPtDist = 0;\n        }\n        else {\n            var d2 = dx * dx + dy * dy;\n            if (d2 > this._pendingPtDist) {\n                this._pendingPtX = x;\n                this._pendingPtY = y;\n                this._pendingPtDist = d2;\n            }\n        }\n        return this;\n    };\n    PathProxy.prototype.bezierCurveTo = function (x1, y1, x2, y2, x3, y3) {\n        this._drawPendingPt();\n        this.addData(CMD.C, x1, y1, x2, y2, x3, y3);\n        if (this._ctx) {\n            this._ctx.bezierCurveTo(x1, y1, x2, y2, x3, y3);\n        }\n        this._xi = x3;\n        this._yi = y3;\n        return this;\n    };\n    PathProxy.prototype.quadraticCurveTo = function (x1, y1, x2, y2) {\n        this._drawPendingPt();\n        this.addData(CMD.Q, x1, y1, x2, y2);\n        if (this._ctx) {\n            this._ctx.quadraticCurveTo(x1, y1, x2, y2);\n        }\n        this._xi = x2;\n        this._yi = y2;\n        return this;\n    };\n    PathProxy.prototype.arc = function (cx, cy, r, startAngle, endAngle, anticlockwise) {\n        this._drawPendingPt();\n        tmpAngles[0] = startAngle;\n        tmpAngles[1] = endAngle;\n        normalizeArcAngles(tmpAngles, anticlockwise);\n        startAngle = tmpAngles[0];\n        endAngle = tmpAngles[1];\n        var delta = endAngle - startAngle;\n        this.addData(CMD.A, cx, cy, r, r, startAngle, delta, 0, anticlockwise ? 0 : 1);\n        this._ctx && this._ctx.arc(cx, cy, r, startAngle, endAngle, anticlockwise);\n        this._xi = mathCos(endAngle) * r + cx;\n        this._yi = mathSin(endAngle) * r + cy;\n        return this;\n    };\n    PathProxy.prototype.arcTo = function (x1, y1, x2, y2, radius) {\n        this._drawPendingPt();\n        if (this._ctx) {\n            this._ctx.arcTo(x1, y1, x2, y2, radius);\n        }\n        return this;\n    };\n    PathProxy.prototype.rect = function (x, y, w, h) {\n        this._drawPendingPt();\n        this._ctx && this._ctx.rect(x, y, w, h);\n        this.addData(CMD.R, x, y, w, h);\n        return this;\n    };\n    PathProxy.prototype.closePath = function () {\n        this._drawPendingPt();\n        this.addData(CMD.Z);\n        var ctx = this._ctx;\n        var x0 = this._x0;\n        var y0 = this._y0;\n        if (ctx) {\n            ctx.closePath();\n        }\n        this._xi = x0;\n        this._yi = y0;\n        return this;\n    };\n    PathProxy.prototype.fill = function (ctx) {\n        ctx && ctx.fill();\n        this.toStatic();\n    };\n    PathProxy.prototype.stroke = function (ctx) {\n        ctx && ctx.stroke();\n        this.toStatic();\n    };\n    PathProxy.prototype.len = function () {\n        return this._len;\n    };\n    PathProxy.prototype.setData = function (data) {\n        var len = data.length;\n        if (!(this.data && this.data.length === len) && hasTypedArray) {\n            this.data = new Float32Array(len);\n        }\n        for (var i = 0; i < len; i++) {\n            this.data[i] = data[i];\n        }\n        this._len = len;\n    };\n    PathProxy.prototype.appendPath = function (path) {\n        if (!(path instanceof Array)) {\n            path = [path];\n        }\n        var len = path.length;\n        var appendSize = 0;\n        var offset = this._len;\n        for (var i = 0; i < len; i++) {\n            appendSize += path[i].len();\n        }\n        if (hasTypedArray && (this.data instanceof Float32Array)) {\n            this.data = new Float32Array(offset + appendSize);\n        }\n        for (var i = 0; i < len; i++) {\n            var appendPathData = path[i].data;\n            for (var k = 0; k < appendPathData.length; k++) {\n                this.data[offset++] = appendPathData[k];\n            }\n        }\n        this._len = offset;\n    };\n    PathProxy.prototype.addData = function (cmd, a, b, c, d, e, f, g, h) {\n        if (!this._saveData) {\n            return;\n        }\n        var data = this.data;\n        if (this._len + arguments.length > data.length) {\n            this._expandData();\n            data = this.data;\n        }\n        for (var i = 0; i < arguments.length; i++) {\n            data[this._len++] = arguments[i];\n        }\n    };\n    PathProxy.prototype._drawPendingPt = function () {\n        if (this._pendingPtDist > 0) {\n            this._ctx && this._ctx.lineTo(this._pendingPtX, this._pendingPtY);\n            this._pendingPtDist = 0;\n        }\n    };\n    PathProxy.prototype._expandData = function () {\n        if (!(this.data instanceof Array)) {\n            var newData = [];\n            for (var i = 0; i < this._len; i++) {\n                newData[i] = this.data[i];\n            }\n            this.data = newData;\n        }\n    };\n    PathProxy.prototype.toStatic = function () {\n        if (!this._saveData) {\n            return;\n        }\n        this._drawPendingPt();\n        var data = this.data;\n        if (data instanceof Array) {\n            data.length = this._len;\n            if (hasTypedArray && this._len > 11) {\n                this.data = new Float32Array(data);\n            }\n        }\n    };\n    PathProxy.prototype.getBoundingRect = function () {\n        min[0] = min[1] = min2[0] = min2[1] = Number.MAX_VALUE;\n        max[0] = max[1] = max2[0] = max2[1] = -Number.MAX_VALUE;\n        var data = this.data;\n        var xi = 0;\n        var yi = 0;\n        var x0 = 0;\n        var y0 = 0;\n        var i;\n        for (i = 0; i < this._len;) {\n            var cmd = data[i++];\n            var isFirst = i === 1;\n            if (isFirst) {\n                xi = data[i];\n                yi = data[i + 1];\n                x0 = xi;\n                y0 = yi;\n            }\n            switch (cmd) {\n                case CMD.M:\n                    xi = x0 = data[i++];\n                    yi = y0 = data[i++];\n                    min2[0] = x0;\n                    min2[1] = y0;\n                    max2[0] = x0;\n                    max2[1] = y0;\n                    break;\n                case CMD.L:\n                    fromLine(xi, yi, data[i], data[i + 1], min2, max2);\n                    xi = data[i++];\n                    yi = data[i++];\n                    break;\n                case CMD.C:\n                    fromCubic(xi, yi, data[i++], data[i++], data[i++], data[i++], data[i], data[i + 1], min2, max2);\n                    xi = data[i++];\n                    yi = data[i++];\n                    break;\n                case CMD.Q:\n                    fromQuadratic(xi, yi, data[i++], data[i++], data[i], data[i + 1], min2, max2);\n                    xi = data[i++];\n                    yi = data[i++];\n                    break;\n                case CMD.A:\n                    var cx = data[i++];\n                    var cy = data[i++];\n                    var rx = data[i++];\n                    var ry = data[i++];\n                    var startAngle = data[i++];\n                    var endAngle = data[i++] + startAngle;\n                    i += 1;\n                    var anticlockwise = !data[i++];\n                    if (isFirst) {\n                        x0 = mathCos(startAngle) * rx + cx;\n                        y0 = mathSin(startAngle) * ry + cy;\n                    }\n                    fromArc(cx, cy, rx, ry, startAngle, endAngle, anticlockwise, min2, max2);\n                    xi = mathCos(endAngle) * rx + cx;\n                    yi = mathSin(endAngle) * ry + cy;\n                    break;\n                case CMD.R:\n                    x0 = xi = data[i++];\n                    y0 = yi = data[i++];\n                    var width = data[i++];\n                    var height = data[i++];\n                    fromLine(x0, y0, x0 + width, y0 + height, min2, max2);\n                    break;\n                case CMD.Z:\n                    xi = x0;\n                    yi = y0;\n                    break;\n            }\n            vec2.min(min, min, min2);\n            vec2.max(max, max, max2);\n        }\n        if (i === 0) {\n            min[0] = min[1] = max[0] = max[1] = 0;\n        }\n        return new BoundingRect(min[0], min[1], max[0] - min[0], max[1] - min[1]);\n    };\n    PathProxy.prototype._calculateLength = function () {\n        var data = this.data;\n        var len = this._len;\n        var ux = this._ux;\n        var uy = this._uy;\n        var xi = 0;\n        var yi = 0;\n        var x0 = 0;\n        var y0 = 0;\n        if (!this._pathSegLen) {\n            this._pathSegLen = [];\n        }\n        var pathSegLen = this._pathSegLen;\n        var pathTotalLen = 0;\n        var segCount = 0;\n        for (var i = 0; i < len;) {\n            var cmd = data[i++];\n            var isFirst = i === 1;\n            if (isFirst) {\n                xi = data[i];\n                yi = data[i + 1];\n                x0 = xi;\n                y0 = yi;\n            }\n            var l = -1;\n            switch (cmd) {\n                case CMD.M:\n                    xi = x0 = data[i++];\n                    yi = y0 = data[i++];\n                    break;\n                case CMD.L: {\n                    var x2 = data[i++];\n                    var y2 = data[i++];\n                    var dx = x2 - xi;\n                    var dy = y2 - yi;\n                    if (mathAbs(dx) > ux || mathAbs(dy) > uy || i === len - 1) {\n                        l = Math.sqrt(dx * dx + dy * dy);\n                        xi = x2;\n                        yi = y2;\n                    }\n                    break;\n                }\n                case CMD.C: {\n                    var x1 = data[i++];\n                    var y1 = data[i++];\n                    var x2 = data[i++];\n                    var y2 = data[i++];\n                    var x3 = data[i++];\n                    var y3 = data[i++];\n                    l = cubicLength(xi, yi, x1, y1, x2, y2, x3, y3, 10);\n                    xi = x3;\n                    yi = y3;\n                    break;\n                }\n                case CMD.Q: {\n                    var x1 = data[i++];\n                    var y1 = data[i++];\n                    var x2 = data[i++];\n                    var y2 = data[i++];\n                    l = quadraticLength(xi, yi, x1, y1, x2, y2, 10);\n                    xi = x2;\n                    yi = y2;\n                    break;\n                }\n                case CMD.A:\n                    var cx = data[i++];\n                    var cy = data[i++];\n                    var rx = data[i++];\n                    var ry = data[i++];\n                    var startAngle = data[i++];\n                    var delta = data[i++];\n                    var endAngle = delta + startAngle;\n                    i += 1;\n                    var anticlockwise = !data[i++];\n                    if (isFirst) {\n                        x0 = mathCos(startAngle) * rx + cx;\n                        y0 = mathSin(startAngle) * ry + cy;\n                    }\n                    l = mathMax(rx, ry) * mathMin(PI2, Math.abs(delta));\n                    xi = mathCos(endAngle) * rx + cx;\n                    yi = mathSin(endAngle) * ry + cy;\n                    break;\n                case CMD.R: {\n                    x0 = xi = data[i++];\n                    y0 = yi = data[i++];\n                    var width = data[i++];\n                    var height = data[i++];\n                    l = width * 2 + height * 2;\n                    break;\n                }\n                case CMD.Z: {\n                    var dx = x0 - xi;\n                    var dy = y0 - yi;\n                    l = Math.sqrt(dx * dx + dy * dy);\n                    xi = x0;\n                    yi = y0;\n                    break;\n                }\n            }\n            if (l >= 0) {\n                pathSegLen[segCount++] = l;\n                pathTotalLen += l;\n            }\n        }\n        this._pathLen = pathTotalLen;\n        return pathTotalLen;\n    };\n    PathProxy.prototype.rebuildPath = function (ctx, percent) {\n        var d = this.data;\n        var ux = this._ux;\n        var uy = this._uy;\n        var len = this._len;\n        var x0;\n        var y0;\n        var xi;\n        var yi;\n        var x;\n        var y;\n        var drawPart = percent < 1;\n        var pathSegLen;\n        var pathTotalLen;\n        var accumLength = 0;\n        var segCount = 0;\n        var displayedLength;\n        var pendingPtDist = 0;\n        var pendingPtX;\n        var pendingPtY;\n        if (drawPart) {\n            if (!this._pathSegLen) {\n                this._calculateLength();\n            }\n            pathSegLen = this._pathSegLen;\n            pathTotalLen = this._pathLen;\n            displayedLength = percent * pathTotalLen;\n            if (!displayedLength) {\n                return;\n            }\n        }\n        lo: for (var i = 0; i < len;) {\n            var cmd = d[i++];\n            var isFirst = i === 1;\n            if (isFirst) {\n                xi = d[i];\n                yi = d[i + 1];\n                x0 = xi;\n                y0 = yi;\n            }\n            if (cmd !== CMD.L && pendingPtDist > 0) {\n                ctx.lineTo(pendingPtX, pendingPtY);\n                pendingPtDist = 0;\n            }\n            switch (cmd) {\n                case CMD.M:\n                    x0 = xi = d[i++];\n                    y0 = yi = d[i++];\n                    ctx.moveTo(xi, yi);\n                    break;\n                case CMD.L: {\n                    x = d[i++];\n                    y = d[i++];\n                    var dx = mathAbs(x - xi);\n                    var dy = mathAbs(y - yi);\n                    if (dx > ux || dy > uy) {\n                        if (drawPart) {\n                            var l = pathSegLen[segCount++];\n                            if (accumLength + l > displayedLength) {\n                                var t = (displayedLength - accumLength) / l;\n                                ctx.lineTo(xi * (1 - t) + x * t, yi * (1 - t) + y * t);\n                                break lo;\n                            }\n                            accumLength += l;\n                        }\n                        ctx.lineTo(x, y);\n                        xi = x;\n                        yi = y;\n                        pendingPtDist = 0;\n                    }\n                    else {\n                        var d2 = dx * dx + dy * dy;\n                        if (d2 > pendingPtDist) {\n                            pendingPtX = x;\n                            pendingPtY = y;\n                            pendingPtDist = d2;\n                        }\n                    }\n                    break;\n                }\n                case CMD.C: {\n                    var x1 = d[i++];\n                    var y1 = d[i++];\n                    var x2 = d[i++];\n                    var y2 = d[i++];\n                    var x3 = d[i++];\n                    var y3 = d[i++];\n                    if (drawPart) {\n                        var l = pathSegLen[segCount++];\n                        if (accumLength + l > displayedLength) {\n                            var t = (displayedLength - accumLength) / l;\n                            cubicSubdivide(xi, x1, x2, x3, t, tmpOutX);\n                            cubicSubdivide(yi, y1, y2, y3, t, tmpOutY);\n                            ctx.bezierCurveTo(tmpOutX[1], tmpOutY[1], tmpOutX[2], tmpOutY[2], tmpOutX[3], tmpOutY[3]);\n                            break lo;\n                        }\n                        accumLength += l;\n                    }\n                    ctx.bezierCurveTo(x1, y1, x2, y2, x3, y3);\n                    xi = x3;\n                    yi = y3;\n                    break;\n                }\n                case CMD.Q: {\n                    var x1 = d[i++];\n                    var y1 = d[i++];\n                    var x2 = d[i++];\n                    var y2 = d[i++];\n                    if (drawPart) {\n                        var l = pathSegLen[segCount++];\n                        if (accumLength + l > displayedLength) {\n                            var t = (displayedLength - accumLength) / l;\n                            quadraticSubdivide(xi, x1, x2, t, tmpOutX);\n                            quadraticSubdivide(yi, y1, y2, t, tmpOutY);\n                            ctx.quadraticCurveTo(tmpOutX[1], tmpOutY[1], tmpOutX[2], tmpOutY[2]);\n                            break lo;\n                        }\n                        accumLength += l;\n                    }\n                    ctx.quadraticCurveTo(x1, y1, x2, y2);\n                    xi = x2;\n                    yi = y2;\n                    break;\n                }\n                case CMD.A:\n                    var cx = d[i++];\n                    var cy = d[i++];\n                    var rx = d[i++];\n                    var ry = d[i++];\n                    var startAngle = d[i++];\n                    var delta = d[i++];\n                    var psi = d[i++];\n                    var anticlockwise = !d[i++];\n                    var r = (rx > ry) ? rx : ry;\n                    var isEllipse = mathAbs(rx - ry) > 1e-3;\n                    var endAngle = startAngle + delta;\n                    var breakBuild = false;\n                    if (drawPart) {\n                        var l = pathSegLen[segCount++];\n                        if (accumLength + l > displayedLength) {\n                            endAngle = startAngle + delta * (displayedLength - accumLength) / l;\n                            breakBuild = true;\n                        }\n                        accumLength += l;\n                    }\n                    if (isEllipse && ctx.ellipse) {\n                        ctx.ellipse(cx, cy, rx, ry, psi, startAngle, endAngle, anticlockwise);\n                    }\n                    else {\n                        ctx.arc(cx, cy, r, startAngle, endAngle, anticlockwise);\n                    }\n                    if (breakBuild) {\n                        break lo;\n                    }\n                    if (isFirst) {\n                        x0 = mathCos(startAngle) * rx + cx;\n                        y0 = mathSin(startAngle) * ry + cy;\n                    }\n                    xi = mathCos(endAngle) * rx + cx;\n                    yi = mathSin(endAngle) * ry + cy;\n                    break;\n                case CMD.R:\n                    x0 = xi = d[i];\n                    y0 = yi = d[i + 1];\n                    x = d[i++];\n                    y = d[i++];\n                    var width = d[i++];\n                    var height = d[i++];\n                    if (drawPart) {\n                        var l = pathSegLen[segCount++];\n                        if (accumLength + l > displayedLength) {\n                            var d_1 = displayedLength - accumLength;\n                            ctx.moveTo(x, y);\n                            ctx.lineTo(x + mathMin(d_1, width), y);\n                            d_1 -= width;\n                            if (d_1 > 0) {\n                                ctx.lineTo(x + width, y + mathMin(d_1, height));\n                            }\n                            d_1 -= height;\n                            if (d_1 > 0) {\n                                ctx.lineTo(x + mathMax(width - d_1, 0), y + height);\n                            }\n                            d_1 -= width;\n                            if (d_1 > 0) {\n                                ctx.lineTo(x, y + mathMax(height - d_1, 0));\n                            }\n                            break lo;\n                        }\n                        accumLength += l;\n                    }\n                    ctx.rect(x, y, width, height);\n                    break;\n                case CMD.Z:\n                    if (drawPart) {\n                        var l = pathSegLen[segCount++];\n                        if (accumLength + l > displayedLength) {\n                            var t = (displayedLength - accumLength) / l;\n                            ctx.lineTo(xi * (1 - t) + x0 * t, yi * (1 - t) + y0 * t);\n                            break lo;\n                        }\n                        accumLength += l;\n                    }\n                    ctx.closePath();\n                    xi = x0;\n                    yi = y0;\n            }\n        }\n    };\n    PathProxy.prototype.clone = function () {\n        var newProxy = new PathProxy();\n        var data = this.data;\n        newProxy.data = data.slice ? data.slice()\n            : Array.prototype.slice.call(data);\n        newProxy._len = this._len;\n        return newProxy;\n    };\n    PathProxy.CMD = CMD;\n    PathProxy.initDefaultProps = (function () {\n        var proto = PathProxy.prototype;\n        proto._saveData = true;\n        proto._ux = 0;\n        proto._uy = 0;\n        proto._pendingPtDist = 0;\n        proto._version = 0;\n    })();\n    return PathProxy;\n}());\nexport default PathProxy;\n","export function containStroke(x0, y0, x1, y1, lineWidth, x, y) {\n    if (lineWidth === 0) {\n        return false;\n    }\n    var _l = lineWidth;\n    var _a = 0;\n    var _b = x0;\n    if ((y > y0 + _l && y > y1 + _l)\n        || (y < y0 - _l && y < y1 - _l)\n        || (x > x0 + _l && x > x1 + _l)\n        || (x < x0 - _l && x < x1 - _l)) {\n        return false;\n    }\n    if (x0 !== x1) {\n        _a = (y0 - y1) / (x0 - x1);\n        _b = (x0 * y1 - x1 * y0) / (x0 - x1);\n    }\n    else {\n        return Math.abs(x - x0) <= _l / 2;\n    }\n    var tmp = _a * x - y + _b;\n    var _s = tmp * tmp / (_a * _a + 1);\n    return _s <= _l / 2 * _l / 2;\n}\n","import * as curve from '../core/curve.js';\nexport function containStroke(x0, y0, x1, y1, x2, y2, x3, y3, lineWidth, x, y) {\n    if (lineWidth === 0) {\n        return false;\n    }\n    var _l = lineWidth;\n    if ((y > y0 + _l && y > y1 + _l && y > y2 + _l && y > y3 + _l)\n        || (y < y0 - _l && y < y1 - _l && y < y2 - _l && y < y3 - _l)\n        || (x > x0 + _l && x > x1 + _l && x > x2 + _l && x > x3 + _l)\n        || (x < x0 - _l && x < x1 - _l && x < x2 - _l && x < x3 - _l)) {\n        return false;\n    }\n    var d = curve.cubicProjectPoint(x0, y0, x1, y1, x2, y2, x3, y3, x, y, null);\n    return d <= _l / 2;\n}\n","import { quadraticProjectPoint } from '../core/curve.js';\nexport function containStroke(x0, y0, x1, y1, x2, y2, lineWidth, x, y) {\n    if (lineWidth === 0) {\n        return false;\n    }\n    var _l = lineWidth;\n    if ((y > y0 + _l && y > y1 + _l && y > y2 + _l)\n        || (y < y0 - _l && y < y1 - _l && y < y2 - _l)\n        || (x > x0 + _l && x > x1 + _l && x > x2 + _l)\n        || (x < x0 - _l && x < x1 - _l && x < x2 - _l)) {\n        return false;\n    }\n    var d = quadraticProjectPoint(x0, y0, x1, y1, x2, y2, x, y, null);\n    return d <= _l / 2;\n}\n","var PI2 = Math.PI * 2;\nexport function normalizeRadian(angle) {\n    angle %= PI2;\n    if (angle < 0) {\n        angle += PI2;\n    }\n    return angle;\n}\n","import { normalizeRadian } from './util.js';\nvar PI2 = Math.PI * 2;\nexport function containStroke(cx, cy, r, startAngle, endAngle, anticlockwise, lineWidth, x, y) {\n    if (lineWidth === 0) {\n        return false;\n    }\n    var _l = lineWidth;\n    x -= cx;\n    y -= cy;\n    var d = Math.sqrt(x * x + y * y);\n    if ((d - _l > r) || (d + _l < r)) {\n        return false;\n    }\n    if (Math.abs(startAngle - endAngle) % PI2 < 1e-4) {\n        return true;\n    }\n    if (anticlockwise) {\n        var tmp = startAngle;\n        startAngle = normalizeRadian(endAngle);\n        endAngle = normalizeRadian(tmp);\n    }\n    else {\n        startAngle = normalizeRadian(startAngle);\n        endAngle = normalizeRadian(endAngle);\n    }\n    if (startAngle > endAngle) {\n        endAngle += PI2;\n    }\n    var angle = Math.atan2(y, x);\n    if (angle < 0) {\n        angle += PI2;\n    }\n    return (angle >= startAngle && angle <= endAngle)\n        || (angle + PI2 >= startAngle && angle + PI2 <= endAngle);\n}\n","export default function windingLine(x0, y0, x1, y1, x, y) {\n    if ((y > y0 && y > y1) || (y < y0 && y < y1)) {\n        return 0;\n    }\n    if (y1 === y0) {\n        return 0;\n    }\n    var t = (y - y0) / (y1 - y0);\n    var dir = y1 < y0 ? 1 : -1;\n    if (t === 1 || t === 0) {\n        dir = y1 < y0 ? 0.5 : -0.5;\n    }\n    var x_ = t * (x1 - x0) + x0;\n    return x_ === x ? Infinity : x_ > x ? dir : 0;\n}\n","import PathProxy from '../core/PathProxy.js';\nimport * as line from './line.js';\nimport * as cubic from './cubic.js';\nimport * as quadratic from './quadratic.js';\nimport * as arc from './arc.js';\nimport * as curve from '../core/curve.js';\nimport windingLine from './windingLine.js';\nvar CMD = PathProxy.CMD;\nvar PI2 = Math.PI * 2;\nvar EPSILON = 1e-4;\nfunction isAroundEqual(a, b) {\n    return Math.abs(a - b) < EPSILON;\n}\nvar roots = [-1, -1, -1];\nvar extrema = [-1, -1];\nfunction swapExtrema() {\n    var tmp = extrema[0];\n    extrema[0] = extrema[1];\n    extrema[1] = tmp;\n}\nfunction windingCubic(x0, y0, x1, y1, x2, y2, x3, y3, x, y) {\n    if ((y > y0 && y > y1 && y > y2 && y > y3)\n        || (y < y0 && y < y1 && y < y2 && y < y3)) {\n        return 0;\n    }\n    var nRoots = curve.cubicRootAt(y0, y1, y2, y3, y, roots);\n    if (nRoots === 0) {\n        return 0;\n    }\n    else {\n        var w = 0;\n        var nExtrema = -1;\n        var y0_ = void 0;\n        var y1_ = void 0;\n        for (var i = 0; i < nRoots; i++) {\n            var t = roots[i];\n            var unit = (t === 0 || t === 1) ? 0.5 : 1;\n            var x_ = curve.cubicAt(x0, x1, x2, x3, t);\n            if (x_ < x) {\n                continue;\n            }\n            if (nExtrema < 0) {\n                nExtrema = curve.cubicExtrema(y0, y1, y2, y3, extrema);\n                if (extrema[1] < extrema[0] && nExtrema > 1) {\n                    swapExtrema();\n                }\n                y0_ = curve.cubicAt(y0, y1, y2, y3, extrema[0]);\n                if (nExtrema > 1) {\n                    y1_ = curve.cubicAt(y0, y1, y2, y3, extrema[1]);\n                }\n            }\n            if (nExtrema === 2) {\n                if (t < extrema[0]) {\n                    w += y0_ < y0 ? unit : -unit;\n                }\n                else if (t < extrema[1]) {\n                    w += y1_ < y0_ ? unit : -unit;\n                }\n                else {\n                    w += y3 < y1_ ? unit : -unit;\n                }\n            }\n            else {\n                if (t < extrema[0]) {\n                    w += y0_ < y0 ? unit : -unit;\n                }\n                else {\n                    w += y3 < y0_ ? unit : -unit;\n                }\n            }\n        }\n        return w;\n    }\n}\nfunction windingQuadratic(x0, y0, x1, y1, x2, y2, x, y) {\n    if ((y > y0 && y > y1 && y > y2)\n        || (y < y0 && y < y1 && y < y2)) {\n        return 0;\n    }\n    var nRoots = curve.quadraticRootAt(y0, y1, y2, y, roots);\n    if (nRoots === 0) {\n        return 0;\n    }\n    else {\n        var t = curve.quadraticExtremum(y0, y1, y2);\n        if (t >= 0 && t <= 1) {\n            var w = 0;\n            var y_ = curve.quadraticAt(y0, y1, y2, t);\n            for (var i = 0; i < nRoots; i++) {\n                var unit = (roots[i] === 0 || roots[i] === 1) ? 0.5 : 1;\n                var x_ = curve.quadraticAt(x0, x1, x2, roots[i]);\n                if (x_ < x) {\n                    continue;\n                }\n                if (roots[i] < t) {\n                    w += y_ < y0 ? unit : -unit;\n                }\n                else {\n                    w += y2 < y_ ? unit : -unit;\n                }\n            }\n            return w;\n        }\n        else {\n            var unit = (roots[0] === 0 || roots[0] === 1) ? 0.5 : 1;\n            var x_ = curve.quadraticAt(x0, x1, x2, roots[0]);\n            if (x_ < x) {\n                return 0;\n            }\n            return y2 < y0 ? unit : -unit;\n        }\n    }\n}\nfunction windingArc(cx, cy, r, startAngle, endAngle, anticlockwise, x, y) {\n    y -= cy;\n    if (y > r || y < -r) {\n        return 0;\n    }\n    var tmp = Math.sqrt(r * r - y * y);\n    roots[0] = -tmp;\n    roots[1] = tmp;\n    var dTheta = Math.abs(startAngle - endAngle);\n    if (dTheta < 1e-4) {\n        return 0;\n    }\n    if (dTheta >= PI2 - 1e-4) {\n        startAngle = 0;\n        endAngle = PI2;\n        var dir = anticlockwise ? 1 : -1;\n        if (x >= roots[0] + cx && x <= roots[1] + cx) {\n            return dir;\n        }\n        else {\n            return 0;\n        }\n    }\n    if (startAngle > endAngle) {\n        var tmp_1 = startAngle;\n        startAngle = endAngle;\n        endAngle = tmp_1;\n    }\n    if (startAngle < 0) {\n        startAngle += PI2;\n        endAngle += PI2;\n    }\n    var w = 0;\n    for (var i = 0; i < 2; i++) {\n        var x_ = roots[i];\n        if (x_ + cx > x) {\n            var angle = Math.atan2(y, x_);\n            var dir = anticlockwise ? 1 : -1;\n            if (angle < 0) {\n                angle = PI2 + angle;\n            }\n            if ((angle >= startAngle && angle <= endAngle)\n                || (angle + PI2 >= startAngle && angle + PI2 <= endAngle)) {\n                if (angle > Math.PI / 2 && angle < Math.PI * 1.5) {\n                    dir = -dir;\n                }\n                w += dir;\n            }\n        }\n    }\n    return w;\n}\nfunction containPath(path, lineWidth, isStroke, x, y) {\n    var data = path.data;\n    var len = path.len();\n    var w = 0;\n    var xi = 0;\n    var yi = 0;\n    var x0 = 0;\n    var y0 = 0;\n    var x1;\n    var y1;\n    for (var i = 0; i < len;) {\n        var cmd = data[i++];\n        var isFirst = i === 1;\n        if (cmd === CMD.M && i > 1) {\n            if (!isStroke) {\n                w += windingLine(xi, yi, x0, y0, x, y);\n            }\n        }\n        if (isFirst) {\n            xi = data[i];\n            yi = data[i + 1];\n            x0 = xi;\n            y0 = yi;\n        }\n        switch (cmd) {\n            case CMD.M:\n                x0 = data[i++];\n                y0 = data[i++];\n                xi = x0;\n                yi = y0;\n                break;\n            case CMD.L:\n                if (isStroke) {\n                    if (line.containStroke(xi, yi, data[i], data[i + 1], lineWidth, x, y)) {\n                        return true;\n                    }\n                }\n                else {\n                    w += windingLine(xi, yi, data[i], data[i + 1], x, y) || 0;\n                }\n                xi = data[i++];\n                yi = data[i++];\n                break;\n            case CMD.C:\n                if (isStroke) {\n                    if (cubic.containStroke(xi, yi, data[i++], data[i++], data[i++], data[i++], data[i], data[i + 1], lineWidth, x, y)) {\n                        return true;\n                    }\n                }\n                else {\n                    w += windingCubic(xi, yi, data[i++], data[i++], data[i++], data[i++], data[i], data[i + 1], x, y) || 0;\n                }\n                xi = data[i++];\n                yi = data[i++];\n                break;\n            case CMD.Q:\n                if (isStroke) {\n                    if (quadratic.containStroke(xi, yi, data[i++], data[i++], data[i], data[i + 1], lineWidth, x, y)) {\n                        return true;\n                    }\n                }\n                else {\n                    w += windingQuadratic(xi, yi, data[i++], data[i++], data[i], data[i + 1], x, y) || 0;\n                }\n                xi = data[i++];\n                yi = data[i++];\n                break;\n            case CMD.A:\n                var cx = data[i++];\n                var cy = data[i++];\n                var rx = data[i++];\n                var ry = data[i++];\n                var theta = data[i++];\n                var dTheta = data[i++];\n                i += 1;\n                var anticlockwise = !!(1 - data[i++]);\n                x1 = Math.cos(theta) * rx + cx;\n                y1 = Math.sin(theta) * ry + cy;\n                if (!isFirst) {\n                    w += windingLine(xi, yi, x1, y1, x, y);\n                }\n                else {\n                    x0 = x1;\n                    y0 = y1;\n                }\n                var _x = (x - cx) * ry / rx + cx;\n                if (isStroke) {\n                    if (arc.containStroke(cx, cy, ry, theta, theta + dTheta, anticlockwise, lineWidth, _x, y)) {\n                        return true;\n                    }\n                }\n                else {\n                    w += windingArc(cx, cy, ry, theta, theta + dTheta, anticlockwise, _x, y);\n                }\n                xi = Math.cos(theta + dTheta) * rx + cx;\n                yi = Math.sin(theta + dTheta) * ry + cy;\n                break;\n            case CMD.R:\n                x0 = xi = data[i++];\n                y0 = yi = data[i++];\n                var width = data[i++];\n                var height = data[i++];\n                x1 = x0 + width;\n                y1 = y0 + height;\n                if (isStroke) {\n                    if (line.containStroke(x0, y0, x1, y0, lineWidth, x, y)\n                        || line.containStroke(x1, y0, x1, y1, lineWidth, x, y)\n                        || line.containStroke(x1, y1, x0, y1, lineWidth, x, y)\n                        || line.containStroke(x0, y1, x0, y0, lineWidth, x, y)) {\n                        return true;\n                    }\n                }\n                else {\n                    w += windingLine(x1, y0, x1, y1, x, y);\n                    w += windingLine(x0, y1, x0, y0, x, y);\n                }\n                break;\n            case CMD.Z:\n                if (isStroke) {\n                    if (line.containStroke(xi, yi, x0, y0, lineWidth, x, y)) {\n                        return true;\n                    }\n                }\n                else {\n                    w += windingLine(xi, yi, x0, y0, x, y);\n                }\n                xi = x0;\n                yi = y0;\n                break;\n        }\n    }\n    if (!isStroke && !isAroundEqual(yi, y0)) {\n        w += windingLine(xi, yi, x0, y0, x, y) || 0;\n    }\n    return w !== 0;\n}\nexport function contain(pathProxy, x, y) {\n    return containPath(pathProxy, 0, false, x, y);\n}\nexport function containStroke(pathProxy, lineWidth, x, y) {\n    return containPath(pathProxy, lineWidth, true, x, y);\n}\n","import { __extends } from \"tslib\";\nimport Displayable, { DEFAULT_COMMON_STYLE, DEFAULT_COMMON_ANIMATION_PROPS } from './Displayable.js';\nimport PathProxy from '../core/PathProxy.js';\nimport * as pathContain from '../contain/path.js';\nimport { defaults, keys, extend, clone, isString, createObject } from '../core/util.js';\nimport { lum } from '../tool/color.js';\nimport { DARK_LABEL_COLOR, LIGHT_LABEL_COLOR, DARK_MODE_THRESHOLD, LIGHTER_LABEL_COLOR } from '../config.js';\nimport { REDRAW_BIT, SHAPE_CHANGED_BIT, STYLE_CHANGED_BIT } from './constants.js';\nimport { TRANSFORMABLE_PROPS } from '../core/Transformable.js';\nexport var DEFAULT_PATH_STYLE = defaults({\n    fill: '#000',\n    stroke: null,\n    strokePercent: 1,\n    fillOpacity: 1,\n    strokeOpacity: 1,\n    lineDashOffset: 0,\n    lineWidth: 1,\n    lineCap: 'butt',\n    miterLimit: 10,\n    strokeNoScale: false,\n    strokeFirst: false\n}, DEFAULT_COMMON_STYLE);\nexport var DEFAULT_PATH_ANIMATION_PROPS = {\n    style: defaults({\n        fill: true,\n        stroke: true,\n        strokePercent: true,\n        fillOpacity: true,\n        strokeOpacity: true,\n        lineDashOffset: true,\n        lineWidth: true,\n        miterLimit: true\n    }, DEFAULT_COMMON_ANIMATION_PROPS.style)\n};\nvar pathCopyParams = TRANSFORMABLE_PROPS.concat(['invisible',\n    'culling', 'z', 'z2', 'zlevel', 'parent'\n]);\nvar Path = (function (_super) {\n    __extends(Path, _super);\n    function Path(opts) {\n        return _super.call(this, opts) || this;\n    }\n    Path.prototype.update = function () {\n        var _this = this;\n        _super.prototype.update.call(this);\n        var style = this.style;\n        if (style.decal) {\n            var decalEl = this._decalEl = this._decalEl || new Path();\n            if (decalEl.buildPath === Path.prototype.buildPath) {\n                decalEl.buildPath = function (ctx) {\n                    _this.buildPath(ctx, _this.shape);\n                };\n            }\n            decalEl.silent = true;\n            var decalElStyle = decalEl.style;\n            for (var key in style) {\n                if (decalElStyle[key] !== style[key]) {\n                    decalElStyle[key] = style[key];\n                }\n            }\n            decalElStyle.fill = style.fill ? style.decal : null;\n            decalElStyle.decal = null;\n            decalElStyle.shadowColor = null;\n            style.strokeFirst && (decalElStyle.stroke = null);\n            for (var i = 0; i < pathCopyParams.length; ++i) {\n                decalEl[pathCopyParams[i]] = this[pathCopyParams[i]];\n            }\n            decalEl.__dirty |= REDRAW_BIT;\n        }\n        else if (this._decalEl) {\n            this._decalEl = null;\n        }\n    };\n    Path.prototype.getDecalElement = function () {\n        return this._decalEl;\n    };\n    Path.prototype._init = function (props) {\n        var keysArr = keys(props);\n        this.shape = this.getDefaultShape();\n        var defaultStyle = this.getDefaultStyle();\n        if (defaultStyle) {\n            this.useStyle(defaultStyle);\n        }\n        for (var i = 0; i < keysArr.length; i++) {\n            var key = keysArr[i];\n            var value = props[key];\n            if (key === 'style') {\n                if (!this.style) {\n                    this.useStyle(value);\n                }\n                else {\n                    extend(this.style, value);\n                }\n            }\n            else if (key === 'shape') {\n                extend(this.shape, value);\n            }\n            else {\n                _super.prototype.attrKV.call(this, key, value);\n            }\n        }\n        if (!this.style) {\n            this.useStyle({});\n        }\n    };\n    Path.prototype.getDefaultStyle = function () {\n        return null;\n    };\n    Path.prototype.getDefaultShape = function () {\n        return {};\n    };\n    Path.prototype.canBeInsideText = function () {\n        return this.hasFill();\n    };\n    Path.prototype.getInsideTextFill = function () {\n        var pathFill = this.style.fill;\n        if (pathFill !== 'none') {\n            if (isString(pathFill)) {\n                var fillLum = lum(pathFill, 0);\n                if (fillLum > 0.5) {\n                    return DARK_LABEL_COLOR;\n                }\n                else if (fillLum > 0.2) {\n                    return LIGHTER_LABEL_COLOR;\n                }\n                return LIGHT_LABEL_COLOR;\n            }\n            else if (pathFill) {\n                return LIGHT_LABEL_COLOR;\n            }\n        }\n        return DARK_LABEL_COLOR;\n    };\n    Path.prototype.getInsideTextStroke = function (textFill) {\n        var pathFill = this.style.fill;\n        if (isString(pathFill)) {\n            var zr = this.__zr;\n            var isDarkMode = !!(zr && zr.isDarkMode());\n            var isDarkLabel = lum(textFill, 0) < DARK_MODE_THRESHOLD;\n            if (isDarkMode === isDarkLabel) {\n                return pathFill;\n            }\n        }\n    };\n    Path.prototype.buildPath = function (ctx, shapeCfg, inBatch) { };\n    Path.prototype.pathUpdated = function () {\n        this.__dirty &= ~SHAPE_CHANGED_BIT;\n    };\n    Path.prototype.getUpdatedPathProxy = function (inBatch) {\n        !this.path && this.createPathProxy();\n        this.path.beginPath();\n        this.buildPath(this.path, this.shape, inBatch);\n        return this.path;\n    };\n    Path.prototype.createPathProxy = function () {\n        this.path = new PathProxy(false);\n    };\n    Path.prototype.hasStroke = function () {\n        var style = this.style;\n        var stroke = style.stroke;\n        return !(stroke == null || stroke === 'none' || !(style.lineWidth > 0));\n    };\n    Path.prototype.hasFill = function () {\n        var style = this.style;\n        var fill = style.fill;\n        return fill != null && fill !== 'none';\n    };\n    Path.prototype.getBoundingRect = function () {\n        var rect = this._rect;\n        var style = this.style;\n        var needsUpdateRect = !rect;\n        if (needsUpdateRect) {\n            var firstInvoke = false;\n            if (!this.path) {\n                firstInvoke = true;\n                this.createPathProxy();\n            }\n            var path = this.path;\n            if (firstInvoke || (this.__dirty & SHAPE_CHANGED_BIT)) {\n                path.beginPath();\n                this.buildPath(path, this.shape, false);\n                this.pathUpdated();\n            }\n            rect = path.getBoundingRect();\n        }\n        this._rect = rect;\n        if (this.hasStroke() && this.path && this.path.len() > 0) {\n            var rectStroke = this._rectStroke || (this._rectStroke = rect.clone());\n            if (this.__dirty || needsUpdateRect) {\n                rectStroke.copy(rect);\n                var lineScale = style.strokeNoScale ? this.getLineScale() : 1;\n                var w = style.lineWidth;\n                if (!this.hasFill()) {\n                    var strokeContainThreshold = this.strokeContainThreshold;\n                    w = Math.max(w, strokeContainThreshold == null ? 4 : strokeContainThreshold);\n                }\n                if (lineScale > 1e-10) {\n                    rectStroke.width += w / lineScale;\n                    rectStroke.height += w / lineScale;\n                    rectStroke.x -= w / lineScale / 2;\n                    rectStroke.y -= w / lineScale / 2;\n                }\n            }\n            return rectStroke;\n        }\n        return rect;\n    };\n    Path.prototype.contain = function (x, y) {\n        var localPos = this.transformCoordToLocal(x, y);\n        var rect = this.getBoundingRect();\n        var style = this.style;\n        x = localPos[0];\n        y = localPos[1];\n        if (rect.contain(x, y)) {\n            var pathProxy = this.path;\n            if (this.hasStroke()) {\n                var lineWidth = style.lineWidth;\n                var lineScale = style.strokeNoScale ? this.getLineScale() : 1;\n                if (lineScale > 1e-10) {\n                    if (!this.hasFill()) {\n                        lineWidth = Math.max(lineWidth, this.strokeContainThreshold);\n                    }\n                    if (pathContain.containStroke(pathProxy, lineWidth / lineScale, x, y)) {\n                        return true;\n                    }\n                }\n            }\n            if (this.hasFill()) {\n                return pathContain.contain(pathProxy, x, y);\n            }\n        }\n        return false;\n    };\n    Path.prototype.dirtyShape = function () {\n        this.__dirty |= SHAPE_CHANGED_BIT;\n        if (this._rect) {\n            this._rect = null;\n        }\n        if (this._decalEl) {\n            this._decalEl.dirtyShape();\n        }\n        this.markRedraw();\n    };\n    Path.prototype.dirty = function () {\n        this.dirtyStyle();\n        this.dirtyShape();\n    };\n    Path.prototype.animateShape = function (loop) {\n        return this.animate('shape', loop);\n    };\n    Path.prototype.updateDuringAnimation = function (targetKey) {\n        if (targetKey === 'style') {\n            this.dirtyStyle();\n        }\n        else if (targetKey === 'shape') {\n            this.dirtyShape();\n        }\n        else {\n            this.markRedraw();\n        }\n    };\n    Path.prototype.attrKV = function (key, value) {\n        if (key === 'shape') {\n            this.setShape(value);\n        }\n        else {\n            _super.prototype.attrKV.call(this, key, value);\n        }\n    };\n    Path.prototype.setShape = function (keyOrObj, value) {\n        var shape = this.shape;\n        if (!shape) {\n            shape = this.shape = {};\n        }\n        if (typeof keyOrObj === 'string') {\n            shape[keyOrObj] = value;\n        }\n        else {\n            extend(shape, keyOrObj);\n        }\n        this.dirtyShape();\n        return this;\n    };\n    Path.prototype.shapeChanged = function () {\n        return !!(this.__dirty & SHAPE_CHANGED_BIT);\n    };\n    Path.prototype.createStyle = function (obj) {\n        return createObject(DEFAULT_PATH_STYLE, obj);\n    };\n    Path.prototype._innerSaveToNormal = function (toState) {\n        _super.prototype._innerSaveToNormal.call(this, toState);\n        var normalState = this._normalState;\n        if (toState.shape && !normalState.shape) {\n            normalState.shape = extend({}, this.shape);\n        }\n    };\n    Path.prototype._applyStateObj = function (stateName, state, normalState, keepCurrentStates, transition, animationCfg) {\n        _super.prototype._applyStateObj.call(this, stateName, state, normalState, keepCurrentStates, transition, animationCfg);\n        var needsRestoreToNormal = !(state && keepCurrentStates);\n        var targetShape;\n        if (state && state.shape) {\n            if (transition) {\n                if (keepCurrentStates) {\n                    targetShape = state.shape;\n                }\n                else {\n                    targetShape = extend({}, normalState.shape);\n                    extend(targetShape, state.shape);\n                }\n            }\n            else {\n                targetShape = extend({}, keepCurrentStates ? this.shape : normalState.shape);\n                extend(targetShape, state.shape);\n            }\n        }\n        else if (needsRestoreToNormal) {\n            targetShape = normalState.shape;\n        }\n        if (targetShape) {\n            if (transition) {\n                this.shape = extend({}, this.shape);\n                var targetShapePrimaryProps = {};\n                var shapeKeys = keys(targetShape);\n                for (var i = 0; i < shapeKeys.length; i++) {\n                    var key = shapeKeys[i];\n                    if (typeof targetShape[key] === 'object') {\n                        this.shape[key] = targetShape[key];\n                    }\n                    else {\n                        targetShapePrimaryProps[key] = targetShape[key];\n                    }\n                }\n                this._transitionState(stateName, {\n                    shape: targetShapePrimaryProps\n                }, animationCfg);\n            }\n            else {\n                this.shape = targetShape;\n                this.dirtyShape();\n            }\n        }\n    };\n    Path.prototype._mergeStates = function (states) {\n        var mergedState = _super.prototype._mergeStates.call(this, states);\n        var mergedShape;\n        for (var i = 0; i < states.length; i++) {\n            var state = states[i];\n            if (state.shape) {\n                mergedShape = mergedShape || {};\n                this._mergeStyle(mergedShape, state.shape);\n            }\n        }\n        if (mergedShape) {\n            mergedState.shape = mergedShape;\n        }\n        return mergedState;\n    };\n    Path.prototype.getAnimationStyleProps = function () {\n        return DEFAULT_PATH_ANIMATION_PROPS;\n    };\n    Path.prototype.isZeroArea = function () {\n        return false;\n    };\n    Path.extend = function (defaultProps) {\n        var Sub = (function (_super) {\n            __extends(Sub, _super);\n            function Sub(opts) {\n                var _this = _super.call(this, opts) || this;\n                defaultProps.init && defaultProps.init.call(_this, opts);\n                return _this;\n            }\n            Sub.prototype.getDefaultStyle = function () {\n                return clone(defaultProps.style);\n            };\n            Sub.prototype.getDefaultShape = function () {\n                return clone(defaultProps.shape);\n            };\n            return Sub;\n        }(Path));\n        for (var key in defaultProps) {\n            if (typeof defaultProps[key] === 'function') {\n                Sub.prototype[key] = defaultProps[key];\n            }\n        }\n        return Sub;\n    };\n    Path.initDefaultProps = (function () {\n        var pathProto = Path.prototype;\n        pathProto.type = 'path';\n        pathProto.strokeContainThreshold = 5;\n        pathProto.segmentIgnoreThreshold = 0;\n        pathProto.subPixelOptimize = false;\n        pathProto.autoBatch = false;\n        pathProto.__dirty = REDRAW_BIT | STYLE_CHANGED_BIT | SHAPE_CHANGED_BIT;\n    })();\n    return Path;\n}(Displayable));\nexport default Path;\n","import { __extends } from \"tslib\";\nimport Displayable from './Displayable.js';\nimport { getBoundingRect } from '../contain/text.js';\nimport { DEFAULT_PATH_STYLE } from './Path.js';\nimport { createObject, defaults } from '../core/util.js';\nimport { DEFAULT_FONT } from '../core/platform.js';\nexport var DEFAULT_TSPAN_STYLE = defaults({\n    strokeFirst: true,\n    font: DEFAULT_FONT,\n    x: 0,\n    y: 0,\n    textAlign: 'left',\n    textBaseline: 'top',\n    miterLimit: 2\n}, DEFAULT_PATH_STYLE);\nvar TSpan = (function (_super) {\n    __extends(TSpan, _super);\n    function TSpan() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    TSpan.prototype.hasStroke = function () {\n        var style = this.style;\n        var stroke = style.stroke;\n        return stroke != null && stroke !== 'none' && style.lineWidth > 0;\n    };\n    TSpan.prototype.hasFill = function () {\n        var style = this.style;\n        var fill = style.fill;\n        return fill != null && fill !== 'none';\n    };\n    TSpan.prototype.createStyle = function (obj) {\n        return createObject(DEFAULT_TSPAN_STYLE, obj);\n    };\n    TSpan.prototype.setBoundingRect = function (rect) {\n        this._rect = rect;\n    };\n    TSpan.prototype.getBoundingRect = function () {\n        var style = this.style;\n        if (!this._rect) {\n            var text = style.text;\n            text != null ? (text += '') : (text = '');\n            var rect = getBoundingRect(text, style.font, style.textAlign, style.textBaseline);\n            rect.x += style.x || 0;\n            rect.y += style.y || 0;\n            if (this.hasStroke()) {\n                var w = style.lineWidth;\n                rect.x -= w / 2;\n                rect.y -= w / 2;\n                rect.width += w;\n                rect.height += w;\n            }\n            this._rect = rect;\n        }\n        return this._rect;\n    };\n    TSpan.initDefaultProps = (function () {\n        var tspanProto = TSpan.prototype;\n        tspanProto.dirtyRectTolerance = 10;\n    })();\n    return TSpan;\n}(Displayable));\nTSpan.prototype.type = 'tspan';\nexport default TSpan;\n","import { __extends } from \"tslib\";\nimport Displayable, { DEFAULT_COMMON_STYLE, DEFAULT_COMMON_ANIMATION_PROPS } from './Displayable.js';\nimport BoundingRect from '../core/BoundingRect.js';\nimport { defaults, createObject } from '../core/util.js';\nexport var DEFAULT_IMAGE_STYLE = defaults({\n    x: 0,\n    y: 0\n}, DEFAULT_COMMON_STYLE);\nexport var DEFAULT_IMAGE_ANIMATION_PROPS = {\n    style: defaults({\n        x: true,\n        y: true,\n        width: true,\n        height: true,\n        sx: true,\n        sy: true,\n        sWidth: true,\n        sHeight: true\n    }, DEFAULT_COMMON_ANIMATION_PROPS.style)\n};\nfunction isImageLike(source) {\n    return !!(source\n        && typeof source !== 'string'\n        && source.width && source.height);\n}\nvar ZRImage = (function (_super) {\n    __extends(ZRImage, _super);\n    function ZRImage() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    ZRImage.prototype.createStyle = function (obj) {\n        return createObject(DEFAULT_IMAGE_STYLE, obj);\n    };\n    ZRImage.prototype._getSize = function (dim) {\n        var style = this.style;\n        var size = style[dim];\n        if (size != null) {\n            return size;\n        }\n        var imageSource = isImageLike(style.image)\n            ? style.image : this.__image;\n        if (!imageSource) {\n            return 0;\n        }\n        var otherDim = dim === 'width' ? 'height' : 'width';\n        var otherDimSize = style[otherDim];\n        if (otherDimSize == null) {\n            return imageSource[dim];\n        }\n        else {\n            return imageSource[dim] / imageSource[otherDim] * otherDimSize;\n        }\n    };\n    ZRImage.prototype.getWidth = function () {\n        return this._getSize('width');\n    };\n    ZRImage.prototype.getHeight = function () {\n        return this._getSize('height');\n    };\n    ZRImage.prototype.getAnimationStyleProps = function () {\n        return DEFAULT_IMAGE_ANIMATION_PROPS;\n    };\n    ZRImage.prototype.getBoundingRect = function () {\n        var style = this.style;\n        if (!this._rect) {\n            this._rect = new BoundingRect(style.x || 0, style.y || 0, this.getWidth(), this.getHeight());\n        }\n        return this._rect;\n    };\n    return ZRImage;\n}(Displayable));\nZRImage.prototype.type = 'image';\nexport default ZRImage;\n","var round = Math.round;\nexport function subPixelOptimizeLine(outputShape, inputShape, style) {\n    if (!inputShape) {\n        return;\n    }\n    var x1 = inputShape.x1;\n    var x2 = inputShape.x2;\n    var y1 = inputShape.y1;\n    var y2 = inputShape.y2;\n    outputShape.x1 = x1;\n    outputShape.x2 = x2;\n    outputShape.y1 = y1;\n    outputShape.y2 = y2;\n    var lineWidth = style && style.lineWidth;\n    if (!lineWidth) {\n        return outputShape;\n    }\n    if (round(x1 * 2) === round(x2 * 2)) {\n        outputShape.x1 = outputShape.x2 = subPixelOptimize(x1, lineWidth, true);\n    }\n    if (round(y1 * 2) === round(y2 * 2)) {\n        outputShape.y1 = outputShape.y2 = subPixelOptimize(y1, lineWidth, true);\n    }\n    return outputShape;\n}\nexport function subPixelOptimizeRect(outputShape, inputShape, style) {\n    if (!inputShape) {\n        return;\n    }\n    var originX = inputShape.x;\n    var originY = inputShape.y;\n    var originWidth = inputShape.width;\n    var originHeight = inputShape.height;\n    outputShape.x = originX;\n    outputShape.y = originY;\n    outputShape.width = originWidth;\n    outputShape.height = originHeight;\n    var lineWidth = style && style.lineWidth;\n    if (!lineWidth) {\n        return outputShape;\n    }\n    outputShape.x = subPixelOptimize(originX, lineWidth, true);\n    outputShape.y = subPixelOptimize(originY, lineWidth, true);\n    outputShape.width = Math.max(subPixelOptimize(originX + originWidth, lineWidth, false) - outputShape.x, originWidth === 0 ? 0 : 1);\n    outputShape.height = Math.max(subPixelOptimize(originY + originHeight, lineWidth, false) - outputShape.y, originHeight === 0 ? 0 : 1);\n    return outputShape;\n}\nexport function subPixelOptimize(position, lineWidth, positiveOrNegative) {\n    if (!lineWidth) {\n        return position;\n    }\n    var doubledPosition = round(position * 2);\n    return (doubledPosition + round(lineWidth)) % 2 === 0\n        ? doubledPosition / 2\n        : (doubledPosition + (positiveOrNegative ? 1 : -1)) / 2;\n}\n","import { __extends } from \"tslib\";\nimport Path from '../Path.js';\nimport * as roundRectHelper from '../helper/roundRect.js';\nimport { subPixelOptimizeRect } from '../helper/subPixelOptimize.js';\nvar RectShape = (function () {\n    function RectShape() {\n        this.x = 0;\n        this.y = 0;\n        this.width = 0;\n        this.height = 0;\n    }\n    return RectShape;\n}());\nexport { RectShape };\nvar subPixelOptimizeOutputShape = {};\nvar Rect = (function (_super) {\n    __extends(Rect, _super);\n    function Rect(opts) {\n        return _super.call(this, opts) || this;\n    }\n    Rect.prototype.getDefaultShape = function () {\n        return new RectShape();\n    };\n    Rect.prototype.buildPath = function (ctx, shape) {\n        var x;\n        var y;\n        var width;\n        var height;\n        if (this.subPixelOptimize) {\n            var optimizedShape = subPixelOptimizeRect(subPixelOptimizeOutputShape, shape, this.style);\n            x = optimizedShape.x;\n            y = optimizedShape.y;\n            width = optimizedShape.width;\n            height = optimizedShape.height;\n            optimizedShape.r = shape.r;\n            shape = optimizedShape;\n        }\n        else {\n            x = shape.x;\n            y = shape.y;\n            width = shape.width;\n            height = shape.height;\n        }\n        if (!shape.r) {\n            ctx.rect(x, y, width, height);\n        }\n        else {\n            roundRectHelper.buildPath(ctx, shape);\n        }\n    };\n    Rect.prototype.isZeroArea = function () {\n        return !this.shape.width || !this.shape.height;\n    };\n    return Rect;\n}(Path));\nRect.prototype.type = 'rect';\nexport default Rect;\n","export function buildPath(ctx, shape) {\n    var x = shape.x;\n    var y = shape.y;\n    var width = shape.width;\n    var height = shape.height;\n    var r = shape.r;\n    var r1;\n    var r2;\n    var r3;\n    var r4;\n    if (width < 0) {\n        x = x + width;\n        width = -width;\n    }\n    if (height < 0) {\n        y = y + height;\n        height = -height;\n    }\n    if (typeof r === 'number') {\n        r1 = r2 = r3 = r4 = r;\n    }\n    else if (r instanceof Array) {\n        if (r.length === 1) {\n            r1 = r2 = r3 = r4 = r[0];\n        }\n        else if (r.length === 2) {\n            r1 = r3 = r[0];\n            r2 = r4 = r[1];\n        }\n        else if (r.length === 3) {\n            r1 = r[0];\n            r2 = r4 = r[1];\n            r3 = r[2];\n        }\n        else {\n            r1 = r[0];\n            r2 = r[1];\n            r3 = r[2];\n            r4 = r[3];\n        }\n    }\n    else {\n        r1 = r2 = r3 = r4 = 0;\n    }\n    var total;\n    if (r1 + r2 > width) {\n        total = r1 + r2;\n        r1 *= width / total;\n        r2 *= width / total;\n    }\n    if (r3 + r4 > width) {\n        total = r3 + r4;\n        r3 *= width / total;\n        r4 *= width / total;\n    }\n    if (r2 + r3 > height) {\n        total = r2 + r3;\n        r2 *= height / total;\n        r3 *= height / total;\n    }\n    if (r1 + r4 > height) {\n        total = r1 + r4;\n        r1 *= height / total;\n        r4 *= height / total;\n    }\n    ctx.moveTo(x + r1, y);\n    ctx.lineTo(x + width - r2, y);\n    r2 !== 0 && ctx.arc(x + width - r2, y + r2, r2, -Math.PI / 2, 0);\n    ctx.lineTo(x + width, y + height - r3);\n    r3 !== 0 && ctx.arc(x + width - r3, y + height - r3, r3, 0, Math.PI / 2);\n    ctx.lineTo(x + r4, y + height);\n    r4 !== 0 && ctx.arc(x + r4, y + height - r4, r4, Math.PI / 2, Math.PI);\n    ctx.lineTo(x, y + r1);\n    r1 !== 0 && ctx.arc(x + r1, y + r1, r1, Math.PI, Math.PI * 1.5);\n}\n","import { __extends } from \"tslib\";\nimport { parseRichText, parsePlainText } from './helper/parseText.js';\nimport TSpan from './TSpan.js';\nimport { retrieve2, each, normalizeCssArray, trim, retrieve3, extend, keys, defaults } from '../core/util.js';\nimport { adjustTextX, adjustTextY } from '../contain/text.js';\nimport ZRImage from './Image.js';\nimport Rect from './shape/Rect.js';\nimport BoundingRect from '../core/BoundingRect.js';\nimport Displayable, { DEFAULT_COMMON_ANIMATION_PROPS } from './Displayable.js';\nimport { DEFAULT_FONT, DEFAULT_FONT_SIZE } from '../core/platform.js';\nvar DEFAULT_RICH_TEXT_COLOR = {\n    fill: '#000'\n};\nvar DEFAULT_STROKE_LINE_WIDTH = 2;\nexport var DEFAULT_TEXT_ANIMATION_PROPS = {\n    style: defaults({\n        fill: true,\n        stroke: true,\n        fillOpacity: true,\n        strokeOpacity: true,\n        lineWidth: true,\n        fontSize: true,\n        lineHeight: true,\n        width: true,\n        height: true,\n        textShadowColor: true,\n        textShadowBlur: true,\n        textShadowOffsetX: true,\n        textShadowOffsetY: true,\n        backgroundColor: true,\n        padding: true,\n        borderColor: true,\n        borderWidth: true,\n        borderRadius: true\n    }, DEFAULT_COMMON_ANIMATION_PROPS.style)\n};\nvar ZRText = (function (_super) {\n    __extends(ZRText, _super);\n    function ZRText(opts) {\n        var _this = _super.call(this) || this;\n        _this.type = 'text';\n        _this._children = [];\n        _this._defaultStyle = DEFAULT_RICH_TEXT_COLOR;\n        _this.attr(opts);\n        return _this;\n    }\n    ZRText.prototype.childrenRef = function () {\n        return this._children;\n    };\n    ZRText.prototype.update = function () {\n        _super.prototype.update.call(this);\n        if (this.styleChanged()) {\n            this._updateSubTexts();\n        }\n        for (var i = 0; i < this._children.length; i++) {\n            var child = this._children[i];\n            child.zlevel = this.zlevel;\n            child.z = this.z;\n            child.z2 = this.z2;\n            child.culling = this.culling;\n            child.cursor = this.cursor;\n            child.invisible = this.invisible;\n        }\n    };\n    ZRText.prototype.updateTransform = function () {\n        var innerTransformable = this.innerTransformable;\n        if (innerTransformable) {\n            innerTransformable.updateTransform();\n            if (innerTransformable.transform) {\n                this.transform = innerTransformable.transform;\n            }\n        }\n        else {\n            _super.prototype.updateTransform.call(this);\n        }\n    };\n    ZRText.prototype.getLocalTransform = function (m) {\n        var innerTransformable = this.innerTransformable;\n        return innerTransformable\n            ? innerTransformable.getLocalTransform(m)\n            : _super.prototype.getLocalTransform.call(this, m);\n    };\n    ZRText.prototype.getComputedTransform = function () {\n        if (this.__hostTarget) {\n            this.__hostTarget.getComputedTransform();\n            this.__hostTarget.updateInnerText(true);\n        }\n        return _super.prototype.getComputedTransform.call(this);\n    };\n    ZRText.prototype._updateSubTexts = function () {\n        this._childCursor = 0;\n        normalizeTextStyle(this.style);\n        this.style.rich\n            ? this._updateRichTexts()\n            : this._updatePlainTexts();\n        this._children.length = this._childCursor;\n        this.styleUpdated();\n    };\n    ZRText.prototype.addSelfToZr = function (zr) {\n        _super.prototype.addSelfToZr.call(this, zr);\n        for (var i = 0; i < this._children.length; i++) {\n            this._children[i].__zr = zr;\n        }\n    };\n    ZRText.prototype.removeSelfFromZr = function (zr) {\n        _super.prototype.removeSelfFromZr.call(this, zr);\n        for (var i = 0; i < this._children.length; i++) {\n            this._children[i].__zr = null;\n        }\n    };\n    ZRText.prototype.getBoundingRect = function () {\n        if (this.styleChanged()) {\n            this._updateSubTexts();\n        }\n        if (!this._rect) {\n            var tmpRect = new BoundingRect(0, 0, 0, 0);\n            var children = this._children;\n            var tmpMat = [];\n            var rect = null;\n            for (var i = 0; i < children.length; i++) {\n                var child = children[i];\n                var childRect = child.getBoundingRect();\n                var transform = child.getLocalTransform(tmpMat);\n                if (transform) {\n                    tmpRect.copy(childRect);\n                    tmpRect.applyTransform(transform);\n                    rect = rect || tmpRect.clone();\n                    rect.union(tmpRect);\n                }\n                else {\n                    rect = rect || childRect.clone();\n                    rect.union(childRect);\n                }\n            }\n            this._rect = rect || tmpRect;\n        }\n        return this._rect;\n    };\n    ZRText.prototype.setDefaultTextStyle = function (defaultTextStyle) {\n        this._defaultStyle = defaultTextStyle || DEFAULT_RICH_TEXT_COLOR;\n    };\n    ZRText.prototype.setTextContent = function (textContent) {\n        if (process.env.NODE_ENV !== 'production') {\n            throw new Error('Can\\'t attach text on another text');\n        }\n    };\n    ZRText.prototype._mergeStyle = function (targetStyle, sourceStyle) {\n        if (!sourceStyle) {\n            return targetStyle;\n        }\n        var sourceRich = sourceStyle.rich;\n        var targetRich = targetStyle.rich || (sourceRich && {});\n        extend(targetStyle, sourceStyle);\n        if (sourceRich && targetRich) {\n            this._mergeRich(targetRich, sourceRich);\n            targetStyle.rich = targetRich;\n        }\n        else if (targetRich) {\n            targetStyle.rich = targetRich;\n        }\n        return targetStyle;\n    };\n    ZRText.prototype._mergeRich = function (targetRich, sourceRich) {\n        var richNames = keys(sourceRich);\n        for (var i = 0; i < richNames.length; i++) {\n            var richName = richNames[i];\n            targetRich[richName] = targetRich[richName] || {};\n            extend(targetRich[richName], sourceRich[richName]);\n        }\n    };\n    ZRText.prototype.getAnimationStyleProps = function () {\n        return DEFAULT_TEXT_ANIMATION_PROPS;\n    };\n    ZRText.prototype._getOrCreateChild = function (Ctor) {\n        var child = this._children[this._childCursor];\n        if (!child || !(child instanceof Ctor)) {\n            child = new Ctor();\n        }\n        this._children[this._childCursor++] = child;\n        child.__zr = this.__zr;\n        child.parent = this;\n        return child;\n    };\n    ZRText.prototype._updatePlainTexts = function () {\n        var style = this.style;\n        var textFont = style.font || DEFAULT_FONT;\n        var textPadding = style.padding;\n        var text = getStyleText(style);\n        var contentBlock = parsePlainText(text, style);\n        var needDrawBg = needDrawBackground(style);\n        var bgColorDrawn = !!(style.backgroundColor);\n        var outerHeight = contentBlock.outerHeight;\n        var outerWidth = contentBlock.outerWidth;\n        var contentWidth = contentBlock.contentWidth;\n        var textLines = contentBlock.lines;\n        var lineHeight = contentBlock.lineHeight;\n        var defaultStyle = this._defaultStyle;\n        var baseX = style.x || 0;\n        var baseY = style.y || 0;\n        var textAlign = style.align || defaultStyle.align || 'left';\n        var verticalAlign = style.verticalAlign || defaultStyle.verticalAlign || 'top';\n        var textX = baseX;\n        var textY = adjustTextY(baseY, contentBlock.contentHeight, verticalAlign);\n        if (needDrawBg || textPadding) {\n            var boxX = adjustTextX(baseX, outerWidth, textAlign);\n            var boxY = adjustTextY(baseY, outerHeight, verticalAlign);\n            needDrawBg && this._renderBackground(style, style, boxX, boxY, outerWidth, outerHeight);\n        }\n        textY += lineHeight / 2;\n        if (textPadding) {\n            textX = getTextXForPadding(baseX, textAlign, textPadding);\n            if (verticalAlign === 'top') {\n                textY += textPadding[0];\n            }\n            else if (verticalAlign === 'bottom') {\n                textY -= textPadding[2];\n            }\n        }\n        var defaultLineWidth = 0;\n        var useDefaultFill = false;\n        var textFill = getFill('fill' in style\n            ? style.fill\n            : (useDefaultFill = true, defaultStyle.fill));\n        var textStroke = getStroke('stroke' in style\n            ? style.stroke\n            : (!bgColorDrawn\n                && (!defaultStyle.autoStroke || useDefaultFill))\n                ? (defaultLineWidth = DEFAULT_STROKE_LINE_WIDTH, defaultStyle.stroke)\n                : null);\n        var hasShadow = style.textShadowBlur > 0;\n        var fixedBoundingRect = style.width != null\n            && (style.overflow === 'truncate' || style.overflow === 'break' || style.overflow === 'breakAll');\n        var calculatedLineHeight = contentBlock.calculatedLineHeight;\n        for (var i = 0; i < textLines.length; i++) {\n            var el = this._getOrCreateChild(TSpan);\n            var subElStyle = el.createStyle();\n            el.useStyle(subElStyle);\n            subElStyle.text = textLines[i];\n            subElStyle.x = textX;\n            subElStyle.y = textY;\n            if (textAlign) {\n                subElStyle.textAlign = textAlign;\n            }\n            subElStyle.textBaseline = 'middle';\n            subElStyle.opacity = style.opacity;\n            subElStyle.strokeFirst = true;\n            if (hasShadow) {\n                subElStyle.shadowBlur = style.textShadowBlur || 0;\n                subElStyle.shadowColor = style.textShadowColor || 'transparent';\n                subElStyle.shadowOffsetX = style.textShadowOffsetX || 0;\n                subElStyle.shadowOffsetY = style.textShadowOffsetY || 0;\n            }\n            subElStyle.stroke = textStroke;\n            subElStyle.fill = textFill;\n            if (textStroke) {\n                subElStyle.lineWidth = style.lineWidth || defaultLineWidth;\n                subElStyle.lineDash = style.lineDash;\n                subElStyle.lineDashOffset = style.lineDashOffset || 0;\n            }\n            subElStyle.font = textFont;\n            setSeparateFont(subElStyle, style);\n            textY += lineHeight;\n            if (fixedBoundingRect) {\n                el.setBoundingRect(new BoundingRect(adjustTextX(subElStyle.x, style.width, subElStyle.textAlign), adjustTextY(subElStyle.y, calculatedLineHeight, subElStyle.textBaseline), contentWidth, calculatedLineHeight));\n            }\n        }\n    };\n    ZRText.prototype._updateRichTexts = function () {\n        var style = this.style;\n        var text = getStyleText(style);\n        var contentBlock = parseRichText(text, style);\n        var contentWidth = contentBlock.width;\n        var outerWidth = contentBlock.outerWidth;\n        var outerHeight = contentBlock.outerHeight;\n        var textPadding = style.padding;\n        var baseX = style.x || 0;\n        var baseY = style.y || 0;\n        var defaultStyle = this._defaultStyle;\n        var textAlign = style.align || defaultStyle.align;\n        var verticalAlign = style.verticalAlign || defaultStyle.verticalAlign;\n        var boxX = adjustTextX(baseX, outerWidth, textAlign);\n        var boxY = adjustTextY(baseY, outerHeight, verticalAlign);\n        var xLeft = boxX;\n        var lineTop = boxY;\n        if (textPadding) {\n            xLeft += textPadding[3];\n            lineTop += textPadding[0];\n        }\n        var xRight = xLeft + contentWidth;\n        if (needDrawBackground(style)) {\n            this._renderBackground(style, style, boxX, boxY, outerWidth, outerHeight);\n        }\n        var bgColorDrawn = !!(style.backgroundColor);\n        for (var i = 0; i < contentBlock.lines.length; i++) {\n            var line = contentBlock.lines[i];\n            var tokens = line.tokens;\n            var tokenCount = tokens.length;\n            var lineHeight = line.lineHeight;\n            var remainedWidth = line.width;\n            var leftIndex = 0;\n            var lineXLeft = xLeft;\n            var lineXRight = xRight;\n            var rightIndex = tokenCount - 1;\n            var token = void 0;\n            while (leftIndex < tokenCount\n                && (token = tokens[leftIndex], !token.align || token.align === 'left')) {\n                this._placeToken(token, style, lineHeight, lineTop, lineXLeft, 'left', bgColorDrawn);\n                remainedWidth -= token.width;\n                lineXLeft += token.width;\n                leftIndex++;\n            }\n            while (rightIndex >= 0\n                && (token = tokens[rightIndex], token.align === 'right')) {\n                this._placeToken(token, style, lineHeight, lineTop, lineXRight, 'right', bgColorDrawn);\n                remainedWidth -= token.width;\n                lineXRight -= token.width;\n                rightIndex--;\n            }\n            lineXLeft += (contentWidth - (lineXLeft - xLeft) - (xRight - lineXRight) - remainedWidth) / 2;\n            while (leftIndex <= rightIndex) {\n                token = tokens[leftIndex];\n                this._placeToken(token, style, lineHeight, lineTop, lineXLeft + token.width / 2, 'center', bgColorDrawn);\n                lineXLeft += token.width;\n                leftIndex++;\n            }\n            lineTop += lineHeight;\n        }\n    };\n    ZRText.prototype._placeToken = function (token, style, lineHeight, lineTop, x, textAlign, parentBgColorDrawn) {\n        var tokenStyle = style.rich[token.styleName] || {};\n        tokenStyle.text = token.text;\n        var verticalAlign = token.verticalAlign;\n        var y = lineTop + lineHeight / 2;\n        if (verticalAlign === 'top') {\n            y = lineTop + token.height / 2;\n        }\n        else if (verticalAlign === 'bottom') {\n            y = lineTop + lineHeight - token.height / 2;\n        }\n        var needDrawBg = !token.isLineHolder && needDrawBackground(tokenStyle);\n        needDrawBg && this._renderBackground(tokenStyle, style, textAlign === 'right'\n            ? x - token.width\n            : textAlign === 'center'\n                ? x - token.width / 2\n                : x, y - token.height / 2, token.width, token.height);\n        var bgColorDrawn = !!tokenStyle.backgroundColor;\n        var textPadding = token.textPadding;\n        if (textPadding) {\n            x = getTextXForPadding(x, textAlign, textPadding);\n            y -= token.height / 2 - textPadding[0] - token.innerHeight / 2;\n        }\n        var el = this._getOrCreateChild(TSpan);\n        var subElStyle = el.createStyle();\n        el.useStyle(subElStyle);\n        var defaultStyle = this._defaultStyle;\n        var useDefaultFill = false;\n        var defaultLineWidth = 0;\n        var textFill = getFill('fill' in tokenStyle ? tokenStyle.fill\n            : 'fill' in style ? style.fill\n                : (useDefaultFill = true, defaultStyle.fill));\n        var textStroke = getStroke('stroke' in tokenStyle ? tokenStyle.stroke\n            : 'stroke' in style ? style.stroke\n                : (!bgColorDrawn\n                    && !parentBgColorDrawn\n                    && (!defaultStyle.autoStroke || useDefaultFill)) ? (defaultLineWidth = DEFAULT_STROKE_LINE_WIDTH, defaultStyle.stroke)\n                    : null);\n        var hasShadow = tokenStyle.textShadowBlur > 0\n            || style.textShadowBlur > 0;\n        subElStyle.text = token.text;\n        subElStyle.x = x;\n        subElStyle.y = y;\n        if (hasShadow) {\n            subElStyle.shadowBlur = tokenStyle.textShadowBlur || style.textShadowBlur || 0;\n            subElStyle.shadowColor = tokenStyle.textShadowColor || style.textShadowColor || 'transparent';\n            subElStyle.shadowOffsetX = tokenStyle.textShadowOffsetX || style.textShadowOffsetX || 0;\n            subElStyle.shadowOffsetY = tokenStyle.textShadowOffsetY || style.textShadowOffsetY || 0;\n        }\n        subElStyle.textAlign = textAlign;\n        subElStyle.textBaseline = 'middle';\n        subElStyle.font = token.font || DEFAULT_FONT;\n        subElStyle.opacity = retrieve3(tokenStyle.opacity, style.opacity, 1);\n        setSeparateFont(subElStyle, tokenStyle);\n        if (textStroke) {\n            subElStyle.lineWidth = retrieve3(tokenStyle.lineWidth, style.lineWidth, defaultLineWidth);\n            subElStyle.lineDash = retrieve2(tokenStyle.lineDash, style.lineDash);\n            subElStyle.lineDashOffset = style.lineDashOffset || 0;\n            subElStyle.stroke = textStroke;\n        }\n        if (textFill) {\n            subElStyle.fill = textFill;\n        }\n        var textWidth = token.contentWidth;\n        var textHeight = token.contentHeight;\n        el.setBoundingRect(new BoundingRect(adjustTextX(subElStyle.x, textWidth, subElStyle.textAlign), adjustTextY(subElStyle.y, textHeight, subElStyle.textBaseline), textWidth, textHeight));\n    };\n    ZRText.prototype._renderBackground = function (style, topStyle, x, y, width, height) {\n        var textBackgroundColor = style.backgroundColor;\n        var textBorderWidth = style.borderWidth;\n        var textBorderColor = style.borderColor;\n        var isImageBg = textBackgroundColor && textBackgroundColor.image;\n        var isPlainOrGradientBg = textBackgroundColor && !isImageBg;\n        var textBorderRadius = style.borderRadius;\n        var self = this;\n        var rectEl;\n        var imgEl;\n        if (isPlainOrGradientBg || style.lineHeight || (textBorderWidth && textBorderColor)) {\n            rectEl = this._getOrCreateChild(Rect);\n            rectEl.useStyle(rectEl.createStyle());\n            rectEl.style.fill = null;\n            var rectShape = rectEl.shape;\n            rectShape.x = x;\n            rectShape.y = y;\n            rectShape.width = width;\n            rectShape.height = height;\n            rectShape.r = textBorderRadius;\n            rectEl.dirtyShape();\n        }\n        if (isPlainOrGradientBg) {\n            var rectStyle = rectEl.style;\n            rectStyle.fill = textBackgroundColor || null;\n            rectStyle.fillOpacity = retrieve2(style.fillOpacity, 1);\n        }\n        else if (isImageBg) {\n            imgEl = this._getOrCreateChild(ZRImage);\n            imgEl.onload = function () {\n                self.dirtyStyle();\n            };\n            var imgStyle = imgEl.style;\n            imgStyle.image = textBackgroundColor.image;\n            imgStyle.x = x;\n            imgStyle.y = y;\n            imgStyle.width = width;\n            imgStyle.height = height;\n        }\n        if (textBorderWidth && textBorderColor) {\n            var rectStyle = rectEl.style;\n            rectStyle.lineWidth = textBorderWidth;\n            rectStyle.stroke = textBorderColor;\n            rectStyle.strokeOpacity = retrieve2(style.strokeOpacity, 1);\n            rectStyle.lineDash = style.borderDash;\n            rectStyle.lineDashOffset = style.borderDashOffset || 0;\n            rectEl.strokeContainThreshold = 0;\n            if (rectEl.hasFill() && rectEl.hasStroke()) {\n                rectStyle.strokeFirst = true;\n                rectStyle.lineWidth *= 2;\n            }\n        }\n        var commonStyle = (rectEl || imgEl).style;\n        commonStyle.shadowBlur = style.shadowBlur || 0;\n        commonStyle.shadowColor = style.shadowColor || 'transparent';\n        commonStyle.shadowOffsetX = style.shadowOffsetX || 0;\n        commonStyle.shadowOffsetY = style.shadowOffsetY || 0;\n        commonStyle.opacity = retrieve3(style.opacity, topStyle.opacity, 1);\n    };\n    ZRText.makeFont = function (style) {\n        var font = '';\n        if (hasSeparateFont(style)) {\n            font = [\n                style.fontStyle,\n                style.fontWeight,\n                parseFontSize(style.fontSize),\n                style.fontFamily || 'sans-serif'\n            ].join(' ');\n        }\n        return font && trim(font) || style.textFont || style.font;\n    };\n    return ZRText;\n}(Displayable));\nvar VALID_TEXT_ALIGN = { left: true, right: 1, center: 1 };\nvar VALID_TEXT_VERTICAL_ALIGN = { top: 1, bottom: 1, middle: 1 };\nvar FONT_PARTS = ['fontStyle', 'fontWeight', 'fontSize', 'fontFamily'];\nexport function parseFontSize(fontSize) {\n    if (typeof fontSize === 'string'\n        && (fontSize.indexOf('px') !== -1\n            || fontSize.indexOf('rem') !== -1\n            || fontSize.indexOf('em') !== -1)) {\n        return fontSize;\n    }\n    else if (!isNaN(+fontSize)) {\n        return fontSize + 'px';\n    }\n    else {\n        return DEFAULT_FONT_SIZE + 'px';\n    }\n}\nfunction setSeparateFont(targetStyle, sourceStyle) {\n    for (var i = 0; i < FONT_PARTS.length; i++) {\n        var fontProp = FONT_PARTS[i];\n        var val = sourceStyle[fontProp];\n        if (val != null) {\n            targetStyle[fontProp] = val;\n        }\n    }\n}\nexport function hasSeparateFont(style) {\n    return style.fontSize != null || style.fontFamily || style.fontWeight;\n}\nexport function normalizeTextStyle(style) {\n    normalizeStyle(style);\n    each(style.rich, normalizeStyle);\n    return style;\n}\nfunction normalizeStyle(style) {\n    if (style) {\n        style.font = ZRText.makeFont(style);\n        var textAlign = style.align;\n        textAlign === 'middle' && (textAlign = 'center');\n        style.align = (textAlign == null || VALID_TEXT_ALIGN[textAlign]) ? textAlign : 'left';\n        var verticalAlign = style.verticalAlign;\n        verticalAlign === 'center' && (verticalAlign = 'middle');\n        style.verticalAlign = (verticalAlign == null || VALID_TEXT_VERTICAL_ALIGN[verticalAlign]) ? verticalAlign : 'top';\n        var textPadding = style.padding;\n        if (textPadding) {\n            style.padding = normalizeCssArray(style.padding);\n        }\n    }\n}\nfunction getStroke(stroke, lineWidth) {\n    return (stroke == null || lineWidth <= 0 || stroke === 'transparent' || stroke === 'none')\n        ? null\n        : (stroke.image || stroke.colorStops)\n            ? '#000'\n            : stroke;\n}\nfunction getFill(fill) {\n    return (fill == null || fill === 'none')\n        ? null\n        : (fill.image || fill.colorStops)\n            ? '#000'\n            : fill;\n}\nfunction getTextXForPadding(x, textAlign, textPadding) {\n    return textAlign === 'right'\n        ? (x - textPadding[1])\n        : textAlign === 'center'\n            ? (x + textPadding[3] / 2 - textPadding[1] / 2)\n            : (x + textPadding[3]);\n}\nfunction getStyleText(style) {\n    var text = style.text;\n    text != null && (text += '');\n    return text;\n}\nfunction needDrawBackground(style) {\n    return !!(style.backgroundColor\n        || style.lineHeight\n        || (style.borderWidth && style.borderColor));\n}\nexport default ZRText;\n","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { makeInner } from './model.js';\nexport var getECData = makeInner();\nexport var setCommonECData = function (seriesIndex, dataType, dataIdx, el) {\n  if (el) {\n    var ecData = getECData(el); // Add data index and series index for indexing the data by element\n    // Useful in tooltip\n\n    ecData.dataIndex = dataIdx;\n    ecData.dataType = dataType;\n    ecData.seriesIndex = seriesIndex; // TODO: not store dataIndex on children.\n\n    if (el.type === 'group') {\n      el.traverse(function (child) {\n        var childECData = getECData(child);\n        childECData.seriesIndex = seriesIndex;\n        childECData.dataIndex = dataIdx;\n        childECData.dataType = dataType;\n      });\n    }\n  }\n};","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport LRU from 'zrender/lib/core/LRU.js';\nimport { extend, indexOf, isArrayLike, isObject, keys, isArray, each, isString, isGradientObject, map } from 'zrender/lib/core/util.js';\nimport { getECData } from './innerStore.js';\nimport * as colorTool from 'zrender/lib/tool/color.js';\nimport { queryDataIndex, makeInner } from './model.js';\nimport Path from 'zrender/lib/graphic/Path.js';\nimport { error } from './log.js'; // Reserve 0 as default.\n\nvar _highlightNextDigit = 1;\nvar _highlightKeyMap = {};\nvar getSavedStates = makeInner();\nvar getComponentStates = makeInner();\nexport var HOVER_STATE_NORMAL = 0;\nexport var HOVER_STATE_BLUR = 1;\nexport var HOVER_STATE_EMPHASIS = 2;\nexport var SPECIAL_STATES = ['emphasis', 'blur', 'select'];\nexport var DISPLAY_STATES = ['normal', 'emphasis', 'blur', 'select'];\nexport var Z2_EMPHASIS_LIFT = 10;\nexport var Z2_SELECT_LIFT = 9;\nexport var HIGHLIGHT_ACTION_TYPE = 'highlight';\nexport var DOWNPLAY_ACTION_TYPE = 'downplay';\nexport var SELECT_ACTION_TYPE = 'select';\nexport var UNSELECT_ACTION_TYPE = 'unselect';\nexport var TOGGLE_SELECT_ACTION_TYPE = 'toggleSelect';\n\nfunction hasFillOrStroke(fillOrStroke) {\n  return fillOrStroke != null && fillOrStroke !== 'none';\n} // Most lifted color are duplicated.\n\n\nvar liftedColorCache = new LRU(100);\n\nfunction liftColor(color) {\n  if (isString(color)) {\n    var liftedColor = liftedColorCache.get(color);\n\n    if (!liftedColor) {\n      liftedColor = colorTool.lift(color, -0.1);\n      liftedColorCache.put(color, liftedColor);\n    }\n\n    return liftedColor;\n  } else if (isGradientObject(color)) {\n    var ret = extend({}, color);\n    ret.colorStops = map(color.colorStops, function (stop) {\n      return {\n        offset: stop.offset,\n        color: colorTool.lift(stop.color, -0.1)\n      };\n    });\n    return ret;\n  } // Change nothing.\n\n\n  return color;\n}\n\nfunction doChangeHoverState(el, stateName, hoverStateEnum) {\n  if (el.onHoverStateChange && (el.hoverState || 0) !== hoverStateEnum) {\n    el.onHoverStateChange(stateName);\n  }\n\n  el.hoverState = hoverStateEnum;\n}\n\nfunction singleEnterEmphasis(el) {\n  // Only mark the flag.\n  // States will be applied in the echarts.ts in next frame.\n  doChangeHoverState(el, 'emphasis', HOVER_STATE_EMPHASIS);\n}\n\nfunction singleLeaveEmphasis(el) {\n  // Only mark the flag.\n  // States will be applied in the echarts.ts in next frame.\n  if (el.hoverState === HOVER_STATE_EMPHASIS) {\n    doChangeHoverState(el, 'normal', HOVER_STATE_NORMAL);\n  }\n}\n\nfunction singleEnterBlur(el) {\n  doChangeHoverState(el, 'blur', HOVER_STATE_BLUR);\n}\n\nfunction singleLeaveBlur(el) {\n  if (el.hoverState === HOVER_STATE_BLUR) {\n    doChangeHoverState(el, 'normal', HOVER_STATE_NORMAL);\n  }\n}\n\nfunction singleEnterSelect(el) {\n  el.selected = true;\n}\n\nfunction singleLeaveSelect(el) {\n  el.selected = false;\n}\n\nfunction updateElementState(el, updater, commonParam) {\n  updater(el, commonParam);\n}\n\nfunction traverseUpdateState(el, updater, commonParam) {\n  updateElementState(el, updater, commonParam);\n  el.isGroup && el.traverse(function (child) {\n    updateElementState(child, updater, commonParam);\n  });\n}\n\nexport function setStatesFlag(el, stateName) {\n  switch (stateName) {\n    case 'emphasis':\n      el.hoverState = HOVER_STATE_EMPHASIS;\n      break;\n\n    case 'normal':\n      el.hoverState = HOVER_STATE_NORMAL;\n      break;\n\n    case 'blur':\n      el.hoverState = HOVER_STATE_BLUR;\n      break;\n\n    case 'select':\n      el.selected = true;\n  }\n}\n/**\r\n * If we reuse elements when rerender.\r\n * DON'T forget to clearStates before we update the style and shape.\r\n * Or we may update on the wrong state instead of normal state.\r\n */\n\nexport function clearStates(el) {\n  if (el.isGroup) {\n    el.traverse(function (child) {\n      child.clearStates();\n    });\n  } else {\n    el.clearStates();\n  }\n}\n\nfunction getFromStateStyle(el, props, toStateName, defaultValue) {\n  var style = el.style;\n  var fromState = {};\n\n  for (var i = 0; i < props.length; i++) {\n    var propName = props[i];\n    var val = style[propName];\n    fromState[propName] = val == null ? defaultValue && defaultValue[propName] : val;\n  }\n\n  for (var i = 0; i < el.animators.length; i++) {\n    var animator = el.animators[i];\n\n    if (animator.__fromStateTransition // Don't consider the animation to emphasis state.\n    && animator.__fromStateTransition.indexOf(toStateName) < 0 && animator.targetName === 'style') {\n      animator.saveTo(fromState, props);\n    }\n  }\n\n  return fromState;\n}\n\nfunction createEmphasisDefaultState(el, stateName, targetStates, state) {\n  var hasSelect = targetStates && indexOf(targetStates, 'select') >= 0;\n  var cloned = false;\n\n  if (el instanceof Path) {\n    var store = getSavedStates(el);\n    var fromFill = hasSelect ? store.selectFill || store.normalFill : store.normalFill;\n    var fromStroke = hasSelect ? store.selectStroke || store.normalStroke : store.normalStroke;\n\n    if (hasFillOrStroke(fromFill) || hasFillOrStroke(fromStroke)) {\n      state = state || {};\n      var emphasisStyle = state.style || {}; // inherit case\n\n      if (emphasisStyle.fill === 'inherit') {\n        cloned = true;\n        state = extend({}, state);\n        emphasisStyle = extend({}, emphasisStyle);\n        emphasisStyle.fill = fromFill;\n      } // Apply default color lift\n      else if (!hasFillOrStroke(emphasisStyle.fill) && hasFillOrStroke(fromFill)) {\n          cloned = true; // Not modify the original value.\n\n          state = extend({}, state);\n          emphasisStyle = extend({}, emphasisStyle); // Already being applied 'emphasis'. DON'T lift color multiple times.\n\n          emphasisStyle.fill = liftColor(fromFill);\n        } // Not highlight stroke if fill has been highlighted.\n        else if (!hasFillOrStroke(emphasisStyle.stroke) && hasFillOrStroke(fromStroke)) {\n            if (!cloned) {\n              state = extend({}, state);\n              emphasisStyle = extend({}, emphasisStyle);\n            }\n\n            emphasisStyle.stroke = liftColor(fromStroke);\n          }\n\n      state.style = emphasisStyle;\n    }\n  }\n\n  if (state) {\n    // TODO Share with textContent?\n    if (state.z2 == null) {\n      if (!cloned) {\n        state = extend({}, state);\n      }\n\n      var z2EmphasisLift = el.z2EmphasisLift;\n      state.z2 = el.z2 + (z2EmphasisLift != null ? z2EmphasisLift : Z2_EMPHASIS_LIFT);\n    }\n  }\n\n  return state;\n}\n\nfunction createSelectDefaultState(el, stateName, state) {\n  // const hasSelect = indexOf(el.currentStates, stateName) >= 0;\n  if (state) {\n    // TODO Share with textContent?\n    if (state.z2 == null) {\n      state = extend({}, state);\n      var z2SelectLift = el.z2SelectLift;\n      state.z2 = el.z2 + (z2SelectLift != null ? z2SelectLift : Z2_SELECT_LIFT);\n    }\n  }\n\n  return state;\n}\n\nfunction createBlurDefaultState(el, stateName, state) {\n  var hasBlur = indexOf(el.currentStates, stateName) >= 0;\n  var currentOpacity = el.style.opacity;\n  var fromState = !hasBlur ? getFromStateStyle(el, ['opacity'], stateName, {\n    opacity: 1\n  }) : null;\n  state = state || {};\n  var blurStyle = state.style || {};\n\n  if (blurStyle.opacity == null) {\n    // clone state\n    state = extend({}, state);\n    blurStyle = extend({\n      // Already being applied 'emphasis'. DON'T mul opacity multiple times.\n      opacity: hasBlur ? currentOpacity : fromState.opacity * 0.1\n    }, blurStyle);\n    state.style = blurStyle;\n  }\n\n  return state;\n}\n\nfunction elementStateProxy(stateName, targetStates) {\n  var state = this.states[stateName];\n\n  if (this.style) {\n    if (stateName === 'emphasis') {\n      return createEmphasisDefaultState(this, stateName, targetStates, state);\n    } else if (stateName === 'blur') {\n      return createBlurDefaultState(this, stateName, state);\n    } else if (stateName === 'select') {\n      return createSelectDefaultState(this, stateName, state);\n    }\n  }\n\n  return state;\n}\n/**\r\n * Set hover style (namely \"emphasis style\") of element.\r\n * @param el Should not be `zrender/graphic/Group`.\r\n * @param focus 'self' | 'selfInSeries' | 'series'\r\n */\n\n\nexport function setDefaultStateProxy(el) {\n  el.stateProxy = elementStateProxy;\n  var textContent = el.getTextContent();\n  var textGuide = el.getTextGuideLine();\n\n  if (textContent) {\n    textContent.stateProxy = elementStateProxy;\n  }\n\n  if (textGuide) {\n    textGuide.stateProxy = elementStateProxy;\n  }\n}\nexport function enterEmphasisWhenMouseOver(el, e) {\n  !shouldSilent(el, e) // \"emphasis\" event highlight has higher priority than mouse highlight.\n  && !el.__highByOuter && traverseUpdateState(el, singleEnterEmphasis);\n}\nexport function leaveEmphasisWhenMouseOut(el, e) {\n  !shouldSilent(el, e) // \"emphasis\" event highlight has higher priority than mouse highlight.\n  && !el.__highByOuter && traverseUpdateState(el, singleLeaveEmphasis);\n}\nexport function enterEmphasis(el, highlightDigit) {\n  el.__highByOuter |= 1 << (highlightDigit || 0);\n  traverseUpdateState(el, singleEnterEmphasis);\n}\nexport function leaveEmphasis(el, highlightDigit) {\n  !(el.__highByOuter &= ~(1 << (highlightDigit || 0))) && traverseUpdateState(el, singleLeaveEmphasis);\n}\nexport function enterBlur(el) {\n  traverseUpdateState(el, singleEnterBlur);\n}\nexport function leaveBlur(el) {\n  traverseUpdateState(el, singleLeaveBlur);\n}\nexport function enterSelect(el) {\n  traverseUpdateState(el, singleEnterSelect);\n}\nexport function leaveSelect(el) {\n  traverseUpdateState(el, singleLeaveSelect);\n}\n\nfunction shouldSilent(el, e) {\n  return el.__highDownSilentOnTouch && e.zrByTouch;\n}\n\nexport function allLeaveBlur(api) {\n  var model = api.getModel();\n  var leaveBlurredSeries = [];\n  var allComponentViews = [];\n  model.eachComponent(function (componentType, componentModel) {\n    var componentStates = getComponentStates(componentModel);\n    var isSeries = componentType === 'series';\n    var view = isSeries ? api.getViewOfSeriesModel(componentModel) : api.getViewOfComponentModel(componentModel);\n    !isSeries && allComponentViews.push(view);\n\n    if (componentStates.isBlured) {\n      // Leave blur anyway\n      view.group.traverse(function (child) {\n        singleLeaveBlur(child);\n      });\n      isSeries && leaveBlurredSeries.push(componentModel);\n    }\n\n    componentStates.isBlured = false;\n  });\n  each(allComponentViews, function (view) {\n    if (view && view.toggleBlurSeries) {\n      view.toggleBlurSeries(leaveBlurredSeries, false, model);\n    }\n  });\n}\nexport function blurSeries(targetSeriesIndex, focus, blurScope, api) {\n  var ecModel = api.getModel();\n  blurScope = blurScope || 'coordinateSystem';\n\n  function leaveBlurOfIndices(data, dataIndices) {\n    for (var i = 0; i < dataIndices.length; i++) {\n      var itemEl = data.getItemGraphicEl(dataIndices[i]);\n      itemEl && leaveBlur(itemEl);\n    }\n  }\n\n  if (targetSeriesIndex == null) {\n    return;\n  }\n\n  if (!focus || focus === 'none') {\n    return;\n  }\n\n  var targetSeriesModel = ecModel.getSeriesByIndex(targetSeriesIndex);\n  var targetCoordSys = targetSeriesModel.coordinateSystem;\n\n  if (targetCoordSys && targetCoordSys.master) {\n    targetCoordSys = targetCoordSys.master;\n  }\n\n  var blurredSeries = [];\n  ecModel.eachSeries(function (seriesModel) {\n    var sameSeries = targetSeriesModel === seriesModel;\n    var coordSys = seriesModel.coordinateSystem;\n\n    if (coordSys && coordSys.master) {\n      coordSys = coordSys.master;\n    }\n\n    var sameCoordSys = coordSys && targetCoordSys ? coordSys === targetCoordSys : sameSeries; // If there is no coordinate system. use sameSeries instead.\n\n    if (!( // Not blur other series if blurScope series\n    blurScope === 'series' && !sameSeries // Not blur other coordinate system if blurScope is coordinateSystem\n    || blurScope === 'coordinateSystem' && !sameCoordSys // Not blur self series if focus is series.\n    || focus === 'series' && sameSeries // TODO blurScope: coordinate system\n    )) {\n      var view = api.getViewOfSeriesModel(seriesModel);\n      view.group.traverse(function (child) {\n        // For the elements that have been triggered by other components,\n        // and are still required to be highlighted,\n        // because the current is directly forced to blur the element,\n        // it will cause the focus self to be unable to highlight, so skip the blur of this element.\n        if (child.__highByOuter && sameSeries && focus === 'self') {\n          return;\n        }\n\n        singleEnterBlur(child);\n      });\n\n      if (isArrayLike(focus)) {\n        leaveBlurOfIndices(seriesModel.getData(), focus);\n      } else if (isObject(focus)) {\n        var dataTypes = keys(focus);\n\n        for (var d = 0; d < dataTypes.length; d++) {\n          leaveBlurOfIndices(seriesModel.getData(dataTypes[d]), focus[dataTypes[d]]);\n        }\n      }\n\n      blurredSeries.push(seriesModel);\n      getComponentStates(seriesModel).isBlured = true;\n    }\n  });\n  ecModel.eachComponent(function (componentType, componentModel) {\n    if (componentType === 'series') {\n      return;\n    }\n\n    var view = api.getViewOfComponentModel(componentModel);\n\n    if (view && view.toggleBlurSeries) {\n      view.toggleBlurSeries(blurredSeries, true, ecModel);\n    }\n  });\n}\nexport function blurComponent(componentMainType, componentIndex, api) {\n  if (componentMainType == null || componentIndex == null) {\n    return;\n  }\n\n  var componentModel = api.getModel().getComponent(componentMainType, componentIndex);\n\n  if (!componentModel) {\n    return;\n  }\n\n  getComponentStates(componentModel).isBlured = true;\n  var view = api.getViewOfComponentModel(componentModel);\n\n  if (!view || !view.focusBlurEnabled) {\n    return;\n  }\n\n  view.group.traverse(function (child) {\n    singleEnterBlur(child);\n  });\n}\nexport function blurSeriesFromHighlightPayload(seriesModel, payload, api) {\n  var seriesIndex = seriesModel.seriesIndex;\n  var data = seriesModel.getData(payload.dataType);\n\n  if (!data) {\n    if (process.env.NODE_ENV !== 'production') {\n      error(\"Unknown dataType \" + payload.dataType);\n    }\n\n    return;\n  }\n\n  var dataIndex = queryDataIndex(data, payload); // Pick the first one if there is multiple/none exists.\n\n  dataIndex = (isArray(dataIndex) ? dataIndex[0] : dataIndex) || 0;\n  var el = data.getItemGraphicEl(dataIndex);\n\n  if (!el) {\n    var count = data.count();\n    var current = 0; // If data on dataIndex is NaN.\n\n    while (!el && current < count) {\n      el = data.getItemGraphicEl(current++);\n    }\n  }\n\n  if (el) {\n    var ecData = getECData(el);\n    blurSeries(seriesIndex, ecData.focus, ecData.blurScope, api);\n  } else {\n    // If there is no element put on the data. Try getting it from raw option\n    // TODO Should put it on seriesModel?\n    var focus_1 = seriesModel.get(['emphasis', 'focus']);\n    var blurScope = seriesModel.get(['emphasis', 'blurScope']);\n\n    if (focus_1 != null) {\n      blurSeries(seriesIndex, focus_1, blurScope, api);\n    }\n  }\n}\nexport function findComponentHighDownDispatchers(componentMainType, componentIndex, name, api) {\n  var ret = {\n    focusSelf: false,\n    dispatchers: null\n  };\n\n  if (componentMainType == null || componentMainType === 'series' || componentIndex == null || name == null) {\n    return ret;\n  }\n\n  var componentModel = api.getModel().getComponent(componentMainType, componentIndex);\n\n  if (!componentModel) {\n    return ret;\n  }\n\n  var view = api.getViewOfComponentModel(componentModel);\n\n  if (!view || !view.findHighDownDispatchers) {\n    return ret;\n  }\n\n  var dispatchers = view.findHighDownDispatchers(name); // At presnet, the component (like Geo) only blur inside itself.\n  // So we do not use `blurScope` in component.\n\n  var focusSelf;\n\n  for (var i = 0; i < dispatchers.length; i++) {\n    if (process.env.NODE_ENV !== 'production' && !isHighDownDispatcher(dispatchers[i])) {\n      error('param should be highDownDispatcher');\n    }\n\n    if (getECData(dispatchers[i]).focus === 'self') {\n      focusSelf = true;\n      break;\n    }\n  }\n\n  return {\n    focusSelf: focusSelf,\n    dispatchers: dispatchers\n  };\n}\nexport function handleGlobalMouseOverForHighDown(dispatcher, e, api) {\n  if (process.env.NODE_ENV !== 'production' && !isHighDownDispatcher(dispatcher)) {\n    error('param should be highDownDispatcher');\n  }\n\n  var ecData = getECData(dispatcher);\n\n  var _a = findComponentHighDownDispatchers(ecData.componentMainType, ecData.componentIndex, ecData.componentHighDownName, api),\n      dispatchers = _a.dispatchers,\n      focusSelf = _a.focusSelf; // If `findHighDownDispatchers` is supported on the component,\n  // highlight/downplay elements with the same name.\n\n\n  if (dispatchers) {\n    if (focusSelf) {\n      blurComponent(ecData.componentMainType, ecData.componentIndex, api);\n    }\n\n    each(dispatchers, function (dispatcher) {\n      return enterEmphasisWhenMouseOver(dispatcher, e);\n    });\n  } else {\n    // Try blur all in the related series. Then emphasis the hoverred.\n    // TODO. progressive mode.\n    blurSeries(ecData.seriesIndex, ecData.focus, ecData.blurScope, api);\n\n    if (ecData.focus === 'self') {\n      blurComponent(ecData.componentMainType, ecData.componentIndex, api);\n    } // Other than series, component that not support `findHighDownDispatcher` will\n    // also use it. But in this case, highlight/downplay are only supported in\n    // mouse hover but not in dispatchAction.\n\n\n    enterEmphasisWhenMouseOver(dispatcher, e);\n  }\n}\nexport function handleGlobalMouseOutForHighDown(dispatcher, e, api) {\n  if (process.env.NODE_ENV !== 'production' && !isHighDownDispatcher(dispatcher)) {\n    error('param should be highDownDispatcher');\n  }\n\n  allLeaveBlur(api);\n  var ecData = getECData(dispatcher);\n  var dispatchers = findComponentHighDownDispatchers(ecData.componentMainType, ecData.componentIndex, ecData.componentHighDownName, api).dispatchers;\n\n  if (dispatchers) {\n    each(dispatchers, function (dispatcher) {\n      return leaveEmphasisWhenMouseOut(dispatcher, e);\n    });\n  } else {\n    leaveEmphasisWhenMouseOut(dispatcher, e);\n  }\n}\nexport function toggleSelectionFromPayload(seriesModel, payload, api) {\n  if (!isSelectChangePayload(payload)) {\n    return;\n  }\n\n  var dataType = payload.dataType;\n  var data = seriesModel.getData(dataType);\n  var dataIndex = queryDataIndex(data, payload);\n\n  if (!isArray(dataIndex)) {\n    dataIndex = [dataIndex];\n  }\n\n  seriesModel[payload.type === TOGGLE_SELECT_ACTION_TYPE ? 'toggleSelect' : payload.type === SELECT_ACTION_TYPE ? 'select' : 'unselect'](dataIndex, dataType);\n}\nexport function updateSeriesElementSelection(seriesModel) {\n  var allData = seriesModel.getAllData();\n  each(allData, function (_a) {\n    var data = _a.data,\n        type = _a.type;\n    data.eachItemGraphicEl(function (el, idx) {\n      seriesModel.isSelected(idx, type) ? enterSelect(el) : leaveSelect(el);\n    });\n  });\n}\nexport function getAllSelectedIndices(ecModel) {\n  var ret = [];\n  ecModel.eachSeries(function (seriesModel) {\n    var allData = seriesModel.getAllData();\n    each(allData, function (_a) {\n      var data = _a.data,\n          type = _a.type;\n      var dataIndices = seriesModel.getSelectedDataIndices();\n\n      if (dataIndices.length > 0) {\n        var item = {\n          dataIndex: dataIndices,\n          seriesIndex: seriesModel.seriesIndex\n        };\n\n        if (type != null) {\n          item.dataType = type;\n        }\n\n        ret.push(item);\n      }\n    });\n  });\n  return ret;\n}\n/**\r\n * Enable the function that mouseover will trigger the emphasis state.\r\n *\r\n * NOTE:\r\n * This function should be used on the element with dataIndex, seriesIndex.\r\n *\r\n */\n\nexport function enableHoverEmphasis(el, focus, blurScope) {\n  setAsHighDownDispatcher(el, true);\n  traverseUpdateState(el, setDefaultStateProxy);\n  enableHoverFocus(el, focus, blurScope);\n}\nexport function disableHoverEmphasis(el) {\n  setAsHighDownDispatcher(el, false);\n}\nexport function toggleHoverEmphasis(el, focus, blurScope, isDisabled) {\n  isDisabled ? disableHoverEmphasis(el) : enableHoverEmphasis(el, focus, blurScope);\n}\nexport function enableHoverFocus(el, focus, blurScope) {\n  var ecData = getECData(el);\n\n  if (focus != null) {\n    // TODO dataIndex may be set after this function. This check is not useful.\n    // if (ecData.dataIndex == null) {\n    //     if (__DEV__) {\n    //         console.warn('focus can only been set on element with dataIndex');\n    //     }\n    // }\n    // else {\n    ecData.focus = focus;\n    ecData.blurScope = blurScope; // }\n  } else if (ecData.focus) {\n    ecData.focus = null;\n  }\n}\nvar OTHER_STATES = ['emphasis', 'blur', 'select'];\nvar defaultStyleGetterMap = {\n  itemStyle: 'getItemStyle',\n  lineStyle: 'getLineStyle',\n  areaStyle: 'getAreaStyle'\n};\n/**\r\n * Set emphasis/blur/selected states of element.\r\n */\n\nexport function setStatesStylesFromModel(el, itemModel, styleType, // default itemStyle\ngetter) {\n  styleType = styleType || 'itemStyle';\n\n  for (var i = 0; i < OTHER_STATES.length; i++) {\n    var stateName = OTHER_STATES[i];\n    var model = itemModel.getModel([stateName, styleType]);\n    var state = el.ensureState(stateName); // Let it throw error if getterType is not found.\n\n    state.style = getter ? getter(model) : model[defaultStyleGetterMap[styleType]]();\n  }\n}\n/**\r\n *\r\n * Set element as highlight / downplay dispatcher.\r\n * It will be checked when element received mouseover event or from highlight action.\r\n * It's in change of all highlight/downplay behavior of it's children.\r\n *\r\n * @param el\r\n * @param el.highDownSilentOnTouch\r\n *        In touch device, mouseover event will be trigger on touchstart event\r\n *        (see module:zrender/dom/HandlerProxy). By this mechanism, we can\r\n *        conveniently use hoverStyle when tap on touch screen without additional\r\n *        code for compatibility.\r\n *        But if the chart/component has select feature, which usually also use\r\n *        hoverStyle, there might be conflict between 'select-highlight' and\r\n *        'hover-highlight' especially when roam is enabled (see geo for example).\r\n *        In this case, `highDownSilentOnTouch` should be used to disable\r\n *        hover-highlight on touch device.\r\n * @param asDispatcher If `false`, do not set as \"highDownDispatcher\".\r\n */\n\nexport function setAsHighDownDispatcher(el, asDispatcher) {\n  var disable = asDispatcher === false;\n  var extendedEl = el; // Make `highDownSilentOnTouch` and `onStateChange` only work after\n  // `setAsHighDownDispatcher` called. Avoid it is modified by user unexpectedly.\n\n  if (el.highDownSilentOnTouch) {\n    extendedEl.__highDownSilentOnTouch = el.highDownSilentOnTouch;\n  } // Simple optimize, since this method might be\n  // called for each elements of a group in some cases.\n\n\n  if (!disable || extendedEl.__highDownDispatcher) {\n    // Emphasis, normal can be triggered manually by API or other components like hover link.\n    // el[method]('emphasis', onElementEmphasisEvent)[method]('normal', onElementNormalEvent);\n    // Also keep previous record.\n    extendedEl.__highByOuter = extendedEl.__highByOuter || 0;\n    extendedEl.__highDownDispatcher = !disable;\n  }\n}\nexport function isHighDownDispatcher(el) {\n  return !!(el && el.__highDownDispatcher);\n}\n/**\r\n * Enable component highlight/downplay features:\r\n * + hover link (within the same name)\r\n * + focus blur in component\r\n */\n\nexport function enableComponentHighDownFeatures(el, componentModel, componentHighDownName) {\n  var ecData = getECData(el);\n  ecData.componentMainType = componentModel.mainType;\n  ecData.componentIndex = componentModel.componentIndex;\n  ecData.componentHighDownName = componentHighDownName;\n}\n/**\r\n * Support highlight/downplay record on each elements.\r\n * For the case: hover highlight/downplay (legend, visualMap, ...) and\r\n * user triggered highlight/downplay should not conflict.\r\n * Only all of the highlightDigit cleared, return to normal.\r\n * @param {string} highlightKey\r\n * @return {number} highlightDigit\r\n */\n\nexport function getHighlightDigit(highlightKey) {\n  var highlightDigit = _highlightKeyMap[highlightKey];\n\n  if (highlightDigit == null && _highlightNextDigit <= 32) {\n    highlightDigit = _highlightKeyMap[highlightKey] = _highlightNextDigit++;\n  }\n\n  return highlightDigit;\n}\nexport function isSelectChangePayload(payload) {\n  var payloadType = payload.type;\n  return payloadType === SELECT_ACTION_TYPE || payloadType === UNSELECT_ACTION_TYPE || payloadType === TOGGLE_SELECT_ACTION_TYPE;\n}\nexport function isHighDownPayload(payload) {\n  var payloadType = payload.type;\n  return payloadType === HIGHLIGHT_ACTION_TYPE || payloadType === DOWNPLAY_ACTION_TYPE;\n}\nexport function savePathStates(el) {\n  var store = getSavedStates(el);\n  store.normalFill = el.style.fill;\n  store.normalStroke = el.style.stroke;\n  var selectState = el.states.select || {};\n  store.selectFill = selectState.style && selectState.style.fill || null;\n  store.selectStroke = selectState.style && selectState.style.stroke || null;\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { isFunction, isObject, retrieve2 } from 'zrender/lib/core/util.js';\nimport { makeInner } from '../util/model.js'; // Stored properties for further transition.\n\nexport var transitionStore = makeInner();\n/**\r\n * Return null if animation is disabled.\r\n */\n\nexport function getAnimationConfig(animationType, animatableModel, dataIndex, // Extra opts can override the option in animatable model.\nextraOpts, // TODO It's only for pictorial bar now.\nextraDelayParams) {\n  var animationPayload; // Check if there is global animation configuration from dataZoom/resize can override the config in option.\n  // If animation is enabled. Will use this animation config in payload.\n  // If animation is disabled. Just ignore it.\n\n  if (animatableModel && animatableModel.ecModel) {\n    var updatePayload = animatableModel.ecModel.getUpdatePayload();\n    animationPayload = updatePayload && updatePayload.animation;\n  }\n\n  var animationEnabled = animatableModel && animatableModel.isAnimationEnabled();\n  var isUpdate = animationType === 'update';\n\n  if (animationEnabled) {\n    var duration = void 0;\n    var easing = void 0;\n    var delay = void 0;\n\n    if (extraOpts) {\n      duration = retrieve2(extraOpts.duration, 200);\n      easing = retrieve2(extraOpts.easing, 'cubicOut');\n      delay = 0;\n    } else {\n      duration = animatableModel.getShallow(isUpdate ? 'animationDurationUpdate' : 'animationDuration');\n      easing = animatableModel.getShallow(isUpdate ? 'animationEasingUpdate' : 'animationEasing');\n      delay = animatableModel.getShallow(isUpdate ? 'animationDelayUpdate' : 'animationDelay');\n    } // animation from payload has highest priority.\n\n\n    if (animationPayload) {\n      animationPayload.duration != null && (duration = animationPayload.duration);\n      animationPayload.easing != null && (easing = animationPayload.easing);\n      animationPayload.delay != null && (delay = animationPayload.delay);\n    }\n\n    if (isFunction(delay)) {\n      delay = delay(dataIndex, extraDelayParams);\n    }\n\n    if (isFunction(duration)) {\n      duration = duration(dataIndex);\n    }\n\n    var config = {\n      duration: duration || 0,\n      delay: delay,\n      easing: easing\n    };\n    return config;\n  } else {\n    return null;\n  }\n}\n\nfunction animateOrSetProps(animationType, el, props, animatableModel, dataIndex, cb, during) {\n  var isFrom = false;\n  var removeOpt;\n\n  if (isFunction(dataIndex)) {\n    during = cb;\n    cb = dataIndex;\n    dataIndex = null;\n  } else if (isObject(dataIndex)) {\n    cb = dataIndex.cb;\n    during = dataIndex.during;\n    isFrom = dataIndex.isFrom;\n    removeOpt = dataIndex.removeOpt;\n    dataIndex = dataIndex.dataIndex;\n  }\n\n  var isRemove = animationType === 'leave';\n\n  if (!isRemove) {\n    // Must stop the remove animation.\n    el.stopAnimation('leave');\n  }\n\n  var animationConfig = getAnimationConfig(animationType, animatableModel, dataIndex, isRemove ? removeOpt || {} : null, animatableModel && animatableModel.getAnimationDelayParams ? animatableModel.getAnimationDelayParams(el, dataIndex) : null);\n\n  if (animationConfig && animationConfig.duration > 0) {\n    var duration = animationConfig.duration;\n    var animationDelay = animationConfig.delay;\n    var animationEasing = animationConfig.easing;\n    var animateConfig = {\n      duration: duration,\n      delay: animationDelay || 0,\n      easing: animationEasing,\n      done: cb,\n      force: !!cb || !!during,\n      // Set to final state in update/init animation.\n      // So the post processing based on the path shape can be done correctly.\n      setToFinal: !isRemove,\n      scope: animationType,\n      during: during\n    };\n    isFrom ? el.animateFrom(props, animateConfig) : el.animateTo(props, animateConfig);\n  } else {\n    el.stopAnimation(); // If `isFrom`, the props is the \"from\" props.\n\n    !isFrom && el.attr(props); // Call during at least once.\n\n    during && during(1);\n    cb && cb();\n  }\n}\n/**\r\n * Update graphic element properties with or without animation according to the\r\n * configuration in series.\r\n *\r\n * Caution: this method will stop previous animation.\r\n * So do not use this method to one element twice before\r\n * animation starts, unless you know what you are doing.\r\n * @example\r\n *     graphic.updateProps(el, {\r\n *         position: [100, 100]\r\n *     }, seriesModel, dataIndex, function () { console.log('Animation done!'); });\r\n *     // Or\r\n *     graphic.updateProps(el, {\r\n *         position: [100, 100]\r\n *     }, seriesModel, function () { console.log('Animation done!'); });\r\n */\n\n\nfunction updateProps(el, props, // TODO: TYPE AnimatableModel\nanimatableModel, dataIndex, cb, during) {\n  animateOrSetProps('update', el, props, animatableModel, dataIndex, cb, during);\n}\n\nexport { updateProps };\n/**\r\n * Init graphic element properties with or without animation according to the\r\n * configuration in series.\r\n *\r\n * Caution: this method will stop previous animation.\r\n * So do not use this method to one element twice before\r\n * animation starts, unless you know what you are doing.\r\n */\n\nexport function initProps(el, props, animatableModel, dataIndex, cb, during) {\n  animateOrSetProps('enter', el, props, animatableModel, dataIndex, cb, during);\n}\n/**\r\n * If element is removed.\r\n * It can determine if element is having remove animation.\r\n */\n\nexport function isElementRemoved(el) {\n  if (!el.__zr) {\n    return true;\n  }\n\n  for (var i = 0; i < el.animators.length; i++) {\n    var animator = el.animators[i];\n\n    if (animator.scope === 'leave') {\n      return true;\n    }\n  }\n\n  return false;\n}\n/**\r\n * Remove graphic element\r\n */\n\nexport function removeElement(el, props, animatableModel, dataIndex, cb, during) {\n  // Don't do remove animation twice.\n  if (isElementRemoved(el)) {\n    return;\n  }\n\n  animateOrSetProps('leave', el, props, animatableModel, dataIndex, cb, during);\n}\n\nfunction fadeOutDisplayable(el, animatableModel, dataIndex, done) {\n  el.removeTextContent();\n  el.removeTextGuideLine();\n  removeElement(el, {\n    style: {\n      opacity: 0\n    }\n  }, animatableModel, dataIndex, done);\n}\n\nexport function removeElementWithFadeOut(el, animatableModel, dataIndex) {\n  function doRemove() {\n    el.parent && el.parent.remove(el);\n  } // Hide label and labelLine first\n  // TODO Also use fade out animation?\n\n\n  if (!el.isGroup) {\n    fadeOutDisplayable(el, animatableModel, dataIndex, doRemove);\n  } else {\n    el.traverse(function (disp) {\n      if (!disp.isGroup) {\n        // Can invoke doRemove multiple times.\n        fadeOutDisplayable(disp, animatableModel, dataIndex, doRemove);\n      }\n    });\n  }\n}\n/**\r\n * Save old style for style transition in universalTransition module.\r\n * It's used when element will be reused in each render.\r\n * For chart like map, heatmap, which will always create new element.\r\n * We don't need to save this because universalTransition can get old style from the old element\r\n */\n\nexport function saveOldStyle(el) {\n  transitionStore(el).oldStyle = el.style;\n}\nexport function getOldStyle(el) {\n  return transitionStore(el).oldStyle;\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport ZRText from 'zrender/lib/graphic/Text.js';\nimport { isFunction, retrieve2, extend, keys, trim } from 'zrender/lib/core/util.js';\nimport { SPECIAL_STATES, DISPLAY_STATES } from '../util/states.js';\nimport { deprecateReplaceLog } from '../util/log.js';\nimport { makeInner, interpolateRawValues } from '../util/model.js';\nimport { initProps, updateProps } from '../util/graphic.js';\nvar EMPTY_OBJ = {};\nexport function setLabelText(label, labelTexts) {\n  for (var i = 0; i < SPECIAL_STATES.length; i++) {\n    var stateName = SPECIAL_STATES[i];\n    var text = labelTexts[stateName];\n    var state = label.ensureState(stateName);\n    state.style = state.style || {};\n    state.style.text = text;\n  }\n\n  var oldStates = label.currentStates.slice();\n  label.clearStates(true);\n  label.setStyle({\n    text: labelTexts.normal\n  });\n  label.useStates(oldStates, true);\n}\n\nfunction getLabelText(opt, stateModels, interpolatedValue) {\n  var labelFetcher = opt.labelFetcher;\n  var labelDataIndex = opt.labelDataIndex;\n  var labelDimIndex = opt.labelDimIndex;\n  var normalModel = stateModels.normal;\n  var baseText;\n\n  if (labelFetcher) {\n    baseText = labelFetcher.getFormattedLabel(labelDataIndex, 'normal', null, labelDimIndex, normalModel && normalModel.get('formatter'), interpolatedValue != null ? {\n      interpolatedValue: interpolatedValue\n    } : null);\n  }\n\n  if (baseText == null) {\n    baseText = isFunction(opt.defaultText) ? opt.defaultText(labelDataIndex, opt, interpolatedValue) : opt.defaultText;\n  }\n\n  var statesText = {\n    normal: baseText\n  };\n\n  for (var i = 0; i < SPECIAL_STATES.length; i++) {\n    var stateName = SPECIAL_STATES[i];\n    var stateModel = stateModels[stateName];\n    statesText[stateName] = retrieve2(labelFetcher ? labelFetcher.getFormattedLabel(labelDataIndex, stateName, null, labelDimIndex, stateModel && stateModel.get('formatter')) : null, baseText);\n  }\n\n  return statesText;\n}\n\nfunction setLabelStyle(targetEl, labelStatesModels, opt, stateSpecified // TODO specified position?\n) {\n  opt = opt || EMPTY_OBJ;\n  var isSetOnText = targetEl instanceof ZRText;\n  var needsCreateText = false;\n\n  for (var i = 0; i < DISPLAY_STATES.length; i++) {\n    var stateModel = labelStatesModels[DISPLAY_STATES[i]];\n\n    if (stateModel && stateModel.getShallow('show')) {\n      needsCreateText = true;\n      break;\n    }\n  }\n\n  var textContent = isSetOnText ? targetEl : targetEl.getTextContent();\n\n  if (needsCreateText) {\n    if (!isSetOnText) {\n      // Reuse the previous\n      if (!textContent) {\n        textContent = new ZRText();\n        targetEl.setTextContent(textContent);\n      } // Use same state proxy\n\n\n      if (targetEl.stateProxy) {\n        textContent.stateProxy = targetEl.stateProxy;\n      }\n    }\n\n    var labelStatesTexts = getLabelText(opt, labelStatesModels);\n    var normalModel = labelStatesModels.normal;\n    var showNormal = !!normalModel.getShallow('show');\n    var normalStyle = createTextStyle(normalModel, stateSpecified && stateSpecified.normal, opt, false, !isSetOnText);\n    normalStyle.text = labelStatesTexts.normal;\n\n    if (!isSetOnText) {\n      // Always create new\n      targetEl.setTextConfig(createTextConfig(normalModel, opt, false));\n    }\n\n    for (var i = 0; i < SPECIAL_STATES.length; i++) {\n      var stateName = SPECIAL_STATES[i];\n      var stateModel = labelStatesModels[stateName];\n\n      if (stateModel) {\n        var stateObj = textContent.ensureState(stateName);\n        var stateShow = !!retrieve2(stateModel.getShallow('show'), showNormal);\n\n        if (stateShow !== showNormal) {\n          stateObj.ignore = !stateShow;\n        }\n\n        stateObj.style = createTextStyle(stateModel, stateSpecified && stateSpecified[stateName], opt, true, !isSetOnText);\n        stateObj.style.text = labelStatesTexts[stateName];\n\n        if (!isSetOnText) {\n          var targetElEmphasisState = targetEl.ensureState(stateName);\n          targetElEmphasisState.textConfig = createTextConfig(stateModel, opt, true);\n        }\n      }\n    } // PENDING: if there is many requirements that emphasis position\n    // need to be different from normal position, we might consider\n    // auto silent is those cases.\n\n\n    textContent.silent = !!normalModel.getShallow('silent'); // Keep x and y\n\n    if (textContent.style.x != null) {\n      normalStyle.x = textContent.style.x;\n    }\n\n    if (textContent.style.y != null) {\n      normalStyle.y = textContent.style.y;\n    }\n\n    textContent.ignore = !showNormal; // Always create new style.\n\n    textContent.useStyle(normalStyle);\n    textContent.dirty();\n\n    if (opt.enableTextSetter) {\n      labelInner(textContent).setLabelText = function (interpolatedValue) {\n        var labelStatesTexts = getLabelText(opt, labelStatesModels, interpolatedValue);\n        setLabelText(textContent, labelStatesTexts);\n      };\n    }\n  } else if (textContent) {\n    // Not display rich text.\n    textContent.ignore = true;\n  }\n\n  targetEl.dirty();\n}\n\nexport { setLabelStyle };\nexport function getLabelStatesModels(itemModel, labelName) {\n  labelName = labelName || 'label';\n  var statesModels = {\n    normal: itemModel.getModel(labelName)\n  };\n\n  for (var i = 0; i < SPECIAL_STATES.length; i++) {\n    var stateName = SPECIAL_STATES[i];\n    statesModels[stateName] = itemModel.getModel([stateName, labelName]);\n  }\n\n  return statesModels;\n}\n/**\r\n * Set basic textStyle properties.\r\n */\n\nexport function createTextStyle(textStyleModel, specifiedTextStyle, // Fixed style in the code. Can't be set by model.\nopt, isNotNormal, isAttached // If text is attached on an element. If so, auto color will handling in zrender.\n) {\n  var textStyle = {};\n  setTextStyleCommon(textStyle, textStyleModel, opt, isNotNormal, isAttached);\n  specifiedTextStyle && extend(textStyle, specifiedTextStyle); // textStyle.host && textStyle.host.dirty && textStyle.host.dirty(false);\n\n  return textStyle;\n}\nexport function createTextConfig(textStyleModel, opt, isNotNormal) {\n  opt = opt || {};\n  var textConfig = {};\n  var labelPosition;\n  var labelRotate = textStyleModel.getShallow('rotate');\n  var labelDistance = retrieve2(textStyleModel.getShallow('distance'), isNotNormal ? null : 5);\n  var labelOffset = textStyleModel.getShallow('offset');\n  labelPosition = textStyleModel.getShallow('position') || (isNotNormal ? null : 'inside'); // 'outside' is not a valid zr textPostion value, but used\n  // in bar series, and magric type should be considered.\n\n  labelPosition === 'outside' && (labelPosition = opt.defaultOutsidePosition || 'top');\n\n  if (labelPosition != null) {\n    textConfig.position = labelPosition;\n  }\n\n  if (labelOffset != null) {\n    textConfig.offset = labelOffset;\n  }\n\n  if (labelRotate != null) {\n    labelRotate *= Math.PI / 180;\n    textConfig.rotation = labelRotate;\n  }\n\n  if (labelDistance != null) {\n    textConfig.distance = labelDistance;\n  } // fill and auto is determined by the color of path fill if it's not specified by developers.\n\n\n  textConfig.outsideFill = textStyleModel.get('color') === 'inherit' ? opt.inheritColor || null : 'auto';\n  return textConfig;\n}\n/**\r\n * The uniform entry of set text style, that is, retrieve style definitions\r\n * from `model` and set to `textStyle` object.\r\n *\r\n * Never in merge mode, but in overwrite mode, that is, all of the text style\r\n * properties will be set. (Consider the states of normal and emphasis and\r\n * default value can be adopted, merge would make the logic too complicated\r\n * to manage.)\r\n */\n\nfunction setTextStyleCommon(textStyle, textStyleModel, opt, isNotNormal, isAttached) {\n  // Consider there will be abnormal when merge hover style to normal style if given default value.\n  opt = opt || EMPTY_OBJ;\n  var ecModel = textStyleModel.ecModel;\n  var globalTextStyle = ecModel && ecModel.option.textStyle; // Consider case:\n  // {\n  //     data: [{\n  //         value: 12,\n  //         label: {\n  //             rich: {\n  //                 // no 'a' here but using parent 'a'.\n  //             }\n  //         }\n  //     }],\n  //     rich: {\n  //         a: { ... }\n  //     }\n  // }\n\n  var richItemNames = getRichItemNames(textStyleModel);\n  var richResult;\n\n  if (richItemNames) {\n    richResult = {};\n\n    for (var name_1 in richItemNames) {\n      if (richItemNames.hasOwnProperty(name_1)) {\n        // Cascade is supported in rich.\n        var richTextStyle = textStyleModel.getModel(['rich', name_1]); // In rich, never `disableBox`.\n        // FIXME: consider `label: {formatter: '{a|xx}', color: 'blue', rich: {a: {}}}`,\n        // the default color `'blue'` will not be adopted if no color declared in `rich`.\n        // That might confuses users. So probably we should put `textStyleModel` as the\n        // root ancestor of the `richTextStyle`. But that would be a break change.\n\n        setTokenTextStyle(richResult[name_1] = {}, richTextStyle, globalTextStyle, opt, isNotNormal, isAttached, false, true);\n      }\n    }\n  }\n\n  if (richResult) {\n    textStyle.rich = richResult;\n  }\n\n  var overflow = textStyleModel.get('overflow');\n\n  if (overflow) {\n    textStyle.overflow = overflow;\n  }\n\n  var margin = textStyleModel.get('minMargin');\n\n  if (margin != null) {\n    textStyle.margin = margin;\n  }\n\n  setTokenTextStyle(textStyle, textStyleModel, globalTextStyle, opt, isNotNormal, isAttached, true, false);\n} // Consider case:\n// {\n//     data: [{\n//         value: 12,\n//         label: {\n//             rich: {\n//                 // no 'a' here but using parent 'a'.\n//             }\n//         }\n//     }],\n//     rich: {\n//         a: { ... }\n//     }\n// }\n// TODO TextStyleModel\n\n\nfunction getRichItemNames(textStyleModel) {\n  // Use object to remove duplicated names.\n  var richItemNameMap;\n\n  while (textStyleModel && textStyleModel !== textStyleModel.ecModel) {\n    var rich = (textStyleModel.option || EMPTY_OBJ).rich;\n\n    if (rich) {\n      richItemNameMap = richItemNameMap || {};\n      var richKeys = keys(rich);\n\n      for (var i = 0; i < richKeys.length; i++) {\n        var richKey = richKeys[i];\n        richItemNameMap[richKey] = 1;\n      }\n    }\n\n    textStyleModel = textStyleModel.parentModel;\n  }\n\n  return richItemNameMap;\n}\n\nvar TEXT_PROPS_WITH_GLOBAL = ['fontStyle', 'fontWeight', 'fontSize', 'fontFamily', 'textShadowColor', 'textShadowBlur', 'textShadowOffsetX', 'textShadowOffsetY'];\nvar TEXT_PROPS_SELF = ['align', 'lineHeight', 'width', 'height', 'tag', 'verticalAlign', 'ellipsis'];\nvar TEXT_PROPS_BOX = ['padding', 'borderWidth', 'borderRadius', 'borderDashOffset', 'backgroundColor', 'borderColor', 'shadowColor', 'shadowBlur', 'shadowOffsetX', 'shadowOffsetY'];\n\nfunction setTokenTextStyle(textStyle, textStyleModel, globalTextStyle, opt, isNotNormal, isAttached, isBlock, inRich) {\n  // In merge mode, default value should not be given.\n  globalTextStyle = !isNotNormal && globalTextStyle || EMPTY_OBJ;\n  var inheritColor = opt && opt.inheritColor;\n  var fillColor = textStyleModel.getShallow('color');\n  var strokeColor = textStyleModel.getShallow('textBorderColor');\n  var opacity = retrieve2(textStyleModel.getShallow('opacity'), globalTextStyle.opacity);\n\n  if (fillColor === 'inherit' || fillColor === 'auto') {\n    if (process.env.NODE_ENV !== 'production') {\n      if (fillColor === 'auto') {\n        deprecateReplaceLog('color: \\'auto\\'', 'color: \\'inherit\\'');\n      }\n    }\n\n    if (inheritColor) {\n      fillColor = inheritColor;\n    } else {\n      fillColor = null;\n    }\n  }\n\n  if (strokeColor === 'inherit' || strokeColor === 'auto') {\n    if (process.env.NODE_ENV !== 'production') {\n      if (strokeColor === 'auto') {\n        deprecateReplaceLog('color: \\'auto\\'', 'color: \\'inherit\\'');\n      }\n    }\n\n    if (inheritColor) {\n      strokeColor = inheritColor;\n    } else {\n      strokeColor = null;\n    }\n  }\n\n  if (!isAttached) {\n    // Only use default global textStyle.color if text is individual.\n    // Otherwise it will use the strategy of attached text color because text may be on a path.\n    fillColor = fillColor || globalTextStyle.color;\n    strokeColor = strokeColor || globalTextStyle.textBorderColor;\n  }\n\n  if (fillColor != null) {\n    textStyle.fill = fillColor;\n  }\n\n  if (strokeColor != null) {\n    textStyle.stroke = strokeColor;\n  }\n\n  var textBorderWidth = retrieve2(textStyleModel.getShallow('textBorderWidth'), globalTextStyle.textBorderWidth);\n\n  if (textBorderWidth != null) {\n    textStyle.lineWidth = textBorderWidth;\n  }\n\n  var textBorderType = retrieve2(textStyleModel.getShallow('textBorderType'), globalTextStyle.textBorderType);\n\n  if (textBorderType != null) {\n    textStyle.lineDash = textBorderType;\n  }\n\n  var textBorderDashOffset = retrieve2(textStyleModel.getShallow('textBorderDashOffset'), globalTextStyle.textBorderDashOffset);\n\n  if (textBorderDashOffset != null) {\n    textStyle.lineDashOffset = textBorderDashOffset;\n  }\n\n  if (!isNotNormal && opacity == null && !inRich) {\n    opacity = opt && opt.defaultOpacity;\n  }\n\n  if (opacity != null) {\n    textStyle.opacity = opacity;\n  } // TODO\n\n\n  if (!isNotNormal && !isAttached) {\n    // Set default finally.\n    if (textStyle.fill == null && opt.inheritColor) {\n      textStyle.fill = opt.inheritColor;\n    }\n  } // Do not use `getFont` here, because merge should be supported, where\n  // part of these properties may be changed in emphasis style, and the\n  // others should remain their original value got from normal style.\n\n\n  for (var i = 0; i < TEXT_PROPS_WITH_GLOBAL.length; i++) {\n    var key = TEXT_PROPS_WITH_GLOBAL[i];\n    var val = retrieve2(textStyleModel.getShallow(key), globalTextStyle[key]);\n\n    if (val != null) {\n      textStyle[key] = val;\n    }\n  }\n\n  for (var i = 0; i < TEXT_PROPS_SELF.length; i++) {\n    var key = TEXT_PROPS_SELF[i];\n    var val = textStyleModel.getShallow(key);\n\n    if (val != null) {\n      textStyle[key] = val;\n    }\n  }\n\n  if (textStyle.verticalAlign == null) {\n    var baseline = textStyleModel.getShallow('baseline');\n\n    if (baseline != null) {\n      textStyle.verticalAlign = baseline;\n    }\n  }\n\n  if (!isBlock || !opt.disableBox) {\n    for (var i = 0; i < TEXT_PROPS_BOX.length; i++) {\n      var key = TEXT_PROPS_BOX[i];\n      var val = textStyleModel.getShallow(key);\n\n      if (val != null) {\n        textStyle[key] = val;\n      }\n    }\n\n    var borderType = textStyleModel.getShallow('borderType');\n\n    if (borderType != null) {\n      textStyle.borderDash = borderType;\n    }\n\n    if ((textStyle.backgroundColor === 'auto' || textStyle.backgroundColor === 'inherit') && inheritColor) {\n      if (process.env.NODE_ENV !== 'production') {\n        if (textStyle.backgroundColor === 'auto') {\n          deprecateReplaceLog('backgroundColor: \\'auto\\'', 'backgroundColor: \\'inherit\\'');\n        }\n      }\n\n      textStyle.backgroundColor = inheritColor;\n    }\n\n    if ((textStyle.borderColor === 'auto' || textStyle.borderColor === 'inherit') && inheritColor) {\n      if (process.env.NODE_ENV !== 'production') {\n        if (textStyle.borderColor === 'auto') {\n          deprecateReplaceLog('borderColor: \\'auto\\'', 'borderColor: \\'inherit\\'');\n        }\n      }\n\n      textStyle.borderColor = inheritColor;\n    }\n  }\n}\n\nexport function getFont(opt, ecModel) {\n  var gTextStyleModel = ecModel && ecModel.getModel('textStyle');\n  return trim([// FIXME in node-canvas fontWeight is before fontStyle\n  opt.fontStyle || gTextStyleModel && gTextStyleModel.getShallow('fontStyle') || '', opt.fontWeight || gTextStyleModel && gTextStyleModel.getShallow('fontWeight') || '', (opt.fontSize || gTextStyleModel && gTextStyleModel.getShallow('fontSize') || 12) + 'px', opt.fontFamily || gTextStyleModel && gTextStyleModel.getShallow('fontFamily') || 'sans-serif'].join(' '));\n}\nexport var labelInner = makeInner();\nexport function setLabelValueAnimation(label, labelStatesModels, value, getDefaultText) {\n  if (!label) {\n    return;\n  }\n\n  var obj = labelInner(label);\n  obj.prevValue = obj.value;\n  obj.value = value;\n  var normalLabelModel = labelStatesModels.normal;\n  obj.valueAnimation = normalLabelModel.get('valueAnimation');\n\n  if (obj.valueAnimation) {\n    obj.precision = normalLabelModel.get('precision');\n    obj.defaultInterpolatedText = getDefaultText;\n    obj.statesModels = labelStatesModels;\n  }\n}\nexport function animateLabelValue(textEl, dataIndex, data, animatableModel, labelFetcher) {\n  var labelInnerStore = labelInner(textEl);\n\n  if (!labelInnerStore.valueAnimation || labelInnerStore.prevValue === labelInnerStore.value) {\n    // Value not changed, no new label animation\n    return;\n  }\n\n  var defaultInterpolatedText = labelInnerStore.defaultInterpolatedText; // Consider the case that being animating, do not use the `obj.value`,\n  // Otherwise it will jump to the `obj.value` when this new animation started.\n\n  var currValue = retrieve2(labelInnerStore.interpolatedValue, labelInnerStore.prevValue);\n  var targetValue = labelInnerStore.value;\n\n  function during(percent) {\n    var interpolated = interpolateRawValues(data, labelInnerStore.precision, currValue, targetValue, percent);\n    labelInnerStore.interpolatedValue = percent === 1 ? null : interpolated;\n    var labelText = getLabelText({\n      labelDataIndex: dataIndex,\n      labelFetcher: labelFetcher,\n      defaultText: defaultInterpolatedText ? defaultInterpolatedText(interpolated) : interpolated + ''\n    }, labelInnerStore.statesModels, interpolated);\n    setLabelText(textEl, labelText);\n  }\n\n  textEl.percent = 0;\n  (labelInnerStore.prevValue == null ? initProps : updateProps)(textEl, {\n    // percent is used to prevent animation from being aborted #15916\n    percent: 1\n  }, animatableModel, dataIndex, null, during);\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { getFont } from '../../label/labelStyle.js';\nimport ZRText from 'zrender/lib/graphic/Text.js';\nvar PATH_COLOR = ['textStyle', 'color'];\nvar textStyleParams = ['fontStyle', 'fontWeight', 'fontSize', 'fontFamily', 'padding', 'lineHeight', 'rich', 'width', 'height', 'overflow']; // TODO Performance improvement?\n\nvar tmpText = new ZRText();\n\nvar TextStyleMixin =\n/** @class */\nfunction () {\n  function TextStyleMixin() {}\n  /**\r\n   * Get color property or get color from option.textStyle.color\r\n   */\n  // TODO Callback\n\n\n  TextStyleMixin.prototype.getTextColor = function (isEmphasis) {\n    var ecModel = this.ecModel;\n    return this.getShallow('color') || (!isEmphasis && ecModel ? ecModel.get(PATH_COLOR) : null);\n  };\n  /**\r\n   * Create font string from fontStyle, fontWeight, fontSize, fontFamily\r\n   * @return {string}\r\n   */\n\n\n  TextStyleMixin.prototype.getFont = function () {\n    return getFont({\n      fontStyle: this.getShallow('fontStyle'),\n      fontWeight: this.getShallow('fontWeight'),\n      fontSize: this.getShallow('fontSize'),\n      fontFamily: this.getShallow('fontFamily')\n    }, this.ecModel);\n  };\n\n  TextStyleMixin.prototype.getTextRect = function (text) {\n    var style = {\n      text: text,\n      verticalAlign: this.getShallow('verticalAlign') || this.getShallow('baseline')\n    };\n\n    for (var i = 0; i < textStyleParams.length; i++) {\n      style[textStyleParams[i]] = this.getShallow(textStyleParams[i]);\n    }\n\n    tmpText.useStyle(style);\n    tmpText.update();\n    return tmpText.getBoundingRect();\n  };\n\n  return TextStyleMixin;\n}();\n\n;\nexport default TextStyleMixin;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport makeStyleMapper from './makeStyleMapper.js';\nexport var LINE_STYLE_KEY_MAP = [['lineWidth', 'width'], ['stroke', 'color'], ['opacity'], ['shadowBlur'], ['shadowOffsetX'], ['shadowOffsetY'], ['shadowColor'], ['lineDash', 'type'], ['lineDashOffset', 'dashOffset'], ['lineCap', 'cap'], ['lineJoin', 'join'], ['miterLimit'] // Option decal is in `DecalObject` but style.decal is in `PatternObject`.\n// So do not transfer decal directly.\n];\nvar getLineStyle = makeStyleMapper(LINE_STYLE_KEY_MAP);\n\nvar LineStyleMixin =\n/** @class */\nfunction () {\n  function LineStyleMixin() {}\n\n  LineStyleMixin.prototype.getLineStyle = function (excludes) {\n    return getLineStyle(this, excludes);\n  };\n\n  return LineStyleMixin;\n}();\n\n;\nexport { LineStyleMixin };","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport makeStyleMapper from './makeStyleMapper.js';\nexport var ITEM_STYLE_KEY_MAP = [['fill', 'color'], ['stroke', 'borderColor'], ['lineWidth', 'borderWidth'], ['opacity'], ['shadowBlur'], ['shadowOffsetX'], ['shadowOffsetY'], ['shadowColor'], ['lineDash', 'borderType'], ['lineDashOffset', 'borderDashOffset'], ['lineCap', 'borderCap'], ['lineJoin', 'borderJoin'], ['miterLimit', 'borderMiterLimit'] // Option decal is in `DecalObject` but style.decal is in `PatternObject`.\n// So do not transfer decal directly.\n];\nvar getItemStyle = makeStyleMapper(ITEM_STYLE_KEY_MAP);\n\nvar ItemStyleMixin =\n/** @class */\nfunction () {\n  function ItemStyleMixin() {}\n\n  ItemStyleMixin.prototype.getItemStyle = function (excludes, includes) {\n    return getItemStyle(this, excludes, includes);\n  };\n\n  return ItemStyleMixin;\n}();\n\nexport { ItemStyleMixin };","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport env from 'zrender/lib/core/env.js';\nimport { enableClassExtend, enableClassCheck } from '../util/clazz.js';\nimport { AreaStyleMixin } from './mixin/areaStyle.js';\nimport TextStyleMixin from './mixin/textStyle.js';\nimport { LineStyleMixin } from './mixin/lineStyle.js';\nimport { ItemStyleMixin } from './mixin/itemStyle.js';\nimport { mixin, clone, merge } from 'zrender/lib/core/util.js';\n\nvar Model =\n/** @class */\nfunction () {\n  function Model(option, parentModel, ecModel) {\n    this.parentModel = parentModel;\n    this.ecModel = ecModel;\n    this.option = option; // Simple optimization\n    // if (this.init) {\n    //     if (arguments.length <= 4) {\n    //         this.init(option, parentModel, ecModel, extraOpt);\n    //     }\n    //     else {\n    //         this.init.apply(this, arguments);\n    //     }\n    // }\n  }\n\n  Model.prototype.init = function (option, parentModel, ecModel) {\n    var rest = [];\n\n    for (var _i = 3; _i < arguments.length; _i++) {\n      rest[_i - 3] = arguments[_i];\n    }\n  };\n  /**\r\n   * Merge the input option to me.\r\n   */\n\n\n  Model.prototype.mergeOption = function (option, ecModel) {\n    merge(this.option, option, true);\n  }; // `path` can be 'a.b.c', so the return value type have to be `ModelOption`\n  // TODO: TYPE strict key check?\n  // get(path: string | string[], ignoreParent?: boolean): ModelOption;\n\n\n  Model.prototype.get = function (path, ignoreParent) {\n    if (path == null) {\n      return this.option;\n    }\n\n    return this._doGet(this.parsePath(path), !ignoreParent && this.parentModel);\n  };\n\n  Model.prototype.getShallow = function (key, ignoreParent) {\n    var option = this.option;\n    var val = option == null ? option : option[key];\n\n    if (val == null && !ignoreParent) {\n      var parentModel = this.parentModel;\n\n      if (parentModel) {\n        // FIXME:TS do not know how to make it works\n        val = parentModel.getShallow(key);\n      }\n    }\n\n    return val;\n  }; // `path` can be 'a.b.c', so the return value type have to be `Model<ModelOption>`\n  // getModel(path: string | string[], parentModel?: Model): Model;\n  // TODO 'a.b.c' is deprecated\n\n\n  Model.prototype.getModel = function (path, parentModel) {\n    var hasPath = path != null;\n    var pathFinal = hasPath ? this.parsePath(path) : null;\n    var obj = hasPath ? this._doGet(pathFinal) : this.option;\n    parentModel = parentModel || this.parentModel && this.parentModel.getModel(this.resolveParentPath(pathFinal));\n    return new Model(obj, parentModel, this.ecModel);\n  };\n  /**\r\n   * If model has option\r\n   */\n\n\n  Model.prototype.isEmpty = function () {\n    return this.option == null;\n  };\n\n  Model.prototype.restoreData = function () {}; // Pending\n\n\n  Model.prototype.clone = function () {\n    var Ctor = this.constructor;\n    return new Ctor(clone(this.option));\n  }; // setReadOnly(properties): void {\n  // clazzUtil.setReadOnly(this, properties);\n  // }\n  // If path is null/undefined, return null/undefined.\n\n\n  Model.prototype.parsePath = function (path) {\n    if (typeof path === 'string') {\n      return path.split('.');\n    }\n\n    return path;\n  }; // Resolve path for parent. Perhaps useful when parent use a different property.\n  // Default to be a identity resolver.\n  // Can be modified to a different resolver.\n\n\n  Model.prototype.resolveParentPath = function (path) {\n    return path;\n  }; // FIXME:TS check whether put this method here\n\n\n  Model.prototype.isAnimationEnabled = function () {\n    if (!env.node && this.option) {\n      if (this.option.animation != null) {\n        return !!this.option.animation;\n      } else if (this.parentModel) {\n        return this.parentModel.isAnimationEnabled();\n      }\n    }\n  };\n\n  Model.prototype._doGet = function (pathArr, parentModel) {\n    var obj = this.option;\n\n    if (!pathArr) {\n      return obj;\n    }\n\n    for (var i = 0; i < pathArr.length; i++) {\n      // Ignore empty\n      if (!pathArr[i]) {\n        continue;\n      } // obj could be number/string/... (like 0)\n\n\n      obj = obj && typeof obj === 'object' ? obj[pathArr[i]] : null;\n\n      if (obj == null) {\n        break;\n      }\n    }\n\n    if (obj == null && parentModel) {\n      obj = parentModel._doGet(this.resolveParentPath(pathArr), parentModel.parentModel);\n    }\n\n    return obj;\n  };\n\n  return Model;\n}();\n\n; // Enable Model.extend.\n\nenableClassExtend(Model);\nenableClassCheck(Model);\nmixin(Model, LineStyleMixin);\nmixin(Model, ItemStyleMixin);\nmixin(Model, AreaStyleMixin);\nmixin(Model, TextStyleMixin);\nexport default Model;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport * as zrUtil from 'zrender/lib/core/util.js';\nimport { parseClassType } from './clazz.js';\nimport { makePrintable } from './log.js'; // A random offset\n\nvar base = Math.round(Math.random() * 10);\n/**\r\n * @public\r\n * @param {string} type\r\n * @return {string}\r\n */\n\nexport function getUID(type) {\n  // Considering the case of crossing js context,\n  // use Math.random to make id as unique as possible.\n  return [type || '', base++].join('_');\n}\n/**\r\n * Implements `SubTypeDefaulterManager` for `target`.\r\n */\n\nexport function enableSubTypeDefaulter(target) {\n  var subTypeDefaulters = {};\n\n  target.registerSubTypeDefaulter = function (componentType, defaulter) {\n    var componentTypeInfo = parseClassType(componentType);\n    subTypeDefaulters[componentTypeInfo.main] = defaulter;\n  };\n\n  target.determineSubType = function (componentType, option) {\n    var type = option.type;\n\n    if (!type) {\n      var componentTypeMain = parseClassType(componentType).main;\n\n      if (target.hasSubTypes(componentType) && subTypeDefaulters[componentTypeMain]) {\n        type = subTypeDefaulters[componentTypeMain](option);\n      }\n    }\n\n    return type;\n  };\n}\n/**\r\n * Implements `TopologicalTravelable<any>` for `entity`.\r\n *\r\n * Topological travel on Activity Network (Activity On Vertices).\r\n * Dependencies is defined in Model.prototype.dependencies, like ['xAxis', 'yAxis'].\r\n * If 'xAxis' or 'yAxis' is absent in componentTypeList, just ignore it in topology.\r\n * If there is circular dependencey, Error will be thrown.\r\n */\n\nexport function enableTopologicalTravel(entity, dependencyGetter) {\n  /**\r\n   * @param targetNameList Target Component type list.\r\n   *                       Can be ['aa', 'bb', 'aa.xx']\r\n   * @param fullNameList By which we can build dependency graph.\r\n   * @param callback Params: componentType, dependencies.\r\n   * @param context Scope of callback.\r\n   */\n  entity.topologicalTravel = function (targetNameList, fullNameList, callback, context) {\n    if (!targetNameList.length) {\n      return;\n    }\n\n    var result = makeDepndencyGraph(fullNameList);\n    var graph = result.graph;\n    var noEntryList = result.noEntryList;\n    var targetNameSet = {};\n    zrUtil.each(targetNameList, function (name) {\n      targetNameSet[name] = true;\n    });\n\n    while (noEntryList.length) {\n      var currComponentType = noEntryList.pop();\n      var currVertex = graph[currComponentType];\n      var isInTargetNameSet = !!targetNameSet[currComponentType];\n\n      if (isInTargetNameSet) {\n        callback.call(context, currComponentType, currVertex.originalDeps.slice());\n        delete targetNameSet[currComponentType];\n      }\n\n      zrUtil.each(currVertex.successor, isInTargetNameSet ? removeEdgeAndAdd : removeEdge);\n    }\n\n    zrUtil.each(targetNameSet, function () {\n      var errMsg = '';\n\n      if (process.env.NODE_ENV !== 'production') {\n        errMsg = makePrintable('Circular dependency may exists: ', targetNameSet, targetNameList, fullNameList);\n      }\n\n      throw new Error(errMsg);\n    });\n\n    function removeEdge(succComponentType) {\n      graph[succComponentType].entryCount--;\n\n      if (graph[succComponentType].entryCount === 0) {\n        noEntryList.push(succComponentType);\n      }\n    } // Consider this case: legend depends on series, and we call\n    // chart.setOption({series: [...]}), where only series is in option.\n    // If we do not have 'removeEdgeAndAdd', legendModel.mergeOption will\n    // not be called, but only sereis.mergeOption is called. Thus legend\n    // have no chance to update its local record about series (like which\n    // name of series is available in legend).\n\n\n    function removeEdgeAndAdd(succComponentType) {\n      targetNameSet[succComponentType] = true;\n      removeEdge(succComponentType);\n    }\n  };\n\n  function makeDepndencyGraph(fullNameList) {\n    var graph = {};\n    var noEntryList = [];\n    zrUtil.each(fullNameList, function (name) {\n      var thisItem = createDependencyGraphItem(graph, name);\n      var originalDeps = thisItem.originalDeps = dependencyGetter(name);\n      var availableDeps = getAvailableDependencies(originalDeps, fullNameList);\n      thisItem.entryCount = availableDeps.length;\n\n      if (thisItem.entryCount === 0) {\n        noEntryList.push(name);\n      }\n\n      zrUtil.each(availableDeps, function (dependentName) {\n        if (zrUtil.indexOf(thisItem.predecessor, dependentName) < 0) {\n          thisItem.predecessor.push(dependentName);\n        }\n\n        var thatItem = createDependencyGraphItem(graph, dependentName);\n\n        if (zrUtil.indexOf(thatItem.successor, dependentName) < 0) {\n          thatItem.successor.push(name);\n        }\n      });\n    });\n    return {\n      graph: graph,\n      noEntryList: noEntryList\n    };\n  }\n\n  function createDependencyGraphItem(graph, name) {\n    if (!graph[name]) {\n      graph[name] = {\n        predecessor: [],\n        successor: []\n      };\n    }\n\n    return graph[name];\n  }\n\n  function getAvailableDependencies(originalDeps, fullNameList) {\n    var availableDeps = [];\n    zrUtil.each(originalDeps, function (dep) {\n      zrUtil.indexOf(fullNameList, dep) >= 0 && availableDeps.push(dep);\n    });\n    return availableDeps;\n  }\n}\nexport function inheritDefaultOption(superOption, subOption) {\n  // See also `model/Component.ts#getDefaultOption`\n  return zrUtil.merge(zrUtil.merge({}, superOption, true), subOption, true);\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport Model from '../model/Model.js';\nimport env from 'zrender/lib/core/env.js'; // default import ZH and EN lang\n\nimport langEN from '../i18n/langEN.js';\nimport langZH from '../i18n/langZH.js';\nimport { isString, clone, merge } from 'zrender/lib/core/util.js';\nvar LOCALE_ZH = 'ZH';\nvar LOCALE_EN = 'EN';\nvar DEFAULT_LOCALE = LOCALE_EN;\nvar localeStorage = {};\nvar localeModels = {};\nexport var SYSTEM_LANG = !env.domSupported ? DEFAULT_LOCALE : function () {\n  var langStr = (\n  /* eslint-disable-next-line */\n  document.documentElement.lang || navigator.language || navigator.browserLanguage).toUpperCase();\n  return langStr.indexOf(LOCALE_ZH) > -1 ? LOCALE_ZH : DEFAULT_LOCALE;\n}();\nexport function registerLocale(locale, localeObj) {\n  locale = locale.toUpperCase();\n  localeModels[locale] = new Model(localeObj);\n  localeStorage[locale] = localeObj;\n} // export function getLocale(locale: string) {\n//     return localeStorage[locale];\n// }\n\nexport function createLocaleObject(locale) {\n  if (isString(locale)) {\n    var localeObj = localeStorage[locale.toUpperCase()] || {};\n\n    if (locale === LOCALE_ZH || locale === LOCALE_EN) {\n      return clone(localeObj);\n    } else {\n      return merge(clone(localeObj), clone(localeStorage[DEFAULT_LOCALE]), false);\n    }\n  } else {\n    return merge(clone(locale), clone(localeStorage[DEFAULT_LOCALE]), false);\n  }\n}\nexport function getLocaleModel(lang) {\n  return localeModels[lang];\n}\nexport function getDefaultLocaleModel() {\n  return localeModels[DEFAULT_LOCALE];\n} // Default locale\n\nregisterLocale(LOCALE_EN, langEN);\nregisterLocale(LOCALE_ZH, langZH);","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n * Licensed to the Apache Software Foundation (ASF) under one\r\n * or more contributor license agreements.  See the NOTICE file\r\n * distributed with this work for additional information\r\n * regarding copyright ownership.  The ASF licenses this file\r\n * to you under the Apache License, Version 2.0 (the\r\n * \"License\"); you may not use this file except in compliance\r\n * with the License.  You may obtain a copy of the License at\r\n *\r\n *   http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing,\r\n * software distributed under the License is distributed on an\r\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n * KIND, either express or implied.  See the License for the\r\n * specific language governing permissions and limitations\r\n * under the License.\r\n */\n\n/**\r\n * Language: English.\r\n */\nexport default {\n  time: {\n    month: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'],\n    monthAbbr: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],\n    dayOfWeek: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],\n    dayOfWeekAbbr: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat']\n  },\n  legend: {\n    selector: {\n      all: 'All',\n      inverse: 'Inv'\n    }\n  },\n  toolbox: {\n    brush: {\n      title: {\n        rect: 'Box Select',\n        polygon: 'Lasso Select',\n        lineX: 'Horizontally Select',\n        lineY: 'Vertically Select',\n        keep: 'Keep Selections',\n        clear: 'Clear Selections'\n      }\n    },\n    dataView: {\n      title: 'Data View',\n      lang: ['Data View', 'Close', 'Refresh']\n    },\n    dataZoom: {\n      title: {\n        zoom: 'Zoom',\n        back: 'Zoom Reset'\n      }\n    },\n    magicType: {\n      title: {\n        line: 'Switch to Line Chart',\n        bar: 'Switch to Bar Chart',\n        stack: 'Stack',\n        tiled: 'Tile'\n      }\n    },\n    restore: {\n      title: 'Restore'\n    },\n    saveAsImage: {\n      title: 'Save as Image',\n      lang: ['Right Click to Save Image']\n    }\n  },\n  series: {\n    typeNames: {\n      pie: 'Pie chart',\n      bar: 'Bar chart',\n      line: 'Line chart',\n      scatter: 'Scatter plot',\n      effectScatter: 'Ripple scatter plot',\n      radar: 'Radar chart',\n      tree: 'Tree',\n      treemap: 'Treemap',\n      boxplot: 'Boxplot',\n      candlestick: 'Candlestick',\n      k: 'K line chart',\n      heatmap: 'Heat map',\n      map: 'Map',\n      parallel: 'Parallel coordinate map',\n      lines: 'Line graph',\n      graph: 'Relationship graph',\n      sankey: 'Sankey diagram',\n      funnel: 'Funnel chart',\n      gauge: 'Gauge',\n      pictorialBar: 'Pictorial bar',\n      themeRiver: 'Theme River Map',\n      sunburst: 'Sunburst'\n    }\n  },\n  aria: {\n    general: {\n      withTitle: 'This is a chart about \"{title}\"',\n      withoutTitle: 'This is a chart'\n    },\n    series: {\n      single: {\n        prefix: '',\n        withName: ' with type {seriesType} named {seriesName}.',\n        withoutName: ' with type {seriesType}.'\n      },\n      multiple: {\n        prefix: '. It consists of {seriesCount} series count.',\n        withName: ' The {seriesId} series is a {seriesType} representing {seriesName}.',\n        withoutName: ' The {seriesId} series is a {seriesType}.',\n        separator: {\n          middle: '',\n          end: ''\n        }\n      }\n    },\n    data: {\n      allData: 'The data is as follows: ',\n      partialData: 'The first {displayCnt} items are: ',\n      withName: 'the data for {name} is {value}',\n      withoutName: '{value}',\n      separator: {\n        middle: ', ',\n        end: '. '\n      }\n    }\n  }\n};","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n * Licensed to the Apache Software Foundation (ASF) under one\r\n * or more contributor license agreements.  See the NOTICE file\r\n * distributed with this work for additional information\r\n * regarding copyright ownership.  The ASF licenses this file\r\n * to you under the Apache License, Version 2.0 (the\r\n * \"License\"); you may not use this file except in compliance\r\n * with the License.  You may obtain a copy of the License at\r\n *\r\n *   http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing,\r\n * software distributed under the License is distributed on an\r\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n * KIND, either express or implied.  See the License for the\r\n * specific language governing permissions and limitations\r\n * under the License.\r\n */\nexport default {\n  time: {\n    month: ['一月', '二月', '三月', '四月', '五月', '六月', '七月', '八月', '九月', '十月', '十一月', '十二月'],\n    monthAbbr: ['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月'],\n    dayOfWeek: ['星期日', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六'],\n    dayOfWeekAbbr: ['日', '一', '二', '三', '四', '五', '六']\n  },\n  legend: {\n    selector: {\n      all: '全选',\n      inverse: '反选'\n    }\n  },\n  toolbox: {\n    brush: {\n      title: {\n        rect: '矩形选择',\n        polygon: '圈选',\n        lineX: '横向选择',\n        lineY: '纵向选择',\n        keep: '保持选择',\n        clear: '清除选择'\n      }\n    },\n    dataView: {\n      title: '数据视图',\n      lang: ['数据视图', '关闭', '刷新']\n    },\n    dataZoom: {\n      title: {\n        zoom: '区域缩放',\n        back: '区域缩放还原'\n      }\n    },\n    magicType: {\n      title: {\n        line: '切换为折线图',\n        bar: '切换为柱状图',\n        stack: '切换为堆叠',\n        tiled: '切换为平铺'\n      }\n    },\n    restore: {\n      title: '还原'\n    },\n    saveAsImage: {\n      title: '保存为图片',\n      lang: ['右键另存为图片']\n    }\n  },\n  series: {\n    typeNames: {\n      pie: '饼图',\n      bar: '柱状图',\n      line: '折线图',\n      scatter: '散点图',\n      effectScatter: '涟漪散点图',\n      radar: '雷达图',\n      tree: '树图',\n      treemap: '矩形树图',\n      boxplot: '箱型图',\n      candlestick: 'K线图',\n      k: 'K线图',\n      heatmap: '热力图',\n      map: '地图',\n      parallel: '平行坐标图',\n      lines: '线图',\n      graph: '关系图',\n      sankey: '桑基图',\n      funnel: '漏斗图',\n      gauge: '仪表盘图',\n      pictorialBar: '象形柱图',\n      themeRiver: '主题河流图',\n      sunburst: '旭日图'\n    }\n  },\n  aria: {\n    general: {\n      withTitle: '这是一个关于“{title}”的图表。',\n      withoutTitle: '这是一个图表，'\n    },\n    series: {\n      single: {\n        prefix: '',\n        withName: '图表类型是{seriesType}，表示{seriesName}。',\n        withoutName: '图表类型是{seriesType}。'\n      },\n      multiple: {\n        prefix: '它由{seriesCount}个图表系列组成。',\n        withName: '第{seriesId}个系列是一个表示{seriesName}的{seriesType}，',\n        withoutName: '第{seriesId}个系列是一个{seriesType}，',\n        separator: {\n          middle: '；',\n          end: '。'\n        }\n      }\n    },\n    data: {\n      allData: '其数据是——',\n      partialData: '其中，前{displayCnt}项是——',\n      withName: '{name}的数据是{value}',\n      withoutName: '{value}',\n      separator: {\n        middle: '，',\n        end: ''\n      }\n    }\n  }\n};","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport * as zrUtil from 'zrender/lib/core/util.js';\nimport * as numberUtil from './number.js';\nimport { getDefaultLocaleModel, getLocaleModel, SYSTEM_LANG } from '../core/locale.js';\nimport Model from '../model/Model.js';\nexport var ONE_SECOND = 1000;\nexport var ONE_MINUTE = ONE_SECOND * 60;\nexport var ONE_HOUR = ONE_MINUTE * 60;\nexport var ONE_DAY = ONE_HOUR * 24;\nexport var ONE_YEAR = ONE_DAY * 365;\nexport var defaultLeveledFormatter = {\n  year: '{yyyy}',\n  month: '{MMM}',\n  day: '{d}',\n  hour: '{HH}:{mm}',\n  minute: '{HH}:{mm}',\n  second: '{HH}:{mm}:{ss}',\n  millisecond: '{HH}:{mm}:{ss} {SSS}',\n  none: '{yyyy}-{MM}-{dd} {HH}:{mm}:{ss} {SSS}'\n};\nvar fullDayFormatter = '{yyyy}-{MM}-{dd}';\nexport var fullLeveledFormatter = {\n  year: '{yyyy}',\n  month: '{yyyy}-{MM}',\n  day: fullDayFormatter,\n  hour: fullDayFormatter + ' ' + defaultLeveledFormatter.hour,\n  minute: fullDayFormatter + ' ' + defaultLeveledFormatter.minute,\n  second: fullDayFormatter + ' ' + defaultLeveledFormatter.second,\n  millisecond: defaultLeveledFormatter.none\n};\nexport var primaryTimeUnits = ['year', 'month', 'day', 'hour', 'minute', 'second', 'millisecond'];\nexport var timeUnits = ['year', 'half-year', 'quarter', 'month', 'week', 'half-week', 'day', 'half-day', 'quarter-day', 'hour', 'minute', 'second', 'millisecond'];\nexport function pad(str, len) {\n  str += '';\n  return '0000'.substr(0, len - str.length) + str;\n}\nexport function getPrimaryTimeUnit(timeUnit) {\n  switch (timeUnit) {\n    case 'half-year':\n    case 'quarter':\n      return 'month';\n\n    case 'week':\n    case 'half-week':\n      return 'day';\n\n    case 'half-day':\n    case 'quarter-day':\n      return 'hour';\n\n    default:\n      // year, minutes, second, milliseconds\n      return timeUnit;\n  }\n}\nexport function isPrimaryTimeUnit(timeUnit) {\n  return timeUnit === getPrimaryTimeUnit(timeUnit);\n}\nexport function getDefaultFormatPrecisionOfInterval(timeUnit) {\n  switch (timeUnit) {\n    case 'year':\n    case 'month':\n      return 'day';\n\n    case 'millisecond':\n      return 'millisecond';\n\n    default:\n      // Also for day, hour, minute, second\n      return 'second';\n  }\n}\nexport function format( // Note: The result based on `isUTC` are totally different, which can not be just simply\n// substituted by the result without `isUTC`. So we make the param `isUTC` mandatory.\ntime, template, isUTC, lang) {\n  var date = numberUtil.parseDate(time);\n  var y = date[fullYearGetterName(isUTC)]();\n  var M = date[monthGetterName(isUTC)]() + 1;\n  var q = Math.floor((M - 1) / 3) + 1;\n  var d = date[dateGetterName(isUTC)]();\n  var e = date['get' + (isUTC ? 'UTC' : '') + 'Day']();\n  var H = date[hoursGetterName(isUTC)]();\n  var h = (H - 1) % 12 + 1;\n  var m = date[minutesGetterName(isUTC)]();\n  var s = date[secondsGetterName(isUTC)]();\n  var S = date[millisecondsGetterName(isUTC)]();\n  var localeModel = lang instanceof Model ? lang : getLocaleModel(lang || SYSTEM_LANG) || getDefaultLocaleModel();\n  var timeModel = localeModel.getModel('time');\n  var month = timeModel.get('month');\n  var monthAbbr = timeModel.get('monthAbbr');\n  var dayOfWeek = timeModel.get('dayOfWeek');\n  var dayOfWeekAbbr = timeModel.get('dayOfWeekAbbr');\n  return (template || '').replace(/{yyyy}/g, y + '').replace(/{yy}/g, pad(y % 100 + '', 2)).replace(/{Q}/g, q + '').replace(/{MMMM}/g, month[M - 1]).replace(/{MMM}/g, monthAbbr[M - 1]).replace(/{MM}/g, pad(M, 2)).replace(/{M}/g, M + '').replace(/{dd}/g, pad(d, 2)).replace(/{d}/g, d + '').replace(/{eeee}/g, dayOfWeek[e]).replace(/{ee}/g, dayOfWeekAbbr[e]).replace(/{e}/g, e + '').replace(/{HH}/g, pad(H, 2)).replace(/{H}/g, H + '').replace(/{hh}/g, pad(h + '', 2)).replace(/{h}/g, h + '').replace(/{mm}/g, pad(m, 2)).replace(/{m}/g, m + '').replace(/{ss}/g, pad(s, 2)).replace(/{s}/g, s + '').replace(/{SSS}/g, pad(S, 3)).replace(/{S}/g, S + '');\n}\nexport function leveledFormat(tick, idx, formatter, lang, isUTC) {\n  var template = null;\n\n  if (zrUtil.isString(formatter)) {\n    // Single formatter for all units at all levels\n    template = formatter;\n  } else if (zrUtil.isFunction(formatter)) {\n    // Callback formatter\n    template = formatter(tick.value, idx, {\n      level: tick.level\n    });\n  } else {\n    var defaults = zrUtil.extend({}, defaultLeveledFormatter);\n\n    if (tick.level > 0) {\n      for (var i = 0; i < primaryTimeUnits.length; ++i) {\n        defaults[primaryTimeUnits[i]] = \"{primary|\" + defaults[primaryTimeUnits[i]] + \"}\";\n      }\n    }\n\n    var mergedFormatter = formatter ? formatter.inherit === false ? formatter // Use formatter with bigger units\n    : zrUtil.defaults(formatter, defaults) : defaults;\n    var unit = getUnitFromValue(tick.value, isUTC);\n\n    if (mergedFormatter[unit]) {\n      template = mergedFormatter[unit];\n    } else if (mergedFormatter.inherit) {\n      // Unit formatter is not defined and should inherit from bigger units\n      var targetId = timeUnits.indexOf(unit);\n\n      for (var i = targetId - 1; i >= 0; --i) {\n        if (mergedFormatter[unit]) {\n          template = mergedFormatter[unit];\n          break;\n        }\n      }\n\n      template = template || defaults.none;\n    }\n\n    if (zrUtil.isArray(template)) {\n      var levelId = tick.level == null ? 0 : tick.level >= 0 ? tick.level : template.length + tick.level;\n      levelId = Math.min(levelId, template.length - 1);\n      template = template[levelId];\n    }\n  }\n\n  return format(new Date(tick.value), template, isUTC, lang);\n}\nexport function getUnitFromValue(value, isUTC) {\n  var date = numberUtil.parseDate(value);\n  var M = date[monthGetterName(isUTC)]() + 1;\n  var d = date[dateGetterName(isUTC)]();\n  var h = date[hoursGetterName(isUTC)]();\n  var m = date[minutesGetterName(isUTC)]();\n  var s = date[secondsGetterName(isUTC)]();\n  var S = date[millisecondsGetterName(isUTC)]();\n  var isSecond = S === 0;\n  var isMinute = isSecond && s === 0;\n  var isHour = isMinute && m === 0;\n  var isDay = isHour && h === 0;\n  var isMonth = isDay && d === 1;\n  var isYear = isMonth && M === 1;\n\n  if (isYear) {\n    return 'year';\n  } else if (isMonth) {\n    return 'month';\n  } else if (isDay) {\n    return 'day';\n  } else if (isHour) {\n    return 'hour';\n  } else if (isMinute) {\n    return 'minute';\n  } else if (isSecond) {\n    return 'second';\n  } else {\n    return 'millisecond';\n  }\n}\nexport function getUnitValue(value, unit, isUTC) {\n  var date = zrUtil.isNumber(value) ? numberUtil.parseDate(value) : value;\n  unit = unit || getUnitFromValue(value, isUTC);\n\n  switch (unit) {\n    case 'year':\n      return date[fullYearGetterName(isUTC)]();\n\n    case 'half-year':\n      return date[monthGetterName(isUTC)]() >= 6 ? 1 : 0;\n\n    case 'quarter':\n      return Math.floor((date[monthGetterName(isUTC)]() + 1) / 4);\n\n    case 'month':\n      return date[monthGetterName(isUTC)]();\n\n    case 'day':\n      return date[dateGetterName(isUTC)]();\n\n    case 'half-day':\n      return date[hoursGetterName(isUTC)]() / 24;\n\n    case 'hour':\n      return date[hoursGetterName(isUTC)]();\n\n    case 'minute':\n      return date[minutesGetterName(isUTC)]();\n\n    case 'second':\n      return date[secondsGetterName(isUTC)]();\n\n    case 'millisecond':\n      return date[millisecondsGetterName(isUTC)]();\n  }\n}\nexport function fullYearGetterName(isUTC) {\n  return isUTC ? 'getUTCFullYear' : 'getFullYear';\n}\nexport function monthGetterName(isUTC) {\n  return isUTC ? 'getUTCMonth' : 'getMonth';\n}\nexport function dateGetterName(isUTC) {\n  return isUTC ? 'getUTCDate' : 'getDate';\n}\nexport function hoursGetterName(isUTC) {\n  return isUTC ? 'getUTCHours' : 'getHours';\n}\nexport function minutesGetterName(isUTC) {\n  return isUTC ? 'getUTCMinutes' : 'getMinutes';\n}\nexport function secondsGetterName(isUTC) {\n  return isUTC ? 'getUTCSeconds' : 'getSeconds';\n}\nexport function millisecondsGetterName(isUTC) {\n  return isUTC ? 'getUTCMilliseconds' : 'getMilliseconds';\n}\nexport function fullYearSetterName(isUTC) {\n  return isUTC ? 'setUTCFullYear' : 'setFullYear';\n}\nexport function monthSetterName(isUTC) {\n  return isUTC ? 'setUTCMonth' : 'setMonth';\n}\nexport function dateSetterName(isUTC) {\n  return isUTC ? 'setUTCDate' : 'setDate';\n}\nexport function hoursSetterName(isUTC) {\n  return isUTC ? 'setUTCHours' : 'setHours';\n}\nexport function minutesSetterName(isUTC) {\n  return isUTC ? 'setUTCMinutes' : 'setMinutes';\n}\nexport function secondsSetterName(isUTC) {\n  return isUTC ? 'setUTCSeconds' : 'setSeconds';\n}\nexport function millisecondsSetterName(isUTC) {\n  return isUTC ? 'setUTCMilliseconds' : 'setMilliseconds';\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport * as zrUtil from 'zrender/lib/core/util.js';\nimport { encodeHTML } from 'zrender/lib/core/dom.js';\nimport { parseDate, isNumeric, numericToNumber } from './number.js';\nimport { format as timeFormat, pad } from './time.js';\nimport { deprecateReplaceLog } from './log.js';\n/**\r\n * Add a comma each three digit.\r\n */\n\nexport function addCommas(x) {\n  if (!isNumeric(x)) {\n    return zrUtil.isString(x) ? x : '-';\n  }\n\n  var parts = (x + '').split('.');\n  return parts[0].replace(/(\\d{1,3})(?=(?:\\d{3})+(?!\\d))/g, '$1,') + (parts.length > 1 ? '.' + parts[1] : '');\n}\nexport function toCamelCase(str, upperCaseFirst) {\n  str = (str || '').toLowerCase().replace(/-(.)/g, function (match, group1) {\n    return group1.toUpperCase();\n  });\n\n  if (upperCaseFirst && str) {\n    str = str.charAt(0).toUpperCase() + str.slice(1);\n  }\n\n  return str;\n}\nexport var normalizeCssArray = zrUtil.normalizeCssArray;\nexport { encodeHTML };\n/**\r\n * Make value user readable for tooltip and label.\r\n * \"User readable\":\r\n *     Try to not print programmer-specific text like NaN, Infinity, null, undefined.\r\n *     Avoid to display an empty string, which users can not recognize there is\r\n *     a value and it might look like a bug.\r\n */\n\nexport function makeValueReadable(value, valueType, useUTC) {\n  var USER_READABLE_DEFUALT_TIME_PATTERN = '{yyyy}-{MM}-{dd} {HH}:{mm}:{ss}';\n\n  function stringToUserReadable(str) {\n    return str && zrUtil.trim(str) ? str : '-';\n  }\n\n  function isNumberUserReadable(num) {\n    return !!(num != null && !isNaN(num) && isFinite(num));\n  }\n\n  var isTypeTime = valueType === 'time';\n  var isValueDate = value instanceof Date;\n\n  if (isTypeTime || isValueDate) {\n    var date = isTypeTime ? parseDate(value) : value;\n\n    if (!isNaN(+date)) {\n      return timeFormat(date, USER_READABLE_DEFUALT_TIME_PATTERN, useUTC);\n    } else if (isValueDate) {\n      return '-';\n    } // In other cases, continue to try to display the value in the following code.\n\n  }\n\n  if (valueType === 'ordinal') {\n    return zrUtil.isStringSafe(value) ? stringToUserReadable(value) : zrUtil.isNumber(value) ? isNumberUserReadable(value) ? value + '' : '-' : '-';\n  } // By default.\n\n\n  var numericResult = numericToNumber(value);\n  return isNumberUserReadable(numericResult) ? addCommas(numericResult) : zrUtil.isStringSafe(value) ? stringToUserReadable(value) : typeof value === 'boolean' ? value + '' : '-';\n}\nvar TPL_VAR_ALIAS = ['a', 'b', 'c', 'd', 'e', 'f', 'g'];\n\nvar wrapVar = function (varName, seriesIdx) {\n  return '{' + varName + (seriesIdx == null ? '' : seriesIdx) + '}';\n};\n/**\r\n * Template formatter\r\n * @param {Array.<Object>|Object} paramsList\r\n */\n\n\nexport function formatTpl(tpl, paramsList, encode) {\n  if (!zrUtil.isArray(paramsList)) {\n    paramsList = [paramsList];\n  }\n\n  var seriesLen = paramsList.length;\n\n  if (!seriesLen) {\n    return '';\n  }\n\n  var $vars = paramsList[0].$vars || [];\n\n  for (var i = 0; i < $vars.length; i++) {\n    var alias = TPL_VAR_ALIAS[i];\n    tpl = tpl.replace(wrapVar(alias), wrapVar(alias, 0));\n  }\n\n  for (var seriesIdx = 0; seriesIdx < seriesLen; seriesIdx++) {\n    for (var k = 0; k < $vars.length; k++) {\n      var val = paramsList[seriesIdx][$vars[k]];\n      tpl = tpl.replace(wrapVar(TPL_VAR_ALIAS[k], seriesIdx), encode ? encodeHTML(val) : val);\n    }\n  }\n\n  return tpl;\n}\n/**\r\n * simple Template formatter\r\n */\n\nexport function formatTplSimple(tpl, param, encode) {\n  zrUtil.each(param, function (value, key) {\n    tpl = tpl.replace('{' + key + '}', encode ? encodeHTML(value) : value);\n  });\n  return tpl;\n}\nexport function getTooltipMarker(inOpt, extraCssText) {\n  var opt = zrUtil.isString(inOpt) ? {\n    color: inOpt,\n    extraCssText: extraCssText\n  } : inOpt || {};\n  var color = opt.color;\n  var type = opt.type;\n  extraCssText = opt.extraCssText;\n  var renderMode = opt.renderMode || 'html';\n\n  if (!color) {\n    return '';\n  }\n\n  if (renderMode === 'html') {\n    return type === 'subItem' ? '<span style=\"display:inline-block;vertical-align:middle;margin-right:8px;margin-left:3px;' + 'border-radius:4px;width:4px;height:4px;background-color:' // Only support string\n    + encodeHTML(color) + ';' + (extraCssText || '') + '\"></span>' : '<span style=\"display:inline-block;margin-right:4px;' + 'border-radius:10px;width:10px;height:10px;background-color:' + encodeHTML(color) + ';' + (extraCssText || '') + '\"></span>';\n  } else {\n    // Should better not to auto generate style name by auto-increment number here.\n    // Because this util is usually called in tooltip formatter, which is probably\n    // called repeatedly when mouse move and the auto-increment number increases fast.\n    // Users can make their own style name by theirselves, make it unique and readable.\n    var markerId = opt.markerId || 'markerX';\n    return {\n      renderMode: renderMode,\n      content: '{' + markerId + '|}  ',\n      style: type === 'subItem' ? {\n        width: 4,\n        height: 4,\n        borderRadius: 2,\n        backgroundColor: color\n      } : {\n        width: 10,\n        height: 10,\n        borderRadius: 5,\n        backgroundColor: color\n      }\n    };\n  }\n}\n/**\r\n * @deprecated Use `time/format` instead.\r\n * ISO Date format\r\n * @param {string} tpl\r\n * @param {number} value\r\n * @param {boolean} [isUTC=false] Default in local time.\r\n *           see `module:echarts/scale/Time`\r\n *           and `module:echarts/util/number#parseDate`.\r\n * @inner\r\n */\n\nexport function formatTime(tpl, value, isUTC) {\n  if (process.env.NODE_ENV !== 'production') {\n    deprecateReplaceLog('echarts.format.formatTime', 'echarts.time.format');\n  }\n\n  if (tpl === 'week' || tpl === 'month' || tpl === 'quarter' || tpl === 'half-year' || tpl === 'year') {\n    tpl = 'MM-dd\\nyyyy';\n  }\n\n  var date = parseDate(value);\n  var getUTC = isUTC ? 'getUTC' : 'get';\n  var y = date[getUTC + 'FullYear']();\n  var M = date[getUTC + 'Month']() + 1;\n  var d = date[getUTC + 'Date']();\n  var h = date[getUTC + 'Hours']();\n  var m = date[getUTC + 'Minutes']();\n  var s = date[getUTC + 'Seconds']();\n  var S = date[getUTC + 'Milliseconds']();\n  tpl = tpl.replace('MM', pad(M, 2)).replace('M', M).replace('yyyy', y).replace('yy', pad(y % 100 + '', 2)).replace('dd', pad(d, 2)).replace('d', d).replace('hh', pad(h, 2)).replace('h', h).replace('mm', pad(m, 2)).replace('m', m).replace('ss', pad(s, 2)).replace('s', s).replace('SSS', pad(S, 3));\n  return tpl;\n}\n/**\r\n * Capital first\r\n * @param {string} str\r\n * @return {string}\r\n */\n\nexport function capitalFirst(str) {\n  return str ? str.charAt(0).toUpperCase() + str.substr(1) : str;\n}\n/**\r\n * @return Never be null/undefined.\r\n */\n\nexport function convertToColorString(color, defaultColor) {\n  defaultColor = defaultColor || 'transparent';\n  return zrUtil.isString(color) ? color : zrUtil.isObject(color) ? color.colorStops && (color.colorStops[0] || {}).color || defaultColor : defaultColor;\n}\nexport { truncateText } from 'zrender/lib/graphic/helper/parseText.js';\n/**\r\n * open new tab\r\n * @param link url\r\n * @param target blank or self\r\n */\n\nexport function windowOpen(link, target) {\n  /* global window */\n  if (target === '_blank' || target === 'blank') {\n    var blank = window.open();\n    blank.opener = null;\n    blank.location.href = link;\n  } else {\n    window.open(link, target);\n  }\n}\nexport { getTextRect } from '../legacy/getTextRect.js';","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\n// Layout helpers for each component positioning\nimport * as zrUtil from 'zrender/lib/core/util.js';\nimport BoundingRect from 'zrender/lib/core/BoundingRect.js';\nimport { parsePercent } from './number.js';\nimport * as formatUtil from './format.js';\nvar each = zrUtil.each;\n/**\r\n * @public\r\n */\n\nexport var LOCATION_PARAMS = ['left', 'right', 'top', 'bottom', 'width', 'height'];\n/**\r\n * @public\r\n */\n\nexport var HV_NAMES = [['width', 'left', 'right'], ['height', 'top', 'bottom']];\n\nfunction boxLayout(orient, group, gap, maxWidth, maxHeight) {\n  var x = 0;\n  var y = 0;\n\n  if (maxWidth == null) {\n    maxWidth = Infinity;\n  }\n\n  if (maxHeight == null) {\n    maxHeight = Infinity;\n  }\n\n  var currentLineMaxSize = 0;\n  group.eachChild(function (child, idx) {\n    var rect = child.getBoundingRect();\n    var nextChild = group.childAt(idx + 1);\n    var nextChildRect = nextChild && nextChild.getBoundingRect();\n    var nextX;\n    var nextY;\n\n    if (orient === 'horizontal') {\n      var moveX = rect.width + (nextChildRect ? -nextChildRect.x + rect.x : 0);\n      nextX = x + moveX; // Wrap when width exceeds maxWidth or meet a `newline` group\n      // FIXME compare before adding gap?\n\n      if (nextX > maxWidth || child.newline) {\n        x = 0;\n        nextX = moveX;\n        y += currentLineMaxSize + gap;\n        currentLineMaxSize = rect.height;\n      } else {\n        // FIXME: consider rect.y is not `0`?\n        currentLineMaxSize = Math.max(currentLineMaxSize, rect.height);\n      }\n    } else {\n      var moveY = rect.height + (nextChildRect ? -nextChildRect.y + rect.y : 0);\n      nextY = y + moveY; // Wrap when width exceeds maxHeight or meet a `newline` group\n\n      if (nextY > maxHeight || child.newline) {\n        x += currentLineMaxSize + gap;\n        y = 0;\n        nextY = moveY;\n        currentLineMaxSize = rect.width;\n      } else {\n        currentLineMaxSize = Math.max(currentLineMaxSize, rect.width);\n      }\n    }\n\n    if (child.newline) {\n      return;\n    }\n\n    child.x = x;\n    child.y = y;\n    child.markRedraw();\n    orient === 'horizontal' ? x = nextX + gap : y = nextY + gap;\n  });\n}\n/**\r\n * VBox or HBox layouting\r\n * @param {string} orient\r\n * @param {module:zrender/graphic/Group} group\r\n * @param {number} gap\r\n * @param {number} [width=Infinity]\r\n * @param {number} [height=Infinity]\r\n */\n\n\nexport var box = boxLayout;\n/**\r\n * VBox layouting\r\n * @param {module:zrender/graphic/Group} group\r\n * @param {number} gap\r\n * @param {number} [width=Infinity]\r\n * @param {number} [height=Infinity]\r\n */\n\nexport var vbox = zrUtil.curry(boxLayout, 'vertical');\n/**\r\n * HBox layouting\r\n * @param {module:zrender/graphic/Group} group\r\n * @param {number} gap\r\n * @param {number} [width=Infinity]\r\n * @param {number} [height=Infinity]\r\n */\n\nexport var hbox = zrUtil.curry(boxLayout, 'horizontal');\n/**\r\n * If x or x2 is not specified or 'center' 'left' 'right',\r\n * the width would be as long as possible.\r\n * If y or y2 is not specified or 'middle' 'top' 'bottom',\r\n * the height would be as long as possible.\r\n */\n\nexport function getAvailableSize(positionInfo, containerRect, margin) {\n  var containerWidth = containerRect.width;\n  var containerHeight = containerRect.height;\n  var x = parsePercent(positionInfo.left, containerWidth);\n  var y = parsePercent(positionInfo.top, containerHeight);\n  var x2 = parsePercent(positionInfo.right, containerWidth);\n  var y2 = parsePercent(positionInfo.bottom, containerHeight);\n  (isNaN(x) || isNaN(parseFloat(positionInfo.left))) && (x = 0);\n  (isNaN(x2) || isNaN(parseFloat(positionInfo.right))) && (x2 = containerWidth);\n  (isNaN(y) || isNaN(parseFloat(positionInfo.top))) && (y = 0);\n  (isNaN(y2) || isNaN(parseFloat(positionInfo.bottom))) && (y2 = containerHeight);\n  margin = formatUtil.normalizeCssArray(margin || 0);\n  return {\n    width: Math.max(x2 - x - margin[1] - margin[3], 0),\n    height: Math.max(y2 - y - margin[0] - margin[2], 0)\n  };\n}\n/**\r\n * Parse position info.\r\n */\n\nexport function getLayoutRect(positionInfo, containerRect, margin) {\n  margin = formatUtil.normalizeCssArray(margin || 0);\n  var containerWidth = containerRect.width;\n  var containerHeight = containerRect.height;\n  var left = parsePercent(positionInfo.left, containerWidth);\n  var top = parsePercent(positionInfo.top, containerHeight);\n  var right = parsePercent(positionInfo.right, containerWidth);\n  var bottom = parsePercent(positionInfo.bottom, containerHeight);\n  var width = parsePercent(positionInfo.width, containerWidth);\n  var height = parsePercent(positionInfo.height, containerHeight);\n  var verticalMargin = margin[2] + margin[0];\n  var horizontalMargin = margin[1] + margin[3];\n  var aspect = positionInfo.aspect; // If width is not specified, calculate width from left and right\n\n  if (isNaN(width)) {\n    width = containerWidth - right - horizontalMargin - left;\n  }\n\n  if (isNaN(height)) {\n    height = containerHeight - bottom - verticalMargin - top;\n  }\n\n  if (aspect != null) {\n    // If width and height are not given\n    // 1. Graph should not exceeds the container\n    // 2. Aspect must be keeped\n    // 3. Graph should take the space as more as possible\n    // FIXME\n    // Margin is not considered, because there is no case that both\n    // using margin and aspect so far.\n    if (isNaN(width) && isNaN(height)) {\n      if (aspect > containerWidth / containerHeight) {\n        width = containerWidth * 0.8;\n      } else {\n        height = containerHeight * 0.8;\n      }\n    } // Calculate width or height with given aspect\n\n\n    if (isNaN(width)) {\n      width = aspect * height;\n    }\n\n    if (isNaN(height)) {\n      height = width / aspect;\n    }\n  } // If left is not specified, calculate left from right and width\n\n\n  if (isNaN(left)) {\n    left = containerWidth - right - width - horizontalMargin;\n  }\n\n  if (isNaN(top)) {\n    top = containerHeight - bottom - height - verticalMargin;\n  } // Align left and top\n\n\n  switch (positionInfo.left || positionInfo.right) {\n    case 'center':\n      left = containerWidth / 2 - width / 2 - margin[3];\n      break;\n\n    case 'right':\n      left = containerWidth - width - horizontalMargin;\n      break;\n  }\n\n  switch (positionInfo.top || positionInfo.bottom) {\n    case 'middle':\n    case 'center':\n      top = containerHeight / 2 - height / 2 - margin[0];\n      break;\n\n    case 'bottom':\n      top = containerHeight - height - verticalMargin;\n      break;\n  } // If something is wrong and left, top, width, height are calculated as NaN\n\n\n  left = left || 0;\n  top = top || 0;\n\n  if (isNaN(width)) {\n    // Width may be NaN if only one value is given except width\n    width = containerWidth - horizontalMargin - left - (right || 0);\n  }\n\n  if (isNaN(height)) {\n    // Height may be NaN if only one value is given except height\n    height = containerHeight - verticalMargin - top - (bottom || 0);\n  }\n\n  var rect = new BoundingRect(left + margin[3], top + margin[0], width, height);\n  rect.margin = margin;\n  return rect;\n}\n/**\r\n * Position a zr element in viewport\r\n *  Group position is specified by either\r\n *  {left, top}, {right, bottom}\r\n *  If all properties exists, right and bottom will be igonred.\r\n *\r\n * Logic:\r\n *     1. Scale (against origin point in parent coord)\r\n *     2. Rotate (against origin point in parent coord)\r\n *     3. Translate (with el.position by this method)\r\n * So this method only fixes the last step 'Translate', which does not affect\r\n * scaling and rotating.\r\n *\r\n * If be called repeatedly with the same input el, the same result will be gotten.\r\n *\r\n * Return true if the layout happened.\r\n *\r\n * @param el Should have `getBoundingRect` method.\r\n * @param positionInfo\r\n * @param positionInfo.left\r\n * @param positionInfo.top\r\n * @param positionInfo.right\r\n * @param positionInfo.bottom\r\n * @param positionInfo.width Only for opt.boundingModel: 'raw'\r\n * @param positionInfo.height Only for opt.boundingModel: 'raw'\r\n * @param containerRect\r\n * @param margin\r\n * @param opt\r\n * @param opt.hv Only horizontal or only vertical. Default to be [1, 1]\r\n * @param opt.boundingMode\r\n *        Specify how to calculate boundingRect when locating.\r\n *        'all': Position the boundingRect that is transformed and uioned\r\n *               both itself and its descendants.\r\n *               This mode simplies confine the elements in the bounding\r\n *               of their container (e.g., using 'right: 0').\r\n *        'raw': Position the boundingRect that is not transformed and only itself.\r\n *               This mode is useful when you want a element can overflow its\r\n *               container. (Consider a rotated circle needs to be located in a corner.)\r\n *               In this mode positionInfo.width/height can only be number.\r\n */\n\nexport function positionElement(el, positionInfo, containerRect, margin, opt, out) {\n  var h = !opt || !opt.hv || opt.hv[0];\n  var v = !opt || !opt.hv || opt.hv[1];\n  var boundingMode = opt && opt.boundingMode || 'all';\n  out = out || el;\n  out.x = el.x;\n  out.y = el.y;\n\n  if (!h && !v) {\n    return false;\n  }\n\n  var rect;\n\n  if (boundingMode === 'raw') {\n    rect = el.type === 'group' ? new BoundingRect(0, 0, +positionInfo.width || 0, +positionInfo.height || 0) : el.getBoundingRect();\n  } else {\n    rect = el.getBoundingRect();\n\n    if (el.needLocalTransform()) {\n      var transform = el.getLocalTransform(); // Notice: raw rect may be inner object of el,\n      // which should not be modified.\n\n      rect = rect.clone();\n      rect.applyTransform(transform);\n    }\n  } // The real width and height can not be specified but calculated by the given el.\n\n\n  var layoutRect = getLayoutRect(zrUtil.defaults({\n    width: rect.width,\n    height: rect.height\n  }, positionInfo), containerRect, margin); // Because 'tranlate' is the last step in transform\n  // (see zrender/core/Transformable#getLocalTransform),\n  // we can just only modify el.position to get final result.\n\n  var dx = h ? layoutRect.x - rect.x : 0;\n  var dy = v ? layoutRect.y - rect.y : 0;\n\n  if (boundingMode === 'raw') {\n    out.x = dx;\n    out.y = dy;\n  } else {\n    out.x += dx;\n    out.y += dy;\n  }\n\n  if (out === el) {\n    el.markRedraw();\n  }\n\n  return true;\n}\n/**\r\n * @param option Contains some of the properties in HV_NAMES.\r\n * @param hvIdx 0: horizontal; 1: vertical.\r\n */\n\nexport function sizeCalculable(option, hvIdx) {\n  return option[HV_NAMES[hvIdx][0]] != null || option[HV_NAMES[hvIdx][1]] != null && option[HV_NAMES[hvIdx][2]] != null;\n}\nexport function fetchLayoutMode(ins) {\n  var layoutMode = ins.layoutMode || ins.constructor.layoutMode;\n  return zrUtil.isObject(layoutMode) ? layoutMode : layoutMode ? {\n    type: layoutMode\n  } : null;\n}\n/**\r\n * Consider Case:\r\n * When default option has {left: 0, width: 100}, and we set {right: 0}\r\n * through setOption or media query, using normal zrUtil.merge will cause\r\n * {right: 0} does not take effect.\r\n *\r\n * @example\r\n * ComponentModel.extend({\r\n *     init: function () {\r\n *         ...\r\n *         let inputPositionParams = layout.getLayoutParams(option);\r\n *         this.mergeOption(inputPositionParams);\r\n *     },\r\n *     mergeOption: function (newOption) {\r\n *         newOption && zrUtil.merge(thisOption, newOption, true);\r\n *         layout.mergeLayoutParam(thisOption, newOption);\r\n *     }\r\n * });\r\n *\r\n * @param targetOption\r\n * @param newOption\r\n * @param opt\r\n */\n\nexport function mergeLayoutParam(targetOption, newOption, opt) {\n  var ignoreSize = opt && opt.ignoreSize;\n  !zrUtil.isArray(ignoreSize) && (ignoreSize = [ignoreSize, ignoreSize]);\n  var hResult = merge(HV_NAMES[0], 0);\n  var vResult = merge(HV_NAMES[1], 1);\n  copy(HV_NAMES[0], targetOption, hResult);\n  copy(HV_NAMES[1], targetOption, vResult);\n\n  function merge(names, hvIdx) {\n    var newParams = {};\n    var newValueCount = 0;\n    var merged = {};\n    var mergedValueCount = 0;\n    var enoughParamNumber = 2;\n    each(names, function (name) {\n      merged[name] = targetOption[name];\n    });\n    each(names, function (name) {\n      // Consider case: newOption.width is null, which is\n      // set by user for removing width setting.\n      hasProp(newOption, name) && (newParams[name] = merged[name] = newOption[name]);\n      hasValue(newParams, name) && newValueCount++;\n      hasValue(merged, name) && mergedValueCount++;\n    });\n\n    if (ignoreSize[hvIdx]) {\n      // Only one of left/right is premitted to exist.\n      if (hasValue(newOption, names[1])) {\n        merged[names[2]] = null;\n      } else if (hasValue(newOption, names[2])) {\n        merged[names[1]] = null;\n      }\n\n      return merged;\n    } // Case: newOption: {width: ..., right: ...},\n    // or targetOption: {right: ...} and newOption: {width: ...},\n    // There is no conflict when merged only has params count\n    // little than enoughParamNumber.\n\n\n    if (mergedValueCount === enoughParamNumber || !newValueCount) {\n      return merged;\n    } // Case: newOption: {width: ..., right: ...},\n    // Than we can make sure user only want those two, and ignore\n    // all origin params in targetOption.\n    else if (newValueCount >= enoughParamNumber) {\n        return newParams;\n      } else {\n        // Chose another param from targetOption by priority.\n        for (var i = 0; i < names.length; i++) {\n          var name_1 = names[i];\n\n          if (!hasProp(newParams, name_1) && hasProp(targetOption, name_1)) {\n            newParams[name_1] = targetOption[name_1];\n            break;\n          }\n        }\n\n        return newParams;\n      }\n  }\n\n  function hasProp(obj, name) {\n    return obj.hasOwnProperty(name);\n  }\n\n  function hasValue(obj, name) {\n    return obj[name] != null && obj[name] !== 'auto';\n  }\n\n  function copy(names, target, source) {\n    each(names, function (name) {\n      target[name] = source[name];\n    });\n  }\n}\n/**\r\n * Retrieve 'left', 'right', 'top', 'bottom', 'width', 'height' from object.\r\n */\n\nexport function getLayoutParams(source) {\n  return copyLayoutParams({}, source);\n}\n/**\r\n * Retrieve 'left', 'right', 'top', 'bottom', 'width', 'height' from object.\r\n * @param {Object} source\r\n * @return {Object} Result contains those props.\r\n */\n\nexport function copyLayoutParams(target, source) {\n  source && target && each(LOCATION_PARAMS, function (name) {\n    source.hasOwnProperty(name) && (target[name] = source[name]);\n  });\n  return target;\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { __extends } from \"tslib\";\nimport * as zrUtil from 'zrender/lib/core/util.js';\nimport Model from './Model.js';\nimport * as componentUtil from '../util/component.js';\nimport { enableClassManagement, parseClassType, isExtendedClass, mountExtend } from '../util/clazz.js';\nimport { makeInner, queryReferringComponents } from '../util/model.js';\nimport * as layout from '../util/layout.js';\nvar inner = makeInner();\n\nvar ComponentModel =\n/** @class */\nfunction (_super) {\n  __extends(ComponentModel, _super);\n\n  function ComponentModel(option, parentModel, ecModel) {\n    var _this = _super.call(this, option, parentModel, ecModel) || this;\n\n    _this.uid = componentUtil.getUID('ec_cpt_model');\n    return _this;\n  }\n\n  ComponentModel.prototype.init = function (option, parentModel, ecModel) {\n    this.mergeDefaultAndTheme(option, ecModel);\n  };\n\n  ComponentModel.prototype.mergeDefaultAndTheme = function (option, ecModel) {\n    var layoutMode = layout.fetchLayoutMode(this);\n    var inputPositionParams = layoutMode ? layout.getLayoutParams(option) : {};\n    var themeModel = ecModel.getTheme();\n    zrUtil.merge(option, themeModel.get(this.mainType));\n    zrUtil.merge(option, this.getDefaultOption());\n\n    if (layoutMode) {\n      layout.mergeLayoutParam(option, inputPositionParams, layoutMode);\n    }\n  };\n\n  ComponentModel.prototype.mergeOption = function (option, ecModel) {\n    zrUtil.merge(this.option, option, true);\n    var layoutMode = layout.fetchLayoutMode(this);\n\n    if (layoutMode) {\n      layout.mergeLayoutParam(this.option, option, layoutMode);\n    }\n  };\n  /**\r\n   * Called immediately after `init` or `mergeOption` of this instance called.\r\n   */\n\n\n  ComponentModel.prototype.optionUpdated = function (newCptOption, isInit) {};\n  /**\r\n   * [How to declare defaultOption]:\r\n   *\r\n   * (A) If using class declaration in typescript (since echarts 5):\r\n   * ```ts\r\n   * import {ComponentOption} from '../model/option.js';\r\n   * export interface XxxOption extends ComponentOption {\r\n   *     aaa: number\r\n   * }\r\n   * export class XxxModel extends Component {\r\n   *     static type = 'xxx';\r\n   *     static defaultOption: XxxOption = {\r\n   *         aaa: 123\r\n   *     }\r\n   * }\r\n   * Component.registerClass(XxxModel);\r\n   * ```\r\n   * ```ts\r\n   * import {inheritDefaultOption} from '../util/component.js';\r\n   * import {XxxModel, XxxOption} from './XxxModel.js';\r\n   * export interface XxxSubOption extends XxxOption {\r\n   *     bbb: number\r\n   * }\r\n   * class XxxSubModel extends XxxModel {\r\n   *     static defaultOption: XxxSubOption = inheritDefaultOption(XxxModel.defaultOption, {\r\n   *         bbb: 456\r\n   *     })\r\n   *     fn() {\r\n   *         let opt = this.getDefaultOption();\r\n   *         // opt is {aaa: 123, bbb: 456}\r\n   *     }\r\n   * }\r\n   * ```\r\n   *\r\n   * (B) If using class extend (previous approach in echarts 3 & 4):\r\n   * ```js\r\n   * let XxxComponent = Component.extend({\r\n   *     defaultOption: {\r\n   *         xx: 123\r\n   *     }\r\n   * })\r\n   * ```\r\n   * ```js\r\n   * let XxxSubComponent = XxxComponent.extend({\r\n   *     defaultOption: {\r\n   *         yy: 456\r\n   *     },\r\n   *     fn: function () {\r\n   *         let opt = this.getDefaultOption();\r\n   *         // opt is {xx: 123, yy: 456}\r\n   *     }\r\n   * })\r\n   * ```\r\n   */\n\n\n  ComponentModel.prototype.getDefaultOption = function () {\n    var ctor = this.constructor; // If using class declaration, it is different to travel super class\n    // in legacy env and auto merge defaultOption. So if using class\n    // declaration, defaultOption should be merged manually.\n\n    if (!isExtendedClass(ctor)) {\n      // When using ts class, defaultOption must be declared as static.\n      return ctor.defaultOption;\n    } // FIXME: remove this approach?\n\n\n    var fields = inner(this);\n\n    if (!fields.defaultOption) {\n      var optList = [];\n      var clz = ctor;\n\n      while (clz) {\n        var opt = clz.prototype.defaultOption;\n        opt && optList.push(opt);\n        clz = clz.superClass;\n      }\n\n      var defaultOption = {};\n\n      for (var i = optList.length - 1; i >= 0; i--) {\n        defaultOption = zrUtil.merge(defaultOption, optList[i], true);\n      }\n\n      fields.defaultOption = defaultOption;\n    }\n\n    return fields.defaultOption;\n  };\n  /**\r\n   * Notice: always force to input param `useDefault` in case that forget to consider it.\r\n   * The same behavior as `modelUtil.parseFinder`.\r\n   *\r\n   * @param useDefault In many cases like series refer axis and axis refer grid,\r\n   *        If axis index / axis id not specified, use the first target as default.\r\n   *        In other cases like dataZoom refer axis, if not specified, measn no refer.\r\n   */\n\n\n  ComponentModel.prototype.getReferringComponents = function (mainType, opt) {\n    var indexKey = mainType + 'Index';\n    var idKey = mainType + 'Id';\n    return queryReferringComponents(this.ecModel, mainType, {\n      index: this.get(indexKey, true),\n      id: this.get(idKey, true)\n    }, opt);\n  };\n\n  ComponentModel.prototype.getBoxLayoutParams = function () {\n    // Consider itself having box layout configs.\n    var boxLayoutModel = this;\n    return {\n      left: boxLayoutModel.get('left'),\n      top: boxLayoutModel.get('top'),\n      right: boxLayoutModel.get('right'),\n      bottom: boxLayoutModel.get('bottom'),\n      width: boxLayoutModel.get('width'),\n      height: boxLayoutModel.get('height')\n    };\n  };\n  /**\r\n   * Get key for zlevel.\r\n   * If developers don't configure zlevel. We will assign zlevel to series based on the key.\r\n   * For example, lines with trail effect and progressive series will in an individual zlevel.\r\n   */\n\n\n  ComponentModel.prototype.getZLevelKey = function () {\n    return '';\n  };\n\n  ComponentModel.prototype.setZLevel = function (zlevel) {\n    this.option.zlevel = zlevel;\n  };\n\n  ComponentModel.protoInitialize = function () {\n    var proto = ComponentModel.prototype;\n    proto.type = 'component';\n    proto.id = '';\n    proto.name = '';\n    proto.mainType = '';\n    proto.subType = '';\n    proto.componentIndex = 0;\n  }();\n\n  return ComponentModel;\n}(Model);\n\nmountExtend(ComponentModel, Model);\nenableClassManagement(ComponentModel);\ncomponentUtil.enableSubTypeDefaulter(ComponentModel);\ncomponentUtil.enableTopologicalTravel(ComponentModel, getDependencies);\n\nfunction getDependencies(componentType) {\n  var deps = [];\n  zrUtil.each(ComponentModel.getClassesByMainType(componentType), function (clz) {\n    deps = deps.concat(clz.dependencies || clz.prototype.dependencies || []);\n  }); // Ensure main type.\n\n  deps = zrUtil.map(deps, function (type) {\n    return parseClassType(type).main;\n  }); // Hack dataset for convenience.\n\n  if (componentType !== 'dataset' && zrUtil.indexOf(deps, 'dataset') <= 0) {\n    deps.unshift('dataset');\n  }\n\n  return deps;\n}\n\nexport default ComponentModel;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nvar platform = ''; // Navigator not exists in node\n\nif (typeof navigator !== 'undefined') {\n  /* global navigator */\n  platform = navigator.platform || '';\n}\n\nvar decalColor = 'rgba(0, 0, 0, 0.2)';\nexport default {\n  darkMode: 'auto',\n  // backgroundColor: 'rgba(0,0,0,0)',\n  colorBy: 'series',\n  color: ['#5470c6', '#91cc75', '#fac858', '#ee6666', '#73c0de', '#3ba272', '#fc8452', '#9a60b4', '#ea7ccc'],\n  gradientColor: ['#f6efa6', '#d88273', '#bf444c'],\n  aria: {\n    decal: {\n      decals: [{\n        color: decalColor,\n        dashArrayX: [1, 0],\n        dashArrayY: [2, 5],\n        symbolSize: 1,\n        rotation: Math.PI / 6\n      }, {\n        color: decalColor,\n        symbol: 'circle',\n        dashArrayX: [[8, 8], [0, 8, 8, 0]],\n        dashArrayY: [6, 0],\n        symbolSize: 0.8\n      }, {\n        color: decalColor,\n        dashArrayX: [1, 0],\n        dashArrayY: [4, 3],\n        rotation: -Math.PI / 4\n      }, {\n        color: decalColor,\n        dashArrayX: [[6, 6], [0, 6, 6, 0]],\n        dashArrayY: [6, 0]\n      }, {\n        color: decalColor,\n        dashArrayX: [[1, 0], [1, 6]],\n        dashArrayY: [1, 0, 6, 0],\n        rotation: Math.PI / 4\n      }, {\n        color: decalColor,\n        symbol: 'triangle',\n        dashArrayX: [[9, 9], [0, 9, 9, 0]],\n        dashArrayY: [7, 2],\n        symbolSize: 0.75\n      }]\n    }\n  },\n  // If xAxis and yAxis declared, grid is created by default.\n  // grid: {},\n  textStyle: {\n    // color: '#000',\n    // decoration: 'none',\n    // PENDING\n    fontFamily: platform.match(/^Win/) ? 'Microsoft YaHei' : 'sans-serif',\n    // fontFamily: 'Arial, Verdana, sans-serif',\n    fontSize: 12,\n    fontStyle: 'normal',\n    fontWeight: 'normal'\n  },\n  // http://blogs.adobe.com/webplatform/2014/02/24/using-blend-modes-in-html-canvas/\n  // https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/globalCompositeOperation\n  // Default is source-over\n  blendMode: null,\n  stateAnimation: {\n    duration: 300,\n    easing: 'cubicOut'\n  },\n  animation: 'auto',\n  animationDuration: 1000,\n  animationDurationUpdate: 500,\n  animationEasing: 'cubicInOut',\n  animationEasingUpdate: 'cubicInOut',\n  animationThreshold: 2000,\n  // Configuration for progressive/incremental rendering\n  progressiveThreshold: 3000,\n  progressive: 400,\n  // Threshold of if use single hover layer to optimize.\n  // It is recommended that `hoverLayerThreshold` is equivalent to or less than\n  // `progressiveThreshold`, otherwise hover will cause restart of progressive,\n  // which is unexpected.\n  // see example <echarts/test/heatmap-large.html>.\n  hoverLayerThreshold: 3000,\n  // See: module:echarts/scale/Time\n  useUTC: false\n};","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { createHashMap } from 'zrender/lib/core/util.js';\n;\n;\n;\nexport var VISUAL_DIMENSIONS = createHashMap(['tooltip', 'label', 'itemName', 'itemId', 'itemGroupId', 'seriesName']);\nexport var SOURCE_FORMAT_ORIGINAL = 'original';\nexport var SOURCE_FORMAT_ARRAY_ROWS = 'arrayRows';\nexport var SOURCE_FORMAT_OBJECT_ROWS = 'objectRows';\nexport var SOURCE_FORMAT_KEYED_COLUMNS = 'keyedColumns';\nexport var SOURCE_FORMAT_TYPED_ARRAY = 'typedArray';\nexport var SOURCE_FORMAT_UNKNOWN = 'unknown';\nexport var SERIES_LAYOUT_BY_COLUMN = 'column';\nexport var SERIES_LAYOUT_BY_ROW = 'row';\n;\n;\n;\n;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { makeInner, getDataItemValue, queryReferringComponents, SINGLE_REFERRING } from '../../util/model.js';\nimport { createHashMap, each, isArray, isString, isObject, isTypedArray } from 'zrender/lib/core/util.js';\nimport { SOURCE_FORMAT_ORIGINAL, SOURCE_FORMAT_ARRAY_ROWS, SOURCE_FORMAT_OBJECT_ROWS, SERIES_LAYOUT_BY_ROW, SOURCE_FORMAT_KEYED_COLUMNS } from '../../util/types.js'; // The result of `guessOrdinal`.\n\nexport var BE_ORDINAL = {\n  Must: 1,\n  Might: 2,\n  Not: 3 // Other cases\n\n};\nvar innerGlobalModel = makeInner();\n/**\r\n * MUST be called before mergeOption of all series.\r\n */\n\nexport function resetSourceDefaulter(ecModel) {\n  // `datasetMap` is used to make default encode.\n  innerGlobalModel(ecModel).datasetMap = createHashMap();\n}\n/**\r\n * [The strategy of the arrengment of data dimensions for dataset]:\r\n * \"value way\": all axes are non-category axes. So series one by one take\r\n *     several (the number is coordSysDims.length) dimensions from dataset.\r\n *     The result of data arrengment of data dimensions like:\r\n *     | ser0_x | ser0_y | ser1_x | ser1_y | ser2_x | ser2_y |\r\n * \"category way\": at least one axis is category axis. So the the first data\r\n *     dimension is always mapped to the first category axis and shared by\r\n *     all of the series. The other data dimensions are taken by series like\r\n *     \"value way\" does.\r\n *     The result of data arrengment of data dimensions like:\r\n *     | ser_shared_x | ser0_y | ser1_y | ser2_y |\r\n *\r\n * @return encode Never be `null/undefined`.\r\n */\n\nexport function makeSeriesEncodeForAxisCoordSys(coordDimensions, seriesModel, source) {\n  var encode = {};\n  var datasetModel = querySeriesUpstreamDatasetModel(seriesModel); // Currently only make default when using dataset, util more reqirements occur.\n\n  if (!datasetModel || !coordDimensions) {\n    return encode;\n  }\n\n  var encodeItemName = [];\n  var encodeSeriesName = [];\n  var ecModel = seriesModel.ecModel;\n  var datasetMap = innerGlobalModel(ecModel).datasetMap;\n  var key = datasetModel.uid + '_' + source.seriesLayoutBy;\n  var baseCategoryDimIndex;\n  var categoryWayValueDimStart;\n  coordDimensions = coordDimensions.slice();\n  each(coordDimensions, function (coordDimInfoLoose, coordDimIdx) {\n    var coordDimInfo = isObject(coordDimInfoLoose) ? coordDimInfoLoose : coordDimensions[coordDimIdx] = {\n      name: coordDimInfoLoose\n    };\n\n    if (coordDimInfo.type === 'ordinal' && baseCategoryDimIndex == null) {\n      baseCategoryDimIndex = coordDimIdx;\n      categoryWayValueDimStart = getDataDimCountOnCoordDim(coordDimInfo);\n    }\n\n    encode[coordDimInfo.name] = [];\n  });\n  var datasetRecord = datasetMap.get(key) || datasetMap.set(key, {\n    categoryWayDim: categoryWayValueDimStart,\n    valueWayDim: 0\n  }); // TODO\n  // Auto detect first time axis and do arrangement.\n\n  each(coordDimensions, function (coordDimInfo, coordDimIdx) {\n    var coordDimName = coordDimInfo.name;\n    var count = getDataDimCountOnCoordDim(coordDimInfo); // In value way.\n\n    if (baseCategoryDimIndex == null) {\n      var start = datasetRecord.valueWayDim;\n      pushDim(encode[coordDimName], start, count);\n      pushDim(encodeSeriesName, start, count);\n      datasetRecord.valueWayDim += count; // ??? TODO give a better default series name rule?\n      // especially when encode x y specified.\n      // consider: when multiple series share one dimension\n      // category axis, series name should better use\n      // the other dimension name. On the other hand, use\n      // both dimensions name.\n    } // In category way, the first category axis.\n    else if (baseCategoryDimIndex === coordDimIdx) {\n        pushDim(encode[coordDimName], 0, count);\n        pushDim(encodeItemName, 0, count);\n      } // In category way, the other axis.\n      else {\n          var start = datasetRecord.categoryWayDim;\n          pushDim(encode[coordDimName], start, count);\n          pushDim(encodeSeriesName, start, count);\n          datasetRecord.categoryWayDim += count;\n        }\n  });\n\n  function pushDim(dimIdxArr, idxFrom, idxCount) {\n    for (var i = 0; i < idxCount; i++) {\n      dimIdxArr.push(idxFrom + i);\n    }\n  }\n\n  function getDataDimCountOnCoordDim(coordDimInfo) {\n    var dimsDef = coordDimInfo.dimsDef;\n    return dimsDef ? dimsDef.length : 1;\n  }\n\n  encodeItemName.length && (encode.itemName = encodeItemName);\n  encodeSeriesName.length && (encode.seriesName = encodeSeriesName);\n  return encode;\n}\n/**\r\n * Work for data like [{name: ..., value: ...}, ...].\r\n *\r\n * @return encode Never be `null/undefined`.\r\n */\n\nexport function makeSeriesEncodeForNameBased(seriesModel, source, dimCount) {\n  var encode = {};\n  var datasetModel = querySeriesUpstreamDatasetModel(seriesModel); // Currently only make default when using dataset, util more reqirements occur.\n\n  if (!datasetModel) {\n    return encode;\n  }\n\n  var sourceFormat = source.sourceFormat;\n  var dimensionsDefine = source.dimensionsDefine;\n  var potentialNameDimIndex;\n\n  if (sourceFormat === SOURCE_FORMAT_OBJECT_ROWS || sourceFormat === SOURCE_FORMAT_KEYED_COLUMNS) {\n    each(dimensionsDefine, function (dim, idx) {\n      if ((isObject(dim) ? dim.name : dim) === 'name') {\n        potentialNameDimIndex = idx;\n      }\n    });\n  }\n\n  var idxResult = function () {\n    var idxRes0 = {};\n    var idxRes1 = {};\n    var guessRecords = []; // 5 is an experience value.\n\n    for (var i = 0, len = Math.min(5, dimCount); i < len; i++) {\n      var guessResult = doGuessOrdinal(source.data, sourceFormat, source.seriesLayoutBy, dimensionsDefine, source.startIndex, i);\n      guessRecords.push(guessResult);\n      var isPureNumber = guessResult === BE_ORDINAL.Not; // [Strategy of idxRes0]: find the first BE_ORDINAL.Not as the value dim,\n      // and then find a name dim with the priority:\n      // \"BE_ORDINAL.Might|BE_ORDINAL.Must\" > \"other dim\" > \"the value dim itself\".\n\n      if (isPureNumber && idxRes0.v == null && i !== potentialNameDimIndex) {\n        idxRes0.v = i;\n      }\n\n      if (idxRes0.n == null || idxRes0.n === idxRes0.v || !isPureNumber && guessRecords[idxRes0.n] === BE_ORDINAL.Not) {\n        idxRes0.n = i;\n      }\n\n      if (fulfilled(idxRes0) && guessRecords[idxRes0.n] !== BE_ORDINAL.Not) {\n        return idxRes0;\n      } // [Strategy of idxRes1]: if idxRes0 not satisfied (that is, no BE_ORDINAL.Not),\n      // find the first BE_ORDINAL.Might as the value dim,\n      // and then find a name dim with the priority:\n      // \"other dim\" > \"the value dim itself\".\n      // That is for backward compat: number-like (e.g., `'3'`, `'55'`) can be\n      // treated as number.\n\n\n      if (!isPureNumber) {\n        if (guessResult === BE_ORDINAL.Might && idxRes1.v == null && i !== potentialNameDimIndex) {\n          idxRes1.v = i;\n        }\n\n        if (idxRes1.n == null || idxRes1.n === idxRes1.v) {\n          idxRes1.n = i;\n        }\n      }\n    }\n\n    function fulfilled(idxResult) {\n      return idxResult.v != null && idxResult.n != null;\n    }\n\n    return fulfilled(idxRes0) ? idxRes0 : fulfilled(idxRes1) ? idxRes1 : null;\n  }();\n\n  if (idxResult) {\n    encode.value = [idxResult.v]; // `potentialNameDimIndex` has highest priority.\n\n    var nameDimIndex = potentialNameDimIndex != null ? potentialNameDimIndex : idxResult.n; // By default, label uses itemName in charts.\n    // So we don't set encodeLabel here.\n\n    encode.itemName = [nameDimIndex];\n    encode.seriesName = [nameDimIndex];\n  }\n\n  return encode;\n}\n/**\r\n * @return If return null/undefined, indicate that should not use datasetModel.\r\n */\n\nexport function querySeriesUpstreamDatasetModel(seriesModel) {\n  // Caution: consider the scenario:\n  // A dataset is declared and a series is not expected to use the dataset,\n  // and at the beginning `setOption({series: { noData })` (just prepare other\n  // option but no data), then `setOption({series: {data: [...]}); In this case,\n  // the user should set an empty array to avoid that dataset is used by default.\n  var thisData = seriesModel.get('data', true);\n\n  if (!thisData) {\n    return queryReferringComponents(seriesModel.ecModel, 'dataset', {\n      index: seriesModel.get('datasetIndex', true),\n      id: seriesModel.get('datasetId', true)\n    }, SINGLE_REFERRING).models[0];\n  }\n}\n/**\r\n * @return Always return an array event empty.\r\n */\n\nexport function queryDatasetUpstreamDatasetModels(datasetModel) {\n  // Only these attributes declared, we by defualt reference to `datasetIndex: 0`.\n  // Otherwise, no reference.\n  if (!datasetModel.get('transform', true) && !datasetModel.get('fromTransformResult', true)) {\n    return [];\n  }\n\n  return queryReferringComponents(datasetModel.ecModel, 'dataset', {\n    index: datasetModel.get('fromDatasetIndex', true),\n    id: datasetModel.get('fromDatasetId', true)\n  }, SINGLE_REFERRING).models;\n}\n/**\r\n * The rule should not be complex, otherwise user might not\r\n * be able to known where the data is wrong.\r\n * The code is ugly, but how to make it neat?\r\n */\n\nexport function guessOrdinal(source, dimIndex) {\n  return doGuessOrdinal(source.data, source.sourceFormat, source.seriesLayoutBy, source.dimensionsDefine, source.startIndex, dimIndex);\n} // dimIndex may be overflow source data.\n// return {BE_ORDINAL}\n\nfunction doGuessOrdinal(data, sourceFormat, seriesLayoutBy, dimensionsDefine, startIndex, dimIndex) {\n  var result; // Experience value.\n\n  var maxLoop = 5;\n\n  if (isTypedArray(data)) {\n    return BE_ORDINAL.Not;\n  } // When sourceType is 'objectRows' or 'keyedColumns', dimensionsDefine\n  // always exists in source.\n\n\n  var dimName;\n  var dimType;\n\n  if (dimensionsDefine) {\n    var dimDefItem = dimensionsDefine[dimIndex];\n\n    if (isObject(dimDefItem)) {\n      dimName = dimDefItem.name;\n      dimType = dimDefItem.type;\n    } else if (isString(dimDefItem)) {\n      dimName = dimDefItem;\n    }\n  }\n\n  if (dimType != null) {\n    return dimType === 'ordinal' ? BE_ORDINAL.Must : BE_ORDINAL.Not;\n  }\n\n  if (sourceFormat === SOURCE_FORMAT_ARRAY_ROWS) {\n    var dataArrayRows = data;\n\n    if (seriesLayoutBy === SERIES_LAYOUT_BY_ROW) {\n      var sample = dataArrayRows[dimIndex];\n\n      for (var i = 0; i < (sample || []).length && i < maxLoop; i++) {\n        if ((result = detectValue(sample[startIndex + i])) != null) {\n          return result;\n        }\n      }\n    } else {\n      for (var i = 0; i < dataArrayRows.length && i < maxLoop; i++) {\n        var row = dataArrayRows[startIndex + i];\n\n        if (row && (result = detectValue(row[dimIndex])) != null) {\n          return result;\n        }\n      }\n    }\n  } else if (sourceFormat === SOURCE_FORMAT_OBJECT_ROWS) {\n    var dataObjectRows = data;\n\n    if (!dimName) {\n      return BE_ORDINAL.Not;\n    }\n\n    for (var i = 0; i < dataObjectRows.length && i < maxLoop; i++) {\n      var item = dataObjectRows[i];\n\n      if (item && (result = detectValue(item[dimName])) != null) {\n        return result;\n      }\n    }\n  } else if (sourceFormat === SOURCE_FORMAT_KEYED_COLUMNS) {\n    var dataKeyedColumns = data;\n\n    if (!dimName) {\n      return BE_ORDINAL.Not;\n    }\n\n    var sample = dataKeyedColumns[dimName];\n\n    if (!sample || isTypedArray(sample)) {\n      return BE_ORDINAL.Not;\n    }\n\n    for (var i = 0; i < sample.length && i < maxLoop; i++) {\n      if ((result = detectValue(sample[i])) != null) {\n        return result;\n      }\n    }\n  } else if (sourceFormat === SOURCE_FORMAT_ORIGINAL) {\n    var dataOriginal = data;\n\n    for (var i = 0; i < dataOriginal.length && i < maxLoop; i++) {\n      var item = dataOriginal[i];\n      var val = getDataItemValue(item);\n\n      if (!isArray(val)) {\n        return BE_ORDINAL.Not;\n      }\n\n      if ((result = detectValue(val[dimIndex])) != null) {\n        return result;\n      }\n    }\n  }\n\n  function detectValue(val) {\n    var beStr = isString(val); // Consider usage convenience, '1', '2' will be treated as \"number\".\n    // `isFinit('')` get `true`.\n\n    if (val != null && isFinite(val) && val !== '') {\n      return beStr ? BE_ORDINAL.Might : BE_ORDINAL.Not;\n    } else if (beStr && val !== '-') {\n      return BE_ORDINAL.Must;\n    }\n  }\n\n  return BE_ORDINAL.Not;\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { createHashMap, assert } from 'zrender/lib/core/util.js';\nimport { isComponentIdInternal } from '../util/model.js';\nvar internalOptionCreatorMap = createHashMap();\nexport function registerInternalOptionCreator(mainType, creator) {\n  assert(internalOptionCreatorMap.get(mainType) == null && creator);\n  internalOptionCreatorMap.set(mainType, creator);\n}\nexport function concatInternalOptions(ecModel, mainType, newCmptOptionList) {\n  var internalOptionCreator = internalOptionCreatorMap.get(mainType);\n\n  if (!internalOptionCreator) {\n    return newCmptOptionList;\n  }\n\n  var internalOptions = internalOptionCreator(ecModel);\n\n  if (!internalOptions) {\n    return newCmptOptionList;\n  }\n\n  if (process.env.NODE_ENV !== 'production') {\n    for (var i = 0; i < internalOptions.length; i++) {\n      assert(isComponentIdInternal(internalOptions[i]));\n    }\n  }\n\n  return newCmptOptionList.concat(internalOptions);\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { __extends } from \"tslib\";\n/**\r\n * Caution: If the mechanism should be changed some day, these cases\r\n * should be considered:\r\n *\r\n * (1) In `merge option` mode, if using the same option to call `setOption`\r\n * many times, the result should be the same (try our best to ensure that).\r\n * (2) In `merge option` mode, if a component has no id/name specified, it\r\n * will be merged by index, and the result sequence of the components is\r\n * consistent to the original sequence.\r\n * (3) In `replaceMerge` mode, keep the result sequence of the components is\r\n * consistent to the original sequence, even though there might result in \"hole\".\r\n * (4) `reset` feature (in toolbox). Find detailed info in comments about\r\n * `mergeOption` in module:echarts/model/OptionManager.\r\n */\n\nimport { each, filter, isArray, isObject, isString, createHashMap, assert, clone, merge, extend, mixin, isFunction } from 'zrender/lib/core/util.js';\nimport * as modelUtil from '../util/model.js';\nimport Model from './Model.js';\nimport ComponentModel from './Component.js';\nimport globalDefault from './globalDefault.js';\nimport { resetSourceDefaulter } from '../data/helper/sourceHelper.js';\nimport { concatInternalOptions } from './internalComponentCreator.js';\nimport { PaletteMixin } from './mixin/palette.js';\nimport { error, warn } from '../util/log.js'; // -----------------------\n// Internal method names:\n// -----------------------\n\nvar reCreateSeriesIndices;\nvar assertSeriesInitialized;\nvar initBase;\nvar OPTION_INNER_KEY = '\\0_ec_inner';\nvar OPTION_INNER_VALUE = 1;\nvar BUITIN_COMPONENTS_MAP = {\n  grid: 'GridComponent',\n  polar: 'PolarComponent',\n  geo: 'GeoComponent',\n  singleAxis: 'SingleAxisComponent',\n  parallel: 'ParallelComponent',\n  calendar: 'CalendarComponent',\n  graphic: 'GraphicComponent',\n  toolbox: 'ToolboxComponent',\n  tooltip: 'TooltipComponent',\n  axisPointer: 'AxisPointerComponent',\n  brush: 'BrushComponent',\n  title: 'TitleComponent',\n  timeline: 'TimelineComponent',\n  markPoint: 'MarkPointComponent',\n  markLine: 'MarkLineComponent',\n  markArea: 'MarkAreaComponent',\n  legend: 'LegendComponent',\n  dataZoom: 'DataZoomComponent',\n  visualMap: 'VisualMapComponent',\n  // aria: 'AriaComponent',\n  // dataset: 'DatasetComponent',\n  // Dependencies\n  xAxis: 'GridComponent',\n  yAxis: 'GridComponent',\n  angleAxis: 'PolarComponent',\n  radiusAxis: 'PolarComponent'\n};\nvar BUILTIN_CHARTS_MAP = {\n  line: 'LineChart',\n  bar: 'BarChart',\n  pie: 'PieChart',\n  scatter: 'ScatterChart',\n  radar: 'RadarChart',\n  map: 'MapChart',\n  tree: 'TreeChart',\n  treemap: 'TreemapChart',\n  graph: 'GraphChart',\n  gauge: 'GaugeChart',\n  funnel: 'FunnelChart',\n  parallel: 'ParallelChart',\n  sankey: 'SankeyChart',\n  boxplot: 'BoxplotChart',\n  candlestick: 'CandlestickChart',\n  effectScatter: 'EffectScatterChart',\n  lines: 'LinesChart',\n  heatmap: 'HeatmapChart',\n  pictorialBar: 'PictorialBarChart',\n  themeRiver: 'ThemeRiverChart',\n  sunburst: 'SunburstChart',\n  custom: 'CustomChart'\n};\nvar componetsMissingLogPrinted = {};\n\nfunction checkMissingComponents(option) {\n  each(option, function (componentOption, mainType) {\n    if (!ComponentModel.hasClass(mainType)) {\n      var componentImportName = BUITIN_COMPONENTS_MAP[mainType];\n\n      if (componentImportName && !componetsMissingLogPrinted[componentImportName]) {\n        error(\"Component \" + mainType + \" is used but not imported.\\nimport { \" + componentImportName + \" } from 'echarts/components';\\necharts.use([\" + componentImportName + \"]);\");\n        componetsMissingLogPrinted[componentImportName] = true;\n      }\n    }\n  });\n}\n\nvar GlobalModel =\n/** @class */\nfunction (_super) {\n  __extends(GlobalModel, _super);\n\n  function GlobalModel() {\n    return _super !== null && _super.apply(this, arguments) || this;\n  }\n\n  GlobalModel.prototype.init = function (option, parentModel, ecModel, theme, locale, optionManager) {\n    theme = theme || {};\n    this.option = null; // Mark as not initialized.\n\n    this._theme = new Model(theme);\n    this._locale = new Model(locale);\n    this._optionManager = optionManager;\n  };\n\n  GlobalModel.prototype.setOption = function (option, opts, optionPreprocessorFuncs) {\n    if (process.env.NODE_ENV !== 'production') {\n      assert(option != null, 'option is null/undefined');\n      assert(option[OPTION_INNER_KEY] !== OPTION_INNER_VALUE, 'please use chart.getOption()');\n    }\n\n    var innerOpt = normalizeSetOptionInput(opts);\n\n    this._optionManager.setOption(option, optionPreprocessorFuncs, innerOpt);\n\n    this._resetOption(null, innerOpt);\n  };\n  /**\r\n   * @param type null/undefined: reset all.\r\n   *        'recreate': force recreate all.\r\n   *        'timeline': only reset timeline option\r\n   *        'media': only reset media query option\r\n   * @return Whether option changed.\r\n   */\n\n\n  GlobalModel.prototype.resetOption = function (type, opt) {\n    return this._resetOption(type, normalizeSetOptionInput(opt));\n  };\n\n  GlobalModel.prototype._resetOption = function (type, opt) {\n    var optionChanged = false;\n    var optionManager = this._optionManager;\n\n    if (!type || type === 'recreate') {\n      var baseOption = optionManager.mountOption(type === 'recreate');\n\n      if (process.env.NODE_ENV !== 'production') {\n        checkMissingComponents(baseOption);\n      }\n\n      if (!this.option || type === 'recreate') {\n        initBase(this, baseOption);\n      } else {\n        this.restoreData();\n\n        this._mergeOption(baseOption, opt);\n      }\n\n      optionChanged = true;\n    }\n\n    if (type === 'timeline' || type === 'media') {\n      this.restoreData();\n    } // By design, if `setOption(option2)` at the second time, and `option2` is a `ECUnitOption`,\n    // it should better not have the same props with `MediaUnit['option']`.\n    // Because either `option2` or `MediaUnit['option']` will be always merged to \"current option\"\n    // rather than original \"baseOption\". If they both override a prop, the result might be\n    // unexpected when media state changed after `setOption` called.\n    // If we really need to modify a props in each `MediaUnit['option']`, use the full version\n    // (`{baseOption, media}`) in `setOption`.\n    // For `timeline`, the case is the same.\n\n\n    if (!type || type === 'recreate' || type === 'timeline') {\n      var timelineOption = optionManager.getTimelineOption(this);\n\n      if (timelineOption) {\n        optionChanged = true;\n\n        this._mergeOption(timelineOption, opt);\n      }\n    }\n\n    if (!type || type === 'recreate' || type === 'media') {\n      var mediaOptions = optionManager.getMediaOption(this);\n\n      if (mediaOptions.length) {\n        each(mediaOptions, function (mediaOption) {\n          optionChanged = true;\n\n          this._mergeOption(mediaOption, opt);\n        }, this);\n      }\n    }\n\n    return optionChanged;\n  };\n\n  GlobalModel.prototype.mergeOption = function (option) {\n    this._mergeOption(option, null);\n  };\n\n  GlobalModel.prototype._mergeOption = function (newOption, opt) {\n    var option = this.option;\n    var componentsMap = this._componentsMap;\n    var componentsCount = this._componentsCount;\n    var newCmptTypes = [];\n    var newCmptTypeMap = createHashMap();\n    var replaceMergeMainTypeMap = opt && opt.replaceMergeMainTypeMap;\n    resetSourceDefaulter(this); // If no component class, merge directly.\n    // For example: color, animaiton options, etc.\n\n    each(newOption, function (componentOption, mainType) {\n      if (componentOption == null) {\n        return;\n      }\n\n      if (!ComponentModel.hasClass(mainType)) {\n        // globalSettingTask.dirty();\n        option[mainType] = option[mainType] == null ? clone(componentOption) : merge(option[mainType], componentOption, true);\n      } else if (mainType) {\n        newCmptTypes.push(mainType);\n        newCmptTypeMap.set(mainType, true);\n      }\n    });\n\n    if (replaceMergeMainTypeMap) {\n      // If there is a mainType `xxx` in `replaceMerge` but not declared in option,\n      // we trade it as it is declared in option as `{xxx: []}`. Because:\n      // (1) for normal merge, `{xxx: null/undefined}` are the same meaning as `{xxx: []}`.\n      // (2) some preprocessor may convert some of `{xxx: null/undefined}` to `{xxx: []}`.\n      replaceMergeMainTypeMap.each(function (val, mainTypeInReplaceMerge) {\n        if (ComponentModel.hasClass(mainTypeInReplaceMerge) && !newCmptTypeMap.get(mainTypeInReplaceMerge)) {\n          newCmptTypes.push(mainTypeInReplaceMerge);\n          newCmptTypeMap.set(mainTypeInReplaceMerge, true);\n        }\n      });\n    }\n\n    ComponentModel.topologicalTravel(newCmptTypes, ComponentModel.getAllClassMainTypes(), visitComponent, this);\n\n    function visitComponent(mainType) {\n      var newCmptOptionList = concatInternalOptions(this, mainType, modelUtil.normalizeToArray(newOption[mainType]));\n      var oldCmptList = componentsMap.get(mainType);\n      var mergeMode = // `!oldCmptList` means init. See the comment in `mappingToExists`\n      !oldCmptList ? 'replaceAll' : replaceMergeMainTypeMap && replaceMergeMainTypeMap.get(mainType) ? 'replaceMerge' : 'normalMerge';\n      var mappingResult = modelUtil.mappingToExists(oldCmptList, newCmptOptionList, mergeMode); // Set mainType and complete subType.\n\n      modelUtil.setComponentTypeToKeyInfo(mappingResult, mainType, ComponentModel); // Empty it before the travel, in order to prevent `this._componentsMap`\n      // from being used in the `init`/`mergeOption`/`optionUpdated` of some\n      // components, which is probably incorrect logic.\n\n      option[mainType] = null;\n      componentsMap.set(mainType, null);\n      componentsCount.set(mainType, 0);\n      var optionsByMainType = [];\n      var cmptsByMainType = [];\n      var cmptsCountByMainType = 0;\n      var tooltipExists;\n      var tooltipWarningLogged;\n      each(mappingResult, function (resultItem, index) {\n        var componentModel = resultItem.existing;\n        var newCmptOption = resultItem.newOption;\n\n        if (!newCmptOption) {\n          if (componentModel) {\n            // Consider where is no new option and should be merged using {},\n            // see removeEdgeAndAdd in topologicalTravel and\n            // ComponentModel.getAllClassMainTypes.\n            componentModel.mergeOption({}, this);\n            componentModel.optionUpdated({}, false);\n          } // If no both `resultItem.exist` and `resultItem.option`,\n          // either it is in `replaceMerge` and not matched by any id,\n          // or it has been removed in previous `replaceMerge` and left a \"hole\" in this component index.\n\n        } else {\n          var isSeriesType = mainType === 'series';\n          var ComponentModelClass = ComponentModel.getClass(mainType, resultItem.keyInfo.subType, !isSeriesType // Give a more detailed warn later if series don't exists\n          );\n\n          if (!ComponentModelClass) {\n            if (process.env.NODE_ENV !== 'production') {\n              var subType = resultItem.keyInfo.subType;\n              var seriesImportName = BUILTIN_CHARTS_MAP[subType];\n\n              if (!componetsMissingLogPrinted[subType]) {\n                componetsMissingLogPrinted[subType] = true;\n\n                if (seriesImportName) {\n                  error(\"Series \" + subType + \" is used but not imported.\\nimport { \" + seriesImportName + \" } from 'echarts/charts';\\necharts.use([\" + seriesImportName + \"]);\");\n                } else {\n                  error(\"Unknown series \" + subType);\n                }\n              }\n            }\n\n            return;\n          } // TODO Before multiple tooltips get supported, we do this check to avoid unexpected exception.\n\n\n          if (mainType === 'tooltip') {\n            if (tooltipExists) {\n              if (process.env.NODE_ENV !== 'production') {\n                if (!tooltipWarningLogged) {\n                  warn('Currently only one tooltip component is allowed.');\n                  tooltipWarningLogged = true;\n                }\n              }\n\n              return;\n            }\n\n            tooltipExists = true;\n          }\n\n          if (componentModel && componentModel.constructor === ComponentModelClass) {\n            componentModel.name = resultItem.keyInfo.name; // componentModel.settingTask && componentModel.settingTask.dirty();\n\n            componentModel.mergeOption(newCmptOption, this);\n            componentModel.optionUpdated(newCmptOption, false);\n          } else {\n            // PENDING Global as parent ?\n            var extraOpt = extend({\n              componentIndex: index\n            }, resultItem.keyInfo);\n            componentModel = new ComponentModelClass(newCmptOption, this, this, extraOpt); // Assign `keyInfo`\n\n            extend(componentModel, extraOpt);\n\n            if (resultItem.brandNew) {\n              componentModel.__requireNewView = true;\n            }\n\n            componentModel.init(newCmptOption, this, this); // Call optionUpdated after init.\n            // newCmptOption has been used as componentModel.option\n            // and may be merged with theme and default, so pass null\n            // to avoid confusion.\n\n            componentModel.optionUpdated(null, true);\n          }\n        }\n\n        if (componentModel) {\n          optionsByMainType.push(componentModel.option);\n          cmptsByMainType.push(componentModel);\n          cmptsCountByMainType++;\n        } else {\n          // Always do assign to avoid elided item in array.\n          optionsByMainType.push(void 0);\n          cmptsByMainType.push(void 0);\n        }\n      }, this);\n      option[mainType] = optionsByMainType;\n      componentsMap.set(mainType, cmptsByMainType);\n      componentsCount.set(mainType, cmptsCountByMainType); // Backup series for filtering.\n\n      if (mainType === 'series') {\n        reCreateSeriesIndices(this);\n      }\n    } // If no series declared, ensure `_seriesIndices` initialized.\n\n\n    if (!this._seriesIndices) {\n      reCreateSeriesIndices(this);\n    }\n  };\n  /**\r\n   * Get option for output (cloned option and inner info removed)\r\n   */\n\n\n  GlobalModel.prototype.getOption = function () {\n    var option = clone(this.option);\n    each(option, function (optInMainType, mainType) {\n      if (ComponentModel.hasClass(mainType)) {\n        var opts = modelUtil.normalizeToArray(optInMainType); // Inner cmpts need to be removed.\n        // Inner cmpts might not be at last since ec5.0, but still\n        // compatible for users: if inner cmpt at last, splice the returned array.\n\n        var realLen = opts.length;\n        var metNonInner = false;\n\n        for (var i = realLen - 1; i >= 0; i--) {\n          // Remove options with inner id.\n          if (opts[i] && !modelUtil.isComponentIdInternal(opts[i])) {\n            metNonInner = true;\n          } else {\n            opts[i] = null;\n            !metNonInner && realLen--;\n          }\n        }\n\n        opts.length = realLen;\n        option[mainType] = opts;\n      }\n    });\n    delete option[OPTION_INNER_KEY];\n    return option;\n  };\n\n  GlobalModel.prototype.getTheme = function () {\n    return this._theme;\n  };\n\n  GlobalModel.prototype.getLocaleModel = function () {\n    return this._locale;\n  };\n\n  GlobalModel.prototype.setUpdatePayload = function (payload) {\n    this._payload = payload;\n  };\n\n  GlobalModel.prototype.getUpdatePayload = function () {\n    return this._payload;\n  };\n  /**\r\n   * @param idx If not specified, return the first one.\r\n   */\n\n\n  GlobalModel.prototype.getComponent = function (mainType, idx) {\n    var list = this._componentsMap.get(mainType);\n\n    if (list) {\n      var cmpt = list[idx || 0];\n\n      if (cmpt) {\n        return cmpt;\n      } else if (idx == null) {\n        for (var i = 0; i < list.length; i++) {\n          if (list[i]) {\n            return list[i];\n          }\n        }\n      }\n    }\n  };\n  /**\r\n   * @return Never be null/undefined.\r\n   */\n\n\n  GlobalModel.prototype.queryComponents = function (condition) {\n    var mainType = condition.mainType;\n\n    if (!mainType) {\n      return [];\n    }\n\n    var index = condition.index;\n    var id = condition.id;\n    var name = condition.name;\n\n    var cmpts = this._componentsMap.get(mainType);\n\n    if (!cmpts || !cmpts.length) {\n      return [];\n    }\n\n    var result;\n\n    if (index != null) {\n      result = [];\n      each(modelUtil.normalizeToArray(index), function (idx) {\n        cmpts[idx] && result.push(cmpts[idx]);\n      });\n    } else if (id != null) {\n      result = queryByIdOrName('id', id, cmpts);\n    } else if (name != null) {\n      result = queryByIdOrName('name', name, cmpts);\n    } else {\n      // Return all non-empty components in that mainType\n      result = filter(cmpts, function (cmpt) {\n        return !!cmpt;\n      });\n    }\n\n    return filterBySubType(result, condition);\n  };\n  /**\r\n   * The interface is different from queryComponents,\r\n   * which is convenient for inner usage.\r\n   *\r\n   * @usage\r\n   * let result = findComponents(\r\n   *     {mainType: 'dataZoom', query: {dataZoomId: 'abc'}}\r\n   * );\r\n   * let result = findComponents(\r\n   *     {mainType: 'series', subType: 'pie', query: {seriesName: 'uio'}}\r\n   * );\r\n   * let result = findComponents(\r\n   *     {mainType: 'series',\r\n   *     filter: function (model, index) {...}}\r\n   * );\r\n   * // result like [component0, componnet1, ...]\r\n   */\n\n\n  GlobalModel.prototype.findComponents = function (condition) {\n    var query = condition.query;\n    var mainType = condition.mainType;\n    var queryCond = getQueryCond(query);\n    var result = queryCond ? this.queryComponents(queryCond) // Retrieve all non-empty components.\n    : filter(this._componentsMap.get(mainType), function (cmpt) {\n      return !!cmpt;\n    });\n    return doFilter(filterBySubType(result, condition));\n\n    function getQueryCond(q) {\n      var indexAttr = mainType + 'Index';\n      var idAttr = mainType + 'Id';\n      var nameAttr = mainType + 'Name';\n      return q && (q[indexAttr] != null || q[idAttr] != null || q[nameAttr] != null) ? {\n        mainType: mainType,\n        // subType will be filtered finally.\n        index: q[indexAttr],\n        id: q[idAttr],\n        name: q[nameAttr]\n      } : null;\n    }\n\n    function doFilter(res) {\n      return condition.filter ? filter(res, condition.filter) : res;\n    }\n  };\n\n  GlobalModel.prototype.eachComponent = function (mainType, cb, context) {\n    var componentsMap = this._componentsMap;\n\n    if (isFunction(mainType)) {\n      var ctxForAll_1 = cb;\n      var cbForAll_1 = mainType;\n      componentsMap.each(function (cmpts, componentType) {\n        for (var i = 0; cmpts && i < cmpts.length; i++) {\n          var cmpt = cmpts[i];\n          cmpt && cbForAll_1.call(ctxForAll_1, componentType, cmpt, cmpt.componentIndex);\n        }\n      });\n    } else {\n      var cmpts = isString(mainType) ? componentsMap.get(mainType) : isObject(mainType) ? this.findComponents(mainType) : null;\n\n      for (var i = 0; cmpts && i < cmpts.length; i++) {\n        var cmpt = cmpts[i];\n        cmpt && cb.call(context, cmpt, cmpt.componentIndex);\n      }\n    }\n  };\n  /**\r\n   * Get series list before filtered by name.\r\n   */\n\n\n  GlobalModel.prototype.getSeriesByName = function (name) {\n    var nameStr = modelUtil.convertOptionIdName(name, null);\n    return filter(this._componentsMap.get('series'), function (oneSeries) {\n      return !!oneSeries && nameStr != null && oneSeries.name === nameStr;\n    });\n  };\n  /**\r\n   * Get series list before filtered by index.\r\n   */\n\n\n  GlobalModel.prototype.getSeriesByIndex = function (seriesIndex) {\n    return this._componentsMap.get('series')[seriesIndex];\n  };\n  /**\r\n   * Get series list before filtered by type.\r\n   * FIXME: rename to getRawSeriesByType?\r\n   */\n\n\n  GlobalModel.prototype.getSeriesByType = function (subType) {\n    return filter(this._componentsMap.get('series'), function (oneSeries) {\n      return !!oneSeries && oneSeries.subType === subType;\n    });\n  };\n  /**\r\n   * Get all series before filtered.\r\n   */\n\n\n  GlobalModel.prototype.getSeries = function () {\n    return filter(this._componentsMap.get('series'), function (oneSeries) {\n      return !!oneSeries;\n    });\n  };\n  /**\r\n   * Count series before filtered.\r\n   */\n\n\n  GlobalModel.prototype.getSeriesCount = function () {\n    return this._componentsCount.get('series');\n  };\n  /**\r\n   * After filtering, series may be different\r\n   * from raw series.\r\n   */\n\n\n  GlobalModel.prototype.eachSeries = function (cb, context) {\n    assertSeriesInitialized(this);\n    each(this._seriesIndices, function (rawSeriesIndex) {\n      var series = this._componentsMap.get('series')[rawSeriesIndex];\n\n      cb.call(context, series, rawSeriesIndex);\n    }, this);\n  };\n  /**\r\n   * Iterate raw series before filtered.\r\n   *\r\n   * @param {Function} cb\r\n   * @param {*} context\r\n   */\n\n\n  GlobalModel.prototype.eachRawSeries = function (cb, context) {\n    each(this._componentsMap.get('series'), function (series) {\n      series && cb.call(context, series, series.componentIndex);\n    });\n  };\n  /**\r\n   * After filtering, series may be different.\r\n   * from raw series.\r\n   */\n\n\n  GlobalModel.prototype.eachSeriesByType = function (subType, cb, context) {\n    assertSeriesInitialized(this);\n    each(this._seriesIndices, function (rawSeriesIndex) {\n      var series = this._componentsMap.get('series')[rawSeriesIndex];\n\n      if (series.subType === subType) {\n        cb.call(context, series, rawSeriesIndex);\n      }\n    }, this);\n  };\n  /**\r\n   * Iterate raw series before filtered of given type.\r\n   */\n\n\n  GlobalModel.prototype.eachRawSeriesByType = function (subType, cb, context) {\n    return each(this.getSeriesByType(subType), cb, context);\n  };\n\n  GlobalModel.prototype.isSeriesFiltered = function (seriesModel) {\n    assertSeriesInitialized(this);\n    return this._seriesIndicesMap.get(seriesModel.componentIndex) == null;\n  };\n\n  GlobalModel.prototype.getCurrentSeriesIndices = function () {\n    return (this._seriesIndices || []).slice();\n  };\n\n  GlobalModel.prototype.filterSeries = function (cb, context) {\n    assertSeriesInitialized(this);\n    var newSeriesIndices = [];\n    each(this._seriesIndices, function (seriesRawIdx) {\n      var series = this._componentsMap.get('series')[seriesRawIdx];\n\n      cb.call(context, series, seriesRawIdx) && newSeriesIndices.push(seriesRawIdx);\n    }, this);\n    this._seriesIndices = newSeriesIndices;\n    this._seriesIndicesMap = createHashMap(newSeriesIndices);\n  };\n\n  GlobalModel.prototype.restoreData = function (payload) {\n    reCreateSeriesIndices(this);\n    var componentsMap = this._componentsMap;\n    var componentTypes = [];\n    componentsMap.each(function (components, componentType) {\n      if (ComponentModel.hasClass(componentType)) {\n        componentTypes.push(componentType);\n      }\n    });\n    ComponentModel.topologicalTravel(componentTypes, ComponentModel.getAllClassMainTypes(), function (componentType) {\n      each(componentsMap.get(componentType), function (component) {\n        if (component && (componentType !== 'series' || !isNotTargetSeries(component, payload))) {\n          component.restoreData();\n        }\n      });\n    });\n  };\n\n  GlobalModel.internalField = function () {\n    reCreateSeriesIndices = function (ecModel) {\n      var seriesIndices = ecModel._seriesIndices = [];\n      each(ecModel._componentsMap.get('series'), function (series) {\n        // series may have been removed by `replaceMerge`.\n        series && seriesIndices.push(series.componentIndex);\n      });\n      ecModel._seriesIndicesMap = createHashMap(seriesIndices);\n    };\n\n    assertSeriesInitialized = function (ecModel) {\n      // Components that use _seriesIndices should depends on series component,\n      // which make sure that their initialization is after series.\n      if (process.env.NODE_ENV !== 'production') {\n        if (!ecModel._seriesIndices) {\n          throw new Error('Option should contains series.');\n        }\n      }\n    };\n\n    initBase = function (ecModel, baseOption) {\n      // Using OPTION_INNER_KEY to mark that this option cannot be used outside,\n      // i.e. `chart.setOption(chart.getModel().option);` is forbidden.\n      ecModel.option = {};\n      ecModel.option[OPTION_INNER_KEY] = OPTION_INNER_VALUE; // Init with series: [], in case of calling findSeries method\n      // before series initialized.\n\n      ecModel._componentsMap = createHashMap({\n        series: []\n      });\n      ecModel._componentsCount = createHashMap(); // If user spefied `option.aria`, aria will be enable. This detection should be\n      // performed before theme and globalDefault merge.\n\n      var airaOption = baseOption.aria;\n\n      if (isObject(airaOption) && airaOption.enabled == null) {\n        airaOption.enabled = true;\n      }\n\n      mergeTheme(baseOption, ecModel._theme.option); // TODO Needs clone when merging to the unexisted property\n\n      merge(baseOption, globalDefault, false);\n\n      ecModel._mergeOption(baseOption, null);\n    };\n  }();\n\n  return GlobalModel;\n}(Model);\n\nfunction isNotTargetSeries(seriesModel, payload) {\n  if (payload) {\n    var index = payload.seriesIndex;\n    var id = payload.seriesId;\n    var name_1 = payload.seriesName;\n    return index != null && seriesModel.componentIndex !== index || id != null && seriesModel.id !== id || name_1 != null && seriesModel.name !== name_1;\n  }\n}\n\nfunction mergeTheme(option, theme) {\n  // PENDING\n  // NOT use `colorLayer` in theme if option has `color`\n  var notMergeColorLayer = option.color && !option.colorLayer;\n  each(theme, function (themeItem, name) {\n    if (name === 'colorLayer' && notMergeColorLayer) {\n      return;\n    } // If it is component model mainType, the model handles that merge later.\n    // otherwise, merge them here.\n\n\n    if (!ComponentModel.hasClass(name)) {\n      if (typeof themeItem === 'object') {\n        option[name] = !option[name] ? clone(themeItem) : merge(option[name], themeItem, false);\n      } else {\n        if (option[name] == null) {\n          option[name] = themeItem;\n        }\n      }\n    }\n  });\n}\n\nfunction queryByIdOrName(attr, idOrName, cmpts) {\n  // Here is a break from echarts4: string and number are\n  // treated as equal.\n  if (isArray(idOrName)) {\n    var keyMap_1 = createHashMap();\n    each(idOrName, function (idOrNameItem) {\n      if (idOrNameItem != null) {\n        var idName = modelUtil.convertOptionIdName(idOrNameItem, null);\n        idName != null && keyMap_1.set(idOrNameItem, true);\n      }\n    });\n    return filter(cmpts, function (cmpt) {\n      return cmpt && keyMap_1.get(cmpt[attr]);\n    });\n  } else {\n    var idName_1 = modelUtil.convertOptionIdName(idOrName, null);\n    return filter(cmpts, function (cmpt) {\n      return cmpt && idName_1 != null && cmpt[attr] === idName_1;\n    });\n  }\n}\n\nfunction filterBySubType(components, condition) {\n  // Using hasOwnProperty for restrict. Consider\n  // subType is undefined in user payload.\n  return condition.hasOwnProperty('subType') ? filter(components, function (cmpt) {\n    return cmpt && cmpt.subType === condition.subType;\n  }) : components;\n}\n\nfunction normalizeSetOptionInput(opts) {\n  var replaceMergeMainTypeMap = createHashMap();\n  opts && each(modelUtil.normalizeToArray(opts.replaceMerge), function (mainType) {\n    if (process.env.NODE_ENV !== 'production') {\n      assert(ComponentModel.hasClass(mainType), '\"' + mainType + '\" is not valid component main type in \"replaceMerge\"');\n    }\n\n    replaceMergeMainTypeMap.set(mainType, true);\n  });\n  return {\n    replaceMergeMainTypeMap: replaceMergeMainTypeMap\n  };\n}\n\nmixin(GlobalModel, PaletteMixin);\nexport default GlobalModel;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { makeInner, normalizeToArray } from '../../util/model.js';\nvar innerColor = makeInner();\nvar innerDecal = makeInner();\n\nvar PaletteMixin =\n/** @class */\nfunction () {\n  function PaletteMixin() {}\n\n  PaletteMixin.prototype.getColorFromPalette = function (name, scope, requestNum) {\n    var defaultPalette = normalizeToArray(this.get('color', true));\n    var layeredPalette = this.get('colorLayer', true);\n    return getFromPalette(this, innerColor, defaultPalette, layeredPalette, name, scope, requestNum);\n  };\n\n  PaletteMixin.prototype.clearColorPalette = function () {\n    clearPalette(this, innerColor);\n  };\n\n  return PaletteMixin;\n}();\n\nexport function getDecalFromPalette(ecModel, name, scope, requestNum) {\n  var defaultDecals = normalizeToArray(ecModel.get(['aria', 'decal', 'decals']));\n  return getFromPalette(ecModel, innerDecal, defaultDecals, null, name, scope, requestNum);\n}\n\nfunction getNearestPalette(palettes, requestColorNum) {\n  var paletteNum = palettes.length; // TODO palettes must be in order\n\n  for (var i = 0; i < paletteNum; i++) {\n    if (palettes[i].length > requestColorNum) {\n      return palettes[i];\n    }\n  }\n\n  return palettes[paletteNum - 1];\n}\n/**\r\n * @param name MUST NOT be null/undefined. Otherwise call this function\r\n *             twise with the same parameters will get different result.\r\n * @param scope default this.\r\n * @return Can be null/undefined\r\n */\n\n\nfunction getFromPalette(that, inner, defaultPalette, layeredPalette, name, scope, requestNum) {\n  scope = scope || that;\n  var scopeFields = inner(scope);\n  var paletteIdx = scopeFields.paletteIdx || 0;\n  var paletteNameMap = scopeFields.paletteNameMap = scopeFields.paletteNameMap || {}; // Use `hasOwnProperty` to avoid conflict with Object.prototype.\n\n  if (paletteNameMap.hasOwnProperty(name)) {\n    return paletteNameMap[name];\n  }\n\n  var palette = requestNum == null || !layeredPalette ? defaultPalette : getNearestPalette(layeredPalette, requestNum); // In case can't find in layered color palette.\n\n  palette = palette || defaultPalette;\n\n  if (!palette || !palette.length) {\n    return;\n  }\n\n  var pickedPaletteItem = palette[paletteIdx];\n\n  if (name) {\n    paletteNameMap[name] = pickedPaletteItem;\n  }\n\n  scopeFields.paletteIdx = (paletteIdx + 1) % palette.length;\n  return pickedPaletteItem;\n}\n\nfunction clearPalette(that, inner) {\n  inner(that).paletteIdx = 0;\n  inner(that).paletteNameMap = {};\n}\n\nexport { PaletteMixin };","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport * as zrUtil from 'zrender/lib/core/util.js';\nvar availableMethods = ['getDom', 'getZr', 'getWidth', 'getHeight', 'getDevicePixelRatio', 'dispatchAction', 'isSSR', 'isDisposed', 'on', 'off', 'getDataURL', 'getConnectedDataURL', // 'getModel',\n'getOption', // 'getViewOfComponentModel',\n// 'getViewOfSeriesModel',\n'getId', 'updateLabelLayout'];\n\nvar ExtensionAPI =\n/** @class */\nfunction () {\n  function ExtensionAPI(ecInstance) {\n    zrUtil.each(availableMethods, function (methodName) {\n      this[methodName] = zrUtil.bind(ecInstance[methodName], ecInstance);\n    }, this);\n  }\n\n  return ExtensionAPI;\n}();\n\nexport default ExtensionAPI;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport * as zrUtil from 'zrender/lib/core/util.js';\nvar coordinateSystemCreators = {};\n\nvar CoordinateSystemManager =\n/** @class */\nfunction () {\n  function CoordinateSystemManager() {\n    this._coordinateSystems = [];\n  }\n\n  CoordinateSystemManager.prototype.create = function (ecModel, api) {\n    var coordinateSystems = [];\n    zrUtil.each(coordinateSystemCreators, function (creator, type) {\n      var list = creator.create(ecModel, api);\n      coordinateSystems = coordinateSystems.concat(list || []);\n    });\n    this._coordinateSystems = coordinateSystems;\n  };\n\n  CoordinateSystemManager.prototype.update = function (ecModel, api) {\n    zrUtil.each(this._coordinateSystems, function (coordSys) {\n      coordSys.update && coordSys.update(ecModel, api);\n    });\n  };\n\n  CoordinateSystemManager.prototype.getCoordinateSystems = function () {\n    return this._coordinateSystems.slice();\n  };\n\n  CoordinateSystemManager.register = function (type, creator) {\n    coordinateSystemCreators[type] = creator;\n  };\n\n  CoordinateSystemManager.get = function (type) {\n    return coordinateSystemCreators[type];\n  };\n\n  return CoordinateSystemManager;\n}();\n\nexport default CoordinateSystemManager;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { normalizeToArray // , MappingExistingItem, setComponentTypeToKeyInfo, mappingToExists\n} from '../util/model.js';\nimport { each, clone, map, isTypedArray, setAsPrimitive, isArray, isObject // , HashMap , createHashMap, extend, merge,\n} from 'zrender/lib/core/util.js';\nimport { error } from '../util/log.js';\nvar QUERY_REG = /^(min|max)?(.+)$/; // Key: mainType\n// type FakeComponentsMap = HashMap<(MappingExistingItem & { subType: string })[]>;\n\n/**\r\n * TERM EXPLANATIONS:\r\n * See `ECOption` and `ECUnitOption` in `src/util/types.ts`.\r\n */\n\nvar OptionManager =\n/** @class */\nfunction () {\n  // timeline.notMerge is not supported in ec3. Firstly there is rearly\n  // case that notMerge is needed. Secondly supporting 'notMerge' requires\n  // rawOption cloned and backuped when timeline changed, which does no\n  // good to performance. What's more, that both timeline and setOption\n  // method supply 'notMerge' brings complex and some problems.\n  // Consider this case:\n  // (step1) chart.setOption({timeline: {notMerge: false}, ...}, false);\n  // (step2) chart.setOption({timeline: {notMerge: true}, ...}, false);\n  function OptionManager(api) {\n    this._timelineOptions = [];\n    this._mediaList = [];\n    /**\r\n     * -1, means default.\r\n     * empty means no media.\r\n     */\n\n    this._currentMediaIndices = [];\n    this._api = api;\n  }\n\n  OptionManager.prototype.setOption = function (rawOption, optionPreprocessorFuncs, opt) {\n    if (rawOption) {\n      // That set dat primitive is dangerous if user reuse the data when setOption again.\n      each(normalizeToArray(rawOption.series), function (series) {\n        series && series.data && isTypedArray(series.data) && setAsPrimitive(series.data);\n      });\n      each(normalizeToArray(rawOption.dataset), function (dataset) {\n        dataset && dataset.source && isTypedArray(dataset.source) && setAsPrimitive(dataset.source);\n      });\n    } // Caution: some series modify option data, if do not clone,\n    // it should ensure that the repeat modify correctly\n    // (create a new object when modify itself).\n\n\n    rawOption = clone(rawOption); // FIXME\n    // If some property is set in timeline options or media option but\n    // not set in baseOption, a warning should be given.\n\n    var optionBackup = this._optionBackup;\n    var newParsedOption = parseRawOption(rawOption, optionPreprocessorFuncs, !optionBackup);\n    this._newBaseOption = newParsedOption.baseOption; // For setOption at second time (using merge mode);\n\n    if (optionBackup) {\n      // FIXME\n      // the restore merge solution is essentially incorrect.\n      // the mapping can not be 100% consistent with ecModel, which probably brings\n      // potential bug!\n      // The first merge is delayed, because in most cases, users do not call `setOption` twice.\n      // let fakeCmptsMap = this._fakeCmptsMap;\n      // if (!fakeCmptsMap) {\n      //     fakeCmptsMap = this._fakeCmptsMap = createHashMap();\n      //     mergeToBackupOption(fakeCmptsMap, null, optionBackup.baseOption, null);\n      // }\n      // mergeToBackupOption(\n      //     fakeCmptsMap, optionBackup.baseOption, newParsedOption.baseOption, opt\n      // );\n      // For simplicity, timeline options and media options do not support merge,\n      // that is, if you `setOption` twice and both has timeline options, the latter\n      // timeline options will not be merged to the former, but just substitute them.\n      if (newParsedOption.timelineOptions.length) {\n        optionBackup.timelineOptions = newParsedOption.timelineOptions;\n      }\n\n      if (newParsedOption.mediaList.length) {\n        optionBackup.mediaList = newParsedOption.mediaList;\n      }\n\n      if (newParsedOption.mediaDefault) {\n        optionBackup.mediaDefault = newParsedOption.mediaDefault;\n      }\n    } else {\n      this._optionBackup = newParsedOption;\n    }\n  };\n\n  OptionManager.prototype.mountOption = function (isRecreate) {\n    var optionBackup = this._optionBackup;\n    this._timelineOptions = optionBackup.timelineOptions;\n    this._mediaList = optionBackup.mediaList;\n    this._mediaDefault = optionBackup.mediaDefault;\n    this._currentMediaIndices = [];\n    return clone(isRecreate // this._optionBackup.baseOption, which is created at the first `setOption`\n    // called, and is merged into every new option by inner method `mergeToBackupOption`\n    // each time `setOption` called, can be only used in `isRecreate`, because\n    // its reliability is under suspicion. In other cases option merge is\n    // performed by `model.mergeOption`.\n    ? optionBackup.baseOption : this._newBaseOption);\n  };\n\n  OptionManager.prototype.getTimelineOption = function (ecModel) {\n    var option;\n    var timelineOptions = this._timelineOptions;\n\n    if (timelineOptions.length) {\n      // getTimelineOption can only be called after ecModel inited,\n      // so we can get currentIndex from timelineModel.\n      var timelineModel = ecModel.getComponent('timeline');\n\n      if (timelineModel) {\n        option = clone( // FIXME:TS as TimelineModel or quivlant interface\n        timelineOptions[timelineModel.getCurrentIndex()]);\n      }\n    }\n\n    return option;\n  };\n\n  OptionManager.prototype.getMediaOption = function (ecModel) {\n    var ecWidth = this._api.getWidth();\n\n    var ecHeight = this._api.getHeight();\n\n    var mediaList = this._mediaList;\n    var mediaDefault = this._mediaDefault;\n    var indices = [];\n    var result = []; // No media defined.\n\n    if (!mediaList.length && !mediaDefault) {\n      return result;\n    } // Multi media may be applied, the latter defined media has higher priority.\n\n\n    for (var i = 0, len = mediaList.length; i < len; i++) {\n      if (applyMediaQuery(mediaList[i].query, ecWidth, ecHeight)) {\n        indices.push(i);\n      }\n    } // FIXME\n    // Whether mediaDefault should force users to provide? Otherwise\n    // the change by media query can not be recorvered.\n\n\n    if (!indices.length && mediaDefault) {\n      indices = [-1];\n    }\n\n    if (indices.length && !indicesEquals(indices, this._currentMediaIndices)) {\n      result = map(indices, function (index) {\n        return clone(index === -1 ? mediaDefault.option : mediaList[index].option);\n      });\n    } // Otherwise return nothing.\n\n\n    this._currentMediaIndices = indices;\n    return result;\n  };\n\n  return OptionManager;\n}();\n/**\r\n * [RAW_OPTION_PATTERNS]\r\n * (Note: \"series: []\" represents all other props in `ECUnitOption`)\r\n *\r\n * (1) No prop \"baseOption\" declared:\r\n * Root option is used as \"baseOption\" (except prop \"options\" and \"media\").\r\n * ```js\r\n * option = {\r\n *     series: [],\r\n *     timeline: {},\r\n *     options: [],\r\n * };\r\n * option = {\r\n *     series: [],\r\n *     media: {},\r\n * };\r\n * option = {\r\n *     series: [],\r\n *     timeline: {},\r\n *     options: [],\r\n *     media: {},\r\n * }\r\n * ```\r\n *\r\n * (2) Prop \"baseOption\" declared:\r\n * If \"baseOption\" declared, `ECUnitOption` props can only be declared\r\n * inside \"baseOption\" except prop \"timeline\" (compat ec2).\r\n * ```js\r\n * option = {\r\n *     baseOption: {\r\n *         timeline: {},\r\n *         series: [],\r\n *     },\r\n *     options: []\r\n * };\r\n * option = {\r\n *     baseOption: {\r\n *         series: [],\r\n *     },\r\n *     media: []\r\n * };\r\n * option = {\r\n *     baseOption: {\r\n *         timeline: {},\r\n *         series: [],\r\n *     },\r\n *     options: []\r\n *     media: []\r\n * };\r\n * option = {\r\n *     // ec3 compat ec2: allow (only) `timeline` declared\r\n *     // outside baseOption. Keep this setting for compat.\r\n *     timeline: {},\r\n *     baseOption: {\r\n *         series: [],\r\n *     },\r\n *     options: [],\r\n *     media: []\r\n * };\r\n * ```\r\n */\n\n\nfunction parseRawOption( // `rawOption` May be modified\nrawOption, optionPreprocessorFuncs, isNew) {\n  var mediaList = [];\n  var mediaDefault;\n  var baseOption;\n  var declaredBaseOption = rawOption.baseOption; // Compatible with ec2, [RAW_OPTION_PATTERNS] above.\n\n  var timelineOnRoot = rawOption.timeline;\n  var timelineOptionsOnRoot = rawOption.options;\n  var mediaOnRoot = rawOption.media;\n  var hasMedia = !!rawOption.media;\n  var hasTimeline = !!(timelineOptionsOnRoot || timelineOnRoot || declaredBaseOption && declaredBaseOption.timeline);\n\n  if (declaredBaseOption) {\n    baseOption = declaredBaseOption; // For merge option.\n\n    if (!baseOption.timeline) {\n      baseOption.timeline = timelineOnRoot;\n    }\n  } // For convenience, enable to use the root option as the `baseOption`:\n  // `{ ...normalOptionProps, media: [{ ... }, { ... }] }`\n  else {\n      if (hasTimeline || hasMedia) {\n        rawOption.options = rawOption.media = null;\n      }\n\n      baseOption = rawOption;\n    }\n\n  if (hasMedia) {\n    if (isArray(mediaOnRoot)) {\n      each(mediaOnRoot, function (singleMedia) {\n        if (process.env.NODE_ENV !== 'production') {\n          // Real case of wrong config.\n          if (singleMedia && !singleMedia.option && isObject(singleMedia.query) && isObject(singleMedia.query.option)) {\n            error('Illegal media option. Must be like { media: [ { query: {}, option: {} } ] }');\n          }\n        }\n\n        if (singleMedia && singleMedia.option) {\n          if (singleMedia.query) {\n            mediaList.push(singleMedia);\n          } else if (!mediaDefault) {\n            // Use the first media default.\n            mediaDefault = singleMedia;\n          }\n        }\n      });\n    } else {\n      if (process.env.NODE_ENV !== 'production') {\n        // Real case of wrong config.\n        error('Illegal media option. Must be an array. Like { media: [ {...}, {...} ] }');\n      }\n    }\n  }\n\n  doPreprocess(baseOption);\n  each(timelineOptionsOnRoot, function (option) {\n    return doPreprocess(option);\n  });\n  each(mediaList, function (media) {\n    return doPreprocess(media.option);\n  });\n\n  function doPreprocess(option) {\n    each(optionPreprocessorFuncs, function (preProcess) {\n      preProcess(option, isNew);\n    });\n  }\n\n  return {\n    baseOption: baseOption,\n    timelineOptions: timelineOptionsOnRoot || [],\n    mediaDefault: mediaDefault,\n    mediaList: mediaList\n  };\n}\n/**\r\n * @see <http://www.w3.org/TR/css3-mediaqueries/#media1>\r\n * Support: width, height, aspectRatio\r\n * Can use max or min as prefix.\r\n */\n\n\nfunction applyMediaQuery(query, ecWidth, ecHeight) {\n  var realMap = {\n    width: ecWidth,\n    height: ecHeight,\n    aspectratio: ecWidth / ecHeight // lower case for convenience.\n\n  };\n  var applicable = true;\n  each(query, function (value, attr) {\n    var matched = attr.match(QUERY_REG);\n\n    if (!matched || !matched[1] || !matched[2]) {\n      return;\n    }\n\n    var operator = matched[1];\n    var realAttr = matched[2].toLowerCase();\n\n    if (!compare(realMap[realAttr], value, operator)) {\n      applicable = false;\n    }\n  });\n  return applicable;\n}\n\nfunction compare(real, expect, operator) {\n  if (operator === 'min') {\n    return real >= expect;\n  } else if (operator === 'max') {\n    return real <= expect;\n  } else {\n    // Equals\n    return real === expect;\n  }\n}\n\nfunction indicesEquals(indices1, indices2) {\n  // indices is always order by asc and has only finite number.\n  return indices1.join(',') === indices2.join(',');\n}\n/**\r\n * Consider case:\r\n * `chart.setOption(opt1);`\r\n * Then user do some interaction like dataZoom, dataView changing.\r\n * `chart.setOption(opt2);`\r\n * Then user press 'reset button' in toolbox.\r\n *\r\n * After doing that all of the interaction effects should be reset, the\r\n * chart should be the same as the result of invoke\r\n * `chart.setOption(opt1); chart.setOption(opt2);`.\r\n *\r\n * Although it is not able ensure that\r\n * `chart.setOption(opt1); chart.setOption(opt2);` is equivalents to\r\n * `chart.setOption(merge(opt1, opt2));` exactly,\r\n * this might be the only simple way to implement that feature.\r\n *\r\n * MEMO: We've considered some other approaches:\r\n * 1. Each model handles its self restoration but not uniform treatment.\r\n *     (Too complex in logic and error-prone)\r\n * 2. Use a shadow ecModel. (Performance expensive)\r\n *\r\n * FIXME: A possible solution:\r\n * Add a extra level of model for each component model. The inheritance chain would be:\r\n * ecModel <- componentModel <- componentActionModel <- dataItemModel\r\n * And all of the actions can only modify the `componentActionModel` rather than\r\n * `componentModel`. `setOption` will only modify the `ecModel` and `componentModel`.\r\n * When \"resotre\" action triggered, model from `componentActionModel` will be discarded\r\n * instead of recreating the \"ecModel\" from the \"_optionBackup\".\r\n */\n// function mergeToBackupOption(\n//     fakeCmptsMap: FakeComponentsMap,\n//     // `tarOption` Can be null/undefined, means init\n//     tarOption: ECUnitOption,\n//     newOption: ECUnitOption,\n//     // Can be null/undefined\n//     opt: InnerSetOptionOpts\n// ): void {\n//     newOption = newOption || {} as ECUnitOption;\n//     const notInit = !!tarOption;\n//     each(newOption, function (newOptsInMainType, mainType) {\n//         if (newOptsInMainType == null) {\n//             return;\n//         }\n//         if (!ComponentModel.hasClass(mainType)) {\n//             if (tarOption) {\n//                 tarOption[mainType] = merge(tarOption[mainType], newOptsInMainType, true);\n//             }\n//         }\n//         else {\n//             const oldTarOptsInMainType = notInit ? normalizeToArray(tarOption[mainType]) : null;\n//             const oldFakeCmptsInMainType = fakeCmptsMap.get(mainType) || [];\n//             const resultTarOptsInMainType = notInit ? (tarOption[mainType] = [] as ComponentOption[]) : null;\n//             const resultFakeCmptsInMainType = fakeCmptsMap.set(mainType, []);\n//             const mappingResult = mappingToExists(\n//                 oldFakeCmptsInMainType,\n//                 normalizeToArray(newOptsInMainType),\n//                 (opt && opt.replaceMergeMainTypeMap.get(mainType)) ? 'replaceMerge' : 'normalMerge'\n//             );\n//             setComponentTypeToKeyInfo(mappingResult, mainType, ComponentModel as ComponentModelConstructor);\n//             each(mappingResult, function (resultItem, index) {\n//                 // The same logic as `Global.ts#_mergeOption`.\n//                 let fakeCmpt = resultItem.existing;\n//                 const newOption = resultItem.newOption;\n//                 const keyInfo = resultItem.keyInfo;\n//                 let fakeCmptOpt;\n//                 if (!newOption) {\n//                     fakeCmptOpt = oldTarOptsInMainType[index];\n//                 }\n//                 else {\n//                     if (fakeCmpt && fakeCmpt.subType === keyInfo.subType) {\n//                         fakeCmpt.name = keyInfo.name;\n//                         if (notInit) {\n//                             fakeCmptOpt = merge(oldTarOptsInMainType[index], newOption, true);\n//                         }\n//                     }\n//                     else {\n//                         fakeCmpt = extend({}, keyInfo);\n//                         if (notInit) {\n//                             fakeCmptOpt = clone(newOption);\n//                         }\n//                     }\n//                 }\n//                 if (fakeCmpt) {\n//                     notInit && resultTarOptsInMainType.push(fakeCmptOpt);\n//                     resultFakeCmptsInMainType.push(fakeCmpt);\n//                 }\n//                 else {\n//                     notInit && resultTarOptsInMainType.push(void 0);\n//                     resultFakeCmptsInMainType.push(void 0);\n//                 }\n//             });\n//         }\n//     });\n// }\n\n\nexport default OptionManager;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport * as zrUtil from 'zrender/lib/core/util.js';\nimport * as modelUtil from '../../util/model.js';\nimport { deprecateLog, deprecateReplaceLog } from '../../util/log.js';\nvar each = zrUtil.each;\nvar isObject = zrUtil.isObject;\nvar POSSIBLE_STYLES = ['areaStyle', 'lineStyle', 'nodeStyle', 'linkStyle', 'chordStyle', 'label', 'labelLine'];\n\nfunction compatEC2ItemStyle(opt) {\n  var itemStyleOpt = opt && opt.itemStyle;\n\n  if (!itemStyleOpt) {\n    return;\n  }\n\n  for (var i = 0, len = POSSIBLE_STYLES.length; i < len; i++) {\n    var styleName = POSSIBLE_STYLES[i];\n    var normalItemStyleOpt = itemStyleOpt.normal;\n    var emphasisItemStyleOpt = itemStyleOpt.emphasis;\n\n    if (normalItemStyleOpt && normalItemStyleOpt[styleName]) {\n      if (process.env.NODE_ENV !== 'production') {\n        deprecateReplaceLog(\"itemStyle.normal.\" + styleName, styleName);\n      }\n\n      opt[styleName] = opt[styleName] || {};\n\n      if (!opt[styleName].normal) {\n        opt[styleName].normal = normalItemStyleOpt[styleName];\n      } else {\n        zrUtil.merge(opt[styleName].normal, normalItemStyleOpt[styleName]);\n      }\n\n      normalItemStyleOpt[styleName] = null;\n    }\n\n    if (emphasisItemStyleOpt && emphasisItemStyleOpt[styleName]) {\n      if (process.env.NODE_ENV !== 'production') {\n        deprecateReplaceLog(\"itemStyle.emphasis.\" + styleName, \"emphasis.\" + styleName);\n      }\n\n      opt[styleName] = opt[styleName] || {};\n\n      if (!opt[styleName].emphasis) {\n        opt[styleName].emphasis = emphasisItemStyleOpt[styleName];\n      } else {\n        zrUtil.merge(opt[styleName].emphasis, emphasisItemStyleOpt[styleName]);\n      }\n\n      emphasisItemStyleOpt[styleName] = null;\n    }\n  }\n}\n\nfunction convertNormalEmphasis(opt, optType, useExtend) {\n  if (opt && opt[optType] && (opt[optType].normal || opt[optType].emphasis)) {\n    var normalOpt = opt[optType].normal;\n    var emphasisOpt = opt[optType].emphasis;\n\n    if (normalOpt) {\n      if (process.env.NODE_ENV !== 'production') {\n        // eslint-disable-next-line max-len\n        deprecateLog(\"'normal' hierarchy in \" + optType + \" has been removed since 4.0. All style properties are configured in \" + optType + \" directly now.\");\n      } // Timeline controlStyle has other properties besides normal and emphasis\n\n\n      if (useExtend) {\n        opt[optType].normal = opt[optType].emphasis = null;\n        zrUtil.defaults(opt[optType], normalOpt);\n      } else {\n        opt[optType] = normalOpt;\n      }\n    }\n\n    if (emphasisOpt) {\n      if (process.env.NODE_ENV !== 'production') {\n        deprecateLog(optType + \".emphasis has been changed to emphasis.\" + optType + \" since 4.0\");\n      }\n\n      opt.emphasis = opt.emphasis || {};\n      opt.emphasis[optType] = emphasisOpt; // Also compat the case user mix the style and focus together in ec3 style\n      // for example: { itemStyle: { normal: {}, emphasis: {focus, shadowBlur} } }\n\n      if (emphasisOpt.focus) {\n        opt.emphasis.focus = emphasisOpt.focus;\n      }\n\n      if (emphasisOpt.blurScope) {\n        opt.emphasis.blurScope = emphasisOpt.blurScope;\n      }\n    }\n  }\n}\n\nfunction removeEC3NormalStatus(opt) {\n  convertNormalEmphasis(opt, 'itemStyle');\n  convertNormalEmphasis(opt, 'lineStyle');\n  convertNormalEmphasis(opt, 'areaStyle');\n  convertNormalEmphasis(opt, 'label');\n  convertNormalEmphasis(opt, 'labelLine'); // treemap\n\n  convertNormalEmphasis(opt, 'upperLabel'); // graph\n\n  convertNormalEmphasis(opt, 'edgeLabel');\n}\n\nfunction compatTextStyle(opt, propName) {\n  // Check whether is not object (string\\null\\undefined ...)\n  var labelOptSingle = isObject(opt) && opt[propName];\n  var textStyle = isObject(labelOptSingle) && labelOptSingle.textStyle;\n\n  if (textStyle) {\n    if (process.env.NODE_ENV !== 'production') {\n      // eslint-disable-next-line max-len\n      deprecateLog(\"textStyle hierarchy in \" + propName + \" has been removed since 4.0. All textStyle properties are configured in \" + propName + \" directly now.\");\n    }\n\n    for (var i = 0, len = modelUtil.TEXT_STYLE_OPTIONS.length; i < len; i++) {\n      var textPropName = modelUtil.TEXT_STYLE_OPTIONS[i];\n\n      if (textStyle.hasOwnProperty(textPropName)) {\n        labelOptSingle[textPropName] = textStyle[textPropName];\n      }\n    }\n  }\n}\n\nfunction compatEC3CommonStyles(opt) {\n  if (opt) {\n    removeEC3NormalStatus(opt);\n    compatTextStyle(opt, 'label');\n    opt.emphasis && compatTextStyle(opt.emphasis, 'label');\n  }\n}\n\nfunction processSeries(seriesOpt) {\n  if (!isObject(seriesOpt)) {\n    return;\n  }\n\n  compatEC2ItemStyle(seriesOpt);\n  removeEC3NormalStatus(seriesOpt);\n  compatTextStyle(seriesOpt, 'label'); // treemap\n\n  compatTextStyle(seriesOpt, 'upperLabel'); // graph\n\n  compatTextStyle(seriesOpt, 'edgeLabel');\n\n  if (seriesOpt.emphasis) {\n    compatTextStyle(seriesOpt.emphasis, 'label'); // treemap\n\n    compatTextStyle(seriesOpt.emphasis, 'upperLabel'); // graph\n\n    compatTextStyle(seriesOpt.emphasis, 'edgeLabel');\n  }\n\n  var markPoint = seriesOpt.markPoint;\n\n  if (markPoint) {\n    compatEC2ItemStyle(markPoint);\n    compatEC3CommonStyles(markPoint);\n  }\n\n  var markLine = seriesOpt.markLine;\n\n  if (markLine) {\n    compatEC2ItemStyle(markLine);\n    compatEC3CommonStyles(markLine);\n  }\n\n  var markArea = seriesOpt.markArea;\n\n  if (markArea) {\n    compatEC3CommonStyles(markArea);\n  }\n\n  var data = seriesOpt.data; // Break with ec3: if `setOption` again, there may be no `type` in option,\n  // then the backward compat based on option type will not be performed.\n\n  if (seriesOpt.type === 'graph') {\n    data = data || seriesOpt.nodes;\n    var edgeData = seriesOpt.links || seriesOpt.edges;\n\n    if (edgeData && !zrUtil.isTypedArray(edgeData)) {\n      for (var i = 0; i < edgeData.length; i++) {\n        compatEC3CommonStyles(edgeData[i]);\n      }\n    }\n\n    zrUtil.each(seriesOpt.categories, function (opt) {\n      removeEC3NormalStatus(opt);\n    });\n  }\n\n  if (data && !zrUtil.isTypedArray(data)) {\n    for (var i = 0; i < data.length; i++) {\n      compatEC3CommonStyles(data[i]);\n    }\n  } // mark point data\n\n\n  markPoint = seriesOpt.markPoint;\n\n  if (markPoint && markPoint.data) {\n    var mpData = markPoint.data;\n\n    for (var i = 0; i < mpData.length; i++) {\n      compatEC3CommonStyles(mpData[i]);\n    }\n  } // mark line data\n\n\n  markLine = seriesOpt.markLine;\n\n  if (markLine && markLine.data) {\n    var mlData = markLine.data;\n\n    for (var i = 0; i < mlData.length; i++) {\n      if (zrUtil.isArray(mlData[i])) {\n        compatEC3CommonStyles(mlData[i][0]);\n        compatEC3CommonStyles(mlData[i][1]);\n      } else {\n        compatEC3CommonStyles(mlData[i]);\n      }\n    }\n  } // Series\n\n\n  if (seriesOpt.type === 'gauge') {\n    compatTextStyle(seriesOpt, 'axisLabel');\n    compatTextStyle(seriesOpt, 'title');\n    compatTextStyle(seriesOpt, 'detail');\n  } else if (seriesOpt.type === 'treemap') {\n    convertNormalEmphasis(seriesOpt.breadcrumb, 'itemStyle');\n    zrUtil.each(seriesOpt.levels, function (opt) {\n      removeEC3NormalStatus(opt);\n    });\n  } else if (seriesOpt.type === 'tree') {\n    removeEC3NormalStatus(seriesOpt.leaves);\n  } // sunburst starts from ec4, so it does not need to compat levels.\n\n}\n\nfunction toArr(o) {\n  return zrUtil.isArray(o) ? o : o ? [o] : [];\n}\n\nfunction toObj(o) {\n  return (zrUtil.isArray(o) ? o[0] : o) || {};\n}\n\nexport default function globalCompatStyle(option, isTheme) {\n  each(toArr(option.series), function (seriesOpt) {\n    isObject(seriesOpt) && processSeries(seriesOpt);\n  });\n  var axes = ['xAxis', 'yAxis', 'radiusAxis', 'angleAxis', 'singleAxis', 'parallelAxis', 'radar'];\n  isTheme && axes.push('valueAxis', 'categoryAxis', 'logAxis', 'timeAxis');\n  each(axes, function (axisName) {\n    each(toArr(option[axisName]), function (axisOpt) {\n      if (axisOpt) {\n        compatTextStyle(axisOpt, 'axisLabel');\n        compatTextStyle(axisOpt.axisPointer, 'label');\n      }\n    });\n  });\n  each(toArr(option.parallel), function (parallelOpt) {\n    var parallelAxisDefault = parallelOpt && parallelOpt.parallelAxisDefault;\n    compatTextStyle(parallelAxisDefault, 'axisLabel');\n    compatTextStyle(parallelAxisDefault && parallelAxisDefault.axisPointer, 'label');\n  });\n  each(toArr(option.calendar), function (calendarOpt) {\n    convertNormalEmphasis(calendarOpt, 'itemStyle');\n    compatTextStyle(calendarOpt, 'dayLabel');\n    compatTextStyle(calendarOpt, 'monthLabel');\n    compatTextStyle(calendarOpt, 'yearLabel');\n  }); // radar.name.textStyle\n\n  each(toArr(option.radar), function (radarOpt) {\n    compatTextStyle(radarOpt, 'name'); // Use axisName instead of name because component has name property\n\n    if (radarOpt.name && radarOpt.axisName == null) {\n      radarOpt.axisName = radarOpt.name;\n      delete radarOpt.name;\n\n      if (process.env.NODE_ENV !== 'production') {\n        deprecateLog('name property in radar component has been changed to axisName');\n      }\n    }\n\n    if (radarOpt.nameGap != null && radarOpt.axisNameGap == null) {\n      radarOpt.axisNameGap = radarOpt.nameGap;\n      delete radarOpt.nameGap;\n\n      if (process.env.NODE_ENV !== 'production') {\n        deprecateLog('nameGap property in radar component has been changed to axisNameGap');\n      }\n    }\n\n    if (process.env.NODE_ENV !== 'production') {\n      each(radarOpt.indicator, function (indicatorOpt) {\n        if (indicatorOpt.text) {\n          deprecateReplaceLog('text', 'name', 'radar.indicator');\n        }\n      });\n    }\n  });\n  each(toArr(option.geo), function (geoOpt) {\n    if (isObject(geoOpt)) {\n      compatEC3CommonStyles(geoOpt);\n      each(toArr(geoOpt.regions), function (regionObj) {\n        compatEC3CommonStyles(regionObj);\n      });\n    }\n  });\n  each(toArr(option.timeline), function (timelineOpt) {\n    compatEC3CommonStyles(timelineOpt);\n    convertNormalEmphasis(timelineOpt, 'label');\n    convertNormalEmphasis(timelineOpt, 'itemStyle');\n    convertNormalEmphasis(timelineOpt, 'controlStyle', true);\n    var data = timelineOpt.data;\n    zrUtil.isArray(data) && zrUtil.each(data, function (item) {\n      if (zrUtil.isObject(item)) {\n        convertNormalEmphasis(item, 'label');\n        convertNormalEmphasis(item, 'itemStyle');\n      }\n    });\n  });\n  each(toArr(option.toolbox), function (toolboxOpt) {\n    convertNormalEmphasis(toolboxOpt, 'iconStyle');\n    each(toolboxOpt.feature, function (featureOpt) {\n      convertNormalEmphasis(featureOpt, 'iconStyle');\n    });\n  });\n  compatTextStyle(toObj(option.axisPointer), 'label');\n  compatTextStyle(toObj(option.tooltip).axisPointer, 'label'); // Clean logs\n  // storedLogs = {};\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { each, isArray, isObject, isTypedArray, defaults } from 'zrender/lib/core/util.js';\nimport compatStyle from './helper/compatStyle.js';\nimport { normalizeToArray } from '../util/model.js';\nimport { deprecateLog, deprecateReplaceLog } from '../util/log.js';\n\nfunction get(opt, path) {\n  var pathArr = path.split(',');\n  var obj = opt;\n\n  for (var i = 0; i < pathArr.length; i++) {\n    obj = obj && obj[pathArr[i]];\n\n    if (obj == null) {\n      break;\n    }\n  }\n\n  return obj;\n}\n\nfunction set(opt, path, val, overwrite) {\n  var pathArr = path.split(',');\n  var obj = opt;\n  var key;\n  var i = 0;\n\n  for (; i < pathArr.length - 1; i++) {\n    key = pathArr[i];\n\n    if (obj[key] == null) {\n      obj[key] = {};\n    }\n\n    obj = obj[key];\n  }\n\n  if (overwrite || obj[pathArr[i]] == null) {\n    obj[pathArr[i]] = val;\n  }\n}\n\nfunction compatLayoutProperties(option) {\n  option && each(LAYOUT_PROPERTIES, function (prop) {\n    if (prop[0] in option && !(prop[1] in option)) {\n      option[prop[1]] = option[prop[0]];\n    }\n  });\n}\n\nvar LAYOUT_PROPERTIES = [['x', 'left'], ['y', 'top'], ['x2', 'right'], ['y2', 'bottom']];\nvar COMPATITABLE_COMPONENTS = ['grid', 'geo', 'parallel', 'legend', 'toolbox', 'title', 'visualMap', 'dataZoom', 'timeline'];\nvar BAR_ITEM_STYLE_MAP = [['borderRadius', 'barBorderRadius'], ['borderColor', 'barBorderColor'], ['borderWidth', 'barBorderWidth']];\n\nfunction compatBarItemStyle(option) {\n  var itemStyle = option && option.itemStyle;\n\n  if (itemStyle) {\n    for (var i = 0; i < BAR_ITEM_STYLE_MAP.length; i++) {\n      var oldName = BAR_ITEM_STYLE_MAP[i][1];\n      var newName = BAR_ITEM_STYLE_MAP[i][0];\n\n      if (itemStyle[oldName] != null) {\n        itemStyle[newName] = itemStyle[oldName];\n\n        if (process.env.NODE_ENV !== 'production') {\n          deprecateReplaceLog(oldName, newName);\n        }\n      }\n    }\n  }\n}\n\nfunction compatPieLabel(option) {\n  if (!option) {\n    return;\n  }\n\n  if (option.alignTo === 'edge' && option.margin != null && option.edgeDistance == null) {\n    if (process.env.NODE_ENV !== 'production') {\n      deprecateReplaceLog('label.margin', 'label.edgeDistance', 'pie');\n    }\n\n    option.edgeDistance = option.margin;\n  }\n}\n\nfunction compatSunburstState(option) {\n  if (!option) {\n    return;\n  }\n\n  if (option.downplay && !option.blur) {\n    option.blur = option.downplay;\n\n    if (process.env.NODE_ENV !== 'production') {\n      deprecateReplaceLog('downplay', 'blur', 'sunburst');\n    }\n  }\n}\n\nfunction compatGraphFocus(option) {\n  if (!option) {\n    return;\n  }\n\n  if (option.focusNodeAdjacency != null) {\n    option.emphasis = option.emphasis || {};\n\n    if (option.emphasis.focus == null) {\n      if (process.env.NODE_ENV !== 'production') {\n        deprecateReplaceLog('focusNodeAdjacency', 'emphasis: { focus: \\'adjacency\\'}', 'graph/sankey');\n      }\n\n      option.emphasis.focus = 'adjacency';\n    }\n  }\n}\n\nfunction traverseTree(data, cb) {\n  if (data) {\n    for (var i = 0; i < data.length; i++) {\n      cb(data[i]);\n      data[i] && traverseTree(data[i].children, cb);\n    }\n  }\n}\n\nexport default function globalBackwardCompat(option, isTheme) {\n  compatStyle(option, isTheme); // Make sure series array for model initialization.\n\n  option.series = normalizeToArray(option.series);\n  each(option.series, function (seriesOpt) {\n    if (!isObject(seriesOpt)) {\n      return;\n    }\n\n    var seriesType = seriesOpt.type;\n\n    if (seriesType === 'line') {\n      if (seriesOpt.clipOverflow != null) {\n        seriesOpt.clip = seriesOpt.clipOverflow;\n\n        if (process.env.NODE_ENV !== 'production') {\n          deprecateReplaceLog('clipOverflow', 'clip', 'line');\n        }\n      }\n    } else if (seriesType === 'pie' || seriesType === 'gauge') {\n      if (seriesOpt.clockWise != null) {\n        seriesOpt.clockwise = seriesOpt.clockWise;\n\n        if (process.env.NODE_ENV !== 'production') {\n          deprecateReplaceLog('clockWise', 'clockwise');\n        }\n      }\n\n      compatPieLabel(seriesOpt.label);\n      var data = seriesOpt.data;\n\n      if (data && !isTypedArray(data)) {\n        for (var i = 0; i < data.length; i++) {\n          compatPieLabel(data[i]);\n        }\n      }\n\n      if (seriesOpt.hoverOffset != null) {\n        seriesOpt.emphasis = seriesOpt.emphasis || {};\n\n        if (seriesOpt.emphasis.scaleSize = null) {\n          if (process.env.NODE_ENV !== 'production') {\n            deprecateReplaceLog('hoverOffset', 'emphasis.scaleSize');\n          }\n\n          seriesOpt.emphasis.scaleSize = seriesOpt.hoverOffset;\n        }\n      }\n    } else if (seriesType === 'gauge') {\n      var pointerColor = get(seriesOpt, 'pointer.color');\n      pointerColor != null && set(seriesOpt, 'itemStyle.color', pointerColor);\n    } else if (seriesType === 'bar') {\n      compatBarItemStyle(seriesOpt);\n      compatBarItemStyle(seriesOpt.backgroundStyle);\n      compatBarItemStyle(seriesOpt.emphasis);\n      var data = seriesOpt.data;\n\n      if (data && !isTypedArray(data)) {\n        for (var i = 0; i < data.length; i++) {\n          if (typeof data[i] === 'object') {\n            compatBarItemStyle(data[i]);\n            compatBarItemStyle(data[i] && data[i].emphasis);\n          }\n        }\n      }\n    } else if (seriesType === 'sunburst') {\n      var highlightPolicy = seriesOpt.highlightPolicy;\n\n      if (highlightPolicy) {\n        seriesOpt.emphasis = seriesOpt.emphasis || {};\n\n        if (!seriesOpt.emphasis.focus) {\n          seriesOpt.emphasis.focus = highlightPolicy;\n\n          if (process.env.NODE_ENV !== 'production') {\n            deprecateReplaceLog('highlightPolicy', 'emphasis.focus', 'sunburst');\n          }\n        }\n      }\n\n      compatSunburstState(seriesOpt);\n      traverseTree(seriesOpt.data, compatSunburstState);\n    } else if (seriesType === 'graph' || seriesType === 'sankey') {\n      compatGraphFocus(seriesOpt); // TODO nodes, edges?\n    } else if (seriesType === 'map') {\n      if (seriesOpt.mapType && !seriesOpt.map) {\n        if (process.env.NODE_ENV !== 'production') {\n          deprecateReplaceLog('mapType', 'map', 'map');\n        }\n\n        seriesOpt.map = seriesOpt.mapType;\n      }\n\n      if (seriesOpt.mapLocation) {\n        if (process.env.NODE_ENV !== 'production') {\n          deprecateLog('`mapLocation` is not used anymore.');\n        }\n\n        defaults(seriesOpt, seriesOpt.mapLocation);\n      }\n    }\n\n    if (seriesOpt.hoverAnimation != null) {\n      seriesOpt.emphasis = seriesOpt.emphasis || {};\n\n      if (seriesOpt.emphasis && seriesOpt.emphasis.scale == null) {\n        if (process.env.NODE_ENV !== 'production') {\n          deprecateReplaceLog('hoverAnimation', 'emphasis.scale');\n        }\n\n        seriesOpt.emphasis.scale = seriesOpt.hoverAnimation;\n      }\n    }\n\n    compatLayoutProperties(seriesOpt);\n  }); // dataRange has changed to visualMap\n\n  if (option.dataRange) {\n    option.visualMap = option.dataRange;\n  }\n\n  each(COMPATITABLE_COMPONENTS, function (componentName) {\n    var options = option[componentName];\n\n    if (options) {\n      if (!isArray(options)) {\n        options = [options];\n      }\n\n      each(options, function (option) {\n        compatLayoutProperties(option);\n      });\n    }\n  });\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { createHashMap, each } from 'zrender/lib/core/util.js';\nimport { addSafe } from '../util/number.js'; // (1) [Caution]: the logic is correct based on the premises:\n//     data processing stage is blocked in stream.\n//     See <module:echarts/stream/Scheduler#performDataProcessorTasks>\n// (2) Only register once when import repeatedly.\n//     Should be executed after series is filtered and before stack calculation.\n\nexport default function dataStack(ecModel) {\n  var stackInfoMap = createHashMap();\n  ecModel.eachSeries(function (seriesModel) {\n    var stack = seriesModel.get('stack'); // Compatible: when `stack` is set as '', do not stack.\n\n    if (stack) {\n      var stackInfoList = stackInfoMap.get(stack) || stackInfoMap.set(stack, []);\n      var data = seriesModel.getData();\n      var stackInfo = {\n        // Used for calculate axis extent automatically.\n        // TODO: Type getCalculationInfo return more specific type?\n        stackResultDimension: data.getCalculationInfo('stackResultDimension'),\n        stackedOverDimension: data.getCalculationInfo('stackedOverDimension'),\n        stackedDimension: data.getCalculationInfo('stackedDimension'),\n        stackedByDimension: data.getCalculationInfo('stackedByDimension'),\n        isStackedByIndex: data.getCalculationInfo('isStackedByIndex'),\n        data: data,\n        seriesModel: seriesModel\n      }; // If stacked on axis that do not support data stack.\n\n      if (!stackInfo.stackedDimension || !(stackInfo.isStackedByIndex || stackInfo.stackedByDimension)) {\n        return;\n      }\n\n      stackInfoList.length && data.setCalculationInfo('stackedOnSeries', stackInfoList[stackInfoList.length - 1].seriesModel);\n      stackInfoList.push(stackInfo);\n    }\n  });\n  stackInfoMap.each(calculateStack);\n}\n\nfunction calculateStack(stackInfoList) {\n  each(stackInfoList, function (targetStackInfo, idxInStack) {\n    var resultVal = [];\n    var resultNaN = [NaN, NaN];\n    var dims = [targetStackInfo.stackResultDimension, targetStackInfo.stackedOverDimension];\n    var targetData = targetStackInfo.data;\n    var isStackedByIndex = targetStackInfo.isStackedByIndex;\n    var stackStrategy = targetStackInfo.seriesModel.get('stackStrategy') || 'samesign'; // Should not write on raw data, because stack series model list changes\n    // depending on legend selection.\n\n    targetData.modify(dims, function (v0, v1, dataIndex) {\n      var sum = targetData.get(targetStackInfo.stackedDimension, dataIndex); // Consider `connectNulls` of line area, if value is NaN, stackedOver\n      // should also be NaN, to draw a appropriate belt area.\n\n      if (isNaN(sum)) {\n        return resultNaN;\n      }\n\n      var byValue;\n      var stackedDataRawIndex;\n\n      if (isStackedByIndex) {\n        stackedDataRawIndex = targetData.getRawIndex(dataIndex);\n      } else {\n        byValue = targetData.get(targetStackInfo.stackedByDimension, dataIndex);\n      } // If stackOver is NaN, chart view will render point on value start.\n\n\n      var stackedOver = NaN;\n\n      for (var j = idxInStack - 1; j >= 0; j--) {\n        var stackInfo = stackInfoList[j]; // Has been optimized by inverted indices on `stackedByDimension`.\n\n        if (!isStackedByIndex) {\n          stackedDataRawIndex = stackInfo.data.rawIndexOf(stackInfo.stackedByDimension, byValue);\n        }\n\n        if (stackedDataRawIndex >= 0) {\n          var val = stackInfo.data.getByRawIndex(stackInfo.stackResultDimension, stackedDataRawIndex); // Considering positive stack, negative stack and empty data\n\n          if (stackStrategy === 'all' // single stack group\n          || stackStrategy === 'positive' && val > 0 || stackStrategy === 'negative' && val < 0 || stackStrategy === 'samesign' && sum >= 0 && val > 0 // All positive stack\n          || stackStrategy === 'samesign' && sum <= 0 && val < 0 // All negative stack\n          ) {\n              // The sum has to be very small to be affected by the\n              // floating arithmetic problem. An incorrect result will probably\n              // cause axis min/max to be filtered incorrectly.\n              sum = addSafe(sum, val);\n              stackedOver = val;\n              break;\n            }\n        }\n      }\n\n      resultVal[0] = sum;\n      resultVal[1] = stackedOver;\n      return resultVal;\n    });\n  });\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { isTypedArray, clone, createHashMap, isArray, isObject, isArrayLike, hasOwn, assert, each, map, isNumber, isString, keys } from 'zrender/lib/core/util.js';\nimport { SOURCE_FORMAT_ORIGINAL, SERIES_LAYOUT_BY_COLUMN, SOURCE_FORMAT_UNKNOWN, SOURCE_FORMAT_KEYED_COLUMNS, SOURCE_FORMAT_TYPED_ARRAY, SOURCE_FORMAT_ARRAY_ROWS, SOURCE_FORMAT_OBJECT_ROWS, SERIES_LAYOUT_BY_ROW } from '../util/types.js';\nimport { getDataItemValue } from '../util/model.js';\nimport { BE_ORDINAL, guessOrdinal } from './helper/sourceHelper.js';\n; // @inner\n\nvar SourceImpl =\n/** @class */\nfunction () {\n  function SourceImpl(fields) {\n    this.data = fields.data || (fields.sourceFormat === SOURCE_FORMAT_KEYED_COLUMNS ? {} : []);\n    this.sourceFormat = fields.sourceFormat || SOURCE_FORMAT_UNKNOWN; // Visit config\n\n    this.seriesLayoutBy = fields.seriesLayoutBy || SERIES_LAYOUT_BY_COLUMN;\n    this.startIndex = fields.startIndex || 0;\n    this.dimensionsDetectedCount = fields.dimensionsDetectedCount;\n    this.metaRawOption = fields.metaRawOption;\n    var dimensionsDefine = this.dimensionsDefine = fields.dimensionsDefine;\n\n    if (dimensionsDefine) {\n      for (var i = 0; i < dimensionsDefine.length; i++) {\n        var dim = dimensionsDefine[i];\n\n        if (dim.type == null) {\n          if (guessOrdinal(this, i) === BE_ORDINAL.Must) {\n            dim.type = 'ordinal';\n          }\n        }\n      }\n    }\n  }\n\n  return SourceImpl;\n}();\n\nexport function isSourceInstance(val) {\n  return val instanceof SourceImpl;\n}\n/**\r\n * Create a source from option.\r\n * NOTE: Created source is immutable. Don't change any properties in it.\r\n */\n\nexport function createSource(sourceData, thisMetaRawOption, // can be null. If not provided, auto detect it from `sourceData`.\nsourceFormat) {\n  sourceFormat = sourceFormat || detectSourceFormat(sourceData);\n  var seriesLayoutBy = thisMetaRawOption.seriesLayoutBy;\n  var determined = determineSourceDimensions(sourceData, sourceFormat, seriesLayoutBy, thisMetaRawOption.sourceHeader, thisMetaRawOption.dimensions);\n  var source = new SourceImpl({\n    data: sourceData,\n    sourceFormat: sourceFormat,\n    seriesLayoutBy: seriesLayoutBy,\n    dimensionsDefine: determined.dimensionsDefine,\n    startIndex: determined.startIndex,\n    dimensionsDetectedCount: determined.dimensionsDetectedCount,\n    metaRawOption: clone(thisMetaRawOption)\n  });\n  return source;\n}\n/**\r\n * Wrap original series data for some compatibility cases.\r\n */\n\nexport function createSourceFromSeriesDataOption(data) {\n  return new SourceImpl({\n    data: data,\n    sourceFormat: isTypedArray(data) ? SOURCE_FORMAT_TYPED_ARRAY : SOURCE_FORMAT_ORIGINAL\n  });\n}\n/**\r\n * Clone source but excludes source data.\r\n */\n\nexport function cloneSourceShallow(source) {\n  return new SourceImpl({\n    data: source.data,\n    sourceFormat: source.sourceFormat,\n    seriesLayoutBy: source.seriesLayoutBy,\n    dimensionsDefine: clone(source.dimensionsDefine),\n    startIndex: source.startIndex,\n    dimensionsDetectedCount: source.dimensionsDetectedCount\n  });\n}\n/**\r\n * Note: An empty array will be detected as `SOURCE_FORMAT_ARRAY_ROWS`.\r\n */\n\nexport function detectSourceFormat(data) {\n  var sourceFormat = SOURCE_FORMAT_UNKNOWN;\n\n  if (isTypedArray(data)) {\n    sourceFormat = SOURCE_FORMAT_TYPED_ARRAY;\n  } else if (isArray(data)) {\n    // FIXME Whether tolerate null in top level array?\n    if (data.length === 0) {\n      sourceFormat = SOURCE_FORMAT_ARRAY_ROWS;\n    }\n\n    for (var i = 0, len = data.length; i < len; i++) {\n      var item = data[i];\n\n      if (item == null) {\n        continue;\n      } else if (isArray(item)) {\n        sourceFormat = SOURCE_FORMAT_ARRAY_ROWS;\n        break;\n      } else if (isObject(item)) {\n        sourceFormat = SOURCE_FORMAT_OBJECT_ROWS;\n        break;\n      }\n    }\n  } else if (isObject(data)) {\n    for (var key in data) {\n      if (hasOwn(data, key) && isArrayLike(data[key])) {\n        sourceFormat = SOURCE_FORMAT_KEYED_COLUMNS;\n        break;\n      }\n    }\n  }\n\n  return sourceFormat;\n}\n/**\r\n * Determine the source definitions from data standalone dimensions definitions\r\n * are not specified.\r\n */\n\nfunction determineSourceDimensions(data, sourceFormat, seriesLayoutBy, sourceHeader, // standalone raw dimensions definition, like:\n// {\n//     dimensions: ['aa', 'bb', { name: 'cc', type: 'time' }]\n// }\n// in `dataset` or `series`\ndimensionsDefine) {\n  var dimensionsDetectedCount;\n  var startIndex; // PENDING: Could data be null/undefined here?\n  // currently, if `dataset.source` not specified, error thrown.\n  // if `series.data` not specified, nothing rendered without error thrown.\n  // Should test these cases.\n\n  if (!data) {\n    return {\n      dimensionsDefine: normalizeDimensionsOption(dimensionsDefine),\n      startIndex: startIndex,\n      dimensionsDetectedCount: dimensionsDetectedCount\n    };\n  }\n\n  if (sourceFormat === SOURCE_FORMAT_ARRAY_ROWS) {\n    var dataArrayRows = data; // Rule: Most of the first line are string: it is header.\n    // Caution: consider a line with 5 string and 1 number,\n    // it still can not be sure it is a head, because the\n    // 5 string may be 5 values of category columns.\n\n    if (sourceHeader === 'auto' || sourceHeader == null) {\n      arrayRowsTravelFirst(function (val) {\n        // '-' is regarded as null/undefined.\n        if (val != null && val !== '-') {\n          if (isString(val)) {\n            startIndex == null && (startIndex = 1);\n          } else {\n            startIndex = 0;\n          }\n        } // 10 is an experience number, avoid long loop.\n\n      }, seriesLayoutBy, dataArrayRows, 10);\n    } else {\n      startIndex = isNumber(sourceHeader) ? sourceHeader : sourceHeader ? 1 : 0;\n    }\n\n    if (!dimensionsDefine && startIndex === 1) {\n      dimensionsDefine = [];\n      arrayRowsTravelFirst(function (val, index) {\n        dimensionsDefine[index] = val != null ? val + '' : '';\n      }, seriesLayoutBy, dataArrayRows, Infinity);\n    }\n\n    dimensionsDetectedCount = dimensionsDefine ? dimensionsDefine.length : seriesLayoutBy === SERIES_LAYOUT_BY_ROW ? dataArrayRows.length : dataArrayRows[0] ? dataArrayRows[0].length : null;\n  } else if (sourceFormat === SOURCE_FORMAT_OBJECT_ROWS) {\n    if (!dimensionsDefine) {\n      dimensionsDefine = objectRowsCollectDimensions(data);\n    }\n  } else if (sourceFormat === SOURCE_FORMAT_KEYED_COLUMNS) {\n    if (!dimensionsDefine) {\n      dimensionsDefine = [];\n      each(data, function (colArr, key) {\n        dimensionsDefine.push(key);\n      });\n    }\n  } else if (sourceFormat === SOURCE_FORMAT_ORIGINAL) {\n    var value0 = getDataItemValue(data[0]);\n    dimensionsDetectedCount = isArray(value0) && value0.length || 1;\n  } else if (sourceFormat === SOURCE_FORMAT_TYPED_ARRAY) {\n    if (process.env.NODE_ENV !== 'production') {\n      assert(!!dimensionsDefine, 'dimensions must be given if data is TypedArray.');\n    }\n  }\n\n  return {\n    startIndex: startIndex,\n    dimensionsDefine: normalizeDimensionsOption(dimensionsDefine),\n    dimensionsDetectedCount: dimensionsDetectedCount\n  };\n}\n\nfunction objectRowsCollectDimensions(data) {\n  var firstIndex = 0;\n  var obj;\n\n  while (firstIndex < data.length && !(obj = data[firstIndex++])) {} // jshint ignore: line\n\n\n  if (obj) {\n    return keys(obj);\n  }\n} // Consider dimensions defined like ['A', 'price', 'B', 'price', 'C', 'price'],\n// which is reasonable. But dimension name is duplicated.\n// Returns undefined or an array contains only object without null/undefined or string.\n\n\nfunction normalizeDimensionsOption(dimensionsDefine) {\n  if (!dimensionsDefine) {\n    // The meaning of null/undefined is different from empty array.\n    return;\n  }\n\n  var nameMap = createHashMap();\n  return map(dimensionsDefine, function (rawItem, index) {\n    rawItem = isObject(rawItem) ? rawItem : {\n      name: rawItem\n    }; // Other fields will be discarded.\n\n    var item = {\n      name: rawItem.name,\n      displayName: rawItem.displayName,\n      type: rawItem.type\n    }; // User can set null in dimensions.\n    // We don't auto specify name, otherwise a given name may\n    // cause it to be referred unexpectedly.\n\n    if (item.name == null) {\n      return item;\n    } // Also consider number form like 2012.\n\n\n    item.name += ''; // User may also specify displayName.\n    // displayName will always exists except user not\n    // specified or dim name is not specified or detected.\n    // (A auto generated dim name will not be used as\n    // displayName).\n\n    if (item.displayName == null) {\n      item.displayName = item.name;\n    }\n\n    var exist = nameMap.get(item.name);\n\n    if (!exist) {\n      nameMap.set(item.name, {\n        count: 1\n      });\n    } else {\n      item.name += '-' + exist.count++;\n    }\n\n    return item;\n  });\n}\n\nfunction arrayRowsTravelFirst(cb, seriesLayoutBy, data, maxLoop) {\n  if (seriesLayoutBy === SERIES_LAYOUT_BY_ROW) {\n    for (var i = 0; i < data.length && i < maxLoop; i++) {\n      cb(data[i] ? data[i][0] : null, i);\n    }\n  } else {\n    var value0 = data[0] || [];\n\n    for (var i = 0; i < value0.length && i < maxLoop; i++) {\n      cb(value0[i], i);\n    }\n  }\n}\n\nexport function shouldRetrieveDataByName(source) {\n  var sourceFormat = source.sourceFormat;\n  return sourceFormat === SOURCE_FORMAT_OBJECT_ROWS || sourceFormat === SOURCE_FORMAT_KEYED_COLUMNS;\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nvar _a, _b, _c; // TODO\n// ??? refactor? check the outer usage of data provider.\n// merge with defaultDimValueGetter?\n\n\nimport { isTypedArray, extend, assert, each, isObject, bind } from 'zrender/lib/core/util.js';\nimport { getDataItemValue } from '../../util/model.js';\nimport { createSourceFromSeriesDataOption, isSourceInstance } from '../Source.js';\nimport { SOURCE_FORMAT_ORIGINAL, SOURCE_FORMAT_OBJECT_ROWS, SOURCE_FORMAT_KEYED_COLUMNS, SOURCE_FORMAT_TYPED_ARRAY, SOURCE_FORMAT_ARRAY_ROWS, SERIES_LAYOUT_BY_COLUMN, SERIES_LAYOUT_BY_ROW } from '../../util/types.js';\nvar providerMethods;\nvar mountMethods;\n/**\r\n * If normal array used, mutable chunk size is supported.\r\n * If typed array used, chunk size must be fixed.\r\n */\n\nvar DefaultDataProvider =\n/** @class */\nfunction () {\n  function DefaultDataProvider(sourceParam, dimSize) {\n    // let source: Source;\n    var source = !isSourceInstance(sourceParam) ? createSourceFromSeriesDataOption(sourceParam) : sourceParam; // declare source is Source;\n\n    this._source = source;\n    var data = this._data = source.data; // Typed array. TODO IE10+?\n\n    if (source.sourceFormat === SOURCE_FORMAT_TYPED_ARRAY) {\n      if (process.env.NODE_ENV !== 'production') {\n        if (dimSize == null) {\n          throw new Error('Typed array data must specify dimension size');\n        }\n      }\n\n      this._offset = 0;\n      this._dimSize = dimSize;\n      this._data = data;\n    }\n\n    mountMethods(this, data, source);\n  }\n\n  DefaultDataProvider.prototype.getSource = function () {\n    return this._source;\n  };\n\n  DefaultDataProvider.prototype.count = function () {\n    return 0;\n  };\n\n  DefaultDataProvider.prototype.getItem = function (idx, out) {\n    return;\n  };\n\n  DefaultDataProvider.prototype.appendData = function (newData) {};\n\n  DefaultDataProvider.prototype.clean = function () {};\n\n  DefaultDataProvider.protoInitialize = function () {\n    // PENDING: To avoid potential incompat (e.g., prototype\n    // is visited somewhere), still init them on prototype.\n    var proto = DefaultDataProvider.prototype;\n    proto.pure = false;\n    proto.persistent = true;\n  }();\n\n  DefaultDataProvider.internalField = function () {\n    var _a;\n\n    mountMethods = function (provider, data, source) {\n      var sourceFormat = source.sourceFormat;\n      var seriesLayoutBy = source.seriesLayoutBy;\n      var startIndex = source.startIndex;\n      var dimsDef = source.dimensionsDefine;\n      var methods = providerMethods[getMethodMapKey(sourceFormat, seriesLayoutBy)];\n\n      if (process.env.NODE_ENV !== 'production') {\n        assert(methods, 'Invalide sourceFormat: ' + sourceFormat);\n      }\n\n      extend(provider, methods);\n\n      if (sourceFormat === SOURCE_FORMAT_TYPED_ARRAY) {\n        provider.getItem = getItemForTypedArray;\n        provider.count = countForTypedArray;\n        provider.fillStorage = fillStorageForTypedArray;\n      } else {\n        var rawItemGetter = getRawSourceItemGetter(sourceFormat, seriesLayoutBy);\n        provider.getItem = bind(rawItemGetter, null, data, startIndex, dimsDef);\n        var rawCounter = getRawSourceDataCounter(sourceFormat, seriesLayoutBy);\n        provider.count = bind(rawCounter, null, data, startIndex, dimsDef);\n      }\n    };\n\n    var getItemForTypedArray = function (idx, out) {\n      idx = idx - this._offset;\n      out = out || [];\n      var data = this._data;\n      var dimSize = this._dimSize;\n      var offset = dimSize * idx;\n\n      for (var i = 0; i < dimSize; i++) {\n        out[i] = data[offset + i];\n      }\n\n      return out;\n    };\n\n    var fillStorageForTypedArray = function (start, end, storage, extent) {\n      var data = this._data;\n      var dimSize = this._dimSize;\n\n      for (var dim = 0; dim < dimSize; dim++) {\n        var dimExtent = extent[dim];\n        var min = dimExtent[0] == null ? Infinity : dimExtent[0];\n        var max = dimExtent[1] == null ? -Infinity : dimExtent[1];\n        var count = end - start;\n        var arr = storage[dim];\n\n        for (var i = 0; i < count; i++) {\n          // appendData with TypedArray will always do replace in provider.\n          var val = data[i * dimSize + dim];\n          arr[start + i] = val;\n          val < min && (min = val);\n          val > max && (max = val);\n        }\n\n        dimExtent[0] = min;\n        dimExtent[1] = max;\n      }\n    };\n\n    var countForTypedArray = function () {\n      return this._data ? this._data.length / this._dimSize : 0;\n    };\n\n    providerMethods = (_a = {}, _a[SOURCE_FORMAT_ARRAY_ROWS + '_' + SERIES_LAYOUT_BY_COLUMN] = {\n      pure: true,\n      appendData: appendDataSimply\n    }, _a[SOURCE_FORMAT_ARRAY_ROWS + '_' + SERIES_LAYOUT_BY_ROW] = {\n      pure: true,\n      appendData: function () {\n        throw new Error('Do not support appendData when set seriesLayoutBy: \"row\".');\n      }\n    }, _a[SOURCE_FORMAT_OBJECT_ROWS] = {\n      pure: true,\n      appendData: appendDataSimply\n    }, _a[SOURCE_FORMAT_KEYED_COLUMNS] = {\n      pure: true,\n      appendData: function (newData) {\n        var data = this._data;\n        each(newData, function (newCol, key) {\n          var oldCol = data[key] || (data[key] = []);\n\n          for (var i = 0; i < (newCol || []).length; i++) {\n            oldCol.push(newCol[i]);\n          }\n        });\n      }\n    }, _a[SOURCE_FORMAT_ORIGINAL] = {\n      appendData: appendDataSimply\n    }, _a[SOURCE_FORMAT_TYPED_ARRAY] = {\n      persistent: false,\n      pure: true,\n      appendData: function (newData) {\n        if (process.env.NODE_ENV !== 'production') {\n          assert(isTypedArray(newData), 'Added data must be TypedArray if data in initialization is TypedArray');\n        }\n\n        this._data = newData;\n      },\n      // Clean self if data is already used.\n      clean: function () {\n        // PENDING\n        this._offset += this.count();\n        this._data = null;\n      }\n    }, _a);\n\n    function appendDataSimply(newData) {\n      for (var i = 0; i < newData.length; i++) {\n        this._data.push(newData[i]);\n      }\n    }\n  }();\n\n  return DefaultDataProvider;\n}();\n\nexport { DefaultDataProvider };\n\nvar getItemSimply = function (rawData, startIndex, dimsDef, idx) {\n  return rawData[idx];\n};\n\nvar rawSourceItemGetterMap = (_a = {}, _a[SOURCE_FORMAT_ARRAY_ROWS + '_' + SERIES_LAYOUT_BY_COLUMN] = function (rawData, startIndex, dimsDef, idx) {\n  return rawData[idx + startIndex];\n}, _a[SOURCE_FORMAT_ARRAY_ROWS + '_' + SERIES_LAYOUT_BY_ROW] = function (rawData, startIndex, dimsDef, idx, out) {\n  idx += startIndex;\n  var item = out || [];\n  var data = rawData;\n\n  for (var i = 0; i < data.length; i++) {\n    var row = data[i];\n    item[i] = row ? row[idx] : null;\n  }\n\n  return item;\n}, _a[SOURCE_FORMAT_OBJECT_ROWS] = getItemSimply, _a[SOURCE_FORMAT_KEYED_COLUMNS] = function (rawData, startIndex, dimsDef, idx, out) {\n  var item = out || [];\n\n  for (var i = 0; i < dimsDef.length; i++) {\n    var dimName = dimsDef[i].name;\n\n    if (process.env.NODE_ENV !== 'production') {\n      if (dimName == null) {\n        throw new Error();\n      }\n    }\n\n    var col = rawData[dimName];\n    item[i] = col ? col[idx] : null;\n  }\n\n  return item;\n}, _a[SOURCE_FORMAT_ORIGINAL] = getItemSimply, _a);\nexport function getRawSourceItemGetter(sourceFormat, seriesLayoutBy) {\n  var method = rawSourceItemGetterMap[getMethodMapKey(sourceFormat, seriesLayoutBy)];\n\n  if (process.env.NODE_ENV !== 'production') {\n    assert(method, 'Do not support get item on \"' + sourceFormat + '\", \"' + seriesLayoutBy + '\".');\n  }\n\n  return method;\n}\n\nvar countSimply = function (rawData, startIndex, dimsDef) {\n  return rawData.length;\n};\n\nvar rawSourceDataCounterMap = (_b = {}, _b[SOURCE_FORMAT_ARRAY_ROWS + '_' + SERIES_LAYOUT_BY_COLUMN] = function (rawData, startIndex, dimsDef) {\n  return Math.max(0, rawData.length - startIndex);\n}, _b[SOURCE_FORMAT_ARRAY_ROWS + '_' + SERIES_LAYOUT_BY_ROW] = function (rawData, startIndex, dimsDef) {\n  var row = rawData[0];\n  return row ? Math.max(0, row.length - startIndex) : 0;\n}, _b[SOURCE_FORMAT_OBJECT_ROWS] = countSimply, _b[SOURCE_FORMAT_KEYED_COLUMNS] = function (rawData, startIndex, dimsDef) {\n  var dimName = dimsDef[0].name;\n\n  if (process.env.NODE_ENV !== 'production') {\n    if (dimName == null) {\n      throw new Error();\n    }\n  }\n\n  var col = rawData[dimName];\n  return col ? col.length : 0;\n}, _b[SOURCE_FORMAT_ORIGINAL] = countSimply, _b);\nexport function getRawSourceDataCounter(sourceFormat, seriesLayoutBy) {\n  var method = rawSourceDataCounterMap[getMethodMapKey(sourceFormat, seriesLayoutBy)];\n\n  if (process.env.NODE_ENV !== 'production') {\n    assert(method, 'Do not support count on \"' + sourceFormat + '\", \"' + seriesLayoutBy + '\".');\n  }\n\n  return method;\n}\n\nvar getRawValueSimply = function (dataItem, dimIndex, property) {\n  return dataItem[dimIndex];\n};\n\nvar rawSourceValueGetterMap = (_c = {}, _c[SOURCE_FORMAT_ARRAY_ROWS] = getRawValueSimply, _c[SOURCE_FORMAT_OBJECT_ROWS] = function (dataItem, dimIndex, property) {\n  return dataItem[property];\n}, _c[SOURCE_FORMAT_KEYED_COLUMNS] = getRawValueSimply, _c[SOURCE_FORMAT_ORIGINAL] = function (dataItem, dimIndex, property) {\n  // FIXME: In some case (markpoint in geo (geo-map.html)),\n  // dataItem is {coord: [...]}\n  var value = getDataItemValue(dataItem);\n  return !(value instanceof Array) ? value : value[dimIndex];\n}, _c[SOURCE_FORMAT_TYPED_ARRAY] = getRawValueSimply, _c);\nexport function getRawSourceValueGetter(sourceFormat) {\n  var method = rawSourceValueGetterMap[sourceFormat];\n\n  if (process.env.NODE_ENV !== 'production') {\n    assert(method, 'Do not support get value on \"' + sourceFormat + '\".');\n  }\n\n  return method;\n}\n\nfunction getMethodMapKey(sourceFormat, seriesLayoutBy) {\n  return sourceFormat === SOURCE_FORMAT_ARRAY_ROWS ? sourceFormat + '_' + seriesLayoutBy : sourceFormat;\n} // ??? FIXME can these logic be more neat: getRawValue, getRawDataItem,\n// Consider persistent.\n// Caution: why use raw value to display on label or tooltip?\n// A reason is to avoid format. For example time value we do not know\n// how to format is expected. More over, if stack is used, calculated\n// value may be 0.91000000001, which have brings trouble to display.\n// TODO: consider how to treat null/undefined/NaN when display?\n\n\nexport function retrieveRawValue(data, dataIndex, // If dimIndex is null/undefined, return OptionDataItem.\n// Otherwise, return OptionDataValue.\ndim) {\n  if (!data) {\n    return;\n  } // Consider data may be not persistent.\n\n\n  var dataItem = data.getRawDataItem(dataIndex);\n\n  if (dataItem == null) {\n    return;\n  }\n\n  var store = data.getStore();\n  var sourceFormat = store.getSource().sourceFormat;\n\n  if (dim != null) {\n    var dimIndex = data.getDimensionIndex(dim);\n    var property = store.getDimensionProperty(dimIndex);\n    return getRawSourceValueGetter(sourceFormat)(dataItem, dimIndex, property);\n  } else {\n    var result = dataItem;\n\n    if (sourceFormat === SOURCE_FORMAT_ORIGINAL) {\n      result = getDataItemValue(dataItem);\n    }\n\n    return result;\n  }\n}\n/**\r\n * Compatible with some cases (in pie, map) like:\r\n * data: [{name: 'xx', value: 5, selected: true}, ...]\r\n * where only sourceFormat is 'original' and 'objectRows' supported.\r\n *\r\n * // TODO\r\n * Supported detail options in data item when using 'arrayRows'.\r\n *\r\n * @param data\r\n * @param dataIndex\r\n * @param attr like 'selected'\r\n */\n\nexport function retrieveRawAttr(data, dataIndex, attr) {\n  if (!data) {\n    return;\n  }\n\n  var sourceFormat = data.getStore().getSource().sourceFormat;\n\n  if (sourceFormat !== SOURCE_FORMAT_ORIGINAL && sourceFormat !== SOURCE_FORMAT_OBJECT_ROWS) {\n    return;\n  }\n\n  var dataItem = data.getRawDataItem(dataIndex);\n\n  if (sourceFormat === SOURCE_FORMAT_ORIGINAL && !isObject(dataItem)) {\n    dataItem = null;\n  }\n\n  if (dataItem) {\n    return dataItem[attr];\n  }\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport * as zrUtil from 'zrender/lib/core/util.js';\nimport { retrieveRawValue } from '../../data/helper/dataProvider.js';\nimport { formatTpl } from '../../util/format.js';\nimport { error, makePrintable } from '../../util/log.js';\nvar DIMENSION_LABEL_REG = /\\{@(.+?)\\}/g;\n\nvar DataFormatMixin =\n/** @class */\nfunction () {\n  function DataFormatMixin() {}\n  /**\r\n   * Get params for formatter\r\n   */\n\n\n  DataFormatMixin.prototype.getDataParams = function (dataIndex, dataType) {\n    var data = this.getData(dataType);\n    var rawValue = this.getRawValue(dataIndex, dataType);\n    var rawDataIndex = data.getRawIndex(dataIndex);\n    var name = data.getName(dataIndex);\n    var itemOpt = data.getRawDataItem(dataIndex);\n    var style = data.getItemVisual(dataIndex, 'style');\n    var color = style && style[data.getItemVisual(dataIndex, 'drawType') || 'fill'];\n    var borderColor = style && style.stroke;\n    var mainType = this.mainType;\n    var isSeries = mainType === 'series';\n    var userOutput = data.userOutput && data.userOutput.get();\n    return {\n      componentType: mainType,\n      componentSubType: this.subType,\n      componentIndex: this.componentIndex,\n      seriesType: isSeries ? this.subType : null,\n      seriesIndex: this.seriesIndex,\n      seriesId: isSeries ? this.id : null,\n      seriesName: isSeries ? this.name : null,\n      name: name,\n      dataIndex: rawDataIndex,\n      data: itemOpt,\n      dataType: dataType,\n      value: rawValue,\n      color: color,\n      borderColor: borderColor,\n      dimensionNames: userOutput ? userOutput.fullDimensions : null,\n      encode: userOutput ? userOutput.encode : null,\n      // Param name list for mapping `a`, `b`, `c`, `d`, `e`\n      $vars: ['seriesName', 'name', 'value']\n    };\n  };\n  /**\r\n   * Format label\r\n   * @param dataIndex\r\n   * @param status 'normal' by default\r\n   * @param dataType\r\n   * @param labelDimIndex Only used in some chart that\r\n   *        use formatter in different dimensions, like radar.\r\n   * @param formatter Formatter given outside.\r\n   * @return return null/undefined if no formatter\r\n   */\n\n\n  DataFormatMixin.prototype.getFormattedLabel = function (dataIndex, status, dataType, labelDimIndex, formatter, extendParams) {\n    status = status || 'normal';\n    var data = this.getData(dataType);\n    var params = this.getDataParams(dataIndex, dataType);\n\n    if (extendParams) {\n      params.value = extendParams.interpolatedValue;\n    }\n\n    if (labelDimIndex != null && zrUtil.isArray(params.value)) {\n      params.value = params.value[labelDimIndex];\n    }\n\n    if (!formatter) {\n      var itemModel = data.getItemModel(dataIndex); // @ts-ignore\n\n      formatter = itemModel.get(status === 'normal' ? ['label', 'formatter'] : [status, 'label', 'formatter']);\n    }\n\n    if (zrUtil.isFunction(formatter)) {\n      params.status = status;\n      params.dimensionIndex = labelDimIndex;\n      return formatter(params);\n    } else if (zrUtil.isString(formatter)) {\n      var str = formatTpl(formatter, params); // Support 'aaa{@[3]}bbb{@product}ccc'.\n      // Do not support '}' in dim name util have to.\n\n      return str.replace(DIMENSION_LABEL_REG, function (origin, dimStr) {\n        var len = dimStr.length;\n        var dimLoose = dimStr;\n\n        if (dimLoose.charAt(0) === '[' && dimLoose.charAt(len - 1) === ']') {\n          dimLoose = +dimLoose.slice(1, len - 1); // Also support: '[]' => 0\n\n          if (process.env.NODE_ENV !== 'production') {\n            if (isNaN(dimLoose)) {\n              error(\"Invalide label formatter: @\" + dimStr + \", only support @[0], @[1], @[2], ...\");\n            }\n          }\n        }\n\n        var val = retrieveRawValue(data, dataIndex, dimLoose);\n\n        if (extendParams && zrUtil.isArray(extendParams.interpolatedValue)) {\n          var dimIndex = data.getDimensionIndex(dimLoose);\n\n          if (dimIndex >= 0) {\n            val = extendParams.interpolatedValue[dimIndex];\n          }\n        }\n\n        return val != null ? val + '' : '';\n      });\n    }\n  };\n  /**\r\n   * Get raw value in option\r\n   */\n\n\n  DataFormatMixin.prototype.getRawValue = function (idx, dataType) {\n    return retrieveRawValue(this.getData(dataType), idx);\n  };\n  /**\r\n   * Should be implemented.\r\n   * @param {number} dataIndex\r\n   * @param {boolean} [multipleSeries=false]\r\n   * @param {string} [dataType]\r\n   */\n\n\n  DataFormatMixin.prototype.formatTooltip = function (dataIndex, multipleSeries, dataType) {\n    // Empty function\n    return;\n  };\n\n  return DataFormatMixin;\n}();\n\nexport { DataFormatMixin };\n; // PENDING: previously we accept this type when calling `formatTooltip`,\n// but guess little chance has been used outside. Do we need to backward\n// compat it?\n// type TooltipFormatResultLegacyObject = {\n//     // `html` means the markup language text, either in 'html' or 'richText'.\n//     // The name `html` is not appropriate because in 'richText' it is not a HTML\n//     // string. But still support it for backward compatibility.\n//     html: string;\n//     markers: Dictionary<ColorString>;\n// };\n\n/**\r\n * For backward compat, normalize the return from `formatTooltip`.\r\n */\n\nexport function normalizeTooltipFormatResult(result) {\n  var markupText; // let markers: Dictionary<ColorString>;\n\n  var markupFragment;\n\n  if (zrUtil.isObject(result)) {\n    if (result.type) {\n      markupFragment = result;\n    } else {\n      if (process.env.NODE_ENV !== 'production') {\n        console.warn('The return type of `formatTooltip` is not supported: ' + makePrintable(result));\n      }\n    } // else {\n    //     markupText = (result as TooltipFormatResultLegacyObject).html;\n    //     markers = (result as TooltipFormatResultLegacyObject).markers;\n    //     if (markersExisting) {\n    //         markers = zrUtil.merge(markersExisting, markers);\n    //     }\n    // }\n\n  } else {\n    markupText = result;\n  }\n\n  return {\n    text: markupText,\n    // markers: markers || markersExisting,\n    frag: markupFragment\n  };\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { assert, isArray } from 'zrender/lib/core/util.js';\n;\n/**\r\n * @param {Object} define\r\n * @return See the return of `createTask`.\r\n */\n\nexport function createTask(define) {\n  return new Task(define);\n}\n\nvar Task =\n/** @class */\nfunction () {\n  function Task(define) {\n    define = define || {};\n    this._reset = define.reset;\n    this._plan = define.plan;\n    this._count = define.count;\n    this._onDirty = define.onDirty;\n    this._dirty = true;\n  }\n  /**\r\n   * @param step Specified step.\r\n   * @param skip Skip customer perform call.\r\n   * @param modBy Sampling window size.\r\n   * @param modDataCount Sampling count.\r\n   * @return whether unfinished.\r\n   */\n\n\n  Task.prototype.perform = function (performArgs) {\n    var upTask = this._upstream;\n    var skip = performArgs && performArgs.skip; // TODO some refactor.\n    // Pull data. Must pull data each time, because context.data\n    // may be updated by Series.setData.\n\n    if (this._dirty && upTask) {\n      var context = this.context;\n      context.data = context.outputData = upTask.context.outputData;\n    }\n\n    if (this.__pipeline) {\n      this.__pipeline.currentTask = this;\n    }\n\n    var planResult;\n\n    if (this._plan && !skip) {\n      planResult = this._plan(this.context);\n    } // Support sharding by mod, which changes the render sequence and makes the rendered graphic\n    // elements uniformed distributed when progress, especially when moving or zooming.\n\n\n    var lastModBy = normalizeModBy(this._modBy);\n    var lastModDataCount = this._modDataCount || 0;\n    var modBy = normalizeModBy(performArgs && performArgs.modBy);\n    var modDataCount = performArgs && performArgs.modDataCount || 0;\n\n    if (lastModBy !== modBy || lastModDataCount !== modDataCount) {\n      planResult = 'reset';\n    }\n\n    function normalizeModBy(val) {\n      !(val >= 1) && (val = 1); // jshint ignore:line\n\n      return val;\n    }\n\n    var forceFirstProgress;\n\n    if (this._dirty || planResult === 'reset') {\n      this._dirty = false;\n      forceFirstProgress = this._doReset(skip);\n    }\n\n    this._modBy = modBy;\n    this._modDataCount = modDataCount;\n    var step = performArgs && performArgs.step;\n\n    if (upTask) {\n      if (process.env.NODE_ENV !== 'production') {\n        assert(upTask._outputDueEnd != null);\n      }\n\n      this._dueEnd = upTask._outputDueEnd;\n    } // DataTask or overallTask\n    else {\n        if (process.env.NODE_ENV !== 'production') {\n          assert(!this._progress || this._count);\n        }\n\n        this._dueEnd = this._count ? this._count(this.context) : Infinity;\n      } // Note: Stubs, that its host overall task let it has progress, has progress.\n    // If no progress, pass index from upstream to downstream each time plan called.\n\n\n    if (this._progress) {\n      var start = this._dueIndex;\n      var end = Math.min(step != null ? this._dueIndex + step : Infinity, this._dueEnd);\n\n      if (!skip && (forceFirstProgress || start < end)) {\n        var progress = this._progress;\n\n        if (isArray(progress)) {\n          for (var i = 0; i < progress.length; i++) {\n            this._doProgress(progress[i], start, end, modBy, modDataCount);\n          }\n        } else {\n          this._doProgress(progress, start, end, modBy, modDataCount);\n        }\n      }\n\n      this._dueIndex = end; // If no `outputDueEnd`, assume that output data and\n      // input data is the same, so use `dueIndex` as `outputDueEnd`.\n\n      var outputDueEnd = this._settedOutputEnd != null ? this._settedOutputEnd : end;\n\n      if (process.env.NODE_ENV !== 'production') {\n        // ??? Can not rollback.\n        assert(outputDueEnd >= this._outputDueEnd);\n      }\n\n      this._outputDueEnd = outputDueEnd;\n    } else {\n      // (1) Some overall task has no progress.\n      // (2) Stubs, that its host overall task do not let it has progress, has no progress.\n      // This should always be performed so it can be passed to downstream.\n      this._dueIndex = this._outputDueEnd = this._settedOutputEnd != null ? this._settedOutputEnd : this._dueEnd;\n    }\n\n    return this.unfinished();\n  };\n\n  Task.prototype.dirty = function () {\n    this._dirty = true;\n    this._onDirty && this._onDirty(this.context);\n  };\n\n  Task.prototype._doProgress = function (progress, start, end, modBy, modDataCount) {\n    iterator.reset(start, end, modBy, modDataCount);\n    this._callingProgress = progress;\n\n    this._callingProgress({\n      start: start,\n      end: end,\n      count: end - start,\n      next: iterator.next\n    }, this.context);\n  };\n\n  Task.prototype._doReset = function (skip) {\n    this._dueIndex = this._outputDueEnd = this._dueEnd = 0;\n    this._settedOutputEnd = null;\n    var progress;\n    var forceFirstProgress;\n\n    if (!skip && this._reset) {\n      progress = this._reset(this.context);\n\n      if (progress && progress.progress) {\n        forceFirstProgress = progress.forceFirstProgress;\n        progress = progress.progress;\n      } // To simplify no progress checking, array must has item.\n\n\n      if (isArray(progress) && !progress.length) {\n        progress = null;\n      }\n    }\n\n    this._progress = progress;\n    this._modBy = this._modDataCount = null;\n    var downstream = this._downstream;\n    downstream && downstream.dirty();\n    return forceFirstProgress;\n  };\n\n  Task.prototype.unfinished = function () {\n    return this._progress && this._dueIndex < this._dueEnd;\n  };\n  /**\r\n   * @param downTask The downstream task.\r\n   * @return The downstream task.\r\n   */\n\n\n  Task.prototype.pipe = function (downTask) {\n    if (process.env.NODE_ENV !== 'production') {\n      assert(downTask && !downTask._disposed && downTask !== this);\n    } // If already downstream, do not dirty downTask.\n\n\n    if (this._downstream !== downTask || this._dirty) {\n      this._downstream = downTask;\n      downTask._upstream = this;\n      downTask.dirty();\n    }\n  };\n\n  Task.prototype.dispose = function () {\n    if (this._disposed) {\n      return;\n    }\n\n    this._upstream && (this._upstream._downstream = null);\n    this._downstream && (this._downstream._upstream = null);\n    this._dirty = false;\n    this._disposed = true;\n  };\n\n  Task.prototype.getUpstream = function () {\n    return this._upstream;\n  };\n\n  Task.prototype.getDownstream = function () {\n    return this._downstream;\n  };\n\n  Task.prototype.setOutputEnd = function (end) {\n    // This only happens in dataTask, dataZoom, map, currently.\n    // where dataZoom do not set end each time, but only set\n    // when reset. So we should record the set end, in case\n    // that the stub of dataZoom perform again and earse the\n    // set end by upstream.\n    this._outputDueEnd = this._settedOutputEnd = end;\n  };\n\n  return Task;\n}();\n\nexport { Task };\n\nvar iterator = function () {\n  var end;\n  var current;\n  var modBy;\n  var modDataCount;\n  var winCount;\n  var it = {\n    reset: function (s, e, sStep, sCount) {\n      current = s;\n      end = e;\n      modBy = sStep;\n      modDataCount = sCount;\n      winCount = Math.ceil(modDataCount / modBy);\n      it.next = modBy > 1 && modDataCount > 0 ? modNext : sequentialNext;\n    }\n  };\n  return it;\n\n  function sequentialNext() {\n    return current < end ? current++ : null;\n  }\n\n  function modNext() {\n    var dataIndex = current % winCount * modBy + Math.ceil(current / winCount);\n    var result = current >= end ? null : dataIndex < modDataCount ? dataIndex // If modDataCount is smaller than data.count() (consider `appendData` case),\n    // Use normal linear rendering mode.\n    : current;\n    current++;\n    return result;\n  }\n}(); // -----------------------------------------------------------------------------\n// For stream debug (Should be commented out after used!)\n// @usage: printTask(this, 'begin');\n// @usage: printTask(this, null, {someExtraProp});\n// @usage: Use `__idxInPipeline` as conditional breakpiont.\n//\n// window.printTask = function (task: any, prefix: string, extra: { [key: string]: unknown }): void {\n//     window.ecTaskUID == null && (window.ecTaskUID = 0);\n//     task.uidDebug == null && (task.uidDebug = `task_${window.ecTaskUID++}`);\n//     task.agent && task.agent.uidDebug == null && (task.agent.uidDebug = `task_${window.ecTaskUID++}`);\n//     let props = [];\n//     if (task.__pipeline) {\n//         let val = `${task.__idxInPipeline}/${task.__pipeline.tail.__idxInPipeline} ${task.agent ? '(stub)' : ''}`;\n//         props.push({text: '__idxInPipeline/total', value: val});\n//     } else {\n//         let stubCount = 0;\n//         task.agentStubMap.each(() => stubCount++);\n//         props.push({text: 'idx', value: `overall (stubs: ${stubCount})`});\n//     }\n//     props.push({text: 'uid', value: task.uidDebug});\n//     if (task.__pipeline) {\n//         props.push({text: 'pipelineId', value: task.__pipeline.id});\n//         task.agent && props.push(\n//             {text: 'stubFor', value: task.agent.uidDebug}\n//         );\n//     }\n//     props.push(\n//         {text: 'dirty', value: task._dirty},\n//         {text: 'dueIndex', value: task._dueIndex},\n//         {text: 'dueEnd', value: task._dueEnd},\n//         {text: 'outputDueEnd', value: task._outputDueEnd}\n//     );\n//     if (extra) {\n//         Object.keys(extra).forEach(key => {\n//             props.push({text: key, value: extra[key]});\n//         });\n//     }\n//     let args = ['color: blue'];\n//     let msg = `%c[${prefix || 'T'}] %c` + props.map(item => (\n//         args.push('color: green', 'color: red'),\n//         `${item.text}: %c${item.value}`\n//     )).join('%c, ');\n//     console.log.apply(console, [msg].concat(args));\n//     // console.log(this);\n// };\n// window.printPipeline = function (task: any, prefix: string) {\n//     const pipeline = task.__pipeline;\n//     let currTask = pipeline.head;\n//     while (currTask) {\n//         window.printTask(currTask, prefix);\n//         currTask = currTask._downstream;\n//     }\n// };\n// window.showChain = function (chainHeadTask) {\n//     var chain = [];\n//     var task = chainHeadTask;\n//     while (task) {\n//         chain.push({\n//             task: task,\n//             up: task._upstream,\n//             down: task._downstream,\n//             idxInPipeline: task.__idxInPipeline\n//         });\n//         task = task._downstream;\n//     }\n//     return chain;\n// };\n// window.findTaskInChain = function (task, chainHeadTask) {\n//     let chain = window.showChain(chainHeadTask);\n//     let result = [];\n//     for (let i = 0; i < chain.length; i++) {\n//         let chainItem = chain[i];\n//         if (chainItem.task === task) {\n//             result.push(i);\n//         }\n//     }\n//     return result;\n// };\n// window.printChainAEachInChainB = function (chainHeadTaskA, chainHeadTaskB) {\n//     let chainA = window.showChain(chainHeadTaskA);\n//     for (let i = 0; i < chainA.length; i++) {\n//         console.log('chainAIdx:', i, 'inChainB:', window.findTaskInChain(chainA[i].task, chainHeadTaskB));\n//     }\n// };","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { map, isString, isFunction, eqNaN, isRegExp } from 'zrender/lib/core/util.js';\nvar ECHARTS_PREFIX = '[ECharts] ';\nvar storedLogs = {};\nvar hasConsole = typeof console !== 'undefined' // eslint-disable-next-line\n&& console.warn && console.log;\n\nfunction outputLog(type, str, onlyOnce) {\n  if (hasConsole) {\n    if (onlyOnce) {\n      if (storedLogs[str]) {\n        return;\n      }\n\n      storedLogs[str] = true;\n    } // eslint-disable-next-line\n\n\n    console[type](ECHARTS_PREFIX + str);\n  }\n}\n\nexport function log(str, onlyOnce) {\n  outputLog('log', str, onlyOnce);\n}\nexport function warn(str, onlyOnce) {\n  outputLog('warn', str, onlyOnce);\n}\nexport function error(str, onlyOnce) {\n  outputLog('error', str, onlyOnce);\n}\nexport function deprecateLog(str) {\n  if (process.env.NODE_ENV !== 'production') {\n    // Not display duplicate message.\n    outputLog('warn', 'DEPRECATED: ' + str, true);\n  }\n}\nexport function deprecateReplaceLog(oldOpt, newOpt, scope) {\n  if (process.env.NODE_ENV !== 'production') {\n    deprecateLog((scope ? \"[\" + scope + \"]\" : '') + (oldOpt + \" is deprecated, use \" + newOpt + \" instead.\"));\n  }\n}\n/**\r\n * If in __DEV__ environment, get console printable message for users hint.\r\n * Parameters are separated by ' '.\r\n * @usage\r\n * makePrintable('This is an error on', someVar, someObj);\r\n *\r\n * @param hintInfo anything about the current execution context to hint users.\r\n * @throws Error\r\n */\n\nexport function makePrintable() {\n  var hintInfo = [];\n\n  for (var _i = 0; _i < arguments.length; _i++) {\n    hintInfo[_i] = arguments[_i];\n  }\n\n  var msg = '';\n\n  if (process.env.NODE_ENV !== 'production') {\n    // Fuzzy stringify for print.\n    // This code only exist in dev environment.\n    var makePrintableStringIfPossible_1 = function (val) {\n      return val === void 0 ? 'undefined' : val === Infinity ? 'Infinity' : val === -Infinity ? '-Infinity' : eqNaN(val) ? 'NaN' : val instanceof Date ? 'Date(' + val.toISOString() + ')' : isFunction(val) ? 'function () { ... }' : isRegExp(val) ? val + '' : null;\n    };\n\n    msg = map(hintInfo, function (arg) {\n      if (isString(arg)) {\n        // Print without quotation mark for some statement.\n        return arg;\n      } else {\n        var printableStr = makePrintableStringIfPossible_1(arg);\n\n        if (printableStr != null) {\n          return printableStr;\n        } else if (typeof JSON !== 'undefined' && JSON.stringify) {\n          try {\n            return JSON.stringify(arg, function (n, val) {\n              var printableStr = makePrintableStringIfPossible_1(val);\n              return printableStr == null ? val : printableStr;\n            }); // In most cases the info object is small, so do not line break.\n          } catch (err) {\n            return '?';\n          }\n        } else {\n          return '?';\n        }\n      }\n    }).join(' ');\n  }\n\n  return msg;\n}\n/**\r\n * @throws Error\r\n */\n\nexport function throwError(msg) {\n  throw new Error(msg);\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { parseDate, numericToNumber } from '../../util/number.js';\nimport { createHashMap, trim, hasOwn, isString, isNumber } from 'zrender/lib/core/util.js';\nimport { throwError } from '../../util/log.js';\n/**\r\n * Convert raw the value in to inner value in List.\r\n *\r\n * [Performance sensitive]\r\n *\r\n * [Caution]: this is the key logic of user value parser.\r\n * For backward compatibility, do not modify it until you have to!\r\n */\n\nexport function parseDataValue(value, // For high performance, do not omit the second param.\nopt) {\n  // Performance sensitive.\n  var dimType = opt && opt.type;\n\n  if (dimType === 'ordinal') {\n    // If given value is a category string\n    return value;\n  }\n\n  if (dimType === 'time' // spead up when using timestamp\n  && !isNumber(value) && value != null && value !== '-') {\n    value = +parseDate(value);\n  } // dimType defaults 'number'.\n  // If dimType is not ordinal and value is null or undefined or NaN or '-',\n  // parse to NaN.\n  // number-like string (like ' 123 ') can be converted to a number.\n  // where null/undefined or other string will be converted to NaN.\n\n\n  return value == null || value === '' ? NaN // If string (like '-'), using '+' parse to NaN\n  // If object, also parse to NaN\n  : +value;\n}\n;\nvar valueParserMap = createHashMap({\n  'number': function (val) {\n    // Do not use `numericToNumber` here. We have `numericToNumber` by default.\n    // Here the number parser can have loose rule:\n    // enable to cut suffix: \"120px\" => 120, \"14%\" => 14.\n    return parseFloat(val);\n  },\n  'time': function (val) {\n    // return timestamp.\n    return +parseDate(val);\n  },\n  'trim': function (val) {\n    return isString(val) ? trim(val) : val;\n  }\n});\nexport function getRawValueParser(type) {\n  return valueParserMap.get(type);\n}\nvar ORDER_COMPARISON_OP_MAP = {\n  lt: function (lval, rval) {\n    return lval < rval;\n  },\n  lte: function (lval, rval) {\n    return lval <= rval;\n  },\n  gt: function (lval, rval) {\n    return lval > rval;\n  },\n  gte: function (lval, rval) {\n    return lval >= rval;\n  }\n};\n\nvar FilterOrderComparator =\n/** @class */\nfunction () {\n  function FilterOrderComparator(op, rval) {\n    if (!isNumber(rval)) {\n      var errMsg = '';\n\n      if (process.env.NODE_ENV !== 'production') {\n        errMsg = 'rvalue of \"<\", \">\", \"<=\", \">=\" can only be number in filter.';\n      }\n\n      throwError(errMsg);\n    }\n\n    this._opFn = ORDER_COMPARISON_OP_MAP[op];\n    this._rvalFloat = numericToNumber(rval);\n  } // Performance sensitive.\n\n\n  FilterOrderComparator.prototype.evaluate = function (lval) {\n    // Most cases is 'number', and typeof maybe 10 times faseter than parseFloat.\n    return isNumber(lval) ? this._opFn(lval, this._rvalFloat) : this._opFn(numericToNumber(lval), this._rvalFloat);\n  };\n\n  return FilterOrderComparator;\n}();\n\nvar SortOrderComparator =\n/** @class */\nfunction () {\n  /**\r\n   * @param order by default: 'asc'\r\n   * @param incomparable by default: Always on the tail.\r\n   *        That is, if 'asc' => 'max', if 'desc' => 'min'\r\n   *        See the definition of \"incomparable\" in [SORT_COMPARISON_RULE].\r\n   */\n  function SortOrderComparator(order, incomparable) {\n    var isDesc = order === 'desc';\n    this._resultLT = isDesc ? 1 : -1;\n\n    if (incomparable == null) {\n      incomparable = isDesc ? 'min' : 'max';\n    }\n\n    this._incomparable = incomparable === 'min' ? -Infinity : Infinity;\n  } // See [SORT_COMPARISON_RULE].\n  // Performance sensitive.\n\n\n  SortOrderComparator.prototype.evaluate = function (lval, rval) {\n    // Most cases is 'number', and typeof maybe 10 times faseter than parseFloat.\n    var lvalFloat = isNumber(lval) ? lval : numericToNumber(lval);\n    var rvalFloat = isNumber(rval) ? rval : numericToNumber(rval);\n    var lvalNotNumeric = isNaN(lvalFloat);\n    var rvalNotNumeric = isNaN(rvalFloat);\n\n    if (lvalNotNumeric) {\n      lvalFloat = this._incomparable;\n    }\n\n    if (rvalNotNumeric) {\n      rvalFloat = this._incomparable;\n    }\n\n    if (lvalNotNumeric && rvalNotNumeric) {\n      var lvalIsStr = isString(lval);\n      var rvalIsStr = isString(rval);\n\n      if (lvalIsStr) {\n        lvalFloat = rvalIsStr ? lval : 0;\n      }\n\n      if (rvalIsStr) {\n        rvalFloat = lvalIsStr ? rval : 0;\n      }\n    }\n\n    return lvalFloat < rvalFloat ? this._resultLT : lvalFloat > rvalFloat ? -this._resultLT : 0;\n  };\n\n  return SortOrderComparator;\n}();\n\nexport { SortOrderComparator };\n\nvar FilterEqualityComparator =\n/** @class */\nfunction () {\n  function FilterEqualityComparator(isEq, rval) {\n    this._rval = rval;\n    this._isEQ = isEq;\n    this._rvalTypeof = typeof rval;\n    this._rvalFloat = numericToNumber(rval);\n  } // Performance sensitive.\n\n\n  FilterEqualityComparator.prototype.evaluate = function (lval) {\n    var eqResult = lval === this._rval;\n\n    if (!eqResult) {\n      var lvalTypeof = typeof lval;\n\n      if (lvalTypeof !== this._rvalTypeof && (lvalTypeof === 'number' || this._rvalTypeof === 'number')) {\n        eqResult = numericToNumber(lval) === this._rvalFloat;\n      }\n    }\n\n    return this._isEQ ? eqResult : !eqResult;\n  };\n\n  return FilterEqualityComparator;\n}();\n/**\r\n * [FILTER_COMPARISON_RULE]\r\n * `lt`|`lte`|`gt`|`gte`:\r\n * + rval must be a number. And lval will be converted to number (`numericToNumber`) to compare.\r\n * `eq`:\r\n * + If same type, compare with `===`.\r\n * + If there is one number, convert to number (`numericToNumber`) to compare.\r\n * + Else return `false`.\r\n * `ne`:\r\n * + Not `eq`.\r\n *\r\n *\r\n * [SORT_COMPARISON_RULE]\r\n * All the values are grouped into three categories:\r\n * + \"numeric\" (number and numeric string)\r\n * + \"non-numeric-string\" (string that excluding numeric string)\r\n * + \"others\"\r\n * \"numeric\" vs \"numeric\": values are ordered by number order.\r\n * \"non-numeric-string\" vs \"non-numeric-string\": values are ordered by ES spec (#sec-abstract-relational-comparison).\r\n * \"others\" vs \"others\": do not change order (always return 0).\r\n * \"numeric\" vs \"non-numeric-string\": \"non-numeric-string\" is treated as \"incomparable\".\r\n * \"number\" vs \"others\": \"others\" is treated as \"incomparable\".\r\n * \"non-numeric-string\" vs \"others\": \"others\" is treated as \"incomparable\".\r\n * \"incomparable\" will be seen as -Infinity or Infinity (depends on the settings).\r\n * MEMO:\r\n *   Non-numeric string sort makes sense when we need to put the items with the same tag together.\r\n *   But if we support string sort, we still need to avoid the misleading like `'2' > '12'`,\r\n *   So we treat \"numeric-string\" sorted by number order rather than string comparison.\r\n *\r\n *\r\n * [CHECK_LIST_OF_THE_RULE_DESIGN]\r\n * + Do not support string comparison until required. And also need to\r\n *   avoid the misleading of \"2\" > \"12\".\r\n * + Should avoid the misleading case:\r\n *   `\" 22 \" gte \"22\"` is `true` but `\" 22 \" eq \"22\"` is `false`.\r\n * + JS bad case should be avoided: null <= 0, [] <= 0, ' ' <= 0, ...\r\n * + Only \"numeric\" can be converted to comparable number, otherwise converted to NaN.\r\n *   See `util/number.ts#numericToNumber`.\r\n *\r\n * @return If `op` is not `RelationalOperator`, return null;\r\n */\n\n\nexport function createFilterComparator(op, rval) {\n  return op === 'eq' || op === 'ne' ? new FilterEqualityComparator(op === 'eq', rval) : hasOwn(ORDER_COMPARISON_OP_MAP, op) ? new FilterOrderComparator(op, rval) : null;\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { SERIES_LAYOUT_BY_COLUMN, SOURCE_FORMAT_OBJECT_ROWS, SOURCE_FORMAT_ARRAY_ROWS } from '../../util/types.js';\nimport { normalizeToArray } from '../../util/model.js';\nimport { createHashMap, bind, each, hasOwn, map, clone, isObject, extend, isNumber } from 'zrender/lib/core/util.js';\nimport { getRawSourceItemGetter, getRawSourceDataCounter, getRawSourceValueGetter } from './dataProvider.js';\nimport { parseDataValue } from './dataValueHelper.js';\nimport { log, makePrintable, throwError } from '../../util/log.js';\nimport { createSource, detectSourceFormat } from '../Source.js';\n/**\r\n * TODO: disable writable.\r\n * This structure will be exposed to users.\r\n */\n\nvar ExternalSource =\n/** @class */\nfunction () {\n  function ExternalSource() {}\n\n  ExternalSource.prototype.getRawData = function () {\n    // Only built-in transform available.\n    throw new Error('not supported');\n  };\n\n  ExternalSource.prototype.getRawDataItem = function (dataIndex) {\n    // Only built-in transform available.\n    throw new Error('not supported');\n  };\n\n  ExternalSource.prototype.cloneRawData = function () {\n    return;\n  };\n  /**\r\n   * @return If dimension not found, return null/undefined.\r\n   */\n\n\n  ExternalSource.prototype.getDimensionInfo = function (dim) {\n    return;\n  };\n  /**\r\n   * dimensions defined if and only if either:\r\n   * (a) dataset.dimensions are declared.\r\n   * (b) dataset data include dimensions definitions in data (detected or via specified `sourceHeader`).\r\n   * If dimensions are defined, `dimensionInfoAll` is corresponding to\r\n   * the defined dimensions.\r\n   * Otherwise, `dimensionInfoAll` is determined by data columns.\r\n   * @return Always return an array (even empty array).\r\n   */\n\n\n  ExternalSource.prototype.cloneAllDimensionInfo = function () {\n    return;\n  };\n\n  ExternalSource.prototype.count = function () {\n    return;\n  };\n  /**\r\n   * Only support by dimension index.\r\n   * No need to support by dimension name in transform function,\r\n   * because transform function is not case-specific, no need to use name literally.\r\n   */\n\n\n  ExternalSource.prototype.retrieveValue = function (dataIndex, dimIndex) {\n    return;\n  };\n\n  ExternalSource.prototype.retrieveValueFromItem = function (dataItem, dimIndex) {\n    return;\n  };\n\n  ExternalSource.prototype.convertValue = function (rawVal, dimInfo) {\n    return parseDataValue(rawVal, dimInfo);\n  };\n\n  return ExternalSource;\n}();\n\nexport { ExternalSource };\n\nfunction createExternalSource(internalSource, externalTransform) {\n  var extSource = new ExternalSource();\n  var data = internalSource.data;\n  var sourceFormat = extSource.sourceFormat = internalSource.sourceFormat;\n  var sourceHeaderCount = internalSource.startIndex;\n  var errMsg = '';\n\n  if (internalSource.seriesLayoutBy !== SERIES_LAYOUT_BY_COLUMN) {\n    // For the logic simplicity in transformer, only 'culumn' is\n    // supported in data transform. Otherwise, the `dimensionsDefine`\n    // might be detected by 'row', which probably confuses users.\n    if (process.env.NODE_ENV !== 'production') {\n      errMsg = '`seriesLayoutBy` of upstream dataset can only be \"column\" in data transform.';\n    }\n\n    throwError(errMsg);\n  } // [MEMO]\n  // Create a new dimensions structure for exposing.\n  // Do not expose all dimension info to users directly.\n  // Because the dimension is probably auto detected from data and not might reliable.\n  // Should not lead the transformers to think that is reliable and return it.\n  // See [DIMENSION_INHERIT_RULE] in `sourceManager.ts`.\n\n\n  var dimensions = [];\n  var dimsByName = {};\n  var dimsDef = internalSource.dimensionsDefine;\n\n  if (dimsDef) {\n    each(dimsDef, function (dimDef, idx) {\n      var name = dimDef.name;\n      var dimDefExt = {\n        index: idx,\n        name: name,\n        displayName: dimDef.displayName\n      };\n      dimensions.push(dimDefExt); // Users probably do not specify dimension name. For simplicity, data transform\n      // does not generate dimension name.\n\n      if (name != null) {\n        // Dimension name should not be duplicated.\n        // For simplicity, data transform forbids name duplication, do not generate\n        // new name like module `completeDimensions.ts` did, but just tell users.\n        var errMsg_1 = '';\n\n        if (hasOwn(dimsByName, name)) {\n          if (process.env.NODE_ENV !== 'production') {\n            errMsg_1 = 'dimension name \"' + name + '\" duplicated.';\n          }\n\n          throwError(errMsg_1);\n        }\n\n        dimsByName[name] = dimDefExt;\n      }\n    });\n  } // If dimension definitions are not defined and can not be detected.\n  // e.g., pure data `[[11, 22], ...]`.\n  else {\n      for (var i = 0; i < internalSource.dimensionsDetectedCount || 0; i++) {\n        // Do not generete name or anything others. The consequence process in\n        // `transform` or `series` probably have there own name generation strategry.\n        dimensions.push({\n          index: i\n        });\n      }\n    } // Implement public methods:\n\n\n  var rawItemGetter = getRawSourceItemGetter(sourceFormat, SERIES_LAYOUT_BY_COLUMN);\n\n  if (externalTransform.__isBuiltIn) {\n    extSource.getRawDataItem = function (dataIndex) {\n      return rawItemGetter(data, sourceHeaderCount, dimensions, dataIndex);\n    };\n\n    extSource.getRawData = bind(getRawData, null, internalSource);\n  }\n\n  extSource.cloneRawData = bind(cloneRawData, null, internalSource);\n  var rawCounter = getRawSourceDataCounter(sourceFormat, SERIES_LAYOUT_BY_COLUMN);\n  extSource.count = bind(rawCounter, null, data, sourceHeaderCount, dimensions);\n  var rawValueGetter = getRawSourceValueGetter(sourceFormat);\n\n  extSource.retrieveValue = function (dataIndex, dimIndex) {\n    var rawItem = rawItemGetter(data, sourceHeaderCount, dimensions, dataIndex);\n    return retrieveValueFromItem(rawItem, dimIndex);\n  };\n\n  var retrieveValueFromItem = extSource.retrieveValueFromItem = function (dataItem, dimIndex) {\n    if (dataItem == null) {\n      return;\n    }\n\n    var dimDef = dimensions[dimIndex]; // When `dimIndex` is `null`, `rawValueGetter` return the whole item.\n\n    if (dimDef) {\n      return rawValueGetter(dataItem, dimIndex, dimDef.name);\n    }\n  };\n\n  extSource.getDimensionInfo = bind(getDimensionInfo, null, dimensions, dimsByName);\n  extSource.cloneAllDimensionInfo = bind(cloneAllDimensionInfo, null, dimensions);\n  return extSource;\n}\n\nfunction getRawData(upstream) {\n  var sourceFormat = upstream.sourceFormat;\n\n  if (!isSupportedSourceFormat(sourceFormat)) {\n    var errMsg = '';\n\n    if (process.env.NODE_ENV !== 'production') {\n      errMsg = '`getRawData` is not supported in source format ' + sourceFormat;\n    }\n\n    throwError(errMsg);\n  }\n\n  return upstream.data;\n}\n\nfunction cloneRawData(upstream) {\n  var sourceFormat = upstream.sourceFormat;\n  var data = upstream.data;\n\n  if (!isSupportedSourceFormat(sourceFormat)) {\n    var errMsg = '';\n\n    if (process.env.NODE_ENV !== 'production') {\n      errMsg = '`cloneRawData` is not supported in source format ' + sourceFormat;\n    }\n\n    throwError(errMsg);\n  }\n\n  if (sourceFormat === SOURCE_FORMAT_ARRAY_ROWS) {\n    var result = [];\n\n    for (var i = 0, len = data.length; i < len; i++) {\n      // Not strictly clone for performance\n      result.push(data[i].slice());\n    }\n\n    return result;\n  } else if (sourceFormat === SOURCE_FORMAT_OBJECT_ROWS) {\n    var result = [];\n\n    for (var i = 0, len = data.length; i < len; i++) {\n      // Not strictly clone for performance\n      result.push(extend({}, data[i]));\n    }\n\n    return result;\n  }\n}\n\nfunction getDimensionInfo(dimensions, dimsByName, dim) {\n  if (dim == null) {\n    return;\n  } // Keep the same logic as `List::getDimension` did.\n\n\n  if (isNumber(dim) // If being a number-like string but not being defined a dimension name.\n  || !isNaN(dim) && !hasOwn(dimsByName, dim)) {\n    return dimensions[dim];\n  } else if (hasOwn(dimsByName, dim)) {\n    return dimsByName[dim];\n  }\n}\n\nfunction cloneAllDimensionInfo(dimensions) {\n  return clone(dimensions);\n}\n\nvar externalTransformMap = createHashMap();\nexport function registerExternalTransform(externalTransform) {\n  externalTransform = clone(externalTransform);\n  var type = externalTransform.type;\n  var errMsg = '';\n\n  if (!type) {\n    if (process.env.NODE_ENV !== 'production') {\n      errMsg = 'Must have a `type` when `registerTransform`.';\n    }\n\n    throwError(errMsg);\n  }\n\n  var typeParsed = type.split(':');\n\n  if (typeParsed.length !== 2) {\n    if (process.env.NODE_ENV !== 'production') {\n      errMsg = 'Name must include namespace like \"ns:regression\".';\n    }\n\n    throwError(errMsg);\n  } // Namespace 'echarts:xxx' is official namespace, where the transforms should\n  // be called directly via 'xxx' rather than 'echarts:xxx'.\n\n\n  var isBuiltIn = false;\n\n  if (typeParsed[0] === 'echarts') {\n    type = typeParsed[1];\n    isBuiltIn = true;\n  }\n\n  externalTransform.__isBuiltIn = isBuiltIn;\n  externalTransformMap.set(type, externalTransform);\n}\nexport function applyDataTransform(rawTransOption, sourceList, infoForPrint) {\n  var pipedTransOption = normalizeToArray(rawTransOption);\n  var pipeLen = pipedTransOption.length;\n  var errMsg = '';\n\n  if (!pipeLen) {\n    if (process.env.NODE_ENV !== 'production') {\n      errMsg = 'If `transform` declared, it should at least contain one transform.';\n    }\n\n    throwError(errMsg);\n  }\n\n  for (var i = 0, len = pipeLen; i < len; i++) {\n    var transOption = pipedTransOption[i];\n    sourceList = applySingleDataTransform(transOption, sourceList, infoForPrint, pipeLen === 1 ? null : i); // piped transform only support single input, except the fist one.\n    // piped transform only support single output, except the last one.\n\n    if (i !== len - 1) {\n      sourceList.length = Math.max(sourceList.length, 1);\n    }\n  }\n\n  return sourceList;\n}\n\nfunction applySingleDataTransform(transOption, upSourceList, infoForPrint, // If `pipeIndex` is null/undefined, no piped transform.\npipeIndex) {\n  var errMsg = '';\n\n  if (!upSourceList.length) {\n    if (process.env.NODE_ENV !== 'production') {\n      errMsg = 'Must have at least one upstream dataset.';\n    }\n\n    throwError(errMsg);\n  }\n\n  if (!isObject(transOption)) {\n    if (process.env.NODE_ENV !== 'production') {\n      errMsg = 'transform declaration must be an object rather than ' + typeof transOption + '.';\n    }\n\n    throwError(errMsg);\n  }\n\n  var transType = transOption.type;\n  var externalTransform = externalTransformMap.get(transType);\n\n  if (!externalTransform) {\n    if (process.env.NODE_ENV !== 'production') {\n      errMsg = 'Can not find transform on type \"' + transType + '\".';\n    }\n\n    throwError(errMsg);\n  } // Prepare source\n\n\n  var extUpSourceList = map(upSourceList, function (upSource) {\n    return createExternalSource(upSource, externalTransform);\n  });\n  var resultList = normalizeToArray(externalTransform.transform({\n    upstream: extUpSourceList[0],\n    upstreamList: extUpSourceList,\n    config: clone(transOption.config)\n  }));\n\n  if (process.env.NODE_ENV !== 'production') {\n    if (transOption.print) {\n      var printStrArr = map(resultList, function (extSource) {\n        var pipeIndexStr = pipeIndex != null ? ' === pipe index: ' + pipeIndex : '';\n        return ['=== dataset index: ' + infoForPrint.datasetIndex + pipeIndexStr + ' ===', '- transform result data:', makePrintable(extSource.data), '- transform result dimensions:', makePrintable(extSource.dimensions)].join('\\n');\n      }).join('\\n');\n      log(printStrArr);\n    }\n  }\n\n  return map(resultList, function (result, resultIndex) {\n    var errMsg = '';\n\n    if (!isObject(result)) {\n      if (process.env.NODE_ENV !== 'production') {\n        errMsg = 'A transform should not return some empty results.';\n      }\n\n      throwError(errMsg);\n    }\n\n    if (!result.data) {\n      if (process.env.NODE_ENV !== 'production') {\n        errMsg = 'Transform result data should be not be null or undefined';\n      }\n\n      throwError(errMsg);\n    }\n\n    var sourceFormat = detectSourceFormat(result.data);\n\n    if (!isSupportedSourceFormat(sourceFormat)) {\n      if (process.env.NODE_ENV !== 'production') {\n        errMsg = 'Transform result data should be array rows or object rows.';\n      }\n\n      throwError(errMsg);\n    }\n\n    var resultMetaRawOption;\n    var firstUpSource = upSourceList[0];\n    /**\r\n     * Intuitively, the end users known the content of the original `dataset.source`,\r\n     * calucating the transform result in mind.\r\n     * Suppose the original `dataset.source` is:\r\n     * ```js\r\n     * [\r\n     *     ['product', '2012', '2013', '2014', '2015'],\r\n     *     ['AAA', 41.1, 30.4, 65.1, 53.3],\r\n     *     ['BBB', 86.5, 92.1, 85.7, 83.1],\r\n     *     ['CCC', 24.1, 67.2, 79.5, 86.4]\r\n     * ]\r\n     * ```\r\n     * The dimension info have to be detected from the source data.\r\n     * Some of the transformers (like filter, sort) will follow the dimension info\r\n     * of upstream, while others use new dimensions (like aggregate).\r\n     * Transformer can output a field `dimensions` to define the its own output dimensions.\r\n     * We also allow transformers to ignore the output `dimensions` field, and\r\n     * inherit the upstream dimensions definition. It can reduce the burden of handling\r\n     * dimensions in transformers.\r\n     *\r\n     * See also [DIMENSION_INHERIT_RULE] in `sourceManager.ts`.\r\n     */\n\n    if (firstUpSource && resultIndex === 0 // If transformer returns `dimensions`, it means that the transformer has different\n    // dimensions definitions. We do not inherit anything from upstream.\n    && !result.dimensions) {\n      var startIndex = firstUpSource.startIndex; // We copy the header of upstream to the result, because:\n      // (1) The returned data always does not contain header line and can not be used\n      // as dimension-detection. In this case we can not use \"detected dimensions\" of\n      // upstream directly, because it might be detected based on different `seriesLayoutBy`.\n      // (2) We should support that the series read the upstream source in `seriesLayoutBy: 'row'`.\n      // So the original detected header should be add to the result, otherwise they can not be read.\n\n      if (startIndex) {\n        result.data = firstUpSource.data.slice(0, startIndex).concat(result.data);\n      }\n\n      resultMetaRawOption = {\n        seriesLayoutBy: SERIES_LAYOUT_BY_COLUMN,\n        sourceHeader: startIndex,\n        dimensions: firstUpSource.metaRawOption.dimensions\n      };\n    } else {\n      resultMetaRawOption = {\n        seriesLayoutBy: SERIES_LAYOUT_BY_COLUMN,\n        sourceHeader: 0,\n        dimensions: result.dimensions\n      };\n    }\n\n    return createSource(result.data, resultMetaRawOption, null);\n  });\n}\n\nfunction isSupportedSourceFormat(sourceFormat) {\n  return sourceFormat === SOURCE_FORMAT_ARRAY_ROWS || sourceFormat === SOURCE_FORMAT_OBJECT_ROWS;\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { assert, clone, createHashMap, isFunction, keys, map, reduce } from 'zrender/lib/core/util.js';\nimport { parseDataValue } from './helper/dataValueHelper.js';\nimport { shouldRetrieveDataByName } from './Source.js';\nvar UNDEFINED = 'undefined';\n/* global Float64Array, Int32Array, Uint32Array, Uint16Array */\n// Caution: MUST not use `new CtorUint32Array(arr, 0, len)`, because the Ctor of array is\n// different from the Ctor of typed array.\n\nexport var CtorUint32Array = typeof Uint32Array === UNDEFINED ? Array : Uint32Array;\nexport var CtorUint16Array = typeof Uint16Array === UNDEFINED ? Array : Uint16Array;\nexport var CtorInt32Array = typeof Int32Array === UNDEFINED ? Array : Int32Array;\nexport var CtorFloat64Array = typeof Float64Array === UNDEFINED ? Array : Float64Array;\n/**\r\n * Multi dimensional data store\r\n */\n\nvar dataCtors = {\n  'float': CtorFloat64Array,\n  'int': CtorInt32Array,\n  // Ordinal data type can be string or int\n  'ordinal': Array,\n  'number': Array,\n  'time': CtorFloat64Array\n};\nvar defaultDimValueGetters;\n\nfunction getIndicesCtor(rawCount) {\n  // The possible max value in this._indicies is always this._rawCount despite of filtering.\n  return rawCount > 65535 ? CtorUint32Array : CtorUint16Array;\n}\n\n;\n\nfunction getInitialExtent() {\n  return [Infinity, -Infinity];\n}\n\n;\n\nfunction cloneChunk(originalChunk) {\n  var Ctor = originalChunk.constructor; // Only shallow clone is enough when Array.\n\n  return Ctor === Array ? originalChunk.slice() : new Ctor(originalChunk);\n}\n\nfunction prepareStore(store, dimIdx, dimType, end, append) {\n  var DataCtor = dataCtors[dimType || 'float'];\n\n  if (append) {\n    var oldStore = store[dimIdx];\n    var oldLen = oldStore && oldStore.length;\n\n    if (!(oldLen === end)) {\n      var newStore = new DataCtor(end); // The cost of the copy is probably inconsiderable\n      // within the initial chunkSize.\n\n      for (var j = 0; j < oldLen; j++) {\n        newStore[j] = oldStore[j];\n      }\n\n      store[dimIdx] = newStore;\n    }\n  } else {\n    store[dimIdx] = new DataCtor(end);\n  }\n}\n\n;\n/**\r\n * Basically, DataStore API keep immutable.\r\n */\n\nvar DataStore =\n/** @class */\nfunction () {\n  function DataStore() {\n    this._chunks = []; // It will not be calculated until needed.\n\n    this._rawExtent = [];\n    this._extent = [];\n    this._count = 0;\n    this._rawCount = 0;\n    this._calcDimNameToIdx = createHashMap();\n  }\n  /**\r\n   * Initialize from data\r\n   */\n\n\n  DataStore.prototype.initData = function (provider, inputDimensions, dimValueGetter) {\n    if (process.env.NODE_ENV !== 'production') {\n      assert(isFunction(provider.getItem) && isFunction(provider.count), 'Invalid data provider.');\n    }\n\n    this._provider = provider; // Clear\n\n    this._chunks = [];\n    this._indices = null;\n    this.getRawIndex = this._getRawIdxIdentity;\n    var source = provider.getSource();\n    var defaultGetter = this.defaultDimValueGetter = defaultDimValueGetters[source.sourceFormat]; // Default dim value getter\n\n    this._dimValueGetter = dimValueGetter || defaultGetter; // Reset raw extent.\n\n    this._rawExtent = [];\n    var willRetrieveDataByName = shouldRetrieveDataByName(source);\n    this._dimensions = map(inputDimensions, function (dim) {\n      if (process.env.NODE_ENV !== 'production') {\n        if (willRetrieveDataByName) {\n          assert(dim.property != null);\n        }\n      }\n\n      return {\n        // Only pick these two props. Not leak other properties like orderMeta.\n        type: dim.type,\n        property: dim.property\n      };\n    });\n\n    this._initDataFromProvider(0, provider.count());\n  };\n\n  DataStore.prototype.getProvider = function () {\n    return this._provider;\n  };\n  /**\r\n   * Caution: even when a `source` instance owned by a series, the created data store\r\n   * may still be shared by different sereis (the source hash does not use all `source`\r\n   * props, see `sourceManager`). In this case, the `source` props that are not used in\r\n   * hash (like `source.dimensionDefine`) probably only belongs to a certain series and\r\n   * thus should not be fetch here.\r\n   */\n\n\n  DataStore.prototype.getSource = function () {\n    return this._provider.getSource();\n  };\n  /**\r\n   * @caution Only used in dataStack.\r\n   */\n\n\n  DataStore.prototype.ensureCalculationDimension = function (dimName, type) {\n    var calcDimNameToIdx = this._calcDimNameToIdx;\n    var dimensions = this._dimensions;\n    var calcDimIdx = calcDimNameToIdx.get(dimName);\n\n    if (calcDimIdx != null) {\n      if (dimensions[calcDimIdx].type === type) {\n        return calcDimIdx;\n      }\n    } else {\n      calcDimIdx = dimensions.length;\n    }\n\n    dimensions[calcDimIdx] = {\n      type: type\n    };\n    calcDimNameToIdx.set(dimName, calcDimIdx);\n    this._chunks[calcDimIdx] = new dataCtors[type || 'float'](this._rawCount);\n    this._rawExtent[calcDimIdx] = getInitialExtent();\n    return calcDimIdx;\n  };\n\n  DataStore.prototype.collectOrdinalMeta = function (dimIdx, ordinalMeta) {\n    var chunk = this._chunks[dimIdx];\n    var dim = this._dimensions[dimIdx];\n    var rawExtents = this._rawExtent;\n    var offset = dim.ordinalOffset || 0;\n    var len = chunk.length;\n\n    if (offset === 0) {\n      // We need to reset the rawExtent if collect is from start.\n      // Because this dimension may be guessed as number and calcuating a wrong extent.\n      rawExtents[dimIdx] = getInitialExtent();\n    }\n\n    var dimRawExtent = rawExtents[dimIdx]; // Parse from previous data offset. len may be changed after appendData\n\n    for (var i = offset; i < len; i++) {\n      var val = chunk[i] = ordinalMeta.parseAndCollect(chunk[i]);\n\n      if (!isNaN(val)) {\n        dimRawExtent[0] = Math.min(val, dimRawExtent[0]);\n        dimRawExtent[1] = Math.max(val, dimRawExtent[1]);\n      }\n    }\n\n    dim.ordinalMeta = ordinalMeta;\n    dim.ordinalOffset = len;\n    dim.type = 'ordinal'; // Force to be ordinal\n  };\n\n  DataStore.prototype.getOrdinalMeta = function (dimIdx) {\n    var dimInfo = this._dimensions[dimIdx];\n    var ordinalMeta = dimInfo.ordinalMeta;\n    return ordinalMeta;\n  };\n\n  DataStore.prototype.getDimensionProperty = function (dimIndex) {\n    var item = this._dimensions[dimIndex];\n    return item && item.property;\n  };\n  /**\r\n   * Caution: Can be only called on raw data (before `this._indices` created).\r\n   */\n\n\n  DataStore.prototype.appendData = function (data) {\n    if (process.env.NODE_ENV !== 'production') {\n      assert(!this._indices, 'appendData can only be called on raw data.');\n    }\n\n    var provider = this._provider;\n    var start = this.count();\n    provider.appendData(data);\n    var end = provider.count();\n\n    if (!provider.persistent) {\n      end += start;\n    }\n\n    if (start < end) {\n      this._initDataFromProvider(start, end, true);\n    }\n\n    return [start, end];\n  };\n\n  DataStore.prototype.appendValues = function (values, minFillLen) {\n    var chunks = this._chunks;\n    var dimensions = this._dimensions;\n    var dimLen = dimensions.length;\n    var rawExtent = this._rawExtent;\n    var start = this.count();\n    var end = start + Math.max(values.length, minFillLen || 0);\n\n    for (var i = 0; i < dimLen; i++) {\n      var dim = dimensions[i];\n      prepareStore(chunks, i, dim.type, end, true);\n    }\n\n    var emptyDataItem = [];\n\n    for (var idx = start; idx < end; idx++) {\n      var sourceIdx = idx - start; // Store the data by dimensions\n\n      for (var dimIdx = 0; dimIdx < dimLen; dimIdx++) {\n        var dim = dimensions[dimIdx];\n        var val = defaultDimValueGetters.arrayRows.call(this, values[sourceIdx] || emptyDataItem, dim.property, sourceIdx, dimIdx);\n        chunks[dimIdx][idx] = val;\n        var dimRawExtent = rawExtent[dimIdx];\n        val < dimRawExtent[0] && (dimRawExtent[0] = val);\n        val > dimRawExtent[1] && (dimRawExtent[1] = val);\n      }\n    }\n\n    this._rawCount = this._count = end;\n    return {\n      start: start,\n      end: end\n    };\n  };\n\n  DataStore.prototype._initDataFromProvider = function (start, end, append) {\n    var provider = this._provider;\n    var chunks = this._chunks;\n    var dimensions = this._dimensions;\n    var dimLen = dimensions.length;\n    var rawExtent = this._rawExtent;\n    var dimNames = map(dimensions, function (dim) {\n      return dim.property;\n    });\n\n    for (var i = 0; i < dimLen; i++) {\n      var dim = dimensions[i];\n\n      if (!rawExtent[i]) {\n        rawExtent[i] = getInitialExtent();\n      }\n\n      prepareStore(chunks, i, dim.type, end, append);\n    }\n\n    if (provider.fillStorage) {\n      provider.fillStorage(start, end, chunks, rawExtent);\n    } else {\n      var dataItem = [];\n\n      for (var idx = start; idx < end; idx++) {\n        // NOTICE: Try not to write things into dataItem\n        dataItem = provider.getItem(idx, dataItem); // Each data item is value\n        // [1, 2]\n        // 2\n        // Bar chart, line chart which uses category axis\n        // only gives the 'y' value. 'x' value is the indices of category\n        // Use a tempValue to normalize the value to be a (x, y) value\n        // Store the data by dimensions\n\n        for (var dimIdx = 0; dimIdx < dimLen; dimIdx++) {\n          var dimStorage = chunks[dimIdx]; // PENDING NULL is empty or zero\n\n          var val = this._dimValueGetter(dataItem, dimNames[dimIdx], idx, dimIdx);\n\n          dimStorage[idx] = val;\n          var dimRawExtent = rawExtent[dimIdx];\n          val < dimRawExtent[0] && (dimRawExtent[0] = val);\n          val > dimRawExtent[1] && (dimRawExtent[1] = val);\n        }\n      }\n    }\n\n    if (!provider.persistent && provider.clean) {\n      // Clean unused data if data source is typed array.\n      provider.clean();\n    }\n\n    this._rawCount = this._count = end; // Reset data extent\n\n    this._extent = [];\n  };\n\n  DataStore.prototype.count = function () {\n    return this._count;\n  };\n  /**\r\n   * Get value. Return NaN if idx is out of range.\r\n   */\n\n\n  DataStore.prototype.get = function (dim, idx) {\n    if (!(idx >= 0 && idx < this._count)) {\n      return NaN;\n    }\n\n    var dimStore = this._chunks[dim];\n    return dimStore ? dimStore[this.getRawIndex(idx)] : NaN;\n  };\n\n  DataStore.prototype.getValues = function (dimensions, idx) {\n    var values = [];\n    var dimArr = [];\n\n    if (idx == null) {\n      idx = dimensions; // TODO get all from store?\n\n      dimensions = []; // All dimensions\n\n      for (var i = 0; i < this._dimensions.length; i++) {\n        dimArr.push(i);\n      }\n    } else {\n      dimArr = dimensions;\n    }\n\n    for (var i = 0, len = dimArr.length; i < len; i++) {\n      values.push(this.get(dimArr[i], idx));\n    }\n\n    return values;\n  };\n  /**\r\n   * @param dim concrete dim\r\n   */\n\n\n  DataStore.prototype.getByRawIndex = function (dim, rawIdx) {\n    if (!(rawIdx >= 0 && rawIdx < this._rawCount)) {\n      return NaN;\n    }\n\n    var dimStore = this._chunks[dim];\n    return dimStore ? dimStore[rawIdx] : NaN;\n  };\n  /**\r\n   * Get sum of data in one dimension\r\n   */\n\n\n  DataStore.prototype.getSum = function (dim) {\n    var dimData = this._chunks[dim];\n    var sum = 0;\n\n    if (dimData) {\n      for (var i = 0, len = this.count(); i < len; i++) {\n        var value = this.get(dim, i);\n\n        if (!isNaN(value)) {\n          sum += value;\n        }\n      }\n    }\n\n    return sum;\n  };\n  /**\r\n   * Get median of data in one dimension\r\n   */\n\n\n  DataStore.prototype.getMedian = function (dim) {\n    var dimDataArray = []; // map all data of one dimension\n\n    this.each([dim], function (val) {\n      if (!isNaN(val)) {\n        dimDataArray.push(val);\n      }\n    }); // TODO\n    // Use quick select?\n\n    var sortedDimDataArray = dimDataArray.sort(function (a, b) {\n      return a - b;\n    });\n    var len = this.count(); // calculate median\n\n    return len === 0 ? 0 : len % 2 === 1 ? sortedDimDataArray[(len - 1) / 2] : (sortedDimDataArray[len / 2] + sortedDimDataArray[len / 2 - 1]) / 2;\n  };\n  /**\r\n   * Retrieve the index with given raw data index.\r\n   */\n\n\n  DataStore.prototype.indexOfRawIndex = function (rawIndex) {\n    if (rawIndex >= this._rawCount || rawIndex < 0) {\n      return -1;\n    }\n\n    if (!this._indices) {\n      return rawIndex;\n    } // Indices are ascending\n\n\n    var indices = this._indices; // If rawIndex === dataIndex\n\n    var rawDataIndex = indices[rawIndex];\n\n    if (rawDataIndex != null && rawDataIndex < this._count && rawDataIndex === rawIndex) {\n      return rawIndex;\n    }\n\n    var left = 0;\n    var right = this._count - 1;\n\n    while (left <= right) {\n      var mid = (left + right) / 2 | 0;\n\n      if (indices[mid] < rawIndex) {\n        left = mid + 1;\n      } else if (indices[mid] > rawIndex) {\n        right = mid - 1;\n      } else {\n        return mid;\n      }\n    }\n\n    return -1;\n  };\n  /**\r\n   * Retrieve the index of nearest value.\r\n   * @param dim\r\n   * @param value\r\n   * @param [maxDistance=Infinity]\r\n   * @return If and only if multiple indices have\r\n   *         the same value, they are put to the result.\r\n   */\n\n\n  DataStore.prototype.indicesOfNearest = function (dim, value, maxDistance) {\n    var chunks = this._chunks;\n    var dimData = chunks[dim];\n    var nearestIndices = [];\n\n    if (!dimData) {\n      return nearestIndices;\n    }\n\n    if (maxDistance == null) {\n      maxDistance = Infinity;\n    }\n\n    var minDist = Infinity;\n    var minDiff = -1;\n    var nearestIndicesLen = 0; // Check the test case of `test/ut/spec/data/SeriesData.js`.\n\n    for (var i = 0, len = this.count(); i < len; i++) {\n      var dataIndex = this.getRawIndex(i);\n      var diff = value - dimData[dataIndex];\n      var dist = Math.abs(diff);\n\n      if (dist <= maxDistance) {\n        // When the `value` is at the middle of `this.get(dim, i)` and `this.get(dim, i+1)`,\n        // we'd better not push both of them to `nearestIndices`, otherwise it is easy to\n        // get more than one item in `nearestIndices` (more specifically, in `tooltip`).\n        // So we choose the one that `diff >= 0` in this case.\n        // But if `this.get(dim, i)` and `this.get(dim, j)` get the same value, both of them\n        // should be push to `nearestIndices`.\n        if (dist < minDist || dist === minDist && diff >= 0 && minDiff < 0) {\n          minDist = dist;\n          minDiff = diff;\n          nearestIndicesLen = 0;\n        }\n\n        if (diff === minDiff) {\n          nearestIndices[nearestIndicesLen++] = i;\n        }\n      }\n    }\n\n    nearestIndices.length = nearestIndicesLen;\n    return nearestIndices;\n  };\n\n  DataStore.prototype.getIndices = function () {\n    var newIndices;\n    var indices = this._indices;\n\n    if (indices) {\n      var Ctor = indices.constructor;\n      var thisCount = this._count; // `new Array(a, b, c)` is different from `new Uint32Array(a, b, c)`.\n\n      if (Ctor === Array) {\n        newIndices = new Ctor(thisCount);\n\n        for (var i = 0; i < thisCount; i++) {\n          newIndices[i] = indices[i];\n        }\n      } else {\n        newIndices = new Ctor(indices.buffer, 0, thisCount);\n      }\n    } else {\n      var Ctor = getIndicesCtor(this._rawCount);\n      newIndices = new Ctor(this.count());\n\n      for (var i = 0; i < newIndices.length; i++) {\n        newIndices[i] = i;\n      }\n    }\n\n    return newIndices;\n  };\n  /**\r\n   * Data filter.\r\n   */\n\n\n  DataStore.prototype.filter = function (dims, cb) {\n    if (!this._count) {\n      return this;\n    }\n\n    var newStore = this.clone();\n    var count = newStore.count();\n    var Ctor = getIndicesCtor(newStore._rawCount);\n    var newIndices = new Ctor(count);\n    var value = [];\n    var dimSize = dims.length;\n    var offset = 0;\n    var dim0 = dims[0];\n    var chunks = newStore._chunks;\n\n    for (var i = 0; i < count; i++) {\n      var keep = void 0;\n      var rawIdx = newStore.getRawIndex(i); // Simple optimization\n\n      if (dimSize === 0) {\n        keep = cb(i);\n      } else if (dimSize === 1) {\n        var val = chunks[dim0][rawIdx];\n        keep = cb(val, i);\n      } else {\n        var k = 0;\n\n        for (; k < dimSize; k++) {\n          value[k] = chunks[dims[k]][rawIdx];\n        }\n\n        value[k] = i;\n        keep = cb.apply(null, value);\n      }\n\n      if (keep) {\n        newIndices[offset++] = rawIdx;\n      }\n    } // Set indices after filtered.\n\n\n    if (offset < count) {\n      newStore._indices = newIndices;\n    }\n\n    newStore._count = offset; // Reset data extent\n\n    newStore._extent = [];\n\n    newStore._updateGetRawIdx();\n\n    return newStore;\n  };\n  /**\r\n   * Select data in range. (For optimization of filter)\r\n   * (Manually inline code, support 5 million data filtering in data zoom.)\r\n   */\n\n\n  DataStore.prototype.selectRange = function (range) {\n    var newStore = this.clone();\n    var len = newStore._count;\n\n    if (!len) {\n      return this;\n    }\n\n    var dims = keys(range);\n    var dimSize = dims.length;\n\n    if (!dimSize) {\n      return this;\n    }\n\n    var originalCount = newStore.count();\n    var Ctor = getIndicesCtor(newStore._rawCount);\n    var newIndices = new Ctor(originalCount);\n    var offset = 0;\n    var dim0 = dims[0];\n    var min = range[dim0][0];\n    var max = range[dim0][1];\n    var storeArr = newStore._chunks;\n    var quickFinished = false;\n\n    if (!newStore._indices) {\n      // Extreme optimization for common case. About 2x faster in chrome.\n      var idx = 0;\n\n      if (dimSize === 1) {\n        var dimStorage = storeArr[dims[0]];\n\n        for (var i = 0; i < len; i++) {\n          var val = dimStorage[i]; // NaN will not be filtered. Consider the case, in line chart, empty\n          // value indicates the line should be broken. But for the case like\n          // scatter plot, a data item with empty value will not be rendered,\n          // but the axis extent may be effected if some other dim of the data\n          // item has value. Fortunately it is not a significant negative effect.\n\n          if (val >= min && val <= max || isNaN(val)) {\n            newIndices[offset++] = idx;\n          }\n\n          idx++;\n        }\n\n        quickFinished = true;\n      } else if (dimSize === 2) {\n        var dimStorage = storeArr[dims[0]];\n        var dimStorage2 = storeArr[dims[1]];\n        var min2 = range[dims[1]][0];\n        var max2 = range[dims[1]][1];\n\n        for (var i = 0; i < len; i++) {\n          var val = dimStorage[i];\n          var val2 = dimStorage2[i]; // Do not filter NaN, see comment above.\n\n          if ((val >= min && val <= max || isNaN(val)) && (val2 >= min2 && val2 <= max2 || isNaN(val2))) {\n            newIndices[offset++] = idx;\n          }\n\n          idx++;\n        }\n\n        quickFinished = true;\n      }\n    }\n\n    if (!quickFinished) {\n      if (dimSize === 1) {\n        for (var i = 0; i < originalCount; i++) {\n          var rawIndex = newStore.getRawIndex(i);\n          var val = storeArr[dims[0]][rawIndex]; // Do not filter NaN, see comment above.\n\n          if (val >= min && val <= max || isNaN(val)) {\n            newIndices[offset++] = rawIndex;\n          }\n        }\n      } else {\n        for (var i = 0; i < originalCount; i++) {\n          var keep = true;\n          var rawIndex = newStore.getRawIndex(i);\n\n          for (var k = 0; k < dimSize; k++) {\n            var dimk = dims[k];\n            var val = storeArr[dimk][rawIndex]; // Do not filter NaN, see comment above.\n\n            if (val < range[dimk][0] || val > range[dimk][1]) {\n              keep = false;\n            }\n          }\n\n          if (keep) {\n            newIndices[offset++] = newStore.getRawIndex(i);\n          }\n        }\n      }\n    } // Set indices after filtered.\n\n\n    if (offset < originalCount) {\n      newStore._indices = newIndices;\n    }\n\n    newStore._count = offset; // Reset data extent\n\n    newStore._extent = [];\n\n    newStore._updateGetRawIdx();\n\n    return newStore;\n  }; // /**\n  //  * Data mapping to a plain array\n  //  */\n  // mapArray(dims: DimensionIndex[], cb: MapArrayCb): any[] {\n  //     const result: any[] = [];\n  //     this.each(dims, function () {\n  //         result.push(cb && (cb as MapArrayCb).apply(null, arguments));\n  //     });\n  //     return result;\n  // }\n\n  /**\r\n   * Data mapping to a new List with given dimensions\r\n   */\n\n\n  DataStore.prototype.map = function (dims, cb) {\n    // TODO only clone picked chunks.\n    var target = this.clone(dims);\n\n    this._updateDims(target, dims, cb);\n\n    return target;\n  };\n  /**\r\n   * @caution Danger!! Only used in dataStack.\r\n   */\n\n\n  DataStore.prototype.modify = function (dims, cb) {\n    this._updateDims(this, dims, cb);\n  };\n\n  DataStore.prototype._updateDims = function (target, dims, cb) {\n    var targetChunks = target._chunks;\n    var tmpRetValue = [];\n    var dimSize = dims.length;\n    var dataCount = target.count();\n    var values = [];\n    var rawExtent = target._rawExtent;\n\n    for (var i = 0; i < dims.length; i++) {\n      rawExtent[dims[i]] = getInitialExtent();\n    }\n\n    for (var dataIndex = 0; dataIndex < dataCount; dataIndex++) {\n      var rawIndex = target.getRawIndex(dataIndex);\n\n      for (var k = 0; k < dimSize; k++) {\n        values[k] = targetChunks[dims[k]][rawIndex];\n      }\n\n      values[dimSize] = dataIndex;\n      var retValue = cb && cb.apply(null, values);\n\n      if (retValue != null) {\n        // a number or string (in oridinal dimension)?\n        if (typeof retValue !== 'object') {\n          tmpRetValue[0] = retValue;\n          retValue = tmpRetValue;\n        }\n\n        for (var i = 0; i < retValue.length; i++) {\n          var dim = dims[i];\n          var val = retValue[i];\n          var rawExtentOnDim = rawExtent[dim];\n          var dimStore = targetChunks[dim];\n\n          if (dimStore) {\n            dimStore[rawIndex] = val;\n          }\n\n          if (val < rawExtentOnDim[0]) {\n            rawExtentOnDim[0] = val;\n          }\n\n          if (val > rawExtentOnDim[1]) {\n            rawExtentOnDim[1] = val;\n          }\n        }\n      }\n    }\n  };\n  /**\r\n   * Large data down sampling using largest-triangle-three-buckets\r\n   * @param {string} valueDimension\r\n   * @param {number} targetCount\r\n   */\n\n\n  DataStore.prototype.lttbDownSample = function (valueDimension, rate) {\n    var target = this.clone([valueDimension], true);\n    var targetStorage = target._chunks;\n    var dimStore = targetStorage[valueDimension];\n    var len = this.count();\n    var sampledIndex = 0;\n    var frameSize = Math.floor(1 / rate);\n    var currentRawIndex = this.getRawIndex(0);\n    var maxArea;\n    var area;\n    var nextRawIndex;\n    var newIndices = new (getIndicesCtor(this._rawCount))(Math.min((Math.ceil(len / frameSize) + 2) * 2, len)); // First frame use the first data.\n\n    newIndices[sampledIndex++] = currentRawIndex;\n\n    for (var i = 1; i < len - 1; i += frameSize) {\n      var nextFrameStart = Math.min(i + frameSize, len - 1);\n      var nextFrameEnd = Math.min(i + frameSize * 2, len);\n      var avgX = (nextFrameEnd + nextFrameStart) / 2;\n      var avgY = 0;\n\n      for (var idx = nextFrameStart; idx < nextFrameEnd; idx++) {\n        var rawIndex = this.getRawIndex(idx);\n        var y = dimStore[rawIndex];\n\n        if (isNaN(y)) {\n          continue;\n        }\n\n        avgY += y;\n      }\n\n      avgY /= nextFrameEnd - nextFrameStart;\n      var frameStart = i;\n      var frameEnd = Math.min(i + frameSize, len);\n      var pointAX = i - 1;\n      var pointAY = dimStore[currentRawIndex];\n      maxArea = -1;\n      nextRawIndex = frameStart;\n      var firstNaNIndex = -1;\n      var countNaN = 0; // Find a point from current frame that construct a triangle with largest area with previous selected point\n      // And the average of next frame.\n\n      for (var idx = frameStart; idx < frameEnd; idx++) {\n        var rawIndex = this.getRawIndex(idx);\n        var y = dimStore[rawIndex];\n\n        if (isNaN(y)) {\n          countNaN++;\n\n          if (firstNaNIndex < 0) {\n            firstNaNIndex = rawIndex;\n          }\n\n          continue;\n        } // Calculate triangle area over three buckets\n\n\n        area = Math.abs((pointAX - avgX) * (y - pointAY) - (pointAX - idx) * (avgY - pointAY));\n\n        if (area > maxArea) {\n          maxArea = area;\n          nextRawIndex = rawIndex; // Next a is this b\n        }\n      }\n\n      if (countNaN > 0 && countNaN < frameEnd - frameStart) {\n        // Append first NaN point in every bucket.\n        // It is necessary to ensure the correct order of indices.\n        newIndices[sampledIndex++] = Math.min(firstNaNIndex, nextRawIndex);\n        nextRawIndex = Math.max(firstNaNIndex, nextRawIndex);\n      }\n\n      newIndices[sampledIndex++] = nextRawIndex;\n      currentRawIndex = nextRawIndex; // This a is the next a (chosen b)\n    } // First frame use the last data.\n\n\n    newIndices[sampledIndex++] = this.getRawIndex(len - 1);\n    target._count = sampledIndex;\n    target._indices = newIndices;\n    target.getRawIndex = this._getRawIdx;\n    return target;\n  };\n  /**\r\n   * Large data down sampling on given dimension\r\n   * @param sampleIndex Sample index for name and id\r\n   */\n\n\n  DataStore.prototype.downSample = function (dimension, rate, sampleValue, sampleIndex) {\n    var target = this.clone([dimension], true);\n    var targetStorage = target._chunks;\n    var frameValues = [];\n    var frameSize = Math.floor(1 / rate);\n    var dimStore = targetStorage[dimension];\n    var len = this.count();\n    var rawExtentOnDim = target._rawExtent[dimension] = getInitialExtent();\n    var newIndices = new (getIndicesCtor(this._rawCount))(Math.ceil(len / frameSize));\n    var offset = 0;\n\n    for (var i = 0; i < len; i += frameSize) {\n      // Last frame\n      if (frameSize > len - i) {\n        frameSize = len - i;\n        frameValues.length = frameSize;\n      }\n\n      for (var k = 0; k < frameSize; k++) {\n        var dataIdx = this.getRawIndex(i + k);\n        frameValues[k] = dimStore[dataIdx];\n      }\n\n      var value = sampleValue(frameValues);\n      var sampleFrameIdx = this.getRawIndex(Math.min(i + sampleIndex(frameValues, value) || 0, len - 1)); // Only write value on the filtered data\n\n      dimStore[sampleFrameIdx] = value;\n\n      if (value < rawExtentOnDim[0]) {\n        rawExtentOnDim[0] = value;\n      }\n\n      if (value > rawExtentOnDim[1]) {\n        rawExtentOnDim[1] = value;\n      }\n\n      newIndices[offset++] = sampleFrameIdx;\n    }\n\n    target._count = offset;\n    target._indices = newIndices;\n\n    target._updateGetRawIdx();\n\n    return target;\n  };\n  /**\r\n   * Data iteration\r\n   * @param ctx default this\r\n   * @example\r\n   *  list.each('x', function (x, idx) {});\r\n   *  list.each(['x', 'y'], function (x, y, idx) {});\r\n   *  list.each(function (idx) {})\r\n   */\n\n\n  DataStore.prototype.each = function (dims, cb) {\n    if (!this._count) {\n      return;\n    }\n\n    var dimSize = dims.length;\n    var chunks = this._chunks;\n\n    for (var i = 0, len = this.count(); i < len; i++) {\n      var rawIdx = this.getRawIndex(i); // Simple optimization\n\n      switch (dimSize) {\n        case 0:\n          cb(i);\n          break;\n\n        case 1:\n          cb(chunks[dims[0]][rawIdx], i);\n          break;\n\n        case 2:\n          cb(chunks[dims[0]][rawIdx], chunks[dims[1]][rawIdx], i);\n          break;\n\n        default:\n          var k = 0;\n          var value = [];\n\n          for (; k < dimSize; k++) {\n            value[k] = chunks[dims[k]][rawIdx];\n          } // Index\n\n\n          value[k] = i;\n          cb.apply(null, value);\n      }\n    }\n  };\n  /**\r\n   * Get extent of data in one dimension\r\n   */\n\n\n  DataStore.prototype.getDataExtent = function (dim) {\n    // Make sure use concrete dim as cache name.\n    var dimData = this._chunks[dim];\n    var initialExtent = getInitialExtent();\n\n    if (!dimData) {\n      return initialExtent;\n    } // Make more strict checkings to ensure hitting cache.\n\n\n    var currEnd = this.count(); // Consider the most cases when using data zoom, `getDataExtent`\n    // happened before filtering. We cache raw extent, which is not\n    // necessary to be cleared and recalculated when restore data.\n\n    var useRaw = !this._indices;\n    var dimExtent;\n\n    if (useRaw) {\n      return this._rawExtent[dim].slice();\n    }\n\n    dimExtent = this._extent[dim];\n\n    if (dimExtent) {\n      return dimExtent.slice();\n    }\n\n    dimExtent = initialExtent;\n    var min = dimExtent[0];\n    var max = dimExtent[1];\n\n    for (var i = 0; i < currEnd; i++) {\n      var rawIdx = this.getRawIndex(i);\n      var value = dimData[rawIdx];\n      value < min && (min = value);\n      value > max && (max = value);\n    }\n\n    dimExtent = [min, max];\n    this._extent[dim] = dimExtent;\n    return dimExtent;\n  };\n  /**\r\n   * Get raw data item\r\n   */\n\n\n  DataStore.prototype.getRawDataItem = function (idx) {\n    var rawIdx = this.getRawIndex(idx);\n\n    if (!this._provider.persistent) {\n      var val = [];\n      var chunks = this._chunks;\n\n      for (var i = 0; i < chunks.length; i++) {\n        val.push(chunks[i][rawIdx]);\n      }\n\n      return val;\n    } else {\n      return this._provider.getItem(rawIdx);\n    }\n  };\n  /**\r\n   * Clone shallow.\r\n   *\r\n   * @param clonedDims Determine which dims to clone. Will share the data if not specified.\r\n   */\n\n\n  DataStore.prototype.clone = function (clonedDims, ignoreIndices) {\n    var target = new DataStore();\n    var chunks = this._chunks;\n    var clonedDimsMap = clonedDims && reduce(clonedDims, function (obj, dimIdx) {\n      obj[dimIdx] = true;\n      return obj;\n    }, {});\n\n    if (clonedDimsMap) {\n      for (var i = 0; i < chunks.length; i++) {\n        // Not clone if dim is not picked.\n        target._chunks[i] = !clonedDimsMap[i] ? chunks[i] : cloneChunk(chunks[i]);\n      }\n    } else {\n      target._chunks = chunks;\n    }\n\n    this._copyCommonProps(target);\n\n    if (!ignoreIndices) {\n      target._indices = this._cloneIndices();\n    }\n\n    target._updateGetRawIdx();\n\n    return target;\n  };\n\n  DataStore.prototype._copyCommonProps = function (target) {\n    target._count = this._count;\n    target._rawCount = this._rawCount;\n    target._provider = this._provider;\n    target._dimensions = this._dimensions;\n    target._extent = clone(this._extent);\n    target._rawExtent = clone(this._rawExtent);\n  };\n\n  DataStore.prototype._cloneIndices = function () {\n    if (this._indices) {\n      var Ctor = this._indices.constructor;\n      var indices = void 0;\n\n      if (Ctor === Array) {\n        var thisCount = this._indices.length;\n        indices = new Ctor(thisCount);\n\n        for (var i = 0; i < thisCount; i++) {\n          indices[i] = this._indices[i];\n        }\n      } else {\n        indices = new Ctor(this._indices);\n      }\n\n      return indices;\n    }\n\n    return null;\n  };\n\n  DataStore.prototype._getRawIdxIdentity = function (idx) {\n    return idx;\n  };\n\n  DataStore.prototype._getRawIdx = function (idx) {\n    if (idx < this._count && idx >= 0) {\n      return this._indices[idx];\n    }\n\n    return -1;\n  };\n\n  DataStore.prototype._updateGetRawIdx = function () {\n    this.getRawIndex = this._indices ? this._getRawIdx : this._getRawIdxIdentity;\n  };\n\n  DataStore.internalField = function () {\n    function getDimValueSimply(dataItem, property, dataIndex, dimIndex) {\n      return parseDataValue(dataItem[dimIndex], this._dimensions[dimIndex]);\n    }\n\n    defaultDimValueGetters = {\n      arrayRows: getDimValueSimply,\n      objectRows: function (dataItem, property, dataIndex, dimIndex) {\n        return parseDataValue(dataItem[property], this._dimensions[dimIndex]);\n      },\n      keyedColumns: getDimValueSimply,\n      original: function (dataItem, property, dataIndex, dimIndex) {\n        // Performance sensitive, do not use modelUtil.getDataItemValue.\n        // If dataItem is an plain object with no value field, the let `value`\n        // will be assigned with the object, but it will be tread correctly\n        // in the `convertValue`.\n        var value = dataItem && (dataItem.value == null ? dataItem : dataItem.value);\n        return parseDataValue(value instanceof Array ? value[dimIndex] // If value is a single number or something else not array.\n        : value, this._dimensions[dimIndex]);\n      },\n      typedArray: function (dataItem, property, dataIndex, dimIndex) {\n        return dataItem[dimIndex];\n      }\n    };\n  }();\n\n  return DataStore;\n}();\n\nexport default DataStore;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { setAsPrimitive, map, isTypedArray, assert, each, retrieve2 } from 'zrender/lib/core/util.js';\nimport { createSource, cloneSourceShallow } from '../Source.js';\nimport { SOURCE_FORMAT_TYPED_ARRAY, SOURCE_FORMAT_ORIGINAL } from '../../util/types.js';\nimport { querySeriesUpstreamDatasetModel, queryDatasetUpstreamDatasetModels } from './sourceHelper.js';\nimport { applyDataTransform } from './transform.js';\nimport DataStore from '../DataStore.js';\nimport { DefaultDataProvider } from './dataProvider.js';\n/**\r\n * [REQUIREMENT_MEMO]:\r\n * (0) `metaRawOption` means `dimensions`/`sourceHeader`/`seriesLayoutBy` in raw option.\r\n * (1) Keep support the feature: `metaRawOption` can be specified both on `series` and\r\n * `root-dataset`. Them on `series` has higher priority.\r\n * (2) Do not support to set `metaRawOption` on a `non-root-dataset`, because it might\r\n * confuse users: whether those props indicate how to visit the upstream source or visit\r\n * the transform result source, and some transforms has nothing to do with these props,\r\n * and some transforms might have multiple upstream.\r\n * (3) Transforms should specify `metaRawOption` in each output, just like they can be\r\n * declared in `root-dataset`.\r\n * (4) At present only support visit source in `SERIES_LAYOUT_BY_COLUMN` in transforms.\r\n * That is for reducing complexity in transforms.\r\n * PENDING: Whether to provide transposition transform?\r\n *\r\n * [IMPLEMENTAION_MEMO]:\r\n * \"sourceVisitConfig\" are calculated from `metaRawOption` and `data`.\r\n * They will not be calculated until `source` is about to be visited (to prevent from\r\n * duplicate calcuation). `source` is visited only in series and input to transforms.\r\n *\r\n * [DIMENSION_INHERIT_RULE]:\r\n * By default the dimensions are inherited from ancestors, unless a transform return\r\n * a new dimensions definition.\r\n * Consider the case:\r\n * ```js\r\n * dataset: [{\r\n *     source: [ ['Product', 'Sales', 'Prise'], ['Cookies', 321, 44.21], ...]\r\n * }, {\r\n *     transform: { type: 'filter', ... }\r\n * }]\r\n * dataset: [{\r\n *     dimension: ['Product', 'Sales', 'Prise'],\r\n *     source: [ ['Cookies', 321, 44.21], ...]\r\n * }, {\r\n *     transform: { type: 'filter', ... }\r\n * }]\r\n * ```\r\n * The two types of option should have the same behavior after transform.\r\n *\r\n *\r\n * [SCENARIO]:\r\n * (1) Provide source data directly:\r\n * ```js\r\n * series: {\r\n *     encode: {...},\r\n *     dimensions: [...]\r\n *     seriesLayoutBy: 'row',\r\n *     data: [[...]]\r\n * }\r\n * ```\r\n * (2) Series refer to dataset.\r\n * ```js\r\n * series: [{\r\n *     encode: {...}\r\n *     // Ignore datasetIndex means `datasetIndex: 0`\r\n *     // and the dimensions defination in dataset is used\r\n * }, {\r\n *     encode: {...},\r\n *     seriesLayoutBy: 'column',\r\n *     datasetIndex: 1\r\n * }]\r\n * ```\r\n * (3) dataset transform\r\n * ```js\r\n * dataset: [{\r\n *     source: [...]\r\n * }, {\r\n *     source: [...]\r\n * }, {\r\n *     // By default from 0.\r\n *     transform: { type: 'filter', config: {...} }\r\n * }, {\r\n *     // Piped.\r\n *     transform: [\r\n *         { type: 'filter', config: {...} },\r\n *         { type: 'sort', config: {...} }\r\n *     ]\r\n * }, {\r\n *     id: 'regressionData',\r\n *     fromDatasetIndex: 1,\r\n *     // Third-party transform\r\n *     transform: { type: 'ecStat:regression', config: {...} }\r\n * }, {\r\n *     // retrieve the extra result.\r\n *     id: 'regressionFormula',\r\n *     fromDatasetId: 'regressionData',\r\n *     fromTransformResult: 1\r\n * }]\r\n * ```\r\n */\n\nvar SourceManager =\n/** @class */\nfunction () {\n  function SourceManager(sourceHost) {\n    // Cached source. Do not repeat calculating if not dirty.\n    this._sourceList = [];\n    this._storeList = []; // version sign of each upstream source manager.\n\n    this._upstreamSignList = [];\n    this._versionSignBase = 0;\n    this._dirty = true;\n    this._sourceHost = sourceHost;\n  }\n  /**\r\n   * Mark dirty.\r\n   */\n\n\n  SourceManager.prototype.dirty = function () {\n    this._setLocalSource([], []);\n\n    this._storeList = [];\n    this._dirty = true;\n  };\n\n  SourceManager.prototype._setLocalSource = function (sourceList, upstreamSignList) {\n    this._sourceList = sourceList;\n    this._upstreamSignList = upstreamSignList;\n    this._versionSignBase++;\n\n    if (this._versionSignBase > 9e10) {\n      this._versionSignBase = 0;\n    }\n  };\n  /**\r\n   * For detecting whether the upstream source is dirty, so that\r\n   * the local cached source (in `_sourceList`) should be discarded.\r\n   */\n\n\n  SourceManager.prototype._getVersionSign = function () {\n    return this._sourceHost.uid + '_' + this._versionSignBase;\n  };\n  /**\r\n   * Always return a source instance. Otherwise throw error.\r\n   */\n\n\n  SourceManager.prototype.prepareSource = function () {\n    // For the case that call `setOption` multiple time but no data changed,\n    // cache the result source to prevent from repeating transform.\n    if (this._isDirty()) {\n      this._createSource();\n\n      this._dirty = false;\n    }\n  };\n\n  SourceManager.prototype._createSource = function () {\n    this._setLocalSource([], []);\n\n    var sourceHost = this._sourceHost;\n\n    var upSourceMgrList = this._getUpstreamSourceManagers();\n\n    var hasUpstream = !!upSourceMgrList.length;\n    var resultSourceList;\n    var upstreamSignList;\n\n    if (isSeries(sourceHost)) {\n      var seriesModel = sourceHost;\n      var data = void 0;\n      var sourceFormat = void 0;\n      var upSource = void 0; // Has upstream dataset\n\n      if (hasUpstream) {\n        var upSourceMgr = upSourceMgrList[0];\n        upSourceMgr.prepareSource();\n        upSource = upSourceMgr.getSource();\n        data = upSource.data;\n        sourceFormat = upSource.sourceFormat;\n        upstreamSignList = [upSourceMgr._getVersionSign()];\n      } // Series data is from own.\n      else {\n          data = seriesModel.get('data', true);\n          sourceFormat = isTypedArray(data) ? SOURCE_FORMAT_TYPED_ARRAY : SOURCE_FORMAT_ORIGINAL;\n          upstreamSignList = [];\n        } // See [REQUIREMENT_MEMO], merge settings on series and parent dataset if it is root.\n\n\n      var newMetaRawOption = this._getSourceMetaRawOption() || {};\n      var upMetaRawOption = upSource && upSource.metaRawOption || {};\n      var seriesLayoutBy = retrieve2(newMetaRawOption.seriesLayoutBy, upMetaRawOption.seriesLayoutBy) || null;\n      var sourceHeader = retrieve2(newMetaRawOption.sourceHeader, upMetaRawOption.sourceHeader); // Note here we should not use `upSource.dimensionsDefine`. Consider the case:\n      // `upSource.dimensionsDefine` is detected by `seriesLayoutBy: 'column'`,\n      // but series need `seriesLayoutBy: 'row'`.\n\n      var dimensions = retrieve2(newMetaRawOption.dimensions, upMetaRawOption.dimensions); // We share source with dataset as much as possible\n      // to avoid extra memory cost of high dimensional data.\n\n      var needsCreateSource = seriesLayoutBy !== upMetaRawOption.seriesLayoutBy || !!sourceHeader !== !!upMetaRawOption.sourceHeader || dimensions;\n      resultSourceList = needsCreateSource ? [createSource(data, {\n        seriesLayoutBy: seriesLayoutBy,\n        sourceHeader: sourceHeader,\n        dimensions: dimensions\n      }, sourceFormat)] : [];\n    } else {\n      var datasetModel = sourceHost; // Has upstream dataset.\n\n      if (hasUpstream) {\n        var result = this._applyTransform(upSourceMgrList);\n\n        resultSourceList = result.sourceList;\n        upstreamSignList = result.upstreamSignList;\n      } // Is root dataset.\n      else {\n          var sourceData = datasetModel.get('source', true);\n          resultSourceList = [createSource(sourceData, this._getSourceMetaRawOption(), null)];\n          upstreamSignList = [];\n        }\n    }\n\n    if (process.env.NODE_ENV !== 'production') {\n      assert(resultSourceList && upstreamSignList);\n    }\n\n    this._setLocalSource(resultSourceList, upstreamSignList);\n  };\n\n  SourceManager.prototype._applyTransform = function (upMgrList) {\n    var datasetModel = this._sourceHost;\n    var transformOption = datasetModel.get('transform', true);\n    var fromTransformResult = datasetModel.get('fromTransformResult', true);\n\n    if (process.env.NODE_ENV !== 'production') {\n      assert(fromTransformResult != null || transformOption != null);\n    }\n\n    if (fromTransformResult != null) {\n      var errMsg = '';\n\n      if (upMgrList.length !== 1) {\n        if (process.env.NODE_ENV !== 'production') {\n          errMsg = 'When using `fromTransformResult`, there should be only one upstream dataset';\n        }\n\n        doThrow(errMsg);\n      }\n    }\n\n    var sourceList;\n    var upSourceList = [];\n    var upstreamSignList = [];\n    each(upMgrList, function (upMgr) {\n      upMgr.prepareSource();\n      var upSource = upMgr.getSource(fromTransformResult || 0);\n      var errMsg = '';\n\n      if (fromTransformResult != null && !upSource) {\n        if (process.env.NODE_ENV !== 'production') {\n          errMsg = 'Can not retrieve result by `fromTransformResult`: ' + fromTransformResult;\n        }\n\n        doThrow(errMsg);\n      }\n\n      upSourceList.push(upSource);\n      upstreamSignList.push(upMgr._getVersionSign());\n    });\n\n    if (transformOption) {\n      sourceList = applyDataTransform(transformOption, upSourceList, {\n        datasetIndex: datasetModel.componentIndex\n      });\n    } else if (fromTransformResult != null) {\n      sourceList = [cloneSourceShallow(upSourceList[0])];\n    }\n\n    return {\n      sourceList: sourceList,\n      upstreamSignList: upstreamSignList\n    };\n  };\n\n  SourceManager.prototype._isDirty = function () {\n    if (this._dirty) {\n      return true;\n    } // All sourceList is from the some upstream.\n\n\n    var upSourceMgrList = this._getUpstreamSourceManagers();\n\n    for (var i = 0; i < upSourceMgrList.length; i++) {\n      var upSrcMgr = upSourceMgrList[i];\n\n      if ( // Consider the case that there is ancestor diry, call it recursively.\n      // The performance is probably not an issue because usually the chain is not long.\n      upSrcMgr._isDirty() || this._upstreamSignList[i] !== upSrcMgr._getVersionSign()) {\n        return true;\n      }\n    }\n  };\n  /**\r\n   * @param sourceIndex By default 0, means \"main source\".\r\n   *                    In most cases there is only one source.\r\n   */\n\n\n  SourceManager.prototype.getSource = function (sourceIndex) {\n    sourceIndex = sourceIndex || 0;\n    var source = this._sourceList[sourceIndex];\n\n    if (!source) {\n      // Series may share source instance with dataset.\n      var upSourceMgrList = this._getUpstreamSourceManagers();\n\n      return upSourceMgrList[0] && upSourceMgrList[0].getSource(sourceIndex);\n    }\n\n    return source;\n  };\n  /**\r\n   *\r\n   * Get a data store which can be shared across series.\r\n   * Only available for series.\r\n   *\r\n   * @param seriesDimRequest Dimensions that are generated in series.\r\n   *        Should have been sorted by `storeDimIndex` asc.\r\n   */\n\n\n  SourceManager.prototype.getSharedDataStore = function (seriesDimRequest) {\n    if (process.env.NODE_ENV !== 'production') {\n      assert(isSeries(this._sourceHost), 'Can only call getDataStore on series source manager.');\n    }\n\n    var schema = seriesDimRequest.makeStoreSchema();\n    return this._innerGetDataStore(schema.dimensions, seriesDimRequest.source, schema.hash);\n  };\n\n  SourceManager.prototype._innerGetDataStore = function (storeDims, seriesSource, sourceReadKey) {\n    // TODO Can use other sourceIndex?\n    var sourceIndex = 0;\n    var storeList = this._storeList;\n    var cachedStoreMap = storeList[sourceIndex];\n\n    if (!cachedStoreMap) {\n      cachedStoreMap = storeList[sourceIndex] = {};\n    }\n\n    var cachedStore = cachedStoreMap[sourceReadKey];\n\n    if (!cachedStore) {\n      var upSourceMgr = this._getUpstreamSourceManagers()[0];\n\n      if (isSeries(this._sourceHost) && upSourceMgr) {\n        cachedStore = upSourceMgr._innerGetDataStore(storeDims, seriesSource, sourceReadKey);\n      } else {\n        cachedStore = new DataStore(); // Always create store from source of series.\n\n        cachedStore.initData(new DefaultDataProvider(seriesSource, storeDims.length), storeDims);\n      }\n\n      cachedStoreMap[sourceReadKey] = cachedStore;\n    }\n\n    return cachedStore;\n  };\n  /**\r\n   * PENDING: Is it fast enough?\r\n   * If no upstream, return empty array.\r\n   */\n\n\n  SourceManager.prototype._getUpstreamSourceManagers = function () {\n    // Always get the relationship from the raw option.\n    // Do not cache the link of the dependency graph, so that\n    // there is no need to update them when change happens.\n    var sourceHost = this._sourceHost;\n\n    if (isSeries(sourceHost)) {\n      var datasetModel = querySeriesUpstreamDatasetModel(sourceHost);\n      return !datasetModel ? [] : [datasetModel.getSourceManager()];\n    } else {\n      return map(queryDatasetUpstreamDatasetModels(sourceHost), function (datasetModel) {\n        return datasetModel.getSourceManager();\n      });\n    }\n  };\n\n  SourceManager.prototype._getSourceMetaRawOption = function () {\n    var sourceHost = this._sourceHost;\n    var seriesLayoutBy;\n    var sourceHeader;\n    var dimensions;\n\n    if (isSeries(sourceHost)) {\n      seriesLayoutBy = sourceHost.get('seriesLayoutBy', true);\n      sourceHeader = sourceHost.get('sourceHeader', true);\n      dimensions = sourceHost.get('dimensions', true);\n    } // See [REQUIREMENT_MEMO], `non-root-dataset` do not support them.\n    else if (!this._getUpstreamSourceManagers().length) {\n        var model = sourceHost;\n        seriesLayoutBy = model.get('seriesLayoutBy', true);\n        sourceHeader = model.get('sourceHeader', true);\n        dimensions = model.get('dimensions', true);\n      }\n\n    return {\n      seriesLayoutBy: seriesLayoutBy,\n      sourceHeader: sourceHeader,\n      dimensions: dimensions\n    };\n  };\n\n  return SourceManager;\n}();\n\nexport { SourceManager }; // Call this method after `super.init` and `super.mergeOption` to\n// disable the transform merge, but do not disable transform clone from rawOption.\n\nexport function disableTransformOptionMerge(datasetModel) {\n  var transformOption = datasetModel.option.transform;\n  transformOption && setAsPrimitive(datasetModel.option.transform);\n}\n\nfunction isSeries(sourceHost) {\n  // Avoid circular dependency with Series.ts\n  return sourceHost.mainType === 'series';\n}\n\nfunction doThrow(errMsg) {\n  throw new Error(errMsg);\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { getTooltipMarker, encodeHTML, makeValueReadable, convertToColorString } from '../../util/format.js';\nimport { isString, each, hasOwn, isArray, map, assert, extend } from 'zrender/lib/core/util.js';\nimport { SortOrderComparator } from '../../data/helper/dataValueHelper.js';\nimport { getRandomIdBase } from '../../util/number.js';\nvar TOOLTIP_LINE_HEIGHT_CSS = 'line-height:1'; // TODO: more textStyle option\n\nfunction getTooltipTextStyle(textStyle, renderMode) {\n  var nameFontColor = textStyle.color || '#6e7079';\n  var nameFontSize = textStyle.fontSize || 12;\n  var nameFontWeight = textStyle.fontWeight || '400';\n  var valueFontColor = textStyle.color || '#464646';\n  var valueFontSize = textStyle.fontSize || 14;\n  var valueFontWeight = textStyle.fontWeight || '900';\n\n  if (renderMode === 'html') {\n    // `textStyle` is probably from user input, should be encoded to reduce security risk.\n    return {\n      // eslint-disable-next-line max-len\n      nameStyle: \"font-size:\" + encodeHTML(nameFontSize + '') + \"px;color:\" + encodeHTML(nameFontColor) + \";font-weight:\" + encodeHTML(nameFontWeight + ''),\n      // eslint-disable-next-line max-len\n      valueStyle: \"font-size:\" + encodeHTML(valueFontSize + '') + \"px;color:\" + encodeHTML(valueFontColor) + \";font-weight:\" + encodeHTML(valueFontWeight + '')\n    };\n  } else {\n    return {\n      nameStyle: {\n        fontSize: nameFontSize,\n        fill: nameFontColor,\n        fontWeight: nameFontWeight\n      },\n      valueStyle: {\n        fontSize: valueFontSize,\n        fill: valueFontColor,\n        fontWeight: valueFontWeight\n      }\n    };\n  }\n} // See `TooltipMarkupLayoutIntent['innerGapLevel']`.\n// (value from UI design)\n\n\nvar HTML_GAPS = [0, 10, 20, 30];\nvar RICH_TEXT_GAPS = ['', '\\n', '\\n\\n', '\\n\\n\\n']; // eslint-disable-next-line max-len\n\nexport function createTooltipMarkup(type, option) {\n  option.type = type;\n  return option;\n}\n\nfunction isSectionFragment(frag) {\n  return frag.type === 'section';\n}\n\nfunction getBuilder(frag) {\n  return isSectionFragment(frag) ? buildSection : buildNameValue;\n}\n\nfunction getBlockGapLevel(frag) {\n  if (isSectionFragment(frag)) {\n    var gapLevel_1 = 0;\n    var subBlockLen = frag.blocks.length;\n    var hasInnerGap_1 = subBlockLen > 1 || subBlockLen > 0 && !frag.noHeader;\n    each(frag.blocks, function (subBlock) {\n      var subGapLevel = getBlockGapLevel(subBlock); // If the some of the sub-blocks have some gaps (like 10px) inside, this block\n      // should use a larger gap (like 20px) to distinguish those sub-blocks.\n\n      if (subGapLevel >= gapLevel_1) {\n        gapLevel_1 = subGapLevel + +(hasInnerGap_1 && ( // 0 always can not be readable gap level.\n        !subGapLevel // If no header, always keep the sub gap level. Otherwise\n        // look weird in case `multipleSeries`.\n        || isSectionFragment(subBlock) && !subBlock.noHeader));\n      }\n    });\n    return gapLevel_1;\n  }\n\n  return 0;\n}\n\nfunction buildSection(ctx, fragment, topMarginForOuterGap, toolTipTextStyle) {\n  var noHeader = fragment.noHeader;\n  var gaps = getGap(getBlockGapLevel(fragment));\n  var subMarkupTextList = [];\n  var subBlocks = fragment.blocks || [];\n  assert(!subBlocks || isArray(subBlocks));\n  subBlocks = subBlocks || [];\n  var orderMode = ctx.orderMode;\n\n  if (fragment.sortBlocks && orderMode) {\n    subBlocks = subBlocks.slice();\n    var orderMap = {\n      valueAsc: 'asc',\n      valueDesc: 'desc'\n    };\n\n    if (hasOwn(orderMap, orderMode)) {\n      var comparator_1 = new SortOrderComparator(orderMap[orderMode], null);\n      subBlocks.sort(function (a, b) {\n        return comparator_1.evaluate(a.sortParam, b.sortParam);\n      });\n    } // FIXME 'seriesDesc' necessary?\n    else if (orderMode === 'seriesDesc') {\n        subBlocks.reverse();\n      }\n  }\n\n  each(subBlocks, function (subBlock, idx) {\n    var valueFormatter = fragment.valueFormatter;\n    var subMarkupText = getBuilder(subBlock)( // Inherit valueFormatter\n    valueFormatter ? extend(extend({}, ctx), {\n      valueFormatter: valueFormatter\n    }) : ctx, subBlock, idx > 0 ? gaps.html : 0, toolTipTextStyle);\n    subMarkupText != null && subMarkupTextList.push(subMarkupText);\n  });\n  var subMarkupText = ctx.renderMode === 'richText' ? subMarkupTextList.join(gaps.richText) : wrapBlockHTML(subMarkupTextList.join(''), noHeader ? topMarginForOuterGap : gaps.html);\n\n  if (noHeader) {\n    return subMarkupText;\n  }\n\n  var displayableHeader = makeValueReadable(fragment.header, 'ordinal', ctx.useUTC);\n  var nameStyle = getTooltipTextStyle(toolTipTextStyle, ctx.renderMode).nameStyle;\n\n  if (ctx.renderMode === 'richText') {\n    return wrapInlineNameRichText(ctx, displayableHeader, nameStyle) + gaps.richText + subMarkupText;\n  } else {\n    return wrapBlockHTML(\"<div style=\\\"\" + nameStyle + \";\" + TOOLTIP_LINE_HEIGHT_CSS + \";\\\">\" + encodeHTML(displayableHeader) + '</div>' + subMarkupText, topMarginForOuterGap);\n  }\n}\n\nfunction buildNameValue(ctx, fragment, topMarginForOuterGap, toolTipTextStyle) {\n  var renderMode = ctx.renderMode;\n  var noName = fragment.noName;\n  var noValue = fragment.noValue;\n  var noMarker = !fragment.markerType;\n  var name = fragment.name;\n  var useUTC = ctx.useUTC;\n\n  var valueFormatter = fragment.valueFormatter || ctx.valueFormatter || function (value) {\n    value = isArray(value) ? value : [value];\n    return map(value, function (val, idx) {\n      return makeValueReadable(val, isArray(valueTypeOption) ? valueTypeOption[idx] : valueTypeOption, useUTC);\n    });\n  };\n\n  if (noName && noValue) {\n    return;\n  }\n\n  var markerStr = noMarker ? '' : ctx.markupStyleCreator.makeTooltipMarker(fragment.markerType, fragment.markerColor || '#333', renderMode);\n  var readableName = noName ? '' : makeValueReadable(name, 'ordinal', useUTC);\n  var valueTypeOption = fragment.valueType;\n  var readableValueList = noValue ? [] : valueFormatter(fragment.value);\n  var valueAlignRight = !noMarker || !noName; // It little weird if only value next to marker but far from marker.\n\n  var valueCloseToMarker = !noMarker && noName;\n\n  var _a = getTooltipTextStyle(toolTipTextStyle, renderMode),\n      nameStyle = _a.nameStyle,\n      valueStyle = _a.valueStyle;\n\n  return renderMode === 'richText' ? (noMarker ? '' : markerStr) + (noName ? '' : wrapInlineNameRichText(ctx, readableName, nameStyle)) // Value has commas inside, so use ' ' as delimiter for multiple values.\n  + (noValue ? '' : wrapInlineValueRichText(ctx, readableValueList, valueAlignRight, valueCloseToMarker, valueStyle)) : wrapBlockHTML((noMarker ? '' : markerStr) + (noName ? '' : wrapInlineNameHTML(readableName, !noMarker, nameStyle)) + (noValue ? '' : wrapInlineValueHTML(readableValueList, valueAlignRight, valueCloseToMarker, valueStyle)), topMarginForOuterGap);\n}\n/**\r\n * @return markupText. null/undefined means no content.\r\n */\n\n\nexport function buildTooltipMarkup(fragment, markupStyleCreator, renderMode, orderMode, useUTC, toolTipTextStyle) {\n  if (!fragment) {\n    return;\n  }\n\n  var builder = getBuilder(fragment);\n  var ctx = {\n    useUTC: useUTC,\n    renderMode: renderMode,\n    orderMode: orderMode,\n    markupStyleCreator: markupStyleCreator,\n    valueFormatter: fragment.valueFormatter\n  };\n  return builder(ctx, fragment, 0, toolTipTextStyle);\n}\n\nfunction getGap(gapLevel) {\n  return {\n    html: HTML_GAPS[gapLevel],\n    richText: RICH_TEXT_GAPS[gapLevel]\n  };\n}\n\nfunction wrapBlockHTML(encodedContent, topGap) {\n  var clearfix = '<div style=\"clear:both\"></div>';\n  var marginCSS = \"margin: \" + topGap + \"px 0 0\";\n  return \"<div style=\\\"\" + marginCSS + \";\" + TOOLTIP_LINE_HEIGHT_CSS + \";\\\">\" + encodedContent + clearfix + '</div>';\n}\n\nfunction wrapInlineNameHTML(name, leftHasMarker, style) {\n  var marginCss = leftHasMarker ? 'margin-left:2px' : '';\n  return \"<span style=\\\"\" + style + \";\" + marginCss + \"\\\">\" + encodeHTML(name) + '</span>';\n}\n\nfunction wrapInlineValueHTML(valueList, alignRight, valueCloseToMarker, style) {\n  // Do not too close to marker, considering there are multiple values separated by spaces.\n  var paddingStr = valueCloseToMarker ? '10px' : '20px';\n  var alignCSS = alignRight ? \"float:right;margin-left:\" + paddingStr : '';\n  valueList = isArray(valueList) ? valueList : [valueList];\n  return \"<span style=\\\"\" + alignCSS + \";\" + style + \"\\\">\" // Value has commas inside, so use '  ' as delimiter for multiple values.\n  + map(valueList, function (value) {\n    return encodeHTML(value);\n  }).join('&nbsp;&nbsp;') + '</span>';\n}\n\nfunction wrapInlineNameRichText(ctx, name, style) {\n  return ctx.markupStyleCreator.wrapRichTextStyle(name, style);\n}\n\nfunction wrapInlineValueRichText(ctx, values, alignRight, valueCloseToMarker, style) {\n  var styles = [style];\n  var paddingLeft = valueCloseToMarker ? 10 : 20;\n  alignRight && styles.push({\n    padding: [0, 0, 0, paddingLeft],\n    align: 'right'\n  }); // Value has commas inside, so use '  ' as delimiter for multiple values.\n\n  return ctx.markupStyleCreator.wrapRichTextStyle(isArray(values) ? values.join('  ') : values, styles);\n}\n\nexport function retrieveVisualColorForTooltipMarker(series, dataIndex) {\n  var style = series.getData().getItemVisual(dataIndex, 'style');\n  var color = style[series.visualDrawType];\n  return convertToColorString(color);\n}\nexport function getPaddingFromTooltipModel(model, renderMode) {\n  var padding = model.get('padding');\n  return padding != null ? padding // We give slightly different to look pretty.\n  : renderMode === 'richText' ? [8, 10] : 10;\n}\n/**\r\n * The major feature is generate styles for `renderMode: 'richText'`.\r\n * But it also serves `renderMode: 'html'` to provide\r\n * \"renderMode-independent\" API.\r\n */\n\nvar TooltipMarkupStyleCreator =\n/** @class */\nfunction () {\n  function TooltipMarkupStyleCreator() {\n    this.richTextStyles = {}; // Notice that \"generate a style name\" usually happens repeatedly when mouse is moving and\n    // a tooltip is displayed. So we put the `_nextStyleNameId` as a member of each creator\n    // rather than static shared by all creators (which will cause it increase to fast).\n\n    this._nextStyleNameId = getRandomIdBase();\n  }\n\n  TooltipMarkupStyleCreator.prototype._generateStyleName = function () {\n    return '__EC_aUTo_' + this._nextStyleNameId++;\n  };\n\n  TooltipMarkupStyleCreator.prototype.makeTooltipMarker = function (markerType, colorStr, renderMode) {\n    var markerId = renderMode === 'richText' ? this._generateStyleName() : null;\n    var marker = getTooltipMarker({\n      color: colorStr,\n      type: markerType,\n      renderMode: renderMode,\n      markerId: markerId\n    });\n\n    if (isString(marker)) {\n      return marker;\n    } else {\n      if (process.env.NODE_ENV !== 'production') {\n        assert(markerId);\n      }\n\n      this.richTextStyles[markerId] = marker.style;\n      return marker.content;\n    }\n  };\n  /**\r\n   * @usage\r\n   * ```ts\r\n   * const styledText = markupStyleCreator.wrapRichTextStyle([\r\n   *     // The styles will be auto merged.\r\n   *     {\r\n   *         fontSize: 12,\r\n   *         color: 'blue'\r\n   *     },\r\n   *     {\r\n   *         padding: 20\r\n   *     }\r\n   * ]);\r\n   * ```\r\n   */\n\n\n  TooltipMarkupStyleCreator.prototype.wrapRichTextStyle = function (text, styles) {\n    var finalStl = {};\n\n    if (isArray(styles)) {\n      each(styles, function (stl) {\n        return extend(finalStl, stl);\n      });\n    } else {\n      extend(finalStl, styles);\n    }\n\n    var styleName = this._generateStyleName();\n\n    this.richTextStyles[styleName] = finalStl;\n    return \"{\" + styleName + \"|\" + text + \"}\";\n  };\n\n  return TooltipMarkupStyleCreator;\n}();\n\nexport { TooltipMarkupStyleCreator };","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { trim, isArray, each, reduce } from 'zrender/lib/core/util.js';\nimport { retrieveVisualColorForTooltipMarker, createTooltipMarkup } from './tooltipMarkup.js';\nimport { retrieveRawValue } from '../../data/helper/dataProvider.js';\nimport { isNameSpecified } from '../../util/model.js';\nexport function defaultSeriesFormatTooltip(opt) {\n  var series = opt.series;\n  var dataIndex = opt.dataIndex;\n  var multipleSeries = opt.multipleSeries;\n  var data = series.getData();\n  var tooltipDims = data.mapDimensionsAll('defaultedTooltip');\n  var tooltipDimLen = tooltipDims.length;\n  var value = series.getRawValue(dataIndex);\n  var isValueArr = isArray(value);\n  var markerColor = retrieveVisualColorForTooltipMarker(series, dataIndex); // Complicated rule for pretty tooltip.\n\n  var inlineValue;\n  var inlineValueType;\n  var subBlocks;\n  var sortParam;\n\n  if (tooltipDimLen > 1 || isValueArr && !tooltipDimLen) {\n    var formatArrResult = formatTooltipArrayValue(value, series, dataIndex, tooltipDims, markerColor);\n    inlineValue = formatArrResult.inlineValues;\n    inlineValueType = formatArrResult.inlineValueTypes;\n    subBlocks = formatArrResult.blocks; // Only support tooltip sort by the first inline value. It's enough in most cases.\n\n    sortParam = formatArrResult.inlineValues[0];\n  } else if (tooltipDimLen) {\n    var dimInfo = data.getDimensionInfo(tooltipDims[0]);\n    sortParam = inlineValue = retrieveRawValue(data, dataIndex, tooltipDims[0]);\n    inlineValueType = dimInfo.type;\n  } else {\n    sortParam = inlineValue = isValueArr ? value[0] : value;\n  } // Do not show generated series name. It might not be readable.\n\n\n  var seriesNameSpecified = isNameSpecified(series);\n  var seriesName = seriesNameSpecified && series.name || '';\n  var itemName = data.getName(dataIndex);\n  var inlineName = multipleSeries ? seriesName : itemName;\n  return createTooltipMarkup('section', {\n    header: seriesName,\n    // When series name is not specified, do not show a header line with only '-'.\n    // This case always happens in tooltip.trigger: 'item'.\n    noHeader: multipleSeries || !seriesNameSpecified,\n    sortParam: sortParam,\n    blocks: [createTooltipMarkup('nameValue', {\n      markerType: 'item',\n      markerColor: markerColor,\n      // Do not mix display seriesName and itemName in one tooltip,\n      // which might confuses users.\n      name: inlineName,\n      // name dimension might be auto assigned, where the name might\n      // be not readable. So we check trim here.\n      noName: !trim(inlineName),\n      value: inlineValue,\n      valueType: inlineValueType\n    })].concat(subBlocks || [])\n  });\n}\n\nfunction formatTooltipArrayValue(value, series, dataIndex, tooltipDims, colorStr) {\n  // check: category-no-encode-has-axis-data in dataset.html\n  var data = series.getData();\n  var isValueMultipleLine = reduce(value, function (isValueMultipleLine, val, idx) {\n    var dimItem = data.getDimensionInfo(idx);\n    return isValueMultipleLine = isValueMultipleLine || dimItem && dimItem.tooltip !== false && dimItem.displayName != null;\n  }, false);\n  var inlineValues = [];\n  var inlineValueTypes = [];\n  var blocks = [];\n  tooltipDims.length ? each(tooltipDims, function (dim) {\n    setEachItem(retrieveRawValue(data, dataIndex, dim), dim);\n  }) // By default, all dims is used on tooltip.\n  : each(value, setEachItem);\n\n  function setEachItem(val, dim) {\n    var dimInfo = data.getDimensionInfo(dim); // If `dimInfo.tooltip` is not set, show tooltip.\n\n    if (!dimInfo || dimInfo.otherDims.tooltip === false) {\n      return;\n    }\n\n    if (isValueMultipleLine) {\n      blocks.push(createTooltipMarkup('nameValue', {\n        markerType: 'subItem',\n        markerColor: colorStr,\n        name: dimInfo.displayName,\n        value: val,\n        valueType: dimInfo.type\n      }));\n    } else {\n      inlineValues.push(val);\n      inlineValueTypes.push(dimInfo.type);\n    }\n  }\n\n  return {\n    inlineValues: inlineValues,\n    inlineValueTypes: inlineValueTypes,\n    blocks: blocks\n  };\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { __extends } from \"tslib\";\nimport * as zrUtil from 'zrender/lib/core/util.js';\nimport env from 'zrender/lib/core/env.js';\nimport * as modelUtil from '../util/model.js';\nimport ComponentModel from './Component.js';\nimport { PaletteMixin } from './mixin/palette.js';\nimport { DataFormatMixin } from '../model/mixin/dataFormat.js';\nimport { getLayoutParams, mergeLayoutParam, fetchLayoutMode } from '../util/layout.js';\nimport { createTask } from '../core/task.js';\nimport { mountExtend } from '../util/clazz.js';\nimport { SourceManager } from '../data/helper/sourceManager.js';\nimport { defaultSeriesFormatTooltip } from '../component/tooltip/seriesFormatTooltip.js';\nvar inner = modelUtil.makeInner();\n\nfunction getSelectionKey(data, dataIndex) {\n  return data.getName(dataIndex) || data.getId(dataIndex);\n}\n\nexport var SERIES_UNIVERSAL_TRANSITION_PROP = '__universalTransitionEnabled';\n\nvar SeriesModel =\n/** @class */\nfunction (_super) {\n  __extends(SeriesModel, _super);\n\n  function SeriesModel() {\n    // [Caution]: Because this class or desecendants can be used as `XXX.extend(subProto)`,\n    // the class members must not be initialized in constructor or declaration place.\n    // Otherwise there is bad case:\n    //   class A {xxx = 1;}\n    //   enableClassExtend(A);\n    //   class B extends A {}\n    //   var C = B.extend({xxx: 5});\n    //   var c = new C();\n    //   console.log(c.xxx); // expect 5 but always 1.\n    var _this = _super !== null && _super.apply(this, arguments) || this; // ---------------------------------------\n    // Props about data selection\n    // ---------------------------------------\n\n\n    _this._selectedDataIndicesMap = {};\n    return _this;\n  }\n\n  SeriesModel.prototype.init = function (option, parentModel, ecModel) {\n    this.seriesIndex = this.componentIndex;\n    this.dataTask = createTask({\n      count: dataTaskCount,\n      reset: dataTaskReset\n    });\n    this.dataTask.context = {\n      model: this\n    };\n    this.mergeDefaultAndTheme(option, ecModel);\n    var sourceManager = inner(this).sourceManager = new SourceManager(this);\n    sourceManager.prepareSource();\n    var data = this.getInitialData(option, ecModel);\n    wrapData(data, this);\n    this.dataTask.context.data = data;\n\n    if (process.env.NODE_ENV !== 'production') {\n      zrUtil.assert(data, 'getInitialData returned invalid data.');\n    }\n\n    inner(this).dataBeforeProcessed = data; // If we reverse the order (make data firstly, and then make\n    // dataBeforeProcessed by cloneShallow), cloneShallow will\n    // cause data.graph.data !== data when using\n    // module:echarts/data/Graph or module:echarts/data/Tree.\n    // See module:echarts/data/helper/linkSeriesData\n    // Theoretically, it is unreasonable to call `seriesModel.getData()` in the model\n    // init or merge stage, because the data can be restored. So we do not `restoreData`\n    // and `setData` here, which forbids calling `seriesModel.getData()` in this stage.\n    // Call `seriesModel.getRawData()` instead.\n    // this.restoreData();\n\n    autoSeriesName(this);\n\n    this._initSelectedMapFromData(data);\n  };\n  /**\r\n   * Util for merge default and theme to option\r\n   */\n\n\n  SeriesModel.prototype.mergeDefaultAndTheme = function (option, ecModel) {\n    var layoutMode = fetchLayoutMode(this);\n    var inputPositionParams = layoutMode ? getLayoutParams(option) : {}; // Backward compat: using subType on theme.\n    // But if name duplicate between series subType\n    // (for example: parallel) add component mainType,\n    // add suffix 'Series'.\n\n    var themeSubType = this.subType;\n\n    if (ComponentModel.hasClass(themeSubType)) {\n      themeSubType += 'Series';\n    }\n\n    zrUtil.merge(option, ecModel.getTheme().get(this.subType));\n    zrUtil.merge(option, this.getDefaultOption()); // Default label emphasis `show`\n\n    modelUtil.defaultEmphasis(option, 'label', ['show']);\n    this.fillDataTextStyle(option.data);\n\n    if (layoutMode) {\n      mergeLayoutParam(option, inputPositionParams, layoutMode);\n    }\n  };\n\n  SeriesModel.prototype.mergeOption = function (newSeriesOption, ecModel) {\n    // this.settingTask.dirty();\n    newSeriesOption = zrUtil.merge(this.option, newSeriesOption, true);\n    this.fillDataTextStyle(newSeriesOption.data);\n    var layoutMode = fetchLayoutMode(this);\n\n    if (layoutMode) {\n      mergeLayoutParam(this.option, newSeriesOption, layoutMode);\n    }\n\n    var sourceManager = inner(this).sourceManager;\n    sourceManager.dirty();\n    sourceManager.prepareSource();\n    var data = this.getInitialData(newSeriesOption, ecModel);\n    wrapData(data, this);\n    this.dataTask.dirty();\n    this.dataTask.context.data = data;\n    inner(this).dataBeforeProcessed = data;\n    autoSeriesName(this);\n\n    this._initSelectedMapFromData(data);\n  };\n\n  SeriesModel.prototype.fillDataTextStyle = function (data) {\n    // Default data label emphasis `show`\n    // FIXME Tree structure data ?\n    // FIXME Performance ?\n    if (data && !zrUtil.isTypedArray(data)) {\n      var props = ['show'];\n\n      for (var i = 0; i < data.length; i++) {\n        if (data[i] && data[i].label) {\n          modelUtil.defaultEmphasis(data[i], 'label', props);\n        }\n      }\n    }\n  };\n  /**\r\n   * Init a data structure from data related option in series\r\n   * Must be overridden.\r\n   */\n\n\n  SeriesModel.prototype.getInitialData = function (option, ecModel) {\n    return;\n  };\n  /**\r\n   * Append data to list\r\n   */\n\n\n  SeriesModel.prototype.appendData = function (params) {\n    // FIXME ???\n    // (1) If data from dataset, forbidden append.\n    // (2) support append data of dataset.\n    var data = this.getRawData();\n    data.appendData(params.data);\n  };\n  /**\r\n   * Consider some method like `filter`, `map` need make new data,\r\n   * We should make sure that `seriesModel.getData()` get correct\r\n   * data in the stream procedure. So we fetch data from upstream\r\n   * each time `task.perform` called.\r\n   */\n\n\n  SeriesModel.prototype.getData = function (dataType) {\n    var task = getCurrentTask(this);\n\n    if (task) {\n      var data = task.context.data;\n      return dataType == null ? data : data.getLinkedData(dataType);\n    } else {\n      // When series is not alive (that may happen when click toolbox\n      // restore or setOption with not merge mode), series data may\n      // be still need to judge animation or something when graphic\n      // elements want to know whether fade out.\n      return inner(this).data;\n    }\n  };\n\n  SeriesModel.prototype.getAllData = function () {\n    var mainData = this.getData();\n    return mainData && mainData.getLinkedDataAll ? mainData.getLinkedDataAll() : [{\n      data: mainData\n    }];\n  };\n\n  SeriesModel.prototype.setData = function (data) {\n    var task = getCurrentTask(this);\n\n    if (task) {\n      var context = task.context; // Consider case: filter, data sample.\n      // FIXME:TS never used, so comment it\n      // if (context.data !== data && task.modifyOutputEnd) {\n      //     task.setOutputEnd(data.count());\n      // }\n\n      context.outputData = data; // Caution: setData should update context.data,\n      // Because getData may be called multiply in a\n      // single stage and expect to get the data just\n      // set. (For example, AxisProxy, x y both call\n      // getData and setDate sequentially).\n      // So the context.data should be fetched from\n      // upstream each time when a stage starts to be\n      // performed.\n\n      if (task !== this.dataTask) {\n        context.data = data;\n      }\n    }\n\n    inner(this).data = data;\n  };\n\n  SeriesModel.prototype.getEncode = function () {\n    var encode = this.get('encode', true);\n\n    if (encode) {\n      return zrUtil.createHashMap(encode);\n    }\n  };\n\n  SeriesModel.prototype.getSourceManager = function () {\n    return inner(this).sourceManager;\n  };\n\n  SeriesModel.prototype.getSource = function () {\n    return this.getSourceManager().getSource();\n  };\n  /**\r\n   * Get data before processed\r\n   */\n\n\n  SeriesModel.prototype.getRawData = function () {\n    return inner(this).dataBeforeProcessed;\n  };\n\n  SeriesModel.prototype.getColorBy = function () {\n    var colorBy = this.get('colorBy');\n    return colorBy || 'series';\n  };\n\n  SeriesModel.prototype.isColorBySeries = function () {\n    return this.getColorBy() === 'series';\n  };\n  /**\r\n   * Get base axis if has coordinate system and has axis.\r\n   * By default use coordSys.getBaseAxis();\r\n   * Can be overridden for some chart.\r\n   * @return {type} description\r\n   */\n\n\n  SeriesModel.prototype.getBaseAxis = function () {\n    var coordSys = this.coordinateSystem; // @ts-ignore\n\n    return coordSys && coordSys.getBaseAxis && coordSys.getBaseAxis();\n  };\n  /**\r\n   * Default tooltip formatter\r\n   *\r\n   * @param dataIndex\r\n   * @param multipleSeries\r\n   * @param dataType\r\n   * @param renderMode valid values: 'html'(by default) and 'richText'.\r\n   *        'html' is used for rendering tooltip in extra DOM form, and the result\r\n   *        string is used as DOM HTML content.\r\n   *        'richText' is used for rendering tooltip in rich text form, for those where\r\n   *        DOM operation is not supported.\r\n   * @return formatted tooltip with `html` and `markers`\r\n   *        Notice: The override method can also return string\r\n   */\n\n\n  SeriesModel.prototype.formatTooltip = function (dataIndex, multipleSeries, dataType) {\n    return defaultSeriesFormatTooltip({\n      series: this,\n      dataIndex: dataIndex,\n      multipleSeries: multipleSeries\n    });\n  };\n\n  SeriesModel.prototype.isAnimationEnabled = function () {\n    var ecModel = this.ecModel; // Disable animation if using echarts in node but not give ssr flag.\n    // In ssr mode, renderToString will generate svg with css animation.\n\n    if (env.node && !(ecModel && ecModel.ssr)) {\n      return false;\n    }\n\n    var animationEnabled = this.getShallow('animation');\n\n    if (animationEnabled) {\n      if (this.getData().count() > this.getShallow('animationThreshold')) {\n        animationEnabled = false;\n      }\n    }\n\n    return !!animationEnabled;\n  };\n\n  SeriesModel.prototype.restoreData = function () {\n    this.dataTask.dirty();\n  };\n\n  SeriesModel.prototype.getColorFromPalette = function (name, scope, requestColorNum) {\n    var ecModel = this.ecModel; // PENDING\n\n    var color = PaletteMixin.prototype.getColorFromPalette.call(this, name, scope, requestColorNum);\n\n    if (!color) {\n      color = ecModel.getColorFromPalette(name, scope, requestColorNum);\n    }\n\n    return color;\n  };\n  /**\r\n   * Use `data.mapDimensionsAll(coordDim)` instead.\r\n   * @deprecated\r\n   */\n\n\n  SeriesModel.prototype.coordDimToDataDim = function (coordDim) {\n    return this.getRawData().mapDimensionsAll(coordDim);\n  };\n  /**\r\n   * Get progressive rendering count each step\r\n   */\n\n\n  SeriesModel.prototype.getProgressive = function () {\n    return this.get('progressive');\n  };\n  /**\r\n   * Get progressive rendering count each step\r\n   */\n\n\n  SeriesModel.prototype.getProgressiveThreshold = function () {\n    return this.get('progressiveThreshold');\n  }; // PENGING If selectedMode is null ?\n\n\n  SeriesModel.prototype.select = function (innerDataIndices, dataType) {\n    this._innerSelect(this.getData(dataType), innerDataIndices);\n  };\n\n  SeriesModel.prototype.unselect = function (innerDataIndices, dataType) {\n    var selectedMap = this.option.selectedMap;\n\n    if (!selectedMap) {\n      return;\n    }\n\n    var selectedMode = this.option.selectedMode;\n    var data = this.getData(dataType);\n\n    if (selectedMode === 'series' || selectedMap === 'all') {\n      this.option.selectedMap = {};\n      this._selectedDataIndicesMap = {};\n      return;\n    }\n\n    for (var i = 0; i < innerDataIndices.length; i++) {\n      var dataIndex = innerDataIndices[i];\n      var nameOrId = getSelectionKey(data, dataIndex);\n      selectedMap[nameOrId] = false;\n      this._selectedDataIndicesMap[nameOrId] = -1;\n    }\n  };\n\n  SeriesModel.prototype.toggleSelect = function (innerDataIndices, dataType) {\n    var tmpArr = [];\n\n    for (var i = 0; i < innerDataIndices.length; i++) {\n      tmpArr[0] = innerDataIndices[i];\n      this.isSelected(innerDataIndices[i], dataType) ? this.unselect(tmpArr, dataType) : this.select(tmpArr, dataType);\n    }\n  };\n\n  SeriesModel.prototype.getSelectedDataIndices = function () {\n    if (this.option.selectedMap === 'all') {\n      return [].slice.call(this.getData().getIndices());\n    }\n\n    var selectedDataIndicesMap = this._selectedDataIndicesMap;\n    var nameOrIds = zrUtil.keys(selectedDataIndicesMap);\n    var dataIndices = [];\n\n    for (var i = 0; i < nameOrIds.length; i++) {\n      var dataIndex = selectedDataIndicesMap[nameOrIds[i]];\n\n      if (dataIndex >= 0) {\n        dataIndices.push(dataIndex);\n      }\n    }\n\n    return dataIndices;\n  };\n\n  SeriesModel.prototype.isSelected = function (dataIndex, dataType) {\n    var selectedMap = this.option.selectedMap;\n\n    if (!selectedMap) {\n      return false;\n    }\n\n    var data = this.getData(dataType);\n    return (selectedMap === 'all' || selectedMap[getSelectionKey(data, dataIndex)]) && !data.getItemModel(dataIndex).get(['select', 'disabled']);\n  };\n\n  SeriesModel.prototype.isUniversalTransitionEnabled = function () {\n    if (this[SERIES_UNIVERSAL_TRANSITION_PROP]) {\n      return true;\n    }\n\n    var universalTransitionOpt = this.option.universalTransition; // Quick reject\n\n    if (!universalTransitionOpt) {\n      return false;\n    }\n\n    if (universalTransitionOpt === true) {\n      return true;\n    } // Can be simply 'universalTransition: true'\n\n\n    return universalTransitionOpt && universalTransitionOpt.enabled;\n  };\n\n  SeriesModel.prototype._innerSelect = function (data, innerDataIndices) {\n    var _a, _b;\n\n    var option = this.option;\n    var selectedMode = option.selectedMode;\n    var len = innerDataIndices.length;\n\n    if (!selectedMode || !len) {\n      return;\n    }\n\n    if (selectedMode === 'series') {\n      option.selectedMap = 'all';\n    } else if (selectedMode === 'multiple') {\n      if (!zrUtil.isObject(option.selectedMap)) {\n        option.selectedMap = {};\n      }\n\n      var selectedMap = option.selectedMap;\n\n      for (var i = 0; i < len; i++) {\n        var dataIndex = innerDataIndices[i]; // TODO different types of data share same object.\n\n        var nameOrId = getSelectionKey(data, dataIndex);\n        selectedMap[nameOrId] = true;\n        this._selectedDataIndicesMap[nameOrId] = data.getRawIndex(dataIndex);\n      }\n    } else if (selectedMode === 'single' || selectedMode === true) {\n      var lastDataIndex = innerDataIndices[len - 1];\n      var nameOrId = getSelectionKey(data, lastDataIndex);\n      option.selectedMap = (_a = {}, _a[nameOrId] = true, _a);\n      this._selectedDataIndicesMap = (_b = {}, _b[nameOrId] = data.getRawIndex(lastDataIndex), _b);\n    }\n  };\n\n  SeriesModel.prototype._initSelectedMapFromData = function (data) {\n    // Ignore select info in data if selectedMap exists.\n    // NOTE It's only for legacy usage. edge data is not supported.\n    if (this.option.selectedMap) {\n      return;\n    }\n\n    var dataIndices = [];\n\n    if (data.hasItemOption) {\n      data.each(function (idx) {\n        var rawItem = data.getRawDataItem(idx);\n\n        if (rawItem && rawItem.selected) {\n          dataIndices.push(idx);\n        }\n      });\n    }\n\n    if (dataIndices.length > 0) {\n      this._innerSelect(data, dataIndices);\n    }\n  }; // /**\n  //  * @see {module:echarts/stream/Scheduler}\n  //  */\n  // abstract pipeTask: null\n\n\n  SeriesModel.registerClass = function (clz) {\n    return ComponentModel.registerClass(clz);\n  };\n\n  SeriesModel.protoInitialize = function () {\n    var proto = SeriesModel.prototype;\n    proto.type = 'series.__base__';\n    proto.seriesIndex = 0;\n    proto.ignoreStyleOnData = false;\n    proto.hasSymbolVisual = false;\n    proto.defaultSymbol = 'circle'; // Make sure the values can be accessed!\n\n    proto.visualStyleAccessPath = 'itemStyle';\n    proto.visualDrawType = 'fill';\n  }();\n\n  return SeriesModel;\n}(ComponentModel);\n\nzrUtil.mixin(SeriesModel, DataFormatMixin);\nzrUtil.mixin(SeriesModel, PaletteMixin);\nmountExtend(SeriesModel, ComponentModel);\n/**\r\n * MUST be called after `prepareSource` called\r\n * Here we need to make auto series, especially for auto legend. But we\r\n * do not modify series.name in option to avoid side effects.\r\n */\n\nfunction autoSeriesName(seriesModel) {\n  // User specified name has higher priority, otherwise it may cause\n  // series can not be queried unexpectedly.\n  var name = seriesModel.name;\n\n  if (!modelUtil.isNameSpecified(seriesModel)) {\n    seriesModel.name = getSeriesAutoName(seriesModel) || name;\n  }\n}\n\nfunction getSeriesAutoName(seriesModel) {\n  var data = seriesModel.getRawData();\n  var dataDims = data.mapDimensionsAll('seriesName');\n  var nameArr = [];\n  zrUtil.each(dataDims, function (dataDim) {\n    var dimInfo = data.getDimensionInfo(dataDim);\n    dimInfo.displayName && nameArr.push(dimInfo.displayName);\n  });\n  return nameArr.join(' ');\n}\n\nfunction dataTaskCount(context) {\n  return context.model.getRawData().count();\n}\n\nfunction dataTaskReset(context) {\n  var seriesModel = context.model;\n  seriesModel.setData(seriesModel.getRawData().cloneShallow());\n  return dataTaskProgress;\n}\n\nfunction dataTaskProgress(param, context) {\n  // Avoid repeat cloneShallow when data just created in reset.\n  if (context.outputData && param.end > context.outputData.count()) {\n    context.model.getRawData().cloneShallow(context.outputData);\n  }\n} // TODO refactor\n\n\nfunction wrapData(data, seriesModel) {\n  zrUtil.each(zrUtil.concatArray(data.CHANGABLE_METHODS, data.DOWNSAMPLE_METHODS), function (methodName) {\n    data.wrapMethod(methodName, zrUtil.curry(onDataChange, seriesModel));\n  });\n}\n\nfunction onDataChange(seriesModel, newList) {\n  var task = getCurrentTask(seriesModel);\n\n  if (task) {\n    // Consider case: filter, selectRange\n    task.setOutputEnd((newList || this).count());\n  }\n\n  return newList;\n}\n\nfunction getCurrentTask(seriesModel) {\n  var scheduler = (seriesModel.ecModel || {}).scheduler;\n  var pipeline = scheduler && scheduler.getPipeline(seriesModel.uid);\n\n  if (pipeline) {\n    // When pipline finished, the currrentTask keep the last\n    // task (renderTask).\n    var task = pipeline.currentTask;\n\n    if (task) {\n      var agentStubMap = task.agentStubMap;\n\n      if (agentStubMap) {\n        task = agentStubMap.get(seriesModel.uid);\n      }\n    }\n\n    return task;\n  }\n}\n\nexport default SeriesModel;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport Group from 'zrender/lib/graphic/Group.js';\nimport * as componentUtil from '../util/component.js';\nimport * as clazzUtil from '../util/clazz.js';\n\nvar ComponentView =\n/** @class */\nfunction () {\n  function ComponentView() {\n    this.group = new Group();\n    this.uid = componentUtil.getUID('viewComponent');\n  }\n\n  ComponentView.prototype.init = function (ecModel, api) {};\n\n  ComponentView.prototype.render = function (model, ecModel, api, payload) {};\n\n  ComponentView.prototype.dispose = function (ecModel, api) {};\n\n  ComponentView.prototype.updateView = function (model, ecModel, api, payload) {// Do nothing;\n  };\n\n  ComponentView.prototype.updateLayout = function (model, ecModel, api, payload) {// Do nothing;\n  };\n\n  ComponentView.prototype.updateVisual = function (model, ecModel, api, payload) {// Do nothing;\n  };\n  /**\r\n   * Hook for toggle blur target series.\r\n   * Can be used in marker for blur or leave blur the markers\r\n   */\n\n\n  ComponentView.prototype.toggleBlurSeries = function (seriesModels, isBlur, ecModel) {// Do nothing;\n  };\n  /**\r\n   * Traverse the new rendered elements.\r\n   *\r\n   * It will traverse the new added element in progressive rendering.\r\n   * And traverse all in normal rendering.\r\n   */\n\n\n  ComponentView.prototype.eachRendered = function (cb) {\n    var group = this.group;\n\n    if (group) {\n      group.traverse(cb);\n    }\n  };\n\n  return ComponentView;\n}();\n\n;\nclazzUtil.enableClassExtend(ComponentView);\nclazzUtil.enableClassManagement(ComponentView);\nexport default ComponentView;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { makeInner } from '../../util/model.js';\n/**\r\n * @return {string} If large mode changed, return string 'reset';\r\n */\n\nexport default function createRenderPlanner() {\n  var inner = makeInner();\n  return function (seriesModel) {\n    var fields = inner(seriesModel);\n    var pipelineContext = seriesModel.pipelineContext;\n    var originalLarge = !!fields.large;\n    var originalProgressive = !!fields.progressiveRender; // FIXME: if the planner works on a filtered series, `pipelineContext` does not\n    // exists. See #11611 . Probably we need to modify this structure, see the comment\n    // on `performRawSeries` in `Schedular.js`.\n\n    var large = fields.large = !!(pipelineContext && pipelineContext.large);\n    var progressive = fields.progressiveRender = !!(pipelineContext && pipelineContext.progressiveRender);\n    return !!(originalLarge !== large || originalProgressive !== progressive) && 'reset';\n  };\n}","import PathProxy from '../core/PathProxy.js';\nimport { applyTransform as v2ApplyTransform } from '../core/vector.js';\nvar CMD = PathProxy.CMD;\nvar points = [[], [], []];\nvar mathSqrt = Math.sqrt;\nvar mathAtan2 = Math.atan2;\nexport default function transformPath(path, m) {\n    if (!m) {\n        return;\n    }\n    var data = path.data;\n    var len = path.len();\n    var cmd;\n    var nPoint;\n    var i;\n    var j;\n    var k;\n    var p;\n    var M = CMD.M;\n    var C = CMD.C;\n    var L = CMD.L;\n    var R = CMD.R;\n    var A = CMD.A;\n    var Q = CMD.Q;\n    for (i = 0, j = 0; i < len;) {\n        cmd = data[i++];\n        j = i;\n        nPoint = 0;\n        switch (cmd) {\n            case M:\n                nPoint = 1;\n                break;\n            case L:\n                nPoint = 1;\n                break;\n            case C:\n                nPoint = 3;\n                break;\n            case Q:\n                nPoint = 2;\n                break;\n            case A:\n                var x = m[4];\n                var y = m[5];\n                var sx = mathSqrt(m[0] * m[0] + m[1] * m[1]);\n                var sy = mathSqrt(m[2] * m[2] + m[3] * m[3]);\n                var angle = mathAtan2(-m[1] / sy, m[0] / sx);\n                data[i] *= sx;\n                data[i++] += x;\n                data[i] *= sy;\n                data[i++] += y;\n                data[i++] *= sx;\n                data[i++] *= sy;\n                data[i++] += angle;\n                data[i++] += angle;\n                i += 2;\n                j = i;\n                break;\n            case R:\n                p[0] = data[i++];\n                p[1] = data[i++];\n                v2ApplyTransform(p, p, m);\n                data[j++] = p[0];\n                data[j++] = p[1];\n                p[0] += data[i++];\n                p[1] += data[i++];\n                v2ApplyTransform(p, p, m);\n                data[j++] = p[0];\n                data[j++] = p[1];\n        }\n        for (k = 0; k < nPoint; k++) {\n            var p_1 = points[k];\n            p_1[0] = data[i++];\n            p_1[1] = data[i++];\n            v2ApplyTransform(p_1, p_1, m);\n            data[j++] = p_1[0];\n            data[j++] = p_1[1];\n        }\n    }\n    path.increaseVersion();\n}\n","import { __extends } from \"tslib\";\nimport Path from '../graphic/Path.js';\nimport PathProxy from '../core/PathProxy.js';\nimport transformPath from './transformPath.js';\nimport { extend } from '../core/util.js';\nvar mathSqrt = Math.sqrt;\nvar mathSin = Math.sin;\nvar mathCos = Math.cos;\nvar PI = Math.PI;\nfunction vMag(v) {\n    return Math.sqrt(v[0] * v[0] + v[1] * v[1]);\n}\n;\nfunction vRatio(u, v) {\n    return (u[0] * v[0] + u[1] * v[1]) / (vMag(u) * vMag(v));\n}\n;\nfunction vAngle(u, v) {\n    return (u[0] * v[1] < u[1] * v[0] ? -1 : 1)\n        * Math.acos(vRatio(u, v));\n}\n;\nfunction processArc(x1, y1, x2, y2, fa, fs, rx, ry, psiDeg, cmd, path) {\n    var psi = psiDeg * (PI / 180.0);\n    var xp = mathCos(psi) * (x1 - x2) / 2.0\n        + mathSin(psi) * (y1 - y2) / 2.0;\n    var yp = -1 * mathSin(psi) * (x1 - x2) / 2.0\n        + mathCos(psi) * (y1 - y2) / 2.0;\n    var lambda = (xp * xp) / (rx * rx) + (yp * yp) / (ry * ry);\n    if (lambda > 1) {\n        rx *= mathSqrt(lambda);\n        ry *= mathSqrt(lambda);\n    }\n    var f = (fa === fs ? -1 : 1)\n        * mathSqrt((((rx * rx) * (ry * ry))\n            - ((rx * rx) * (yp * yp))\n            - ((ry * ry) * (xp * xp))) / ((rx * rx) * (yp * yp)\n            + (ry * ry) * (xp * xp))) || 0;\n    var cxp = f * rx * yp / ry;\n    var cyp = f * -ry * xp / rx;\n    var cx = (x1 + x2) / 2.0\n        + mathCos(psi) * cxp\n        - mathSin(psi) * cyp;\n    var cy = (y1 + y2) / 2.0\n        + mathSin(psi) * cxp\n        + mathCos(psi) * cyp;\n    var theta = vAngle([1, 0], [(xp - cxp) / rx, (yp - cyp) / ry]);\n    var u = [(xp - cxp) / rx, (yp - cyp) / ry];\n    var v = [(-1 * xp - cxp) / rx, (-1 * yp - cyp) / ry];\n    var dTheta = vAngle(u, v);\n    if (vRatio(u, v) <= -1) {\n        dTheta = PI;\n    }\n    if (vRatio(u, v) >= 1) {\n        dTheta = 0;\n    }\n    if (dTheta < 0) {\n        var n = Math.round(dTheta / PI * 1e6) / 1e6;\n        dTheta = PI * 2 + (n % 2) * PI;\n    }\n    path.addData(cmd, cx, cy, rx, ry, theta, dTheta, psi, fs);\n}\nvar commandReg = /([mlvhzcqtsa])([^mlvhzcqtsa]*)/ig;\nvar numberReg = /-?([0-9]*\\.)?[0-9]+([eE]-?[0-9]+)?/g;\nfunction createPathProxyFromString(data) {\n    var path = new PathProxy();\n    if (!data) {\n        return path;\n    }\n    var cpx = 0;\n    var cpy = 0;\n    var subpathX = cpx;\n    var subpathY = cpy;\n    var prevCmd;\n    var CMD = PathProxy.CMD;\n    var cmdList = data.match(commandReg);\n    if (!cmdList) {\n        return path;\n    }\n    for (var l = 0; l < cmdList.length; l++) {\n        var cmdText = cmdList[l];\n        var cmdStr = cmdText.charAt(0);\n        var cmd = void 0;\n        var p = cmdText.match(numberReg) || [];\n        var pLen = p.length;\n        for (var i = 0; i < pLen; i++) {\n            p[i] = parseFloat(p[i]);\n        }\n        var off = 0;\n        while (off < pLen) {\n            var ctlPtx = void 0;\n            var ctlPty = void 0;\n            var rx = void 0;\n            var ry = void 0;\n            var psi = void 0;\n            var fa = void 0;\n            var fs = void 0;\n            var x1 = cpx;\n            var y1 = cpy;\n            var len = void 0;\n            var pathData = void 0;\n            switch (cmdStr) {\n                case 'l':\n                    cpx += p[off++];\n                    cpy += p[off++];\n                    cmd = CMD.L;\n                    path.addData(cmd, cpx, cpy);\n                    break;\n                case 'L':\n                    cpx = p[off++];\n                    cpy = p[off++];\n                    cmd = CMD.L;\n                    path.addData(cmd, cpx, cpy);\n                    break;\n                case 'm':\n                    cpx += p[off++];\n                    cpy += p[off++];\n                    cmd = CMD.M;\n                    path.addData(cmd, cpx, cpy);\n                    subpathX = cpx;\n                    subpathY = cpy;\n                    cmdStr = 'l';\n                    break;\n                case 'M':\n                    cpx = p[off++];\n                    cpy = p[off++];\n                    cmd = CMD.M;\n                    path.addData(cmd, cpx, cpy);\n                    subpathX = cpx;\n                    subpathY = cpy;\n                    cmdStr = 'L';\n                    break;\n                case 'h':\n                    cpx += p[off++];\n                    cmd = CMD.L;\n                    path.addData(cmd, cpx, cpy);\n                    break;\n                case 'H':\n                    cpx = p[off++];\n                    cmd = CMD.L;\n                    path.addData(cmd, cpx, cpy);\n                    break;\n                case 'v':\n                    cpy += p[off++];\n                    cmd = CMD.L;\n                    path.addData(cmd, cpx, cpy);\n                    break;\n                case 'V':\n                    cpy = p[off++];\n                    cmd = CMD.L;\n                    path.addData(cmd, cpx, cpy);\n                    break;\n                case 'C':\n                    cmd = CMD.C;\n                    path.addData(cmd, p[off++], p[off++], p[off++], p[off++], p[off++], p[off++]);\n                    cpx = p[off - 2];\n                    cpy = p[off - 1];\n                    break;\n                case 'c':\n                    cmd = CMD.C;\n                    path.addData(cmd, p[off++] + cpx, p[off++] + cpy, p[off++] + cpx, p[off++] + cpy, p[off++] + cpx, p[off++] + cpy);\n                    cpx += p[off - 2];\n                    cpy += p[off - 1];\n                    break;\n                case 'S':\n                    ctlPtx = cpx;\n                    ctlPty = cpy;\n                    len = path.len();\n                    pathData = path.data;\n                    if (prevCmd === CMD.C) {\n                        ctlPtx += cpx - pathData[len - 4];\n                        ctlPty += cpy - pathData[len - 3];\n                    }\n                    cmd = CMD.C;\n                    x1 = p[off++];\n                    y1 = p[off++];\n                    cpx = p[off++];\n                    cpy = p[off++];\n                    path.addData(cmd, ctlPtx, ctlPty, x1, y1, cpx, cpy);\n                    break;\n                case 's':\n                    ctlPtx = cpx;\n                    ctlPty = cpy;\n                    len = path.len();\n                    pathData = path.data;\n                    if (prevCmd === CMD.C) {\n                        ctlPtx += cpx - pathData[len - 4];\n                        ctlPty += cpy - pathData[len - 3];\n                    }\n                    cmd = CMD.C;\n                    x1 = cpx + p[off++];\n                    y1 = cpy + p[off++];\n                    cpx += p[off++];\n                    cpy += p[off++];\n                    path.addData(cmd, ctlPtx, ctlPty, x1, y1, cpx, cpy);\n                    break;\n                case 'Q':\n                    x1 = p[off++];\n                    y1 = p[off++];\n                    cpx = p[off++];\n                    cpy = p[off++];\n                    cmd = CMD.Q;\n                    path.addData(cmd, x1, y1, cpx, cpy);\n                    break;\n                case 'q':\n                    x1 = p[off++] + cpx;\n                    y1 = p[off++] + cpy;\n                    cpx += p[off++];\n                    cpy += p[off++];\n                    cmd = CMD.Q;\n                    path.addData(cmd, x1, y1, cpx, cpy);\n                    break;\n                case 'T':\n                    ctlPtx = cpx;\n                    ctlPty = cpy;\n                    len = path.len();\n                    pathData = path.data;\n                    if (prevCmd === CMD.Q) {\n                        ctlPtx += cpx - pathData[len - 4];\n                        ctlPty += cpy - pathData[len - 3];\n                    }\n                    cpx = p[off++];\n                    cpy = p[off++];\n                    cmd = CMD.Q;\n                    path.addData(cmd, ctlPtx, ctlPty, cpx, cpy);\n                    break;\n                case 't':\n                    ctlPtx = cpx;\n                    ctlPty = cpy;\n                    len = path.len();\n                    pathData = path.data;\n                    if (prevCmd === CMD.Q) {\n                        ctlPtx += cpx - pathData[len - 4];\n                        ctlPty += cpy - pathData[len - 3];\n                    }\n                    cpx += p[off++];\n                    cpy += p[off++];\n                    cmd = CMD.Q;\n                    path.addData(cmd, ctlPtx, ctlPty, cpx, cpy);\n                    break;\n                case 'A':\n                    rx = p[off++];\n                    ry = p[off++];\n                    psi = p[off++];\n                    fa = p[off++];\n                    fs = p[off++];\n                    x1 = cpx, y1 = cpy;\n                    cpx = p[off++];\n                    cpy = p[off++];\n                    cmd = CMD.A;\n                    processArc(x1, y1, cpx, cpy, fa, fs, rx, ry, psi, cmd, path);\n                    break;\n                case 'a':\n                    rx = p[off++];\n                    ry = p[off++];\n                    psi = p[off++];\n                    fa = p[off++];\n                    fs = p[off++];\n                    x1 = cpx, y1 = cpy;\n                    cpx += p[off++];\n                    cpy += p[off++];\n                    cmd = CMD.A;\n                    processArc(x1, y1, cpx, cpy, fa, fs, rx, ry, psi, cmd, path);\n                    break;\n            }\n        }\n        if (cmdStr === 'z' || cmdStr === 'Z') {\n            cmd = CMD.Z;\n            path.addData(cmd);\n            cpx = subpathX;\n            cpy = subpathY;\n        }\n        prevCmd = cmd;\n    }\n    path.toStatic();\n    return path;\n}\nvar SVGPath = (function (_super) {\n    __extends(SVGPath, _super);\n    function SVGPath() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    SVGPath.prototype.applyTransform = function (m) { };\n    return SVGPath;\n}(Path));\nfunction isPathProxy(path) {\n    return path.setData != null;\n}\nfunction createPathOptions(str, opts) {\n    var pathProxy = createPathProxyFromString(str);\n    var innerOpts = extend({}, opts);\n    innerOpts.buildPath = function (path) {\n        if (isPathProxy(path)) {\n            path.setData(pathProxy.data);\n            var ctx = path.getContext();\n            if (ctx) {\n                path.rebuildPath(ctx, 1);\n            }\n        }\n        else {\n            var ctx = path;\n            pathProxy.rebuildPath(ctx, 1);\n        }\n    };\n    innerOpts.applyTransform = function (m) {\n        transformPath(pathProxy, m);\n        this.dirtyShape();\n    };\n    return innerOpts;\n}\nexport function createFromString(str, opts) {\n    return new SVGPath(createPathOptions(str, opts));\n}\nexport function extendFromString(str, defaultOpts) {\n    var innerOpts = createPathOptions(str, defaultOpts);\n    var Sub = (function (_super) {\n        __extends(Sub, _super);\n        function Sub(opts) {\n            var _this = _super.call(this, opts) || this;\n            _this.applyTransform = innerOpts.applyTransform;\n            _this.buildPath = innerOpts.buildPath;\n            return _this;\n        }\n        return Sub;\n    }(SVGPath));\n    return Sub;\n}\nexport function mergePath(pathEls, opts) {\n    var pathList = [];\n    var len = pathEls.length;\n    for (var i = 0; i < len; i++) {\n        var pathEl = pathEls[i];\n        pathList.push(pathEl.getUpdatedPathProxy(true));\n    }\n    var pathBundle = new Path(opts);\n    pathBundle.createPathProxy();\n    pathBundle.buildPath = function (path) {\n        if (isPathProxy(path)) {\n            path.appendPath(pathList);\n            var ctx = path.getContext();\n            if (ctx) {\n                path.rebuildPath(ctx, 1);\n            }\n        }\n    };\n    return pathBundle;\n}\nexport function clonePath(sourcePath, opts) {\n    opts = opts || {};\n    var path = new Path();\n    if (sourcePath.shape) {\n        path.setShape(sourcePath.shape);\n    }\n    path.setStyle(sourcePath.style);\n    if (opts.bakeTransform) {\n        transformPath(path.path, sourcePath.getComputedTransform());\n    }\n    else {\n        if (opts.toLocal) {\n            path.setLocalTransform(sourcePath.getComputedTransform());\n        }\n        else {\n            path.copyTransform(sourcePath);\n        }\n    }\n    path.buildPath = sourcePath.buildPath;\n    path.applyTransform = path.applyTransform;\n    path.z = sourcePath.z;\n    path.z2 = sourcePath.z2;\n    path.zlevel = sourcePath.zlevel;\n    return path;\n}\n","import { __extends } from \"tslib\";\nimport Path from '../Path.js';\nvar CircleShape = (function () {\n    function CircleShape() {\n        this.cx = 0;\n        this.cy = 0;\n        this.r = 0;\n    }\n    return CircleShape;\n}());\nexport { CircleShape };\nvar Circle = (function (_super) {\n    __extends(Circle, _super);\n    function Circle(opts) {\n        return _super.call(this, opts) || this;\n    }\n    Circle.prototype.getDefaultShape = function () {\n        return new CircleShape();\n    };\n    Circle.prototype.buildPath = function (ctx, shape) {\n        ctx.moveTo(shape.cx + shape.r, shape.cy);\n        ctx.arc(shape.cx, shape.cy, shape.r, 0, Math.PI * 2);\n    };\n    return Circle;\n}(Path));\n;\nCircle.prototype.type = 'circle';\nexport default Circle;\n","import { __extends } from \"tslib\";\nimport Path from '../Path.js';\nvar EllipseShape = (function () {\n    function EllipseShape() {\n        this.cx = 0;\n        this.cy = 0;\n        this.rx = 0;\n        this.ry = 0;\n    }\n    return EllipseShape;\n}());\nexport { EllipseShape };\nvar Ellipse = (function (_super) {\n    __extends(Ellipse, _super);\n    function Ellipse(opts) {\n        return _super.call(this, opts) || this;\n    }\n    Ellipse.prototype.getDefaultShape = function () {\n        return new EllipseShape();\n    };\n    Ellipse.prototype.buildPath = function (ctx, shape) {\n        var k = 0.5522848;\n        var x = shape.cx;\n        var y = shape.cy;\n        var a = shape.rx;\n        var b = shape.ry;\n        var ox = a * k;\n        var oy = b * k;\n        ctx.moveTo(x - a, y);\n        ctx.bezierCurveTo(x - a, y - oy, x - ox, y - b, x, y - b);\n        ctx.bezierCurveTo(x + ox, y - b, x + a, y - oy, x + a, y);\n        ctx.bezierCurveTo(x + a, y + oy, x + ox, y + b, x, y + b);\n        ctx.bezierCurveTo(x - ox, y + b, x - a, y + oy, x - a, y);\n        ctx.closePath();\n    };\n    return Ellipse;\n}(Path));\nEllipse.prototype.type = 'ellipse';\nexport default Ellipse;\n","import { isArray } from '../../core/util.js';\nvar PI = Math.PI;\nvar PI2 = PI * 2;\nvar mathSin = Math.sin;\nvar mathCos = Math.cos;\nvar mathACos = Math.acos;\nvar mathATan2 = Math.atan2;\nvar mathAbs = Math.abs;\nvar mathSqrt = Math.sqrt;\nvar mathMax = Math.max;\nvar mathMin = Math.min;\nvar e = 1e-4;\nfunction intersect(x0, y0, x1, y1, x2, y2, x3, y3) {\n    var dx10 = x1 - x0;\n    var dy10 = y1 - y0;\n    var dx32 = x3 - x2;\n    var dy32 = y3 - y2;\n    var t = dy32 * dx10 - dx32 * dy10;\n    if (t * t < e) {\n        return;\n    }\n    t = (dx32 * (y0 - y2) - dy32 * (x0 - x2)) / t;\n    return [x0 + t * dx10, y0 + t * dy10];\n}\nfunction computeCornerTangents(x0, y0, x1, y1, radius, cr, clockwise) {\n    var x01 = x0 - x1;\n    var y01 = y0 - y1;\n    var lo = (clockwise ? cr : -cr) / mathSqrt(x01 * x01 + y01 * y01);\n    var ox = lo * y01;\n    var oy = -lo * x01;\n    var x11 = x0 + ox;\n    var y11 = y0 + oy;\n    var x10 = x1 + ox;\n    var y10 = y1 + oy;\n    var x00 = (x11 + x10) / 2;\n    var y00 = (y11 + y10) / 2;\n    var dx = x10 - x11;\n    var dy = y10 - y11;\n    var d2 = dx * dx + dy * dy;\n    var r = radius - cr;\n    var s = x11 * y10 - x10 * y11;\n    var d = (dy < 0 ? -1 : 1) * mathSqrt(mathMax(0, r * r * d2 - s * s));\n    var cx0 = (s * dy - dx * d) / d2;\n    var cy0 = (-s * dx - dy * d) / d2;\n    var cx1 = (s * dy + dx * d) / d2;\n    var cy1 = (-s * dx + dy * d) / d2;\n    var dx0 = cx0 - x00;\n    var dy0 = cy0 - y00;\n    var dx1 = cx1 - x00;\n    var dy1 = cy1 - y00;\n    if (dx0 * dx0 + dy0 * dy0 > dx1 * dx1 + dy1 * dy1) {\n        cx0 = cx1;\n        cy0 = cy1;\n    }\n    return {\n        cx: cx0,\n        cy: cy0,\n        x0: -ox,\n        y0: -oy,\n        x1: cx0 * (radius / r - 1),\n        y1: cy0 * (radius / r - 1)\n    };\n}\nfunction normalizeCornerRadius(cr) {\n    var arr;\n    if (isArray(cr)) {\n        var len = cr.length;\n        if (!len) {\n            return cr;\n        }\n        if (len === 1) {\n            arr = [cr[0], cr[0], 0, 0];\n        }\n        else if (len === 2) {\n            arr = [cr[0], cr[0], cr[1], cr[1]];\n        }\n        else if (len === 3) {\n            arr = cr.concat(cr[2]);\n        }\n        else {\n            arr = cr;\n        }\n    }\n    else {\n        arr = [cr, cr, cr, cr];\n    }\n    return arr;\n}\nexport function buildPath(ctx, shape) {\n    var _a;\n    var radius = mathMax(shape.r, 0);\n    var innerRadius = mathMax(shape.r0 || 0, 0);\n    var hasRadius = radius > 0;\n    var hasInnerRadius = innerRadius > 0;\n    if (!hasRadius && !hasInnerRadius) {\n        return;\n    }\n    if (!hasRadius) {\n        radius = innerRadius;\n        innerRadius = 0;\n    }\n    if (innerRadius > radius) {\n        var tmp = radius;\n        radius = innerRadius;\n        innerRadius = tmp;\n    }\n    var startAngle = shape.startAngle, endAngle = shape.endAngle;\n    if (isNaN(startAngle) || isNaN(endAngle)) {\n        return;\n    }\n    var cx = shape.cx, cy = shape.cy;\n    var clockwise = !!shape.clockwise;\n    var arc = mathAbs(endAngle - startAngle);\n    var mod = arc > PI2 && arc % PI2;\n    mod > e && (arc = mod);\n    if (!(radius > e)) {\n        ctx.moveTo(cx, cy);\n    }\n    else if (arc > PI2 - e) {\n        ctx.moveTo(cx + radius * mathCos(startAngle), cy + radius * mathSin(startAngle));\n        ctx.arc(cx, cy, radius, startAngle, endAngle, !clockwise);\n        if (innerRadius > e) {\n            ctx.moveTo(cx + innerRadius * mathCos(endAngle), cy + innerRadius * mathSin(endAngle));\n            ctx.arc(cx, cy, innerRadius, endAngle, startAngle, clockwise);\n        }\n    }\n    else {\n        var icrStart = void 0;\n        var icrEnd = void 0;\n        var ocrStart = void 0;\n        var ocrEnd = void 0;\n        var ocrs = void 0;\n        var ocre = void 0;\n        var icrs = void 0;\n        var icre = void 0;\n        var ocrMax = void 0;\n        var icrMax = void 0;\n        var limitedOcrMax = void 0;\n        var limitedIcrMax = void 0;\n        var xre = void 0;\n        var yre = void 0;\n        var xirs = void 0;\n        var yirs = void 0;\n        var xrs = radius * mathCos(startAngle);\n        var yrs = radius * mathSin(startAngle);\n        var xire = innerRadius * mathCos(endAngle);\n        var yire = innerRadius * mathSin(endAngle);\n        var hasArc = arc > e;\n        if (hasArc) {\n            var cornerRadius = shape.cornerRadius;\n            if (cornerRadius) {\n                _a = normalizeCornerRadius(cornerRadius), icrStart = _a[0], icrEnd = _a[1], ocrStart = _a[2], ocrEnd = _a[3];\n            }\n            var halfRd = mathAbs(radius - innerRadius) / 2;\n            ocrs = mathMin(halfRd, ocrStart);\n            ocre = mathMin(halfRd, ocrEnd);\n            icrs = mathMin(halfRd, icrStart);\n            icre = mathMin(halfRd, icrEnd);\n            limitedOcrMax = ocrMax = mathMax(ocrs, ocre);\n            limitedIcrMax = icrMax = mathMax(icrs, icre);\n            if (ocrMax > e || icrMax > e) {\n                xre = radius * mathCos(endAngle);\n                yre = radius * mathSin(endAngle);\n                xirs = innerRadius * mathCos(startAngle);\n                yirs = innerRadius * mathSin(startAngle);\n                if (arc < PI) {\n                    var it_1 = intersect(xrs, yrs, xirs, yirs, xre, yre, xire, yire);\n                    if (it_1) {\n                        var x0 = xrs - it_1[0];\n                        var y0 = yrs - it_1[1];\n                        var x1 = xre - it_1[0];\n                        var y1 = yre - it_1[1];\n                        var a = 1 / mathSin(mathACos((x0 * x1 + y0 * y1) / (mathSqrt(x0 * x0 + y0 * y0) * mathSqrt(x1 * x1 + y1 * y1))) / 2);\n                        var b = mathSqrt(it_1[0] * it_1[0] + it_1[1] * it_1[1]);\n                        limitedOcrMax = mathMin(ocrMax, (radius - b) / (a + 1));\n                        limitedIcrMax = mathMin(icrMax, (innerRadius - b) / (a - 1));\n                    }\n                }\n            }\n        }\n        if (!hasArc) {\n            ctx.moveTo(cx + xrs, cy + yrs);\n        }\n        else if (limitedOcrMax > e) {\n            var crStart = mathMin(ocrStart, limitedOcrMax);\n            var crEnd = mathMin(ocrEnd, limitedOcrMax);\n            var ct0 = computeCornerTangents(xirs, yirs, xrs, yrs, radius, crStart, clockwise);\n            var ct1 = computeCornerTangents(xre, yre, xire, yire, radius, crEnd, clockwise);\n            ctx.moveTo(cx + ct0.cx + ct0.x0, cy + ct0.cy + ct0.y0);\n            if (limitedOcrMax < ocrMax && crStart === crEnd) {\n                ctx.arc(cx + ct0.cx, cy + ct0.cy, limitedOcrMax, mathATan2(ct0.y0, ct0.x0), mathATan2(ct1.y0, ct1.x0), !clockwise);\n            }\n            else {\n                crStart > 0 && ctx.arc(cx + ct0.cx, cy + ct0.cy, crStart, mathATan2(ct0.y0, ct0.x0), mathATan2(ct0.y1, ct0.x1), !clockwise);\n                ctx.arc(cx, cy, radius, mathATan2(ct0.cy + ct0.y1, ct0.cx + ct0.x1), mathATan2(ct1.cy + ct1.y1, ct1.cx + ct1.x1), !clockwise);\n                crEnd > 0 && ctx.arc(cx + ct1.cx, cy + ct1.cy, crEnd, mathATan2(ct1.y1, ct1.x1), mathATan2(ct1.y0, ct1.x0), !clockwise);\n            }\n        }\n        else {\n            ctx.moveTo(cx + xrs, cy + yrs);\n            ctx.arc(cx, cy, radius, startAngle, endAngle, !clockwise);\n        }\n        if (!(innerRadius > e) || !hasArc) {\n            ctx.lineTo(cx + xire, cy + yire);\n        }\n        else if (limitedIcrMax > e) {\n            var crStart = mathMin(icrStart, limitedIcrMax);\n            var crEnd = mathMin(icrEnd, limitedIcrMax);\n            var ct0 = computeCornerTangents(xire, yire, xre, yre, innerRadius, -crEnd, clockwise);\n            var ct1 = computeCornerTangents(xrs, yrs, xirs, yirs, innerRadius, -crStart, clockwise);\n            ctx.lineTo(cx + ct0.cx + ct0.x0, cy + ct0.cy + ct0.y0);\n            if (limitedIcrMax < icrMax && crStart === crEnd) {\n                ctx.arc(cx + ct0.cx, cy + ct0.cy, limitedIcrMax, mathATan2(ct0.y0, ct0.x0), mathATan2(ct1.y0, ct1.x0), !clockwise);\n            }\n            else {\n                crEnd > 0 && ctx.arc(cx + ct0.cx, cy + ct0.cy, crEnd, mathATan2(ct0.y0, ct0.x0), mathATan2(ct0.y1, ct0.x1), !clockwise);\n                ctx.arc(cx, cy, innerRadius, mathATan2(ct0.cy + ct0.y1, ct0.cx + ct0.x1), mathATan2(ct1.cy + ct1.y1, ct1.cx + ct1.x1), clockwise);\n                crStart > 0 && ctx.arc(cx + ct1.cx, cy + ct1.cy, crStart, mathATan2(ct1.y1, ct1.x1), mathATan2(ct1.y0, ct1.x0), !clockwise);\n            }\n        }\n        else {\n            ctx.lineTo(cx + xire, cy + yire);\n            ctx.arc(cx, cy, innerRadius, endAngle, startAngle, clockwise);\n        }\n    }\n    ctx.closePath();\n}\n","import { __extends } from \"tslib\";\nimport Path from '../Path.js';\nimport * as roundSectorHelper from '../helper/roundSector.js';\nvar SectorShape = (function () {\n    function SectorShape() {\n        this.cx = 0;\n        this.cy = 0;\n        this.r0 = 0;\n        this.r = 0;\n        this.startAngle = 0;\n        this.endAngle = Math.PI * 2;\n        this.clockwise = true;\n        this.cornerRadius = 0;\n    }\n    return SectorShape;\n}());\nexport { SectorShape };\nvar Sector = (function (_super) {\n    __extends(Sector, _super);\n    function Sector(opts) {\n        return _super.call(this, opts) || this;\n    }\n    Sector.prototype.getDefaultShape = function () {\n        return new SectorShape();\n    };\n    Sector.prototype.buildPath = function (ctx, shape) {\n        roundSectorHelper.buildPath(ctx, shape);\n    };\n    Sector.prototype.isZeroArea = function () {\n        return this.shape.startAngle === this.shape.endAngle\n            || this.shape.r === this.shape.r0;\n    };\n    return Sector;\n}(Path));\nSector.prototype.type = 'sector';\nexport default Sector;\n","import { __extends } from \"tslib\";\nimport Path from '../Path.js';\nvar RingShape = (function () {\n    function RingShape() {\n        this.cx = 0;\n        this.cy = 0;\n        this.r = 0;\n        this.r0 = 0;\n    }\n    return RingShape;\n}());\nexport { RingShape };\nvar Ring = (function (_super) {\n    __extends(Ring, _super);\n    function Ring(opts) {\n        return _super.call(this, opts) || this;\n    }\n    Ring.prototype.getDefaultShape = function () {\n        return new RingShape();\n    };\n    Ring.prototype.buildPath = function (ctx, shape) {\n        var x = shape.cx;\n        var y = shape.cy;\n        var PI2 = Math.PI * 2;\n        ctx.moveTo(x + shape.r, y);\n        ctx.arc(x, y, shape.r, 0, PI2, false);\n        ctx.moveTo(x + shape.r0, y);\n        ctx.arc(x, y, shape.r0, 0, PI2, true);\n    };\n    return Ring;\n}(Path));\nRing.prototype.type = 'ring';\nexport default Ring;\n","import smoothBezier from './smoothBezier.js';\nexport function buildPath(ctx, shape, closePath) {\n    var smooth = shape.smooth;\n    var points = shape.points;\n    if (points && points.length >= 2) {\n        if (smooth) {\n            var controlPoints = smoothBezier(points, smooth, closePath, shape.smoothConstraint);\n            ctx.moveTo(points[0][0], points[0][1]);\n            var len = points.length;\n            for (var i = 0; i < (closePath ? len : len - 1); i++) {\n                var cp1 = controlPoints[i * 2];\n                var cp2 = controlPoints[i * 2 + 1];\n                var p = points[(i + 1) % len];\n                ctx.bezierCurveTo(cp1[0], cp1[1], cp2[0], cp2[1], p[0], p[1]);\n            }\n        }\n        else {\n            ctx.moveTo(points[0][0], points[0][1]);\n            for (var i = 1, l = points.length; i < l; i++) {\n                ctx.lineTo(points[i][0], points[i][1]);\n            }\n        }\n        closePath && ctx.closePath();\n    }\n}\n","import { min as v2Min, max as v2Max, scale as v2Scale, distance as v2Distance, add as v2Add, clone as v2Clone, sub as v2Sub } from '../../core/vector.js';\nexport default function smoothBezier(points, smooth, isLoop, constraint) {\n    var cps = [];\n    var v = [];\n    var v1 = [];\n    var v2 = [];\n    var prevPoint;\n    var nextPoint;\n    var min;\n    var max;\n    if (constraint) {\n        min = [Infinity, Infinity];\n        max = [-Infinity, -Infinity];\n        for (var i = 0, len = points.length; i < len; i++) {\n            v2Min(min, min, points[i]);\n            v2Max(max, max, points[i]);\n        }\n        v2Min(min, min, constraint[0]);\n        v2Max(max, max, constraint[1]);\n    }\n    for (var i = 0, len = points.length; i < len; i++) {\n        var point = points[i];\n        if (isLoop) {\n            prevPoint = points[i ? i - 1 : len - 1];\n            nextPoint = points[(i + 1) % len];\n        }\n        else {\n            if (i === 0 || i === len - 1) {\n                cps.push(v2Clone(points[i]));\n                continue;\n            }\n            else {\n                prevPoint = points[i - 1];\n                nextPoint = points[i + 1];\n            }\n        }\n        v2Sub(v, nextPoint, prevPoint);\n        v2Scale(v, v, smooth);\n        var d0 = v2Distance(point, prevPoint);\n        var d1 = v2Distance(point, nextPoint);\n        var sum = d0 + d1;\n        if (sum !== 0) {\n            d0 /= sum;\n            d1 /= sum;\n        }\n        v2Scale(v1, v, -d0);\n        v2Scale(v2, v, d1);\n        var cp0 = v2Add([], point, v1);\n        var cp1 = v2Add([], point, v2);\n        if (constraint) {\n            v2Max(cp0, cp0, min);\n            v2Min(cp0, cp0, max);\n            v2Max(cp1, cp1, min);\n            v2Min(cp1, cp1, max);\n        }\n        cps.push(cp0);\n        cps.push(cp1);\n    }\n    if (isLoop) {\n        cps.push(cps.shift());\n    }\n    return cps;\n}\n","import { __extends } from \"tslib\";\nimport Path from '../Path.js';\nimport * as polyHelper from '../helper/poly.js';\nvar PolygonShape = (function () {\n    function PolygonShape() {\n        this.points = null;\n        this.smooth = 0;\n        this.smoothConstraint = null;\n    }\n    return PolygonShape;\n}());\nexport { PolygonShape };\nvar Polygon = (function (_super) {\n    __extends(Polygon, _super);\n    function Polygon(opts) {\n        return _super.call(this, opts) || this;\n    }\n    Polygon.prototype.getDefaultShape = function () {\n        return new PolygonShape();\n    };\n    Polygon.prototype.buildPath = function (ctx, shape) {\n        polyHelper.buildPath(ctx, shape, true);\n    };\n    return Polygon;\n}(Path));\n;\nPolygon.prototype.type = 'polygon';\nexport default Polygon;\n","import { __extends } from \"tslib\";\nimport Path from '../Path.js';\nimport * as polyHelper from '../helper/poly.js';\nvar PolylineShape = (function () {\n    function PolylineShape() {\n        this.points = null;\n        this.percent = 1;\n        this.smooth = 0;\n        this.smoothConstraint = null;\n    }\n    return PolylineShape;\n}());\nexport { PolylineShape };\nvar Polyline = (function (_super) {\n    __extends(Polyline, _super);\n    function Polyline(opts) {\n        return _super.call(this, opts) || this;\n    }\n    Polyline.prototype.getDefaultStyle = function () {\n        return {\n            stroke: '#000',\n            fill: null\n        };\n    };\n    Polyline.prototype.getDefaultShape = function () {\n        return new PolylineShape();\n    };\n    Polyline.prototype.buildPath = function (ctx, shape) {\n        polyHelper.buildPath(ctx, shape, false);\n    };\n    return Polyline;\n}(Path));\nPolyline.prototype.type = 'polyline';\nexport default Polyline;\n","import { __extends } from \"tslib\";\nimport Path from '../Path.js';\nimport { subPixelOptimizeLine } from '../helper/subPixelOptimize.js';\nvar subPixelOptimizeOutputShape = {};\nvar LineShape = (function () {\n    function LineShape() {\n        this.x1 = 0;\n        this.y1 = 0;\n        this.x2 = 0;\n        this.y2 = 0;\n        this.percent = 1;\n    }\n    return LineShape;\n}());\nexport { LineShape };\nvar Line = (function (_super) {\n    __extends(Line, _super);\n    function Line(opts) {\n        return _super.call(this, opts) || this;\n    }\n    Line.prototype.getDefaultStyle = function () {\n        return {\n            stroke: '#000',\n            fill: null\n        };\n    };\n    Line.prototype.getDefaultShape = function () {\n        return new LineShape();\n    };\n    Line.prototype.buildPath = function (ctx, shape) {\n        var x1;\n        var y1;\n        var x2;\n        var y2;\n        if (this.subPixelOptimize) {\n            var optimizedShape = subPixelOptimizeLine(subPixelOptimizeOutputShape, shape, this.style);\n            x1 = optimizedShape.x1;\n            y1 = optimizedShape.y1;\n            x2 = optimizedShape.x2;\n            y2 = optimizedShape.y2;\n        }\n        else {\n            x1 = shape.x1;\n            y1 = shape.y1;\n            x2 = shape.x2;\n            y2 = shape.y2;\n        }\n        var percent = shape.percent;\n        if (percent === 0) {\n            return;\n        }\n        ctx.moveTo(x1, y1);\n        if (percent < 1) {\n            x2 = x1 * (1 - percent) + x2 * percent;\n            y2 = y1 * (1 - percent) + y2 * percent;\n        }\n        ctx.lineTo(x2, y2);\n    };\n    Line.prototype.pointAt = function (p) {\n        var shape = this.shape;\n        return [\n            shape.x1 * (1 - p) + shape.x2 * p,\n            shape.y1 * (1 - p) + shape.y2 * p\n        ];\n    };\n    return Line;\n}(Path));\nLine.prototype.type = 'line';\nexport default Line;\n","import { __extends } from \"tslib\";\nimport Path from '../Path.js';\nimport * as vec2 from '../../core/vector.js';\nimport { quadraticSubdivide, cubicSubdivide, quadraticAt, cubicAt, quadraticDerivativeAt, cubicDerivativeAt } from '../../core/curve.js';\nvar out = [];\nvar BezierCurveShape = (function () {\n    function BezierCurveShape() {\n        this.x1 = 0;\n        this.y1 = 0;\n        this.x2 = 0;\n        this.y2 = 0;\n        this.cpx1 = 0;\n        this.cpy1 = 0;\n        this.percent = 1;\n    }\n    return BezierCurveShape;\n}());\nexport { BezierCurveShape };\nfunction someVectorAt(shape, t, isTangent) {\n    var cpx2 = shape.cpx2;\n    var cpy2 = shape.cpy2;\n    if (cpx2 != null || cpy2 != null) {\n        return [\n            (isTangent ? cubicDerivativeAt : cubicAt)(shape.x1, shape.cpx1, shape.cpx2, shape.x2, t),\n            (isTangent ? cubicDerivativeAt : cubicAt)(shape.y1, shape.cpy1, shape.cpy2, shape.y2, t)\n        ];\n    }\n    else {\n        return [\n            (isTangent ? quadraticDerivativeAt : quadraticAt)(shape.x1, shape.cpx1, shape.x2, t),\n            (isTangent ? quadraticDerivativeAt : quadraticAt)(shape.y1, shape.cpy1, shape.y2, t)\n        ];\n    }\n}\nvar BezierCurve = (function (_super) {\n    __extends(BezierCurve, _super);\n    function BezierCurve(opts) {\n        return _super.call(this, opts) || this;\n    }\n    BezierCurve.prototype.getDefaultStyle = function () {\n        return {\n            stroke: '#000',\n            fill: null\n        };\n    };\n    BezierCurve.prototype.getDefaultShape = function () {\n        return new BezierCurveShape();\n    };\n    BezierCurve.prototype.buildPath = function (ctx, shape) {\n        var x1 = shape.x1;\n        var y1 = shape.y1;\n        var x2 = shape.x2;\n        var y2 = shape.y2;\n        var cpx1 = shape.cpx1;\n        var cpy1 = shape.cpy1;\n        var cpx2 = shape.cpx2;\n        var cpy2 = shape.cpy2;\n        var percent = shape.percent;\n        if (percent === 0) {\n            return;\n        }\n        ctx.moveTo(x1, y1);\n        if (cpx2 == null || cpy2 == null) {\n            if (percent < 1) {\n                quadraticSubdivide(x1, cpx1, x2, percent, out);\n                cpx1 = out[1];\n                x2 = out[2];\n                quadraticSubdivide(y1, cpy1, y2, percent, out);\n                cpy1 = out[1];\n                y2 = out[2];\n            }\n            ctx.quadraticCurveTo(cpx1, cpy1, x2, y2);\n        }\n        else {\n            if (percent < 1) {\n                cubicSubdivide(x1, cpx1, cpx2, x2, percent, out);\n                cpx1 = out[1];\n                cpx2 = out[2];\n                x2 = out[3];\n                cubicSubdivide(y1, cpy1, cpy2, y2, percent, out);\n                cpy1 = out[1];\n                cpy2 = out[2];\n                y2 = out[3];\n            }\n            ctx.bezierCurveTo(cpx1, cpy1, cpx2, cpy2, x2, y2);\n        }\n    };\n    BezierCurve.prototype.pointAt = function (t) {\n        return someVectorAt(this.shape, t, false);\n    };\n    BezierCurve.prototype.tangentAt = function (t) {\n        var p = someVectorAt(this.shape, t, true);\n        return vec2.normalize(p, p);\n    };\n    return BezierCurve;\n}(Path));\n;\nBezierCurve.prototype.type = 'bezier-curve';\nexport default BezierCurve;\n","import { __extends } from \"tslib\";\nimport Path from '../Path.js';\nvar ArcShape = (function () {\n    function ArcShape() {\n        this.cx = 0;\n        this.cy = 0;\n        this.r = 0;\n        this.startAngle = 0;\n        this.endAngle = Math.PI * 2;\n        this.clockwise = true;\n    }\n    return ArcShape;\n}());\nexport { ArcShape };\nvar Arc = (function (_super) {\n    __extends(Arc, _super);\n    function Arc(opts) {\n        return _super.call(this, opts) || this;\n    }\n    Arc.prototype.getDefaultStyle = function () {\n        return {\n            stroke: '#000',\n            fill: null\n        };\n    };\n    Arc.prototype.getDefaultShape = function () {\n        return new ArcShape();\n    };\n    Arc.prototype.buildPath = function (ctx, shape) {\n        var x = shape.cx;\n        var y = shape.cy;\n        var r = Math.max(shape.r, 0);\n        var startAngle = shape.startAngle;\n        var endAngle = shape.endAngle;\n        var clockwise = shape.clockwise;\n        var unitX = Math.cos(startAngle);\n        var unitY = Math.sin(startAngle);\n        ctx.moveTo(unitX * r + x, unitY * r + y);\n        ctx.arc(x, y, r, startAngle, endAngle, !clockwise);\n    };\n    return Arc;\n}(Path));\nArc.prototype.type = 'arc';\nexport default Arc;\n","import { __extends } from \"tslib\";\nimport Path from './Path.js';\nvar CompoundPath = (function (_super) {\n    __extends(CompoundPath, _super);\n    function CompoundPath() {\n        var _this = _super !== null && _super.apply(this, arguments) || this;\n        _this.type = 'compound';\n        return _this;\n    }\n    CompoundPath.prototype._updatePathDirty = function () {\n        var paths = this.shape.paths;\n        var dirtyPath = this.shapeChanged();\n        for (var i = 0; i < paths.length; i++) {\n            dirtyPath = dirtyPath || paths[i].shapeChanged();\n        }\n        if (dirtyPath) {\n            this.dirtyShape();\n        }\n    };\n    CompoundPath.prototype.beforeBrush = function () {\n        this._updatePathDirty();\n        var paths = this.shape.paths || [];\n        var scale = this.getGlobalScale();\n        for (var i = 0; i < paths.length; i++) {\n            if (!paths[i].path) {\n                paths[i].createPathProxy();\n            }\n            paths[i].path.setScale(scale[0], scale[1], paths[i].segmentIgnoreThreshold);\n        }\n    };\n    CompoundPath.prototype.buildPath = function (ctx, shape) {\n        var paths = shape.paths || [];\n        for (var i = 0; i < paths.length; i++) {\n            paths[i].buildPath(ctx, paths[i].shape, true);\n        }\n    };\n    CompoundPath.prototype.afterBrush = function () {\n        var paths = this.shape.paths || [];\n        for (var i = 0; i < paths.length; i++) {\n            paths[i].pathUpdated();\n        }\n    };\n    CompoundPath.prototype.getBoundingRect = function () {\n        this._updatePathDirty.call(this);\n        return Path.prototype.getBoundingRect.call(this);\n    };\n    return CompoundPath;\n}(Path));\nexport default CompoundPath;\n","var Gradient = (function () {\n    function Gradient(colorStops) {\n        this.colorStops = colorStops || [];\n    }\n    Gradient.prototype.addColorStop = function (offset, color) {\n        this.colorStops.push({\n            offset: offset,\n            color: color\n        });\n    };\n    return Gradient;\n}());\nexport default Gradient;\n","import { __extends } from \"tslib\";\nimport Gradient from './Gradient.js';\nvar LinearGradient = (function (_super) {\n    __extends(LinearGradient, _super);\n    function LinearGradient(x, y, x2, y2, colorStops, globalCoord) {\n        var _this = _super.call(this, colorStops) || this;\n        _this.x = x == null ? 0 : x;\n        _this.y = y == null ? 0 : y;\n        _this.x2 = x2 == null ? 1 : x2;\n        _this.y2 = y2 == null ? 0 : y2;\n        _this.type = 'linear';\n        _this.global = globalCoord || false;\n        return _this;\n    }\n    return LinearGradient;\n}(Gradient));\nexport default LinearGradient;\n;\n","import { __extends } from \"tslib\";\nimport Gradient from './Gradient.js';\nvar RadialGradient = (function (_super) {\n    __extends(RadialGradient, _super);\n    function RadialGradient(x, y, r, colorStops, globalCoord) {\n        var _this = _super.call(this, colorStops) || this;\n        _this.x = x == null ? 0.5 : x;\n        _this.y = y == null ? 0.5 : y;\n        _this.r = r == null ? 0.5 : r;\n        _this.type = 'radial';\n        _this.global = globalCoord || false;\n        return _this;\n    }\n    return RadialGradient;\n}(Gradient));\nexport default RadialGradient;\n","import Point from './Point.js';\nvar extent = [0, 0];\nvar extent2 = [0, 0];\nvar minTv = new Point();\nvar maxTv = new Point();\nvar OrientedBoundingRect = (function () {\n    function OrientedBoundingRect(rect, transform) {\n        this._corners = [];\n        this._axes = [];\n        this._origin = [0, 0];\n        for (var i = 0; i < 4; i++) {\n            this._corners[i] = new Point();\n        }\n        for (var i = 0; i < 2; i++) {\n            this._axes[i] = new Point();\n        }\n        if (rect) {\n            this.fromBoundingRect(rect, transform);\n        }\n    }\n    OrientedBoundingRect.prototype.fromBoundingRect = function (rect, transform) {\n        var corners = this._corners;\n        var axes = this._axes;\n        var x = rect.x;\n        var y = rect.y;\n        var x2 = x + rect.width;\n        var y2 = y + rect.height;\n        corners[0].set(x, y);\n        corners[1].set(x2, y);\n        corners[2].set(x2, y2);\n        corners[3].set(x, y2);\n        if (transform) {\n            for (var i = 0; i < 4; i++) {\n                corners[i].transform(transform);\n            }\n        }\n        Point.sub(axes[0], corners[1], corners[0]);\n        Point.sub(axes[1], corners[3], corners[0]);\n        axes[0].normalize();\n        axes[1].normalize();\n        for (var i = 0; i < 2; i++) {\n            this._origin[i] = axes[i].dot(corners[0]);\n        }\n    };\n    OrientedBoundingRect.prototype.intersect = function (other, mtv) {\n        var overlapped = true;\n        var noMtv = !mtv;\n        minTv.set(Infinity, Infinity);\n        maxTv.set(0, 0);\n        if (!this._intersectCheckOneSide(this, other, minTv, maxTv, noMtv, 1)) {\n            overlapped = false;\n            if (noMtv) {\n                return overlapped;\n            }\n        }\n        if (!this._intersectCheckOneSide(other, this, minTv, maxTv, noMtv, -1)) {\n            overlapped = false;\n            if (noMtv) {\n                return overlapped;\n            }\n        }\n        if (!noMtv) {\n            Point.copy(mtv, overlapped ? minTv : maxTv);\n        }\n        return overlapped;\n    };\n    OrientedBoundingRect.prototype._intersectCheckOneSide = function (self, other, minTv, maxTv, noMtv, inverse) {\n        var overlapped = true;\n        for (var i = 0; i < 2; i++) {\n            var axis = this._axes[i];\n            this._getProjMinMaxOnAxis(i, self._corners, extent);\n            this._getProjMinMaxOnAxis(i, other._corners, extent2);\n            if (extent[1] < extent2[0] || extent[0] > extent2[1]) {\n                overlapped = false;\n                if (noMtv) {\n                    return overlapped;\n                }\n                var dist0 = Math.abs(extent2[0] - extent[1]);\n                var dist1 = Math.abs(extent[0] - extent2[1]);\n                if (Math.min(dist0, dist1) > maxTv.len()) {\n                    if (dist0 < dist1) {\n                        Point.scale(maxTv, axis, -dist0 * inverse);\n                    }\n                    else {\n                        Point.scale(maxTv, axis, dist1 * inverse);\n                    }\n                }\n            }\n            else if (minTv) {\n                var dist0 = Math.abs(extent2[0] - extent[1]);\n                var dist1 = Math.abs(extent[0] - extent2[1]);\n                if (Math.min(dist0, dist1) < minTv.len()) {\n                    if (dist0 < dist1) {\n                        Point.scale(minTv, axis, dist0 * inverse);\n                    }\n                    else {\n                        Point.scale(minTv, axis, -dist1 * inverse);\n                    }\n                }\n            }\n        }\n        return overlapped;\n    };\n    OrientedBoundingRect.prototype._getProjMinMaxOnAxis = function (dim, corners, out) {\n        var axis = this._axes[dim];\n        var origin = this._origin;\n        var proj = corners[0].dot(axis) + origin[dim];\n        var min = proj;\n        var max = proj;\n        for (var i = 1; i < corners.length; i++) {\n            var proj_1 = corners[i].dot(axis) + origin[dim];\n            min = Math.min(proj_1, min);\n            max = Math.max(proj_1, max);\n        }\n        out[0] = min;\n        out[1] = max;\n    };\n    return OrientedBoundingRect;\n}());\nexport default OrientedBoundingRect;\n","import { __extends } from \"tslib\";\nimport Displayble from './Displayable.js';\nimport BoundingRect from '../core/BoundingRect.js';\nvar m = [];\nvar IncrementalDisplayable = (function (_super) {\n    __extends(IncrementalDisplayable, _super);\n    function IncrementalDisplayable() {\n        var _this = _super !== null && _super.apply(this, arguments) || this;\n        _this.notClear = true;\n        _this.incremental = true;\n        _this._displayables = [];\n        _this._temporaryDisplayables = [];\n        _this._cursor = 0;\n        return _this;\n    }\n    IncrementalDisplayable.prototype.traverse = function (cb, context) {\n        cb.call(context, this);\n    };\n    IncrementalDisplayable.prototype.useStyle = function () {\n        this.style = {};\n    };\n    IncrementalDisplayable.prototype.getCursor = function () {\n        return this._cursor;\n    };\n    IncrementalDisplayable.prototype.innerAfterBrush = function () {\n        this._cursor = this._displayables.length;\n    };\n    IncrementalDisplayable.prototype.clearDisplaybles = function () {\n        this._displayables = [];\n        this._temporaryDisplayables = [];\n        this._cursor = 0;\n        this.markRedraw();\n        this.notClear = false;\n    };\n    IncrementalDisplayable.prototype.clearTemporalDisplayables = function () {\n        this._temporaryDisplayables = [];\n    };\n    IncrementalDisplayable.prototype.addDisplayable = function (displayable, notPersistent) {\n        if (notPersistent) {\n            this._temporaryDisplayables.push(displayable);\n        }\n        else {\n            this._displayables.push(displayable);\n        }\n        this.markRedraw();\n    };\n    IncrementalDisplayable.prototype.addDisplayables = function (displayables, notPersistent) {\n        notPersistent = notPersistent || false;\n        for (var i = 0; i < displayables.length; i++) {\n            this.addDisplayable(displayables[i], notPersistent);\n        }\n    };\n    IncrementalDisplayable.prototype.getDisplayables = function () {\n        return this._displayables;\n    };\n    IncrementalDisplayable.prototype.getTemporalDisplayables = function () {\n        return this._temporaryDisplayables;\n    };\n    IncrementalDisplayable.prototype.eachPendingDisplayable = function (cb) {\n        for (var i = this._cursor; i < this._displayables.length; i++) {\n            cb && cb(this._displayables[i]);\n        }\n        for (var i = 0; i < this._temporaryDisplayables.length; i++) {\n            cb && cb(this._temporaryDisplayables[i]);\n        }\n    };\n    IncrementalDisplayable.prototype.update = function () {\n        this.updateTransform();\n        for (var i = this._cursor; i < this._displayables.length; i++) {\n            var displayable = this._displayables[i];\n            displayable.parent = this;\n            displayable.update();\n            displayable.parent = null;\n        }\n        for (var i = 0; i < this._temporaryDisplayables.length; i++) {\n            var displayable = this._temporaryDisplayables[i];\n            displayable.parent = this;\n            displayable.update();\n            displayable.parent = null;\n        }\n    };\n    IncrementalDisplayable.prototype.getBoundingRect = function () {\n        if (!this._rect) {\n            var rect = new BoundingRect(Infinity, Infinity, -Infinity, -Infinity);\n            for (var i = 0; i < this._displayables.length; i++) {\n                var displayable = this._displayables[i];\n                var childRect = displayable.getBoundingRect().clone();\n                if (displayable.needLocalTransform()) {\n                    childRect.applyTransform(displayable.getLocalTransform(m));\n                }\n                rect.union(childRect);\n            }\n            this._rect = rect;\n        }\n        return this._rect;\n    };\n    IncrementalDisplayable.prototype.contain = function (x, y) {\n        var localPos = this.transformCoordToLocal(x, y);\n        var rect = this.getBoundingRect();\n        if (rect.contain(localPos[0], localPos[1])) {\n            for (var i = 0; i < this._displayables.length; i++) {\n                var displayable = this._displayables[i];\n                if (displayable.contain(x, y)) {\n                    return true;\n                }\n            }\n        }\n        return false;\n    };\n    return IncrementalDisplayable;\n}(Displayble));\nexport default IncrementalDisplayable;\n","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport * as pathTool from 'zrender/lib/tool/path.js';\nimport * as matrix from 'zrender/lib/core/matrix.js';\nimport * as vector from 'zrender/lib/core/vector.js';\nimport Path from 'zrender/lib/graphic/Path.js';\nimport Transformable from 'zrender/lib/core/Transformable.js';\nimport ZRImage from 'zrender/lib/graphic/Image.js';\nimport Group from 'zrender/lib/graphic/Group.js';\nimport ZRText from 'zrender/lib/graphic/Text.js';\nimport Circle from 'zrender/lib/graphic/shape/Circle.js';\nimport Ellipse from 'zrender/lib/graphic/shape/Ellipse.js';\nimport Sector from 'zrender/lib/graphic/shape/Sector.js';\nimport Ring from 'zrender/lib/graphic/shape/Ring.js';\nimport Polygon from 'zrender/lib/graphic/shape/Polygon.js';\nimport Polyline from 'zrender/lib/graphic/shape/Polyline.js';\nimport Rect from 'zrender/lib/graphic/shape/Rect.js';\nimport Line from 'zrender/lib/graphic/shape/Line.js';\nimport BezierCurve from 'zrender/lib/graphic/shape/BezierCurve.js';\nimport Arc from 'zrender/lib/graphic/shape/Arc.js';\nimport CompoundPath from 'zrender/lib/graphic/CompoundPath.js';\nimport LinearGradient from 'zrender/lib/graphic/LinearGradient.js';\nimport RadialGradient from 'zrender/lib/graphic/RadialGradient.js';\nimport BoundingRect from 'zrender/lib/core/BoundingRect.js';\nimport OrientedBoundingRect from 'zrender/lib/core/OrientedBoundingRect.js';\nimport Point from 'zrender/lib/core/Point.js';\nimport IncrementalDisplayable from 'zrender/lib/graphic/IncrementalDisplayable.js';\nimport * as subPixelOptimizeUtil from 'zrender/lib/graphic/helper/subPixelOptimize.js';\nimport { extend, isArrayLike, map, defaults, isString, keys, each, hasOwn, isArray } from 'zrender/lib/core/util.js';\nimport { getECData } from './innerStore.js';\nimport { updateProps, initProps, removeElement, removeElementWithFadeOut, isElementRemoved } from '../animation/basicTransition.js';\n/**\r\n * @deprecated export for compatitable reason\r\n */\n\nexport { updateProps, initProps, removeElement, removeElementWithFadeOut, isElementRemoved };\nvar mathMax = Math.max;\nvar mathMin = Math.min;\nvar _customShapeMap = {};\n/**\r\n * Extend shape with parameters\r\n */\n\nexport function extendShape(opts) {\n  return Path.extend(opts);\n}\nvar extendPathFromString = pathTool.extendFromString;\n/**\r\n * Extend path\r\n */\n\nexport function extendPath(pathData, opts) {\n  return extendPathFromString(pathData, opts);\n}\n/**\r\n * Register a user defined shape.\r\n * The shape class can be fetched by `getShapeClass`\r\n * This method will overwrite the registered shapes, including\r\n * the registered built-in shapes, if using the same `name`.\r\n * The shape can be used in `custom series` and\r\n * `graphic component` by declaring `{type: name}`.\r\n *\r\n * @param name\r\n * @param ShapeClass Can be generated by `extendShape`.\r\n */\n\nexport function registerShape(name, ShapeClass) {\n  _customShapeMap[name] = ShapeClass;\n}\n/**\r\n * Find shape class registered by `registerShape`. Usually used in\r\n * fetching user defined shape.\r\n *\r\n * [Caution]:\r\n * (1) This method **MUST NOT be used inside echarts !!!**, unless it is prepared\r\n * to use user registered shapes.\r\n * Because the built-in shape (see `getBuiltInShape`) will be registered by\r\n * `registerShape` by default. That enables users to get both built-in\r\n * shapes as well as the shapes belonging to themsleves. But users can overwrite\r\n * the built-in shapes by using names like 'circle', 'rect' via calling\r\n * `registerShape`. So the echarts inner featrues should not fetch shapes from here\r\n * in case that it is overwritten by users, except that some features, like\r\n * `custom series`, `graphic component`, do it deliberately.\r\n *\r\n * (2) In the features like `custom series`, `graphic component`, the user input\r\n * `{tpye: 'xxx'}` does not only specify shapes but also specify other graphic\r\n * elements like `'group'`, `'text'`, `'image'` or event `'path'`. Those names\r\n * are reserved names, that is, if some user registers a shape named `'image'`,\r\n * the shape will not be used. If we intending to add some more reserved names\r\n * in feature, that might bring break changes (disable some existing user shape\r\n * names). But that case probably rarely happens. So we don't make more mechanism\r\n * to resolve this issue here.\r\n *\r\n * @param name\r\n * @return The shape class. If not found, return nothing.\r\n */\n\nexport function getShapeClass(name) {\n  if (_customShapeMap.hasOwnProperty(name)) {\n    return _customShapeMap[name];\n  }\n}\n/**\r\n * Create a path element from path data string\r\n * @param pathData\r\n * @param opts\r\n * @param rect\r\n * @param layout 'center' or 'cover' default to be cover\r\n */\n\nexport function makePath(pathData, opts, rect, layout) {\n  var path = pathTool.createFromString(pathData, opts);\n\n  if (rect) {\n    if (layout === 'center') {\n      rect = centerGraphic(rect, path.getBoundingRect());\n    }\n\n    resizePath(path, rect);\n  }\n\n  return path;\n}\n/**\r\n * Create a image element from image url\r\n * @param imageUrl image url\r\n * @param opts options\r\n * @param rect constrain rect\r\n * @param layout 'center' or 'cover'. Default to be 'cover'\r\n */\n\nexport function makeImage(imageUrl, rect, layout) {\n  var zrImg = new ZRImage({\n    style: {\n      image: imageUrl,\n      x: rect.x,\n      y: rect.y,\n      width: rect.width,\n      height: rect.height\n    },\n    onload: function (img) {\n      if (layout === 'center') {\n        var boundingRect = {\n          width: img.width,\n          height: img.height\n        };\n        zrImg.setStyle(centerGraphic(rect, boundingRect));\n      }\n    }\n  });\n  return zrImg;\n}\n/**\r\n * Get position of centered element in bounding box.\r\n *\r\n * @param  rect         element local bounding box\r\n * @param  boundingRect constraint bounding box\r\n * @return element position containing x, y, width, and height\r\n */\n\nfunction centerGraphic(rect, boundingRect) {\n  // Set rect to center, keep width / height ratio.\n  var aspect = boundingRect.width / boundingRect.height;\n  var width = rect.height * aspect;\n  var height;\n\n  if (width <= rect.width) {\n    height = rect.height;\n  } else {\n    width = rect.width;\n    height = width / aspect;\n  }\n\n  var cx = rect.x + rect.width / 2;\n  var cy = rect.y + rect.height / 2;\n  return {\n    x: cx - width / 2,\n    y: cy - height / 2,\n    width: width,\n    height: height\n  };\n}\n\nexport var mergePath = pathTool.mergePath;\n/**\r\n * Resize a path to fit the rect\r\n * @param path\r\n * @param rect\r\n */\n\nexport function resizePath(path, rect) {\n  if (!path.applyTransform) {\n    return;\n  }\n\n  var pathRect = path.getBoundingRect();\n  var m = pathRect.calculateTransform(rect);\n  path.applyTransform(m);\n}\n/**\r\n * Sub pixel optimize line for canvas\r\n */\n\nexport function subPixelOptimizeLine(shape, lineWidth) {\n  subPixelOptimizeUtil.subPixelOptimizeLine(shape, shape, {\n    lineWidth: lineWidth\n  });\n  return shape;\n}\n/**\r\n * Sub pixel optimize rect for canvas\r\n */\n\nexport function subPixelOptimizeRect(param) {\n  subPixelOptimizeUtil.subPixelOptimizeRect(param.shape, param.shape, param.style);\n  return param;\n}\n/**\r\n * Sub pixel optimize for canvas\r\n *\r\n * @param position Coordinate, such as x, y\r\n * @param lineWidth Should be nonnegative integer.\r\n * @param positiveOrNegative Default false (negative).\r\n * @return Optimized position.\r\n */\n\nexport var subPixelOptimize = subPixelOptimizeUtil.subPixelOptimize;\n/**\r\n * Get transform matrix of target (param target),\r\n * in coordinate of its ancestor (param ancestor)\r\n *\r\n * @param target\r\n * @param [ancestor]\r\n */\n\nexport function getTransform(target, ancestor) {\n  var mat = matrix.identity([]);\n\n  while (target && target !== ancestor) {\n    matrix.mul(mat, target.getLocalTransform(), mat);\n    target = target.parent;\n  }\n\n  return mat;\n}\n/**\r\n * Apply transform to an vertex.\r\n * @param target [x, y]\r\n * @param transform Can be:\r\n *      + Transform matrix: like [1, 0, 0, 1, 0, 0]\r\n *      + {position, rotation, scale}, the same as `zrender/Transformable`.\r\n * @param invert Whether use invert matrix.\r\n * @return [x, y]\r\n */\n\nexport function applyTransform(target, transform, invert) {\n  if (transform && !isArrayLike(transform)) {\n    transform = Transformable.getLocalTransform(transform);\n  }\n\n  if (invert) {\n    transform = matrix.invert([], transform);\n  }\n\n  return vector.applyTransform([], target, transform);\n}\n/**\r\n * @param direction 'left' 'right' 'top' 'bottom'\r\n * @param transform Transform matrix: like [1, 0, 0, 1, 0, 0]\r\n * @param invert Whether use invert matrix.\r\n * @return Transformed direction. 'left' 'right' 'top' 'bottom'\r\n */\n\nexport function transformDirection(direction, transform, invert) {\n  // Pick a base, ensure that transform result will not be (0, 0).\n  var hBase = transform[4] === 0 || transform[5] === 0 || transform[0] === 0 ? 1 : Math.abs(2 * transform[4] / transform[0]);\n  var vBase = transform[4] === 0 || transform[5] === 0 || transform[2] === 0 ? 1 : Math.abs(2 * transform[4] / transform[2]);\n  var vertex = [direction === 'left' ? -hBase : direction === 'right' ? hBase : 0, direction === 'top' ? -vBase : direction === 'bottom' ? vBase : 0];\n  vertex = applyTransform(vertex, transform, invert);\n  return Math.abs(vertex[0]) > Math.abs(vertex[1]) ? vertex[0] > 0 ? 'right' : 'left' : vertex[1] > 0 ? 'bottom' : 'top';\n}\n\nfunction isNotGroup(el) {\n  return !el.isGroup;\n}\n\nfunction isPath(el) {\n  return el.shape != null;\n}\n/**\r\n * Apply group transition animation from g1 to g2.\r\n * If no animatableModel, no animation.\r\n */\n\n\nexport function groupTransition(g1, g2, animatableModel) {\n  if (!g1 || !g2) {\n    return;\n  }\n\n  function getElMap(g) {\n    var elMap = {};\n    g.traverse(function (el) {\n      if (isNotGroup(el) && el.anid) {\n        elMap[el.anid] = el;\n      }\n    });\n    return elMap;\n  }\n\n  function getAnimatableProps(el) {\n    var obj = {\n      x: el.x,\n      y: el.y,\n      rotation: el.rotation\n    };\n\n    if (isPath(el)) {\n      obj.shape = extend({}, el.shape);\n    }\n\n    return obj;\n  }\n\n  var elMap1 = getElMap(g1);\n  g2.traverse(function (el) {\n    if (isNotGroup(el) && el.anid) {\n      var oldEl = elMap1[el.anid];\n\n      if (oldEl) {\n        var newProp = getAnimatableProps(el);\n        el.attr(getAnimatableProps(oldEl));\n        updateProps(el, newProp, animatableModel, getECData(el).dataIndex);\n      }\n    }\n  });\n}\nexport function clipPointsByRect(points, rect) {\n  // FIXME: This way might be incorrect when graphic clipped by a corner\n  // and when element has a border.\n  return map(points, function (point) {\n    var x = point[0];\n    x = mathMax(x, rect.x);\n    x = mathMin(x, rect.x + rect.width);\n    var y = point[1];\n    y = mathMax(y, rect.y);\n    y = mathMin(y, rect.y + rect.height);\n    return [x, y];\n  });\n}\n/**\r\n * Return a new clipped rect. If rect size are negative, return undefined.\r\n */\n\nexport function clipRectByRect(targetRect, rect) {\n  var x = mathMax(targetRect.x, rect.x);\n  var x2 = mathMin(targetRect.x + targetRect.width, rect.x + rect.width);\n  var y = mathMax(targetRect.y, rect.y);\n  var y2 = mathMin(targetRect.y + targetRect.height, rect.y + rect.height); // If the total rect is cliped, nothing, including the border,\n  // should be painted. So return undefined.\n\n  if (x2 >= x && y2 >= y) {\n    return {\n      x: x,\n      y: y,\n      width: x2 - x,\n      height: y2 - y\n    };\n  }\n}\nexport function createIcon(iconStr, // Support 'image://' or 'path://' or direct svg path.\nopt, rect) {\n  var innerOpts = extend({\n    rectHover: true\n  }, opt);\n  var style = innerOpts.style = {\n    strokeNoScale: true\n  };\n  rect = rect || {\n    x: -1,\n    y: -1,\n    width: 2,\n    height: 2\n  };\n\n  if (iconStr) {\n    return iconStr.indexOf('image://') === 0 ? (style.image = iconStr.slice(8), defaults(style, rect), new ZRImage(innerOpts)) : makePath(iconStr.replace('path://', ''), innerOpts, rect, 'center');\n  }\n}\n/**\r\n * Return `true` if the given line (line `a`) and the given polygon\r\n * are intersect.\r\n * Note that we do not count colinear as intersect here because no\r\n * requirement for that. We could do that if required in future.\r\n */\n\nexport function linePolygonIntersect(a1x, a1y, a2x, a2y, points) {\n  for (var i = 0, p2 = points[points.length - 1]; i < points.length; i++) {\n    var p = points[i];\n\n    if (lineLineIntersect(a1x, a1y, a2x, a2y, p[0], p[1], p2[0], p2[1])) {\n      return true;\n    }\n\n    p2 = p;\n  }\n}\n/**\r\n * Return `true` if the given two lines (line `a` and line `b`)\r\n * are intersect.\r\n * Note that we do not count colinear as intersect here because no\r\n * requirement for that. We could do that if required in future.\r\n */\n\nexport function lineLineIntersect(a1x, a1y, a2x, a2y, b1x, b1y, b2x, b2y) {\n  // let `vec_m` to be `vec_a2 - vec_a1` and `vec_n` to be `vec_b2 - vec_b1`.\n  var mx = a2x - a1x;\n  var my = a2y - a1y;\n  var nx = b2x - b1x;\n  var ny = b2y - b1y; // `vec_m` and `vec_n` are parallel iff\n  //     existing `k` such that `vec_m = k · vec_n`, equivalent to `vec_m X vec_n = 0`.\n\n  var nmCrossProduct = crossProduct2d(nx, ny, mx, my);\n\n  if (nearZero(nmCrossProduct)) {\n    return false;\n  } // `vec_m` and `vec_n` are intersect iff\n  //     existing `p` and `q` in [0, 1] such that `vec_a1 + p * vec_m = vec_b1 + q * vec_n`,\n  //     such that `q = ((vec_a1 - vec_b1) X vec_m) / (vec_n X vec_m)`\n  //           and `p = ((vec_a1 - vec_b1) X vec_n) / (vec_n X vec_m)`.\n\n\n  var b1a1x = a1x - b1x;\n  var b1a1y = a1y - b1y;\n  var q = crossProduct2d(b1a1x, b1a1y, mx, my) / nmCrossProduct;\n\n  if (q < 0 || q > 1) {\n    return false;\n  }\n\n  var p = crossProduct2d(b1a1x, b1a1y, nx, ny) / nmCrossProduct;\n\n  if (p < 0 || p > 1) {\n    return false;\n  }\n\n  return true;\n}\n/**\r\n * Cross product of 2-dimension vector.\r\n */\n\nfunction crossProduct2d(x1, y1, x2, y2) {\n  return x1 * y2 - x2 * y1;\n}\n\nfunction nearZero(val) {\n  return val <= 1e-6 && val >= -1e-6;\n}\n\nexport function setTooltipConfig(opt) {\n  var itemTooltipOption = opt.itemTooltipOption;\n  var componentModel = opt.componentModel;\n  var itemName = opt.itemName;\n  var itemTooltipOptionObj = isString(itemTooltipOption) ? {\n    formatter: itemTooltipOption\n  } : itemTooltipOption;\n  var mainType = componentModel.mainType;\n  var componentIndex = componentModel.componentIndex;\n  var formatterParams = {\n    componentType: mainType,\n    name: itemName,\n    $vars: ['name']\n  };\n  formatterParams[mainType + 'Index'] = componentIndex;\n  var formatterParamsExtra = opt.formatterParamsExtra;\n\n  if (formatterParamsExtra) {\n    each(keys(formatterParamsExtra), function (key) {\n      if (!hasOwn(formatterParams, key)) {\n        formatterParams[key] = formatterParamsExtra[key];\n        formatterParams.$vars.push(key);\n      }\n    });\n  }\n\n  var ecData = getECData(opt.el);\n  ecData.componentMainType = mainType;\n  ecData.componentIndex = componentIndex;\n  ecData.tooltipConfig = {\n    name: itemName,\n    option: defaults({\n      content: itemName,\n      formatterParams: formatterParams\n    }, itemTooltipOptionObj)\n  };\n}\n\nfunction traverseElement(el, cb) {\n  var stopped; // TODO\n  // Polyfill for fixing zrender group traverse don't visit it's root issue.\n\n  if (el.isGroup) {\n    stopped = cb(el);\n  }\n\n  if (!stopped) {\n    el.traverse(cb);\n  }\n}\n\nexport function traverseElements(els, cb) {\n  if (els) {\n    if (isArray(els)) {\n      for (var i = 0; i < els.length; i++) {\n        traverseElement(els[i], cb);\n      }\n    } else {\n      traverseElement(els, cb);\n    }\n  }\n} // Register built-in shapes. These shapes might be overwritten\n// by users, although we do not recommend that.\n\nregisterShape('circle', Circle);\nregisterShape('ellipse', Ellipse);\nregisterShape('sector', Sector);\nregisterShape('ring', Ring);\nregisterShape('polygon', Polygon);\nregisterShape('polyline', Polyline);\nregisterShape('rect', Rect);\nregisterShape('line', Line);\nregisterShape('bezierCurve', BezierCurve);\nregisterShape('arc', Arc);\nexport { Group, ZRImage as Image, ZRText as Text, Circle, Ellipse, Sector, Ring, Polygon, Polyline, Rect, Line, BezierCurve, Arc, IncrementalDisplayable, CompoundPath, LinearGradient, RadialGradient, BoundingRect, OrientedBoundingRect, Point, Path };","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { each } from 'zrender/lib/core/util.js';\nimport Group from 'zrender/lib/graphic/Group.js';\nimport * as componentUtil from '../util/component.js';\nimport * as clazzUtil from '../util/clazz.js';\nimport * as modelUtil from '../util/model.js';\nimport { enterEmphasis, leaveEmphasis, getHighlightDigit, isHighDownDispatcher } from '../util/states.js';\nimport { createTask } from '../core/task.js';\nimport createRenderPlanner from '../chart/helper/createRenderPlanner.js';\nimport { traverseElements } from '../util/graphic.js';\nimport { error } from '../util/log.js';\nvar inner = modelUtil.makeInner();\nvar renderPlanner = createRenderPlanner();\n\nvar ChartView =\n/** @class */\nfunction () {\n  function ChartView() {\n    this.group = new Group();\n    this.uid = componentUtil.getUID('viewChart');\n    this.renderTask = createTask({\n      plan: renderTaskPlan,\n      reset: renderTaskReset\n    });\n    this.renderTask.context = {\n      view: this\n    };\n  }\n\n  ChartView.prototype.init = function (ecModel, api) {};\n\n  ChartView.prototype.render = function (seriesModel, ecModel, api, payload) {\n    if (process.env.NODE_ENV !== 'production') {\n      throw new Error('render method must been implemented');\n    }\n  };\n  /**\r\n   * Highlight series or specified data item.\r\n   */\n\n\n  ChartView.prototype.highlight = function (seriesModel, ecModel, api, payload) {\n    var data = seriesModel.getData(payload && payload.dataType);\n\n    if (!data) {\n      if (process.env.NODE_ENV !== 'production') {\n        error(\"Unknown dataType \" + payload.dataType);\n      }\n\n      return;\n    }\n\n    toggleHighlight(data, payload, 'emphasis');\n  };\n  /**\r\n   * Downplay series or specified data item.\r\n   */\n\n\n  ChartView.prototype.downplay = function (seriesModel, ecModel, api, payload) {\n    var data = seriesModel.getData(payload && payload.dataType);\n\n    if (!data) {\n      if (process.env.NODE_ENV !== 'production') {\n        error(\"Unknown dataType \" + payload.dataType);\n      }\n\n      return;\n    }\n\n    toggleHighlight(data, payload, 'normal');\n  };\n  /**\r\n   * Remove self.\r\n   */\n\n\n  ChartView.prototype.remove = function (ecModel, api) {\n    this.group.removeAll();\n  };\n  /**\r\n   * Dispose self.\r\n   */\n\n\n  ChartView.prototype.dispose = function (ecModel, api) {};\n\n  ChartView.prototype.updateView = function (seriesModel, ecModel, api, payload) {\n    this.render(seriesModel, ecModel, api, payload);\n  }; // FIXME never used?\n\n\n  ChartView.prototype.updateLayout = function (seriesModel, ecModel, api, payload) {\n    this.render(seriesModel, ecModel, api, payload);\n  }; // FIXME never used?\n\n\n  ChartView.prototype.updateVisual = function (seriesModel, ecModel, api, payload) {\n    this.render(seriesModel, ecModel, api, payload);\n  };\n  /**\r\n   * Traverse the new rendered elements.\r\n   *\r\n   * It will traverse the new added element in progressive rendering.\r\n   * And traverse all in normal rendering.\r\n   */\n\n\n  ChartView.prototype.eachRendered = function (cb) {\n    traverseElements(this.group, cb);\n  };\n\n  ChartView.markUpdateMethod = function (payload, methodName) {\n    inner(payload).updateMethod = methodName;\n  };\n\n  ChartView.protoInitialize = function () {\n    var proto = ChartView.prototype;\n    proto.type = 'chart';\n  }();\n\n  return ChartView;\n}();\n\n;\n/**\r\n * Set state of single element\r\n */\n\nfunction elSetState(el, state, highlightDigit) {\n  if (el && isHighDownDispatcher(el)) {\n    (state === 'emphasis' ? enterEmphasis : leaveEmphasis)(el, highlightDigit);\n  }\n}\n\nfunction toggleHighlight(data, payload, state) {\n  var dataIndex = modelUtil.queryDataIndex(data, payload);\n  var highlightDigit = payload && payload.highlightKey != null ? getHighlightDigit(payload.highlightKey) : null;\n\n  if (dataIndex != null) {\n    each(modelUtil.normalizeToArray(dataIndex), function (dataIdx) {\n      elSetState(data.getItemGraphicEl(dataIdx), state, highlightDigit);\n    });\n  } else {\n    data.eachItemGraphicEl(function (el) {\n      elSetState(el, state, highlightDigit);\n    });\n  }\n}\n\nclazzUtil.enableClassExtend(ChartView, ['dispose']);\nclazzUtil.enableClassManagement(ChartView);\n\nfunction renderTaskPlan(context) {\n  return renderPlanner(context.model);\n}\n\nfunction renderTaskReset(context) {\n  var seriesModel = context.model;\n  var ecModel = context.ecModel;\n  var api = context.api;\n  var payload = context.payload; // FIXME: remove updateView updateVisual\n\n  var progressiveRender = seriesModel.pipelineContext.progressiveRender;\n  var view = context.view;\n  var updateMethod = payload && inner(payload).updateMethod;\n  var methodName = progressiveRender ? 'incrementalPrepareRender' : updateMethod && view[updateMethod] ? updateMethod // `appendData` is also supported when data amount\n  // is less than progressive threshold.\n  : 'render';\n\n  if (methodName !== 'render') {\n    view[methodName](seriesModel, ecModel, api, payload);\n  }\n\n  return progressMethodMap[methodName];\n}\n\nvar progressMethodMap = {\n  incrementalPrepareRender: {\n    progress: function (params, context) {\n      context.view.incrementalRender(params, context.model, context.ecModel, context.api, context.payload);\n    }\n  },\n  render: {\n    // Put view.render in `progress` to support appendData. But in this case\n    // view.render should not be called in reset, otherwise it will be called\n    // twise. Use `forceFirstProgress` to make sure that view.render is called\n    // in any cases.\n    forceFirstProgress: true,\n    progress: function (params, context) {\n      context.view.render(context.model, context.ecModel, context.api, context.payload);\n    }\n  }\n};\nexport default ChartView;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nvar ORIGIN_METHOD = '\\0__throttleOriginMethod';\nvar RATE = '\\0__throttleRate';\nvar THROTTLE_TYPE = '\\0__throttleType';\n;\n/**\r\n * @public\r\n * @param {(Function)} fn\r\n * @param {number} [delay=0] Unit: ms.\r\n * @param {boolean} [debounce=false]\r\n *        true: If call interval less than `delay`, only the last call works.\r\n *        false: If call interval less than `delay, call works on fixed rate.\r\n * @return {(Function)} throttled fn.\r\n */\n\nexport function throttle(fn, delay, debounce) {\n  var currCall;\n  var lastCall = 0;\n  var lastExec = 0;\n  var timer = null;\n  var diff;\n  var scope;\n  var args;\n  var debounceNextCall;\n  delay = delay || 0;\n\n  function exec() {\n    lastExec = new Date().getTime();\n    timer = null;\n    fn.apply(scope, args || []);\n  }\n\n  var cb = function () {\n    var cbArgs = [];\n\n    for (var _i = 0; _i < arguments.length; _i++) {\n      cbArgs[_i] = arguments[_i];\n    }\n\n    currCall = new Date().getTime();\n    scope = this;\n    args = cbArgs;\n    var thisDelay = debounceNextCall || delay;\n    var thisDebounce = debounceNextCall || debounce;\n    debounceNextCall = null;\n    diff = currCall - (thisDebounce ? lastCall : lastExec) - thisDelay;\n    clearTimeout(timer); // Here we should make sure that: the `exec` SHOULD NOT be called later\n    // than a new call of `cb`, that is, preserving the command order. Consider\n    // calculating \"scale rate\" when roaming as an example. When a call of `cb`\n    // happens, either the `exec` is called dierectly, or the call is delayed.\n    // But the delayed call should never be later than next call of `cb`. Under\n    // this assurance, we can simply update view state each time `dispatchAction`\n    // triggered by user roaming, but not need to add extra code to avoid the\n    // state being \"rolled-back\".\n\n    if (thisDebounce) {\n      timer = setTimeout(exec, thisDelay);\n    } else {\n      if (diff >= 0) {\n        exec();\n      } else {\n        timer = setTimeout(exec, -diff);\n      }\n    }\n\n    lastCall = currCall;\n  };\n  /**\r\n   * Clear throttle.\r\n   * @public\r\n   */\n\n\n  cb.clear = function () {\n    if (timer) {\n      clearTimeout(timer);\n      timer = null;\n    }\n  };\n  /**\r\n   * Enable debounce once.\r\n   */\n\n\n  cb.debounceNextCall = function (debounceDelay) {\n    debounceNextCall = debounceDelay;\n  };\n\n  return cb;\n}\n/**\r\n * Create throttle method or update throttle rate.\r\n *\r\n * @example\r\n * ComponentView.prototype.render = function () {\r\n *     ...\r\n *     throttle.createOrUpdate(\r\n *         this,\r\n *         '_dispatchAction',\r\n *         this.model.get('throttle'),\r\n *         'fixRate'\r\n *     );\r\n * };\r\n * ComponentView.prototype.remove = function () {\r\n *     throttle.clear(this, '_dispatchAction');\r\n * };\r\n * ComponentView.prototype.dispose = function () {\r\n *     throttle.clear(this, '_dispatchAction');\r\n * };\r\n *\r\n */\n\nexport function createOrUpdate(obj, fnAttr, rate, throttleType) {\n  var fn = obj[fnAttr];\n\n  if (!fn) {\n    return;\n  }\n\n  var originFn = fn[ORIGIN_METHOD] || fn;\n  var lastThrottleType = fn[THROTTLE_TYPE];\n  var lastRate = fn[RATE];\n\n  if (lastRate !== rate || lastThrottleType !== throttleType) {\n    if (rate == null || !throttleType) {\n      return obj[fnAttr] = originFn;\n    }\n\n    fn = obj[fnAttr] = throttle(originFn, rate, throttleType === 'debounce');\n    fn[ORIGIN_METHOD] = originFn;\n    fn[THROTTLE_TYPE] = throttleType;\n    fn[RATE] = rate;\n  }\n\n  return fn;\n}\n/**\r\n * Clear throttle. Example see throttle.createOrUpdate.\r\n */\n\nexport function clear(obj, fnAttr) {\n  var fn = obj[fnAttr];\n\n  if (fn && fn[ORIGIN_METHOD]) {\n    // Clear throttle\n    fn.clear && fn.clear();\n    obj[fnAttr] = fn[ORIGIN_METHOD];\n  }\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { isFunction, extend, createHashMap } from 'zrender/lib/core/util.js';\nimport makeStyleMapper from '../model/mixin/makeStyleMapper.js';\nimport { ITEM_STYLE_KEY_MAP } from '../model/mixin/itemStyle.js';\nimport { LINE_STYLE_KEY_MAP } from '../model/mixin/lineStyle.js';\nimport Model from '../model/Model.js';\nimport { makeInner } from '../util/model.js';\nvar inner = makeInner();\nvar defaultStyleMappers = {\n  itemStyle: makeStyleMapper(ITEM_STYLE_KEY_MAP, true),\n  lineStyle: makeStyleMapper(LINE_STYLE_KEY_MAP, true)\n};\nvar defaultColorKey = {\n  lineStyle: 'stroke',\n  itemStyle: 'fill'\n};\n\nfunction getStyleMapper(seriesModel, stylePath) {\n  var styleMapper = seriesModel.visualStyleMapper || defaultStyleMappers[stylePath];\n\n  if (!styleMapper) {\n    console.warn(\"Unknown style type '\" + stylePath + \"'.\");\n    return defaultStyleMappers.itemStyle;\n  }\n\n  return styleMapper;\n}\n\nfunction getDefaultColorKey(seriesModel, stylePath) {\n  // return defaultColorKey[stylePath] ||\n  var colorKey = seriesModel.visualDrawType || defaultColorKey[stylePath];\n\n  if (!colorKey) {\n    console.warn(\"Unknown style type '\" + stylePath + \"'.\");\n    return 'fill';\n  }\n\n  return colorKey;\n}\n\nvar seriesStyleTask = {\n  createOnAllSeries: true,\n  performRawSeries: true,\n  reset: function (seriesModel, ecModel) {\n    var data = seriesModel.getData();\n    var stylePath = seriesModel.visualStyleAccessPath || 'itemStyle'; // Set in itemStyle\n\n    var styleModel = seriesModel.getModel(stylePath);\n    var getStyle = getStyleMapper(seriesModel, stylePath);\n    var globalStyle = getStyle(styleModel);\n    var decalOption = styleModel.getShallow('decal');\n\n    if (decalOption) {\n      data.setVisual('decal', decalOption);\n      decalOption.dirty = true;\n    } // TODO\n\n\n    var colorKey = getDefaultColorKey(seriesModel, stylePath);\n    var color = globalStyle[colorKey]; // TODO style callback\n\n    var colorCallback = isFunction(color) ? color : null;\n    var hasAutoColor = globalStyle.fill === 'auto' || globalStyle.stroke === 'auto'; // Get from color palette by default.\n\n    if (!globalStyle[colorKey] || colorCallback || hasAutoColor) {\n      // Note: If some series has color specified (e.g., by itemStyle.color), we DO NOT\n      // make it effect palette. Because some scenarios users need to make some series\n      // transparent or as background, which should better not effect the palette.\n      var colorPalette = seriesModel.getColorFromPalette( // TODO series count changed.\n      seriesModel.name, null, ecModel.getSeriesCount());\n\n      if (!globalStyle[colorKey]) {\n        globalStyle[colorKey] = colorPalette;\n        data.setVisual('colorFromPalette', true);\n      }\n\n      globalStyle.fill = globalStyle.fill === 'auto' || isFunction(globalStyle.fill) ? colorPalette : globalStyle.fill;\n      globalStyle.stroke = globalStyle.stroke === 'auto' || isFunction(globalStyle.stroke) ? colorPalette : globalStyle.stroke;\n    }\n\n    data.setVisual('style', globalStyle);\n    data.setVisual('drawType', colorKey); // Only visible series has each data be visual encoded\n\n    if (!ecModel.isSeriesFiltered(seriesModel) && colorCallback) {\n      data.setVisual('colorFromPalette', false);\n      return {\n        dataEach: function (data, idx) {\n          var dataParams = seriesModel.getDataParams(idx);\n          var itemStyle = extend({}, globalStyle);\n          itemStyle[colorKey] = colorCallback(dataParams);\n          data.setItemVisual(idx, 'style', itemStyle);\n        }\n      };\n    }\n  }\n};\nvar sharedModel = new Model();\nvar dataStyleTask = {\n  createOnAllSeries: true,\n  performRawSeries: true,\n  reset: function (seriesModel, ecModel) {\n    if (seriesModel.ignoreStyleOnData || ecModel.isSeriesFiltered(seriesModel)) {\n      return;\n    }\n\n    var data = seriesModel.getData();\n    var stylePath = seriesModel.visualStyleAccessPath || 'itemStyle'; // Set in itemStyle\n\n    var getStyle = getStyleMapper(seriesModel, stylePath);\n    var colorKey = data.getVisual('drawType');\n    return {\n      dataEach: data.hasItemOption ? function (data, idx) {\n        // Not use getItemModel for performance considuration\n        var rawItem = data.getRawDataItem(idx);\n\n        if (rawItem && rawItem[stylePath]) {\n          sharedModel.option = rawItem[stylePath];\n          var style = getStyle(sharedModel);\n          var existsStyle = data.ensureUniqueItemVisual(idx, 'style');\n          extend(existsStyle, style);\n\n          if (sharedModel.option.decal) {\n            data.setItemVisual(idx, 'decal', sharedModel.option.decal);\n            sharedModel.option.decal.dirty = true;\n          }\n\n          if (colorKey in style) {\n            data.setItemVisual(idx, 'colorFromPalette', false);\n          }\n        }\n      } : null\n    };\n  }\n}; // Pick color from palette for the data which has not been set with color yet.\n// Note: do not support stream rendering. No such cases yet.\n\nvar dataColorPaletteTask = {\n  performRawSeries: true,\n  overallReset: function (ecModel) {\n    // Each type of series uses one scope.\n    // Pie and funnel are using different scopes.\n    var paletteScopeGroupByType = createHashMap();\n    ecModel.eachSeries(function (seriesModel) {\n      var colorBy = seriesModel.getColorBy();\n\n      if (seriesModel.isColorBySeries()) {\n        return;\n      }\n\n      var key = seriesModel.type + '-' + colorBy;\n      var colorScope = paletteScopeGroupByType.get(key);\n\n      if (!colorScope) {\n        colorScope = {};\n        paletteScopeGroupByType.set(key, colorScope);\n      }\n\n      inner(seriesModel).scope = colorScope;\n    });\n    ecModel.eachSeries(function (seriesModel) {\n      if (seriesModel.isColorBySeries() || ecModel.isSeriesFiltered(seriesModel)) {\n        return;\n      }\n\n      var dataAll = seriesModel.getRawData();\n      var idxMap = {};\n      var data = seriesModel.getData();\n      var colorScope = inner(seriesModel).scope;\n      var stylePath = seriesModel.visualStyleAccessPath || 'itemStyle';\n      var colorKey = getDefaultColorKey(seriesModel, stylePath);\n      data.each(function (idx) {\n        var rawIdx = data.getRawIndex(idx);\n        idxMap[rawIdx] = idx;\n      }); // Iterate on data before filtered. To make sure color from palette can be\n      // Consistent when toggling legend.\n\n      dataAll.each(function (rawIdx) {\n        var idx = idxMap[rawIdx];\n        var fromPalette = data.getItemVisual(idx, 'colorFromPalette'); // Get color from palette for each data only when the color is inherited from series color, which is\n        // also picked from color palette. So following situation is not in the case:\n        // 1. series.itemStyle.color is set\n        // 2. color is encoded by visualMap\n\n        if (fromPalette) {\n          var itemStyle = data.ensureUniqueItemVisual(idx, 'style');\n          var name_1 = dataAll.getName(rawIdx) || rawIdx + '';\n          var dataCount = dataAll.count();\n          itemStyle[colorKey] = seriesModel.getColorFromPalette(name_1, colorScope, dataCount);\n        }\n      });\n    });\n  }\n};\nexport { seriesStyleTask, dataStyleTask, dataColorPaletteTask };","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport * as zrUtil from 'zrender/lib/core/util.js';\nimport * as graphic from '../util/graphic.js';\nvar PI = Math.PI;\n/**\r\n * @param {module:echarts/ExtensionAPI} api\r\n * @param {Object} [opts]\r\n * @param {string} [opts.text]\r\n * @param {string} [opts.color]\r\n * @param {string} [opts.textColor]\r\n * @return {module:zrender/Element}\r\n */\n\nexport default function defaultLoading(api, opts) {\n  opts = opts || {};\n  zrUtil.defaults(opts, {\n    text: 'loading',\n    textColor: '#000',\n    fontSize: 12,\n    fontWeight: 'normal',\n    fontStyle: 'normal',\n    fontFamily: 'sans-serif',\n    maskColor: 'rgba(255, 255, 255, 0.8)',\n    showSpinner: true,\n    color: '#5470c6',\n    spinnerRadius: 10,\n    lineWidth: 5,\n    zlevel: 0\n  });\n  var group = new graphic.Group();\n  var mask = new graphic.Rect({\n    style: {\n      fill: opts.maskColor\n    },\n    zlevel: opts.zlevel,\n    z: 10000\n  });\n  group.add(mask);\n  var textContent = new graphic.Text({\n    style: {\n      text: opts.text,\n      fill: opts.textColor,\n      fontSize: opts.fontSize,\n      fontWeight: opts.fontWeight,\n      fontStyle: opts.fontStyle,\n      fontFamily: opts.fontFamily\n    },\n    zlevel: opts.zlevel,\n    z: 10001\n  });\n  var labelRect = new graphic.Rect({\n    style: {\n      fill: 'none'\n    },\n    textContent: textContent,\n    textConfig: {\n      position: 'right',\n      distance: 10\n    },\n    zlevel: opts.zlevel,\n    z: 10001\n  });\n  group.add(labelRect);\n  var arc;\n\n  if (opts.showSpinner) {\n    arc = new graphic.Arc({\n      shape: {\n        startAngle: -PI / 2,\n        endAngle: -PI / 2 + 0.1,\n        r: opts.spinnerRadius\n      },\n      style: {\n        stroke: opts.color,\n        lineCap: 'round',\n        lineWidth: opts.lineWidth\n      },\n      zlevel: opts.zlevel,\n      z: 10001\n    });\n    arc.animateShape(true).when(1000, {\n      endAngle: PI * 3 / 2\n    }).start('circularInOut');\n    arc.animateShape(true).when(1000, {\n      startAngle: PI * 3 / 2\n    }).delay(300).start('circularInOut');\n    group.add(arc);\n  } // Inject resize\n\n\n  group.resize = function () {\n    var textWidth = textContent.getBoundingRect().width;\n    var r = opts.showSpinner ? opts.spinnerRadius : 0; // cx = (containerWidth - arcDiameter - textDistance - textWidth) / 2\n    // textDistance needs to be calculated when both animation and text exist\n\n    var cx = (api.getWidth() - r * 2 - (opts.showSpinner && textWidth ? 10 : 0) - textWidth) / 2 - (opts.showSpinner && textWidth ? 0 : 5 + textWidth / 2) // only show the text\n    + (opts.showSpinner ? 0 : textWidth / 2) // only show the spinner\n    + (textWidth ? 0 : r);\n    var cy = api.getHeight() / 2;\n    opts.showSpinner && arc.setShape({\n      cx: cx,\n      cy: cy\n    });\n    labelRect.setShape({\n      x: cx - r,\n      y: cy - r,\n      width: r * 2,\n      height: r * 2\n    });\n    mask.setShape({\n      x: 0,\n      y: 0,\n      width: api.getWidth(),\n      height: api.getHeight()\n    });\n  };\n\n  group.resize();\n  return group;\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { each, map, isFunction, createHashMap, noop, assert } from 'zrender/lib/core/util.js';\nimport { createTask } from './task.js';\nimport { getUID } from '../util/component.js';\nimport GlobalModel from '../model/Global.js';\nimport ExtensionAPI from './ExtensionAPI.js';\nimport { normalizeToArray } from '../util/model.js';\n;\n\nvar Scheduler =\n/** @class */\nfunction () {\n  function Scheduler(ecInstance, api, dataProcessorHandlers, visualHandlers) {\n    // key: handlerUID\n    this._stageTaskMap = createHashMap();\n    this.ecInstance = ecInstance;\n    this.api = api; // Fix current processors in case that in some rear cases that\n    // processors might be registered after echarts instance created.\n    // Register processors incrementally for a echarts instance is\n    // not supported by this stream architecture.\n\n    dataProcessorHandlers = this._dataProcessorHandlers = dataProcessorHandlers.slice();\n    visualHandlers = this._visualHandlers = visualHandlers.slice();\n    this._allHandlers = dataProcessorHandlers.concat(visualHandlers);\n  }\n\n  Scheduler.prototype.restoreData = function (ecModel, payload) {\n    // TODO: Only restore needed series and components, but not all components.\n    // Currently `restoreData` of all of the series and component will be called.\n    // But some independent components like `title`, `legend`, `graphic`, `toolbox`,\n    // `tooltip`, `axisPointer`, etc, do not need series refresh when `setOption`,\n    // and some components like coordinate system, axes, dataZoom, visualMap only\n    // need their target series refresh.\n    // (1) If we are implementing this feature some day, we should consider these cases:\n    // if a data processor depends on a component (e.g., dataZoomProcessor depends\n    // on the settings of `dataZoom`), it should be re-performed if the component\n    // is modified by `setOption`.\n    // (2) If a processor depends on sevral series, speicified by its `getTargetSeries`,\n    // it should be re-performed when the result array of `getTargetSeries` changed.\n    // We use `dependencies` to cover these issues.\n    // (3) How to update target series when coordinate system related components modified.\n    // TODO: simply the dirty mechanism? Check whether only the case here can set tasks dirty,\n    // and this case all of the tasks will be set as dirty.\n    ecModel.restoreData(payload); // Theoretically an overall task not only depends on each of its target series, but also\n    // depends on all of the series.\n    // The overall task is not in pipeline, and `ecModel.restoreData` only set pipeline tasks\n    // dirty. If `getTargetSeries` of an overall task returns nothing, we should also ensure\n    // that the overall task is set as dirty and to be performed, otherwise it probably cause\n    // state chaos. So we have to set dirty of all of the overall tasks manually, otherwise it\n    // probably cause state chaos (consider `dataZoomProcessor`).\n\n    this._stageTaskMap.each(function (taskRecord) {\n      var overallTask = taskRecord.overallTask;\n      overallTask && overallTask.dirty();\n    });\n  }; // If seriesModel provided, incremental threshold is check by series data.\n\n\n  Scheduler.prototype.getPerformArgs = function (task, isBlock) {\n    // For overall task\n    if (!task.__pipeline) {\n      return;\n    }\n\n    var pipeline = this._pipelineMap.get(task.__pipeline.id);\n\n    var pCtx = pipeline.context;\n    var incremental = !isBlock && pipeline.progressiveEnabled && (!pCtx || pCtx.progressiveRender) && task.__idxInPipeline > pipeline.blockIndex;\n    var step = incremental ? pipeline.step : null;\n    var modDataCount = pCtx && pCtx.modDataCount;\n    var modBy = modDataCount != null ? Math.ceil(modDataCount / step) : null;\n    return {\n      step: step,\n      modBy: modBy,\n      modDataCount: modDataCount\n    };\n  };\n\n  Scheduler.prototype.getPipeline = function (pipelineId) {\n    return this._pipelineMap.get(pipelineId);\n  };\n  /**\r\n   * Current, progressive rendering starts from visual and layout.\r\n   * Always detect render mode in the same stage, avoiding that incorrect\r\n   * detection caused by data filtering.\r\n   * Caution:\r\n   * `updateStreamModes` use `seriesModel.getData()`.\r\n   */\n\n\n  Scheduler.prototype.updateStreamModes = function (seriesModel, view) {\n    var pipeline = this._pipelineMap.get(seriesModel.uid);\n\n    var data = seriesModel.getData();\n    var dataLen = data.count(); // `progressiveRender` means that can render progressively in each\n    // animation frame. Note that some types of series do not provide\n    // `view.incrementalPrepareRender` but support `chart.appendData`. We\n    // use the term `incremental` but not `progressive` to describe the\n    // case that `chart.appendData`.\n\n    var progressiveRender = pipeline.progressiveEnabled && view.incrementalPrepareRender && dataLen >= pipeline.threshold;\n    var large = seriesModel.get('large') && dataLen >= seriesModel.get('largeThreshold'); // TODO: modDataCount should not updated if `appendData`, otherwise cause whole repaint.\n    // see `test/candlestick-large3.html`\n\n    var modDataCount = seriesModel.get('progressiveChunkMode') === 'mod' ? dataLen : null;\n    seriesModel.pipelineContext = pipeline.context = {\n      progressiveRender: progressiveRender,\n      modDataCount: modDataCount,\n      large: large\n    };\n  };\n\n  Scheduler.prototype.restorePipelines = function (ecModel) {\n    var scheduler = this;\n    var pipelineMap = scheduler._pipelineMap = createHashMap();\n    ecModel.eachSeries(function (seriesModel) {\n      var progressive = seriesModel.getProgressive();\n      var pipelineId = seriesModel.uid;\n      pipelineMap.set(pipelineId, {\n        id: pipelineId,\n        head: null,\n        tail: null,\n        threshold: seriesModel.getProgressiveThreshold(),\n        progressiveEnabled: progressive && !(seriesModel.preventIncremental && seriesModel.preventIncremental()),\n        blockIndex: -1,\n        step: Math.round(progressive || 700),\n        count: 0\n      });\n\n      scheduler._pipe(seriesModel, seriesModel.dataTask);\n    });\n  };\n\n  Scheduler.prototype.prepareStageTasks = function () {\n    var stageTaskMap = this._stageTaskMap;\n    var ecModel = this.api.getModel();\n    var api = this.api;\n    each(this._allHandlers, function (handler) {\n      var record = stageTaskMap.get(handler.uid) || stageTaskMap.set(handler.uid, {});\n      var errMsg = '';\n\n      if (process.env.NODE_ENV !== 'production') {\n        // Currently do not need to support to sepecify them both.\n        errMsg = '\"reset\" and \"overallReset\" must not be both specified.';\n      }\n\n      assert(!(handler.reset && handler.overallReset), errMsg);\n      handler.reset && this._createSeriesStageTask(handler, record, ecModel, api);\n      handler.overallReset && this._createOverallStageTask(handler, record, ecModel, api);\n    }, this);\n  };\n\n  Scheduler.prototype.prepareView = function (view, model, ecModel, api) {\n    var renderTask = view.renderTask;\n    var context = renderTask.context;\n    context.model = model;\n    context.ecModel = ecModel;\n    context.api = api;\n    renderTask.__block = !view.incrementalPrepareRender;\n\n    this._pipe(model, renderTask);\n  };\n\n  Scheduler.prototype.performDataProcessorTasks = function (ecModel, payload) {\n    // If we do not use `block` here, it should be considered when to update modes.\n    this._performStageTasks(this._dataProcessorHandlers, ecModel, payload, {\n      block: true\n    });\n  };\n\n  Scheduler.prototype.performVisualTasks = function (ecModel, payload, opt) {\n    this._performStageTasks(this._visualHandlers, ecModel, payload, opt);\n  };\n\n  Scheduler.prototype._performStageTasks = function (stageHandlers, ecModel, payload, opt) {\n    opt = opt || {};\n    var unfinished = false;\n    var scheduler = this;\n    each(stageHandlers, function (stageHandler, idx) {\n      if (opt.visualType && opt.visualType !== stageHandler.visualType) {\n        return;\n      }\n\n      var stageHandlerRecord = scheduler._stageTaskMap.get(stageHandler.uid);\n\n      var seriesTaskMap = stageHandlerRecord.seriesTaskMap;\n      var overallTask = stageHandlerRecord.overallTask;\n\n      if (overallTask) {\n        var overallNeedDirty_1;\n        var agentStubMap = overallTask.agentStubMap;\n        agentStubMap.each(function (stub) {\n          if (needSetDirty(opt, stub)) {\n            stub.dirty();\n            overallNeedDirty_1 = true;\n          }\n        });\n        overallNeedDirty_1 && overallTask.dirty();\n        scheduler.updatePayload(overallTask, payload);\n        var performArgs_1 = scheduler.getPerformArgs(overallTask, opt.block); // Execute stubs firstly, which may set the overall task dirty,\n        // then execute the overall task. And stub will call seriesModel.setData,\n        // which ensures that in the overallTask seriesModel.getData() will not\n        // return incorrect data.\n\n        agentStubMap.each(function (stub) {\n          stub.perform(performArgs_1);\n        });\n\n        if (overallTask.perform(performArgs_1)) {\n          unfinished = true;\n        }\n      } else if (seriesTaskMap) {\n        seriesTaskMap.each(function (task, pipelineId) {\n          if (needSetDirty(opt, task)) {\n            task.dirty();\n          }\n\n          var performArgs = scheduler.getPerformArgs(task, opt.block); // FIXME\n          // if intending to declare `performRawSeries` in handlers, only\n          // stream-independent (specifically, data item independent) operations can be\n          // performed. Because if a series is filtered, most of the tasks will not\n          // be performed. A stream-dependent operation probably cause wrong biz logic.\n          // Perhaps we should not provide a separate callback for this case instead\n          // of providing the config `performRawSeries`. The stream-dependent operations\n          // and stream-independent operations should better not be mixed.\n\n          performArgs.skip = !stageHandler.performRawSeries && ecModel.isSeriesFiltered(task.context.model);\n          scheduler.updatePayload(task, payload);\n\n          if (task.perform(performArgs)) {\n            unfinished = true;\n          }\n        });\n      }\n    });\n\n    function needSetDirty(opt, task) {\n      return opt.setDirty && (!opt.dirtyMap || opt.dirtyMap.get(task.__pipeline.id));\n    }\n\n    this.unfinished = unfinished || this.unfinished;\n  };\n\n  Scheduler.prototype.performSeriesTasks = function (ecModel) {\n    var unfinished;\n    ecModel.eachSeries(function (seriesModel) {\n      // Progress to the end for dataInit and dataRestore.\n      unfinished = seriesModel.dataTask.perform() || unfinished;\n    });\n    this.unfinished = unfinished || this.unfinished;\n  };\n\n  Scheduler.prototype.plan = function () {\n    // Travel pipelines, check block.\n    this._pipelineMap.each(function (pipeline) {\n      var task = pipeline.tail;\n\n      do {\n        if (task.__block) {\n          pipeline.blockIndex = task.__idxInPipeline;\n          break;\n        }\n\n        task = task.getUpstream();\n      } while (task);\n    });\n  };\n\n  Scheduler.prototype.updatePayload = function (task, payload) {\n    payload !== 'remain' && (task.context.payload = payload);\n  };\n\n  Scheduler.prototype._createSeriesStageTask = function (stageHandler, stageHandlerRecord, ecModel, api) {\n    var scheduler = this;\n    var oldSeriesTaskMap = stageHandlerRecord.seriesTaskMap; // The count of stages are totally about only several dozen, so\n    // do not need to reuse the map.\n\n    var newSeriesTaskMap = stageHandlerRecord.seriesTaskMap = createHashMap();\n    var seriesType = stageHandler.seriesType;\n    var getTargetSeries = stageHandler.getTargetSeries; // If a stageHandler should cover all series, `createOnAllSeries` should be declared mandatorily,\n    // to avoid some typo or abuse. Otherwise if an extension do not specify a `seriesType`,\n    // it works but it may cause other irrelevant charts blocked.\n\n    if (stageHandler.createOnAllSeries) {\n      ecModel.eachRawSeries(create);\n    } else if (seriesType) {\n      ecModel.eachRawSeriesByType(seriesType, create);\n    } else if (getTargetSeries) {\n      getTargetSeries(ecModel, api).each(create);\n    }\n\n    function create(seriesModel) {\n      var pipelineId = seriesModel.uid; // Init tasks for each seriesModel only once.\n      // Reuse original task instance.\n\n      var task = newSeriesTaskMap.set(pipelineId, oldSeriesTaskMap && oldSeriesTaskMap.get(pipelineId) || createTask({\n        plan: seriesTaskPlan,\n        reset: seriesTaskReset,\n        count: seriesTaskCount\n      }));\n      task.context = {\n        model: seriesModel,\n        ecModel: ecModel,\n        api: api,\n        // PENDING: `useClearVisual` not used?\n        useClearVisual: stageHandler.isVisual && !stageHandler.isLayout,\n        plan: stageHandler.plan,\n        reset: stageHandler.reset,\n        scheduler: scheduler\n      };\n\n      scheduler._pipe(seriesModel, task);\n    }\n  };\n\n  Scheduler.prototype._createOverallStageTask = function (stageHandler, stageHandlerRecord, ecModel, api) {\n    var scheduler = this;\n    var overallTask = stageHandlerRecord.overallTask = stageHandlerRecord.overallTask // For overall task, the function only be called on reset stage.\n    || createTask({\n      reset: overallTaskReset\n    });\n    overallTask.context = {\n      ecModel: ecModel,\n      api: api,\n      overallReset: stageHandler.overallReset,\n      scheduler: scheduler\n    };\n    var oldAgentStubMap = overallTask.agentStubMap; // The count of stages are totally about only several dozen, so\n    // do not need to reuse the map.\n\n    var newAgentStubMap = overallTask.agentStubMap = createHashMap();\n    var seriesType = stageHandler.seriesType;\n    var getTargetSeries = stageHandler.getTargetSeries;\n    var overallProgress = true;\n    var shouldOverallTaskDirty = false; // FIXME:TS never used, so comment it\n    // let modifyOutputEnd = stageHandler.modifyOutputEnd;\n    // An overall task with seriesType detected or has `getTargetSeries`, we add\n    // stub in each pipelines, it will set the overall task dirty when the pipeline\n    // progress. Moreover, to avoid call the overall task each frame (too frequent),\n    // we set the pipeline block.\n\n    var errMsg = '';\n\n    if (process.env.NODE_ENV !== 'production') {\n      errMsg = '\"createOnAllSeries\" is not supported for \"overallReset\", ' + 'because it will block all streams.';\n    }\n\n    assert(!stageHandler.createOnAllSeries, errMsg);\n\n    if (seriesType) {\n      ecModel.eachRawSeriesByType(seriesType, createStub);\n    } else if (getTargetSeries) {\n      getTargetSeries(ecModel, api).each(createStub);\n    } // Otherwise, (usually it is legacy case), the overall task will only be\n    // executed when upstream is dirty. Otherwise the progressive rendering of all\n    // pipelines will be disabled unexpectedly. But it still needs stubs to receive\n    // dirty info from upstream.\n    else {\n        overallProgress = false;\n        each(ecModel.getSeries(), createStub);\n      }\n\n    function createStub(seriesModel) {\n      var pipelineId = seriesModel.uid;\n      var stub = newAgentStubMap.set(pipelineId, oldAgentStubMap && oldAgentStubMap.get(pipelineId) || ( // When the result of `getTargetSeries` changed, the overallTask\n      // should be set as dirty and re-performed.\n      shouldOverallTaskDirty = true, createTask({\n        reset: stubReset,\n        onDirty: stubOnDirty\n      })));\n      stub.context = {\n        model: seriesModel,\n        overallProgress: overallProgress // FIXME:TS never used, so comment it\n        // modifyOutputEnd: modifyOutputEnd\n\n      };\n      stub.agent = overallTask;\n      stub.__block = overallProgress;\n\n      scheduler._pipe(seriesModel, stub);\n    }\n\n    if (shouldOverallTaskDirty) {\n      overallTask.dirty();\n    }\n  };\n\n  Scheduler.prototype._pipe = function (seriesModel, task) {\n    var pipelineId = seriesModel.uid;\n\n    var pipeline = this._pipelineMap.get(pipelineId);\n\n    !pipeline.head && (pipeline.head = task);\n    pipeline.tail && pipeline.tail.pipe(task);\n    pipeline.tail = task;\n    task.__idxInPipeline = pipeline.count++;\n    task.__pipeline = pipeline;\n  };\n\n  Scheduler.wrapStageHandler = function (stageHandler, visualType) {\n    if (isFunction(stageHandler)) {\n      stageHandler = {\n        overallReset: stageHandler,\n        seriesType: detectSeriseType(stageHandler)\n      };\n    }\n\n    stageHandler.uid = getUID('stageHandler');\n    visualType && (stageHandler.visualType = visualType);\n    return stageHandler;\n  };\n\n  ;\n  return Scheduler;\n}();\n\nfunction overallTaskReset(context) {\n  context.overallReset(context.ecModel, context.api, context.payload);\n}\n\nfunction stubReset(context) {\n  return context.overallProgress && stubProgress;\n}\n\nfunction stubProgress() {\n  this.agent.dirty();\n  this.getDownstream().dirty();\n}\n\nfunction stubOnDirty() {\n  this.agent && this.agent.dirty();\n}\n\nfunction seriesTaskPlan(context) {\n  return context.plan ? context.plan(context.model, context.ecModel, context.api, context.payload) : null;\n}\n\nfunction seriesTaskReset(context) {\n  if (context.useClearVisual) {\n    context.data.clearAllVisual();\n  }\n\n  var resetDefines = context.resetDefines = normalizeToArray(context.reset(context.model, context.ecModel, context.api, context.payload));\n  return resetDefines.length > 1 ? map(resetDefines, function (v, idx) {\n    return makeSeriesTaskProgress(idx);\n  }) : singleSeriesTaskProgress;\n}\n\nvar singleSeriesTaskProgress = makeSeriesTaskProgress(0);\n\nfunction makeSeriesTaskProgress(resetDefineIdx) {\n  return function (params, context) {\n    var data = context.data;\n    var resetDefine = context.resetDefines[resetDefineIdx];\n\n    if (resetDefine && resetDefine.dataEach) {\n      for (var i = params.start; i < params.end; i++) {\n        resetDefine.dataEach(data, i);\n      }\n    } else if (resetDefine && resetDefine.progress) {\n      resetDefine.progress(params, data);\n    }\n  };\n}\n\nfunction seriesTaskCount(context) {\n  return context.data.count();\n}\n/**\r\n * Only some legacy stage handlers (usually in echarts extensions) are pure function.\r\n * To ensure that they can work normally, they should work in block mode, that is,\r\n * they should not be started util the previous tasks finished. So they cause the\r\n * progressive rendering disabled. We try to detect the series type, to narrow down\r\n * the block range to only the series type they concern, but not all series.\r\n */\n\n\nfunction detectSeriseType(legacyFunc) {\n  seriesType = null;\n\n  try {\n    // Assume there is no async when calling `eachSeriesByType`.\n    legacyFunc(ecModelMock, apiMock);\n  } catch (e) {}\n\n  return seriesType;\n}\n\nvar ecModelMock = {};\nvar apiMock = {};\nvar seriesType;\nmockMethods(ecModelMock, GlobalModel);\nmockMethods(apiMock, ExtensionAPI);\n\necModelMock.eachSeriesByType = ecModelMock.eachRawSeriesByType = function (type) {\n  seriesType = type;\n};\n\necModelMock.eachComponent = function (cond) {\n  if (cond.mainType === 'series' && cond.subType) {\n    seriesType = cond.subType;\n  }\n};\n\nfunction mockMethods(target, Clz) {\n  /* eslint-disable */\n  for (var name_1 in Clz.prototype) {\n    // Do not use hasOwnProperty\n    target[name_1] = noop;\n  }\n  /* eslint-enable */\n\n}\n\nexport default Scheduler;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nvar colorAll = ['#37A2DA', '#32C5E9', '#67E0E3', '#9FE6B8', '#FFDB5C', '#ff9f7f', '#fb7293', '#E062AE', '#E690D1', '#e7bcf3', '#9d96f5', '#8378EA', '#96BFFF'];\nexport default {\n  color: colorAll,\n  colorLayer: [['#37A2DA', '#ffd85c', '#fd7b5f'], ['#37A2DA', '#67E0E3', '#FFDB5C', '#ff9f7f', '#E062AE', '#9d96f5'], ['#37A2DA', '#32C5E9', '#9FE6B8', '#FFDB5C', '#ff9f7f', '#fb7293', '#e7bcf3', '#8378EA', '#96BFFF'], colorAll]\n};","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nvar contrastColor = '#B9B8CE';\nvar backgroundColor = '#100C2A';\n\nvar axisCommon = function () {\n  return {\n    axisLine: {\n      lineStyle: {\n        color: contrastColor\n      }\n    },\n    splitLine: {\n      lineStyle: {\n        color: '#484753'\n      }\n    },\n    splitArea: {\n      areaStyle: {\n        color: ['rgba(255,255,255,0.02)', 'rgba(255,255,255,0.05)']\n      }\n    },\n    minorSplitLine: {\n      lineStyle: {\n        color: '#20203B'\n      }\n    }\n  };\n};\n\nvar colorPalette = ['#4992ff', '#7cffb2', '#fddd60', '#ff6e76', '#58d9f9', '#05c091', '#ff8a45', '#8d48e3', '#dd79ff'];\nvar theme = {\n  darkMode: true,\n  color: colorPalette,\n  backgroundColor: backgroundColor,\n  axisPointer: {\n    lineStyle: {\n      color: '#817f91'\n    },\n    crossStyle: {\n      color: '#817f91'\n    },\n    label: {\n      // TODO Contrast of label backgorundColor\n      color: '#fff'\n    }\n  },\n  legend: {\n    textStyle: {\n      color: contrastColor\n    }\n  },\n  textStyle: {\n    color: contrastColor\n  },\n  title: {\n    textStyle: {\n      color: '#EEF1FA'\n    },\n    subtextStyle: {\n      color: '#B9B8CE'\n    }\n  },\n  toolbox: {\n    iconStyle: {\n      borderColor: contrastColor\n    }\n  },\n  dataZoom: {\n    borderColor: '#71708A',\n    textStyle: {\n      color: contrastColor\n    },\n    brushStyle: {\n      color: 'rgba(135,163,206,0.3)'\n    },\n    handleStyle: {\n      color: '#353450',\n      borderColor: '#C5CBE3'\n    },\n    moveHandleStyle: {\n      color: '#B0B6C3',\n      opacity: 0.3\n    },\n    fillerColor: 'rgba(135,163,206,0.2)',\n    emphasis: {\n      handleStyle: {\n        borderColor: '#91B7F2',\n        color: '#4D587D'\n      },\n      moveHandleStyle: {\n        color: '#636D9A',\n        opacity: 0.7\n      }\n    },\n    dataBackground: {\n      lineStyle: {\n        color: '#71708A',\n        width: 1\n      },\n      areaStyle: {\n        color: '#71708A'\n      }\n    },\n    selectedDataBackground: {\n      lineStyle: {\n        color: '#87A3CE'\n      },\n      areaStyle: {\n        color: '#87A3CE'\n      }\n    }\n  },\n  visualMap: {\n    textStyle: {\n      color: contrastColor\n    }\n  },\n  timeline: {\n    lineStyle: {\n      color: contrastColor\n    },\n    label: {\n      color: contrastColor\n    },\n    controlStyle: {\n      color: contrastColor,\n      borderColor: contrastColor\n    }\n  },\n  calendar: {\n    itemStyle: {\n      color: backgroundColor\n    },\n    dayLabel: {\n      color: contrastColor\n    },\n    monthLabel: {\n      color: contrastColor\n    },\n    yearLabel: {\n      color: contrastColor\n    }\n  },\n  timeAxis: axisCommon(),\n  logAxis: axisCommon(),\n  valueAxis: axisCommon(),\n  categoryAxis: axisCommon(),\n  line: {\n    symbol: 'circle'\n  },\n  graph: {\n    color: colorPalette\n  },\n  gauge: {\n    title: {\n      color: contrastColor\n    },\n    axisLine: {\n      lineStyle: {\n        color: [[1, 'rgba(207,212,219,0.2)']]\n      }\n    },\n    axisLabel: {\n      color: contrastColor\n    },\n    detail: {\n      color: '#EEF1FA'\n    }\n  },\n  candlestick: {\n    itemStyle: {\n      color: '#f64e56',\n      color0: '#54ea92',\n      borderColor: '#f64e56',\n      borderColor0: '#54ea92' // borderColor: '#ca2824',\n      // borderColor0: '#09a443'\n\n    }\n  }\n};\ntheme.categoryAxis.splitLine.show = false;\nexport default theme;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport * as zrUtil from 'zrender/lib/core/util.js';\nimport { parseClassType } from './clazz.js';\n/**\r\n * Usage of query:\r\n * `chart.on('click', query, handler);`\r\n * The `query` can be:\r\n * + The component type query string, only `mainType` or `mainType.subType`,\r\n *   like: 'xAxis', 'series', 'xAxis.category' or 'series.line'.\r\n * + The component query object, like:\r\n *   `{seriesIndex: 2}`, `{seriesName: 'xx'}`, `{seriesId: 'some'}`,\r\n *   `{xAxisIndex: 2}`, `{xAxisName: 'xx'}`, `{xAxisId: 'some'}`.\r\n * + The data query object, like:\r\n *   `{dataIndex: 123}`, `{dataType: 'link'}`, `{name: 'some'}`.\r\n * + The other query object (cmponent customized query), like:\r\n *   `{element: 'some'}` (only available in custom series).\r\n *\r\n * Caveat: If a prop in the `query` object is `null/undefined`, it is the\r\n * same as there is no such prop in the `query` object.\r\n */\n\nvar ECEventProcessor =\n/** @class */\nfunction () {\n  function ECEventProcessor() {}\n\n  ECEventProcessor.prototype.normalizeQuery = function (query) {\n    var cptQuery = {};\n    var dataQuery = {};\n    var otherQuery = {}; // `query` is `mainType` or `mainType.subType` of component.\n\n    if (zrUtil.isString(query)) {\n      var condCptType = parseClassType(query); // `.main` and `.sub` may be ''.\n\n      cptQuery.mainType = condCptType.main || null;\n      cptQuery.subType = condCptType.sub || null;\n    } // `query` is an object, convert to {mainType, index, name, id}.\n    else {\n        // `xxxIndex`, `xxxName`, `xxxId`, `name`, `dataIndex`, `dataType` is reserved,\n        // can not be used in `compomentModel.filterForExposedEvent`.\n        var suffixes_1 = ['Index', 'Name', 'Id'];\n        var dataKeys_1 = {\n          name: 1,\n          dataIndex: 1,\n          dataType: 1\n        };\n        zrUtil.each(query, function (val, key) {\n          var reserved = false;\n\n          for (var i = 0; i < suffixes_1.length; i++) {\n            var propSuffix = suffixes_1[i];\n            var suffixPos = key.lastIndexOf(propSuffix);\n\n            if (suffixPos > 0 && suffixPos === key.length - propSuffix.length) {\n              var mainType = key.slice(0, suffixPos); // Consider `dataIndex`.\n\n              if (mainType !== 'data') {\n                cptQuery.mainType = mainType;\n                cptQuery[propSuffix.toLowerCase()] = val;\n                reserved = true;\n              }\n            }\n          }\n\n          if (dataKeys_1.hasOwnProperty(key)) {\n            dataQuery[key] = val;\n            reserved = true;\n          }\n\n          if (!reserved) {\n            otherQuery[key] = val;\n          }\n        });\n      }\n\n    return {\n      cptQuery: cptQuery,\n      dataQuery: dataQuery,\n      otherQuery: otherQuery\n    };\n  };\n\n  ECEventProcessor.prototype.filter = function (eventType, query) {\n    // They should be assigned before each trigger call.\n    var eventInfo = this.eventInfo;\n\n    if (!eventInfo) {\n      return true;\n    }\n\n    var targetEl = eventInfo.targetEl;\n    var packedEvent = eventInfo.packedEvent;\n    var model = eventInfo.model;\n    var view = eventInfo.view; // For event like 'globalout'.\n\n    if (!model || !view) {\n      return true;\n    }\n\n    var cptQuery = query.cptQuery;\n    var dataQuery = query.dataQuery;\n    return check(cptQuery, model, 'mainType') && check(cptQuery, model, 'subType') && check(cptQuery, model, 'index', 'componentIndex') && check(cptQuery, model, 'name') && check(cptQuery, model, 'id') && check(dataQuery, packedEvent, 'name') && check(dataQuery, packedEvent, 'dataIndex') && check(dataQuery, packedEvent, 'dataType') && (!view.filterForExposedEvent || view.filterForExposedEvent(eventType, query.otherQuery, targetEl, packedEvent));\n\n    function check(query, host, prop, propOnHost) {\n      return query[prop] == null || host[propOnHost || prop] === query[prop];\n    }\n  };\n\n  ECEventProcessor.prototype.afterTrigger = function () {\n    // Make sure the eventInfo won't be used in next trigger.\n    this.eventInfo = null;\n  };\n\n  return ECEventProcessor;\n}();\n\nexport { ECEventProcessor };\n;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { extend, isFunction, keys } from 'zrender/lib/core/util.js';\nvar SYMBOL_PROPS_WITH_CB = ['symbol', 'symbolSize', 'symbolRotate', 'symbolOffset'];\nvar SYMBOL_PROPS = SYMBOL_PROPS_WITH_CB.concat(['symbolKeepAspect']); // Encoding visual for all series include which is filtered for legend drawing\n\nvar seriesSymbolTask = {\n  createOnAllSeries: true,\n  // For legend.\n  performRawSeries: true,\n  reset: function (seriesModel, ecModel) {\n    var data = seriesModel.getData();\n\n    if (seriesModel.legendIcon) {\n      data.setVisual('legendIcon', seriesModel.legendIcon);\n    }\n\n    if (!seriesModel.hasSymbolVisual) {\n      return;\n    }\n\n    var symbolOptions = {};\n    var symbolOptionsCb = {};\n    var hasCallback = false;\n\n    for (var i = 0; i < SYMBOL_PROPS_WITH_CB.length; i++) {\n      var symbolPropName = SYMBOL_PROPS_WITH_CB[i];\n      var val = seriesModel.get(symbolPropName);\n\n      if (isFunction(val)) {\n        hasCallback = true;\n        symbolOptionsCb[symbolPropName] = val;\n      } else {\n        symbolOptions[symbolPropName] = val;\n      }\n    }\n\n    symbolOptions.symbol = symbolOptions.symbol || seriesModel.defaultSymbol;\n    data.setVisual(extend({\n      legendIcon: seriesModel.legendIcon || symbolOptions.symbol,\n      symbolKeepAspect: seriesModel.get('symbolKeepAspect')\n    }, symbolOptions)); // Only visible series has each data be visual encoded\n\n    if (ecModel.isSeriesFiltered(seriesModel)) {\n      return;\n    }\n\n    var symbolPropsCb = keys(symbolOptionsCb);\n\n    function dataEach(data, idx) {\n      var rawValue = seriesModel.getRawValue(idx);\n      var params = seriesModel.getDataParams(idx);\n\n      for (var i = 0; i < symbolPropsCb.length; i++) {\n        var symbolPropName = symbolPropsCb[i];\n        data.setItemVisual(idx, symbolPropName, symbolOptionsCb[symbolPropName](rawValue, params));\n      }\n    }\n\n    return {\n      dataEach: hasCallback ? dataEach : null\n    };\n  }\n};\nvar dataSymbolTask = {\n  createOnAllSeries: true,\n  // For legend.\n  performRawSeries: true,\n  reset: function (seriesModel, ecModel) {\n    if (!seriesModel.hasSymbolVisual) {\n      return;\n    } // Only visible series has each data be visual encoded\n\n\n    if (ecModel.isSeriesFiltered(seriesModel)) {\n      return;\n    }\n\n    var data = seriesModel.getData();\n\n    function dataEach(data, idx) {\n      var itemModel = data.getItemModel(idx);\n\n      for (var i = 0; i < SYMBOL_PROPS.length; i++) {\n        var symbolPropName = SYMBOL_PROPS[i];\n        var val = itemModel.getShallow(symbolPropName, true);\n\n        if (val != null) {\n          data.setItemVisual(idx, symbolPropName, val);\n        }\n      }\n    }\n\n    return {\n      dataEach: data.hasItemOption ? dataEach : null\n    };\n  }\n};\nexport { seriesSymbolTask, dataSymbolTask };","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nexport function getItemVisualFromData(data, dataIndex, key) {\n  switch (key) {\n    case 'color':\n      var style = data.getItemVisual(dataIndex, 'style');\n      return style[data.getVisual('drawType')];\n\n    case 'opacity':\n      return data.getItemVisual(dataIndex, 'style').opacity;\n\n    case 'symbol':\n    case 'symbolSize':\n    case 'liftZ':\n      return data.getItemVisual(dataIndex, key);\n\n    default:\n      if (process.env.NODE_ENV !== 'production') {\n        console.warn(\"Unknown visual type \" + key);\n      }\n\n  }\n}\nexport function getVisualFromData(data, key) {\n  switch (key) {\n    case 'color':\n      var style = data.getVisual('style');\n      return style[data.getVisual('drawType')];\n\n    case 'opacity':\n      return data.getVisual('style').opacity;\n\n    case 'symbol':\n    case 'symbolSize':\n    case 'liftZ':\n      return data.getVisual(key);\n\n    default:\n      if (process.env.NODE_ENV !== 'production') {\n        console.warn(\"Unknown visual type \" + key);\n      }\n\n  }\n}\nexport function setItemVisualFromData(data, dataIndex, key, value) {\n  switch (key) {\n    case 'color':\n      // Make sure not sharing style object.\n      var style = data.ensureUniqueItemVisual(dataIndex, 'style');\n      style[data.getVisual('drawType')] = value; // Mark the color has been changed, not from palette anymore\n\n      data.setItemVisual(dataIndex, 'colorFromPalette', false);\n      break;\n\n    case 'opacity':\n      data.ensureUniqueItemVisual(dataIndex, 'style').opacity = value;\n      break;\n\n    case 'symbol':\n    case 'symbolSize':\n    case 'liftZ':\n      data.setItemVisual(dataIndex, key, value);\n      break;\n\n    default:\n      if (process.env.NODE_ENV !== 'production') {\n        console.warn(\"Unknown visual type \" + key);\n      }\n\n  }\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { extend, each, isArray, isString } from 'zrender/lib/core/util.js';\nimport { deprecateReplaceLog, deprecateLog } from '../util/log.js';\nimport { queryDataIndex } from '../util/model.js'; // Legacy data selection action.\n// Includes: pieSelect, pieUnSelect, pieToggleSelect, mapSelect, mapUnSelect, mapToggleSelect\n\nexport function createLegacyDataSelectAction(seriesType, ecRegisterAction) {\n  function getSeriesIndices(ecModel, payload) {\n    var seriesIndices = [];\n    ecModel.eachComponent({\n      mainType: 'series',\n      subType: seriesType,\n      query: payload\n    }, function (seriesModel) {\n      seriesIndices.push(seriesModel.seriesIndex);\n    });\n    return seriesIndices;\n  }\n\n  each([[seriesType + 'ToggleSelect', 'toggleSelect'], [seriesType + 'Select', 'select'], [seriesType + 'UnSelect', 'unselect']], function (eventsMap) {\n    ecRegisterAction(eventsMap[0], function (payload, ecModel, api) {\n      payload = extend({}, payload);\n\n      if (process.env.NODE_ENV !== 'production') {\n        deprecateReplaceLog(payload.type, eventsMap[1]);\n      }\n\n      api.dispatchAction(extend(payload, {\n        type: eventsMap[1],\n        seriesIndex: getSeriesIndices(ecModel, payload)\n      }));\n    });\n  });\n}\n\nfunction handleSeriesLegacySelectEvents(type, eventPostfix, ecIns, ecModel, payload) {\n  var legacyEventName = type + eventPostfix;\n\n  if (!ecIns.isSilent(legacyEventName)) {\n    if (process.env.NODE_ENV !== 'production') {\n      deprecateLog(\"event \" + legacyEventName + \" is deprecated.\");\n    }\n\n    ecModel.eachComponent({\n      mainType: 'series',\n      subType: 'pie'\n    }, function (seriesModel) {\n      var seriesIndex = seriesModel.seriesIndex;\n      var selectedMap = seriesModel.option.selectedMap;\n      var selected = payload.selected;\n\n      for (var i = 0; i < selected.length; i++) {\n        if (selected[i].seriesIndex === seriesIndex) {\n          var data = seriesModel.getData();\n          var dataIndex = queryDataIndex(data, payload.fromActionPayload);\n          ecIns.trigger(legacyEventName, {\n            type: legacyEventName,\n            seriesId: seriesModel.id,\n            name: isArray(dataIndex) ? data.getName(dataIndex[0]) : data.getName(dataIndex),\n            selected: isString(selectedMap) ? selectedMap : extend({}, selectedMap)\n          });\n        }\n      }\n    });\n  }\n}\n\nexport function handleLegacySelectEvents(messageCenter, ecIns, api) {\n  messageCenter.on('selectchanged', function (params) {\n    var ecModel = api.getModel();\n\n    if (params.isFromClick) {\n      handleSeriesLegacySelectEvents('map', 'selectchanged', ecIns, ecModel, params);\n      handleSeriesLegacySelectEvents('pie', 'selectchanged', ecIns, ecModel, params);\n    } else if (params.fromAction === 'select') {\n      handleSeriesLegacySelectEvents('map', 'selected', ecIns, ecModel, params);\n      handleSeriesLegacySelectEvents('pie', 'selected', ecIns, ecModel, params);\n    } else if (params.fromAction === 'unselect') {\n      handleSeriesLegacySelectEvents('map', 'unselected', ecIns, ecModel, params);\n      handleSeriesLegacySelectEvents('pie', 'unselected', ecIns, ecModel, params);\n    }\n  });\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nexport function findEventDispatcher(target, det, returnFirstMatch) {\n  var found;\n\n  while (target) {\n    if (det(target)) {\n      found = target;\n\n      if (returnFirstMatch) {\n        break;\n      }\n    }\n\n    target = target.__hostTarget || target.parent;\n  }\n\n  return found;\n}","var wmUniqueIndex = Math.round(Math.random() * 9);\nvar supportDefineProperty = typeof Object.defineProperty === 'function';\nvar WeakMap = (function () {\n    function WeakMap() {\n        this._id = '__ec_inner_' + wmUniqueIndex++;\n    }\n    WeakMap.prototype.get = function (key) {\n        return this._guard(key)[this._id];\n    };\n    WeakMap.prototype.set = function (key, value) {\n        var target = this._guard(key);\n        if (supportDefineProperty) {\n            Object.defineProperty(target, this._id, {\n                value: value,\n                enumerable: false,\n                configurable: true\n            });\n        }\n        else {\n            target[this._id] = value;\n        }\n        return this;\n    };\n    WeakMap.prototype[\"delete\"] = function (key) {\n        if (this.has(key)) {\n            delete this._guard(key)[this._id];\n            return true;\n        }\n        return false;\n    };\n    WeakMap.prototype.has = function (key) {\n        return !!this._guard(key)[this._id];\n    };\n    WeakMap.prototype._guard = function (key) {\n        if (key !== Object(key)) {\n            throw TypeError('Value of WeakMap is not a non-null object.');\n        }\n        return key;\n    };\n    return WeakMap;\n}());\nexport default WeakMap;\n","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\n// Symbol factory\nimport { each, isArray, retrieve2 } from 'zrender/lib/core/util.js';\nimport * as graphic from './graphic.js';\nimport BoundingRect from 'zrender/lib/core/BoundingRect.js';\nimport { calculateTextPosition } from 'zrender/lib/contain/text.js';\nimport { parsePercent } from './number.js';\n/**\r\n * Triangle shape\r\n * @inner\r\n */\n\nvar Triangle = graphic.Path.extend({\n  type: 'triangle',\n  shape: {\n    cx: 0,\n    cy: 0,\n    width: 0,\n    height: 0\n  },\n  buildPath: function (path, shape) {\n    var cx = shape.cx;\n    var cy = shape.cy;\n    var width = shape.width / 2;\n    var height = shape.height / 2;\n    path.moveTo(cx, cy - height);\n    path.lineTo(cx + width, cy + height);\n    path.lineTo(cx - width, cy + height);\n    path.closePath();\n  }\n});\n/**\r\n * Diamond shape\r\n * @inner\r\n */\n\nvar Diamond = graphic.Path.extend({\n  type: 'diamond',\n  shape: {\n    cx: 0,\n    cy: 0,\n    width: 0,\n    height: 0\n  },\n  buildPath: function (path, shape) {\n    var cx = shape.cx;\n    var cy = shape.cy;\n    var width = shape.width / 2;\n    var height = shape.height / 2;\n    path.moveTo(cx, cy - height);\n    path.lineTo(cx + width, cy);\n    path.lineTo(cx, cy + height);\n    path.lineTo(cx - width, cy);\n    path.closePath();\n  }\n});\n/**\r\n * Pin shape\r\n * @inner\r\n */\n\nvar Pin = graphic.Path.extend({\n  type: 'pin',\n  shape: {\n    // x, y on the cusp\n    x: 0,\n    y: 0,\n    width: 0,\n    height: 0\n  },\n  buildPath: function (path, shape) {\n    var x = shape.x;\n    var y = shape.y;\n    var w = shape.width / 5 * 3; // Height must be larger than width\n\n    var h = Math.max(w, shape.height);\n    var r = w / 2; // Dist on y with tangent point and circle center\n\n    var dy = r * r / (h - r);\n    var cy = y - h + r + dy;\n    var angle = Math.asin(dy / r); // Dist on x with tangent point and circle center\n\n    var dx = Math.cos(angle) * r;\n    var tanX = Math.sin(angle);\n    var tanY = Math.cos(angle);\n    var cpLen = r * 0.6;\n    var cpLen2 = r * 0.7;\n    path.moveTo(x - dx, cy + dy);\n    path.arc(x, cy, r, Math.PI - angle, Math.PI * 2 + angle);\n    path.bezierCurveTo(x + dx - tanX * cpLen, cy + dy + tanY * cpLen, x, y - cpLen2, x, y);\n    path.bezierCurveTo(x, y - cpLen2, x - dx + tanX * cpLen, cy + dy + tanY * cpLen, x - dx, cy + dy);\n    path.closePath();\n  }\n});\n/**\r\n * Arrow shape\r\n * @inner\r\n */\n\nvar Arrow = graphic.Path.extend({\n  type: 'arrow',\n  shape: {\n    x: 0,\n    y: 0,\n    width: 0,\n    height: 0\n  },\n  buildPath: function (ctx, shape) {\n    var height = shape.height;\n    var width = shape.width;\n    var x = shape.x;\n    var y = shape.y;\n    var dx = width / 3 * 2;\n    ctx.moveTo(x, y);\n    ctx.lineTo(x + dx, y + height);\n    ctx.lineTo(x, y + height / 4 * 3);\n    ctx.lineTo(x - dx, y + height);\n    ctx.lineTo(x, y);\n    ctx.closePath();\n  }\n});\n/**\r\n * Map of path constructors\r\n */\n// TODO Use function to build symbol path.\n\nvar symbolCtors = {\n  line: graphic.Line,\n  rect: graphic.Rect,\n  roundRect: graphic.Rect,\n  square: graphic.Rect,\n  circle: graphic.Circle,\n  diamond: Diamond,\n  pin: Pin,\n  arrow: Arrow,\n  triangle: Triangle\n};\nvar symbolShapeMakers = {\n  line: function (x, y, w, h, shape) {\n    shape.x1 = x;\n    shape.y1 = y + h / 2;\n    shape.x2 = x + w;\n    shape.y2 = y + h / 2;\n  },\n  rect: function (x, y, w, h, shape) {\n    shape.x = x;\n    shape.y = y;\n    shape.width = w;\n    shape.height = h;\n  },\n  roundRect: function (x, y, w, h, shape) {\n    shape.x = x;\n    shape.y = y;\n    shape.width = w;\n    shape.height = h;\n    shape.r = Math.min(w, h) / 4;\n  },\n  square: function (x, y, w, h, shape) {\n    var size = Math.min(w, h);\n    shape.x = x;\n    shape.y = y;\n    shape.width = size;\n    shape.height = size;\n  },\n  circle: function (x, y, w, h, shape) {\n    // Put circle in the center of square\n    shape.cx = x + w / 2;\n    shape.cy = y + h / 2;\n    shape.r = Math.min(w, h) / 2;\n  },\n  diamond: function (x, y, w, h, shape) {\n    shape.cx = x + w / 2;\n    shape.cy = y + h / 2;\n    shape.width = w;\n    shape.height = h;\n  },\n  pin: function (x, y, w, h, shape) {\n    shape.x = x + w / 2;\n    shape.y = y + h / 2;\n    shape.width = w;\n    shape.height = h;\n  },\n  arrow: function (x, y, w, h, shape) {\n    shape.x = x + w / 2;\n    shape.y = y + h / 2;\n    shape.width = w;\n    shape.height = h;\n  },\n  triangle: function (x, y, w, h, shape) {\n    shape.cx = x + w / 2;\n    shape.cy = y + h / 2;\n    shape.width = w;\n    shape.height = h;\n  }\n};\nexport var symbolBuildProxies = {};\neach(symbolCtors, function (Ctor, name) {\n  symbolBuildProxies[name] = new Ctor();\n});\nvar SymbolClz = graphic.Path.extend({\n  type: 'symbol',\n  shape: {\n    symbolType: '',\n    x: 0,\n    y: 0,\n    width: 0,\n    height: 0\n  },\n  calculateTextPosition: function (out, config, rect) {\n    var res = calculateTextPosition(out, config, rect);\n    var shape = this.shape;\n\n    if (shape && shape.symbolType === 'pin' && config.position === 'inside') {\n      res.y = rect.y + rect.height * 0.4;\n    }\n\n    return res;\n  },\n  buildPath: function (ctx, shape, inBundle) {\n    var symbolType = shape.symbolType;\n\n    if (symbolType !== 'none') {\n      var proxySymbol = symbolBuildProxies[symbolType];\n\n      if (!proxySymbol) {\n        // Default rect\n        symbolType = 'rect';\n        proxySymbol = symbolBuildProxies[symbolType];\n      }\n\n      symbolShapeMakers[symbolType](shape.x, shape.y, shape.width, shape.height, proxySymbol.shape);\n      proxySymbol.buildPath(ctx, proxySymbol.shape, inBundle);\n    }\n  }\n}); // Provide setColor helper method to avoid determine if set the fill or stroke outside\n\nfunction symbolPathSetColor(color, innerColor) {\n  if (this.type !== 'image') {\n    var symbolStyle = this.style;\n\n    if (this.__isEmptyBrush) {\n      symbolStyle.stroke = color;\n      symbolStyle.fill = innerColor || '#fff'; // TODO Same width with lineStyle in LineView\n\n      symbolStyle.lineWidth = 2;\n    } else if (this.shape.symbolType === 'line') {\n      symbolStyle.stroke = color;\n    } else {\n      symbolStyle.fill = color;\n    }\n\n    this.markRedraw();\n  }\n}\n/**\r\n * Create a symbol element with given symbol configuration: shape, x, y, width, height, color\r\n */\n\n\nexport function createSymbol(symbolType, x, y, w, h, color, // whether to keep the ratio of w/h,\nkeepAspect) {\n  // TODO Support image object, DynamicImage.\n  var isEmpty = symbolType.indexOf('empty') === 0;\n\n  if (isEmpty) {\n    symbolType = symbolType.substr(5, 1).toLowerCase() + symbolType.substr(6);\n  }\n\n  var symbolPath;\n\n  if (symbolType.indexOf('image://') === 0) {\n    symbolPath = graphic.makeImage(symbolType.slice(8), new BoundingRect(x, y, w, h), keepAspect ? 'center' : 'cover');\n  } else if (symbolType.indexOf('path://') === 0) {\n    symbolPath = graphic.makePath(symbolType.slice(7), {}, new BoundingRect(x, y, w, h), keepAspect ? 'center' : 'cover');\n  } else {\n    symbolPath = new SymbolClz({\n      shape: {\n        symbolType: symbolType,\n        x: x,\n        y: y,\n        width: w,\n        height: h\n      }\n    });\n  }\n\n  symbolPath.__isEmptyBrush = isEmpty; // TODO Should deprecate setColor\n\n  symbolPath.setColor = symbolPathSetColor;\n\n  if (color) {\n    symbolPath.setColor(color);\n  }\n\n  return symbolPath;\n}\nexport function normalizeSymbolSize(symbolSize) {\n  if (!isArray(symbolSize)) {\n    symbolSize = [+symbolSize, +symbolSize];\n  }\n\n  return [symbolSize[0] || 0, symbolSize[1] || 0];\n}\nexport function normalizeSymbolOffset(symbolOffset, symbolSize) {\n  if (symbolOffset == null) {\n    return;\n  }\n\n  if (!isArray(symbolOffset)) {\n    symbolOffset = [symbolOffset, symbolOffset];\n  }\n\n  return [parsePercent(symbolOffset[0], symbolSize[0]) || 0, parsePercent(retrieve2(symbolOffset[1], symbolOffset[0]), symbolSize[1]) || 0];\n}","function isSafeNum(num) {\n    return isFinite(num);\n}\nexport function createLinearGradient(ctx, obj, rect) {\n    var x = obj.x == null ? 0 : obj.x;\n    var x2 = obj.x2 == null ? 1 : obj.x2;\n    var y = obj.y == null ? 0 : obj.y;\n    var y2 = obj.y2 == null ? 0 : obj.y2;\n    if (!obj.global) {\n        x = x * rect.width + rect.x;\n        x2 = x2 * rect.width + rect.x;\n        y = y * rect.height + rect.y;\n        y2 = y2 * rect.height + rect.y;\n    }\n    x = isSafeNum(x) ? x : 0;\n    x2 = isSafeNum(x2) ? x2 : 1;\n    y = isSafeNum(y) ? y : 0;\n    y2 = isSafeNum(y2) ? y2 : 0;\n    var canvasGradient = ctx.createLinearGradient(x, y, x2, y2);\n    return canvasGradient;\n}\nexport function createRadialGradient(ctx, obj, rect) {\n    var width = rect.width;\n    var height = rect.height;\n    var min = Math.min(width, height);\n    var x = obj.x == null ? 0.5 : obj.x;\n    var y = obj.y == null ? 0.5 : obj.y;\n    var r = obj.r == null ? 0.5 : obj.r;\n    if (!obj.global) {\n        x = x * width + rect.x;\n        y = y * height + rect.y;\n        r = r * min;\n    }\n    x = isSafeNum(x) ? x : 0.5;\n    y = isSafeNum(y) ? y : 0.5;\n    r = r >= 0 && isSafeNum(r) ? r : 0.5;\n    var canvasGradient = ctx.createRadialGradient(x, y, 0, x, y, r);\n    return canvasGradient;\n}\nexport function getCanvasGradient(ctx, obj, rect) {\n    var canvasGradient = obj.type === 'radial'\n        ? createRadialGradient(ctx, obj, rect)\n        : createLinearGradient(ctx, obj, rect);\n    var colorStops = obj.colorStops;\n    for (var i = 0; i < colorStops.length; i++) {\n        canvasGradient.addColorStop(colorStops[i].offset, colorStops[i].color);\n    }\n    return canvasGradient;\n}\nexport function isClipPathChanged(clipPaths, prevClipPaths) {\n    if (clipPaths === prevClipPaths || (!clipPaths && !prevClipPaths)) {\n        return false;\n    }\n    if (!clipPaths || !prevClipPaths || (clipPaths.length !== prevClipPaths.length)) {\n        return true;\n    }\n    for (var i = 0; i < clipPaths.length; i++) {\n        if (clipPaths[i] !== prevClipPaths[i]) {\n            return true;\n        }\n    }\n    return false;\n}\nfunction parseInt10(val) {\n    return parseInt(val, 10);\n}\nexport function getSize(root, whIdx, opts) {\n    var wh = ['width', 'height'][whIdx];\n    var cwh = ['clientWidth', 'clientHeight'][whIdx];\n    var plt = ['paddingLeft', 'paddingTop'][whIdx];\n    var prb = ['paddingRight', 'paddingBottom'][whIdx];\n    if (opts[wh] != null && opts[wh] !== 'auto') {\n        return parseFloat(opts[wh]);\n    }\n    var stl = document.defaultView.getComputedStyle(root);\n    return ((root[cwh] || parseInt10(stl[wh]) || parseInt10(root.style[wh]))\n        - (parseInt10(stl[plt]) || 0)\n        - (parseInt10(stl[prb]) || 0)) | 0;\n}\n","import { isArray, isNumber, map } from '../core/util.js';\nexport function normalizeLineDash(lineType, lineWidth) {\n    if (!lineType || lineType === 'solid' || !(lineWidth > 0)) {\n        return null;\n    }\n    return lineType === 'dashed'\n        ? [4 * lineWidth, 2 * lineWidth]\n        : lineType === 'dotted'\n            ? [lineWidth]\n            : isNumber(lineType)\n                ? [lineType] : isArray(lineType) ? lineType : null;\n}\nexport function getLineDash(el) {\n    var style = el.style;\n    var lineDash = style.lineDash && style.lineWidth > 0 && normalizeLineDash(style.lineDash, style.lineWidth);\n    var lineDashOffset = style.lineDashOffset;\n    if (lineDash) {\n        var lineScale_1 = (style.strokeNoScale && el.getLineScale) ? el.getLineScale() : 1;\n        if (lineScale_1 && lineScale_1 !== 1) {\n            lineDash = map(lineDash, function (rawVal) {\n                return rawVal / lineScale_1;\n            });\n            lineDashOffset /= lineScale_1;\n        }\n    }\n    return [lineDash, lineDashOffset];\n}\n","import { DEFAULT_COMMON_STYLE } from '../graphic/Displayable.js';\nimport PathProxy from '../core/PathProxy.js';\nimport { createOrUpdateImage, isImageReady } from '../graphic/helper/image.js';\nimport { getCanvasGradient, isClipPathChanged } from './helper.js';\nimport Path from '../graphic/Path.js';\nimport ZRImage from '../graphic/Image.js';\nimport TSpan from '../graphic/TSpan.js';\nimport { RADIAN_TO_DEGREE } from '../core/util.js';\nimport { getLineDash } from './dashStyle.js';\nimport { REDRAW_BIT, SHAPE_CHANGED_BIT } from '../graphic/constants.js';\nimport { DEFAULT_FONT } from '../core/platform.js';\nvar pathProxyForDraw = new PathProxy(true);\nfunction styleHasStroke(style) {\n    var stroke = style.stroke;\n    return !(stroke == null || stroke === 'none' || !(style.lineWidth > 0));\n}\nfunction isValidStrokeFillStyle(strokeOrFill) {\n    return typeof strokeOrFill === 'string' && strokeOrFill !== 'none';\n}\nfunction styleHasFill(style) {\n    var fill = style.fill;\n    return fill != null && fill !== 'none';\n}\nfunction doFillPath(ctx, style) {\n    if (style.fillOpacity != null && style.fillOpacity !== 1) {\n        var originalGlobalAlpha = ctx.globalAlpha;\n        ctx.globalAlpha = style.fillOpacity * style.opacity;\n        ctx.fill();\n        ctx.globalAlpha = originalGlobalAlpha;\n    }\n    else {\n        ctx.fill();\n    }\n}\nfunction doStrokePath(ctx, style) {\n    if (style.strokeOpacity != null && style.strokeOpacity !== 1) {\n        var originalGlobalAlpha = ctx.globalAlpha;\n        ctx.globalAlpha = style.strokeOpacity * style.opacity;\n        ctx.stroke();\n        ctx.globalAlpha = originalGlobalAlpha;\n    }\n    else {\n        ctx.stroke();\n    }\n}\nexport function createCanvasPattern(ctx, pattern, el) {\n    var image = createOrUpdateImage(pattern.image, pattern.__image, el);\n    if (isImageReady(image)) {\n        var canvasPattern = ctx.createPattern(image, pattern.repeat || 'repeat');\n        if (typeof DOMMatrix === 'function'\n            && canvasPattern\n            && canvasPattern.setTransform) {\n            var matrix = new DOMMatrix();\n            matrix.translateSelf((pattern.x || 0), (pattern.y || 0));\n            matrix.rotateSelf(0, 0, (pattern.rotation || 0) * RADIAN_TO_DEGREE);\n            matrix.scaleSelf((pattern.scaleX || 1), (pattern.scaleY || 1));\n            canvasPattern.setTransform(matrix);\n        }\n        return canvasPattern;\n    }\n}\nfunction brushPath(ctx, el, style, inBatch) {\n    var _a;\n    var hasStroke = styleHasStroke(style);\n    var hasFill = styleHasFill(style);\n    var strokePercent = style.strokePercent;\n    var strokePart = strokePercent < 1;\n    var firstDraw = !el.path;\n    if ((!el.silent || strokePart) && firstDraw) {\n        el.createPathProxy();\n    }\n    var path = el.path || pathProxyForDraw;\n    var dirtyFlag = el.__dirty;\n    if (!inBatch) {\n        var fill = style.fill;\n        var stroke = style.stroke;\n        var hasFillGradient = hasFill && !!fill.colorStops;\n        var hasStrokeGradient = hasStroke && !!stroke.colorStops;\n        var hasFillPattern = hasFill && !!fill.image;\n        var hasStrokePattern = hasStroke && !!stroke.image;\n        var fillGradient = void 0;\n        var strokeGradient = void 0;\n        var fillPattern = void 0;\n        var strokePattern = void 0;\n        var rect = void 0;\n        if (hasFillGradient || hasStrokeGradient) {\n            rect = el.getBoundingRect();\n        }\n        if (hasFillGradient) {\n            fillGradient = dirtyFlag\n                ? getCanvasGradient(ctx, fill, rect)\n                : el.__canvasFillGradient;\n            el.__canvasFillGradient = fillGradient;\n        }\n        if (hasStrokeGradient) {\n            strokeGradient = dirtyFlag\n                ? getCanvasGradient(ctx, stroke, rect)\n                : el.__canvasStrokeGradient;\n            el.__canvasStrokeGradient = strokeGradient;\n        }\n        if (hasFillPattern) {\n            fillPattern = (dirtyFlag || !el.__canvasFillPattern)\n                ? createCanvasPattern(ctx, fill, el)\n                : el.__canvasFillPattern;\n            el.__canvasFillPattern = fillPattern;\n        }\n        if (hasStrokePattern) {\n            strokePattern = (dirtyFlag || !el.__canvasStrokePattern)\n                ? createCanvasPattern(ctx, stroke, el)\n                : el.__canvasStrokePattern;\n            el.__canvasStrokePattern = fillPattern;\n        }\n        if (hasFillGradient) {\n            ctx.fillStyle = fillGradient;\n        }\n        else if (hasFillPattern) {\n            if (fillPattern) {\n                ctx.fillStyle = fillPattern;\n            }\n            else {\n                hasFill = false;\n            }\n        }\n        if (hasStrokeGradient) {\n            ctx.strokeStyle = strokeGradient;\n        }\n        else if (hasStrokePattern) {\n            if (strokePattern) {\n                ctx.strokeStyle = strokePattern;\n            }\n            else {\n                hasStroke = false;\n            }\n        }\n    }\n    var scale = el.getGlobalScale();\n    path.setScale(scale[0], scale[1], el.segmentIgnoreThreshold);\n    var lineDash;\n    var lineDashOffset;\n    if (ctx.setLineDash && style.lineDash) {\n        _a = getLineDash(el), lineDash = _a[0], lineDashOffset = _a[1];\n    }\n    var needsRebuild = true;\n    if (firstDraw || (dirtyFlag & SHAPE_CHANGED_BIT)) {\n        path.setDPR(ctx.dpr);\n        if (strokePart) {\n            path.setContext(null);\n        }\n        else {\n            path.setContext(ctx);\n            needsRebuild = false;\n        }\n        path.reset();\n        el.buildPath(path, el.shape, inBatch);\n        path.toStatic();\n        el.pathUpdated();\n    }\n    if (needsRebuild) {\n        path.rebuildPath(ctx, strokePart ? strokePercent : 1);\n    }\n    if (lineDash) {\n        ctx.setLineDash(lineDash);\n        ctx.lineDashOffset = lineDashOffset;\n    }\n    if (!inBatch) {\n        if (style.strokeFirst) {\n            if (hasStroke) {\n                doStrokePath(ctx, style);\n            }\n            if (hasFill) {\n                doFillPath(ctx, style);\n            }\n        }\n        else {\n            if (hasFill) {\n                doFillPath(ctx, style);\n            }\n            if (hasStroke) {\n                doStrokePath(ctx, style);\n            }\n        }\n    }\n    if (lineDash) {\n        ctx.setLineDash([]);\n    }\n}\nfunction brushImage(ctx, el, style) {\n    var image = el.__image = createOrUpdateImage(style.image, el.__image, el, el.onload);\n    if (!image || !isImageReady(image)) {\n        return;\n    }\n    var x = style.x || 0;\n    var y = style.y || 0;\n    var width = el.getWidth();\n    var height = el.getHeight();\n    var aspect = image.width / image.height;\n    if (width == null && height != null) {\n        width = height * aspect;\n    }\n    else if (height == null && width != null) {\n        height = width / aspect;\n    }\n    else if (width == null && height == null) {\n        width = image.width;\n        height = image.height;\n    }\n    if (style.sWidth && style.sHeight) {\n        var sx = style.sx || 0;\n        var sy = style.sy || 0;\n        ctx.drawImage(image, sx, sy, style.sWidth, style.sHeight, x, y, width, height);\n    }\n    else if (style.sx && style.sy) {\n        var sx = style.sx;\n        var sy = style.sy;\n        var sWidth = width - sx;\n        var sHeight = height - sy;\n        ctx.drawImage(image, sx, sy, sWidth, sHeight, x, y, width, height);\n    }\n    else {\n        ctx.drawImage(image, x, y, width, height);\n    }\n}\nfunction brushText(ctx, el, style) {\n    var _a;\n    var text = style.text;\n    text != null && (text += '');\n    if (text) {\n        ctx.font = style.font || DEFAULT_FONT;\n        ctx.textAlign = style.textAlign;\n        ctx.textBaseline = style.textBaseline;\n        var lineDash = void 0;\n        var lineDashOffset = void 0;\n        if (ctx.setLineDash && style.lineDash) {\n            _a = getLineDash(el), lineDash = _a[0], lineDashOffset = _a[1];\n        }\n        if (lineDash) {\n            ctx.setLineDash(lineDash);\n            ctx.lineDashOffset = lineDashOffset;\n        }\n        if (style.strokeFirst) {\n            if (styleHasStroke(style)) {\n                ctx.strokeText(text, style.x, style.y);\n            }\n            if (styleHasFill(style)) {\n                ctx.fillText(text, style.x, style.y);\n            }\n        }\n        else {\n            if (styleHasFill(style)) {\n                ctx.fillText(text, style.x, style.y);\n            }\n            if (styleHasStroke(style)) {\n                ctx.strokeText(text, style.x, style.y);\n            }\n        }\n        if (lineDash) {\n            ctx.setLineDash([]);\n        }\n    }\n}\nvar SHADOW_NUMBER_PROPS = ['shadowBlur', 'shadowOffsetX', 'shadowOffsetY'];\nvar STROKE_PROPS = [\n    ['lineCap', 'butt'], ['lineJoin', 'miter'], ['miterLimit', 10]\n];\nfunction bindCommonProps(ctx, style, prevStyle, forceSetAll, scope) {\n    var styleChanged = false;\n    if (!forceSetAll) {\n        prevStyle = prevStyle || {};\n        if (style === prevStyle) {\n            return false;\n        }\n    }\n    if (forceSetAll || style.opacity !== prevStyle.opacity) {\n        flushPathDrawn(ctx, scope);\n        styleChanged = true;\n        var opacity = Math.max(Math.min(style.opacity, 1), 0);\n        ctx.globalAlpha = isNaN(opacity) ? DEFAULT_COMMON_STYLE.opacity : opacity;\n    }\n    if (forceSetAll || style.blend !== prevStyle.blend) {\n        if (!styleChanged) {\n            flushPathDrawn(ctx, scope);\n            styleChanged = true;\n        }\n        ctx.globalCompositeOperation = style.blend || DEFAULT_COMMON_STYLE.blend;\n    }\n    for (var i = 0; i < SHADOW_NUMBER_PROPS.length; i++) {\n        var propName = SHADOW_NUMBER_PROPS[i];\n        if (forceSetAll || style[propName] !== prevStyle[propName]) {\n            if (!styleChanged) {\n                flushPathDrawn(ctx, scope);\n                styleChanged = true;\n            }\n            ctx[propName] = ctx.dpr * (style[propName] || 0);\n        }\n    }\n    if (forceSetAll || style.shadowColor !== prevStyle.shadowColor) {\n        if (!styleChanged) {\n            flushPathDrawn(ctx, scope);\n            styleChanged = true;\n        }\n        ctx.shadowColor = style.shadowColor || DEFAULT_COMMON_STYLE.shadowColor;\n    }\n    return styleChanged;\n}\nfunction bindPathAndTextCommonStyle(ctx, el, prevEl, forceSetAll, scope) {\n    var style = getStyle(el, scope.inHover);\n    var prevStyle = forceSetAll\n        ? null\n        : (prevEl && getStyle(prevEl, scope.inHover) || {});\n    if (style === prevStyle) {\n        return false;\n    }\n    var styleChanged = bindCommonProps(ctx, style, prevStyle, forceSetAll, scope);\n    if (forceSetAll || style.fill !== prevStyle.fill) {\n        if (!styleChanged) {\n            flushPathDrawn(ctx, scope);\n            styleChanged = true;\n        }\n        isValidStrokeFillStyle(style.fill) && (ctx.fillStyle = style.fill);\n    }\n    if (forceSetAll || style.stroke !== prevStyle.stroke) {\n        if (!styleChanged) {\n            flushPathDrawn(ctx, scope);\n            styleChanged = true;\n        }\n        isValidStrokeFillStyle(style.stroke) && (ctx.strokeStyle = style.stroke);\n    }\n    if (forceSetAll || style.opacity !== prevStyle.opacity) {\n        if (!styleChanged) {\n            flushPathDrawn(ctx, scope);\n            styleChanged = true;\n        }\n        ctx.globalAlpha = style.opacity == null ? 1 : style.opacity;\n    }\n    if (el.hasStroke()) {\n        var lineWidth = style.lineWidth;\n        var newLineWidth = lineWidth / ((style.strokeNoScale && el.getLineScale) ? el.getLineScale() : 1);\n        if (ctx.lineWidth !== newLineWidth) {\n            if (!styleChanged) {\n                flushPathDrawn(ctx, scope);\n                styleChanged = true;\n            }\n            ctx.lineWidth = newLineWidth;\n        }\n    }\n    for (var i = 0; i < STROKE_PROPS.length; i++) {\n        var prop = STROKE_PROPS[i];\n        var propName = prop[0];\n        if (forceSetAll || style[propName] !== prevStyle[propName]) {\n            if (!styleChanged) {\n                flushPathDrawn(ctx, scope);\n                styleChanged = true;\n            }\n            ctx[propName] = style[propName] || prop[1];\n        }\n    }\n    return styleChanged;\n}\nfunction bindImageStyle(ctx, el, prevEl, forceSetAll, scope) {\n    return bindCommonProps(ctx, getStyle(el, scope.inHover), prevEl && getStyle(prevEl, scope.inHover), forceSetAll, scope);\n}\nfunction setContextTransform(ctx, el) {\n    var m = el.transform;\n    var dpr = ctx.dpr || 1;\n    if (m) {\n        ctx.setTransform(dpr * m[0], dpr * m[1], dpr * m[2], dpr * m[3], dpr * m[4], dpr * m[5]);\n    }\n    else {\n        ctx.setTransform(dpr, 0, 0, dpr, 0, 0);\n    }\n}\nfunction updateClipStatus(clipPaths, ctx, scope) {\n    var allClipped = false;\n    for (var i = 0; i < clipPaths.length; i++) {\n        var clipPath = clipPaths[i];\n        allClipped = allClipped || clipPath.isZeroArea();\n        setContextTransform(ctx, clipPath);\n        ctx.beginPath();\n        clipPath.buildPath(ctx, clipPath.shape);\n        ctx.clip();\n    }\n    scope.allClipped = allClipped;\n}\nfunction isTransformChanged(m0, m1) {\n    if (m0 && m1) {\n        return m0[0] !== m1[0]\n            || m0[1] !== m1[1]\n            || m0[2] !== m1[2]\n            || m0[3] !== m1[3]\n            || m0[4] !== m1[4]\n            || m0[5] !== m1[5];\n    }\n    else if (!m0 && !m1) {\n        return false;\n    }\n    return true;\n}\nvar DRAW_TYPE_PATH = 1;\nvar DRAW_TYPE_IMAGE = 2;\nvar DRAW_TYPE_TEXT = 3;\nvar DRAW_TYPE_INCREMENTAL = 4;\nfunction canPathBatch(style) {\n    var hasFill = styleHasFill(style);\n    var hasStroke = styleHasStroke(style);\n    return !(style.lineDash\n        || !(+hasFill ^ +hasStroke)\n        || (hasFill && typeof style.fill !== 'string')\n        || (hasStroke && typeof style.stroke !== 'string')\n        || style.strokePercent < 1\n        || style.strokeOpacity < 1\n        || style.fillOpacity < 1);\n}\nfunction flushPathDrawn(ctx, scope) {\n    scope.batchFill && ctx.fill();\n    scope.batchStroke && ctx.stroke();\n    scope.batchFill = '';\n    scope.batchStroke = '';\n}\nfunction getStyle(el, inHover) {\n    return inHover ? (el.__hoverStyle || el.style) : el.style;\n}\nexport function brushSingle(ctx, el) {\n    brush(ctx, el, { inHover: false, viewWidth: 0, viewHeight: 0 }, true);\n}\nexport function brush(ctx, el, scope, isLast) {\n    var m = el.transform;\n    if (!el.shouldBePainted(scope.viewWidth, scope.viewHeight, false, false)) {\n        el.__dirty &= ~REDRAW_BIT;\n        el.__isRendered = false;\n        return;\n    }\n    var clipPaths = el.__clipPaths;\n    var prevElClipPaths = scope.prevElClipPaths;\n    var forceSetTransform = false;\n    var forceSetStyle = false;\n    if (!prevElClipPaths || isClipPathChanged(clipPaths, prevElClipPaths)) {\n        if (prevElClipPaths && prevElClipPaths.length) {\n            flushPathDrawn(ctx, scope);\n            ctx.restore();\n            forceSetStyle = forceSetTransform = true;\n            scope.prevElClipPaths = null;\n            scope.allClipped = false;\n            scope.prevEl = null;\n        }\n        if (clipPaths && clipPaths.length) {\n            flushPathDrawn(ctx, scope);\n            ctx.save();\n            updateClipStatus(clipPaths, ctx, scope);\n            forceSetTransform = true;\n        }\n        scope.prevElClipPaths = clipPaths;\n    }\n    if (scope.allClipped) {\n        el.__isRendered = false;\n        return;\n    }\n    el.beforeBrush && el.beforeBrush();\n    el.innerBeforeBrush();\n    var prevEl = scope.prevEl;\n    if (!prevEl) {\n        forceSetStyle = forceSetTransform = true;\n    }\n    var canBatchPath = el instanceof Path\n        && el.autoBatch\n        && canPathBatch(el.style);\n    if (forceSetTransform || isTransformChanged(m, prevEl.transform)) {\n        flushPathDrawn(ctx, scope);\n        setContextTransform(ctx, el);\n    }\n    else if (!canBatchPath) {\n        flushPathDrawn(ctx, scope);\n    }\n    var style = getStyle(el, scope.inHover);\n    if (el instanceof Path) {\n        if (scope.lastDrawType !== DRAW_TYPE_PATH) {\n            forceSetStyle = true;\n            scope.lastDrawType = DRAW_TYPE_PATH;\n        }\n        bindPathAndTextCommonStyle(ctx, el, prevEl, forceSetStyle, scope);\n        if (!canBatchPath || (!scope.batchFill && !scope.batchStroke)) {\n            ctx.beginPath();\n        }\n        brushPath(ctx, el, style, canBatchPath);\n        if (canBatchPath) {\n            scope.batchFill = style.fill || '';\n            scope.batchStroke = style.stroke || '';\n        }\n    }\n    else {\n        if (el instanceof TSpan) {\n            if (scope.lastDrawType !== DRAW_TYPE_TEXT) {\n                forceSetStyle = true;\n                scope.lastDrawType = DRAW_TYPE_TEXT;\n            }\n            bindPathAndTextCommonStyle(ctx, el, prevEl, forceSetStyle, scope);\n            brushText(ctx, el, style);\n        }\n        else if (el instanceof ZRImage) {\n            if (scope.lastDrawType !== DRAW_TYPE_IMAGE) {\n                forceSetStyle = true;\n                scope.lastDrawType = DRAW_TYPE_IMAGE;\n            }\n            bindImageStyle(ctx, el, prevEl, forceSetStyle, scope);\n            brushImage(ctx, el, style);\n        }\n        else if (el.getTemporalDisplayables) {\n            if (scope.lastDrawType !== DRAW_TYPE_INCREMENTAL) {\n                forceSetStyle = true;\n                scope.lastDrawType = DRAW_TYPE_INCREMENTAL;\n            }\n            brushIncremental(ctx, el, scope);\n        }\n    }\n    if (canBatchPath && isLast) {\n        flushPathDrawn(ctx, scope);\n    }\n    el.innerAfterBrush();\n    el.afterBrush && el.afterBrush();\n    scope.prevEl = el;\n    el.__dirty = 0;\n    el.__isRendered = true;\n}\nfunction brushIncremental(ctx, el, scope) {\n    var displayables = el.getDisplayables();\n    var temporalDisplayables = el.getTemporalDisplayables();\n    ctx.save();\n    var innerScope = {\n        prevElClipPaths: null,\n        prevEl: null,\n        allClipped: false,\n        viewWidth: scope.viewWidth,\n        viewHeight: scope.viewHeight,\n        inHover: scope.inHover\n    };\n    var i;\n    var len;\n    for (i = el.getCursor(), len = displayables.length; i < len; i++) {\n        var displayable = displayables[i];\n        displayable.beforeBrush && displayable.beforeBrush();\n        displayable.innerBeforeBrush();\n        brush(ctx, displayable, innerScope, i === len - 1);\n        displayable.innerAfterBrush();\n        displayable.afterBrush && displayable.afterBrush();\n        innerScope.prevEl = displayable;\n    }\n    for (var i_1 = 0, len_1 = temporalDisplayables.length; i_1 < len_1; i_1++) {\n        var displayable = temporalDisplayables[i_1];\n        displayable.beforeBrush && displayable.beforeBrush();\n        displayable.innerBeforeBrush();\n        brush(ctx, displayable, innerScope, i_1 === len_1 - 1);\n        displayable.innerAfterBrush();\n        displayable.afterBrush && displayable.afterBrush();\n        innerScope.prevEl = displayable;\n    }\n    el.clearTemporalDisplayables();\n    el.notClear = true;\n    ctx.restore();\n}\n","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport WeakMap from 'zrender/lib/core/WeakMap.js';\nimport LRU from 'zrender/lib/core/LRU.js';\nimport { defaults, map, isArray, isString, isNumber } from 'zrender/lib/core/util.js';\nimport { getLeastCommonMultiple } from './number.js';\nimport { createSymbol } from './symbol.js';\nimport { brushSingle } from 'zrender/lib/canvas/graphic.js';\nimport { platformApi } from 'zrender/lib/core/platform.js';\nvar decalMap = new WeakMap();\nvar decalCache = new LRU(100);\nvar decalKeys = ['symbol', 'symbolSize', 'symbolKeepAspect', 'color', 'backgroundColor', 'dashArrayX', 'dashArrayY', 'maxTileWidth', 'maxTileHeight'];\n/**\r\n * Create or update pattern image from decal options\r\n *\r\n * @param {InnerDecalObject | 'none'} decalObject decal options, 'none' if no decal\r\n * @return {Pattern} pattern with generated image, null if no decal\r\n */\n\nexport function createOrUpdatePatternFromDecal(decalObject, api) {\n  if (decalObject === 'none') {\n    return null;\n  }\n\n  var dpr = api.getDevicePixelRatio();\n  var zr = api.getZr();\n  var isSVG = zr.painter.type === 'svg';\n\n  if (decalObject.dirty) {\n    decalMap[\"delete\"](decalObject);\n  }\n\n  var oldPattern = decalMap.get(decalObject);\n\n  if (oldPattern) {\n    return oldPattern;\n  }\n\n  var decalOpt = defaults(decalObject, {\n    symbol: 'rect',\n    symbolSize: 1,\n    symbolKeepAspect: true,\n    color: 'rgba(0, 0, 0, 0.2)',\n    backgroundColor: null,\n    dashArrayX: 5,\n    dashArrayY: 5,\n    rotation: 0,\n    maxTileWidth: 512,\n    maxTileHeight: 512\n  });\n\n  if (decalOpt.backgroundColor === 'none') {\n    decalOpt.backgroundColor = null;\n  }\n\n  var pattern = {\n    repeat: 'repeat'\n  };\n  setPatternnSource(pattern);\n  pattern.rotation = decalOpt.rotation;\n  pattern.scaleX = pattern.scaleY = isSVG ? 1 : 1 / dpr;\n  decalMap.set(decalObject, pattern);\n  decalObject.dirty = false;\n  return pattern;\n\n  function setPatternnSource(pattern) {\n    var keys = [dpr];\n    var isValidKey = true;\n\n    for (var i = 0; i < decalKeys.length; ++i) {\n      var value = decalOpt[decalKeys[i]];\n\n      if (value != null && !isArray(value) && !isString(value) && !isNumber(value) && typeof value !== 'boolean') {\n        isValidKey = false;\n        break;\n      }\n\n      keys.push(value);\n    }\n\n    var cacheKey;\n\n    if (isValidKey) {\n      cacheKey = keys.join(',') + (isSVG ? '-svg' : '');\n      var cache = decalCache.get(cacheKey);\n\n      if (cache) {\n        isSVG ? pattern.svgElement = cache : pattern.image = cache;\n      }\n    }\n\n    var dashArrayX = normalizeDashArrayX(decalOpt.dashArrayX);\n    var dashArrayY = normalizeDashArrayY(decalOpt.dashArrayY);\n    var symbolArray = normalizeSymbolArray(decalOpt.symbol);\n    var lineBlockLengthsX = getLineBlockLengthX(dashArrayX);\n    var lineBlockLengthY = getLineBlockLengthY(dashArrayY);\n    var canvas = !isSVG && platformApi.createCanvas();\n    var svgRoot = isSVG && {\n      tag: 'g',\n      attrs: {},\n      key: 'dcl',\n      children: []\n    };\n    var pSize = getPatternSize();\n    var ctx;\n\n    if (canvas) {\n      canvas.width = pSize.width * dpr;\n      canvas.height = pSize.height * dpr;\n      ctx = canvas.getContext('2d');\n    }\n\n    brushDecal();\n\n    if (isValidKey) {\n      decalCache.put(cacheKey, canvas || svgRoot);\n    }\n\n    pattern.image = canvas;\n    pattern.svgElement = svgRoot;\n    pattern.svgWidth = pSize.width;\n    pattern.svgHeight = pSize.height;\n    /**\r\n     * Get minimum length that can make a repeatable pattern.\r\n     *\r\n     * @return {Object} pattern width and height\r\n     */\n\n    function getPatternSize() {\n      /**\r\n       * For example, if dash is [[3, 2], [2, 1]] for X, it looks like\r\n       * |---  ---  ---  ---  --- ...\r\n       * |-- -- -- -- -- -- -- -- ...\r\n       * |---  ---  ---  ---  --- ...\r\n       * |-- -- -- -- -- -- -- -- ...\r\n       * So the minimum length of X is 15,\r\n       * which is the least common multiple of `3 + 2` and `2 + 1`\r\n       * |---  ---  ---  |---  --- ...\r\n       * |-- -- -- -- -- |-- -- -- ...\r\n       */\n      var width = 1;\n\n      for (var i = 0, xlen = lineBlockLengthsX.length; i < xlen; ++i) {\n        width = getLeastCommonMultiple(width, lineBlockLengthsX[i]);\n      }\n\n      var symbolRepeats = 1;\n\n      for (var i = 0, xlen = symbolArray.length; i < xlen; ++i) {\n        symbolRepeats = getLeastCommonMultiple(symbolRepeats, symbolArray[i].length);\n      }\n\n      width *= symbolRepeats;\n      var height = lineBlockLengthY * lineBlockLengthsX.length * symbolArray.length;\n\n      if (process.env.NODE_ENV !== 'production') {\n        var warn = function (attrName) {\n          /* eslint-disable-next-line */\n          console.warn(\"Calculated decal size is greater than \" + attrName + \" due to decal option settings so \" + attrName + \" is used for the decal size. Please consider changing the decal option to make a smaller decal or set \" + attrName + \" to be larger to avoid incontinuity.\");\n        };\n\n        if (width > decalOpt.maxTileWidth) {\n          warn('maxTileWidth');\n        }\n\n        if (height > decalOpt.maxTileHeight) {\n          warn('maxTileHeight');\n        }\n      }\n\n      return {\n        width: Math.max(1, Math.min(width, decalOpt.maxTileWidth)),\n        height: Math.max(1, Math.min(height, decalOpt.maxTileHeight))\n      };\n    }\n\n    function brushDecal() {\n      if (ctx) {\n        ctx.clearRect(0, 0, canvas.width, canvas.height);\n\n        if (decalOpt.backgroundColor) {\n          ctx.fillStyle = decalOpt.backgroundColor;\n          ctx.fillRect(0, 0, canvas.width, canvas.height);\n        }\n      }\n\n      var ySum = 0;\n\n      for (var i = 0; i < dashArrayY.length; ++i) {\n        ySum += dashArrayY[i];\n      }\n\n      if (ySum <= 0) {\n        // dashArrayY is 0, draw nothing\n        return;\n      }\n\n      var y = -lineBlockLengthY;\n      var yId = 0;\n      var yIdTotal = 0;\n      var xId0 = 0;\n\n      while (y < pSize.height) {\n        if (yId % 2 === 0) {\n          var symbolYId = yIdTotal / 2 % symbolArray.length;\n          var x = 0;\n          var xId1 = 0;\n          var xId1Total = 0;\n\n          while (x < pSize.width * 2) {\n            var xSum = 0;\n\n            for (var i = 0; i < dashArrayX[xId0].length; ++i) {\n              xSum += dashArrayX[xId0][i];\n            }\n\n            if (xSum <= 0) {\n              // Skip empty line\n              break;\n            } // E.g., [15, 5, 20, 5] draws only for 15 and 20\n\n\n            if (xId1 % 2 === 0) {\n              var size = (1 - decalOpt.symbolSize) * 0.5;\n              var left = x + dashArrayX[xId0][xId1] * size;\n              var top_1 = y + dashArrayY[yId] * size;\n              var width = dashArrayX[xId0][xId1] * decalOpt.symbolSize;\n              var height = dashArrayY[yId] * decalOpt.symbolSize;\n              var symbolXId = xId1Total / 2 % symbolArray[symbolYId].length;\n              brushSymbol(left, top_1, width, height, symbolArray[symbolYId][symbolXId]);\n            }\n\n            x += dashArrayX[xId0][xId1];\n            ++xId1Total;\n            ++xId1;\n\n            if (xId1 === dashArrayX[xId0].length) {\n              xId1 = 0;\n            }\n          }\n\n          ++xId0;\n\n          if (xId0 === dashArrayX.length) {\n            xId0 = 0;\n          }\n        }\n\n        y += dashArrayY[yId];\n        ++yIdTotal;\n        ++yId;\n\n        if (yId === dashArrayY.length) {\n          yId = 0;\n        }\n      }\n\n      function brushSymbol(x, y, width, height, symbolType) {\n        var scale = isSVG ? 1 : dpr;\n        var symbol = createSymbol(symbolType, x * scale, y * scale, width * scale, height * scale, decalOpt.color, decalOpt.symbolKeepAspect);\n\n        if (isSVG) {\n          var symbolVNode = zr.painter.renderOneToVNode(symbol);\n\n          if (symbolVNode) {\n            svgRoot.children.push(symbolVNode);\n          }\n        } else {\n          // Paint to canvas for all other renderers.\n          brushSingle(ctx, symbol);\n        }\n      }\n    }\n  }\n}\n/**\r\n * Convert symbol array into normalized array\r\n *\r\n * @param {string | (string | string[])[]} symbol symbol input\r\n * @return {string[][]} normolized symbol array\r\n */\n\nfunction normalizeSymbolArray(symbol) {\n  if (!symbol || symbol.length === 0) {\n    return [['rect']];\n  }\n\n  if (isString(symbol)) {\n    return [[symbol]];\n  }\n\n  var isAllString = true;\n\n  for (var i = 0; i < symbol.length; ++i) {\n    if (!isString(symbol[i])) {\n      isAllString = false;\n      break;\n    }\n  }\n\n  if (isAllString) {\n    return normalizeSymbolArray([symbol]);\n  }\n\n  var result = [];\n\n  for (var i = 0; i < symbol.length; ++i) {\n    if (isString(symbol[i])) {\n      result.push([symbol[i]]);\n    } else {\n      result.push(symbol[i]);\n    }\n  }\n\n  return result;\n}\n/**\r\n * Convert dash input into dashArray\r\n *\r\n * @param {DecalDashArrayX} dash dash input\r\n * @return {number[][]} normolized dash array\r\n */\n\n\nfunction normalizeDashArrayX(dash) {\n  if (!dash || dash.length === 0) {\n    return [[0, 0]];\n  }\n\n  if (isNumber(dash)) {\n    var dashValue = Math.ceil(dash);\n    return [[dashValue, dashValue]];\n  }\n  /**\r\n   * [20, 5] should be normalized into [[20, 5]],\r\n   * while [20, [5, 10]] should be normalized into [[20, 20], [5, 10]]\r\n   */\n\n\n  var isAllNumber = true;\n\n  for (var i = 0; i < dash.length; ++i) {\n    if (!isNumber(dash[i])) {\n      isAllNumber = false;\n      break;\n    }\n  }\n\n  if (isAllNumber) {\n    return normalizeDashArrayX([dash]);\n  }\n\n  var result = [];\n\n  for (var i = 0; i < dash.length; ++i) {\n    if (isNumber(dash[i])) {\n      var dashValue = Math.ceil(dash[i]);\n      result.push([dashValue, dashValue]);\n    } else {\n      var dashValue = map(dash[i], function (n) {\n        return Math.ceil(n);\n      });\n\n      if (dashValue.length % 2 === 1) {\n        // [4, 2, 1] means |----  -    -- |----  -    -- |\n        // so normalize it to be [4, 2, 1, 4, 2, 1]\n        result.push(dashValue.concat(dashValue));\n      } else {\n        result.push(dashValue);\n      }\n    }\n  }\n\n  return result;\n}\n/**\r\n * Convert dash input into dashArray\r\n *\r\n * @param {DecalDashArrayY} dash dash input\r\n * @return {number[]} normolized dash array\r\n */\n\n\nfunction normalizeDashArrayY(dash) {\n  if (!dash || typeof dash === 'object' && dash.length === 0) {\n    return [0, 0];\n  }\n\n  if (isNumber(dash)) {\n    var dashValue_1 = Math.ceil(dash);\n    return [dashValue_1, dashValue_1];\n  }\n\n  var dashValue = map(dash, function (n) {\n    return Math.ceil(n);\n  });\n  return dash.length % 2 ? dashValue.concat(dashValue) : dashValue;\n}\n/**\r\n * Get block length of each line. A block is the length of dash line and space.\r\n * For example, a line with [4, 1] has a dash line of 4 and a space of 1 after\r\n * that, so the block length of this line is 5.\r\n *\r\n * @param {number[][]} dash dash array of X or Y\r\n * @return {number[]} block length of each line\r\n */\n\n\nfunction getLineBlockLengthX(dash) {\n  return map(dash, function (line) {\n    return getLineBlockLengthY(line);\n  });\n}\n\nfunction getLineBlockLengthY(dash) {\n  var blockLength = 0;\n\n  for (var i = 0; i < dash.length; ++i) {\n    blockLength += dash[i];\n  }\n\n  if (dash.length % 2 === 1) {\n    // [4, 2, 1] means |----  -    -- |----  -    -- |\n    // So total length is (4 + 2 + 1) * 2\n    return blockLength * 2;\n  }\n\n  return blockLength;\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport Eventful from 'zrender/lib/core/Eventful.js';\n;\nvar lifecycle = new Eventful();\nexport default lifecycle;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { error } from '../util/log.js'; // Implementation of exported APIs. For example registerMap, getMap.\n// The implementations will be registered when installing the component.\n// Avoid these code being bundled to the core module.\n\nvar implsStore = {}; // TODO Type\n\nexport function registerImpl(name, impl) {\n  if (process.env.NODE_ENV !== 'production') {\n    if (implsStore[name]) {\n      error(\"Already has an implementation of \" + name + \".\");\n    }\n  }\n\n  implsStore[name] = impl;\n}\nexport function getImpl(name) {\n  if (process.env.NODE_ENV !== 'production') {\n    if (!implsStore[name]) {\n      error(\"Implementation of \" + name + \" doesn't exists.\");\n    }\n  }\n\n  return implsStore[name];\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\nimport { __extends } from \"tslib\";\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\n\nimport * as zrender from 'zrender/lib/zrender.js';\nimport { assert, each, isFunction, isObject, indexOf, bind, clone, setAsPrimitive, extend, createHashMap, map, defaults, isDom, isArray, noop, isString, retrieve2 } from 'zrender/lib/core/util.js';\nimport env from 'zrender/lib/core/env.js';\nimport timsort from 'zrender/lib/core/timsort.js';\nimport Eventful from 'zrender/lib/core/Eventful.js';\nimport GlobalModel from '../model/Global.js';\nimport ExtensionAPI from './ExtensionAPI.js';\nimport CoordinateSystemManager from './CoordinateSystem.js';\nimport OptionManager from '../model/OptionManager.js';\nimport backwardCompat from '../preprocessor/backwardCompat.js';\nimport dataStack from '../processor/dataStack.js';\nimport SeriesModel from '../model/Series.js';\nimport ComponentView from '../view/Component.js';\nimport ChartView from '../view/Chart.js';\nimport * as graphic from '../util/graphic.js';\nimport { getECData } from '../util/innerStore.js';\nimport { isHighDownDispatcher, HOVER_STATE_EMPHASIS, HOVER_STATE_BLUR, blurSeriesFromHighlightPayload, toggleSelectionFromPayload, updateSeriesElementSelection, getAllSelectedIndices, isSelectChangePayload, isHighDownPayload, HIGHLIGHT_ACTION_TYPE, DOWNPLAY_ACTION_TYPE, SELECT_ACTION_TYPE, UNSELECT_ACTION_TYPE, TOGGLE_SELECT_ACTION_TYPE, savePathStates, enterEmphasis, leaveEmphasis, leaveBlur, enterSelect, leaveSelect, enterBlur, allLeaveBlur, findComponentHighDownDispatchers, blurComponent, handleGlobalMouseOverForHighDown, handleGlobalMouseOutForHighDown } from '../util/states.js';\nimport * as modelUtil from '../util/model.js';\nimport { throttle } from '../util/throttle.js';\nimport { seriesStyleTask, dataStyleTask, dataColorPaletteTask } from '../visual/style.js';\nimport loadingDefault from '../loading/default.js';\nimport Scheduler from './Scheduler.js';\nimport lightTheme from '../theme/light.js';\nimport darkTheme from '../theme/dark.js';\nimport { parseClassType } from '../util/clazz.js';\nimport { ECEventProcessor } from '../util/ECEventProcessor.js';\nimport { seriesSymbolTask, dataSymbolTask } from '../visual/symbol.js';\nimport { getVisualFromData, getItemVisualFromData } from '../visual/helper.js';\nimport { deprecateLog, deprecateReplaceLog, error, warn } from '../util/log.js';\nimport { handleLegacySelectEvents } from '../legacy/dataSelectAction.js';\nimport { registerExternalTransform } from '../data/helper/transform.js';\nimport { createLocaleObject, SYSTEM_LANG } from './locale.js';\nimport { findEventDispatcher } from '../util/event.js';\nimport decal from '../visual/decal.js';\nimport lifecycle from './lifecycle.js';\nimport { platformApi, setPlatformAPI } from 'zrender/lib/core/platform.js';\nimport { getImpl } from './impl.js';\nexport var version = '5.4.3';\nexport var dependencies = {\n  zrender: '5.4.4'\n};\nvar TEST_FRAME_REMAIN_TIME = 1;\nvar PRIORITY_PROCESSOR_SERIES_FILTER = 800; // Some data processors depends on the stack result dimension (to calculate data extent).\n// So data stack stage should be in front of data processing stage.\n\nvar PRIORITY_PROCESSOR_DATASTACK = 900; // \"Data filter\" will block the stream, so it should be\n// put at the beginning of data processing.\n\nvar PRIORITY_PROCESSOR_FILTER = 1000;\nvar PRIORITY_PROCESSOR_DEFAULT = 2000;\nvar PRIORITY_PROCESSOR_STATISTIC = 5000;\nvar PRIORITY_VISUAL_LAYOUT = 1000;\nvar PRIORITY_VISUAL_PROGRESSIVE_LAYOUT = 1100;\nvar PRIORITY_VISUAL_GLOBAL = 2000;\nvar PRIORITY_VISUAL_CHART = 3000;\nvar PRIORITY_VISUAL_COMPONENT = 4000; // Visual property in data. Greater than `PRIORITY_VISUAL_COMPONENT` to enable to\n// overwrite the viusal result of component (like `visualMap`)\n// using data item specific setting (like itemStyle.xxx on data item)\n\nvar PRIORITY_VISUAL_CHART_DATA_CUSTOM = 4500; // Greater than `PRIORITY_VISUAL_CHART_DATA_CUSTOM` to enable to layout based on\n// visual result like `symbolSize`.\n\nvar PRIORITY_VISUAL_POST_CHART_LAYOUT = 4600;\nvar PRIORITY_VISUAL_BRUSH = 5000;\nvar PRIORITY_VISUAL_ARIA = 6000;\nvar PRIORITY_VISUAL_DECAL = 7000;\nexport var PRIORITY = {\n  PROCESSOR: {\n    FILTER: PRIORITY_PROCESSOR_FILTER,\n    SERIES_FILTER: PRIORITY_PROCESSOR_SERIES_FILTER,\n    STATISTIC: PRIORITY_PROCESSOR_STATISTIC\n  },\n  VISUAL: {\n    LAYOUT: PRIORITY_VISUAL_LAYOUT,\n    PROGRESSIVE_LAYOUT: PRIORITY_VISUAL_PROGRESSIVE_LAYOUT,\n    GLOBAL: PRIORITY_VISUAL_GLOBAL,\n    CHART: PRIORITY_VISUAL_CHART,\n    POST_CHART_LAYOUT: PRIORITY_VISUAL_POST_CHART_LAYOUT,\n    COMPONENT: PRIORITY_VISUAL_COMPONENT,\n    BRUSH: PRIORITY_VISUAL_BRUSH,\n    CHART_ITEM: PRIORITY_VISUAL_CHART_DATA_CUSTOM,\n    ARIA: PRIORITY_VISUAL_ARIA,\n    DECAL: PRIORITY_VISUAL_DECAL\n  }\n}; // Main process have three entries: `setOption`, `dispatchAction` and `resize`,\n// where they must not be invoked nestedly, except the only case: invoke\n// dispatchAction with updateMethod \"none\" in main process.\n// This flag is used to carry out this rule.\n// All events will be triggered out side main process (i.e. when !this[IN_MAIN_PROCESS]).\n\nvar IN_MAIN_PROCESS_KEY = '__flagInMainProcess';\nvar PENDING_UPDATE = '__pendingUpdate';\nvar STATUS_NEEDS_UPDATE_KEY = '__needsUpdateStatus';\nvar ACTION_REG = /^[a-zA-Z0-9_]+$/;\nvar CONNECT_STATUS_KEY = '__connectUpdateStatus';\nvar CONNECT_STATUS_PENDING = 0;\nvar CONNECT_STATUS_UPDATING = 1;\nvar CONNECT_STATUS_UPDATED = 2;\n;\n;\n\nfunction createRegisterEventWithLowercaseECharts(method) {\n  return function () {\n    var args = [];\n\n    for (var _i = 0; _i < arguments.length; _i++) {\n      args[_i] = arguments[_i];\n    }\n\n    if (this.isDisposed()) {\n      disposedWarning(this.id);\n      return;\n    }\n\n    return toLowercaseNameAndCallEventful(this, method, args);\n  };\n}\n\nfunction createRegisterEventWithLowercaseMessageCenter(method) {\n  return function () {\n    var args = [];\n\n    for (var _i = 0; _i < arguments.length; _i++) {\n      args[_i] = arguments[_i];\n    }\n\n    return toLowercaseNameAndCallEventful(this, method, args);\n  };\n}\n\nfunction toLowercaseNameAndCallEventful(host, method, args) {\n  // `args[0]` is event name. Event name is all lowercase.\n  args[0] = args[0] && args[0].toLowerCase();\n  return Eventful.prototype[method].apply(host, args);\n}\n\nvar MessageCenter =\n/** @class */\nfunction (_super) {\n  __extends(MessageCenter, _super);\n\n  function MessageCenter() {\n    return _super !== null && _super.apply(this, arguments) || this;\n  }\n\n  return MessageCenter;\n}(Eventful);\n\nvar messageCenterProto = MessageCenter.prototype;\nmessageCenterProto.on = createRegisterEventWithLowercaseMessageCenter('on');\nmessageCenterProto.off = createRegisterEventWithLowercaseMessageCenter('off'); // ---------------------------------------\n// Internal method names for class ECharts\n// ---------------------------------------\n\nvar prepare;\nvar prepareView;\nvar updateDirectly;\nvar updateMethods;\nvar doConvertPixel;\nvar updateStreamModes;\nvar doDispatchAction;\nvar flushPendingActions;\nvar triggerUpdatedEvent;\nvar bindRenderedEvent;\nvar bindMouseEvent;\nvar render;\nvar renderComponents;\nvar renderSeries;\nvar createExtensionAPI;\nvar enableConnect;\nvar markStatusToUpdate;\nvar applyChangedStates;\n\nvar ECharts =\n/** @class */\nfunction (_super) {\n  __extends(ECharts, _super);\n\n  function ECharts(dom, // Theme name or themeOption.\n  theme, opts) {\n    var _this = _super.call(this, new ECEventProcessor()) || this;\n\n    _this._chartsViews = [];\n    _this._chartsMap = {};\n    _this._componentsViews = [];\n    _this._componentsMap = {}; // Can't dispatch action during rendering procedure\n\n    _this._pendingActions = [];\n    opts = opts || {}; // Get theme by name\n\n    if (isString(theme)) {\n      theme = themeStorage[theme];\n    }\n\n    _this._dom = dom;\n    var defaultRenderer = 'canvas';\n    var defaultCoarsePointer = 'auto';\n    var defaultUseDirtyRect = false;\n\n    if (process.env.NODE_ENV !== 'production') {\n      var root =\n      /* eslint-disable-next-line */\n      env.hasGlobalWindow ? window : global;\n      defaultRenderer = root.__ECHARTS__DEFAULT__RENDERER__ || defaultRenderer;\n      defaultCoarsePointer = retrieve2(root.__ECHARTS__DEFAULT__COARSE_POINTER, defaultCoarsePointer);\n      var devUseDirtyRect = root.__ECHARTS__DEFAULT__USE_DIRTY_RECT__;\n      defaultUseDirtyRect = devUseDirtyRect == null ? defaultUseDirtyRect : devUseDirtyRect;\n    }\n\n    var zr = _this._zr = zrender.init(dom, {\n      renderer: opts.renderer || defaultRenderer,\n      devicePixelRatio: opts.devicePixelRatio,\n      width: opts.width,\n      height: opts.height,\n      ssr: opts.ssr,\n      useDirtyRect: retrieve2(opts.useDirtyRect, defaultUseDirtyRect),\n      useCoarsePointer: retrieve2(opts.useCoarsePointer, defaultCoarsePointer),\n      pointerSize: opts.pointerSize\n    });\n    _this._ssr = opts.ssr; // Expect 60 fps.\n\n    _this._throttledZrFlush = throttle(bind(zr.flush, zr), 17);\n    theme = clone(theme);\n    theme && backwardCompat(theme, true);\n    _this._theme = theme;\n    _this._locale = createLocaleObject(opts.locale || SYSTEM_LANG);\n    _this._coordSysMgr = new CoordinateSystemManager();\n    var api = _this._api = createExtensionAPI(_this); // Sort on demand\n\n    function prioritySortFunc(a, b) {\n      return a.__prio - b.__prio;\n    }\n\n    timsort(visualFuncs, prioritySortFunc);\n    timsort(dataProcessorFuncs, prioritySortFunc);\n    _this._scheduler = new Scheduler(_this, api, dataProcessorFuncs, visualFuncs);\n    _this._messageCenter = new MessageCenter(); // Init mouse events\n\n    _this._initEvents(); // In case some people write `window.onresize = chart.resize`\n\n\n    _this.resize = bind(_this.resize, _this);\n    zr.animation.on('frame', _this._onframe, _this);\n    bindRenderedEvent(zr, _this);\n    bindMouseEvent(zr, _this); // ECharts instance can be used as value.\n\n    setAsPrimitive(_this);\n    return _this;\n  }\n\n  ECharts.prototype._onframe = function () {\n    if (this._disposed) {\n      return;\n    }\n\n    applyChangedStates(this);\n    var scheduler = this._scheduler; // Lazy update\n\n    if (this[PENDING_UPDATE]) {\n      var silent = this[PENDING_UPDATE].silent;\n      this[IN_MAIN_PROCESS_KEY] = true;\n\n      try {\n        prepare(this);\n        updateMethods.update.call(this, null, this[PENDING_UPDATE].updateParams);\n      } catch (e) {\n        this[IN_MAIN_PROCESS_KEY] = false;\n        this[PENDING_UPDATE] = null;\n        throw e;\n      } // At present, in each frame, zrender performs:\n      //   (1) animation step forward.\n      //   (2) trigger('frame') (where this `_onframe` is called)\n      //   (3) zrender flush (render).\n      // If we do nothing here, since we use `setToFinal: true`, the step (3) above\n      // will render the final state of the elements before the real animation started.\n\n\n      this._zr.flush();\n\n      this[IN_MAIN_PROCESS_KEY] = false;\n      this[PENDING_UPDATE] = null;\n      flushPendingActions.call(this, silent);\n      triggerUpdatedEvent.call(this, silent);\n    } // Avoid do both lazy update and progress in one frame.\n    else if (scheduler.unfinished) {\n        // Stream progress.\n        var remainTime = TEST_FRAME_REMAIN_TIME;\n        var ecModel = this._model;\n        var api = this._api;\n        scheduler.unfinished = false;\n\n        do {\n          var startTime = +new Date();\n          scheduler.performSeriesTasks(ecModel); // Currently dataProcessorFuncs do not check threshold.\n\n          scheduler.performDataProcessorTasks(ecModel);\n          updateStreamModes(this, ecModel); // Do not update coordinate system here. Because that coord system update in\n          // each frame is not a good user experience. So we follow the rule that\n          // the extent of the coordinate system is determined in the first frame (the\n          // frame is executed immediately after task reset.\n          // this._coordSysMgr.update(ecModel, api);\n          // console.log('--- ec frame visual ---', remainTime);\n\n          scheduler.performVisualTasks(ecModel);\n          renderSeries(this, this._model, api, 'remain', {});\n          remainTime -= +new Date() - startTime;\n        } while (remainTime > 0 && scheduler.unfinished); // Call flush explicitly for trigger finished event.\n\n\n        if (!scheduler.unfinished) {\n          this._zr.flush();\n        } // Else, zr flushing be ensue within the same frame,\n        // because zr flushing is after onframe event.\n\n      }\n  };\n\n  ECharts.prototype.getDom = function () {\n    return this._dom;\n  };\n\n  ECharts.prototype.getId = function () {\n    return this.id;\n  };\n\n  ECharts.prototype.getZr = function () {\n    return this._zr;\n  };\n\n  ECharts.prototype.isSSR = function () {\n    return this._ssr;\n  };\n  /* eslint-disable-next-line */\n\n\n  ECharts.prototype.setOption = function (option, notMerge, lazyUpdate) {\n    if (this[IN_MAIN_PROCESS_KEY]) {\n      if (process.env.NODE_ENV !== 'production') {\n        error('`setOption` should not be called during main process.');\n      }\n\n      return;\n    }\n\n    if (this._disposed) {\n      disposedWarning(this.id);\n      return;\n    }\n\n    var silent;\n    var replaceMerge;\n    var transitionOpt;\n\n    if (isObject(notMerge)) {\n      lazyUpdate = notMerge.lazyUpdate;\n      silent = notMerge.silent;\n      replaceMerge = notMerge.replaceMerge;\n      transitionOpt = notMerge.transition;\n      notMerge = notMerge.notMerge;\n    }\n\n    this[IN_MAIN_PROCESS_KEY] = true;\n\n    if (!this._model || notMerge) {\n      var optionManager = new OptionManager(this._api);\n      var theme = this._theme;\n      var ecModel = this._model = new GlobalModel();\n      ecModel.scheduler = this._scheduler;\n      ecModel.ssr = this._ssr;\n      ecModel.init(null, null, null, theme, this._locale, optionManager);\n    }\n\n    this._model.setOption(option, {\n      replaceMerge: replaceMerge\n    }, optionPreprocessorFuncs);\n\n    var updateParams = {\n      seriesTransition: transitionOpt,\n      optionChanged: true\n    };\n\n    if (lazyUpdate) {\n      this[PENDING_UPDATE] = {\n        silent: silent,\n        updateParams: updateParams\n      };\n      this[IN_MAIN_PROCESS_KEY] = false; // `setOption(option, {lazyMode: true})` may be called when zrender has been slept.\n      // It should wake it up to make sure zrender start to render at the next frame.\n\n      this.getZr().wakeUp();\n    } else {\n      try {\n        prepare(this);\n        updateMethods.update.call(this, null, updateParams);\n      } catch (e) {\n        this[PENDING_UPDATE] = null;\n        this[IN_MAIN_PROCESS_KEY] = false;\n        throw e;\n      } // Ensure zr refresh sychronously, and then pixel in canvas can be\n      // fetched after `setOption`.\n\n\n      if (!this._ssr) {\n        // not use flush when using ssr mode.\n        this._zr.flush();\n      }\n\n      this[PENDING_UPDATE] = null;\n      this[IN_MAIN_PROCESS_KEY] = false;\n      flushPendingActions.call(this, silent);\n      triggerUpdatedEvent.call(this, silent);\n    }\n  };\n  /**\r\n   * @deprecated\r\n   */\n\n\n  ECharts.prototype.setTheme = function () {\n    deprecateLog('ECharts#setTheme() is DEPRECATED in ECharts 3.0');\n  }; // We don't want developers to use getModel directly.\n\n\n  ECharts.prototype.getModel = function () {\n    return this._model;\n  };\n\n  ECharts.prototype.getOption = function () {\n    return this._model && this._model.getOption();\n  };\n\n  ECharts.prototype.getWidth = function () {\n    return this._zr.getWidth();\n  };\n\n  ECharts.prototype.getHeight = function () {\n    return this._zr.getHeight();\n  };\n\n  ECharts.prototype.getDevicePixelRatio = function () {\n    return this._zr.painter.dpr\n    /* eslint-disable-next-line */\n    || env.hasGlobalWindow && window.devicePixelRatio || 1;\n  };\n  /**\r\n   * Get canvas which has all thing rendered\r\n   * @deprecated Use renderToCanvas instead.\r\n   */\n\n\n  ECharts.prototype.getRenderedCanvas = function (opts) {\n    if (process.env.NODE_ENV !== 'production') {\n      deprecateReplaceLog('getRenderedCanvas', 'renderToCanvas');\n    }\n\n    return this.renderToCanvas(opts);\n  };\n\n  ECharts.prototype.renderToCanvas = function (opts) {\n    opts = opts || {};\n    var painter = this._zr.painter;\n\n    if (process.env.NODE_ENV !== 'production') {\n      if (painter.type !== 'canvas') {\n        throw new Error('renderToCanvas can only be used in the canvas renderer.');\n      }\n    }\n\n    return painter.getRenderedCanvas({\n      backgroundColor: opts.backgroundColor || this._model.get('backgroundColor'),\n      pixelRatio: opts.pixelRatio || this.getDevicePixelRatio()\n    });\n  };\n\n  ECharts.prototype.renderToSVGString = function (opts) {\n    opts = opts || {};\n    var painter = this._zr.painter;\n\n    if (process.env.NODE_ENV !== 'production') {\n      if (painter.type !== 'svg') {\n        throw new Error('renderToSVGString can only be used in the svg renderer.');\n      }\n    }\n\n    return painter.renderToString({\n      useViewBox: opts.useViewBox\n    });\n  };\n  /**\r\n   * Get svg data url\r\n   */\n\n\n  ECharts.prototype.getSvgDataURL = function () {\n    if (!env.svgSupported) {\n      return;\n    }\n\n    var zr = this._zr;\n    var list = zr.storage.getDisplayList(); // Stop animations\n\n    each(list, function (el) {\n      el.stopAnimation(null, true);\n    });\n    return zr.painter.toDataURL();\n  };\n\n  ECharts.prototype.getDataURL = function (opts) {\n    if (this._disposed) {\n      disposedWarning(this.id);\n      return;\n    }\n\n    opts = opts || {};\n    var excludeComponents = opts.excludeComponents;\n    var ecModel = this._model;\n    var excludesComponentViews = [];\n    var self = this;\n    each(excludeComponents, function (componentType) {\n      ecModel.eachComponent({\n        mainType: componentType\n      }, function (component) {\n        var view = self._componentsMap[component.__viewId];\n\n        if (!view.group.ignore) {\n          excludesComponentViews.push(view);\n          view.group.ignore = true;\n        }\n      });\n    });\n    var url = this._zr.painter.getType() === 'svg' ? this.getSvgDataURL() : this.renderToCanvas(opts).toDataURL('image/' + (opts && opts.type || 'png'));\n    each(excludesComponentViews, function (view) {\n      view.group.ignore = false;\n    });\n    return url;\n  };\n\n  ECharts.prototype.getConnectedDataURL = function (opts) {\n    if (this._disposed) {\n      disposedWarning(this.id);\n      return;\n    }\n\n    var isSvg = opts.type === 'svg';\n    var groupId = this.group;\n    var mathMin = Math.min;\n    var mathMax = Math.max;\n    var MAX_NUMBER = Infinity;\n\n    if (connectedGroups[groupId]) {\n      var left_1 = MAX_NUMBER;\n      var top_1 = MAX_NUMBER;\n      var right_1 = -MAX_NUMBER;\n      var bottom_1 = -MAX_NUMBER;\n      var canvasList_1 = [];\n      var dpr_1 = opts && opts.pixelRatio || this.getDevicePixelRatio();\n      each(instances, function (chart, id) {\n        if (chart.group === groupId) {\n          var canvas = isSvg ? chart.getZr().painter.getSvgDom().innerHTML : chart.renderToCanvas(clone(opts));\n          var boundingRect = chart.getDom().getBoundingClientRect();\n          left_1 = mathMin(boundingRect.left, left_1);\n          top_1 = mathMin(boundingRect.top, top_1);\n          right_1 = mathMax(boundingRect.right, right_1);\n          bottom_1 = mathMax(boundingRect.bottom, bottom_1);\n          canvasList_1.push({\n            dom: canvas,\n            left: boundingRect.left,\n            top: boundingRect.top\n          });\n        }\n      });\n      left_1 *= dpr_1;\n      top_1 *= dpr_1;\n      right_1 *= dpr_1;\n      bottom_1 *= dpr_1;\n      var width = right_1 - left_1;\n      var height = bottom_1 - top_1;\n      var targetCanvas = platformApi.createCanvas();\n      var zr_1 = zrender.init(targetCanvas, {\n        renderer: isSvg ? 'svg' : 'canvas'\n      });\n      zr_1.resize({\n        width: width,\n        height: height\n      });\n\n      if (isSvg) {\n        var content_1 = '';\n        each(canvasList_1, function (item) {\n          var x = item.left - left_1;\n          var y = item.top - top_1;\n          content_1 += '<g transform=\"translate(' + x + ',' + y + ')\">' + item.dom + '</g>';\n        });\n        zr_1.painter.getSvgRoot().innerHTML = content_1;\n\n        if (opts.connectedBackgroundColor) {\n          zr_1.painter.setBackgroundColor(opts.connectedBackgroundColor);\n        }\n\n        zr_1.refreshImmediately();\n        return zr_1.painter.toDataURL();\n      } else {\n        // Background between the charts\n        if (opts.connectedBackgroundColor) {\n          zr_1.add(new graphic.Rect({\n            shape: {\n              x: 0,\n              y: 0,\n              width: width,\n              height: height\n            },\n            style: {\n              fill: opts.connectedBackgroundColor\n            }\n          }));\n        }\n\n        each(canvasList_1, function (item) {\n          var img = new graphic.Image({\n            style: {\n              x: item.left * dpr_1 - left_1,\n              y: item.top * dpr_1 - top_1,\n              image: item.dom\n            }\n          });\n          zr_1.add(img);\n        });\n        zr_1.refreshImmediately();\n        return targetCanvas.toDataURL('image/' + (opts && opts.type || 'png'));\n      }\n    } else {\n      return this.getDataURL(opts);\n    }\n  };\n\n  ECharts.prototype.convertToPixel = function (finder, value) {\n    return doConvertPixel(this, 'convertToPixel', finder, value);\n  };\n\n  ECharts.prototype.convertFromPixel = function (finder, value) {\n    return doConvertPixel(this, 'convertFromPixel', finder, value);\n  };\n  /**\r\n   * Is the specified coordinate systems or components contain the given pixel point.\r\n   * @param {Array|number} value\r\n   * @return {boolean} result\r\n   */\n\n\n  ECharts.prototype.containPixel = function (finder, value) {\n    if (this._disposed) {\n      disposedWarning(this.id);\n      return;\n    }\n\n    var ecModel = this._model;\n    var result;\n    var findResult = modelUtil.parseFinder(ecModel, finder);\n    each(findResult, function (models, key) {\n      key.indexOf('Models') >= 0 && each(models, function (model) {\n        var coordSys = model.coordinateSystem;\n\n        if (coordSys && coordSys.containPoint) {\n          result = result || !!coordSys.containPoint(value);\n        } else if (key === 'seriesModels') {\n          var view = this._chartsMap[model.__viewId];\n\n          if (view && view.containPoint) {\n            result = result || view.containPoint(value, model);\n          } else {\n            if (process.env.NODE_ENV !== 'production') {\n              warn(key + ': ' + (view ? 'The found component do not support containPoint.' : 'No view mapping to the found component.'));\n            }\n          }\n        } else {\n          if (process.env.NODE_ENV !== 'production') {\n            warn(key + ': containPoint is not supported');\n          }\n        }\n      }, this);\n    }, this);\n    return !!result;\n  };\n  /**\r\n   * Get visual from series or data.\r\n   * @param finder\r\n   *        If string, e.g., 'series', means {seriesIndex: 0}.\r\n   *        If Object, could contain some of these properties below:\r\n   *        {\r\n   *            seriesIndex / seriesId / seriesName,\r\n   *            dataIndex / dataIndexInside\r\n   *        }\r\n   *        If dataIndex is not specified, series visual will be fetched,\r\n   *        but not data item visual.\r\n   *        If all of seriesIndex, seriesId, seriesName are not specified,\r\n   *        visual will be fetched from first series.\r\n   * @param visualType 'color', 'symbol', 'symbolSize'\r\n   */\n\n\n  ECharts.prototype.getVisual = function (finder, visualType) {\n    var ecModel = this._model;\n    var parsedFinder = modelUtil.parseFinder(ecModel, finder, {\n      defaultMainType: 'series'\n    });\n    var seriesModel = parsedFinder.seriesModel;\n\n    if (process.env.NODE_ENV !== 'production') {\n      if (!seriesModel) {\n        warn('There is no specified series model');\n      }\n    }\n\n    var data = seriesModel.getData();\n    var dataIndexInside = parsedFinder.hasOwnProperty('dataIndexInside') ? parsedFinder.dataIndexInside : parsedFinder.hasOwnProperty('dataIndex') ? data.indexOfRawIndex(parsedFinder.dataIndex) : null;\n    return dataIndexInside != null ? getItemVisualFromData(data, dataIndexInside, visualType) : getVisualFromData(data, visualType);\n  };\n  /**\r\n   * Get view of corresponding component model\r\n   */\n\n\n  ECharts.prototype.getViewOfComponentModel = function (componentModel) {\n    return this._componentsMap[componentModel.__viewId];\n  };\n  /**\r\n   * Get view of corresponding series model\r\n   */\n\n\n  ECharts.prototype.getViewOfSeriesModel = function (seriesModel) {\n    return this._chartsMap[seriesModel.__viewId];\n  };\n\n  ECharts.prototype._initEvents = function () {\n    var _this = this;\n\n    each(MOUSE_EVENT_NAMES, function (eveName) {\n      var handler = function (e) {\n        var ecModel = _this.getModel();\n\n        var el = e.target;\n        var params;\n        var isGlobalOut = eveName === 'globalout'; // no e.target when 'globalout'.\n\n        if (isGlobalOut) {\n          params = {};\n        } else {\n          el && findEventDispatcher(el, function (parent) {\n            var ecData = getECData(parent);\n\n            if (ecData && ecData.dataIndex != null) {\n              var dataModel = ecData.dataModel || ecModel.getSeriesByIndex(ecData.seriesIndex);\n              params = dataModel && dataModel.getDataParams(ecData.dataIndex, ecData.dataType, el) || {};\n              return true;\n            } // If element has custom eventData of components\n            else if (ecData.eventData) {\n                params = extend({}, ecData.eventData);\n                return true;\n              }\n          }, true);\n        } // Contract: if params prepared in mouse event,\n        // these properties must be specified:\n        // {\n        //    componentType: string (component main type)\n        //    componentIndex: number\n        // }\n        // Otherwise event query can not work.\n\n\n        if (params) {\n          var componentType = params.componentType;\n          var componentIndex = params.componentIndex; // Special handling for historic reason: when trigger by\n          // markLine/markPoint/markArea, the componentType is\n          // 'markLine'/'markPoint'/'markArea', but we should better\n          // enable them to be queried by seriesIndex, since their\n          // option is set in each series.\n\n          if (componentType === 'markLine' || componentType === 'markPoint' || componentType === 'markArea') {\n            componentType = 'series';\n            componentIndex = params.seriesIndex;\n          }\n\n          var model = componentType && componentIndex != null && ecModel.getComponent(componentType, componentIndex);\n          var view = model && _this[model.mainType === 'series' ? '_chartsMap' : '_componentsMap'][model.__viewId];\n\n          if (process.env.NODE_ENV !== 'production') {\n            // `event.componentType` and `event[componentTpype + 'Index']` must not\n            // be missed, otherwise there is no way to distinguish source component.\n            // See `dataFormat.getDataParams`.\n            if (!isGlobalOut && !(model && view)) {\n              warn('model or view can not be found by params');\n            }\n          }\n\n          params.event = e;\n          params.type = eveName;\n          _this._$eventProcessor.eventInfo = {\n            targetEl: el,\n            packedEvent: params,\n            model: model,\n            view: view\n          };\n\n          _this.trigger(eveName, params);\n        }\n      }; // Consider that some component (like tooltip, brush, ...)\n      // register zr event handler, but user event handler might\n      // do anything, such as call `setOption` or `dispatchAction`,\n      // which probably update any of the content and probably\n      // cause problem if it is called previous other inner handlers.\n\n\n      handler.zrEventfulCallAtLast = true;\n\n      _this._zr.on(eveName, handler, _this);\n    });\n    each(eventActionMap, function (actionType, eventType) {\n      _this._messageCenter.on(eventType, function (event) {\n        this.trigger(eventType, event);\n      }, _this);\n    }); // Extra events\n    // TODO register?\n\n    each(['selectchanged'], function (eventType) {\n      _this._messageCenter.on(eventType, function (event) {\n        this.trigger(eventType, event);\n      }, _this);\n    });\n    handleLegacySelectEvents(this._messageCenter, this, this._api);\n  };\n\n  ECharts.prototype.isDisposed = function () {\n    return this._disposed;\n  };\n\n  ECharts.prototype.clear = function () {\n    if (this._disposed) {\n      disposedWarning(this.id);\n      return;\n    }\n\n    this.setOption({\n      series: []\n    }, true);\n  };\n\n  ECharts.prototype.dispose = function () {\n    if (this._disposed) {\n      disposedWarning(this.id);\n      return;\n    }\n\n    this._disposed = true;\n    var dom = this.getDom();\n\n    if (dom) {\n      modelUtil.setAttribute(this.getDom(), DOM_ATTRIBUTE_KEY, '');\n    }\n\n    var chart = this;\n    var api = chart._api;\n    var ecModel = chart._model;\n    each(chart._componentsViews, function (component) {\n      component.dispose(ecModel, api);\n    });\n    each(chart._chartsViews, function (chart) {\n      chart.dispose(ecModel, api);\n    }); // Dispose after all views disposed\n\n    chart._zr.dispose(); // Set properties to null.\n    // To reduce the memory cost in case the top code still holds this instance unexpectedly.\n\n\n    chart._dom = chart._model = chart._chartsMap = chart._componentsMap = chart._chartsViews = chart._componentsViews = chart._scheduler = chart._api = chart._zr = chart._throttledZrFlush = chart._theme = chart._coordSysMgr = chart._messageCenter = null;\n    delete instances[chart.id];\n  };\n  /**\r\n   * Resize the chart\r\n   */\n\n\n  ECharts.prototype.resize = function (opts) {\n    if (this[IN_MAIN_PROCESS_KEY]) {\n      if (process.env.NODE_ENV !== 'production') {\n        error('`resize` should not be called during main process.');\n      }\n\n      return;\n    }\n\n    if (this._disposed) {\n      disposedWarning(this.id);\n      return;\n    }\n\n    this._zr.resize(opts);\n\n    var ecModel = this._model; // Resize loading effect\n\n    this._loadingFX && this._loadingFX.resize();\n\n    if (!ecModel) {\n      return;\n    }\n\n    var needPrepare = ecModel.resetOption('media');\n    var silent = opts && opts.silent; // There is some real cases that:\n    // chart.setOption(option, { lazyUpdate: true });\n    // chart.resize();\n\n    if (this[PENDING_UPDATE]) {\n      if (silent == null) {\n        silent = this[PENDING_UPDATE].silent;\n      }\n\n      needPrepare = true;\n      this[PENDING_UPDATE] = null;\n    }\n\n    this[IN_MAIN_PROCESS_KEY] = true;\n\n    try {\n      needPrepare && prepare(this);\n      updateMethods.update.call(this, {\n        type: 'resize',\n        animation: extend({\n          // Disable animation\n          duration: 0\n        }, opts && opts.animation)\n      });\n    } catch (e) {\n      this[IN_MAIN_PROCESS_KEY] = false;\n      throw e;\n    }\n\n    this[IN_MAIN_PROCESS_KEY] = false;\n    flushPendingActions.call(this, silent);\n    triggerUpdatedEvent.call(this, silent);\n  };\n\n  ECharts.prototype.showLoading = function (name, cfg) {\n    if (this._disposed) {\n      disposedWarning(this.id);\n      return;\n    }\n\n    if (isObject(name)) {\n      cfg = name;\n      name = '';\n    }\n\n    name = name || 'default';\n    this.hideLoading();\n\n    if (!loadingEffects[name]) {\n      if (process.env.NODE_ENV !== 'production') {\n        warn('Loading effects ' + name + ' not exists.');\n      }\n\n      return;\n    }\n\n    var el = loadingEffects[name](this._api, cfg);\n    var zr = this._zr;\n    this._loadingFX = el;\n    zr.add(el);\n  };\n  /**\r\n   * Hide loading effect\r\n   */\n\n\n  ECharts.prototype.hideLoading = function () {\n    if (this._disposed) {\n      disposedWarning(this.id);\n      return;\n    }\n\n    this._loadingFX && this._zr.remove(this._loadingFX);\n    this._loadingFX = null;\n  };\n\n  ECharts.prototype.makeActionFromEvent = function (eventObj) {\n    var payload = extend({}, eventObj);\n    payload.type = eventActionMap[eventObj.type];\n    return payload;\n  };\n  /**\r\n   * @param opt If pass boolean, means opt.silent\r\n   * @param opt.silent Default `false`. Whether trigger events.\r\n   * @param opt.flush Default `undefined`.\r\n   *        true: Flush immediately, and then pixel in canvas can be fetched\r\n   *            immediately. Caution: it might affect performance.\r\n   *        false: Not flush.\r\n   *        undefined: Auto decide whether perform flush.\r\n   */\n\n\n  ECharts.prototype.dispatchAction = function (payload, opt) {\n    if (this._disposed) {\n      disposedWarning(this.id);\n      return;\n    }\n\n    if (!isObject(opt)) {\n      opt = {\n        silent: !!opt\n      };\n    }\n\n    if (!actions[payload.type]) {\n      return;\n    } // Avoid dispatch action before setOption. Especially in `connect`.\n\n\n    if (!this._model) {\n      return;\n    } // May dispatchAction in rendering procedure\n\n\n    if (this[IN_MAIN_PROCESS_KEY]) {\n      this._pendingActions.push(payload);\n\n      return;\n    }\n\n    var silent = opt.silent;\n    doDispatchAction.call(this, payload, silent);\n    var flush = opt.flush;\n\n    if (flush) {\n      this._zr.flush();\n    } else if (flush !== false && env.browser.weChat) {\n      // In WeChat embedded browser, `requestAnimationFrame` and `setInterval`\n      // hang when sliding page (on touch event), which cause that zr does not\n      // refresh until user interaction finished, which is not expected.\n      // But `dispatchAction` may be called too frequently when pan on touch\n      // screen, which impacts performance if do not throttle them.\n      this._throttledZrFlush();\n    }\n\n    flushPendingActions.call(this, silent);\n    triggerUpdatedEvent.call(this, silent);\n  };\n\n  ECharts.prototype.updateLabelLayout = function () {\n    lifecycle.trigger('series:layoutlabels', this._model, this._api, {\n      // Not adding series labels.\n      // TODO\n      updatedSeries: []\n    });\n  };\n\n  ECharts.prototype.appendData = function (params) {\n    if (this._disposed) {\n      disposedWarning(this.id);\n      return;\n    }\n\n    var seriesIndex = params.seriesIndex;\n    var ecModel = this.getModel();\n    var seriesModel = ecModel.getSeriesByIndex(seriesIndex);\n\n    if (process.env.NODE_ENV !== 'production') {\n      assert(params.data && seriesModel);\n    }\n\n    seriesModel.appendData(params); // Note: `appendData` does not support that update extent of coordinate\n    // system, util some scenario require that. In the expected usage of\n    // `appendData`, the initial extent of coordinate system should better\n    // be fixed by axis `min`/`max` setting or initial data, otherwise if\n    // the extent changed while `appendData`, the location of the painted\n    // graphic elements have to be changed, which make the usage of\n    // `appendData` meaningless.\n\n    this._scheduler.unfinished = true;\n    this.getZr().wakeUp();\n  }; // A work around for no `internal` modifier in ts yet but\n  // need to strictly hide private methods to JS users.\n\n\n  ECharts.internalField = function () {\n    prepare = function (ecIns) {\n      var scheduler = ecIns._scheduler;\n      scheduler.restorePipelines(ecIns._model);\n      scheduler.prepareStageTasks();\n      prepareView(ecIns, true);\n      prepareView(ecIns, false);\n      scheduler.plan();\n    };\n    /**\r\n     * Prepare view instances of charts and components\r\n     */\n\n\n    prepareView = function (ecIns, isComponent) {\n      var ecModel = ecIns._model;\n      var scheduler = ecIns._scheduler;\n      var viewList = isComponent ? ecIns._componentsViews : ecIns._chartsViews;\n      var viewMap = isComponent ? ecIns._componentsMap : ecIns._chartsMap;\n      var zr = ecIns._zr;\n      var api = ecIns._api;\n\n      for (var i = 0; i < viewList.length; i++) {\n        viewList[i].__alive = false;\n      }\n\n      isComponent ? ecModel.eachComponent(function (componentType, model) {\n        componentType !== 'series' && doPrepare(model);\n      }) : ecModel.eachSeries(doPrepare);\n\n      function doPrepare(model) {\n        // By default view will be reused if possible for the case that `setOption` with \"notMerge\"\n        // mode and need to enable transition animation. (Usually, when they have the same id, or\n        // especially no id but have the same type & name & index. See the `model.id` generation\n        // rule in `makeIdAndName` and `viewId` generation rule here).\n        // But in `replaceMerge` mode, this feature should be able to disabled when it is clear that\n        // the new model has nothing to do with the old model.\n        var requireNewView = model.__requireNewView; // This command should not work twice.\n\n        model.__requireNewView = false; // Consider: id same and type changed.\n\n        var viewId = '_ec_' + model.id + '_' + model.type;\n        var view = !requireNewView && viewMap[viewId];\n\n        if (!view) {\n          var classType = parseClassType(model.type);\n          var Clazz = isComponent ? ComponentView.getClass(classType.main, classType.sub) : // FIXME:TS\n          // (ChartView as ChartViewConstructor).getClass('series', classType.sub)\n          // For backward compat, still support a chart type declared as only subType\n          // like \"liquidfill\", but recommend \"series.liquidfill\"\n          // But need a base class to make a type series.\n          ChartView.getClass(classType.sub);\n\n          if (process.env.NODE_ENV !== 'production') {\n            assert(Clazz, classType.sub + ' does not exist.');\n          }\n\n          view = new Clazz();\n          view.init(ecModel, api);\n          viewMap[viewId] = view;\n          viewList.push(view);\n          zr.add(view.group);\n        }\n\n        model.__viewId = view.__id = viewId;\n        view.__alive = true;\n        view.__model = model;\n        view.group.__ecComponentInfo = {\n          mainType: model.mainType,\n          index: model.componentIndex\n        };\n        !isComponent && scheduler.prepareView(view, model, ecModel, api);\n      }\n\n      for (var i = 0; i < viewList.length;) {\n        var view = viewList[i];\n\n        if (!view.__alive) {\n          !isComponent && view.renderTask.dispose();\n          zr.remove(view.group);\n          view.dispose(ecModel, api);\n          viewList.splice(i, 1);\n\n          if (viewMap[view.__id] === view) {\n            delete viewMap[view.__id];\n          }\n\n          view.__id = view.group.__ecComponentInfo = null;\n        } else {\n          i++;\n        }\n      }\n    };\n\n    updateDirectly = function (ecIns, method, payload, mainType, subType) {\n      var ecModel = ecIns._model;\n      ecModel.setUpdatePayload(payload); // broadcast\n\n      if (!mainType) {\n        // FIXME\n        // Chart will not be update directly here, except set dirty.\n        // But there is no such scenario now.\n        each([].concat(ecIns._componentsViews).concat(ecIns._chartsViews), callView);\n        return;\n      }\n\n      var query = {};\n      query[mainType + 'Id'] = payload[mainType + 'Id'];\n      query[mainType + 'Index'] = payload[mainType + 'Index'];\n      query[mainType + 'Name'] = payload[mainType + 'Name'];\n      var condition = {\n        mainType: mainType,\n        query: query\n      };\n      subType && (condition.subType = subType); // subType may be '' by parseClassType;\n\n      var excludeSeriesId = payload.excludeSeriesId;\n      var excludeSeriesIdMap;\n\n      if (excludeSeriesId != null) {\n        excludeSeriesIdMap = createHashMap();\n        each(modelUtil.normalizeToArray(excludeSeriesId), function (id) {\n          var modelId = modelUtil.convertOptionIdName(id, null);\n\n          if (modelId != null) {\n            excludeSeriesIdMap.set(modelId, true);\n          }\n        });\n      } // If dispatchAction before setOption, do nothing.\n\n\n      ecModel && ecModel.eachComponent(condition, function (model) {\n        var isExcluded = excludeSeriesIdMap && excludeSeriesIdMap.get(model.id) != null;\n\n        if (isExcluded) {\n          return;\n        }\n\n        ;\n\n        if (isHighDownPayload(payload)) {\n          if (model instanceof SeriesModel) {\n            if (payload.type === HIGHLIGHT_ACTION_TYPE && !payload.notBlur && !model.get(['emphasis', 'disabled'])) {\n              blurSeriesFromHighlightPayload(model, payload, ecIns._api);\n            }\n          } else {\n            var _a = findComponentHighDownDispatchers(model.mainType, model.componentIndex, payload.name, ecIns._api),\n                focusSelf = _a.focusSelf,\n                dispatchers = _a.dispatchers;\n\n            if (payload.type === HIGHLIGHT_ACTION_TYPE && focusSelf && !payload.notBlur) {\n              blurComponent(model.mainType, model.componentIndex, ecIns._api);\n            } // PENDING:\n            // Whether to put this \"enter emphasis\" code in `ComponentView`,\n            // which will be the same as `ChartView` but might be not necessary\n            // and will be far from this logic.\n\n\n            if (dispatchers) {\n              each(dispatchers, function (dispatcher) {\n                payload.type === HIGHLIGHT_ACTION_TYPE ? enterEmphasis(dispatcher) : leaveEmphasis(dispatcher);\n              });\n            }\n          }\n        } else if (isSelectChangePayload(payload)) {\n          // TODO geo\n          if (model instanceof SeriesModel) {\n            toggleSelectionFromPayload(model, payload, ecIns._api);\n            updateSeriesElementSelection(model);\n            markStatusToUpdate(ecIns);\n          }\n        }\n      }, ecIns);\n      ecModel && ecModel.eachComponent(condition, function (model) {\n        var isExcluded = excludeSeriesIdMap && excludeSeriesIdMap.get(model.id) != null;\n\n        if (isExcluded) {\n          return;\n        }\n\n        ;\n        callView(ecIns[mainType === 'series' ? '_chartsMap' : '_componentsMap'][model.__viewId]);\n      }, ecIns);\n\n      function callView(view) {\n        view && view.__alive && view[method] && view[method](view.__model, ecModel, ecIns._api, payload);\n      }\n    };\n\n    updateMethods = {\n      prepareAndUpdate: function (payload) {\n        prepare(this);\n        updateMethods.update.call(this, payload, {\n          // Needs to mark option changed if newOption is given.\n          // It's from MagicType.\n          // TODO If use a separate flag optionChanged in payload?\n          optionChanged: payload.newOption != null\n        });\n      },\n      update: function (payload, updateParams) {\n        var ecModel = this._model;\n        var api = this._api;\n        var zr = this._zr;\n        var coordSysMgr = this._coordSysMgr;\n        var scheduler = this._scheduler; // update before setOption\n\n        if (!ecModel) {\n          return;\n        }\n\n        ecModel.setUpdatePayload(payload);\n        scheduler.restoreData(ecModel, payload);\n        scheduler.performSeriesTasks(ecModel); // TODO\n        // Save total ecModel here for undo/redo (after restoring data and before processing data).\n        // Undo (restoration of total ecModel) can be carried out in 'action' or outside API call.\n        // Create new coordinate system each update\n        // In LineView may save the old coordinate system and use it to get the original point.\n\n        coordSysMgr.create(ecModel, api);\n        scheduler.performDataProcessorTasks(ecModel, payload); // Current stream render is not supported in data process. So we can update\n        // stream modes after data processing, where the filtered data is used to\n        // determine whether to use progressive rendering.\n\n        updateStreamModes(this, ecModel); // We update stream modes before coordinate system updated, then the modes info\n        // can be fetched when coord sys updating (consider the barGrid extent fix). But\n        // the drawback is the full coord info can not be fetched. Fortunately this full\n        // coord is not required in stream mode updater currently.\n\n        coordSysMgr.update(ecModel, api);\n        clearColorPalette(ecModel);\n        scheduler.performVisualTasks(ecModel, payload);\n        render(this, ecModel, api, payload, updateParams); // Set background\n\n        var backgroundColor = ecModel.get('backgroundColor') || 'transparent';\n        var darkMode = ecModel.get('darkMode');\n        zr.setBackgroundColor(backgroundColor); // Force set dark mode.\n\n        if (darkMode != null && darkMode !== 'auto') {\n          zr.setDarkMode(darkMode);\n        }\n\n        lifecycle.trigger('afterupdate', ecModel, api);\n      },\n      updateTransform: function (payload) {\n        var _this = this;\n\n        var ecModel = this._model;\n        var api = this._api; // update before setOption\n\n        if (!ecModel) {\n          return;\n        }\n\n        ecModel.setUpdatePayload(payload); // ChartView.markUpdateMethod(payload, 'updateTransform');\n\n        var componentDirtyList = [];\n        ecModel.eachComponent(function (componentType, componentModel) {\n          if (componentType === 'series') {\n            return;\n          }\n\n          var componentView = _this.getViewOfComponentModel(componentModel);\n\n          if (componentView && componentView.__alive) {\n            if (componentView.updateTransform) {\n              var result = componentView.updateTransform(componentModel, ecModel, api, payload);\n              result && result.update && componentDirtyList.push(componentView);\n            } else {\n              componentDirtyList.push(componentView);\n            }\n          }\n        });\n        var seriesDirtyMap = createHashMap();\n        ecModel.eachSeries(function (seriesModel) {\n          var chartView = _this._chartsMap[seriesModel.__viewId];\n\n          if (chartView.updateTransform) {\n            var result = chartView.updateTransform(seriesModel, ecModel, api, payload);\n            result && result.update && seriesDirtyMap.set(seriesModel.uid, 1);\n          } else {\n            seriesDirtyMap.set(seriesModel.uid, 1);\n          }\n        });\n        clearColorPalette(ecModel); // Keep pipe to the exist pipeline because it depends on the render task of the full pipeline.\n        // this._scheduler.performVisualTasks(ecModel, payload, 'layout', true);\n\n        this._scheduler.performVisualTasks(ecModel, payload, {\n          setDirty: true,\n          dirtyMap: seriesDirtyMap\n        }); // Currently, not call render of components. Geo render cost a lot.\n        // renderComponents(ecIns, ecModel, api, payload, componentDirtyList);\n\n\n        renderSeries(this, ecModel, api, payload, {}, seriesDirtyMap);\n        lifecycle.trigger('afterupdate', ecModel, api);\n      },\n      updateView: function (payload) {\n        var ecModel = this._model; // update before setOption\n\n        if (!ecModel) {\n          return;\n        }\n\n        ecModel.setUpdatePayload(payload);\n        ChartView.markUpdateMethod(payload, 'updateView');\n        clearColorPalette(ecModel); // Keep pipe to the exist pipeline because it depends on the render task of the full pipeline.\n\n        this._scheduler.performVisualTasks(ecModel, payload, {\n          setDirty: true\n        });\n\n        render(this, ecModel, this._api, payload, {});\n        lifecycle.trigger('afterupdate', ecModel, this._api);\n      },\n      updateVisual: function (payload) {\n        // updateMethods.update.call(this, payload);\n        var _this = this;\n\n        var ecModel = this._model; // update before setOption\n\n        if (!ecModel) {\n          return;\n        }\n\n        ecModel.setUpdatePayload(payload); // clear all visual\n\n        ecModel.eachSeries(function (seriesModel) {\n          seriesModel.getData().clearAllVisual();\n        }); // Perform visual\n\n        ChartView.markUpdateMethod(payload, 'updateVisual');\n        clearColorPalette(ecModel); // Keep pipe to the exist pipeline because it depends on the render task of the full pipeline.\n\n        this._scheduler.performVisualTasks(ecModel, payload, {\n          visualType: 'visual',\n          setDirty: true\n        });\n\n        ecModel.eachComponent(function (componentType, componentModel) {\n          if (componentType !== 'series') {\n            var componentView = _this.getViewOfComponentModel(componentModel);\n\n            componentView && componentView.__alive && componentView.updateVisual(componentModel, ecModel, _this._api, payload);\n          }\n        });\n        ecModel.eachSeries(function (seriesModel) {\n          var chartView = _this._chartsMap[seriesModel.__viewId];\n          chartView.updateVisual(seriesModel, ecModel, _this._api, payload);\n        });\n        lifecycle.trigger('afterupdate', ecModel, this._api);\n      },\n      updateLayout: function (payload) {\n        updateMethods.update.call(this, payload);\n      }\n    };\n\n    doConvertPixel = function (ecIns, methodName, finder, value) {\n      if (ecIns._disposed) {\n        disposedWarning(ecIns.id);\n        return;\n      }\n\n      var ecModel = ecIns._model;\n\n      var coordSysList = ecIns._coordSysMgr.getCoordinateSystems();\n\n      var result;\n      var parsedFinder = modelUtil.parseFinder(ecModel, finder);\n\n      for (var i = 0; i < coordSysList.length; i++) {\n        var coordSys = coordSysList[i];\n\n        if (coordSys[methodName] && (result = coordSys[methodName](ecModel, parsedFinder, value)) != null) {\n          return result;\n        }\n      }\n\n      if (process.env.NODE_ENV !== 'production') {\n        warn('No coordinate system that supports ' + methodName + ' found by the given finder.');\n      }\n    };\n\n    updateStreamModes = function (ecIns, ecModel) {\n      var chartsMap = ecIns._chartsMap;\n      var scheduler = ecIns._scheduler;\n      ecModel.eachSeries(function (seriesModel) {\n        scheduler.updateStreamModes(seriesModel, chartsMap[seriesModel.__viewId]);\n      });\n    };\n\n    doDispatchAction = function (payload, silent) {\n      var _this = this;\n\n      var ecModel = this.getModel();\n      var payloadType = payload.type;\n      var escapeConnect = payload.escapeConnect;\n      var actionWrap = actions[payloadType];\n      var actionInfo = actionWrap.actionInfo;\n      var cptTypeTmp = (actionInfo.update || 'update').split(':');\n      var updateMethod = cptTypeTmp.pop();\n      var cptType = cptTypeTmp[0] != null && parseClassType(cptTypeTmp[0]);\n      this[IN_MAIN_PROCESS_KEY] = true;\n      var payloads = [payload];\n      var batched = false; // Batch action\n\n      if (payload.batch) {\n        batched = true;\n        payloads = map(payload.batch, function (item) {\n          item = defaults(extend({}, item), payload);\n          item.batch = null;\n          return item;\n        });\n      }\n\n      var eventObjBatch = [];\n      var eventObj;\n      var isSelectChange = isSelectChangePayload(payload);\n      var isHighDown = isHighDownPayload(payload); // Only leave blur once if there are multiple batches.\n\n      if (isHighDown) {\n        allLeaveBlur(this._api);\n      }\n\n      each(payloads, function (batchItem) {\n        // Action can specify the event by return it.\n        eventObj = actionWrap.action(batchItem, _this._model, _this._api); // Emit event outside\n\n        eventObj = eventObj || extend({}, batchItem); // Convert type to eventType\n\n        eventObj.type = actionInfo.event || eventObj.type;\n        eventObjBatch.push(eventObj); // light update does not perform data process, layout and visual.\n\n        if (isHighDown) {\n          var _a = modelUtil.preParseFinder(payload),\n              queryOptionMap = _a.queryOptionMap,\n              mainTypeSpecified = _a.mainTypeSpecified;\n\n          var componentMainType = mainTypeSpecified ? queryOptionMap.keys()[0] : 'series';\n          updateDirectly(_this, updateMethod, batchItem, componentMainType);\n          markStatusToUpdate(_this);\n        } else if (isSelectChange) {\n          // At present `dispatchAction({ type: 'select', ... })` is not supported on components.\n          // geo still use 'geoselect'.\n          updateDirectly(_this, updateMethod, batchItem, 'series');\n          markStatusToUpdate(_this);\n        } else if (cptType) {\n          updateDirectly(_this, updateMethod, batchItem, cptType.main, cptType.sub);\n        }\n      });\n\n      if (updateMethod !== 'none' && !isHighDown && !isSelectChange && !cptType) {\n        try {\n          // Still dirty\n          if (this[PENDING_UPDATE]) {\n            prepare(this);\n            updateMethods.update.call(this, payload);\n            this[PENDING_UPDATE] = null;\n          } else {\n            updateMethods[updateMethod].call(this, payload);\n          }\n        } catch (e) {\n          this[IN_MAIN_PROCESS_KEY] = false;\n          throw e;\n        }\n      } // Follow the rule of action batch\n\n\n      if (batched) {\n        eventObj = {\n          type: actionInfo.event || payloadType,\n          escapeConnect: escapeConnect,\n          batch: eventObjBatch\n        };\n      } else {\n        eventObj = eventObjBatch[0];\n      }\n\n      this[IN_MAIN_PROCESS_KEY] = false;\n\n      if (!silent) {\n        var messageCenter = this._messageCenter;\n        messageCenter.trigger(eventObj.type, eventObj); // Extra triggered 'selectchanged' event\n\n        if (isSelectChange) {\n          var newObj = {\n            type: 'selectchanged',\n            escapeConnect: escapeConnect,\n            selected: getAllSelectedIndices(ecModel),\n            isFromClick: payload.isFromClick || false,\n            fromAction: payload.type,\n            fromActionPayload: payload\n          };\n          messageCenter.trigger(newObj.type, newObj);\n        }\n      }\n    };\n\n    flushPendingActions = function (silent) {\n      var pendingActions = this._pendingActions;\n\n      while (pendingActions.length) {\n        var payload = pendingActions.shift();\n        doDispatchAction.call(this, payload, silent);\n      }\n    };\n\n    triggerUpdatedEvent = function (silent) {\n      !silent && this.trigger('updated');\n    };\n    /**\r\n     * Event `rendered` is triggered when zr\r\n     * rendered. It is useful for realtime\r\n     * snapshot (reflect animation).\r\n     *\r\n     * Event `finished` is triggered when:\r\n     * (1) zrender rendering finished.\r\n     * (2) initial animation finished.\r\n     * (3) progressive rendering finished.\r\n     * (4) no pending action.\r\n     * (5) no delayed setOption needs to be processed.\r\n     */\n\n\n    bindRenderedEvent = function (zr, ecIns) {\n      zr.on('rendered', function (params) {\n        ecIns.trigger('rendered', params); // The `finished` event should not be triggered repeatedly,\n        // so it should only be triggered when rendering indeed happens\n        // in zrender. (Consider the case that dipatchAction is keep\n        // triggering when mouse move).\n\n        if ( // Although zr is dirty if initial animation is not finished\n        // and this checking is called on frame, we also check\n        // animation finished for robustness.\n        zr.animation.isFinished() && !ecIns[PENDING_UPDATE] && !ecIns._scheduler.unfinished && !ecIns._pendingActions.length) {\n          ecIns.trigger('finished');\n        }\n      });\n    };\n\n    bindMouseEvent = function (zr, ecIns) {\n      zr.on('mouseover', function (e) {\n        var el = e.target;\n        var dispatcher = findEventDispatcher(el, isHighDownDispatcher);\n\n        if (dispatcher) {\n          handleGlobalMouseOverForHighDown(dispatcher, e, ecIns._api);\n          markStatusToUpdate(ecIns);\n        }\n      }).on('mouseout', function (e) {\n        var el = e.target;\n        var dispatcher = findEventDispatcher(el, isHighDownDispatcher);\n\n        if (dispatcher) {\n          handleGlobalMouseOutForHighDown(dispatcher, e, ecIns._api);\n          markStatusToUpdate(ecIns);\n        }\n      }).on('click', function (e) {\n        var el = e.target;\n        var dispatcher = findEventDispatcher(el, function (target) {\n          return getECData(target).dataIndex != null;\n        }, true);\n\n        if (dispatcher) {\n          var actionType = dispatcher.selected ? 'unselect' : 'select';\n          var ecData = getECData(dispatcher);\n\n          ecIns._api.dispatchAction({\n            type: actionType,\n            dataType: ecData.dataType,\n            dataIndexInside: ecData.dataIndex,\n            seriesIndex: ecData.seriesIndex,\n            isFromClick: true\n          });\n        }\n      });\n    };\n\n    function clearColorPalette(ecModel) {\n      ecModel.clearColorPalette();\n      ecModel.eachSeries(function (seriesModel) {\n        seriesModel.clearColorPalette();\n      });\n    }\n\n    ; // Allocate zlevels for series and components\n\n    function allocateZlevels(ecModel) {\n      ;\n      var componentZLevels = [];\n      var seriesZLevels = [];\n      var hasSeperateZLevel = false;\n      ecModel.eachComponent(function (componentType, componentModel) {\n        var zlevel = componentModel.get('zlevel') || 0;\n        var z = componentModel.get('z') || 0;\n        var zlevelKey = componentModel.getZLevelKey();\n        hasSeperateZLevel = hasSeperateZLevel || !!zlevelKey;\n        (componentType === 'series' ? seriesZLevels : componentZLevels).push({\n          zlevel: zlevel,\n          z: z,\n          idx: componentModel.componentIndex,\n          type: componentType,\n          key: zlevelKey\n        });\n      });\n\n      if (hasSeperateZLevel) {\n        // Series after component\n        var zLevels = componentZLevels.concat(seriesZLevels);\n        var lastSeriesZLevel_1;\n        var lastSeriesKey_1;\n        timsort(zLevels, function (a, b) {\n          if (a.zlevel === b.zlevel) {\n            return a.z - b.z;\n          }\n\n          return a.zlevel - b.zlevel;\n        });\n        each(zLevels, function (item) {\n          var componentModel = ecModel.getComponent(item.type, item.idx);\n          var zlevel = item.zlevel;\n          var key = item.key;\n\n          if (lastSeriesZLevel_1 != null) {\n            zlevel = Math.max(lastSeriesZLevel_1, zlevel);\n          }\n\n          if (key) {\n            if (zlevel === lastSeriesZLevel_1 && key !== lastSeriesKey_1) {\n              zlevel++;\n            }\n\n            lastSeriesKey_1 = key;\n          } else if (lastSeriesKey_1) {\n            if (zlevel === lastSeriesZLevel_1) {\n              zlevel++;\n            }\n\n            lastSeriesKey_1 = '';\n          }\n\n          lastSeriesZLevel_1 = zlevel;\n          componentModel.setZLevel(zlevel);\n        });\n      }\n    }\n\n    render = function (ecIns, ecModel, api, payload, updateParams) {\n      allocateZlevels(ecModel);\n      renderComponents(ecIns, ecModel, api, payload, updateParams);\n      each(ecIns._chartsViews, function (chart) {\n        chart.__alive = false;\n      });\n      renderSeries(ecIns, ecModel, api, payload, updateParams); // Remove groups of unrendered charts\n\n      each(ecIns._chartsViews, function (chart) {\n        if (!chart.__alive) {\n          chart.remove(ecModel, api);\n        }\n      });\n    };\n\n    renderComponents = function (ecIns, ecModel, api, payload, updateParams, dirtyList) {\n      each(dirtyList || ecIns._componentsViews, function (componentView) {\n        var componentModel = componentView.__model;\n        clearStates(componentModel, componentView);\n        componentView.render(componentModel, ecModel, api, payload);\n        updateZ(componentModel, componentView);\n        updateStates(componentModel, componentView);\n      });\n    };\n    /**\r\n     * Render each chart and component\r\n     */\n\n\n    renderSeries = function (ecIns, ecModel, api, payload, updateParams, dirtyMap) {\n      // Render all charts\n      var scheduler = ecIns._scheduler;\n      updateParams = extend(updateParams || {}, {\n        updatedSeries: ecModel.getSeries()\n      }); // TODO progressive?\n\n      lifecycle.trigger('series:beforeupdate', ecModel, api, updateParams);\n      var unfinished = false;\n      ecModel.eachSeries(function (seriesModel) {\n        var chartView = ecIns._chartsMap[seriesModel.__viewId];\n        chartView.__alive = true;\n        var renderTask = chartView.renderTask;\n        scheduler.updatePayload(renderTask, payload); // TODO states on marker.\n\n        clearStates(seriesModel, chartView);\n\n        if (dirtyMap && dirtyMap.get(seriesModel.uid)) {\n          renderTask.dirty();\n        }\n\n        if (renderTask.perform(scheduler.getPerformArgs(renderTask))) {\n          unfinished = true;\n        }\n\n        chartView.group.silent = !!seriesModel.get('silent'); // Should not call markRedraw on group, because it will disable zrender\n        // incremental render (always render from the __startIndex each frame)\n        // chartView.group.markRedraw();\n\n        updateBlend(seriesModel, chartView);\n        updateSeriesElementSelection(seriesModel);\n      });\n      scheduler.unfinished = unfinished || scheduler.unfinished;\n      lifecycle.trigger('series:layoutlabels', ecModel, api, updateParams); // transition after label is layouted.\n\n      lifecycle.trigger('series:transition', ecModel, api, updateParams);\n      ecModel.eachSeries(function (seriesModel) {\n        var chartView = ecIns._chartsMap[seriesModel.__viewId]; // Update Z after labels updated. Before applying states.\n\n        updateZ(seriesModel, chartView); // NOTE: Update states after label is updated.\n        // label should be in normal status when layouting.\n\n        updateStates(seriesModel, chartView);\n      }); // If use hover layer\n\n      updateHoverLayerStatus(ecIns, ecModel);\n      lifecycle.trigger('series:afterupdate', ecModel, api, updateParams);\n    };\n\n    markStatusToUpdate = function (ecIns) {\n      ecIns[STATUS_NEEDS_UPDATE_KEY] = true; // Wake up zrender if it's sleep. Let it update states in the next frame.\n\n      ecIns.getZr().wakeUp();\n    };\n\n    applyChangedStates = function (ecIns) {\n      if (!ecIns[STATUS_NEEDS_UPDATE_KEY]) {\n        return;\n      }\n\n      ecIns.getZr().storage.traverse(function (el) {\n        // Not applied on removed elements, it may still in fading.\n        if (graphic.isElementRemoved(el)) {\n          return;\n        }\n\n        applyElementStates(el);\n      });\n      ecIns[STATUS_NEEDS_UPDATE_KEY] = false;\n    };\n\n    function applyElementStates(el) {\n      var newStates = [];\n      var oldStates = el.currentStates; // Keep other states.\n\n      for (var i = 0; i < oldStates.length; i++) {\n        var stateName = oldStates[i];\n\n        if (!(stateName === 'emphasis' || stateName === 'blur' || stateName === 'select')) {\n          newStates.push(stateName);\n        }\n      } // Only use states when it's exists.\n\n\n      if (el.selected && el.states.select) {\n        newStates.push('select');\n      }\n\n      if (el.hoverState === HOVER_STATE_EMPHASIS && el.states.emphasis) {\n        newStates.push('emphasis');\n      } else if (el.hoverState === HOVER_STATE_BLUR && el.states.blur) {\n        newStates.push('blur');\n      }\n\n      el.useStates(newStates);\n    }\n\n    function updateHoverLayerStatus(ecIns, ecModel) {\n      var zr = ecIns._zr;\n      var storage = zr.storage;\n      var elCount = 0;\n      storage.traverse(function (el) {\n        if (!el.isGroup) {\n          elCount++;\n        }\n      });\n\n      if (elCount > ecModel.get('hoverLayerThreshold') && !env.node && !env.worker) {\n        ecModel.eachSeries(function (seriesModel) {\n          if (seriesModel.preventUsingHoverLayer) {\n            return;\n          }\n\n          var chartView = ecIns._chartsMap[seriesModel.__viewId];\n\n          if (chartView.__alive) {\n            chartView.eachRendered(function (el) {\n              if (el.states.emphasis) {\n                el.states.emphasis.hoverLayer = true;\n              }\n            });\n          }\n        });\n      }\n    }\n\n    ;\n    /**\r\n     * Update chart and blend.\r\n     */\n\n    function updateBlend(seriesModel, chartView) {\n      var blendMode = seriesModel.get('blendMode') || null;\n      chartView.eachRendered(function (el) {\n        // FIXME marker and other components\n        if (!el.isGroup) {\n          // DON'T mark the element dirty. In case element is incremental and don't want to rerender.\n          el.style.blend = blendMode;\n        }\n      });\n    }\n\n    ;\n\n    function updateZ(model, view) {\n      if (model.preventAutoZ) {\n        return;\n      }\n\n      var z = model.get('z') || 0;\n      var zlevel = model.get('zlevel') || 0; // Set z and zlevel\n\n      view.eachRendered(function (el) {\n        doUpdateZ(el, z, zlevel, -Infinity); // Don't traverse the children because it has been traversed in _updateZ.\n\n        return true;\n      });\n    }\n\n    ;\n\n    function doUpdateZ(el, z, zlevel, maxZ2) {\n      // Group may also have textContent\n      var label = el.getTextContent();\n      var labelLine = el.getTextGuideLine();\n      var isGroup = el.isGroup;\n\n      if (isGroup) {\n        // set z & zlevel of children elements of Group\n        var children = el.childrenRef();\n\n        for (var i = 0; i < children.length; i++) {\n          maxZ2 = Math.max(doUpdateZ(children[i], z, zlevel, maxZ2), maxZ2);\n        }\n      } else {\n        // not Group\n        el.z = z;\n        el.zlevel = zlevel;\n        maxZ2 = Math.max(el.z2, maxZ2);\n      } // always set z and zlevel if label/labelLine exists\n\n\n      if (label) {\n        label.z = z;\n        label.zlevel = zlevel; // lift z2 of text content\n        // TODO if el.emphasis.z2 is spcefied, what about textContent.\n\n        isFinite(maxZ2) && (label.z2 = maxZ2 + 2);\n      }\n\n      if (labelLine) {\n        var textGuideLineConfig = el.textGuideLineConfig;\n        labelLine.z = z;\n        labelLine.zlevel = zlevel;\n        isFinite(maxZ2) && (labelLine.z2 = maxZ2 + (textGuideLineConfig && textGuideLineConfig.showAbove ? 1 : -1));\n      }\n\n      return maxZ2;\n    } // Clear states without animation.\n    // TODO States on component.\n\n\n    function clearStates(model, view) {\n      view.eachRendered(function (el) {\n        // Not applied on removed elements, it may still in fading.\n        if (graphic.isElementRemoved(el)) {\n          return;\n        }\n\n        var textContent = el.getTextContent();\n        var textGuide = el.getTextGuideLine();\n\n        if (el.stateTransition) {\n          el.stateTransition = null;\n        }\n\n        if (textContent && textContent.stateTransition) {\n          textContent.stateTransition = null;\n        }\n\n        if (textGuide && textGuide.stateTransition) {\n          textGuide.stateTransition = null;\n        } // TODO If el is incremental.\n\n\n        if (el.hasState()) {\n          el.prevStates = el.currentStates;\n          el.clearStates();\n        } else if (el.prevStates) {\n          el.prevStates = null;\n        }\n      });\n    }\n\n    function updateStates(model, view) {\n      var stateAnimationModel = model.getModel('stateAnimation');\n      var enableAnimation = model.isAnimationEnabled();\n      var duration = stateAnimationModel.get('duration');\n      var stateTransition = duration > 0 ? {\n        duration: duration,\n        delay: stateAnimationModel.get('delay'),\n        easing: stateAnimationModel.get('easing') // additive: stateAnimationModel.get('additive')\n\n      } : null;\n      view.eachRendered(function (el) {\n        if (el.states && el.states.emphasis) {\n          // Not applied on removed elements, it may still in fading.\n          if (graphic.isElementRemoved(el)) {\n            return;\n          }\n\n          if (el instanceof graphic.Path) {\n            savePathStates(el);\n          } // Only updated on changed element. In case element is incremental and don't want to rerender.\n          // TODO, a more proper way?\n\n\n          if (el.__dirty) {\n            var prevStates = el.prevStates; // Restore states without animation\n\n            if (prevStates) {\n              el.useStates(prevStates);\n            }\n          } // Update state transition and enable animation again.\n\n\n          if (enableAnimation) {\n            el.stateTransition = stateTransition;\n            var textContent = el.getTextContent();\n            var textGuide = el.getTextGuideLine(); // TODO Is it necessary to animate label?\n\n            if (textContent) {\n              textContent.stateTransition = stateTransition;\n            }\n\n            if (textGuide) {\n              textGuide.stateTransition = stateTransition;\n            }\n          } // Use highlighted and selected flag to toggle states.\n\n\n          if (el.__dirty) {\n            applyElementStates(el);\n          }\n        }\n      });\n    }\n\n    ;\n\n    createExtensionAPI = function (ecIns) {\n      return new (\n      /** @class */\n      function (_super) {\n        __extends(class_1, _super);\n\n        function class_1() {\n          return _super !== null && _super.apply(this, arguments) || this;\n        }\n\n        class_1.prototype.getCoordinateSystems = function () {\n          return ecIns._coordSysMgr.getCoordinateSystems();\n        };\n\n        class_1.prototype.getComponentByElement = function (el) {\n          while (el) {\n            var modelInfo = el.__ecComponentInfo;\n\n            if (modelInfo != null) {\n              return ecIns._model.getComponent(modelInfo.mainType, modelInfo.index);\n            }\n\n            el = el.parent;\n          }\n        };\n\n        class_1.prototype.enterEmphasis = function (el, highlightDigit) {\n          enterEmphasis(el, highlightDigit);\n          markStatusToUpdate(ecIns);\n        };\n\n        class_1.prototype.leaveEmphasis = function (el, highlightDigit) {\n          leaveEmphasis(el, highlightDigit);\n          markStatusToUpdate(ecIns);\n        };\n\n        class_1.prototype.enterBlur = function (el) {\n          enterBlur(el);\n          markStatusToUpdate(ecIns);\n        };\n\n        class_1.prototype.leaveBlur = function (el) {\n          leaveBlur(el);\n          markStatusToUpdate(ecIns);\n        };\n\n        class_1.prototype.enterSelect = function (el) {\n          enterSelect(el);\n          markStatusToUpdate(ecIns);\n        };\n\n        class_1.prototype.leaveSelect = function (el) {\n          leaveSelect(el);\n          markStatusToUpdate(ecIns);\n        };\n\n        class_1.prototype.getModel = function () {\n          return ecIns.getModel();\n        };\n\n        class_1.prototype.getViewOfComponentModel = function (componentModel) {\n          return ecIns.getViewOfComponentModel(componentModel);\n        };\n\n        class_1.prototype.getViewOfSeriesModel = function (seriesModel) {\n          return ecIns.getViewOfSeriesModel(seriesModel);\n        };\n\n        return class_1;\n      }(ExtensionAPI))(ecIns);\n    };\n\n    enableConnect = function (chart) {\n      function updateConnectedChartsStatus(charts, status) {\n        for (var i = 0; i < charts.length; i++) {\n          var otherChart = charts[i];\n          otherChart[CONNECT_STATUS_KEY] = status;\n        }\n      }\n\n      each(eventActionMap, function (actionType, eventType) {\n        chart._messageCenter.on(eventType, function (event) {\n          if (connectedGroups[chart.group] && chart[CONNECT_STATUS_KEY] !== CONNECT_STATUS_PENDING) {\n            if (event && event.escapeConnect) {\n              return;\n            }\n\n            var action_1 = chart.makeActionFromEvent(event);\n            var otherCharts_1 = [];\n            each(instances, function (otherChart) {\n              if (otherChart !== chart && otherChart.group === chart.group) {\n                otherCharts_1.push(otherChart);\n              }\n            });\n            updateConnectedChartsStatus(otherCharts_1, CONNECT_STATUS_PENDING);\n            each(otherCharts_1, function (otherChart) {\n              if (otherChart[CONNECT_STATUS_KEY] !== CONNECT_STATUS_UPDATING) {\n                otherChart.dispatchAction(action_1);\n              }\n            });\n            updateConnectedChartsStatus(otherCharts_1, CONNECT_STATUS_UPDATED);\n          }\n        });\n      });\n    };\n  }();\n\n  return ECharts;\n}(Eventful);\n\nvar echartsProto = ECharts.prototype;\nechartsProto.on = createRegisterEventWithLowercaseECharts('on');\nechartsProto.off = createRegisterEventWithLowercaseECharts('off');\n/**\r\n * @deprecated\r\n */\n// @ts-ignore\n\nechartsProto.one = function (eventName, cb, ctx) {\n  var self = this;\n  deprecateLog('ECharts#one is deprecated.');\n\n  function wrapped() {\n    var args2 = [];\n\n    for (var _i = 0; _i < arguments.length; _i++) {\n      args2[_i] = arguments[_i];\n    }\n\n    cb && cb.apply && cb.apply(this, args2); // @ts-ignore\n\n    self.off(eventName, wrapped);\n  }\n\n  ; // @ts-ignore\n\n  this.on.call(this, eventName, wrapped, ctx);\n};\n\nvar MOUSE_EVENT_NAMES = ['click', 'dblclick', 'mouseover', 'mouseout', 'mousemove', 'mousedown', 'mouseup', 'globalout', 'contextmenu'];\n\nfunction disposedWarning(id) {\n  if (process.env.NODE_ENV !== 'production') {\n    warn('Instance ' + id + ' has been disposed');\n  }\n}\n\nvar actions = {};\n/**\r\n * Map eventType to actionType\r\n */\n\nvar eventActionMap = {};\nvar dataProcessorFuncs = [];\nvar optionPreprocessorFuncs = [];\nvar visualFuncs = [];\nvar themeStorage = {};\nvar loadingEffects = {};\nvar instances = {};\nvar connectedGroups = {};\nvar idBase = +new Date() - 0;\nvar groupIdBase = +new Date() - 0;\nvar DOM_ATTRIBUTE_KEY = '_echarts_instance_';\n/**\r\n * @param opts.devicePixelRatio Use window.devicePixelRatio by default\r\n * @param opts.renderer Can choose 'canvas' or 'svg' to render the chart.\r\n * @param opts.width Use clientWidth of the input `dom` by default.\r\n *        Can be 'auto' (the same as null/undefined)\r\n * @param opts.height Use clientHeight of the input `dom` by default.\r\n *        Can be 'auto' (the same as null/undefined)\r\n * @param opts.locale Specify the locale.\r\n * @param opts.useDirtyRect Enable dirty rectangle rendering or not.\r\n */\n\nexport function init(dom, theme, opts) {\n  var isClient = !(opts && opts.ssr);\n\n  if (isClient) {\n    if (process.env.NODE_ENV !== 'production') {\n      if (!dom) {\n        throw new Error('Initialize failed: invalid dom.');\n      }\n    }\n\n    var existInstance = getInstanceByDom(dom);\n\n    if (existInstance) {\n      if (process.env.NODE_ENV !== 'production') {\n        warn('There is a chart instance already initialized on the dom.');\n      }\n\n      return existInstance;\n    }\n\n    if (process.env.NODE_ENV !== 'production') {\n      if (isDom(dom) && dom.nodeName.toUpperCase() !== 'CANVAS' && (!dom.clientWidth && (!opts || opts.width == null) || !dom.clientHeight && (!opts || opts.height == null))) {\n        warn('Can\\'t get DOM width or height. Please check ' + 'dom.clientWidth and dom.clientHeight. They should not be 0.' + 'For example, you may need to call this in the callback ' + 'of window.onload.');\n      }\n    }\n  }\n\n  var chart = new ECharts(dom, theme, opts);\n  chart.id = 'ec_' + idBase++;\n  instances[chart.id] = chart;\n  isClient && modelUtil.setAttribute(dom, DOM_ATTRIBUTE_KEY, chart.id);\n  enableConnect(chart);\n  lifecycle.trigger('afterinit', chart);\n  return chart;\n}\n/**\r\n * @usage\r\n * (A)\r\n * ```js\r\n * let chart1 = echarts.init(dom1);\r\n * let chart2 = echarts.init(dom2);\r\n * chart1.group = 'xxx';\r\n * chart2.group = 'xxx';\r\n * echarts.connect('xxx');\r\n * ```\r\n * (B)\r\n * ```js\r\n * let chart1 = echarts.init(dom1);\r\n * let chart2 = echarts.init(dom2);\r\n * echarts.connect('xxx', [chart1, chart2]);\r\n * ```\r\n */\n\nexport function connect(groupId) {\n  // Is array of charts\n  if (isArray(groupId)) {\n    var charts = groupId;\n    groupId = null; // If any chart has group\n\n    each(charts, function (chart) {\n      if (chart.group != null) {\n        groupId = chart.group;\n      }\n    });\n    groupId = groupId || 'g_' + groupIdBase++;\n    each(charts, function (chart) {\n      chart.group = groupId;\n    });\n  }\n\n  connectedGroups[groupId] = true;\n  return groupId;\n}\nexport function disconnect(groupId) {\n  connectedGroups[groupId] = false;\n}\n/**\r\n * Alias and backward compatibility\r\n * @deprecated\r\n */\n\nexport var disConnect = disconnect;\n/**\r\n * Dispose a chart instance\r\n */\n\nexport function dispose(chart) {\n  if (isString(chart)) {\n    chart = instances[chart];\n  } else if (!(chart instanceof ECharts)) {\n    // Try to treat as dom\n    chart = getInstanceByDom(chart);\n  }\n\n  if (chart instanceof ECharts && !chart.isDisposed()) {\n    chart.dispose();\n  }\n}\nexport function getInstanceByDom(dom) {\n  return instances[modelUtil.getAttribute(dom, DOM_ATTRIBUTE_KEY)];\n}\nexport function getInstanceById(key) {\n  return instances[key];\n}\n/**\r\n * Register theme\r\n */\n\nexport function registerTheme(name, theme) {\n  themeStorage[name] = theme;\n}\n/**\r\n * Register option preprocessor\r\n */\n\nexport function registerPreprocessor(preprocessorFunc) {\n  if (indexOf(optionPreprocessorFuncs, preprocessorFunc) < 0) {\n    optionPreprocessorFuncs.push(preprocessorFunc);\n  }\n}\nexport function registerProcessor(priority, processor) {\n  normalizeRegister(dataProcessorFuncs, priority, processor, PRIORITY_PROCESSOR_DEFAULT);\n}\n/**\r\n * Register postIniter\r\n * @param {Function} postInitFunc\r\n */\n\nexport function registerPostInit(postInitFunc) {\n  registerUpdateLifecycle('afterinit', postInitFunc);\n}\n/**\r\n * Register postUpdater\r\n * @param {Function} postUpdateFunc\r\n */\n\nexport function registerPostUpdate(postUpdateFunc) {\n  registerUpdateLifecycle('afterupdate', postUpdateFunc);\n}\nexport function registerUpdateLifecycle(name, cb) {\n  lifecycle.on(name, cb);\n}\nexport function registerAction(actionInfo, eventName, action) {\n  if (isFunction(eventName)) {\n    action = eventName;\n    eventName = '';\n  }\n\n  var actionType = isObject(actionInfo) ? actionInfo.type : [actionInfo, actionInfo = {\n    event: eventName\n  }][0]; // Event name is all lowercase\n\n  actionInfo.event = (actionInfo.event || actionType).toLowerCase();\n  eventName = actionInfo.event;\n\n  if (eventActionMap[eventName]) {\n    // Already registered.\n    return;\n  } // Validate action type and event name.\n\n\n  assert(ACTION_REG.test(actionType) && ACTION_REG.test(eventName));\n\n  if (!actions[actionType]) {\n    actions[actionType] = {\n      action: action,\n      actionInfo: actionInfo\n    };\n  }\n\n  eventActionMap[eventName] = actionType;\n}\nexport function registerCoordinateSystem(type, coordSysCreator) {\n  CoordinateSystemManager.register(type, coordSysCreator);\n}\n/**\r\n * Get dimensions of specified coordinate system.\r\n * @param {string} type\r\n * @return {Array.<string|Object>}\r\n */\n\nexport function getCoordinateSystemDimensions(type) {\n  var coordSysCreator = CoordinateSystemManager.get(type);\n\n  if (coordSysCreator) {\n    return coordSysCreator.getDimensionsInfo ? coordSysCreator.getDimensionsInfo() : coordSysCreator.dimensions.slice();\n  }\n}\nexport { registerLocale } from './locale.js';\n\nfunction registerLayout(priority, layoutTask) {\n  normalizeRegister(visualFuncs, priority, layoutTask, PRIORITY_VISUAL_LAYOUT, 'layout');\n}\n\nfunction registerVisual(priority, visualTask) {\n  normalizeRegister(visualFuncs, priority, visualTask, PRIORITY_VISUAL_CHART, 'visual');\n}\n\nexport { registerLayout, registerVisual };\nvar registeredTasks = [];\n\nfunction normalizeRegister(targetList, priority, fn, defaultPriority, visualType) {\n  if (isFunction(priority) || isObject(priority)) {\n    fn = priority;\n    priority = defaultPriority;\n  }\n\n  if (process.env.NODE_ENV !== 'production') {\n    if (isNaN(priority) || priority == null) {\n      throw new Error('Illegal priority');\n    } // Check duplicate\n\n\n    each(targetList, function (wrap) {\n      assert(wrap.__raw !== fn);\n    });\n  } // Already registered\n\n\n  if (indexOf(registeredTasks, fn) >= 0) {\n    return;\n  }\n\n  registeredTasks.push(fn);\n  var stageHandler = Scheduler.wrapStageHandler(fn, visualType);\n  stageHandler.__prio = priority;\n  stageHandler.__raw = fn;\n  targetList.push(stageHandler);\n}\n\nexport function registerLoading(name, loadingFx) {\n  loadingEffects[name] = loadingFx;\n}\n/**\r\n * ZRender need a canvas context to do measureText.\r\n * But in node environment canvas may be created by node-canvas.\r\n * So we need to specify how to create a canvas instead of using document.createElement('canvas')\r\n *\r\n *\r\n * @deprecated use setPlatformAPI({ createCanvas }) instead.\r\n *\r\n * @example\r\n *     let Canvas = require('canvas');\r\n *     let echarts = require('echarts');\r\n *     echarts.setCanvasCreator(function () {\r\n *         // Small size is enough.\r\n *         return new Canvas(32, 32);\r\n *     });\r\n */\n\nexport function setCanvasCreator(creator) {\n  if (process.env.NODE_ENV !== 'production') {\n    deprecateLog('setCanvasCreator is deprecated. Use setPlatformAPI({ createCanvas }) instead.');\n  }\n\n  setPlatformAPI({\n    createCanvas: creator\n  });\n}\n/**\r\n * The parameters and usage: see `geoSourceManager.registerMap`.\r\n * Compatible with previous `echarts.registerMap`.\r\n */\n\nexport function registerMap(mapName, geoJson, specialAreas) {\n  var registerMap = getImpl('registerMap');\n  registerMap && registerMap(mapName, geoJson, specialAreas);\n}\nexport function getMap(mapName) {\n  var getMap = getImpl('getMap');\n  return getMap && getMap(mapName);\n}\nexport var registerTransform = registerExternalTransform;\n/**\r\n * Globa dispatchAction to a specified chart instance.\r\n */\n// export function dispatchAction(payload: { chartId: string } & Payload, opt?: Parameters<ECharts['dispatchAction']>[1]) {\n//     if (!payload || !payload.chartId) {\n//         // Must have chartId to find chart\n//         return;\n//     }\n//     const chart = instances[payload.chartId];\n//     if (chart) {\n//         chart.dispatchAction(payload, opt);\n//     }\n// }\n// Builtin global visual\n\nregisterVisual(PRIORITY_VISUAL_GLOBAL, seriesStyleTask);\nregisterVisual(PRIORITY_VISUAL_CHART_DATA_CUSTOM, dataStyleTask);\nregisterVisual(PRIORITY_VISUAL_CHART_DATA_CUSTOM, dataColorPaletteTask);\nregisterVisual(PRIORITY_VISUAL_GLOBAL, seriesSymbolTask);\nregisterVisual(PRIORITY_VISUAL_CHART_DATA_CUSTOM, dataSymbolTask);\nregisterVisual(PRIORITY_VISUAL_DECAL, decal);\nregisterPreprocessor(backwardCompat);\nregisterProcessor(PRIORITY_PROCESSOR_DATASTACK, dataStack);\nregisterLoading('default', loadingDefault); // Default actions\n\nregisterAction({\n  type: HIGHLIGHT_ACTION_TYPE,\n  event: HIGHLIGHT_ACTION_TYPE,\n  update: HIGHLIGHT_ACTION_TYPE\n}, noop);\nregisterAction({\n  type: DOWNPLAY_ACTION_TYPE,\n  event: DOWNPLAY_ACTION_TYPE,\n  update: DOWNPLAY_ACTION_TYPE\n}, noop);\nregisterAction({\n  type: SELECT_ACTION_TYPE,\n  event: SELECT_ACTION_TYPE,\n  update: SELECT_ACTION_TYPE\n}, noop);\nregisterAction({\n  type: UNSELECT_ACTION_TYPE,\n  event: UNSELECT_ACTION_TYPE,\n  update: UNSELECT_ACTION_TYPE\n}, noop);\nregisterAction({\n  type: TOGGLE_SELECT_ACTION_TYPE,\n  event: TOGGLE_SELECT_ACTION_TYPE,\n  update: TOGGLE_SELECT_ACTION_TYPE\n}, noop); // Default theme\n\nregisterTheme('light', lightTheme);\nregisterTheme('dark', darkTheme); // For backward compatibility, where the namespace `dataTool` will\n// be mounted on `echarts` is the extension `dataTool` is imported.\n\nexport var dataTool = {};","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { createOrUpdatePatternFromDecal } from '../util/decal.js';\nexport default function decalVisual(ecModel, api) {\n  ecModel.eachRawSeries(function (seriesModel) {\n    if (ecModel.isSeriesFiltered(seriesModel)) {\n      return;\n    }\n\n    var data = seriesModel.getData();\n\n    if (data.hasItemVisual()) {\n      data.each(function (idx) {\n        var decal = data.getItemVisual(idx, 'decal');\n\n        if (decal) {\n          var itemStyle = data.ensureUniqueItemVisual(idx, 'style');\n          itemStyle.decal = createOrUpdatePatternFromDecal(decal, api);\n        }\n      });\n    }\n\n    var decal = data.getVisual('decal');\n\n    if (decal) {\n      var style = data.getVisual('style');\n      style.decal = createOrUpdatePatternFromDecal(decal, api);\n    }\n  });\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { registerPreprocessor, registerProcessor, registerPostInit, registerPostUpdate, registerAction, registerCoordinateSystem, registerLayout, registerVisual, registerTransform, registerLoading, registerMap, registerUpdateLifecycle, PRIORITY } from './core/echarts.js';\nimport ComponentView from './view/Component.js';\nimport ChartView from './view/Chart.js';\nimport ComponentModel from './model/Component.js';\nimport SeriesModel from './model/Series.js';\nimport { isFunction, indexOf, isArray, each } from 'zrender/lib/core/util.js';\nimport { registerImpl } from './core/impl.js';\nimport { registerPainter } from 'zrender/lib/zrender.js';\nvar extensions = [];\nvar extensionRegisters = {\n  registerPreprocessor: registerPreprocessor,\n  registerProcessor: registerProcessor,\n  registerPostInit: registerPostInit,\n  registerPostUpdate: registerPostUpdate,\n  registerUpdateLifecycle: registerUpdateLifecycle,\n  registerAction: registerAction,\n  registerCoordinateSystem: registerCoordinateSystem,\n  registerLayout: registerLayout,\n  registerVisual: registerVisual,\n  registerTransform: registerTransform,\n  registerLoading: registerLoading,\n  registerMap: registerMap,\n  registerImpl: registerImpl,\n  PRIORITY: PRIORITY,\n  ComponentModel: ComponentModel,\n  ComponentView: ComponentView,\n  SeriesModel: SeriesModel,\n  ChartView: ChartView,\n  // TODO Use ComponentModel and SeriesModel instead of Constructor\n  registerComponentModel: function (ComponentModelClass) {\n    ComponentModel.registerClass(ComponentModelClass);\n  },\n  registerComponentView: function (ComponentViewClass) {\n    ComponentView.registerClass(ComponentViewClass);\n  },\n  registerSeriesModel: function (SeriesModelClass) {\n    SeriesModel.registerClass(SeriesModelClass);\n  },\n  registerChartView: function (ChartViewClass) {\n    ChartView.registerClass(ChartViewClass);\n  },\n  registerSubTypeDefaulter: function (componentType, defaulter) {\n    ComponentModel.registerSubTypeDefaulter(componentType, defaulter);\n  },\n  registerPainter: function (painterType, PainterCtor) {\n    registerPainter(painterType, PainterCtor);\n  }\n};\nexport function use(ext) {\n  if (isArray(ext)) {\n    // use([ChartLine, ChartBar]);\n    each(ext, function (singleExt) {\n      use(singleExt);\n    });\n    return;\n  }\n\n  if (indexOf(extensions, ext) >= 0) {\n    return;\n  }\n\n  extensions.push(ext);\n\n  if (isFunction(ext)) {\n    ext = {\n      install: ext\n    };\n  }\n\n  ext.install(extensionRegisters);\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nfunction dataIndexMapValueLength(valNumOrArrLengthMoreThan2) {\n  return valNumOrArrLengthMoreThan2 == null ? 0 : valNumOrArrLengthMoreThan2.length || 1;\n}\n\nfunction defaultKeyGetter(item) {\n  return item;\n}\n\nvar DataDiffer =\n/** @class */\nfunction () {\n  /**\r\n   * @param context Can be visited by this.context in callback.\r\n   */\n  function DataDiffer(oldArr, newArr, oldKeyGetter, newKeyGetter, context, // By default: 'oneToOne'.\n  diffMode) {\n    this._old = oldArr;\n    this._new = newArr;\n    this._oldKeyGetter = oldKeyGetter || defaultKeyGetter;\n    this._newKeyGetter = newKeyGetter || defaultKeyGetter; // Visible in callback via `this.context`;\n\n    this.context = context;\n    this._diffModeMultiple = diffMode === 'multiple';\n  }\n  /**\r\n   * Callback function when add a data\r\n   */\n\n\n  DataDiffer.prototype.add = function (func) {\n    this._add = func;\n    return this;\n  };\n  /**\r\n   * Callback function when update a data\r\n   */\n\n\n  DataDiffer.prototype.update = function (func) {\n    this._update = func;\n    return this;\n  };\n  /**\r\n   * Callback function when update a data and only work in `cbMode: 'byKey'`.\r\n   */\n\n\n  DataDiffer.prototype.updateManyToOne = function (func) {\n    this._updateManyToOne = func;\n    return this;\n  };\n  /**\r\n   * Callback function when update a data and only work in `cbMode: 'byKey'`.\r\n   */\n\n\n  DataDiffer.prototype.updateOneToMany = function (func) {\n    this._updateOneToMany = func;\n    return this;\n  };\n  /**\r\n   * Callback function when update a data and only work in `cbMode: 'byKey'`.\r\n   */\n\n\n  DataDiffer.prototype.updateManyToMany = function (func) {\n    this._updateManyToMany = func;\n    return this;\n  };\n  /**\r\n   * Callback function when remove a data\r\n   */\n\n\n  DataDiffer.prototype.remove = function (func) {\n    this._remove = func;\n    return this;\n  };\n\n  DataDiffer.prototype.execute = function () {\n    this[this._diffModeMultiple ? '_executeMultiple' : '_executeOneToOne']();\n  };\n\n  DataDiffer.prototype._executeOneToOne = function () {\n    var oldArr = this._old;\n    var newArr = this._new;\n    var newDataIndexMap = {};\n    var oldDataKeyArr = new Array(oldArr.length);\n    var newDataKeyArr = new Array(newArr.length);\n\n    this._initIndexMap(oldArr, null, oldDataKeyArr, '_oldKeyGetter');\n\n    this._initIndexMap(newArr, newDataIndexMap, newDataKeyArr, '_newKeyGetter');\n\n    for (var i = 0; i < oldArr.length; i++) {\n      var oldKey = oldDataKeyArr[i];\n      var newIdxMapVal = newDataIndexMap[oldKey];\n      var newIdxMapValLen = dataIndexMapValueLength(newIdxMapVal); // idx can never be empty array here. see 'set null' logic below.\n\n      if (newIdxMapValLen > 1) {\n        // Consider there is duplicate key (for example, use dataItem.name as key).\n        // We should make sure every item in newArr and oldArr can be visited.\n        var newIdx = newIdxMapVal.shift();\n\n        if (newIdxMapVal.length === 1) {\n          newDataIndexMap[oldKey] = newIdxMapVal[0];\n        }\n\n        this._update && this._update(newIdx, i);\n      } else if (newIdxMapValLen === 1) {\n        newDataIndexMap[oldKey] = null;\n        this._update && this._update(newIdxMapVal, i);\n      } else {\n        this._remove && this._remove(i);\n      }\n    }\n\n    this._performRestAdd(newDataKeyArr, newDataIndexMap);\n  };\n  /**\r\n   * For example, consider the case:\r\n   * oldData: [o0, o1, o2, o3, o4, o5, o6, o7],\r\n   * newData: [n0, n1, n2, n3, n4, n5, n6, n7, n8],\r\n   * Where:\r\n   *     o0, o1, n0 has key 'a' (many to one)\r\n   *     o5, n4, n5, n6 has key 'b' (one to many)\r\n   *     o2, n1 has key 'c' (one to one)\r\n   *     n2, n3 has key 'd' (add)\r\n   *     o3, o4 has key 'e' (remove)\r\n   *     o6, o7, n7, n8 has key 'f' (many to many, treated as add and remove)\r\n   * Then:\r\n   *     (The order of the following directives are not ensured.)\r\n   *     this._updateManyToOne(n0, [o0, o1]);\r\n   *     this._updateOneToMany([n4, n5, n6], o5);\r\n   *     this._update(n1, o2);\r\n   *     this._remove(o3);\r\n   *     this._remove(o4);\r\n   *     this._remove(o6);\r\n   *     this._remove(o7);\r\n   *     this._add(n2);\r\n   *     this._add(n3);\r\n   *     this._add(n7);\r\n   *     this._add(n8);\r\n   */\n\n\n  DataDiffer.prototype._executeMultiple = function () {\n    var oldArr = this._old;\n    var newArr = this._new;\n    var oldDataIndexMap = {};\n    var newDataIndexMap = {};\n    var oldDataKeyArr = [];\n    var newDataKeyArr = [];\n\n    this._initIndexMap(oldArr, oldDataIndexMap, oldDataKeyArr, '_oldKeyGetter');\n\n    this._initIndexMap(newArr, newDataIndexMap, newDataKeyArr, '_newKeyGetter');\n\n    for (var i = 0; i < oldDataKeyArr.length; i++) {\n      var oldKey = oldDataKeyArr[i];\n      var oldIdxMapVal = oldDataIndexMap[oldKey];\n      var newIdxMapVal = newDataIndexMap[oldKey];\n      var oldIdxMapValLen = dataIndexMapValueLength(oldIdxMapVal);\n      var newIdxMapValLen = dataIndexMapValueLength(newIdxMapVal);\n\n      if (oldIdxMapValLen > 1 && newIdxMapValLen === 1) {\n        this._updateManyToOne && this._updateManyToOne(newIdxMapVal, oldIdxMapVal);\n        newDataIndexMap[oldKey] = null;\n      } else if (oldIdxMapValLen === 1 && newIdxMapValLen > 1) {\n        this._updateOneToMany && this._updateOneToMany(newIdxMapVal, oldIdxMapVal);\n        newDataIndexMap[oldKey] = null;\n      } else if (oldIdxMapValLen === 1 && newIdxMapValLen === 1) {\n        this._update && this._update(newIdxMapVal, oldIdxMapVal);\n        newDataIndexMap[oldKey] = null;\n      } else if (oldIdxMapValLen > 1 && newIdxMapValLen > 1) {\n        this._updateManyToMany && this._updateManyToMany(newIdxMapVal, oldIdxMapVal);\n        newDataIndexMap[oldKey] = null;\n      } else if (oldIdxMapValLen > 1) {\n        for (var i_1 = 0; i_1 < oldIdxMapValLen; i_1++) {\n          this._remove && this._remove(oldIdxMapVal[i_1]);\n        }\n      } else {\n        this._remove && this._remove(oldIdxMapVal);\n      }\n    }\n\n    this._performRestAdd(newDataKeyArr, newDataIndexMap);\n  };\n\n  DataDiffer.prototype._performRestAdd = function (newDataKeyArr, newDataIndexMap) {\n    for (var i = 0; i < newDataKeyArr.length; i++) {\n      var newKey = newDataKeyArr[i];\n      var newIdxMapVal = newDataIndexMap[newKey];\n      var idxMapValLen = dataIndexMapValueLength(newIdxMapVal);\n\n      if (idxMapValLen > 1) {\n        for (var j = 0; j < idxMapValLen; j++) {\n          this._add && this._add(newIdxMapVal[j]);\n        }\n      } else if (idxMapValLen === 1) {\n        this._add && this._add(newIdxMapVal);\n      } // Support both `newDataKeyArr` are duplication removed or not removed.\n\n\n      newDataIndexMap[newKey] = null;\n    }\n  };\n\n  DataDiffer.prototype._initIndexMap = function (arr, // Can be null.\n  map, // In 'byKey', the output `keyArr` is duplication removed.\n  // In 'byIndex', the output `keyArr` is not duplication removed and\n  //     its indices are accurately corresponding to `arr`.\n  keyArr, keyGetterName) {\n    var cbModeMultiple = this._diffModeMultiple;\n\n    for (var i = 0; i < arr.length; i++) {\n      // Add prefix to avoid conflict with Object.prototype.\n      var key = '_ec_' + this[keyGetterName](arr[i], i);\n\n      if (!cbModeMultiple) {\n        keyArr[i] = key;\n      }\n\n      if (!map) {\n        continue;\n      }\n\n      var idxMapVal = map[key];\n      var idxMapValLen = dataIndexMapValueLength(idxMapVal);\n\n      if (idxMapValLen === 0) {\n        // Simple optimize: in most cases, one index has one key,\n        // do not need array.\n        map[key] = i;\n\n        if (cbModeMultiple) {\n          keyArr.push(key);\n        }\n      } else if (idxMapValLen === 1) {\n        map[key] = [idxMapVal, i];\n      } else {\n        idxMapVal.push(i);\n      }\n    }\n  };\n\n  return DataDiffer;\n}();\n\nexport default DataDiffer;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { each, createHashMap, assert, map } from 'zrender/lib/core/util.js';\nimport { VISUAL_DIMENSIONS } from '../../util/types.js';\n\nvar DimensionUserOuput =\n/** @class */\nfunction () {\n  function DimensionUserOuput(encode, dimRequest) {\n    this._encode = encode;\n    this._schema = dimRequest;\n  }\n\n  DimensionUserOuput.prototype.get = function () {\n    return {\n      // Do not generate full dimension name until fist used.\n      fullDimensions: this._getFullDimensionNames(),\n      encode: this._encode\n    };\n  };\n  /**\r\n   * Get all data store dimension names.\r\n   * Theoretically a series data store is defined both by series and used dataset (if any).\r\n   * If some dimensions are omitted for performance reason in `this.dimensions`,\r\n   * the dimension name may not be auto-generated if user does not specify a dimension name.\r\n   * In this case, the dimension name is `null`/`undefined`.\r\n   */\n\n\n  DimensionUserOuput.prototype._getFullDimensionNames = function () {\n    if (!this._cachedDimNames) {\n      this._cachedDimNames = this._schema ? this._schema.makeOutputDimensionNames() : [];\n    }\n\n    return this._cachedDimNames;\n  };\n\n  return DimensionUserOuput;\n}();\n\n;\nexport function summarizeDimensions(data, schema) {\n  var summary = {};\n  var encode = summary.encode = {};\n  var notExtraCoordDimMap = createHashMap();\n  var defaultedLabel = [];\n  var defaultedTooltip = [];\n  var userOutputEncode = {};\n  each(data.dimensions, function (dimName) {\n    var dimItem = data.getDimensionInfo(dimName);\n    var coordDim = dimItem.coordDim;\n\n    if (coordDim) {\n      if (process.env.NODE_ENV !== 'production') {\n        assert(VISUAL_DIMENSIONS.get(coordDim) == null);\n      }\n\n      var coordDimIndex = dimItem.coordDimIndex;\n      getOrCreateEncodeArr(encode, coordDim)[coordDimIndex] = dimName;\n\n      if (!dimItem.isExtraCoord) {\n        notExtraCoordDimMap.set(coordDim, 1); // Use the last coord dim (and label friendly) as default label,\n        // because when dataset is used, it is hard to guess which dimension\n        // can be value dimension. If both show x, y on label is not look good,\n        // and conventionally y axis is focused more.\n\n        if (mayLabelDimType(dimItem.type)) {\n          defaultedLabel[0] = dimName;\n        } // User output encode do not contain generated coords.\n        // And it only has index. User can use index to retrieve value from the raw item array.\n\n\n        getOrCreateEncodeArr(userOutputEncode, coordDim)[coordDimIndex] = data.getDimensionIndex(dimItem.name);\n      }\n\n      if (dimItem.defaultTooltip) {\n        defaultedTooltip.push(dimName);\n      }\n    }\n\n    VISUAL_DIMENSIONS.each(function (v, otherDim) {\n      var encodeArr = getOrCreateEncodeArr(encode, otherDim);\n      var dimIndex = dimItem.otherDims[otherDim];\n\n      if (dimIndex != null && dimIndex !== false) {\n        encodeArr[dimIndex] = dimItem.name;\n      }\n    });\n  });\n  var dataDimsOnCoord = [];\n  var encodeFirstDimNotExtra = {};\n  notExtraCoordDimMap.each(function (v, coordDim) {\n    var dimArr = encode[coordDim];\n    encodeFirstDimNotExtra[coordDim] = dimArr[0]; // Not necessary to remove duplicate, because a data\n    // dim canot on more than one coordDim.\n\n    dataDimsOnCoord = dataDimsOnCoord.concat(dimArr);\n  });\n  summary.dataDimsOnCoord = dataDimsOnCoord;\n  summary.dataDimIndicesOnCoord = map(dataDimsOnCoord, function (dimName) {\n    return data.getDimensionInfo(dimName).storeDimIndex;\n  });\n  summary.encodeFirstDimNotExtra = encodeFirstDimNotExtra;\n  var encodeLabel = encode.label; // FIXME `encode.label` is not recommended, because formatter cannot be set\n  // in this way. Use label.formatter instead. Maybe remove this approach someday.\n\n  if (encodeLabel && encodeLabel.length) {\n    defaultedLabel = encodeLabel.slice();\n  }\n\n  var encodeTooltip = encode.tooltip;\n\n  if (encodeTooltip && encodeTooltip.length) {\n    defaultedTooltip = encodeTooltip.slice();\n  } else if (!defaultedTooltip.length) {\n    defaultedTooltip = defaultedLabel.slice();\n  }\n\n  encode.defaultedLabel = defaultedLabel;\n  encode.defaultedTooltip = defaultedTooltip;\n  summary.userOutput = new DimensionUserOuput(userOutputEncode, schema);\n  return summary;\n}\n\nfunction getOrCreateEncodeArr(encode, dim) {\n  if (!encode.hasOwnProperty(dim)) {\n    encode[dim] = [];\n  }\n\n  return encode[dim];\n} // FIXME:TS should be type `AxisType`\n\n\nexport function getDimensionTypeByAxis(axisType) {\n  return axisType === 'category' ? 'ordinal' : axisType === 'time' ? 'time' : 'float';\n}\n\nfunction mayLabelDimType(dimType) {\n  // In most cases, ordinal and time do not suitable for label.\n  // Ordinal info can be displayed on axis. Time is too long.\n  return !(dimType === 'ordinal' || dimType === 'time');\n} // function findTheLastDimMayLabel(data) {\n//     // Get last value dim\n//     let dimensions = data.dimensions.slice();\n//     let valueType;\n//     let valueDim;\n//     while (dimensions.length && (\n//         valueDim = dimensions.pop(),\n//         valueType = data.getDimensionInfo(valueDim).type,\n//         valueType === 'ordinal' || valueType === 'time'\n//     )) {} // jshint ignore:line\n//     return valueDim;\n// }","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport * as zrUtil from 'zrender/lib/core/util.js';\n\nvar SeriesDimensionDefine =\n/** @class */\nfunction () {\n  /**\r\n   * @param opt All of the fields will be shallow copied.\r\n   */\n  function SeriesDimensionDefine(opt) {\n    /**\r\n     * The format of `otherDims` is:\r\n     * ```js\r\n     * {\r\n     *     tooltip?: number\r\n     *     label?: number\r\n     *     itemName?: number\r\n     *     seriesName?: number\r\n     * }\r\n     * ```\r\n     *\r\n     * A `series.encode` can specified these fields:\r\n     * ```js\r\n     * encode: {\r\n     *     // \"3, 1, 5\" is the index of data dimension.\r\n     *     tooltip: [3, 1, 5],\r\n     *     label: [0, 3],\r\n     *     ...\r\n     * }\r\n     * ```\r\n     * `otherDims` is the parse result of the `series.encode` above, like:\r\n     * ```js\r\n     * // Suppose the index of this data dimension is `3`.\r\n     * this.otherDims = {\r\n     *     // `3` is at the index `0` of the `encode.tooltip`\r\n     *     tooltip: 0,\r\n     *     // `3` is at the index `1` of the `encode.label`\r\n     *     label: 1\r\n     * };\r\n     * ```\r\n     *\r\n     * This prop should never be `null`/`undefined` after initialized.\r\n     */\n    this.otherDims = {};\n\n    if (opt != null) {\n      zrUtil.extend(this, opt);\n    }\n  }\n\n  return SeriesDimensionDefine;\n}();\n\n;\nexport default SeriesDimensionDefine;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { createHashMap, isObject, retrieve2 } from 'zrender/lib/core/util.js';\nimport { makeInner } from '../../util/model.js';\nimport { shouldRetrieveDataByName } from '../Source.js';\nvar inner = makeInner();\nvar dimTypeShort = {\n  float: 'f',\n  int: 'i',\n  ordinal: 'o',\n  number: 'n',\n  time: 't'\n};\n/**\r\n * Represents the dimension requirement of a series.\r\n *\r\n * NOTICE:\r\n * When there are too many dimensions in dataset and many series, only the used dimensions\r\n * (i.e., used by coord sys and declared in `series.encode`) are add to `dimensionDefineList`.\r\n * But users may query data by other unused dimension names.\r\n * In this case, users can only query data if and only if they have defined dimension names\r\n * via ec option, so we provide `getDimensionIndexFromSource`, which only query them from\r\n * `source` dimensions.\r\n */\n\nvar SeriesDataSchema =\n/** @class */\nfunction () {\n  function SeriesDataSchema(opt) {\n    this.dimensions = opt.dimensions;\n    this._dimOmitted = opt.dimensionOmitted;\n    this.source = opt.source;\n    this._fullDimCount = opt.fullDimensionCount;\n\n    this._updateDimOmitted(opt.dimensionOmitted);\n  }\n\n  SeriesDataSchema.prototype.isDimensionOmitted = function () {\n    return this._dimOmitted;\n  };\n\n  SeriesDataSchema.prototype._updateDimOmitted = function (dimensionOmitted) {\n    this._dimOmitted = dimensionOmitted;\n\n    if (!dimensionOmitted) {\n      return;\n    }\n\n    if (!this._dimNameMap) {\n      this._dimNameMap = ensureSourceDimNameMap(this.source);\n    }\n  };\n  /**\r\n   * @caution Can only be used when `dimensionOmitted: true`.\r\n   *\r\n   * Get index by user defined dimension name (i.e., not internal generate name).\r\n   * That is, get index from `dimensionsDefine`.\r\n   * If no `dimensionsDefine`, or no name get, return -1.\r\n   */\n\n\n  SeriesDataSchema.prototype.getSourceDimensionIndex = function (dimName) {\n    return retrieve2(this._dimNameMap.get(dimName), -1);\n  };\n  /**\r\n   * @caution Can only be used when `dimensionOmitted: true`.\r\n   *\r\n   * Notice: may return `null`/`undefined` if user not specify dimension names.\r\n   */\n\n\n  SeriesDataSchema.prototype.getSourceDimension = function (dimIndex) {\n    var dimensionsDefine = this.source.dimensionsDefine;\n\n    if (dimensionsDefine) {\n      return dimensionsDefine[dimIndex];\n    }\n  };\n\n  SeriesDataSchema.prototype.makeStoreSchema = function () {\n    var dimCount = this._fullDimCount;\n    var willRetrieveDataByName = shouldRetrieveDataByName(this.source);\n    var makeHashStrict = !shouldOmitUnusedDimensions(dimCount); // If source don't have dimensions or series don't omit unsed dimensions.\n    // Generate from seriesDimList directly\n\n    var dimHash = '';\n    var dims = [];\n\n    for (var fullDimIdx = 0, seriesDimIdx = 0; fullDimIdx < dimCount; fullDimIdx++) {\n      var property = void 0;\n      var type = void 0;\n      var ordinalMeta = void 0;\n      var seriesDimDef = this.dimensions[seriesDimIdx]; // The list has been sorted by `storeDimIndex` asc.\n\n      if (seriesDimDef && seriesDimDef.storeDimIndex === fullDimIdx) {\n        property = willRetrieveDataByName ? seriesDimDef.name : null;\n        type = seriesDimDef.type;\n        ordinalMeta = seriesDimDef.ordinalMeta;\n        seriesDimIdx++;\n      } else {\n        var sourceDimDef = this.getSourceDimension(fullDimIdx);\n\n        if (sourceDimDef) {\n          property = willRetrieveDataByName ? sourceDimDef.name : null;\n          type = sourceDimDef.type;\n        }\n      }\n\n      dims.push({\n        property: property,\n        type: type,\n        ordinalMeta: ordinalMeta\n      }); // If retrieving data by index,\n      //   use <index, type, ordinalMeta> to determine whether data can be shared.\n      //   (Because in this case there might be no dimension name defined in dataset, but indices always exists).\n      //   (Indices are always 0, 1, 2, ..., so we can ignore them to shorten the hash).\n      // Otherwise if retrieving data by property name (like `data: [{aa: 123, bb: 765}, ...]`),\n      //   use <property, type, ordinalMeta> in hash.\n\n      if (willRetrieveDataByName && property != null // For data stack, we have make sure each series has its own dim on this store.\n      // So we do not add property to hash to make sure they can share this store.\n      && (!seriesDimDef || !seriesDimDef.isCalculationCoord)) {\n        dimHash += makeHashStrict // Use escape character '`' in case that property name contains '$'.\n        ? property.replace(/\\`/g, '`1').replace(/\\$/g, '`2') // For better performance, when there are large dimensions, tolerant this defects that hardly meet.\n        : property;\n      }\n\n      dimHash += '$';\n      dimHash += dimTypeShort[type] || 'f';\n\n      if (ordinalMeta) {\n        dimHash += ordinalMeta.uid;\n      }\n\n      dimHash += '$';\n    } // Source from endpoint(usually series) will be read differently\n    // when seriesLayoutBy or startIndex(which is affected by sourceHeader) are different.\n    // So we use this three props as key.\n\n\n    var source = this.source;\n    var hash = [source.seriesLayoutBy, source.startIndex, dimHash].join('$$');\n    return {\n      dimensions: dims,\n      hash: hash\n    };\n  };\n\n  SeriesDataSchema.prototype.makeOutputDimensionNames = function () {\n    var result = [];\n\n    for (var fullDimIdx = 0, seriesDimIdx = 0; fullDimIdx < this._fullDimCount; fullDimIdx++) {\n      var name_1 = void 0;\n      var seriesDimDef = this.dimensions[seriesDimIdx]; // The list has been sorted by `storeDimIndex` asc.\n\n      if (seriesDimDef && seriesDimDef.storeDimIndex === fullDimIdx) {\n        if (!seriesDimDef.isCalculationCoord) {\n          name_1 = seriesDimDef.name;\n        }\n\n        seriesDimIdx++;\n      } else {\n        var sourceDimDef = this.getSourceDimension(fullDimIdx);\n\n        if (sourceDimDef) {\n          name_1 = sourceDimDef.name;\n        }\n      }\n\n      result.push(name_1);\n    }\n\n    return result;\n  };\n\n  SeriesDataSchema.prototype.appendCalculationDimension = function (dimDef) {\n    this.dimensions.push(dimDef);\n    dimDef.isCalculationCoord = true;\n    this._fullDimCount++; // If append dimension on a data store, consider the store\n    // might be shared by different series, series dimensions not\n    // really map to store dimensions.\n\n    this._updateDimOmitted(true);\n  };\n\n  return SeriesDataSchema;\n}();\n\nexport { SeriesDataSchema };\nexport function isSeriesDataSchema(schema) {\n  return schema instanceof SeriesDataSchema;\n}\nexport function createDimNameMap(dimsDef) {\n  var dataDimNameMap = createHashMap();\n\n  for (var i = 0; i < (dimsDef || []).length; i++) {\n    var dimDefItemRaw = dimsDef[i];\n    var userDimName = isObject(dimDefItemRaw) ? dimDefItemRaw.name : dimDefItemRaw;\n\n    if (userDimName != null && dataDimNameMap.get(userDimName) == null) {\n      dataDimNameMap.set(userDimName, i);\n    }\n  }\n\n  return dataDimNameMap;\n}\nexport function ensureSourceDimNameMap(source) {\n  var innerSource = inner(source);\n  return innerSource.dimNameMap || (innerSource.dimNameMap = createDimNameMap(source.dimensionsDefine));\n}\nexport function shouldOmitUnusedDimensions(dimCount) {\n  return dimCount > 30;\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\n\n/* global Int32Array */\nimport * as zrUtil from 'zrender/lib/core/util.js';\nimport Model from '../model/Model.js';\nimport DataDiffer from './DataDiffer.js';\nimport { DefaultDataProvider } from './helper/dataProvider.js';\nimport { summarizeDimensions } from './helper/dimensionHelper.js';\nimport SeriesDimensionDefine from './SeriesDimensionDefine.js';\nimport { SOURCE_FORMAT_TYPED_ARRAY, SOURCE_FORMAT_ORIGINAL } from '../util/types.js';\nimport { convertOptionIdName, isDataItemOption } from '../util/model.js';\nimport { setCommonECData } from '../util/innerStore.js';\nimport { isSourceInstance } from './Source.js';\nimport DataStore from './DataStore.js';\nimport { isSeriesDataSchema } from './helper/SeriesDataSchema.js';\nvar isObject = zrUtil.isObject;\nvar map = zrUtil.map;\nvar CtorInt32Array = typeof Int32Array === 'undefined' ? Array : Int32Array; // Use prefix to avoid index to be the same as otherIdList[idx],\n// which will cause weird update animation.\n\nvar ID_PREFIX = 'e\\0\\0';\nvar INDEX_NOT_FOUND = -1; // type SeriesDimensionIndex = DimensionIndex;\n\nvar TRANSFERABLE_PROPERTIES = ['hasItemOption', '_nameList', '_idList', '_invertedIndicesMap', '_dimSummary', 'userOutput', '_rawData', '_dimValueGetter', '_nameDimIdx', '_idDimIdx', '_nameRepeatCount'];\nvar CLONE_PROPERTIES = ['_approximateExtent']; // -----------------------------\n// Internal method declarations:\n// -----------------------------\n\nvar prepareInvertedIndex;\nvar getId;\nvar getIdNameFromStore;\nvar normalizeDimensions;\nvar transferProperties;\nvar cloneListForMapAndSample;\nvar makeIdFromName;\n\nvar SeriesData =\n/** @class */\nfunction () {\n  /**\r\n   * @param dimensionsInput.dimensions\r\n   *        For example, ['someDimName', {name: 'someDimName', type: 'someDimType'}, ...].\r\n   *        Dimensions should be concrete names like x, y, z, lng, lat, angle, radius\r\n   */\n  function SeriesData(dimensionsInput, hostModel) {\n    this.type = 'list';\n    this._dimOmitted = false;\n    this._nameList = [];\n    this._idList = []; // Models of data option is stored sparse for optimizing memory cost\n    // Never used yet (not used yet).\n    // private _optionModels: Model[] = [];\n    // Global visual properties after visual coding\n\n    this._visual = {}; // Global layout properties.\n\n    this._layout = {}; // Item visual properties after visual coding\n\n    this._itemVisuals = []; // Item layout properties after layout\n\n    this._itemLayouts = []; // Graphic elements\n\n    this._graphicEls = []; // key: dim, value: extent\n\n    this._approximateExtent = {};\n    this._calculationInfo = {}; // Having detected that there is data item is non primitive type\n    // (in type `OptionDataItemObject`).\n    // Like `data: [ { value: xx, itemStyle: {...} }, ...]`\n    // At present it only happen in `SOURCE_FORMAT_ORIGINAL`.\n\n    this.hasItemOption = false; // Methods that create a new list based on this list should be listed here.\n    // Notice that those method should `RETURN` the new list.\n\n    this.TRANSFERABLE_METHODS = ['cloneShallow', 'downSample', 'lttbDownSample', 'map']; // Methods that change indices of this list should be listed here.\n\n    this.CHANGABLE_METHODS = ['filterSelf', 'selectRange'];\n    this.DOWNSAMPLE_METHODS = ['downSample', 'lttbDownSample'];\n    var dimensions;\n    var assignStoreDimIdx = false;\n\n    if (isSeriesDataSchema(dimensionsInput)) {\n      dimensions = dimensionsInput.dimensions;\n      this._dimOmitted = dimensionsInput.isDimensionOmitted();\n      this._schema = dimensionsInput;\n    } else {\n      assignStoreDimIdx = true;\n      dimensions = dimensionsInput;\n    }\n\n    dimensions = dimensions || ['x', 'y'];\n    var dimensionInfos = {};\n    var dimensionNames = [];\n    var invertedIndicesMap = {};\n    var needsHasOwn = false;\n    var emptyObj = {};\n\n    for (var i = 0; i < dimensions.length; i++) {\n      // Use the original dimensions[i], where other flag props may exists.\n      var dimInfoInput = dimensions[i];\n      var dimensionInfo = zrUtil.isString(dimInfoInput) ? new SeriesDimensionDefine({\n        name: dimInfoInput\n      }) : !(dimInfoInput instanceof SeriesDimensionDefine) ? new SeriesDimensionDefine(dimInfoInput) : dimInfoInput;\n      var dimensionName = dimensionInfo.name;\n      dimensionInfo.type = dimensionInfo.type || 'float';\n\n      if (!dimensionInfo.coordDim) {\n        dimensionInfo.coordDim = dimensionName;\n        dimensionInfo.coordDimIndex = 0;\n      }\n\n      var otherDims = dimensionInfo.otherDims = dimensionInfo.otherDims || {};\n      dimensionNames.push(dimensionName);\n      dimensionInfos[dimensionName] = dimensionInfo;\n\n      if (emptyObj[dimensionName] != null) {\n        needsHasOwn = true;\n      }\n\n      if (dimensionInfo.createInvertedIndices) {\n        invertedIndicesMap[dimensionName] = [];\n      }\n\n      if (otherDims.itemName === 0) {\n        this._nameDimIdx = i;\n      }\n\n      if (otherDims.itemId === 0) {\n        this._idDimIdx = i;\n      }\n\n      if (process.env.NODE_ENV !== 'production') {\n        zrUtil.assert(assignStoreDimIdx || dimensionInfo.storeDimIndex >= 0);\n      }\n\n      if (assignStoreDimIdx) {\n        dimensionInfo.storeDimIndex = i;\n      }\n    }\n\n    this.dimensions = dimensionNames;\n    this._dimInfos = dimensionInfos;\n\n    this._initGetDimensionInfo(needsHasOwn);\n\n    this.hostModel = hostModel;\n    this._invertedIndicesMap = invertedIndicesMap;\n\n    if (this._dimOmitted) {\n      var dimIdxToName_1 = this._dimIdxToName = zrUtil.createHashMap();\n      zrUtil.each(dimensionNames, function (dimName) {\n        dimIdxToName_1.set(dimensionInfos[dimName].storeDimIndex, dimName);\n      });\n    }\n  }\n  /**\r\n   *\r\n   * Get concrete dimension name by dimension name or dimension index.\r\n   * If input a dimension name, do not validate whether the dimension name exits.\r\n   *\r\n   * @caution\r\n   * @param dim Must make sure the dimension is `SeriesDimensionLoose`.\r\n   * Because only those dimensions will have auto-generated dimension names if not\r\n   * have a user-specified name, and other dimensions will get a return of null/undefined.\r\n   *\r\n   * @notice Because of this reason, should better use `getDimensionIndex` instead, for examples:\r\n   * ```js\r\n   * const val = data.getStore().get(data.getDimensionIndex(dim), dataIdx);\r\n   * ```\r\n   *\r\n   * @return Concrete dim name.\r\n   */\n\n\n  SeriesData.prototype.getDimension = function (dim) {\n    var dimIdx = this._recognizeDimIndex(dim);\n\n    if (dimIdx == null) {\n      return dim;\n    }\n\n    dimIdx = dim;\n\n    if (!this._dimOmitted) {\n      return this.dimensions[dimIdx];\n    } // Retrieve from series dimension definition because it probably contains\n    // generated dimension name (like 'x', 'y').\n\n\n    var dimName = this._dimIdxToName.get(dimIdx);\n\n    if (dimName != null) {\n      return dimName;\n    }\n\n    var sourceDimDef = this._schema.getSourceDimension(dimIdx);\n\n    if (sourceDimDef) {\n      return sourceDimDef.name;\n    }\n  };\n  /**\r\n   * Get dimension index in data store. Return -1 if not found.\r\n   * Can be used to index value from getRawValue.\r\n   */\n\n\n  SeriesData.prototype.getDimensionIndex = function (dim) {\n    var dimIdx = this._recognizeDimIndex(dim);\n\n    if (dimIdx != null) {\n      return dimIdx;\n    }\n\n    if (dim == null) {\n      return -1;\n    }\n\n    var dimInfo = this._getDimInfo(dim);\n\n    return dimInfo ? dimInfo.storeDimIndex : this._dimOmitted ? this._schema.getSourceDimensionIndex(dim) : -1;\n  };\n  /**\r\n   * The meanings of the input parameter `dim`:\r\n   *\r\n   * + If dim is a number (e.g., `1`), it means the index of the dimension.\r\n   *   For example, `getDimension(0)` will return 'x' or 'lng' or 'radius'.\r\n   * + If dim is a number-like string (e.g., `\"1\"`):\r\n   *     + If there is the same concrete dim name defined in `series.dimensions` or `dataset.dimensions`,\r\n   *        it means that concrete name.\r\n   *     + If not, it will be converted to a number, which means the index of the dimension.\r\n   *        (why? because of the backward compatibility. We have been tolerating number-like string in\r\n   *        dimension setting, although now it seems that it is not a good idea.)\r\n   *     For example, `visualMap[i].dimension: \"1\"` is the same meaning as `visualMap[i].dimension: 1`,\r\n   *     if no dimension name is defined as `\"1\"`.\r\n   * + If dim is a not-number-like string, it means the concrete dim name.\r\n   *   For example, it can be be default name `\"x\"`, `\"y\"`, `\"z\"`, `\"lng\"`, `\"lat\"`, `\"angle\"`, `\"radius\"`,\r\n   *   or customized in `dimensions` property of option like `\"age\"`.\r\n   *\r\n   * @return recognized `DimensionIndex`. Otherwise return null/undefined (means that dim is `DimensionName`).\r\n   */\n\n\n  SeriesData.prototype._recognizeDimIndex = function (dim) {\n    if (zrUtil.isNumber(dim) // If being a number-like string but not being defined as a dimension name.\n    || dim != null && !isNaN(dim) && !this._getDimInfo(dim) && (!this._dimOmitted || this._schema.getSourceDimensionIndex(dim) < 0)) {\n      return +dim;\n    }\n  };\n\n  SeriesData.prototype._getStoreDimIndex = function (dim) {\n    var dimIdx = this.getDimensionIndex(dim);\n\n    if (process.env.NODE_ENV !== 'production') {\n      if (dimIdx == null) {\n        throw new Error('Unknown dimension ' + dim);\n      }\n    }\n\n    return dimIdx;\n  };\n  /**\r\n   * Get type and calculation info of particular dimension\r\n   * @param dim\r\n   *        Dimension can be concrete names like x, y, z, lng, lat, angle, radius\r\n   *        Or a ordinal number. For example getDimensionInfo(0) will return 'x' or 'lng' or 'radius'\r\n   */\n\n\n  SeriesData.prototype.getDimensionInfo = function (dim) {\n    // Do not clone, because there may be categories in dimInfo.\n    return this._getDimInfo(this.getDimension(dim));\n  };\n\n  SeriesData.prototype._initGetDimensionInfo = function (needsHasOwn) {\n    var dimensionInfos = this._dimInfos;\n    this._getDimInfo = needsHasOwn ? function (dimName) {\n      return dimensionInfos.hasOwnProperty(dimName) ? dimensionInfos[dimName] : undefined;\n    } : function (dimName) {\n      return dimensionInfos[dimName];\n    };\n  };\n  /**\r\n   * concrete dimension name list on coord.\r\n   */\n\n\n  SeriesData.prototype.getDimensionsOnCoord = function () {\n    return this._dimSummary.dataDimsOnCoord.slice();\n  };\n\n  SeriesData.prototype.mapDimension = function (coordDim, idx) {\n    var dimensionsSummary = this._dimSummary;\n\n    if (idx == null) {\n      return dimensionsSummary.encodeFirstDimNotExtra[coordDim];\n    }\n\n    var dims = dimensionsSummary.encode[coordDim];\n    return dims ? dims[idx] : null;\n  };\n\n  SeriesData.prototype.mapDimensionsAll = function (coordDim) {\n    var dimensionsSummary = this._dimSummary;\n    var dims = dimensionsSummary.encode[coordDim];\n    return (dims || []).slice();\n  };\n\n  SeriesData.prototype.getStore = function () {\n    return this._store;\n  };\n  /**\r\n   * Initialize from data\r\n   * @param data source or data or data store.\r\n   * @param nameList The name of a datum is used on data diff and\r\n   *        default label/tooltip.\r\n   *        A name can be specified in encode.itemName,\r\n   *        or dataItem.name (only for series option data),\r\n   *        or provided in nameList from outside.\r\n   */\n\n\n  SeriesData.prototype.initData = function (data, nameList, dimValueGetter) {\n    var _this = this;\n\n    var store;\n\n    if (data instanceof DataStore) {\n      store = data;\n    }\n\n    if (!store) {\n      var dimensions = this.dimensions;\n      var provider = isSourceInstance(data) || zrUtil.isArrayLike(data) ? new DefaultDataProvider(data, dimensions.length) : data;\n      store = new DataStore();\n      var dimensionInfos = map(dimensions, function (dimName) {\n        return {\n          type: _this._dimInfos[dimName].type,\n          property: dimName\n        };\n      });\n      store.initData(provider, dimensionInfos, dimValueGetter);\n    }\n\n    this._store = store; // Reset\n\n    this._nameList = (nameList || []).slice();\n    this._idList = [];\n    this._nameRepeatCount = {};\n\n    this._doInit(0, store.count()); // Cache summary info for fast visit. See \"dimensionHelper\".\n    // Needs to be initialized after store is prepared.\n\n\n    this._dimSummary = summarizeDimensions(this, this._schema);\n    this.userOutput = this._dimSummary.userOutput;\n  };\n  /**\r\n   * Caution: Can be only called on raw data (before `this._indices` created).\r\n   */\n\n\n  SeriesData.prototype.appendData = function (data) {\n    var range = this._store.appendData(data);\n\n    this._doInit(range[0], range[1]);\n  };\n  /**\r\n   * Caution: Can be only called on raw data (before `this._indices` created).\r\n   * This method does not modify `rawData` (`dataProvider`), but only\r\n   * add values to store.\r\n   *\r\n   * The final count will be increased by `Math.max(values.length, names.length)`.\r\n   *\r\n   * @param values That is the SourceType: 'arrayRows', like\r\n   *        [\r\n   *            [12, 33, 44],\r\n   *            [NaN, 43, 1],\r\n   *            ['-', 'asdf', 0]\r\n   *        ]\r\n   *        Each item is exactly corresponding to a dimension.\r\n   */\n\n\n  SeriesData.prototype.appendValues = function (values, names) {\n    var _a = this._store.appendValues(values, names.length),\n        start = _a.start,\n        end = _a.end;\n\n    var shouldMakeIdFromName = this._shouldMakeIdFromName();\n\n    this._updateOrdinalMeta();\n\n    if (names) {\n      for (var idx = start; idx < end; idx++) {\n        var sourceIdx = idx - start;\n        this._nameList[idx] = names[sourceIdx];\n\n        if (shouldMakeIdFromName) {\n          makeIdFromName(this, idx);\n        }\n      }\n    }\n  };\n\n  SeriesData.prototype._updateOrdinalMeta = function () {\n    var store = this._store;\n    var dimensions = this.dimensions;\n\n    for (var i = 0; i < dimensions.length; i++) {\n      var dimInfo = this._dimInfos[dimensions[i]];\n\n      if (dimInfo.ordinalMeta) {\n        store.collectOrdinalMeta(dimInfo.storeDimIndex, dimInfo.ordinalMeta);\n      }\n    }\n  };\n\n  SeriesData.prototype._shouldMakeIdFromName = function () {\n    var provider = this._store.getProvider();\n\n    return this._idDimIdx == null && provider.getSource().sourceFormat !== SOURCE_FORMAT_TYPED_ARRAY && !provider.fillStorage;\n  };\n\n  SeriesData.prototype._doInit = function (start, end) {\n    if (start >= end) {\n      return;\n    }\n\n    var store = this._store;\n    var provider = store.getProvider();\n\n    this._updateOrdinalMeta();\n\n    var nameList = this._nameList;\n    var idList = this._idList;\n    var sourceFormat = provider.getSource().sourceFormat;\n    var isFormatOriginal = sourceFormat === SOURCE_FORMAT_ORIGINAL; // Each data item is value\n    // [1, 2]\n    // 2\n    // Bar chart, line chart which uses category axis\n    // only gives the 'y' value. 'x' value is the indices of category\n    // Use a tempValue to normalize the value to be a (x, y) value\n    // If dataItem is {name: ...} or {id: ...}, it has highest priority.\n    // This kind of ids and names are always stored `_nameList` and `_idList`.\n\n    if (isFormatOriginal && !provider.pure) {\n      var sharedDataItem = [];\n\n      for (var idx = start; idx < end; idx++) {\n        // NOTICE: Try not to write things into dataItem\n        var dataItem = provider.getItem(idx, sharedDataItem);\n\n        if (!this.hasItemOption && isDataItemOption(dataItem)) {\n          this.hasItemOption = true;\n        }\n\n        if (dataItem) {\n          var itemName = dataItem.name;\n\n          if (nameList[idx] == null && itemName != null) {\n            nameList[idx] = convertOptionIdName(itemName, null);\n          }\n\n          var itemId = dataItem.id;\n\n          if (idList[idx] == null && itemId != null) {\n            idList[idx] = convertOptionIdName(itemId, null);\n          }\n        }\n      }\n    }\n\n    if (this._shouldMakeIdFromName()) {\n      for (var idx = start; idx < end; idx++) {\n        makeIdFromName(this, idx);\n      }\n    }\n\n    prepareInvertedIndex(this);\n  };\n  /**\r\n   * PENDING: In fact currently this function is only used to short-circuit\r\n   * the calling of `scale.unionExtentFromData` when data have been filtered by modules\r\n   * like \"dataZoom\". `scale.unionExtentFromData` is used to calculate data extent for series on\r\n   * an axis, but if a \"axis related data filter module\" is used, the extent of the axis have\r\n   * been fixed and no need to calling `scale.unionExtentFromData` actually.\r\n   * But if we add \"custom data filter\" in future, which is not \"axis related\", this method may\r\n   * be still needed.\r\n   *\r\n   * Optimize for the scenario that data is filtered by a given extent.\r\n   * Consider that if data amount is more than hundreds of thousand,\r\n   * extent calculation will cost more than 10ms and the cache will\r\n   * be erased because of the filtering.\r\n   */\n\n\n  SeriesData.prototype.getApproximateExtent = function (dim) {\n    return this._approximateExtent[dim] || this._store.getDataExtent(this._getStoreDimIndex(dim));\n  };\n  /**\r\n   * Calculate extent on a filtered data might be time consuming.\r\n   * Approximate extent is only used for: calculate extent of filtered data outside.\r\n   */\n\n\n  SeriesData.prototype.setApproximateExtent = function (extent, dim) {\n    dim = this.getDimension(dim);\n    this._approximateExtent[dim] = extent.slice();\n  };\n\n  SeriesData.prototype.getCalculationInfo = function (key) {\n    return this._calculationInfo[key];\n  };\n\n  SeriesData.prototype.setCalculationInfo = function (key, value) {\n    isObject(key) ? zrUtil.extend(this._calculationInfo, key) : this._calculationInfo[key] = value;\n  };\n  /**\r\n   * @return Never be null/undefined. `number` will be converted to string. Because:\r\n   * In most cases, name is used in display, where returning a string is more convenient.\r\n   * In other cases, name is used in query (see `indexOfName`), where we can keep the\r\n   * rule that name `2` equals to name `'2'`.\r\n   */\n\n\n  SeriesData.prototype.getName = function (idx) {\n    var rawIndex = this.getRawIndex(idx);\n    var name = this._nameList[rawIndex];\n\n    if (name == null && this._nameDimIdx != null) {\n      name = getIdNameFromStore(this, this._nameDimIdx, rawIndex);\n    }\n\n    if (name == null) {\n      name = '';\n    }\n\n    return name;\n  };\n\n  SeriesData.prototype._getCategory = function (dimIdx, idx) {\n    var ordinal = this._store.get(dimIdx, idx);\n\n    var ordinalMeta = this._store.getOrdinalMeta(dimIdx);\n\n    if (ordinalMeta) {\n      return ordinalMeta.categories[ordinal];\n    }\n\n    return ordinal;\n  };\n  /**\r\n   * @return Never null/undefined. `number` will be converted to string. Because:\r\n   * In all cases having encountered at present, id is used in making diff comparison, which\r\n   * are usually based on hash map. We can keep the rule that the internal id are always string\r\n   * (treat `2` is the same as `'2'`) to make the related logic simple.\r\n   */\n\n\n  SeriesData.prototype.getId = function (idx) {\n    return getId(this, this.getRawIndex(idx));\n  };\n\n  SeriesData.prototype.count = function () {\n    return this._store.count();\n  };\n  /**\r\n   * Get value. Return NaN if idx is out of range.\r\n   *\r\n   * @notice Should better to use `data.getStore().get(dimIndex, dataIdx)` instead.\r\n   */\n\n\n  SeriesData.prototype.get = function (dim, idx) {\n    var store = this._store;\n    var dimInfo = this._dimInfos[dim];\n\n    if (dimInfo) {\n      return store.get(dimInfo.storeDimIndex, idx);\n    }\n  };\n  /**\r\n   * @notice Should better to use `data.getStore().getByRawIndex(dimIndex, dataIdx)` instead.\r\n   */\n\n\n  SeriesData.prototype.getByRawIndex = function (dim, rawIdx) {\n    var store = this._store;\n    var dimInfo = this._dimInfos[dim];\n\n    if (dimInfo) {\n      return store.getByRawIndex(dimInfo.storeDimIndex, rawIdx);\n    }\n  };\n\n  SeriesData.prototype.getIndices = function () {\n    return this._store.getIndices();\n  };\n\n  SeriesData.prototype.getDataExtent = function (dim) {\n    return this._store.getDataExtent(this._getStoreDimIndex(dim));\n  };\n\n  SeriesData.prototype.getSum = function (dim) {\n    return this._store.getSum(this._getStoreDimIndex(dim));\n  };\n\n  SeriesData.prototype.getMedian = function (dim) {\n    return this._store.getMedian(this._getStoreDimIndex(dim));\n  };\n\n  SeriesData.prototype.getValues = function (dimensions, idx) {\n    var _this = this;\n\n    var store = this._store;\n    return zrUtil.isArray(dimensions) ? store.getValues(map(dimensions, function (dim) {\n      return _this._getStoreDimIndex(dim);\n    }), idx) : store.getValues(dimensions);\n  };\n  /**\r\n   * If value is NaN. Including '-'\r\n   * Only check the coord dimensions.\r\n   */\n\n\n  SeriesData.prototype.hasValue = function (idx) {\n    var dataDimIndicesOnCoord = this._dimSummary.dataDimIndicesOnCoord;\n\n    for (var i = 0, len = dataDimIndicesOnCoord.length; i < len; i++) {\n      // Ordinal type originally can be string or number.\n      // But when an ordinal type is used on coord, it can\n      // not be string but only number. So we can also use isNaN.\n      if (isNaN(this._store.get(dataDimIndicesOnCoord[i], idx))) {\n        return false;\n      }\n    }\n\n    return true;\n  };\n  /**\r\n   * Retrieve the index with given name\r\n   */\n\n\n  SeriesData.prototype.indexOfName = function (name) {\n    for (var i = 0, len = this._store.count(); i < len; i++) {\n      if (this.getName(i) === name) {\n        return i;\n      }\n    }\n\n    return -1;\n  };\n\n  SeriesData.prototype.getRawIndex = function (idx) {\n    return this._store.getRawIndex(idx);\n  };\n\n  SeriesData.prototype.indexOfRawIndex = function (rawIndex) {\n    return this._store.indexOfRawIndex(rawIndex);\n  };\n  /**\r\n   * Only support the dimension which inverted index created.\r\n   * Do not support other cases until required.\r\n   * @param dim concrete dim\r\n   * @param value ordinal index\r\n   * @return rawIndex\r\n   */\n\n\n  SeriesData.prototype.rawIndexOf = function (dim, value) {\n    var invertedIndices = dim && this._invertedIndicesMap[dim];\n\n    if (process.env.NODE_ENV !== 'production') {\n      if (!invertedIndices) {\n        throw new Error('Do not supported yet');\n      }\n    }\n\n    var rawIndex = invertedIndices[value];\n\n    if (rawIndex == null || isNaN(rawIndex)) {\n      return INDEX_NOT_FOUND;\n    }\n\n    return rawIndex;\n  };\n  /**\r\n   * Retrieve the index of nearest value\r\n   * @param dim\r\n   * @param value\r\n   * @param [maxDistance=Infinity]\r\n   * @return If and only if multiple indices has\r\n   *         the same value, they are put to the result.\r\n   */\n\n\n  SeriesData.prototype.indicesOfNearest = function (dim, value, maxDistance) {\n    return this._store.indicesOfNearest(this._getStoreDimIndex(dim), value, maxDistance);\n  };\n\n  SeriesData.prototype.each = function (dims, cb, ctx) {\n    'use strict';\n\n    if (zrUtil.isFunction(dims)) {\n      ctx = cb;\n      cb = dims;\n      dims = [];\n    } // ctxCompat just for compat echarts3\n\n\n    var fCtx = ctx || this;\n    var dimIndices = map(normalizeDimensions(dims), this._getStoreDimIndex, this);\n\n    this._store.each(dimIndices, fCtx ? zrUtil.bind(cb, fCtx) : cb);\n  };\n\n  SeriesData.prototype.filterSelf = function (dims, cb, ctx) {\n    'use strict';\n\n    if (zrUtil.isFunction(dims)) {\n      ctx = cb;\n      cb = dims;\n      dims = [];\n    } // ctxCompat just for compat echarts3\n\n\n    var fCtx = ctx || this;\n    var dimIndices = map(normalizeDimensions(dims), this._getStoreDimIndex, this);\n    this._store = this._store.filter(dimIndices, fCtx ? zrUtil.bind(cb, fCtx) : cb);\n    return this;\n  };\n  /**\r\n   * Select data in range. (For optimization of filter)\r\n   * (Manually inline code, support 5 million data filtering in data zoom.)\r\n   */\n\n\n  SeriesData.prototype.selectRange = function (range) {\n    'use strict';\n\n    var _this = this;\n\n    var innerRange = {};\n    var dims = zrUtil.keys(range);\n    var dimIndices = [];\n    zrUtil.each(dims, function (dim) {\n      var dimIdx = _this._getStoreDimIndex(dim);\n\n      innerRange[dimIdx] = range[dim];\n      dimIndices.push(dimIdx);\n    });\n    this._store = this._store.selectRange(innerRange);\n    return this;\n  };\n  /* eslint-enable max-len */\n\n\n  SeriesData.prototype.mapArray = function (dims, cb, ctx) {\n    'use strict';\n\n    if (zrUtil.isFunction(dims)) {\n      ctx = cb;\n      cb = dims;\n      dims = [];\n    } // ctxCompat just for compat echarts3\n\n\n    ctx = ctx || this;\n    var result = [];\n    this.each(dims, function () {\n      result.push(cb && cb.apply(this, arguments));\n    }, ctx);\n    return result;\n  };\n\n  SeriesData.prototype.map = function (dims, cb, ctx, ctxCompat) {\n    'use strict'; // ctxCompat just for compat echarts3\n\n    var fCtx = ctx || ctxCompat || this;\n    var dimIndices = map(normalizeDimensions(dims), this._getStoreDimIndex, this);\n    var list = cloneListForMapAndSample(this);\n    list._store = this._store.map(dimIndices, fCtx ? zrUtil.bind(cb, fCtx) : cb);\n    return list;\n  };\n\n  SeriesData.prototype.modify = function (dims, cb, ctx, ctxCompat) {\n    var _this = this; // ctxCompat just for compat echarts3\n\n\n    var fCtx = ctx || ctxCompat || this;\n\n    if (process.env.NODE_ENV !== 'production') {\n      zrUtil.each(normalizeDimensions(dims), function (dim) {\n        var dimInfo = _this.getDimensionInfo(dim);\n\n        if (!dimInfo.isCalculationCoord) {\n          console.error('Danger: only stack dimension can be modified');\n        }\n      });\n    }\n\n    var dimIndices = map(normalizeDimensions(dims), this._getStoreDimIndex, this); // If do shallow clone here, if there are too many stacked series,\n    // it still cost lots of memory, because `_store.dimensions` are not shared.\n    // We should consider there probably be shallow clone happen in each series\n    // in consequent filter/map.\n\n    this._store.modify(dimIndices, fCtx ? zrUtil.bind(cb, fCtx) : cb);\n  };\n  /**\r\n   * Large data down sampling on given dimension\r\n   * @param sampleIndex Sample index for name and id\r\n   */\n\n\n  SeriesData.prototype.downSample = function (dimension, rate, sampleValue, sampleIndex) {\n    var list = cloneListForMapAndSample(this);\n    list._store = this._store.downSample(this._getStoreDimIndex(dimension), rate, sampleValue, sampleIndex);\n    return list;\n  };\n  /**\r\n   * Large data down sampling using largest-triangle-three-buckets\r\n   * @param {string} valueDimension\r\n   * @param {number} targetCount\r\n   */\n\n\n  SeriesData.prototype.lttbDownSample = function (valueDimension, rate) {\n    var list = cloneListForMapAndSample(this);\n    list._store = this._store.lttbDownSample(this._getStoreDimIndex(valueDimension), rate);\n    return list;\n  };\n\n  SeriesData.prototype.getRawDataItem = function (idx) {\n    return this._store.getRawDataItem(idx);\n  };\n  /**\r\n   * Get model of one data item.\r\n   */\n  // TODO: Type of data item\n\n\n  SeriesData.prototype.getItemModel = function (idx) {\n    var hostModel = this.hostModel;\n    var dataItem = this.getRawDataItem(idx);\n    return new Model(dataItem, hostModel, hostModel && hostModel.ecModel);\n  };\n  /**\r\n   * Create a data differ\r\n   */\n\n\n  SeriesData.prototype.diff = function (otherList) {\n    var thisList = this;\n    return new DataDiffer(otherList ? otherList.getStore().getIndices() : [], this.getStore().getIndices(), function (idx) {\n      return getId(otherList, idx);\n    }, function (idx) {\n      return getId(thisList, idx);\n    });\n  };\n  /**\r\n   * Get visual property.\r\n   */\n\n\n  SeriesData.prototype.getVisual = function (key) {\n    var visual = this._visual;\n    return visual && visual[key];\n  };\n\n  SeriesData.prototype.setVisual = function (kvObj, val) {\n    this._visual = this._visual || {};\n\n    if (isObject(kvObj)) {\n      zrUtil.extend(this._visual, kvObj);\n    } else {\n      this._visual[kvObj] = val;\n    }\n  };\n  /**\r\n   * Get visual property of single data item\r\n   */\n  // eslint-disable-next-line\n\n\n  SeriesData.prototype.getItemVisual = function (idx, key) {\n    var itemVisual = this._itemVisuals[idx];\n    var val = itemVisual && itemVisual[key];\n\n    if (val == null) {\n      // Use global visual property\n      return this.getVisual(key);\n    }\n\n    return val;\n  };\n  /**\r\n   * If exists visual property of single data item\r\n   */\n\n\n  SeriesData.prototype.hasItemVisual = function () {\n    return this._itemVisuals.length > 0;\n  };\n  /**\r\n   * Make sure itemVisual property is unique\r\n   */\n  // TODO: use key to save visual to reduce memory.\n\n\n  SeriesData.prototype.ensureUniqueItemVisual = function (idx, key) {\n    var itemVisuals = this._itemVisuals;\n    var itemVisual = itemVisuals[idx];\n\n    if (!itemVisual) {\n      itemVisual = itemVisuals[idx] = {};\n    }\n\n    var val = itemVisual[key];\n\n    if (val == null) {\n      val = this.getVisual(key); // TODO Performance?\n\n      if (zrUtil.isArray(val)) {\n        val = val.slice();\n      } else if (isObject(val)) {\n        val = zrUtil.extend({}, val);\n      }\n\n      itemVisual[key] = val;\n    }\n\n    return val;\n  }; // eslint-disable-next-line\n\n\n  SeriesData.prototype.setItemVisual = function (idx, key, value) {\n    var itemVisual = this._itemVisuals[idx] || {};\n    this._itemVisuals[idx] = itemVisual;\n\n    if (isObject(key)) {\n      zrUtil.extend(itemVisual, key);\n    } else {\n      itemVisual[key] = value;\n    }\n  };\n  /**\r\n   * Clear itemVisuals and list visual.\r\n   */\n\n\n  SeriesData.prototype.clearAllVisual = function () {\n    this._visual = {};\n    this._itemVisuals = [];\n  };\n\n  SeriesData.prototype.setLayout = function (key, val) {\n    isObject(key) ? zrUtil.extend(this._layout, key) : this._layout[key] = val;\n  };\n  /**\r\n   * Get layout property.\r\n   */\n\n\n  SeriesData.prototype.getLayout = function (key) {\n    return this._layout[key];\n  };\n  /**\r\n   * Get layout of single data item\r\n   */\n\n\n  SeriesData.prototype.getItemLayout = function (idx) {\n    return this._itemLayouts[idx];\n  };\n  /**\r\n   * Set layout of single data item\r\n   */\n\n\n  SeriesData.prototype.setItemLayout = function (idx, layout, merge) {\n    this._itemLayouts[idx] = merge ? zrUtil.extend(this._itemLayouts[idx] || {}, layout) : layout;\n  };\n  /**\r\n   * Clear all layout of single data item\r\n   */\n\n\n  SeriesData.prototype.clearItemLayouts = function () {\n    this._itemLayouts.length = 0;\n  };\n  /**\r\n   * Set graphic element relative to data. It can be set as null\r\n   */\n\n\n  SeriesData.prototype.setItemGraphicEl = function (idx, el) {\n    var seriesIndex = this.hostModel && this.hostModel.seriesIndex;\n    setCommonECData(seriesIndex, this.dataType, idx, el);\n    this._graphicEls[idx] = el;\n  };\n\n  SeriesData.prototype.getItemGraphicEl = function (idx) {\n    return this._graphicEls[idx];\n  };\n\n  SeriesData.prototype.eachItemGraphicEl = function (cb, context) {\n    zrUtil.each(this._graphicEls, function (el, idx) {\n      if (el) {\n        cb && cb.call(context, el, idx);\n      }\n    });\n  };\n  /**\r\n   * Shallow clone a new list except visual and layout properties, and graph elements.\r\n   * New list only change the indices.\r\n   */\n\n\n  SeriesData.prototype.cloneShallow = function (list) {\n    if (!list) {\n      list = new SeriesData(this._schema ? this._schema : map(this.dimensions, this._getDimInfo, this), this.hostModel);\n    }\n\n    transferProperties(list, this);\n    list._store = this._store;\n    return list;\n  };\n  /**\r\n   * Wrap some method to add more feature\r\n   */\n\n\n  SeriesData.prototype.wrapMethod = function (methodName, injectFunction) {\n    var originalMethod = this[methodName];\n\n    if (!zrUtil.isFunction(originalMethod)) {\n      return;\n    }\n\n    this.__wrappedMethods = this.__wrappedMethods || [];\n\n    this.__wrappedMethods.push(methodName);\n\n    this[methodName] = function () {\n      var res = originalMethod.apply(this, arguments);\n      return injectFunction.apply(this, [res].concat(zrUtil.slice(arguments)));\n    };\n  }; // ----------------------------------------------------------\n  // A work around for internal method visiting private member.\n  // ----------------------------------------------------------\n\n\n  SeriesData.internalField = function () {\n    prepareInvertedIndex = function (data) {\n      var invertedIndicesMap = data._invertedIndicesMap;\n      zrUtil.each(invertedIndicesMap, function (invertedIndices, dim) {\n        var dimInfo = data._dimInfos[dim]; // Currently, only dimensions that has ordinalMeta can create inverted indices.\n\n        var ordinalMeta = dimInfo.ordinalMeta;\n        var store = data._store;\n\n        if (ordinalMeta) {\n          invertedIndices = invertedIndicesMap[dim] = new CtorInt32Array(ordinalMeta.categories.length); // The default value of TypedArray is 0. To avoid miss\n          // mapping to 0, we should set it as INDEX_NOT_FOUND.\n\n          for (var i = 0; i < invertedIndices.length; i++) {\n            invertedIndices[i] = INDEX_NOT_FOUND;\n          }\n\n          for (var i = 0; i < store.count(); i++) {\n            // Only support the case that all values are distinct.\n            invertedIndices[store.get(dimInfo.storeDimIndex, i)] = i;\n          }\n        }\n      });\n    };\n\n    getIdNameFromStore = function (data, dimIdx, idx) {\n      return convertOptionIdName(data._getCategory(dimIdx, idx), null);\n    };\n    /**\r\n     * @see the comment of `List['getId']`.\r\n     */\n\n\n    getId = function (data, rawIndex) {\n      var id = data._idList[rawIndex];\n\n      if (id == null && data._idDimIdx != null) {\n        id = getIdNameFromStore(data, data._idDimIdx, rawIndex);\n      }\n\n      if (id == null) {\n        id = ID_PREFIX + rawIndex;\n      }\n\n      return id;\n    };\n\n    normalizeDimensions = function (dimensions) {\n      if (!zrUtil.isArray(dimensions)) {\n        dimensions = dimensions != null ? [dimensions] : [];\n      }\n\n      return dimensions;\n    };\n    /**\r\n     * Data in excludeDimensions is copied, otherwise transferred.\r\n     */\n\n\n    cloneListForMapAndSample = function (original) {\n      var list = new SeriesData(original._schema ? original._schema : map(original.dimensions, original._getDimInfo, original), original.hostModel); // FIXME If needs stackedOn, value may already been stacked\n\n      transferProperties(list, original);\n      return list;\n    };\n\n    transferProperties = function (target, source) {\n      zrUtil.each(TRANSFERABLE_PROPERTIES.concat(source.__wrappedMethods || []), function (propName) {\n        if (source.hasOwnProperty(propName)) {\n          target[propName] = source[propName];\n        }\n      });\n      target.__wrappedMethods = source.__wrappedMethods;\n      zrUtil.each(CLONE_PROPERTIES, function (propName) {\n        target[propName] = zrUtil.clone(source[propName]);\n      });\n      target._calculationInfo = zrUtil.extend({}, source._calculationInfo);\n    };\n\n    makeIdFromName = function (data, idx) {\n      var nameList = data._nameList;\n      var idList = data._idList;\n      var nameDimIdx = data._nameDimIdx;\n      var idDimIdx = data._idDimIdx;\n      var name = nameList[idx];\n      var id = idList[idx];\n\n      if (name == null && nameDimIdx != null) {\n        nameList[idx] = name = getIdNameFromStore(data, nameDimIdx, idx);\n      }\n\n      if (id == null && idDimIdx != null) {\n        idList[idx] = id = getIdNameFromStore(data, idDimIdx, idx);\n      }\n\n      if (id == null && name != null) {\n        var nameRepeatCount = data._nameRepeatCount;\n        var nmCnt = nameRepeatCount[name] = (nameRepeatCount[name] || 0) + 1;\n        id = name;\n\n        if (nmCnt > 1) {\n          id += '__ec__' + nmCnt;\n        }\n\n        idList[idx] = id;\n      }\n    };\n  }();\n\n  return SeriesData;\n}();\n\nexport default SeriesData;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { VISUAL_DIMENSIONS } from '../../util/types.js';\nimport SeriesDimensionDefine from '../SeriesDimensionDefine.js';\nimport { createHashMap, defaults, each, extend, isObject, isString } from 'zrender/lib/core/util.js';\nimport { createSourceFromSeriesDataOption, isSourceInstance } from '../Source.js';\nimport { CtorInt32Array } from '../DataStore.js';\nimport { normalizeToArray } from '../../util/model.js';\nimport { BE_ORDINAL, guessOrdinal } from './sourceHelper.js';\nimport { createDimNameMap, ensureSourceDimNameMap, SeriesDataSchema, shouldOmitUnusedDimensions } from './SeriesDataSchema.js';\n/**\r\n * For outside usage compat (like echarts-gl are using it).\r\n */\n\nexport function createDimensions(source, opt) {\n  return prepareSeriesDataSchema(source, opt).dimensions;\n}\n/**\r\n * This method builds the relationship between:\r\n * + \"what the coord sys or series requires (see `coordDimensions`)\",\r\n * + \"what the user defines (in `encode` and `dimensions`, see `opt.dimensionsDefine` and `opt.encodeDefine`)\"\r\n * + \"what the data source provids (see `source`)\".\r\n *\r\n * Some guess strategy will be adapted if user does not define something.\r\n * If no 'value' dimension specified, the first no-named dimension will be\r\n * named as 'value'.\r\n *\r\n * @return The results are always sorted by `storeDimIndex` asc.\r\n */\n\nexport default function prepareSeriesDataSchema( // TODO: TYPE completeDimensions type\nsource, opt) {\n  if (!isSourceInstance(source)) {\n    source = createSourceFromSeriesDataOption(source);\n  }\n\n  opt = opt || {};\n  var sysDims = opt.coordDimensions || [];\n  var dimsDef = opt.dimensionsDefine || source.dimensionsDefine || [];\n  var coordDimNameMap = createHashMap();\n  var resultList = [];\n  var dimCount = getDimCount(source, sysDims, dimsDef, opt.dimensionsCount); // Try to ignore unused dimensions if sharing a high dimension datastore\n  // 30 is an experience value.\n\n  var omitUnusedDimensions = opt.canOmitUnusedDimensions && shouldOmitUnusedDimensions(dimCount);\n  var isUsingSourceDimensionsDef = dimsDef === source.dimensionsDefine;\n  var dataDimNameMap = isUsingSourceDimensionsDef ? ensureSourceDimNameMap(source) : createDimNameMap(dimsDef);\n  var encodeDef = opt.encodeDefine;\n\n  if (!encodeDef && opt.encodeDefaulter) {\n    encodeDef = opt.encodeDefaulter(source, dimCount);\n  }\n\n  var encodeDefMap = createHashMap(encodeDef);\n  var indicesMap = new CtorInt32Array(dimCount);\n\n  for (var i = 0; i < indicesMap.length; i++) {\n    indicesMap[i] = -1;\n  }\n\n  function getResultItem(dimIdx) {\n    var idx = indicesMap[dimIdx];\n\n    if (idx < 0) {\n      var dimDefItemRaw = dimsDef[dimIdx];\n      var dimDefItem = isObject(dimDefItemRaw) ? dimDefItemRaw : {\n        name: dimDefItemRaw\n      };\n      var resultItem = new SeriesDimensionDefine();\n      var userDimName = dimDefItem.name;\n\n      if (userDimName != null && dataDimNameMap.get(userDimName) != null) {\n        // Only if `series.dimensions` is defined in option\n        // displayName, will be set, and dimension will be displayed vertically in\n        // tooltip by default.\n        resultItem.name = resultItem.displayName = userDimName;\n      }\n\n      dimDefItem.type != null && (resultItem.type = dimDefItem.type);\n      dimDefItem.displayName != null && (resultItem.displayName = dimDefItem.displayName);\n      var newIdx = resultList.length;\n      indicesMap[dimIdx] = newIdx;\n      resultItem.storeDimIndex = dimIdx;\n      resultList.push(resultItem);\n      return resultItem;\n    }\n\n    return resultList[idx];\n  }\n\n  if (!omitUnusedDimensions) {\n    for (var i = 0; i < dimCount; i++) {\n      getResultItem(i);\n    }\n  } // Set `coordDim` and `coordDimIndex` by `encodeDefMap` and normalize `encodeDefMap`.\n\n\n  encodeDefMap.each(function (dataDimsRaw, coordDim) {\n    var dataDims = normalizeToArray(dataDimsRaw).slice(); // Note: It is allowed that `dataDims.length` is `0`, e.g., options is\n    // `{encode: {x: -1, y: 1}}`. Should not filter anything in\n    // this case.\n\n    if (dataDims.length === 1 && !isString(dataDims[0]) && dataDims[0] < 0) {\n      encodeDefMap.set(coordDim, false);\n      return;\n    }\n\n    var validDataDims = encodeDefMap.set(coordDim, []);\n    each(dataDims, function (resultDimIdxOrName, idx) {\n      // The input resultDimIdx can be dim name or index.\n      var resultDimIdx = isString(resultDimIdxOrName) ? dataDimNameMap.get(resultDimIdxOrName) : resultDimIdxOrName;\n\n      if (resultDimIdx != null && resultDimIdx < dimCount) {\n        validDataDims[idx] = resultDimIdx;\n        applyDim(getResultItem(resultDimIdx), coordDim, idx);\n      }\n    });\n  }); // Apply templates and default order from `sysDims`.\n\n  var availDimIdx = 0;\n  each(sysDims, function (sysDimItemRaw) {\n    var coordDim;\n    var sysDimItemDimsDef;\n    var sysDimItemOtherDims;\n    var sysDimItem;\n\n    if (isString(sysDimItemRaw)) {\n      coordDim = sysDimItemRaw;\n      sysDimItem = {};\n    } else {\n      sysDimItem = sysDimItemRaw;\n      coordDim = sysDimItem.name;\n      var ordinalMeta = sysDimItem.ordinalMeta;\n      sysDimItem.ordinalMeta = null;\n      sysDimItem = extend({}, sysDimItem);\n      sysDimItem.ordinalMeta = ordinalMeta; // `coordDimIndex` should not be set directly.\n\n      sysDimItemDimsDef = sysDimItem.dimsDef;\n      sysDimItemOtherDims = sysDimItem.otherDims;\n      sysDimItem.name = sysDimItem.coordDim = sysDimItem.coordDimIndex = sysDimItem.dimsDef = sysDimItem.otherDims = null;\n    }\n\n    var dataDims = encodeDefMap.get(coordDim); // negative resultDimIdx means no need to mapping.\n\n    if (dataDims === false) {\n      return;\n    }\n\n    dataDims = normalizeToArray(dataDims); // dimensions provides default dim sequences.\n\n    if (!dataDims.length) {\n      for (var i = 0; i < (sysDimItemDimsDef && sysDimItemDimsDef.length || 1); i++) {\n        while (availDimIdx < dimCount && getResultItem(availDimIdx).coordDim != null) {\n          availDimIdx++;\n        }\n\n        availDimIdx < dimCount && dataDims.push(availDimIdx++);\n      }\n    } // Apply templates.\n\n\n    each(dataDims, function (resultDimIdx, coordDimIndex) {\n      var resultItem = getResultItem(resultDimIdx); // Coordinate system has a higher priority on dim type than source.\n\n      if (isUsingSourceDimensionsDef && sysDimItem.type != null) {\n        resultItem.type = sysDimItem.type;\n      }\n\n      applyDim(defaults(resultItem, sysDimItem), coordDim, coordDimIndex);\n\n      if (resultItem.name == null && sysDimItemDimsDef) {\n        var sysDimItemDimsDefItem = sysDimItemDimsDef[coordDimIndex];\n        !isObject(sysDimItemDimsDefItem) && (sysDimItemDimsDefItem = {\n          name: sysDimItemDimsDefItem\n        });\n        resultItem.name = resultItem.displayName = sysDimItemDimsDefItem.name;\n        resultItem.defaultTooltip = sysDimItemDimsDefItem.defaultTooltip;\n      } // FIXME refactor, currently only used in case: {otherDims: {tooltip: false}}\n\n\n      sysDimItemOtherDims && defaults(resultItem.otherDims, sysDimItemOtherDims);\n    });\n  });\n\n  function applyDim(resultItem, coordDim, coordDimIndex) {\n    if (VISUAL_DIMENSIONS.get(coordDim) != null) {\n      resultItem.otherDims[coordDim] = coordDimIndex;\n    } else {\n      resultItem.coordDim = coordDim;\n      resultItem.coordDimIndex = coordDimIndex;\n      coordDimNameMap.set(coordDim, true);\n    }\n  } // Make sure the first extra dim is 'value'.\n\n\n  var generateCoord = opt.generateCoord;\n  var generateCoordCount = opt.generateCoordCount;\n  var fromZero = generateCoordCount != null;\n  generateCoordCount = generateCoord ? generateCoordCount || 1 : 0;\n  var extra = generateCoord || 'value';\n\n  function ifNoNameFillWithCoordName(resultItem) {\n    if (resultItem.name == null) {\n      // Duplication will be removed in the next step.\n      resultItem.name = resultItem.coordDim;\n    }\n  } // Set dim `name` and other `coordDim` and other props.\n\n\n  if (!omitUnusedDimensions) {\n    for (var resultDimIdx = 0; resultDimIdx < dimCount; resultDimIdx++) {\n      var resultItem = getResultItem(resultDimIdx);\n      var coordDim = resultItem.coordDim;\n\n      if (coordDim == null) {\n        // TODO no need to generate coordDim for isExtraCoord?\n        resultItem.coordDim = genCoordDimName(extra, coordDimNameMap, fromZero);\n        resultItem.coordDimIndex = 0; // Series specified generateCoord is using out.\n\n        if (!generateCoord || generateCoordCount <= 0) {\n          resultItem.isExtraCoord = true;\n        }\n\n        generateCoordCount--;\n      }\n\n      ifNoNameFillWithCoordName(resultItem);\n\n      if (resultItem.type == null && (guessOrdinal(source, resultDimIdx) === BE_ORDINAL.Must // Consider the case:\n      // {\n      //    dataset: {source: [\n      //        ['2001', 123],\n      //        ['2002', 456],\n      //        ...\n      //        ['The others', 987],\n      //    ]},\n      //    series: {type: 'pie'}\n      // }\n      // The first column should better be treated as a \"ordinal\" although it\n      // might not be detected as an \"ordinal\" by `guessOrdinal`.\n      || resultItem.isExtraCoord && (resultItem.otherDims.itemName != null || resultItem.otherDims.seriesName != null))) {\n        resultItem.type = 'ordinal';\n      }\n    }\n  } else {\n    each(resultList, function (resultItem) {\n      // PENDING: guessOrdinal or let user specify type: 'ordinal' manually?\n      ifNoNameFillWithCoordName(resultItem);\n    }); // Sort dimensions: there are some rule that use the last dim as label,\n    // and for some latter travel process easier.\n\n    resultList.sort(function (item0, item1) {\n      return item0.storeDimIndex - item1.storeDimIndex;\n    });\n  }\n\n  removeDuplication(resultList);\n  return new SeriesDataSchema({\n    source: source,\n    dimensions: resultList,\n    fullDimensionCount: dimCount,\n    dimensionOmitted: omitUnusedDimensions\n  });\n}\n\nfunction removeDuplication(result) {\n  var duplicationMap = createHashMap();\n\n  for (var i = 0; i < result.length; i++) {\n    var dim = result[i];\n    var dimOriginalName = dim.name;\n    var count = duplicationMap.get(dimOriginalName) || 0;\n\n    if (count > 0) {\n      // Starts from 0.\n      dim.name = dimOriginalName + (count - 1);\n    }\n\n    count++;\n    duplicationMap.set(dimOriginalName, count);\n  }\n} // ??? TODO\n// Originally detect dimCount by data[0]. Should we\n// optimize it to only by sysDims and dimensions and encode.\n// So only necessary dims will be initialized.\n// But\n// (1) custom series should be considered. where other dims\n// may be visited.\n// (2) sometimes user need to calculate bubble size or use visualMap\n// on other dimensions besides coordSys needed.\n// So, dims that is not used by system, should be shared in data store?\n\n\nfunction getDimCount(source, sysDims, dimsDef, optDimCount) {\n  // Note that the result dimCount should not small than columns count\n  // of data, otherwise `dataDimNameMap` checking will be incorrect.\n  var dimCount = Math.max(source.dimensionsDetectedCount || 1, sysDims.length, dimsDef.length, optDimCount || 0);\n  each(sysDims, function (sysDimItem) {\n    var sysDimItemDimsDef;\n\n    if (isObject(sysDimItem) && (sysDimItemDimsDef = sysDimItem.dimsDef)) {\n      dimCount = Math.max(dimCount, sysDimItemDimsDef.length);\n    }\n  });\n  return dimCount;\n}\n\nfunction genCoordDimName(name, map, fromZero) {\n  if (fromZero || map.hasKey(name)) {\n    var i = 0;\n\n    while (map.hasKey(name + i)) {\n      i++;\n    }\n\n    name += i;\n  }\n\n  map.set(name, true);\n  return name;\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\n\n/**\r\n * Helper for model references.\r\n * There are many manners to refer axis/coordSys.\r\n */\n// TODO\n// merge relevant logic to this file?\n// check: \"modelHelper\" of tooltip and \"BrushTargetManager\".\nimport { createHashMap, retrieve, each } from 'zrender/lib/core/util.js';\nimport { SINGLE_REFERRING } from '../util/model.js';\n/**\r\n * @class\r\n * For example:\r\n * {\r\n *     coordSysName: 'cartesian2d',\r\n *     coordSysDims: ['x', 'y', ...],\r\n *     axisMap: HashMap({\r\n *         x: xAxisModel,\r\n *         y: yAxisModel\r\n *     }),\r\n *     categoryAxisMap: HashMap({\r\n *         x: xAxisModel,\r\n *         y: undefined\r\n *     }),\r\n *     // The index of the first category axis in `coordSysDims`.\r\n *     // `null/undefined` means no category axis exists.\r\n *     firstCategoryDimIndex: 1,\r\n *     // To replace user specified encode.\r\n * }\r\n */\n\nvar CoordSysInfo =\n/** @class */\nfunction () {\n  function CoordSysInfo(coordSysName) {\n    this.coordSysDims = [];\n    this.axisMap = createHashMap();\n    this.categoryAxisMap = createHashMap();\n    this.coordSysName = coordSysName;\n  }\n\n  return CoordSysInfo;\n}();\n\nexport function getCoordSysInfoBySeries(seriesModel) {\n  var coordSysName = seriesModel.get('coordinateSystem');\n  var result = new CoordSysInfo(coordSysName);\n  var fetch = fetchers[coordSysName];\n\n  if (fetch) {\n    fetch(seriesModel, result, result.axisMap, result.categoryAxisMap);\n    return result;\n  }\n}\nvar fetchers = {\n  cartesian2d: function (seriesModel, result, axisMap, categoryAxisMap) {\n    var xAxisModel = seriesModel.getReferringComponents('xAxis', SINGLE_REFERRING).models[0];\n    var yAxisModel = seriesModel.getReferringComponents('yAxis', SINGLE_REFERRING).models[0];\n\n    if (process.env.NODE_ENV !== 'production') {\n      if (!xAxisModel) {\n        throw new Error('xAxis \"' + retrieve(seriesModel.get('xAxisIndex'), seriesModel.get('xAxisId'), 0) + '\" not found');\n      }\n\n      if (!yAxisModel) {\n        throw new Error('yAxis \"' + retrieve(seriesModel.get('xAxisIndex'), seriesModel.get('yAxisId'), 0) + '\" not found');\n      }\n    }\n\n    result.coordSysDims = ['x', 'y'];\n    axisMap.set('x', xAxisModel);\n    axisMap.set('y', yAxisModel);\n\n    if (isCategory(xAxisModel)) {\n      categoryAxisMap.set('x', xAxisModel);\n      result.firstCategoryDimIndex = 0;\n    }\n\n    if (isCategory(yAxisModel)) {\n      categoryAxisMap.set('y', yAxisModel);\n      result.firstCategoryDimIndex == null && (result.firstCategoryDimIndex = 1);\n    }\n  },\n  singleAxis: function (seriesModel, result, axisMap, categoryAxisMap) {\n    var singleAxisModel = seriesModel.getReferringComponents('singleAxis', SINGLE_REFERRING).models[0];\n\n    if (process.env.NODE_ENV !== 'production') {\n      if (!singleAxisModel) {\n        throw new Error('singleAxis should be specified.');\n      }\n    }\n\n    result.coordSysDims = ['single'];\n    axisMap.set('single', singleAxisModel);\n\n    if (isCategory(singleAxisModel)) {\n      categoryAxisMap.set('single', singleAxisModel);\n      result.firstCategoryDimIndex = 0;\n    }\n  },\n  polar: function (seriesModel, result, axisMap, categoryAxisMap) {\n    var polarModel = seriesModel.getReferringComponents('polar', SINGLE_REFERRING).models[0];\n    var radiusAxisModel = polarModel.findAxisModel('radiusAxis');\n    var angleAxisModel = polarModel.findAxisModel('angleAxis');\n\n    if (process.env.NODE_ENV !== 'production') {\n      if (!angleAxisModel) {\n        throw new Error('angleAxis option not found');\n      }\n\n      if (!radiusAxisModel) {\n        throw new Error('radiusAxis option not found');\n      }\n    }\n\n    result.coordSysDims = ['radius', 'angle'];\n    axisMap.set('radius', radiusAxisModel);\n    axisMap.set('angle', angleAxisModel);\n\n    if (isCategory(radiusAxisModel)) {\n      categoryAxisMap.set('radius', radiusAxisModel);\n      result.firstCategoryDimIndex = 0;\n    }\n\n    if (isCategory(angleAxisModel)) {\n      categoryAxisMap.set('angle', angleAxisModel);\n      result.firstCategoryDimIndex == null && (result.firstCategoryDimIndex = 1);\n    }\n  },\n  geo: function (seriesModel, result, axisMap, categoryAxisMap) {\n    result.coordSysDims = ['lng', 'lat'];\n  },\n  parallel: function (seriesModel, result, axisMap, categoryAxisMap) {\n    var ecModel = seriesModel.ecModel;\n    var parallelModel = ecModel.getComponent('parallel', seriesModel.get('parallelIndex'));\n    var coordSysDims = result.coordSysDims = parallelModel.dimensions.slice();\n    each(parallelModel.parallelAxisIndex, function (axisIndex, index) {\n      var axisModel = ecModel.getComponent('parallelAxis', axisIndex);\n      var axisDim = coordSysDims[index];\n      axisMap.set(axisDim, axisModel);\n\n      if (isCategory(axisModel)) {\n        categoryAxisMap.set(axisDim, axisModel);\n\n        if (result.firstCategoryDimIndex == null) {\n          result.firstCategoryDimIndex = index;\n        }\n      }\n    });\n  }\n};\n\nfunction isCategory(axisModel) {\n  return axisModel.get('type') === 'category';\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { each, isString } from 'zrender/lib/core/util.js';\nimport { isSeriesDataSchema } from './SeriesDataSchema.js';\n/**\r\n * Note that it is too complicated to support 3d stack by value\r\n * (have to create two-dimension inverted index), so in 3d case\r\n * we just support that stacked by index.\r\n *\r\n * @param seriesModel\r\n * @param dimensionsInput The same as the input of <module:echarts/data/SeriesData>.\r\n *        The input will be modified.\r\n * @param opt\r\n * @param opt.stackedCoordDimension Specify a coord dimension if needed.\r\n * @param opt.byIndex=false\r\n * @return calculationInfo\r\n * {\r\n *     stackedDimension: string\r\n *     stackedByDimension: string\r\n *     isStackedByIndex: boolean\r\n *     stackedOverDimension: string\r\n *     stackResultDimension: string\r\n * }\r\n */\n\nexport function enableDataStack(seriesModel, dimensionsInput, opt) {\n  opt = opt || {};\n  var byIndex = opt.byIndex;\n  var stackedCoordDimension = opt.stackedCoordDimension;\n  var dimensionDefineList;\n  var schema;\n  var store;\n\n  if (isLegacyDimensionsInput(dimensionsInput)) {\n    dimensionDefineList = dimensionsInput;\n  } else {\n    schema = dimensionsInput.schema;\n    dimensionDefineList = schema.dimensions;\n    store = dimensionsInput.store;\n  } // Compatibal: when `stack` is set as '', do not stack.\n\n\n  var mayStack = !!(seriesModel && seriesModel.get('stack'));\n  var stackedByDimInfo;\n  var stackedDimInfo;\n  var stackResultDimension;\n  var stackedOverDimension;\n  each(dimensionDefineList, function (dimensionInfo, index) {\n    if (isString(dimensionInfo)) {\n      dimensionDefineList[index] = dimensionInfo = {\n        name: dimensionInfo\n      };\n    }\n\n    if (mayStack && !dimensionInfo.isExtraCoord) {\n      // Find the first ordinal dimension as the stackedByDimInfo.\n      if (!byIndex && !stackedByDimInfo && dimensionInfo.ordinalMeta) {\n        stackedByDimInfo = dimensionInfo;\n      } // Find the first stackable dimension as the stackedDimInfo.\n\n\n      if (!stackedDimInfo && dimensionInfo.type !== 'ordinal' && dimensionInfo.type !== 'time' && (!stackedCoordDimension || stackedCoordDimension === dimensionInfo.coordDim)) {\n        stackedDimInfo = dimensionInfo;\n      }\n    }\n  });\n\n  if (stackedDimInfo && !byIndex && !stackedByDimInfo) {\n    // Compatible with previous design, value axis (time axis) only stack by index.\n    // It may make sense if the user provides elaborately constructed data.\n    byIndex = true;\n  } // Add stack dimension, they can be both calculated by coordinate system in `unionExtent`.\n  // That put stack logic in List is for using conveniently in echarts extensions, but it\n  // might not be a good way.\n\n\n  if (stackedDimInfo) {\n    // Use a weird name that not duplicated with other names.\n    // Also need to use seriesModel.id as postfix because different\n    // series may share same data store. The stack dimension needs to be distinguished.\n    stackResultDimension = '__\\0ecstackresult_' + seriesModel.id;\n    stackedOverDimension = '__\\0ecstackedover_' + seriesModel.id; // Create inverted index to fast query index by value.\n\n    if (stackedByDimInfo) {\n      stackedByDimInfo.createInvertedIndices = true;\n    }\n\n    var stackedDimCoordDim_1 = stackedDimInfo.coordDim;\n    var stackedDimType = stackedDimInfo.type;\n    var stackedDimCoordIndex_1 = 0;\n    each(dimensionDefineList, function (dimensionInfo) {\n      if (dimensionInfo.coordDim === stackedDimCoordDim_1) {\n        stackedDimCoordIndex_1++;\n      }\n    });\n    var stackedOverDimensionDefine = {\n      name: stackResultDimension,\n      coordDim: stackedDimCoordDim_1,\n      coordDimIndex: stackedDimCoordIndex_1,\n      type: stackedDimType,\n      isExtraCoord: true,\n      isCalculationCoord: true,\n      storeDimIndex: dimensionDefineList.length\n    };\n    var stackResultDimensionDefine = {\n      name: stackedOverDimension,\n      // This dimension contains stack base (generally, 0), so do not set it as\n      // `stackedDimCoordDim` to avoid extent calculation, consider log scale.\n      coordDim: stackedOverDimension,\n      coordDimIndex: stackedDimCoordIndex_1 + 1,\n      type: stackedDimType,\n      isExtraCoord: true,\n      isCalculationCoord: true,\n      storeDimIndex: dimensionDefineList.length + 1\n    };\n\n    if (schema) {\n      if (store) {\n        stackedOverDimensionDefine.storeDimIndex = store.ensureCalculationDimension(stackedOverDimension, stackedDimType);\n        stackResultDimensionDefine.storeDimIndex = store.ensureCalculationDimension(stackResultDimension, stackedDimType);\n      }\n\n      schema.appendCalculationDimension(stackedOverDimensionDefine);\n      schema.appendCalculationDimension(stackResultDimensionDefine);\n    } else {\n      dimensionDefineList.push(stackedOverDimensionDefine);\n      dimensionDefineList.push(stackResultDimensionDefine);\n    }\n  }\n\n  return {\n    stackedDimension: stackedDimInfo && stackedDimInfo.name,\n    stackedByDimension: stackedByDimInfo && stackedByDimInfo.name,\n    isStackedByIndex: byIndex,\n    stackedOverDimension: stackedOverDimension,\n    stackResultDimension: stackResultDimension\n  };\n}\n\nfunction isLegacyDimensionsInput(dimensionsInput) {\n  return !isSeriesDataSchema(dimensionsInput.schema);\n}\n\nexport function isDimensionStacked(data, stackedDim) {\n  // Each single series only maps to one pair of axis. So we do not need to\n  // check stackByDim, whatever stacked by a dimension or stacked by index.\n  return !!stackedDim && stackedDim === data.getCalculationInfo('stackedDimension');\n}\nexport function getStackedDimension(data, targetDim) {\n  return isDimensionStacked(data, targetDim) ? data.getCalculationInfo('stackResultDimension') : targetDim;\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport * as zrUtil from 'zrender/lib/core/util.js';\nimport SeriesData from '../../data/SeriesData.js';\nimport prepareSeriesDataSchema from '../../data/helper/createDimensions.js';\nimport { getDimensionTypeByAxis } from '../../data/helper/dimensionHelper.js';\nimport { getDataItemValue } from '../../util/model.js';\nimport CoordinateSystem from '../../core/CoordinateSystem.js';\nimport { getCoordSysInfoBySeries } from '../../model/referHelper.js';\nimport { createSourceFromSeriesDataOption } from '../../data/Source.js';\nimport { enableDataStack } from '../../data/helper/dataStackHelper.js';\nimport { makeSeriesEncodeForAxisCoordSys } from '../../data/helper/sourceHelper.js';\nimport { SOURCE_FORMAT_ORIGINAL } from '../../util/types.js';\n\nfunction getCoordSysDimDefs(seriesModel, coordSysInfo) {\n  var coordSysName = seriesModel.get('coordinateSystem');\n  var registeredCoordSys = CoordinateSystem.get(coordSysName);\n  var coordSysDimDefs;\n\n  if (coordSysInfo && coordSysInfo.coordSysDims) {\n    coordSysDimDefs = zrUtil.map(coordSysInfo.coordSysDims, function (dim) {\n      var dimInfo = {\n        name: dim\n      };\n      var axisModel = coordSysInfo.axisMap.get(dim);\n\n      if (axisModel) {\n        var axisType = axisModel.get('type');\n        dimInfo.type = getDimensionTypeByAxis(axisType);\n      }\n\n      return dimInfo;\n    });\n  }\n\n  if (!coordSysDimDefs) {\n    // Get dimensions from registered coordinate system\n    coordSysDimDefs = registeredCoordSys && (registeredCoordSys.getDimensionsInfo ? registeredCoordSys.getDimensionsInfo() : registeredCoordSys.dimensions.slice()) || ['x', 'y'];\n  }\n\n  return coordSysDimDefs;\n}\n\nfunction injectOrdinalMeta(dimInfoList, createInvertedIndices, coordSysInfo) {\n  var firstCategoryDimIndex;\n  var hasNameEncode;\n  coordSysInfo && zrUtil.each(dimInfoList, function (dimInfo, dimIndex) {\n    var coordDim = dimInfo.coordDim;\n    var categoryAxisModel = coordSysInfo.categoryAxisMap.get(coordDim);\n\n    if (categoryAxisModel) {\n      if (firstCategoryDimIndex == null) {\n        firstCategoryDimIndex = dimIndex;\n      }\n\n      dimInfo.ordinalMeta = categoryAxisModel.getOrdinalMeta();\n\n      if (createInvertedIndices) {\n        dimInfo.createInvertedIndices = true;\n      }\n    }\n\n    if (dimInfo.otherDims.itemName != null) {\n      hasNameEncode = true;\n    }\n  });\n\n  if (!hasNameEncode && firstCategoryDimIndex != null) {\n    dimInfoList[firstCategoryDimIndex].otherDims.itemName = 0;\n  }\n\n  return firstCategoryDimIndex;\n}\n/**\r\n * Caution: there are side effects to `sourceManager` in this method.\r\n * Should better only be called in `Series['getInitialData']`.\r\n */\n\n\nfunction createSeriesData(sourceRaw, seriesModel, opt) {\n  opt = opt || {};\n  var sourceManager = seriesModel.getSourceManager();\n  var source;\n  var isOriginalSource = false;\n\n  if (sourceRaw) {\n    isOriginalSource = true;\n    source = createSourceFromSeriesDataOption(sourceRaw);\n  } else {\n    source = sourceManager.getSource(); // Is series.data. not dataset.\n\n    isOriginalSource = source.sourceFormat === SOURCE_FORMAT_ORIGINAL;\n  }\n\n  var coordSysInfo = getCoordSysInfoBySeries(seriesModel);\n  var coordSysDimDefs = getCoordSysDimDefs(seriesModel, coordSysInfo);\n  var useEncodeDefaulter = opt.useEncodeDefaulter;\n  var encodeDefaulter = zrUtil.isFunction(useEncodeDefaulter) ? useEncodeDefaulter : useEncodeDefaulter ? zrUtil.curry(makeSeriesEncodeForAxisCoordSys, coordSysDimDefs, seriesModel) : null;\n  var createDimensionOptions = {\n    coordDimensions: coordSysDimDefs,\n    generateCoord: opt.generateCoord,\n    encodeDefine: seriesModel.getEncode(),\n    encodeDefaulter: encodeDefaulter,\n    canOmitUnusedDimensions: !isOriginalSource\n  };\n  var schema = prepareSeriesDataSchema(source, createDimensionOptions);\n  var firstCategoryDimIndex = injectOrdinalMeta(schema.dimensions, opt.createInvertedIndices, coordSysInfo);\n  var store = !isOriginalSource ? sourceManager.getSharedDataStore(schema) : null;\n  var stackCalculationInfo = enableDataStack(seriesModel, {\n    schema: schema,\n    store: store\n  });\n  var data = new SeriesData(schema, seriesModel);\n  data.setCalculationInfo(stackCalculationInfo);\n  var dimValueGetter = firstCategoryDimIndex != null && isNeedCompleteOrdinalData(source) ? function (itemOpt, dimName, dataIndex, dimIndex) {\n    // Use dataIndex as ordinal value in categoryAxis\n    return dimIndex === firstCategoryDimIndex ? dataIndex : this.defaultDimValueGetter(itemOpt, dimName, dataIndex, dimIndex);\n  } : null;\n  data.hasItemOption = false;\n  data.initData( // Try to reuse the data store in sourceManager if using dataset.\n  isOriginalSource ? source : store, null, dimValueGetter);\n  return data;\n}\n\nfunction isNeedCompleteOrdinalData(source) {\n  if (source.sourceFormat === SOURCE_FORMAT_ORIGINAL) {\n    var sampleItem = firstDataNotNull(source.data || []);\n    return !zrUtil.isArray(getDataItemValue(sampleItem));\n  }\n}\n\nfunction firstDataNotNull(arr) {\n  var i = 0;\n\n  while (i < arr.length && arr[i] == null) {\n    i++;\n  }\n\n  return arr[i];\n}\n\nexport default createSeriesData;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport * as clazzUtil from '../util/clazz.js';\n\nvar Scale =\n/** @class */\nfunction () {\n  function Scale(setting) {\n    this._setting = setting || {};\n    this._extent = [Infinity, -Infinity];\n  }\n\n  Scale.prototype.getSetting = function (name) {\n    return this._setting[name];\n  };\n  /**\r\n   * Set extent from data\r\n   */\n\n\n  Scale.prototype.unionExtent = function (other) {\n    var extent = this._extent;\n    other[0] < extent[0] && (extent[0] = other[0]);\n    other[1] > extent[1] && (extent[1] = other[1]); // not setExtent because in log axis it may transformed to power\n    // this.setExtent(extent[0], extent[1]);\n  };\n  /**\r\n   * Set extent from data\r\n   */\n\n\n  Scale.prototype.unionExtentFromData = function (data, dim) {\n    this.unionExtent(data.getApproximateExtent(dim));\n  };\n  /**\r\n   * Get extent\r\n   *\r\n   * Extent is always in increase order.\r\n   */\n\n\n  Scale.prototype.getExtent = function () {\n    return this._extent.slice();\n  };\n  /**\r\n   * Set extent\r\n   */\n\n\n  Scale.prototype.setExtent = function (start, end) {\n    var thisExtent = this._extent;\n\n    if (!isNaN(start)) {\n      thisExtent[0] = start;\n    }\n\n    if (!isNaN(end)) {\n      thisExtent[1] = end;\n    }\n  };\n  /**\r\n   * If value is in extent range\r\n   */\n\n\n  Scale.prototype.isInExtentRange = function (value) {\n    return this._extent[0] <= value && this._extent[1] >= value;\n  };\n  /**\r\n   * When axis extent depends on data and no data exists,\r\n   * axis ticks should not be drawn, which is named 'blank'.\r\n   */\n\n\n  Scale.prototype.isBlank = function () {\n    return this._isBlank;\n  };\n  /**\r\n   * When axis extent depends on data and no data exists,\r\n   * axis ticks should not be drawn, which is named 'blank'.\r\n   */\n\n\n  Scale.prototype.setBlank = function (isBlank) {\n    this._isBlank = isBlank;\n  };\n\n  return Scale;\n}();\n\nclazzUtil.enableClassManagement(Scale);\nexport default Scale;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { createHashMap, isObject, map, isString } from 'zrender/lib/core/util.js';\nvar uidBase = 0;\n\nvar OrdinalMeta =\n/** @class */\nfunction () {\n  function OrdinalMeta(opt) {\n    this.categories = opt.categories || [];\n    this._needCollect = opt.needCollect;\n    this._deduplication = opt.deduplication;\n    this.uid = ++uidBase;\n  }\n\n  OrdinalMeta.createByAxisModel = function (axisModel) {\n    var option = axisModel.option;\n    var data = option.data;\n    var categories = data && map(data, getName);\n    return new OrdinalMeta({\n      categories: categories,\n      needCollect: !categories,\n      // deduplication is default in axis.\n      deduplication: option.dedplication !== false\n    });\n  };\n\n  ;\n\n  OrdinalMeta.prototype.getOrdinal = function (category) {\n    // @ts-ignore\n    return this._getOrCreateMap().get(category);\n  };\n  /**\r\n   * @return The ordinal. If not found, return NaN.\r\n   */\n\n\n  OrdinalMeta.prototype.parseAndCollect = function (category) {\n    var index;\n    var needCollect = this._needCollect; // The value of category dim can be the index of the given category set.\n    // This feature is only supported when !needCollect, because we should\n    // consider a common case: a value is 2017, which is a number but is\n    // expected to be tread as a category. This case usually happen in dataset,\n    // where it happent to be no need of the index feature.\n\n    if (!isString(category) && !needCollect) {\n      return category;\n    } // Optimize for the scenario:\n    // category is ['2012-01-01', '2012-01-02', ...], where the input\n    // data has been ensured not duplicate and is large data.\n    // Notice, if a dataset dimension provide categroies, usually echarts\n    // should remove duplication except user tell echarts dont do that\n    // (set axis.deduplication = false), because echarts do not know whether\n    // the values in the category dimension has duplication (consider the\n    // parallel-aqi example)\n\n\n    if (needCollect && !this._deduplication) {\n      index = this.categories.length;\n      this.categories[index] = category;\n      return index;\n    }\n\n    var map = this._getOrCreateMap(); // @ts-ignore\n\n\n    index = map.get(category);\n\n    if (index == null) {\n      if (needCollect) {\n        index = this.categories.length;\n        this.categories[index] = category; // @ts-ignore\n\n        map.set(category, index);\n      } else {\n        index = NaN;\n      }\n    }\n\n    return index;\n  }; // Consider big data, do not create map until needed.\n\n\n  OrdinalMeta.prototype._getOrCreateMap = function () {\n    return this._map || (this._map = createHashMap(this.categories));\n  };\n\n  return OrdinalMeta;\n}();\n\nfunction getName(obj) {\n  if (isObject(obj) && obj.value != null) {\n    return obj.value;\n  } else {\n    return obj + '';\n  }\n}\n\nexport default OrdinalMeta;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { getPrecision, round, nice, quantityExponent } from '../util/number.js';\nexport function isValueNice(val) {\n  var exp10 = Math.pow(10, quantityExponent(Math.abs(val)));\n  var f = Math.abs(val / exp10);\n  return f === 0 || f === 1 || f === 2 || f === 3 || f === 5;\n}\nexport function isIntervalOrLogScale(scale) {\n  return scale.type === 'interval' || scale.type === 'log';\n}\n/**\r\n * @param extent Both extent[0] and extent[1] should be valid number.\r\n *               Should be extent[0] < extent[1].\r\n * @param splitNumber splitNumber should be >= 1.\r\n */\n\nexport function intervalScaleNiceTicks(extent, splitNumber, minInterval, maxInterval) {\n  var result = {};\n  var span = extent[1] - extent[0];\n  var interval = result.interval = nice(span / splitNumber, true);\n\n  if (minInterval != null && interval < minInterval) {\n    interval = result.interval = minInterval;\n  }\n\n  if (maxInterval != null && interval > maxInterval) {\n    interval = result.interval = maxInterval;\n  } // Tow more digital for tick.\n\n\n  var precision = result.intervalPrecision = getIntervalPrecision(interval); // Niced extent inside original extent\n\n  var niceTickExtent = result.niceTickExtent = [round(Math.ceil(extent[0] / interval) * interval, precision), round(Math.floor(extent[1] / interval) * interval, precision)];\n  fixExtent(niceTickExtent, extent);\n  return result;\n}\nexport function increaseInterval(interval) {\n  var exp10 = Math.pow(10, quantityExponent(interval)); // Increase interval\n\n  var f = interval / exp10;\n\n  if (!f) {\n    f = 1;\n  } else if (f === 2) {\n    f = 3;\n  } else if (f === 3) {\n    f = 5;\n  } else {\n    // f is 1 or 5\n    f *= 2;\n  }\n\n  return round(f * exp10);\n}\n/**\r\n * @return interval precision\r\n */\n\nexport function getIntervalPrecision(interval) {\n  // Tow more digital for tick.\n  return getPrecision(interval) + 2;\n}\n\nfunction clamp(niceTickExtent, idx, extent) {\n  niceTickExtent[idx] = Math.max(Math.min(niceTickExtent[idx], extent[1]), extent[0]);\n} // In some cases (e.g., splitNumber is 1), niceTickExtent may be out of extent.\n\n\nexport function fixExtent(niceTickExtent, extent) {\n  !isFinite(niceTickExtent[0]) && (niceTickExtent[0] = extent[0]);\n  !isFinite(niceTickExtent[1]) && (niceTickExtent[1] = extent[1]);\n  clamp(niceTickExtent, 0, extent);\n  clamp(niceTickExtent, 1, extent);\n\n  if (niceTickExtent[0] > niceTickExtent[1]) {\n    niceTickExtent[0] = niceTickExtent[1];\n  }\n}\nexport function contain(val, extent) {\n  return val >= extent[0] && val <= extent[1];\n}\nexport function normalize(val, extent) {\n  if (extent[1] === extent[0]) {\n    return 0.5;\n  }\n\n  return (val - extent[0]) / (extent[1] - extent[0]);\n}\nexport function scale(val, extent) {\n  return val * (extent[1] - extent[0]) + extent[0];\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { __extends } from \"tslib\";\n/**\r\n * Linear continuous scale\r\n * http://en.wikipedia.org/wiki/Level_of_measurement\r\n */\n// FIXME only one data\n\nimport Scale from './Scale.js';\nimport OrdinalMeta from '../data/OrdinalMeta.js';\nimport * as scaleHelper from './helper.js';\nimport { isArray, map, isObject, isString } from 'zrender/lib/core/util.js';\n\nvar OrdinalScale =\n/** @class */\nfunction (_super) {\n  __extends(OrdinalScale, _super);\n\n  function OrdinalScale(setting) {\n    var _this = _super.call(this, setting) || this;\n\n    _this.type = 'ordinal';\n\n    var ordinalMeta = _this.getSetting('ordinalMeta'); // Caution: Should not use instanceof, consider ec-extensions using\n    // import approach to get OrdinalMeta class.\n\n\n    if (!ordinalMeta) {\n      ordinalMeta = new OrdinalMeta({});\n    }\n\n    if (isArray(ordinalMeta)) {\n      ordinalMeta = new OrdinalMeta({\n        categories: map(ordinalMeta, function (item) {\n          return isObject(item) ? item.value : item;\n        })\n      });\n    }\n\n    _this._ordinalMeta = ordinalMeta;\n    _this._extent = _this.getSetting('extent') || [0, ordinalMeta.categories.length - 1];\n    return _this;\n  }\n\n  OrdinalScale.prototype.parse = function (val) {\n    // Caution: Math.round(null) will return `0` rather than `NaN`\n    if (val == null) {\n      return NaN;\n    }\n\n    return isString(val) ? this._ordinalMeta.getOrdinal(val) // val might be float.\n    : Math.round(val);\n  };\n\n  OrdinalScale.prototype.contain = function (rank) {\n    rank = this.parse(rank);\n    return scaleHelper.contain(rank, this._extent) && this._ordinalMeta.categories[rank] != null;\n  };\n  /**\r\n   * Normalize given rank or name to linear [0, 1]\r\n   * @param val raw ordinal number.\r\n   * @return normalized value in [0, 1].\r\n   */\n\n\n  OrdinalScale.prototype.normalize = function (val) {\n    val = this._getTickNumber(this.parse(val));\n    return scaleHelper.normalize(val, this._extent);\n  };\n  /**\r\n   * @param val normalized value in [0, 1].\r\n   * @return raw ordinal number.\r\n   */\n\n\n  OrdinalScale.prototype.scale = function (val) {\n    val = Math.round(scaleHelper.scale(val, this._extent));\n    return this.getRawOrdinalNumber(val);\n  };\n\n  OrdinalScale.prototype.getTicks = function () {\n    var ticks = [];\n    var extent = this._extent;\n    var rank = extent[0];\n\n    while (rank <= extent[1]) {\n      ticks.push({\n        value: rank\n      });\n      rank++;\n    }\n\n    return ticks;\n  };\n\n  OrdinalScale.prototype.getMinorTicks = function (splitNumber) {\n    // Not support.\n    return;\n  };\n  /**\r\n   * @see `Ordinal['_ordinalNumbersByTick']`\r\n   */\n\n\n  OrdinalScale.prototype.setSortInfo = function (info) {\n    if (info == null) {\n      this._ordinalNumbersByTick = this._ticksByOrdinalNumber = null;\n      return;\n    }\n\n    var infoOrdinalNumbers = info.ordinalNumbers;\n    var ordinalsByTick = this._ordinalNumbersByTick = [];\n    var ticksByOrdinal = this._ticksByOrdinalNumber = []; // Unnecessary support negative tick in `realtimeSort`.\n\n    var tickNum = 0;\n    var allCategoryLen = this._ordinalMeta.categories.length;\n\n    for (var len = Math.min(allCategoryLen, infoOrdinalNumbers.length); tickNum < len; ++tickNum) {\n      var ordinalNumber = infoOrdinalNumbers[tickNum];\n      ordinalsByTick[tickNum] = ordinalNumber;\n      ticksByOrdinal[ordinalNumber] = tickNum;\n    } // Handle that `series.data` only covers part of the `axis.category.data`.\n\n\n    var unusedOrdinal = 0;\n\n    for (; tickNum < allCategoryLen; ++tickNum) {\n      while (ticksByOrdinal[unusedOrdinal] != null) {\n        unusedOrdinal++;\n      }\n\n      ;\n      ordinalsByTick.push(unusedOrdinal);\n      ticksByOrdinal[unusedOrdinal] = tickNum;\n    }\n  };\n\n  OrdinalScale.prototype._getTickNumber = function (ordinal) {\n    var ticksByOrdinalNumber = this._ticksByOrdinalNumber; // also support ordinal out of range of `ordinalMeta.categories.length`,\n    // where ordinal numbers are used as tick value directly.\n\n    return ticksByOrdinalNumber && ordinal >= 0 && ordinal < ticksByOrdinalNumber.length ? ticksByOrdinalNumber[ordinal] : ordinal;\n  };\n  /**\r\n   * @usage\r\n   * ```js\r\n   * const ordinalNumber = ordinalScale.getRawOrdinalNumber(tickVal);\r\n   *\r\n   * // case0\r\n   * const rawOrdinalValue = axisModel.getCategories()[ordinalNumber];\r\n   * // case1\r\n   * const rawOrdinalValue = this._ordinalMeta.categories[ordinalNumber];\r\n   * // case2\r\n   * const coord = axis.dataToCoord(ordinalNumber);\r\n   * ```\r\n   *\r\n   * @param {OrdinalNumber} tickNumber index of display\r\n   */\n\n\n  OrdinalScale.prototype.getRawOrdinalNumber = function (tickNumber) {\n    var ordinalNumbersByTick = this._ordinalNumbersByTick; // tickNumber may be out of range, e.g., when axis max is larger than `ordinalMeta.categories.length`.,\n    // where ordinal numbers are used as tick value directly.\n\n    return ordinalNumbersByTick && tickNumber >= 0 && tickNumber < ordinalNumbersByTick.length ? ordinalNumbersByTick[tickNumber] : tickNumber;\n  };\n  /**\r\n   * Get item on tick\r\n   */\n\n\n  OrdinalScale.prototype.getLabel = function (tick) {\n    if (!this.isBlank()) {\n      var ordinalNumber = this.getRawOrdinalNumber(tick.value);\n      var cateogry = this._ordinalMeta.categories[ordinalNumber]; // Note that if no data, ordinalMeta.categories is an empty array.\n      // Return empty if it's not exist.\n\n      return cateogry == null ? '' : cateogry + '';\n    }\n  };\n\n  OrdinalScale.prototype.count = function () {\n    return this._extent[1] - this._extent[0] + 1;\n  };\n\n  OrdinalScale.prototype.unionExtentFromData = function (data, dim) {\n    this.unionExtent(data.getApproximateExtent(dim));\n  };\n  /**\r\n   * @override\r\n   * If value is in extent range\r\n   */\n\n\n  OrdinalScale.prototype.isInExtentRange = function (value) {\n    value = this._getTickNumber(value);\n    return this._extent[0] <= value && this._extent[1] >= value;\n  };\n\n  OrdinalScale.prototype.getOrdinalMeta = function () {\n    return this._ordinalMeta;\n  };\n\n  OrdinalScale.prototype.calcNiceTicks = function () {};\n\n  OrdinalScale.prototype.calcNiceExtent = function () {};\n\n  OrdinalScale.type = 'ordinal';\n  return OrdinalScale;\n}(Scale);\n\nScale.registerClass(OrdinalScale);\nexport default OrdinalScale;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { __extends } from \"tslib\";\nimport * as numberUtil from '../util/number.js';\nimport * as formatUtil from '../util/format.js';\nimport Scale from './Scale.js';\nimport * as helper from './helper.js';\nvar roundNumber = numberUtil.round;\n\nvar IntervalScale =\n/** @class */\nfunction (_super) {\n  __extends(IntervalScale, _super);\n\n  function IntervalScale() {\n    var _this = _super !== null && _super.apply(this, arguments) || this;\n\n    _this.type = 'interval'; // Step is calculated in adjustExtent.\n\n    _this._interval = 0;\n    _this._intervalPrecision = 2;\n    return _this;\n  }\n\n  IntervalScale.prototype.parse = function (val) {\n    return val;\n  };\n\n  IntervalScale.prototype.contain = function (val) {\n    return helper.contain(val, this._extent);\n  };\n\n  IntervalScale.prototype.normalize = function (val) {\n    return helper.normalize(val, this._extent);\n  };\n\n  IntervalScale.prototype.scale = function (val) {\n    return helper.scale(val, this._extent);\n  };\n\n  IntervalScale.prototype.setExtent = function (start, end) {\n    var thisExtent = this._extent; // start,end may be a Number like '25',so...\n\n    if (!isNaN(start)) {\n      thisExtent[0] = parseFloat(start);\n    }\n\n    if (!isNaN(end)) {\n      thisExtent[1] = parseFloat(end);\n    }\n  };\n\n  IntervalScale.prototype.unionExtent = function (other) {\n    var extent = this._extent;\n    other[0] < extent[0] && (extent[0] = other[0]);\n    other[1] > extent[1] && (extent[1] = other[1]); // unionExtent may called by it's sub classes\n\n    this.setExtent(extent[0], extent[1]);\n  };\n\n  IntervalScale.prototype.getInterval = function () {\n    return this._interval;\n  };\n\n  IntervalScale.prototype.setInterval = function (interval) {\n    this._interval = interval; // Dropped auto calculated niceExtent and use user-set extent.\n    // We assume user wants to set both interval, min, max to get a better result.\n\n    this._niceExtent = this._extent.slice();\n    this._intervalPrecision = helper.getIntervalPrecision(interval);\n  };\n  /**\r\n   * @param expandToNicedExtent Whether expand the ticks to niced extent.\r\n   */\n\n\n  IntervalScale.prototype.getTicks = function (expandToNicedExtent) {\n    var interval = this._interval;\n    var extent = this._extent;\n    var niceTickExtent = this._niceExtent;\n    var intervalPrecision = this._intervalPrecision;\n    var ticks = []; // If interval is 0, return [];\n\n    if (!interval) {\n      return ticks;\n    } // Consider this case: using dataZoom toolbox, zoom and zoom.\n\n\n    var safeLimit = 10000;\n\n    if (extent[0] < niceTickExtent[0]) {\n      if (expandToNicedExtent) {\n        ticks.push({\n          value: roundNumber(niceTickExtent[0] - interval, intervalPrecision)\n        });\n      } else {\n        ticks.push({\n          value: extent[0]\n        });\n      }\n    }\n\n    var tick = niceTickExtent[0];\n\n    while (tick <= niceTickExtent[1]) {\n      ticks.push({\n        value: tick\n      }); // Avoid rounding error\n\n      tick = roundNumber(tick + interval, intervalPrecision);\n\n      if (tick === ticks[ticks.length - 1].value) {\n        // Consider out of safe float point, e.g.,\n        // -3711126.9907707 + 2e-10 === -3711126.9907707\n        break;\n      }\n\n      if (ticks.length > safeLimit) {\n        return [];\n      }\n    } // Consider this case: the last item of ticks is smaller\n    // than niceTickExtent[1] and niceTickExtent[1] === extent[1].\n\n\n    var lastNiceTick = ticks.length ? ticks[ticks.length - 1].value : niceTickExtent[1];\n\n    if (extent[1] > lastNiceTick) {\n      if (expandToNicedExtent) {\n        ticks.push({\n          value: roundNumber(lastNiceTick + interval, intervalPrecision)\n        });\n      } else {\n        ticks.push({\n          value: extent[1]\n        });\n      }\n    }\n\n    return ticks;\n  };\n\n  IntervalScale.prototype.getMinorTicks = function (splitNumber) {\n    var ticks = this.getTicks(true);\n    var minorTicks = [];\n    var extent = this.getExtent();\n\n    for (var i = 1; i < ticks.length; i++) {\n      var nextTick = ticks[i];\n      var prevTick = ticks[i - 1];\n      var count = 0;\n      var minorTicksGroup = [];\n      var interval = nextTick.value - prevTick.value;\n      var minorInterval = interval / splitNumber;\n\n      while (count < splitNumber - 1) {\n        var minorTick = roundNumber(prevTick.value + (count + 1) * minorInterval); // For the first and last interval. The count may be less than splitNumber.\n\n        if (minorTick > extent[0] && minorTick < extent[1]) {\n          minorTicksGroup.push(minorTick);\n        }\n\n        count++;\n      }\n\n      minorTicks.push(minorTicksGroup);\n    }\n\n    return minorTicks;\n  };\n  /**\r\n   * @param opt.precision If 'auto', use nice presision.\r\n   * @param opt.pad returns 1.50 but not 1.5 if precision is 2.\r\n   */\n\n\n  IntervalScale.prototype.getLabel = function (data, opt) {\n    if (data == null) {\n      return '';\n    }\n\n    var precision = opt && opt.precision;\n\n    if (precision == null) {\n      precision = numberUtil.getPrecision(data.value) || 0;\n    } else if (precision === 'auto') {\n      // Should be more precise then tick.\n      precision = this._intervalPrecision;\n    } // (1) If `precision` is set, 12.005 should be display as '12.00500'.\n    // (2) Use roundNumber (toFixed) to avoid scientific notation like '3.5e-7'.\n\n\n    var dataNum = roundNumber(data.value, precision, true);\n    return formatUtil.addCommas(dataNum);\n  };\n  /**\r\n   * @param splitNumber By default `5`.\r\n   */\n\n\n  IntervalScale.prototype.calcNiceTicks = function (splitNumber, minInterval, maxInterval) {\n    splitNumber = splitNumber || 5;\n    var extent = this._extent;\n    var span = extent[1] - extent[0];\n\n    if (!isFinite(span)) {\n      return;\n    } // User may set axis min 0 and data are all negative\n    // FIXME If it needs to reverse ?\n\n\n    if (span < 0) {\n      span = -span;\n      extent.reverse();\n    }\n\n    var result = helper.intervalScaleNiceTicks(extent, splitNumber, minInterval, maxInterval);\n    this._intervalPrecision = result.intervalPrecision;\n    this._interval = result.interval;\n    this._niceExtent = result.niceTickExtent;\n  };\n\n  IntervalScale.prototype.calcNiceExtent = function (opt) {\n    var extent = this._extent; // If extent start and end are same, expand them\n\n    if (extent[0] === extent[1]) {\n      if (extent[0] !== 0) {\n        // Expand extent\n        // Note that extents can be both negative. See #13154\n        var expandSize = Math.abs(extent[0]); // In the fowllowing case\n        //      Axis has been fixed max 100\n        //      Plus data are all 100 and axis extent are [100, 100].\n        // Extend to the both side will cause expanded max is larger than fixed max.\n        // So only expand to the smaller side.\n\n        if (!opt.fixMax) {\n          extent[1] += expandSize / 2;\n          extent[0] -= expandSize / 2;\n        } else {\n          extent[0] -= expandSize / 2;\n        }\n      } else {\n        extent[1] = 1;\n      }\n    }\n\n    var span = extent[1] - extent[0]; // If there are no data and extent are [Infinity, -Infinity]\n\n    if (!isFinite(span)) {\n      extent[0] = 0;\n      extent[1] = 1;\n    }\n\n    this.calcNiceTicks(opt.splitNumber, opt.minInterval, opt.maxInterval); // let extent = this._extent;\n\n    var interval = this._interval;\n\n    if (!opt.fixMin) {\n      extent[0] = roundNumber(Math.floor(extent[0] / interval) * interval);\n    }\n\n    if (!opt.fixMax) {\n      extent[1] = roundNumber(Math.ceil(extent[1] / interval) * interval);\n    }\n  };\n\n  IntervalScale.prototype.setNiceExtent = function (min, max) {\n    this._niceExtent = [min, max];\n  };\n\n  IntervalScale.type = 'interval';\n  return IntervalScale;\n}(Scale);\n\nScale.registerClass(IntervalScale);\nexport default IntervalScale;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { isArray } from 'zrender/lib/core/util.js';\n/* global Float32Array */\n\nvar supportFloat32Array = typeof Float32Array !== 'undefined';\nvar Float32ArrayCtor = !supportFloat32Array ? Array : Float32Array;\nexport function createFloat32Array(arg) {\n  if (isArray(arg)) {\n    // Return self directly if don't support TypedArray.\n    return supportFloat32Array ? new Float32Array(arg) : arg;\n  } // Else is number\n\n\n  return new Float32ArrayCtor(arg);\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { each, defaults, keys } from 'zrender/lib/core/util.js';\nimport { parsePercent } from '../util/number.js';\nimport { isDimensionStacked } from '../data/helper/dataStackHelper.js';\nimport createRenderPlanner from '../chart/helper/createRenderPlanner.js';\nimport { createFloat32Array } from '../util/vendor.js';\nvar STACK_PREFIX = '__ec_stack_';\n\nfunction getSeriesStackId(seriesModel) {\n  return seriesModel.get('stack') || STACK_PREFIX + seriesModel.seriesIndex;\n}\n\nfunction getAxisKey(axis) {\n  return axis.dim + axis.index;\n}\n/**\r\n * @return {Object} {width, offset, offsetCenter} If axis.type is not 'category', return undefined.\r\n */\n\n\nexport function getLayoutOnAxis(opt) {\n  var params = [];\n  var baseAxis = opt.axis;\n  var axisKey = 'axis0';\n\n  if (baseAxis.type !== 'category') {\n    return;\n  }\n\n  var bandWidth = baseAxis.getBandWidth();\n\n  for (var i = 0; i < opt.count || 0; i++) {\n    params.push(defaults({\n      bandWidth: bandWidth,\n      axisKey: axisKey,\n      stackId: STACK_PREFIX + i\n    }, opt));\n  }\n\n  var widthAndOffsets = doCalBarWidthAndOffset(params);\n  var result = [];\n\n  for (var i = 0; i < opt.count; i++) {\n    var item = widthAndOffsets[axisKey][STACK_PREFIX + i];\n    item.offsetCenter = item.offset + item.width / 2;\n    result.push(item);\n  }\n\n  return result;\n}\nexport function prepareLayoutBarSeries(seriesType, ecModel) {\n  var seriesModels = [];\n  ecModel.eachSeriesByType(seriesType, function (seriesModel) {\n    // Check series coordinate, do layout for cartesian2d only\n    if (isOnCartesian(seriesModel)) {\n      seriesModels.push(seriesModel);\n    }\n  });\n  return seriesModels;\n}\n/**\r\n * Map from (baseAxis.dim + '_' + baseAxis.index) to min gap of two adjacent\r\n * values.\r\n * This works for time axes, value axes, and log axes.\r\n * For a single time axis, return value is in the form like\r\n * {'x_0': [1000000]}.\r\n * The value of 1000000 is in milliseconds.\r\n */\n\nfunction getValueAxesMinGaps(barSeries) {\n  /**\r\n   * Map from axis.index to values.\r\n   * For a single time axis, axisValues is in the form like\r\n   * {'x_0': [1495555200000, 1495641600000, 1495728000000]}.\r\n   * Items in axisValues[x], e.g. 1495555200000, are time values of all\r\n   * series.\r\n   */\n  var axisValues = {};\n  each(barSeries, function (seriesModel) {\n    var cartesian = seriesModel.coordinateSystem;\n    var baseAxis = cartesian.getBaseAxis();\n\n    if (baseAxis.type !== 'time' && baseAxis.type !== 'value') {\n      return;\n    }\n\n    var data = seriesModel.getData();\n    var key = baseAxis.dim + '_' + baseAxis.index;\n    var dimIdx = data.getDimensionIndex(data.mapDimension(baseAxis.dim));\n    var store = data.getStore();\n\n    for (var i = 0, cnt = store.count(); i < cnt; ++i) {\n      var value = store.get(dimIdx, i);\n\n      if (!axisValues[key]) {\n        // No previous data for the axis\n        axisValues[key] = [value];\n      } else {\n        // No value in previous series\n        axisValues[key].push(value);\n      } // Ignore duplicated time values in the same axis\n\n    }\n  });\n  var axisMinGaps = {};\n\n  for (var key in axisValues) {\n    if (axisValues.hasOwnProperty(key)) {\n      var valuesInAxis = axisValues[key];\n\n      if (valuesInAxis) {\n        // Sort axis values into ascending order to calculate gaps\n        valuesInAxis.sort(function (a, b) {\n          return a - b;\n        });\n        var min = null;\n\n        for (var j = 1; j < valuesInAxis.length; ++j) {\n          var delta = valuesInAxis[j] - valuesInAxis[j - 1];\n\n          if (delta > 0) {\n            // Ignore 0 delta because they are of the same axis value\n            min = min === null ? delta : Math.min(min, delta);\n          }\n        } // Set to null if only have one data\n\n\n        axisMinGaps[key] = min;\n      }\n    }\n  }\n\n  return axisMinGaps;\n}\n\nexport function makeColumnLayout(barSeries) {\n  var axisMinGaps = getValueAxesMinGaps(barSeries);\n  var seriesInfoList = [];\n  each(barSeries, function (seriesModel) {\n    var cartesian = seriesModel.coordinateSystem;\n    var baseAxis = cartesian.getBaseAxis();\n    var axisExtent = baseAxis.getExtent();\n    var bandWidth;\n\n    if (baseAxis.type === 'category') {\n      bandWidth = baseAxis.getBandWidth();\n    } else if (baseAxis.type === 'value' || baseAxis.type === 'time') {\n      var key = baseAxis.dim + '_' + baseAxis.index;\n      var minGap = axisMinGaps[key];\n      var extentSpan = Math.abs(axisExtent[1] - axisExtent[0]);\n      var scale = baseAxis.scale.getExtent();\n      var scaleSpan = Math.abs(scale[1] - scale[0]);\n      bandWidth = minGap ? extentSpan / scaleSpan * minGap : extentSpan; // When there is only one data value\n    } else {\n      var data = seriesModel.getData();\n      bandWidth = Math.abs(axisExtent[1] - axisExtent[0]) / data.count();\n    }\n\n    var barWidth = parsePercent(seriesModel.get('barWidth'), bandWidth);\n    var barMaxWidth = parsePercent(seriesModel.get('barMaxWidth'), bandWidth);\n    var barMinWidth = parsePercent( // barMinWidth by default is 0.5 / 1 in cartesian. Because in value axis,\n    // the auto-calculated bar width might be less than 0.5 / 1.\n    seriesModel.get('barMinWidth') || (isInLargeMode(seriesModel) ? 0.5 : 1), bandWidth);\n    var barGap = seriesModel.get('barGap');\n    var barCategoryGap = seriesModel.get('barCategoryGap');\n    seriesInfoList.push({\n      bandWidth: bandWidth,\n      barWidth: barWidth,\n      barMaxWidth: barMaxWidth,\n      barMinWidth: barMinWidth,\n      barGap: barGap,\n      barCategoryGap: barCategoryGap,\n      axisKey: getAxisKey(baseAxis),\n      stackId: getSeriesStackId(seriesModel)\n    });\n  });\n  return doCalBarWidthAndOffset(seriesInfoList);\n}\n\nfunction doCalBarWidthAndOffset(seriesInfoList) {\n  // Columns info on each category axis. Key is cartesian name\n  var columnsMap = {};\n  each(seriesInfoList, function (seriesInfo, idx) {\n    var axisKey = seriesInfo.axisKey;\n    var bandWidth = seriesInfo.bandWidth;\n    var columnsOnAxis = columnsMap[axisKey] || {\n      bandWidth: bandWidth,\n      remainedWidth: bandWidth,\n      autoWidthCount: 0,\n      categoryGap: null,\n      gap: '20%',\n      stacks: {}\n    };\n    var stacks = columnsOnAxis.stacks;\n    columnsMap[axisKey] = columnsOnAxis;\n    var stackId = seriesInfo.stackId;\n\n    if (!stacks[stackId]) {\n      columnsOnAxis.autoWidthCount++;\n    }\n\n    stacks[stackId] = stacks[stackId] || {\n      width: 0,\n      maxWidth: 0\n    }; // Caution: In a single coordinate system, these barGrid attributes\n    // will be shared by series. Consider that they have default values,\n    // only the attributes set on the last series will work.\n    // Do not change this fact unless there will be a break change.\n\n    var barWidth = seriesInfo.barWidth;\n\n    if (barWidth && !stacks[stackId].width) {\n      // See #6312, do not restrict width.\n      stacks[stackId].width = barWidth;\n      barWidth = Math.min(columnsOnAxis.remainedWidth, barWidth);\n      columnsOnAxis.remainedWidth -= barWidth;\n    }\n\n    var barMaxWidth = seriesInfo.barMaxWidth;\n    barMaxWidth && (stacks[stackId].maxWidth = barMaxWidth);\n    var barMinWidth = seriesInfo.barMinWidth;\n    barMinWidth && (stacks[stackId].minWidth = barMinWidth);\n    var barGap = seriesInfo.barGap;\n    barGap != null && (columnsOnAxis.gap = barGap);\n    var barCategoryGap = seriesInfo.barCategoryGap;\n    barCategoryGap != null && (columnsOnAxis.categoryGap = barCategoryGap);\n  });\n  var result = {};\n  each(columnsMap, function (columnsOnAxis, coordSysName) {\n    result[coordSysName] = {};\n    var stacks = columnsOnAxis.stacks;\n    var bandWidth = columnsOnAxis.bandWidth;\n    var categoryGapPercent = columnsOnAxis.categoryGap;\n\n    if (categoryGapPercent == null) {\n      var columnCount = keys(stacks).length; // More columns in one group\n      // the spaces between group is smaller. Or the column will be too thin.\n\n      categoryGapPercent = Math.max(35 - columnCount * 4, 15) + '%';\n    }\n\n    var categoryGap = parsePercent(categoryGapPercent, bandWidth);\n    var barGapPercent = parsePercent(columnsOnAxis.gap, 1);\n    var remainedWidth = columnsOnAxis.remainedWidth;\n    var autoWidthCount = columnsOnAxis.autoWidthCount;\n    var autoWidth = (remainedWidth - categoryGap) / (autoWidthCount + (autoWidthCount - 1) * barGapPercent);\n    autoWidth = Math.max(autoWidth, 0); // Find if any auto calculated bar exceeded maxBarWidth\n\n    each(stacks, function (column) {\n      var maxWidth = column.maxWidth;\n      var minWidth = column.minWidth;\n\n      if (!column.width) {\n        var finalWidth = autoWidth;\n\n        if (maxWidth && maxWidth < finalWidth) {\n          finalWidth = Math.min(maxWidth, remainedWidth);\n        } // `minWidth` has higher priority. `minWidth` decide that whether the\n        // bar is able to be visible. So `minWidth` should not be restricted\n        // by `maxWidth` or `remainedWidth` (which is from `bandWidth`). In\n        // the extreme cases for `value` axis, bars are allowed to overlap\n        // with each other if `minWidth` specified.\n\n\n        if (minWidth && minWidth > finalWidth) {\n          finalWidth = minWidth;\n        }\n\n        if (finalWidth !== autoWidth) {\n          column.width = finalWidth;\n          remainedWidth -= finalWidth + barGapPercent * finalWidth;\n          autoWidthCount--;\n        }\n      } else {\n        // `barMinWidth/barMaxWidth` has higher priority than `barWidth`, as\n        // CSS does. Because barWidth can be a percent value, where\n        // `barMaxWidth` can be used to restrict the final width.\n        var finalWidth = column.width;\n\n        if (maxWidth) {\n          finalWidth = Math.min(finalWidth, maxWidth);\n        } // `minWidth` has higher priority, as described above\n\n\n        if (minWidth) {\n          finalWidth = Math.max(finalWidth, minWidth);\n        }\n\n        column.width = finalWidth;\n        remainedWidth -= finalWidth + barGapPercent * finalWidth;\n        autoWidthCount--;\n      }\n    }); // Recalculate width again\n\n    autoWidth = (remainedWidth - categoryGap) / (autoWidthCount + (autoWidthCount - 1) * barGapPercent);\n    autoWidth = Math.max(autoWidth, 0);\n    var widthSum = 0;\n    var lastColumn;\n    each(stacks, function (column, idx) {\n      if (!column.width) {\n        column.width = autoWidth;\n      }\n\n      lastColumn = column;\n      widthSum += column.width * (1 + barGapPercent);\n    });\n\n    if (lastColumn) {\n      widthSum -= lastColumn.width * barGapPercent;\n    }\n\n    var offset = -widthSum / 2;\n    each(stacks, function (column, stackId) {\n      result[coordSysName][stackId] = result[coordSysName][stackId] || {\n        bandWidth: bandWidth,\n        offset: offset,\n        width: column.width\n      };\n      offset += column.width * (1 + barGapPercent);\n    });\n  });\n  return result;\n}\n\nfunction retrieveColumnLayout(barWidthAndOffset, axis, seriesModel) {\n  if (barWidthAndOffset && axis) {\n    var result = barWidthAndOffset[getAxisKey(axis)];\n\n    if (result != null && seriesModel != null) {\n      return result[getSeriesStackId(seriesModel)];\n    }\n\n    return result;\n  }\n}\n\nexport { retrieveColumnLayout };\nexport function layout(seriesType, ecModel) {\n  var seriesModels = prepareLayoutBarSeries(seriesType, ecModel);\n  var barWidthAndOffset = makeColumnLayout(seriesModels);\n  each(seriesModels, function (seriesModel) {\n    var data = seriesModel.getData();\n    var cartesian = seriesModel.coordinateSystem;\n    var baseAxis = cartesian.getBaseAxis();\n    var stackId = getSeriesStackId(seriesModel);\n    var columnLayoutInfo = barWidthAndOffset[getAxisKey(baseAxis)][stackId];\n    var columnOffset = columnLayoutInfo.offset;\n    var columnWidth = columnLayoutInfo.width;\n    data.setLayout({\n      bandWidth: columnLayoutInfo.bandWidth,\n      offset: columnOffset,\n      size: columnWidth\n    });\n  });\n} // TODO: Do not support stack in large mode yet.\n\nexport function createProgressiveLayout(seriesType) {\n  return {\n    seriesType: seriesType,\n    plan: createRenderPlanner(),\n    reset: function (seriesModel) {\n      if (!isOnCartesian(seriesModel)) {\n        return;\n      }\n\n      var data = seriesModel.getData();\n      var cartesian = seriesModel.coordinateSystem;\n      var baseAxis = cartesian.getBaseAxis();\n      var valueAxis = cartesian.getOtherAxis(baseAxis);\n      var valueDimIdx = data.getDimensionIndex(data.mapDimension(valueAxis.dim));\n      var baseDimIdx = data.getDimensionIndex(data.mapDimension(baseAxis.dim));\n      var drawBackground = seriesModel.get('showBackground', true);\n      var valueDim = data.mapDimension(valueAxis.dim);\n      var stackResultDim = data.getCalculationInfo('stackResultDimension');\n      var stacked = isDimensionStacked(data, valueDim) && !!data.getCalculationInfo('stackedOnSeries');\n      var isValueAxisH = valueAxis.isHorizontal();\n      var valueAxisStart = getValueAxisStart(baseAxis, valueAxis);\n      var isLarge = isInLargeMode(seriesModel);\n      var barMinHeight = seriesModel.get('barMinHeight') || 0;\n      var stackedDimIdx = stackResultDim && data.getDimensionIndex(stackResultDim); // Layout info.\n\n      var columnWidth = data.getLayout('size');\n      var columnOffset = data.getLayout('offset');\n      return {\n        progress: function (params, data) {\n          var count = params.count;\n          var largePoints = isLarge && createFloat32Array(count * 3);\n          var largeBackgroundPoints = isLarge && drawBackground && createFloat32Array(count * 3);\n          var largeDataIndices = isLarge && createFloat32Array(count);\n          var coordLayout = cartesian.master.getRect();\n          var bgSize = isValueAxisH ? coordLayout.width : coordLayout.height;\n          var dataIndex;\n          var store = data.getStore();\n          var idxOffset = 0;\n\n          while ((dataIndex = params.next()) != null) {\n            var value = store.get(stacked ? stackedDimIdx : valueDimIdx, dataIndex);\n            var baseValue = store.get(baseDimIdx, dataIndex);\n            var baseCoord = valueAxisStart;\n            var startValue = void 0; // Because of the barMinHeight, we can not use the value in\n            // stackResultDimension directly.\n\n            if (stacked) {\n              startValue = +value - store.get(valueDimIdx, dataIndex);\n            }\n\n            var x = void 0;\n            var y = void 0;\n            var width = void 0;\n            var height = void 0;\n\n            if (isValueAxisH) {\n              var coord = cartesian.dataToPoint([value, baseValue]);\n\n              if (stacked) {\n                var startCoord = cartesian.dataToPoint([startValue, baseValue]);\n                baseCoord = startCoord[0];\n              }\n\n              x = baseCoord;\n              y = coord[1] + columnOffset;\n              width = coord[0] - baseCoord;\n              height = columnWidth;\n\n              if (Math.abs(width) < barMinHeight) {\n                width = (width < 0 ? -1 : 1) * barMinHeight;\n              }\n            } else {\n              var coord = cartesian.dataToPoint([baseValue, value]);\n\n              if (stacked) {\n                var startCoord = cartesian.dataToPoint([baseValue, startValue]);\n                baseCoord = startCoord[1];\n              }\n\n              x = coord[0] + columnOffset;\n              y = baseCoord;\n              width = columnWidth;\n              height = coord[1] - baseCoord;\n\n              if (Math.abs(height) < barMinHeight) {\n                // Include zero to has a positive bar\n                height = (height <= 0 ? -1 : 1) * barMinHeight;\n              }\n            }\n\n            if (!isLarge) {\n              data.setItemLayout(dataIndex, {\n                x: x,\n                y: y,\n                width: width,\n                height: height\n              });\n            } else {\n              largePoints[idxOffset] = x;\n              largePoints[idxOffset + 1] = y;\n              largePoints[idxOffset + 2] = isValueAxisH ? width : height;\n\n              if (largeBackgroundPoints) {\n                largeBackgroundPoints[idxOffset] = isValueAxisH ? coordLayout.x : x;\n                largeBackgroundPoints[idxOffset + 1] = isValueAxisH ? y : coordLayout.y;\n                largeBackgroundPoints[idxOffset + 2] = bgSize;\n              }\n\n              largeDataIndices[dataIndex] = dataIndex;\n            }\n\n            idxOffset += 3;\n          }\n\n          if (isLarge) {\n            data.setLayout({\n              largePoints: largePoints,\n              largeDataIndices: largeDataIndices,\n              largeBackgroundPoints: largeBackgroundPoints,\n              valueAxisHorizontal: isValueAxisH\n            });\n          }\n        }\n      };\n    }\n  };\n}\n\nfunction isOnCartesian(seriesModel) {\n  return seriesModel.coordinateSystem && seriesModel.coordinateSystem.type === 'cartesian2d';\n}\n\nfunction isInLargeMode(seriesModel) {\n  return seriesModel.pipelineContext && seriesModel.pipelineContext.large;\n} // See cases in `test/bar-start.html` and `#7412`, `#8747`.\n\n\nfunction getValueAxisStart(baseAxis, valueAxis) {\n  return valueAxis.toGlobalCoord(valueAxis.dataToCoord(valueAxis.type === 'log' ? 1 : 0));\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { __extends } from \"tslib\";\n/*\r\n* A third-party license is embedded for some of the code in this file:\r\n* The \"scaleLevels\" was originally copied from \"d3.js\" with some\r\n* modifications made for this project.\r\n* (See more details in the comment on the definition of \"scaleLevels\" below.)\r\n* The use of the source code of this file is also subject to the terms\r\n* and consitions of the license of \"d3.js\" (BSD-3Clause, see\r\n* </licenses/LICENSE-d3>).\r\n*/\n// [About UTC and local time zone]:\n// In most cases, `number.parseDate` will treat input data string as local time\n// (except time zone is specified in time string). And `format.formateTime` returns\n// local time by default. option.useUTC is false by default. This design has\n// considered these common cases:\n// (1) Time that is persistent in server is in UTC, but it is needed to be displayed\n// in local time by default.\n// (2) By default, the input data string (e.g., '2011-01-02') should be displayed\n// as its original time, without any time difference.\n\nimport * as numberUtil from '../util/number.js';\nimport { ONE_SECOND, ONE_MINUTE, ONE_HOUR, ONE_DAY, ONE_YEAR, format, leveledFormat, getUnitValue, timeUnits, fullLeveledFormatter, getPrimaryTimeUnit, isPrimaryTimeUnit, getDefaultFormatPrecisionOfInterval, fullYearGetterName, monthSetterName, fullYearSetterName, dateSetterName, hoursGetterName, hoursSetterName, minutesSetterName, secondsSetterName, millisecondsSetterName, monthGetterName, dateGetterName, minutesGetterName, secondsGetterName, millisecondsGetterName } from '../util/time.js';\nimport * as scaleHelper from './helper.js';\nimport IntervalScale from './Interval.js';\nimport Scale from './Scale.js';\nimport { warn } from '../util/log.js';\nimport { filter, isNumber, map } from 'zrender/lib/core/util.js'; // FIXME 公用？\n\nvar bisect = function (a, x, lo, hi) {\n  while (lo < hi) {\n    var mid = lo + hi >>> 1;\n\n    if (a[mid][1] < x) {\n      lo = mid + 1;\n    } else {\n      hi = mid;\n    }\n  }\n\n  return lo;\n};\n\nvar TimeScale =\n/** @class */\nfunction (_super) {\n  __extends(TimeScale, _super);\n\n  function TimeScale(settings) {\n    var _this = _super.call(this, settings) || this;\n\n    _this.type = 'time';\n    return _this;\n  }\n  /**\r\n   * Get label is mainly for other components like dataZoom, tooltip.\r\n   */\n\n\n  TimeScale.prototype.getLabel = function (tick) {\n    var useUTC = this.getSetting('useUTC');\n    return format(tick.value, fullLeveledFormatter[getDefaultFormatPrecisionOfInterval(getPrimaryTimeUnit(this._minLevelUnit))] || fullLeveledFormatter.second, useUTC, this.getSetting('locale'));\n  };\n\n  TimeScale.prototype.getFormattedLabel = function (tick, idx, labelFormatter) {\n    var isUTC = this.getSetting('useUTC');\n    var lang = this.getSetting('locale');\n    return leveledFormat(tick, idx, labelFormatter, lang, isUTC);\n  };\n  /**\r\n   * @override\r\n   */\n\n\n  TimeScale.prototype.getTicks = function () {\n    var interval = this._interval;\n    var extent = this._extent;\n    var ticks = []; // If interval is 0, return [];\n\n    if (!interval) {\n      return ticks;\n    }\n\n    ticks.push({\n      value: extent[0],\n      level: 0\n    });\n    var useUTC = this.getSetting('useUTC');\n    var innerTicks = getIntervalTicks(this._minLevelUnit, this._approxInterval, useUTC, extent);\n    ticks = ticks.concat(innerTicks);\n    ticks.push({\n      value: extent[1],\n      level: 0\n    });\n    return ticks;\n  };\n\n  TimeScale.prototype.calcNiceExtent = function (opt) {\n    var extent = this._extent; // If extent start and end are same, expand them\n\n    if (extent[0] === extent[1]) {\n      // Expand extent\n      extent[0] -= ONE_DAY;\n      extent[1] += ONE_DAY;\n    } // If there are no data and extent are [Infinity, -Infinity]\n\n\n    if (extent[1] === -Infinity && extent[0] === Infinity) {\n      var d = new Date();\n      extent[1] = +new Date(d.getFullYear(), d.getMonth(), d.getDate());\n      extent[0] = extent[1] - ONE_DAY;\n    }\n\n    this.calcNiceTicks(opt.splitNumber, opt.minInterval, opt.maxInterval);\n  };\n\n  TimeScale.prototype.calcNiceTicks = function (approxTickNum, minInterval, maxInterval) {\n    approxTickNum = approxTickNum || 10;\n    var extent = this._extent;\n    var span = extent[1] - extent[0];\n    this._approxInterval = span / approxTickNum;\n\n    if (minInterval != null && this._approxInterval < minInterval) {\n      this._approxInterval = minInterval;\n    }\n\n    if (maxInterval != null && this._approxInterval > maxInterval) {\n      this._approxInterval = maxInterval;\n    }\n\n    var scaleIntervalsLen = scaleIntervals.length;\n    var idx = Math.min(bisect(scaleIntervals, this._approxInterval, 0, scaleIntervalsLen), scaleIntervalsLen - 1); // Interval that can be used to calculate ticks\n\n    this._interval = scaleIntervals[idx][1]; // Min level used when picking ticks from top down.\n    // We check one more level to avoid the ticks are to sparse in some case.\n\n    this._minLevelUnit = scaleIntervals[Math.max(idx - 1, 0)][0];\n  };\n\n  TimeScale.prototype.parse = function (val) {\n    // val might be float.\n    return isNumber(val) ? val : +numberUtil.parseDate(val);\n  };\n\n  TimeScale.prototype.contain = function (val) {\n    return scaleHelper.contain(this.parse(val), this._extent);\n  };\n\n  TimeScale.prototype.normalize = function (val) {\n    return scaleHelper.normalize(this.parse(val), this._extent);\n  };\n\n  TimeScale.prototype.scale = function (val) {\n    return scaleHelper.scale(val, this._extent);\n  };\n\n  TimeScale.type = 'time';\n  return TimeScale;\n}(IntervalScale);\n/**\r\n * This implementation was originally copied from \"d3.js\"\r\n * <https://github.com/d3/d3/blob/b516d77fb8566b576088e73410437494717ada26/src/time/scale.js>\r\n * with some modifications made for this program.\r\n * See the license statement at the head of this file.\r\n */\n\n\nvar scaleIntervals = [// Format                           interval\n['second', ONE_SECOND], ['minute', ONE_MINUTE], ['hour', ONE_HOUR], ['quarter-day', ONE_HOUR * 6], ['half-day', ONE_HOUR * 12], ['day', ONE_DAY * 1.2], ['half-week', ONE_DAY * 3.5], ['week', ONE_DAY * 7], ['month', ONE_DAY * 31], ['quarter', ONE_DAY * 95], ['half-year', ONE_YEAR / 2], ['year', ONE_YEAR] // 1Y\n];\n\nfunction isUnitValueSame(unit, valueA, valueB, isUTC) {\n  var dateA = numberUtil.parseDate(valueA);\n  var dateB = numberUtil.parseDate(valueB);\n\n  var isSame = function (unit) {\n    return getUnitValue(dateA, unit, isUTC) === getUnitValue(dateB, unit, isUTC);\n  };\n\n  var isSameYear = function () {\n    return isSame('year');\n  }; // const isSameHalfYear = () => isSameYear() && isSame('half-year');\n  // const isSameQuater = () => isSameYear() && isSame('quarter');\n\n\n  var isSameMonth = function () {\n    return isSameYear() && isSame('month');\n  };\n\n  var isSameDay = function () {\n    return isSameMonth() && isSame('day');\n  }; // const isSameHalfDay = () => isSameDay() && isSame('half-day');\n\n\n  var isSameHour = function () {\n    return isSameDay() && isSame('hour');\n  };\n\n  var isSameMinute = function () {\n    return isSameHour() && isSame('minute');\n  };\n\n  var isSameSecond = function () {\n    return isSameMinute() && isSame('second');\n  };\n\n  var isSameMilliSecond = function () {\n    return isSameSecond() && isSame('millisecond');\n  };\n\n  switch (unit) {\n    case 'year':\n      return isSameYear();\n\n    case 'month':\n      return isSameMonth();\n\n    case 'day':\n      return isSameDay();\n\n    case 'hour':\n      return isSameHour();\n\n    case 'minute':\n      return isSameMinute();\n\n    case 'second':\n      return isSameSecond();\n\n    case 'millisecond':\n      return isSameMilliSecond();\n  }\n} // const primaryUnitGetters = {\n//     year: fullYearGetterName(),\n//     month: monthGetterName(),\n//     day: dateGetterName(),\n//     hour: hoursGetterName(),\n//     minute: minutesGetterName(),\n//     second: secondsGetterName(),\n//     millisecond: millisecondsGetterName()\n// };\n// const primaryUnitUTCGetters = {\n//     year: fullYearGetterName(true),\n//     month: monthGetterName(true),\n//     day: dateGetterName(true),\n//     hour: hoursGetterName(true),\n//     minute: minutesGetterName(true),\n//     second: secondsGetterName(true),\n//     millisecond: millisecondsGetterName(true)\n// };\n// function moveTick(date: Date, unitName: TimeUnit, step: number, isUTC: boolean) {\n//     step = step || 1;\n//     switch (getPrimaryTimeUnit(unitName)) {\n//         case 'year':\n//             date[fullYearSetterName(isUTC)](date[fullYearGetterName(isUTC)]() + step);\n//             break;\n//         case 'month':\n//             date[monthSetterName(isUTC)](date[monthGetterName(isUTC)]() + step);\n//             break;\n//         case 'day':\n//             date[dateSetterName(isUTC)](date[dateGetterName(isUTC)]() + step);\n//             break;\n//         case 'hour':\n//             date[hoursSetterName(isUTC)](date[hoursGetterName(isUTC)]() + step);\n//             break;\n//         case 'minute':\n//             date[minutesSetterName(isUTC)](date[minutesGetterName(isUTC)]() + step);\n//             break;\n//         case 'second':\n//             date[secondsSetterName(isUTC)](date[secondsGetterName(isUTC)]() + step);\n//             break;\n//         case 'millisecond':\n//             date[millisecondsSetterName(isUTC)](date[millisecondsGetterName(isUTC)]() + step);\n//             break;\n//     }\n//     return date.getTime();\n// }\n// const DATE_INTERVALS = [[8, 7.5], [4, 3.5], [2, 1.5]];\n// const MONTH_INTERVALS = [[6, 5.5], [3, 2.5], [2, 1.5]];\n// const MINUTES_SECONDS_INTERVALS = [[30, 30], [20, 20], [15, 15], [10, 10], [5, 5], [2, 2]];\n\n\nfunction getDateInterval(approxInterval, daysInMonth) {\n  approxInterval /= ONE_DAY;\n  return approxInterval > 16 ? 16 // Math.floor(daysInMonth / 2) + 1  // In this case we only want one tick between two months.\n  : approxInterval > 7.5 ? 7 // TODO week 7 or day 8?\n  : approxInterval > 3.5 ? 4 : approxInterval > 1.5 ? 2 : 1;\n}\n\nfunction getMonthInterval(approxInterval) {\n  var APPROX_ONE_MONTH = 30 * ONE_DAY;\n  approxInterval /= APPROX_ONE_MONTH;\n  return approxInterval > 6 ? 6 : approxInterval > 3 ? 3 : approxInterval > 2 ? 2 : 1;\n}\n\nfunction getHourInterval(approxInterval) {\n  approxInterval /= ONE_HOUR;\n  return approxInterval > 12 ? 12 : approxInterval > 6 ? 6 : approxInterval > 3.5 ? 4 : approxInterval > 2 ? 2 : 1;\n}\n\nfunction getMinutesAndSecondsInterval(approxInterval, isMinutes) {\n  approxInterval /= isMinutes ? ONE_MINUTE : ONE_SECOND;\n  return approxInterval > 30 ? 30 : approxInterval > 20 ? 20 : approxInterval > 15 ? 15 : approxInterval > 10 ? 10 : approxInterval > 5 ? 5 : approxInterval > 2 ? 2 : 1;\n}\n\nfunction getMillisecondsInterval(approxInterval) {\n  return numberUtil.nice(approxInterval, true);\n}\n\nfunction getFirstTimestampOfUnit(date, unitName, isUTC) {\n  var outDate = new Date(date);\n\n  switch (getPrimaryTimeUnit(unitName)) {\n    case 'year':\n    case 'month':\n      outDate[monthSetterName(isUTC)](0);\n\n    case 'day':\n      outDate[dateSetterName(isUTC)](1);\n\n    case 'hour':\n      outDate[hoursSetterName(isUTC)](0);\n\n    case 'minute':\n      outDate[minutesSetterName(isUTC)](0);\n\n    case 'second':\n      outDate[secondsSetterName(isUTC)](0);\n      outDate[millisecondsSetterName(isUTC)](0);\n  }\n\n  return outDate.getTime();\n}\n\nfunction getIntervalTicks(bottomUnitName, approxInterval, isUTC, extent) {\n  var safeLimit = 10000;\n  var unitNames = timeUnits;\n  var iter = 0;\n\n  function addTicksInSpan(interval, minTimestamp, maxTimestamp, getMethodName, setMethodName, isDate, out) {\n    var date = new Date(minTimestamp);\n    var dateTime = minTimestamp;\n    var d = date[getMethodName](); // if (isDate) {\n    //     d -= 1; // Starts with 0;   PENDING\n    // }\n\n    while (dateTime < maxTimestamp && dateTime <= extent[1]) {\n      out.push({\n        value: dateTime\n      });\n      d += interval;\n      date[setMethodName](d);\n      dateTime = date.getTime();\n    } // This extra tick is for calcuating ticks of next level. Will not been added to the final result\n\n\n    out.push({\n      value: dateTime,\n      notAdd: true\n    });\n  }\n\n  function addLevelTicks(unitName, lastLevelTicks, levelTicks) {\n    var newAddedTicks = [];\n    var isFirstLevel = !lastLevelTicks.length;\n\n    if (isUnitValueSame(getPrimaryTimeUnit(unitName), extent[0], extent[1], isUTC)) {\n      return;\n    }\n\n    if (isFirstLevel) {\n      lastLevelTicks = [{\n        // TODO Optimize. Not include so may ticks.\n        value: getFirstTimestampOfUnit(new Date(extent[0]), unitName, isUTC)\n      }, {\n        value: extent[1]\n      }];\n    }\n\n    for (var i = 0; i < lastLevelTicks.length - 1; i++) {\n      var startTick = lastLevelTicks[i].value;\n      var endTick = lastLevelTicks[i + 1].value;\n\n      if (startTick === endTick) {\n        continue;\n      }\n\n      var interval = void 0;\n      var getterName = void 0;\n      var setterName = void 0;\n      var isDate = false;\n\n      switch (unitName) {\n        case 'year':\n          interval = Math.max(1, Math.round(approxInterval / ONE_DAY / 365));\n          getterName = fullYearGetterName(isUTC);\n          setterName = fullYearSetterName(isUTC);\n          break;\n\n        case 'half-year':\n        case 'quarter':\n        case 'month':\n          interval = getMonthInterval(approxInterval);\n          getterName = monthGetterName(isUTC);\n          setterName = monthSetterName(isUTC);\n          break;\n\n        case 'week': // PENDING If week is added. Ignore day.\n\n        case 'half-week':\n        case 'day':\n          interval = getDateInterval(approxInterval, 31); // Use 32 days and let interval been 16\n\n          getterName = dateGetterName(isUTC);\n          setterName = dateSetterName(isUTC);\n          isDate = true;\n          break;\n\n        case 'half-day':\n        case 'quarter-day':\n        case 'hour':\n          interval = getHourInterval(approxInterval);\n          getterName = hoursGetterName(isUTC);\n          setterName = hoursSetterName(isUTC);\n          break;\n\n        case 'minute':\n          interval = getMinutesAndSecondsInterval(approxInterval, true);\n          getterName = minutesGetterName(isUTC);\n          setterName = minutesSetterName(isUTC);\n          break;\n\n        case 'second':\n          interval = getMinutesAndSecondsInterval(approxInterval, false);\n          getterName = secondsGetterName(isUTC);\n          setterName = secondsSetterName(isUTC);\n          break;\n\n        case 'millisecond':\n          interval = getMillisecondsInterval(approxInterval);\n          getterName = millisecondsGetterName(isUTC);\n          setterName = millisecondsSetterName(isUTC);\n          break;\n      }\n\n      addTicksInSpan(interval, startTick, endTick, getterName, setterName, isDate, newAddedTicks);\n\n      if (unitName === 'year' && levelTicks.length > 1 && i === 0) {\n        // Add nearest years to the left extent.\n        levelTicks.unshift({\n          value: levelTicks[0].value - interval\n        });\n      }\n    }\n\n    for (var i = 0; i < newAddedTicks.length; i++) {\n      levelTicks.push(newAddedTicks[i]);\n    } // newAddedTicks.length && console.log(unitName, newAddedTicks);\n\n\n    return newAddedTicks;\n  }\n\n  var levelsTicks = [];\n  var currentLevelTicks = [];\n  var tickCount = 0;\n  var lastLevelTickCount = 0;\n\n  for (var i = 0; i < unitNames.length && iter++ < safeLimit; ++i) {\n    var primaryTimeUnit = getPrimaryTimeUnit(unitNames[i]);\n\n    if (!isPrimaryTimeUnit(unitNames[i])) {\n      // TODO\n      continue;\n    }\n\n    addLevelTicks(unitNames[i], levelsTicks[levelsTicks.length - 1] || [], currentLevelTicks);\n    var nextPrimaryTimeUnit = unitNames[i + 1] ? getPrimaryTimeUnit(unitNames[i + 1]) : null;\n\n    if (primaryTimeUnit !== nextPrimaryTimeUnit) {\n      if (currentLevelTicks.length) {\n        lastLevelTickCount = tickCount; // Remove the duplicate so the tick count can be precisely.\n\n        currentLevelTicks.sort(function (a, b) {\n          return a.value - b.value;\n        });\n        var levelTicksRemoveDuplicated = [];\n\n        for (var i_1 = 0; i_1 < currentLevelTicks.length; ++i_1) {\n          var tickValue = currentLevelTicks[i_1].value;\n\n          if (i_1 === 0 || currentLevelTicks[i_1 - 1].value !== tickValue) {\n            levelTicksRemoveDuplicated.push(currentLevelTicks[i_1]);\n\n            if (tickValue >= extent[0] && tickValue <= extent[1]) {\n              tickCount++;\n            }\n          }\n        }\n\n        var targetTickNum = (extent[1] - extent[0]) / approxInterval; // Added too much in this level and not too less in last level\n\n        if (tickCount > targetTickNum * 1.5 && lastLevelTickCount > targetTickNum / 1.5) {\n          break;\n        } // Only treat primary time unit as one level.\n\n\n        levelsTicks.push(levelTicksRemoveDuplicated);\n\n        if (tickCount > targetTickNum || bottomUnitName === unitNames[i]) {\n          break;\n        }\n      } // Reset if next unitName is primary\n\n\n      currentLevelTicks = [];\n    }\n  }\n\n  if (process.env.NODE_ENV !== 'production') {\n    if (iter >= safeLimit) {\n      warn('Exceed safe limit.');\n    }\n  }\n\n  var levelsTicksInExtent = filter(map(levelsTicks, function (levelTicks) {\n    return filter(levelTicks, function (tick) {\n      return tick.value >= extent[0] && tick.value <= extent[1] && !tick.notAdd;\n    });\n  }), function (levelTicks) {\n    return levelTicks.length > 0;\n  });\n  var ticks = [];\n  var maxLevel = levelsTicksInExtent.length - 1;\n\n  for (var i = 0; i < levelsTicksInExtent.length; ++i) {\n    var levelTicks = levelsTicksInExtent[i];\n\n    for (var k = 0; k < levelTicks.length; ++k) {\n      ticks.push({\n        value: levelTicks[k].value,\n        level: maxLevel - i\n      });\n    }\n  }\n\n  ticks.sort(function (a, b) {\n    return a.value - b.value;\n  }); // Remove duplicates\n\n  var result = [];\n\n  for (var i = 0; i < ticks.length; ++i) {\n    if (i === 0 || ticks[i].value !== ticks[i - 1].value) {\n      result.push(ticks[i]);\n    }\n  }\n\n  return result;\n}\n\nScale.registerClass(TimeScale);\nexport default TimeScale;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { __extends } from \"tslib\";\nimport * as zrUtil from 'zrender/lib/core/util.js';\nimport Scale from './Scale.js';\nimport * as numberUtil from '../util/number.js';\nimport * as scaleHelper from './helper.js'; // Use some method of IntervalScale\n\nimport IntervalScale from './Interval.js';\nvar scaleProto = Scale.prototype; // FIXME:TS refactor: not good to call it directly with `this`?\n\nvar intervalScaleProto = IntervalScale.prototype;\nvar roundingErrorFix = numberUtil.round;\nvar mathFloor = Math.floor;\nvar mathCeil = Math.ceil;\nvar mathPow = Math.pow;\nvar mathLog = Math.log;\n\nvar LogScale =\n/** @class */\nfunction (_super) {\n  __extends(LogScale, _super);\n\n  function LogScale() {\n    var _this = _super !== null && _super.apply(this, arguments) || this;\n\n    _this.type = 'log';\n    _this.base = 10;\n    _this._originalScale = new IntervalScale(); // FIXME:TS actually used by `IntervalScale`\n\n    _this._interval = 0;\n    return _this;\n  }\n  /**\r\n   * @param Whether expand the ticks to niced extent.\r\n   */\n\n\n  LogScale.prototype.getTicks = function (expandToNicedExtent) {\n    var originalScale = this._originalScale;\n    var extent = this._extent;\n    var originalExtent = originalScale.getExtent();\n    var ticks = intervalScaleProto.getTicks.call(this, expandToNicedExtent);\n    return zrUtil.map(ticks, function (tick) {\n      var val = tick.value;\n      var powVal = numberUtil.round(mathPow(this.base, val)); // Fix #4158\n\n      powVal = val === extent[0] && this._fixMin ? fixRoundingError(powVal, originalExtent[0]) : powVal;\n      powVal = val === extent[1] && this._fixMax ? fixRoundingError(powVal, originalExtent[1]) : powVal;\n      return {\n        value: powVal\n      };\n    }, this);\n  };\n\n  LogScale.prototype.setExtent = function (start, end) {\n    var base = mathLog(this.base); // log(-Infinity) is NaN, so safe guard here\n\n    start = mathLog(Math.max(0, start)) / base;\n    end = mathLog(Math.max(0, end)) / base;\n    intervalScaleProto.setExtent.call(this, start, end);\n  };\n  /**\r\n   * @return {number} end\r\n   */\n\n\n  LogScale.prototype.getExtent = function () {\n    var base = this.base;\n    var extent = scaleProto.getExtent.call(this);\n    extent[0] = mathPow(base, extent[0]);\n    extent[1] = mathPow(base, extent[1]); // Fix #4158\n\n    var originalScale = this._originalScale;\n    var originalExtent = originalScale.getExtent();\n    this._fixMin && (extent[0] = fixRoundingError(extent[0], originalExtent[0]));\n    this._fixMax && (extent[1] = fixRoundingError(extent[1], originalExtent[1]));\n    return extent;\n  };\n\n  LogScale.prototype.unionExtent = function (extent) {\n    this._originalScale.unionExtent(extent);\n\n    var base = this.base;\n    extent[0] = mathLog(extent[0]) / mathLog(base);\n    extent[1] = mathLog(extent[1]) / mathLog(base);\n    scaleProto.unionExtent.call(this, extent);\n  };\n\n  LogScale.prototype.unionExtentFromData = function (data, dim) {\n    // TODO\n    // filter value that <= 0\n    this.unionExtent(data.getApproximateExtent(dim));\n  };\n  /**\r\n   * Update interval and extent of intervals for nice ticks\r\n   * @param approxTickNum default 10 Given approx tick number\r\n   */\n\n\n  LogScale.prototype.calcNiceTicks = function (approxTickNum) {\n    approxTickNum = approxTickNum || 10;\n    var extent = this._extent;\n    var span = extent[1] - extent[0];\n\n    if (span === Infinity || span <= 0) {\n      return;\n    }\n\n    var interval = numberUtil.quantity(span);\n    var err = approxTickNum / span * interval; // Filter ticks to get closer to the desired count.\n\n    if (err <= 0.5) {\n      interval *= 10;\n    } // Interval should be integer\n\n\n    while (!isNaN(interval) && Math.abs(interval) < 1 && Math.abs(interval) > 0) {\n      interval *= 10;\n    }\n\n    var niceExtent = [numberUtil.round(mathCeil(extent[0] / interval) * interval), numberUtil.round(mathFloor(extent[1] / interval) * interval)];\n    this._interval = interval;\n    this._niceExtent = niceExtent;\n  };\n\n  LogScale.prototype.calcNiceExtent = function (opt) {\n    intervalScaleProto.calcNiceExtent.call(this, opt);\n    this._fixMin = opt.fixMin;\n    this._fixMax = opt.fixMax;\n  };\n\n  LogScale.prototype.parse = function (val) {\n    return val;\n  };\n\n  LogScale.prototype.contain = function (val) {\n    val = mathLog(val) / mathLog(this.base);\n    return scaleHelper.contain(val, this._extent);\n  };\n\n  LogScale.prototype.normalize = function (val) {\n    val = mathLog(val) / mathLog(this.base);\n    return scaleHelper.normalize(val, this._extent);\n  };\n\n  LogScale.prototype.scale = function (val) {\n    val = scaleHelper.scale(val, this._extent);\n    return mathPow(this.base, val);\n  };\n\n  LogScale.type = 'log';\n  return LogScale;\n}(Scale);\n\nvar proto = LogScale.prototype;\nproto.getMinorTicks = intervalScaleProto.getMinorTicks;\nproto.getLabel = intervalScaleProto.getLabel;\n\nfunction fixRoundingError(val, originalVal) {\n  return roundingErrorFix(val, numberUtil.getPrecision(originalVal));\n}\n\nScale.registerClass(LogScale);\nexport default LogScale;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { assert, isArray, eqNaN, isFunction } from 'zrender/lib/core/util.js';\nimport { parsePercent } from 'zrender/lib/contain/text.js';\n\nvar ScaleRawExtentInfo =\n/** @class */\nfunction () {\n  function ScaleRawExtentInfo(scale, model, // Usually: data extent from all series on this axis.\n  originalExtent) {\n    this._prepareParams(scale, model, originalExtent);\n  }\n  /**\r\n   * Parameters depending on outside (like model, user callback)\r\n   * are prepared and fixed here.\r\n   */\n\n\n  ScaleRawExtentInfo.prototype._prepareParams = function (scale, model, // Usually: data extent from all series on this axis.\n  dataExtent) {\n    if (dataExtent[1] < dataExtent[0]) {\n      dataExtent = [NaN, NaN];\n    }\n\n    this._dataMin = dataExtent[0];\n    this._dataMax = dataExtent[1];\n    var isOrdinal = this._isOrdinal = scale.type === 'ordinal';\n    this._needCrossZero = scale.type === 'interval' && model.getNeedCrossZero && model.getNeedCrossZero();\n    var modelMinRaw = this._modelMinRaw = model.get('min', true);\n\n    if (isFunction(modelMinRaw)) {\n      // This callback always provides users the full data extent (before data is filtered).\n      this._modelMinNum = parseAxisModelMinMax(scale, modelMinRaw({\n        min: dataExtent[0],\n        max: dataExtent[1]\n      }));\n    } else if (modelMinRaw !== 'dataMin') {\n      this._modelMinNum = parseAxisModelMinMax(scale, modelMinRaw);\n    }\n\n    var modelMaxRaw = this._modelMaxRaw = model.get('max', true);\n\n    if (isFunction(modelMaxRaw)) {\n      // This callback always provides users the full data extent (before data is filtered).\n      this._modelMaxNum = parseAxisModelMinMax(scale, modelMaxRaw({\n        min: dataExtent[0],\n        max: dataExtent[1]\n      }));\n    } else if (modelMaxRaw !== 'dataMax') {\n      this._modelMaxNum = parseAxisModelMinMax(scale, modelMaxRaw);\n    }\n\n    if (isOrdinal) {\n      // FIXME: there is a flaw here: if there is no \"block\" data processor like `dataZoom`,\n      // and progressive rendering is using, here the category result might just only contain\n      // the processed chunk rather than the entire result.\n      this._axisDataLen = model.getCategories().length;\n    } else {\n      var boundaryGap = model.get('boundaryGap');\n      var boundaryGapArr = isArray(boundaryGap) ? boundaryGap : [boundaryGap || 0, boundaryGap || 0];\n\n      if (typeof boundaryGapArr[0] === 'boolean' || typeof boundaryGapArr[1] === 'boolean') {\n        if (process.env.NODE_ENV !== 'production') {\n          console.warn('Boolean type for boundaryGap is only ' + 'allowed for ordinal axis. Please use string in ' + 'percentage instead, e.g., \"20%\". Currently, ' + 'boundaryGap is set to be 0.');\n        }\n\n        this._boundaryGapInner = [0, 0];\n      } else {\n        this._boundaryGapInner = [parsePercent(boundaryGapArr[0], 1), parsePercent(boundaryGapArr[1], 1)];\n      }\n    }\n  };\n  /**\r\n   * Calculate extent by prepared parameters.\r\n   * This method has no external dependency and can be called duplicatedly,\r\n   * getting the same result.\r\n   * If parameters changed, should call this method to recalcuate.\r\n   */\n\n\n  ScaleRawExtentInfo.prototype.calculate = function () {\n    // Notice: When min/max is not set (that is, when there are null/undefined,\n    // which is the most common case), these cases should be ensured:\n    // (1) For 'ordinal', show all axis.data.\n    // (2) For others:\n    //      + `boundaryGap` is applied (if min/max set, boundaryGap is\n    //      disabled).\n    //      + If `needCrossZero`, min/max should be zero, otherwise, min/max should\n    //      be the result that originalExtent enlarged by boundaryGap.\n    // (3) If no data, it should be ensured that `scale.setBlank` is set.\n    var isOrdinal = this._isOrdinal;\n    var dataMin = this._dataMin;\n    var dataMax = this._dataMax;\n    var axisDataLen = this._axisDataLen;\n    var boundaryGapInner = this._boundaryGapInner;\n    var span = !isOrdinal ? dataMax - dataMin || Math.abs(dataMin) : null; // Currently if a `'value'` axis model min is specified as 'dataMin'/'dataMax',\n    // `boundaryGap` will not be used. It's the different from specifying as `null`/`undefined`.\n\n    var min = this._modelMinRaw === 'dataMin' ? dataMin : this._modelMinNum;\n    var max = this._modelMaxRaw === 'dataMax' ? dataMax : this._modelMaxNum; // If `_modelMinNum`/`_modelMaxNum` is `null`/`undefined`, should not be fixed.\n\n    var minFixed = min != null;\n    var maxFixed = max != null;\n\n    if (min == null) {\n      min = isOrdinal ? axisDataLen ? 0 : NaN : dataMin - boundaryGapInner[0] * span;\n    }\n\n    if (max == null) {\n      max = isOrdinal ? axisDataLen ? axisDataLen - 1 : NaN : dataMax + boundaryGapInner[1] * span;\n    }\n\n    (min == null || !isFinite(min)) && (min = NaN);\n    (max == null || !isFinite(max)) && (max = NaN);\n    var isBlank = eqNaN(min) || eqNaN(max) || isOrdinal && !axisDataLen; // If data extent modified, need to recalculated to ensure cross zero.\n\n    if (this._needCrossZero) {\n      // Axis is over zero and min is not set\n      if (min > 0 && max > 0 && !minFixed) {\n        min = 0; // minFixed = true;\n      } // Axis is under zero and max is not set\n\n\n      if (min < 0 && max < 0 && !maxFixed) {\n        max = 0; // maxFixed = true;\n      } // PENDING:\n      // When `needCrossZero` and all data is positive/negative, should it be ensured\n      // that the results processed by boundaryGap are positive/negative?\n      // If so, here `minFixed`/`maxFixed` need to be set.\n\n    }\n\n    var determinedMin = this._determinedMin;\n    var determinedMax = this._determinedMax;\n\n    if (determinedMin != null) {\n      min = determinedMin;\n      minFixed = true;\n    }\n\n    if (determinedMax != null) {\n      max = determinedMax;\n      maxFixed = true;\n    } // Ensure min/max be finite number or NaN here. (not to be null/undefined)\n    // `NaN` means min/max axis is blank.\n\n\n    return {\n      min: min,\n      max: max,\n      minFixed: minFixed,\n      maxFixed: maxFixed,\n      isBlank: isBlank\n    };\n  };\n\n  ScaleRawExtentInfo.prototype.modifyDataMinMax = function (minMaxName, val) {\n    if (process.env.NODE_ENV !== 'production') {\n      assert(!this.frozen);\n    }\n\n    this[DATA_MIN_MAX_ATTR[minMaxName]] = val;\n  };\n\n  ScaleRawExtentInfo.prototype.setDeterminedMinMax = function (minMaxName, val) {\n    var attr = DETERMINED_MIN_MAX_ATTR[minMaxName];\n\n    if (process.env.NODE_ENV !== 'production') {\n      assert(!this.frozen // Earse them usually means logic flaw.\n      && this[attr] == null);\n    }\n\n    this[attr] = val;\n  };\n\n  ScaleRawExtentInfo.prototype.freeze = function () {\n    // @ts-ignore\n    this.frozen = true;\n  };\n\n  return ScaleRawExtentInfo;\n}();\n\nexport { ScaleRawExtentInfo };\nvar DETERMINED_MIN_MAX_ATTR = {\n  min: '_determinedMin',\n  max: '_determinedMax'\n};\nvar DATA_MIN_MAX_ATTR = {\n  min: '_dataMin',\n  max: '_dataMax'\n};\n/**\r\n * Get scale min max and related info only depends on model settings.\r\n * This method can be called after coordinate system created.\r\n * For example, in data processing stage.\r\n *\r\n * Scale extent info probably be required multiple times during a workflow.\r\n * For example:\r\n * (1) `dataZoom` depends it to get the axis extent in \"100%\" state.\r\n * (2) `processor/extentCalculator` depends it to make sure whether axis extent is specified.\r\n * (3) `coordSys.update` use it to finally decide the scale extent.\r\n * But the callback of `min`/`max` should not be called multiple times.\r\n * The code below should not be implemented repeatedly either.\r\n * So we cache the result in the scale instance, which will be recreated at the beginning\r\n * of the workflow (because `scale` instance will be recreated each round of the workflow).\r\n */\n\nexport function ensureScaleRawExtentInfo(scale, model, // Usually: data extent from all series on this axis.\noriginalExtent) {\n  // Do not permit to recreate.\n  var rawExtentInfo = scale.rawExtentInfo;\n\n  if (rawExtentInfo) {\n    return rawExtentInfo;\n  }\n\n  rawExtentInfo = new ScaleRawExtentInfo(scale, model, originalExtent); // @ts-ignore\n\n  scale.rawExtentInfo = rawExtentInfo;\n  return rawExtentInfo;\n}\nexport function parseAxisModelMinMax(scale, minMax) {\n  return minMax == null ? null : eqNaN(minMax) ? NaN : scale.parse(minMax);\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport * as zrUtil from 'zrender/lib/core/util.js';\nimport OrdinalScale from '../scale/Ordinal.js';\nimport IntervalScale from '../scale/Interval.js';\nimport Scale from '../scale/Scale.js';\nimport { prepareLayoutBarSeries, makeColumnLayout, retrieveColumnLayout } from '../layout/barGrid.js';\nimport BoundingRect from 'zrender/lib/core/BoundingRect.js';\nimport TimeScale from '../scale/Time.js';\nimport LogScale from '../scale/Log.js';\nimport { getStackedDimension } from '../data/helper/dataStackHelper.js';\nimport { ensureScaleRawExtentInfo } from './scaleRawExtentInfo.js';\n/**\r\n * Get axis scale extent before niced.\r\n * Item of returned array can only be number (including Infinity and NaN).\r\n *\r\n * Caution:\r\n * Precondition of calling this method:\r\n * The scale extent has been initialized using series data extent via\r\n * `scale.setExtent` or `scale.unionExtentFromData`;\r\n */\n\nexport function getScaleExtent(scale, model) {\n  var scaleType = scale.type;\n  var rawExtentResult = ensureScaleRawExtentInfo(scale, model, scale.getExtent()).calculate();\n  scale.setBlank(rawExtentResult.isBlank);\n  var min = rawExtentResult.min;\n  var max = rawExtentResult.max; // If bars are placed on a base axis of type time or interval account for axis boundary overflow and current axis\n  // is base axis\n  // FIXME\n  // (1) Consider support value axis, where below zero and axis `onZero` should be handled properly.\n  // (2) Refactor the logic with `barGrid`. Is it not need to `makeBarWidthAndOffsetInfo` twice with different extent?\n  //     Should not depend on series type `bar`?\n  // (3) Fix that might overlap when using dataZoom.\n  // (4) Consider other chart types using `barGrid`?\n  // See #6728, #4862, `test/bar-overflow-time-plot.html`\n\n  var ecModel = model.ecModel;\n\n  if (ecModel && scaleType === 'time'\n  /* || scaleType === 'interval' */\n  ) {\n    var barSeriesModels = prepareLayoutBarSeries('bar', ecModel);\n    var isBaseAxisAndHasBarSeries_1 = false;\n    zrUtil.each(barSeriesModels, function (seriesModel) {\n      isBaseAxisAndHasBarSeries_1 = isBaseAxisAndHasBarSeries_1 || seriesModel.getBaseAxis() === model.axis;\n    });\n\n    if (isBaseAxisAndHasBarSeries_1) {\n      // Calculate placement of bars on axis. TODO should be decoupled\n      // with barLayout\n      var barWidthAndOffset = makeColumnLayout(barSeriesModels); // Adjust axis min and max to account for overflow\n\n      var adjustedScale = adjustScaleForOverflow(min, max, model, barWidthAndOffset);\n      min = adjustedScale.min;\n      max = adjustedScale.max;\n    }\n  }\n\n  return {\n    extent: [min, max],\n    // \"fix\" means \"fixed\", the value should not be\n    // changed in the subsequent steps.\n    fixMin: rawExtentResult.minFixed,\n    fixMax: rawExtentResult.maxFixed\n  };\n}\n\nfunction adjustScaleForOverflow(min, max, model, // Only support cartesian coord yet.\nbarWidthAndOffset) {\n  // Get Axis Length\n  var axisExtent = model.axis.getExtent();\n  var axisLength = axisExtent[1] - axisExtent[0]; // Get bars on current base axis and calculate min and max overflow\n\n  var barsOnCurrentAxis = retrieveColumnLayout(barWidthAndOffset, model.axis);\n\n  if (barsOnCurrentAxis === undefined) {\n    return {\n      min: min,\n      max: max\n    };\n  }\n\n  var minOverflow = Infinity;\n  zrUtil.each(barsOnCurrentAxis, function (item) {\n    minOverflow = Math.min(item.offset, minOverflow);\n  });\n  var maxOverflow = -Infinity;\n  zrUtil.each(barsOnCurrentAxis, function (item) {\n    maxOverflow = Math.max(item.offset + item.width, maxOverflow);\n  });\n  minOverflow = Math.abs(minOverflow);\n  maxOverflow = Math.abs(maxOverflow);\n  var totalOverFlow = minOverflow + maxOverflow; // Calculate required buffer based on old range and overflow\n\n  var oldRange = max - min;\n  var oldRangePercentOfNew = 1 - (minOverflow + maxOverflow) / axisLength;\n  var overflowBuffer = oldRange / oldRangePercentOfNew - oldRange;\n  max += overflowBuffer * (maxOverflow / totalOverFlow);\n  min -= overflowBuffer * (minOverflow / totalOverFlow);\n  return {\n    min: min,\n    max: max\n  };\n} // Precondition of calling this method:\n// The scale extent has been initialized using series data extent via\n// `scale.setExtent` or `scale.unionExtentFromData`;\n\n\nexport function niceScaleExtent(scale, inModel) {\n  var model = inModel;\n  var extentInfo = getScaleExtent(scale, model);\n  var extent = extentInfo.extent;\n  var splitNumber = model.get('splitNumber');\n\n  if (scale instanceof LogScale) {\n    scale.base = model.get('logBase');\n  }\n\n  var scaleType = scale.type;\n  var interval = model.get('interval');\n  var isIntervalOrTime = scaleType === 'interval' || scaleType === 'time';\n  scale.setExtent(extent[0], extent[1]);\n  scale.calcNiceExtent({\n    splitNumber: splitNumber,\n    fixMin: extentInfo.fixMin,\n    fixMax: extentInfo.fixMax,\n    minInterval: isIntervalOrTime ? model.get('minInterval') : null,\n    maxInterval: isIntervalOrTime ? model.get('maxInterval') : null\n  }); // If some one specified the min, max. And the default calculated interval\n  // is not good enough. He can specify the interval. It is often appeared\n  // in angle axis with angle 0 - 360. Interval calculated in interval scale is hard\n  // to be 60.\n  // FIXME\n\n  if (interval != null) {\n    scale.setInterval && scale.setInterval(interval);\n  }\n}\n/**\r\n * @param axisType Default retrieve from model.type\r\n */\n\nexport function createScaleByModel(model, axisType) {\n  axisType = axisType || model.get('type');\n\n  if (axisType) {\n    switch (axisType) {\n      // Buildin scale\n      case 'category':\n        return new OrdinalScale({\n          ordinalMeta: model.getOrdinalMeta ? model.getOrdinalMeta() : model.getCategories(),\n          extent: [Infinity, -Infinity]\n        });\n\n      case 'time':\n        return new TimeScale({\n          locale: model.ecModel.getLocaleModel(),\n          useUTC: model.ecModel.get('useUTC')\n        });\n\n      default:\n        // case 'value'/'interval', 'log', or others.\n        return new (Scale.getClass(axisType) || IntervalScale)();\n    }\n  }\n}\n/**\r\n * Check if the axis cross 0\r\n */\n\nexport function ifAxisCrossZero(axis) {\n  var dataExtent = axis.scale.getExtent();\n  var min = dataExtent[0];\n  var max = dataExtent[1];\n  return !(min > 0 && max > 0 || min < 0 && max < 0);\n}\n/**\r\n * @param axis\r\n * @return Label formatter function.\r\n *         param: {number} tickValue,\r\n *         param: {number} idx, the index in all ticks.\r\n *                         If category axis, this param is not required.\r\n *         return: {string} label string.\r\n */\n\nexport function makeLabelFormatter(axis) {\n  var labelFormatter = axis.getLabelModel().get('formatter');\n  var categoryTickStart = axis.type === 'category' ? axis.scale.getExtent()[0] : null;\n\n  if (axis.scale.type === 'time') {\n    return function (tpl) {\n      return function (tick, idx) {\n        return axis.scale.getFormattedLabel(tick, idx, tpl);\n      };\n    }(labelFormatter);\n  } else if (zrUtil.isString(labelFormatter)) {\n    return function (tpl) {\n      return function (tick) {\n        // For category axis, get raw value; for numeric axis,\n        // get formatted label like '1,333,444'.\n        var label = axis.scale.getLabel(tick);\n        var text = tpl.replace('{value}', label != null ? label : '');\n        return text;\n      };\n    }(labelFormatter);\n  } else if (zrUtil.isFunction(labelFormatter)) {\n    return function (cb) {\n      return function (tick, idx) {\n        // The original intention of `idx` is \"the index of the tick in all ticks\".\n        // But the previous implementation of category axis do not consider the\n        // `axisLabel.interval`, which cause that, for example, the `interval` is\n        // `1`, then the ticks \"name5\", \"name7\", \"name9\" are displayed, where the\n        // corresponding `idx` are `0`, `2`, `4`, but not `0`, `1`, `2`. So we keep\n        // the definition here for back compatibility.\n        if (categoryTickStart != null) {\n          idx = tick.value - categoryTickStart;\n        }\n\n        return cb(getAxisRawValue(axis, tick), idx, tick.level != null ? {\n          level: tick.level\n        } : null);\n      };\n    }(labelFormatter);\n  } else {\n    return function (tick) {\n      return axis.scale.getLabel(tick);\n    };\n  }\n}\nexport function getAxisRawValue(axis, tick) {\n  // In category axis with data zoom, tick is not the original\n  // index of axis.data. So tick should not be exposed to user\n  // in category axis.\n  return axis.type === 'category' ? axis.scale.getLabel(tick) : tick.value;\n}\n/**\r\n * @param axis\r\n * @return Be null/undefined if no labels.\r\n */\n\nexport function estimateLabelUnionRect(axis) {\n  var axisModel = axis.model;\n  var scale = axis.scale;\n\n  if (!axisModel.get(['axisLabel', 'show']) || scale.isBlank()) {\n    return;\n  }\n\n  var realNumberScaleTicks;\n  var tickCount;\n  var categoryScaleExtent = scale.getExtent(); // Optimize for large category data, avoid call `getTicks()`.\n\n  if (scale instanceof OrdinalScale) {\n    tickCount = scale.count();\n  } else {\n    realNumberScaleTicks = scale.getTicks();\n    tickCount = realNumberScaleTicks.length;\n  }\n\n  var axisLabelModel = axis.getLabelModel();\n  var labelFormatter = makeLabelFormatter(axis);\n  var rect;\n  var step = 1; // Simple optimization for large amount of labels\n\n  if (tickCount > 40) {\n    step = Math.ceil(tickCount / 40);\n  }\n\n  for (var i = 0; i < tickCount; i += step) {\n    var tick = realNumberScaleTicks ? realNumberScaleTicks[i] : {\n      value: categoryScaleExtent[0] + i\n    };\n    var label = labelFormatter(tick, i);\n    var unrotatedSingleRect = axisLabelModel.getTextRect(label);\n    var singleRect = rotateTextRect(unrotatedSingleRect, axisLabelModel.get('rotate') || 0);\n    rect ? rect.union(singleRect) : rect = singleRect;\n  }\n\n  return rect;\n}\n\nfunction rotateTextRect(textRect, rotate) {\n  var rotateRadians = rotate * Math.PI / 180;\n  var beforeWidth = textRect.width;\n  var beforeHeight = textRect.height;\n  var afterWidth = beforeWidth * Math.abs(Math.cos(rotateRadians)) + Math.abs(beforeHeight * Math.sin(rotateRadians));\n  var afterHeight = beforeWidth * Math.abs(Math.sin(rotateRadians)) + Math.abs(beforeHeight * Math.cos(rotateRadians));\n  var rotatedRect = new BoundingRect(textRect.x, textRect.y, afterWidth, afterHeight);\n  return rotatedRect;\n}\n/**\r\n * @param model axisLabelModel or axisTickModel\r\n * @return {number|String} Can be null|'auto'|number|function\r\n */\n\n\nexport function getOptionCategoryInterval(model) {\n  var interval = model.get('interval');\n  return interval == null ? 'auto' : interval;\n}\n/**\r\n * Set `categoryInterval` as 0 implicitly indicates that\r\n * show all labels regardless of overlap.\r\n * @param {Object} axis axisModel.axis\r\n */\n\nexport function shouldShowAllLabels(axis) {\n  return axis.type === 'category' && getOptionCategoryInterval(axis.getLabelModel()) === 0;\n}\nexport function getDataDimensionsOnAxis(data, axisDim) {\n  // Remove duplicated dat dimensions caused by `getStackedDimension`.\n  var dataDimMap = {}; // Currently `mapDimensionsAll` will contain stack result dimension ('__\\0ecstackresult').\n  // PENDING: is it reasonable? Do we need to remove the original dim from \"coord dim\" since\n  // there has been stacked result dim?\n\n  zrUtil.each(data.mapDimensionsAll(axisDim), function (dataDim) {\n    // For example, the extent of the original dimension\n    // is [0.1, 0.5], the extent of the `stackResultDimension`\n    // is [7, 9], the final extent should NOT include [0.1, 0.5],\n    // because there is no graphic corresponding to [0.1, 0.5].\n    // See the case in `test/area-stack.html` `main1`, where area line\n    // stack needs `yAxis` not start from 0.\n    dataDimMap[getStackedDimension(data, dataDim)] = true;\n  });\n  return zrUtil.keys(dataDimMap);\n}\nexport function unionAxisExtentFromData(dataExtent, data, axisDim) {\n  if (data) {\n    zrUtil.each(getDataDimensionsOnAxis(data, axisDim), function (dim) {\n      var seriesExtent = data.getApproximateExtent(dim);\n      seriesExtent[0] < dataExtent[0] && (dataExtent[0] = seriesExtent[0]);\n      seriesExtent[1] > dataExtent[1] && (dataExtent[1] = seriesExtent[1]);\n    });\n  }\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nvar AxisModelCommonMixin =\n/** @class */\nfunction () {\n  function AxisModelCommonMixin() {}\n\n  AxisModelCommonMixin.prototype.getNeedCrossZero = function () {\n    var option = this.option;\n    return !option.scale;\n  };\n  /**\r\n   * Should be implemented by each axis model if necessary.\r\n   * @return coordinate system model\r\n   */\n\n\n  AxisModelCommonMixin.prototype.getCoordSysModel = function () {\n    return;\n  };\n\n  return AxisModelCommonMixin;\n}();\n\nexport { AxisModelCommonMixin };","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\n\n/**\r\n * This module exposes helper functions for developing extensions.\r\n */\nimport * as zrUtil from 'zrender/lib/core/util.js';\nimport createSeriesData from '../../chart/helper/createSeriesData.js'; // import createGraphFromNodeEdge from './chart/helper/createGraphFromNodeEdge.js';\n\nimport * as axisHelper from '../../coord/axisHelper.js';\nimport { AxisModelCommonMixin } from '../../coord/axisModelCommonMixin.js';\nimport Model from '../../model/Model.js';\nimport { getLayoutRect } from '../../util/layout.js';\nimport { enableDataStack, isDimensionStacked, getStackedDimension } from '../../data/helper/dataStackHelper.js';\nimport { getECData } from '../../util/innerStore.js';\nimport { createTextStyle as innerCreateTextStyle } from '../../label/labelStyle.js';\n/**\r\n * Create a multi dimension List structure from seriesModel.\r\n */\n\nexport function createList(seriesModel) {\n  return createSeriesData(null, seriesModel);\n} // export function createGraph(seriesModel) {\n//     let nodes = seriesModel.get('data');\n//     let links = seriesModel.get('links');\n//     return createGraphFromNodeEdge(nodes, links, seriesModel);\n// }\n\nexport { getLayoutRect };\nexport { createDimensions } from '../../data/helper/createDimensions.js';\nexport var dataStack = {\n  isDimensionStacked: isDimensionStacked,\n  enableDataStack: enableDataStack,\n  getStackedDimension: getStackedDimension\n};\n/**\r\n * Create a symbol element with given symbol configuration: shape, x, y, width, height, color\r\n * @param {string} symbolDesc\r\n * @param {number} x\r\n * @param {number} y\r\n * @param {number} w\r\n * @param {number} h\r\n * @param {string} color\r\n */\n\nexport { createSymbol } from '../../util/symbol.js';\n/**\r\n * Create scale\r\n * @param {Array.<number>} dataExtent\r\n * @param {Object|module:echarts/Model} option If `optoin.type`\r\n *        is secified, it can only be `'value'` currently.\r\n */\n\nexport function createScale(dataExtent, option) {\n  var axisModel = option;\n\n  if (!(option instanceof Model)) {\n    axisModel = new Model(option); // FIXME\n    // Currently AxisModelCommonMixin has nothing to do with the\n    // the requirements of `axisHelper.createScaleByModel`. For\n    // example the methods `getCategories` and `getOrdinalMeta`\n    // are required for `'category'` axis, and ecModel is required\n    // for `'time'` axis. But occasionally echarts-gl happened\n    // to only use `'value'` axis.\n    // zrUtil.mixin(axisModel, AxisModelCommonMixin);\n  }\n\n  var scale = axisHelper.createScaleByModel(axisModel);\n  scale.setExtent(dataExtent[0], dataExtent[1]);\n  axisHelper.niceScaleExtent(scale, axisModel);\n  return scale;\n}\n/**\r\n * Mixin common methods to axis model,\r\n *\r\n * Include methods\r\n * `getFormattedLabels() => Array.<string>`\r\n * `getCategories() => Array.<string>`\r\n * `getMin(origin: boolean) => number`\r\n * `getMax(origin: boolean) => number`\r\n * `getNeedCrossZero() => boolean`\r\n */\n\nexport function mixinAxisModelCommonMethods(Model) {\n  zrUtil.mixin(Model, AxisModelCommonMixin);\n}\nexport { getECData };\nexport { enableHoverEmphasis } from '../../util/states.js';\nexport function createTextStyle(textStyleModel, opts) {\n  opts = opts || {};\n  return innerCreateTextStyle(textStyleModel, null, null, opts.state !== 'normal');\n}","import windingLine from './windingLine.js';\nvar EPSILON = 1e-8;\nfunction isAroundEqual(a, b) {\n    return Math.abs(a - b) < EPSILON;\n}\nexport function contain(points, x, y) {\n    var w = 0;\n    var p = points[0];\n    if (!p) {\n        return false;\n    }\n    for (var i = 1; i < points.length; i++) {\n        var p2 = points[i];\n        w += windingLine(p[0], p[1], p2[0], p2[1], x, y);\n        p = p2;\n    }\n    var p0 = points[0];\n    if (!isAroundEqual(p[0], p0[0]) || !isAroundEqual(p[1], p0[1])) {\n        w += windingLine(p[0], p[1], p0[0], p0[1], x, y);\n    }\n    return w !== 0;\n}\n","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { __extends } from \"tslib\";\nimport BoundingRect from 'zrender/lib/core/BoundingRect.js';\nimport * as vec2 from 'zrender/lib/core/vector.js';\nimport * as polygonContain from 'zrender/lib/contain/polygon.js';\nimport * as matrix from 'zrender/lib/core/matrix.js';\nimport { each } from 'zrender/lib/core/util.js';\nvar TMP_TRANSFORM = [];\n\nfunction transformPoints(points, transform) {\n  for (var p = 0; p < points.length; p++) {\n    vec2.applyTransform(points[p], points[p], transform);\n  }\n}\n\nfunction updateBBoxFromPoints(points, min, max, projection) {\n  for (var i = 0; i < points.length; i++) {\n    var p = points[i];\n\n    if (projection) {\n      // projection may return null point.\n      p = projection.project(p);\n    }\n\n    if (p && isFinite(p[0]) && isFinite(p[1])) {\n      vec2.min(min, min, p);\n      vec2.max(max, max, p);\n    }\n  }\n}\n\nfunction centroid(points) {\n  var signedArea = 0;\n  var cx = 0;\n  var cy = 0;\n  var len = points.length;\n  var x0 = points[len - 1][0];\n  var y0 = points[len - 1][1]; // Polygon should been closed.\n\n  for (var i = 0; i < len; i++) {\n    var x1 = points[i][0];\n    var y1 = points[i][1];\n    var a = x0 * y1 - x1 * y0;\n    signedArea += a;\n    cx += (x0 + x1) * a;\n    cy += (y0 + y1) * a;\n    x0 = x1;\n    y0 = y1;\n  }\n\n  return signedArea ? [cx / signedArea / 3, cy / signedArea / 3, signedArea] : [points[0][0] || 0, points[0][1] || 0];\n}\n\nvar Region =\n/** @class */\nfunction () {\n  function Region(name) {\n    this.name = name;\n  }\n\n  Region.prototype.setCenter = function (center) {\n    this._center = center;\n  };\n  /**\r\n   * Get center point in data unit. That is,\r\n   * for GeoJSONRegion, the unit is lat/lng,\r\n   * for GeoSVGRegion, the unit is SVG local coord.\r\n   */\n\n\n  Region.prototype.getCenter = function () {\n    var center = this._center;\n\n    if (!center) {\n      // In most cases there are no need to calculate this center.\n      // So calculate only when called.\n      center = this._center = this.calcCenter();\n    }\n\n    return center;\n  };\n\n  return Region;\n}();\n\nexport { Region };\n\nvar GeoJSONPolygonGeometry =\n/** @class */\nfunction () {\n  function GeoJSONPolygonGeometry(exterior, interiors) {\n    this.type = 'polygon';\n    this.exterior = exterior;\n    this.interiors = interiors;\n  }\n\n  return GeoJSONPolygonGeometry;\n}();\n\nexport { GeoJSONPolygonGeometry };\n\nvar GeoJSONLineStringGeometry =\n/** @class */\nfunction () {\n  function GeoJSONLineStringGeometry(points) {\n    this.type = 'linestring';\n    this.points = points;\n  }\n\n  return GeoJSONLineStringGeometry;\n}();\n\nexport { GeoJSONLineStringGeometry };\n\nvar GeoJSONRegion =\n/** @class */\nfunction (_super) {\n  __extends(GeoJSONRegion, _super);\n\n  function GeoJSONRegion(name, geometries, cp) {\n    var _this = _super.call(this, name) || this;\n\n    _this.type = 'geoJSON';\n    _this.geometries = geometries;\n    _this._center = cp && [cp[0], cp[1]];\n    return _this;\n  }\n\n  GeoJSONRegion.prototype.calcCenter = function () {\n    var geometries = this.geometries;\n    var largestGeo;\n    var largestGeoSize = 0;\n\n    for (var i = 0; i < geometries.length; i++) {\n      var geo = geometries[i];\n      var exterior = geo.exterior; // Simple trick to use points count instead of polygon area as region size.\n      // Ignore linestring\n\n      var size = exterior && exterior.length;\n\n      if (size > largestGeoSize) {\n        largestGeo = geo;\n        largestGeoSize = size;\n      }\n    }\n\n    if (largestGeo) {\n      return centroid(largestGeo.exterior);\n    } // from bounding rect by default.\n\n\n    var rect = this.getBoundingRect();\n    return [rect.x + rect.width / 2, rect.y + rect.height / 2];\n  };\n\n  GeoJSONRegion.prototype.getBoundingRect = function (projection) {\n    var rect = this._rect; // Always recalculate if using projection.\n\n    if (rect && !projection) {\n      return rect;\n    }\n\n    var min = [Infinity, Infinity];\n    var max = [-Infinity, -Infinity];\n    var geometries = this.geometries;\n    each(geometries, function (geo) {\n      if (geo.type === 'polygon') {\n        // Doesn't consider hole\n        updateBBoxFromPoints(geo.exterior, min, max, projection);\n      } else {\n        each(geo.points, function (points) {\n          updateBBoxFromPoints(points, min, max, projection);\n        });\n      }\n    }); // Normalie invalid bounding.\n\n    if (!(isFinite(min[0]) && isFinite(min[1]) && isFinite(max[0]) && isFinite(max[1]))) {\n      min[0] = min[1] = max[0] = max[1] = 0;\n    }\n\n    rect = new BoundingRect(min[0], min[1], max[0] - min[0], max[1] - min[1]);\n\n    if (!projection) {\n      this._rect = rect;\n    }\n\n    return rect;\n  };\n\n  GeoJSONRegion.prototype.contain = function (coord) {\n    var rect = this.getBoundingRect();\n    var geometries = this.geometries;\n\n    if (!rect.contain(coord[0], coord[1])) {\n      return false;\n    }\n\n    loopGeo: for (var i = 0, len = geometries.length; i < len; i++) {\n      var geo = geometries[i]; // Only support polygon.\n\n      if (geo.type !== 'polygon') {\n        continue;\n      }\n\n      var exterior = geo.exterior;\n      var interiors = geo.interiors;\n\n      if (polygonContain.contain(exterior, coord[0], coord[1])) {\n        // Not in the region if point is in the hole.\n        for (var k = 0; k < (interiors ? interiors.length : 0); k++) {\n          if (polygonContain.contain(interiors[k], coord[0], coord[1])) {\n            continue loopGeo;\n          }\n        }\n\n        return true;\n      }\n    }\n\n    return false;\n  };\n  /**\r\n   * Transform the raw coords to target bounding.\r\n   * @param x\r\n   * @param y\r\n   * @param width\r\n   * @param height\r\n   */\n\n\n  GeoJSONRegion.prototype.transformTo = function (x, y, width, height) {\n    var rect = this.getBoundingRect();\n    var aspect = rect.width / rect.height;\n\n    if (!width) {\n      width = aspect * height;\n    } else if (!height) {\n      height = width / aspect;\n    }\n\n    var target = new BoundingRect(x, y, width, height);\n    var transform = rect.calculateTransform(target);\n    var geometries = this.geometries;\n\n    for (var i = 0; i < geometries.length; i++) {\n      var geo = geometries[i];\n\n      if (geo.type === 'polygon') {\n        transformPoints(geo.exterior, transform);\n        each(geo.interiors, function (interior) {\n          transformPoints(interior, transform);\n        });\n      } else {\n        each(geo.points, function (points) {\n          transformPoints(points, transform);\n        });\n      }\n    }\n\n    rect = this._rect;\n    rect.copy(target); // Update center\n\n    this._center = [rect.x + rect.width / 2, rect.y + rect.height / 2];\n  };\n\n  GeoJSONRegion.prototype.cloneShallow = function (name) {\n    name == null && (name = this.name);\n    var newRegion = new GeoJSONRegion(name, this.geometries, this._center);\n    newRegion._rect = this._rect;\n    newRegion.transformTo = null; // Simply avoid to be called.\n\n    return newRegion;\n  };\n\n  return GeoJSONRegion;\n}(Region);\n\nexport { GeoJSONRegion };\n\nvar GeoSVGRegion =\n/** @class */\nfunction (_super) {\n  __extends(GeoSVGRegion, _super);\n\n  function GeoSVGRegion(name, elOnlyForCalculate) {\n    var _this = _super.call(this, name) || this;\n\n    _this.type = 'geoSVG';\n    _this._elOnlyForCalculate = elOnlyForCalculate;\n    return _this;\n  }\n\n  GeoSVGRegion.prototype.calcCenter = function () {\n    var el = this._elOnlyForCalculate;\n    var rect = el.getBoundingRect();\n    var center = [rect.x + rect.width / 2, rect.y + rect.height / 2];\n    var mat = matrix.identity(TMP_TRANSFORM);\n    var target = el;\n\n    while (target && !target.isGeoSVGGraphicRoot) {\n      matrix.mul(mat, target.getLocalTransform(), mat);\n      target = target.parent;\n    }\n\n    matrix.invert(mat, mat);\n    vec2.applyTransform(center, center, mat);\n    return center;\n  };\n\n  return GeoSVGRegion;\n}(Region);\n\nexport { GeoSVGRegion };","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\n\n/**\r\n * Parse and decode geo json\r\n */\nimport * as zrUtil from 'zrender/lib/core/util.js';\nimport { GeoJSONLineStringGeometry, GeoJSONPolygonGeometry, GeoJSONRegion } from './Region.js';\n\nfunction decode(json) {\n  if (!json.UTF8Encoding) {\n    return json;\n  }\n\n  var jsonCompressed = json;\n  var encodeScale = jsonCompressed.UTF8Scale;\n\n  if (encodeScale == null) {\n    encodeScale = 1024;\n  }\n\n  var features = jsonCompressed.features;\n  zrUtil.each(features, function (feature) {\n    var geometry = feature.geometry;\n    var encodeOffsets = geometry.encodeOffsets;\n    var coordinates = geometry.coordinates; // Geometry may be appeded manually in the script after json loaded.\n    // In this case this geometry is usually not encoded.\n\n    if (!encodeOffsets) {\n      return;\n    }\n\n    switch (geometry.type) {\n      case 'LineString':\n        geometry.coordinates = decodeRing(coordinates, encodeOffsets, encodeScale);\n        break;\n\n      case 'Polygon':\n        decodeRings(coordinates, encodeOffsets, encodeScale);\n        break;\n\n      case 'MultiLineString':\n        decodeRings(coordinates, encodeOffsets, encodeScale);\n        break;\n\n      case 'MultiPolygon':\n        zrUtil.each(coordinates, function (rings, idx) {\n          return decodeRings(rings, encodeOffsets[idx], encodeScale);\n        });\n    }\n  }); // Has been decoded\n\n  jsonCompressed.UTF8Encoding = false;\n  return jsonCompressed;\n}\n\nfunction decodeRings(rings, encodeOffsets, encodeScale) {\n  for (var c = 0; c < rings.length; c++) {\n    rings[c] = decodeRing(rings[c], encodeOffsets[c], encodeScale);\n  }\n}\n\nfunction decodeRing(coordinate, encodeOffsets, encodeScale) {\n  var result = [];\n  var prevX = encodeOffsets[0];\n  var prevY = encodeOffsets[1];\n\n  for (var i = 0; i < coordinate.length; i += 2) {\n    var x = coordinate.charCodeAt(i) - 64;\n    var y = coordinate.charCodeAt(i + 1) - 64; // ZigZag decoding\n\n    x = x >> 1 ^ -(x & 1);\n    y = y >> 1 ^ -(y & 1); // Delta deocding\n\n    x += prevX;\n    y += prevY;\n    prevX = x;\n    prevY = y; // Dequantize\n\n    result.push([x / encodeScale, y / encodeScale]);\n  }\n\n  return result;\n}\n\nexport default function parseGeoJSON(geoJson, nameProperty) {\n  geoJson = decode(geoJson);\n  return zrUtil.map(zrUtil.filter(geoJson.features, function (featureObj) {\n    // Output of mapshaper may have geometry null\n    return featureObj.geometry && featureObj.properties && featureObj.geometry.coordinates.length > 0;\n  }), function (featureObj) {\n    var properties = featureObj.properties;\n    var geo = featureObj.geometry;\n    var geometries = [];\n\n    switch (geo.type) {\n      case 'Polygon':\n        var coordinates = geo.coordinates; // According to the GeoJSON specification.\n        // First must be exterior, and the rest are all interior(holes).\n\n        geometries.push(new GeoJSONPolygonGeometry(coordinates[0], coordinates.slice(1)));\n        break;\n\n      case 'MultiPolygon':\n        zrUtil.each(geo.coordinates, function (item) {\n          if (item[0]) {\n            geometries.push(new GeoJSONPolygonGeometry(item[0], item.slice(1)));\n          }\n        });\n        break;\n\n      case 'LineString':\n        geometries.push(new GeoJSONLineStringGeometry([geo.coordinates]));\n        break;\n\n      case 'MultiLineString':\n        geometries.push(new GeoJSONLineStringGeometry(geo.coordinates));\n    }\n\n    var region = new GeoJSONRegion(properties[nameProperty || 'name'], geometries, properties.cp);\n    region.properties = properties;\n    return region;\n  });\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { Text } from '../util/graphic.js';\nexport function getTextRect(text, font, align, verticalAlign, padding, rich, truncate, lineHeight) {\n  var textEl = new Text({\n    style: {\n      text: text,\n      font: font,\n      align: align,\n      verticalAlign: verticalAlign,\n      padding: padding,\n      rich: rich,\n      overflow: truncate ? 'truncate' : null,\n      lineHeight: lineHeight\n    }\n  });\n  return textEl.getBoundingRect();\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport * as zrUtil from 'zrender/lib/core/util.js';\nimport * as textContain from 'zrender/lib/contain/text.js';\nimport { makeInner } from '../util/model.js';\nimport { makeLabelFormatter, getOptionCategoryInterval, shouldShowAllLabels } from './axisHelper.js';\nvar inner = makeInner();\nexport function createAxisLabels(axis) {\n  // Only ordinal scale support tick interval\n  return axis.type === 'category' ? makeCategoryLabels(axis) : makeRealNumberLabels(axis);\n}\n/**\r\n * @param {module:echats/coord/Axis} axis\r\n * @param {module:echarts/model/Model} tickModel For example, can be axisTick, splitLine, splitArea.\r\n * @return {Object} {\r\n *     ticks: Array.<number>\r\n *     tickCategoryInterval: number\r\n * }\r\n */\n\nexport function createAxisTicks(axis, tickModel) {\n  // Only ordinal scale support tick interval\n  return axis.type === 'category' ? makeCategoryTicks(axis, tickModel) : {\n    ticks: zrUtil.map(axis.scale.getTicks(), function (tick) {\n      return tick.value;\n    })\n  };\n}\n\nfunction makeCategoryLabels(axis) {\n  var labelModel = axis.getLabelModel();\n  var result = makeCategoryLabelsActually(axis, labelModel);\n  return !labelModel.get('show') || axis.scale.isBlank() ? {\n    labels: [],\n    labelCategoryInterval: result.labelCategoryInterval\n  } : result;\n}\n\nfunction makeCategoryLabelsActually(axis, labelModel) {\n  var labelsCache = getListCache(axis, 'labels');\n  var optionLabelInterval = getOptionCategoryInterval(labelModel);\n  var result = listCacheGet(labelsCache, optionLabelInterval);\n\n  if (result) {\n    return result;\n  }\n\n  var labels;\n  var numericLabelInterval;\n\n  if (zrUtil.isFunction(optionLabelInterval)) {\n    labels = makeLabelsByCustomizedCategoryInterval(axis, optionLabelInterval);\n  } else {\n    numericLabelInterval = optionLabelInterval === 'auto' ? makeAutoCategoryInterval(axis) : optionLabelInterval;\n    labels = makeLabelsByNumericCategoryInterval(axis, numericLabelInterval);\n  } // Cache to avoid calling interval function repeatedly.\n\n\n  return listCacheSet(labelsCache, optionLabelInterval, {\n    labels: labels,\n    labelCategoryInterval: numericLabelInterval\n  });\n}\n\nfunction makeCategoryTicks(axis, tickModel) {\n  var ticksCache = getListCache(axis, 'ticks');\n  var optionTickInterval = getOptionCategoryInterval(tickModel);\n  var result = listCacheGet(ticksCache, optionTickInterval);\n\n  if (result) {\n    return result;\n  }\n\n  var ticks;\n  var tickCategoryInterval; // Optimize for the case that large category data and no label displayed,\n  // we should not return all ticks.\n\n  if (!tickModel.get('show') || axis.scale.isBlank()) {\n    ticks = [];\n  }\n\n  if (zrUtil.isFunction(optionTickInterval)) {\n    ticks = makeLabelsByCustomizedCategoryInterval(axis, optionTickInterval, true);\n  } // Always use label interval by default despite label show. Consider this\n  // scenario, Use multiple grid with the xAxis sync, and only one xAxis shows\n  // labels. `splitLine` and `axisTick` should be consistent in this case.\n  else if (optionTickInterval === 'auto') {\n      var labelsResult = makeCategoryLabelsActually(axis, axis.getLabelModel());\n      tickCategoryInterval = labelsResult.labelCategoryInterval;\n      ticks = zrUtil.map(labelsResult.labels, function (labelItem) {\n        return labelItem.tickValue;\n      });\n    } else {\n      tickCategoryInterval = optionTickInterval;\n      ticks = makeLabelsByNumericCategoryInterval(axis, tickCategoryInterval, true);\n    } // Cache to avoid calling interval function repeatedly.\n\n\n  return listCacheSet(ticksCache, optionTickInterval, {\n    ticks: ticks,\n    tickCategoryInterval: tickCategoryInterval\n  });\n}\n\nfunction makeRealNumberLabels(axis) {\n  var ticks = axis.scale.getTicks();\n  var labelFormatter = makeLabelFormatter(axis);\n  return {\n    labels: zrUtil.map(ticks, function (tick, idx) {\n      return {\n        level: tick.level,\n        formattedLabel: labelFormatter(tick, idx),\n        rawLabel: axis.scale.getLabel(tick),\n        tickValue: tick.value\n      };\n    })\n  };\n}\n\nfunction getListCache(axis, prop) {\n  // Because key can be a function, and cache size always is small, we use array cache.\n  return inner(axis)[prop] || (inner(axis)[prop] = []);\n}\n\nfunction listCacheGet(cache, key) {\n  for (var i = 0; i < cache.length; i++) {\n    if (cache[i].key === key) {\n      return cache[i].value;\n    }\n  }\n}\n\nfunction listCacheSet(cache, key, value) {\n  cache.push({\n    key: key,\n    value: value\n  });\n  return value;\n}\n\nfunction makeAutoCategoryInterval(axis) {\n  var result = inner(axis).autoInterval;\n  return result != null ? result : inner(axis).autoInterval = axis.calculateCategoryInterval();\n}\n/**\r\n * Calculate interval for category axis ticks and labels.\r\n * To get precise result, at least one of `getRotate` and `isHorizontal`\r\n * should be implemented in axis.\r\n */\n\n\nexport function calculateCategoryInterval(axis) {\n  var params = fetchAutoCategoryIntervalCalculationParams(axis);\n  var labelFormatter = makeLabelFormatter(axis);\n  var rotation = (params.axisRotate - params.labelRotate) / 180 * Math.PI;\n  var ordinalScale = axis.scale;\n  var ordinalExtent = ordinalScale.getExtent(); // Providing this method is for optimization:\n  // avoid generating a long array by `getTicks`\n  // in large category data case.\n\n  var tickCount = ordinalScale.count();\n\n  if (ordinalExtent[1] - ordinalExtent[0] < 1) {\n    return 0;\n  }\n\n  var step = 1; // Simple optimization. Empirical value: tick count should less than 40.\n\n  if (tickCount > 40) {\n    step = Math.max(1, Math.floor(tickCount / 40));\n  }\n\n  var tickValue = ordinalExtent[0];\n  var unitSpan = axis.dataToCoord(tickValue + 1) - axis.dataToCoord(tickValue);\n  var unitW = Math.abs(unitSpan * Math.cos(rotation));\n  var unitH = Math.abs(unitSpan * Math.sin(rotation));\n  var maxW = 0;\n  var maxH = 0; // Caution: Performance sensitive for large category data.\n  // Consider dataZoom, we should make appropriate step to avoid O(n) loop.\n\n  for (; tickValue <= ordinalExtent[1]; tickValue += step) {\n    var width = 0;\n    var height = 0; // Not precise, do not consider align and vertical align\n    // and each distance from axis line yet.\n\n    var rect = textContain.getBoundingRect(labelFormatter({\n      value: tickValue\n    }), params.font, 'center', 'top'); // Magic number\n\n    width = rect.width * 1.3;\n    height = rect.height * 1.3; // Min size, void long loop.\n\n    maxW = Math.max(maxW, width, 7);\n    maxH = Math.max(maxH, height, 7);\n  }\n\n  var dw = maxW / unitW;\n  var dh = maxH / unitH; // 0/0 is NaN, 1/0 is Infinity.\n\n  isNaN(dw) && (dw = Infinity);\n  isNaN(dh) && (dh = Infinity);\n  var interval = Math.max(0, Math.floor(Math.min(dw, dh)));\n  var cache = inner(axis.model);\n  var axisExtent = axis.getExtent();\n  var lastAutoInterval = cache.lastAutoInterval;\n  var lastTickCount = cache.lastTickCount; // Use cache to keep interval stable while moving zoom window,\n  // otherwise the calculated interval might jitter when the zoom\n  // window size is close to the interval-changing size.\n  // For example, if all of the axis labels are `a, b, c, d, e, f, g`.\n  // The jitter will cause that sometimes the displayed labels are\n  // `a, d, g` (interval: 2) sometimes `a, c, e`(interval: 1).\n\n  if (lastAutoInterval != null && lastTickCount != null && Math.abs(lastAutoInterval - interval) <= 1 && Math.abs(lastTickCount - tickCount) <= 1 // Always choose the bigger one, otherwise the critical\n  // point is not the same when zooming in or zooming out.\n  && lastAutoInterval > interval // If the axis change is caused by chart resize, the cache should not\n  // be used. Otherwise some hidden labels might not be shown again.\n  && cache.axisExtent0 === axisExtent[0] && cache.axisExtent1 === axisExtent[1]) {\n    interval = lastAutoInterval;\n  } // Only update cache if cache not used, otherwise the\n  // changing of interval is too insensitive.\n  else {\n      cache.lastTickCount = tickCount;\n      cache.lastAutoInterval = interval;\n      cache.axisExtent0 = axisExtent[0];\n      cache.axisExtent1 = axisExtent[1];\n    }\n\n  return interval;\n}\n\nfunction fetchAutoCategoryIntervalCalculationParams(axis) {\n  var labelModel = axis.getLabelModel();\n  return {\n    axisRotate: axis.getRotate ? axis.getRotate() : axis.isHorizontal && !axis.isHorizontal() ? 90 : 0,\n    labelRotate: labelModel.get('rotate') || 0,\n    font: labelModel.getFont()\n  };\n}\n\nfunction makeLabelsByNumericCategoryInterval(axis, categoryInterval, onlyTick) {\n  var labelFormatter = makeLabelFormatter(axis);\n  var ordinalScale = axis.scale;\n  var ordinalExtent = ordinalScale.getExtent();\n  var labelModel = axis.getLabelModel();\n  var result = []; // TODO: axisType: ordinalTime, pick the tick from each month/day/year/...\n\n  var step = Math.max((categoryInterval || 0) + 1, 1);\n  var startTick = ordinalExtent[0];\n  var tickCount = ordinalScale.count(); // Calculate start tick based on zero if possible to keep label consistent\n  // while zooming and moving while interval > 0. Otherwise the selection\n  // of displayable ticks and symbols probably keep changing.\n  // 3 is empirical value.\n\n  if (startTick !== 0 && step > 1 && tickCount / step > 2) {\n    startTick = Math.round(Math.ceil(startTick / step) * step);\n  } // (1) Only add min max label here but leave overlap checking\n  // to render stage, which also ensure the returned list\n  // suitable for splitLine and splitArea rendering.\n  // (2) Scales except category always contain min max label so\n  // do not need to perform this process.\n\n\n  var showAllLabel = shouldShowAllLabels(axis);\n  var includeMinLabel = labelModel.get('showMinLabel') || showAllLabel;\n  var includeMaxLabel = labelModel.get('showMaxLabel') || showAllLabel;\n\n  if (includeMinLabel && startTick !== ordinalExtent[0]) {\n    addItem(ordinalExtent[0]);\n  } // Optimize: avoid generating large array by `ordinalScale.getTicks()`.\n\n\n  var tickValue = startTick;\n\n  for (; tickValue <= ordinalExtent[1]; tickValue += step) {\n    addItem(tickValue);\n  }\n\n  if (includeMaxLabel && tickValue - step !== ordinalExtent[1]) {\n    addItem(ordinalExtent[1]);\n  }\n\n  function addItem(tickValue) {\n    var tickObj = {\n      value: tickValue\n    };\n    result.push(onlyTick ? tickValue : {\n      formattedLabel: labelFormatter(tickObj),\n      rawLabel: ordinalScale.getLabel(tickObj),\n      tickValue: tickValue\n    });\n  }\n\n  return result;\n}\n\nfunction makeLabelsByCustomizedCategoryInterval(axis, categoryInterval, onlyTick) {\n  var ordinalScale = axis.scale;\n  var labelFormatter = makeLabelFormatter(axis);\n  var result = [];\n  zrUtil.each(ordinalScale.getTicks(), function (tick) {\n    var rawLabel = ordinalScale.getLabel(tick);\n    var tickValue = tick.value;\n\n    if (categoryInterval(tick.value, rawLabel)) {\n      result.push(onlyTick ? tickValue : {\n        formattedLabel: labelFormatter(tick),\n        rawLabel: rawLabel,\n        tickValue: tickValue\n      });\n    }\n  });\n  return result;\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { each, map } from 'zrender/lib/core/util.js';\nimport { linearMap, getPixelPrecision, round } from '../util/number.js';\nimport { createAxisTicks, createAxisLabels, calculateCategoryInterval } from './axisTickLabelBuilder.js';\nvar NORMALIZED_EXTENT = [0, 1];\n/**\r\n * Base class of Axis.\r\n */\n\nvar Axis =\n/** @class */\nfunction () {\n  function Axis(dim, scale, extent) {\n    this.onBand = false;\n    this.inverse = false;\n    this.dim = dim;\n    this.scale = scale;\n    this._extent = extent || [0, 0];\n  }\n  /**\r\n   * If axis extent contain given coord\r\n   */\n\n\n  Axis.prototype.contain = function (coord) {\n    var extent = this._extent;\n    var min = Math.min(extent[0], extent[1]);\n    var max = Math.max(extent[0], extent[1]);\n    return coord >= min && coord <= max;\n  };\n  /**\r\n   * If axis extent contain given data\r\n   */\n\n\n  Axis.prototype.containData = function (data) {\n    return this.scale.contain(data);\n  };\n  /**\r\n   * Get coord extent.\r\n   */\n\n\n  Axis.prototype.getExtent = function () {\n    return this._extent.slice();\n  };\n  /**\r\n   * Get precision used for formatting\r\n   */\n\n\n  Axis.prototype.getPixelPrecision = function (dataExtent) {\n    return getPixelPrecision(dataExtent || this.scale.getExtent(), this._extent);\n  };\n  /**\r\n   * Set coord extent\r\n   */\n\n\n  Axis.prototype.setExtent = function (start, end) {\n    var extent = this._extent;\n    extent[0] = start;\n    extent[1] = end;\n  };\n  /**\r\n   * Convert data to coord. Data is the rank if it has an ordinal scale\r\n   */\n\n\n  Axis.prototype.dataToCoord = function (data, clamp) {\n    var extent = this._extent;\n    var scale = this.scale;\n    data = scale.normalize(data);\n\n    if (this.onBand && scale.type === 'ordinal') {\n      extent = extent.slice();\n      fixExtentWithBands(extent, scale.count());\n    }\n\n    return linearMap(data, NORMALIZED_EXTENT, extent, clamp);\n  };\n  /**\r\n   * Convert coord to data. Data is the rank if it has an ordinal scale\r\n   */\n\n\n  Axis.prototype.coordToData = function (coord, clamp) {\n    var extent = this._extent;\n    var scale = this.scale;\n\n    if (this.onBand && scale.type === 'ordinal') {\n      extent = extent.slice();\n      fixExtentWithBands(extent, scale.count());\n    }\n\n    var t = linearMap(coord, extent, NORMALIZED_EXTENT, clamp);\n    return this.scale.scale(t);\n  };\n  /**\r\n   * Convert pixel point to data in axis\r\n   */\n\n\n  Axis.prototype.pointToData = function (point, clamp) {\n    // Should be implemented in derived class if necessary.\n    return;\n  };\n  /**\r\n   * Different from `zrUtil.map(axis.getTicks(), axis.dataToCoord, axis)`,\r\n   * `axis.getTicksCoords` considers `onBand`, which is used by\r\n   * `boundaryGap:true` of category axis and splitLine and splitArea.\r\n   * @param opt.tickModel default: axis.model.getModel('axisTick')\r\n   * @param opt.clamp If `true`, the first and the last\r\n   *        tick must be at the axis end points. Otherwise, clip ticks\r\n   *        that outside the axis extent.\r\n   */\n\n\n  Axis.prototype.getTicksCoords = function (opt) {\n    opt = opt || {};\n    var tickModel = opt.tickModel || this.getTickModel();\n    var result = createAxisTicks(this, tickModel);\n    var ticks = result.ticks;\n    var ticksCoords = map(ticks, function (tickVal) {\n      return {\n        coord: this.dataToCoord(this.scale.type === 'ordinal' ? this.scale.getRawOrdinalNumber(tickVal) : tickVal),\n        tickValue: tickVal\n      };\n    }, this);\n    var alignWithLabel = tickModel.get('alignWithLabel');\n    fixOnBandTicksCoords(this, ticksCoords, alignWithLabel, opt.clamp);\n    return ticksCoords;\n  };\n\n  Axis.prototype.getMinorTicksCoords = function () {\n    if (this.scale.type === 'ordinal') {\n      // Category axis doesn't support minor ticks\n      return [];\n    }\n\n    var minorTickModel = this.model.getModel('minorTick');\n    var splitNumber = minorTickModel.get('splitNumber'); // Protection.\n\n    if (!(splitNumber > 0 && splitNumber < 100)) {\n      splitNumber = 5;\n    }\n\n    var minorTicks = this.scale.getMinorTicks(splitNumber);\n    var minorTicksCoords = map(minorTicks, function (minorTicksGroup) {\n      return map(minorTicksGroup, function (minorTick) {\n        return {\n          coord: this.dataToCoord(minorTick),\n          tickValue: minorTick\n        };\n      }, this);\n    }, this);\n    return minorTicksCoords;\n  };\n\n  Axis.prototype.getViewLabels = function () {\n    return createAxisLabels(this).labels;\n  };\n\n  Axis.prototype.getLabelModel = function () {\n    return this.model.getModel('axisLabel');\n  };\n  /**\r\n   * Notice here we only get the default tick model. For splitLine\r\n   * or splitArea, we should pass the splitLineModel or splitAreaModel\r\n   * manually when calling `getTicksCoords`.\r\n   * In GL, this method may be overridden to:\r\n   * `axisModel.getModel('axisTick', grid3DModel.getModel('axisTick'));`\r\n   */\n\n\n  Axis.prototype.getTickModel = function () {\n    return this.model.getModel('axisTick');\n  };\n  /**\r\n   * Get width of band\r\n   */\n\n\n  Axis.prototype.getBandWidth = function () {\n    var axisExtent = this._extent;\n    var dataExtent = this.scale.getExtent();\n    var len = dataExtent[1] - dataExtent[0] + (this.onBand ? 1 : 0); // Fix #2728, avoid NaN when only one data.\n\n    len === 0 && (len = 1);\n    var size = Math.abs(axisExtent[1] - axisExtent[0]);\n    return Math.abs(size) / len;\n  };\n  /**\r\n   * Only be called in category axis.\r\n   * Can be overridden, consider other axes like in 3D.\r\n   * @return Auto interval for cateogry axis tick and label\r\n   */\n\n\n  Axis.prototype.calculateCategoryInterval = function () {\n    return calculateCategoryInterval(this);\n  };\n\n  return Axis;\n}();\n\nfunction fixExtentWithBands(extent, nTick) {\n  var size = extent[1] - extent[0];\n  var len = nTick;\n  var margin = size / len / 2;\n  extent[0] += margin;\n  extent[1] -= margin;\n} // If axis has labels [1, 2, 3, 4]. Bands on the axis are\n// |---1---|---2---|---3---|---4---|.\n// So the displayed ticks and splitLine/splitArea should between\n// each data item, otherwise cause misleading (e.g., split tow bars\n// of a single data item when there are two bar series).\n// Also consider if tickCategoryInterval > 0 and onBand, ticks and\n// splitLine/spliteArea should layout appropriately corresponding\n// to displayed labels. (So we should not use `getBandWidth` in this\n// case).\n\n\nfunction fixOnBandTicksCoords(axis, ticksCoords, alignWithLabel, clamp) {\n  var ticksLen = ticksCoords.length;\n\n  if (!axis.onBand || alignWithLabel || !ticksLen) {\n    return;\n  }\n\n  var axisExtent = axis.getExtent();\n  var last;\n  var diffSize;\n\n  if (ticksLen === 1) {\n    ticksCoords[0].coord = axisExtent[0];\n    last = ticksCoords[1] = {\n      coord: axisExtent[1]\n    };\n  } else {\n    var crossLen = ticksCoords[ticksLen - 1].tickValue - ticksCoords[0].tickValue;\n    var shift_1 = (ticksCoords[ticksLen - 1].coord - ticksCoords[0].coord) / crossLen;\n    each(ticksCoords, function (ticksItem) {\n      ticksItem.coord -= shift_1 / 2;\n    });\n    var dataExtent = axis.scale.getExtent();\n    diffSize = 1 + dataExtent[1] - ticksCoords[ticksLen - 1].tickValue;\n    last = {\n      coord: ticksCoords[ticksLen - 1].coord + shift_1 * diffSize\n    };\n    ticksCoords.push(last);\n  }\n\n  var inverse = axisExtent[0] > axisExtent[1]; // Handling clamp.\n\n  if (littleThan(ticksCoords[0].coord, axisExtent[0])) {\n    clamp ? ticksCoords[0].coord = axisExtent[0] : ticksCoords.shift();\n  }\n\n  if (clamp && littleThan(axisExtent[0], ticksCoords[0].coord)) {\n    ticksCoords.unshift({\n      coord: axisExtent[0]\n    });\n  }\n\n  if (littleThan(axisExtent[1], last.coord)) {\n    clamp ? last.coord = axisExtent[1] : ticksCoords.pop();\n  }\n\n  if (clamp && littleThan(last.coord, axisExtent[1])) {\n    ticksCoords.push({\n      coord: axisExtent[1]\n    });\n  }\n\n  function littleThan(a, b) {\n    // Avoid rounding error cause calculated tick coord different with extent.\n    // It may cause an extra unnecessary tick added.\n    a = round(a);\n    b = round(b);\n    return inverse ? a > b : a < b;\n  }\n}\n\nexport default Axis;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\n// These APIs are for more advanced usages\n// For example extend charts and components, creating graphic elements, formatting.\nimport ComponentModel from '../model/Component.js';\nimport ComponentView from '../view/Component.js';\nimport SeriesModel from '../model/Series.js';\nimport ChartView from '../view/Chart.js';\nimport SeriesData from '../data/SeriesData.js';\nimport * as zrender_1 from 'zrender/lib/zrender.js';\nexport { zrender_1 as zrender };\nimport * as matrix_1 from 'zrender/lib/core/matrix.js';\nexport { matrix_1 as matrix };\nimport * as vector_1 from 'zrender/lib/core/vector.js';\nexport { vector_1 as vector };\nimport * as zrUtil_1 from 'zrender/lib/core/util.js';\nexport { zrUtil_1 as zrUtil };\nimport * as color_1 from 'zrender/lib/tool/color.js';\nexport { color_1 as color };\nexport { throttle } from '../util/throttle.js';\nimport * as helper_1 from './api/helper.js';\nexport { helper_1 as helper };\nexport { use } from '../extension.js';\nexport { setPlatformAPI } from 'zrender/lib/core/platform.js'; // --------------------- Helper Methods ---------------------\n\nexport { default as parseGeoJSON } from '../coord/geo/parseGeoJson.js';\nexport { default as parseGeoJson } from '../coord/geo/parseGeoJson.js';\nimport * as number_1 from './api/number.js';\nexport { number_1 as number };\nimport * as time_1 from './api/time.js';\nexport { time_1 as time };\nimport * as graphic_1 from './api/graphic.js';\nexport { graphic_1 as graphic };\nimport * as format_1 from './api/format.js';\nexport { format_1 as format };\nimport * as util_1 from './api/util.js';\nexport { util_1 as util };\nexport { default as env } from 'zrender/lib/core/env.js'; // --------------------- Export for Extension Usage ---------------------\n// export {SeriesData};\n\nexport { SeriesData as List }; // TODO: Compatitable with exists echarts-gl code\n\nexport { default as Model } from '../model/Model.js';\nexport { default as Axis } from '../coord/Axis.js';\nexport { ComponentModel, ComponentView, SeriesModel, ChartView }; // Only for GL\n\nexport { brushSingle as innerDrawElementOnCanvas } from 'zrender/lib/canvas/graphic.js'; // --------------------- Deprecated Extension Methods ---------------------\n// Should use `ComponentModel.extend` or `class XXXX extend ComponentModel` to create class.\n// Then use `registerComponentModel` in `install` parameter when `use` this extension. For example:\n// class Bar3DModel extends ComponentModel {}\n// export function install(registers) { registers.registerComponentModel(Bar3DModel); }\n// echarts.use(install);\n\nexport function extendComponentModel(proto) {\n  var Model = ComponentModel.extend(proto);\n  ComponentModel.registerClass(Model);\n  return Model;\n}\nexport function extendComponentView(proto) {\n  var View = ComponentView.extend(proto);\n  ComponentView.registerClass(View);\n  return View;\n}\nexport function extendSeriesModel(proto) {\n  var Model = SeriesModel.extend(proto);\n  SeriesModel.registerClass(Model);\n  return Model;\n}\nexport function extendChartView(proto) {\n  var View = ChartView.extend(proto);\n  ChartView.registerClass(View);\n  return View;\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { Point, Path, Polyline } from '../util/graphic.js';\nimport PathProxy from 'zrender/lib/core/PathProxy.js';\nimport { normalizeRadian } from 'zrender/lib/contain/util.js';\nimport { cubicProjectPoint, quadraticProjectPoint } from 'zrender/lib/core/curve.js';\nimport { defaults, retrieve2 } from 'zrender/lib/core/util.js';\nimport { invert } from 'zrender/lib/core/matrix.js';\nimport * as vector from 'zrender/lib/core/vector.js';\nimport { DISPLAY_STATES, SPECIAL_STATES } from '../util/states.js';\nvar PI2 = Math.PI * 2;\nvar CMD = PathProxy.CMD;\nvar DEFAULT_SEARCH_SPACE = ['top', 'right', 'bottom', 'left'];\n\nfunction getCandidateAnchor(pos, distance, rect, outPt, outDir) {\n  var width = rect.width;\n  var height = rect.height;\n\n  switch (pos) {\n    case 'top':\n      outPt.set(rect.x + width / 2, rect.y - distance);\n      outDir.set(0, -1);\n      break;\n\n    case 'bottom':\n      outPt.set(rect.x + width / 2, rect.y + height + distance);\n      outDir.set(0, 1);\n      break;\n\n    case 'left':\n      outPt.set(rect.x - distance, rect.y + height / 2);\n      outDir.set(-1, 0);\n      break;\n\n    case 'right':\n      outPt.set(rect.x + width + distance, rect.y + height / 2);\n      outDir.set(1, 0);\n      break;\n  }\n}\n\nfunction projectPointToArc(cx, cy, r, startAngle, endAngle, anticlockwise, x, y, out) {\n  x -= cx;\n  y -= cy;\n  var d = Math.sqrt(x * x + y * y);\n  x /= d;\n  y /= d; // Intersect point.\n\n  var ox = x * r + cx;\n  var oy = y * r + cy;\n\n  if (Math.abs(startAngle - endAngle) % PI2 < 1e-4) {\n    // Is a circle\n    out[0] = ox;\n    out[1] = oy;\n    return d - r;\n  }\n\n  if (anticlockwise) {\n    var tmp = startAngle;\n    startAngle = normalizeRadian(endAngle);\n    endAngle = normalizeRadian(tmp);\n  } else {\n    startAngle = normalizeRadian(startAngle);\n    endAngle = normalizeRadian(endAngle);\n  }\n\n  if (startAngle > endAngle) {\n    endAngle += PI2;\n  }\n\n  var angle = Math.atan2(y, x);\n\n  if (angle < 0) {\n    angle += PI2;\n  }\n\n  if (angle >= startAngle && angle <= endAngle || angle + PI2 >= startAngle && angle + PI2 <= endAngle) {\n    // Project point is on the arc.\n    out[0] = ox;\n    out[1] = oy;\n    return d - r;\n  }\n\n  var x1 = r * Math.cos(startAngle) + cx;\n  var y1 = r * Math.sin(startAngle) + cy;\n  var x2 = r * Math.cos(endAngle) + cx;\n  var y2 = r * Math.sin(endAngle) + cy;\n  var d1 = (x1 - x) * (x1 - x) + (y1 - y) * (y1 - y);\n  var d2 = (x2 - x) * (x2 - x) + (y2 - y) * (y2 - y);\n\n  if (d1 < d2) {\n    out[0] = x1;\n    out[1] = y1;\n    return Math.sqrt(d1);\n  } else {\n    out[0] = x2;\n    out[1] = y2;\n    return Math.sqrt(d2);\n  }\n}\n\nfunction projectPointToLine(x1, y1, x2, y2, x, y, out, limitToEnds) {\n  var dx = x - x1;\n  var dy = y - y1;\n  var dx1 = x2 - x1;\n  var dy1 = y2 - y1;\n  var lineLen = Math.sqrt(dx1 * dx1 + dy1 * dy1);\n  dx1 /= lineLen;\n  dy1 /= lineLen; // dot product\n\n  var projectedLen = dx * dx1 + dy * dy1;\n  var t = projectedLen / lineLen;\n\n  if (limitToEnds) {\n    t = Math.min(Math.max(t, 0), 1);\n  }\n\n  t *= lineLen;\n  var ox = out[0] = x1 + t * dx1;\n  var oy = out[1] = y1 + t * dy1;\n  return Math.sqrt((ox - x) * (ox - x) + (oy - y) * (oy - y));\n}\n\nfunction projectPointToRect(x1, y1, width, height, x, y, out) {\n  if (width < 0) {\n    x1 = x1 + width;\n    width = -width;\n  }\n\n  if (height < 0) {\n    y1 = y1 + height;\n    height = -height;\n  }\n\n  var x2 = x1 + width;\n  var y2 = y1 + height;\n  var ox = out[0] = Math.min(Math.max(x, x1), x2);\n  var oy = out[1] = Math.min(Math.max(y, y1), y2);\n  return Math.sqrt((ox - x) * (ox - x) + (oy - y) * (oy - y));\n}\n\nvar tmpPt = [];\n\nfunction nearestPointOnRect(pt, rect, out) {\n  var dist = projectPointToRect(rect.x, rect.y, rect.width, rect.height, pt.x, pt.y, tmpPt);\n  out.set(tmpPt[0], tmpPt[1]);\n  return dist;\n}\n/**\r\n * Calculate min distance corresponding point.\r\n * This method won't evaluate if point is in the path.\r\n */\n\n\nfunction nearestPointOnPath(pt, path, out) {\n  var xi = 0;\n  var yi = 0;\n  var x0 = 0;\n  var y0 = 0;\n  var x1;\n  var y1;\n  var minDist = Infinity;\n  var data = path.data;\n  var x = pt.x;\n  var y = pt.y;\n\n  for (var i = 0; i < data.length;) {\n    var cmd = data[i++];\n\n    if (i === 1) {\n      xi = data[i];\n      yi = data[i + 1];\n      x0 = xi;\n      y0 = yi;\n    }\n\n    var d = minDist;\n\n    switch (cmd) {\n      case CMD.M:\n        // moveTo 命令重新创建一个新的 subpath, 并且更新新的起点\n        // 在 closePath 的时候使用\n        x0 = data[i++];\n        y0 = data[i++];\n        xi = x0;\n        yi = y0;\n        break;\n\n      case CMD.L:\n        d = projectPointToLine(xi, yi, data[i], data[i + 1], x, y, tmpPt, true);\n        xi = data[i++];\n        yi = data[i++];\n        break;\n\n      case CMD.C:\n        d = cubicProjectPoint(xi, yi, data[i++], data[i++], data[i++], data[i++], data[i], data[i + 1], x, y, tmpPt);\n        xi = data[i++];\n        yi = data[i++];\n        break;\n\n      case CMD.Q:\n        d = quadraticProjectPoint(xi, yi, data[i++], data[i++], data[i], data[i + 1], x, y, tmpPt);\n        xi = data[i++];\n        yi = data[i++];\n        break;\n\n      case CMD.A:\n        // TODO Arc 判断的开销比较大\n        var cx = data[i++];\n        var cy = data[i++];\n        var rx = data[i++];\n        var ry = data[i++];\n        var theta = data[i++];\n        var dTheta = data[i++]; // TODO Arc 旋转\n\n        i += 1;\n        var anticlockwise = !!(1 - data[i++]);\n        x1 = Math.cos(theta) * rx + cx;\n        y1 = Math.sin(theta) * ry + cy; // 不是直接使用 arc 命令\n\n        if (i <= 1) {\n          // 第一个命令起点还未定义\n          x0 = x1;\n          y0 = y1;\n        } // zr 使用scale来模拟椭圆, 这里也对x做一定的缩放\n\n\n        var _x = (x - cx) * ry / rx + cx;\n\n        d = projectPointToArc(cx, cy, ry, theta, theta + dTheta, anticlockwise, _x, y, tmpPt);\n        xi = Math.cos(theta + dTheta) * rx + cx;\n        yi = Math.sin(theta + dTheta) * ry + cy;\n        break;\n\n      case CMD.R:\n        x0 = xi = data[i++];\n        y0 = yi = data[i++];\n        var width = data[i++];\n        var height = data[i++];\n        d = projectPointToRect(x0, y0, width, height, x, y, tmpPt);\n        break;\n\n      case CMD.Z:\n        d = projectPointToLine(xi, yi, x0, y0, x, y, tmpPt, true);\n        xi = x0;\n        yi = y0;\n        break;\n    }\n\n    if (d < minDist) {\n      minDist = d;\n      out.set(tmpPt[0], tmpPt[1]);\n    }\n  }\n\n  return minDist;\n} // Temporal variable for intermediate usage.\n\n\nvar pt0 = new Point();\nvar pt1 = new Point();\nvar pt2 = new Point();\nvar dir = new Point();\nvar dir2 = new Point();\n/**\r\n * Calculate a proper guide line based on the label position and graphic element definition\r\n * @param label\r\n * @param labelRect\r\n * @param target\r\n * @param targetRect\r\n */\n\nexport function updateLabelLinePoints(target, labelLineModel) {\n  if (!target) {\n    return;\n  }\n\n  var labelLine = target.getTextGuideLine();\n  var label = target.getTextContent(); // Needs to create text guide in each charts.\n\n  if (!(label && labelLine)) {\n    return;\n  }\n\n  var labelGuideConfig = target.textGuideLineConfig || {};\n  var points = [[0, 0], [0, 0], [0, 0]];\n  var searchSpace = labelGuideConfig.candidates || DEFAULT_SEARCH_SPACE;\n  var labelRect = label.getBoundingRect().clone();\n  labelRect.applyTransform(label.getComputedTransform());\n  var minDist = Infinity;\n  var anchorPoint = labelGuideConfig.anchor;\n  var targetTransform = target.getComputedTransform();\n  var targetInversedTransform = targetTransform && invert([], targetTransform);\n  var len = labelLineModel.get('length2') || 0;\n\n  if (anchorPoint) {\n    pt2.copy(anchorPoint);\n  }\n\n  for (var i = 0; i < searchSpace.length; i++) {\n    var candidate = searchSpace[i];\n    getCandidateAnchor(candidate, 0, labelRect, pt0, dir);\n    Point.scaleAndAdd(pt1, pt0, dir, len); // Transform to target coord space.\n\n    pt1.transform(targetInversedTransform); // Note: getBoundingRect will ensure the `path` being created.\n\n    var boundingRect = target.getBoundingRect();\n    var dist = anchorPoint ? anchorPoint.distance(pt1) : target instanceof Path ? nearestPointOnPath(pt1, target.path, pt2) : nearestPointOnRect(pt1, boundingRect, pt2); // TODO pt2 is in the path\n\n    if (dist < minDist) {\n      minDist = dist; // Transform back to global space.\n\n      pt1.transform(targetTransform);\n      pt2.transform(targetTransform);\n      pt2.toArray(points[0]);\n      pt1.toArray(points[1]);\n      pt0.toArray(points[2]);\n    }\n  }\n\n  limitTurnAngle(points, labelLineModel.get('minTurnAngle'));\n  labelLine.setShape({\n    points: points\n  });\n} // Temporal variable for the limitTurnAngle function\n\nvar tmpArr = [];\nvar tmpProjPoint = new Point();\n/**\r\n * Reduce the line segment attached to the label to limit the turn angle between two segments.\r\n * @param linePoints\r\n * @param minTurnAngle Radian of minimum turn angle. 0 - 180\r\n */\n\nexport function limitTurnAngle(linePoints, minTurnAngle) {\n  if (!(minTurnAngle <= 180 && minTurnAngle > 0)) {\n    return;\n  }\n\n  minTurnAngle = minTurnAngle / 180 * Math.PI; // The line points can be\n  //      /pt1----pt2 (label)\n  //     /\n  // pt0/\n\n  pt0.fromArray(linePoints[0]);\n  pt1.fromArray(linePoints[1]);\n  pt2.fromArray(linePoints[2]);\n  Point.sub(dir, pt0, pt1);\n  Point.sub(dir2, pt2, pt1);\n  var len1 = dir.len();\n  var len2 = dir2.len();\n\n  if (len1 < 1e-3 || len2 < 1e-3) {\n    return;\n  }\n\n  dir.scale(1 / len1);\n  dir2.scale(1 / len2);\n  var angleCos = dir.dot(dir2);\n  var minTurnAngleCos = Math.cos(minTurnAngle);\n\n  if (minTurnAngleCos < angleCos) {\n    // Smaller than minTurnAngle\n    // Calculate project point of pt0 on pt1-pt2\n    var d = projectPointToLine(pt1.x, pt1.y, pt2.x, pt2.y, pt0.x, pt0.y, tmpArr, false);\n    tmpProjPoint.fromArray(tmpArr); // Calculate new projected length with limited minTurnAngle and get the new connect point\n\n    tmpProjPoint.scaleAndAdd(dir2, d / Math.tan(Math.PI - minTurnAngle)); // Limit the new calculated connect point between pt1 and pt2.\n\n    var t = pt2.x !== pt1.x ? (tmpProjPoint.x - pt1.x) / (pt2.x - pt1.x) : (tmpProjPoint.y - pt1.y) / (pt2.y - pt1.y);\n\n    if (isNaN(t)) {\n      return;\n    }\n\n    if (t < 0) {\n      Point.copy(tmpProjPoint, pt1);\n    } else if (t > 1) {\n      Point.copy(tmpProjPoint, pt2);\n    }\n\n    tmpProjPoint.toArray(linePoints[1]);\n  }\n}\n/**\r\n * Limit the angle of line and the surface\r\n * @param maxSurfaceAngle Radian of minimum turn angle. 0 - 180. 0 is same direction to normal. 180 is opposite\r\n */\n\nexport function limitSurfaceAngle(linePoints, surfaceNormal, maxSurfaceAngle) {\n  if (!(maxSurfaceAngle <= 180 && maxSurfaceAngle > 0)) {\n    return;\n  }\n\n  maxSurfaceAngle = maxSurfaceAngle / 180 * Math.PI;\n  pt0.fromArray(linePoints[0]);\n  pt1.fromArray(linePoints[1]);\n  pt2.fromArray(linePoints[2]);\n  Point.sub(dir, pt1, pt0);\n  Point.sub(dir2, pt2, pt1);\n  var len1 = dir.len();\n  var len2 = dir2.len();\n\n  if (len1 < 1e-3 || len2 < 1e-3) {\n    return;\n  }\n\n  dir.scale(1 / len1);\n  dir2.scale(1 / len2);\n  var angleCos = dir.dot(surfaceNormal);\n  var maxSurfaceAngleCos = Math.cos(maxSurfaceAngle);\n\n  if (angleCos < maxSurfaceAngleCos) {\n    // Calculate project point of pt0 on pt1-pt2\n    var d = projectPointToLine(pt1.x, pt1.y, pt2.x, pt2.y, pt0.x, pt0.y, tmpArr, false);\n    tmpProjPoint.fromArray(tmpArr);\n    var HALF_PI = Math.PI / 2;\n    var angle2 = Math.acos(dir2.dot(surfaceNormal));\n    var newAngle = HALF_PI + angle2 - maxSurfaceAngle;\n\n    if (newAngle >= HALF_PI) {\n      // parallel\n      Point.copy(tmpProjPoint, pt2);\n    } else {\n      // Calculate new projected length with limited minTurnAngle and get the new connect point\n      tmpProjPoint.scaleAndAdd(dir2, d / Math.tan(Math.PI / 2 - newAngle)); // Limit the new calculated connect point between pt1 and pt2.\n\n      var t = pt2.x !== pt1.x ? (tmpProjPoint.x - pt1.x) / (pt2.x - pt1.x) : (tmpProjPoint.y - pt1.y) / (pt2.y - pt1.y);\n\n      if (isNaN(t)) {\n        return;\n      }\n\n      if (t < 0) {\n        Point.copy(tmpProjPoint, pt1);\n      } else if (t > 1) {\n        Point.copy(tmpProjPoint, pt2);\n      }\n    }\n\n    tmpProjPoint.toArray(linePoints[1]);\n  }\n}\n\nfunction setLabelLineState(labelLine, ignore, stateName, stateModel) {\n  var isNormal = stateName === 'normal';\n  var stateObj = isNormal ? labelLine : labelLine.ensureState(stateName); // Make sure display.\n\n  stateObj.ignore = ignore; // Set smooth\n\n  var smooth = stateModel.get('smooth');\n\n  if (smooth && smooth === true) {\n    smooth = 0.3;\n  }\n\n  stateObj.shape = stateObj.shape || {};\n\n  if (smooth > 0) {\n    stateObj.shape.smooth = smooth;\n  }\n\n  var styleObj = stateModel.getModel('lineStyle').getLineStyle();\n  isNormal ? labelLine.useStyle(styleObj) : stateObj.style = styleObj;\n}\n\nfunction buildLabelLinePath(path, shape) {\n  var smooth = shape.smooth;\n  var points = shape.points;\n\n  if (!points) {\n    return;\n  }\n\n  path.moveTo(points[0][0], points[0][1]);\n\n  if (smooth > 0 && points.length >= 3) {\n    var len1 = vector.dist(points[0], points[1]);\n    var len2 = vector.dist(points[1], points[2]);\n\n    if (!len1 || !len2) {\n      path.lineTo(points[1][0], points[1][1]);\n      path.lineTo(points[2][0], points[2][1]);\n      return;\n    }\n\n    var moveLen = Math.min(len1, len2) * smooth;\n    var midPoint0 = vector.lerp([], points[1], points[0], moveLen / len1);\n    var midPoint2 = vector.lerp([], points[1], points[2], moveLen / len2);\n    var midPoint1 = vector.lerp([], midPoint0, midPoint2, 0.5);\n    path.bezierCurveTo(midPoint0[0], midPoint0[1], midPoint0[0], midPoint0[1], midPoint1[0], midPoint1[1]);\n    path.bezierCurveTo(midPoint2[0], midPoint2[1], midPoint2[0], midPoint2[1], points[2][0], points[2][1]);\n  } else {\n    for (var i = 1; i < points.length; i++) {\n      path.lineTo(points[i][0], points[i][1]);\n    }\n  }\n}\n/**\r\n * Create a label line if necessary and set it's style.\r\n */\n\n\nexport function setLabelLineStyle(targetEl, statesModels, defaultStyle) {\n  var labelLine = targetEl.getTextGuideLine();\n  var label = targetEl.getTextContent();\n\n  if (!label) {\n    // Not show label line if there is no label.\n    if (labelLine) {\n      targetEl.removeTextGuideLine();\n    }\n\n    return;\n  }\n\n  var normalModel = statesModels.normal;\n  var showNormal = normalModel.get('show');\n  var labelIgnoreNormal = label.ignore;\n\n  for (var i = 0; i < DISPLAY_STATES.length; i++) {\n    var stateName = DISPLAY_STATES[i];\n    var stateModel = statesModels[stateName];\n    var isNormal = stateName === 'normal';\n\n    if (stateModel) {\n      var stateShow = stateModel.get('show');\n      var isLabelIgnored = isNormal ? labelIgnoreNormal : retrieve2(label.states[stateName] && label.states[stateName].ignore, labelIgnoreNormal);\n\n      if (isLabelIgnored // Not show when label is not shown in this state.\n      || !retrieve2(stateShow, showNormal) // Use normal state by default if not set.\n      ) {\n          var stateObj = isNormal ? labelLine : labelLine && labelLine.states[stateName];\n\n          if (stateObj) {\n            stateObj.ignore = true;\n          }\n\n          continue;\n        } // Create labelLine if not exists\n\n\n      if (!labelLine) {\n        labelLine = new Polyline();\n        targetEl.setTextGuideLine(labelLine); // Reset state of normal because it's new created.\n        // NOTE: NORMAL should always been the first!\n\n        if (!isNormal && (labelIgnoreNormal || !showNormal)) {\n          setLabelLineState(labelLine, true, 'normal', statesModels.normal);\n        } // Use same state proxy.\n\n\n        if (targetEl.stateProxy) {\n          labelLine.stateProxy = targetEl.stateProxy;\n        }\n      }\n\n      setLabelLineState(labelLine, false, stateName, stateModel);\n    }\n  }\n\n  if (labelLine) {\n    defaults(labelLine.style, defaultStyle); // Not fill.\n\n    labelLine.style.fill = null;\n    var showAbove = normalModel.get('showAbove');\n    var labelLineConfig = targetEl.textGuideLineConfig = targetEl.textGuideLineConfig || {};\n    labelLineConfig.showAbove = showAbove || false; // Custom the buildPath.\n\n    labelLine.buildPath = buildLabelLinePath;\n  }\n}\nexport function getLabelLineStatesModels(itemModel, labelLineName) {\n  labelLineName = labelLineName || 'labelLine';\n  var statesModels = {\n    normal: itemModel.getModel(labelLineName)\n  };\n\n  for (var i = 0; i < SPECIAL_STATES.length; i++) {\n    var stateName = SPECIAL_STATES[i];\n    statesModels[stateName] = itemModel.getModel([stateName, labelLineName]);\n  }\n\n  return statesModels;\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { BoundingRect, OrientedBoundingRect } from '../util/graphic.js';\nexport function prepareLayoutList(input) {\n  var list = [];\n\n  for (var i = 0; i < input.length; i++) {\n    var rawItem = input[i];\n\n    if (rawItem.defaultAttr.ignore) {\n      continue;\n    }\n\n    var label = rawItem.label;\n    var transform = label.getComputedTransform(); // NOTE: Get bounding rect after getComputedTransform, or label may not been updated by the host el.\n\n    var localRect = label.getBoundingRect();\n    var isAxisAligned = !transform || transform[1] < 1e-5 && transform[2] < 1e-5;\n    var minMargin = label.style.margin || 0;\n    var globalRect = localRect.clone();\n    globalRect.applyTransform(transform);\n    globalRect.x -= minMargin / 2;\n    globalRect.y -= minMargin / 2;\n    globalRect.width += minMargin;\n    globalRect.height += minMargin;\n    var obb = isAxisAligned ? new OrientedBoundingRect(localRect, transform) : null;\n    list.push({\n      label: label,\n      labelLine: rawItem.labelLine,\n      rect: globalRect,\n      localRect: localRect,\n      obb: obb,\n      priority: rawItem.priority,\n      defaultAttr: rawItem.defaultAttr,\n      layoutOption: rawItem.computedLayoutOption,\n      axisAligned: isAxisAligned,\n      transform: transform\n    });\n  }\n\n  return list;\n}\n\nfunction shiftLayout(list, xyDim, sizeDim, minBound, maxBound, balanceShift) {\n  var len = list.length;\n\n  if (len < 2) {\n    return;\n  }\n\n  list.sort(function (a, b) {\n    return a.rect[xyDim] - b.rect[xyDim];\n  });\n  var lastPos = 0;\n  var delta;\n  var adjusted = false;\n  var shifts = [];\n  var totalShifts = 0;\n\n  for (var i = 0; i < len; i++) {\n    var item = list[i];\n    var rect = item.rect;\n    delta = rect[xyDim] - lastPos;\n\n    if (delta < 0) {\n      // shiftForward(i, len, -delta);\n      rect[xyDim] -= delta;\n      item.label[xyDim] -= delta;\n      adjusted = true;\n    }\n\n    var shift = Math.max(-delta, 0);\n    shifts.push(shift);\n    totalShifts += shift;\n    lastPos = rect[xyDim] + rect[sizeDim];\n  }\n\n  if (totalShifts > 0 && balanceShift) {\n    // Shift back to make the distribution more equally.\n    shiftList(-totalShifts / len, 0, len);\n  } // TODO bleedMargin?\n\n\n  var first = list[0];\n  var last = list[len - 1];\n  var minGap;\n  var maxGap;\n  updateMinMaxGap(); // If ends exceed two bounds, squeeze at most 80%, then take the gap of two bounds.\n\n  minGap < 0 && squeezeGaps(-minGap, 0.8);\n  maxGap < 0 && squeezeGaps(maxGap, 0.8);\n  updateMinMaxGap();\n  takeBoundsGap(minGap, maxGap, 1);\n  takeBoundsGap(maxGap, minGap, -1); // Handle bailout when there is not enough space.\n\n  updateMinMaxGap();\n\n  if (minGap < 0) {\n    squeezeWhenBailout(-minGap);\n  }\n\n  if (maxGap < 0) {\n    squeezeWhenBailout(maxGap);\n  }\n\n  function updateMinMaxGap() {\n    minGap = first.rect[xyDim] - minBound;\n    maxGap = maxBound - last.rect[xyDim] - last.rect[sizeDim];\n  }\n\n  function takeBoundsGap(gapThisBound, gapOtherBound, moveDir) {\n    if (gapThisBound < 0) {\n      // Move from other gap if can.\n      var moveFromMaxGap = Math.min(gapOtherBound, -gapThisBound);\n\n      if (moveFromMaxGap > 0) {\n        shiftList(moveFromMaxGap * moveDir, 0, len);\n        var remained = moveFromMaxGap + gapThisBound;\n\n        if (remained < 0) {\n          squeezeGaps(-remained * moveDir, 1);\n        }\n      } else {\n        squeezeGaps(-gapThisBound * moveDir, 1);\n      }\n    }\n  }\n\n  function shiftList(delta, start, end) {\n    if (delta !== 0) {\n      adjusted = true;\n    }\n\n    for (var i = start; i < end; i++) {\n      var item = list[i];\n      var rect = item.rect;\n      rect[xyDim] += delta;\n      item.label[xyDim] += delta;\n    }\n  } // Squeeze gaps if the labels exceed margin.\n\n\n  function squeezeGaps(delta, maxSqeezePercent) {\n    var gaps = [];\n    var totalGaps = 0;\n\n    for (var i = 1; i < len; i++) {\n      var prevItemRect = list[i - 1].rect;\n      var gap = Math.max(list[i].rect[xyDim] - prevItemRect[xyDim] - prevItemRect[sizeDim], 0);\n      gaps.push(gap);\n      totalGaps += gap;\n    }\n\n    if (!totalGaps) {\n      return;\n    }\n\n    var squeezePercent = Math.min(Math.abs(delta) / totalGaps, maxSqeezePercent);\n\n    if (delta > 0) {\n      for (var i = 0; i < len - 1; i++) {\n        // Distribute the shift delta to all gaps.\n        var movement = gaps[i] * squeezePercent; // Forward\n\n        shiftList(movement, 0, i + 1);\n      }\n    } else {\n      // Backward\n      for (var i = len - 1; i > 0; i--) {\n        // Distribute the shift delta to all gaps.\n        var movement = gaps[i - 1] * squeezePercent;\n        shiftList(-movement, i, len);\n      }\n    }\n  }\n  /**\r\n   * Squeeze to allow overlap if there is no more space available.\r\n   * Let other overlapping strategy like hideOverlap do the job instead of keep exceeding the bounds.\r\n   */\n\n\n  function squeezeWhenBailout(delta) {\n    var dir = delta < 0 ? -1 : 1;\n    delta = Math.abs(delta);\n    var moveForEachLabel = Math.ceil(delta / (len - 1));\n\n    for (var i = 0; i < len - 1; i++) {\n      if (dir > 0) {\n        // Forward\n        shiftList(moveForEachLabel, 0, i + 1);\n      } else {\n        // Backward\n        shiftList(-moveForEachLabel, len - i - 1, len);\n      }\n\n      delta -= moveForEachLabel;\n\n      if (delta <= 0) {\n        return;\n      }\n    }\n  }\n\n  return adjusted;\n}\n/**\r\n * Adjust labels on x direction to avoid overlap.\r\n */\n\n\nexport function shiftLayoutOnX(list, leftBound, rightBound, // If average the shifts on all labels and add them to 0\n// TODO: Not sure if should enable it.\n// Pros: The angle of lines will distribute more equally\n// Cons: In some layout. It may not what user wanted. like in pie. the label of last sector is usually changed unexpectedly.\nbalanceShift) {\n  return shiftLayout(list, 'x', 'width', leftBound, rightBound, balanceShift);\n}\n/**\r\n * Adjust labels on y direction to avoid overlap.\r\n */\n\nexport function shiftLayoutOnY(list, topBound, bottomBound, // If average the shifts on all labels and add them to 0\nbalanceShift) {\n  return shiftLayout(list, 'y', 'height', topBound, bottomBound, balanceShift);\n}\nexport function hideOverlap(labelList) {\n  var displayedLabels = []; // TODO, render overflow visible first, put in the displayedLabels.\n\n  labelList.sort(function (a, b) {\n    return b.priority - a.priority;\n  });\n  var globalRect = new BoundingRect(0, 0, 0, 0);\n\n  function hideEl(el) {\n    if (!el.ignore) {\n      // Show on emphasis.\n      var emphasisState = el.ensureState('emphasis');\n\n      if (emphasisState.ignore == null) {\n        emphasisState.ignore = false;\n      }\n    }\n\n    el.ignore = true;\n  }\n\n  for (var i = 0; i < labelList.length; i++) {\n    var labelItem = labelList[i];\n    var isAxisAligned = labelItem.axisAligned;\n    var localRect = labelItem.localRect;\n    var transform = labelItem.transform;\n    var label = labelItem.label;\n    var labelLine = labelItem.labelLine;\n    globalRect.copy(labelItem.rect); // Add a threshold because layout may be aligned precisely.\n\n    globalRect.width -= 0.1;\n    globalRect.height -= 0.1;\n    globalRect.x += 0.05;\n    globalRect.y += 0.05;\n    var obb = labelItem.obb;\n    var overlapped = false;\n\n    for (var j = 0; j < displayedLabels.length; j++) {\n      var existsTextCfg = displayedLabels[j]; // Fast rejection.\n\n      if (!globalRect.intersect(existsTextCfg.rect)) {\n        continue;\n      }\n\n      if (isAxisAligned && existsTextCfg.axisAligned) {\n        // Is overlapped\n        overlapped = true;\n        break;\n      }\n\n      if (!existsTextCfg.obb) {\n        // If self is not axis aligned. But other is.\n        existsTextCfg.obb = new OrientedBoundingRect(existsTextCfg.localRect, existsTextCfg.transform);\n      }\n\n      if (!obb) {\n        // If self is axis aligned. But other is not.\n        obb = new OrientedBoundingRect(localRect, transform);\n      }\n\n      if (obb.intersect(existsTextCfg.obb)) {\n        overlapped = true;\n        break;\n      }\n    } // TODO Callback to determine if this overlap should be handled?\n\n\n    if (overlapped) {\n      hideEl(label);\n      labelLine && hideEl(labelLine);\n    } else {\n      label.attr('ignore', labelItem.defaultAttr.ignore);\n      labelLine && labelLine.attr('ignore', labelItem.defaultAttr.labelGuideIgnore);\n      displayedLabels.push(labelItem);\n    }\n  }\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\n// TODO: move labels out of viewport.\nimport { BoundingRect, updateProps, initProps, isElementRemoved } from '../util/graphic.js';\nimport { getECData } from '../util/innerStore.js';\nimport { parsePercent } from '../util/number.js';\nimport Transformable from 'zrender/lib/core/Transformable.js';\nimport { updateLabelLinePoints, setLabelLineStyle, getLabelLineStatesModels } from './labelGuideHelper.js';\nimport { makeInner } from '../util/model.js';\nimport { retrieve2, each, keys, isFunction, filter, indexOf } from 'zrender/lib/core/util.js';\nimport { prepareLayoutList, hideOverlap, shiftLayoutOnX, shiftLayoutOnY } from './labelLayoutHelper.js';\nimport { labelInner, animateLabelValue } from './labelStyle.js';\nimport { normalizeRadian } from 'zrender/lib/contain/util.js';\n\nfunction cloneArr(points) {\n  if (points) {\n    var newPoints = [];\n\n    for (var i = 0; i < points.length; i++) {\n      newPoints.push(points[i].slice());\n    }\n\n    return newPoints;\n  }\n}\n\nfunction prepareLayoutCallbackParams(labelItem, hostEl) {\n  var label = labelItem.label;\n  var labelLine = hostEl && hostEl.getTextGuideLine();\n  return {\n    dataIndex: labelItem.dataIndex,\n    dataType: labelItem.dataType,\n    seriesIndex: labelItem.seriesModel.seriesIndex,\n    text: labelItem.label.style.text,\n    rect: labelItem.hostRect,\n    labelRect: labelItem.rect,\n    // x: labelAttr.x,\n    // y: labelAttr.y,\n    align: label.style.align,\n    verticalAlign: label.style.verticalAlign,\n    labelLinePoints: cloneArr(labelLine && labelLine.shape.points)\n  };\n}\n\nvar LABEL_OPTION_TO_STYLE_KEYS = ['align', 'verticalAlign', 'width', 'height', 'fontSize'];\nvar dummyTransformable = new Transformable();\nvar labelLayoutInnerStore = makeInner();\nvar labelLineAnimationStore = makeInner();\n\nfunction extendWithKeys(target, source, keys) {\n  for (var i = 0; i < keys.length; i++) {\n    var key = keys[i];\n\n    if (source[key] != null) {\n      target[key] = source[key];\n    }\n  }\n}\n\nvar LABEL_LAYOUT_PROPS = ['x', 'y', 'rotation'];\n\nvar LabelManager =\n/** @class */\nfunction () {\n  function LabelManager() {\n    this._labelList = [];\n    this._chartViewList = [];\n  }\n\n  LabelManager.prototype.clearLabels = function () {\n    this._labelList = [];\n    this._chartViewList = [];\n  };\n  /**\r\n   * Add label to manager\r\n   */\n\n\n  LabelManager.prototype._addLabel = function (dataIndex, dataType, seriesModel, label, layoutOption) {\n    var labelStyle = label.style;\n    var hostEl = label.__hostTarget;\n    var textConfig = hostEl.textConfig || {}; // TODO: If label is in other state.\n\n    var labelTransform = label.getComputedTransform();\n    var labelRect = label.getBoundingRect().plain();\n    BoundingRect.applyTransform(labelRect, labelRect, labelTransform);\n\n    if (labelTransform) {\n      dummyTransformable.setLocalTransform(labelTransform);\n    } else {\n      // Identity transform.\n      dummyTransformable.x = dummyTransformable.y = dummyTransformable.rotation = dummyTransformable.originX = dummyTransformable.originY = 0;\n      dummyTransformable.scaleX = dummyTransformable.scaleY = 1;\n    }\n\n    dummyTransformable.rotation = normalizeRadian(dummyTransformable.rotation);\n    var host = label.__hostTarget;\n    var hostRect;\n\n    if (host) {\n      hostRect = host.getBoundingRect().plain();\n      var transform = host.getComputedTransform();\n      BoundingRect.applyTransform(hostRect, hostRect, transform);\n    }\n\n    var labelGuide = hostRect && host.getTextGuideLine();\n\n    this._labelList.push({\n      label: label,\n      labelLine: labelGuide,\n      seriesModel: seriesModel,\n      dataIndex: dataIndex,\n      dataType: dataType,\n      layoutOption: layoutOption,\n      computedLayoutOption: null,\n      rect: labelRect,\n      hostRect: hostRect,\n      // Label with lower priority will be hidden when overlapped\n      // Use rect size as default priority\n      priority: hostRect ? hostRect.width * hostRect.height : 0,\n      // Save default label attributes.\n      // For restore if developers want get back to default value in callback.\n      defaultAttr: {\n        ignore: label.ignore,\n        labelGuideIgnore: labelGuide && labelGuide.ignore,\n        x: dummyTransformable.x,\n        y: dummyTransformable.y,\n        scaleX: dummyTransformable.scaleX,\n        scaleY: dummyTransformable.scaleY,\n        rotation: dummyTransformable.rotation,\n        style: {\n          x: labelStyle.x,\n          y: labelStyle.y,\n          align: labelStyle.align,\n          verticalAlign: labelStyle.verticalAlign,\n          width: labelStyle.width,\n          height: labelStyle.height,\n          fontSize: labelStyle.fontSize\n        },\n        cursor: label.cursor,\n        attachedPos: textConfig.position,\n        attachedRot: textConfig.rotation\n      }\n    });\n  };\n\n  LabelManager.prototype.addLabelsOfSeries = function (chartView) {\n    var _this = this;\n\n    this._chartViewList.push(chartView);\n\n    var seriesModel = chartView.__model;\n    var layoutOption = seriesModel.get('labelLayout');\n    /**\r\n     * Ignore layouting if it's not specified anything.\r\n     */\n\n    if (!(isFunction(layoutOption) || keys(layoutOption).length)) {\n      return;\n    }\n\n    chartView.group.traverse(function (child) {\n      if (child.ignore) {\n        return true; // Stop traverse descendants.\n      } // Only support label being hosted on graphic elements.\n\n\n      var textEl = child.getTextContent();\n      var ecData = getECData(child); // Can only attach the text on the element with dataIndex\n\n      if (textEl && !textEl.disableLabelLayout) {\n        _this._addLabel(ecData.dataIndex, ecData.dataType, seriesModel, textEl, layoutOption);\n      }\n    });\n  };\n\n  LabelManager.prototype.updateLayoutConfig = function (api) {\n    var width = api.getWidth();\n    var height = api.getHeight();\n\n    function createDragHandler(el, labelLineModel) {\n      return function () {\n        updateLabelLinePoints(el, labelLineModel);\n      };\n    }\n\n    for (var i = 0; i < this._labelList.length; i++) {\n      var labelItem = this._labelList[i];\n      var label = labelItem.label;\n      var hostEl = label.__hostTarget;\n      var defaultLabelAttr = labelItem.defaultAttr;\n      var layoutOption = void 0; // TODO A global layout option?\n\n      if (isFunction(labelItem.layoutOption)) {\n        layoutOption = labelItem.layoutOption(prepareLayoutCallbackParams(labelItem, hostEl));\n      } else {\n        layoutOption = labelItem.layoutOption;\n      }\n\n      layoutOption = layoutOption || {};\n      labelItem.computedLayoutOption = layoutOption;\n      var degreeToRadian = Math.PI / 180; // TODO hostEl should always exists.\n      // Or label should not have parent because the x, y is all in global space.\n\n      if (hostEl) {\n        hostEl.setTextConfig({\n          // Force to set local false.\n          local: false,\n          // Ignore position and rotation config on the host el if x or y is changed.\n          position: layoutOption.x != null || layoutOption.y != null ? null : defaultLabelAttr.attachedPos,\n          // Ignore rotation config on the host el if rotation is changed.\n          rotation: layoutOption.rotate != null ? layoutOption.rotate * degreeToRadian : defaultLabelAttr.attachedRot,\n          offset: [layoutOption.dx || 0, layoutOption.dy || 0]\n        });\n      }\n\n      var needsUpdateLabelLine = false;\n\n      if (layoutOption.x != null) {\n        // TODO width of chart view.\n        label.x = parsePercent(layoutOption.x, width);\n        label.setStyle('x', 0); // Ignore movement in style. TODO: origin.\n\n        needsUpdateLabelLine = true;\n      } else {\n        label.x = defaultLabelAttr.x;\n        label.setStyle('x', defaultLabelAttr.style.x);\n      }\n\n      if (layoutOption.y != null) {\n        // TODO height of chart view.\n        label.y = parsePercent(layoutOption.y, height);\n        label.setStyle('y', 0); // Ignore movement in style.\n\n        needsUpdateLabelLine = true;\n      } else {\n        label.y = defaultLabelAttr.y;\n        label.setStyle('y', defaultLabelAttr.style.y);\n      }\n\n      if (layoutOption.labelLinePoints) {\n        var guideLine = hostEl.getTextGuideLine();\n\n        if (guideLine) {\n          guideLine.setShape({\n            points: layoutOption.labelLinePoints\n          }); // Not update\n\n          needsUpdateLabelLine = false;\n        }\n      }\n\n      var labelLayoutStore = labelLayoutInnerStore(label);\n      labelLayoutStore.needsUpdateLabelLine = needsUpdateLabelLine;\n      label.rotation = layoutOption.rotate != null ? layoutOption.rotate * degreeToRadian : defaultLabelAttr.rotation;\n      label.scaleX = defaultLabelAttr.scaleX;\n      label.scaleY = defaultLabelAttr.scaleY;\n\n      for (var k = 0; k < LABEL_OPTION_TO_STYLE_KEYS.length; k++) {\n        var key = LABEL_OPTION_TO_STYLE_KEYS[k];\n        label.setStyle(key, layoutOption[key] != null ? layoutOption[key] : defaultLabelAttr.style[key]);\n      }\n\n      if (layoutOption.draggable) {\n        label.draggable = true;\n        label.cursor = 'move';\n\n        if (hostEl) {\n          var hostModel = labelItem.seriesModel;\n\n          if (labelItem.dataIndex != null) {\n            var data = labelItem.seriesModel.getData(labelItem.dataType);\n            hostModel = data.getItemModel(labelItem.dataIndex);\n          }\n\n          label.on('drag', createDragHandler(hostEl, hostModel.getModel('labelLine')));\n        }\n      } else {\n        // TODO Other drag functions?\n        label.off('drag');\n        label.cursor = defaultLabelAttr.cursor;\n      }\n    }\n  };\n\n  LabelManager.prototype.layout = function (api) {\n    var width = api.getWidth();\n    var height = api.getHeight();\n    var labelList = prepareLayoutList(this._labelList);\n    var labelsNeedsAdjustOnX = filter(labelList, function (item) {\n      return item.layoutOption.moveOverlap === 'shiftX';\n    });\n    var labelsNeedsAdjustOnY = filter(labelList, function (item) {\n      return item.layoutOption.moveOverlap === 'shiftY';\n    });\n    shiftLayoutOnX(labelsNeedsAdjustOnX, 0, width);\n    shiftLayoutOnY(labelsNeedsAdjustOnY, 0, height);\n    var labelsNeedsHideOverlap = filter(labelList, function (item) {\n      return item.layoutOption.hideOverlap;\n    });\n    hideOverlap(labelsNeedsHideOverlap);\n  };\n  /**\r\n   * Process all labels. Not only labels with layoutOption.\r\n   */\n\n\n  LabelManager.prototype.processLabelsOverall = function () {\n    var _this = this;\n\n    each(this._chartViewList, function (chartView) {\n      var seriesModel = chartView.__model;\n      var ignoreLabelLineUpdate = chartView.ignoreLabelLineUpdate;\n      var animationEnabled = seriesModel.isAnimationEnabled();\n      chartView.group.traverse(function (child) {\n        if (child.ignore && !child.forceLabelAnimation) {\n          return true; // Stop traverse descendants.\n        }\n\n        var needsUpdateLabelLine = !ignoreLabelLineUpdate;\n        var label = child.getTextContent();\n\n        if (!needsUpdateLabelLine && label) {\n          needsUpdateLabelLine = labelLayoutInnerStore(label).needsUpdateLabelLine;\n        }\n\n        if (needsUpdateLabelLine) {\n          _this._updateLabelLine(child, seriesModel);\n        }\n\n        if (animationEnabled) {\n          _this._animateLabels(child, seriesModel);\n        }\n      });\n    });\n  };\n\n  LabelManager.prototype._updateLabelLine = function (el, seriesModel) {\n    // Only support label being hosted on graphic elements.\n    var textEl = el.getTextContent(); // Update label line style.\n\n    var ecData = getECData(el);\n    var dataIndex = ecData.dataIndex; // Only support labelLine on the labels represent data.\n\n    if (textEl && dataIndex != null) {\n      var data = seriesModel.getData(ecData.dataType);\n      var itemModel = data.getItemModel(dataIndex);\n      var defaultStyle = {};\n      var visualStyle = data.getItemVisual(dataIndex, 'style');\n\n      if (visualStyle) {\n        var visualType = data.getVisual('drawType'); // Default to be same with main color\n\n        defaultStyle.stroke = visualStyle[visualType];\n      }\n\n      var labelLineModel = itemModel.getModel('labelLine');\n      setLabelLineStyle(el, getLabelLineStatesModels(itemModel), defaultStyle);\n      updateLabelLinePoints(el, labelLineModel);\n    }\n  };\n\n  LabelManager.prototype._animateLabels = function (el, seriesModel) {\n    var textEl = el.getTextContent();\n    var guideLine = el.getTextGuideLine(); // Animate\n\n    if (textEl // `forceLabelAnimation` has the highest priority\n    && (el.forceLabelAnimation || !textEl.ignore && !textEl.invisible && !el.disableLabelAnimation && !isElementRemoved(el))) {\n      var layoutStore = labelLayoutInnerStore(textEl);\n      var oldLayout = layoutStore.oldLayout;\n      var ecData = getECData(el);\n      var dataIndex = ecData.dataIndex;\n      var newProps = {\n        x: textEl.x,\n        y: textEl.y,\n        rotation: textEl.rotation\n      };\n      var data = seriesModel.getData(ecData.dataType);\n\n      if (!oldLayout) {\n        textEl.attr(newProps); // Disable fade in animation if value animation is enabled.\n\n        if (!labelInner(textEl).valueAnimation) {\n          var oldOpacity = retrieve2(textEl.style.opacity, 1); // Fade in animation\n\n          textEl.style.opacity = 0;\n          initProps(textEl, {\n            style: {\n              opacity: oldOpacity\n            }\n          }, seriesModel, dataIndex);\n        }\n      } else {\n        textEl.attr(oldLayout); // Make sure the animation from is in the right status.\n\n        var prevStates = el.prevStates;\n\n        if (prevStates) {\n          if (indexOf(prevStates, 'select') >= 0) {\n            textEl.attr(layoutStore.oldLayoutSelect);\n          }\n\n          if (indexOf(prevStates, 'emphasis') >= 0) {\n            textEl.attr(layoutStore.oldLayoutEmphasis);\n          }\n        }\n\n        updateProps(textEl, newProps, seriesModel, dataIndex);\n      }\n\n      layoutStore.oldLayout = newProps;\n\n      if (textEl.states.select) {\n        var layoutSelect = layoutStore.oldLayoutSelect = {};\n        extendWithKeys(layoutSelect, newProps, LABEL_LAYOUT_PROPS);\n        extendWithKeys(layoutSelect, textEl.states.select, LABEL_LAYOUT_PROPS);\n      }\n\n      if (textEl.states.emphasis) {\n        var layoutEmphasis = layoutStore.oldLayoutEmphasis = {};\n        extendWithKeys(layoutEmphasis, newProps, LABEL_LAYOUT_PROPS);\n        extendWithKeys(layoutEmphasis, textEl.states.emphasis, LABEL_LAYOUT_PROPS);\n      }\n\n      animateLabelValue(textEl, dataIndex, data, seriesModel, seriesModel);\n    }\n\n    if (guideLine && !guideLine.ignore && !guideLine.invisible) {\n      var layoutStore = labelLineAnimationStore(guideLine);\n      var oldLayout = layoutStore.oldLayout;\n      var newLayout = {\n        points: guideLine.shape.points\n      };\n\n      if (!oldLayout) {\n        guideLine.setShape(newLayout);\n        guideLine.style.strokePercent = 0;\n        initProps(guideLine, {\n          style: {\n            strokePercent: 1\n          }\n        }, seriesModel);\n      } else {\n        guideLine.attr({\n          shape: oldLayout\n        });\n        updateProps(guideLine, {\n          shape: newLayout\n        }, seriesModel);\n      }\n\n      layoutStore.oldLayout = newLayout;\n    }\n  };\n\n  return LabelManager;\n}();\n\nexport default LabelManager;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { makeInner } from '../util/model.js';\nimport LabelManager from './LabelManager.js';\nvar getLabelManager = makeInner();\nexport function installLabelLayout(registers) {\n  registers.registerUpdateLifecycle('series:beforeupdate', function (ecModel, api, params) {\n    // TODO api provide an namespace that can save stuff per instance\n    var labelManager = getLabelManager(api).labelManager;\n\n    if (!labelManager) {\n      labelManager = getLabelManager(api).labelManager = new LabelManager();\n    }\n\n    labelManager.clearLabels();\n  });\n  registers.registerUpdateLifecycle('series:layoutlabels', function (ecModel, api, params) {\n    var labelManager = getLabelManager(api).labelManager;\n    params.updatedSeries.forEach(function (series) {\n      labelManager.addLabelsOfSeries(api.getViewOfSeriesModel(series));\n    });\n    labelManager.updateLayoutConfig(api);\n    labelManager.layout(api);\n    labelManager.processLabelsOverall();\n  });\n}","import { __extends } from \"tslib\";\nimport * as util from '../core/util.js';\nimport { devicePixelRatio } from '../config.js';\nimport Eventful from '../core/Eventful.js';\nimport { getCanvasGradient } from './helper.js';\nimport { createCanvasPattern } from './graphic.js';\nimport BoundingRect from '../core/BoundingRect.js';\nimport { REDRAW_BIT } from '../graphic/constants.js';\nimport { platformApi } from '../core/platform.js';\nfunction createDom(id, painter, dpr) {\n    var newDom = platformApi.createCanvas();\n    var width = painter.getWidth();\n    var height = painter.getHeight();\n    var newDomStyle = newDom.style;\n    if (newDomStyle) {\n        newDomStyle.position = 'absolute';\n        newDomStyle.left = '0';\n        newDomStyle.top = '0';\n        newDomStyle.width = width + 'px';\n        newDomStyle.height = height + 'px';\n        newDom.setAttribute('data-zr-dom-id', id);\n    }\n    newDom.width = width * dpr;\n    newDom.height = height * dpr;\n    return newDom;\n}\n;\nvar Layer = (function (_super) {\n    __extends(Layer, _super);\n    function Layer(id, painter, dpr) {\n        var _this = _super.call(this) || this;\n        _this.motionBlur = false;\n        _this.lastFrameAlpha = 0.7;\n        _this.dpr = 1;\n        _this.virtual = false;\n        _this.config = {};\n        _this.incremental = false;\n        _this.zlevel = 0;\n        _this.maxRepaintRectCount = 5;\n        _this.__dirty = true;\n        _this.__firstTimePaint = true;\n        _this.__used = false;\n        _this.__drawIndex = 0;\n        _this.__startIndex = 0;\n        _this.__endIndex = 0;\n        _this.__prevStartIndex = null;\n        _this.__prevEndIndex = null;\n        var dom;\n        dpr = dpr || devicePixelRatio;\n        if (typeof id === 'string') {\n            dom = createDom(id, painter, dpr);\n        }\n        else if (util.isObject(id)) {\n            dom = id;\n            id = dom.id;\n        }\n        _this.id = id;\n        _this.dom = dom;\n        var domStyle = dom.style;\n        if (domStyle) {\n            util.disableUserSelect(dom);\n            dom.onselectstart = function () { return false; };\n            domStyle.padding = '0';\n            domStyle.margin = '0';\n            domStyle.borderWidth = '0';\n        }\n        _this.painter = painter;\n        _this.dpr = dpr;\n        return _this;\n    }\n    Layer.prototype.getElementCount = function () {\n        return this.__endIndex - this.__startIndex;\n    };\n    Layer.prototype.afterBrush = function () {\n        this.__prevStartIndex = this.__startIndex;\n        this.__prevEndIndex = this.__endIndex;\n    };\n    Layer.prototype.initContext = function () {\n        this.ctx = this.dom.getContext('2d');\n        this.ctx.dpr = this.dpr;\n    };\n    Layer.prototype.setUnpainted = function () {\n        this.__firstTimePaint = true;\n    };\n    Layer.prototype.createBackBuffer = function () {\n        var dpr = this.dpr;\n        this.domBack = createDom('back-' + this.id, this.painter, dpr);\n        this.ctxBack = this.domBack.getContext('2d');\n        if (dpr !== 1) {\n            this.ctxBack.scale(dpr, dpr);\n        }\n    };\n    Layer.prototype.createRepaintRects = function (displayList, prevList, viewWidth, viewHeight) {\n        if (this.__firstTimePaint) {\n            this.__firstTimePaint = false;\n            return null;\n        }\n        var mergedRepaintRects = [];\n        var maxRepaintRectCount = this.maxRepaintRectCount;\n        var full = false;\n        var pendingRect = new BoundingRect(0, 0, 0, 0);\n        function addRectToMergePool(rect) {\n            if (!rect.isFinite() || rect.isZero()) {\n                return;\n            }\n            if (mergedRepaintRects.length === 0) {\n                var boundingRect = new BoundingRect(0, 0, 0, 0);\n                boundingRect.copy(rect);\n                mergedRepaintRects.push(boundingRect);\n            }\n            else {\n                var isMerged = false;\n                var minDeltaArea = Infinity;\n                var bestRectToMergeIdx = 0;\n                for (var i = 0; i < mergedRepaintRects.length; ++i) {\n                    var mergedRect = mergedRepaintRects[i];\n                    if (mergedRect.intersect(rect)) {\n                        var pendingRect_1 = new BoundingRect(0, 0, 0, 0);\n                        pendingRect_1.copy(mergedRect);\n                        pendingRect_1.union(rect);\n                        mergedRepaintRects[i] = pendingRect_1;\n                        isMerged = true;\n                        break;\n                    }\n                    else if (full) {\n                        pendingRect.copy(rect);\n                        pendingRect.union(mergedRect);\n                        var aArea = rect.width * rect.height;\n                        var bArea = mergedRect.width * mergedRect.height;\n                        var pendingArea = pendingRect.width * pendingRect.height;\n                        var deltaArea = pendingArea - aArea - bArea;\n                        if (deltaArea < minDeltaArea) {\n                            minDeltaArea = deltaArea;\n                            bestRectToMergeIdx = i;\n                        }\n                    }\n                }\n                if (full) {\n                    mergedRepaintRects[bestRectToMergeIdx].union(rect);\n                    isMerged = true;\n                }\n                if (!isMerged) {\n                    var boundingRect = new BoundingRect(0, 0, 0, 0);\n                    boundingRect.copy(rect);\n                    mergedRepaintRects.push(boundingRect);\n                }\n                if (!full) {\n                    full = mergedRepaintRects.length >= maxRepaintRectCount;\n                }\n            }\n        }\n        for (var i = this.__startIndex; i < this.__endIndex; ++i) {\n            var el = displayList[i];\n            if (el) {\n                var shouldPaint = el.shouldBePainted(viewWidth, viewHeight, true, true);\n                var prevRect = el.__isRendered && ((el.__dirty & REDRAW_BIT) || !shouldPaint)\n                    ? el.getPrevPaintRect()\n                    : null;\n                if (prevRect) {\n                    addRectToMergePool(prevRect);\n                }\n                var curRect = shouldPaint && ((el.__dirty & REDRAW_BIT) || !el.__isRendered)\n                    ? el.getPaintRect()\n                    : null;\n                if (curRect) {\n                    addRectToMergePool(curRect);\n                }\n            }\n        }\n        for (var i = this.__prevStartIndex; i < this.__prevEndIndex; ++i) {\n            var el = prevList[i];\n            var shouldPaint = el.shouldBePainted(viewWidth, viewHeight, true, true);\n            if (el && (!shouldPaint || !el.__zr) && el.__isRendered) {\n                var prevRect = el.getPrevPaintRect();\n                if (prevRect) {\n                    addRectToMergePool(prevRect);\n                }\n            }\n        }\n        var hasIntersections;\n        do {\n            hasIntersections = false;\n            for (var i = 0; i < mergedRepaintRects.length;) {\n                if (mergedRepaintRects[i].isZero()) {\n                    mergedRepaintRects.splice(i, 1);\n                    continue;\n                }\n                for (var j = i + 1; j < mergedRepaintRects.length;) {\n                    if (mergedRepaintRects[i].intersect(mergedRepaintRects[j])) {\n                        hasIntersections = true;\n                        mergedRepaintRects[i].union(mergedRepaintRects[j]);\n                        mergedRepaintRects.splice(j, 1);\n                    }\n                    else {\n                        j++;\n                    }\n                }\n                i++;\n            }\n        } while (hasIntersections);\n        this._paintRects = mergedRepaintRects;\n        return mergedRepaintRects;\n    };\n    Layer.prototype.debugGetPaintRects = function () {\n        return (this._paintRects || []).slice();\n    };\n    Layer.prototype.resize = function (width, height) {\n        var dpr = this.dpr;\n        var dom = this.dom;\n        var domStyle = dom.style;\n        var domBack = this.domBack;\n        if (domStyle) {\n            domStyle.width = width + 'px';\n            domStyle.height = height + 'px';\n        }\n        dom.width = width * dpr;\n        dom.height = height * dpr;\n        if (domBack) {\n            domBack.width = width * dpr;\n            domBack.height = height * dpr;\n            if (dpr !== 1) {\n                this.ctxBack.scale(dpr, dpr);\n            }\n        }\n    };\n    Layer.prototype.clear = function (clearAll, clearColor, repaintRects) {\n        var dom = this.dom;\n        var ctx = this.ctx;\n        var width = dom.width;\n        var height = dom.height;\n        clearColor = clearColor || this.clearColor;\n        var haveMotionBLur = this.motionBlur && !clearAll;\n        var lastFrameAlpha = this.lastFrameAlpha;\n        var dpr = this.dpr;\n        var self = this;\n        if (haveMotionBLur) {\n            if (!this.domBack) {\n                this.createBackBuffer();\n            }\n            this.ctxBack.globalCompositeOperation = 'copy';\n            this.ctxBack.drawImage(dom, 0, 0, width / dpr, height / dpr);\n        }\n        var domBack = this.domBack;\n        function doClear(x, y, width, height) {\n            ctx.clearRect(x, y, width, height);\n            if (clearColor && clearColor !== 'transparent') {\n                var clearColorGradientOrPattern = void 0;\n                if (util.isGradientObject(clearColor)) {\n                    var shouldCache = clearColor.global || (clearColor.__width === width\n                        && clearColor.__height === height);\n                    clearColorGradientOrPattern = shouldCache\n                        && clearColor.__canvasGradient\n                        || getCanvasGradient(ctx, clearColor, {\n                            x: 0,\n                            y: 0,\n                            width: width,\n                            height: height\n                        });\n                    clearColor.__canvasGradient = clearColorGradientOrPattern;\n                    clearColor.__width = width;\n                    clearColor.__height = height;\n                }\n                else if (util.isImagePatternObject(clearColor)) {\n                    clearColor.scaleX = clearColor.scaleX || dpr;\n                    clearColor.scaleY = clearColor.scaleY || dpr;\n                    clearColorGradientOrPattern = createCanvasPattern(ctx, clearColor, {\n                        dirty: function () {\n                            self.setUnpainted();\n                            self.__painter.refresh();\n                        }\n                    });\n                }\n                ctx.save();\n                ctx.fillStyle = clearColorGradientOrPattern || clearColor;\n                ctx.fillRect(x, y, width, height);\n                ctx.restore();\n            }\n            if (haveMotionBLur) {\n                ctx.save();\n                ctx.globalAlpha = lastFrameAlpha;\n                ctx.drawImage(domBack, x, y, width, height);\n                ctx.restore();\n            }\n        }\n        ;\n        if (!repaintRects || haveMotionBLur) {\n            doClear(0, 0, width, height);\n        }\n        else if (repaintRects.length) {\n            util.each(repaintRects, function (rect) {\n                doClear(rect.x * dpr, rect.y * dpr, rect.width * dpr, rect.height * dpr);\n            });\n        }\n    };\n    return Layer;\n}(Eventful));\nexport default Layer;\n","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\n// Core API from echarts/src/echarts\nexport * from '../core/echarts.js';\nexport * from './api.js';\nimport { use } from '../extension.js'; // Import label layout by default.\n// TODO will be treeshaked.\n\nimport { installLabelLayout } from '../label/installLabelLayout.js';\nuse(installLabelLayout);","import { devicePixelRatio } from '../config.js';\nimport * as util from '../core/util.js';\nimport Layer from './Layer.js';\nimport requestAnimationFrame from '../animation/requestAnimationFrame.js';\nimport env from '../core/env.js';\nimport { brush, brushSingle } from './graphic.js';\nimport { REDRAW_BIT } from '../graphic/constants.js';\nimport { getSize } from './helper.js';\nvar HOVER_LAYER_ZLEVEL = 1e5;\nvar CANVAS_ZLEVEL = 314159;\nvar EL_AFTER_INCREMENTAL_INC = 0.01;\nvar INCREMENTAL_INC = 0.001;\nfunction isLayerValid(layer) {\n    if (!layer) {\n        return false;\n    }\n    if (layer.__builtin__) {\n        return true;\n    }\n    if (typeof (layer.resize) !== 'function'\n        || typeof (layer.refresh) !== 'function') {\n        return false;\n    }\n    return true;\n}\nfunction createRoot(width, height) {\n    var domRoot = document.createElement('div');\n    domRoot.style.cssText = [\n        'position:relative',\n        'width:' + width + 'px',\n        'height:' + height + 'px',\n        'padding:0',\n        'margin:0',\n        'border-width:0'\n    ].join(';') + ';';\n    return domRoot;\n}\nvar CanvasPainter = (function () {\n    function CanvasPainter(root, storage, opts, id) {\n        this.type = 'canvas';\n        this._zlevelList = [];\n        this._prevDisplayList = [];\n        this._layers = {};\n        this._layerConfig = {};\n        this._needsManuallyCompositing = false;\n        this.type = 'canvas';\n        var singleCanvas = !root.nodeName\n            || root.nodeName.toUpperCase() === 'CANVAS';\n        this._opts = opts = util.extend({}, opts || {});\n        this.dpr = opts.devicePixelRatio || devicePixelRatio;\n        this._singleCanvas = singleCanvas;\n        this.root = root;\n        var rootStyle = root.style;\n        if (rootStyle) {\n            util.disableUserSelect(root);\n            root.innerHTML = '';\n        }\n        this.storage = storage;\n        var zlevelList = this._zlevelList;\n        this._prevDisplayList = [];\n        var layers = this._layers;\n        if (!singleCanvas) {\n            this._width = getSize(root, 0, opts);\n            this._height = getSize(root, 1, opts);\n            var domRoot = this._domRoot = createRoot(this._width, this._height);\n            root.appendChild(domRoot);\n        }\n        else {\n            var rootCanvas = root;\n            var width = rootCanvas.width;\n            var height = rootCanvas.height;\n            if (opts.width != null) {\n                width = opts.width;\n            }\n            if (opts.height != null) {\n                height = opts.height;\n            }\n            this.dpr = opts.devicePixelRatio || 1;\n            rootCanvas.width = width * this.dpr;\n            rootCanvas.height = height * this.dpr;\n            this._width = width;\n            this._height = height;\n            var mainLayer = new Layer(rootCanvas, this, this.dpr);\n            mainLayer.__builtin__ = true;\n            mainLayer.initContext();\n            layers[CANVAS_ZLEVEL] = mainLayer;\n            mainLayer.zlevel = CANVAS_ZLEVEL;\n            zlevelList.push(CANVAS_ZLEVEL);\n            this._domRoot = root;\n        }\n    }\n    CanvasPainter.prototype.getType = function () {\n        return 'canvas';\n    };\n    CanvasPainter.prototype.isSingleCanvas = function () {\n        return this._singleCanvas;\n    };\n    CanvasPainter.prototype.getViewportRoot = function () {\n        return this._domRoot;\n    };\n    CanvasPainter.prototype.getViewportRootOffset = function () {\n        var viewportRoot = this.getViewportRoot();\n        if (viewportRoot) {\n            return {\n                offsetLeft: viewportRoot.offsetLeft || 0,\n                offsetTop: viewportRoot.offsetTop || 0\n            };\n        }\n    };\n    CanvasPainter.prototype.refresh = function (paintAll) {\n        var list = this.storage.getDisplayList(true);\n        var prevList = this._prevDisplayList;\n        var zlevelList = this._zlevelList;\n        this._redrawId = Math.random();\n        this._paintList(list, prevList, paintAll, this._redrawId);\n        for (var i = 0; i < zlevelList.length; i++) {\n            var z = zlevelList[i];\n            var layer = this._layers[z];\n            if (!layer.__builtin__ && layer.refresh) {\n                var clearColor = i === 0 ? this._backgroundColor : null;\n                layer.refresh(clearColor);\n            }\n        }\n        if (this._opts.useDirtyRect) {\n            this._prevDisplayList = list.slice();\n        }\n        return this;\n    };\n    CanvasPainter.prototype.refreshHover = function () {\n        this._paintHoverList(this.storage.getDisplayList(false));\n    };\n    CanvasPainter.prototype._paintHoverList = function (list) {\n        var len = list.length;\n        var hoverLayer = this._hoverlayer;\n        hoverLayer && hoverLayer.clear();\n        if (!len) {\n            return;\n        }\n        var scope = {\n            inHover: true,\n            viewWidth: this._width,\n            viewHeight: this._height\n        };\n        var ctx;\n        for (var i = 0; i < len; i++) {\n            var el = list[i];\n            if (el.__inHover) {\n                if (!hoverLayer) {\n                    hoverLayer = this._hoverlayer = this.getLayer(HOVER_LAYER_ZLEVEL);\n                }\n                if (!ctx) {\n                    ctx = hoverLayer.ctx;\n                    ctx.save();\n                }\n                brush(ctx, el, scope, i === len - 1);\n            }\n        }\n        if (ctx) {\n            ctx.restore();\n        }\n    };\n    CanvasPainter.prototype.getHoverLayer = function () {\n        return this.getLayer(HOVER_LAYER_ZLEVEL);\n    };\n    CanvasPainter.prototype.paintOne = function (ctx, el) {\n        brushSingle(ctx, el);\n    };\n    CanvasPainter.prototype._paintList = function (list, prevList, paintAll, redrawId) {\n        if (this._redrawId !== redrawId) {\n            return;\n        }\n        paintAll = paintAll || false;\n        this._updateLayerStatus(list);\n        var _a = this._doPaintList(list, prevList, paintAll), finished = _a.finished, needsRefreshHover = _a.needsRefreshHover;\n        if (this._needsManuallyCompositing) {\n            this._compositeManually();\n        }\n        if (needsRefreshHover) {\n            this._paintHoverList(list);\n        }\n        if (!finished) {\n            var self_1 = this;\n            requestAnimationFrame(function () {\n                self_1._paintList(list, prevList, paintAll, redrawId);\n            });\n        }\n        else {\n            this.eachLayer(function (layer) {\n                layer.afterBrush && layer.afterBrush();\n            });\n        }\n    };\n    CanvasPainter.prototype._compositeManually = function () {\n        var ctx = this.getLayer(CANVAS_ZLEVEL).ctx;\n        var width = this._domRoot.width;\n        var height = this._domRoot.height;\n        ctx.clearRect(0, 0, width, height);\n        this.eachBuiltinLayer(function (layer) {\n            if (layer.virtual) {\n                ctx.drawImage(layer.dom, 0, 0, width, height);\n            }\n        });\n    };\n    CanvasPainter.prototype._doPaintList = function (list, prevList, paintAll) {\n        var _this = this;\n        var layerList = [];\n        var useDirtyRect = this._opts.useDirtyRect;\n        for (var zi = 0; zi < this._zlevelList.length; zi++) {\n            var zlevel = this._zlevelList[zi];\n            var layer = this._layers[zlevel];\n            if (layer.__builtin__\n                && layer !== this._hoverlayer\n                && (layer.__dirty || paintAll)) {\n                layerList.push(layer);\n            }\n        }\n        var finished = true;\n        var needsRefreshHover = false;\n        var _loop_1 = function (k) {\n            var layer = layerList[k];\n            var ctx = layer.ctx;\n            var repaintRects = useDirtyRect\n                && layer.createRepaintRects(list, prevList, this_1._width, this_1._height);\n            var start = paintAll ? layer.__startIndex : layer.__drawIndex;\n            var useTimer = !paintAll && layer.incremental && Date.now;\n            var startTime = useTimer && Date.now();\n            var clearColor = layer.zlevel === this_1._zlevelList[0]\n                ? this_1._backgroundColor : null;\n            if (layer.__startIndex === layer.__endIndex) {\n                layer.clear(false, clearColor, repaintRects);\n            }\n            else if (start === layer.__startIndex) {\n                var firstEl = list[start];\n                if (!firstEl.incremental || !firstEl.notClear || paintAll) {\n                    layer.clear(false, clearColor, repaintRects);\n                }\n            }\n            if (start === -1) {\n                console.error('For some unknown reason. drawIndex is -1');\n                start = layer.__startIndex;\n            }\n            var i;\n            var repaint = function (repaintRect) {\n                var scope = {\n                    inHover: false,\n                    allClipped: false,\n                    prevEl: null,\n                    viewWidth: _this._width,\n                    viewHeight: _this._height\n                };\n                for (i = start; i < layer.__endIndex; i++) {\n                    var el = list[i];\n                    if (el.__inHover) {\n                        needsRefreshHover = true;\n                    }\n                    _this._doPaintEl(el, layer, useDirtyRect, repaintRect, scope, i === layer.__endIndex - 1);\n                    if (useTimer) {\n                        var dTime = Date.now() - startTime;\n                        if (dTime > 15) {\n                            break;\n                        }\n                    }\n                }\n                if (scope.prevElClipPaths) {\n                    ctx.restore();\n                }\n            };\n            if (repaintRects) {\n                if (repaintRects.length === 0) {\n                    i = layer.__endIndex;\n                }\n                else {\n                    var dpr = this_1.dpr;\n                    for (var r = 0; r < repaintRects.length; ++r) {\n                        var rect = repaintRects[r];\n                        ctx.save();\n                        ctx.beginPath();\n                        ctx.rect(rect.x * dpr, rect.y * dpr, rect.width * dpr, rect.height * dpr);\n                        ctx.clip();\n                        repaint(rect);\n                        ctx.restore();\n                    }\n                }\n            }\n            else {\n                ctx.save();\n                repaint();\n                ctx.restore();\n            }\n            layer.__drawIndex = i;\n            if (layer.__drawIndex < layer.__endIndex) {\n                finished = false;\n            }\n        };\n        var this_1 = this;\n        for (var k = 0; k < layerList.length; k++) {\n            _loop_1(k);\n        }\n        if (env.wxa) {\n            util.each(this._layers, function (layer) {\n                if (layer && layer.ctx && layer.ctx.draw) {\n                    layer.ctx.draw();\n                }\n            });\n        }\n        return {\n            finished: finished,\n            needsRefreshHover: needsRefreshHover\n        };\n    };\n    CanvasPainter.prototype._doPaintEl = function (el, currentLayer, useDirtyRect, repaintRect, scope, isLast) {\n        var ctx = currentLayer.ctx;\n        if (useDirtyRect) {\n            var paintRect = el.getPaintRect();\n            if (!repaintRect || paintRect && paintRect.intersect(repaintRect)) {\n                brush(ctx, el, scope, isLast);\n                el.setPrevPaintRect(paintRect);\n            }\n        }\n        else {\n            brush(ctx, el, scope, isLast);\n        }\n    };\n    CanvasPainter.prototype.getLayer = function (zlevel, virtual) {\n        if (this._singleCanvas && !this._needsManuallyCompositing) {\n            zlevel = CANVAS_ZLEVEL;\n        }\n        var layer = this._layers[zlevel];\n        if (!layer) {\n            layer = new Layer('zr_' + zlevel, this, this.dpr);\n            layer.zlevel = zlevel;\n            layer.__builtin__ = true;\n            if (this._layerConfig[zlevel]) {\n                util.merge(layer, this._layerConfig[zlevel], true);\n            }\n            else if (this._layerConfig[zlevel - EL_AFTER_INCREMENTAL_INC]) {\n                util.merge(layer, this._layerConfig[zlevel - EL_AFTER_INCREMENTAL_INC], true);\n            }\n            if (virtual) {\n                layer.virtual = virtual;\n            }\n            this.insertLayer(zlevel, layer);\n            layer.initContext();\n        }\n        return layer;\n    };\n    CanvasPainter.prototype.insertLayer = function (zlevel, layer) {\n        var layersMap = this._layers;\n        var zlevelList = this._zlevelList;\n        var len = zlevelList.length;\n        var domRoot = this._domRoot;\n        var prevLayer = null;\n        var i = -1;\n        if (layersMap[zlevel]) {\n            if (process.env.NODE_ENV !== 'production') {\n                util.logError('ZLevel ' + zlevel + ' has been used already');\n            }\n            return;\n        }\n        if (!isLayerValid(layer)) {\n            if (process.env.NODE_ENV !== 'production') {\n                util.logError('Layer of zlevel ' + zlevel + ' is not valid');\n            }\n            return;\n        }\n        if (len > 0 && zlevel > zlevelList[0]) {\n            for (i = 0; i < len - 1; i++) {\n                if (zlevelList[i] < zlevel\n                    && zlevelList[i + 1] > zlevel) {\n                    break;\n                }\n            }\n            prevLayer = layersMap[zlevelList[i]];\n        }\n        zlevelList.splice(i + 1, 0, zlevel);\n        layersMap[zlevel] = layer;\n        if (!layer.virtual) {\n            if (prevLayer) {\n                var prevDom = prevLayer.dom;\n                if (prevDom.nextSibling) {\n                    domRoot.insertBefore(layer.dom, prevDom.nextSibling);\n                }\n                else {\n                    domRoot.appendChild(layer.dom);\n                }\n            }\n            else {\n                if (domRoot.firstChild) {\n                    domRoot.insertBefore(layer.dom, domRoot.firstChild);\n                }\n                else {\n                    domRoot.appendChild(layer.dom);\n                }\n            }\n        }\n        layer.__painter = this;\n    };\n    CanvasPainter.prototype.eachLayer = function (cb, context) {\n        var zlevelList = this._zlevelList;\n        for (var i = 0; i < zlevelList.length; i++) {\n            var z = zlevelList[i];\n            cb.call(context, this._layers[z], z);\n        }\n    };\n    CanvasPainter.prototype.eachBuiltinLayer = function (cb, context) {\n        var zlevelList = this._zlevelList;\n        for (var i = 0; i < zlevelList.length; i++) {\n            var z = zlevelList[i];\n            var layer = this._layers[z];\n            if (layer.__builtin__) {\n                cb.call(context, layer, z);\n            }\n        }\n    };\n    CanvasPainter.prototype.eachOtherLayer = function (cb, context) {\n        var zlevelList = this._zlevelList;\n        for (var i = 0; i < zlevelList.length; i++) {\n            var z = zlevelList[i];\n            var layer = this._layers[z];\n            if (!layer.__builtin__) {\n                cb.call(context, layer, z);\n            }\n        }\n    };\n    CanvasPainter.prototype.getLayers = function () {\n        return this._layers;\n    };\n    CanvasPainter.prototype._updateLayerStatus = function (list) {\n        this.eachBuiltinLayer(function (layer, z) {\n            layer.__dirty = layer.__used = false;\n        });\n        function updatePrevLayer(idx) {\n            if (prevLayer) {\n                if (prevLayer.__endIndex !== idx) {\n                    prevLayer.__dirty = true;\n                }\n                prevLayer.__endIndex = idx;\n            }\n        }\n        if (this._singleCanvas) {\n            for (var i_1 = 1; i_1 < list.length; i_1++) {\n                var el = list[i_1];\n                if (el.zlevel !== list[i_1 - 1].zlevel || el.incremental) {\n                    this._needsManuallyCompositing = true;\n                    break;\n                }\n            }\n        }\n        var prevLayer = null;\n        var incrementalLayerCount = 0;\n        var prevZlevel;\n        var i;\n        for (i = 0; i < list.length; i++) {\n            var el = list[i];\n            var zlevel = el.zlevel;\n            var layer = void 0;\n            if (prevZlevel !== zlevel) {\n                prevZlevel = zlevel;\n                incrementalLayerCount = 0;\n            }\n            if (el.incremental) {\n                layer = this.getLayer(zlevel + INCREMENTAL_INC, this._needsManuallyCompositing);\n                layer.incremental = true;\n                incrementalLayerCount = 1;\n            }\n            else {\n                layer = this.getLayer(zlevel + (incrementalLayerCount > 0 ? EL_AFTER_INCREMENTAL_INC : 0), this._needsManuallyCompositing);\n            }\n            if (!layer.__builtin__) {\n                util.logError('ZLevel ' + zlevel + ' has been used by unkown layer ' + layer.id);\n            }\n            if (layer !== prevLayer) {\n                layer.__used = true;\n                if (layer.__startIndex !== i) {\n                    layer.__dirty = true;\n                }\n                layer.__startIndex = i;\n                if (!layer.incremental) {\n                    layer.__drawIndex = i;\n                }\n                else {\n                    layer.__drawIndex = -1;\n                }\n                updatePrevLayer(i);\n                prevLayer = layer;\n            }\n            if ((el.__dirty & REDRAW_BIT) && !el.__inHover) {\n                layer.__dirty = true;\n                if (layer.incremental && layer.__drawIndex < 0) {\n                    layer.__drawIndex = i;\n                }\n            }\n        }\n        updatePrevLayer(i);\n        this.eachBuiltinLayer(function (layer, z) {\n            if (!layer.__used && layer.getElementCount() > 0) {\n                layer.__dirty = true;\n                layer.__startIndex = layer.__endIndex = layer.__drawIndex = 0;\n            }\n            if (layer.__dirty && layer.__drawIndex < 0) {\n                layer.__drawIndex = layer.__startIndex;\n            }\n        });\n    };\n    CanvasPainter.prototype.clear = function () {\n        this.eachBuiltinLayer(this._clearLayer);\n        return this;\n    };\n    CanvasPainter.prototype._clearLayer = function (layer) {\n        layer.clear();\n    };\n    CanvasPainter.prototype.setBackgroundColor = function (backgroundColor) {\n        this._backgroundColor = backgroundColor;\n        util.each(this._layers, function (layer) {\n            layer.setUnpainted();\n        });\n    };\n    CanvasPainter.prototype.configLayer = function (zlevel, config) {\n        if (config) {\n            var layerConfig = this._layerConfig;\n            if (!layerConfig[zlevel]) {\n                layerConfig[zlevel] = config;\n            }\n            else {\n                util.merge(layerConfig[zlevel], config, true);\n            }\n            for (var i = 0; i < this._zlevelList.length; i++) {\n                var _zlevel = this._zlevelList[i];\n                if (_zlevel === zlevel || _zlevel === zlevel + EL_AFTER_INCREMENTAL_INC) {\n                    var layer = this._layers[_zlevel];\n                    util.merge(layer, layerConfig[zlevel], true);\n                }\n            }\n        }\n    };\n    CanvasPainter.prototype.delLayer = function (zlevel) {\n        var layers = this._layers;\n        var zlevelList = this._zlevelList;\n        var layer = layers[zlevel];\n        if (!layer) {\n            return;\n        }\n        layer.dom.parentNode.removeChild(layer.dom);\n        delete layers[zlevel];\n        zlevelList.splice(util.indexOf(zlevelList, zlevel), 1);\n    };\n    CanvasPainter.prototype.resize = function (width, height) {\n        if (!this._domRoot.style) {\n            if (width == null || height == null) {\n                return;\n            }\n            this._width = width;\n            this._height = height;\n            this.getLayer(CANVAS_ZLEVEL).resize(width, height);\n        }\n        else {\n            var domRoot = this._domRoot;\n            domRoot.style.display = 'none';\n            var opts = this._opts;\n            var root = this.root;\n            width != null && (opts.width = width);\n            height != null && (opts.height = height);\n            width = getSize(root, 0, opts);\n            height = getSize(root, 1, opts);\n            domRoot.style.display = '';\n            if (this._width !== width || height !== this._height) {\n                domRoot.style.width = width + 'px';\n                domRoot.style.height = height + 'px';\n                for (var id in this._layers) {\n                    if (this._layers.hasOwnProperty(id)) {\n                        this._layers[id].resize(width, height);\n                    }\n                }\n                this.refresh(true);\n            }\n            this._width = width;\n            this._height = height;\n        }\n        return this;\n    };\n    CanvasPainter.prototype.clearLayer = function (zlevel) {\n        var layer = this._layers[zlevel];\n        if (layer) {\n            layer.clear();\n        }\n    };\n    CanvasPainter.prototype.dispose = function () {\n        this.root.innerHTML = '';\n        this.root =\n            this.storage =\n                this._domRoot =\n                    this._layers = null;\n    };\n    CanvasPainter.prototype.getRenderedCanvas = function (opts) {\n        opts = opts || {};\n        if (this._singleCanvas && !this._compositeManually) {\n            return this._layers[CANVAS_ZLEVEL].dom;\n        }\n        var imageLayer = new Layer('image', this, opts.pixelRatio || this.dpr);\n        imageLayer.initContext();\n        imageLayer.clear(false, opts.backgroundColor || this._backgroundColor);\n        var ctx = imageLayer.ctx;\n        if (opts.pixelRatio <= this.dpr) {\n            this.refresh();\n            var width_1 = imageLayer.dom.width;\n            var height_1 = imageLayer.dom.height;\n            this.eachLayer(function (layer) {\n                if (layer.__builtin__) {\n                    ctx.drawImage(layer.dom, 0, 0, width_1, height_1);\n                }\n                else if (layer.renderToCanvas) {\n                    ctx.save();\n                    layer.renderToCanvas(ctx);\n                    ctx.restore();\n                }\n            });\n        }\n        else {\n            var scope = {\n                inHover: false,\n                viewWidth: this._width,\n                viewHeight: this._height\n            };\n            var displayList = this.storage.getDisplayList(true);\n            for (var i = 0, len = displayList.length; i < len; i++) {\n                var el = displayList[i];\n                brush(ctx, el, scope, i === len - 1);\n            }\n        }\n        return imageLayer.dom;\n    };\n    CanvasPainter.prototype.getWidth = function () {\n        return this._width;\n    };\n    CanvasPainter.prototype.getHeight = function () {\n        return this._height;\n    };\n    return CanvasPainter;\n}());\nexport default CanvasPainter;\n;\n","import { isAroundZero } from './helper.js';\nvar mathSin = Math.sin;\nvar mathCos = Math.cos;\nvar PI = Math.PI;\nvar PI2 = Math.PI * 2;\nvar degree = 180 / PI;\nvar SVGPathRebuilder = (function () {\n    function SVGPathRebuilder() {\n    }\n    SVGPathRebuilder.prototype.reset = function (precision) {\n        this._start = true;\n        this._d = [];\n        this._str = '';\n        this._p = Math.pow(10, precision || 4);\n    };\n    SVGPathRebuilder.prototype.moveTo = function (x, y) {\n        this._add('M', x, y);\n    };\n    SVGPathRebuilder.prototype.lineTo = function (x, y) {\n        this._add('L', x, y);\n    };\n    SVGPathRebuilder.prototype.bezierCurveTo = function (x, y, x2, y2, x3, y3) {\n        this._add('C', x, y, x2, y2, x3, y3);\n    };\n    SVGPathRebuilder.prototype.quadraticCurveTo = function (x, y, x2, y2) {\n        this._add('Q', x, y, x2, y2);\n    };\n    SVGPathRebuilder.prototype.arc = function (cx, cy, r, startAngle, endAngle, anticlockwise) {\n        this.ellipse(cx, cy, r, r, 0, startAngle, endAngle, anticlockwise);\n    };\n    SVGPathRebuilder.prototype.ellipse = function (cx, cy, rx, ry, psi, startAngle, endAngle, anticlockwise) {\n        var dTheta = endAngle - startAngle;\n        var clockwise = !anticlockwise;\n        var dThetaPositive = Math.abs(dTheta);\n        var isCircle = isAroundZero(dThetaPositive - PI2)\n            || (clockwise ? dTheta >= PI2 : -dTheta >= PI2);\n        var unifiedTheta = dTheta > 0 ? dTheta % PI2 : (dTheta % PI2 + PI2);\n        var large = false;\n        if (isCircle) {\n            large = true;\n        }\n        else if (isAroundZero(dThetaPositive)) {\n            large = false;\n        }\n        else {\n            large = (unifiedTheta >= PI) === !!clockwise;\n        }\n        var x0 = cx + rx * mathCos(startAngle);\n        var y0 = cy + ry * mathSin(startAngle);\n        if (this._start) {\n            this._add('M', x0, y0);\n        }\n        var xRot = Math.round(psi * degree);\n        if (isCircle) {\n            var p = 1 / this._p;\n            var dTheta_1 = (clockwise ? 1 : -1) * (PI2 - p);\n            this._add('A', rx, ry, xRot, 1, +clockwise, cx + rx * mathCos(startAngle + dTheta_1), cy + ry * mathSin(startAngle + dTheta_1));\n            if (p > 1e-2) {\n                this._add('A', rx, ry, xRot, 0, +clockwise, x0, y0);\n            }\n        }\n        else {\n            var x = cx + rx * mathCos(endAngle);\n            var y = cy + ry * mathSin(endAngle);\n            this._add('A', rx, ry, xRot, +large, +clockwise, x, y);\n        }\n    };\n    SVGPathRebuilder.prototype.rect = function (x, y, w, h) {\n        this._add('M', x, y);\n        this._add('l', w, 0);\n        this._add('l', 0, h);\n        this._add('l', -w, 0);\n        this._add('Z');\n    };\n    SVGPathRebuilder.prototype.closePath = function () {\n        if (this._d.length > 0) {\n            this._add('Z');\n        }\n    };\n    SVGPathRebuilder.prototype._add = function (cmd, a, b, c, d, e, f, g, h) {\n        var vals = [];\n        var p = this._p;\n        for (var i = 1; i < arguments.length; i++) {\n            var val = arguments[i];\n            if (isNaN(val)) {\n                this._invalid = true;\n                return;\n            }\n            vals.push(Math.round(val * p) / p);\n        }\n        this._d.push(cmd + vals.join(' '));\n        this._start = cmd === 'Z';\n    };\n    SVGPathRebuilder.prototype.generateStr = function () {\n        this._str = this._invalid ? '' : this._d.join('');\n        this._d = [];\n    };\n    SVGPathRebuilder.prototype.getStr = function () {\n        return this._str;\n    };\n    return SVGPathRebuilder;\n}());\nexport default SVGPathRebuilder;\n","import { DEFAULT_PATH_STYLE } from '../graphic/Path.js';\nimport ZRImage from '../graphic/Image.js';\nimport { getLineDash } from '../canvas/dashStyle.js';\nimport { map } from '../core/util.js';\nimport { normalizeColor } from './helper.js';\nvar NONE = 'none';\nvar mathRound = Math.round;\nfunction pathHasFill(style) {\n    var fill = style.fill;\n    return fill != null && fill !== NONE;\n}\nfunction pathHasStroke(style) {\n    var stroke = style.stroke;\n    return stroke != null && stroke !== NONE;\n}\nvar strokeProps = ['lineCap', 'miterLimit', 'lineJoin'];\nvar svgStrokeProps = map(strokeProps, function (prop) { return \"stroke-\" + prop.toLowerCase(); });\nexport default function mapStyleToAttrs(updateAttr, style, el, forceUpdate) {\n    var opacity = style.opacity == null ? 1 : style.opacity;\n    if (el instanceof ZRImage) {\n        updateAttr('opacity', opacity);\n        return;\n    }\n    if (pathHasFill(style)) {\n        var fill = normalizeColor(style.fill);\n        updateAttr('fill', fill.color);\n        var fillOpacity = style.fillOpacity != null\n            ? style.fillOpacity * fill.opacity * opacity\n            : fill.opacity * opacity;\n        if (forceUpdate || fillOpacity < 1) {\n            updateAttr('fill-opacity', fillOpacity);\n        }\n    }\n    else {\n        updateAttr('fill', NONE);\n    }\n    if (pathHasStroke(style)) {\n        var stroke = normalizeColor(style.stroke);\n        updateAttr('stroke', stroke.color);\n        var strokeScale = style.strokeNoScale\n            ? el.getLineScale()\n            : 1;\n        var strokeWidth = (strokeScale ? (style.lineWidth || 0) / strokeScale : 0);\n        var strokeOpacity = style.strokeOpacity != null\n            ? style.strokeOpacity * stroke.opacity * opacity\n            : stroke.opacity * opacity;\n        var strokeFirst = style.strokeFirst;\n        if (forceUpdate || strokeWidth !== 1) {\n            updateAttr('stroke-width', strokeWidth);\n        }\n        if (forceUpdate || strokeFirst) {\n            updateAttr('paint-order', strokeFirst ? 'stroke' : 'fill');\n        }\n        if (forceUpdate || strokeOpacity < 1) {\n            updateAttr('stroke-opacity', strokeOpacity);\n        }\n        if (style.lineDash) {\n            var _a = getLineDash(el), lineDash = _a[0], lineDashOffset = _a[1];\n            if (lineDash) {\n                lineDashOffset = mathRound(lineDashOffset || 0);\n                updateAttr('stroke-dasharray', lineDash.join(','));\n                if (lineDashOffset || forceUpdate) {\n                    updateAttr('stroke-dashoffset', lineDashOffset);\n                }\n            }\n        }\n        else if (forceUpdate) {\n            updateAttr('stroke-dasharray', NONE);\n        }\n        for (var i = 0; i < strokeProps.length; i++) {\n            var propName = strokeProps[i];\n            if (forceUpdate || style[propName] !== DEFAULT_PATH_STYLE[propName]) {\n                var val = style[propName] || DEFAULT_PATH_STYLE[propName];\n                val && updateAttr(svgStrokeProps[i], val);\n            }\n        }\n    }\n    else if (forceUpdate) {\n        updateAttr('stroke', NONE);\n    }\n}\n","import { keys, map } from '../core/util.js';\nimport { encodeHTML } from '../core/dom.js';\nexport var SVGNS = 'http://www.w3.org/2000/svg';\nexport var XLINKNS = 'http://www.w3.org/1999/xlink';\nexport var XMLNS = 'http://www.w3.org/2000/xmlns/';\nexport var XML_NAMESPACE = 'http://www.w3.org/XML/1998/namespace';\nexport function createElement(name) {\n    return document.createElementNS(SVGNS, name);\n}\n;\nexport function createVNode(tag, key, attrs, children, text) {\n    return {\n        tag: tag,\n        attrs: attrs || {},\n        children: children,\n        text: text,\n        key: key\n    };\n}\nfunction createElementOpen(name, attrs) {\n    var attrsStr = [];\n    if (attrs) {\n        for (var key in attrs) {\n            var val = attrs[key];\n            var part = key;\n            if (val === false) {\n                continue;\n            }\n            else if (val !== true && val != null) {\n                part += \"=\\\"\" + val + \"\\\"\";\n            }\n            attrsStr.push(part);\n        }\n    }\n    return \"<\" + name + \" \" + attrsStr.join(' ') + \">\";\n}\nfunction createElementClose(name) {\n    return \"</\" + name + \">\";\n}\nexport function vNodeToString(el, opts) {\n    opts = opts || {};\n    var S = opts.newline ? '\\n' : '';\n    function convertElToString(el) {\n        var children = el.children, tag = el.tag, attrs = el.attrs, text = el.text;\n        return createElementOpen(tag, attrs)\n            + (tag !== 'style' ? encodeHTML(text) : text || '')\n            + (children ? \"\" + S + map(children, function (child) { return convertElToString(child); }).join(S) + S : '')\n            + createElementClose(tag);\n    }\n    return convertElToString(el);\n}\nexport function getCssString(selectorNodes, animationNodes, opts) {\n    opts = opts || {};\n    var S = opts.newline ? '\\n' : '';\n    var bracketBegin = \" {\" + S;\n    var bracketEnd = S + \"}\";\n    var selectors = map(keys(selectorNodes), function (className) {\n        return className + bracketBegin + map(keys(selectorNodes[className]), function (attrName) {\n            return attrName + \":\" + selectorNodes[className][attrName] + \";\";\n        }).join(S) + bracketEnd;\n    }).join(S);\n    var animations = map(keys(animationNodes), function (animationName) {\n        return \"@keyframes \" + animationName + bracketBegin + map(keys(animationNodes[animationName]), function (percent) {\n            return percent + bracketBegin + map(keys(animationNodes[animationName][percent]), function (attrName) {\n                var val = animationNodes[animationName][percent][attrName];\n                if (attrName === 'd') {\n                    val = \"path(\\\"\" + val + \"\\\")\";\n                }\n                return attrName + \":\" + val + \";\";\n            }).join(S) + bracketEnd;\n        }).join(S) + bracketEnd;\n    }).join(S);\n    if (!selectors && !animations) {\n        return '';\n    }\n    return ['<![CDATA[', selectors, animations, ']]>'].join(S);\n}\nexport function createBrushScope(zrId) {\n    return {\n        zrId: zrId,\n        shadowCache: {},\n        patternCache: {},\n        gradientCache: {},\n        clipPathCache: {},\n        defs: {},\n        cssNodes: {},\n        cssAnims: {},\n        cssClassIdx: 0,\n        cssAnimIdx: 0,\n        shadowIdx: 0,\n        gradientIdx: 0,\n        patternIdx: 0,\n        clipPathIdx: 0\n    };\n}\nexport function createSVGVNode(width, height, children, useViewBox) {\n    return createVNode('svg', 'root', {\n        'width': width,\n        'height': height,\n        'xmlns': SVGNS,\n        'xmlns:xlink': XLINKNS,\n        'version': '1.1',\n        'baseProfile': 'full',\n        'viewBox': useViewBox ? \"0 0 \" + width + \" \" + height : false\n    }, children);\n}\n","import { copyTransform } from '../core/Transformable.js';\nimport { createBrushScope } from './core.js';\nimport SVGPathRebuilder from './SVGPathRebuilder.js';\nimport PathProxy from '../core/PathProxy.js';\nimport { getPathPrecision, getSRTTransformString } from './helper.js';\nimport { each, extend, filter, isNumber, isString, keys } from '../core/util.js';\nimport CompoundPath from '../graphic/CompoundPath.js';\nimport { createCubicEasingFunc } from '../animation/cubicEasing.js';\nexport var EASING_MAP = {\n    cubicIn: '0.32,0,0.67,0',\n    cubicOut: '0.33,1,0.68,1',\n    cubicInOut: '0.65,0,0.35,1',\n    quadraticIn: '0.11,0,0.5,0',\n    quadraticOut: '0.5,1,0.89,1',\n    quadraticInOut: '0.45,0,0.55,1',\n    quarticIn: '0.5,0,0.75,0',\n    quarticOut: '0.25,1,0.5,1',\n    quarticInOut: '0.76,0,0.24,1',\n    quinticIn: '0.64,0,0.78,0',\n    quinticOut: '0.22,1,0.36,1',\n    quinticInOut: '0.83,0,0.17,1',\n    sinusoidalIn: '0.12,0,0.39,0',\n    sinusoidalOut: '0.61,1,0.88,1',\n    sinusoidalInOut: '0.37,0,0.63,1',\n    exponentialIn: '0.7,0,0.84,0',\n    exponentialOut: '0.16,1,0.3,1',\n    exponentialInOut: '0.87,0,0.13,1',\n    circularIn: '0.55,0,1,0.45',\n    circularOut: '0,0.55,0.45,1',\n    circularInOut: '0.85,0,0.15,1'\n};\nvar transformOriginKey = 'transform-origin';\nfunction buildPathString(el, kfShape, path) {\n    var shape = extend({}, el.shape);\n    extend(shape, kfShape);\n    el.buildPath(path, shape);\n    var svgPathBuilder = new SVGPathRebuilder();\n    svgPathBuilder.reset(getPathPrecision(el));\n    path.rebuildPath(svgPathBuilder, 1);\n    svgPathBuilder.generateStr();\n    return svgPathBuilder.getStr();\n}\nfunction setTransformOrigin(target, transform) {\n    var originX = transform.originX, originY = transform.originY;\n    if (originX || originY) {\n        target[transformOriginKey] = originX + \"px \" + originY + \"px\";\n    }\n}\nexport var ANIMATE_STYLE_MAP = {\n    fill: 'fill',\n    opacity: 'opacity',\n    lineWidth: 'stroke-width',\n    lineDashOffset: 'stroke-dashoffset'\n};\nfunction addAnimation(cssAnim, scope) {\n    var animationName = scope.zrId + '-ani-' + scope.cssAnimIdx++;\n    scope.cssAnims[animationName] = cssAnim;\n    return animationName;\n}\nfunction createCompoundPathCSSAnimation(el, attrs, scope) {\n    var paths = el.shape.paths;\n    var composedAnim = {};\n    var cssAnimationCfg;\n    var cssAnimationName;\n    each(paths, function (path) {\n        var subScope = createBrushScope(scope.zrId);\n        subScope.animation = true;\n        createCSSAnimation(path, {}, subScope, true);\n        var cssAnims = subScope.cssAnims;\n        var cssNodes = subScope.cssNodes;\n        var animNames = keys(cssAnims);\n        var len = animNames.length;\n        if (!len) {\n            return;\n        }\n        cssAnimationName = animNames[len - 1];\n        var lastAnim = cssAnims[cssAnimationName];\n        for (var percent in lastAnim) {\n            var kf = lastAnim[percent];\n            composedAnim[percent] = composedAnim[percent] || { d: '' };\n            composedAnim[percent].d += kf.d || '';\n        }\n        for (var className in cssNodes) {\n            var val = cssNodes[className].animation;\n            if (val.indexOf(cssAnimationName) >= 0) {\n                cssAnimationCfg = val;\n            }\n        }\n    });\n    if (!cssAnimationCfg) {\n        return;\n    }\n    attrs.d = false;\n    var animationName = addAnimation(composedAnim, scope);\n    return cssAnimationCfg.replace(cssAnimationName, animationName);\n}\nfunction getEasingFunc(easing) {\n    return isString(easing)\n        ? EASING_MAP[easing]\n            ? \"cubic-bezier(\" + EASING_MAP[easing] + \")\"\n            : createCubicEasingFunc(easing) ? easing : ''\n        : '';\n}\nexport function createCSSAnimation(el, attrs, scope, onlyShape) {\n    var animators = el.animators;\n    var len = animators.length;\n    var cssAnimations = [];\n    if (el instanceof CompoundPath) {\n        var animationCfg = createCompoundPathCSSAnimation(el, attrs, scope);\n        if (animationCfg) {\n            cssAnimations.push(animationCfg);\n        }\n        else if (!len) {\n            return;\n        }\n    }\n    else if (!len) {\n        return;\n    }\n    var groupAnimators = {};\n    for (var i = 0; i < len; i++) {\n        var animator = animators[i];\n        var cfgArr = [animator.getMaxTime() / 1000 + 's'];\n        var easing = getEasingFunc(animator.getClip().easing);\n        var delay = animator.getDelay();\n        if (easing) {\n            cfgArr.push(easing);\n        }\n        else {\n            cfgArr.push('linear');\n        }\n        if (delay) {\n            cfgArr.push(delay / 1000 + 's');\n        }\n        if (animator.getLoop()) {\n            cfgArr.push('infinite');\n        }\n        var cfg = cfgArr.join(' ');\n        groupAnimators[cfg] = groupAnimators[cfg] || [cfg, []];\n        groupAnimators[cfg][1].push(animator);\n    }\n    function createSingleCSSAnimation(groupAnimator) {\n        var animators = groupAnimator[1];\n        var len = animators.length;\n        var transformKfs = {};\n        var shapeKfs = {};\n        var finalKfs = {};\n        var animationTimingFunctionAttrName = 'animation-timing-function';\n        function saveAnimatorTrackToCssKfs(animator, cssKfs, toCssAttrName) {\n            var tracks = animator.getTracks();\n            var maxTime = animator.getMaxTime();\n            for (var k = 0; k < tracks.length; k++) {\n                var track = tracks[k];\n                if (track.needsAnimate()) {\n                    var kfs = track.keyframes;\n                    var attrName = track.propName;\n                    toCssAttrName && (attrName = toCssAttrName(attrName));\n                    if (attrName) {\n                        for (var i = 0; i < kfs.length; i++) {\n                            var kf = kfs[i];\n                            var percent = Math.round(kf.time / maxTime * 100) + '%';\n                            var kfEasing = getEasingFunc(kf.easing);\n                            var rawValue = kf.rawValue;\n                            if (isString(rawValue) || isNumber(rawValue)) {\n                                cssKfs[percent] = cssKfs[percent] || {};\n                                cssKfs[percent][attrName] = kf.rawValue;\n                                if (kfEasing) {\n                                    cssKfs[percent][animationTimingFunctionAttrName] = kfEasing;\n                                }\n                            }\n                        }\n                    }\n                }\n            }\n        }\n        for (var i = 0; i < len; i++) {\n            var animator = animators[i];\n            var targetProp = animator.targetName;\n            if (!targetProp) {\n                !onlyShape && saveAnimatorTrackToCssKfs(animator, transformKfs);\n            }\n            else if (targetProp === 'shape') {\n                saveAnimatorTrackToCssKfs(animator, shapeKfs);\n            }\n        }\n        for (var percent in transformKfs) {\n            var transform = {};\n            copyTransform(transform, el);\n            extend(transform, transformKfs[percent]);\n            var str = getSRTTransformString(transform);\n            var timingFunction = transformKfs[percent][animationTimingFunctionAttrName];\n            finalKfs[percent] = str ? {\n                transform: str\n            } : {};\n            setTransformOrigin(finalKfs[percent], transform);\n            if (timingFunction) {\n                finalKfs[percent][animationTimingFunctionAttrName] = timingFunction;\n            }\n        }\n        ;\n        var path;\n        var canAnimateShape = true;\n        for (var percent in shapeKfs) {\n            finalKfs[percent] = finalKfs[percent] || {};\n            var isFirst = !path;\n            var timingFunction = shapeKfs[percent][animationTimingFunctionAttrName];\n            if (isFirst) {\n                path = new PathProxy();\n            }\n            var len_1 = path.len();\n            path.reset();\n            finalKfs[percent].d = buildPathString(el, shapeKfs[percent], path);\n            var newLen = path.len();\n            if (!isFirst && len_1 !== newLen) {\n                canAnimateShape = false;\n                break;\n            }\n            if (timingFunction) {\n                finalKfs[percent][animationTimingFunctionAttrName] = timingFunction;\n            }\n        }\n        ;\n        if (!canAnimateShape) {\n            for (var percent in finalKfs) {\n                delete finalKfs[percent].d;\n            }\n        }\n        if (!onlyShape) {\n            for (var i = 0; i < len; i++) {\n                var animator = animators[i];\n                var targetProp = animator.targetName;\n                if (targetProp === 'style') {\n                    saveAnimatorTrackToCssKfs(animator, finalKfs, function (propName) { return ANIMATE_STYLE_MAP[propName]; });\n                }\n            }\n        }\n        var percents = keys(finalKfs);\n        var allTransformOriginSame = true;\n        var transformOrigin;\n        for (var i = 1; i < percents.length; i++) {\n            var p0 = percents[i - 1];\n            var p1 = percents[i];\n            if (finalKfs[p0][transformOriginKey] !== finalKfs[p1][transformOriginKey]) {\n                allTransformOriginSame = false;\n                break;\n            }\n            transformOrigin = finalKfs[p0][transformOriginKey];\n        }\n        if (allTransformOriginSame && transformOrigin) {\n            for (var percent in finalKfs) {\n                if (finalKfs[percent][transformOriginKey]) {\n                    delete finalKfs[percent][transformOriginKey];\n                }\n            }\n            attrs[transformOriginKey] = transformOrigin;\n        }\n        if (filter(percents, function (percent) { return keys(finalKfs[percent]).length > 0; }).length) {\n            var animationName = addAnimation(finalKfs, scope);\n            return animationName + \" \" + groupAnimator[0] + \" both\";\n        }\n    }\n    for (var key in groupAnimators) {\n        var animationCfg = createSingleCSSAnimation(groupAnimators[key]);\n        if (animationCfg) {\n            cssAnimations.push(animationCfg);\n        }\n    }\n    if (cssAnimations.length) {\n        var className = scope.zrId + '-cls-' + scope.cssClassIdx++;\n        scope.cssNodes['.' + className] = {\n            animation: cssAnimations.join(',')\n        };\n        attrs[\"class\"] = className;\n    }\n}\n","import { adjustTextY, getIdURL, getMatrixStr, getPathPrecision, getShadowKey, getSRTTransformString, hasShadow, isAroundZero, isGradient, isImagePattern, isLinearGradient, isPattern, isRadialGradient, normalizeColor, round4, TEXT_ALIGN_TO_ANCHOR } from './helper.js';\nimport Path from '../graphic/Path.js';\nimport ZRImage from '../graphic/Image.js';\nimport { getLineHeight } from '../contain/text.js';\nimport TSpan from '../graphic/TSpan.js';\nimport SVGPathRebuilder from './SVGPathRebuilder.js';\nimport mapStyleToAttrs from './mapStyleToAttrs.js';\nimport { createVNode, vNodeToString } from './core.js';\nimport { assert, clone, isFunction, isString, logError, map, retrieve2 } from '../core/util.js';\nimport { createOrUpdateImage } from '../graphic/helper/image.js';\nimport { createCSSAnimation } from './cssAnimation.js';\nimport { hasSeparateFont, parseFontSize } from '../graphic/Text.js';\nimport { DEFAULT_FONT, DEFAULT_FONT_FAMILY } from '../core/platform.js';\nvar round = Math.round;\nfunction isImageLike(val) {\n    return val && isString(val.src);\n}\nfunction isCanvasLike(val) {\n    return val && isFunction(val.toDataURL);\n}\nfunction setStyleAttrs(attrs, style, el, scope) {\n    mapStyleToAttrs(function (key, val) {\n        var isFillStroke = key === 'fill' || key === 'stroke';\n        if (isFillStroke && isGradient(val)) {\n            setGradient(style, attrs, key, scope);\n        }\n        else if (isFillStroke && isPattern(val)) {\n            setPattern(el, attrs, key, scope);\n        }\n        else {\n            attrs[key] = val;\n        }\n    }, style, el, false);\n    setShadow(el, attrs, scope);\n}\nfunction noRotateScale(m) {\n    return isAroundZero(m[0] - 1)\n        && isAroundZero(m[1])\n        && isAroundZero(m[2])\n        && isAroundZero(m[3] - 1);\n}\nfunction noTranslate(m) {\n    return isAroundZero(m[4]) && isAroundZero(m[5]);\n}\nfunction setTransform(attrs, m, compress) {\n    if (m && !(noTranslate(m) && noRotateScale(m))) {\n        var mul = compress ? 10 : 1e4;\n        attrs.transform = noRotateScale(m)\n            ? \"translate(\" + round(m[4] * mul) / mul + \" \" + round(m[5] * mul) / mul + \")\" : getMatrixStr(m);\n    }\n}\nfunction convertPolyShape(shape, attrs, mul) {\n    var points = shape.points;\n    var strArr = [];\n    for (var i = 0; i < points.length; i++) {\n        strArr.push(round(points[i][0] * mul) / mul);\n        strArr.push(round(points[i][1] * mul) / mul);\n    }\n    attrs.points = strArr.join(' ');\n}\nfunction validatePolyShape(shape) {\n    return !shape.smooth;\n}\nfunction createAttrsConvert(desc) {\n    var normalizedDesc = map(desc, function (item) {\n        return (typeof item === 'string' ? [item, item] : item);\n    });\n    return function (shape, attrs, mul) {\n        for (var i = 0; i < normalizedDesc.length; i++) {\n            var item = normalizedDesc[i];\n            var val = shape[item[0]];\n            if (val != null) {\n                attrs[item[1]] = round(val * mul) / mul;\n            }\n        }\n    };\n}\nvar builtinShapesDef = {\n    circle: [createAttrsConvert(['cx', 'cy', 'r'])],\n    polyline: [convertPolyShape, validatePolyShape],\n    polygon: [convertPolyShape, validatePolyShape]\n};\nfunction hasShapeAnimation(el) {\n    var animators = el.animators;\n    for (var i = 0; i < animators.length; i++) {\n        if (animators[i].targetName === 'shape') {\n            return true;\n        }\n    }\n    return false;\n}\nexport function brushSVGPath(el, scope) {\n    var style = el.style;\n    var shape = el.shape;\n    var builtinShpDef = builtinShapesDef[el.type];\n    var attrs = {};\n    var needsAnimate = scope.animation;\n    var svgElType = 'path';\n    var strokePercent = el.style.strokePercent;\n    var precision = (scope.compress && getPathPrecision(el)) || 4;\n    if (builtinShpDef\n        && !scope.willUpdate\n        && !(builtinShpDef[1] && !builtinShpDef[1](shape))\n        && !(needsAnimate && hasShapeAnimation(el))\n        && !(strokePercent < 1)) {\n        svgElType = el.type;\n        var mul = Math.pow(10, precision);\n        builtinShpDef[0](shape, attrs, mul);\n    }\n    else {\n        var needBuildPath = !el.path || el.shapeChanged();\n        if (!el.path) {\n            el.createPathProxy();\n        }\n        var path = el.path;\n        if (needBuildPath) {\n            path.beginPath();\n            el.buildPath(path, el.shape);\n            el.pathUpdated();\n        }\n        var pathVersion = path.getVersion();\n        var elExt = el;\n        var svgPathBuilder = elExt.__svgPathBuilder;\n        if (elExt.__svgPathVersion !== pathVersion\n            || !svgPathBuilder\n            || strokePercent !== elExt.__svgPathStrokePercent) {\n            if (!svgPathBuilder) {\n                svgPathBuilder = elExt.__svgPathBuilder = new SVGPathRebuilder();\n            }\n            svgPathBuilder.reset(precision);\n            path.rebuildPath(svgPathBuilder, strokePercent);\n            svgPathBuilder.generateStr();\n            elExt.__svgPathVersion = pathVersion;\n            elExt.__svgPathStrokePercent = strokePercent;\n        }\n        attrs.d = svgPathBuilder.getStr();\n    }\n    setTransform(attrs, el.transform);\n    setStyleAttrs(attrs, style, el, scope);\n    scope.animation && createCSSAnimation(el, attrs, scope);\n    return createVNode(svgElType, el.id + '', attrs);\n}\nexport function brushSVGImage(el, scope) {\n    var style = el.style;\n    var image = style.image;\n    if (image && !isString(image)) {\n        if (isImageLike(image)) {\n            image = image.src;\n        }\n        else if (isCanvasLike(image)) {\n            image = image.toDataURL();\n        }\n    }\n    if (!image) {\n        return;\n    }\n    var x = style.x || 0;\n    var y = style.y || 0;\n    var dw = style.width;\n    var dh = style.height;\n    var attrs = {\n        href: image,\n        width: dw,\n        height: dh\n    };\n    if (x) {\n        attrs.x = x;\n    }\n    if (y) {\n        attrs.y = y;\n    }\n    setTransform(attrs, el.transform);\n    setStyleAttrs(attrs, style, el, scope);\n    scope.animation && createCSSAnimation(el, attrs, scope);\n    return createVNode('image', el.id + '', attrs);\n}\n;\nexport function brushSVGTSpan(el, scope) {\n    var style = el.style;\n    var text = style.text;\n    text != null && (text += '');\n    if (!text || isNaN(style.x) || isNaN(style.y)) {\n        return;\n    }\n    var font = style.font || DEFAULT_FONT;\n    var x = style.x || 0;\n    var y = adjustTextY(style.y || 0, getLineHeight(font), style.textBaseline);\n    var textAlign = TEXT_ALIGN_TO_ANCHOR[style.textAlign]\n        || style.textAlign;\n    var attrs = {\n        'dominant-baseline': 'central',\n        'text-anchor': textAlign\n    };\n    if (hasSeparateFont(style)) {\n        var separatedFontStr = '';\n        var fontStyle = style.fontStyle;\n        var fontSize = parseFontSize(style.fontSize);\n        if (!parseFloat(fontSize)) {\n            return;\n        }\n        var fontFamily = style.fontFamily || DEFAULT_FONT_FAMILY;\n        var fontWeight = style.fontWeight;\n        separatedFontStr += \"font-size:\" + fontSize + \";font-family:\" + fontFamily + \";\";\n        if (fontStyle && fontStyle !== 'normal') {\n            separatedFontStr += \"font-style:\" + fontStyle + \";\";\n        }\n        if (fontWeight && fontWeight !== 'normal') {\n            separatedFontStr += \"font-weight:\" + fontWeight + \";\";\n        }\n        attrs.style = separatedFontStr;\n    }\n    else {\n        attrs.style = \"font: \" + font;\n    }\n    if (text.match(/\\s/)) {\n        attrs['xml:space'] = 'preserve';\n    }\n    if (x) {\n        attrs.x = x;\n    }\n    if (y) {\n        attrs.y = y;\n    }\n    setTransform(attrs, el.transform);\n    setStyleAttrs(attrs, style, el, scope);\n    scope.animation && createCSSAnimation(el, attrs, scope);\n    return createVNode('text', el.id + '', attrs, undefined, text);\n}\nexport function brush(el, scope) {\n    if (el instanceof Path) {\n        return brushSVGPath(el, scope);\n    }\n    else if (el instanceof ZRImage) {\n        return brushSVGImage(el, scope);\n    }\n    else if (el instanceof TSpan) {\n        return brushSVGTSpan(el, scope);\n    }\n}\nfunction setShadow(el, attrs, scope) {\n    var style = el.style;\n    if (hasShadow(style)) {\n        var shadowKey = getShadowKey(el);\n        var shadowCache = scope.shadowCache;\n        var shadowId = shadowCache[shadowKey];\n        if (!shadowId) {\n            var globalScale = el.getGlobalScale();\n            var scaleX = globalScale[0];\n            var scaleY = globalScale[1];\n            if (!scaleX || !scaleY) {\n                return;\n            }\n            var offsetX = style.shadowOffsetX || 0;\n            var offsetY = style.shadowOffsetY || 0;\n            var blur_1 = style.shadowBlur;\n            var _a = normalizeColor(style.shadowColor), opacity = _a.opacity, color = _a.color;\n            var stdDx = blur_1 / 2 / scaleX;\n            var stdDy = blur_1 / 2 / scaleY;\n            var stdDeviation = stdDx + ' ' + stdDy;\n            shadowId = scope.zrId + '-s' + scope.shadowIdx++;\n            scope.defs[shadowId] = createVNode('filter', shadowId, {\n                'id': shadowId,\n                'x': '-100%',\n                'y': '-100%',\n                'width': '300%',\n                'height': '300%'\n            }, [\n                createVNode('feDropShadow', '', {\n                    'dx': offsetX / scaleX,\n                    'dy': offsetY / scaleY,\n                    'stdDeviation': stdDeviation,\n                    'flood-color': color,\n                    'flood-opacity': opacity\n                })\n            ]);\n            shadowCache[shadowKey] = shadowId;\n        }\n        attrs.filter = getIdURL(shadowId);\n    }\n}\nexport function setGradient(style, attrs, target, scope) {\n    var val = style[target];\n    var gradientTag;\n    var gradientAttrs = {\n        'gradientUnits': val.global\n            ? 'userSpaceOnUse'\n            : 'objectBoundingBox'\n    };\n    if (isLinearGradient(val)) {\n        gradientTag = 'linearGradient';\n        gradientAttrs.x1 = val.x;\n        gradientAttrs.y1 = val.y;\n        gradientAttrs.x2 = val.x2;\n        gradientAttrs.y2 = val.y2;\n    }\n    else if (isRadialGradient(val)) {\n        gradientTag = 'radialGradient';\n        gradientAttrs.cx = retrieve2(val.x, 0.5);\n        gradientAttrs.cy = retrieve2(val.y, 0.5);\n        gradientAttrs.r = retrieve2(val.r, 0.5);\n    }\n    else {\n        if (process.env.NODE_ENV !== 'production') {\n            logError('Illegal gradient type.');\n        }\n        return;\n    }\n    var colors = val.colorStops;\n    var colorStops = [];\n    for (var i = 0, len = colors.length; i < len; ++i) {\n        var offset = round4(colors[i].offset) * 100 + '%';\n        var stopColor = colors[i].color;\n        var _a = normalizeColor(stopColor), color = _a.color, opacity = _a.opacity;\n        var stopsAttrs = {\n            'offset': offset\n        };\n        stopsAttrs['stop-color'] = color;\n        if (opacity < 1) {\n            stopsAttrs['stop-opacity'] = opacity;\n        }\n        colorStops.push(createVNode('stop', i + '', stopsAttrs));\n    }\n    var gradientVNode = createVNode(gradientTag, '', gradientAttrs, colorStops);\n    var gradientKey = vNodeToString(gradientVNode);\n    var gradientCache = scope.gradientCache;\n    var gradientId = gradientCache[gradientKey];\n    if (!gradientId) {\n        gradientId = scope.zrId + '-g' + scope.gradientIdx++;\n        gradientCache[gradientKey] = gradientId;\n        gradientAttrs.id = gradientId;\n        scope.defs[gradientId] = createVNode(gradientTag, gradientId, gradientAttrs, colorStops);\n    }\n    attrs[target] = getIdURL(gradientId);\n}\nexport function setPattern(el, attrs, target, scope) {\n    var val = el.style[target];\n    var boundingRect = el.getBoundingRect();\n    var patternAttrs = {};\n    var repeat = val.repeat;\n    var noRepeat = repeat === 'no-repeat';\n    var repeatX = repeat === 'repeat-x';\n    var repeatY = repeat === 'repeat-y';\n    var child;\n    if (isImagePattern(val)) {\n        var imageWidth_1 = val.imageWidth;\n        var imageHeight_1 = val.imageHeight;\n        var imageSrc = void 0;\n        var patternImage = val.image;\n        if (isString(patternImage)) {\n            imageSrc = patternImage;\n        }\n        else if (isImageLike(patternImage)) {\n            imageSrc = patternImage.src;\n        }\n        else if (isCanvasLike(patternImage)) {\n            imageSrc = patternImage.toDataURL();\n        }\n        if (typeof Image === 'undefined') {\n            var errMsg = 'Image width/height must been given explictly in svg-ssr renderer.';\n            assert(imageWidth_1, errMsg);\n            assert(imageHeight_1, errMsg);\n        }\n        else if (imageWidth_1 == null || imageHeight_1 == null) {\n            var setSizeToVNode_1 = function (vNode, img) {\n                if (vNode) {\n                    var svgEl = vNode.elm;\n                    var width = imageWidth_1 || img.width;\n                    var height = imageHeight_1 || img.height;\n                    if (vNode.tag === 'pattern') {\n                        if (repeatX) {\n                            height = 1;\n                            width /= boundingRect.width;\n                        }\n                        else if (repeatY) {\n                            width = 1;\n                            height /= boundingRect.height;\n                        }\n                    }\n                    vNode.attrs.width = width;\n                    vNode.attrs.height = height;\n                    if (svgEl) {\n                        svgEl.setAttribute('width', width);\n                        svgEl.setAttribute('height', height);\n                    }\n                }\n            };\n            var createdImage = createOrUpdateImage(imageSrc, null, el, function (img) {\n                noRepeat || setSizeToVNode_1(patternVNode, img);\n                setSizeToVNode_1(child, img);\n            });\n            if (createdImage && createdImage.width && createdImage.height) {\n                imageWidth_1 = imageWidth_1 || createdImage.width;\n                imageHeight_1 = imageHeight_1 || createdImage.height;\n            }\n        }\n        child = createVNode('image', 'img', {\n            href: imageSrc,\n            width: imageWidth_1,\n            height: imageHeight_1\n        });\n        patternAttrs.width = imageWidth_1;\n        patternAttrs.height = imageHeight_1;\n    }\n    else if (val.svgElement) {\n        child = clone(val.svgElement);\n        patternAttrs.width = val.svgWidth;\n        patternAttrs.height = val.svgHeight;\n    }\n    if (!child) {\n        return;\n    }\n    var patternWidth;\n    var patternHeight;\n    if (noRepeat) {\n        patternWidth = patternHeight = 1;\n    }\n    else if (repeatX) {\n        patternHeight = 1;\n        patternWidth = patternAttrs.width / boundingRect.width;\n    }\n    else if (repeatY) {\n        patternWidth = 1;\n        patternHeight = patternAttrs.height / boundingRect.height;\n    }\n    else {\n        patternAttrs.patternUnits = 'userSpaceOnUse';\n    }\n    if (patternWidth != null && !isNaN(patternWidth)) {\n        patternAttrs.width = patternWidth;\n    }\n    if (patternHeight != null && !isNaN(patternHeight)) {\n        patternAttrs.height = patternHeight;\n    }\n    var patternTransform = getSRTTransformString(val);\n    patternTransform && (patternAttrs.patternTransform = patternTransform);\n    var patternVNode = createVNode('pattern', '', patternAttrs, [child]);\n    var patternKey = vNodeToString(patternVNode);\n    var patternCache = scope.patternCache;\n    var patternId = patternCache[patternKey];\n    if (!patternId) {\n        patternId = scope.zrId + '-p' + scope.patternIdx++;\n        patternCache[patternKey] = patternId;\n        patternAttrs.id = patternId;\n        patternVNode = scope.defs[patternId] = createVNode('pattern', patternId, patternAttrs, [child]);\n    }\n    attrs[target] = getIdURL(patternId);\n}\nexport function setClipPath(clipPath, attrs, scope) {\n    var clipPathCache = scope.clipPathCache, defs = scope.defs;\n    var clipPathId = clipPathCache[clipPath.id];\n    if (!clipPathId) {\n        clipPathId = scope.zrId + '-c' + scope.clipPathIdx++;\n        var clipPathAttrs = {\n            id: clipPathId\n        };\n        clipPathCache[clipPath.id] = clipPathId;\n        defs[clipPathId] = createVNode('clipPath', clipPathId, clipPathAttrs, [brushSVGPath(clipPath, scope)]);\n    }\n    attrs['clip-path'] = getIdURL(clipPathId);\n}\n","export function createTextNode(text) {\n    return document.createTextNode(text);\n}\nexport function createComment(text) {\n    return document.createComment(text);\n}\nexport function insertBefore(parentNode, newNode, referenceNode) {\n    parentNode.insertBefore(newNode, referenceNode);\n}\nexport function removeChild(node, child) {\n    node.removeChild(child);\n}\nexport function appendChild(node, child) {\n    node.appendChild(child);\n}\nexport function parentNode(node) {\n    return node.parentNode;\n}\nexport function nextSibling(node) {\n    return node.nextSibling;\n}\nexport function tagName(elm) {\n    return elm.tagName;\n}\nexport function setTextContent(node, text) {\n    node.textContent = text;\n}\nexport function getTextContent(node) {\n    return node.textContent;\n}\nexport function isElement(node) {\n    return node.nodeType === 1;\n}\nexport function isText(node) {\n    return node.nodeType === 3;\n}\nexport function isComment(node) {\n    return node.nodeType === 8;\n}\n","import { isArray, isObject } from '../core/util.js';\nimport { createElement, createVNode, XMLNS, XML_NAMESPACE, XLINKNS } from './core.js';\nimport * as api from './domapi.js';\nvar colonChar = 58;\nvar xChar = 120;\nvar emptyNode = createVNode('', '');\nfunction isUndef(s) {\n    return s === undefined;\n}\nfunction isDef(s) {\n    return s !== undefined;\n}\nfunction createKeyToOldIdx(children, beginIdx, endIdx) {\n    var map = {};\n    for (var i = beginIdx; i <= endIdx; ++i) {\n        var key = children[i].key;\n        if (key !== undefined) {\n            if (process.env.NODE_ENV !== 'production') {\n                if (map[key] != null) {\n                    console.error(\"Duplicate key \" + key);\n                }\n            }\n            map[key] = i;\n        }\n    }\n    return map;\n}\nfunction sameVnode(vnode1, vnode2) {\n    var isSameKey = vnode1.key === vnode2.key;\n    var isSameTag = vnode1.tag === vnode2.tag;\n    return isSameTag && isSameKey;\n}\nfunction createElm(vnode) {\n    var i;\n    var children = vnode.children;\n    var tag = vnode.tag;\n    if (isDef(tag)) {\n        var elm = (vnode.elm = createElement(tag));\n        updateAttrs(emptyNode, vnode);\n        if (isArray(children)) {\n            for (i = 0; i < children.length; ++i) {\n                var ch = children[i];\n                if (ch != null) {\n                    api.appendChild(elm, createElm(ch));\n                }\n            }\n        }\n        else if (isDef(vnode.text) && !isObject(vnode.text)) {\n            api.appendChild(elm, api.createTextNode(vnode.text));\n        }\n    }\n    else {\n        vnode.elm = api.createTextNode(vnode.text);\n    }\n    return vnode.elm;\n}\nfunction addVnodes(parentElm, before, vnodes, startIdx, endIdx) {\n    for (; startIdx <= endIdx; ++startIdx) {\n        var ch = vnodes[startIdx];\n        if (ch != null) {\n            api.insertBefore(parentElm, createElm(ch), before);\n        }\n    }\n}\nfunction removeVnodes(parentElm, vnodes, startIdx, endIdx) {\n    for (; startIdx <= endIdx; ++startIdx) {\n        var ch = vnodes[startIdx];\n        if (ch != null) {\n            if (isDef(ch.tag)) {\n                var parent_1 = api.parentNode(ch.elm);\n                api.removeChild(parent_1, ch.elm);\n            }\n            else {\n                api.removeChild(parentElm, ch.elm);\n            }\n        }\n    }\n}\nexport function updateAttrs(oldVnode, vnode) {\n    var key;\n    var elm = vnode.elm;\n    var oldAttrs = oldVnode && oldVnode.attrs || {};\n    var attrs = vnode.attrs || {};\n    if (oldAttrs === attrs) {\n        return;\n    }\n    for (key in attrs) {\n        var cur = attrs[key];\n        var old = oldAttrs[key];\n        if (old !== cur) {\n            if (cur === true) {\n                elm.setAttribute(key, '');\n            }\n            else if (cur === false) {\n                elm.removeAttribute(key);\n            }\n            else {\n                if (key.charCodeAt(0) !== xChar) {\n                    elm.setAttribute(key, cur);\n                }\n                else if (key === 'xmlns:xlink' || key === 'xmlns') {\n                    elm.setAttributeNS(XMLNS, key, cur);\n                }\n                else if (key.charCodeAt(3) === colonChar) {\n                    elm.setAttributeNS(XML_NAMESPACE, key, cur);\n                }\n                else if (key.charCodeAt(5) === colonChar) {\n                    elm.setAttributeNS(XLINKNS, key, cur);\n                }\n                else {\n                    elm.setAttribute(key, cur);\n                }\n            }\n        }\n    }\n    for (key in oldAttrs) {\n        if (!(key in attrs)) {\n            elm.removeAttribute(key);\n        }\n    }\n}\nfunction updateChildren(parentElm, oldCh, newCh) {\n    var oldStartIdx = 0;\n    var newStartIdx = 0;\n    var oldEndIdx = oldCh.length - 1;\n    var oldStartVnode = oldCh[0];\n    var oldEndVnode = oldCh[oldEndIdx];\n    var newEndIdx = newCh.length - 1;\n    var newStartVnode = newCh[0];\n    var newEndVnode = newCh[newEndIdx];\n    var oldKeyToIdx;\n    var idxInOld;\n    var elmToMove;\n    var before;\n    while (oldStartIdx <= oldEndIdx && newStartIdx <= newEndIdx) {\n        if (oldStartVnode == null) {\n            oldStartVnode = oldCh[++oldStartIdx];\n        }\n        else if (oldEndVnode == null) {\n            oldEndVnode = oldCh[--oldEndIdx];\n        }\n        else if (newStartVnode == null) {\n            newStartVnode = newCh[++newStartIdx];\n        }\n        else if (newEndVnode == null) {\n            newEndVnode = newCh[--newEndIdx];\n        }\n        else if (sameVnode(oldStartVnode, newStartVnode)) {\n            patchVnode(oldStartVnode, newStartVnode);\n            oldStartVnode = oldCh[++oldStartIdx];\n            newStartVnode = newCh[++newStartIdx];\n        }\n        else if (sameVnode(oldEndVnode, newEndVnode)) {\n            patchVnode(oldEndVnode, newEndVnode);\n            oldEndVnode = oldCh[--oldEndIdx];\n            newEndVnode = newCh[--newEndIdx];\n        }\n        else if (sameVnode(oldStartVnode, newEndVnode)) {\n            patchVnode(oldStartVnode, newEndVnode);\n            api.insertBefore(parentElm, oldStartVnode.elm, api.nextSibling(oldEndVnode.elm));\n            oldStartVnode = oldCh[++oldStartIdx];\n            newEndVnode = newCh[--newEndIdx];\n        }\n        else if (sameVnode(oldEndVnode, newStartVnode)) {\n            patchVnode(oldEndVnode, newStartVnode);\n            api.insertBefore(parentElm, oldEndVnode.elm, oldStartVnode.elm);\n            oldEndVnode = oldCh[--oldEndIdx];\n            newStartVnode = newCh[++newStartIdx];\n        }\n        else {\n            if (isUndef(oldKeyToIdx)) {\n                oldKeyToIdx = createKeyToOldIdx(oldCh, oldStartIdx, oldEndIdx);\n            }\n            idxInOld = oldKeyToIdx[newStartVnode.key];\n            if (isUndef(idxInOld)) {\n                api.insertBefore(parentElm, createElm(newStartVnode), oldStartVnode.elm);\n            }\n            else {\n                elmToMove = oldCh[idxInOld];\n                if (elmToMove.tag !== newStartVnode.tag) {\n                    api.insertBefore(parentElm, createElm(newStartVnode), oldStartVnode.elm);\n                }\n                else {\n                    patchVnode(elmToMove, newStartVnode);\n                    oldCh[idxInOld] = undefined;\n                    api.insertBefore(parentElm, elmToMove.elm, oldStartVnode.elm);\n                }\n            }\n            newStartVnode = newCh[++newStartIdx];\n        }\n    }\n    if (oldStartIdx <= oldEndIdx || newStartIdx <= newEndIdx) {\n        if (oldStartIdx > oldEndIdx) {\n            before = newCh[newEndIdx + 1] == null ? null : newCh[newEndIdx + 1].elm;\n            addVnodes(parentElm, before, newCh, newStartIdx, newEndIdx);\n        }\n        else {\n            removeVnodes(parentElm, oldCh, oldStartIdx, oldEndIdx);\n        }\n    }\n}\nfunction patchVnode(oldVnode, vnode) {\n    var elm = (vnode.elm = oldVnode.elm);\n    var oldCh = oldVnode.children;\n    var ch = vnode.children;\n    if (oldVnode === vnode) {\n        return;\n    }\n    updateAttrs(oldVnode, vnode);\n    if (isUndef(vnode.text)) {\n        if (isDef(oldCh) && isDef(ch)) {\n            if (oldCh !== ch) {\n                updateChildren(elm, oldCh, ch);\n            }\n        }\n        else if (isDef(ch)) {\n            if (isDef(oldVnode.text)) {\n                api.setTextContent(elm, '');\n            }\n            addVnodes(elm, null, ch, 0, ch.length - 1);\n        }\n        else if (isDef(oldCh)) {\n            removeVnodes(elm, oldCh, 0, oldCh.length - 1);\n        }\n        else if (isDef(oldVnode.text)) {\n            api.setTextContent(elm, '');\n        }\n    }\n    else if (oldVnode.text !== vnode.text) {\n        if (isDef(oldCh)) {\n            removeVnodes(elm, oldCh, 0, oldCh.length - 1);\n        }\n        api.setTextContent(elm, vnode.text);\n    }\n}\nexport default function patch(oldVnode, vnode) {\n    if (sameVnode(oldVnode, vnode)) {\n        patchVnode(oldVnode, vnode);\n    }\n    else {\n        var elm = oldVnode.elm;\n        var parent_2 = api.parentNode(elm);\n        createElm(vnode);\n        if (parent_2 !== null) {\n            api.insertBefore(parent_2, vnode.elm, api.nextSibling(elm));\n            removeVnodes(parent_2, [oldVnode], 0, 0);\n        }\n    }\n    return vnode;\n}\n","import { brush, setClipPath, setGradient, setPattern } from './graphic.js';\nimport { createElement, createVNode, vNodeToString, getCssString, createBrushScope, createSVGVNode } from './core.js';\nimport { normalizeColor, encodeBase64, isGradient, isPattern } from './helper.js';\nimport { extend, keys, logError, map, noop, retrieve2 } from '../core/util.js';\nimport patch, { updateAttrs } from './patch.js';\nimport { getSize } from '../canvas/helper.js';\nvar svgId = 0;\nvar SVGPainter = (function () {\n    function SVGPainter(root, storage, opts) {\n        this.type = 'svg';\n        this.refreshHover = createMethodNotSupport('refreshHover');\n        this.configLayer = createMethodNotSupport('configLayer');\n        this.storage = storage;\n        this._opts = opts = extend({}, opts);\n        this.root = root;\n        this._id = 'zr' + svgId++;\n        this._oldVNode = createSVGVNode(opts.width, opts.height);\n        if (root && !opts.ssr) {\n            var viewport = this._viewport = document.createElement('div');\n            viewport.style.cssText = 'position:relative;overflow:hidden';\n            var svgDom = this._svgDom = this._oldVNode.elm = createElement('svg');\n            updateAttrs(null, this._oldVNode);\n            viewport.appendChild(svgDom);\n            root.appendChild(viewport);\n        }\n        this.resize(opts.width, opts.height);\n    }\n    SVGPainter.prototype.getType = function () {\n        return this.type;\n    };\n    SVGPainter.prototype.getViewportRoot = function () {\n        return this._viewport;\n    };\n    SVGPainter.prototype.getViewportRootOffset = function () {\n        var viewportRoot = this.getViewportRoot();\n        if (viewportRoot) {\n            return {\n                offsetLeft: viewportRoot.offsetLeft || 0,\n                offsetTop: viewportRoot.offsetTop || 0\n            };\n        }\n    };\n    SVGPainter.prototype.getSvgDom = function () {\n        return this._svgDom;\n    };\n    SVGPainter.prototype.refresh = function () {\n        if (this.root) {\n            var vnode = this.renderToVNode({\n                willUpdate: true\n            });\n            vnode.attrs.style = 'position:absolute;left:0;top:0;user-select:none';\n            patch(this._oldVNode, vnode);\n            this._oldVNode = vnode;\n        }\n    };\n    SVGPainter.prototype.renderOneToVNode = function (el) {\n        return brush(el, createBrushScope(this._id));\n    };\n    SVGPainter.prototype.renderToVNode = function (opts) {\n        opts = opts || {};\n        var list = this.storage.getDisplayList(true);\n        var width = this._width;\n        var height = this._height;\n        var scope = createBrushScope(this._id);\n        scope.animation = opts.animation;\n        scope.willUpdate = opts.willUpdate;\n        scope.compress = opts.compress;\n        var children = [];\n        var bgVNode = this._bgVNode = createBackgroundVNode(width, height, this._backgroundColor, scope);\n        bgVNode && children.push(bgVNode);\n        var mainVNode = !opts.compress\n            ? (this._mainVNode = createVNode('g', 'main', {}, [])) : null;\n        this._paintList(list, scope, mainVNode ? mainVNode.children : children);\n        mainVNode && children.push(mainVNode);\n        var defs = map(keys(scope.defs), function (id) { return scope.defs[id]; });\n        if (defs.length) {\n            children.push(createVNode('defs', 'defs', {}, defs));\n        }\n        if (opts.animation) {\n            var animationCssStr = getCssString(scope.cssNodes, scope.cssAnims, { newline: true });\n            if (animationCssStr) {\n                var styleNode = createVNode('style', 'stl', {}, [], animationCssStr);\n                children.push(styleNode);\n            }\n        }\n        return createSVGVNode(width, height, children, opts.useViewBox);\n    };\n    SVGPainter.prototype.renderToString = function (opts) {\n        opts = opts || {};\n        return vNodeToString(this.renderToVNode({\n            animation: retrieve2(opts.cssAnimation, true),\n            willUpdate: false,\n            compress: true,\n            useViewBox: retrieve2(opts.useViewBox, true)\n        }), { newline: true });\n    };\n    SVGPainter.prototype.setBackgroundColor = function (backgroundColor) {\n        this._backgroundColor = backgroundColor;\n    };\n    SVGPainter.prototype.getSvgRoot = function () {\n        return this._mainVNode && this._mainVNode.elm;\n    };\n    SVGPainter.prototype._paintList = function (list, scope, out) {\n        var listLen = list.length;\n        var clipPathsGroupsStack = [];\n        var clipPathsGroupsStackDepth = 0;\n        var currentClipPathGroup;\n        var prevClipPaths;\n        var clipGroupNodeIdx = 0;\n        for (var i = 0; i < listLen; i++) {\n            var displayable = list[i];\n            if (!displayable.invisible) {\n                var clipPaths = displayable.__clipPaths;\n                var len = clipPaths && clipPaths.length || 0;\n                var prevLen = prevClipPaths && prevClipPaths.length || 0;\n                var lca = void 0;\n                for (lca = Math.max(len - 1, prevLen - 1); lca >= 0; lca--) {\n                    if (clipPaths && prevClipPaths\n                        && clipPaths[lca] === prevClipPaths[lca]) {\n                        break;\n                    }\n                }\n                for (var i_1 = prevLen - 1; i_1 > lca; i_1--) {\n                    clipPathsGroupsStackDepth--;\n                    currentClipPathGroup = clipPathsGroupsStack[clipPathsGroupsStackDepth - 1];\n                }\n                for (var i_2 = lca + 1; i_2 < len; i_2++) {\n                    var groupAttrs = {};\n                    setClipPath(clipPaths[i_2], groupAttrs, scope);\n                    var g = createVNode('g', 'clip-g-' + clipGroupNodeIdx++, groupAttrs, []);\n                    (currentClipPathGroup ? currentClipPathGroup.children : out).push(g);\n                    clipPathsGroupsStack[clipPathsGroupsStackDepth++] = g;\n                    currentClipPathGroup = g;\n                }\n                prevClipPaths = clipPaths;\n                var ret = brush(displayable, scope);\n                if (ret) {\n                    (currentClipPathGroup ? currentClipPathGroup.children : out).push(ret);\n                }\n            }\n        }\n    };\n    SVGPainter.prototype.resize = function (width, height) {\n        var opts = this._opts;\n        var root = this.root;\n        var viewport = this._viewport;\n        width != null && (opts.width = width);\n        height != null && (opts.height = height);\n        if (root && viewport) {\n            viewport.style.display = 'none';\n            width = getSize(root, 0, opts);\n            height = getSize(root, 1, opts);\n            viewport.style.display = '';\n        }\n        if (this._width !== width || this._height !== height) {\n            this._width = width;\n            this._height = height;\n            if (viewport) {\n                var viewportStyle = viewport.style;\n                viewportStyle.width = width + 'px';\n                viewportStyle.height = height + 'px';\n            }\n            if (!isPattern(this._backgroundColor)) {\n                var svgDom = this._svgDom;\n                if (svgDom) {\n                    svgDom.setAttribute('width', width);\n                    svgDom.setAttribute('height', height);\n                }\n                var bgEl = this._bgVNode && this._bgVNode.elm;\n                if (bgEl) {\n                    bgEl.setAttribute('width', width);\n                    bgEl.setAttribute('height', height);\n                }\n            }\n            else {\n                this.refresh();\n            }\n        }\n    };\n    SVGPainter.prototype.getWidth = function () {\n        return this._width;\n    };\n    SVGPainter.prototype.getHeight = function () {\n        return this._height;\n    };\n    SVGPainter.prototype.dispose = function () {\n        if (this.root) {\n            this.root.innerHTML = '';\n        }\n        this._svgDom =\n            this._viewport =\n                this.storage =\n                    this._oldVNode =\n                        this._bgVNode =\n                            this._mainVNode = null;\n    };\n    SVGPainter.prototype.clear = function () {\n        if (this._svgDom) {\n            this._svgDom.innerHTML = null;\n        }\n        this._oldVNode = null;\n    };\n    SVGPainter.prototype.toDataURL = function (base64) {\n        var str = this.renderToString();\n        var prefix = 'data:image/svg+xml;';\n        if (base64) {\n            str = encodeBase64(str);\n            return str && prefix + 'base64,' + str;\n        }\n        return prefix + 'charset=UTF-8,' + encodeURIComponent(str);\n    };\n    return SVGPainter;\n}());\nfunction createMethodNotSupport(method) {\n    return function () {\n        if (process.env.NODE_ENV !== 'production') {\n            logError('In SVG mode painter not support method \"' + method + '\"');\n        }\n    };\n}\nfunction createBackgroundVNode(width, height, backgroundColor, scope) {\n    var bgVNode;\n    if (backgroundColor && backgroundColor !== 'none') {\n        bgVNode = createVNode('rect', 'bg', {\n            width: width,\n            height: height,\n            x: '0',\n            y: '0',\n            id: '0'\n        });\n        if (isGradient(backgroundColor)) {\n            setGradient({ fill: backgroundColor }, bgVNode.attrs, 'fill', scope);\n        }\n        else if (isPattern(backgroundColor)) {\n            setPattern({\n                style: {\n                    fill: backgroundColor\n                },\n                dirty: noop,\n                getBoundingRect: function () { return ({ width: width, height: height }); }\n            }, bgVNode.attrs, 'fill', scope);\n        }\n        else {\n            var _a = normalizeColor(backgroundColor), color = _a.color, opacity = _a.opacity;\n            bgVNode.attrs.fill = color;\n            opacity < 1 && (bgVNode.attrs['fill-opacity'] = opacity);\n        }\n    }\n    return bgVNode;\n}\nexport default SVGPainter;\n","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { __extends } from \"tslib\";\nimport createSeriesData from '../helper/createSeriesData.js';\nimport SeriesModel from '../../model/Series.js';\nimport { createSymbol } from '../../util/symbol.js';\nimport { Group } from '../../util/graphic.js';\n\nvar LineSeriesModel =\n/** @class */\nfunction (_super) {\n  __extends(LineSeriesModel, _super);\n\n  function LineSeriesModel() {\n    var _this = _super !== null && _super.apply(this, arguments) || this;\n\n    _this.type = LineSeriesModel.type;\n    _this.hasSymbolVisual = true;\n    return _this;\n  }\n\n  LineSeriesModel.prototype.getInitialData = function (option) {\n    if (process.env.NODE_ENV !== 'production') {\n      var coordSys = option.coordinateSystem;\n\n      if (coordSys !== 'polar' && coordSys !== 'cartesian2d') {\n        throw new Error('Line not support coordinateSystem besides cartesian and polar');\n      }\n    }\n\n    return createSeriesData(null, this, {\n      useEncodeDefaulter: true\n    });\n  };\n\n  LineSeriesModel.prototype.getLegendIcon = function (opt) {\n    var group = new Group();\n    var line = createSymbol('line', 0, opt.itemHeight / 2, opt.itemWidth, 0, opt.lineStyle.stroke, false);\n    group.add(line);\n    line.setStyle(opt.lineStyle);\n    var visualType = this.getData().getVisual('symbol');\n    var visualRotate = this.getData().getVisual('symbolRotate');\n    var symbolType = visualType === 'none' ? 'circle' : visualType; // Symbol size is 80% when there is a line\n\n    var size = opt.itemHeight * 0.8;\n    var symbol = createSymbol(symbolType, (opt.itemWidth - size) / 2, (opt.itemHeight - size) / 2, size, size, opt.itemStyle.fill);\n    group.add(symbol);\n    symbol.setStyle(opt.itemStyle);\n    var symbolRotate = opt.iconRotate === 'inherit' ? visualRotate : opt.iconRotate || 0;\n    symbol.rotation = symbolRotate * Math.PI / 180;\n    symbol.setOrigin([opt.itemWidth / 2, opt.itemHeight / 2]);\n\n    if (symbolType.indexOf('empty') > -1) {\n      symbol.style.stroke = symbol.style.fill;\n      symbol.style.fill = '#fff';\n      symbol.style.lineWidth = 2;\n    }\n\n    return group;\n  };\n\n  LineSeriesModel.type = 'series.line';\n  LineSeriesModel.dependencies = ['grid', 'polar'];\n  LineSeriesModel.defaultOption = {\n    // zlevel: 0,\n    z: 3,\n    coordinateSystem: 'cartesian2d',\n    legendHoverLink: true,\n    clip: true,\n    label: {\n      position: 'top'\n    },\n    // itemStyle: {\n    // },\n    endLabel: {\n      show: false,\n      valueAnimation: true,\n      distance: 8\n    },\n    lineStyle: {\n      width: 2,\n      type: 'solid'\n    },\n    emphasis: {\n      scale: true\n    },\n    // areaStyle: {\n    // origin of areaStyle. Valid values:\n    // `'auto'/null/undefined`: from axisLine to data\n    // `'start'`: from min to data\n    // `'end'`: from data to max\n    // origin: 'auto'\n    // },\n    // false, 'start', 'end', 'middle'\n    step: false,\n    // Disabled if step is true\n    smooth: false,\n    smoothMonotone: null,\n    symbol: 'emptyCircle',\n    symbolSize: 4,\n    symbolRotate: null,\n    showSymbol: true,\n    // `false`: follow the label interval strategy.\n    // `true`: show all symbols.\n    // `'auto'`: If possible, show all symbols, otherwise\n    //           follow the label interval strategy.\n    showAllSymbol: 'auto',\n    // Whether to connect break point.\n    connectNulls: false,\n    // Sampling for large data. Can be: 'average', 'max', 'min', 'sum', 'lttb'.\n    sampling: 'none',\n    animationEasing: 'linear',\n    // Disable progressive\n    progressive: 0,\n    hoverLayerThreshold: Infinity,\n    universalTransition: {\n      divideShape: 'clone'\n    },\n    triggerLineEvent: false\n  };\n  return LineSeriesModel;\n}(SeriesModel);\n\nexport default LineSeriesModel;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { retrieveRawValue } from '../../data/helper/dataProvider.js';\nimport { isArray } from 'zrender/lib/core/util.js';\n/**\r\n * @return label string. Not null/undefined\r\n */\n\nexport function getDefaultLabel(data, dataIndex) {\n  var labelDims = data.mapDimensionsAll('defaultedLabel');\n  var len = labelDims.length; // Simple optimization (in lots of cases, label dims length is 1)\n\n  if (len === 1) {\n    var rawVal = retrieveRawValue(data, dataIndex, labelDims[0]);\n    return rawVal != null ? rawVal + '' : null;\n  } else if (len) {\n    var vals = [];\n\n    for (var i = 0; i < labelDims.length; i++) {\n      vals.push(retrieveRawValue(data, dataIndex, labelDims[i]));\n    }\n\n    return vals.join(' ');\n  }\n}\nexport function getDefaultInterpolatedLabel(data, interpolatedValue) {\n  var labelDims = data.mapDimensionsAll('defaultedLabel');\n\n  if (!isArray(interpolatedValue)) {\n    return interpolatedValue + '';\n  }\n\n  var vals = [];\n\n  for (var i = 0; i < labelDims.length; i++) {\n    var dimIndex = data.getDimensionIndex(labelDims[i]);\n\n    if (dimIndex >= 0) {\n      vals.push(interpolatedValue[dimIndex]);\n    }\n  }\n\n  return vals.join(' ');\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { __extends } from \"tslib\";\nimport { createSymbol, normalizeSymbolOffset, normalizeSymbolSize } from '../../util/symbol.js';\nimport * as graphic from '../../util/graphic.js';\nimport { getECData } from '../../util/innerStore.js';\nimport { enterEmphasis, leaveEmphasis, toggleHoverEmphasis } from '../../util/states.js';\nimport { getDefaultLabel } from './labelHelper.js';\nimport { extend } from 'zrender/lib/core/util.js';\nimport { setLabelStyle, getLabelStatesModels } from '../../label/labelStyle.js';\nimport ZRImage from 'zrender/lib/graphic/Image.js';\nimport { saveOldStyle } from '../../animation/basicTransition.js';\n\nvar Symbol =\n/** @class */\nfunction (_super) {\n  __extends(Symbol, _super);\n\n  function Symbol(data, idx, seriesScope, opts) {\n    var _this = _super.call(this) || this;\n\n    _this.updateData(data, idx, seriesScope, opts);\n\n    return _this;\n  }\n\n  Symbol.prototype._createSymbol = function (symbolType, data, idx, symbolSize, keepAspect) {\n    // Remove paths created before\n    this.removeAll(); // let symbolPath = createSymbol(\n    //     symbolType, -0.5, -0.5, 1, 1, color\n    // );\n    // If width/height are set too small (e.g., set to 1) on ios10\n    // and macOS Sierra, a circle stroke become a rect, no matter what\n    // the scale is set. So we set width/height as 2. See #4150.\n\n    var symbolPath = createSymbol(symbolType, -1, -1, 2, 2, null, keepAspect);\n    symbolPath.attr({\n      z2: 100,\n      culling: true,\n      scaleX: symbolSize[0] / 2,\n      scaleY: symbolSize[1] / 2\n    }); // Rewrite drift method\n\n    symbolPath.drift = driftSymbol;\n    this._symbolType = symbolType;\n    this.add(symbolPath);\n  };\n  /**\r\n   * Stop animation\r\n   * @param {boolean} toLastFrame\r\n   */\n\n\n  Symbol.prototype.stopSymbolAnimation = function (toLastFrame) {\n    this.childAt(0).stopAnimation(null, toLastFrame);\n  };\n\n  Symbol.prototype.getSymbolType = function () {\n    return this._symbolType;\n  };\n  /**\r\n   * FIXME:\r\n   * Caution: This method breaks the encapsulation of this module,\r\n   * but it indeed brings convenience. So do not use the method\r\n   * unless you detailedly know all the implements of `Symbol`,\r\n   * especially animation.\r\n   *\r\n   * Get symbol path element.\r\n   */\n\n\n  Symbol.prototype.getSymbolPath = function () {\n    return this.childAt(0);\n  };\n  /**\r\n   * Highlight symbol\r\n   */\n\n\n  Symbol.prototype.highlight = function () {\n    enterEmphasis(this.childAt(0));\n  };\n  /**\r\n   * Downplay symbol\r\n   */\n\n\n  Symbol.prototype.downplay = function () {\n    leaveEmphasis(this.childAt(0));\n  };\n  /**\r\n   * @param {number} zlevel\r\n   * @param {number} z\r\n   */\n\n\n  Symbol.prototype.setZ = function (zlevel, z) {\n    var symbolPath = this.childAt(0);\n    symbolPath.zlevel = zlevel;\n    symbolPath.z = z;\n  };\n\n  Symbol.prototype.setDraggable = function (draggable, hasCursorOption) {\n    var symbolPath = this.childAt(0);\n    symbolPath.draggable = draggable;\n    symbolPath.cursor = !hasCursorOption && draggable ? 'move' : symbolPath.cursor;\n  };\n  /**\r\n   * Update symbol properties\r\n   */\n\n\n  Symbol.prototype.updateData = function (data, idx, seriesScope, opts) {\n    this.silent = false;\n    var symbolType = data.getItemVisual(idx, 'symbol') || 'circle';\n    var seriesModel = data.hostModel;\n    var symbolSize = Symbol.getSymbolSize(data, idx);\n    var isInit = symbolType !== this._symbolType;\n    var disableAnimation = opts && opts.disableAnimation;\n\n    if (isInit) {\n      var keepAspect = data.getItemVisual(idx, 'symbolKeepAspect');\n\n      this._createSymbol(symbolType, data, idx, symbolSize, keepAspect);\n    } else {\n      var symbolPath = this.childAt(0);\n      symbolPath.silent = false;\n      var target = {\n        scaleX: symbolSize[0] / 2,\n        scaleY: symbolSize[1] / 2\n      };\n      disableAnimation ? symbolPath.attr(target) : graphic.updateProps(symbolPath, target, seriesModel, idx);\n      saveOldStyle(symbolPath);\n    }\n\n    this._updateCommon(data, idx, symbolSize, seriesScope, opts);\n\n    if (isInit) {\n      var symbolPath = this.childAt(0);\n\n      if (!disableAnimation) {\n        var target = {\n          scaleX: this._sizeX,\n          scaleY: this._sizeY,\n          style: {\n            // Always fadeIn. Because it has fadeOut animation when symbol is removed..\n            opacity: symbolPath.style.opacity\n          }\n        };\n        symbolPath.scaleX = symbolPath.scaleY = 0;\n        symbolPath.style.opacity = 0;\n        graphic.initProps(symbolPath, target, seriesModel, idx);\n      }\n    }\n\n    if (disableAnimation) {\n      // Must stop leave transition manually if don't call initProps or updateProps.\n      this.childAt(0).stopAnimation('leave');\n    }\n  };\n\n  Symbol.prototype._updateCommon = function (data, idx, symbolSize, seriesScope, opts) {\n    var symbolPath = this.childAt(0);\n    var seriesModel = data.hostModel;\n    var emphasisItemStyle;\n    var blurItemStyle;\n    var selectItemStyle;\n    var focus;\n    var blurScope;\n    var emphasisDisabled;\n    var labelStatesModels;\n    var hoverScale;\n    var cursorStyle;\n\n    if (seriesScope) {\n      emphasisItemStyle = seriesScope.emphasisItemStyle;\n      blurItemStyle = seriesScope.blurItemStyle;\n      selectItemStyle = seriesScope.selectItemStyle;\n      focus = seriesScope.focus;\n      blurScope = seriesScope.blurScope;\n      labelStatesModels = seriesScope.labelStatesModels;\n      hoverScale = seriesScope.hoverScale;\n      cursorStyle = seriesScope.cursorStyle;\n      emphasisDisabled = seriesScope.emphasisDisabled;\n    }\n\n    if (!seriesScope || data.hasItemOption) {\n      var itemModel = seriesScope && seriesScope.itemModel ? seriesScope.itemModel : data.getItemModel(idx);\n      var emphasisModel = itemModel.getModel('emphasis');\n      emphasisItemStyle = emphasisModel.getModel('itemStyle').getItemStyle();\n      selectItemStyle = itemModel.getModel(['select', 'itemStyle']).getItemStyle();\n      blurItemStyle = itemModel.getModel(['blur', 'itemStyle']).getItemStyle();\n      focus = emphasisModel.get('focus');\n      blurScope = emphasisModel.get('blurScope');\n      emphasisDisabled = emphasisModel.get('disabled');\n      labelStatesModels = getLabelStatesModels(itemModel);\n      hoverScale = emphasisModel.getShallow('scale');\n      cursorStyle = itemModel.getShallow('cursor');\n    }\n\n    var symbolRotate = data.getItemVisual(idx, 'symbolRotate');\n    symbolPath.attr('rotation', (symbolRotate || 0) * Math.PI / 180 || 0);\n    var symbolOffset = normalizeSymbolOffset(data.getItemVisual(idx, 'symbolOffset'), symbolSize);\n\n    if (symbolOffset) {\n      symbolPath.x = symbolOffset[0];\n      symbolPath.y = symbolOffset[1];\n    }\n\n    cursorStyle && symbolPath.attr('cursor', cursorStyle);\n    var symbolStyle = data.getItemVisual(idx, 'style');\n    var visualColor = symbolStyle.fill;\n\n    if (symbolPath instanceof ZRImage) {\n      var pathStyle = symbolPath.style;\n      symbolPath.useStyle(extend({\n        // TODO other properties like x, y ?\n        image: pathStyle.image,\n        x: pathStyle.x,\n        y: pathStyle.y,\n        width: pathStyle.width,\n        height: pathStyle.height\n      }, symbolStyle));\n    } else {\n      if (symbolPath.__isEmptyBrush) {\n        // fill and stroke will be swapped if it's empty.\n        // So we cloned a new style to avoid it affecting the original style in visual storage.\n        // TODO Better implementation. No empty logic!\n        symbolPath.useStyle(extend({}, symbolStyle));\n      } else {\n        symbolPath.useStyle(symbolStyle);\n      } // Disable decal because symbol scale will been applied on the decal.\n\n\n      symbolPath.style.decal = null;\n      symbolPath.setColor(visualColor, opts && opts.symbolInnerColor);\n      symbolPath.style.strokeNoScale = true;\n    }\n\n    var liftZ = data.getItemVisual(idx, 'liftZ');\n    var z2Origin = this._z2;\n\n    if (liftZ != null) {\n      if (z2Origin == null) {\n        this._z2 = symbolPath.z2;\n        symbolPath.z2 += liftZ;\n      }\n    } else if (z2Origin != null) {\n      symbolPath.z2 = z2Origin;\n      this._z2 = null;\n    }\n\n    var useNameLabel = opts && opts.useNameLabel;\n    setLabelStyle(symbolPath, labelStatesModels, {\n      labelFetcher: seriesModel,\n      labelDataIndex: idx,\n      defaultText: getLabelDefaultText,\n      inheritColor: visualColor,\n      defaultOpacity: symbolStyle.opacity\n    }); // Do not execute util needed.\n\n    function getLabelDefaultText(idx) {\n      return useNameLabel ? data.getName(idx) : getDefaultLabel(data, idx);\n    }\n\n    this._sizeX = symbolSize[0] / 2;\n    this._sizeY = symbolSize[1] / 2;\n    var emphasisState = symbolPath.ensureState('emphasis');\n    emphasisState.style = emphasisItemStyle;\n    symbolPath.ensureState('select').style = selectItemStyle;\n    symbolPath.ensureState('blur').style = blurItemStyle; // null / undefined / true means to use default strategy.\n    // 0 / false / negative number / NaN / Infinity means no scale.\n\n    var scaleRatio = hoverScale == null || hoverScale === true ? Math.max(1.1, 3 / this._sizeY) // PENDING: restrict hoverScale > 1? It seems unreasonable to scale down\n    : isFinite(hoverScale) && hoverScale > 0 ? +hoverScale : 1; // always set scale to allow resetting\n\n    emphasisState.scaleX = this._sizeX * scaleRatio;\n    emphasisState.scaleY = this._sizeY * scaleRatio;\n    this.setSymbolScale(1);\n    toggleHoverEmphasis(this, focus, blurScope, emphasisDisabled);\n  };\n\n  Symbol.prototype.setSymbolScale = function (scale) {\n    this.scaleX = this.scaleY = scale;\n  };\n\n  Symbol.prototype.fadeOut = function (cb, seriesModel, opt) {\n    var symbolPath = this.childAt(0);\n    var dataIndex = getECData(this).dataIndex;\n    var animationOpt = opt && opt.animation; // Avoid mistaken hover when fading out\n\n    this.silent = symbolPath.silent = true; // Not show text when animating\n\n    if (opt && opt.fadeLabel) {\n      var textContent = symbolPath.getTextContent();\n\n      if (textContent) {\n        graphic.removeElement(textContent, {\n          style: {\n            opacity: 0\n          }\n        }, seriesModel, {\n          dataIndex: dataIndex,\n          removeOpt: animationOpt,\n          cb: function () {\n            symbolPath.removeTextContent();\n          }\n        });\n      }\n    } else {\n      symbolPath.removeTextContent();\n    }\n\n    graphic.removeElement(symbolPath, {\n      style: {\n        opacity: 0\n      },\n      scaleX: 0,\n      scaleY: 0\n    }, seriesModel, {\n      dataIndex: dataIndex,\n      cb: cb,\n      removeOpt: animationOpt\n    });\n  };\n\n  Symbol.getSymbolSize = function (data, idx) {\n    return normalizeSymbolSize(data.getItemVisual(idx, 'symbolSize'));\n  };\n\n  return Symbol;\n}(graphic.Group);\n\nfunction driftSymbol(dx, dy) {\n  this.parent.drift(dx, dy);\n}\n\nexport default Symbol;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport * as graphic from '../../util/graphic.js';\nimport SymbolClz from './Symbol.js';\nimport { isObject } from 'zrender/lib/core/util.js';\nimport { getLabelStatesModels } from '../../label/labelStyle.js';\n\nfunction symbolNeedsDraw(data, point, idx, opt) {\n  return point && !isNaN(point[0]) && !isNaN(point[1]) && !(opt.isIgnore && opt.isIgnore(idx)) // We do not set clipShape on group, because it will cut part of\n  // the symbol element shape. We use the same clip shape here as\n  // the line clip.\n  && !(opt.clipShape && !opt.clipShape.contain(point[0], point[1])) && data.getItemVisual(idx, 'symbol') !== 'none';\n}\n\nfunction normalizeUpdateOpt(opt) {\n  if (opt != null && !isObject(opt)) {\n    opt = {\n      isIgnore: opt\n    };\n  }\n\n  return opt || {};\n}\n\nfunction makeSeriesScope(data) {\n  var seriesModel = data.hostModel;\n  var emphasisModel = seriesModel.getModel('emphasis');\n  return {\n    emphasisItemStyle: emphasisModel.getModel('itemStyle').getItemStyle(),\n    blurItemStyle: seriesModel.getModel(['blur', 'itemStyle']).getItemStyle(),\n    selectItemStyle: seriesModel.getModel(['select', 'itemStyle']).getItemStyle(),\n    focus: emphasisModel.get('focus'),\n    blurScope: emphasisModel.get('blurScope'),\n    emphasisDisabled: emphasisModel.get('disabled'),\n    hoverScale: emphasisModel.get('scale'),\n    labelStatesModels: getLabelStatesModels(seriesModel),\n    cursorStyle: seriesModel.get('cursor')\n  };\n}\n\nvar SymbolDraw =\n/** @class */\nfunction () {\n  function SymbolDraw(SymbolCtor) {\n    this.group = new graphic.Group();\n    this._SymbolCtor = SymbolCtor || SymbolClz;\n  }\n  /**\r\n   * Update symbols draw by new data\r\n   */\n\n\n  SymbolDraw.prototype.updateData = function (data, opt) {\n    // Remove progressive els.\n    this._progressiveEls = null;\n    opt = normalizeUpdateOpt(opt);\n    var group = this.group;\n    var seriesModel = data.hostModel;\n    var oldData = this._data;\n    var SymbolCtor = this._SymbolCtor;\n    var disableAnimation = opt.disableAnimation;\n    var seriesScope = makeSeriesScope(data);\n    var symbolUpdateOpt = {\n      disableAnimation: disableAnimation\n    };\n\n    var getSymbolPoint = opt.getSymbolPoint || function (idx) {\n      return data.getItemLayout(idx);\n    }; // There is no oldLineData only when first rendering or switching from\n    // stream mode to normal mode, where previous elements should be removed.\n\n\n    if (!oldData) {\n      group.removeAll();\n    }\n\n    data.diff(oldData).add(function (newIdx) {\n      var point = getSymbolPoint(newIdx);\n\n      if (symbolNeedsDraw(data, point, newIdx, opt)) {\n        var symbolEl = new SymbolCtor(data, newIdx, seriesScope, symbolUpdateOpt);\n        symbolEl.setPosition(point);\n        data.setItemGraphicEl(newIdx, symbolEl);\n        group.add(symbolEl);\n      }\n    }).update(function (newIdx, oldIdx) {\n      var symbolEl = oldData.getItemGraphicEl(oldIdx);\n      var point = getSymbolPoint(newIdx);\n\n      if (!symbolNeedsDraw(data, point, newIdx, opt)) {\n        group.remove(symbolEl);\n        return;\n      }\n\n      var newSymbolType = data.getItemVisual(newIdx, 'symbol') || 'circle';\n      var oldSymbolType = symbolEl && symbolEl.getSymbolType && symbolEl.getSymbolType();\n\n      if (!symbolEl // Create a new if symbol type changed.\n      || oldSymbolType && oldSymbolType !== newSymbolType) {\n        group.remove(symbolEl);\n        symbolEl = new SymbolCtor(data, newIdx, seriesScope, symbolUpdateOpt);\n        symbolEl.setPosition(point);\n      } else {\n        symbolEl.updateData(data, newIdx, seriesScope, symbolUpdateOpt);\n        var target = {\n          x: point[0],\n          y: point[1]\n        };\n        disableAnimation ? symbolEl.attr(target) : graphic.updateProps(symbolEl, target, seriesModel);\n      } // Add back\n\n\n      group.add(symbolEl);\n      data.setItemGraphicEl(newIdx, symbolEl);\n    }).remove(function (oldIdx) {\n      var el = oldData.getItemGraphicEl(oldIdx);\n      el && el.fadeOut(function () {\n        group.remove(el);\n      }, seriesModel);\n    }).execute();\n    this._getSymbolPoint = getSymbolPoint;\n    this._data = data;\n  };\n\n  ;\n\n  SymbolDraw.prototype.updateLayout = function () {\n    var _this = this;\n\n    var data = this._data;\n\n    if (data) {\n      // Not use animation\n      data.eachItemGraphicEl(function (el, idx) {\n        var point = _this._getSymbolPoint(idx);\n\n        el.setPosition(point);\n        el.markRedraw();\n      });\n    }\n  };\n\n  ;\n\n  SymbolDraw.prototype.incrementalPrepareUpdate = function (data) {\n    this._seriesScope = makeSeriesScope(data);\n    this._data = null;\n    this.group.removeAll();\n  };\n\n  ;\n  /**\r\n   * Update symbols draw by new data\r\n   */\n\n  SymbolDraw.prototype.incrementalUpdate = function (taskParams, data, opt) {\n    // Clear\n    this._progressiveEls = [];\n    opt = normalizeUpdateOpt(opt);\n\n    function updateIncrementalAndHover(el) {\n      if (!el.isGroup) {\n        el.incremental = true;\n        el.ensureState('emphasis').hoverLayer = true;\n      }\n    }\n\n    for (var idx = taskParams.start; idx < taskParams.end; idx++) {\n      var point = data.getItemLayout(idx);\n\n      if (symbolNeedsDraw(data, point, idx, opt)) {\n        var el = new this._SymbolCtor(data, idx, this._seriesScope);\n        el.traverse(updateIncrementalAndHover);\n        el.setPosition(point);\n        this.group.add(el);\n        data.setItemGraphicEl(idx, el);\n\n        this._progressiveEls.push(el);\n      }\n    }\n  };\n\n  ;\n\n  SymbolDraw.prototype.eachRendered = function (cb) {\n    graphic.traverseElements(this._progressiveEls || this.group, cb);\n  };\n\n  SymbolDraw.prototype.remove = function (enableAnimation) {\n    var group = this.group;\n    var data = this._data; // Incremental model do not have this._data.\n\n    if (data && enableAnimation) {\n      data.eachItemGraphicEl(function (el) {\n        el.fadeOut(function () {\n          group.remove(el);\n        }, data.hostModel);\n      });\n    } else {\n      group.removeAll();\n    }\n  };\n\n  ;\n  return SymbolDraw;\n}();\n\nexport default SymbolDraw;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { isDimensionStacked } from '../../data/helper/dataStackHelper.js';\nimport { isNumber, map } from 'zrender/lib/core/util.js';\nexport function prepareDataCoordInfo(coordSys, data, valueOrigin) {\n  var baseAxis = coordSys.getBaseAxis();\n  var valueAxis = coordSys.getOtherAxis(baseAxis);\n  var valueStart = getValueStart(valueAxis, valueOrigin);\n  var baseAxisDim = baseAxis.dim;\n  var valueAxisDim = valueAxis.dim;\n  var valueDim = data.mapDimension(valueAxisDim);\n  var baseDim = data.mapDimension(baseAxisDim);\n  var baseDataOffset = valueAxisDim === 'x' || valueAxisDim === 'radius' ? 1 : 0;\n  var dims = map(coordSys.dimensions, function (coordDim) {\n    return data.mapDimension(coordDim);\n  });\n  var stacked = false;\n  var stackResultDim = data.getCalculationInfo('stackResultDimension');\n\n  if (isDimensionStacked(data, dims[0]\n  /* , dims[1] */\n  )) {\n    // jshint ignore:line\n    stacked = true;\n    dims[0] = stackResultDim;\n  }\n\n  if (isDimensionStacked(data, dims[1]\n  /* , dims[0] */\n  )) {\n    // jshint ignore:line\n    stacked = true;\n    dims[1] = stackResultDim;\n  }\n\n  return {\n    dataDimsForPoint: dims,\n    valueStart: valueStart,\n    valueAxisDim: valueAxisDim,\n    baseAxisDim: baseAxisDim,\n    stacked: !!stacked,\n    valueDim: valueDim,\n    baseDim: baseDim,\n    baseDataOffset: baseDataOffset,\n    stackedOverDimension: data.getCalculationInfo('stackedOverDimension')\n  };\n}\n\nfunction getValueStart(valueAxis, valueOrigin) {\n  var valueStart = 0;\n  var extent = valueAxis.scale.getExtent();\n\n  if (valueOrigin === 'start') {\n    valueStart = extent[0];\n  } else if (valueOrigin === 'end') {\n    valueStart = extent[1];\n  } // If origin is specified as a number, use it as\n  // valueStart directly\n  else if (isNumber(valueOrigin) && !isNaN(valueOrigin)) {\n      valueStart = valueOrigin;\n    } // auto\n    else {\n        // Both positive\n        if (extent[0] > 0) {\n          valueStart = extent[0];\n        } // Both negative\n        else if (extent[1] < 0) {\n            valueStart = extent[1];\n          } // If is one positive, and one negative, onZero shall be true\n\n      }\n\n  return valueStart;\n}\n\nexport function getStackedOnPoint(dataCoordInfo, coordSys, data, idx) {\n  var value = NaN;\n\n  if (dataCoordInfo.stacked) {\n    value = data.get(data.getCalculationInfo('stackedOverDimension'), idx);\n  }\n\n  if (isNaN(value)) {\n    value = dataCoordInfo.valueStart;\n  }\n\n  var baseDataOffset = dataCoordInfo.baseDataOffset;\n  var stackedData = [];\n  stackedData[baseDataOffset] = data.get(dataCoordInfo.baseDim, idx);\n  stackedData[1 - baseDataOffset] = value;\n  return coordSys.dataToPoint(stackedData);\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { __extends } from \"tslib\"; // Poly path support NaN point\n\nimport Path from 'zrender/lib/graphic/Path.js';\nimport PathProxy from 'zrender/lib/core/PathProxy.js';\nimport { cubicRootAt, cubicAt } from 'zrender/lib/core/curve.js';\nvar mathMin = Math.min;\nvar mathMax = Math.max;\n\nfunction isPointNull(x, y) {\n  return isNaN(x) || isNaN(y);\n}\n/**\r\n * Draw smoothed line in non-monotone, in may cause undesired curve in extreme\r\n * situations. This should be used when points are non-monotone neither in x or\r\n * y dimension.\r\n */\n\n\nfunction drawSegment(ctx, points, start, segLen, allLen, dir, smooth, smoothMonotone, connectNulls) {\n  var prevX;\n  var prevY;\n  var cpx0;\n  var cpy0;\n  var cpx1;\n  var cpy1;\n  var idx = start;\n  var k = 0;\n\n  for (; k < segLen; k++) {\n    var x = points[idx * 2];\n    var y = points[idx * 2 + 1];\n\n    if (idx >= allLen || idx < 0) {\n      break;\n    }\n\n    if (isPointNull(x, y)) {\n      if (connectNulls) {\n        idx += dir;\n        continue;\n      }\n\n      break;\n    }\n\n    if (idx === start) {\n      ctx[dir > 0 ? 'moveTo' : 'lineTo'](x, y);\n      cpx0 = x;\n      cpy0 = y;\n    } else {\n      var dx = x - prevX;\n      var dy = y - prevY; // Ignore tiny segment.\n\n      if (dx * dx + dy * dy < 0.5) {\n        idx += dir;\n        continue;\n      }\n\n      if (smooth > 0) {\n        var nextIdx = idx + dir;\n        var nextX = points[nextIdx * 2];\n        var nextY = points[nextIdx * 2 + 1]; // Ignore duplicate point\n\n        while (nextX === x && nextY === y && k < segLen) {\n          k++;\n          nextIdx += dir;\n          idx += dir;\n          nextX = points[nextIdx * 2];\n          nextY = points[nextIdx * 2 + 1];\n          x = points[idx * 2];\n          y = points[idx * 2 + 1];\n          dx = x - prevX;\n          dy = y - prevY;\n        }\n\n        var tmpK = k + 1;\n\n        if (connectNulls) {\n          // Find next point not null\n          while (isPointNull(nextX, nextY) && tmpK < segLen) {\n            tmpK++;\n            nextIdx += dir;\n            nextX = points[nextIdx * 2];\n            nextY = points[nextIdx * 2 + 1];\n          }\n        }\n\n        var ratioNextSeg = 0.5;\n        var vx = 0;\n        var vy = 0;\n        var nextCpx0 = void 0;\n        var nextCpy0 = void 0; // Is last point\n\n        if (tmpK >= segLen || isPointNull(nextX, nextY)) {\n          cpx1 = x;\n          cpy1 = y;\n        } else {\n          vx = nextX - prevX;\n          vy = nextY - prevY;\n          var dx0 = x - prevX;\n          var dx1 = nextX - x;\n          var dy0 = y - prevY;\n          var dy1 = nextY - y;\n          var lenPrevSeg = void 0;\n          var lenNextSeg = void 0;\n\n          if (smoothMonotone === 'x') {\n            lenPrevSeg = Math.abs(dx0);\n            lenNextSeg = Math.abs(dx1);\n            var dir_1 = vx > 0 ? 1 : -1;\n            cpx1 = x - dir_1 * lenPrevSeg * smooth;\n            cpy1 = y;\n            nextCpx0 = x + dir_1 * lenNextSeg * smooth;\n            nextCpy0 = y;\n          } else if (smoothMonotone === 'y') {\n            lenPrevSeg = Math.abs(dy0);\n            lenNextSeg = Math.abs(dy1);\n            var dir_2 = vy > 0 ? 1 : -1;\n            cpx1 = x;\n            cpy1 = y - dir_2 * lenPrevSeg * smooth;\n            nextCpx0 = x;\n            nextCpy0 = y + dir_2 * lenNextSeg * smooth;\n          } else {\n            lenPrevSeg = Math.sqrt(dx0 * dx0 + dy0 * dy0);\n            lenNextSeg = Math.sqrt(dx1 * dx1 + dy1 * dy1); // Use ratio of seg length\n\n            ratioNextSeg = lenNextSeg / (lenNextSeg + lenPrevSeg);\n            cpx1 = x - vx * smooth * (1 - ratioNextSeg);\n            cpy1 = y - vy * smooth * (1 - ratioNextSeg); // cp0 of next segment\n\n            nextCpx0 = x + vx * smooth * ratioNextSeg;\n            nextCpy0 = y + vy * smooth * ratioNextSeg; // Smooth constraint between point and next point.\n            // Avoid exceeding extreme after smoothing.\n\n            nextCpx0 = mathMin(nextCpx0, mathMax(nextX, x));\n            nextCpy0 = mathMin(nextCpy0, mathMax(nextY, y));\n            nextCpx0 = mathMax(nextCpx0, mathMin(nextX, x));\n            nextCpy0 = mathMax(nextCpy0, mathMin(nextY, y)); // Reclaculate cp1 based on the adjusted cp0 of next seg.\n\n            vx = nextCpx0 - x;\n            vy = nextCpy0 - y;\n            cpx1 = x - vx * lenPrevSeg / lenNextSeg;\n            cpy1 = y - vy * lenPrevSeg / lenNextSeg; // Smooth constraint between point and prev point.\n            // Avoid exceeding extreme after smoothing.\n\n            cpx1 = mathMin(cpx1, mathMax(prevX, x));\n            cpy1 = mathMin(cpy1, mathMax(prevY, y));\n            cpx1 = mathMax(cpx1, mathMin(prevX, x));\n            cpy1 = mathMax(cpy1, mathMin(prevY, y)); // Adjust next cp0 again.\n\n            vx = x - cpx1;\n            vy = y - cpy1;\n            nextCpx0 = x + vx * lenNextSeg / lenPrevSeg;\n            nextCpy0 = y + vy * lenNextSeg / lenPrevSeg;\n          }\n        }\n\n        ctx.bezierCurveTo(cpx0, cpy0, cpx1, cpy1, x, y);\n        cpx0 = nextCpx0;\n        cpy0 = nextCpy0;\n      } else {\n        ctx.lineTo(x, y);\n      }\n    }\n\n    prevX = x;\n    prevY = y;\n    idx += dir;\n  }\n\n  return k;\n}\n\nvar ECPolylineShape =\n/** @class */\nfunction () {\n  function ECPolylineShape() {\n    this.smooth = 0;\n    this.smoothConstraint = true;\n  }\n\n  return ECPolylineShape;\n}();\n\nvar ECPolyline =\n/** @class */\nfunction (_super) {\n  __extends(ECPolyline, _super);\n\n  function ECPolyline(opts) {\n    var _this = _super.call(this, opts) || this;\n\n    _this.type = 'ec-polyline';\n    return _this;\n  }\n\n  ECPolyline.prototype.getDefaultStyle = function () {\n    return {\n      stroke: '#000',\n      fill: null\n    };\n  };\n\n  ECPolyline.prototype.getDefaultShape = function () {\n    return new ECPolylineShape();\n  };\n\n  ECPolyline.prototype.buildPath = function (ctx, shape) {\n    var points = shape.points;\n    var i = 0;\n    var len = points.length / 2; // const result = getBoundingBox(points, shape.smoothConstraint);\n\n    if (shape.connectNulls) {\n      // Must remove first and last null values avoid draw error in polygon\n      for (; len > 0; len--) {\n        if (!isPointNull(points[len * 2 - 2], points[len * 2 - 1])) {\n          break;\n        }\n      }\n\n      for (; i < len; i++) {\n        if (!isPointNull(points[i * 2], points[i * 2 + 1])) {\n          break;\n        }\n      }\n    }\n\n    while (i < len) {\n      i += drawSegment(ctx, points, i, len, len, 1, shape.smooth, shape.smoothMonotone, shape.connectNulls) + 1;\n    }\n  };\n\n  ECPolyline.prototype.getPointOn = function (xOrY, dim) {\n    if (!this.path) {\n      this.createPathProxy();\n      this.buildPath(this.path, this.shape);\n    }\n\n    var path = this.path;\n    var data = path.data;\n    var CMD = PathProxy.CMD;\n    var x0;\n    var y0;\n    var isDimX = dim === 'x';\n    var roots = [];\n\n    for (var i = 0; i < data.length;) {\n      var cmd = data[i++];\n      var x = void 0;\n      var y = void 0;\n      var x2 = void 0;\n      var y2 = void 0;\n      var x3 = void 0;\n      var y3 = void 0;\n      var t = void 0;\n\n      switch (cmd) {\n        case CMD.M:\n          x0 = data[i++];\n          y0 = data[i++];\n          break;\n\n        case CMD.L:\n          x = data[i++];\n          y = data[i++];\n          t = isDimX ? (xOrY - x0) / (x - x0) : (xOrY - y0) / (y - y0);\n\n          if (t <= 1 && t >= 0) {\n            var val = isDimX ? (y - y0) * t + y0 : (x - x0) * t + x0;\n            return isDimX ? [xOrY, val] : [val, xOrY];\n          }\n\n          x0 = x;\n          y0 = y;\n          break;\n\n        case CMD.C:\n          x = data[i++];\n          y = data[i++];\n          x2 = data[i++];\n          y2 = data[i++];\n          x3 = data[i++];\n          y3 = data[i++];\n          var nRoot = isDimX ? cubicRootAt(x0, x, x2, x3, xOrY, roots) : cubicRootAt(y0, y, y2, y3, xOrY, roots);\n\n          if (nRoot > 0) {\n            for (var i_1 = 0; i_1 < nRoot; i_1++) {\n              var t_1 = roots[i_1];\n\n              if (t_1 <= 1 && t_1 >= 0) {\n                var val = isDimX ? cubicAt(y0, y, y2, y3, t_1) : cubicAt(x0, x, x2, x3, t_1);\n                return isDimX ? [xOrY, val] : [val, xOrY];\n              }\n            }\n          }\n\n          x0 = x3;\n          y0 = y3;\n          break;\n      }\n    }\n  };\n\n  return ECPolyline;\n}(Path);\n\nexport { ECPolyline };\n\nvar ECPolygonShape =\n/** @class */\nfunction (_super) {\n  __extends(ECPolygonShape, _super);\n\n  function ECPolygonShape() {\n    return _super !== null && _super.apply(this, arguments) || this;\n  }\n\n  return ECPolygonShape;\n}(ECPolylineShape);\n\nvar ECPolygon =\n/** @class */\nfunction (_super) {\n  __extends(ECPolygon, _super);\n\n  function ECPolygon(opts) {\n    var _this = _super.call(this, opts) || this;\n\n    _this.type = 'ec-polygon';\n    return _this;\n  }\n\n  ECPolygon.prototype.getDefaultShape = function () {\n    return new ECPolygonShape();\n  };\n\n  ECPolygon.prototype.buildPath = function (ctx, shape) {\n    var points = shape.points;\n    var stackedOnPoints = shape.stackedOnPoints;\n    var i = 0;\n    var len = points.length / 2;\n    var smoothMonotone = shape.smoothMonotone;\n\n    if (shape.connectNulls) {\n      // Must remove first and last null values avoid draw error in polygon\n      for (; len > 0; len--) {\n        if (!isPointNull(points[len * 2 - 2], points[len * 2 - 1])) {\n          break;\n        }\n      }\n\n      for (; i < len; i++) {\n        if (!isPointNull(points[i * 2], points[i * 2 + 1])) {\n          break;\n        }\n      }\n    }\n\n    while (i < len) {\n      var k = drawSegment(ctx, points, i, len, len, 1, shape.smooth, smoothMonotone, shape.connectNulls);\n      drawSegment(ctx, stackedOnPoints, i + k - 1, k, len, -1, shape.stackedOnSmooth, smoothMonotone, shape.connectNulls);\n      i += k + 1;\n      ctx.closePath();\n    }\n  };\n\n  return ECPolygon;\n}(Path);\n\nexport { ECPolygon };","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport * as graphic from '../../util/graphic.js';\nimport { round } from '../../util/number.js';\nimport { isFunction } from 'zrender/lib/core/util.js';\n\nfunction createGridClipPath(cartesian, hasAnimation, seriesModel, done, during) {\n  var rect = cartesian.getArea();\n  var x = rect.x;\n  var y = rect.y;\n  var width = rect.width;\n  var height = rect.height;\n  var lineWidth = seriesModel.get(['lineStyle', 'width']) || 2; // Expand the clip path a bit to avoid the border is clipped and looks thinner\n\n  x -= lineWidth / 2;\n  y -= lineWidth / 2;\n  width += lineWidth;\n  height += lineWidth; // fix: https://github.com/apache/incubator-echarts/issues/11369\n\n  x = Math.floor(x);\n  width = Math.round(width);\n  var clipPath = new graphic.Rect({\n    shape: {\n      x: x,\n      y: y,\n      width: width,\n      height: height\n    }\n  });\n\n  if (hasAnimation) {\n    var baseAxis = cartesian.getBaseAxis();\n    var isHorizontal = baseAxis.isHorizontal();\n    var isAxisInversed = baseAxis.inverse;\n\n    if (isHorizontal) {\n      if (isAxisInversed) {\n        clipPath.shape.x += width;\n      }\n\n      clipPath.shape.width = 0;\n    } else {\n      if (!isAxisInversed) {\n        clipPath.shape.y += height;\n      }\n\n      clipPath.shape.height = 0;\n    }\n\n    var duringCb = isFunction(during) ? function (percent) {\n      during(percent, clipPath);\n    } : null;\n    graphic.initProps(clipPath, {\n      shape: {\n        width: width,\n        height: height,\n        x: x,\n        y: y\n      }\n    }, seriesModel, null, done, duringCb);\n  }\n\n  return clipPath;\n}\n\nfunction createPolarClipPath(polar, hasAnimation, seriesModel) {\n  var sectorArea = polar.getArea(); // Avoid float number rounding error for symbol on the edge of axis extent.\n\n  var r0 = round(sectorArea.r0, 1);\n  var r = round(sectorArea.r, 1);\n  var clipPath = new graphic.Sector({\n    shape: {\n      cx: round(polar.cx, 1),\n      cy: round(polar.cy, 1),\n      r0: r0,\n      r: r,\n      startAngle: sectorArea.startAngle,\n      endAngle: sectorArea.endAngle,\n      clockwise: sectorArea.clockwise\n    }\n  });\n\n  if (hasAnimation) {\n    var isRadial = polar.getBaseAxis().dim === 'angle';\n\n    if (isRadial) {\n      clipPath.shape.endAngle = sectorArea.startAngle;\n    } else {\n      clipPath.shape.r = r0;\n    }\n\n    graphic.initProps(clipPath, {\n      shape: {\n        endAngle: sectorArea.endAngle,\n        r: r\n      }\n    }, seriesModel);\n  }\n\n  return clipPath;\n}\n\nfunction createClipPath(coordSys, hasAnimation, seriesModel, done, during) {\n  if (!coordSys) {\n    return null;\n  } else if (coordSys.type === 'polar') {\n    return createPolarClipPath(coordSys, hasAnimation, seriesModel);\n  } else if (coordSys.type === 'cartesian2d') {\n    return createGridClipPath(coordSys, hasAnimation, seriesModel, done, during);\n  }\n\n  return null;\n}\n\nexport { createGridClipPath, createPolarClipPath, createClipPath };","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nexport function isCoordinateSystemType(coordSys, type) {\n  return coordSys.type === type;\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { __extends } from \"tslib\"; // FIXME step not support polar\n\nimport * as zrUtil from 'zrender/lib/core/util.js';\nimport SymbolDraw from '../helper/SymbolDraw.js';\nimport SymbolClz from '../helper/Symbol.js';\nimport lineAnimationDiff from './lineAnimationDiff.js';\nimport * as graphic from '../../util/graphic.js';\nimport * as modelUtil from '../../util/model.js';\nimport { ECPolyline, ECPolygon } from './poly.js';\nimport ChartView from '../../view/Chart.js';\nimport { prepareDataCoordInfo, getStackedOnPoint } from './helper.js';\nimport { createGridClipPath, createPolarClipPath } from '../helper/createClipPathFromCoordSys.js';\nimport { isCoordinateSystemType } from '../../coord/CoordinateSystem.js';\nimport { setStatesStylesFromModel, setStatesFlag, toggleHoverEmphasis, SPECIAL_STATES } from '../../util/states.js';\nimport { setLabelStyle, getLabelStatesModels, labelInner } from '../../label/labelStyle.js';\nimport { getDefaultLabel, getDefaultInterpolatedLabel } from '../helper/labelHelper.js';\nimport { getECData } from '../../util/innerStore.js';\nimport { createFloat32Array } from '../../util/vendor.js';\nimport { convertToColorString } from '../../util/format.js';\nimport { lerp } from 'zrender/lib/tool/color.js';\n\nfunction isPointsSame(points1, points2) {\n  if (points1.length !== points2.length) {\n    return;\n  }\n\n  for (var i = 0; i < points1.length; i++) {\n    if (points1[i] !== points2[i]) {\n      return;\n    }\n  }\n\n  return true;\n}\n\nfunction bboxFromPoints(points) {\n  var minX = Infinity;\n  var minY = Infinity;\n  var maxX = -Infinity;\n  var maxY = -Infinity;\n\n  for (var i = 0; i < points.length;) {\n    var x = points[i++];\n    var y = points[i++];\n\n    if (!isNaN(x)) {\n      minX = Math.min(x, minX);\n      maxX = Math.max(x, maxX);\n    }\n\n    if (!isNaN(y)) {\n      minY = Math.min(y, minY);\n      maxY = Math.max(y, maxY);\n    }\n  }\n\n  return [[minX, minY], [maxX, maxY]];\n}\n\nfunction getBoundingDiff(points1, points2) {\n  var _a = bboxFromPoints(points1),\n      min1 = _a[0],\n      max1 = _a[1];\n\n  var _b = bboxFromPoints(points2),\n      min2 = _b[0],\n      max2 = _b[1]; // Get a max value from each corner of two boundings.\n\n\n  return Math.max(Math.abs(min1[0] - min2[0]), Math.abs(min1[1] - min2[1]), Math.abs(max1[0] - max2[0]), Math.abs(max1[1] - max2[1]));\n}\n\nfunction getSmooth(smooth) {\n  return zrUtil.isNumber(smooth) ? smooth : smooth ? 0.5 : 0;\n}\n\nfunction getStackedOnPoints(coordSys, data, dataCoordInfo) {\n  if (!dataCoordInfo.valueDim) {\n    return [];\n  }\n\n  var len = data.count();\n  var points = createFloat32Array(len * 2);\n\n  for (var idx = 0; idx < len; idx++) {\n    var pt = getStackedOnPoint(dataCoordInfo, coordSys, data, idx);\n    points[idx * 2] = pt[0];\n    points[idx * 2 + 1] = pt[1];\n  }\n\n  return points;\n}\n\nfunction turnPointsIntoStep(points, coordSys, stepTurnAt, connectNulls) {\n  var baseAxis = coordSys.getBaseAxis();\n  var baseIndex = baseAxis.dim === 'x' || baseAxis.dim === 'radius' ? 0 : 1;\n  var stepPoints = [];\n  var i = 0;\n  var stepPt = [];\n  var pt = [];\n  var nextPt = [];\n  var filteredPoints = [];\n\n  if (connectNulls) {\n    for (i = 0; i < points.length; i += 2) {\n      if (!isNaN(points[i]) && !isNaN(points[i + 1])) {\n        filteredPoints.push(points[i], points[i + 1]);\n      }\n    }\n\n    points = filteredPoints;\n  }\n\n  for (i = 0; i < points.length - 2; i += 2) {\n    nextPt[0] = points[i + 2];\n    nextPt[1] = points[i + 3];\n    pt[0] = points[i];\n    pt[1] = points[i + 1];\n    stepPoints.push(pt[0], pt[1]);\n\n    switch (stepTurnAt) {\n      case 'end':\n        stepPt[baseIndex] = nextPt[baseIndex];\n        stepPt[1 - baseIndex] = pt[1 - baseIndex];\n        stepPoints.push(stepPt[0], stepPt[1]);\n        break;\n\n      case 'middle':\n        var middle = (pt[baseIndex] + nextPt[baseIndex]) / 2;\n        var stepPt2 = [];\n        stepPt[baseIndex] = stepPt2[baseIndex] = middle;\n        stepPt[1 - baseIndex] = pt[1 - baseIndex];\n        stepPt2[1 - baseIndex] = nextPt[1 - baseIndex];\n        stepPoints.push(stepPt[0], stepPt[1]);\n        stepPoints.push(stepPt2[0], stepPt2[1]);\n        break;\n\n      default:\n        // default is start\n        stepPt[baseIndex] = pt[baseIndex];\n        stepPt[1 - baseIndex] = nextPt[1 - baseIndex];\n        stepPoints.push(stepPt[0], stepPt[1]);\n    }\n  } // Last points\n\n\n  stepPoints.push(points[i++], points[i++]);\n  return stepPoints;\n}\n/**\r\n * Clip color stops to edge. Avoid creating too large gradients.\r\n * Which may lead to blurry when GPU acceleration is enabled. See #15680\r\n *\r\n * The stops has been sorted from small to large.\r\n */\n\n\nfunction clipColorStops(colorStops, maxSize) {\n  var newColorStops = [];\n  var len = colorStops.length; // coord will always < 0 in prevOutOfRangeColorStop.\n\n  var prevOutOfRangeColorStop;\n  var prevInRangeColorStop;\n\n  function lerpStop(stop0, stop1, clippedCoord) {\n    var coord0 = stop0.coord;\n    var p = (clippedCoord - coord0) / (stop1.coord - coord0);\n    var color = lerp(p, [stop0.color, stop1.color]);\n    return {\n      coord: clippedCoord,\n      color: color\n    };\n  }\n\n  for (var i = 0; i < len; i++) {\n    var stop_1 = colorStops[i];\n    var coord = stop_1.coord;\n\n    if (coord < 0) {\n      prevOutOfRangeColorStop = stop_1;\n    } else if (coord > maxSize) {\n      if (prevInRangeColorStop) {\n        newColorStops.push(lerpStop(prevInRangeColorStop, stop_1, maxSize));\n      } else if (prevOutOfRangeColorStop) {\n        // If there are two stops and coord range is between these two stops\n        newColorStops.push(lerpStop(prevOutOfRangeColorStop, stop_1, 0), lerpStop(prevOutOfRangeColorStop, stop_1, maxSize));\n      } // All following stop will be out of range. So just ignore them.\n\n\n      break;\n    } else {\n      if (prevOutOfRangeColorStop) {\n        newColorStops.push(lerpStop(prevOutOfRangeColorStop, stop_1, 0)); // Reset\n\n        prevOutOfRangeColorStop = null;\n      }\n\n      newColorStops.push(stop_1);\n      prevInRangeColorStop = stop_1;\n    }\n  }\n\n  return newColorStops;\n}\n\nfunction getVisualGradient(data, coordSys, api) {\n  var visualMetaList = data.getVisual('visualMeta');\n\n  if (!visualMetaList || !visualMetaList.length || !data.count()) {\n    // When data.count() is 0, gradient range can not be calculated.\n    return;\n  }\n\n  if (coordSys.type !== 'cartesian2d') {\n    if (process.env.NODE_ENV !== 'production') {\n      console.warn('Visual map on line style is only supported on cartesian2d.');\n    }\n\n    return;\n  }\n\n  var coordDim;\n  var visualMeta;\n\n  for (var i = visualMetaList.length - 1; i >= 0; i--) {\n    var dimInfo = data.getDimensionInfo(visualMetaList[i].dimension);\n    coordDim = dimInfo && dimInfo.coordDim; // Can only be x or y\n\n    if (coordDim === 'x' || coordDim === 'y') {\n      visualMeta = visualMetaList[i];\n      break;\n    }\n  }\n\n  if (!visualMeta) {\n    if (process.env.NODE_ENV !== 'production') {\n      console.warn('Visual map on line style only support x or y dimension.');\n    }\n\n    return;\n  } // If the area to be rendered is bigger than area defined by LinearGradient,\n  // the canvas spec prescribes that the color of the first stop and the last\n  // stop should be used. But if two stops are added at offset 0, in effect\n  // browsers use the color of the second stop to render area outside\n  // LinearGradient. So we can only infinitesimally extend area defined in\n  // LinearGradient to render `outerColors`.\n\n\n  var axis = coordSys.getAxis(coordDim); // dataToCoord mapping may not be linear, but must be monotonic.\n\n  var colorStops = zrUtil.map(visualMeta.stops, function (stop) {\n    // offset will be calculated later.\n    return {\n      coord: axis.toGlobalCoord(axis.dataToCoord(stop.value)),\n      color: stop.color\n    };\n  });\n  var stopLen = colorStops.length;\n  var outerColors = visualMeta.outerColors.slice();\n\n  if (stopLen && colorStops[0].coord > colorStops[stopLen - 1].coord) {\n    colorStops.reverse();\n    outerColors.reverse();\n  }\n\n  var colorStopsInRange = clipColorStops(colorStops, coordDim === 'x' ? api.getWidth() : api.getHeight());\n  var inRangeStopLen = colorStopsInRange.length;\n\n  if (!inRangeStopLen && stopLen) {\n    // All stops are out of range. All will be the same color.\n    return colorStops[0].coord < 0 ? outerColors[1] ? outerColors[1] : colorStops[stopLen - 1].color : outerColors[0] ? outerColors[0] : colorStops[0].color;\n  }\n\n  var tinyExtent = 10; // Arbitrary value: 10px\n\n  var minCoord = colorStopsInRange[0].coord - tinyExtent;\n  var maxCoord = colorStopsInRange[inRangeStopLen - 1].coord + tinyExtent;\n  var coordSpan = maxCoord - minCoord;\n\n  if (coordSpan < 1e-3) {\n    return 'transparent';\n  }\n\n  zrUtil.each(colorStopsInRange, function (stop) {\n    stop.offset = (stop.coord - minCoord) / coordSpan;\n  });\n  colorStopsInRange.push({\n    // NOTE: inRangeStopLen may still be 0 if stoplen is zero.\n    offset: inRangeStopLen ? colorStopsInRange[inRangeStopLen - 1].offset : 0.5,\n    color: outerColors[1] || 'transparent'\n  });\n  colorStopsInRange.unshift({\n    offset: inRangeStopLen ? colorStopsInRange[0].offset : 0.5,\n    color: outerColors[0] || 'transparent'\n  });\n  var gradient = new graphic.LinearGradient(0, 0, 0, 0, colorStopsInRange, true);\n  gradient[coordDim] = minCoord;\n  gradient[coordDim + '2'] = maxCoord;\n  return gradient;\n}\n\nfunction getIsIgnoreFunc(seriesModel, data, coordSys) {\n  var showAllSymbol = seriesModel.get('showAllSymbol');\n  var isAuto = showAllSymbol === 'auto';\n\n  if (showAllSymbol && !isAuto) {\n    return;\n  }\n\n  var categoryAxis = coordSys.getAxesByScale('ordinal')[0];\n\n  if (!categoryAxis) {\n    return;\n  } // Note that category label interval strategy might bring some weird effect\n  // in some scenario: users may wonder why some of the symbols are not\n  // displayed. So we show all symbols as possible as we can.\n\n\n  if (isAuto // Simplify the logic, do not determine label overlap here.\n  && canShowAllSymbolForCategory(categoryAxis, data)) {\n    return;\n  } // Otherwise follow the label interval strategy on category axis.\n\n\n  var categoryDataDim = data.mapDimension(categoryAxis.dim);\n  var labelMap = {};\n  zrUtil.each(categoryAxis.getViewLabels(), function (labelItem) {\n    var ordinalNumber = categoryAxis.scale.getRawOrdinalNumber(labelItem.tickValue);\n    labelMap[ordinalNumber] = 1;\n  });\n  return function (dataIndex) {\n    return !labelMap.hasOwnProperty(data.get(categoryDataDim, dataIndex));\n  };\n}\n\nfunction canShowAllSymbolForCategory(categoryAxis, data) {\n  // In most cases, line is monotonous on category axis, and the label size\n  // is close with each other. So we check the symbol size and some of the\n  // label size alone with the category axis to estimate whether all symbol\n  // can be shown without overlap.\n  var axisExtent = categoryAxis.getExtent();\n  var availSize = Math.abs(axisExtent[1] - axisExtent[0]) / categoryAxis.scale.count();\n  isNaN(availSize) && (availSize = 0); // 0/0 is NaN.\n  // Sampling some points, max 5.\n\n  var dataLen = data.count();\n  var step = Math.max(1, Math.round(dataLen / 5));\n\n  for (var dataIndex = 0; dataIndex < dataLen; dataIndex += step) {\n    if (SymbolClz.getSymbolSize(data, dataIndex // Only for cartesian, where `isHorizontal` exists.\n    )[categoryAxis.isHorizontal() ? 1 : 0] // Empirical number\n    * 1.5 > availSize) {\n      return false;\n    }\n  }\n\n  return true;\n}\n\nfunction isPointNull(x, y) {\n  return isNaN(x) || isNaN(y);\n}\n\nfunction getLastIndexNotNull(points) {\n  var len = points.length / 2;\n\n  for (; len > 0; len--) {\n    if (!isPointNull(points[len * 2 - 2], points[len * 2 - 1])) {\n      break;\n    }\n  }\n\n  return len - 1;\n}\n\nfunction getPointAtIndex(points, idx) {\n  return [points[idx * 2], points[idx * 2 + 1]];\n}\n\nfunction getIndexRange(points, xOrY, dim) {\n  var len = points.length / 2;\n  var dimIdx = dim === 'x' ? 0 : 1;\n  var a;\n  var b;\n  var prevIndex = 0;\n  var nextIndex = -1;\n\n  for (var i = 0; i < len; i++) {\n    b = points[i * 2 + dimIdx];\n\n    if (isNaN(b) || isNaN(points[i * 2 + 1 - dimIdx])) {\n      continue;\n    }\n\n    if (i === 0) {\n      a = b;\n      continue;\n    }\n\n    if (a <= xOrY && b >= xOrY || a >= xOrY && b <= xOrY) {\n      nextIndex = i;\n      break;\n    }\n\n    prevIndex = i;\n    a = b;\n  }\n\n  return {\n    range: [prevIndex, nextIndex],\n    t: (xOrY - a) / (b - a)\n  };\n}\n\nfunction anyStateShowEndLabel(seriesModel) {\n  if (seriesModel.get(['endLabel', 'show'])) {\n    return true;\n  }\n\n  for (var i = 0; i < SPECIAL_STATES.length; i++) {\n    if (seriesModel.get([SPECIAL_STATES[i], 'endLabel', 'show'])) {\n      return true;\n    }\n  }\n\n  return false;\n}\n\nfunction createLineClipPath(lineView, coordSys, hasAnimation, seriesModel) {\n  if (isCoordinateSystemType(coordSys, 'cartesian2d')) {\n    var endLabelModel_1 = seriesModel.getModel('endLabel');\n    var valueAnimation_1 = endLabelModel_1.get('valueAnimation');\n    var data_1 = seriesModel.getData();\n    var labelAnimationRecord_1 = {\n      lastFrameIndex: 0\n    };\n    var during = anyStateShowEndLabel(seriesModel) ? function (percent, clipRect) {\n      lineView._endLabelOnDuring(percent, clipRect, data_1, labelAnimationRecord_1, valueAnimation_1, endLabelModel_1, coordSys);\n    } : null;\n    var isHorizontal = coordSys.getBaseAxis().isHorizontal();\n    var clipPath = createGridClipPath(coordSys, hasAnimation, seriesModel, function () {\n      var endLabel = lineView._endLabel;\n\n      if (endLabel && hasAnimation) {\n        if (labelAnimationRecord_1.originalX != null) {\n          endLabel.attr({\n            x: labelAnimationRecord_1.originalX,\n            y: labelAnimationRecord_1.originalY\n          });\n        }\n      }\n    }, during); // Expand clip shape to avoid clipping when line value exceeds axis\n\n    if (!seriesModel.get('clip', true)) {\n      var rectShape = clipPath.shape;\n      var expandSize = Math.max(rectShape.width, rectShape.height);\n\n      if (isHorizontal) {\n        rectShape.y -= expandSize;\n        rectShape.height += expandSize * 2;\n      } else {\n        rectShape.x -= expandSize;\n        rectShape.width += expandSize * 2;\n      }\n    } // Set to the final frame. To make sure label layout is right.\n\n\n    if (during) {\n      during(1, clipPath);\n    }\n\n    return clipPath;\n  } else {\n    if (process.env.NODE_ENV !== 'production') {\n      if (seriesModel.get(['endLabel', 'show'])) {\n        console.warn('endLabel is not supported for lines in polar systems.');\n      }\n    }\n\n    return createPolarClipPath(coordSys, hasAnimation, seriesModel);\n  }\n}\n\nfunction getEndLabelStateSpecified(endLabelModel, coordSys) {\n  var baseAxis = coordSys.getBaseAxis();\n  var isHorizontal = baseAxis.isHorizontal();\n  var isBaseInversed = baseAxis.inverse;\n  var align = isHorizontal ? isBaseInversed ? 'right' : 'left' : 'center';\n  var verticalAlign = isHorizontal ? 'middle' : isBaseInversed ? 'top' : 'bottom';\n  return {\n    normal: {\n      align: endLabelModel.get('align') || align,\n      verticalAlign: endLabelModel.get('verticalAlign') || verticalAlign\n    }\n  };\n}\n\nvar LineView =\n/** @class */\nfunction (_super) {\n  __extends(LineView, _super);\n\n  function LineView() {\n    return _super !== null && _super.apply(this, arguments) || this;\n  }\n\n  LineView.prototype.init = function () {\n    var lineGroup = new graphic.Group();\n    var symbolDraw = new SymbolDraw();\n    this.group.add(symbolDraw.group);\n    this._symbolDraw = symbolDraw;\n    this._lineGroup = lineGroup;\n  };\n\n  LineView.prototype.render = function (seriesModel, ecModel, api) {\n    var _this = this;\n\n    var coordSys = seriesModel.coordinateSystem;\n    var group = this.group;\n    var data = seriesModel.getData();\n    var lineStyleModel = seriesModel.getModel('lineStyle');\n    var areaStyleModel = seriesModel.getModel('areaStyle');\n    var points = data.getLayout('points') || [];\n    var isCoordSysPolar = coordSys.type === 'polar';\n    var prevCoordSys = this._coordSys;\n    var symbolDraw = this._symbolDraw;\n    var polyline = this._polyline;\n    var polygon = this._polygon;\n    var lineGroup = this._lineGroup;\n    var hasAnimation = !ecModel.ssr && seriesModel.isAnimationEnabled();\n    var isAreaChart = !areaStyleModel.isEmpty();\n    var valueOrigin = areaStyleModel.get('origin');\n    var dataCoordInfo = prepareDataCoordInfo(coordSys, data, valueOrigin);\n    var stackedOnPoints = isAreaChart && getStackedOnPoints(coordSys, data, dataCoordInfo);\n    var showSymbol = seriesModel.get('showSymbol');\n    var connectNulls = seriesModel.get('connectNulls');\n    var isIgnoreFunc = showSymbol && !isCoordSysPolar && getIsIgnoreFunc(seriesModel, data, coordSys); // Remove temporary symbols\n\n    var oldData = this._data;\n    oldData && oldData.eachItemGraphicEl(function (el, idx) {\n      if (el.__temp) {\n        group.remove(el);\n        oldData.setItemGraphicEl(idx, null);\n      }\n    }); // Remove previous created symbols if showSymbol changed to false\n\n    if (!showSymbol) {\n      symbolDraw.remove();\n    }\n\n    group.add(lineGroup); // FIXME step not support polar\n\n    var step = !isCoordSysPolar ? seriesModel.get('step') : false;\n    var clipShapeForSymbol;\n\n    if (coordSys && coordSys.getArea && seriesModel.get('clip', true)) {\n      clipShapeForSymbol = coordSys.getArea(); // Avoid float number rounding error for symbol on the edge of axis extent.\n      // See #7913 and `test/dataZoom-clip.html`.\n\n      if (clipShapeForSymbol.width != null) {\n        clipShapeForSymbol.x -= 0.1;\n        clipShapeForSymbol.y -= 0.1;\n        clipShapeForSymbol.width += 0.2;\n        clipShapeForSymbol.height += 0.2;\n      } else if (clipShapeForSymbol.r0) {\n        clipShapeForSymbol.r0 -= 0.5;\n        clipShapeForSymbol.r += 0.5;\n      }\n    }\n\n    this._clipShapeForSymbol = clipShapeForSymbol;\n    var visualColor = getVisualGradient(data, coordSys, api) || data.getVisual('style')[data.getVisual('drawType')]; // Initialization animation or coordinate system changed\n\n    if (!(polyline && prevCoordSys.type === coordSys.type && step === this._step)) {\n      showSymbol && symbolDraw.updateData(data, {\n        isIgnore: isIgnoreFunc,\n        clipShape: clipShapeForSymbol,\n        disableAnimation: true,\n        getSymbolPoint: function (idx) {\n          return [points[idx * 2], points[idx * 2 + 1]];\n        }\n      });\n      hasAnimation && this._initSymbolLabelAnimation(data, coordSys, clipShapeForSymbol);\n\n      if (step) {\n        // TODO If stacked series is not step\n        points = turnPointsIntoStep(points, coordSys, step, connectNulls);\n\n        if (stackedOnPoints) {\n          stackedOnPoints = turnPointsIntoStep(stackedOnPoints, coordSys, step, connectNulls);\n        }\n      }\n\n      polyline = this._newPolyline(points);\n\n      if (isAreaChart) {\n        polygon = this._newPolygon(points, stackedOnPoints);\n      } // If areaStyle is removed\n      else if (polygon) {\n          lineGroup.remove(polygon);\n          polygon = this._polygon = null;\n        } // NOTE: Must update _endLabel before setClipPath.\n\n\n      if (!isCoordSysPolar) {\n        this._initOrUpdateEndLabel(seriesModel, coordSys, convertToColorString(visualColor));\n      }\n\n      lineGroup.setClipPath(createLineClipPath(this, coordSys, true, seriesModel));\n    } else {\n      if (isAreaChart && !polygon) {\n        // If areaStyle is added\n        polygon = this._newPolygon(points, stackedOnPoints);\n      } else if (polygon && !isAreaChart) {\n        // If areaStyle is removed\n        lineGroup.remove(polygon);\n        polygon = this._polygon = null;\n      } // NOTE: Must update _endLabel before setClipPath.\n\n\n      if (!isCoordSysPolar) {\n        this._initOrUpdateEndLabel(seriesModel, coordSys, convertToColorString(visualColor));\n      } // Update clipPath\n\n\n      var oldClipPath = lineGroup.getClipPath();\n\n      if (oldClipPath) {\n        var newClipPath = createLineClipPath(this, coordSys, false, seriesModel);\n        graphic.initProps(oldClipPath, {\n          shape: newClipPath.shape\n        }, seriesModel);\n      } else {\n        lineGroup.setClipPath(createLineClipPath(this, coordSys, true, seriesModel));\n      } // Always update, or it is wrong in the case turning on legend\n      // because points are not changed.\n\n\n      showSymbol && symbolDraw.updateData(data, {\n        isIgnore: isIgnoreFunc,\n        clipShape: clipShapeForSymbol,\n        disableAnimation: true,\n        getSymbolPoint: function (idx) {\n          return [points[idx * 2], points[idx * 2 + 1]];\n        }\n      }); // In the case data zoom triggered refreshing frequently\n      // Data may not change if line has a category axis. So it should animate nothing.\n\n      if (!isPointsSame(this._stackedOnPoints, stackedOnPoints) || !isPointsSame(this._points, points)) {\n        if (hasAnimation) {\n          this._doUpdateAnimation(data, stackedOnPoints, coordSys, api, step, valueOrigin, connectNulls);\n        } else {\n          // Not do it in update with animation\n          if (step) {\n            // TODO If stacked series is not step\n            points = turnPointsIntoStep(points, coordSys, step, connectNulls);\n\n            if (stackedOnPoints) {\n              stackedOnPoints = turnPointsIntoStep(stackedOnPoints, coordSys, step, connectNulls);\n            }\n          }\n\n          polyline.setShape({\n            points: points\n          });\n          polygon && polygon.setShape({\n            points: points,\n            stackedOnPoints: stackedOnPoints\n          });\n        }\n      }\n    }\n\n    var emphasisModel = seriesModel.getModel('emphasis');\n    var focus = emphasisModel.get('focus');\n    var blurScope = emphasisModel.get('blurScope');\n    var emphasisDisabled = emphasisModel.get('disabled');\n    polyline.useStyle(zrUtil.defaults( // Use color in lineStyle first\n    lineStyleModel.getLineStyle(), {\n      fill: 'none',\n      stroke: visualColor,\n      lineJoin: 'bevel'\n    }));\n    setStatesStylesFromModel(polyline, seriesModel, 'lineStyle');\n\n    if (polyline.style.lineWidth > 0 && seriesModel.get(['emphasis', 'lineStyle', 'width']) === 'bolder') {\n      var emphasisLineStyle = polyline.getState('emphasis').style;\n      emphasisLineStyle.lineWidth = +polyline.style.lineWidth + 1;\n    } // Needs seriesIndex for focus\n\n\n    getECData(polyline).seriesIndex = seriesModel.seriesIndex;\n    toggleHoverEmphasis(polyline, focus, blurScope, emphasisDisabled);\n    var smooth = getSmooth(seriesModel.get('smooth'));\n    var smoothMonotone = seriesModel.get('smoothMonotone');\n    polyline.setShape({\n      smooth: smooth,\n      smoothMonotone: smoothMonotone,\n      connectNulls: connectNulls\n    });\n\n    if (polygon) {\n      var stackedOnSeries = data.getCalculationInfo('stackedOnSeries');\n      var stackedOnSmooth = 0;\n      polygon.useStyle(zrUtil.defaults(areaStyleModel.getAreaStyle(), {\n        fill: visualColor,\n        opacity: 0.7,\n        lineJoin: 'bevel',\n        decal: data.getVisual('style').decal\n      }));\n\n      if (stackedOnSeries) {\n        stackedOnSmooth = getSmooth(stackedOnSeries.get('smooth'));\n      }\n\n      polygon.setShape({\n        smooth: smooth,\n        stackedOnSmooth: stackedOnSmooth,\n        smoothMonotone: smoothMonotone,\n        connectNulls: connectNulls\n      });\n      setStatesStylesFromModel(polygon, seriesModel, 'areaStyle'); // Needs seriesIndex for focus\n\n      getECData(polygon).seriesIndex = seriesModel.seriesIndex;\n      toggleHoverEmphasis(polygon, focus, blurScope, emphasisDisabled);\n    }\n\n    var changePolyState = function (toState) {\n      _this._changePolyState(toState);\n    };\n\n    data.eachItemGraphicEl(function (el) {\n      // Switch polyline / polygon state if element changed its state.\n      el && (el.onHoverStateChange = changePolyState);\n    });\n    this._polyline.onHoverStateChange = changePolyState;\n    this._data = data; // Save the coordinate system for transition animation when data changed\n\n    this._coordSys = coordSys;\n    this._stackedOnPoints = stackedOnPoints;\n    this._points = points;\n    this._step = step;\n    this._valueOrigin = valueOrigin;\n\n    if (seriesModel.get('triggerLineEvent')) {\n      this.packEventData(seriesModel, polyline);\n      polygon && this.packEventData(seriesModel, polygon);\n    }\n  };\n\n  LineView.prototype.packEventData = function (seriesModel, el) {\n    getECData(el).eventData = {\n      componentType: 'series',\n      componentSubType: 'line',\n      componentIndex: seriesModel.componentIndex,\n      seriesIndex: seriesModel.seriesIndex,\n      seriesName: seriesModel.name,\n      seriesType: 'line'\n    };\n  };\n\n  LineView.prototype.highlight = function (seriesModel, ecModel, api, payload) {\n    var data = seriesModel.getData();\n    var dataIndex = modelUtil.queryDataIndex(data, payload);\n\n    this._changePolyState('emphasis');\n\n    if (!(dataIndex instanceof Array) && dataIndex != null && dataIndex >= 0) {\n      var points = data.getLayout('points');\n      var symbol = data.getItemGraphicEl(dataIndex);\n\n      if (!symbol) {\n        // Create a temporary symbol if it is not exists\n        var x = points[dataIndex * 2];\n        var y = points[dataIndex * 2 + 1];\n\n        if (isNaN(x) || isNaN(y)) {\n          // Null data\n          return;\n        } // fix #11360: shouldn't draw symbol outside clipShapeForSymbol\n\n\n        if (this._clipShapeForSymbol && !this._clipShapeForSymbol.contain(x, y)) {\n          return;\n        }\n\n        var zlevel = seriesModel.get('zlevel') || 0;\n        var z = seriesModel.get('z') || 0;\n        symbol = new SymbolClz(data, dataIndex);\n        symbol.x = x;\n        symbol.y = y;\n        symbol.setZ(zlevel, z); // ensure label text of the temporary symbol is in front of line and area polygon\n\n        var symbolLabel = symbol.getSymbolPath().getTextContent();\n\n        if (symbolLabel) {\n          symbolLabel.zlevel = zlevel;\n          symbolLabel.z = z;\n          symbolLabel.z2 = this._polyline.z2 + 1;\n        }\n\n        symbol.__temp = true;\n        data.setItemGraphicEl(dataIndex, symbol); // Stop scale animation\n\n        symbol.stopSymbolAnimation(true);\n        this.group.add(symbol);\n      }\n\n      symbol.highlight();\n    } else {\n      // Highlight whole series\n      ChartView.prototype.highlight.call(this, seriesModel, ecModel, api, payload);\n    }\n  };\n\n  LineView.prototype.downplay = function (seriesModel, ecModel, api, payload) {\n    var data = seriesModel.getData();\n    var dataIndex = modelUtil.queryDataIndex(data, payload);\n\n    this._changePolyState('normal');\n\n    if (dataIndex != null && dataIndex >= 0) {\n      var symbol = data.getItemGraphicEl(dataIndex);\n\n      if (symbol) {\n        if (symbol.__temp) {\n          data.setItemGraphicEl(dataIndex, null);\n          this.group.remove(symbol);\n        } else {\n          symbol.downplay();\n        }\n      }\n    } else {\n      // FIXME\n      // can not downplay completely.\n      // Downplay whole series\n      ChartView.prototype.downplay.call(this, seriesModel, ecModel, api, payload);\n    }\n  };\n\n  LineView.prototype._changePolyState = function (toState) {\n    var polygon = this._polygon;\n    setStatesFlag(this._polyline, toState);\n    polygon && setStatesFlag(polygon, toState);\n  };\n\n  LineView.prototype._newPolyline = function (points) {\n    var polyline = this._polyline; // Remove previous created polyline\n\n    if (polyline) {\n      this._lineGroup.remove(polyline);\n    }\n\n    polyline = new ECPolyline({\n      shape: {\n        points: points\n      },\n      segmentIgnoreThreshold: 2,\n      z2: 10\n    });\n\n    this._lineGroup.add(polyline);\n\n    this._polyline = polyline;\n    return polyline;\n  };\n\n  LineView.prototype._newPolygon = function (points, stackedOnPoints) {\n    var polygon = this._polygon; // Remove previous created polygon\n\n    if (polygon) {\n      this._lineGroup.remove(polygon);\n    }\n\n    polygon = new ECPolygon({\n      shape: {\n        points: points,\n        stackedOnPoints: stackedOnPoints\n      },\n      segmentIgnoreThreshold: 2\n    });\n\n    this._lineGroup.add(polygon);\n\n    this._polygon = polygon;\n    return polygon;\n  };\n\n  LineView.prototype._initSymbolLabelAnimation = function (data, coordSys, clipShape) {\n    var isHorizontalOrRadial;\n    var isCoordSysPolar;\n    var baseAxis = coordSys.getBaseAxis();\n    var isAxisInverse = baseAxis.inverse;\n\n    if (coordSys.type === 'cartesian2d') {\n      isHorizontalOrRadial = baseAxis.isHorizontal();\n      isCoordSysPolar = false;\n    } else if (coordSys.type === 'polar') {\n      isHorizontalOrRadial = baseAxis.dim === 'angle';\n      isCoordSysPolar = true;\n    }\n\n    var seriesModel = data.hostModel;\n    var seriesDuration = seriesModel.get('animationDuration');\n\n    if (zrUtil.isFunction(seriesDuration)) {\n      seriesDuration = seriesDuration(null);\n    }\n\n    var seriesDelay = seriesModel.get('animationDelay') || 0;\n    var seriesDelayValue = zrUtil.isFunction(seriesDelay) ? seriesDelay(null) : seriesDelay;\n    data.eachItemGraphicEl(function (symbol, idx) {\n      var el = symbol;\n\n      if (el) {\n        var point = [symbol.x, symbol.y];\n        var start = void 0;\n        var end = void 0;\n        var current = void 0;\n\n        if (clipShape) {\n          if (isCoordSysPolar) {\n            var polarClip = clipShape;\n            var coord = coordSys.pointToCoord(point);\n\n            if (isHorizontalOrRadial) {\n              start = polarClip.startAngle;\n              end = polarClip.endAngle;\n              current = -coord[1] / 180 * Math.PI;\n            } else {\n              start = polarClip.r0;\n              end = polarClip.r;\n              current = coord[0];\n            }\n          } else {\n            var gridClip = clipShape;\n\n            if (isHorizontalOrRadial) {\n              start = gridClip.x;\n              end = gridClip.x + gridClip.width;\n              current = symbol.x;\n            } else {\n              start = gridClip.y + gridClip.height;\n              end = gridClip.y;\n              current = symbol.y;\n            }\n          }\n        }\n\n        var ratio = end === start ? 0 : (current - start) / (end - start);\n\n        if (isAxisInverse) {\n          ratio = 1 - ratio;\n        }\n\n        var delay = zrUtil.isFunction(seriesDelay) ? seriesDelay(idx) : seriesDuration * ratio + seriesDelayValue;\n        var symbolPath = el.getSymbolPath();\n        var text = symbolPath.getTextContent();\n        el.attr({\n          scaleX: 0,\n          scaleY: 0\n        });\n        el.animateTo({\n          scaleX: 1,\n          scaleY: 1\n        }, {\n          duration: 200,\n          setToFinal: true,\n          delay: delay\n        });\n\n        if (text) {\n          text.animateFrom({\n            style: {\n              opacity: 0\n            }\n          }, {\n            duration: 300,\n            delay: delay\n          });\n        }\n\n        symbolPath.disableLabelAnimation = true;\n      }\n    });\n  };\n\n  LineView.prototype._initOrUpdateEndLabel = function (seriesModel, coordSys, inheritColor) {\n    var endLabelModel = seriesModel.getModel('endLabel');\n\n    if (anyStateShowEndLabel(seriesModel)) {\n      var data_2 = seriesModel.getData();\n      var polyline = this._polyline; // series may be filtered.\n\n      var points = data_2.getLayout('points');\n\n      if (!points) {\n        polyline.removeTextContent();\n        this._endLabel = null;\n        return;\n      }\n\n      var endLabel = this._endLabel;\n\n      if (!endLabel) {\n        endLabel = this._endLabel = new graphic.Text({\n          z2: 200 // should be higher than item symbol\n\n        });\n        endLabel.ignoreClip = true;\n        polyline.setTextContent(this._endLabel);\n        polyline.disableLabelAnimation = true;\n      } // Find last non-NaN data to display data\n\n\n      var dataIndex = getLastIndexNotNull(points);\n\n      if (dataIndex >= 0) {\n        setLabelStyle(polyline, getLabelStatesModels(seriesModel, 'endLabel'), {\n          inheritColor: inheritColor,\n          labelFetcher: seriesModel,\n          labelDataIndex: dataIndex,\n          defaultText: function (dataIndex, opt, interpolatedValue) {\n            return interpolatedValue != null ? getDefaultInterpolatedLabel(data_2, interpolatedValue) : getDefaultLabel(data_2, dataIndex);\n          },\n          enableTextSetter: true\n        }, getEndLabelStateSpecified(endLabelModel, coordSys));\n        polyline.textConfig.position = null;\n      }\n    } else if (this._endLabel) {\n      this._polyline.removeTextContent();\n\n      this._endLabel = null;\n    }\n  };\n\n  LineView.prototype._endLabelOnDuring = function (percent, clipRect, data, animationRecord, valueAnimation, endLabelModel, coordSys) {\n    var endLabel = this._endLabel;\n    var polyline = this._polyline;\n\n    if (endLabel) {\n      // NOTE: Don't remove percent < 1. percent === 1 means the first frame during render.\n      // The label is not prepared at this time.\n      if (percent < 1 && animationRecord.originalX == null) {\n        animationRecord.originalX = endLabel.x;\n        animationRecord.originalY = endLabel.y;\n      }\n\n      var points = data.getLayout('points');\n      var seriesModel = data.hostModel;\n      var connectNulls = seriesModel.get('connectNulls');\n      var precision = endLabelModel.get('precision');\n      var distance = endLabelModel.get('distance') || 0;\n      var baseAxis = coordSys.getBaseAxis();\n      var isHorizontal = baseAxis.isHorizontal();\n      var isBaseInversed = baseAxis.inverse;\n      var clipShape = clipRect.shape;\n      var xOrY = isBaseInversed ? isHorizontal ? clipShape.x : clipShape.y + clipShape.height : isHorizontal ? clipShape.x + clipShape.width : clipShape.y;\n      var distanceX = (isHorizontal ? distance : 0) * (isBaseInversed ? -1 : 1);\n      var distanceY = (isHorizontal ? 0 : -distance) * (isBaseInversed ? -1 : 1);\n      var dim = isHorizontal ? 'x' : 'y';\n      var dataIndexRange = getIndexRange(points, xOrY, dim);\n      var indices = dataIndexRange.range;\n      var diff = indices[1] - indices[0];\n      var value = void 0;\n\n      if (diff >= 1) {\n        // diff > 1 && connectNulls, which is on the null data.\n        if (diff > 1 && !connectNulls) {\n          var pt = getPointAtIndex(points, indices[0]);\n          endLabel.attr({\n            x: pt[0] + distanceX,\n            y: pt[1] + distanceY\n          });\n          valueAnimation && (value = seriesModel.getRawValue(indices[0]));\n        } else {\n          var pt = polyline.getPointOn(xOrY, dim);\n          pt && endLabel.attr({\n            x: pt[0] + distanceX,\n            y: pt[1] + distanceY\n          });\n          var startValue = seriesModel.getRawValue(indices[0]);\n          var endValue = seriesModel.getRawValue(indices[1]);\n          valueAnimation && (value = modelUtil.interpolateRawValues(data, precision, startValue, endValue, dataIndexRange.t));\n        }\n\n        animationRecord.lastFrameIndex = indices[0];\n      } else {\n        // If diff <= 0, which is the range is not found(Include NaN)\n        // Choose the first point or last point.\n        var idx = percent === 1 || animationRecord.lastFrameIndex > 0 ? indices[0] : 0;\n        var pt = getPointAtIndex(points, idx);\n        valueAnimation && (value = seriesModel.getRawValue(idx));\n        endLabel.attr({\n          x: pt[0] + distanceX,\n          y: pt[1] + distanceY\n        });\n      }\n\n      if (valueAnimation) {\n        var inner = labelInner(endLabel);\n\n        if (typeof inner.setLabelText === 'function') {\n          inner.setLabelText(value);\n        }\n      }\n    }\n  };\n  /**\r\n   * @private\r\n   */\n  // FIXME Two value axis\n\n\n  LineView.prototype._doUpdateAnimation = function (data, stackedOnPoints, coordSys, api, step, valueOrigin, connectNulls) {\n    var polyline = this._polyline;\n    var polygon = this._polygon;\n    var seriesModel = data.hostModel;\n    var diff = lineAnimationDiff(this._data, data, this._stackedOnPoints, stackedOnPoints, this._coordSys, coordSys, this._valueOrigin, valueOrigin);\n    var current = diff.current;\n    var stackedOnCurrent = diff.stackedOnCurrent;\n    var next = diff.next;\n    var stackedOnNext = diff.stackedOnNext;\n\n    if (step) {\n      // TODO If stacked series is not step\n      current = turnPointsIntoStep(diff.current, coordSys, step, connectNulls);\n      stackedOnCurrent = turnPointsIntoStep(diff.stackedOnCurrent, coordSys, step, connectNulls);\n      next = turnPointsIntoStep(diff.next, coordSys, step, connectNulls);\n      stackedOnNext = turnPointsIntoStep(diff.stackedOnNext, coordSys, step, connectNulls);\n    } // Don't apply animation if diff is large.\n    // For better result and avoid memory explosion problems like\n    // https://github.com/apache/incubator-echarts/issues/12229\n\n\n    if (getBoundingDiff(current, next) > 3000 || polygon && getBoundingDiff(stackedOnCurrent, stackedOnNext) > 3000) {\n      polyline.stopAnimation();\n      polyline.setShape({\n        points: next\n      });\n\n      if (polygon) {\n        polygon.stopAnimation();\n        polygon.setShape({\n          points: next,\n          stackedOnPoints: stackedOnNext\n        });\n      }\n\n      return;\n    }\n\n    polyline.shape.__points = diff.current;\n    polyline.shape.points = current;\n    var target = {\n      shape: {\n        points: next\n      }\n    }; // Also animate the original points.\n    // If points reference is changed when turning into step line.\n\n    if (diff.current !== current) {\n      target.shape.__points = diff.next;\n    } // Stop previous animation.\n\n\n    polyline.stopAnimation();\n    graphic.updateProps(polyline, target, seriesModel);\n\n    if (polygon) {\n      polygon.setShape({\n        // Reuse the points with polyline.\n        points: current,\n        stackedOnPoints: stackedOnCurrent\n      });\n      polygon.stopAnimation();\n      graphic.updateProps(polygon, {\n        shape: {\n          stackedOnPoints: stackedOnNext\n        }\n      }, seriesModel); // If use attr directly in updateProps.\n\n      if (polyline.shape.points !== polygon.shape.points) {\n        polygon.shape.points = polyline.shape.points;\n      }\n    }\n\n    var updatedDataInfo = [];\n    var diffStatus = diff.status;\n\n    for (var i = 0; i < diffStatus.length; i++) {\n      var cmd = diffStatus[i].cmd;\n\n      if (cmd === '=') {\n        var el = data.getItemGraphicEl(diffStatus[i].idx1);\n\n        if (el) {\n          updatedDataInfo.push({\n            el: el,\n            ptIdx: i // Index of points\n\n          });\n        }\n      }\n    }\n\n    if (polyline.animators && polyline.animators.length) {\n      polyline.animators[0].during(function () {\n        polygon && polygon.dirtyShape();\n        var points = polyline.shape.__points;\n\n        for (var i = 0; i < updatedDataInfo.length; i++) {\n          var el = updatedDataInfo[i].el;\n          var offset = updatedDataInfo[i].ptIdx * 2;\n          el.x = points[offset];\n          el.y = points[offset + 1];\n          el.markRedraw();\n        }\n      });\n    }\n  };\n\n  LineView.prototype.remove = function (ecModel) {\n    var group = this.group;\n    var oldData = this._data;\n\n    this._lineGroup.removeAll();\n\n    this._symbolDraw.remove(true); // Remove temporary created elements when highlighting\n\n\n    oldData && oldData.eachItemGraphicEl(function (el, idx) {\n      if (el.__temp) {\n        group.remove(el);\n        oldData.setItemGraphicEl(idx, null);\n      }\n    });\n    this._polyline = this._polygon = this._coordSys = this._points = this._stackedOnPoints = this._endLabel = this._data = null;\n  };\n\n  LineView.type = 'line';\n  return LineView;\n}(ChartView);\n\nexport default LineView;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { prepareDataCoordInfo, getStackedOnPoint } from './helper.js';\nimport { createFloat32Array } from '../../util/vendor.js';\n\nfunction diffData(oldData, newData) {\n  var diffResult = [];\n  newData.diff(oldData).add(function (idx) {\n    diffResult.push({\n      cmd: '+',\n      idx: idx\n    });\n  }).update(function (newIdx, oldIdx) {\n    diffResult.push({\n      cmd: '=',\n      idx: oldIdx,\n      idx1: newIdx\n    });\n  }).remove(function (idx) {\n    diffResult.push({\n      cmd: '-',\n      idx: idx\n    });\n  }).execute();\n  return diffResult;\n}\n\nexport default function lineAnimationDiff(oldData, newData, oldStackedOnPoints, newStackedOnPoints, oldCoordSys, newCoordSys, oldValueOrigin, newValueOrigin) {\n  var diff = diffData(oldData, newData); // let newIdList = newData.mapArray(newData.getId);\n  // let oldIdList = oldData.mapArray(oldData.getId);\n  // convertToIntId(newIdList, oldIdList);\n  // // FIXME One data ?\n  // diff = arrayDiff(oldIdList, newIdList);\n\n  var currPoints = [];\n  var nextPoints = []; // Points for stacking base line\n\n  var currStackedPoints = [];\n  var nextStackedPoints = [];\n  var status = [];\n  var sortedIndices = [];\n  var rawIndices = [];\n  var newDataOldCoordInfo = prepareDataCoordInfo(oldCoordSys, newData, oldValueOrigin); // const oldDataNewCoordInfo = prepareDataCoordInfo(newCoordSys, oldData, newValueOrigin);\n\n  var oldPoints = oldData.getLayout('points') || [];\n  var newPoints = newData.getLayout('points') || [];\n\n  for (var i = 0; i < diff.length; i++) {\n    var diffItem = diff[i];\n    var pointAdded = true;\n    var oldIdx2 = void 0;\n    var newIdx2 = void 0; // FIXME, animation is not so perfect when dataZoom window moves fast\n    // Which is in case remvoing or add more than one data in the tail or head\n\n    switch (diffItem.cmd) {\n      case '=':\n        oldIdx2 = diffItem.idx * 2;\n        newIdx2 = diffItem.idx1 * 2;\n        var currentX = oldPoints[oldIdx2];\n        var currentY = oldPoints[oldIdx2 + 1];\n        var nextX = newPoints[newIdx2];\n        var nextY = newPoints[newIdx2 + 1]; // If previous data is NaN, use next point directly\n\n        if (isNaN(currentX) || isNaN(currentY)) {\n          currentX = nextX;\n          currentY = nextY;\n        }\n\n        currPoints.push(currentX, currentY);\n        nextPoints.push(nextX, nextY);\n        currStackedPoints.push(oldStackedOnPoints[oldIdx2], oldStackedOnPoints[oldIdx2 + 1]);\n        nextStackedPoints.push(newStackedOnPoints[newIdx2], newStackedOnPoints[newIdx2 + 1]);\n        rawIndices.push(newData.getRawIndex(diffItem.idx1));\n        break;\n\n      case '+':\n        var newIdx = diffItem.idx;\n        var newDataDimsForPoint = newDataOldCoordInfo.dataDimsForPoint;\n        var oldPt = oldCoordSys.dataToPoint([newData.get(newDataDimsForPoint[0], newIdx), newData.get(newDataDimsForPoint[1], newIdx)]);\n        newIdx2 = newIdx * 2;\n        currPoints.push(oldPt[0], oldPt[1]);\n        nextPoints.push(newPoints[newIdx2], newPoints[newIdx2 + 1]);\n        var stackedOnPoint = getStackedOnPoint(newDataOldCoordInfo, oldCoordSys, newData, newIdx);\n        currStackedPoints.push(stackedOnPoint[0], stackedOnPoint[1]);\n        nextStackedPoints.push(newStackedOnPoints[newIdx2], newStackedOnPoints[newIdx2 + 1]);\n        rawIndices.push(newData.getRawIndex(newIdx));\n        break;\n\n      case '-':\n        pointAdded = false;\n    } // Original indices\n\n\n    if (pointAdded) {\n      status.push(diffItem);\n      sortedIndices.push(sortedIndices.length);\n    }\n  } // Diff result may be crossed if all items are changed\n  // Sort by data index\n\n\n  sortedIndices.sort(function (a, b) {\n    return rawIndices[a] - rawIndices[b];\n  });\n  var len = currPoints.length;\n  var sortedCurrPoints = createFloat32Array(len);\n  var sortedNextPoints = createFloat32Array(len);\n  var sortedCurrStackedPoints = createFloat32Array(len);\n  var sortedNextStackedPoints = createFloat32Array(len);\n  var sortedStatus = [];\n\n  for (var i = 0; i < sortedIndices.length; i++) {\n    var idx = sortedIndices[i];\n    var i2 = i * 2;\n    var idx2 = idx * 2;\n    sortedCurrPoints[i2] = currPoints[idx2];\n    sortedCurrPoints[i2 + 1] = currPoints[idx2 + 1];\n    sortedNextPoints[i2] = nextPoints[idx2];\n    sortedNextPoints[i2 + 1] = nextPoints[idx2 + 1];\n    sortedCurrStackedPoints[i2] = currStackedPoints[idx2];\n    sortedCurrStackedPoints[i2 + 1] = currStackedPoints[idx2 + 1];\n    sortedNextStackedPoints[i2] = nextStackedPoints[idx2];\n    sortedNextStackedPoints[i2 + 1] = nextStackedPoints[idx2 + 1];\n    sortedStatus[i] = status[idx];\n  }\n\n  return {\n    current: sortedCurrPoints,\n    next: sortedNextPoints,\n    stackedOnCurrent: sortedCurrStackedPoints,\n    stackedOnNext: sortedNextStackedPoints,\n    status: sortedStatus\n  };\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { map } from 'zrender/lib/core/util.js';\nimport createRenderPlanner from '../chart/helper/createRenderPlanner.js';\nimport { isDimensionStacked } from '../data/helper/dataStackHelper.js';\nimport { createFloat32Array } from '../util/vendor.js';\nexport default function pointsLayout(seriesType, forceStoreInTypedArray) {\n  return {\n    seriesType: seriesType,\n    plan: createRenderPlanner(),\n    reset: function (seriesModel) {\n      var data = seriesModel.getData();\n      var coordSys = seriesModel.coordinateSystem;\n      var pipelineContext = seriesModel.pipelineContext;\n      var useTypedArray = forceStoreInTypedArray || pipelineContext.large;\n\n      if (!coordSys) {\n        return;\n      }\n\n      var dims = map(coordSys.dimensions, function (dim) {\n        return data.mapDimension(dim);\n      }).slice(0, 2);\n      var dimLen = dims.length;\n      var stackResultDim = data.getCalculationInfo('stackResultDimension');\n\n      if (isDimensionStacked(data, dims[0])) {\n        dims[0] = stackResultDim;\n      }\n\n      if (isDimensionStacked(data, dims[1])) {\n        dims[1] = stackResultDim;\n      }\n\n      var store = data.getStore();\n      var dimIdx0 = data.getDimensionIndex(dims[0]);\n      var dimIdx1 = data.getDimensionIndex(dims[1]);\n      return dimLen && {\n        progress: function (params, data) {\n          var segCount = params.end - params.start;\n          var points = useTypedArray && createFloat32Array(segCount * dimLen);\n          var tmpIn = [];\n          var tmpOut = [];\n\n          for (var i = params.start, offset = 0; i < params.end; i++) {\n            var point = void 0;\n\n            if (dimLen === 1) {\n              var x = store.get(dimIdx0, i); // NOTE: Make sure the second parameter is null to use default strategy.\n\n              point = coordSys.dataToPoint(x, null, tmpOut);\n            } else {\n              tmpIn[0] = store.get(dimIdx0, i);\n              tmpIn[1] = store.get(dimIdx1, i); // Let coordinate system to handle the NaN data.\n\n              point = coordSys.dataToPoint(tmpIn, null, tmpOut);\n            }\n\n            if (useTypedArray) {\n              points[offset++] = point[0];\n              points[offset++] = point[1];\n            } else {\n              data.setItemLayout(i, point.slice());\n            }\n          }\n\n          useTypedArray && data.setLayout('points', points);\n        }\n      };\n    }\n  };\n}\n;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { isFunction, isString } from 'zrender/lib/core/util.js';\nvar samplers = {\n  average: function (frame) {\n    var sum = 0;\n    var count = 0;\n\n    for (var i = 0; i < frame.length; i++) {\n      if (!isNaN(frame[i])) {\n        sum += frame[i];\n        count++;\n      }\n    } // Return NaN if count is 0\n\n\n    return count === 0 ? NaN : sum / count;\n  },\n  sum: function (frame) {\n    var sum = 0;\n\n    for (var i = 0; i < frame.length; i++) {\n      // Ignore NaN\n      sum += frame[i] || 0;\n    }\n\n    return sum;\n  },\n  max: function (frame) {\n    var max = -Infinity;\n\n    for (var i = 0; i < frame.length; i++) {\n      frame[i] > max && (max = frame[i]);\n    } // NaN will cause illegal axis extent.\n\n\n    return isFinite(max) ? max : NaN;\n  },\n  min: function (frame) {\n    var min = Infinity;\n\n    for (var i = 0; i < frame.length; i++) {\n      frame[i] < min && (min = frame[i]);\n    } // NaN will cause illegal axis extent.\n\n\n    return isFinite(min) ? min : NaN;\n  },\n  // TODO\n  // Median\n  nearest: function (frame) {\n    return frame[0];\n  }\n};\n\nvar indexSampler = function (frame) {\n  return Math.round(frame.length / 2);\n};\n\nexport default function dataSample(seriesType) {\n  return {\n    seriesType: seriesType,\n    // FIXME:TS never used, so comment it\n    // modifyOutputEnd: true,\n    reset: function (seriesModel, ecModel, api) {\n      var data = seriesModel.getData();\n      var sampling = seriesModel.get('sampling');\n      var coordSys = seriesModel.coordinateSystem;\n      var count = data.count(); // Only cartesian2d support down sampling. Disable it when there is few data.\n\n      if (count > 10 && coordSys.type === 'cartesian2d' && sampling) {\n        var baseAxis = coordSys.getBaseAxis();\n        var valueAxis = coordSys.getOtherAxis(baseAxis);\n        var extent = baseAxis.getExtent();\n        var dpr = api.getDevicePixelRatio(); // Coordinste system has been resized\n\n        var size = Math.abs(extent[1] - extent[0]) * (dpr || 1);\n        var rate = Math.round(count / size);\n\n        if (isFinite(rate) && rate > 1) {\n          if (sampling === 'lttb') {\n            seriesModel.setData(data.lttbDownSample(data.mapDimension(valueAxis.dim), 1 / rate));\n          }\n\n          var sampler = void 0;\n\n          if (isString(sampling)) {\n            sampler = samplers[sampling];\n          } else if (isFunction(sampling)) {\n            sampler = sampling;\n          }\n\n          if (sampler) {\n            // Only support sample the first dim mapped from value axis.\n            seriesModel.setData(data.downSample(data.mapDimension(valueAxis.dim), 1 / rate, sampler, indexSampler));\n          }\n        }\n      }\n    }\n  };\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { __extends } from \"tslib\";\nimport SeriesModel from '../../model/Series.js';\nimport createSeriesData from '../helper/createSeriesData.js';\nimport { each } from 'zrender/lib/core/util.js';\n\nvar BaseBarSeriesModel =\n/** @class */\nfunction (_super) {\n  __extends(BaseBarSeriesModel, _super);\n\n  function BaseBarSeriesModel() {\n    var _this = _super !== null && _super.apply(this, arguments) || this;\n\n    _this.type = BaseBarSeriesModel.type;\n    return _this;\n  }\n\n  BaseBarSeriesModel.prototype.getInitialData = function (option, ecModel) {\n    return createSeriesData(null, this, {\n      useEncodeDefaulter: true\n    });\n  };\n\n  BaseBarSeriesModel.prototype.getMarkerPosition = function (value, dims, startingAtTick) {\n    var coordSys = this.coordinateSystem;\n\n    if (coordSys && coordSys.clampData) {\n      // PENDING if clamp ?\n      var clampData_1 = coordSys.clampData(value);\n      var pt_1 = coordSys.dataToPoint(clampData_1);\n\n      if (startingAtTick) {\n        each(coordSys.getAxes(), function (axis, idx) {\n          // If axis type is category, use tick coords instead\n          if (axis.type === 'category' && dims != null) {\n            var tickCoords = axis.getTicksCoords();\n            var targetTickId = clampData_1[idx]; // The index of rightmost tick of markArea is 1 larger than x1/y1 index\n\n            var isEnd = dims[idx] === 'x1' || dims[idx] === 'y1';\n\n            if (isEnd) {\n              targetTickId += 1;\n            } // The only contains one tick, tickCoords is\n            // like [{coord: 0, tickValue: 0}, {coord: 0}]\n            // to the length should always be larger than 1\n\n\n            if (tickCoords.length < 2) {\n              return;\n            } else if (tickCoords.length === 2) {\n              // The left value and right value of the axis are\n              // the same. coord is 0 in both items. Use the max\n              // value of the axis as the coord\n              pt_1[idx] = axis.toGlobalCoord(axis.getExtent()[isEnd ? 1 : 0]);\n              return;\n            }\n\n            var leftCoord = void 0;\n            var coord = void 0;\n            var stepTickValue = 1;\n\n            for (var i = 0; i < tickCoords.length; i++) {\n              var tickCoord = tickCoords[i].coord; // The last item of tickCoords doesn't contain\n              // tickValue\n\n              var tickValue = i === tickCoords.length - 1 ? tickCoords[i - 1].tickValue + stepTickValue : tickCoords[i].tickValue;\n\n              if (tickValue === targetTickId) {\n                coord = tickCoord;\n                break;\n              } else if (tickValue < targetTickId) {\n                leftCoord = tickCoord;\n              } else if (leftCoord != null && tickValue > targetTickId) {\n                coord = (tickCoord + leftCoord) / 2;\n                break;\n              }\n\n              if (i === 1) {\n                // Here we assume the step of category axes is\n                // the same\n                stepTickValue = tickValue - tickCoords[0].tickValue;\n              }\n            }\n\n            if (coord == null) {\n              if (!leftCoord) {\n                // targetTickId is smaller than all tick ids in the\n                // visible area, use the leftmost tick coord\n                coord = tickCoords[0].coord;\n              } else if (leftCoord) {\n                // targetTickId is larger than all tick ids in the\n                // visible area, use the rightmost tick coord\n                coord = tickCoords[tickCoords.length - 1].coord;\n              }\n            }\n\n            pt_1[idx] = axis.toGlobalCoord(coord);\n          }\n        });\n      } else {\n        var data = this.getData();\n        var offset = data.getLayout('offset');\n        var size = data.getLayout('size');\n        var offsetIndex = coordSys.getBaseAxis().isHorizontal() ? 0 : 1;\n        pt_1[offsetIndex] += offset + size / 2;\n      }\n\n      return pt_1;\n    }\n\n    return [NaN, NaN];\n  };\n\n  BaseBarSeriesModel.type = 'series.__base_bar__';\n  BaseBarSeriesModel.defaultOption = {\n    // zlevel: 0,\n    z: 2,\n    coordinateSystem: 'cartesian2d',\n    legendHoverLink: true,\n    // stack: null\n    // Cartesian coordinate system\n    // xAxisIndex: 0,\n    // yAxisIndex: 0,\n    barMinHeight: 0,\n    barMinAngle: 0,\n    // cursor: null,\n    large: false,\n    largeThreshold: 400,\n    progressive: 3e3,\n    progressiveChunkMode: 'mod'\n  };\n  return BaseBarSeriesModel;\n}(SeriesModel);\n\nSeriesModel.registerClass(BaseBarSeriesModel);\nexport default BaseBarSeriesModel;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { __extends } from \"tslib\";\nimport BaseBarSeriesModel from './BaseBarSeries.js';\nimport createSeriesData from '../helper/createSeriesData.js';\nimport { inheritDefaultOption } from '../../util/component.js';\n\nvar BarSeriesModel =\n/** @class */\nfunction (_super) {\n  __extends(BarSeriesModel, _super);\n\n  function BarSeriesModel() {\n    var _this = _super !== null && _super.apply(this, arguments) || this;\n\n    _this.type = BarSeriesModel.type;\n    return _this;\n  }\n\n  BarSeriesModel.prototype.getInitialData = function () {\n    return createSeriesData(null, this, {\n      useEncodeDefaulter: true,\n      createInvertedIndices: !!this.get('realtimeSort', true) || null\n    });\n  };\n  /**\r\n   * @override\r\n   */\n\n\n  BarSeriesModel.prototype.getProgressive = function () {\n    // Do not support progressive in normal mode.\n    return this.get('large') ? this.get('progressive') : false;\n  };\n  /**\r\n   * @override\r\n   */\n\n\n  BarSeriesModel.prototype.getProgressiveThreshold = function () {\n    // Do not support progressive in normal mode.\n    var progressiveThreshold = this.get('progressiveThreshold');\n    var largeThreshold = this.get('largeThreshold');\n\n    if (largeThreshold > progressiveThreshold) {\n      progressiveThreshold = largeThreshold;\n    }\n\n    return progressiveThreshold;\n  };\n\n  BarSeriesModel.prototype.brushSelector = function (dataIndex, data, selectors) {\n    return selectors.rect(data.getItemLayout(dataIndex));\n  };\n\n  BarSeriesModel.type = 'series.bar';\n  BarSeriesModel.dependencies = ['grid', 'polar'];\n  BarSeriesModel.defaultOption = inheritDefaultOption(BaseBarSeriesModel.defaultOption, {\n    // If clipped\n    // Only available on cartesian2d\n    clip: true,\n    roundCap: false,\n    showBackground: false,\n    backgroundStyle: {\n      color: 'rgba(180, 180, 180, 0.2)',\n      borderColor: null,\n      borderWidth: 0,\n      borderType: 'solid',\n      borderRadius: 0,\n      shadowBlur: 0,\n      shadowColor: null,\n      shadowOffsetX: 0,\n      shadowOffsetY: 0,\n      opacity: 1\n    },\n    select: {\n      itemStyle: {\n        borderColor: '#212121'\n      }\n    },\n    realtimeSort: false\n  });\n  return BarSeriesModel;\n}(BaseBarSeriesModel);\n\nexport default BarSeriesModel;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { __extends } from \"tslib\";\nimport { Path } from '../graphic.js';\n/**\r\n * Sausage: similar to sector, but have half circle on both sides\r\n */\n\nvar SausageShape =\n/** @class */\nfunction () {\n  function SausageShape() {\n    this.cx = 0;\n    this.cy = 0;\n    this.r0 = 0;\n    this.r = 0;\n    this.startAngle = 0;\n    this.endAngle = Math.PI * 2;\n    this.clockwise = true;\n  }\n\n  return SausageShape;\n}();\n\nvar SausagePath =\n/** @class */\nfunction (_super) {\n  __extends(SausagePath, _super);\n\n  function SausagePath(opts) {\n    var _this = _super.call(this, opts) || this;\n\n    _this.type = 'sausage';\n    return _this;\n  }\n\n  SausagePath.prototype.getDefaultShape = function () {\n    return new SausageShape();\n  };\n\n  SausagePath.prototype.buildPath = function (ctx, shape) {\n    var cx = shape.cx;\n    var cy = shape.cy;\n    var r0 = Math.max(shape.r0 || 0, 0);\n    var r = Math.max(shape.r, 0);\n    var dr = (r - r0) * 0.5;\n    var rCenter = r0 + dr;\n    var startAngle = shape.startAngle;\n    var endAngle = shape.endAngle;\n    var clockwise = shape.clockwise;\n    var PI2 = Math.PI * 2;\n    var lessThanCircle = clockwise ? endAngle - startAngle < PI2 : startAngle - endAngle < PI2;\n\n    if (!lessThanCircle) {\n      // Normalize angles\n      startAngle = endAngle - (clockwise ? PI2 : -PI2);\n    }\n\n    var unitStartX = Math.cos(startAngle);\n    var unitStartY = Math.sin(startAngle);\n    var unitEndX = Math.cos(endAngle);\n    var unitEndY = Math.sin(endAngle);\n\n    if (lessThanCircle) {\n      ctx.moveTo(unitStartX * r0 + cx, unitStartY * r0 + cy);\n      ctx.arc(unitStartX * rCenter + cx, unitStartY * rCenter + cy, dr, -Math.PI + startAngle, startAngle, !clockwise);\n    } else {\n      ctx.moveTo(unitStartX * r + cx, unitStartY * r + cy);\n    }\n\n    ctx.arc(cx, cy, r, startAngle, endAngle, !clockwise);\n    ctx.arc(unitEndX * rCenter + cx, unitEndY * rCenter + cy, dr, endAngle - Math.PI * 2, endAngle - Math.PI, !clockwise);\n\n    if (r0 !== 0) {\n      ctx.arc(cx, cy, r0, endAngle, startAngle, clockwise);\n    } // ctx.closePath();\n\n  };\n\n  return SausagePath;\n}(Path);\n\nexport default SausagePath;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { calculateTextPosition } from 'zrender/lib/contain/text.js';\nimport { isArray, isNumber } from 'zrender/lib/core/util.js';\nexport function createSectorCalculateTextPosition(positionMapping, opts) {\n  opts = opts || {};\n  var isRoundCap = opts.isRoundCap;\n  return function (out, opts, boundingRect) {\n    var textPosition = opts.position;\n\n    if (!textPosition || textPosition instanceof Array) {\n      return calculateTextPosition(out, opts, boundingRect);\n    }\n\n    var mappedSectorPosition = positionMapping(textPosition);\n    var distance = opts.distance != null ? opts.distance : 5;\n    var sector = this.shape;\n    var cx = sector.cx;\n    var cy = sector.cy;\n    var r = sector.r;\n    var r0 = sector.r0;\n    var middleR = (r + r0) / 2;\n    var startAngle = sector.startAngle;\n    var endAngle = sector.endAngle;\n    var middleAngle = (startAngle + endAngle) / 2;\n    var extraDist = isRoundCap ? Math.abs(r - r0) / 2 : 0;\n    var mathCos = Math.cos;\n    var mathSin = Math.sin; // base position: top-left\n\n    var x = cx + r * mathCos(startAngle);\n    var y = cy + r * mathSin(startAngle);\n    var textAlign = 'left';\n    var textVerticalAlign = 'top';\n\n    switch (mappedSectorPosition) {\n      case 'startArc':\n        x = cx + (r0 - distance) * mathCos(middleAngle);\n        y = cy + (r0 - distance) * mathSin(middleAngle);\n        textAlign = 'center';\n        textVerticalAlign = 'top';\n        break;\n\n      case 'insideStartArc':\n        x = cx + (r0 + distance) * mathCos(middleAngle);\n        y = cy + (r0 + distance) * mathSin(middleAngle);\n        textAlign = 'center';\n        textVerticalAlign = 'bottom';\n        break;\n\n      case 'startAngle':\n        x = cx + middleR * mathCos(startAngle) + adjustAngleDistanceX(startAngle, distance + extraDist, false);\n        y = cy + middleR * mathSin(startAngle) + adjustAngleDistanceY(startAngle, distance + extraDist, false);\n        textAlign = 'right';\n        textVerticalAlign = 'middle';\n        break;\n\n      case 'insideStartAngle':\n        x = cx + middleR * mathCos(startAngle) + adjustAngleDistanceX(startAngle, -distance + extraDist, false);\n        y = cy + middleR * mathSin(startAngle) + adjustAngleDistanceY(startAngle, -distance + extraDist, false);\n        textAlign = 'left';\n        textVerticalAlign = 'middle';\n        break;\n\n      case 'middle':\n        x = cx + middleR * mathCos(middleAngle);\n        y = cy + middleR * mathSin(middleAngle);\n        textAlign = 'center';\n        textVerticalAlign = 'middle';\n        break;\n\n      case 'endArc':\n        x = cx + (r + distance) * mathCos(middleAngle);\n        y = cy + (r + distance) * mathSin(middleAngle);\n        textAlign = 'center';\n        textVerticalAlign = 'bottom';\n        break;\n\n      case 'insideEndArc':\n        x = cx + (r - distance) * mathCos(middleAngle);\n        y = cy + (r - distance) * mathSin(middleAngle);\n        textAlign = 'center';\n        textVerticalAlign = 'top';\n        break;\n\n      case 'endAngle':\n        x = cx + middleR * mathCos(endAngle) + adjustAngleDistanceX(endAngle, distance + extraDist, true);\n        y = cy + middleR * mathSin(endAngle) + adjustAngleDistanceY(endAngle, distance + extraDist, true);\n        textAlign = 'left';\n        textVerticalAlign = 'middle';\n        break;\n\n      case 'insideEndAngle':\n        x = cx + middleR * mathCos(endAngle) + adjustAngleDistanceX(endAngle, -distance + extraDist, true);\n        y = cy + middleR * mathSin(endAngle) + adjustAngleDistanceY(endAngle, -distance + extraDist, true);\n        textAlign = 'right';\n        textVerticalAlign = 'middle';\n        break;\n\n      default:\n        return calculateTextPosition(out, opts, boundingRect);\n    }\n\n    out = out || {};\n    out.x = x;\n    out.y = y;\n    out.align = textAlign;\n    out.verticalAlign = textVerticalAlign;\n    return out;\n  };\n}\nexport function setSectorTextRotation(sector, textPosition, positionMapping, rotateType) {\n  if (isNumber(rotateType)) {\n    // user-set rotation\n    sector.setTextConfig({\n      rotation: rotateType\n    });\n    return;\n  } else if (isArray(textPosition)) {\n    // user-set position, use 0 as auto rotation\n    sector.setTextConfig({\n      rotation: 0\n    });\n    return;\n  }\n\n  var shape = sector.shape;\n  var startAngle = shape.clockwise ? shape.startAngle : shape.endAngle;\n  var endAngle = shape.clockwise ? shape.endAngle : shape.startAngle;\n  var middleAngle = (startAngle + endAngle) / 2;\n  var anchorAngle;\n  var mappedSectorPosition = positionMapping(textPosition);\n\n  switch (mappedSectorPosition) {\n    case 'startArc':\n    case 'insideStartArc':\n    case 'middle':\n    case 'insideEndArc':\n    case 'endArc':\n      anchorAngle = middleAngle;\n      break;\n\n    case 'startAngle':\n    case 'insideStartAngle':\n      anchorAngle = startAngle;\n      break;\n\n    case 'endAngle':\n    case 'insideEndAngle':\n      anchorAngle = endAngle;\n      break;\n\n    default:\n      sector.setTextConfig({\n        rotation: 0\n      });\n      return;\n  }\n\n  var rotate = Math.PI * 1.5 - anchorAngle;\n  /**\r\n   * TODO: labels with rotate > Math.PI / 2 should be rotate another\r\n   * half round flipped to increase readability. However, only middle\r\n   * position supports this for now, because in other positions, the\r\n   * anchor point is not at the center of the text, so the positions\r\n   * after rotating is not as expected.\r\n   */\n\n  if (mappedSectorPosition === 'middle' && rotate > Math.PI / 2 && rotate < Math.PI * 1.5) {\n    rotate -= Math.PI;\n  }\n\n  sector.setTextConfig({\n    rotation: rotate\n  });\n}\n\nfunction adjustAngleDistanceX(angle, distance, isEnd) {\n  return distance * Math.sin(angle) * (isEnd ? -1 : 1);\n}\n\nfunction adjustAngleDistanceY(angle, distance, isEnd) {\n  return distance * Math.cos(angle) * (isEnd ? 1 : -1);\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { isArray, map } from 'zrender/lib/core/util.js';\nimport { parsePercent } from 'zrender/lib/contain/text.js';\nexport function getSectorCornerRadius(model, shape, zeroIfNull) {\n  var cornerRadius = model.get('borderRadius');\n\n  if (cornerRadius == null) {\n    return zeroIfNull ? {\n      cornerRadius: 0\n    } : null;\n  }\n\n  if (!isArray(cornerRadius)) {\n    cornerRadius = [cornerRadius, cornerRadius, cornerRadius, cornerRadius];\n  }\n\n  var dr = Math.abs(shape.r || 0 - shape.r0 || 0);\n  return {\n    cornerRadius: map(cornerRadius, function (cr) {\n      return parsePercent(cr, dr);\n    })\n  };\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { __extends } from \"tslib\";\nimport Path from 'zrender/lib/graphic/Path.js';\nimport Group from 'zrender/lib/graphic/Group.js';\nimport { extend, each, map } from 'zrender/lib/core/util.js';\nimport { Rect, Sector, updateProps, initProps, removeElementWithFadeOut, traverseElements } from '../../util/graphic.js';\nimport { getECData } from '../../util/innerStore.js';\nimport { setStatesStylesFromModel, toggleHoverEmphasis } from '../../util/states.js';\nimport { setLabelStyle, getLabelStatesModels, setLabelValueAnimation, labelInner } from '../../label/labelStyle.js';\nimport { throttle } from '../../util/throttle.js';\nimport { createClipPath } from '../helper/createClipPathFromCoordSys.js';\nimport Sausage from '../../util/shape/sausage.js';\nimport ChartView from '../../view/Chart.js';\nimport { isCoordinateSystemType } from '../../coord/CoordinateSystem.js';\nimport { getDefaultLabel, getDefaultInterpolatedLabel } from '../helper/labelHelper.js';\nimport { warn } from '../../util/log.js';\nimport { createSectorCalculateTextPosition, setSectorTextRotation } from '../../label/sectorLabel.js';\nimport { saveOldStyle } from '../../animation/basicTransition.js';\nimport { getSectorCornerRadius } from '../helper/sectorHelper.js';\nvar mathMax = Math.max;\nvar mathMin = Math.min;\n\nfunction getClipArea(coord, data) {\n  var coordSysClipArea = coord.getArea && coord.getArea();\n\n  if (isCoordinateSystemType(coord, 'cartesian2d')) {\n    var baseAxis = coord.getBaseAxis(); // When boundaryGap is false or using time axis. bar may exceed the grid.\n    // We should not clip this part.\n    // See test/bar2.html\n\n    if (baseAxis.type !== 'category' || !baseAxis.onBand) {\n      var expandWidth = data.getLayout('bandWidth');\n\n      if (baseAxis.isHorizontal()) {\n        coordSysClipArea.x -= expandWidth;\n        coordSysClipArea.width += expandWidth * 2;\n      } else {\n        coordSysClipArea.y -= expandWidth;\n        coordSysClipArea.height += expandWidth * 2;\n      }\n    }\n  }\n\n  return coordSysClipArea;\n}\n\nvar BarView =\n/** @class */\nfunction (_super) {\n  __extends(BarView, _super);\n\n  function BarView() {\n    var _this = _super.call(this) || this;\n\n    _this.type = BarView.type;\n    _this._isFirstFrame = true;\n    return _this;\n  }\n\n  BarView.prototype.render = function (seriesModel, ecModel, api, payload) {\n    this._model = seriesModel;\n\n    this._removeOnRenderedListener(api);\n\n    this._updateDrawMode(seriesModel);\n\n    var coordinateSystemType = seriesModel.get('coordinateSystem');\n\n    if (coordinateSystemType === 'cartesian2d' || coordinateSystemType === 'polar') {\n      // Clear previously rendered progressive elements.\n      this._progressiveEls = null;\n      this._isLargeDraw ? this._renderLarge(seriesModel, ecModel, api) : this._renderNormal(seriesModel, ecModel, api, payload);\n    } else if (process.env.NODE_ENV !== 'production') {\n      warn('Only cartesian2d and polar supported for bar.');\n    }\n  };\n\n  BarView.prototype.incrementalPrepareRender = function (seriesModel) {\n    this._clear();\n\n    this._updateDrawMode(seriesModel); // incremental also need to clip, otherwise might be overlow.\n    // But must not set clip in each frame, otherwise all of the children will be marked redraw.\n\n\n    this._updateLargeClip(seriesModel);\n  };\n\n  BarView.prototype.incrementalRender = function (params, seriesModel) {\n    // Reset\n    this._progressiveEls = []; // Do not support progressive in normal mode.\n\n    this._incrementalRenderLarge(params, seriesModel);\n  };\n\n  BarView.prototype.eachRendered = function (cb) {\n    traverseElements(this._progressiveEls || this.group, cb);\n  };\n\n  BarView.prototype._updateDrawMode = function (seriesModel) {\n    var isLargeDraw = seriesModel.pipelineContext.large;\n\n    if (this._isLargeDraw == null || isLargeDraw !== this._isLargeDraw) {\n      this._isLargeDraw = isLargeDraw;\n\n      this._clear();\n    }\n  };\n\n  BarView.prototype._renderNormal = function (seriesModel, ecModel, api, payload) {\n    var group = this.group;\n    var data = seriesModel.getData();\n    var oldData = this._data;\n    var coord = seriesModel.coordinateSystem;\n    var baseAxis = coord.getBaseAxis();\n    var isHorizontalOrRadial;\n\n    if (coord.type === 'cartesian2d') {\n      isHorizontalOrRadial = baseAxis.isHorizontal();\n    } else if (coord.type === 'polar') {\n      isHorizontalOrRadial = baseAxis.dim === 'angle';\n    }\n\n    var animationModel = seriesModel.isAnimationEnabled() ? seriesModel : null;\n    var realtimeSortCfg = shouldRealtimeSort(seriesModel, coord);\n\n    if (realtimeSortCfg) {\n      this._enableRealtimeSort(realtimeSortCfg, data, api);\n    }\n\n    var needsClip = seriesModel.get('clip', true) || realtimeSortCfg;\n    var coordSysClipArea = getClipArea(coord, data); // If there is clipPath created in large mode. Remove it.\n\n    group.removeClipPath(); // We don't use clipPath in normal mode because we needs a perfect animation\n    // And don't want the label are clipped.\n\n    var roundCap = seriesModel.get('roundCap', true);\n    var drawBackground = seriesModel.get('showBackground', true);\n    var backgroundModel = seriesModel.getModel('backgroundStyle');\n    var barBorderRadius = backgroundModel.get('borderRadius') || 0;\n    var bgEls = [];\n    var oldBgEls = this._backgroundEls;\n    var isInitSort = payload && payload.isInitSort;\n    var isChangeOrder = payload && payload.type === 'changeAxisOrder';\n\n    function createBackground(dataIndex) {\n      var bgLayout = getLayout[coord.type](data, dataIndex);\n      var bgEl = createBackgroundEl(coord, isHorizontalOrRadial, bgLayout);\n      bgEl.useStyle(backgroundModel.getItemStyle()); // Only cartesian2d support borderRadius.\n\n      if (coord.type === 'cartesian2d') {\n        bgEl.setShape('r', barBorderRadius);\n      } else {\n        bgEl.setShape('cornerRadius', barBorderRadius);\n      }\n\n      bgEls[dataIndex] = bgEl;\n      return bgEl;\n    }\n\n    ;\n    data.diff(oldData).add(function (dataIndex) {\n      var itemModel = data.getItemModel(dataIndex);\n      var layout = getLayout[coord.type](data, dataIndex, itemModel);\n\n      if (drawBackground) {\n        createBackground(dataIndex);\n      } // If dataZoom in filteMode: 'empty', the baseValue can be set as NaN in \"axisProxy\".\n\n\n      if (!data.hasValue(dataIndex) || !isValidLayout[coord.type](layout)) {\n        return;\n      }\n\n      var isClipped = false;\n\n      if (needsClip) {\n        // Clip will modify the layout params.\n        // And return a boolean to determine if the shape are fully clipped.\n        isClipped = clip[coord.type](coordSysClipArea, layout);\n      }\n\n      var el = elementCreator[coord.type](seriesModel, data, dataIndex, layout, isHorizontalOrRadial, animationModel, baseAxis.model, false, roundCap);\n\n      if (realtimeSortCfg) {\n        /**\r\n         * Force label animation because even if the element is\r\n         * ignored because it's clipped, it may not be clipped after\r\n         * changing order. Then, if not using forceLabelAnimation,\r\n         * the label animation was never started, in which case,\r\n         * the label will be the final value and doesn't have label\r\n         * animation.\r\n         */\n        el.forceLabelAnimation = true;\n      }\n\n      updateStyle(el, data, dataIndex, itemModel, layout, seriesModel, isHorizontalOrRadial, coord.type === 'polar');\n\n      if (isInitSort) {\n        el.attr({\n          shape: layout\n        });\n      } else if (realtimeSortCfg) {\n        updateRealtimeAnimation(realtimeSortCfg, animationModel, el, layout, dataIndex, isHorizontalOrRadial, false, false);\n      } else {\n        initProps(el, {\n          shape: layout\n        }, seriesModel, dataIndex);\n      }\n\n      data.setItemGraphicEl(dataIndex, el);\n      group.add(el);\n      el.ignore = isClipped;\n    }).update(function (newIndex, oldIndex) {\n      var itemModel = data.getItemModel(newIndex);\n      var layout = getLayout[coord.type](data, newIndex, itemModel);\n\n      if (drawBackground) {\n        var bgEl = void 0;\n\n        if (oldBgEls.length === 0) {\n          bgEl = createBackground(oldIndex);\n        } else {\n          bgEl = oldBgEls[oldIndex];\n          bgEl.useStyle(backgroundModel.getItemStyle()); // Only cartesian2d support borderRadius.\n\n          if (coord.type === 'cartesian2d') {\n            bgEl.setShape('r', barBorderRadius);\n          } else {\n            bgEl.setShape('cornerRadius', barBorderRadius);\n          }\n\n          bgEls[newIndex] = bgEl;\n        }\n\n        var bgLayout = getLayout[coord.type](data, newIndex);\n        var shape = createBackgroundShape(isHorizontalOrRadial, bgLayout, coord);\n        updateProps(bgEl, {\n          shape: shape\n        }, animationModel, newIndex);\n      }\n\n      var el = oldData.getItemGraphicEl(oldIndex);\n\n      if (!data.hasValue(newIndex) || !isValidLayout[coord.type](layout)) {\n        group.remove(el);\n        return;\n      }\n\n      var isClipped = false;\n\n      if (needsClip) {\n        isClipped = clip[coord.type](coordSysClipArea, layout);\n\n        if (isClipped) {\n          group.remove(el);\n        }\n      }\n\n      if (!el) {\n        el = elementCreator[coord.type](seriesModel, data, newIndex, layout, isHorizontalOrRadial, animationModel, baseAxis.model, !!el, roundCap);\n      } else {\n        saveOldStyle(el);\n      }\n\n      if (realtimeSortCfg) {\n        el.forceLabelAnimation = true;\n      }\n\n      if (isChangeOrder) {\n        var textEl = el.getTextContent();\n\n        if (textEl) {\n          var labelInnerStore = labelInner(textEl);\n\n          if (labelInnerStore.prevValue != null) {\n            /**\r\n             * Set preValue to be value so that no new label\r\n             * should be started, otherwise, it will take a full\r\n             * `animationDurationUpdate` time to finish the\r\n             * animation, which is not expected.\r\n             */\n            labelInnerStore.prevValue = labelInnerStore.value;\n          }\n        }\n      } // Not change anything if only order changed.\n      // Especially not change label.\n      else {\n          updateStyle(el, data, newIndex, itemModel, layout, seriesModel, isHorizontalOrRadial, coord.type === 'polar');\n        }\n\n      if (isInitSort) {\n        el.attr({\n          shape: layout\n        });\n      } else if (realtimeSortCfg) {\n        updateRealtimeAnimation(realtimeSortCfg, animationModel, el, layout, newIndex, isHorizontalOrRadial, true, isChangeOrder);\n      } else {\n        updateProps(el, {\n          shape: layout\n        }, seriesModel, newIndex, null);\n      }\n\n      data.setItemGraphicEl(newIndex, el);\n      el.ignore = isClipped;\n      group.add(el);\n    }).remove(function (dataIndex) {\n      var el = oldData.getItemGraphicEl(dataIndex);\n      el && removeElementWithFadeOut(el, seriesModel, dataIndex);\n    }).execute();\n    var bgGroup = this._backgroundGroup || (this._backgroundGroup = new Group());\n    bgGroup.removeAll();\n\n    for (var i = 0; i < bgEls.length; ++i) {\n      bgGroup.add(bgEls[i]);\n    }\n\n    group.add(bgGroup);\n    this._backgroundEls = bgEls;\n    this._data = data;\n  };\n\n  BarView.prototype._renderLarge = function (seriesModel, ecModel, api) {\n    this._clear();\n\n    createLarge(seriesModel, this.group);\n\n    this._updateLargeClip(seriesModel);\n  };\n\n  BarView.prototype._incrementalRenderLarge = function (params, seriesModel) {\n    this._removeBackground();\n\n    createLarge(seriesModel, this.group, this._progressiveEls, true);\n  };\n\n  BarView.prototype._updateLargeClip = function (seriesModel) {\n    // Use clipPath in large mode.\n    var clipPath = seriesModel.get('clip', true) && createClipPath(seriesModel.coordinateSystem, false, seriesModel);\n    var group = this.group;\n\n    if (clipPath) {\n      group.setClipPath(clipPath);\n    } else {\n      group.removeClipPath();\n    }\n  };\n\n  BarView.prototype._enableRealtimeSort = function (realtimeSortCfg, data, api) {\n    var _this = this; // If no data in the first frame, wait for data to initSort\n\n\n    if (!data.count()) {\n      return;\n    }\n\n    var baseAxis = realtimeSortCfg.baseAxis;\n\n    if (this._isFirstFrame) {\n      this._dispatchInitSort(data, realtimeSortCfg, api);\n\n      this._isFirstFrame = false;\n    } else {\n      var orderMapping_1 = function (idx) {\n        var el = data.getItemGraphicEl(idx);\n        var shape = el && el.shape;\n        return shape && // The result should be consistent with the initial sort by data value.\n        // Do not support the case that both positive and negative exist.\n        Math.abs(baseAxis.isHorizontal() ? shape.height : shape.width) // If data is NaN, shape.xxx may be NaN, so use || 0 here in case\n        || 0;\n      };\n\n      this._onRendered = function () {\n        _this._updateSortWithinSameData(data, orderMapping_1, baseAxis, api);\n      };\n\n      api.getZr().on('rendered', this._onRendered);\n    }\n  };\n\n  BarView.prototype._dataSort = function (data, baseAxis, orderMapping) {\n    var info = [];\n    data.each(data.mapDimension(baseAxis.dim), function (ordinalNumber, dataIdx) {\n      var mappedValue = orderMapping(dataIdx);\n      mappedValue = mappedValue == null ? NaN : mappedValue;\n      info.push({\n        dataIndex: dataIdx,\n        mappedValue: mappedValue,\n        ordinalNumber: ordinalNumber\n      });\n    });\n    info.sort(function (a, b) {\n      // If NaN, it will be treated as min val.\n      return b.mappedValue - a.mappedValue;\n    });\n    return {\n      ordinalNumbers: map(info, function (item) {\n        return item.ordinalNumber;\n      })\n    };\n  };\n\n  BarView.prototype._isOrderChangedWithinSameData = function (data, orderMapping, baseAxis) {\n    var scale = baseAxis.scale;\n    var ordinalDataDim = data.mapDimension(baseAxis.dim);\n    var lastValue = Number.MAX_VALUE;\n\n    for (var tickNum = 0, len = scale.getOrdinalMeta().categories.length; tickNum < len; ++tickNum) {\n      var rawIdx = data.rawIndexOf(ordinalDataDim, scale.getRawOrdinalNumber(tickNum));\n      var value = rawIdx < 0 // If some tick have no bar, the tick will be treated as min.\n      ? Number.MIN_VALUE // PENDING: if dataZoom on baseAxis exits, is it a performance issue?\n      : orderMapping(data.indexOfRawIndex(rawIdx));\n\n      if (value > lastValue) {\n        return true;\n      }\n\n      lastValue = value;\n    }\n\n    return false;\n  };\n  /*\r\n   * Consider the case when A and B changed order, whose representing\r\n   * bars are both out of sight, we don't wish to trigger reorder action\r\n   * as long as the order in the view doesn't change.\r\n   */\n\n\n  BarView.prototype._isOrderDifferentInView = function (orderInfo, baseAxis) {\n    var scale = baseAxis.scale;\n    var extent = scale.getExtent();\n    var tickNum = Math.max(0, extent[0]);\n    var tickMax = Math.min(extent[1], scale.getOrdinalMeta().categories.length - 1);\n\n    for (; tickNum <= tickMax; ++tickNum) {\n      if (orderInfo.ordinalNumbers[tickNum] !== scale.getRawOrdinalNumber(tickNum)) {\n        return true;\n      }\n    }\n  };\n\n  BarView.prototype._updateSortWithinSameData = function (data, orderMapping, baseAxis, api) {\n    if (!this._isOrderChangedWithinSameData(data, orderMapping, baseAxis)) {\n      return;\n    }\n\n    var sortInfo = this._dataSort(data, baseAxis, orderMapping);\n\n    if (this._isOrderDifferentInView(sortInfo, baseAxis)) {\n      this._removeOnRenderedListener(api);\n\n      api.dispatchAction({\n        type: 'changeAxisOrder',\n        componentType: baseAxis.dim + 'Axis',\n        axisId: baseAxis.index,\n        sortInfo: sortInfo\n      });\n    }\n  };\n\n  BarView.prototype._dispatchInitSort = function (data, realtimeSortCfg, api) {\n    var baseAxis = realtimeSortCfg.baseAxis;\n\n    var sortResult = this._dataSort(data, baseAxis, function (dataIdx) {\n      return data.get(data.mapDimension(realtimeSortCfg.otherAxis.dim), dataIdx);\n    });\n\n    api.dispatchAction({\n      type: 'changeAxisOrder',\n      componentType: baseAxis.dim + 'Axis',\n      isInitSort: true,\n      axisId: baseAxis.index,\n      sortInfo: sortResult\n    });\n  };\n\n  BarView.prototype.remove = function (ecModel, api) {\n    this._clear(this._model);\n\n    this._removeOnRenderedListener(api);\n  };\n\n  BarView.prototype.dispose = function (ecModel, api) {\n    this._removeOnRenderedListener(api);\n  };\n\n  BarView.prototype._removeOnRenderedListener = function (api) {\n    if (this._onRendered) {\n      api.getZr().off('rendered', this._onRendered);\n      this._onRendered = null;\n    }\n  };\n\n  BarView.prototype._clear = function (model) {\n    var group = this.group;\n    var data = this._data;\n\n    if (model && model.isAnimationEnabled() && data && !this._isLargeDraw) {\n      this._removeBackground();\n\n      this._backgroundEls = [];\n      data.eachItemGraphicEl(function (el) {\n        removeElementWithFadeOut(el, model, getECData(el).dataIndex);\n      });\n    } else {\n      group.removeAll();\n    }\n\n    this._data = null;\n    this._isFirstFrame = true;\n  };\n\n  BarView.prototype._removeBackground = function () {\n    this.group.remove(this._backgroundGroup);\n    this._backgroundGroup = null;\n  };\n\n  BarView.type = 'bar';\n  return BarView;\n}(ChartView);\n\nvar clip = {\n  cartesian2d: function (coordSysBoundingRect, layout) {\n    var signWidth = layout.width < 0 ? -1 : 1;\n    var signHeight = layout.height < 0 ? -1 : 1; // Needs positive width and height\n\n    if (signWidth < 0) {\n      layout.x += layout.width;\n      layout.width = -layout.width;\n    }\n\n    if (signHeight < 0) {\n      layout.y += layout.height;\n      layout.height = -layout.height;\n    }\n\n    var coordSysX2 = coordSysBoundingRect.x + coordSysBoundingRect.width;\n    var coordSysY2 = coordSysBoundingRect.y + coordSysBoundingRect.height;\n    var x = mathMax(layout.x, coordSysBoundingRect.x);\n    var x2 = mathMin(layout.x + layout.width, coordSysX2);\n    var y = mathMax(layout.y, coordSysBoundingRect.y);\n    var y2 = mathMin(layout.y + layout.height, coordSysY2);\n    var xClipped = x2 < x;\n    var yClipped = y2 < y; // When xClipped or yClipped, the element will be marked as `ignore`.\n    // But we should also place the element at the edge of the coord sys bounding rect.\n    // Because if data changed and the bar shows again, its transition animation\n    // will begin at this place.\n\n    layout.x = xClipped && x > coordSysX2 ? x2 : x;\n    layout.y = yClipped && y > coordSysY2 ? y2 : y;\n    layout.width = xClipped ? 0 : x2 - x;\n    layout.height = yClipped ? 0 : y2 - y; // Reverse back\n\n    if (signWidth < 0) {\n      layout.x += layout.width;\n      layout.width = -layout.width;\n    }\n\n    if (signHeight < 0) {\n      layout.y += layout.height;\n      layout.height = -layout.height;\n    }\n\n    return xClipped || yClipped;\n  },\n  polar: function (coordSysClipArea, layout) {\n    var signR = layout.r0 <= layout.r ? 1 : -1; // Make sure r is larger than r0\n\n    if (signR < 0) {\n      var tmp = layout.r;\n      layout.r = layout.r0;\n      layout.r0 = tmp;\n    }\n\n    var r = mathMin(layout.r, coordSysClipArea.r);\n    var r0 = mathMax(layout.r0, coordSysClipArea.r0);\n    layout.r = r;\n    layout.r0 = r0;\n    var clipped = r - r0 < 0; // Reverse back\n\n    if (signR < 0) {\n      var tmp = layout.r;\n      layout.r = layout.r0;\n      layout.r0 = tmp;\n    }\n\n    return clipped;\n  }\n};\nvar elementCreator = {\n  cartesian2d: function (seriesModel, data, newIndex, layout, isHorizontal, animationModel, axisModel, isUpdate, roundCap) {\n    var rect = new Rect({\n      shape: extend({}, layout),\n      z2: 1\n    });\n    rect.__dataIndex = newIndex;\n    rect.name = 'item';\n\n    if (animationModel) {\n      var rectShape = rect.shape;\n      var animateProperty = isHorizontal ? 'height' : 'width';\n      rectShape[animateProperty] = 0;\n    }\n\n    return rect;\n  },\n  polar: function (seriesModel, data, newIndex, layout, isRadial, animationModel, axisModel, isUpdate, roundCap) {\n    var ShapeClass = !isRadial && roundCap ? Sausage : Sector;\n    var sector = new ShapeClass({\n      shape: layout,\n      z2: 1\n    });\n    sector.name = 'item';\n    var positionMap = createPolarPositionMapping(isRadial);\n    sector.calculateTextPosition = createSectorCalculateTextPosition(positionMap, {\n      isRoundCap: ShapeClass === Sausage\n    }); // Animation\n\n    if (animationModel) {\n      var sectorShape = sector.shape;\n      var animateProperty = isRadial ? 'r' : 'endAngle';\n      var animateTarget = {};\n      sectorShape[animateProperty] = isRadial ? layout.r0 : layout.startAngle;\n      animateTarget[animateProperty] = layout[animateProperty];\n      (isUpdate ? updateProps : initProps)(sector, {\n        shape: animateTarget // __value: typeof dataValue === 'string' ? parseInt(dataValue, 10) : dataValue\n\n      }, animationModel);\n    }\n\n    return sector;\n  }\n};\n\nfunction shouldRealtimeSort(seriesModel, coordSys) {\n  var realtimeSortOption = seriesModel.get('realtimeSort', true);\n  var baseAxis = coordSys.getBaseAxis();\n\n  if (process.env.NODE_ENV !== 'production') {\n    if (realtimeSortOption) {\n      if (baseAxis.type !== 'category') {\n        warn('`realtimeSort` will not work because this bar series is not based on a category axis.');\n      }\n\n      if (coordSys.type !== 'cartesian2d') {\n        warn('`realtimeSort` will not work because this bar series is not on cartesian2d.');\n      }\n    }\n  }\n\n  if (realtimeSortOption && baseAxis.type === 'category' && coordSys.type === 'cartesian2d') {\n    return {\n      baseAxis: baseAxis,\n      otherAxis: coordSys.getOtherAxis(baseAxis)\n    };\n  }\n}\n\nfunction updateRealtimeAnimation(realtimeSortCfg, seriesAnimationModel, el, layout, newIndex, isHorizontal, isUpdate, isChangeOrder) {\n  var seriesTarget;\n  var axisTarget;\n\n  if (isHorizontal) {\n    axisTarget = {\n      x: layout.x,\n      width: layout.width\n    };\n    seriesTarget = {\n      y: layout.y,\n      height: layout.height\n    };\n  } else {\n    axisTarget = {\n      y: layout.y,\n      height: layout.height\n    };\n    seriesTarget = {\n      x: layout.x,\n      width: layout.width\n    };\n  }\n\n  if (!isChangeOrder) {\n    // Keep the original growth animation if only axis order changed.\n    // Not start a new animation.\n    (isUpdate ? updateProps : initProps)(el, {\n      shape: seriesTarget\n    }, seriesAnimationModel, newIndex, null);\n  }\n\n  var axisAnimationModel = seriesAnimationModel ? realtimeSortCfg.baseAxis.model : null;\n  (isUpdate ? updateProps : initProps)(el, {\n    shape: axisTarget\n  }, axisAnimationModel, newIndex);\n}\n\nfunction checkPropertiesNotValid(obj, props) {\n  for (var i = 0; i < props.length; i++) {\n    if (!isFinite(obj[props[i]])) {\n      return true;\n    }\n  }\n\n  return false;\n}\n\nvar rectPropties = ['x', 'y', 'width', 'height'];\nvar polarPropties = ['cx', 'cy', 'r', 'startAngle', 'endAngle'];\nvar isValidLayout = {\n  cartesian2d: function (layout) {\n    return !checkPropertiesNotValid(layout, rectPropties);\n  },\n  polar: function (layout) {\n    return !checkPropertiesNotValid(layout, polarPropties);\n  }\n};\nvar getLayout = {\n  // itemModel is only used to get borderWidth, which is not needed\n  // when calculating bar background layout.\n  cartesian2d: function (data, dataIndex, itemModel) {\n    var layout = data.getItemLayout(dataIndex);\n    var fixedLineWidth = itemModel ? getLineWidth(itemModel, layout) : 0; // fix layout with lineWidth\n\n    var signX = layout.width > 0 ? 1 : -1;\n    var signY = layout.height > 0 ? 1 : -1;\n    return {\n      x: layout.x + signX * fixedLineWidth / 2,\n      y: layout.y + signY * fixedLineWidth / 2,\n      width: layout.width - signX * fixedLineWidth,\n      height: layout.height - signY * fixedLineWidth\n    };\n  },\n  polar: function (data, dataIndex, itemModel) {\n    var layout = data.getItemLayout(dataIndex);\n    return {\n      cx: layout.cx,\n      cy: layout.cy,\n      r0: layout.r0,\n      r: layout.r,\n      startAngle: layout.startAngle,\n      endAngle: layout.endAngle,\n      clockwise: layout.clockwise\n    };\n  }\n};\n\nfunction isZeroOnPolar(layout) {\n  return layout.startAngle != null && layout.endAngle != null && layout.startAngle === layout.endAngle;\n}\n\nfunction createPolarPositionMapping(isRadial) {\n  return function (isRadial) {\n    var arcOrAngle = isRadial ? 'Arc' : 'Angle';\n    return function (position) {\n      switch (position) {\n        case 'start':\n        case 'insideStart':\n        case 'end':\n        case 'insideEnd':\n          return position + arcOrAngle;\n\n        default:\n          return position;\n      }\n    };\n  }(isRadial);\n}\n\nfunction updateStyle(el, data, dataIndex, itemModel, layout, seriesModel, isHorizontalOrRadial, isPolar) {\n  var style = data.getItemVisual(dataIndex, 'style');\n\n  if (!isPolar) {\n    var borderRadius = itemModel.get(['itemStyle', 'borderRadius']) || 0;\n    el.setShape('r', borderRadius);\n  } else if (!seriesModel.get('roundCap')) {\n    var sectorShape = el.shape;\n    var cornerRadius = getSectorCornerRadius(itemModel.getModel('itemStyle'), sectorShape, true);\n    extend(sectorShape, cornerRadius);\n    el.setShape(sectorShape);\n  }\n\n  el.useStyle(style);\n  var cursorStyle = itemModel.getShallow('cursor');\n  cursorStyle && el.attr('cursor', cursorStyle);\n  var labelPositionOutside = isPolar ? isHorizontalOrRadial ? layout.r >= layout.r0 ? 'endArc' : 'startArc' : layout.endAngle >= layout.startAngle ? 'endAngle' : 'startAngle' : isHorizontalOrRadial ? layout.height >= 0 ? 'bottom' : 'top' : layout.width >= 0 ? 'right' : 'left';\n  var labelStatesModels = getLabelStatesModels(itemModel);\n  setLabelStyle(el, labelStatesModels, {\n    labelFetcher: seriesModel,\n    labelDataIndex: dataIndex,\n    defaultText: getDefaultLabel(seriesModel.getData(), dataIndex),\n    inheritColor: style.fill,\n    defaultOpacity: style.opacity,\n    defaultOutsidePosition: labelPositionOutside\n  });\n  var label = el.getTextContent();\n\n  if (isPolar && label) {\n    var position = itemModel.get(['label', 'position']);\n    el.textConfig.inside = position === 'middle' ? true : null;\n    setSectorTextRotation(el, position === 'outside' ? labelPositionOutside : position, createPolarPositionMapping(isHorizontalOrRadial), itemModel.get(['label', 'rotate']));\n  }\n\n  setLabelValueAnimation(label, labelStatesModels, seriesModel.getRawValue(dataIndex), function (value) {\n    return getDefaultInterpolatedLabel(data, value);\n  });\n  var emphasisModel = itemModel.getModel(['emphasis']);\n  toggleHoverEmphasis(el, emphasisModel.get('focus'), emphasisModel.get('blurScope'), emphasisModel.get('disabled'));\n  setStatesStylesFromModel(el, itemModel);\n\n  if (isZeroOnPolar(layout)) {\n    el.style.fill = 'none';\n    el.style.stroke = 'none';\n    each(el.states, function (state) {\n      if (state.style) {\n        state.style.fill = state.style.stroke = 'none';\n      }\n    });\n  }\n} // In case width or height are too small.\n\n\nfunction getLineWidth(itemModel, rawLayout) {\n  // Has no border.\n  var borderColor = itemModel.get(['itemStyle', 'borderColor']);\n\n  if (!borderColor || borderColor === 'none') {\n    return 0;\n  }\n\n  var lineWidth = itemModel.get(['itemStyle', 'borderWidth']) || 0; // width or height may be NaN for empty data\n\n  var width = isNaN(rawLayout.width) ? Number.MAX_VALUE : Math.abs(rawLayout.width);\n  var height = isNaN(rawLayout.height) ? Number.MAX_VALUE : Math.abs(rawLayout.height);\n  return Math.min(lineWidth, width, height);\n}\n\nvar LagePathShape =\n/** @class */\nfunction () {\n  function LagePathShape() {}\n\n  return LagePathShape;\n}();\n\nvar LargePath =\n/** @class */\nfunction (_super) {\n  __extends(LargePath, _super);\n\n  function LargePath(opts) {\n    var _this = _super.call(this, opts) || this;\n\n    _this.type = 'largeBar';\n    return _this;\n  }\n\n  LargePath.prototype.getDefaultShape = function () {\n    return new LagePathShape();\n  };\n\n  LargePath.prototype.buildPath = function (ctx, shape) {\n    // Drawing lines is more efficient than drawing\n    // a whole line or drawing rects.\n    var points = shape.points;\n    var baseDimIdx = this.baseDimIdx;\n    var valueDimIdx = 1 - this.baseDimIdx;\n    var startPoint = [];\n    var size = [];\n    var barWidth = this.barWidth;\n\n    for (var i = 0; i < points.length; i += 3) {\n      size[baseDimIdx] = barWidth;\n      size[valueDimIdx] = points[i + 2];\n      startPoint[baseDimIdx] = points[i + baseDimIdx];\n      startPoint[valueDimIdx] = points[i + valueDimIdx];\n      ctx.rect(startPoint[0], startPoint[1], size[0], size[1]);\n    }\n  };\n\n  return LargePath;\n}(Path);\n\nfunction createLarge(seriesModel, group, progressiveEls, incremental) {\n  // TODO support polar\n  var data = seriesModel.getData();\n  var baseDimIdx = data.getLayout('valueAxisHorizontal') ? 1 : 0;\n  var largeDataIndices = data.getLayout('largeDataIndices');\n  var barWidth = data.getLayout('size');\n  var backgroundModel = seriesModel.getModel('backgroundStyle');\n  var bgPoints = data.getLayout('largeBackgroundPoints');\n\n  if (bgPoints) {\n    var bgEl = new LargePath({\n      shape: {\n        points: bgPoints\n      },\n      incremental: !!incremental,\n      silent: true,\n      z2: 0\n    });\n    bgEl.baseDimIdx = baseDimIdx;\n    bgEl.largeDataIndices = largeDataIndices;\n    bgEl.barWidth = barWidth;\n    bgEl.useStyle(backgroundModel.getItemStyle());\n    group.add(bgEl);\n    progressiveEls && progressiveEls.push(bgEl);\n  }\n\n  var el = new LargePath({\n    shape: {\n      points: data.getLayout('largePoints')\n    },\n    incremental: !!incremental,\n    ignoreCoarsePointer: true,\n    z2: 1\n  });\n  el.baseDimIdx = baseDimIdx;\n  el.largeDataIndices = largeDataIndices;\n  el.barWidth = barWidth;\n  group.add(el);\n  el.useStyle(data.getVisual('style')); // Enable tooltip and user mouse/touch event handlers.\n\n  getECData(el).seriesIndex = seriesModel.seriesIndex;\n\n  if (!seriesModel.get('silent')) {\n    el.on('mousedown', largePathUpdateDataIndex);\n    el.on('mousemove', largePathUpdateDataIndex);\n  }\n\n  progressiveEls && progressiveEls.push(el);\n} // Use throttle to avoid frequently traverse to find dataIndex.\n\n\nvar largePathUpdateDataIndex = throttle(function (event) {\n  var largePath = this;\n  var dataIndex = largePathFindDataIndex(largePath, event.offsetX, event.offsetY);\n  getECData(largePath).dataIndex = dataIndex >= 0 ? dataIndex : null;\n}, 30, false);\n\nfunction largePathFindDataIndex(largePath, x, y) {\n  var baseDimIdx = largePath.baseDimIdx;\n  var valueDimIdx = 1 - baseDimIdx;\n  var points = largePath.shape.points;\n  var largeDataIndices = largePath.largeDataIndices;\n  var startPoint = [];\n  var size = [];\n  var barWidth = largePath.barWidth;\n\n  for (var i = 0, len = points.length / 3; i < len; i++) {\n    var ii = i * 3;\n    size[baseDimIdx] = barWidth;\n    size[valueDimIdx] = points[ii + 2];\n    startPoint[baseDimIdx] = points[ii + baseDimIdx];\n    startPoint[valueDimIdx] = points[ii + valueDimIdx];\n\n    if (size[valueDimIdx] < 0) {\n      startPoint[valueDimIdx] += size[valueDimIdx];\n      size[valueDimIdx] = -size[valueDimIdx];\n    }\n\n    if (x >= startPoint[0] && x <= startPoint[0] + size[0] && y >= startPoint[1] && y <= startPoint[1] + size[1]) {\n      return largeDataIndices[i];\n    }\n  }\n\n  return -1;\n}\n\nfunction createBackgroundShape(isHorizontalOrRadial, layout, coord) {\n  if (isCoordinateSystemType(coord, 'cartesian2d')) {\n    var rectShape = layout;\n    var coordLayout = coord.getArea();\n    return {\n      x: isHorizontalOrRadial ? rectShape.x : coordLayout.x,\n      y: isHorizontalOrRadial ? coordLayout.y : rectShape.y,\n      width: isHorizontalOrRadial ? rectShape.width : coordLayout.width,\n      height: isHorizontalOrRadial ? coordLayout.height : rectShape.height\n    };\n  } else {\n    var coordLayout = coord.getArea();\n    var sectorShape = layout;\n    return {\n      cx: coordLayout.cx,\n      cy: coordLayout.cy,\n      r0: isHorizontalOrRadial ? coordLayout.r0 : sectorShape.r0,\n      r: isHorizontalOrRadial ? coordLayout.r : sectorShape.r,\n      startAngle: isHorizontalOrRadial ? sectorShape.startAngle : 0,\n      endAngle: isHorizontalOrRadial ? sectorShape.endAngle : Math.PI * 2\n    };\n  }\n}\n\nfunction createBackgroundEl(coord, isHorizontalOrRadial, layout) {\n  var ElementClz = coord.type === 'polar' ? Sector : Rect;\n  return new ElementClz({\n    shape: createBackgroundShape(isHorizontalOrRadial, layout, coord),\n    silent: true,\n    z2: 0\n  });\n}\n\nexport default BarView;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { parsePercent, linearMap } from '../../util/number.js';\nimport * as layout from '../../util/layout.js';\nimport * as zrUtil from 'zrender/lib/core/util.js';\nvar PI2 = Math.PI * 2;\nvar RADIAN = Math.PI / 180;\n\nfunction getViewRect(seriesModel, api) {\n  return layout.getLayoutRect(seriesModel.getBoxLayoutParams(), {\n    width: api.getWidth(),\n    height: api.getHeight()\n  });\n}\n\nexport function getBasicPieLayout(seriesModel, api) {\n  var viewRect = getViewRect(seriesModel, api); // center can be string or number when coordinateSystem is specified\n\n  var center = seriesModel.get('center');\n  var radius = seriesModel.get('radius');\n\n  if (!zrUtil.isArray(radius)) {\n    radius = [0, radius];\n  }\n\n  var width = parsePercent(viewRect.width, api.getWidth());\n  var height = parsePercent(viewRect.height, api.getHeight());\n  var size = Math.min(width, height);\n  var r0 = parsePercent(radius[0], size / 2);\n  var r = parsePercent(radius[1], size / 2);\n  var cx;\n  var cy;\n  var coordSys = seriesModel.coordinateSystem;\n\n  if (coordSys) {\n    // percentage is not allowed when coordinate system is specified\n    var point = coordSys.dataToPoint(center);\n    cx = point[0] || 0;\n    cy = point[1] || 0;\n  } else {\n    if (!zrUtil.isArray(center)) {\n      center = [center, center];\n    }\n\n    cx = parsePercent(center[0], width) + viewRect.x;\n    cy = parsePercent(center[1], height) + viewRect.y;\n  }\n\n  return {\n    cx: cx,\n    cy: cy,\n    r0: r0,\n    r: r\n  };\n}\nexport default function pieLayout(seriesType, ecModel, api) {\n  ecModel.eachSeriesByType(seriesType, function (seriesModel) {\n    var data = seriesModel.getData();\n    var valueDim = data.mapDimension('value');\n    var viewRect = getViewRect(seriesModel, api);\n\n    var _a = getBasicPieLayout(seriesModel, api),\n        cx = _a.cx,\n        cy = _a.cy,\n        r = _a.r,\n        r0 = _a.r0;\n\n    var startAngle = -seriesModel.get('startAngle') * RADIAN;\n    var minAngle = seriesModel.get('minAngle') * RADIAN;\n    var validDataCount = 0;\n    data.each(valueDim, function (value) {\n      !isNaN(value) && validDataCount++;\n    });\n    var sum = data.getSum(valueDim); // Sum may be 0\n\n    var unitRadian = Math.PI / (sum || validDataCount) * 2;\n    var clockwise = seriesModel.get('clockwise');\n    var roseType = seriesModel.get('roseType');\n    var stillShowZeroSum = seriesModel.get('stillShowZeroSum'); // [0...max]\n\n    var extent = data.getDataExtent(valueDim);\n    extent[0] = 0; // In the case some sector angle is smaller than minAngle\n\n    var restAngle = PI2;\n    var valueSumLargerThanMinAngle = 0;\n    var currentAngle = startAngle;\n    var dir = clockwise ? 1 : -1;\n    data.setLayout({\n      viewRect: viewRect,\n      r: r\n    });\n    data.each(valueDim, function (value, idx) {\n      var angle;\n\n      if (isNaN(value)) {\n        data.setItemLayout(idx, {\n          angle: NaN,\n          startAngle: NaN,\n          endAngle: NaN,\n          clockwise: clockwise,\n          cx: cx,\n          cy: cy,\n          r0: r0,\n          r: roseType ? NaN : r\n        });\n        return;\n      } // FIXME 兼容 2.0 但是 roseType 是 area 的时候才是这样？\n\n\n      if (roseType !== 'area') {\n        angle = sum === 0 && stillShowZeroSum ? unitRadian : value * unitRadian;\n      } else {\n        angle = PI2 / validDataCount;\n      }\n\n      if (angle < minAngle) {\n        angle = minAngle;\n        restAngle -= minAngle;\n      } else {\n        valueSumLargerThanMinAngle += value;\n      }\n\n      var endAngle = currentAngle + dir * angle;\n      data.setItemLayout(idx, {\n        angle: angle,\n        startAngle: currentAngle,\n        endAngle: endAngle,\n        clockwise: clockwise,\n        cx: cx,\n        cy: cy,\n        r0: r0,\n        r: roseType ? linearMap(value, extent, [r0, r]) : r\n      });\n      currentAngle = endAngle;\n    }); // Some sector is constrained by minAngle\n    // Rest sectors needs recalculate angle\n\n    if (restAngle < PI2 && validDataCount) {\n      // Average the angle if rest angle is not enough after all angles is\n      // Constrained by minAngle\n      if (restAngle <= 1e-3) {\n        var angle_1 = PI2 / validDataCount;\n        data.each(valueDim, function (value, idx) {\n          if (!isNaN(value)) {\n            var layout_1 = data.getItemLayout(idx);\n            layout_1.angle = angle_1;\n            layout_1.startAngle = startAngle + dir * idx * angle_1;\n            layout_1.endAngle = startAngle + dir * (idx + 1) * angle_1;\n          }\n        });\n      } else {\n        unitRadian = restAngle / valueSumLargerThanMinAngle;\n        currentAngle = startAngle;\n        data.each(valueDim, function (value, idx) {\n          if (!isNaN(value)) {\n            var layout_2 = data.getItemLayout(idx);\n            var angle = layout_2.angle === minAngle ? minAngle : value * unitRadian;\n            layout_2.startAngle = currentAngle;\n            layout_2.endAngle = currentAngle + dir * angle;\n            currentAngle += dir * angle;\n          }\n        });\n      }\n    }\n  });\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nexport default function dataFilter(seriesType) {\n  return {\n    seriesType: seriesType,\n    reset: function (seriesModel, ecModel) {\n      var legendModels = ecModel.findComponents({\n        mainType: 'legend'\n      });\n\n      if (!legendModels || !legendModels.length) {\n        return;\n      }\n\n      var data = seriesModel.getData();\n      data.filterSelf(function (idx) {\n        var name = data.getName(idx); // If in any legend component the status is not selected.\n\n        for (var i = 0; i < legendModels.length; i++) {\n          // @ts-ignore FIXME: LegendModel\n          if (!legendModels[i].isSelected(name)) {\n            return false;\n          }\n        }\n\n        return true;\n      });\n    }\n  };\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\n// FIXME emphasis label position is not same with normal label position\nimport { parsePercent } from '../../util/number.js';\nimport { Point } from '../../util/graphic.js';\nimport { each, isNumber } from 'zrender/lib/core/util.js';\nimport { limitTurnAngle, limitSurfaceAngle } from '../../label/labelGuideHelper.js';\nimport { shiftLayoutOnY } from '../../label/labelLayoutHelper.js';\nvar RADIAN = Math.PI / 180;\n\nfunction adjustSingleSide(list, cx, cy, r, dir, viewWidth, viewHeight, viewLeft, viewTop, farthestX) {\n  if (list.length < 2) {\n    return;\n  }\n\n  ;\n\n  function recalculateXOnSemiToAlignOnEllipseCurve(semi) {\n    var rB = semi.rB;\n    var rB2 = rB * rB;\n\n    for (var i = 0; i < semi.list.length; i++) {\n      var item = semi.list[i];\n      var dy = Math.abs(item.label.y - cy); // horizontal r is always same with original r because x is not changed.\n\n      var rA = r + item.len;\n      var rA2 = rA * rA; // Use ellipse implicit function to calculate x\n\n      var dx = Math.sqrt((1 - Math.abs(dy * dy / rB2)) * rA2);\n      var newX = cx + (dx + item.len2) * dir;\n      var deltaX = newX - item.label.x;\n      var newTargetWidth = item.targetTextWidth - deltaX * dir; // text x is changed, so need to recalculate width.\n\n      constrainTextWidth(item, newTargetWidth, true);\n      item.label.x = newX;\n    }\n  } // Adjust X based on the shifted y. Make tight labels aligned on an ellipse curve.\n\n\n  function recalculateX(items) {\n    // Extremes of\n    var topSemi = {\n      list: [],\n      maxY: 0\n    };\n    var bottomSemi = {\n      list: [],\n      maxY: 0\n    };\n\n    for (var i = 0; i < items.length; i++) {\n      if (items[i].labelAlignTo !== 'none') {\n        continue;\n      }\n\n      var item = items[i];\n      var semi = item.label.y > cy ? bottomSemi : topSemi;\n      var dy = Math.abs(item.label.y - cy);\n\n      if (dy >= semi.maxY) {\n        var dx = item.label.x - cx - item.len2 * dir; // horizontal r is always same with original r because x is not changed.\n\n        var rA = r + item.len; // Canculate rB based on the topest / bottemest label.\n\n        var rB = Math.abs(dx) < rA ? Math.sqrt(dy * dy / (1 - dx * dx / rA / rA)) : rA;\n        semi.rB = rB;\n        semi.maxY = dy;\n      }\n\n      semi.list.push(item);\n    }\n\n    recalculateXOnSemiToAlignOnEllipseCurve(topSemi);\n    recalculateXOnSemiToAlignOnEllipseCurve(bottomSemi);\n  }\n\n  var len = list.length;\n\n  for (var i = 0; i < len; i++) {\n    if (list[i].position === 'outer' && list[i].labelAlignTo === 'labelLine') {\n      var dx = list[i].label.x - farthestX;\n      list[i].linePoints[1][0] += dx;\n      list[i].label.x = farthestX;\n    }\n  }\n\n  if (shiftLayoutOnY(list, viewTop, viewTop + viewHeight)) {\n    recalculateX(list);\n  }\n}\n\nfunction avoidOverlap(labelLayoutList, cx, cy, r, viewWidth, viewHeight, viewLeft, viewTop) {\n  var leftList = [];\n  var rightList = [];\n  var leftmostX = Number.MAX_VALUE;\n  var rightmostX = -Number.MAX_VALUE;\n\n  for (var i = 0; i < labelLayoutList.length; i++) {\n    var label = labelLayoutList[i].label;\n\n    if (isPositionCenter(labelLayoutList[i])) {\n      continue;\n    }\n\n    if (label.x < cx) {\n      leftmostX = Math.min(leftmostX, label.x);\n      leftList.push(labelLayoutList[i]);\n    } else {\n      rightmostX = Math.max(rightmostX, label.x);\n      rightList.push(labelLayoutList[i]);\n    }\n  }\n\n  for (var i = 0; i < labelLayoutList.length; i++) {\n    var layout = labelLayoutList[i];\n\n    if (!isPositionCenter(layout) && layout.linePoints) {\n      if (layout.labelStyleWidth != null) {\n        continue;\n      }\n\n      var label = layout.label;\n      var linePoints = layout.linePoints;\n      var targetTextWidth = void 0;\n\n      if (layout.labelAlignTo === 'edge') {\n        if (label.x < cx) {\n          targetTextWidth = linePoints[2][0] - layout.labelDistance - viewLeft - layout.edgeDistance;\n        } else {\n          targetTextWidth = viewLeft + viewWidth - layout.edgeDistance - linePoints[2][0] - layout.labelDistance;\n        }\n      } else if (layout.labelAlignTo === 'labelLine') {\n        if (label.x < cx) {\n          targetTextWidth = leftmostX - viewLeft - layout.bleedMargin;\n        } else {\n          targetTextWidth = viewLeft + viewWidth - rightmostX - layout.bleedMargin;\n        }\n      } else {\n        if (label.x < cx) {\n          targetTextWidth = label.x - viewLeft - layout.bleedMargin;\n        } else {\n          targetTextWidth = viewLeft + viewWidth - label.x - layout.bleedMargin;\n        }\n      }\n\n      layout.targetTextWidth = targetTextWidth;\n      constrainTextWidth(layout, targetTextWidth);\n    }\n  }\n\n  adjustSingleSide(rightList, cx, cy, r, 1, viewWidth, viewHeight, viewLeft, viewTop, rightmostX);\n  adjustSingleSide(leftList, cx, cy, r, -1, viewWidth, viewHeight, viewLeft, viewTop, leftmostX);\n\n  for (var i = 0; i < labelLayoutList.length; i++) {\n    var layout = labelLayoutList[i];\n\n    if (!isPositionCenter(layout) && layout.linePoints) {\n      var label = layout.label;\n      var linePoints = layout.linePoints;\n      var isAlignToEdge = layout.labelAlignTo === 'edge';\n      var padding = label.style.padding;\n      var paddingH = padding ? padding[1] + padding[3] : 0; // textRect.width already contains paddingH if bgColor is set\n\n      var extraPaddingH = label.style.backgroundColor ? 0 : paddingH;\n      var realTextWidth = layout.rect.width + extraPaddingH;\n      var dist = linePoints[1][0] - linePoints[2][0];\n\n      if (isAlignToEdge) {\n        if (label.x < cx) {\n          linePoints[2][0] = viewLeft + layout.edgeDistance + realTextWidth + layout.labelDistance;\n        } else {\n          linePoints[2][0] = viewLeft + viewWidth - layout.edgeDistance - realTextWidth - layout.labelDistance;\n        }\n      } else {\n        if (label.x < cx) {\n          linePoints[2][0] = label.x + layout.labelDistance;\n        } else {\n          linePoints[2][0] = label.x - layout.labelDistance;\n        }\n\n        linePoints[1][0] = linePoints[2][0] + dist;\n      }\n\n      linePoints[1][1] = linePoints[2][1] = label.y;\n    }\n  }\n}\n/**\r\n * Set max width of each label, and then wrap each label to the max width.\r\n *\r\n * @param layout label layout\r\n * @param availableWidth max width for the label to display\r\n * @param forceRecalculate recaculate the text layout even if the current width\r\n * is smaller than `availableWidth`. This is useful when the text was previously\r\n * wrapped by calling `constrainTextWidth` but now `availableWidth` changed, in\r\n * which case, previous wrapping should be redo.\r\n */\n\n\nfunction constrainTextWidth(layout, availableWidth, forceRecalculate) {\n  if (forceRecalculate === void 0) {\n    forceRecalculate = false;\n  }\n\n  if (layout.labelStyleWidth != null) {\n    // User-defined style.width has the highest priority.\n    return;\n  }\n\n  var label = layout.label;\n  var style = label.style;\n  var textRect = layout.rect;\n  var bgColor = style.backgroundColor;\n  var padding = style.padding;\n  var paddingH = padding ? padding[1] + padding[3] : 0;\n  var overflow = style.overflow; // textRect.width already contains paddingH if bgColor is set\n\n  var oldOuterWidth = textRect.width + (bgColor ? 0 : paddingH);\n\n  if (availableWidth < oldOuterWidth || forceRecalculate) {\n    var oldHeight = textRect.height;\n\n    if (overflow && overflow.match('break')) {\n      // Temporarily set background to be null to calculate\n      // the bounding box without background.\n      label.setStyle('backgroundColor', null); // Set constraining width\n\n      label.setStyle('width', availableWidth - paddingH); // This is the real bounding box of the text without padding.\n\n      var innerRect = label.getBoundingRect();\n      label.setStyle('width', Math.ceil(innerRect.width));\n      label.setStyle('backgroundColor', bgColor);\n    } else {\n      var availableInnerWidth = availableWidth - paddingH;\n      var newWidth = availableWidth < oldOuterWidth // Current text is too wide, use `availableWidth` as max width.\n      ? availableInnerWidth : // Current available width is enough, but the text may have\n      // already been wrapped with a smaller available width.\n      forceRecalculate ? availableInnerWidth > layout.unconstrainedWidth // Current available is larger than text width,\n      // so don't constrain width (otherwise it may have\n      // empty space in the background).\n      ? null // Current available is smaller than text width, so\n      // use the current available width as constraining\n      // width.\n      : availableInnerWidth : // Current available width is enough, so no need to\n      // constrain.\n      null;\n      label.setStyle('width', newWidth);\n    }\n\n    var newRect = label.getBoundingRect();\n    textRect.width = newRect.width;\n    var margin = (label.style.margin || 0) + 2.1;\n    textRect.height = newRect.height + margin;\n    textRect.y -= (textRect.height - oldHeight) / 2;\n  }\n}\n\nfunction isPositionCenter(sectorShape) {\n  // Not change x for center label\n  return sectorShape.position === 'center';\n}\n\nexport default function pieLabelLayout(seriesModel) {\n  var data = seriesModel.getData();\n  var labelLayoutList = [];\n  var cx;\n  var cy;\n  var hasLabelRotate = false;\n  var minShowLabelRadian = (seriesModel.get('minShowLabelAngle') || 0) * RADIAN;\n  var viewRect = data.getLayout('viewRect');\n  var r = data.getLayout('r');\n  var viewWidth = viewRect.width;\n  var viewLeft = viewRect.x;\n  var viewTop = viewRect.y;\n  var viewHeight = viewRect.height;\n\n  function setNotShow(el) {\n    el.ignore = true;\n  }\n\n  function isLabelShown(label) {\n    if (!label.ignore) {\n      return true;\n    }\n\n    for (var key in label.states) {\n      if (label.states[key].ignore === false) {\n        return true;\n      }\n    }\n\n    return false;\n  }\n\n  data.each(function (idx) {\n    var sector = data.getItemGraphicEl(idx);\n    var sectorShape = sector.shape;\n    var label = sector.getTextContent();\n    var labelLine = sector.getTextGuideLine();\n    var itemModel = data.getItemModel(idx);\n    var labelModel = itemModel.getModel('label'); // Use position in normal or emphasis\n\n    var labelPosition = labelModel.get('position') || itemModel.get(['emphasis', 'label', 'position']);\n    var labelDistance = labelModel.get('distanceToLabelLine');\n    var labelAlignTo = labelModel.get('alignTo');\n    var edgeDistance = parsePercent(labelModel.get('edgeDistance'), viewWidth);\n    var bleedMargin = labelModel.get('bleedMargin');\n    var labelLineModel = itemModel.getModel('labelLine');\n    var labelLineLen = labelLineModel.get('length');\n    labelLineLen = parsePercent(labelLineLen, viewWidth);\n    var labelLineLen2 = labelLineModel.get('length2');\n    labelLineLen2 = parsePercent(labelLineLen2, viewWidth);\n\n    if (Math.abs(sectorShape.endAngle - sectorShape.startAngle) < minShowLabelRadian) {\n      each(label.states, setNotShow);\n      label.ignore = true;\n\n      if (labelLine) {\n        each(labelLine.states, setNotShow);\n        labelLine.ignore = true;\n      }\n\n      return;\n    }\n\n    if (!isLabelShown(label)) {\n      return;\n    }\n\n    var midAngle = (sectorShape.startAngle + sectorShape.endAngle) / 2;\n    var nx = Math.cos(midAngle);\n    var ny = Math.sin(midAngle);\n    var textX;\n    var textY;\n    var linePoints;\n    var textAlign;\n    cx = sectorShape.cx;\n    cy = sectorShape.cy;\n    var isLabelInside = labelPosition === 'inside' || labelPosition === 'inner';\n\n    if (labelPosition === 'center') {\n      textX = sectorShape.cx;\n      textY = sectorShape.cy;\n      textAlign = 'center';\n    } else {\n      var x1 = (isLabelInside ? (sectorShape.r + sectorShape.r0) / 2 * nx : sectorShape.r * nx) + cx;\n      var y1 = (isLabelInside ? (sectorShape.r + sectorShape.r0) / 2 * ny : sectorShape.r * ny) + cy;\n      textX = x1 + nx * 3;\n      textY = y1 + ny * 3;\n\n      if (!isLabelInside) {\n        // For roseType\n        var x2 = x1 + nx * (labelLineLen + r - sectorShape.r);\n        var y2 = y1 + ny * (labelLineLen + r - sectorShape.r);\n        var x3 = x2 + (nx < 0 ? -1 : 1) * labelLineLen2;\n        var y3 = y2;\n\n        if (labelAlignTo === 'edge') {\n          // Adjust textX because text align of edge is opposite\n          textX = nx < 0 ? viewLeft + edgeDistance : viewLeft + viewWidth - edgeDistance;\n        } else {\n          textX = x3 + (nx < 0 ? -labelDistance : labelDistance);\n        }\n\n        textY = y3;\n        linePoints = [[x1, y1], [x2, y2], [x3, y3]];\n      }\n\n      textAlign = isLabelInside ? 'center' : labelAlignTo === 'edge' ? nx > 0 ? 'right' : 'left' : nx > 0 ? 'left' : 'right';\n    }\n\n    var PI = Math.PI;\n    var labelRotate = 0;\n    var rotate = labelModel.get('rotate');\n\n    if (isNumber(rotate)) {\n      labelRotate = rotate * (PI / 180);\n    } else if (labelPosition === 'center') {\n      labelRotate = 0;\n    } else if (rotate === 'radial' || rotate === true) {\n      var radialAngle = nx < 0 ? -midAngle + PI : -midAngle;\n      labelRotate = radialAngle;\n    } else if (rotate === 'tangential' && labelPosition !== 'outside' && labelPosition !== 'outer') {\n      var rad = Math.atan2(nx, ny);\n\n      if (rad < 0) {\n        rad = PI * 2 + rad;\n      }\n\n      var isDown = ny > 0;\n\n      if (isDown) {\n        rad = PI + rad;\n      }\n\n      labelRotate = rad - PI;\n    }\n\n    hasLabelRotate = !!labelRotate;\n    label.x = textX;\n    label.y = textY;\n    label.rotation = labelRotate;\n    label.setStyle({\n      verticalAlign: 'middle'\n    }); // Not sectorShape the inside label\n\n    if (!isLabelInside) {\n      var textRect = label.getBoundingRect().clone();\n      textRect.applyTransform(label.getComputedTransform()); // Text has a default 1px stroke. Exclude this.\n\n      var margin = (label.style.margin || 0) + 2.1;\n      textRect.y -= margin / 2;\n      textRect.height += margin;\n      labelLayoutList.push({\n        label: label,\n        labelLine: labelLine,\n        position: labelPosition,\n        len: labelLineLen,\n        len2: labelLineLen2,\n        minTurnAngle: labelLineModel.get('minTurnAngle'),\n        maxSurfaceAngle: labelLineModel.get('maxSurfaceAngle'),\n        surfaceNormal: new Point(nx, ny),\n        linePoints: linePoints,\n        textAlign: textAlign,\n        labelDistance: labelDistance,\n        labelAlignTo: labelAlignTo,\n        edgeDistance: edgeDistance,\n        bleedMargin: bleedMargin,\n        rect: textRect,\n        unconstrainedWidth: textRect.width,\n        labelStyleWidth: label.style.width\n      });\n    } else {\n      label.setStyle({\n        align: textAlign\n      });\n      var selectState = label.states.select;\n\n      if (selectState) {\n        selectState.x += label.x;\n        selectState.y += label.y;\n      }\n    }\n\n    sector.setTextConfig({\n      inside: isLabelInside\n    });\n  });\n\n  if (!hasLabelRotate && seriesModel.get('avoidLabelOverlap')) {\n    avoidOverlap(labelLayoutList, cx, cy, r, viewWidth, viewHeight, viewLeft, viewTop);\n  }\n\n  for (var i = 0; i < labelLayoutList.length; i++) {\n    var layout = labelLayoutList[i];\n    var label = layout.label;\n    var labelLine = layout.labelLine;\n    var notShowLabel = isNaN(label.x) || isNaN(label.y);\n\n    if (label) {\n      label.setStyle({\n        align: layout.textAlign\n      });\n\n      if (notShowLabel) {\n        each(label.states, setNotShow);\n        label.ignore = true;\n      }\n\n      var selectState = label.states.select;\n\n      if (selectState) {\n        selectState.x += label.x;\n        selectState.y += label.y;\n      }\n    }\n\n    if (labelLine) {\n      var linePoints = layout.linePoints;\n\n      if (notShowLabel || !linePoints) {\n        each(labelLine.states, setNotShow);\n        labelLine.ignore = true;\n      } else {\n        limitTurnAngle(linePoints, layout.minTurnAngle);\n        limitSurfaceAngle(linePoints, layout.surfaceNormal, layout.maxSurfaceAngle);\n        labelLine.setShape({\n          points: linePoints\n        }); // Set the anchor to the midpoint of sector\n\n        label.__hostTarget.textGuideLineConfig = {\n          anchor: new Point(linePoints[0][0], linePoints[0][1])\n        };\n      }\n    }\n  }\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { __extends } from \"tslib\";\nimport { extend, retrieve3 } from 'zrender/lib/core/util.js';\nimport * as graphic from '../../util/graphic.js';\nimport { setStatesStylesFromModel, toggleHoverEmphasis } from '../../util/states.js';\nimport ChartView from '../../view/Chart.js';\nimport labelLayout from './labelLayout.js';\nimport { setLabelLineStyle, getLabelLineStatesModels } from '../../label/labelGuideHelper.js';\nimport { setLabelStyle, getLabelStatesModels } from '../../label/labelStyle.js';\nimport { getSectorCornerRadius } from '../helper/sectorHelper.js';\nimport { saveOldStyle } from '../../animation/basicTransition.js';\nimport { getBasicPieLayout } from './pieLayout.js';\n/**\r\n * Piece of pie including Sector, Label, LabelLine\r\n */\n\nvar PiePiece =\n/** @class */\nfunction (_super) {\n  __extends(PiePiece, _super);\n\n  function PiePiece(data, idx, startAngle) {\n    var _this = _super.call(this) || this;\n\n    _this.z2 = 2;\n    var text = new graphic.Text();\n\n    _this.setTextContent(text);\n\n    _this.updateData(data, idx, startAngle, true);\n\n    return _this;\n  }\n\n  PiePiece.prototype.updateData = function (data, idx, startAngle, firstCreate) {\n    var sector = this;\n    var seriesModel = data.hostModel;\n    var itemModel = data.getItemModel(idx);\n    var emphasisModel = itemModel.getModel('emphasis');\n    var layout = data.getItemLayout(idx); // cornerRadius & innerCornerRadius doesn't exist in the item layout. Use `0` if null value is specified.\n    // see `setItemLayout` in `pieLayout.ts`.\n\n    var sectorShape = extend(getSectorCornerRadius(itemModel.getModel('itemStyle'), layout, true), layout); // Ignore NaN data.\n\n    if (isNaN(sectorShape.startAngle)) {\n      // Use NaN shape to avoid drawing shape.\n      sector.setShape(sectorShape);\n      return;\n    }\n\n    if (firstCreate) {\n      sector.setShape(sectorShape);\n      var animationType = seriesModel.getShallow('animationType');\n\n      if (seriesModel.ecModel.ssr) {\n        // Use scale animation in SSR mode(opacity?)\n        // Because CSS SVG animation doesn't support very customized shape animation.\n        graphic.initProps(sector, {\n          scaleX: 0,\n          scaleY: 0\n        }, seriesModel, {\n          dataIndex: idx,\n          isFrom: true\n        });\n        sector.originX = sectorShape.cx;\n        sector.originY = sectorShape.cy;\n      } else if (animationType === 'scale') {\n        sector.shape.r = layout.r0;\n        graphic.initProps(sector, {\n          shape: {\n            r: layout.r\n          }\n        }, seriesModel, idx);\n      } // Expansion\n      else {\n          if (startAngle != null) {\n            sector.setShape({\n              startAngle: startAngle,\n              endAngle: startAngle\n            });\n            graphic.initProps(sector, {\n              shape: {\n                startAngle: layout.startAngle,\n                endAngle: layout.endAngle\n              }\n            }, seriesModel, idx);\n          } else {\n            sector.shape.endAngle = layout.startAngle;\n            graphic.updateProps(sector, {\n              shape: {\n                endAngle: layout.endAngle\n              }\n            }, seriesModel, idx);\n          }\n        }\n    } else {\n      saveOldStyle(sector); // Transition animation from the old shape\n\n      graphic.updateProps(sector, {\n        shape: sectorShape\n      }, seriesModel, idx);\n    }\n\n    sector.useStyle(data.getItemVisual(idx, 'style'));\n    setStatesStylesFromModel(sector, itemModel);\n    var midAngle = (layout.startAngle + layout.endAngle) / 2;\n    var offset = seriesModel.get('selectedOffset');\n    var dx = Math.cos(midAngle) * offset;\n    var dy = Math.sin(midAngle) * offset;\n    var cursorStyle = itemModel.getShallow('cursor');\n    cursorStyle && sector.attr('cursor', cursorStyle);\n\n    this._updateLabel(seriesModel, data, idx);\n\n    sector.ensureState('emphasis').shape = extend({\n      r: layout.r + (emphasisModel.get('scale') ? emphasisModel.get('scaleSize') || 0 : 0)\n    }, getSectorCornerRadius(emphasisModel.getModel('itemStyle'), layout));\n    extend(sector.ensureState('select'), {\n      x: dx,\n      y: dy,\n      shape: getSectorCornerRadius(itemModel.getModel(['select', 'itemStyle']), layout)\n    });\n    extend(sector.ensureState('blur'), {\n      shape: getSectorCornerRadius(itemModel.getModel(['blur', 'itemStyle']), layout)\n    });\n    var labelLine = sector.getTextGuideLine();\n    var labelText = sector.getTextContent();\n    labelLine && extend(labelLine.ensureState('select'), {\n      x: dx,\n      y: dy\n    }); // TODO: needs dx, dy in zrender?\n\n    extend(labelText.ensureState('select'), {\n      x: dx,\n      y: dy\n    });\n    toggleHoverEmphasis(this, emphasisModel.get('focus'), emphasisModel.get('blurScope'), emphasisModel.get('disabled'));\n  };\n\n  PiePiece.prototype._updateLabel = function (seriesModel, data, idx) {\n    var sector = this;\n    var itemModel = data.getItemModel(idx);\n    var labelLineModel = itemModel.getModel('labelLine');\n    var style = data.getItemVisual(idx, 'style');\n    var visualColor = style && style.fill;\n    var visualOpacity = style && style.opacity;\n    setLabelStyle(sector, getLabelStatesModels(itemModel), {\n      labelFetcher: data.hostModel,\n      labelDataIndex: idx,\n      inheritColor: visualColor,\n      defaultOpacity: visualOpacity,\n      defaultText: seriesModel.getFormattedLabel(idx, 'normal') || data.getName(idx)\n    });\n    var labelText = sector.getTextContent(); // Set textConfig on sector.\n\n    sector.setTextConfig({\n      // reset position, rotation\n      position: null,\n      rotation: null\n    }); // Make sure update style on labelText after setLabelStyle.\n    // Because setLabelStyle will replace a new style on it.\n\n    labelText.attr({\n      z2: 10\n    });\n    var labelPosition = seriesModel.get(['label', 'position']);\n\n    if (labelPosition !== 'outside' && labelPosition !== 'outer') {\n      sector.removeTextGuideLine();\n    } else {\n      var polyline = this.getTextGuideLine();\n\n      if (!polyline) {\n        polyline = new graphic.Polyline();\n        this.setTextGuideLine(polyline);\n      } // Default use item visual color\n\n\n      setLabelLineStyle(this, getLabelLineStatesModels(itemModel), {\n        stroke: visualColor,\n        opacity: retrieve3(labelLineModel.get(['lineStyle', 'opacity']), visualOpacity, 1)\n      });\n    }\n  };\n\n  return PiePiece;\n}(graphic.Sector); // Pie view\n\n\nvar PieView =\n/** @class */\nfunction (_super) {\n  __extends(PieView, _super);\n\n  function PieView() {\n    var _this = _super !== null && _super.apply(this, arguments) || this;\n\n    _this.ignoreLabelLineUpdate = true;\n    return _this;\n  }\n\n  PieView.prototype.render = function (seriesModel, ecModel, api, payload) {\n    var data = seriesModel.getData();\n    var oldData = this._data;\n    var group = this.group;\n    var startAngle; // First render\n\n    if (!oldData && data.count() > 0) {\n      var shape = data.getItemLayout(0);\n\n      for (var s = 1; isNaN(shape && shape.startAngle) && s < data.count(); ++s) {\n        shape = data.getItemLayout(s);\n      }\n\n      if (shape) {\n        startAngle = shape.startAngle;\n      }\n    } // remove empty-circle if it exists\n\n\n    if (this._emptyCircleSector) {\n      group.remove(this._emptyCircleSector);\n    } // when all data are filtered, show lightgray empty circle\n\n\n    if (data.count() === 0 && seriesModel.get('showEmptyCircle')) {\n      var sector = new graphic.Sector({\n        shape: getBasicPieLayout(seriesModel, api)\n      });\n      sector.useStyle(seriesModel.getModel('emptyCircleStyle').getItemStyle());\n      this._emptyCircleSector = sector;\n      group.add(sector);\n    }\n\n    data.diff(oldData).add(function (idx) {\n      var piePiece = new PiePiece(data, idx, startAngle);\n      data.setItemGraphicEl(idx, piePiece);\n      group.add(piePiece);\n    }).update(function (newIdx, oldIdx) {\n      var piePiece = oldData.getItemGraphicEl(oldIdx);\n      piePiece.updateData(data, newIdx, startAngle);\n      piePiece.off('click');\n      group.add(piePiece);\n      data.setItemGraphicEl(newIdx, piePiece);\n    }).remove(function (idx) {\n      var piePiece = oldData.getItemGraphicEl(idx);\n      graphic.removeElementWithFadeOut(piePiece, seriesModel, idx);\n    }).execute();\n    labelLayout(seriesModel); // Always use initial animation.\n\n    if (seriesModel.get('animationTypeUpdate') !== 'expansion') {\n      this._data = data;\n    }\n  };\n\n  PieView.prototype.dispose = function () {};\n\n  PieView.prototype.containPoint = function (point, seriesModel) {\n    var data = seriesModel.getData();\n    var itemLayout = data.getItemLayout(0);\n\n    if (itemLayout) {\n      var dx = point[0] - itemLayout.cx;\n      var dy = point[1] - itemLayout.cy;\n      var radius = Math.sqrt(dx * dx + dy * dy);\n      return radius <= itemLayout.r && radius >= itemLayout.r0;\n    }\n  };\n\n  PieView.type = 'pie';\n  return PieView;\n}(ChartView);\n\nexport default PieView;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport prepareSeriesDataSchema from '../../data/helper/createDimensions.js';\nimport SeriesData from '../../data/SeriesData.js';\nimport { extend, isArray } from 'zrender/lib/core/util.js';\n/**\r\n * [Usage]:\r\n * (1)\r\n * createListSimply(seriesModel, ['value']);\r\n * (2)\r\n * createListSimply(seriesModel, {\r\n *     coordDimensions: ['value'],\r\n *     dimensionsCount: 5\r\n * });\r\n */\n\nexport default function createSeriesDataSimply(seriesModel, opt, nameList) {\n  opt = isArray(opt) && {\n    coordDimensions: opt\n  } || extend({\n    encodeDefine: seriesModel.getEncode()\n  }, opt);\n  var source = seriesModel.getSource();\n  var dimensions = prepareSeriesDataSchema(source, opt).dimensions;\n  var list = new SeriesData(dimensions, seriesModel);\n  list.initData(source, nameList);\n  return list;\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\n\n/**\r\n * LegendVisualProvider is an bridge that pick encoded color from data and\r\n * provide to the legend component.\r\n */\nvar LegendVisualProvider =\n/** @class */\nfunction () {\n  function LegendVisualProvider( // Function to get data after filtered. It stores all the encoding info\n  getDataWithEncodedVisual, // Function to get raw data before filtered.\n  getRawData) {\n    this._getDataWithEncodedVisual = getDataWithEncodedVisual;\n    this._getRawData = getRawData;\n  }\n\n  LegendVisualProvider.prototype.getAllNames = function () {\n    var rawData = this._getRawData(); // We find the name from the raw data. In case it's filtered by the legend component.\n    // Normally, the name can be found in rawData, but can't be found in filtered data will display as gray.\n\n\n    return rawData.mapArray(rawData.getName);\n  };\n\n  LegendVisualProvider.prototype.containName = function (name) {\n    var rawData = this._getRawData();\n\n    return rawData.indexOfName(name) >= 0;\n  };\n\n  LegendVisualProvider.prototype.indexOfName = function (name) {\n    // Only get data when necessary.\n    // Because LegendVisualProvider constructor may be new in the stage that data is not prepared yet.\n    // Invoking Series#getData immediately will throw an error.\n    var dataWithEncodedVisual = this._getDataWithEncodedVisual();\n\n    return dataWithEncodedVisual.indexOfName(name);\n  };\n\n  LegendVisualProvider.prototype.getItemVisual = function (dataIndex, key) {\n    // Get encoded visual properties from final filtered data.\n    var dataWithEncodedVisual = this._getDataWithEncodedVisual();\n\n    return dataWithEncodedVisual.getItemVisual(dataIndex, key);\n  };\n\n  return LegendVisualProvider;\n}();\n\nexport default LegendVisualProvider;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { __extends } from \"tslib\";\nimport createSeriesDataSimply from '../helper/createSeriesDataSimply.js';\nimport * as zrUtil from 'zrender/lib/core/util.js';\nimport * as modelUtil from '../../util/model.js';\nimport { getPercentSeats } from '../../util/number.js';\nimport { makeSeriesEncodeForNameBased } from '../../data/helper/sourceHelper.js';\nimport LegendVisualProvider from '../../visual/LegendVisualProvider.js';\nimport SeriesModel from '../../model/Series.js';\nvar innerData = modelUtil.makeInner();\n\nvar PieSeriesModel =\n/** @class */\nfunction (_super) {\n  __extends(PieSeriesModel, _super);\n\n  function PieSeriesModel() {\n    return _super !== null && _super.apply(this, arguments) || this;\n  }\n  /**\r\n   * @overwrite\r\n   */\n\n\n  PieSeriesModel.prototype.init = function (option) {\n    _super.prototype.init.apply(this, arguments); // Enable legend selection for each data item\n    // Use a function instead of direct access because data reference may changed\n\n\n    this.legendVisualProvider = new LegendVisualProvider(zrUtil.bind(this.getData, this), zrUtil.bind(this.getRawData, this));\n\n    this._defaultLabelLine(option);\n  };\n  /**\r\n   * @overwrite\r\n   */\n\n\n  PieSeriesModel.prototype.mergeOption = function () {\n    _super.prototype.mergeOption.apply(this, arguments);\n  };\n  /**\r\n   * @overwrite\r\n   */\n\n\n  PieSeriesModel.prototype.getInitialData = function () {\n    return createSeriesDataSimply(this, {\n      coordDimensions: ['value'],\n      encodeDefaulter: zrUtil.curry(makeSeriesEncodeForNameBased, this)\n    });\n  };\n  /**\r\n   * @overwrite\r\n   */\n\n\n  PieSeriesModel.prototype.getDataParams = function (dataIndex) {\n    var data = this.getData(); // update seats when data is changed\n\n    var dataInner = innerData(data);\n    var seats = dataInner.seats;\n\n    if (!seats) {\n      var valueList_1 = [];\n      data.each(data.mapDimension('value'), function (value) {\n        valueList_1.push(value);\n      });\n      seats = dataInner.seats = getPercentSeats(valueList_1, data.hostModel.get('percentPrecision'));\n    }\n\n    var params = _super.prototype.getDataParams.call(this, dataIndex); // seats may be empty when sum is 0\n\n\n    params.percent = seats[dataIndex] || 0;\n    params.$vars.push('percent');\n    return params;\n  };\n\n  PieSeriesModel.prototype._defaultLabelLine = function (option) {\n    // Extend labelLine emphasis\n    modelUtil.defaultEmphasis(option, 'labelLine', ['show']);\n    var labelLineNormalOpt = option.labelLine;\n    var labelLineEmphasisOpt = option.emphasis.labelLine; // Not show label line if `label.normal.show = false`\n\n    labelLineNormalOpt.show = labelLineNormalOpt.show && option.label.show;\n    labelLineEmphasisOpt.show = labelLineEmphasisOpt.show && option.emphasis.label.show;\n  };\n\n  PieSeriesModel.type = 'series.pie';\n  PieSeriesModel.defaultOption = {\n    // zlevel: 0,\n    z: 2,\n    legendHoverLink: true,\n    colorBy: 'data',\n    // 默认全局居中\n    center: ['50%', '50%'],\n    radius: [0, '75%'],\n    // 默认顺时针\n    clockwise: true,\n    startAngle: 90,\n    // 最小角度改为0\n    minAngle: 0,\n    // If the angle of a sector less than `minShowLabelAngle`,\n    // the label will not be displayed.\n    minShowLabelAngle: 0,\n    // 选中时扇区偏移量\n    selectedOffset: 10,\n    // 选择模式，默认关闭，可选single，multiple\n    // selectedMode: false,\n    // 南丁格尔玫瑰图模式，'radius'（半径） | 'area'（面积）\n    // roseType: null,\n    percentPrecision: 2,\n    // If still show when all data zero.\n    stillShowZeroSum: true,\n    // cursor: null,\n    left: 0,\n    top: 0,\n    right: 0,\n    bottom: 0,\n    width: null,\n    height: null,\n    label: {\n      // color: 'inherit',\n      // If rotate around circle\n      rotate: 0,\n      show: true,\n      overflow: 'truncate',\n      // 'outer', 'inside', 'center'\n      position: 'outer',\n      // 'none', 'labelLine', 'edge'. Works only when position is 'outer'\n      alignTo: 'none',\n      // Closest distance between label and chart edge.\n      // Works only position is 'outer' and alignTo is 'edge'.\n      edgeDistance: '25%',\n      // Works only position is 'outer' and alignTo is not 'edge'.\n      bleedMargin: 10,\n      // Distance between text and label line.\n      distanceToLabelLine: 5 // formatter: 标签文本格式器，同 tooltip.formatter，不支持异步回调\n      // 默认使用全局文本样式，详见 textStyle\n      // distance: 当position为inner时有效，为label位置到圆心的距离与圆半径(环状图为内外半径和)的比例系数\n\n    },\n    // Enabled when label.normal.position is 'outer'\n    labelLine: {\n      show: true,\n      // 引导线两段中的第一段长度\n      length: 15,\n      // 引导线两段中的第二段长度\n      length2: 15,\n      smooth: false,\n      minTurnAngle: 90,\n      maxSurfaceAngle: 90,\n      lineStyle: {\n        // color: 各异,\n        width: 1,\n        type: 'solid'\n      }\n    },\n    itemStyle: {\n      borderWidth: 1,\n      borderJoin: 'round'\n    },\n    showEmptyCircle: true,\n    emptyCircleStyle: {\n      color: 'lightgray',\n      opacity: 1\n    },\n    labelLayout: {\n      // Hide the overlapped label.\n      hideOverlap: true\n    },\n    emphasis: {\n      scale: true,\n      scaleSize: 5\n    },\n    // If use strategy to avoid label overlapping\n    avoidLabelOverlap: true,\n    // Animation type. Valid values: expansion, scale\n    animationType: 'expansion',\n    animationDuration: 1000,\n    // Animation type when update. Valid values: transition, expansion\n    animationTypeUpdate: 'transition',\n    animationEasingUpdate: 'cubicInOut',\n    animationDurationUpdate: 500,\n    animationEasing: 'cubicInOut'\n  };\n  return PieSeriesModel;\n}(SeriesModel);\n\nexport default PieSeriesModel;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { __extends } from \"tslib\";\nimport createSeriesData from '../helper/createSeriesData.js';\nimport SeriesModel from '../../model/Series.js';\n\nvar ScatterSeriesModel =\n/** @class */\nfunction (_super) {\n  __extends(ScatterSeriesModel, _super);\n\n  function ScatterSeriesModel() {\n    var _this = _super !== null && _super.apply(this, arguments) || this;\n\n    _this.type = ScatterSeriesModel.type;\n    _this.hasSymbolVisual = true;\n    return _this;\n  }\n\n  ScatterSeriesModel.prototype.getInitialData = function (option, ecModel) {\n    return createSeriesData(null, this, {\n      useEncodeDefaulter: true\n    });\n  };\n\n  ScatterSeriesModel.prototype.getProgressive = function () {\n    var progressive = this.option.progressive;\n\n    if (progressive == null) {\n      // PENDING\n      return this.option.large ? 5e3 : this.get('progressive');\n    }\n\n    return progressive;\n  };\n\n  ScatterSeriesModel.prototype.getProgressiveThreshold = function () {\n    var progressiveThreshold = this.option.progressiveThreshold;\n\n    if (progressiveThreshold == null) {\n      // PENDING\n      return this.option.large ? 1e4 : this.get('progressiveThreshold');\n    }\n\n    return progressiveThreshold;\n  };\n\n  ScatterSeriesModel.prototype.brushSelector = function (dataIndex, data, selectors) {\n    return selectors.point(data.getItemLayout(dataIndex));\n  };\n\n  ScatterSeriesModel.prototype.getZLevelKey = function () {\n    // Each progressive series has individual key.\n    return this.getData().count() > this.getProgressiveThreshold() ? this.id : '';\n  };\n\n  ScatterSeriesModel.type = 'series.scatter';\n  ScatterSeriesModel.dependencies = ['grid', 'polar', 'geo', 'singleAxis', 'calendar'];\n  ScatterSeriesModel.defaultOption = {\n    coordinateSystem: 'cartesian2d',\n    // zlevel: 0,\n    z: 2,\n    legendHoverLink: true,\n    symbolSize: 10,\n    // symbolRotate: null,  // 图形旋转控制\n    large: false,\n    // Available when large is true\n    largeThreshold: 2000,\n    // cursor: null,\n    itemStyle: {\n      opacity: 0.8 // color: 各异\n\n    },\n    emphasis: {\n      scale: true\n    },\n    // If clip the overflow graphics\n    // Works on cartesian / polar series\n    clip: true,\n    select: {\n      itemStyle: {\n        borderColor: '#212121'\n      }\n    },\n    universalTransition: {\n      divideShape: 'clone'\n    } // progressive: null\n\n  };\n  return ScatterSeriesModel;\n}(SeriesModel);\n\nexport default ScatterSeriesModel;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { __extends } from \"tslib\";\n/* global Float32Array */\n// TODO Batch by color\n\nimport * as graphic from '../../util/graphic.js';\nimport { createSymbol } from '../../util/symbol.js';\nimport { getECData } from '../../util/innerStore.js';\nvar BOOST_SIZE_THRESHOLD = 4;\n\nvar LargeSymbolPathShape =\n/** @class */\nfunction () {\n  function LargeSymbolPathShape() {}\n\n  return LargeSymbolPathShape;\n}();\n\nvar LargeSymbolPath =\n/** @class */\nfunction (_super) {\n  __extends(LargeSymbolPath, _super);\n\n  function LargeSymbolPath(opts) {\n    var _this = _super.call(this, opts) || this;\n\n    _this._off = 0;\n    _this.hoverDataIdx = -1;\n    return _this;\n  }\n\n  LargeSymbolPath.prototype.getDefaultShape = function () {\n    return new LargeSymbolPathShape();\n  };\n\n  LargeSymbolPath.prototype.reset = function () {\n    this.notClear = false;\n    this._off = 0;\n  };\n\n  LargeSymbolPath.prototype.buildPath = function (path, shape) {\n    var points = shape.points;\n    var size = shape.size;\n    var symbolProxy = this.symbolProxy;\n    var symbolProxyShape = symbolProxy.shape;\n    var ctx = path.getContext ? path.getContext() : path;\n    var canBoost = ctx && size[0] < BOOST_SIZE_THRESHOLD;\n    var softClipShape = this.softClipShape;\n    var i; // Do draw in afterBrush.\n\n    if (canBoost) {\n      this._ctx = ctx;\n      return;\n    }\n\n    this._ctx = null;\n\n    for (i = this._off; i < points.length;) {\n      var x = points[i++];\n      var y = points[i++];\n\n      if (isNaN(x) || isNaN(y)) {\n        continue;\n      }\n\n      if (softClipShape && !softClipShape.contain(x, y)) {\n        continue;\n      }\n\n      symbolProxyShape.x = x - size[0] / 2;\n      symbolProxyShape.y = y - size[1] / 2;\n      symbolProxyShape.width = size[0];\n      symbolProxyShape.height = size[1];\n      symbolProxy.buildPath(path, symbolProxyShape, true);\n    }\n\n    if (this.incremental) {\n      this._off = i;\n      this.notClear = true;\n    }\n  };\n\n  LargeSymbolPath.prototype.afterBrush = function () {\n    var shape = this.shape;\n    var points = shape.points;\n    var size = shape.size;\n    var ctx = this._ctx;\n    var softClipShape = this.softClipShape;\n    var i;\n\n    if (!ctx) {\n      return;\n    } // PENDING If style or other canvas status changed?\n\n\n    for (i = this._off; i < points.length;) {\n      var x = points[i++];\n      var y = points[i++];\n\n      if (isNaN(x) || isNaN(y)) {\n        continue;\n      }\n\n      if (softClipShape && !softClipShape.contain(x, y)) {\n        continue;\n      } // fillRect is faster than building a rect path and draw.\n      // And it support light globalCompositeOperation.\n\n\n      ctx.fillRect(x - size[0] / 2, y - size[1] / 2, size[0], size[1]);\n    }\n\n    if (this.incremental) {\n      this._off = i;\n      this.notClear = true;\n    }\n  };\n\n  LargeSymbolPath.prototype.findDataIndex = function (x, y) {\n    // TODO ???\n    // Consider transform\n    var shape = this.shape;\n    var points = shape.points;\n    var size = shape.size;\n    var w = Math.max(size[0], 4);\n    var h = Math.max(size[1], 4); // Not consider transform\n    // Treat each element as a rect\n    // top down traverse\n\n    for (var idx = points.length / 2 - 1; idx >= 0; idx--) {\n      var i = idx * 2;\n      var x0 = points[i] - w / 2;\n      var y0 = points[i + 1] - h / 2;\n\n      if (x >= x0 && y >= y0 && x <= x0 + w && y <= y0 + h) {\n        return idx;\n      }\n    }\n\n    return -1;\n  };\n\n  LargeSymbolPath.prototype.contain = function (x, y) {\n    var localPos = this.transformCoordToLocal(x, y);\n    var rect = this.getBoundingRect();\n    x = localPos[0];\n    y = localPos[1];\n\n    if (rect.contain(x, y)) {\n      // Cache found data index.\n      var dataIdx = this.hoverDataIdx = this.findDataIndex(x, y);\n      return dataIdx >= 0;\n    }\n\n    this.hoverDataIdx = -1;\n    return false;\n  };\n\n  LargeSymbolPath.prototype.getBoundingRect = function () {\n    // Ignore stroke for large symbol draw.\n    var rect = this._rect;\n\n    if (!rect) {\n      var shape = this.shape;\n      var points = shape.points;\n      var size = shape.size;\n      var w = size[0];\n      var h = size[1];\n      var minX = Infinity;\n      var minY = Infinity;\n      var maxX = -Infinity;\n      var maxY = -Infinity;\n\n      for (var i = 0; i < points.length;) {\n        var x = points[i++];\n        var y = points[i++];\n        minX = Math.min(x, minX);\n        maxX = Math.max(x, maxX);\n        minY = Math.min(y, minY);\n        maxY = Math.max(y, maxY);\n      }\n\n      rect = this._rect = new graphic.BoundingRect(minX - w / 2, minY - h / 2, maxX - minX + w, maxY - minY + h);\n    }\n\n    return rect;\n  };\n\n  return LargeSymbolPath;\n}(graphic.Path);\n\nvar LargeSymbolDraw =\n/** @class */\nfunction () {\n  function LargeSymbolDraw() {\n    this.group = new graphic.Group();\n  }\n  /**\r\n   * Update symbols draw by new data\r\n   */\n\n\n  LargeSymbolDraw.prototype.updateData = function (data, opt) {\n    this._clear();\n\n    var symbolEl = this._create();\n\n    symbolEl.setShape({\n      points: data.getLayout('points')\n    });\n\n    this._setCommon(symbolEl, data, opt);\n  };\n\n  LargeSymbolDraw.prototype.updateLayout = function (data) {\n    var points = data.getLayout('points');\n    this.group.eachChild(function (child) {\n      if (child.startIndex != null) {\n        var len = (child.endIndex - child.startIndex) * 2;\n        var byteOffset = child.startIndex * 4 * 2;\n        points = new Float32Array(points.buffer, byteOffset, len);\n      }\n\n      child.setShape('points', points); // Reset draw cursor.\n\n      child.reset();\n    });\n  };\n\n  LargeSymbolDraw.prototype.incrementalPrepareUpdate = function (data) {\n    this._clear();\n  };\n\n  LargeSymbolDraw.prototype.incrementalUpdate = function (taskParams, data, opt) {\n    var lastAdded = this._newAdded[0];\n    var points = data.getLayout('points');\n    var oldPoints = lastAdded && lastAdded.shape.points; // Merging the exists. Each element has 1e4 points.\n    // Consider the performance balance between too much elements and too much points in one shape(may affect hover optimization)\n\n    if (oldPoints && oldPoints.length < 2e4) {\n      var oldLen = oldPoints.length;\n      var newPoints = new Float32Array(oldLen + points.length); // Concat two array\n\n      newPoints.set(oldPoints);\n      newPoints.set(points, oldLen); // Update endIndex\n\n      lastAdded.endIndex = taskParams.end;\n      lastAdded.setShape({\n        points: newPoints\n      });\n    } else {\n      // Clear\n      this._newAdded = [];\n\n      var symbolEl = this._create();\n\n      symbolEl.startIndex = taskParams.start;\n      symbolEl.endIndex = taskParams.end;\n      symbolEl.incremental = true;\n      symbolEl.setShape({\n        points: points\n      });\n\n      this._setCommon(symbolEl, data, opt);\n    }\n  };\n\n  LargeSymbolDraw.prototype.eachRendered = function (cb) {\n    this._newAdded[0] && cb(this._newAdded[0]);\n  };\n\n  LargeSymbolDraw.prototype._create = function () {\n    var symbolEl = new LargeSymbolPath({\n      cursor: 'default'\n    });\n    symbolEl.ignoreCoarsePointer = true;\n    this.group.add(symbolEl);\n\n    this._newAdded.push(symbolEl);\n\n    return symbolEl;\n  };\n\n  LargeSymbolDraw.prototype._setCommon = function (symbolEl, data, opt) {\n    var hostModel = data.hostModel;\n    opt = opt || {};\n    var size = data.getVisual('symbolSize');\n    symbolEl.setShape('size', size instanceof Array ? size : [size, size]);\n    symbolEl.softClipShape = opt.clipShape || null; // Create symbolProxy to build path for each data\n\n    symbolEl.symbolProxy = createSymbol(data.getVisual('symbol'), 0, 0, 0, 0); // Use symbolProxy setColor method\n\n    symbolEl.setColor = symbolEl.symbolProxy.setColor;\n    var extrudeShadow = symbolEl.shape.size[0] < BOOST_SIZE_THRESHOLD;\n    symbolEl.useStyle( // Draw shadow when doing fillRect is extremely slow.\n    hostModel.getModel('itemStyle').getItemStyle(extrudeShadow ? ['color', 'shadowBlur', 'shadowColor'] : ['color']));\n    var globalStyle = data.getVisual('style');\n    var visualColor = globalStyle && globalStyle.fill;\n\n    if (visualColor) {\n      symbolEl.setColor(visualColor);\n    }\n\n    var ecData = getECData(symbolEl); // Enable tooltip\n    // PENDING May have performance issue when path is extremely large\n\n    ecData.seriesIndex = hostModel.seriesIndex;\n    symbolEl.on('mousemove', function (e) {\n      ecData.dataIndex = null;\n      var dataIndex = symbolEl.hoverDataIdx;\n\n      if (dataIndex >= 0) {\n        // Provide dataIndex for tooltip\n        ecData.dataIndex = dataIndex + (symbolEl.startIndex || 0);\n      }\n    });\n  };\n\n  LargeSymbolDraw.prototype.remove = function () {\n    this._clear();\n  };\n\n  LargeSymbolDraw.prototype._clear = function () {\n    this._newAdded = [];\n    this.group.removeAll();\n  };\n\n  return LargeSymbolDraw;\n}();\n\nexport default LargeSymbolDraw;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { __extends } from \"tslib\";\nimport SymbolDraw from '../helper/SymbolDraw.js';\nimport LargeSymbolDraw from '../helper/LargeSymbolDraw.js';\nimport pointsLayout from '../../layout/points.js';\nimport ChartView from '../../view/Chart.js';\n\nvar ScatterView =\n/** @class */\nfunction (_super) {\n  __extends(ScatterView, _super);\n\n  function ScatterView() {\n    var _this = _super !== null && _super.apply(this, arguments) || this;\n\n    _this.type = ScatterView.type;\n    return _this;\n  }\n\n  ScatterView.prototype.render = function (seriesModel, ecModel, api) {\n    var data = seriesModel.getData();\n\n    var symbolDraw = this._updateSymbolDraw(data, seriesModel);\n\n    symbolDraw.updateData(data, {\n      // TODO\n      // If this parameter should be a shape or a bounding volume\n      // shape will be more general.\n      // But bounding volume like bounding rect will be much faster in the contain calculation\n      clipShape: this._getClipShape(seriesModel)\n    });\n    this._finished = true;\n  };\n\n  ScatterView.prototype.incrementalPrepareRender = function (seriesModel, ecModel, api) {\n    var data = seriesModel.getData();\n\n    var symbolDraw = this._updateSymbolDraw(data, seriesModel);\n\n    symbolDraw.incrementalPrepareUpdate(data);\n    this._finished = false;\n  };\n\n  ScatterView.prototype.incrementalRender = function (taskParams, seriesModel, ecModel) {\n    this._symbolDraw.incrementalUpdate(taskParams, seriesModel.getData(), {\n      clipShape: this._getClipShape(seriesModel)\n    });\n\n    this._finished = taskParams.end === seriesModel.getData().count();\n  };\n\n  ScatterView.prototype.updateTransform = function (seriesModel, ecModel, api) {\n    var data = seriesModel.getData(); // Must mark group dirty and make sure the incremental layer will be cleared\n    // PENDING\n\n    this.group.dirty();\n\n    if (!this._finished || data.count() > 1e4) {\n      return {\n        update: true\n      };\n    } else {\n      var res = pointsLayout('').reset(seriesModel, ecModel, api);\n\n      if (res.progress) {\n        res.progress({\n          start: 0,\n          end: data.count(),\n          count: data.count()\n        }, data);\n      }\n\n      this._symbolDraw.updateLayout(data);\n    }\n  };\n\n  ScatterView.prototype.eachRendered = function (cb) {\n    this._symbolDraw && this._symbolDraw.eachRendered(cb);\n  };\n\n  ScatterView.prototype._getClipShape = function (seriesModel) {\n    var coordSys = seriesModel.coordinateSystem;\n    var clipArea = coordSys && coordSys.getArea && coordSys.getArea();\n    return seriesModel.get('clip', true) ? clipArea : null;\n  };\n\n  ScatterView.prototype._updateSymbolDraw = function (data, seriesModel) {\n    var symbolDraw = this._symbolDraw;\n    var pipelineContext = seriesModel.pipelineContext;\n    var isLargeDraw = pipelineContext.large;\n\n    if (!symbolDraw || isLargeDraw !== this._isLargeDraw) {\n      symbolDraw && symbolDraw.remove();\n      symbolDraw = this._symbolDraw = isLargeDraw ? new LargeSymbolDraw() : new SymbolDraw();\n      this._isLargeDraw = isLargeDraw;\n      this.group.removeAll();\n    }\n\n    this.group.add(symbolDraw.group);\n    return symbolDraw;\n  };\n\n  ScatterView.prototype.remove = function (ecModel, api) {\n    this._symbolDraw && this._symbolDraw.remove(true);\n    this._symbolDraw = null;\n  };\n\n  ScatterView.prototype.dispose = function () {};\n\n  ScatterView.type = 'scatter';\n  return ScatterView;\n}(ChartView);\n\nexport default ScatterView;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { __extends } from \"tslib\";\nimport ComponentModel from '../../model/Component.js';\n\nvar GridModel =\n/** @class */\nfunction (_super) {\n  __extends(GridModel, _super);\n\n  function GridModel() {\n    return _super !== null && _super.apply(this, arguments) || this;\n  }\n\n  GridModel.type = 'grid';\n  GridModel.dependencies = ['xAxis', 'yAxis'];\n  GridModel.layoutMode = 'box';\n  GridModel.defaultOption = {\n    show: false,\n    // zlevel: 0,\n    z: 0,\n    left: '10%',\n    top: 60,\n    right: '10%',\n    bottom: 70,\n    // If grid size contain label\n    containLabel: false,\n    // width: {totalWidth} - left - right,\n    // height: {totalHeight} - top - bottom,\n    backgroundColor: 'rgba(0,0,0,0)',\n    borderWidth: 1,\n    borderColor: '#ccc'\n  };\n  return GridModel;\n}(ComponentModel);\n\nexport default GridModel;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { __extends } from \"tslib\";\nimport * as zrUtil from 'zrender/lib/core/util.js';\nimport ComponentModel from '../../model/Component.js';\nimport { AxisModelCommonMixin } from '../axisModelCommonMixin.js';\nimport { SINGLE_REFERRING } from '../../util/model.js';\n\nvar CartesianAxisModel =\n/** @class */\nfunction (_super) {\n  __extends(CartesianAxisModel, _super);\n\n  function CartesianAxisModel() {\n    return _super !== null && _super.apply(this, arguments) || this;\n  }\n\n  CartesianAxisModel.prototype.getCoordSysModel = function () {\n    return this.getReferringComponents('grid', SINGLE_REFERRING).models[0];\n  };\n\n  CartesianAxisModel.type = 'cartesian2dAxis';\n  return CartesianAxisModel;\n}(ComponentModel);\n\nexport { CartesianAxisModel };\nzrUtil.mixin(CartesianAxisModel, AxisModelCommonMixin);\nexport default CartesianAxisModel;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport * as zrUtil from 'zrender/lib/core/util.js';\nvar defaultOption = {\n  show: true,\n  // zlevel: 0,\n  z: 0,\n  // Inverse the axis.\n  inverse: false,\n  // Axis name displayed.\n  name: '',\n  // 'start' | 'middle' | 'end'\n  nameLocation: 'end',\n  // By degree. By default auto rotate by nameLocation.\n  nameRotate: null,\n  nameTruncate: {\n    maxWidth: null,\n    ellipsis: '...',\n    placeholder: '.'\n  },\n  // Use global text style by default.\n  nameTextStyle: {},\n  // The gap between axisName and axisLine.\n  nameGap: 15,\n  // Default `false` to support tooltip.\n  silent: false,\n  // Default `false` to avoid legacy user event listener fail.\n  triggerEvent: false,\n  tooltip: {\n    show: false\n  },\n  axisPointer: {},\n  axisLine: {\n    show: true,\n    onZero: true,\n    onZeroAxisIndex: null,\n    lineStyle: {\n      color: '#6E7079',\n      width: 1,\n      type: 'solid'\n    },\n    // The arrow at both ends the the axis.\n    symbol: ['none', 'none'],\n    symbolSize: [10, 15]\n  },\n  axisTick: {\n    show: true,\n    // Whether axisTick is inside the grid or outside the grid.\n    inside: false,\n    // The length of axisTick.\n    length: 5,\n    lineStyle: {\n      width: 1\n    }\n  },\n  axisLabel: {\n    show: true,\n    // Whether axisLabel is inside the grid or outside the grid.\n    inside: false,\n    rotate: 0,\n    // true | false | null/undefined (auto)\n    showMinLabel: null,\n    // true | false | null/undefined (auto)\n    showMaxLabel: null,\n    margin: 8,\n    // formatter: null,\n    fontSize: 12\n  },\n  splitLine: {\n    show: true,\n    lineStyle: {\n      color: ['#E0E6F1'],\n      width: 1,\n      type: 'solid'\n    }\n  },\n  splitArea: {\n    show: false,\n    areaStyle: {\n      color: ['rgba(250,250,250,0.2)', 'rgba(210,219,238,0.2)']\n    }\n  }\n};\nvar categoryAxis = zrUtil.merge({\n  // The gap at both ends of the axis. For categoryAxis, boolean.\n  boundaryGap: true,\n  // Set false to faster category collection.\n  deduplication: null,\n  // splitArea: {\n  // show: false\n  // },\n  splitLine: {\n    show: false\n  },\n  axisTick: {\n    // If tick is align with label when boundaryGap is true\n    alignWithLabel: false,\n    interval: 'auto'\n  },\n  axisLabel: {\n    interval: 'auto'\n  }\n}, defaultOption);\nvar valueAxis = zrUtil.merge({\n  boundaryGap: [0, 0],\n  axisLine: {\n    // Not shown when other axis is categoryAxis in cartesian\n    show: 'auto'\n  },\n  axisTick: {\n    // Not shown when other axis is categoryAxis in cartesian\n    show: 'auto'\n  },\n  // TODO\n  // min/max: [30, datamin, 60] or [20, datamin] or [datamin, 60]\n  splitNumber: 5,\n  minorTick: {\n    // Minor tick, not available for cateogry axis.\n    show: false,\n    // Split number of minor ticks. The value should be in range of (0, 100)\n    splitNumber: 5,\n    // Length of minor tick\n    length: 3,\n    // Line style\n    lineStyle: {// Default to be same with axisTick\n    }\n  },\n  minorSplitLine: {\n    show: false,\n    lineStyle: {\n      color: '#F4F7FD',\n      width: 1\n    }\n  }\n}, defaultOption);\nvar timeAxis = zrUtil.merge({\n  splitNumber: 6,\n  axisLabel: {\n    // To eliminate labels that are not nice\n    showMinLabel: false,\n    showMaxLabel: false,\n    rich: {\n      primary: {\n        fontWeight: 'bold'\n      }\n    }\n  },\n  splitLine: {\n    show: false\n  }\n}, valueAxis);\nvar logAxis = zrUtil.defaults({\n  logBase: 10\n}, valueAxis);\nexport default {\n  category: categoryAxis,\n  value: valueAxis,\n  time: timeAxis,\n  log: logAxis\n};","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nexport var AXIS_TYPES = {\n  value: 1,\n  category: 1,\n  time: 1,\n  log: 1\n};","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { __extends } from \"tslib\";\nimport axisDefault from './axisDefault.js';\nimport { getLayoutParams, mergeLayoutParam, fetchLayoutMode } from '../util/layout.js';\nimport OrdinalMeta from '../data/OrdinalMeta.js';\nimport { AXIS_TYPES } from './axisCommonTypes.js';\nimport { each, merge } from 'zrender/lib/core/util.js';\n/**\r\n * Generate sub axis model class\r\n * @param axisName 'x' 'y' 'radius' 'angle' 'parallel' ...\r\n */\n\nexport default function axisModelCreator(registers, axisName, BaseAxisModelClass, extraDefaultOption) {\n  each(AXIS_TYPES, function (v, axisType) {\n    var defaultOption = merge(merge({}, axisDefault[axisType], true), extraDefaultOption, true);\n\n    var AxisModel =\n    /** @class */\n    function (_super) {\n      __extends(AxisModel, _super);\n\n      function AxisModel() {\n        var _this = _super !== null && _super.apply(this, arguments) || this;\n\n        _this.type = axisName + 'Axis.' + axisType;\n        return _this;\n      }\n\n      AxisModel.prototype.mergeDefaultAndTheme = function (option, ecModel) {\n        var layoutMode = fetchLayoutMode(this);\n        var inputPositionParams = layoutMode ? getLayoutParams(option) : {};\n        var themeModel = ecModel.getTheme();\n        merge(option, themeModel.get(axisType + 'Axis'));\n        merge(option, this.getDefaultOption());\n        option.type = getAxisType(option);\n\n        if (layoutMode) {\n          mergeLayoutParam(option, inputPositionParams, layoutMode);\n        }\n      };\n\n      AxisModel.prototype.optionUpdated = function () {\n        var thisOption = this.option;\n\n        if (thisOption.type === 'category') {\n          this.__ordinalMeta = OrdinalMeta.createByAxisModel(this);\n        }\n      };\n      /**\r\n       * Should not be called before all of 'getInitailData' finished.\r\n       * Because categories are collected during initializing data.\r\n       */\n\n\n      AxisModel.prototype.getCategories = function (rawData) {\n        var option = this.option; // FIXME\n        // warning if called before all of 'getInitailData' finished.\n\n        if (option.type === 'category') {\n          if (rawData) {\n            return option.data;\n          }\n\n          return this.__ordinalMeta.categories;\n        }\n      };\n\n      AxisModel.prototype.getOrdinalMeta = function () {\n        return this.__ordinalMeta;\n      };\n\n      AxisModel.type = axisName + 'Axis.' + axisType;\n      AxisModel.defaultOption = defaultOption;\n      return AxisModel;\n    }(BaseAxisModelClass);\n\n    registers.registerComponentModel(AxisModel);\n  });\n  registers.registerSubTypeDefaulter(axisName + 'Axis', getAxisType);\n}\n\nfunction getAxisType(option) {\n  // Default axis with data is category axis\n  return option.type || (option.data ? 'category' : 'value');\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport * as zrUtil from 'zrender/lib/core/util.js';\n\nvar Cartesian =\n/** @class */\nfunction () {\n  function Cartesian(name) {\n    this.type = 'cartesian';\n    this._dimList = [];\n    this._axes = {};\n    this.name = name || '';\n  }\n\n  Cartesian.prototype.getAxis = function (dim) {\n    return this._axes[dim];\n  };\n\n  Cartesian.prototype.getAxes = function () {\n    return zrUtil.map(this._dimList, function (dim) {\n      return this._axes[dim];\n    }, this);\n  };\n\n  Cartesian.prototype.getAxesByScale = function (scaleType) {\n    scaleType = scaleType.toLowerCase();\n    return zrUtil.filter(this.getAxes(), function (axis) {\n      return axis.scale.type === scaleType;\n    });\n  };\n\n  Cartesian.prototype.addAxis = function (axis) {\n    var dim = axis.dim;\n    this._axes[dim] = axis;\n\n    this._dimList.push(dim);\n  };\n\n  return Cartesian;\n}();\n\n;\nexport default Cartesian;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { __extends } from \"tslib\";\nimport BoundingRect from 'zrender/lib/core/BoundingRect.js';\nimport Cartesian from './Cartesian.js';\nimport { invert } from 'zrender/lib/core/matrix.js';\nimport { applyTransform } from 'zrender/lib/core/vector.js';\nexport var cartesian2DDimensions = ['x', 'y'];\n\nfunction canCalculateAffineTransform(scale) {\n  return scale.type === 'interval' || scale.type === 'time';\n}\n\nvar Cartesian2D =\n/** @class */\nfunction (_super) {\n  __extends(Cartesian2D, _super);\n\n  function Cartesian2D() {\n    var _this = _super !== null && _super.apply(this, arguments) || this;\n\n    _this.type = 'cartesian2d';\n    _this.dimensions = cartesian2DDimensions;\n    return _this;\n  }\n  /**\r\n   * Calculate an affine transform matrix if two axes are time or value.\r\n   * It's mainly for accelartion on the large time series data.\r\n   */\n\n\n  Cartesian2D.prototype.calcAffineTransform = function () {\n    this._transform = this._invTransform = null;\n    var xAxisScale = this.getAxis('x').scale;\n    var yAxisScale = this.getAxis('y').scale;\n\n    if (!canCalculateAffineTransform(xAxisScale) || !canCalculateAffineTransform(yAxisScale)) {\n      return;\n    }\n\n    var xScaleExtent = xAxisScale.getExtent();\n    var yScaleExtent = yAxisScale.getExtent();\n    var start = this.dataToPoint([xScaleExtent[0], yScaleExtent[0]]);\n    var end = this.dataToPoint([xScaleExtent[1], yScaleExtent[1]]);\n    var xScaleSpan = xScaleExtent[1] - xScaleExtent[0];\n    var yScaleSpan = yScaleExtent[1] - yScaleExtent[0];\n\n    if (!xScaleSpan || !yScaleSpan) {\n      return;\n    } // Accelerate data to point calculation on the special large time series data.\n\n\n    var scaleX = (end[0] - start[0]) / xScaleSpan;\n    var scaleY = (end[1] - start[1]) / yScaleSpan;\n    var translateX = start[0] - xScaleExtent[0] * scaleX;\n    var translateY = start[1] - yScaleExtent[0] * scaleY;\n    var m = this._transform = [scaleX, 0, 0, scaleY, translateX, translateY];\n    this._invTransform = invert([], m);\n  };\n  /**\r\n   * Base axis will be used on stacking.\r\n   */\n\n\n  Cartesian2D.prototype.getBaseAxis = function () {\n    return this.getAxesByScale('ordinal')[0] || this.getAxesByScale('time')[0] || this.getAxis('x');\n  };\n\n  Cartesian2D.prototype.containPoint = function (point) {\n    var axisX = this.getAxis('x');\n    var axisY = this.getAxis('y');\n    return axisX.contain(axisX.toLocalCoord(point[0])) && axisY.contain(axisY.toLocalCoord(point[1]));\n  };\n\n  Cartesian2D.prototype.containData = function (data) {\n    return this.getAxis('x').containData(data[0]) && this.getAxis('y').containData(data[1]);\n  };\n\n  Cartesian2D.prototype.containZone = function (data1, data2) {\n    var zoneDiag1 = this.dataToPoint(data1);\n    var zoneDiag2 = this.dataToPoint(data2);\n    var area = this.getArea();\n    var zone = new BoundingRect(zoneDiag1[0], zoneDiag1[1], zoneDiag2[0] - zoneDiag1[0], zoneDiag2[1] - zoneDiag1[1]);\n    return area.intersect(zone);\n  };\n\n  Cartesian2D.prototype.dataToPoint = function (data, clamp, out) {\n    out = out || [];\n    var xVal = data[0];\n    var yVal = data[1]; // Fast path\n\n    if (this._transform // It's supported that if data is like `[Inifity, 123]`, where only Y pixel calculated.\n    && xVal != null && isFinite(xVal) && yVal != null && isFinite(yVal)) {\n      return applyTransform(out, data, this._transform);\n    }\n\n    var xAxis = this.getAxis('x');\n    var yAxis = this.getAxis('y');\n    out[0] = xAxis.toGlobalCoord(xAxis.dataToCoord(xVal, clamp));\n    out[1] = yAxis.toGlobalCoord(yAxis.dataToCoord(yVal, clamp));\n    return out;\n  };\n\n  Cartesian2D.prototype.clampData = function (data, out) {\n    var xScale = this.getAxis('x').scale;\n    var yScale = this.getAxis('y').scale;\n    var xAxisExtent = xScale.getExtent();\n    var yAxisExtent = yScale.getExtent();\n    var x = xScale.parse(data[0]);\n    var y = yScale.parse(data[1]);\n    out = out || [];\n    out[0] = Math.min(Math.max(Math.min(xAxisExtent[0], xAxisExtent[1]), x), Math.max(xAxisExtent[0], xAxisExtent[1]));\n    out[1] = Math.min(Math.max(Math.min(yAxisExtent[0], yAxisExtent[1]), y), Math.max(yAxisExtent[0], yAxisExtent[1]));\n    return out;\n  };\n\n  Cartesian2D.prototype.pointToData = function (point, clamp) {\n    var out = [];\n\n    if (this._invTransform) {\n      return applyTransform(out, point, this._invTransform);\n    }\n\n    var xAxis = this.getAxis('x');\n    var yAxis = this.getAxis('y');\n    out[0] = xAxis.coordToData(xAxis.toLocalCoord(point[0]), clamp);\n    out[1] = yAxis.coordToData(yAxis.toLocalCoord(point[1]), clamp);\n    return out;\n  };\n\n  Cartesian2D.prototype.getOtherAxis = function (axis) {\n    return this.getAxis(axis.dim === 'x' ? 'y' : 'x');\n  };\n  /**\r\n   * Get rect area of cartesian.\r\n   * Area will have a contain function to determine if a point is in the coordinate system.\r\n   */\n\n\n  Cartesian2D.prototype.getArea = function () {\n    var xExtent = this.getAxis('x').getGlobalExtent();\n    var yExtent = this.getAxis('y').getGlobalExtent();\n    var x = Math.min(xExtent[0], xExtent[1]);\n    var y = Math.min(yExtent[0], yExtent[1]);\n    var width = Math.max(xExtent[0], xExtent[1]) - x;\n    var height = Math.max(yExtent[0], yExtent[1]) - y;\n    return new BoundingRect(x, y, width, height);\n  };\n\n  return Cartesian2D;\n}(Cartesian);\n\n;\nexport default Cartesian2D;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { __extends } from \"tslib\";\nimport Axis from '../Axis.js';\n\nvar Axis2D =\n/** @class */\nfunction (_super) {\n  __extends(Axis2D, _super);\n\n  function Axis2D(dim, scale, coordExtent, axisType, position) {\n    var _this = _super.call(this, dim, scale, coordExtent) || this;\n    /**\r\n     * Index of axis, can be used as key\r\n     * Injected outside.\r\n     */\n\n\n    _this.index = 0;\n    _this.type = axisType || 'value';\n    _this.position = position || 'bottom';\n    return _this;\n  }\n\n  Axis2D.prototype.isHorizontal = function () {\n    var position = this.position;\n    return position === 'top' || position === 'bottom';\n  };\n  /**\r\n   * Each item cooresponds to this.getExtent(), which\r\n   * means globalExtent[0] may greater than globalExtent[1],\r\n   * unless `asc` is input.\r\n   *\r\n   * @param {boolean} [asc]\r\n   * @return {Array.<number>}\r\n   */\n\n\n  Axis2D.prototype.getGlobalExtent = function (asc) {\n    var ret = this.getExtent();\n    ret[0] = this.toGlobalCoord(ret[0]);\n    ret[1] = this.toGlobalCoord(ret[1]);\n    asc && ret[0] > ret[1] && ret.reverse();\n    return ret;\n  };\n\n  Axis2D.prototype.pointToData = function (point, clamp) {\n    return this.coordToData(this.toLocalCoord(point[this.dim === 'x' ? 0 : 1]), clamp);\n  };\n  /**\r\n   * Set ordinalSortInfo\r\n   * @param info new OrdinalSortInfo\r\n   */\n\n\n  Axis2D.prototype.setCategorySortInfo = function (info) {\n    if (this.type !== 'category') {\n      return false;\n    }\n\n    this.model.option.categorySortInfo = info;\n    this.scale.setSortInfo(info);\n  };\n\n  return Axis2D;\n}(Axis);\n\nexport default Axis2D;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport * as zrUtil from 'zrender/lib/core/util.js';\nimport { SINGLE_REFERRING } from '../../util/model.js';\n/**\r\n * Can only be called after coordinate system creation stage.\r\n * (Can be called before coordinate system update stage).\r\n */\n\nexport function layout(gridModel, axisModel, opt) {\n  opt = opt || {};\n  var grid = gridModel.coordinateSystem;\n  var axis = axisModel.axis;\n  var layout = {};\n  var otherAxisOnZeroOf = axis.getAxesOnZeroOf()[0];\n  var rawAxisPosition = axis.position;\n  var axisPosition = otherAxisOnZeroOf ? 'onZero' : rawAxisPosition;\n  var axisDim = axis.dim;\n  var rect = grid.getRect();\n  var rectBound = [rect.x, rect.x + rect.width, rect.y, rect.y + rect.height];\n  var idx = {\n    left: 0,\n    right: 1,\n    top: 0,\n    bottom: 1,\n    onZero: 2\n  };\n  var axisOffset = axisModel.get('offset') || 0;\n  var posBound = axisDim === 'x' ? [rectBound[2] - axisOffset, rectBound[3] + axisOffset] : [rectBound[0] - axisOffset, rectBound[1] + axisOffset];\n\n  if (otherAxisOnZeroOf) {\n    var onZeroCoord = otherAxisOnZeroOf.toGlobalCoord(otherAxisOnZeroOf.dataToCoord(0));\n    posBound[idx.onZero] = Math.max(Math.min(onZeroCoord, posBound[1]), posBound[0]);\n  } // Axis position\n\n\n  layout.position = [axisDim === 'y' ? posBound[idx[axisPosition]] : rectBound[0], axisDim === 'x' ? posBound[idx[axisPosition]] : rectBound[3]]; // Axis rotation\n\n  layout.rotation = Math.PI / 2 * (axisDim === 'x' ? 0 : 1); // Tick and label direction, x y is axisDim\n\n  var dirMap = {\n    top: -1,\n    bottom: 1,\n    left: -1,\n    right: 1\n  };\n  layout.labelDirection = layout.tickDirection = layout.nameDirection = dirMap[rawAxisPosition];\n  layout.labelOffset = otherAxisOnZeroOf ? posBound[idx[rawAxisPosition]] - posBound[idx.onZero] : 0;\n\n  if (axisModel.get(['axisTick', 'inside'])) {\n    layout.tickDirection = -layout.tickDirection;\n  }\n\n  if (zrUtil.retrieve(opt.labelInside, axisModel.get(['axisLabel', 'inside']))) {\n    layout.labelDirection = -layout.labelDirection;\n  } // Special label rotation\n\n\n  var labelRotate = axisModel.get(['axisLabel', 'rotate']);\n  layout.labelRotate = axisPosition === 'top' ? -labelRotate : labelRotate; // Over splitLine and splitArea\n\n  layout.z2 = 1;\n  return layout;\n}\nexport function isCartesian2DSeries(seriesModel) {\n  return seriesModel.get('coordinateSystem') === 'cartesian2d';\n}\nexport function findAxisModels(seriesModel) {\n  var axisModelMap = {\n    xAxisModel: null,\n    yAxisModel: null\n  };\n  zrUtil.each(axisModelMap, function (v, key) {\n    var axisType = key.replace(/Model$/, '');\n    var axisModel = seriesModel.getReferringComponents(axisType, SINGLE_REFERRING).models[0];\n\n    if (process.env.NODE_ENV !== 'production') {\n      if (!axisModel) {\n        throw new Error(axisType + ' \"' + zrUtil.retrieve3(seriesModel.get(axisType + 'Index'), seriesModel.get(axisType + 'Id'), 0) + '\" not found');\n      }\n    }\n\n    axisModelMap[key] = axisModel;\n  });\n  return axisModelMap;\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { getPrecisionSafe, round } from '../util/number.js';\nimport IntervalScale from '../scale/Interval.js';\nimport { getScaleExtent } from './axisHelper.js';\nimport { warn } from '../util/log.js';\nimport { increaseInterval, isValueNice } from '../scale/helper.js';\nvar mathLog = Math.log;\nexport function alignScaleTicks(scale, axisModel, alignToScale) {\n  var intervalScaleProto = IntervalScale.prototype; // NOTE: There is a precondition for log scale  here:\n  // In log scale we store _interval and _extent of exponent value.\n  // So if we use the method of InternalScale to set/get these data.\n  // It process the exponent value, which is linear and what we want here.\n\n  var alignToTicks = intervalScaleProto.getTicks.call(alignToScale);\n  var alignToNicedTicks = intervalScaleProto.getTicks.call(alignToScale, true);\n  var alignToSplitNumber = alignToTicks.length - 1;\n  var alignToInterval = intervalScaleProto.getInterval.call(alignToScale);\n  var scaleExtent = getScaleExtent(scale, axisModel);\n  var rawExtent = scaleExtent.extent;\n  var isMinFixed = scaleExtent.fixMin;\n  var isMaxFixed = scaleExtent.fixMax;\n\n  if (scale.type === 'log') {\n    var logBase = mathLog(scale.base);\n    rawExtent = [mathLog(rawExtent[0]) / logBase, mathLog(rawExtent[1]) / logBase];\n  }\n\n  scale.setExtent(rawExtent[0], rawExtent[1]);\n  scale.calcNiceExtent({\n    splitNumber: alignToSplitNumber,\n    fixMin: isMinFixed,\n    fixMax: isMaxFixed\n  });\n  var extent = intervalScaleProto.getExtent.call(scale); // Need to update the rawExtent.\n  // Because value in rawExtent may be not parsed. e.g. 'dataMin', 'dataMax'\n\n  if (isMinFixed) {\n    rawExtent[0] = extent[0];\n  }\n\n  if (isMaxFixed) {\n    rawExtent[1] = extent[1];\n  }\n\n  var interval = intervalScaleProto.getInterval.call(scale);\n  var min = rawExtent[0];\n  var max = rawExtent[1];\n\n  if (isMinFixed && isMaxFixed) {\n    // User set min, max, divide to get new interval\n    interval = (max - min) / alignToSplitNumber;\n  } else if (isMinFixed) {\n    max = rawExtent[0] + interval * alignToSplitNumber; // User set min, expand extent on the other side\n\n    while (max < rawExtent[1] && isFinite(max) && isFinite(rawExtent[1])) {\n      interval = increaseInterval(interval);\n      max = rawExtent[0] + interval * alignToSplitNumber;\n    }\n  } else if (isMaxFixed) {\n    // User set max, expand extent on the other side\n    min = rawExtent[1] - interval * alignToSplitNumber;\n\n    while (min > rawExtent[0] && isFinite(min) && isFinite(rawExtent[0])) {\n      interval = increaseInterval(interval);\n      min = rawExtent[1] - interval * alignToSplitNumber;\n    }\n  } else {\n    var nicedSplitNumber = scale.getTicks().length - 1;\n\n    if (nicedSplitNumber > alignToSplitNumber) {\n      interval = increaseInterval(interval);\n    }\n\n    var range = interval * alignToSplitNumber;\n    max = Math.ceil(rawExtent[1] / interval) * interval;\n    min = round(max - range); // Not change the result that crossing zero.\n\n    if (min < 0 && rawExtent[0] >= 0) {\n      min = 0;\n      max = round(range);\n    } else if (max > 0 && rawExtent[1] <= 0) {\n      max = 0;\n      min = -round(range);\n    }\n  } // Adjust min, max based on the extent of alignTo. When min or max is set in alignTo scale\n\n\n  var t0 = (alignToTicks[0].value - alignToNicedTicks[0].value) / alignToInterval;\n  var t1 = (alignToTicks[alignToSplitNumber].value - alignToNicedTicks[alignToSplitNumber].value) / alignToInterval; // NOTE: Must in setExtent -> setInterval -> setNiceExtent order.\n\n  intervalScaleProto.setExtent.call(scale, min + interval * t0, max + interval * t1);\n  intervalScaleProto.setInterval.call(scale, interval);\n\n  if (t0 || t1) {\n    intervalScaleProto.setNiceExtent.call(scale, min + interval, max - interval);\n  }\n\n  if (process.env.NODE_ENV !== 'production') {\n    var ticks = intervalScaleProto.getTicks.call(scale);\n\n    if (ticks[1] && (!isValueNice(interval) || getPrecisionSafe(ticks[1].value) > getPrecisionSafe(interval))) {\n      warn( // eslint-disable-next-line\n      \"The ticks may be not readable when set min: \" + axisModel.get('min') + \", max: \" + axisModel.get('max') + \" and alignTicks: true\");\n    }\n  }\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\n\n/**\r\n * Grid is a region which contains at most 4 cartesian systems\r\n *\r\n * TODO Default cartesian\r\n */\nimport { isObject, each, indexOf, retrieve3, keys } from 'zrender/lib/core/util.js';\nimport { getLayoutRect } from '../../util/layout.js';\nimport { createScaleByModel, ifAxisCrossZero, niceScaleExtent, estimateLabelUnionRect, getDataDimensionsOnAxis } from '../../coord/axisHelper.js';\nimport Cartesian2D, { cartesian2DDimensions } from './Cartesian2D.js';\nimport Axis2D from './Axis2D.js';\nimport { SINGLE_REFERRING } from '../../util/model.js';\nimport { isCartesian2DSeries, findAxisModels } from './cartesianAxisHelper.js';\nimport { isIntervalOrLogScale } from '../../scale/helper.js';\nimport { alignScaleTicks } from '../axisAlignTicks.js';\n\nvar Grid =\n/** @class */\nfunction () {\n  function Grid(gridModel, ecModel, api) {\n    // FIXME:TS where used (different from registered type 'cartesian2d')?\n    this.type = 'grid';\n    this._coordsMap = {};\n    this._coordsList = [];\n    this._axesMap = {};\n    this._axesList = [];\n    this.axisPointerEnabled = true;\n    this.dimensions = cartesian2DDimensions;\n\n    this._initCartesian(gridModel, ecModel, api);\n\n    this.model = gridModel;\n  }\n\n  Grid.prototype.getRect = function () {\n    return this._rect;\n  };\n\n  Grid.prototype.update = function (ecModel, api) {\n    var axesMap = this._axesMap;\n\n    this._updateScale(ecModel, this.model);\n\n    function updateAxisTicks(axes) {\n      var alignTo; // Axis is added in order of axisIndex.\n\n      var axesIndices = keys(axes);\n      var len = axesIndices.length;\n\n      if (!len) {\n        return;\n      }\n\n      var axisNeedsAlign = []; // Process once and calculate the ticks for those don't use alignTicks.\n\n      for (var i = len - 1; i >= 0; i--) {\n        var idx = +axesIndices[i]; // Convert to number.\n\n        var axis = axes[idx];\n        var model = axis.model;\n        var scale = axis.scale;\n\n        if ( // Only value and log axis without interval support alignTicks.\n        isIntervalOrLogScale(scale) && model.get('alignTicks') && model.get('interval') == null) {\n          axisNeedsAlign.push(axis);\n        } else {\n          niceScaleExtent(scale, model);\n\n          if (isIntervalOrLogScale(scale)) {\n            // Can only align to interval or log axis.\n            alignTo = axis;\n          }\n        }\n      }\n\n      ; // All axes has set alignTicks. Pick the first one.\n      // PENDING. Should we find the axis that both set interval, min, max and align to this one?\n\n      if (axisNeedsAlign.length) {\n        if (!alignTo) {\n          alignTo = axisNeedsAlign.pop();\n          niceScaleExtent(alignTo.scale, alignTo.model);\n        }\n\n        each(axisNeedsAlign, function (axis) {\n          alignScaleTicks(axis.scale, axis.model, alignTo.scale);\n        });\n      }\n    }\n\n    updateAxisTicks(axesMap.x);\n    updateAxisTicks(axesMap.y); // Key: axisDim_axisIndex, value: boolean, whether onZero target.\n\n    var onZeroRecords = {};\n    each(axesMap.x, function (xAxis) {\n      fixAxisOnZero(axesMap, 'y', xAxis, onZeroRecords);\n    });\n    each(axesMap.y, function (yAxis) {\n      fixAxisOnZero(axesMap, 'x', yAxis, onZeroRecords);\n    }); // Resize again if containLabel is enabled\n    // FIXME It may cause getting wrong grid size in data processing stage\n\n    this.resize(this.model, api);\n  };\n  /**\r\n   * Resize the grid\r\n   */\n\n\n  Grid.prototype.resize = function (gridModel, api, ignoreContainLabel) {\n    var boxLayoutParams = gridModel.getBoxLayoutParams();\n    var isContainLabel = !ignoreContainLabel && gridModel.get('containLabel');\n    var gridRect = getLayoutRect(boxLayoutParams, {\n      width: api.getWidth(),\n      height: api.getHeight()\n    });\n    this._rect = gridRect;\n    var axesList = this._axesList;\n    adjustAxes(); // Minus label size\n\n    if (isContainLabel) {\n      each(axesList, function (axis) {\n        if (!axis.model.get(['axisLabel', 'inside'])) {\n          var labelUnionRect = estimateLabelUnionRect(axis);\n\n          if (labelUnionRect) {\n            var dim = axis.isHorizontal() ? 'height' : 'width';\n            var margin = axis.model.get(['axisLabel', 'margin']);\n            gridRect[dim] -= labelUnionRect[dim] + margin;\n\n            if (axis.position === 'top') {\n              gridRect.y += labelUnionRect.height + margin;\n            } else if (axis.position === 'left') {\n              gridRect.x += labelUnionRect.width + margin;\n            }\n          }\n        }\n      });\n      adjustAxes();\n    }\n\n    each(this._coordsList, function (coord) {\n      // Calculate affine matrix to accelerate the data to point transform.\n      // If all the axes scales are time or value.\n      coord.calcAffineTransform();\n    });\n\n    function adjustAxes() {\n      each(axesList, function (axis) {\n        var isHorizontal = axis.isHorizontal();\n        var extent = isHorizontal ? [0, gridRect.width] : [0, gridRect.height];\n        var idx = axis.inverse ? 1 : 0;\n        axis.setExtent(extent[idx], extent[1 - idx]);\n        updateAxisTransform(axis, isHorizontal ? gridRect.x : gridRect.y);\n      });\n    }\n  };\n\n  Grid.prototype.getAxis = function (dim, axisIndex) {\n    var axesMapOnDim = this._axesMap[dim];\n\n    if (axesMapOnDim != null) {\n      return axesMapOnDim[axisIndex || 0];\n    }\n  };\n\n  Grid.prototype.getAxes = function () {\n    return this._axesList.slice();\n  };\n\n  Grid.prototype.getCartesian = function (xAxisIndex, yAxisIndex) {\n    if (xAxisIndex != null && yAxisIndex != null) {\n      var key = 'x' + xAxisIndex + 'y' + yAxisIndex;\n      return this._coordsMap[key];\n    }\n\n    if (isObject(xAxisIndex)) {\n      yAxisIndex = xAxisIndex.yAxisIndex;\n      xAxisIndex = xAxisIndex.xAxisIndex;\n    }\n\n    for (var i = 0, coordList = this._coordsList; i < coordList.length; i++) {\n      if (coordList[i].getAxis('x').index === xAxisIndex || coordList[i].getAxis('y').index === yAxisIndex) {\n        return coordList[i];\n      }\n    }\n  };\n\n  Grid.prototype.getCartesians = function () {\n    return this._coordsList.slice();\n  };\n  /**\r\n   * @implements\r\n   */\n\n\n  Grid.prototype.convertToPixel = function (ecModel, finder, value) {\n    var target = this._findConvertTarget(finder);\n\n    return target.cartesian ? target.cartesian.dataToPoint(value) : target.axis ? target.axis.toGlobalCoord(target.axis.dataToCoord(value)) : null;\n  };\n  /**\r\n   * @implements\r\n   */\n\n\n  Grid.prototype.convertFromPixel = function (ecModel, finder, value) {\n    var target = this._findConvertTarget(finder);\n\n    return target.cartesian ? target.cartesian.pointToData(value) : target.axis ? target.axis.coordToData(target.axis.toLocalCoord(value)) : null;\n  };\n\n  Grid.prototype._findConvertTarget = function (finder) {\n    var seriesModel = finder.seriesModel;\n    var xAxisModel = finder.xAxisModel || seriesModel && seriesModel.getReferringComponents('xAxis', SINGLE_REFERRING).models[0];\n    var yAxisModel = finder.yAxisModel || seriesModel && seriesModel.getReferringComponents('yAxis', SINGLE_REFERRING).models[0];\n    var gridModel = finder.gridModel;\n    var coordsList = this._coordsList;\n    var cartesian;\n    var axis;\n\n    if (seriesModel) {\n      cartesian = seriesModel.coordinateSystem;\n      indexOf(coordsList, cartesian) < 0 && (cartesian = null);\n    } else if (xAxisModel && yAxisModel) {\n      cartesian = this.getCartesian(xAxisModel.componentIndex, yAxisModel.componentIndex);\n    } else if (xAxisModel) {\n      axis = this.getAxis('x', xAxisModel.componentIndex);\n    } else if (yAxisModel) {\n      axis = this.getAxis('y', yAxisModel.componentIndex);\n    } // Lowest priority.\n    else if (gridModel) {\n        var grid = gridModel.coordinateSystem;\n\n        if (grid === this) {\n          cartesian = this._coordsList[0];\n        }\n      }\n\n    return {\n      cartesian: cartesian,\n      axis: axis\n    };\n  };\n  /**\r\n   * @implements\r\n   */\n\n\n  Grid.prototype.containPoint = function (point) {\n    var coord = this._coordsList[0];\n\n    if (coord) {\n      return coord.containPoint(point);\n    }\n  };\n  /**\r\n   * Initialize cartesian coordinate systems\r\n   */\n\n\n  Grid.prototype._initCartesian = function (gridModel, ecModel, api) {\n    var _this = this;\n\n    var grid = this;\n    var axisPositionUsed = {\n      left: false,\n      right: false,\n      top: false,\n      bottom: false\n    };\n    var axesMap = {\n      x: {},\n      y: {}\n    };\n    var axesCount = {\n      x: 0,\n      y: 0\n    }; // Create axis\n\n    ecModel.eachComponent('xAxis', createAxisCreator('x'), this);\n    ecModel.eachComponent('yAxis', createAxisCreator('y'), this);\n\n    if (!axesCount.x || !axesCount.y) {\n      // Roll back when there no either x or y axis\n      this._axesMap = {};\n      this._axesList = [];\n      return;\n    }\n\n    this._axesMap = axesMap; // Create cartesian2d\n\n    each(axesMap.x, function (xAxis, xAxisIndex) {\n      each(axesMap.y, function (yAxis, yAxisIndex) {\n        var key = 'x' + xAxisIndex + 'y' + yAxisIndex;\n        var cartesian = new Cartesian2D(key);\n        cartesian.master = _this;\n        cartesian.model = gridModel;\n        _this._coordsMap[key] = cartesian;\n\n        _this._coordsList.push(cartesian);\n\n        cartesian.addAxis(xAxis);\n        cartesian.addAxis(yAxis);\n      });\n    });\n\n    function createAxisCreator(dimName) {\n      return function (axisModel, idx) {\n        if (!isAxisUsedInTheGrid(axisModel, gridModel)) {\n          return;\n        }\n\n        var axisPosition = axisModel.get('position');\n\n        if (dimName === 'x') {\n          // Fix position\n          if (axisPosition !== 'top' && axisPosition !== 'bottom') {\n            // Default bottom of X\n            axisPosition = axisPositionUsed.bottom ? 'top' : 'bottom';\n          }\n        } else {\n          // Fix position\n          if (axisPosition !== 'left' && axisPosition !== 'right') {\n            // Default left of Y\n            axisPosition = axisPositionUsed.left ? 'right' : 'left';\n          }\n        }\n\n        axisPositionUsed[axisPosition] = true;\n        var axis = new Axis2D(dimName, createScaleByModel(axisModel), [0, 0], axisModel.get('type'), axisPosition);\n        var isCategory = axis.type === 'category';\n        axis.onBand = isCategory && axisModel.get('boundaryGap');\n        axis.inverse = axisModel.get('inverse'); // Inject axis into axisModel\n\n        axisModel.axis = axis; // Inject axisModel into axis\n\n        axis.model = axisModel; // Inject grid info axis\n\n        axis.grid = grid; // Index of axis, can be used as key\n\n        axis.index = idx;\n\n        grid._axesList.push(axis);\n\n        axesMap[dimName][idx] = axis;\n        axesCount[dimName]++;\n      };\n    }\n  };\n  /**\r\n   * Update cartesian properties from series.\r\n   */\n\n\n  Grid.prototype._updateScale = function (ecModel, gridModel) {\n    // Reset scale\n    each(this._axesList, function (axis) {\n      axis.scale.setExtent(Infinity, -Infinity);\n\n      if (axis.type === 'category') {\n        var categorySortInfo = axis.model.get('categorySortInfo');\n        axis.scale.setSortInfo(categorySortInfo);\n      }\n    });\n    ecModel.eachSeries(function (seriesModel) {\n      if (isCartesian2DSeries(seriesModel)) {\n        var axesModelMap = findAxisModels(seriesModel);\n        var xAxisModel = axesModelMap.xAxisModel;\n        var yAxisModel = axesModelMap.yAxisModel;\n\n        if (!isAxisUsedInTheGrid(xAxisModel, gridModel) || !isAxisUsedInTheGrid(yAxisModel, gridModel)) {\n          return;\n        }\n\n        var cartesian = this.getCartesian(xAxisModel.componentIndex, yAxisModel.componentIndex);\n        var data = seriesModel.getData();\n        var xAxis = cartesian.getAxis('x');\n        var yAxis = cartesian.getAxis('y');\n        unionExtent(data, xAxis);\n        unionExtent(data, yAxis);\n      }\n    }, this);\n\n    function unionExtent(data, axis) {\n      each(getDataDimensionsOnAxis(data, axis.dim), function (dim) {\n        axis.scale.unionExtentFromData(data, dim);\n      });\n    }\n  };\n  /**\r\n   * @param dim 'x' or 'y' or 'auto' or null/undefined\r\n   */\n\n\n  Grid.prototype.getTooltipAxes = function (dim) {\n    var baseAxes = [];\n    var otherAxes = [];\n    each(this.getCartesians(), function (cartesian) {\n      var baseAxis = dim != null && dim !== 'auto' ? cartesian.getAxis(dim) : cartesian.getBaseAxis();\n      var otherAxis = cartesian.getOtherAxis(baseAxis);\n      indexOf(baseAxes, baseAxis) < 0 && baseAxes.push(baseAxis);\n      indexOf(otherAxes, otherAxis) < 0 && otherAxes.push(otherAxis);\n    });\n    return {\n      baseAxes: baseAxes,\n      otherAxes: otherAxes\n    };\n  };\n\n  Grid.create = function (ecModel, api) {\n    var grids = [];\n    ecModel.eachComponent('grid', function (gridModel, idx) {\n      var grid = new Grid(gridModel, ecModel, api);\n      grid.name = 'grid_' + idx; // dataSampling requires axis extent, so resize\n      // should be performed in create stage.\n\n      grid.resize(gridModel, api, true);\n      gridModel.coordinateSystem = grid;\n      grids.push(grid);\n    }); // Inject the coordinateSystems into seriesModel\n\n    ecModel.eachSeries(function (seriesModel) {\n      if (!isCartesian2DSeries(seriesModel)) {\n        return;\n      }\n\n      var axesModelMap = findAxisModels(seriesModel);\n      var xAxisModel = axesModelMap.xAxisModel;\n      var yAxisModel = axesModelMap.yAxisModel;\n      var gridModel = xAxisModel.getCoordSysModel();\n\n      if (process.env.NODE_ENV !== 'production') {\n        if (!gridModel) {\n          throw new Error('Grid \"' + retrieve3(xAxisModel.get('gridIndex'), xAxisModel.get('gridId'), 0) + '\" not found');\n        }\n\n        if (xAxisModel.getCoordSysModel() !== yAxisModel.getCoordSysModel()) {\n          throw new Error('xAxis and yAxis must use the same grid');\n        }\n      }\n\n      var grid = gridModel.coordinateSystem;\n      seriesModel.coordinateSystem = grid.getCartesian(xAxisModel.componentIndex, yAxisModel.componentIndex);\n    });\n    return grids;\n  }; // For deciding which dimensions to use when creating list data\n\n\n  Grid.dimensions = cartesian2DDimensions;\n  return Grid;\n}();\n/**\r\n * Check if the axis is used in the specified grid.\r\n */\n\n\nfunction isAxisUsedInTheGrid(axisModel, gridModel) {\n  return axisModel.getCoordSysModel() === gridModel;\n}\n\nfunction fixAxisOnZero(axesMap, otherAxisDim, axis, // Key: see `getOnZeroRecordKey`\nonZeroRecords) {\n  axis.getAxesOnZeroOf = function () {\n    // TODO: onZero of multiple axes.\n    return otherAxisOnZeroOf ? [otherAxisOnZeroOf] : [];\n  }; // onZero can not be enabled in these two situations:\n  // 1. When any other axis is a category axis.\n  // 2. When no axis is cross 0 point.\n\n\n  var otherAxes = axesMap[otherAxisDim];\n  var otherAxisOnZeroOf;\n  var axisModel = axis.model;\n  var onZero = axisModel.get(['axisLine', 'onZero']);\n  var onZeroAxisIndex = axisModel.get(['axisLine', 'onZeroAxisIndex']);\n\n  if (!onZero) {\n    return;\n  } // If target axis is specified.\n\n\n  if (onZeroAxisIndex != null) {\n    if (canOnZeroToAxis(otherAxes[onZeroAxisIndex])) {\n      otherAxisOnZeroOf = otherAxes[onZeroAxisIndex];\n    }\n  } else {\n    // Find the first available other axis.\n    for (var idx in otherAxes) {\n      if (otherAxes.hasOwnProperty(idx) && canOnZeroToAxis(otherAxes[idx]) // Consider that two Y axes on one value axis,\n      // if both onZero, the two Y axes overlap.\n      && !onZeroRecords[getOnZeroRecordKey(otherAxes[idx])]) {\n        otherAxisOnZeroOf = otherAxes[idx];\n        break;\n      }\n    }\n  }\n\n  if (otherAxisOnZeroOf) {\n    onZeroRecords[getOnZeroRecordKey(otherAxisOnZeroOf)] = true;\n  }\n\n  function getOnZeroRecordKey(axis) {\n    return axis.dim + '_' + axis.index;\n  }\n}\n\nfunction canOnZeroToAxis(axis) {\n  return axis && axis.type !== 'category' && axis.type !== 'time' && ifAxisCrossZero(axis);\n}\n\nfunction updateAxisTransform(axis, coordBase) {\n  var axisExtent = axis.getExtent();\n  var axisExtentSum = axisExtent[0] + axisExtent[1]; // Fast transform\n\n  axis.toGlobalCoord = axis.dim === 'x' ? function (coord) {\n    return coord + coordBase;\n  } : function (coord) {\n    return axisExtentSum - coord + coordBase;\n  };\n  axis.toLocalCoord = axis.dim === 'x' ? function (coord) {\n    return coord - coordBase;\n  } : function (coord) {\n    return axisExtentSum - coord + coordBase;\n  };\n}\n\nexport default Grid;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { retrieve, defaults, extend, each, isObject, map, isString, isNumber, isFunction } from 'zrender/lib/core/util.js';\nimport * as graphic from '../../util/graphic.js';\nimport { getECData } from '../../util/innerStore.js';\nimport { createTextStyle } from '../../label/labelStyle.js';\nimport Model from '../../model/Model.js';\nimport { isRadianAroundZero, remRadian } from '../../util/number.js';\nimport { createSymbol, normalizeSymbolOffset } from '../../util/symbol.js';\nimport * as matrixUtil from 'zrender/lib/core/matrix.js';\nimport { applyTransform as v2ApplyTransform } from 'zrender/lib/core/vector.js';\nimport { shouldShowAllLabels } from '../../coord/axisHelper.js';\nimport { prepareLayoutList, hideOverlap } from '../../label/labelLayoutHelper.js';\nvar PI = Math.PI;\n/**\r\n * A final axis is translated and rotated from a \"standard axis\".\r\n * So opt.position and opt.rotation is required.\r\n *\r\n * A standard axis is and axis from [0, 0] to [0, axisExtent[1]],\r\n * for example: (0, 0) ------------> (0, 50)\r\n *\r\n * nameDirection or tickDirection or labelDirection is 1 means tick\r\n * or label is below the standard axis, whereas is -1 means above\r\n * the standard axis. labelOffset means offset between label and axis,\r\n * which is useful when 'onZero', where axisLabel is in the grid and\r\n * label in outside grid.\r\n *\r\n * Tips: like always,\r\n * positive rotation represents anticlockwise, and negative rotation\r\n * represents clockwise.\r\n * The direction of position coordinate is the same as the direction\r\n * of screen coordinate.\r\n *\r\n * Do not need to consider axis 'inverse', which is auto processed by\r\n * axis extent.\r\n */\n\nvar AxisBuilder =\n/** @class */\nfunction () {\n  function AxisBuilder(axisModel, opt) {\n    this.group = new graphic.Group();\n    this.opt = opt;\n    this.axisModel = axisModel; // Default value\n\n    defaults(opt, {\n      labelOffset: 0,\n      nameDirection: 1,\n      tickDirection: 1,\n      labelDirection: 1,\n      silent: true,\n      handleAutoShown: function () {\n        return true;\n      }\n    }); // FIXME Not use a separate text group?\n\n    var transformGroup = new graphic.Group({\n      x: opt.position[0],\n      y: opt.position[1],\n      rotation: opt.rotation\n    }); // this.group.add(transformGroup);\n    // this._transformGroup = transformGroup;\n\n    transformGroup.updateTransform();\n    this._transformGroup = transformGroup;\n  }\n\n  AxisBuilder.prototype.hasBuilder = function (name) {\n    return !!builders[name];\n  };\n\n  AxisBuilder.prototype.add = function (name) {\n    builders[name](this.opt, this.axisModel, this.group, this._transformGroup);\n  };\n\n  AxisBuilder.prototype.getGroup = function () {\n    return this.group;\n  };\n\n  AxisBuilder.innerTextLayout = function (axisRotation, textRotation, direction) {\n    var rotationDiff = remRadian(textRotation - axisRotation);\n    var textAlign;\n    var textVerticalAlign;\n\n    if (isRadianAroundZero(rotationDiff)) {\n      // Label is parallel with axis line.\n      textVerticalAlign = direction > 0 ? 'top' : 'bottom';\n      textAlign = 'center';\n    } else if (isRadianAroundZero(rotationDiff - PI)) {\n      // Label is inverse parallel with axis line.\n      textVerticalAlign = direction > 0 ? 'bottom' : 'top';\n      textAlign = 'center';\n    } else {\n      textVerticalAlign = 'middle';\n\n      if (rotationDiff > 0 && rotationDiff < PI) {\n        textAlign = direction > 0 ? 'right' : 'left';\n      } else {\n        textAlign = direction > 0 ? 'left' : 'right';\n      }\n    }\n\n    return {\n      rotation: rotationDiff,\n      textAlign: textAlign,\n      textVerticalAlign: textVerticalAlign\n    };\n  };\n\n  AxisBuilder.makeAxisEventDataBase = function (axisModel) {\n    var eventData = {\n      componentType: axisModel.mainType,\n      componentIndex: axisModel.componentIndex\n    };\n    eventData[axisModel.mainType + 'Index'] = axisModel.componentIndex;\n    return eventData;\n  };\n\n  AxisBuilder.isLabelSilent = function (axisModel) {\n    var tooltipOpt = axisModel.get('tooltip');\n    return axisModel.get('silent') // Consider mouse cursor, add these restrictions.\n    || !(axisModel.get('triggerEvent') || tooltipOpt && tooltipOpt.show);\n  };\n\n  return AxisBuilder;\n}();\n\n;\nvar builders = {\n  axisLine: function (opt, axisModel, group, transformGroup) {\n    var shown = axisModel.get(['axisLine', 'show']);\n\n    if (shown === 'auto' && opt.handleAutoShown) {\n      shown = opt.handleAutoShown('axisLine');\n    }\n\n    if (!shown) {\n      return;\n    }\n\n    var extent = axisModel.axis.getExtent();\n    var matrix = transformGroup.transform;\n    var pt1 = [extent[0], 0];\n    var pt2 = [extent[1], 0];\n    var inverse = pt1[0] > pt2[0];\n\n    if (matrix) {\n      v2ApplyTransform(pt1, pt1, matrix);\n      v2ApplyTransform(pt2, pt2, matrix);\n    }\n\n    var lineStyle = extend({\n      lineCap: 'round'\n    }, axisModel.getModel(['axisLine', 'lineStyle']).getLineStyle());\n    var line = new graphic.Line({\n      shape: {\n        x1: pt1[0],\n        y1: pt1[1],\n        x2: pt2[0],\n        y2: pt2[1]\n      },\n      style: lineStyle,\n      strokeContainThreshold: opt.strokeContainThreshold || 5,\n      silent: true,\n      z2: 1\n    });\n    graphic.subPixelOptimizeLine(line.shape, line.style.lineWidth);\n    line.anid = 'line';\n    group.add(line);\n    var arrows = axisModel.get(['axisLine', 'symbol']);\n\n    if (arrows != null) {\n      var arrowSize = axisModel.get(['axisLine', 'symbolSize']);\n\n      if (isString(arrows)) {\n        // Use the same arrow for start and end point\n        arrows = [arrows, arrows];\n      }\n\n      if (isString(arrowSize) || isNumber(arrowSize)) {\n        // Use the same size for width and height\n        arrowSize = [arrowSize, arrowSize];\n      }\n\n      var arrowOffset = normalizeSymbolOffset(axisModel.get(['axisLine', 'symbolOffset']) || 0, arrowSize);\n      var symbolWidth_1 = arrowSize[0];\n      var symbolHeight_1 = arrowSize[1];\n      each([{\n        rotate: opt.rotation + Math.PI / 2,\n        offset: arrowOffset[0],\n        r: 0\n      }, {\n        rotate: opt.rotation - Math.PI / 2,\n        offset: arrowOffset[1],\n        r: Math.sqrt((pt1[0] - pt2[0]) * (pt1[0] - pt2[0]) + (pt1[1] - pt2[1]) * (pt1[1] - pt2[1]))\n      }], function (point, index) {\n        if (arrows[index] !== 'none' && arrows[index] != null) {\n          var symbol = createSymbol(arrows[index], -symbolWidth_1 / 2, -symbolHeight_1 / 2, symbolWidth_1, symbolHeight_1, lineStyle.stroke, true); // Calculate arrow position with offset\n\n          var r = point.r + point.offset;\n          var pt = inverse ? pt2 : pt1;\n          symbol.attr({\n            rotation: point.rotate,\n            x: pt[0] + r * Math.cos(opt.rotation),\n            y: pt[1] - r * Math.sin(opt.rotation),\n            silent: true,\n            z2: 11\n          });\n          group.add(symbol);\n        }\n      });\n    }\n  },\n  axisTickLabel: function (opt, axisModel, group, transformGroup) {\n    var ticksEls = buildAxisMajorTicks(group, transformGroup, axisModel, opt);\n    var labelEls = buildAxisLabel(group, transformGroup, axisModel, opt);\n    fixMinMaxLabelShow(axisModel, labelEls, ticksEls);\n    buildAxisMinorTicks(group, transformGroup, axisModel, opt.tickDirection); // This bit fixes the label overlap issue for the time chart.\n    // See https://github.com/apache/echarts/issues/14266 for more.\n\n    if (axisModel.get(['axisLabel', 'hideOverlap'])) {\n      var labelList = prepareLayoutList(map(labelEls, function (label) {\n        return {\n          label: label,\n          priority: label.z2,\n          defaultAttr: {\n            ignore: label.ignore\n          }\n        };\n      }));\n      hideOverlap(labelList);\n    }\n  },\n  axisName: function (opt, axisModel, group, transformGroup) {\n    var name = retrieve(opt.axisName, axisModel.get('name'));\n\n    if (!name) {\n      return;\n    }\n\n    var nameLocation = axisModel.get('nameLocation');\n    var nameDirection = opt.nameDirection;\n    var textStyleModel = axisModel.getModel('nameTextStyle');\n    var gap = axisModel.get('nameGap') || 0;\n    var extent = axisModel.axis.getExtent();\n    var gapSignal = extent[0] > extent[1] ? -1 : 1;\n    var pos = [nameLocation === 'start' ? extent[0] - gapSignal * gap : nameLocation === 'end' ? extent[1] + gapSignal * gap : (extent[0] + extent[1]) / 2, // Reuse labelOffset.\n    isNameLocationCenter(nameLocation) ? opt.labelOffset + nameDirection * gap : 0];\n    var labelLayout;\n    var nameRotation = axisModel.get('nameRotate');\n\n    if (nameRotation != null) {\n      nameRotation = nameRotation * PI / 180; // To radian.\n    }\n\n    var axisNameAvailableWidth;\n\n    if (isNameLocationCenter(nameLocation)) {\n      labelLayout = AxisBuilder.innerTextLayout(opt.rotation, nameRotation != null ? nameRotation : opt.rotation, // Adapt to axis.\n      nameDirection);\n    } else {\n      labelLayout = endTextLayout(opt.rotation, nameLocation, nameRotation || 0, extent);\n      axisNameAvailableWidth = opt.axisNameAvailableWidth;\n\n      if (axisNameAvailableWidth != null) {\n        axisNameAvailableWidth = Math.abs(axisNameAvailableWidth / Math.sin(labelLayout.rotation));\n        !isFinite(axisNameAvailableWidth) && (axisNameAvailableWidth = null);\n      }\n    }\n\n    var textFont = textStyleModel.getFont();\n    var truncateOpt = axisModel.get('nameTruncate', true) || {};\n    var ellipsis = truncateOpt.ellipsis;\n    var maxWidth = retrieve(opt.nameTruncateMaxWidth, truncateOpt.maxWidth, axisNameAvailableWidth);\n    var textEl = new graphic.Text({\n      x: pos[0],\n      y: pos[1],\n      rotation: labelLayout.rotation,\n      silent: AxisBuilder.isLabelSilent(axisModel),\n      style: createTextStyle(textStyleModel, {\n        text: name,\n        font: textFont,\n        overflow: 'truncate',\n        width: maxWidth,\n        ellipsis: ellipsis,\n        fill: textStyleModel.getTextColor() || axisModel.get(['axisLine', 'lineStyle', 'color']),\n        align: textStyleModel.get('align') || labelLayout.textAlign,\n        verticalAlign: textStyleModel.get('verticalAlign') || labelLayout.textVerticalAlign\n      }),\n      z2: 1\n    });\n    graphic.setTooltipConfig({\n      el: textEl,\n      componentModel: axisModel,\n      itemName: name\n    });\n    textEl.__fullText = name; // Id for animation\n\n    textEl.anid = 'name';\n\n    if (axisModel.get('triggerEvent')) {\n      var eventData = AxisBuilder.makeAxisEventDataBase(axisModel);\n      eventData.targetType = 'axisName';\n      eventData.name = name;\n      getECData(textEl).eventData = eventData;\n    } // FIXME\n\n\n    transformGroup.add(textEl);\n    textEl.updateTransform();\n    group.add(textEl);\n    textEl.decomposeTransform();\n  }\n};\n\nfunction endTextLayout(rotation, textPosition, textRotate, extent) {\n  var rotationDiff = remRadian(textRotate - rotation);\n  var textAlign;\n  var textVerticalAlign;\n  var inverse = extent[0] > extent[1];\n  var onLeft = textPosition === 'start' && !inverse || textPosition !== 'start' && inverse;\n\n  if (isRadianAroundZero(rotationDiff - PI / 2)) {\n    textVerticalAlign = onLeft ? 'bottom' : 'top';\n    textAlign = 'center';\n  } else if (isRadianAroundZero(rotationDiff - PI * 1.5)) {\n    textVerticalAlign = onLeft ? 'top' : 'bottom';\n    textAlign = 'center';\n  } else {\n    textVerticalAlign = 'middle';\n\n    if (rotationDiff < PI * 1.5 && rotationDiff > PI / 2) {\n      textAlign = onLeft ? 'left' : 'right';\n    } else {\n      textAlign = onLeft ? 'right' : 'left';\n    }\n  }\n\n  return {\n    rotation: rotationDiff,\n    textAlign: textAlign,\n    textVerticalAlign: textVerticalAlign\n  };\n}\n\nfunction fixMinMaxLabelShow(axisModel, labelEls, tickEls) {\n  if (shouldShowAllLabels(axisModel.axis)) {\n    return;\n  } // If min or max are user set, we need to check\n  // If the tick on min(max) are overlap on their neighbour tick\n  // If they are overlapped, we need to hide the min(max) tick label\n\n\n  var showMinLabel = axisModel.get(['axisLabel', 'showMinLabel']);\n  var showMaxLabel = axisModel.get(['axisLabel', 'showMaxLabel']); // FIXME\n  // Have not consider onBand yet, where tick els is more than label els.\n\n  labelEls = labelEls || [];\n  tickEls = tickEls || [];\n  var firstLabel = labelEls[0];\n  var nextLabel = labelEls[1];\n  var lastLabel = labelEls[labelEls.length - 1];\n  var prevLabel = labelEls[labelEls.length - 2];\n  var firstTick = tickEls[0];\n  var nextTick = tickEls[1];\n  var lastTick = tickEls[tickEls.length - 1];\n  var prevTick = tickEls[tickEls.length - 2];\n\n  if (showMinLabel === false) {\n    ignoreEl(firstLabel);\n    ignoreEl(firstTick);\n  } else if (isTwoLabelOverlapped(firstLabel, nextLabel)) {\n    if (showMinLabel) {\n      ignoreEl(nextLabel);\n      ignoreEl(nextTick);\n    } else {\n      ignoreEl(firstLabel);\n      ignoreEl(firstTick);\n    }\n  }\n\n  if (showMaxLabel === false) {\n    ignoreEl(lastLabel);\n    ignoreEl(lastTick);\n  } else if (isTwoLabelOverlapped(prevLabel, lastLabel)) {\n    if (showMaxLabel) {\n      ignoreEl(prevLabel);\n      ignoreEl(prevTick);\n    } else {\n      ignoreEl(lastLabel);\n      ignoreEl(lastTick);\n    }\n  }\n}\n\nfunction ignoreEl(el) {\n  el && (el.ignore = true);\n}\n\nfunction isTwoLabelOverlapped(current, next) {\n  // current and next has the same rotation.\n  var firstRect = current && current.getBoundingRect().clone();\n  var nextRect = next && next.getBoundingRect().clone();\n\n  if (!firstRect || !nextRect) {\n    return;\n  } // When checking intersect of two rotated labels, we use mRotationBack\n  // to avoid that boundingRect is enlarge when using `boundingRect.applyTransform`.\n\n\n  var mRotationBack = matrixUtil.identity([]);\n  matrixUtil.rotate(mRotationBack, mRotationBack, -current.rotation);\n  firstRect.applyTransform(matrixUtil.mul([], mRotationBack, current.getLocalTransform()));\n  nextRect.applyTransform(matrixUtil.mul([], mRotationBack, next.getLocalTransform()));\n  return firstRect.intersect(nextRect);\n}\n\nfunction isNameLocationCenter(nameLocation) {\n  return nameLocation === 'middle' || nameLocation === 'center';\n}\n\nfunction createTicks(ticksCoords, tickTransform, tickEndCoord, tickLineStyle, anidPrefix) {\n  var tickEls = [];\n  var pt1 = [];\n  var pt2 = [];\n\n  for (var i = 0; i < ticksCoords.length; i++) {\n    var tickCoord = ticksCoords[i].coord;\n    pt1[0] = tickCoord;\n    pt1[1] = 0;\n    pt2[0] = tickCoord;\n    pt2[1] = tickEndCoord;\n\n    if (tickTransform) {\n      v2ApplyTransform(pt1, pt1, tickTransform);\n      v2ApplyTransform(pt2, pt2, tickTransform);\n    } // Tick line, Not use group transform to have better line draw\n\n\n    var tickEl = new graphic.Line({\n      shape: {\n        x1: pt1[0],\n        y1: pt1[1],\n        x2: pt2[0],\n        y2: pt2[1]\n      },\n      style: tickLineStyle,\n      z2: 2,\n      autoBatch: true,\n      silent: true\n    });\n    graphic.subPixelOptimizeLine(tickEl.shape, tickEl.style.lineWidth);\n    tickEl.anid = anidPrefix + '_' + ticksCoords[i].tickValue;\n    tickEls.push(tickEl);\n  }\n\n  return tickEls;\n}\n\nfunction buildAxisMajorTicks(group, transformGroup, axisModel, opt) {\n  var axis = axisModel.axis;\n  var tickModel = axisModel.getModel('axisTick');\n  var shown = tickModel.get('show');\n\n  if (shown === 'auto' && opt.handleAutoShown) {\n    shown = opt.handleAutoShown('axisTick');\n  }\n\n  if (!shown || axis.scale.isBlank()) {\n    return;\n  }\n\n  var lineStyleModel = tickModel.getModel('lineStyle');\n  var tickEndCoord = opt.tickDirection * tickModel.get('length');\n  var ticksCoords = axis.getTicksCoords();\n  var ticksEls = createTicks(ticksCoords, transformGroup.transform, tickEndCoord, defaults(lineStyleModel.getLineStyle(), {\n    stroke: axisModel.get(['axisLine', 'lineStyle', 'color'])\n  }), 'ticks');\n\n  for (var i = 0; i < ticksEls.length; i++) {\n    group.add(ticksEls[i]);\n  }\n\n  return ticksEls;\n}\n\nfunction buildAxisMinorTicks(group, transformGroup, axisModel, tickDirection) {\n  var axis = axisModel.axis;\n  var minorTickModel = axisModel.getModel('minorTick');\n\n  if (!minorTickModel.get('show') || axis.scale.isBlank()) {\n    return;\n  }\n\n  var minorTicksCoords = axis.getMinorTicksCoords();\n\n  if (!minorTicksCoords.length) {\n    return;\n  }\n\n  var lineStyleModel = minorTickModel.getModel('lineStyle');\n  var tickEndCoord = tickDirection * minorTickModel.get('length');\n  var minorTickLineStyle = defaults(lineStyleModel.getLineStyle(), defaults(axisModel.getModel('axisTick').getLineStyle(), {\n    stroke: axisModel.get(['axisLine', 'lineStyle', 'color'])\n  }));\n\n  for (var i = 0; i < minorTicksCoords.length; i++) {\n    var minorTicksEls = createTicks(minorTicksCoords[i], transformGroup.transform, tickEndCoord, minorTickLineStyle, 'minorticks_' + i);\n\n    for (var k = 0; k < minorTicksEls.length; k++) {\n      group.add(minorTicksEls[k]);\n    }\n  }\n}\n\nfunction buildAxisLabel(group, transformGroup, axisModel, opt) {\n  var axis = axisModel.axis;\n  var show = retrieve(opt.axisLabelShow, axisModel.get(['axisLabel', 'show']));\n\n  if (!show || axis.scale.isBlank()) {\n    return;\n  }\n\n  var labelModel = axisModel.getModel('axisLabel');\n  var labelMargin = labelModel.get('margin');\n  var labels = axis.getViewLabels(); // Special label rotate.\n\n  var labelRotation = (retrieve(opt.labelRotate, labelModel.get('rotate')) || 0) * PI / 180;\n  var labelLayout = AxisBuilder.innerTextLayout(opt.rotation, labelRotation, opt.labelDirection);\n  var rawCategoryData = axisModel.getCategories && axisModel.getCategories(true);\n  var labelEls = [];\n  var silent = AxisBuilder.isLabelSilent(axisModel);\n  var triggerEvent = axisModel.get('triggerEvent');\n  each(labels, function (labelItem, index) {\n    var tickValue = axis.scale.type === 'ordinal' ? axis.scale.getRawOrdinalNumber(labelItem.tickValue) : labelItem.tickValue;\n    var formattedLabel = labelItem.formattedLabel;\n    var rawLabel = labelItem.rawLabel;\n    var itemLabelModel = labelModel;\n\n    if (rawCategoryData && rawCategoryData[tickValue]) {\n      var rawCategoryItem = rawCategoryData[tickValue];\n\n      if (isObject(rawCategoryItem) && rawCategoryItem.textStyle) {\n        itemLabelModel = new Model(rawCategoryItem.textStyle, labelModel, axisModel.ecModel);\n      }\n    }\n\n    var textColor = itemLabelModel.getTextColor() || axisModel.get(['axisLine', 'lineStyle', 'color']);\n    var tickCoord = axis.dataToCoord(tickValue);\n    var textEl = new graphic.Text({\n      x: tickCoord,\n      y: opt.labelOffset + opt.labelDirection * labelMargin,\n      rotation: labelLayout.rotation,\n      silent: silent,\n      z2: 10 + (labelItem.level || 0),\n      style: createTextStyle(itemLabelModel, {\n        text: formattedLabel,\n        align: itemLabelModel.getShallow('align', true) || labelLayout.textAlign,\n        verticalAlign: itemLabelModel.getShallow('verticalAlign', true) || itemLabelModel.getShallow('baseline', true) || labelLayout.textVerticalAlign,\n        fill: isFunction(textColor) ? textColor( // (1) In category axis with data zoom, tick is not the original\n        // index of axis.data. So tick should not be exposed to user\n        // in category axis.\n        // (2) Compatible with previous version, which always use formatted label as\n        // input. But in interval scale the formatted label is like '223,445', which\n        // maked user replace ','. So we modify it to return original val but remain\n        // it as 'string' to avoid error in replacing.\n        axis.type === 'category' ? rawLabel : axis.type === 'value' ? tickValue + '' : tickValue, index) : textColor\n      })\n    });\n    textEl.anid = 'label_' + tickValue; // Pack data for mouse event\n\n    if (triggerEvent) {\n      var eventData = AxisBuilder.makeAxisEventDataBase(axisModel);\n      eventData.targetType = 'axisLabel';\n      eventData.value = rawLabel;\n      eventData.tickIndex = index;\n\n      if (axis.type === 'category') {\n        eventData.dataIndex = tickValue;\n      }\n\n      getECData(textEl).eventData = eventData;\n    } // FIXME\n\n\n    transformGroup.add(textEl);\n    textEl.updateTransform();\n    labelEls.push(textEl);\n    group.add(textEl);\n    textEl.decomposeTransform();\n  });\n  return labelEls;\n}\n\nexport default AxisBuilder;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport Model from '../../model/Model.js';\nimport { each, curry, clone, defaults, isArray, indexOf } from 'zrender/lib/core/util.js'; // Build axisPointerModel, mergin tooltip.axisPointer model for each axis.\n// allAxesInfo should be updated when setOption performed.\n\nexport function collect(ecModel, api) {\n  var result = {\n    /**\r\n     * key: makeKey(axis.model)\r\n     * value: {\r\n     *      axis,\r\n     *      coordSys,\r\n     *      axisPointerModel,\r\n     *      triggerTooltip,\r\n     *      triggerEmphasis,\r\n     *      involveSeries,\r\n     *      snap,\r\n     *      seriesModels,\r\n     *      seriesDataCount\r\n     * }\r\n     */\n    axesInfo: {},\n    seriesInvolved: false,\n\n    /**\r\n     * key: makeKey(coordSys.model)\r\n     * value: Object: key makeKey(axis.model), value: axisInfo\r\n     */\n    coordSysAxesInfo: {},\n    coordSysMap: {}\n  };\n  collectAxesInfo(result, ecModel, api); // Check seriesInvolved for performance, in case too many series in some chart.\n\n  result.seriesInvolved && collectSeriesInfo(result, ecModel);\n  return result;\n}\n\nfunction collectAxesInfo(result, ecModel, api) {\n  var globalTooltipModel = ecModel.getComponent('tooltip');\n  var globalAxisPointerModel = ecModel.getComponent('axisPointer'); // links can only be set on global.\n\n  var linksOption = globalAxisPointerModel.get('link', true) || [];\n  var linkGroups = []; // Collect axes info.\n\n  each(api.getCoordinateSystems(), function (coordSys) {\n    // Some coordinate system do not support axes, like geo.\n    if (!coordSys.axisPointerEnabled) {\n      return;\n    }\n\n    var coordSysKey = makeKey(coordSys.model);\n    var axesInfoInCoordSys = result.coordSysAxesInfo[coordSysKey] = {};\n    result.coordSysMap[coordSysKey] = coordSys; // Set tooltip (like 'cross') is a convenient way to show axisPointer\n    // for user. So we enable setting tooltip on coordSys model.\n\n    var coordSysModel = coordSys.model;\n    var baseTooltipModel = coordSysModel.getModel('tooltip', globalTooltipModel);\n    each(coordSys.getAxes(), curry(saveTooltipAxisInfo, false, null)); // If axis tooltip used, choose tooltip axis for each coordSys.\n    // Notice this case: coordSys is `grid` but not `cartesian2D` here.\n\n    if (coordSys.getTooltipAxes && globalTooltipModel // If tooltip.showContent is set as false, tooltip will not\n    // show but axisPointer will show as normal.\n    && baseTooltipModel.get('show')) {\n      // Compatible with previous logic. But series.tooltip.trigger: 'axis'\n      // or series.data[n].tooltip.trigger: 'axis' are not support any more.\n      var triggerAxis = baseTooltipModel.get('trigger') === 'axis';\n      var cross = baseTooltipModel.get(['axisPointer', 'type']) === 'cross';\n      var tooltipAxes = coordSys.getTooltipAxes(baseTooltipModel.get(['axisPointer', 'axis']));\n\n      if (triggerAxis || cross) {\n        each(tooltipAxes.baseAxes, curry(saveTooltipAxisInfo, cross ? 'cross' : true, triggerAxis));\n      }\n\n      if (cross) {\n        each(tooltipAxes.otherAxes, curry(saveTooltipAxisInfo, 'cross', false));\n      }\n    } // fromTooltip: true | false | 'cross'\n    // triggerTooltip: true | false | null\n\n\n    function saveTooltipAxisInfo(fromTooltip, triggerTooltip, axis) {\n      var axisPointerModel = axis.model.getModel('axisPointer', globalAxisPointerModel);\n      var axisPointerShow = axisPointerModel.get('show');\n\n      if (!axisPointerShow || axisPointerShow === 'auto' && !fromTooltip && !isHandleTrigger(axisPointerModel)) {\n        return;\n      }\n\n      if (triggerTooltip == null) {\n        triggerTooltip = axisPointerModel.get('triggerTooltip');\n      }\n\n      axisPointerModel = fromTooltip ? makeAxisPointerModel(axis, baseTooltipModel, globalAxisPointerModel, ecModel, fromTooltip, triggerTooltip) : axisPointerModel;\n      var snap = axisPointerModel.get('snap');\n      var triggerEmphasis = axisPointerModel.get('triggerEmphasis');\n      var axisKey = makeKey(axis.model);\n      var involveSeries = triggerTooltip || snap || axis.type === 'category'; // If result.axesInfo[key] exist, override it (tooltip has higher priority).\n\n      var axisInfo = result.axesInfo[axisKey] = {\n        key: axisKey,\n        axis: axis,\n        coordSys: coordSys,\n        axisPointerModel: axisPointerModel,\n        triggerTooltip: triggerTooltip,\n        triggerEmphasis: triggerEmphasis,\n        involveSeries: involveSeries,\n        snap: snap,\n        useHandle: isHandleTrigger(axisPointerModel),\n        seriesModels: [],\n        linkGroup: null\n      };\n      axesInfoInCoordSys[axisKey] = axisInfo;\n      result.seriesInvolved = result.seriesInvolved || involveSeries;\n      var groupIndex = getLinkGroupIndex(linksOption, axis);\n\n      if (groupIndex != null) {\n        var linkGroup = linkGroups[groupIndex] || (linkGroups[groupIndex] = {\n          axesInfo: {}\n        });\n        linkGroup.axesInfo[axisKey] = axisInfo;\n        linkGroup.mapper = linksOption[groupIndex].mapper;\n        axisInfo.linkGroup = linkGroup;\n      }\n    }\n  });\n}\n\nfunction makeAxisPointerModel(axis, baseTooltipModel, globalAxisPointerModel, ecModel, fromTooltip, triggerTooltip) {\n  var tooltipAxisPointerModel = baseTooltipModel.getModel('axisPointer');\n  var fields = ['type', 'snap', 'lineStyle', 'shadowStyle', 'label', 'animation', 'animationDurationUpdate', 'animationEasingUpdate', 'z'];\n  var volatileOption = {};\n  each(fields, function (field) {\n    volatileOption[field] = clone(tooltipAxisPointerModel.get(field));\n  }); // category axis do not auto snap, otherwise some tick that do not\n  // has value can not be hovered. value/time/log axis default snap if\n  // triggered from tooltip and trigger tooltip.\n\n  volatileOption.snap = axis.type !== 'category' && !!triggerTooltip; // Compatible with previous behavior, tooltip axis does not show label by default.\n  // Only these properties can be overridden from tooltip to axisPointer.\n\n  if (tooltipAxisPointerModel.get('type') === 'cross') {\n    volatileOption.type = 'line';\n  }\n\n  var labelOption = volatileOption.label || (volatileOption.label = {}); // Follow the convention, do not show label when triggered by tooltip by default.\n\n  labelOption.show == null && (labelOption.show = false);\n\n  if (fromTooltip === 'cross') {\n    // When 'cross', both axes show labels.\n    var tooltipAxisPointerLabelShow = tooltipAxisPointerModel.get(['label', 'show']);\n    labelOption.show = tooltipAxisPointerLabelShow != null ? tooltipAxisPointerLabelShow : true; // If triggerTooltip, this is a base axis, which should better not use cross style\n    // (cross style is dashed by default)\n\n    if (!triggerTooltip) {\n      var crossStyle = volatileOption.lineStyle = tooltipAxisPointerModel.get('crossStyle');\n      crossStyle && defaults(labelOption, crossStyle.textStyle);\n    }\n  }\n\n  return axis.model.getModel('axisPointer', new Model(volatileOption, globalAxisPointerModel, ecModel));\n}\n\nfunction collectSeriesInfo(result, ecModel) {\n  // Prepare data for axis trigger\n  ecModel.eachSeries(function (seriesModel) {\n    // Notice this case: this coordSys is `cartesian2D` but not `grid`.\n    var coordSys = seriesModel.coordinateSystem;\n    var seriesTooltipTrigger = seriesModel.get(['tooltip', 'trigger'], true);\n    var seriesTooltipShow = seriesModel.get(['tooltip', 'show'], true);\n\n    if (!coordSys || seriesTooltipTrigger === 'none' || seriesTooltipTrigger === false || seriesTooltipTrigger === 'item' || seriesTooltipShow === false || seriesModel.get(['axisPointer', 'show'], true) === false) {\n      return;\n    }\n\n    each(result.coordSysAxesInfo[makeKey(coordSys.model)], function (axisInfo) {\n      var axis = axisInfo.axis;\n\n      if (coordSys.getAxis(axis.dim) === axis) {\n        axisInfo.seriesModels.push(seriesModel);\n        axisInfo.seriesDataCount == null && (axisInfo.seriesDataCount = 0);\n        axisInfo.seriesDataCount += seriesModel.getData().count();\n      }\n    });\n  });\n}\n/**\r\n * For example:\r\n * {\r\n *     axisPointer: {\r\n *         links: [{\r\n *             xAxisIndex: [2, 4],\r\n *             yAxisIndex: 'all'\r\n *         }, {\r\n *             xAxisId: ['a5', 'a7'],\r\n *             xAxisName: 'xxx'\r\n *         }]\r\n *     }\r\n * }\r\n */\n\n\nfunction getLinkGroupIndex(linksOption, axis) {\n  var axisModel = axis.model;\n  var dim = axis.dim;\n\n  for (var i = 0; i < linksOption.length; i++) {\n    var linkOption = linksOption[i] || {};\n\n    if (checkPropInLink(linkOption[dim + 'AxisId'], axisModel.id) || checkPropInLink(linkOption[dim + 'AxisIndex'], axisModel.componentIndex) || checkPropInLink(linkOption[dim + 'AxisName'], axisModel.name)) {\n      return i;\n    }\n  }\n}\n\nfunction checkPropInLink(linkPropValue, axisPropValue) {\n  return linkPropValue === 'all' || isArray(linkPropValue) && indexOf(linkPropValue, axisPropValue) >= 0 || linkPropValue === axisPropValue;\n}\n\nexport function fixValue(axisModel) {\n  var axisInfo = getAxisInfo(axisModel);\n\n  if (!axisInfo) {\n    return;\n  }\n\n  var axisPointerModel = axisInfo.axisPointerModel;\n  var scale = axisInfo.axis.scale;\n  var option = axisPointerModel.option;\n  var status = axisPointerModel.get('status');\n  var value = axisPointerModel.get('value'); // Parse init value for category and time axis.\n\n  if (value != null) {\n    value = scale.parse(value);\n  }\n\n  var useHandle = isHandleTrigger(axisPointerModel); // If `handle` used, `axisPointer` will always be displayed, so value\n  // and status should be initialized.\n\n  if (status == null) {\n    option.status = useHandle ? 'show' : 'hide';\n  }\n\n  var extent = scale.getExtent().slice();\n  extent[0] > extent[1] && extent.reverse();\n\n  if ( // Pick a value on axis when initializing.\n  value == null // If both `handle` and `dataZoom` are used, value may be out of axis extent,\n  // where we should re-pick a value to keep `handle` displaying normally.\n  || value > extent[1]) {\n    // Make handle displayed on the end of the axis when init, which looks better.\n    value = extent[1];\n  }\n\n  if (value < extent[0]) {\n    value = extent[0];\n  }\n\n  option.value = value;\n\n  if (useHandle) {\n    option.status = axisInfo.axis.scale.isBlank() ? 'hide' : 'show';\n  }\n}\nexport function getAxisInfo(axisModel) {\n  var coordSysAxesInfo = (axisModel.ecModel.getComponent('axisPointer') || {}).coordSysAxesInfo;\n  return coordSysAxesInfo && coordSysAxesInfo.axesInfo[makeKey(axisModel)];\n}\nexport function getAxisPointerModel(axisModel) {\n  var axisInfo = getAxisInfo(axisModel);\n  return axisInfo && axisInfo.axisPointerModel;\n}\n\nfunction isHandleTrigger(axisPointerModel) {\n  return !!axisPointerModel.get(['handle', 'show']);\n}\n/**\r\n * @param {module:echarts/model/Model} model\r\n * @return {string} unique key\r\n */\n\n\nexport function makeKey(model) {\n  return model.type + '||' + model.id;\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { __extends } from \"tslib\";\nimport * as axisPointerModelHelper from '../axisPointer/modelHelper.js';\nimport ComponentView from '../../view/Component.js';\nvar axisPointerClazz = {};\n/**\r\n * Base class of AxisView.\r\n */\n\nvar AxisView =\n/** @class */\nfunction (_super) {\n  __extends(AxisView, _super);\n\n  function AxisView() {\n    var _this = _super !== null && _super.apply(this, arguments) || this;\n\n    _this.type = AxisView.type;\n    return _this;\n  }\n  /**\r\n   * @override\r\n   */\n\n\n  AxisView.prototype.render = function (axisModel, ecModel, api, payload) {\n    // FIXME\n    // This process should proformed after coordinate systems updated\n    // (axis scale updated), and should be performed each time update.\n    // So put it here temporarily, although it is not appropriate to\n    // put a model-writing procedure in `view`.\n    this.axisPointerClass && axisPointerModelHelper.fixValue(axisModel);\n\n    _super.prototype.render.apply(this, arguments);\n\n    this._doUpdateAxisPointerClass(axisModel, api, true);\n  };\n  /**\r\n   * Action handler.\r\n   */\n\n\n  AxisView.prototype.updateAxisPointer = function (axisModel, ecModel, api, payload) {\n    this._doUpdateAxisPointerClass(axisModel, api, false);\n  };\n  /**\r\n   * @override\r\n   */\n\n\n  AxisView.prototype.remove = function (ecModel, api) {\n    var axisPointer = this._axisPointer;\n    axisPointer && axisPointer.remove(api);\n  };\n  /**\r\n   * @override\r\n   */\n\n\n  AxisView.prototype.dispose = function (ecModel, api) {\n    this._disposeAxisPointer(api);\n\n    _super.prototype.dispose.apply(this, arguments);\n  };\n\n  AxisView.prototype._doUpdateAxisPointerClass = function (axisModel, api, forceRender) {\n    var Clazz = AxisView.getAxisPointerClass(this.axisPointerClass);\n\n    if (!Clazz) {\n      return;\n    }\n\n    var axisPointerModel = axisPointerModelHelper.getAxisPointerModel(axisModel);\n    axisPointerModel ? (this._axisPointer || (this._axisPointer = new Clazz())).render(axisModel, axisPointerModel, api, forceRender) : this._disposeAxisPointer(api);\n  };\n\n  AxisView.prototype._disposeAxisPointer = function (api) {\n    this._axisPointer && this._axisPointer.dispose(api);\n    this._axisPointer = null;\n  };\n\n  AxisView.registerAxisPointerClass = function (type, clazz) {\n    if (process.env.NODE_ENV !== 'production') {\n      if (axisPointerClazz[type]) {\n        throw new Error('axisPointer ' + type + ' exists');\n      }\n    }\n\n    axisPointerClazz[type] = clazz;\n  };\n\n  ;\n\n  AxisView.getAxisPointerClass = function (type) {\n    return type && axisPointerClazz[type];\n  };\n\n  ;\n  AxisView.type = 'axis';\n  return AxisView;\n}(ComponentView);\n\nexport default AxisView;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport * as zrUtil from 'zrender/lib/core/util.js';\nimport * as graphic from '../../util/graphic.js';\nimport { makeInner } from '../../util/model.js';\nvar inner = makeInner();\nexport function rectCoordAxisBuildSplitArea(axisView, axisGroup, axisModel, gridModel) {\n  var axis = axisModel.axis;\n\n  if (axis.scale.isBlank()) {\n    return;\n  } // TODO: TYPE\n\n\n  var splitAreaModel = axisModel.getModel('splitArea');\n  var areaStyleModel = splitAreaModel.getModel('areaStyle');\n  var areaColors = areaStyleModel.get('color');\n  var gridRect = gridModel.coordinateSystem.getRect();\n  var ticksCoords = axis.getTicksCoords({\n    tickModel: splitAreaModel,\n    clamp: true\n  });\n\n  if (!ticksCoords.length) {\n    return;\n  } // For Making appropriate splitArea animation, the color and anid\n  // should be corresponding to previous one if possible.\n\n\n  var areaColorsLen = areaColors.length;\n  var lastSplitAreaColors = inner(axisView).splitAreaColors;\n  var newSplitAreaColors = zrUtil.createHashMap();\n  var colorIndex = 0;\n\n  if (lastSplitAreaColors) {\n    for (var i = 0; i < ticksCoords.length; i++) {\n      var cIndex = lastSplitAreaColors.get(ticksCoords[i].tickValue);\n\n      if (cIndex != null) {\n        colorIndex = (cIndex + (areaColorsLen - 1) * i) % areaColorsLen;\n        break;\n      }\n    }\n  }\n\n  var prev = axis.toGlobalCoord(ticksCoords[0].coord);\n  var areaStyle = areaStyleModel.getAreaStyle();\n  areaColors = zrUtil.isArray(areaColors) ? areaColors : [areaColors];\n\n  for (var i = 1; i < ticksCoords.length; i++) {\n    var tickCoord = axis.toGlobalCoord(ticksCoords[i].coord);\n    var x = void 0;\n    var y = void 0;\n    var width = void 0;\n    var height = void 0;\n\n    if (axis.isHorizontal()) {\n      x = prev;\n      y = gridRect.y;\n      width = tickCoord - x;\n      height = gridRect.height;\n      prev = x + width;\n    } else {\n      x = gridRect.x;\n      y = prev;\n      width = gridRect.width;\n      height = tickCoord - y;\n      prev = y + height;\n    }\n\n    var tickValue = ticksCoords[i - 1].tickValue;\n    tickValue != null && newSplitAreaColors.set(tickValue, colorIndex);\n    axisGroup.add(new graphic.Rect({\n      anid: tickValue != null ? 'area_' + tickValue : null,\n      shape: {\n        x: x,\n        y: y,\n        width: width,\n        height: height\n      },\n      style: zrUtil.defaults({\n        fill: areaColors[colorIndex]\n      }, areaStyle),\n      autoBatch: true,\n      silent: true\n    }));\n    colorIndex = (colorIndex + 1) % areaColorsLen;\n  }\n\n  inner(axisView).splitAreaColors = newSplitAreaColors;\n}\nexport function rectCoordAxisHandleRemove(axisView) {\n  inner(axisView).splitAreaColors = null;\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { __extends } from \"tslib\";\nimport * as zrUtil from 'zrender/lib/core/util.js';\nimport * as graphic from '../../util/graphic.js';\nimport AxisBuilder from './AxisBuilder.js';\nimport AxisView from './AxisView.js';\nimport * as cartesianAxisHelper from '../../coord/cartesian/cartesianAxisHelper.js';\nimport { rectCoordAxisBuildSplitArea, rectCoordAxisHandleRemove } from './axisSplitHelper.js';\nimport { isIntervalOrLogScale } from '../../scale/helper.js';\nvar axisBuilderAttrs = ['axisLine', 'axisTickLabel', 'axisName'];\nvar selfBuilderAttrs = ['splitArea', 'splitLine', 'minorSplitLine'];\n\nvar CartesianAxisView =\n/** @class */\nfunction (_super) {\n  __extends(CartesianAxisView, _super);\n\n  function CartesianAxisView() {\n    var _this = _super !== null && _super.apply(this, arguments) || this;\n\n    _this.type = CartesianAxisView.type;\n    _this.axisPointerClass = 'CartesianAxisPointer';\n    return _this;\n  }\n  /**\r\n   * @override\r\n   */\n\n\n  CartesianAxisView.prototype.render = function (axisModel, ecModel, api, payload) {\n    this.group.removeAll();\n    var oldAxisGroup = this._axisGroup;\n    this._axisGroup = new graphic.Group();\n    this.group.add(this._axisGroup);\n\n    if (!axisModel.get('show')) {\n      return;\n    }\n\n    var gridModel = axisModel.getCoordSysModel();\n    var layout = cartesianAxisHelper.layout(gridModel, axisModel);\n    var axisBuilder = new AxisBuilder(axisModel, zrUtil.extend({\n      handleAutoShown: function (elementType) {\n        var cartesians = gridModel.coordinateSystem.getCartesians();\n\n        for (var i = 0; i < cartesians.length; i++) {\n          if (isIntervalOrLogScale(cartesians[i].getOtherAxis(axisModel.axis).scale)) {\n            // Still show axis tick or axisLine if other axis is value / log\n            return true;\n          }\n        } // Not show axisTick or axisLine if other axis is category / time\n\n\n        return false;\n      }\n    }, layout));\n    zrUtil.each(axisBuilderAttrs, axisBuilder.add, axisBuilder);\n\n    this._axisGroup.add(axisBuilder.getGroup());\n\n    zrUtil.each(selfBuilderAttrs, function (name) {\n      if (axisModel.get([name, 'show'])) {\n        axisElementBuilders[name](this, this._axisGroup, axisModel, gridModel);\n      }\n    }, this); // THIS is a special case for bar racing chart.\n    // Update the axis label from the natural initial layout to\n    // sorted layout should has no animation.\n\n    var isInitialSortFromBarRacing = payload && payload.type === 'changeAxisOrder' && payload.isInitSort;\n\n    if (!isInitialSortFromBarRacing) {\n      graphic.groupTransition(oldAxisGroup, this._axisGroup, axisModel);\n    }\n\n    _super.prototype.render.call(this, axisModel, ecModel, api, payload);\n  };\n\n  CartesianAxisView.prototype.remove = function () {\n    rectCoordAxisHandleRemove(this);\n  };\n\n  CartesianAxisView.type = 'cartesianAxis';\n  return CartesianAxisView;\n}(AxisView);\n\nvar axisElementBuilders = {\n  splitLine: function (axisView, axisGroup, axisModel, gridModel) {\n    var axis = axisModel.axis;\n\n    if (axis.scale.isBlank()) {\n      return;\n    }\n\n    var splitLineModel = axisModel.getModel('splitLine');\n    var lineStyleModel = splitLineModel.getModel('lineStyle');\n    var lineColors = lineStyleModel.get('color');\n    lineColors = zrUtil.isArray(lineColors) ? lineColors : [lineColors];\n    var gridRect = gridModel.coordinateSystem.getRect();\n    var isHorizontal = axis.isHorizontal();\n    var lineCount = 0;\n    var ticksCoords = axis.getTicksCoords({\n      tickModel: splitLineModel\n    });\n    var p1 = [];\n    var p2 = [];\n    var lineStyle = lineStyleModel.getLineStyle();\n\n    for (var i = 0; i < ticksCoords.length; i++) {\n      var tickCoord = axis.toGlobalCoord(ticksCoords[i].coord);\n\n      if (isHorizontal) {\n        p1[0] = tickCoord;\n        p1[1] = gridRect.y;\n        p2[0] = tickCoord;\n        p2[1] = gridRect.y + gridRect.height;\n      } else {\n        p1[0] = gridRect.x;\n        p1[1] = tickCoord;\n        p2[0] = gridRect.x + gridRect.width;\n        p2[1] = tickCoord;\n      }\n\n      var colorIndex = lineCount++ % lineColors.length;\n      var tickValue = ticksCoords[i].tickValue;\n      var line = new graphic.Line({\n        anid: tickValue != null ? 'line_' + ticksCoords[i].tickValue : null,\n        autoBatch: true,\n        shape: {\n          x1: p1[0],\n          y1: p1[1],\n          x2: p2[0],\n          y2: p2[1]\n        },\n        style: zrUtil.defaults({\n          stroke: lineColors[colorIndex]\n        }, lineStyle),\n        silent: true\n      });\n      graphic.subPixelOptimizeLine(line.shape, lineStyle.lineWidth);\n      axisGroup.add(line);\n    }\n  },\n  minorSplitLine: function (axisView, axisGroup, axisModel, gridModel) {\n    var axis = axisModel.axis;\n    var minorSplitLineModel = axisModel.getModel('minorSplitLine');\n    var lineStyleModel = minorSplitLineModel.getModel('lineStyle');\n    var gridRect = gridModel.coordinateSystem.getRect();\n    var isHorizontal = axis.isHorizontal();\n    var minorTicksCoords = axis.getMinorTicksCoords();\n\n    if (!minorTicksCoords.length) {\n      return;\n    }\n\n    var p1 = [];\n    var p2 = [];\n    var lineStyle = lineStyleModel.getLineStyle();\n\n    for (var i = 0; i < minorTicksCoords.length; i++) {\n      for (var k = 0; k < minorTicksCoords[i].length; k++) {\n        var tickCoord = axis.toGlobalCoord(minorTicksCoords[i][k].coord);\n\n        if (isHorizontal) {\n          p1[0] = tickCoord;\n          p1[1] = gridRect.y;\n          p2[0] = tickCoord;\n          p2[1] = gridRect.y + gridRect.height;\n        } else {\n          p1[0] = gridRect.x;\n          p1[1] = tickCoord;\n          p2[0] = gridRect.x + gridRect.width;\n          p2[1] = tickCoord;\n        }\n\n        var line = new graphic.Line({\n          anid: 'minor_line_' + minorTicksCoords[i][k].tickValue,\n          autoBatch: true,\n          shape: {\n            x1: p1[0],\n            y1: p1[1],\n            x2: p2[0],\n            y2: p2[1]\n          },\n          style: lineStyle,\n          silent: true\n        });\n        graphic.subPixelOptimizeLine(line.shape, lineStyle.lineWidth);\n        axisGroup.add(line);\n      }\n    }\n  },\n  splitArea: function (axisView, axisGroup, axisModel, gridModel) {\n    rectCoordAxisBuildSplitArea(axisView, axisGroup, axisModel, gridModel);\n  }\n};\n\nvar CartesianXAxisView =\n/** @class */\nfunction (_super) {\n  __extends(CartesianXAxisView, _super);\n\n  function CartesianXAxisView() {\n    var _this = _super !== null && _super.apply(this, arguments) || this;\n\n    _this.type = CartesianXAxisView.type;\n    return _this;\n  }\n\n  CartesianXAxisView.type = 'xAxis';\n  return CartesianXAxisView;\n}(CartesianAxisView);\n\nexport { CartesianXAxisView };\n\nvar CartesianYAxisView =\n/** @class */\nfunction (_super) {\n  __extends(CartesianYAxisView, _super);\n\n  function CartesianYAxisView() {\n    var _this = _super !== null && _super.apply(this, arguments) || this;\n\n    _this.type = CartesianXAxisView.type;\n    return _this;\n  }\n\n  CartesianYAxisView.type = 'yAxis';\n  return CartesianYAxisView;\n}(CartesianAxisView);\n\nexport { CartesianYAxisView };\nexport default CartesianAxisView;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { __extends } from \"tslib\";\nimport ComponentView from '../../view/Component.js';\nimport GridModel from '../../coord/cartesian/GridModel.js';\nimport { Rect } from '../../util/graphic.js';\nimport { defaults } from 'zrender/lib/core/util.js';\nimport { CartesianAxisModel } from '../../coord/cartesian/AxisModel.js';\nimport axisModelCreator from '../../coord/axisModelCreator.js';\nimport Grid from '../../coord/cartesian/Grid.js';\nimport { CartesianXAxisView, CartesianYAxisView } from '../axis/CartesianAxisView.js'; // Grid view\n\nvar GridView =\n/** @class */\nfunction (_super) {\n  __extends(GridView, _super);\n\n  function GridView() {\n    var _this = _super !== null && _super.apply(this, arguments) || this;\n\n    _this.type = 'grid';\n    return _this;\n  }\n\n  GridView.prototype.render = function (gridModel, ecModel) {\n    this.group.removeAll();\n\n    if (gridModel.get('show')) {\n      this.group.add(new Rect({\n        shape: gridModel.coordinateSystem.getRect(),\n        style: defaults({\n          fill: gridModel.get('backgroundColor')\n        }, gridModel.getItemStyle()),\n        silent: true,\n        z2: -1\n      }));\n    }\n  };\n\n  GridView.type = 'grid';\n  return GridView;\n}(ComponentView);\n\nvar extraOption = {\n  // gridIndex: 0,\n  // gridId: '',\n  offset: 0\n};\nexport function install(registers) {\n  registers.registerComponentView(GridView);\n  registers.registerComponentModel(GridModel);\n  registers.registerCoordinateSystem('cartesian2d', Grid);\n  axisModelCreator(registers, 'x', CartesianAxisModel, extraOption);\n  axisModelCreator(registers, 'y', CartesianAxisModel, extraOption);\n  registers.registerComponentView(CartesianXAxisView);\n  registers.registerComponentView(CartesianYAxisView);\n  registers.registerPreprocessor(function (option) {\n    // Only create grid when need\n    if (option.xAxis && option.yAxis && !option.grid) {\n      option.grid = {};\n    }\n  });\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport * as zrUtil from 'zrender/lib/core/util.js';\nexport default function radarLayout(ecModel) {\n  ecModel.eachSeriesByType('radar', function (seriesModel) {\n    var data = seriesModel.getData();\n    var points = [];\n    var coordSys = seriesModel.coordinateSystem;\n\n    if (!coordSys) {\n      return;\n    }\n\n    var axes = coordSys.getIndicatorAxes();\n    zrUtil.each(axes, function (axis, axisIndex) {\n      data.each(data.mapDimension(axes[axisIndex].dim), function (val, dataIndex) {\n        points[dataIndex] = points[dataIndex] || [];\n        var point = coordSys.dataToPoint(val, axisIndex);\n        points[dataIndex][axisIndex] = isValidPoint(point) ? point : getValueMissingPoint(coordSys);\n      });\n    }); // Close polygon\n\n    data.each(function (idx) {\n      // TODO\n      // Is it appropriate to connect to the next data when some data is missing?\n      // Or, should trade it like `connectNull` in line chart?\n      var firstPoint = zrUtil.find(points[idx], function (point) {\n        return isValidPoint(point);\n      }) || getValueMissingPoint(coordSys); // Copy the first actual point to the end of the array\n\n      points[idx].push(firstPoint.slice());\n      data.setItemLayout(idx, points[idx]);\n    });\n  });\n}\n\nfunction isValidPoint(point) {\n  return !isNaN(point[0]) && !isNaN(point[1]);\n}\n\nfunction getValueMissingPoint(coordSys) {\n  // It is error-prone to input [NaN, NaN] into polygon, polygon.\n  // (probably cause problem when refreshing or animating)\n  return [coordSys.cx, coordSys.cy];\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\n// @ts-nocheck\n// Backward compat for radar chart in 2\nimport * as zrUtil from 'zrender/lib/core/util.js';\nexport default function radarBackwardCompat(option) {\n  var polarOptArr = option.polar;\n\n  if (polarOptArr) {\n    if (!zrUtil.isArray(polarOptArr)) {\n      polarOptArr = [polarOptArr];\n    }\n\n    var polarNotRadar_1 = [];\n    zrUtil.each(polarOptArr, function (polarOpt, idx) {\n      if (polarOpt.indicator) {\n        if (polarOpt.type && !polarOpt.shape) {\n          polarOpt.shape = polarOpt.type;\n        }\n\n        option.radar = option.radar || [];\n\n        if (!zrUtil.isArray(option.radar)) {\n          option.radar = [option.radar];\n        }\n\n        option.radar.push(polarOpt);\n      } else {\n        polarNotRadar_1.push(polarOpt);\n      }\n    });\n    option.polar = polarNotRadar_1;\n  }\n\n  zrUtil.each(option.series, function (seriesOpt) {\n    if (seriesOpt && seriesOpt.type === 'radar' && seriesOpt.polarIndex) {\n      seriesOpt.radarIndex = seriesOpt.polarIndex;\n    }\n  });\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { __extends } from \"tslib\";\nimport * as graphic from '../../util/graphic.js';\nimport { setStatesStylesFromModel, toggleHoverEmphasis } from '../../util/states.js';\nimport * as zrUtil from 'zrender/lib/core/util.js';\nimport * as symbolUtil from '../../util/symbol.js';\nimport ChartView from '../../view/Chart.js';\nimport { setLabelStyle, getLabelStatesModels } from '../../label/labelStyle.js';\nimport ZRImage from 'zrender/lib/graphic/Image.js';\nimport { saveOldStyle } from '../../animation/basicTransition.js';\n\nvar RadarView =\n/** @class */\nfunction (_super) {\n  __extends(RadarView, _super);\n\n  function RadarView() {\n    var _this = _super !== null && _super.apply(this, arguments) || this;\n\n    _this.type = RadarView.type;\n    return _this;\n  }\n\n  RadarView.prototype.render = function (seriesModel, ecModel, api) {\n    var polar = seriesModel.coordinateSystem;\n    var group = this.group;\n    var data = seriesModel.getData();\n    var oldData = this._data;\n\n    function createSymbol(data, idx) {\n      var symbolType = data.getItemVisual(idx, 'symbol') || 'circle';\n\n      if (symbolType === 'none') {\n        return;\n      }\n\n      var symbolSize = symbolUtil.normalizeSymbolSize(data.getItemVisual(idx, 'symbolSize'));\n      var symbolPath = symbolUtil.createSymbol(symbolType, -1, -1, 2, 2);\n      var symbolRotate = data.getItemVisual(idx, 'symbolRotate') || 0;\n      symbolPath.attr({\n        style: {\n          strokeNoScale: true\n        },\n        z2: 100,\n        scaleX: symbolSize[0] / 2,\n        scaleY: symbolSize[1] / 2,\n        rotation: symbolRotate * Math.PI / 180 || 0\n      });\n      return symbolPath;\n    }\n\n    function updateSymbols(oldPoints, newPoints, symbolGroup, data, idx, isInit) {\n      // Simply rerender all\n      symbolGroup.removeAll();\n\n      for (var i = 0; i < newPoints.length - 1; i++) {\n        var symbolPath = createSymbol(data, idx);\n\n        if (symbolPath) {\n          symbolPath.__dimIdx = i;\n\n          if (oldPoints[i]) {\n            symbolPath.setPosition(oldPoints[i]);\n            graphic[isInit ? 'initProps' : 'updateProps'](symbolPath, {\n              x: newPoints[i][0],\n              y: newPoints[i][1]\n            }, seriesModel, idx);\n          } else {\n            symbolPath.setPosition(newPoints[i]);\n          }\n\n          symbolGroup.add(symbolPath);\n        }\n      }\n    }\n\n    function getInitialPoints(points) {\n      return zrUtil.map(points, function (pt) {\n        return [polar.cx, polar.cy];\n      });\n    }\n\n    data.diff(oldData).add(function (idx) {\n      var points = data.getItemLayout(idx);\n\n      if (!points) {\n        return;\n      }\n\n      var polygon = new graphic.Polygon();\n      var polyline = new graphic.Polyline();\n      var target = {\n        shape: {\n          points: points\n        }\n      };\n      polygon.shape.points = getInitialPoints(points);\n      polyline.shape.points = getInitialPoints(points);\n      graphic.initProps(polygon, target, seriesModel, idx);\n      graphic.initProps(polyline, target, seriesModel, idx);\n      var itemGroup = new graphic.Group();\n      var symbolGroup = new graphic.Group();\n      itemGroup.add(polyline);\n      itemGroup.add(polygon);\n      itemGroup.add(symbolGroup);\n      updateSymbols(polyline.shape.points, points, symbolGroup, data, idx, true);\n      data.setItemGraphicEl(idx, itemGroup);\n    }).update(function (newIdx, oldIdx) {\n      var itemGroup = oldData.getItemGraphicEl(oldIdx);\n      var polyline = itemGroup.childAt(0);\n      var polygon = itemGroup.childAt(1);\n      var symbolGroup = itemGroup.childAt(2);\n      var target = {\n        shape: {\n          points: data.getItemLayout(newIdx)\n        }\n      };\n\n      if (!target.shape.points) {\n        return;\n      }\n\n      updateSymbols(polyline.shape.points, target.shape.points, symbolGroup, data, newIdx, false);\n      saveOldStyle(polygon);\n      saveOldStyle(polyline);\n      graphic.updateProps(polyline, target, seriesModel);\n      graphic.updateProps(polygon, target, seriesModel);\n      data.setItemGraphicEl(newIdx, itemGroup);\n    }).remove(function (idx) {\n      group.remove(oldData.getItemGraphicEl(idx));\n    }).execute();\n    data.eachItemGraphicEl(function (itemGroup, idx) {\n      var itemModel = data.getItemModel(idx);\n      var polyline = itemGroup.childAt(0);\n      var polygon = itemGroup.childAt(1);\n      var symbolGroup = itemGroup.childAt(2); // Radar uses the visual encoded from itemStyle.\n\n      var itemStyle = data.getItemVisual(idx, 'style');\n      var color = itemStyle.fill;\n      group.add(itemGroup);\n      polyline.useStyle(zrUtil.defaults(itemModel.getModel('lineStyle').getLineStyle(), {\n        fill: 'none',\n        stroke: color\n      }));\n      setStatesStylesFromModel(polyline, itemModel, 'lineStyle');\n      setStatesStylesFromModel(polygon, itemModel, 'areaStyle');\n      var areaStyleModel = itemModel.getModel('areaStyle');\n      var polygonIgnore = areaStyleModel.isEmpty() && areaStyleModel.parentModel.isEmpty();\n      polygon.ignore = polygonIgnore;\n      zrUtil.each(['emphasis', 'select', 'blur'], function (stateName) {\n        var stateModel = itemModel.getModel([stateName, 'areaStyle']);\n        var stateIgnore = stateModel.isEmpty() && stateModel.parentModel.isEmpty(); // Won't be ignore if normal state is not ignore.\n\n        polygon.ensureState(stateName).ignore = stateIgnore && polygonIgnore;\n      });\n      polygon.useStyle(zrUtil.defaults(areaStyleModel.getAreaStyle(), {\n        fill: color,\n        opacity: 0.7,\n        decal: itemStyle.decal\n      }));\n      var emphasisModel = itemModel.getModel('emphasis');\n      var itemHoverStyle = emphasisModel.getModel('itemStyle').getItemStyle();\n      symbolGroup.eachChild(function (symbolPath) {\n        if (symbolPath instanceof ZRImage) {\n          var pathStyle = symbolPath.style;\n          symbolPath.useStyle(zrUtil.extend({\n            // TODO other properties like x, y ?\n            image: pathStyle.image,\n            x: pathStyle.x,\n            y: pathStyle.y,\n            width: pathStyle.width,\n            height: pathStyle.height\n          }, itemStyle));\n        } else {\n          symbolPath.useStyle(itemStyle);\n          symbolPath.setColor(color);\n          symbolPath.style.strokeNoScale = true;\n        }\n\n        var pathEmphasisState = symbolPath.ensureState('emphasis');\n        pathEmphasisState.style = zrUtil.clone(itemHoverStyle);\n        var defaultText = data.getStore().get(data.getDimensionIndex(symbolPath.__dimIdx), idx);\n        (defaultText == null || isNaN(defaultText)) && (defaultText = '');\n        setLabelStyle(symbolPath, getLabelStatesModels(itemModel), {\n          labelFetcher: data.hostModel,\n          labelDataIndex: idx,\n          labelDimIndex: symbolPath.__dimIdx,\n          defaultText: defaultText,\n          inheritColor: color,\n          defaultOpacity: itemStyle.opacity\n        });\n      });\n      toggleHoverEmphasis(itemGroup, emphasisModel.get('focus'), emphasisModel.get('blurScope'), emphasisModel.get('disabled'));\n    });\n    this._data = data;\n  };\n\n  RadarView.prototype.remove = function () {\n    this.group.removeAll();\n    this._data = null;\n  };\n\n  RadarView.type = 'radar';\n  return RadarView;\n}(ChartView);\n\nexport default RadarView;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { __extends } from \"tslib\";\nimport SeriesModel from '../../model/Series.js';\nimport createSeriesDataSimply from '../helper/createSeriesDataSimply.js';\nimport * as zrUtil from 'zrender/lib/core/util.js';\nimport LegendVisualProvider from '../../visual/LegendVisualProvider.js';\nimport { createTooltipMarkup, retrieveVisualColorForTooltipMarker } from '../../component/tooltip/tooltipMarkup.js';\n\nvar RadarSeriesModel =\n/** @class */\nfunction (_super) {\n  __extends(RadarSeriesModel, _super);\n\n  function RadarSeriesModel() {\n    var _this = _super !== null && _super.apply(this, arguments) || this;\n\n    _this.type = RadarSeriesModel.type;\n    _this.hasSymbolVisual = true;\n    return _this;\n  } // Overwrite\n\n\n  RadarSeriesModel.prototype.init = function (option) {\n    _super.prototype.init.apply(this, arguments); // Enable legend selection for each data item\n    // Use a function instead of direct access because data reference may changed\n\n\n    this.legendVisualProvider = new LegendVisualProvider(zrUtil.bind(this.getData, this), zrUtil.bind(this.getRawData, this));\n  };\n\n  RadarSeriesModel.prototype.getInitialData = function (option, ecModel) {\n    return createSeriesDataSimply(this, {\n      generateCoord: 'indicator_',\n      generateCoordCount: Infinity\n    });\n  };\n\n  RadarSeriesModel.prototype.formatTooltip = function (dataIndex, multipleSeries, dataType) {\n    var data = this.getData();\n    var coordSys = this.coordinateSystem;\n    var indicatorAxes = coordSys.getIndicatorAxes();\n    var name = this.getData().getName(dataIndex);\n    var nameToDisplay = name === '' ? this.name : name;\n    var markerColor = retrieveVisualColorForTooltipMarker(this, dataIndex);\n    return createTooltipMarkup('section', {\n      header: nameToDisplay,\n      sortBlocks: true,\n      blocks: zrUtil.map(indicatorAxes, function (axis) {\n        var val = data.get(data.mapDimension(axis.dim), dataIndex);\n        return createTooltipMarkup('nameValue', {\n          markerType: 'subItem',\n          markerColor: markerColor,\n          name: axis.name,\n          value: val,\n          sortParam: val\n        });\n      })\n    });\n  };\n\n  RadarSeriesModel.prototype.getTooltipPosition = function (dataIndex) {\n    if (dataIndex != null) {\n      var data_1 = this.getData();\n      var coordSys = this.coordinateSystem;\n      var values = data_1.getValues(zrUtil.map(coordSys.dimensions, function (dim) {\n        return data_1.mapDimension(dim);\n      }), dataIndex);\n\n      for (var i = 0, len = values.length; i < len; i++) {\n        if (!isNaN(values[i])) {\n          var indicatorAxes = coordSys.getIndicatorAxes();\n          return coordSys.coordToPoint(indicatorAxes[i].dataToCoord(values[i]), i);\n        }\n      }\n    }\n  };\n\n  RadarSeriesModel.type = 'series.radar';\n  RadarSeriesModel.dependencies = ['radar'];\n  RadarSeriesModel.defaultOption = {\n    // zlevel: 0,\n    z: 2,\n    colorBy: 'data',\n    coordinateSystem: 'radar',\n    legendHoverLink: true,\n    radarIndex: 0,\n    lineStyle: {\n      width: 2,\n      type: 'solid',\n      join: 'round'\n    },\n    label: {\n      position: 'top'\n    },\n    // areaStyle: {\n    // },\n    // itemStyle: {}\n    symbolSize: 8 // symbolRotate: null\n\n  };\n  return RadarSeriesModel;\n}(SeriesModel);\n\nexport default RadarSeriesModel;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { __extends } from \"tslib\";\nimport * as zrUtil from 'zrender/lib/core/util.js';\nimport axisDefault from '../axisDefault.js';\nimport Model from '../../model/Model.js';\nimport { AxisModelCommonMixin } from '../axisModelCommonMixin.js';\nimport ComponentModel from '../../model/Component.js';\nvar valueAxisDefault = axisDefault.value;\n\nfunction defaultsShow(opt, show) {\n  return zrUtil.defaults({\n    show: show\n  }, opt);\n}\n\nvar RadarModel =\n/** @class */\nfunction (_super) {\n  __extends(RadarModel, _super);\n\n  function RadarModel() {\n    var _this = _super !== null && _super.apply(this, arguments) || this;\n\n    _this.type = RadarModel.type;\n    return _this;\n  }\n\n  RadarModel.prototype.optionUpdated = function () {\n    var boundaryGap = this.get('boundaryGap');\n    var splitNumber = this.get('splitNumber');\n    var scale = this.get('scale');\n    var axisLine = this.get('axisLine');\n    var axisTick = this.get('axisTick'); // let axisType = this.get('axisType');\n\n    var axisLabel = this.get('axisLabel');\n    var nameTextStyle = this.get('axisName');\n    var showName = this.get(['axisName', 'show']);\n    var nameFormatter = this.get(['axisName', 'formatter']);\n    var nameGap = this.get('axisNameGap');\n    var triggerEvent = this.get('triggerEvent');\n    var indicatorModels = zrUtil.map(this.get('indicator') || [], function (indicatorOpt) {\n      // PENDING\n      if (indicatorOpt.max != null && indicatorOpt.max > 0 && !indicatorOpt.min) {\n        indicatorOpt.min = 0;\n      } else if (indicatorOpt.min != null && indicatorOpt.min < 0 && !indicatorOpt.max) {\n        indicatorOpt.max = 0;\n      }\n\n      var iNameTextStyle = nameTextStyle;\n\n      if (indicatorOpt.color != null) {\n        iNameTextStyle = zrUtil.defaults({\n          color: indicatorOpt.color\n        }, nameTextStyle);\n      } // Use same configuration\n\n\n      var innerIndicatorOpt = zrUtil.merge(zrUtil.clone(indicatorOpt), {\n        boundaryGap: boundaryGap,\n        splitNumber: splitNumber,\n        scale: scale,\n        axisLine: axisLine,\n        axisTick: axisTick,\n        // axisType: axisType,\n        axisLabel: axisLabel,\n        // Compatible with 2 and use text\n        name: indicatorOpt.text,\n        showName: showName,\n        nameLocation: 'end',\n        nameGap: nameGap,\n        // min: 0,\n        nameTextStyle: iNameTextStyle,\n        triggerEvent: triggerEvent\n      }, false);\n\n      if (zrUtil.isString(nameFormatter)) {\n        var indName = innerIndicatorOpt.name;\n        innerIndicatorOpt.name = nameFormatter.replace('{value}', indName != null ? indName : '');\n      } else if (zrUtil.isFunction(nameFormatter)) {\n        innerIndicatorOpt.name = nameFormatter(innerIndicatorOpt.name, innerIndicatorOpt);\n      }\n\n      var model = new Model(innerIndicatorOpt, null, this.ecModel);\n      zrUtil.mixin(model, AxisModelCommonMixin.prototype); // For triggerEvent.\n\n      model.mainType = 'radar';\n      model.componentIndex = this.componentIndex;\n      return model;\n    }, this);\n    this._indicatorModels = indicatorModels;\n  };\n\n  RadarModel.prototype.getIndicatorModels = function () {\n    return this._indicatorModels;\n  };\n\n  RadarModel.type = 'radar';\n  RadarModel.defaultOption = {\n    // zlevel: 0,\n    z: 0,\n    center: ['50%', '50%'],\n    radius: '75%',\n    startAngle: 90,\n    axisName: {\n      show: true // formatter: null\n      // textStyle: {}\n\n    },\n    boundaryGap: [0, 0],\n    splitNumber: 5,\n    axisNameGap: 15,\n    scale: false,\n    // Polygon or circle\n    shape: 'polygon',\n    axisLine: zrUtil.merge({\n      lineStyle: {\n        color: '#bbb'\n      }\n    }, valueAxisDefault.axisLine),\n    axisLabel: defaultsShow(valueAxisDefault.axisLabel, false),\n    axisTick: defaultsShow(valueAxisDefault.axisTick, false),\n    // axisType: 'value',\n    splitLine: defaultsShow(valueAxisDefault.splitLine, true),\n    splitArea: defaultsShow(valueAxisDefault.splitArea, true),\n    // {text, min, max}\n    indicator: []\n  };\n  return RadarModel;\n}(ComponentModel);\n\nexport default RadarModel;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { __extends } from \"tslib\";\nimport * as zrUtil from 'zrender/lib/core/util.js';\nimport AxisBuilder from '../axis/AxisBuilder.js';\nimport * as graphic from '../../util/graphic.js';\nimport ComponentView from '../../view/Component.js';\nvar axisBuilderAttrs = ['axisLine', 'axisTickLabel', 'axisName'];\n\nvar RadarView =\n/** @class */\nfunction (_super) {\n  __extends(RadarView, _super);\n\n  function RadarView() {\n    var _this = _super !== null && _super.apply(this, arguments) || this;\n\n    _this.type = RadarView.type;\n    return _this;\n  }\n\n  RadarView.prototype.render = function (radarModel, ecModel, api) {\n    var group = this.group;\n    group.removeAll();\n\n    this._buildAxes(radarModel);\n\n    this._buildSplitLineAndArea(radarModel);\n  };\n\n  RadarView.prototype._buildAxes = function (radarModel) {\n    var radar = radarModel.coordinateSystem;\n    var indicatorAxes = radar.getIndicatorAxes();\n    var axisBuilders = zrUtil.map(indicatorAxes, function (indicatorAxis) {\n      var axisName = indicatorAxis.model.get('showName') ? indicatorAxis.name : ''; // hide name\n\n      var axisBuilder = new AxisBuilder(indicatorAxis.model, {\n        axisName: axisName,\n        position: [radar.cx, radar.cy],\n        rotation: indicatorAxis.angle,\n        labelDirection: -1,\n        tickDirection: -1,\n        nameDirection: 1\n      });\n      return axisBuilder;\n    });\n    zrUtil.each(axisBuilders, function (axisBuilder) {\n      zrUtil.each(axisBuilderAttrs, axisBuilder.add, axisBuilder);\n      this.group.add(axisBuilder.getGroup());\n    }, this);\n  };\n\n  RadarView.prototype._buildSplitLineAndArea = function (radarModel) {\n    var radar = radarModel.coordinateSystem;\n    var indicatorAxes = radar.getIndicatorAxes();\n\n    if (!indicatorAxes.length) {\n      return;\n    }\n\n    var shape = radarModel.get('shape');\n    var splitLineModel = radarModel.getModel('splitLine');\n    var splitAreaModel = radarModel.getModel('splitArea');\n    var lineStyleModel = splitLineModel.getModel('lineStyle');\n    var areaStyleModel = splitAreaModel.getModel('areaStyle');\n    var showSplitLine = splitLineModel.get('show');\n    var showSplitArea = splitAreaModel.get('show');\n    var splitLineColors = lineStyleModel.get('color');\n    var splitAreaColors = areaStyleModel.get('color');\n    var splitLineColorsArr = zrUtil.isArray(splitLineColors) ? splitLineColors : [splitLineColors];\n    var splitAreaColorsArr = zrUtil.isArray(splitAreaColors) ? splitAreaColors : [splitAreaColors];\n    var splitLines = [];\n    var splitAreas = [];\n\n    function getColorIndex(areaOrLine, areaOrLineColorList, idx) {\n      var colorIndex = idx % areaOrLineColorList.length;\n      areaOrLine[colorIndex] = areaOrLine[colorIndex] || [];\n      return colorIndex;\n    }\n\n    if (shape === 'circle') {\n      var ticksRadius = indicatorAxes[0].getTicksCoords();\n      var cx = radar.cx;\n      var cy = radar.cy;\n\n      for (var i = 0; i < ticksRadius.length; i++) {\n        if (showSplitLine) {\n          var colorIndex = getColorIndex(splitLines, splitLineColorsArr, i);\n          splitLines[colorIndex].push(new graphic.Circle({\n            shape: {\n              cx: cx,\n              cy: cy,\n              r: ticksRadius[i].coord\n            }\n          }));\n        }\n\n        if (showSplitArea && i < ticksRadius.length - 1) {\n          var colorIndex = getColorIndex(splitAreas, splitAreaColorsArr, i);\n          splitAreas[colorIndex].push(new graphic.Ring({\n            shape: {\n              cx: cx,\n              cy: cy,\n              r0: ticksRadius[i].coord,\n              r: ticksRadius[i + 1].coord\n            }\n          }));\n        }\n      }\n    } // Polyyon\n    else {\n        var realSplitNumber_1;\n        var axesTicksPoints = zrUtil.map(indicatorAxes, function (indicatorAxis, idx) {\n          var ticksCoords = indicatorAxis.getTicksCoords();\n          realSplitNumber_1 = realSplitNumber_1 == null ? ticksCoords.length - 1 : Math.min(ticksCoords.length - 1, realSplitNumber_1);\n          return zrUtil.map(ticksCoords, function (tickCoord) {\n            return radar.coordToPoint(tickCoord.coord, idx);\n          });\n        });\n        var prevPoints = [];\n\n        for (var i = 0; i <= realSplitNumber_1; i++) {\n          var points = [];\n\n          for (var j = 0; j < indicatorAxes.length; j++) {\n            points.push(axesTicksPoints[j][i]);\n          } // Close\n\n\n          if (points[0]) {\n            points.push(points[0].slice());\n          } else {\n            if (process.env.NODE_ENV !== 'production') {\n              console.error('Can\\'t draw value axis ' + i);\n            }\n          }\n\n          if (showSplitLine) {\n            var colorIndex = getColorIndex(splitLines, splitLineColorsArr, i);\n            splitLines[colorIndex].push(new graphic.Polyline({\n              shape: {\n                points: points\n              }\n            }));\n          }\n\n          if (showSplitArea && prevPoints) {\n            var colorIndex = getColorIndex(splitAreas, splitAreaColorsArr, i - 1);\n            splitAreas[colorIndex].push(new graphic.Polygon({\n              shape: {\n                points: points.concat(prevPoints)\n              }\n            }));\n          }\n\n          prevPoints = points.slice().reverse();\n        }\n      }\n\n    var lineStyle = lineStyleModel.getLineStyle();\n    var areaStyle = areaStyleModel.getAreaStyle(); // Add splitArea before splitLine\n\n    zrUtil.each(splitAreas, function (splitAreas, idx) {\n      this.group.add(graphic.mergePath(splitAreas, {\n        style: zrUtil.defaults({\n          stroke: 'none',\n          fill: splitAreaColorsArr[idx % splitAreaColorsArr.length]\n        }, areaStyle),\n        silent: true\n      }));\n    }, this);\n    zrUtil.each(splitLines, function (splitLines, idx) {\n      this.group.add(graphic.mergePath(splitLines, {\n        style: zrUtil.defaults({\n          fill: 'none',\n          stroke: splitLineColorsArr[idx % splitLineColorsArr.length]\n        }, lineStyle),\n        silent: true\n      }));\n    }, this);\n  };\n\n  RadarView.type = 'radar';\n  return RadarView;\n}(ComponentView);\n\nexport default RadarView;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { __extends } from \"tslib\";\nimport Axis from '../Axis.js';\n\nvar IndicatorAxis =\n/** @class */\nfunction (_super) {\n  __extends(IndicatorAxis, _super);\n\n  function IndicatorAxis(dim, scale, radiusExtent) {\n    var _this = _super.call(this, dim, scale, radiusExtent) || this;\n\n    _this.type = 'value';\n    _this.angle = 0;\n    _this.name = '';\n    return _this;\n  }\n\n  return IndicatorAxis;\n}(Axis);\n\nexport default IndicatorAxis;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\n// TODO clockwise\nimport IndicatorAxis from './IndicatorAxis.js';\nimport IntervalScale from '../../scale/Interval.js';\nimport * as numberUtil from '../../util/number.js';\nimport { map, each, isString, isNumber } from 'zrender/lib/core/util.js';\nimport { alignScaleTicks } from '../axisAlignTicks.js';\n\nvar Radar =\n/** @class */\nfunction () {\n  function Radar(radarModel, ecModel, api) {\n    /**\r\n     *\r\n     * Radar dimensions\r\n     */\n    this.dimensions = [];\n    this._model = radarModel;\n    this._indicatorAxes = map(radarModel.getIndicatorModels(), function (indicatorModel, idx) {\n      var dim = 'indicator_' + idx;\n      var indicatorAxis = new IndicatorAxis(dim, new IntervalScale() // (indicatorModel.get('axisType') === 'log') ? new LogScale() : new IntervalScale()\n      );\n      indicatorAxis.name = indicatorModel.get('name'); // Inject model and axis\n\n      indicatorAxis.model = indicatorModel;\n      indicatorModel.axis = indicatorAxis;\n      this.dimensions.push(dim);\n      return indicatorAxis;\n    }, this);\n    this.resize(radarModel, api);\n  }\n\n  Radar.prototype.getIndicatorAxes = function () {\n    return this._indicatorAxes;\n  };\n\n  Radar.prototype.dataToPoint = function (value, indicatorIndex) {\n    var indicatorAxis = this._indicatorAxes[indicatorIndex];\n    return this.coordToPoint(indicatorAxis.dataToCoord(value), indicatorIndex);\n  }; // TODO: API should be coordToPoint([coord, indicatorIndex])\n\n\n  Radar.prototype.coordToPoint = function (coord, indicatorIndex) {\n    var indicatorAxis = this._indicatorAxes[indicatorIndex];\n    var angle = indicatorAxis.angle;\n    var x = this.cx + coord * Math.cos(angle);\n    var y = this.cy - coord * Math.sin(angle);\n    return [x, y];\n  };\n\n  Radar.prototype.pointToData = function (pt) {\n    var dx = pt[0] - this.cx;\n    var dy = pt[1] - this.cy;\n    var radius = Math.sqrt(dx * dx + dy * dy);\n    dx /= radius;\n    dy /= radius;\n    var radian = Math.atan2(-dy, dx); // Find the closest angle\n    // FIXME index can calculated directly\n\n    var minRadianDiff = Infinity;\n    var closestAxis;\n    var closestAxisIdx = -1;\n\n    for (var i = 0; i < this._indicatorAxes.length; i++) {\n      var indicatorAxis = this._indicatorAxes[i];\n      var diff = Math.abs(radian - indicatorAxis.angle);\n\n      if (diff < minRadianDiff) {\n        closestAxis = indicatorAxis;\n        closestAxisIdx = i;\n        minRadianDiff = diff;\n      }\n    }\n\n    return [closestAxisIdx, +(closestAxis && closestAxis.coordToData(radius))];\n  };\n\n  Radar.prototype.resize = function (radarModel, api) {\n    var center = radarModel.get('center');\n    var viewWidth = api.getWidth();\n    var viewHeight = api.getHeight();\n    var viewSize = Math.min(viewWidth, viewHeight) / 2;\n    this.cx = numberUtil.parsePercent(center[0], viewWidth);\n    this.cy = numberUtil.parsePercent(center[1], viewHeight);\n    this.startAngle = radarModel.get('startAngle') * Math.PI / 180; // radius may be single value like `20`, `'80%'`, or array like `[10, '80%']`\n\n    var radius = radarModel.get('radius');\n\n    if (isString(radius) || isNumber(radius)) {\n      radius = [0, radius];\n    }\n\n    this.r0 = numberUtil.parsePercent(radius[0], viewSize);\n    this.r = numberUtil.parsePercent(radius[1], viewSize);\n    each(this._indicatorAxes, function (indicatorAxis, idx) {\n      indicatorAxis.setExtent(this.r0, this.r);\n      var angle = this.startAngle + idx * Math.PI * 2 / this._indicatorAxes.length; // Normalize to [-PI, PI]\n\n      angle = Math.atan2(Math.sin(angle), Math.cos(angle));\n      indicatorAxis.angle = angle;\n    }, this);\n  };\n\n  Radar.prototype.update = function (ecModel, api) {\n    var indicatorAxes = this._indicatorAxes;\n    var radarModel = this._model;\n    each(indicatorAxes, function (indicatorAxis) {\n      indicatorAxis.scale.setExtent(Infinity, -Infinity);\n    });\n    ecModel.eachSeriesByType('radar', function (radarSeries, idx) {\n      if (radarSeries.get('coordinateSystem') !== 'radar' // @ts-ignore\n      || ecModel.getComponent('radar', radarSeries.get('radarIndex')) !== radarModel) {\n        return;\n      }\n\n      var data = radarSeries.getData();\n      each(indicatorAxes, function (indicatorAxis) {\n        indicatorAxis.scale.unionExtentFromData(data, data.mapDimension(indicatorAxis.dim));\n      });\n    }, this);\n    var splitNumber = radarModel.get('splitNumber');\n    var dummyScale = new IntervalScale();\n    dummyScale.setExtent(0, splitNumber);\n    dummyScale.setInterval(1); // Force all the axis fixing the maxSplitNumber.\n\n    each(indicatorAxes, function (indicatorAxis, idx) {\n      alignScaleTicks(indicatorAxis.scale, indicatorAxis.model, dummyScale);\n    });\n  };\n\n  Radar.prototype.convertToPixel = function (ecModel, finder, value) {\n    console.warn('Not implemented.');\n    return null;\n  };\n\n  Radar.prototype.convertFromPixel = function (ecModel, finder, pixel) {\n    console.warn('Not implemented.');\n    return null;\n  };\n\n  Radar.prototype.containPoint = function (point) {\n    console.warn('Not implemented.');\n    return false;\n  };\n\n  Radar.create = function (ecModel, api) {\n    var radarList = [];\n    ecModel.eachComponent('radar', function (radarModel) {\n      var radar = new Radar(radarModel, ecModel, api);\n      radarList.push(radar);\n      radarModel.coordinateSystem = radar;\n    });\n    ecModel.eachSeriesByType('radar', function (radarSeries) {\n      if (radarSeries.get('coordinateSystem') === 'radar') {\n        // Inject coordinate system\n        // @ts-ignore\n        radarSeries.coordinateSystem = radarList[radarSeries.get('radarIndex') || 0];\n      }\n    });\n    return radarList;\n  };\n  /**\r\n   * Radar dimensions is based on the data\r\n   */\n\n\n  Radar.dimensions = [];\n  return Radar;\n}();\n\nexport default Radar;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport RadarModel from '../../coord/radar/RadarModel.js';\nimport RadarView from './RadarView.js';\nimport Radar from '../../coord/radar/Radar.js';\nexport function install(registers) {\n  registers.registerCoordinateSystem('radar', Radar);\n  registers.registerComponentModel(RadarModel);\n  registers.registerComponentView(RadarView);\n  registers.registerVisual({\n    seriesType: 'radar',\n    reset: function (seriesModel) {\n      var data = seriesModel.getData(); // itemVisual symbol is for selected data\n\n      data.each(function (idx) {\n        data.setItemVisual(idx, 'legendIcon', 'roundRect');\n      }); // visual is for unselected data\n\n      data.setVisual('legendIcon', 'roundRect');\n    }\n  });\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\n// @ts-nocheck\nimport * as echarts from '../../core/echarts.js';\nimport { noop } from 'zrender/lib/core/util.js';\nvar ATTR = '\\0_ec_interaction_mutex';\nexport function take(zr, resourceKey, userKey) {\n  var store = getStore(zr);\n  store[resourceKey] = userKey;\n}\nexport function release(zr, resourceKey, userKey) {\n  var store = getStore(zr);\n  var uKey = store[resourceKey];\n\n  if (uKey === userKey) {\n    store[resourceKey] = null;\n  }\n}\nexport function isTaken(zr, resourceKey) {\n  return !!getStore(zr)[resourceKey];\n}\n\nfunction getStore(zr) {\n  return zr[ATTR] || (zr[ATTR] = {});\n}\n/**\r\n * payload: {\r\n *     type: 'takeGlobalCursor',\r\n *     key: 'dataZoomSelect', or 'brush', or ...,\r\n *         If no userKey, release global cursor.\r\n * }\r\n */\n// TODO: SELF REGISTERED.\n\n\necharts.registerAction({\n  type: 'takeGlobalCursor',\n  event: 'globalCursorTaken',\n  update: 'update'\n}, noop);","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { __extends } from \"tslib\";\nimport Eventful from 'zrender/lib/core/Eventful.js';\nimport * as eventTool from 'zrender/lib/core/event.js';\nimport * as interactionMutex from './interactionMutex.js';\nimport { isString, bind, defaults, clone } from 'zrender/lib/core/util.js';\n;\n\nvar RoamController =\n/** @class */\nfunction (_super) {\n  __extends(RoamController, _super);\n\n  function RoamController(zr) {\n    var _this = _super.call(this) || this;\n\n    _this._zr = zr; // Avoid two roamController bind the same handler\n\n    var mousedownHandler = bind(_this._mousedownHandler, _this);\n    var mousemoveHandler = bind(_this._mousemoveHandler, _this);\n    var mouseupHandler = bind(_this._mouseupHandler, _this);\n    var mousewheelHandler = bind(_this._mousewheelHandler, _this);\n    var pinchHandler = bind(_this._pinchHandler, _this);\n    /**\r\n     * Notice: only enable needed types. For example, if 'zoom'\r\n     * is not needed, 'zoom' should not be enabled, otherwise\r\n     * default mousewheel behaviour (scroll page) will be disabled.\r\n     */\n\n    _this.enable = function (controlType, opt) {\n      // Disable previous first\n      this.disable();\n      this._opt = defaults(clone(opt) || {}, {\n        zoomOnMouseWheel: true,\n        moveOnMouseMove: true,\n        // By default, wheel do not trigger move.\n        moveOnMouseWheel: false,\n        preventDefaultMouseMove: true\n      });\n\n      if (controlType == null) {\n        controlType = true;\n      }\n\n      if (controlType === true || controlType === 'move' || controlType === 'pan') {\n        zr.on('mousedown', mousedownHandler);\n        zr.on('mousemove', mousemoveHandler);\n        zr.on('mouseup', mouseupHandler);\n      }\n\n      if (controlType === true || controlType === 'scale' || controlType === 'zoom') {\n        zr.on('mousewheel', mousewheelHandler);\n        zr.on('pinch', pinchHandler);\n      }\n    };\n\n    _this.disable = function () {\n      zr.off('mousedown', mousedownHandler);\n      zr.off('mousemove', mousemoveHandler);\n      zr.off('mouseup', mouseupHandler);\n      zr.off('mousewheel', mousewheelHandler);\n      zr.off('pinch', pinchHandler);\n    };\n\n    return _this;\n  }\n\n  RoamController.prototype.isDragging = function () {\n    return this._dragging;\n  };\n\n  RoamController.prototype.isPinching = function () {\n    return this._pinching;\n  };\n\n  RoamController.prototype.setPointerChecker = function (pointerChecker) {\n    this.pointerChecker = pointerChecker;\n  };\n\n  RoamController.prototype.dispose = function () {\n    this.disable();\n  };\n\n  RoamController.prototype._mousedownHandler = function (e) {\n    if (eventTool.isMiddleOrRightButtonOnMouseUpDown(e)) {\n      return;\n    }\n\n    var el = e.target;\n\n    while (el) {\n      if (el.draggable) {\n        return;\n      } // check if host is draggable\n\n\n      el = el.__hostTarget || el.parent;\n    }\n\n    var x = e.offsetX;\n    var y = e.offsetY; // Only check on mosedown, but not mousemove.\n    // Mouse can be out of target when mouse moving.\n\n    if (this.pointerChecker && this.pointerChecker(e, x, y)) {\n      this._x = x;\n      this._y = y;\n      this._dragging = true;\n    }\n  };\n\n  RoamController.prototype._mousemoveHandler = function (e) {\n    if (!this._dragging || !isAvailableBehavior('moveOnMouseMove', e, this._opt) || e.gestureEvent === 'pinch' || interactionMutex.isTaken(this._zr, 'globalPan')) {\n      return;\n    }\n\n    var x = e.offsetX;\n    var y = e.offsetY;\n    var oldX = this._x;\n    var oldY = this._y;\n    var dx = x - oldX;\n    var dy = y - oldY;\n    this._x = x;\n    this._y = y;\n    this._opt.preventDefaultMouseMove && eventTool.stop(e.event);\n    trigger(this, 'pan', 'moveOnMouseMove', e, {\n      dx: dx,\n      dy: dy,\n      oldX: oldX,\n      oldY: oldY,\n      newX: x,\n      newY: y,\n      isAvailableBehavior: null\n    });\n  };\n\n  RoamController.prototype._mouseupHandler = function (e) {\n    if (!eventTool.isMiddleOrRightButtonOnMouseUpDown(e)) {\n      this._dragging = false;\n    }\n  };\n\n  RoamController.prototype._mousewheelHandler = function (e) {\n    var shouldZoom = isAvailableBehavior('zoomOnMouseWheel', e, this._opt);\n    var shouldMove = isAvailableBehavior('moveOnMouseWheel', e, this._opt);\n    var wheelDelta = e.wheelDelta;\n    var absWheelDeltaDelta = Math.abs(wheelDelta);\n    var originX = e.offsetX;\n    var originY = e.offsetY; // wheelDelta maybe -0 in chrome mac.\n\n    if (wheelDelta === 0 || !shouldZoom && !shouldMove) {\n      return;\n    } // If both `shouldZoom` and `shouldMove` is true, trigger\n    // their event both, and the final behavior is determined\n    // by event listener themselves.\n\n\n    if (shouldZoom) {\n      // Convenience:\n      // Mac and VM Windows on Mac: scroll up: zoom out.\n      // Windows: scroll up: zoom in.\n      // FIXME: Should do more test in different environment.\n      // wheelDelta is too complicated in difference nvironment\n      // (https://developer.mozilla.org/en-US/docs/Web/Events/mousewheel),\n      // although it has been normallized by zrender.\n      // wheelDelta of mouse wheel is bigger than touch pad.\n      var factor = absWheelDeltaDelta > 3 ? 1.4 : absWheelDeltaDelta > 1 ? 1.2 : 1.1;\n      var scale = wheelDelta > 0 ? factor : 1 / factor;\n      checkPointerAndTrigger(this, 'zoom', 'zoomOnMouseWheel', e, {\n        scale: scale,\n        originX: originX,\n        originY: originY,\n        isAvailableBehavior: null\n      });\n    }\n\n    if (shouldMove) {\n      // FIXME: Should do more test in different environment.\n      var absDelta = Math.abs(wheelDelta); // wheelDelta of mouse wheel is bigger than touch pad.\n\n      var scrollDelta = (wheelDelta > 0 ? 1 : -1) * (absDelta > 3 ? 0.4 : absDelta > 1 ? 0.15 : 0.05);\n      checkPointerAndTrigger(this, 'scrollMove', 'moveOnMouseWheel', e, {\n        scrollDelta: scrollDelta,\n        originX: originX,\n        originY: originY,\n        isAvailableBehavior: null\n      });\n    }\n  };\n\n  RoamController.prototype._pinchHandler = function (e) {\n    if (interactionMutex.isTaken(this._zr, 'globalPan')) {\n      return;\n    }\n\n    var scale = e.pinchScale > 1 ? 1.1 : 1 / 1.1;\n    checkPointerAndTrigger(this, 'zoom', null, e, {\n      scale: scale,\n      originX: e.pinchX,\n      originY: e.pinchY,\n      isAvailableBehavior: null\n    });\n  };\n\n  return RoamController;\n}(Eventful);\n\nfunction checkPointerAndTrigger(controller, eventName, behaviorToCheck, e, contollerEvent) {\n  if (controller.pointerChecker && controller.pointerChecker(e, contollerEvent.originX, contollerEvent.originY)) {\n    // When mouse is out of roamController rect,\n    // default befavoius should not be be disabled, otherwise\n    // page sliding is disabled, contrary to expectation.\n    eventTool.stop(e.event);\n    trigger(controller, eventName, behaviorToCheck, e, contollerEvent);\n  }\n}\n\nfunction trigger(controller, eventName, behaviorToCheck, e, contollerEvent) {\n  // Also provide behavior checker for event listener, for some case that\n  // multiple components share one listener.\n  contollerEvent.isAvailableBehavior = bind(isAvailableBehavior, null, behaviorToCheck, e); // TODO should not have type issue.\n\n  controller.trigger(eventName, contollerEvent);\n} // settings: {\n//     zoomOnMouseWheel\n//     moveOnMouseMove\n//     moveOnMouseWheel\n// }\n// The value can be: true / false / 'shift' / 'ctrl' / 'alt'.\n\n\nfunction isAvailableBehavior(behaviorToCheck, e, settings) {\n  var setting = settings[behaviorToCheck];\n  return !behaviorToCheck || setting && (!isString(setting) || e.event[setting + 'Key']);\n}\n\nexport default RoamController;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\n\n/**\r\n * For geo and graph.\r\n */\nexport function updateViewOnPan(controllerHost, dx, dy) {\n  var target = controllerHost.target;\n  target.x += dx;\n  target.y += dy;\n  target.dirty();\n}\n/**\r\n * For geo and graph.\r\n */\n\nexport function updateViewOnZoom(controllerHost, zoomDelta, zoomX, zoomY) {\n  var target = controllerHost.target;\n  var zoomLimit = controllerHost.zoomLimit;\n  var newZoom = controllerHost.zoom = controllerHost.zoom || 1;\n  newZoom *= zoomDelta;\n\n  if (zoomLimit) {\n    var zoomMin = zoomLimit.min || 0;\n    var zoomMax = zoomLimit.max || Infinity;\n    newZoom = Math.max(Math.min(zoomMax, newZoom), zoomMin);\n  }\n\n  var zoomScale = newZoom / controllerHost.zoom;\n  controllerHost.zoom = newZoom; // Keep the mouse center when scaling\n\n  target.x -= (zoomX - target.x) * (zoomScale - 1);\n  target.y -= (zoomY - target.y) * (zoomScale - 1);\n  target.scaleX *= zoomScale;\n  target.scaleY *= zoomScale;\n  target.dirty();\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nvar IRRELEVANT_EXCLUDES = {\n  'axisPointer': 1,\n  'tooltip': 1,\n  'brush': 1\n};\n/**\r\n * Avoid that: mouse click on a elements that is over geo or graph,\r\n * but roam is triggered.\r\n */\n\nexport function onIrrelevantElement(e, api, targetCoordSysModel) {\n  var model = api.getComponentByElement(e.topTarget); // If model is axisModel, it works only if it is injected with coordinateSystem.\n\n  var coordSys = model && model.coordinateSystem;\n  return model && model !== targetCoordSysModel && !IRRELEVANT_EXCLUDES.hasOwnProperty(model.mainType) && coordSys && coordSys.model !== targetCoordSysModel;\n}","import Group from '../graphic/Group.js';\nimport ZRImage from '../graphic/Image.js';\nimport Circle from '../graphic/shape/Circle.js';\nimport Rect from '../graphic/shape/Rect.js';\nimport Ellipse from '../graphic/shape/Ellipse.js';\nimport Line from '../graphic/shape/Line.js';\nimport Polygon from '../graphic/shape/Polygon.js';\nimport Polyline from '../graphic/shape/Polyline.js';\nimport * as matrix from '../core/matrix.js';\nimport { createFromString } from './path.js';\nimport { defaults, trim, each, map, keys, hasOwn } from '../core/util.js';\nimport LinearGradient from '../graphic/LinearGradient.js';\nimport RadialGradient from '../graphic/RadialGradient.js';\nimport TSpan from '../graphic/TSpan.js';\nimport { parseXML } from './parseXML.js';\n;\nvar nodeParsers;\nvar INHERITABLE_STYLE_ATTRIBUTES_MAP = {\n    'fill': 'fill',\n    'stroke': 'stroke',\n    'stroke-width': 'lineWidth',\n    'opacity': 'opacity',\n    'fill-opacity': 'fillOpacity',\n    'stroke-opacity': 'strokeOpacity',\n    'stroke-dasharray': 'lineDash',\n    'stroke-dashoffset': 'lineDashOffset',\n    'stroke-linecap': 'lineCap',\n    'stroke-linejoin': 'lineJoin',\n    'stroke-miterlimit': 'miterLimit',\n    'font-family': 'fontFamily',\n    'font-size': 'fontSize',\n    'font-style': 'fontStyle',\n    'font-weight': 'fontWeight',\n    'text-anchor': 'textAlign',\n    'visibility': 'visibility',\n    'display': 'display'\n};\nvar INHERITABLE_STYLE_ATTRIBUTES_MAP_KEYS = keys(INHERITABLE_STYLE_ATTRIBUTES_MAP);\nvar SELF_STYLE_ATTRIBUTES_MAP = {\n    'alignment-baseline': 'textBaseline',\n    'stop-color': 'stopColor'\n};\nvar SELF_STYLE_ATTRIBUTES_MAP_KEYS = keys(SELF_STYLE_ATTRIBUTES_MAP);\nvar SVGParser = (function () {\n    function SVGParser() {\n        this._defs = {};\n        this._root = null;\n    }\n    SVGParser.prototype.parse = function (xml, opt) {\n        opt = opt || {};\n        var svg = parseXML(xml);\n        if (process.env.NODE_ENV !== 'production') {\n            if (!svg) {\n                throw new Error('Illegal svg');\n            }\n        }\n        this._defsUsePending = [];\n        var root = new Group();\n        this._root = root;\n        var named = [];\n        var viewBox = svg.getAttribute('viewBox') || '';\n        var width = parseFloat((svg.getAttribute('width') || opt.width));\n        var height = parseFloat((svg.getAttribute('height') || opt.height));\n        isNaN(width) && (width = null);\n        isNaN(height) && (height = null);\n        parseAttributes(svg, root, null, true, false);\n        var child = svg.firstChild;\n        while (child) {\n            this._parseNode(child, root, named, null, false, false);\n            child = child.nextSibling;\n        }\n        applyDefs(this._defs, this._defsUsePending);\n        this._defsUsePending = [];\n        var viewBoxRect;\n        var viewBoxTransform;\n        if (viewBox) {\n            var viewBoxArr = splitNumberSequence(viewBox);\n            if (viewBoxArr.length >= 4) {\n                viewBoxRect = {\n                    x: parseFloat((viewBoxArr[0] || 0)),\n                    y: parseFloat((viewBoxArr[1] || 0)),\n                    width: parseFloat(viewBoxArr[2]),\n                    height: parseFloat(viewBoxArr[3])\n                };\n            }\n        }\n        if (viewBoxRect && width != null && height != null) {\n            viewBoxTransform = makeViewBoxTransform(viewBoxRect, { x: 0, y: 0, width: width, height: height });\n            if (!opt.ignoreViewBox) {\n                var elRoot = root;\n                root = new Group();\n                root.add(elRoot);\n                elRoot.scaleX = elRoot.scaleY = viewBoxTransform.scale;\n                elRoot.x = viewBoxTransform.x;\n                elRoot.y = viewBoxTransform.y;\n            }\n        }\n        if (!opt.ignoreRootClip && width != null && height != null) {\n            root.setClipPath(new Rect({\n                shape: { x: 0, y: 0, width: width, height: height }\n            }));\n        }\n        return {\n            root: root,\n            width: width,\n            height: height,\n            viewBoxRect: viewBoxRect,\n            viewBoxTransform: viewBoxTransform,\n            named: named\n        };\n    };\n    SVGParser.prototype._parseNode = function (xmlNode, parentGroup, named, namedFrom, isInDefs, isInText) {\n        var nodeName = xmlNode.nodeName.toLowerCase();\n        var el;\n        var namedFromForSub = namedFrom;\n        if (nodeName === 'defs') {\n            isInDefs = true;\n        }\n        if (nodeName === 'text') {\n            isInText = true;\n        }\n        if (nodeName === 'defs' || nodeName === 'switch') {\n            el = parentGroup;\n        }\n        else {\n            if (!isInDefs) {\n                var parser_1 = nodeParsers[nodeName];\n                if (parser_1 && hasOwn(nodeParsers, nodeName)) {\n                    el = parser_1.call(this, xmlNode, parentGroup);\n                    var nameAttr = xmlNode.getAttribute('name');\n                    if (nameAttr) {\n                        var newNamed = {\n                            name: nameAttr,\n                            namedFrom: null,\n                            svgNodeTagLower: nodeName,\n                            el: el\n                        };\n                        named.push(newNamed);\n                        if (nodeName === 'g') {\n                            namedFromForSub = newNamed;\n                        }\n                    }\n                    else if (namedFrom) {\n                        named.push({\n                            name: namedFrom.name,\n                            namedFrom: namedFrom,\n                            svgNodeTagLower: nodeName,\n                            el: el\n                        });\n                    }\n                    parentGroup.add(el);\n                }\n            }\n            var parser = paintServerParsers[nodeName];\n            if (parser && hasOwn(paintServerParsers, nodeName)) {\n                var def = parser.call(this, xmlNode);\n                var id = xmlNode.getAttribute('id');\n                if (id) {\n                    this._defs[id] = def;\n                }\n            }\n        }\n        if (el && el.isGroup) {\n            var child = xmlNode.firstChild;\n            while (child) {\n                if (child.nodeType === 1) {\n                    this._parseNode(child, el, named, namedFromForSub, isInDefs, isInText);\n                }\n                else if (child.nodeType === 3 && isInText) {\n                    this._parseText(child, el);\n                }\n                child = child.nextSibling;\n            }\n        }\n    };\n    SVGParser.prototype._parseText = function (xmlNode, parentGroup) {\n        var text = new TSpan({\n            style: {\n                text: xmlNode.textContent\n            },\n            silent: true,\n            x: this._textX || 0,\n            y: this._textY || 0\n        });\n        inheritStyle(parentGroup, text);\n        parseAttributes(xmlNode, text, this._defsUsePending, false, false);\n        applyTextAlignment(text, parentGroup);\n        var textStyle = text.style;\n        var fontSize = textStyle.fontSize;\n        if (fontSize && fontSize < 9) {\n            textStyle.fontSize = 9;\n            text.scaleX *= fontSize / 9;\n            text.scaleY *= fontSize / 9;\n        }\n        var font = (textStyle.fontSize || textStyle.fontFamily) && [\n            textStyle.fontStyle,\n            textStyle.fontWeight,\n            (textStyle.fontSize || 12) + 'px',\n            textStyle.fontFamily || 'sans-serif'\n        ].join(' ');\n        textStyle.font = font;\n        var rect = text.getBoundingRect();\n        this._textX += rect.width;\n        parentGroup.add(text);\n        return text;\n    };\n    SVGParser.internalField = (function () {\n        nodeParsers = {\n            'g': function (xmlNode, parentGroup) {\n                var g = new Group();\n                inheritStyle(parentGroup, g);\n                parseAttributes(xmlNode, g, this._defsUsePending, false, false);\n                return g;\n            },\n            'rect': function (xmlNode, parentGroup) {\n                var rect = new Rect();\n                inheritStyle(parentGroup, rect);\n                parseAttributes(xmlNode, rect, this._defsUsePending, false, false);\n                rect.setShape({\n                    x: parseFloat(xmlNode.getAttribute('x') || '0'),\n                    y: parseFloat(xmlNode.getAttribute('y') || '0'),\n                    width: parseFloat(xmlNode.getAttribute('width') || '0'),\n                    height: parseFloat(xmlNode.getAttribute('height') || '0')\n                });\n                rect.silent = true;\n                return rect;\n            },\n            'circle': function (xmlNode, parentGroup) {\n                var circle = new Circle();\n                inheritStyle(parentGroup, circle);\n                parseAttributes(xmlNode, circle, this._defsUsePending, false, false);\n                circle.setShape({\n                    cx: parseFloat(xmlNode.getAttribute('cx') || '0'),\n                    cy: parseFloat(xmlNode.getAttribute('cy') || '0'),\n                    r: parseFloat(xmlNode.getAttribute('r') || '0')\n                });\n                circle.silent = true;\n                return circle;\n            },\n            'line': function (xmlNode, parentGroup) {\n                var line = new Line();\n                inheritStyle(parentGroup, line);\n                parseAttributes(xmlNode, line, this._defsUsePending, false, false);\n                line.setShape({\n                    x1: parseFloat(xmlNode.getAttribute('x1') || '0'),\n                    y1: parseFloat(xmlNode.getAttribute('y1') || '0'),\n                    x2: parseFloat(xmlNode.getAttribute('x2') || '0'),\n                    y2: parseFloat(xmlNode.getAttribute('y2') || '0')\n                });\n                line.silent = true;\n                return line;\n            },\n            'ellipse': function (xmlNode, parentGroup) {\n                var ellipse = new Ellipse();\n                inheritStyle(parentGroup, ellipse);\n                parseAttributes(xmlNode, ellipse, this._defsUsePending, false, false);\n                ellipse.setShape({\n                    cx: parseFloat(xmlNode.getAttribute('cx') || '0'),\n                    cy: parseFloat(xmlNode.getAttribute('cy') || '0'),\n                    rx: parseFloat(xmlNode.getAttribute('rx') || '0'),\n                    ry: parseFloat(xmlNode.getAttribute('ry') || '0')\n                });\n                ellipse.silent = true;\n                return ellipse;\n            },\n            'polygon': function (xmlNode, parentGroup) {\n                var pointsStr = xmlNode.getAttribute('points');\n                var pointsArr;\n                if (pointsStr) {\n                    pointsArr = parsePoints(pointsStr);\n                }\n                var polygon = new Polygon({\n                    shape: {\n                        points: pointsArr || []\n                    },\n                    silent: true\n                });\n                inheritStyle(parentGroup, polygon);\n                parseAttributes(xmlNode, polygon, this._defsUsePending, false, false);\n                return polygon;\n            },\n            'polyline': function (xmlNode, parentGroup) {\n                var pointsStr = xmlNode.getAttribute('points');\n                var pointsArr;\n                if (pointsStr) {\n                    pointsArr = parsePoints(pointsStr);\n                }\n                var polyline = new Polyline({\n                    shape: {\n                        points: pointsArr || []\n                    },\n                    silent: true\n                });\n                inheritStyle(parentGroup, polyline);\n                parseAttributes(xmlNode, polyline, this._defsUsePending, false, false);\n                return polyline;\n            },\n            'image': function (xmlNode, parentGroup) {\n                var img = new ZRImage();\n                inheritStyle(parentGroup, img);\n                parseAttributes(xmlNode, img, this._defsUsePending, false, false);\n                img.setStyle({\n                    image: xmlNode.getAttribute('xlink:href') || xmlNode.getAttribute('href'),\n                    x: +xmlNode.getAttribute('x'),\n                    y: +xmlNode.getAttribute('y'),\n                    width: +xmlNode.getAttribute('width'),\n                    height: +xmlNode.getAttribute('height')\n                });\n                img.silent = true;\n                return img;\n            },\n            'text': function (xmlNode, parentGroup) {\n                var x = xmlNode.getAttribute('x') || '0';\n                var y = xmlNode.getAttribute('y') || '0';\n                var dx = xmlNode.getAttribute('dx') || '0';\n                var dy = xmlNode.getAttribute('dy') || '0';\n                this._textX = parseFloat(x) + parseFloat(dx);\n                this._textY = parseFloat(y) + parseFloat(dy);\n                var g = new Group();\n                inheritStyle(parentGroup, g);\n                parseAttributes(xmlNode, g, this._defsUsePending, false, true);\n                return g;\n            },\n            'tspan': function (xmlNode, parentGroup) {\n                var x = xmlNode.getAttribute('x');\n                var y = xmlNode.getAttribute('y');\n                if (x != null) {\n                    this._textX = parseFloat(x);\n                }\n                if (y != null) {\n                    this._textY = parseFloat(y);\n                }\n                var dx = xmlNode.getAttribute('dx') || '0';\n                var dy = xmlNode.getAttribute('dy') || '0';\n                var g = new Group();\n                inheritStyle(parentGroup, g);\n                parseAttributes(xmlNode, g, this._defsUsePending, false, true);\n                this._textX += parseFloat(dx);\n                this._textY += parseFloat(dy);\n                return g;\n            },\n            'path': function (xmlNode, parentGroup) {\n                var d = xmlNode.getAttribute('d') || '';\n                var path = createFromString(d);\n                inheritStyle(parentGroup, path);\n                parseAttributes(xmlNode, path, this._defsUsePending, false, false);\n                path.silent = true;\n                return path;\n            }\n        };\n    })();\n    return SVGParser;\n}());\nvar paintServerParsers = {\n    'lineargradient': function (xmlNode) {\n        var x1 = parseInt(xmlNode.getAttribute('x1') || '0', 10);\n        var y1 = parseInt(xmlNode.getAttribute('y1') || '0', 10);\n        var x2 = parseInt(xmlNode.getAttribute('x2') || '10', 10);\n        var y2 = parseInt(xmlNode.getAttribute('y2') || '0', 10);\n        var gradient = new LinearGradient(x1, y1, x2, y2);\n        parsePaintServerUnit(xmlNode, gradient);\n        parseGradientColorStops(xmlNode, gradient);\n        return gradient;\n    },\n    'radialgradient': function (xmlNode) {\n        var cx = parseInt(xmlNode.getAttribute('cx') || '0', 10);\n        var cy = parseInt(xmlNode.getAttribute('cy') || '0', 10);\n        var r = parseInt(xmlNode.getAttribute('r') || '0', 10);\n        var gradient = new RadialGradient(cx, cy, r);\n        parsePaintServerUnit(xmlNode, gradient);\n        parseGradientColorStops(xmlNode, gradient);\n        return gradient;\n    }\n};\nfunction parsePaintServerUnit(xmlNode, gradient) {\n    var gradientUnits = xmlNode.getAttribute('gradientUnits');\n    if (gradientUnits === 'userSpaceOnUse') {\n        gradient.global = true;\n    }\n}\nfunction parseGradientColorStops(xmlNode, gradient) {\n    var stop = xmlNode.firstChild;\n    while (stop) {\n        if (stop.nodeType === 1\n            && stop.nodeName.toLocaleLowerCase() === 'stop') {\n            var offsetStr = stop.getAttribute('offset');\n            var offset = void 0;\n            if (offsetStr && offsetStr.indexOf('%') > 0) {\n                offset = parseInt(offsetStr, 10) / 100;\n            }\n            else if (offsetStr) {\n                offset = parseFloat(offsetStr);\n            }\n            else {\n                offset = 0;\n            }\n            var styleVals = {};\n            parseInlineStyle(stop, styleVals, styleVals);\n            var stopColor = styleVals.stopColor\n                || stop.getAttribute('stop-color')\n                || '#000000';\n            gradient.colorStops.push({\n                offset: offset,\n                color: stopColor\n            });\n        }\n        stop = stop.nextSibling;\n    }\n}\nfunction inheritStyle(parent, child) {\n    if (parent && parent.__inheritedStyle) {\n        if (!child.__inheritedStyle) {\n            child.__inheritedStyle = {};\n        }\n        defaults(child.__inheritedStyle, parent.__inheritedStyle);\n    }\n}\nfunction parsePoints(pointsString) {\n    var list = splitNumberSequence(pointsString);\n    var points = [];\n    for (var i = 0; i < list.length; i += 2) {\n        var x = parseFloat(list[i]);\n        var y = parseFloat(list[i + 1]);\n        points.push([x, y]);\n    }\n    return points;\n}\nfunction parseAttributes(xmlNode, el, defsUsePending, onlyInlineStyle, isTextGroup) {\n    var disp = el;\n    var inheritedStyle = disp.__inheritedStyle = disp.__inheritedStyle || {};\n    var selfStyle = {};\n    if (xmlNode.nodeType === 1) {\n        parseTransformAttribute(xmlNode, el);\n        parseInlineStyle(xmlNode, inheritedStyle, selfStyle);\n        if (!onlyInlineStyle) {\n            parseAttributeStyle(xmlNode, inheritedStyle, selfStyle);\n        }\n    }\n    disp.style = disp.style || {};\n    if (inheritedStyle.fill != null) {\n        disp.style.fill = getFillStrokeStyle(disp, 'fill', inheritedStyle.fill, defsUsePending);\n    }\n    if (inheritedStyle.stroke != null) {\n        disp.style.stroke = getFillStrokeStyle(disp, 'stroke', inheritedStyle.stroke, defsUsePending);\n    }\n    each([\n        'lineWidth', 'opacity', 'fillOpacity', 'strokeOpacity', 'miterLimit', 'fontSize'\n    ], function (propName) {\n        if (inheritedStyle[propName] != null) {\n            disp.style[propName] = parseFloat(inheritedStyle[propName]);\n        }\n    });\n    each([\n        'lineDashOffset', 'lineCap', 'lineJoin', 'fontWeight', 'fontFamily', 'fontStyle', 'textAlign'\n    ], function (propName) {\n        if (inheritedStyle[propName] != null) {\n            disp.style[propName] = inheritedStyle[propName];\n        }\n    });\n    if (isTextGroup) {\n        disp.__selfStyle = selfStyle;\n    }\n    if (inheritedStyle.lineDash) {\n        disp.style.lineDash = map(splitNumberSequence(inheritedStyle.lineDash), function (str) {\n            return parseFloat(str);\n        });\n    }\n    if (inheritedStyle.visibility === 'hidden' || inheritedStyle.visibility === 'collapse') {\n        disp.invisible = true;\n    }\n    if (inheritedStyle.display === 'none') {\n        disp.ignore = true;\n    }\n}\nfunction applyTextAlignment(text, parentGroup) {\n    var parentSelfStyle = parentGroup.__selfStyle;\n    if (parentSelfStyle) {\n        var textBaseline = parentSelfStyle.textBaseline;\n        var zrTextBaseline = textBaseline;\n        if (!textBaseline || textBaseline === 'auto') {\n            zrTextBaseline = 'alphabetic';\n        }\n        else if (textBaseline === 'baseline') {\n            zrTextBaseline = 'alphabetic';\n        }\n        else if (textBaseline === 'before-edge' || textBaseline === 'text-before-edge') {\n            zrTextBaseline = 'top';\n        }\n        else if (textBaseline === 'after-edge' || textBaseline === 'text-after-edge') {\n            zrTextBaseline = 'bottom';\n        }\n        else if (textBaseline === 'central' || textBaseline === 'mathematical') {\n            zrTextBaseline = 'middle';\n        }\n        text.style.textBaseline = zrTextBaseline;\n    }\n    var parentInheritedStyle = parentGroup.__inheritedStyle;\n    if (parentInheritedStyle) {\n        var textAlign = parentInheritedStyle.textAlign;\n        var zrTextAlign = textAlign;\n        if (textAlign) {\n            if (textAlign === 'middle') {\n                zrTextAlign = 'center';\n            }\n            text.style.textAlign = zrTextAlign;\n        }\n    }\n}\nvar urlRegex = /^url\\(\\s*#(.*?)\\)/;\nfunction getFillStrokeStyle(el, method, str, defsUsePending) {\n    var urlMatch = str && str.match(urlRegex);\n    if (urlMatch) {\n        var url = trim(urlMatch[1]);\n        defsUsePending.push([el, method, url]);\n        return;\n    }\n    if (str === 'none') {\n        str = null;\n    }\n    return str;\n}\nfunction applyDefs(defs, defsUsePending) {\n    for (var i = 0; i < defsUsePending.length; i++) {\n        var item = defsUsePending[i];\n        item[0].style[item[1]] = defs[item[2]];\n    }\n}\nvar numberReg = /-?([0-9]*\\.)?[0-9]+([eE]-?[0-9]+)?/g;\nfunction splitNumberSequence(rawStr) {\n    return rawStr.match(numberReg) || [];\n}\nvar transformRegex = /(translate|scale|rotate|skewX|skewY|matrix)\\(([\\-\\s0-9\\.eE,]*)\\)/g;\nvar DEGREE_TO_ANGLE = Math.PI / 180;\nfunction parseTransformAttribute(xmlNode, node) {\n    var transform = xmlNode.getAttribute('transform');\n    if (transform) {\n        transform = transform.replace(/,/g, ' ');\n        var transformOps_1 = [];\n        var mt = null;\n        transform.replace(transformRegex, function (str, type, value) {\n            transformOps_1.push(type, value);\n            return '';\n        });\n        for (var i = transformOps_1.length - 1; i > 0; i -= 2) {\n            var value = transformOps_1[i];\n            var type = transformOps_1[i - 1];\n            var valueArr = splitNumberSequence(value);\n            mt = mt || matrix.create();\n            switch (type) {\n                case 'translate':\n                    matrix.translate(mt, mt, [parseFloat(valueArr[0]), parseFloat(valueArr[1] || '0')]);\n                    break;\n                case 'scale':\n                    matrix.scale(mt, mt, [parseFloat(valueArr[0]), parseFloat(valueArr[1] || valueArr[0])]);\n                    break;\n                case 'rotate':\n                    matrix.rotate(mt, mt, -parseFloat(valueArr[0]) * DEGREE_TO_ANGLE);\n                    break;\n                case 'skewX':\n                    var sx = Math.tan(parseFloat(valueArr[0]) * DEGREE_TO_ANGLE);\n                    matrix.mul(mt, [1, 0, sx, 1, 0, 0], mt);\n                    break;\n                case 'skewY':\n                    var sy = Math.tan(parseFloat(valueArr[0]) * DEGREE_TO_ANGLE);\n                    matrix.mul(mt, [1, sy, 0, 1, 0, 0], mt);\n                    break;\n                case 'matrix':\n                    mt[0] = parseFloat(valueArr[0]);\n                    mt[1] = parseFloat(valueArr[1]);\n                    mt[2] = parseFloat(valueArr[2]);\n                    mt[3] = parseFloat(valueArr[3]);\n                    mt[4] = parseFloat(valueArr[4]);\n                    mt[5] = parseFloat(valueArr[5]);\n                    break;\n            }\n        }\n        node.setLocalTransform(mt);\n    }\n}\nvar styleRegex = /([^\\s:;]+)\\s*:\\s*([^:;]+)/g;\nfunction parseInlineStyle(xmlNode, inheritableStyleResult, selfStyleResult) {\n    var style = xmlNode.getAttribute('style');\n    if (!style) {\n        return;\n    }\n    styleRegex.lastIndex = 0;\n    var styleRegResult;\n    while ((styleRegResult = styleRegex.exec(style)) != null) {\n        var svgStlAttr = styleRegResult[1];\n        var zrInheritableStlAttr = hasOwn(INHERITABLE_STYLE_ATTRIBUTES_MAP, svgStlAttr)\n            ? INHERITABLE_STYLE_ATTRIBUTES_MAP[svgStlAttr]\n            : null;\n        if (zrInheritableStlAttr) {\n            inheritableStyleResult[zrInheritableStlAttr] = styleRegResult[2];\n        }\n        var zrSelfStlAttr = hasOwn(SELF_STYLE_ATTRIBUTES_MAP, svgStlAttr)\n            ? SELF_STYLE_ATTRIBUTES_MAP[svgStlAttr]\n            : null;\n        if (zrSelfStlAttr) {\n            selfStyleResult[zrSelfStlAttr] = styleRegResult[2];\n        }\n    }\n}\nfunction parseAttributeStyle(xmlNode, inheritableStyleResult, selfStyleResult) {\n    for (var i = 0; i < INHERITABLE_STYLE_ATTRIBUTES_MAP_KEYS.length; i++) {\n        var svgAttrName = INHERITABLE_STYLE_ATTRIBUTES_MAP_KEYS[i];\n        var attrValue = xmlNode.getAttribute(svgAttrName);\n        if (attrValue != null) {\n            inheritableStyleResult[INHERITABLE_STYLE_ATTRIBUTES_MAP[svgAttrName]] = attrValue;\n        }\n    }\n    for (var i = 0; i < SELF_STYLE_ATTRIBUTES_MAP_KEYS.length; i++) {\n        var svgAttrName = SELF_STYLE_ATTRIBUTES_MAP_KEYS[i];\n        var attrValue = xmlNode.getAttribute(svgAttrName);\n        if (attrValue != null) {\n            selfStyleResult[SELF_STYLE_ATTRIBUTES_MAP[svgAttrName]] = attrValue;\n        }\n    }\n}\nexport function makeViewBoxTransform(viewBoxRect, boundingRect) {\n    var scaleX = boundingRect.width / viewBoxRect.width;\n    var scaleY = boundingRect.height / viewBoxRect.height;\n    var scale = Math.min(scaleX, scaleY);\n    return {\n        scale: scale,\n        x: -(viewBoxRect.x + viewBoxRect.width / 2) * scale + (boundingRect.x + boundingRect.width / 2),\n        y: -(viewBoxRect.y + viewBoxRect.height / 2) * scale + (boundingRect.y + boundingRect.height / 2)\n    };\n}\nexport function parseSVG(xml, opt) {\n    var parser = new SVGParser();\n    return parser.parse(xml, opt);\n}\nexport { parseXML };\n","import { isString } from '../core/util.js';\nexport function parseXML(svg) {\n    if (isString(svg)) {\n        var parser = new DOMParser();\n        svg = parser.parseFromString(svg, 'text/xml');\n    }\n    var svgNode = svg;\n    if (svgNode.nodeType === 9) {\n        svgNode = svgNode.firstChild;\n    }\n    while (svgNode.nodeName.toLowerCase() !== 'svg' || svgNode.nodeType !== 1) {\n        svgNode = svgNode.nextSibling;\n    }\n    return svgNode;\n}\n","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\n// Fix for 南海诸岛\nimport * as zrUtil from 'zrender/lib/core/util.js';\nimport { GeoJSONRegion } from '../Region.js';\nvar geoCoord = [126, 25];\nvar nanhaiName = '南海诸岛';\nvar points = [[[0, 3.5], [7, 11.2], [15, 11.9], [30, 7], [42, 0.7], [52, 0.7], [56, 7.7], [59, 0.7], [64, 0.7], [64, 0], [5, 0], [0, 3.5]], [[13, 16.1], [19, 14.7], [16, 21.7], [11, 23.1], [13, 16.1]], [[12, 32.2], [14, 38.5], [15, 38.5], [13, 32.2], [12, 32.2]], [[16, 47.6], [12, 53.2], [13, 53.2], [18, 47.6], [16, 47.6]], [[6, 64.4], [8, 70], [9, 70], [8, 64.4], [6, 64.4]], [[23, 82.6], [29, 79.8], [30, 79.8], [25, 82.6], [23, 82.6]], [[37, 70.7], [43, 62.3], [44, 62.3], [39, 70.7], [37, 70.7]], [[48, 51.1], [51, 45.5], [53, 45.5], [50, 51.1], [48, 51.1]], [[51, 35], [51, 28.7], [53, 28.7], [53, 35], [51, 35]], [[52, 22.4], [55, 17.5], [56, 17.5], [53, 22.4], [52, 22.4]], [[58, 12.6], [62, 7], [63, 7], [60, 12.6], [58, 12.6]], [[0, 3.5], [0, 93.1], [64, 93.1], [64, 0], [63, 0], [63, 92.4], [1, 92.4], [1, 3.5], [0, 3.5]]];\n\nfor (var i = 0; i < points.length; i++) {\n  for (var k = 0; k < points[i].length; k++) {\n    points[i][k][0] /= 10.5;\n    points[i][k][1] /= -10.5 / 0.75;\n    points[i][k][0] += geoCoord[0];\n    points[i][k][1] += geoCoord[1];\n  }\n}\n\nexport default function fixNanhai(mapType, regions) {\n  if (mapType === 'china') {\n    for (var i = 0; i < regions.length; i++) {\n      // Already exists.\n      if (regions[i].name === nanhaiName) {\n        return;\n      }\n    }\n\n    regions.push(new GeoJSONRegion(nanhaiName, zrUtil.map(points, function (exterior) {\n      return {\n        type: 'polygon',\n        exterior: exterior\n      };\n    }), geoCoord));\n  }\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { parseSVG, makeViewBoxTransform } from 'zrender/lib/tool/parseSVG.js';\nimport Group from 'zrender/lib/graphic/Group.js';\nimport Rect from 'zrender/lib/graphic/shape/Rect.js';\nimport { assert, createHashMap, each } from 'zrender/lib/core/util.js';\nimport BoundingRect from 'zrender/lib/core/BoundingRect.js';\nimport { parseXML } from 'zrender/lib/tool/parseXML.js';\nimport { GeoSVGRegion } from './Region.js';\n/**\r\n * \"region available\" means that: enable users to set attribute `name=\"xxx\"` on those tags\r\n * to make it be a region.\r\n * 1. region styles and its label styles can be defined in echarts opton:\r\n * ```js\r\n * geo: {\r\n *     regions: [{\r\n *         name: 'xxx',\r\n *         itemStyle: { ... },\r\n *         label: { ... }\r\n *     }, {\r\n *         ...\r\n *     },\r\n *     ...]\r\n * };\r\n * ```\r\n * 2. name can be duplicated in different SVG tag. All of the tags with the same name share\r\n * a region option. For exampel if there are two <path> representing two lung lobes. They have\r\n * no common parents but both of them need to display label \"lung\" inside.\r\n */\n\nvar REGION_AVAILABLE_SVG_TAG_MAP = createHashMap(['rect', 'circle', 'line', 'ellipse', 'polygon', 'polyline', 'path', // <text> <tspan> are also enabled because some SVG might paint text itself,\n// but still need to trigger events or tooltip.\n'text', 'tspan', // <g> is also enabled because this case: if multiple tags share one name\n// and need label displayed, every tags will display the name, which is not\n// expected. So we can put them into a <g name=\"xxx\">. Thereby only one label\n// displayed and located based on the bounding rect of the <g>.\n'g']);\n\nvar GeoSVGResource =\n/** @class */\nfunction () {\n  function GeoSVGResource(mapName, svg) {\n    this.type = 'geoSVG'; // All used graphics. key: hostKey, value: root\n\n    this._usedGraphicMap = createHashMap(); // All unused graphics.\n\n    this._freedGraphics = [];\n    this._mapName = mapName; // Only perform parse to XML object here, which might be time\n    // consiming for large SVG.\n    // Although convert XML to zrender element is also time consiming,\n    // if we do it here, the clone of zrender elements has to be\n    // required. So we do it once for each geo instance, util real\n    // performance issues call for optimizing it.\n\n    this._parsedXML = parseXML(svg);\n  }\n\n  GeoSVGResource.prototype.load = function ()\n  /* nameMap: NameMap */\n  {\n    // In the \"load\" stage, graphic need to be built to\n    // get boundingRect for geo coordinate system.\n    var firstGraphic = this._firstGraphic; // Create the return data structure only when first graphic created.\n    // Because they will be used in geo coordinate system update stage,\n    // and `regions` will be mounted at `geo` coordinate system,\n    // in which there is no \"view\" info, so that it should better not to\n    // make references to graphic elements.\n\n    if (!firstGraphic) {\n      firstGraphic = this._firstGraphic = this._buildGraphic(this._parsedXML);\n\n      this._freedGraphics.push(firstGraphic);\n\n      this._boundingRect = this._firstGraphic.boundingRect.clone(); // PENDING: `nameMap` will not be supported until some real requirement come.\n      // if (nameMap) {\n      //     named = applyNameMap(named, nameMap);\n      // }\n\n      var _a = createRegions(firstGraphic.named),\n          regions = _a.regions,\n          regionsMap = _a.regionsMap;\n\n      this._regions = regions;\n      this._regionsMap = regionsMap;\n    }\n\n    return {\n      boundingRect: this._boundingRect,\n      regions: this._regions,\n      regionsMap: this._regionsMap\n    };\n  };\n\n  GeoSVGResource.prototype._buildGraphic = function (svgXML) {\n    var result;\n    var rootFromParse;\n\n    try {\n      result = svgXML && parseSVG(svgXML, {\n        ignoreViewBox: true,\n        ignoreRootClip: true\n      }) || {};\n      rootFromParse = result.root;\n      assert(rootFromParse != null);\n    } catch (e) {\n      throw new Error('Invalid svg format\\n' + e.message);\n    } // Note: we keep the covenant that the root has no transform. So always add an extra root.\n\n\n    var root = new Group();\n    root.add(rootFromParse);\n    root.isGeoSVGGraphicRoot = true; // [THE_RULE_OF_VIEWPORT_AND_VIEWBOX]\n    //\n    // Consider: `<svg width=\"...\" height=\"...\" viewBox=\"...\">`\n    // - the `width/height` we call it `svgWidth/svgHeight` for short.\n    // - `(0, 0, svgWidth, svgHeight)` defines the viewport of the SVG, or say,\n    //   \"viewport boundingRect\", or `boundingRect` for short.\n    // - `viewBox` defines the transform from the real content ot the viewport.\n    //   `viewBox` has the same unit as the content of SVG.\n    //   If `viewBox` exists, a transform is defined, so the unit of `svgWidth/svgHeight` become\n    //   different from the content of SVG. Otherwise, they are the same.\n    //\n    // If both `svgWidth/svgHeight/viewBox` are specified in a SVG file, the transform rule will be:\n    // 0. `boundingRect` is `(0, 0, svgWidth, svgHeight)`. Set it to Geo['_rect'] (View['_rect']).\n    // 1. Make a transform from `viewBox` to `boundingRect`.\n    //    Note: only support `preserveAspectRatio 'xMidYMid'` here. That is, this transform will preserve\n    //    the aspect ratio.\n    // 2. Make a transform from boundingRect to Geo['_viewRect'] (View['_viewRect'])\n    //    (`Geo`/`View` will do this job).\n    //    Note: this transform might not preserve aspect radio, which depending on how users specify\n    //    viewRect in echarts option (e.g., `geo.left/top/width/height` will not preserve aspect ratio,\n    //    but `geo.layoutCenter/layoutSize` will preserve aspect ratio).\n    //\n    // If `svgWidth/svgHeight` not specified, we use `viewBox` as the `boundingRect` to make the SVG\n    // layout look good.\n    //\n    // If neither `svgWidth/svgHeight` nor `viewBox` are not specified, we calculate the boundingRect\n    // of the SVG content and use them to make SVG layout look good.\n\n    var svgWidth = result.width;\n    var svgHeight = result.height;\n    var viewBoxRect = result.viewBoxRect;\n    var boundingRect = this._boundingRect;\n\n    if (!boundingRect) {\n      var bRectX = void 0;\n      var bRectY = void 0;\n      var bRectWidth = void 0;\n      var bRectHeight = void 0;\n\n      if (svgWidth != null) {\n        bRectX = 0;\n        bRectWidth = svgWidth;\n      } else if (viewBoxRect) {\n        bRectX = viewBoxRect.x;\n        bRectWidth = viewBoxRect.width;\n      }\n\n      if (svgHeight != null) {\n        bRectY = 0;\n        bRectHeight = svgHeight;\n      } else if (viewBoxRect) {\n        bRectY = viewBoxRect.y;\n        bRectHeight = viewBoxRect.height;\n      } // If both viewBox and svgWidth/svgHeight not specified,\n      // we have to determine how to layout those element to make them look good.\n\n\n      if (bRectX == null || bRectY == null) {\n        var calculatedBoundingRect = rootFromParse.getBoundingRect();\n\n        if (bRectX == null) {\n          bRectX = calculatedBoundingRect.x;\n          bRectWidth = calculatedBoundingRect.width;\n        }\n\n        if (bRectY == null) {\n          bRectY = calculatedBoundingRect.y;\n          bRectHeight = calculatedBoundingRect.height;\n        }\n      }\n\n      boundingRect = this._boundingRect = new BoundingRect(bRectX, bRectY, bRectWidth, bRectHeight);\n    }\n\n    if (viewBoxRect) {\n      var viewBoxTransform = makeViewBoxTransform(viewBoxRect, boundingRect); // Only support `preserveAspectRatio 'xMidYMid'`\n\n      rootFromParse.scaleX = rootFromParse.scaleY = viewBoxTransform.scale;\n      rootFromParse.x = viewBoxTransform.x;\n      rootFromParse.y = viewBoxTransform.y;\n    } // SVG needs to clip based on `viewBox`. And some SVG files really rely on this feature.\n    // They do not strictly confine all of the content inside a display rect, but deliberately\n    // use a `viewBox` to define a displayable rect.\n    // PENDING:\n    // The drawback of the `setClipPath` here is: the region label (genereted by echarts) near the\n    // edge might also be clipped, because region labels are put as `textContent` of the SVG path.\n\n\n    root.setClipPath(new Rect({\n      shape: boundingRect.plain()\n    }));\n    var named = [];\n    each(result.named, function (namedItem) {\n      if (REGION_AVAILABLE_SVG_TAG_MAP.get(namedItem.svgNodeTagLower) != null) {\n        named.push(namedItem);\n        setSilent(namedItem.el);\n      }\n    });\n    return {\n      root: root,\n      boundingRect: boundingRect,\n      named: named\n    };\n  };\n  /**\r\n   * Consider:\r\n   * (1) One graphic element can not be shared by different `geoView` running simultaneously.\r\n   *     Notice, also need to consider multiple echarts instances share a `mapRecord`.\r\n   * (2) Converting SVG to graphic elements is time consuming.\r\n   * (3) In the current architecture, `load` should be called frequently to get boundingRect,\r\n   *     and it is called without view info.\r\n   * So we maintain graphic elements in this module, and enables `view` to use/return these\r\n   * graphics from/to the pool with it's uid.\r\n   */\n\n\n  GeoSVGResource.prototype.useGraphic = function (hostKey\n  /* , nameMap: NameMap */\n  ) {\n    var usedRootMap = this._usedGraphicMap;\n    var svgGraphic = usedRootMap.get(hostKey);\n\n    if (svgGraphic) {\n      return svgGraphic;\n    }\n\n    svgGraphic = this._freedGraphics.pop() // use the first boundingRect to avoid duplicated boundingRect calculation.\n    || this._buildGraphic(this._parsedXML);\n    usedRootMap.set(hostKey, svgGraphic); // PENDING: `nameMap` will not be supported until some real requirement come.\n    // `nameMap` can only be obtained from echarts option.\n    // The original `named` must not be modified.\n    // if (nameMap) {\n    //     svgGraphic = extend({}, svgGraphic);\n    //     svgGraphic.named = applyNameMap(svgGraphic.named, nameMap);\n    // }\n\n    return svgGraphic;\n  };\n\n  GeoSVGResource.prototype.freeGraphic = function (hostKey) {\n    var usedRootMap = this._usedGraphicMap;\n    var svgGraphic = usedRootMap.get(hostKey);\n\n    if (svgGraphic) {\n      usedRootMap.removeKey(hostKey);\n\n      this._freedGraphics.push(svgGraphic);\n    }\n  };\n\n  return GeoSVGResource;\n}();\n\nexport { GeoSVGResource };\n\nfunction setSilent(el) {\n  // Only named element has silent: false, other elements should\n  // act as background and has no user interaction.\n  el.silent = false; // text|tspan will be converted to group.\n\n  if (el.isGroup) {\n    el.traverse(function (child) {\n      child.silent = false;\n    });\n  }\n}\n\nfunction createRegions(named) {\n  var regions = [];\n  var regionsMap = createHashMap(); // Create resions only for the first graphic.\n\n  each(named, function (namedItem) {\n    // Region has feature to calculate center for tooltip or other features.\n    // If there is a <g name=\"xxx\">, the center should be the center of the\n    // bounding rect of the g.\n    if (namedItem.namedFrom != null) {\n      return;\n    }\n\n    var region = new GeoSVGRegion(namedItem.name, namedItem.el); // PENDING: if `nameMap` supported, this region can not be mounted on\n    // `this`, but can only be created each time `load()` called.\n\n    regions.push(region); // PENDING: if multiple tag named with the same name, only one will be\n    // found by `_regionsMap`. `_regionsMap` is used to find a coordinate\n    // by name. We use `region.getCenter()` as the coordinate.\n\n    regionsMap.set(namedItem.name, region);\n  });\n  return {\n    regions: regions,\n    regionsMap: regionsMap\n  };\n} // PENDING: `nameMap` will not be supported until some real requirement come.\n// /**\n//  * Use the alias in geoNameMap.\n//  * The input `named` must not be modified.\n//  */\n// function applyNameMap(\n//     named: GeoSVGGraphicRecord['named'],\n//     nameMap: NameMap\n// ): GeoSVGGraphicRecord['named'] {\n//     const result = [] as GeoSVGGraphicRecord['named'];\n//     for (let i = 0; i < named.length; i++) {\n//         let regionGraphic = named[i];\n//         const name = regionGraphic.name;\n//         if (nameMap && nameMap.hasOwnProperty(name)) {\n//             regionGraphic = extend({}, regionGraphic);\n//             regionGraphic.name = name;\n//         }\n//         result.push(regionGraphic);\n//     }\n//     return result;\n// }","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nvar coordsOffsetMap = {\n  '南海诸岛': [32, 80],\n  // 全国\n  '广东': [0, -10],\n  '香港': [10, 5],\n  '澳门': [-10, 10],\n  // '北京': [-10, 0],\n  '天津': [5, 5]\n};\nexport default function fixTextCoords(mapType, region) {\n  if (mapType === 'china') {\n    var coordFix = coordsOffsetMap[region.name];\n\n    if (coordFix) {\n      var cp = region.getCenter();\n      cp[0] += coordFix[0] / 10.5;\n      cp[1] += -coordFix[1] / (10.5 / 0.75);\n      region.setCenter(cp);\n    }\n  }\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\n// Fix for 钓鱼岛\n// let Region = require('../Region');\n// let zrUtil = require('zrender/lib/core/util');\n// let geoCoord = [126, 25];\nvar points = [[[123.45165252685547, 25.73527164402261], [123.49731445312499, 25.73527164402261], [123.49731445312499, 25.750734064600884], [123.45165252685547, 25.750734064600884], [123.45165252685547, 25.73527164402261]]];\nexport default function fixDiaoyuIsland(mapType, region) {\n  if (mapType === 'china' && region.name === '台湾') {\n    region.geometries.push({\n      type: 'polygon',\n      exterior: points[0]\n    });\n  }\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { each, isString, createHashMap, hasOwn } from 'zrender/lib/core/util.js';\nimport parseGeoJson from './parseGeoJson.js'; // Built-in GEO fixer.\n\nimport fixNanhai from './fix/nanhai.js';\nimport fixTextCoord from './fix/textCoord.js';\nimport fixDiaoyuIsland from './fix/diaoyuIsland.js';\nimport BoundingRect from 'zrender/lib/core/BoundingRect.js';\nvar DEFAULT_NAME_PROPERTY = 'name';\n\nvar GeoJSONResource =\n/** @class */\nfunction () {\n  function GeoJSONResource(mapName, geoJSON, specialAreas) {\n    this.type = 'geoJSON';\n    this._parsedMap = createHashMap();\n    this._mapName = mapName;\n    this._specialAreas = specialAreas; // PENDING: delay the parse to the first usage to rapid up the FMP?\n\n    this._geoJSON = parseInput(geoJSON);\n  }\n  /**\r\n   * @param nameMap can be null/undefined\r\n   * @param nameProperty can be null/undefined\r\n   */\n\n\n  GeoJSONResource.prototype.load = function (nameMap, nameProperty) {\n    nameProperty = nameProperty || DEFAULT_NAME_PROPERTY;\n\n    var parsed = this._parsedMap.get(nameProperty);\n\n    if (!parsed) {\n      var rawRegions = this._parseToRegions(nameProperty);\n\n      parsed = this._parsedMap.set(nameProperty, {\n        regions: rawRegions,\n        boundingRect: calculateBoundingRect(rawRegions)\n      });\n    }\n\n    var regionsMap = createHashMap();\n    var finalRegions = [];\n    each(parsed.regions, function (region) {\n      var regionName = region.name; // Try use the alias in geoNameMap\n\n      if (nameMap && hasOwn(nameMap, regionName)) {\n        region = region.cloneShallow(regionName = nameMap[regionName]);\n      }\n\n      finalRegions.push(region);\n      regionsMap.set(regionName, region);\n    });\n    return {\n      regions: finalRegions,\n      boundingRect: parsed.boundingRect || new BoundingRect(0, 0, 0, 0),\n      regionsMap: regionsMap\n    };\n  };\n\n  GeoJSONResource.prototype._parseToRegions = function (nameProperty) {\n    var mapName = this._mapName;\n    var geoJSON = this._geoJSON;\n    var rawRegions; // https://jsperf.com/try-catch-performance-overhead\n\n    try {\n      rawRegions = geoJSON ? parseGeoJson(geoJSON, nameProperty) : [];\n    } catch (e) {\n      throw new Error('Invalid geoJson format\\n' + e.message);\n    }\n\n    fixNanhai(mapName, rawRegions);\n    each(rawRegions, function (region) {\n      var regionName = region.name;\n      fixTextCoord(mapName, region);\n      fixDiaoyuIsland(mapName, region); // Some area like Alaska in USA map needs to be tansformed\n      // to look better\n\n      var specialArea = this._specialAreas && this._specialAreas[regionName];\n\n      if (specialArea) {\n        region.transformTo(specialArea.left, specialArea.top, specialArea.width, specialArea.height);\n      }\n    }, this);\n    return rawRegions;\n  };\n  /**\r\n   * Only for exporting to users.\r\n   * **MUST NOT** used internally.\r\n   */\n\n\n  GeoJSONResource.prototype.getMapForUser = function () {\n    return {\n      // For backward compatibility, use geoJson\n      // PENDING: it has been returning them without clone.\n      // do we need to avoid outsite modification?\n      geoJson: this._geoJSON,\n      geoJSON: this._geoJSON,\n      specialAreas: this._specialAreas\n    };\n  };\n\n  return GeoJSONResource;\n}();\n\nexport { GeoJSONResource };\n\nfunction calculateBoundingRect(regions) {\n  var rect;\n\n  for (var i = 0; i < regions.length; i++) {\n    var regionRect = regions[i].getBoundingRect();\n    rect = rect || regionRect.clone();\n    rect.union(regionRect);\n  }\n\n  return rect;\n}\n\nfunction parseInput(source) {\n  return !isString(source) ? source : typeof JSON !== 'undefined' && JSON.parse ? JSON.parse(source) : new Function('return (' + source + ');')();\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { createHashMap } from 'zrender/lib/core/util.js';\nimport { GeoSVGResource } from './GeoSVGResource.js';\nimport { GeoJSONResource } from './GeoJSONResource.js';\nvar storage = createHashMap();\nexport default {\n  /**\r\n   * Compatible with previous `echarts.registerMap`.\r\n   *\r\n   * @usage\r\n   * ```js\r\n   *\r\n   * echarts.registerMap('USA', geoJson, specialAreas);\r\n   *\r\n   * echarts.registerMap('USA', {\r\n   *     geoJson: geoJson,\r\n   *     specialAreas: {...}\r\n   * });\r\n   * echarts.registerMap('USA', {\r\n   *     geoJSON: geoJson,\r\n   *     specialAreas: {...}\r\n   * });\r\n   *\r\n   * echarts.registerMap('airport', {\r\n   *     svg: svg\r\n   * }\r\n   * ```\r\n   *\r\n   * Note:\r\n   * Do not support that register multiple geoJSON or SVG\r\n   * one map name. Because different geoJSON and SVG have\r\n   * different unit. It's not easy to make sure how those\r\n   * units are mapping/normalize.\r\n   * If intending to use multiple geoJSON or SVG, we can\r\n   * use multiple geo coordinate system.\r\n   */\n  registerMap: function (mapName, rawDef, rawSpecialAreas) {\n    if (rawDef.svg) {\n      var resource = new GeoSVGResource(mapName, rawDef.svg);\n      storage.set(mapName, resource);\n    } else {\n      // Recommend:\n      //     echarts.registerMap('eu', { geoJSON: xxx, specialAreas: xxx });\n      // Backward compatibility:\n      //     echarts.registerMap('eu', geoJSON, specialAreas);\n      //     echarts.registerMap('eu', { geoJson: xxx, specialAreas: xxx });\n      var geoJSON = rawDef.geoJson || rawDef.geoJSON;\n\n      if (geoJSON && !rawDef.features) {\n        rawSpecialAreas = rawDef.specialAreas;\n      } else {\n        geoJSON = rawDef;\n      }\n\n      var resource = new GeoJSONResource(mapName, geoJSON, rawSpecialAreas);\n      storage.set(mapName, resource);\n    }\n  },\n  getGeoResource: function (mapName) {\n    return storage.get(mapName);\n  },\n\n  /**\r\n   * Only for exporting to users.\r\n   * **MUST NOT** used internally.\r\n   */\n  getMapForUser: function (mapName) {\n    var resource = storage.get(mapName); // Do not support return SVG until some real requirement come.\n\n    return resource && resource.type === 'geoJSON' && resource.getMapForUser();\n  },\n  load: function (mapName, nameMap, nameProperty) {\n    var resource = storage.get(mapName);\n\n    if (!resource) {\n      if (process.env.NODE_ENV !== 'production') {\n        console.error('Map ' + mapName + ' not exists. The GeoJSON of the map must be provided.');\n      }\n\n      return;\n    }\n\n    return resource.load(nameMap, nameProperty);\n  }\n};","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport * as zrUtil from 'zrender/lib/core/util.js';\nimport RoamController from './RoamController.js';\nimport * as roamHelper from '../../component/helper/roamHelper.js';\nimport { onIrrelevantElement } from '../../component/helper/cursorHelper.js';\nimport * as graphic from '../../util/graphic.js';\nimport { toggleHoverEmphasis, enableComponentHighDownFeatures, setDefaultStateProxy } from '../../util/states.js';\nimport geoSourceManager from '../../coord/geo/geoSourceManager.js';\nimport { getUID } from '../../util/component.js';\nimport { setLabelStyle, getLabelStatesModels } from '../../label/labelStyle.js';\nimport { getECData } from '../../util/innerStore.js';\nimport { createOrUpdatePatternFromDecal } from '../../util/decal.js';\nimport Displayable from 'zrender/lib/graphic/Displayable.js';\nimport { makeInner } from '../../util/model.js';\n/**\r\n * Only these tags enable use `itemStyle` if they are named in SVG.\r\n * Other tags like <text> <tspan> <image> might not suitable for `itemStyle`.\r\n * They will not be considered to be styled until some requirements come.\r\n */\n\nvar OPTION_STYLE_ENABLED_TAGS = ['rect', 'circle', 'line', 'ellipse', 'polygon', 'polyline', 'path'];\nvar OPTION_STYLE_ENABLED_TAG_MAP = zrUtil.createHashMap(OPTION_STYLE_ENABLED_TAGS);\nvar STATE_TRIGGER_TAG_MAP = zrUtil.createHashMap(OPTION_STYLE_ENABLED_TAGS.concat(['g']));\nvar LABEL_HOST_MAP = zrUtil.createHashMap(OPTION_STYLE_ENABLED_TAGS.concat(['g']));\nvar mapLabelRaw = makeInner();\n\nfunction getFixedItemStyle(model) {\n  var itemStyle = model.getItemStyle();\n  var areaColor = model.get('areaColor'); // If user want the color not to be changed when hover,\n  // they should both set areaColor and color to be null.\n\n  if (areaColor != null) {\n    itemStyle.fill = areaColor;\n  }\n\n  return itemStyle;\n} // Only stroke can be used for line.\n// Using fill in style if stroke not exits.\n// TODO Not sure yet. Perhaps a separate `lineStyle`?\n\n\nfunction fixLineStyle(styleHost) {\n  var style = styleHost.style;\n\n  if (style) {\n    style.stroke = style.stroke || style.fill;\n    style.fill = null;\n  }\n}\n\nvar MapDraw =\n/** @class */\nfunction () {\n  function MapDraw(api) {\n    var group = new graphic.Group();\n    this.uid = getUID('ec_map_draw');\n    this._controller = new RoamController(api.getZr());\n    this._controllerHost = {\n      target: group\n    };\n    this.group = group;\n    group.add(this._regionsGroup = new graphic.Group());\n    group.add(this._svgGroup = new graphic.Group());\n  }\n\n  MapDraw.prototype.draw = function (mapOrGeoModel, ecModel, api, fromView, payload) {\n    var isGeo = mapOrGeoModel.mainType === 'geo'; // Map series has data. GEO model that controlled by map series\n    // will be assigned with map data. Other GEO model has no data.\n\n    var data = mapOrGeoModel.getData && mapOrGeoModel.getData();\n    isGeo && ecModel.eachComponent({\n      mainType: 'series',\n      subType: 'map'\n    }, function (mapSeries) {\n      if (!data && mapSeries.getHostGeoModel() === mapOrGeoModel) {\n        data = mapSeries.getData();\n      }\n    });\n    var geo = mapOrGeoModel.coordinateSystem;\n    var regionsGroup = this._regionsGroup;\n    var group = this.group;\n    var transformInfo = geo.getTransformInfo();\n    var transformInfoRaw = transformInfo.raw;\n    var transformInfoRoam = transformInfo.roam; // No animation when first draw or in action\n\n    var isFirstDraw = !regionsGroup.childAt(0) || payload;\n\n    if (isFirstDraw) {\n      group.x = transformInfoRoam.x;\n      group.y = transformInfoRoam.y;\n      group.scaleX = transformInfoRoam.scaleX;\n      group.scaleY = transformInfoRoam.scaleY;\n      group.dirty();\n    } else {\n      graphic.updateProps(group, transformInfoRoam, mapOrGeoModel);\n    }\n\n    var isVisualEncodedByVisualMap = data && data.getVisual('visualMeta') && data.getVisual('visualMeta').length > 0;\n    var viewBuildCtx = {\n      api: api,\n      geo: geo,\n      mapOrGeoModel: mapOrGeoModel,\n      data: data,\n      isVisualEncodedByVisualMap: isVisualEncodedByVisualMap,\n      isGeo: isGeo,\n      transformInfoRaw: transformInfoRaw\n    };\n\n    if (geo.resourceType === 'geoJSON') {\n      this._buildGeoJSON(viewBuildCtx);\n    } else if (geo.resourceType === 'geoSVG') {\n      this._buildSVG(viewBuildCtx);\n    }\n\n    this._updateController(mapOrGeoModel, ecModel, api);\n\n    this._updateMapSelectHandler(mapOrGeoModel, regionsGroup, api, fromView);\n  };\n\n  MapDraw.prototype._buildGeoJSON = function (viewBuildCtx) {\n    var regionsGroupByName = this._regionsGroupByName = zrUtil.createHashMap();\n    var regionsInfoByName = zrUtil.createHashMap();\n    var regionsGroup = this._regionsGroup;\n    var transformInfoRaw = viewBuildCtx.transformInfoRaw;\n    var mapOrGeoModel = viewBuildCtx.mapOrGeoModel;\n    var data = viewBuildCtx.data;\n    var projection = viewBuildCtx.geo.projection;\n    var projectionStream = projection && projection.stream;\n\n    function transformPoint(point, project) {\n      if (project) {\n        // projection may return null point.\n        point = project(point);\n      }\n\n      return point && [point[0] * transformInfoRaw.scaleX + transformInfoRaw.x, point[1] * transformInfoRaw.scaleY + transformInfoRaw.y];\n    }\n\n    ;\n\n    function transformPolygonPoints(inPoints) {\n      var outPoints = []; // If projectionStream is provided. Use it instead of single point project.\n\n      var project = !projectionStream && projection && projection.project;\n\n      for (var i = 0; i < inPoints.length; ++i) {\n        var newPt = transformPoint(inPoints[i], project);\n        newPt && outPoints.push(newPt);\n      }\n\n      return outPoints;\n    }\n\n    function getPolyShape(points) {\n      return {\n        shape: {\n          points: transformPolygonPoints(points)\n        }\n      };\n    }\n\n    regionsGroup.removeAll(); // Only when the resource is GeoJSON, there is `geo.regions`.\n\n    zrUtil.each(viewBuildCtx.geo.regions, function (region) {\n      var regionName = region.name; // Consider in GeoJson properties.name may be duplicated, for example,\n      // there is multiple region named \"United Kindom\" or \"France\" (so many\n      // colonies). And it is not appropriate to merge them in geo, which\n      // will make them share the same label and bring trouble in label\n      // location calculation.\n\n      var regionGroup = regionsGroupByName.get(regionName);\n\n      var _a = regionsInfoByName.get(regionName) || {},\n          dataIdx = _a.dataIdx,\n          regionModel = _a.regionModel;\n\n      if (!regionGroup) {\n        regionGroup = regionsGroupByName.set(regionName, new graphic.Group());\n        regionsGroup.add(regionGroup);\n        dataIdx = data ? data.indexOfName(regionName) : null;\n        regionModel = viewBuildCtx.isGeo ? mapOrGeoModel.getRegionModel(regionName) : data ? data.getItemModel(dataIdx) : null;\n        regionsInfoByName.set(regionName, {\n          dataIdx: dataIdx,\n          regionModel: regionModel\n        });\n      }\n\n      var polygonSubpaths = [];\n      var polylineSubpaths = [];\n      zrUtil.each(region.geometries, function (geometry) {\n        // Polygon and MultiPolygon\n        if (geometry.type === 'polygon') {\n          var polys = [geometry.exterior].concat(geometry.interiors || []);\n\n          if (projectionStream) {\n            polys = projectPolys(polys, projectionStream);\n          }\n\n          zrUtil.each(polys, function (poly) {\n            polygonSubpaths.push(new graphic.Polygon(getPolyShape(poly)));\n          });\n        } // LineString and MultiLineString\n        else {\n            var points = geometry.points;\n\n            if (projectionStream) {\n              points = projectPolys(points, projectionStream, true);\n            }\n\n            zrUtil.each(points, function (points) {\n              polylineSubpaths.push(new graphic.Polyline(getPolyShape(points)));\n            });\n          }\n      });\n      var centerPt = transformPoint(region.getCenter(), projection && projection.project);\n\n      function createCompoundPath(subpaths, isLine) {\n        if (!subpaths.length) {\n          return;\n        }\n\n        var compoundPath = new graphic.CompoundPath({\n          culling: true,\n          segmentIgnoreThreshold: 1,\n          shape: {\n            paths: subpaths\n          }\n        });\n        regionGroup.add(compoundPath);\n        applyOptionStyleForRegion(viewBuildCtx, compoundPath, dataIdx, regionModel);\n        resetLabelForRegion(viewBuildCtx, compoundPath, regionName, regionModel, mapOrGeoModel, dataIdx, centerPt);\n\n        if (isLine) {\n          fixLineStyle(compoundPath);\n          zrUtil.each(compoundPath.states, fixLineStyle);\n        }\n      }\n\n      createCompoundPath(polygonSubpaths);\n      createCompoundPath(polylineSubpaths, true);\n    }); // Ensure children have been added to `regionGroup` before calling them.\n\n    regionsGroupByName.each(function (regionGroup, regionName) {\n      var _a = regionsInfoByName.get(regionName),\n          dataIdx = _a.dataIdx,\n          regionModel = _a.regionModel;\n\n      resetEventTriggerForRegion(viewBuildCtx, regionGroup, regionName, regionModel, mapOrGeoModel, dataIdx);\n      resetTooltipForRegion(viewBuildCtx, regionGroup, regionName, regionModel, mapOrGeoModel);\n      resetStateTriggerForRegion(viewBuildCtx, regionGroup, regionName, regionModel, mapOrGeoModel);\n    }, this);\n  };\n\n  MapDraw.prototype._buildSVG = function (viewBuildCtx) {\n    var mapName = viewBuildCtx.geo.map;\n    var transformInfoRaw = viewBuildCtx.transformInfoRaw;\n    this._svgGroup.x = transformInfoRaw.x;\n    this._svgGroup.y = transformInfoRaw.y;\n    this._svgGroup.scaleX = transformInfoRaw.scaleX;\n    this._svgGroup.scaleY = transformInfoRaw.scaleY;\n\n    if (this._svgResourceChanged(mapName)) {\n      this._freeSVG();\n\n      this._useSVG(mapName);\n    }\n\n    var svgDispatcherMap = this._svgDispatcherMap = zrUtil.createHashMap();\n    var focusSelf = false;\n    zrUtil.each(this._svgGraphicRecord.named, function (namedItem) {\n      // Note that we also allow different elements have the same name.\n      // For example, a glyph of a city and the label of the city have\n      // the same name and their tooltip info can be defined in a single\n      // region option.\n      var regionName = namedItem.name;\n      var mapOrGeoModel = viewBuildCtx.mapOrGeoModel;\n      var data = viewBuildCtx.data;\n      var svgNodeTagLower = namedItem.svgNodeTagLower;\n      var el = namedItem.el;\n      var dataIdx = data ? data.indexOfName(regionName) : null;\n      var regionModel = mapOrGeoModel.getRegionModel(regionName);\n\n      if (OPTION_STYLE_ENABLED_TAG_MAP.get(svgNodeTagLower) != null && el instanceof Displayable) {\n        applyOptionStyleForRegion(viewBuildCtx, el, dataIdx, regionModel);\n      }\n\n      if (el instanceof Displayable) {\n        el.culling = true;\n      } // We do not know how the SVG like so we'd better not to change z2.\n      // Otherwise it might bring some unexpected result. For example,\n      // an area hovered that make some inner city can not be clicked.\n\n\n      el.z2EmphasisLift = 0; // If self named:\n\n      if (!namedItem.namedFrom) {\n        // label should batter to be displayed based on the center of <g>\n        // if it is named rather than displayed on each child.\n        if (LABEL_HOST_MAP.get(svgNodeTagLower) != null) {\n          resetLabelForRegion(viewBuildCtx, el, regionName, regionModel, mapOrGeoModel, dataIdx, null);\n        }\n\n        resetEventTriggerForRegion(viewBuildCtx, el, regionName, regionModel, mapOrGeoModel, dataIdx);\n        resetTooltipForRegion(viewBuildCtx, el, regionName, regionModel, mapOrGeoModel);\n\n        if (STATE_TRIGGER_TAG_MAP.get(svgNodeTagLower) != null) {\n          var focus_1 = resetStateTriggerForRegion(viewBuildCtx, el, regionName, regionModel, mapOrGeoModel);\n\n          if (focus_1 === 'self') {\n            focusSelf = true;\n          }\n\n          var els = svgDispatcherMap.get(regionName) || svgDispatcherMap.set(regionName, []);\n          els.push(el);\n        }\n      }\n    }, this);\n\n    this._enableBlurEntireSVG(focusSelf, viewBuildCtx);\n  };\n\n  MapDraw.prototype._enableBlurEntireSVG = function (focusSelf, viewBuildCtx) {\n    // It's a little complicated to support blurring the entire geoSVG in series-map.\n    // So do not support it until some requirements come.\n    // At present, in series-map, only regions can be blurred.\n    if (focusSelf && viewBuildCtx.isGeo) {\n      var blurStyle = viewBuildCtx.mapOrGeoModel.getModel(['blur', 'itemStyle']).getItemStyle(); // Only support `opacity` here. Because not sure that other props are suitable for\n      // all of the elements generated by SVG (especially for Text/TSpan/Image/... ).\n\n      var opacity_1 = blurStyle.opacity;\n\n      this._svgGraphicRecord.root.traverse(function (el) {\n        if (!el.isGroup) {\n          // PENDING: clear those settings to SVG elements when `_freeSVG`.\n          // (Currently it happen not to be needed.)\n          setDefaultStateProxy(el);\n          var style = el.ensureState('blur').style || {}; // Do not overwrite the region style that already set from region option.\n\n          if (style.opacity == null && opacity_1 != null) {\n            style.opacity = opacity_1;\n          } // If `ensureState('blur').style = {}`, there will be default opacity.\n          // Enable `stateTransition` (animation).\n\n\n          el.ensureState('emphasis');\n        }\n      });\n    }\n  };\n\n  MapDraw.prototype.remove = function () {\n    this._regionsGroup.removeAll();\n\n    this._regionsGroupByName = null;\n\n    this._svgGroup.removeAll();\n\n    this._freeSVG();\n\n    this._controller.dispose();\n\n    this._controllerHost = null;\n  };\n\n  MapDraw.prototype.findHighDownDispatchers = function (name, geoModel) {\n    if (name == null) {\n      return [];\n    }\n\n    var geo = geoModel.coordinateSystem;\n\n    if (geo.resourceType === 'geoJSON') {\n      var regionsGroupByName = this._regionsGroupByName;\n\n      if (regionsGroupByName) {\n        var regionGroup = regionsGroupByName.get(name);\n        return regionGroup ? [regionGroup] : [];\n      }\n    } else if (geo.resourceType === 'geoSVG') {\n      return this._svgDispatcherMap && this._svgDispatcherMap.get(name) || [];\n    }\n  };\n\n  MapDraw.prototype._svgResourceChanged = function (mapName) {\n    return this._svgMapName !== mapName;\n  };\n\n  MapDraw.prototype._useSVG = function (mapName) {\n    var resource = geoSourceManager.getGeoResource(mapName);\n\n    if (resource && resource.type === 'geoSVG') {\n      var svgGraphic = resource.useGraphic(this.uid);\n\n      this._svgGroup.add(svgGraphic.root);\n\n      this._svgGraphicRecord = svgGraphic;\n      this._svgMapName = mapName;\n    }\n  };\n\n  MapDraw.prototype._freeSVG = function () {\n    var mapName = this._svgMapName;\n\n    if (mapName == null) {\n      return;\n    }\n\n    var resource = geoSourceManager.getGeoResource(mapName);\n\n    if (resource && resource.type === 'geoSVG') {\n      resource.freeGraphic(this.uid);\n    }\n\n    this._svgGraphicRecord = null;\n    this._svgDispatcherMap = null;\n\n    this._svgGroup.removeAll();\n\n    this._svgMapName = null;\n  };\n\n  MapDraw.prototype._updateController = function (mapOrGeoModel, ecModel, api) {\n    var geo = mapOrGeoModel.coordinateSystem;\n    var controller = this._controller;\n    var controllerHost = this._controllerHost; // @ts-ignore FIXME:TS\n\n    controllerHost.zoomLimit = mapOrGeoModel.get('scaleLimit');\n    controllerHost.zoom = geo.getZoom(); // roamType is will be set default true if it is null\n    // @ts-ignore FIXME:TS\n\n    controller.enable(mapOrGeoModel.get('roam') || false);\n    var mainType = mapOrGeoModel.mainType;\n\n    function makeActionBase() {\n      var action = {\n        type: 'geoRoam',\n        componentType: mainType\n      };\n      action[mainType + 'Id'] = mapOrGeoModel.id;\n      return action;\n    }\n\n    controller.off('pan').on('pan', function (e) {\n      this._mouseDownFlag = false;\n      roamHelper.updateViewOnPan(controllerHost, e.dx, e.dy);\n      api.dispatchAction(zrUtil.extend(makeActionBase(), {\n        dx: e.dx,\n        dy: e.dy,\n        animation: {\n          duration: 0\n        }\n      }));\n    }, this);\n    controller.off('zoom').on('zoom', function (e) {\n      this._mouseDownFlag = false;\n      roamHelper.updateViewOnZoom(controllerHost, e.scale, e.originX, e.originY);\n      api.dispatchAction(zrUtil.extend(makeActionBase(), {\n        zoom: e.scale,\n        originX: e.originX,\n        originY: e.originY,\n        animation: {\n          duration: 0\n        }\n      }));\n    }, this);\n    controller.setPointerChecker(function (e, x, y) {\n      return geo.containPoint([x, y]) && !onIrrelevantElement(e, api, mapOrGeoModel);\n    });\n  };\n  /**\r\n   * FIXME: this is a temporarily workaround.\r\n   * When `geoRoam` the elements need to be reset in `MapView['render']`, because the props like\r\n   * `ignore` might have been modified by `LabelManager`, and `LabelManager#addLabelsOfSeries`\r\n   * will subsequently cache `defaultAttr` like `ignore`. If do not do this reset, the modified\r\n   * props will have no chance to be restored.\r\n   * Note: This reset should be after `clearStates` in `renderSeries` because `useStates` in\r\n   * `renderSeries` will cache the modified `ignore` to `el._normalState`.\r\n   * TODO:\r\n   * Use clone/immutable in `LabelManager`?\r\n   */\n\n\n  MapDraw.prototype.resetForLabelLayout = function () {\n    this.group.traverse(function (el) {\n      var label = el.getTextContent();\n\n      if (label) {\n        label.ignore = mapLabelRaw(label).ignore;\n      }\n    });\n  };\n\n  MapDraw.prototype._updateMapSelectHandler = function (mapOrGeoModel, regionsGroup, api, fromView) {\n    var mapDraw = this;\n    regionsGroup.off('mousedown');\n    regionsGroup.off('click'); // @ts-ignore FIXME:TS resolve type conflict\n\n    if (mapOrGeoModel.get('selectedMode')) {\n      regionsGroup.on('mousedown', function () {\n        mapDraw._mouseDownFlag = true;\n      });\n      regionsGroup.on('click', function (e) {\n        if (!mapDraw._mouseDownFlag) {\n          return;\n        }\n\n        mapDraw._mouseDownFlag = false;\n      });\n    }\n  };\n\n  return MapDraw;\n}();\n\n;\n\nfunction applyOptionStyleForRegion(viewBuildCtx, el, dataIndex, regionModel) {\n  // All of the path are using `itemStyle`, because\n  // (1) Some SVG also use fill on polyline (The different between\n  // polyline and polygon is \"open\" or \"close\" but not fill or not).\n  // (2) For the common props like opacity, if some use itemStyle\n  // and some use `lineStyle`, it might confuse users.\n  // (3) Most SVG use <path>, where can not detect whether to draw a \"line\"\n  // or a filled shape, so use `itemStyle` for <path>.\n  var normalStyleModel = regionModel.getModel('itemStyle');\n  var emphasisStyleModel = regionModel.getModel(['emphasis', 'itemStyle']);\n  var blurStyleModel = regionModel.getModel(['blur', 'itemStyle']);\n  var selectStyleModel = regionModel.getModel(['select', 'itemStyle']); // NOTE: DON'T use 'style' in visual when drawing map.\n  // This component is used for drawing underlying map for both geo component and map series.\n\n  var normalStyle = getFixedItemStyle(normalStyleModel);\n  var emphasisStyle = getFixedItemStyle(emphasisStyleModel);\n  var selectStyle = getFixedItemStyle(selectStyleModel);\n  var blurStyle = getFixedItemStyle(blurStyleModel); // Update the itemStyle if has data visual\n\n  var data = viewBuildCtx.data;\n\n  if (data) {\n    // Only visual color of each item will be used. It can be encoded by visualMap\n    // But visual color of series is used in symbol drawing\n    // Visual color for each series is for the symbol draw\n    var style = data.getItemVisual(dataIndex, 'style');\n    var decal = data.getItemVisual(dataIndex, 'decal');\n\n    if (viewBuildCtx.isVisualEncodedByVisualMap && style.fill) {\n      normalStyle.fill = style.fill;\n    }\n\n    if (decal) {\n      normalStyle.decal = createOrUpdatePatternFromDecal(decal, viewBuildCtx.api);\n    }\n  } // SVG text, tspan and image can be named but not supporeted\n  // to be styled by region option yet.\n\n\n  el.setStyle(normalStyle);\n  el.style.strokeNoScale = true;\n  el.ensureState('emphasis').style = emphasisStyle;\n  el.ensureState('select').style = selectStyle;\n  el.ensureState('blur').style = blurStyle; // Enable blur\n\n  setDefaultStateProxy(el);\n}\n\nfunction resetLabelForRegion(viewBuildCtx, el, regionName, regionModel, mapOrGeoModel, // Exist only if `viewBuildCtx.data` exists.\ndataIdx, // If labelXY not provided, use `textConfig.position: 'inside'`\nlabelXY) {\n  var data = viewBuildCtx.data;\n  var isGeo = viewBuildCtx.isGeo;\n  var isDataNaN = data && isNaN(data.get(data.mapDimension('value'), dataIdx));\n  var itemLayout = data && data.getItemLayout(dataIdx); // In the following cases label will be drawn\n  // 1. In map series and data value is NaN\n  // 2. In geo component\n  // 3. Region has no series legendIcon, which will be add a showLabel flag in mapSymbolLayout\n\n  if (isGeo || isDataNaN || itemLayout && itemLayout.showLabel) {\n    var query = !isGeo ? dataIdx : regionName;\n    var labelFetcher = void 0; // Consider dataIdx not found.\n\n    if (!data || dataIdx >= 0) {\n      labelFetcher = mapOrGeoModel;\n    }\n\n    var specifiedTextOpt = labelXY ? {\n      normal: {\n        align: 'center',\n        verticalAlign: 'middle'\n      }\n    } : null; // Caveat: must be called after `setDefaultStateProxy(el);` called.\n    // because textContent will be assign with `el.stateProxy` inside.\n\n    setLabelStyle(el, getLabelStatesModels(regionModel), {\n      labelFetcher: labelFetcher,\n      labelDataIndex: query,\n      defaultText: regionName\n    }, specifiedTextOpt);\n    var textEl = el.getTextContent();\n\n    if (textEl) {\n      mapLabelRaw(textEl).ignore = textEl.ignore;\n\n      if (el.textConfig && labelXY) {\n        // Compute a relative offset based on the el bounding rect.\n        var rect = el.getBoundingRect().clone(); // Need to make sure the percent position base on the same rect in normal and\n        // emphasis state. Otherwise if using boundingRect of el, but the emphasis state\n        // has borderWidth (even 0.5px), the text position will be changed obviously\n        // if the position is very big like ['1234%', '1345%'].\n\n        el.textConfig.layoutRect = rect;\n        el.textConfig.position = [(labelXY[0] - rect.x) / rect.width * 100 + '%', (labelXY[1] - rect.y) / rect.height * 100 + '%'];\n      }\n    } // PENDING:\n    // If labelLayout is enabled (test/label-layout.html), el.dataIndex should be specified.\n    // But el.dataIndex is also used to determine whether user event should be triggered,\n    // where el.seriesIndex or el.dataModel must be specified. At present for a single el\n    // there is not case that \"only label layout enabled but user event disabled\", so here\n    // we depends `resetEventTriggerForRegion` to do the job of setting `el.dataIndex`.\n\n\n    el.disableLabelAnimation = true;\n  } else {\n    el.removeTextContent();\n    el.removeTextConfig();\n    el.disableLabelAnimation = null;\n  }\n}\n\nfunction resetEventTriggerForRegion(viewBuildCtx, eventTrigger, regionName, regionModel, mapOrGeoModel, // Exist only if `viewBuildCtx.data` exists.\ndataIdx) {\n  // setItemGraphicEl, setHoverStyle after all polygons and labels\n  // are added to the regionGroup\n  if (viewBuildCtx.data) {\n    // FIXME: when series-map use a SVG map, and there are duplicated name specified\n    // on different SVG elements, after `data.setItemGraphicEl(...)`:\n    // (1) all of them will be mounted with `dataIndex`, `seriesIndex`, so that tooltip\n    // can be triggered only mouse hover. That's correct.\n    // (2) only the last element will be kept in `data`, so that if trigger tooltip\n    // by `dispatchAction`, only the last one can be found and triggered. That might be\n    // not correct. We will fix it in future if anyone demanding that.\n    viewBuildCtx.data.setItemGraphicEl(dataIdx, eventTrigger);\n  } // series-map will not trigger \"geoselectchange\" no matter it is\n  // based on a declared geo component. Because series-map will\n  // trigger \"selectchange\". If it trigger both the two events,\n  // If users call `chart.dispatchAction({type: 'toggleSelect'})`,\n  // it not easy to also fire event \"geoselectchanged\".\n  else {\n      // Package custom mouse event for geo component\n      getECData(eventTrigger).eventData = {\n        componentType: 'geo',\n        componentIndex: mapOrGeoModel.componentIndex,\n        geoIndex: mapOrGeoModel.componentIndex,\n        name: regionName,\n        region: regionModel && regionModel.option || {}\n      };\n    }\n}\n\nfunction resetTooltipForRegion(viewBuildCtx, el, regionName, regionModel, mapOrGeoModel) {\n  if (!viewBuildCtx.data) {\n    graphic.setTooltipConfig({\n      el: el,\n      componentModel: mapOrGeoModel,\n      itemName: regionName,\n      // @ts-ignore FIXME:TS fix the \"compatible with each other\"?\n      itemTooltipOption: regionModel.get('tooltip')\n    });\n  }\n}\n\nfunction resetStateTriggerForRegion(viewBuildCtx, el, regionName, regionModel, mapOrGeoModel) {\n  // @ts-ignore FIXME:TS fix the \"compatible with each other\"?\n  el.highDownSilentOnTouch = !!mapOrGeoModel.get('selectedMode'); // @ts-ignore FIXME:TS fix the \"compatible with each other\"?\n\n  var emphasisModel = regionModel.getModel('emphasis');\n  var focus = emphasisModel.get('focus');\n  toggleHoverEmphasis(el, focus, emphasisModel.get('blurScope'), emphasisModel.get('disabled'));\n\n  if (viewBuildCtx.isGeo) {\n    enableComponentHighDownFeatures(el, mapOrGeoModel, regionName);\n  }\n\n  return focus;\n}\n\nfunction projectPolys(rings, // Polygons include exterior and interiors. Or polylines.\ncreateStream, isLine) {\n  var polygons = [];\n  var curPoly;\n\n  function startPolygon() {\n    curPoly = [];\n  }\n\n  function endPolygon() {\n    if (curPoly.length) {\n      polygons.push(curPoly);\n      curPoly = [];\n    }\n  }\n\n  var stream = createStream({\n    polygonStart: startPolygon,\n    polygonEnd: endPolygon,\n    lineStart: startPolygon,\n    lineEnd: endPolygon,\n    point: function (x, y) {\n      // May have NaN values from stream.\n      if (isFinite(x) && isFinite(y)) {\n        curPoly.push([x, y]);\n      }\n    },\n    sphere: function () {}\n  });\n  !isLine && stream.polygonStart();\n  zrUtil.each(rings, function (ring) {\n    stream.lineStart();\n\n    for (var i = 0; i < ring.length; i++) {\n      stream.point(ring[i][0], ring[i][1]);\n    }\n\n    stream.lineEnd();\n  });\n  !isLine && stream.polygonEnd();\n  return polygons;\n}\n\nexport default MapDraw; // @ts-ignore FIXME:TS fix the \"compatible with each other\"?","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { __extends } from \"tslib\";\nimport * as graphic from '../../util/graphic.js';\nimport MapDraw from '../../component/helper/MapDraw.js';\nimport ChartView from '../../view/Chart.js';\nimport { setLabelStyle, getLabelStatesModels } from '../../label/labelStyle.js';\nimport { setStatesFlag, Z2_EMPHASIS_LIFT } from '../../util/states.js';\n\nvar MapView =\n/** @class */\nfunction (_super) {\n  __extends(MapView, _super);\n\n  function MapView() {\n    var _this = _super !== null && _super.apply(this, arguments) || this;\n\n    _this.type = MapView.type;\n    return _this;\n  }\n\n  MapView.prototype.render = function (mapModel, ecModel, api, payload) {\n    // Not render if it is an toggleSelect action from self\n    if (payload && payload.type === 'mapToggleSelect' && payload.from === this.uid) {\n      return;\n    }\n\n    var group = this.group;\n    group.removeAll();\n\n    if (mapModel.getHostGeoModel()) {\n      return;\n    }\n\n    if (this._mapDraw && payload && payload.type === 'geoRoam') {\n      this._mapDraw.resetForLabelLayout();\n    } // Not update map if it is an roam action from self\n\n\n    if (!(payload && payload.type === 'geoRoam' && payload.componentType === 'series' && payload.seriesId === mapModel.id)) {\n      if (mapModel.needsDrawMap) {\n        var mapDraw = this._mapDraw || new MapDraw(api);\n        group.add(mapDraw.group);\n        mapDraw.draw(mapModel, ecModel, api, this, payload);\n        this._mapDraw = mapDraw;\n      } else {\n        // Remove drawn map\n        this._mapDraw && this._mapDraw.remove();\n        this._mapDraw = null;\n      }\n    } else {\n      var mapDraw = this._mapDraw;\n      mapDraw && group.add(mapDraw.group);\n    }\n\n    mapModel.get('showLegendSymbol') && ecModel.getComponent('legend') && this._renderSymbols(mapModel, ecModel, api);\n  };\n\n  MapView.prototype.remove = function () {\n    this._mapDraw && this._mapDraw.remove();\n    this._mapDraw = null;\n    this.group.removeAll();\n  };\n\n  MapView.prototype.dispose = function () {\n    this._mapDraw && this._mapDraw.remove();\n    this._mapDraw = null;\n  };\n\n  MapView.prototype._renderSymbols = function (mapModel, ecModel, api) {\n    var originalData = mapModel.originalData;\n    var group = this.group;\n    originalData.each(originalData.mapDimension('value'), function (value, originalDataIndex) {\n      if (isNaN(value)) {\n        return;\n      }\n\n      var layout = originalData.getItemLayout(originalDataIndex);\n\n      if (!layout || !layout.point) {\n        // Not exists in map\n        return;\n      }\n\n      var point = layout.point;\n      var offset = layout.offset;\n      var circle = new graphic.Circle({\n        style: {\n          // Because the special of map draw.\n          // Which needs statistic of multiple series and draw on one map.\n          // And each series also need a symbol with legend color\n          //\n          // Layout and visual are put one the different data\n          // TODO\n          fill: mapModel.getData().getVisual('style').fill\n        },\n        shape: {\n          cx: point[0] + offset * 9,\n          cy: point[1],\n          r: 3\n        },\n        silent: true,\n        // Do not overlap the first series, on which labels are displayed.\n        z2: 8 + (!offset ? Z2_EMPHASIS_LIFT + 1 : 0)\n      }); // Only the series that has the first value on the same region is in charge of rendering the label.\n      // But consider the case:\n      // series: [\n      //     {id: 'X', type: 'map', map: 'm', {data: [{name: 'A', value: 11}, {name: 'B', {value: 22}]},\n      //     {id: 'Y', type: 'map', map: 'm', {data: [{name: 'A', value: 21}, {name: 'C', {value: 33}]}\n      // ]\n      // The offset `0` of item `A` is at series `X`, but of item `C` is at series `Y`.\n      // For backward compatibility, we follow the rule that render label `A` by the\n      // settings on series `X` but render label `C` by the settings on series `Y`.\n\n      if (!offset) {\n        var fullData = mapModel.mainSeries.getData();\n        var name_1 = originalData.getName(originalDataIndex);\n        var fullIndex_1 = fullData.indexOfName(name_1);\n        var itemModel = originalData.getItemModel(originalDataIndex);\n        var labelModel = itemModel.getModel('label');\n        var regionGroup = fullData.getItemGraphicEl(fullIndex_1); // `getFormattedLabel` needs to use `getData` inside. Here\n        // `mapModel.getData()` is shallow cloned from `mainSeries.getData()`.\n        // FIXME\n        // If this is not the `mainSeries`, the item model (like label formatter)\n        // set on original data item will never get. But it has been working\n        // like that from the beginning, and this scenario is rarely encountered.\n        // So it won't be fixed until we have to.\n\n        setLabelStyle(circle, getLabelStatesModels(itemModel), {\n          labelFetcher: {\n            getFormattedLabel: function (idx, state) {\n              return mapModel.getFormattedLabel(fullIndex_1, state);\n            }\n          },\n          defaultText: name_1\n        });\n        circle.disableLabelAnimation = true;\n\n        if (!labelModel.get('position')) {\n          circle.setTextConfig({\n            position: 'bottom'\n          });\n        }\n\n        regionGroup.onHoverStateChange = function (toState) {\n          setStatesFlag(circle, toState);\n        };\n      }\n\n      group.add(circle);\n    });\n  };\n\n  MapView.type = 'map';\n  return MapView;\n}(ChartView);\n\nexport default MapView;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { __extends } from \"tslib\";\nimport * as zrUtil from 'zrender/lib/core/util.js';\nimport createSeriesDataSimply from '../helper/createSeriesDataSimply.js';\nimport SeriesModel from '../../model/Series.js';\nimport geoSourceManager from '../../coord/geo/geoSourceManager.js';\nimport { makeSeriesEncodeForNameBased } from '../../data/helper/sourceHelper.js';\nimport { createTooltipMarkup } from '../../component/tooltip/tooltipMarkup.js';\nimport { createSymbol } from '../../util/symbol.js';\n\nvar MapSeries =\n/** @class */\nfunction (_super) {\n  __extends(MapSeries, _super);\n\n  function MapSeries() {\n    var _this = _super !== null && _super.apply(this, arguments) || this;\n\n    _this.type = MapSeries.type; // Only first map series of same mapType will drawMap.\n\n    _this.needsDrawMap = false; // Group of all map series with same mapType\n\n    _this.seriesGroup = [];\n\n    _this.getTooltipPosition = function (dataIndex) {\n      if (dataIndex != null) {\n        var name_1 = this.getData().getName(dataIndex);\n        var geo = this.coordinateSystem;\n        var region = geo.getRegion(name_1);\n        return region && geo.dataToPoint(region.getCenter());\n      }\n    };\n\n    return _this;\n  }\n\n  MapSeries.prototype.getInitialData = function (option) {\n    var data = createSeriesDataSimply(this, {\n      coordDimensions: ['value'],\n      encodeDefaulter: zrUtil.curry(makeSeriesEncodeForNameBased, this)\n    });\n    var dataNameMap = zrUtil.createHashMap();\n    var toAppendNames = [];\n\n    for (var i = 0, len = data.count(); i < len; i++) {\n      var name_2 = data.getName(i);\n      dataNameMap.set(name_2, true);\n    }\n\n    var geoSource = geoSourceManager.load(this.getMapType(), this.option.nameMap, this.option.nameProperty);\n    zrUtil.each(geoSource.regions, function (region) {\n      var name = region.name;\n\n      if (!dataNameMap.get(name)) {\n        toAppendNames.push(name);\n      }\n    }); // Complete data with missing regions. The consequent processes (like visual\n    // map and render) can not be performed without a \"full data\". For example,\n    // find `dataIndex` by name.\n\n    data.appendValues([], toAppendNames);\n    return data;\n  };\n  /**\r\n   * If no host geo model, return null, which means using a\r\n   * inner exclusive geo model.\r\n   */\n\n\n  MapSeries.prototype.getHostGeoModel = function () {\n    var geoIndex = this.option.geoIndex;\n    return geoIndex != null ? this.ecModel.getComponent('geo', geoIndex) : null;\n  };\n\n  MapSeries.prototype.getMapType = function () {\n    return (this.getHostGeoModel() || this).option.map;\n  }; // _fillOption(option, mapName) {\n  // Shallow clone\n  // option = zrUtil.extend({}, option);\n  // option.data = geoCreator.getFilledRegions(option.data, mapName, option.nameMap);\n  // return option;\n  // }\n\n\n  MapSeries.prototype.getRawValue = function (dataIndex) {\n    // Use value stored in data instead because it is calculated from multiple series\n    // FIXME Provide all value of multiple series ?\n    var data = this.getData();\n    return data.get(data.mapDimension('value'), dataIndex);\n  };\n  /**\r\n   * Get model of region\r\n   */\n\n\n  MapSeries.prototype.getRegionModel = function (regionName) {\n    var data = this.getData();\n    return data.getItemModel(data.indexOfName(regionName));\n  };\n  /**\r\n   * Map tooltip formatter\r\n   */\n\n\n  MapSeries.prototype.formatTooltip = function (dataIndex, multipleSeries, dataType) {\n    // FIXME orignalData and data is a bit confusing\n    var data = this.getData();\n    var value = this.getRawValue(dataIndex);\n    var name = data.getName(dataIndex);\n    var seriesGroup = this.seriesGroup;\n    var seriesNames = [];\n\n    for (var i = 0; i < seriesGroup.length; i++) {\n      var otherIndex = seriesGroup[i].originalData.indexOfName(name);\n      var valueDim = data.mapDimension('value');\n\n      if (!isNaN(seriesGroup[i].originalData.get(valueDim, otherIndex))) {\n        seriesNames.push(seriesGroup[i].name);\n      }\n    }\n\n    return createTooltipMarkup('section', {\n      header: seriesNames.join(', '),\n      noHeader: !seriesNames.length,\n      blocks: [createTooltipMarkup('nameValue', {\n        name: name,\n        value: value\n      })]\n    });\n  };\n\n  MapSeries.prototype.setZoom = function (zoom) {\n    this.option.zoom = zoom;\n  };\n\n  MapSeries.prototype.setCenter = function (center) {\n    this.option.center = center;\n  };\n\n  MapSeries.prototype.getLegendIcon = function (opt) {\n    var iconType = opt.icon || 'roundRect';\n    var icon = createSymbol(iconType, 0, 0, opt.itemWidth, opt.itemHeight, opt.itemStyle.fill);\n    icon.setStyle(opt.itemStyle); // Map do not use itemStyle.borderWidth as border width\n\n    icon.style.stroke = 'none'; // No rotation because no series visual symbol for map\n\n    if (iconType.indexOf('empty') > -1) {\n      icon.style.stroke = icon.style.fill;\n      icon.style.fill = '#fff';\n      icon.style.lineWidth = 2;\n    }\n\n    return icon;\n  };\n\n  MapSeries.type = 'series.map';\n  MapSeries.dependencies = ['geo'];\n  MapSeries.layoutMode = 'box';\n  MapSeries.defaultOption = {\n    // 一级层叠\n    // zlevel: 0,\n    // 二级层叠\n    z: 2,\n    coordinateSystem: 'geo',\n    // map should be explicitly specified since ec3.\n    map: '',\n    // If `geoIndex` is not specified, a exclusive geo will be\n    // created. Otherwise use the specified geo component, and\n    // `map` and `mapType` are ignored.\n    // geoIndex: 0,\n    // 'center' | 'left' | 'right' | 'x%' | {number}\n    left: 'center',\n    // 'center' | 'top' | 'bottom' | 'x%' | {number}\n    top: 'center',\n    // right\n    // bottom\n    // width:\n    // height\n    // Aspect is width / height. Inited to be geoJson bbox aspect\n    // This parameter is used for scale this aspect\n    // Default value:\n    // for geoSVG source: 1,\n    // for geoJSON source: 0.75.\n    aspectScale: null,\n    // Layout with center and size\n    // If you want to put map in a fixed size box with right aspect ratio\n    // This two properties may be more convenient.\n    // layoutCenter: [50%, 50%]\n    // layoutSize: 100\n    showLegendSymbol: true,\n    // Define left-top, right-bottom coords to control view\n    // For example, [ [180, 90], [-180, -90] ],\n    // higher priority than center and zoom\n    boundingCoords: null,\n    // Default on center of map\n    center: null,\n    zoom: 1,\n    scaleLimit: null,\n    selectedMode: true,\n    label: {\n      show: false,\n      color: '#000'\n    },\n    // scaleLimit: null,\n    itemStyle: {\n      borderWidth: 0.5,\n      borderColor: '#444',\n      areaColor: '#eee'\n    },\n    emphasis: {\n      label: {\n        show: true,\n        color: 'rgb(100,0,0)'\n      },\n      itemStyle: {\n        areaColor: 'rgba(255,215,0,0.8)'\n      }\n    },\n    select: {\n      label: {\n        show: true,\n        color: 'rgb(100,0,0)'\n      },\n      itemStyle: {\n        color: 'rgba(255,215,0,0.8)'\n      }\n    },\n    nameProperty: 'name'\n  };\n  return MapSeries;\n}(SeriesModel);\n\nexport default MapSeries;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport * as zrUtil from 'zrender/lib/core/util.js'; // FIXME 公用？\n\nfunction dataStatistics(datas, statisticType) {\n  var dataNameMap = {};\n  zrUtil.each(datas, function (data) {\n    data.each(data.mapDimension('value'), function (value, idx) {\n      // Add prefix to avoid conflict with Object.prototype.\n      var mapKey = 'ec-' + data.getName(idx);\n      dataNameMap[mapKey] = dataNameMap[mapKey] || [];\n\n      if (!isNaN(value)) {\n        dataNameMap[mapKey].push(value);\n      }\n    });\n  });\n  return datas[0].map(datas[0].mapDimension('value'), function (value, idx) {\n    var mapKey = 'ec-' + datas[0].getName(idx);\n    var sum = 0;\n    var min = Infinity;\n    var max = -Infinity;\n    var len = dataNameMap[mapKey].length;\n\n    for (var i = 0; i < len; i++) {\n      min = Math.min(min, dataNameMap[mapKey][i]);\n      max = Math.max(max, dataNameMap[mapKey][i]);\n      sum += dataNameMap[mapKey][i];\n    }\n\n    var result;\n\n    if (statisticType === 'min') {\n      result = min;\n    } else if (statisticType === 'max') {\n      result = max;\n    } else if (statisticType === 'average') {\n      result = sum / len;\n    } else {\n      result = sum;\n    }\n\n    return len === 0 ? NaN : result;\n  });\n}\n\nexport default function mapDataStatistic(ecModel) {\n  var seriesGroups = {};\n  ecModel.eachSeriesByType('map', function (seriesModel) {\n    var hostGeoModel = seriesModel.getHostGeoModel();\n    var key = hostGeoModel ? 'o' + hostGeoModel.id : 'i' + seriesModel.getMapType();\n    (seriesGroups[key] = seriesGroups[key] || []).push(seriesModel);\n  });\n  zrUtil.each(seriesGroups, function (seriesList, key) {\n    var data = dataStatistics(zrUtil.map(seriesList, function (seriesModel) {\n      return seriesModel.getData();\n    }), seriesList[0].get('mapValueCalculation'));\n\n    for (var i = 0; i < seriesList.length; i++) {\n      seriesList[i].originalData = seriesList[i].getData();\n    } // FIXME Put where?\n\n\n    for (var i = 0; i < seriesList.length; i++) {\n      seriesList[i].seriesGroup = seriesList;\n      seriesList[i].needsDrawMap = i === 0 && !seriesList[i].getHostGeoModel();\n      seriesList[i].setData(data.cloneShallow());\n      seriesList[i].mainSeries = seriesList[0];\n    }\n  });\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport * as zrUtil from 'zrender/lib/core/util.js';\nexport default function mapSymbolLayout(ecModel) {\n  var processedMapType = {};\n  ecModel.eachSeriesByType('map', function (mapSeries) {\n    var mapType = mapSeries.getMapType();\n\n    if (mapSeries.getHostGeoModel() || processedMapType[mapType]) {\n      return;\n    }\n\n    var mapSymbolOffsets = {};\n    zrUtil.each(mapSeries.seriesGroup, function (subMapSeries) {\n      var geo = subMapSeries.coordinateSystem;\n      var data = subMapSeries.originalData;\n\n      if (subMapSeries.get('showLegendSymbol') && ecModel.getComponent('legend')) {\n        data.each(data.mapDimension('value'), function (value, idx) {\n          var name = data.getName(idx);\n          var region = geo.getRegion(name); // If input series.data is [11, 22, '-'/null/undefined, 44],\n          // it will be filled with NaN: [11, 22, NaN, 44] and NaN will\n          // not be drawn. So here must validate if value is NaN.\n\n          if (!region || isNaN(value)) {\n            return;\n          }\n\n          var offset = mapSymbolOffsets[name] || 0;\n          var point = geo.dataToPoint(region.getCenter());\n          mapSymbolOffsets[name] = offset + 1;\n          data.setItemLayout(idx, {\n            point: point,\n            offset: offset\n          });\n        });\n      }\n    }); // Show label of those region not has legendIcon (which is offset 0)\n\n    var data = mapSeries.getData();\n    data.each(function (idx) {\n      var name = data.getName(idx);\n      var layout = data.getItemLayout(idx) || {};\n      layout.showLabel = !mapSymbolOffsets[name];\n      data.setItemLayout(idx, layout);\n    });\n    processedMapType[mapType] = true;\n  });\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { __extends } from \"tslib\";\n/**\r\n * Simple view coordinate system\r\n * Mapping given x, y to transformd view x, y\r\n */\n\nimport * as vector from 'zrender/lib/core/vector.js';\nimport * as matrix from 'zrender/lib/core/matrix.js';\nimport BoundingRect from 'zrender/lib/core/BoundingRect.js';\nimport Transformable from 'zrender/lib/core/Transformable.js';\nimport { parsePercent } from '../util/number.js';\nvar v2ApplyTransform = vector.applyTransform;\n\nvar View =\n/** @class */\nfunction (_super) {\n  __extends(View, _super);\n\n  function View(name) {\n    var _this = _super.call(this) || this;\n\n    _this.type = 'view';\n    _this.dimensions = ['x', 'y'];\n    /**\r\n     * Represents the transform brought by roam/zoom.\r\n     * If `View['_viewRect']` applies roam transform,\r\n     * we can get the final displayed rect.\r\n     */\n\n    _this._roamTransformable = new Transformable();\n    /**\r\n     * Represents the transform from `View['_rect']` to `View['_viewRect']`.\r\n     */\n\n    _this._rawTransformable = new Transformable();\n    _this.name = name;\n    return _this;\n  }\n\n  View.prototype.setBoundingRect = function (x, y, width, height) {\n    this._rect = new BoundingRect(x, y, width, height);\n    return this._rect;\n  };\n  /**\r\n   * @return {module:zrender/core/BoundingRect}\r\n   */\n\n\n  View.prototype.getBoundingRect = function () {\n    return this._rect;\n  };\n\n  View.prototype.setViewRect = function (x, y, width, height) {\n    this._transformTo(x, y, width, height);\n\n    this._viewRect = new BoundingRect(x, y, width, height);\n  };\n  /**\r\n   * Transformed to particular position and size\r\n   */\n\n\n  View.prototype._transformTo = function (x, y, width, height) {\n    var rect = this.getBoundingRect();\n    var rawTransform = this._rawTransformable;\n    rawTransform.transform = rect.calculateTransform(new BoundingRect(x, y, width, height));\n    var rawParent = rawTransform.parent;\n    rawTransform.parent = null;\n    rawTransform.decomposeTransform();\n    rawTransform.parent = rawParent;\n\n    this._updateTransform();\n  };\n  /**\r\n   * Set center of view\r\n   */\n\n\n  View.prototype.setCenter = function (centerCoord, api) {\n    if (!centerCoord) {\n      return;\n    }\n\n    this._center = [parsePercent(centerCoord[0], api.getWidth()), parsePercent(centerCoord[1], api.getHeight())];\n\n    this._updateCenterAndZoom();\n  };\n\n  View.prototype.setZoom = function (zoom) {\n    zoom = zoom || 1;\n    var zoomLimit = this.zoomLimit;\n\n    if (zoomLimit) {\n      if (zoomLimit.max != null) {\n        zoom = Math.min(zoomLimit.max, zoom);\n      }\n\n      if (zoomLimit.min != null) {\n        zoom = Math.max(zoomLimit.min, zoom);\n      }\n    }\n\n    this._zoom = zoom;\n\n    this._updateCenterAndZoom();\n  };\n  /**\r\n   * Get default center without roam\r\n   */\n\n\n  View.prototype.getDefaultCenter = function () {\n    // Rect before any transform\n    var rawRect = this.getBoundingRect();\n    var cx = rawRect.x + rawRect.width / 2;\n    var cy = rawRect.y + rawRect.height / 2;\n    return [cx, cy];\n  };\n\n  View.prototype.getCenter = function () {\n    return this._center || this.getDefaultCenter();\n  };\n\n  View.prototype.getZoom = function () {\n    return this._zoom || 1;\n  };\n\n  View.prototype.getRoamTransform = function () {\n    return this._roamTransformable.getLocalTransform();\n  };\n  /**\r\n   * Remove roam\r\n   */\n\n\n  View.prototype._updateCenterAndZoom = function () {\n    // Must update after view transform updated\n    var rawTransformMatrix = this._rawTransformable.getLocalTransform();\n\n    var roamTransform = this._roamTransformable;\n    var defaultCenter = this.getDefaultCenter();\n    var center = this.getCenter();\n    var zoom = this.getZoom();\n    center = vector.applyTransform([], center, rawTransformMatrix);\n    defaultCenter = vector.applyTransform([], defaultCenter, rawTransformMatrix);\n    roamTransform.originX = center[0];\n    roamTransform.originY = center[1];\n    roamTransform.x = defaultCenter[0] - center[0];\n    roamTransform.y = defaultCenter[1] - center[1];\n    roamTransform.scaleX = roamTransform.scaleY = zoom;\n\n    this._updateTransform();\n  };\n  /**\r\n   * Update transform props on `this` based on the current\r\n   * `this._roamTransformable` and `this._rawTransformable`.\r\n   */\n\n\n  View.prototype._updateTransform = function () {\n    var roamTransformable = this._roamTransformable;\n    var rawTransformable = this._rawTransformable;\n    rawTransformable.parent = roamTransformable;\n    roamTransformable.updateTransform();\n    rawTransformable.updateTransform();\n    matrix.copy(this.transform || (this.transform = []), rawTransformable.transform || matrix.create());\n    this._rawTransform = rawTransformable.getLocalTransform();\n    this.invTransform = this.invTransform || [];\n    matrix.invert(this.invTransform, this.transform);\n    this.decomposeTransform();\n  };\n\n  View.prototype.getTransformInfo = function () {\n    var rawTransformable = this._rawTransformable;\n    var roamTransformable = this._roamTransformable; // Because roamTransformabel has `originX/originY` modified,\n    // but the caller of `getTransformInfo` can not handle `originX/originY`,\n    // so need to recalculate them.\n\n    var dummyTransformable = new Transformable();\n    dummyTransformable.transform = roamTransformable.transform;\n    dummyTransformable.decomposeTransform();\n    return {\n      roam: {\n        x: dummyTransformable.x,\n        y: dummyTransformable.y,\n        scaleX: dummyTransformable.scaleX,\n        scaleY: dummyTransformable.scaleY\n      },\n      raw: {\n        x: rawTransformable.x,\n        y: rawTransformable.y,\n        scaleX: rawTransformable.scaleX,\n        scaleY: rawTransformable.scaleY\n      }\n    };\n  };\n\n  View.prototype.getViewRect = function () {\n    return this._viewRect;\n  };\n  /**\r\n   * Get view rect after roam transform\r\n   */\n\n\n  View.prototype.getViewRectAfterRoam = function () {\n    var rect = this.getBoundingRect().clone();\n    rect.applyTransform(this.transform);\n    return rect;\n  };\n  /**\r\n   * Convert a single (lon, lat) data item to (x, y) point.\r\n   */\n\n\n  View.prototype.dataToPoint = function (data, noRoam, out) {\n    var transform = noRoam ? this._rawTransform : this.transform;\n    out = out || [];\n    return transform ? v2ApplyTransform(out, data, transform) : vector.copy(out, data);\n  };\n  /**\r\n   * Convert a (x, y) point to (lon, lat) data\r\n   */\n\n\n  View.prototype.pointToData = function (point) {\n    var invTransform = this.invTransform;\n    return invTransform ? v2ApplyTransform([], point, invTransform) : [point[0], point[1]];\n  };\n\n  View.prototype.convertToPixel = function (ecModel, finder, value) {\n    var coordSys = getCoordSys(finder);\n    return coordSys === this ? coordSys.dataToPoint(value) : null;\n  };\n\n  View.prototype.convertFromPixel = function (ecModel, finder, pixel) {\n    var coordSys = getCoordSys(finder);\n    return coordSys === this ? coordSys.pointToData(pixel) : null;\n  };\n  /**\r\n   * @implements\r\n   */\n\n\n  View.prototype.containPoint = function (point) {\n    return this.getViewRectAfterRoam().contain(point[0], point[1]);\n  };\n\n  View.dimensions = ['x', 'y'];\n  return View;\n}(Transformable);\n\nfunction getCoordSys(finder) {\n  var seriesModel = finder.seriesModel;\n  return seriesModel ? seriesModel.coordinateSystem : null; // e.g., graph.\n}\n\nexport default View;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { __extends } from \"tslib\";\nimport * as zrUtil from 'zrender/lib/core/util.js';\nimport BoundingRect from 'zrender/lib/core/BoundingRect.js';\nimport View from '../View.js';\nimport geoSourceManager from './geoSourceManager.js';\nimport { SINGLE_REFERRING } from '../../util/model.js';\nimport { warn } from '../../util/log.js';\nvar GEO_DEFAULT_PARAMS = {\n  'geoJSON': {\n    aspectScale: 0.75,\n    invertLongitute: true\n  },\n  'geoSVG': {\n    aspectScale: 1,\n    invertLongitute: false\n  }\n};\nexport var geo2DDimensions = ['lng', 'lat'];\n\nvar Geo =\n/** @class */\nfunction (_super) {\n  __extends(Geo, _super);\n\n  function Geo(name, map, opt) {\n    var _this = _super.call(this, name) || this;\n\n    _this.dimensions = geo2DDimensions;\n    _this.type = 'geo'; // Only store specified name coord via `addGeoCoord`.\n\n    _this._nameCoordMap = zrUtil.createHashMap();\n    _this.map = map;\n    var projection = opt.projection;\n    var source = geoSourceManager.load(map, opt.nameMap, opt.nameProperty);\n    var resource = geoSourceManager.getGeoResource(map);\n    var resourceType = _this.resourceType = resource ? resource.type : null;\n    var regions = _this.regions = source.regions;\n    var defaultParams = GEO_DEFAULT_PARAMS[resource.type];\n    _this._regionsMap = source.regionsMap;\n    _this.regions = source.regions;\n\n    if (process.env.NODE_ENV !== 'production' && projection) {\n      // Do some check\n      if (resourceType === 'geoSVG') {\n        if (process.env.NODE_ENV !== 'production') {\n          warn(\"Map \" + map + \" with SVG source can't use projection. Only GeoJSON source supports projection.\");\n        }\n\n        projection = null;\n      }\n\n      if (!(projection.project && projection.unproject)) {\n        if (process.env.NODE_ENV !== 'production') {\n          warn('project and unproject must be both provided in the projeciton.');\n        }\n\n        projection = null;\n      }\n    }\n\n    _this.projection = projection;\n    var boundingRect;\n\n    if (projection) {\n      // Can't reuse the raw bounding rect\n      for (var i = 0; i < regions.length; i++) {\n        var regionRect = regions[i].getBoundingRect(projection);\n        boundingRect = boundingRect || regionRect.clone();\n        boundingRect.union(regionRect);\n      }\n    } else {\n      boundingRect = source.boundingRect;\n    }\n\n    _this.setBoundingRect(boundingRect.x, boundingRect.y, boundingRect.width, boundingRect.height); // aspectScale and invertLongitute actually is the parameters default raw projection.\n    // So we ignore them if projection is given.\n    // Ignore default aspect scale if projection exits.\n\n\n    _this.aspectScale = projection ? 1 : zrUtil.retrieve2(opt.aspectScale, defaultParams.aspectScale); // Not invert longitude if projection exits.\n\n    _this._invertLongitute = projection ? false : defaultParams.invertLongitute;\n    return _this;\n  }\n\n  Geo.prototype._transformTo = function (x, y, width, height) {\n    var rect = this.getBoundingRect();\n    var invertLongitute = this._invertLongitute;\n    rect = rect.clone();\n\n    if (invertLongitute) {\n      // Longitude is inverted.\n      rect.y = -rect.y - rect.height;\n    }\n\n    var rawTransformable = this._rawTransformable;\n    rawTransformable.transform = rect.calculateTransform(new BoundingRect(x, y, width, height));\n    var rawParent = rawTransformable.parent;\n    rawTransformable.parent = null;\n    rawTransformable.decomposeTransform();\n    rawTransformable.parent = rawParent;\n\n    if (invertLongitute) {\n      rawTransformable.scaleY = -rawTransformable.scaleY;\n    }\n\n    this._updateTransform();\n  };\n\n  Geo.prototype.getRegion = function (name) {\n    return this._regionsMap.get(name);\n  };\n\n  Geo.prototype.getRegionByCoord = function (coord) {\n    var regions = this.regions;\n\n    for (var i = 0; i < regions.length; i++) {\n      var region = regions[i];\n\n      if (region.type === 'geoJSON' && region.contain(coord)) {\n        return regions[i];\n      }\n    }\n  };\n  /**\r\n   * Add geoCoord for indexing by name\r\n   */\n\n\n  Geo.prototype.addGeoCoord = function (name, geoCoord) {\n    this._nameCoordMap.set(name, geoCoord);\n  };\n  /**\r\n   * Get geoCoord by name\r\n   */\n\n\n  Geo.prototype.getGeoCoord = function (name) {\n    var region = this._regionsMap.get(name); // Calculate center only on demand.\n\n\n    return this._nameCoordMap.get(name) || region && region.getCenter();\n  };\n\n  Geo.prototype.dataToPoint = function (data, noRoam, out) {\n    if (zrUtil.isString(data)) {\n      // Map area name to geoCoord\n      data = this.getGeoCoord(data);\n    }\n\n    if (data) {\n      var projection = this.projection;\n\n      if (projection) {\n        // projection may return null point.\n        data = projection.project(data);\n      }\n\n      return data && this.projectedToPoint(data, noRoam, out);\n    }\n  };\n\n  Geo.prototype.pointToData = function (point) {\n    var projection = this.projection;\n\n    if (projection) {\n      // projection may return null point.\n      point = projection.unproject(point);\n    }\n\n    return point && this.pointToProjected(point);\n  };\n  /**\r\n   * Point to projected data. Same with pointToData when projection is used.\r\n   */\n\n\n  Geo.prototype.pointToProjected = function (point) {\n    return _super.prototype.pointToData.call(this, point);\n  };\n\n  Geo.prototype.projectedToPoint = function (projected, noRoam, out) {\n    return _super.prototype.dataToPoint.call(this, projected, noRoam, out);\n  };\n\n  Geo.prototype.convertToPixel = function (ecModel, finder, value) {\n    var coordSys = getCoordSys(finder);\n    return coordSys === this ? coordSys.dataToPoint(value) : null;\n  };\n\n  Geo.prototype.convertFromPixel = function (ecModel, finder, pixel) {\n    var coordSys = getCoordSys(finder);\n    return coordSys === this ? coordSys.pointToData(pixel) : null;\n  };\n\n  return Geo;\n}(View);\n\n;\nzrUtil.mixin(Geo, View);\n\nfunction getCoordSys(finder) {\n  var geoModel = finder.geoModel;\n  var seriesModel = finder.seriesModel;\n  return geoModel ? geoModel.coordinateSystem : seriesModel ? seriesModel.coordinateSystem // For map series.\n  || (seriesModel.getReferringComponents('geo', SINGLE_REFERRING).models[0] || {}).coordinateSystem : null;\n}\n\nexport default Geo;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport * as zrUtil from 'zrender/lib/core/util.js';\nimport Geo, { geo2DDimensions } from './Geo.js';\nimport * as layout from '../../util/layout.js';\nimport * as numberUtil from '../../util/number.js';\nimport geoSourceManager from './geoSourceManager.js';\nimport * as vector from 'zrender/lib/core/vector.js';\n/**\r\n * Resize method bound to the geo\r\n */\n\nfunction resizeGeo(geoModel, api) {\n  var boundingCoords = geoModel.get('boundingCoords');\n\n  if (boundingCoords != null) {\n    var leftTop_1 = boundingCoords[0];\n    var rightBottom_1 = boundingCoords[1];\n\n    if (!(isFinite(leftTop_1[0]) && isFinite(leftTop_1[1]) && isFinite(rightBottom_1[0]) && isFinite(rightBottom_1[1]))) {\n      if (process.env.NODE_ENV !== 'production') {\n        console.error('Invalid boundingCoords');\n      }\n    } else {\n      // Sample around the lng/lat rect and use projection to calculate actual bounding rect.\n      var projection_1 = this.projection;\n\n      if (projection_1) {\n        var xMin = leftTop_1[0];\n        var yMin = leftTop_1[1];\n        var xMax = rightBottom_1[0];\n        var yMax = rightBottom_1[1];\n        leftTop_1 = [Infinity, Infinity];\n        rightBottom_1 = [-Infinity, -Infinity]; // TODO better way?\n\n        var sampleLine = function (x0, y0, x1, y1) {\n          var dx = x1 - x0;\n          var dy = y1 - y0;\n\n          for (var i = 0; i <= 100; i++) {\n            var p = i / 100;\n            var pt = projection_1.project([x0 + dx * p, y0 + dy * p]);\n            vector.min(leftTop_1, leftTop_1, pt);\n            vector.max(rightBottom_1, rightBottom_1, pt);\n          }\n        }; // Top\n\n\n        sampleLine(xMin, yMin, xMax, yMin); // Right\n\n        sampleLine(xMax, yMin, xMax, yMax); // Bottom\n\n        sampleLine(xMax, yMax, xMin, yMax); // Left\n\n        sampleLine(xMin, yMax, xMax, yMin);\n      }\n\n      this.setBoundingRect(leftTop_1[0], leftTop_1[1], rightBottom_1[0] - leftTop_1[0], rightBottom_1[1] - leftTop_1[1]);\n    }\n  }\n\n  var rect = this.getBoundingRect();\n  var centerOption = geoModel.get('layoutCenter');\n  var sizeOption = geoModel.get('layoutSize');\n  var viewWidth = api.getWidth();\n  var viewHeight = api.getHeight();\n  var aspect = rect.width / rect.height * this.aspectScale;\n  var useCenterAndSize = false;\n  var center;\n  var size;\n\n  if (centerOption && sizeOption) {\n    center = [numberUtil.parsePercent(centerOption[0], viewWidth), numberUtil.parsePercent(centerOption[1], viewHeight)];\n    size = numberUtil.parsePercent(sizeOption, Math.min(viewWidth, viewHeight));\n\n    if (!isNaN(center[0]) && !isNaN(center[1]) && !isNaN(size)) {\n      useCenterAndSize = true;\n    } else {\n      if (process.env.NODE_ENV !== 'production') {\n        console.warn('Given layoutCenter or layoutSize data are invalid. Use left/top/width/height instead.');\n      }\n    }\n  }\n\n  var viewRect;\n\n  if (useCenterAndSize) {\n    viewRect = {};\n\n    if (aspect > 1) {\n      // Width is same with size\n      viewRect.width = size;\n      viewRect.height = size / aspect;\n    } else {\n      viewRect.height = size;\n      viewRect.width = size * aspect;\n    }\n\n    viewRect.y = center[1] - viewRect.height / 2;\n    viewRect.x = center[0] - viewRect.width / 2;\n  } else {\n    // Use left/top/width/height\n    var boxLayoutOption = geoModel.getBoxLayoutParams();\n    boxLayoutOption.aspect = aspect;\n    viewRect = layout.getLayoutRect(boxLayoutOption, {\n      width: viewWidth,\n      height: viewHeight\n    });\n  }\n\n  this.setViewRect(viewRect.x, viewRect.y, viewRect.width, viewRect.height);\n  this.setCenter(geoModel.get('center'), api);\n  this.setZoom(geoModel.get('zoom'));\n} // Back compat for ECharts2, where the coord map is set on map series:\n// {type: 'map', geoCoord: {'cityA': [116.46,39.92], 'cityA': [119.12,24.61]}},\n\n\nfunction setGeoCoords(geo, model) {\n  zrUtil.each(model.get('geoCoord'), function (geoCoord, name) {\n    geo.addGeoCoord(name, geoCoord);\n  });\n}\n\nvar GeoCreator =\n/** @class */\nfunction () {\n  function GeoCreator() {\n    // For deciding which dimensions to use when creating list data\n    this.dimensions = geo2DDimensions;\n  }\n\n  GeoCreator.prototype.create = function (ecModel, api) {\n    var geoList = [];\n\n    function getCommonGeoProperties(model) {\n      return {\n        nameProperty: model.get('nameProperty'),\n        aspectScale: model.get('aspectScale'),\n        projection: model.get('projection')\n      };\n    } // FIXME Create each time may be slow\n\n\n    ecModel.eachComponent('geo', function (geoModel, idx) {\n      var mapName = geoModel.get('map');\n      var geo = new Geo(mapName + idx, mapName, zrUtil.extend({\n        nameMap: geoModel.get('nameMap')\n      }, getCommonGeoProperties(geoModel)));\n      geo.zoomLimit = geoModel.get('scaleLimit');\n      geoList.push(geo); // setGeoCoords(geo, geoModel);\n\n      geoModel.coordinateSystem = geo;\n      geo.model = geoModel; // Inject resize method\n\n      geo.resize = resizeGeo;\n      geo.resize(geoModel, api);\n    });\n    ecModel.eachSeries(function (seriesModel) {\n      var coordSys = seriesModel.get('coordinateSystem');\n\n      if (coordSys === 'geo') {\n        var geoIndex = seriesModel.get('geoIndex') || 0;\n        seriesModel.coordinateSystem = geoList[geoIndex];\n      }\n    }); // If has map series\n\n    var mapModelGroupBySeries = {};\n    ecModel.eachSeriesByType('map', function (seriesModel) {\n      if (!seriesModel.getHostGeoModel()) {\n        var mapType = seriesModel.getMapType();\n        mapModelGroupBySeries[mapType] = mapModelGroupBySeries[mapType] || [];\n        mapModelGroupBySeries[mapType].push(seriesModel);\n      }\n    });\n    zrUtil.each(mapModelGroupBySeries, function (mapSeries, mapType) {\n      var nameMapList = zrUtil.map(mapSeries, function (singleMapSeries) {\n        return singleMapSeries.get('nameMap');\n      });\n      var geo = new Geo(mapType, mapType, zrUtil.extend({\n        nameMap: zrUtil.mergeAll(nameMapList)\n      }, getCommonGeoProperties(mapSeries[0])));\n      geo.zoomLimit = zrUtil.retrieve.apply(null, zrUtil.map(mapSeries, function (singleMapSeries) {\n        return singleMapSeries.get('scaleLimit');\n      }));\n      geoList.push(geo); // Inject resize method\n\n      geo.resize = resizeGeo;\n      geo.resize(mapSeries[0], api);\n      zrUtil.each(mapSeries, function (singleMapSeries) {\n        singleMapSeries.coordinateSystem = geo;\n        setGeoCoords(geo, singleMapSeries);\n      });\n    });\n    return geoList;\n  };\n  /**\r\n   * Fill given regions array\r\n   */\n\n\n  GeoCreator.prototype.getFilledRegions = function (originRegionArr, mapName, nameMap, nameProperty) {\n    // Not use the original\n    var regionsArr = (originRegionArr || []).slice();\n    var dataNameMap = zrUtil.createHashMap();\n\n    for (var i = 0; i < regionsArr.length; i++) {\n      dataNameMap.set(regionsArr[i].name, regionsArr[i]);\n    }\n\n    var source = geoSourceManager.load(mapName, nameMap, nameProperty);\n    zrUtil.each(source.regions, function (region) {\n      var name = region.name;\n      !dataNameMap.get(name) && regionsArr.push({\n        name: name\n      });\n    });\n    return regionsArr;\n  };\n\n  return GeoCreator;\n}();\n\nvar geoCreator = new GeoCreator();\nexport default geoCreator;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { __extends } from \"tslib\";\nimport * as zrUtil from 'zrender/lib/core/util.js';\nimport * as modelUtil from '../../util/model.js';\nimport ComponentModel from '../../model/Component.js';\nimport Model from '../../model/Model.js';\nimport geoCreator from './geoCreator.js';\nimport geoSourceManager from './geoSourceManager.js';\n;\n\nvar GeoModel =\n/** @class */\nfunction (_super) {\n  __extends(GeoModel, _super);\n\n  function GeoModel() {\n    var _this = _super !== null && _super.apply(this, arguments) || this;\n\n    _this.type = GeoModel.type;\n    return _this;\n  }\n\n  GeoModel.prototype.init = function (option, parentModel, ecModel) {\n    var source = geoSourceManager.getGeoResource(option.map);\n\n    if (source && source.type === 'geoJSON') {\n      var itemStyle = option.itemStyle = option.itemStyle || {};\n\n      if (!('color' in itemStyle)) {\n        itemStyle.color = '#eee';\n      }\n    }\n\n    this.mergeDefaultAndTheme(option, ecModel); // Default label emphasis `show`\n\n    modelUtil.defaultEmphasis(option, 'label', ['show']);\n  };\n\n  GeoModel.prototype.optionUpdated = function () {\n    var _this = this;\n\n    var option = this.option;\n    option.regions = geoCreator.getFilledRegions(option.regions, option.map, option.nameMap, option.nameProperty);\n    var selectedMap = {};\n    this._optionModelMap = zrUtil.reduce(option.regions || [], function (optionModelMap, regionOpt) {\n      var regionName = regionOpt.name;\n\n      if (regionName) {\n        optionModelMap.set(regionName, new Model(regionOpt, _this, _this.ecModel));\n\n        if (regionOpt.selected) {\n          selectedMap[regionName] = true;\n        }\n      }\n\n      return optionModelMap;\n    }, zrUtil.createHashMap());\n\n    if (!option.selectedMap) {\n      option.selectedMap = selectedMap;\n    }\n  };\n  /**\r\n   * Get model of region.\r\n   */\n\n\n  GeoModel.prototype.getRegionModel = function (name) {\n    return this._optionModelMap.get(name) || new Model(null, this, this.ecModel);\n  };\n  /**\r\n   * Format label\r\n   * @param name Region name\r\n   */\n\n\n  GeoModel.prototype.getFormattedLabel = function (name, status) {\n    var regionModel = this.getRegionModel(name);\n    var formatter = status === 'normal' ? regionModel.get(['label', 'formatter']) : regionModel.get(['emphasis', 'label', 'formatter']);\n    var params = {\n      name: name\n    };\n\n    if (zrUtil.isFunction(formatter)) {\n      params.status = status;\n      return formatter(params);\n    } else if (zrUtil.isString(formatter)) {\n      return formatter.replace('{a}', name != null ? name : '');\n    }\n  };\n\n  GeoModel.prototype.setZoom = function (zoom) {\n    this.option.zoom = zoom;\n  };\n\n  GeoModel.prototype.setCenter = function (center) {\n    this.option.center = center;\n  }; // PENGING If selectedMode is null ?\n\n\n  GeoModel.prototype.select = function (name) {\n    var option = this.option;\n    var selectedMode = option.selectedMode;\n\n    if (!selectedMode) {\n      return;\n    }\n\n    if (selectedMode !== 'multiple') {\n      option.selectedMap = null;\n    }\n\n    var selectedMap = option.selectedMap || (option.selectedMap = {});\n    selectedMap[name] = true;\n  };\n\n  GeoModel.prototype.unSelect = function (name) {\n    var selectedMap = this.option.selectedMap;\n\n    if (selectedMap) {\n      selectedMap[name] = false;\n    }\n  };\n\n  GeoModel.prototype.toggleSelected = function (name) {\n    this[this.isSelected(name) ? 'unSelect' : 'select'](name);\n  };\n\n  GeoModel.prototype.isSelected = function (name) {\n    var selectedMap = this.option.selectedMap;\n    return !!(selectedMap && selectedMap[name]);\n  };\n\n  GeoModel.type = 'geo';\n  GeoModel.layoutMode = 'box';\n  GeoModel.defaultOption = {\n    // zlevel: 0,\n    z: 0,\n    show: true,\n    left: 'center',\n    top: 'center',\n    // Default value:\n    // for geoSVG source: 1,\n    // for geoJSON source: 0.75.\n    aspectScale: null,\n    // /// Layout with center and size\n    // If you want to put map in a fixed size box with right aspect ratio\n    // This two properties may be more convenient\n    // layoutCenter: [50%, 50%]\n    // layoutSize: 100\n    silent: false,\n    // Map type\n    map: '',\n    // Define left-top, right-bottom coords to control view\n    // For example, [ [180, 90], [-180, -90] ]\n    boundingCoords: null,\n    // Default on center of map\n    center: null,\n    zoom: 1,\n    scaleLimit: null,\n    // selectedMode: false\n    label: {\n      show: false,\n      color: '#000'\n    },\n    itemStyle: {\n      borderWidth: 0.5,\n      borderColor: '#444' // Default color:\n      // + geoJSON: #eee\n      // + geoSVG: null (use SVG original `fill`)\n      // color: '#eee'\n\n    },\n    emphasis: {\n      label: {\n        show: true,\n        color: 'rgb(100,0,0)'\n      },\n      itemStyle: {\n        color: 'rgba(255,215,0,0.8)'\n      }\n    },\n    select: {\n      label: {\n        show: true,\n        color: 'rgb(100,0,0)'\n      },\n      itemStyle: {\n        color: 'rgba(255,215,0,0.8)'\n      }\n    },\n    regions: [] // tooltip: {\n    //     show: false\n    // }\n\n  };\n  return GeoModel;\n}(ComponentModel);\n\nexport default GeoModel;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nfunction getCenterCoord(view, point) {\n  // Use projected coord as center because it's linear.\n  return view.pointToProjected ? view.pointToProjected(point) : view.pointToData(point);\n}\n\nexport function updateCenterAndZoom(view, payload, zoomLimit, api) {\n  var previousZoom = view.getZoom();\n  var center = view.getCenter();\n  var zoom = payload.zoom;\n  var point = view.projectedToPoint ? view.projectedToPoint(center) : view.dataToPoint(center);\n\n  if (payload.dx != null && payload.dy != null) {\n    point[0] -= payload.dx;\n    point[1] -= payload.dy;\n    view.setCenter(getCenterCoord(view, point), api);\n  }\n\n  if (zoom != null) {\n    if (zoomLimit) {\n      var zoomMin = zoomLimit.min || 0;\n      var zoomMax = zoomLimit.max || Infinity;\n      zoom = Math.max(Math.min(previousZoom * zoom, zoomMax), zoomMin) / previousZoom;\n    } // Zoom on given point(originX, originY)\n\n\n    view.scaleX *= zoom;\n    view.scaleY *= zoom;\n    var fixX = (payload.originX - view.x) * (zoom - 1);\n    var fixY = (payload.originY - view.y) * (zoom - 1);\n    view.x -= fixX;\n    view.y -= fixY;\n    view.updateTransform(); // Get the new center\n\n    view.setCenter(getCenterCoord(view, point), api);\n    view.setZoom(zoom * previousZoom);\n  }\n\n  return {\n    center: view.getCenter(),\n    zoom: view.getZoom()\n  };\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { __extends } from \"tslib\";\nimport MapDraw from '../helper/MapDraw.js';\nimport ComponentView from '../../view/Component.js';\nimport { getECData } from '../../util/innerStore.js';\nimport { findEventDispatcher } from '../../util/event.js';\n\nvar GeoView =\n/** @class */\nfunction (_super) {\n  __extends(GeoView, _super);\n\n  function GeoView() {\n    var _this = _super !== null && _super.apply(this, arguments) || this;\n\n    _this.type = GeoView.type;\n    _this.focusBlurEnabled = true;\n    return _this;\n  }\n\n  GeoView.prototype.init = function (ecModel, api) {\n    this._api = api;\n  };\n\n  GeoView.prototype.render = function (geoModel, ecModel, api, payload) {\n    this._model = geoModel;\n\n    if (!geoModel.get('show')) {\n      this._mapDraw && this._mapDraw.remove();\n      this._mapDraw = null;\n      return;\n    }\n\n    if (!this._mapDraw) {\n      this._mapDraw = new MapDraw(api);\n    }\n\n    var mapDraw = this._mapDraw;\n    mapDraw.draw(geoModel, ecModel, api, this, payload);\n    mapDraw.group.on('click', this._handleRegionClick, this);\n    mapDraw.group.silent = geoModel.get('silent');\n    this.group.add(mapDraw.group);\n    this.updateSelectStatus(geoModel, ecModel, api);\n  };\n\n  GeoView.prototype._handleRegionClick = function (e) {\n    var eventData;\n    findEventDispatcher(e.target, function (current) {\n      return (eventData = getECData(current).eventData) != null;\n    }, true);\n\n    if (eventData) {\n      this._api.dispatchAction({\n        type: 'geoToggleSelect',\n        geoId: this._model.id,\n        name: eventData.name\n      });\n    }\n  };\n\n  GeoView.prototype.updateSelectStatus = function (model, ecModel, api) {\n    var _this = this;\n\n    this._mapDraw.group.traverse(function (node) {\n      var eventData = getECData(node).eventData;\n\n      if (eventData) {\n        _this._model.isSelected(eventData.name) ? api.enterSelect(node) : api.leaveSelect(node); // No need to traverse children.\n\n        return true;\n      }\n    });\n  };\n\n  GeoView.prototype.findHighDownDispatchers = function (name) {\n    return this._mapDraw && this._mapDraw.findHighDownDispatchers(name, this._model);\n  };\n\n  GeoView.prototype.dispose = function () {\n    this._mapDraw && this._mapDraw.remove();\n  };\n\n  GeoView.type = 'geo';\n  return GeoView;\n}(ComponentView);\n\nexport default GeoView;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport GeoModel from '../../coord/geo/GeoModel.js';\nimport geoCreator from '../../coord/geo/geoCreator.js';\nimport { each } from 'zrender/lib/core/util.js';\nimport { updateCenterAndZoom } from '../../action/roamHelper.js';\nimport GeoView from './GeoView.js';\nimport geoSourceManager from '../../coord/geo/geoSourceManager.js';\n\nfunction registerMap(mapName, geoJson, specialAreas) {\n  geoSourceManager.registerMap(mapName, geoJson, specialAreas);\n}\n\nexport function install(registers) {\n  registers.registerCoordinateSystem('geo', geoCreator);\n  registers.registerComponentModel(GeoModel);\n  registers.registerComponentView(GeoView);\n  registers.registerImpl('registerMap', registerMap);\n  registers.registerImpl('getMap', function (mapName) {\n    return geoSourceManager.getMapForUser(mapName);\n  });\n\n  function makeAction(method, actionInfo) {\n    actionInfo.update = 'geo:updateSelectStatus';\n    registers.registerAction(actionInfo, function (payload, ecModel) {\n      var selected = {};\n      var allSelected = [];\n      ecModel.eachComponent({\n        mainType: 'geo',\n        query: payload\n      }, function (geoModel) {\n        geoModel[method](payload.name);\n        var geo = geoModel.coordinateSystem;\n        each(geo.regions, function (region) {\n          selected[region.name] = geoModel.isSelected(region.name) || false;\n        }); // Notice: there might be duplicated name in different regions.\n\n        var names = [];\n        each(selected, function (v, name) {\n          selected[name] && names.push(name);\n        });\n        allSelected.push({\n          geoIndex: geoModel.componentIndex,\n          // Use singular, the same naming convention as the event `selectchanged`.\n          name: names\n        });\n      });\n      return {\n        selected: selected,\n        allSelected: allSelected,\n        name: payload.name\n      };\n    });\n  }\n\n  makeAction('toggleSelected', {\n    type: 'geoToggleSelect',\n    event: 'geoselectchanged'\n  });\n  makeAction('select', {\n    type: 'geoSelect',\n    event: 'geoselected'\n  });\n  makeAction('unSelect', {\n    type: 'geoUnSelect',\n    event: 'geounselected'\n  });\n  /**\r\n   * @payload\r\n   * @property {string} [componentType=series]\r\n   * @property {number} [dx]\r\n   * @property {number} [dy]\r\n   * @property {number} [zoom]\r\n   * @property {number} [originX]\r\n   * @property {number} [originY]\r\n   */\n\n  registers.registerAction({\n    type: 'geoRoam',\n    event: 'geoRoam',\n    update: 'updateTransform'\n  }, function (payload, ecModel, api) {\n    var componentType = payload.componentType || 'series';\n    ecModel.eachComponent({\n      mainType: componentType,\n      query: payload\n    }, function (componentModel) {\n      var geo = componentModel.coordinateSystem;\n\n      if (geo.type !== 'geo') {\n        return;\n      }\n\n      var res = updateCenterAndZoom(geo, payload, componentModel.get('scaleLimit'), api);\n      componentModel.setCenter && componentModel.setCenter(res.center);\n      componentModel.setZoom && componentModel.setZoom(res.zoom); // All map series with same `map` use the same geo coordinate system\n      // So the center and zoom must be in sync. Include the series not selected by legend\n\n      if (componentType === 'series') {\n        each(componentModel.seriesGroup, function (seriesModel) {\n          seriesModel.setCenter(res.center);\n          seriesModel.setZoom(res.zoom);\n        });\n      }\n    });\n  });\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\n\n/*\r\n* A third-party license is embedded for some of the code in this file:\r\n* The tree layoutHelper implementation was originally copied from\r\n* \"d3.js\"(https://github.com/d3/d3-hierarchy) with\r\n* some modifications made for this project.\r\n* (see more details in the comment of the specific method below.)\r\n* The use of the source code of this file is also subject to the terms\r\n* and consitions of the licence of \"d3.js\" (BSD-3Clause, see\r\n* </licenses/LICENSE-d3>).\r\n*/\n\n/**\r\n * @file The layout algorithm of node-link tree diagrams. Here we using Reingold-Tilford algorithm to drawing\r\n *       the tree.\r\n */\nimport * as layout from '../../util/layout.js';\n/**\r\n * Initialize all computational message for following algorithm.\r\n */\n\nexport function init(inRoot) {\n  var root = inRoot;\n  root.hierNode = {\n    defaultAncestor: null,\n    ancestor: root,\n    prelim: 0,\n    modifier: 0,\n    change: 0,\n    shift: 0,\n    i: 0,\n    thread: null\n  };\n  var nodes = [root];\n  var node;\n  var children;\n\n  while (node = nodes.pop()) {\n    // jshint ignore:line\n    children = node.children;\n\n    if (node.isExpand && children.length) {\n      var n = children.length;\n\n      for (var i = n - 1; i >= 0; i--) {\n        var child = children[i];\n        child.hierNode = {\n          defaultAncestor: null,\n          ancestor: child,\n          prelim: 0,\n          modifier: 0,\n          change: 0,\n          shift: 0,\n          i: i,\n          thread: null\n        };\n        nodes.push(child);\n      }\n    }\n  }\n}\n/**\r\n * The implementation of this function was originally copied from \"d3.js\"\r\n * <https://github.com/d3/d3-hierarchy/blob/4c1f038f2725d6eae2e49b61d01456400694bac4/src/tree.js>\r\n * with some modifications made for this program.\r\n * See the license statement at the head of this file.\r\n *\r\n * Computes a preliminary x coordinate for node. Before that, this function is\r\n * applied recursively to the children of node, as well as the function\r\n * apportion(). After spacing out the children by calling executeShifts(), the\r\n * node is placed to the midpoint of its outermost children.\r\n */\n\nexport function firstWalk(node, separation) {\n  var children = node.isExpand ? node.children : [];\n  var siblings = node.parentNode.children;\n  var subtreeW = node.hierNode.i ? siblings[node.hierNode.i - 1] : null;\n\n  if (children.length) {\n    executeShifts(node);\n    var midPoint = (children[0].hierNode.prelim + children[children.length - 1].hierNode.prelim) / 2;\n\n    if (subtreeW) {\n      node.hierNode.prelim = subtreeW.hierNode.prelim + separation(node, subtreeW);\n      node.hierNode.modifier = node.hierNode.prelim - midPoint;\n    } else {\n      node.hierNode.prelim = midPoint;\n    }\n  } else if (subtreeW) {\n    node.hierNode.prelim = subtreeW.hierNode.prelim + separation(node, subtreeW);\n  }\n\n  node.parentNode.hierNode.defaultAncestor = apportion(node, subtreeW, node.parentNode.hierNode.defaultAncestor || siblings[0], separation);\n}\n/**\r\n * The implementation of this function was originally copied from \"d3.js\"\r\n * <https://github.com/d3/d3-hierarchy/blob/4c1f038f2725d6eae2e49b61d01456400694bac4/src/tree.js>\r\n * with some modifications made for this program.\r\n * See the license statement at the head of this file.\r\n *\r\n * Computes all real x-coordinates by summing up the modifiers recursively.\r\n */\n\nexport function secondWalk(node) {\n  var nodeX = node.hierNode.prelim + node.parentNode.hierNode.modifier;\n  node.setLayout({\n    x: nodeX\n  }, true);\n  node.hierNode.modifier += node.parentNode.hierNode.modifier;\n}\nexport function separation(cb) {\n  return arguments.length ? cb : defaultSeparation;\n}\n/**\r\n * Transform the common coordinate to radial coordinate.\r\n */\n\nexport function radialCoordinate(rad, r) {\n  rad -= Math.PI / 2;\n  return {\n    x: r * Math.cos(rad),\n    y: r * Math.sin(rad)\n  };\n}\n/**\r\n * Get the layout position of the whole view.\r\n */\n\nexport function getViewRect(seriesModel, api) {\n  return layout.getLayoutRect(seriesModel.getBoxLayoutParams(), {\n    width: api.getWidth(),\n    height: api.getHeight()\n  });\n}\n/**\r\n * All other shifts, applied to the smaller subtrees between w- and w+, are\r\n * performed by this function.\r\n *\r\n * The implementation of this function was originally copied from \"d3.js\"\r\n * <https://github.com/d3/d3-hierarchy/blob/4c1f038f2725d6eae2e49b61d01456400694bac4/src/tree.js>\r\n * with some modifications made for this program.\r\n * See the license statement at the head of this file.\r\n */\n\nfunction executeShifts(node) {\n  var children = node.children;\n  var n = children.length;\n  var shift = 0;\n  var change = 0;\n\n  while (--n >= 0) {\n    var child = children[n];\n    child.hierNode.prelim += shift;\n    child.hierNode.modifier += shift;\n    change += child.hierNode.change;\n    shift += child.hierNode.shift + change;\n  }\n}\n/**\r\n * The implementation of this function was originally copied from \"d3.js\"\r\n * <https://github.com/d3/d3-hierarchy/blob/4c1f038f2725d6eae2e49b61d01456400694bac4/src/tree.js>\r\n * with some modifications made for this program.\r\n * See the license statement at the head of this file.\r\n *\r\n * The core of the algorithm. Here, a new subtree is combined with the\r\n * previous subtrees. Threads are used to traverse the inside and outside\r\n * contours of the left and right subtree up to the highest common level.\r\n * Whenever two nodes of the inside contours conflict, we compute the left\r\n * one of the greatest uncommon ancestors using the function nextAncestor()\r\n * and call moveSubtree() to shift the subtree and prepare the shifts of\r\n * smaller subtrees. Finally, we add a new thread (if necessary).\r\n */\n\n\nfunction apportion(subtreeV, subtreeW, ancestor, separation) {\n  if (subtreeW) {\n    var nodeOutRight = subtreeV;\n    var nodeInRight = subtreeV;\n    var nodeOutLeft = nodeInRight.parentNode.children[0];\n    var nodeInLeft = subtreeW;\n    var sumOutRight = nodeOutRight.hierNode.modifier;\n    var sumInRight = nodeInRight.hierNode.modifier;\n    var sumOutLeft = nodeOutLeft.hierNode.modifier;\n    var sumInLeft = nodeInLeft.hierNode.modifier;\n\n    while (nodeInLeft = nextRight(nodeInLeft), nodeInRight = nextLeft(nodeInRight), nodeInLeft && nodeInRight) {\n      nodeOutRight = nextRight(nodeOutRight);\n      nodeOutLeft = nextLeft(nodeOutLeft);\n      nodeOutRight.hierNode.ancestor = subtreeV;\n      var shift = nodeInLeft.hierNode.prelim + sumInLeft - nodeInRight.hierNode.prelim - sumInRight + separation(nodeInLeft, nodeInRight);\n\n      if (shift > 0) {\n        moveSubtree(nextAncestor(nodeInLeft, subtreeV, ancestor), subtreeV, shift);\n        sumInRight += shift;\n        sumOutRight += shift;\n      }\n\n      sumInLeft += nodeInLeft.hierNode.modifier;\n      sumInRight += nodeInRight.hierNode.modifier;\n      sumOutRight += nodeOutRight.hierNode.modifier;\n      sumOutLeft += nodeOutLeft.hierNode.modifier;\n    }\n\n    if (nodeInLeft && !nextRight(nodeOutRight)) {\n      nodeOutRight.hierNode.thread = nodeInLeft;\n      nodeOutRight.hierNode.modifier += sumInLeft - sumOutRight;\n    }\n\n    if (nodeInRight && !nextLeft(nodeOutLeft)) {\n      nodeOutLeft.hierNode.thread = nodeInRight;\n      nodeOutLeft.hierNode.modifier += sumInRight - sumOutLeft;\n      ancestor = subtreeV;\n    }\n  }\n\n  return ancestor;\n}\n/**\r\n * This function is used to traverse the right contour of a subtree.\r\n * It returns the rightmost child of node or the thread of node. The function\r\n * returns null if and only if node is on the highest depth of its subtree.\r\n */\n\n\nfunction nextRight(node) {\n  var children = node.children;\n  return children.length && node.isExpand ? children[children.length - 1] : node.hierNode.thread;\n}\n/**\r\n * This function is used to traverse the left contour of a subtree (or a subforest).\r\n * It returns the leftmost child of node or the thread of node. The function\r\n * returns null if and only if node is on the highest depth of its subtree.\r\n */\n\n\nfunction nextLeft(node) {\n  var children = node.children;\n  return children.length && node.isExpand ? children[0] : node.hierNode.thread;\n}\n/**\r\n * If nodeInLeft’s ancestor is a sibling of node, returns nodeInLeft’s ancestor.\r\n * Otherwise, returns the specified ancestor.\r\n */\n\n\nfunction nextAncestor(nodeInLeft, node, ancestor) {\n  return nodeInLeft.hierNode.ancestor.parentNode === node.parentNode ? nodeInLeft.hierNode.ancestor : ancestor;\n}\n/**\r\n * The implementation of this function was originally copied from \"d3.js\"\r\n * <https://github.com/d3/d3-hierarchy/blob/4c1f038f2725d6eae2e49b61d01456400694bac4/src/tree.js>\r\n * with some modifications made for this program.\r\n * See the license statement at the head of this file.\r\n *\r\n * Shifts the current subtree rooted at wr.\r\n * This is done by increasing prelim(w+) and modifier(w+) by shift.\r\n */\n\n\nfunction moveSubtree(wl, wr, shift) {\n  var change = shift / (wr.hierNode.i - wl.hierNode.i);\n  wr.hierNode.change -= change;\n  wr.hierNode.shift += shift;\n  wr.hierNode.modifier += shift;\n  wr.hierNode.prelim += shift;\n  wl.hierNode.change += change;\n}\n/**\r\n * The implementation of this function was originally copied from \"d3.js\"\r\n * <https://github.com/d3/d3-hierarchy/blob/4c1f038f2725d6eae2e49b61d01456400694bac4/src/tree.js>\r\n * with some modifications made for this program.\r\n * See the license statement at the head of this file.\r\n */\n\n\nfunction defaultSeparation(node1, node2) {\n  return node1.parentNode === node2.parentNode ? 1 : 2;\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { __extends } from \"tslib\";\nimport * as zrUtil from 'zrender/lib/core/util.js';\nimport * as graphic from '../../util/graphic.js';\nimport { getECData } from '../../util/innerStore.js';\nimport SymbolClz from '../helper/Symbol.js';\nimport { radialCoordinate } from './layoutHelper.js';\nimport * as bbox from 'zrender/lib/core/bbox.js';\nimport View from '../../coord/View.js';\nimport * as roamHelper from '../../component/helper/roamHelper.js';\nimport RoamController from '../../component/helper/RoamController.js';\nimport { onIrrelevantElement } from '../../component/helper/cursorHelper.js';\nimport { parsePercent } from '../../util/number.js';\nimport ChartView from '../../view/Chart.js';\nimport Path from 'zrender/lib/graphic/Path.js';\nimport { setStatesStylesFromModel, setStatesFlag, setDefaultStateProxy, HOVER_STATE_BLUR } from '../../util/states.js';\n\nvar TreeEdgeShape =\n/** @class */\nfunction () {\n  function TreeEdgeShape() {\n    this.parentPoint = [];\n    this.childPoints = [];\n  }\n\n  return TreeEdgeShape;\n}();\n\nvar TreePath =\n/** @class */\nfunction (_super) {\n  __extends(TreePath, _super);\n\n  function TreePath(opts) {\n    return _super.call(this, opts) || this;\n  }\n\n  TreePath.prototype.getDefaultStyle = function () {\n    return {\n      stroke: '#000',\n      fill: null\n    };\n  };\n\n  TreePath.prototype.getDefaultShape = function () {\n    return new TreeEdgeShape();\n  };\n\n  TreePath.prototype.buildPath = function (ctx, shape) {\n    var childPoints = shape.childPoints;\n    var childLen = childPoints.length;\n    var parentPoint = shape.parentPoint;\n    var firstChildPos = childPoints[0];\n    var lastChildPos = childPoints[childLen - 1];\n\n    if (childLen === 1) {\n      ctx.moveTo(parentPoint[0], parentPoint[1]);\n      ctx.lineTo(firstChildPos[0], firstChildPos[1]);\n      return;\n    }\n\n    var orient = shape.orient;\n    var forkDim = orient === 'TB' || orient === 'BT' ? 0 : 1;\n    var otherDim = 1 - forkDim;\n    var forkPosition = parsePercent(shape.forkPosition, 1);\n    var tmpPoint = [];\n    tmpPoint[forkDim] = parentPoint[forkDim];\n    tmpPoint[otherDim] = parentPoint[otherDim] + (lastChildPos[otherDim] - parentPoint[otherDim]) * forkPosition;\n    ctx.moveTo(parentPoint[0], parentPoint[1]);\n    ctx.lineTo(tmpPoint[0], tmpPoint[1]);\n    ctx.moveTo(firstChildPos[0], firstChildPos[1]);\n    tmpPoint[forkDim] = firstChildPos[forkDim];\n    ctx.lineTo(tmpPoint[0], tmpPoint[1]);\n    tmpPoint[forkDim] = lastChildPos[forkDim];\n    ctx.lineTo(tmpPoint[0], tmpPoint[1]);\n    ctx.lineTo(lastChildPos[0], lastChildPos[1]);\n\n    for (var i = 1; i < childLen - 1; i++) {\n      var point = childPoints[i];\n      ctx.moveTo(point[0], point[1]);\n      tmpPoint[forkDim] = point[forkDim];\n      ctx.lineTo(tmpPoint[0], tmpPoint[1]);\n    }\n  };\n\n  return TreePath;\n}(Path);\n\nvar TreeView =\n/** @class */\nfunction (_super) {\n  __extends(TreeView, _super);\n\n  function TreeView() {\n    var _this = _super !== null && _super.apply(this, arguments) || this;\n\n    _this.type = TreeView.type;\n    _this._mainGroup = new graphic.Group();\n    return _this;\n  }\n\n  TreeView.prototype.init = function (ecModel, api) {\n    this._controller = new RoamController(api.getZr());\n    this._controllerHost = {\n      target: this.group\n    };\n    this.group.add(this._mainGroup);\n  };\n\n  TreeView.prototype.render = function (seriesModel, ecModel, api) {\n    var data = seriesModel.getData();\n    var layoutInfo = seriesModel.layoutInfo;\n    var group = this._mainGroup;\n    var layout = seriesModel.get('layout');\n\n    if (layout === 'radial') {\n      group.x = layoutInfo.x + layoutInfo.width / 2;\n      group.y = layoutInfo.y + layoutInfo.height / 2;\n    } else {\n      group.x = layoutInfo.x;\n      group.y = layoutInfo.y;\n    }\n\n    this._updateViewCoordSys(seriesModel, api);\n\n    this._updateController(seriesModel, ecModel, api);\n\n    var oldData = this._data;\n    data.diff(oldData).add(function (newIdx) {\n      if (symbolNeedsDraw(data, newIdx)) {\n        // Create node and edge\n        updateNode(data, newIdx, null, group, seriesModel);\n      }\n    }).update(function (newIdx, oldIdx) {\n      var symbolEl = oldData.getItemGraphicEl(oldIdx);\n\n      if (!symbolNeedsDraw(data, newIdx)) {\n        symbolEl && removeNode(oldData, oldIdx, symbolEl, group, seriesModel);\n        return;\n      } // Update node and edge\n\n\n      updateNode(data, newIdx, symbolEl, group, seriesModel);\n    }).remove(function (oldIdx) {\n      var symbolEl = oldData.getItemGraphicEl(oldIdx); // When remove a collapsed node of subtree, since the collapsed\n      // node haven't been initialized with a symbol element,\n      // you can't found it's symbol element through index.\n      // so if we want to remove the symbol element we should insure\n      // that the symbol element is not null.\n\n      if (symbolEl) {\n        removeNode(oldData, oldIdx, symbolEl, group, seriesModel);\n      }\n    }).execute();\n    this._nodeScaleRatio = seriesModel.get('nodeScaleRatio');\n\n    this._updateNodeAndLinkScale(seriesModel);\n\n    if (seriesModel.get('expandAndCollapse') === true) {\n      data.eachItemGraphicEl(function (el, dataIndex) {\n        el.off('click').on('click', function () {\n          api.dispatchAction({\n            type: 'treeExpandAndCollapse',\n            seriesId: seriesModel.id,\n            dataIndex: dataIndex\n          });\n        });\n      });\n    }\n\n    this._data = data;\n  };\n\n  TreeView.prototype._updateViewCoordSys = function (seriesModel, api) {\n    var data = seriesModel.getData();\n    var points = [];\n    data.each(function (idx) {\n      var layout = data.getItemLayout(idx);\n\n      if (layout && !isNaN(layout.x) && !isNaN(layout.y)) {\n        points.push([+layout.x, +layout.y]);\n      }\n    });\n    var min = [];\n    var max = [];\n    bbox.fromPoints(points, min, max); // If don't Store min max when collapse the root node after roam,\n    // the root node will disappear.\n\n    var oldMin = this._min;\n    var oldMax = this._max; // If width or height is 0\n\n    if (max[0] - min[0] === 0) {\n      min[0] = oldMin ? oldMin[0] : min[0] - 1;\n      max[0] = oldMax ? oldMax[0] : max[0] + 1;\n    }\n\n    if (max[1] - min[1] === 0) {\n      min[1] = oldMin ? oldMin[1] : min[1] - 1;\n      max[1] = oldMax ? oldMax[1] : max[1] + 1;\n    }\n\n    var viewCoordSys = seriesModel.coordinateSystem = new View();\n    viewCoordSys.zoomLimit = seriesModel.get('scaleLimit');\n    viewCoordSys.setBoundingRect(min[0], min[1], max[0] - min[0], max[1] - min[1]);\n    viewCoordSys.setCenter(seriesModel.get('center'), api);\n    viewCoordSys.setZoom(seriesModel.get('zoom')); // Here we use viewCoordSys just for computing the 'position' and 'scale' of the group\n\n    this.group.attr({\n      x: viewCoordSys.x,\n      y: viewCoordSys.y,\n      scaleX: viewCoordSys.scaleX,\n      scaleY: viewCoordSys.scaleY\n    });\n    this._min = min;\n    this._max = max;\n  };\n\n  TreeView.prototype._updateController = function (seriesModel, ecModel, api) {\n    var _this = this;\n\n    var controller = this._controller;\n    var controllerHost = this._controllerHost;\n    var group = this.group;\n    controller.setPointerChecker(function (e, x, y) {\n      var rect = group.getBoundingRect();\n      rect.applyTransform(group.transform);\n      return rect.contain(x, y) && !onIrrelevantElement(e, api, seriesModel);\n    });\n    controller.enable(seriesModel.get('roam'));\n    controllerHost.zoomLimit = seriesModel.get('scaleLimit');\n    controllerHost.zoom = seriesModel.coordinateSystem.getZoom();\n    controller.off('pan').off('zoom').on('pan', function (e) {\n      roamHelper.updateViewOnPan(controllerHost, e.dx, e.dy);\n      api.dispatchAction({\n        seriesId: seriesModel.id,\n        type: 'treeRoam',\n        dx: e.dx,\n        dy: e.dy\n      });\n    }).on('zoom', function (e) {\n      roamHelper.updateViewOnZoom(controllerHost, e.scale, e.originX, e.originY);\n      api.dispatchAction({\n        seriesId: seriesModel.id,\n        type: 'treeRoam',\n        zoom: e.scale,\n        originX: e.originX,\n        originY: e.originY\n      });\n\n      _this._updateNodeAndLinkScale(seriesModel); // Only update label layout on zoom\n\n\n      api.updateLabelLayout();\n    });\n  };\n\n  TreeView.prototype._updateNodeAndLinkScale = function (seriesModel) {\n    var data = seriesModel.getData();\n\n    var nodeScale = this._getNodeGlobalScale(seriesModel);\n\n    data.eachItemGraphicEl(function (el, idx) {\n      el.setSymbolScale(nodeScale);\n    });\n  };\n\n  TreeView.prototype._getNodeGlobalScale = function (seriesModel) {\n    var coordSys = seriesModel.coordinateSystem;\n\n    if (coordSys.type !== 'view') {\n      return 1;\n    }\n\n    var nodeScaleRatio = this._nodeScaleRatio;\n    var groupZoom = coordSys.scaleX || 1; // Scale node when zoom changes\n\n    var roamZoom = coordSys.getZoom();\n    var nodeScale = (roamZoom - 1) * nodeScaleRatio + 1;\n    return nodeScale / groupZoom;\n  };\n\n  TreeView.prototype.dispose = function () {\n    this._controller && this._controller.dispose();\n    this._controllerHost = null;\n  };\n\n  TreeView.prototype.remove = function () {\n    this._mainGroup.removeAll();\n\n    this._data = null;\n  };\n\n  TreeView.type = 'tree';\n  return TreeView;\n}(ChartView);\n\nfunction symbolNeedsDraw(data, dataIndex) {\n  var layout = data.getItemLayout(dataIndex);\n  return layout && !isNaN(layout.x) && !isNaN(layout.y);\n}\n\nfunction updateNode(data, dataIndex, symbolEl, group, seriesModel) {\n  var isInit = !symbolEl;\n  var node = data.tree.getNodeByDataIndex(dataIndex);\n  var itemModel = node.getModel();\n  var visualColor = node.getVisual('style').fill;\n  var symbolInnerColor = node.isExpand === false && node.children.length !== 0 ? visualColor : '#fff';\n  var virtualRoot = data.tree.root;\n  var source = node.parentNode === virtualRoot ? node : node.parentNode || node;\n  var sourceSymbolEl = data.getItemGraphicEl(source.dataIndex);\n  var sourceLayout = source.getLayout();\n  var sourceOldLayout = sourceSymbolEl ? {\n    x: sourceSymbolEl.__oldX,\n    y: sourceSymbolEl.__oldY,\n    rawX: sourceSymbolEl.__radialOldRawX,\n    rawY: sourceSymbolEl.__radialOldRawY\n  } : sourceLayout;\n  var targetLayout = node.getLayout();\n\n  if (isInit) {\n    symbolEl = new SymbolClz(data, dataIndex, null, {\n      symbolInnerColor: symbolInnerColor,\n      useNameLabel: true\n    });\n    symbolEl.x = sourceOldLayout.x;\n    symbolEl.y = sourceOldLayout.y;\n  } else {\n    symbolEl.updateData(data, dataIndex, null, {\n      symbolInnerColor: symbolInnerColor,\n      useNameLabel: true\n    });\n  }\n\n  symbolEl.__radialOldRawX = symbolEl.__radialRawX;\n  symbolEl.__radialOldRawY = symbolEl.__radialRawY;\n  symbolEl.__radialRawX = targetLayout.rawX;\n  symbolEl.__radialRawY = targetLayout.rawY;\n  group.add(symbolEl);\n  data.setItemGraphicEl(dataIndex, symbolEl);\n  symbolEl.__oldX = symbolEl.x;\n  symbolEl.__oldY = symbolEl.y;\n  graphic.updateProps(symbolEl, {\n    x: targetLayout.x,\n    y: targetLayout.y\n  }, seriesModel);\n  var symbolPath = symbolEl.getSymbolPath();\n\n  if (seriesModel.get('layout') === 'radial') {\n    var realRoot = virtualRoot.children[0];\n    var rootLayout = realRoot.getLayout();\n    var length_1 = realRoot.children.length;\n    var rad = void 0;\n    var isLeft = void 0;\n\n    if (targetLayout.x === rootLayout.x && node.isExpand === true && realRoot.children.length) {\n      var center = {\n        x: (realRoot.children[0].getLayout().x + realRoot.children[length_1 - 1].getLayout().x) / 2,\n        y: (realRoot.children[0].getLayout().y + realRoot.children[length_1 - 1].getLayout().y) / 2\n      };\n      rad = Math.atan2(center.y - rootLayout.y, center.x - rootLayout.x);\n\n      if (rad < 0) {\n        rad = Math.PI * 2 + rad;\n      }\n\n      isLeft = center.x < rootLayout.x;\n\n      if (isLeft) {\n        rad = rad - Math.PI;\n      }\n    } else {\n      rad = Math.atan2(targetLayout.y - rootLayout.y, targetLayout.x - rootLayout.x);\n\n      if (rad < 0) {\n        rad = Math.PI * 2 + rad;\n      }\n\n      if (node.children.length === 0 || node.children.length !== 0 && node.isExpand === false) {\n        isLeft = targetLayout.x < rootLayout.x;\n\n        if (isLeft) {\n          rad = rad - Math.PI;\n        }\n      } else {\n        isLeft = targetLayout.x > rootLayout.x;\n\n        if (!isLeft) {\n          rad = rad - Math.PI;\n        }\n      }\n    }\n\n    var textPosition = isLeft ? 'left' : 'right';\n    var normalLabelModel = itemModel.getModel('label');\n    var rotate = normalLabelModel.get('rotate');\n    var labelRotateRadian = rotate * (Math.PI / 180);\n    var textContent = symbolPath.getTextContent();\n\n    if (textContent) {\n      symbolPath.setTextConfig({\n        position: normalLabelModel.get('position') || textPosition,\n        rotation: rotate == null ? -rad : labelRotateRadian,\n        origin: 'center'\n      });\n      textContent.setStyle('verticalAlign', 'middle');\n    }\n  } // Handle status\n\n\n  var focus = itemModel.get(['emphasis', 'focus']);\n  var focusDataIndices = focus === 'relative' ? zrUtil.concatArray(node.getAncestorsIndices(), node.getDescendantIndices()) : focus === 'ancestor' ? node.getAncestorsIndices() : focus === 'descendant' ? node.getDescendantIndices() : null;\n\n  if (focusDataIndices) {\n    // Modify the focus to data indices.\n    getECData(symbolEl).focus = focusDataIndices;\n  }\n\n  drawEdge(seriesModel, node, virtualRoot, symbolEl, sourceOldLayout, sourceLayout, targetLayout, group);\n\n  if (symbolEl.__edge) {\n    symbolEl.onHoverStateChange = function (toState) {\n      if (toState !== 'blur') {\n        // NOTE: Ensure the parent elements will been blurred firstly.\n        // According to the return of getAncestorsIndices and getDescendantIndices\n        // TODO: A bit tricky.\n        var parentEl = node.parentNode && data.getItemGraphicEl(node.parentNode.dataIndex);\n\n        if (!(parentEl && parentEl.hoverState === HOVER_STATE_BLUR)) {\n          setStatesFlag(symbolEl.__edge, toState);\n        }\n      }\n    };\n  }\n}\n\nfunction drawEdge(seriesModel, node, virtualRoot, symbolEl, sourceOldLayout, sourceLayout, targetLayout, group) {\n  var itemModel = node.getModel();\n  var edgeShape = seriesModel.get('edgeShape');\n  var layout = seriesModel.get('layout');\n  var orient = seriesModel.getOrient();\n  var curvature = seriesModel.get(['lineStyle', 'curveness']);\n  var edgeForkPosition = seriesModel.get('edgeForkPosition');\n  var lineStyle = itemModel.getModel('lineStyle').getLineStyle();\n  var edge = symbolEl.__edge; // curve edge from node -> parent\n  // polyline edge from node -> children\n\n  if (edgeShape === 'curve') {\n    if (node.parentNode && node.parentNode !== virtualRoot) {\n      if (!edge) {\n        edge = symbolEl.__edge = new graphic.BezierCurve({\n          shape: getEdgeShape(layout, orient, curvature, sourceOldLayout, sourceOldLayout)\n        });\n      }\n\n      graphic.updateProps(edge, {\n        shape: getEdgeShape(layout, orient, curvature, sourceLayout, targetLayout)\n      }, seriesModel);\n    }\n  } else if (edgeShape === 'polyline') {\n    if (layout === 'orthogonal') {\n      if (node !== virtualRoot && node.children && node.children.length !== 0 && node.isExpand === true) {\n        var children = node.children;\n        var childPoints = [];\n\n        for (var i = 0; i < children.length; i++) {\n          var childLayout = children[i].getLayout();\n          childPoints.push([childLayout.x, childLayout.y]);\n        }\n\n        if (!edge) {\n          edge = symbolEl.__edge = new TreePath({\n            shape: {\n              parentPoint: [targetLayout.x, targetLayout.y],\n              childPoints: [[targetLayout.x, targetLayout.y]],\n              orient: orient,\n              forkPosition: edgeForkPosition\n            }\n          });\n        }\n\n        graphic.updateProps(edge, {\n          shape: {\n            parentPoint: [targetLayout.x, targetLayout.y],\n            childPoints: childPoints\n          }\n        }, seriesModel);\n      }\n    } else {\n      if (process.env.NODE_ENV !== 'production') {\n        throw new Error('The polyline edgeShape can only be used in orthogonal layout');\n      }\n    }\n  } // show all edge when edgeShape is 'curve', filter node `isExpand` is false when edgeShape is 'polyline'\n\n\n  if (edge && !(edgeShape === 'polyline' && !node.isExpand)) {\n    edge.useStyle(zrUtil.defaults({\n      strokeNoScale: true,\n      fill: null\n    }, lineStyle));\n    setStatesStylesFromModel(edge, itemModel, 'lineStyle');\n    setDefaultStateProxy(edge);\n    group.add(edge);\n  }\n}\n\nfunction removeNodeEdge(node, data, group, seriesModel, removeAnimationOpt) {\n  var virtualRoot = data.tree.root;\n\n  var _a = getSourceNode(virtualRoot, node),\n      source = _a.source,\n      sourceLayout = _a.sourceLayout;\n\n  var symbolEl = data.getItemGraphicEl(node.dataIndex);\n\n  if (!symbolEl) {\n    return;\n  }\n\n  var sourceSymbolEl = data.getItemGraphicEl(source.dataIndex);\n  var sourceEdge = sourceSymbolEl.__edge; // 1. when expand the sub tree, delete the children node should delete the edge of\n  // the source at the same time. because the polyline edge shape is only owned by the source.\n  // 2.when the node is the only children of the source, delete the node should delete the edge of\n  // the source at the same time. the same reason as above.\n\n  var edge = symbolEl.__edge || (source.isExpand === false || source.children.length === 1 ? sourceEdge : undefined);\n  var edgeShape = seriesModel.get('edgeShape');\n  var layoutOpt = seriesModel.get('layout');\n  var orient = seriesModel.get('orient');\n  var curvature = seriesModel.get(['lineStyle', 'curveness']);\n\n  if (edge) {\n    if (edgeShape === 'curve') {\n      graphic.removeElement(edge, {\n        shape: getEdgeShape(layoutOpt, orient, curvature, sourceLayout, sourceLayout),\n        style: {\n          opacity: 0\n        }\n      }, seriesModel, {\n        cb: function () {\n          group.remove(edge);\n        },\n        removeOpt: removeAnimationOpt\n      });\n    } else if (edgeShape === 'polyline' && seriesModel.get('layout') === 'orthogonal') {\n      graphic.removeElement(edge, {\n        shape: {\n          parentPoint: [sourceLayout.x, sourceLayout.y],\n          childPoints: [[sourceLayout.x, sourceLayout.y]]\n        },\n        style: {\n          opacity: 0\n        }\n      }, seriesModel, {\n        cb: function () {\n          group.remove(edge);\n        },\n        removeOpt: removeAnimationOpt\n      });\n    }\n  }\n}\n\nfunction getSourceNode(virtualRoot, node) {\n  var source = node.parentNode === virtualRoot ? node : node.parentNode || node;\n  var sourceLayout;\n\n  while (sourceLayout = source.getLayout(), sourceLayout == null) {\n    source = source.parentNode === virtualRoot ? source : source.parentNode || source;\n  }\n\n  return {\n    source: source,\n    sourceLayout: sourceLayout\n  };\n}\n\nfunction removeNode(data, dataIndex, symbolEl, group, seriesModel) {\n  var node = data.tree.getNodeByDataIndex(dataIndex);\n  var virtualRoot = data.tree.root;\n  var sourceLayout = getSourceNode(virtualRoot, node).sourceLayout; // Use same duration and easing with update to have more consistent animation.\n\n  var removeAnimationOpt = {\n    duration: seriesModel.get('animationDurationUpdate'),\n    easing: seriesModel.get('animationEasingUpdate')\n  };\n  graphic.removeElement(symbolEl, {\n    x: sourceLayout.x + 1,\n    y: sourceLayout.y + 1\n  }, seriesModel, {\n    cb: function () {\n      group.remove(symbolEl);\n      data.setItemGraphicEl(dataIndex, null);\n    },\n    removeOpt: removeAnimationOpt\n  });\n  symbolEl.fadeOut(null, data.hostModel, {\n    fadeLabel: true,\n    animation: removeAnimationOpt\n  }); // remove edge as parent node\n\n  node.children.forEach(function (childNode) {\n    removeNodeEdge(childNode, data, group, seriesModel, removeAnimationOpt);\n  }); // remove edge as child node\n\n  removeNodeEdge(node, data, group, seriesModel, removeAnimationOpt);\n}\n\nfunction getEdgeShape(layoutOpt, orient, curvature, sourceLayout, targetLayout) {\n  var cpx1;\n  var cpy1;\n  var cpx2;\n  var cpy2;\n  var x1;\n  var x2;\n  var y1;\n  var y2;\n\n  if (layoutOpt === 'radial') {\n    x1 = sourceLayout.rawX;\n    y1 = sourceLayout.rawY;\n    x2 = targetLayout.rawX;\n    y2 = targetLayout.rawY;\n    var radialCoor1 = radialCoordinate(x1, y1);\n    var radialCoor2 = radialCoordinate(x1, y1 + (y2 - y1) * curvature);\n    var radialCoor3 = radialCoordinate(x2, y2 + (y1 - y2) * curvature);\n    var radialCoor4 = radialCoordinate(x2, y2);\n    return {\n      x1: radialCoor1.x || 0,\n      y1: radialCoor1.y || 0,\n      x2: radialCoor4.x || 0,\n      y2: radialCoor4.y || 0,\n      cpx1: radialCoor2.x || 0,\n      cpy1: radialCoor2.y || 0,\n      cpx2: radialCoor3.x || 0,\n      cpy2: radialCoor3.y || 0\n    };\n  } else {\n    x1 = sourceLayout.x;\n    y1 = sourceLayout.y;\n    x2 = targetLayout.x;\n    y2 = targetLayout.y;\n\n    if (orient === 'LR' || orient === 'RL') {\n      cpx1 = x1 + (x2 - x1) * curvature;\n      cpy1 = y1;\n      cpx2 = x2 + (x1 - x2) * curvature;\n      cpy2 = y2;\n    }\n\n    if (orient === 'TB' || orient === 'BT') {\n      cpx1 = x1;\n      cpy1 = y1 + (y2 - y1) * curvature;\n      cpx2 = x2;\n      cpy2 = y2 + (y1 - y2) * curvature;\n    }\n  }\n\n  return {\n    x1: x1,\n    y1: y1,\n    x2: x2,\n    y2: y2,\n    cpx1: cpx1,\n    cpy1: cpy1,\n    cpx2: cpx2,\n    cpy2: cpy2\n  };\n}\n\nexport default TreeView;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\n\n/**\r\n * Link lists and struct (graph or tree)\r\n */\nimport { curry, each, assert, extend, map, keys } from 'zrender/lib/core/util.js';\nimport { makeInner } from '../../util/model.js';\nvar inner = makeInner();\n\nfunction linkSeriesData(opt) {\n  var mainData = opt.mainData;\n  var datas = opt.datas;\n\n  if (!datas) {\n    datas = {\n      main: mainData\n    };\n    opt.datasAttr = {\n      main: 'data'\n    };\n  }\n\n  opt.datas = opt.mainData = null;\n  linkAll(mainData, datas, opt); // Porxy data original methods.\n\n  each(datas, function (data) {\n    each(mainData.TRANSFERABLE_METHODS, function (methodName) {\n      data.wrapMethod(methodName, curry(transferInjection, opt));\n    });\n  }); // Beyond transfer, additional features should be added to `cloneShallow`.\n\n  mainData.wrapMethod('cloneShallow', curry(cloneShallowInjection, opt)); // Only mainData trigger change, because struct.update may trigger\n  // another changable methods, which may bring about dead lock.\n\n  each(mainData.CHANGABLE_METHODS, function (methodName) {\n    mainData.wrapMethod(methodName, curry(changeInjection, opt));\n  }); // Make sure datas contains mainData.\n\n  assert(datas[mainData.dataType] === mainData);\n}\n\nfunction transferInjection(opt, res) {\n  if (isMainData(this)) {\n    // Transfer datas to new main data.\n    var datas = extend({}, inner(this).datas);\n    datas[this.dataType] = res;\n    linkAll(res, datas, opt);\n  } else {\n    // Modify the reference in main data to point newData.\n    linkSingle(res, this.dataType, inner(this).mainData, opt);\n  }\n\n  return res;\n}\n\nfunction changeInjection(opt, res) {\n  opt.struct && opt.struct.update();\n  return res;\n}\n\nfunction cloneShallowInjection(opt, res) {\n  // cloneShallow, which brings about some fragilities, may be inappropriate\n  // to be exposed as an API. So for implementation simplicity we can make\n  // the restriction that cloneShallow of not-mainData should not be invoked\n  // outside, but only be invoked here.\n  each(inner(res).datas, function (data, dataType) {\n    data !== res && linkSingle(data.cloneShallow(), dataType, res, opt);\n  });\n  return res;\n}\n/**\r\n * Supplement method to List.\r\n *\r\n * @public\r\n * @param [dataType] If not specified, return mainData.\r\n */\n\n\nfunction getLinkedData(dataType) {\n  var mainData = inner(this).mainData;\n  return dataType == null || mainData == null ? mainData : inner(mainData).datas[dataType];\n}\n/**\r\n * Get list of all linked data\r\n */\n\n\nfunction getLinkedDataAll() {\n  var mainData = inner(this).mainData;\n  return mainData == null ? [{\n    data: mainData\n  }] : map(keys(inner(mainData).datas), function (type) {\n    return {\n      type: type,\n      data: inner(mainData).datas[type]\n    };\n  });\n}\n\nfunction isMainData(data) {\n  return inner(data).mainData === data;\n}\n\nfunction linkAll(mainData, datas, opt) {\n  inner(mainData).datas = {};\n  each(datas, function (data, dataType) {\n    linkSingle(data, dataType, mainData, opt);\n  });\n}\n\nfunction linkSingle(data, dataType, mainData, opt) {\n  inner(mainData).datas[dataType] = data;\n  inner(data).mainData = mainData;\n  data.dataType = dataType;\n\n  if (opt.struct) {\n    data[opt.structAttr] = opt.struct;\n    opt.struct[opt.datasAttr[dataType]] = data;\n  } // Supplement method.\n\n\n  data.getLinkedData = getLinkedData;\n  data.getLinkedDataAll = getLinkedDataAll;\n}\n\nexport default linkSeriesData;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\n\n/**\r\n * Tree data structure\r\n */\nimport * as zrUtil from 'zrender/lib/core/util.js';\nimport linkSeriesData from './helper/linkSeriesData.js';\nimport SeriesData from './SeriesData.js';\nimport prepareSeriesDataSchema from './helper/createDimensions.js';\nimport { convertOptionIdName } from '../util/model.js';\n\nvar TreeNode =\n/** @class */\nfunction () {\n  function TreeNode(name, hostTree) {\n    this.depth = 0;\n    this.height = 0;\n    /**\r\n     * Reference to list item.\r\n     * Do not persistent dataIndex outside,\r\n     * besause it may be changed by list.\r\n     * If dataIndex -1,\r\n     * this node is logical deleted (filtered) in list.\r\n     */\n\n    this.dataIndex = -1;\n    this.children = [];\n    this.viewChildren = [];\n    this.isExpand = false;\n    this.name = name || '';\n    this.hostTree = hostTree;\n  }\n  /**\r\n   * The node is removed.\r\n   */\n\n\n  TreeNode.prototype.isRemoved = function () {\n    return this.dataIndex < 0;\n  };\n\n  TreeNode.prototype.eachNode = function (options, cb, context) {\n    if (zrUtil.isFunction(options)) {\n      context = cb;\n      cb = options;\n      options = null;\n    }\n\n    options = options || {};\n\n    if (zrUtil.isString(options)) {\n      options = {\n        order: options\n      };\n    }\n\n    var order = options.order || 'preorder';\n    var children = this[options.attr || 'children'];\n    var suppressVisitSub;\n    order === 'preorder' && (suppressVisitSub = cb.call(context, this));\n\n    for (var i = 0; !suppressVisitSub && i < children.length; i++) {\n      children[i].eachNode(options, cb, context);\n    }\n\n    order === 'postorder' && cb.call(context, this);\n  };\n  /**\r\n   * Update depth and height of this subtree.\r\n   */\n\n\n  TreeNode.prototype.updateDepthAndHeight = function (depth) {\n    var height = 0;\n    this.depth = depth;\n\n    for (var i = 0; i < this.children.length; i++) {\n      var child = this.children[i];\n      child.updateDepthAndHeight(depth + 1);\n\n      if (child.height > height) {\n        height = child.height;\n      }\n    }\n\n    this.height = height + 1;\n  };\n\n  TreeNode.prototype.getNodeById = function (id) {\n    if (this.getId() === id) {\n      return this;\n    }\n\n    for (var i = 0, children = this.children, len = children.length; i < len; i++) {\n      var res = children[i].getNodeById(id);\n\n      if (res) {\n        return res;\n      }\n    }\n  };\n\n  TreeNode.prototype.contains = function (node) {\n    if (node === this) {\n      return true;\n    }\n\n    for (var i = 0, children = this.children, len = children.length; i < len; i++) {\n      var res = children[i].contains(node);\n\n      if (res) {\n        return res;\n      }\n    }\n  };\n  /**\r\n   * @param includeSelf Default false.\r\n   * @return order: [root, child, grandchild, ...]\r\n   */\n\n\n  TreeNode.prototype.getAncestors = function (includeSelf) {\n    var ancestors = [];\n    var node = includeSelf ? this : this.parentNode;\n\n    while (node) {\n      ancestors.push(node);\n      node = node.parentNode;\n    }\n\n    ancestors.reverse();\n    return ancestors;\n  };\n\n  TreeNode.prototype.getAncestorsIndices = function () {\n    var indices = [];\n    var currNode = this;\n\n    while (currNode) {\n      indices.push(currNode.dataIndex);\n      currNode = currNode.parentNode;\n    }\n\n    indices.reverse();\n    return indices;\n  };\n\n  TreeNode.prototype.getDescendantIndices = function () {\n    var indices = [];\n    this.eachNode(function (childNode) {\n      indices.push(childNode.dataIndex);\n    });\n    return indices;\n  };\n\n  TreeNode.prototype.getValue = function (dimension) {\n    var data = this.hostTree.data;\n    return data.getStore().get(data.getDimensionIndex(dimension || 'value'), this.dataIndex);\n  };\n\n  TreeNode.prototype.setLayout = function (layout, merge) {\n    this.dataIndex >= 0 && this.hostTree.data.setItemLayout(this.dataIndex, layout, merge);\n  };\n  /**\r\n   * @return {Object} layout\r\n   */\n\n\n  TreeNode.prototype.getLayout = function () {\n    return this.hostTree.data.getItemLayout(this.dataIndex);\n  }; // @depcrecated\n  // getModel<T = unknown, S extends keyof T = keyof T>(path: S): Model<T[S]>\n  // eslint-disable-next-line @typescript-eslint/no-unused-vars\n\n\n  TreeNode.prototype.getModel = function (path) {\n    if (this.dataIndex < 0) {\n      return;\n    }\n\n    var hostTree = this.hostTree;\n    var itemModel = hostTree.data.getItemModel(this.dataIndex);\n    return itemModel.getModel(path);\n  }; // TODO: TYPE More specific model\n\n\n  TreeNode.prototype.getLevelModel = function () {\n    return (this.hostTree.levelModels || [])[this.depth];\n  };\n\n  TreeNode.prototype.setVisual = function (key, value) {\n    this.dataIndex >= 0 && this.hostTree.data.setItemVisual(this.dataIndex, key, value);\n  };\n  /**\r\n   * Get item visual\r\n   * FIXME: make return type better\r\n   */\n\n\n  TreeNode.prototype.getVisual = function (key) {\n    return this.hostTree.data.getItemVisual(this.dataIndex, key);\n  };\n\n  TreeNode.prototype.getRawIndex = function () {\n    return this.hostTree.data.getRawIndex(this.dataIndex);\n  };\n\n  TreeNode.prototype.getId = function () {\n    return this.hostTree.data.getId(this.dataIndex);\n  };\n  /**\r\n   * index in parent's children\r\n   */\n\n\n  TreeNode.prototype.getChildIndex = function () {\n    if (this.parentNode) {\n      var children = this.parentNode.children;\n\n      for (var i = 0; i < children.length; ++i) {\n        if (children[i] === this) {\n          return i;\n        }\n      }\n\n      return -1;\n    }\n\n    return -1;\n  };\n  /**\r\n   * if this is an ancestor of another node\r\n   *\r\n   * @param node another node\r\n   * @return if is ancestor\r\n   */\n\n\n  TreeNode.prototype.isAncestorOf = function (node) {\n    var parent = node.parentNode;\n\n    while (parent) {\n      if (parent === this) {\n        return true;\n      }\n\n      parent = parent.parentNode;\n    }\n\n    return false;\n  };\n  /**\r\n   * if this is an descendant of another node\r\n   *\r\n   * @param node another node\r\n   * @return if is descendant\r\n   */\n\n\n  TreeNode.prototype.isDescendantOf = function (node) {\n    return node !== this && node.isAncestorOf(this);\n  };\n\n  return TreeNode;\n}();\n\nexport { TreeNode };\n;\n\nvar Tree =\n/** @class */\nfunction () {\n  function Tree(hostModel) {\n    this.type = 'tree';\n    this._nodes = [];\n    this.hostModel = hostModel;\n  }\n\n  Tree.prototype.eachNode = function (options, cb, context) {\n    this.root.eachNode(options, cb, context);\n  };\n\n  Tree.prototype.getNodeByDataIndex = function (dataIndex) {\n    var rawIndex = this.data.getRawIndex(dataIndex);\n    return this._nodes[rawIndex];\n  };\n\n  Tree.prototype.getNodeById = function (name) {\n    return this.root.getNodeById(name);\n  };\n  /**\r\n   * Update item available by list,\r\n   * when list has been performed options like 'filterSelf' or 'map'.\r\n   */\n\n\n  Tree.prototype.update = function () {\n    var data = this.data;\n    var nodes = this._nodes;\n\n    for (var i = 0, len = nodes.length; i < len; i++) {\n      nodes[i].dataIndex = -1;\n    }\n\n    for (var i = 0, len = data.count(); i < len; i++) {\n      nodes[data.getRawIndex(i)].dataIndex = i;\n    }\n  };\n  /**\r\n   * Clear all layouts\r\n   */\n\n\n  Tree.prototype.clearLayouts = function () {\n    this.data.clearItemLayouts();\n  };\n  /**\r\n   * data node format:\r\n   * {\r\n   *     name: ...\r\n   *     value: ...\r\n   *     children: [\r\n   *         {\r\n   *             name: ...\r\n   *             value: ...\r\n   *             children: ...\r\n   *         },\r\n   *         ...\r\n   *     ]\r\n   * }\r\n   */\n\n\n  Tree.createTree = function (dataRoot, hostModel, beforeLink) {\n    var tree = new Tree(hostModel);\n    var listData = [];\n    var dimMax = 1;\n    buildHierarchy(dataRoot);\n\n    function buildHierarchy(dataNode, parentNode) {\n      var value = dataNode.value;\n      dimMax = Math.max(dimMax, zrUtil.isArray(value) ? value.length : 1);\n      listData.push(dataNode);\n      var node = new TreeNode(convertOptionIdName(dataNode.name, ''), tree);\n      parentNode ? addChild(node, parentNode) : tree.root = node;\n\n      tree._nodes.push(node);\n\n      var children = dataNode.children;\n\n      if (children) {\n        for (var i = 0; i < children.length; i++) {\n          buildHierarchy(children[i], node);\n        }\n      }\n    }\n\n    tree.root.updateDepthAndHeight(0);\n    var dimensions = prepareSeriesDataSchema(listData, {\n      coordDimensions: ['value'],\n      dimensionsCount: dimMax\n    }).dimensions;\n    var list = new SeriesData(dimensions, hostModel);\n    list.initData(listData);\n    beforeLink && beforeLink(list);\n    linkSeriesData({\n      mainData: list,\n      struct: tree,\n      structAttr: 'tree'\n    });\n    tree.update();\n    return tree;\n  };\n\n  return Tree;\n}();\n/**\r\n * It is needed to consider the mess of 'list', 'hostModel' when creating a TreeNote,\r\n * so this function is not ready and not necessary to be public.\r\n */\n\n\nfunction addChild(child, node) {\n  var children = node.children;\n\n  if (child.parentNode === node) {\n    return;\n  }\n\n  children.push(child);\n  child.parentNode = node;\n}\n\nexport default Tree;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport * as zrUtil from 'zrender/lib/core/util.js';\nexport function retrieveTargetInfo(payload, validPayloadTypes, seriesModel) {\n  if (payload && zrUtil.indexOf(validPayloadTypes, payload.type) >= 0) {\n    var root = seriesModel.getData().tree.root;\n    var targetNode = payload.targetNode;\n\n    if (zrUtil.isString(targetNode)) {\n      targetNode = root.getNodeById(targetNode);\n    }\n\n    if (targetNode && root.contains(targetNode)) {\n      return {\n        node: targetNode\n      };\n    }\n\n    var targetNodeId = payload.targetNodeId;\n\n    if (targetNodeId != null && (targetNode = root.getNodeById(targetNodeId))) {\n      return {\n        node: targetNode\n      };\n    }\n  }\n} // Not includes the given node at the last item.\n\nexport function getPathToRoot(node) {\n  var path = [];\n\n  while (node) {\n    node = node.parentNode;\n    node && path.push(node);\n  }\n\n  return path.reverse();\n}\nexport function aboveViewRoot(viewRoot, node) {\n  var viewPath = getPathToRoot(viewRoot);\n  return zrUtil.indexOf(viewPath, node) >= 0;\n} // From root to the input node (the input node will be included).\n\nexport function wrapTreePathInfo(node, seriesModel) {\n  var treePathInfo = [];\n\n  while (node) {\n    var nodeDataIndex = node.dataIndex;\n    treePathInfo.push({\n      name: node.name,\n      dataIndex: nodeDataIndex,\n      value: seriesModel.getRawValue(nodeDataIndex)\n    });\n    node = node.parentNode;\n  }\n\n  treePathInfo.reverse();\n  return treePathInfo;\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { __extends } from \"tslib\";\nimport SeriesModel from '../../model/Series.js';\nimport Tree from '../../data/Tree.js';\nimport Model from '../../model/Model.js';\nimport { createTooltipMarkup } from '../../component/tooltip/tooltipMarkup.js';\nimport { wrapTreePathInfo } from '../helper/treeHelper.js';\n\nvar TreeSeriesModel =\n/** @class */\nfunction (_super) {\n  __extends(TreeSeriesModel, _super);\n\n  function TreeSeriesModel() {\n    var _this = _super !== null && _super.apply(this, arguments) || this;\n\n    _this.hasSymbolVisual = true; // Do it self.\n\n    _this.ignoreStyleOnData = true;\n    return _this;\n  }\n  /**\r\n   * Init a tree data structure from data in option series\r\n   */\n\n\n  TreeSeriesModel.prototype.getInitialData = function (option) {\n    // create a virtual root\n    var root = {\n      name: option.name,\n      children: option.data\n    };\n    var leaves = option.leaves || {};\n    var leavesModel = new Model(leaves, this, this.ecModel);\n    var tree = Tree.createTree(root, this, beforeLink);\n\n    function beforeLink(nodeData) {\n      nodeData.wrapMethod('getItemModel', function (model, idx) {\n        var node = tree.getNodeByDataIndex(idx);\n\n        if (!(node && node.children.length && node.isExpand)) {\n          model.parentModel = leavesModel;\n        }\n\n        return model;\n      });\n    }\n\n    var treeDepth = 0;\n    tree.eachNode('preorder', function (node) {\n      if (node.depth > treeDepth) {\n        treeDepth = node.depth;\n      }\n    });\n    var expandAndCollapse = option.expandAndCollapse;\n    var expandTreeDepth = expandAndCollapse && option.initialTreeDepth >= 0 ? option.initialTreeDepth : treeDepth;\n    tree.root.eachNode('preorder', function (node) {\n      var item = node.hostTree.data.getRawDataItem(node.dataIndex); // Add item.collapsed != null, because users can collapse node original in the series.data.\n\n      node.isExpand = item && item.collapsed != null ? !item.collapsed : node.depth <= expandTreeDepth;\n    });\n    return tree.data;\n  };\n  /**\r\n   * Make the configuration 'orient' backward compatibly, with 'horizontal = LR', 'vertical = TB'.\r\n   * @returns {string} orient\r\n   */\n\n\n  TreeSeriesModel.prototype.getOrient = function () {\n    var orient = this.get('orient');\n\n    if (orient === 'horizontal') {\n      orient = 'LR';\n    } else if (orient === 'vertical') {\n      orient = 'TB';\n    }\n\n    return orient;\n  };\n\n  TreeSeriesModel.prototype.setZoom = function (zoom) {\n    this.option.zoom = zoom;\n  };\n\n  TreeSeriesModel.prototype.setCenter = function (center) {\n    this.option.center = center;\n  };\n\n  TreeSeriesModel.prototype.formatTooltip = function (dataIndex, multipleSeries, dataType) {\n    var tree = this.getData().tree;\n    var realRoot = tree.root.children[0];\n    var node = tree.getNodeByDataIndex(dataIndex);\n    var value = node.getValue();\n    var name = node.name;\n\n    while (node && node !== realRoot) {\n      name = node.parentNode.name + '.' + name;\n      node = node.parentNode;\n    }\n\n    return createTooltipMarkup('nameValue', {\n      name: name,\n      value: value,\n      noValue: isNaN(value) || value == null\n    });\n  }; // Add tree path to tooltip param\n\n\n  TreeSeriesModel.prototype.getDataParams = function (dataIndex) {\n    var params = _super.prototype.getDataParams.apply(this, arguments);\n\n    var node = this.getData().tree.getNodeByDataIndex(dataIndex);\n    params.treeAncestors = wrapTreePathInfo(node, this);\n    params.collapsed = !node.isExpand;\n    return params;\n  };\n\n  TreeSeriesModel.type = 'series.tree'; // can support the position parameters 'left', 'top','right','bottom', 'width',\n  // 'height' in the setOption() with 'merge' mode normal.\n\n  TreeSeriesModel.layoutMode = 'box';\n  TreeSeriesModel.defaultOption = {\n    // zlevel: 0,\n    z: 2,\n    coordinateSystem: 'view',\n    // the position of the whole view\n    left: '12%',\n    top: '12%',\n    right: '12%',\n    bottom: '12%',\n    // the layout of the tree, two value can be selected, 'orthogonal' or 'radial'\n    layout: 'orthogonal',\n    // value can be 'polyline'\n    edgeShape: 'curve',\n    edgeForkPosition: '50%',\n    // true | false | 'move' | 'scale', see module:component/helper/RoamController.\n    roam: false,\n    // Symbol size scale ratio in roam\n    nodeScaleRatio: 0.4,\n    // Default on center of graph\n    center: null,\n    zoom: 1,\n    orient: 'LR',\n    symbol: 'emptyCircle',\n    symbolSize: 7,\n    expandAndCollapse: true,\n    initialTreeDepth: 2,\n    lineStyle: {\n      color: '#ccc',\n      width: 1.5,\n      curveness: 0.5\n    },\n    itemStyle: {\n      color: 'lightsteelblue',\n      // borderColor: '#c23531',\n      borderWidth: 1.5\n    },\n    label: {\n      show: true\n    },\n    animationEasing: 'linear',\n    animationDuration: 700,\n    animationDurationUpdate: 500\n  };\n  return TreeSeriesModel;\n}(SeriesModel);\n\nexport default TreeSeriesModel;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\n\n/**\r\n * Traverse the tree from bottom to top and do something\r\n */\nfunction eachAfter(root, callback, separation) {\n  var nodes = [root];\n  var next = [];\n  var node;\n\n  while (node = nodes.pop()) {\n    // jshint ignore:line\n    next.push(node);\n\n    if (node.isExpand) {\n      var children = node.children;\n\n      if (children.length) {\n        for (var i = 0; i < children.length; i++) {\n          nodes.push(children[i]);\n        }\n      }\n    }\n  }\n\n  while (node = next.pop()) {\n    // jshint ignore:line\n    callback(node, separation);\n  }\n}\n/**\r\n * Traverse the tree from top to bottom and do something\r\n */\n\n\nfunction eachBefore(root, callback) {\n  var nodes = [root];\n  var node;\n\n  while (node = nodes.pop()) {\n    // jshint ignore:line\n    callback(node);\n\n    if (node.isExpand) {\n      var children = node.children;\n\n      if (children.length) {\n        for (var i = children.length - 1; i >= 0; i--) {\n          nodes.push(children[i]);\n        }\n      }\n    }\n  }\n}\n\nexport { eachAfter, eachBefore };","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { eachAfter, eachBefore } from './traversalHelper.js';\nimport { init, firstWalk, secondWalk, separation as sep, radialCoordinate, getViewRect } from './layoutHelper.js';\nexport default function treeLayout(ecModel, api) {\n  ecModel.eachSeriesByType('tree', function (seriesModel) {\n    commonLayout(seriesModel, api);\n  });\n}\n\nfunction commonLayout(seriesModel, api) {\n  var layoutInfo = getViewRect(seriesModel, api);\n  seriesModel.layoutInfo = layoutInfo;\n  var layout = seriesModel.get('layout');\n  var width = 0;\n  var height = 0;\n  var separation = null;\n\n  if (layout === 'radial') {\n    width = 2 * Math.PI;\n    height = Math.min(layoutInfo.height, layoutInfo.width) / 2;\n    separation = sep(function (node1, node2) {\n      return (node1.parentNode === node2.parentNode ? 1 : 2) / node1.depth;\n    });\n  } else {\n    width = layoutInfo.width;\n    height = layoutInfo.height;\n    separation = sep();\n  }\n\n  var virtualRoot = seriesModel.getData().tree.root;\n  var realRoot = virtualRoot.children[0];\n\n  if (realRoot) {\n    init(virtualRoot);\n    eachAfter(realRoot, firstWalk, separation);\n    virtualRoot.hierNode.modifier = -realRoot.hierNode.prelim;\n    eachBefore(realRoot, secondWalk);\n    var left_1 = realRoot;\n    var right_1 = realRoot;\n    var bottom_1 = realRoot;\n    eachBefore(realRoot, function (node) {\n      var x = node.getLayout().x;\n\n      if (x < left_1.getLayout().x) {\n        left_1 = node;\n      }\n\n      if (x > right_1.getLayout().x) {\n        right_1 = node;\n      }\n\n      if (node.depth > bottom_1.depth) {\n        bottom_1 = node;\n      }\n    });\n    var delta = left_1 === right_1 ? 1 : separation(left_1, right_1) / 2;\n    var tx_1 = delta - left_1.getLayout().x;\n    var kx_1 = 0;\n    var ky_1 = 0;\n    var coorX_1 = 0;\n    var coorY_1 = 0;\n\n    if (layout === 'radial') {\n      kx_1 = width / (right_1.getLayout().x + delta + tx_1); // here we use (node.depth - 1), bucause the real root's depth is 1\n\n      ky_1 = height / (bottom_1.depth - 1 || 1);\n      eachBefore(realRoot, function (node) {\n        coorX_1 = (node.getLayout().x + tx_1) * kx_1;\n        coorY_1 = (node.depth - 1) * ky_1;\n        var finalCoor = radialCoordinate(coorX_1, coorY_1);\n        node.setLayout({\n          x: finalCoor.x,\n          y: finalCoor.y,\n          rawX: coorX_1,\n          rawY: coorY_1\n        }, true);\n      });\n    } else {\n      var orient_1 = seriesModel.getOrient();\n\n      if (orient_1 === 'RL' || orient_1 === 'LR') {\n        ky_1 = height / (right_1.getLayout().x + delta + tx_1);\n        kx_1 = width / (bottom_1.depth - 1 || 1);\n        eachBefore(realRoot, function (node) {\n          coorY_1 = (node.getLayout().x + tx_1) * ky_1;\n          coorX_1 = orient_1 === 'LR' ? (node.depth - 1) * kx_1 : width - (node.depth - 1) * kx_1;\n          node.setLayout({\n            x: coorX_1,\n            y: coorY_1\n          }, true);\n        });\n      } else if (orient_1 === 'TB' || orient_1 === 'BT') {\n        kx_1 = width / (right_1.getLayout().x + delta + tx_1);\n        ky_1 = height / (bottom_1.depth - 1 || 1);\n        eachBefore(realRoot, function (node) {\n          coorX_1 = (node.getLayout().x + tx_1) * kx_1;\n          coorY_1 = orient_1 === 'TB' ? (node.depth - 1) * ky_1 : height - (node.depth - 1) * ky_1;\n          node.setLayout({\n            x: coorX_1,\n            y: coorY_1\n          }, true);\n        });\n      }\n    }\n  }\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { extend } from 'zrender/lib/core/util.js';\nexport default function treeVisual(ecModel) {\n  ecModel.eachSeriesByType('tree', function (seriesModel) {\n    var data = seriesModel.getData();\n    var tree = data.tree;\n    tree.eachNode(function (node) {\n      var model = node.getModel(); // TODO Optimize\n\n      var style = model.getModel('itemStyle').getItemStyle();\n      var existsStyle = data.ensureUniqueItemVisual(node.dataIndex, 'style');\n      extend(existsStyle, style);\n    });\n  });\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport * as helper from '../helper/treeHelper.js';\nimport { noop } from 'zrender/lib/core/util.js';\nvar actionTypes = ['treemapZoomToNode', 'treemapRender', 'treemapMove'];\nexport function installTreemapAction(registers) {\n  for (var i = 0; i < actionTypes.length; i++) {\n    registers.registerAction({\n      type: actionTypes[i],\n      update: 'updateView'\n    }, noop);\n  }\n\n  registers.registerAction({\n    type: 'treemapRootToNode',\n    update: 'updateView'\n  }, function (payload, ecModel) {\n    ecModel.eachComponent({\n      mainType: 'series',\n      subType: 'treemap',\n      query: payload\n    }, handleRootToNode);\n\n    function handleRootToNode(model, index) {\n      var types = ['treemapZoomToNode', 'treemapRootToNode'];\n      var targetInfo = helper.retrieveTargetInfo(payload, types, model);\n\n      if (targetInfo) {\n        var originViewRoot = model.getViewRoot();\n\n        if (originViewRoot) {\n          payload.direction = helper.aboveViewRoot(originViewRoot, targetInfo.node) ? 'rollUp' : 'drillDown';\n        }\n\n        model.resetViewRoot(targetInfo.node);\n      }\n    }\n  });\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { getDecalFromPalette } from '../../model/mixin/palette.js';\nexport default function enableAriaDecalForTree(seriesModel) {\n  var data = seriesModel.getData();\n  var tree = data.tree;\n  var decalPaletteScope = {};\n  tree.eachNode(function (node) {\n    // Use decal of level 1 node\n    var current = node;\n\n    while (current && current.depth > 1) {\n      current = current.parentNode;\n    }\n\n    var decal = getDecalFromPalette(seriesModel.ecModel, current.name || current.dataIndex + '', decalPaletteScope);\n    node.setVisual('decal', decal);\n  });\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { __extends } from \"tslib\";\nimport * as zrUtil from 'zrender/lib/core/util.js';\nimport SeriesModel from '../../model/Series.js';\nimport Tree from '../../data/Tree.js';\nimport Model from '../../model/Model.js';\nimport { wrapTreePathInfo } from '../helper/treeHelper.js';\nimport { normalizeToArray } from '../../util/model.js';\nimport { createTooltipMarkup } from '../../component/tooltip/tooltipMarkup.js';\nimport enableAriaDecalForTree from '../helper/enableAriaDecalForTree.js';\n\nvar TreemapSeriesModel =\n/** @class */\nfunction (_super) {\n  __extends(TreemapSeriesModel, _super);\n\n  function TreemapSeriesModel() {\n    var _this = _super !== null && _super.apply(this, arguments) || this;\n\n    _this.type = TreemapSeriesModel.type;\n    _this.preventUsingHoverLayer = true;\n    return _this;\n  }\n  /**\r\n   * @override\r\n   */\n\n\n  TreemapSeriesModel.prototype.getInitialData = function (option, ecModel) {\n    // Create a virtual root.\n    var root = {\n      name: option.name,\n      children: option.data\n    };\n    completeTreeValue(root);\n    var levels = option.levels || []; // Used in \"visual priority\" in `treemapVisual.js`.\n    // This way is a little tricky, must satisfy the precondition:\n    //   1. There is no `treeNode.getModel('itemStyle.xxx')` used.\n    //   2. The `Model.prototype.getModel()` will not use any clone-like way.\n\n    var designatedVisualItemStyle = this.designatedVisualItemStyle = {};\n    var designatedVisualModel = new Model({\n      itemStyle: designatedVisualItemStyle\n    }, this, ecModel);\n    levels = option.levels = setDefault(levels, ecModel);\n    var levelModels = zrUtil.map(levels || [], function (levelDefine) {\n      return new Model(levelDefine, designatedVisualModel, ecModel);\n    }, this); // Make sure always a new tree is created when setOption,\n    // in TreemapView, we check whether oldTree === newTree\n    // to choose mappings approach among old shapes and new shapes.\n\n    var tree = Tree.createTree(root, this, beforeLink);\n\n    function beforeLink(nodeData) {\n      nodeData.wrapMethod('getItemModel', function (model, idx) {\n        var node = tree.getNodeByDataIndex(idx);\n        var levelModel = node ? levelModels[node.depth] : null; // If no levelModel, we also need `designatedVisualModel`.\n\n        model.parentModel = levelModel || designatedVisualModel;\n        return model;\n      });\n    }\n\n    return tree.data;\n  };\n\n  TreemapSeriesModel.prototype.optionUpdated = function () {\n    this.resetViewRoot();\n  };\n  /**\r\n   * @override\r\n   * @param {number} dataIndex\r\n   * @param {boolean} [mutipleSeries=false]\r\n   */\n\n\n  TreemapSeriesModel.prototype.formatTooltip = function (dataIndex, multipleSeries, dataType) {\n    var data = this.getData();\n    var value = this.getRawValue(dataIndex);\n    var name = data.getName(dataIndex);\n    return createTooltipMarkup('nameValue', {\n      name: name,\n      value: value\n    });\n  };\n  /**\r\n   * Add tree path to tooltip param\r\n   *\r\n   * @override\r\n   * @param {number} dataIndex\r\n   * @return {Object}\r\n   */\n\n\n  TreemapSeriesModel.prototype.getDataParams = function (dataIndex) {\n    var params = _super.prototype.getDataParams.apply(this, arguments);\n\n    var node = this.getData().tree.getNodeByDataIndex(dataIndex);\n    params.treeAncestors = wrapTreePathInfo(node, this); // compatitable the previous code.\n\n    params.treePathInfo = params.treeAncestors;\n    return params;\n  };\n  /**\r\n   * @public\r\n   * @param {Object} layoutInfo {\r\n   *                                x: containerGroup x\r\n   *                                y: containerGroup y\r\n   *                                width: containerGroup width\r\n   *                                height: containerGroup height\r\n   *                            }\r\n   */\n\n\n  TreemapSeriesModel.prototype.setLayoutInfo = function (layoutInfo) {\n    /**\r\n     * @readOnly\r\n     * @type {Object}\r\n     */\n    this.layoutInfo = this.layoutInfo || {};\n    zrUtil.extend(this.layoutInfo, layoutInfo);\n  };\n  /**\r\n   * @param  {string} id\r\n   * @return {number} index\r\n   */\n\n\n  TreemapSeriesModel.prototype.mapIdToIndex = function (id) {\n    // A feature is implemented:\n    // index is monotone increasing with the sequence of\n    // input id at the first time.\n    // This feature can make sure that each data item and its\n    // mapped color have the same index between data list and\n    // color list at the beginning, which is useful for user\n    // to adjust data-color mapping.\n\n    /**\r\n     * @private\r\n     * @type {Object}\r\n     */\n    var idIndexMap = this._idIndexMap;\n\n    if (!idIndexMap) {\n      idIndexMap = this._idIndexMap = zrUtil.createHashMap();\n      /**\r\n       * @private\r\n       * @type {number}\r\n       */\n\n      this._idIndexMapCount = 0;\n    }\n\n    var index = idIndexMap.get(id);\n\n    if (index == null) {\n      idIndexMap.set(id, index = this._idIndexMapCount++);\n    }\n\n    return index;\n  };\n\n  TreemapSeriesModel.prototype.getViewRoot = function () {\n    return this._viewRoot;\n  };\n\n  TreemapSeriesModel.prototype.resetViewRoot = function (viewRoot) {\n    viewRoot ? this._viewRoot = viewRoot : viewRoot = this._viewRoot;\n    var root = this.getRawData().tree.root;\n\n    if (!viewRoot || viewRoot !== root && !root.contains(viewRoot)) {\n      this._viewRoot = root;\n    }\n  };\n\n  TreemapSeriesModel.prototype.enableAriaDecal = function () {\n    enableAriaDecalForTree(this);\n  };\n\n  TreemapSeriesModel.type = 'series.treemap';\n  TreemapSeriesModel.layoutMode = 'box';\n  TreemapSeriesModel.defaultOption = {\n    // Disable progressive rendering\n    progressive: 0,\n    // size: ['80%', '80%'],            // deprecated, compatible with ec2.\n    left: 'center',\n    top: 'middle',\n    width: '80%',\n    height: '80%',\n    sort: true,\n    clipWindow: 'origin',\n    squareRatio: 0.5 * (1 + Math.sqrt(5)),\n    leafDepth: null,\n    drillDownIcon: '▶',\n    // to align specialized icon. ▷▶❒❐▼✚\n    zoomToNodeRatio: 0.32 * 0.32,\n    roam: true,\n    nodeClick: 'zoomToNode',\n    animation: true,\n    animationDurationUpdate: 900,\n    animationEasing: 'quinticInOut',\n    breadcrumb: {\n      show: true,\n      height: 22,\n      left: 'center',\n      top: 'bottom',\n      // right\n      // bottom\n      emptyItemWidth: 25,\n      itemStyle: {\n        color: 'rgba(0,0,0,0.7)',\n        textStyle: {\n          color: '#fff'\n        }\n      },\n      emphasis: {\n        itemStyle: {\n          color: 'rgba(0,0,0,0.9)' // '#5793f3',\n\n        }\n      }\n    },\n    label: {\n      show: true,\n      // Do not use textDistance, for ellipsis rect just the same as treemap node rect.\n      distance: 0,\n      padding: 5,\n      position: 'inside',\n      // formatter: null,\n      color: '#fff',\n      overflow: 'truncate' // align\n      // verticalAlign\n\n    },\n    upperLabel: {\n      show: false,\n      position: [0, '50%'],\n      height: 20,\n      // formatter: null,\n      // color: '#fff',\n      overflow: 'truncate',\n      // align: null,\n      verticalAlign: 'middle'\n    },\n    itemStyle: {\n      color: null,\n      colorAlpha: null,\n      colorSaturation: null,\n      borderWidth: 0,\n      gapWidth: 0,\n      borderColor: '#fff',\n      borderColorSaturation: null // If specified, borderColor will be ineffective, and the\n      // border color is evaluated by color of current node and\n      // borderColorSaturation.\n\n    },\n    emphasis: {\n      upperLabel: {\n        show: true,\n        position: [0, '50%'],\n        overflow: 'truncate',\n        verticalAlign: 'middle'\n      }\n    },\n    visualDimension: 0,\n    visualMin: null,\n    visualMax: null,\n    color: [],\n    // level[n].color (if necessary).\n    // + Specify color list of each level. level[0].color would be global\n    // color list if not specified. (see method `setDefault`).\n    // + But set as a empty array to forbid fetch color from global palette\n    // when using nodeModel.get('color'), otherwise nodes on deep level\n    // will always has color palette set and are not able to inherit color\n    // from parent node.\n    // + TreemapSeries.color can not be set as 'none', otherwise effect\n    // legend color fetching (see seriesColor.js).\n    colorAlpha: null,\n    colorSaturation: null,\n    colorMappingBy: 'index',\n    visibleMin: 10,\n    // be rendered. Only works when sort is 'asc' or 'desc'.\n    childrenVisibleMin: null,\n    // grandchildren will not show.\n    // Why grandchildren? If not grandchildren but children,\n    // some siblings show children and some not,\n    // the appearance may be mess and not consistent,\n    levels: [] // Each item: {\n    //     visibleMin, itemStyle, visualDimension, label\n    // }\n\n  };\n  return TreemapSeriesModel;\n}(SeriesModel);\n/**\r\n * @param {Object} dataNode\r\n */\n\n\nfunction completeTreeValue(dataNode) {\n  // Postorder travel tree.\n  // If value of none-leaf node is not set,\n  // calculate it by suming up the value of all children.\n  var sum = 0;\n  zrUtil.each(dataNode.children, function (child) {\n    completeTreeValue(child);\n    var childValue = child.value;\n    zrUtil.isArray(childValue) && (childValue = childValue[0]);\n    sum += childValue;\n  });\n  var thisValue = dataNode.value;\n\n  if (zrUtil.isArray(thisValue)) {\n    thisValue = thisValue[0];\n  }\n\n  if (thisValue == null || isNaN(thisValue)) {\n    thisValue = sum;\n  } // Value should not less than 0.\n\n\n  if (thisValue < 0) {\n    thisValue = 0;\n  }\n\n  zrUtil.isArray(dataNode.value) ? dataNode.value[0] = thisValue : dataNode.value = thisValue;\n}\n/**\r\n * set default to level configuration\r\n */\n\n\nfunction setDefault(levels, ecModel) {\n  var globalColorList = normalizeToArray(ecModel.get('color'));\n  var globalDecalList = normalizeToArray(ecModel.get(['aria', 'decal', 'decals']));\n\n  if (!globalColorList) {\n    return;\n  }\n\n  levels = levels || [];\n  var hasColorDefine;\n  var hasDecalDefine;\n  zrUtil.each(levels, function (levelDefine) {\n    var model = new Model(levelDefine);\n    var modelColor = model.get('color');\n    var modelDecal = model.get('decal');\n\n    if (model.get(['itemStyle', 'color']) || modelColor && modelColor !== 'none') {\n      hasColorDefine = true;\n    }\n\n    if (model.get(['itemStyle', 'decal']) || modelDecal && modelDecal !== 'none') {\n      hasDecalDefine = true;\n    }\n  });\n  var level0 = levels[0] || (levels[0] = {});\n\n  if (!hasColorDefine) {\n    level0.color = globalColorList.slice();\n  }\n\n  if (!hasDecalDefine && globalDecalList) {\n    level0.decal = globalDecalList.slice();\n  }\n\n  return levels;\n}\n\nexport default TreemapSeriesModel;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport * as graphic from '../../util/graphic.js';\nimport { getECData } from '../../util/innerStore.js';\nimport * as layout from '../../util/layout.js';\nimport { wrapTreePathInfo } from '../helper/treeHelper.js';\nimport { curry, defaults } from 'zrender/lib/core/util.js';\nimport { convertOptionIdName } from '../../util/model.js';\nimport { toggleHoverEmphasis, Z2_EMPHASIS_LIFT } from '../../util/states.js';\nimport { createTextStyle } from '../../label/labelStyle.js';\nvar TEXT_PADDING = 8;\nvar ITEM_GAP = 8;\nvar ARRAY_LENGTH = 5;\n\nvar Breadcrumb =\n/** @class */\nfunction () {\n  function Breadcrumb(containerGroup) {\n    this.group = new graphic.Group();\n    containerGroup.add(this.group);\n  }\n\n  Breadcrumb.prototype.render = function (seriesModel, api, targetNode, onSelect) {\n    var model = seriesModel.getModel('breadcrumb');\n    var thisGroup = this.group;\n    thisGroup.removeAll();\n\n    if (!model.get('show') || !targetNode) {\n      return;\n    }\n\n    var normalStyleModel = model.getModel('itemStyle');\n    var emphasisModel = model.getModel('emphasis');\n    var textStyleModel = normalStyleModel.getModel('textStyle');\n    var emphasisTextStyleModel = emphasisModel.getModel(['itemStyle', 'textStyle']);\n    var layoutParam = {\n      pos: {\n        left: model.get('left'),\n        right: model.get('right'),\n        top: model.get('top'),\n        bottom: model.get('bottom')\n      },\n      box: {\n        width: api.getWidth(),\n        height: api.getHeight()\n      },\n      emptyItemWidth: model.get('emptyItemWidth'),\n      totalWidth: 0,\n      renderList: []\n    };\n\n    this._prepare(targetNode, layoutParam, textStyleModel);\n\n    this._renderContent(seriesModel, layoutParam, normalStyleModel, emphasisModel, textStyleModel, emphasisTextStyleModel, onSelect);\n\n    layout.positionElement(thisGroup, layoutParam.pos, layoutParam.box);\n  };\n  /**\r\n   * Prepare render list and total width\r\n   * @private\r\n   */\n\n\n  Breadcrumb.prototype._prepare = function (targetNode, layoutParam, textStyleModel) {\n    for (var node = targetNode; node; node = node.parentNode) {\n      var text = convertOptionIdName(node.getModel().get('name'), '');\n      var textRect = textStyleModel.getTextRect(text);\n      var itemWidth = Math.max(textRect.width + TEXT_PADDING * 2, layoutParam.emptyItemWidth);\n      layoutParam.totalWidth += itemWidth + ITEM_GAP;\n      layoutParam.renderList.push({\n        node: node,\n        text: text,\n        width: itemWidth\n      });\n    }\n  };\n  /**\r\n   * @private\r\n   */\n\n\n  Breadcrumb.prototype._renderContent = function (seriesModel, layoutParam, normalStyleModel, emphasisModel, textStyleModel, emphasisTextStyleModel, onSelect) {\n    // Start rendering.\n    var lastX = 0;\n    var emptyItemWidth = layoutParam.emptyItemWidth;\n    var height = seriesModel.get(['breadcrumb', 'height']);\n    var availableSize = layout.getAvailableSize(layoutParam.pos, layoutParam.box);\n    var totalWidth = layoutParam.totalWidth;\n    var renderList = layoutParam.renderList;\n    var emphasisItemStyle = emphasisModel.getModel('itemStyle').getItemStyle();\n\n    for (var i = renderList.length - 1; i >= 0; i--) {\n      var item = renderList[i];\n      var itemNode = item.node;\n      var itemWidth = item.width;\n      var text = item.text; // Hdie text and shorten width if necessary.\n\n      if (totalWidth > availableSize.width) {\n        totalWidth -= itemWidth - emptyItemWidth;\n        itemWidth = emptyItemWidth;\n        text = null;\n      }\n\n      var el = new graphic.Polygon({\n        shape: {\n          points: makeItemPoints(lastX, 0, itemWidth, height, i === renderList.length - 1, i === 0)\n        },\n        style: defaults(normalStyleModel.getItemStyle(), {\n          lineJoin: 'bevel'\n        }),\n        textContent: new graphic.Text({\n          style: createTextStyle(textStyleModel, {\n            text: text\n          })\n        }),\n        textConfig: {\n          position: 'inside'\n        },\n        z2: Z2_EMPHASIS_LIFT * 1e4,\n        onclick: curry(onSelect, itemNode)\n      });\n      el.disableLabelAnimation = true;\n      el.getTextContent().ensureState('emphasis').style = createTextStyle(emphasisTextStyleModel, {\n        text: text\n      });\n      el.ensureState('emphasis').style = emphasisItemStyle;\n      toggleHoverEmphasis(el, emphasisModel.get('focus'), emphasisModel.get('blurScope'), emphasisModel.get('disabled'));\n      this.group.add(el);\n      packEventData(el, seriesModel, itemNode);\n      lastX += itemWidth + ITEM_GAP;\n    }\n  };\n\n  Breadcrumb.prototype.remove = function () {\n    this.group.removeAll();\n  };\n\n  return Breadcrumb;\n}();\n\nfunction makeItemPoints(x, y, itemWidth, itemHeight, head, tail) {\n  var points = [[head ? x : x - ARRAY_LENGTH, y], [x + itemWidth, y], [x + itemWidth, y + itemHeight], [head ? x : x - ARRAY_LENGTH, y + itemHeight]];\n  !tail && points.splice(2, 0, [x + itemWidth + ARRAY_LENGTH, y + itemHeight / 2]);\n  !head && points.push([x, y + itemHeight / 2]);\n  return points;\n} // Package custom mouse event.\n\n\nfunction packEventData(el, seriesModel, itemNode) {\n  getECData(el).eventData = {\n    componentType: 'series',\n    componentSubType: 'treemap',\n    componentIndex: seriesModel.componentIndex,\n    seriesIndex: seriesModel.seriesIndex,\n    seriesName: seriesModel.name,\n    seriesType: 'treemap',\n    selfType: 'breadcrumb',\n    nodeData: {\n      dataIndex: itemNode && itemNode.dataIndex,\n      name: itemNode && itemNode.name\n    },\n    treePathInfo: itemNode && wrapTreePathInfo(itemNode, seriesModel)\n  };\n}\n\nexport default Breadcrumb;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\n\n/**\r\n * Animate multiple elements with a single done-callback.\r\n *\r\n * @example\r\n *  animation\r\n *      .createWrap()\r\n *      .add(el1, {x: 10, y: 10})\r\n *      .add(el2, {shape: {width: 500}, style: {fill: 'red'}}, 400)\r\n *      .done(function () { // done })\r\n *      .start('cubicOut');\r\n */\nvar AnimationWrap =\n/** @class */\nfunction () {\n  function AnimationWrap() {\n    this._storage = [];\n    this._elExistsMap = {};\n  }\n  /**\r\n   * Caution: a el can only be added once, otherwise 'done'\r\n   * might not be called. This method checks this (by el.id),\r\n   * suppresses adding and returns false when existing el found.\r\n   *\r\n   * @return Whether adding succeeded.\r\n   */\n\n\n  AnimationWrap.prototype.add = function (el, target, duration, delay, easing) {\n    if (this._elExistsMap[el.id]) {\n      return false;\n    }\n\n    this._elExistsMap[el.id] = true;\n\n    this._storage.push({\n      el: el,\n      target: target,\n      duration: duration,\n      delay: delay,\n      easing: easing\n    });\n\n    return true;\n  };\n  /**\r\n   * Only execute when animation done/aborted.\r\n   */\n\n\n  AnimationWrap.prototype.finished = function (callback) {\n    this._finishedCallback = callback;\n    return this;\n  };\n  /**\r\n   * Will stop exist animation firstly.\r\n   */\n\n\n  AnimationWrap.prototype.start = function () {\n    var _this = this;\n\n    var count = this._storage.length;\n\n    var checkTerminate = function () {\n      count--;\n\n      if (count <= 0) {\n        // Guard.\n        _this._storage.length = 0;\n        _this._elExistsMap = {};\n        _this._finishedCallback && _this._finishedCallback();\n      }\n    };\n\n    for (var i = 0, len = this._storage.length; i < len; i++) {\n      var item = this._storage[i];\n      item.el.animateTo(item.target, {\n        duration: item.duration,\n        delay: item.delay,\n        easing: item.easing,\n        setToFinal: true,\n        done: checkTerminate,\n        aborted: checkTerminate\n      });\n    }\n\n    return this;\n  };\n\n  return AnimationWrap;\n}();\n\nexport function createWrap() {\n  return new AnimationWrap();\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { __extends } from \"tslib\";\nimport { bind, each, indexOf, curry, extend, normalizeCssArray, isFunction } from 'zrender/lib/core/util.js';\nimport * as graphic from '../../util/graphic.js';\nimport { getECData } from '../../util/innerStore.js';\nimport { isHighDownDispatcher, setAsHighDownDispatcher, setDefaultStateProxy, enableHoverFocus, Z2_EMPHASIS_LIFT } from '../../util/states.js';\nimport DataDiffer from '../../data/DataDiffer.js';\nimport * as helper from '../helper/treeHelper.js';\nimport Breadcrumb from './Breadcrumb.js';\nimport RoamController from '../../component/helper/RoamController.js';\nimport BoundingRect from 'zrender/lib/core/BoundingRect.js';\nimport * as matrix from 'zrender/lib/core/matrix.js';\nimport * as animationUtil from '../../util/animation.js';\nimport makeStyleMapper from '../../model/mixin/makeStyleMapper.js';\nimport ChartView from '../../view/Chart.js';\nimport Displayable from 'zrender/lib/graphic/Displayable.js';\nimport { makeInner, convertOptionIdName } from '../../util/model.js';\nimport { windowOpen } from '../../util/format.js';\nimport { setLabelStyle, getLabelStatesModels } from '../../label/labelStyle.js';\nvar Group = graphic.Group;\nvar Rect = graphic.Rect;\nvar DRAG_THRESHOLD = 3;\nvar PATH_LABEL_NOAMAL = 'label';\nvar PATH_UPPERLABEL_NORMAL = 'upperLabel'; // Should larger than emphasis states lift z\n\nvar Z2_BASE = Z2_EMPHASIS_LIFT * 10; // Should bigger than every z2.\n\nvar Z2_BG = Z2_EMPHASIS_LIFT * 2;\nvar Z2_CONTENT = Z2_EMPHASIS_LIFT * 3;\nvar getStateItemStyle = makeStyleMapper([['fill', 'color'], // `borderColor` and `borderWidth` has been occupied,\n// so use `stroke` to indicate the stroke of the rect.\n['stroke', 'strokeColor'], ['lineWidth', 'strokeWidth'], ['shadowBlur'], ['shadowOffsetX'], ['shadowOffsetY'], ['shadowColor'] // Option decal is in `DecalObject` but style.decal is in `PatternObject`.\n// So do not transfer decal directly.\n]);\n\nvar getItemStyleNormal = function (model) {\n  // Normal style props should include emphasis style props.\n  var itemStyle = getStateItemStyle(model); // Clear styles set by emphasis.\n\n  itemStyle.stroke = itemStyle.fill = itemStyle.lineWidth = null;\n  return itemStyle;\n};\n\nvar inner = makeInner();\n\nvar TreemapView =\n/** @class */\nfunction (_super) {\n  __extends(TreemapView, _super);\n\n  function TreemapView() {\n    var _this = _super !== null && _super.apply(this, arguments) || this;\n\n    _this.type = TreemapView.type;\n    _this._state = 'ready';\n    _this._storage = createStorage();\n    return _this;\n  }\n  /**\r\n   * @override\r\n   */\n\n\n  TreemapView.prototype.render = function (seriesModel, ecModel, api, payload) {\n    var models = ecModel.findComponents({\n      mainType: 'series',\n      subType: 'treemap',\n      query: payload\n    });\n\n    if (indexOf(models, seriesModel) < 0) {\n      return;\n    }\n\n    this.seriesModel = seriesModel;\n    this.api = api;\n    this.ecModel = ecModel;\n    var types = ['treemapZoomToNode', 'treemapRootToNode'];\n    var targetInfo = helper.retrieveTargetInfo(payload, types, seriesModel);\n    var payloadType = payload && payload.type;\n    var layoutInfo = seriesModel.layoutInfo;\n    var isInit = !this._oldTree;\n    var thisStorage = this._storage; // Mark new root when action is treemapRootToNode.\n\n    var reRoot = payloadType === 'treemapRootToNode' && targetInfo && thisStorage ? {\n      rootNodeGroup: thisStorage.nodeGroup[targetInfo.node.getRawIndex()],\n      direction: payload.direction\n    } : null;\n\n    var containerGroup = this._giveContainerGroup(layoutInfo);\n\n    var hasAnimation = seriesModel.get('animation');\n\n    var renderResult = this._doRender(containerGroup, seriesModel, reRoot);\n\n    hasAnimation && !isInit && (!payloadType || payloadType === 'treemapZoomToNode' || payloadType === 'treemapRootToNode') ? this._doAnimation(containerGroup, renderResult, seriesModel, reRoot) : renderResult.renderFinally();\n\n    this._resetController(api);\n\n    this._renderBreadcrumb(seriesModel, api, targetInfo);\n  };\n\n  TreemapView.prototype._giveContainerGroup = function (layoutInfo) {\n    var containerGroup = this._containerGroup;\n\n    if (!containerGroup) {\n      // FIXME\n      // 加一层containerGroup是为了clip，但是现在clip功能并没有实现。\n      containerGroup = this._containerGroup = new Group();\n\n      this._initEvents(containerGroup);\n\n      this.group.add(containerGroup);\n    }\n\n    containerGroup.x = layoutInfo.x;\n    containerGroup.y = layoutInfo.y;\n    return containerGroup;\n  };\n\n  TreemapView.prototype._doRender = function (containerGroup, seriesModel, reRoot) {\n    var thisTree = seriesModel.getData().tree;\n    var oldTree = this._oldTree; // Clear last shape records.\n\n    var lastsForAnimation = createStorage();\n    var thisStorage = createStorage();\n    var oldStorage = this._storage;\n    var willInvisibleEls = [];\n\n    function doRenderNode(thisNode, oldNode, parentGroup, depth) {\n      return renderNode(seriesModel, thisStorage, oldStorage, reRoot, lastsForAnimation, willInvisibleEls, thisNode, oldNode, parentGroup, depth);\n    } // Notice: When thisTree and oldTree are the same tree (see list.cloneShallow),\n    // the oldTree is actually losted, so we cannot find all of the old graphic\n    // elements from tree. So we use this strategy: make element storage, move\n    // from old storage to new storage, clear old storage.\n\n\n    dualTravel(thisTree.root ? [thisTree.root] : [], oldTree && oldTree.root ? [oldTree.root] : [], containerGroup, thisTree === oldTree || !oldTree, 0); // Process all removing.\n\n    var willDeleteEls = clearStorage(oldStorage);\n    this._oldTree = thisTree;\n    this._storage = thisStorage;\n    return {\n      lastsForAnimation: lastsForAnimation,\n      willDeleteEls: willDeleteEls,\n      renderFinally: renderFinally\n    };\n\n    function dualTravel(thisViewChildren, oldViewChildren, parentGroup, sameTree, depth) {\n      // When 'render' is triggered by action,\n      // 'this' and 'old' may be the same tree,\n      // we use rawIndex in that case.\n      if (sameTree) {\n        oldViewChildren = thisViewChildren;\n        each(thisViewChildren, function (child, index) {\n          !child.isRemoved() && processNode(index, index);\n        });\n      } // Diff hierarchically (diff only in each subtree, but not whole).\n      // because, consistency of view is important.\n      else {\n          new DataDiffer(oldViewChildren, thisViewChildren, getKey, getKey).add(processNode).update(processNode).remove(curry(processNode, null)).execute();\n        }\n\n      function getKey(node) {\n        // Identify by name or raw index.\n        return node.getId();\n      }\n\n      function processNode(newIndex, oldIndex) {\n        var thisNode = newIndex != null ? thisViewChildren[newIndex] : null;\n        var oldNode = oldIndex != null ? oldViewChildren[oldIndex] : null;\n        var group = doRenderNode(thisNode, oldNode, parentGroup, depth);\n        group && dualTravel(thisNode && thisNode.viewChildren || [], oldNode && oldNode.viewChildren || [], group, sameTree, depth + 1);\n      }\n    }\n\n    function clearStorage(storage) {\n      var willDeleteEls = createStorage();\n      storage && each(storage, function (store, storageName) {\n        var delEls = willDeleteEls[storageName];\n        each(store, function (el) {\n          el && (delEls.push(el), inner(el).willDelete = true);\n        });\n      });\n      return willDeleteEls;\n    }\n\n    function renderFinally() {\n      each(willDeleteEls, function (els) {\n        each(els, function (el) {\n          el.parent && el.parent.remove(el);\n        });\n      });\n      each(willInvisibleEls, function (el) {\n        el.invisible = true; // Setting invisible is for optimizing, so no need to set dirty,\n        // just mark as invisible.\n\n        el.dirty();\n      });\n    }\n  };\n\n  TreemapView.prototype._doAnimation = function (containerGroup, renderResult, seriesModel, reRoot) {\n    var durationOption = seriesModel.get('animationDurationUpdate');\n    var easingOption = seriesModel.get('animationEasing'); // TODO: do not support function until necessary.\n\n    var duration = (isFunction(durationOption) ? 0 : durationOption) || 0;\n    var easing = (isFunction(easingOption) ? null : easingOption) || 'cubicOut';\n    var animationWrap = animationUtil.createWrap(); // Make delete animations.\n\n    each(renderResult.willDeleteEls, function (store, storageName) {\n      each(store, function (el, rawIndex) {\n        if (el.invisible) {\n          return;\n        }\n\n        var parent = el.parent; // Always has parent, and parent is nodeGroup.\n\n        var target;\n        var innerStore = inner(parent);\n\n        if (reRoot && reRoot.direction === 'drillDown') {\n          target = parent === reRoot.rootNodeGroup // This is the content element of view root.\n          // Only `content` will enter this branch, because\n          // `background` and `nodeGroup` will not be deleted.\n          ? {\n            shape: {\n              x: 0,\n              y: 0,\n              width: innerStore.nodeWidth,\n              height: innerStore.nodeHeight\n            },\n            style: {\n              opacity: 0\n            }\n          } // Others.\n          : {\n            style: {\n              opacity: 0\n            }\n          };\n        } else {\n          var targetX = 0;\n          var targetY = 0;\n\n          if (!innerStore.willDelete) {\n            // Let node animate to right-bottom corner, cooperating with fadeout,\n            // which is appropriate for user understanding.\n            // Divided by 2 for reRoot rolling up effect.\n            targetX = innerStore.nodeWidth / 2;\n            targetY = innerStore.nodeHeight / 2;\n          }\n\n          target = storageName === 'nodeGroup' ? {\n            x: targetX,\n            y: targetY,\n            style: {\n              opacity: 0\n            }\n          } : {\n            shape: {\n              x: targetX,\n              y: targetY,\n              width: 0,\n              height: 0\n            },\n            style: {\n              opacity: 0\n            }\n          };\n        } // TODO: do not support delay until necessary.\n\n\n        target && animationWrap.add(el, target, duration, 0, easing);\n      });\n    }); // Make other animations\n\n    each(this._storage, function (store, storageName) {\n      each(store, function (el, rawIndex) {\n        var last = renderResult.lastsForAnimation[storageName][rawIndex];\n        var target = {};\n\n        if (!last) {\n          return;\n        }\n\n        if (el instanceof graphic.Group) {\n          if (last.oldX != null) {\n            target.x = el.x;\n            target.y = el.y;\n            el.x = last.oldX;\n            el.y = last.oldY;\n          }\n        } else {\n          if (last.oldShape) {\n            target.shape = extend({}, el.shape);\n            el.setShape(last.oldShape);\n          }\n\n          if (last.fadein) {\n            el.setStyle('opacity', 0);\n            target.style = {\n              opacity: 1\n            };\n          } // When animation is stopped for succedent animation starting,\n          // el.style.opacity might not be 1\n          else if (el.style.opacity !== 1) {\n              target.style = {\n                opacity: 1\n              };\n            }\n        }\n\n        animationWrap.add(el, target, duration, 0, easing);\n      });\n    }, this);\n    this._state = 'animating';\n    animationWrap.finished(bind(function () {\n      this._state = 'ready';\n      renderResult.renderFinally();\n    }, this)).start();\n  };\n\n  TreemapView.prototype._resetController = function (api) {\n    var controller = this._controller; // Init controller.\n\n    if (!controller) {\n      controller = this._controller = new RoamController(api.getZr());\n      controller.enable(this.seriesModel.get('roam'));\n      controller.on('pan', bind(this._onPan, this));\n      controller.on('zoom', bind(this._onZoom, this));\n    }\n\n    var rect = new BoundingRect(0, 0, api.getWidth(), api.getHeight());\n    controller.setPointerChecker(function (e, x, y) {\n      return rect.contain(x, y);\n    });\n  };\n\n  TreemapView.prototype._clearController = function () {\n    var controller = this._controller;\n\n    if (controller) {\n      controller.dispose();\n      controller = null;\n    }\n  };\n\n  TreemapView.prototype._onPan = function (e) {\n    if (this._state !== 'animating' && (Math.abs(e.dx) > DRAG_THRESHOLD || Math.abs(e.dy) > DRAG_THRESHOLD)) {\n      // These param must not be cached.\n      var root = this.seriesModel.getData().tree.root;\n\n      if (!root) {\n        return;\n      }\n\n      var rootLayout = root.getLayout();\n\n      if (!rootLayout) {\n        return;\n      }\n\n      this.api.dispatchAction({\n        type: 'treemapMove',\n        from: this.uid,\n        seriesId: this.seriesModel.id,\n        rootRect: {\n          x: rootLayout.x + e.dx,\n          y: rootLayout.y + e.dy,\n          width: rootLayout.width,\n          height: rootLayout.height\n        }\n      });\n    }\n  };\n\n  TreemapView.prototype._onZoom = function (e) {\n    var mouseX = e.originX;\n    var mouseY = e.originY;\n\n    if (this._state !== 'animating') {\n      // These param must not be cached.\n      var root = this.seriesModel.getData().tree.root;\n\n      if (!root) {\n        return;\n      }\n\n      var rootLayout = root.getLayout();\n\n      if (!rootLayout) {\n        return;\n      }\n\n      var rect = new BoundingRect(rootLayout.x, rootLayout.y, rootLayout.width, rootLayout.height);\n      var layoutInfo = this.seriesModel.layoutInfo; // Transform mouse coord from global to containerGroup.\n\n      mouseX -= layoutInfo.x;\n      mouseY -= layoutInfo.y; // Scale root bounding rect.\n\n      var m = matrix.create();\n      matrix.translate(m, m, [-mouseX, -mouseY]);\n      matrix.scale(m, m, [e.scale, e.scale]);\n      matrix.translate(m, m, [mouseX, mouseY]);\n      rect.applyTransform(m);\n      this.api.dispatchAction({\n        type: 'treemapRender',\n        from: this.uid,\n        seriesId: this.seriesModel.id,\n        rootRect: {\n          x: rect.x,\n          y: rect.y,\n          width: rect.width,\n          height: rect.height\n        }\n      });\n    }\n  };\n\n  TreemapView.prototype._initEvents = function (containerGroup) {\n    var _this = this;\n\n    containerGroup.on('click', function (e) {\n      if (_this._state !== 'ready') {\n        return;\n      }\n\n      var nodeClick = _this.seriesModel.get('nodeClick', true);\n\n      if (!nodeClick) {\n        return;\n      }\n\n      var targetInfo = _this.findTarget(e.offsetX, e.offsetY);\n\n      if (!targetInfo) {\n        return;\n      }\n\n      var node = targetInfo.node;\n\n      if (node.getLayout().isLeafRoot) {\n        _this._rootToNode(targetInfo);\n      } else {\n        if (nodeClick === 'zoomToNode') {\n          _this._zoomToNode(targetInfo);\n        } else if (nodeClick === 'link') {\n          var itemModel = node.hostTree.data.getItemModel(node.dataIndex);\n          var link = itemModel.get('link', true);\n          var linkTarget = itemModel.get('target', true) || 'blank';\n          link && windowOpen(link, linkTarget);\n        }\n      }\n    }, this);\n  };\n\n  TreemapView.prototype._renderBreadcrumb = function (seriesModel, api, targetInfo) {\n    var _this = this;\n\n    if (!targetInfo) {\n      targetInfo = seriesModel.get('leafDepth', true) != null ? {\n        node: seriesModel.getViewRoot()\n      } // FIXME\n      // better way?\n      // Find breadcrumb tail on center of containerGroup.\n      : this.findTarget(api.getWidth() / 2, api.getHeight() / 2);\n\n      if (!targetInfo) {\n        targetInfo = {\n          node: seriesModel.getData().tree.root\n        };\n      }\n    }\n\n    (this._breadcrumb || (this._breadcrumb = new Breadcrumb(this.group))).render(seriesModel, api, targetInfo.node, function (node) {\n      if (_this._state !== 'animating') {\n        helper.aboveViewRoot(seriesModel.getViewRoot(), node) ? _this._rootToNode({\n          node: node\n        }) : _this._zoomToNode({\n          node: node\n        });\n      }\n    });\n  };\n  /**\r\n   * @override\r\n   */\n\n\n  TreemapView.prototype.remove = function () {\n    this._clearController();\n\n    this._containerGroup && this._containerGroup.removeAll();\n    this._storage = createStorage();\n    this._state = 'ready';\n    this._breadcrumb && this._breadcrumb.remove();\n  };\n\n  TreemapView.prototype.dispose = function () {\n    this._clearController();\n  };\n\n  TreemapView.prototype._zoomToNode = function (targetInfo) {\n    this.api.dispatchAction({\n      type: 'treemapZoomToNode',\n      from: this.uid,\n      seriesId: this.seriesModel.id,\n      targetNode: targetInfo.node\n    });\n  };\n\n  TreemapView.prototype._rootToNode = function (targetInfo) {\n    this.api.dispatchAction({\n      type: 'treemapRootToNode',\n      from: this.uid,\n      seriesId: this.seriesModel.id,\n      targetNode: targetInfo.node\n    });\n  };\n  /**\r\n   * @public\r\n   * @param {number} x Global coord x.\r\n   * @param {number} y Global coord y.\r\n   * @return {Object} info If not found, return undefined;\r\n   * @return {number} info.node Target node.\r\n   * @return {number} info.offsetX x refer to target node.\r\n   * @return {number} info.offsetY y refer to target node.\r\n   */\n\n\n  TreemapView.prototype.findTarget = function (x, y) {\n    var targetInfo;\n    var viewRoot = this.seriesModel.getViewRoot();\n    viewRoot.eachNode({\n      attr: 'viewChildren',\n      order: 'preorder'\n    }, function (node) {\n      var bgEl = this._storage.background[node.getRawIndex()]; // If invisible, there might be no element.\n\n\n      if (bgEl) {\n        var point = bgEl.transformCoordToLocal(x, y);\n        var shape = bgEl.shape; // For performance consideration, don't use 'getBoundingRect'.\n\n        if (shape.x <= point[0] && point[0] <= shape.x + shape.width && shape.y <= point[1] && point[1] <= shape.y + shape.height) {\n          targetInfo = {\n            node: node,\n            offsetX: point[0],\n            offsetY: point[1]\n          };\n        } else {\n          return false; // Suppress visit subtree.\n        }\n      }\n    }, this);\n    return targetInfo;\n  };\n\n  TreemapView.type = 'treemap';\n  return TreemapView;\n}(ChartView);\n/**\r\n * @inner\r\n */\n\n\nfunction createStorage() {\n  return {\n    nodeGroup: [],\n    background: [],\n    content: []\n  };\n}\n/**\r\n * @inner\r\n * @return Return undefined means do not travel further.\r\n */\n\n\nfunction renderNode(seriesModel, thisStorage, oldStorage, reRoot, lastsForAnimation, willInvisibleEls, thisNode, oldNode, parentGroup, depth) {\n  // Whether under viewRoot.\n  if (!thisNode) {\n    // Deleting nodes will be performed finally. This method just find\n    // element from old storage, or create new element, set them to new\n    // storage, and set styles.\n    return;\n  } // -------------------------------------------------------------------\n  // Start of closure variables available in \"Procedures in renderNode\".\n\n\n  var thisLayout = thisNode.getLayout();\n  var data = seriesModel.getData();\n  var nodeModel = thisNode.getModel(); // Only for enabling highlight/downplay. Clear firstly.\n  // Because some node will not be rendered.\n\n  data.setItemGraphicEl(thisNode.dataIndex, null);\n\n  if (!thisLayout || !thisLayout.isInView) {\n    return;\n  }\n\n  var thisWidth = thisLayout.width;\n  var thisHeight = thisLayout.height;\n  var borderWidth = thisLayout.borderWidth;\n  var thisInvisible = thisLayout.invisible;\n  var thisRawIndex = thisNode.getRawIndex();\n  var oldRawIndex = oldNode && oldNode.getRawIndex();\n  var thisViewChildren = thisNode.viewChildren;\n  var upperHeight = thisLayout.upperHeight;\n  var isParent = thisViewChildren && thisViewChildren.length;\n  var itemStyleNormalModel = nodeModel.getModel('itemStyle');\n  var itemStyleEmphasisModel = nodeModel.getModel(['emphasis', 'itemStyle']);\n  var itemStyleBlurModel = nodeModel.getModel(['blur', 'itemStyle']);\n  var itemStyleSelectModel = nodeModel.getModel(['select', 'itemStyle']);\n  var borderRadius = itemStyleNormalModel.get('borderRadius') || 0; // End of closure ariables available in \"Procedures in renderNode\".\n  // -----------------------------------------------------------------\n  // Node group\n\n  var group = giveGraphic('nodeGroup', Group);\n\n  if (!group) {\n    return;\n  }\n\n  parentGroup.add(group); // x,y are not set when el is above view root.\n\n  group.x = thisLayout.x || 0;\n  group.y = thisLayout.y || 0;\n  group.markRedraw();\n  inner(group).nodeWidth = thisWidth;\n  inner(group).nodeHeight = thisHeight;\n\n  if (thisLayout.isAboveViewRoot) {\n    return group;\n  } // Background\n\n\n  var bg = giveGraphic('background', Rect, depth, Z2_BG);\n  bg && renderBackground(group, bg, isParent && thisLayout.upperLabelHeight);\n  var emphasisModel = nodeModel.getModel('emphasis');\n  var focus = emphasisModel.get('focus');\n  var blurScope = emphasisModel.get('blurScope');\n  var isDisabled = emphasisModel.get('disabled');\n  var focusOrIndices = focus === 'ancestor' ? thisNode.getAncestorsIndices() : focus === 'descendant' ? thisNode.getDescendantIndices() : focus; // No children, render content.\n\n  if (isParent) {\n    // Because of the implementation about \"traverse\" in graphic hover style, we\n    // can not set hover listener on the \"group\" of non-leaf node. Otherwise the\n    // hover event from the descendents will be listenered.\n    if (isHighDownDispatcher(group)) {\n      setAsHighDownDispatcher(group, false);\n    }\n\n    if (bg) {\n      setAsHighDownDispatcher(bg, !isDisabled); // Only for enabling highlight/downplay.\n\n      data.setItemGraphicEl(thisNode.dataIndex, bg);\n      enableHoverFocus(bg, focusOrIndices, blurScope);\n    }\n  } else {\n    var content = giveGraphic('content', Rect, depth, Z2_CONTENT);\n    content && renderContent(group, content);\n    bg.disableMorphing = true;\n\n    if (bg && isHighDownDispatcher(bg)) {\n      setAsHighDownDispatcher(bg, false);\n    }\n\n    setAsHighDownDispatcher(group, !isDisabled); // Only for enabling highlight/downplay.\n\n    data.setItemGraphicEl(thisNode.dataIndex, group);\n    enableHoverFocus(group, focusOrIndices, blurScope);\n  }\n\n  return group; // ----------------------------\n  // | Procedures in renderNode |\n  // ----------------------------\n\n  function renderBackground(group, bg, useUpperLabel) {\n    var ecData = getECData(bg); // For tooltip.\n\n    ecData.dataIndex = thisNode.dataIndex;\n    ecData.seriesIndex = seriesModel.seriesIndex;\n    bg.setShape({\n      x: 0,\n      y: 0,\n      width: thisWidth,\n      height: thisHeight,\n      r: borderRadius\n    });\n\n    if (thisInvisible) {\n      // If invisible, do not set visual, otherwise the element will\n      // change immediately before animation. We think it is OK to\n      // remain its origin color when moving out of the view window.\n      processInvisible(bg);\n    } else {\n      bg.invisible = false;\n      var style = thisNode.getVisual('style');\n      var visualBorderColor = style.stroke;\n      var normalStyle = getItemStyleNormal(itemStyleNormalModel);\n      normalStyle.fill = visualBorderColor;\n      var emphasisStyle = getStateItemStyle(itemStyleEmphasisModel);\n      emphasisStyle.fill = itemStyleEmphasisModel.get('borderColor');\n      var blurStyle = getStateItemStyle(itemStyleBlurModel);\n      blurStyle.fill = itemStyleBlurModel.get('borderColor');\n      var selectStyle = getStateItemStyle(itemStyleSelectModel);\n      selectStyle.fill = itemStyleSelectModel.get('borderColor');\n\n      if (useUpperLabel) {\n        var upperLabelWidth = thisWidth - 2 * borderWidth;\n        prepareText( // PENDING: convert ZRColor to ColorString for text.\n        bg, visualBorderColor, style.opacity, {\n          x: borderWidth,\n          y: 0,\n          width: upperLabelWidth,\n          height: upperHeight\n        });\n      } // For old bg.\n      else {\n          bg.removeTextContent();\n        }\n\n      bg.setStyle(normalStyle);\n      bg.ensureState('emphasis').style = emphasisStyle;\n      bg.ensureState('blur').style = blurStyle;\n      bg.ensureState('select').style = selectStyle;\n      setDefaultStateProxy(bg);\n    }\n\n    group.add(bg);\n  }\n\n  function renderContent(group, content) {\n    var ecData = getECData(content); // For tooltip.\n\n    ecData.dataIndex = thisNode.dataIndex;\n    ecData.seriesIndex = seriesModel.seriesIndex;\n    var contentWidth = Math.max(thisWidth - 2 * borderWidth, 0);\n    var contentHeight = Math.max(thisHeight - 2 * borderWidth, 0);\n    content.culling = true;\n    content.setShape({\n      x: borderWidth,\n      y: borderWidth,\n      width: contentWidth,\n      height: contentHeight,\n      r: borderRadius\n    });\n\n    if (thisInvisible) {\n      // If invisible, do not set visual, otherwise the element will\n      // change immediately before animation. We think it is OK to\n      // remain its origin color when moving out of the view window.\n      processInvisible(content);\n    } else {\n      content.invisible = false;\n      var nodeStyle = thisNode.getVisual('style');\n      var visualColor = nodeStyle.fill;\n      var normalStyle = getItemStyleNormal(itemStyleNormalModel);\n      normalStyle.fill = visualColor;\n      normalStyle.decal = nodeStyle.decal;\n      var emphasisStyle = getStateItemStyle(itemStyleEmphasisModel);\n      var blurStyle = getStateItemStyle(itemStyleBlurModel);\n      var selectStyle = getStateItemStyle(itemStyleSelectModel); // PENDING: convert ZRColor to ColorString for text.\n\n      prepareText(content, visualColor, nodeStyle.opacity, null);\n      content.setStyle(normalStyle);\n      content.ensureState('emphasis').style = emphasisStyle;\n      content.ensureState('blur').style = blurStyle;\n      content.ensureState('select').style = selectStyle;\n      setDefaultStateProxy(content);\n    }\n\n    group.add(content);\n  }\n\n  function processInvisible(element) {\n    // Delay invisible setting utill animation finished,\n    // avoid element vanish suddenly before animation.\n    !element.invisible && willInvisibleEls.push(element);\n  }\n\n  function prepareText(rectEl, visualColor, visualOpacity, // Can be null/undefined\n  upperLabelRect) {\n    var normalLabelModel = nodeModel.getModel(upperLabelRect ? PATH_UPPERLABEL_NORMAL : PATH_LABEL_NOAMAL);\n    var defaultText = convertOptionIdName(nodeModel.get('name'), null);\n    var isShow = normalLabelModel.getShallow('show');\n    setLabelStyle(rectEl, getLabelStatesModels(nodeModel, upperLabelRect ? PATH_UPPERLABEL_NORMAL : PATH_LABEL_NOAMAL), {\n      defaultText: isShow ? defaultText : null,\n      inheritColor: visualColor,\n      defaultOpacity: visualOpacity,\n      labelFetcher: seriesModel,\n      labelDataIndex: thisNode.dataIndex\n    });\n    var textEl = rectEl.getTextContent();\n\n    if (!textEl) {\n      return;\n    }\n\n    var textStyle = textEl.style;\n    var textPadding = normalizeCssArray(textStyle.padding || 0);\n\n    if (upperLabelRect) {\n      rectEl.setTextConfig({\n        layoutRect: upperLabelRect\n      });\n      textEl.disableLabelLayout = true;\n    }\n\n    textEl.beforeUpdate = function () {\n      var width = Math.max((upperLabelRect ? upperLabelRect.width : rectEl.shape.width) - textPadding[1] - textPadding[3], 0);\n      var height = Math.max((upperLabelRect ? upperLabelRect.height : rectEl.shape.height) - textPadding[0] - textPadding[2], 0);\n\n      if (textStyle.width !== width || textStyle.height !== height) {\n        textEl.setStyle({\n          width: width,\n          height: height\n        });\n      }\n    };\n\n    textStyle.truncateMinChar = 2;\n    textStyle.lineOverflow = 'truncate';\n    addDrillDownIcon(textStyle, upperLabelRect, thisLayout);\n    var textEmphasisState = textEl.getState('emphasis');\n    addDrillDownIcon(textEmphasisState ? textEmphasisState.style : null, upperLabelRect, thisLayout);\n  }\n\n  function addDrillDownIcon(style, upperLabelRect, thisLayout) {\n    var text = style ? style.text : null;\n\n    if (!upperLabelRect && thisLayout.isLeafRoot && text != null) {\n      var iconChar = seriesModel.get('drillDownIcon', true);\n      style.text = iconChar ? iconChar + ' ' + text : text;\n    }\n  }\n\n  function giveGraphic(storageName, Ctor, depth, z) {\n    var element = oldRawIndex != null && oldStorage[storageName][oldRawIndex];\n    var lasts = lastsForAnimation[storageName];\n\n    if (element) {\n      // Remove from oldStorage\n      oldStorage[storageName][oldRawIndex] = null;\n      prepareAnimationWhenHasOld(lasts, element);\n    } // If invisible and no old element, do not create new element (for optimizing).\n    else if (!thisInvisible) {\n        element = new Ctor();\n\n        if (element instanceof Displayable) {\n          element.z2 = calculateZ2(depth, z);\n        }\n\n        prepareAnimationWhenNoOld(lasts, element);\n      } // Set to thisStorage\n\n\n    return thisStorage[storageName][thisRawIndex] = element;\n  }\n\n  function prepareAnimationWhenHasOld(lasts, element) {\n    var lastCfg = lasts[thisRawIndex] = {};\n\n    if (element instanceof Group) {\n      lastCfg.oldX = element.x;\n      lastCfg.oldY = element.y;\n    } else {\n      lastCfg.oldShape = extend({}, element.shape);\n    }\n  } // If a element is new, we need to find the animation start point carefully,\n  // otherwise it will looks strange when 'zoomToNode'.\n\n\n  function prepareAnimationWhenNoOld(lasts, element) {\n    var lastCfg = lasts[thisRawIndex] = {};\n    var parentNode = thisNode.parentNode;\n    var isGroup = element instanceof graphic.Group;\n\n    if (parentNode && (!reRoot || reRoot.direction === 'drillDown')) {\n      var parentOldX = 0;\n      var parentOldY = 0; // New nodes appear from right-bottom corner in 'zoomToNode' animation.\n      // For convenience, get old bounding rect from background.\n\n      var parentOldBg = lastsForAnimation.background[parentNode.getRawIndex()];\n\n      if (!reRoot && parentOldBg && parentOldBg.oldShape) {\n        parentOldX = parentOldBg.oldShape.width;\n        parentOldY = parentOldBg.oldShape.height;\n      } // When no parent old shape found, its parent is new too,\n      // so we can just use {x:0, y:0}.\n\n\n      if (isGroup) {\n        lastCfg.oldX = 0;\n        lastCfg.oldY = parentOldY;\n      } else {\n        lastCfg.oldShape = {\n          x: parentOldX,\n          y: parentOldY,\n          width: 0,\n          height: 0\n        };\n      }\n    } // Fade in, user can be aware that these nodes are new.\n\n\n    lastCfg.fadein = !isGroup;\n  }\n} // We cannot set all background with the same z, because the behaviour of\n// drill down and roll up differ background creation sequence from tree\n// hierarchy sequence, which cause lower background elements to overlap\n// upper ones. So we calculate z based on depth.\n// Moreover, we try to shrink down z interval to [0, 1] to avoid that\n// treemap with large z overlaps other components.\n\n\nfunction calculateZ2(depth, z2InLevel) {\n  return depth * Z2_BASE + z2InLevel;\n}\n\nexport default TreemapView;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport * as zrUtil from 'zrender/lib/core/util.js';\nimport * as zrColor from 'zrender/lib/tool/color.js';\nimport { linearMap } from '../util/number.js';\nimport { warn } from '../util/log.js';\nvar each = zrUtil.each;\nvar isObject = zrUtil.isObject;\nvar CATEGORY_DEFAULT_VISUAL_INDEX = -1;\n\nvar VisualMapping =\n/** @class */\nfunction () {\n  function VisualMapping(option) {\n    var mappingMethod = option.mappingMethod;\n    var visualType = option.type;\n    var thisOption = this.option = zrUtil.clone(option);\n    this.type = visualType;\n    this.mappingMethod = mappingMethod;\n    this._normalizeData = normalizers[mappingMethod];\n    var visualHandler = VisualMapping.visualHandlers[visualType];\n    this.applyVisual = visualHandler.applyVisual;\n    this.getColorMapper = visualHandler.getColorMapper;\n    this._normalizedToVisual = visualHandler._normalizedToVisual[mappingMethod];\n\n    if (mappingMethod === 'piecewise') {\n      normalizeVisualRange(thisOption);\n      preprocessForPiecewise(thisOption);\n    } else if (mappingMethod === 'category') {\n      thisOption.categories ? preprocessForSpecifiedCategory(thisOption) // categories is ordinal when thisOption.categories not specified,\n      // which need no more preprocess except normalize visual.\n      : normalizeVisualRange(thisOption, true);\n    } else {\n      // mappingMethod === 'linear' or 'fixed'\n      zrUtil.assert(mappingMethod !== 'linear' || thisOption.dataExtent);\n      normalizeVisualRange(thisOption);\n    }\n  }\n\n  VisualMapping.prototype.mapValueToVisual = function (value) {\n    var normalized = this._normalizeData(value);\n\n    return this._normalizedToVisual(normalized, value);\n  };\n\n  VisualMapping.prototype.getNormalizer = function () {\n    return zrUtil.bind(this._normalizeData, this);\n  };\n  /**\r\n   * List available visual types.\r\n   *\r\n   * @public\r\n   * @return {Array.<string>}\r\n   */\n\n\n  VisualMapping.listVisualTypes = function () {\n    return zrUtil.keys(VisualMapping.visualHandlers);\n  }; // /**\n  //  * @public\n  //  */\n  // static addVisualHandler(name, handler) {\n  //     visualHandlers[name] = handler;\n  // }\n\n  /**\r\n   * @public\r\n   */\n\n\n  VisualMapping.isValidType = function (visualType) {\n    return VisualMapping.visualHandlers.hasOwnProperty(visualType);\n  };\n  /**\r\n   * Convenient method.\r\n   * Visual can be Object or Array or primary type.\r\n   */\n\n\n  VisualMapping.eachVisual = function (visual, callback, context) {\n    if (zrUtil.isObject(visual)) {\n      zrUtil.each(visual, callback, context);\n    } else {\n      callback.call(context, visual);\n    }\n  };\n\n  VisualMapping.mapVisual = function (visual, callback, context) {\n    var isPrimary;\n    var newVisual = zrUtil.isArray(visual) ? [] : zrUtil.isObject(visual) ? {} : (isPrimary = true, null);\n    VisualMapping.eachVisual(visual, function (v, key) {\n      var newVal = callback.call(context, v, key);\n      isPrimary ? newVisual = newVal : newVisual[key] = newVal;\n    });\n    return newVisual;\n  };\n  /**\r\n   * Retrieve visual properties from given object.\r\n   */\n\n\n  VisualMapping.retrieveVisuals = function (obj) {\n    var ret = {};\n    var hasVisual;\n    obj && each(VisualMapping.visualHandlers, function (h, visualType) {\n      if (obj.hasOwnProperty(visualType)) {\n        ret[visualType] = obj[visualType];\n        hasVisual = true;\n      }\n    });\n    return hasVisual ? ret : null;\n  };\n  /**\r\n   * Give order to visual types, considering colorSaturation, colorAlpha depends on color.\r\n   *\r\n   * @public\r\n   * @param {(Object|Array)} visualTypes If Object, like: {color: ..., colorSaturation: ...}\r\n   *                                     IF Array, like: ['color', 'symbol', 'colorSaturation']\r\n   * @return {Array.<string>} Sorted visual types.\r\n   */\n\n\n  VisualMapping.prepareVisualTypes = function (visualTypes) {\n    if (zrUtil.isArray(visualTypes)) {\n      visualTypes = visualTypes.slice();\n    } else if (isObject(visualTypes)) {\n      var types_1 = [];\n      each(visualTypes, function (item, type) {\n        types_1.push(type);\n      });\n      visualTypes = types_1;\n    } else {\n      return [];\n    }\n\n    visualTypes.sort(function (type1, type2) {\n      // color should be front of colorSaturation, colorAlpha, ...\n      // symbol and symbolSize do not matter.\n      return type2 === 'color' && type1 !== 'color' && type1.indexOf('color') === 0 ? 1 : -1;\n    });\n    return visualTypes;\n  };\n  /**\r\n   * 'color', 'colorSaturation', 'colorAlpha', ... are depends on 'color'.\r\n   * Other visuals are only depends on themself.\r\n   */\n\n\n  VisualMapping.dependsOn = function (visualType1, visualType2) {\n    return visualType2 === 'color' ? !!(visualType1 && visualType1.indexOf(visualType2) === 0) : visualType1 === visualType2;\n  };\n  /**\r\n   * @param value\r\n   * @param pieceList [{value: ..., interval: [min, max]}, ...]\r\n   *                         Always from small to big.\r\n   * @param findClosestWhenOutside Default to be false\r\n   * @return index\r\n   */\n\n\n  VisualMapping.findPieceIndex = function (value, pieceList, findClosestWhenOutside) {\n    var possibleI;\n    var abs = Infinity; // value has the higher priority.\n\n    for (var i = 0, len = pieceList.length; i < len; i++) {\n      var pieceValue = pieceList[i].value;\n\n      if (pieceValue != null) {\n        if (pieceValue === value // FIXME\n        // It is supposed to compare value according to value type of dimension,\n        // but currently value type can exactly be string or number.\n        // Compromise for numeric-like string (like '12'), especially\n        // in the case that visualMap.categories is ['22', '33'].\n        || zrUtil.isString(pieceValue) && pieceValue === value + '') {\n          return i;\n        }\n\n        findClosestWhenOutside && updatePossible(pieceValue, i);\n      }\n    }\n\n    for (var i = 0, len = pieceList.length; i < len; i++) {\n      var piece = pieceList[i];\n      var interval = piece.interval;\n      var close_1 = piece.close;\n\n      if (interval) {\n        if (interval[0] === -Infinity) {\n          if (littleThan(close_1[1], value, interval[1])) {\n            return i;\n          }\n        } else if (interval[1] === Infinity) {\n          if (littleThan(close_1[0], interval[0], value)) {\n            return i;\n          }\n        } else if (littleThan(close_1[0], interval[0], value) && littleThan(close_1[1], value, interval[1])) {\n          return i;\n        }\n\n        findClosestWhenOutside && updatePossible(interval[0], i);\n        findClosestWhenOutside && updatePossible(interval[1], i);\n      }\n    }\n\n    if (findClosestWhenOutside) {\n      return value === Infinity ? pieceList.length - 1 : value === -Infinity ? 0 : possibleI;\n    }\n\n    function updatePossible(val, index) {\n      var newAbs = Math.abs(val - value);\n\n      if (newAbs < abs) {\n        abs = newAbs;\n        possibleI = index;\n      }\n    }\n  };\n\n  VisualMapping.visualHandlers = {\n    color: {\n      applyVisual: makeApplyVisual('color'),\n      getColorMapper: function () {\n        var thisOption = this.option;\n        return zrUtil.bind(thisOption.mappingMethod === 'category' ? function (value, isNormalized) {\n          !isNormalized && (value = this._normalizeData(value));\n          return doMapCategory.call(this, value);\n        } : function (value, isNormalized, out) {\n          // If output rgb array\n          // which will be much faster and useful in pixel manipulation\n          var returnRGBArray = !!out;\n          !isNormalized && (value = this._normalizeData(value));\n          out = zrColor.fastLerp(value, thisOption.parsedVisual, out);\n          return returnRGBArray ? out : zrColor.stringify(out, 'rgba');\n        }, this);\n      },\n      _normalizedToVisual: {\n        linear: function (normalized) {\n          return zrColor.stringify(zrColor.fastLerp(normalized, this.option.parsedVisual), 'rgba');\n        },\n        category: doMapCategory,\n        piecewise: function (normalized, value) {\n          var result = getSpecifiedVisual.call(this, value);\n\n          if (result == null) {\n            result = zrColor.stringify(zrColor.fastLerp(normalized, this.option.parsedVisual), 'rgba');\n          }\n\n          return result;\n        },\n        fixed: doMapFixed\n      }\n    },\n    colorHue: makePartialColorVisualHandler(function (color, value) {\n      return zrColor.modifyHSL(color, value);\n    }),\n    colorSaturation: makePartialColorVisualHandler(function (color, value) {\n      return zrColor.modifyHSL(color, null, value);\n    }),\n    colorLightness: makePartialColorVisualHandler(function (color, value) {\n      return zrColor.modifyHSL(color, null, null, value);\n    }),\n    colorAlpha: makePartialColorVisualHandler(function (color, value) {\n      return zrColor.modifyAlpha(color, value);\n    }),\n    decal: {\n      applyVisual: makeApplyVisual('decal'),\n      _normalizedToVisual: {\n        linear: null,\n        category: doMapCategory,\n        piecewise: null,\n        fixed: null\n      }\n    },\n    opacity: {\n      applyVisual: makeApplyVisual('opacity'),\n      _normalizedToVisual: createNormalizedToNumericVisual([0, 1])\n    },\n    liftZ: {\n      applyVisual: makeApplyVisual('liftZ'),\n      _normalizedToVisual: {\n        linear: doMapFixed,\n        category: doMapFixed,\n        piecewise: doMapFixed,\n        fixed: doMapFixed\n      }\n    },\n    symbol: {\n      applyVisual: function (value, getter, setter) {\n        var symbolCfg = this.mapValueToVisual(value);\n        setter('symbol', symbolCfg);\n      },\n      _normalizedToVisual: {\n        linear: doMapToArray,\n        category: doMapCategory,\n        piecewise: function (normalized, value) {\n          var result = getSpecifiedVisual.call(this, value);\n\n          if (result == null) {\n            result = doMapToArray.call(this, normalized);\n          }\n\n          return result;\n        },\n        fixed: doMapFixed\n      }\n    },\n    symbolSize: {\n      applyVisual: makeApplyVisual('symbolSize'),\n      _normalizedToVisual: createNormalizedToNumericVisual([0, 1])\n    }\n  };\n  return VisualMapping;\n}();\n\nfunction preprocessForPiecewise(thisOption) {\n  var pieceList = thisOption.pieceList;\n  thisOption.hasSpecialVisual = false;\n  zrUtil.each(pieceList, function (piece, index) {\n    piece.originIndex = index; // piece.visual is \"result visual value\" but not\n    // a visual range, so it does not need to be normalized.\n\n    if (piece.visual != null) {\n      thisOption.hasSpecialVisual = true;\n    }\n  });\n}\n\nfunction preprocessForSpecifiedCategory(thisOption) {\n  // Hash categories.\n  var categories = thisOption.categories;\n  var categoryMap = thisOption.categoryMap = {};\n  var visual = thisOption.visual;\n  each(categories, function (cate, index) {\n    categoryMap[cate] = index;\n  }); // Process visual map input.\n\n  if (!zrUtil.isArray(visual)) {\n    var visualArr_1 = [];\n\n    if (zrUtil.isObject(visual)) {\n      each(visual, function (v, cate) {\n        var index = categoryMap[cate];\n        visualArr_1[index != null ? index : CATEGORY_DEFAULT_VISUAL_INDEX] = v;\n      });\n    } else {\n      // Is primary type, represents default visual.\n      visualArr_1[CATEGORY_DEFAULT_VISUAL_INDEX] = visual;\n    }\n\n    visual = setVisualToOption(thisOption, visualArr_1);\n  } // Remove categories that has no visual,\n  // then we can mapping them to CATEGORY_DEFAULT_VISUAL_INDEX.\n\n\n  for (var i = categories.length - 1; i >= 0; i--) {\n    if (visual[i] == null) {\n      delete categoryMap[categories[i]];\n      categories.pop();\n    }\n  }\n}\n\nfunction normalizeVisualRange(thisOption, isCategory) {\n  var visual = thisOption.visual;\n  var visualArr = [];\n\n  if (zrUtil.isObject(visual)) {\n    each(visual, function (v) {\n      visualArr.push(v);\n    });\n  } else if (visual != null) {\n    visualArr.push(visual);\n  }\n\n  var doNotNeedPair = {\n    color: 1,\n    symbol: 1\n  };\n\n  if (!isCategory && visualArr.length === 1 && !doNotNeedPair.hasOwnProperty(thisOption.type)) {\n    // Do not care visualArr.length === 0, which is illegal.\n    visualArr[1] = visualArr[0];\n  }\n\n  setVisualToOption(thisOption, visualArr);\n}\n\nfunction makePartialColorVisualHandler(applyValue) {\n  return {\n    applyVisual: function (value, getter, setter) {\n      // Only used in HSL\n      var colorChannel = this.mapValueToVisual(value); // Must not be array value\n\n      setter('color', applyValue(getter('color'), colorChannel));\n    },\n    _normalizedToVisual: createNormalizedToNumericVisual([0, 1])\n  };\n}\n\nfunction doMapToArray(normalized) {\n  var visual = this.option.visual;\n  return visual[Math.round(linearMap(normalized, [0, 1], [0, visual.length - 1], true))] || {}; // TODO {}?\n}\n\nfunction makeApplyVisual(visualType) {\n  return function (value, getter, setter) {\n    setter(visualType, this.mapValueToVisual(value));\n  };\n}\n\nfunction doMapCategory(normalized) {\n  var visual = this.option.visual;\n  return visual[this.option.loop && normalized !== CATEGORY_DEFAULT_VISUAL_INDEX ? normalized % visual.length : normalized];\n}\n\nfunction doMapFixed() {\n  // visual will be convert to array.\n  return this.option.visual[0];\n}\n/**\r\n * Create mapped to numeric visual\r\n */\n\n\nfunction createNormalizedToNumericVisual(sourceExtent) {\n  return {\n    linear: function (normalized) {\n      return linearMap(normalized, sourceExtent, this.option.visual, true);\n    },\n    category: doMapCategory,\n    piecewise: function (normalized, value) {\n      var result = getSpecifiedVisual.call(this, value);\n\n      if (result == null) {\n        result = linearMap(normalized, sourceExtent, this.option.visual, true);\n      }\n\n      return result;\n    },\n    fixed: doMapFixed\n  };\n}\n\nfunction getSpecifiedVisual(value) {\n  var thisOption = this.option;\n  var pieceList = thisOption.pieceList;\n\n  if (thisOption.hasSpecialVisual) {\n    var pieceIndex = VisualMapping.findPieceIndex(value, pieceList);\n    var piece = pieceList[pieceIndex];\n\n    if (piece && piece.visual) {\n      return piece.visual[this.type];\n    }\n  }\n}\n\nfunction setVisualToOption(thisOption, visualArr) {\n  thisOption.visual = visualArr;\n\n  if (thisOption.type === 'color') {\n    thisOption.parsedVisual = zrUtil.map(visualArr, function (item) {\n      var color = zrColor.parse(item);\n\n      if (!color && process.env.NODE_ENV !== 'production') {\n        warn(\"'\" + item + \"' is an illegal color, fallback to '#000000'\", true);\n      }\n\n      return color || [0, 0, 0, 1];\n    });\n  }\n\n  return visualArr;\n}\n/**\r\n * Normalizers by mapping methods.\r\n */\n\n\nvar normalizers = {\n  linear: function (value) {\n    return linearMap(value, this.option.dataExtent, [0, 1], true);\n  },\n  piecewise: function (value) {\n    var pieceList = this.option.pieceList;\n    var pieceIndex = VisualMapping.findPieceIndex(value, pieceList, true);\n\n    if (pieceIndex != null) {\n      return linearMap(pieceIndex, [0, pieceList.length - 1], [0, 1], true);\n    }\n  },\n  category: function (value) {\n    var index = this.option.categories ? this.option.categoryMap[value] : value; // ordinal value\n\n    return index == null ? CATEGORY_DEFAULT_VISUAL_INDEX : index;\n  },\n  fixed: zrUtil.noop\n};\n\nfunction littleThan(close, a, b) {\n  return close ? a <= b : a < b;\n}\n\nexport default VisualMapping;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport VisualMapping from '../../visual/VisualMapping.js';\nimport { each, extend, isArray } from 'zrender/lib/core/util.js';\nimport { modifyHSL, modifyAlpha } from 'zrender/lib/tool/color.js';\nimport { makeInner } from '../../util/model.js';\nvar ITEM_STYLE_NORMAL = 'itemStyle';\nvar inner = makeInner();\nexport default {\n  seriesType: 'treemap',\n  reset: function (seriesModel) {\n    var tree = seriesModel.getData().tree;\n    var root = tree.root;\n\n    if (root.isRemoved()) {\n      return;\n    }\n\n    travelTree(root, // Visual should calculate from tree root but not view root.\n    {}, seriesModel.getViewRoot().getAncestors(), seriesModel);\n  }\n};\n\nfunction travelTree(node, designatedVisual, viewRootAncestors, seriesModel) {\n  var nodeModel = node.getModel();\n  var nodeLayout = node.getLayout();\n  var data = node.hostTree.data; // Optimize\n\n  if (!nodeLayout || nodeLayout.invisible || !nodeLayout.isInView) {\n    return;\n  }\n\n  var nodeItemStyleModel = nodeModel.getModel(ITEM_STYLE_NORMAL);\n  var visuals = buildVisuals(nodeItemStyleModel, designatedVisual, seriesModel);\n  var existsStyle = data.ensureUniqueItemVisual(node.dataIndex, 'style'); // calculate border color\n\n  var borderColor = nodeItemStyleModel.get('borderColor');\n  var borderColorSaturation = nodeItemStyleModel.get('borderColorSaturation');\n  var thisNodeColor;\n\n  if (borderColorSaturation != null) {\n    // For performance, do not always execute 'calculateColor'.\n    thisNodeColor = calculateColor(visuals);\n    borderColor = calculateBorderColor(borderColorSaturation, thisNodeColor);\n  }\n\n  existsStyle.stroke = borderColor;\n  var viewChildren = node.viewChildren;\n\n  if (!viewChildren || !viewChildren.length) {\n    thisNodeColor = calculateColor(visuals); // Apply visual to this node.\n\n    existsStyle.fill = thisNodeColor;\n  } else {\n    var mapping_1 = buildVisualMapping(node, nodeModel, nodeLayout, nodeItemStyleModel, visuals, viewChildren); // Designate visual to children.\n\n    each(viewChildren, function (child, index) {\n      // If higher than viewRoot, only ancestors of viewRoot is needed to visit.\n      if (child.depth >= viewRootAncestors.length || child === viewRootAncestors[child.depth]) {\n        var childVisual = mapVisual(nodeModel, visuals, child, index, mapping_1, seriesModel);\n        travelTree(child, childVisual, viewRootAncestors, seriesModel);\n      }\n    });\n  }\n}\n\nfunction buildVisuals(nodeItemStyleModel, designatedVisual, seriesModel) {\n  var visuals = extend({}, designatedVisual);\n  var designatedVisualItemStyle = seriesModel.designatedVisualItemStyle;\n  each(['color', 'colorAlpha', 'colorSaturation'], function (visualName) {\n    // Priority: thisNode > thisLevel > parentNodeDesignated > seriesModel\n    designatedVisualItemStyle[visualName] = designatedVisual[visualName];\n    var val = nodeItemStyleModel.get(visualName);\n    designatedVisualItemStyle[visualName] = null;\n    val != null && (visuals[visualName] = val);\n  });\n  return visuals;\n}\n\nfunction calculateColor(visuals) {\n  var color = getValueVisualDefine(visuals, 'color');\n\n  if (color) {\n    var colorAlpha = getValueVisualDefine(visuals, 'colorAlpha');\n    var colorSaturation = getValueVisualDefine(visuals, 'colorSaturation');\n\n    if (colorSaturation) {\n      color = modifyHSL(color, null, null, colorSaturation);\n    }\n\n    if (colorAlpha) {\n      color = modifyAlpha(color, colorAlpha);\n    }\n\n    return color;\n  }\n}\n\nfunction calculateBorderColor(borderColorSaturation, thisNodeColor) {\n  return thisNodeColor != null // Can only be string\n  ? modifyHSL(thisNodeColor, null, null, borderColorSaturation) : null;\n}\n\nfunction getValueVisualDefine(visuals, name) {\n  var value = visuals[name];\n\n  if (value != null && value !== 'none') {\n    return value;\n  }\n}\n\nfunction buildVisualMapping(node, nodeModel, nodeLayout, nodeItemStyleModel, visuals, viewChildren) {\n  if (!viewChildren || !viewChildren.length) {\n    return;\n  }\n\n  var rangeVisual = getRangeVisual(nodeModel, 'color') || visuals.color != null && visuals.color !== 'none' && (getRangeVisual(nodeModel, 'colorAlpha') || getRangeVisual(nodeModel, 'colorSaturation'));\n\n  if (!rangeVisual) {\n    return;\n  }\n\n  var visualMin = nodeModel.get('visualMin');\n  var visualMax = nodeModel.get('visualMax');\n  var dataExtent = nodeLayout.dataExtent.slice();\n  visualMin != null && visualMin < dataExtent[0] && (dataExtent[0] = visualMin);\n  visualMax != null && visualMax > dataExtent[1] && (dataExtent[1] = visualMax);\n  var colorMappingBy = nodeModel.get('colorMappingBy');\n  var opt = {\n    type: rangeVisual.name,\n    dataExtent: dataExtent,\n    visual: rangeVisual.range\n  };\n\n  if (opt.type === 'color' && (colorMappingBy === 'index' || colorMappingBy === 'id')) {\n    opt.mappingMethod = 'category';\n    opt.loop = true; // categories is ordinal, so do not set opt.categories.\n  } else {\n    opt.mappingMethod = 'linear';\n  }\n\n  var mapping = new VisualMapping(opt);\n  inner(mapping).drColorMappingBy = colorMappingBy;\n  return mapping;\n} // Notice: If we don't have the attribute 'colorRange', but only use\n// attribute 'color' to represent both concepts of 'colorRange' and 'color',\n// (It means 'colorRange' when 'color' is Array, means 'color' when not array),\n// this problem will be encountered:\n// If a level-1 node doesn't have children, and its siblings have children,\n// and colorRange is set on level-1, then the node cannot be colored.\n// So we separate 'colorRange' and 'color' to different attributes.\n\n\nfunction getRangeVisual(nodeModel, name) {\n  // 'colorRange', 'colorARange', 'colorSRange'.\n  // If not exists on this node, fetch from levels and series.\n  var range = nodeModel.get(name);\n  return isArray(range) && range.length ? {\n    name: name,\n    range: range\n  } : null;\n}\n\nfunction mapVisual(nodeModel, visuals, child, index, mapping, seriesModel) {\n  var childVisuals = extend({}, visuals);\n\n  if (mapping) {\n    // Only support color, colorAlpha, colorSaturation.\n    var mappingType = mapping.type;\n    var colorMappingBy = mappingType === 'color' && inner(mapping).drColorMappingBy;\n    var value = colorMappingBy === 'index' ? index : colorMappingBy === 'id' ? seriesModel.mapIdToIndex(child.getId()) : child.getValue(nodeModel.get('visualDimension'));\n    childVisuals[mappingType] = mapping.mapValueToVisual(value);\n  }\n\n  return childVisuals;\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\n\n/*\r\n* A third-party license is embedded for some of the code in this file:\r\n* The treemap layout implementation was originally copied from\r\n* \"d3.js\" with some modifications made for this project.\r\n* (See more details in the comment of the method \"squarify\" below.)\r\n* The use of the source code of this file is also subject to the terms\r\n* and consitions of the license of \"d3.js\" (BSD-3Clause, see\r\n* </licenses/LICENSE-d3>).\r\n*/\nimport * as zrUtil from 'zrender/lib/core/util.js';\nimport BoundingRect from 'zrender/lib/core/BoundingRect.js';\nimport { parsePercent, MAX_SAFE_INTEGER } from '../../util/number.js';\nimport * as layout from '../../util/layout.js';\nimport * as helper from '../helper/treeHelper.js';\nvar mathMax = Math.max;\nvar mathMin = Math.min;\nvar retrieveValue = zrUtil.retrieve;\nvar each = zrUtil.each;\nvar PATH_BORDER_WIDTH = ['itemStyle', 'borderWidth'];\nvar PATH_GAP_WIDTH = ['itemStyle', 'gapWidth'];\nvar PATH_UPPER_LABEL_SHOW = ['upperLabel', 'show'];\nvar PATH_UPPER_LABEL_HEIGHT = ['upperLabel', 'height'];\n;\n/**\r\n * @public\r\n */\n\nexport default {\n  seriesType: 'treemap',\n  reset: function (seriesModel, ecModel, api, payload) {\n    // Layout result in each node:\n    // {x, y, width, height, area, borderWidth}\n    var ecWidth = api.getWidth();\n    var ecHeight = api.getHeight();\n    var seriesOption = seriesModel.option;\n    var layoutInfo = layout.getLayoutRect(seriesModel.getBoxLayoutParams(), {\n      width: api.getWidth(),\n      height: api.getHeight()\n    });\n    var size = seriesOption.size || []; // Compatible with ec2.\n\n    var containerWidth = parsePercent(retrieveValue(layoutInfo.width, size[0]), ecWidth);\n    var containerHeight = parsePercent(retrieveValue(layoutInfo.height, size[1]), ecHeight); // Fetch payload info.\n\n    var payloadType = payload && payload.type;\n    var types = ['treemapZoomToNode', 'treemapRootToNode'];\n    var targetInfo = helper.retrieveTargetInfo(payload, types, seriesModel);\n    var rootRect = payloadType === 'treemapRender' || payloadType === 'treemapMove' ? payload.rootRect : null;\n    var viewRoot = seriesModel.getViewRoot();\n    var viewAbovePath = helper.getPathToRoot(viewRoot);\n\n    if (payloadType !== 'treemapMove') {\n      var rootSize = payloadType === 'treemapZoomToNode' ? estimateRootSize(seriesModel, targetInfo, viewRoot, containerWidth, containerHeight) : rootRect ? [rootRect.width, rootRect.height] : [containerWidth, containerHeight];\n      var sort_1 = seriesOption.sort;\n\n      if (sort_1 && sort_1 !== 'asc' && sort_1 !== 'desc') {\n        // Default to be desc order.\n        sort_1 = 'desc';\n      }\n\n      var options = {\n        squareRatio: seriesOption.squareRatio,\n        sort: sort_1,\n        leafDepth: seriesOption.leafDepth\n      }; // layout should be cleared because using updateView but not update.\n\n      viewRoot.hostTree.clearLayouts(); // TODO\n      // optimize: if out of view clip, do not layout.\n      // But take care that if do not render node out of view clip,\n      // how to calculate start po\n\n      var viewRootLayout_1 = {\n        x: 0,\n        y: 0,\n        width: rootSize[0],\n        height: rootSize[1],\n        area: rootSize[0] * rootSize[1]\n      };\n      viewRoot.setLayout(viewRootLayout_1);\n      squarify(viewRoot, options, false, 0); // Supplement layout.\n\n      viewRootLayout_1 = viewRoot.getLayout();\n      each(viewAbovePath, function (node, index) {\n        var childValue = (viewAbovePath[index + 1] || viewRoot).getValue();\n        node.setLayout(zrUtil.extend({\n          dataExtent: [childValue, childValue],\n          borderWidth: 0,\n          upperHeight: 0\n        }, viewRootLayout_1));\n      });\n    }\n\n    var treeRoot = seriesModel.getData().tree.root;\n    treeRoot.setLayout(calculateRootPosition(layoutInfo, rootRect, targetInfo), true);\n    seriesModel.setLayoutInfo(layoutInfo); // FIXME\n    // 现在没有clip功能，暂时取ec高宽。\n\n    prunning(treeRoot, // Transform to base element coordinate system.\n    new BoundingRect(-layoutInfo.x, -layoutInfo.y, ecWidth, ecHeight), viewAbovePath, viewRoot, 0);\n  }\n};\n/**\r\n * Layout treemap with squarify algorithm.\r\n * The original presentation of this algorithm\r\n * was made by Mark Bruls, Kees Huizing, and Jarke J. van Wijk\r\n * <https://graphics.ethz.ch/teaching/scivis_common/Literature/squarifiedTreeMaps.pdf>.\r\n * The implementation of this algorithm was originally copied from \"d3.js\"\r\n * <https://github.com/d3/d3/blob/9cc9a875e636a1dcf36cc1e07bdf77e1ad6e2c74/src/layout/treemap.js>\r\n * with some modifications made for this program.\r\n * See the license statement at the head of this file.\r\n *\r\n * @protected\r\n * @param {module:echarts/data/Tree~TreeNode} node\r\n * @param {Object} options\r\n * @param {string} options.sort 'asc' or 'desc'\r\n * @param {number} options.squareRatio\r\n * @param {boolean} hideChildren\r\n * @param {number} depth\r\n */\n\nfunction squarify(node, options, hideChildren, depth) {\n  var width;\n  var height;\n\n  if (node.isRemoved()) {\n    return;\n  }\n\n  var thisLayout = node.getLayout();\n  width = thisLayout.width;\n  height = thisLayout.height; // Considering border and gap\n\n  var nodeModel = node.getModel();\n  var borderWidth = nodeModel.get(PATH_BORDER_WIDTH);\n  var halfGapWidth = nodeModel.get(PATH_GAP_WIDTH) / 2;\n  var upperLabelHeight = getUpperLabelHeight(nodeModel);\n  var upperHeight = Math.max(borderWidth, upperLabelHeight);\n  var layoutOffset = borderWidth - halfGapWidth;\n  var layoutOffsetUpper = upperHeight - halfGapWidth;\n  node.setLayout({\n    borderWidth: borderWidth,\n    upperHeight: upperHeight,\n    upperLabelHeight: upperLabelHeight\n  }, true);\n  width = mathMax(width - 2 * layoutOffset, 0);\n  height = mathMax(height - layoutOffset - layoutOffsetUpper, 0);\n  var totalArea = width * height;\n  var viewChildren = initChildren(node, nodeModel, totalArea, options, hideChildren, depth);\n\n  if (!viewChildren.length) {\n    return;\n  }\n\n  var rect = {\n    x: layoutOffset,\n    y: layoutOffsetUpper,\n    width: width,\n    height: height\n  };\n  var rowFixedLength = mathMin(width, height);\n  var best = Infinity; // the best row score so far\n\n  var row = [];\n  row.area = 0;\n\n  for (var i = 0, len = viewChildren.length; i < len;) {\n    var child = viewChildren[i];\n    row.push(child);\n    row.area += child.getLayout().area;\n    var score = worst(row, rowFixedLength, options.squareRatio); // continue with this orientation\n\n    if (score <= best) {\n      i++;\n      best = score;\n    } // abort, and try a different orientation\n    else {\n        row.area -= row.pop().getLayout().area;\n        position(row, rowFixedLength, rect, halfGapWidth, false);\n        rowFixedLength = mathMin(rect.width, rect.height);\n        row.length = row.area = 0;\n        best = Infinity;\n      }\n  }\n\n  if (row.length) {\n    position(row, rowFixedLength, rect, halfGapWidth, true);\n  }\n\n  if (!hideChildren) {\n    var childrenVisibleMin = nodeModel.get('childrenVisibleMin');\n\n    if (childrenVisibleMin != null && totalArea < childrenVisibleMin) {\n      hideChildren = true;\n    }\n  }\n\n  for (var i = 0, len = viewChildren.length; i < len; i++) {\n    squarify(viewChildren[i], options, hideChildren, depth + 1);\n  }\n}\n/**\r\n * Set area to each child, and calculate data extent for visual coding.\r\n */\n\n\nfunction initChildren(node, nodeModel, totalArea, options, hideChildren, depth) {\n  var viewChildren = node.children || [];\n  var orderBy = options.sort;\n  orderBy !== 'asc' && orderBy !== 'desc' && (orderBy = null);\n  var overLeafDepth = options.leafDepth != null && options.leafDepth <= depth; // leafDepth has higher priority.\n\n  if (hideChildren && !overLeafDepth) {\n    return node.viewChildren = [];\n  } // Sort children, order by desc.\n\n\n  viewChildren = zrUtil.filter(viewChildren, function (child) {\n    return !child.isRemoved();\n  });\n  sort(viewChildren, orderBy);\n  var info = statistic(nodeModel, viewChildren, orderBy);\n\n  if (info.sum === 0) {\n    return node.viewChildren = [];\n  }\n\n  info.sum = filterByThreshold(nodeModel, totalArea, info.sum, orderBy, viewChildren);\n\n  if (info.sum === 0) {\n    return node.viewChildren = [];\n  } // Set area to each child.\n\n\n  for (var i = 0, len = viewChildren.length; i < len; i++) {\n    var area = viewChildren[i].getValue() / info.sum * totalArea; // Do not use setLayout({...}, true), because it is needed to clear last layout.\n\n    viewChildren[i].setLayout({\n      area: area\n    });\n  }\n\n  if (overLeafDepth) {\n    viewChildren.length && node.setLayout({\n      isLeafRoot: true\n    }, true);\n    viewChildren.length = 0;\n  }\n\n  node.viewChildren = viewChildren;\n  node.setLayout({\n    dataExtent: info.dataExtent\n  }, true);\n  return viewChildren;\n}\n/**\r\n * Consider 'visibleMin'. Modify viewChildren and get new sum.\r\n */\n\n\nfunction filterByThreshold(nodeModel, totalArea, sum, orderBy, orderedChildren) {\n  // visibleMin is not supported yet when no option.sort.\n  if (!orderBy) {\n    return sum;\n  }\n\n  var visibleMin = nodeModel.get('visibleMin');\n  var len = orderedChildren.length;\n  var deletePoint = len; // Always travel from little value to big value.\n\n  for (var i = len - 1; i >= 0; i--) {\n    var value = orderedChildren[orderBy === 'asc' ? len - i - 1 : i].getValue();\n\n    if (value / sum * totalArea < visibleMin) {\n      deletePoint = i;\n      sum -= value;\n    }\n  }\n\n  orderBy === 'asc' ? orderedChildren.splice(0, len - deletePoint) : orderedChildren.splice(deletePoint, len - deletePoint);\n  return sum;\n}\n/**\r\n * Sort\r\n */\n\n\nfunction sort(viewChildren, orderBy) {\n  if (orderBy) {\n    viewChildren.sort(function (a, b) {\n      var diff = orderBy === 'asc' ? a.getValue() - b.getValue() : b.getValue() - a.getValue();\n      return diff === 0 ? orderBy === 'asc' ? a.dataIndex - b.dataIndex : b.dataIndex - a.dataIndex : diff;\n    });\n  }\n\n  return viewChildren;\n}\n/**\r\n * Statistic\r\n */\n\n\nfunction statistic(nodeModel, children, orderBy) {\n  // Calculate sum.\n  var sum = 0;\n\n  for (var i = 0, len = children.length; i < len; i++) {\n    sum += children[i].getValue();\n  } // Statistic data extent for latter visual coding.\n  // Notice: data extent should be calculate based on raw children\n  // but not filtered view children, otherwise visual mapping will not\n  // be stable when zoom (where children is filtered by visibleMin).\n\n\n  var dimension = nodeModel.get('visualDimension');\n  var dataExtent; // The same as area dimension.\n\n  if (!children || !children.length) {\n    dataExtent = [NaN, NaN];\n  } else if (dimension === 'value' && orderBy) {\n    dataExtent = [children[children.length - 1].getValue(), children[0].getValue()];\n    orderBy === 'asc' && dataExtent.reverse();\n  } // Other dimension.\n  else {\n      dataExtent = [Infinity, -Infinity];\n      each(children, function (child) {\n        var value = child.getValue(dimension);\n        value < dataExtent[0] && (dataExtent[0] = value);\n        value > dataExtent[1] && (dataExtent[1] = value);\n      });\n    }\n\n  return {\n    sum: sum,\n    dataExtent: dataExtent\n  };\n}\n/**\r\n * Computes the score for the specified row,\r\n * as the worst aspect ratio.\r\n */\n\n\nfunction worst(row, rowFixedLength, ratio) {\n  var areaMax = 0;\n  var areaMin = Infinity;\n\n  for (var i = 0, area = void 0, len = row.length; i < len; i++) {\n    area = row[i].getLayout().area;\n\n    if (area) {\n      area < areaMin && (areaMin = area);\n      area > areaMax && (areaMax = area);\n    }\n  }\n\n  var squareArea = row.area * row.area;\n  var f = rowFixedLength * rowFixedLength * ratio;\n  return squareArea ? mathMax(f * areaMax / squareArea, squareArea / (f * areaMin)) : Infinity;\n}\n/**\r\n * Positions the specified row of nodes. Modifies `rect`.\r\n */\n\n\nfunction position(row, rowFixedLength, rect, halfGapWidth, flush) {\n  // When rowFixedLength === rect.width,\n  // it is horizontal subdivision,\n  // rowFixedLength is the width of the subdivision,\n  // rowOtherLength is the height of the subdivision,\n  // and nodes will be positioned from left to right.\n  // wh[idx0WhenH] means: when horizontal,\n  //      wh[idx0WhenH] => wh[0] => 'width'.\n  //      xy[idx1WhenH] => xy[1] => 'y'.\n  var idx0WhenH = rowFixedLength === rect.width ? 0 : 1;\n  var idx1WhenH = 1 - idx0WhenH;\n  var xy = ['x', 'y'];\n  var wh = ['width', 'height'];\n  var last = rect[xy[idx0WhenH]];\n  var rowOtherLength = rowFixedLength ? row.area / rowFixedLength : 0;\n\n  if (flush || rowOtherLength > rect[wh[idx1WhenH]]) {\n    rowOtherLength = rect[wh[idx1WhenH]]; // over+underflow\n  }\n\n  for (var i = 0, rowLen = row.length; i < rowLen; i++) {\n    var node = row[i];\n    var nodeLayout = {};\n    var step = rowOtherLength ? node.getLayout().area / rowOtherLength : 0;\n    var wh1 = nodeLayout[wh[idx1WhenH]] = mathMax(rowOtherLength - 2 * halfGapWidth, 0); // We use Math.max/min to avoid negative width/height when considering gap width.\n\n    var remain = rect[xy[idx0WhenH]] + rect[wh[idx0WhenH]] - last;\n    var modWH = i === rowLen - 1 || remain < step ? remain : step;\n    var wh0 = nodeLayout[wh[idx0WhenH]] = mathMax(modWH - 2 * halfGapWidth, 0);\n    nodeLayout[xy[idx1WhenH]] = rect[xy[idx1WhenH]] + mathMin(halfGapWidth, wh1 / 2);\n    nodeLayout[xy[idx0WhenH]] = last + mathMin(halfGapWidth, wh0 / 2);\n    last += modWH;\n    node.setLayout(nodeLayout, true);\n  }\n\n  rect[xy[idx1WhenH]] += rowOtherLength;\n  rect[wh[idx1WhenH]] -= rowOtherLength;\n} // Return [containerWidth, containerHeight] as default.\n\n\nfunction estimateRootSize(seriesModel, targetInfo, viewRoot, containerWidth, containerHeight) {\n  // If targetInfo.node exists, we zoom to the node,\n  // so estimate whole width and height by target node.\n  var currNode = (targetInfo || {}).node;\n  var defaultSize = [containerWidth, containerHeight];\n\n  if (!currNode || currNode === viewRoot) {\n    return defaultSize;\n  }\n\n  var parent;\n  var viewArea = containerWidth * containerHeight;\n  var area = viewArea * seriesModel.option.zoomToNodeRatio;\n\n  while (parent = currNode.parentNode) {\n    // jshint ignore:line\n    var sum = 0;\n    var siblings = parent.children;\n\n    for (var i = 0, len = siblings.length; i < len; i++) {\n      sum += siblings[i].getValue();\n    }\n\n    var currNodeValue = currNode.getValue();\n\n    if (currNodeValue === 0) {\n      return defaultSize;\n    }\n\n    area *= sum / currNodeValue; // Considering border, suppose aspect ratio is 1.\n\n    var parentModel = parent.getModel();\n    var borderWidth = parentModel.get(PATH_BORDER_WIDTH);\n    var upperHeight = Math.max(borderWidth, getUpperLabelHeight(parentModel));\n    area += 4 * borderWidth * borderWidth + (3 * borderWidth + upperHeight) * Math.pow(area, 0.5);\n    area > MAX_SAFE_INTEGER && (area = MAX_SAFE_INTEGER);\n    currNode = parent;\n  }\n\n  area < viewArea && (area = viewArea);\n  var scale = Math.pow(area / viewArea, 0.5);\n  return [containerWidth * scale, containerHeight * scale];\n} // Root position based on coord of containerGroup\n\n\nfunction calculateRootPosition(layoutInfo, rootRect, targetInfo) {\n  if (rootRect) {\n    return {\n      x: rootRect.x,\n      y: rootRect.y\n    };\n  }\n\n  var defaultPosition = {\n    x: 0,\n    y: 0\n  };\n\n  if (!targetInfo) {\n    return defaultPosition;\n  } // If targetInfo is fetched by 'retrieveTargetInfo',\n  // old tree and new tree are the same tree,\n  // so the node still exists and we can visit it.\n\n\n  var targetNode = targetInfo.node;\n  var layout = targetNode.getLayout();\n\n  if (!layout) {\n    return defaultPosition;\n  } // Transform coord from local to container.\n\n\n  var targetCenter = [layout.width / 2, layout.height / 2];\n  var node = targetNode;\n\n  while (node) {\n    var nodeLayout = node.getLayout();\n    targetCenter[0] += nodeLayout.x;\n    targetCenter[1] += nodeLayout.y;\n    node = node.parentNode;\n  }\n\n  return {\n    x: layoutInfo.width / 2 - targetCenter[0],\n    y: layoutInfo.height / 2 - targetCenter[1]\n  };\n} // Mark nodes visible for prunning when visual coding and rendering.\n// Prunning depends on layout and root position, so we have to do it after layout.\n\n\nfunction prunning(node, clipRect, viewAbovePath, viewRoot, depth) {\n  var nodeLayout = node.getLayout();\n  var nodeInViewAbovePath = viewAbovePath[depth];\n  var isAboveViewRoot = nodeInViewAbovePath && nodeInViewAbovePath === node;\n\n  if (nodeInViewAbovePath && !isAboveViewRoot || depth === viewAbovePath.length && node !== viewRoot) {\n    return;\n  }\n\n  node.setLayout({\n    // isInView means: viewRoot sub tree + viewAbovePath\n    isInView: true,\n    // invisible only means: outside view clip so that the node can not\n    // see but still layout for animation preparation but not render.\n    invisible: !isAboveViewRoot && !clipRect.intersect(nodeLayout),\n    isAboveViewRoot: isAboveViewRoot\n  }, true); // Transform to child coordinate.\n\n  var childClipRect = new BoundingRect(clipRect.x - nodeLayout.x, clipRect.y - nodeLayout.y, clipRect.width, clipRect.height);\n  each(node.viewChildren || [], function (child) {\n    prunning(child, childClipRect, viewAbovePath, viewRoot, depth + 1);\n  });\n}\n\nfunction getUpperLabelHeight(model) {\n  return model.get(PATH_UPPER_LABEL_SHOW) ? model.get(PATH_UPPER_LABEL_HEIGHT) : 0;\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { isNumber } from 'zrender/lib/core/util.js';\nexport default function categoryFilter(ecModel) {\n  var legendModels = ecModel.findComponents({\n    mainType: 'legend'\n  });\n\n  if (!legendModels || !legendModels.length) {\n    return;\n  }\n\n  ecModel.eachSeriesByType('graph', function (graphSeries) {\n    var categoriesData = graphSeries.getCategoriesData();\n    var graph = graphSeries.getGraph();\n    var data = graph.data;\n    var categoryNames = categoriesData.mapArray(categoriesData.getName);\n    data.filterSelf(function (idx) {\n      var model = data.getItemModel(idx);\n      var category = model.getShallow('category');\n\n      if (category != null) {\n        if (isNumber(category)) {\n          category = categoryNames[category];\n        } // If in any legend component the status is not selected.\n\n\n        for (var i = 0; i < legendModels.length; i++) {\n          if (!legendModels[i].isSelected(category)) {\n            return false;\n          }\n        }\n      }\n\n      return true;\n    });\n  });\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { extend, isString } from 'zrender/lib/core/util.js';\nexport default function categoryVisual(ecModel) {\n  var paletteScope = {};\n  ecModel.eachSeriesByType('graph', function (seriesModel) {\n    var categoriesData = seriesModel.getCategoriesData();\n    var data = seriesModel.getData();\n    var categoryNameIdxMap = {};\n    categoriesData.each(function (idx) {\n      var name = categoriesData.getName(idx); // Add prefix to avoid conflict with Object.prototype.\n\n      categoryNameIdxMap['ec-' + name] = idx;\n      var itemModel = categoriesData.getItemModel(idx);\n      var style = itemModel.getModel('itemStyle').getItemStyle();\n\n      if (!style.fill) {\n        // Get color from palette.\n        style.fill = seriesModel.getColorFromPalette(name, paletteScope);\n      }\n\n      categoriesData.setItemVisual(idx, 'style', style);\n      var symbolVisualList = ['symbol', 'symbolSize', 'symbolKeepAspect'];\n\n      for (var i = 0; i < symbolVisualList.length; i++) {\n        var symbolVisual = itemModel.getShallow(symbolVisualList[i], true);\n\n        if (symbolVisual != null) {\n          categoriesData.setItemVisual(idx, symbolVisualList[i], symbolVisual);\n        }\n      }\n    }); // Assign category color to visual\n\n    if (categoriesData.count()) {\n      data.each(function (idx) {\n        var model = data.getItemModel(idx);\n        var categoryIdx = model.getShallow('category');\n\n        if (categoryIdx != null) {\n          if (isString(categoryIdx)) {\n            categoryIdx = categoryNameIdxMap['ec-' + categoryIdx];\n          }\n\n          var categoryStyle = categoriesData.getItemVisual(categoryIdx, 'style');\n          var style = data.ensureUniqueItemVisual(idx, 'style');\n          extend(style, categoryStyle);\n          var visualList = ['symbol', 'symbolSize', 'symbolKeepAspect'];\n\n          for (var i = 0; i < visualList.length; i++) {\n            data.setItemVisual(idx, visualList[i], categoriesData.getItemVisual(categoryIdx, visualList[i]));\n          }\n        }\n      });\n    }\n  });\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { extend } from 'zrender/lib/core/util.js';\n\nfunction normalize(a) {\n  if (!(a instanceof Array)) {\n    a = [a, a];\n  }\n\n  return a;\n}\n\nexport default function graphEdgeVisual(ecModel) {\n  ecModel.eachSeriesByType('graph', function (seriesModel) {\n    var graph = seriesModel.getGraph();\n    var edgeData = seriesModel.getEdgeData();\n    var symbolType = normalize(seriesModel.get('edgeSymbol'));\n    var symbolSize = normalize(seriesModel.get('edgeSymbolSize')); // const colorQuery = ['lineStyle', 'color'] as const;\n    // const opacityQuery = ['lineStyle', 'opacity'] as const;\n\n    edgeData.setVisual('fromSymbol', symbolType && symbolType[0]);\n    edgeData.setVisual('toSymbol', symbolType && symbolType[1]);\n    edgeData.setVisual('fromSymbolSize', symbolSize && symbolSize[0]);\n    edgeData.setVisual('toSymbolSize', symbolSize && symbolSize[1]);\n    edgeData.setVisual('style', seriesModel.getModel('lineStyle').getLineStyle());\n    edgeData.each(function (idx) {\n      var itemModel = edgeData.getItemModel(idx);\n      var edge = graph.getEdgeByIndex(idx);\n      var symbolType = normalize(itemModel.getShallow('symbol', true));\n      var symbolSize = normalize(itemModel.getShallow('symbolSize', true)); // Edge visual must after node visual\n\n      var style = itemModel.getModel('lineStyle').getLineStyle();\n      var existsStyle = edgeData.ensureUniqueItemVisual(idx, 'style');\n      extend(existsStyle, style);\n\n      switch (existsStyle.stroke) {\n        case 'source':\n          {\n            var nodeStyle = edge.node1.getVisual('style');\n            existsStyle.stroke = nodeStyle && nodeStyle.fill;\n            break;\n          }\n\n        case 'target':\n          {\n            var nodeStyle = edge.node2.getVisual('style');\n            existsStyle.stroke = nodeStyle && nodeStyle.fill;\n            break;\n          }\n      }\n\n      symbolType[0] && edge.setVisual('fromSymbol', symbolType[0]);\n      symbolType[1] && edge.setVisual('toSymbol', symbolType[1]);\n      symbolSize[0] && edge.setVisual('fromSymbolSize', symbolSize[0]);\n      symbolSize[1] && edge.setVisual('toSymbolSize', symbolSize[1]);\n    });\n  });\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\n// @ts-nocheck\nimport * as zrUtil from 'zrender/lib/core/util.js';\nvar KEY_DELIMITER = '-->';\n/**\r\n * params handler\r\n * @param {module:echarts/model/SeriesModel} seriesModel\r\n * @returns {*}\r\n */\n\nvar getAutoCurvenessParams = function (seriesModel) {\n  return seriesModel.get('autoCurveness') || null;\n};\n/**\r\n * Generate a list of edge curvatures, 20 is the default\r\n * @param {module:echarts/model/SeriesModel} seriesModel\r\n * @param {number} appendLength\r\n * @return  20 => [0, -0.2, 0.2, -0.4, 0.4, -0.6, 0.6, -0.8, 0.8, -1, 1, -1.2, 1.2, -1.4, 1.4, -1.6, 1.6, -1.8, 1.8, -2]\r\n */\n\n\nvar createCurveness = function (seriesModel, appendLength) {\n  var autoCurvenessParmas = getAutoCurvenessParams(seriesModel);\n  var length = 20;\n  var curvenessList = []; // handler the function set\n\n  if (zrUtil.isNumber(autoCurvenessParmas)) {\n    length = autoCurvenessParmas;\n  } else if (zrUtil.isArray(autoCurvenessParmas)) {\n    seriesModel.__curvenessList = autoCurvenessParmas;\n    return;\n  } // append length\n\n\n  if (appendLength > length) {\n    length = appendLength;\n  } // make sure the length is even\n\n\n  var len = length % 2 ? length + 2 : length + 3;\n  curvenessList = [];\n\n  for (var i = 0; i < len; i++) {\n    curvenessList.push((i % 2 ? i + 1 : i) / 10 * (i % 2 ? -1 : 1));\n  }\n\n  seriesModel.__curvenessList = curvenessList;\n};\n/**\r\n * Create different cache key data in the positive and negative directions, in order to set the curvature later\r\n * @param {number|string|module:echarts/data/Graph.Node} n1\r\n * @param {number|string|module:echarts/data/Graph.Node} n2\r\n * @param {module:echarts/model/SeriesModel} seriesModel\r\n * @returns {string} key\r\n */\n\n\nvar getKeyOfEdges = function (n1, n2, seriesModel) {\n  var source = [n1.id, n1.dataIndex].join('.');\n  var target = [n2.id, n2.dataIndex].join('.');\n  return [seriesModel.uid, source, target].join(KEY_DELIMITER);\n};\n/**\r\n * get opposite key\r\n * @param {string} key\r\n * @returns {string}\r\n */\n\n\nvar getOppositeKey = function (key) {\n  var keys = key.split(KEY_DELIMITER);\n  return [keys[0], keys[2], keys[1]].join(KEY_DELIMITER);\n};\n/**\r\n * get edgeMap with key\r\n * @param edge\r\n * @param {module:echarts/model/SeriesModel} seriesModel\r\n */\n\n\nvar getEdgeFromMap = function (edge, seriesModel) {\n  var key = getKeyOfEdges(edge.node1, edge.node2, seriesModel);\n  return seriesModel.__edgeMap[key];\n};\n/**\r\n * calculate all cases total length\r\n * @param edge\r\n * @param seriesModel\r\n * @returns {number}\r\n */\n\n\nvar getTotalLengthBetweenNodes = function (edge, seriesModel) {\n  var len = getEdgeMapLengthWithKey(getKeyOfEdges(edge.node1, edge.node2, seriesModel), seriesModel);\n  var lenV = getEdgeMapLengthWithKey(getKeyOfEdges(edge.node2, edge.node1, seriesModel), seriesModel);\n  return len + lenV;\n};\n/**\r\n *\r\n * @param key\r\n */\n\n\nvar getEdgeMapLengthWithKey = function (key, seriesModel) {\n  var edgeMap = seriesModel.__edgeMap;\n  return edgeMap[key] ? edgeMap[key].length : 0;\n};\n/**\r\n * Count the number of edges between the same two points, used to obtain the curvature table and the parity of the edge\r\n * @see /graph/GraphSeries.js@getInitialData\r\n * @param {module:echarts/model/SeriesModel} seriesModel\r\n */\n\n\nexport function initCurvenessList(seriesModel) {\n  if (!getAutoCurvenessParams(seriesModel)) {\n    return;\n  }\n\n  seriesModel.__curvenessList = [];\n  seriesModel.__edgeMap = {}; // calc the array of curveness List\n\n  createCurveness(seriesModel);\n}\n/**\r\n * set edgeMap with key\r\n * @param {number|string|module:echarts/data/Graph.Node} n1\r\n * @param {number|string|module:echarts/data/Graph.Node} n2\r\n * @param {module:echarts/model/SeriesModel} seriesModel\r\n * @param {number} index\r\n */\n\nexport function createEdgeMapForCurveness(n1, n2, seriesModel, index) {\n  if (!getAutoCurvenessParams(seriesModel)) {\n    return;\n  }\n\n  var key = getKeyOfEdges(n1, n2, seriesModel);\n  var edgeMap = seriesModel.__edgeMap;\n  var oppositeEdges = edgeMap[getOppositeKey(key)]; // set direction\n\n  if (edgeMap[key] && !oppositeEdges) {\n    edgeMap[key].isForward = true;\n  } else if (oppositeEdges && edgeMap[key]) {\n    oppositeEdges.isForward = true;\n    edgeMap[key].isForward = false;\n  }\n\n  edgeMap[key] = edgeMap[key] || [];\n  edgeMap[key].push(index);\n}\n/**\r\n * get curvature for edge\r\n * @param edge\r\n * @param {module:echarts/model/SeriesModel} seriesModel\r\n * @param index\r\n */\n\nexport function getCurvenessForEdge(edge, seriesModel, index, needReverse) {\n  var autoCurvenessParams = getAutoCurvenessParams(seriesModel);\n  var isArrayParam = zrUtil.isArray(autoCurvenessParams);\n\n  if (!autoCurvenessParams) {\n    return null;\n  }\n\n  var edgeArray = getEdgeFromMap(edge, seriesModel);\n\n  if (!edgeArray) {\n    return null;\n  }\n\n  var edgeIndex = -1;\n\n  for (var i = 0; i < edgeArray.length; i++) {\n    if (edgeArray[i] === index) {\n      edgeIndex = i;\n      break;\n    }\n  } // if totalLen is Longer createCurveness\n\n\n  var totalLen = getTotalLengthBetweenNodes(edge, seriesModel);\n  createCurveness(seriesModel, totalLen);\n  edge.lineStyle = edge.lineStyle || {}; // if is opposite edge, must set curvenss to opposite number\n\n  var curKey = getKeyOfEdges(edge.node1, edge.node2, seriesModel);\n  var curvenessList = seriesModel.__curvenessList; // if pass array no need parity\n\n  var parityCorrection = isArrayParam ? 0 : totalLen % 2 ? 0 : 1;\n\n  if (!edgeArray.isForward) {\n    // the opposite edge show outside\n    var oppositeKey = getOppositeKey(curKey);\n    var len = getEdgeMapLengthWithKey(oppositeKey, seriesModel);\n    var resValue = curvenessList[edgeIndex + len + parityCorrection]; // isNeedReverse, simple, force type need reverse the curveness in the junction of the forword and the opposite\n\n    if (needReverse) {\n      // set as array may make the parity handle with the len of opposite\n      if (isArrayParam) {\n        if (autoCurvenessParams && autoCurvenessParams[0] === 0) {\n          return (len + parityCorrection) % 2 ? resValue : -resValue;\n        } else {\n          return ((len % 2 ? 0 : 1) + parityCorrection) % 2 ? resValue : -resValue;\n        }\n      } else {\n        return (len + parityCorrection) % 2 ? resValue : -resValue;\n      }\n    } else {\n      return curvenessList[edgeIndex + len + parityCorrection];\n    }\n  } else {\n    return curvenessList[parityCorrection + edgeIndex];\n  }\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport * as vec2 from 'zrender/lib/core/vector.js';\nimport * as zrUtil from 'zrender/lib/core/util.js';\nimport { getCurvenessForEdge } from '../helper/multipleGraphEdgeHelper.js';\nexport function simpleLayout(seriesModel) {\n  var coordSys = seriesModel.coordinateSystem;\n\n  if (coordSys && coordSys.type !== 'view') {\n    return;\n  }\n\n  var graph = seriesModel.getGraph();\n  graph.eachNode(function (node) {\n    var model = node.getModel();\n    node.setLayout([+model.get('x'), +model.get('y')]);\n  });\n  simpleLayoutEdge(graph, seriesModel);\n}\nexport function simpleLayoutEdge(graph, seriesModel) {\n  graph.eachEdge(function (edge, index) {\n    var curveness = zrUtil.retrieve3(edge.getModel().get(['lineStyle', 'curveness']), -getCurvenessForEdge(edge, seriesModel, index, true), 0);\n    var p1 = vec2.clone(edge.node1.getLayout());\n    var p2 = vec2.clone(edge.node2.getLayout());\n    var points = [p1, p2];\n\n    if (+curveness) {\n      points.push([(p1[0] + p2[0]) / 2 - (p1[1] - p2[1]) * curveness, (p1[1] + p2[1]) / 2 - (p2[0] - p1[0]) * curveness]);\n    }\n\n    edge.setLayout(points);\n  });\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { each } from 'zrender/lib/core/util.js';\nimport { simpleLayout, simpleLayoutEdge } from './simpleLayoutHelper.js';\nexport default function graphSimpleLayout(ecModel, api) {\n  ecModel.eachSeriesByType('graph', function (seriesModel) {\n    var layout = seriesModel.get('layout');\n    var coordSys = seriesModel.coordinateSystem;\n\n    if (coordSys && coordSys.type !== 'view') {\n      var data_1 = seriesModel.getData();\n      var dimensions_1 = [];\n      each(coordSys.dimensions, function (coordDim) {\n        dimensions_1 = dimensions_1.concat(data_1.mapDimensionsAll(coordDim));\n      });\n\n      for (var dataIndex = 0; dataIndex < data_1.count(); dataIndex++) {\n        var value = [];\n        var hasValue = false;\n\n        for (var i = 0; i < dimensions_1.length; i++) {\n          var val = data_1.get(dimensions_1[i], dataIndex);\n\n          if (!isNaN(val)) {\n            hasValue = true;\n          }\n\n          value.push(val);\n        }\n\n        if (hasValue) {\n          data_1.setItemLayout(dataIndex, coordSys.dataToPoint(value));\n        } else {\n          // Also {Array.<number>}, not undefined to avoid if...else... statement\n          data_1.setItemLayout(dataIndex, [NaN, NaN]);\n        }\n      }\n\n      simpleLayoutEdge(data_1.graph, seriesModel);\n    } else if (!layout || layout === 'none') {\n      simpleLayout(seriesModel);\n    }\n  });\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nexport function getNodeGlobalScale(seriesModel) {\n  var coordSys = seriesModel.coordinateSystem;\n\n  if (coordSys.type !== 'view') {\n    return 1;\n  }\n\n  var nodeScaleRatio = seriesModel.option.nodeScaleRatio;\n  var groupZoom = coordSys.scaleX; // Scale node when zoom changes\n\n  var roamZoom = coordSys.getZoom();\n  var nodeScale = (roamZoom - 1) * nodeScaleRatio + 1;\n  return nodeScale / groupZoom;\n}\nexport function getSymbolSize(node) {\n  var symbolSize = node.getVisual('symbolSize');\n\n  if (symbolSize instanceof Array) {\n    symbolSize = (symbolSize[0] + symbolSize[1]) / 2;\n  }\n\n  return +symbolSize;\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport * as vec2 from 'zrender/lib/core/vector.js';\nimport { getSymbolSize, getNodeGlobalScale } from './graphHelper.js';\nimport * as zrUtil from 'zrender/lib/core/util.js';\nimport { getCurvenessForEdge } from '../helper/multipleGraphEdgeHelper.js';\nvar PI = Math.PI;\nvar _symbolRadiansHalf = [];\n/**\r\n * `basedOn` can be:\r\n * 'value':\r\n *     This layout is not accurate and have same bad case. For example,\r\n *     if the min value is very smaller than the max value, the nodes\r\n *     with the min value probably overlap even though there is enough\r\n *     space to layout them. So we only use this approach in the as the\r\n *     init layout of the force layout.\r\n *     FIXME\r\n *     Probably we do not need this method any more but use\r\n *     `basedOn: 'symbolSize'` in force layout if\r\n *     delay its init operations to GraphView.\r\n * 'symbolSize':\r\n *     This approach work only if all of the symbol size calculated.\r\n *     That is, the progressive rendering is not applied to graph.\r\n *     FIXME\r\n *     If progressive rendering is applied to graph some day,\r\n *     probably we have to use `basedOn: 'value'`.\r\n */\n\nexport function circularLayout(seriesModel, basedOn, draggingNode, pointer) {\n  var coordSys = seriesModel.coordinateSystem;\n\n  if (coordSys && coordSys.type !== 'view') {\n    return;\n  }\n\n  var rect = coordSys.getBoundingRect();\n  var nodeData = seriesModel.getData();\n  var graph = nodeData.graph;\n  var cx = rect.width / 2 + rect.x;\n  var cy = rect.height / 2 + rect.y;\n  var r = Math.min(rect.width, rect.height) / 2;\n  var count = nodeData.count();\n  nodeData.setLayout({\n    cx: cx,\n    cy: cy\n  });\n\n  if (!count) {\n    return;\n  }\n\n  if (draggingNode) {\n    var _a = coordSys.pointToData(pointer),\n        tempX = _a[0],\n        tempY = _a[1];\n\n    var v = [tempX - cx, tempY - cy];\n    vec2.normalize(v, v);\n    vec2.scale(v, v, r);\n    draggingNode.setLayout([cx + v[0], cy + v[1]], true);\n    var circularRotateLabel = seriesModel.get(['circular', 'rotateLabel']);\n    rotateNodeLabel(draggingNode, circularRotateLabel, cx, cy);\n  }\n\n  _layoutNodesBasedOn[basedOn](seriesModel, graph, nodeData, r, cx, cy, count);\n\n  graph.eachEdge(function (edge, index) {\n    var curveness = zrUtil.retrieve3(edge.getModel().get(['lineStyle', 'curveness']), getCurvenessForEdge(edge, seriesModel, index), 0);\n    var p1 = vec2.clone(edge.node1.getLayout());\n    var p2 = vec2.clone(edge.node2.getLayout());\n    var cp1;\n    var x12 = (p1[0] + p2[0]) / 2;\n    var y12 = (p1[1] + p2[1]) / 2;\n\n    if (+curveness) {\n      curveness *= 3;\n      cp1 = [cx * curveness + x12 * (1 - curveness), cy * curveness + y12 * (1 - curveness)];\n    }\n\n    edge.setLayout([p1, p2, cp1]);\n  });\n}\nvar _layoutNodesBasedOn = {\n  value: function (seriesModel, graph, nodeData, r, cx, cy, count) {\n    var angle = 0;\n    var sum = nodeData.getSum('value');\n    var unitAngle = Math.PI * 2 / (sum || count);\n    graph.eachNode(function (node) {\n      var value = node.getValue('value');\n      var radianHalf = unitAngle * (sum ? value : 1) / 2;\n      angle += radianHalf;\n      node.setLayout([r * Math.cos(angle) + cx, r * Math.sin(angle) + cy]);\n      angle += radianHalf;\n    });\n  },\n  symbolSize: function (seriesModel, graph, nodeData, r, cx, cy, count) {\n    var sumRadian = 0;\n    _symbolRadiansHalf.length = count;\n    var nodeScale = getNodeGlobalScale(seriesModel);\n    graph.eachNode(function (node) {\n      var symbolSize = getSymbolSize(node); // Normally this case will not happen, but we still add\n      // some the defensive code (2px is an arbitrary value).\n\n      isNaN(symbolSize) && (symbolSize = 2);\n      symbolSize < 0 && (symbolSize = 0);\n      symbolSize *= nodeScale;\n      var symbolRadianHalf = Math.asin(symbolSize / 2 / r); // when `symbolSize / 2` is bigger than `r`.\n\n      isNaN(symbolRadianHalf) && (symbolRadianHalf = PI / 2);\n      _symbolRadiansHalf[node.dataIndex] = symbolRadianHalf;\n      sumRadian += symbolRadianHalf * 2;\n    });\n    var halfRemainRadian = (2 * PI - sumRadian) / count / 2;\n    var angle = 0;\n    graph.eachNode(function (node) {\n      var radianHalf = halfRemainRadian + _symbolRadiansHalf[node.dataIndex];\n      angle += radianHalf; // init circular layout for\n      // 1. layout undefined node\n      // 2. not fixed node\n\n      (!node.getLayout() || !node.getLayout().fixed) && node.setLayout([r * Math.cos(angle) + cx, r * Math.sin(angle) + cy]);\n      angle += radianHalf;\n    });\n  }\n};\nexport function rotateNodeLabel(node, circularRotateLabel, cx, cy) {\n  var el = node.getGraphicEl(); // need to check if el exists. '-' value may not create node element.\n\n  if (!el) {\n    return;\n  }\n\n  var nodeModel = node.getModel();\n  var labelRotate = nodeModel.get(['label', 'rotate']) || 0;\n  var symbolPath = el.getSymbolPath();\n\n  if (circularRotateLabel) {\n    var pos = node.getLayout();\n    var rad = Math.atan2(pos[1] - cy, pos[0] - cx);\n\n    if (rad < 0) {\n      rad = Math.PI * 2 + rad;\n    }\n\n    var isLeft = pos[0] < cx;\n\n    if (isLeft) {\n      rad = rad - Math.PI;\n    }\n\n    var textPosition = isLeft ? 'left' : 'right';\n    symbolPath.setTextConfig({\n      rotation: -rad,\n      position: textPosition,\n      origin: 'center'\n    });\n    var emphasisState = symbolPath.ensureState('emphasis');\n    zrUtil.extend(emphasisState.textConfig || (emphasisState.textConfig = {}), {\n      position: textPosition\n    });\n  } else {\n    symbolPath.setTextConfig({\n      rotation: labelRotate *= Math.PI / 180\n    });\n  }\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { circularLayout } from './circularLayoutHelper.js';\nexport default function graphCircularLayout(ecModel) {\n  ecModel.eachSeriesByType('graph', function (seriesModel) {\n    if (seriesModel.get('layout') === 'circular') {\n      circularLayout(seriesModel, 'symbolSize');\n    }\n  });\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\n\n/*\r\n* A third-party license is embedded for some of the code in this file:\r\n* Some formulas were originally copied from \"d3.js\" with some\r\n* modifications made for this project.\r\n* (See more details in the comment of the method \"step\" below.)\r\n* The use of the source code of this file is also subject to the terms\r\n* and consitions of the license of \"d3.js\" (BSD-3Clause, see\r\n* </licenses/LICENSE-d3>).\r\n*/\nimport * as vec2 from 'zrender/lib/core/vector.js';\nvar scaleAndAdd = vec2.scaleAndAdd; // function adjacentNode(n, e) {\n//     return e.n1 === n ? e.n2 : e.n1;\n// }\n\nexport function forceLayout(inNodes, inEdges, opts) {\n  var nodes = inNodes;\n  var edges = inEdges;\n  var rect = opts.rect;\n  var width = rect.width;\n  var height = rect.height;\n  var center = [rect.x + width / 2, rect.y + height / 2]; // let scale = opts.scale || 1;\n\n  var gravity = opts.gravity == null ? 0.1 : opts.gravity; // for (let i = 0; i < edges.length; i++) {\n  //     let e = edges[i];\n  //     let n1 = e.n1;\n  //     let n2 = e.n2;\n  //     n1.edges = n1.edges || [];\n  //     n2.edges = n2.edges || [];\n  //     n1.edges.push(e);\n  //     n2.edges.push(e);\n  // }\n  // Init position\n\n  for (var i = 0; i < nodes.length; i++) {\n    var n = nodes[i];\n\n    if (!n.p) {\n      n.p = vec2.create(width * (Math.random() - 0.5) + center[0], height * (Math.random() - 0.5) + center[1]);\n    }\n\n    n.pp = vec2.clone(n.p);\n    n.edges = null;\n  } // Formula in 'Graph Drawing by Force-directed Placement'\n  // let k = scale * Math.sqrt(width * height / nodes.length);\n  // let k2 = k * k;\n\n\n  var initialFriction = opts.friction == null ? 0.6 : opts.friction;\n  var friction = initialFriction;\n  var beforeStepCallback;\n  var afterStepCallback;\n  return {\n    warmUp: function () {\n      friction = initialFriction * 0.8;\n    },\n    setFixed: function (idx) {\n      nodes[idx].fixed = true;\n    },\n    setUnfixed: function (idx) {\n      nodes[idx].fixed = false;\n    },\n\n    /**\r\n     * Before step hook\r\n     */\n    beforeStep: function (cb) {\n      beforeStepCallback = cb;\n    },\n\n    /**\r\n     * After step hook\r\n     */\n    afterStep: function (cb) {\n      afterStepCallback = cb;\n    },\n\n    /**\r\n     * Some formulas were originally copied from \"d3.js\"\r\n     * https://github.com/d3/d3/blob/b516d77fb8566b576088e73410437494717ada26/src/layout/force.js\r\n     * with some modifications made for this project.\r\n     * See the license statement at the head of this file.\r\n     */\n    step: function (cb) {\n      beforeStepCallback && beforeStepCallback(nodes, edges);\n      var v12 = [];\n      var nLen = nodes.length;\n\n      for (var i = 0; i < edges.length; i++) {\n        var e = edges[i];\n\n        if (e.ignoreForceLayout) {\n          continue;\n        }\n\n        var n1 = e.n1;\n        var n2 = e.n2;\n        vec2.sub(v12, n2.p, n1.p);\n        var d = vec2.len(v12) - e.d;\n        var w = n2.w / (n1.w + n2.w);\n\n        if (isNaN(w)) {\n          w = 0;\n        }\n\n        vec2.normalize(v12, v12);\n        !n1.fixed && scaleAndAdd(n1.p, n1.p, v12, w * d * friction);\n        !n2.fixed && scaleAndAdd(n2.p, n2.p, v12, -(1 - w) * d * friction);\n      } // Gravity\n\n\n      for (var i = 0; i < nLen; i++) {\n        var n = nodes[i];\n\n        if (!n.fixed) {\n          vec2.sub(v12, center, n.p); // let d = vec2.len(v12);\n          // vec2.scale(v12, v12, 1 / d);\n          // let gravityFactor = gravity;\n\n          scaleAndAdd(n.p, n.p, v12, gravity * friction);\n        }\n      } // Repulsive\n      // PENDING\n\n\n      for (var i = 0; i < nLen; i++) {\n        var n1 = nodes[i];\n\n        for (var j = i + 1; j < nLen; j++) {\n          var n2 = nodes[j];\n          vec2.sub(v12, n2.p, n1.p);\n          var d = vec2.len(v12);\n\n          if (d === 0) {\n            // Random repulse\n            vec2.set(v12, Math.random() - 0.5, Math.random() - 0.5);\n            d = 1;\n          }\n\n          var repFact = (n1.rep + n2.rep) / d / d;\n          !n1.fixed && scaleAndAdd(n1.pp, n1.pp, v12, repFact);\n          !n2.fixed && scaleAndAdd(n2.pp, n2.pp, v12, -repFact);\n        }\n      }\n\n      var v = [];\n\n      for (var i = 0; i < nLen; i++) {\n        var n = nodes[i];\n\n        if (!n.fixed) {\n          vec2.sub(v, n.p, n.pp);\n          scaleAndAdd(n.p, n.p, v, friction);\n          vec2.copy(n.pp, n.p);\n        }\n      }\n\n      friction = friction * 0.992;\n      var finished = friction < 0.01;\n      afterStepCallback && afterStepCallback(nodes, edges, finished);\n      cb && cb(finished);\n    }\n  };\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { forceLayout } from './forceHelper.js';\nimport { simpleLayout } from './simpleLayoutHelper.js';\nimport { circularLayout } from './circularLayoutHelper.js';\nimport { linearMap } from '../../util/number.js';\nimport * as vec2 from 'zrender/lib/core/vector.js';\nimport * as zrUtil from 'zrender/lib/core/util.js';\nimport { getCurvenessForEdge } from '../helper/multipleGraphEdgeHelper.js';\nexport default function graphForceLayout(ecModel) {\n  ecModel.eachSeriesByType('graph', function (graphSeries) {\n    var coordSys = graphSeries.coordinateSystem;\n\n    if (coordSys && coordSys.type !== 'view') {\n      return;\n    }\n\n    if (graphSeries.get('layout') === 'force') {\n      var preservedPoints_1 = graphSeries.preservedPoints || {};\n      var graph_1 = graphSeries.getGraph();\n      var nodeData_1 = graph_1.data;\n      var edgeData = graph_1.edgeData;\n      var forceModel = graphSeries.getModel('force');\n      var initLayout = forceModel.get('initLayout');\n\n      if (graphSeries.preservedPoints) {\n        nodeData_1.each(function (idx) {\n          var id = nodeData_1.getId(idx);\n          nodeData_1.setItemLayout(idx, preservedPoints_1[id] || [NaN, NaN]);\n        });\n      } else if (!initLayout || initLayout === 'none') {\n        simpleLayout(graphSeries);\n      } else if (initLayout === 'circular') {\n        circularLayout(graphSeries, 'value');\n      }\n\n      var nodeDataExtent_1 = nodeData_1.getDataExtent('value');\n      var edgeDataExtent_1 = edgeData.getDataExtent('value'); // let edgeDataExtent = edgeData.getDataExtent('value');\n\n      var repulsion = forceModel.get('repulsion');\n      var edgeLength = forceModel.get('edgeLength');\n      var repulsionArr_1 = zrUtil.isArray(repulsion) ? repulsion : [repulsion, repulsion];\n      var edgeLengthArr_1 = zrUtil.isArray(edgeLength) ? edgeLength : [edgeLength, edgeLength]; // Larger value has smaller length\n\n      edgeLengthArr_1 = [edgeLengthArr_1[1], edgeLengthArr_1[0]];\n      var nodes_1 = nodeData_1.mapArray('value', function (value, idx) {\n        var point = nodeData_1.getItemLayout(idx);\n        var rep = linearMap(value, nodeDataExtent_1, repulsionArr_1);\n\n        if (isNaN(rep)) {\n          rep = (repulsionArr_1[0] + repulsionArr_1[1]) / 2;\n        }\n\n        return {\n          w: rep,\n          rep: rep,\n          fixed: nodeData_1.getItemModel(idx).get('fixed'),\n          p: !point || isNaN(point[0]) || isNaN(point[1]) ? null : point\n        };\n      });\n      var edges = edgeData.mapArray('value', function (value, idx) {\n        var edge = graph_1.getEdgeByIndex(idx);\n        var d = linearMap(value, edgeDataExtent_1, edgeLengthArr_1);\n\n        if (isNaN(d)) {\n          d = (edgeLengthArr_1[0] + edgeLengthArr_1[1]) / 2;\n        }\n\n        var edgeModel = edge.getModel();\n        var curveness = zrUtil.retrieve3(edge.getModel().get(['lineStyle', 'curveness']), -getCurvenessForEdge(edge, graphSeries, idx, true), 0);\n        return {\n          n1: nodes_1[edge.node1.dataIndex],\n          n2: nodes_1[edge.node2.dataIndex],\n          d: d,\n          curveness: curveness,\n          ignoreForceLayout: edgeModel.get('ignoreForceLayout')\n        };\n      }); // let coordSys = graphSeries.coordinateSystem;\n\n      var rect = coordSys.getBoundingRect();\n      var forceInstance = forceLayout(nodes_1, edges, {\n        rect: rect,\n        gravity: forceModel.get('gravity'),\n        friction: forceModel.get('friction')\n      });\n      forceInstance.beforeStep(function (nodes, edges) {\n        for (var i = 0, l = nodes.length; i < l; i++) {\n          if (nodes[i].fixed) {\n            // Write back to layout instance\n            vec2.copy(nodes[i].p, graph_1.getNodeByIndex(i).getLayout());\n          }\n        }\n      });\n      forceInstance.afterStep(function (nodes, edges, stopped) {\n        for (var i = 0, l = nodes.length; i < l; i++) {\n          if (!nodes[i].fixed) {\n            graph_1.getNodeByIndex(i).setLayout(nodes[i].p);\n          }\n\n          preservedPoints_1[nodeData_1.getId(i)] = nodes[i].p;\n        }\n\n        for (var i = 0, l = edges.length; i < l; i++) {\n          var e = edges[i];\n          var edge = graph_1.getEdgeByIndex(i);\n          var p1 = e.n1.p;\n          var p2 = e.n2.p;\n          var points = edge.getLayout();\n          points = points ? points.slice() : [];\n          points[0] = points[0] || [];\n          points[1] = points[1] || [];\n          vec2.copy(points[0], p1);\n          vec2.copy(points[1], p2);\n\n          if (+e.curveness) {\n            points[2] = [(p1[0] + p2[0]) / 2 - (p1[1] - p2[1]) * e.curveness, (p1[1] + p2[1]) / 2 - (p2[0] - p1[0]) * e.curveness];\n          }\n\n          edge.setLayout(points);\n        }\n      });\n      graphSeries.forceLayout = forceInstance;\n      graphSeries.preservedPoints = preservedPoints_1; // Step to get the layout\n\n      forceInstance.step();\n    } else {\n      // Remove prev injected forceLayout instance\n      graphSeries.forceLayout = null;\n    }\n  });\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\n// FIXME Where to create the simple view coordinate system\nimport View from '../../coord/View.js';\nimport { getLayoutRect } from '../../util/layout.js';\nimport * as bbox from 'zrender/lib/core/bbox.js';\nimport { extend } from 'zrender/lib/core/util.js';\n\nfunction getViewRect(seriesModel, api, aspect) {\n  var option = extend(seriesModel.getBoxLayoutParams(), {\n    aspect: aspect\n  });\n  return getLayoutRect(option, {\n    width: api.getWidth(),\n    height: api.getHeight()\n  });\n}\n\nexport default function createViewCoordSys(ecModel, api) {\n  var viewList = [];\n  ecModel.eachSeriesByType('graph', function (seriesModel) {\n    var coordSysType = seriesModel.get('coordinateSystem');\n\n    if (!coordSysType || coordSysType === 'view') {\n      var data_1 = seriesModel.getData();\n      var positions = data_1.mapArray(function (idx) {\n        var itemModel = data_1.getItemModel(idx);\n        return [+itemModel.get('x'), +itemModel.get('y')];\n      });\n      var min = [];\n      var max = [];\n      bbox.fromPoints(positions, min, max); // If width or height is 0\n\n      if (max[0] - min[0] === 0) {\n        max[0] += 1;\n        min[0] -= 1;\n      }\n\n      if (max[1] - min[1] === 0) {\n        max[1] += 1;\n        min[1] -= 1;\n      }\n\n      var aspect = (max[0] - min[0]) / (max[1] - min[1]); // FIXME If get view rect after data processed?\n\n      var viewRect = getViewRect(seriesModel, api, aspect); // Position may be NaN, use view rect instead\n\n      if (isNaN(aspect)) {\n        min = [viewRect.x, viewRect.y];\n        max = [viewRect.x + viewRect.width, viewRect.y + viewRect.height];\n      }\n\n      var bbWidth = max[0] - min[0];\n      var bbHeight = max[1] - min[1];\n      var viewWidth = viewRect.width;\n      var viewHeight = viewRect.height;\n      var viewCoordSys = seriesModel.coordinateSystem = new View();\n      viewCoordSys.zoomLimit = seriesModel.get('scaleLimit');\n      viewCoordSys.setBoundingRect(min[0], min[1], bbWidth, bbHeight);\n      viewCoordSys.setViewRect(viewRect.x, viewRect.y, viewWidth, viewHeight); // Update roam info\n\n      viewCoordSys.setCenter(seriesModel.get('center'), api);\n      viewCoordSys.setZoom(seriesModel.get('zoom'));\n      viewList.push(viewCoordSys);\n    }\n  });\n  return viewList;\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { __extends } from \"tslib\";\n/**\r\n * Line path for bezier and straight line draw\r\n */\n\nimport * as graphic from '../../util/graphic.js';\nimport * as vec2 from 'zrender/lib/core/vector.js';\nvar straightLineProto = graphic.Line.prototype;\nvar bezierCurveProto = graphic.BezierCurve.prototype;\n\nvar StraightLineShape =\n/** @class */\nfunction () {\n  function StraightLineShape() {\n    // Start point\n    this.x1 = 0;\n    this.y1 = 0; // End point\n\n    this.x2 = 0;\n    this.y2 = 0;\n    this.percent = 1;\n  }\n\n  return StraightLineShape;\n}();\n\nvar CurveShape =\n/** @class */\nfunction (_super) {\n  __extends(CurveShape, _super);\n\n  function CurveShape() {\n    return _super !== null && _super.apply(this, arguments) || this;\n  }\n\n  return CurveShape;\n}(StraightLineShape);\n\nfunction isStraightLine(shape) {\n  return isNaN(+shape.cpx1) || isNaN(+shape.cpy1);\n}\n\nvar ECLinePath =\n/** @class */\nfunction (_super) {\n  __extends(ECLinePath, _super);\n\n  function ECLinePath(opts) {\n    var _this = _super.call(this, opts) || this;\n\n    _this.type = 'ec-line';\n    return _this;\n  }\n\n  ECLinePath.prototype.getDefaultStyle = function () {\n    return {\n      stroke: '#000',\n      fill: null\n    };\n  };\n\n  ECLinePath.prototype.getDefaultShape = function () {\n    return new StraightLineShape();\n  };\n\n  ECLinePath.prototype.buildPath = function (ctx, shape) {\n    if (isStraightLine(shape)) {\n      straightLineProto.buildPath.call(this, ctx, shape);\n    } else {\n      bezierCurveProto.buildPath.call(this, ctx, shape);\n    }\n  };\n\n  ECLinePath.prototype.pointAt = function (t) {\n    if (isStraightLine(this.shape)) {\n      return straightLineProto.pointAt.call(this, t);\n    } else {\n      return bezierCurveProto.pointAt.call(this, t);\n    }\n  };\n\n  ECLinePath.prototype.tangentAt = function (t) {\n    var shape = this.shape;\n    var p = isStraightLine(shape) ? [shape.x2 - shape.x1, shape.y2 - shape.y1] : bezierCurveProto.tangentAt.call(this, t);\n    return vec2.normalize(p, p);\n  };\n\n  return ECLinePath;\n}(graphic.Path);\n\nexport default ECLinePath;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { __extends } from \"tslib\";\nimport { isArray, each } from 'zrender/lib/core/util.js';\nimport * as vector from 'zrender/lib/core/vector.js';\nimport * as symbolUtil from '../../util/symbol.js';\nimport ECLinePath from './LinePath.js';\nimport * as graphic from '../../util/graphic.js';\nimport { toggleHoverEmphasis, enterEmphasis, leaveEmphasis, SPECIAL_STATES } from '../../util/states.js';\nimport { getLabelStatesModels, setLabelStyle } from '../../label/labelStyle.js';\nimport { round } from '../../util/number.js';\nvar SYMBOL_CATEGORIES = ['fromSymbol', 'toSymbol'];\n\nfunction makeSymbolTypeKey(symbolCategory) {\n  return '_' + symbolCategory + 'Type';\n}\n\nfunction makeSymbolTypeValue(name, lineData, idx) {\n  var symbolType = lineData.getItemVisual(idx, name);\n\n  if (!symbolType || symbolType === 'none') {\n    return symbolType;\n  }\n\n  var symbolSize = lineData.getItemVisual(idx, name + 'Size');\n  var symbolRotate = lineData.getItemVisual(idx, name + 'Rotate');\n  var symbolOffset = lineData.getItemVisual(idx, name + 'Offset');\n  var symbolKeepAspect = lineData.getItemVisual(idx, name + 'KeepAspect');\n  var symbolSizeArr = symbolUtil.normalizeSymbolSize(symbolSize);\n  var symbolOffsetArr = symbolUtil.normalizeSymbolOffset(symbolOffset || 0, symbolSizeArr);\n  return symbolType + symbolSizeArr + symbolOffsetArr + (symbolRotate || '') + (symbolKeepAspect || '');\n}\n/**\r\n * @inner\r\n */\n\n\nfunction createSymbol(name, lineData, idx) {\n  var symbolType = lineData.getItemVisual(idx, name);\n\n  if (!symbolType || symbolType === 'none') {\n    return;\n  }\n\n  var symbolSize = lineData.getItemVisual(idx, name + 'Size');\n  var symbolRotate = lineData.getItemVisual(idx, name + 'Rotate');\n  var symbolOffset = lineData.getItemVisual(idx, name + 'Offset');\n  var symbolKeepAspect = lineData.getItemVisual(idx, name + 'KeepAspect');\n  var symbolSizeArr = symbolUtil.normalizeSymbolSize(symbolSize);\n  var symbolOffsetArr = symbolUtil.normalizeSymbolOffset(symbolOffset || 0, symbolSizeArr);\n  var symbolPath = symbolUtil.createSymbol(symbolType, -symbolSizeArr[0] / 2 + symbolOffsetArr[0], -symbolSizeArr[1] / 2 + symbolOffsetArr[1], symbolSizeArr[0], symbolSizeArr[1], null, symbolKeepAspect);\n  symbolPath.__specifiedRotation = symbolRotate == null || isNaN(symbolRotate) ? void 0 : +symbolRotate * Math.PI / 180 || 0;\n  symbolPath.name = name;\n  return symbolPath;\n}\n\nfunction createLine(points) {\n  var line = new ECLinePath({\n    name: 'line',\n    subPixelOptimize: true\n  });\n  setLinePoints(line.shape, points);\n  return line;\n}\n\nfunction setLinePoints(targetShape, points) {\n  targetShape.x1 = points[0][0];\n  targetShape.y1 = points[0][1];\n  targetShape.x2 = points[1][0];\n  targetShape.y2 = points[1][1];\n  targetShape.percent = 1;\n  var cp1 = points[2];\n\n  if (cp1) {\n    targetShape.cpx1 = cp1[0];\n    targetShape.cpy1 = cp1[1];\n  } else {\n    targetShape.cpx1 = NaN;\n    targetShape.cpy1 = NaN;\n  }\n}\n\nvar Line =\n/** @class */\nfunction (_super) {\n  __extends(Line, _super);\n\n  function Line(lineData, idx, seriesScope) {\n    var _this = _super.call(this) || this;\n\n    _this._createLine(lineData, idx, seriesScope);\n\n    return _this;\n  }\n\n  Line.prototype._createLine = function (lineData, idx, seriesScope) {\n    var seriesModel = lineData.hostModel;\n    var linePoints = lineData.getItemLayout(idx);\n    var line = createLine(linePoints);\n    line.shape.percent = 0;\n    graphic.initProps(line, {\n      shape: {\n        percent: 1\n      }\n    }, seriesModel, idx);\n    this.add(line);\n    each(SYMBOL_CATEGORIES, function (symbolCategory) {\n      var symbol = createSymbol(symbolCategory, lineData, idx); // symbols must added after line to make sure\n      // it will be updated after line#update.\n      // Or symbol position and rotation update in line#beforeUpdate will be one frame slow\n\n      this.add(symbol);\n      this[makeSymbolTypeKey(symbolCategory)] = makeSymbolTypeValue(symbolCategory, lineData, idx);\n    }, this);\n\n    this._updateCommonStl(lineData, idx, seriesScope);\n  }; // TODO More strict on the List type in parameters?\n\n\n  Line.prototype.updateData = function (lineData, idx, seriesScope) {\n    var seriesModel = lineData.hostModel;\n    var line = this.childOfName('line');\n    var linePoints = lineData.getItemLayout(idx);\n    var target = {\n      shape: {}\n    };\n    setLinePoints(target.shape, linePoints);\n    graphic.updateProps(line, target, seriesModel, idx);\n    each(SYMBOL_CATEGORIES, function (symbolCategory) {\n      var symbolType = makeSymbolTypeValue(symbolCategory, lineData, idx);\n      var key = makeSymbolTypeKey(symbolCategory); // Symbol changed\n\n      if (this[key] !== symbolType) {\n        this.remove(this.childOfName(symbolCategory));\n        var symbol = createSymbol(symbolCategory, lineData, idx);\n        this.add(symbol);\n      }\n\n      this[key] = symbolType;\n    }, this);\n\n    this._updateCommonStl(lineData, idx, seriesScope);\n  };\n\n  ;\n\n  Line.prototype.getLinePath = function () {\n    return this.childAt(0);\n  };\n\n  Line.prototype._updateCommonStl = function (lineData, idx, seriesScope) {\n    var seriesModel = lineData.hostModel;\n    var line = this.childOfName('line');\n    var emphasisLineStyle = seriesScope && seriesScope.emphasisLineStyle;\n    var blurLineStyle = seriesScope && seriesScope.blurLineStyle;\n    var selectLineStyle = seriesScope && seriesScope.selectLineStyle;\n    var labelStatesModels = seriesScope && seriesScope.labelStatesModels;\n    var emphasisDisabled = seriesScope && seriesScope.emphasisDisabled;\n    var focus = seriesScope && seriesScope.focus;\n    var blurScope = seriesScope && seriesScope.blurScope; // Optimization for large dataset\n\n    if (!seriesScope || lineData.hasItemOption) {\n      var itemModel = lineData.getItemModel(idx);\n      var emphasisModel = itemModel.getModel('emphasis');\n      emphasisLineStyle = emphasisModel.getModel('lineStyle').getLineStyle();\n      blurLineStyle = itemModel.getModel(['blur', 'lineStyle']).getLineStyle();\n      selectLineStyle = itemModel.getModel(['select', 'lineStyle']).getLineStyle();\n      emphasisDisabled = emphasisModel.get('disabled');\n      focus = emphasisModel.get('focus');\n      blurScope = emphasisModel.get('blurScope');\n      labelStatesModels = getLabelStatesModels(itemModel);\n    }\n\n    var lineStyle = lineData.getItemVisual(idx, 'style');\n    var visualColor = lineStyle.stroke;\n    line.useStyle(lineStyle);\n    line.style.fill = null;\n    line.style.strokeNoScale = true;\n    line.ensureState('emphasis').style = emphasisLineStyle;\n    line.ensureState('blur').style = blurLineStyle;\n    line.ensureState('select').style = selectLineStyle; // Update symbol\n\n    each(SYMBOL_CATEGORIES, function (symbolCategory) {\n      var symbol = this.childOfName(symbolCategory);\n\n      if (symbol) {\n        // Share opacity and color with line.\n        symbol.setColor(visualColor);\n        symbol.style.opacity = lineStyle.opacity;\n\n        for (var i = 0; i < SPECIAL_STATES.length; i++) {\n          var stateName = SPECIAL_STATES[i];\n          var lineState = line.getState(stateName);\n\n          if (lineState) {\n            var lineStateStyle = lineState.style || {};\n            var state = symbol.ensureState(stateName);\n            var stateStyle = state.style || (state.style = {});\n\n            if (lineStateStyle.stroke != null) {\n              stateStyle[symbol.__isEmptyBrush ? 'stroke' : 'fill'] = lineStateStyle.stroke;\n            }\n\n            if (lineStateStyle.opacity != null) {\n              stateStyle.opacity = lineStateStyle.opacity;\n            }\n          }\n        }\n\n        symbol.markRedraw();\n      }\n    }, this);\n    var rawVal = seriesModel.getRawValue(idx);\n    setLabelStyle(this, labelStatesModels, {\n      labelDataIndex: idx,\n      labelFetcher: {\n        getFormattedLabel: function (dataIndex, stateName) {\n          return seriesModel.getFormattedLabel(dataIndex, stateName, lineData.dataType);\n        }\n      },\n      inheritColor: visualColor || '#000',\n      defaultOpacity: lineStyle.opacity,\n      defaultText: (rawVal == null ? lineData.getName(idx) : isFinite(rawVal) ? round(rawVal) : rawVal) + ''\n    });\n    var label = this.getTextContent(); // Always set `textStyle` even if `normalStyle.text` is null, because default\n    // values have to be set on `normalStyle`.\n\n    if (label) {\n      var labelNormalModel = labelStatesModels.normal;\n      label.__align = label.style.align;\n      label.__verticalAlign = label.style.verticalAlign; // 'start', 'middle', 'end'\n\n      label.__position = labelNormalModel.get('position') || 'middle';\n      var distance = labelNormalModel.get('distance');\n\n      if (!isArray(distance)) {\n        distance = [distance, distance];\n      }\n\n      label.__labelDistance = distance;\n    }\n\n    this.setTextConfig({\n      position: null,\n      local: true,\n      inside: false // Can't be inside for stroke element.\n\n    });\n    toggleHoverEmphasis(this, focus, blurScope, emphasisDisabled);\n  };\n\n  Line.prototype.highlight = function () {\n    enterEmphasis(this);\n  };\n\n  Line.prototype.downplay = function () {\n    leaveEmphasis(this);\n  };\n\n  Line.prototype.updateLayout = function (lineData, idx) {\n    this.setLinePoints(lineData.getItemLayout(idx));\n  };\n\n  Line.prototype.setLinePoints = function (points) {\n    var linePath = this.childOfName('line');\n    setLinePoints(linePath.shape, points);\n    linePath.dirty();\n  };\n\n  Line.prototype.beforeUpdate = function () {\n    var lineGroup = this;\n    var symbolFrom = lineGroup.childOfName('fromSymbol');\n    var symbolTo = lineGroup.childOfName('toSymbol');\n    var label = lineGroup.getTextContent(); // Quick reject\n\n    if (!symbolFrom && !symbolTo && (!label || label.ignore)) {\n      return;\n    }\n\n    var invScale = 1;\n    var parentNode = this.parent;\n\n    while (parentNode) {\n      if (parentNode.scaleX) {\n        invScale /= parentNode.scaleX;\n      }\n\n      parentNode = parentNode.parent;\n    }\n\n    var line = lineGroup.childOfName('line'); // If line not changed\n    // FIXME Parent scale changed\n\n    if (!this.__dirty && !line.__dirty) {\n      return;\n    }\n\n    var percent = line.shape.percent;\n    var fromPos = line.pointAt(0);\n    var toPos = line.pointAt(percent);\n    var d = vector.sub([], toPos, fromPos);\n    vector.normalize(d, d);\n\n    function setSymbolRotation(symbol, percent) {\n      // Fix #12388\n      // when symbol is set to be 'arrow' in markLine,\n      // symbolRotate value will be ignored, and compulsively use tangent angle.\n      // rotate by default if symbol rotation is not specified\n      var specifiedRotation = symbol.__specifiedRotation;\n\n      if (specifiedRotation == null) {\n        var tangent = line.tangentAt(percent);\n        symbol.attr('rotation', (percent === 1 ? -1 : 1) * Math.PI / 2 - Math.atan2(tangent[1], tangent[0]));\n      } else {\n        symbol.attr('rotation', specifiedRotation);\n      }\n    }\n\n    if (symbolFrom) {\n      symbolFrom.setPosition(fromPos);\n      setSymbolRotation(symbolFrom, 0);\n      symbolFrom.scaleX = symbolFrom.scaleY = invScale * percent;\n      symbolFrom.markRedraw();\n    }\n\n    if (symbolTo) {\n      symbolTo.setPosition(toPos);\n      setSymbolRotation(symbolTo, 1);\n      symbolTo.scaleX = symbolTo.scaleY = invScale * percent;\n      symbolTo.markRedraw();\n    }\n\n    if (label && !label.ignore) {\n      label.x = label.y = 0;\n      label.originX = label.originY = 0;\n      var textAlign = void 0;\n      var textVerticalAlign = void 0;\n      var distance = label.__labelDistance;\n      var distanceX = distance[0] * invScale;\n      var distanceY = distance[1] * invScale;\n      var halfPercent = percent / 2;\n      var tangent = line.tangentAt(halfPercent);\n      var n = [tangent[1], -tangent[0]];\n      var cp = line.pointAt(halfPercent);\n\n      if (n[1] > 0) {\n        n[0] = -n[0];\n        n[1] = -n[1];\n      }\n\n      var dir = tangent[0] < 0 ? -1 : 1;\n\n      if (label.__position !== 'start' && label.__position !== 'end') {\n        var rotation = -Math.atan2(tangent[1], tangent[0]);\n\n        if (toPos[0] < fromPos[0]) {\n          rotation = Math.PI + rotation;\n        }\n\n        label.rotation = rotation;\n      }\n\n      var dy = void 0;\n\n      switch (label.__position) {\n        case 'insideStartTop':\n        case 'insideMiddleTop':\n        case 'insideEndTop':\n        case 'middle':\n          dy = -distanceY;\n          textVerticalAlign = 'bottom';\n          break;\n\n        case 'insideStartBottom':\n        case 'insideMiddleBottom':\n        case 'insideEndBottom':\n          dy = distanceY;\n          textVerticalAlign = 'top';\n          break;\n\n        default:\n          dy = 0;\n          textVerticalAlign = 'middle';\n      }\n\n      switch (label.__position) {\n        case 'end':\n          label.x = d[0] * distanceX + toPos[0];\n          label.y = d[1] * distanceY + toPos[1];\n          textAlign = d[0] > 0.8 ? 'left' : d[0] < -0.8 ? 'right' : 'center';\n          textVerticalAlign = d[1] > 0.8 ? 'top' : d[1] < -0.8 ? 'bottom' : 'middle';\n          break;\n\n        case 'start':\n          label.x = -d[0] * distanceX + fromPos[0];\n          label.y = -d[1] * distanceY + fromPos[1];\n          textAlign = d[0] > 0.8 ? 'right' : d[0] < -0.8 ? 'left' : 'center';\n          textVerticalAlign = d[1] > 0.8 ? 'bottom' : d[1] < -0.8 ? 'top' : 'middle';\n          break;\n\n        case 'insideStartTop':\n        case 'insideStart':\n        case 'insideStartBottom':\n          label.x = distanceX * dir + fromPos[0];\n          label.y = fromPos[1] + dy;\n          textAlign = tangent[0] < 0 ? 'right' : 'left';\n          label.originX = -distanceX * dir;\n          label.originY = -dy;\n          break;\n\n        case 'insideMiddleTop':\n        case 'insideMiddle':\n        case 'insideMiddleBottom':\n        case 'middle':\n          label.x = cp[0];\n          label.y = cp[1] + dy;\n          textAlign = 'center';\n          label.originY = -dy;\n          break;\n\n        case 'insideEndTop':\n        case 'insideEnd':\n        case 'insideEndBottom':\n          label.x = -distanceX * dir + toPos[0];\n          label.y = toPos[1] + dy;\n          textAlign = tangent[0] >= 0 ? 'right' : 'left';\n          label.originX = distanceX * dir;\n          label.originY = -dy;\n          break;\n      }\n\n      label.scaleX = label.scaleY = invScale;\n      label.setStyle({\n        // Use the user specified text align and baseline first\n        verticalAlign: label.__verticalAlign || textVerticalAlign,\n        align: label.__align || textAlign\n      });\n    }\n  };\n\n  return Line;\n}(graphic.Group);\n\nexport default Line;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport * as graphic from '../../util/graphic.js';\nimport LineGroup from './Line.js';\nimport { getLabelStatesModels } from '../../label/labelStyle.js';\n\nvar LineDraw =\n/** @class */\nfunction () {\n  function LineDraw(LineCtor) {\n    this.group = new graphic.Group();\n    this._LineCtor = LineCtor || LineGroup;\n  }\n\n  LineDraw.prototype.updateData = function (lineData) {\n    var _this = this; // Remove progressive els.\n\n\n    this._progressiveEls = null;\n    var lineDraw = this;\n    var group = lineDraw.group;\n    var oldLineData = lineDraw._lineData;\n    lineDraw._lineData = lineData; // There is no oldLineData only when first rendering or switching from\n    // stream mode to normal mode, where previous elements should be removed.\n\n    if (!oldLineData) {\n      group.removeAll();\n    }\n\n    var seriesScope = makeSeriesScope(lineData);\n    lineData.diff(oldLineData).add(function (idx) {\n      _this._doAdd(lineData, idx, seriesScope);\n    }).update(function (newIdx, oldIdx) {\n      _this._doUpdate(oldLineData, lineData, oldIdx, newIdx, seriesScope);\n    }).remove(function (idx) {\n      group.remove(oldLineData.getItemGraphicEl(idx));\n    }).execute();\n  };\n\n  ;\n\n  LineDraw.prototype.updateLayout = function () {\n    var lineData = this._lineData; // Do not support update layout in incremental mode.\n\n    if (!lineData) {\n      return;\n    }\n\n    lineData.eachItemGraphicEl(function (el, idx) {\n      el.updateLayout(lineData, idx);\n    }, this);\n  };\n\n  ;\n\n  LineDraw.prototype.incrementalPrepareUpdate = function (lineData) {\n    this._seriesScope = makeSeriesScope(lineData);\n    this._lineData = null;\n    this.group.removeAll();\n  };\n\n  ;\n\n  LineDraw.prototype.incrementalUpdate = function (taskParams, lineData) {\n    this._progressiveEls = [];\n\n    function updateIncrementalAndHover(el) {\n      if (!el.isGroup && !isEffectObject(el)) {\n        el.incremental = true;\n        el.ensureState('emphasis').hoverLayer = true;\n      }\n    }\n\n    for (var idx = taskParams.start; idx < taskParams.end; idx++) {\n      var itemLayout = lineData.getItemLayout(idx);\n\n      if (lineNeedsDraw(itemLayout)) {\n        var el = new this._LineCtor(lineData, idx, this._seriesScope);\n        el.traverse(updateIncrementalAndHover);\n        this.group.add(el);\n        lineData.setItemGraphicEl(idx, el);\n\n        this._progressiveEls.push(el);\n      }\n    }\n  };\n\n  ;\n\n  LineDraw.prototype.remove = function () {\n    this.group.removeAll();\n  };\n\n  ;\n\n  LineDraw.prototype.eachRendered = function (cb) {\n    graphic.traverseElements(this._progressiveEls || this.group, cb);\n  };\n\n  LineDraw.prototype._doAdd = function (lineData, idx, seriesScope) {\n    var itemLayout = lineData.getItemLayout(idx);\n\n    if (!lineNeedsDraw(itemLayout)) {\n      return;\n    }\n\n    var el = new this._LineCtor(lineData, idx, seriesScope);\n    lineData.setItemGraphicEl(idx, el);\n    this.group.add(el);\n  };\n\n  LineDraw.prototype._doUpdate = function (oldLineData, newLineData, oldIdx, newIdx, seriesScope) {\n    var itemEl = oldLineData.getItemGraphicEl(oldIdx);\n\n    if (!lineNeedsDraw(newLineData.getItemLayout(newIdx))) {\n      this.group.remove(itemEl);\n      return;\n    }\n\n    if (!itemEl) {\n      itemEl = new this._LineCtor(newLineData, newIdx, seriesScope);\n    } else {\n      itemEl.updateData(newLineData, newIdx, seriesScope);\n    }\n\n    newLineData.setItemGraphicEl(newIdx, itemEl);\n    this.group.add(itemEl);\n  };\n\n  return LineDraw;\n}();\n\nfunction isEffectObject(el) {\n  return el.animators && el.animators.length > 0;\n}\n\nfunction makeSeriesScope(lineData) {\n  var hostModel = lineData.hostModel;\n  var emphasisModel = hostModel.getModel('emphasis');\n  return {\n    lineStyle: hostModel.getModel('lineStyle').getLineStyle(),\n    emphasisLineStyle: emphasisModel.getModel(['lineStyle']).getLineStyle(),\n    blurLineStyle: hostModel.getModel(['blur', 'lineStyle']).getLineStyle(),\n    selectLineStyle: hostModel.getModel(['select', 'lineStyle']).getLineStyle(),\n    emphasisDisabled: emphasisModel.get('disabled'),\n    blurScope: emphasisModel.get('blurScope'),\n    focus: emphasisModel.get('focus'),\n    labelStatesModels: getLabelStatesModels(hostModel)\n  };\n}\n\nfunction isPointNaN(pt) {\n  return isNaN(pt[0]) || isNaN(pt[1]);\n}\n\nfunction lineNeedsDraw(pts) {\n  return pts && !isPointNaN(pts[0]) && !isPointNaN(pts[1]);\n}\n\nexport default LineDraw;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport * as curveTool from 'zrender/lib/core/curve.js';\nimport * as vec2 from 'zrender/lib/core/vector.js';\nimport { getSymbolSize } from './graphHelper.js';\nvar v1 = [];\nvar v2 = [];\nvar v3 = [];\nvar quadraticAt = curveTool.quadraticAt;\nvar v2DistSquare = vec2.distSquare;\nvar mathAbs = Math.abs;\n\nfunction intersectCurveCircle(curvePoints, center, radius) {\n  var p0 = curvePoints[0];\n  var p1 = curvePoints[1];\n  var p2 = curvePoints[2];\n  var d = Infinity;\n  var t;\n  var radiusSquare = radius * radius;\n  var interval = 0.1;\n\n  for (var _t = 0.1; _t <= 0.9; _t += 0.1) {\n    v1[0] = quadraticAt(p0[0], p1[0], p2[0], _t);\n    v1[1] = quadraticAt(p0[1], p1[1], p2[1], _t);\n    var diff = mathAbs(v2DistSquare(v1, center) - radiusSquare);\n\n    if (diff < d) {\n      d = diff;\n      t = _t;\n    }\n  } // Assume the segment is monotone，Find root through Bisection method\n  // At most 32 iteration\n\n\n  for (var i = 0; i < 32; i++) {\n    // let prev = t - interval;\n    var next = t + interval; // v1[0] = quadraticAt(p0[0], p1[0], p2[0], prev);\n    // v1[1] = quadraticAt(p0[1], p1[1], p2[1], prev);\n\n    v2[0] = quadraticAt(p0[0], p1[0], p2[0], t);\n    v2[1] = quadraticAt(p0[1], p1[1], p2[1], t);\n    v3[0] = quadraticAt(p0[0], p1[0], p2[0], next);\n    v3[1] = quadraticAt(p0[1], p1[1], p2[1], next);\n    var diff = v2DistSquare(v2, center) - radiusSquare;\n\n    if (mathAbs(diff) < 1e-2) {\n      break;\n    } // let prevDiff = v2DistSquare(v1, center) - radiusSquare;\n\n\n    var nextDiff = v2DistSquare(v3, center) - radiusSquare;\n    interval /= 2;\n\n    if (diff < 0) {\n      if (nextDiff >= 0) {\n        t = t + interval;\n      } else {\n        t = t - interval;\n      }\n    } else {\n      if (nextDiff >= 0) {\n        t = t - interval;\n      } else {\n        t = t + interval;\n      }\n    }\n  }\n\n  return t;\n} // Adjust edge to avoid\n\n\nexport default function adjustEdge(graph, scale) {\n  var tmp0 = [];\n  var quadraticSubdivide = curveTool.quadraticSubdivide;\n  var pts = [[], [], []];\n  var pts2 = [[], []];\n  var v = [];\n  scale /= 2;\n  graph.eachEdge(function (edge, idx) {\n    var linePoints = edge.getLayout();\n    var fromSymbol = edge.getVisual('fromSymbol');\n    var toSymbol = edge.getVisual('toSymbol');\n\n    if (!linePoints.__original) {\n      linePoints.__original = [vec2.clone(linePoints[0]), vec2.clone(linePoints[1])];\n\n      if (linePoints[2]) {\n        linePoints.__original.push(vec2.clone(linePoints[2]));\n      }\n    }\n\n    var originalPoints = linePoints.__original; // Quadratic curve\n\n    if (linePoints[2] != null) {\n      vec2.copy(pts[0], originalPoints[0]);\n      vec2.copy(pts[1], originalPoints[2]);\n      vec2.copy(pts[2], originalPoints[1]);\n\n      if (fromSymbol && fromSymbol !== 'none') {\n        var symbolSize = getSymbolSize(edge.node1);\n        var t = intersectCurveCircle(pts, originalPoints[0], symbolSize * scale); // Subdivide and get the second\n\n        quadraticSubdivide(pts[0][0], pts[1][0], pts[2][0], t, tmp0);\n        pts[0][0] = tmp0[3];\n        pts[1][0] = tmp0[4];\n        quadraticSubdivide(pts[0][1], pts[1][1], pts[2][1], t, tmp0);\n        pts[0][1] = tmp0[3];\n        pts[1][1] = tmp0[4];\n      }\n\n      if (toSymbol && toSymbol !== 'none') {\n        var symbolSize = getSymbolSize(edge.node2);\n        var t = intersectCurveCircle(pts, originalPoints[1], symbolSize * scale); // Subdivide and get the first\n\n        quadraticSubdivide(pts[0][0], pts[1][0], pts[2][0], t, tmp0);\n        pts[1][0] = tmp0[1];\n        pts[2][0] = tmp0[2];\n        quadraticSubdivide(pts[0][1], pts[1][1], pts[2][1], t, tmp0);\n        pts[1][1] = tmp0[1];\n        pts[2][1] = tmp0[2];\n      } // Copy back to layout\n\n\n      vec2.copy(linePoints[0], pts[0]);\n      vec2.copy(linePoints[1], pts[2]);\n      vec2.copy(linePoints[2], pts[1]);\n    } // Line\n    else {\n        vec2.copy(pts2[0], originalPoints[0]);\n        vec2.copy(pts2[1], originalPoints[1]);\n        vec2.sub(v, pts2[1], pts2[0]);\n        vec2.normalize(v, v);\n\n        if (fromSymbol && fromSymbol !== 'none') {\n          var symbolSize = getSymbolSize(edge.node1);\n          vec2.scaleAndAdd(pts2[0], pts2[0], v, symbolSize * scale);\n        }\n\n        if (toSymbol && toSymbol !== 'none') {\n          var symbolSize = getSymbolSize(edge.node2);\n          vec2.scaleAndAdd(pts2[1], pts2[1], v, -symbolSize * scale);\n        }\n\n        vec2.copy(linePoints[0], pts2[0]);\n        vec2.copy(linePoints[1], pts2[1]);\n      }\n  });\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { __extends } from \"tslib\";\nimport SymbolDraw from '../helper/SymbolDraw.js';\nimport LineDraw from '../helper/LineDraw.js';\nimport RoamController from '../../component/helper/RoamController.js';\nimport * as roamHelper from '../../component/helper/roamHelper.js';\nimport { onIrrelevantElement } from '../../component/helper/cursorHelper.js';\nimport * as graphic from '../../util/graphic.js';\nimport adjustEdge from './adjustEdge.js';\nimport { getNodeGlobalScale } from './graphHelper.js';\nimport ChartView from '../../view/Chart.js';\nimport { getECData } from '../../util/innerStore.js';\nimport { simpleLayoutEdge } from './simpleLayoutHelper.js';\nimport { circularLayout, rotateNodeLabel } from './circularLayoutHelper.js';\n\nfunction isViewCoordSys(coordSys) {\n  return coordSys.type === 'view';\n}\n\nvar GraphView =\n/** @class */\nfunction (_super) {\n  __extends(GraphView, _super);\n\n  function GraphView() {\n    var _this = _super !== null && _super.apply(this, arguments) || this;\n\n    _this.type = GraphView.type;\n    return _this;\n  }\n\n  GraphView.prototype.init = function (ecModel, api) {\n    var symbolDraw = new SymbolDraw();\n    var lineDraw = new LineDraw();\n    var group = this.group;\n    this._controller = new RoamController(api.getZr());\n    this._controllerHost = {\n      target: group\n    };\n    group.add(symbolDraw.group);\n    group.add(lineDraw.group);\n    this._symbolDraw = symbolDraw;\n    this._lineDraw = lineDraw;\n    this._firstRender = true;\n  };\n\n  GraphView.prototype.render = function (seriesModel, ecModel, api) {\n    var _this = this;\n\n    var coordSys = seriesModel.coordinateSystem;\n    this._model = seriesModel;\n    var symbolDraw = this._symbolDraw;\n    var lineDraw = this._lineDraw;\n    var group = this.group;\n\n    if (isViewCoordSys(coordSys)) {\n      var groupNewProp = {\n        x: coordSys.x,\n        y: coordSys.y,\n        scaleX: coordSys.scaleX,\n        scaleY: coordSys.scaleY\n      };\n\n      if (this._firstRender) {\n        group.attr(groupNewProp);\n      } else {\n        graphic.updateProps(group, groupNewProp, seriesModel);\n      }\n    } // Fix edge contact point with node\n\n\n    adjustEdge(seriesModel.getGraph(), getNodeGlobalScale(seriesModel));\n    var data = seriesModel.getData();\n    symbolDraw.updateData(data);\n    var edgeData = seriesModel.getEdgeData(); // TODO: TYPE\n\n    lineDraw.updateData(edgeData);\n\n    this._updateNodeAndLinkScale();\n\n    this._updateController(seriesModel, ecModel, api);\n\n    clearTimeout(this._layoutTimeout);\n    var forceLayout = seriesModel.forceLayout;\n    var layoutAnimation = seriesModel.get(['force', 'layoutAnimation']);\n\n    if (forceLayout) {\n      this._startForceLayoutIteration(forceLayout, layoutAnimation);\n    }\n\n    var layout = seriesModel.get('layout');\n    data.graph.eachNode(function (node) {\n      var idx = node.dataIndex;\n      var el = node.getGraphicEl();\n      var itemModel = node.getModel();\n\n      if (!el) {\n        return;\n      } // Update draggable\n\n\n      el.off('drag').off('dragend');\n      var draggable = itemModel.get('draggable');\n\n      if (draggable) {\n        el.on('drag', function (e) {\n          switch (layout) {\n            case 'force':\n              forceLayout.warmUp();\n              !_this._layouting && _this._startForceLayoutIteration(forceLayout, layoutAnimation);\n              forceLayout.setFixed(idx); // Write position back to layout\n\n              data.setItemLayout(idx, [el.x, el.y]);\n              break;\n\n            case 'circular':\n              data.setItemLayout(idx, [el.x, el.y]); // mark node fixed\n\n              node.setLayout({\n                fixed: true\n              }, true); // recalculate circular layout\n\n              circularLayout(seriesModel, 'symbolSize', node, [e.offsetX, e.offsetY]);\n\n              _this.updateLayout(seriesModel);\n\n              break;\n\n            case 'none':\n            default:\n              data.setItemLayout(idx, [el.x, el.y]); // update edge\n\n              simpleLayoutEdge(seriesModel.getGraph(), seriesModel);\n\n              _this.updateLayout(seriesModel);\n\n              break;\n          }\n        }).on('dragend', function () {\n          if (forceLayout) {\n            forceLayout.setUnfixed(idx);\n          }\n        });\n      }\n\n      el.setDraggable(draggable, !!itemModel.get('cursor'));\n      var focus = itemModel.get(['emphasis', 'focus']);\n\n      if (focus === 'adjacency') {\n        getECData(el).focus = node.getAdjacentDataIndices();\n      }\n    });\n    data.graph.eachEdge(function (edge) {\n      var el = edge.getGraphicEl();\n      var focus = edge.getModel().get(['emphasis', 'focus']);\n\n      if (!el) {\n        return;\n      }\n\n      if (focus === 'adjacency') {\n        getECData(el).focus = {\n          edge: [edge.dataIndex],\n          node: [edge.node1.dataIndex, edge.node2.dataIndex]\n        };\n      }\n    });\n    var circularRotateLabel = seriesModel.get('layout') === 'circular' && seriesModel.get(['circular', 'rotateLabel']);\n    var cx = data.getLayout('cx');\n    var cy = data.getLayout('cy');\n    data.graph.eachNode(function (node) {\n      rotateNodeLabel(node, circularRotateLabel, cx, cy);\n    });\n    this._firstRender = false;\n  };\n\n  GraphView.prototype.dispose = function () {\n    this._controller && this._controller.dispose();\n    this._controllerHost = null;\n  };\n\n  GraphView.prototype._startForceLayoutIteration = function (forceLayout, layoutAnimation) {\n    var self = this;\n\n    (function step() {\n      forceLayout.step(function (stopped) {\n        self.updateLayout(self._model);\n        (self._layouting = !stopped) && (layoutAnimation ? self._layoutTimeout = setTimeout(step, 16) : step());\n      });\n    })();\n  };\n\n  GraphView.prototype._updateController = function (seriesModel, ecModel, api) {\n    var _this = this;\n\n    var controller = this._controller;\n    var controllerHost = this._controllerHost;\n    var group = this.group;\n    controller.setPointerChecker(function (e, x, y) {\n      var rect = group.getBoundingRect();\n      rect.applyTransform(group.transform);\n      return rect.contain(x, y) && !onIrrelevantElement(e, api, seriesModel);\n    });\n\n    if (!isViewCoordSys(seriesModel.coordinateSystem)) {\n      controller.disable();\n      return;\n    }\n\n    controller.enable(seriesModel.get('roam'));\n    controllerHost.zoomLimit = seriesModel.get('scaleLimit');\n    controllerHost.zoom = seriesModel.coordinateSystem.getZoom();\n    controller.off('pan').off('zoom').on('pan', function (e) {\n      roamHelper.updateViewOnPan(controllerHost, e.dx, e.dy);\n      api.dispatchAction({\n        seriesId: seriesModel.id,\n        type: 'graphRoam',\n        dx: e.dx,\n        dy: e.dy\n      });\n    }).on('zoom', function (e) {\n      roamHelper.updateViewOnZoom(controllerHost, e.scale, e.originX, e.originY);\n      api.dispatchAction({\n        seriesId: seriesModel.id,\n        type: 'graphRoam',\n        zoom: e.scale,\n        originX: e.originX,\n        originY: e.originY\n      });\n\n      _this._updateNodeAndLinkScale();\n\n      adjustEdge(seriesModel.getGraph(), getNodeGlobalScale(seriesModel));\n\n      _this._lineDraw.updateLayout(); // Only update label layout on zoom\n\n\n      api.updateLabelLayout();\n    });\n  };\n\n  GraphView.prototype._updateNodeAndLinkScale = function () {\n    var seriesModel = this._model;\n    var data = seriesModel.getData();\n    var nodeScale = getNodeGlobalScale(seriesModel);\n    data.eachItemGraphicEl(function (el, idx) {\n      el && el.setSymbolScale(nodeScale);\n    });\n  };\n\n  GraphView.prototype.updateLayout = function (seriesModel) {\n    adjustEdge(seriesModel.getGraph(), getNodeGlobalScale(seriesModel));\n\n    this._symbolDraw.updateLayout();\n\n    this._lineDraw.updateLayout();\n  };\n\n  GraphView.prototype.remove = function (ecModel, api) {\n    this._symbolDraw && this._symbolDraw.remove();\n    this._lineDraw && this._lineDraw.remove();\n  };\n\n  GraphView.type = 'graph';\n  return GraphView;\n}(ChartView);\n\nexport default GraphView;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport * as zrUtil from 'zrender/lib/core/util.js'; // id may be function name of Object, add a prefix to avoid this problem.\n\nfunction generateNodeKey(id) {\n  return '_EC_' + id;\n}\n\nvar Graph =\n/** @class */\nfunction () {\n  function Graph(directed) {\n    this.type = 'graph';\n    this.nodes = [];\n    this.edges = [];\n    this._nodesMap = {};\n    /**\r\n     * @type {Object.<string, module:echarts/data/Graph.Edge>}\r\n     * @private\r\n     */\n\n    this._edgesMap = {};\n    this._directed = directed || false;\n  }\n  /**\r\n   * If is directed graph\r\n   */\n\n\n  Graph.prototype.isDirected = function () {\n    return this._directed;\n  };\n\n  ;\n  /**\r\n   * Add a new node\r\n   */\n\n  Graph.prototype.addNode = function (id, dataIndex) {\n    id = id == null ? '' + dataIndex : '' + id;\n    var nodesMap = this._nodesMap;\n\n    if (nodesMap[generateNodeKey(id)]) {\n      if (process.env.NODE_ENV !== 'production') {\n        console.error('Graph nodes have duplicate name or id');\n      }\n\n      return;\n    }\n\n    var node = new GraphNode(id, dataIndex);\n    node.hostGraph = this;\n    this.nodes.push(node);\n    nodesMap[generateNodeKey(id)] = node;\n    return node;\n  };\n\n  ;\n  /**\r\n   * Get node by data index\r\n   */\n\n  Graph.prototype.getNodeByIndex = function (dataIndex) {\n    var rawIdx = this.data.getRawIndex(dataIndex);\n    return this.nodes[rawIdx];\n  };\n\n  ;\n  /**\r\n   * Get node by id\r\n   */\n\n  Graph.prototype.getNodeById = function (id) {\n    return this._nodesMap[generateNodeKey(id)];\n  };\n\n  ;\n  /**\r\n   * Add a new edge\r\n   */\n\n  Graph.prototype.addEdge = function (n1, n2, dataIndex) {\n    var nodesMap = this._nodesMap;\n    var edgesMap = this._edgesMap; // PENDING\n\n    if (zrUtil.isNumber(n1)) {\n      n1 = this.nodes[n1];\n    }\n\n    if (zrUtil.isNumber(n2)) {\n      n2 = this.nodes[n2];\n    }\n\n    if (!(n1 instanceof GraphNode)) {\n      n1 = nodesMap[generateNodeKey(n1)];\n    }\n\n    if (!(n2 instanceof GraphNode)) {\n      n2 = nodesMap[generateNodeKey(n2)];\n    }\n\n    if (!n1 || !n2) {\n      return;\n    }\n\n    var key = n1.id + '-' + n2.id;\n    var edge = new GraphEdge(n1, n2, dataIndex);\n    edge.hostGraph = this;\n\n    if (this._directed) {\n      n1.outEdges.push(edge);\n      n2.inEdges.push(edge);\n    }\n\n    n1.edges.push(edge);\n\n    if (n1 !== n2) {\n      n2.edges.push(edge);\n    }\n\n    this.edges.push(edge);\n    edgesMap[key] = edge;\n    return edge;\n  };\n\n  ;\n  /**\r\n   * Get edge by data index\r\n   */\n\n  Graph.prototype.getEdgeByIndex = function (dataIndex) {\n    var rawIdx = this.edgeData.getRawIndex(dataIndex);\n    return this.edges[rawIdx];\n  };\n\n  ;\n  /**\r\n   * Get edge by two linked nodes\r\n   */\n\n  Graph.prototype.getEdge = function (n1, n2) {\n    if (n1 instanceof GraphNode) {\n      n1 = n1.id;\n    }\n\n    if (n2 instanceof GraphNode) {\n      n2 = n2.id;\n    }\n\n    var edgesMap = this._edgesMap;\n\n    if (this._directed) {\n      return edgesMap[n1 + '-' + n2];\n    } else {\n      return edgesMap[n1 + '-' + n2] || edgesMap[n2 + '-' + n1];\n    }\n  };\n\n  ;\n  /**\r\n   * Iterate all nodes\r\n   */\n\n  Graph.prototype.eachNode = function (cb, context) {\n    var nodes = this.nodes;\n    var len = nodes.length;\n\n    for (var i = 0; i < len; i++) {\n      if (nodes[i].dataIndex >= 0) {\n        cb.call(context, nodes[i], i);\n      }\n    }\n  };\n\n  ;\n  /**\r\n   * Iterate all edges\r\n   */\n\n  Graph.prototype.eachEdge = function (cb, context) {\n    var edges = this.edges;\n    var len = edges.length;\n\n    for (var i = 0; i < len; i++) {\n      if (edges[i].dataIndex >= 0 && edges[i].node1.dataIndex >= 0 && edges[i].node2.dataIndex >= 0) {\n        cb.call(context, edges[i], i);\n      }\n    }\n  };\n\n  ;\n  /**\r\n   * Breadth first traverse\r\n   * Return true to stop traversing\r\n   */\n\n  Graph.prototype.breadthFirstTraverse = function (cb, startNode, direction, context) {\n    if (!(startNode instanceof GraphNode)) {\n      startNode = this._nodesMap[generateNodeKey(startNode)];\n    }\n\n    if (!startNode) {\n      return;\n    }\n\n    var edgeType = direction === 'out' ? 'outEdges' : direction === 'in' ? 'inEdges' : 'edges';\n\n    for (var i = 0; i < this.nodes.length; i++) {\n      this.nodes[i].__visited = false;\n    }\n\n    if (cb.call(context, startNode, null)) {\n      return;\n    }\n\n    var queue = [startNode];\n\n    while (queue.length) {\n      var currentNode = queue.shift();\n      var edges = currentNode[edgeType];\n\n      for (var i = 0; i < edges.length; i++) {\n        var e = edges[i];\n        var otherNode = e.node1 === currentNode ? e.node2 : e.node1;\n\n        if (!otherNode.__visited) {\n          if (cb.call(context, otherNode, currentNode)) {\n            // Stop traversing\n            return;\n          }\n\n          queue.push(otherNode);\n          otherNode.__visited = true;\n        }\n      }\n    }\n  };\n\n  ; // TODO\n  // depthFirstTraverse(\n  //     cb, startNode, direction, context\n  // ) {\n  // };\n  // Filter update\n\n  Graph.prototype.update = function () {\n    var data = this.data;\n    var edgeData = this.edgeData;\n    var nodes = this.nodes;\n    var edges = this.edges;\n\n    for (var i = 0, len = nodes.length; i < len; i++) {\n      nodes[i].dataIndex = -1;\n    }\n\n    for (var i = 0, len = data.count(); i < len; i++) {\n      nodes[data.getRawIndex(i)].dataIndex = i;\n    }\n\n    edgeData.filterSelf(function (idx) {\n      var edge = edges[edgeData.getRawIndex(idx)];\n      return edge.node1.dataIndex >= 0 && edge.node2.dataIndex >= 0;\n    }); // Update edge\n\n    for (var i = 0, len = edges.length; i < len; i++) {\n      edges[i].dataIndex = -1;\n    }\n\n    for (var i = 0, len = edgeData.count(); i < len; i++) {\n      edges[edgeData.getRawIndex(i)].dataIndex = i;\n    }\n  };\n\n  ;\n  /**\r\n   * @return {module:echarts/data/Graph}\r\n   */\n\n  Graph.prototype.clone = function () {\n    var graph = new Graph(this._directed);\n    var nodes = this.nodes;\n    var edges = this.edges;\n\n    for (var i = 0; i < nodes.length; i++) {\n      graph.addNode(nodes[i].id, nodes[i].dataIndex);\n    }\n\n    for (var i = 0; i < edges.length; i++) {\n      var e = edges[i];\n      graph.addEdge(e.node1.id, e.node2.id, e.dataIndex);\n    }\n\n    return graph;\n  };\n\n  ;\n  return Graph;\n}();\n\nvar GraphNode =\n/** @class */\nfunction () {\n  function GraphNode(id, dataIndex) {\n    this.inEdges = [];\n    this.outEdges = [];\n    this.edges = [];\n    this.dataIndex = -1;\n    this.id = id == null ? '' : id;\n    this.dataIndex = dataIndex == null ? -1 : dataIndex;\n  }\n  /**\r\n   * @return {number}\r\n   */\n\n\n  GraphNode.prototype.degree = function () {\n    return this.edges.length;\n  };\n  /**\r\n   * @return {number}\r\n   */\n\n\n  GraphNode.prototype.inDegree = function () {\n    return this.inEdges.length;\n  };\n  /**\r\n  * @return {number}\r\n  */\n\n\n  GraphNode.prototype.outDegree = function () {\n    return this.outEdges.length;\n  };\n\n  GraphNode.prototype.getModel = function (path) {\n    if (this.dataIndex < 0) {\n      return;\n    }\n\n    var graph = this.hostGraph;\n    var itemModel = graph.data.getItemModel(this.dataIndex);\n    return itemModel.getModel(path);\n  };\n\n  GraphNode.prototype.getAdjacentDataIndices = function () {\n    var dataIndices = {\n      edge: [],\n      node: []\n    };\n\n    for (var i = 0; i < this.edges.length; i++) {\n      var adjacentEdge = this.edges[i];\n\n      if (adjacentEdge.dataIndex < 0) {\n        continue;\n      }\n\n      dataIndices.edge.push(adjacentEdge.dataIndex);\n      dataIndices.node.push(adjacentEdge.node1.dataIndex, adjacentEdge.node2.dataIndex);\n    }\n\n    return dataIndices;\n  };\n\n  GraphNode.prototype.getTrajectoryDataIndices = function () {\n    var connectedEdgesMap = zrUtil.createHashMap();\n    var connectedNodesMap = zrUtil.createHashMap();\n\n    for (var i = 0; i < this.edges.length; i++) {\n      var adjacentEdge = this.edges[i];\n\n      if (adjacentEdge.dataIndex < 0) {\n        continue;\n      }\n\n      connectedEdgesMap.set(adjacentEdge.dataIndex, true);\n      var sourceNodesQueue = [adjacentEdge.node1];\n      var targetNodesQueue = [adjacentEdge.node2];\n      var nodeIteratorIndex = 0;\n\n      while (nodeIteratorIndex < sourceNodesQueue.length) {\n        var sourceNode = sourceNodesQueue[nodeIteratorIndex];\n        nodeIteratorIndex++;\n        connectedNodesMap.set(sourceNode.dataIndex, true);\n\n        for (var j = 0; j < sourceNode.inEdges.length; j++) {\n          connectedEdgesMap.set(sourceNode.inEdges[j].dataIndex, true);\n          sourceNodesQueue.push(sourceNode.inEdges[j].node1);\n        }\n      }\n\n      nodeIteratorIndex = 0;\n\n      while (nodeIteratorIndex < targetNodesQueue.length) {\n        var targetNode = targetNodesQueue[nodeIteratorIndex];\n        nodeIteratorIndex++;\n        connectedNodesMap.set(targetNode.dataIndex, true);\n\n        for (var j = 0; j < targetNode.outEdges.length; j++) {\n          connectedEdgesMap.set(targetNode.outEdges[j].dataIndex, true);\n          targetNodesQueue.push(targetNode.outEdges[j].node2);\n        }\n      }\n    }\n\n    return {\n      edge: connectedEdgesMap.keys(),\n      node: connectedNodesMap.keys()\n    };\n  };\n\n  return GraphNode;\n}();\n\nvar GraphEdge =\n/** @class */\nfunction () {\n  function GraphEdge(n1, n2, dataIndex) {\n    this.dataIndex = -1;\n    this.node1 = n1;\n    this.node2 = n2;\n    this.dataIndex = dataIndex == null ? -1 : dataIndex;\n  } // eslint-disable-next-line @typescript-eslint/no-unused-vars\n\n\n  GraphEdge.prototype.getModel = function (path) {\n    if (this.dataIndex < 0) {\n      return;\n    }\n\n    var graph = this.hostGraph;\n    var itemModel = graph.edgeData.getItemModel(this.dataIndex);\n    return itemModel.getModel(path);\n  };\n\n  GraphEdge.prototype.getAdjacentDataIndices = function () {\n    return {\n      edge: [this.dataIndex],\n      node: [this.node1.dataIndex, this.node2.dataIndex]\n    };\n  };\n\n  GraphEdge.prototype.getTrajectoryDataIndices = function () {\n    var connectedEdgesMap = zrUtil.createHashMap();\n    var connectedNodesMap = zrUtil.createHashMap();\n    connectedEdgesMap.set(this.dataIndex, true);\n    var sourceNodes = [this.node1];\n    var targetNodes = [this.node2];\n    var nodeIteratorIndex = 0;\n\n    while (nodeIteratorIndex < sourceNodes.length) {\n      var sourceNode = sourceNodes[nodeIteratorIndex];\n      nodeIteratorIndex++;\n      connectedNodesMap.set(sourceNode.dataIndex, true);\n\n      for (var j = 0; j < sourceNode.inEdges.length; j++) {\n        connectedEdgesMap.set(sourceNode.inEdges[j].dataIndex, true);\n        sourceNodes.push(sourceNode.inEdges[j].node1);\n      }\n    }\n\n    nodeIteratorIndex = 0;\n\n    while (nodeIteratorIndex < targetNodes.length) {\n      var targetNode = targetNodes[nodeIteratorIndex];\n      nodeIteratorIndex++;\n      connectedNodesMap.set(targetNode.dataIndex, true);\n\n      for (var j = 0; j < targetNode.outEdges.length; j++) {\n        connectedEdgesMap.set(targetNode.outEdges[j].dataIndex, true);\n        targetNodes.push(targetNode.outEdges[j].node2);\n      }\n    }\n\n    return {\n      edge: connectedEdgesMap.keys(),\n      node: connectedNodesMap.keys()\n    };\n  };\n\n  return GraphEdge;\n}();\n\nfunction createGraphDataProxyMixin(hostName, dataName) {\n  return {\n    /**\r\n     * @param Default 'value'. can be 'a', 'b', 'c', 'd', 'e'.\r\n     */\n    getValue: function (dimension) {\n      var data = this[hostName][dataName];\n      return data.getStore().get(data.getDimensionIndex(dimension || 'value'), this.dataIndex);\n    },\n    // TODO: TYPE stricter type.\n    setVisual: function (key, value) {\n      this.dataIndex >= 0 && this[hostName][dataName].setItemVisual(this.dataIndex, key, value);\n    },\n    getVisual: function (key) {\n      return this[hostName][dataName].getItemVisual(this.dataIndex, key);\n    },\n    setLayout: function (layout, merge) {\n      this.dataIndex >= 0 && this[hostName][dataName].setItemLayout(this.dataIndex, layout, merge);\n    },\n    getLayout: function () {\n      return this[hostName][dataName].getItemLayout(this.dataIndex);\n    },\n    getGraphicEl: function () {\n      return this[hostName][dataName].getItemGraphicEl(this.dataIndex);\n    },\n    getRawIndex: function () {\n      return this[hostName][dataName].getRawIndex(this.dataIndex);\n    }\n  };\n}\n\n;\n;\n;\nzrUtil.mixin(GraphNode, createGraphDataProxyMixin('hostGraph', 'data'));\nzrUtil.mixin(GraphEdge, createGraphDataProxyMixin('hostGraph', 'edgeData'));\nexport default Graph;\nexport { GraphNode, GraphEdge };","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport * as zrUtil from 'zrender/lib/core/util.js';\nimport SeriesData from '../../data/SeriesData.js';\nimport Graph from '../../data/Graph.js';\nimport linkSeriesData from '../../data/helper/linkSeriesData.js';\nimport prepareSeriesDataSchema from '../../data/helper/createDimensions.js';\nimport CoordinateSystem from '../../core/CoordinateSystem.js';\nimport createSeriesData from './createSeriesData.js';\nimport { convertOptionIdName } from '../../util/model.js';\nexport default function createGraphFromNodeEdge(nodes, edges, seriesModel, directed, beforeLink) {\n  // ??? TODO\n  // support dataset?\n  var graph = new Graph(directed);\n\n  for (var i = 0; i < nodes.length; i++) {\n    graph.addNode(zrUtil.retrieve( // Id, name, dataIndex\n    nodes[i].id, nodes[i].name, i), i);\n  }\n\n  var linkNameList = [];\n  var validEdges = [];\n  var linkCount = 0;\n\n  for (var i = 0; i < edges.length; i++) {\n    var link = edges[i];\n    var source = link.source;\n    var target = link.target; // addEdge may fail when source or target not exists\n\n    if (graph.addEdge(source, target, linkCount)) {\n      validEdges.push(link);\n      linkNameList.push(zrUtil.retrieve(convertOptionIdName(link.id, null), source + ' > ' + target));\n      linkCount++;\n    }\n  }\n\n  var coordSys = seriesModel.get('coordinateSystem');\n  var nodeData;\n\n  if (coordSys === 'cartesian2d' || coordSys === 'polar') {\n    nodeData = createSeriesData(nodes, seriesModel);\n  } else {\n    var coordSysCtor = CoordinateSystem.get(coordSys);\n    var coordDimensions = coordSysCtor ? coordSysCtor.dimensions || [] : []; // FIXME: Some geo do not need `value` dimenson, whereas `calendar` needs\n    // `value` dimension, but graph need `value` dimension. It's better to\n    // uniform this behavior.\n\n    if (zrUtil.indexOf(coordDimensions, 'value') < 0) {\n      coordDimensions.concat(['value']);\n    }\n\n    var dimensions = prepareSeriesDataSchema(nodes, {\n      coordDimensions: coordDimensions,\n      encodeDefine: seriesModel.getEncode()\n    }).dimensions;\n    nodeData = new SeriesData(dimensions, seriesModel);\n    nodeData.initData(nodes);\n  }\n\n  var edgeData = new SeriesData(['value'], seriesModel);\n  edgeData.initData(validEdges, linkNameList);\n  beforeLink && beforeLink(nodeData, edgeData);\n  linkSeriesData({\n    mainData: nodeData,\n    struct: graph,\n    structAttr: 'graph',\n    datas: {\n      node: nodeData,\n      edge: edgeData\n    },\n    datasAttr: {\n      node: 'data',\n      edge: 'edgeData'\n    }\n  }); // Update dataIndex of nodes and edges because invalid edge may be removed\n\n  graph.update();\n  return graph;\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { __extends } from \"tslib\";\nimport SeriesData from '../../data/SeriesData.js';\nimport * as zrUtil from 'zrender/lib/core/util.js';\nimport { defaultEmphasis } from '../../util/model.js';\nimport Model from '../../model/Model.js';\nimport createGraphFromNodeEdge from '../helper/createGraphFromNodeEdge.js';\nimport LegendVisualProvider from '../../visual/LegendVisualProvider.js';\nimport SeriesModel from '../../model/Series.js';\nimport { createTooltipMarkup } from '../../component/tooltip/tooltipMarkup.js';\nimport { defaultSeriesFormatTooltip } from '../../component/tooltip/seriesFormatTooltip.js';\nimport { initCurvenessList, createEdgeMapForCurveness } from '../helper/multipleGraphEdgeHelper.js';\n\nvar GraphSeriesModel =\n/** @class */\nfunction (_super) {\n  __extends(GraphSeriesModel, _super);\n\n  function GraphSeriesModel() {\n    var _this = _super !== null && _super.apply(this, arguments) || this;\n\n    _this.type = GraphSeriesModel.type;\n    _this.hasSymbolVisual = true;\n    return _this;\n  }\n\n  GraphSeriesModel.prototype.init = function (option) {\n    _super.prototype.init.apply(this, arguments);\n\n    var self = this;\n\n    function getCategoriesData() {\n      return self._categoriesData;\n    } // Provide data for legend select\n\n\n    this.legendVisualProvider = new LegendVisualProvider(getCategoriesData, getCategoriesData);\n    this.fillDataTextStyle(option.edges || option.links);\n\n    this._updateCategoriesData();\n  };\n\n  GraphSeriesModel.prototype.mergeOption = function (option) {\n    _super.prototype.mergeOption.apply(this, arguments);\n\n    this.fillDataTextStyle(option.edges || option.links);\n\n    this._updateCategoriesData();\n  };\n\n  GraphSeriesModel.prototype.mergeDefaultAndTheme = function (option) {\n    _super.prototype.mergeDefaultAndTheme.apply(this, arguments);\n\n    defaultEmphasis(option, 'edgeLabel', ['show']);\n  };\n\n  GraphSeriesModel.prototype.getInitialData = function (option, ecModel) {\n    var edges = option.edges || option.links || [];\n    var nodes = option.data || option.nodes || [];\n    var self = this;\n\n    if (nodes && edges) {\n      // auto curveness\n      initCurvenessList(this);\n      var graph = createGraphFromNodeEdge(nodes, edges, this, true, beforeLink);\n      zrUtil.each(graph.edges, function (edge) {\n        createEdgeMapForCurveness(edge.node1, edge.node2, this, edge.dataIndex);\n      }, this);\n      return graph.data;\n    }\n\n    function beforeLink(nodeData, edgeData) {\n      // Overwrite nodeData.getItemModel to\n      nodeData.wrapMethod('getItemModel', function (model) {\n        var categoriesModels = self._categoriesModels;\n        var categoryIdx = model.getShallow('category');\n        var categoryModel = categoriesModels[categoryIdx];\n\n        if (categoryModel) {\n          categoryModel.parentModel = model.parentModel;\n          model.parentModel = categoryModel;\n        }\n\n        return model;\n      }); // TODO Inherit resolveParentPath by default in Model#getModel?\n\n      var oldGetModel = Model.prototype.getModel;\n\n      function newGetModel(path, parentModel) {\n        var model = oldGetModel.call(this, path, parentModel);\n        model.resolveParentPath = resolveParentPath;\n        return model;\n      }\n\n      edgeData.wrapMethod('getItemModel', function (model) {\n        model.resolveParentPath = resolveParentPath;\n        model.getModel = newGetModel;\n        return model;\n      });\n\n      function resolveParentPath(pathArr) {\n        if (pathArr && (pathArr[0] === 'label' || pathArr[1] === 'label')) {\n          var newPathArr = pathArr.slice();\n\n          if (pathArr[0] === 'label') {\n            newPathArr[0] = 'edgeLabel';\n          } else if (pathArr[1] === 'label') {\n            newPathArr[1] = 'edgeLabel';\n          }\n\n          return newPathArr;\n        }\n\n        return pathArr;\n      }\n    }\n  };\n\n  GraphSeriesModel.prototype.getGraph = function () {\n    return this.getData().graph;\n  };\n\n  GraphSeriesModel.prototype.getEdgeData = function () {\n    return this.getGraph().edgeData;\n  };\n\n  GraphSeriesModel.prototype.getCategoriesData = function () {\n    return this._categoriesData;\n  };\n\n  GraphSeriesModel.prototype.formatTooltip = function (dataIndex, multipleSeries, dataType) {\n    if (dataType === 'edge') {\n      var nodeData = this.getData();\n      var params = this.getDataParams(dataIndex, dataType);\n      var edge = nodeData.graph.getEdgeByIndex(dataIndex);\n      var sourceName = nodeData.getName(edge.node1.dataIndex);\n      var targetName = nodeData.getName(edge.node2.dataIndex);\n      var nameArr = [];\n      sourceName != null && nameArr.push(sourceName);\n      targetName != null && nameArr.push(targetName);\n      return createTooltipMarkup('nameValue', {\n        name: nameArr.join(' > '),\n        value: params.value,\n        noValue: params.value == null\n      });\n    } // dataType === 'node' or empty\n\n\n    var nodeMarkup = defaultSeriesFormatTooltip({\n      series: this,\n      dataIndex: dataIndex,\n      multipleSeries: multipleSeries\n    });\n    return nodeMarkup;\n  };\n\n  GraphSeriesModel.prototype._updateCategoriesData = function () {\n    var categories = zrUtil.map(this.option.categories || [], function (category) {\n      // Data must has value\n      return category.value != null ? category : zrUtil.extend({\n        value: 0\n      }, category);\n    });\n    var categoriesData = new SeriesData(['value'], this);\n    categoriesData.initData(categories);\n    this._categoriesData = categoriesData;\n    this._categoriesModels = categoriesData.mapArray(function (idx) {\n      return categoriesData.getItemModel(idx);\n    });\n  };\n\n  GraphSeriesModel.prototype.setZoom = function (zoom) {\n    this.option.zoom = zoom;\n  };\n\n  GraphSeriesModel.prototype.setCenter = function (center) {\n    this.option.center = center;\n  };\n\n  GraphSeriesModel.prototype.isAnimationEnabled = function () {\n    return _super.prototype.isAnimationEnabled.call(this) // Not enable animation when do force layout\n    && !(this.get('layout') === 'force' && this.get(['force', 'layoutAnimation']));\n  };\n\n  GraphSeriesModel.type = 'series.graph';\n  GraphSeriesModel.dependencies = ['grid', 'polar', 'geo', 'singleAxis', 'calendar'];\n  GraphSeriesModel.defaultOption = {\n    // zlevel: 0,\n    z: 2,\n    coordinateSystem: 'view',\n    // Default option for all coordinate systems\n    // xAxisIndex: 0,\n    // yAxisIndex: 0,\n    // polarIndex: 0,\n    // geoIndex: 0,\n    legendHoverLink: true,\n    layout: null,\n    // Configuration of circular layout\n    circular: {\n      rotateLabel: false\n    },\n    // Configuration of force directed layout\n    force: {\n      initLayout: null,\n      // Node repulsion. Can be an array to represent range.\n      repulsion: [0, 50],\n      gravity: 0.1,\n      // Initial friction\n      friction: 0.6,\n      // Edge length. Can be an array to represent range.\n      edgeLength: 30,\n      layoutAnimation: true\n    },\n    left: 'center',\n    top: 'center',\n    // right: null,\n    // bottom: null,\n    // width: '80%',\n    // height: '80%',\n    symbol: 'circle',\n    symbolSize: 10,\n    edgeSymbol: ['none', 'none'],\n    edgeSymbolSize: 10,\n    edgeLabel: {\n      position: 'middle',\n      distance: 5\n    },\n    draggable: false,\n    roam: false,\n    // Default on center of graph\n    center: null,\n    zoom: 1,\n    // Symbol size scale ratio in roam\n    nodeScaleRatio: 0.6,\n    // cursor: null,\n    // categories: [],\n    // data: []\n    // Or\n    // nodes: []\n    //\n    // links: []\n    // Or\n    // edges: []\n    label: {\n      show: false,\n      formatter: '{b}'\n    },\n    itemStyle: {},\n    lineStyle: {\n      color: '#aaa',\n      width: 1,\n      opacity: 0.5\n    },\n    emphasis: {\n      scale: true,\n      label: {\n        show: true\n      }\n    },\n    select: {\n      itemStyle: {\n        borderColor: '#212121'\n      }\n    }\n  };\n  return GraphSeriesModel;\n}(SeriesModel);\n\nexport default GraphSeriesModel;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport categoryFilter from './categoryFilter.js';\nimport categoryVisual from './categoryVisual.js';\nimport edgeVisual from './edgeVisual.js';\nimport simpleLayout from './simpleLayout.js';\nimport circularLayout from './circularLayout.js';\nimport forceLayout from './forceLayout.js';\nimport createView from './createView.js';\nimport View from '../../coord/View.js';\nimport GraphView from './GraphView.js';\nimport GraphSeriesModel from './GraphSeries.js';\nimport { updateCenterAndZoom } from '../../action/roamHelper.js';\nimport { noop } from 'zrender/lib/core/util.js';\nvar actionInfo = {\n  type: 'graphRoam',\n  event: 'graphRoam',\n  update: 'none'\n};\nexport function install(registers) {\n  registers.registerChartView(GraphView);\n  registers.registerSeriesModel(GraphSeriesModel);\n  registers.registerProcessor(categoryFilter);\n  registers.registerVisual(categoryVisual);\n  registers.registerVisual(edgeVisual);\n  registers.registerLayout(simpleLayout);\n  registers.registerLayout(registers.PRIORITY.VISUAL.POST_CHART_LAYOUT, circularLayout);\n  registers.registerLayout(forceLayout);\n  registers.registerCoordinateSystem('graphView', {\n    dimensions: View.dimensions,\n    create: createView\n  }); // Register legacy focus actions\n\n  registers.registerAction({\n    type: 'focusNodeAdjacency',\n    event: 'focusNodeAdjacency',\n    update: 'series:focusNodeAdjacency'\n  }, noop);\n  registers.registerAction({\n    type: 'unfocusNodeAdjacency',\n    event: 'unfocusNodeAdjacency',\n    update: 'series:unfocusNodeAdjacency'\n  }, noop); // Register roam action.\n\n  registers.registerAction(actionInfo, function (payload, ecModel, api) {\n    ecModel.eachComponent({\n      mainType: 'series',\n      query: payload\n    }, function (seriesModel) {\n      var coordSys = seriesModel.coordinateSystem;\n      var res = updateCenterAndZoom(coordSys, payload, undefined, api);\n      seriesModel.setCenter && seriesModel.setCenter(res.center);\n      seriesModel.setZoom && seriesModel.setZoom(res.zoom);\n    });\n  });\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { __extends } from \"tslib\";\nimport Path from 'zrender/lib/graphic/Path.js';\n\nvar PointerShape =\n/** @class */\nfunction () {\n  function PointerShape() {\n    this.angle = 0;\n    this.width = 10;\n    this.r = 10;\n    this.x = 0;\n    this.y = 0;\n  }\n\n  return PointerShape;\n}();\n\nvar PointerPath =\n/** @class */\nfunction (_super) {\n  __extends(PointerPath, _super);\n\n  function PointerPath(opts) {\n    var _this = _super.call(this, opts) || this;\n\n    _this.type = 'pointer';\n    return _this;\n  }\n\n  PointerPath.prototype.getDefaultShape = function () {\n    return new PointerShape();\n  };\n\n  PointerPath.prototype.buildPath = function (ctx, shape) {\n    var mathCos = Math.cos;\n    var mathSin = Math.sin;\n    var r = shape.r;\n    var width = shape.width;\n    var angle = shape.angle;\n    var x = shape.x - mathCos(angle) * width * (width >= r / 3 ? 1 : 2);\n    var y = shape.y - mathSin(angle) * width * (width >= r / 3 ? 1 : 2);\n    angle = shape.angle - Math.PI / 2;\n    ctx.moveTo(x, y);\n    ctx.lineTo(shape.x + mathCos(angle) * width, shape.y + mathSin(angle) * width);\n    ctx.lineTo(shape.x + mathCos(shape.angle) * r, shape.y + mathSin(shape.angle) * r);\n    ctx.lineTo(shape.x - mathCos(angle) * width, shape.y - mathSin(angle) * width);\n    ctx.lineTo(x, y);\n  };\n\n  return PointerPath;\n}(Path);\n\nexport default PointerPath;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { __extends } from \"tslib\";\nimport PointerPath from './PointerPath.js';\nimport * as graphic from '../../util/graphic.js';\nimport { setStatesStylesFromModel, toggleHoverEmphasis } from '../../util/states.js';\nimport { createTextStyle, setLabelValueAnimation, animateLabelValue } from '../../label/labelStyle.js';\nimport ChartView from '../../view/Chart.js';\nimport { parsePercent, round, linearMap } from '../../util/number.js';\nimport Sausage from '../../util/shape/sausage.js';\nimport { createSymbol } from '../../util/symbol.js';\nimport ZRImage from 'zrender/lib/graphic/Image.js';\nimport { extend, isFunction, isString, isNumber, each } from 'zrender/lib/core/util.js';\nimport { setCommonECData } from '../../util/innerStore.js';\nimport { normalizeArcAngles } from 'zrender/lib/core/PathProxy.js';\n\nfunction parsePosition(seriesModel, api) {\n  var center = seriesModel.get('center');\n  var width = api.getWidth();\n  var height = api.getHeight();\n  var size = Math.min(width, height);\n  var cx = parsePercent(center[0], api.getWidth());\n  var cy = parsePercent(center[1], api.getHeight());\n  var r = parsePercent(seriesModel.get('radius'), size / 2);\n  return {\n    cx: cx,\n    cy: cy,\n    r: r\n  };\n}\n\nfunction formatLabel(value, labelFormatter) {\n  var label = value == null ? '' : value + '';\n\n  if (labelFormatter) {\n    if (isString(labelFormatter)) {\n      label = labelFormatter.replace('{value}', label);\n    } else if (isFunction(labelFormatter)) {\n      label = labelFormatter(value);\n    }\n  }\n\n  return label;\n}\n\nvar GaugeView =\n/** @class */\nfunction (_super) {\n  __extends(GaugeView, _super);\n\n  function GaugeView() {\n    var _this = _super !== null && _super.apply(this, arguments) || this;\n\n    _this.type = GaugeView.type;\n    return _this;\n  }\n\n  GaugeView.prototype.render = function (seriesModel, ecModel, api) {\n    this.group.removeAll();\n    var colorList = seriesModel.get(['axisLine', 'lineStyle', 'color']);\n    var posInfo = parsePosition(seriesModel, api);\n\n    this._renderMain(seriesModel, ecModel, api, colorList, posInfo);\n\n    this._data = seriesModel.getData();\n  };\n\n  GaugeView.prototype.dispose = function () {};\n\n  GaugeView.prototype._renderMain = function (seriesModel, ecModel, api, colorList, posInfo) {\n    var group = this.group;\n    var clockwise = seriesModel.get('clockwise');\n    var startAngle = -seriesModel.get('startAngle') / 180 * Math.PI;\n    var endAngle = -seriesModel.get('endAngle') / 180 * Math.PI;\n    var axisLineModel = seriesModel.getModel('axisLine');\n    var roundCap = axisLineModel.get('roundCap');\n    var MainPath = roundCap ? Sausage : graphic.Sector;\n    var showAxis = axisLineModel.get('show');\n    var lineStyleModel = axisLineModel.getModel('lineStyle');\n    var axisLineWidth = lineStyleModel.get('width');\n    var angles = [startAngle, endAngle];\n    normalizeArcAngles(angles, !clockwise);\n    startAngle = angles[0];\n    endAngle = angles[1];\n    var angleRangeSpan = endAngle - startAngle;\n    var prevEndAngle = startAngle;\n    var sectors = [];\n\n    for (var i = 0; showAxis && i < colorList.length; i++) {\n      // Clamp\n      var percent = Math.min(Math.max(colorList[i][0], 0), 1);\n      endAngle = startAngle + angleRangeSpan * percent;\n      var sector = new MainPath({\n        shape: {\n          startAngle: prevEndAngle,\n          endAngle: endAngle,\n          cx: posInfo.cx,\n          cy: posInfo.cy,\n          clockwise: clockwise,\n          r0: posInfo.r - axisLineWidth,\n          r: posInfo.r\n        },\n        silent: true\n      });\n      sector.setStyle({\n        fill: colorList[i][1]\n      });\n      sector.setStyle(lineStyleModel.getLineStyle( // Because we use sector to simulate arc\n      // so the properties for stroking are useless\n      ['color', 'width']));\n      sectors.push(sector);\n      prevEndAngle = endAngle;\n    }\n\n    sectors.reverse();\n    each(sectors, function (sector) {\n      return group.add(sector);\n    });\n\n    var getColor = function (percent) {\n      // Less than 0\n      if (percent <= 0) {\n        return colorList[0][1];\n      }\n\n      var i;\n\n      for (i = 0; i < colorList.length; i++) {\n        if (colorList[i][0] >= percent && (i === 0 ? 0 : colorList[i - 1][0]) < percent) {\n          return colorList[i][1];\n        }\n      } // More than 1\n\n\n      return colorList[i - 1][1];\n    };\n\n    this._renderTicks(seriesModel, ecModel, api, getColor, posInfo, startAngle, endAngle, clockwise, axisLineWidth);\n\n    this._renderTitleAndDetail(seriesModel, ecModel, api, getColor, posInfo);\n\n    this._renderAnchor(seriesModel, posInfo);\n\n    this._renderPointer(seriesModel, ecModel, api, getColor, posInfo, startAngle, endAngle, clockwise, axisLineWidth);\n  };\n\n  GaugeView.prototype._renderTicks = function (seriesModel, ecModel, api, getColor, posInfo, startAngle, endAngle, clockwise, axisLineWidth) {\n    var group = this.group;\n    var cx = posInfo.cx;\n    var cy = posInfo.cy;\n    var r = posInfo.r;\n    var minVal = +seriesModel.get('min');\n    var maxVal = +seriesModel.get('max');\n    var splitLineModel = seriesModel.getModel('splitLine');\n    var tickModel = seriesModel.getModel('axisTick');\n    var labelModel = seriesModel.getModel('axisLabel');\n    var splitNumber = seriesModel.get('splitNumber');\n    var subSplitNumber = tickModel.get('splitNumber');\n    var splitLineLen = parsePercent(splitLineModel.get('length'), r);\n    var tickLen = parsePercent(tickModel.get('length'), r);\n    var angle = startAngle;\n    var step = (endAngle - startAngle) / splitNumber;\n    var subStep = step / subSplitNumber;\n    var splitLineStyle = splitLineModel.getModel('lineStyle').getLineStyle();\n    var tickLineStyle = tickModel.getModel('lineStyle').getLineStyle();\n    var splitLineDistance = splitLineModel.get('distance');\n    var unitX;\n    var unitY;\n\n    for (var i = 0; i <= splitNumber; i++) {\n      unitX = Math.cos(angle);\n      unitY = Math.sin(angle); // Split line\n\n      if (splitLineModel.get('show')) {\n        var distance = splitLineDistance ? splitLineDistance + axisLineWidth : axisLineWidth;\n        var splitLine = new graphic.Line({\n          shape: {\n            x1: unitX * (r - distance) + cx,\n            y1: unitY * (r - distance) + cy,\n            x2: unitX * (r - splitLineLen - distance) + cx,\n            y2: unitY * (r - splitLineLen - distance) + cy\n          },\n          style: splitLineStyle,\n          silent: true\n        });\n\n        if (splitLineStyle.stroke === 'auto') {\n          splitLine.setStyle({\n            stroke: getColor(i / splitNumber)\n          });\n        }\n\n        group.add(splitLine);\n      } // Label\n\n\n      if (labelModel.get('show')) {\n        var distance = labelModel.get('distance') + splitLineDistance;\n        var label = formatLabel(round(i / splitNumber * (maxVal - minVal) + minVal), labelModel.get('formatter'));\n        var autoColor = getColor(i / splitNumber);\n        var textStyleX = unitX * (r - splitLineLen - distance) + cx;\n        var textStyleY = unitY * (r - splitLineLen - distance) + cy;\n        var rotateType = labelModel.get('rotate');\n        var rotate = 0;\n\n        if (rotateType === 'radial') {\n          rotate = -angle + 2 * Math.PI;\n\n          if (rotate > Math.PI / 2) {\n            rotate += Math.PI;\n          }\n        } else if (rotateType === 'tangential') {\n          rotate = -angle - Math.PI / 2;\n        } else if (isNumber(rotateType)) {\n          rotate = rotateType * Math.PI / 180;\n        }\n\n        if (rotate === 0) {\n          group.add(new graphic.Text({\n            style: createTextStyle(labelModel, {\n              text: label,\n              x: textStyleX,\n              y: textStyleY,\n              verticalAlign: unitY < -0.8 ? 'top' : unitY > 0.8 ? 'bottom' : 'middle',\n              align: unitX < -0.4 ? 'left' : unitX > 0.4 ? 'right' : 'center'\n            }, {\n              inheritColor: autoColor\n            }),\n            silent: true\n          }));\n        } else {\n          group.add(new graphic.Text({\n            style: createTextStyle(labelModel, {\n              text: label,\n              x: textStyleX,\n              y: textStyleY,\n              verticalAlign: 'middle',\n              align: 'center'\n            }, {\n              inheritColor: autoColor\n            }),\n            silent: true,\n            originX: textStyleX,\n            originY: textStyleY,\n            rotation: rotate\n          }));\n        }\n      } // Axis tick\n\n\n      if (tickModel.get('show') && i !== splitNumber) {\n        var distance = tickModel.get('distance');\n        distance = distance ? distance + axisLineWidth : axisLineWidth;\n\n        for (var j = 0; j <= subSplitNumber; j++) {\n          unitX = Math.cos(angle);\n          unitY = Math.sin(angle);\n          var tickLine = new graphic.Line({\n            shape: {\n              x1: unitX * (r - distance) + cx,\n              y1: unitY * (r - distance) + cy,\n              x2: unitX * (r - tickLen - distance) + cx,\n              y2: unitY * (r - tickLen - distance) + cy\n            },\n            silent: true,\n            style: tickLineStyle\n          });\n\n          if (tickLineStyle.stroke === 'auto') {\n            tickLine.setStyle({\n              stroke: getColor((i + j / subSplitNumber) / splitNumber)\n            });\n          }\n\n          group.add(tickLine);\n          angle += subStep;\n        }\n\n        angle -= subStep;\n      } else {\n        angle += step;\n      }\n    }\n  };\n\n  GaugeView.prototype._renderPointer = function (seriesModel, ecModel, api, getColor, posInfo, startAngle, endAngle, clockwise, axisLineWidth) {\n    var group = this.group;\n    var oldData = this._data;\n    var oldProgressData = this._progressEls;\n    var progressList = [];\n    var showPointer = seriesModel.get(['pointer', 'show']);\n    var progressModel = seriesModel.getModel('progress');\n    var showProgress = progressModel.get('show');\n    var data = seriesModel.getData();\n    var valueDim = data.mapDimension('value');\n    var minVal = +seriesModel.get('min');\n    var maxVal = +seriesModel.get('max');\n    var valueExtent = [minVal, maxVal];\n    var angleExtent = [startAngle, endAngle];\n\n    function createPointer(idx, angle) {\n      var itemModel = data.getItemModel(idx);\n      var pointerModel = itemModel.getModel('pointer');\n      var pointerWidth = parsePercent(pointerModel.get('width'), posInfo.r);\n      var pointerLength = parsePercent(pointerModel.get('length'), posInfo.r);\n      var pointerStr = seriesModel.get(['pointer', 'icon']);\n      var pointerOffset = pointerModel.get('offsetCenter');\n      var pointerOffsetX = parsePercent(pointerOffset[0], posInfo.r);\n      var pointerOffsetY = parsePercent(pointerOffset[1], posInfo.r);\n      var pointerKeepAspect = pointerModel.get('keepAspect');\n      var pointer; // not exist icon type will be set 'rect'\n\n      if (pointerStr) {\n        pointer = createSymbol(pointerStr, pointerOffsetX - pointerWidth / 2, pointerOffsetY - pointerLength, pointerWidth, pointerLength, null, pointerKeepAspect);\n      } else {\n        pointer = new PointerPath({\n          shape: {\n            angle: -Math.PI / 2,\n            width: pointerWidth,\n            r: pointerLength,\n            x: pointerOffsetX,\n            y: pointerOffsetY\n          }\n        });\n      }\n\n      pointer.rotation = -(angle + Math.PI / 2);\n      pointer.x = posInfo.cx;\n      pointer.y = posInfo.cy;\n      return pointer;\n    }\n\n    function createProgress(idx, endAngle) {\n      var roundCap = progressModel.get('roundCap');\n      var ProgressPath = roundCap ? Sausage : graphic.Sector;\n      var isOverlap = progressModel.get('overlap');\n      var progressWidth = isOverlap ? progressModel.get('width') : axisLineWidth / data.count();\n      var r0 = isOverlap ? posInfo.r - progressWidth : posInfo.r - (idx + 1) * progressWidth;\n      var r = isOverlap ? posInfo.r : posInfo.r - idx * progressWidth;\n      var progress = new ProgressPath({\n        shape: {\n          startAngle: startAngle,\n          endAngle: endAngle,\n          cx: posInfo.cx,\n          cy: posInfo.cy,\n          clockwise: clockwise,\n          r0: r0,\n          r: r\n        }\n      });\n      isOverlap && (progress.z2 = maxVal - data.get(valueDim, idx) % maxVal);\n      return progress;\n    }\n\n    if (showProgress || showPointer) {\n      data.diff(oldData).add(function (idx) {\n        var val = data.get(valueDim, idx);\n\n        if (showPointer) {\n          var pointer = createPointer(idx, startAngle); // TODO hide pointer on NaN value?\n\n          graphic.initProps(pointer, {\n            rotation: -((isNaN(+val) ? angleExtent[0] : linearMap(val, valueExtent, angleExtent, true)) + Math.PI / 2)\n          }, seriesModel);\n          group.add(pointer);\n          data.setItemGraphicEl(idx, pointer);\n        }\n\n        if (showProgress) {\n          var progress = createProgress(idx, startAngle);\n          var isClip = progressModel.get('clip');\n          graphic.initProps(progress, {\n            shape: {\n              endAngle: linearMap(val, valueExtent, angleExtent, isClip)\n            }\n          }, seriesModel);\n          group.add(progress); // Add data index and series index for indexing the data by element\n          // Useful in tooltip\n\n          setCommonECData(seriesModel.seriesIndex, data.dataType, idx, progress);\n          progressList[idx] = progress;\n        }\n      }).update(function (newIdx, oldIdx) {\n        var val = data.get(valueDim, newIdx);\n\n        if (showPointer) {\n          var previousPointer = oldData.getItemGraphicEl(oldIdx);\n          var previousRotate = previousPointer ? previousPointer.rotation : startAngle;\n          var pointer = createPointer(newIdx, previousRotate);\n          pointer.rotation = previousRotate;\n          graphic.updateProps(pointer, {\n            rotation: -((isNaN(+val) ? angleExtent[0] : linearMap(val, valueExtent, angleExtent, true)) + Math.PI / 2)\n          }, seriesModel);\n          group.add(pointer);\n          data.setItemGraphicEl(newIdx, pointer);\n        }\n\n        if (showProgress) {\n          var previousProgress = oldProgressData[oldIdx];\n          var previousEndAngle = previousProgress ? previousProgress.shape.endAngle : startAngle;\n          var progress = createProgress(newIdx, previousEndAngle);\n          var isClip = progressModel.get('clip');\n          graphic.updateProps(progress, {\n            shape: {\n              endAngle: linearMap(val, valueExtent, angleExtent, isClip)\n            }\n          }, seriesModel);\n          group.add(progress); // Add data index and series index for indexing the data by element\n          // Useful in tooltip\n\n          setCommonECData(seriesModel.seriesIndex, data.dataType, newIdx, progress);\n          progressList[newIdx] = progress;\n        }\n      }).execute();\n      data.each(function (idx) {\n        var itemModel = data.getItemModel(idx);\n        var emphasisModel = itemModel.getModel('emphasis');\n        var focus = emphasisModel.get('focus');\n        var blurScope = emphasisModel.get('blurScope');\n        var emphasisDisabled = emphasisModel.get('disabled');\n\n        if (showPointer) {\n          var pointer = data.getItemGraphicEl(idx);\n          var symbolStyle = data.getItemVisual(idx, 'style');\n          var visualColor = symbolStyle.fill;\n\n          if (pointer instanceof ZRImage) {\n            var pathStyle = pointer.style;\n            pointer.useStyle(extend({\n              image: pathStyle.image,\n              x: pathStyle.x,\n              y: pathStyle.y,\n              width: pathStyle.width,\n              height: pathStyle.height\n            }, symbolStyle));\n          } else {\n            pointer.useStyle(symbolStyle);\n            pointer.type !== 'pointer' && pointer.setColor(visualColor);\n          }\n\n          pointer.setStyle(itemModel.getModel(['pointer', 'itemStyle']).getItemStyle());\n\n          if (pointer.style.fill === 'auto') {\n            pointer.setStyle('fill', getColor(linearMap(data.get(valueDim, idx), valueExtent, [0, 1], true)));\n          }\n\n          pointer.z2EmphasisLift = 0;\n          setStatesStylesFromModel(pointer, itemModel);\n          toggleHoverEmphasis(pointer, focus, blurScope, emphasisDisabled);\n        }\n\n        if (showProgress) {\n          var progress = progressList[idx];\n          progress.useStyle(data.getItemVisual(idx, 'style'));\n          progress.setStyle(itemModel.getModel(['progress', 'itemStyle']).getItemStyle());\n          progress.z2EmphasisLift = 0;\n          setStatesStylesFromModel(progress, itemModel);\n          toggleHoverEmphasis(progress, focus, blurScope, emphasisDisabled);\n        }\n      });\n      this._progressEls = progressList;\n    }\n  };\n\n  GaugeView.prototype._renderAnchor = function (seriesModel, posInfo) {\n    var anchorModel = seriesModel.getModel('anchor');\n    var showAnchor = anchorModel.get('show');\n\n    if (showAnchor) {\n      var anchorSize = anchorModel.get('size');\n      var anchorType = anchorModel.get('icon');\n      var offsetCenter = anchorModel.get('offsetCenter');\n      var anchorKeepAspect = anchorModel.get('keepAspect');\n      var anchor = createSymbol(anchorType, posInfo.cx - anchorSize / 2 + parsePercent(offsetCenter[0], posInfo.r), posInfo.cy - anchorSize / 2 + parsePercent(offsetCenter[1], posInfo.r), anchorSize, anchorSize, null, anchorKeepAspect);\n      anchor.z2 = anchorModel.get('showAbove') ? 1 : 0;\n      anchor.setStyle(anchorModel.getModel('itemStyle').getItemStyle());\n      this.group.add(anchor);\n    }\n  };\n\n  GaugeView.prototype._renderTitleAndDetail = function (seriesModel, ecModel, api, getColor, posInfo) {\n    var _this = this;\n\n    var data = seriesModel.getData();\n    var valueDim = data.mapDimension('value');\n    var minVal = +seriesModel.get('min');\n    var maxVal = +seriesModel.get('max');\n    var contentGroup = new graphic.Group();\n    var newTitleEls = [];\n    var newDetailEls = [];\n    var hasAnimation = seriesModel.isAnimationEnabled();\n    var showPointerAbove = seriesModel.get(['pointer', 'showAbove']);\n    data.diff(this._data).add(function (idx) {\n      newTitleEls[idx] = new graphic.Text({\n        silent: true\n      });\n      newDetailEls[idx] = new graphic.Text({\n        silent: true\n      });\n    }).update(function (idx, oldIdx) {\n      newTitleEls[idx] = _this._titleEls[oldIdx];\n      newDetailEls[idx] = _this._detailEls[oldIdx];\n    }).execute();\n    data.each(function (idx) {\n      var itemModel = data.getItemModel(idx);\n      var value = data.get(valueDim, idx);\n      var itemGroup = new graphic.Group();\n      var autoColor = getColor(linearMap(value, [minVal, maxVal], [0, 1], true));\n      var itemTitleModel = itemModel.getModel('title');\n\n      if (itemTitleModel.get('show')) {\n        var titleOffsetCenter = itemTitleModel.get('offsetCenter');\n        var titleX = posInfo.cx + parsePercent(titleOffsetCenter[0], posInfo.r);\n        var titleY = posInfo.cy + parsePercent(titleOffsetCenter[1], posInfo.r);\n        var labelEl = newTitleEls[idx];\n        labelEl.attr({\n          z2: showPointerAbove ? 0 : 2,\n          style: createTextStyle(itemTitleModel, {\n            x: titleX,\n            y: titleY,\n            text: data.getName(idx),\n            align: 'center',\n            verticalAlign: 'middle'\n          }, {\n            inheritColor: autoColor\n          })\n        });\n        itemGroup.add(labelEl);\n      }\n\n      var itemDetailModel = itemModel.getModel('detail');\n\n      if (itemDetailModel.get('show')) {\n        var detailOffsetCenter = itemDetailModel.get('offsetCenter');\n        var detailX = posInfo.cx + parsePercent(detailOffsetCenter[0], posInfo.r);\n        var detailY = posInfo.cy + parsePercent(detailOffsetCenter[1], posInfo.r);\n        var width = parsePercent(itemDetailModel.get('width'), posInfo.r);\n        var height = parsePercent(itemDetailModel.get('height'), posInfo.r);\n        var detailColor = seriesModel.get(['progress', 'show']) ? data.getItemVisual(idx, 'style').fill : autoColor;\n        var labelEl = newDetailEls[idx];\n        var formatter_1 = itemDetailModel.get('formatter');\n        labelEl.attr({\n          z2: showPointerAbove ? 0 : 2,\n          style: createTextStyle(itemDetailModel, {\n            x: detailX,\n            y: detailY,\n            text: formatLabel(value, formatter_1),\n            width: isNaN(width) ? null : width,\n            height: isNaN(height) ? null : height,\n            align: 'center',\n            verticalAlign: 'middle'\n          }, {\n            inheritColor: detailColor\n          })\n        });\n        setLabelValueAnimation(labelEl, {\n          normal: itemDetailModel\n        }, value, function (value) {\n          return formatLabel(value, formatter_1);\n        });\n        hasAnimation && animateLabelValue(labelEl, idx, data, seriesModel, {\n          getFormattedLabel: function (labelDataIndex, status, dataType, labelDimIndex, fmt, extendParams) {\n            return formatLabel(extendParams ? extendParams.interpolatedValue : value, formatter_1);\n          }\n        });\n        itemGroup.add(labelEl);\n      }\n\n      contentGroup.add(itemGroup);\n    });\n    this.group.add(contentGroup);\n    this._titleEls = newTitleEls;\n    this._detailEls = newDetailEls;\n  };\n\n  GaugeView.type = 'gauge';\n  return GaugeView;\n}(ChartView);\n\nexport default GaugeView;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { __extends } from \"tslib\";\nimport createSeriesDataSimply from '../helper/createSeriesDataSimply.js';\nimport SeriesModel from '../../model/Series.js';\n\nvar GaugeSeriesModel =\n/** @class */\nfunction (_super) {\n  __extends(GaugeSeriesModel, _super);\n\n  function GaugeSeriesModel() {\n    var _this = _super !== null && _super.apply(this, arguments) || this;\n\n    _this.type = GaugeSeriesModel.type;\n    _this.visualStyleAccessPath = 'itemStyle';\n    return _this;\n  }\n\n  GaugeSeriesModel.prototype.getInitialData = function (option, ecModel) {\n    return createSeriesDataSimply(this, ['value']);\n  };\n\n  GaugeSeriesModel.type = 'series.gauge';\n  GaugeSeriesModel.defaultOption = {\n    // zlevel: 0,\n    z: 2,\n    colorBy: 'data',\n    // 默认全局居中\n    center: ['50%', '50%'],\n    legendHoverLink: true,\n    radius: '75%',\n    startAngle: 225,\n    endAngle: -45,\n    clockwise: true,\n    // 最小值\n    min: 0,\n    // 最大值\n    max: 100,\n    // 分割段数，默认为10\n    splitNumber: 10,\n    // 坐标轴线\n    axisLine: {\n      // 默认显示，属性show控制显示与否\n      show: true,\n      roundCap: false,\n      lineStyle: {\n        color: [[1, '#E6EBF8']],\n        width: 10\n      }\n    },\n    // 坐标轴线\n    progress: {\n      // 默认显示，属性show控制显示与否\n      show: false,\n      overlap: true,\n      width: 10,\n      roundCap: false,\n      clip: true\n    },\n    // 分隔线\n    splitLine: {\n      // 默认显示，属性show控制显示与否\n      show: true,\n      // 属性length控制线长\n      length: 10,\n      distance: 10,\n      // 属性lineStyle（详见lineStyle）控制线条样式\n      lineStyle: {\n        color: '#63677A',\n        width: 3,\n        type: 'solid'\n      }\n    },\n    // 坐标轴小标记\n    axisTick: {\n      // 属性show控制显示与否，默认不显示\n      show: true,\n      // 每份split细分多少段\n      splitNumber: 5,\n      // 属性length控制线长\n      length: 6,\n      distance: 10,\n      // 属性lineStyle控制线条样式\n      lineStyle: {\n        color: '#63677A',\n        width: 1,\n        type: 'solid'\n      }\n    },\n    axisLabel: {\n      show: true,\n      distance: 15,\n      // formatter: null,\n      color: '#464646',\n      fontSize: 12,\n      rotate: 0\n    },\n    pointer: {\n      icon: null,\n      offsetCenter: [0, 0],\n      show: true,\n      showAbove: true,\n      length: '60%',\n      width: 6,\n      keepAspect: false\n    },\n    anchor: {\n      show: false,\n      showAbove: false,\n      size: 6,\n      icon: 'circle',\n      offsetCenter: [0, 0],\n      keepAspect: false,\n      itemStyle: {\n        color: '#fff',\n        borderWidth: 0,\n        borderColor: '#5470c6'\n      }\n    },\n    title: {\n      show: true,\n      // x, y，单位px\n      offsetCenter: [0, '20%'],\n      // 其余属性默认使用全局文本样式，详见TEXTSTYLE\n      color: '#464646',\n      fontSize: 16,\n      valueAnimation: false\n    },\n    detail: {\n      show: true,\n      backgroundColor: 'rgba(0,0,0,0)',\n      borderWidth: 0,\n      borderColor: '#ccc',\n      width: 100,\n      height: null,\n      padding: [5, 10],\n      // x, y，单位px\n      offsetCenter: [0, '40%'],\n      // formatter: null,\n      // 其余属性默认使用全局文本样式，详见TEXTSTYLE\n      color: '#464646',\n      fontSize: 30,\n      fontWeight: 'bold',\n      lineHeight: 30,\n      valueAnimation: false\n    }\n  };\n  return GaugeSeriesModel;\n}(SeriesModel);\n\nexport default GaugeSeriesModel;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { __extends } from \"tslib\";\nimport * as graphic from '../../util/graphic.js';\nimport { setStatesStylesFromModel, toggleHoverEmphasis } from '../../util/states.js';\nimport ChartView from '../../view/Chart.js';\nimport { setLabelLineStyle, getLabelLineStatesModels } from '../../label/labelGuideHelper.js';\nimport { setLabelStyle, getLabelStatesModels } from '../../label/labelStyle.js';\nimport { saveOldStyle } from '../../animation/basicTransition.js';\nvar opacityAccessPath = ['itemStyle', 'opacity'];\n/**\r\n * Piece of pie including Sector, Label, LabelLine\r\n */\n\nvar FunnelPiece =\n/** @class */\nfunction (_super) {\n  __extends(FunnelPiece, _super);\n\n  function FunnelPiece(data, idx) {\n    var _this = _super.call(this) || this;\n\n    var polygon = _this;\n    var labelLine = new graphic.Polyline();\n    var text = new graphic.Text();\n    polygon.setTextContent(text);\n\n    _this.setTextGuideLine(labelLine);\n\n    _this.updateData(data, idx, true);\n\n    return _this;\n  }\n\n  FunnelPiece.prototype.updateData = function (data, idx, firstCreate) {\n    var polygon = this;\n    var seriesModel = data.hostModel;\n    var itemModel = data.getItemModel(idx);\n    var layout = data.getItemLayout(idx);\n    var emphasisModel = itemModel.getModel('emphasis');\n    var opacity = itemModel.get(opacityAccessPath);\n    opacity = opacity == null ? 1 : opacity;\n\n    if (!firstCreate) {\n      saveOldStyle(polygon);\n    } // Update common style\n\n\n    polygon.useStyle(data.getItemVisual(idx, 'style'));\n    polygon.style.lineJoin = 'round';\n\n    if (firstCreate) {\n      polygon.setShape({\n        points: layout.points\n      });\n      polygon.style.opacity = 0;\n      graphic.initProps(polygon, {\n        style: {\n          opacity: opacity\n        }\n      }, seriesModel, idx);\n    } else {\n      graphic.updateProps(polygon, {\n        style: {\n          opacity: opacity\n        },\n        shape: {\n          points: layout.points\n        }\n      }, seriesModel, idx);\n    }\n\n    setStatesStylesFromModel(polygon, itemModel);\n\n    this._updateLabel(data, idx);\n\n    toggleHoverEmphasis(this, emphasisModel.get('focus'), emphasisModel.get('blurScope'), emphasisModel.get('disabled'));\n  };\n\n  FunnelPiece.prototype._updateLabel = function (data, idx) {\n    var polygon = this;\n    var labelLine = this.getTextGuideLine();\n    var labelText = polygon.getTextContent();\n    var seriesModel = data.hostModel;\n    var itemModel = data.getItemModel(idx);\n    var layout = data.getItemLayout(idx);\n    var labelLayout = layout.label;\n    var style = data.getItemVisual(idx, 'style');\n    var visualColor = style.fill;\n    setLabelStyle( // position will not be used in setLabelStyle\n    labelText, getLabelStatesModels(itemModel), {\n      labelFetcher: data.hostModel,\n      labelDataIndex: idx,\n      defaultOpacity: style.opacity,\n      defaultText: data.getName(idx)\n    }, {\n      normal: {\n        align: labelLayout.textAlign,\n        verticalAlign: labelLayout.verticalAlign\n      }\n    });\n    polygon.setTextConfig({\n      local: true,\n      inside: !!labelLayout.inside,\n      insideStroke: visualColor,\n      // insideFill: 'auto',\n      outsideFill: visualColor\n    });\n    var linePoints = labelLayout.linePoints;\n    labelLine.setShape({\n      points: linePoints\n    });\n    polygon.textGuideLineConfig = {\n      anchor: linePoints ? new graphic.Point(linePoints[0][0], linePoints[0][1]) : null\n    }; // Make sure update style on labelText after setLabelStyle.\n    // Because setLabelStyle will replace a new style on it.\n\n    graphic.updateProps(labelText, {\n      style: {\n        x: labelLayout.x,\n        y: labelLayout.y\n      }\n    }, seriesModel, idx);\n    labelText.attr({\n      rotation: labelLayout.rotation,\n      originX: labelLayout.x,\n      originY: labelLayout.y,\n      z2: 10\n    });\n    setLabelLineStyle(polygon, getLabelLineStatesModels(itemModel), {\n      // Default use item visual color\n      stroke: visualColor\n    });\n  };\n\n  return FunnelPiece;\n}(graphic.Polygon);\n\nvar FunnelView =\n/** @class */\nfunction (_super) {\n  __extends(FunnelView, _super);\n\n  function FunnelView() {\n    var _this = _super !== null && _super.apply(this, arguments) || this;\n\n    _this.type = FunnelView.type;\n    _this.ignoreLabelLineUpdate = true;\n    return _this;\n  }\n\n  FunnelView.prototype.render = function (seriesModel, ecModel, api) {\n    var data = seriesModel.getData();\n    var oldData = this._data;\n    var group = this.group;\n    data.diff(oldData).add(function (idx) {\n      var funnelPiece = new FunnelPiece(data, idx);\n      data.setItemGraphicEl(idx, funnelPiece);\n      group.add(funnelPiece);\n    }).update(function (newIdx, oldIdx) {\n      var piece = oldData.getItemGraphicEl(oldIdx);\n      piece.updateData(data, newIdx);\n      group.add(piece);\n      data.setItemGraphicEl(newIdx, piece);\n    }).remove(function (idx) {\n      var piece = oldData.getItemGraphicEl(idx);\n      graphic.removeElementWithFadeOut(piece, seriesModel, idx);\n    }).execute();\n    this._data = data;\n  };\n\n  FunnelView.prototype.remove = function () {\n    this.group.removeAll();\n    this._data = null;\n  };\n\n  FunnelView.prototype.dispose = function () {};\n\n  FunnelView.type = 'funnel';\n  return FunnelView;\n}(ChartView);\n\nexport default FunnelView;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { __extends } from \"tslib\";\nimport * as zrUtil from 'zrender/lib/core/util.js';\nimport createSeriesDataSimply from '../helper/createSeriesDataSimply.js';\nimport { defaultEmphasis } from '../../util/model.js';\nimport { makeSeriesEncodeForNameBased } from '../../data/helper/sourceHelper.js';\nimport LegendVisualProvider from '../../visual/LegendVisualProvider.js';\nimport SeriesModel from '../../model/Series.js';\n\nvar FunnelSeriesModel =\n/** @class */\nfunction (_super) {\n  __extends(FunnelSeriesModel, _super);\n\n  function FunnelSeriesModel() {\n    var _this = _super !== null && _super.apply(this, arguments) || this;\n\n    _this.type = FunnelSeriesModel.type;\n    return _this;\n  }\n\n  FunnelSeriesModel.prototype.init = function (option) {\n    _super.prototype.init.apply(this, arguments); // Enable legend selection for each data item\n    // Use a function instead of direct access because data reference may changed\n\n\n    this.legendVisualProvider = new LegendVisualProvider(zrUtil.bind(this.getData, this), zrUtil.bind(this.getRawData, this)); // Extend labelLine emphasis\n\n    this._defaultLabelLine(option);\n  };\n\n  FunnelSeriesModel.prototype.getInitialData = function (option, ecModel) {\n    return createSeriesDataSimply(this, {\n      coordDimensions: ['value'],\n      encodeDefaulter: zrUtil.curry(makeSeriesEncodeForNameBased, this)\n    });\n  };\n\n  FunnelSeriesModel.prototype._defaultLabelLine = function (option) {\n    // Extend labelLine emphasis\n    defaultEmphasis(option, 'labelLine', ['show']);\n    var labelLineNormalOpt = option.labelLine;\n    var labelLineEmphasisOpt = option.emphasis.labelLine; // Not show label line if `label.normal.show = false`\n\n    labelLineNormalOpt.show = labelLineNormalOpt.show && option.label.show;\n    labelLineEmphasisOpt.show = labelLineEmphasisOpt.show && option.emphasis.label.show;\n  }; // Overwrite\n\n\n  FunnelSeriesModel.prototype.getDataParams = function (dataIndex) {\n    var data = this.getData();\n\n    var params = _super.prototype.getDataParams.call(this, dataIndex);\n\n    var valueDim = data.mapDimension('value');\n    var sum = data.getSum(valueDim); // Percent is 0 if sum is 0\n\n    params.percent = !sum ? 0 : +(data.get(valueDim, dataIndex) / sum * 100).toFixed(2);\n    params.$vars.push('percent');\n    return params;\n  };\n\n  FunnelSeriesModel.type = 'series.funnel';\n  FunnelSeriesModel.defaultOption = {\n    // zlevel: 0,                  // 一级层叠\n    z: 2,\n    legendHoverLink: true,\n    colorBy: 'data',\n    left: 80,\n    top: 60,\n    right: 80,\n    bottom: 60,\n    // width: {totalWidth} - left - right,\n    // height: {totalHeight} - top - bottom,\n    // 默认取数据最小最大值\n    // min: 0,\n    // max: 100,\n    minSize: '0%',\n    maxSize: '100%',\n    sort: 'descending',\n    orient: 'vertical',\n    gap: 0,\n    funnelAlign: 'center',\n    label: {\n      show: true,\n      position: 'outer' // formatter: 标签文本格式器，同Tooltip.formatter，不支持异步回调\n\n    },\n    labelLine: {\n      show: true,\n      length: 20,\n      lineStyle: {\n        // color: 各异,\n        width: 1\n      }\n    },\n    itemStyle: {\n      // color: 各异,\n      borderColor: '#fff',\n      borderWidth: 1\n    },\n    emphasis: {\n      label: {\n        show: true\n      }\n    },\n    select: {\n      itemStyle: {\n        borderColor: '#212121'\n      }\n    }\n  };\n  return FunnelSeriesModel;\n}(SeriesModel);\n\nexport default FunnelSeriesModel;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport * as layout from '../../util/layout.js';\nimport { parsePercent, linearMap } from '../../util/number.js';\nimport { isFunction } from 'zrender/lib/core/util.js';\n\nfunction getViewRect(seriesModel, api) {\n  return layout.getLayoutRect(seriesModel.getBoxLayoutParams(), {\n    width: api.getWidth(),\n    height: api.getHeight()\n  });\n}\n\nfunction getSortedIndices(data, sort) {\n  var valueDim = data.mapDimension('value');\n  var valueArr = data.mapArray(valueDim, function (val) {\n    return val;\n  });\n  var indices = [];\n  var isAscending = sort === 'ascending';\n\n  for (var i = 0, len = data.count(); i < len; i++) {\n    indices[i] = i;\n  } // Add custom sortable function & none sortable opetion by \"options.sort\"\n\n\n  if (isFunction(sort)) {\n    indices.sort(sort);\n  } else if (sort !== 'none') {\n    indices.sort(function (a, b) {\n      return isAscending ? valueArr[a] - valueArr[b] : valueArr[b] - valueArr[a];\n    });\n  }\n\n  return indices;\n}\n\nfunction labelLayout(data) {\n  var seriesModel = data.hostModel;\n  var orient = seriesModel.get('orient');\n  data.each(function (idx) {\n    var itemModel = data.getItemModel(idx);\n    var labelModel = itemModel.getModel('label');\n    var labelPosition = labelModel.get('position');\n    var labelLineModel = itemModel.getModel('labelLine');\n    var layout = data.getItemLayout(idx);\n    var points = layout.points;\n    var isLabelInside = labelPosition === 'inner' || labelPosition === 'inside' || labelPosition === 'center' || labelPosition === 'insideLeft' || labelPosition === 'insideRight';\n    var textAlign;\n    var textX;\n    var textY;\n    var linePoints;\n\n    if (isLabelInside) {\n      if (labelPosition === 'insideLeft') {\n        textX = (points[0][0] + points[3][0]) / 2 + 5;\n        textY = (points[0][1] + points[3][1]) / 2;\n        textAlign = 'left';\n      } else if (labelPosition === 'insideRight') {\n        textX = (points[1][0] + points[2][0]) / 2 - 5;\n        textY = (points[1][1] + points[2][1]) / 2;\n        textAlign = 'right';\n      } else {\n        textX = (points[0][0] + points[1][0] + points[2][0] + points[3][0]) / 4;\n        textY = (points[0][1] + points[1][1] + points[2][1] + points[3][1]) / 4;\n        textAlign = 'center';\n      }\n\n      linePoints = [[textX, textY], [textX, textY]];\n    } else {\n      var x1 = void 0;\n      var y1 = void 0;\n      var x2 = void 0;\n      var y2 = void 0;\n      var labelLineLen = labelLineModel.get('length');\n\n      if (process.env.NODE_ENV !== 'production') {\n        if (orient === 'vertical' && ['top', 'bottom'].indexOf(labelPosition) > -1) {\n          labelPosition = 'left';\n          console.warn('Position error: Funnel chart on vertical orient dose not support top and bottom.');\n        }\n\n        if (orient === 'horizontal' && ['left', 'right'].indexOf(labelPosition) > -1) {\n          labelPosition = 'bottom';\n          console.warn('Position error: Funnel chart on horizontal orient dose not support left and right.');\n        }\n      }\n\n      if (labelPosition === 'left') {\n        // Left side\n        x1 = (points[3][0] + points[0][0]) / 2;\n        y1 = (points[3][1] + points[0][1]) / 2;\n        x2 = x1 - labelLineLen;\n        textX = x2 - 5;\n        textAlign = 'right';\n      } else if (labelPosition === 'right') {\n        // Right side\n        x1 = (points[1][0] + points[2][0]) / 2;\n        y1 = (points[1][1] + points[2][1]) / 2;\n        x2 = x1 + labelLineLen;\n        textX = x2 + 5;\n        textAlign = 'left';\n      } else if (labelPosition === 'top') {\n        // Top side\n        x1 = (points[3][0] + points[0][0]) / 2;\n        y1 = (points[3][1] + points[0][1]) / 2;\n        y2 = y1 - labelLineLen;\n        textY = y2 - 5;\n        textAlign = 'center';\n      } else if (labelPosition === 'bottom') {\n        // Bottom side\n        x1 = (points[1][0] + points[2][0]) / 2;\n        y1 = (points[1][1] + points[2][1]) / 2;\n        y2 = y1 + labelLineLen;\n        textY = y2 + 5;\n        textAlign = 'center';\n      } else if (labelPosition === 'rightTop') {\n        // RightTop side\n        x1 = orient === 'horizontal' ? points[3][0] : points[1][0];\n        y1 = orient === 'horizontal' ? points[3][1] : points[1][1];\n\n        if (orient === 'horizontal') {\n          y2 = y1 - labelLineLen;\n          textY = y2 - 5;\n          textAlign = 'center';\n        } else {\n          x2 = x1 + labelLineLen;\n          textX = x2 + 5;\n          textAlign = 'top';\n        }\n      } else if (labelPosition === 'rightBottom') {\n        // RightBottom side\n        x1 = points[2][0];\n        y1 = points[2][1];\n\n        if (orient === 'horizontal') {\n          y2 = y1 + labelLineLen;\n          textY = y2 + 5;\n          textAlign = 'center';\n        } else {\n          x2 = x1 + labelLineLen;\n          textX = x2 + 5;\n          textAlign = 'bottom';\n        }\n      } else if (labelPosition === 'leftTop') {\n        // LeftTop side\n        x1 = points[0][0];\n        y1 = orient === 'horizontal' ? points[0][1] : points[1][1];\n\n        if (orient === 'horizontal') {\n          y2 = y1 - labelLineLen;\n          textY = y2 - 5;\n          textAlign = 'center';\n        } else {\n          x2 = x1 - labelLineLen;\n          textX = x2 - 5;\n          textAlign = 'right';\n        }\n      } else if (labelPosition === 'leftBottom') {\n        // LeftBottom side\n        x1 = orient === 'horizontal' ? points[1][0] : points[3][0];\n        y1 = orient === 'horizontal' ? points[1][1] : points[2][1];\n\n        if (orient === 'horizontal') {\n          y2 = y1 + labelLineLen;\n          textY = y2 + 5;\n          textAlign = 'center';\n        } else {\n          x2 = x1 - labelLineLen;\n          textX = x2 - 5;\n          textAlign = 'right';\n        }\n      } else {\n        // Right side or Bottom side\n        x1 = (points[1][0] + points[2][0]) / 2;\n        y1 = (points[1][1] + points[2][1]) / 2;\n\n        if (orient === 'horizontal') {\n          y2 = y1 + labelLineLen;\n          textY = y2 + 5;\n          textAlign = 'center';\n        } else {\n          x2 = x1 + labelLineLen;\n          textX = x2 + 5;\n          textAlign = 'left';\n        }\n      }\n\n      if (orient === 'horizontal') {\n        x2 = x1;\n        textX = x2;\n      } else {\n        y2 = y1;\n        textY = y2;\n      }\n\n      linePoints = [[x1, y1], [x2, y2]];\n    }\n\n    layout.label = {\n      linePoints: linePoints,\n      x: textX,\n      y: textY,\n      verticalAlign: 'middle',\n      textAlign: textAlign,\n      inside: isLabelInside\n    };\n  });\n}\n\nexport default function funnelLayout(ecModel, api) {\n  ecModel.eachSeriesByType('funnel', function (seriesModel) {\n    var data = seriesModel.getData();\n    var valueDim = data.mapDimension('value');\n    var sort = seriesModel.get('sort');\n    var viewRect = getViewRect(seriesModel, api);\n    var orient = seriesModel.get('orient');\n    var viewWidth = viewRect.width;\n    var viewHeight = viewRect.height;\n    var indices = getSortedIndices(data, sort);\n    var x = viewRect.x;\n    var y = viewRect.y;\n    var sizeExtent = orient === 'horizontal' ? [parsePercent(seriesModel.get('minSize'), viewHeight), parsePercent(seriesModel.get('maxSize'), viewHeight)] : [parsePercent(seriesModel.get('minSize'), viewWidth), parsePercent(seriesModel.get('maxSize'), viewWidth)];\n    var dataExtent = data.getDataExtent(valueDim);\n    var min = seriesModel.get('min');\n    var max = seriesModel.get('max');\n\n    if (min == null) {\n      min = Math.min(dataExtent[0], 0);\n    }\n\n    if (max == null) {\n      max = dataExtent[1];\n    }\n\n    var funnelAlign = seriesModel.get('funnelAlign');\n    var gap = seriesModel.get('gap');\n    var viewSize = orient === 'horizontal' ? viewWidth : viewHeight;\n    var itemSize = (viewSize - gap * (data.count() - 1)) / data.count();\n\n    var getLinePoints = function (idx, offset) {\n      // End point index is data.count() and we assign it 0\n      if (orient === 'horizontal') {\n        var val_1 = data.get(valueDim, idx) || 0;\n        var itemHeight = linearMap(val_1, [min, max], sizeExtent, true);\n        var y0 = void 0;\n\n        switch (funnelAlign) {\n          case 'top':\n            y0 = y;\n            break;\n\n          case 'center':\n            y0 = y + (viewHeight - itemHeight) / 2;\n            break;\n\n          case 'bottom':\n            y0 = y + (viewHeight - itemHeight);\n            break;\n        }\n\n        return [[offset, y0], [offset, y0 + itemHeight]];\n      }\n\n      var val = data.get(valueDim, idx) || 0;\n      var itemWidth = linearMap(val, [min, max], sizeExtent, true);\n      var x0;\n\n      switch (funnelAlign) {\n        case 'left':\n          x0 = x;\n          break;\n\n        case 'center':\n          x0 = x + (viewWidth - itemWidth) / 2;\n          break;\n\n        case 'right':\n          x0 = x + viewWidth - itemWidth;\n          break;\n      }\n\n      return [[x0, offset], [x0 + itemWidth, offset]];\n    };\n\n    if (sort === 'ascending') {\n      // From bottom to top\n      itemSize = -itemSize;\n      gap = -gap;\n\n      if (orient === 'horizontal') {\n        x += viewWidth;\n      } else {\n        y += viewHeight;\n      }\n\n      indices = indices.reverse();\n    }\n\n    for (var i = 0; i < indices.length; i++) {\n      var idx = indices[i];\n      var nextIdx = indices[i + 1];\n      var itemModel = data.getItemModel(idx);\n\n      if (orient === 'horizontal') {\n        var width = itemModel.get(['itemStyle', 'width']);\n\n        if (width == null) {\n          width = itemSize;\n        } else {\n          width = parsePercent(width, viewWidth);\n\n          if (sort === 'ascending') {\n            width = -width;\n          }\n        }\n\n        var start = getLinePoints(idx, x);\n        var end = getLinePoints(nextIdx, x + width);\n        x += width + gap;\n        data.setItemLayout(idx, {\n          points: start.concat(end.slice().reverse())\n        });\n      } else {\n        var height = itemModel.get(['itemStyle', 'height']);\n\n        if (height == null) {\n          height = itemSize;\n        } else {\n          height = parsePercent(height, viewHeight);\n\n          if (sort === 'ascending') {\n            height = -height;\n          }\n        }\n\n        var start = getLinePoints(idx, y);\n        var end = getLinePoints(nextIdx, y + height);\n        y += height + gap;\n        data.setItemLayout(idx, {\n          points: start.concat(end.slice().reverse())\n        });\n      }\n    }\n\n    labelLayout(data);\n  });\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { __extends } from \"tslib\";\nimport * as graphic from '../../util/graphic.js';\nimport { setStatesStylesFromModel, toggleHoverEmphasis } from '../../util/states.js';\nimport ChartView from '../../view/Chart.js';\nimport { numericToNumber } from '../../util/number.js';\nimport { eqNaN } from 'zrender/lib/core/util.js';\nimport { saveOldStyle } from '../../animation/basicTransition.js';\nvar DEFAULT_SMOOTH = 0.3;\n\nvar ParallelView =\n/** @class */\nfunction (_super) {\n  __extends(ParallelView, _super);\n\n  function ParallelView() {\n    var _this = _super !== null && _super.apply(this, arguments) || this;\n\n    _this.type = ParallelView.type;\n    _this._dataGroup = new graphic.Group();\n    _this._initialized = false;\n    return _this;\n  }\n\n  ParallelView.prototype.init = function () {\n    this.group.add(this._dataGroup);\n  };\n  /**\r\n   * @override\r\n   */\n\n\n  ParallelView.prototype.render = function (seriesModel, ecModel, api, payload) {\n    // Clear previously rendered progressive elements.\n    this._progressiveEls = null;\n    var dataGroup = this._dataGroup;\n    var data = seriesModel.getData();\n    var oldData = this._data;\n    var coordSys = seriesModel.coordinateSystem;\n    var dimensions = coordSys.dimensions;\n    var seriesScope = makeSeriesScope(seriesModel);\n    data.diff(oldData).add(add).update(update).remove(remove).execute();\n\n    function add(newDataIndex) {\n      var line = addEl(data, dataGroup, newDataIndex, dimensions, coordSys);\n      updateElCommon(line, data, newDataIndex, seriesScope);\n    }\n\n    function update(newDataIndex, oldDataIndex) {\n      var line = oldData.getItemGraphicEl(oldDataIndex);\n      var points = createLinePoints(data, newDataIndex, dimensions, coordSys);\n      data.setItemGraphicEl(newDataIndex, line);\n      graphic.updateProps(line, {\n        shape: {\n          points: points\n        }\n      }, seriesModel, newDataIndex);\n      saveOldStyle(line);\n      updateElCommon(line, data, newDataIndex, seriesScope);\n    }\n\n    function remove(oldDataIndex) {\n      var line = oldData.getItemGraphicEl(oldDataIndex);\n      dataGroup.remove(line);\n    } // First create\n\n\n    if (!this._initialized) {\n      this._initialized = true;\n      var clipPath = createGridClipShape(coordSys, seriesModel, function () {\n        // Callback will be invoked immediately if there is no animation\n        setTimeout(function () {\n          dataGroup.removeClipPath();\n        });\n      });\n      dataGroup.setClipPath(clipPath);\n    }\n\n    this._data = data;\n  };\n\n  ParallelView.prototype.incrementalPrepareRender = function (seriesModel, ecModel, api) {\n    this._initialized = true;\n    this._data = null;\n\n    this._dataGroup.removeAll();\n  };\n\n  ParallelView.prototype.incrementalRender = function (taskParams, seriesModel, ecModel) {\n    var data = seriesModel.getData();\n    var coordSys = seriesModel.coordinateSystem;\n    var dimensions = coordSys.dimensions;\n    var seriesScope = makeSeriesScope(seriesModel);\n    var progressiveEls = this._progressiveEls = [];\n\n    for (var dataIndex = taskParams.start; dataIndex < taskParams.end; dataIndex++) {\n      var line = addEl(data, this._dataGroup, dataIndex, dimensions, coordSys);\n      line.incremental = true;\n      updateElCommon(line, data, dataIndex, seriesScope);\n      progressiveEls.push(line);\n    }\n  };\n\n  ParallelView.prototype.remove = function () {\n    this._dataGroup && this._dataGroup.removeAll();\n    this._data = null;\n  };\n\n  ParallelView.type = 'parallel';\n  return ParallelView;\n}(ChartView);\n\nfunction createGridClipShape(coordSys, seriesModel, cb) {\n  var parallelModel = coordSys.model;\n  var rect = coordSys.getRect();\n  var rectEl = new graphic.Rect({\n    shape: {\n      x: rect.x,\n      y: rect.y,\n      width: rect.width,\n      height: rect.height\n    }\n  });\n  var dim = parallelModel.get('layout') === 'horizontal' ? 'width' : 'height';\n  rectEl.setShape(dim, 0);\n  graphic.initProps(rectEl, {\n    shape: {\n      width: rect.width,\n      height: rect.height\n    }\n  }, seriesModel, cb);\n  return rectEl;\n}\n\nfunction createLinePoints(data, dataIndex, dimensions, coordSys) {\n  var points = [];\n\n  for (var i = 0; i < dimensions.length; i++) {\n    var dimName = dimensions[i];\n    var value = data.get(data.mapDimension(dimName), dataIndex);\n\n    if (!isEmptyValue(value, coordSys.getAxis(dimName).type)) {\n      points.push(coordSys.dataToPoint(value, dimName));\n    }\n  }\n\n  return points;\n}\n\nfunction addEl(data, dataGroup, dataIndex, dimensions, coordSys) {\n  var points = createLinePoints(data, dataIndex, dimensions, coordSys);\n  var line = new graphic.Polyline({\n    shape: {\n      points: points\n    },\n    // silent: true,\n    z2: 10\n  });\n  dataGroup.add(line);\n  data.setItemGraphicEl(dataIndex, line);\n  return line;\n}\n\nfunction makeSeriesScope(seriesModel) {\n  var smooth = seriesModel.get('smooth', true);\n  smooth === true && (smooth = DEFAULT_SMOOTH);\n  smooth = numericToNumber(smooth);\n  eqNaN(smooth) && (smooth = 0);\n  return {\n    smooth: smooth\n  };\n}\n\nfunction updateElCommon(el, data, dataIndex, seriesScope) {\n  el.useStyle(data.getItemVisual(dataIndex, 'style'));\n  el.style.fill = null;\n  el.setShape('smooth', seriesScope.smooth);\n  var itemModel = data.getItemModel(dataIndex);\n  var emphasisModel = itemModel.getModel('emphasis');\n  setStatesStylesFromModel(el, itemModel, 'lineStyle');\n  toggleHoverEmphasis(el, emphasisModel.get('focus'), emphasisModel.get('blurScope'), emphasisModel.get('disabled'));\n} // function simpleDiff(oldData, newData, dimensions) {\n//     let oldLen;\n//     if (!oldData\n//         || !oldData.__plProgressive\n//         || (oldLen = oldData.count()) !== newData.count()\n//     ) {\n//         return true;\n//     }\n//     let dimLen = dimensions.length;\n//     for (let i = 0; i < oldLen; i++) {\n//         for (let j = 0; j < dimLen; j++) {\n//             if (oldData.get(dimensions[j], i) !== newData.get(dimensions[j], i)) {\n//                 return true;\n//             }\n//         }\n//     }\n//     return false;\n// }\n// FIXME put in common util?\n\n\nfunction isEmptyValue(val, axisType) {\n  return axisType === 'category' ? val == null : val == null || isNaN(val); // axisType === 'value'\n}\n\nexport default ParallelView;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { __extends } from \"tslib\";\nimport { each, bind } from 'zrender/lib/core/util.js';\nimport SeriesModel from '../../model/Series.js';\nimport createSeriesData from '../helper/createSeriesData.js';\n\nvar ParallelSeriesModel =\n/** @class */\nfunction (_super) {\n  __extends(ParallelSeriesModel, _super);\n\n  function ParallelSeriesModel() {\n    var _this = _super !== null && _super.apply(this, arguments) || this;\n\n    _this.type = ParallelSeriesModel.type;\n    _this.visualStyleAccessPath = 'lineStyle';\n    _this.visualDrawType = 'stroke';\n    return _this;\n  }\n\n  ParallelSeriesModel.prototype.getInitialData = function (option, ecModel) {\n    return createSeriesData(null, this, {\n      useEncodeDefaulter: bind(makeDefaultEncode, null, this)\n    });\n  };\n  /**\r\n   * User can get data raw indices on 'axisAreaSelected' event received.\r\n   *\r\n   * @return Raw indices\r\n   */\n\n\n  ParallelSeriesModel.prototype.getRawIndicesByActiveState = function (activeState) {\n    var coordSys = this.coordinateSystem;\n    var data = this.getData();\n    var indices = [];\n    coordSys.eachActiveState(data, function (theActiveState, dataIndex) {\n      if (activeState === theActiveState) {\n        indices.push(data.getRawIndex(dataIndex));\n      }\n    });\n    return indices;\n  };\n\n  ParallelSeriesModel.type = 'series.parallel';\n  ParallelSeriesModel.dependencies = ['parallel'];\n  ParallelSeriesModel.defaultOption = {\n    // zlevel: 0,\n    z: 2,\n    coordinateSystem: 'parallel',\n    parallelIndex: 0,\n    label: {\n      show: false\n    },\n    inactiveOpacity: 0.05,\n    activeOpacity: 1,\n    lineStyle: {\n      width: 1,\n      opacity: 0.45,\n      type: 'solid'\n    },\n    emphasis: {\n      label: {\n        show: false\n      }\n    },\n    progressive: 500,\n    smooth: false,\n    animationEasing: 'linear'\n  };\n  return ParallelSeriesModel;\n}(SeriesModel);\n\nfunction makeDefaultEncode(seriesModel) {\n  // The mapping of parallelAxis dimension to data dimension can\n  // be specified in parallelAxis.option.dim. For example, if\n  // parallelAxis.option.dim is 'dim3', it mapping to the third\n  // dimension of data. But `data.encode` has higher priority.\n  // Moreover, parallelModel.dimension should not be regarded as data\n  // dimensions. Consider dimensions = ['dim4', 'dim2', 'dim6'];\n  var parallelModel = seriesModel.ecModel.getComponent('parallel', seriesModel.get('parallelIndex'));\n\n  if (!parallelModel) {\n    return;\n  }\n\n  var encodeDefine = {};\n  each(parallelModel.dimensions, function (axisDim) {\n    var dataDimIndex = convertDimNameToNumber(axisDim);\n    encodeDefine[axisDim] = dataDimIndex;\n  });\n  return encodeDefine;\n}\n\nfunction convertDimNameToNumber(dimName) {\n  return +dimName.replace('dim', '');\n}\n\nexport default ParallelSeriesModel;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nvar opacityAccessPath = ['lineStyle', 'opacity'];\nvar parallelVisual = {\n  seriesType: 'parallel',\n  reset: function (seriesModel, ecModel) {\n    var coordSys = seriesModel.coordinateSystem;\n    var opacityMap = {\n      normal: seriesModel.get(['lineStyle', 'opacity']),\n      active: seriesModel.get('activeOpacity'),\n      inactive: seriesModel.get('inactiveOpacity')\n    };\n    return {\n      progress: function (params, data) {\n        coordSys.eachActiveState(data, function (activeState, dataIndex) {\n          var opacity = opacityMap[activeState];\n\n          if (activeState === 'normal' && data.hasItemOption) {\n            var itemOpacity = data.getItemModel(dataIndex).get(opacityAccessPath, true);\n            itemOpacity != null && (opacity = itemOpacity);\n          }\n\n          var existsStyle = data.ensureUniqueItemVisual(dataIndex, 'style');\n          existsStyle.opacity = opacity;\n        }, params.start, params.end);\n      }\n    };\n  }\n};\nexport default parallelVisual;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport * as zrUtil from 'zrender/lib/core/util.js';\nimport * as modelUtil from '../../util/model.js';\nexport default function parallelPreprocessor(option) {\n  createParallelIfNeeded(option);\n  mergeAxisOptionFromParallel(option);\n}\n/**\r\n * Create a parallel coordinate if not exists.\r\n * @inner\r\n */\n\nfunction createParallelIfNeeded(option) {\n  if (option.parallel) {\n    return;\n  }\n\n  var hasParallelSeries = false;\n  zrUtil.each(option.series, function (seriesOpt) {\n    if (seriesOpt && seriesOpt.type === 'parallel') {\n      hasParallelSeries = true;\n    }\n  });\n\n  if (hasParallelSeries) {\n    option.parallel = [{}];\n  }\n}\n/**\r\n * Merge aixs definition from parallel option (if exists) to axis option.\r\n * @inner\r\n */\n\n\nfunction mergeAxisOptionFromParallel(option) {\n  var axes = modelUtil.normalizeToArray(option.parallelAxis);\n  zrUtil.each(axes, function (axisOption) {\n    if (!zrUtil.isObject(axisOption)) {\n      return;\n    }\n\n    var parallelIndex = axisOption.parallelIndex || 0;\n    var parallelOption = modelUtil.normalizeToArray(option.parallel)[parallelIndex];\n\n    if (parallelOption && parallelOption.parallelAxisDefault) {\n      zrUtil.merge(axisOption, parallelOption.parallelAxisDefault, false);\n    }\n  });\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { __extends } from \"tslib\";\nimport ComponentView from '../../view/Component.js';\nimport { each, bind, extend } from 'zrender/lib/core/util.js';\nimport { createOrUpdate, clear } from '../../util/throttle.js';\nvar CLICK_THRESHOLD = 5; // > 4\n\nvar ParallelView =\n/** @class */\nfunction (_super) {\n  __extends(ParallelView, _super);\n\n  function ParallelView() {\n    var _this = _super !== null && _super.apply(this, arguments) || this;\n\n    _this.type = ParallelView.type;\n    return _this;\n  }\n\n  ParallelView.prototype.render = function (parallelModel, ecModel, api) {\n    this._model = parallelModel;\n    this._api = api;\n\n    if (!this._handlers) {\n      this._handlers = {};\n      each(handlers, function (handler, eventName) {\n        api.getZr().on(eventName, this._handlers[eventName] = bind(handler, this));\n      }, this);\n    }\n\n    createOrUpdate(this, '_throttledDispatchExpand', parallelModel.get('axisExpandRate'), 'fixRate');\n  };\n\n  ParallelView.prototype.dispose = function (ecModel, api) {\n    clear(this, '_throttledDispatchExpand');\n    each(this._handlers, function (handler, eventName) {\n      api.getZr().off(eventName, handler);\n    });\n    this._handlers = null;\n  };\n  /**\r\n   * @internal\r\n   * @param {Object} [opt] If null, cancel the last action triggering for debounce.\r\n   */\n\n\n  ParallelView.prototype._throttledDispatchExpand = function (opt) {\n    this._dispatchExpand(opt);\n  };\n  /**\r\n   * @internal\r\n   */\n\n\n  ParallelView.prototype._dispatchExpand = function (opt) {\n    opt && this._api.dispatchAction(extend({\n      type: 'parallelAxisExpand'\n    }, opt));\n  };\n\n  ParallelView.type = 'parallel';\n  return ParallelView;\n}(ComponentView);\n\nvar handlers = {\n  mousedown: function (e) {\n    if (checkTrigger(this, 'click')) {\n      this._mouseDownPoint = [e.offsetX, e.offsetY];\n    }\n  },\n  mouseup: function (e) {\n    var mouseDownPoint = this._mouseDownPoint;\n\n    if (checkTrigger(this, 'click') && mouseDownPoint) {\n      var point = [e.offsetX, e.offsetY];\n      var dist = Math.pow(mouseDownPoint[0] - point[0], 2) + Math.pow(mouseDownPoint[1] - point[1], 2);\n\n      if (dist > CLICK_THRESHOLD) {\n        return;\n      }\n\n      var result = this._model.coordinateSystem.getSlidedAxisExpandWindow([e.offsetX, e.offsetY]);\n\n      result.behavior !== 'none' && this._dispatchExpand({\n        axisExpandWindow: result.axisExpandWindow\n      });\n    }\n\n    this._mouseDownPoint = null;\n  },\n  mousemove: function (e) {\n    // Should do nothing when brushing.\n    if (this._mouseDownPoint || !checkTrigger(this, 'mousemove')) {\n      return;\n    }\n\n    var model = this._model;\n    var result = model.coordinateSystem.getSlidedAxisExpandWindow([e.offsetX, e.offsetY]);\n    var behavior = result.behavior;\n    behavior === 'jump' && this._throttledDispatchExpand.debounceNextCall(model.get('axisExpandDebounce'));\n\n    this._throttledDispatchExpand(behavior === 'none' ? null // Cancel the last trigger, in case that mouse slide out of the area quickly.\n    : {\n      axisExpandWindow: result.axisExpandWindow,\n      // Jumping uses animation, and sliding suppresses animation.\n      animation: behavior === 'jump' ? null : {\n        duration: 0 // Disable animation.\n\n      }\n    });\n  }\n};\n\nfunction checkTrigger(view, triggerOn) {\n  var model = view._model;\n  return model.get('axisExpandable') && model.get('axisExpandTriggerOn') === triggerOn;\n}\n\nexport default ParallelView;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { __extends } from \"tslib\";\nimport * as zrUtil from 'zrender/lib/core/util.js';\nimport ComponentModel from '../../model/Component.js';\n\nvar ParallelModel =\n/** @class */\nfunction (_super) {\n  __extends(ParallelModel, _super);\n\n  function ParallelModel() {\n    var _this = _super !== null && _super.apply(this, arguments) || this;\n\n    _this.type = ParallelModel.type;\n    return _this;\n  }\n\n  ParallelModel.prototype.init = function () {\n    _super.prototype.init.apply(this, arguments);\n\n    this.mergeOption({});\n  };\n\n  ParallelModel.prototype.mergeOption = function (newOption) {\n    var thisOption = this.option;\n    newOption && zrUtil.merge(thisOption, newOption, true);\n\n    this._initDimensions();\n  };\n  /**\r\n   * Whether series or axis is in this coordinate system.\r\n   */\n\n\n  ParallelModel.prototype.contains = function (model, ecModel) {\n    var parallelIndex = model.get('parallelIndex');\n    return parallelIndex != null && ecModel.getComponent('parallel', parallelIndex) === this;\n  };\n\n  ParallelModel.prototype.setAxisExpand = function (opt) {\n    zrUtil.each(['axisExpandable', 'axisExpandCenter', 'axisExpandCount', 'axisExpandWidth', 'axisExpandWindow'], function (name) {\n      if (opt.hasOwnProperty(name)) {\n        // @ts-ignore FIXME: why \"never\" inferred in this.option[name]?\n        this.option[name] = opt[name];\n      }\n    }, this);\n  };\n\n  ParallelModel.prototype._initDimensions = function () {\n    var dimensions = this.dimensions = [];\n    var parallelAxisIndex = this.parallelAxisIndex = [];\n    var axisModels = zrUtil.filter(this.ecModel.queryComponents({\n      mainType: 'parallelAxis'\n    }), function (axisModel) {\n      // Can not use this.contains here, because\n      // initialization has not been completed yet.\n      return (axisModel.get('parallelIndex') || 0) === this.componentIndex;\n    }, this);\n    zrUtil.each(axisModels, function (axisModel) {\n      dimensions.push('dim' + axisModel.get('dim'));\n      parallelAxisIndex.push(axisModel.componentIndex);\n    });\n  };\n\n  ParallelModel.type = 'parallel';\n  ParallelModel.dependencies = ['parallelAxis'];\n  ParallelModel.layoutMode = 'box';\n  ParallelModel.defaultOption = {\n    // zlevel: 0,\n    z: 0,\n    left: 80,\n    top: 60,\n    right: 80,\n    bottom: 60,\n    // width: {totalWidth} - left - right,\n    // height: {totalHeight} - top - bottom,\n    layout: 'horizontal',\n    // FIXME\n    // naming?\n    axisExpandable: false,\n    axisExpandCenter: null,\n    axisExpandCount: 0,\n    axisExpandWidth: 50,\n    axisExpandRate: 17,\n    axisExpandDebounce: 50,\n    // [out, in, jumpTarget]. In percentage. If use [null, 0.05], null means full.\n    // Do not doc to user until necessary.\n    axisExpandSlideTriggerArea: [-0.15, 0.05, 0.4],\n    axisExpandTriggerOn: 'click',\n    parallelAxisDefault: null\n  };\n  return ParallelModel;\n}(ComponentModel);\n\nexport default ParallelModel;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { __extends } from \"tslib\";\nimport Axis from '../Axis.js';\n\nvar ParallelAxis =\n/** @class */\nfunction (_super) {\n  __extends(ParallelAxis, _super);\n\n  function ParallelAxis(dim, scale, coordExtent, axisType, axisIndex) {\n    var _this = _super.call(this, dim, scale, coordExtent) || this;\n\n    _this.type = axisType || 'value';\n    _this.axisIndex = axisIndex;\n    return _this;\n  }\n\n  ParallelAxis.prototype.isHorizontal = function () {\n    return this.coordinateSystem.getModel().get('layout') !== 'horizontal';\n  };\n\n  return ParallelAxis;\n}(Axis);\n\nexport default ParallelAxis;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\n\n/**\r\n * Calculate slider move result.\r\n * Usage:\r\n * (1) If both handle0 and handle1 are needed to be moved, set minSpan the same as\r\n * maxSpan and the same as `Math.abs(handleEnd[1] - handleEnds[0])`.\r\n * (2) If handle0 is forbidden to cross handle1, set minSpan as `0`.\r\n *\r\n * @param delta Move length.\r\n * @param handleEnds handleEnds[0] can be bigger then handleEnds[1].\r\n *              handleEnds will be modified in this method.\r\n * @param extent handleEnds is restricted by extent.\r\n *              extent[0] should less or equals than extent[1].\r\n * @param handleIndex Can be 'all', means that both move the two handleEnds.\r\n * @param minSpan The range of dataZoom can not be smaller than that.\r\n *              If not set, handle0 and cross handle1. If set as a non-negative\r\n *              number (including `0`), handles will push each other when reaching\r\n *              the minSpan.\r\n * @param maxSpan The range of dataZoom can not be larger than that.\r\n * @return The input handleEnds.\r\n */\nexport default function sliderMove(delta, handleEnds, extent, handleIndex, minSpan, maxSpan) {\n  delta = delta || 0;\n  var extentSpan = extent[1] - extent[0]; // Notice maxSpan and minSpan can be null/undefined.\n\n  if (minSpan != null) {\n    minSpan = restrict(minSpan, [0, extentSpan]);\n  }\n\n  if (maxSpan != null) {\n    maxSpan = Math.max(maxSpan, minSpan != null ? minSpan : 0);\n  }\n\n  if (handleIndex === 'all') {\n    var handleSpan = Math.abs(handleEnds[1] - handleEnds[0]);\n    handleSpan = restrict(handleSpan, [0, extentSpan]);\n    minSpan = maxSpan = restrict(handleSpan, [minSpan, maxSpan]);\n    handleIndex = 0;\n  }\n\n  handleEnds[0] = restrict(handleEnds[0], extent);\n  handleEnds[1] = restrict(handleEnds[1], extent);\n  var originalDistSign = getSpanSign(handleEnds, handleIndex);\n  handleEnds[handleIndex] += delta; // Restrict in extent.\n\n  var extentMinSpan = minSpan || 0;\n  var realExtent = extent.slice();\n  originalDistSign.sign < 0 ? realExtent[0] += extentMinSpan : realExtent[1] -= extentMinSpan;\n  handleEnds[handleIndex] = restrict(handleEnds[handleIndex], realExtent); // Expand span.\n\n  var currDistSign;\n  currDistSign = getSpanSign(handleEnds, handleIndex);\n\n  if (minSpan != null && (currDistSign.sign !== originalDistSign.sign || currDistSign.span < minSpan)) {\n    // If minSpan exists, 'cross' is forbidden.\n    handleEnds[1 - handleIndex] = handleEnds[handleIndex] + originalDistSign.sign * minSpan;\n  } // Shrink span.\n\n\n  currDistSign = getSpanSign(handleEnds, handleIndex);\n\n  if (maxSpan != null && currDistSign.span > maxSpan) {\n    handleEnds[1 - handleIndex] = handleEnds[handleIndex] + currDistSign.sign * maxSpan;\n  }\n\n  return handleEnds;\n}\n\nfunction getSpanSign(handleEnds, handleIndex) {\n  var dist = handleEnds[handleIndex] - handleEnds[1 - handleIndex]; // If `handleEnds[0] === handleEnds[1]`, always believe that handleEnd[0]\n  // is at left of handleEnds[1] for non-cross case.\n\n  return {\n    span: Math.abs(dist),\n    sign: dist > 0 ? -1 : dist < 0 ? 1 : handleIndex ? -1 : 1\n  };\n}\n\nfunction restrict(value, extend) {\n  return Math.min(extend[1] != null ? extend[1] : Infinity, Math.max(extend[0] != null ? extend[0] : -Infinity, value));\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\n\n/**\r\n * Parallel Coordinates\r\n * <https://en.wikipedia.org/wiki/Parallel_coordinates>\r\n */\nimport * as zrUtil from 'zrender/lib/core/util.js';\nimport * as matrix from 'zrender/lib/core/matrix.js';\nimport * as layoutUtil from '../../util/layout.js';\nimport * as axisHelper from '../../coord/axisHelper.js';\nimport ParallelAxis from './ParallelAxis.js';\nimport * as graphic from '../../util/graphic.js';\nimport * as numberUtil from '../../util/number.js';\nimport sliderMove from '../../component/helper/sliderMove.js';\nvar each = zrUtil.each;\nvar mathMin = Math.min;\nvar mathMax = Math.max;\nvar mathFloor = Math.floor;\nvar mathCeil = Math.ceil;\nvar round = numberUtil.round;\nvar PI = Math.PI;\n\nvar Parallel =\n/** @class */\nfunction () {\n  function Parallel(parallelModel, ecModel, api) {\n    this.type = 'parallel';\n    /**\r\n     * key: dimension\r\n     */\n\n    this._axesMap = zrUtil.createHashMap();\n    /**\r\n     * key: dimension\r\n     * value: {position: [], rotation, }\r\n     */\n\n    this._axesLayout = {};\n    this.dimensions = parallelModel.dimensions;\n    this._model = parallelModel;\n\n    this._init(parallelModel, ecModel, api);\n  }\n\n  Parallel.prototype._init = function (parallelModel, ecModel, api) {\n    var dimensions = parallelModel.dimensions;\n    var parallelAxisIndex = parallelModel.parallelAxisIndex;\n    each(dimensions, function (dim, idx) {\n      var axisIndex = parallelAxisIndex[idx];\n      var axisModel = ecModel.getComponent('parallelAxis', axisIndex);\n\n      var axis = this._axesMap.set(dim, new ParallelAxis(dim, axisHelper.createScaleByModel(axisModel), [0, 0], axisModel.get('type'), axisIndex));\n\n      var isCategory = axis.type === 'category';\n      axis.onBand = isCategory && axisModel.get('boundaryGap');\n      axis.inverse = axisModel.get('inverse'); // Injection\n\n      axisModel.axis = axis;\n      axis.model = axisModel;\n      axis.coordinateSystem = axisModel.coordinateSystem = this;\n    }, this);\n  };\n  /**\r\n   * Update axis scale after data processed\r\n   */\n\n\n  Parallel.prototype.update = function (ecModel, api) {\n    this._updateAxesFromSeries(this._model, ecModel);\n  };\n\n  Parallel.prototype.containPoint = function (point) {\n    var layoutInfo = this._makeLayoutInfo();\n\n    var axisBase = layoutInfo.axisBase;\n    var layoutBase = layoutInfo.layoutBase;\n    var pixelDimIndex = layoutInfo.pixelDimIndex;\n    var pAxis = point[1 - pixelDimIndex];\n    var pLayout = point[pixelDimIndex];\n    return pAxis >= axisBase && pAxis <= axisBase + layoutInfo.axisLength && pLayout >= layoutBase && pLayout <= layoutBase + layoutInfo.layoutLength;\n  };\n\n  Parallel.prototype.getModel = function () {\n    return this._model;\n  };\n  /**\r\n   * Update properties from series\r\n   */\n\n\n  Parallel.prototype._updateAxesFromSeries = function (parallelModel, ecModel) {\n    ecModel.eachSeries(function (seriesModel) {\n      if (!parallelModel.contains(seriesModel, ecModel)) {\n        return;\n      }\n\n      var data = seriesModel.getData();\n      each(this.dimensions, function (dim) {\n        var axis = this._axesMap.get(dim);\n\n        axis.scale.unionExtentFromData(data, data.mapDimension(dim));\n        axisHelper.niceScaleExtent(axis.scale, axis.model);\n      }, this);\n    }, this);\n  };\n  /**\r\n   * Resize the parallel coordinate system.\r\n   */\n\n\n  Parallel.prototype.resize = function (parallelModel, api) {\n    this._rect = layoutUtil.getLayoutRect(parallelModel.getBoxLayoutParams(), {\n      width: api.getWidth(),\n      height: api.getHeight()\n    });\n\n    this._layoutAxes();\n  };\n\n  Parallel.prototype.getRect = function () {\n    return this._rect;\n  };\n\n  Parallel.prototype._makeLayoutInfo = function () {\n    var parallelModel = this._model;\n    var rect = this._rect;\n    var xy = ['x', 'y'];\n    var wh = ['width', 'height'];\n    var layout = parallelModel.get('layout');\n    var pixelDimIndex = layout === 'horizontal' ? 0 : 1;\n    var layoutLength = rect[wh[pixelDimIndex]];\n    var layoutExtent = [0, layoutLength];\n    var axisCount = this.dimensions.length;\n    var axisExpandWidth = restrict(parallelModel.get('axisExpandWidth'), layoutExtent);\n    var axisExpandCount = restrict(parallelModel.get('axisExpandCount') || 0, [0, axisCount]);\n    var axisExpandable = parallelModel.get('axisExpandable') && axisCount > 3 && axisCount > axisExpandCount && axisExpandCount > 1 && axisExpandWidth > 0 && layoutLength > 0; // `axisExpandWindow` is According to the coordinates of [0, axisExpandLength],\n    // for sake of consider the case that axisCollapseWidth is 0 (when screen is narrow),\n    // where collapsed axes should be overlapped.\n\n    var axisExpandWindow = parallelModel.get('axisExpandWindow');\n    var winSize;\n\n    if (!axisExpandWindow) {\n      winSize = restrict(axisExpandWidth * (axisExpandCount - 1), layoutExtent);\n      var axisExpandCenter = parallelModel.get('axisExpandCenter') || mathFloor(axisCount / 2);\n      axisExpandWindow = [axisExpandWidth * axisExpandCenter - winSize / 2];\n      axisExpandWindow[1] = axisExpandWindow[0] + winSize;\n    } else {\n      winSize = restrict(axisExpandWindow[1] - axisExpandWindow[0], layoutExtent);\n      axisExpandWindow[1] = axisExpandWindow[0] + winSize;\n    }\n\n    var axisCollapseWidth = (layoutLength - winSize) / (axisCount - axisExpandCount); // Avoid axisCollapseWidth is too small.\n\n    axisCollapseWidth < 3 && (axisCollapseWidth = 0); // Find the first and last indices > ewin[0] and < ewin[1].\n\n    var winInnerIndices = [mathFloor(round(axisExpandWindow[0] / axisExpandWidth, 1)) + 1, mathCeil(round(axisExpandWindow[1] / axisExpandWidth, 1)) - 1]; // Pos in ec coordinates.\n\n    var axisExpandWindow0Pos = axisCollapseWidth / axisExpandWidth * axisExpandWindow[0];\n    return {\n      layout: layout,\n      pixelDimIndex: pixelDimIndex,\n      layoutBase: rect[xy[pixelDimIndex]],\n      layoutLength: layoutLength,\n      axisBase: rect[xy[1 - pixelDimIndex]],\n      axisLength: rect[wh[1 - pixelDimIndex]],\n      axisExpandable: axisExpandable,\n      axisExpandWidth: axisExpandWidth,\n      axisCollapseWidth: axisCollapseWidth,\n      axisExpandWindow: axisExpandWindow,\n      axisCount: axisCount,\n      winInnerIndices: winInnerIndices,\n      axisExpandWindow0Pos: axisExpandWindow0Pos\n    };\n  };\n\n  Parallel.prototype._layoutAxes = function () {\n    var rect = this._rect;\n    var axes = this._axesMap;\n    var dimensions = this.dimensions;\n\n    var layoutInfo = this._makeLayoutInfo();\n\n    var layout = layoutInfo.layout;\n    axes.each(function (axis) {\n      var axisExtent = [0, layoutInfo.axisLength];\n      var idx = axis.inverse ? 1 : 0;\n      axis.setExtent(axisExtent[idx], axisExtent[1 - idx]);\n    });\n    each(dimensions, function (dim, idx) {\n      var posInfo = (layoutInfo.axisExpandable ? layoutAxisWithExpand : layoutAxisWithoutExpand)(idx, layoutInfo);\n      var positionTable = {\n        horizontal: {\n          x: posInfo.position,\n          y: layoutInfo.axisLength\n        },\n        vertical: {\n          x: 0,\n          y: posInfo.position\n        }\n      };\n      var rotationTable = {\n        horizontal: PI / 2,\n        vertical: 0\n      };\n      var position = [positionTable[layout].x + rect.x, positionTable[layout].y + rect.y];\n      var rotation = rotationTable[layout];\n      var transform = matrix.create();\n      matrix.rotate(transform, transform, rotation);\n      matrix.translate(transform, transform, position); // TODO\n      // tick layout info\n      // TODO\n      // update dimensions info based on axis order.\n\n      this._axesLayout[dim] = {\n        position: position,\n        rotation: rotation,\n        transform: transform,\n        axisNameAvailableWidth: posInfo.axisNameAvailableWidth,\n        axisLabelShow: posInfo.axisLabelShow,\n        nameTruncateMaxWidth: posInfo.nameTruncateMaxWidth,\n        tickDirection: 1,\n        labelDirection: 1\n      };\n    }, this);\n  };\n  /**\r\n   * Get axis by dim.\r\n   */\n\n\n  Parallel.prototype.getAxis = function (dim) {\n    return this._axesMap.get(dim);\n  };\n  /**\r\n   * Convert a dim value of a single item of series data to Point.\r\n   */\n\n\n  Parallel.prototype.dataToPoint = function (value, dim) {\n    return this.axisCoordToPoint(this._axesMap.get(dim).dataToCoord(value), dim);\n  };\n  /**\r\n   * Travel data for one time, get activeState of each data item.\r\n   * @param start the start dataIndex that travel from.\r\n   * @param end the next dataIndex of the last dataIndex will be travel.\r\n   */\n\n\n  Parallel.prototype.eachActiveState = function (data, callback, start, end) {\n    start == null && (start = 0);\n    end == null && (end = data.count());\n    var axesMap = this._axesMap;\n    var dimensions = this.dimensions;\n    var dataDimensions = [];\n    var axisModels = [];\n    zrUtil.each(dimensions, function (axisDim) {\n      dataDimensions.push(data.mapDimension(axisDim));\n      axisModels.push(axesMap.get(axisDim).model);\n    });\n    var hasActiveSet = this.hasAxisBrushed();\n\n    for (var dataIndex = start; dataIndex < end; dataIndex++) {\n      var activeState = void 0;\n\n      if (!hasActiveSet) {\n        activeState = 'normal';\n      } else {\n        activeState = 'active';\n        var values = data.getValues(dataDimensions, dataIndex);\n\n        for (var j = 0, lenj = dimensions.length; j < lenj; j++) {\n          var state = axisModels[j].getActiveState(values[j]);\n\n          if (state === 'inactive') {\n            activeState = 'inactive';\n            break;\n          }\n        }\n      }\n\n      callback(activeState, dataIndex);\n    }\n  };\n  /**\r\n   * Whether has any activeSet.\r\n   */\n\n\n  Parallel.prototype.hasAxisBrushed = function () {\n    var dimensions = this.dimensions;\n    var axesMap = this._axesMap;\n    var hasActiveSet = false;\n\n    for (var j = 0, lenj = dimensions.length; j < lenj; j++) {\n      if (axesMap.get(dimensions[j]).model.getActiveState() !== 'normal') {\n        hasActiveSet = true;\n      }\n    }\n\n    return hasActiveSet;\n  };\n  /**\r\n   * Convert coords of each axis to Point.\r\n   *  Return point. For example: [10, 20]\r\n   */\n\n\n  Parallel.prototype.axisCoordToPoint = function (coord, dim) {\n    var axisLayout = this._axesLayout[dim];\n    return graphic.applyTransform([coord, 0], axisLayout.transform);\n  };\n  /**\r\n   * Get axis layout.\r\n   */\n\n\n  Parallel.prototype.getAxisLayout = function (dim) {\n    return zrUtil.clone(this._axesLayout[dim]);\n  };\n  /**\r\n   * @return {Object} {axisExpandWindow, delta, behavior: 'jump' | 'slide' | 'none'}.\r\n   */\n\n\n  Parallel.prototype.getSlidedAxisExpandWindow = function (point) {\n    var layoutInfo = this._makeLayoutInfo();\n\n    var pixelDimIndex = layoutInfo.pixelDimIndex;\n    var axisExpandWindow = layoutInfo.axisExpandWindow.slice();\n    var winSize = axisExpandWindow[1] - axisExpandWindow[0];\n    var extent = [0, layoutInfo.axisExpandWidth * (layoutInfo.axisCount - 1)]; // Out of the area of coordinate system.\n\n    if (!this.containPoint(point)) {\n      return {\n        behavior: 'none',\n        axisExpandWindow: axisExpandWindow\n      };\n    } // Convert the point from global to expand coordinates.\n\n\n    var pointCoord = point[pixelDimIndex] - layoutInfo.layoutBase - layoutInfo.axisExpandWindow0Pos; // For dragging operation convenience, the window should not be\n    // slided when mouse is the center area of the window.\n\n    var delta;\n    var behavior = 'slide';\n    var axisCollapseWidth = layoutInfo.axisCollapseWidth;\n\n    var triggerArea = this._model.get('axisExpandSlideTriggerArea'); // But consider touch device, jump is necessary.\n\n\n    var useJump = triggerArea[0] != null;\n\n    if (axisCollapseWidth) {\n      if (useJump && axisCollapseWidth && pointCoord < winSize * triggerArea[0]) {\n        behavior = 'jump';\n        delta = pointCoord - winSize * triggerArea[2];\n      } else if (useJump && axisCollapseWidth && pointCoord > winSize * (1 - triggerArea[0])) {\n        behavior = 'jump';\n        delta = pointCoord - winSize * (1 - triggerArea[2]);\n      } else {\n        (delta = pointCoord - winSize * triggerArea[1]) >= 0 && (delta = pointCoord - winSize * (1 - triggerArea[1])) <= 0 && (delta = 0);\n      }\n\n      delta *= layoutInfo.axisExpandWidth / axisCollapseWidth;\n      delta ? sliderMove(delta, axisExpandWindow, extent, 'all') // Avoid nonsense triger on mousemove.\n      : behavior = 'none';\n    } // When screen is too narrow, make it visible and slidable, although it is hard to interact.\n    else {\n        var winSize2 = axisExpandWindow[1] - axisExpandWindow[0];\n        var pos = extent[1] * pointCoord / winSize2;\n        axisExpandWindow = [mathMax(0, pos - winSize2 / 2)];\n        axisExpandWindow[1] = mathMin(extent[1], axisExpandWindow[0] + winSize2);\n        axisExpandWindow[0] = axisExpandWindow[1] - winSize2;\n      }\n\n    return {\n      axisExpandWindow: axisExpandWindow,\n      behavior: behavior\n    };\n  };\n\n  return Parallel;\n}();\n\nfunction restrict(len, extent) {\n  return mathMin(mathMax(len, extent[0]), extent[1]);\n}\n\nfunction layoutAxisWithoutExpand(axisIndex, layoutInfo) {\n  var step = layoutInfo.layoutLength / (layoutInfo.axisCount - 1);\n  return {\n    position: step * axisIndex,\n    axisNameAvailableWidth: step,\n    axisLabelShow: true\n  };\n}\n\nfunction layoutAxisWithExpand(axisIndex, layoutInfo) {\n  var layoutLength = layoutInfo.layoutLength;\n  var axisExpandWidth = layoutInfo.axisExpandWidth;\n  var axisCount = layoutInfo.axisCount;\n  var axisCollapseWidth = layoutInfo.axisCollapseWidth;\n  var winInnerIndices = layoutInfo.winInnerIndices;\n  var position;\n  var axisNameAvailableWidth = axisCollapseWidth;\n  var axisLabelShow = false;\n  var nameTruncateMaxWidth;\n\n  if (axisIndex < winInnerIndices[0]) {\n    position = axisIndex * axisCollapseWidth;\n    nameTruncateMaxWidth = axisCollapseWidth;\n  } else if (axisIndex <= winInnerIndices[1]) {\n    position = layoutInfo.axisExpandWindow0Pos + axisIndex * axisExpandWidth - layoutInfo.axisExpandWindow[0];\n    axisNameAvailableWidth = axisExpandWidth;\n    axisLabelShow = true;\n  } else {\n    position = layoutLength - (axisCount - 1 - axisIndex) * axisCollapseWidth;\n    nameTruncateMaxWidth = axisCollapseWidth;\n  }\n\n  return {\n    position: position,\n    axisNameAvailableWidth: axisNameAvailableWidth,\n    axisLabelShow: axisLabelShow,\n    nameTruncateMaxWidth: nameTruncateMaxWidth\n  };\n}\n\nexport default Parallel;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\n\n/**\r\n * Parallel coordinate system creater.\r\n */\nimport Parallel from './Parallel.js';\nimport { SINGLE_REFERRING } from '../../util/model.js';\n\nfunction createParallelCoordSys(ecModel, api) {\n  var coordSysList = [];\n  ecModel.eachComponent('parallel', function (parallelModel, idx) {\n    var coordSys = new Parallel(parallelModel, ecModel, api);\n    coordSys.name = 'parallel_' + idx;\n    coordSys.resize(parallelModel, api);\n    parallelModel.coordinateSystem = coordSys;\n    coordSys.model = parallelModel;\n    coordSysList.push(coordSys);\n  }); // Inject the coordinateSystems into seriesModel\n\n  ecModel.eachSeries(function (seriesModel) {\n    if (seriesModel.get('coordinateSystem') === 'parallel') {\n      var parallelModel = seriesModel.getReferringComponents('parallel', SINGLE_REFERRING).models[0];\n      seriesModel.coordinateSystem = parallelModel.coordinateSystem;\n    }\n  });\n  return coordSysList;\n}\n\nvar parallelCoordSysCreator = {\n  create: createParallelCoordSys\n};\nexport default parallelCoordSysCreator;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { __extends } from \"tslib\";\nimport * as zrUtil from 'zrender/lib/core/util.js';\nimport ComponentModel from '../../model/Component.js';\nimport makeStyleMapper from '../../model/mixin/makeStyleMapper.js';\nimport * as numberUtil from '../../util/number.js';\nimport { AxisModelCommonMixin } from '../axisModelCommonMixin.js';\n\nvar ParallelAxisModel =\n/** @class */\nfunction (_super) {\n  __extends(ParallelAxisModel, _super);\n\n  function ParallelAxisModel() {\n    var _this = _super !== null && _super.apply(this, arguments) || this;\n\n    _this.type = ParallelAxisModel.type;\n    /**\r\n     * @readOnly\r\n     */\n\n    _this.activeIntervals = [];\n    return _this;\n  }\n\n  ParallelAxisModel.prototype.getAreaSelectStyle = function () {\n    return makeStyleMapper([['fill', 'color'], ['lineWidth', 'borderWidth'], ['stroke', 'borderColor'], ['width', 'width'], ['opacity', 'opacity'] // Option decal is in `DecalObject` but style.decal is in `PatternObject`.\n    // So do not transfer decal directly.\n    ])(this.getModel('areaSelectStyle'));\n  };\n  /**\r\n   * The code of this feature is put on AxisModel but not ParallelAxis,\r\n   * because axisModel can be alive after echarts updating but instance of\r\n   * ParallelAxis having been disposed. this._activeInterval should be kept\r\n   * when action dispatched (i.e. legend click).\r\n   *\r\n   * @param intervals `interval.length === 0` means set all active.\r\n   */\n\n\n  ParallelAxisModel.prototype.setActiveIntervals = function (intervals) {\n    var activeIntervals = this.activeIntervals = zrUtil.clone(intervals); // Normalize\n\n    if (activeIntervals) {\n      for (var i = activeIntervals.length - 1; i >= 0; i--) {\n        numberUtil.asc(activeIntervals[i]);\n      }\n    }\n  };\n  /**\r\n   * @param value When only attempting detect whether 'no activeIntervals set',\r\n   *        `value` is not needed to be input.\r\n   */\n\n\n  ParallelAxisModel.prototype.getActiveState = function (value) {\n    var activeIntervals = this.activeIntervals;\n\n    if (!activeIntervals.length) {\n      return 'normal';\n    }\n\n    if (value == null || isNaN(+value)) {\n      return 'inactive';\n    } // Simple optimization\n\n\n    if (activeIntervals.length === 1) {\n      var interval = activeIntervals[0];\n\n      if (interval[0] <= value && value <= interval[1]) {\n        return 'active';\n      }\n    } else {\n      for (var i = 0, len = activeIntervals.length; i < len; i++) {\n        if (activeIntervals[i][0] <= value && value <= activeIntervals[i][1]) {\n          return 'active';\n        }\n      }\n    }\n\n    return 'inactive';\n  };\n\n  return ParallelAxisModel;\n}(ComponentModel);\n\nzrUtil.mixin(ParallelAxisModel, AxisModelCommonMixin);\nexport default ParallelAxisModel;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { __extends } from \"tslib\";\nimport { curry, each, map, bind, merge, clone, defaults, assert } from 'zrender/lib/core/util.js';\nimport Eventful from 'zrender/lib/core/Eventful.js';\nimport * as graphic from '../../util/graphic.js';\nimport * as interactionMutex from './interactionMutex.js';\nimport DataDiffer from '../../data/DataDiffer.js';\nvar BRUSH_PANEL_GLOBAL = true;\nvar mathMin = Math.min;\nvar mathMax = Math.max;\nvar mathPow = Math.pow;\nvar COVER_Z = 10000;\nvar UNSELECT_THRESHOLD = 6;\nvar MIN_RESIZE_LINE_WIDTH = 6;\nvar MUTEX_RESOURCE_KEY = 'globalPan';\nvar DIRECTION_MAP = {\n  w: [0, 0],\n  e: [0, 1],\n  n: [1, 0],\n  s: [1, 1]\n};\nvar CURSOR_MAP = {\n  w: 'ew',\n  e: 'ew',\n  n: 'ns',\n  s: 'ns',\n  ne: 'nesw',\n  sw: 'nesw',\n  nw: 'nwse',\n  se: 'nwse'\n};\nvar DEFAULT_BRUSH_OPT = {\n  brushStyle: {\n    lineWidth: 2,\n    stroke: 'rgba(210,219,238,0.3)',\n    fill: '#D2DBEE'\n  },\n  transformable: true,\n  brushMode: 'single',\n  removeOnClick: false\n};\nvar baseUID = 0;\n/**\r\n * params:\r\n *     areas: Array.<Array>, coord relates to container group,\r\n *                             If no container specified, to global.\r\n *     opt {\r\n *         isEnd: boolean,\r\n *         removeOnClick: boolean\r\n *     }\r\n */\n\nvar BrushController =\n/** @class */\nfunction (_super) {\n  __extends(BrushController, _super);\n\n  function BrushController(zr) {\n    var _this = _super.call(this) || this;\n    /**\r\n     * @internal\r\n     */\n\n\n    _this._track = [];\n    /**\r\n     * @internal\r\n     */\n\n    _this._covers = [];\n    _this._handlers = {};\n\n    if (process.env.NODE_ENV !== 'production') {\n      assert(zr);\n    }\n\n    _this._zr = zr;\n    _this.group = new graphic.Group();\n    _this._uid = 'brushController_' + baseUID++;\n    each(pointerHandlers, function (handler, eventName) {\n      this._handlers[eventName] = bind(handler, this);\n    }, _this);\n    return _this;\n  }\n  /**\r\n   * If set to `false`, select disabled.\r\n   */\n\n\n  BrushController.prototype.enableBrush = function (brushOption) {\n    if (process.env.NODE_ENV !== 'production') {\n      assert(this._mounted);\n    }\n\n    this._brushType && this._doDisableBrush();\n    brushOption.brushType && this._doEnableBrush(brushOption);\n    return this;\n  };\n\n  BrushController.prototype._doEnableBrush = function (brushOption) {\n    var zr = this._zr; // Consider roam, which takes globalPan too.\n\n    if (!this._enableGlobalPan) {\n      interactionMutex.take(zr, MUTEX_RESOURCE_KEY, this._uid);\n    }\n\n    each(this._handlers, function (handler, eventName) {\n      zr.on(eventName, handler);\n    });\n    this._brushType = brushOption.brushType;\n    this._brushOption = merge(clone(DEFAULT_BRUSH_OPT), brushOption, true);\n  };\n\n  BrushController.prototype._doDisableBrush = function () {\n    var zr = this._zr;\n    interactionMutex.release(zr, MUTEX_RESOURCE_KEY, this._uid);\n    each(this._handlers, function (handler, eventName) {\n      zr.off(eventName, handler);\n    });\n    this._brushType = this._brushOption = null;\n  };\n  /**\r\n   * @param panelOpts If not pass, it is global brush.\r\n   */\n\n\n  BrushController.prototype.setPanels = function (panelOpts) {\n    if (panelOpts && panelOpts.length) {\n      var panels_1 = this._panels = {};\n      each(panelOpts, function (panelOpts) {\n        panels_1[panelOpts.panelId] = clone(panelOpts);\n      });\n    } else {\n      this._panels = null;\n    }\n\n    return this;\n  };\n\n  BrushController.prototype.mount = function (opt) {\n    opt = opt || {};\n\n    if (process.env.NODE_ENV !== 'production') {\n      this._mounted = true; // should be at first.\n    }\n\n    this._enableGlobalPan = opt.enableGlobalPan;\n    var thisGroup = this.group;\n\n    this._zr.add(thisGroup);\n\n    thisGroup.attr({\n      x: opt.x || 0,\n      y: opt.y || 0,\n      rotation: opt.rotation || 0,\n      scaleX: opt.scaleX || 1,\n      scaleY: opt.scaleY || 1\n    });\n    this._transform = thisGroup.getLocalTransform();\n    return this;\n  }; // eachCover(cb, context): void {\n  //     each(this._covers, cb, context);\n  // }\n\n  /**\r\n   * Update covers.\r\n   * @param coverConfigList\r\n   *        If coverConfigList is null/undefined, all covers removed.\r\n   */\n\n\n  BrushController.prototype.updateCovers = function (coverConfigList) {\n    if (process.env.NODE_ENV !== 'production') {\n      assert(this._mounted);\n    }\n\n    coverConfigList = map(coverConfigList, function (coverConfig) {\n      return merge(clone(DEFAULT_BRUSH_OPT), coverConfig, true);\n    });\n    var tmpIdPrefix = '\\0-brush-index-';\n    var oldCovers = this._covers;\n    var newCovers = this._covers = [];\n    var controller = this;\n    var creatingCover = this._creatingCover;\n    new DataDiffer(oldCovers, coverConfigList, oldGetKey, getKey).add(addOrUpdate).update(addOrUpdate).remove(remove).execute();\n    return this;\n\n    function getKey(brushOption, index) {\n      return (brushOption.id != null ? brushOption.id : tmpIdPrefix + index) + '-' + brushOption.brushType;\n    }\n\n    function oldGetKey(cover, index) {\n      return getKey(cover.__brushOption, index);\n    }\n\n    function addOrUpdate(newIndex, oldIndex) {\n      var newBrushInternal = coverConfigList[newIndex]; // Consider setOption in event listener of brushSelect,\n      // where updating cover when creating should be forbidden.\n\n      if (oldIndex != null && oldCovers[oldIndex] === creatingCover) {\n        newCovers[newIndex] = oldCovers[oldIndex];\n      } else {\n        var cover = newCovers[newIndex] = oldIndex != null ? (oldCovers[oldIndex].__brushOption = newBrushInternal, oldCovers[oldIndex]) : endCreating(controller, createCover(controller, newBrushInternal));\n        updateCoverAfterCreation(controller, cover);\n      }\n    }\n\n    function remove(oldIndex) {\n      if (oldCovers[oldIndex] !== creatingCover) {\n        controller.group.remove(oldCovers[oldIndex]);\n      }\n    }\n  };\n\n  BrushController.prototype.unmount = function () {\n    if (process.env.NODE_ENV !== 'production') {\n      if (!this._mounted) {\n        return;\n      }\n    }\n\n    this.enableBrush(false); // container may 'removeAll' outside.\n\n    clearCovers(this);\n\n    this._zr.remove(this.group);\n\n    if (process.env.NODE_ENV !== 'production') {\n      this._mounted = false; // should be at last.\n    }\n\n    return this;\n  };\n\n  BrushController.prototype.dispose = function () {\n    this.unmount();\n    this.off();\n  };\n\n  return BrushController;\n}(Eventful);\n\nfunction createCover(controller, brushOption) {\n  var cover = coverRenderers[brushOption.brushType].createCover(controller, brushOption);\n  cover.__brushOption = brushOption;\n  updateZ(cover, brushOption);\n  controller.group.add(cover);\n  return cover;\n}\n\nfunction endCreating(controller, creatingCover) {\n  var coverRenderer = getCoverRenderer(creatingCover);\n\n  if (coverRenderer.endCreating) {\n    coverRenderer.endCreating(controller, creatingCover);\n    updateZ(creatingCover, creatingCover.__brushOption);\n  }\n\n  return creatingCover;\n}\n\nfunction updateCoverShape(controller, cover) {\n  var brushOption = cover.__brushOption;\n  getCoverRenderer(cover).updateCoverShape(controller, cover, brushOption.range, brushOption);\n}\n\nfunction updateZ(cover, brushOption) {\n  var z = brushOption.z;\n  z == null && (z = COVER_Z);\n  cover.traverse(function (el) {\n    el.z = z;\n    el.z2 = z; // Consider in given container.\n  });\n}\n\nfunction updateCoverAfterCreation(controller, cover) {\n  getCoverRenderer(cover).updateCommon(controller, cover);\n  updateCoverShape(controller, cover);\n}\n\nfunction getCoverRenderer(cover) {\n  return coverRenderers[cover.__brushOption.brushType];\n} // return target panel or `true` (means global panel)\n\n\nfunction getPanelByPoint(controller, e, localCursorPoint) {\n  var panels = controller._panels;\n\n  if (!panels) {\n    return BRUSH_PANEL_GLOBAL; // Global panel\n  }\n\n  var panel;\n  var transform = controller._transform;\n  each(panels, function (pn) {\n    pn.isTargetByCursor(e, localCursorPoint, transform) && (panel = pn);\n  });\n  return panel;\n} // Return a panel or true\n\n\nfunction getPanelByCover(controller, cover) {\n  var panels = controller._panels;\n\n  if (!panels) {\n    return BRUSH_PANEL_GLOBAL; // Global panel\n  }\n\n  var panelId = cover.__brushOption.panelId; // User may give cover without coord sys info,\n  // which is then treated as global panel.\n\n  return panelId != null ? panels[panelId] : BRUSH_PANEL_GLOBAL;\n}\n\nfunction clearCovers(controller) {\n  var covers = controller._covers;\n  var originalLength = covers.length;\n  each(covers, function (cover) {\n    controller.group.remove(cover);\n  }, controller);\n  covers.length = 0;\n  return !!originalLength;\n}\n\nfunction trigger(controller, opt) {\n  var areas = map(controller._covers, function (cover) {\n    var brushOption = cover.__brushOption;\n    var range = clone(brushOption.range);\n    return {\n      brushType: brushOption.brushType,\n      panelId: brushOption.panelId,\n      range: range\n    };\n  });\n  controller.trigger('brush', {\n    areas: areas,\n    isEnd: !!opt.isEnd,\n    removeOnClick: !!opt.removeOnClick\n  });\n}\n\nfunction shouldShowCover(controller) {\n  var track = controller._track;\n\n  if (!track.length) {\n    return false;\n  }\n\n  var p2 = track[track.length - 1];\n  var p1 = track[0];\n  var dx = p2[0] - p1[0];\n  var dy = p2[1] - p1[1];\n  var dist = mathPow(dx * dx + dy * dy, 0.5);\n  return dist > UNSELECT_THRESHOLD;\n}\n\nfunction getTrackEnds(track) {\n  var tail = track.length - 1;\n  tail < 0 && (tail = 0);\n  return [track[0], track[tail]];\n}\n\n;\n\nfunction createBaseRectCover(rectRangeConverter, controller, brushOption, edgeNameSequences) {\n  var cover = new graphic.Group();\n  cover.add(new graphic.Rect({\n    name: 'main',\n    style: makeStyle(brushOption),\n    silent: true,\n    draggable: true,\n    cursor: 'move',\n    drift: curry(driftRect, rectRangeConverter, controller, cover, ['n', 's', 'w', 'e']),\n    ondragend: curry(trigger, controller, {\n      isEnd: true\n    })\n  }));\n  each(edgeNameSequences, function (nameSequence) {\n    cover.add(new graphic.Rect({\n      name: nameSequence.join(''),\n      style: {\n        opacity: 0\n      },\n      draggable: true,\n      silent: true,\n      invisible: true,\n      drift: curry(driftRect, rectRangeConverter, controller, cover, nameSequence),\n      ondragend: curry(trigger, controller, {\n        isEnd: true\n      })\n    }));\n  });\n  return cover;\n}\n\nfunction updateBaseRect(controller, cover, localRange, brushOption) {\n  var lineWidth = brushOption.brushStyle.lineWidth || 0;\n  var handleSize = mathMax(lineWidth, MIN_RESIZE_LINE_WIDTH);\n  var x = localRange[0][0];\n  var y = localRange[1][0];\n  var xa = x - lineWidth / 2;\n  var ya = y - lineWidth / 2;\n  var x2 = localRange[0][1];\n  var y2 = localRange[1][1];\n  var x2a = x2 - handleSize + lineWidth / 2;\n  var y2a = y2 - handleSize + lineWidth / 2;\n  var width = x2 - x;\n  var height = y2 - y;\n  var widtha = width + lineWidth;\n  var heighta = height + lineWidth;\n  updateRectShape(controller, cover, 'main', x, y, width, height);\n\n  if (brushOption.transformable) {\n    updateRectShape(controller, cover, 'w', xa, ya, handleSize, heighta);\n    updateRectShape(controller, cover, 'e', x2a, ya, handleSize, heighta);\n    updateRectShape(controller, cover, 'n', xa, ya, widtha, handleSize);\n    updateRectShape(controller, cover, 's', xa, y2a, widtha, handleSize);\n    updateRectShape(controller, cover, 'nw', xa, ya, handleSize, handleSize);\n    updateRectShape(controller, cover, 'ne', x2a, ya, handleSize, handleSize);\n    updateRectShape(controller, cover, 'sw', xa, y2a, handleSize, handleSize);\n    updateRectShape(controller, cover, 'se', x2a, y2a, handleSize, handleSize);\n  }\n}\n\nfunction updateCommon(controller, cover) {\n  var brushOption = cover.__brushOption;\n  var transformable = brushOption.transformable;\n  var mainEl = cover.childAt(0);\n  mainEl.useStyle(makeStyle(brushOption));\n  mainEl.attr({\n    silent: !transformable,\n    cursor: transformable ? 'move' : 'default'\n  });\n  each([['w'], ['e'], ['n'], ['s'], ['s', 'e'], ['s', 'w'], ['n', 'e'], ['n', 'w']], function (nameSequence) {\n    var el = cover.childOfName(nameSequence.join(''));\n    var globalDir = nameSequence.length === 1 ? getGlobalDirection1(controller, nameSequence[0]) : getGlobalDirection2(controller, nameSequence);\n    el && el.attr({\n      silent: !transformable,\n      invisible: !transformable,\n      cursor: transformable ? CURSOR_MAP[globalDir] + '-resize' : null\n    });\n  });\n}\n\nfunction updateRectShape(controller, cover, name, x, y, w, h) {\n  var el = cover.childOfName(name);\n  el && el.setShape(pointsToRect(clipByPanel(controller, cover, [[x, y], [x + w, y + h]])));\n}\n\nfunction makeStyle(brushOption) {\n  return defaults({\n    strokeNoScale: true\n  }, brushOption.brushStyle);\n}\n\nfunction formatRectRange(x, y, x2, y2) {\n  var min = [mathMin(x, x2), mathMin(y, y2)];\n  var max = [mathMax(x, x2), mathMax(y, y2)];\n  return [[min[0], max[0]], [min[1], max[1]] // y range\n  ];\n}\n\nfunction getTransform(controller) {\n  return graphic.getTransform(controller.group);\n}\n\nfunction getGlobalDirection1(controller, localDirName) {\n  var map = {\n    w: 'left',\n    e: 'right',\n    n: 'top',\n    s: 'bottom'\n  };\n  var inverseMap = {\n    left: 'w',\n    right: 'e',\n    top: 'n',\n    bottom: 's'\n  };\n  var dir = graphic.transformDirection(map[localDirName], getTransform(controller));\n  return inverseMap[dir];\n}\n\nfunction getGlobalDirection2(controller, localDirNameSeq) {\n  var globalDir = [getGlobalDirection1(controller, localDirNameSeq[0]), getGlobalDirection1(controller, localDirNameSeq[1])];\n  (globalDir[0] === 'e' || globalDir[0] === 'w') && globalDir.reverse();\n  return globalDir.join('');\n}\n\nfunction driftRect(rectRangeConverter, controller, cover, dirNameSequence, dx, dy) {\n  var brushOption = cover.__brushOption;\n  var rectRange = rectRangeConverter.toRectRange(brushOption.range);\n  var localDelta = toLocalDelta(controller, dx, dy);\n  each(dirNameSequence, function (dirName) {\n    var ind = DIRECTION_MAP[dirName];\n    rectRange[ind[0]][ind[1]] += localDelta[ind[0]];\n  });\n  brushOption.range = rectRangeConverter.fromRectRange(formatRectRange(rectRange[0][0], rectRange[1][0], rectRange[0][1], rectRange[1][1]));\n  updateCoverAfterCreation(controller, cover);\n  trigger(controller, {\n    isEnd: false\n  });\n}\n\nfunction driftPolygon(controller, cover, dx, dy) {\n  var range = cover.__brushOption.range;\n  var localDelta = toLocalDelta(controller, dx, dy);\n  each(range, function (point) {\n    point[0] += localDelta[0];\n    point[1] += localDelta[1];\n  });\n  updateCoverAfterCreation(controller, cover);\n  trigger(controller, {\n    isEnd: false\n  });\n}\n\nfunction toLocalDelta(controller, dx, dy) {\n  var thisGroup = controller.group;\n  var localD = thisGroup.transformCoordToLocal(dx, dy);\n  var localZero = thisGroup.transformCoordToLocal(0, 0);\n  return [localD[0] - localZero[0], localD[1] - localZero[1]];\n}\n\nfunction clipByPanel(controller, cover, data) {\n  var panel = getPanelByCover(controller, cover);\n  return panel && panel !== BRUSH_PANEL_GLOBAL ? panel.clipPath(data, controller._transform) : clone(data);\n}\n\nfunction pointsToRect(points) {\n  var xmin = mathMin(points[0][0], points[1][0]);\n  var ymin = mathMin(points[0][1], points[1][1]);\n  var xmax = mathMax(points[0][0], points[1][0]);\n  var ymax = mathMax(points[0][1], points[1][1]);\n  return {\n    x: xmin,\n    y: ymin,\n    width: xmax - xmin,\n    height: ymax - ymin\n  };\n}\n\nfunction resetCursor(controller, e, localCursorPoint) {\n  if ( // Check active\n  !controller._brushType // resetCursor should be always called when mouse is in zr area,\n  // but not called when mouse is out of zr area to avoid bad influence\n  // if `mousemove`, `mouseup` are triggered from `document` event.\n  || isOutsideZrArea(controller, e.offsetX, e.offsetY)) {\n    return;\n  }\n\n  var zr = controller._zr;\n  var covers = controller._covers;\n  var currPanel = getPanelByPoint(controller, e, localCursorPoint); // Check whether in covers.\n\n  if (!controller._dragging) {\n    for (var i = 0; i < covers.length; i++) {\n      var brushOption = covers[i].__brushOption;\n\n      if (currPanel && (currPanel === BRUSH_PANEL_GLOBAL || brushOption.panelId === currPanel.panelId) && coverRenderers[brushOption.brushType].contain(covers[i], localCursorPoint[0], localCursorPoint[1])) {\n        // Use cursor style set on cover.\n        return;\n      }\n    }\n  }\n\n  currPanel && zr.setCursorStyle('crosshair');\n}\n\nfunction preventDefault(e) {\n  var rawE = e.event;\n  rawE.preventDefault && rawE.preventDefault();\n}\n\nfunction mainShapeContain(cover, x, y) {\n  return cover.childOfName('main').contain(x, y);\n}\n\nfunction updateCoverByMouse(controller, e, localCursorPoint, isEnd) {\n  var creatingCover = controller._creatingCover;\n  var panel = controller._creatingPanel;\n  var thisBrushOption = controller._brushOption;\n  var eventParams;\n\n  controller._track.push(localCursorPoint.slice());\n\n  if (shouldShowCover(controller) || creatingCover) {\n    if (panel && !creatingCover) {\n      thisBrushOption.brushMode === 'single' && clearCovers(controller);\n      var brushOption = clone(thisBrushOption);\n      brushOption.brushType = determineBrushType(brushOption.brushType, panel);\n      brushOption.panelId = panel === BRUSH_PANEL_GLOBAL ? null : panel.panelId;\n      creatingCover = controller._creatingCover = createCover(controller, brushOption);\n\n      controller._covers.push(creatingCover);\n    }\n\n    if (creatingCover) {\n      var coverRenderer = coverRenderers[determineBrushType(controller._brushType, panel)];\n      var coverBrushOption = creatingCover.__brushOption;\n      coverBrushOption.range = coverRenderer.getCreatingRange(clipByPanel(controller, creatingCover, controller._track));\n\n      if (isEnd) {\n        endCreating(controller, creatingCover);\n        coverRenderer.updateCommon(controller, creatingCover);\n      }\n\n      updateCoverShape(controller, creatingCover);\n      eventParams = {\n        isEnd: isEnd\n      };\n    }\n  } else if (isEnd && thisBrushOption.brushMode === 'single' && thisBrushOption.removeOnClick) {\n    // Help user to remove covers easily, only by a tiny drag, in 'single' mode.\n    // But a single click do not clear covers, because user may have casual\n    // clicks (for example, click on other component and do not expect covers\n    // disappear).\n    // Only some cover removed, trigger action, but not every click trigger action.\n    if (getPanelByPoint(controller, e, localCursorPoint) && clearCovers(controller)) {\n      eventParams = {\n        isEnd: isEnd,\n        removeOnClick: true\n      };\n    }\n  }\n\n  return eventParams;\n}\n\nfunction determineBrushType(brushType, panel) {\n  if (brushType === 'auto') {\n    if (process.env.NODE_ENV !== 'production') {\n      assert(panel && panel.defaultBrushType, 'MUST have defaultBrushType when brushType is \"atuo\"');\n    }\n\n    return panel.defaultBrushType;\n  }\n\n  return brushType;\n}\n\nvar pointerHandlers = {\n  mousedown: function (e) {\n    if (this._dragging) {\n      // In case some browser do not support globalOut,\n      // and release mouse out side the browser.\n      handleDragEnd(this, e);\n    } else if (!e.target || !e.target.draggable) {\n      preventDefault(e);\n      var localCursorPoint = this.group.transformCoordToLocal(e.offsetX, e.offsetY);\n      this._creatingCover = null;\n      var panel = this._creatingPanel = getPanelByPoint(this, e, localCursorPoint);\n\n      if (panel) {\n        this._dragging = true;\n        this._track = [localCursorPoint.slice()];\n      }\n    }\n  },\n  mousemove: function (e) {\n    var x = e.offsetX;\n    var y = e.offsetY;\n    var localCursorPoint = this.group.transformCoordToLocal(x, y);\n    resetCursor(this, e, localCursorPoint);\n\n    if (this._dragging) {\n      preventDefault(e);\n      var eventParams = updateCoverByMouse(this, e, localCursorPoint, false);\n      eventParams && trigger(this, eventParams);\n    }\n  },\n  mouseup: function (e) {\n    handleDragEnd(this, e);\n  }\n};\n\nfunction handleDragEnd(controller, e) {\n  if (controller._dragging) {\n    preventDefault(e);\n    var x = e.offsetX;\n    var y = e.offsetY;\n    var localCursorPoint = controller.group.transformCoordToLocal(x, y);\n    var eventParams = updateCoverByMouse(controller, e, localCursorPoint, true);\n    controller._dragging = false;\n    controller._track = [];\n    controller._creatingCover = null; // trigger event should be at final, after procedure will be nested.\n\n    eventParams && trigger(controller, eventParams);\n  }\n}\n\nfunction isOutsideZrArea(controller, x, y) {\n  var zr = controller._zr;\n  return x < 0 || x > zr.getWidth() || y < 0 || y > zr.getHeight();\n}\n/**\r\n * key: brushType\r\n */\n\n\nvar coverRenderers = {\n  lineX: getLineRenderer(0),\n  lineY: getLineRenderer(1),\n  rect: {\n    createCover: function (controller, brushOption) {\n      function returnInput(range) {\n        return range;\n      }\n\n      return createBaseRectCover({\n        toRectRange: returnInput,\n        fromRectRange: returnInput\n      }, controller, brushOption, [['w'], ['e'], ['n'], ['s'], ['s', 'e'], ['s', 'w'], ['n', 'e'], ['n', 'w']]);\n    },\n    getCreatingRange: function (localTrack) {\n      var ends = getTrackEnds(localTrack);\n      return formatRectRange(ends[1][0], ends[1][1], ends[0][0], ends[0][1]);\n    },\n    updateCoverShape: function (controller, cover, localRange, brushOption) {\n      updateBaseRect(controller, cover, localRange, brushOption);\n    },\n    updateCommon: updateCommon,\n    contain: mainShapeContain\n  },\n  polygon: {\n    createCover: function (controller, brushOption) {\n      var cover = new graphic.Group(); // Do not use graphic.Polygon because graphic.Polyline do not close the\n      // border of the shape when drawing, which is a better experience for user.\n\n      cover.add(new graphic.Polyline({\n        name: 'main',\n        style: makeStyle(brushOption),\n        silent: true\n      }));\n      return cover;\n    },\n    getCreatingRange: function (localTrack) {\n      return localTrack;\n    },\n    endCreating: function (controller, cover) {\n      cover.remove(cover.childAt(0)); // Use graphic.Polygon close the shape.\n\n      cover.add(new graphic.Polygon({\n        name: 'main',\n        draggable: true,\n        drift: curry(driftPolygon, controller, cover),\n        ondragend: curry(trigger, controller, {\n          isEnd: true\n        })\n      }));\n    },\n    updateCoverShape: function (controller, cover, localRange, brushOption) {\n      cover.childAt(0).setShape({\n        points: clipByPanel(controller, cover, localRange)\n      });\n    },\n    updateCommon: updateCommon,\n    contain: mainShapeContain\n  }\n};\n\nfunction getLineRenderer(xyIndex) {\n  return {\n    createCover: function (controller, brushOption) {\n      return createBaseRectCover({\n        toRectRange: function (range) {\n          var rectRange = [range, [0, 100]];\n          xyIndex && rectRange.reverse();\n          return rectRange;\n        },\n        fromRectRange: function (rectRange) {\n          return rectRange[xyIndex];\n        }\n      }, controller, brushOption, [[['w'], ['e']], [['n'], ['s']]][xyIndex]);\n    },\n    getCreatingRange: function (localTrack) {\n      var ends = getTrackEnds(localTrack);\n      var min = mathMin(ends[0][xyIndex], ends[1][xyIndex]);\n      var max = mathMax(ends[0][xyIndex], ends[1][xyIndex]);\n      return [min, max];\n    },\n    updateCoverShape: function (controller, cover, localRange, brushOption) {\n      var otherExtent; // If brushWidth not specified, fit the panel.\n\n      var panel = getPanelByCover(controller, cover);\n\n      if (panel !== BRUSH_PANEL_GLOBAL && panel.getLinearBrushOtherExtent) {\n        otherExtent = panel.getLinearBrushOtherExtent(xyIndex);\n      } else {\n        var zr = controller._zr;\n        otherExtent = [0, [zr.getWidth(), zr.getHeight()][1 - xyIndex]];\n      }\n\n      var rectRange = [localRange, otherExtent];\n      xyIndex && rectRange.reverse();\n      updateBaseRect(controller, cover, rectRange, brushOption);\n    },\n    updateCommon: updateCommon,\n    contain: mainShapeContain\n  };\n}\n\nexport default BrushController;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport BoundingRect from 'zrender/lib/core/BoundingRect.js';\nimport { onIrrelevantElement } from './cursorHelper.js';\nimport * as graphicUtil from '../../util/graphic.js';\nexport function makeRectPanelClipPath(rect) {\n  rect = normalizeRect(rect);\n  return function (localPoints) {\n    return graphicUtil.clipPointsByRect(localPoints, rect);\n  };\n}\nexport function makeLinearBrushOtherExtent(rect, specifiedXYIndex) {\n  rect = normalizeRect(rect);\n  return function (xyIndex) {\n    var idx = specifiedXYIndex != null ? specifiedXYIndex : xyIndex;\n    var brushWidth = idx ? rect.width : rect.height;\n    var base = idx ? rect.x : rect.y;\n    return [base, base + (brushWidth || 0)];\n  };\n}\nexport function makeRectIsTargetByCursor(rect, api, targetModel) {\n  var boundingRect = normalizeRect(rect);\n  return function (e, localCursorPoint) {\n    return boundingRect.contain(localCursorPoint[0], localCursorPoint[1]) && !onIrrelevantElement(e, api, targetModel);\n  };\n} // Consider width/height is negative.\n\nfunction normalizeRect(rect) {\n  return BoundingRect.create(rect);\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { __extends } from \"tslib\";\nimport * as zrUtil from 'zrender/lib/core/util.js';\nimport AxisBuilder from './AxisBuilder.js';\nimport BrushController from '../helper/BrushController.js';\nimport * as brushHelper from '../helper/brushHelper.js';\nimport * as graphic from '../../util/graphic.js';\nimport ComponentView from '../../view/Component.js';\nvar elementList = ['axisLine', 'axisTickLabel', 'axisName'];\n\nvar ParallelAxisView =\n/** @class */\nfunction (_super) {\n  __extends(ParallelAxisView, _super);\n\n  function ParallelAxisView() {\n    var _this = _super !== null && _super.apply(this, arguments) || this;\n\n    _this.type = ParallelAxisView.type;\n    return _this;\n  }\n\n  ParallelAxisView.prototype.init = function (ecModel, api) {\n    _super.prototype.init.apply(this, arguments);\n\n    (this._brushController = new BrushController(api.getZr())).on('brush', zrUtil.bind(this._onBrush, this));\n  };\n\n  ParallelAxisView.prototype.render = function (axisModel, ecModel, api, payload) {\n    if (fromAxisAreaSelect(axisModel, ecModel, payload)) {\n      return;\n    }\n\n    this.axisModel = axisModel;\n    this.api = api;\n    this.group.removeAll();\n    var oldAxisGroup = this._axisGroup;\n    this._axisGroup = new graphic.Group();\n    this.group.add(this._axisGroup);\n\n    if (!axisModel.get('show')) {\n      return;\n    }\n\n    var coordSysModel = getCoordSysModel(axisModel, ecModel);\n    var coordSys = coordSysModel.coordinateSystem;\n    var areaSelectStyle = axisModel.getAreaSelectStyle();\n    var areaWidth = areaSelectStyle.width;\n    var dim = axisModel.axis.dim;\n    var axisLayout = coordSys.getAxisLayout(dim);\n    var builderOpt = zrUtil.extend({\n      strokeContainThreshold: areaWidth\n    }, axisLayout);\n    var axisBuilder = new AxisBuilder(axisModel, builderOpt);\n    zrUtil.each(elementList, axisBuilder.add, axisBuilder);\n\n    this._axisGroup.add(axisBuilder.getGroup());\n\n    this._refreshBrushController(builderOpt, areaSelectStyle, axisModel, coordSysModel, areaWidth, api);\n\n    graphic.groupTransition(oldAxisGroup, this._axisGroup, axisModel);\n  }; // /**\n  //  * @override\n  //  */\n  // updateVisual(axisModel, ecModel, api, payload) {\n  //     this._brushController && this._brushController\n  //         .updateCovers(getCoverInfoList(axisModel));\n  // }\n\n\n  ParallelAxisView.prototype._refreshBrushController = function (builderOpt, areaSelectStyle, axisModel, coordSysModel, areaWidth, api) {\n    // After filtering, axis may change, select area needs to be update.\n    var extent = axisModel.axis.getExtent();\n    var extentLen = extent[1] - extent[0];\n    var extra = Math.min(30, Math.abs(extentLen) * 0.1); // Arbitrary value.\n    // width/height might be negative, which will be\n    // normalized in BoundingRect.\n\n    var rect = graphic.BoundingRect.create({\n      x: extent[0],\n      y: -areaWidth / 2,\n      width: extentLen,\n      height: areaWidth\n    });\n    rect.x -= extra;\n    rect.width += 2 * extra;\n\n    this._brushController.mount({\n      enableGlobalPan: true,\n      rotation: builderOpt.rotation,\n      x: builderOpt.position[0],\n      y: builderOpt.position[1]\n    }).setPanels([{\n      panelId: 'pl',\n      clipPath: brushHelper.makeRectPanelClipPath(rect),\n      isTargetByCursor: brushHelper.makeRectIsTargetByCursor(rect, api, coordSysModel),\n      getLinearBrushOtherExtent: brushHelper.makeLinearBrushOtherExtent(rect, 0)\n    }]).enableBrush({\n      brushType: 'lineX',\n      brushStyle: areaSelectStyle,\n      removeOnClick: true\n    }).updateCovers(getCoverInfoList(axisModel));\n  };\n\n  ParallelAxisView.prototype._onBrush = function (eventParam) {\n    var coverInfoList = eventParam.areas; // Do not cache these object, because the mey be changed.\n\n    var axisModel = this.axisModel;\n    var axis = axisModel.axis;\n    var intervals = zrUtil.map(coverInfoList, function (coverInfo) {\n      return [axis.coordToData(coverInfo.range[0], true), axis.coordToData(coverInfo.range[1], true)];\n    }); // If realtime is true, action is not dispatched on drag end, because\n    // the drag end emits the same params with the last drag move event,\n    // and may have some delay when using touch pad.\n\n    if (!axisModel.option.realtime === eventParam.isEnd || eventParam.removeOnClick) {\n      // jshint ignore:line\n      this.api.dispatchAction({\n        type: 'axisAreaSelect',\n        parallelAxisId: axisModel.id,\n        intervals: intervals\n      });\n    }\n  };\n\n  ParallelAxisView.prototype.dispose = function () {\n    this._brushController.dispose();\n  };\n\n  ParallelAxisView.type = 'parallelAxis';\n  return ParallelAxisView;\n}(ComponentView);\n\nfunction fromAxisAreaSelect(axisModel, ecModel, payload) {\n  return payload && payload.type === 'axisAreaSelect' && ecModel.findComponents({\n    mainType: 'parallelAxis',\n    query: payload\n  })[0] === axisModel;\n}\n\nfunction getCoverInfoList(axisModel) {\n  var axis = axisModel.axis;\n  return zrUtil.map(axisModel.activeIntervals, function (interval) {\n    return {\n      brushType: 'lineX',\n      panelId: 'pl',\n      range: [axis.dataToCoord(interval[0], true), axis.dataToCoord(interval[1], true)]\n    };\n  });\n}\n\nfunction getCoordSysModel(axisModel, ecModel) {\n  return ecModel.getComponent('parallel', axisModel.get('parallelIndex'));\n}\n\nexport default ParallelAxisView;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nvar actionInfo = {\n  type: 'axisAreaSelect',\n  event: 'axisAreaSelected' // update: 'updateVisual'\n\n};\nexport function installParallelActions(registers) {\n  registers.registerAction(actionInfo, function (payload, ecModel) {\n    ecModel.eachComponent({\n      mainType: 'parallelAxis',\n      query: payload\n    }, function (parallelAxisModel) {\n      parallelAxisModel.axis.model.setActiveIntervals(payload.intervals);\n    });\n  });\n  /**\r\n   * @payload\r\n   */\n\n  registers.registerAction('parallelAxisExpand', function (payload, ecModel) {\n    ecModel.eachComponent({\n      mainType: 'parallel',\n      query: payload\n    }, function (parallelModel) {\n      parallelModel.setAxisExpand(payload);\n    });\n  });\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport parallelPreprocessor from '../../coord/parallel/parallelPreprocessor.js';\nimport ParallelView from './ParallelView.js';\nimport ParallelModel from '../../coord/parallel/ParallelModel.js';\nimport parallelCoordSysCreator from '../../coord/parallel/parallelCreator.js';\nimport axisModelCreator from '../../coord/axisModelCreator.js';\nimport ParallelAxisModel from '../../coord/parallel/AxisModel.js';\nimport ParallelAxisView from '../axis/ParallelAxisView.js';\nimport { installParallelActions } from '../axis/parallelAxisAction.js';\nvar defaultAxisOption = {\n  type: 'value',\n  areaSelectStyle: {\n    width: 20,\n    borderWidth: 1,\n    borderColor: 'rgba(160,197,232)',\n    color: 'rgba(160,197,232)',\n    opacity: 0.3\n  },\n  realtime: true,\n  z: 10\n};\nexport function install(registers) {\n  registers.registerComponentView(ParallelView);\n  registers.registerComponentModel(ParallelModel);\n  registers.registerCoordinateSystem('parallel', parallelCoordSysCreator);\n  registers.registerPreprocessor(parallelPreprocessor);\n  registers.registerComponentModel(ParallelAxisModel);\n  registers.registerComponentView(ParallelAxisView);\n  axisModelCreator(registers, 'parallel', ParallelAxisModel, defaultAxisOption);\n  installParallelActions(registers);\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { __extends } from \"tslib\";\nimport * as graphic from '../../util/graphic.js';\nimport { enterEmphasis, leaveEmphasis, toggleHoverEmphasis, setStatesStylesFromModel } from '../../util/states.js';\nimport ChartView from '../../view/Chart.js';\nimport { setLabelStyle, getLabelStatesModels } from '../../label/labelStyle.js';\nimport { getECData } from '../../util/innerStore.js';\nimport { isString, retrieve3 } from 'zrender/lib/core/util.js';\n\nvar SankeyPathShape =\n/** @class */\nfunction () {\n  function SankeyPathShape() {\n    this.x1 = 0;\n    this.y1 = 0;\n    this.x2 = 0;\n    this.y2 = 0;\n    this.cpx1 = 0;\n    this.cpy1 = 0;\n    this.cpx2 = 0;\n    this.cpy2 = 0;\n    this.extent = 0;\n  }\n\n  return SankeyPathShape;\n}();\n\nvar SankeyPath =\n/** @class */\nfunction (_super) {\n  __extends(SankeyPath, _super);\n\n  function SankeyPath(opts) {\n    return _super.call(this, opts) || this;\n  }\n\n  SankeyPath.prototype.getDefaultShape = function () {\n    return new SankeyPathShape();\n  };\n\n  SankeyPath.prototype.buildPath = function (ctx, shape) {\n    var extent = shape.extent;\n    ctx.moveTo(shape.x1, shape.y1);\n    ctx.bezierCurveTo(shape.cpx1, shape.cpy1, shape.cpx2, shape.cpy2, shape.x2, shape.y2);\n\n    if (shape.orient === 'vertical') {\n      ctx.lineTo(shape.x2 + extent, shape.y2);\n      ctx.bezierCurveTo(shape.cpx2 + extent, shape.cpy2, shape.cpx1 + extent, shape.cpy1, shape.x1 + extent, shape.y1);\n    } else {\n      ctx.lineTo(shape.x2, shape.y2 + extent);\n      ctx.bezierCurveTo(shape.cpx2, shape.cpy2 + extent, shape.cpx1, shape.cpy1 + extent, shape.x1, shape.y1 + extent);\n    }\n\n    ctx.closePath();\n  };\n\n  SankeyPath.prototype.highlight = function () {\n    enterEmphasis(this);\n  };\n\n  SankeyPath.prototype.downplay = function () {\n    leaveEmphasis(this);\n  };\n\n  return SankeyPath;\n}(graphic.Path);\n\nvar SankeyView =\n/** @class */\nfunction (_super) {\n  __extends(SankeyView, _super);\n\n  function SankeyView() {\n    var _this = _super !== null && _super.apply(this, arguments) || this;\n\n    _this.type = SankeyView.type;\n    _this._focusAdjacencyDisabled = false;\n    return _this;\n  }\n\n  SankeyView.prototype.render = function (seriesModel, ecModel, api) {\n    var sankeyView = this;\n    var graph = seriesModel.getGraph();\n    var group = this.group;\n    var layoutInfo = seriesModel.layoutInfo; // view width\n\n    var width = layoutInfo.width; // view height\n\n    var height = layoutInfo.height;\n    var nodeData = seriesModel.getData();\n    var edgeData = seriesModel.getData('edge');\n    var orient = seriesModel.get('orient');\n    this._model = seriesModel;\n    group.removeAll();\n    group.x = layoutInfo.x;\n    group.y = layoutInfo.y; // generate a bezire Curve for each edge\n\n    graph.eachEdge(function (edge) {\n      var curve = new SankeyPath();\n      var ecData = getECData(curve);\n      ecData.dataIndex = edge.dataIndex;\n      ecData.seriesIndex = seriesModel.seriesIndex;\n      ecData.dataType = 'edge';\n      var edgeModel = edge.getModel();\n      var lineStyleModel = edgeModel.getModel('lineStyle');\n      var curvature = lineStyleModel.get('curveness');\n      var n1Layout = edge.node1.getLayout();\n      var node1Model = edge.node1.getModel();\n      var dragX1 = node1Model.get('localX');\n      var dragY1 = node1Model.get('localY');\n      var n2Layout = edge.node2.getLayout();\n      var node2Model = edge.node2.getModel();\n      var dragX2 = node2Model.get('localX');\n      var dragY2 = node2Model.get('localY');\n      var edgeLayout = edge.getLayout();\n      var x1;\n      var y1;\n      var x2;\n      var y2;\n      var cpx1;\n      var cpy1;\n      var cpx2;\n      var cpy2;\n      curve.shape.extent = Math.max(1, edgeLayout.dy);\n      curve.shape.orient = orient;\n\n      if (orient === 'vertical') {\n        x1 = (dragX1 != null ? dragX1 * width : n1Layout.x) + edgeLayout.sy;\n        y1 = (dragY1 != null ? dragY1 * height : n1Layout.y) + n1Layout.dy;\n        x2 = (dragX2 != null ? dragX2 * width : n2Layout.x) + edgeLayout.ty;\n        y2 = dragY2 != null ? dragY2 * height : n2Layout.y;\n        cpx1 = x1;\n        cpy1 = y1 * (1 - curvature) + y2 * curvature;\n        cpx2 = x2;\n        cpy2 = y1 * curvature + y2 * (1 - curvature);\n      } else {\n        x1 = (dragX1 != null ? dragX1 * width : n1Layout.x) + n1Layout.dx;\n        y1 = (dragY1 != null ? dragY1 * height : n1Layout.y) + edgeLayout.sy;\n        x2 = dragX2 != null ? dragX2 * width : n2Layout.x;\n        y2 = (dragY2 != null ? dragY2 * height : n2Layout.y) + edgeLayout.ty;\n        cpx1 = x1 * (1 - curvature) + x2 * curvature;\n        cpy1 = y1;\n        cpx2 = x1 * curvature + x2 * (1 - curvature);\n        cpy2 = y2;\n      }\n\n      curve.setShape({\n        x1: x1,\n        y1: y1,\n        x2: x2,\n        y2: y2,\n        cpx1: cpx1,\n        cpy1: cpy1,\n        cpx2: cpx2,\n        cpy2: cpy2\n      });\n      curve.useStyle(lineStyleModel.getItemStyle()); // Special color, use source node color or target node color\n\n      applyCurveStyle(curve.style, orient, edge);\n      var defaultEdgeLabelText = \"\" + edgeModel.get('value');\n      var edgeLabelStateModels = getLabelStatesModels(edgeModel, 'edgeLabel');\n      setLabelStyle(curve, edgeLabelStateModels, {\n        labelFetcher: {\n          getFormattedLabel: function (dataIndex, stateName, dataType, labelDimIndex, formatter, extendParams) {\n            return seriesModel.getFormattedLabel(dataIndex, stateName, 'edge', labelDimIndex, // ensure edgeLabel formatter is provided\n            // to prevent the inheritance from `label.formatter` of the series\n            retrieve3(formatter, edgeLabelStateModels.normal && edgeLabelStateModels.normal.get('formatter'), defaultEdgeLabelText), extendParams);\n          }\n        },\n        labelDataIndex: edge.dataIndex,\n        defaultText: defaultEdgeLabelText\n      });\n      curve.setTextConfig({\n        position: 'inside'\n      });\n      var emphasisModel = edgeModel.getModel('emphasis');\n      setStatesStylesFromModel(curve, edgeModel, 'lineStyle', function (model) {\n        var style = model.getItemStyle();\n        applyCurveStyle(style, orient, edge);\n        return style;\n      });\n      group.add(curve);\n      edgeData.setItemGraphicEl(edge.dataIndex, curve);\n      var focus = emphasisModel.get('focus');\n      toggleHoverEmphasis(curve, focus === 'adjacency' ? edge.getAdjacentDataIndices() : focus === 'trajectory' ? edge.getTrajectoryDataIndices() : focus, emphasisModel.get('blurScope'), emphasisModel.get('disabled'));\n    }); // Generate a rect for each node\n\n    graph.eachNode(function (node) {\n      var layout = node.getLayout();\n      var itemModel = node.getModel();\n      var dragX = itemModel.get('localX');\n      var dragY = itemModel.get('localY');\n      var emphasisModel = itemModel.getModel('emphasis');\n      var rect = new graphic.Rect({\n        shape: {\n          x: dragX != null ? dragX * width : layout.x,\n          y: dragY != null ? dragY * height : layout.y,\n          width: layout.dx,\n          height: layout.dy\n        },\n        style: itemModel.getModel('itemStyle').getItemStyle(),\n        z2: 10\n      });\n      setLabelStyle(rect, getLabelStatesModels(itemModel), {\n        labelFetcher: {\n          getFormattedLabel: function (dataIndex, stateName) {\n            return seriesModel.getFormattedLabel(dataIndex, stateName, 'node');\n          }\n        },\n        labelDataIndex: node.dataIndex,\n        defaultText: node.id\n      });\n      rect.disableLabelAnimation = true;\n      rect.setStyle('fill', node.getVisual('color'));\n      rect.setStyle('decal', node.getVisual('style').decal);\n      setStatesStylesFromModel(rect, itemModel);\n      group.add(rect);\n      nodeData.setItemGraphicEl(node.dataIndex, rect);\n      getECData(rect).dataType = 'node';\n      var focus = emphasisModel.get('focus');\n      toggleHoverEmphasis(rect, focus === 'adjacency' ? node.getAdjacentDataIndices() : focus === 'trajectory' ? node.getTrajectoryDataIndices() : focus, emphasisModel.get('blurScope'), emphasisModel.get('disabled'));\n    });\n    nodeData.eachItemGraphicEl(function (el, dataIndex) {\n      var itemModel = nodeData.getItemModel(dataIndex);\n\n      if (itemModel.get('draggable')) {\n        el.drift = function (dx, dy) {\n          sankeyView._focusAdjacencyDisabled = true;\n          this.shape.x += dx;\n          this.shape.y += dy;\n          this.dirty();\n          api.dispatchAction({\n            type: 'dragNode',\n            seriesId: seriesModel.id,\n            dataIndex: nodeData.getRawIndex(dataIndex),\n            localX: this.shape.x / width,\n            localY: this.shape.y / height\n          });\n        };\n\n        el.ondragend = function () {\n          sankeyView._focusAdjacencyDisabled = false;\n        };\n\n        el.draggable = true;\n        el.cursor = 'move';\n      }\n    });\n\n    if (!this._data && seriesModel.isAnimationEnabled()) {\n      group.setClipPath(createGridClipShape(group.getBoundingRect(), seriesModel, function () {\n        group.removeClipPath();\n      }));\n    }\n\n    this._data = seriesModel.getData();\n  };\n\n  SankeyView.prototype.dispose = function () {};\n\n  SankeyView.type = 'sankey';\n  return SankeyView;\n}(ChartView);\n/**\r\n * Special color, use source node color or target node color\r\n * @param curveProps curve's style to parse\r\n * @param orient direction\r\n * @param edge current curve data\r\n */\n\n\nfunction applyCurveStyle(curveProps, orient, edge) {\n  switch (curveProps.fill) {\n    case 'source':\n      curveProps.fill = edge.node1.getVisual('color');\n      curveProps.decal = edge.node1.getVisual('style').decal;\n      break;\n\n    case 'target':\n      curveProps.fill = edge.node2.getVisual('color');\n      curveProps.decal = edge.node2.getVisual('style').decal;\n      break;\n\n    case 'gradient':\n      var sourceColor = edge.node1.getVisual('color');\n      var targetColor = edge.node2.getVisual('color');\n\n      if (isString(sourceColor) && isString(targetColor)) {\n        curveProps.fill = new graphic.LinearGradient(0, 0, +(orient === 'horizontal'), +(orient === 'vertical'), [{\n          color: sourceColor,\n          offset: 0\n        }, {\n          color: targetColor,\n          offset: 1\n        }]);\n      }\n\n  }\n} // Add animation to the view\n\n\nfunction createGridClipShape(rect, seriesModel, cb) {\n  var rectEl = new graphic.Rect({\n    shape: {\n      x: rect.x - 10,\n      y: rect.y - 10,\n      width: 0,\n      height: rect.height + 20\n    }\n  });\n  graphic.initProps(rectEl, {\n    shape: {\n      width: rect.width + 20\n    }\n  }, seriesModel, cb);\n  return rectEl;\n}\n\nexport default SankeyView;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { __extends } from \"tslib\";\nimport SeriesModel from '../../model/Series.js';\nimport createGraphFromNodeEdge from '../helper/createGraphFromNodeEdge.js';\nimport Model from '../../model/Model.js';\nimport { createTooltipMarkup } from '../../component/tooltip/tooltipMarkup.js';\n\nvar SankeySeriesModel =\n/** @class */\nfunction (_super) {\n  __extends(SankeySeriesModel, _super);\n\n  function SankeySeriesModel() {\n    var _this = _super !== null && _super.apply(this, arguments) || this;\n\n    _this.type = SankeySeriesModel.type;\n    return _this;\n  }\n  /**\r\n   * Init a graph data structure from data in option series\r\n   */\n\n\n  SankeySeriesModel.prototype.getInitialData = function (option, ecModel) {\n    var links = option.edges || option.links;\n    var nodes = option.data || option.nodes;\n    var levels = option.levels;\n    this.levelModels = [];\n    var levelModels = this.levelModels;\n\n    for (var i = 0; i < levels.length; i++) {\n      if (levels[i].depth != null && levels[i].depth >= 0) {\n        levelModels[levels[i].depth] = new Model(levels[i], this, ecModel);\n      } else {\n        if (process.env.NODE_ENV !== 'production') {\n          throw new Error('levels[i].depth is mandatory and should be natural number');\n        }\n      }\n    }\n\n    if (nodes && links) {\n      var graph = createGraphFromNodeEdge(nodes, links, this, true, beforeLink);\n      return graph.data;\n    }\n\n    function beforeLink(nodeData, edgeData) {\n      nodeData.wrapMethod('getItemModel', function (model, idx) {\n        var seriesModel = model.parentModel;\n        var layout = seriesModel.getData().getItemLayout(idx);\n\n        if (layout) {\n          var nodeDepth = layout.depth;\n          var levelModel = seriesModel.levelModels[nodeDepth];\n\n          if (levelModel) {\n            model.parentModel = levelModel;\n          }\n        }\n\n        return model;\n      });\n      edgeData.wrapMethod('getItemModel', function (model, idx) {\n        var seriesModel = model.parentModel;\n        var edge = seriesModel.getGraph().getEdgeByIndex(idx);\n        var layout = edge.node1.getLayout();\n\n        if (layout) {\n          var depth = layout.depth;\n          var levelModel = seriesModel.levelModels[depth];\n\n          if (levelModel) {\n            model.parentModel = levelModel;\n          }\n        }\n\n        return model;\n      });\n    }\n  };\n\n  SankeySeriesModel.prototype.setNodePosition = function (dataIndex, localPosition) {\n    var nodes = this.option.data || this.option.nodes;\n    var dataItem = nodes[dataIndex];\n    dataItem.localX = localPosition[0];\n    dataItem.localY = localPosition[1];\n  };\n  /**\r\n   * Return the graphic data structure\r\n   *\r\n   * @return graphic data structure\r\n   */\n\n\n  SankeySeriesModel.prototype.getGraph = function () {\n    return this.getData().graph;\n  };\n  /**\r\n   * Get edge data of graphic data structure\r\n   *\r\n   * @return data structure of list\r\n   */\n\n\n  SankeySeriesModel.prototype.getEdgeData = function () {\n    return this.getGraph().edgeData;\n  };\n\n  SankeySeriesModel.prototype.formatTooltip = function (dataIndex, multipleSeries, dataType) {\n    function noValue(val) {\n      return isNaN(val) || val == null;\n    } // dataType === 'node' or empty do not show tooltip by default\n\n\n    if (dataType === 'edge') {\n      var params = this.getDataParams(dataIndex, dataType);\n      var rawDataOpt = params.data;\n      var edgeValue = params.value;\n      var edgeName = rawDataOpt.source + ' -- ' + rawDataOpt.target;\n      return createTooltipMarkup('nameValue', {\n        name: edgeName,\n        value: edgeValue,\n        noValue: noValue(edgeValue)\n      });\n    } // dataType === 'node'\n    else {\n        var node = this.getGraph().getNodeByIndex(dataIndex);\n        var value = node.getLayout().value;\n        var name_1 = this.getDataParams(dataIndex, dataType).data.name;\n        return createTooltipMarkup('nameValue', {\n          name: name_1 != null ? name_1 + '' : null,\n          value: value,\n          noValue: noValue(value)\n        });\n      }\n  };\n\n  SankeySeriesModel.prototype.optionUpdated = function () {}; // Override Series.getDataParams()\n\n\n  SankeySeriesModel.prototype.getDataParams = function (dataIndex, dataType) {\n    var params = _super.prototype.getDataParams.call(this, dataIndex, dataType);\n\n    if (params.value == null && dataType === 'node') {\n      var node = this.getGraph().getNodeByIndex(dataIndex);\n      var nodeValue = node.getLayout().value;\n      params.value = nodeValue;\n    }\n\n    return params;\n  };\n\n  SankeySeriesModel.type = 'series.sankey';\n  SankeySeriesModel.defaultOption = {\n    // zlevel: 0,\n    z: 2,\n    coordinateSystem: 'view',\n    left: '5%',\n    top: '5%',\n    right: '20%',\n    bottom: '5%',\n    orient: 'horizontal',\n    nodeWidth: 20,\n    nodeGap: 8,\n    draggable: true,\n    layoutIterations: 32,\n    label: {\n      show: true,\n      position: 'right',\n      fontSize: 12\n    },\n    edgeLabel: {\n      show: false,\n      fontSize: 12\n    },\n    levels: [],\n    nodeAlign: 'justify',\n    lineStyle: {\n      color: '#314656',\n      opacity: 0.2,\n      curveness: 0.5\n    },\n    emphasis: {\n      label: {\n        show: true\n      },\n      lineStyle: {\n        opacity: 0.5\n      }\n    },\n    select: {\n      itemStyle: {\n        borderColor: '#212121'\n      }\n    },\n    animationEasing: 'linear',\n    animationDuration: 1000\n  };\n  return SankeySeriesModel;\n}(SeriesModel);\n\nexport default SankeySeriesModel;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport * as layout from '../../util/layout.js';\nimport * as zrUtil from 'zrender/lib/core/util.js';\nimport { groupData } from '../../util/model.js';\nexport default function sankeyLayout(ecModel, api) {\n  ecModel.eachSeriesByType('sankey', function (seriesModel) {\n    var nodeWidth = seriesModel.get('nodeWidth');\n    var nodeGap = seriesModel.get('nodeGap');\n    var layoutInfo = getViewRect(seriesModel, api);\n    seriesModel.layoutInfo = layoutInfo;\n    var width = layoutInfo.width;\n    var height = layoutInfo.height;\n    var graph = seriesModel.getGraph();\n    var nodes = graph.nodes;\n    var edges = graph.edges;\n    computeNodeValues(nodes);\n    var filteredNodes = zrUtil.filter(nodes, function (node) {\n      return node.getLayout().value === 0;\n    });\n    var iterations = filteredNodes.length !== 0 ? 0 : seriesModel.get('layoutIterations');\n    var orient = seriesModel.get('orient');\n    var nodeAlign = seriesModel.get('nodeAlign');\n    layoutSankey(nodes, edges, nodeWidth, nodeGap, width, height, iterations, orient, nodeAlign);\n  });\n}\n/**\r\n * Get the layout position of the whole view\r\n */\n\nfunction getViewRect(seriesModel, api) {\n  return layout.getLayoutRect(seriesModel.getBoxLayoutParams(), {\n    width: api.getWidth(),\n    height: api.getHeight()\n  });\n}\n\nfunction layoutSankey(nodes, edges, nodeWidth, nodeGap, width, height, iterations, orient, nodeAlign) {\n  computeNodeBreadths(nodes, edges, nodeWidth, width, height, orient, nodeAlign);\n  computeNodeDepths(nodes, edges, height, width, nodeGap, iterations, orient);\n  computeEdgeDepths(nodes, orient);\n}\n/**\r\n * Compute the value of each node by summing the associated edge's value\r\n */\n\n\nfunction computeNodeValues(nodes) {\n  zrUtil.each(nodes, function (node) {\n    var value1 = sum(node.outEdges, getEdgeValue);\n    var value2 = sum(node.inEdges, getEdgeValue);\n    var nodeRawValue = node.getValue() || 0;\n    var value = Math.max(value1, value2, nodeRawValue);\n    node.setLayout({\n      value: value\n    }, true);\n  });\n}\n/**\r\n * Compute the x-position for each node.\r\n *\r\n * Here we use Kahn algorithm to detect cycle when we traverse\r\n * the node to computer the initial x position.\r\n */\n\n\nfunction computeNodeBreadths(nodes, edges, nodeWidth, width, height, orient, nodeAlign) {\n  // Used to mark whether the edge is deleted. if it is deleted,\n  // the value is 0, otherwise it is 1.\n  var remainEdges = []; // Storage each node's indegree.\n\n  var indegreeArr = []; // Used to storage the node with indegree is equal to 0.\n\n  var zeroIndegrees = [];\n  var nextTargetNode = [];\n  var x = 0; // let kx = 0;\n\n  for (var i = 0; i < edges.length; i++) {\n    remainEdges[i] = 1;\n  }\n\n  for (var i = 0; i < nodes.length; i++) {\n    indegreeArr[i] = nodes[i].inEdges.length;\n\n    if (indegreeArr[i] === 0) {\n      zeroIndegrees.push(nodes[i]);\n    }\n  }\n\n  var maxNodeDepth = -1; // Traversing nodes using topological sorting to calculate the\n  // horizontal(if orient === 'horizontal') or vertical(if orient === 'vertical')\n  // position of the nodes.\n\n  while (zeroIndegrees.length) {\n    for (var idx = 0; idx < zeroIndegrees.length; idx++) {\n      var node = zeroIndegrees[idx];\n      var item = node.hostGraph.data.getRawDataItem(node.dataIndex);\n      var isItemDepth = item.depth != null && item.depth >= 0;\n\n      if (isItemDepth && item.depth > maxNodeDepth) {\n        maxNodeDepth = item.depth;\n      }\n\n      node.setLayout({\n        depth: isItemDepth ? item.depth : x\n      }, true);\n      orient === 'vertical' ? node.setLayout({\n        dy: nodeWidth\n      }, true) : node.setLayout({\n        dx: nodeWidth\n      }, true);\n\n      for (var edgeIdx = 0; edgeIdx < node.outEdges.length; edgeIdx++) {\n        var edge = node.outEdges[edgeIdx];\n        var indexEdge = edges.indexOf(edge);\n        remainEdges[indexEdge] = 0;\n        var targetNode = edge.node2;\n        var nodeIndex = nodes.indexOf(targetNode);\n\n        if (--indegreeArr[nodeIndex] === 0 && nextTargetNode.indexOf(targetNode) < 0) {\n          nextTargetNode.push(targetNode);\n        }\n      }\n    }\n\n    ++x;\n    zeroIndegrees = nextTargetNode;\n    nextTargetNode = [];\n  }\n\n  for (var i = 0; i < remainEdges.length; i++) {\n    if (remainEdges[i] === 1) {\n      throw new Error('Sankey is a DAG, the original data has cycle!');\n    }\n  }\n\n  var maxDepth = maxNodeDepth > x - 1 ? maxNodeDepth : x - 1;\n\n  if (nodeAlign && nodeAlign !== 'left') {\n    adjustNodeWithNodeAlign(nodes, nodeAlign, orient, maxDepth);\n  }\n\n  var kx = orient === 'vertical' ? (height - nodeWidth) / maxDepth : (width - nodeWidth) / maxDepth;\n  scaleNodeBreadths(nodes, kx, orient);\n}\n\nfunction isNodeDepth(node) {\n  var item = node.hostGraph.data.getRawDataItem(node.dataIndex);\n  return item.depth != null && item.depth >= 0;\n}\n\nfunction adjustNodeWithNodeAlign(nodes, nodeAlign, orient, maxDepth) {\n  if (nodeAlign === 'right') {\n    var nextSourceNode = [];\n    var remainNodes = nodes;\n    var nodeHeight = 0;\n\n    while (remainNodes.length) {\n      for (var i = 0; i < remainNodes.length; i++) {\n        var node = remainNodes[i];\n        node.setLayout({\n          skNodeHeight: nodeHeight\n        }, true);\n\n        for (var j = 0; j < node.inEdges.length; j++) {\n          var edge = node.inEdges[j];\n\n          if (nextSourceNode.indexOf(edge.node1) < 0) {\n            nextSourceNode.push(edge.node1);\n          }\n        }\n      }\n\n      remainNodes = nextSourceNode;\n      nextSourceNode = [];\n      ++nodeHeight;\n    }\n\n    zrUtil.each(nodes, function (node) {\n      if (!isNodeDepth(node)) {\n        node.setLayout({\n          depth: Math.max(0, maxDepth - node.getLayout().skNodeHeight)\n        }, true);\n      }\n    });\n  } else if (nodeAlign === 'justify') {\n    moveSinksRight(nodes, maxDepth);\n  }\n}\n/**\r\n * All the node without outEgdes are assigned maximum x-position and\r\n *     be aligned in the last column.\r\n *\r\n * @param nodes.  node of sankey view.\r\n * @param maxDepth.  use to assign to node without outEdges as x-position.\r\n */\n\n\nfunction moveSinksRight(nodes, maxDepth) {\n  zrUtil.each(nodes, function (node) {\n    if (!isNodeDepth(node) && !node.outEdges.length) {\n      node.setLayout({\n        depth: maxDepth\n      }, true);\n    }\n  });\n}\n/**\r\n * Scale node x-position to the width\r\n *\r\n * @param nodes  node of sankey view\r\n * @param kx   multiple used to scale nodes\r\n */\n\n\nfunction scaleNodeBreadths(nodes, kx, orient) {\n  zrUtil.each(nodes, function (node) {\n    var nodeDepth = node.getLayout().depth * kx;\n    orient === 'vertical' ? node.setLayout({\n      y: nodeDepth\n    }, true) : node.setLayout({\n      x: nodeDepth\n    }, true);\n  });\n}\n/**\r\n * Using Gauss-Seidel iterations method to compute the node depth(y-position)\r\n *\r\n * @param nodes  node of sankey view\r\n * @param edges  edge of sankey view\r\n * @param height  the whole height of the area to draw the view\r\n * @param nodeGap  the vertical distance between two nodes\r\n *     in the same column.\r\n * @param iterations  the number of iterations for the algorithm\r\n */\n\n\nfunction computeNodeDepths(nodes, edges, height, width, nodeGap, iterations, orient) {\n  var nodesByBreadth = prepareNodesByBreadth(nodes, orient);\n  initializeNodeDepth(nodesByBreadth, edges, height, width, nodeGap, orient);\n  resolveCollisions(nodesByBreadth, nodeGap, height, width, orient);\n\n  for (var alpha = 1; iterations > 0; iterations--) {\n    // 0.99 is a experience parameter, ensure that each iterations of\n    // changes as small as possible.\n    alpha *= 0.99;\n    relaxRightToLeft(nodesByBreadth, alpha, orient);\n    resolveCollisions(nodesByBreadth, nodeGap, height, width, orient);\n    relaxLeftToRight(nodesByBreadth, alpha, orient);\n    resolveCollisions(nodesByBreadth, nodeGap, height, width, orient);\n  }\n}\n\nfunction prepareNodesByBreadth(nodes, orient) {\n  var nodesByBreadth = [];\n  var keyAttr = orient === 'vertical' ? 'y' : 'x';\n  var groupResult = groupData(nodes, function (node) {\n    return node.getLayout()[keyAttr];\n  });\n  groupResult.keys.sort(function (a, b) {\n    return a - b;\n  });\n  zrUtil.each(groupResult.keys, function (key) {\n    nodesByBreadth.push(groupResult.buckets.get(key));\n  });\n  return nodesByBreadth;\n}\n/**\r\n * Compute the original y-position for each node\r\n */\n\n\nfunction initializeNodeDepth(nodesByBreadth, edges, height, width, nodeGap, orient) {\n  var minKy = Infinity;\n  zrUtil.each(nodesByBreadth, function (nodes) {\n    var n = nodes.length;\n    var sum = 0;\n    zrUtil.each(nodes, function (node) {\n      sum += node.getLayout().value;\n    });\n    var ky = orient === 'vertical' ? (width - (n - 1) * nodeGap) / sum : (height - (n - 1) * nodeGap) / sum;\n\n    if (ky < minKy) {\n      minKy = ky;\n    }\n  });\n  zrUtil.each(nodesByBreadth, function (nodes) {\n    zrUtil.each(nodes, function (node, i) {\n      var nodeDy = node.getLayout().value * minKy;\n\n      if (orient === 'vertical') {\n        node.setLayout({\n          x: i\n        }, true);\n        node.setLayout({\n          dx: nodeDy\n        }, true);\n      } else {\n        node.setLayout({\n          y: i\n        }, true);\n        node.setLayout({\n          dy: nodeDy\n        }, true);\n      }\n    });\n  });\n  zrUtil.each(edges, function (edge) {\n    var edgeDy = +edge.getValue() * minKy;\n    edge.setLayout({\n      dy: edgeDy\n    }, true);\n  });\n}\n/**\r\n * Resolve the collision of initialized depth (y-position)\r\n */\n\n\nfunction resolveCollisions(nodesByBreadth, nodeGap, height, width, orient) {\n  var keyAttr = orient === 'vertical' ? 'x' : 'y';\n  zrUtil.each(nodesByBreadth, function (nodes) {\n    nodes.sort(function (a, b) {\n      return a.getLayout()[keyAttr] - b.getLayout()[keyAttr];\n    });\n    var nodeX;\n    var node;\n    var dy;\n    var y0 = 0;\n    var n = nodes.length;\n    var nodeDyAttr = orient === 'vertical' ? 'dx' : 'dy';\n\n    for (var i = 0; i < n; i++) {\n      node = nodes[i];\n      dy = y0 - node.getLayout()[keyAttr];\n\n      if (dy > 0) {\n        nodeX = node.getLayout()[keyAttr] + dy;\n        orient === 'vertical' ? node.setLayout({\n          x: nodeX\n        }, true) : node.setLayout({\n          y: nodeX\n        }, true);\n      }\n\n      y0 = node.getLayout()[keyAttr] + node.getLayout()[nodeDyAttr] + nodeGap;\n    }\n\n    var viewWidth = orient === 'vertical' ? width : height; // If the bottommost node goes outside the bounds, push it back up\n\n    dy = y0 - nodeGap - viewWidth;\n\n    if (dy > 0) {\n      nodeX = node.getLayout()[keyAttr] - dy;\n      orient === 'vertical' ? node.setLayout({\n        x: nodeX\n      }, true) : node.setLayout({\n        y: nodeX\n      }, true);\n      y0 = nodeX;\n\n      for (var i = n - 2; i >= 0; --i) {\n        node = nodes[i];\n        dy = node.getLayout()[keyAttr] + node.getLayout()[nodeDyAttr] + nodeGap - y0;\n\n        if (dy > 0) {\n          nodeX = node.getLayout()[keyAttr] - dy;\n          orient === 'vertical' ? node.setLayout({\n            x: nodeX\n          }, true) : node.setLayout({\n            y: nodeX\n          }, true);\n        }\n\n        y0 = node.getLayout()[keyAttr];\n      }\n    }\n  });\n}\n/**\r\n * Change the y-position of the nodes, except most the right side nodes\r\n * @param nodesByBreadth\r\n * @param alpha  parameter used to adjust the nodes y-position\r\n */\n\n\nfunction relaxRightToLeft(nodesByBreadth, alpha, orient) {\n  zrUtil.each(nodesByBreadth.slice().reverse(), function (nodes) {\n    zrUtil.each(nodes, function (node) {\n      if (node.outEdges.length) {\n        var y = sum(node.outEdges, weightedTarget, orient) / sum(node.outEdges, getEdgeValue);\n\n        if (isNaN(y)) {\n          var len = node.outEdges.length;\n          y = len ? sum(node.outEdges, centerTarget, orient) / len : 0;\n        }\n\n        if (orient === 'vertical') {\n          var nodeX = node.getLayout().x + (y - center(node, orient)) * alpha;\n          node.setLayout({\n            x: nodeX\n          }, true);\n        } else {\n          var nodeY = node.getLayout().y + (y - center(node, orient)) * alpha;\n          node.setLayout({\n            y: nodeY\n          }, true);\n        }\n      }\n    });\n  });\n}\n\nfunction weightedTarget(edge, orient) {\n  return center(edge.node2, orient) * edge.getValue();\n}\n\nfunction centerTarget(edge, orient) {\n  return center(edge.node2, orient);\n}\n\nfunction weightedSource(edge, orient) {\n  return center(edge.node1, orient) * edge.getValue();\n}\n\nfunction centerSource(edge, orient) {\n  return center(edge.node1, orient);\n}\n\nfunction center(node, orient) {\n  return orient === 'vertical' ? node.getLayout().x + node.getLayout().dx / 2 : node.getLayout().y + node.getLayout().dy / 2;\n}\n\nfunction getEdgeValue(edge) {\n  return edge.getValue();\n}\n\nfunction sum(array, cb, orient) {\n  var sum = 0;\n  var len = array.length;\n  var i = -1;\n\n  while (++i < len) {\n    var value = +cb(array[i], orient);\n\n    if (!isNaN(value)) {\n      sum += value;\n    }\n  }\n\n  return sum;\n}\n/**\r\n * Change the y-position of the nodes, except most the left side nodes\r\n */\n\n\nfunction relaxLeftToRight(nodesByBreadth, alpha, orient) {\n  zrUtil.each(nodesByBreadth, function (nodes) {\n    zrUtil.each(nodes, function (node) {\n      if (node.inEdges.length) {\n        var y = sum(node.inEdges, weightedSource, orient) / sum(node.inEdges, getEdgeValue);\n\n        if (isNaN(y)) {\n          var len = node.inEdges.length;\n          y = len ? sum(node.inEdges, centerSource, orient) / len : 0;\n        }\n\n        if (orient === 'vertical') {\n          var nodeX = node.getLayout().x + (y - center(node, orient)) * alpha;\n          node.setLayout({\n            x: nodeX\n          }, true);\n        } else {\n          var nodeY = node.getLayout().y + (y - center(node, orient)) * alpha;\n          node.setLayout({\n            y: nodeY\n          }, true);\n        }\n      }\n    });\n  });\n}\n/**\r\n * Compute the depth(y-position) of each edge\r\n */\n\n\nfunction computeEdgeDepths(nodes, orient) {\n  var keyAttr = orient === 'vertical' ? 'x' : 'y';\n  zrUtil.each(nodes, function (node) {\n    node.outEdges.sort(function (a, b) {\n      return a.node2.getLayout()[keyAttr] - b.node2.getLayout()[keyAttr];\n    });\n    node.inEdges.sort(function (a, b) {\n      return a.node1.getLayout()[keyAttr] - b.node1.getLayout()[keyAttr];\n    });\n  });\n  zrUtil.each(nodes, function (node) {\n    var sy = 0;\n    var ty = 0;\n    zrUtil.each(node.outEdges, function (edge) {\n      edge.setLayout({\n        sy: sy\n      }, true);\n      sy += edge.getLayout().dy;\n    });\n    zrUtil.each(node.inEdges, function (edge) {\n      edge.setLayout({\n        ty: ty\n      }, true);\n      ty += edge.getLayout().dy;\n    });\n  });\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport * as zrUtil from 'zrender/lib/core/util.js';\nimport VisualMapping from '../../visual/VisualMapping.js';\nexport default function sankeyVisual(ecModel) {\n  ecModel.eachSeriesByType('sankey', function (seriesModel) {\n    var graph = seriesModel.getGraph();\n    var nodes = graph.nodes;\n    var edges = graph.edges;\n\n    if (nodes.length) {\n      var minValue_1 = Infinity;\n      var maxValue_1 = -Infinity;\n      zrUtil.each(nodes, function (node) {\n        var nodeValue = node.getLayout().value;\n\n        if (nodeValue < minValue_1) {\n          minValue_1 = nodeValue;\n        }\n\n        if (nodeValue > maxValue_1) {\n          maxValue_1 = nodeValue;\n        }\n      });\n      zrUtil.each(nodes, function (node) {\n        var mapping = new VisualMapping({\n          type: 'color',\n          mappingMethod: 'linear',\n          dataExtent: [minValue_1, maxValue_1],\n          visual: seriesModel.get('color')\n        });\n        var mapValueToColor = mapping.mapValueToVisual(node.getLayout().value);\n        var customColor = node.getModel().get(['itemStyle', 'color']);\n\n        if (customColor != null) {\n          node.setVisual('color', customColor);\n          node.setVisual('style', {\n            fill: customColor\n          });\n        } else {\n          node.setVisual('color', mapValueToColor);\n          node.setVisual('style', {\n            fill: mapValueToColor\n          });\n        }\n      });\n    }\n\n    if (edges.length) {\n      zrUtil.each(edges, function (edge) {\n        var edgeStyle = edge.getModel().get('lineStyle');\n        edge.setVisual('style', edgeStyle);\n      });\n    }\n  });\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport createSeriesDataSimply from './createSeriesDataSimply.js';\nimport * as zrUtil from 'zrender/lib/core/util.js';\nimport { getDimensionTypeByAxis } from '../../data/helper/dimensionHelper.js';\nimport { makeSeriesEncodeForAxisCoordSys } from '../../data/helper/sourceHelper.js';\n\nvar WhiskerBoxCommonMixin =\n/** @class */\nfunction () {\n  function WhiskerBoxCommonMixin() {}\n  /**\r\n   * @override\r\n   */\n\n\n  WhiskerBoxCommonMixin.prototype.getInitialData = function (option, ecModel) {\n    // When both types of xAxis and yAxis are 'value', layout is\n    // needed to be specified by user. Otherwise, layout can be\n    // judged by which axis is category.\n    var ordinalMeta;\n    var xAxisModel = ecModel.getComponent('xAxis', this.get('xAxisIndex'));\n    var yAxisModel = ecModel.getComponent('yAxis', this.get('yAxisIndex'));\n    var xAxisType = xAxisModel.get('type');\n    var yAxisType = yAxisModel.get('type');\n    var addOrdinal; // FIXME\n    // Consider time axis.\n\n    if (xAxisType === 'category') {\n      option.layout = 'horizontal';\n      ordinalMeta = xAxisModel.getOrdinalMeta();\n      addOrdinal = true;\n    } else if (yAxisType === 'category') {\n      option.layout = 'vertical';\n      ordinalMeta = yAxisModel.getOrdinalMeta();\n      addOrdinal = true;\n    } else {\n      option.layout = option.layout || 'horizontal';\n    }\n\n    var coordDims = ['x', 'y'];\n    var baseAxisDimIndex = option.layout === 'horizontal' ? 0 : 1;\n    var baseAxisDim = this._baseAxisDim = coordDims[baseAxisDimIndex];\n    var otherAxisDim = coordDims[1 - baseAxisDimIndex];\n    var axisModels = [xAxisModel, yAxisModel];\n    var baseAxisType = axisModels[baseAxisDimIndex].get('type');\n    var otherAxisType = axisModels[1 - baseAxisDimIndex].get('type');\n    var data = option.data; // Clone a new data for next setOption({}) usage.\n    // Avoid modifying current data will affect further update.\n\n    if (data && addOrdinal) {\n      var newOptionData_1 = [];\n      zrUtil.each(data, function (item, index) {\n        var newItem;\n\n        if (zrUtil.isArray(item)) {\n          newItem = item.slice(); // Modify current using data.\n\n          item.unshift(index);\n        } else if (zrUtil.isArray(item.value)) {\n          newItem = zrUtil.extend({}, item);\n          newItem.value = newItem.value.slice(); // Modify current using data.\n\n          item.value.unshift(index);\n        } else {\n          newItem = item;\n        }\n\n        newOptionData_1.push(newItem);\n      });\n      option.data = newOptionData_1;\n    }\n\n    var defaultValueDimensions = this.defaultValueDimensions;\n    var coordDimensions = [{\n      name: baseAxisDim,\n      type: getDimensionTypeByAxis(baseAxisType),\n      ordinalMeta: ordinalMeta,\n      otherDims: {\n        tooltip: false,\n        itemName: 0\n      },\n      dimsDef: ['base']\n    }, {\n      name: otherAxisDim,\n      type: getDimensionTypeByAxis(otherAxisType),\n      dimsDef: defaultValueDimensions.slice()\n    }];\n    return createSeriesDataSimply(this, {\n      coordDimensions: coordDimensions,\n      dimensionsCount: defaultValueDimensions.length + 1,\n      encodeDefaulter: zrUtil.curry(makeSeriesEncodeForAxisCoordSys, coordDimensions, this)\n    });\n  };\n  /**\r\n   * If horizontal, base axis is x, otherwise y.\r\n   * @override\r\n   */\n\n\n  WhiskerBoxCommonMixin.prototype.getBaseAxis = function () {\n    var dim = this._baseAxisDim;\n    return this.ecModel.getComponent(dim + 'Axis', this.get(dim + 'AxisIndex')).axis;\n  };\n\n  return WhiskerBoxCommonMixin;\n}();\n\n;\nexport { WhiskerBoxCommonMixin };","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { __extends } from \"tslib\";\nimport SeriesModel from '../../model/Series.js';\nimport { WhiskerBoxCommonMixin } from '../helper/whiskerBoxCommon.js';\nimport { mixin } from 'zrender/lib/core/util.js';\n\nvar BoxplotSeriesModel =\n/** @class */\nfunction (_super) {\n  __extends(BoxplotSeriesModel, _super);\n\n  function BoxplotSeriesModel() {\n    var _this = _super !== null && _super.apply(this, arguments) || this;\n\n    _this.type = BoxplotSeriesModel.type; // TODO\n    // box width represents group size, so dimension should have 'size'.\n\n    /**\r\n     * @see <https://en.wikipedia.org/wiki/Box_plot>\r\n     * The meanings of 'min' and 'max' depend on user,\r\n     * and echarts do not need to know it.\r\n     * @readOnly\r\n     */\n\n    _this.defaultValueDimensions = [{\n      name: 'min',\n      defaultTooltip: true\n    }, {\n      name: 'Q1',\n      defaultTooltip: true\n    }, {\n      name: 'median',\n      defaultTooltip: true\n    }, {\n      name: 'Q3',\n      defaultTooltip: true\n    }, {\n      name: 'max',\n      defaultTooltip: true\n    }];\n    _this.visualDrawType = 'stroke';\n    return _this;\n  }\n\n  BoxplotSeriesModel.type = 'series.boxplot';\n  BoxplotSeriesModel.dependencies = ['xAxis', 'yAxis', 'grid'];\n  BoxplotSeriesModel.defaultOption = {\n    // zlevel: 0,\n    z: 2,\n    coordinateSystem: 'cartesian2d',\n    legendHoverLink: true,\n    layout: null,\n    boxWidth: [7, 50],\n    itemStyle: {\n      color: '#fff',\n      borderWidth: 1\n    },\n    emphasis: {\n      scale: true,\n      itemStyle: {\n        borderWidth: 2,\n        shadowBlur: 5,\n        shadowOffsetX: 1,\n        shadowOffsetY: 1,\n        shadowColor: 'rgba(0,0,0,0.2)'\n      }\n    },\n    animationDuration: 800\n  };\n  return BoxplotSeriesModel;\n}(SeriesModel);\n\nmixin(BoxplotSeriesModel, WhiskerBoxCommonMixin, true);\nexport default BoxplotSeriesModel;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { __extends } from \"tslib\";\nimport * as zrUtil from 'zrender/lib/core/util.js';\nimport ChartView from '../../view/Chart.js';\nimport * as graphic from '../../util/graphic.js';\nimport { setStatesStylesFromModel, toggleHoverEmphasis } from '../../util/states.js';\nimport Path from 'zrender/lib/graphic/Path.js';\nimport { saveOldStyle } from '../../animation/basicTransition.js';\n\nvar BoxplotView =\n/** @class */\nfunction (_super) {\n  __extends(BoxplotView, _super);\n\n  function BoxplotView() {\n    var _this = _super !== null && _super.apply(this, arguments) || this;\n\n    _this.type = BoxplotView.type;\n    return _this;\n  }\n\n  BoxplotView.prototype.render = function (seriesModel, ecModel, api) {\n    var data = seriesModel.getData();\n    var group = this.group;\n    var oldData = this._data; // There is no old data only when first rendering or switching from\n    // stream mode to normal mode, where previous elements should be removed.\n\n    if (!this._data) {\n      group.removeAll();\n    }\n\n    var constDim = seriesModel.get('layout') === 'horizontal' ? 1 : 0;\n    data.diff(oldData).add(function (newIdx) {\n      if (data.hasValue(newIdx)) {\n        var itemLayout = data.getItemLayout(newIdx);\n        var symbolEl = createNormalBox(itemLayout, data, newIdx, constDim, true);\n        data.setItemGraphicEl(newIdx, symbolEl);\n        group.add(symbolEl);\n      }\n    }).update(function (newIdx, oldIdx) {\n      var symbolEl = oldData.getItemGraphicEl(oldIdx); // Empty data\n\n      if (!data.hasValue(newIdx)) {\n        group.remove(symbolEl);\n        return;\n      }\n\n      var itemLayout = data.getItemLayout(newIdx);\n\n      if (!symbolEl) {\n        symbolEl = createNormalBox(itemLayout, data, newIdx, constDim);\n      } else {\n        saveOldStyle(symbolEl);\n        updateNormalBoxData(itemLayout, symbolEl, data, newIdx);\n      }\n\n      group.add(symbolEl);\n      data.setItemGraphicEl(newIdx, symbolEl);\n    }).remove(function (oldIdx) {\n      var el = oldData.getItemGraphicEl(oldIdx);\n      el && group.remove(el);\n    }).execute();\n    this._data = data;\n  };\n\n  BoxplotView.prototype.remove = function (ecModel) {\n    var group = this.group;\n    var data = this._data;\n    this._data = null;\n    data && data.eachItemGraphicEl(function (el) {\n      el && group.remove(el);\n    });\n  };\n\n  BoxplotView.type = 'boxplot';\n  return BoxplotView;\n}(ChartView);\n\nvar BoxPathShape =\n/** @class */\nfunction () {\n  function BoxPathShape() {}\n\n  return BoxPathShape;\n}();\n\nvar BoxPath =\n/** @class */\nfunction (_super) {\n  __extends(BoxPath, _super);\n\n  function BoxPath(opts) {\n    var _this = _super.call(this, opts) || this;\n\n    _this.type = 'boxplotBoxPath';\n    return _this;\n  }\n\n  BoxPath.prototype.getDefaultShape = function () {\n    return new BoxPathShape();\n  };\n\n  BoxPath.prototype.buildPath = function (ctx, shape) {\n    var ends = shape.points;\n    var i = 0;\n    ctx.moveTo(ends[i][0], ends[i][1]);\n    i++;\n\n    for (; i < 4; i++) {\n      ctx.lineTo(ends[i][0], ends[i][1]);\n    }\n\n    ctx.closePath();\n\n    for (; i < ends.length; i++) {\n      ctx.moveTo(ends[i][0], ends[i][1]);\n      i++;\n      ctx.lineTo(ends[i][0], ends[i][1]);\n    }\n  };\n\n  return BoxPath;\n}(Path);\n\nfunction createNormalBox(itemLayout, data, dataIndex, constDim, isInit) {\n  var ends = itemLayout.ends;\n  var el = new BoxPath({\n    shape: {\n      points: isInit ? transInit(ends, constDim, itemLayout) : ends\n    }\n  });\n  updateNormalBoxData(itemLayout, el, data, dataIndex, isInit);\n  return el;\n}\n\nfunction updateNormalBoxData(itemLayout, el, data, dataIndex, isInit) {\n  var seriesModel = data.hostModel;\n  var updateMethod = graphic[isInit ? 'initProps' : 'updateProps'];\n  updateMethod(el, {\n    shape: {\n      points: itemLayout.ends\n    }\n  }, seriesModel, dataIndex);\n  el.useStyle(data.getItemVisual(dataIndex, 'style'));\n  el.style.strokeNoScale = true;\n  el.z2 = 100;\n  var itemModel = data.getItemModel(dataIndex);\n  var emphasisModel = itemModel.getModel('emphasis');\n  setStatesStylesFromModel(el, itemModel);\n  toggleHoverEmphasis(el, emphasisModel.get('focus'), emphasisModel.get('blurScope'), emphasisModel.get('disabled'));\n}\n\nfunction transInit(points, dim, itemLayout) {\n  return zrUtil.map(points, function (point) {\n    point = point.slice();\n    point[dim] = itemLayout.initBaseline;\n    return point;\n  });\n}\n\nexport default BoxplotView;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport * as zrUtil from 'zrender/lib/core/util.js';\nimport { parsePercent } from '../../util/number.js';\nvar each = zrUtil.each;\nexport default function boxplotLayout(ecModel) {\n  var groupResult = groupSeriesByAxis(ecModel);\n  each(groupResult, function (groupItem) {\n    var seriesModels = groupItem.seriesModels;\n\n    if (!seriesModels.length) {\n      return;\n    }\n\n    calculateBase(groupItem);\n    each(seriesModels, function (seriesModel, idx) {\n      layoutSingleSeries(seriesModel, groupItem.boxOffsetList[idx], groupItem.boxWidthList[idx]);\n    });\n  });\n}\n/**\r\n * Group series by axis.\r\n */\n\nfunction groupSeriesByAxis(ecModel) {\n  var result = [];\n  var axisList = [];\n  ecModel.eachSeriesByType('boxplot', function (seriesModel) {\n    var baseAxis = seriesModel.getBaseAxis();\n    var idx = zrUtil.indexOf(axisList, baseAxis);\n\n    if (idx < 0) {\n      idx = axisList.length;\n      axisList[idx] = baseAxis;\n      result[idx] = {\n        axis: baseAxis,\n        seriesModels: []\n      };\n    }\n\n    result[idx].seriesModels.push(seriesModel);\n  });\n  return result;\n}\n/**\r\n * Calculate offset and box width for each series.\r\n */\n\n\nfunction calculateBase(groupItem) {\n  var baseAxis = groupItem.axis;\n  var seriesModels = groupItem.seriesModels;\n  var seriesCount = seriesModels.length;\n  var boxWidthList = groupItem.boxWidthList = [];\n  var boxOffsetList = groupItem.boxOffsetList = [];\n  var boundList = [];\n  var bandWidth;\n\n  if (baseAxis.type === 'category') {\n    bandWidth = baseAxis.getBandWidth();\n  } else {\n    var maxDataCount_1 = 0;\n    each(seriesModels, function (seriesModel) {\n      maxDataCount_1 = Math.max(maxDataCount_1, seriesModel.getData().count());\n    });\n    var extent = baseAxis.getExtent();\n    bandWidth = Math.abs(extent[1] - extent[0]) / maxDataCount_1;\n  }\n\n  each(seriesModels, function (seriesModel) {\n    var boxWidthBound = seriesModel.get('boxWidth');\n\n    if (!zrUtil.isArray(boxWidthBound)) {\n      boxWidthBound = [boxWidthBound, boxWidthBound];\n    }\n\n    boundList.push([parsePercent(boxWidthBound[0], bandWidth) || 0, parsePercent(boxWidthBound[1], bandWidth) || 0]);\n  });\n  var availableWidth = bandWidth * 0.8 - 2;\n  var boxGap = availableWidth / seriesCount * 0.3;\n  var boxWidth = (availableWidth - boxGap * (seriesCount - 1)) / seriesCount;\n  var base = boxWidth / 2 - availableWidth / 2;\n  each(seriesModels, function (seriesModel, idx) {\n    boxOffsetList.push(base);\n    base += boxGap + boxWidth;\n    boxWidthList.push(Math.min(Math.max(boxWidth, boundList[idx][0]), boundList[idx][1]));\n  });\n}\n/**\r\n * Calculate points location for each series.\r\n */\n\n\nfunction layoutSingleSeries(seriesModel, offset, boxWidth) {\n  var coordSys = seriesModel.coordinateSystem;\n  var data = seriesModel.getData();\n  var halfWidth = boxWidth / 2;\n  var cDimIdx = seriesModel.get('layout') === 'horizontal' ? 0 : 1;\n  var vDimIdx = 1 - cDimIdx;\n  var coordDims = ['x', 'y'];\n  var cDim = data.mapDimension(coordDims[cDimIdx]);\n  var vDims = data.mapDimensionsAll(coordDims[vDimIdx]);\n\n  if (cDim == null || vDims.length < 5) {\n    return;\n  }\n\n  for (var dataIndex = 0; dataIndex < data.count(); dataIndex++) {\n    var axisDimVal = data.get(cDim, dataIndex);\n    var median = getPoint(axisDimVal, vDims[2], dataIndex);\n    var end1 = getPoint(axisDimVal, vDims[0], dataIndex);\n    var end2 = getPoint(axisDimVal, vDims[1], dataIndex);\n    var end4 = getPoint(axisDimVal, vDims[3], dataIndex);\n    var end5 = getPoint(axisDimVal, vDims[4], dataIndex);\n    var ends = [];\n    addBodyEnd(ends, end2, false);\n    addBodyEnd(ends, end4, true);\n    ends.push(end1, end2, end5, end4);\n    layEndLine(ends, end1);\n    layEndLine(ends, end5);\n    layEndLine(ends, median);\n    data.setItemLayout(dataIndex, {\n      initBaseline: median[vDimIdx],\n      ends: ends\n    });\n  }\n\n  function getPoint(axisDimVal, dim, dataIndex) {\n    var val = data.get(dim, dataIndex);\n    var p = [];\n    p[cDimIdx] = axisDimVal;\n    p[vDimIdx] = val;\n    var point;\n\n    if (isNaN(axisDimVal) || isNaN(val)) {\n      point = [NaN, NaN];\n    } else {\n      point = coordSys.dataToPoint(p);\n      point[cDimIdx] += offset;\n    }\n\n    return point;\n  }\n\n  function addBodyEnd(ends, point, start) {\n    var point1 = point.slice();\n    var point2 = point.slice();\n    point1[cDimIdx] += halfWidth;\n    point2[cDimIdx] -= halfWidth;\n    start ? ends.push(point1, point2) : ends.push(point2, point1);\n  }\n\n  function layEndLine(ends, endCenter) {\n    var from = endCenter.slice();\n    var to = endCenter.slice();\n    from[cDimIdx] -= halfWidth;\n    to[cDimIdx] += halfWidth;\n    ends.push(from, to);\n  }\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport prepareBoxplotData from './prepareBoxplotData.js';\nimport { throwError, makePrintable } from '../../util/log.js';\nimport { SOURCE_FORMAT_ARRAY_ROWS } from '../../util/types.js';\nexport var boxplotTransform = {\n  type: 'echarts:boxplot',\n  transform: function transform(params) {\n    var upstream = params.upstream;\n\n    if (upstream.sourceFormat !== SOURCE_FORMAT_ARRAY_ROWS) {\n      var errMsg = '';\n\n      if (process.env.NODE_ENV !== 'production') {\n        errMsg = makePrintable('source data is not applicable for this boxplot transform. Expect number[][].');\n      }\n\n      throwError(errMsg);\n    }\n\n    var result = prepareBoxplotData(upstream.getRawData(), params.config);\n    return [{\n      dimensions: ['ItemName', 'Low', 'Q1', 'Q2', 'Q3', 'High'],\n      data: result.boxData\n    }, {\n      data: result.outliers\n    }];\n  }\n};","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { quantile, asc } from '../../util/number.js';\nimport { isFunction, isString } from 'zrender/lib/core/util.js';\n/**\r\n * See:\r\n *  <https://en.wikipedia.org/wiki/Box_plot#cite_note-frigge_hoaglin_iglewicz-2>\r\n *  <http://stat.ethz.ch/R-manual/R-devel/library/grDevices/html/boxplot.stats.html>\r\n *\r\n * Helper method for preparing data.\r\n *\r\n * @param rawData like\r\n *        [\r\n *            [12,232,443], (raw data set for the first box)\r\n *            [3843,5545,1232], (raw data set for the second box)\r\n *            ...\r\n *        ]\r\n * @param opt.boundIQR=1.5 Data less than min bound is outlier.\r\n *      default 1.5, means Q1 - 1.5 * (Q3 - Q1).\r\n *      If 'none'/0 passed, min bound will not be used.\r\n */\n\nexport default function prepareBoxplotData(rawData, opt) {\n  opt = opt || {};\n  var boxData = [];\n  var outliers = [];\n  var boundIQR = opt.boundIQR;\n  var useExtreme = boundIQR === 'none' || boundIQR === 0;\n\n  for (var i = 0; i < rawData.length; i++) {\n    var ascList = asc(rawData[i].slice());\n    var Q1 = quantile(ascList, 0.25);\n    var Q2 = quantile(ascList, 0.5);\n    var Q3 = quantile(ascList, 0.75);\n    var min = ascList[0];\n    var max = ascList[ascList.length - 1];\n    var bound = (boundIQR == null ? 1.5 : boundIQR) * (Q3 - Q1);\n    var low = useExtreme ? min : Math.max(min, Q1 - bound);\n    var high = useExtreme ? max : Math.min(max, Q3 + bound);\n    var itemNameFormatter = opt.itemNameFormatter;\n    var itemName = isFunction(itemNameFormatter) ? itemNameFormatter({\n      value: i\n    }) : isString(itemNameFormatter) ? itemNameFormatter.replace('{value}', i + '') : i + '';\n    boxData.push([itemName, low, Q1, Q2, Q3, high]);\n\n    for (var j = 0; j < ascList.length; j++) {\n      var dataItem = ascList[j];\n\n      if (dataItem < low || dataItem > high) {\n        var outlier = [itemName, dataItem];\n        outliers.push(outlier);\n      }\n    }\n  }\n\n  return {\n    boxData: boxData,\n    outliers: outliers\n  };\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { __extends } from \"tslib\";\nimport * as zrUtil from 'zrender/lib/core/util.js';\nimport ChartView from '../../view/Chart.js';\nimport * as graphic from '../../util/graphic.js';\nimport { setStatesStylesFromModel } from '../../util/states.js';\nimport Path from 'zrender/lib/graphic/Path.js';\nimport { createClipPath } from '../helper/createClipPathFromCoordSys.js';\nimport { saveOldStyle } from '../../animation/basicTransition.js';\nvar SKIP_PROPS = ['color', 'borderColor'];\n\nvar CandlestickView =\n/** @class */\nfunction (_super) {\n  __extends(CandlestickView, _super);\n\n  function CandlestickView() {\n    var _this = _super !== null && _super.apply(this, arguments) || this;\n\n    _this.type = CandlestickView.type;\n    return _this;\n  }\n\n  CandlestickView.prototype.render = function (seriesModel, ecModel, api) {\n    // If there is clipPath created in large mode. Remove it.\n    this.group.removeClipPath(); // Clear previously rendered progressive elements.\n\n    this._progressiveEls = null;\n\n    this._updateDrawMode(seriesModel);\n\n    this._isLargeDraw ? this._renderLarge(seriesModel) : this._renderNormal(seriesModel);\n  };\n\n  CandlestickView.prototype.incrementalPrepareRender = function (seriesModel, ecModel, api) {\n    this._clear();\n\n    this._updateDrawMode(seriesModel);\n  };\n\n  CandlestickView.prototype.incrementalRender = function (params, seriesModel, ecModel, api) {\n    this._progressiveEls = [];\n    this._isLargeDraw ? this._incrementalRenderLarge(params, seriesModel) : this._incrementalRenderNormal(params, seriesModel);\n  };\n\n  CandlestickView.prototype.eachRendered = function (cb) {\n    graphic.traverseElements(this._progressiveEls || this.group, cb);\n  };\n\n  CandlestickView.prototype._updateDrawMode = function (seriesModel) {\n    var isLargeDraw = seriesModel.pipelineContext.large;\n\n    if (this._isLargeDraw == null || isLargeDraw !== this._isLargeDraw) {\n      this._isLargeDraw = isLargeDraw;\n\n      this._clear();\n    }\n  };\n\n  CandlestickView.prototype._renderNormal = function (seriesModel) {\n    var data = seriesModel.getData();\n    var oldData = this._data;\n    var group = this.group;\n    var isSimpleBox = data.getLayout('isSimpleBox');\n    var needsClip = seriesModel.get('clip', true);\n    var coord = seriesModel.coordinateSystem;\n    var clipArea = coord.getArea && coord.getArea(); // There is no old data only when first rendering or switching from\n    // stream mode to normal mode, where previous elements should be removed.\n\n    if (!this._data) {\n      group.removeAll();\n    }\n\n    data.diff(oldData).add(function (newIdx) {\n      if (data.hasValue(newIdx)) {\n        var itemLayout = data.getItemLayout(newIdx);\n\n        if (needsClip && isNormalBoxClipped(clipArea, itemLayout)) {\n          return;\n        }\n\n        var el = createNormalBox(itemLayout, newIdx, true);\n        graphic.initProps(el, {\n          shape: {\n            points: itemLayout.ends\n          }\n        }, seriesModel, newIdx);\n        setBoxCommon(el, data, newIdx, isSimpleBox);\n        group.add(el);\n        data.setItemGraphicEl(newIdx, el);\n      }\n    }).update(function (newIdx, oldIdx) {\n      var el = oldData.getItemGraphicEl(oldIdx); // Empty data\n\n      if (!data.hasValue(newIdx)) {\n        group.remove(el);\n        return;\n      }\n\n      var itemLayout = data.getItemLayout(newIdx);\n\n      if (needsClip && isNormalBoxClipped(clipArea, itemLayout)) {\n        group.remove(el);\n        return;\n      }\n\n      if (!el) {\n        el = createNormalBox(itemLayout, newIdx);\n      } else {\n        graphic.updateProps(el, {\n          shape: {\n            points: itemLayout.ends\n          }\n        }, seriesModel, newIdx);\n        saveOldStyle(el);\n      }\n\n      setBoxCommon(el, data, newIdx, isSimpleBox);\n      group.add(el);\n      data.setItemGraphicEl(newIdx, el);\n    }).remove(function (oldIdx) {\n      var el = oldData.getItemGraphicEl(oldIdx);\n      el && group.remove(el);\n    }).execute();\n    this._data = data;\n  };\n\n  CandlestickView.prototype._renderLarge = function (seriesModel) {\n    this._clear();\n\n    createLarge(seriesModel, this.group);\n    var clipPath = seriesModel.get('clip', true) ? createClipPath(seriesModel.coordinateSystem, false, seriesModel) : null;\n\n    if (clipPath) {\n      this.group.setClipPath(clipPath);\n    } else {\n      this.group.removeClipPath();\n    }\n  };\n\n  CandlestickView.prototype._incrementalRenderNormal = function (params, seriesModel) {\n    var data = seriesModel.getData();\n    var isSimpleBox = data.getLayout('isSimpleBox');\n    var dataIndex;\n\n    while ((dataIndex = params.next()) != null) {\n      var itemLayout = data.getItemLayout(dataIndex);\n      var el = createNormalBox(itemLayout, dataIndex);\n      setBoxCommon(el, data, dataIndex, isSimpleBox);\n      el.incremental = true;\n      this.group.add(el);\n\n      this._progressiveEls.push(el);\n    }\n  };\n\n  CandlestickView.prototype._incrementalRenderLarge = function (params, seriesModel) {\n    createLarge(seriesModel, this.group, this._progressiveEls, true);\n  };\n\n  CandlestickView.prototype.remove = function (ecModel) {\n    this._clear();\n  };\n\n  CandlestickView.prototype._clear = function () {\n    this.group.removeAll();\n    this._data = null;\n  };\n\n  CandlestickView.type = 'candlestick';\n  return CandlestickView;\n}(ChartView);\n\nvar NormalBoxPathShape =\n/** @class */\nfunction () {\n  function NormalBoxPathShape() {}\n\n  return NormalBoxPathShape;\n}();\n\nvar NormalBoxPath =\n/** @class */\nfunction (_super) {\n  __extends(NormalBoxPath, _super);\n\n  function NormalBoxPath(opts) {\n    var _this = _super.call(this, opts) || this;\n\n    _this.type = 'normalCandlestickBox';\n    return _this;\n  }\n\n  NormalBoxPath.prototype.getDefaultShape = function () {\n    return new NormalBoxPathShape();\n  };\n\n  NormalBoxPath.prototype.buildPath = function (ctx, shape) {\n    var ends = shape.points;\n\n    if (this.__simpleBox) {\n      ctx.moveTo(ends[4][0], ends[4][1]);\n      ctx.lineTo(ends[6][0], ends[6][1]);\n    } else {\n      ctx.moveTo(ends[0][0], ends[0][1]);\n      ctx.lineTo(ends[1][0], ends[1][1]);\n      ctx.lineTo(ends[2][0], ends[2][1]);\n      ctx.lineTo(ends[3][0], ends[3][1]);\n      ctx.closePath();\n      ctx.moveTo(ends[4][0], ends[4][1]);\n      ctx.lineTo(ends[5][0], ends[5][1]);\n      ctx.moveTo(ends[6][0], ends[6][1]);\n      ctx.lineTo(ends[7][0], ends[7][1]);\n    }\n  };\n\n  return NormalBoxPath;\n}(Path);\n\nfunction createNormalBox(itemLayout, dataIndex, isInit) {\n  var ends = itemLayout.ends;\n  return new NormalBoxPath({\n    shape: {\n      points: isInit ? transInit(ends, itemLayout) : ends\n    },\n    z2: 100\n  });\n}\n\nfunction isNormalBoxClipped(clipArea, itemLayout) {\n  var clipped = true;\n\n  for (var i = 0; i < itemLayout.ends.length; i++) {\n    // If any point are in the region.\n    if (clipArea.contain(itemLayout.ends[i][0], itemLayout.ends[i][1])) {\n      clipped = false;\n      break;\n    }\n  }\n\n  return clipped;\n}\n\nfunction setBoxCommon(el, data, dataIndex, isSimpleBox) {\n  var itemModel = data.getItemModel(dataIndex);\n  el.useStyle(data.getItemVisual(dataIndex, 'style'));\n  el.style.strokeNoScale = true;\n  el.__simpleBox = isSimpleBox;\n  setStatesStylesFromModel(el, itemModel);\n}\n\nfunction transInit(points, itemLayout) {\n  return zrUtil.map(points, function (point) {\n    point = point.slice();\n    point[1] = itemLayout.initBaseline;\n    return point;\n  });\n}\n\nvar LargeBoxPathShape =\n/** @class */\nfunction () {\n  function LargeBoxPathShape() {}\n\n  return LargeBoxPathShape;\n}();\n\nvar LargeBoxPath =\n/** @class */\nfunction (_super) {\n  __extends(LargeBoxPath, _super);\n\n  function LargeBoxPath(opts) {\n    var _this = _super.call(this, opts) || this;\n\n    _this.type = 'largeCandlestickBox';\n    return _this;\n  }\n\n  LargeBoxPath.prototype.getDefaultShape = function () {\n    return new LargeBoxPathShape();\n  };\n\n  LargeBoxPath.prototype.buildPath = function (ctx, shape) {\n    // Drawing lines is more efficient than drawing\n    // a whole line or drawing rects.\n    var points = shape.points;\n\n    for (var i = 0; i < points.length;) {\n      if (this.__sign === points[i++]) {\n        var x = points[i++];\n        ctx.moveTo(x, points[i++]);\n        ctx.lineTo(x, points[i++]);\n      } else {\n        i += 3;\n      }\n    }\n  };\n\n  return LargeBoxPath;\n}(Path);\n\nfunction createLarge(seriesModel, group, progressiveEls, incremental) {\n  var data = seriesModel.getData();\n  var largePoints = data.getLayout('largePoints');\n  var elP = new LargeBoxPath({\n    shape: {\n      points: largePoints\n    },\n    __sign: 1,\n    ignoreCoarsePointer: true\n  });\n  group.add(elP);\n  var elN = new LargeBoxPath({\n    shape: {\n      points: largePoints\n    },\n    __sign: -1,\n    ignoreCoarsePointer: true\n  });\n  group.add(elN);\n  var elDoji = new LargeBoxPath({\n    shape: {\n      points: largePoints\n    },\n    __sign: 0,\n    ignoreCoarsePointer: true\n  });\n  group.add(elDoji);\n  setLargeStyle(1, elP, seriesModel, data);\n  setLargeStyle(-1, elN, seriesModel, data);\n  setLargeStyle(0, elDoji, seriesModel, data);\n\n  if (incremental) {\n    elP.incremental = true;\n    elN.incremental = true;\n  }\n\n  if (progressiveEls) {\n    progressiveEls.push(elP, elN);\n  }\n}\n\nfunction setLargeStyle(sign, el, seriesModel, data) {\n  // TODO put in visual?\n  var borderColor = seriesModel.get(['itemStyle', sign > 0 ? 'borderColor' : 'borderColor0']) // Use color for border color by default.\n  || seriesModel.get(['itemStyle', sign > 0 ? 'color' : 'color0']);\n\n  if (sign === 0) {\n    borderColor = seriesModel.get(['itemStyle', 'borderColorDoji']);\n  } // Color must be excluded.\n  // Because symbol provide setColor individually to set fill and stroke\n\n\n  var itemStyle = seriesModel.getModel('itemStyle').getItemStyle(SKIP_PROPS);\n  el.useStyle(itemStyle);\n  el.style.fill = null;\n  el.style.stroke = borderColor;\n}\n\nexport default CandlestickView;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { __extends } from \"tslib\";\nimport SeriesModel from '../../model/Series.js';\nimport { WhiskerBoxCommonMixin } from '../helper/whiskerBoxCommon.js';\nimport { mixin } from 'zrender/lib/core/util.js';\n\nvar CandlestickSeriesModel =\n/** @class */\nfunction (_super) {\n  __extends(CandlestickSeriesModel, _super);\n\n  function CandlestickSeriesModel() {\n    var _this = _super !== null && _super.apply(this, arguments) || this;\n\n    _this.type = CandlestickSeriesModel.type;\n    _this.defaultValueDimensions = [{\n      name: 'open',\n      defaultTooltip: true\n    }, {\n      name: 'close',\n      defaultTooltip: true\n    }, {\n      name: 'lowest',\n      defaultTooltip: true\n    }, {\n      name: 'highest',\n      defaultTooltip: true\n    }];\n    return _this;\n  }\n  /**\r\n   * Get dimension for shadow in dataZoom\r\n   * @return dimension name\r\n   */\n\n\n  CandlestickSeriesModel.prototype.getShadowDim = function () {\n    return 'open';\n  };\n\n  CandlestickSeriesModel.prototype.brushSelector = function (dataIndex, data, selectors) {\n    var itemLayout = data.getItemLayout(dataIndex);\n    return itemLayout && selectors.rect(itemLayout.brushRect);\n  };\n\n  CandlestickSeriesModel.type = 'series.candlestick';\n  CandlestickSeriesModel.dependencies = ['xAxis', 'yAxis', 'grid'];\n  CandlestickSeriesModel.defaultOption = {\n    // zlevel: 0,\n    z: 2,\n    coordinateSystem: 'cartesian2d',\n    legendHoverLink: true,\n    // xAxisIndex: 0,\n    // yAxisIndex: 0,\n    layout: null,\n    clip: true,\n    itemStyle: {\n      color: '#eb5454',\n      color0: '#47b262',\n      borderColor: '#eb5454',\n      borderColor0: '#47b262',\n      borderColorDoji: null,\n      // borderColor: '#d24040',\n      // borderColor0: '#398f4f',\n      borderWidth: 1\n    },\n    emphasis: {\n      scale: true,\n      itemStyle: {\n        borderWidth: 2\n      }\n    },\n    barMaxWidth: null,\n    barMinWidth: null,\n    barWidth: null,\n    large: true,\n    largeThreshold: 600,\n    progressive: 3e3,\n    progressiveThreshold: 1e4,\n    progressiveChunkMode: 'mod',\n    animationEasing: 'linear',\n    animationDuration: 300\n  };\n  return CandlestickSeriesModel;\n}(SeriesModel);\n\nmixin(CandlestickSeriesModel, WhiskerBoxCommonMixin, true);\nexport default CandlestickSeriesModel;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport * as zrUtil from 'zrender/lib/core/util.js';\nexport default function candlestickPreprocessor(option) {\n  if (!option || !zrUtil.isArray(option.series)) {\n    return;\n  } // Translate 'k' to 'candlestick'.\n\n\n  zrUtil.each(option.series, function (seriesItem) {\n    if (zrUtil.isObject(seriesItem) && seriesItem.type === 'k') {\n      seriesItem.type = 'candlestick';\n    }\n  });\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport createRenderPlanner from '../helper/createRenderPlanner.js';\nimport { extend } from 'zrender/lib/core/util.js';\nvar positiveBorderColorQuery = ['itemStyle', 'borderColor'];\nvar negativeBorderColorQuery = ['itemStyle', 'borderColor0'];\nvar dojiBorderColorQuery = ['itemStyle', 'borderColorDoji'];\nvar positiveColorQuery = ['itemStyle', 'color'];\nvar negativeColorQuery = ['itemStyle', 'color0'];\nvar candlestickVisual = {\n  seriesType: 'candlestick',\n  plan: createRenderPlanner(),\n  // For legend.\n  performRawSeries: true,\n  reset: function (seriesModel, ecModel) {\n    function getColor(sign, model) {\n      return model.get(sign > 0 ? positiveColorQuery : negativeColorQuery);\n    }\n\n    function getBorderColor(sign, model) {\n      return model.get(sign === 0 ? dojiBorderColorQuery : sign > 0 ? positiveBorderColorQuery : negativeBorderColorQuery);\n    } // Only visible series has each data be visual encoded\n\n\n    if (ecModel.isSeriesFiltered(seriesModel)) {\n      return;\n    }\n\n    var isLargeRender = seriesModel.pipelineContext.large;\n    return !isLargeRender && {\n      progress: function (params, data) {\n        var dataIndex;\n\n        while ((dataIndex = params.next()) != null) {\n          var itemModel = data.getItemModel(dataIndex);\n          var sign = data.getItemLayout(dataIndex).sign;\n          var style = itemModel.getItemStyle();\n          style.fill = getColor(sign, itemModel);\n          style.stroke = getBorderColor(sign, itemModel) || style.fill;\n          var existsStyle = data.ensureUniqueItemVisual(dataIndex, 'style');\n          extend(existsStyle, style);\n        }\n      }\n    };\n  }\n};\nexport default candlestickVisual;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { subPixelOptimize } from '../../util/graphic.js';\nimport createRenderPlanner from '../helper/createRenderPlanner.js';\nimport { parsePercent } from '../../util/number.js';\nimport { map, retrieve2 } from 'zrender/lib/core/util.js';\nimport { createFloat32Array } from '../../util/vendor.js';\nvar candlestickLayout = {\n  seriesType: 'candlestick',\n  plan: createRenderPlanner(),\n  reset: function (seriesModel) {\n    var coordSys = seriesModel.coordinateSystem;\n    var data = seriesModel.getData();\n    var candleWidth = calculateCandleWidth(seriesModel, data);\n    var cDimIdx = 0;\n    var vDimIdx = 1;\n    var coordDims = ['x', 'y'];\n    var cDimI = data.getDimensionIndex(data.mapDimension(coordDims[cDimIdx]));\n    var vDimsI = map(data.mapDimensionsAll(coordDims[vDimIdx]), data.getDimensionIndex, data);\n    var openDimI = vDimsI[0];\n    var closeDimI = vDimsI[1];\n    var lowestDimI = vDimsI[2];\n    var highestDimI = vDimsI[3];\n    data.setLayout({\n      candleWidth: candleWidth,\n      // The value is experimented visually.\n      isSimpleBox: candleWidth <= 1.3\n    });\n\n    if (cDimI < 0 || vDimsI.length < 4) {\n      return;\n    }\n\n    return {\n      progress: seriesModel.pipelineContext.large ? largeProgress : normalProgress\n    };\n\n    function normalProgress(params, data) {\n      var dataIndex;\n      var store = data.getStore();\n\n      while ((dataIndex = params.next()) != null) {\n        var axisDimVal = store.get(cDimI, dataIndex);\n        var openVal = store.get(openDimI, dataIndex);\n        var closeVal = store.get(closeDimI, dataIndex);\n        var lowestVal = store.get(lowestDimI, dataIndex);\n        var highestVal = store.get(highestDimI, dataIndex);\n        var ocLow = Math.min(openVal, closeVal);\n        var ocHigh = Math.max(openVal, closeVal);\n        var ocLowPoint = getPoint(ocLow, axisDimVal);\n        var ocHighPoint = getPoint(ocHigh, axisDimVal);\n        var lowestPoint = getPoint(lowestVal, axisDimVal);\n        var highestPoint = getPoint(highestVal, axisDimVal);\n        var ends = [];\n        addBodyEnd(ends, ocHighPoint, 0);\n        addBodyEnd(ends, ocLowPoint, 1);\n        ends.push(subPixelOptimizePoint(highestPoint), subPixelOptimizePoint(ocHighPoint), subPixelOptimizePoint(lowestPoint), subPixelOptimizePoint(ocLowPoint));\n        var itemModel = data.getItemModel(dataIndex);\n        var hasDojiColor = !!itemModel.get(['itemStyle', 'borderColorDoji']);\n        data.setItemLayout(dataIndex, {\n          sign: getSign(store, dataIndex, openVal, closeVal, closeDimI, hasDojiColor),\n          initBaseline: openVal > closeVal ? ocHighPoint[vDimIdx] : ocLowPoint[vDimIdx],\n          ends: ends,\n          brushRect: makeBrushRect(lowestVal, highestVal, axisDimVal)\n        });\n      }\n\n      function getPoint(val, axisDimVal) {\n        var p = [];\n        p[cDimIdx] = axisDimVal;\n        p[vDimIdx] = val;\n        return isNaN(axisDimVal) || isNaN(val) ? [NaN, NaN] : coordSys.dataToPoint(p);\n      }\n\n      function addBodyEnd(ends, point, start) {\n        var point1 = point.slice();\n        var point2 = point.slice();\n        point1[cDimIdx] = subPixelOptimize(point1[cDimIdx] + candleWidth / 2, 1, false);\n        point2[cDimIdx] = subPixelOptimize(point2[cDimIdx] - candleWidth / 2, 1, true);\n        start ? ends.push(point1, point2) : ends.push(point2, point1);\n      }\n\n      function makeBrushRect(lowestVal, highestVal, axisDimVal) {\n        var pmin = getPoint(lowestVal, axisDimVal);\n        var pmax = getPoint(highestVal, axisDimVal);\n        pmin[cDimIdx] -= candleWidth / 2;\n        pmax[cDimIdx] -= candleWidth / 2;\n        return {\n          x: pmin[0],\n          y: pmin[1],\n          width: vDimIdx ? candleWidth : pmax[0] - pmin[0],\n          height: vDimIdx ? pmax[1] - pmin[1] : candleWidth\n        };\n      }\n\n      function subPixelOptimizePoint(point) {\n        point[cDimIdx] = subPixelOptimize(point[cDimIdx], 1);\n        return point;\n      }\n    }\n\n    function largeProgress(params, data) {\n      // Structure: [sign, x, yhigh, ylow, sign, x, yhigh, ylow, ...]\n      var points = createFloat32Array(params.count * 4);\n      var offset = 0;\n      var point;\n      var tmpIn = [];\n      var tmpOut = [];\n      var dataIndex;\n      var store = data.getStore();\n      var hasDojiColor = !!seriesModel.get(['itemStyle', 'borderColorDoji']);\n\n      while ((dataIndex = params.next()) != null) {\n        var axisDimVal = store.get(cDimI, dataIndex);\n        var openVal = store.get(openDimI, dataIndex);\n        var closeVal = store.get(closeDimI, dataIndex);\n        var lowestVal = store.get(lowestDimI, dataIndex);\n        var highestVal = store.get(highestDimI, dataIndex);\n\n        if (isNaN(axisDimVal) || isNaN(lowestVal) || isNaN(highestVal)) {\n          points[offset++] = NaN;\n          offset += 3;\n          continue;\n        }\n\n        points[offset++] = getSign(store, dataIndex, openVal, closeVal, closeDimI, hasDojiColor);\n        tmpIn[cDimIdx] = axisDimVal;\n        tmpIn[vDimIdx] = lowestVal;\n        point = coordSys.dataToPoint(tmpIn, null, tmpOut);\n        points[offset++] = point ? point[0] : NaN;\n        points[offset++] = point ? point[1] : NaN;\n        tmpIn[vDimIdx] = highestVal;\n        point = coordSys.dataToPoint(tmpIn, null, tmpOut);\n        points[offset++] = point ? point[1] : NaN;\n      }\n\n      data.setLayout('largePoints', points);\n    }\n  }\n};\n/**\r\n * Get the sign of a single data.\r\n *\r\n * @returns 0 for doji with hasDojiColor: true,\r\n *          1 for positive,\r\n *          -1 for negative.\r\n */\n\nfunction getSign(store, dataIndex, openVal, closeVal, closeDimI, hasDojiColor) {\n  var sign;\n\n  if (openVal > closeVal) {\n    sign = -1;\n  } else if (openVal < closeVal) {\n    sign = 1;\n  } else {\n    sign = hasDojiColor // When doji color is set, use it instead of color/color0.\n    ? 0 : dataIndex > 0 // If close === open, compare with close of last record\n    ? store.get(closeDimI, dataIndex - 1) <= closeVal ? 1 : -1 : // No record of previous, set to be positive\n    1;\n  }\n\n  return sign;\n}\n\nfunction calculateCandleWidth(seriesModel, data) {\n  var baseAxis = seriesModel.getBaseAxis();\n  var extent;\n  var bandWidth = baseAxis.type === 'category' ? baseAxis.getBandWidth() : (extent = baseAxis.getExtent(), Math.abs(extent[1] - extent[0]) / data.count());\n  var barMaxWidth = parsePercent(retrieve2(seriesModel.get('barMaxWidth'), bandWidth), bandWidth);\n  var barMinWidth = parsePercent(retrieve2(seriesModel.get('barMinWidth'), 1), bandWidth);\n  var barWidth = seriesModel.get('barWidth');\n  return barWidth != null ? parsePercent(barWidth, bandWidth) // Put max outer to ensure bar visible in spite of overlap.\n  : Math.max(Math.min(bandWidth / 2, barMaxWidth), barMinWidth);\n}\n\nexport default candlestickLayout;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { __extends } from \"tslib\";\nimport { createSymbol, normalizeSymbolOffset, normalizeSymbolSize } from '../../util/symbol.js';\nimport { Group } from '../../util/graphic.js';\nimport { enterEmphasis, leaveEmphasis, toggleHoverEmphasis } from '../../util/states.js';\nimport SymbolClz from './Symbol.js';\n\nfunction updateRipplePath(rippleGroup, effectCfg) {\n  var color = effectCfg.rippleEffectColor || effectCfg.color;\n  rippleGroup.eachChild(function (ripplePath) {\n    ripplePath.attr({\n      z: effectCfg.z,\n      zlevel: effectCfg.zlevel,\n      style: {\n        stroke: effectCfg.brushType === 'stroke' ? color : null,\n        fill: effectCfg.brushType === 'fill' ? color : null\n      }\n    });\n  });\n}\n\nvar EffectSymbol =\n/** @class */\nfunction (_super) {\n  __extends(EffectSymbol, _super);\n\n  function EffectSymbol(data, idx) {\n    var _this = _super.call(this) || this;\n\n    var symbol = new SymbolClz(data, idx);\n    var rippleGroup = new Group();\n\n    _this.add(symbol);\n\n    _this.add(rippleGroup);\n\n    _this.updateData(data, idx);\n\n    return _this;\n  }\n\n  EffectSymbol.prototype.stopEffectAnimation = function () {\n    this.childAt(1).removeAll();\n  };\n\n  EffectSymbol.prototype.startEffectAnimation = function (effectCfg) {\n    var symbolType = effectCfg.symbolType;\n    var color = effectCfg.color;\n    var rippleNumber = effectCfg.rippleNumber;\n    var rippleGroup = this.childAt(1);\n\n    for (var i = 0; i < rippleNumber; i++) {\n      // If width/height are set too small (e.g., set to 1) on ios10\n      // and macOS Sierra, a circle stroke become a rect, no matter what\n      // the scale is set. So we set width/height as 2. See #4136.\n      var ripplePath = createSymbol(symbolType, -1, -1, 2, 2, color);\n      ripplePath.attr({\n        style: {\n          strokeNoScale: true\n        },\n        z2: 99,\n        silent: true,\n        scaleX: 0.5,\n        scaleY: 0.5\n      });\n      var delay = -i / rippleNumber * effectCfg.period + effectCfg.effectOffset;\n      ripplePath.animate('', true).when(effectCfg.period, {\n        scaleX: effectCfg.rippleScale / 2,\n        scaleY: effectCfg.rippleScale / 2\n      }).delay(delay).start();\n      ripplePath.animateStyle(true).when(effectCfg.period, {\n        opacity: 0\n      }).delay(delay).start();\n      rippleGroup.add(ripplePath);\n    }\n\n    updateRipplePath(rippleGroup, effectCfg);\n  };\n  /**\r\n   * Update effect symbol\r\n   */\n\n\n  EffectSymbol.prototype.updateEffectAnimation = function (effectCfg) {\n    var oldEffectCfg = this._effectCfg;\n    var rippleGroup = this.childAt(1); // Must reinitialize effect if following configuration changed\n\n    var DIFFICULT_PROPS = ['symbolType', 'period', 'rippleScale', 'rippleNumber'];\n\n    for (var i = 0; i < DIFFICULT_PROPS.length; i++) {\n      var propName = DIFFICULT_PROPS[i];\n\n      if (oldEffectCfg[propName] !== effectCfg[propName]) {\n        this.stopEffectAnimation();\n        this.startEffectAnimation(effectCfg);\n        return;\n      }\n    }\n\n    updateRipplePath(rippleGroup, effectCfg);\n  };\n  /**\r\n   * Highlight symbol\r\n   */\n\n\n  EffectSymbol.prototype.highlight = function () {\n    enterEmphasis(this);\n  };\n  /**\r\n   * Downplay symbol\r\n   */\n\n\n  EffectSymbol.prototype.downplay = function () {\n    leaveEmphasis(this);\n  };\n\n  EffectSymbol.prototype.getSymbolType = function () {\n    var symbol = this.childAt(0);\n    return symbol && symbol.getSymbolType();\n  };\n  /**\r\n   * Update symbol properties\r\n   */\n\n\n  EffectSymbol.prototype.updateData = function (data, idx) {\n    var _this = this;\n\n    var seriesModel = data.hostModel;\n    this.childAt(0).updateData(data, idx);\n    var rippleGroup = this.childAt(1);\n    var itemModel = data.getItemModel(idx);\n    var symbolType = data.getItemVisual(idx, 'symbol');\n    var symbolSize = normalizeSymbolSize(data.getItemVisual(idx, 'symbolSize'));\n    var symbolStyle = data.getItemVisual(idx, 'style');\n    var color = symbolStyle && symbolStyle.fill;\n    var emphasisModel = itemModel.getModel('emphasis');\n    rippleGroup.setScale(symbolSize);\n    rippleGroup.traverse(function (ripplePath) {\n      ripplePath.setStyle('fill', color);\n    });\n    var symbolOffset = normalizeSymbolOffset(data.getItemVisual(idx, 'symbolOffset'), symbolSize);\n\n    if (symbolOffset) {\n      rippleGroup.x = symbolOffset[0];\n      rippleGroup.y = symbolOffset[1];\n    }\n\n    var symbolRotate = data.getItemVisual(idx, 'symbolRotate');\n    rippleGroup.rotation = (symbolRotate || 0) * Math.PI / 180 || 0;\n    var effectCfg = {};\n    effectCfg.showEffectOn = seriesModel.get('showEffectOn');\n    effectCfg.rippleScale = itemModel.get(['rippleEffect', 'scale']);\n    effectCfg.brushType = itemModel.get(['rippleEffect', 'brushType']);\n    effectCfg.period = itemModel.get(['rippleEffect', 'period']) * 1000;\n    effectCfg.effectOffset = idx / data.count();\n    effectCfg.z = seriesModel.getShallow('z') || 0;\n    effectCfg.zlevel = seriesModel.getShallow('zlevel') || 0;\n    effectCfg.symbolType = symbolType;\n    effectCfg.color = color;\n    effectCfg.rippleEffectColor = itemModel.get(['rippleEffect', 'color']);\n    effectCfg.rippleNumber = itemModel.get(['rippleEffect', 'number']);\n\n    if (effectCfg.showEffectOn === 'render') {\n      this._effectCfg ? this.updateEffectAnimation(effectCfg) : this.startEffectAnimation(effectCfg);\n      this._effectCfg = effectCfg;\n    } else {\n      // Not keep old effect config\n      this._effectCfg = null;\n      this.stopEffectAnimation();\n\n      this.onHoverStateChange = function (toState) {\n        if (toState === 'emphasis') {\n          if (effectCfg.showEffectOn !== 'render') {\n            _this.startEffectAnimation(effectCfg);\n          }\n        } else if (toState === 'normal') {\n          if (effectCfg.showEffectOn !== 'render') {\n            _this.stopEffectAnimation();\n          }\n        }\n      };\n    }\n\n    this._effectCfg = effectCfg;\n    toggleHoverEmphasis(this, emphasisModel.get('focus'), emphasisModel.get('blurScope'), emphasisModel.get('disabled'));\n  };\n\n  ;\n\n  EffectSymbol.prototype.fadeOut = function (cb) {\n    cb && cb();\n  };\n\n  ;\n  return EffectSymbol;\n}(Group);\n\nexport default EffectSymbol;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { __extends } from \"tslib\";\nimport SymbolDraw from '../helper/SymbolDraw.js';\nimport EffectSymbol from '../helper/EffectSymbol.js';\nimport * as matrix from 'zrender/lib/core/matrix.js';\nimport pointsLayout from '../../layout/points.js';\nimport ChartView from '../../view/Chart.js';\n\nvar EffectScatterView =\n/** @class */\nfunction (_super) {\n  __extends(EffectScatterView, _super);\n\n  function EffectScatterView() {\n    var _this = _super !== null && _super.apply(this, arguments) || this;\n\n    _this.type = EffectScatterView.type;\n    return _this;\n  }\n\n  EffectScatterView.prototype.init = function () {\n    this._symbolDraw = new SymbolDraw(EffectSymbol);\n  };\n\n  EffectScatterView.prototype.render = function (seriesModel, ecModel, api) {\n    var data = seriesModel.getData();\n    var effectSymbolDraw = this._symbolDraw;\n    effectSymbolDraw.updateData(data, {\n      clipShape: this._getClipShape(seriesModel)\n    });\n    this.group.add(effectSymbolDraw.group);\n  };\n\n  EffectScatterView.prototype._getClipShape = function (seriesModel) {\n    var coordSys = seriesModel.coordinateSystem;\n    var clipArea = coordSys && coordSys.getArea && coordSys.getArea();\n    return seriesModel.get('clip', true) ? clipArea : null;\n  };\n\n  EffectScatterView.prototype.updateTransform = function (seriesModel, ecModel, api) {\n    var data = seriesModel.getData();\n    this.group.dirty();\n    var res = pointsLayout('').reset(seriesModel, ecModel, api);\n\n    if (res.progress) {\n      res.progress({\n        start: 0,\n        end: data.count(),\n        count: data.count()\n      }, data);\n    }\n\n    this._symbolDraw.updateLayout();\n  };\n\n  EffectScatterView.prototype._updateGroupTransform = function (seriesModel) {\n    var coordSys = seriesModel.coordinateSystem;\n\n    if (coordSys && coordSys.getRoamTransform) {\n      this.group.transform = matrix.clone(coordSys.getRoamTransform());\n      this.group.decomposeTransform();\n    }\n  };\n\n  EffectScatterView.prototype.remove = function (ecModel, api) {\n    this._symbolDraw && this._symbolDraw.remove(true);\n  };\n\n  EffectScatterView.type = 'effectScatter';\n  return EffectScatterView;\n}(ChartView);\n\nexport default EffectScatterView;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { __extends } from \"tslib\";\nimport createSeriesData from '../helper/createSeriesData.js';\nimport SeriesModel from '../../model/Series.js';\n\nvar EffectScatterSeriesModel =\n/** @class */\nfunction (_super) {\n  __extends(EffectScatterSeriesModel, _super);\n\n  function EffectScatterSeriesModel() {\n    var _this = _super !== null && _super.apply(this, arguments) || this;\n\n    _this.type = EffectScatterSeriesModel.type;\n    _this.hasSymbolVisual = true;\n    return _this;\n  }\n\n  EffectScatterSeriesModel.prototype.getInitialData = function (option, ecModel) {\n    return createSeriesData(null, this, {\n      useEncodeDefaulter: true\n    });\n  };\n\n  EffectScatterSeriesModel.prototype.brushSelector = function (dataIndex, data, selectors) {\n    return selectors.point(data.getItemLayout(dataIndex));\n  };\n\n  EffectScatterSeriesModel.type = 'series.effectScatter';\n  EffectScatterSeriesModel.dependencies = ['grid', 'polar'];\n  EffectScatterSeriesModel.defaultOption = {\n    coordinateSystem: 'cartesian2d',\n    // zlevel: 0,\n    z: 2,\n    legendHoverLink: true,\n    effectType: 'ripple',\n    progressive: 0,\n    // When to show the effect, option: 'render'|'emphasis'\n    showEffectOn: 'render',\n    clip: true,\n    // Ripple effect config\n    rippleEffect: {\n      period: 4,\n      // Scale of ripple\n      scale: 2.5,\n      // Brush type can be fill or stroke\n      brushType: 'fill',\n      // Ripple number\n      number: 3\n    },\n    universalTransition: {\n      divideShape: 'clone'\n    },\n    // Cartesian coordinate system\n    // xAxisIndex: 0,\n    // yAxisIndex: 0,\n    // Polar coordinate system\n    // polarIndex: 0,\n    // Geo coordinate system\n    // geoIndex: 0,\n    // symbol: null,        // 图形类型\n    symbolSize: 10 // 图形大小，半宽（半径）参数，当图形为方向或菱形则总宽度为symbolSize * 2\n    // symbolRotate: null,  // 图形旋转控制\n    // itemStyle: {\n    //     opacity: 1\n    // }\n\n  };\n  return EffectScatterSeriesModel;\n}(SeriesModel);\n\nexport default EffectScatterSeriesModel;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { __extends } from \"tslib\";\n/**\r\n * Provide effect for line\r\n */\n\nimport * as graphic from '../../util/graphic.js';\nimport Line from './Line.js';\nimport * as zrUtil from 'zrender/lib/core/util.js';\nimport { createSymbol } from '../../util/symbol.js';\nimport * as vec2 from 'zrender/lib/core/vector.js';\nimport * as curveUtil from 'zrender/lib/core/curve.js';\n\nvar EffectLine =\n/** @class */\nfunction (_super) {\n  __extends(EffectLine, _super);\n\n  function EffectLine(lineData, idx, seriesScope) {\n    var _this = _super.call(this) || this;\n\n    _this.add(_this.createLine(lineData, idx, seriesScope));\n\n    _this._updateEffectSymbol(lineData, idx);\n\n    return _this;\n  }\n\n  EffectLine.prototype.createLine = function (lineData, idx, seriesScope) {\n    return new Line(lineData, idx, seriesScope);\n  };\n\n  EffectLine.prototype._updateEffectSymbol = function (lineData, idx) {\n    var itemModel = lineData.getItemModel(idx);\n    var effectModel = itemModel.getModel('effect');\n    var size = effectModel.get('symbolSize');\n    var symbolType = effectModel.get('symbol');\n\n    if (!zrUtil.isArray(size)) {\n      size = [size, size];\n    }\n\n    var lineStyle = lineData.getItemVisual(idx, 'style');\n    var color = effectModel.get('color') || lineStyle && lineStyle.stroke;\n    var symbol = this.childAt(1);\n\n    if (this._symbolType !== symbolType) {\n      // Remove previous\n      this.remove(symbol);\n      symbol = createSymbol(symbolType, -0.5, -0.5, 1, 1, color);\n      symbol.z2 = 100;\n      symbol.culling = true;\n      this.add(symbol);\n    } // Symbol may be removed if loop is false\n\n\n    if (!symbol) {\n      return;\n    } // Shadow color is same with color in default\n\n\n    symbol.setStyle('shadowColor', color);\n    symbol.setStyle(effectModel.getItemStyle(['color']));\n    symbol.scaleX = size[0];\n    symbol.scaleY = size[1];\n    symbol.setColor(color);\n    this._symbolType = symbolType;\n    this._symbolScale = size;\n\n    this._updateEffectAnimation(lineData, effectModel, idx);\n  };\n\n  EffectLine.prototype._updateEffectAnimation = function (lineData, effectModel, idx) {\n    var symbol = this.childAt(1);\n\n    if (!symbol) {\n      return;\n    }\n\n    var points = lineData.getItemLayout(idx);\n    var period = effectModel.get('period') * 1000;\n    var loop = effectModel.get('loop');\n    var roundTrip = effectModel.get('roundTrip');\n    var constantSpeed = effectModel.get('constantSpeed');\n    var delayExpr = zrUtil.retrieve(effectModel.get('delay'), function (idx) {\n      return idx / lineData.count() * period / 3;\n    }); // Ignore when updating\n\n    symbol.ignore = true;\n\n    this._updateAnimationPoints(symbol, points);\n\n    if (constantSpeed > 0) {\n      period = this._getLineLength(symbol) / constantSpeed * 1000;\n    }\n\n    if (period !== this._period || loop !== this._loop || roundTrip !== this._roundTrip) {\n      symbol.stopAnimation();\n      var delayNum = void 0;\n\n      if (zrUtil.isFunction(delayExpr)) {\n        delayNum = delayExpr(idx);\n      } else {\n        delayNum = delayExpr;\n      }\n\n      if (symbol.__t > 0) {\n        delayNum = -period * symbol.__t;\n      }\n\n      this._animateSymbol(symbol, period, delayNum, loop, roundTrip);\n    }\n\n    this._period = period;\n    this._loop = loop;\n    this._roundTrip = roundTrip;\n  };\n\n  EffectLine.prototype._animateSymbol = function (symbol, period, delayNum, loop, roundTrip) {\n    if (period > 0) {\n      symbol.__t = 0;\n      var self_1 = this;\n      var animator = symbol.animate('', loop).when(roundTrip ? period * 2 : period, {\n        __t: roundTrip ? 2 : 1\n      }).delay(delayNum).during(function () {\n        self_1._updateSymbolPosition(symbol);\n      });\n\n      if (!loop) {\n        animator.done(function () {\n          self_1.remove(symbol);\n        });\n      }\n\n      animator.start();\n    }\n  };\n\n  EffectLine.prototype._getLineLength = function (symbol) {\n    // Not so accurate\n    return vec2.dist(symbol.__p1, symbol.__cp1) + vec2.dist(symbol.__cp1, symbol.__p2);\n  };\n\n  EffectLine.prototype._updateAnimationPoints = function (symbol, points) {\n    symbol.__p1 = points[0];\n    symbol.__p2 = points[1];\n    symbol.__cp1 = points[2] || [(points[0][0] + points[1][0]) / 2, (points[0][1] + points[1][1]) / 2];\n  };\n\n  EffectLine.prototype.updateData = function (lineData, idx, seriesScope) {\n    this.childAt(0).updateData(lineData, idx, seriesScope);\n\n    this._updateEffectSymbol(lineData, idx);\n  };\n\n  EffectLine.prototype._updateSymbolPosition = function (symbol) {\n    var p1 = symbol.__p1;\n    var p2 = symbol.__p2;\n    var cp1 = symbol.__cp1;\n    var t = symbol.__t < 1 ? symbol.__t : 2 - symbol.__t;\n    var pos = [symbol.x, symbol.y];\n    var lastPos = pos.slice();\n    var quadraticAt = curveUtil.quadraticAt;\n    var quadraticDerivativeAt = curveUtil.quadraticDerivativeAt;\n    pos[0] = quadraticAt(p1[0], cp1[0], p2[0], t);\n    pos[1] = quadraticAt(p1[1], cp1[1], p2[1], t); // Tangent\n\n    var tx = symbol.__t < 1 ? quadraticDerivativeAt(p1[0], cp1[0], p2[0], t) : quadraticDerivativeAt(p2[0], cp1[0], p1[0], 1 - t);\n    var ty = symbol.__t < 1 ? quadraticDerivativeAt(p1[1], cp1[1], p2[1], t) : quadraticDerivativeAt(p2[1], cp1[1], p1[1], 1 - t);\n    symbol.rotation = -Math.atan2(ty, tx) - Math.PI / 2; // enable continuity trail for 'line', 'rect', 'roundRect' symbolType\n\n    if (this._symbolType === 'line' || this._symbolType === 'rect' || this._symbolType === 'roundRect') {\n      if (symbol.__lastT !== undefined && symbol.__lastT < symbol.__t) {\n        symbol.scaleY = vec2.dist(lastPos, pos) * 1.05; // make sure the last segment render within endPoint\n\n        if (t === 1) {\n          pos[0] = lastPos[0] + (pos[0] - lastPos[0]) / 2;\n          pos[1] = lastPos[1] + (pos[1] - lastPos[1]) / 2;\n        }\n      } else if (symbol.__lastT === 1) {\n        // After first loop, symbol.__t does NOT start with 0, so connect p1 to pos directly.\n        symbol.scaleY = 2 * vec2.dist(p1, pos);\n      } else {\n        symbol.scaleY = this._symbolScale[1];\n      }\n    }\n\n    symbol.__lastT = symbol.__t;\n    symbol.ignore = false;\n    symbol.x = pos[0];\n    symbol.y = pos[1];\n  };\n\n  EffectLine.prototype.updateLayout = function (lineData, idx) {\n    this.childAt(0).updateLayout(lineData, idx);\n    var effectModel = lineData.getItemModel(idx).getModel('effect');\n\n    this._updateEffectAnimation(lineData, effectModel, idx);\n  };\n\n  return EffectLine;\n}(graphic.Group);\n\nexport default EffectLine;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { __extends } from \"tslib\";\nimport * as graphic from '../../util/graphic.js';\nimport { toggleHoverEmphasis } from '../../util/states.js';\n\nvar Polyline =\n/** @class */\nfunction (_super) {\n  __extends(Polyline, _super);\n\n  function Polyline(lineData, idx, seriesScope) {\n    var _this = _super.call(this) || this;\n\n    _this._createPolyline(lineData, idx, seriesScope);\n\n    return _this;\n  }\n\n  Polyline.prototype._createPolyline = function (lineData, idx, seriesScope) {\n    // let seriesModel = lineData.hostModel;\n    var points = lineData.getItemLayout(idx);\n    var line = new graphic.Polyline({\n      shape: {\n        points: points\n      }\n    });\n    this.add(line);\n\n    this._updateCommonStl(lineData, idx, seriesScope);\n  };\n\n  ;\n\n  Polyline.prototype.updateData = function (lineData, idx, seriesScope) {\n    var seriesModel = lineData.hostModel;\n    var line = this.childAt(0);\n    var target = {\n      shape: {\n        points: lineData.getItemLayout(idx)\n      }\n    };\n    graphic.updateProps(line, target, seriesModel, idx);\n\n    this._updateCommonStl(lineData, idx, seriesScope);\n  };\n\n  ;\n\n  Polyline.prototype._updateCommonStl = function (lineData, idx, seriesScope) {\n    var line = this.childAt(0);\n    var itemModel = lineData.getItemModel(idx);\n    var emphasisLineStyle = seriesScope && seriesScope.emphasisLineStyle;\n    var focus = seriesScope && seriesScope.focus;\n    var blurScope = seriesScope && seriesScope.blurScope;\n    var emphasisDisabled = seriesScope && seriesScope.emphasisDisabled;\n\n    if (!seriesScope || lineData.hasItemOption) {\n      var emphasisModel = itemModel.getModel('emphasis');\n      emphasisLineStyle = emphasisModel.getModel('lineStyle').getLineStyle();\n      emphasisDisabled = emphasisModel.get('disabled');\n      focus = emphasisModel.get('focus');\n      blurScope = emphasisModel.get('blurScope');\n    }\n\n    line.useStyle(lineData.getItemVisual(idx, 'style'));\n    line.style.fill = null;\n    line.style.strokeNoScale = true;\n    var lineEmphasisState = line.ensureState('emphasis');\n    lineEmphasisState.style = emphasisLineStyle;\n    toggleHoverEmphasis(this, focus, blurScope, emphasisDisabled);\n  };\n\n  ;\n\n  Polyline.prototype.updateLayout = function (lineData, idx) {\n    var polyline = this.childAt(0);\n    polyline.setShape('points', lineData.getItemLayout(idx));\n  };\n\n  ;\n  return Polyline;\n}(graphic.Group);\n\nexport default Polyline;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { __extends } from \"tslib\";\nimport Polyline from './Polyline.js';\nimport EffectLine from './EffectLine.js';\nimport * as vec2 from 'zrender/lib/core/vector.js';\n\nvar EffectPolyline =\n/** @class */\nfunction (_super) {\n  __extends(EffectPolyline, _super);\n\n  function EffectPolyline() {\n    var _this = _super !== null && _super.apply(this, arguments) || this;\n\n    _this._lastFrame = 0;\n    _this._lastFramePercent = 0;\n    return _this;\n  } // Override\n\n\n  EffectPolyline.prototype.createLine = function (lineData, idx, seriesScope) {\n    return new Polyline(lineData, idx, seriesScope);\n  };\n\n  ; // Override\n\n  EffectPolyline.prototype._updateAnimationPoints = function (symbol, points) {\n    this._points = points;\n    var accLenArr = [0];\n    var len = 0;\n\n    for (var i = 1; i < points.length; i++) {\n      var p1 = points[i - 1];\n      var p2 = points[i];\n      len += vec2.dist(p1, p2);\n      accLenArr.push(len);\n    }\n\n    if (len === 0) {\n      this._length = 0;\n      return;\n    }\n\n    for (var i = 0; i < accLenArr.length; i++) {\n      accLenArr[i] /= len;\n    }\n\n    this._offsets = accLenArr;\n    this._length = len;\n  };\n\n  ; // Override\n\n  EffectPolyline.prototype._getLineLength = function () {\n    return this._length;\n  };\n\n  ; // Override\n\n  EffectPolyline.prototype._updateSymbolPosition = function (symbol) {\n    var t = symbol.__t < 1 ? symbol.__t : 2 - symbol.__t;\n    var points = this._points;\n    var offsets = this._offsets;\n    var len = points.length;\n\n    if (!offsets) {\n      // Has length 0\n      return;\n    }\n\n    var lastFrame = this._lastFrame;\n    var frame;\n\n    if (t < this._lastFramePercent) {\n      // Start from the next frame\n      // PENDING start from lastFrame ?\n      var start = Math.min(lastFrame + 1, len - 1);\n\n      for (frame = start; frame >= 0; frame--) {\n        if (offsets[frame] <= t) {\n          break;\n        }\n      } // PENDING really need to do this ?\n\n\n      frame = Math.min(frame, len - 2);\n    } else {\n      for (frame = lastFrame; frame < len; frame++) {\n        if (offsets[frame] > t) {\n          break;\n        }\n      }\n\n      frame = Math.min(frame - 1, len - 2);\n    }\n\n    var p = (t - offsets[frame]) / (offsets[frame + 1] - offsets[frame]);\n    var p0 = points[frame];\n    var p1 = points[frame + 1];\n    symbol.x = p0[0] * (1 - p) + p * p1[0];\n    symbol.y = p0[1] * (1 - p) + p * p1[1];\n    var tx = symbol.__t < 1 ? p1[0] - p0[0] : p0[0] - p1[0];\n    var ty = symbol.__t < 1 ? p1[1] - p0[1] : p0[1] - p1[1];\n    symbol.rotation = -Math.atan2(ty, tx) - Math.PI / 2;\n    this._lastFrame = frame;\n    this._lastFramePercent = t;\n    symbol.ignore = false;\n  };\n\n  ;\n  return EffectPolyline;\n}(EffectLine);\n\nexport default EffectPolyline;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { __extends } from \"tslib\"; // TODO Batch by color\n\nimport * as graphic from '../../util/graphic.js';\nimport * as lineContain from 'zrender/lib/contain/line.js';\nimport * as quadraticContain from 'zrender/lib/contain/quadratic.js';\nimport { getECData } from '../../util/innerStore.js';\n\nvar LargeLinesPathShape =\n/** @class */\nfunction () {\n  function LargeLinesPathShape() {\n    this.polyline = false;\n    this.curveness = 0;\n    this.segs = [];\n  }\n\n  return LargeLinesPathShape;\n}();\n\nvar LargeLinesPath =\n/** @class */\nfunction (_super) {\n  __extends(LargeLinesPath, _super);\n\n  function LargeLinesPath(opts) {\n    var _this = _super.call(this, opts) || this;\n\n    _this._off = 0;\n    _this.hoverDataIdx = -1;\n    return _this;\n  }\n\n  LargeLinesPath.prototype.reset = function () {\n    this.notClear = false;\n    this._off = 0;\n  };\n\n  LargeLinesPath.prototype.getDefaultStyle = function () {\n    return {\n      stroke: '#000',\n      fill: null\n    };\n  };\n\n  LargeLinesPath.prototype.getDefaultShape = function () {\n    return new LargeLinesPathShape();\n  };\n\n  LargeLinesPath.prototype.buildPath = function (ctx, shape) {\n    var segs = shape.segs;\n    var curveness = shape.curveness;\n    var i;\n\n    if (shape.polyline) {\n      for (i = this._off; i < segs.length;) {\n        var count = segs[i++];\n\n        if (count > 0) {\n          ctx.moveTo(segs[i++], segs[i++]);\n\n          for (var k = 1; k < count; k++) {\n            ctx.lineTo(segs[i++], segs[i++]);\n          }\n        }\n      }\n    } else {\n      for (i = this._off; i < segs.length;) {\n        var x0 = segs[i++];\n        var y0 = segs[i++];\n        var x1 = segs[i++];\n        var y1 = segs[i++];\n        ctx.moveTo(x0, y0);\n\n        if (curveness > 0) {\n          var x2 = (x0 + x1) / 2 - (y0 - y1) * curveness;\n          var y2 = (y0 + y1) / 2 - (x1 - x0) * curveness;\n          ctx.quadraticCurveTo(x2, y2, x1, y1);\n        } else {\n          ctx.lineTo(x1, y1);\n        }\n      }\n    }\n\n    if (this.incremental) {\n      this._off = i;\n      this.notClear = true;\n    }\n  };\n\n  LargeLinesPath.prototype.findDataIndex = function (x, y) {\n    var shape = this.shape;\n    var segs = shape.segs;\n    var curveness = shape.curveness;\n    var lineWidth = this.style.lineWidth;\n\n    if (shape.polyline) {\n      var dataIndex = 0;\n\n      for (var i = 0; i < segs.length;) {\n        var count = segs[i++];\n\n        if (count > 0) {\n          var x0 = segs[i++];\n          var y0 = segs[i++];\n\n          for (var k = 1; k < count; k++) {\n            var x1 = segs[i++];\n            var y1 = segs[i++];\n\n            if (lineContain.containStroke(x0, y0, x1, y1, lineWidth, x, y)) {\n              return dataIndex;\n            }\n          }\n        }\n\n        dataIndex++;\n      }\n    } else {\n      var dataIndex = 0;\n\n      for (var i = 0; i < segs.length;) {\n        var x0 = segs[i++];\n        var y0 = segs[i++];\n        var x1 = segs[i++];\n        var y1 = segs[i++];\n\n        if (curveness > 0) {\n          var x2 = (x0 + x1) / 2 - (y0 - y1) * curveness;\n          var y2 = (y0 + y1) / 2 - (x1 - x0) * curveness;\n\n          if (quadraticContain.containStroke(x0, y0, x2, y2, x1, y1, lineWidth, x, y)) {\n            return dataIndex;\n          }\n        } else {\n          if (lineContain.containStroke(x0, y0, x1, y1, lineWidth, x, y)) {\n            return dataIndex;\n          }\n        }\n\n        dataIndex++;\n      }\n    }\n\n    return -1;\n  };\n\n  LargeLinesPath.prototype.contain = function (x, y) {\n    var localPos = this.transformCoordToLocal(x, y);\n    var rect = this.getBoundingRect();\n    x = localPos[0];\n    y = localPos[1];\n\n    if (rect.contain(x, y)) {\n      // Cache found data index.\n      var dataIdx = this.hoverDataIdx = this.findDataIndex(x, y);\n      return dataIdx >= 0;\n    }\n\n    this.hoverDataIdx = -1;\n    return false;\n  };\n\n  LargeLinesPath.prototype.getBoundingRect = function () {\n    // Ignore stroke for large symbol draw.\n    var rect = this._rect;\n\n    if (!rect) {\n      var shape = this.shape;\n      var points = shape.segs;\n      var minX = Infinity;\n      var minY = Infinity;\n      var maxX = -Infinity;\n      var maxY = -Infinity;\n\n      for (var i = 0; i < points.length;) {\n        var x = points[i++];\n        var y = points[i++];\n        minX = Math.min(x, minX);\n        maxX = Math.max(x, maxX);\n        minY = Math.min(y, minY);\n        maxY = Math.max(y, maxY);\n      }\n\n      rect = this._rect = new graphic.BoundingRect(minX, minY, maxX, maxY);\n    }\n\n    return rect;\n  };\n\n  return LargeLinesPath;\n}(graphic.Path);\n\nvar LargeLineDraw =\n/** @class */\nfunction () {\n  function LargeLineDraw() {\n    this.group = new graphic.Group();\n  }\n  /**\r\n   * Update symbols draw by new data\r\n   */\n\n\n  LargeLineDraw.prototype.updateData = function (data) {\n    this._clear();\n\n    var lineEl = this._create();\n\n    lineEl.setShape({\n      segs: data.getLayout('linesPoints')\n    });\n\n    this._setCommon(lineEl, data);\n  };\n\n  ;\n  /**\r\n   * @override\r\n   */\n\n  LargeLineDraw.prototype.incrementalPrepareUpdate = function (data) {\n    this.group.removeAll();\n\n    this._clear();\n  };\n\n  ;\n  /**\r\n   * @override\r\n   */\n\n  LargeLineDraw.prototype.incrementalUpdate = function (taskParams, data) {\n    var lastAdded = this._newAdded[0];\n    var linePoints = data.getLayout('linesPoints');\n    var oldSegs = lastAdded && lastAdded.shape.segs; // Merging the exists. Each element has 1e4 points.\n    // Consider the performance balance between too much elements and too much points in one shape(may affect hover optimization)\n\n    if (oldSegs && oldSegs.length < 2e4) {\n      var oldLen = oldSegs.length;\n      var newSegs = new Float32Array(oldLen + linePoints.length); // Concat two array\n\n      newSegs.set(oldSegs);\n      newSegs.set(linePoints, oldLen);\n      lastAdded.setShape({\n        segs: newSegs\n      });\n    } else {\n      // Clear\n      this._newAdded = [];\n\n      var lineEl = this._create();\n\n      lineEl.incremental = true;\n      lineEl.setShape({\n        segs: linePoints\n      });\n\n      this._setCommon(lineEl, data);\n\n      lineEl.__startIndex = taskParams.start;\n    }\n  };\n  /**\r\n   * @override\r\n   */\n\n\n  LargeLineDraw.prototype.remove = function () {\n    this._clear();\n  };\n\n  LargeLineDraw.prototype.eachRendered = function (cb) {\n    this._newAdded[0] && cb(this._newAdded[0]);\n  };\n\n  LargeLineDraw.prototype._create = function () {\n    var lineEl = new LargeLinesPath({\n      cursor: 'default',\n      ignoreCoarsePointer: true\n    });\n\n    this._newAdded.push(lineEl);\n\n    this.group.add(lineEl);\n    return lineEl;\n  };\n\n  LargeLineDraw.prototype._setCommon = function (lineEl, data, isIncremental) {\n    var hostModel = data.hostModel;\n    lineEl.setShape({\n      polyline: hostModel.get('polyline'),\n      curveness: hostModel.get(['lineStyle', 'curveness'])\n    });\n    lineEl.useStyle(hostModel.getModel('lineStyle').getLineStyle());\n    lineEl.style.strokeNoScale = true;\n    var style = data.getVisual('style');\n\n    if (style && style.stroke) {\n      lineEl.setStyle('stroke', style.stroke);\n    }\n\n    lineEl.setStyle('fill', null);\n    var ecData = getECData(lineEl); // Enable tooltip\n    // PENDING May have performance issue when path is extremely large\n\n    ecData.seriesIndex = hostModel.seriesIndex;\n    lineEl.on('mousemove', function (e) {\n      ecData.dataIndex = null;\n      var dataIndex = lineEl.hoverDataIdx;\n\n      if (dataIndex > 0) {\n        // Provide dataIndex for tooltip\n        ecData.dataIndex = dataIndex + lineEl.__startIndex;\n      }\n    });\n  };\n\n  ;\n\n  LargeLineDraw.prototype._clear = function () {\n    this._newAdded = [];\n    this.group.removeAll();\n  };\n\n  ;\n  return LargeLineDraw;\n}();\n\nexport default LargeLineDraw;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\n\n/* global Float32Array */\nimport createRenderPlanner from '../helper/createRenderPlanner.js';\nimport { error } from '../../util/log.js';\nvar linesLayout = {\n  seriesType: 'lines',\n  plan: createRenderPlanner(),\n  reset: function (seriesModel) {\n    var coordSys = seriesModel.coordinateSystem;\n\n    if (!coordSys) {\n      if (process.env.NODE_ENV !== 'production') {\n        error('The lines series must have a coordinate system.');\n      }\n\n      return;\n    }\n\n    var isPolyline = seriesModel.get('polyline');\n    var isLarge = seriesModel.pipelineContext.large;\n    return {\n      progress: function (params, lineData) {\n        var lineCoords = [];\n\n        if (isLarge) {\n          var points = void 0;\n          var segCount = params.end - params.start;\n\n          if (isPolyline) {\n            var totalCoordsCount = 0;\n\n            for (var i = params.start; i < params.end; i++) {\n              totalCoordsCount += seriesModel.getLineCoordsCount(i);\n            }\n\n            points = new Float32Array(segCount + totalCoordsCount * 2);\n          } else {\n            points = new Float32Array(segCount * 4);\n          }\n\n          var offset = 0;\n          var pt = [];\n\n          for (var i = params.start; i < params.end; i++) {\n            var len = seriesModel.getLineCoords(i, lineCoords);\n\n            if (isPolyline) {\n              points[offset++] = len;\n            }\n\n            for (var k = 0; k < len; k++) {\n              pt = coordSys.dataToPoint(lineCoords[k], false, pt);\n              points[offset++] = pt[0];\n              points[offset++] = pt[1];\n            }\n          }\n\n          lineData.setLayout('linesPoints', points);\n        } else {\n          for (var i = params.start; i < params.end; i++) {\n            var itemModel = lineData.getItemModel(i);\n            var len = seriesModel.getLineCoords(i, lineCoords);\n            var pts = [];\n\n            if (isPolyline) {\n              for (var j = 0; j < len; j++) {\n                pts.push(coordSys.dataToPoint(lineCoords[j]));\n              }\n            } else {\n              pts[0] = coordSys.dataToPoint(lineCoords[0]);\n              pts[1] = coordSys.dataToPoint(lineCoords[1]);\n              var curveness = itemModel.get(['lineStyle', 'curveness']);\n\n              if (+curveness) {\n                pts[2] = [(pts[0][0] + pts[1][0]) / 2 - (pts[0][1] - pts[1][1]) * curveness, (pts[0][1] + pts[1][1]) / 2 - (pts[1][0] - pts[0][0]) * curveness];\n              }\n            }\n\n            lineData.setItemLayout(i, pts);\n          }\n        }\n      }\n    };\n  }\n};\nexport default linesLayout;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { __extends } from \"tslib\";\nimport LineDraw from '../helper/LineDraw.js';\nimport EffectLine from '../helper/EffectLine.js';\nimport Line from '../helper/Line.js';\nimport Polyline from '../helper/Polyline.js';\nimport EffectPolyline from '../helper/EffectPolyline.js';\nimport LargeLineDraw from '../helper/LargeLineDraw.js';\nimport linesLayout from './linesLayout.js';\nimport { createClipPath } from '../helper/createClipPathFromCoordSys.js';\nimport ChartView from '../../view/Chart.js';\n\nvar LinesView =\n/** @class */\nfunction (_super) {\n  __extends(LinesView, _super);\n\n  function LinesView() {\n    var _this = _super !== null && _super.apply(this, arguments) || this;\n\n    _this.type = LinesView.type;\n    return _this;\n  }\n\n  LinesView.prototype.render = function (seriesModel, ecModel, api) {\n    var data = seriesModel.getData();\n\n    var lineDraw = this._updateLineDraw(data, seriesModel);\n\n    var zlevel = seriesModel.get('zlevel');\n    var trailLength = seriesModel.get(['effect', 'trailLength']);\n    var zr = api.getZr(); // Avoid the drag cause ghost shadow\n    // FIXME Better way ?\n    // SVG doesn't support\n\n    var isSvg = zr.painter.getType() === 'svg';\n\n    if (!isSvg) {\n      zr.painter.getLayer(zlevel).clear(true);\n    } // Config layer with motion blur\n\n\n    if (this._lastZlevel != null && !isSvg) {\n      zr.configLayer(this._lastZlevel, {\n        motionBlur: false\n      });\n    }\n\n    if (this._showEffect(seriesModel) && trailLength > 0) {\n      if (!isSvg) {\n        zr.configLayer(zlevel, {\n          motionBlur: true,\n          lastFrameAlpha: Math.max(Math.min(trailLength / 10 + 0.9, 1), 0)\n        });\n      } else if (process.env.NODE_ENV !== 'production') {\n        console.warn('SVG render mode doesn\\'t support lines with trail effect');\n      }\n    }\n\n    lineDraw.updateData(data);\n    var clipPath = seriesModel.get('clip', true) && createClipPath(seriesModel.coordinateSystem, false, seriesModel);\n\n    if (clipPath) {\n      this.group.setClipPath(clipPath);\n    } else {\n      this.group.removeClipPath();\n    }\n\n    this._lastZlevel = zlevel;\n    this._finished = true;\n  };\n\n  LinesView.prototype.incrementalPrepareRender = function (seriesModel, ecModel, api) {\n    var data = seriesModel.getData();\n\n    var lineDraw = this._updateLineDraw(data, seriesModel);\n\n    lineDraw.incrementalPrepareUpdate(data);\n\n    this._clearLayer(api);\n\n    this._finished = false;\n  };\n\n  LinesView.prototype.incrementalRender = function (taskParams, seriesModel, ecModel) {\n    this._lineDraw.incrementalUpdate(taskParams, seriesModel.getData());\n\n    this._finished = taskParams.end === seriesModel.getData().count();\n  };\n\n  LinesView.prototype.eachRendered = function (cb) {\n    this._lineDraw && this._lineDraw.eachRendered(cb);\n  };\n\n  LinesView.prototype.updateTransform = function (seriesModel, ecModel, api) {\n    var data = seriesModel.getData();\n    var pipelineContext = seriesModel.pipelineContext;\n\n    if (!this._finished || pipelineContext.large || pipelineContext.progressiveRender) {\n      // TODO Don't have to do update in large mode. Only do it when there are millions of data.\n      return {\n        update: true\n      };\n    } else {\n      // TODO Use same logic with ScatterView.\n      // Manually update layout\n      var res = linesLayout.reset(seriesModel, ecModel, api);\n\n      if (res.progress) {\n        res.progress({\n          start: 0,\n          end: data.count(),\n          count: data.count()\n        }, data);\n      } // Not in large mode\n\n\n      this._lineDraw.updateLayout();\n\n      this._clearLayer(api);\n    }\n  };\n\n  LinesView.prototype._updateLineDraw = function (data, seriesModel) {\n    var lineDraw = this._lineDraw;\n\n    var hasEffect = this._showEffect(seriesModel);\n\n    var isPolyline = !!seriesModel.get('polyline');\n    var pipelineContext = seriesModel.pipelineContext;\n    var isLargeDraw = pipelineContext.large;\n\n    if (process.env.NODE_ENV !== 'production') {\n      if (hasEffect && isLargeDraw) {\n        console.warn('Large lines not support effect');\n      }\n    }\n\n    if (!lineDraw || hasEffect !== this._hasEffet || isPolyline !== this._isPolyline || isLargeDraw !== this._isLargeDraw) {\n      if (lineDraw) {\n        lineDraw.remove();\n      }\n\n      lineDraw = this._lineDraw = isLargeDraw ? new LargeLineDraw() : new LineDraw(isPolyline ? hasEffect ? EffectPolyline : Polyline : hasEffect ? EffectLine : Line);\n      this._hasEffet = hasEffect;\n      this._isPolyline = isPolyline;\n      this._isLargeDraw = isLargeDraw;\n    }\n\n    this.group.add(lineDraw.group);\n    return lineDraw;\n  };\n\n  LinesView.prototype._showEffect = function (seriesModel) {\n    return !!seriesModel.get(['effect', 'show']);\n  };\n\n  LinesView.prototype._clearLayer = function (api) {\n    // Not use motion when dragging or zooming\n    var zr = api.getZr();\n    var isSvg = zr.painter.getType() === 'svg';\n\n    if (!isSvg && this._lastZlevel != null) {\n      zr.painter.getLayer(this._lastZlevel).clear(true);\n    }\n  };\n\n  LinesView.prototype.remove = function (ecModel, api) {\n    this._lineDraw && this._lineDraw.remove();\n    this._lineDraw = null; // Clear motion when lineDraw is removed\n\n    this._clearLayer(api);\n  };\n\n  LinesView.prototype.dispose = function (ecModel, api) {\n    this.remove(ecModel, api);\n  };\n\n  LinesView.type = 'lines';\n  return LinesView;\n}(ChartView);\n\nexport default LinesView;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { __extends } from \"tslib\";\n/* global Uint32Array, Float64Array, Float32Array */\n\nimport SeriesModel from '../../model/Series.js';\nimport SeriesData from '../../data/SeriesData.js';\nimport { concatArray, mergeAll, map, isNumber } from 'zrender/lib/core/util.js';\nimport CoordinateSystem from '../../core/CoordinateSystem.js';\nimport { createTooltipMarkup } from '../../component/tooltip/tooltipMarkup.js';\nvar Uint32Arr = typeof Uint32Array === 'undefined' ? Array : Uint32Array;\nvar Float64Arr = typeof Float64Array === 'undefined' ? Array : Float64Array;\n\nfunction compatEc2(seriesOpt) {\n  var data = seriesOpt.data;\n\n  if (data && data[0] && data[0][0] && data[0][0].coord) {\n    if (process.env.NODE_ENV !== 'production') {\n      console.warn('Lines data configuration has been changed to' + ' { coords:[[1,2],[2,3]] }');\n    }\n\n    seriesOpt.data = map(data, function (itemOpt) {\n      var coords = [itemOpt[0].coord, itemOpt[1].coord];\n      var target = {\n        coords: coords\n      };\n\n      if (itemOpt[0].name) {\n        target.fromName = itemOpt[0].name;\n      }\n\n      if (itemOpt[1].name) {\n        target.toName = itemOpt[1].name;\n      }\n\n      return mergeAll([target, itemOpt[0], itemOpt[1]]);\n    });\n  }\n}\n\nvar LinesSeriesModel =\n/** @class */\nfunction (_super) {\n  __extends(LinesSeriesModel, _super);\n\n  function LinesSeriesModel() {\n    var _this = _super !== null && _super.apply(this, arguments) || this;\n\n    _this.type = LinesSeriesModel.type;\n    _this.visualStyleAccessPath = 'lineStyle';\n    _this.visualDrawType = 'stroke';\n    return _this;\n  }\n\n  LinesSeriesModel.prototype.init = function (option) {\n    // The input data may be null/undefined.\n    option.data = option.data || []; // Not using preprocessor because mergeOption may not have series.type\n\n    compatEc2(option);\n\n    var result = this._processFlatCoordsArray(option.data);\n\n    this._flatCoords = result.flatCoords;\n    this._flatCoordsOffset = result.flatCoordsOffset;\n\n    if (result.flatCoords) {\n      option.data = new Float32Array(result.count);\n    }\n\n    _super.prototype.init.apply(this, arguments);\n  };\n\n  LinesSeriesModel.prototype.mergeOption = function (option) {\n    compatEc2(option);\n\n    if (option.data) {\n      // Only update when have option data to merge.\n      var result = this._processFlatCoordsArray(option.data);\n\n      this._flatCoords = result.flatCoords;\n      this._flatCoordsOffset = result.flatCoordsOffset;\n\n      if (result.flatCoords) {\n        option.data = new Float32Array(result.count);\n      }\n    }\n\n    _super.prototype.mergeOption.apply(this, arguments);\n  };\n\n  LinesSeriesModel.prototype.appendData = function (params) {\n    var result = this._processFlatCoordsArray(params.data);\n\n    if (result.flatCoords) {\n      if (!this._flatCoords) {\n        this._flatCoords = result.flatCoords;\n        this._flatCoordsOffset = result.flatCoordsOffset;\n      } else {\n        this._flatCoords = concatArray(this._flatCoords, result.flatCoords);\n        this._flatCoordsOffset = concatArray(this._flatCoordsOffset, result.flatCoordsOffset);\n      }\n\n      params.data = new Float32Array(result.count);\n    }\n\n    this.getRawData().appendData(params.data);\n  };\n\n  LinesSeriesModel.prototype._getCoordsFromItemModel = function (idx) {\n    var itemModel = this.getData().getItemModel(idx);\n    var coords = itemModel.option instanceof Array ? itemModel.option : itemModel.getShallow('coords');\n\n    if (process.env.NODE_ENV !== 'production') {\n      if (!(coords instanceof Array && coords.length > 0 && coords[0] instanceof Array)) {\n        throw new Error('Invalid coords ' + JSON.stringify(coords) + '. Lines must have 2d coords array in data item.');\n      }\n    }\n\n    return coords;\n  };\n\n  LinesSeriesModel.prototype.getLineCoordsCount = function (idx) {\n    if (this._flatCoordsOffset) {\n      return this._flatCoordsOffset[idx * 2 + 1];\n    } else {\n      return this._getCoordsFromItemModel(idx).length;\n    }\n  };\n\n  LinesSeriesModel.prototype.getLineCoords = function (idx, out) {\n    if (this._flatCoordsOffset) {\n      var offset = this._flatCoordsOffset[idx * 2];\n      var len = this._flatCoordsOffset[idx * 2 + 1];\n\n      for (var i = 0; i < len; i++) {\n        out[i] = out[i] || [];\n        out[i][0] = this._flatCoords[offset + i * 2];\n        out[i][1] = this._flatCoords[offset + i * 2 + 1];\n      }\n\n      return len;\n    } else {\n      var coords = this._getCoordsFromItemModel(idx);\n\n      for (var i = 0; i < coords.length; i++) {\n        out[i] = out[i] || [];\n        out[i][0] = coords[i][0];\n        out[i][1] = coords[i][1];\n      }\n\n      return coords.length;\n    }\n  };\n\n  LinesSeriesModel.prototype._processFlatCoordsArray = function (data) {\n    var startOffset = 0;\n\n    if (this._flatCoords) {\n      startOffset = this._flatCoords.length;\n    } // Stored as a typed array. In format\n    // Points Count(2) | x | y | x | y | Points Count(3) | x |  y | x | y | x | y |\n\n\n    if (isNumber(data[0])) {\n      var len = data.length; // Store offset and len of each segment\n\n      var coordsOffsetAndLenStorage = new Uint32Arr(len);\n      var coordsStorage = new Float64Arr(len);\n      var coordsCursor = 0;\n      var offsetCursor = 0;\n      var dataCount = 0;\n\n      for (var i = 0; i < len;) {\n        dataCount++;\n        var count = data[i++]; // Offset\n\n        coordsOffsetAndLenStorage[offsetCursor++] = coordsCursor + startOffset; // Len\n\n        coordsOffsetAndLenStorage[offsetCursor++] = count;\n\n        for (var k = 0; k < count; k++) {\n          var x = data[i++];\n          var y = data[i++];\n          coordsStorage[coordsCursor++] = x;\n          coordsStorage[coordsCursor++] = y;\n\n          if (i > len) {\n            if (process.env.NODE_ENV !== 'production') {\n              throw new Error('Invalid data format.');\n            }\n          }\n        }\n      }\n\n      return {\n        flatCoordsOffset: new Uint32Array(coordsOffsetAndLenStorage.buffer, 0, offsetCursor),\n        flatCoords: coordsStorage,\n        count: dataCount\n      };\n    }\n\n    return {\n      flatCoordsOffset: null,\n      flatCoords: null,\n      count: data.length\n    };\n  };\n\n  LinesSeriesModel.prototype.getInitialData = function (option, ecModel) {\n    if (process.env.NODE_ENV !== 'production') {\n      var CoordSys = CoordinateSystem.get(option.coordinateSystem);\n\n      if (!CoordSys) {\n        throw new Error('Unknown coordinate system ' + option.coordinateSystem);\n      }\n    }\n\n    var lineData = new SeriesData(['value'], this);\n    lineData.hasItemOption = false;\n    lineData.initData(option.data, [], function (dataItem, dimName, dataIndex, dimIndex) {\n      // dataItem is simply coords\n      if (dataItem instanceof Array) {\n        return NaN;\n      } else {\n        lineData.hasItemOption = true;\n        var value = dataItem.value;\n\n        if (value != null) {\n          return value instanceof Array ? value[dimIndex] : value;\n        }\n      }\n    });\n    return lineData;\n  };\n\n  LinesSeriesModel.prototype.formatTooltip = function (dataIndex, multipleSeries, dataType) {\n    var data = this.getData();\n    var itemModel = data.getItemModel(dataIndex);\n    var name = itemModel.get('name');\n\n    if (name) {\n      return name;\n    }\n\n    var fromName = itemModel.get('fromName');\n    var toName = itemModel.get('toName');\n    var nameArr = [];\n    fromName != null && nameArr.push(fromName);\n    toName != null && nameArr.push(toName);\n    return createTooltipMarkup('nameValue', {\n      name: nameArr.join(' > ')\n    });\n  };\n\n  LinesSeriesModel.prototype.preventIncremental = function () {\n    return !!this.get(['effect', 'show']);\n  };\n\n  LinesSeriesModel.prototype.getProgressive = function () {\n    var progressive = this.option.progressive;\n\n    if (progressive == null) {\n      return this.option.large ? 1e4 : this.get('progressive');\n    }\n\n    return progressive;\n  };\n\n  LinesSeriesModel.prototype.getProgressiveThreshold = function () {\n    var progressiveThreshold = this.option.progressiveThreshold;\n\n    if (progressiveThreshold == null) {\n      return this.option.large ? 2e4 : this.get('progressiveThreshold');\n    }\n\n    return progressiveThreshold;\n  };\n\n  LinesSeriesModel.prototype.getZLevelKey = function () {\n    var effectModel = this.getModel('effect');\n    var trailLength = effectModel.get('trailLength');\n    return this.getData().count() > this.getProgressiveThreshold() // Each progressive series has individual key.\n    ? this.id : effectModel.get('show') && trailLength > 0 ? trailLength + '' : '';\n  };\n\n  LinesSeriesModel.type = 'series.lines';\n  LinesSeriesModel.dependencies = ['grid', 'polar', 'geo', 'calendar'];\n  LinesSeriesModel.defaultOption = {\n    coordinateSystem: 'geo',\n    // zlevel: 0,\n    z: 2,\n    legendHoverLink: true,\n    // Cartesian coordinate system\n    xAxisIndex: 0,\n    yAxisIndex: 0,\n    symbol: ['none', 'none'],\n    symbolSize: [10, 10],\n    // Geo coordinate system\n    geoIndex: 0,\n    effect: {\n      show: false,\n      period: 4,\n      constantSpeed: 0,\n      symbol: 'circle',\n      symbolSize: 3,\n      loop: true,\n      trailLength: 0.2\n    },\n    large: false,\n    // Available when large is true\n    largeThreshold: 2000,\n    polyline: false,\n    clip: true,\n    label: {\n      show: false,\n      position: 'end' // distance: 5,\n      // formatter: 标签文本格式器，同Tooltip.formatter，不支持异步回调\n\n    },\n    lineStyle: {\n      opacity: 0.5\n    }\n  };\n  return LinesSeriesModel;\n}(SeriesModel);\n\nexport default LinesSeriesModel;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nfunction normalize(a) {\n  if (!(a instanceof Array)) {\n    a = [a, a];\n  }\n\n  return a;\n}\n\nvar linesVisual = {\n  seriesType: 'lines',\n  reset: function (seriesModel) {\n    var symbolType = normalize(seriesModel.get('symbol'));\n    var symbolSize = normalize(seriesModel.get('symbolSize'));\n    var data = seriesModel.getData();\n    data.setVisual('fromSymbol', symbolType && symbolType[0]);\n    data.setVisual('toSymbol', symbolType && symbolType[1]);\n    data.setVisual('fromSymbolSize', symbolSize && symbolSize[0]);\n    data.setVisual('toSymbolSize', symbolSize && symbolSize[1]);\n\n    function dataEach(data, idx) {\n      var itemModel = data.getItemModel(idx);\n      var symbolType = normalize(itemModel.getShallow('symbol', true));\n      var symbolSize = normalize(itemModel.getShallow('symbolSize', true));\n      symbolType[0] && data.setItemVisual(idx, 'fromSymbol', symbolType[0]);\n      symbolType[1] && data.setItemVisual(idx, 'toSymbol', symbolType[1]);\n      symbolSize[0] && data.setItemVisual(idx, 'fromSymbolSize', symbolSize[0]);\n      symbolSize[1] && data.setItemVisual(idx, 'toSymbolSize', symbolSize[1]);\n    }\n\n    return {\n      dataEach: data.hasItemOption ? dataEach : null\n    };\n  }\n};\nexport default linesVisual;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\n\n/* global Uint8ClampedArray */\nimport { platformApi } from 'zrender/lib/core/platform.js';\nvar GRADIENT_LEVELS = 256;\n\nvar HeatmapLayer =\n/** @class */\nfunction () {\n  function HeatmapLayer() {\n    this.blurSize = 30;\n    this.pointSize = 20;\n    this.maxOpacity = 1;\n    this.minOpacity = 0;\n    this._gradientPixels = {\n      inRange: null,\n      outOfRange: null\n    };\n    var canvas = platformApi.createCanvas();\n    this.canvas = canvas;\n  }\n  /**\r\n   * Renders Heatmap and returns the rendered canvas\r\n   * @param data array of data, each has x, y, value\r\n   * @param width canvas width\r\n   * @param height canvas height\r\n   */\n\n\n  HeatmapLayer.prototype.update = function (data, width, height, normalize, colorFunc, isInRange) {\n    var brush = this._getBrush();\n\n    var gradientInRange = this._getGradient(colorFunc, 'inRange');\n\n    var gradientOutOfRange = this._getGradient(colorFunc, 'outOfRange');\n\n    var r = this.pointSize + this.blurSize;\n    var canvas = this.canvas;\n    var ctx = canvas.getContext('2d');\n    var len = data.length;\n    canvas.width = width;\n    canvas.height = height;\n\n    for (var i = 0; i < len; ++i) {\n      var p = data[i];\n      var x = p[0];\n      var y = p[1];\n      var value = p[2]; // calculate alpha using value\n\n      var alpha = normalize(value); // draw with the circle brush with alpha\n\n      ctx.globalAlpha = alpha;\n      ctx.drawImage(brush, x - r, y - r);\n    }\n\n    if (!canvas.width || !canvas.height) {\n      // Avoid \"Uncaught DOMException: Failed to execute 'getImageData' on\n      // 'CanvasRenderingContext2D': The source height is 0.\"\n      return canvas;\n    } // colorize the canvas using alpha value and set with gradient\n\n\n    var imageData = ctx.getImageData(0, 0, canvas.width, canvas.height);\n    var pixels = imageData.data;\n    var offset = 0;\n    var pixelLen = pixels.length;\n    var minOpacity = this.minOpacity;\n    var maxOpacity = this.maxOpacity;\n    var diffOpacity = maxOpacity - minOpacity;\n\n    while (offset < pixelLen) {\n      var alpha = pixels[offset + 3] / 256;\n      var gradientOffset = Math.floor(alpha * (GRADIENT_LEVELS - 1)) * 4; // Simple optimize to ignore the empty data\n\n      if (alpha > 0) {\n        var gradient = isInRange(alpha) ? gradientInRange : gradientOutOfRange; // Any alpha > 0 will be mapped to [minOpacity, maxOpacity]\n\n        alpha > 0 && (alpha = alpha * diffOpacity + minOpacity);\n        pixels[offset++] = gradient[gradientOffset];\n        pixels[offset++] = gradient[gradientOffset + 1];\n        pixels[offset++] = gradient[gradientOffset + 2];\n        pixels[offset++] = gradient[gradientOffset + 3] * alpha * 256;\n      } else {\n        offset += 4;\n      }\n    }\n\n    ctx.putImageData(imageData, 0, 0);\n    return canvas;\n  };\n  /**\r\n   * get canvas of a black circle brush used for canvas to draw later\r\n   */\n\n\n  HeatmapLayer.prototype._getBrush = function () {\n    var brushCanvas = this._brushCanvas || (this._brushCanvas = platformApi.createCanvas()); // set brush size\n\n    var r = this.pointSize + this.blurSize;\n    var d = r * 2;\n    brushCanvas.width = d;\n    brushCanvas.height = d;\n    var ctx = brushCanvas.getContext('2d');\n    ctx.clearRect(0, 0, d, d); // in order to render shadow without the distinct circle,\n    // draw the distinct circle in an invisible place,\n    // and use shadowOffset to draw shadow in the center of the canvas\n\n    ctx.shadowOffsetX = d;\n    ctx.shadowBlur = this.blurSize; // draw the shadow in black, and use alpha and shadow blur to generate\n    // color in color map\n\n    ctx.shadowColor = '#000'; // draw circle in the left to the canvas\n\n    ctx.beginPath();\n    ctx.arc(-r, r, this.pointSize, 0, Math.PI * 2, true);\n    ctx.closePath();\n    ctx.fill();\n    return brushCanvas;\n  };\n  /**\r\n   * get gradient color map\r\n   * @private\r\n   */\n\n\n  HeatmapLayer.prototype._getGradient = function (colorFunc, state) {\n    var gradientPixels = this._gradientPixels;\n    var pixelsSingleState = gradientPixels[state] || (gradientPixels[state] = new Uint8ClampedArray(256 * 4));\n    var color = [0, 0, 0, 0];\n    var off = 0;\n\n    for (var i = 0; i < 256; i++) {\n      colorFunc[state](i / 255, true, color);\n      pixelsSingleState[off++] = color[0];\n      pixelsSingleState[off++] = color[1];\n      pixelsSingleState[off++] = color[2];\n      pixelsSingleState[off++] = color[3];\n    }\n\n    return pixelsSingleState;\n  };\n\n  return HeatmapLayer;\n}();\n\nexport default HeatmapLayer;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { __extends } from \"tslib\";\nimport * as graphic from '../../util/graphic.js';\nimport { toggleHoverEmphasis } from '../../util/states.js';\nimport HeatmapLayer from './HeatmapLayer.js';\nimport * as zrUtil from 'zrender/lib/core/util.js';\nimport ChartView from '../../view/Chart.js';\nimport { isCoordinateSystemType } from '../../coord/CoordinateSystem.js';\nimport { setLabelStyle, getLabelStatesModels } from '../../label/labelStyle.js';\n\nfunction getIsInPiecewiseRange(dataExtent, pieceList, selected) {\n  var dataSpan = dataExtent[1] - dataExtent[0];\n  pieceList = zrUtil.map(pieceList, function (piece) {\n    return {\n      interval: [(piece.interval[0] - dataExtent[0]) / dataSpan, (piece.interval[1] - dataExtent[0]) / dataSpan]\n    };\n  });\n  var len = pieceList.length;\n  var lastIndex = 0;\n  return function (val) {\n    var i; // Try to find in the location of the last found\n\n    for (i = lastIndex; i < len; i++) {\n      var interval = pieceList[i].interval;\n\n      if (interval[0] <= val && val <= interval[1]) {\n        lastIndex = i;\n        break;\n      }\n    }\n\n    if (i === len) {\n      // Not found, back interation\n      for (i = lastIndex - 1; i >= 0; i--) {\n        var interval = pieceList[i].interval;\n\n        if (interval[0] <= val && val <= interval[1]) {\n          lastIndex = i;\n          break;\n        }\n      }\n    }\n\n    return i >= 0 && i < len && selected[i];\n  };\n}\n\nfunction getIsInContinuousRange(dataExtent, range) {\n  var dataSpan = dataExtent[1] - dataExtent[0];\n  range = [(range[0] - dataExtent[0]) / dataSpan, (range[1] - dataExtent[0]) / dataSpan];\n  return function (val) {\n    return val >= range[0] && val <= range[1];\n  };\n}\n\nfunction isGeoCoordSys(coordSys) {\n  var dimensions = coordSys.dimensions; // Not use coordSys.type === 'geo' because coordSys maybe extended\n\n  return dimensions[0] === 'lng' && dimensions[1] === 'lat';\n}\n\nvar HeatmapView =\n/** @class */\nfunction (_super) {\n  __extends(HeatmapView, _super);\n\n  function HeatmapView() {\n    var _this = _super !== null && _super.apply(this, arguments) || this;\n\n    _this.type = HeatmapView.type;\n    return _this;\n  }\n\n  HeatmapView.prototype.render = function (seriesModel, ecModel, api) {\n    var visualMapOfThisSeries;\n    ecModel.eachComponent('visualMap', function (visualMap) {\n      visualMap.eachTargetSeries(function (targetSeries) {\n        if (targetSeries === seriesModel) {\n          visualMapOfThisSeries = visualMap;\n        }\n      });\n    });\n\n    if (process.env.NODE_ENV !== 'production') {\n      if (!visualMapOfThisSeries) {\n        throw new Error('Heatmap must use with visualMap');\n      }\n    } // Clear previously rendered progressive elements.\n\n\n    this._progressiveEls = null;\n    this.group.removeAll();\n    var coordSys = seriesModel.coordinateSystem;\n\n    if (coordSys.type === 'cartesian2d' || coordSys.type === 'calendar') {\n      this._renderOnCartesianAndCalendar(seriesModel, api, 0, seriesModel.getData().count());\n    } else if (isGeoCoordSys(coordSys)) {\n      this._renderOnGeo(coordSys, seriesModel, visualMapOfThisSeries, api);\n    }\n  };\n\n  HeatmapView.prototype.incrementalPrepareRender = function (seriesModel, ecModel, api) {\n    this.group.removeAll();\n  };\n\n  HeatmapView.prototype.incrementalRender = function (params, seriesModel, ecModel, api) {\n    var coordSys = seriesModel.coordinateSystem;\n\n    if (coordSys) {\n      // geo does not support incremental rendering?\n      if (isGeoCoordSys(coordSys)) {\n        this.render(seriesModel, ecModel, api);\n      } else {\n        this._progressiveEls = [];\n\n        this._renderOnCartesianAndCalendar(seriesModel, api, params.start, params.end, true);\n      }\n    }\n  };\n\n  HeatmapView.prototype.eachRendered = function (cb) {\n    graphic.traverseElements(this._progressiveEls || this.group, cb);\n  };\n\n  HeatmapView.prototype._renderOnCartesianAndCalendar = function (seriesModel, api, start, end, incremental) {\n    var coordSys = seriesModel.coordinateSystem;\n    var isCartesian2d = isCoordinateSystemType(coordSys, 'cartesian2d');\n    var width;\n    var height;\n    var xAxisExtent;\n    var yAxisExtent;\n\n    if (isCartesian2d) {\n      var xAxis = coordSys.getAxis('x');\n      var yAxis = coordSys.getAxis('y');\n\n      if (process.env.NODE_ENV !== 'production') {\n        if (!(xAxis.type === 'category' && yAxis.type === 'category')) {\n          throw new Error('Heatmap on cartesian must have two category axes');\n        }\n\n        if (!(xAxis.onBand && yAxis.onBand)) {\n          throw new Error('Heatmap on cartesian must have two axes with boundaryGap true');\n        }\n      } // add 0.5px to avoid the gaps\n\n\n      width = xAxis.getBandWidth() + .5;\n      height = yAxis.getBandWidth() + .5;\n      xAxisExtent = xAxis.scale.getExtent();\n      yAxisExtent = yAxis.scale.getExtent();\n    }\n\n    var group = this.group;\n    var data = seriesModel.getData();\n    var emphasisStyle = seriesModel.getModel(['emphasis', 'itemStyle']).getItemStyle();\n    var blurStyle = seriesModel.getModel(['blur', 'itemStyle']).getItemStyle();\n    var selectStyle = seriesModel.getModel(['select', 'itemStyle']).getItemStyle();\n    var borderRadius = seriesModel.get(['itemStyle', 'borderRadius']);\n    var labelStatesModels = getLabelStatesModels(seriesModel);\n    var emphasisModel = seriesModel.getModel('emphasis');\n    var focus = emphasisModel.get('focus');\n    var blurScope = emphasisModel.get('blurScope');\n    var emphasisDisabled = emphasisModel.get('disabled');\n    var dataDims = isCartesian2d ? [data.mapDimension('x'), data.mapDimension('y'), data.mapDimension('value')] : [data.mapDimension('time'), data.mapDimension('value')];\n\n    for (var idx = start; idx < end; idx++) {\n      var rect = void 0;\n      var style = data.getItemVisual(idx, 'style');\n\n      if (isCartesian2d) {\n        var dataDimX = data.get(dataDims[0], idx);\n        var dataDimY = data.get(dataDims[1], idx); // Ignore empty data and out of extent data\n\n        if (isNaN(data.get(dataDims[2], idx)) || isNaN(dataDimX) || isNaN(dataDimY) || dataDimX < xAxisExtent[0] || dataDimX > xAxisExtent[1] || dataDimY < yAxisExtent[0] || dataDimY > yAxisExtent[1]) {\n          continue;\n        }\n\n        var point = coordSys.dataToPoint([dataDimX, dataDimY]);\n        rect = new graphic.Rect({\n          shape: {\n            x: point[0] - width / 2,\n            y: point[1] - height / 2,\n            width: width,\n            height: height\n          },\n          style: style\n        });\n      } else {\n        // Ignore empty data\n        if (isNaN(data.get(dataDims[1], idx))) {\n          continue;\n        }\n\n        rect = new graphic.Rect({\n          z2: 1,\n          shape: coordSys.dataToRect([data.get(dataDims[0], idx)]).contentShape,\n          style: style\n        });\n      } // Optimization for large dataset\n\n\n      if (data.hasItemOption) {\n        var itemModel = data.getItemModel(idx);\n        var emphasisModel_1 = itemModel.getModel('emphasis');\n        emphasisStyle = emphasisModel_1.getModel('itemStyle').getItemStyle();\n        blurStyle = itemModel.getModel(['blur', 'itemStyle']).getItemStyle();\n        selectStyle = itemModel.getModel(['select', 'itemStyle']).getItemStyle(); // Each item value struct in the data would be firstly\n        // {\n        //     itemStyle: { borderRadius: [30, 30] },\n        //     value: [2022, 02, 22]\n        // }\n\n        borderRadius = itemModel.get(['itemStyle', 'borderRadius']);\n        focus = emphasisModel_1.get('focus');\n        blurScope = emphasisModel_1.get('blurScope');\n        emphasisDisabled = emphasisModel_1.get('disabled');\n        labelStatesModels = getLabelStatesModels(itemModel);\n      }\n\n      rect.shape.r = borderRadius;\n      var rawValue = seriesModel.getRawValue(idx);\n      var defaultText = '-';\n\n      if (rawValue && rawValue[2] != null) {\n        defaultText = rawValue[2] + '';\n      }\n\n      setLabelStyle(rect, labelStatesModels, {\n        labelFetcher: seriesModel,\n        labelDataIndex: idx,\n        defaultOpacity: style.opacity,\n        defaultText: defaultText\n      });\n      rect.ensureState('emphasis').style = emphasisStyle;\n      rect.ensureState('blur').style = blurStyle;\n      rect.ensureState('select').style = selectStyle;\n      toggleHoverEmphasis(rect, focus, blurScope, emphasisDisabled);\n      rect.incremental = incremental; // PENDING\n\n      if (incremental) {\n        // Rect must use hover layer if it's incremental.\n        rect.states.emphasis.hoverLayer = true;\n      }\n\n      group.add(rect);\n      data.setItemGraphicEl(idx, rect);\n\n      if (this._progressiveEls) {\n        this._progressiveEls.push(rect);\n      }\n    }\n  };\n\n  HeatmapView.prototype._renderOnGeo = function (geo, seriesModel, visualMapModel, api) {\n    var inRangeVisuals = visualMapModel.targetVisuals.inRange;\n    var outOfRangeVisuals = visualMapModel.targetVisuals.outOfRange; // if (!visualMapping) {\n    //     throw new Error('Data range must have color visuals');\n    // }\n\n    var data = seriesModel.getData();\n    var hmLayer = this._hmLayer || this._hmLayer || new HeatmapLayer();\n    hmLayer.blurSize = seriesModel.get('blurSize');\n    hmLayer.pointSize = seriesModel.get('pointSize');\n    hmLayer.minOpacity = seriesModel.get('minOpacity');\n    hmLayer.maxOpacity = seriesModel.get('maxOpacity');\n    var rect = geo.getViewRect().clone();\n    var roamTransform = geo.getRoamTransform();\n    rect.applyTransform(roamTransform); // Clamp on viewport\n\n    var x = Math.max(rect.x, 0);\n    var y = Math.max(rect.y, 0);\n    var x2 = Math.min(rect.width + rect.x, api.getWidth());\n    var y2 = Math.min(rect.height + rect.y, api.getHeight());\n    var width = x2 - x;\n    var height = y2 - y;\n    var dims = [data.mapDimension('lng'), data.mapDimension('lat'), data.mapDimension('value')];\n    var points = data.mapArray(dims, function (lng, lat, value) {\n      var pt = geo.dataToPoint([lng, lat]);\n      pt[0] -= x;\n      pt[1] -= y;\n      pt.push(value);\n      return pt;\n    });\n    var dataExtent = visualMapModel.getExtent();\n    var isInRange = visualMapModel.type === 'visualMap.continuous' ? getIsInContinuousRange(dataExtent, visualMapModel.option.range) : getIsInPiecewiseRange(dataExtent, visualMapModel.getPieceList(), visualMapModel.option.selected);\n    hmLayer.update(points, width, height, inRangeVisuals.color.getNormalizer(), {\n      inRange: inRangeVisuals.color.getColorMapper(),\n      outOfRange: outOfRangeVisuals.color.getColorMapper()\n    }, isInRange);\n    var img = new graphic.Image({\n      style: {\n        width: width,\n        height: height,\n        x: x,\n        y: y,\n        image: hmLayer.canvas\n      },\n      silent: true\n    });\n    this.group.add(img);\n  };\n\n  HeatmapView.type = 'heatmap';\n  return HeatmapView;\n}(ChartView);\n\nexport default HeatmapView;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { __extends } from \"tslib\";\nimport SeriesModel from '../../model/Series.js';\nimport createSeriesData from '../helper/createSeriesData.js';\nimport CoordinateSystem from '../../core/CoordinateSystem.js';\n\nvar HeatmapSeriesModel =\n/** @class */\nfunction (_super) {\n  __extends(HeatmapSeriesModel, _super);\n\n  function HeatmapSeriesModel() {\n    var _this = _super !== null && _super.apply(this, arguments) || this;\n\n    _this.type = HeatmapSeriesModel.type;\n    return _this;\n  }\n\n  HeatmapSeriesModel.prototype.getInitialData = function (option, ecModel) {\n    return createSeriesData(null, this, {\n      generateCoord: 'value'\n    });\n  };\n\n  HeatmapSeriesModel.prototype.preventIncremental = function () {\n    var coordSysCreator = CoordinateSystem.get(this.get('coordinateSystem'));\n\n    if (coordSysCreator && coordSysCreator.dimensions) {\n      return coordSysCreator.dimensions[0] === 'lng' && coordSysCreator.dimensions[1] === 'lat';\n    }\n  };\n\n  HeatmapSeriesModel.type = 'series.heatmap';\n  HeatmapSeriesModel.dependencies = ['grid', 'geo', 'calendar'];\n  HeatmapSeriesModel.defaultOption = {\n    coordinateSystem: 'cartesian2d',\n    // zlevel: 0,\n    z: 2,\n    // Cartesian coordinate system\n    // xAxisIndex: 0,\n    // yAxisIndex: 0,\n    // Geo coordinate system\n    geoIndex: 0,\n    blurSize: 30,\n    pointSize: 20,\n    maxOpacity: 1,\n    minOpacity: 0,\n    select: {\n      itemStyle: {\n        borderColor: '#212121'\n      }\n    }\n  };\n  return HeatmapSeriesModel;\n}(SeriesModel);\n\nexport default HeatmapSeriesModel;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { __extends } from \"tslib\";\nimport * as zrUtil from 'zrender/lib/core/util.js';\nimport * as graphic from '../../util/graphic.js';\nimport { toggleHoverEmphasis } from '../../util/states.js';\nimport { createSymbol, normalizeSymbolOffset } from '../../util/symbol.js';\nimport { parsePercent, isNumeric } from '../../util/number.js';\nimport ChartView from '../../view/Chart.js';\nimport { getDefaultLabel } from '../helper/labelHelper.js';\nimport { setLabelStyle, getLabelStatesModels } from '../../label/labelStyle.js';\nimport ZRImage from 'zrender/lib/graphic/Image.js';\nimport { getECData } from '../../util/innerStore.js';\nvar BAR_BORDER_WIDTH_QUERY = ['itemStyle', 'borderWidth']; // index: +isHorizontal\n\nvar LAYOUT_ATTRS = [{\n  xy: 'x',\n  wh: 'width',\n  index: 0,\n  posDesc: ['left', 'right']\n}, {\n  xy: 'y',\n  wh: 'height',\n  index: 1,\n  posDesc: ['top', 'bottom']\n}];\nvar pathForLineWidth = new graphic.Circle();\n\nvar PictorialBarView =\n/** @class */\nfunction (_super) {\n  __extends(PictorialBarView, _super);\n\n  function PictorialBarView() {\n    var _this = _super !== null && _super.apply(this, arguments) || this;\n\n    _this.type = PictorialBarView.type;\n    return _this;\n  }\n\n  PictorialBarView.prototype.render = function (seriesModel, ecModel, api) {\n    var group = this.group;\n    var data = seriesModel.getData();\n    var oldData = this._data;\n    var cartesian = seriesModel.coordinateSystem;\n    var baseAxis = cartesian.getBaseAxis();\n    var isHorizontal = baseAxis.isHorizontal();\n    var coordSysRect = cartesian.master.getRect();\n    var opt = {\n      ecSize: {\n        width: api.getWidth(),\n        height: api.getHeight()\n      },\n      seriesModel: seriesModel,\n      coordSys: cartesian,\n      coordSysExtent: [[coordSysRect.x, coordSysRect.x + coordSysRect.width], [coordSysRect.y, coordSysRect.y + coordSysRect.height]],\n      isHorizontal: isHorizontal,\n      valueDim: LAYOUT_ATTRS[+isHorizontal],\n      categoryDim: LAYOUT_ATTRS[1 - +isHorizontal]\n    };\n    data.diff(oldData).add(function (dataIndex) {\n      if (!data.hasValue(dataIndex)) {\n        return;\n      }\n\n      var itemModel = getItemModel(data, dataIndex);\n      var symbolMeta = getSymbolMeta(data, dataIndex, itemModel, opt);\n      var bar = createBar(data, opt, symbolMeta);\n      data.setItemGraphicEl(dataIndex, bar);\n      group.add(bar);\n      updateCommon(bar, opt, symbolMeta);\n    }).update(function (newIndex, oldIndex) {\n      var bar = oldData.getItemGraphicEl(oldIndex);\n\n      if (!data.hasValue(newIndex)) {\n        group.remove(bar);\n        return;\n      }\n\n      var itemModel = getItemModel(data, newIndex);\n      var symbolMeta = getSymbolMeta(data, newIndex, itemModel, opt);\n      var pictorialShapeStr = getShapeStr(data, symbolMeta);\n\n      if (bar && pictorialShapeStr !== bar.__pictorialShapeStr) {\n        group.remove(bar);\n        data.setItemGraphicEl(newIndex, null);\n        bar = null;\n      }\n\n      if (bar) {\n        updateBar(bar, opt, symbolMeta);\n      } else {\n        bar = createBar(data, opt, symbolMeta, true);\n      }\n\n      data.setItemGraphicEl(newIndex, bar);\n      bar.__pictorialSymbolMeta = symbolMeta; // Add back\n\n      group.add(bar);\n      updateCommon(bar, opt, symbolMeta);\n    }).remove(function (dataIndex) {\n      var bar = oldData.getItemGraphicEl(dataIndex);\n      bar && removeBar(oldData, dataIndex, bar.__pictorialSymbolMeta.animationModel, bar);\n    }).execute();\n    this._data = data;\n    return this.group;\n  };\n\n  PictorialBarView.prototype.remove = function (ecModel, api) {\n    var group = this.group;\n    var data = this._data;\n\n    if (ecModel.get('animation')) {\n      if (data) {\n        data.eachItemGraphicEl(function (bar) {\n          removeBar(data, getECData(bar).dataIndex, ecModel, bar);\n        });\n      }\n    } else {\n      group.removeAll();\n    }\n  };\n\n  PictorialBarView.type = 'pictorialBar';\n  return PictorialBarView;\n}(ChartView); // Set or calculate default value about symbol, and calculate layout info.\n\n\nfunction getSymbolMeta(data, dataIndex, itemModel, opt) {\n  var layout = data.getItemLayout(dataIndex);\n  var symbolRepeat = itemModel.get('symbolRepeat');\n  var symbolClip = itemModel.get('symbolClip');\n  var symbolPosition = itemModel.get('symbolPosition') || 'start';\n  var symbolRotate = itemModel.get('symbolRotate');\n  var rotation = (symbolRotate || 0) * Math.PI / 180 || 0;\n  var symbolPatternSize = itemModel.get('symbolPatternSize') || 2;\n  var isAnimationEnabled = itemModel.isAnimationEnabled();\n  var symbolMeta = {\n    dataIndex: dataIndex,\n    layout: layout,\n    itemModel: itemModel,\n    symbolType: data.getItemVisual(dataIndex, 'symbol') || 'circle',\n    style: data.getItemVisual(dataIndex, 'style'),\n    symbolClip: symbolClip,\n    symbolRepeat: symbolRepeat,\n    symbolRepeatDirection: itemModel.get('symbolRepeatDirection'),\n    symbolPatternSize: symbolPatternSize,\n    rotation: rotation,\n    animationModel: isAnimationEnabled ? itemModel : null,\n    hoverScale: isAnimationEnabled && itemModel.get(['emphasis', 'scale']),\n    z2: itemModel.getShallow('z', true) || 0\n  };\n  prepareBarLength(itemModel, symbolRepeat, layout, opt, symbolMeta);\n  prepareSymbolSize(data, dataIndex, layout, symbolRepeat, symbolClip, symbolMeta.boundingLength, symbolMeta.pxSign, symbolPatternSize, opt, symbolMeta);\n  prepareLineWidth(itemModel, symbolMeta.symbolScale, rotation, opt, symbolMeta);\n  var symbolSize = symbolMeta.symbolSize;\n  var symbolOffset = normalizeSymbolOffset(itemModel.get('symbolOffset'), symbolSize);\n  prepareLayoutInfo(itemModel, symbolSize, layout, symbolRepeat, symbolClip, symbolOffset, symbolPosition, symbolMeta.valueLineWidth, symbolMeta.boundingLength, symbolMeta.repeatCutLength, opt, symbolMeta);\n  return symbolMeta;\n} // bar length can be negative.\n\n\nfunction prepareBarLength(itemModel, symbolRepeat, layout, opt, outputSymbolMeta) {\n  var valueDim = opt.valueDim;\n  var symbolBoundingData = itemModel.get('symbolBoundingData');\n  var valueAxis = opt.coordSys.getOtherAxis(opt.coordSys.getBaseAxis());\n  var zeroPx = valueAxis.toGlobalCoord(valueAxis.dataToCoord(0));\n  var pxSignIdx = 1 - +(layout[valueDim.wh] <= 0);\n  var boundingLength;\n\n  if (zrUtil.isArray(symbolBoundingData)) {\n    var symbolBoundingExtent = [convertToCoordOnAxis(valueAxis, symbolBoundingData[0]) - zeroPx, convertToCoordOnAxis(valueAxis, symbolBoundingData[1]) - zeroPx];\n    symbolBoundingExtent[1] < symbolBoundingExtent[0] && symbolBoundingExtent.reverse();\n    boundingLength = symbolBoundingExtent[pxSignIdx];\n  } else if (symbolBoundingData != null) {\n    boundingLength = convertToCoordOnAxis(valueAxis, symbolBoundingData) - zeroPx;\n  } else if (symbolRepeat) {\n    boundingLength = opt.coordSysExtent[valueDim.index][pxSignIdx] - zeroPx;\n  } else {\n    boundingLength = layout[valueDim.wh];\n  }\n\n  outputSymbolMeta.boundingLength = boundingLength;\n\n  if (symbolRepeat) {\n    outputSymbolMeta.repeatCutLength = layout[valueDim.wh];\n  } // if 'pxSign' means sign of pixel,  it can't be zero, or symbolScale will be zero\n  // and when borderWidth be settled, the actual linewidth will be NaN\n\n\n  outputSymbolMeta.pxSign = boundingLength > 0 ? 1 : -1;\n}\n\nfunction convertToCoordOnAxis(axis, value) {\n  return axis.toGlobalCoord(axis.dataToCoord(axis.scale.parse(value)));\n} // Support ['100%', '100%']\n\n\nfunction prepareSymbolSize(data, dataIndex, layout, symbolRepeat, symbolClip, boundingLength, pxSign, symbolPatternSize, opt, outputSymbolMeta) {\n  var valueDim = opt.valueDim;\n  var categoryDim = opt.categoryDim;\n  var categorySize = Math.abs(layout[categoryDim.wh]);\n  var symbolSize = data.getItemVisual(dataIndex, 'symbolSize');\n  var parsedSymbolSize;\n\n  if (zrUtil.isArray(symbolSize)) {\n    parsedSymbolSize = symbolSize.slice();\n  } else {\n    if (symbolSize == null) {\n      // will parse to number below\n      parsedSymbolSize = ['100%', '100%'];\n    } else {\n      parsedSymbolSize = [symbolSize, symbolSize];\n    }\n  } // Note: percentage symbolSize (like '100%') do not consider lineWidth, because it is\n  // to complicated to calculate real percent value if considering scaled lineWidth.\n  // So the actual size will bigger than layout size if lineWidth is bigger than zero,\n  // which can be tolerated in pictorial chart.\n\n\n  parsedSymbolSize[categoryDim.index] = parsePercent(parsedSymbolSize[categoryDim.index], categorySize);\n  parsedSymbolSize[valueDim.index] = parsePercent(parsedSymbolSize[valueDim.index], symbolRepeat ? categorySize : Math.abs(boundingLength));\n  outputSymbolMeta.symbolSize = parsedSymbolSize; // If x or y is less than zero, show reversed shape.\n\n  var symbolScale = outputSymbolMeta.symbolScale = [parsedSymbolSize[0] / symbolPatternSize, parsedSymbolSize[1] / symbolPatternSize]; // Follow convention, 'right' and 'top' is the normal scale.\n\n  symbolScale[valueDim.index] *= (opt.isHorizontal ? -1 : 1) * pxSign;\n}\n\nfunction prepareLineWidth(itemModel, symbolScale, rotation, opt, outputSymbolMeta) {\n  // In symbols are drawn with scale, so do not need to care about the case that width\n  // or height are too small. But symbol use strokeNoScale, where acture lineWidth should\n  // be calculated.\n  var valueLineWidth = itemModel.get(BAR_BORDER_WIDTH_QUERY) || 0;\n\n  if (valueLineWidth) {\n    pathForLineWidth.attr({\n      scaleX: symbolScale[0],\n      scaleY: symbolScale[1],\n      rotation: rotation\n    });\n    pathForLineWidth.updateTransform();\n    valueLineWidth /= pathForLineWidth.getLineScale();\n    valueLineWidth *= symbolScale[opt.valueDim.index];\n  }\n\n  outputSymbolMeta.valueLineWidth = valueLineWidth || 0;\n}\n\nfunction prepareLayoutInfo(itemModel, symbolSize, layout, symbolRepeat, symbolClip, symbolOffset, symbolPosition, valueLineWidth, boundingLength, repeatCutLength, opt, outputSymbolMeta) {\n  var categoryDim = opt.categoryDim;\n  var valueDim = opt.valueDim;\n  var pxSign = outputSymbolMeta.pxSign;\n  var unitLength = Math.max(symbolSize[valueDim.index] + valueLineWidth, 0);\n  var pathLen = unitLength; // Note: rotation will not effect the layout of symbols, because user may\n  // want symbols to rotate on its center, which should not be translated\n  // when rotating.\n\n  if (symbolRepeat) {\n    var absBoundingLength = Math.abs(boundingLength);\n    var symbolMargin = zrUtil.retrieve(itemModel.get('symbolMargin'), '15%') + '';\n    var hasEndGap = false;\n\n    if (symbolMargin.lastIndexOf('!') === symbolMargin.length - 1) {\n      hasEndGap = true;\n      symbolMargin = symbolMargin.slice(0, symbolMargin.length - 1);\n    }\n\n    var symbolMarginNumeric = parsePercent(symbolMargin, symbolSize[valueDim.index]);\n    var uLenWithMargin = Math.max(unitLength + symbolMarginNumeric * 2, 0); // When symbol margin is less than 0, margin at both ends will be subtracted\n    // to ensure that all of the symbols will not be overflow the given area.\n\n    var endFix = hasEndGap ? 0 : symbolMarginNumeric * 2; // Both final repeatTimes and final symbolMarginNumeric area calculated based on\n    // boundingLength.\n\n    var repeatSpecified = isNumeric(symbolRepeat);\n    var repeatTimes = repeatSpecified ? symbolRepeat : toIntTimes((absBoundingLength + endFix) / uLenWithMargin); // Adjust calculate margin, to ensure each symbol is displayed\n    // entirely in the given layout area.\n\n    var mDiff = absBoundingLength - repeatTimes * unitLength;\n    symbolMarginNumeric = mDiff / 2 / (hasEndGap ? repeatTimes : Math.max(repeatTimes - 1, 1));\n    uLenWithMargin = unitLength + symbolMarginNumeric * 2;\n    endFix = hasEndGap ? 0 : symbolMarginNumeric * 2; // Update repeatTimes when not all symbol will be shown.\n\n    if (!repeatSpecified && symbolRepeat !== 'fixed') {\n      repeatTimes = repeatCutLength ? toIntTimes((Math.abs(repeatCutLength) + endFix) / uLenWithMargin) : 0;\n    }\n\n    pathLen = repeatTimes * uLenWithMargin - endFix;\n    outputSymbolMeta.repeatTimes = repeatTimes;\n    outputSymbolMeta.symbolMargin = symbolMarginNumeric;\n  }\n\n  var sizeFix = pxSign * (pathLen / 2);\n  var pathPosition = outputSymbolMeta.pathPosition = [];\n  pathPosition[categoryDim.index] = layout[categoryDim.wh] / 2;\n  pathPosition[valueDim.index] = symbolPosition === 'start' ? sizeFix : symbolPosition === 'end' ? boundingLength - sizeFix : boundingLength / 2; // 'center'\n\n  if (symbolOffset) {\n    pathPosition[0] += symbolOffset[0];\n    pathPosition[1] += symbolOffset[1];\n  }\n\n  var bundlePosition = outputSymbolMeta.bundlePosition = [];\n  bundlePosition[categoryDim.index] = layout[categoryDim.xy];\n  bundlePosition[valueDim.index] = layout[valueDim.xy];\n  var barRectShape = outputSymbolMeta.barRectShape = zrUtil.extend({}, layout);\n  barRectShape[valueDim.wh] = pxSign * Math.max(Math.abs(layout[valueDim.wh]), Math.abs(pathPosition[valueDim.index] + sizeFix));\n  barRectShape[categoryDim.wh] = layout[categoryDim.wh];\n  var clipShape = outputSymbolMeta.clipShape = {}; // Consider that symbol may be overflow layout rect.\n\n  clipShape[categoryDim.xy] = -layout[categoryDim.xy];\n  clipShape[categoryDim.wh] = opt.ecSize[categoryDim.wh];\n  clipShape[valueDim.xy] = 0;\n  clipShape[valueDim.wh] = layout[valueDim.wh];\n}\n\nfunction createPath(symbolMeta) {\n  var symbolPatternSize = symbolMeta.symbolPatternSize;\n  var path = createSymbol( // Consider texture img, make a big size.\n  symbolMeta.symbolType, -symbolPatternSize / 2, -symbolPatternSize / 2, symbolPatternSize, symbolPatternSize);\n  path.attr({\n    culling: true\n  });\n  path.type !== 'image' && path.setStyle({\n    strokeNoScale: true\n  });\n  return path;\n}\n\nfunction createOrUpdateRepeatSymbols(bar, opt, symbolMeta, isUpdate) {\n  var bundle = bar.__pictorialBundle;\n  var symbolSize = symbolMeta.symbolSize;\n  var valueLineWidth = symbolMeta.valueLineWidth;\n  var pathPosition = symbolMeta.pathPosition;\n  var valueDim = opt.valueDim;\n  var repeatTimes = symbolMeta.repeatTimes || 0;\n  var index = 0;\n  var unit = symbolSize[opt.valueDim.index] + valueLineWidth + symbolMeta.symbolMargin * 2;\n  eachPath(bar, function (path) {\n    path.__pictorialAnimationIndex = index;\n    path.__pictorialRepeatTimes = repeatTimes;\n\n    if (index < repeatTimes) {\n      updateAttr(path, null, makeTarget(index), symbolMeta, isUpdate);\n    } else {\n      updateAttr(path, null, {\n        scaleX: 0,\n        scaleY: 0\n      }, symbolMeta, isUpdate, function () {\n        bundle.remove(path);\n      });\n    } // updateHoverAnimation(path, symbolMeta);\n\n\n    index++;\n  });\n\n  for (; index < repeatTimes; index++) {\n    var path = createPath(symbolMeta);\n    path.__pictorialAnimationIndex = index;\n    path.__pictorialRepeatTimes = repeatTimes;\n    bundle.add(path);\n    var target = makeTarget(index);\n    updateAttr(path, {\n      x: target.x,\n      y: target.y,\n      scaleX: 0,\n      scaleY: 0\n    }, {\n      scaleX: target.scaleX,\n      scaleY: target.scaleY,\n      rotation: target.rotation\n    }, symbolMeta, isUpdate);\n  }\n\n  function makeTarget(index) {\n    var position = pathPosition.slice(); // (start && pxSign > 0) || (end && pxSign < 0): i = repeatTimes - index\n    // Otherwise: i = index;\n\n    var pxSign = symbolMeta.pxSign;\n    var i = index;\n\n    if (symbolMeta.symbolRepeatDirection === 'start' ? pxSign > 0 : pxSign < 0) {\n      i = repeatTimes - 1 - index;\n    }\n\n    position[valueDim.index] = unit * (i - repeatTimes / 2 + 0.5) + pathPosition[valueDim.index];\n    return {\n      x: position[0],\n      y: position[1],\n      scaleX: symbolMeta.symbolScale[0],\n      scaleY: symbolMeta.symbolScale[1],\n      rotation: symbolMeta.rotation\n    };\n  }\n}\n\nfunction createOrUpdateSingleSymbol(bar, opt, symbolMeta, isUpdate) {\n  var bundle = bar.__pictorialBundle;\n  var mainPath = bar.__pictorialMainPath;\n\n  if (!mainPath) {\n    mainPath = bar.__pictorialMainPath = createPath(symbolMeta);\n    bundle.add(mainPath);\n    updateAttr(mainPath, {\n      x: symbolMeta.pathPosition[0],\n      y: symbolMeta.pathPosition[1],\n      scaleX: 0,\n      scaleY: 0,\n      rotation: symbolMeta.rotation\n    }, {\n      scaleX: symbolMeta.symbolScale[0],\n      scaleY: symbolMeta.symbolScale[1]\n    }, symbolMeta, isUpdate);\n  } else {\n    updateAttr(mainPath, null, {\n      x: symbolMeta.pathPosition[0],\n      y: symbolMeta.pathPosition[1],\n      scaleX: symbolMeta.symbolScale[0],\n      scaleY: symbolMeta.symbolScale[1],\n      rotation: symbolMeta.rotation\n    }, symbolMeta, isUpdate);\n  }\n} // bar rect is used for label.\n\n\nfunction createOrUpdateBarRect(bar, symbolMeta, isUpdate) {\n  var rectShape = zrUtil.extend({}, symbolMeta.barRectShape);\n  var barRect = bar.__pictorialBarRect;\n\n  if (!barRect) {\n    barRect = bar.__pictorialBarRect = new graphic.Rect({\n      z2: 2,\n      shape: rectShape,\n      silent: true,\n      style: {\n        stroke: 'transparent',\n        fill: 'transparent',\n        lineWidth: 0\n      }\n    });\n    barRect.disableMorphing = true;\n    bar.add(barRect);\n  } else {\n    updateAttr(barRect, null, {\n      shape: rectShape\n    }, symbolMeta, isUpdate);\n  }\n}\n\nfunction createOrUpdateClip(bar, opt, symbolMeta, isUpdate) {\n  // If not clip, symbol will be remove and rebuilt.\n  if (symbolMeta.symbolClip) {\n    var clipPath = bar.__pictorialClipPath;\n    var clipShape = zrUtil.extend({}, symbolMeta.clipShape);\n    var valueDim = opt.valueDim;\n    var animationModel = symbolMeta.animationModel;\n    var dataIndex = symbolMeta.dataIndex;\n\n    if (clipPath) {\n      graphic.updateProps(clipPath, {\n        shape: clipShape\n      }, animationModel, dataIndex);\n    } else {\n      clipShape[valueDim.wh] = 0;\n      clipPath = new graphic.Rect({\n        shape: clipShape\n      });\n\n      bar.__pictorialBundle.setClipPath(clipPath);\n\n      bar.__pictorialClipPath = clipPath;\n      var target = {};\n      target[valueDim.wh] = symbolMeta.clipShape[valueDim.wh];\n      graphic[isUpdate ? 'updateProps' : 'initProps'](clipPath, {\n        shape: target\n      }, animationModel, dataIndex);\n    }\n  }\n}\n\nfunction getItemModel(data, dataIndex) {\n  var itemModel = data.getItemModel(dataIndex);\n  itemModel.getAnimationDelayParams = getAnimationDelayParams;\n  itemModel.isAnimationEnabled = isAnimationEnabled;\n  return itemModel;\n}\n\nfunction getAnimationDelayParams(path) {\n  // The order is the same as the z-order, see `symbolRepeatDiretion`.\n  return {\n    index: path.__pictorialAnimationIndex,\n    count: path.__pictorialRepeatTimes\n  };\n}\n\nfunction isAnimationEnabled() {\n  // `animation` prop can be set on itemModel in pictorial bar chart.\n  return this.parentModel.isAnimationEnabled() && !!this.getShallow('animation');\n}\n\nfunction createBar(data, opt, symbolMeta, isUpdate) {\n  // bar is the main element for each data.\n  var bar = new graphic.Group(); // bundle is used for location and clip.\n\n  var bundle = new graphic.Group();\n  bar.add(bundle);\n  bar.__pictorialBundle = bundle;\n  bundle.x = symbolMeta.bundlePosition[0];\n  bundle.y = symbolMeta.bundlePosition[1];\n\n  if (symbolMeta.symbolRepeat) {\n    createOrUpdateRepeatSymbols(bar, opt, symbolMeta);\n  } else {\n    createOrUpdateSingleSymbol(bar, opt, symbolMeta);\n  }\n\n  createOrUpdateBarRect(bar, symbolMeta, isUpdate);\n  createOrUpdateClip(bar, opt, symbolMeta, isUpdate);\n  bar.__pictorialShapeStr = getShapeStr(data, symbolMeta);\n  bar.__pictorialSymbolMeta = symbolMeta;\n  return bar;\n}\n\nfunction updateBar(bar, opt, symbolMeta) {\n  var animationModel = symbolMeta.animationModel;\n  var dataIndex = symbolMeta.dataIndex;\n  var bundle = bar.__pictorialBundle;\n  graphic.updateProps(bundle, {\n    x: symbolMeta.bundlePosition[0],\n    y: symbolMeta.bundlePosition[1]\n  }, animationModel, dataIndex);\n\n  if (symbolMeta.symbolRepeat) {\n    createOrUpdateRepeatSymbols(bar, opt, symbolMeta, true);\n  } else {\n    createOrUpdateSingleSymbol(bar, opt, symbolMeta, true);\n  }\n\n  createOrUpdateBarRect(bar, symbolMeta, true);\n  createOrUpdateClip(bar, opt, symbolMeta, true);\n}\n\nfunction removeBar(data, dataIndex, animationModel, bar) {\n  // Not show text when animating\n  var labelRect = bar.__pictorialBarRect;\n  labelRect && labelRect.removeTextContent();\n  var paths = [];\n  eachPath(bar, function (path) {\n    paths.push(path);\n  });\n  bar.__pictorialMainPath && paths.push(bar.__pictorialMainPath); // I do not find proper remove animation for clip yet.\n\n  bar.__pictorialClipPath && (animationModel = null);\n  zrUtil.each(paths, function (path) {\n    graphic.removeElement(path, {\n      scaleX: 0,\n      scaleY: 0\n    }, animationModel, dataIndex, function () {\n      bar.parent && bar.parent.remove(bar);\n    });\n  });\n  data.setItemGraphicEl(dataIndex, null);\n}\n\nfunction getShapeStr(data, symbolMeta) {\n  return [data.getItemVisual(symbolMeta.dataIndex, 'symbol') || 'none', !!symbolMeta.symbolRepeat, !!symbolMeta.symbolClip].join(':');\n}\n\nfunction eachPath(bar, cb, context) {\n  // Do not use Group#eachChild, because it do not support remove.\n  zrUtil.each(bar.__pictorialBundle.children(), function (el) {\n    el !== bar.__pictorialBarRect && cb.call(context, el);\n  });\n}\n\nfunction updateAttr(el, immediateAttrs, animationAttrs, symbolMeta, isUpdate, cb) {\n  immediateAttrs && el.attr(immediateAttrs); // when symbolCip used, only clip path has init animation, otherwise it would be weird effect.\n\n  if (symbolMeta.symbolClip && !isUpdate) {\n    animationAttrs && el.attr(animationAttrs);\n  } else {\n    animationAttrs && graphic[isUpdate ? 'updateProps' : 'initProps'](el, animationAttrs, symbolMeta.animationModel, symbolMeta.dataIndex, cb);\n  }\n}\n\nfunction updateCommon(bar, opt, symbolMeta) {\n  var dataIndex = symbolMeta.dataIndex;\n  var itemModel = symbolMeta.itemModel; // Color must be excluded.\n  // Because symbol provide setColor individually to set fill and stroke\n\n  var emphasisModel = itemModel.getModel('emphasis');\n  var emphasisStyle = emphasisModel.getModel('itemStyle').getItemStyle();\n  var blurStyle = itemModel.getModel(['blur', 'itemStyle']).getItemStyle();\n  var selectStyle = itemModel.getModel(['select', 'itemStyle']).getItemStyle();\n  var cursorStyle = itemModel.getShallow('cursor');\n  var focus = emphasisModel.get('focus');\n  var blurScope = emphasisModel.get('blurScope');\n  var hoverScale = emphasisModel.get('scale');\n  eachPath(bar, function (path) {\n    if (path instanceof ZRImage) {\n      var pathStyle = path.style;\n      path.useStyle(zrUtil.extend({\n        // TODO other properties like dx, dy ?\n        image: pathStyle.image,\n        x: pathStyle.x,\n        y: pathStyle.y,\n        width: pathStyle.width,\n        height: pathStyle.height\n      }, symbolMeta.style));\n    } else {\n      path.useStyle(symbolMeta.style);\n    }\n\n    var emphasisState = path.ensureState('emphasis');\n    emphasisState.style = emphasisStyle;\n\n    if (hoverScale) {\n      // NOTE: Must after scale is set after updateAttr\n      emphasisState.scaleX = path.scaleX * 1.1;\n      emphasisState.scaleY = path.scaleY * 1.1;\n    }\n\n    path.ensureState('blur').style = blurStyle;\n    path.ensureState('select').style = selectStyle;\n    cursorStyle && (path.cursor = cursorStyle);\n    path.z2 = symbolMeta.z2;\n  });\n  var barPositionOutside = opt.valueDim.posDesc[+(symbolMeta.boundingLength > 0)];\n  var barRect = bar.__pictorialBarRect;\n  setLabelStyle(barRect, getLabelStatesModels(itemModel), {\n    labelFetcher: opt.seriesModel,\n    labelDataIndex: dataIndex,\n    defaultText: getDefaultLabel(opt.seriesModel.getData(), dataIndex),\n    inheritColor: symbolMeta.style.fill,\n    defaultOpacity: symbolMeta.style.opacity,\n    defaultOutsidePosition: barPositionOutside\n  });\n  toggleHoverEmphasis(bar, focus, blurScope, emphasisModel.get('disabled'));\n}\n\nfunction toIntTimes(times) {\n  var roundedTimes = Math.round(times); // Escapse accurate error\n\n  return Math.abs(times - roundedTimes) < 1e-4 ? roundedTimes : Math.ceil(times);\n}\n\nexport default PictorialBarView;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { __extends } from \"tslib\";\nimport BaseBarSeriesModel from './BaseBarSeries.js';\nimport { inheritDefaultOption } from '../../util/component.js';\n\nvar PictorialBarSeriesModel =\n/** @class */\nfunction (_super) {\n  __extends(PictorialBarSeriesModel, _super);\n\n  function PictorialBarSeriesModel() {\n    var _this = _super !== null && _super.apply(this, arguments) || this;\n\n    _this.type = PictorialBarSeriesModel.type;\n    _this.hasSymbolVisual = true;\n    _this.defaultSymbol = 'roundRect';\n    return _this;\n  }\n\n  PictorialBarSeriesModel.prototype.getInitialData = function (option) {\n    // Disable stack.\n    option.stack = null;\n    return _super.prototype.getInitialData.apply(this, arguments);\n  };\n\n  PictorialBarSeriesModel.type = 'series.pictorialBar';\n  PictorialBarSeriesModel.dependencies = ['grid'];\n  PictorialBarSeriesModel.defaultOption = inheritDefaultOption(BaseBarSeriesModel.defaultOption, {\n    symbol: 'circle',\n    symbolSize: null,\n    symbolRotate: null,\n    symbolPosition: null,\n    symbolOffset: null,\n    symbolMargin: null,\n    symbolRepeat: false,\n    symbolRepeatDirection: 'end',\n    symbolClip: false,\n    symbolBoundingData: null,\n    symbolPatternSize: 400,\n    barGap: '-100%',\n    // z can be set in data item, which is z2 actually.\n    // Disable progressive\n    progressive: 0,\n    emphasis: {\n      // By default pictorialBar do not hover scale. Hover scale is not suitable\n      // for the case that both has foreground and background.\n      scale: false\n    },\n    select: {\n      itemStyle: {\n        borderColor: '#212121'\n      }\n    }\n  });\n  return PictorialBarSeriesModel;\n}(BaseBarSeriesModel);\n\nexport default PictorialBarSeriesModel;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { __extends } from \"tslib\";\nimport { ECPolygon } from '../line/poly.js';\nimport * as graphic from '../../util/graphic.js';\nimport { setStatesStylesFromModel, toggleHoverEmphasis } from '../../util/states.js';\nimport { setLabelStyle, getLabelStatesModels } from '../../label/labelStyle.js';\nimport { bind } from 'zrender/lib/core/util.js';\nimport DataDiffer from '../../data/DataDiffer.js';\nimport ChartView from '../../view/Chart.js';\nimport { saveOldStyle } from '../../animation/basicTransition.js';\n\nvar ThemeRiverView =\n/** @class */\nfunction (_super) {\n  __extends(ThemeRiverView, _super);\n\n  function ThemeRiverView() {\n    var _this = _super !== null && _super.apply(this, arguments) || this;\n\n    _this.type = ThemeRiverView.type;\n    _this._layers = [];\n    return _this;\n  }\n\n  ThemeRiverView.prototype.render = function (seriesModel, ecModel, api) {\n    var data = seriesModel.getData();\n    var self = this;\n    var group = this.group;\n    var layersSeries = seriesModel.getLayerSeries();\n    var layoutInfo = data.getLayout('layoutInfo');\n    var rect = layoutInfo.rect;\n    var boundaryGap = layoutInfo.boundaryGap;\n    group.x = 0;\n    group.y = rect.y + boundaryGap[0];\n\n    function keyGetter(item) {\n      return item.name;\n    }\n\n    var dataDiffer = new DataDiffer(this._layersSeries || [], layersSeries, keyGetter, keyGetter);\n    var newLayersGroups = [];\n    dataDiffer.add(bind(process, this, 'add')).update(bind(process, this, 'update')).remove(bind(process, this, 'remove')).execute();\n\n    function process(status, idx, oldIdx) {\n      var oldLayersGroups = self._layers;\n\n      if (status === 'remove') {\n        group.remove(oldLayersGroups[idx]);\n        return;\n      }\n\n      var points0 = [];\n      var points1 = [];\n      var style;\n      var indices = layersSeries[idx].indices;\n      var j = 0;\n\n      for (; j < indices.length; j++) {\n        var layout = data.getItemLayout(indices[j]);\n        var x = layout.x;\n        var y0 = layout.y0;\n        var y = layout.y;\n        points0.push(x, y0);\n        points1.push(x, y0 + y);\n        style = data.getItemVisual(indices[j], 'style');\n      }\n\n      var polygon;\n      var textLayout = data.getItemLayout(indices[0]);\n      var labelModel = seriesModel.getModel('label');\n      var margin = labelModel.get('margin');\n      var emphasisModel = seriesModel.getModel('emphasis');\n\n      if (status === 'add') {\n        var layerGroup = newLayersGroups[idx] = new graphic.Group();\n        polygon = new ECPolygon({\n          shape: {\n            points: points0,\n            stackedOnPoints: points1,\n            smooth: 0.4,\n            stackedOnSmooth: 0.4,\n            smoothConstraint: false\n          },\n          z2: 0\n        });\n        layerGroup.add(polygon);\n        group.add(layerGroup);\n\n        if (seriesModel.isAnimationEnabled()) {\n          polygon.setClipPath(createGridClipShape(polygon.getBoundingRect(), seriesModel, function () {\n            polygon.removeClipPath();\n          }));\n        }\n      } else {\n        var layerGroup = oldLayersGroups[oldIdx];\n        polygon = layerGroup.childAt(0);\n        group.add(layerGroup);\n        newLayersGroups[idx] = layerGroup;\n        graphic.updateProps(polygon, {\n          shape: {\n            points: points0,\n            stackedOnPoints: points1\n          }\n        }, seriesModel);\n        saveOldStyle(polygon);\n      }\n\n      setLabelStyle(polygon, getLabelStatesModels(seriesModel), {\n        labelDataIndex: indices[j - 1],\n        defaultText: data.getName(indices[j - 1]),\n        inheritColor: style.fill\n      }, {\n        normal: {\n          verticalAlign: 'middle' // align: 'right'\n\n        }\n      });\n      polygon.setTextConfig({\n        position: null,\n        local: true\n      });\n      var labelEl = polygon.getTextContent(); // TODO More label position options.\n\n      if (labelEl) {\n        labelEl.x = textLayout.x - margin;\n        labelEl.y = textLayout.y0 + textLayout.y / 2;\n      }\n\n      polygon.useStyle(style);\n      data.setItemGraphicEl(idx, polygon);\n      setStatesStylesFromModel(polygon, seriesModel);\n      toggleHoverEmphasis(polygon, emphasisModel.get('focus'), emphasisModel.get('blurScope'), emphasisModel.get('disabled'));\n    }\n\n    this._layersSeries = layersSeries;\n    this._layers = newLayersGroups;\n  };\n\n  ThemeRiverView.type = 'themeRiver';\n  return ThemeRiverView;\n}(ChartView);\n\n; // add animation to the view\n\nfunction createGridClipShape(rect, seriesModel, cb) {\n  var rectEl = new graphic.Rect({\n    shape: {\n      x: rect.x - 10,\n      y: rect.y - 10,\n      width: 0,\n      height: rect.height + 20\n    }\n  });\n  graphic.initProps(rectEl, {\n    shape: {\n      x: rect.x - 50,\n      width: rect.width + 100,\n      height: rect.height + 20\n    }\n  }, seriesModel, cb);\n  return rectEl;\n}\n\nexport default ThemeRiverView;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { __extends } from \"tslib\";\nimport SeriesModel from '../../model/Series.js';\nimport prepareSeriesDataSchema from '../../data/helper/createDimensions.js';\nimport { getDimensionTypeByAxis } from '../../data/helper/dimensionHelper.js';\nimport SeriesData from '../../data/SeriesData.js';\nimport * as zrUtil from 'zrender/lib/core/util.js';\nimport { groupData, SINGLE_REFERRING } from '../../util/model.js';\nimport LegendVisualProvider from '../../visual/LegendVisualProvider.js';\nimport { createTooltipMarkup } from '../../component/tooltip/tooltipMarkup.js';\nvar DATA_NAME_INDEX = 2;\n\nvar ThemeRiverSeriesModel =\n/** @class */\nfunction (_super) {\n  __extends(ThemeRiverSeriesModel, _super);\n\n  function ThemeRiverSeriesModel() {\n    var _this = _super !== null && _super.apply(this, arguments) || this;\n\n    _this.type = ThemeRiverSeriesModel.type;\n    return _this;\n  }\n  /**\r\n   * @override\r\n   */\n\n\n  ThemeRiverSeriesModel.prototype.init = function (option) {\n    // eslint-disable-next-line\n    _super.prototype.init.apply(this, arguments); // Put this function here is for the sake of consistency of code style.\n    // Enable legend selection for each data item\n    // Use a function instead of direct access because data reference may changed\n\n\n    this.legendVisualProvider = new LegendVisualProvider(zrUtil.bind(this.getData, this), zrUtil.bind(this.getRawData, this));\n  };\n  /**\r\n   * If there is no value of a certain point in the time for some event,set it value to 0.\r\n   *\r\n   * @param {Array} data  initial data in the option\r\n   * @return {Array}\r\n   */\n\n\n  ThemeRiverSeriesModel.prototype.fixData = function (data) {\n    var rawDataLength = data.length;\n    /**\r\n     * Make sure every layer data get the same keys.\r\n     * The value index tells which layer has visited.\r\n     * {\r\n     *  2014/01/01: -1\r\n     * }\r\n     */\n\n    var timeValueKeys = {}; // grouped data by name\n\n    var groupResult = groupData(data, function (item) {\n      if (!timeValueKeys.hasOwnProperty(item[0] + '')) {\n        timeValueKeys[item[0] + ''] = -1;\n      }\n\n      return item[2];\n    });\n    var layerData = [];\n    groupResult.buckets.each(function (items, key) {\n      layerData.push({\n        name: key,\n        dataList: items\n      });\n    });\n    var layerNum = layerData.length;\n\n    for (var k = 0; k < layerNum; ++k) {\n      var name_1 = layerData[k].name;\n\n      for (var j = 0; j < layerData[k].dataList.length; ++j) {\n        var timeValue = layerData[k].dataList[j][0] + '';\n        timeValueKeys[timeValue] = k;\n      }\n\n      for (var timeValue in timeValueKeys) {\n        if (timeValueKeys.hasOwnProperty(timeValue) && timeValueKeys[timeValue] !== k) {\n          timeValueKeys[timeValue] = k;\n          data[rawDataLength] = [timeValue, 0, name_1];\n          rawDataLength++;\n        }\n      }\n    }\n\n    return data;\n  };\n  /**\r\n   * @override\r\n   * @param  option  the initial option that user gave\r\n   * @param  ecModel  the model object for themeRiver option\r\n   */\n\n\n  ThemeRiverSeriesModel.prototype.getInitialData = function (option, ecModel) {\n    var singleAxisModel = this.getReferringComponents('singleAxis', SINGLE_REFERRING).models[0];\n    var axisType = singleAxisModel.get('type'); // filter the data item with the value of label is undefined\n\n    var filterData = zrUtil.filter(option.data, function (dataItem) {\n      return dataItem[2] !== undefined;\n    }); // ??? TODO design a stage to transfer data for themeRiver and lines?\n\n    var data = this.fixData(filterData || []);\n    var nameList = [];\n    var nameMap = this.nameMap = zrUtil.createHashMap();\n    var count = 0;\n\n    for (var i = 0; i < data.length; ++i) {\n      nameList.push(data[i][DATA_NAME_INDEX]);\n\n      if (!nameMap.get(data[i][DATA_NAME_INDEX])) {\n        nameMap.set(data[i][DATA_NAME_INDEX], count);\n        count++;\n      }\n    }\n\n    var dimensions = prepareSeriesDataSchema(data, {\n      coordDimensions: ['single'],\n      dimensionsDefine: [{\n        name: 'time',\n        type: getDimensionTypeByAxis(axisType)\n      }, {\n        name: 'value',\n        type: 'float'\n      }, {\n        name: 'name',\n        type: 'ordinal'\n      }],\n      encodeDefine: {\n        single: 0,\n        value: 1,\n        itemName: 2\n      }\n    }).dimensions;\n    var list = new SeriesData(dimensions, this);\n    list.initData(data);\n    return list;\n  };\n  /**\r\n   * The raw data is divided into multiple layers and each layer\r\n   *     has same name.\r\n   */\n\n\n  ThemeRiverSeriesModel.prototype.getLayerSeries = function () {\n    var data = this.getData();\n    var lenCount = data.count();\n    var indexArr = [];\n\n    for (var i = 0; i < lenCount; ++i) {\n      indexArr[i] = i;\n    }\n\n    var timeDim = data.mapDimension('single'); // data group by name\n\n    var groupResult = groupData(indexArr, function (index) {\n      return data.get('name', index);\n    });\n    var layerSeries = [];\n    groupResult.buckets.each(function (items, key) {\n      items.sort(function (index1, index2) {\n        return data.get(timeDim, index1) - data.get(timeDim, index2);\n      });\n      layerSeries.push({\n        name: key,\n        indices: items\n      });\n    });\n    return layerSeries;\n  };\n  /**\r\n   * Get data indices for show tooltip content\r\n   */\n\n\n  ThemeRiverSeriesModel.prototype.getAxisTooltipData = function (dim, value, baseAxis) {\n    if (!zrUtil.isArray(dim)) {\n      dim = dim ? [dim] : [];\n    }\n\n    var data = this.getData();\n    var layerSeries = this.getLayerSeries();\n    var indices = [];\n    var layerNum = layerSeries.length;\n    var nestestValue;\n\n    for (var i = 0; i < layerNum; ++i) {\n      var minDist = Number.MAX_VALUE;\n      var nearestIdx = -1;\n      var pointNum = layerSeries[i].indices.length;\n\n      for (var j = 0; j < pointNum; ++j) {\n        var theValue = data.get(dim[0], layerSeries[i].indices[j]);\n        var dist = Math.abs(theValue - value);\n\n        if (dist <= minDist) {\n          nestestValue = theValue;\n          minDist = dist;\n          nearestIdx = layerSeries[i].indices[j];\n        }\n      }\n\n      indices.push(nearestIdx);\n    }\n\n    return {\n      dataIndices: indices,\n      nestestValue: nestestValue\n    };\n  };\n\n  ThemeRiverSeriesModel.prototype.formatTooltip = function (dataIndex, multipleSeries, dataType) {\n    var data = this.getData();\n    var name = data.getName(dataIndex);\n    var value = data.get(data.mapDimension('value'), dataIndex);\n    return createTooltipMarkup('nameValue', {\n      name: name,\n      value: value\n    });\n  };\n\n  ThemeRiverSeriesModel.type = 'series.themeRiver';\n  ThemeRiverSeriesModel.dependencies = ['singleAxis'];\n  ThemeRiverSeriesModel.defaultOption = {\n    // zlevel: 0,\n    z: 2,\n    colorBy: 'data',\n    coordinateSystem: 'singleAxis',\n    // gap in axis's orthogonal orientation\n    boundaryGap: ['10%', '10%'],\n    // legendHoverLink: true,\n    singleAxisIndex: 0,\n    animationEasing: 'linear',\n    label: {\n      margin: 4,\n      show: true,\n      position: 'left',\n      fontSize: 11\n    },\n    emphasis: {\n      label: {\n        show: true\n      }\n    }\n  };\n  return ThemeRiverSeriesModel;\n}(SeriesModel);\n\nexport default ThemeRiverSeriesModel;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport * as zrUtil from 'zrender/lib/core/util.js';\nimport * as numberUtil from '../../util/number.js';\nexport default function themeRiverLayout(ecModel, api) {\n  ecModel.eachSeriesByType('themeRiver', function (seriesModel) {\n    var data = seriesModel.getData();\n    var single = seriesModel.coordinateSystem;\n    var layoutInfo = {}; // use the axis boundingRect for view\n\n    var rect = single.getRect();\n    layoutInfo.rect = rect;\n    var boundaryGap = seriesModel.get('boundaryGap');\n    var axis = single.getAxis();\n    layoutInfo.boundaryGap = boundaryGap;\n\n    if (axis.orient === 'horizontal') {\n      boundaryGap[0] = numberUtil.parsePercent(boundaryGap[0], rect.height);\n      boundaryGap[1] = numberUtil.parsePercent(boundaryGap[1], rect.height);\n      var height = rect.height - boundaryGap[0] - boundaryGap[1];\n      doThemeRiverLayout(data, seriesModel, height);\n    } else {\n      boundaryGap[0] = numberUtil.parsePercent(boundaryGap[0], rect.width);\n      boundaryGap[1] = numberUtil.parsePercent(boundaryGap[1], rect.width);\n      var width = rect.width - boundaryGap[0] - boundaryGap[1];\n      doThemeRiverLayout(data, seriesModel, width);\n    }\n\n    data.setLayout('layoutInfo', layoutInfo);\n  });\n}\n/**\r\n * The layout information about themeriver\r\n *\r\n * @param data  data in the series\r\n * @param seriesModel  the model object of themeRiver series\r\n * @param height  value used to compute every series height\r\n */\n\nfunction doThemeRiverLayout(data, seriesModel, height) {\n  if (!data.count()) {\n    return;\n  }\n\n  var coordSys = seriesModel.coordinateSystem; // the data in each layer are organized into a series.\n\n  var layerSeries = seriesModel.getLayerSeries(); // the points in each layer.\n\n  var timeDim = data.mapDimension('single');\n  var valueDim = data.mapDimension('value');\n  var layerPoints = zrUtil.map(layerSeries, function (singleLayer) {\n    return zrUtil.map(singleLayer.indices, function (idx) {\n      var pt = coordSys.dataToPoint(data.get(timeDim, idx));\n      pt[1] = data.get(valueDim, idx);\n      return pt;\n    });\n  });\n  var base = computeBaseline(layerPoints);\n  var baseLine = base.y0;\n  var ky = height / base.max; // set layout information for each item.\n\n  var n = layerSeries.length;\n  var m = layerSeries[0].indices.length;\n  var baseY0;\n\n  for (var j = 0; j < m; ++j) {\n    baseY0 = baseLine[j] * ky;\n    data.setItemLayout(layerSeries[0].indices[j], {\n      layerIndex: 0,\n      x: layerPoints[0][j][0],\n      y0: baseY0,\n      y: layerPoints[0][j][1] * ky\n    });\n\n    for (var i = 1; i < n; ++i) {\n      baseY0 += layerPoints[i - 1][j][1] * ky;\n      data.setItemLayout(layerSeries[i].indices[j], {\n        layerIndex: i,\n        x: layerPoints[i][j][0],\n        y0: baseY0,\n        y: layerPoints[i][j][1] * ky\n      });\n    }\n  }\n}\n/**\r\n * Compute the baseLine of the rawdata\r\n * Inspired by Lee Byron's paper Stacked Graphs - Geometry & Aesthetics\r\n *\r\n * @param  data  the points in each layer\r\n */\n\n\nfunction computeBaseline(data) {\n  var layerNum = data.length;\n  var pointNum = data[0].length;\n  var sums = [];\n  var y0 = [];\n  var max = 0;\n\n  for (var i = 0; i < pointNum; ++i) {\n    var temp = 0;\n\n    for (var j = 0; j < layerNum; ++j) {\n      temp += data[j][i][1];\n    }\n\n    if (temp > max) {\n      max = temp;\n    }\n\n    sums.push(temp);\n  }\n\n  for (var k = 0; k < pointNum; ++k) {\n    y0[k] = (max - sums[k]) / 2;\n  }\n\n  max = 0;\n\n  for (var l = 0; l < pointNum; ++l) {\n    var sum = sums[l] + y0[l];\n\n    if (sum > max) {\n      max = sum;\n    }\n  }\n\n  return {\n    y0: y0,\n    max: max\n  };\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { __extends } from \"tslib\";\nimport * as zrUtil from 'zrender/lib/core/util.js';\nimport * as graphic from '../../util/graphic.js';\nimport { toggleHoverEmphasis, SPECIAL_STATES, DISPLAY_STATES } from '../../util/states.js';\nimport { createTextStyle } from '../../label/labelStyle.js';\nimport { getECData } from '../../util/innerStore.js';\nimport { getSectorCornerRadius } from '../helper/sectorHelper.js';\nimport { createOrUpdatePatternFromDecal } from '../../util/decal.js';\nimport { saveOldStyle } from '../../animation/basicTransition.js';\nimport { normalizeRadian } from 'zrender/lib/contain/util.js';\nvar DEFAULT_SECTOR_Z = 2;\nvar DEFAULT_TEXT_Z = 4;\n/**\r\n * Sunburstce of Sunburst including Sector, Label, LabelLine\r\n */\n\nvar SunburstPiece =\n/** @class */\nfunction (_super) {\n  __extends(SunburstPiece, _super);\n\n  function SunburstPiece(node, seriesModel, ecModel, api) {\n    var _this = _super.call(this) || this;\n\n    _this.z2 = DEFAULT_SECTOR_Z;\n    _this.textConfig = {\n      inside: true\n    };\n    getECData(_this).seriesIndex = seriesModel.seriesIndex;\n    var text = new graphic.Text({\n      z2: DEFAULT_TEXT_Z,\n      silent: node.getModel().get(['label', 'silent'])\n    });\n\n    _this.setTextContent(text);\n\n    _this.updateData(true, node, seriesModel, ecModel, api);\n\n    return _this;\n  }\n\n  SunburstPiece.prototype.updateData = function (firstCreate, node, // state: 'emphasis' | 'normal' | 'highlight' | 'downplay',\n  seriesModel, ecModel, api) {\n    this.node = node;\n    node.piece = this;\n    seriesModel = seriesModel || this._seriesModel;\n    ecModel = ecModel || this._ecModel;\n    var sector = this;\n    getECData(sector).dataIndex = node.dataIndex;\n    var itemModel = node.getModel();\n    var emphasisModel = itemModel.getModel('emphasis');\n    var layout = node.getLayout();\n    var sectorShape = zrUtil.extend({}, layout);\n    sectorShape.label = null;\n    var normalStyle = node.getVisual('style');\n    normalStyle.lineJoin = 'bevel';\n    var decal = node.getVisual('decal');\n\n    if (decal) {\n      normalStyle.decal = createOrUpdatePatternFromDecal(decal, api);\n    }\n\n    var cornerRadius = getSectorCornerRadius(itemModel.getModel('itemStyle'), sectorShape, true);\n    zrUtil.extend(sectorShape, cornerRadius);\n    zrUtil.each(SPECIAL_STATES, function (stateName) {\n      var state = sector.ensureState(stateName);\n      var itemStyleModel = itemModel.getModel([stateName, 'itemStyle']);\n      state.style = itemStyleModel.getItemStyle(); // border radius\n\n      var cornerRadius = getSectorCornerRadius(itemStyleModel, sectorShape);\n\n      if (cornerRadius) {\n        state.shape = cornerRadius;\n      }\n    });\n\n    if (firstCreate) {\n      sector.setShape(sectorShape);\n      sector.shape.r = layout.r0;\n      graphic.initProps(sector, {\n        shape: {\n          r: layout.r\n        }\n      }, seriesModel, node.dataIndex);\n    } else {\n      // Disable animation for gradient since no interpolation method\n      // is supported for gradient\n      graphic.updateProps(sector, {\n        shape: sectorShape\n      }, seriesModel);\n      saveOldStyle(sector);\n    }\n\n    sector.useStyle(normalStyle);\n\n    this._updateLabel(seriesModel);\n\n    var cursorStyle = itemModel.getShallow('cursor');\n    cursorStyle && sector.attr('cursor', cursorStyle);\n    this._seriesModel = seriesModel || this._seriesModel;\n    this._ecModel = ecModel || this._ecModel;\n    var focus = emphasisModel.get('focus');\n    var focusOrIndices = focus === 'ancestor' ? node.getAncestorsIndices() : focus === 'descendant' ? node.getDescendantIndices() : focus;\n    toggleHoverEmphasis(this, focusOrIndices, emphasisModel.get('blurScope'), emphasisModel.get('disabled'));\n  };\n\n  SunburstPiece.prototype._updateLabel = function (seriesModel) {\n    var _this = this;\n\n    var itemModel = this.node.getModel();\n    var normalLabelModel = itemModel.getModel('label');\n    var layout = this.node.getLayout();\n    var angle = layout.endAngle - layout.startAngle;\n    var midAngle = (layout.startAngle + layout.endAngle) / 2;\n    var dx = Math.cos(midAngle);\n    var dy = Math.sin(midAngle);\n    var sector = this;\n    var label = sector.getTextContent();\n    var dataIndex = this.node.dataIndex;\n    var labelMinAngle = normalLabelModel.get('minAngle') / 180 * Math.PI;\n    var isNormalShown = normalLabelModel.get('show') && !(labelMinAngle != null && Math.abs(angle) < labelMinAngle);\n    label.ignore = !isNormalShown; // TODO use setLabelStyle\n\n    zrUtil.each(DISPLAY_STATES, function (stateName) {\n      var labelStateModel = stateName === 'normal' ? itemModel.getModel('label') : itemModel.getModel([stateName, 'label']);\n      var isNormal = stateName === 'normal';\n      var state = isNormal ? label : label.ensureState(stateName);\n      var text = seriesModel.getFormattedLabel(dataIndex, stateName);\n\n      if (isNormal) {\n        text = text || _this.node.name;\n      }\n\n      state.style = createTextStyle(labelStateModel, {}, null, stateName !== 'normal', true);\n\n      if (text) {\n        state.style.text = text;\n      } // Not displaying text when angle is too small\n\n\n      var isShown = labelStateModel.get('show');\n\n      if (isShown != null && !isNormal) {\n        state.ignore = !isShown;\n      }\n\n      var labelPosition = getLabelAttr(labelStateModel, 'position');\n      var sectorState = isNormal ? sector : sector.states[stateName];\n      var labelColor = sectorState.style.fill;\n      sectorState.textConfig = {\n        outsideFill: labelStateModel.get('color') === 'inherit' ? labelColor : null,\n        inside: labelPosition !== 'outside'\n      };\n      var r;\n      var labelPadding = getLabelAttr(labelStateModel, 'distance') || 0;\n      var textAlign = getLabelAttr(labelStateModel, 'align');\n\n      if (labelPosition === 'outside') {\n        r = layout.r + labelPadding;\n        textAlign = midAngle > Math.PI / 2 ? 'right' : 'left';\n      } else {\n        if (!textAlign || textAlign === 'center') {\n          // Put label in the center if it's a circle\n          if (angle === 2 * Math.PI && layout.r0 === 0) {\n            r = 0;\n          } else {\n            r = (layout.r + layout.r0) / 2;\n          }\n\n          textAlign = 'center';\n        } else if (textAlign === 'left') {\n          r = layout.r0 + labelPadding;\n\n          if (midAngle > Math.PI / 2) {\n            textAlign = 'right';\n          }\n        } else if (textAlign === 'right') {\n          r = layout.r - labelPadding;\n\n          if (midAngle > Math.PI / 2) {\n            textAlign = 'left';\n          }\n        }\n      }\n\n      state.style.align = textAlign;\n      state.style.verticalAlign = getLabelAttr(labelStateModel, 'verticalAlign') || 'middle';\n      state.x = r * dx + layout.cx;\n      state.y = r * dy + layout.cy;\n      var rotateType = getLabelAttr(labelStateModel, 'rotate');\n      var rotate = 0;\n\n      if (rotateType === 'radial') {\n        rotate = normalizeRadian(-midAngle);\n\n        if (rotate > Math.PI / 2 && rotate < Math.PI * 1.5) {\n          rotate += Math.PI;\n        }\n      } else if (rotateType === 'tangential') {\n        rotate = Math.PI / 2 - midAngle;\n\n        if (rotate > Math.PI / 2) {\n          rotate -= Math.PI;\n        } else if (rotate < -Math.PI / 2) {\n          rotate += Math.PI;\n        }\n      } else if (zrUtil.isNumber(rotateType)) {\n        rotate = rotateType * Math.PI / 180;\n      }\n\n      state.rotation = normalizeRadian(rotate);\n    });\n\n    function getLabelAttr(model, name) {\n      var stateAttr = model.get(name);\n\n      if (stateAttr == null) {\n        return normalLabelModel.get(name);\n      }\n\n      return stateAttr;\n    }\n\n    label.dirtyStyle();\n  };\n\n  return SunburstPiece;\n}(graphic.Sector);\n\nexport default SunburstPiece;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { extend } from 'zrender/lib/core/util.js';\nimport { deprecateReplaceLog } from '../../util/log.js';\nimport { retrieveTargetInfo, aboveViewRoot } from '../helper/treeHelper.js';\nexport var ROOT_TO_NODE_ACTION = 'sunburstRootToNode';\nvar HIGHLIGHT_ACTION = 'sunburstHighlight';\nvar UNHIGHLIGHT_ACTION = 'sunburstUnhighlight';\nexport function installSunburstAction(registers) {\n  registers.registerAction({\n    type: ROOT_TO_NODE_ACTION,\n    update: 'updateView'\n  }, function (payload, ecModel) {\n    ecModel.eachComponent({\n      mainType: 'series',\n      subType: 'sunburst',\n      query: payload\n    }, handleRootToNode);\n\n    function handleRootToNode(model, index) {\n      var targetInfo = retrieveTargetInfo(payload, [ROOT_TO_NODE_ACTION], model);\n\n      if (targetInfo) {\n        var originViewRoot = model.getViewRoot();\n\n        if (originViewRoot) {\n          payload.direction = aboveViewRoot(originViewRoot, targetInfo.node) ? 'rollUp' : 'drillDown';\n        }\n\n        model.resetViewRoot(targetInfo.node);\n      }\n    }\n  });\n  registers.registerAction({\n    type: HIGHLIGHT_ACTION,\n    update: 'none'\n  }, function (payload, ecModel, api) {\n    // Clone\n    payload = extend({}, payload);\n    ecModel.eachComponent({\n      mainType: 'series',\n      subType: 'sunburst',\n      query: payload\n    }, handleHighlight);\n\n    function handleHighlight(model) {\n      var targetInfo = retrieveTargetInfo(payload, [HIGHLIGHT_ACTION], model);\n\n      if (targetInfo) {\n        payload.dataIndex = targetInfo.node.dataIndex;\n      }\n    }\n\n    if (process.env.NODE_ENV !== 'production') {\n      deprecateReplaceLog('sunburstHighlight', 'highlight');\n    } // Fast forward action\n\n\n    api.dispatchAction(extend(payload, {\n      type: 'highlight'\n    }));\n  });\n  registers.registerAction({\n    type: UNHIGHLIGHT_ACTION,\n    update: 'updateView'\n  }, function (payload, ecModel, api) {\n    payload = extend({}, payload);\n\n    if (process.env.NODE_ENV !== 'production') {\n      deprecateReplaceLog('sunburstUnhighlight', 'downplay');\n    }\n\n    api.dispatchAction(extend(payload, {\n      type: 'downplay'\n    }));\n  });\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { __extends } from \"tslib\";\nimport * as zrUtil from 'zrender/lib/core/util.js';\nimport ChartView from '../../view/Chart.js';\nimport SunburstPiece from './SunburstPiece.js';\nimport DataDiffer from '../../data/DataDiffer.js';\nimport { ROOT_TO_NODE_ACTION } from './sunburstAction.js';\nimport { windowOpen } from '../../util/format.js';\n\nvar SunburstView =\n/** @class */\nfunction (_super) {\n  __extends(SunburstView, _super);\n\n  function SunburstView() {\n    var _this = _super !== null && _super.apply(this, arguments) || this;\n\n    _this.type = SunburstView.type;\n    return _this;\n  }\n\n  SunburstView.prototype.render = function (seriesModel, ecModel, api, // @ts-ignore\n  payload) {\n    var self = this;\n    this.seriesModel = seriesModel;\n    this.api = api;\n    this.ecModel = ecModel;\n    var data = seriesModel.getData();\n    var virtualRoot = data.tree.root;\n    var newRoot = seriesModel.getViewRoot();\n    var group = this.group;\n    var renderLabelForZeroData = seriesModel.get('renderLabelForZeroData');\n    var newChildren = [];\n    newRoot.eachNode(function (node) {\n      newChildren.push(node);\n    });\n    var oldChildren = this._oldChildren || [];\n    dualTravel(newChildren, oldChildren);\n    renderRollUp(virtualRoot, newRoot);\n\n    this._initEvents();\n\n    this._oldChildren = newChildren;\n\n    function dualTravel(newChildren, oldChildren) {\n      if (newChildren.length === 0 && oldChildren.length === 0) {\n        return;\n      }\n\n      new DataDiffer(oldChildren, newChildren, getKey, getKey).add(processNode).update(processNode).remove(zrUtil.curry(processNode, null)).execute();\n\n      function getKey(node) {\n        return node.getId();\n      }\n\n      function processNode(newIdx, oldIdx) {\n        var newNode = newIdx == null ? null : newChildren[newIdx];\n        var oldNode = oldIdx == null ? null : oldChildren[oldIdx];\n        doRenderNode(newNode, oldNode);\n      }\n    }\n\n    function doRenderNode(newNode, oldNode) {\n      if (!renderLabelForZeroData && newNode && !newNode.getValue()) {\n        // Not render data with value 0\n        newNode = null;\n      }\n\n      if (newNode !== virtualRoot && oldNode !== virtualRoot) {\n        if (oldNode && oldNode.piece) {\n          if (newNode) {\n            // Update\n            oldNode.piece.updateData(false, newNode, seriesModel, ecModel, api); // For tooltip\n\n            data.setItemGraphicEl(newNode.dataIndex, oldNode.piece);\n          } else {\n            // Remove\n            removeNode(oldNode);\n          }\n        } else if (newNode) {\n          // Add\n          var piece = new SunburstPiece(newNode, seriesModel, ecModel, api);\n          group.add(piece); // For tooltip\n\n          data.setItemGraphicEl(newNode.dataIndex, piece);\n        }\n      }\n    }\n\n    function removeNode(node) {\n      if (!node) {\n        return;\n      }\n\n      if (node.piece) {\n        group.remove(node.piece);\n        node.piece = null;\n      }\n    }\n\n    function renderRollUp(virtualRoot, viewRoot) {\n      if (viewRoot.depth > 0) {\n        // Render\n        if (self.virtualPiece) {\n          // Update\n          self.virtualPiece.updateData(false, virtualRoot, seriesModel, ecModel, api);\n        } else {\n          // Add\n          self.virtualPiece = new SunburstPiece(virtualRoot, seriesModel, ecModel, api);\n          group.add(self.virtualPiece);\n        } // TODO event scope\n\n\n        viewRoot.piece.off('click');\n        self.virtualPiece.on('click', function (e) {\n          self._rootToNode(viewRoot.parentNode);\n        });\n      } else if (self.virtualPiece) {\n        // Remove\n        group.remove(self.virtualPiece);\n        self.virtualPiece = null;\n      }\n    }\n  };\n  /**\r\n   * @private\r\n   */\n\n\n  SunburstView.prototype._initEvents = function () {\n    var _this = this;\n\n    this.group.off('click');\n    this.group.on('click', function (e) {\n      var targetFound = false;\n\n      var viewRoot = _this.seriesModel.getViewRoot();\n\n      viewRoot.eachNode(function (node) {\n        if (!targetFound && node.piece && node.piece === e.target) {\n          var nodeClick = node.getModel().get('nodeClick');\n\n          if (nodeClick === 'rootToNode') {\n            _this._rootToNode(node);\n          } else if (nodeClick === 'link') {\n            var itemModel = node.getModel();\n            var link = itemModel.get('link');\n\n            if (link) {\n              var linkTarget = itemModel.get('target', true) || '_blank';\n              windowOpen(link, linkTarget);\n            }\n          }\n\n          targetFound = true;\n        }\n      });\n    });\n  };\n  /**\r\n   * @private\r\n   */\n\n\n  SunburstView.prototype._rootToNode = function (node) {\n    if (node !== this.seriesModel.getViewRoot()) {\n      this.api.dispatchAction({\n        type: ROOT_TO_NODE_ACTION,\n        from: this.uid,\n        seriesId: this.seriesModel.id,\n        targetNode: node\n      });\n    }\n  };\n  /**\r\n   * @implement\r\n   */\n\n\n  SunburstView.prototype.containPoint = function (point, seriesModel) {\n    var treeRoot = seriesModel.getData();\n    var itemLayout = treeRoot.getItemLayout(0);\n\n    if (itemLayout) {\n      var dx = point[0] - itemLayout.cx;\n      var dy = point[1] - itemLayout.cy;\n      var radius = Math.sqrt(dx * dx + dy * dy);\n      return radius <= itemLayout.r && radius >= itemLayout.r0;\n    }\n  };\n\n  SunburstView.type = 'sunburst';\n  return SunburstView;\n}(ChartView);\n\nexport default SunburstView;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { __extends } from \"tslib\";\nimport * as zrUtil from 'zrender/lib/core/util.js';\nimport SeriesModel from '../../model/Series.js';\nimport Tree from '../../data/Tree.js';\nimport { wrapTreePathInfo } from '../helper/treeHelper.js';\nimport Model from '../../model/Model.js';\nimport enableAriaDecalForTree from '../helper/enableAriaDecalForTree.js';\n\nvar SunburstSeriesModel =\n/** @class */\nfunction (_super) {\n  __extends(SunburstSeriesModel, _super);\n\n  function SunburstSeriesModel() {\n    var _this = _super !== null && _super.apply(this, arguments) || this;\n\n    _this.type = SunburstSeriesModel.type;\n    _this.ignoreStyleOnData = true;\n    return _this;\n  }\n\n  SunburstSeriesModel.prototype.getInitialData = function (option, ecModel) {\n    // Create a virtual root.\n    var root = {\n      name: option.name,\n      children: option.data\n    };\n    completeTreeValue(root);\n    var levelModels = this._levelModels = zrUtil.map(option.levels || [], function (levelDefine) {\n      return new Model(levelDefine, this, ecModel);\n    }, this); // Make sure always a new tree is created when setOption,\n    // in TreemapView, we check whether oldTree === newTree\n    // to choose mappings approach among old shapes and new shapes.\n\n    var tree = Tree.createTree(root, this, beforeLink);\n\n    function beforeLink(nodeData) {\n      nodeData.wrapMethod('getItemModel', function (model, idx) {\n        var node = tree.getNodeByDataIndex(idx);\n        var levelModel = levelModels[node.depth];\n        levelModel && (model.parentModel = levelModel);\n        return model;\n      });\n    }\n\n    return tree.data;\n  };\n\n  SunburstSeriesModel.prototype.optionUpdated = function () {\n    this.resetViewRoot();\n  };\n  /*\r\n   * @override\r\n   */\n\n\n  SunburstSeriesModel.prototype.getDataParams = function (dataIndex) {\n    var params = _super.prototype.getDataParams.apply(this, arguments);\n\n    var node = this.getData().tree.getNodeByDataIndex(dataIndex);\n    params.treePathInfo = wrapTreePathInfo(node, this);\n    return params;\n  };\n\n  SunburstSeriesModel.prototype.getLevelModel = function (node) {\n    return this._levelModels && this._levelModels[node.depth];\n  };\n\n  SunburstSeriesModel.prototype.getViewRoot = function () {\n    return this._viewRoot;\n  };\n\n  SunburstSeriesModel.prototype.resetViewRoot = function (viewRoot) {\n    viewRoot ? this._viewRoot = viewRoot : viewRoot = this._viewRoot;\n    var root = this.getRawData().tree.root;\n\n    if (!viewRoot || viewRoot !== root && !root.contains(viewRoot)) {\n      this._viewRoot = root;\n    }\n  };\n\n  SunburstSeriesModel.prototype.enableAriaDecal = function () {\n    enableAriaDecalForTree(this);\n  };\n\n  SunburstSeriesModel.type = 'series.sunburst';\n  SunburstSeriesModel.defaultOption = {\n    // zlevel: 0,\n    z: 2,\n    // 默认全局居中\n    center: ['50%', '50%'],\n    radius: [0, '75%'],\n    // 默认顺时针\n    clockwise: true,\n    startAngle: 90,\n    // 最小角度改为0\n    minAngle: 0,\n    // If still show when all data zero.\n    stillShowZeroSum: true,\n    // 'rootToNode', 'link', or false\n    nodeClick: 'rootToNode',\n    renderLabelForZeroData: false,\n    label: {\n      // could be: 'radial', 'tangential', or 'none'\n      rotate: 'radial',\n      show: true,\n      opacity: 1,\n      // 'left' is for inner side of inside, and 'right' is for outer\n      // side for inside\n      align: 'center',\n      position: 'inside',\n      distance: 5,\n      silent: true\n    },\n    itemStyle: {\n      borderWidth: 1,\n      borderColor: 'white',\n      borderType: 'solid',\n      shadowBlur: 0,\n      shadowColor: 'rgba(0, 0, 0, 0.2)',\n      shadowOffsetX: 0,\n      shadowOffsetY: 0,\n      opacity: 1\n    },\n    emphasis: {\n      focus: 'descendant'\n    },\n    blur: {\n      itemStyle: {\n        opacity: 0.2\n      },\n      label: {\n        opacity: 0.1\n      }\n    },\n    // Animation type can be expansion, scale.\n    animationType: 'expansion',\n    animationDuration: 1000,\n    animationDurationUpdate: 500,\n    data: [],\n\n    /**\r\n     * Sort order.\r\n     *\r\n     * Valid values: 'desc', 'asc', null, or callback function.\r\n     * 'desc' and 'asc' for descend and ascendant order;\r\n     * null for not sorting;\r\n     * example of callback function:\r\n     * function(nodeA, nodeB) {\r\n     *     return nodeA.getValue() - nodeB.getValue();\r\n     * }\r\n     */\n    sort: 'desc'\n  };\n  return SunburstSeriesModel;\n}(SeriesModel);\n\nfunction completeTreeValue(dataNode) {\n  // Postorder travel tree.\n  // If value of none-leaf node is not set,\n  // calculate it by suming up the value of all children.\n  var sum = 0;\n  zrUtil.each(dataNode.children, function (child) {\n    completeTreeValue(child);\n    var childValue = child.value; // TODO First value of array must be a number\n\n    zrUtil.isArray(childValue) && (childValue = childValue[0]);\n    sum += childValue;\n  });\n  var thisValue = dataNode.value;\n\n  if (zrUtil.isArray(thisValue)) {\n    thisValue = thisValue[0];\n  }\n\n  if (thisValue == null || isNaN(thisValue)) {\n    thisValue = sum;\n  } // Value should not less than 0.\n\n\n  if (thisValue < 0) {\n    thisValue = 0;\n  }\n\n  zrUtil.isArray(dataNode.value) ? dataNode.value[0] = thisValue : dataNode.value = thisValue;\n}\n\nexport default SunburstSeriesModel;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { parsePercent } from '../../util/number.js';\nimport * as zrUtil from 'zrender/lib/core/util.js'; // let PI2 = Math.PI * 2;\n\nvar RADIAN = Math.PI / 180;\nexport default function sunburstLayout(seriesType, ecModel, api) {\n  ecModel.eachSeriesByType(seriesType, function (seriesModel) {\n    var center = seriesModel.get('center');\n    var radius = seriesModel.get('radius');\n\n    if (!zrUtil.isArray(radius)) {\n      radius = [0, radius];\n    }\n\n    if (!zrUtil.isArray(center)) {\n      center = [center, center];\n    }\n\n    var width = api.getWidth();\n    var height = api.getHeight();\n    var size = Math.min(width, height);\n    var cx = parsePercent(center[0], width);\n    var cy = parsePercent(center[1], height);\n    var r0 = parsePercent(radius[0], size / 2);\n    var r = parsePercent(radius[1], size / 2);\n    var startAngle = -seriesModel.get('startAngle') * RADIAN;\n    var minAngle = seriesModel.get('minAngle') * RADIAN;\n    var virtualRoot = seriesModel.getData().tree.root;\n    var treeRoot = seriesModel.getViewRoot();\n    var rootDepth = treeRoot.depth;\n    var sort = seriesModel.get('sort');\n\n    if (sort != null) {\n      initChildren(treeRoot, sort);\n    }\n\n    var validDataCount = 0;\n    zrUtil.each(treeRoot.children, function (child) {\n      !isNaN(child.getValue()) && validDataCount++;\n    });\n    var sum = treeRoot.getValue(); // Sum may be 0\n\n    var unitRadian = Math.PI / (sum || validDataCount) * 2;\n    var renderRollupNode = treeRoot.depth > 0;\n    var levels = treeRoot.height - (renderRollupNode ? -1 : 1);\n    var rPerLevel = (r - r0) / (levels || 1);\n    var clockwise = seriesModel.get('clockwise');\n    var stillShowZeroSum = seriesModel.get('stillShowZeroSum'); // In the case some sector angle is smaller than minAngle\n    // let restAngle = PI2;\n    // let valueSumLargerThanMinAngle = 0;\n\n    var dir = clockwise ? 1 : -1;\n    /**\r\n     * Render a tree\r\n     * @return increased angle\r\n     */\n\n    var renderNode = function (node, startAngle) {\n      if (!node) {\n        return;\n      }\n\n      var endAngle = startAngle; // Render self\n\n      if (node !== virtualRoot) {\n        // Tree node is virtual, so it doesn't need to be drawn\n        var value = node.getValue();\n        var angle = sum === 0 && stillShowZeroSum ? unitRadian : value * unitRadian;\n\n        if (angle < minAngle) {\n          angle = minAngle; // restAngle -= minAngle;\n        } // else {\n        //     valueSumLargerThanMinAngle += value;\n        // }\n\n\n        endAngle = startAngle + dir * angle;\n        var depth = node.depth - rootDepth - (renderRollupNode ? -1 : 1);\n        var rStart = r0 + rPerLevel * depth;\n        var rEnd = r0 + rPerLevel * (depth + 1);\n        var levelModel = seriesModel.getLevelModel(node);\n\n        if (levelModel) {\n          var r0_1 = levelModel.get('r0', true);\n          var r_1 = levelModel.get('r', true);\n          var radius_1 = levelModel.get('radius', true);\n\n          if (radius_1 != null) {\n            r0_1 = radius_1[0];\n            r_1 = radius_1[1];\n          }\n\n          r0_1 != null && (rStart = parsePercent(r0_1, size / 2));\n          r_1 != null && (rEnd = parsePercent(r_1, size / 2));\n        }\n\n        node.setLayout({\n          angle: angle,\n          startAngle: startAngle,\n          endAngle: endAngle,\n          clockwise: clockwise,\n          cx: cx,\n          cy: cy,\n          r0: rStart,\n          r: rEnd\n        });\n      } // Render children\n\n\n      if (node.children && node.children.length) {\n        // currentAngle = startAngle;\n        var siblingAngle_1 = 0;\n        zrUtil.each(node.children, function (node) {\n          siblingAngle_1 += renderNode(node, startAngle + siblingAngle_1);\n        });\n      }\n\n      return endAngle - startAngle;\n    }; // Virtual root node for roll up\n\n\n    if (renderRollupNode) {\n      var rStart = r0;\n      var rEnd = r0 + rPerLevel;\n      var angle = Math.PI * 2;\n      virtualRoot.setLayout({\n        angle: angle,\n        startAngle: startAngle,\n        endAngle: startAngle + angle,\n        clockwise: clockwise,\n        cx: cx,\n        cy: cy,\n        r0: rStart,\n        r: rEnd\n      });\n    }\n\n    renderNode(treeRoot, startAngle);\n  });\n}\n/**\r\n * Init node children by order and update visual\r\n */\n\nfunction initChildren(node, sortOrder) {\n  var children = node.children || [];\n  node.children = sort(children, sortOrder); // Init children recursively\n\n  if (children.length) {\n    zrUtil.each(node.children, function (child) {\n      initChildren(child, sortOrder);\n    });\n  }\n}\n/**\r\n * Sort children nodes\r\n *\r\n * @param {TreeNode[]}               children children of node to be sorted\r\n * @param {string | function | null} sort sort method\r\n *                                   See SunburstSeries.js for details.\r\n */\n\n\nfunction sort(children, sortOrder) {\n  if (zrUtil.isFunction(sortOrder)) {\n    var sortTargets = zrUtil.map(children, function (child, idx) {\n      var value = child.getValue();\n      return {\n        params: {\n          depth: child.depth,\n          height: child.height,\n          dataIndex: child.dataIndex,\n          getValue: function () {\n            return value;\n          }\n        },\n        index: idx\n      };\n    });\n    sortTargets.sort(function (a, b) {\n      return sortOrder(a.params, b.params);\n    });\n    return zrUtil.map(sortTargets, function (target) {\n      return children[target.index];\n    });\n  } else {\n    var isAsc_1 = sortOrder === 'asc';\n    return children.sort(function (a, b) {\n      var diff = (a.getValue() - b.getValue()) * (isAsc_1 ? 1 : -1);\n      return diff === 0 ? (a.dataIndex - b.dataIndex) * (isAsc_1 ? -1 : 1) : diff;\n    });\n  }\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { lift } from 'zrender/lib/tool/color.js';\nimport { extend, isString } from 'zrender/lib/core/util.js';\nexport default function sunburstVisual(ecModel) {\n  var paletteScope = {}; // Default color strategy\n\n  function pickColor(node, seriesModel, treeHeight) {\n    // Choose color from palette based on the first level.\n    var current = node;\n\n    while (current && current.depth > 1) {\n      current = current.parentNode;\n    }\n\n    var color = seriesModel.getColorFromPalette(current.name || current.dataIndex + '', paletteScope);\n\n    if (node.depth > 1 && isString(color)) {\n      // Lighter on the deeper level.\n      color = lift(color, (node.depth - 1) / (treeHeight - 1) * 0.5);\n    }\n\n    return color;\n  }\n\n  ecModel.eachSeriesByType('sunburst', function (seriesModel) {\n    var data = seriesModel.getData();\n    var tree = data.tree;\n    tree.eachNode(function (node) {\n      var model = node.getModel();\n      var style = model.getModel('itemStyle').getItemStyle();\n\n      if (!style.fill) {\n        style.fill = pickColor(node, seriesModel, tree.root.height);\n      }\n\n      var existsStyle = data.ensureUniqueItemVisual(node.dataIndex, 'style');\n      extend(existsStyle, style);\n    });\n  });\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { __extends } from \"tslib\";\nimport createSeriesData from '../helper/createSeriesData.js';\nimport { makeInner } from '../../util/model.js';\nimport SeriesModel from '../../model/Series.js'; // Also compat with ec4, where\n// `visual('color') visual('borderColor')` is supported.\n\nexport var STYLE_VISUAL_TYPE = {\n  color: 'fill',\n  borderColor: 'stroke'\n};\nexport var NON_STYLE_VISUAL_PROPS = {\n  symbol: 1,\n  symbolSize: 1,\n  symbolKeepAspect: 1,\n  legendIcon: 1,\n  visualMeta: 1,\n  liftZ: 1,\n  decal: 1\n};\n;\nexport var customInnerStore = makeInner();\n\nvar CustomSeriesModel =\n/** @class */\nfunction (_super) {\n  __extends(CustomSeriesModel, _super);\n\n  function CustomSeriesModel() {\n    var _this = _super !== null && _super.apply(this, arguments) || this;\n\n    _this.type = CustomSeriesModel.type;\n    return _this;\n  }\n\n  CustomSeriesModel.prototype.optionUpdated = function () {\n    this.currentZLevel = this.get('zlevel', true);\n    this.currentZ = this.get('z', true);\n  };\n\n  CustomSeriesModel.prototype.getInitialData = function (option, ecModel) {\n    return createSeriesData(null, this);\n  };\n\n  CustomSeriesModel.prototype.getDataParams = function (dataIndex, dataType, el) {\n    var params = _super.prototype.getDataParams.call(this, dataIndex, dataType);\n\n    el && (params.info = customInnerStore(el).info);\n    return params;\n  };\n\n  CustomSeriesModel.type = 'series.custom';\n  CustomSeriesModel.dependencies = ['grid', 'polar', 'geo', 'singleAxis', 'calendar'];\n  CustomSeriesModel.defaultOption = {\n    coordinateSystem: 'cartesian2d',\n    // zlevel: 0,\n    z: 2,\n    legendHoverLink: true,\n    // Custom series will not clip by default.\n    // Some case will use custom series to draw label\n    // For example https://echarts.apache.org/examples/en/editor.html?c=custom-gantt-flight\n    clip: false // Cartesian coordinate system\n    // xAxisIndex: 0,\n    // yAxisIndex: 0,\n    // Polar coordinate system\n    // polarIndex: 0,\n    // Geo coordinate system\n    // geoIndex: 0,\n\n  };\n  return CustomSeriesModel;\n}(SeriesModel);\n\nexport default CustomSeriesModel;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport * as zrUtil from 'zrender/lib/core/util.js';\n\nfunction dataToCoordSize(dataSize, dataItem) {\n  // dataItem is necessary in log axis.\n  dataItem = dataItem || [0, 0];\n  return zrUtil.map(['x', 'y'], function (dim, dimIdx) {\n    var axis = this.getAxis(dim);\n    var val = dataItem[dimIdx];\n    var halfSize = dataSize[dimIdx] / 2;\n    return axis.type === 'category' ? axis.getBandWidth() : Math.abs(axis.dataToCoord(val - halfSize) - axis.dataToCoord(val + halfSize));\n  }, this);\n}\n\nexport default function cartesianPrepareCustom(coordSys) {\n  var rect = coordSys.master.getRect();\n  return {\n    coordSys: {\n      // The name exposed to user is always 'cartesian2d' but not 'grid'.\n      type: 'cartesian2d',\n      x: rect.x,\n      y: rect.y,\n      width: rect.width,\n      height: rect.height\n    },\n    api: {\n      coord: function (data) {\n        // do not provide \"out\" param\n        return coordSys.dataToPoint(data);\n      },\n      size: zrUtil.bind(dataToCoordSize, coordSys)\n    }\n  };\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport * as zrUtil from 'zrender/lib/core/util.js';\n\nfunction dataToCoordSize(dataSize, dataItem) {\n  dataItem = dataItem || [0, 0];\n  return zrUtil.map([0, 1], function (dimIdx) {\n    var val = dataItem[dimIdx];\n    var halfSize = dataSize[dimIdx] / 2;\n    var p1 = [];\n    var p2 = [];\n    p1[dimIdx] = val - halfSize;\n    p2[dimIdx] = val + halfSize;\n    p1[1 - dimIdx] = p2[1 - dimIdx] = dataItem[1 - dimIdx];\n    return Math.abs(this.dataToPoint(p1)[dimIdx] - this.dataToPoint(p2)[dimIdx]);\n  }, this);\n}\n\nexport default function geoPrepareCustom(coordSys) {\n  var rect = coordSys.getBoundingRect();\n  return {\n    coordSys: {\n      type: 'geo',\n      x: rect.x,\n      y: rect.y,\n      width: rect.width,\n      height: rect.height,\n      zoom: coordSys.getZoom()\n    },\n    api: {\n      coord: function (data) {\n        // do not provide \"out\" and noRoam param,\n        // Compatible with this usage:\n        // echarts.util.map(item.points, api.coord)\n        return coordSys.dataToPoint(data);\n      },\n      size: zrUtil.bind(dataToCoordSize, coordSys)\n    }\n  };\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { bind } from 'zrender/lib/core/util.js';\n\nfunction dataToCoordSize(dataSize, dataItem) {\n  // dataItem is necessary in log axis.\n  var axis = this.getAxis();\n  var val = dataItem instanceof Array ? dataItem[0] : dataItem;\n  var halfSize = (dataSize instanceof Array ? dataSize[0] : dataSize) / 2;\n  return axis.type === 'category' ? axis.getBandWidth() : Math.abs(axis.dataToCoord(val - halfSize) - axis.dataToCoord(val + halfSize));\n}\n\nexport default function singlePrepareCustom(coordSys) {\n  var rect = coordSys.getRect();\n  return {\n    coordSys: {\n      type: 'singleAxis',\n      x: rect.x,\n      y: rect.y,\n      width: rect.width,\n      height: rect.height\n    },\n    api: {\n      coord: function (val) {\n        // do not provide \"out\" param\n        return coordSys.dataToPoint(val);\n      },\n      size: bind(dataToCoordSize, coordSys)\n    }\n  };\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport * as zrUtil from 'zrender/lib/core/util.js'; // import AngleAxis from './AngleAxis.js';\n\nfunction dataToCoordSize(dataSize, dataItem) {\n  // dataItem is necessary in log axis.\n  dataItem = dataItem || [0, 0];\n  return zrUtil.map(['Radius', 'Angle'], function (dim, dimIdx) {\n    var getterName = 'get' + dim + 'Axis'; // TODO: TYPE Check Angle Axis\n\n    var axis = this[getterName]();\n    var val = dataItem[dimIdx];\n    var halfSize = dataSize[dimIdx] / 2;\n    var result = axis.type === 'category' ? axis.getBandWidth() : Math.abs(axis.dataToCoord(val - halfSize) - axis.dataToCoord(val + halfSize));\n\n    if (dim === 'Angle') {\n      result = result * Math.PI / 180;\n    }\n\n    return result;\n  }, this);\n}\n\nexport default function polarPrepareCustom(coordSys) {\n  var radiusAxis = coordSys.getRadiusAxis();\n  var angleAxis = coordSys.getAngleAxis();\n  var radius = radiusAxis.getExtent();\n  radius[0] > radius[1] && radius.reverse();\n  return {\n    coordSys: {\n      type: 'polar',\n      cx: coordSys.cx,\n      cy: coordSys.cy,\n      r: radius[1],\n      r0: radius[0]\n    },\n    api: {\n      coord: function (data) {\n        var radius = radiusAxis.dataToRadius(data[0]);\n        var angle = angleAxis.dataToAngle(data[1]);\n        var coord = coordSys.coordToPoint([radius, angle]);\n        coord.push(radius, angle * Math.PI / 180);\n        return coord;\n      },\n      size: zrUtil.bind(dataToCoordSize, coordSys)\n    }\n  };\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { each, hasOwn } from 'zrender/lib/core/util.js';\nvar deprecatedLogs = {};\n/**\r\n * Whether need to call `convertEC4CompatibleStyle`.\r\n */\n\nexport function isEC4CompatibleStyle(style, elType, hasOwnTextContentOption, hasOwnTextConfig) {\n  // Since echarts5, `RectText` is separated from its host element and style.text\n  // does not exist any more. The compat work brings some extra burden on performance.\n  // So we provide:\n  // `legacy: true` force make compat.\n  // `legacy: false`, force do not compat.\n  // `legacy` not set: auto detect whether legacy.\n  //     But in this case we do not compat (difficult to detect and rare case):\n  //     Becuse custom series and graphic component support \"merge\", users may firstly\n  //     only set `textStrokeWidth` style or secondly only set `text`.\n  return style && (style.legacy || style.legacy !== false && !hasOwnTextContentOption && !hasOwnTextConfig && elType !== 'tspan' // Difficult to detect whether legacy for a \"text\" el.\n  && (elType === 'text' || hasOwn(style, 'text')));\n}\n/**\r\n * `EC4CompatibleStyle` is style that might be in echarts4 format or echarts5 format.\r\n * @param hostStyle The properties might be modified.\r\n * @return If be text el, `textContentStyle` and `textConfig` will not be returned.\r\n *         Otherwise a `textContentStyle` and `textConfig` will be created, whose props area\r\n *         retried from the `hostStyle`.\r\n */\n\nexport function convertFromEC4CompatibleStyle(hostStyle, elType, isNormal) {\n  var srcStyle = hostStyle;\n  var textConfig;\n  var textContent;\n  var textContentStyle;\n\n  if (elType === 'text') {\n    textContentStyle = srcStyle;\n  } else {\n    textContentStyle = {};\n    hasOwn(srcStyle, 'text') && (textContentStyle.text = srcStyle.text);\n    hasOwn(srcStyle, 'rich') && (textContentStyle.rich = srcStyle.rich);\n    hasOwn(srcStyle, 'textFill') && (textContentStyle.fill = srcStyle.textFill);\n    hasOwn(srcStyle, 'textStroke') && (textContentStyle.stroke = srcStyle.textStroke);\n    hasOwn(srcStyle, 'fontFamily') && (textContentStyle.fontFamily = srcStyle.fontFamily);\n    hasOwn(srcStyle, 'fontSize') && (textContentStyle.fontSize = srcStyle.fontSize);\n    hasOwn(srcStyle, 'fontStyle') && (textContentStyle.fontStyle = srcStyle.fontStyle);\n    hasOwn(srcStyle, 'fontWeight') && (textContentStyle.fontWeight = srcStyle.fontWeight);\n    textContent = {\n      type: 'text',\n      style: textContentStyle,\n      // ec4 does not support rectText trigger.\n      // And when text position is different in normal and emphasis\n      // => hover text trigger emphasis;\n      // => text position changed, leave mouse pointer immediately;\n      // That might cause incorrect state.\n      silent: true\n    };\n    textConfig = {};\n    var hasOwnPos = hasOwn(srcStyle, 'textPosition');\n\n    if (isNormal) {\n      textConfig.position = hasOwnPos ? srcStyle.textPosition : 'inside';\n    } else {\n      hasOwnPos && (textConfig.position = srcStyle.textPosition);\n    }\n\n    hasOwn(srcStyle, 'textPosition') && (textConfig.position = srcStyle.textPosition);\n    hasOwn(srcStyle, 'textOffset') && (textConfig.offset = srcStyle.textOffset);\n    hasOwn(srcStyle, 'textRotation') && (textConfig.rotation = srcStyle.textRotation);\n    hasOwn(srcStyle, 'textDistance') && (textConfig.distance = srcStyle.textDistance);\n  }\n\n  convertEC4CompatibleRichItem(textContentStyle, hostStyle);\n  each(textContentStyle.rich, function (richItem) {\n    convertEC4CompatibleRichItem(richItem, richItem);\n  });\n  return {\n    textConfig: textConfig,\n    textContent: textContent\n  };\n}\n/**\r\n * The result will be set to `out`.\r\n */\n\nfunction convertEC4CompatibleRichItem(out, richItem) {\n  if (!richItem) {\n    return;\n  } // (1) For simplicity, make textXXX properties (deprecated since ec5) has\n  // higher priority. For example, consider in ec4 `borderColor: 5, textBorderColor: 10`\n  // on a rect means `borderColor: 4` on the rect and `borderColor: 10` on an attached\n  // richText in ec5.\n  // (2) `out === richItem` if and only if `out` is text el or rich item.\n  // So we can overwrite existing props in `out` since textXXX has higher priority.\n\n\n  richItem.font = richItem.textFont || richItem.font;\n  hasOwn(richItem, 'textStrokeWidth') && (out.lineWidth = richItem.textStrokeWidth);\n  hasOwn(richItem, 'textAlign') && (out.align = richItem.textAlign);\n  hasOwn(richItem, 'textVerticalAlign') && (out.verticalAlign = richItem.textVerticalAlign);\n  hasOwn(richItem, 'textLineHeight') && (out.lineHeight = richItem.textLineHeight);\n  hasOwn(richItem, 'textWidth') && (out.width = richItem.textWidth);\n  hasOwn(richItem, 'textHeight') && (out.height = richItem.textHeight);\n  hasOwn(richItem, 'textBackgroundColor') && (out.backgroundColor = richItem.textBackgroundColor);\n  hasOwn(richItem, 'textPadding') && (out.padding = richItem.textPadding);\n  hasOwn(richItem, 'textBorderColor') && (out.borderColor = richItem.textBorderColor);\n  hasOwn(richItem, 'textBorderWidth') && (out.borderWidth = richItem.textBorderWidth);\n  hasOwn(richItem, 'textBorderRadius') && (out.borderRadius = richItem.textBorderRadius);\n  hasOwn(richItem, 'textBoxShadowColor') && (out.shadowColor = richItem.textBoxShadowColor);\n  hasOwn(richItem, 'textBoxShadowBlur') && (out.shadowBlur = richItem.textBoxShadowBlur);\n  hasOwn(richItem, 'textBoxShadowOffsetX') && (out.shadowOffsetX = richItem.textBoxShadowOffsetX);\n  hasOwn(richItem, 'textBoxShadowOffsetY') && (out.shadowOffsetY = richItem.textBoxShadowOffsetY);\n}\n/**\r\n * Convert to pure echarts4 format style.\r\n * `itemStyle` will be modified, added with ec4 style properties from\r\n * `textStyle` and `textConfig`.\r\n *\r\n * [Caveat]: For simplicity, `insideRollback` in ec4 does not compat, where\r\n * `styleEmphasis: {textFill: 'red'}` will remove the normal auto added stroke.\r\n */\n\n\nexport function convertToEC4StyleForCustomSerise(itemStl, txStl, txCfg) {\n  var out = itemStl; // See `custom.ts`, a trick to set extra `textPosition` firstly.\n\n  out.textPosition = out.textPosition || txCfg.position || 'inside';\n  txCfg.offset != null && (out.textOffset = txCfg.offset);\n  txCfg.rotation != null && (out.textRotation = txCfg.rotation);\n  txCfg.distance != null && (out.textDistance = txCfg.distance);\n  var isInside = out.textPosition.indexOf('inside') >= 0;\n  var hostFill = itemStl.fill || '#000';\n  convertToEC4RichItem(out, txStl);\n  var textFillNotSet = out.textFill == null;\n\n  if (isInside) {\n    if (textFillNotSet) {\n      out.textFill = txCfg.insideFill || '#fff';\n      !out.textStroke && txCfg.insideStroke && (out.textStroke = txCfg.insideStroke);\n      !out.textStroke && (out.textStroke = hostFill);\n      out.textStrokeWidth == null && (out.textStrokeWidth = 2);\n    }\n  } else {\n    if (textFillNotSet) {\n      out.textFill = itemStl.fill || txCfg.outsideFill || '#000';\n    }\n\n    !out.textStroke && txCfg.outsideStroke && (out.textStroke = txCfg.outsideStroke);\n  }\n\n  out.text = txStl.text;\n  out.rich = txStl.rich;\n  each(txStl.rich, function (richItem) {\n    convertToEC4RichItem(richItem, richItem);\n  });\n  return out;\n}\n\nfunction convertToEC4RichItem(out, richItem) {\n  if (!richItem) {\n    return;\n  }\n\n  hasOwn(richItem, 'fill') && (out.textFill = richItem.fill);\n  hasOwn(richItem, 'stroke') && (out.textStroke = richItem.fill);\n  hasOwn(richItem, 'lineWidth') && (out.textStrokeWidth = richItem.lineWidth);\n  hasOwn(richItem, 'font') && (out.font = richItem.font);\n  hasOwn(richItem, 'fontStyle') && (out.fontStyle = richItem.fontStyle);\n  hasOwn(richItem, 'fontWeight') && (out.fontWeight = richItem.fontWeight);\n  hasOwn(richItem, 'fontSize') && (out.fontSize = richItem.fontSize);\n  hasOwn(richItem, 'fontFamily') && (out.fontFamily = richItem.fontFamily);\n  hasOwn(richItem, 'align') && (out.textAlign = richItem.align);\n  hasOwn(richItem, 'verticalAlign') && (out.textVerticalAlign = richItem.verticalAlign);\n  hasOwn(richItem, 'lineHeight') && (out.textLineHeight = richItem.lineHeight);\n  hasOwn(richItem, 'width') && (out.textWidth = richItem.width);\n  hasOwn(richItem, 'height') && (out.textHeight = richItem.height);\n  hasOwn(richItem, 'backgroundColor') && (out.textBackgroundColor = richItem.backgroundColor);\n  hasOwn(richItem, 'padding') && (out.textPadding = richItem.padding);\n  hasOwn(richItem, 'borderColor') && (out.textBorderColor = richItem.borderColor);\n  hasOwn(richItem, 'borderWidth') && (out.textBorderWidth = richItem.borderWidth);\n  hasOwn(richItem, 'borderRadius') && (out.textBorderRadius = richItem.borderRadius);\n  hasOwn(richItem, 'shadowColor') && (out.textBoxShadowColor = richItem.shadowColor);\n  hasOwn(richItem, 'shadowBlur') && (out.textBoxShadowBlur = richItem.shadowBlur);\n  hasOwn(richItem, 'shadowOffsetX') && (out.textBoxShadowOffsetX = richItem.shadowOffsetX);\n  hasOwn(richItem, 'shadowOffsetY') && (out.textBoxShadowOffsetY = richItem.shadowOffsetY);\n  hasOwn(richItem, 'textShadowColor') && (out.textShadowColor = richItem.textShadowColor);\n  hasOwn(richItem, 'textShadowBlur') && (out.textShadowBlur = richItem.textShadowBlur);\n  hasOwn(richItem, 'textShadowOffsetX') && (out.textShadowOffsetX = richItem.textShadowOffsetX);\n  hasOwn(richItem, 'textShadowOffsetY') && (out.textShadowOffsetY = richItem.textShadowOffsetY);\n}\n\nexport function warnDeprecated(deprecated, insteadApproach) {\n  if (process.env.NODE_ENV !== 'production') {\n    var key = deprecated + '^_^' + insteadApproach;\n\n    if (!deprecatedLogs[key]) {\n      console.warn(\"[ECharts] DEPRECATED: \\\"\" + deprecated + \"\\\" has been deprecated. \" + insteadApproach);\n      deprecatedLogs[key] = true;\n    }\n  }\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { makeInner, normalizeToArray } from '../util/model.js';\nimport { assert, bind, each, eqNaN, extend, hasOwn, indexOf, isArrayLike, keys, reduce } from 'zrender/lib/core/util.js';\nimport { cloneValue } from 'zrender/lib/animation/Animator.js';\nimport Displayable from 'zrender/lib/graphic/Displayable.js';\nimport { getAnimationConfig } from './basicTransition.js';\nimport { Path } from '../util/graphic.js';\nimport { warn } from '../util/log.js';\nimport { TRANSFORMABLE_PROPS } from 'zrender/lib/core/Transformable.js';\nvar LEGACY_TRANSFORM_PROPS_MAP = {\n  position: ['x', 'y'],\n  scale: ['scaleX', 'scaleY'],\n  origin: ['originX', 'originY']\n};\nvar LEGACY_TRANSFORM_PROPS = keys(LEGACY_TRANSFORM_PROPS_MAP);\nvar TRANSFORM_PROPS_MAP = reduce(TRANSFORMABLE_PROPS, function (obj, key) {\n  obj[key] = 1;\n  return obj;\n}, {});\nvar transformPropNamesStr = TRANSFORMABLE_PROPS.join(', '); // '' means root\n\nexport var ELEMENT_ANIMATABLE_PROPS = ['', 'style', 'shape', 'extra'];\n;\nvar transitionInnerStore = makeInner();\n;\n\nfunction getElementAnimationConfig(animationType, el, elOption, parentModel, dataIndex) {\n  var animationProp = animationType + \"Animation\";\n  var config = getAnimationConfig(animationType, parentModel, dataIndex) || {};\n  var userDuring = transitionInnerStore(el).userDuring; // Only set when duration is > 0 and it's need to be animated.\n\n  if (config.duration > 0) {\n    // For simplicity, if during not specified, the previous during will not work any more.\n    config.during = userDuring ? bind(duringCall, {\n      el: el,\n      userDuring: userDuring\n    }) : null;\n    config.setToFinal = true;\n    config.scope = animationType;\n  }\n\n  extend(config, elOption[animationProp]);\n  return config;\n}\n\nexport function applyUpdateTransition(el, elOption, animatableModel, opts) {\n  opts = opts || {};\n  var dataIndex = opts.dataIndex,\n      isInit = opts.isInit,\n      clearStyle = opts.clearStyle;\n  var hasAnimation = animatableModel.isAnimationEnabled(); // Save the meta info for further morphing. Like apply on the sub morphing elements.\n\n  var store = transitionInnerStore(el);\n  var styleOpt = elOption.style;\n  store.userDuring = elOption.during;\n  var transFromProps = {};\n  var propsToSet = {};\n  prepareTransformAllPropsFinal(el, elOption, propsToSet);\n  prepareShapeOrExtraAllPropsFinal('shape', elOption, propsToSet);\n  prepareShapeOrExtraAllPropsFinal('extra', elOption, propsToSet);\n\n  if (!isInit && hasAnimation) {\n    prepareTransformTransitionFrom(el, elOption, transFromProps);\n    prepareShapeOrExtraTransitionFrom('shape', el, elOption, transFromProps);\n    prepareShapeOrExtraTransitionFrom('extra', el, elOption, transFromProps);\n    prepareStyleTransitionFrom(el, elOption, styleOpt, transFromProps);\n  }\n\n  propsToSet.style = styleOpt;\n  applyPropsDirectly(el, propsToSet, clearStyle);\n  applyMiscProps(el, elOption);\n\n  if (hasAnimation) {\n    if (isInit) {\n      var enterFromProps_1 = {};\n      each(ELEMENT_ANIMATABLE_PROPS, function (propName) {\n        var prop = propName ? elOption[propName] : elOption;\n\n        if (prop && prop.enterFrom) {\n          if (propName) {\n            enterFromProps_1[propName] = enterFromProps_1[propName] || {};\n          }\n\n          extend(propName ? enterFromProps_1[propName] : enterFromProps_1, prop.enterFrom);\n        }\n      });\n      var config = getElementAnimationConfig('enter', el, elOption, animatableModel, dataIndex);\n\n      if (config.duration > 0) {\n        el.animateFrom(enterFromProps_1, config);\n      }\n    } else {\n      applyPropsTransition(el, elOption, dataIndex || 0, animatableModel, transFromProps);\n    }\n  } // Store leave to be used in leave transition.\n\n\n  updateLeaveTo(el, elOption);\n  styleOpt ? el.dirty() : el.markRedraw();\n}\nexport function updateLeaveTo(el, elOption) {\n  // Try merge to previous set leaveTo\n  var leaveToProps = transitionInnerStore(el).leaveToProps;\n\n  for (var i = 0; i < ELEMENT_ANIMATABLE_PROPS.length; i++) {\n    var propName = ELEMENT_ANIMATABLE_PROPS[i];\n    var prop = propName ? elOption[propName] : elOption;\n\n    if (prop && prop.leaveTo) {\n      if (!leaveToProps) {\n        leaveToProps = transitionInnerStore(el).leaveToProps = {};\n      }\n\n      if (propName) {\n        leaveToProps[propName] = leaveToProps[propName] || {};\n      }\n\n      extend(propName ? leaveToProps[propName] : leaveToProps, prop.leaveTo);\n    }\n  }\n}\nexport function applyLeaveTransition(el, elOption, animatableModel, onRemove) {\n  if (el) {\n    var parent_1 = el.parent;\n    var leaveToProps = transitionInnerStore(el).leaveToProps;\n\n    if (leaveToProps) {\n      // TODO TODO use leave after leaveAnimation in series is introduced\n      // TODO Data index?\n      var config = getElementAnimationConfig('update', el, elOption, animatableModel, 0);\n\n      config.done = function () {\n        parent_1.remove(el);\n        onRemove && onRemove();\n      };\n\n      el.animateTo(leaveToProps, config);\n    } else {\n      parent_1.remove(el);\n      onRemove && onRemove();\n    }\n  }\n}\nexport function isTransitionAll(transition) {\n  return transition === 'all';\n}\n\nfunction applyPropsDirectly(el, // Can be null/undefined\nallPropsFinal, clearStyle) {\n  var styleOpt = allPropsFinal.style;\n\n  if (!el.isGroup && styleOpt) {\n    if (clearStyle) {\n      el.useStyle({}); // When style object changed, how to trade the existing animation?\n      // It is probably complicated and not needed to cover all the cases.\n      // But still need consider the case:\n      // (1) When using init animation on `style.opacity`, and before the animation\n      //     ended users triggers an update by mousewhel. At that time the init\n      //     animation should better be continued rather than terminated.\n      //     So after `useStyle` called, we should change the animation target manually\n      //     to continue the effect of the init animation.\n      // (2) PENDING: If the previous animation targeted at a `val1`, and currently we need\n      //     to update the value to `val2` and no animation declared, should be terminate\n      //     the previous animation or just modify the target of the animation?\n      //     Therotically That will happen not only on `style` but also on `shape` and\n      //     `transfrom` props. But we haven't handle this case at present yet.\n      // (3) PENDING: Is it proper to visit `animators` and `targetName`?\n\n      var animators = el.animators;\n\n      for (var i = 0; i < animators.length; i++) {\n        var animator = animators[i]; // targetName is the \"topKey\".\n\n        if (animator.targetName === 'style') {\n          animator.changeTarget(el.style);\n        }\n      }\n    }\n\n    el.setStyle(styleOpt);\n  }\n\n  if (allPropsFinal) {\n    // Not set style here.\n    allPropsFinal.style = null; // Set el to the final state firstly.\n\n    allPropsFinal && el.attr(allPropsFinal);\n    allPropsFinal.style = styleOpt;\n  }\n}\n\nfunction applyPropsTransition(el, elOption, dataIndex, model, // Can be null/undefined\ntransFromProps) {\n  if (transFromProps) {\n    var config = getElementAnimationConfig('update', el, elOption, model, dataIndex);\n\n    if (config.duration > 0) {\n      el.animateFrom(transFromProps, config);\n    }\n  }\n}\n\nfunction applyMiscProps(el, elOption) {\n  // Merge by default.\n  hasOwn(elOption, 'silent') && (el.silent = elOption.silent);\n  hasOwn(elOption, 'ignore') && (el.ignore = elOption.ignore);\n\n  if (el instanceof Displayable) {\n    hasOwn(elOption, 'invisible') && (el.invisible = elOption.invisible);\n  }\n\n  if (el instanceof Path) {\n    hasOwn(elOption, 'autoBatch') && (el.autoBatch = elOption.autoBatch);\n  }\n} // Use it to avoid it be exposed to user.\n\n\nvar tmpDuringScope = {};\nvar transitionDuringAPI = {\n  // Usually other props do not need to be changed in animation during.\n  setTransform: function (key, val) {\n    if (process.env.NODE_ENV !== 'production') {\n      assert(hasOwn(TRANSFORM_PROPS_MAP, key), 'Only ' + transformPropNamesStr + ' available in `setTransform`.');\n    }\n\n    tmpDuringScope.el[key] = val;\n    return this;\n  },\n  getTransform: function (key) {\n    if (process.env.NODE_ENV !== 'production') {\n      assert(hasOwn(TRANSFORM_PROPS_MAP, key), 'Only ' + transformPropNamesStr + ' available in `getTransform`.');\n    }\n\n    return tmpDuringScope.el[key];\n  },\n  setShape: function (key, val) {\n    if (process.env.NODE_ENV !== 'production') {\n      assertNotReserved(key);\n    }\n\n    var el = tmpDuringScope.el;\n    var shape = el.shape || (el.shape = {});\n    shape[key] = val;\n    el.dirtyShape && el.dirtyShape();\n    return this;\n  },\n  getShape: function (key) {\n    if (process.env.NODE_ENV !== 'production') {\n      assertNotReserved(key);\n    }\n\n    var shape = tmpDuringScope.el.shape;\n\n    if (shape) {\n      return shape[key];\n    }\n  },\n  setStyle: function (key, val) {\n    if (process.env.NODE_ENV !== 'production') {\n      assertNotReserved(key);\n    }\n\n    var el = tmpDuringScope.el;\n    var style = el.style;\n\n    if (style) {\n      if (process.env.NODE_ENV !== 'production') {\n        if (eqNaN(val)) {\n          warn('style.' + key + ' must not be assigned with NaN.');\n        }\n      }\n\n      style[key] = val;\n      el.dirtyStyle && el.dirtyStyle();\n    }\n\n    return this;\n  },\n  getStyle: function (key) {\n    if (process.env.NODE_ENV !== 'production') {\n      assertNotReserved(key);\n    }\n\n    var style = tmpDuringScope.el.style;\n\n    if (style) {\n      return style[key];\n    }\n  },\n  setExtra: function (key, val) {\n    if (process.env.NODE_ENV !== 'production') {\n      assertNotReserved(key);\n    }\n\n    var extra = tmpDuringScope.el.extra || (tmpDuringScope.el.extra = {});\n    extra[key] = val;\n    return this;\n  },\n  getExtra: function (key) {\n    if (process.env.NODE_ENV !== 'production') {\n      assertNotReserved(key);\n    }\n\n    var extra = tmpDuringScope.el.extra;\n\n    if (extra) {\n      return extra[key];\n    }\n  }\n};\n\nfunction assertNotReserved(key) {\n  if (process.env.NODE_ENV !== 'production') {\n    if (key === 'transition' || key === 'enterFrom' || key === 'leaveTo') {\n      throw new Error('key must not be \"' + key + '\"');\n    }\n  }\n}\n\nfunction duringCall() {\n  // Do not provide \"percent\" until some requirements come.\n  // Because consider thies case:\n  // enterFrom: {x: 100, y: 30}, transition: 'x'.\n  // And enter duration is different from update duration.\n  // Thus it might be confused about the meaning of \"percent\" in during callback.\n  var scope = this;\n  var el = scope.el;\n\n  if (!el) {\n    return;\n  } // If el is remove from zr by reason like legend, during still need to called,\n  // because el will be added back to zr and the prop value should not be incorrect.\n\n\n  var latestUserDuring = transitionInnerStore(el).userDuring;\n  var scopeUserDuring = scope.userDuring; // Ensured a during is only called once in each animation frame.\n  // If a during is called multiple times in one frame, maybe some users' calculation logic\n  // might be wrong (not sure whether this usage exists).\n  // The case of a during might be called twice can be: by default there is a animator for\n  // 'x', 'y' when init. Before the init animation finished, call `setOption` to start\n  // another animators for 'style'/'shape'/'extra'.\n\n  if (latestUserDuring !== scopeUserDuring) {\n    // release\n    scope.el = scope.userDuring = null;\n    return;\n  }\n\n  tmpDuringScope.el = el; // Give no `this` to user in \"during\" calling.\n\n  scopeUserDuring(transitionDuringAPI); // FIXME: if in future meet the case that some prop will be both modified in `during` and `state`,\n  // consider the issue that the prop might be incorrect when return to \"normal\" state.\n}\n\nfunction prepareShapeOrExtraTransitionFrom(mainAttr, fromEl, elOption, transFromProps) {\n  var attrOpt = elOption[mainAttr];\n\n  if (!attrOpt) {\n    return;\n  }\n\n  var elPropsInAttr = fromEl[mainAttr];\n  var transFromPropsInAttr;\n\n  if (elPropsInAttr) {\n    var transition = elOption.transition;\n    var attrTransition = attrOpt.transition;\n\n    if (attrTransition) {\n      !transFromPropsInAttr && (transFromPropsInAttr = transFromProps[mainAttr] = {});\n\n      if (isTransitionAll(attrTransition)) {\n        extend(transFromPropsInAttr, elPropsInAttr);\n      } else {\n        var transitionKeys = normalizeToArray(attrTransition);\n\n        for (var i = 0; i < transitionKeys.length; i++) {\n          var key = transitionKeys[i];\n          var elVal = elPropsInAttr[key];\n          transFromPropsInAttr[key] = elVal;\n        }\n      }\n    } else if (isTransitionAll(transition) || indexOf(transition, mainAttr) >= 0) {\n      !transFromPropsInAttr && (transFromPropsInAttr = transFromProps[mainAttr] = {});\n      var elPropsInAttrKeys = keys(elPropsInAttr);\n\n      for (var i = 0; i < elPropsInAttrKeys.length; i++) {\n        var key = elPropsInAttrKeys[i];\n        var elVal = elPropsInAttr[key];\n\n        if (isNonStyleTransitionEnabled(attrOpt[key], elVal)) {\n          transFromPropsInAttr[key] = elVal;\n        }\n      }\n    }\n  }\n}\n\nfunction prepareShapeOrExtraAllPropsFinal(mainAttr, elOption, allProps) {\n  var attrOpt = elOption[mainAttr];\n\n  if (!attrOpt) {\n    return;\n  }\n\n  var allPropsInAttr = allProps[mainAttr] = {};\n  var keysInAttr = keys(attrOpt);\n\n  for (var i = 0; i < keysInAttr.length; i++) {\n    var key = keysInAttr[i]; // To avoid share one object with different element, and\n    // to avoid user modify the object inexpectedly, have to clone.\n\n    allPropsInAttr[key] = cloneValue(attrOpt[key]);\n  }\n}\n\nfunction prepareTransformTransitionFrom(el, elOption, transFromProps) {\n  var transition = elOption.transition;\n  var transitionKeys = isTransitionAll(transition) ? TRANSFORMABLE_PROPS : normalizeToArray(transition || []);\n\n  for (var i = 0; i < transitionKeys.length; i++) {\n    var key = transitionKeys[i];\n\n    if (key === 'style' || key === 'shape' || key === 'extra') {\n      continue;\n    }\n\n    var elVal = el[key];\n\n    if (process.env.NODE_ENV !== 'production') {\n      checkTransformPropRefer(key, 'el.transition');\n    } // Do not clone, animator will perform that clone.\n\n\n    transFromProps[key] = elVal;\n  }\n}\n\nfunction prepareTransformAllPropsFinal(el, elOption, allProps) {\n  for (var i = 0; i < LEGACY_TRANSFORM_PROPS.length; i++) {\n    var legacyName = LEGACY_TRANSFORM_PROPS[i];\n    var xyName = LEGACY_TRANSFORM_PROPS_MAP[legacyName];\n    var legacyArr = elOption[legacyName];\n\n    if (legacyArr) {\n      allProps[xyName[0]] = legacyArr[0];\n      allProps[xyName[1]] = legacyArr[1];\n    }\n  }\n\n  for (var i = 0; i < TRANSFORMABLE_PROPS.length; i++) {\n    var key = TRANSFORMABLE_PROPS[i];\n\n    if (elOption[key] != null) {\n      allProps[key] = elOption[key];\n    }\n  }\n}\n\nfunction prepareStyleTransitionFrom(fromEl, elOption, styleOpt, transFromProps) {\n  if (!styleOpt) {\n    return;\n  }\n\n  var fromElStyle = fromEl.style;\n  var transFromStyleProps;\n\n  if (fromElStyle) {\n    var styleTransition = styleOpt.transition;\n    var elTransition = elOption.transition;\n\n    if (styleTransition && !isTransitionAll(styleTransition)) {\n      var transitionKeys = normalizeToArray(styleTransition);\n      !transFromStyleProps && (transFromStyleProps = transFromProps.style = {});\n\n      for (var i = 0; i < transitionKeys.length; i++) {\n        var key = transitionKeys[i];\n        var elVal = fromElStyle[key]; // Do not clone, see `checkNonStyleTansitionRefer`.\n\n        transFromStyleProps[key] = elVal;\n      }\n    } else if (fromEl.getAnimationStyleProps && (isTransitionAll(elTransition) || isTransitionAll(styleTransition) || indexOf(elTransition, 'style') >= 0)) {\n      var animationProps = fromEl.getAnimationStyleProps();\n      var animationStyleProps = animationProps ? animationProps.style : null;\n\n      if (animationStyleProps) {\n        !transFromStyleProps && (transFromStyleProps = transFromProps.style = {});\n        var styleKeys = keys(styleOpt);\n\n        for (var i = 0; i < styleKeys.length; i++) {\n          var key = styleKeys[i];\n\n          if (animationStyleProps[key]) {\n            var elVal = fromElStyle[key];\n            transFromStyleProps[key] = elVal;\n          }\n        }\n      }\n    }\n  }\n}\n\nfunction isNonStyleTransitionEnabled(optVal, elVal) {\n  // The same as `checkNonStyleTansitionRefer`.\n  return !isArrayLike(optVal) ? optVal != null && isFinite(optVal) : optVal !== elVal;\n}\n\nvar checkTransformPropRefer;\n\nif (process.env.NODE_ENV !== 'production') {\n  checkTransformPropRefer = function (key, usedIn) {\n    if (!hasOwn(TRANSFORM_PROPS_MAP, key)) {\n      warn('Prop `' + key + '` is not a permitted in `' + usedIn + '`. ' + 'Only `' + keys(TRANSFORM_PROPS_MAP).join('`, `') + '` are permitted.');\n    }\n  };\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { keys, filter, each, isArray, indexOf } from 'zrender/lib/core/util.js';\nimport { ELEMENT_ANIMATABLE_PROPS } from './customGraphicTransition.js';\nimport { getAnimationConfig } from './basicTransition.js';\nimport { warn } from '../util/log.js';\nimport { makeInner } from '../util/model.js';\nvar getStateToRestore = makeInner();\nvar KEYFRAME_EXCLUDE_KEYS = ['percent', 'easing', 'shape', 'style', 'extra'];\n/**\r\n * Stop previous keyframe animation and restore the attributes.\r\n * Avoid new keyframe animation starts with wrong internal state when the percent: 0 is not set.\r\n */\n\nexport function stopPreviousKeyframeAnimationAndRestore(el) {\n  // Stop previous keyframe animation.\n  el.stopAnimation('keyframe'); // Restore\n\n  el.attr(getStateToRestore(el));\n}\nexport function applyKeyframeAnimation(el, animationOpts, animatableModel) {\n  if (!animatableModel.isAnimationEnabled() || !animationOpts) {\n    return;\n  }\n\n  if (isArray(animationOpts)) {\n    each(animationOpts, function (singleAnimationOpts) {\n      applyKeyframeAnimation(el, singleAnimationOpts, animatableModel);\n    });\n    return;\n  }\n\n  var keyframes = animationOpts.keyframes;\n  var duration = animationOpts.duration;\n\n  if (animatableModel && duration == null) {\n    // Default to use duration of config.\n    // NOTE: animation config from payload will be ignored because they are mainly for transitions.\n    var config = getAnimationConfig('enter', animatableModel, 0);\n    duration = config && config.duration;\n  }\n\n  if (!keyframes || !duration) {\n    return;\n  }\n\n  var stateToRestore = getStateToRestore(el);\n  each(ELEMENT_ANIMATABLE_PROPS, function (targetPropName) {\n    if (targetPropName && !el[targetPropName]) {\n      return;\n    }\n\n    var animator;\n    var endFrameIsSet = false; // Sort keyframes by percent.\n\n    keyframes.sort(function (a, b) {\n      return a.percent - b.percent;\n    });\n    each(keyframes, function (kf) {\n      // Stop current animation.\n      var animators = el.animators;\n      var kfValues = targetPropName ? kf[targetPropName] : kf;\n\n      if (process.env.NODE_ENV !== 'production') {\n        if (kf.percent >= 1) {\n          endFrameIsSet = true;\n        }\n      }\n\n      if (!kfValues) {\n        return;\n      }\n\n      var propKeys = keys(kfValues);\n\n      if (!targetPropName) {\n        // PENDING performance?\n        propKeys = filter(propKeys, function (key) {\n          return indexOf(KEYFRAME_EXCLUDE_KEYS, key) < 0;\n        });\n      }\n\n      if (!propKeys.length) {\n        return;\n      }\n\n      if (!animator) {\n        animator = el.animate(targetPropName, animationOpts.loop, true);\n        animator.scope = 'keyframe';\n      }\n\n      for (var i = 0; i < animators.length; i++) {\n        // Stop all other animation that is not keyframe.\n        if (animators[i] !== animator && animators[i].targetName === animator.targetName) {\n          animators[i].stopTracks(propKeys);\n        }\n      }\n\n      targetPropName && (stateToRestore[targetPropName] = stateToRestore[targetPropName] || {});\n      var savedTarget = targetPropName ? stateToRestore[targetPropName] : stateToRestore;\n      each(propKeys, function (key) {\n        // Save original value.\n        savedTarget[key] = ((targetPropName ? el[targetPropName] : el) || {})[key];\n      });\n      animator.whenWithKeys(duration * kf.percent, kfValues, propKeys, kf.easing);\n    });\n\n    if (!animator) {\n      return;\n    }\n\n    if (process.env.NODE_ENV !== 'production') {\n      if (!endFrameIsSet) {\n        warn('End frame with percent: 1 is missing in the keyframeAnimation.', true);\n      }\n    }\n\n    animator.delay(animationOpts.delay || 0).duration(duration).start(animationOpts.easing);\n  });\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { __extends } from \"tslib\";\nimport { hasOwn, assert, isString, retrieve2, retrieve3, defaults, each, indexOf } from 'zrender/lib/core/util.js';\nimport * as graphicUtil from '../../util/graphic.js';\nimport { setDefaultStateProxy, toggleHoverEmphasis } from '../../util/states.js';\nimport * as labelStyleHelper from '../../label/labelStyle.js';\nimport { getDefaultLabel } from '../helper/labelHelper.js';\nimport { getLayoutOnAxis } from '../../layout/barGrid.js';\nimport DataDiffer from '../../data/DataDiffer.js';\nimport ChartView from '../../view/Chart.js';\nimport { createClipPath } from '../helper/createClipPathFromCoordSys.js';\nimport prepareCartesian2d from '../../coord/cartesian/prepareCustom.js';\nimport prepareGeo from '../../coord/geo/prepareCustom.js';\nimport prepareSingleAxis from '../../coord/single/prepareCustom.js';\nimport preparePolar from '../../coord/polar/prepareCustom.js';\nimport prepareCalendar from '../../coord/calendar/prepareCustom.js';\nimport Displayable from 'zrender/lib/graphic/Displayable.js';\nimport { convertToEC4StyleForCustomSerise, isEC4CompatibleStyle, convertFromEC4CompatibleStyle, warnDeprecated } from '../../util/styleCompat.js';\nimport { throwError } from '../../util/log.js';\nimport { createOrUpdatePatternFromDecal } from '../../util/decal.js';\nimport { STYLE_VISUAL_TYPE, NON_STYLE_VISUAL_PROPS, customInnerStore } from './CustomSeries.js';\nimport { applyLeaveTransition, applyUpdateTransition } from '../../animation/customGraphicTransition.js';\nimport { applyKeyframeAnimation, stopPreviousKeyframeAnimationAndRestore } from '../../animation/customGraphicKeyframeAnimation.js';\nvar EMPHASIS = 'emphasis';\nvar NORMAL = 'normal';\nvar BLUR = 'blur';\nvar SELECT = 'select';\nvar STATES = [NORMAL, EMPHASIS, BLUR, SELECT];\nvar PATH_ITEM_STYLE = {\n  normal: ['itemStyle'],\n  emphasis: [EMPHASIS, 'itemStyle'],\n  blur: [BLUR, 'itemStyle'],\n  select: [SELECT, 'itemStyle']\n};\nvar PATH_LABEL = {\n  normal: ['label'],\n  emphasis: [EMPHASIS, 'label'],\n  blur: [BLUR, 'label'],\n  select: [SELECT, 'label']\n};\nvar DEFAULT_TRANSITION = ['x', 'y']; // Use prefix to avoid index to be the same as el.name,\n// which will cause weird update animation.\n\nvar GROUP_DIFF_PREFIX = 'e\\0\\0';\nvar attachedTxInfoTmp = {\n  normal: {},\n  emphasis: {},\n  blur: {},\n  select: {}\n};\n/**\r\n * To reduce total package size of each coordinate systems, the modules `prepareCustom`\r\n * of each coordinate systems are not required by each coordinate systems directly, but\r\n * required by the module `custom`.\r\n *\r\n * prepareInfoForCustomSeries {Function}: optional\r\n *     @return {Object} {coordSys: {...}, api: {\r\n *         coord: function (data, clamp) {}, // return point in global.\r\n *         size: function (dataSize, dataItem) {} // return size of each axis in coordSys.\r\n *     }}\r\n */\n\nvar prepareCustoms = {\n  cartesian2d: prepareCartesian2d,\n  geo: prepareGeo,\n  single: prepareSingleAxis,\n  polar: preparePolar,\n  calendar: prepareCalendar\n};\n\nfunction isPath(el) {\n  return el instanceof graphicUtil.Path;\n}\n\nfunction isDisplayable(el) {\n  return el instanceof Displayable;\n}\n\nfunction copyElement(sourceEl, targetEl) {\n  targetEl.copyTransform(sourceEl);\n\n  if (isDisplayable(targetEl) && isDisplayable(sourceEl)) {\n    targetEl.setStyle(sourceEl.style);\n    targetEl.z = sourceEl.z;\n    targetEl.z2 = sourceEl.z2;\n    targetEl.zlevel = sourceEl.zlevel;\n    targetEl.invisible = sourceEl.invisible;\n    targetEl.ignore = sourceEl.ignore;\n\n    if (isPath(targetEl) && isPath(sourceEl)) {\n      targetEl.setShape(sourceEl.shape);\n    }\n  }\n}\n\nvar CustomChartView =\n/** @class */\nfunction (_super) {\n  __extends(CustomChartView, _super);\n\n  function CustomChartView() {\n    var _this = _super !== null && _super.apply(this, arguments) || this;\n\n    _this.type = CustomChartView.type;\n    return _this;\n  }\n\n  CustomChartView.prototype.render = function (customSeries, ecModel, api, payload) {\n    // Clear previously rendered progressive elements.\n    this._progressiveEls = null;\n    var oldData = this._data;\n    var data = customSeries.getData();\n    var group = this.group;\n    var renderItem = makeRenderItem(customSeries, data, ecModel, api);\n\n    if (!oldData) {\n      // Previous render is incremental render or first render.\n      // Needs remove the incremental rendered elements.\n      group.removeAll();\n    }\n\n    data.diff(oldData).add(function (newIdx) {\n      createOrUpdateItem(api, null, newIdx, renderItem(newIdx, payload), customSeries, group, data);\n    }).remove(function (oldIdx) {\n      var el = oldData.getItemGraphicEl(oldIdx);\n      el && applyLeaveTransition(el, customInnerStore(el).option, customSeries);\n    }).update(function (newIdx, oldIdx) {\n      var oldEl = oldData.getItemGraphicEl(oldIdx);\n      createOrUpdateItem(api, oldEl, newIdx, renderItem(newIdx, payload), customSeries, group, data);\n    }).execute(); // Do clipping\n\n    var clipPath = customSeries.get('clip', true) ? createClipPath(customSeries.coordinateSystem, false, customSeries) : null;\n\n    if (clipPath) {\n      group.setClipPath(clipPath);\n    } else {\n      group.removeClipPath();\n    }\n\n    this._data = data;\n  };\n\n  CustomChartView.prototype.incrementalPrepareRender = function (customSeries, ecModel, api) {\n    this.group.removeAll();\n    this._data = null;\n  };\n\n  CustomChartView.prototype.incrementalRender = function (params, customSeries, ecModel, api, payload) {\n    var data = customSeries.getData();\n    var renderItem = makeRenderItem(customSeries, data, ecModel, api);\n    var progressiveEls = this._progressiveEls = [];\n\n    function setIncrementalAndHoverLayer(el) {\n      if (!el.isGroup) {\n        el.incremental = true;\n        el.ensureState('emphasis').hoverLayer = true;\n      }\n    }\n\n    for (var idx = params.start; idx < params.end; idx++) {\n      var el = createOrUpdateItem(null, null, idx, renderItem(idx, payload), customSeries, this.group, data);\n\n      if (el) {\n        el.traverse(setIncrementalAndHoverLayer);\n        progressiveEls.push(el);\n      }\n    }\n  };\n\n  CustomChartView.prototype.eachRendered = function (cb) {\n    graphicUtil.traverseElements(this._progressiveEls || this.group, cb);\n  };\n\n  CustomChartView.prototype.filterForExposedEvent = function (eventType, query, targetEl, packedEvent) {\n    var elementName = query.element;\n\n    if (elementName == null || targetEl.name === elementName) {\n      return true;\n    } // Enable to give a name on a group made by `renderItem`, and listen\n    // events that are triggered by its descendents.\n\n\n    while ((targetEl = targetEl.__hostTarget || targetEl.parent) && targetEl !== this.group) {\n      if (targetEl.name === elementName) {\n        return true;\n      }\n    }\n\n    return false;\n  };\n\n  CustomChartView.type = 'custom';\n  return CustomChartView;\n}(ChartView);\n\nexport default CustomChartView;\n\nfunction createEl(elOption) {\n  var graphicType = elOption.type;\n  var el; // Those graphic elements are not shapes. They should not be\n  // overwritten by users, so do them first.\n\n  if (graphicType === 'path') {\n    var shape = elOption.shape; // Using pathRect brings convenience to users sacle svg path.\n\n    var pathRect = shape.width != null && shape.height != null ? {\n      x: shape.x || 0,\n      y: shape.y || 0,\n      width: shape.width,\n      height: shape.height\n    } : null;\n    var pathData = getPathData(shape); // Path is also used for icon, so layout 'center' by default.\n\n    el = graphicUtil.makePath(pathData, null, pathRect, shape.layout || 'center');\n    customInnerStore(el).customPathData = pathData;\n  } else if (graphicType === 'image') {\n    el = new graphicUtil.Image({});\n    customInnerStore(el).customImagePath = elOption.style.image;\n  } else if (graphicType === 'text') {\n    el = new graphicUtil.Text({}); // customInnerStore(el).customText = (elOption.style as TextStyleProps).text;\n  } else if (graphicType === 'group') {\n    el = new graphicUtil.Group();\n  } else if (graphicType === 'compoundPath') {\n    throw new Error('\"compoundPath\" is not supported yet.');\n  } else {\n    var Clz = graphicUtil.getShapeClass(graphicType);\n\n    if (!Clz) {\n      var errMsg = '';\n\n      if (process.env.NODE_ENV !== 'production') {\n        errMsg = 'graphic type \"' + graphicType + '\" can not be found.';\n      }\n\n      throwError(errMsg);\n    }\n\n    el = new Clz();\n  }\n\n  customInnerStore(el).customGraphicType = graphicType;\n  el.name = elOption.name; // Compat ec4: the default z2 lift is 1. If changing the number,\n  // some cases probably be broken: hierarchy layout along z, like circle packing,\n  // where emphasis only intending to modify color/border rather than lift z2.\n\n  el.z2EmphasisLift = 1;\n  el.z2SelectLift = 1;\n  return el;\n}\n\nfunction updateElNormal( // Can be null/undefined\napi, el, dataIndex, elOption, attachedTxInfo, seriesModel, isInit) {\n  // Stop and restore before update any other attributes.\n  stopPreviousKeyframeAnimationAndRestore(el);\n  var txCfgOpt = attachedTxInfo && attachedTxInfo.normal.cfg;\n\n  if (txCfgOpt) {\n    // PENDING: whether use user object directly rather than clone?\n    // TODO:5.0 textConfig transition animation?\n    el.setTextConfig(txCfgOpt);\n  } // Default transition ['x', 'y']\n\n\n  if (elOption && elOption.transition == null) {\n    elOption.transition = DEFAULT_TRANSITION;\n  } // Do some normalization on style.\n\n\n  var styleOpt = elOption && elOption.style;\n\n  if (styleOpt) {\n    if (el.type === 'text') {\n      var textOptionStyle = styleOpt; // Compatible with ec4: if `textFill` or `textStroke` exists use them.\n\n      hasOwn(textOptionStyle, 'textFill') && (textOptionStyle.fill = textOptionStyle.textFill);\n      hasOwn(textOptionStyle, 'textStroke') && (textOptionStyle.stroke = textOptionStyle.textStroke);\n    }\n\n    var decalPattern = void 0;\n    var decalObj = isPath(el) ? styleOpt.decal : null;\n\n    if (api && decalObj) {\n      decalObj.dirty = true;\n      decalPattern = createOrUpdatePatternFromDecal(decalObj, api);\n    } // Always overwrite in case user specify this prop.\n\n\n    styleOpt.__decalPattern = decalPattern;\n  }\n\n  if (isDisplayable(el)) {\n    if (styleOpt) {\n      var decalPattern = styleOpt.__decalPattern;\n\n      if (decalPattern) {\n        styleOpt.decal = decalPattern;\n      }\n    }\n  }\n\n  applyUpdateTransition(el, elOption, seriesModel, {\n    dataIndex: dataIndex,\n    isInit: isInit,\n    clearStyle: true\n  });\n  applyKeyframeAnimation(el, elOption.keyframeAnimation, seriesModel);\n}\n\nfunction updateElOnState(state, el, elStateOpt, styleOpt, attachedTxInfo) {\n  var elDisplayable = el.isGroup ? null : el;\n  var txCfgOpt = attachedTxInfo && attachedTxInfo[state].cfg; // PENDING:5.0 support customize scale change and transition animation?\n\n  if (elDisplayable) {\n    // By default support auto lift color when hover whether `emphasis` specified.\n    var stateObj = elDisplayable.ensureState(state);\n\n    if (styleOpt === false) {\n      var existingEmphasisState = elDisplayable.getState(state);\n\n      if (existingEmphasisState) {\n        existingEmphasisState.style = null;\n      }\n    } else {\n      // style is needed to enable default emphasis.\n      stateObj.style = styleOpt || null;\n    } // If `elOption.styleEmphasis` or `elOption.emphasis.style` is `false`,\n    // remove hover style.\n    // If `elOption.textConfig` or `elOption.emphasis.textConfig` is null/undefined, it does not\n    // make sense. So for simplicity, we do not ditinguish `hasOwnProperty` and null/undefined.\n\n\n    if (txCfgOpt) {\n      stateObj.textConfig = txCfgOpt;\n    }\n\n    setDefaultStateProxy(elDisplayable);\n  }\n}\n\nfunction updateZ(el, elOption, seriesModel) {\n  // Group not support textContent and not support z yet.\n  if (el.isGroup) {\n    return;\n  }\n\n  var elDisplayable = el;\n  var currentZ = seriesModel.currentZ;\n  var currentZLevel = seriesModel.currentZLevel; // Always erase.\n\n  elDisplayable.z = currentZ;\n  elDisplayable.zlevel = currentZLevel; // z2 must not be null/undefined, otherwise sort error may occur.\n\n  var optZ2 = elOption.z2;\n  optZ2 != null && (elDisplayable.z2 = optZ2 || 0);\n\n  for (var i = 0; i < STATES.length; i++) {\n    updateZForEachState(elDisplayable, elOption, STATES[i]);\n  }\n}\n\nfunction updateZForEachState(elDisplayable, elOption, state) {\n  var isNormal = state === NORMAL;\n  var elStateOpt = isNormal ? elOption : retrieveStateOption(elOption, state);\n  var optZ2 = elStateOpt ? elStateOpt.z2 : null;\n  var stateObj;\n\n  if (optZ2 != null) {\n    // Do not `ensureState` until required.\n    stateObj = isNormal ? elDisplayable : elDisplayable.ensureState(state);\n    stateObj.z2 = optZ2 || 0;\n  }\n}\n\nfunction makeRenderItem(customSeries, data, ecModel, api) {\n  var renderItem = customSeries.get('renderItem');\n  var coordSys = customSeries.coordinateSystem;\n  var prepareResult = {};\n\n  if (coordSys) {\n    if (process.env.NODE_ENV !== 'production') {\n      assert(renderItem, 'series.render is required.');\n      assert(coordSys.prepareCustoms || prepareCustoms[coordSys.type], 'This coordSys does not support custom series.');\n    } // `coordSys.prepareCustoms` is used for external coord sys like bmap.\n\n\n    prepareResult = coordSys.prepareCustoms ? coordSys.prepareCustoms(coordSys) : prepareCustoms[coordSys.type](coordSys);\n  }\n\n  var userAPI = defaults({\n    getWidth: api.getWidth,\n    getHeight: api.getHeight,\n    getZr: api.getZr,\n    getDevicePixelRatio: api.getDevicePixelRatio,\n    value: value,\n    style: style,\n    ordinalRawValue: ordinalRawValue,\n    styleEmphasis: styleEmphasis,\n    visual: visual,\n    barLayout: barLayout,\n    currentSeriesIndices: currentSeriesIndices,\n    font: font\n  }, prepareResult.api || {});\n  var userParams = {\n    // The life cycle of context: current round of rendering.\n    // The global life cycle is probably not necessary, because\n    // user can store global status by themselves.\n    context: {},\n    seriesId: customSeries.id,\n    seriesName: customSeries.name,\n    seriesIndex: customSeries.seriesIndex,\n    coordSys: prepareResult.coordSys,\n    dataInsideLength: data.count(),\n    encode: wrapEncodeDef(customSeries.getData())\n  }; // If someday intending to refactor them to a class, should consider do not\n  // break change: currently these attribute member are encapsulated in a closure\n  // so that do not need to force user to call these method with a scope.\n  // Do not support call `api` asynchronously without dataIndexInside input.\n\n  var currDataIndexInside;\n  var currItemModel;\n  var currItemStyleModels = {};\n  var currLabelModels = {};\n  var seriesItemStyleModels = {};\n  var seriesLabelModels = {};\n\n  for (var i = 0; i < STATES.length; i++) {\n    var stateName = STATES[i];\n    seriesItemStyleModels[stateName] = customSeries.getModel(PATH_ITEM_STYLE[stateName]);\n    seriesLabelModels[stateName] = customSeries.getModel(PATH_LABEL[stateName]);\n  }\n\n  function getItemModel(dataIndexInside) {\n    return dataIndexInside === currDataIndexInside ? currItemModel || (currItemModel = data.getItemModel(dataIndexInside)) : data.getItemModel(dataIndexInside);\n  }\n\n  function getItemStyleModel(dataIndexInside, state) {\n    return !data.hasItemOption ? seriesItemStyleModels[state] : dataIndexInside === currDataIndexInside ? currItemStyleModels[state] || (currItemStyleModels[state] = getItemModel(dataIndexInside).getModel(PATH_ITEM_STYLE[state])) : getItemModel(dataIndexInside).getModel(PATH_ITEM_STYLE[state]);\n  }\n\n  function getLabelModel(dataIndexInside, state) {\n    return !data.hasItemOption ? seriesLabelModels[state] : dataIndexInside === currDataIndexInside ? currLabelModels[state] || (currLabelModels[state] = getItemModel(dataIndexInside).getModel(PATH_LABEL[state])) : getItemModel(dataIndexInside).getModel(PATH_LABEL[state]);\n  }\n\n  return function (dataIndexInside, payload) {\n    currDataIndexInside = dataIndexInside;\n    currItemModel = null;\n    currItemStyleModels = {};\n    currLabelModels = {};\n    return renderItem && renderItem(defaults({\n      dataIndexInside: dataIndexInside,\n      dataIndex: data.getRawIndex(dataIndexInside),\n      // Can be used for optimization when zoom or roam.\n      actionType: payload ? payload.type : null\n    }, userParams), userAPI);\n  };\n  /**\r\n   * @public\r\n   * @param dim by default 0.\r\n   * @param dataIndexInside by default `currDataIndexInside`.\r\n   */\n\n  function value(dim, dataIndexInside) {\n    dataIndexInside == null && (dataIndexInside = currDataIndexInside);\n    return data.getStore().get(data.getDimensionIndex(dim || 0), dataIndexInside);\n  }\n  /**\r\n   * @public\r\n   * @param dim by default 0.\r\n   * @param dataIndexInside by default `currDataIndexInside`.\r\n   */\n\n\n  function ordinalRawValue(dim, dataIndexInside) {\n    dataIndexInside == null && (dataIndexInside = currDataIndexInside);\n    dim = dim || 0;\n    var dimInfo = data.getDimensionInfo(dim);\n\n    if (!dimInfo) {\n      var dimIndex = data.getDimensionIndex(dim);\n      return dimIndex >= 0 ? data.getStore().get(dimIndex, dataIndexInside) : undefined;\n    }\n\n    var val = data.get(dimInfo.name, dataIndexInside);\n    var ordinalMeta = dimInfo && dimInfo.ordinalMeta;\n    return ordinalMeta ? ordinalMeta.categories[val] : val;\n  }\n  /**\r\n   * @deprecated The original intention of `api.style` is enable to set itemStyle\r\n   * like other series. But it is not necessary and not easy to give a strict definition\r\n   * of what it returns. And since echarts5 it needs to be make compat work. So\r\n   * deprecates it since echarts5.\r\n   *\r\n   * By default, `visual` is applied to style (to support visualMap).\r\n   * `visual.color` is applied at `fill`. If user want apply visual.color on `stroke`,\r\n   * it can be implemented as:\r\n   * `api.style({stroke: api.visual('color'), fill: null})`;\r\n   *\r\n   * [Compat]: since ec5, RectText has been separated from its hosts el.\r\n   * so `api.style()` will only return the style from `itemStyle` but not handle `label`\r\n   * any more. But `series.label` config is never published in doc.\r\n   * We still compat it in `api.style()`. But not encourage to use it and will still not\r\n   * to pulish it to doc.\r\n   * @public\r\n   * @param dataIndexInside by default `currDataIndexInside`.\r\n   */\n\n\n  function style(userProps, dataIndexInside) {\n    if (process.env.NODE_ENV !== 'production') {\n      warnDeprecated('api.style', 'Please write literal style directly instead.');\n    }\n\n    dataIndexInside == null && (dataIndexInside = currDataIndexInside);\n    var style = data.getItemVisual(dataIndexInside, 'style');\n    var visualColor = style && style.fill;\n    var opacity = style && style.opacity;\n    var itemStyle = getItemStyleModel(dataIndexInside, NORMAL).getItemStyle();\n    visualColor != null && (itemStyle.fill = visualColor);\n    opacity != null && (itemStyle.opacity = opacity);\n    var opt = {\n      inheritColor: isString(visualColor) ? visualColor : '#000'\n    };\n    var labelModel = getLabelModel(dataIndexInside, NORMAL); // Now that the feature of \"auto adjust text fill/stroke\" has been migrated to zrender\n    // since ec5, we should set `isAttached` as `false` here and make compat in\n    // `convertToEC4StyleForCustomSerise`.\n\n    var textStyle = labelStyleHelper.createTextStyle(labelModel, null, opt, false, true);\n    textStyle.text = labelModel.getShallow('show') ? retrieve2(customSeries.getFormattedLabel(dataIndexInside, NORMAL), getDefaultLabel(data, dataIndexInside)) : null;\n    var textConfig = labelStyleHelper.createTextConfig(labelModel, opt, false);\n    preFetchFromExtra(userProps, itemStyle);\n    itemStyle = convertToEC4StyleForCustomSerise(itemStyle, textStyle, textConfig);\n    userProps && applyUserPropsAfter(itemStyle, userProps);\n    itemStyle.legacy = true;\n    return itemStyle;\n  }\n  /**\r\n   * @deprecated The reason see `api.style()`\r\n   * @public\r\n   * @param dataIndexInside by default `currDataIndexInside`.\r\n   */\n\n\n  function styleEmphasis(userProps, dataIndexInside) {\n    if (process.env.NODE_ENV !== 'production') {\n      warnDeprecated('api.styleEmphasis', 'Please write literal style directly instead.');\n    }\n\n    dataIndexInside == null && (dataIndexInside = currDataIndexInside);\n    var itemStyle = getItemStyleModel(dataIndexInside, EMPHASIS).getItemStyle();\n    var labelModel = getLabelModel(dataIndexInside, EMPHASIS);\n    var textStyle = labelStyleHelper.createTextStyle(labelModel, null, null, true, true);\n    textStyle.text = labelModel.getShallow('show') ? retrieve3(customSeries.getFormattedLabel(dataIndexInside, EMPHASIS), customSeries.getFormattedLabel(dataIndexInside, NORMAL), getDefaultLabel(data, dataIndexInside)) : null;\n    var textConfig = labelStyleHelper.createTextConfig(labelModel, null, true);\n    preFetchFromExtra(userProps, itemStyle);\n    itemStyle = convertToEC4StyleForCustomSerise(itemStyle, textStyle, textConfig);\n    userProps && applyUserPropsAfter(itemStyle, userProps);\n    itemStyle.legacy = true;\n    return itemStyle;\n  }\n\n  function applyUserPropsAfter(itemStyle, extra) {\n    for (var key in extra) {\n      if (hasOwn(extra, key)) {\n        itemStyle[key] = extra[key];\n      }\n    }\n  }\n\n  function preFetchFromExtra(extra, itemStyle) {\n    // A trick to retrieve those props firstly, which are used to\n    // apply auto inside fill/stroke in `convertToEC4StyleForCustomSerise`.\n    // (It's not reasonable but only for a degree of compat)\n    if (extra) {\n      extra.textFill && (itemStyle.textFill = extra.textFill);\n      extra.textPosition && (itemStyle.textPosition = extra.textPosition);\n    }\n  }\n  /**\r\n   * @public\r\n   * @param dataIndexInside by default `currDataIndexInside`.\r\n   */\n\n\n  function visual(visualType, dataIndexInside) {\n    dataIndexInside == null && (dataIndexInside = currDataIndexInside);\n\n    if (hasOwn(STYLE_VISUAL_TYPE, visualType)) {\n      var style_1 = data.getItemVisual(dataIndexInside, 'style');\n      return style_1 ? style_1[STYLE_VISUAL_TYPE[visualType]] : null;\n    } // Only support these visuals. Other visual might be inner tricky\n    // for performance (like `style`), do not expose to users.\n\n\n    if (hasOwn(NON_STYLE_VISUAL_PROPS, visualType)) {\n      return data.getItemVisual(dataIndexInside, visualType);\n    }\n  }\n  /**\r\n   * @public\r\n   * @return If not support, return undefined.\r\n   */\n\n\n  function barLayout(opt) {\n    if (coordSys.type === 'cartesian2d') {\n      var baseAxis = coordSys.getBaseAxis();\n      return getLayoutOnAxis(defaults({\n        axis: baseAxis\n      }, opt));\n    }\n  }\n  /**\r\n   * @public\r\n   */\n\n\n  function currentSeriesIndices() {\n    return ecModel.getCurrentSeriesIndices();\n  }\n  /**\r\n   * @public\r\n   * @return font string\r\n   */\n\n\n  function font(opt) {\n    return labelStyleHelper.getFont(opt, ecModel);\n  }\n}\n\nfunction wrapEncodeDef(data) {\n  var encodeDef = {};\n  each(data.dimensions, function (dimName) {\n    var dimInfo = data.getDimensionInfo(dimName);\n\n    if (!dimInfo.isExtraCoord) {\n      var coordDim = dimInfo.coordDim;\n      var dataDims = encodeDef[coordDim] = encodeDef[coordDim] || [];\n      dataDims[dimInfo.coordDimIndex] = data.getDimensionIndex(dimName);\n    }\n  });\n  return encodeDef;\n}\n\nfunction createOrUpdateItem(api, existsEl, dataIndex, elOption, seriesModel, group, data) {\n  // [Rule]\n  // If `renderItem` returns `null`/`undefined`/`false`, remove the previous el if existing.\n  //     (It seems that violate the \"merge\" principle, but most of users probably intuitively\n  //     regard \"return;\" as \"show nothing element whatever\", so make a exception to meet the\n  //     most cases.)\n  // The rule or \"merge\" see [STRATEGY_MERGE].\n  // If `elOption` is `null`/`undefined`/`false` (when `renderItem` returns nothing).\n  if (!elOption) {\n    group.remove(existsEl);\n    return;\n  }\n\n  var el = doCreateOrUpdateEl(api, existsEl, dataIndex, elOption, seriesModel, group);\n  el && data.setItemGraphicEl(dataIndex, el);\n  el && toggleHoverEmphasis(el, elOption.focus, elOption.blurScope, elOption.emphasisDisabled);\n  return el;\n}\n\nfunction doCreateOrUpdateEl(api, existsEl, dataIndex, elOption, seriesModel, group) {\n  if (process.env.NODE_ENV !== 'production') {\n    assert(elOption, 'should not have an null/undefined element setting');\n  }\n\n  var toBeReplacedIdx = -1;\n  var oldEl = existsEl;\n\n  if (existsEl && doesElNeedRecreate(existsEl, elOption, seriesModel) // || (\n  //     // PENDING: even in one-to-one mapping case, if el is marked as morph,\n  //     // do not sure whether the el will be mapped to another el with different\n  //     // hierarchy in Group tree. So always recreate el rather than reuse the el.\n  //     morphHelper && morphHelper.isOneToOneFrom(el)\n  // )\n  ) {\n    // Should keep at the original index, otherwise \"merge by index\" will be incorrect.\n    toBeReplacedIdx = indexOf(group.childrenRef(), existsEl);\n    existsEl = null;\n  }\n\n  var isInit = !existsEl;\n  var el = existsEl;\n\n  if (!el) {\n    el = createEl(elOption);\n\n    if (oldEl) {\n      copyElement(oldEl, el);\n    }\n  } else {\n    // FIMXE:NEXT unified clearState?\n    // If in some case the performance issue arised, consider\n    // do not clearState but update cached normal state directly.\n    el.clearStates();\n  } // Need to set morph: false explictly to disable automatically morphing.\n\n\n  if (elOption.morph === false) {\n    el.disableMorphing = true;\n  } else if (el.disableMorphing) {\n    el.disableMorphing = false;\n  }\n\n  attachedTxInfoTmp.normal.cfg = attachedTxInfoTmp.normal.conOpt = attachedTxInfoTmp.emphasis.cfg = attachedTxInfoTmp.emphasis.conOpt = attachedTxInfoTmp.blur.cfg = attachedTxInfoTmp.blur.conOpt = attachedTxInfoTmp.select.cfg = attachedTxInfoTmp.select.conOpt = null;\n  attachedTxInfoTmp.isLegacy = false;\n  doCreateOrUpdateAttachedTx(el, dataIndex, elOption, seriesModel, isInit, attachedTxInfoTmp);\n  doCreateOrUpdateClipPath(el, dataIndex, elOption, seriesModel, isInit);\n  updateElNormal(api, el, dataIndex, elOption, attachedTxInfoTmp, seriesModel, isInit); // `elOption.info` enables user to mount some info on\n  // elements and use them in event handlers.\n  // Update them only when user specified, otherwise, remain.\n\n  hasOwn(elOption, 'info') && (customInnerStore(el).info = elOption.info);\n\n  for (var i = 0; i < STATES.length; i++) {\n    var stateName = STATES[i];\n\n    if (stateName !== NORMAL) {\n      var otherStateOpt = retrieveStateOption(elOption, stateName);\n      var otherStyleOpt = retrieveStyleOptionOnState(elOption, otherStateOpt, stateName);\n      updateElOnState(stateName, el, otherStateOpt, otherStyleOpt, attachedTxInfoTmp);\n    }\n  }\n\n  updateZ(el, elOption, seriesModel);\n\n  if (elOption.type === 'group') {\n    mergeChildren(api, el, dataIndex, elOption, seriesModel);\n  }\n\n  if (toBeReplacedIdx >= 0) {\n    group.replaceAt(el, toBeReplacedIdx);\n  } else {\n    group.add(el);\n  }\n\n  return el;\n} // `el` must not be null/undefined.\n\n\nfunction doesElNeedRecreate(el, elOption, seriesModel) {\n  var elInner = customInnerStore(el);\n  var elOptionType = elOption.type;\n  var elOptionShape = elOption.shape;\n  var elOptionStyle = elOption.style;\n  return (// Always create new if universal transition is enabled.\n    // Because we do transition after render. It needs to know what old element is. Replacement will loose it.\n    seriesModel.isUniversalTransitionEnabled() // If `elOptionType` is `null`, follow the merge principle.\n    || elOptionType != null && elOptionType !== elInner.customGraphicType || elOptionType === 'path' && hasOwnPathData(elOptionShape) && getPathData(elOptionShape) !== elInner.customPathData || elOptionType === 'image' && hasOwn(elOptionStyle, 'image') && elOptionStyle.image !== elInner.customImagePath // // FIXME test and remove this restriction?\n    // || (elOptionType === 'text'\n    //     && hasOwn(elOptionStyle, 'text')\n    //     && (elOptionStyle as TextStyleProps).text !== elInner.customText\n    // )\n\n  );\n}\n\nfunction doCreateOrUpdateClipPath(el, dataIndex, elOption, seriesModel, isInit) {\n  // Based on the \"merge\" principle, if no clipPath provided,\n  // do nothing. The exists clip will be totally removed only if\n  // `el.clipPath` is `false`. Otherwise it will be merged/replaced.\n  var clipPathOpt = elOption.clipPath;\n\n  if (clipPathOpt === false) {\n    if (el && el.getClipPath()) {\n      el.removeClipPath();\n    }\n  } else if (clipPathOpt) {\n    var clipPath = el.getClipPath();\n\n    if (clipPath && doesElNeedRecreate(clipPath, clipPathOpt, seriesModel)) {\n      clipPath = null;\n    }\n\n    if (!clipPath) {\n      clipPath = createEl(clipPathOpt);\n\n      if (process.env.NODE_ENV !== 'production') {\n        assert(isPath(clipPath), 'Only any type of `path` can be used in `clipPath`, rather than ' + clipPath.type + '.');\n      }\n\n      el.setClipPath(clipPath);\n    }\n\n    updateElNormal(null, clipPath, dataIndex, clipPathOpt, null, seriesModel, isInit);\n  } // If not define `clipPath` in option, do nothing unnecessary.\n\n}\n\nfunction doCreateOrUpdateAttachedTx(el, dataIndex, elOption, seriesModel, isInit, attachedTxInfo) {\n  // Group does not support textContent temporarily until necessary.\n  if (el.isGroup) {\n    return;\n  } // Normal must be called before emphasis, for `isLegacy` detection.\n\n\n  processTxInfo(elOption, null, attachedTxInfo);\n  processTxInfo(elOption, EMPHASIS, attachedTxInfo); // If `elOption.textConfig` or `elOption.textContent` is null/undefined, it does not make sense.\n  // So for simplicity, if \"elOption hasOwnProperty of them but be null/undefined\", we do not\n  // trade them as set to null to el.\n  // Especially:\n  // `elOption.textContent: false` means remove textContent.\n  // `elOption.textContent.emphasis.style: false` means remove the style from emphasis state.\n\n  var txConOptNormal = attachedTxInfo.normal.conOpt;\n  var txConOptEmphasis = attachedTxInfo.emphasis.conOpt;\n  var txConOptBlur = attachedTxInfo.blur.conOpt;\n  var txConOptSelect = attachedTxInfo.select.conOpt;\n\n  if (txConOptNormal != null || txConOptEmphasis != null || txConOptSelect != null || txConOptBlur != null) {\n    var textContent = el.getTextContent();\n\n    if (txConOptNormal === false) {\n      textContent && el.removeTextContent();\n    } else {\n      txConOptNormal = attachedTxInfo.normal.conOpt = txConOptNormal || {\n        type: 'text'\n      };\n\n      if (!textContent) {\n        textContent = createEl(txConOptNormal);\n        el.setTextContent(textContent);\n      } else {\n        // If in some case the performance issue arised, consider\n        // do not clearState but update cached normal state directly.\n        textContent.clearStates();\n      }\n\n      updateElNormal(null, textContent, dataIndex, txConOptNormal, null, seriesModel, isInit);\n      var txConStlOptNormal = txConOptNormal && txConOptNormal.style;\n\n      for (var i = 0; i < STATES.length; i++) {\n        var stateName = STATES[i];\n\n        if (stateName !== NORMAL) {\n          var txConOptOtherState = attachedTxInfo[stateName].conOpt;\n          updateElOnState(stateName, textContent, txConOptOtherState, retrieveStyleOptionOnState(txConOptNormal, txConOptOtherState, stateName), null);\n        }\n      }\n\n      txConStlOptNormal ? textContent.dirty() : textContent.markRedraw();\n    }\n  }\n}\n\nfunction processTxInfo(elOption, state, attachedTxInfo) {\n  var stateOpt = !state ? elOption : retrieveStateOption(elOption, state);\n  var styleOpt = !state ? elOption.style : retrieveStyleOptionOnState(elOption, stateOpt, EMPHASIS);\n  var elType = elOption.type;\n  var txCfg = stateOpt ? stateOpt.textConfig : null;\n  var txConOptNormal = elOption.textContent;\n  var txConOpt = !txConOptNormal ? null : !state ? txConOptNormal : retrieveStateOption(txConOptNormal, state);\n\n  if (styleOpt && ( // Because emphasis style has little info to detect legacy,\n  // if normal is legacy, emphasis is trade as legacy.\n  attachedTxInfo.isLegacy || isEC4CompatibleStyle(styleOpt, elType, !!txCfg, !!txConOpt))) {\n    attachedTxInfo.isLegacy = true;\n    var convertResult = convertFromEC4CompatibleStyle(styleOpt, elType, !state); // Explicitly specified `textConfig` and `textContent` has higher priority than\n    // the ones generated by legacy style. Otherwise if users use them and `api.style`\n    // at the same time, they not both work and hardly to known why.\n\n    if (!txCfg && convertResult.textConfig) {\n      txCfg = convertResult.textConfig;\n    }\n\n    if (!txConOpt && convertResult.textContent) {\n      txConOpt = convertResult.textContent;\n    }\n  }\n\n  if (!state && txConOpt) {\n    var txConOptNormal_1 = txConOpt; // `textContent: {type: 'text'}`, the \"type\" is easy to be missing. So we tolerate it.\n\n    !txConOptNormal_1.type && (txConOptNormal_1.type = 'text');\n\n    if (process.env.NODE_ENV !== 'production') {\n      // Do not tolerate incorrcet type for forward compat.\n      assert(txConOptNormal_1.type === 'text', 'textContent.type must be \"text\"');\n    }\n  }\n\n  var info = !state ? attachedTxInfo.normal : attachedTxInfo[state];\n  info.cfg = txCfg;\n  info.conOpt = txConOpt;\n}\n\nfunction retrieveStateOption(elOption, state) {\n  return !state ? elOption : elOption ? elOption[state] : null;\n}\n\nfunction retrieveStyleOptionOnState(stateOptionNormal, stateOption, state) {\n  var style = stateOption && stateOption.style;\n\n  if (style == null && state === EMPHASIS && stateOptionNormal) {\n    style = stateOptionNormal.styleEmphasis;\n  }\n\n  return style;\n} // Usage:\n// (1) By default, `elOption.$mergeChildren` is `'byIndex'`, which indicates\n//     that the existing children will not be removed, and enables the feature\n//     that update some of the props of some of the children simply by construct\n//     the returned children of `renderItem` like:\n//     `var children = group.children = []; children[3] = {opacity: 0.5};`\n// (2) If `elOption.$mergeChildren` is `'byName'`, add/update/remove children\n//     by child.name. But that might be lower performance.\n// (3) If `elOption.$mergeChildren` is `false`, the existing children will be\n//     replaced totally.\n// (4) If `!elOption.children`, following the \"merge\" principle, nothing will\n//     happen.\n// (5) If `elOption.$mergeChildren` is not `false` neither `'byName'` and the\n//     `el` is a group, and if any of the new child is null, it means to remove\n//     the element at the same index, if exists. On the other hand, if the new\n//     child is and empty object `{}`, it means to keep the element not changed.\n//\n// For implementation simpleness, do not provide a direct way to remove single\n// child (otherwise the total indices of the children array have to be modified).\n// User can remove a single child by setting its `ignore` to `true`.\n\n\nfunction mergeChildren(api, el, dataIndex, elOption, seriesModel) {\n  var newChildren = elOption.children;\n  var newLen = newChildren ? newChildren.length : 0;\n  var mergeChildren = elOption.$mergeChildren; // `diffChildrenByName` has been deprecated.\n\n  var byName = mergeChildren === 'byName' || elOption.diffChildrenByName;\n  var notMerge = mergeChildren === false; // For better performance on roam update, only enter if necessary.\n\n  if (!newLen && !byName && !notMerge) {\n    return;\n  }\n\n  if (byName) {\n    diffGroupChildren({\n      api: api,\n      oldChildren: el.children() || [],\n      newChildren: newChildren || [],\n      dataIndex: dataIndex,\n      seriesModel: seriesModel,\n      group: el\n    });\n    return;\n  }\n\n  notMerge && el.removeAll(); // Mapping children of a group simply by index, which\n  // might be better performance.\n\n  var index = 0;\n\n  for (; index < newLen; index++) {\n    var newChild = newChildren[index];\n    var oldChild = el.childAt(index);\n\n    if (newChild) {\n      if (newChild.ignore == null) {\n        // The old child is set to be ignored if null (see comments\n        // below). So we need to set ignore to be false back.\n        newChild.ignore = false;\n      }\n\n      doCreateOrUpdateEl(api, oldChild, dataIndex, newChild, seriesModel, el);\n    } else {\n      if (process.env.NODE_ENV !== 'production') {\n        assert(oldChild, 'renderItem should not return a group containing elements' + ' as null/undefined/{} if they do not exist before.');\n      } // If the new element option is null, it means to remove the old\n      // element. But we cannot really remove the element from the group\n      // directly, because the element order may not be stable when this\n      // element is added back. So we set the element to be ignored.\n\n\n      oldChild.ignore = true;\n    }\n  }\n\n  for (var i = el.childCount() - 1; i >= index; i--) {\n    var child = el.childAt(i);\n    removeChildFromGroup(el, child, seriesModel);\n  }\n}\n\nfunction removeChildFromGroup(group, child, seriesModel) {\n  // Do not support leave elements that are not mentioned in the latest\n  // `renderItem` return. Otherwise users may not have a clear and simple\n  // concept that how to control all of the elements.\n  child && applyLeaveTransition(child, customInnerStore(group).option, seriesModel);\n}\n\nfunction diffGroupChildren(context) {\n  new DataDiffer(context.oldChildren, context.newChildren, getKey, getKey, context).add(processAddUpdate).update(processAddUpdate).remove(processRemove).execute();\n}\n\nfunction getKey(item, idx) {\n  var name = item && item.name;\n  return name != null ? name : GROUP_DIFF_PREFIX + idx;\n}\n\nfunction processAddUpdate(newIndex, oldIndex) {\n  var context = this.context;\n  var childOption = newIndex != null ? context.newChildren[newIndex] : null;\n  var child = oldIndex != null ? context.oldChildren[oldIndex] : null;\n  doCreateOrUpdateEl(context.api, child, context.dataIndex, childOption, context.seriesModel, context.group);\n}\n\nfunction processRemove(oldIndex) {\n  var context = this.context;\n  var child = context.oldChildren[oldIndex];\n  child && applyLeaveTransition(child, customInnerStore(child).option, context.seriesModel);\n}\n/**\r\n * @return SVG Path data.\r\n */\n\n\nfunction getPathData(shape) {\n  // \"d\" follows the SVG convention.\n  return shape && (shape.pathData || shape.d);\n}\n\nfunction hasOwnPathData(shape) {\n  return shape && (hasOwn(shape, 'pathData') || hasOwn(shape, 'd'));\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nexport default function calendarPrepareCustom(coordSys) {\n  var rect = coordSys.getRect();\n  var rangeInfo = coordSys.getRangeInfo();\n  return {\n    coordSys: {\n      type: 'calendar',\n      x: rect.x,\n      y: rect.y,\n      width: rect.width,\n      height: rect.height,\n      cellWidth: coordSys.getCellWidth(),\n      cellHeight: coordSys.getCellHeight(),\n      rangeInfo: {\n        start: rangeInfo.start,\n        end: rangeInfo.end,\n        weeks: rangeInfo.weeks,\n        dayCount: rangeInfo.allDay\n      }\n    },\n    api: {\n      coord: function (data, clamp) {\n        return coordSys.dataToPoint(data, clamp);\n      }\n    }\n  };\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport * as zrUtil from 'zrender/lib/core/util.js';\nimport * as graphic from '../../util/graphic.js';\nimport * as axisPointerModelHelper from './modelHelper.js';\nimport * as eventTool from 'zrender/lib/core/event.js';\nimport * as throttleUtil from '../../util/throttle.js';\nimport { makeInner } from '../../util/model.js';\nvar inner = makeInner();\nvar clone = zrUtil.clone;\nvar bind = zrUtil.bind;\n/**\r\n * Base axis pointer class in 2D.\r\n */\n\nvar BaseAxisPointer =\n/** @class */\nfunction () {\n  function BaseAxisPointer() {\n    this._dragging = false;\n    /**\r\n     * In px, arbitrary value. Do not set too small,\r\n     * no animation is ok for most cases.\r\n     */\n\n    this.animationThreshold = 15;\n  }\n  /**\r\n   * @implement\r\n   */\n\n\n  BaseAxisPointer.prototype.render = function (axisModel, axisPointerModel, api, forceRender) {\n    var value = axisPointerModel.get('value');\n    var status = axisPointerModel.get('status'); // Bind them to `this`, not in closure, otherwise they will not\n    // be replaced when user calling setOption in not merge mode.\n\n    this._axisModel = axisModel;\n    this._axisPointerModel = axisPointerModel;\n    this._api = api; // Optimize: `render` will be called repeatedly during mouse move.\n    // So it is power consuming if performing `render` each time,\n    // especially on mobile device.\n\n    if (!forceRender && this._lastValue === value && this._lastStatus === status) {\n      return;\n    }\n\n    this._lastValue = value;\n    this._lastStatus = status;\n    var group = this._group;\n    var handle = this._handle;\n\n    if (!status || status === 'hide') {\n      // Do not clear here, for animation better.\n      group && group.hide();\n      handle && handle.hide();\n      return;\n    }\n\n    group && group.show();\n    handle && handle.show(); // Otherwise status is 'show'\n\n    var elOption = {};\n    this.makeElOption(elOption, value, axisModel, axisPointerModel, api); // Enable change axis pointer type.\n\n    var graphicKey = elOption.graphicKey;\n\n    if (graphicKey !== this._lastGraphicKey) {\n      this.clear(api);\n    }\n\n    this._lastGraphicKey = graphicKey;\n    var moveAnimation = this._moveAnimation = this.determineAnimation(axisModel, axisPointerModel);\n\n    if (!group) {\n      group = this._group = new graphic.Group();\n      this.createPointerEl(group, elOption, axisModel, axisPointerModel);\n      this.createLabelEl(group, elOption, axisModel, axisPointerModel);\n      api.getZr().add(group);\n    } else {\n      var doUpdateProps = zrUtil.curry(updateProps, axisPointerModel, moveAnimation);\n      this.updatePointerEl(group, elOption, doUpdateProps);\n      this.updateLabelEl(group, elOption, doUpdateProps, axisPointerModel);\n    }\n\n    updateMandatoryProps(group, axisPointerModel, true);\n\n    this._renderHandle(value);\n  };\n  /**\r\n   * @implement\r\n   */\n\n\n  BaseAxisPointer.prototype.remove = function (api) {\n    this.clear(api);\n  };\n  /**\r\n   * @implement\r\n   */\n\n\n  BaseAxisPointer.prototype.dispose = function (api) {\n    this.clear(api);\n  };\n  /**\r\n   * @protected\r\n   */\n\n\n  BaseAxisPointer.prototype.determineAnimation = function (axisModel, axisPointerModel) {\n    var animation = axisPointerModel.get('animation');\n    var axis = axisModel.axis;\n    var isCategoryAxis = axis.type === 'category';\n    var useSnap = axisPointerModel.get('snap'); // Value axis without snap always do not snap.\n\n    if (!useSnap && !isCategoryAxis) {\n      return false;\n    }\n\n    if (animation === 'auto' || animation == null) {\n      var animationThreshold = this.animationThreshold;\n\n      if (isCategoryAxis && axis.getBandWidth() > animationThreshold) {\n        return true;\n      } // It is important to auto animation when snap used. Consider if there is\n      // a dataZoom, animation will be disabled when too many points exist, while\n      // it will be enabled for better visual effect when little points exist.\n\n\n      if (useSnap) {\n        var seriesDataCount = axisPointerModelHelper.getAxisInfo(axisModel).seriesDataCount;\n        var axisExtent = axis.getExtent(); // Approximate band width\n\n        return Math.abs(axisExtent[0] - axisExtent[1]) / seriesDataCount > animationThreshold;\n      }\n\n      return false;\n    }\n\n    return animation === true;\n  };\n  /**\r\n   * add {pointer, label, graphicKey} to elOption\r\n   * @protected\r\n   */\n\n\n  BaseAxisPointer.prototype.makeElOption = function (elOption, value, axisModel, axisPointerModel, api) {// Should be implemenented by sub-class.\n  };\n  /**\r\n   * @protected\r\n   */\n\n\n  BaseAxisPointer.prototype.createPointerEl = function (group, elOption, axisModel, axisPointerModel) {\n    var pointerOption = elOption.pointer;\n\n    if (pointerOption) {\n      var pointerEl = inner(group).pointerEl = new graphic[pointerOption.type](clone(elOption.pointer));\n      group.add(pointerEl);\n    }\n  };\n  /**\r\n   * @protected\r\n   */\n\n\n  BaseAxisPointer.prototype.createLabelEl = function (group, elOption, axisModel, axisPointerModel) {\n    if (elOption.label) {\n      var labelEl = inner(group).labelEl = new graphic.Text(clone(elOption.label));\n      group.add(labelEl);\n      updateLabelShowHide(labelEl, axisPointerModel);\n    }\n  };\n  /**\r\n   * @protected\r\n   */\n\n\n  BaseAxisPointer.prototype.updatePointerEl = function (group, elOption, updateProps) {\n    var pointerEl = inner(group).pointerEl;\n\n    if (pointerEl && elOption.pointer) {\n      pointerEl.setStyle(elOption.pointer.style);\n      updateProps(pointerEl, {\n        shape: elOption.pointer.shape\n      });\n    }\n  };\n  /**\r\n   * @protected\r\n   */\n\n\n  BaseAxisPointer.prototype.updateLabelEl = function (group, elOption, updateProps, axisPointerModel) {\n    var labelEl = inner(group).labelEl;\n\n    if (labelEl) {\n      labelEl.setStyle(elOption.label.style);\n      updateProps(labelEl, {\n        // Consider text length change in vertical axis, animation should\n        // be used on shape, otherwise the effect will be weird.\n        // TODOTODO\n        // shape: elOption.label.shape,\n        x: elOption.label.x,\n        y: elOption.label.y\n      });\n      updateLabelShowHide(labelEl, axisPointerModel);\n    }\n  };\n  /**\r\n   * @private\r\n   */\n\n\n  BaseAxisPointer.prototype._renderHandle = function (value) {\n    if (this._dragging || !this.updateHandleTransform) {\n      return;\n    }\n\n    var axisPointerModel = this._axisPointerModel;\n\n    var zr = this._api.getZr();\n\n    var handle = this._handle;\n    var handleModel = axisPointerModel.getModel('handle');\n    var status = axisPointerModel.get('status');\n\n    if (!handleModel.get('show') || !status || status === 'hide') {\n      handle && zr.remove(handle);\n      this._handle = null;\n      return;\n    }\n\n    var isInit;\n\n    if (!this._handle) {\n      isInit = true;\n      handle = this._handle = graphic.createIcon(handleModel.get('icon'), {\n        cursor: 'move',\n        draggable: true,\n        onmousemove: function (e) {\n          // For mobile device, prevent screen slider on the button.\n          eventTool.stop(e.event);\n        },\n        onmousedown: bind(this._onHandleDragMove, this, 0, 0),\n        drift: bind(this._onHandleDragMove, this),\n        ondragend: bind(this._onHandleDragEnd, this)\n      });\n      zr.add(handle);\n    }\n\n    updateMandatoryProps(handle, axisPointerModel, false); // update style\n\n    handle.setStyle(handleModel.getItemStyle(null, ['color', 'borderColor', 'borderWidth', 'opacity', 'shadowColor', 'shadowBlur', 'shadowOffsetX', 'shadowOffsetY'])); // update position\n\n    var handleSize = handleModel.get('size');\n\n    if (!zrUtil.isArray(handleSize)) {\n      handleSize = [handleSize, handleSize];\n    }\n\n    handle.scaleX = handleSize[0] / 2;\n    handle.scaleY = handleSize[1] / 2;\n    throttleUtil.createOrUpdate(this, '_doDispatchAxisPointer', handleModel.get('throttle') || 0, 'fixRate');\n\n    this._moveHandleToValue(value, isInit);\n  };\n\n  BaseAxisPointer.prototype._moveHandleToValue = function (value, isInit) {\n    updateProps(this._axisPointerModel, !isInit && this._moveAnimation, this._handle, getHandleTransProps(this.getHandleTransform(value, this._axisModel, this._axisPointerModel)));\n  };\n\n  BaseAxisPointer.prototype._onHandleDragMove = function (dx, dy) {\n    var handle = this._handle;\n\n    if (!handle) {\n      return;\n    }\n\n    this._dragging = true; // Persistent for throttle.\n\n    var trans = this.updateHandleTransform(getHandleTransProps(handle), [dx, dy], this._axisModel, this._axisPointerModel);\n    this._payloadInfo = trans;\n    handle.stopAnimation();\n    handle.attr(getHandleTransProps(trans));\n    inner(handle).lastProp = null;\n\n    this._doDispatchAxisPointer();\n  };\n  /**\r\n   * Throttled method.\r\n   */\n\n\n  BaseAxisPointer.prototype._doDispatchAxisPointer = function () {\n    var handle = this._handle;\n\n    if (!handle) {\n      return;\n    }\n\n    var payloadInfo = this._payloadInfo;\n    var axisModel = this._axisModel;\n\n    this._api.dispatchAction({\n      type: 'updateAxisPointer',\n      x: payloadInfo.cursorPoint[0],\n      y: payloadInfo.cursorPoint[1],\n      tooltipOption: payloadInfo.tooltipOption,\n      axesInfo: [{\n        axisDim: axisModel.axis.dim,\n        axisIndex: axisModel.componentIndex\n      }]\n    });\n  };\n\n  BaseAxisPointer.prototype._onHandleDragEnd = function () {\n    this._dragging = false;\n    var handle = this._handle;\n\n    if (!handle) {\n      return;\n    }\n\n    var value = this._axisPointerModel.get('value'); // Consider snap or categroy axis, handle may be not consistent with\n    // axisPointer. So move handle to align the exact value position when\n    // drag ended.\n\n\n    this._moveHandleToValue(value); // For the effect: tooltip will be shown when finger holding on handle\n    // button, and will be hidden after finger left handle button.\n\n\n    this._api.dispatchAction({\n      type: 'hideTip'\n    });\n  };\n  /**\r\n   * @private\r\n   */\n\n\n  BaseAxisPointer.prototype.clear = function (api) {\n    this._lastValue = null;\n    this._lastStatus = null;\n    var zr = api.getZr();\n    var group = this._group;\n    var handle = this._handle;\n\n    if (zr && group) {\n      this._lastGraphicKey = null;\n      group && zr.remove(group);\n      handle && zr.remove(handle);\n      this._group = null;\n      this._handle = null;\n      this._payloadInfo = null;\n    }\n\n    throttleUtil.clear(this, '_doDispatchAxisPointer');\n  };\n  /**\r\n   * @protected\r\n   */\n\n\n  BaseAxisPointer.prototype.doClear = function () {// Implemented by sub-class if necessary.\n  };\n\n  BaseAxisPointer.prototype.buildLabel = function (xy, wh, xDimIndex) {\n    xDimIndex = xDimIndex || 0;\n    return {\n      x: xy[xDimIndex],\n      y: xy[1 - xDimIndex],\n      width: wh[xDimIndex],\n      height: wh[1 - xDimIndex]\n    };\n  };\n\n  return BaseAxisPointer;\n}();\n\nfunction updateProps(animationModel, moveAnimation, el, props) {\n  // Animation optimize.\n  if (!propsEqual(inner(el).lastProp, props)) {\n    inner(el).lastProp = props;\n    moveAnimation ? graphic.updateProps(el, props, animationModel) : (el.stopAnimation(), el.attr(props));\n  }\n}\n\nfunction propsEqual(lastProps, newProps) {\n  if (zrUtil.isObject(lastProps) && zrUtil.isObject(newProps)) {\n    var equals_1 = true;\n    zrUtil.each(newProps, function (item, key) {\n      equals_1 = equals_1 && propsEqual(lastProps[key], item);\n    });\n    return !!equals_1;\n  } else {\n    return lastProps === newProps;\n  }\n}\n\nfunction updateLabelShowHide(labelEl, axisPointerModel) {\n  labelEl[axisPointerModel.get(['label', 'show']) ? 'show' : 'hide']();\n}\n\nfunction getHandleTransProps(trans) {\n  return {\n    x: trans.x || 0,\n    y: trans.y || 0,\n    rotation: trans.rotation || 0\n  };\n}\n\nfunction updateMandatoryProps(group, axisPointerModel, silent) {\n  var z = axisPointerModel.get('z');\n  var zlevel = axisPointerModel.get('zlevel');\n  group && group.traverse(function (el) {\n    if (el.type !== 'group') {\n      z != null && (el.z = z);\n      zlevel != null && (el.zlevel = zlevel);\n      el.silent = silent;\n    }\n  });\n}\n\nexport default BaseAxisPointer;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport * as zrUtil from 'zrender/lib/core/util.js';\nimport * as graphic from '../../util/graphic.js';\nimport * as textContain from 'zrender/lib/contain/text.js';\nimport * as formatUtil from '../../util/format.js';\nimport * as matrix from 'zrender/lib/core/matrix.js';\nimport * as axisHelper from '../../coord/axisHelper.js';\nimport AxisBuilder from '../axis/AxisBuilder.js';\nimport { createTextStyle } from '../../label/labelStyle.js';\nexport function buildElStyle(axisPointerModel) {\n  var axisPointerType = axisPointerModel.get('type');\n  var styleModel = axisPointerModel.getModel(axisPointerType + 'Style');\n  var style;\n\n  if (axisPointerType === 'line') {\n    style = styleModel.getLineStyle();\n    style.fill = null;\n  } else if (axisPointerType === 'shadow') {\n    style = styleModel.getAreaStyle();\n    style.stroke = null;\n  }\n\n  return style;\n}\n/**\r\n * @param {Function} labelPos {align, verticalAlign, position}\r\n */\n\nexport function buildLabelElOption(elOption, axisModel, axisPointerModel, api, labelPos) {\n  var value = axisPointerModel.get('value');\n  var text = getValueLabel(value, axisModel.axis, axisModel.ecModel, axisPointerModel.get('seriesDataIndices'), {\n    precision: axisPointerModel.get(['label', 'precision']),\n    formatter: axisPointerModel.get(['label', 'formatter'])\n  });\n  var labelModel = axisPointerModel.getModel('label');\n  var paddings = formatUtil.normalizeCssArray(labelModel.get('padding') || 0);\n  var font = labelModel.getFont();\n  var textRect = textContain.getBoundingRect(text, font);\n  var position = labelPos.position;\n  var width = textRect.width + paddings[1] + paddings[3];\n  var height = textRect.height + paddings[0] + paddings[2]; // Adjust by align.\n\n  var align = labelPos.align;\n  align === 'right' && (position[0] -= width);\n  align === 'center' && (position[0] -= width / 2);\n  var verticalAlign = labelPos.verticalAlign;\n  verticalAlign === 'bottom' && (position[1] -= height);\n  verticalAlign === 'middle' && (position[1] -= height / 2); // Not overflow ec container\n\n  confineInContainer(position, width, height, api);\n  var bgColor = labelModel.get('backgroundColor');\n\n  if (!bgColor || bgColor === 'auto') {\n    bgColor = axisModel.get(['axisLine', 'lineStyle', 'color']);\n  }\n\n  elOption.label = {\n    // shape: {x: 0, y: 0, width: width, height: height, r: labelModel.get('borderRadius')},\n    x: position[0],\n    y: position[1],\n    style: createTextStyle(labelModel, {\n      text: text,\n      font: font,\n      fill: labelModel.getTextColor(),\n      padding: paddings,\n      backgroundColor: bgColor\n    }),\n    // Label should be over axisPointer.\n    z2: 10\n  };\n} // Do not overflow ec container\n\nfunction confineInContainer(position, width, height, api) {\n  var viewWidth = api.getWidth();\n  var viewHeight = api.getHeight();\n  position[0] = Math.min(position[0] + width, viewWidth) - width;\n  position[1] = Math.min(position[1] + height, viewHeight) - height;\n  position[0] = Math.max(position[0], 0);\n  position[1] = Math.max(position[1], 0);\n}\n\nexport function getValueLabel(value, axis, ecModel, seriesDataIndices, opt) {\n  value = axis.scale.parse(value);\n  var text = axis.scale.getLabel({\n    value: value\n  }, {\n    // If `precision` is set, width can be fixed (like '12.00500'), which\n    // helps to debounce when when moving label.\n    precision: opt.precision\n  });\n  var formatter = opt.formatter;\n\n  if (formatter) {\n    var params_1 = {\n      value: axisHelper.getAxisRawValue(axis, {\n        value: value\n      }),\n      axisDimension: axis.dim,\n      axisIndex: axis.index,\n      seriesData: []\n    };\n    zrUtil.each(seriesDataIndices, function (idxItem) {\n      var series = ecModel.getSeriesByIndex(idxItem.seriesIndex);\n      var dataIndex = idxItem.dataIndexInside;\n      var dataParams = series && series.getDataParams(dataIndex);\n      dataParams && params_1.seriesData.push(dataParams);\n    });\n\n    if (zrUtil.isString(formatter)) {\n      text = formatter.replace('{value}', text);\n    } else if (zrUtil.isFunction(formatter)) {\n      text = formatter(params_1);\n    }\n  }\n\n  return text;\n}\nexport function getTransformedPosition(axis, value, layoutInfo) {\n  var transform = matrix.create();\n  matrix.rotate(transform, transform, layoutInfo.rotation);\n  matrix.translate(transform, transform, layoutInfo.position);\n  return graphic.applyTransform([axis.dataToCoord(value), (layoutInfo.labelOffset || 0) + (layoutInfo.labelDirection || 1) * (layoutInfo.labelMargin || 0)], transform);\n}\nexport function buildCartesianSingleLabelElOption(value, elOption, layoutInfo, axisModel, axisPointerModel, api) {\n  // @ts-ignore\n  var textLayout = AxisBuilder.innerTextLayout(layoutInfo.rotation, 0, layoutInfo.labelDirection);\n  layoutInfo.labelMargin = axisPointerModel.get(['label', 'margin']);\n  buildLabelElOption(elOption, axisModel, axisPointerModel, api, {\n    position: getTransformedPosition(axisModel.axis, value, layoutInfo),\n    align: textLayout.textAlign,\n    verticalAlign: textLayout.textVerticalAlign\n  });\n}\nexport function makeLineShape(p1, p2, xDimIndex) {\n  xDimIndex = xDimIndex || 0;\n  return {\n    x1: p1[xDimIndex],\n    y1: p1[1 - xDimIndex],\n    x2: p2[xDimIndex],\n    y2: p2[1 - xDimIndex]\n  };\n}\nexport function makeRectShape(xy, wh, xDimIndex) {\n  xDimIndex = xDimIndex || 0;\n  return {\n    x: xy[xDimIndex],\n    y: xy[1 - xDimIndex],\n    width: wh[xDimIndex],\n    height: wh[1 - xDimIndex]\n  };\n}\nexport function makeSectorShape(cx, cy, r0, r, startAngle, endAngle) {\n  return {\n    cx: cx,\n    cy: cy,\n    r0: r0,\n    r: r,\n    startAngle: startAngle,\n    endAngle: endAngle,\n    clockwise: true\n  };\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { __extends } from \"tslib\";\nimport BaseAxisPointer from './BaseAxisPointer.js';\nimport * as viewHelper from './viewHelper.js';\nimport * as cartesianAxisHelper from '../../coord/cartesian/cartesianAxisHelper.js';\n\nvar CartesianAxisPointer =\n/** @class */\nfunction (_super) {\n  __extends(CartesianAxisPointer, _super);\n\n  function CartesianAxisPointer() {\n    return _super !== null && _super.apply(this, arguments) || this;\n  }\n  /**\r\n   * @override\r\n   */\n\n\n  CartesianAxisPointer.prototype.makeElOption = function (elOption, value, axisModel, axisPointerModel, api) {\n    var axis = axisModel.axis;\n    var grid = axis.grid;\n    var axisPointerType = axisPointerModel.get('type');\n    var otherExtent = getCartesian(grid, axis).getOtherAxis(axis).getGlobalExtent();\n    var pixelValue = axis.toGlobalCoord(axis.dataToCoord(value, true));\n\n    if (axisPointerType && axisPointerType !== 'none') {\n      var elStyle = viewHelper.buildElStyle(axisPointerModel);\n      var pointerOption = pointerShapeBuilder[axisPointerType](axis, pixelValue, otherExtent);\n      pointerOption.style = elStyle;\n      elOption.graphicKey = pointerOption.type;\n      elOption.pointer = pointerOption;\n    }\n\n    var layoutInfo = cartesianAxisHelper.layout(grid.model, axisModel);\n    viewHelper.buildCartesianSingleLabelElOption( // @ts-ignore\n    value, elOption, layoutInfo, axisModel, axisPointerModel, api);\n  };\n  /**\r\n   * @override\r\n   */\n\n\n  CartesianAxisPointer.prototype.getHandleTransform = function (value, axisModel, axisPointerModel) {\n    var layoutInfo = cartesianAxisHelper.layout(axisModel.axis.grid.model, axisModel, {\n      labelInside: false\n    }); // @ts-ignore\n\n    layoutInfo.labelMargin = axisPointerModel.get(['handle', 'margin']);\n    var pos = viewHelper.getTransformedPosition(axisModel.axis, value, layoutInfo);\n    return {\n      x: pos[0],\n      y: pos[1],\n      rotation: layoutInfo.rotation + (layoutInfo.labelDirection < 0 ? Math.PI : 0)\n    };\n  };\n  /**\r\n   * @override\r\n   */\n\n\n  CartesianAxisPointer.prototype.updateHandleTransform = function (transform, delta, axisModel, axisPointerModel) {\n    var axis = axisModel.axis;\n    var grid = axis.grid;\n    var axisExtent = axis.getGlobalExtent(true);\n    var otherExtent = getCartesian(grid, axis).getOtherAxis(axis).getGlobalExtent();\n    var dimIndex = axis.dim === 'x' ? 0 : 1;\n    var currPosition = [transform.x, transform.y];\n    currPosition[dimIndex] += delta[dimIndex];\n    currPosition[dimIndex] = Math.min(axisExtent[1], currPosition[dimIndex]);\n    currPosition[dimIndex] = Math.max(axisExtent[0], currPosition[dimIndex]);\n    var cursorOtherValue = (otherExtent[1] + otherExtent[0]) / 2;\n    var cursorPoint = [cursorOtherValue, cursorOtherValue];\n    cursorPoint[dimIndex] = currPosition[dimIndex]; // Make tooltip do not overlap axisPointer and in the middle of the grid.\n\n    var tooltipOptions = [{\n      verticalAlign: 'middle'\n    }, {\n      align: 'center'\n    }];\n    return {\n      x: currPosition[0],\n      y: currPosition[1],\n      rotation: transform.rotation,\n      cursorPoint: cursorPoint,\n      tooltipOption: tooltipOptions[dimIndex]\n    };\n  };\n\n  return CartesianAxisPointer;\n}(BaseAxisPointer);\n\nfunction getCartesian(grid, axis) {\n  var opt = {};\n  opt[axis.dim + 'AxisIndex'] = axis.index;\n  return grid.getCartesian(opt);\n}\n\nvar pointerShapeBuilder = {\n  line: function (axis, pixelValue, otherExtent) {\n    var targetShape = viewHelper.makeLineShape([pixelValue, otherExtent[0]], [pixelValue, otherExtent[1]], getAxisDimIndex(axis));\n    return {\n      type: 'Line',\n      subPixelOptimize: true,\n      shape: targetShape\n    };\n  },\n  shadow: function (axis, pixelValue, otherExtent) {\n    var bandWidth = Math.max(1, axis.getBandWidth());\n    var span = otherExtent[1] - otherExtent[0];\n    return {\n      type: 'Rect',\n      shape: viewHelper.makeRectShape([pixelValue - bandWidth / 2, otherExtent[0]], [bandWidth, span], getAxisDimIndex(axis))\n    };\n  }\n};\n\nfunction getAxisDimIndex(axis) {\n  return axis.dim === 'x' ? 0 : 1;\n}\n\nexport default CartesianAxisPointer;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { __extends } from \"tslib\";\nimport ComponentModel from '../../model/Component.js';\n\nvar AxisPointerModel =\n/** @class */\nfunction (_super) {\n  __extends(AxisPointerModel, _super);\n\n  function AxisPointerModel() {\n    var _this = _super !== null && _super.apply(this, arguments) || this;\n\n    _this.type = AxisPointerModel.type;\n    return _this;\n  }\n\n  AxisPointerModel.type = 'axisPointer';\n  AxisPointerModel.defaultOption = {\n    // 'auto' means that show when triggered by tooltip or handle.\n    show: 'auto',\n    // zlevel: 0,\n    z: 50,\n    type: 'line',\n    // axispointer triggered by tootip determine snap automatically,\n    // see `modelHelper`.\n    snap: false,\n    triggerTooltip: true,\n    triggerEmphasis: true,\n    value: null,\n    status: null,\n    link: [],\n    // Do not set 'auto' here, otherwise global animation: false\n    // will not effect at this axispointer.\n    animation: null,\n    animationDurationUpdate: 200,\n    lineStyle: {\n      color: '#B9BEC9',\n      width: 1,\n      type: 'dashed'\n    },\n    shadowStyle: {\n      color: 'rgba(210,219,238,0.2)'\n    },\n    label: {\n      show: true,\n      formatter: null,\n      precision: 'auto',\n      margin: 3,\n      color: '#fff',\n      padding: [5, 7, 5, 7],\n      backgroundColor: 'auto',\n      borderColor: null,\n      borderWidth: 0,\n      borderRadius: 3\n    },\n    handle: {\n      show: false,\n      // eslint-disable-next-line\n      icon: 'M10.7,11.9v-1.3H9.3v1.3c-4.9,0.3-8.8,4.4-8.8,9.4c0,5,3.9,9.1,8.8,9.4h1.3c4.9-0.3,8.8-4.4,8.8-9.4C19.5,16.3,15.6,12.2,10.7,11.9z M13.3,24.4H6.7v-1.2h6.6z M13.3,22H6.7v-1.2h6.6z M13.3,19.6H6.7v-1.2h6.6z',\n      size: 45,\n      // handle margin is from symbol center to axis, which is stable when circular move.\n      margin: 50,\n      // color: '#1b8bbd'\n      // color: '#2f4554'\n      color: '#333',\n      shadowBlur: 3,\n      shadowColor: '#aaa',\n      shadowOffsetX: 0,\n      shadowOffsetY: 2,\n      // For mobile performance\n      throttle: 40\n    }\n  };\n  return AxisPointerModel;\n}(ComponentModel);\n\nexport default AxisPointerModel;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport * as zrUtil from 'zrender/lib/core/util.js';\nimport env from 'zrender/lib/core/env.js';\nimport { makeInner } from '../../util/model.js';\nvar inner = makeInner();\nvar each = zrUtil.each;\n/**\r\n * @param {string} key\r\n * @param {module:echarts/ExtensionAPI} api\r\n * @param {Function} handler\r\n *      param: {string} currTrigger\r\n *      param: {Array.<number>} point\r\n */\n\nexport function register(key, api, handler) {\n  if (env.node) {\n    return;\n  }\n\n  var zr = api.getZr();\n  inner(zr).records || (inner(zr).records = {});\n  initGlobalListeners(zr, api);\n  var record = inner(zr).records[key] || (inner(zr).records[key] = {});\n  record.handler = handler;\n}\n\nfunction initGlobalListeners(zr, api) {\n  if (inner(zr).initialized) {\n    return;\n  }\n\n  inner(zr).initialized = true;\n  useHandler('click', zrUtil.curry(doEnter, 'click'));\n  useHandler('mousemove', zrUtil.curry(doEnter, 'mousemove')); // useHandler('mouseout', onLeave);\n\n  useHandler('globalout', onLeave);\n\n  function useHandler(eventType, cb) {\n    zr.on(eventType, function (e) {\n      var dis = makeDispatchAction(api);\n      each(inner(zr).records, function (record) {\n        record && cb(record, e, dis.dispatchAction);\n      });\n      dispatchTooltipFinally(dis.pendings, api);\n    });\n  }\n}\n\nfunction dispatchTooltipFinally(pendings, api) {\n  var showLen = pendings.showTip.length;\n  var hideLen = pendings.hideTip.length;\n  var actuallyPayload;\n\n  if (showLen) {\n    actuallyPayload = pendings.showTip[showLen - 1];\n  } else if (hideLen) {\n    actuallyPayload = pendings.hideTip[hideLen - 1];\n  }\n\n  if (actuallyPayload) {\n    actuallyPayload.dispatchAction = null;\n    api.dispatchAction(actuallyPayload);\n  }\n}\n\nfunction onLeave(record, e, dispatchAction) {\n  record.handler('leave', null, dispatchAction);\n}\n\nfunction doEnter(currTrigger, record, e, dispatchAction) {\n  record.handler(currTrigger, e, dispatchAction);\n}\n\nfunction makeDispatchAction(api) {\n  var pendings = {\n    showTip: [],\n    hideTip: []\n  }; // FIXME\n  // better approach?\n  // 'showTip' and 'hideTip' can be triggered by axisPointer and tooltip,\n  // which may be conflict, (axisPointer call showTip but tooltip call hideTip);\n  // So we have to add \"final stage\" to merge those dispatched actions.\n\n  var dispatchAction = function (payload) {\n    var pendingList = pendings[payload.type];\n\n    if (pendingList) {\n      pendingList.push(payload);\n    } else {\n      payload.dispatchAction = dispatchAction;\n      api.dispatchAction(payload);\n    }\n  };\n\n  return {\n    dispatchAction: dispatchAction,\n    pendings: pendings\n  };\n}\n\nexport function unregister(key, api) {\n  if (env.node) {\n    return;\n  }\n\n  var zr = api.getZr();\n  var record = (inner(zr).records || {})[key];\n\n  if (record) {\n    inner(zr).records[key] = null;\n  }\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { __extends } from \"tslib\";\nimport * as globalListener from './globalListener.js';\nimport ComponentView from '../../view/Component.js';\n\nvar AxisPointerView =\n/** @class */\nfunction (_super) {\n  __extends(AxisPointerView, _super);\n\n  function AxisPointerView() {\n    var _this = _super !== null && _super.apply(this, arguments) || this;\n\n    _this.type = AxisPointerView.type;\n    return _this;\n  }\n\n  AxisPointerView.prototype.render = function (globalAxisPointerModel, ecModel, api) {\n    var globalTooltipModel = ecModel.getComponent('tooltip');\n    var triggerOn = globalAxisPointerModel.get('triggerOn') || globalTooltipModel && globalTooltipModel.get('triggerOn') || 'mousemove|click'; // Register global listener in AxisPointerView to enable\n    // AxisPointerView to be independent to Tooltip.\n\n    globalListener.register('axisPointer', api, function (currTrigger, e, dispatchAction) {\n      // If 'none', it is not controlled by mouse totally.\n      if (triggerOn !== 'none' && (currTrigger === 'leave' || triggerOn.indexOf(currTrigger) >= 0)) {\n        dispatchAction({\n          type: 'updateAxisPointer',\n          currTrigger: currTrigger,\n          x: e && e.offsetX,\n          y: e && e.offsetY\n        });\n      }\n    });\n  };\n\n  AxisPointerView.prototype.remove = function (ecModel, api) {\n    globalListener.unregister('axisPointer', api);\n  };\n\n  AxisPointerView.prototype.dispose = function (ecModel, api) {\n    globalListener.unregister('axisPointer', api);\n  };\n\n  AxisPointerView.type = 'axisPointer';\n  return AxisPointerView;\n}(ComponentView);\n\nexport default AxisPointerView;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport * as zrUtil from 'zrender/lib/core/util.js';\nimport * as modelUtil from '../../util/model.js';\n/**\r\n * @param finder contains {seriesIndex, dataIndex, dataIndexInside}\r\n * @param ecModel\r\n * @return  {point: [x, y], el: ...} point Will not be null.\r\n */\n\nexport default function findPointFromSeries(finder, ecModel) {\n  var point = [];\n  var seriesIndex = finder.seriesIndex;\n  var seriesModel;\n\n  if (seriesIndex == null || !(seriesModel = ecModel.getSeriesByIndex(seriesIndex))) {\n    return {\n      point: []\n    };\n  }\n\n  var data = seriesModel.getData();\n  var dataIndex = modelUtil.queryDataIndex(data, finder);\n\n  if (dataIndex == null || dataIndex < 0 || zrUtil.isArray(dataIndex)) {\n    return {\n      point: []\n    };\n  }\n\n  var el = data.getItemGraphicEl(dataIndex);\n  var coordSys = seriesModel.coordinateSystem;\n\n  if (seriesModel.getTooltipPosition) {\n    point = seriesModel.getTooltipPosition(dataIndex) || [];\n  } else if (coordSys && coordSys.dataToPoint) {\n    if (finder.isStacked) {\n      var baseAxis = coordSys.getBaseAxis();\n      var valueAxis = coordSys.getOtherAxis(baseAxis);\n      var valueAxisDim = valueAxis.dim;\n      var baseAxisDim = baseAxis.dim;\n      var baseDataOffset = valueAxisDim === 'x' || valueAxisDim === 'radius' ? 1 : 0;\n      var baseDim = data.mapDimension(baseAxisDim);\n      var stackedData = [];\n      stackedData[baseDataOffset] = data.get(baseDim, dataIndex);\n      stackedData[1 - baseDataOffset] = data.get(data.getCalculationInfo('stackResultDimension'), dataIndex);\n      point = coordSys.dataToPoint(stackedData) || [];\n    } else {\n      point = coordSys.dataToPoint(data.getValues(zrUtil.map(coordSys.dimensions, function (dim) {\n        return data.mapDimension(dim);\n      }), dataIndex)) || [];\n    }\n  } else if (el) {\n    // Use graphic bounding rect\n    var rect = el.getBoundingRect().clone();\n    rect.applyTransform(el.transform);\n    point = [rect.x + rect.width / 2, rect.y + rect.height / 2];\n  }\n\n  return {\n    point: point,\n    el: el\n  };\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { makeInner } from '../../util/model.js';\nimport * as modelHelper from './modelHelper.js';\nimport findPointFromSeries from './findPointFromSeries.js';\nimport { each, curry, bind, extend } from 'zrender/lib/core/util.js';\nvar inner = makeInner();\n/**\r\n * Basic logic: check all axis, if they do not demand show/highlight,\r\n * then hide/downplay them.\r\n *\r\n * @return content of event obj for echarts.connect.\r\n */\n\nexport default function axisTrigger(payload, ecModel, api) {\n  var currTrigger = payload.currTrigger;\n  var point = [payload.x, payload.y];\n  var finder = payload;\n  var dispatchAction = payload.dispatchAction || bind(api.dispatchAction, api);\n  var coordSysAxesInfo = ecModel.getComponent('axisPointer').coordSysAxesInfo; // Pending\n  // See #6121. But we are not able to reproduce it yet.\n\n  if (!coordSysAxesInfo) {\n    return;\n  }\n\n  if (illegalPoint(point)) {\n    // Used in the default behavior of `connection`: use the sample seriesIndex\n    // and dataIndex. And also used in the tooltipView trigger.\n    point = findPointFromSeries({\n      seriesIndex: finder.seriesIndex,\n      // Do not use dataIndexInside from other ec instance.\n      // FIXME: auto detect it?\n      dataIndex: finder.dataIndex\n    }, ecModel).point;\n  }\n\n  var isIllegalPoint = illegalPoint(point); // Axis and value can be specified when calling dispatchAction({type: 'updateAxisPointer'}).\n  // Notice: In this case, it is difficult to get the `point` (which is necessary to show\n  // tooltip, so if point is not given, we just use the point found by sample seriesIndex\n  // and dataIndex.\n\n  var inputAxesInfo = finder.axesInfo;\n  var axesInfo = coordSysAxesInfo.axesInfo;\n  var shouldHide = currTrigger === 'leave' || illegalPoint(point);\n  var outputPayload = {};\n  var showValueMap = {};\n  var dataByCoordSys = {\n    list: [],\n    map: {}\n  };\n  var updaters = {\n    showPointer: curry(showPointer, showValueMap),\n    showTooltip: curry(showTooltip, dataByCoordSys)\n  }; // Process for triggered axes.\n\n  each(coordSysAxesInfo.coordSysMap, function (coordSys, coordSysKey) {\n    // If a point given, it must be contained by the coordinate system.\n    var coordSysContainsPoint = isIllegalPoint || coordSys.containPoint(point);\n    each(coordSysAxesInfo.coordSysAxesInfo[coordSysKey], function (axisInfo, key) {\n      var axis = axisInfo.axis;\n      var inputAxisInfo = findInputAxisInfo(inputAxesInfo, axisInfo); // If no inputAxesInfo, no axis is restricted.\n\n      if (!shouldHide && coordSysContainsPoint && (!inputAxesInfo || inputAxisInfo)) {\n        var val = inputAxisInfo && inputAxisInfo.value;\n\n        if (val == null && !isIllegalPoint) {\n          val = axis.pointToData(point);\n        }\n\n        val != null && processOnAxis(axisInfo, val, updaters, false, outputPayload);\n      }\n    });\n  }); // Process for linked axes.\n\n  var linkTriggers = {};\n  each(axesInfo, function (tarAxisInfo, tarKey) {\n    var linkGroup = tarAxisInfo.linkGroup; // If axis has been triggered in the previous stage, it should not be triggered by link.\n\n    if (linkGroup && !showValueMap[tarKey]) {\n      each(linkGroup.axesInfo, function (srcAxisInfo, srcKey) {\n        var srcValItem = showValueMap[srcKey]; // If srcValItem exist, source axis is triggered, so link to target axis.\n\n        if (srcAxisInfo !== tarAxisInfo && srcValItem) {\n          var val = srcValItem.value;\n          linkGroup.mapper && (val = tarAxisInfo.axis.scale.parse(linkGroup.mapper(val, makeMapperParam(srcAxisInfo), makeMapperParam(tarAxisInfo))));\n          linkTriggers[tarAxisInfo.key] = val;\n        }\n      });\n    }\n  });\n  each(linkTriggers, function (val, tarKey) {\n    processOnAxis(axesInfo[tarKey], val, updaters, true, outputPayload);\n  });\n  updateModelActually(showValueMap, axesInfo, outputPayload);\n  dispatchTooltipActually(dataByCoordSys, point, payload, dispatchAction);\n  dispatchHighDownActually(axesInfo, dispatchAction, api);\n  return outputPayload;\n}\n\nfunction processOnAxis(axisInfo, newValue, updaters, noSnap, outputFinder) {\n  var axis = axisInfo.axis;\n\n  if (axis.scale.isBlank() || !axis.containData(newValue)) {\n    return;\n  }\n\n  if (!axisInfo.involveSeries) {\n    updaters.showPointer(axisInfo, newValue);\n    return;\n  } // Heavy calculation. So put it after axis.containData checking.\n\n\n  var payloadInfo = buildPayloadsBySeries(newValue, axisInfo);\n  var payloadBatch = payloadInfo.payloadBatch;\n  var snapToValue = payloadInfo.snapToValue; // Fill content of event obj for echarts.connect.\n  // By default use the first involved series data as a sample to connect.\n\n  if (payloadBatch[0] && outputFinder.seriesIndex == null) {\n    extend(outputFinder, payloadBatch[0]);\n  } // If no linkSource input, this process is for collecting link\n  // target, where snap should not be accepted.\n\n\n  if (!noSnap && axisInfo.snap) {\n    if (axis.containData(snapToValue) && snapToValue != null) {\n      newValue = snapToValue;\n    }\n  }\n\n  updaters.showPointer(axisInfo, newValue, payloadBatch); // Tooltip should always be snapToValue, otherwise there will be\n  // incorrect \"axis value ~ series value\" mapping displayed in tooltip.\n\n  updaters.showTooltip(axisInfo, payloadInfo, snapToValue);\n}\n\nfunction buildPayloadsBySeries(value, axisInfo) {\n  var axis = axisInfo.axis;\n  var dim = axis.dim;\n  var snapToValue = value;\n  var payloadBatch = [];\n  var minDist = Number.MAX_VALUE;\n  var minDiff = -1;\n  each(axisInfo.seriesModels, function (series, idx) {\n    var dataDim = series.getData().mapDimensionsAll(dim);\n    var seriesNestestValue;\n    var dataIndices;\n\n    if (series.getAxisTooltipData) {\n      var result = series.getAxisTooltipData(dataDim, value, axis);\n      dataIndices = result.dataIndices;\n      seriesNestestValue = result.nestestValue;\n    } else {\n      dataIndices = series.getData().indicesOfNearest(dataDim[0], value, // Add a threshold to avoid find the wrong dataIndex\n      // when data length is not same.\n      // false,\n      axis.type === 'category' ? 0.5 : null);\n\n      if (!dataIndices.length) {\n        return;\n      }\n\n      seriesNestestValue = series.getData().get(dataDim[0], dataIndices[0]);\n    }\n\n    if (seriesNestestValue == null || !isFinite(seriesNestestValue)) {\n      return;\n    }\n\n    var diff = value - seriesNestestValue;\n    var dist = Math.abs(diff); // Consider category case\n\n    if (dist <= minDist) {\n      if (dist < minDist || diff >= 0 && minDiff < 0) {\n        minDist = dist;\n        minDiff = diff;\n        snapToValue = seriesNestestValue;\n        payloadBatch.length = 0;\n      }\n\n      each(dataIndices, function (dataIndex) {\n        payloadBatch.push({\n          seriesIndex: series.seriesIndex,\n          dataIndexInside: dataIndex,\n          dataIndex: series.getData().getRawIndex(dataIndex)\n        });\n      });\n    }\n  });\n  return {\n    payloadBatch: payloadBatch,\n    snapToValue: snapToValue\n  };\n}\n\nfunction showPointer(showValueMap, axisInfo, value, payloadBatch) {\n  showValueMap[axisInfo.key] = {\n    value: value,\n    payloadBatch: payloadBatch\n  };\n}\n\nfunction showTooltip(dataByCoordSys, axisInfo, payloadInfo, value) {\n  var payloadBatch = payloadInfo.payloadBatch;\n  var axis = axisInfo.axis;\n  var axisModel = axis.model;\n  var axisPointerModel = axisInfo.axisPointerModel; // If no data, do not create anything in dataByCoordSys,\n  // whose length will be used to judge whether dispatch action.\n\n  if (!axisInfo.triggerTooltip || !payloadBatch.length) {\n    return;\n  }\n\n  var coordSysModel = axisInfo.coordSys.model;\n  var coordSysKey = modelHelper.makeKey(coordSysModel);\n  var coordSysItem = dataByCoordSys.map[coordSysKey];\n\n  if (!coordSysItem) {\n    coordSysItem = dataByCoordSys.map[coordSysKey] = {\n      coordSysId: coordSysModel.id,\n      coordSysIndex: coordSysModel.componentIndex,\n      coordSysType: coordSysModel.type,\n      coordSysMainType: coordSysModel.mainType,\n      dataByAxis: []\n    };\n    dataByCoordSys.list.push(coordSysItem);\n  }\n\n  coordSysItem.dataByAxis.push({\n    axisDim: axis.dim,\n    axisIndex: axisModel.componentIndex,\n    axisType: axisModel.type,\n    axisId: axisModel.id,\n    value: value,\n    // Caustion: viewHelper.getValueLabel is actually on \"view stage\", which\n    // depends that all models have been updated. So it should not be performed\n    // here. Considering axisPointerModel used here is volatile, which is hard\n    // to be retrieve in TooltipView, we prepare parameters here.\n    valueLabelOpt: {\n      precision: axisPointerModel.get(['label', 'precision']),\n      formatter: axisPointerModel.get(['label', 'formatter'])\n    },\n    seriesDataIndices: payloadBatch.slice()\n  });\n}\n\nfunction updateModelActually(showValueMap, axesInfo, outputPayload) {\n  var outputAxesInfo = outputPayload.axesInfo = []; // Basic logic: If no 'show' required, 'hide' this axisPointer.\n\n  each(axesInfo, function (axisInfo, key) {\n    var option = axisInfo.axisPointerModel.option;\n    var valItem = showValueMap[key];\n\n    if (valItem) {\n      !axisInfo.useHandle && (option.status = 'show');\n      option.value = valItem.value; // For label formatter param and highlight.\n\n      option.seriesDataIndices = (valItem.payloadBatch || []).slice();\n    } // When always show (e.g., handle used), remain\n    // original value and status.\n    else {\n        // If hide, value still need to be set, consider\n        // click legend to toggle axis blank.\n        !axisInfo.useHandle && (option.status = 'hide');\n      } // If status is 'hide', should be no info in payload.\n\n\n    option.status === 'show' && outputAxesInfo.push({\n      axisDim: axisInfo.axis.dim,\n      axisIndex: axisInfo.axis.model.componentIndex,\n      value: option.value\n    });\n  });\n}\n\nfunction dispatchTooltipActually(dataByCoordSys, point, payload, dispatchAction) {\n  // Basic logic: If no showTip required, hideTip will be dispatched.\n  if (illegalPoint(point) || !dataByCoordSys.list.length) {\n    dispatchAction({\n      type: 'hideTip'\n    });\n    return;\n  } // In most case only one axis (or event one series is used). It is\n  // convenient to fetch payload.seriesIndex and payload.dataIndex\n  // directly. So put the first seriesIndex and dataIndex of the first\n  // axis on the payload.\n\n\n  var sampleItem = ((dataByCoordSys.list[0].dataByAxis[0] || {}).seriesDataIndices || [])[0] || {};\n  dispatchAction({\n    type: 'showTip',\n    escapeConnect: true,\n    x: point[0],\n    y: point[1],\n    tooltipOption: payload.tooltipOption,\n    position: payload.position,\n    dataIndexInside: sampleItem.dataIndexInside,\n    dataIndex: sampleItem.dataIndex,\n    seriesIndex: sampleItem.seriesIndex,\n    dataByCoordSys: dataByCoordSys.list\n  });\n}\n\nfunction dispatchHighDownActually(axesInfo, dispatchAction, api) {\n  // FIXME\n  // highlight status modification should be a stage of main process?\n  // (Consider confilct (e.g., legend and axisPointer) and setOption)\n  var zr = api.getZr();\n  var highDownKey = 'axisPointerLastHighlights';\n  var lastHighlights = inner(zr)[highDownKey] || {};\n  var newHighlights = inner(zr)[highDownKey] = {}; // Update highlight/downplay status according to axisPointer model.\n  // Build hash map and remove duplicate incidentally.\n\n  each(axesInfo, function (axisInfo, key) {\n    var option = axisInfo.axisPointerModel.option;\n    option.status === 'show' && axisInfo.triggerEmphasis && each(option.seriesDataIndices, function (batchItem) {\n      var key = batchItem.seriesIndex + ' | ' + batchItem.dataIndex;\n      newHighlights[key] = batchItem;\n    });\n  }); // Diff.\n\n  var toHighlight = [];\n  var toDownplay = [];\n  each(lastHighlights, function (batchItem, key) {\n    !newHighlights[key] && toDownplay.push(batchItem);\n  });\n  each(newHighlights, function (batchItem, key) {\n    !lastHighlights[key] && toHighlight.push(batchItem);\n  });\n  toDownplay.length && api.dispatchAction({\n    type: 'downplay',\n    escapeConnect: true,\n    // Not blur others when highlight in axisPointer.\n    notBlur: true,\n    batch: toDownplay\n  });\n  toHighlight.length && api.dispatchAction({\n    type: 'highlight',\n    escapeConnect: true,\n    // Not blur others when highlight in axisPointer.\n    notBlur: true,\n    batch: toHighlight\n  });\n}\n\nfunction findInputAxisInfo(inputAxesInfo, axisInfo) {\n  for (var i = 0; i < (inputAxesInfo || []).length; i++) {\n    var inputAxisInfo = inputAxesInfo[i];\n\n    if (axisInfo.axis.dim === inputAxisInfo.axisDim && axisInfo.axis.model.componentIndex === inputAxisInfo.axisIndex) {\n      return inputAxisInfo;\n    }\n  }\n}\n\nfunction makeMapperParam(axisInfo) {\n  var axisModel = axisInfo.axis.model;\n  var item = {};\n  var dim = item.axisDim = axisInfo.axis.dim;\n  item.axisIndex = item[dim + 'AxisIndex'] = axisModel.componentIndex;\n  item.axisName = item[dim + 'AxisName'] = axisModel.name;\n  item.axisId = item[dim + 'AxisId'] = axisModel.id;\n  return item;\n}\n\nfunction illegalPoint(point) {\n  return !point || point[0] == null || isNaN(point[0]) || point[1] == null || isNaN(point[1]);\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport AxisView from '../axis/AxisView.js';\nimport CartesianAxisPointer from './CartesianAxisPointer.js';\nimport AxisPointerModel from './AxisPointerModel.js';\nimport AxisPointerView from './AxisPointerView.js';\nimport { isArray } from 'zrender/lib/core/util.js';\nimport { collect } from './modelHelper.js';\nimport axisTrigger from './axisTrigger.js';\nexport function install(registers) {\n  // CartesianAxisPointer is not supposed to be required here. But consider\n  // echarts.simple.js and online build tooltip, which only require gridSimple,\n  // CartesianAxisPointer should be able to required somewhere.\n  AxisView.registerAxisPointerClass('CartesianAxisPointer', CartesianAxisPointer);\n  registers.registerComponentModel(AxisPointerModel);\n  registers.registerComponentView(AxisPointerView);\n  registers.registerPreprocessor(function (option) {\n    // Always has a global axisPointerModel for default setting.\n    if (option) {\n      (!option.axisPointer || option.axisPointer.length === 0) && (option.axisPointer = {});\n      var link = option.axisPointer.link; // Normalize to array to avoid object mergin. But if link\n      // is not set, remain null/undefined, otherwise it will\n      // override existent link setting.\n\n      if (link && !isArray(link)) {\n        option.axisPointer.link = [link];\n      }\n    }\n  }); // This process should proformed after coordinate systems created\n  // and series data processed. So put it on statistic processing stage.\n\n  registers.registerProcessor(registers.PRIORITY.PROCESSOR.STATISTIC, function (ecModel, api) {\n    // Build axisPointerModel, mergin tooltip.axisPointer model for each axis.\n    // allAxesInfo should be updated when setOption performed.\n    ecModel.getComponent('axisPointer').coordSysAxesInfo = collect(ecModel, api);\n  }); // Broadcast to all views.\n\n  registers.registerAction({\n    type: 'updateAxisPointer',\n    event: 'updateAxisPointer',\n    update: ':updateAxisPointer'\n  }, axisTrigger);\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { __extends } from \"tslib\";\nimport BaseAxisPointer from './BaseAxisPointer.js';\nimport * as graphic from '../../util/graphic.js';\nimport * as viewHelper from './viewHelper.js';\nimport * as matrix from 'zrender/lib/core/matrix.js';\nimport AxisBuilder from '../axis/AxisBuilder.js';\n\nvar PolarAxisPointer =\n/** @class */\nfunction (_super) {\n  __extends(PolarAxisPointer, _super);\n\n  function PolarAxisPointer() {\n    return _super !== null && _super.apply(this, arguments) || this;\n  }\n  /**\r\n   * @override\r\n   */\n\n\n  PolarAxisPointer.prototype.makeElOption = function (elOption, value, axisModel, axisPointerModel, api) {\n    var axis = axisModel.axis;\n\n    if (axis.dim === 'angle') {\n      this.animationThreshold = Math.PI / 18;\n    }\n\n    var polar = axis.polar;\n    var otherAxis = polar.getOtherAxis(axis);\n    var otherExtent = otherAxis.getExtent();\n    var coordValue = axis.dataToCoord(value);\n    var axisPointerType = axisPointerModel.get('type');\n\n    if (axisPointerType && axisPointerType !== 'none') {\n      var elStyle = viewHelper.buildElStyle(axisPointerModel);\n      var pointerOption = pointerShapeBuilder[axisPointerType](axis, polar, coordValue, otherExtent);\n      pointerOption.style = elStyle;\n      elOption.graphicKey = pointerOption.type;\n      elOption.pointer = pointerOption;\n    }\n\n    var labelMargin = axisPointerModel.get(['label', 'margin']);\n    var labelPos = getLabelPosition(value, axisModel, axisPointerModel, polar, labelMargin);\n    viewHelper.buildLabelElOption(elOption, axisModel, axisPointerModel, api, labelPos);\n  };\n\n  return PolarAxisPointer;\n}(BaseAxisPointer);\n\n;\n\nfunction getLabelPosition(value, axisModel, axisPointerModel, polar, labelMargin) {\n  var axis = axisModel.axis;\n  var coord = axis.dataToCoord(value);\n  var axisAngle = polar.getAngleAxis().getExtent()[0];\n  axisAngle = axisAngle / 180 * Math.PI;\n  var radiusExtent = polar.getRadiusAxis().getExtent();\n  var position;\n  var align;\n  var verticalAlign;\n\n  if (axis.dim === 'radius') {\n    var transform = matrix.create();\n    matrix.rotate(transform, transform, axisAngle);\n    matrix.translate(transform, transform, [polar.cx, polar.cy]);\n    position = graphic.applyTransform([coord, -labelMargin], transform);\n    var labelRotation = axisModel.getModel('axisLabel').get('rotate') || 0; // @ts-ignore\n\n    var labelLayout = AxisBuilder.innerTextLayout(axisAngle, labelRotation * Math.PI / 180, -1);\n    align = labelLayout.textAlign;\n    verticalAlign = labelLayout.textVerticalAlign;\n  } else {\n    // angle axis\n    var r = radiusExtent[1];\n    position = polar.coordToPoint([r + labelMargin, coord]);\n    var cx = polar.cx;\n    var cy = polar.cy;\n    align = Math.abs(position[0] - cx) / r < 0.3 ? 'center' : position[0] > cx ? 'left' : 'right';\n    verticalAlign = Math.abs(position[1] - cy) / r < 0.3 ? 'middle' : position[1] > cy ? 'top' : 'bottom';\n  }\n\n  return {\n    position: position,\n    align: align,\n    verticalAlign: verticalAlign\n  };\n}\n\nvar pointerShapeBuilder = {\n  line: function (axis, polar, coordValue, otherExtent) {\n    return axis.dim === 'angle' ? {\n      type: 'Line',\n      shape: viewHelper.makeLineShape(polar.coordToPoint([otherExtent[0], coordValue]), polar.coordToPoint([otherExtent[1], coordValue]))\n    } : {\n      type: 'Circle',\n      shape: {\n        cx: polar.cx,\n        cy: polar.cy,\n        r: coordValue\n      }\n    };\n  },\n  shadow: function (axis, polar, coordValue, otherExtent) {\n    var bandWidth = Math.max(1, axis.getBandWidth());\n    var radian = Math.PI / 180;\n    return axis.dim === 'angle' ? {\n      type: 'Sector',\n      shape: viewHelper.makeSectorShape(polar.cx, polar.cy, otherExtent[0], otherExtent[1], // In ECharts y is negative if angle is positive\n      (-coordValue - bandWidth / 2) * radian, (-coordValue + bandWidth / 2) * radian)\n    } : {\n      type: 'Sector',\n      shape: viewHelper.makeSectorShape(polar.cx, polar.cy, coordValue - bandWidth / 2, coordValue + bandWidth / 2, 0, Math.PI * 2)\n    };\n  }\n};\nexport default PolarAxisPointer;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { __extends } from \"tslib\";\nimport ComponentModel from '../../model/Component.js';\n\nvar PolarModel =\n/** @class */\nfunction (_super) {\n  __extends(PolarModel, _super);\n\n  function PolarModel() {\n    var _this = _super !== null && _super.apply(this, arguments) || this;\n\n    _this.type = PolarModel.type;\n    return _this;\n  }\n\n  PolarModel.prototype.findAxisModel = function (axisType) {\n    var foundAxisModel;\n    var ecModel = this.ecModel;\n    ecModel.eachComponent(axisType, function (axisModel) {\n      if (axisModel.getCoordSysModel() === this) {\n        foundAxisModel = axisModel;\n      }\n    }, this);\n    return foundAxisModel;\n  };\n\n  PolarModel.type = 'polar';\n  PolarModel.dependencies = ['radiusAxis', 'angleAxis'];\n  PolarModel.defaultOption = {\n    // zlevel: 0,\n    z: 0,\n    center: ['50%', '50%'],\n    radius: '80%'\n  };\n  return PolarModel;\n}(ComponentModel);\n\nexport default PolarModel;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { __extends } from \"tslib\";\nimport * as zrUtil from 'zrender/lib/core/util.js';\nimport ComponentModel from '../../model/Component.js';\nimport { AxisModelCommonMixin } from '../axisModelCommonMixin.js';\nimport { SINGLE_REFERRING } from '../../util/model.js';\n\nvar PolarAxisModel =\n/** @class */\nfunction (_super) {\n  __extends(PolarAxisModel, _super);\n\n  function PolarAxisModel() {\n    return _super !== null && _super.apply(this, arguments) || this;\n  }\n\n  PolarAxisModel.prototype.getCoordSysModel = function () {\n    return this.getReferringComponents('polar', SINGLE_REFERRING).models[0];\n  };\n\n  PolarAxisModel.type = 'polarAxis';\n  return PolarAxisModel;\n}(ComponentModel);\n\nzrUtil.mixin(PolarAxisModel, AxisModelCommonMixin);\nexport { PolarAxisModel };\n\nvar AngleAxisModel =\n/** @class */\nfunction (_super) {\n  __extends(AngleAxisModel, _super);\n\n  function AngleAxisModel() {\n    var _this = _super !== null && _super.apply(this, arguments) || this;\n\n    _this.type = AngleAxisModel.type;\n    return _this;\n  }\n\n  AngleAxisModel.type = 'angleAxis';\n  return AngleAxisModel;\n}(PolarAxisModel);\n\nexport { AngleAxisModel };\n\nvar RadiusAxisModel =\n/** @class */\nfunction (_super) {\n  __extends(RadiusAxisModel, _super);\n\n  function RadiusAxisModel() {\n    var _this = _super !== null && _super.apply(this, arguments) || this;\n\n    _this.type = RadiusAxisModel.type;\n    return _this;\n  }\n\n  RadiusAxisModel.type = 'radiusAxis';\n  return RadiusAxisModel;\n}(PolarAxisModel);\n\nexport { RadiusAxisModel };","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { __extends } from \"tslib\";\nimport Axis from '../Axis.js';\n\nvar RadiusAxis =\n/** @class */\nfunction (_super) {\n  __extends(RadiusAxis, _super);\n\n  function RadiusAxis(scale, radiusExtent) {\n    return _super.call(this, 'radius', scale, radiusExtent) || this;\n  }\n\n  RadiusAxis.prototype.pointToData = function (point, clamp) {\n    return this.polar.pointToData(point, clamp)[this.dim === 'radius' ? 0 : 1];\n  };\n\n  return RadiusAxis;\n}(Axis);\n\nRadiusAxis.prototype.dataToRadius = Axis.prototype.dataToCoord;\nRadiusAxis.prototype.radiusToData = Axis.prototype.coordToData;\nexport default RadiusAxis;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { __extends } from \"tslib\";\nimport * as textContain from 'zrender/lib/contain/text.js';\nimport Axis from '../Axis.js';\nimport { makeInner } from '../../util/model.js';\nvar inner = makeInner();\n\nvar AngleAxis =\n/** @class */\nfunction (_super) {\n  __extends(AngleAxis, _super);\n\n  function AngleAxis(scale, angleExtent) {\n    return _super.call(this, 'angle', scale, angleExtent || [0, 360]) || this;\n  }\n\n  AngleAxis.prototype.pointToData = function (point, clamp) {\n    return this.polar.pointToData(point, clamp)[this.dim === 'radius' ? 0 : 1];\n  };\n  /**\r\n   * Only be called in category axis.\r\n   * Angle axis uses text height to decide interval\r\n   *\r\n   * @override\r\n   * @return {number} Auto interval for cateogry axis tick and label\r\n   */\n\n\n  AngleAxis.prototype.calculateCategoryInterval = function () {\n    var axis = this;\n    var labelModel = axis.getLabelModel();\n    var ordinalScale = axis.scale;\n    var ordinalExtent = ordinalScale.getExtent(); // Providing this method is for optimization:\n    // avoid generating a long array by `getTicks`\n    // in large category data case.\n\n    var tickCount = ordinalScale.count();\n\n    if (ordinalExtent[1] - ordinalExtent[0] < 1) {\n      return 0;\n    }\n\n    var tickValue = ordinalExtent[0];\n    var unitSpan = axis.dataToCoord(tickValue + 1) - axis.dataToCoord(tickValue);\n    var unitH = Math.abs(unitSpan); // Not precise, just use height as text width\n    // and each distance from axis line yet.\n\n    var rect = textContain.getBoundingRect(tickValue == null ? '' : tickValue + '', labelModel.getFont(), 'center', 'top');\n    var maxH = Math.max(rect.height, 7);\n    var dh = maxH / unitH; // 0/0 is NaN, 1/0 is Infinity.\n\n    isNaN(dh) && (dh = Infinity);\n    var interval = Math.max(0, Math.floor(dh));\n    var cache = inner(axis.model);\n    var lastAutoInterval = cache.lastAutoInterval;\n    var lastTickCount = cache.lastTickCount; // Use cache to keep interval stable while moving zoom window,\n    // otherwise the calculated interval might jitter when the zoom\n    // window size is close to the interval-changing size.\n\n    if (lastAutoInterval != null && lastTickCount != null && Math.abs(lastAutoInterval - interval) <= 1 && Math.abs(lastTickCount - tickCount) <= 1 // Always choose the bigger one, otherwise the critical\n    // point is not the same when zooming in or zooming out.\n    && lastAutoInterval > interval) {\n      interval = lastAutoInterval;\n    } // Only update cache if cache not used, otherwise the\n    // changing of interval is too insensitive.\n    else {\n        cache.lastTickCount = tickCount;\n        cache.lastAutoInterval = interval;\n      }\n\n    return interval;\n  };\n\n  return AngleAxis;\n}(Axis);\n\nAngleAxis.prototype.dataToAngle = Axis.prototype.dataToCoord;\nAngleAxis.prototype.angleToData = Axis.prototype.coordToData;\nexport default AngleAxis;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport RadiusAxis from './RadiusAxis.js';\nimport AngleAxis from './AngleAxis.js';\nexport var polarDimensions = ['radius', 'angle'];\n\nvar Polar =\n/** @class */\nfunction () {\n  function Polar(name) {\n    this.dimensions = polarDimensions;\n    this.type = 'polar';\n    /**\r\n     * x of polar center\r\n     */\n\n    this.cx = 0;\n    /**\r\n     * y of polar center\r\n     */\n\n    this.cy = 0;\n    this._radiusAxis = new RadiusAxis();\n    this._angleAxis = new AngleAxis();\n    this.axisPointerEnabled = true;\n    this.name = name || '';\n    this._radiusAxis.polar = this._angleAxis.polar = this;\n  }\n  /**\r\n   * If contain coord\r\n   */\n\n\n  Polar.prototype.containPoint = function (point) {\n    var coord = this.pointToCoord(point);\n    return this._radiusAxis.contain(coord[0]) && this._angleAxis.contain(coord[1]);\n  };\n  /**\r\n   * If contain data\r\n   */\n\n\n  Polar.prototype.containData = function (data) {\n    return this._radiusAxis.containData(data[0]) && this._angleAxis.containData(data[1]);\n  };\n\n  Polar.prototype.getAxis = function (dim) {\n    var key = '_' + dim + 'Axis';\n    return this[key];\n  };\n\n  Polar.prototype.getAxes = function () {\n    return [this._radiusAxis, this._angleAxis];\n  };\n  /**\r\n   * Get axes by type of scale\r\n   */\n\n\n  Polar.prototype.getAxesByScale = function (scaleType) {\n    var axes = [];\n    var angleAxis = this._angleAxis;\n    var radiusAxis = this._radiusAxis;\n    angleAxis.scale.type === scaleType && axes.push(angleAxis);\n    radiusAxis.scale.type === scaleType && axes.push(radiusAxis);\n    return axes;\n  };\n\n  Polar.prototype.getAngleAxis = function () {\n    return this._angleAxis;\n  };\n\n  Polar.prototype.getRadiusAxis = function () {\n    return this._radiusAxis;\n  };\n\n  Polar.prototype.getOtherAxis = function (axis) {\n    var angleAxis = this._angleAxis;\n    return axis === angleAxis ? this._radiusAxis : angleAxis;\n  };\n  /**\r\n   * Base axis will be used on stacking.\r\n   *\r\n   */\n\n\n  Polar.prototype.getBaseAxis = function () {\n    return this.getAxesByScale('ordinal')[0] || this.getAxesByScale('time')[0] || this.getAngleAxis();\n  };\n\n  Polar.prototype.getTooltipAxes = function (dim) {\n    var baseAxis = dim != null && dim !== 'auto' ? this.getAxis(dim) : this.getBaseAxis();\n    return {\n      baseAxes: [baseAxis],\n      otherAxes: [this.getOtherAxis(baseAxis)]\n    };\n  };\n  /**\r\n   * Convert a single data item to (x, y) point.\r\n   * Parameter data is an array which the first element is radius and the second is angle\r\n   */\n\n\n  Polar.prototype.dataToPoint = function (data, clamp) {\n    return this.coordToPoint([this._radiusAxis.dataToRadius(data[0], clamp), this._angleAxis.dataToAngle(data[1], clamp)]);\n  };\n  /**\r\n   * Convert a (x, y) point to data\r\n   */\n\n\n  Polar.prototype.pointToData = function (point, clamp) {\n    var coord = this.pointToCoord(point);\n    return [this._radiusAxis.radiusToData(coord[0], clamp), this._angleAxis.angleToData(coord[1], clamp)];\n  };\n  /**\r\n   * Convert a (x, y) point to (radius, angle) coord\r\n   */\n\n\n  Polar.prototype.pointToCoord = function (point) {\n    var dx = point[0] - this.cx;\n    var dy = point[1] - this.cy;\n    var angleAxis = this.getAngleAxis();\n    var extent = angleAxis.getExtent();\n    var minAngle = Math.min(extent[0], extent[1]);\n    var maxAngle = Math.max(extent[0], extent[1]); // Fix fixed extent in polarCreator\n    // FIXME\n\n    angleAxis.inverse ? minAngle = maxAngle - 360 : maxAngle = minAngle + 360;\n    var radius = Math.sqrt(dx * dx + dy * dy);\n    dx /= radius;\n    dy /= radius;\n    var radian = Math.atan2(-dy, dx) / Math.PI * 180; // move to angleExtent\n\n    var dir = radian < minAngle ? 1 : -1;\n\n    while (radian < minAngle || radian > maxAngle) {\n      radian += dir * 360;\n    }\n\n    return [radius, radian];\n  };\n  /**\r\n   * Convert a (radius, angle) coord to (x, y) point\r\n   */\n\n\n  Polar.prototype.coordToPoint = function (coord) {\n    var radius = coord[0];\n    var radian = coord[1] / 180 * Math.PI;\n    var x = Math.cos(radian) * radius + this.cx; // Inverse the y\n\n    var y = -Math.sin(radian) * radius + this.cy;\n    return [x, y];\n  };\n  /**\r\n   * Get ring area of cartesian.\r\n   * Area will have a contain function to determine if a point is in the coordinate system.\r\n   */\n\n\n  Polar.prototype.getArea = function () {\n    var angleAxis = this.getAngleAxis();\n    var radiusAxis = this.getRadiusAxis();\n    var radiusExtent = radiusAxis.getExtent().slice();\n    radiusExtent[0] > radiusExtent[1] && radiusExtent.reverse();\n    var angleExtent = angleAxis.getExtent();\n    var RADIAN = Math.PI / 180;\n    return {\n      cx: this.cx,\n      cy: this.cy,\n      r0: radiusExtent[0],\n      r: radiusExtent[1],\n      startAngle: -angleExtent[0] * RADIAN,\n      endAngle: -angleExtent[1] * RADIAN,\n      clockwise: angleAxis.inverse,\n      contain: function (x, y) {\n        // It's a ring shape.\n        // Start angle and end angle don't matter\n        var dx = x - this.cx;\n        var dy = y - this.cy; // minus a tiny value 1e-4 to avoid being clipped unexpectedly\n\n        var d2 = dx * dx + dy * dy - 1e-4;\n        var r = this.r;\n        var r0 = this.r0;\n        return d2 <= r * r && d2 >= r0 * r0;\n      }\n    };\n  };\n\n  Polar.prototype.convertToPixel = function (ecModel, finder, value) {\n    var coordSys = getCoordSys(finder);\n    return coordSys === this ? this.dataToPoint(value) : null;\n  };\n\n  Polar.prototype.convertFromPixel = function (ecModel, finder, pixel) {\n    var coordSys = getCoordSys(finder);\n    return coordSys === this ? this.pointToData(pixel) : null;\n  };\n\n  return Polar;\n}();\n\nfunction getCoordSys(finder) {\n  var seriesModel = finder.seriesModel;\n  var polarModel = finder.polarModel;\n  return polarModel && polarModel.coordinateSystem || seriesModel && seriesModel.coordinateSystem;\n}\n\nexport default Polar;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\n// TODO Axis scale\nimport * as zrUtil from 'zrender/lib/core/util.js';\nimport Polar, { polarDimensions } from './Polar.js';\nimport { parsePercent } from '../../util/number.js';\nimport { createScaleByModel, niceScaleExtent, getDataDimensionsOnAxis } from '../../coord/axisHelper.js';\nimport { SINGLE_REFERRING } from '../../util/model.js';\n/**\r\n * Resize method bound to the polar\r\n */\n\nfunction resizePolar(polar, polarModel, api) {\n  var center = polarModel.get('center');\n  var width = api.getWidth();\n  var height = api.getHeight();\n  polar.cx = parsePercent(center[0], width);\n  polar.cy = parsePercent(center[1], height);\n  var radiusAxis = polar.getRadiusAxis();\n  var size = Math.min(width, height) / 2;\n  var radius = polarModel.get('radius');\n\n  if (radius == null) {\n    radius = [0, '100%'];\n  } else if (!zrUtil.isArray(radius)) {\n    // r0 = 0\n    radius = [0, radius];\n  }\n\n  var parsedRadius = [parsePercent(radius[0], size), parsePercent(radius[1], size)];\n  radiusAxis.inverse ? radiusAxis.setExtent(parsedRadius[1], parsedRadius[0]) : radiusAxis.setExtent(parsedRadius[0], parsedRadius[1]);\n}\n/**\r\n * Update polar\r\n */\n\n\nfunction updatePolarScale(ecModel, api) {\n  var polar = this;\n  var angleAxis = polar.getAngleAxis();\n  var radiusAxis = polar.getRadiusAxis(); // Reset scale\n\n  angleAxis.scale.setExtent(Infinity, -Infinity);\n  radiusAxis.scale.setExtent(Infinity, -Infinity);\n  ecModel.eachSeries(function (seriesModel) {\n    if (seriesModel.coordinateSystem === polar) {\n      var data_1 = seriesModel.getData();\n      zrUtil.each(getDataDimensionsOnAxis(data_1, 'radius'), function (dim) {\n        radiusAxis.scale.unionExtentFromData(data_1, dim);\n      });\n      zrUtil.each(getDataDimensionsOnAxis(data_1, 'angle'), function (dim) {\n        angleAxis.scale.unionExtentFromData(data_1, dim);\n      });\n    }\n  });\n  niceScaleExtent(angleAxis.scale, angleAxis.model);\n  niceScaleExtent(radiusAxis.scale, radiusAxis.model); // Fix extent of category angle axis\n\n  if (angleAxis.type === 'category' && !angleAxis.onBand) {\n    var extent = angleAxis.getExtent();\n    var diff = 360 / angleAxis.scale.count();\n    angleAxis.inverse ? extent[1] += diff : extent[1] -= diff;\n    angleAxis.setExtent(extent[0], extent[1]);\n  }\n}\n\nfunction isAngleAxisModel(axisModel) {\n  return axisModel.mainType === 'angleAxis';\n}\n/**\r\n * Set common axis properties\r\n */\n\n\nfunction setAxis(axis, axisModel) {\n  axis.type = axisModel.get('type');\n  axis.scale = createScaleByModel(axisModel);\n  axis.onBand = axisModel.get('boundaryGap') && axis.type === 'category';\n  axis.inverse = axisModel.get('inverse');\n\n  if (isAngleAxisModel(axisModel)) {\n    axis.inverse = axis.inverse !== axisModel.get('clockwise');\n    var startAngle = axisModel.get('startAngle');\n    axis.setExtent(startAngle, startAngle + (axis.inverse ? -360 : 360));\n  } // Inject axis instance\n\n\n  axisModel.axis = axis;\n  axis.model = axisModel;\n}\n\nvar polarCreator = {\n  dimensions: polarDimensions,\n  create: function (ecModel, api) {\n    var polarList = [];\n    ecModel.eachComponent('polar', function (polarModel, idx) {\n      var polar = new Polar(idx + ''); // Inject resize and update method\n\n      polar.update = updatePolarScale;\n      var radiusAxis = polar.getRadiusAxis();\n      var angleAxis = polar.getAngleAxis();\n      var radiusAxisModel = polarModel.findAxisModel('radiusAxis');\n      var angleAxisModel = polarModel.findAxisModel('angleAxis');\n      setAxis(radiusAxis, radiusAxisModel);\n      setAxis(angleAxis, angleAxisModel);\n      resizePolar(polar, polarModel, api);\n      polarList.push(polar);\n      polarModel.coordinateSystem = polar;\n      polar.model = polarModel;\n    }); // Inject coordinateSystem to series\n\n    ecModel.eachSeries(function (seriesModel) {\n      if (seriesModel.get('coordinateSystem') === 'polar') {\n        var polarModel = seriesModel.getReferringComponents('polar', SINGLE_REFERRING).models[0];\n\n        if (process.env.NODE_ENV !== 'production') {\n          if (!polarModel) {\n            throw new Error('Polar \"' + zrUtil.retrieve(seriesModel.get('polarIndex'), seriesModel.get('polarId'), 0) + '\" not found');\n          }\n        }\n\n        seriesModel.coordinateSystem = polarModel.coordinateSystem;\n      }\n    });\n    return polarList;\n  }\n};\nexport default polarCreator;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { __extends } from \"tslib\";\nimport * as zrUtil from 'zrender/lib/core/util.js';\nimport * as graphic from '../../util/graphic.js';\nimport { createTextStyle } from '../../label/labelStyle.js';\nimport Model from '../../model/Model.js';\nimport AxisView from './AxisView.js';\nimport AxisBuilder from './AxisBuilder.js';\nimport { getECData } from '../../util/innerStore.js';\nvar elementList = ['axisLine', 'axisLabel', 'axisTick', 'minorTick', 'splitLine', 'minorSplitLine', 'splitArea'];\n\nfunction getAxisLineShape(polar, rExtent, angle) {\n  rExtent[1] > rExtent[0] && (rExtent = rExtent.slice().reverse());\n  var start = polar.coordToPoint([rExtent[0], angle]);\n  var end = polar.coordToPoint([rExtent[1], angle]);\n  return {\n    x1: start[0],\n    y1: start[1],\n    x2: end[0],\n    y2: end[1]\n  };\n}\n\nfunction getRadiusIdx(polar) {\n  var radiusAxis = polar.getRadiusAxis();\n  return radiusAxis.inverse ? 0 : 1;\n} // Remove the last tick which will overlap the first tick\n\n\nfunction fixAngleOverlap(list) {\n  var firstItem = list[0];\n  var lastItem = list[list.length - 1];\n\n  if (firstItem && lastItem && Math.abs(Math.abs(firstItem.coord - lastItem.coord) - 360) < 1e-4) {\n    list.pop();\n  }\n}\n\nvar AngleAxisView =\n/** @class */\nfunction (_super) {\n  __extends(AngleAxisView, _super);\n\n  function AngleAxisView() {\n    var _this = _super !== null && _super.apply(this, arguments) || this;\n\n    _this.type = AngleAxisView.type;\n    _this.axisPointerClass = 'PolarAxisPointer';\n    return _this;\n  }\n\n  AngleAxisView.prototype.render = function (angleAxisModel, ecModel) {\n    this.group.removeAll();\n\n    if (!angleAxisModel.get('show')) {\n      return;\n    }\n\n    var angleAxis = angleAxisModel.axis;\n    var polar = angleAxis.polar;\n    var radiusExtent = polar.getRadiusAxis().getExtent();\n    var ticksAngles = angleAxis.getTicksCoords();\n    var minorTickAngles = angleAxis.getMinorTicksCoords();\n    var labels = zrUtil.map(angleAxis.getViewLabels(), function (labelItem) {\n      labelItem = zrUtil.clone(labelItem);\n      var scale = angleAxis.scale;\n      var tickValue = scale.type === 'ordinal' ? scale.getRawOrdinalNumber(labelItem.tickValue) : labelItem.tickValue;\n      labelItem.coord = angleAxis.dataToCoord(tickValue);\n      return labelItem;\n    });\n    fixAngleOverlap(labels);\n    fixAngleOverlap(ticksAngles);\n    zrUtil.each(elementList, function (name) {\n      if (angleAxisModel.get([name, 'show']) && (!angleAxis.scale.isBlank() || name === 'axisLine')) {\n        angelAxisElementsBuilders[name](this.group, angleAxisModel, polar, ticksAngles, minorTickAngles, radiusExtent, labels);\n      }\n    }, this);\n  };\n\n  AngleAxisView.type = 'angleAxis';\n  return AngleAxisView;\n}(AxisView);\n\nvar angelAxisElementsBuilders = {\n  axisLine: function (group, angleAxisModel, polar, ticksAngles, minorTickAngles, radiusExtent) {\n    var lineStyleModel = angleAxisModel.getModel(['axisLine', 'lineStyle']); // extent id of the axis radius (r0 and r)\n\n    var rId = getRadiusIdx(polar);\n    var r0Id = rId ? 0 : 1;\n    var shape;\n\n    if (radiusExtent[r0Id] === 0) {\n      shape = new graphic.Circle({\n        shape: {\n          cx: polar.cx,\n          cy: polar.cy,\n          r: radiusExtent[rId]\n        },\n        style: lineStyleModel.getLineStyle(),\n        z2: 1,\n        silent: true\n      });\n    } else {\n      shape = new graphic.Ring({\n        shape: {\n          cx: polar.cx,\n          cy: polar.cy,\n          r: radiusExtent[rId],\n          r0: radiusExtent[r0Id]\n        },\n        style: lineStyleModel.getLineStyle(),\n        z2: 1,\n        silent: true\n      });\n    }\n\n    shape.style.fill = null;\n    group.add(shape);\n  },\n  axisTick: function (group, angleAxisModel, polar, ticksAngles, minorTickAngles, radiusExtent) {\n    var tickModel = angleAxisModel.getModel('axisTick');\n    var tickLen = (tickModel.get('inside') ? -1 : 1) * tickModel.get('length');\n    var radius = radiusExtent[getRadiusIdx(polar)];\n    var lines = zrUtil.map(ticksAngles, function (tickAngleItem) {\n      return new graphic.Line({\n        shape: getAxisLineShape(polar, [radius, radius + tickLen], tickAngleItem.coord)\n      });\n    });\n    group.add(graphic.mergePath(lines, {\n      style: zrUtil.defaults(tickModel.getModel('lineStyle').getLineStyle(), {\n        stroke: angleAxisModel.get(['axisLine', 'lineStyle', 'color'])\n      })\n    }));\n  },\n  minorTick: function (group, angleAxisModel, polar, tickAngles, minorTickAngles, radiusExtent) {\n    if (!minorTickAngles.length) {\n      return;\n    }\n\n    var tickModel = angleAxisModel.getModel('axisTick');\n    var minorTickModel = angleAxisModel.getModel('minorTick');\n    var tickLen = (tickModel.get('inside') ? -1 : 1) * minorTickModel.get('length');\n    var radius = radiusExtent[getRadiusIdx(polar)];\n    var lines = [];\n\n    for (var i = 0; i < minorTickAngles.length; i++) {\n      for (var k = 0; k < minorTickAngles[i].length; k++) {\n        lines.push(new graphic.Line({\n          shape: getAxisLineShape(polar, [radius, radius + tickLen], minorTickAngles[i][k].coord)\n        }));\n      }\n    }\n\n    group.add(graphic.mergePath(lines, {\n      style: zrUtil.defaults(minorTickModel.getModel('lineStyle').getLineStyle(), zrUtil.defaults(tickModel.getLineStyle(), {\n        stroke: angleAxisModel.get(['axisLine', 'lineStyle', 'color'])\n      }))\n    }));\n  },\n  axisLabel: function (group, angleAxisModel, polar, ticksAngles, minorTickAngles, radiusExtent, labels) {\n    var rawCategoryData = angleAxisModel.getCategories(true);\n    var commonLabelModel = angleAxisModel.getModel('axisLabel');\n    var labelMargin = commonLabelModel.get('margin');\n    var triggerEvent = angleAxisModel.get('triggerEvent'); // Use length of ticksAngles because it may remove the last tick to avoid overlapping\n\n    zrUtil.each(labels, function (labelItem, idx) {\n      var labelModel = commonLabelModel;\n      var tickValue = labelItem.tickValue;\n      var r = radiusExtent[getRadiusIdx(polar)];\n      var p = polar.coordToPoint([r + labelMargin, labelItem.coord]);\n      var cx = polar.cx;\n      var cy = polar.cy;\n      var labelTextAlign = Math.abs(p[0] - cx) / r < 0.3 ? 'center' : p[0] > cx ? 'left' : 'right';\n      var labelTextVerticalAlign = Math.abs(p[1] - cy) / r < 0.3 ? 'middle' : p[1] > cy ? 'top' : 'bottom';\n\n      if (rawCategoryData && rawCategoryData[tickValue]) {\n        var rawCategoryItem = rawCategoryData[tickValue];\n\n        if (zrUtil.isObject(rawCategoryItem) && rawCategoryItem.textStyle) {\n          labelModel = new Model(rawCategoryItem.textStyle, commonLabelModel, commonLabelModel.ecModel);\n        }\n      }\n\n      var textEl = new graphic.Text({\n        silent: AxisBuilder.isLabelSilent(angleAxisModel),\n        style: createTextStyle(labelModel, {\n          x: p[0],\n          y: p[1],\n          fill: labelModel.getTextColor() || angleAxisModel.get(['axisLine', 'lineStyle', 'color']),\n          text: labelItem.formattedLabel,\n          align: labelTextAlign,\n          verticalAlign: labelTextVerticalAlign\n        })\n      });\n      group.add(textEl); // Pack data for mouse event\n\n      if (triggerEvent) {\n        var eventData = AxisBuilder.makeAxisEventDataBase(angleAxisModel);\n        eventData.targetType = 'axisLabel';\n        eventData.value = labelItem.rawLabel;\n        getECData(textEl).eventData = eventData;\n      }\n    }, this);\n  },\n  splitLine: function (group, angleAxisModel, polar, ticksAngles, minorTickAngles, radiusExtent) {\n    var splitLineModel = angleAxisModel.getModel('splitLine');\n    var lineStyleModel = splitLineModel.getModel('lineStyle');\n    var lineColors = lineStyleModel.get('color');\n    var lineCount = 0;\n    lineColors = lineColors instanceof Array ? lineColors : [lineColors];\n    var splitLines = [];\n\n    for (var i = 0; i < ticksAngles.length; i++) {\n      var colorIndex = lineCount++ % lineColors.length;\n      splitLines[colorIndex] = splitLines[colorIndex] || [];\n      splitLines[colorIndex].push(new graphic.Line({\n        shape: getAxisLineShape(polar, radiusExtent, ticksAngles[i].coord)\n      }));\n    } // Simple optimization\n    // Batching the lines if color are the same\n\n\n    for (var i = 0; i < splitLines.length; i++) {\n      group.add(graphic.mergePath(splitLines[i], {\n        style: zrUtil.defaults({\n          stroke: lineColors[i % lineColors.length]\n        }, lineStyleModel.getLineStyle()),\n        silent: true,\n        z: angleAxisModel.get('z')\n      }));\n    }\n  },\n  minorSplitLine: function (group, angleAxisModel, polar, ticksAngles, minorTickAngles, radiusExtent) {\n    if (!minorTickAngles.length) {\n      return;\n    }\n\n    var minorSplitLineModel = angleAxisModel.getModel('minorSplitLine');\n    var lineStyleModel = minorSplitLineModel.getModel('lineStyle');\n    var lines = [];\n\n    for (var i = 0; i < minorTickAngles.length; i++) {\n      for (var k = 0; k < minorTickAngles[i].length; k++) {\n        lines.push(new graphic.Line({\n          shape: getAxisLineShape(polar, radiusExtent, minorTickAngles[i][k].coord)\n        }));\n      }\n    }\n\n    group.add(graphic.mergePath(lines, {\n      style: lineStyleModel.getLineStyle(),\n      silent: true,\n      z: angleAxisModel.get('z')\n    }));\n  },\n  splitArea: function (group, angleAxisModel, polar, ticksAngles, minorTickAngles, radiusExtent) {\n    if (!ticksAngles.length) {\n      return;\n    }\n\n    var splitAreaModel = angleAxisModel.getModel('splitArea');\n    var areaStyleModel = splitAreaModel.getModel('areaStyle');\n    var areaColors = areaStyleModel.get('color');\n    var lineCount = 0;\n    areaColors = areaColors instanceof Array ? areaColors : [areaColors];\n    var splitAreas = [];\n    var RADIAN = Math.PI / 180;\n    var prevAngle = -ticksAngles[0].coord * RADIAN;\n    var r0 = Math.min(radiusExtent[0], radiusExtent[1]);\n    var r1 = Math.max(radiusExtent[0], radiusExtent[1]);\n    var clockwise = angleAxisModel.get('clockwise');\n\n    for (var i = 1, len = ticksAngles.length; i <= len; i++) {\n      var coord = i === len ? ticksAngles[0].coord : ticksAngles[i].coord;\n      var colorIndex = lineCount++ % areaColors.length;\n      splitAreas[colorIndex] = splitAreas[colorIndex] || [];\n      splitAreas[colorIndex].push(new graphic.Sector({\n        shape: {\n          cx: polar.cx,\n          cy: polar.cy,\n          r0: r0,\n          r: r1,\n          startAngle: prevAngle,\n          endAngle: -coord * RADIAN,\n          clockwise: clockwise\n        },\n        silent: true\n      }));\n      prevAngle = -coord * RADIAN;\n    } // Simple optimization\n    // Batching the lines if color are the same\n\n\n    for (var i = 0; i < splitAreas.length; i++) {\n      group.add(graphic.mergePath(splitAreas[i], {\n        style: zrUtil.defaults({\n          fill: areaColors[i % areaColors.length]\n        }, areaStyleModel.getAreaStyle()),\n        silent: true\n      }));\n    }\n  }\n};\nexport default AngleAxisView;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { __extends } from \"tslib\";\nimport * as zrUtil from 'zrender/lib/core/util.js';\nimport * as graphic from '../../util/graphic.js';\nimport AxisBuilder from './AxisBuilder.js';\nimport AxisView from './AxisView.js';\nvar axisBuilderAttrs = ['axisLine', 'axisTickLabel', 'axisName'];\nvar selfBuilderAttrs = ['splitLine', 'splitArea', 'minorSplitLine'];\n\nvar RadiusAxisView =\n/** @class */\nfunction (_super) {\n  __extends(RadiusAxisView, _super);\n\n  function RadiusAxisView() {\n    var _this = _super !== null && _super.apply(this, arguments) || this;\n\n    _this.type = RadiusAxisView.type;\n    _this.axisPointerClass = 'PolarAxisPointer';\n    return _this;\n  }\n\n  RadiusAxisView.prototype.render = function (radiusAxisModel, ecModel) {\n    this.group.removeAll();\n\n    if (!radiusAxisModel.get('show')) {\n      return;\n    }\n\n    var oldAxisGroup = this._axisGroup;\n    var newAxisGroup = this._axisGroup = new graphic.Group();\n    this.group.add(newAxisGroup);\n    var radiusAxis = radiusAxisModel.axis;\n    var polar = radiusAxis.polar;\n    var angleAxis = polar.getAngleAxis();\n    var ticksCoords = radiusAxis.getTicksCoords();\n    var minorTicksCoords = radiusAxis.getMinorTicksCoords();\n    var axisAngle = angleAxis.getExtent()[0];\n    var radiusExtent = radiusAxis.getExtent();\n    var layout = layoutAxis(polar, radiusAxisModel, axisAngle);\n    var axisBuilder = new AxisBuilder(radiusAxisModel, layout);\n    zrUtil.each(axisBuilderAttrs, axisBuilder.add, axisBuilder);\n    newAxisGroup.add(axisBuilder.getGroup());\n    graphic.groupTransition(oldAxisGroup, newAxisGroup, radiusAxisModel);\n    zrUtil.each(selfBuilderAttrs, function (name) {\n      if (radiusAxisModel.get([name, 'show']) && !radiusAxis.scale.isBlank()) {\n        axisElementBuilders[name](this.group, radiusAxisModel, polar, axisAngle, radiusExtent, ticksCoords, minorTicksCoords);\n      }\n    }, this);\n  };\n\n  RadiusAxisView.type = 'radiusAxis';\n  return RadiusAxisView;\n}(AxisView);\n\nvar axisElementBuilders = {\n  splitLine: function (group, radiusAxisModel, polar, axisAngle, radiusExtent, ticksCoords) {\n    var splitLineModel = radiusAxisModel.getModel('splitLine');\n    var lineStyleModel = splitLineModel.getModel('lineStyle');\n    var lineColors = lineStyleModel.get('color');\n    var lineCount = 0;\n    lineColors = lineColors instanceof Array ? lineColors : [lineColors];\n    var splitLines = [];\n\n    for (var i = 0; i < ticksCoords.length; i++) {\n      var colorIndex = lineCount++ % lineColors.length;\n      splitLines[colorIndex] = splitLines[colorIndex] || [];\n      splitLines[colorIndex].push(new graphic.Circle({\n        shape: {\n          cx: polar.cx,\n          cy: polar.cy,\n          // ensure circle radius >= 0\n          r: Math.max(ticksCoords[i].coord, 0)\n        }\n      }));\n    } // Simple optimization\n    // Batching the lines if color are the same\n\n\n    for (var i = 0; i < splitLines.length; i++) {\n      group.add(graphic.mergePath(splitLines[i], {\n        style: zrUtil.defaults({\n          stroke: lineColors[i % lineColors.length],\n          fill: null\n        }, lineStyleModel.getLineStyle()),\n        silent: true\n      }));\n    }\n  },\n  minorSplitLine: function (group, radiusAxisModel, polar, axisAngle, radiusExtent, ticksCoords, minorTicksCoords) {\n    if (!minorTicksCoords.length) {\n      return;\n    }\n\n    var minorSplitLineModel = radiusAxisModel.getModel('minorSplitLine');\n    var lineStyleModel = minorSplitLineModel.getModel('lineStyle');\n    var lines = [];\n\n    for (var i = 0; i < minorTicksCoords.length; i++) {\n      for (var k = 0; k < minorTicksCoords[i].length; k++) {\n        lines.push(new graphic.Circle({\n          shape: {\n            cx: polar.cx,\n            cy: polar.cy,\n            r: minorTicksCoords[i][k].coord\n          }\n        }));\n      }\n    }\n\n    group.add(graphic.mergePath(lines, {\n      style: zrUtil.defaults({\n        fill: null\n      }, lineStyleModel.getLineStyle()),\n      silent: true\n    }));\n  },\n  splitArea: function (group, radiusAxisModel, polar, axisAngle, radiusExtent, ticksCoords) {\n    if (!ticksCoords.length) {\n      return;\n    }\n\n    var splitAreaModel = radiusAxisModel.getModel('splitArea');\n    var areaStyleModel = splitAreaModel.getModel('areaStyle');\n    var areaColors = areaStyleModel.get('color');\n    var lineCount = 0;\n    areaColors = areaColors instanceof Array ? areaColors : [areaColors];\n    var splitAreas = [];\n    var prevRadius = ticksCoords[0].coord;\n\n    for (var i = 1; i < ticksCoords.length; i++) {\n      var colorIndex = lineCount++ % areaColors.length;\n      splitAreas[colorIndex] = splitAreas[colorIndex] || [];\n      splitAreas[colorIndex].push(new graphic.Sector({\n        shape: {\n          cx: polar.cx,\n          cy: polar.cy,\n          r0: prevRadius,\n          r: ticksCoords[i].coord,\n          startAngle: 0,\n          endAngle: Math.PI * 2\n        },\n        silent: true\n      }));\n      prevRadius = ticksCoords[i].coord;\n    } // Simple optimization\n    // Batching the lines if color are the same\n\n\n    for (var i = 0; i < splitAreas.length; i++) {\n      group.add(graphic.mergePath(splitAreas[i], {\n        style: zrUtil.defaults({\n          fill: areaColors[i % areaColors.length]\n        }, areaStyleModel.getAreaStyle()),\n        silent: true\n      }));\n    }\n  }\n};\n/**\r\n * @inner\r\n */\n\nfunction layoutAxis(polar, radiusAxisModel, axisAngle) {\n  return {\n    position: [polar.cx, polar.cy],\n    rotation: axisAngle / 180 * Math.PI,\n    labelDirection: -1,\n    tickDirection: -1,\n    nameDirection: 1,\n    labelRotate: radiusAxisModel.getModel('axisLabel').get('rotate'),\n    // Over splitLine and splitArea\n    z2: 1\n  };\n}\n\nexport default RadiusAxisView;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport * as zrUtil from 'zrender/lib/core/util.js';\nimport { parsePercent } from '../util/number.js';\nimport { isDimensionStacked } from '../data/helper/dataStackHelper.js';\n\nfunction getSeriesStackId(seriesModel) {\n  return seriesModel.get('stack') || '__ec_stack_' + seriesModel.seriesIndex;\n}\n\nfunction getAxisKey(polar, axis) {\n  return axis.dim + polar.model.componentIndex;\n}\n\nfunction barLayoutPolar(seriesType, ecModel, api) {\n  var lastStackCoords = {};\n  var barWidthAndOffset = calRadialBar(zrUtil.filter(ecModel.getSeriesByType(seriesType), function (seriesModel) {\n    return !ecModel.isSeriesFiltered(seriesModel) && seriesModel.coordinateSystem && seriesModel.coordinateSystem.type === 'polar';\n  }));\n  ecModel.eachSeriesByType(seriesType, function (seriesModel) {\n    // Check series coordinate, do layout for polar only\n    if (seriesModel.coordinateSystem.type !== 'polar') {\n      return;\n    }\n\n    var data = seriesModel.getData();\n    var polar = seriesModel.coordinateSystem;\n    var baseAxis = polar.getBaseAxis();\n    var axisKey = getAxisKey(polar, baseAxis);\n    var stackId = getSeriesStackId(seriesModel);\n    var columnLayoutInfo = barWidthAndOffset[axisKey][stackId];\n    var columnOffset = columnLayoutInfo.offset;\n    var columnWidth = columnLayoutInfo.width;\n    var valueAxis = polar.getOtherAxis(baseAxis);\n    var cx = seriesModel.coordinateSystem.cx;\n    var cy = seriesModel.coordinateSystem.cy;\n    var barMinHeight = seriesModel.get('barMinHeight') || 0;\n    var barMinAngle = seriesModel.get('barMinAngle') || 0;\n    lastStackCoords[stackId] = lastStackCoords[stackId] || [];\n    var valueDim = data.mapDimension(valueAxis.dim);\n    var baseDim = data.mapDimension(baseAxis.dim);\n    var stacked = isDimensionStacked(data, valueDim\n    /* , baseDim */\n    );\n    var clampLayout = baseAxis.dim !== 'radius' || !seriesModel.get('roundCap', true);\n    var valueAxisStart = valueAxis.dataToCoord(0);\n\n    for (var idx = 0, len = data.count(); idx < len; idx++) {\n      var value = data.get(valueDim, idx);\n      var baseValue = data.get(baseDim, idx);\n      var sign = value >= 0 ? 'p' : 'n';\n      var baseCoord = valueAxisStart; // Because of the barMinHeight, we can not use the value in\n      // stackResultDimension directly.\n      // Only ordinal axis can be stacked.\n\n      if (stacked) {\n        if (!lastStackCoords[stackId][baseValue]) {\n          lastStackCoords[stackId][baseValue] = {\n            p: valueAxisStart,\n            n: valueAxisStart // Negative stack\n\n          };\n        } // Should also consider #4243\n\n\n        baseCoord = lastStackCoords[stackId][baseValue][sign];\n      }\n\n      var r0 = void 0;\n      var r = void 0;\n      var startAngle = void 0;\n      var endAngle = void 0; // radial sector\n\n      if (valueAxis.dim === 'radius') {\n        var radiusSpan = valueAxis.dataToCoord(value) - valueAxisStart;\n        var angle = baseAxis.dataToCoord(baseValue);\n\n        if (Math.abs(radiusSpan) < barMinHeight) {\n          radiusSpan = (radiusSpan < 0 ? -1 : 1) * barMinHeight;\n        }\n\n        r0 = baseCoord;\n        r = baseCoord + radiusSpan;\n        startAngle = angle - columnOffset;\n        endAngle = startAngle - columnWidth;\n        stacked && (lastStackCoords[stackId][baseValue][sign] = r);\n      } // tangential sector\n      else {\n          var angleSpan = valueAxis.dataToCoord(value, clampLayout) - valueAxisStart;\n          var radius = baseAxis.dataToCoord(baseValue);\n\n          if (Math.abs(angleSpan) < barMinAngle) {\n            angleSpan = (angleSpan < 0 ? -1 : 1) * barMinAngle;\n          }\n\n          r0 = radius + columnOffset;\n          r = r0 + columnWidth;\n          startAngle = baseCoord;\n          endAngle = baseCoord + angleSpan; // if the previous stack is at the end of the ring,\n          // add a round to differentiate it from origin\n          // let extent = angleAxis.getExtent();\n          // let stackCoord = angle;\n          // if (stackCoord === extent[0] && value > 0) {\n          //     stackCoord = extent[1];\n          // }\n          // else if (stackCoord === extent[1] && value < 0) {\n          //     stackCoord = extent[0];\n          // }\n\n          stacked && (lastStackCoords[stackId][baseValue][sign] = endAngle);\n        }\n\n      data.setItemLayout(idx, {\n        cx: cx,\n        cy: cy,\n        r0: r0,\n        r: r,\n        // Consider that positive angle is anti-clockwise,\n        // while positive radian of sector is clockwise\n        startAngle: -startAngle * Math.PI / 180,\n        endAngle: -endAngle * Math.PI / 180,\n\n        /**\r\n         * Keep the same logic with bar in catesion: use end value to\r\n         * control direction. Notice that if clockwise is true (by\r\n         * default), the sector will always draw clockwisely, no matter\r\n         * whether endAngle is greater or less than startAngle.\r\n         */\n        clockwise: startAngle >= endAngle\n      });\n    }\n  });\n}\n/**\r\n * Calculate bar width and offset for radial bar charts\r\n */\n\n\nfunction calRadialBar(barSeries) {\n  // Columns info on each category axis. Key is polar name\n  var columnsMap = {};\n  zrUtil.each(barSeries, function (seriesModel, idx) {\n    var data = seriesModel.getData();\n    var polar = seriesModel.coordinateSystem;\n    var baseAxis = polar.getBaseAxis();\n    var axisKey = getAxisKey(polar, baseAxis);\n    var axisExtent = baseAxis.getExtent();\n    var bandWidth = baseAxis.type === 'category' ? baseAxis.getBandWidth() : Math.abs(axisExtent[1] - axisExtent[0]) / data.count();\n    var columnsOnAxis = columnsMap[axisKey] || {\n      bandWidth: bandWidth,\n      remainedWidth: bandWidth,\n      autoWidthCount: 0,\n      categoryGap: '20%',\n      gap: '30%',\n      stacks: {}\n    };\n    var stacks = columnsOnAxis.stacks;\n    columnsMap[axisKey] = columnsOnAxis;\n    var stackId = getSeriesStackId(seriesModel);\n\n    if (!stacks[stackId]) {\n      columnsOnAxis.autoWidthCount++;\n    }\n\n    stacks[stackId] = stacks[stackId] || {\n      width: 0,\n      maxWidth: 0\n    };\n    var barWidth = parsePercent(seriesModel.get('barWidth'), bandWidth);\n    var barMaxWidth = parsePercent(seriesModel.get('barMaxWidth'), bandWidth);\n    var barGap = seriesModel.get('barGap');\n    var barCategoryGap = seriesModel.get('barCategoryGap');\n\n    if (barWidth && !stacks[stackId].width) {\n      barWidth = Math.min(columnsOnAxis.remainedWidth, barWidth);\n      stacks[stackId].width = barWidth;\n      columnsOnAxis.remainedWidth -= barWidth;\n    }\n\n    barMaxWidth && (stacks[stackId].maxWidth = barMaxWidth);\n    barGap != null && (columnsOnAxis.gap = barGap);\n    barCategoryGap != null && (columnsOnAxis.categoryGap = barCategoryGap);\n  });\n  var result = {};\n  zrUtil.each(columnsMap, function (columnsOnAxis, coordSysName) {\n    result[coordSysName] = {};\n    var stacks = columnsOnAxis.stacks;\n    var bandWidth = columnsOnAxis.bandWidth;\n    var categoryGap = parsePercent(columnsOnAxis.categoryGap, bandWidth);\n    var barGapPercent = parsePercent(columnsOnAxis.gap, 1);\n    var remainedWidth = columnsOnAxis.remainedWidth;\n    var autoWidthCount = columnsOnAxis.autoWidthCount;\n    var autoWidth = (remainedWidth - categoryGap) / (autoWidthCount + (autoWidthCount - 1) * barGapPercent);\n    autoWidth = Math.max(autoWidth, 0); // Find if any auto calculated bar exceeded maxBarWidth\n\n    zrUtil.each(stacks, function (column, stack) {\n      var maxWidth = column.maxWidth;\n\n      if (maxWidth && maxWidth < autoWidth) {\n        maxWidth = Math.min(maxWidth, remainedWidth);\n\n        if (column.width) {\n          maxWidth = Math.min(maxWidth, column.width);\n        }\n\n        remainedWidth -= maxWidth;\n        column.width = maxWidth;\n        autoWidthCount--;\n      }\n    }); // Recalculate width again\n\n    autoWidth = (remainedWidth - categoryGap) / (autoWidthCount + (autoWidthCount - 1) * barGapPercent);\n    autoWidth = Math.max(autoWidth, 0);\n    var widthSum = 0;\n    var lastColumn;\n    zrUtil.each(stacks, function (column, idx) {\n      if (!column.width) {\n        column.width = autoWidth;\n      }\n\n      lastColumn = column;\n      widthSum += column.width * (1 + barGapPercent);\n    });\n\n    if (lastColumn) {\n      widthSum -= lastColumn.width * barGapPercent;\n    }\n\n    var offset = -widthSum / 2;\n    zrUtil.each(stacks, function (column, stackId) {\n      result[coordSysName][stackId] = result[coordSysName][stackId] || {\n        offset: offset,\n        width: column.width\n      };\n      offset += column.width * (1 + barGapPercent);\n    });\n  });\n  return result;\n}\n\nexport default barLayoutPolar;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { __extends } from \"tslib\";\nimport { use } from '../../extension.js';\nimport AxisView from '../axis/AxisView.js';\nimport PolarAxisPointer from '../axisPointer/PolarAxisPointer.js';\nimport { install as installAxisPointer } from '../axisPointer/install.js';\nimport PolarModel from '../../coord/polar/PolarModel.js';\nimport axisModelCreator from '../../coord/axisModelCreator.js';\nimport { AngleAxisModel, RadiusAxisModel } from '../../coord/polar/AxisModel.js';\nimport polarCreator from '../../coord/polar/polarCreator.js';\nimport AngleAxisView from '../axis/AngleAxisView.js';\nimport RadiusAxisView from '../axis/RadiusAxisView.js';\nimport ComponentView from '../../view/Component.js';\nimport { curry } from 'zrender/lib/core/util.js';\nimport barLayoutPolar from '../../layout/barPolar.js';\nvar angleAxisExtraOption = {\n  startAngle: 90,\n  clockwise: true,\n  splitNumber: 12,\n  axisLabel: {\n    rotate: 0\n  }\n};\nvar radiusAxisExtraOption = {\n  splitNumber: 5\n};\n\nvar PolarView =\n/** @class */\nfunction (_super) {\n  __extends(PolarView, _super);\n\n  function PolarView() {\n    var _this = _super !== null && _super.apply(this, arguments) || this;\n\n    _this.type = PolarView.type;\n    return _this;\n  }\n\n  PolarView.type = 'polar';\n  return PolarView;\n}(ComponentView);\n\nexport function install(registers) {\n  use(installAxisPointer);\n  AxisView.registerAxisPointerClass('PolarAxisPointer', PolarAxisPointer);\n  registers.registerCoordinateSystem('polar', polarCreator);\n  registers.registerComponentModel(PolarModel);\n  registers.registerComponentView(PolarView); // Model and view for angleAxis and radiusAxis\n\n  axisModelCreator(registers, 'angle', AngleAxisModel, angleAxisExtraOption);\n  axisModelCreator(registers, 'radius', RadiusAxisModel, radiusAxisExtraOption);\n  registers.registerComponentView(AngleAxisView);\n  registers.registerComponentView(RadiusAxisView);\n  registers.registerLayout(curry(barLayoutPolar, 'bar'));\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport * as zrUtil from 'zrender/lib/core/util.js';\nexport function layout(axisModel, opt) {\n  opt = opt || {};\n  var single = axisModel.coordinateSystem;\n  var axis = axisModel.axis;\n  var layout = {};\n  var axisPosition = axis.position;\n  var orient = axis.orient;\n  var rect = single.getRect();\n  var rectBound = [rect.x, rect.x + rect.width, rect.y, rect.y + rect.height];\n  var positionMap = {\n    horizontal: {\n      top: rectBound[2],\n      bottom: rectBound[3]\n    },\n    vertical: {\n      left: rectBound[0],\n      right: rectBound[1]\n    }\n  };\n  layout.position = [orient === 'vertical' ? positionMap.vertical[axisPosition] : rectBound[0], orient === 'horizontal' ? positionMap.horizontal[axisPosition] : rectBound[3]];\n  var r = {\n    horizontal: 0,\n    vertical: 1\n  };\n  layout.rotation = Math.PI / 2 * r[orient];\n  var directionMap = {\n    top: -1,\n    bottom: 1,\n    right: 1,\n    left: -1\n  };\n  layout.labelDirection = layout.tickDirection = layout.nameDirection = directionMap[axisPosition];\n\n  if (axisModel.get(['axisTick', 'inside'])) {\n    layout.tickDirection = -layout.tickDirection;\n  }\n\n  if (zrUtil.retrieve(opt.labelInside, axisModel.get(['axisLabel', 'inside']))) {\n    layout.labelDirection = -layout.labelDirection;\n  }\n\n  var labelRotation = opt.rotate;\n  labelRotation == null && (labelRotation = axisModel.get(['axisLabel', 'rotate']));\n  layout.labelRotation = axisPosition === 'top' ? -labelRotation : labelRotation;\n  layout.z2 = 1;\n  return layout;\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { __extends } from \"tslib\";\nimport * as zrUtil from 'zrender/lib/core/util.js';\nimport AxisBuilder from './AxisBuilder.js';\nimport * as graphic from '../../util/graphic.js';\nimport * as singleAxisHelper from '../../coord/single/singleAxisHelper.js';\nimport AxisView from './AxisView.js';\nimport { rectCoordAxisBuildSplitArea, rectCoordAxisHandleRemove } from './axisSplitHelper.js';\nvar axisBuilderAttrs = ['axisLine', 'axisTickLabel', 'axisName'];\nvar selfBuilderAttrs = ['splitArea', 'splitLine'];\n\nvar SingleAxisView =\n/** @class */\nfunction (_super) {\n  __extends(SingleAxisView, _super);\n\n  function SingleAxisView() {\n    var _this = _super !== null && _super.apply(this, arguments) || this;\n\n    _this.type = SingleAxisView.type;\n    _this.axisPointerClass = 'SingleAxisPointer';\n    return _this;\n  }\n\n  SingleAxisView.prototype.render = function (axisModel, ecModel, api, payload) {\n    var group = this.group;\n    group.removeAll();\n    var oldAxisGroup = this._axisGroup;\n    this._axisGroup = new graphic.Group();\n    var layout = singleAxisHelper.layout(axisModel);\n    var axisBuilder = new AxisBuilder(axisModel, layout);\n    zrUtil.each(axisBuilderAttrs, axisBuilder.add, axisBuilder);\n    group.add(this._axisGroup);\n    group.add(axisBuilder.getGroup());\n    zrUtil.each(selfBuilderAttrs, function (name) {\n      if (axisModel.get([name, 'show'])) {\n        axisElementBuilders[name](this, this.group, this._axisGroup, axisModel);\n      }\n    }, this);\n    graphic.groupTransition(oldAxisGroup, this._axisGroup, axisModel);\n\n    _super.prototype.render.call(this, axisModel, ecModel, api, payload);\n  };\n\n  SingleAxisView.prototype.remove = function () {\n    rectCoordAxisHandleRemove(this);\n  };\n\n  SingleAxisView.type = 'singleAxis';\n  return SingleAxisView;\n}(AxisView);\n\nvar axisElementBuilders = {\n  splitLine: function (axisView, group, axisGroup, axisModel) {\n    var axis = axisModel.axis;\n\n    if (axis.scale.isBlank()) {\n      return;\n    }\n\n    var splitLineModel = axisModel.getModel('splitLine');\n    var lineStyleModel = splitLineModel.getModel('lineStyle');\n    var lineColors = lineStyleModel.get('color');\n    lineColors = lineColors instanceof Array ? lineColors : [lineColors];\n    var lineWidth = lineStyleModel.get('width');\n    var gridRect = axisModel.coordinateSystem.getRect();\n    var isHorizontal = axis.isHorizontal();\n    var splitLines = [];\n    var lineCount = 0;\n    var ticksCoords = axis.getTicksCoords({\n      tickModel: splitLineModel\n    });\n    var p1 = [];\n    var p2 = [];\n\n    for (var i = 0; i < ticksCoords.length; ++i) {\n      var tickCoord = axis.toGlobalCoord(ticksCoords[i].coord);\n\n      if (isHorizontal) {\n        p1[0] = tickCoord;\n        p1[1] = gridRect.y;\n        p2[0] = tickCoord;\n        p2[1] = gridRect.y + gridRect.height;\n      } else {\n        p1[0] = gridRect.x;\n        p1[1] = tickCoord;\n        p2[0] = gridRect.x + gridRect.width;\n        p2[1] = tickCoord;\n      }\n\n      var line = new graphic.Line({\n        shape: {\n          x1: p1[0],\n          y1: p1[1],\n          x2: p2[0],\n          y2: p2[1]\n        },\n        silent: true\n      });\n      graphic.subPixelOptimizeLine(line.shape, lineWidth);\n      var colorIndex = lineCount++ % lineColors.length;\n      splitLines[colorIndex] = splitLines[colorIndex] || [];\n      splitLines[colorIndex].push(line);\n    }\n\n    var lineStyle = lineStyleModel.getLineStyle(['color']);\n\n    for (var i = 0; i < splitLines.length; ++i) {\n      group.add(graphic.mergePath(splitLines[i], {\n        style: zrUtil.defaults({\n          stroke: lineColors[i % lineColors.length]\n        }, lineStyle),\n        silent: true\n      }));\n    }\n  },\n  splitArea: function (axisView, group, axisGroup, axisModel) {\n    rectCoordAxisBuildSplitArea(axisView, axisGroup, axisModel, axisModel);\n  }\n};\nexport default SingleAxisView;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { __extends } from \"tslib\";\nimport ComponentModel from '../../model/Component.js';\nimport { AxisModelCommonMixin } from '../axisModelCommonMixin.js';\nimport { mixin } from 'zrender/lib/core/util.js';\n\nvar SingleAxisModel =\n/** @class */\nfunction (_super) {\n  __extends(SingleAxisModel, _super);\n\n  function SingleAxisModel() {\n    var _this = _super !== null && _super.apply(this, arguments) || this;\n\n    _this.type = SingleAxisModel.type;\n    return _this;\n  }\n\n  SingleAxisModel.prototype.getCoordSysModel = function () {\n    return this;\n  };\n\n  SingleAxisModel.type = 'singleAxis';\n  SingleAxisModel.layoutMode = 'box';\n  SingleAxisModel.defaultOption = {\n    left: '5%',\n    top: '5%',\n    right: '5%',\n    bottom: '5%',\n    type: 'value',\n    position: 'bottom',\n    orient: 'horizontal',\n    axisLine: {\n      show: true,\n      lineStyle: {\n        width: 1,\n        type: 'solid'\n      }\n    },\n    // Single coordinate system and single axis is the,\n    // which is used as the parent tooltip model.\n    // same model, so we set default tooltip show as true.\n    tooltip: {\n      show: true\n    },\n    axisTick: {\n      show: true,\n      length: 6,\n      lineStyle: {\n        width: 1\n      }\n    },\n    axisLabel: {\n      show: true,\n      interval: 'auto'\n    },\n    splitLine: {\n      show: true,\n      lineStyle: {\n        type: 'dashed',\n        opacity: 0.2\n      }\n    }\n  };\n  return SingleAxisModel;\n}(ComponentModel);\n\nmixin(SingleAxisModel, AxisModelCommonMixin.prototype);\nexport default SingleAxisModel;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { __extends } from \"tslib\";\nimport Axis from '../Axis.js';\n\nvar SingleAxis =\n/** @class */\nfunction (_super) {\n  __extends(SingleAxis, _super);\n\n  function SingleAxis(dim, scale, coordExtent, axisType, position) {\n    var _this = _super.call(this, dim, scale, coordExtent) || this;\n\n    _this.type = axisType || 'value';\n    _this.position = position || 'bottom';\n    return _this;\n  }\n  /**\r\n   * Judge the orient of the axis.\r\n   */\n\n\n  SingleAxis.prototype.isHorizontal = function () {\n    var position = this.position;\n    return position === 'top' || position === 'bottom';\n  };\n\n  SingleAxis.prototype.pointToData = function (point, clamp) {\n    return this.coordinateSystem.pointToData(point)[0];\n  };\n\n  return SingleAxis;\n}(Axis);\n\nexport default SingleAxis;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\n\n/**\r\n * Single coordinates system.\r\n */\nimport SingleAxis from './SingleAxis.js';\nimport * as axisHelper from '../axisHelper.js';\nimport { getLayoutRect } from '../../util/layout.js';\nimport { each } from 'zrender/lib/core/util.js';\nexport var singleDimensions = ['single'];\n/**\r\n * Create a single coordinates system.\r\n */\n\nvar Single =\n/** @class */\nfunction () {\n  function Single(axisModel, ecModel, api) {\n    this.type = 'single';\n    this.dimension = 'single';\n    /**\r\n     * Add it just for draw tooltip.\r\n     */\n\n    this.dimensions = singleDimensions;\n    this.axisPointerEnabled = true;\n    this.model = axisModel;\n\n    this._init(axisModel, ecModel, api);\n  }\n  /**\r\n   * Initialize single coordinate system.\r\n   */\n\n\n  Single.prototype._init = function (axisModel, ecModel, api) {\n    var dim = this.dimension;\n    var axis = new SingleAxis(dim, axisHelper.createScaleByModel(axisModel), [0, 0], axisModel.get('type'), axisModel.get('position'));\n    var isCategory = axis.type === 'category';\n    axis.onBand = isCategory && axisModel.get('boundaryGap');\n    axis.inverse = axisModel.get('inverse');\n    axis.orient = axisModel.get('orient');\n    axisModel.axis = axis;\n    axis.model = axisModel;\n    axis.coordinateSystem = this;\n    this._axis = axis;\n  };\n  /**\r\n   * Update axis scale after data processed\r\n   */\n\n\n  Single.prototype.update = function (ecModel, api) {\n    ecModel.eachSeries(function (seriesModel) {\n      if (seriesModel.coordinateSystem === this) {\n        var data_1 = seriesModel.getData();\n        each(data_1.mapDimensionsAll(this.dimension), function (dim) {\n          this._axis.scale.unionExtentFromData(data_1, dim);\n        }, this);\n        axisHelper.niceScaleExtent(this._axis.scale, this._axis.model);\n      }\n    }, this);\n  };\n  /**\r\n   * Resize the single coordinate system.\r\n   */\n\n\n  Single.prototype.resize = function (axisModel, api) {\n    this._rect = getLayoutRect({\n      left: axisModel.get('left'),\n      top: axisModel.get('top'),\n      right: axisModel.get('right'),\n      bottom: axisModel.get('bottom'),\n      width: axisModel.get('width'),\n      height: axisModel.get('height')\n    }, {\n      width: api.getWidth(),\n      height: api.getHeight()\n    });\n\n    this._adjustAxis();\n  };\n\n  Single.prototype.getRect = function () {\n    return this._rect;\n  };\n\n  Single.prototype._adjustAxis = function () {\n    var rect = this._rect;\n    var axis = this._axis;\n    var isHorizontal = axis.isHorizontal();\n    var extent = isHorizontal ? [0, rect.width] : [0, rect.height];\n    var idx = axis.inverse ? 1 : 0;\n    axis.setExtent(extent[idx], extent[1 - idx]);\n\n    this._updateAxisTransform(axis, isHorizontal ? rect.x : rect.y);\n  };\n\n  Single.prototype._updateAxisTransform = function (axis, coordBase) {\n    var axisExtent = axis.getExtent();\n    var extentSum = axisExtent[0] + axisExtent[1];\n    var isHorizontal = axis.isHorizontal();\n    axis.toGlobalCoord = isHorizontal ? function (coord) {\n      return coord + coordBase;\n    } : function (coord) {\n      return extentSum - coord + coordBase;\n    };\n    axis.toLocalCoord = isHorizontal ? function (coord) {\n      return coord - coordBase;\n    } : function (coord) {\n      return extentSum - coord + coordBase;\n    };\n  };\n  /**\r\n   * Get axis.\r\n   */\n\n\n  Single.prototype.getAxis = function () {\n    return this._axis;\n  };\n  /**\r\n   * Get axis, add it just for draw tooltip.\r\n   */\n\n\n  Single.prototype.getBaseAxis = function () {\n    return this._axis;\n  };\n\n  Single.prototype.getAxes = function () {\n    return [this._axis];\n  };\n\n  Single.prototype.getTooltipAxes = function () {\n    return {\n      baseAxes: [this.getAxis()],\n      // Empty otherAxes\n      otherAxes: []\n    };\n  };\n  /**\r\n   * If contain point.\r\n   */\n\n\n  Single.prototype.containPoint = function (point) {\n    var rect = this.getRect();\n    var axis = this.getAxis();\n    var orient = axis.orient;\n\n    if (orient === 'horizontal') {\n      return axis.contain(axis.toLocalCoord(point[0])) && point[1] >= rect.y && point[1] <= rect.y + rect.height;\n    } else {\n      return axis.contain(axis.toLocalCoord(point[1])) && point[0] >= rect.y && point[0] <= rect.y + rect.height;\n    }\n  };\n\n  Single.prototype.pointToData = function (point) {\n    var axis = this.getAxis();\n    return [axis.coordToData(axis.toLocalCoord(point[axis.orient === 'horizontal' ? 0 : 1]))];\n  };\n  /**\r\n   * Convert the series data to concrete point.\r\n   * Can be [val] | val\r\n   */\n\n\n  Single.prototype.dataToPoint = function (val) {\n    var axis = this.getAxis();\n    var rect = this.getRect();\n    var pt = [];\n    var idx = axis.orient === 'horizontal' ? 0 : 1;\n\n    if (val instanceof Array) {\n      val = val[0];\n    }\n\n    pt[idx] = axis.toGlobalCoord(axis.dataToCoord(+val));\n    pt[1 - idx] = idx === 0 ? rect.y + rect.height / 2 : rect.x + rect.width / 2;\n    return pt;\n  };\n\n  Single.prototype.convertToPixel = function (ecModel, finder, value) {\n    var coordSys = getCoordSys(finder);\n    return coordSys === this ? this.dataToPoint(value) : null;\n  };\n\n  Single.prototype.convertFromPixel = function (ecModel, finder, pixel) {\n    var coordSys = getCoordSys(finder);\n    return coordSys === this ? this.pointToData(pixel) : null;\n  };\n\n  return Single;\n}();\n\nfunction getCoordSys(finder) {\n  var seriesModel = finder.seriesModel;\n  var singleModel = finder.singleAxisModel;\n  return singleModel && singleModel.coordinateSystem || seriesModel && seriesModel.coordinateSystem;\n}\n\nexport default Single;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\n\n/**\r\n * Single coordinate system creator.\r\n */\nimport Single, { singleDimensions } from './Single.js';\nimport { SINGLE_REFERRING } from '../../util/model.js';\n/**\r\n * Create single coordinate system and inject it into seriesModel.\r\n */\n\nfunction create(ecModel, api) {\n  var singles = [];\n  ecModel.eachComponent('singleAxis', function (axisModel, idx) {\n    var single = new Single(axisModel, ecModel, api);\n    single.name = 'single_' + idx;\n    single.resize(axisModel, api);\n    axisModel.coordinateSystem = single;\n    singles.push(single);\n  });\n  ecModel.eachSeries(function (seriesModel) {\n    if (seriesModel.get('coordinateSystem') === 'singleAxis') {\n      var singleAxisModel = seriesModel.getReferringComponents('singleAxis', SINGLE_REFERRING).models[0];\n      seriesModel.coordinateSystem = singleAxisModel && singleAxisModel.coordinateSystem;\n    }\n  });\n  return singles;\n}\n\nvar singleCreator = {\n  create: create,\n  dimensions: singleDimensions\n};\nexport default singleCreator;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { __extends } from \"tslib\";\nimport BaseAxisPointer from './BaseAxisPointer.js';\nimport * as viewHelper from './viewHelper.js';\nimport * as singleAxisHelper from '../../coord/single/singleAxisHelper.js';\nvar XY = ['x', 'y'];\nvar WH = ['width', 'height'];\n\nvar SingleAxisPointer =\n/** @class */\nfunction (_super) {\n  __extends(SingleAxisPointer, _super);\n\n  function SingleAxisPointer() {\n    return _super !== null && _super.apply(this, arguments) || this;\n  }\n  /**\r\n   * @override\r\n   */\n\n\n  SingleAxisPointer.prototype.makeElOption = function (elOption, value, axisModel, axisPointerModel, api) {\n    var axis = axisModel.axis;\n    var coordSys = axis.coordinateSystem;\n    var otherExtent = getGlobalExtent(coordSys, 1 - getPointDimIndex(axis));\n    var pixelValue = coordSys.dataToPoint(value)[0];\n    var axisPointerType = axisPointerModel.get('type');\n\n    if (axisPointerType && axisPointerType !== 'none') {\n      var elStyle = viewHelper.buildElStyle(axisPointerModel);\n      var pointerOption = pointerShapeBuilder[axisPointerType](axis, pixelValue, otherExtent);\n      pointerOption.style = elStyle;\n      elOption.graphicKey = pointerOption.type;\n      elOption.pointer = pointerOption;\n    }\n\n    var layoutInfo = singleAxisHelper.layout(axisModel);\n    viewHelper.buildCartesianSingleLabelElOption( // @ts-ignore\n    value, elOption, layoutInfo, axisModel, axisPointerModel, api);\n  };\n  /**\r\n   * @override\r\n   */\n\n\n  SingleAxisPointer.prototype.getHandleTransform = function (value, axisModel, axisPointerModel) {\n    var layoutInfo = singleAxisHelper.layout(axisModel, {\n      labelInside: false\n    }); // @ts-ignore\n\n    layoutInfo.labelMargin = axisPointerModel.get(['handle', 'margin']);\n    var position = viewHelper.getTransformedPosition(axisModel.axis, value, layoutInfo);\n    return {\n      x: position[0],\n      y: position[1],\n      rotation: layoutInfo.rotation + (layoutInfo.labelDirection < 0 ? Math.PI : 0)\n    };\n  };\n  /**\r\n   * @override\r\n   */\n\n\n  SingleAxisPointer.prototype.updateHandleTransform = function (transform, delta, axisModel, axisPointerModel) {\n    var axis = axisModel.axis;\n    var coordSys = axis.coordinateSystem;\n    var dimIndex = getPointDimIndex(axis);\n    var axisExtent = getGlobalExtent(coordSys, dimIndex);\n    var currPosition = [transform.x, transform.y];\n    currPosition[dimIndex] += delta[dimIndex];\n    currPosition[dimIndex] = Math.min(axisExtent[1], currPosition[dimIndex]);\n    currPosition[dimIndex] = Math.max(axisExtent[0], currPosition[dimIndex]);\n    var otherExtent = getGlobalExtent(coordSys, 1 - dimIndex);\n    var cursorOtherValue = (otherExtent[1] + otherExtent[0]) / 2;\n    var cursorPoint = [cursorOtherValue, cursorOtherValue];\n    cursorPoint[dimIndex] = currPosition[dimIndex];\n    return {\n      x: currPosition[0],\n      y: currPosition[1],\n      rotation: transform.rotation,\n      cursorPoint: cursorPoint,\n      tooltipOption: {\n        verticalAlign: 'middle'\n      }\n    };\n  };\n\n  return SingleAxisPointer;\n}(BaseAxisPointer);\n\nvar pointerShapeBuilder = {\n  line: function (axis, pixelValue, otherExtent) {\n    var targetShape = viewHelper.makeLineShape([pixelValue, otherExtent[0]], [pixelValue, otherExtent[1]], getPointDimIndex(axis));\n    return {\n      type: 'Line',\n      subPixelOptimize: true,\n      shape: targetShape\n    };\n  },\n  shadow: function (axis, pixelValue, otherExtent) {\n    var bandWidth = axis.getBandWidth();\n    var span = otherExtent[1] - otherExtent[0];\n    return {\n      type: 'Rect',\n      shape: viewHelper.makeRectShape([pixelValue - bandWidth / 2, otherExtent[0]], [bandWidth, span], getPointDimIndex(axis))\n    };\n  }\n};\n\nfunction getPointDimIndex(axis) {\n  return axis.isHorizontal() ? 0 : 1;\n}\n\nfunction getGlobalExtent(coordSys, dimIndex) {\n  var rect = coordSys.getRect();\n  return [rect[XY[dimIndex]], rect[XY[dimIndex]] + rect[WH[dimIndex]]];\n}\n\nexport default SingleAxisPointer;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { __extends } from \"tslib\";\nimport { use } from '../../extension.js';\nimport ComponentView from '../../view/Component.js';\nimport SingleAxisView from '../axis/SingleAxisView.js';\nimport axisModelCreator from '../../coord/axisModelCreator.js';\nimport SingleAxisModel from '../../coord/single/AxisModel.js';\nimport singleCreator from '../../coord/single/singleCreator.js';\nimport { install as installAxisPointer } from '../axisPointer/install.js';\nimport AxisView from '../axis/AxisView.js';\nimport SingleAxisPointer from '../axisPointer/SingleAxisPointer.js';\n\nvar SingleView =\n/** @class */\nfunction (_super) {\n  __extends(SingleView, _super);\n\n  function SingleView() {\n    var _this = _super !== null && _super.apply(this, arguments) || this;\n\n    _this.type = SingleView.type;\n    return _this;\n  }\n\n  SingleView.type = 'single';\n  return SingleView;\n}(ComponentView);\n\nexport function install(registers) {\n  use(installAxisPointer);\n  AxisView.registerAxisPointerClass('SingleAxisPointer', SingleAxisPointer);\n  registers.registerComponentView(SingleView); // Axis\n\n  registers.registerComponentView(SingleAxisView);\n  registers.registerComponentModel(SingleAxisModel);\n  axisModelCreator(registers, 'single', SingleAxisModel, SingleAxisModel.defaultOption);\n  registers.registerCoordinateSystem('single', singleCreator);\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { __extends } from \"tslib\";\nimport * as zrUtil from 'zrender/lib/core/util.js';\nimport ComponentModel from '../../model/Component.js';\nimport { getLayoutParams, sizeCalculable, mergeLayoutParam } from '../../util/layout.js';\n\nvar CalendarModel =\n/** @class */\nfunction (_super) {\n  __extends(CalendarModel, _super);\n\n  function CalendarModel() {\n    var _this = _super !== null && _super.apply(this, arguments) || this;\n\n    _this.type = CalendarModel.type;\n    return _this;\n  }\n  /**\r\n   * @override\r\n   */\n\n\n  CalendarModel.prototype.init = function (option, parentModel, ecModel) {\n    var inputPositionParams = getLayoutParams(option);\n\n    _super.prototype.init.apply(this, arguments);\n\n    mergeAndNormalizeLayoutParams(option, inputPositionParams);\n  };\n  /**\r\n   * @override\r\n   */\n\n\n  CalendarModel.prototype.mergeOption = function (option) {\n    _super.prototype.mergeOption.apply(this, arguments);\n\n    mergeAndNormalizeLayoutParams(this.option, option);\n  };\n\n  CalendarModel.prototype.getCellSize = function () {\n    // Has been normalized\n    return this.option.cellSize;\n  };\n\n  CalendarModel.type = 'calendar';\n  CalendarModel.defaultOption = {\n    // zlevel: 0,\n    z: 2,\n    left: 80,\n    top: 60,\n    cellSize: 20,\n    // horizontal vertical\n    orient: 'horizontal',\n    // month separate line style\n    splitLine: {\n      show: true,\n      lineStyle: {\n        color: '#000',\n        width: 1,\n        type: 'solid'\n      }\n    },\n    // rect style  temporarily unused emphasis\n    itemStyle: {\n      color: '#fff',\n      borderWidth: 1,\n      borderColor: '#ccc'\n    },\n    // week text style\n    dayLabel: {\n      show: true,\n      firstDay: 0,\n      // start end\n      position: 'start',\n      margin: '50%',\n      color: '#000'\n    },\n    // month text style\n    monthLabel: {\n      show: true,\n      // start end\n      position: 'start',\n      margin: 5,\n      // center or left\n      align: 'center',\n      formatter: null,\n      color: '#000'\n    },\n    // year text style\n    yearLabel: {\n      show: true,\n      // top bottom left right\n      position: null,\n      margin: 30,\n      formatter: null,\n      color: '#ccc',\n      fontFamily: 'sans-serif',\n      fontWeight: 'bolder',\n      fontSize: 20\n    }\n  };\n  return CalendarModel;\n}(ComponentModel);\n\nfunction mergeAndNormalizeLayoutParams(target, raw) {\n  // Normalize cellSize\n  var cellSize = target.cellSize;\n  var cellSizeArr;\n\n  if (!zrUtil.isArray(cellSize)) {\n    cellSizeArr = target.cellSize = [cellSize, cellSize];\n  } else {\n    cellSizeArr = cellSize;\n  }\n\n  if (cellSizeArr.length === 1) {\n    cellSizeArr[1] = cellSizeArr[0];\n  }\n\n  var ignoreSize = zrUtil.map([0, 1], function (hvIdx) {\n    // If user have set `width` or both `left` and `right`, cellSizeArr\n    // will be automatically set to 'auto', otherwise the default\n    // setting of cellSizeArr will make `width` setting not work.\n    if (sizeCalculable(raw, hvIdx)) {\n      cellSizeArr[hvIdx] = 'auto';\n    }\n\n    return cellSizeArr[hvIdx] != null && cellSizeArr[hvIdx] !== 'auto';\n  });\n  mergeLayoutParam(target, raw, {\n    type: 'box',\n    ignoreSize: ignoreSize\n  });\n}\n\nexport default CalendarModel;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { __extends } from \"tslib\";\nimport { isString, extend, map, isFunction } from 'zrender/lib/core/util.js';\nimport * as graphic from '../../util/graphic.js';\nimport { createTextStyle } from '../../label/labelStyle.js';\nimport { formatTplSimple } from '../../util/format.js';\nimport { parsePercent } from '../../util/number.js';\nimport ComponentView from '../../view/Component.js';\nimport { getLocaleModel } from '../../core/locale.js';\n\nvar CalendarView =\n/** @class */\nfunction (_super) {\n  __extends(CalendarView, _super);\n\n  function CalendarView() {\n    var _this = _super !== null && _super.apply(this, arguments) || this;\n\n    _this.type = CalendarView.type;\n    return _this;\n  }\n\n  CalendarView.prototype.render = function (calendarModel, ecModel, api) {\n    var group = this.group;\n    group.removeAll();\n    var coordSys = calendarModel.coordinateSystem; // range info\n\n    var rangeData = coordSys.getRangeInfo();\n    var orient = coordSys.getOrient(); // locale\n\n    var localeModel = ecModel.getLocaleModel();\n\n    this._renderDayRect(calendarModel, rangeData, group); // _renderLines must be called prior to following function\n\n\n    this._renderLines(calendarModel, rangeData, orient, group);\n\n    this._renderYearText(calendarModel, rangeData, orient, group);\n\n    this._renderMonthText(calendarModel, localeModel, orient, group);\n\n    this._renderWeekText(calendarModel, localeModel, rangeData, orient, group);\n  }; // render day rect\n\n\n  CalendarView.prototype._renderDayRect = function (calendarModel, rangeData, group) {\n    var coordSys = calendarModel.coordinateSystem;\n    var itemRectStyleModel = calendarModel.getModel('itemStyle').getItemStyle();\n    var sw = coordSys.getCellWidth();\n    var sh = coordSys.getCellHeight();\n\n    for (var i = rangeData.start.time; i <= rangeData.end.time; i = coordSys.getNextNDay(i, 1).time) {\n      var point = coordSys.dataToRect([i], false).tl; // every rect\n\n      var rect = new graphic.Rect({\n        shape: {\n          x: point[0],\n          y: point[1],\n          width: sw,\n          height: sh\n        },\n        cursor: 'default',\n        style: itemRectStyleModel\n      });\n      group.add(rect);\n    }\n  }; // render separate line\n\n\n  CalendarView.prototype._renderLines = function (calendarModel, rangeData, orient, group) {\n    var self = this;\n    var coordSys = calendarModel.coordinateSystem;\n    var lineStyleModel = calendarModel.getModel(['splitLine', 'lineStyle']).getLineStyle();\n    var show = calendarModel.get(['splitLine', 'show']);\n    var lineWidth = lineStyleModel.lineWidth;\n    this._tlpoints = [];\n    this._blpoints = [];\n    this._firstDayOfMonth = [];\n    this._firstDayPoints = [];\n    var firstDay = rangeData.start;\n\n    for (var i = 0; firstDay.time <= rangeData.end.time; i++) {\n      addPoints(firstDay.formatedDate);\n\n      if (i === 0) {\n        firstDay = coordSys.getDateInfo(rangeData.start.y + '-' + rangeData.start.m);\n      }\n\n      var date = firstDay.date;\n      date.setMonth(date.getMonth() + 1);\n      firstDay = coordSys.getDateInfo(date);\n    }\n\n    addPoints(coordSys.getNextNDay(rangeData.end.time, 1).formatedDate);\n\n    function addPoints(date) {\n      self._firstDayOfMonth.push(coordSys.getDateInfo(date));\n\n      self._firstDayPoints.push(coordSys.dataToRect([date], false).tl);\n\n      var points = self._getLinePointsOfOneWeek(calendarModel, date, orient);\n\n      self._tlpoints.push(points[0]);\n\n      self._blpoints.push(points[points.length - 1]);\n\n      show && self._drawSplitline(points, lineStyleModel, group);\n    } // render top/left line\n\n\n    show && this._drawSplitline(self._getEdgesPoints(self._tlpoints, lineWidth, orient), lineStyleModel, group); // render bottom/right line\n\n    show && this._drawSplitline(self._getEdgesPoints(self._blpoints, lineWidth, orient), lineStyleModel, group);\n  }; // get points at both ends\n\n\n  CalendarView.prototype._getEdgesPoints = function (points, lineWidth, orient) {\n    var rs = [points[0].slice(), points[points.length - 1].slice()];\n    var idx = orient === 'horizontal' ? 0 : 1; // both ends of the line are extend half lineWidth\n\n    rs[0][idx] = rs[0][idx] - lineWidth / 2;\n    rs[1][idx] = rs[1][idx] + lineWidth / 2;\n    return rs;\n  }; // render split line\n\n\n  CalendarView.prototype._drawSplitline = function (points, lineStyle, group) {\n    var poyline = new graphic.Polyline({\n      z2: 20,\n      shape: {\n        points: points\n      },\n      style: lineStyle\n    });\n    group.add(poyline);\n  }; // render month line of one week points\n\n\n  CalendarView.prototype._getLinePointsOfOneWeek = function (calendarModel, date, orient) {\n    var coordSys = calendarModel.coordinateSystem;\n    var parsedDate = coordSys.getDateInfo(date);\n    var points = [];\n\n    for (var i = 0; i < 7; i++) {\n      var tmpD = coordSys.getNextNDay(parsedDate.time, i);\n      var point = coordSys.dataToRect([tmpD.time], false);\n      points[2 * tmpD.day] = point.tl;\n      points[2 * tmpD.day + 1] = point[orient === 'horizontal' ? 'bl' : 'tr'];\n    }\n\n    return points;\n  };\n\n  CalendarView.prototype._formatterLabel = function (formatter, params) {\n    if (isString(formatter) && formatter) {\n      return formatTplSimple(formatter, params);\n    }\n\n    if (isFunction(formatter)) {\n      return formatter(params);\n    }\n\n    return params.nameMap;\n  };\n\n  CalendarView.prototype._yearTextPositionControl = function (textEl, point, orient, position, margin) {\n    var x = point[0];\n    var y = point[1];\n    var aligns = ['center', 'bottom'];\n\n    if (position === 'bottom') {\n      y += margin;\n      aligns = ['center', 'top'];\n    } else if (position === 'left') {\n      x -= margin;\n    } else if (position === 'right') {\n      x += margin;\n      aligns = ['center', 'top'];\n    } else {\n      // top\n      y -= margin;\n    }\n\n    var rotate = 0;\n\n    if (position === 'left' || position === 'right') {\n      rotate = Math.PI / 2;\n    }\n\n    return {\n      rotation: rotate,\n      x: x,\n      y: y,\n      style: {\n        align: aligns[0],\n        verticalAlign: aligns[1]\n      }\n    };\n  }; // render year\n\n\n  CalendarView.prototype._renderYearText = function (calendarModel, rangeData, orient, group) {\n    var yearLabel = calendarModel.getModel('yearLabel');\n\n    if (!yearLabel.get('show')) {\n      return;\n    }\n\n    var margin = yearLabel.get('margin');\n    var pos = yearLabel.get('position');\n\n    if (!pos) {\n      pos = orient !== 'horizontal' ? 'top' : 'left';\n    }\n\n    var points = [this._tlpoints[this._tlpoints.length - 1], this._blpoints[0]];\n    var xc = (points[0][0] + points[1][0]) / 2;\n    var yc = (points[0][1] + points[1][1]) / 2;\n    var idx = orient === 'horizontal' ? 0 : 1;\n    var posPoints = {\n      top: [xc, points[idx][1]],\n      bottom: [xc, points[1 - idx][1]],\n      left: [points[1 - idx][0], yc],\n      right: [points[idx][0], yc]\n    };\n    var name = rangeData.start.y;\n\n    if (+rangeData.end.y > +rangeData.start.y) {\n      name = name + '-' + rangeData.end.y;\n    }\n\n    var formatter = yearLabel.get('formatter');\n    var params = {\n      start: rangeData.start.y,\n      end: rangeData.end.y,\n      nameMap: name\n    };\n\n    var content = this._formatterLabel(formatter, params);\n\n    var yearText = new graphic.Text({\n      z2: 30,\n      style: createTextStyle(yearLabel, {\n        text: content\n      })\n    });\n    yearText.attr(this._yearTextPositionControl(yearText, posPoints[pos], orient, pos, margin));\n    group.add(yearText);\n  };\n\n  CalendarView.prototype._monthTextPositionControl = function (point, isCenter, orient, position, margin) {\n    var align = 'left';\n    var vAlign = 'top';\n    var x = point[0];\n    var y = point[1];\n\n    if (orient === 'horizontal') {\n      y = y + margin;\n\n      if (isCenter) {\n        align = 'center';\n      }\n\n      if (position === 'start') {\n        vAlign = 'bottom';\n      }\n    } else {\n      x = x + margin;\n\n      if (isCenter) {\n        vAlign = 'middle';\n      }\n\n      if (position === 'start') {\n        align = 'right';\n      }\n    }\n\n    return {\n      x: x,\n      y: y,\n      align: align,\n      verticalAlign: vAlign\n    };\n  }; // render month and year text\n\n\n  CalendarView.prototype._renderMonthText = function (calendarModel, localeModel, orient, group) {\n    var monthLabel = calendarModel.getModel('monthLabel');\n\n    if (!monthLabel.get('show')) {\n      return;\n    }\n\n    var nameMap = monthLabel.get('nameMap');\n    var margin = monthLabel.get('margin');\n    var pos = monthLabel.get('position');\n    var align = monthLabel.get('align');\n    var termPoints = [this._tlpoints, this._blpoints];\n\n    if (!nameMap || isString(nameMap)) {\n      if (nameMap) {\n        // case-sensitive\n        localeModel = getLocaleModel(nameMap) || localeModel;\n      } // PENDING\n      // for ZH locale, original form is `一月` but current form is `1月`\n\n\n      nameMap = localeModel.get(['time', 'monthAbbr']) || [];\n    }\n\n    var idx = pos === 'start' ? 0 : 1;\n    var axis = orient === 'horizontal' ? 0 : 1;\n    margin = pos === 'start' ? -margin : margin;\n    var isCenter = align === 'center';\n\n    for (var i = 0; i < termPoints[idx].length - 1; i++) {\n      var tmp = termPoints[idx][i].slice();\n      var firstDay = this._firstDayOfMonth[i];\n\n      if (isCenter) {\n        var firstDayPoints = this._firstDayPoints[i];\n        tmp[axis] = (firstDayPoints[axis] + termPoints[0][i + 1][axis]) / 2;\n      }\n\n      var formatter = monthLabel.get('formatter');\n      var name_1 = nameMap[+firstDay.m - 1];\n      var params = {\n        yyyy: firstDay.y,\n        yy: (firstDay.y + '').slice(2),\n        MM: firstDay.m,\n        M: +firstDay.m,\n        nameMap: name_1\n      };\n\n      var content = this._formatterLabel(formatter, params);\n\n      var monthText = new graphic.Text({\n        z2: 30,\n        style: extend(createTextStyle(monthLabel, {\n          text: content\n        }), this._monthTextPositionControl(tmp, isCenter, orient, pos, margin))\n      });\n      group.add(monthText);\n    }\n  };\n\n  CalendarView.prototype._weekTextPositionControl = function (point, orient, position, margin, cellSize) {\n    var align = 'center';\n    var vAlign = 'middle';\n    var x = point[0];\n    var y = point[1];\n    var isStart = position === 'start';\n\n    if (orient === 'horizontal') {\n      x = x + margin + (isStart ? 1 : -1) * cellSize[0] / 2;\n      align = isStart ? 'right' : 'left';\n    } else {\n      y = y + margin + (isStart ? 1 : -1) * cellSize[1] / 2;\n      vAlign = isStart ? 'bottom' : 'top';\n    }\n\n    return {\n      x: x,\n      y: y,\n      align: align,\n      verticalAlign: vAlign\n    };\n  }; // render weeks\n\n\n  CalendarView.prototype._renderWeekText = function (calendarModel, localeModel, rangeData, orient, group) {\n    var dayLabel = calendarModel.getModel('dayLabel');\n\n    if (!dayLabel.get('show')) {\n      return;\n    }\n\n    var coordSys = calendarModel.coordinateSystem;\n    var pos = dayLabel.get('position');\n    var nameMap = dayLabel.get('nameMap');\n    var margin = dayLabel.get('margin');\n    var firstDayOfWeek = coordSys.getFirstDayOfWeek();\n\n    if (!nameMap || isString(nameMap)) {\n      if (nameMap) {\n        // case-sensitive\n        localeModel = getLocaleModel(nameMap) || localeModel;\n      } // Use the first letter of `dayOfWeekAbbr` if `dayOfWeekShort` doesn't exist in the locale file\n\n\n      var dayOfWeekShort = localeModel.get(['time', 'dayOfWeekShort']);\n      nameMap = dayOfWeekShort || map(localeModel.get(['time', 'dayOfWeekAbbr']), function (val) {\n        return val[0];\n      });\n    }\n\n    var start = coordSys.getNextNDay(rangeData.end.time, 7 - rangeData.lweek).time;\n    var cellSize = [coordSys.getCellWidth(), coordSys.getCellHeight()];\n    margin = parsePercent(margin, Math.min(cellSize[1], cellSize[0]));\n\n    if (pos === 'start') {\n      start = coordSys.getNextNDay(rangeData.start.time, -(7 + rangeData.fweek)).time;\n      margin = -margin;\n    }\n\n    for (var i = 0; i < 7; i++) {\n      var tmpD = coordSys.getNextNDay(start, i);\n      var point = coordSys.dataToRect([tmpD.time], false).center;\n      var day = i;\n      day = Math.abs((i + firstDayOfWeek) % 7);\n      var weekText = new graphic.Text({\n        z2: 30,\n        style: extend(createTextStyle(dayLabel, {\n          text: nameMap[day]\n        }), this._weekTextPositionControl(point, orient, pos, margin, cellSize))\n      });\n      group.add(weekText);\n    }\n  };\n\n  CalendarView.type = 'calendar';\n  return CalendarView;\n}(ComponentView);\n\nexport default CalendarView;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport * as zrUtil from 'zrender/lib/core/util.js';\nimport * as layout from '../../util/layout.js';\nimport * as numberUtil from '../../util/number.js'; // (24*60*60*1000)\n\nvar PROXIMATE_ONE_DAY = 86400000;\n\nvar Calendar =\n/** @class */\nfunction () {\n  function Calendar(calendarModel, ecModel, api) {\n    this.type = 'calendar';\n    this.dimensions = Calendar.dimensions; // Required in createListFromData\n\n    this.getDimensionsInfo = Calendar.getDimensionsInfo;\n    this._model = calendarModel;\n  }\n\n  Calendar.getDimensionsInfo = function () {\n    return [{\n      name: 'time',\n      type: 'time'\n    }, 'value'];\n  };\n\n  Calendar.prototype.getRangeInfo = function () {\n    return this._rangeInfo;\n  };\n\n  Calendar.prototype.getModel = function () {\n    return this._model;\n  };\n\n  Calendar.prototype.getRect = function () {\n    return this._rect;\n  };\n\n  Calendar.prototype.getCellWidth = function () {\n    return this._sw;\n  };\n\n  Calendar.prototype.getCellHeight = function () {\n    return this._sh;\n  };\n\n  Calendar.prototype.getOrient = function () {\n    return this._orient;\n  };\n  /**\r\n   * getFirstDayOfWeek\r\n   *\r\n   * @example\r\n   *     0 : start at Sunday\r\n   *     1 : start at Monday\r\n   *\r\n   * @return {number}\r\n   */\n\n\n  Calendar.prototype.getFirstDayOfWeek = function () {\n    return this._firstDayOfWeek;\n  };\n  /**\r\n   * get date info\r\n   * }\r\n   */\n\n\n  Calendar.prototype.getDateInfo = function (date) {\n    date = numberUtil.parseDate(date);\n    var y = date.getFullYear();\n    var m = date.getMonth() + 1;\n    var mStr = m < 10 ? '0' + m : '' + m;\n    var d = date.getDate();\n    var dStr = d < 10 ? '0' + d : '' + d;\n    var day = date.getDay();\n    day = Math.abs((day + 7 - this.getFirstDayOfWeek()) % 7);\n    return {\n      y: y + '',\n      m: mStr,\n      d: dStr,\n      day: day,\n      time: date.getTime(),\n      formatedDate: y + '-' + mStr + '-' + dStr,\n      date: date\n    };\n  };\n\n  Calendar.prototype.getNextNDay = function (date, n) {\n    n = n || 0;\n\n    if (n === 0) {\n      return this.getDateInfo(date);\n    }\n\n    date = new Date(this.getDateInfo(date).time);\n    date.setDate(date.getDate() + n);\n    return this.getDateInfo(date);\n  };\n\n  Calendar.prototype.update = function (ecModel, api) {\n    this._firstDayOfWeek = +this._model.getModel('dayLabel').get('firstDay');\n    this._orient = this._model.get('orient');\n    this._lineWidth = this._model.getModel('itemStyle').getItemStyle().lineWidth || 0;\n    this._rangeInfo = this._getRangeInfo(this._initRangeOption());\n    var weeks = this._rangeInfo.weeks || 1;\n    var whNames = ['width', 'height'];\n\n    var cellSize = this._model.getCellSize().slice();\n\n    var layoutParams = this._model.getBoxLayoutParams();\n\n    var cellNumbers = this._orient === 'horizontal' ? [weeks, 7] : [7, weeks];\n    zrUtil.each([0, 1], function (idx) {\n      if (cellSizeSpecified(cellSize, idx)) {\n        layoutParams[whNames[idx]] = cellSize[idx] * cellNumbers[idx];\n      }\n    });\n    var whGlobal = {\n      width: api.getWidth(),\n      height: api.getHeight()\n    };\n    var calendarRect = this._rect = layout.getLayoutRect(layoutParams, whGlobal);\n    zrUtil.each([0, 1], function (idx) {\n      if (!cellSizeSpecified(cellSize, idx)) {\n        cellSize[idx] = calendarRect[whNames[idx]] / cellNumbers[idx];\n      }\n    });\n\n    function cellSizeSpecified(cellSize, idx) {\n      return cellSize[idx] != null && cellSize[idx] !== 'auto';\n    } // Has been calculated out number.\n\n\n    this._sw = cellSize[0];\n    this._sh = cellSize[1];\n  };\n  /**\r\n   * Convert a time data(time, value) item to (x, y) point.\r\n   */\n  // TODO Clamp of calendar is not same with cartesian coordinate systems.\n  // It will return NaN if data exceeds.\n\n\n  Calendar.prototype.dataToPoint = function (data, clamp) {\n    zrUtil.isArray(data) && (data = data[0]);\n    clamp == null && (clamp = true);\n    var dayInfo = this.getDateInfo(data);\n    var range = this._rangeInfo;\n    var date = dayInfo.formatedDate; // if not in range return [NaN, NaN]\n\n    if (clamp && !(dayInfo.time >= range.start.time && dayInfo.time < range.end.time + PROXIMATE_ONE_DAY)) {\n      return [NaN, NaN];\n    }\n\n    var week = dayInfo.day;\n\n    var nthWeek = this._getRangeInfo([range.start.time, date]).nthWeek;\n\n    if (this._orient === 'vertical') {\n      return [this._rect.x + week * this._sw + this._sw / 2, this._rect.y + nthWeek * this._sh + this._sh / 2];\n    }\n\n    return [this._rect.x + nthWeek * this._sw + this._sw / 2, this._rect.y + week * this._sh + this._sh / 2];\n  };\n  /**\r\n   * Convert a (x, y) point to time data\r\n   */\n\n\n  Calendar.prototype.pointToData = function (point) {\n    var date = this.pointToDate(point);\n    return date && date.time;\n  };\n  /**\r\n   * Convert a time date item to (x, y) four point.\r\n   */\n\n\n  Calendar.prototype.dataToRect = function (data, clamp) {\n    var point = this.dataToPoint(data, clamp);\n    return {\n      contentShape: {\n        x: point[0] - (this._sw - this._lineWidth) / 2,\n        y: point[1] - (this._sh - this._lineWidth) / 2,\n        width: this._sw - this._lineWidth,\n        height: this._sh - this._lineWidth\n      },\n      center: point,\n      tl: [point[0] - this._sw / 2, point[1] - this._sh / 2],\n      tr: [point[0] + this._sw / 2, point[1] - this._sh / 2],\n      br: [point[0] + this._sw / 2, point[1] + this._sh / 2],\n      bl: [point[0] - this._sw / 2, point[1] + this._sh / 2]\n    };\n  };\n  /**\r\n   * Convert a (x, y) point to time date\r\n   *\r\n   * @param  {Array} point point\r\n   * @return {Object}       date\r\n   */\n\n\n  Calendar.prototype.pointToDate = function (point) {\n    var nthX = Math.floor((point[0] - this._rect.x) / this._sw) + 1;\n    var nthY = Math.floor((point[1] - this._rect.y) / this._sh) + 1;\n    var range = this._rangeInfo.range;\n\n    if (this._orient === 'vertical') {\n      return this._getDateByWeeksAndDay(nthY, nthX - 1, range);\n    }\n\n    return this._getDateByWeeksAndDay(nthX, nthY - 1, range);\n  };\n\n  Calendar.prototype.convertToPixel = function (ecModel, finder, value) {\n    var coordSys = getCoordSys(finder);\n    return coordSys === this ? coordSys.dataToPoint(value) : null;\n  };\n\n  Calendar.prototype.convertFromPixel = function (ecModel, finder, pixel) {\n    var coordSys = getCoordSys(finder);\n    return coordSys === this ? coordSys.pointToData(pixel) : null;\n  };\n\n  Calendar.prototype.containPoint = function (point) {\n    console.warn('Not implemented.');\n    return false;\n  };\n  /**\r\n   * initRange\r\n   * Normalize to an [start, end] array\r\n   */\n\n\n  Calendar.prototype._initRangeOption = function () {\n    var range = this._model.get('range');\n\n    var normalizedRange; // Convert [1990] to 1990\n\n    if (zrUtil.isArray(range) && range.length === 1) {\n      range = range[0];\n    }\n\n    if (!zrUtil.isArray(range)) {\n      var rangeStr = range.toString(); // One year.\n\n      if (/^\\d{4}$/.test(rangeStr)) {\n        normalizedRange = [rangeStr + '-01-01', rangeStr + '-12-31'];\n      } // One month\n\n\n      if (/^\\d{4}[\\/|-]\\d{1,2}$/.test(rangeStr)) {\n        var start = this.getDateInfo(rangeStr);\n        var firstDay = start.date;\n        firstDay.setMonth(firstDay.getMonth() + 1);\n        var end = this.getNextNDay(firstDay, -1);\n        normalizedRange = [start.formatedDate, end.formatedDate];\n      } // One day\n\n\n      if (/^\\d{4}[\\/|-]\\d{1,2}[\\/|-]\\d{1,2}$/.test(rangeStr)) {\n        normalizedRange = [rangeStr, rangeStr];\n      }\n    } else {\n      normalizedRange = range;\n    }\n\n    if (!normalizedRange) {\n      if (process.env.NODE_ENV !== 'production') {\n        zrUtil.logError('Invalid date range.');\n      } // Not handling it.\n\n\n      return range;\n    }\n\n    var tmp = this._getRangeInfo(normalizedRange);\n\n    if (tmp.start.time > tmp.end.time) {\n      normalizedRange.reverse();\n    }\n\n    return normalizedRange;\n  };\n  /**\r\n   * range info\r\n   *\r\n   * @private\r\n   * @param  {Array} range range ['2017-01-01', '2017-07-08']\r\n   *  If range[0] > range[1], they will not be reversed.\r\n   * @return {Object}       obj\r\n   */\n\n\n  Calendar.prototype._getRangeInfo = function (range) {\n    var parsedRange = [this.getDateInfo(range[0]), this.getDateInfo(range[1])];\n    var reversed;\n\n    if (parsedRange[0].time > parsedRange[1].time) {\n      reversed = true;\n      parsedRange.reverse();\n    }\n\n    var allDay = Math.floor(parsedRange[1].time / PROXIMATE_ONE_DAY) - Math.floor(parsedRange[0].time / PROXIMATE_ONE_DAY) + 1; // Consider case1 (#11677 #10430):\n    // Set the system timezone as \"UK\", set the range to `['2016-07-01', '2016-12-31']`\n    // Consider case2:\n    // Firstly set system timezone as \"Time Zone: America/Toronto\",\n    // ```\n    // let first = new Date(1478412000000 - 3600 * 1000 * 2.5);\n    // let second = new Date(1478412000000);\n    // let allDays = Math.floor(second / ONE_DAY) - Math.floor(first / ONE_DAY) + 1;\n    // ```\n    // will get wrong result because of DST. So we should fix it.\n\n    var date = new Date(parsedRange[0].time);\n    var startDateNum = date.getDate();\n    var endDateNum = parsedRange[1].date.getDate();\n    date.setDate(startDateNum + allDay - 1); // The bias can not over a month, so just compare date.\n\n    var dateNum = date.getDate();\n\n    if (dateNum !== endDateNum) {\n      var sign = date.getTime() - parsedRange[1].time > 0 ? 1 : -1;\n\n      while ((dateNum = date.getDate()) !== endDateNum && (date.getTime() - parsedRange[1].time) * sign > 0) {\n        allDay -= sign;\n        date.setDate(dateNum - sign);\n      }\n    }\n\n    var weeks = Math.floor((allDay + parsedRange[0].day + 6) / 7);\n    var nthWeek = reversed ? -weeks + 1 : weeks - 1;\n    reversed && parsedRange.reverse();\n    return {\n      range: [parsedRange[0].formatedDate, parsedRange[1].formatedDate],\n      start: parsedRange[0],\n      end: parsedRange[1],\n      allDay: allDay,\n      weeks: weeks,\n      // From 0.\n      nthWeek: nthWeek,\n      fweek: parsedRange[0].day,\n      lweek: parsedRange[1].day\n    };\n  };\n  /**\r\n   * get date by nthWeeks and week day in range\r\n   *\r\n   * @private\r\n   * @param  {number} nthWeek the week\r\n   * @param  {number} day   the week day\r\n   * @param  {Array} range [d1, d2]\r\n   * @return {Object}\r\n   */\n\n\n  Calendar.prototype._getDateByWeeksAndDay = function (nthWeek, day, range) {\n    var rangeInfo = this._getRangeInfo(range);\n\n    if (nthWeek > rangeInfo.weeks || nthWeek === 0 && day < rangeInfo.fweek || nthWeek === rangeInfo.weeks && day > rangeInfo.lweek) {\n      return null;\n    }\n\n    var nthDay = (nthWeek - 1) * 7 - rangeInfo.fweek + day;\n    var date = new Date(rangeInfo.start.time);\n    date.setDate(+rangeInfo.start.d + nthDay);\n    return this.getDateInfo(date);\n  };\n\n  Calendar.create = function (ecModel, api) {\n    var calendarList = [];\n    ecModel.eachComponent('calendar', function (calendarModel) {\n      var calendar = new Calendar(calendarModel, ecModel, api);\n      calendarList.push(calendar);\n      calendarModel.coordinateSystem = calendar;\n    });\n    ecModel.eachSeries(function (calendarSeries) {\n      if (calendarSeries.get('coordinateSystem') === 'calendar') {\n        // Inject coordinate system\n        calendarSeries.coordinateSystem = calendarList[calendarSeries.get('calendarIndex') || 0];\n      }\n    });\n    return calendarList;\n  };\n\n  Calendar.dimensions = ['time', 'value'];\n  return Calendar;\n}();\n\nfunction getCoordSys(finder) {\n  var calendarModel = finder.calendarModel;\n  var seriesModel = finder.seriesModel;\n  var coordSys = calendarModel ? calendarModel.coordinateSystem : seriesModel ? seriesModel.coordinateSystem : null;\n  return coordSys;\n}\n\nexport default Calendar;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { __extends } from \"tslib\";\nimport * as zrUtil from 'zrender/lib/core/util.js';\nimport * as modelUtil from '../../util/model.js';\nimport ComponentModel from '../../model/Component.js';\nimport { copyLayoutParams, mergeLayoutParam } from '../../util/layout.js';\n;\n;\n;\nexport function setKeyInfoToNewElOption(resultItem, newElOption) {\n  var existElOption = resultItem.existing; // Set id and type after id assigned.\n\n  newElOption.id = resultItem.keyInfo.id;\n  !newElOption.type && existElOption && (newElOption.type = existElOption.type); // Set parent id if not specified\n\n  if (newElOption.parentId == null) {\n    var newElParentOption = newElOption.parentOption;\n\n    if (newElParentOption) {\n      newElOption.parentId = newElParentOption.id;\n    } else if (existElOption) {\n      newElOption.parentId = existElOption.parentId;\n    }\n  } // Clear\n\n\n  newElOption.parentOption = null;\n}\n\nfunction isSetLoc(obj, props) {\n  var isSet;\n  zrUtil.each(props, function (prop) {\n    obj[prop] != null && obj[prop] !== 'auto' && (isSet = true);\n  });\n  return isSet;\n}\n\nfunction mergeNewElOptionToExist(existList, index, newElOption) {\n  // Update existing options, for `getOption` feature.\n  var newElOptCopy = zrUtil.extend({}, newElOption);\n  var existElOption = existList[index];\n  var $action = newElOption.$action || 'merge';\n\n  if ($action === 'merge') {\n    if (existElOption) {\n      if (process.env.NODE_ENV !== 'production') {\n        var newType = newElOption.type;\n        zrUtil.assert(!newType || existElOption.type === newType, 'Please set $action: \"replace\" to change `type`');\n      } // We can ensure that newElOptCopy and existElOption are not\n      // the same object, so `merge` will not change newElOptCopy.\n\n\n      zrUtil.merge(existElOption, newElOptCopy, true); // Rigid body, use ignoreSize.\n\n      mergeLayoutParam(existElOption, newElOptCopy, {\n        ignoreSize: true\n      }); // Will be used in render.\n\n      copyLayoutParams(newElOption, existElOption); // Copy transition info to new option so it can be used in the transition.\n      // DO IT AFTER merge\n\n      copyTransitionInfo(newElOption, existElOption);\n      copyTransitionInfo(newElOption, existElOption, 'shape');\n      copyTransitionInfo(newElOption, existElOption, 'style');\n      copyTransitionInfo(newElOption, existElOption, 'extra'); // Copy clipPath\n\n      newElOption.clipPath = existElOption.clipPath;\n    } else {\n      existList[index] = newElOptCopy;\n    }\n  } else if ($action === 'replace') {\n    existList[index] = newElOptCopy;\n  } else if ($action === 'remove') {\n    // null will be cleaned later.\n    existElOption && (existList[index] = null);\n  }\n}\n\nvar TRANSITION_PROPS_TO_COPY = ['transition', 'enterFrom', 'leaveTo'];\nvar ROOT_TRANSITION_PROPS_TO_COPY = TRANSITION_PROPS_TO_COPY.concat(['enterAnimation', 'updateAnimation', 'leaveAnimation']);\n\nfunction copyTransitionInfo(target, source, targetProp) {\n  if (targetProp) {\n    if (!target[targetProp] && source[targetProp]) {\n      // TODO avoid creating this empty object when there is no transition configuration.\n      target[targetProp] = {};\n    }\n\n    target = target[targetProp];\n    source = source[targetProp];\n  }\n\n  if (!target || !source) {\n    return;\n  }\n\n  var props = targetProp ? TRANSITION_PROPS_TO_COPY : ROOT_TRANSITION_PROPS_TO_COPY;\n\n  for (var i = 0; i < props.length; i++) {\n    var prop = props[i];\n\n    if (target[prop] == null && source[prop] != null) {\n      target[prop] = source[prop];\n    }\n  }\n}\n\nfunction setLayoutInfoToExist(existItem, newElOption) {\n  if (!existItem) {\n    return;\n  }\n\n  existItem.hv = newElOption.hv = [// Rigid body, don't care about `width`.\n  isSetLoc(newElOption, ['left', 'right']), // Rigid body, don't care about `height`.\n  isSetLoc(newElOption, ['top', 'bottom'])]; // Give default group size. Otherwise layout error may occur.\n\n  if (existItem.type === 'group') {\n    var existingGroupOpt = existItem;\n    var newGroupOpt = newElOption;\n    existingGroupOpt.width == null && (existingGroupOpt.width = newGroupOpt.width = 0);\n    existingGroupOpt.height == null && (existingGroupOpt.height = newGroupOpt.height = 0);\n  }\n}\n\nvar GraphicComponentModel =\n/** @class */\nfunction (_super) {\n  __extends(GraphicComponentModel, _super);\n\n  function GraphicComponentModel() {\n    var _this = _super !== null && _super.apply(this, arguments) || this;\n\n    _this.type = GraphicComponentModel.type;\n    _this.preventAutoZ = true;\n    return _this;\n  }\n\n  GraphicComponentModel.prototype.mergeOption = function (option, ecModel) {\n    // Prevent default merge to elements\n    var elements = this.option.elements;\n    this.option.elements = null;\n\n    _super.prototype.mergeOption.call(this, option, ecModel);\n\n    this.option.elements = elements;\n  };\n\n  GraphicComponentModel.prototype.optionUpdated = function (newOption, isInit) {\n    var thisOption = this.option;\n    var newList = (isInit ? thisOption : newOption).elements;\n    var existList = thisOption.elements = isInit ? [] : thisOption.elements;\n    var flattenedList = [];\n\n    this._flatten(newList, flattenedList, null);\n\n    var mappingResult = modelUtil.mappingToExists(existList, flattenedList, 'normalMerge'); // Clear elOptionsToUpdate\n\n    var elOptionsToUpdate = this._elOptionsToUpdate = [];\n    zrUtil.each(mappingResult, function (resultItem, index) {\n      var newElOption = resultItem.newOption;\n\n      if (process.env.NODE_ENV !== 'production') {\n        zrUtil.assert(zrUtil.isObject(newElOption) || resultItem.existing, 'Empty graphic option definition');\n      }\n\n      if (!newElOption) {\n        return;\n      }\n\n      elOptionsToUpdate.push(newElOption);\n      setKeyInfoToNewElOption(resultItem, newElOption);\n      mergeNewElOptionToExist(existList, index, newElOption);\n      setLayoutInfoToExist(existList[index], newElOption);\n    }, this); // Clean\n\n    thisOption.elements = zrUtil.filter(existList, function (item) {\n      // $action should be volatile, otherwise option gotten from\n      // `getOption` will contain unexpected $action.\n      item && delete item.$action;\n      return item != null;\n    });\n  };\n  /**\r\n   * Convert\r\n   * [{\r\n   *  type: 'group',\r\n   *  id: 'xx',\r\n   *  children: [{type: 'circle'}, {type: 'polygon'}]\r\n   * }]\r\n   * to\r\n   * [\r\n   *  {type: 'group', id: 'xx'},\r\n   *  {type: 'circle', parentId: 'xx'},\r\n   *  {type: 'polygon', parentId: 'xx'}\r\n   * ]\r\n   */\n\n\n  GraphicComponentModel.prototype._flatten = function (optionList, result, parentOption) {\n    zrUtil.each(optionList, function (option) {\n      if (!option) {\n        return;\n      }\n\n      if (parentOption) {\n        option.parentOption = parentOption;\n      }\n\n      result.push(option);\n      var children = option.children; // here we don't judge if option.type is `group`\n      // when new option doesn't provide `type`, it will cause that the children can't be updated.\n\n      if (children && children.length) {\n        this._flatten(children, result, option);\n      } // Deleting for JSON output, and for not affecting group creation.\n\n\n      delete option.children;\n    }, this);\n  }; // FIXME\n  // Pass to view using payload? setOption has a payload?\n\n\n  GraphicComponentModel.prototype.useElOptionsToUpdate = function () {\n    var els = this._elOptionsToUpdate; // Clear to avoid render duplicately when zooming.\n\n    this._elOptionsToUpdate = null;\n    return els;\n  };\n\n  GraphicComponentModel.type = 'graphic';\n  GraphicComponentModel.defaultOption = {\n    elements: [] // parentId: null\n\n  };\n  return GraphicComponentModel;\n}(ComponentModel);\n\nexport { GraphicComponentModel };","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { __extends } from \"tslib\";\nimport * as zrUtil from 'zrender/lib/core/util.js';\nimport Displayable from 'zrender/lib/graphic/Displayable.js';\nimport * as modelUtil from '../../util/model.js';\nimport * as graphicUtil from '../../util/graphic.js';\nimport * as layoutUtil from '../../util/layout.js';\nimport { parsePercent } from '../../util/number.js';\nimport ComponentView from '../../view/Component.js';\nimport { getECData } from '../../util/innerStore.js';\nimport { isEC4CompatibleStyle, convertFromEC4CompatibleStyle } from '../../util/styleCompat.js';\nimport { applyLeaveTransition, applyUpdateTransition, isTransitionAll, updateLeaveTo } from '../../animation/customGraphicTransition.js';\nimport { updateProps } from '../../animation/basicTransition.js';\nimport { applyKeyframeAnimation, stopPreviousKeyframeAnimationAndRestore } from '../../animation/customGraphicKeyframeAnimation.js';\nvar nonShapeGraphicElements = {\n  // Reserved but not supported in graphic component.\n  path: null,\n  compoundPath: null,\n  // Supported in graphic component.\n  group: graphicUtil.Group,\n  image: graphicUtil.Image,\n  text: graphicUtil.Text\n};\nexport var inner = modelUtil.makeInner(); // ------------------------\n// View\n// ------------------------\n\nvar GraphicComponentView =\n/** @class */\nfunction (_super) {\n  __extends(GraphicComponentView, _super);\n\n  function GraphicComponentView() {\n    var _this = _super !== null && _super.apply(this, arguments) || this;\n\n    _this.type = GraphicComponentView.type;\n    return _this;\n  }\n\n  GraphicComponentView.prototype.init = function () {\n    this._elMap = zrUtil.createHashMap();\n  };\n\n  GraphicComponentView.prototype.render = function (graphicModel, ecModel, api) {\n    // Having leveraged between use cases and algorithm complexity, a very\n    // simple layout mechanism is used:\n    // The size(width/height) can be determined by itself or its parent (not\n    // implemented yet), but can not by its children. (Top-down travel)\n    // The location(x/y) can be determined by the bounding rect of itself\n    // (can including its descendants or not) and the size of its parent.\n    // (Bottom-up travel)\n    // When `chart.clear()` or `chart.setOption({...}, true)` with the same id,\n    // view will be reused.\n    if (graphicModel !== this._lastGraphicModel) {\n      this._clear();\n    }\n\n    this._lastGraphicModel = graphicModel;\n\n    this._updateElements(graphicModel);\n\n    this._relocate(graphicModel, api);\n  };\n  /**\r\n   * Update graphic elements.\r\n   */\n\n\n  GraphicComponentView.prototype._updateElements = function (graphicModel) {\n    var elOptionsToUpdate = graphicModel.useElOptionsToUpdate();\n\n    if (!elOptionsToUpdate) {\n      return;\n    }\n\n    var elMap = this._elMap;\n    var rootGroup = this.group;\n    var globalZ = graphicModel.get('z');\n    var globalZLevel = graphicModel.get('zlevel'); // Top-down tranverse to assign graphic settings to each elements.\n\n    zrUtil.each(elOptionsToUpdate, function (elOption) {\n      var id = modelUtil.convertOptionIdName(elOption.id, null);\n      var elExisting = id != null ? elMap.get(id) : null;\n      var parentId = modelUtil.convertOptionIdName(elOption.parentId, null);\n      var targetElParent = parentId != null ? elMap.get(parentId) : rootGroup;\n      var elType = elOption.type;\n      var elOptionStyle = elOption.style;\n\n      if (elType === 'text' && elOptionStyle) {\n        // In top/bottom mode, textVerticalAlign should not be used, which cause\n        // inaccurately locating.\n        if (elOption.hv && elOption.hv[1]) {\n          elOptionStyle.textVerticalAlign = elOptionStyle.textBaseline = elOptionStyle.verticalAlign = elOptionStyle.align = null;\n        }\n      }\n\n      var textContentOption = elOption.textContent;\n      var textConfig = elOption.textConfig;\n\n      if (elOptionStyle && isEC4CompatibleStyle(elOptionStyle, elType, !!textConfig, !!textContentOption)) {\n        var convertResult = convertFromEC4CompatibleStyle(elOptionStyle, elType, true);\n\n        if (!textConfig && convertResult.textConfig) {\n          textConfig = elOption.textConfig = convertResult.textConfig;\n        }\n\n        if (!textContentOption && convertResult.textContent) {\n          textContentOption = convertResult.textContent;\n        }\n      } // Remove unnecessary props to avoid potential problems.\n\n\n      var elOptionCleaned = getCleanedElOption(elOption); // For simple, do not support parent change, otherwise reorder is needed.\n\n      if (process.env.NODE_ENV !== 'production') {\n        elExisting && zrUtil.assert(targetElParent === elExisting.parent, 'Changing parent is not supported.');\n      }\n\n      var $action = elOption.$action || 'merge';\n      var isMerge = $action === 'merge';\n      var isReplace = $action === 'replace';\n\n      if (isMerge) {\n        var isInit = !elExisting;\n        var el_1 = elExisting;\n\n        if (isInit) {\n          el_1 = createEl(id, targetElParent, elOption.type, elMap);\n        } else {\n          el_1 && (inner(el_1).isNew = false); // Stop and restore before update any other attributes.\n\n          stopPreviousKeyframeAnimationAndRestore(el_1);\n        }\n\n        if (el_1) {\n          applyUpdateTransition(el_1, elOptionCleaned, graphicModel, {\n            isInit: isInit\n          });\n          updateCommonAttrs(el_1, elOption, globalZ, globalZLevel);\n        }\n      } else if (isReplace) {\n        removeEl(elExisting, elOption, elMap, graphicModel);\n        var el_2 = createEl(id, targetElParent, elOption.type, elMap);\n\n        if (el_2) {\n          applyUpdateTransition(el_2, elOptionCleaned, graphicModel, {\n            isInit: true\n          });\n          updateCommonAttrs(el_2, elOption, globalZ, globalZLevel);\n        }\n      } else if ($action === 'remove') {\n        updateLeaveTo(elExisting, elOption);\n        removeEl(elExisting, elOption, elMap, graphicModel);\n      }\n\n      var el = elMap.get(id);\n\n      if (el && textContentOption) {\n        if (isMerge) {\n          var textContentExisting = el.getTextContent();\n          textContentExisting ? textContentExisting.attr(textContentOption) : el.setTextContent(new graphicUtil.Text(textContentOption));\n        } else if (isReplace) {\n          el.setTextContent(new graphicUtil.Text(textContentOption));\n        }\n      }\n\n      if (el) {\n        var clipPathOption = elOption.clipPath;\n\n        if (clipPathOption) {\n          var clipPathType = clipPathOption.type;\n          var clipPath = void 0;\n          var isInit = false;\n\n          if (isMerge) {\n            var oldClipPath = el.getClipPath();\n            isInit = !oldClipPath || inner(oldClipPath).type !== clipPathType;\n            clipPath = isInit ? newEl(clipPathType) : oldClipPath;\n          } else if (isReplace) {\n            isInit = true;\n            clipPath = newEl(clipPathType);\n          }\n\n          el.setClipPath(clipPath);\n          applyUpdateTransition(clipPath, clipPathOption, graphicModel, {\n            isInit: isInit\n          });\n          applyKeyframeAnimation(clipPath, clipPathOption.keyframeAnimation, graphicModel);\n        }\n\n        var elInner = inner(el);\n        el.setTextConfig(textConfig);\n        elInner.option = elOption;\n        setEventData(el, graphicModel, elOption);\n        graphicUtil.setTooltipConfig({\n          el: el,\n          componentModel: graphicModel,\n          itemName: el.name,\n          itemTooltipOption: elOption.tooltip\n        });\n        applyKeyframeAnimation(el, elOption.keyframeAnimation, graphicModel);\n      }\n    });\n  };\n  /**\r\n   * Locate graphic elements.\r\n   */\n\n\n  GraphicComponentView.prototype._relocate = function (graphicModel, api) {\n    var elOptions = graphicModel.option.elements;\n    var rootGroup = this.group;\n    var elMap = this._elMap;\n    var apiWidth = api.getWidth();\n    var apiHeight = api.getHeight();\n    var xy = ['x', 'y']; // Top-down to calculate percentage width/height of group\n\n    for (var i = 0; i < elOptions.length; i++) {\n      var elOption = elOptions[i];\n      var id = modelUtil.convertOptionIdName(elOption.id, null);\n      var el = id != null ? elMap.get(id) : null;\n\n      if (!el || !el.isGroup) {\n        continue;\n      }\n\n      var parentEl = el.parent;\n      var isParentRoot = parentEl === rootGroup; // Like 'position:absolut' in css, default 0.\n\n      var elInner = inner(el);\n      var parentElInner = inner(parentEl);\n      elInner.width = parsePercent(elInner.option.width, isParentRoot ? apiWidth : parentElInner.width) || 0;\n      elInner.height = parsePercent(elInner.option.height, isParentRoot ? apiHeight : parentElInner.height) || 0;\n    } // Bottom-up tranvese all elements (consider ec resize) to locate elements.\n\n\n    for (var i = elOptions.length - 1; i >= 0; i--) {\n      var elOption = elOptions[i];\n      var id = modelUtil.convertOptionIdName(elOption.id, null);\n      var el = id != null ? elMap.get(id) : null;\n\n      if (!el) {\n        continue;\n      }\n\n      var parentEl = el.parent;\n      var parentElInner = inner(parentEl);\n      var containerInfo = parentEl === rootGroup ? {\n        width: apiWidth,\n        height: apiHeight\n      } : {\n        width: parentElInner.width,\n        height: parentElInner.height\n      }; // PENDING\n      // Currently, when `bounding: 'all'`, the union bounding rect of the group\n      // does not include the rect of [0, 0, group.width, group.height], which\n      // is probably weird for users. Should we make a break change for it?\n\n      var layoutPos = {};\n      var layouted = layoutUtil.positionElement(el, elOption, containerInfo, null, {\n        hv: elOption.hv,\n        boundingMode: elOption.bounding\n      }, layoutPos);\n\n      if (!inner(el).isNew && layouted) {\n        var transition = elOption.transition;\n        var animatePos = {};\n\n        for (var k = 0; k < xy.length; k++) {\n          var key = xy[k];\n          var val = layoutPos[key];\n\n          if (transition && (isTransitionAll(transition) || zrUtil.indexOf(transition, key) >= 0)) {\n            animatePos[key] = val;\n          } else {\n            el[key] = val;\n          }\n        }\n\n        updateProps(el, animatePos, graphicModel, 0);\n      } else {\n        el.attr(layoutPos);\n      }\n    }\n  };\n  /**\r\n   * Clear all elements.\r\n   */\n\n\n  GraphicComponentView.prototype._clear = function () {\n    var _this = this;\n\n    var elMap = this._elMap;\n    elMap.each(function (el) {\n      removeEl(el, inner(el).option, elMap, _this._lastGraphicModel);\n    });\n    this._elMap = zrUtil.createHashMap();\n  };\n\n  GraphicComponentView.prototype.dispose = function () {\n    this._clear();\n  };\n\n  GraphicComponentView.type = 'graphic';\n  return GraphicComponentView;\n}(ComponentView);\n\nexport { GraphicComponentView };\n\nfunction newEl(graphicType) {\n  if (process.env.NODE_ENV !== 'production') {\n    zrUtil.assert(graphicType, 'graphic type MUST be set');\n  }\n\n  var Clz = zrUtil.hasOwn(nonShapeGraphicElements, graphicType) // Those graphic elements are not shapes. They should not be\n  // overwritten by users, so do them first.\n  ? nonShapeGraphicElements[graphicType] : graphicUtil.getShapeClass(graphicType);\n\n  if (process.env.NODE_ENV !== 'production') {\n    zrUtil.assert(Clz, \"graphic type \" + graphicType + \" can not be found\");\n  }\n\n  var el = new Clz({});\n  inner(el).type = graphicType;\n  return el;\n}\n\nfunction createEl(id, targetElParent, graphicType, elMap) {\n  var el = newEl(graphicType);\n  targetElParent.add(el);\n  elMap.set(id, el);\n  inner(el).id = id;\n  inner(el).isNew = true;\n  return el;\n}\n\nfunction removeEl(elExisting, elOption, elMap, graphicModel) {\n  var existElParent = elExisting && elExisting.parent;\n\n  if (existElParent) {\n    elExisting.type === 'group' && elExisting.traverse(function (el) {\n      removeEl(el, elOption, elMap, graphicModel);\n    });\n    applyLeaveTransition(elExisting, elOption, graphicModel);\n    elMap.removeKey(inner(elExisting).id);\n  }\n}\n\nfunction updateCommonAttrs(el, elOption, defaultZ, defaultZlevel) {\n  if (!el.isGroup) {\n    zrUtil.each([['cursor', Displayable.prototype.cursor], // We should not support configure z and zlevel in the element level.\n    // But seems we didn't limit it previously. So here still use it to avoid breaking.\n    ['zlevel', defaultZlevel || 0], ['z', defaultZ || 0], // z2 must not be null/undefined, otherwise sort error may occur.\n    ['z2', 0]], function (item) {\n      var prop = item[0];\n\n      if (zrUtil.hasOwn(elOption, prop)) {\n        el[prop] = zrUtil.retrieve2(elOption[prop], item[1]);\n      } else if (el[prop] == null) {\n        el[prop] = item[1];\n      }\n    });\n  }\n\n  zrUtil.each(zrUtil.keys(elOption), function (key) {\n    // Assign event handlers.\n    // PENDING: should enumerate all event names or use pattern matching?\n    if (key.indexOf('on') === 0) {\n      var val = elOption[key];\n      el[key] = zrUtil.isFunction(val) ? val : null;\n    }\n  });\n\n  if (zrUtil.hasOwn(elOption, 'draggable')) {\n    el.draggable = elOption.draggable;\n  } // Other attributes\n\n\n  elOption.name != null && (el.name = elOption.name);\n  elOption.id != null && (el.id = elOption.id);\n} // Remove unnecessary props to avoid potential problems.\n\n\nfunction getCleanedElOption(elOption) {\n  elOption = zrUtil.extend({}, elOption);\n  zrUtil.each(['id', 'parentId', '$action', 'hv', 'bounding', 'textContent', 'clipPath'].concat(layoutUtil.LOCATION_PARAMS), function (name) {\n    delete elOption[name];\n  });\n  return elOption;\n}\n\nfunction setEventData(el, graphicModel, elOption) {\n  var eventData = getECData(el).eventData; // Simple optimize for large amount of elements that no need event.\n\n  if (!el.silent && !el.ignore && !eventData) {\n    eventData = getECData(el).eventData = {\n      componentType: 'graphic',\n      componentIndex: graphicModel.componentIndex,\n      name: el.name\n    };\n  } // `elOption.info` enables user to mount some info on\n  // elements and use them in event handlers.\n\n\n  if (eventData) {\n    eventData.info = elOption.info;\n  }\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { indexOf, createHashMap, assert } from 'zrender/lib/core/util.js';\nexport var DATA_ZOOM_AXIS_DIMENSIONS = ['x', 'y', 'radius', 'angle', 'single']; // Supported coords.\n// FIXME: polar has been broken (but rarely used).\n\nvar SERIES_COORDS = ['cartesian2d', 'polar', 'singleAxis'];\nexport function isCoordSupported(seriesModel) {\n  var coordType = seriesModel.get('coordinateSystem');\n  return indexOf(SERIES_COORDS, coordType) >= 0;\n}\nexport function getAxisMainType(axisDim) {\n  if (process.env.NODE_ENV !== 'production') {\n    assert(axisDim);\n  }\n\n  return axisDim + 'Axis';\n}\nexport function getAxisIndexPropName(axisDim) {\n  if (process.env.NODE_ENV !== 'production') {\n    assert(axisDim);\n  }\n\n  return axisDim + 'AxisIndex';\n}\nexport function getAxisIdPropName(axisDim) {\n  if (process.env.NODE_ENV !== 'production') {\n    assert(axisDim);\n  }\n\n  return axisDim + 'AxisId';\n}\n/**\r\n * If two dataZoomModels has the same axis controlled, we say that they are 'linked'.\r\n * This function finds all linked dataZoomModels start from the given payload.\r\n */\n\nexport function findEffectedDataZooms(ecModel, payload) {\n  // Key: `DataZoomAxisDimension`\n  var axisRecords = createHashMap();\n  var effectedModels = []; // Key: uid of dataZoomModel\n\n  var effectedModelMap = createHashMap(); // Find the dataZooms specified by payload.\n\n  ecModel.eachComponent({\n    mainType: 'dataZoom',\n    query: payload\n  }, function (dataZoomModel) {\n    if (!effectedModelMap.get(dataZoomModel.uid)) {\n      addToEffected(dataZoomModel);\n    }\n  }); // Start from the given dataZoomModels, travel the graph to find\n  // all of the linked dataZoom models.\n\n  var foundNewLink;\n\n  do {\n    foundNewLink = false;\n    ecModel.eachComponent('dataZoom', processSingle);\n  } while (foundNewLink);\n\n  function processSingle(dataZoomModel) {\n    if (!effectedModelMap.get(dataZoomModel.uid) && isLinked(dataZoomModel)) {\n      addToEffected(dataZoomModel);\n      foundNewLink = true;\n    }\n  }\n\n  function addToEffected(dataZoom) {\n    effectedModelMap.set(dataZoom.uid, true);\n    effectedModels.push(dataZoom);\n    markAxisControlled(dataZoom);\n  }\n\n  function isLinked(dataZoomModel) {\n    var isLink = false;\n    dataZoomModel.eachTargetAxis(function (axisDim, axisIndex) {\n      var axisIdxArr = axisRecords.get(axisDim);\n\n      if (axisIdxArr && axisIdxArr[axisIndex]) {\n        isLink = true;\n      }\n    });\n    return isLink;\n  }\n\n  function markAxisControlled(dataZoomModel) {\n    dataZoomModel.eachTargetAxis(function (axisDim, axisIndex) {\n      (axisRecords.get(axisDim) || axisRecords.set(axisDim, []))[axisIndex] = true;\n    });\n  }\n\n  return effectedModels;\n}\n/**\r\n * Find the first target coordinate system.\r\n * Available after model built.\r\n *\r\n * @return Like {\r\n *                  grid: [\r\n *                      {model: coord0, axisModels: [axis1, axis3], coordIndex: 1},\r\n *                      {model: coord1, axisModels: [axis0, axis2], coordIndex: 0},\r\n *                      ...\r\n *                  ],  // cartesians must not be null/undefined.\r\n *                  polar: [\r\n *                      {model: coord0, axisModels: [axis4], coordIndex: 0},\r\n *                      ...\r\n *                  ],  // polars must not be null/undefined.\r\n *                  singleAxis: [\r\n *                      {model: coord0, axisModels: [], coordIndex: 0}\r\n *                  ]\r\n *              }\r\n */\n\nexport function collectReferCoordSysModelInfo(dataZoomModel) {\n  var ecModel = dataZoomModel.ecModel;\n  var coordSysInfoWrap = {\n    infoList: [],\n    infoMap: createHashMap()\n  };\n  dataZoomModel.eachTargetAxis(function (axisDim, axisIndex) {\n    var axisModel = ecModel.getComponent(getAxisMainType(axisDim), axisIndex);\n\n    if (!axisModel) {\n      return;\n    }\n\n    var coordSysModel = axisModel.getCoordSysModel();\n\n    if (!coordSysModel) {\n      return;\n    }\n\n    var coordSysUid = coordSysModel.uid;\n    var coordSysInfo = coordSysInfoWrap.infoMap.get(coordSysUid);\n\n    if (!coordSysInfo) {\n      coordSysInfo = {\n        model: coordSysModel,\n        axisModels: []\n      };\n      coordSysInfoWrap.infoList.push(coordSysInfo);\n      coordSysInfoWrap.infoMap.set(coordSysUid, coordSysInfo);\n    }\n\n    coordSysInfo.axisModels.push(axisModel);\n  });\n  return coordSysInfoWrap;\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { __extends } from \"tslib\";\nimport { each, createHashMap, merge, assert } from 'zrender/lib/core/util.js';\nimport ComponentModel from '../../model/Component.js';\nimport { getAxisMainType, DATA_ZOOM_AXIS_DIMENSIONS } from './helper.js';\nimport { MULTIPLE_REFERRING, SINGLE_REFERRING } from '../../util/model.js';\n\nvar DataZoomAxisInfo =\n/** @class */\nfunction () {\n  function DataZoomAxisInfo() {\n    this.indexList = [];\n    this.indexMap = [];\n  }\n\n  DataZoomAxisInfo.prototype.add = function (axisCmptIdx) {\n    // Remove duplication.\n    if (!this.indexMap[axisCmptIdx]) {\n      this.indexList.push(axisCmptIdx);\n      this.indexMap[axisCmptIdx] = true;\n    }\n  };\n\n  return DataZoomAxisInfo;\n}();\n\nvar DataZoomModel =\n/** @class */\nfunction (_super) {\n  __extends(DataZoomModel, _super);\n\n  function DataZoomModel() {\n    var _this = _super !== null && _super.apply(this, arguments) || this;\n\n    _this.type = DataZoomModel.type;\n    _this._autoThrottle = true;\n    _this._noTarget = true;\n    /**\r\n     * It is `[rangeModeForMin, rangeModeForMax]`.\r\n     * The optional values for `rangeMode`:\r\n     * + `'value'` mode: the axis extent will always be determined by\r\n     *     `dataZoom.startValue` and `dataZoom.endValue`, despite\r\n     *     how data like and how `axis.min` and `axis.max` are.\r\n     * + `'percent'` mode: `100` represents 100% of the `[dMin, dMax]`,\r\n     *     where `dMin` is `axis.min` if `axis.min` specified, otherwise `data.extent[0]`,\r\n     *     and `dMax` is `axis.max` if `axis.max` specified, otherwise `data.extent[1]`.\r\n     *     Axis extent will be determined by the result of the percent of `[dMin, dMax]`.\r\n     *\r\n     * For example, when users are using dynamic data (update data periodically via `setOption`),\r\n     * if in `'value`' mode, the window will be kept in a fixed value range despite how\r\n     * data are appended, while if in `'percent'` mode, whe window range will be changed alone with\r\n     * the appended data (suppose `axis.min` and `axis.max` are not specified).\r\n     */\n\n    _this._rangePropMode = ['percent', 'percent'];\n    return _this;\n  }\n\n  DataZoomModel.prototype.init = function (option, parentModel, ecModel) {\n    var inputRawOption = retrieveRawOption(option);\n    /**\r\n     * Suppose a \"main process\" start at the point that model prepared (that is,\r\n     * model initialized or merged or method called in `action`).\r\n     * We should keep the `main process` idempotent, that is, given a set of values\r\n     * on `option`, we get the same result.\r\n     *\r\n     * But sometimes, values on `option` will be updated for providing users\r\n     * a \"final calculated value\" (`dataZoomProcessor` will do that). Those value\r\n     * should not be the base/input of the `main process`.\r\n     *\r\n     * So in that case we should save and keep the input of the `main process`\r\n     * separately, called `settledOption`.\r\n     *\r\n     * For example, consider the case:\r\n     * (Step_1) brush zoom the grid by `toolbox.dataZoom`,\r\n     *     where the original input `option.startValue`, `option.endValue` are earsed by\r\n     *     calculated value.\r\n     * (Step)2) click the legend to hide and show a series,\r\n     *     where the new range is calculated by the earsed `startValue` and `endValue`,\r\n     *     which brings incorrect result.\r\n     */\n\n    this.settledOption = inputRawOption;\n    this.mergeDefaultAndTheme(option, ecModel);\n\n    this._doInit(inputRawOption);\n  };\n\n  DataZoomModel.prototype.mergeOption = function (newOption) {\n    var inputRawOption = retrieveRawOption(newOption); // FIX #2591\n\n    merge(this.option, newOption, true);\n    merge(this.settledOption, inputRawOption, true);\n\n    this._doInit(inputRawOption);\n  };\n\n  DataZoomModel.prototype._doInit = function (inputRawOption) {\n    var thisOption = this.option;\n\n    this._setDefaultThrottle(inputRawOption);\n\n    this._updateRangeUse(inputRawOption);\n\n    var settledOption = this.settledOption;\n    each([['start', 'startValue'], ['end', 'endValue']], function (names, index) {\n      // start/end has higher priority over startValue/endValue if they\n      // both set, but we should make chart.setOption({endValue: 1000})\n      // effective, rather than chart.setOption({endValue: 1000, end: null}).\n      if (this._rangePropMode[index] === 'value') {\n        thisOption[names[0]] = settledOption[names[0]] = null;\n      } // Otherwise do nothing and use the merge result.\n\n    }, this);\n\n    this._resetTarget();\n  };\n\n  DataZoomModel.prototype._resetTarget = function () {\n    var optionOrient = this.get('orient', true);\n    var targetAxisIndexMap = this._targetAxisInfoMap = createHashMap();\n\n    var hasAxisSpecified = this._fillSpecifiedTargetAxis(targetAxisIndexMap);\n\n    if (hasAxisSpecified) {\n      this._orient = optionOrient || this._makeAutoOrientByTargetAxis();\n    } else {\n      this._orient = optionOrient || 'horizontal';\n\n      this._fillAutoTargetAxisByOrient(targetAxisIndexMap, this._orient);\n    }\n\n    this._noTarget = true;\n    targetAxisIndexMap.each(function (axisInfo) {\n      if (axisInfo.indexList.length) {\n        this._noTarget = false;\n      }\n    }, this);\n  };\n\n  DataZoomModel.prototype._fillSpecifiedTargetAxis = function (targetAxisIndexMap) {\n    var hasAxisSpecified = false;\n    each(DATA_ZOOM_AXIS_DIMENSIONS, function (axisDim) {\n      var refering = this.getReferringComponents(getAxisMainType(axisDim), MULTIPLE_REFERRING); // When user set axisIndex as a empty array, we think that user specify axisIndex\n      // but do not want use auto mode. Because empty array may be encountered when\n      // some error occurred.\n\n      if (!refering.specified) {\n        return;\n      }\n\n      hasAxisSpecified = true;\n      var axisInfo = new DataZoomAxisInfo();\n      each(refering.models, function (axisModel) {\n        axisInfo.add(axisModel.componentIndex);\n      });\n      targetAxisIndexMap.set(axisDim, axisInfo);\n    }, this);\n    return hasAxisSpecified;\n  };\n\n  DataZoomModel.prototype._fillAutoTargetAxisByOrient = function (targetAxisIndexMap, orient) {\n    var ecModel = this.ecModel;\n    var needAuto = true; // Find axis that parallel to dataZoom as default.\n\n    if (needAuto) {\n      var axisDim = orient === 'vertical' ? 'y' : 'x';\n      var axisModels = ecModel.findComponents({\n        mainType: axisDim + 'Axis'\n      });\n      setParallelAxis(axisModels, axisDim);\n    } // Find axis that parallel to dataZoom as default.\n\n\n    if (needAuto) {\n      var axisModels = ecModel.findComponents({\n        mainType: 'singleAxis',\n        filter: function (axisModel) {\n          return axisModel.get('orient', true) === orient;\n        }\n      });\n      setParallelAxis(axisModels, 'single');\n    }\n\n    function setParallelAxis(axisModels, axisDim) {\n      // At least use the first parallel axis as the target axis.\n      var axisModel = axisModels[0];\n\n      if (!axisModel) {\n        return;\n      }\n\n      var axisInfo = new DataZoomAxisInfo();\n      axisInfo.add(axisModel.componentIndex);\n      targetAxisIndexMap.set(axisDim, axisInfo);\n      needAuto = false; // Find parallel axes in the same grid.\n\n      if (axisDim === 'x' || axisDim === 'y') {\n        var gridModel_1 = axisModel.getReferringComponents('grid', SINGLE_REFERRING).models[0];\n        gridModel_1 && each(axisModels, function (axModel) {\n          if (axisModel.componentIndex !== axModel.componentIndex && gridModel_1 === axModel.getReferringComponents('grid', SINGLE_REFERRING).models[0]) {\n            axisInfo.add(axModel.componentIndex);\n          }\n        });\n      }\n    }\n\n    if (needAuto) {\n      // If no parallel axis, find the first category axis as default. (Also consider polar).\n      each(DATA_ZOOM_AXIS_DIMENSIONS, function (axisDim) {\n        if (!needAuto) {\n          return;\n        }\n\n        var axisModels = ecModel.findComponents({\n          mainType: getAxisMainType(axisDim),\n          filter: function (axisModel) {\n            return axisModel.get('type', true) === 'category';\n          }\n        });\n\n        if (axisModels[0]) {\n          var axisInfo = new DataZoomAxisInfo();\n          axisInfo.add(axisModels[0].componentIndex);\n          targetAxisIndexMap.set(axisDim, axisInfo);\n          needAuto = false;\n        }\n      }, this);\n    }\n  };\n\n  DataZoomModel.prototype._makeAutoOrientByTargetAxis = function () {\n    var dim; // Find the first axis\n\n    this.eachTargetAxis(function (axisDim) {\n      !dim && (dim = axisDim);\n    }, this);\n    return dim === 'y' ? 'vertical' : 'horizontal';\n  };\n\n  DataZoomModel.prototype._setDefaultThrottle = function (inputRawOption) {\n    // When first time user set throttle, auto throttle ends.\n    if (inputRawOption.hasOwnProperty('throttle')) {\n      this._autoThrottle = false;\n    }\n\n    if (this._autoThrottle) {\n      var globalOption = this.ecModel.option;\n      this.option.throttle = globalOption.animation && globalOption.animationDurationUpdate > 0 ? 100 : 20;\n    }\n  };\n\n  DataZoomModel.prototype._updateRangeUse = function (inputRawOption) {\n    var rangePropMode = this._rangePropMode;\n    var rangeModeInOption = this.get('rangeMode');\n    each([['start', 'startValue'], ['end', 'endValue']], function (names, index) {\n      var percentSpecified = inputRawOption[names[0]] != null;\n      var valueSpecified = inputRawOption[names[1]] != null;\n\n      if (percentSpecified && !valueSpecified) {\n        rangePropMode[index] = 'percent';\n      } else if (!percentSpecified && valueSpecified) {\n        rangePropMode[index] = 'value';\n      } else if (rangeModeInOption) {\n        rangePropMode[index] = rangeModeInOption[index];\n      } else if (percentSpecified) {\n        // percentSpecified && valueSpecified\n        rangePropMode[index] = 'percent';\n      } // else remain its original setting.\n\n    });\n  };\n\n  DataZoomModel.prototype.noTarget = function () {\n    return this._noTarget;\n  };\n\n  DataZoomModel.prototype.getFirstTargetAxisModel = function () {\n    var firstAxisModel;\n    this.eachTargetAxis(function (axisDim, axisIndex) {\n      if (firstAxisModel == null) {\n        firstAxisModel = this.ecModel.getComponent(getAxisMainType(axisDim), axisIndex);\n      }\n    }, this);\n    return firstAxisModel;\n  };\n  /**\r\n   * @param {Function} callback param: axisModel, dimNames, axisIndex, dataZoomModel, ecModel\r\n   */\n\n\n  DataZoomModel.prototype.eachTargetAxis = function (callback, context) {\n    this._targetAxisInfoMap.each(function (axisInfo, axisDim) {\n      each(axisInfo.indexList, function (axisIndex) {\n        callback.call(context, axisDim, axisIndex);\n      });\n    });\n  };\n  /**\r\n   * @return If not found, return null/undefined.\r\n   */\n\n\n  DataZoomModel.prototype.getAxisProxy = function (axisDim, axisIndex) {\n    var axisModel = this.getAxisModel(axisDim, axisIndex);\n\n    if (axisModel) {\n      return axisModel.__dzAxisProxy;\n    }\n  };\n  /**\r\n   * @return If not found, return null/undefined.\r\n   */\n\n\n  DataZoomModel.prototype.getAxisModel = function (axisDim, axisIndex) {\n    if (process.env.NODE_ENV !== 'production') {\n      assert(axisDim && axisIndex != null);\n    }\n\n    var axisInfo = this._targetAxisInfoMap.get(axisDim);\n\n    if (axisInfo && axisInfo.indexMap[axisIndex]) {\n      return this.ecModel.getComponent(getAxisMainType(axisDim), axisIndex);\n    }\n  };\n  /**\r\n   * If not specified, set to undefined.\r\n   */\n\n\n  DataZoomModel.prototype.setRawRange = function (opt) {\n    var thisOption = this.option;\n    var settledOption = this.settledOption;\n    each([['start', 'startValue'], ['end', 'endValue']], function (names) {\n      // Consider the pair <start, startValue>:\n      // If one has value and the other one is `null/undefined`, we both set them\n      // to `settledOption`. This strategy enables the feature to clear the original\n      // value in `settledOption` to `null/undefined`.\n      // But if both of them are `null/undefined`, we do not set them to `settledOption`\n      // and keep `settledOption` with the original value. This strategy enables users to\n      // only set <end or endValue> but not set <start or startValue> when calling\n      // `dispatchAction`.\n      // The pair <end, endValue> is treated in the same way.\n      if (opt[names[0]] != null || opt[names[1]] != null) {\n        thisOption[names[0]] = settledOption[names[0]] = opt[names[0]];\n        thisOption[names[1]] = settledOption[names[1]] = opt[names[1]];\n      }\n    }, this);\n\n    this._updateRangeUse(opt);\n  };\n\n  DataZoomModel.prototype.setCalculatedRange = function (opt) {\n    var option = this.option;\n    each(['start', 'startValue', 'end', 'endValue'], function (name) {\n      option[name] = opt[name];\n    });\n  };\n\n  DataZoomModel.prototype.getPercentRange = function () {\n    var axisProxy = this.findRepresentativeAxisProxy();\n\n    if (axisProxy) {\n      return axisProxy.getDataPercentWindow();\n    }\n  };\n  /**\r\n   * For example, chart.getModel().getComponent('dataZoom').getValueRange('y', 0);\r\n   *\r\n   * @return [startValue, endValue] value can only be '-' or finite number.\r\n   */\n\n\n  DataZoomModel.prototype.getValueRange = function (axisDim, axisIndex) {\n    if (axisDim == null && axisIndex == null) {\n      var axisProxy = this.findRepresentativeAxisProxy();\n\n      if (axisProxy) {\n        return axisProxy.getDataValueWindow();\n      }\n    } else {\n      return this.getAxisProxy(axisDim, axisIndex).getDataValueWindow();\n    }\n  };\n  /**\r\n   * @param axisModel If axisModel given, find axisProxy\r\n   *      corresponding to the axisModel\r\n   */\n\n\n  DataZoomModel.prototype.findRepresentativeAxisProxy = function (axisModel) {\n    if (axisModel) {\n      return axisModel.__dzAxisProxy;\n    } // Find the first hosted axisProxy\n\n\n    var firstProxy;\n\n    var axisDimList = this._targetAxisInfoMap.keys();\n\n    for (var i = 0; i < axisDimList.length; i++) {\n      var axisDim = axisDimList[i];\n\n      var axisInfo = this._targetAxisInfoMap.get(axisDim);\n\n      for (var j = 0; j < axisInfo.indexList.length; j++) {\n        var proxy = this.getAxisProxy(axisDim, axisInfo.indexList[j]);\n\n        if (proxy.hostedBy(this)) {\n          return proxy;\n        }\n\n        if (!firstProxy) {\n          firstProxy = proxy;\n        }\n      }\n    } // If no hosted proxy found, still need to return a proxy.\n    // This case always happens in toolbox dataZoom, where axes are all hosted by\n    // other dataZooms.\n\n\n    return firstProxy;\n  };\n\n  DataZoomModel.prototype.getRangePropMode = function () {\n    return this._rangePropMode.slice();\n  };\n\n  DataZoomModel.prototype.getOrient = function () {\n    if (process.env.NODE_ENV !== 'production') {\n      // Should not be called before initialized.\n      assert(this._orient);\n    }\n\n    return this._orient;\n  };\n\n  DataZoomModel.type = 'dataZoom';\n  DataZoomModel.dependencies = ['xAxis', 'yAxis', 'radiusAxis', 'angleAxis', 'singleAxis', 'series', 'toolbox'];\n  DataZoomModel.defaultOption = {\n    // zlevel: 0,\n    z: 4,\n    filterMode: 'filter',\n    start: 0,\n    end: 100\n  };\n  return DataZoomModel;\n}(ComponentModel);\n/**\r\n * Retrieve those raw params from option, which will be cached separately,\r\n * because they will be overwritten by normalized/calculated values in the main\r\n * process.\r\n */\n\n\nfunction retrieveRawOption(option) {\n  var ret = {};\n  each(['start', 'end', 'startValue', 'endValue', 'throttle'], function (name) {\n    option.hasOwnProperty(name) && (ret[name] = option[name]);\n  });\n  return ret;\n}\n\nexport default DataZoomModel;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { __extends } from \"tslib\";\nimport DataZoomModel from './DataZoomModel.js';\n\nvar SelectDataZoomModel =\n/** @class */\nfunction (_super) {\n  __extends(SelectDataZoomModel, _super);\n\n  function SelectDataZoomModel() {\n    var _this = _super !== null && _super.apply(this, arguments) || this;\n\n    _this.type = SelectDataZoomModel.type;\n    return _this;\n  }\n\n  SelectDataZoomModel.type = 'dataZoom.select';\n  return SelectDataZoomModel;\n}(DataZoomModel);\n\nexport default SelectDataZoomModel;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { __extends } from \"tslib\";\nimport ComponentView from '../../view/Component.js';\n\nvar DataZoomView =\n/** @class */\nfunction (_super) {\n  __extends(DataZoomView, _super);\n\n  function DataZoomView() {\n    var _this = _super !== null && _super.apply(this, arguments) || this;\n\n    _this.type = DataZoomView.type;\n    return _this;\n  }\n\n  DataZoomView.prototype.render = function (dataZoomModel, ecModel, api, payload) {\n    this.dataZoomModel = dataZoomModel;\n    this.ecModel = ecModel;\n    this.api = api;\n  };\n\n  DataZoomView.type = 'dataZoom';\n  return DataZoomView;\n}(ComponentView);\n\nexport default DataZoomView;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { __extends } from \"tslib\";\nimport DataZoomView from './DataZoomView.js';\n\nvar SelectDataZoomView =\n/** @class */\nfunction (_super) {\n  __extends(SelectDataZoomView, _super);\n\n  function SelectDataZoomView() {\n    var _this = _super !== null && _super.apply(this, arguments) || this;\n\n    _this.type = SelectDataZoomView.type;\n    return _this;\n  }\n\n  SelectDataZoomView.type = 'dataZoom.select';\n  return SelectDataZoomView;\n}(DataZoomView);\n\nexport default SelectDataZoomView;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport * as zrUtil from 'zrender/lib/core/util.js';\nimport * as numberUtil from '../../util/number.js';\nimport sliderMove from '../helper/sliderMove.js';\nimport { unionAxisExtentFromData } from '../../coord/axisHelper.js';\nimport { ensureScaleRawExtentInfo } from '../../coord/scaleRawExtentInfo.js';\nimport { getAxisMainType, isCoordSupported } from './helper.js';\nimport { SINGLE_REFERRING } from '../../util/model.js';\nvar each = zrUtil.each;\nvar asc = numberUtil.asc;\n/**\r\n * Operate single axis.\r\n * One axis can only operated by one axis operator.\r\n * Different dataZoomModels may be defined to operate the same axis.\r\n * (i.e. 'inside' data zoom and 'slider' data zoom components)\r\n * So dataZoomModels share one axisProxy in that case.\r\n */\n\nvar AxisProxy =\n/** @class */\nfunction () {\n  function AxisProxy(dimName, axisIndex, dataZoomModel, ecModel) {\n    this._dimName = dimName;\n    this._axisIndex = axisIndex;\n    this.ecModel = ecModel;\n    this._dataZoomModel = dataZoomModel; // /**\n    //  * @readOnly\n    //  * @private\n    //  */\n    // this.hasSeriesStacked;\n  }\n  /**\r\n   * Whether the axisProxy is hosted by dataZoomModel.\r\n   */\n\n\n  AxisProxy.prototype.hostedBy = function (dataZoomModel) {\n    return this._dataZoomModel === dataZoomModel;\n  };\n  /**\r\n   * @return Value can only be NaN or finite value.\r\n   */\n\n\n  AxisProxy.prototype.getDataValueWindow = function () {\n    return this._valueWindow.slice();\n  };\n  /**\r\n   * @return {Array.<number>}\r\n   */\n\n\n  AxisProxy.prototype.getDataPercentWindow = function () {\n    return this._percentWindow.slice();\n  };\n\n  AxisProxy.prototype.getTargetSeriesModels = function () {\n    var seriesModels = [];\n    this.ecModel.eachSeries(function (seriesModel) {\n      if (isCoordSupported(seriesModel)) {\n        var axisMainType = getAxisMainType(this._dimName);\n        var axisModel = seriesModel.getReferringComponents(axisMainType, SINGLE_REFERRING).models[0];\n\n        if (axisModel && this._axisIndex === axisModel.componentIndex) {\n          seriesModels.push(seriesModel);\n        }\n      }\n    }, this);\n    return seriesModels;\n  };\n\n  AxisProxy.prototype.getAxisModel = function () {\n    return this.ecModel.getComponent(this._dimName + 'Axis', this._axisIndex);\n  };\n\n  AxisProxy.prototype.getMinMaxSpan = function () {\n    return zrUtil.clone(this._minMaxSpan);\n  };\n  /**\r\n   * Only calculate by given range and this._dataExtent, do not change anything.\r\n   */\n\n\n  AxisProxy.prototype.calculateDataWindow = function (opt) {\n    var dataExtent = this._dataExtent;\n    var axisModel = this.getAxisModel();\n    var scale = axisModel.axis.scale;\n\n    var rangePropMode = this._dataZoomModel.getRangePropMode();\n\n    var percentExtent = [0, 100];\n    var percentWindow = [];\n    var valueWindow = [];\n    var hasPropModeValue;\n    each(['start', 'end'], function (prop, idx) {\n      var boundPercent = opt[prop];\n      var boundValue = opt[prop + 'Value']; // Notice: dataZoom is based either on `percentProp` ('start', 'end') or\n      // on `valueProp` ('startValue', 'endValue'). (They are based on the data extent\n      // but not min/max of axis, which will be calculated by data window then).\n      // The former one is suitable for cases that a dataZoom component controls multiple\n      // axes with different unit or extent, and the latter one is suitable for accurate\n      // zoom by pixel (e.g., in dataZoomSelect).\n      // we use `getRangePropMode()` to mark which prop is used. `rangePropMode` is updated\n      // only when setOption or dispatchAction, otherwise it remains its original value.\n      // (Why not only record `percentProp` and always map to `valueProp`? Because\n      // the map `valueProp` -> `percentProp` -> `valueProp` probably not the original\n      // `valueProp`. consider two axes constrolled by one dataZoom. They have different\n      // data extent. All of values that are overflow the `dataExtent` will be calculated\n      // to percent '100%').\n\n      if (rangePropMode[idx] === 'percent') {\n        boundPercent == null && (boundPercent = percentExtent[idx]); // Use scale.parse to math round for category or time axis.\n\n        boundValue = scale.parse(numberUtil.linearMap(boundPercent, percentExtent, dataExtent));\n      } else {\n        hasPropModeValue = true;\n        boundValue = boundValue == null ? dataExtent[idx] : scale.parse(boundValue); // Calculating `percent` from `value` may be not accurate, because\n        // This calculation can not be inversed, because all of values that\n        // are overflow the `dataExtent` will be calculated to percent '100%'\n\n        boundPercent = numberUtil.linearMap(boundValue, dataExtent, percentExtent);\n      } // valueWindow[idx] = round(boundValue);\n      // percentWindow[idx] = round(boundPercent);\n      // fallback to extent start/end when parsed value or percent is invalid\n\n\n      valueWindow[idx] = boundValue == null || isNaN(boundValue) ? dataExtent[idx] : boundValue;\n      percentWindow[idx] = boundPercent == null || isNaN(boundPercent) ? percentExtent[idx] : boundPercent;\n    });\n    asc(valueWindow);\n    asc(percentWindow); // The windows from user calling of `dispatchAction` might be out of the extent,\n    // or do not obey the `min/maxSpan`, `min/maxValueSpan`. But we don't restrict window\n    // by `zoomLock` here, because we see `zoomLock` just as a interaction constraint,\n    // where API is able to initialize/modify the window size even though `zoomLock`\n    // specified.\n\n    var spans = this._minMaxSpan;\n    hasPropModeValue ? restrictSet(valueWindow, percentWindow, dataExtent, percentExtent, false) : restrictSet(percentWindow, valueWindow, percentExtent, dataExtent, true);\n\n    function restrictSet(fromWindow, toWindow, fromExtent, toExtent, toValue) {\n      var suffix = toValue ? 'Span' : 'ValueSpan';\n      sliderMove(0, fromWindow, fromExtent, 'all', spans['min' + suffix], spans['max' + suffix]);\n\n      for (var i = 0; i < 2; i++) {\n        toWindow[i] = numberUtil.linearMap(fromWindow[i], fromExtent, toExtent, true);\n        toValue && (toWindow[i] = scale.parse(toWindow[i]));\n      }\n    }\n\n    return {\n      valueWindow: valueWindow,\n      percentWindow: percentWindow\n    };\n  };\n  /**\r\n   * Notice: reset should not be called before series.restoreData() is called,\r\n   * so it is recommended to be called in \"process stage\" but not \"model init\r\n   * stage\".\r\n   */\n\n\n  AxisProxy.prototype.reset = function (dataZoomModel) {\n    if (dataZoomModel !== this._dataZoomModel) {\n      return;\n    }\n\n    var targetSeries = this.getTargetSeriesModels(); // Culculate data window and data extent, and record them.\n\n    this._dataExtent = calculateDataExtent(this, this._dimName, targetSeries); // `calculateDataWindow` uses min/maxSpan.\n\n    this._updateMinMaxSpan();\n\n    var dataWindow = this.calculateDataWindow(dataZoomModel.settledOption);\n    this._valueWindow = dataWindow.valueWindow;\n    this._percentWindow = dataWindow.percentWindow; // Update axis setting then.\n\n    this._setAxisModel();\n  };\n\n  AxisProxy.prototype.filterData = function (dataZoomModel, api) {\n    if (dataZoomModel !== this._dataZoomModel) {\n      return;\n    }\n\n    var axisDim = this._dimName;\n    var seriesModels = this.getTargetSeriesModels();\n    var filterMode = dataZoomModel.get('filterMode');\n    var valueWindow = this._valueWindow;\n\n    if (filterMode === 'none') {\n      return;\n    } // FIXME\n    // Toolbox may has dataZoom injected. And if there are stacked bar chart\n    // with NaN data, NaN will be filtered and stack will be wrong.\n    // So we need to force the mode to be set empty.\n    // In fect, it is not a big deal that do not support filterMode-'filter'\n    // when using toolbox#dataZoom, utill tooltip#dataZoom support \"single axis\n    // selection\" some day, which might need \"adapt to data extent on the\n    // otherAxis\", which is disabled by filterMode-'empty'.\n    // But currently, stack has been fixed to based on value but not index,\n    // so this is not an issue any more.\n    // let otherAxisModel = this.getOtherAxisModel();\n    // if (dataZoomModel.get('$fromToolbox')\n    //     && otherAxisModel\n    //     && otherAxisModel.hasSeriesStacked\n    // ) {\n    //     filterMode = 'empty';\n    // }\n    // TODO\n    // filterMode 'weakFilter' and 'empty' is not optimized for huge data yet.\n\n\n    each(seriesModels, function (seriesModel) {\n      var seriesData = seriesModel.getData();\n      var dataDims = seriesData.mapDimensionsAll(axisDim);\n\n      if (!dataDims.length) {\n        return;\n      }\n\n      if (filterMode === 'weakFilter') {\n        var store_1 = seriesData.getStore();\n        var dataDimIndices_1 = zrUtil.map(dataDims, function (dim) {\n          return seriesData.getDimensionIndex(dim);\n        }, seriesData);\n        seriesData.filterSelf(function (dataIndex) {\n          var leftOut;\n          var rightOut;\n          var hasValue;\n\n          for (var i = 0; i < dataDims.length; i++) {\n            var value = store_1.get(dataDimIndices_1[i], dataIndex);\n            var thisHasValue = !isNaN(value);\n            var thisLeftOut = value < valueWindow[0];\n            var thisRightOut = value > valueWindow[1];\n\n            if (thisHasValue && !thisLeftOut && !thisRightOut) {\n              return true;\n            }\n\n            thisHasValue && (hasValue = true);\n            thisLeftOut && (leftOut = true);\n            thisRightOut && (rightOut = true);\n          } // If both left out and right out, do not filter.\n\n\n          return hasValue && leftOut && rightOut;\n        });\n      } else {\n        each(dataDims, function (dim) {\n          if (filterMode === 'empty') {\n            seriesModel.setData(seriesData = seriesData.map(dim, function (value) {\n              return !isInWindow(value) ? NaN : value;\n            }));\n          } else {\n            var range = {};\n            range[dim] = valueWindow; // console.time('select');\n\n            seriesData.selectRange(range); // console.timeEnd('select');\n          }\n        });\n      }\n\n      each(dataDims, function (dim) {\n        seriesData.setApproximateExtent(valueWindow, dim);\n      });\n    });\n\n    function isInWindow(value) {\n      return value >= valueWindow[0] && value <= valueWindow[1];\n    }\n  };\n\n  AxisProxy.prototype._updateMinMaxSpan = function () {\n    var minMaxSpan = this._minMaxSpan = {};\n    var dataZoomModel = this._dataZoomModel;\n    var dataExtent = this._dataExtent;\n    each(['min', 'max'], function (minMax) {\n      var percentSpan = dataZoomModel.get(minMax + 'Span');\n      var valueSpan = dataZoomModel.get(minMax + 'ValueSpan');\n      valueSpan != null && (valueSpan = this.getAxisModel().axis.scale.parse(valueSpan)); // minValueSpan and maxValueSpan has higher priority than minSpan and maxSpan\n\n      if (valueSpan != null) {\n        percentSpan = numberUtil.linearMap(dataExtent[0] + valueSpan, dataExtent, [0, 100], true);\n      } else if (percentSpan != null) {\n        valueSpan = numberUtil.linearMap(percentSpan, [0, 100], dataExtent, true) - dataExtent[0];\n      }\n\n      minMaxSpan[minMax + 'Span'] = percentSpan;\n      minMaxSpan[minMax + 'ValueSpan'] = valueSpan;\n    }, this);\n  };\n\n  AxisProxy.prototype._setAxisModel = function () {\n    var axisModel = this.getAxisModel();\n    var percentWindow = this._percentWindow;\n    var valueWindow = this._valueWindow;\n\n    if (!percentWindow) {\n      return;\n    } // [0, 500]: arbitrary value, guess axis extent.\n\n\n    var precision = numberUtil.getPixelPrecision(valueWindow, [0, 500]);\n    precision = Math.min(precision, 20); // For value axis, if min/max/scale are not set, we just use the extent obtained\n    // by series data, which may be a little different from the extent calculated by\n    // `axisHelper.getScaleExtent`. But the different just affects the experience a\n    // little when zooming. So it will not be fixed until some users require it strongly.\n\n    var rawExtentInfo = axisModel.axis.scale.rawExtentInfo;\n\n    if (percentWindow[0] !== 0) {\n      rawExtentInfo.setDeterminedMinMax('min', +valueWindow[0].toFixed(precision));\n    }\n\n    if (percentWindow[1] !== 100) {\n      rawExtentInfo.setDeterminedMinMax('max', +valueWindow[1].toFixed(precision));\n    }\n\n    rawExtentInfo.freeze();\n  };\n\n  return AxisProxy;\n}();\n\nfunction calculateDataExtent(axisProxy, axisDim, seriesModels) {\n  var dataExtent = [Infinity, -Infinity];\n  each(seriesModels, function (seriesModel) {\n    unionAxisExtentFromData(dataExtent, seriesModel.getData(), axisDim);\n  }); // It is important to get \"consistent\" extent when more then one axes is\n  // controlled by a `dataZoom`, otherwise those axes will not be synchronized\n  // when zooming. But it is difficult to know what is \"consistent\", considering\n  // axes have different type or even different meanings (For example, two\n  // time axes are used to compare data of the same date in different years).\n  // So basically dataZoom just obtains extent by series.data (in category axis\n  // extent can be obtained from axis.data).\n  // Nevertheless, user can set min/max/scale on axes to make extent of axes\n  // consistent.\n\n  var axisModel = axisProxy.getAxisModel();\n  var rawExtentResult = ensureScaleRawExtentInfo(axisModel.axis.scale, axisModel, dataExtent).calculate();\n  return [rawExtentResult.min, rawExtentResult.max];\n}\n\nexport default AxisProxy;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { createHashMap, each } from 'zrender/lib/core/util.js';\nimport { getAxisMainType } from './helper.js';\nimport AxisProxy from './AxisProxy.js';\nvar dataZoomProcessor = {\n  // `dataZoomProcessor` will only be performed in needed series. Consider if\n  // there is a line series and a pie series, it is better not to update the\n  // line series if only pie series is needed to be updated.\n  getTargetSeries: function (ecModel) {\n    function eachAxisModel(cb) {\n      ecModel.eachComponent('dataZoom', function (dataZoomModel) {\n        dataZoomModel.eachTargetAxis(function (axisDim, axisIndex) {\n          var axisModel = ecModel.getComponent(getAxisMainType(axisDim), axisIndex);\n          cb(axisDim, axisIndex, axisModel, dataZoomModel);\n        });\n      });\n    } // FIXME: it brings side-effect to `getTargetSeries`.\n    // Prepare axis proxies.\n\n\n    eachAxisModel(function (axisDim, axisIndex, axisModel, dataZoomModel) {\n      // dispose all last axis proxy, in case that some axis are deleted.\n      axisModel.__dzAxisProxy = null;\n    });\n    var proxyList = [];\n    eachAxisModel(function (axisDim, axisIndex, axisModel, dataZoomModel) {\n      // Different dataZooms may constrol the same axis. In that case,\n      // an axisProxy serves both of them.\n      if (!axisModel.__dzAxisProxy) {\n        // Use the first dataZoomModel as the main model of axisProxy.\n        axisModel.__dzAxisProxy = new AxisProxy(axisDim, axisIndex, dataZoomModel, ecModel);\n        proxyList.push(axisModel.__dzAxisProxy);\n      }\n    });\n    var seriesModelMap = createHashMap();\n    each(proxyList, function (axisProxy) {\n      each(axisProxy.getTargetSeriesModels(), function (seriesModel) {\n        seriesModelMap.set(seriesModel.uid, seriesModel);\n      });\n    });\n    return seriesModelMap;\n  },\n  // Consider appendData, where filter should be performed. Because data process is\n  // in block mode currently, it is not need to worry about that the overallProgress\n  // execute every frame.\n  overallReset: function (ecModel, api) {\n    ecModel.eachComponent('dataZoom', function (dataZoomModel) {\n      // We calculate window and reset axis here but not in model\n      // init stage and not after action dispatch handler, because\n      // reset should be called after seriesData.restoreData.\n      dataZoomModel.eachTargetAxis(function (axisDim, axisIndex) {\n        dataZoomModel.getAxisProxy(axisDim, axisIndex).reset(dataZoomModel);\n      }); // Caution: data zoom filtering is order sensitive when using\n      // percent range and no min/max/scale set on axis.\n      // For example, we have dataZoom definition:\n      // [\n      //      {xAxisIndex: 0, start: 30, end: 70},\n      //      {yAxisIndex: 0, start: 20, end: 80}\n      // ]\n      // In this case, [20, 80] of y-dataZoom should be based on data\n      // that have filtered by x-dataZoom using range of [30, 70],\n      // but should not be based on full raw data. Thus sliding\n      // x-dataZoom will change both ranges of xAxis and yAxis,\n      // while sliding y-dataZoom will only change the range of yAxis.\n      // So we should filter x-axis after reset x-axis immediately,\n      // and then reset y-axis and filter y-axis.\n\n      dataZoomModel.eachTargetAxis(function (axisDim, axisIndex) {\n        dataZoomModel.getAxisProxy(axisDim, axisIndex).filterData(dataZoomModel, api);\n      });\n    });\n    ecModel.eachComponent('dataZoom', function (dataZoomModel) {\n      // Fullfill all of the range props so that user\n      // is able to get them from chart.getOption().\n      var axisProxy = dataZoomModel.findRepresentativeAxisProxy();\n\n      if (axisProxy) {\n        var percentRange = axisProxy.getDataPercentWindow();\n        var valueRange = axisProxy.getDataValueWindow();\n        dataZoomModel.setCalculatedRange({\n          start: percentRange[0],\n          end: percentRange[1],\n          startValue: valueRange[0],\n          endValue: valueRange[1]\n        });\n      }\n    });\n  }\n};\nexport default dataZoomProcessor;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport dataZoomProcessor from './dataZoomProcessor.js';\nimport installDataZoomAction from './dataZoomAction.js';\nvar installed = false;\nexport default function installCommon(registers) {\n  if (installed) {\n    return;\n  }\n\n  installed = true;\n  registers.registerProcessor(registers.PRIORITY.PROCESSOR.FILTER, dataZoomProcessor);\n  installDataZoomAction(registers);\n  registers.registerSubTypeDefaulter('dataZoom', function () {\n    // Default 'slider' when no type specified.\n    return 'slider';\n  });\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { findEffectedDataZooms } from './helper.js';\nimport { each } from 'zrender/lib/core/util.js';\nexport default function installDataZoomAction(registers) {\n  registers.registerAction('dataZoom', function (payload, ecModel) {\n    var effectedModels = findEffectedDataZooms(ecModel, payload);\n    each(effectedModels, function (dataZoomModel) {\n      dataZoomModel.setRawRange({\n        start: payload.start,\n        end: payload.end,\n        startValue: payload.startValue,\n        endValue: payload.endValue\n      });\n    });\n  });\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport SelectZoomModel from './SelectZoomModel.js';\nimport SelectZoomView from './SelectZoomView.js';\nimport installCommon from './installCommon.js';\nexport function install(registers) {\n  registers.registerComponentModel(SelectZoomModel);\n  registers.registerComponentView(SelectZoomView);\n  installCommon(registers);\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\nvar ToolboxFeature =\n/** @class */\nfunction () {\n  function ToolboxFeature() {}\n\n  return ToolboxFeature;\n}();\n\nexport { ToolboxFeature };\nvar features = {};\nexport function registerFeature(name, ctor) {\n  features[name] = ctor;\n}\nexport function getFeature(name) {\n  return features[name];\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { __extends } from \"tslib\";\nimport * as zrUtil from 'zrender/lib/core/util.js';\nimport * as featureManager from './featureManager.js';\nimport ComponentModel from '../../model/Component.js';\n\nvar ToolboxModel =\n/** @class */\nfunction (_super) {\n  __extends(ToolboxModel, _super);\n\n  function ToolboxModel() {\n    var _this = _super !== null && _super.apply(this, arguments) || this;\n\n    _this.type = ToolboxModel.type;\n    return _this;\n  }\n\n  ToolboxModel.prototype.optionUpdated = function () {\n    _super.prototype.optionUpdated.apply(this, arguments);\n\n    var ecModel = this.ecModel;\n    zrUtil.each(this.option.feature, function (featureOpt, featureName) {\n      var Feature = featureManager.getFeature(featureName);\n\n      if (Feature) {\n        if (Feature.getDefaultOption) {\n          Feature.defaultOption = Feature.getDefaultOption(ecModel);\n        }\n\n        zrUtil.merge(featureOpt, Feature.defaultOption);\n      }\n    });\n  };\n\n  ToolboxModel.type = 'toolbox';\n  ToolboxModel.layoutMode = {\n    type: 'box',\n    ignoreSize: true\n  };\n  ToolboxModel.defaultOption = {\n    show: true,\n    z: 6,\n    // zlevel: 0,\n    orient: 'horizontal',\n    left: 'right',\n    top: 'top',\n    // right\n    // bottom\n    backgroundColor: 'transparent',\n    borderColor: '#ccc',\n    borderRadius: 0,\n    borderWidth: 0,\n    padding: 5,\n    itemSize: 15,\n    itemGap: 8,\n    showTitle: true,\n    iconStyle: {\n      borderColor: '#666',\n      color: 'none'\n    },\n    emphasis: {\n      iconStyle: {\n        borderColor: '#3E98C5'\n      }\n    },\n    // textStyle: {},\n    // feature\n    tooltip: {\n      show: false,\n      position: 'bottom'\n    }\n  };\n  return ToolboxModel;\n}(ComponentModel);\n\nexport default ToolboxModel;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\n// @ts-nocheck\nimport { getLayoutRect, box as layoutBox, positionElement } from '../../util/layout.js';\nimport * as formatUtil from '../../util/format.js';\nimport * as graphic from '../../util/graphic.js';\n/**\r\n * Layout list like component.\r\n * It will box layout each items in group of component and then position the whole group in the viewport\r\n * @param {module:zrender/group/Group} group\r\n * @param {module:echarts/model/Component} componentModel\r\n * @param {module:echarts/ExtensionAPI}\r\n */\n\nexport function layout(group, componentModel, api) {\n  var boxLayoutParams = componentModel.getBoxLayoutParams();\n  var padding = componentModel.get('padding');\n  var viewportSize = {\n    width: api.getWidth(),\n    height: api.getHeight()\n  };\n  var rect = getLayoutRect(boxLayoutParams, viewportSize, padding);\n  layoutBox(componentModel.get('orient'), group, componentModel.get('itemGap'), rect.width, rect.height);\n  positionElement(group, boxLayoutParams, viewportSize, padding);\n}\nexport function makeBackground(rect, componentModel) {\n  var padding = formatUtil.normalizeCssArray(componentModel.get('padding'));\n  var style = componentModel.getItemStyle(['color', 'opacity']);\n  style.fill = componentModel.get('backgroundColor');\n  rect = new graphic.Rect({\n    shape: {\n      x: rect.x - padding[3],\n      y: rect.y - padding[0],\n      width: rect.width + padding[1] + padding[3],\n      height: rect.height + padding[0] + padding[2],\n      r: componentModel.get('borderRadius')\n    },\n    style: style,\n    silent: true,\n    z2: -1\n  }); // FIXME\n  // `subPixelOptimizeRect` may bring some gap between edge of viewpart\n  // and background rect when setting like `left: 0`, `top: 0`.\n  // graphic.subPixelOptimizeRect(rect);\n\n  return rect;\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { __extends } from \"tslib\";\nimport * as zrUtil from 'zrender/lib/core/util.js';\nimport * as textContain from 'zrender/lib/contain/text.js';\nimport * as graphic from '../../util/graphic.js';\nimport { enterEmphasis, leaveEmphasis } from '../../util/states.js';\nimport Model from '../../model/Model.js';\nimport DataDiffer from '../../data/DataDiffer.js';\nimport * as listComponentHelper from '../helper/listComponent.js';\nimport ComponentView from '../../view/Component.js';\nimport { ToolboxFeature, getFeature } from './featureManager.js';\nimport { getUID } from '../../util/component.js';\nimport ZRText from 'zrender/lib/graphic/Text.js';\n\nvar ToolboxView =\n/** @class */\nfunction (_super) {\n  __extends(ToolboxView, _super);\n\n  function ToolboxView() {\n    return _super !== null && _super.apply(this, arguments) || this;\n  }\n\n  ToolboxView.prototype.render = function (toolboxModel, ecModel, api, payload) {\n    var group = this.group;\n    group.removeAll();\n\n    if (!toolboxModel.get('show')) {\n      return;\n    }\n\n    var itemSize = +toolboxModel.get('itemSize');\n    var isVertical = toolboxModel.get('orient') === 'vertical';\n    var featureOpts = toolboxModel.get('feature') || {};\n    var features = this._features || (this._features = {});\n    var featureNames = [];\n    zrUtil.each(featureOpts, function (opt, name) {\n      featureNames.push(name);\n    });\n    new DataDiffer(this._featureNames || [], featureNames).add(processFeature).update(processFeature).remove(zrUtil.curry(processFeature, null)).execute(); // Keep for diff.\n\n    this._featureNames = featureNames;\n\n    function processFeature(newIndex, oldIndex) {\n      var featureName = featureNames[newIndex];\n      var oldName = featureNames[oldIndex];\n      var featureOpt = featureOpts[featureName];\n      var featureModel = new Model(featureOpt, toolboxModel, toolboxModel.ecModel);\n      var feature; // FIX#11236, merge feature title from MagicType newOption. TODO: consider seriesIndex ?\n\n      if (payload && payload.newTitle != null && payload.featureName === featureName) {\n        featureOpt.title = payload.newTitle;\n      }\n\n      if (featureName && !oldName) {\n        // Create\n        if (isUserFeatureName(featureName)) {\n          feature = {\n            onclick: featureModel.option.onclick,\n            featureName: featureName\n          };\n        } else {\n          var Feature = getFeature(featureName);\n\n          if (!Feature) {\n            return;\n          }\n\n          feature = new Feature();\n        }\n\n        features[featureName] = feature;\n      } else {\n        feature = features[oldName]; // If feature does not exist.\n\n        if (!feature) {\n          return;\n        }\n      }\n\n      feature.uid = getUID('toolbox-feature');\n      feature.model = featureModel;\n      feature.ecModel = ecModel;\n      feature.api = api;\n      var isToolboxFeature = feature instanceof ToolboxFeature;\n\n      if (!featureName && oldName) {\n        isToolboxFeature && feature.dispose && feature.dispose(ecModel, api);\n        return;\n      }\n\n      if (!featureModel.get('show') || isToolboxFeature && feature.unusable) {\n        isToolboxFeature && feature.remove && feature.remove(ecModel, api);\n        return;\n      }\n\n      createIconPaths(featureModel, feature, featureName);\n\n      featureModel.setIconStatus = function (iconName, status) {\n        var option = this.option;\n        var iconPaths = this.iconPaths;\n        option.iconStatus = option.iconStatus || {};\n        option.iconStatus[iconName] = status;\n\n        if (iconPaths[iconName]) {\n          (status === 'emphasis' ? enterEmphasis : leaveEmphasis)(iconPaths[iconName]);\n        }\n      };\n\n      if (feature instanceof ToolboxFeature) {\n        if (feature.render) {\n          feature.render(featureModel, ecModel, api, payload);\n        }\n      }\n    }\n\n    function createIconPaths(featureModel, feature, featureName) {\n      var iconStyleModel = featureModel.getModel('iconStyle');\n      var iconStyleEmphasisModel = featureModel.getModel(['emphasis', 'iconStyle']); // If one feature has multiple icons, they are organized as\n      // {\n      //     icon: {\n      //         foo: '',\n      //         bar: ''\n      //     },\n      //     title: {\n      //         foo: '',\n      //         bar: ''\n      //     }\n      // }\n\n      var icons = feature instanceof ToolboxFeature && feature.getIcons ? feature.getIcons() : featureModel.get('icon');\n      var titles = featureModel.get('title') || {};\n      var iconsMap;\n      var titlesMap;\n\n      if (zrUtil.isString(icons)) {\n        iconsMap = {};\n        iconsMap[featureName] = icons;\n      } else {\n        iconsMap = icons;\n      }\n\n      if (zrUtil.isString(titles)) {\n        titlesMap = {};\n        titlesMap[featureName] = titles;\n      } else {\n        titlesMap = titles;\n      }\n\n      var iconPaths = featureModel.iconPaths = {};\n      zrUtil.each(iconsMap, function (iconStr, iconName) {\n        var path = graphic.createIcon(iconStr, {}, {\n          x: -itemSize / 2,\n          y: -itemSize / 2,\n          width: itemSize,\n          height: itemSize\n        }); // TODO handling image\n\n        path.setStyle(iconStyleModel.getItemStyle());\n        var pathEmphasisState = path.ensureState('emphasis');\n        pathEmphasisState.style = iconStyleEmphasisModel.getItemStyle(); // Text position calculation\n\n        var textContent = new ZRText({\n          style: {\n            text: titlesMap[iconName],\n            align: iconStyleEmphasisModel.get('textAlign'),\n            borderRadius: iconStyleEmphasisModel.get('textBorderRadius'),\n            padding: iconStyleEmphasisModel.get('textPadding'),\n            fill: null\n          },\n          ignore: true\n        });\n        path.setTextContent(textContent);\n        graphic.setTooltipConfig({\n          el: path,\n          componentModel: toolboxModel,\n          itemName: iconName,\n          formatterParamsExtra: {\n            title: titlesMap[iconName]\n          }\n        });\n        path.__title = titlesMap[iconName];\n        path.on('mouseover', function () {\n          // Should not reuse above hoverStyle, which might be modified.\n          var hoverStyle = iconStyleEmphasisModel.getItemStyle();\n          var defaultTextPosition = isVertical ? toolboxModel.get('right') == null && toolboxModel.get('left') !== 'right' ? 'right' : 'left' : toolboxModel.get('bottom') == null && toolboxModel.get('top') !== 'bottom' ? 'bottom' : 'top';\n          textContent.setStyle({\n            fill: iconStyleEmphasisModel.get('textFill') || hoverStyle.fill || hoverStyle.stroke || '#000',\n            backgroundColor: iconStyleEmphasisModel.get('textBackgroundColor')\n          });\n          path.setTextConfig({\n            position: iconStyleEmphasisModel.get('textPosition') || defaultTextPosition\n          });\n          textContent.ignore = !toolboxModel.get('showTitle'); // Use enterEmphasis and leaveEmphasis provide by ec.\n          // There are flags managed by the echarts.\n\n          api.enterEmphasis(this);\n        }).on('mouseout', function () {\n          if (featureModel.get(['iconStatus', iconName]) !== 'emphasis') {\n            api.leaveEmphasis(this);\n          }\n\n          textContent.hide();\n        });\n        (featureModel.get(['iconStatus', iconName]) === 'emphasis' ? enterEmphasis : leaveEmphasis)(path);\n        group.add(path);\n        path.on('click', zrUtil.bind(feature.onclick, feature, ecModel, api, iconName));\n        iconPaths[iconName] = path;\n      });\n    }\n\n    listComponentHelper.layout(group, toolboxModel, api); // Render background after group is layout\n    // FIXME\n\n    group.add(listComponentHelper.makeBackground(group.getBoundingRect(), toolboxModel)); // Adjust icon title positions to avoid them out of screen\n\n    isVertical || group.eachChild(function (icon) {\n      var titleText = icon.__title; // const hoverStyle = icon.hoverStyle;\n      // TODO simplify code?\n\n      var emphasisState = icon.ensureState('emphasis');\n      var emphasisTextConfig = emphasisState.textConfig || (emphasisState.textConfig = {});\n      var textContent = icon.getTextContent();\n      var emphasisTextState = textContent && textContent.ensureState('emphasis'); // May be background element\n\n      if (emphasisTextState && !zrUtil.isFunction(emphasisTextState) && titleText) {\n        var emphasisTextStyle = emphasisTextState.style || (emphasisTextState.style = {});\n        var rect = textContain.getBoundingRect(titleText, ZRText.makeFont(emphasisTextStyle));\n        var offsetX = icon.x + group.x;\n        var offsetY = icon.y + group.y + itemSize;\n        var needPutOnTop = false;\n\n        if (offsetY + rect.height > api.getHeight()) {\n          emphasisTextConfig.position = 'top';\n          needPutOnTop = true;\n        }\n\n        var topOffset = needPutOnTop ? -5 - rect.height : itemSize + 10;\n\n        if (offsetX + rect.width / 2 > api.getWidth()) {\n          emphasisTextConfig.position = ['100%', topOffset];\n          emphasisTextStyle.align = 'right';\n        } else if (offsetX - rect.width / 2 < 0) {\n          emphasisTextConfig.position = [0, topOffset];\n          emphasisTextStyle.align = 'left';\n        }\n      }\n    });\n  };\n\n  ToolboxView.prototype.updateView = function (toolboxModel, ecModel, api, payload) {\n    zrUtil.each(this._features, function (feature) {\n      feature instanceof ToolboxFeature && feature.updateView && feature.updateView(feature.model, ecModel, api, payload);\n    });\n  }; // updateLayout(toolboxModel, ecModel, api, payload) {\n  //     zrUtil.each(this._features, function (feature) {\n  //         feature.updateLayout && feature.updateLayout(feature.model, ecModel, api, payload);\n  //     });\n  // },\n\n\n  ToolboxView.prototype.remove = function (ecModel, api) {\n    zrUtil.each(this._features, function (feature) {\n      feature instanceof ToolboxFeature && feature.remove && feature.remove(ecModel, api);\n    });\n    this.group.removeAll();\n  };\n\n  ToolboxView.prototype.dispose = function (ecModel, api) {\n    zrUtil.each(this._features, function (feature) {\n      feature instanceof ToolboxFeature && feature.dispose && feature.dispose(ecModel, api);\n    });\n  };\n\n  ToolboxView.type = 'toolbox';\n  return ToolboxView;\n}(ComponentView);\n\nfunction isUserFeatureName(featureName) {\n  return featureName.indexOf('my') === 0;\n}\n\nexport default ToolboxView;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { __extends } from \"tslib\";\n/* global Uint8Array, document */\n\nimport env from 'zrender/lib/core/env.js';\nimport { ToolboxFeature } from '../featureManager.js';\nimport { isFunction } from 'zrender/lib/core/util.js';\n/* global window, document */\n\nvar SaveAsImage =\n/** @class */\nfunction (_super) {\n  __extends(SaveAsImage, _super);\n\n  function SaveAsImage() {\n    return _super !== null && _super.apply(this, arguments) || this;\n  }\n\n  SaveAsImage.prototype.onclick = function (ecModel, api) {\n    var model = this.model;\n    var title = model.get('name') || ecModel.get('title.0.text') || 'echarts';\n    var isSvg = api.getZr().painter.getType() === 'svg';\n    var type = isSvg ? 'svg' : model.get('type', true) || 'png';\n    var url = api.getConnectedDataURL({\n      type: type,\n      backgroundColor: model.get('backgroundColor', true) || ecModel.get('backgroundColor') || '#fff',\n      connectedBackgroundColor: model.get('connectedBackgroundColor'),\n      excludeComponents: model.get('excludeComponents'),\n      pixelRatio: model.get('pixelRatio')\n    });\n    var browser = env.browser; // Chrome, Firefox, New Edge\n\n    if (isFunction(MouseEvent) && (browser.newEdge || !browser.ie && !browser.edge)) {\n      var $a = document.createElement('a');\n      $a.download = title + '.' + type;\n      $a.target = '_blank';\n      $a.href = url;\n      var evt = new MouseEvent('click', {\n        // some micro front-end framework， window maybe is a Proxy\n        view: document.defaultView,\n        bubbles: true,\n        cancelable: false\n      });\n      $a.dispatchEvent(evt);\n    } // IE or old Edge\n    else {\n        // @ts-ignore\n        if (window.navigator.msSaveOrOpenBlob || isSvg) {\n          var parts = url.split(','); // data:[<mime type>][;charset=<charset>][;base64],<encoded data>\n\n          var base64Encoded = parts[0].indexOf('base64') > -1;\n          var bstr = isSvg // should decode the svg data uri first\n          ? decodeURIComponent(parts[1]) : parts[1]; // only `atob` when the data uri is encoded with base64\n          // otherwise, like `svg` data uri exported by zrender,\n          // there will be an error, for it's not encoded with base64.\n          // (just a url-encoded string through `encodeURIComponent`)\n\n          base64Encoded && (bstr = window.atob(bstr));\n          var filename = title + '.' + type; // @ts-ignore\n\n          if (window.navigator.msSaveOrOpenBlob) {\n            var n = bstr.length;\n            var u8arr = new Uint8Array(n);\n\n            while (n--) {\n              u8arr[n] = bstr.charCodeAt(n);\n            }\n\n            var blob = new Blob([u8arr]); // @ts-ignore\n\n            window.navigator.msSaveOrOpenBlob(blob, filename);\n          } else {\n            var frame = document.createElement('iframe');\n            document.body.appendChild(frame);\n            var cw = frame.contentWindow;\n            var doc = cw.document;\n            doc.open('image/svg+xml', 'replace');\n            doc.write(bstr);\n            doc.close();\n            cw.focus();\n            doc.execCommand('SaveAs', true, filename);\n            document.body.removeChild(frame);\n          }\n        } else {\n          var lang = model.get('lang');\n          var html = '' + '<body style=\"margin:0;\">' + '<img src=\"' + url + '\" style=\"max-width:100%;\" title=\"' + (lang && lang[0] || '') + '\" />' + '</body>';\n          var tab = window.open();\n          tab.document.write(html);\n          tab.document.title = title;\n        }\n      }\n  };\n\n  SaveAsImage.getDefaultOption = function (ecModel) {\n    var defaultOption = {\n      show: true,\n      icon: 'M4.7,22.9L29.3,45.5L54.7,23.4M4.6,43.6L4.6,58L53.8,58L53.8,43.6M29.2,45.1L29.2,0',\n      title: ecModel.getLocaleModel().get(['toolbox', 'saveAsImage', 'title']),\n      type: 'png',\n      // Default use option.backgroundColor\n      // backgroundColor: '#fff',\n      connectedBackgroundColor: '#fff',\n      name: '',\n      excludeComponents: ['toolbox'],\n      // use current pixel ratio of device by default\n      // pixelRatio: 1,\n      lang: ecModel.getLocaleModel().get(['toolbox', 'saveAsImage', 'lang'])\n    };\n    return defaultOption;\n  };\n\n  return SaveAsImage;\n}(ToolboxFeature);\n\nexport default SaveAsImage;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { __extends } from \"tslib\";\nimport * as echarts from '../../../core/echarts.js';\nimport * as zrUtil from 'zrender/lib/core/util.js';\nimport { ToolboxFeature } from '../featureManager.js';\nimport { SINGLE_REFERRING } from '../../../util/model.js';\nvar INNER_STACK_KEYWORD = '__ec_magicType_stack__';\nvar ICON_TYPES = ['line', 'bar', 'stack']; // stack and tiled appears in pair for the title\n\nvar TITLE_TYPES = ['line', 'bar', 'stack', 'tiled'];\nvar radioTypes = [['line', 'bar'], ['stack']];\n\nvar MagicType =\n/** @class */\nfunction (_super) {\n  __extends(MagicType, _super);\n\n  function MagicType() {\n    return _super !== null && _super.apply(this, arguments) || this;\n  }\n\n  MagicType.prototype.getIcons = function () {\n    var model = this.model;\n    var availableIcons = model.get('icon');\n    var icons = {};\n    zrUtil.each(model.get('type'), function (type) {\n      if (availableIcons[type]) {\n        icons[type] = availableIcons[type];\n      }\n    });\n    return icons;\n  };\n\n  MagicType.getDefaultOption = function (ecModel) {\n    var defaultOption = {\n      show: true,\n      type: [],\n      // Icon group\n      icon: {\n        line: 'M4.1,28.9h7.1l9.3-22l7.4,38l9.7-19.7l3,12.8h14.9M4.1,58h51.4',\n        bar: 'M6.7,22.9h10V48h-10V22.9zM24.9,13h10v35h-10V13zM43.2,2h10v46h-10V2zM3.1,58h53.7',\n        // eslint-disable-next-line\n        stack: 'M8.2,38.4l-8.4,4.1l30.6,15.3L60,42.5l-8.1-4.1l-21.5,11L8.2,38.4z M51.9,30l-8.1,4.2l-13.4,6.9l-13.9-6.9L8.2,30l-8.4,4.2l8.4,4.2l22.2,11l21.5-11l8.1-4.2L51.9,30z M51.9,21.7l-8.1,4.2L35.7,30l-5.3,2.8L24.9,30l-8.4-4.1l-8.3-4.2l-8.4,4.2L8.2,30l8.3,4.2l13.9,6.9l13.4-6.9l8.1-4.2l8.1-4.1L51.9,21.7zM30.4,2.2L-0.2,17.5l8.4,4.1l8.3,4.2l8.4,4.2l5.5,2.7l5.3-2.7l8.1-4.2l8.1-4.2l8.1-4.1L30.4,2.2z' // jshint ignore:line\n\n      },\n      // `line`, `bar`, `stack`, `tiled`\n      title: ecModel.getLocaleModel().get(['toolbox', 'magicType', 'title']),\n      option: {},\n      seriesIndex: {}\n    };\n    return defaultOption;\n  };\n\n  MagicType.prototype.onclick = function (ecModel, api, type) {\n    var model = this.model;\n    var seriesIndex = model.get(['seriesIndex', type]); // Not supported magicType\n\n    if (!seriesOptGenreator[type]) {\n      return;\n    }\n\n    var newOption = {\n      series: []\n    };\n\n    var generateNewSeriesTypes = function (seriesModel) {\n      var seriesType = seriesModel.subType;\n      var seriesId = seriesModel.id;\n      var newSeriesOpt = seriesOptGenreator[type](seriesType, seriesId, seriesModel, model);\n\n      if (newSeriesOpt) {\n        // PENDING If merge original option?\n        zrUtil.defaults(newSeriesOpt, seriesModel.option);\n        newOption.series.push(newSeriesOpt);\n      } // Modify boundaryGap\n\n\n      var coordSys = seriesModel.coordinateSystem;\n\n      if (coordSys && coordSys.type === 'cartesian2d' && (type === 'line' || type === 'bar')) {\n        var categoryAxis = coordSys.getAxesByScale('ordinal')[0];\n\n        if (categoryAxis) {\n          var axisDim = categoryAxis.dim;\n          var axisType = axisDim + 'Axis';\n          var axisModel = seriesModel.getReferringComponents(axisType, SINGLE_REFERRING).models[0];\n          var axisIndex = axisModel.componentIndex;\n          newOption[axisType] = newOption[axisType] || [];\n\n          for (var i = 0; i <= axisIndex; i++) {\n            newOption[axisType][axisIndex] = newOption[axisType][axisIndex] || {};\n          }\n\n          newOption[axisType][axisIndex].boundaryGap = type === 'bar';\n        }\n      }\n    };\n\n    zrUtil.each(radioTypes, function (radio) {\n      if (zrUtil.indexOf(radio, type) >= 0) {\n        zrUtil.each(radio, function (item) {\n          model.setIconStatus(item, 'normal');\n        });\n      }\n    });\n    model.setIconStatus(type, 'emphasis');\n    ecModel.eachComponent({\n      mainType: 'series',\n      query: seriesIndex == null ? null : {\n        seriesIndex: seriesIndex\n      }\n    }, generateNewSeriesTypes);\n    var newTitle;\n    var currentType = type; // Change title of stack\n\n    if (type === 'stack') {\n      // use titles in model instead of ecModel\n      // as stack and tiled appears in pair, just flip them\n      // no need of checking stack state\n      newTitle = zrUtil.merge({\n        stack: model.option.title.tiled,\n        tiled: model.option.title.stack\n      }, model.option.title);\n\n      if (model.get(['iconStatus', type]) !== 'emphasis') {\n        currentType = 'tiled';\n      }\n    }\n\n    api.dispatchAction({\n      type: 'changeMagicType',\n      currentType: currentType,\n      newOption: newOption,\n      newTitle: newTitle,\n      featureName: 'magicType'\n    });\n  };\n\n  return MagicType;\n}(ToolboxFeature);\n\nvar seriesOptGenreator = {\n  'line': function (seriesType, seriesId, seriesModel, model) {\n    if (seriesType === 'bar') {\n      return zrUtil.merge({\n        id: seriesId,\n        type: 'line',\n        // Preserve data related option\n        data: seriesModel.get('data'),\n        stack: seriesModel.get('stack'),\n        markPoint: seriesModel.get('markPoint'),\n        markLine: seriesModel.get('markLine')\n      }, model.get(['option', 'line']) || {}, true);\n    }\n  },\n  'bar': function (seriesType, seriesId, seriesModel, model) {\n    if (seriesType === 'line') {\n      return zrUtil.merge({\n        id: seriesId,\n        type: 'bar',\n        // Preserve data related option\n        data: seriesModel.get('data'),\n        stack: seriesModel.get('stack'),\n        markPoint: seriesModel.get('markPoint'),\n        markLine: seriesModel.get('markLine')\n      }, model.get(['option', 'bar']) || {}, true);\n    }\n  },\n  'stack': function (seriesType, seriesId, seriesModel, model) {\n    var isStack = seriesModel.get('stack') === INNER_STACK_KEYWORD;\n\n    if (seriesType === 'line' || seriesType === 'bar') {\n      model.setIconStatus('stack', isStack ? 'normal' : 'emphasis');\n      return zrUtil.merge({\n        id: seriesId,\n        stack: isStack ? '' : INNER_STACK_KEYWORD\n      }, model.get(['option', 'stack']) || {}, true);\n    }\n  }\n}; // TODO: SELF REGISTERED.\n\necharts.registerAction({\n  type: 'changeMagicType',\n  event: 'magicTypeChanged',\n  update: 'prepareAndUpdate'\n}, function (payload, ecModel) {\n  ecModel.mergeOption(payload.newOption);\n});\nexport default MagicType;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { __extends } from \"tslib\";\n/* global document */\n\nimport * as echarts from '../../../core/echarts.js';\nimport * as zrUtil from 'zrender/lib/core/util.js';\nimport { ToolboxFeature } from '../featureManager.js';\nimport { addEventListener } from 'zrender/lib/core/event.js';\nimport { warn } from '../../../util/log.js';\n/* global document */\n\nvar BLOCK_SPLITER = new Array(60).join('-');\nvar ITEM_SPLITER = '\\t';\n/**\r\n * Group series into two types\r\n *  1. on category axis, like line, bar\r\n *  2. others, like scatter, pie\r\n */\n\nfunction groupSeries(ecModel) {\n  var seriesGroupByCategoryAxis = {};\n  var otherSeries = [];\n  var meta = [];\n  ecModel.eachRawSeries(function (seriesModel) {\n    var coordSys = seriesModel.coordinateSystem;\n\n    if (coordSys && (coordSys.type === 'cartesian2d' || coordSys.type === 'polar')) {\n      // TODO: TYPE Consider polar? Include polar may increase unecessary bundle size.\n      var baseAxis = coordSys.getBaseAxis();\n\n      if (baseAxis.type === 'category') {\n        var key = baseAxis.dim + '_' + baseAxis.index;\n\n        if (!seriesGroupByCategoryAxis[key]) {\n          seriesGroupByCategoryAxis[key] = {\n            categoryAxis: baseAxis,\n            valueAxis: coordSys.getOtherAxis(baseAxis),\n            series: []\n          };\n          meta.push({\n            axisDim: baseAxis.dim,\n            axisIndex: baseAxis.index\n          });\n        }\n\n        seriesGroupByCategoryAxis[key].series.push(seriesModel);\n      } else {\n        otherSeries.push(seriesModel);\n      }\n    } else {\n      otherSeries.push(seriesModel);\n    }\n  });\n  return {\n    seriesGroupByCategoryAxis: seriesGroupByCategoryAxis,\n    other: otherSeries,\n    meta: meta\n  };\n}\n/**\r\n * Assemble content of series on cateogory axis\r\n * @inner\r\n */\n\n\nfunction assembleSeriesWithCategoryAxis(groups) {\n  var tables = [];\n  zrUtil.each(groups, function (group, key) {\n    var categoryAxis = group.categoryAxis;\n    var valueAxis = group.valueAxis;\n    var valueAxisDim = valueAxis.dim;\n    var headers = [' '].concat(zrUtil.map(group.series, function (series) {\n      return series.name;\n    })); // @ts-ignore TODO Polar\n\n    var columns = [categoryAxis.model.getCategories()];\n    zrUtil.each(group.series, function (series) {\n      var rawData = series.getRawData();\n      columns.push(series.getRawData().mapArray(rawData.mapDimension(valueAxisDim), function (val) {\n        return val;\n      }));\n    }); // Assemble table content\n\n    var lines = [headers.join(ITEM_SPLITER)];\n\n    for (var i = 0; i < columns[0].length; i++) {\n      var items = [];\n\n      for (var j = 0; j < columns.length; j++) {\n        items.push(columns[j][i]);\n      }\n\n      lines.push(items.join(ITEM_SPLITER));\n    }\n\n    tables.push(lines.join('\\n'));\n  });\n  return tables.join('\\n\\n' + BLOCK_SPLITER + '\\n\\n');\n}\n/**\r\n * Assemble content of other series\r\n */\n\n\nfunction assembleOtherSeries(series) {\n  return zrUtil.map(series, function (series) {\n    var data = series.getRawData();\n    var lines = [series.name];\n    var vals = [];\n    data.each(data.dimensions, function () {\n      var argLen = arguments.length;\n      var dataIndex = arguments[argLen - 1];\n      var name = data.getName(dataIndex);\n\n      for (var i = 0; i < argLen - 1; i++) {\n        vals[i] = arguments[i];\n      }\n\n      lines.push((name ? name + ITEM_SPLITER : '') + vals.join(ITEM_SPLITER));\n    });\n    return lines.join('\\n');\n  }).join('\\n\\n' + BLOCK_SPLITER + '\\n\\n');\n}\n\nfunction getContentFromModel(ecModel) {\n  var result = groupSeries(ecModel);\n  return {\n    value: zrUtil.filter([assembleSeriesWithCategoryAxis(result.seriesGroupByCategoryAxis), assembleOtherSeries(result.other)], function (str) {\n      return !!str.replace(/[\\n\\t\\s]/g, '');\n    }).join('\\n\\n' + BLOCK_SPLITER + '\\n\\n'),\n    meta: result.meta\n  };\n}\n\nfunction trim(str) {\n  return str.replace(/^\\s\\s*/, '').replace(/\\s\\s*$/, '');\n}\n/**\r\n * If a block is tsv format\r\n */\n\n\nfunction isTSVFormat(block) {\n  // Simple method to find out if a block is tsv format\n  var firstLine = block.slice(0, block.indexOf('\\n'));\n\n  if (firstLine.indexOf(ITEM_SPLITER) >= 0) {\n    return true;\n  }\n}\n\nvar itemSplitRegex = new RegExp('[' + ITEM_SPLITER + ']+', 'g');\n/**\r\n * @param {string} tsv\r\n * @return {Object}\r\n */\n\nfunction parseTSVContents(tsv) {\n  var tsvLines = tsv.split(/\\n+/g);\n  var headers = trim(tsvLines.shift()).split(itemSplitRegex);\n  var categories = [];\n  var series = zrUtil.map(headers, function (header) {\n    return {\n      name: header,\n      data: []\n    };\n  });\n\n  for (var i = 0; i < tsvLines.length; i++) {\n    var items = trim(tsvLines[i]).split(itemSplitRegex);\n    categories.push(items.shift());\n\n    for (var j = 0; j < items.length; j++) {\n      series[j] && (series[j].data[i] = items[j]);\n    }\n  }\n\n  return {\n    series: series,\n    categories: categories\n  };\n}\n\nfunction parseListContents(str) {\n  var lines = str.split(/\\n+/g);\n  var seriesName = trim(lines.shift());\n  var data = [];\n\n  for (var i = 0; i < lines.length; i++) {\n    // if line is empty, ignore it.\n    // there is a case that a user forgot to delete `\\n`.\n    var line = trim(lines[i]);\n\n    if (!line) {\n      continue;\n    }\n\n    var items = line.split(itemSplitRegex);\n    var name_1 = '';\n    var value = void 0;\n    var hasName = false;\n\n    if (isNaN(items[0])) {\n      // First item is name\n      hasName = true;\n      name_1 = items[0];\n      items = items.slice(1);\n      data[i] = {\n        name: name_1,\n        value: []\n      };\n      value = data[i].value;\n    } else {\n      value = data[i] = [];\n    }\n\n    for (var j = 0; j < items.length; j++) {\n      value.push(+items[j]);\n    }\n\n    if (value.length === 1) {\n      hasName ? data[i].value = value[0] : data[i] = value[0];\n    }\n  }\n\n  return {\n    name: seriesName,\n    data: data\n  };\n}\n\nfunction parseContents(str, blockMetaList) {\n  var blocks = str.split(new RegExp('\\n*' + BLOCK_SPLITER + '\\n*', 'g'));\n  var newOption = {\n    series: []\n  };\n  zrUtil.each(blocks, function (block, idx) {\n    if (isTSVFormat(block)) {\n      var result = parseTSVContents(block);\n      var blockMeta = blockMetaList[idx];\n      var axisKey = blockMeta.axisDim + 'Axis';\n\n      if (blockMeta) {\n        newOption[axisKey] = newOption[axisKey] || [];\n        newOption[axisKey][blockMeta.axisIndex] = {\n          data: result.categories\n        };\n        newOption.series = newOption.series.concat(result.series);\n      }\n    } else {\n      var result = parseListContents(block);\n      newOption.series.push(result);\n    }\n  });\n  return newOption;\n}\n\nvar DataView =\n/** @class */\nfunction (_super) {\n  __extends(DataView, _super);\n\n  function DataView() {\n    return _super !== null && _super.apply(this, arguments) || this;\n  }\n\n  DataView.prototype.onclick = function (ecModel, api) {\n    // FIXME: better way?\n    setTimeout(function () {\n      api.dispatchAction({\n        type: 'hideTip'\n      });\n    });\n    var container = api.getDom();\n    var model = this.model;\n\n    if (this._dom) {\n      container.removeChild(this._dom);\n    }\n\n    var root = document.createElement('div'); // use padding to avoid 5px whitespace\n\n    root.style.cssText = 'position:absolute;top:0;bottom:0;left:0;right:0;padding:5px';\n    root.style.backgroundColor = model.get('backgroundColor') || '#fff'; // Create elements\n\n    var header = document.createElement('h4');\n    var lang = model.get('lang') || [];\n    header.innerHTML = lang[0] || model.get('title');\n    header.style.cssText = 'margin:10px 20px';\n    header.style.color = model.get('textColor');\n    var viewMain = document.createElement('div');\n    var textarea = document.createElement('textarea');\n    viewMain.style.cssText = 'overflow:auto';\n    var optionToContent = model.get('optionToContent');\n    var contentToOption = model.get('contentToOption');\n    var result = getContentFromModel(ecModel);\n\n    if (zrUtil.isFunction(optionToContent)) {\n      var htmlOrDom = optionToContent(api.getOption());\n\n      if (zrUtil.isString(htmlOrDom)) {\n        viewMain.innerHTML = htmlOrDom;\n      } else if (zrUtil.isDom(htmlOrDom)) {\n        viewMain.appendChild(htmlOrDom);\n      }\n    } else {\n      // Use default textarea\n      textarea.readOnly = model.get('readOnly');\n      var style = textarea.style; // eslint-disable-next-line max-len\n\n      style.cssText = 'display:block;width:100%;height:100%;font-family:monospace;font-size:14px;line-height:1.6rem;resize:none;box-sizing:border-box;outline:none';\n      style.color = model.get('textColor');\n      style.borderColor = model.get('textareaBorderColor');\n      style.backgroundColor = model.get('textareaColor');\n      textarea.value = result.value;\n      viewMain.appendChild(textarea);\n    }\n\n    var blockMetaList = result.meta;\n    var buttonContainer = document.createElement('div');\n    buttonContainer.style.cssText = 'position:absolute;bottom:5px;left:0;right:0'; // eslint-disable-next-line max-len\n\n    var buttonStyle = 'float:right;margin-right:20px;border:none;cursor:pointer;padding:2px 5px;font-size:12px;border-radius:3px';\n    var closeButton = document.createElement('div');\n    var refreshButton = document.createElement('div');\n    buttonStyle += ';background-color:' + model.get('buttonColor');\n    buttonStyle += ';color:' + model.get('buttonTextColor');\n    var self = this;\n\n    function close() {\n      container.removeChild(root);\n      self._dom = null;\n    }\n\n    addEventListener(closeButton, 'click', close);\n    addEventListener(refreshButton, 'click', function () {\n      if (contentToOption == null && optionToContent != null || contentToOption != null && optionToContent == null) {\n        if (process.env.NODE_ENV !== 'production') {\n          // eslint-disable-next-line\n          warn('It seems you have just provided one of `contentToOption` and `optionToContent` functions but missed the other one. Data change is ignored.');\n        }\n\n        close();\n        return;\n      }\n\n      var newOption;\n\n      try {\n        if (zrUtil.isFunction(contentToOption)) {\n          newOption = contentToOption(viewMain, api.getOption());\n        } else {\n          newOption = parseContents(textarea.value, blockMetaList);\n        }\n      } catch (e) {\n        close();\n        throw new Error('Data view format error ' + e);\n      }\n\n      if (newOption) {\n        api.dispatchAction({\n          type: 'changeDataView',\n          newOption: newOption\n        });\n      }\n\n      close();\n    });\n    closeButton.innerHTML = lang[1];\n    refreshButton.innerHTML = lang[2];\n    refreshButton.style.cssText = closeButton.style.cssText = buttonStyle;\n    !model.get('readOnly') && buttonContainer.appendChild(refreshButton);\n    buttonContainer.appendChild(closeButton);\n    root.appendChild(header);\n    root.appendChild(viewMain);\n    root.appendChild(buttonContainer);\n    viewMain.style.height = container.clientHeight - 80 + 'px';\n    container.appendChild(root);\n    this._dom = root;\n  };\n\n  DataView.prototype.remove = function (ecModel, api) {\n    this._dom && api.getDom().removeChild(this._dom);\n  };\n\n  DataView.prototype.dispose = function (ecModel, api) {\n    this.remove(ecModel, api);\n  };\n\n  DataView.getDefaultOption = function (ecModel) {\n    var defaultOption = {\n      show: true,\n      readOnly: false,\n      optionToContent: null,\n      contentToOption: null,\n      // eslint-disable-next-line\n      icon: 'M17.5,17.3H33 M17.5,17.3H33 M45.4,29.5h-28 M11.5,2v56H51V14.8L38.4,2H11.5z M38.4,2.2v12.7H51 M45.4,41.7h-28',\n      title: ecModel.getLocaleModel().get(['toolbox', 'dataView', 'title']),\n      lang: ecModel.getLocaleModel().get(['toolbox', 'dataView', 'lang']),\n      backgroundColor: '#fff',\n      textColor: '#000',\n      textareaColor: '#fff',\n      textareaBorderColor: '#333',\n      buttonColor: '#c23531',\n      buttonTextColor: '#fff'\n    };\n    return defaultOption;\n  };\n\n  return DataView;\n}(ToolboxFeature);\n/**\r\n * @inner\r\n */\n\n\nfunction tryMergeDataOption(newData, originalData) {\n  return zrUtil.map(newData, function (newVal, idx) {\n    var original = originalData && originalData[idx];\n\n    if (zrUtil.isObject(original) && !zrUtil.isArray(original)) {\n      var newValIsObject = zrUtil.isObject(newVal) && !zrUtil.isArray(newVal);\n\n      if (!newValIsObject) {\n        newVal = {\n          value: newVal\n        };\n      } // original data has name but new data has no name\n\n\n      var shouldDeleteName = original.name != null && newVal.name == null; // Original data has option\n\n      newVal = zrUtil.defaults(newVal, original);\n      shouldDeleteName && delete newVal.name;\n      return newVal;\n    } else {\n      return newVal;\n    }\n  });\n} // TODO: SELF REGISTERED.\n\n\necharts.registerAction({\n  type: 'changeDataView',\n  event: 'dataViewChanged',\n  update: 'prepareAndUpdate'\n}, function (payload, ecModel) {\n  var newSeriesOptList = [];\n  zrUtil.each(payload.newOption.series, function (seriesOpt) {\n    var seriesModel = ecModel.getSeriesByName(seriesOpt.name)[0];\n\n    if (!seriesModel) {\n      // New created series\n      // Geuss the series type\n      newSeriesOptList.push(zrUtil.extend({\n        // Default is scatter\n        type: 'scatter'\n      }, seriesOpt));\n    } else {\n      var originalData = seriesModel.get('data');\n      newSeriesOptList.push({\n        name: seriesOpt.name,\n        data: tryMergeDataOption(seriesOpt.data, originalData)\n      });\n    }\n  });\n  ecModel.mergeOption(zrUtil.defaults({\n    series: newSeriesOptList\n  }, payload.newOption));\n});\nexport default DataView;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport * as zrUtil from 'zrender/lib/core/util.js';\nimport { makeInner } from '../../util/model.js';\nvar each = zrUtil.each;\nvar inner = makeInner();\n/**\r\n * @param ecModel\r\n * @param newSnapshot key is dataZoomId\r\n */\n\nexport function push(ecModel, newSnapshot) {\n  var storedSnapshots = getStoreSnapshots(ecModel); // If previous dataZoom can not be found,\n  // complete an range with current range.\n\n  each(newSnapshot, function (batchItem, dataZoomId) {\n    var i = storedSnapshots.length - 1;\n\n    for (; i >= 0; i--) {\n      var snapshot = storedSnapshots[i];\n\n      if (snapshot[dataZoomId]) {\n        break;\n      }\n    }\n\n    if (i < 0) {\n      // No origin range set, create one by current range.\n      var dataZoomModel = ecModel.queryComponents({\n        mainType: 'dataZoom',\n        subType: 'select',\n        id: dataZoomId\n      })[0];\n\n      if (dataZoomModel) {\n        var percentRange = dataZoomModel.getPercentRange();\n        storedSnapshots[0][dataZoomId] = {\n          dataZoomId: dataZoomId,\n          start: percentRange[0],\n          end: percentRange[1]\n        };\n      }\n    }\n  });\n  storedSnapshots.push(newSnapshot);\n}\nexport function pop(ecModel) {\n  var storedSnapshots = getStoreSnapshots(ecModel);\n  var head = storedSnapshots[storedSnapshots.length - 1];\n  storedSnapshots.length > 1 && storedSnapshots.pop(); // Find top for all dataZoom.\n\n  var snapshot = {};\n  each(head, function (batchItem, dataZoomId) {\n    for (var i = storedSnapshots.length - 1; i >= 0; i--) {\n      batchItem = storedSnapshots[i][dataZoomId];\n\n      if (batchItem) {\n        snapshot[dataZoomId] = batchItem;\n        break;\n      }\n    }\n  });\n  return snapshot;\n}\nexport function clear(ecModel) {\n  inner(ecModel).snapshots = null;\n}\nexport function count(ecModel) {\n  return getStoreSnapshots(ecModel).length;\n}\n/**\r\n * History length of each dataZoom may be different.\r\n * this._history[0] is used to store origin range.\r\n */\n\nfunction getStoreSnapshots(ecModel) {\n  var store = inner(ecModel);\n\n  if (!store.snapshots) {\n    store.snapshots = [{}];\n  }\n\n  return store.snapshots;\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { __extends } from \"tslib\";\nimport * as echarts from '../../../core/echarts.js';\nimport * as history from '../../dataZoom/history.js';\nimport { ToolboxFeature } from '../featureManager.js';\n\nvar RestoreOption =\n/** @class */\nfunction (_super) {\n  __extends(RestoreOption, _super);\n\n  function RestoreOption() {\n    return _super !== null && _super.apply(this, arguments) || this;\n  }\n\n  RestoreOption.prototype.onclick = function (ecModel, api) {\n    history.clear(ecModel);\n    api.dispatchAction({\n      type: 'restore',\n      from: this.uid\n    });\n  };\n\n  RestoreOption.getDefaultOption = function (ecModel) {\n    var defaultOption = {\n      show: true,\n      // eslint-disable-next-line\n      icon: 'M3.8,33.4 M47,18.9h9.8V8.7 M56.3,20.1 C52.1,9,40.5,0.6,26.8,2.1C12.6,3.7,1.6,16.2,2.1,30.6 M13,41.1H3.1v10.2 M3.7,39.9c4.2,11.1,15.8,19.5,29.5,18 c14.2-1.6,25.2-14.1,24.7-28.5',\n      title: ecModel.getLocaleModel().get(['toolbox', 'restore', 'title'])\n    };\n    return defaultOption;\n  };\n\n  return RestoreOption;\n}(ToolboxFeature); // TODO: SELF REGISTERED.\n\n\necharts.registerAction({\n  type: 'restore',\n  event: 'restore',\n  update: 'prepareAndUpdate'\n}, function (payload, ecModel) {\n  ecModel.resetOption('recreate');\n});\nexport default RestoreOption;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { each, indexOf, curry, assert, map, createHashMap } from 'zrender/lib/core/util.js';\nimport * as graphic from '../../util/graphic.js';\nimport * as brushHelper from './brushHelper.js';\nimport { parseFinder as modelUtilParseFinder } from '../../util/model.js'; // FIXME\n// how to genarialize to more coordinate systems.\n\nvar INCLUDE_FINDER_MAIN_TYPES = ['grid', 'xAxis', 'yAxis', 'geo', 'graph', 'polar', 'radiusAxis', 'angleAxis', 'bmap'];\n\nvar BrushTargetManager =\n/** @class */\nfunction () {\n  /**\r\n   * @param finder contains Index/Id/Name of xAxis/yAxis/geo/grid\r\n   *        Each can be {number|Array.<number>}. like: {xAxisIndex: [3, 4]}\r\n   * @param opt.include include coordinate system types.\r\n   */\n  function BrushTargetManager(finder, ecModel, opt) {\n    var _this = this;\n\n    this._targetInfoList = [];\n    var foundCpts = parseFinder(ecModel, finder);\n    each(targetInfoBuilders, function (builder, type) {\n      if (!opt || !opt.include || indexOf(opt.include, type) >= 0) {\n        builder(foundCpts, _this._targetInfoList);\n      }\n    });\n  }\n\n  BrushTargetManager.prototype.setOutputRanges = function (areas, ecModel) {\n    this.matchOutputRanges(areas, ecModel, function (area, coordRange, coordSys) {\n      (area.coordRanges || (area.coordRanges = [])).push(coordRange); // area.coordRange is the first of area.coordRanges\n\n      if (!area.coordRange) {\n        area.coordRange = coordRange; // In 'category' axis, coord to pixel is not reversible, so we can not\n        // rebuild range by coordRange accrately, which may bring trouble when\n        // brushing only one item. So we use __rangeOffset to rebuilding range\n        // by coordRange. And this it only used in brush component so it is no\n        // need to be adapted to coordRanges.\n\n        var result = coordConvert[area.brushType](0, coordSys, coordRange);\n        area.__rangeOffset = {\n          offset: diffProcessor[area.brushType](result.values, area.range, [1, 1]),\n          xyMinMax: result.xyMinMax\n        };\n      }\n    });\n    return areas;\n  };\n\n  BrushTargetManager.prototype.matchOutputRanges = function (areas, ecModel, cb) {\n    each(areas, function (area) {\n      var targetInfo = this.findTargetInfo(area, ecModel);\n\n      if (targetInfo && targetInfo !== true) {\n        each(targetInfo.coordSyses, function (coordSys) {\n          var result = coordConvert[area.brushType](1, coordSys, area.range, true);\n          cb(area, result.values, coordSys, ecModel);\n        });\n      }\n    }, this);\n  };\n  /**\r\n   * the `areas` is `BrushModel.areas`.\r\n   * Called in layout stage.\r\n   * convert `area.coordRange` to global range and set panelId to `area.range`.\r\n   */\n\n\n  BrushTargetManager.prototype.setInputRanges = function (areas, ecModel) {\n    each(areas, function (area) {\n      var targetInfo = this.findTargetInfo(area, ecModel);\n\n      if (process.env.NODE_ENV !== 'production') {\n        assert(!targetInfo || targetInfo === true || area.coordRange, 'coordRange must be specified when coord index specified.');\n        assert(!targetInfo || targetInfo !== true || area.range, 'range must be specified in global brush.');\n      }\n\n      area.range = area.range || []; // convert coordRange to global range and set panelId.\n\n      if (targetInfo && targetInfo !== true) {\n        area.panelId = targetInfo.panelId; // (1) area.range should always be calculate from coordRange but does\n        // not keep its original value, for the sake of the dataZoom scenario,\n        // where area.coordRange remains unchanged but area.range may be changed.\n        // (2) Only support converting one coordRange to pixel range in brush\n        // component. So do not consider `coordRanges`.\n        // (3) About __rangeOffset, see comment above.\n\n        var result = coordConvert[area.brushType](0, targetInfo.coordSys, area.coordRange);\n        var rangeOffset = area.__rangeOffset;\n        area.range = rangeOffset ? diffProcessor[area.brushType](result.values, rangeOffset.offset, getScales(result.xyMinMax, rangeOffset.xyMinMax)) : result.values;\n      }\n    }, this);\n  };\n\n  BrushTargetManager.prototype.makePanelOpts = function (api, getDefaultBrushType) {\n    return map(this._targetInfoList, function (targetInfo) {\n      var rect = targetInfo.getPanelRect();\n      return {\n        panelId: targetInfo.panelId,\n        defaultBrushType: getDefaultBrushType ? getDefaultBrushType(targetInfo) : null,\n        clipPath: brushHelper.makeRectPanelClipPath(rect),\n        isTargetByCursor: brushHelper.makeRectIsTargetByCursor(rect, api, targetInfo.coordSysModel),\n        getLinearBrushOtherExtent: brushHelper.makeLinearBrushOtherExtent(rect)\n      };\n    });\n  };\n\n  BrushTargetManager.prototype.controlSeries = function (area, seriesModel, ecModel) {\n    // Check whether area is bound in coord, and series do not belong to that coord.\n    // If do not do this check, some brush (like lineX) will controll all axes.\n    var targetInfo = this.findTargetInfo(area, ecModel);\n    return targetInfo === true || targetInfo && indexOf(targetInfo.coordSyses, seriesModel.coordinateSystem) >= 0;\n  };\n  /**\r\n   * If return Object, a coord found.\r\n   * If return true, global found.\r\n   * Otherwise nothing found.\r\n   */\n\n\n  BrushTargetManager.prototype.findTargetInfo = function (area, ecModel) {\n    var targetInfoList = this._targetInfoList;\n    var foundCpts = parseFinder(ecModel, area);\n\n    for (var i = 0; i < targetInfoList.length; i++) {\n      var targetInfo = targetInfoList[i];\n      var areaPanelId = area.panelId;\n\n      if (areaPanelId) {\n        if (targetInfo.panelId === areaPanelId) {\n          return targetInfo;\n        }\n      } else {\n        for (var j = 0; j < targetInfoMatchers.length; j++) {\n          if (targetInfoMatchers[j](foundCpts, targetInfo)) {\n            return targetInfo;\n          }\n        }\n      }\n    }\n\n    return true;\n  };\n\n  return BrushTargetManager;\n}();\n\nfunction formatMinMax(minMax) {\n  minMax[0] > minMax[1] && minMax.reverse();\n  return minMax;\n}\n\nfunction parseFinder(ecModel, finder) {\n  return modelUtilParseFinder(ecModel, finder, {\n    includeMainTypes: INCLUDE_FINDER_MAIN_TYPES\n  });\n}\n\nvar targetInfoBuilders = {\n  grid: function (foundCpts, targetInfoList) {\n    var xAxisModels = foundCpts.xAxisModels;\n    var yAxisModels = foundCpts.yAxisModels;\n    var gridModels = foundCpts.gridModels; // Remove duplicated.\n\n    var gridModelMap = createHashMap();\n    var xAxesHas = {};\n    var yAxesHas = {};\n\n    if (!xAxisModels && !yAxisModels && !gridModels) {\n      return;\n    }\n\n    each(xAxisModels, function (axisModel) {\n      var gridModel = axisModel.axis.grid.model;\n      gridModelMap.set(gridModel.id, gridModel);\n      xAxesHas[gridModel.id] = true;\n    });\n    each(yAxisModels, function (axisModel) {\n      var gridModel = axisModel.axis.grid.model;\n      gridModelMap.set(gridModel.id, gridModel);\n      yAxesHas[gridModel.id] = true;\n    });\n    each(gridModels, function (gridModel) {\n      gridModelMap.set(gridModel.id, gridModel);\n      xAxesHas[gridModel.id] = true;\n      yAxesHas[gridModel.id] = true;\n    });\n    gridModelMap.each(function (gridModel) {\n      var grid = gridModel.coordinateSystem;\n      var cartesians = [];\n      each(grid.getCartesians(), function (cartesian, index) {\n        if (indexOf(xAxisModels, cartesian.getAxis('x').model) >= 0 || indexOf(yAxisModels, cartesian.getAxis('y').model) >= 0) {\n          cartesians.push(cartesian);\n        }\n      });\n      targetInfoList.push({\n        panelId: 'grid--' + gridModel.id,\n        gridModel: gridModel,\n        coordSysModel: gridModel,\n        // Use the first one as the representitive coordSys.\n        coordSys: cartesians[0],\n        coordSyses: cartesians,\n        getPanelRect: panelRectBuilders.grid,\n        xAxisDeclared: xAxesHas[gridModel.id],\n        yAxisDeclared: yAxesHas[gridModel.id]\n      });\n    });\n  },\n  geo: function (foundCpts, targetInfoList) {\n    each(foundCpts.geoModels, function (geoModel) {\n      var coordSys = geoModel.coordinateSystem;\n      targetInfoList.push({\n        panelId: 'geo--' + geoModel.id,\n        geoModel: geoModel,\n        coordSysModel: geoModel,\n        coordSys: coordSys,\n        coordSyses: [coordSys],\n        getPanelRect: panelRectBuilders.geo\n      });\n    });\n  }\n};\nvar targetInfoMatchers = [// grid\nfunction (foundCpts, targetInfo) {\n  var xAxisModel = foundCpts.xAxisModel;\n  var yAxisModel = foundCpts.yAxisModel;\n  var gridModel = foundCpts.gridModel;\n  !gridModel && xAxisModel && (gridModel = xAxisModel.axis.grid.model);\n  !gridModel && yAxisModel && (gridModel = yAxisModel.axis.grid.model);\n  return gridModel && gridModel === targetInfo.gridModel;\n}, // geo\nfunction (foundCpts, targetInfo) {\n  var geoModel = foundCpts.geoModel;\n  return geoModel && geoModel === targetInfo.geoModel;\n}];\nvar panelRectBuilders = {\n  grid: function () {\n    // grid is not Transformable.\n    return this.coordSys.master.getRect().clone();\n  },\n  geo: function () {\n    var coordSys = this.coordSys;\n    var rect = coordSys.getBoundingRect().clone(); // geo roam and zoom transform\n\n    rect.applyTransform(graphic.getTransform(coordSys));\n    return rect;\n  }\n};\nvar coordConvert = {\n  lineX: curry(axisConvert, 0),\n  lineY: curry(axisConvert, 1),\n  rect: function (to, coordSys, rangeOrCoordRange, clamp) {\n    var xminymin = to ? coordSys.pointToData([rangeOrCoordRange[0][0], rangeOrCoordRange[1][0]], clamp) : coordSys.dataToPoint([rangeOrCoordRange[0][0], rangeOrCoordRange[1][0]], clamp);\n    var xmaxymax = to ? coordSys.pointToData([rangeOrCoordRange[0][1], rangeOrCoordRange[1][1]], clamp) : coordSys.dataToPoint([rangeOrCoordRange[0][1], rangeOrCoordRange[1][1]], clamp);\n    var values = [formatMinMax([xminymin[0], xmaxymax[0]]), formatMinMax([xminymin[1], xmaxymax[1]])];\n    return {\n      values: values,\n      xyMinMax: values\n    };\n  },\n  polygon: function (to, coordSys, rangeOrCoordRange, clamp) {\n    var xyMinMax = [[Infinity, -Infinity], [Infinity, -Infinity]];\n    var values = map(rangeOrCoordRange, function (item) {\n      var p = to ? coordSys.pointToData(item, clamp) : coordSys.dataToPoint(item, clamp);\n      xyMinMax[0][0] = Math.min(xyMinMax[0][0], p[0]);\n      xyMinMax[1][0] = Math.min(xyMinMax[1][0], p[1]);\n      xyMinMax[0][1] = Math.max(xyMinMax[0][1], p[0]);\n      xyMinMax[1][1] = Math.max(xyMinMax[1][1], p[1]);\n      return p;\n    });\n    return {\n      values: values,\n      xyMinMax: xyMinMax\n    };\n  }\n};\n\nfunction axisConvert(axisNameIndex, to, coordSys, rangeOrCoordRange) {\n  if (process.env.NODE_ENV !== 'production') {\n    assert(coordSys.type === 'cartesian2d', 'lineX/lineY brush is available only in cartesian2d.');\n  }\n\n  var axis = coordSys.getAxis(['x', 'y'][axisNameIndex]);\n  var values = formatMinMax(map([0, 1], function (i) {\n    return to ? axis.coordToData(axis.toLocalCoord(rangeOrCoordRange[i]), true) : axis.toGlobalCoord(axis.dataToCoord(rangeOrCoordRange[i]));\n  }));\n  var xyMinMax = [];\n  xyMinMax[axisNameIndex] = values;\n  xyMinMax[1 - axisNameIndex] = [NaN, NaN];\n  return {\n    values: values,\n    xyMinMax: xyMinMax\n  };\n}\n\nvar diffProcessor = {\n  lineX: curry(axisDiffProcessor, 0),\n  lineY: curry(axisDiffProcessor, 1),\n  rect: function (values, refer, scales) {\n    return [[values[0][0] - scales[0] * refer[0][0], values[0][1] - scales[0] * refer[0][1]], [values[1][0] - scales[1] * refer[1][0], values[1][1] - scales[1] * refer[1][1]]];\n  },\n  polygon: function (values, refer, scales) {\n    return map(values, function (item, idx) {\n      return [item[0] - scales[0] * refer[idx][0], item[1] - scales[1] * refer[idx][1]];\n    });\n  }\n};\n\nfunction axisDiffProcessor(axisNameIndex, values, refer, scales) {\n  return [values[0] - scales[axisNameIndex] * refer[0], values[1] - scales[axisNameIndex] * refer[1]];\n} // We have to process scale caused by dataZoom manually,\n// although it might be not accurate.\n// Return [0~1, 0~1]\n\n\nfunction getScales(xyMinMaxCurr, xyMinMaxOrigin) {\n  var sizeCurr = getSize(xyMinMaxCurr);\n  var sizeOrigin = getSize(xyMinMaxOrigin);\n  var scales = [sizeCurr[0] / sizeOrigin[0], sizeCurr[1] / sizeOrigin[1]];\n  isNaN(scales[0]) && (scales[0] = 1);\n  isNaN(scales[1]) && (scales[1] = 1);\n  return scales;\n}\n\nfunction getSize(xyMinMax) {\n  return xyMinMax ? [xyMinMax[0][1] - xyMinMax[0][0], xyMinMax[1][1] - xyMinMax[1][0]] : [NaN, NaN];\n}\n\nexport default BrushTargetManager;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { __extends } from \"tslib\"; // TODO depends on DataZoom and Brush\n\nimport * as zrUtil from 'zrender/lib/core/util.js';\nimport BrushController from '../../helper/BrushController.js';\nimport BrushTargetManager from '../../helper/BrushTargetManager.js';\nimport * as history from '../../dataZoom/history.js';\nimport sliderMove from '../../helper/sliderMove.js';\nimport { ToolboxFeature } from '../featureManager.js';\nimport { makeInternalComponentId, parseFinder } from '../../../util/model.js';\nimport { registerInternalOptionCreator } from '../../../model/internalComponentCreator.js';\nvar each = zrUtil.each;\nvar DATA_ZOOM_ID_BASE = makeInternalComponentId('toolbox-dataZoom_');\nvar ICON_TYPES = ['zoom', 'back'];\n\nvar DataZoomFeature =\n/** @class */\nfunction (_super) {\n  __extends(DataZoomFeature, _super);\n\n  function DataZoomFeature() {\n    return _super !== null && _super.apply(this, arguments) || this;\n  }\n\n  DataZoomFeature.prototype.render = function (featureModel, ecModel, api, payload) {\n    if (!this._brushController) {\n      this._brushController = new BrushController(api.getZr());\n\n      this._brushController.on('brush', zrUtil.bind(this._onBrush, this)).mount();\n    }\n\n    updateZoomBtnStatus(featureModel, ecModel, this, payload, api);\n    updateBackBtnStatus(featureModel, ecModel);\n  };\n\n  DataZoomFeature.prototype.onclick = function (ecModel, api, type) {\n    handlers[type].call(this);\n  };\n\n  DataZoomFeature.prototype.remove = function (ecModel, api) {\n    this._brushController && this._brushController.unmount();\n  };\n\n  DataZoomFeature.prototype.dispose = function (ecModel, api) {\n    this._brushController && this._brushController.dispose();\n  };\n\n  DataZoomFeature.prototype._onBrush = function (eventParam) {\n    var areas = eventParam.areas;\n\n    if (!eventParam.isEnd || !areas.length) {\n      return;\n    }\n\n    var snapshot = {};\n    var ecModel = this.ecModel;\n\n    this._brushController.updateCovers([]); // remove cover\n\n\n    var brushTargetManager = new BrushTargetManager(makeAxisFinder(this.model), ecModel, {\n      include: ['grid']\n    });\n    brushTargetManager.matchOutputRanges(areas, ecModel, function (area, coordRange, coordSys) {\n      if (coordSys.type !== 'cartesian2d') {\n        return;\n      }\n\n      var brushType = area.brushType;\n\n      if (brushType === 'rect') {\n        setBatch('x', coordSys, coordRange[0]);\n        setBatch('y', coordSys, coordRange[1]);\n      } else {\n        setBatch({\n          lineX: 'x',\n          lineY: 'y'\n        }[brushType], coordSys, coordRange);\n      }\n    });\n    history.push(ecModel, snapshot);\n\n    this._dispatchZoomAction(snapshot);\n\n    function setBatch(dimName, coordSys, minMax) {\n      var axis = coordSys.getAxis(dimName);\n      var axisModel = axis.model;\n      var dataZoomModel = findDataZoom(dimName, axisModel, ecModel); // Restrict range.\n\n      var minMaxSpan = dataZoomModel.findRepresentativeAxisProxy(axisModel).getMinMaxSpan();\n\n      if (minMaxSpan.minValueSpan != null || minMaxSpan.maxValueSpan != null) {\n        minMax = sliderMove(0, minMax.slice(), axis.scale.getExtent(), 0, minMaxSpan.minValueSpan, minMaxSpan.maxValueSpan);\n      }\n\n      dataZoomModel && (snapshot[dataZoomModel.id] = {\n        dataZoomId: dataZoomModel.id,\n        startValue: minMax[0],\n        endValue: minMax[1]\n      });\n    }\n\n    function findDataZoom(dimName, axisModel, ecModel) {\n      var found;\n      ecModel.eachComponent({\n        mainType: 'dataZoom',\n        subType: 'select'\n      }, function (dzModel) {\n        var has = dzModel.getAxisModel(dimName, axisModel.componentIndex);\n        has && (found = dzModel);\n      });\n      return found;\n    }\n  };\n\n  ;\n\n  DataZoomFeature.prototype._dispatchZoomAction = function (snapshot) {\n    var batch = []; // Convert from hash map to array.\n\n    each(snapshot, function (batchItem, dataZoomId) {\n      batch.push(zrUtil.clone(batchItem));\n    });\n    batch.length && this.api.dispatchAction({\n      type: 'dataZoom',\n      from: this.uid,\n      batch: batch\n    });\n  };\n\n  DataZoomFeature.getDefaultOption = function (ecModel) {\n    var defaultOption = {\n      show: true,\n      filterMode: 'filter',\n      // Icon group\n      icon: {\n        zoom: 'M0,13.5h26.9 M13.5,26.9V0 M32.1,13.5H58V58H13.5 V32.1',\n        back: 'M22,1.4L9.9,13.5l12.3,12.3 M10.3,13.5H54.9v44.6 H10.3v-26'\n      },\n      // `zoom`, `back`\n      title: ecModel.getLocaleModel().get(['toolbox', 'dataZoom', 'title']),\n      brushStyle: {\n        borderWidth: 0,\n        color: 'rgba(210,219,238,0.2)'\n      }\n    };\n    return defaultOption;\n  };\n\n  return DataZoomFeature;\n}(ToolboxFeature);\n\nvar handlers = {\n  zoom: function () {\n    var nextActive = !this._isZoomActive;\n    this.api.dispatchAction({\n      type: 'takeGlobalCursor',\n      key: 'dataZoomSelect',\n      dataZoomSelectActive: nextActive\n    });\n  },\n  back: function () {\n    this._dispatchZoomAction(history.pop(this.ecModel));\n  }\n};\n\nfunction makeAxisFinder(dzFeatureModel) {\n  var setting = {\n    xAxisIndex: dzFeatureModel.get('xAxisIndex', true),\n    yAxisIndex: dzFeatureModel.get('yAxisIndex', true),\n    xAxisId: dzFeatureModel.get('xAxisId', true),\n    yAxisId: dzFeatureModel.get('yAxisId', true)\n  }; // If both `xAxisIndex` `xAxisId` not set, it means 'all'.\n  // If both `yAxisIndex` `yAxisId` not set, it means 'all'.\n  // Some old cases set like this below to close yAxis control but leave xAxis control:\n  // `{ feature: { dataZoom: { yAxisIndex: false } }`.\n\n  if (setting.xAxisIndex == null && setting.xAxisId == null) {\n    setting.xAxisIndex = 'all';\n  }\n\n  if (setting.yAxisIndex == null && setting.yAxisId == null) {\n    setting.yAxisIndex = 'all';\n  }\n\n  return setting;\n}\n\nfunction updateBackBtnStatus(featureModel, ecModel) {\n  featureModel.setIconStatus('back', history.count(ecModel) > 1 ? 'emphasis' : 'normal');\n}\n\nfunction updateZoomBtnStatus(featureModel, ecModel, view, payload, api) {\n  var zoomActive = view._isZoomActive;\n\n  if (payload && payload.type === 'takeGlobalCursor') {\n    zoomActive = payload.key === 'dataZoomSelect' ? payload.dataZoomSelectActive : false;\n  }\n\n  view._isZoomActive = zoomActive;\n  featureModel.setIconStatus('zoom', zoomActive ? 'emphasis' : 'normal');\n  var brushTargetManager = new BrushTargetManager(makeAxisFinder(featureModel), ecModel, {\n    include: ['grid']\n  });\n  var panels = brushTargetManager.makePanelOpts(api, function (targetInfo) {\n    return targetInfo.xAxisDeclared && !targetInfo.yAxisDeclared ? 'lineX' : !targetInfo.xAxisDeclared && targetInfo.yAxisDeclared ? 'lineY' : 'rect';\n  });\n\n  view._brushController.setPanels(panels).enableBrush(zoomActive && panels.length ? {\n    brushType: 'auto',\n    brushStyle: featureModel.getModel('brushStyle').getItemStyle()\n  } : false);\n}\n\nregisterInternalOptionCreator('dataZoom', function (ecModel) {\n  var toolboxModel = ecModel.getComponent('toolbox', 0);\n  var featureDataZoomPath = ['feature', 'dataZoom'];\n\n  if (!toolboxModel || toolboxModel.get(featureDataZoomPath) == null) {\n    return;\n  }\n\n  var dzFeatureModel = toolboxModel.getModel(featureDataZoomPath);\n  var dzOptions = [];\n  var finder = makeAxisFinder(dzFeatureModel);\n  var finderResult = parseFinder(ecModel, finder);\n  each(finderResult.xAxisModels, function (axisModel) {\n    return buildInternalOptions(axisModel, 'xAxis', 'xAxisIndex');\n  });\n  each(finderResult.yAxisModels, function (axisModel) {\n    return buildInternalOptions(axisModel, 'yAxis', 'yAxisIndex');\n  });\n\n  function buildInternalOptions(axisModel, axisMainType, axisIndexPropName) {\n    var axisIndex = axisModel.componentIndex;\n    var newOpt = {\n      type: 'select',\n      $fromToolbox: true,\n      // Default to be filter\n      filterMode: dzFeatureModel.get('filterMode', true) || 'filter',\n      // Id for merge mapping.\n      id: DATA_ZOOM_ID_BASE + axisMainType + axisIndex\n    };\n    newOpt[axisIndexPropName] = axisIndex;\n    dzOptions.push(newOpt);\n  }\n\n  return dzOptions;\n});\nexport default DataZoomFeature;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { __extends } from \"tslib\";\nimport ComponentModel from '../../model/Component.js';\n\nvar TooltipModel =\n/** @class */\nfunction (_super) {\n  __extends(TooltipModel, _super);\n\n  function TooltipModel() {\n    var _this = _super !== null && _super.apply(this, arguments) || this;\n\n    _this.type = TooltipModel.type;\n    return _this;\n  }\n\n  TooltipModel.type = 'tooltip';\n  TooltipModel.dependencies = ['axisPointer'];\n  TooltipModel.defaultOption = {\n    // zlevel: 0,\n    z: 60,\n    show: true,\n    // tooltip main content\n    showContent: true,\n    // 'trigger' only works on coordinate system.\n    // 'item' | 'axis' | 'none'\n    trigger: 'item',\n    // 'click' | 'mousemove' | 'none'\n    triggerOn: 'mousemove|click',\n    alwaysShowContent: false,\n    displayMode: 'single',\n    renderMode: 'auto',\n    // whether restraint content inside viewRect.\n    // If renderMode: 'richText', default true.\n    // If renderMode: 'html', defaut false (for backward compat).\n    confine: null,\n    showDelay: 0,\n    hideDelay: 100,\n    // Animation transition time, unit is second\n    transitionDuration: 0.4,\n    enterable: false,\n    backgroundColor: '#fff',\n    // box shadow\n    shadowBlur: 10,\n    shadowColor: 'rgba(0, 0, 0, .2)',\n    shadowOffsetX: 1,\n    shadowOffsetY: 2,\n    // tooltip border radius, unit is px, default is 4\n    borderRadius: 4,\n    // tooltip border width, unit is px, default is 0 (no border)\n    borderWidth: 1,\n    // Tooltip inside padding, default is 5 for all direction\n    // Array is allowed to set up, right, bottom, left, same with css\n    // The default value: See `tooltip/tooltipMarkup.ts#getPaddingFromTooltipModel`.\n    padding: null,\n    // Extra css text\n    extraCssText: '',\n    // axis indicator, trigger by axis\n    axisPointer: {\n      // default is line\n      // legal values: 'line' | 'shadow' | 'cross'\n      type: 'line',\n      // Valid when type is line, appoint tooltip line locate on which line. Optional\n      // legal values: 'x' | 'y' | 'angle' | 'radius' | 'auto'\n      // default is 'auto', chose the axis which type is category.\n      // for multiply y axis, cartesian coord chose x axis, polar chose angle axis\n      axis: 'auto',\n      animation: 'auto',\n      animationDurationUpdate: 200,\n      animationEasingUpdate: 'exponentialOut',\n      crossStyle: {\n        color: '#999',\n        width: 1,\n        type: 'dashed',\n        // TODO formatter\n        textStyle: {}\n      } // lineStyle and shadowStyle should not be specified here,\n      // otherwise it will always override those styles on option.axisPointer.\n\n    },\n    textStyle: {\n      color: '#666',\n      fontSize: 14\n    }\n  };\n  return TooltipModel;\n}(ComponentModel);\n\nexport default TooltipModel;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { toCamelCase } from '../../util/format.js';\nimport env from 'zrender/lib/core/env.js';\n/* global document */\n\nexport function shouldTooltipConfine(tooltipModel) {\n  var confineOption = tooltipModel.get('confine');\n  return confineOption != null ? !!confineOption // In richText mode, the outside part can not be visible.\n  : tooltipModel.get('renderMode') === 'richText';\n}\n\nfunction testStyle(styleProps) {\n  if (!env.domSupported) {\n    return;\n  }\n\n  var style = document.documentElement.style;\n\n  for (var i = 0, len = styleProps.length; i < len; i++) {\n    if (styleProps[i] in style) {\n      return styleProps[i];\n    }\n  }\n}\n\nexport var TRANSFORM_VENDOR = testStyle(['transform', 'webkitTransform', 'OTransform', 'MozTransform', 'msTransform']);\nexport var TRANSITION_VENDOR = testStyle(['webkitTransition', 'transition', 'OTransition', 'MozTransition', 'msTransition']);\nexport function toCSSVendorPrefix(styleVendor, styleProp) {\n  if (!styleVendor) {\n    return styleProp;\n  }\n\n  styleProp = toCamelCase(styleProp, true);\n  var idx = styleVendor.indexOf(styleProp);\n  styleVendor = idx === -1 ? styleProp : \"-\" + styleVendor.slice(0, idx) + \"-\" + styleProp;\n  return styleVendor.toLowerCase();\n}\nexport function getComputedStyle(el, style) {\n  var stl = el.currentStyle || document.defaultView && document.defaultView.getComputedStyle(el);\n  return stl ? style ? stl[style] : stl : null;\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { isString, indexOf, each, bind, isArray, isDom } from 'zrender/lib/core/util.js';\nimport { normalizeEvent } from 'zrender/lib/core/event.js';\nimport { transformLocalCoord } from 'zrender/lib/core/dom.js';\nimport env from 'zrender/lib/core/env.js';\nimport { convertToColorString, toCamelCase, normalizeCssArray } from '../../util/format.js';\nimport { shouldTooltipConfine, toCSSVendorPrefix, getComputedStyle, TRANSFORM_VENDOR, TRANSITION_VENDOR } from './helper.js';\nimport { getPaddingFromTooltipModel } from './tooltipMarkup.js';\n/* global document, window */\n\nvar CSS_TRANSITION_VENDOR = toCSSVendorPrefix(TRANSITION_VENDOR, 'transition');\nvar CSS_TRANSFORM_VENDOR = toCSSVendorPrefix(TRANSFORM_VENDOR, 'transform'); // eslint-disable-next-line\n\nvar gCssText = \"position:absolute;display:block;border-style:solid;white-space:nowrap;z-index:9999999;\" + (env.transform3dSupported ? 'will-change:transform;' : '');\n\nfunction mirrorPos(pos) {\n  pos = pos === 'left' ? 'right' : pos === 'right' ? 'left' : pos === 'top' ? 'bottom' : 'top';\n  return pos;\n}\n\nfunction assembleArrow(tooltipModel, borderColor, arrowPosition) {\n  if (!isString(arrowPosition) || arrowPosition === 'inside') {\n    return '';\n  }\n\n  var backgroundColor = tooltipModel.get('backgroundColor');\n  var borderWidth = tooltipModel.get('borderWidth');\n  borderColor = convertToColorString(borderColor);\n  var arrowPos = mirrorPos(arrowPosition);\n  var arrowSize = Math.max(Math.round(borderWidth) * 1.5, 6);\n  var positionStyle = '';\n  var transformStyle = CSS_TRANSFORM_VENDOR + ':';\n  var rotateDeg;\n\n  if (indexOf(['left', 'right'], arrowPos) > -1) {\n    positionStyle += 'top:50%';\n    transformStyle += \"translateY(-50%) rotate(\" + (rotateDeg = arrowPos === 'left' ? -225 : -45) + \"deg)\";\n  } else {\n    positionStyle += 'left:50%';\n    transformStyle += \"translateX(-50%) rotate(\" + (rotateDeg = arrowPos === 'top' ? 225 : 45) + \"deg)\";\n  }\n\n  var rotateRadian = rotateDeg * Math.PI / 180;\n  var arrowWH = arrowSize + borderWidth;\n  var rotatedWH = arrowWH * Math.abs(Math.cos(rotateRadian)) + arrowWH * Math.abs(Math.sin(rotateRadian));\n  var arrowOffset = Math.round(((rotatedWH - Math.SQRT2 * borderWidth) / 2 + Math.SQRT2 * borderWidth - (rotatedWH - arrowWH) / 2) * 100) / 100;\n  positionStyle += \";\" + arrowPos + \":-\" + arrowOffset + \"px\";\n  var borderStyle = borderColor + \" solid \" + borderWidth + \"px;\";\n  var styleCss = [\"position:absolute;width:\" + arrowSize + \"px;height:\" + arrowSize + \"px;z-index:-1;\", positionStyle + \";\" + transformStyle + \";\", \"border-bottom:\" + borderStyle, \"border-right:\" + borderStyle, \"background-color:\" + backgroundColor + \";\"];\n  return \"<div style=\\\"\" + styleCss.join('') + \"\\\"></div>\";\n}\n\nfunction assembleTransition(duration, onlyFade) {\n  var transitionCurve = 'cubic-bezier(0.23,1,0.32,1)';\n  var transitionOption = \" \" + duration / 2 + \"s \" + transitionCurve;\n  var transitionText = \"opacity\" + transitionOption + \",visibility\" + transitionOption;\n\n  if (!onlyFade) {\n    transitionOption = \" \" + duration + \"s \" + transitionCurve;\n    transitionText += env.transformSupported ? \",\" + CSS_TRANSFORM_VENDOR + transitionOption : \",left\" + transitionOption + \",top\" + transitionOption;\n  }\n\n  return CSS_TRANSITION_VENDOR + ':' + transitionText;\n}\n\nfunction assembleTransform(x, y, toString) {\n  // If using float on style, the final width of the dom might\n  // keep changing slightly while mouse move. So `toFixed(0)` them.\n  var x0 = x.toFixed(0) + 'px';\n  var y0 = y.toFixed(0) + 'px'; // not support transform, use `left` and `top` instead.\n\n  if (!env.transformSupported) {\n    return toString ? \"top:\" + y0 + \";left:\" + x0 + \";\" : [['top', y0], ['left', x0]];\n  } // support transform\n\n\n  var is3d = env.transform3dSupported;\n  var translate = \"translate\" + (is3d ? '3d' : '') + \"(\" + x0 + \",\" + y0 + (is3d ? ',0' : '') + \")\";\n  return toString ? 'top:0;left:0;' + CSS_TRANSFORM_VENDOR + ':' + translate + ';' : [['top', 0], ['left', 0], [TRANSFORM_VENDOR, translate]];\n}\n/**\r\n * @param {Object} textStyle\r\n * @return {string}\r\n * @inner\r\n */\n\n\nfunction assembleFont(textStyleModel) {\n  var cssText = [];\n  var fontSize = textStyleModel.get('fontSize');\n  var color = textStyleModel.getTextColor();\n  color && cssText.push('color:' + color);\n  cssText.push('font:' + textStyleModel.getFont());\n  fontSize // @ts-ignore, leave it to the tooltip refactor.\n  && cssText.push('line-height:' + Math.round(fontSize * 3 / 2) + 'px');\n  var shadowColor = textStyleModel.get('textShadowColor');\n  var shadowBlur = textStyleModel.get('textShadowBlur') || 0;\n  var shadowOffsetX = textStyleModel.get('textShadowOffsetX') || 0;\n  var shadowOffsetY = textStyleModel.get('textShadowOffsetY') || 0;\n  shadowColor && shadowBlur && cssText.push('text-shadow:' + shadowOffsetX + 'px ' + shadowOffsetY + 'px ' + shadowBlur + 'px ' + shadowColor);\n  each(['decoration', 'align'], function (name) {\n    var val = textStyleModel.get(name);\n    val && cssText.push('text-' + name + ':' + val);\n  });\n  return cssText.join(';');\n}\n\nfunction assembleCssText(tooltipModel, enableTransition, onlyFade) {\n  var cssText = [];\n  var transitionDuration = tooltipModel.get('transitionDuration');\n  var backgroundColor = tooltipModel.get('backgroundColor');\n  var shadowBlur = tooltipModel.get('shadowBlur');\n  var shadowColor = tooltipModel.get('shadowColor');\n  var shadowOffsetX = tooltipModel.get('shadowOffsetX');\n  var shadowOffsetY = tooltipModel.get('shadowOffsetY');\n  var textStyleModel = tooltipModel.getModel('textStyle');\n  var padding = getPaddingFromTooltipModel(tooltipModel, 'html');\n  var boxShadow = shadowOffsetX + \"px \" + shadowOffsetY + \"px \" + shadowBlur + \"px \" + shadowColor;\n  cssText.push('box-shadow:' + boxShadow); // Animation transition. Do not animate when transitionDuration is 0.\n\n  enableTransition && transitionDuration && cssText.push(assembleTransition(transitionDuration, onlyFade));\n\n  if (backgroundColor) {\n    cssText.push('background-color:' + backgroundColor);\n  } // Border style\n\n\n  each(['width', 'color', 'radius'], function (name) {\n    var borderName = 'border-' + name;\n    var camelCase = toCamelCase(borderName);\n    var val = tooltipModel.get(camelCase);\n    val != null && cssText.push(borderName + ':' + val + (name === 'color' ? '' : 'px'));\n  }); // Text style\n\n  cssText.push(assembleFont(textStyleModel)); // Padding\n\n  if (padding != null) {\n    cssText.push('padding:' + normalizeCssArray(padding).join('px ') + 'px');\n  }\n\n  return cssText.join(';') + ';';\n} // If not able to make, do not modify the input `out`.\n\n\nfunction makeStyleCoord(out, zr, appendToBody, zrX, zrY) {\n  var zrPainter = zr && zr.painter;\n\n  if (appendToBody) {\n    var zrViewportRoot = zrPainter && zrPainter.getViewportRoot();\n\n    if (zrViewportRoot) {\n      // Some APPs might use scale on body, so we support CSS transform here.\n      transformLocalCoord(out, zrViewportRoot, document.body, zrX, zrY);\n    }\n  } else {\n    out[0] = zrX;\n    out[1] = zrY; // xy should be based on canvas root. But tooltipContent is\n    // the sibling of canvas root. So padding of ec container\n    // should be considered here.\n\n    var viewportRootOffset = zrPainter && zrPainter.getViewportRootOffset();\n\n    if (viewportRootOffset) {\n      out[0] += viewportRootOffset.offsetLeft;\n      out[1] += viewportRootOffset.offsetTop;\n    }\n  }\n\n  out[2] = out[0] / zr.getWidth();\n  out[3] = out[1] / zr.getHeight();\n}\n\nvar TooltipHTMLContent =\n/** @class */\nfunction () {\n  function TooltipHTMLContent(container, api, opt) {\n    this._show = false;\n    this._styleCoord = [0, 0, 0, 0];\n    this._enterable = true;\n    this._alwaysShowContent = false;\n    this._firstShow = true;\n    this._longHide = true;\n\n    if (env.wxa) {\n      return null;\n    }\n\n    var el = document.createElement('div'); // TODO: TYPE\n\n    el.domBelongToZr = true;\n    this.el = el;\n    var zr = this._zr = api.getZr();\n    var appendToBody = this._appendToBody = opt && opt.appendToBody;\n    makeStyleCoord(this._styleCoord, zr, appendToBody, api.getWidth() / 2, api.getHeight() / 2);\n\n    if (appendToBody) {\n      document.body.appendChild(el);\n    } else {\n      container.appendChild(el);\n    }\n\n    this._container = container; // FIXME\n    // Is it needed to trigger zr event manually if\n    // the browser do not support `pointer-events: none`.\n\n    var self = this;\n\n    el.onmouseenter = function () {\n      // clear the timeout in hideLater and keep showing tooltip\n      if (self._enterable) {\n        clearTimeout(self._hideTimeout);\n        self._show = true;\n      }\n\n      self._inContent = true;\n    };\n\n    el.onmousemove = function (e) {\n      e = e || window.event;\n\n      if (!self._enterable) {\n        // `pointer-events: none` is set to tooltip content div\n        // if `enterable` is set as `false`, and `el.onmousemove`\n        // can not be triggered. But in browser that do not\n        // support `pointer-events`, we need to do this:\n        // Try trigger zrender event to avoid mouse\n        // in and out shape too frequently\n        var handler = zr.handler;\n        var zrViewportRoot = zr.painter.getViewportRoot();\n        normalizeEvent(zrViewportRoot, e, true);\n        handler.dispatch('mousemove', e);\n      }\n    };\n\n    el.onmouseleave = function () {\n      // set `_inContent` to `false` before `hideLater`\n      self._inContent = false;\n\n      if (self._enterable) {\n        if (self._show) {\n          self.hideLater(self._hideDelay);\n        }\n      }\n    };\n  }\n  /**\r\n   * Update when tooltip is rendered\r\n   */\n\n\n  TooltipHTMLContent.prototype.update = function (tooltipModel) {\n    // FIXME\n    // Move this logic to ec main?\n    var container = this._container;\n    var position = getComputedStyle(container, 'position');\n    var domStyle = container.style;\n\n    if (domStyle.position !== 'absolute' && position !== 'absolute') {\n      domStyle.position = 'relative';\n    } // move tooltip if chart resized\n\n\n    var alwaysShowContent = tooltipModel.get('alwaysShowContent');\n    alwaysShowContent && this._moveIfResized(); // update alwaysShowContent\n\n    this._alwaysShowContent = alwaysShowContent; // update className\n\n    this.el.className = tooltipModel.get('className') || ''; // Hide the tooltip\n    // PENDING\n    // this.hide();\n  };\n\n  TooltipHTMLContent.prototype.show = function (tooltipModel, nearPointColor) {\n    clearTimeout(this._hideTimeout);\n    clearTimeout(this._longHideTimeout);\n    var el = this.el;\n    var style = el.style;\n    var styleCoord = this._styleCoord;\n\n    if (!el.innerHTML) {\n      style.display = 'none';\n    } else {\n      style.cssText = gCssText + assembleCssText(tooltipModel, !this._firstShow, this._longHide) // initial transform\n      + assembleTransform(styleCoord[0], styleCoord[1], true) + (\"border-color:\" + convertToColorString(nearPointColor) + \";\") + (tooltipModel.get('extraCssText') || '') // If mouse occasionally move over the tooltip, a mouseout event will be\n      // triggered by canvas, and cause some unexpectable result like dragging\n      // stop, \"unfocusAdjacency\". Here `pointer-events: none` is used to solve\n      // it. Although it is not supported by IE8~IE10, fortunately it is a rare\n      // scenario.\n      + (\";pointer-events:\" + (this._enterable ? 'auto' : 'none'));\n    }\n\n    this._show = true;\n    this._firstShow = false;\n    this._longHide = false;\n  };\n\n  TooltipHTMLContent.prototype.setContent = function (content, markers, tooltipModel, borderColor, arrowPosition) {\n    var el = this.el;\n\n    if (content == null) {\n      el.innerHTML = '';\n      return;\n    }\n\n    var arrow = '';\n\n    if (isString(arrowPosition) && tooltipModel.get('trigger') === 'item' && !shouldTooltipConfine(tooltipModel)) {\n      arrow = assembleArrow(tooltipModel, borderColor, arrowPosition);\n    }\n\n    if (isString(content)) {\n      el.innerHTML = content + arrow;\n    } else if (content) {\n      // Clear previous\n      el.innerHTML = '';\n\n      if (!isArray(content)) {\n        content = [content];\n      }\n\n      for (var i = 0; i < content.length; i++) {\n        if (isDom(content[i]) && content[i].parentNode !== el) {\n          el.appendChild(content[i]);\n        }\n      } // no arrow if empty\n\n\n      if (arrow && el.childNodes.length) {\n        // no need to create a new parent element, but it's not supported by IE 10 and older.\n        // const arrowEl = document.createRange().createContextualFragment(arrow);\n        var arrowEl = document.createElement('div');\n        arrowEl.innerHTML = arrow;\n        el.appendChild(arrowEl);\n      }\n    }\n  };\n\n  TooltipHTMLContent.prototype.setEnterable = function (enterable) {\n    this._enterable = enterable;\n  };\n\n  TooltipHTMLContent.prototype.getSize = function () {\n    var el = this.el;\n    return [el.offsetWidth, el.offsetHeight];\n  };\n\n  TooltipHTMLContent.prototype.moveTo = function (zrX, zrY) {\n    var styleCoord = this._styleCoord;\n    makeStyleCoord(styleCoord, this._zr, this._appendToBody, zrX, zrY);\n\n    if (styleCoord[0] != null && styleCoord[1] != null) {\n      var style_1 = this.el.style;\n      var transforms = assembleTransform(styleCoord[0], styleCoord[1]);\n      each(transforms, function (transform) {\n        style_1[transform[0]] = transform[1];\n      });\n    }\n  };\n  /**\r\n   * when `alwaysShowContent` is true,\r\n   * move the tooltip after chart resized\r\n   */\n\n\n  TooltipHTMLContent.prototype._moveIfResized = function () {\n    // The ratio of left to width\n    var ratioX = this._styleCoord[2]; // The ratio of top to height\n\n    var ratioY = this._styleCoord[3];\n    this.moveTo(ratioX * this._zr.getWidth(), ratioY * this._zr.getHeight());\n  };\n\n  TooltipHTMLContent.prototype.hide = function () {\n    var _this = this;\n\n    var style = this.el.style;\n    style.visibility = 'hidden';\n    style.opacity = '0';\n    env.transform3dSupported && (style.willChange = '');\n    this._show = false;\n    this._longHideTimeout = setTimeout(function () {\n      return _this._longHide = true;\n    }, 500);\n  };\n\n  TooltipHTMLContent.prototype.hideLater = function (time) {\n    if (this._show && !(this._inContent && this._enterable) && !this._alwaysShowContent) {\n      if (time) {\n        this._hideDelay = time; // Set show false to avoid invoke hideLater multiple times\n\n        this._show = false;\n        this._hideTimeout = setTimeout(bind(this.hide, this), time);\n      } else {\n        this.hide();\n      }\n    }\n  };\n\n  TooltipHTMLContent.prototype.isShow = function () {\n    return this._show;\n  };\n\n  TooltipHTMLContent.prototype.dispose = function () {\n    this.el.parentNode.removeChild(this.el);\n  };\n\n  return TooltipHTMLContent;\n}();\n\nexport default TooltipHTMLContent;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport * as zrUtil from 'zrender/lib/core/util.js';\nimport ZRText from 'zrender/lib/graphic/Text.js';\nimport { getPaddingFromTooltipModel } from './tooltipMarkup.js';\nimport { throwError } from '../../util/log.js';\n\nvar TooltipRichContent =\n/** @class */\nfunction () {\n  function TooltipRichContent(api) {\n    this._show = false;\n    this._styleCoord = [0, 0, 0, 0];\n    this._alwaysShowContent = false;\n    this._enterable = true;\n    this._zr = api.getZr();\n    makeStyleCoord(this._styleCoord, this._zr, api.getWidth() / 2, api.getHeight() / 2);\n  }\n  /**\r\n   * Update when tooltip is rendered\r\n   */\n\n\n  TooltipRichContent.prototype.update = function (tooltipModel) {\n    var alwaysShowContent = tooltipModel.get('alwaysShowContent');\n    alwaysShowContent && this._moveIfResized(); // update alwaysShowContent\n\n    this._alwaysShowContent = alwaysShowContent;\n  };\n\n  TooltipRichContent.prototype.show = function () {\n    if (this._hideTimeout) {\n      clearTimeout(this._hideTimeout);\n    }\n\n    this.el.show();\n    this._show = true;\n  };\n  /**\r\n   * Set tooltip content\r\n   */\n\n\n  TooltipRichContent.prototype.setContent = function (content, markupStyleCreator, tooltipModel, borderColor, arrowPosition) {\n    var _this = this;\n\n    if (zrUtil.isObject(content)) {\n      throwError(process.env.NODE_ENV !== 'production' ? 'Passing DOM nodes as content is not supported in richText tooltip!' : '');\n    }\n\n    if (this.el) {\n      this._zr.remove(this.el);\n    }\n\n    var textStyleModel = tooltipModel.getModel('textStyle');\n    this.el = new ZRText({\n      style: {\n        rich: markupStyleCreator.richTextStyles,\n        text: content,\n        lineHeight: 22,\n        borderWidth: 1,\n        borderColor: borderColor,\n        textShadowColor: textStyleModel.get('textShadowColor'),\n        fill: tooltipModel.get(['textStyle', 'color']),\n        padding: getPaddingFromTooltipModel(tooltipModel, 'richText'),\n        verticalAlign: 'top',\n        align: 'left'\n      },\n      z: tooltipModel.get('z')\n    });\n    zrUtil.each(['backgroundColor', 'borderRadius', 'shadowColor', 'shadowBlur', 'shadowOffsetX', 'shadowOffsetY'], function (propName) {\n      _this.el.style[propName] = tooltipModel.get(propName);\n    });\n    zrUtil.each(['textShadowBlur', 'textShadowOffsetX', 'textShadowOffsetY'], function (propName) {\n      _this.el.style[propName] = textStyleModel.get(propName) || 0;\n    });\n\n    this._zr.add(this.el);\n\n    var self = this;\n    this.el.on('mouseover', function () {\n      // clear the timeout in hideLater and keep showing tooltip\n      if (self._enterable) {\n        clearTimeout(self._hideTimeout);\n        self._show = true;\n      }\n\n      self._inContent = true;\n    });\n    this.el.on('mouseout', function () {\n      if (self._enterable) {\n        if (self._show) {\n          self.hideLater(self._hideDelay);\n        }\n      }\n\n      self._inContent = false;\n    });\n  };\n\n  TooltipRichContent.prototype.setEnterable = function (enterable) {\n    this._enterable = enterable;\n  };\n\n  TooltipRichContent.prototype.getSize = function () {\n    var el = this.el;\n    var bounding = this.el.getBoundingRect(); // bounding rect does not include shadow. For renderMode richText,\n    // if overflow, it will be cut. So calculate them accurately.\n\n    var shadowOuterSize = calcShadowOuterSize(el.style);\n    return [bounding.width + shadowOuterSize.left + shadowOuterSize.right, bounding.height + shadowOuterSize.top + shadowOuterSize.bottom];\n  };\n\n  TooltipRichContent.prototype.moveTo = function (x, y) {\n    var el = this.el;\n\n    if (el) {\n      var styleCoord = this._styleCoord;\n      makeStyleCoord(styleCoord, this._zr, x, y);\n      x = styleCoord[0];\n      y = styleCoord[1];\n      var style = el.style;\n      var borderWidth = mathMaxWith0(style.borderWidth || 0);\n      var shadowOuterSize = calcShadowOuterSize(style); // rich text x, y do not include border.\n\n      el.x = x + borderWidth + shadowOuterSize.left;\n      el.y = y + borderWidth + shadowOuterSize.top;\n      el.markRedraw();\n    }\n  };\n  /**\r\n   * when `alwaysShowContent` is true,\r\n   * move the tooltip after chart resized\r\n   */\n\n\n  TooltipRichContent.prototype._moveIfResized = function () {\n    // The ratio of left to width\n    var ratioX = this._styleCoord[2]; // The ratio of top to height\n\n    var ratioY = this._styleCoord[3];\n    this.moveTo(ratioX * this._zr.getWidth(), ratioY * this._zr.getHeight());\n  };\n\n  TooltipRichContent.prototype.hide = function () {\n    if (this.el) {\n      this.el.hide();\n    }\n\n    this._show = false;\n  };\n\n  TooltipRichContent.prototype.hideLater = function (time) {\n    if (this._show && !(this._inContent && this._enterable) && !this._alwaysShowContent) {\n      if (time) {\n        this._hideDelay = time; // Set show false to avoid invoke hideLater multiple times\n\n        this._show = false;\n        this._hideTimeout = setTimeout(zrUtil.bind(this.hide, this), time);\n      } else {\n        this.hide();\n      }\n    }\n  };\n\n  TooltipRichContent.prototype.isShow = function () {\n    return this._show;\n  };\n\n  TooltipRichContent.prototype.dispose = function () {\n    this._zr.remove(this.el);\n  };\n\n  return TooltipRichContent;\n}();\n\nfunction mathMaxWith0(val) {\n  return Math.max(0, val);\n}\n\nfunction calcShadowOuterSize(style) {\n  var shadowBlur = mathMaxWith0(style.shadowBlur || 0);\n  var shadowOffsetX = mathMaxWith0(style.shadowOffsetX || 0);\n  var shadowOffsetY = mathMaxWith0(style.shadowOffsetY || 0);\n  return {\n    left: mathMaxWith0(shadowBlur - shadowOffsetX),\n    right: mathMaxWith0(shadowBlur + shadowOffsetX),\n    top: mathMaxWith0(shadowBlur - shadowOffsetY),\n    bottom: mathMaxWith0(shadowBlur + shadowOffsetY)\n  };\n}\n\nfunction makeStyleCoord(out, zr, zrX, zrY) {\n  out[0] = zrX;\n  out[1] = zrY;\n  out[2] = out[0] / zr.getWidth();\n  out[3] = out[1] / zr.getHeight();\n}\n\nexport default TooltipRichContent;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\nimport { __extends } from \"tslib\";\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\n\nimport { bind, each, clone, trim, isString, isFunction, isArray, isObject, extend } from 'zrender/lib/core/util.js';\nimport env from 'zrender/lib/core/env.js';\nimport TooltipHTMLContent from './TooltipHTMLContent.js';\nimport TooltipRichContent from './TooltipRichContent.js';\nimport { convertToColorString, formatTpl } from '../../util/format.js';\nimport { parsePercent } from '../../util/number.js';\nimport { Rect } from '../../util/graphic.js';\nimport findPointFromSeries from '../axisPointer/findPointFromSeries.js';\nimport { getLayoutRect } from '../../util/layout.js';\nimport Model from '../../model/Model.js';\nimport * as globalListener from '../axisPointer/globalListener.js';\nimport * as axisHelper from '../../coord/axisHelper.js';\nimport * as axisPointerViewHelper from '../axisPointer/viewHelper.js';\nimport { getTooltipRenderMode, preParseFinder, queryReferringComponents } from '../../util/model.js';\nimport ComponentView from '../../view/Component.js';\nimport { format as timeFormat } from '../../util/time.js';\nimport { getECData } from '../../util/innerStore.js';\nimport { shouldTooltipConfine } from './helper.js';\nimport { normalizeTooltipFormatResult } from '../../model/mixin/dataFormat.js';\nimport { createTooltipMarkup, buildTooltipMarkup, TooltipMarkupStyleCreator } from './tooltipMarkup.js';\nimport { findEventDispatcher } from '../../util/event.js';\nimport { clear, createOrUpdate } from '../../util/throttle.js';\nvar proxyRect = new Rect({\n  shape: {\n    x: -1,\n    y: -1,\n    width: 2,\n    height: 2\n  }\n});\n\nvar TooltipView =\n/** @class */\nfunction (_super) {\n  __extends(TooltipView, _super);\n\n  function TooltipView() {\n    var _this = _super !== null && _super.apply(this, arguments) || this;\n\n    _this.type = TooltipView.type;\n    return _this;\n  }\n\n  TooltipView.prototype.init = function (ecModel, api) {\n    if (env.node || !api.getDom()) {\n      return;\n    }\n\n    var tooltipModel = ecModel.getComponent('tooltip');\n    var renderMode = this._renderMode = getTooltipRenderMode(tooltipModel.get('renderMode'));\n    this._tooltipContent = renderMode === 'richText' ? new TooltipRichContent(api) : new TooltipHTMLContent(api.getDom(), api, {\n      appendToBody: tooltipModel.get('appendToBody', true)\n    });\n  };\n\n  TooltipView.prototype.render = function (tooltipModel, ecModel, api) {\n    if (env.node || !api.getDom()) {\n      return;\n    } // Reset\n\n\n    this.group.removeAll();\n    this._tooltipModel = tooltipModel;\n    this._ecModel = ecModel;\n    this._api = api;\n    var tooltipContent = this._tooltipContent;\n    tooltipContent.update(tooltipModel);\n    tooltipContent.setEnterable(tooltipModel.get('enterable'));\n\n    this._initGlobalListener();\n\n    this._keepShow(); // PENDING\n    // `mousemove` event will be triggered very frequently when the mouse moves fast,\n    // which causes that the `updatePosition` function was also called frequently.\n    // In Chrome with devtools open and Firefox, tooltip looks laggy and shakes. See #14695 #16101\n    // To avoid frequent triggering,\n    // consider throttling it in 50ms when transition is enabled\n\n\n    if (this._renderMode !== 'richText' && tooltipModel.get('transitionDuration')) {\n      createOrUpdate(this, '_updatePosition', 50, 'fixRate');\n    } else {\n      clear(this, '_updatePosition');\n    }\n  };\n\n  TooltipView.prototype._initGlobalListener = function () {\n    var tooltipModel = this._tooltipModel;\n    var triggerOn = tooltipModel.get('triggerOn');\n    globalListener.register('itemTooltip', this._api, bind(function (currTrigger, e, dispatchAction) {\n      // If 'none', it is not controlled by mouse totally.\n      if (triggerOn !== 'none') {\n        if (triggerOn.indexOf(currTrigger) >= 0) {\n          this._tryShow(e, dispatchAction);\n        } else if (currTrigger === 'leave') {\n          this._hide(dispatchAction);\n        }\n      }\n    }, this));\n  };\n\n  TooltipView.prototype._keepShow = function () {\n    var tooltipModel = this._tooltipModel;\n    var ecModel = this._ecModel;\n    var api = this._api;\n    var triggerOn = tooltipModel.get('triggerOn'); // Try to keep the tooltip show when refreshing\n\n    if (this._lastX != null && this._lastY != null // When user is willing to control tooltip totally using API,\n    // self.manuallyShowTip({x, y}) might cause tooltip hide,\n    // which is not expected.\n    && triggerOn !== 'none' && triggerOn !== 'click') {\n      var self_1 = this;\n      clearTimeout(this._refreshUpdateTimeout);\n      this._refreshUpdateTimeout = setTimeout(function () {\n        // Show tip next tick after other charts are rendered\n        // In case highlight action has wrong result\n        // FIXME\n        !api.isDisposed() && self_1.manuallyShowTip(tooltipModel, ecModel, api, {\n          x: self_1._lastX,\n          y: self_1._lastY,\n          dataByCoordSys: self_1._lastDataByCoordSys\n        });\n      });\n    }\n  };\n  /**\r\n   * Show tip manually by\r\n   * dispatchAction({\r\n   *     type: 'showTip',\r\n   *     x: 10,\r\n   *     y: 10\r\n   * });\r\n   * Or\r\n   * dispatchAction({\r\n   *      type: 'showTip',\r\n   *      seriesIndex: 0,\r\n   *      dataIndex or dataIndexInside or name\r\n   * });\r\n   *\r\n   *  TODO Batch\r\n   */\n\n\n  TooltipView.prototype.manuallyShowTip = function (tooltipModel, ecModel, api, payload) {\n    if (payload.from === this.uid || env.node || !api.getDom()) {\n      return;\n    }\n\n    var dispatchAction = makeDispatchAction(payload, api); // Reset ticket\n\n    this._ticket = ''; // When triggered from axisPointer.\n\n    var dataByCoordSys = payload.dataByCoordSys;\n    var cmptRef = findComponentReference(payload, ecModel, api);\n\n    if (cmptRef) {\n      var rect = cmptRef.el.getBoundingRect().clone();\n      rect.applyTransform(cmptRef.el.transform);\n\n      this._tryShow({\n        offsetX: rect.x + rect.width / 2,\n        offsetY: rect.y + rect.height / 2,\n        target: cmptRef.el,\n        position: payload.position,\n        // When manully trigger, the mouse is not on the el, so we'd better to\n        // position tooltip on the bottom of the el and display arrow is possible.\n        positionDefault: 'bottom'\n      }, dispatchAction);\n    } else if (payload.tooltip && payload.x != null && payload.y != null) {\n      var el = proxyRect;\n      el.x = payload.x;\n      el.y = payload.y;\n      el.update();\n      getECData(el).tooltipConfig = {\n        name: null,\n        option: payload.tooltip\n      }; // Manually show tooltip while view is not using zrender elements.\n\n      this._tryShow({\n        offsetX: payload.x,\n        offsetY: payload.y,\n        target: el\n      }, dispatchAction);\n    } else if (dataByCoordSys) {\n      this._tryShow({\n        offsetX: payload.x,\n        offsetY: payload.y,\n        position: payload.position,\n        dataByCoordSys: dataByCoordSys,\n        tooltipOption: payload.tooltipOption\n      }, dispatchAction);\n    } else if (payload.seriesIndex != null) {\n      if (this._manuallyAxisShowTip(tooltipModel, ecModel, api, payload)) {\n        return;\n      }\n\n      var pointInfo = findPointFromSeries(payload, ecModel);\n      var cx = pointInfo.point[0];\n      var cy = pointInfo.point[1];\n\n      if (cx != null && cy != null) {\n        this._tryShow({\n          offsetX: cx,\n          offsetY: cy,\n          target: pointInfo.el,\n          position: payload.position,\n          // When manully trigger, the mouse is not on the el, so we'd better to\n          // position tooltip on the bottom of the el and display arrow is possible.\n          positionDefault: 'bottom'\n        }, dispatchAction);\n      }\n    } else if (payload.x != null && payload.y != null) {\n      // FIXME\n      // should wrap dispatchAction like `axisPointer/globalListener` ?\n      api.dispatchAction({\n        type: 'updateAxisPointer',\n        x: payload.x,\n        y: payload.y\n      });\n\n      this._tryShow({\n        offsetX: payload.x,\n        offsetY: payload.y,\n        position: payload.position,\n        target: api.getZr().findHover(payload.x, payload.y).target\n      }, dispatchAction);\n    }\n  };\n\n  TooltipView.prototype.manuallyHideTip = function (tooltipModel, ecModel, api, payload) {\n    var tooltipContent = this._tooltipContent;\n\n    if (this._tooltipModel) {\n      tooltipContent.hideLater(this._tooltipModel.get('hideDelay'));\n    }\n\n    this._lastX = this._lastY = this._lastDataByCoordSys = null;\n\n    if (payload.from !== this.uid) {\n      this._hide(makeDispatchAction(payload, api));\n    }\n  }; // Be compatible with previous design, that is, when tooltip.type is 'axis' and\n  // dispatchAction 'showTip' with seriesIndex and dataIndex will trigger axis pointer\n  // and tooltip.\n\n\n  TooltipView.prototype._manuallyAxisShowTip = function (tooltipModel, ecModel, api, payload) {\n    var seriesIndex = payload.seriesIndex;\n    var dataIndex = payload.dataIndex; // @ts-ignore\n\n    var coordSysAxesInfo = ecModel.getComponent('axisPointer').coordSysAxesInfo;\n\n    if (seriesIndex == null || dataIndex == null || coordSysAxesInfo == null) {\n      return;\n    }\n\n    var seriesModel = ecModel.getSeriesByIndex(seriesIndex);\n\n    if (!seriesModel) {\n      return;\n    }\n\n    var data = seriesModel.getData();\n    var tooltipCascadedModel = buildTooltipModel([data.getItemModel(dataIndex), seriesModel, (seriesModel.coordinateSystem || {}).model], this._tooltipModel);\n\n    if (tooltipCascadedModel.get('trigger') !== 'axis') {\n      return;\n    }\n\n    api.dispatchAction({\n      type: 'updateAxisPointer',\n      seriesIndex: seriesIndex,\n      dataIndex: dataIndex,\n      position: payload.position\n    });\n    return true;\n  };\n\n  TooltipView.prototype._tryShow = function (e, dispatchAction) {\n    var el = e.target;\n    var tooltipModel = this._tooltipModel;\n\n    if (!tooltipModel) {\n      return;\n    } // Save mouse x, mouse y. So we can try to keep showing the tip if chart is refreshed\n\n\n    this._lastX = e.offsetX;\n    this._lastY = e.offsetY;\n    var dataByCoordSys = e.dataByCoordSys;\n\n    if (dataByCoordSys && dataByCoordSys.length) {\n      this._showAxisTooltip(dataByCoordSys, e);\n    } else if (el) {\n      this._lastDataByCoordSys = null;\n      var seriesDispatcher_1;\n      var cmptDispatcher_1;\n      findEventDispatcher(el, function (target) {\n        // Always show item tooltip if mouse is on the element with dataIndex\n        if (getECData(target).dataIndex != null) {\n          seriesDispatcher_1 = target;\n          return true;\n        } // Tooltip provided directly. Like legend.\n\n\n        if (getECData(target).tooltipConfig != null) {\n          cmptDispatcher_1 = target;\n          return true;\n        }\n      }, true);\n\n      if (seriesDispatcher_1) {\n        this._showSeriesItemTooltip(e, seriesDispatcher_1, dispatchAction);\n      } else if (cmptDispatcher_1) {\n        this._showComponentItemTooltip(e, cmptDispatcher_1, dispatchAction);\n      } else {\n        this._hide(dispatchAction);\n      }\n    } else {\n      this._lastDataByCoordSys = null;\n\n      this._hide(dispatchAction);\n    }\n  };\n\n  TooltipView.prototype._showOrMove = function (tooltipModel, cb) {\n    // showDelay is used in this case: tooltip.enterable is set\n    // as true. User intent to move mouse into tooltip and click\n    // something. `showDelay` makes it easier to enter the content\n    // but tooltip do not move immediately.\n    var delay = tooltipModel.get('showDelay');\n    cb = bind(cb, this);\n    clearTimeout(this._showTimout);\n    delay > 0 ? this._showTimout = setTimeout(cb, delay) : cb();\n  };\n\n  TooltipView.prototype._showAxisTooltip = function (dataByCoordSys, e) {\n    var ecModel = this._ecModel;\n    var globalTooltipModel = this._tooltipModel;\n    var point = [e.offsetX, e.offsetY];\n    var singleTooltipModel = buildTooltipModel([e.tooltipOption], globalTooltipModel);\n    var renderMode = this._renderMode;\n    var cbParamsList = [];\n    var articleMarkup = createTooltipMarkup('section', {\n      blocks: [],\n      noHeader: true\n    }); // Only for legacy: `Serise['formatTooltip']` returns a string.\n\n    var markupTextArrLegacy = [];\n    var markupStyleCreator = new TooltipMarkupStyleCreator();\n    each(dataByCoordSys, function (itemCoordSys) {\n      each(itemCoordSys.dataByAxis, function (axisItem) {\n        var axisModel = ecModel.getComponent(axisItem.axisDim + 'Axis', axisItem.axisIndex);\n        var axisValue = axisItem.value;\n\n        if (!axisModel || axisValue == null) {\n          return;\n        }\n\n        var axisValueLabel = axisPointerViewHelper.getValueLabel(axisValue, axisModel.axis, ecModel, axisItem.seriesDataIndices, axisItem.valueLabelOpt);\n        var axisSectionMarkup = createTooltipMarkup('section', {\n          header: axisValueLabel,\n          noHeader: !trim(axisValueLabel),\n          sortBlocks: true,\n          blocks: []\n        });\n        articleMarkup.blocks.push(axisSectionMarkup);\n        each(axisItem.seriesDataIndices, function (idxItem) {\n          var series = ecModel.getSeriesByIndex(idxItem.seriesIndex);\n          var dataIndex = idxItem.dataIndexInside;\n          var cbParams = series.getDataParams(dataIndex); // Can't find data.\n\n          if (cbParams.dataIndex < 0) {\n            return;\n          }\n\n          cbParams.axisDim = axisItem.axisDim;\n          cbParams.axisIndex = axisItem.axisIndex;\n          cbParams.axisType = axisItem.axisType;\n          cbParams.axisId = axisItem.axisId;\n          cbParams.axisValue = axisHelper.getAxisRawValue(axisModel.axis, {\n            value: axisValue\n          });\n          cbParams.axisValueLabel = axisValueLabel; // Pre-create marker style for makers. Users can assemble richText\n          // text in `formatter` callback and use those markers style.\n\n          cbParams.marker = markupStyleCreator.makeTooltipMarker('item', convertToColorString(cbParams.color), renderMode);\n          var seriesTooltipResult = normalizeTooltipFormatResult(series.formatTooltip(dataIndex, true, null));\n          var frag = seriesTooltipResult.frag;\n\n          if (frag) {\n            var valueFormatter = buildTooltipModel([series], globalTooltipModel).get('valueFormatter');\n            axisSectionMarkup.blocks.push(valueFormatter ? extend({\n              valueFormatter: valueFormatter\n            }, frag) : frag);\n          }\n\n          if (seriesTooltipResult.text) {\n            markupTextArrLegacy.push(seriesTooltipResult.text);\n          }\n\n          cbParamsList.push(cbParams);\n        });\n      });\n    }); // In most cases, the second axis is displays upper on the first one.\n    // So we reverse it to look better.\n\n    articleMarkup.blocks.reverse();\n    markupTextArrLegacy.reverse();\n    var positionExpr = e.position;\n    var orderMode = singleTooltipModel.get('order');\n    var builtMarkupText = buildTooltipMarkup(articleMarkup, markupStyleCreator, renderMode, orderMode, ecModel.get('useUTC'), singleTooltipModel.get('textStyle'));\n    builtMarkupText && markupTextArrLegacy.unshift(builtMarkupText);\n    var blockBreak = renderMode === 'richText' ? '\\n\\n' : '<br/>';\n    var allMarkupText = markupTextArrLegacy.join(blockBreak);\n\n    this._showOrMove(singleTooltipModel, function () {\n      if (this._updateContentNotChangedOnAxis(dataByCoordSys, cbParamsList)) {\n        this._updatePosition(singleTooltipModel, positionExpr, point[0], point[1], this._tooltipContent, cbParamsList);\n      } else {\n        this._showTooltipContent(singleTooltipModel, allMarkupText, cbParamsList, Math.random() + '', point[0], point[1], positionExpr, null, markupStyleCreator);\n      }\n    }); // Do not trigger events here, because this branch only be entered\n    // from dispatchAction.\n\n  };\n\n  TooltipView.prototype._showSeriesItemTooltip = function (e, dispatcher, dispatchAction) {\n    var ecModel = this._ecModel;\n    var ecData = getECData(dispatcher); // Use dataModel in element if possible\n    // Used when mouseover on a element like markPoint or edge\n    // In which case, the data is not main data in series.\n\n    var seriesIndex = ecData.seriesIndex;\n    var seriesModel = ecModel.getSeriesByIndex(seriesIndex); // For example, graph link.\n\n    var dataModel = ecData.dataModel || seriesModel;\n    var dataIndex = ecData.dataIndex;\n    var dataType = ecData.dataType;\n    var data = dataModel.getData(dataType);\n    var renderMode = this._renderMode;\n    var positionDefault = e.positionDefault;\n    var tooltipModel = buildTooltipModel([data.getItemModel(dataIndex), dataModel, seriesModel && (seriesModel.coordinateSystem || {}).model], this._tooltipModel, positionDefault ? {\n      position: positionDefault\n    } : null);\n    var tooltipTrigger = tooltipModel.get('trigger');\n\n    if (tooltipTrigger != null && tooltipTrigger !== 'item') {\n      return;\n    }\n\n    var params = dataModel.getDataParams(dataIndex, dataType);\n    var markupStyleCreator = new TooltipMarkupStyleCreator(); // Pre-create marker style for makers. Users can assemble richText\n    // text in `formatter` callback and use those markers style.\n\n    params.marker = markupStyleCreator.makeTooltipMarker('item', convertToColorString(params.color), renderMode);\n    var seriesTooltipResult = normalizeTooltipFormatResult(dataModel.formatTooltip(dataIndex, false, dataType));\n    var orderMode = tooltipModel.get('order');\n    var valueFormatter = tooltipModel.get('valueFormatter');\n    var frag = seriesTooltipResult.frag;\n    var markupText = frag ? buildTooltipMarkup(valueFormatter ? extend({\n      valueFormatter: valueFormatter\n    }, frag) : frag, markupStyleCreator, renderMode, orderMode, ecModel.get('useUTC'), tooltipModel.get('textStyle')) : seriesTooltipResult.text;\n    var asyncTicket = 'item_' + dataModel.name + '_' + dataIndex;\n\n    this._showOrMove(tooltipModel, function () {\n      this._showTooltipContent(tooltipModel, markupText, params, asyncTicket, e.offsetX, e.offsetY, e.position, e.target, markupStyleCreator);\n    }); // FIXME\n    // duplicated showtip if manuallyShowTip is called from dispatchAction.\n\n\n    dispatchAction({\n      type: 'showTip',\n      dataIndexInside: dataIndex,\n      dataIndex: data.getRawIndex(dataIndex),\n      seriesIndex: seriesIndex,\n      from: this.uid\n    });\n  };\n\n  TooltipView.prototype._showComponentItemTooltip = function (e, el, dispatchAction) {\n    var ecData = getECData(el);\n    var tooltipConfig = ecData.tooltipConfig;\n    var tooltipOpt = tooltipConfig.option || {};\n\n    if (isString(tooltipOpt)) {\n      var content = tooltipOpt;\n      tooltipOpt = {\n        content: content,\n        // Fixed formatter\n        formatter: content\n      };\n    }\n\n    var tooltipModelCascade = [tooltipOpt];\n\n    var cmpt = this._ecModel.getComponent(ecData.componentMainType, ecData.componentIndex);\n\n    if (cmpt) {\n      tooltipModelCascade.push(cmpt);\n    } // In most cases, component tooltip formatter has different params with series tooltip formatter,\n    // so that they cannot share the same formatter. Since the global tooltip formatter is used for series\n    // by convention, we do not use it as the default formatter for component.\n\n\n    tooltipModelCascade.push({\n      formatter: tooltipOpt.content\n    });\n    var positionDefault = e.positionDefault;\n    var subTooltipModel = buildTooltipModel(tooltipModelCascade, this._tooltipModel, positionDefault ? {\n      position: positionDefault\n    } : null);\n    var defaultHtml = subTooltipModel.get('content');\n    var asyncTicket = Math.random() + ''; // PENDING: this case do not support richText style yet.\n\n    var markupStyleCreator = new TooltipMarkupStyleCreator(); // Do not check whether `trigger` is 'none' here, because `trigger`\n    // only works on coordinate system. In fact, we have not found case\n    // that requires setting `trigger` nothing on component yet.\n\n    this._showOrMove(subTooltipModel, function () {\n      // Use formatterParams from element defined in component\n      // Avoid users modify it.\n      var formatterParams = clone(subTooltipModel.get('formatterParams') || {});\n\n      this._showTooltipContent(subTooltipModel, defaultHtml, formatterParams, asyncTicket, e.offsetX, e.offsetY, e.position, el, markupStyleCreator);\n    }); // If not dispatch showTip, tip may be hide triggered by axis.\n\n\n    dispatchAction({\n      type: 'showTip',\n      from: this.uid\n    });\n  };\n\n  TooltipView.prototype._showTooltipContent = function ( // Use Model<TooltipOption> insteadof TooltipModel because this model may be from series or other options.\n  // Instead of top level tooltip.\n  tooltipModel, defaultHtml, params, asyncTicket, x, y, positionExpr, el, markupStyleCreator) {\n    // Reset ticket\n    this._ticket = '';\n\n    if (!tooltipModel.get('showContent') || !tooltipModel.get('show')) {\n      return;\n    }\n\n    var tooltipContent = this._tooltipContent;\n    tooltipContent.setEnterable(tooltipModel.get('enterable'));\n    var formatter = tooltipModel.get('formatter');\n    positionExpr = positionExpr || tooltipModel.get('position');\n    var html = defaultHtml;\n\n    var nearPoint = this._getNearestPoint([x, y], params, tooltipModel.get('trigger'), tooltipModel.get('borderColor'));\n\n    var nearPointColor = nearPoint.color;\n\n    if (formatter) {\n      if (isString(formatter)) {\n        var useUTC = tooltipModel.ecModel.get('useUTC');\n        var params0 = isArray(params) ? params[0] : params;\n        var isTimeAxis = params0 && params0.axisType && params0.axisType.indexOf('time') >= 0;\n        html = formatter;\n\n        if (isTimeAxis) {\n          html = timeFormat(params0.axisValue, html, useUTC);\n        }\n\n        html = formatTpl(html, params, true);\n      } else if (isFunction(formatter)) {\n        var callback = bind(function (cbTicket, html) {\n          if (cbTicket === this._ticket) {\n            tooltipContent.setContent(html, markupStyleCreator, tooltipModel, nearPointColor, positionExpr);\n\n            this._updatePosition(tooltipModel, positionExpr, x, y, tooltipContent, params, el);\n          }\n        }, this);\n        this._ticket = asyncTicket;\n        html = formatter(params, asyncTicket, callback);\n      } else {\n        html = formatter;\n      }\n    }\n\n    tooltipContent.setContent(html, markupStyleCreator, tooltipModel, nearPointColor, positionExpr);\n    tooltipContent.show(tooltipModel, nearPointColor);\n\n    this._updatePosition(tooltipModel, positionExpr, x, y, tooltipContent, params, el);\n  };\n\n  TooltipView.prototype._getNearestPoint = function (point, tooltipDataParams, trigger, borderColor) {\n    if (trigger === 'axis' || isArray(tooltipDataParams)) {\n      return {\n        color: borderColor || (this._renderMode === 'html' ? '#fff' : 'none')\n      };\n    }\n\n    if (!isArray(tooltipDataParams)) {\n      return {\n        color: borderColor || tooltipDataParams.color || tooltipDataParams.borderColor\n      };\n    }\n  };\n\n  TooltipView.prototype._updatePosition = function (tooltipModel, positionExpr, x, // Mouse x\n  y, // Mouse y\n  content, params, el) {\n    var viewWidth = this._api.getWidth();\n\n    var viewHeight = this._api.getHeight();\n\n    positionExpr = positionExpr || tooltipModel.get('position');\n    var contentSize = content.getSize();\n    var align = tooltipModel.get('align');\n    var vAlign = tooltipModel.get('verticalAlign');\n    var rect = el && el.getBoundingRect().clone();\n    el && rect.applyTransform(el.transform);\n\n    if (isFunction(positionExpr)) {\n      // Callback of position can be an array or a string specify the position\n      positionExpr = positionExpr([x, y], params, content.el, rect, {\n        viewSize: [viewWidth, viewHeight],\n        contentSize: contentSize.slice()\n      });\n    }\n\n    if (isArray(positionExpr)) {\n      x = parsePercent(positionExpr[0], viewWidth);\n      y = parsePercent(positionExpr[1], viewHeight);\n    } else if (isObject(positionExpr)) {\n      var boxLayoutPosition = positionExpr;\n      boxLayoutPosition.width = contentSize[0];\n      boxLayoutPosition.height = contentSize[1];\n      var layoutRect = getLayoutRect(boxLayoutPosition, {\n        width: viewWidth,\n        height: viewHeight\n      });\n      x = layoutRect.x;\n      y = layoutRect.y;\n      align = null; // When positionExpr is left/top/right/bottom,\n      // align and verticalAlign will not work.\n\n      vAlign = null;\n    } // Specify tooltip position by string 'top' 'bottom' 'left' 'right' around graphic element\n    else if (isString(positionExpr) && el) {\n        var pos = calcTooltipPosition(positionExpr, rect, contentSize, tooltipModel.get('borderWidth'));\n        x = pos[0];\n        y = pos[1];\n      } else {\n        var pos = refixTooltipPosition(x, y, content, viewWidth, viewHeight, align ? null : 20, vAlign ? null : 20);\n        x = pos[0];\n        y = pos[1];\n      }\n\n    align && (x -= isCenterAlign(align) ? contentSize[0] / 2 : align === 'right' ? contentSize[0] : 0);\n    vAlign && (y -= isCenterAlign(vAlign) ? contentSize[1] / 2 : vAlign === 'bottom' ? contentSize[1] : 0);\n\n    if (shouldTooltipConfine(tooltipModel)) {\n      var pos = confineTooltipPosition(x, y, content, viewWidth, viewHeight);\n      x = pos[0];\n      y = pos[1];\n    }\n\n    content.moveTo(x, y);\n  }; // FIXME\n  // Should we remove this but leave this to user?\n\n\n  TooltipView.prototype._updateContentNotChangedOnAxis = function (dataByCoordSys, cbParamsList) {\n    var lastCoordSys = this._lastDataByCoordSys;\n    var lastCbParamsList = this._cbParamsList;\n    var contentNotChanged = !!lastCoordSys && lastCoordSys.length === dataByCoordSys.length;\n    contentNotChanged && each(lastCoordSys, function (lastItemCoordSys, indexCoordSys) {\n      var lastDataByAxis = lastItemCoordSys.dataByAxis || [];\n      var thisItemCoordSys = dataByCoordSys[indexCoordSys] || {};\n      var thisDataByAxis = thisItemCoordSys.dataByAxis || [];\n      contentNotChanged = contentNotChanged && lastDataByAxis.length === thisDataByAxis.length;\n      contentNotChanged && each(lastDataByAxis, function (lastItem, indexAxis) {\n        var thisItem = thisDataByAxis[indexAxis] || {};\n        var lastIndices = lastItem.seriesDataIndices || [];\n        var newIndices = thisItem.seriesDataIndices || [];\n        contentNotChanged = contentNotChanged && lastItem.value === thisItem.value && lastItem.axisType === thisItem.axisType && lastItem.axisId === thisItem.axisId && lastIndices.length === newIndices.length;\n        contentNotChanged && each(lastIndices, function (lastIdxItem, j) {\n          var newIdxItem = newIndices[j];\n          contentNotChanged = contentNotChanged && lastIdxItem.seriesIndex === newIdxItem.seriesIndex && lastIdxItem.dataIndex === newIdxItem.dataIndex;\n        }); // check is cbParams data value changed\n\n        lastCbParamsList && each(lastItem.seriesDataIndices, function (idxItem) {\n          var seriesIdx = idxItem.seriesIndex;\n          var cbParams = cbParamsList[seriesIdx];\n          var lastCbParams = lastCbParamsList[seriesIdx];\n\n          if (cbParams && lastCbParams && lastCbParams.data !== cbParams.data) {\n            contentNotChanged = false;\n          }\n        });\n      });\n    });\n    this._lastDataByCoordSys = dataByCoordSys;\n    this._cbParamsList = cbParamsList;\n    return !!contentNotChanged;\n  };\n\n  TooltipView.prototype._hide = function (dispatchAction) {\n    // Do not directly hideLater here, because this behavior may be prevented\n    // in dispatchAction when showTip is dispatched.\n    // FIXME\n    // duplicated hideTip if manuallyHideTip is called from dispatchAction.\n    this._lastDataByCoordSys = null;\n    dispatchAction({\n      type: 'hideTip',\n      from: this.uid\n    });\n  };\n\n  TooltipView.prototype.dispose = function (ecModel, api) {\n    if (env.node || !api.getDom()) {\n      return;\n    }\n\n    clear(this, '_updatePosition');\n\n    this._tooltipContent.dispose();\n\n    globalListener.unregister('itemTooltip', api);\n  };\n\n  TooltipView.type = 'tooltip';\n  return TooltipView;\n}(ComponentView);\n/**\r\n * From top to bottom. (the last one should be globalTooltipModel);\r\n */\n\n\nfunction buildTooltipModel(modelCascade, globalTooltipModel, defaultTooltipOption) {\n  // Last is always tooltip model.\n  var ecModel = globalTooltipModel.ecModel;\n  var resultModel;\n\n  if (defaultTooltipOption) {\n    resultModel = new Model(defaultTooltipOption, ecModel, ecModel);\n    resultModel = new Model(globalTooltipModel.option, resultModel, ecModel);\n  } else {\n    resultModel = globalTooltipModel;\n  }\n\n  for (var i = modelCascade.length - 1; i >= 0; i--) {\n    var tooltipOpt = modelCascade[i];\n\n    if (tooltipOpt) {\n      if (tooltipOpt instanceof Model) {\n        tooltipOpt = tooltipOpt.get('tooltip', true);\n      } // In each data item tooltip can be simply write:\n      // {\n      //  value: 10,\n      //  tooltip: 'Something you need to know'\n      // }\n\n\n      if (isString(tooltipOpt)) {\n        tooltipOpt = {\n          formatter: tooltipOpt\n        };\n      }\n\n      if (tooltipOpt) {\n        resultModel = new Model(tooltipOpt, resultModel, ecModel);\n      }\n    }\n  }\n\n  return resultModel;\n}\n\nfunction makeDispatchAction(payload, api) {\n  return payload.dispatchAction || bind(api.dispatchAction, api);\n}\n\nfunction refixTooltipPosition(x, y, content, viewWidth, viewHeight, gapH, gapV) {\n  var size = content.getSize();\n  var width = size[0];\n  var height = size[1];\n\n  if (gapH != null) {\n    // Add extra 2 pixels for this case:\n    // At present the \"values\" in default tooltip are using CSS `float: right`.\n    // When the right edge of the tooltip box is on the right side of the\n    // viewport, the `float` layout might push the \"values\" to the second line.\n    if (x + width + gapH + 2 > viewWidth) {\n      x -= width + gapH;\n    } else {\n      x += gapH;\n    }\n  }\n\n  if (gapV != null) {\n    if (y + height + gapV > viewHeight) {\n      y -= height + gapV;\n    } else {\n      y += gapV;\n    }\n  }\n\n  return [x, y];\n}\n\nfunction confineTooltipPosition(x, y, content, viewWidth, viewHeight) {\n  var size = content.getSize();\n  var width = size[0];\n  var height = size[1];\n  x = Math.min(x + width, viewWidth) - width;\n  y = Math.min(y + height, viewHeight) - height;\n  x = Math.max(x, 0);\n  y = Math.max(y, 0);\n  return [x, y];\n}\n\nfunction calcTooltipPosition(position, rect, contentSize, borderWidth) {\n  var domWidth = contentSize[0];\n  var domHeight = contentSize[1];\n  var offset = Math.ceil(Math.SQRT2 * borderWidth) + 8;\n  var x = 0;\n  var y = 0;\n  var rectWidth = rect.width;\n  var rectHeight = rect.height;\n\n  switch (position) {\n    case 'inside':\n      x = rect.x + rectWidth / 2 - domWidth / 2;\n      y = rect.y + rectHeight / 2 - domHeight / 2;\n      break;\n\n    case 'top':\n      x = rect.x + rectWidth / 2 - domWidth / 2;\n      y = rect.y - domHeight - offset;\n      break;\n\n    case 'bottom':\n      x = rect.x + rectWidth / 2 - domWidth / 2;\n      y = rect.y + rectHeight + offset;\n      break;\n\n    case 'left':\n      x = rect.x - domWidth - offset;\n      y = rect.y + rectHeight / 2 - domHeight / 2;\n      break;\n\n    case 'right':\n      x = rect.x + rectWidth + offset;\n      y = rect.y + rectHeight / 2 - domHeight / 2;\n  }\n\n  return [x, y];\n}\n\nfunction isCenterAlign(align) {\n  return align === 'center' || align === 'middle';\n}\n/**\r\n * Find target component by payload like:\r\n * ```js\r\n * { legendId: 'some_id', name: 'xxx' }\r\n * { toolboxIndex: 1, name: 'xxx' }\r\n * { geoName: 'some_name', name: 'xxx' }\r\n * ```\r\n * PENDING: at present only\r\n *\r\n * If not found, return null/undefined.\r\n */\n\n\nfunction findComponentReference(payload, ecModel, api) {\n  var queryOptionMap = preParseFinder(payload).queryOptionMap;\n  var componentMainType = queryOptionMap.keys()[0];\n\n  if (!componentMainType || componentMainType === 'series') {\n    return;\n  }\n\n  var queryResult = queryReferringComponents(ecModel, componentMainType, queryOptionMap.get(componentMainType), {\n    useDefault: false,\n    enableAll: false,\n    enableNone: false\n  });\n  var model = queryResult.models[0];\n\n  if (!model) {\n    return;\n  }\n\n  var view = api.getViewOfComponentModel(model);\n  var el;\n  view.group.traverse(function (subEl) {\n    var tooltipConfig = getECData(subEl).tooltipConfig;\n\n    if (tooltipConfig && tooltipConfig.name === payload.name) {\n      el = subEl;\n      return true; // stop\n    }\n  });\n\n  if (el) {\n    return {\n      componentMainType: componentMainType,\n      componentIndex: model.componentIndex,\n      el: el\n    };\n  }\n}\n\nexport default TooltipView;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport * as zrUtil from 'zrender/lib/core/util.js';\nimport { normalizeToArray } from '../../util/model.js';\nvar DEFAULT_TOOLBOX_BTNS = ['rect', 'polygon', 'keep', 'clear'];\nexport default function brushPreprocessor(option, isNew) {\n  var brushComponents = normalizeToArray(option ? option.brush : []);\n\n  if (!brushComponents.length) {\n    return;\n  }\n\n  var brushComponentSpecifiedBtns = [];\n  zrUtil.each(brushComponents, function (brushOpt) {\n    var tbs = brushOpt.hasOwnProperty('toolbox') ? brushOpt.toolbox : [];\n\n    if (tbs instanceof Array) {\n      brushComponentSpecifiedBtns = brushComponentSpecifiedBtns.concat(tbs);\n    }\n  });\n  var toolbox = option && option.toolbox;\n\n  if (zrUtil.isArray(toolbox)) {\n    toolbox = toolbox[0];\n  }\n\n  if (!toolbox) {\n    toolbox = {\n      feature: {}\n    };\n    option.toolbox = [toolbox];\n  }\n\n  var toolboxFeature = toolbox.feature || (toolbox.feature = {});\n  var toolboxBrush = toolboxFeature.brush || (toolboxFeature.brush = {});\n  var brushTypes = toolboxBrush.type || (toolboxBrush.type = []);\n  brushTypes.push.apply(brushTypes, brushComponentSpecifiedBtns);\n  removeDuplicate(brushTypes);\n\n  if (isNew && !brushTypes.length) {\n    brushTypes.push.apply(brushTypes, DEFAULT_TOOLBOX_BTNS);\n  }\n}\n\nfunction removeDuplicate(arr) {\n  var map = {};\n  zrUtil.each(arr, function (val) {\n    map[val] = 1;\n  });\n  arr.length = 0;\n  zrUtil.each(map, function (flag, val) {\n    arr.push(val);\n  });\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\n\n/**\r\n * @file Visual solution, for consistent option specification.\r\n */\nimport * as zrUtil from 'zrender/lib/core/util.js';\nimport VisualMapping from './VisualMapping.js';\nimport { getItemVisualFromData, setItemVisualFromData } from './helper.js';\nvar each = zrUtil.each;\n\nfunction hasKeys(obj) {\n  if (obj) {\n    for (var name_1 in obj) {\n      if (obj.hasOwnProperty(name_1)) {\n        return true;\n      }\n    }\n  }\n}\n\nexport function createVisualMappings(option, stateList, supplementVisualOption) {\n  var visualMappings = {};\n  each(stateList, function (state) {\n    var mappings = visualMappings[state] = createMappings();\n    each(option[state], function (visualData, visualType) {\n      if (!VisualMapping.isValidType(visualType)) {\n        return;\n      }\n\n      var mappingOption = {\n        type: visualType,\n        visual: visualData\n      };\n      supplementVisualOption && supplementVisualOption(mappingOption, state);\n      mappings[visualType] = new VisualMapping(mappingOption); // Prepare a alpha for opacity, for some case that opacity\n      // is not supported, such as rendering using gradient color.\n\n      if (visualType === 'opacity') {\n        mappingOption = zrUtil.clone(mappingOption);\n        mappingOption.type = 'colorAlpha';\n        mappings.__hidden.__alphaForOpacity = new VisualMapping(mappingOption);\n      }\n    });\n  });\n  return visualMappings;\n\n  function createMappings() {\n    var Creater = function () {}; // Make sure hidden fields will not be visited by\n    // object iteration (with hasOwnProperty checking).\n\n\n    Creater.prototype.__hidden = Creater.prototype;\n    var obj = new Creater();\n    return obj;\n  }\n}\nexport function replaceVisualOption(thisOption, newOption, keys) {\n  // Visual attributes merge is not supported, otherwise it\n  // brings overcomplicated merge logic. See #2853. So if\n  // newOption has anyone of these keys, all of these keys\n  // will be reset. Otherwise, all keys remain.\n  var has;\n  zrUtil.each(keys, function (key) {\n    if (newOption.hasOwnProperty(key) && hasKeys(newOption[key])) {\n      has = true;\n    }\n  });\n  has && zrUtil.each(keys, function (key) {\n    if (newOption.hasOwnProperty(key) && hasKeys(newOption[key])) {\n      thisOption[key] = zrUtil.clone(newOption[key]);\n    } else {\n      delete thisOption[key];\n    }\n  });\n}\n/**\r\n * @param stateList\r\n * @param visualMappings\r\n * @param list\r\n * @param getValueState param: valueOrIndex, return: state.\r\n * @param scope Scope for getValueState\r\n * @param dimension Concrete dimension, if used.\r\n */\n// ???! handle brush?\n\nexport function applyVisual(stateList, visualMappings, data, getValueState, scope, dimension) {\n  var visualTypesMap = {};\n  zrUtil.each(stateList, function (state) {\n    var visualTypes = VisualMapping.prepareVisualTypes(visualMappings[state]);\n    visualTypesMap[state] = visualTypes;\n  });\n  var dataIndex;\n\n  function getVisual(key) {\n    return getItemVisualFromData(data, dataIndex, key);\n  }\n\n  function setVisual(key, value) {\n    setItemVisualFromData(data, dataIndex, key, value);\n  }\n\n  if (dimension == null) {\n    data.each(eachItem);\n  } else {\n    data.each([dimension], eachItem);\n  }\n\n  function eachItem(valueOrIndex, index) {\n    dataIndex = dimension == null ? valueOrIndex // First argument is index\n    : index;\n    var rawDataItem = data.getRawDataItem(dataIndex); // Consider performance\n    // @ts-ignore\n\n    if (rawDataItem && rawDataItem.visualMap === false) {\n      return;\n    }\n\n    var valueState = getValueState.call(scope, valueOrIndex);\n    var mappings = visualMappings[valueState];\n    var visualTypes = visualTypesMap[valueState];\n\n    for (var i = 0, len = visualTypes.length; i < len; i++) {\n      var type = visualTypes[i];\n      mappings[type] && mappings[type].applyVisual(valueOrIndex, getVisual, setVisual);\n    }\n  }\n}\n/**\r\n * @param data\r\n * @param stateList\r\n * @param visualMappings <state, Object.<visualType, module:echarts/visual/VisualMapping>>\r\n * @param getValueState param: valueOrIndex, return: state.\r\n * @param dim dimension or dimension index.\r\n */\n\nexport function incrementalApplyVisual(stateList, visualMappings, getValueState, dim) {\n  var visualTypesMap = {};\n  zrUtil.each(stateList, function (state) {\n    var visualTypes = VisualMapping.prepareVisualTypes(visualMappings[state]);\n    visualTypesMap[state] = visualTypes;\n  });\n  return {\n    progress: function progress(params, data) {\n      var dimIndex;\n\n      if (dim != null) {\n        dimIndex = data.getDimensionIndex(dim);\n      }\n\n      function getVisual(key) {\n        return getItemVisualFromData(data, dataIndex, key);\n      }\n\n      function setVisual(key, value) {\n        setItemVisualFromData(data, dataIndex, key, value);\n      }\n\n      var dataIndex;\n      var store = data.getStore();\n\n      while ((dataIndex = params.next()) != null) {\n        var rawDataItem = data.getRawDataItem(dataIndex); // Consider performance\n        // @ts-ignore\n\n        if (rawDataItem && rawDataItem.visualMap === false) {\n          continue;\n        }\n\n        var value = dim != null ? store.get(dimIndex, dataIndex) : dataIndex;\n        var valueState = getValueState(value);\n        var mappings = visualMappings[valueState];\n        var visualTypes = visualTypesMap[valueState];\n\n        for (var i = 0, len = visualTypes.length; i < len; i++) {\n          var type = visualTypes[i];\n          mappings[type] && mappings[type].applyVisual(value, getVisual, setVisual);\n        }\n      }\n    }\n  };\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport * as polygonContain from 'zrender/lib/contain/polygon.js';\nimport BoundingRect from 'zrender/lib/core/BoundingRect.js';\nimport { linePolygonIntersect } from '../../util/graphic.js';\nexport function makeBrushCommonSelectorForSeries(area) {\n  var brushType = area.brushType; // Do not use function binding or curry for performance.\n\n  var selectors = {\n    point: function (itemLayout) {\n      return selector[brushType].point(itemLayout, selectors, area);\n    },\n    rect: function (itemLayout) {\n      return selector[brushType].rect(itemLayout, selectors, area);\n    }\n  };\n  return selectors;\n}\nvar selector = {\n  lineX: getLineSelectors(0),\n  lineY: getLineSelectors(1),\n  rect: {\n    point: function (itemLayout, selectors, area) {\n      return itemLayout && area.boundingRect.contain(itemLayout[0], itemLayout[1]);\n    },\n    rect: function (itemLayout, selectors, area) {\n      return itemLayout && area.boundingRect.intersect(itemLayout);\n    }\n  },\n  polygon: {\n    point: function (itemLayout, selectors, area) {\n      return itemLayout && area.boundingRect.contain(itemLayout[0], itemLayout[1]) && polygonContain.contain(area.range, itemLayout[0], itemLayout[1]);\n    },\n    rect: function (itemLayout, selectors, area) {\n      var points = area.range;\n\n      if (!itemLayout || points.length <= 1) {\n        return false;\n      }\n\n      var x = itemLayout.x;\n      var y = itemLayout.y;\n      var width = itemLayout.width;\n      var height = itemLayout.height;\n      var p = points[0];\n\n      if (polygonContain.contain(points, x, y) || polygonContain.contain(points, x + width, y) || polygonContain.contain(points, x, y + height) || polygonContain.contain(points, x + width, y + height) || BoundingRect.create(itemLayout).contain(p[0], p[1]) || linePolygonIntersect(x, y, x + width, y, points) || linePolygonIntersect(x, y, x, y + height, points) || linePolygonIntersect(x + width, y, x + width, y + height, points) || linePolygonIntersect(x, y + height, x + width, y + height, points)) {\n        return true;\n      }\n    }\n  }\n};\n\nfunction getLineSelectors(xyIndex) {\n  var xy = ['x', 'y'];\n  var wh = ['width', 'height'];\n  return {\n    point: function (itemLayout, selectors, area) {\n      if (itemLayout) {\n        var range = area.range;\n        var p = itemLayout[xyIndex];\n        return inLineRange(p, range);\n      }\n    },\n    rect: function (itemLayout, selectors, area) {\n      if (itemLayout) {\n        var range = area.range;\n        var layoutRange = [itemLayout[xy[xyIndex]], itemLayout[xy[xyIndex]] + itemLayout[wh[xyIndex]]];\n        layoutRange[1] < layoutRange[0] && layoutRange.reverse();\n        return inLineRange(layoutRange[0], range) || inLineRange(layoutRange[1], range) || inLineRange(range[0], layoutRange) || inLineRange(range[1], layoutRange);\n      }\n    }\n  };\n}\n\nfunction inLineRange(p, range) {\n  return range[0] <= p && p <= range[1];\n}\n\nexport default selector;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport * as zrUtil from 'zrender/lib/core/util.js';\nimport BoundingRect from 'zrender/lib/core/BoundingRect.js';\nimport * as visualSolution from '../../visual/visualSolution.js';\nimport { makeBrushCommonSelectorForSeries } from './selector.js';\nimport * as throttleUtil from '../../util/throttle.js';\nimport BrushTargetManager from '../helper/BrushTargetManager.js';\nvar STATE_LIST = ['inBrush', 'outOfBrush'];\nvar DISPATCH_METHOD = '__ecBrushSelect';\nvar DISPATCH_FLAG = '__ecInBrushSelectEvent';\n;\nexport function layoutCovers(ecModel) {\n  ecModel.eachComponent({\n    mainType: 'brush'\n  }, function (brushModel) {\n    var brushTargetManager = brushModel.brushTargetManager = new BrushTargetManager(brushModel.option, ecModel);\n    brushTargetManager.setInputRanges(brushModel.areas, ecModel);\n  });\n}\n/**\r\n * Register the visual encoding if this modules required.\r\n */\n\nexport default function brushVisual(ecModel, api, payload) {\n  var brushSelected = [];\n  var throttleType;\n  var throttleDelay;\n  ecModel.eachComponent({\n    mainType: 'brush'\n  }, function (brushModel) {\n    payload && payload.type === 'takeGlobalCursor' && brushModel.setBrushOption(payload.key === 'brush' ? payload.brushOption : {\n      brushType: false\n    });\n  });\n  layoutCovers(ecModel);\n  ecModel.eachComponent({\n    mainType: 'brush'\n  }, function (brushModel, brushIndex) {\n    var thisBrushSelected = {\n      brushId: brushModel.id,\n      brushIndex: brushIndex,\n      brushName: brushModel.name,\n      areas: zrUtil.clone(brushModel.areas),\n      selected: []\n    }; // Every brush component exists in event params, convenient\n    // for user to find by index.\n\n    brushSelected.push(thisBrushSelected);\n    var brushOption = brushModel.option;\n    var brushLink = brushOption.brushLink;\n    var linkedSeriesMap = [];\n    var selectedDataIndexForLink = [];\n    var rangeInfoBySeries = [];\n    var hasBrushExists = false;\n\n    if (!brushIndex) {\n      // Only the first throttle setting works.\n      throttleType = brushOption.throttleType;\n      throttleDelay = brushOption.throttleDelay;\n    } // Add boundingRect and selectors to range.\n\n\n    var areas = zrUtil.map(brushModel.areas, function (area) {\n      var builder = boundingRectBuilders[area.brushType];\n      var selectableArea = zrUtil.defaults({\n        boundingRect: builder ? builder(area) : void 0\n      }, area);\n      selectableArea.selectors = makeBrushCommonSelectorForSeries(selectableArea);\n      return selectableArea;\n    });\n    var visualMappings = visualSolution.createVisualMappings(brushModel.option, STATE_LIST, function (mappingOption) {\n      mappingOption.mappingMethod = 'fixed';\n    });\n    zrUtil.isArray(brushLink) && zrUtil.each(brushLink, function (seriesIndex) {\n      linkedSeriesMap[seriesIndex] = 1;\n    });\n\n    function linkOthers(seriesIndex) {\n      return brushLink === 'all' || !!linkedSeriesMap[seriesIndex];\n    } // If no supported brush or no brush on the series,\n    // all visuals should be in original state.\n\n\n    function brushed(rangeInfoList) {\n      return !!rangeInfoList.length;\n    }\n    /**\r\n     * Logic for each series: (If the logic has to be modified one day, do it carefully!)\r\n     *\r\n     * ( brushed ┬ && ┬hasBrushExist ┬ && linkOthers  ) => StepA: ┬record, ┬ StepB: ┬visualByRecord.\r\n     *   !brushed┘    ├hasBrushExist ┤                            └nothing,┘        ├visualByRecord.\r\n     *                └!hasBrushExist┘                                              └nothing.\r\n     * ( !brushed  && ┬hasBrushExist ┬ && linkOthers  ) => StepA:  nothing,  StepB: ┬visualByRecord.\r\n     *                └!hasBrushExist┘                                              └nothing.\r\n     * ( brushed ┬ &&                     !linkOthers ) => StepA:  nothing,  StepB: ┬visualByCheck.\r\n     *   !brushed┘                                                                  └nothing.\r\n     * ( !brushed  &&                     !linkOthers ) => StepA:  nothing,  StepB:  nothing.\r\n     */\n    // Step A\n\n\n    ecModel.eachSeries(function (seriesModel, seriesIndex) {\n      var rangeInfoList = rangeInfoBySeries[seriesIndex] = [];\n      seriesModel.subType === 'parallel' ? stepAParallel(seriesModel, seriesIndex) : stepAOthers(seriesModel, seriesIndex, rangeInfoList);\n    });\n\n    function stepAParallel(seriesModel, seriesIndex) {\n      var coordSys = seriesModel.coordinateSystem;\n      hasBrushExists = hasBrushExists || coordSys.hasAxisBrushed();\n      linkOthers(seriesIndex) && coordSys.eachActiveState(seriesModel.getData(), function (activeState, dataIndex) {\n        activeState === 'active' && (selectedDataIndexForLink[dataIndex] = 1);\n      });\n    }\n\n    function stepAOthers(seriesModel, seriesIndex, rangeInfoList) {\n      if (!seriesModel.brushSelector || brushModelNotControll(brushModel, seriesIndex)) {\n        return;\n      }\n\n      zrUtil.each(areas, function (area) {\n        if (brushModel.brushTargetManager.controlSeries(area, seriesModel, ecModel)) {\n          rangeInfoList.push(area);\n        }\n\n        hasBrushExists = hasBrushExists || brushed(rangeInfoList);\n      });\n\n      if (linkOthers(seriesIndex) && brushed(rangeInfoList)) {\n        var data_1 = seriesModel.getData();\n        data_1.each(function (dataIndex) {\n          if (checkInRange(seriesModel, rangeInfoList, data_1, dataIndex)) {\n            selectedDataIndexForLink[dataIndex] = 1;\n          }\n        });\n      }\n    } // Step B\n\n\n    ecModel.eachSeries(function (seriesModel, seriesIndex) {\n      var seriesBrushSelected = {\n        seriesId: seriesModel.id,\n        seriesIndex: seriesIndex,\n        seriesName: seriesModel.name,\n        dataIndex: []\n      }; // Every series exists in event params, convenient\n      // for user to find series by seriesIndex.\n\n      thisBrushSelected.selected.push(seriesBrushSelected);\n      var rangeInfoList = rangeInfoBySeries[seriesIndex];\n      var data = seriesModel.getData();\n      var getValueState = linkOthers(seriesIndex) ? function (dataIndex) {\n        return selectedDataIndexForLink[dataIndex] ? (seriesBrushSelected.dataIndex.push(data.getRawIndex(dataIndex)), 'inBrush') : 'outOfBrush';\n      } : function (dataIndex) {\n        return checkInRange(seriesModel, rangeInfoList, data, dataIndex) ? (seriesBrushSelected.dataIndex.push(data.getRawIndex(dataIndex)), 'inBrush') : 'outOfBrush';\n      }; // If no supported brush or no brush, all visuals are in original state.\n\n      (linkOthers(seriesIndex) ? hasBrushExists : brushed(rangeInfoList)) && visualSolution.applyVisual(STATE_LIST, visualMappings, data, getValueState);\n    });\n  });\n  dispatchAction(api, throttleType, throttleDelay, brushSelected, payload);\n}\n;\n\nfunction dispatchAction(api, throttleType, throttleDelay, brushSelected, payload) {\n  // This event will not be triggered when `setOpion`, otherwise dead lock may\n  // triggered when do `setOption` in event listener, which we do not find\n  // satisfactory way to solve yet. Some considered resolutions:\n  // (a) Diff with prevoius selected data ant only trigger event when changed.\n  // But store previous data and diff precisely (i.e., not only by dataIndex, but\n  // also detect value changes in selected data) might bring complexity or fragility.\n  // (b) Use spectial param like `silent` to suppress event triggering.\n  // But such kind of volatile param may be weird in `setOption`.\n  if (!payload) {\n    return;\n  }\n\n  var zr = api.getZr();\n\n  if (zr[DISPATCH_FLAG]) {\n    return;\n  }\n\n  if (!zr[DISPATCH_METHOD]) {\n    zr[DISPATCH_METHOD] = doDispatch;\n  }\n\n  var fn = throttleUtil.createOrUpdate(zr, DISPATCH_METHOD, throttleDelay, throttleType);\n  fn(api, brushSelected);\n}\n\nfunction doDispatch(api, brushSelected) {\n  if (!api.isDisposed()) {\n    var zr = api.getZr();\n    zr[DISPATCH_FLAG] = true;\n    api.dispatchAction({\n      type: 'brushSelect',\n      batch: brushSelected\n    });\n    zr[DISPATCH_FLAG] = false;\n  }\n}\n\nfunction checkInRange(seriesModel, rangeInfoList, data, dataIndex) {\n  for (var i = 0, len = rangeInfoList.length; i < len; i++) {\n    var area = rangeInfoList[i];\n\n    if (seriesModel.brushSelector(dataIndex, data, area.selectors, area)) {\n      return true;\n    }\n  }\n}\n\nfunction brushModelNotControll(brushModel, seriesIndex) {\n  var seriesIndices = brushModel.option.seriesIndex;\n  return seriesIndices != null && seriesIndices !== 'all' && (zrUtil.isArray(seriesIndices) ? zrUtil.indexOf(seriesIndices, seriesIndex) < 0 : seriesIndex !== seriesIndices);\n}\n\nvar boundingRectBuilders = {\n  rect: function (area) {\n    return getBoundingRectFromMinMax(area.range);\n  },\n  polygon: function (area) {\n    var minMax;\n    var range = area.range;\n\n    for (var i = 0, len = range.length; i < len; i++) {\n      minMax = minMax || [[Infinity, -Infinity], [Infinity, -Infinity]];\n      var rg = range[i];\n      rg[0] < minMax[0][0] && (minMax[0][0] = rg[0]);\n      rg[0] > minMax[0][1] && (minMax[0][1] = rg[0]);\n      rg[1] < minMax[1][0] && (minMax[1][0] = rg[1]);\n      rg[1] > minMax[1][1] && (minMax[1][1] = rg[1]);\n    }\n\n    return minMax && getBoundingRectFromMinMax(minMax);\n  }\n};\n\nfunction getBoundingRectFromMinMax(minMax) {\n  return new BoundingRect(minMax[0][0], minMax[1][0], minMax[0][1] - minMax[0][0], minMax[1][1] - minMax[1][0]);\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { __extends } from \"tslib\";\nimport * as zrUtil from 'zrender/lib/core/util.js';\nimport BrushController from '../helper/BrushController.js';\nimport { layoutCovers } from './visualEncoding.js';\nimport ComponentView from '../../view/Component.js';\n\nvar BrushView =\n/** @class */\nfunction (_super) {\n  __extends(BrushView, _super);\n\n  function BrushView() {\n    var _this = _super !== null && _super.apply(this, arguments) || this;\n\n    _this.type = BrushView.type;\n    return _this;\n  }\n\n  BrushView.prototype.init = function (ecModel, api) {\n    this.ecModel = ecModel;\n    this.api = api;\n    this.model;\n    (this._brushController = new BrushController(api.getZr())).on('brush', zrUtil.bind(this._onBrush, this)).mount();\n  };\n\n  BrushView.prototype.render = function (brushModel, ecModel, api, payload) {\n    this.model = brushModel;\n\n    this._updateController(brushModel, ecModel, api, payload);\n  };\n\n  BrushView.prototype.updateTransform = function (brushModel, ecModel, api, payload) {\n    // PENDING: `updateTransform` is a little tricky, whose layout need\n    // to be calculate mandatorily and other stages will not be performed.\n    // Take care the correctness of the logic. See #11754 .\n    layoutCovers(ecModel);\n\n    this._updateController(brushModel, ecModel, api, payload);\n  };\n\n  BrushView.prototype.updateVisual = function (brushModel, ecModel, api, payload) {\n    this.updateTransform(brushModel, ecModel, api, payload);\n  };\n\n  BrushView.prototype.updateView = function (brushModel, ecModel, api, payload) {\n    this._updateController(brushModel, ecModel, api, payload);\n  };\n\n  BrushView.prototype._updateController = function (brushModel, ecModel, api, payload) {\n    // Do not update controller when drawing.\n    (!payload || payload.$from !== brushModel.id) && this._brushController.setPanels(brushModel.brushTargetManager.makePanelOpts(api)).enableBrush(brushModel.brushOption).updateCovers(brushModel.areas.slice());\n  }; // updateLayout: updateController,\n  // updateVisual: updateController,\n\n\n  BrushView.prototype.dispose = function () {\n    this._brushController.dispose();\n  };\n\n  BrushView.prototype._onBrush = function (eventParam) {\n    var modelId = this.model.id;\n    var areas = this.model.brushTargetManager.setOutputRanges(eventParam.areas, this.ecModel); // Action is not dispatched on drag end, because the drag end\n    // emits the same params with the last drag move event, and\n    // may have some delay when using touch pad, which makes\n    // animation not smooth (when using debounce).\n\n    (!eventParam.isEnd || eventParam.removeOnClick) && this.api.dispatchAction({\n      type: 'brush',\n      brushId: modelId,\n      areas: zrUtil.clone(areas),\n      $from: modelId\n    });\n    eventParam.isEnd && this.api.dispatchAction({\n      type: 'brushEnd',\n      brushId: modelId,\n      areas: zrUtil.clone(areas),\n      $from: modelId\n    });\n  };\n\n  BrushView.type = 'brush';\n  return BrushView;\n}(ComponentView);\n\nexport default BrushView;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { __extends } from \"tslib\";\nimport * as zrUtil from 'zrender/lib/core/util.js';\nimport * as visualSolution from '../../visual/visualSolution.js';\nimport Model from '../../model/Model.js';\nimport ComponentModel from '../../model/Component.js';\nvar DEFAULT_OUT_OF_BRUSH_COLOR = '#ddd';\n\nvar BrushModel =\n/** @class */\nfunction (_super) {\n  __extends(BrushModel, _super);\n\n  function BrushModel() {\n    var _this = _super !== null && _super.apply(this, arguments) || this;\n\n    _this.type = BrushModel.type;\n    /**\r\n     * @readOnly\r\n     */\n\n    _this.areas = [];\n    /**\r\n     * Current brush painting area settings.\r\n     * @readOnly\r\n     */\n\n    _this.brushOption = {};\n    return _this;\n  }\n\n  BrushModel.prototype.optionUpdated = function (newOption, isInit) {\n    var thisOption = this.option;\n    !isInit && visualSolution.replaceVisualOption(thisOption, newOption, ['inBrush', 'outOfBrush']);\n    var inBrush = thisOption.inBrush = thisOption.inBrush || {}; // Always give default visual, consider setOption at the second time.\n\n    thisOption.outOfBrush = thisOption.outOfBrush || {\n      color: DEFAULT_OUT_OF_BRUSH_COLOR\n    };\n\n    if (!inBrush.hasOwnProperty('liftZ')) {\n      // Bigger than the highlight z lift, otherwise it will\n      // be effected by the highlight z when brush.\n      inBrush.liftZ = 5;\n    }\n  };\n  /**\r\n   * If `areas` is null/undefined, range state remain.\r\n   */\n\n\n  BrushModel.prototype.setAreas = function (areas) {\n    if (process.env.NODE_ENV !== 'production') {\n      zrUtil.assert(zrUtil.isArray(areas));\n      zrUtil.each(areas, function (area) {\n        zrUtil.assert(area.brushType, 'Illegal areas');\n      });\n    } // If areas is null/undefined, range state remain.\n    // This helps user to dispatchAction({type: 'brush'}) with no areas\n    // set but just want to get the current brush select info from a `brush` event.\n\n\n    if (!areas) {\n      return;\n    }\n\n    this.areas = zrUtil.map(areas, function (area) {\n      return generateBrushOption(this.option, area);\n    }, this);\n  };\n  /**\r\n   * Set the current painting brush option.\r\n   */\n\n\n  BrushModel.prototype.setBrushOption = function (brushOption) {\n    this.brushOption = generateBrushOption(this.option, brushOption);\n    this.brushType = this.brushOption.brushType;\n  };\n\n  BrushModel.type = 'brush';\n  BrushModel.dependencies = ['geo', 'grid', 'xAxis', 'yAxis', 'parallel', 'series'];\n  BrushModel.defaultOption = {\n    seriesIndex: 'all',\n    brushType: 'rect',\n    brushMode: 'single',\n    transformable: true,\n    brushStyle: {\n      borderWidth: 1,\n      color: 'rgba(210,219,238,0.3)',\n      borderColor: '#D2DBEE'\n    },\n    throttleType: 'fixRate',\n    throttleDelay: 0,\n    removeOnClick: true,\n    z: 10000\n  };\n  return BrushModel;\n}(ComponentModel);\n\nfunction generateBrushOption(option, brushOption) {\n  return zrUtil.merge({\n    brushType: option.brushType,\n    brushMode: option.brushMode,\n    transformable: option.transformable,\n    brushStyle: new Model(option.brushStyle).getItemStyle(),\n    removeOnClick: option.removeOnClick,\n    z: option.z\n  }, brushOption, true);\n}\n\nexport default BrushModel;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { __extends } from \"tslib\";\nimport * as zrUtil from 'zrender/lib/core/util.js';\nimport { ToolboxFeature } from '../featureManager.js';\nvar ICON_TYPES = ['rect', 'polygon', 'lineX', 'lineY', 'keep', 'clear'];\n\nvar BrushFeature =\n/** @class */\nfunction (_super) {\n  __extends(BrushFeature, _super);\n\n  function BrushFeature() {\n    return _super !== null && _super.apply(this, arguments) || this;\n  }\n\n  BrushFeature.prototype.render = function (featureModel, ecModel, api) {\n    var brushType;\n    var brushMode;\n    var isBrushed;\n    ecModel.eachComponent({\n      mainType: 'brush'\n    }, function (brushModel) {\n      brushType = brushModel.brushType;\n      brushMode = brushModel.brushOption.brushMode || 'single';\n      isBrushed = isBrushed || !!brushModel.areas.length;\n    });\n    this._brushType = brushType;\n    this._brushMode = brushMode;\n    zrUtil.each(featureModel.get('type', true), function (type) {\n      featureModel.setIconStatus(type, (type === 'keep' ? brushMode === 'multiple' : type === 'clear' ? isBrushed : type === brushType) ? 'emphasis' : 'normal');\n    });\n  };\n\n  BrushFeature.prototype.updateView = function (featureModel, ecModel, api) {\n    this.render(featureModel, ecModel, api);\n  };\n\n  BrushFeature.prototype.getIcons = function () {\n    var model = this.model;\n    var availableIcons = model.get('icon', true);\n    var icons = {};\n    zrUtil.each(model.get('type', true), function (type) {\n      if (availableIcons[type]) {\n        icons[type] = availableIcons[type];\n      }\n    });\n    return icons;\n  };\n\n  ;\n\n  BrushFeature.prototype.onclick = function (ecModel, api, type) {\n    var brushType = this._brushType;\n    var brushMode = this._brushMode;\n\n    if (type === 'clear') {\n      // Trigger parallel action firstly\n      api.dispatchAction({\n        type: 'axisAreaSelect',\n        intervals: []\n      });\n      api.dispatchAction({\n        type: 'brush',\n        command: 'clear',\n        // Clear all areas of all brush components.\n        areas: []\n      });\n    } else {\n      api.dispatchAction({\n        type: 'takeGlobalCursor',\n        key: 'brush',\n        brushOption: {\n          brushType: type === 'keep' ? brushType : brushType === type ? false : type,\n          brushMode: type === 'keep' ? brushMode === 'multiple' ? 'single' : 'multiple' : brushMode\n        }\n      });\n    }\n  };\n\n  ;\n\n  BrushFeature.getDefaultOption = function (ecModel) {\n    var defaultOption = {\n      show: true,\n      type: ICON_TYPES.slice(),\n      icon: {\n        /* eslint-disable */\n        rect: 'M7.3,34.7 M0.4,10V-0.2h9.8 M89.6,10V-0.2h-9.8 M0.4,60v10.2h9.8 M89.6,60v10.2h-9.8 M12.3,22.4V10.5h13.1 M33.6,10.5h7.8 M49.1,10.5h7.8 M77.5,22.4V10.5h-13 M12.3,31.1v8.2 M77.7,31.1v8.2 M12.3,47.6v11.9h13.1 M33.6,59.5h7.6 M49.1,59.5 h7.7 M77.5,47.6v11.9h-13',\n        polygon: 'M55.2,34.9c1.7,0,3.1,1.4,3.1,3.1s-1.4,3.1-3.1,3.1 s-3.1-1.4-3.1-3.1S53.5,34.9,55.2,34.9z M50.4,51c1.7,0,3.1,1.4,3.1,3.1c0,1.7-1.4,3.1-3.1,3.1c-1.7,0-3.1-1.4-3.1-3.1 C47.3,52.4,48.7,51,50.4,51z M55.6,37.1l1.5-7.8 M60.1,13.5l1.6-8.7l-7.8,4 M59,19l-1,5.3 M24,16.1l6.4,4.9l6.4-3.3 M48.5,11.6 l-5.9,3.1 M19.1,12.8L9.7,5.1l1.1,7.7 M13.4,29.8l1,7.3l6.6,1.6 M11.6,18.4l1,6.1 M32.8,41.9 M26.6,40.4 M27.3,40.2l6.1,1.6 M49.9,52.1l-5.6-7.6l-4.9-1.2',\n        lineX: 'M15.2,30 M19.7,15.6V1.9H29 M34.8,1.9H40.4 M55.3,15.6V1.9H45.9 M19.7,44.4V58.1H29 M34.8,58.1H40.4 M55.3,44.4 V58.1H45.9 M12.5,20.3l-9.4,9.6l9.6,9.8 M3.1,29.9h16.5 M62.5,20.3l9.4,9.6L62.3,39.7 M71.9,29.9H55.4',\n        lineY: 'M38.8,7.7 M52.7,12h13.2v9 M65.9,26.6V32 M52.7,46.3h13.2v-9 M24.9,12H11.8v9 M11.8,26.6V32 M24.9,46.3H11.8v-9 M48.2,5.1l-9.3-9l-9.4,9.2 M38.9-3.9V12 M48.2,53.3l-9.3,9l-9.4-9.2 M38.9,62.3V46.4',\n        keep: 'M4,10.5V1h10.3 M20.7,1h6.1 M33,1h6.1 M55.4,10.5V1H45.2 M4,17.3v6.6 M55.6,17.3v6.6 M4,30.5V40h10.3 M20.7,40 h6.1 M33,40h6.1 M55.4,30.5V40H45.2 M21,18.9h62.9v48.6H21V18.9z',\n        clear: 'M22,14.7l30.9,31 M52.9,14.7L22,45.7 M4.7,16.8V4.2h13.1 M26,4.2h7.8 M41.6,4.2h7.8 M70.3,16.8V4.2H57.2 M4.7,25.9v8.6 M70.3,25.9v8.6 M4.7,43.2v12.6h13.1 M26,55.8h7.8 M41.6,55.8h7.8 M70.3,43.2v12.6H57.2' // jshint ignore:line\n\n        /* eslint-enable */\n\n      },\n      // `rect`, `polygon`, `lineX`, `lineY`, `keep`, `clear`\n      title: ecModel.getLocaleModel().get(['toolbox', 'brush', 'title'])\n    };\n    return defaultOption;\n  };\n\n  return BrushFeature;\n}(ToolboxFeature);\n\nexport default BrushFeature;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { __extends } from \"tslib\";\nimport * as zrUtil from 'zrender/lib/core/util.js';\nimport * as graphic from '../../util/graphic.js';\nimport { getECData } from '../../util/innerStore.js';\nimport { createTextStyle } from '../../label/labelStyle.js';\nimport { getLayoutRect } from '../../util/layout.js';\nimport ComponentModel from '../../model/Component.js';\nimport ComponentView from '../../view/Component.js';\nimport { windowOpen } from '../../util/format.js';\n\nvar TitleModel =\n/** @class */\nfunction (_super) {\n  __extends(TitleModel, _super);\n\n  function TitleModel() {\n    var _this = _super !== null && _super.apply(this, arguments) || this;\n\n    _this.type = TitleModel.type;\n    _this.layoutMode = {\n      type: 'box',\n      ignoreSize: true\n    };\n    return _this;\n  }\n\n  TitleModel.type = 'title';\n  TitleModel.defaultOption = {\n    // zlevel: 0,\n    z: 6,\n    show: true,\n    text: '',\n    target: 'blank',\n    subtext: '',\n    subtarget: 'blank',\n    left: 0,\n    top: 0,\n    backgroundColor: 'rgba(0,0,0,0)',\n    borderColor: '#ccc',\n    borderWidth: 0,\n    padding: 5,\n    itemGap: 10,\n    textStyle: {\n      fontSize: 18,\n      fontWeight: 'bold',\n      color: '#464646'\n    },\n    subtextStyle: {\n      fontSize: 12,\n      color: '#6E7079'\n    }\n  };\n  return TitleModel;\n}(ComponentModel); // View\n\n\nvar TitleView =\n/** @class */\nfunction (_super) {\n  __extends(TitleView, _super);\n\n  function TitleView() {\n    var _this = _super !== null && _super.apply(this, arguments) || this;\n\n    _this.type = TitleView.type;\n    return _this;\n  }\n\n  TitleView.prototype.render = function (titleModel, ecModel, api) {\n    this.group.removeAll();\n\n    if (!titleModel.get('show')) {\n      return;\n    }\n\n    var group = this.group;\n    var textStyleModel = titleModel.getModel('textStyle');\n    var subtextStyleModel = titleModel.getModel('subtextStyle');\n    var textAlign = titleModel.get('textAlign');\n    var textVerticalAlign = zrUtil.retrieve2(titleModel.get('textBaseline'), titleModel.get('textVerticalAlign'));\n    var textEl = new graphic.Text({\n      style: createTextStyle(textStyleModel, {\n        text: titleModel.get('text'),\n        fill: textStyleModel.getTextColor()\n      }, {\n        disableBox: true\n      }),\n      z2: 10\n    });\n    var textRect = textEl.getBoundingRect();\n    var subText = titleModel.get('subtext');\n    var subTextEl = new graphic.Text({\n      style: createTextStyle(subtextStyleModel, {\n        text: subText,\n        fill: subtextStyleModel.getTextColor(),\n        y: textRect.height + titleModel.get('itemGap'),\n        verticalAlign: 'top'\n      }, {\n        disableBox: true\n      }),\n      z2: 10\n    });\n    var link = titleModel.get('link');\n    var sublink = titleModel.get('sublink');\n    var triggerEvent = titleModel.get('triggerEvent', true);\n    textEl.silent = !link && !triggerEvent;\n    subTextEl.silent = !sublink && !triggerEvent;\n\n    if (link) {\n      textEl.on('click', function () {\n        windowOpen(link, '_' + titleModel.get('target'));\n      });\n    }\n\n    if (sublink) {\n      subTextEl.on('click', function () {\n        windowOpen(sublink, '_' + titleModel.get('subtarget'));\n      });\n    }\n\n    getECData(textEl).eventData = getECData(subTextEl).eventData = triggerEvent ? {\n      componentType: 'title',\n      componentIndex: titleModel.componentIndex\n    } : null;\n    group.add(textEl);\n    subText && group.add(subTextEl); // If no subText, but add subTextEl, there will be an empty line.\n\n    var groupRect = group.getBoundingRect();\n    var layoutOption = titleModel.getBoxLayoutParams();\n    layoutOption.width = groupRect.width;\n    layoutOption.height = groupRect.height;\n    var layoutRect = getLayoutRect(layoutOption, {\n      width: api.getWidth(),\n      height: api.getHeight()\n    }, titleModel.get('padding')); // Adjust text align based on position\n\n    if (!textAlign) {\n      // Align left if title is on the left. center and right is same\n      textAlign = titleModel.get('left') || titleModel.get('right'); // @ts-ignore\n\n      if (textAlign === 'middle') {\n        textAlign = 'center';\n      } // Adjust layout by text align\n\n\n      if (textAlign === 'right') {\n        layoutRect.x += layoutRect.width;\n      } else if (textAlign === 'center') {\n        layoutRect.x += layoutRect.width / 2;\n      }\n    }\n\n    if (!textVerticalAlign) {\n      textVerticalAlign = titleModel.get('top') || titleModel.get('bottom'); // @ts-ignore\n\n      if (textVerticalAlign === 'center') {\n        textVerticalAlign = 'middle';\n      }\n\n      if (textVerticalAlign === 'bottom') {\n        layoutRect.y += layoutRect.height;\n      } else if (textVerticalAlign === 'middle') {\n        layoutRect.y += layoutRect.height / 2;\n      }\n\n      textVerticalAlign = textVerticalAlign || 'top';\n    }\n\n    group.x = layoutRect.x;\n    group.y = layoutRect.y;\n    group.markRedraw();\n    var alignStyle = {\n      align: textAlign,\n      verticalAlign: textVerticalAlign\n    };\n    textEl.setStyle(alignStyle);\n    subTextEl.setStyle(alignStyle); // Render background\n    // Get groupRect again because textAlign has been changed\n\n    groupRect = group.getBoundingRect();\n    var padding = layoutRect.margin;\n    var style = titleModel.getItemStyle(['color', 'opacity']);\n    style.fill = titleModel.get('backgroundColor');\n    var rect = new graphic.Rect({\n      shape: {\n        x: groupRect.x - padding[3],\n        y: groupRect.y - padding[0],\n        width: groupRect.width + padding[1] + padding[3],\n        height: groupRect.height + padding[0] + padding[2],\n        r: titleModel.get('borderRadius')\n      },\n      style: style,\n      subPixelOptimize: true,\n      silent: true\n    });\n    group.add(rect);\n  };\n\n  TitleView.type = 'title';\n  return TitleView;\n}(ComponentView);\n\nexport function install(registers) {\n  registers.registerComponentModel(TitleModel);\n  registers.registerComponentView(TitleView);\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { __extends } from \"tslib\";\nimport ComponentModel from '../../model/Component.js';\nimport SeriesData from '../../data/SeriesData.js';\nimport { each, isObject, clone } from 'zrender/lib/core/util.js';\nimport { convertOptionIdName, getDataItemValue } from '../../util/model.js';\n\nvar TimelineModel =\n/** @class */\nfunction (_super) {\n  __extends(TimelineModel, _super);\n\n  function TimelineModel() {\n    var _this = _super !== null && _super.apply(this, arguments) || this;\n\n    _this.type = TimelineModel.type;\n    _this.layoutMode = 'box';\n    return _this;\n  }\n  /**\r\n   * @override\r\n   */\n\n\n  TimelineModel.prototype.init = function (option, parentModel, ecModel) {\n    this.mergeDefaultAndTheme(option, ecModel);\n\n    this._initData();\n  };\n  /**\r\n   * @override\r\n   */\n\n\n  TimelineModel.prototype.mergeOption = function (option) {\n    _super.prototype.mergeOption.apply(this, arguments);\n\n    this._initData();\n  };\n\n  TimelineModel.prototype.setCurrentIndex = function (currentIndex) {\n    if (currentIndex == null) {\n      currentIndex = this.option.currentIndex;\n    }\n\n    var count = this._data.count();\n\n    if (this.option.loop) {\n      currentIndex = (currentIndex % count + count) % count;\n    } else {\n      currentIndex >= count && (currentIndex = count - 1);\n      currentIndex < 0 && (currentIndex = 0);\n    }\n\n    this.option.currentIndex = currentIndex;\n  };\n  /**\r\n   * @return {number} currentIndex\r\n   */\n\n\n  TimelineModel.prototype.getCurrentIndex = function () {\n    return this.option.currentIndex;\n  };\n  /**\r\n   * @return {boolean}\r\n   */\n\n\n  TimelineModel.prototype.isIndexMax = function () {\n    return this.getCurrentIndex() >= this._data.count() - 1;\n  };\n  /**\r\n   * @param {boolean} state true: play, false: stop\r\n   */\n\n\n  TimelineModel.prototype.setPlayState = function (state) {\n    this.option.autoPlay = !!state;\n  };\n  /**\r\n   * @return {boolean} true: play, false: stop\r\n   */\n\n\n  TimelineModel.prototype.getPlayState = function () {\n    return !!this.option.autoPlay;\n  };\n  /**\r\n   * @private\r\n   */\n\n\n  TimelineModel.prototype._initData = function () {\n    var thisOption = this.option;\n    var dataArr = thisOption.data || [];\n    var axisType = thisOption.axisType;\n    var names = this._names = [];\n    var processedDataArr;\n\n    if (axisType === 'category') {\n      processedDataArr = [];\n      each(dataArr, function (item, index) {\n        var value = convertOptionIdName(getDataItemValue(item), '');\n        var newItem;\n\n        if (isObject(item)) {\n          newItem = clone(item);\n          newItem.value = index;\n        } else {\n          newItem = index;\n        }\n\n        processedDataArr.push(newItem);\n        names.push(value);\n      });\n    } else {\n      processedDataArr = dataArr;\n    }\n\n    var dimType = {\n      category: 'ordinal',\n      time: 'time',\n      value: 'number'\n    }[axisType] || 'number';\n    var data = this._data = new SeriesData([{\n      name: 'value',\n      type: dimType\n    }], this);\n    data.initData(processedDataArr, names);\n  };\n\n  TimelineModel.prototype.getData = function () {\n    return this._data;\n  };\n  /**\r\n   * @public\r\n   * @return {Array.<string>} categoreis\r\n   */\n\n\n  TimelineModel.prototype.getCategories = function () {\n    if (this.get('axisType') === 'category') {\n      return this._names.slice();\n    }\n  };\n\n  TimelineModel.type = 'timeline';\n  /**\r\n   * @protected\r\n   */\n\n  TimelineModel.defaultOption = {\n    // zlevel: 0,                  // 一级层叠\n    z: 4,\n    show: true,\n    axisType: 'time',\n    realtime: true,\n    left: '20%',\n    top: null,\n    right: '20%',\n    bottom: 0,\n    width: null,\n    height: 40,\n    padding: 5,\n    controlPosition: 'left',\n    autoPlay: false,\n    rewind: false,\n    loop: true,\n    playInterval: 2000,\n    currentIndex: 0,\n    itemStyle: {},\n    label: {\n      color: '#000'\n    },\n    data: []\n  };\n  return TimelineModel;\n}(ComponentModel);\n\nexport default TimelineModel;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { __extends } from \"tslib\";\nimport TimelineModel from './TimelineModel.js';\nimport { DataFormatMixin } from '../../model/mixin/dataFormat.js';\nimport { mixin } from 'zrender/lib/core/util.js';\nimport { inheritDefaultOption } from '../../util/component.js';\n\nvar SliderTimelineModel =\n/** @class */\nfunction (_super) {\n  __extends(SliderTimelineModel, _super);\n\n  function SliderTimelineModel() {\n    var _this = _super !== null && _super.apply(this, arguments) || this;\n\n    _this.type = SliderTimelineModel.type;\n    return _this;\n  }\n\n  SliderTimelineModel.type = 'timeline.slider';\n  /**\r\n   * @protected\r\n   */\n\n  SliderTimelineModel.defaultOption = inheritDefaultOption(TimelineModel.defaultOption, {\n    backgroundColor: 'rgba(0,0,0,0)',\n    borderColor: '#ccc',\n    borderWidth: 0,\n    orient: 'horizontal',\n    inverse: false,\n    tooltip: {\n      trigger: 'item' // data item may also have tootip attr.\n\n    },\n    symbol: 'circle',\n    symbolSize: 12,\n    lineStyle: {\n      show: true,\n      width: 2,\n      color: '#DAE1F5'\n    },\n    label: {\n      position: 'auto',\n      // When using number, label position is not\n      // restricted by viewRect.\n      // positive: right/bottom, negative: left/top\n      show: true,\n      interval: 'auto',\n      rotate: 0,\n      // formatter: null,\n      // 其余属性默认使用全局文本样式，详见TEXTSTYLE\n      color: '#A4B1D7'\n    },\n    itemStyle: {\n      color: '#A4B1D7',\n      borderWidth: 1\n    },\n    checkpointStyle: {\n      symbol: 'circle',\n      symbolSize: 15,\n      color: '#316bf3',\n      borderColor: '#fff',\n      borderWidth: 2,\n      shadowBlur: 2,\n      shadowOffsetX: 1,\n      shadowOffsetY: 1,\n      shadowColor: 'rgba(0, 0, 0, 0.3)',\n      // borderColor: 'rgba(194,53,49, 0.5)',\n      animation: true,\n      animationDuration: 300,\n      animationEasing: 'quinticInOut'\n    },\n    controlStyle: {\n      show: true,\n      showPlayBtn: true,\n      showPrevBtn: true,\n      showNextBtn: true,\n      itemSize: 24,\n      itemGap: 12,\n      position: 'left',\n      playIcon: 'path://M31.6,53C17.5,53,6,41.5,6,27.4S17.5,1.8,31.6,1.8C45.7,1.8,57.2,13.3,57.2,27.4S45.7,53,31.6,53z M31.6,3.3 C18.4,3.3,7.5,14.1,7.5,27.4c0,13.3,10.8,24.1,24.1,24.1C44.9,51.5,55.7,40.7,55.7,27.4C55.7,14.1,44.9,3.3,31.6,3.3z M24.9,21.3 c0-2.2,1.6-3.1,3.5-2l10.5,6.1c1.899,1.1,1.899,2.9,0,4l-10.5,6.1c-1.9,1.1-3.5,0.2-3.5-2V21.3z',\n      stopIcon: 'path://M30.9,53.2C16.8,53.2,5.3,41.7,5.3,27.6S16.8,2,30.9,2C45,2,56.4,13.5,56.4,27.6S45,53.2,30.9,53.2z M30.9,3.5C17.6,3.5,6.8,14.4,6.8,27.6c0,13.3,10.8,24.1,24.101,24.1C44.2,51.7,55,40.9,55,27.6C54.9,14.4,44.1,3.5,30.9,3.5z M36.9,35.8c0,0.601-0.4,1-0.9,1h-1.3c-0.5,0-0.9-0.399-0.9-1V19.5c0-0.6,0.4-1,0.9-1H36c0.5,0,0.9,0.4,0.9,1V35.8z M27.8,35.8 c0,0.601-0.4,1-0.9,1h-1.3c-0.5,0-0.9-0.399-0.9-1V19.5c0-0.6,0.4-1,0.9-1H27c0.5,0,0.9,0.4,0.9,1L27.8,35.8L27.8,35.8z',\n      // eslint-disable-next-line max-len\n      nextIcon: 'M2,18.5A1.52,1.52,0,0,1,.92,18a1.49,1.49,0,0,1,0-2.12L7.81,9.36,1,3.11A1.5,1.5,0,1,1,3,.89l8,7.34a1.48,1.48,0,0,1,.49,1.09,1.51,1.51,0,0,1-.46,1.1L3,18.08A1.5,1.5,0,0,1,2,18.5Z',\n      // eslint-disable-next-line max-len\n      prevIcon: 'M10,.5A1.52,1.52,0,0,1,11.08,1a1.49,1.49,0,0,1,0,2.12L4.19,9.64,11,15.89a1.5,1.5,0,1,1-2,2.22L1,10.77A1.48,1.48,0,0,1,.5,9.68,1.51,1.51,0,0,1,1,8.58L9,.92A1.5,1.5,0,0,1,10,.5Z',\n      prevBtnSize: 18,\n      nextBtnSize: 18,\n      color: '#A4B1D7',\n      borderColor: '#A4B1D7',\n      borderWidth: 1\n    },\n    emphasis: {\n      label: {\n        show: true,\n        // 其余属性默认使用全局文本样式，详见TEXTSTYLE\n        color: '#6f778d'\n      },\n      itemStyle: {\n        color: '#316BF3'\n      },\n      controlStyle: {\n        color: '#316BF3',\n        borderColor: '#316BF3',\n        borderWidth: 2\n      }\n    },\n    progress: {\n      lineStyle: {\n        color: '#316BF3'\n      },\n      itemStyle: {\n        color: '#316BF3'\n      },\n      label: {\n        color: '#6f778d'\n      }\n    },\n    data: []\n  });\n  return SliderTimelineModel;\n}(TimelineModel);\n\nmixin(SliderTimelineModel, DataFormatMixin.prototype);\nexport default SliderTimelineModel;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { __extends } from \"tslib\";\nimport ComponentView from '../../view/Component.js';\n\nvar TimelineView =\n/** @class */\nfunction (_super) {\n  __extends(TimelineView, _super);\n\n  function TimelineView() {\n    var _this = _super !== null && _super.apply(this, arguments) || this;\n\n    _this.type = TimelineView.type;\n    return _this;\n  }\n\n  TimelineView.type = 'timeline';\n  return TimelineView;\n}(ComponentView);\n\nexport default TimelineView;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { __extends } from \"tslib\";\nimport Axis from '../../coord/Axis.js';\n/**\r\n * Extend axis 2d\r\n */\n\nvar TimelineAxis =\n/** @class */\nfunction (_super) {\n  __extends(TimelineAxis, _super);\n\n  function TimelineAxis(dim, scale, coordExtent, axisType) {\n    var _this = _super.call(this, dim, scale, coordExtent) || this;\n\n    _this.type = axisType || 'value';\n    return _this;\n  }\n  /**\r\n   * @override\r\n   */\n\n\n  TimelineAxis.prototype.getLabelModel = function () {\n    // Force override\n    return this.model.getModel('label');\n  };\n  /**\r\n   * @override\r\n   */\n\n\n  TimelineAxis.prototype.isHorizontal = function () {\n    return this.model.get('orient') === 'horizontal';\n  };\n\n  return TimelineAxis;\n}(Axis);\n\nexport default TimelineAxis;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { __extends } from \"tslib\";\nimport BoundingRect from 'zrender/lib/core/BoundingRect.js';\nimport * as matrix from 'zrender/lib/core/matrix.js';\nimport * as graphic from '../../util/graphic.js';\nimport { createTextStyle } from '../../label/labelStyle.js';\nimport * as layout from '../../util/layout.js';\nimport TimelineView from './TimelineView.js';\nimport TimelineAxis from './TimelineAxis.js';\nimport { createSymbol, normalizeSymbolOffset, normalizeSymbolSize } from '../../util/symbol.js';\nimport * as numberUtil from '../../util/number.js';\nimport { merge, each, extend, isString, bind, defaults, retrieve2 } from 'zrender/lib/core/util.js';\nimport OrdinalScale from '../../scale/Ordinal.js';\nimport TimeScale from '../../scale/Time.js';\nimport IntervalScale from '../../scale/Interval.js';\nimport { parsePercent } from 'zrender/lib/contain/text.js';\nimport { makeInner } from '../../util/model.js';\nimport { getECData } from '../../util/innerStore.js';\nimport { enableHoverEmphasis } from '../../util/states.js';\nimport { createTooltipMarkup } from '../tooltip/tooltipMarkup.js';\nvar PI = Math.PI;\nvar labelDataIndexStore = makeInner();\n\nvar SliderTimelineView =\n/** @class */\nfunction (_super) {\n  __extends(SliderTimelineView, _super);\n\n  function SliderTimelineView() {\n    var _this = _super !== null && _super.apply(this, arguments) || this;\n\n    _this.type = SliderTimelineView.type;\n    return _this;\n  }\n\n  SliderTimelineView.prototype.init = function (ecModel, api) {\n    this.api = api;\n  };\n  /**\r\n   * @override\r\n   */\n\n\n  SliderTimelineView.prototype.render = function (timelineModel, ecModel, api) {\n    this.model = timelineModel;\n    this.api = api;\n    this.ecModel = ecModel;\n    this.group.removeAll();\n\n    if (timelineModel.get('show', true)) {\n      var layoutInfo_1 = this._layout(timelineModel, api);\n\n      var mainGroup_1 = this._createGroup('_mainGroup');\n\n      var labelGroup = this._createGroup('_labelGroup');\n\n      var axis_1 = this._axis = this._createAxis(layoutInfo_1, timelineModel);\n\n      timelineModel.formatTooltip = function (dataIndex) {\n        var name = axis_1.scale.getLabel({\n          value: dataIndex\n        });\n        return createTooltipMarkup('nameValue', {\n          noName: true,\n          value: name\n        });\n      };\n\n      each(['AxisLine', 'AxisTick', 'Control', 'CurrentPointer'], function (name) {\n        this['_render' + name](layoutInfo_1, mainGroup_1, axis_1, timelineModel);\n      }, this);\n\n      this._renderAxisLabel(layoutInfo_1, labelGroup, axis_1, timelineModel);\n\n      this._position(layoutInfo_1, timelineModel);\n    }\n\n    this._doPlayStop();\n\n    this._updateTicksStatus();\n  };\n  /**\r\n   * @override\r\n   */\n\n\n  SliderTimelineView.prototype.remove = function () {\n    this._clearTimer();\n\n    this.group.removeAll();\n  };\n  /**\r\n   * @override\r\n   */\n\n\n  SliderTimelineView.prototype.dispose = function () {\n    this._clearTimer();\n  };\n\n  SliderTimelineView.prototype._layout = function (timelineModel, api) {\n    var labelPosOpt = timelineModel.get(['label', 'position']);\n    var orient = timelineModel.get('orient');\n    var viewRect = getViewRect(timelineModel, api);\n    var parsedLabelPos; // Auto label offset.\n\n    if (labelPosOpt == null || labelPosOpt === 'auto') {\n      parsedLabelPos = orient === 'horizontal' ? viewRect.y + viewRect.height / 2 < api.getHeight() / 2 ? '-' : '+' : viewRect.x + viewRect.width / 2 < api.getWidth() / 2 ? '+' : '-';\n    } else if (isString(labelPosOpt)) {\n      parsedLabelPos = {\n        horizontal: {\n          top: '-',\n          bottom: '+'\n        },\n        vertical: {\n          left: '-',\n          right: '+'\n        }\n      }[orient][labelPosOpt];\n    } else {\n      // is number\n      parsedLabelPos = labelPosOpt;\n    }\n\n    var labelAlignMap = {\n      horizontal: 'center',\n      vertical: parsedLabelPos >= 0 || parsedLabelPos === '+' ? 'left' : 'right'\n    };\n    var labelBaselineMap = {\n      horizontal: parsedLabelPos >= 0 || parsedLabelPos === '+' ? 'top' : 'bottom',\n      vertical: 'middle'\n    };\n    var rotationMap = {\n      horizontal: 0,\n      vertical: PI / 2\n    }; // Position\n\n    var mainLength = orient === 'vertical' ? viewRect.height : viewRect.width;\n    var controlModel = timelineModel.getModel('controlStyle');\n    var showControl = controlModel.get('show', true);\n    var controlSize = showControl ? controlModel.get('itemSize') : 0;\n    var controlGap = showControl ? controlModel.get('itemGap') : 0;\n    var sizePlusGap = controlSize + controlGap; // Special label rotate.\n\n    var labelRotation = timelineModel.get(['label', 'rotate']) || 0;\n    labelRotation = labelRotation * PI / 180; // To radian.\n\n    var playPosition;\n    var prevBtnPosition;\n    var nextBtnPosition;\n    var controlPosition = controlModel.get('position', true);\n    var showPlayBtn = showControl && controlModel.get('showPlayBtn', true);\n    var showPrevBtn = showControl && controlModel.get('showPrevBtn', true);\n    var showNextBtn = showControl && controlModel.get('showNextBtn', true);\n    var xLeft = 0;\n    var xRight = mainLength; // position[0] means left, position[1] means middle.\n\n    if (controlPosition === 'left' || controlPosition === 'bottom') {\n      showPlayBtn && (playPosition = [0, 0], xLeft += sizePlusGap);\n      showPrevBtn && (prevBtnPosition = [xLeft, 0], xLeft += sizePlusGap);\n      showNextBtn && (nextBtnPosition = [xRight - controlSize, 0], xRight -= sizePlusGap);\n    } else {\n      // 'top' 'right'\n      showPlayBtn && (playPosition = [xRight - controlSize, 0], xRight -= sizePlusGap);\n      showPrevBtn && (prevBtnPosition = [0, 0], xLeft += sizePlusGap);\n      showNextBtn && (nextBtnPosition = [xRight - controlSize, 0], xRight -= sizePlusGap);\n    }\n\n    var axisExtent = [xLeft, xRight];\n\n    if (timelineModel.get('inverse')) {\n      axisExtent.reverse();\n    }\n\n    return {\n      viewRect: viewRect,\n      mainLength: mainLength,\n      orient: orient,\n      rotation: rotationMap[orient],\n      labelRotation: labelRotation,\n      labelPosOpt: parsedLabelPos,\n      labelAlign: timelineModel.get(['label', 'align']) || labelAlignMap[orient],\n      labelBaseline: timelineModel.get(['label', 'verticalAlign']) || timelineModel.get(['label', 'baseline']) || labelBaselineMap[orient],\n      // Based on mainGroup.\n      playPosition: playPosition,\n      prevBtnPosition: prevBtnPosition,\n      nextBtnPosition: nextBtnPosition,\n      axisExtent: axisExtent,\n      controlSize: controlSize,\n      controlGap: controlGap\n    };\n  };\n\n  SliderTimelineView.prototype._position = function (layoutInfo, timelineModel) {\n    // Position is be called finally, because bounding rect is needed for\n    // adapt content to fill viewRect (auto adapt offset).\n    // Timeline may be not all in the viewRect when 'offset' is specified\n    // as a number, because it is more appropriate that label aligns at\n    // 'offset' but not the other edge defined by viewRect.\n    var mainGroup = this._mainGroup;\n    var labelGroup = this._labelGroup;\n    var viewRect = layoutInfo.viewRect;\n\n    if (layoutInfo.orient === 'vertical') {\n      // transform to horizontal, inverse rotate by left-top point.\n      var m = matrix.create();\n      var rotateOriginX = viewRect.x;\n      var rotateOriginY = viewRect.y + viewRect.height;\n      matrix.translate(m, m, [-rotateOriginX, -rotateOriginY]);\n      matrix.rotate(m, m, -PI / 2);\n      matrix.translate(m, m, [rotateOriginX, rotateOriginY]);\n      viewRect = viewRect.clone();\n      viewRect.applyTransform(m);\n    }\n\n    var viewBound = getBound(viewRect);\n    var mainBound = getBound(mainGroup.getBoundingRect());\n    var labelBound = getBound(labelGroup.getBoundingRect());\n    var mainPosition = [mainGroup.x, mainGroup.y];\n    var labelsPosition = [labelGroup.x, labelGroup.y];\n    labelsPosition[0] = mainPosition[0] = viewBound[0][0];\n    var labelPosOpt = layoutInfo.labelPosOpt;\n\n    if (labelPosOpt == null || isString(labelPosOpt)) {\n      // '+' or '-'\n      var mainBoundIdx = labelPosOpt === '+' ? 0 : 1;\n      toBound(mainPosition, mainBound, viewBound, 1, mainBoundIdx);\n      toBound(labelsPosition, labelBound, viewBound, 1, 1 - mainBoundIdx);\n    } else {\n      var mainBoundIdx = labelPosOpt >= 0 ? 0 : 1;\n      toBound(mainPosition, mainBound, viewBound, 1, mainBoundIdx);\n      labelsPosition[1] = mainPosition[1] + labelPosOpt;\n    }\n\n    mainGroup.setPosition(mainPosition);\n    labelGroup.setPosition(labelsPosition);\n    mainGroup.rotation = labelGroup.rotation = layoutInfo.rotation;\n    setOrigin(mainGroup);\n    setOrigin(labelGroup);\n\n    function setOrigin(targetGroup) {\n      targetGroup.originX = viewBound[0][0] - targetGroup.x;\n      targetGroup.originY = viewBound[1][0] - targetGroup.y;\n    }\n\n    function getBound(rect) {\n      // [[xmin, xmax], [ymin, ymax]]\n      return [[rect.x, rect.x + rect.width], [rect.y, rect.y + rect.height]];\n    }\n\n    function toBound(fromPos, from, to, dimIdx, boundIdx) {\n      fromPos[dimIdx] += to[dimIdx][boundIdx] - from[dimIdx][boundIdx];\n    }\n  };\n\n  SliderTimelineView.prototype._createAxis = function (layoutInfo, timelineModel) {\n    var data = timelineModel.getData();\n    var axisType = timelineModel.get('axisType');\n    var scale = createScaleByModel(timelineModel, axisType); // Customize scale. The `tickValue` is `dataIndex`.\n\n    scale.getTicks = function () {\n      return data.mapArray(['value'], function (value) {\n        return {\n          value: value\n        };\n      });\n    };\n\n    var dataExtent = data.getDataExtent('value');\n    scale.setExtent(dataExtent[0], dataExtent[1]);\n    scale.calcNiceTicks();\n    var axis = new TimelineAxis('value', scale, layoutInfo.axisExtent, axisType);\n    axis.model = timelineModel;\n    return axis;\n  };\n\n  SliderTimelineView.prototype._createGroup = function (key) {\n    var newGroup = this[key] = new graphic.Group();\n    this.group.add(newGroup);\n    return newGroup;\n  };\n\n  SliderTimelineView.prototype._renderAxisLine = function (layoutInfo, group, axis, timelineModel) {\n    var axisExtent = axis.getExtent();\n\n    if (!timelineModel.get(['lineStyle', 'show'])) {\n      return;\n    }\n\n    var line = new graphic.Line({\n      shape: {\n        x1: axisExtent[0],\n        y1: 0,\n        x2: axisExtent[1],\n        y2: 0\n      },\n      style: extend({\n        lineCap: 'round'\n      }, timelineModel.getModel('lineStyle').getLineStyle()),\n      silent: true,\n      z2: 1\n    });\n    group.add(line);\n    var progressLine = this._progressLine = new graphic.Line({\n      shape: {\n        x1: axisExtent[0],\n        x2: this._currentPointer ? this._currentPointer.x : axisExtent[0],\n        y1: 0,\n        y2: 0\n      },\n      style: defaults({\n        lineCap: 'round',\n        lineWidth: line.style.lineWidth\n      }, timelineModel.getModel(['progress', 'lineStyle']).getLineStyle()),\n      silent: true,\n      z2: 1\n    });\n    group.add(progressLine);\n  };\n\n  SliderTimelineView.prototype._renderAxisTick = function (layoutInfo, group, axis, timelineModel) {\n    var _this = this;\n\n    var data = timelineModel.getData(); // Show all ticks, despite ignoring strategy.\n\n    var ticks = axis.scale.getTicks();\n    this._tickSymbols = []; // The value is dataIndex, see the customized scale.\n\n    each(ticks, function (tick) {\n      var tickCoord = axis.dataToCoord(tick.value);\n      var itemModel = data.getItemModel(tick.value);\n      var itemStyleModel = itemModel.getModel('itemStyle');\n      var hoverStyleModel = itemModel.getModel(['emphasis', 'itemStyle']);\n      var progressStyleModel = itemModel.getModel(['progress', 'itemStyle']);\n      var symbolOpt = {\n        x: tickCoord,\n        y: 0,\n        onclick: bind(_this._changeTimeline, _this, tick.value)\n      };\n      var el = giveSymbol(itemModel, itemStyleModel, group, symbolOpt);\n      el.ensureState('emphasis').style = hoverStyleModel.getItemStyle();\n      el.ensureState('progress').style = progressStyleModel.getItemStyle();\n      enableHoverEmphasis(el);\n      var ecData = getECData(el);\n\n      if (itemModel.get('tooltip')) {\n        ecData.dataIndex = tick.value;\n        ecData.dataModel = timelineModel;\n      } else {\n        ecData.dataIndex = ecData.dataModel = null;\n      }\n\n      _this._tickSymbols.push(el);\n    });\n  };\n\n  SliderTimelineView.prototype._renderAxisLabel = function (layoutInfo, group, axis, timelineModel) {\n    var _this = this;\n\n    var labelModel = axis.getLabelModel();\n\n    if (!labelModel.get('show')) {\n      return;\n    }\n\n    var data = timelineModel.getData();\n    var labels = axis.getViewLabels();\n    this._tickLabels = [];\n    each(labels, function (labelItem) {\n      // The tickValue is dataIndex, see the customized scale.\n      var dataIndex = labelItem.tickValue;\n      var itemModel = data.getItemModel(dataIndex);\n      var normalLabelModel = itemModel.getModel('label');\n      var hoverLabelModel = itemModel.getModel(['emphasis', 'label']);\n      var progressLabelModel = itemModel.getModel(['progress', 'label']);\n      var tickCoord = axis.dataToCoord(labelItem.tickValue);\n      var textEl = new graphic.Text({\n        x: tickCoord,\n        y: 0,\n        rotation: layoutInfo.labelRotation - layoutInfo.rotation,\n        onclick: bind(_this._changeTimeline, _this, dataIndex),\n        silent: false,\n        style: createTextStyle(normalLabelModel, {\n          text: labelItem.formattedLabel,\n          align: layoutInfo.labelAlign,\n          verticalAlign: layoutInfo.labelBaseline\n        })\n      });\n      textEl.ensureState('emphasis').style = createTextStyle(hoverLabelModel);\n      textEl.ensureState('progress').style = createTextStyle(progressLabelModel);\n      group.add(textEl);\n      enableHoverEmphasis(textEl);\n      labelDataIndexStore(textEl).dataIndex = dataIndex;\n\n      _this._tickLabels.push(textEl);\n    });\n  };\n\n  SliderTimelineView.prototype._renderControl = function (layoutInfo, group, axis, timelineModel) {\n    var controlSize = layoutInfo.controlSize;\n    var rotation = layoutInfo.rotation;\n    var itemStyle = timelineModel.getModel('controlStyle').getItemStyle();\n    var hoverStyle = timelineModel.getModel(['emphasis', 'controlStyle']).getItemStyle();\n    var playState = timelineModel.getPlayState();\n    var inverse = timelineModel.get('inverse', true);\n    makeBtn(layoutInfo.nextBtnPosition, 'next', bind(this._changeTimeline, this, inverse ? '-' : '+'));\n    makeBtn(layoutInfo.prevBtnPosition, 'prev', bind(this._changeTimeline, this, inverse ? '+' : '-'));\n    makeBtn(layoutInfo.playPosition, playState ? 'stop' : 'play', bind(this._handlePlayClick, this, !playState), true);\n\n    function makeBtn(position, iconName, onclick, willRotate) {\n      if (!position) {\n        return;\n      }\n\n      var iconSize = parsePercent(retrieve2(timelineModel.get(['controlStyle', iconName + 'BtnSize']), controlSize), controlSize);\n      var rect = [0, -iconSize / 2, iconSize, iconSize];\n      var btn = makeControlIcon(timelineModel, iconName + 'Icon', rect, {\n        x: position[0],\n        y: position[1],\n        originX: controlSize / 2,\n        originY: 0,\n        rotation: willRotate ? -rotation : 0,\n        rectHover: true,\n        style: itemStyle,\n        onclick: onclick\n      });\n      btn.ensureState('emphasis').style = hoverStyle;\n      group.add(btn);\n      enableHoverEmphasis(btn);\n    }\n  };\n\n  SliderTimelineView.prototype._renderCurrentPointer = function (layoutInfo, group, axis, timelineModel) {\n    var data = timelineModel.getData();\n    var currentIndex = timelineModel.getCurrentIndex();\n    var pointerModel = data.getItemModel(currentIndex).getModel('checkpointStyle');\n    var me = this;\n    var callback = {\n      onCreate: function (pointer) {\n        pointer.draggable = true;\n        pointer.drift = bind(me._handlePointerDrag, me);\n        pointer.ondragend = bind(me._handlePointerDragend, me);\n        pointerMoveTo(pointer, me._progressLine, currentIndex, axis, timelineModel, true);\n      },\n      onUpdate: function (pointer) {\n        pointerMoveTo(pointer, me._progressLine, currentIndex, axis, timelineModel);\n      }\n    }; // Reuse when exists, for animation and drag.\n\n    this._currentPointer = giveSymbol(pointerModel, pointerModel, this._mainGroup, {}, this._currentPointer, callback);\n  };\n\n  SliderTimelineView.prototype._handlePlayClick = function (nextState) {\n    this._clearTimer();\n\n    this.api.dispatchAction({\n      type: 'timelinePlayChange',\n      playState: nextState,\n      from: this.uid\n    });\n  };\n\n  SliderTimelineView.prototype._handlePointerDrag = function (dx, dy, e) {\n    this._clearTimer();\n\n    this._pointerChangeTimeline([e.offsetX, e.offsetY]);\n  };\n\n  SliderTimelineView.prototype._handlePointerDragend = function (e) {\n    this._pointerChangeTimeline([e.offsetX, e.offsetY], true);\n  };\n\n  SliderTimelineView.prototype._pointerChangeTimeline = function (mousePos, trigger) {\n    var toCoord = this._toAxisCoord(mousePos)[0];\n\n    var axis = this._axis;\n    var axisExtent = numberUtil.asc(axis.getExtent().slice());\n    toCoord > axisExtent[1] && (toCoord = axisExtent[1]);\n    toCoord < axisExtent[0] && (toCoord = axisExtent[0]);\n    this._currentPointer.x = toCoord;\n\n    this._currentPointer.markRedraw();\n\n    var progressLine = this._progressLine;\n\n    if (progressLine) {\n      progressLine.shape.x2 = toCoord;\n      progressLine.dirty();\n    }\n\n    var targetDataIndex = this._findNearestTick(toCoord);\n\n    var timelineModel = this.model;\n\n    if (trigger || targetDataIndex !== timelineModel.getCurrentIndex() && timelineModel.get('realtime')) {\n      this._changeTimeline(targetDataIndex);\n    }\n  };\n\n  SliderTimelineView.prototype._doPlayStop = function () {\n    var _this = this;\n\n    this._clearTimer();\n\n    if (this.model.getPlayState()) {\n      this._timer = setTimeout(function () {\n        // Do not cache\n        var timelineModel = _this.model;\n\n        _this._changeTimeline(timelineModel.getCurrentIndex() + (timelineModel.get('rewind', true) ? -1 : 1));\n      }, this.model.get('playInterval'));\n    }\n  };\n\n  SliderTimelineView.prototype._toAxisCoord = function (vertex) {\n    var trans = this._mainGroup.getLocalTransform();\n\n    return graphic.applyTransform(vertex, trans, true);\n  };\n\n  SliderTimelineView.prototype._findNearestTick = function (axisCoord) {\n    var data = this.model.getData();\n    var dist = Infinity;\n    var targetDataIndex;\n    var axis = this._axis;\n    data.each(['value'], function (value, dataIndex) {\n      var coord = axis.dataToCoord(value);\n      var d = Math.abs(coord - axisCoord);\n\n      if (d < dist) {\n        dist = d;\n        targetDataIndex = dataIndex;\n      }\n    });\n    return targetDataIndex;\n  };\n\n  SliderTimelineView.prototype._clearTimer = function () {\n    if (this._timer) {\n      clearTimeout(this._timer);\n      this._timer = null;\n    }\n  };\n\n  SliderTimelineView.prototype._changeTimeline = function (nextIndex) {\n    var currentIndex = this.model.getCurrentIndex();\n\n    if (nextIndex === '+') {\n      nextIndex = currentIndex + 1;\n    } else if (nextIndex === '-') {\n      nextIndex = currentIndex - 1;\n    }\n\n    this.api.dispatchAction({\n      type: 'timelineChange',\n      currentIndex: nextIndex,\n      from: this.uid\n    });\n  };\n\n  SliderTimelineView.prototype._updateTicksStatus = function () {\n    var currentIndex = this.model.getCurrentIndex();\n    var tickSymbols = this._tickSymbols;\n    var tickLabels = this._tickLabels;\n\n    if (tickSymbols) {\n      for (var i = 0; i < tickSymbols.length; i++) {\n        tickSymbols && tickSymbols[i] && tickSymbols[i].toggleState('progress', i < currentIndex);\n      }\n    }\n\n    if (tickLabels) {\n      for (var i = 0; i < tickLabels.length; i++) {\n        tickLabels && tickLabels[i] && tickLabels[i].toggleState('progress', labelDataIndexStore(tickLabels[i]).dataIndex <= currentIndex);\n      }\n    }\n  };\n\n  SliderTimelineView.type = 'timeline.slider';\n  return SliderTimelineView;\n}(TimelineView);\n\nfunction createScaleByModel(model, axisType) {\n  axisType = axisType || model.get('type');\n\n  if (axisType) {\n    switch (axisType) {\n      // Buildin scale\n      case 'category':\n        return new OrdinalScale({\n          ordinalMeta: model.getCategories(),\n          extent: [Infinity, -Infinity]\n        });\n\n      case 'time':\n        return new TimeScale({\n          locale: model.ecModel.getLocaleModel(),\n          useUTC: model.ecModel.get('useUTC')\n        });\n\n      default:\n        // default to be value\n        return new IntervalScale();\n    }\n  }\n}\n\nfunction getViewRect(model, api) {\n  return layout.getLayoutRect(model.getBoxLayoutParams(), {\n    width: api.getWidth(),\n    height: api.getHeight()\n  }, model.get('padding'));\n}\n\nfunction makeControlIcon(timelineModel, objPath, rect, opts) {\n  var style = opts.style;\n  var icon = graphic.createIcon(timelineModel.get(['controlStyle', objPath]), opts || {}, new BoundingRect(rect[0], rect[1], rect[2], rect[3])); // TODO createIcon won't use style in opt.\n\n  if (style) {\n    icon.setStyle(style);\n  }\n\n  return icon;\n}\n/**\r\n * Create symbol or update symbol\r\n * opt: basic position and event handlers\r\n */\n\n\nfunction giveSymbol(hostModel, itemStyleModel, group, opt, symbol, callback) {\n  var color = itemStyleModel.get('color');\n\n  if (!symbol) {\n    var symbolType = hostModel.get('symbol');\n    symbol = createSymbol(symbolType, -1, -1, 2, 2, color);\n    symbol.setStyle('strokeNoScale', true);\n    group.add(symbol);\n    callback && callback.onCreate(symbol);\n  } else {\n    symbol.setColor(color);\n    group.add(symbol); // Group may be new, also need to add.\n\n    callback && callback.onUpdate(symbol);\n  } // Style\n\n\n  var itemStyle = itemStyleModel.getItemStyle(['color']);\n  symbol.setStyle(itemStyle); // Transform and events.\n\n  opt = merge({\n    rectHover: true,\n    z2: 100\n  }, opt, true);\n  var symbolSize = normalizeSymbolSize(hostModel.get('symbolSize'));\n  opt.scaleX = symbolSize[0] / 2;\n  opt.scaleY = symbolSize[1] / 2;\n  var symbolOffset = normalizeSymbolOffset(hostModel.get('symbolOffset'), symbolSize);\n\n  if (symbolOffset) {\n    opt.x = (opt.x || 0) + symbolOffset[0];\n    opt.y = (opt.y || 0) + symbolOffset[1];\n  }\n\n  var symbolRotate = hostModel.get('symbolRotate');\n  opt.rotation = (symbolRotate || 0) * Math.PI / 180 || 0;\n  symbol.attr(opt); // FIXME\n  // (1) When symbol.style.strokeNoScale is true and updateTransform is not performed,\n  // getBoundingRect will return wrong result.\n  // (This is supposed to be resolved in zrender, but it is a little difficult to\n  // leverage performance and auto updateTransform)\n  // (2) All of ancesters of symbol do not scale, so we can just updateTransform symbol.\n\n  symbol.updateTransform();\n  return symbol;\n}\n\nfunction pointerMoveTo(pointer, progressLine, dataIndex, axis, timelineModel, noAnimation) {\n  if (pointer.dragging) {\n    return;\n  }\n\n  var pointerModel = timelineModel.getModel('checkpointStyle');\n  var toCoord = axis.dataToCoord(timelineModel.getData().get('value', dataIndex));\n\n  if (noAnimation || !pointerModel.get('animation', true)) {\n    pointer.attr({\n      x: toCoord,\n      y: 0\n    });\n    progressLine && progressLine.attr({\n      shape: {\n        x2: toCoord\n      }\n    });\n  } else {\n    var animationCfg = {\n      duration: pointerModel.get('animationDuration', true),\n      easing: pointerModel.get('animationEasing', true)\n    };\n    pointer.stopAnimation(null, true);\n    pointer.animateTo({\n      x: toCoord,\n      y: 0\n    }, animationCfg);\n    progressLine && progressLine.animateTo({\n      shape: {\n        x2: toCoord\n      }\n    }, animationCfg);\n  }\n}\n\nexport default SliderTimelineView;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\n// @ts-nocheck\nimport * as zrUtil from 'zrender/lib/core/util.js';\nexport default function timelinePreprocessor(option) {\n  var timelineOpt = option && option.timeline;\n\n  if (!zrUtil.isArray(timelineOpt)) {\n    timelineOpt = timelineOpt ? [timelineOpt] : [];\n  }\n\n  zrUtil.each(timelineOpt, function (opt) {\n    if (!opt) {\n      return;\n    }\n\n    compatibleEC2(opt);\n  });\n}\n\nfunction compatibleEC2(opt) {\n  var type = opt.type;\n  var ec2Types = {\n    'number': 'value',\n    'time': 'time'\n  }; // Compatible with ec2\n\n  if (ec2Types[type]) {\n    opt.axisType = ec2Types[type];\n    delete opt.type;\n  }\n\n  transferItem(opt);\n\n  if (has(opt, 'controlPosition')) {\n    var controlStyle = opt.controlStyle || (opt.controlStyle = {});\n\n    if (!has(controlStyle, 'position')) {\n      controlStyle.position = opt.controlPosition;\n    }\n\n    if (controlStyle.position === 'none' && !has(controlStyle, 'show')) {\n      controlStyle.show = false;\n      delete controlStyle.position;\n    }\n\n    delete opt.controlPosition;\n  }\n\n  zrUtil.each(opt.data || [], function (dataItem) {\n    if (zrUtil.isObject(dataItem) && !zrUtil.isArray(dataItem)) {\n      if (!has(dataItem, 'value') && has(dataItem, 'name')) {\n        // In ec2, using name as value.\n        dataItem.value = dataItem.name;\n      }\n\n      transferItem(dataItem);\n    }\n  });\n}\n\nfunction transferItem(opt) {\n  var itemStyle = opt.itemStyle || (opt.itemStyle = {});\n  var itemStyleEmphasis = itemStyle.emphasis || (itemStyle.emphasis = {}); // Transfer label out\n\n  var label = opt.label || opt.label || {};\n  var labelNormal = label.normal || (label.normal = {});\n  var excludeLabelAttr = {\n    normal: 1,\n    emphasis: 1\n  };\n  zrUtil.each(label, function (value, name) {\n    if (!excludeLabelAttr[name] && !has(labelNormal, name)) {\n      labelNormal[name] = value;\n    }\n  });\n\n  if (itemStyleEmphasis.label && !has(label, 'emphasis')) {\n    label.emphasis = itemStyleEmphasis.label;\n    delete itemStyleEmphasis.label;\n  }\n}\n\nfunction has(obj, attr) {\n  return obj.hasOwnProperty(attr);\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { isArray } from 'zrender/lib/core/util.js';\nexport default function checkMarkerInSeries(seriesOpts, markerType) {\n  if (!seriesOpts) {\n    return false;\n  }\n\n  var seriesOptArr = isArray(seriesOpts) ? seriesOpts : [seriesOpts];\n\n  for (var idx = 0; idx < seriesOptArr.length; idx++) {\n    if (seriesOptArr[idx] && seriesOptArr[idx][markerType]) {\n      return true;\n    }\n  }\n\n  return false;\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { __extends } from \"tslib\";\nimport * as zrUtil from 'zrender/lib/core/util.js';\nimport env from 'zrender/lib/core/env.js';\nimport { DataFormatMixin } from '../../model/mixin/dataFormat.js';\nimport ComponentModel from '../../model/Component.js';\nimport { makeInner, defaultEmphasis } from '../../util/model.js';\nimport { createTooltipMarkup } from '../tooltip/tooltipMarkup.js';\n\nfunction fillLabel(opt) {\n  defaultEmphasis(opt, 'label', ['show']);\n} // { [componentType]: MarkerModel }\n\n\nvar inner = makeInner();\n\nvar MarkerModel =\n/** @class */\nfunction (_super) {\n  __extends(MarkerModel, _super);\n\n  function MarkerModel() {\n    var _this = _super !== null && _super.apply(this, arguments) || this;\n\n    _this.type = MarkerModel.type;\n    /**\r\n     * If marker model is created by self from series\r\n     */\n\n    _this.createdBySelf = false;\n    return _this;\n  }\n  /**\r\n   * @overrite\r\n   */\n\n\n  MarkerModel.prototype.init = function (option, parentModel, ecModel) {\n    if (process.env.NODE_ENV !== 'production') {\n      if (this.type === 'marker') {\n        throw new Error('Marker component is abstract component. Use markLine, markPoint, markArea instead.');\n      }\n    }\n\n    this.mergeDefaultAndTheme(option, ecModel);\n\n    this._mergeOption(option, ecModel, false, true);\n  };\n\n  MarkerModel.prototype.isAnimationEnabled = function () {\n    if (env.node) {\n      return false;\n    }\n\n    var hostSeries = this.__hostSeries;\n    return this.getShallow('animation') && hostSeries && hostSeries.isAnimationEnabled();\n  };\n  /**\r\n   * @overrite\r\n   */\n\n\n  MarkerModel.prototype.mergeOption = function (newOpt, ecModel) {\n    this._mergeOption(newOpt, ecModel, false, false);\n  };\n\n  MarkerModel.prototype._mergeOption = function (newOpt, ecModel, createdBySelf, isInit) {\n    var componentType = this.mainType;\n\n    if (!createdBySelf) {\n      ecModel.eachSeries(function (seriesModel) {\n        // mainType can be markPoint, markLine, markArea\n        var markerOpt = seriesModel.get(this.mainType, true);\n        var markerModel = inner(seriesModel)[componentType];\n\n        if (!markerOpt || !markerOpt.data) {\n          inner(seriesModel)[componentType] = null;\n          return;\n        }\n\n        if (!markerModel) {\n          if (isInit) {\n            // Default label emphasis `position` and `show`\n            fillLabel(markerOpt);\n          }\n\n          zrUtil.each(markerOpt.data, function (item) {\n            // FIXME Overwrite fillLabel method ?\n            if (item instanceof Array) {\n              fillLabel(item[0]);\n              fillLabel(item[1]);\n            } else {\n              fillLabel(item);\n            }\n          });\n          markerModel = this.createMarkerModelFromSeries(markerOpt, this, ecModel); // markerModel = new ImplementedMarkerModel(\n          //     markerOpt, this, ecModel\n          // );\n\n          zrUtil.extend(markerModel, {\n            mainType: this.mainType,\n            // Use the same series index and name\n            seriesIndex: seriesModel.seriesIndex,\n            name: seriesModel.name,\n            createdBySelf: true\n          });\n          markerModel.__hostSeries = seriesModel;\n        } else {\n          markerModel._mergeOption(markerOpt, ecModel, true);\n        }\n\n        inner(seriesModel)[componentType] = markerModel;\n      }, this);\n    }\n  };\n\n  MarkerModel.prototype.formatTooltip = function (dataIndex, multipleSeries, dataType) {\n    var data = this.getData();\n    var value = this.getRawValue(dataIndex);\n    var itemName = data.getName(dataIndex);\n    return createTooltipMarkup('section', {\n      header: this.name,\n      blocks: [createTooltipMarkup('nameValue', {\n        name: itemName,\n        value: value,\n        noName: !itemName,\n        noValue: value == null\n      })]\n    });\n  };\n\n  MarkerModel.prototype.getData = function () {\n    return this._data;\n  };\n\n  MarkerModel.prototype.setData = function (data) {\n    this._data = data;\n  };\n\n  MarkerModel.getMarkerModelFromSeries = function (seriesModel, // Support three types of markers. Strict check.\n  componentType) {\n    return inner(seriesModel)[componentType];\n  };\n\n  MarkerModel.type = 'marker';\n  MarkerModel.dependencies = ['series', 'grid', 'polar', 'geo'];\n  return MarkerModel;\n}(ComponentModel);\n\nzrUtil.mixin(MarkerModel, DataFormatMixin.prototype);\nexport default MarkerModel;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { __extends } from \"tslib\";\nimport MarkerModel from './MarkerModel.js';\n\nvar MarkPointModel =\n/** @class */\nfunction (_super) {\n  __extends(MarkPointModel, _super);\n\n  function MarkPointModel() {\n    var _this = _super !== null && _super.apply(this, arguments) || this;\n\n    _this.type = MarkPointModel.type;\n    return _this;\n  }\n\n  MarkPointModel.prototype.createMarkerModelFromSeries = function (markerOpt, masterMarkerModel, ecModel) {\n    return new MarkPointModel(markerOpt, masterMarkerModel, ecModel);\n  };\n\n  MarkPointModel.type = 'markPoint';\n  MarkPointModel.defaultOption = {\n    // zlevel: 0,\n    z: 5,\n    symbol: 'pin',\n    symbolSize: 50,\n    // symbolRotate: 0,\n    // symbolOffset: [0, 0]\n    tooltip: {\n      trigger: 'item'\n    },\n    label: {\n      show: true,\n      position: 'inside'\n    },\n    itemStyle: {\n      borderWidth: 2\n    },\n    emphasis: {\n      label: {\n        show: true\n      }\n    }\n  };\n  return MarkPointModel;\n}(MarkerModel);\n\nexport default MarkPointModel;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport * as numberUtil from '../../util/number.js';\nimport { isDimensionStacked } from '../../data/helper/dataStackHelper.js';\nimport { indexOf, curry, clone, isArray } from 'zrender/lib/core/util.js';\nimport { parseDataValue } from '../../data/helper/dataValueHelper.js';\n\nfunction hasXOrY(item) {\n  return !(isNaN(parseFloat(item.x)) && isNaN(parseFloat(item.y)));\n}\n\nfunction hasXAndY(item) {\n  return !isNaN(parseFloat(item.x)) && !isNaN(parseFloat(item.y));\n}\n\nfunction markerTypeCalculatorWithExtent(markerType, data, otherDataDim, targetDataDim, otherCoordIndex, targetCoordIndex) {\n  var coordArr = [];\n  var stacked = isDimensionStacked(data, targetDataDim\n  /* , otherDataDim */\n  );\n  var calcDataDim = stacked ? data.getCalculationInfo('stackResultDimension') : targetDataDim;\n  var value = numCalculate(data, calcDataDim, markerType);\n  var dataIndex = data.indicesOfNearest(calcDataDim, value)[0];\n  coordArr[otherCoordIndex] = data.get(otherDataDim, dataIndex);\n  coordArr[targetCoordIndex] = data.get(calcDataDim, dataIndex);\n  var coordArrValue = data.get(targetDataDim, dataIndex); // Make it simple, do not visit all stacked value to count precision.\n\n  var precision = numberUtil.getPrecision(data.get(targetDataDim, dataIndex));\n  precision = Math.min(precision, 20);\n\n  if (precision >= 0) {\n    coordArr[targetCoordIndex] = +coordArr[targetCoordIndex].toFixed(precision);\n  }\n\n  return [coordArr, coordArrValue];\n} // TODO Specified percent\n\n\nvar markerTypeCalculator = {\n  min: curry(markerTypeCalculatorWithExtent, 'min'),\n  max: curry(markerTypeCalculatorWithExtent, 'max'),\n  average: curry(markerTypeCalculatorWithExtent, 'average'),\n  median: curry(markerTypeCalculatorWithExtent, 'median')\n};\n/**\r\n * Transform markPoint data item to format used in List by do the following\r\n * 1. Calculate statistic like `max`, `min`, `average`\r\n * 2. Convert `item.xAxis`, `item.yAxis` to `item.coord` array\r\n */\n\nexport function dataTransform(seriesModel, item) {\n  if (!item) {\n    return;\n  }\n\n  var data = seriesModel.getData();\n  var coordSys = seriesModel.coordinateSystem;\n  var dims = coordSys && coordSys.dimensions; // 1. If not specify the position with pixel directly\n  // 2. If `coord` is not a data array. Which uses `xAxis`,\n  // `yAxis` to specify the coord on each dimension\n  // parseFloat first because item.x and item.y can be percent string like '20%'\n\n  if (!hasXAndY(item) && !isArray(item.coord) && isArray(dims)) {\n    var axisInfo = getAxisInfo(item, data, coordSys, seriesModel); // Clone the option\n    // Transform the properties xAxis, yAxis, radiusAxis, angleAxis, geoCoord to value\n\n    item = clone(item);\n\n    if (item.type && markerTypeCalculator[item.type] && axisInfo.baseAxis && axisInfo.valueAxis) {\n      var otherCoordIndex = indexOf(dims, axisInfo.baseAxis.dim);\n      var targetCoordIndex = indexOf(dims, axisInfo.valueAxis.dim);\n      var coordInfo = markerTypeCalculator[item.type](data, axisInfo.baseDataDim, axisInfo.valueDataDim, otherCoordIndex, targetCoordIndex);\n      item.coord = coordInfo[0]; // Force to use the value of calculated value.\n      // let item use the value without stack.\n\n      item.value = coordInfo[1];\n    } else {\n      // FIXME Only has one of xAxis and yAxis.\n      item.coord = [item.xAxis != null ? item.xAxis : item.radiusAxis, item.yAxis != null ? item.yAxis : item.angleAxis];\n    }\n  } // x y is provided\n\n\n  if (item.coord == null || !isArray(dims)) {\n    item.coord = [];\n  } else {\n    // Each coord support max, min, average\n    var coord = item.coord;\n\n    for (var i = 0; i < 2; i++) {\n      if (markerTypeCalculator[coord[i]]) {\n        coord[i] = numCalculate(data, data.mapDimension(dims[i]), coord[i]);\n      }\n    }\n  }\n\n  return item;\n}\nexport function getAxisInfo(item, data, coordSys, seriesModel) {\n  var ret = {};\n\n  if (item.valueIndex != null || item.valueDim != null) {\n    ret.valueDataDim = item.valueIndex != null ? data.getDimension(item.valueIndex) : item.valueDim;\n    ret.valueAxis = coordSys.getAxis(dataDimToCoordDim(seriesModel, ret.valueDataDim));\n    ret.baseAxis = coordSys.getOtherAxis(ret.valueAxis);\n    ret.baseDataDim = data.mapDimension(ret.baseAxis.dim);\n  } else {\n    ret.baseAxis = seriesModel.getBaseAxis();\n    ret.valueAxis = coordSys.getOtherAxis(ret.baseAxis);\n    ret.baseDataDim = data.mapDimension(ret.baseAxis.dim);\n    ret.valueDataDim = data.mapDimension(ret.valueAxis.dim);\n  }\n\n  return ret;\n}\n\nfunction dataDimToCoordDim(seriesModel, dataDim) {\n  var dimItem = seriesModel.getData().getDimensionInfo(dataDim);\n  return dimItem && dimItem.coordDim;\n}\n/**\r\n * Filter data which is out of coordinateSystem range\r\n * [dataFilter description]\r\n */\n\n\nexport function dataFilter( // Currently only polar and cartesian has containData.\ncoordSys, item) {\n  // Always return true if there is no coordSys\n  return coordSys && coordSys.containData && item.coord && !hasXOrY(item) ? coordSys.containData(item.coord) : true;\n}\nexport function zoneFilter( // Currently only polar and cartesian has containData.\ncoordSys, item1, item2) {\n  // Always return true if there is no coordSys\n  return coordSys && coordSys.containZone && item1.coord && item2.coord && !hasXOrY(item1) && !hasXOrY(item2) ? coordSys.containZone(item1.coord, item2.coord) : true;\n}\nexport function createMarkerDimValueGetter(inCoordSys, dims) {\n  return inCoordSys ? function (item, dimName, dataIndex, dimIndex) {\n    var rawVal = dimIndex < 2 // x, y, radius, angle\n    ? item.coord && item.coord[dimIndex] : item.value;\n    return parseDataValue(rawVal, dims[dimIndex]);\n  } : function (item, dimName, dataIndex, dimIndex) {\n    return parseDataValue(item.value, dims[dimIndex]);\n  };\n}\nexport function numCalculate(data, valueDataDim, type) {\n  if (type === 'average') {\n    var sum_1 = 0;\n    var count_1 = 0;\n    data.each(valueDataDim, function (val, idx) {\n      if (!isNaN(val)) {\n        sum_1 += val;\n        count_1++;\n      }\n    });\n    return sum_1 / count_1;\n  } else if (type === 'median') {\n    return data.getMedian(valueDataDim);\n  } else {\n    // max & min\n    return data.getDataExtent(valueDataDim)[type === 'max' ? 1 : 0];\n  }\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { __extends } from \"tslib\";\nimport ComponentView from '../../view/Component.js';\nimport { createHashMap, each } from 'zrender/lib/core/util.js';\nimport MarkerModel from './MarkerModel.js';\nimport { makeInner } from '../../util/model.js';\nimport { enterBlur, leaveBlur } from '../../util/states.js';\nvar inner = makeInner();\n\nvar MarkerView =\n/** @class */\nfunction (_super) {\n  __extends(MarkerView, _super);\n\n  function MarkerView() {\n    var _this = _super !== null && _super.apply(this, arguments) || this;\n\n    _this.type = MarkerView.type;\n    return _this;\n  }\n\n  MarkerView.prototype.init = function () {\n    this.markerGroupMap = createHashMap();\n  };\n\n  MarkerView.prototype.render = function (markerModel, ecModel, api) {\n    var _this = this;\n\n    var markerGroupMap = this.markerGroupMap;\n    markerGroupMap.each(function (item) {\n      inner(item).keep = false;\n    });\n    ecModel.eachSeries(function (seriesModel) {\n      var markerModel = MarkerModel.getMarkerModelFromSeries(seriesModel, _this.type);\n      markerModel && _this.renderSeries(seriesModel, markerModel, ecModel, api);\n    });\n    markerGroupMap.each(function (item) {\n      !inner(item).keep && _this.group.remove(item.group);\n    });\n  };\n\n  MarkerView.prototype.markKeep = function (drawGroup) {\n    inner(drawGroup).keep = true;\n  };\n\n  MarkerView.prototype.toggleBlurSeries = function (seriesModelList, isBlur) {\n    var _this = this;\n\n    each(seriesModelList, function (seriesModel) {\n      var markerModel = MarkerModel.getMarkerModelFromSeries(seriesModel, _this.type);\n\n      if (markerModel) {\n        var data = markerModel.getData();\n        data.eachItemGraphicEl(function (el) {\n          if (el) {\n            isBlur ? enterBlur(el) : leaveBlur(el);\n          }\n        });\n      }\n    });\n  };\n\n  MarkerView.type = 'marker';\n  return MarkerView;\n}(ComponentView);\n\nexport default MarkerView;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { __extends } from \"tslib\";\nimport SymbolDraw from '../../chart/helper/SymbolDraw.js';\nimport * as numberUtil from '../../util/number.js';\nimport SeriesData from '../../data/SeriesData.js';\nimport * as markerHelper from './markerHelper.js';\nimport MarkerView from './MarkerView.js';\nimport MarkerModel from './MarkerModel.js';\nimport { isFunction, map, filter, curry, extend } from 'zrender/lib/core/util.js';\nimport { getECData } from '../../util/innerStore.js';\nimport { getVisualFromData } from '../../visual/helper.js';\n\nfunction updateMarkerLayout(mpData, seriesModel, api) {\n  var coordSys = seriesModel.coordinateSystem;\n  mpData.each(function (idx) {\n    var itemModel = mpData.getItemModel(idx);\n    var point;\n    var xPx = numberUtil.parsePercent(itemModel.get('x'), api.getWidth());\n    var yPx = numberUtil.parsePercent(itemModel.get('y'), api.getHeight());\n\n    if (!isNaN(xPx) && !isNaN(yPx)) {\n      point = [xPx, yPx];\n    } // Chart like bar may have there own marker positioning logic\n    else if (seriesModel.getMarkerPosition) {\n        // Use the getMarkerPosition\n        point = seriesModel.getMarkerPosition(mpData.getValues(mpData.dimensions, idx));\n      } else if (coordSys) {\n        var x = mpData.get(coordSys.dimensions[0], idx);\n        var y = mpData.get(coordSys.dimensions[1], idx);\n        point = coordSys.dataToPoint([x, y]);\n      } // Use x, y if has any\n\n\n    if (!isNaN(xPx)) {\n      point[0] = xPx;\n    }\n\n    if (!isNaN(yPx)) {\n      point[1] = yPx;\n    }\n\n    mpData.setItemLayout(idx, point);\n  });\n}\n\nvar MarkPointView =\n/** @class */\nfunction (_super) {\n  __extends(MarkPointView, _super);\n\n  function MarkPointView() {\n    var _this = _super !== null && _super.apply(this, arguments) || this;\n\n    _this.type = MarkPointView.type;\n    return _this;\n  }\n\n  MarkPointView.prototype.updateTransform = function (markPointModel, ecModel, api) {\n    ecModel.eachSeries(function (seriesModel) {\n      var mpModel = MarkerModel.getMarkerModelFromSeries(seriesModel, 'markPoint');\n\n      if (mpModel) {\n        updateMarkerLayout(mpModel.getData(), seriesModel, api);\n        this.markerGroupMap.get(seriesModel.id).updateLayout();\n      }\n    }, this);\n  };\n\n  MarkPointView.prototype.renderSeries = function (seriesModel, mpModel, ecModel, api) {\n    var coordSys = seriesModel.coordinateSystem;\n    var seriesId = seriesModel.id;\n    var seriesData = seriesModel.getData();\n    var symbolDrawMap = this.markerGroupMap;\n    var symbolDraw = symbolDrawMap.get(seriesId) || symbolDrawMap.set(seriesId, new SymbolDraw());\n    var mpData = createData(coordSys, seriesModel, mpModel); // FIXME\n\n    mpModel.setData(mpData);\n    updateMarkerLayout(mpModel.getData(), seriesModel, api);\n    mpData.each(function (idx) {\n      var itemModel = mpData.getItemModel(idx);\n      var symbol = itemModel.getShallow('symbol');\n      var symbolSize = itemModel.getShallow('symbolSize');\n      var symbolRotate = itemModel.getShallow('symbolRotate');\n      var symbolOffset = itemModel.getShallow('symbolOffset');\n      var symbolKeepAspect = itemModel.getShallow('symbolKeepAspect'); // TODO: refactor needed: single data item should not support callback function\n\n      if (isFunction(symbol) || isFunction(symbolSize) || isFunction(symbolRotate) || isFunction(symbolOffset)) {\n        var rawIdx = mpModel.getRawValue(idx);\n        var dataParams = mpModel.getDataParams(idx);\n\n        if (isFunction(symbol)) {\n          symbol = symbol(rawIdx, dataParams);\n        }\n\n        if (isFunction(symbolSize)) {\n          // FIXME 这里不兼容 ECharts 2.x，2.x 貌似参数是整个数据？\n          symbolSize = symbolSize(rawIdx, dataParams);\n        }\n\n        if (isFunction(symbolRotate)) {\n          symbolRotate = symbolRotate(rawIdx, dataParams);\n        }\n\n        if (isFunction(symbolOffset)) {\n          symbolOffset = symbolOffset(rawIdx, dataParams);\n        }\n      }\n\n      var style = itemModel.getModel('itemStyle').getItemStyle();\n      var color = getVisualFromData(seriesData, 'color');\n\n      if (!style.fill) {\n        style.fill = color;\n      }\n\n      mpData.setItemVisual(idx, {\n        symbol: symbol,\n        symbolSize: symbolSize,\n        symbolRotate: symbolRotate,\n        symbolOffset: symbolOffset,\n        symbolKeepAspect: symbolKeepAspect,\n        style: style\n      });\n    }); // TODO Text are wrong\n\n    symbolDraw.updateData(mpData);\n    this.group.add(symbolDraw.group); // Set host model for tooltip\n    // FIXME\n\n    mpData.eachItemGraphicEl(function (el) {\n      el.traverse(function (child) {\n        getECData(child).dataModel = mpModel;\n      });\n    });\n    this.markKeep(symbolDraw);\n    symbolDraw.group.silent = mpModel.get('silent') || seriesModel.get('silent');\n  };\n\n  MarkPointView.type = 'markPoint';\n  return MarkPointView;\n}(MarkerView);\n\nfunction createData(coordSys, seriesModel, mpModel) {\n  var coordDimsInfos;\n\n  if (coordSys) {\n    coordDimsInfos = map(coordSys && coordSys.dimensions, function (coordDim) {\n      var info = seriesModel.getData().getDimensionInfo(seriesModel.getData().mapDimension(coordDim)) || {}; // In map series data don't have lng and lat dimension. Fallback to same with coordSys\n\n      return extend(extend({}, info), {\n        name: coordDim,\n        // DON'T use ordinalMeta to parse and collect ordinal.\n        ordinalMeta: null\n      });\n    });\n  } else {\n    coordDimsInfos = [{\n      name: 'value',\n      type: 'float'\n    }];\n  }\n\n  var mpData = new SeriesData(coordDimsInfos, mpModel);\n  var dataOpt = map(mpModel.get('data'), curry(markerHelper.dataTransform, seriesModel));\n\n  if (coordSys) {\n    dataOpt = filter(dataOpt, curry(markerHelper.dataFilter, coordSys));\n  }\n\n  var dimValueGetter = markerHelper.createMarkerDimValueGetter(!!coordSys, coordDimsInfos);\n  mpData.initData(dataOpt, null, dimValueGetter);\n  return mpData;\n}\n\nexport default MarkPointView;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { __extends } from \"tslib\";\nimport MarkerModel from './MarkerModel.js';\n\nvar MarkLineModel =\n/** @class */\nfunction (_super) {\n  __extends(MarkLineModel, _super);\n\n  function MarkLineModel() {\n    var _this = _super !== null && _super.apply(this, arguments) || this;\n\n    _this.type = MarkLineModel.type;\n    return _this;\n  }\n\n  MarkLineModel.prototype.createMarkerModelFromSeries = function (markerOpt, masterMarkerModel, ecModel) {\n    return new MarkLineModel(markerOpt, masterMarkerModel, ecModel);\n  };\n\n  MarkLineModel.type = 'markLine';\n  MarkLineModel.defaultOption = {\n    // zlevel: 0,\n    z: 5,\n    symbol: ['circle', 'arrow'],\n    symbolSize: [8, 16],\n    // symbolRotate: 0,\n    symbolOffset: 0,\n    precision: 2,\n    tooltip: {\n      trigger: 'item'\n    },\n    label: {\n      show: true,\n      position: 'end',\n      distance: 5\n    },\n    lineStyle: {\n      type: 'dashed'\n    },\n    emphasis: {\n      label: {\n        show: true\n      },\n      lineStyle: {\n        width: 3\n      }\n    },\n    animationEasing: 'linear'\n  };\n  return MarkLineModel;\n}(MarkerModel);\n\nexport default MarkLineModel;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { __extends } from \"tslib\";\nimport SeriesData from '../../data/SeriesData.js';\nimport * as numberUtil from '../../util/number.js';\nimport * as markerHelper from './markerHelper.js';\nimport LineDraw from '../../chart/helper/LineDraw.js';\nimport MarkerView from './MarkerView.js';\nimport { getStackedDimension } from '../../data/helper/dataStackHelper.js';\nimport { isCoordinateSystemType } from '../../coord/CoordinateSystem.js';\nimport { getECData } from '../../util/innerStore.js';\nimport MarkerModel from './MarkerModel.js';\nimport { isArray, retrieve, retrieve2, clone, extend, logError, merge, map, curry, filter, isNumber } from 'zrender/lib/core/util.js';\nimport { makeInner } from '../../util/model.js';\nimport { getVisualFromData } from '../../visual/helper.js';\nvar inner = makeInner();\n\nvar markLineTransform = function (seriesModel, coordSys, mlModel, item) {\n  var data = seriesModel.getData();\n  var itemArray;\n\n  if (!isArray(item)) {\n    // Special type markLine like 'min', 'max', 'average', 'median'\n    var mlType = item.type;\n\n    if (mlType === 'min' || mlType === 'max' || mlType === 'average' || mlType === 'median' // In case\n    // data: [{\n    //   yAxis: 10\n    // }]\n    || item.xAxis != null || item.yAxis != null) {\n      var valueAxis = void 0;\n      var value = void 0;\n\n      if (item.yAxis != null || item.xAxis != null) {\n        valueAxis = coordSys.getAxis(item.yAxis != null ? 'y' : 'x');\n        value = retrieve(item.yAxis, item.xAxis);\n      } else {\n        var axisInfo = markerHelper.getAxisInfo(item, data, coordSys, seriesModel);\n        valueAxis = axisInfo.valueAxis;\n        var valueDataDim = getStackedDimension(data, axisInfo.valueDataDim);\n        value = markerHelper.numCalculate(data, valueDataDim, mlType);\n      }\n\n      var valueIndex = valueAxis.dim === 'x' ? 0 : 1;\n      var baseIndex = 1 - valueIndex; // Normized to 2d data with start and end point\n\n      var mlFrom = clone(item);\n      var mlTo = {\n        coord: []\n      };\n      mlFrom.type = null;\n      mlFrom.coord = [];\n      mlFrom.coord[baseIndex] = -Infinity;\n      mlTo.coord[baseIndex] = Infinity;\n      var precision = mlModel.get('precision');\n\n      if (precision >= 0 && isNumber(value)) {\n        value = +value.toFixed(Math.min(precision, 20));\n      }\n\n      mlFrom.coord[valueIndex] = mlTo.coord[valueIndex] = value;\n      itemArray = [mlFrom, mlTo, {\n        type: mlType,\n        valueIndex: item.valueIndex,\n        // Force to use the value of calculated value.\n        value: value\n      }];\n    } else {\n      // Invalid data\n      if (process.env.NODE_ENV !== 'production') {\n        logError('Invalid markLine data.');\n      }\n\n      itemArray = [];\n    }\n  } else {\n    itemArray = item;\n  }\n\n  var normalizedItem = [markerHelper.dataTransform(seriesModel, itemArray[0]), markerHelper.dataTransform(seriesModel, itemArray[1]), extend({}, itemArray[2])]; // Avoid line data type is extended by from(to) data type\n\n  normalizedItem[2].type = normalizedItem[2].type || null; // Merge from option and to option into line option\n\n  merge(normalizedItem[2], normalizedItem[0]);\n  merge(normalizedItem[2], normalizedItem[1]);\n  return normalizedItem;\n};\n\nfunction isInfinity(val) {\n  return !isNaN(val) && !isFinite(val);\n} // If a markLine has one dim\n\n\nfunction ifMarkLineHasOnlyDim(dimIndex, fromCoord, toCoord, coordSys) {\n  var otherDimIndex = 1 - dimIndex;\n  var dimName = coordSys.dimensions[dimIndex];\n  return isInfinity(fromCoord[otherDimIndex]) && isInfinity(toCoord[otherDimIndex]) && fromCoord[dimIndex] === toCoord[dimIndex] && coordSys.getAxis(dimName).containData(fromCoord[dimIndex]);\n}\n\nfunction markLineFilter(coordSys, item) {\n  if (coordSys.type === 'cartesian2d') {\n    var fromCoord = item[0].coord;\n    var toCoord = item[1].coord; // In case\n    // {\n    //  markLine: {\n    //    data: [{ yAxis: 2 }]\n    //  }\n    // }\n\n    if (fromCoord && toCoord && (ifMarkLineHasOnlyDim(1, fromCoord, toCoord, coordSys) || ifMarkLineHasOnlyDim(0, fromCoord, toCoord, coordSys))) {\n      return true;\n    }\n  }\n\n  return markerHelper.dataFilter(coordSys, item[0]) && markerHelper.dataFilter(coordSys, item[1]);\n}\n\nfunction updateSingleMarkerEndLayout(data, idx, isFrom, seriesModel, api) {\n  var coordSys = seriesModel.coordinateSystem;\n  var itemModel = data.getItemModel(idx);\n  var point;\n  var xPx = numberUtil.parsePercent(itemModel.get('x'), api.getWidth());\n  var yPx = numberUtil.parsePercent(itemModel.get('y'), api.getHeight());\n\n  if (!isNaN(xPx) && !isNaN(yPx)) {\n    point = [xPx, yPx];\n  } else {\n    // Chart like bar may have there own marker positioning logic\n    if (seriesModel.getMarkerPosition) {\n      // Use the getMarkerPosition\n      point = seriesModel.getMarkerPosition(data.getValues(data.dimensions, idx));\n    } else {\n      var dims = coordSys.dimensions;\n      var x = data.get(dims[0], idx);\n      var y = data.get(dims[1], idx);\n      point = coordSys.dataToPoint([x, y]);\n    } // Expand line to the edge of grid if value on one axis is Inifnity\n    // In case\n    //  markLine: {\n    //    data: [{\n    //      yAxis: 2\n    //      // or\n    //      type: 'average'\n    //    }]\n    //  }\n\n\n    if (isCoordinateSystemType(coordSys, 'cartesian2d')) {\n      // TODO: TYPE ts@4.1 may still infer it as Axis instead of Axis2D. Not sure if it's a bug\n      var xAxis = coordSys.getAxis('x');\n      var yAxis = coordSys.getAxis('y');\n      var dims = coordSys.dimensions;\n\n      if (isInfinity(data.get(dims[0], idx))) {\n        point[0] = xAxis.toGlobalCoord(xAxis.getExtent()[isFrom ? 0 : 1]);\n      } else if (isInfinity(data.get(dims[1], idx))) {\n        point[1] = yAxis.toGlobalCoord(yAxis.getExtent()[isFrom ? 0 : 1]);\n      }\n    } // Use x, y if has any\n\n\n    if (!isNaN(xPx)) {\n      point[0] = xPx;\n    }\n\n    if (!isNaN(yPx)) {\n      point[1] = yPx;\n    }\n  }\n\n  data.setItemLayout(idx, point);\n}\n\nvar MarkLineView =\n/** @class */\nfunction (_super) {\n  __extends(MarkLineView, _super);\n\n  function MarkLineView() {\n    var _this = _super !== null && _super.apply(this, arguments) || this;\n\n    _this.type = MarkLineView.type;\n    return _this;\n  }\n\n  MarkLineView.prototype.updateTransform = function (markLineModel, ecModel, api) {\n    ecModel.eachSeries(function (seriesModel) {\n      var mlModel = MarkerModel.getMarkerModelFromSeries(seriesModel, 'markLine');\n\n      if (mlModel) {\n        var mlData_1 = mlModel.getData();\n        var fromData_1 = inner(mlModel).from;\n        var toData_1 = inner(mlModel).to; // Update visual and layout of from symbol and to symbol\n\n        fromData_1.each(function (idx) {\n          updateSingleMarkerEndLayout(fromData_1, idx, true, seriesModel, api);\n          updateSingleMarkerEndLayout(toData_1, idx, false, seriesModel, api);\n        }); // Update layout of line\n\n        mlData_1.each(function (idx) {\n          mlData_1.setItemLayout(idx, [fromData_1.getItemLayout(idx), toData_1.getItemLayout(idx)]);\n        });\n        this.markerGroupMap.get(seriesModel.id).updateLayout();\n      }\n    }, this);\n  };\n\n  MarkLineView.prototype.renderSeries = function (seriesModel, mlModel, ecModel, api) {\n    var coordSys = seriesModel.coordinateSystem;\n    var seriesId = seriesModel.id;\n    var seriesData = seriesModel.getData();\n    var lineDrawMap = this.markerGroupMap;\n    var lineDraw = lineDrawMap.get(seriesId) || lineDrawMap.set(seriesId, new LineDraw());\n    this.group.add(lineDraw.group);\n    var mlData = createList(coordSys, seriesModel, mlModel);\n    var fromData = mlData.from;\n    var toData = mlData.to;\n    var lineData = mlData.line;\n    inner(mlModel).from = fromData;\n    inner(mlModel).to = toData; // Line data for tooltip and formatter\n\n    mlModel.setData(lineData); // TODO\n    // Functionally, `symbolSize` & `symbolOffset` can also be 2D array now.\n    // But the related logic and type definition are not finished yet.\n    // Finish it if required\n\n    var symbolType = mlModel.get('symbol');\n    var symbolSize = mlModel.get('symbolSize');\n    var symbolRotate = mlModel.get('symbolRotate');\n    var symbolOffset = mlModel.get('symbolOffset'); // TODO: support callback function like markPoint\n\n    if (!isArray(symbolType)) {\n      symbolType = [symbolType, symbolType];\n    }\n\n    if (!isArray(symbolSize)) {\n      symbolSize = [symbolSize, symbolSize];\n    }\n\n    if (!isArray(symbolRotate)) {\n      symbolRotate = [symbolRotate, symbolRotate];\n    }\n\n    if (!isArray(symbolOffset)) {\n      symbolOffset = [symbolOffset, symbolOffset];\n    } // Update visual and layout of from symbol and to symbol\n\n\n    mlData.from.each(function (idx) {\n      updateDataVisualAndLayout(fromData, idx, true);\n      updateDataVisualAndLayout(toData, idx, false);\n    }); // Update visual and layout of line\n\n    lineData.each(function (idx) {\n      var lineStyle = lineData.getItemModel(idx).getModel('lineStyle').getLineStyle(); // lineData.setItemVisual(idx, {\n      //     color: lineColor || fromData.getItemVisual(idx, 'color')\n      // });\n\n      lineData.setItemLayout(idx, [fromData.getItemLayout(idx), toData.getItemLayout(idx)]);\n\n      if (lineStyle.stroke == null) {\n        lineStyle.stroke = fromData.getItemVisual(idx, 'style').fill;\n      }\n\n      lineData.setItemVisual(idx, {\n        fromSymbolKeepAspect: fromData.getItemVisual(idx, 'symbolKeepAspect'),\n        fromSymbolOffset: fromData.getItemVisual(idx, 'symbolOffset'),\n        fromSymbolRotate: fromData.getItemVisual(idx, 'symbolRotate'),\n        fromSymbolSize: fromData.getItemVisual(idx, 'symbolSize'),\n        fromSymbol: fromData.getItemVisual(idx, 'symbol'),\n        toSymbolKeepAspect: toData.getItemVisual(idx, 'symbolKeepAspect'),\n        toSymbolOffset: toData.getItemVisual(idx, 'symbolOffset'),\n        toSymbolRotate: toData.getItemVisual(idx, 'symbolRotate'),\n        toSymbolSize: toData.getItemVisual(idx, 'symbolSize'),\n        toSymbol: toData.getItemVisual(idx, 'symbol'),\n        style: lineStyle\n      });\n    });\n    lineDraw.updateData(lineData); // Set host model for tooltip\n    // FIXME\n\n    mlData.line.eachItemGraphicEl(function (el) {\n      getECData(el).dataModel = mlModel;\n      el.traverse(function (child) {\n        getECData(child).dataModel = mlModel;\n      });\n    });\n\n    function updateDataVisualAndLayout(data, idx, isFrom) {\n      var itemModel = data.getItemModel(idx);\n      updateSingleMarkerEndLayout(data, idx, isFrom, seriesModel, api);\n      var style = itemModel.getModel('itemStyle').getItemStyle();\n\n      if (style.fill == null) {\n        style.fill = getVisualFromData(seriesData, 'color');\n      }\n\n      data.setItemVisual(idx, {\n        symbolKeepAspect: itemModel.get('symbolKeepAspect'),\n        // `0` should be considered as a valid value, so use `retrieve2` instead of `||`\n        symbolOffset: retrieve2(itemModel.get('symbolOffset', true), symbolOffset[isFrom ? 0 : 1]),\n        symbolRotate: retrieve2(itemModel.get('symbolRotate', true), symbolRotate[isFrom ? 0 : 1]),\n        // TODO: when 2d array is supported, it should ignore parent\n        symbolSize: retrieve2(itemModel.get('symbolSize'), symbolSize[isFrom ? 0 : 1]),\n        symbol: retrieve2(itemModel.get('symbol', true), symbolType[isFrom ? 0 : 1]),\n        style: style\n      });\n    }\n\n    this.markKeep(lineDraw);\n    lineDraw.group.silent = mlModel.get('silent') || seriesModel.get('silent');\n  };\n\n  MarkLineView.type = 'markLine';\n  return MarkLineView;\n}(MarkerView);\n\nfunction createList(coordSys, seriesModel, mlModel) {\n  var coordDimsInfos;\n\n  if (coordSys) {\n    coordDimsInfos = map(coordSys && coordSys.dimensions, function (coordDim) {\n      var info = seriesModel.getData().getDimensionInfo(seriesModel.getData().mapDimension(coordDim)) || {}; // In map series data don't have lng and lat dimension. Fallback to same with coordSys\n\n      return extend(extend({}, info), {\n        name: coordDim,\n        // DON'T use ordinalMeta to parse and collect ordinal.\n        ordinalMeta: null\n      });\n    });\n  } else {\n    coordDimsInfos = [{\n      name: 'value',\n      type: 'float'\n    }];\n  }\n\n  var fromData = new SeriesData(coordDimsInfos, mlModel);\n  var toData = new SeriesData(coordDimsInfos, mlModel); // No dimensions\n\n  var lineData = new SeriesData([], mlModel);\n  var optData = map(mlModel.get('data'), curry(markLineTransform, seriesModel, coordSys, mlModel));\n\n  if (coordSys) {\n    optData = filter(optData, curry(markLineFilter, coordSys));\n  }\n\n  var dimValueGetter = markerHelper.createMarkerDimValueGetter(!!coordSys, coordDimsInfos);\n  fromData.initData(map(optData, function (item) {\n    return item[0];\n  }), null, dimValueGetter);\n  toData.initData(map(optData, function (item) {\n    return item[1];\n  }), null, dimValueGetter);\n  lineData.initData(map(optData, function (item) {\n    return item[2];\n  }));\n  lineData.hasItemOption = true;\n  return {\n    from: fromData,\n    to: toData,\n    line: lineData\n  };\n}\n\nexport default MarkLineView;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { __extends } from \"tslib\";\nimport MarkerModel from './MarkerModel.js';\n\nvar MarkAreaModel =\n/** @class */\nfunction (_super) {\n  __extends(MarkAreaModel, _super);\n\n  function MarkAreaModel() {\n    var _this = _super !== null && _super.apply(this, arguments) || this;\n\n    _this.type = MarkAreaModel.type;\n    return _this;\n  }\n\n  MarkAreaModel.prototype.createMarkerModelFromSeries = function (markerOpt, masterMarkerModel, ecModel) {\n    return new MarkAreaModel(markerOpt, masterMarkerModel, ecModel);\n  };\n\n  MarkAreaModel.type = 'markArea';\n  MarkAreaModel.defaultOption = {\n    // zlevel: 0,\n    // PENDING\n    z: 1,\n    tooltip: {\n      trigger: 'item'\n    },\n    // markArea should fixed on the coordinate system\n    animation: false,\n    label: {\n      show: true,\n      position: 'top'\n    },\n    itemStyle: {\n      // color and borderColor default to use color from series\n      // color: 'auto'\n      // borderColor: 'auto'\n      borderWidth: 0\n    },\n    emphasis: {\n      label: {\n        show: true,\n        position: 'top'\n      }\n    }\n  };\n  return MarkAreaModel;\n}(MarkerModel);\n\nexport default MarkAreaModel;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { __extends } from \"tslib\"; // TODO Optimize on polar\n\nimport * as colorUtil from 'zrender/lib/tool/color.js';\nimport SeriesData from '../../data/SeriesData.js';\nimport * as numberUtil from '../../util/number.js';\nimport * as graphic from '../../util/graphic.js';\nimport { toggleHoverEmphasis, setStatesStylesFromModel } from '../../util/states.js';\nimport * as markerHelper from './markerHelper.js';\nimport MarkerView from './MarkerView.js';\nimport { retrieve, mergeAll, map, curry, filter, extend, isString } from 'zrender/lib/core/util.js';\nimport { isCoordinateSystemType } from '../../coord/CoordinateSystem.js';\nimport MarkerModel from './MarkerModel.js';\nimport { makeInner } from '../../util/model.js';\nimport { getVisualFromData } from '../../visual/helper.js';\nimport { setLabelStyle, getLabelStatesModels } from '../../label/labelStyle.js';\nimport { getECData } from '../../util/innerStore.js';\nimport { parseDataValue } from '../../data/helper/dataValueHelper.js';\nvar inner = makeInner();\n\nvar markAreaTransform = function (seriesModel, coordSys, maModel, item) {\n  // item may be null\n  var item0 = item[0];\n  var item1 = item[1];\n\n  if (!item0 || !item1) {\n    return;\n  }\n\n  var lt = markerHelper.dataTransform(seriesModel, item0);\n  var rb = markerHelper.dataTransform(seriesModel, item1); // FIXME make sure lt is less than rb\n\n  var ltCoord = lt.coord;\n  var rbCoord = rb.coord;\n  ltCoord[0] = retrieve(ltCoord[0], -Infinity);\n  ltCoord[1] = retrieve(ltCoord[1], -Infinity);\n  rbCoord[0] = retrieve(rbCoord[0], Infinity);\n  rbCoord[1] = retrieve(rbCoord[1], Infinity); // Merge option into one\n\n  var result = mergeAll([{}, lt, rb]);\n  result.coord = [lt.coord, rb.coord];\n  result.x0 = lt.x;\n  result.y0 = lt.y;\n  result.x1 = rb.x;\n  result.y1 = rb.y;\n  return result;\n};\n\nfunction isInfinity(val) {\n  return !isNaN(val) && !isFinite(val);\n} // If a markArea has one dim\n\n\nfunction ifMarkAreaHasOnlyDim(dimIndex, fromCoord, toCoord, coordSys) {\n  var otherDimIndex = 1 - dimIndex;\n  return isInfinity(fromCoord[otherDimIndex]) && isInfinity(toCoord[otherDimIndex]);\n}\n\nfunction markAreaFilter(coordSys, item) {\n  var fromCoord = item.coord[0];\n  var toCoord = item.coord[1];\n  var item0 = {\n    coord: fromCoord,\n    x: item.x0,\n    y: item.y0\n  };\n  var item1 = {\n    coord: toCoord,\n    x: item.x1,\n    y: item.y1\n  };\n\n  if (isCoordinateSystemType(coordSys, 'cartesian2d')) {\n    // In case\n    // {\n    //  markArea: {\n    //    data: [{ yAxis: 2 }]\n    //  }\n    // }\n    if (fromCoord && toCoord && (ifMarkAreaHasOnlyDim(1, fromCoord, toCoord, coordSys) || ifMarkAreaHasOnlyDim(0, fromCoord, toCoord, coordSys))) {\n      return true;\n    } // Directly returning true may also do the work,\n    // because markArea will not be shown automatically\n    // when it's not included in coordinate system.\n    // But filtering ahead can avoid keeping rendering markArea\n    // when there are too many of them.\n\n\n    return markerHelper.zoneFilter(coordSys, item0, item1);\n  }\n\n  return markerHelper.dataFilter(coordSys, item0) || markerHelper.dataFilter(coordSys, item1);\n} // dims can be ['x0', 'y0'], ['x1', 'y1'], ['x0', 'y1'], ['x1', 'y0']\n\n\nfunction getSingleMarkerEndPoint(data, idx, dims, seriesModel, api) {\n  var coordSys = seriesModel.coordinateSystem;\n  var itemModel = data.getItemModel(idx);\n  var point;\n  var xPx = numberUtil.parsePercent(itemModel.get(dims[0]), api.getWidth());\n  var yPx = numberUtil.parsePercent(itemModel.get(dims[1]), api.getHeight());\n\n  if (!isNaN(xPx) && !isNaN(yPx)) {\n    point = [xPx, yPx];\n  } else {\n    // Chart like bar may have there own marker positioning logic\n    if (seriesModel.getMarkerPosition) {\n      // Consider the case that user input the right-bottom point first\n      // Pick the larger x and y as 'x1' and 'y1'\n      var pointValue0 = data.getValues(['x0', 'y0'], idx);\n      var pointValue1 = data.getValues(['x1', 'y1'], idx);\n      var clampPointValue0 = coordSys.clampData(pointValue0);\n      var clampPointValue1 = coordSys.clampData(pointValue1);\n      var pointValue = [];\n\n      if (dims[0] === 'x0') {\n        pointValue[0] = clampPointValue0[0] > clampPointValue1[0] ? pointValue1[0] : pointValue0[0];\n      } else {\n        pointValue[0] = clampPointValue0[0] > clampPointValue1[0] ? pointValue0[0] : pointValue1[0];\n      }\n\n      if (dims[1] === 'y0') {\n        pointValue[1] = clampPointValue0[1] > clampPointValue1[1] ? pointValue1[1] : pointValue0[1];\n      } else {\n        pointValue[1] = clampPointValue0[1] > clampPointValue1[1] ? pointValue0[1] : pointValue1[1];\n      } // Use the getMarkerPosition\n\n\n      point = seriesModel.getMarkerPosition(pointValue, dims, true);\n    } else {\n      var x = data.get(dims[0], idx);\n      var y = data.get(dims[1], idx);\n      var pt = [x, y];\n      coordSys.clampData && coordSys.clampData(pt, pt);\n      point = coordSys.dataToPoint(pt, true);\n    }\n\n    if (isCoordinateSystemType(coordSys, 'cartesian2d')) {\n      // TODO: TYPE ts@4.1 may still infer it as Axis instead of Axis2D. Not sure if it's a bug\n      var xAxis = coordSys.getAxis('x');\n      var yAxis = coordSys.getAxis('y');\n      var x = data.get(dims[0], idx);\n      var y = data.get(dims[1], idx);\n\n      if (isInfinity(x)) {\n        point[0] = xAxis.toGlobalCoord(xAxis.getExtent()[dims[0] === 'x0' ? 0 : 1]);\n      } else if (isInfinity(y)) {\n        point[1] = yAxis.toGlobalCoord(yAxis.getExtent()[dims[1] === 'y0' ? 0 : 1]);\n      }\n    } // Use x, y if has any\n\n\n    if (!isNaN(xPx)) {\n      point[0] = xPx;\n    }\n\n    if (!isNaN(yPx)) {\n      point[1] = yPx;\n    }\n  }\n\n  return point;\n}\n\nexport var dimPermutations = [['x0', 'y0'], ['x1', 'y0'], ['x1', 'y1'], ['x0', 'y1']];\n\nvar MarkAreaView =\n/** @class */\nfunction (_super) {\n  __extends(MarkAreaView, _super);\n\n  function MarkAreaView() {\n    var _this = _super !== null && _super.apply(this, arguments) || this;\n\n    _this.type = MarkAreaView.type;\n    return _this;\n  }\n\n  MarkAreaView.prototype.updateTransform = function (markAreaModel, ecModel, api) {\n    ecModel.eachSeries(function (seriesModel) {\n      var maModel = MarkerModel.getMarkerModelFromSeries(seriesModel, 'markArea');\n\n      if (maModel) {\n        var areaData_1 = maModel.getData();\n        areaData_1.each(function (idx) {\n          var points = map(dimPermutations, function (dim) {\n            return getSingleMarkerEndPoint(areaData_1, idx, dim, seriesModel, api);\n          }); // Layout\n\n          areaData_1.setItemLayout(idx, points);\n          var el = areaData_1.getItemGraphicEl(idx);\n          el.setShape('points', points);\n        });\n      }\n    }, this);\n  };\n\n  MarkAreaView.prototype.renderSeries = function (seriesModel, maModel, ecModel, api) {\n    var coordSys = seriesModel.coordinateSystem;\n    var seriesId = seriesModel.id;\n    var seriesData = seriesModel.getData();\n    var areaGroupMap = this.markerGroupMap;\n    var polygonGroup = areaGroupMap.get(seriesId) || areaGroupMap.set(seriesId, {\n      group: new graphic.Group()\n    });\n    this.group.add(polygonGroup.group);\n    this.markKeep(polygonGroup);\n    var areaData = createList(coordSys, seriesModel, maModel); // Line data for tooltip and formatter\n\n    maModel.setData(areaData); // Update visual and layout of line\n\n    areaData.each(function (idx) {\n      // Layout\n      var points = map(dimPermutations, function (dim) {\n        return getSingleMarkerEndPoint(areaData, idx, dim, seriesModel, api);\n      });\n      var xAxisScale = coordSys.getAxis('x').scale;\n      var yAxisScale = coordSys.getAxis('y').scale;\n      var xAxisExtent = xAxisScale.getExtent();\n      var yAxisExtent = yAxisScale.getExtent();\n      var xPointExtent = [xAxisScale.parse(areaData.get('x0', idx)), xAxisScale.parse(areaData.get('x1', idx))];\n      var yPointExtent = [yAxisScale.parse(areaData.get('y0', idx)), yAxisScale.parse(areaData.get('y1', idx))];\n      numberUtil.asc(xPointExtent);\n      numberUtil.asc(yPointExtent);\n      var overlapped = !(xAxisExtent[0] > xPointExtent[1] || xAxisExtent[1] < xPointExtent[0] || yAxisExtent[0] > yPointExtent[1] || yAxisExtent[1] < yPointExtent[0]); // If none of the area is inside coordSys, allClipped is set to be true\n      // in layout so that label will not be displayed. See #12591\n\n      var allClipped = !overlapped;\n      areaData.setItemLayout(idx, {\n        points: points,\n        allClipped: allClipped\n      });\n      var style = areaData.getItemModel(idx).getModel('itemStyle').getItemStyle();\n      var color = getVisualFromData(seriesData, 'color');\n\n      if (!style.fill) {\n        style.fill = color;\n\n        if (isString(style.fill)) {\n          style.fill = colorUtil.modifyAlpha(style.fill, 0.4);\n        }\n      }\n\n      if (!style.stroke) {\n        style.stroke = color;\n      } // Visual\n\n\n      areaData.setItemVisual(idx, 'style', style);\n    });\n    areaData.diff(inner(polygonGroup).data).add(function (idx) {\n      var layout = areaData.getItemLayout(idx);\n\n      if (!layout.allClipped) {\n        var polygon = new graphic.Polygon({\n          shape: {\n            points: layout.points\n          }\n        });\n        areaData.setItemGraphicEl(idx, polygon);\n        polygonGroup.group.add(polygon);\n      }\n    }).update(function (newIdx, oldIdx) {\n      var polygon = inner(polygonGroup).data.getItemGraphicEl(oldIdx);\n      var layout = areaData.getItemLayout(newIdx);\n\n      if (!layout.allClipped) {\n        if (polygon) {\n          graphic.updateProps(polygon, {\n            shape: {\n              points: layout.points\n            }\n          }, maModel, newIdx);\n        } else {\n          polygon = new graphic.Polygon({\n            shape: {\n              points: layout.points\n            }\n          });\n        }\n\n        areaData.setItemGraphicEl(newIdx, polygon);\n        polygonGroup.group.add(polygon);\n      } else if (polygon) {\n        polygonGroup.group.remove(polygon);\n      }\n    }).remove(function (idx) {\n      var polygon = inner(polygonGroup).data.getItemGraphicEl(idx);\n      polygonGroup.group.remove(polygon);\n    }).execute();\n    areaData.eachItemGraphicEl(function (polygon, idx) {\n      var itemModel = areaData.getItemModel(idx);\n      var style = areaData.getItemVisual(idx, 'style');\n      polygon.useStyle(areaData.getItemVisual(idx, 'style'));\n      setLabelStyle(polygon, getLabelStatesModels(itemModel), {\n        labelFetcher: maModel,\n        labelDataIndex: idx,\n        defaultText: areaData.getName(idx) || '',\n        inheritColor: isString(style.fill) ? colorUtil.modifyAlpha(style.fill, 1) : '#000'\n      });\n      setStatesStylesFromModel(polygon, itemModel);\n      toggleHoverEmphasis(polygon, null, null, itemModel.get(['emphasis', 'disabled']));\n      getECData(polygon).dataModel = maModel;\n    });\n    inner(polygonGroup).data = areaData;\n    polygonGroup.group.silent = maModel.get('silent') || seriesModel.get('silent');\n  };\n\n  MarkAreaView.type = 'markArea';\n  return MarkAreaView;\n}(MarkerView);\n\nfunction createList(coordSys, seriesModel, maModel) {\n  var areaData;\n  var dataDims;\n  var dims = ['x0', 'y0', 'x1', 'y1'];\n\n  if (coordSys) {\n    var coordDimsInfos_1 = map(coordSys && coordSys.dimensions, function (coordDim) {\n      var data = seriesModel.getData();\n      var info = data.getDimensionInfo(data.mapDimension(coordDim)) || {}; // In map series data don't have lng and lat dimension. Fallback to same with coordSys\n\n      return extend(extend({}, info), {\n        name: coordDim,\n        // DON'T use ordinalMeta to parse and collect ordinal.\n        ordinalMeta: null\n      });\n    });\n    dataDims = map(dims, function (dim, idx) {\n      return {\n        name: dim,\n        type: coordDimsInfos_1[idx % 2].type\n      };\n    });\n    areaData = new SeriesData(dataDims, maModel);\n  } else {\n    dataDims = [{\n      name: 'value',\n      type: 'float'\n    }];\n    areaData = new SeriesData(dataDims, maModel);\n  }\n\n  var optData = map(maModel.get('data'), curry(markAreaTransform, seriesModel, coordSys, maModel));\n\n  if (coordSys) {\n    optData = filter(optData, curry(markAreaFilter, coordSys));\n  }\n\n  var dimValueGetter = coordSys ? function (item, dimName, dataIndex, dimIndex) {\n    // TODO should convert to ParsedValue?\n    var rawVal = item.coord[Math.floor(dimIndex / 2)][dimIndex % 2];\n    return parseDataValue(rawVal, dataDims[dimIndex]);\n  } : function (item, dimName, dataIndex, dimIndex) {\n    return parseDataValue(item.value, dataDims[dimIndex]);\n  };\n  areaData.initData(optData, null, dimValueGetter);\n  areaData.hasItemOption = true;\n  return areaData;\n}\n\nexport default MarkAreaView;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { __extends } from \"tslib\";\nimport * as zrUtil from 'zrender/lib/core/util.js';\nimport Model from '../../model/Model.js';\nimport { isNameSpecified } from '../../util/model.js';\nimport ComponentModel from '../../model/Component.js';\n\nvar getDefaultSelectorOptions = function (ecModel, type) {\n  if (type === 'all') {\n    return {\n      type: 'all',\n      title: ecModel.getLocaleModel().get(['legend', 'selector', 'all'])\n    };\n  } else if (type === 'inverse') {\n    return {\n      type: 'inverse',\n      title: ecModel.getLocaleModel().get(['legend', 'selector', 'inverse'])\n    };\n  }\n};\n\nvar LegendModel =\n/** @class */\nfunction (_super) {\n  __extends(LegendModel, _super);\n\n  function LegendModel() {\n    var _this = _super !== null && _super.apply(this, arguments) || this;\n\n    _this.type = LegendModel.type;\n    _this.layoutMode = {\n      type: 'box',\n      // legend.width/height are maxWidth/maxHeight actually,\n      // whereas real width/height is calculated by its content.\n      // (Setting {left: 10, right: 10} does not make sense).\n      // So consider the case:\n      // `setOption({legend: {left: 10});`\n      // then `setOption({legend: {right: 10});`\n      // The previous `left` should be cleared by setting `ignoreSize`.\n      ignoreSize: true\n    };\n    return _this;\n  }\n\n  LegendModel.prototype.init = function (option, parentModel, ecModel) {\n    this.mergeDefaultAndTheme(option, ecModel);\n    option.selected = option.selected || {};\n\n    this._updateSelector(option);\n  };\n\n  LegendModel.prototype.mergeOption = function (option, ecModel) {\n    _super.prototype.mergeOption.call(this, option, ecModel);\n\n    this._updateSelector(option);\n  };\n\n  LegendModel.prototype._updateSelector = function (option) {\n    var selector = option.selector;\n    var ecModel = this.ecModel;\n\n    if (selector === true) {\n      selector = option.selector = ['all', 'inverse'];\n    }\n\n    if (zrUtil.isArray(selector)) {\n      zrUtil.each(selector, function (item, index) {\n        zrUtil.isString(item) && (item = {\n          type: item\n        });\n        selector[index] = zrUtil.merge(item, getDefaultSelectorOptions(ecModel, item.type));\n      });\n    }\n  };\n\n  LegendModel.prototype.optionUpdated = function () {\n    this._updateData(this.ecModel);\n\n    var legendData = this._data; // If selectedMode is single, try to select one\n\n    if (legendData[0] && this.get('selectedMode') === 'single') {\n      var hasSelected = false; // If has any selected in option.selected\n\n      for (var i = 0; i < legendData.length; i++) {\n        var name_1 = legendData[i].get('name');\n\n        if (this.isSelected(name_1)) {\n          // Force to unselect others\n          this.select(name_1);\n          hasSelected = true;\n          break;\n        }\n      } // Try select the first if selectedMode is single\n\n\n      !hasSelected && this.select(legendData[0].get('name'));\n    }\n  };\n\n  LegendModel.prototype._updateData = function (ecModel) {\n    var potentialData = [];\n    var availableNames = [];\n    ecModel.eachRawSeries(function (seriesModel) {\n      var seriesName = seriesModel.name;\n      availableNames.push(seriesName);\n      var isPotential;\n\n      if (seriesModel.legendVisualProvider) {\n        var provider = seriesModel.legendVisualProvider;\n        var names = provider.getAllNames();\n\n        if (!ecModel.isSeriesFiltered(seriesModel)) {\n          availableNames = availableNames.concat(names);\n        }\n\n        if (names.length) {\n          potentialData = potentialData.concat(names);\n        } else {\n          isPotential = true;\n        }\n      } else {\n        isPotential = true;\n      }\n\n      if (isPotential && isNameSpecified(seriesModel)) {\n        potentialData.push(seriesModel.name);\n      }\n    });\n    /**\r\n     * @type {Array.<string>}\r\n     * @private\r\n     */\n\n    this._availableNames = availableNames; // If legend.data is not specified in option, use availableNames as data,\n    // which is convenient for user preparing option.\n\n    var rawData = this.get('data') || potentialData;\n    var legendNameMap = zrUtil.createHashMap();\n    var legendData = zrUtil.map(rawData, function (dataItem) {\n      // Can be string or number\n      if (zrUtil.isString(dataItem) || zrUtil.isNumber(dataItem)) {\n        dataItem = {\n          name: dataItem\n        };\n      }\n\n      if (legendNameMap.get(dataItem.name)) {\n        // remove legend name duplicate\n        return null;\n      }\n\n      legendNameMap.set(dataItem.name, true);\n      return new Model(dataItem, this, this.ecModel);\n    }, this);\n    /**\r\n     * @type {Array.<module:echarts/model/Model>}\r\n     * @private\r\n     */\n\n    this._data = zrUtil.filter(legendData, function (item) {\n      return !!item;\n    });\n  };\n\n  LegendModel.prototype.getData = function () {\n    return this._data;\n  };\n\n  LegendModel.prototype.select = function (name) {\n    var selected = this.option.selected;\n    var selectedMode = this.get('selectedMode');\n\n    if (selectedMode === 'single') {\n      var data = this._data;\n      zrUtil.each(data, function (dataItem) {\n        selected[dataItem.get('name')] = false;\n      });\n    }\n\n    selected[name] = true;\n  };\n\n  LegendModel.prototype.unSelect = function (name) {\n    if (this.get('selectedMode') !== 'single') {\n      this.option.selected[name] = false;\n    }\n  };\n\n  LegendModel.prototype.toggleSelected = function (name) {\n    var selected = this.option.selected; // Default is true\n\n    if (!selected.hasOwnProperty(name)) {\n      selected[name] = true;\n    }\n\n    this[selected[name] ? 'unSelect' : 'select'](name);\n  };\n\n  LegendModel.prototype.allSelect = function () {\n    var data = this._data;\n    var selected = this.option.selected;\n    zrUtil.each(data, function (dataItem) {\n      selected[dataItem.get('name', true)] = true;\n    });\n  };\n\n  LegendModel.prototype.inverseSelect = function () {\n    var data = this._data;\n    var selected = this.option.selected;\n    zrUtil.each(data, function (dataItem) {\n      var name = dataItem.get('name', true); // Initially, default value is true\n\n      if (!selected.hasOwnProperty(name)) {\n        selected[name] = true;\n      }\n\n      selected[name] = !selected[name];\n    });\n  };\n\n  LegendModel.prototype.isSelected = function (name) {\n    var selected = this.option.selected;\n    return !(selected.hasOwnProperty(name) && !selected[name]) && zrUtil.indexOf(this._availableNames, name) >= 0;\n  };\n\n  LegendModel.prototype.getOrient = function () {\n    return this.get('orient') === 'vertical' ? {\n      index: 1,\n      name: 'vertical'\n    } : {\n      index: 0,\n      name: 'horizontal'\n    };\n  };\n\n  LegendModel.type = 'legend.plain';\n  LegendModel.dependencies = ['series'];\n  LegendModel.defaultOption = {\n    // zlevel: 0,\n    z: 4,\n    show: true,\n    orient: 'horizontal',\n    left: 'center',\n    // right: 'center',\n    top: 0,\n    // bottom: null,\n    align: 'auto',\n    backgroundColor: 'rgba(0,0,0,0)',\n    borderColor: '#ccc',\n    borderRadius: 0,\n    borderWidth: 0,\n    padding: 5,\n    itemGap: 10,\n    itemWidth: 25,\n    itemHeight: 14,\n    symbolRotate: 'inherit',\n    symbolKeepAspect: true,\n    inactiveColor: '#ccc',\n    inactiveBorderColor: '#ccc',\n    inactiveBorderWidth: 'auto',\n    itemStyle: {\n      color: 'inherit',\n      opacity: 'inherit',\n      borderColor: 'inherit',\n      borderWidth: 'auto',\n      borderCap: 'inherit',\n      borderJoin: 'inherit',\n      borderDashOffset: 'inherit',\n      borderMiterLimit: 'inherit'\n    },\n    lineStyle: {\n      width: 'auto',\n      color: 'inherit',\n      inactiveColor: '#ccc',\n      inactiveWidth: 2,\n      opacity: 'inherit',\n      type: 'inherit',\n      cap: 'inherit',\n      join: 'inherit',\n      dashOffset: 'inherit',\n      miterLimit: 'inherit'\n    },\n    textStyle: {\n      color: '#333'\n    },\n    selectedMode: true,\n    selector: false,\n    selectorLabel: {\n      show: true,\n      borderRadius: 10,\n      padding: [3, 5, 3, 5],\n      fontSize: 12,\n      fontFamily: 'sans-serif',\n      color: '#666',\n      borderWidth: 1,\n      borderColor: '#666'\n    },\n    emphasis: {\n      selectorLabel: {\n        show: true,\n        color: '#eee',\n        backgroundColor: '#666'\n      }\n    },\n    selectorPosition: 'auto',\n    selectorItemGap: 7,\n    selectorButtonGap: 10,\n    tooltip: {\n      show: false\n    }\n  };\n  return LegendModel;\n}(ComponentModel);\n\nexport default LegendModel;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { __extends } from \"tslib\";\nimport * as zrUtil from 'zrender/lib/core/util.js';\nimport { parse, stringify } from 'zrender/lib/tool/color.js';\nimport * as graphic from '../../util/graphic.js';\nimport { enableHoverEmphasis } from '../../util/states.js';\nimport { setLabelStyle, createTextStyle } from '../../label/labelStyle.js';\nimport { makeBackground } from '../helper/listComponent.js';\nimport * as layoutUtil from '../../util/layout.js';\nimport ComponentView from '../../view/Component.js';\nimport { createSymbol } from '../../util/symbol.js';\nimport { createOrUpdatePatternFromDecal } from '../../util/decal.js';\nvar curry = zrUtil.curry;\nvar each = zrUtil.each;\nvar Group = graphic.Group;\n\nvar LegendView =\n/** @class */\nfunction (_super) {\n  __extends(LegendView, _super);\n\n  function LegendView() {\n    var _this = _super !== null && _super.apply(this, arguments) || this;\n\n    _this.type = LegendView.type;\n    _this.newlineDisabled = false;\n    return _this;\n  }\n\n  LegendView.prototype.init = function () {\n    this.group.add(this._contentGroup = new Group());\n    this.group.add(this._selectorGroup = new Group());\n    this._isFirstRender = true;\n  };\n  /**\r\n   * @protected\r\n   */\n\n\n  LegendView.prototype.getContentGroup = function () {\n    return this._contentGroup;\n  };\n  /**\r\n   * @protected\r\n   */\n\n\n  LegendView.prototype.getSelectorGroup = function () {\n    return this._selectorGroup;\n  };\n  /**\r\n   * @override\r\n   */\n\n\n  LegendView.prototype.render = function (legendModel, ecModel, api) {\n    var isFirstRender = this._isFirstRender;\n    this._isFirstRender = false;\n    this.resetInner();\n\n    if (!legendModel.get('show', true)) {\n      return;\n    }\n\n    var itemAlign = legendModel.get('align');\n    var orient = legendModel.get('orient');\n\n    if (!itemAlign || itemAlign === 'auto') {\n      itemAlign = legendModel.get('left') === 'right' && orient === 'vertical' ? 'right' : 'left';\n    } // selector has been normalized to an array in model\n\n\n    var selector = legendModel.get('selector', true);\n    var selectorPosition = legendModel.get('selectorPosition', true);\n\n    if (selector && (!selectorPosition || selectorPosition === 'auto')) {\n      selectorPosition = orient === 'horizontal' ? 'end' : 'start';\n    }\n\n    this.renderInner(itemAlign, legendModel, ecModel, api, selector, orient, selectorPosition); // Perform layout.\n\n    var positionInfo = legendModel.getBoxLayoutParams();\n    var viewportSize = {\n      width: api.getWidth(),\n      height: api.getHeight()\n    };\n    var padding = legendModel.get('padding');\n    var maxSize = layoutUtil.getLayoutRect(positionInfo, viewportSize, padding);\n    var mainRect = this.layoutInner(legendModel, itemAlign, maxSize, isFirstRender, selector, selectorPosition); // Place mainGroup, based on the calculated `mainRect`.\n\n    var layoutRect = layoutUtil.getLayoutRect(zrUtil.defaults({\n      width: mainRect.width,\n      height: mainRect.height\n    }, positionInfo), viewportSize, padding);\n    this.group.x = layoutRect.x - mainRect.x;\n    this.group.y = layoutRect.y - mainRect.y;\n    this.group.markRedraw(); // Render background after group is layout.\n\n    this.group.add(this._backgroundEl = makeBackground(mainRect, legendModel));\n  };\n\n  LegendView.prototype.resetInner = function () {\n    this.getContentGroup().removeAll();\n    this._backgroundEl && this.group.remove(this._backgroundEl);\n    this.getSelectorGroup().removeAll();\n  };\n\n  LegendView.prototype.renderInner = function (itemAlign, legendModel, ecModel, api, selector, orient, selectorPosition) {\n    var contentGroup = this.getContentGroup();\n    var legendDrawnMap = zrUtil.createHashMap();\n    var selectMode = legendModel.get('selectedMode');\n    var excludeSeriesId = [];\n    ecModel.eachRawSeries(function (seriesModel) {\n      !seriesModel.get('legendHoverLink') && excludeSeriesId.push(seriesModel.id);\n    });\n    each(legendModel.getData(), function (legendItemModel, dataIndex) {\n      var name = legendItemModel.get('name'); // Use empty string or \\n as a newline string\n\n      if (!this.newlineDisabled && (name === '' || name === '\\n')) {\n        var g = new Group(); // @ts-ignore\n\n        g.newline = true;\n        contentGroup.add(g);\n        return;\n      } // Representitive series.\n\n\n      var seriesModel = ecModel.getSeriesByName(name)[0];\n\n      if (legendDrawnMap.get(name)) {\n        // Have been drawn\n        return;\n      } // Legend to control series.\n\n\n      if (seriesModel) {\n        var data = seriesModel.getData();\n        var lineVisualStyle = data.getVisual('legendLineStyle') || {};\n        var legendIcon = data.getVisual('legendIcon');\n        /**\r\n         * `data.getVisual('style')` may be the color from the register\r\n         * in series. For example, for line series,\r\n         */\n\n        var style = data.getVisual('style');\n\n        var itemGroup = this._createItem(seriesModel, name, dataIndex, legendItemModel, legendModel, itemAlign, lineVisualStyle, style, legendIcon, selectMode, api);\n\n        itemGroup.on('click', curry(dispatchSelectAction, name, null, api, excludeSeriesId)).on('mouseover', curry(dispatchHighlightAction, seriesModel.name, null, api, excludeSeriesId)).on('mouseout', curry(dispatchDownplayAction, seriesModel.name, null, api, excludeSeriesId));\n        legendDrawnMap.set(name, true);\n      } else {\n        // Legend to control data. In pie and funnel.\n        ecModel.eachRawSeries(function (seriesModel) {\n          // In case multiple series has same data name\n          if (legendDrawnMap.get(name)) {\n            return;\n          }\n\n          if (seriesModel.legendVisualProvider) {\n            var provider = seriesModel.legendVisualProvider;\n\n            if (!provider.containName(name)) {\n              return;\n            }\n\n            var idx = provider.indexOfName(name);\n            var style = provider.getItemVisual(idx, 'style');\n            var legendIcon = provider.getItemVisual(idx, 'legendIcon');\n            var colorArr = parse(style.fill); // Color may be set to transparent in visualMap when data is out of range.\n            // Do not show nothing.\n\n            if (colorArr && colorArr[3] === 0) {\n              colorArr[3] = 0.2; // TODO color is set to 0, 0, 0, 0. Should show correct RGBA\n\n              style = zrUtil.extend(zrUtil.extend({}, style), {\n                fill: stringify(colorArr, 'rgba')\n              });\n            }\n\n            var itemGroup = this._createItem(seriesModel, name, dataIndex, legendItemModel, legendModel, itemAlign, {}, style, legendIcon, selectMode, api); // FIXME: consider different series has items with the same name.\n\n\n            itemGroup.on('click', curry(dispatchSelectAction, null, name, api, excludeSeriesId)) // Should not specify the series name, consider legend controls\n            // more than one pie series.\n            .on('mouseover', curry(dispatchHighlightAction, null, name, api, excludeSeriesId)).on('mouseout', curry(dispatchDownplayAction, null, name, api, excludeSeriesId));\n            legendDrawnMap.set(name, true);\n          }\n        }, this);\n      }\n\n      if (process.env.NODE_ENV !== 'production') {\n        if (!legendDrawnMap.get(name)) {\n          console.warn(name + ' series not exists. Legend data should be same with series name or data name.');\n        }\n      }\n    }, this);\n\n    if (selector) {\n      this._createSelector(selector, legendModel, api, orient, selectorPosition);\n    }\n  };\n\n  LegendView.prototype._createSelector = function (selector, legendModel, api, orient, selectorPosition) {\n    var selectorGroup = this.getSelectorGroup();\n    each(selector, function createSelectorButton(selectorItem) {\n      var type = selectorItem.type;\n      var labelText = new graphic.Text({\n        style: {\n          x: 0,\n          y: 0,\n          align: 'center',\n          verticalAlign: 'middle'\n        },\n        onclick: function () {\n          api.dispatchAction({\n            type: type === 'all' ? 'legendAllSelect' : 'legendInverseSelect'\n          });\n        }\n      });\n      selectorGroup.add(labelText);\n      var labelModel = legendModel.getModel('selectorLabel');\n      var emphasisLabelModel = legendModel.getModel(['emphasis', 'selectorLabel']);\n      setLabelStyle(labelText, {\n        normal: labelModel,\n        emphasis: emphasisLabelModel\n      }, {\n        defaultText: selectorItem.title\n      });\n      enableHoverEmphasis(labelText);\n    });\n  };\n\n  LegendView.prototype._createItem = function (seriesModel, name, dataIndex, legendItemModel, legendModel, itemAlign, lineVisualStyle, itemVisualStyle, legendIcon, selectMode, api) {\n    var drawType = seriesModel.visualDrawType;\n    var itemWidth = legendModel.get('itemWidth');\n    var itemHeight = legendModel.get('itemHeight');\n    var isSelected = legendModel.isSelected(name);\n    var iconRotate = legendItemModel.get('symbolRotate');\n    var symbolKeepAspect = legendItemModel.get('symbolKeepAspect');\n    var legendIconType = legendItemModel.get('icon');\n    legendIcon = legendIconType || legendIcon || 'roundRect';\n    var style = getLegendStyle(legendIcon, legendItemModel, lineVisualStyle, itemVisualStyle, drawType, isSelected, api);\n    var itemGroup = new Group();\n    var textStyleModel = legendItemModel.getModel('textStyle');\n\n    if (zrUtil.isFunction(seriesModel.getLegendIcon) && (!legendIconType || legendIconType === 'inherit')) {\n      // Series has specific way to define legend icon\n      itemGroup.add(seriesModel.getLegendIcon({\n        itemWidth: itemWidth,\n        itemHeight: itemHeight,\n        icon: legendIcon,\n        iconRotate: iconRotate,\n        itemStyle: style.itemStyle,\n        lineStyle: style.lineStyle,\n        symbolKeepAspect: symbolKeepAspect\n      }));\n    } else {\n      // Use default legend icon policy for most series\n      var rotate = legendIconType === 'inherit' && seriesModel.getData().getVisual('symbol') ? iconRotate === 'inherit' ? seriesModel.getData().getVisual('symbolRotate') : iconRotate : 0; // No rotation for no icon\n\n      itemGroup.add(getDefaultLegendIcon({\n        itemWidth: itemWidth,\n        itemHeight: itemHeight,\n        icon: legendIcon,\n        iconRotate: rotate,\n        itemStyle: style.itemStyle,\n        lineStyle: style.lineStyle,\n        symbolKeepAspect: symbolKeepAspect\n      }));\n    }\n\n    var textX = itemAlign === 'left' ? itemWidth + 5 : -5;\n    var textAlign = itemAlign;\n    var formatter = legendModel.get('formatter');\n    var content = name;\n\n    if (zrUtil.isString(formatter) && formatter) {\n      content = formatter.replace('{name}', name != null ? name : '');\n    } else if (zrUtil.isFunction(formatter)) {\n      content = formatter(name);\n    }\n\n    var textColor = isSelected ? textStyleModel.getTextColor() : legendItemModel.get('inactiveColor');\n    itemGroup.add(new graphic.Text({\n      style: createTextStyle(textStyleModel, {\n        text: content,\n        x: textX,\n        y: itemHeight / 2,\n        fill: textColor,\n        align: textAlign,\n        verticalAlign: 'middle'\n      }, {\n        inheritColor: textColor\n      })\n    })); // Add a invisible rect to increase the area of mouse hover\n\n    var hitRect = new graphic.Rect({\n      shape: itemGroup.getBoundingRect(),\n      invisible: true\n    });\n    var tooltipModel = legendItemModel.getModel('tooltip');\n\n    if (tooltipModel.get('show')) {\n      graphic.setTooltipConfig({\n        el: hitRect,\n        componentModel: legendModel,\n        itemName: name,\n        itemTooltipOption: tooltipModel.option\n      });\n    }\n\n    itemGroup.add(hitRect);\n    itemGroup.eachChild(function (child) {\n      child.silent = true;\n    });\n    hitRect.silent = !selectMode;\n    this.getContentGroup().add(itemGroup);\n    enableHoverEmphasis(itemGroup); // @ts-ignore\n\n    itemGroup.__legendDataIndex = dataIndex;\n    return itemGroup;\n  };\n\n  LegendView.prototype.layoutInner = function (legendModel, itemAlign, maxSize, isFirstRender, selector, selectorPosition) {\n    var contentGroup = this.getContentGroup();\n    var selectorGroup = this.getSelectorGroup(); // Place items in contentGroup.\n\n    layoutUtil.box(legendModel.get('orient'), contentGroup, legendModel.get('itemGap'), maxSize.width, maxSize.height);\n    var contentRect = contentGroup.getBoundingRect();\n    var contentPos = [-contentRect.x, -contentRect.y];\n    selectorGroup.markRedraw();\n    contentGroup.markRedraw();\n\n    if (selector) {\n      // Place buttons in selectorGroup\n      layoutUtil.box( // Buttons in selectorGroup always layout horizontally\n      'horizontal', selectorGroup, legendModel.get('selectorItemGap', true));\n      var selectorRect = selectorGroup.getBoundingRect();\n      var selectorPos = [-selectorRect.x, -selectorRect.y];\n      var selectorButtonGap = legendModel.get('selectorButtonGap', true);\n      var orientIdx = legendModel.getOrient().index;\n      var wh = orientIdx === 0 ? 'width' : 'height';\n      var hw = orientIdx === 0 ? 'height' : 'width';\n      var yx = orientIdx === 0 ? 'y' : 'x';\n\n      if (selectorPosition === 'end') {\n        selectorPos[orientIdx] += contentRect[wh] + selectorButtonGap;\n      } else {\n        contentPos[orientIdx] += selectorRect[wh] + selectorButtonGap;\n      } // Always align selector to content as 'middle'\n\n\n      selectorPos[1 - orientIdx] += contentRect[hw] / 2 - selectorRect[hw] / 2;\n      selectorGroup.x = selectorPos[0];\n      selectorGroup.y = selectorPos[1];\n      contentGroup.x = contentPos[0];\n      contentGroup.y = contentPos[1];\n      var mainRect = {\n        x: 0,\n        y: 0\n      };\n      mainRect[wh] = contentRect[wh] + selectorButtonGap + selectorRect[wh];\n      mainRect[hw] = Math.max(contentRect[hw], selectorRect[hw]);\n      mainRect[yx] = Math.min(0, selectorRect[yx] + selectorPos[1 - orientIdx]);\n      return mainRect;\n    } else {\n      contentGroup.x = contentPos[0];\n      contentGroup.y = contentPos[1];\n      return this.group.getBoundingRect();\n    }\n  };\n  /**\r\n   * @protected\r\n   */\n\n\n  LegendView.prototype.remove = function () {\n    this.getContentGroup().removeAll();\n    this._isFirstRender = true;\n  };\n\n  LegendView.type = 'legend.plain';\n  return LegendView;\n}(ComponentView);\n\nfunction getLegendStyle(iconType, legendItemModel, lineVisualStyle, itemVisualStyle, drawType, isSelected, api) {\n  /**\r\n   * Use series style if is inherit;\r\n   * elsewise, use legend style\r\n   */\n  function handleCommonProps(style, visualStyle) {\n    // If lineStyle.width is 'auto', it is set to be 2 if series has border\n    if (style.lineWidth === 'auto') {\n      style.lineWidth = visualStyle.lineWidth > 0 ? 2 : 0;\n    }\n\n    each(style, function (propVal, propName) {\n      style[propName] === 'inherit' && (style[propName] = visualStyle[propName]);\n    });\n  } // itemStyle\n\n\n  var itemStyleModel = legendItemModel.getModel('itemStyle');\n  var itemStyle = itemStyleModel.getItemStyle();\n  var iconBrushType = iconType.lastIndexOf('empty', 0) === 0 ? 'fill' : 'stroke';\n  var decalStyle = itemStyleModel.getShallow('decal');\n  itemStyle.decal = !decalStyle || decalStyle === 'inherit' ? itemVisualStyle.decal : createOrUpdatePatternFromDecal(decalStyle, api);\n\n  if (itemStyle.fill === 'inherit') {\n    /**\r\n     * Series with visualDrawType as 'stroke' should have\r\n     * series stroke as legend fill\r\n     */\n    itemStyle.fill = itemVisualStyle[drawType];\n  }\n\n  if (itemStyle.stroke === 'inherit') {\n    /**\r\n     * icon type with \"emptyXXX\" should use fill color\r\n     * in visual style\r\n     */\n    itemStyle.stroke = itemVisualStyle[iconBrushType];\n  }\n\n  if (itemStyle.opacity === 'inherit') {\n    /**\r\n     * Use lineStyle.opacity if drawType is stroke\r\n     */\n    itemStyle.opacity = (drawType === 'fill' ? itemVisualStyle : lineVisualStyle).opacity;\n  }\n\n  handleCommonProps(itemStyle, itemVisualStyle); // lineStyle\n\n  var legendLineModel = legendItemModel.getModel('lineStyle');\n  var lineStyle = legendLineModel.getLineStyle();\n  handleCommonProps(lineStyle, lineVisualStyle); // Fix auto color to real color\n\n  itemStyle.fill === 'auto' && (itemStyle.fill = itemVisualStyle.fill);\n  itemStyle.stroke === 'auto' && (itemStyle.stroke = itemVisualStyle.fill);\n  lineStyle.stroke === 'auto' && (lineStyle.stroke = itemVisualStyle.fill);\n\n  if (!isSelected) {\n    var borderWidth = legendItemModel.get('inactiveBorderWidth');\n    /**\r\n     * Since stroke is set to be inactiveBorderColor, it may occur that\r\n     * there is no border in series but border in legend, so we need to\r\n     * use border only when series has border if is set to be auto\r\n     */\n\n    var visualHasBorder = itemStyle[iconBrushType];\n    itemStyle.lineWidth = borderWidth === 'auto' ? itemVisualStyle.lineWidth > 0 && visualHasBorder ? 2 : 0 : itemStyle.lineWidth;\n    itemStyle.fill = legendItemModel.get('inactiveColor');\n    itemStyle.stroke = legendItemModel.get('inactiveBorderColor');\n    lineStyle.stroke = legendLineModel.get('inactiveColor');\n    lineStyle.lineWidth = legendLineModel.get('inactiveWidth');\n  }\n\n  return {\n    itemStyle: itemStyle,\n    lineStyle: lineStyle\n  };\n}\n\nfunction getDefaultLegendIcon(opt) {\n  var symboType = opt.icon || 'roundRect';\n  var icon = createSymbol(symboType, 0, 0, opt.itemWidth, opt.itemHeight, opt.itemStyle.fill, opt.symbolKeepAspect);\n  icon.setStyle(opt.itemStyle);\n  icon.rotation = (opt.iconRotate || 0) * Math.PI / 180;\n  icon.setOrigin([opt.itemWidth / 2, opt.itemHeight / 2]);\n\n  if (symboType.indexOf('empty') > -1) {\n    icon.style.stroke = icon.style.fill;\n    icon.style.fill = '#fff';\n    icon.style.lineWidth = 2;\n  }\n\n  return icon;\n}\n\nfunction dispatchSelectAction(seriesName, dataName, api, excludeSeriesId) {\n  // downplay before unselect\n  dispatchDownplayAction(seriesName, dataName, api, excludeSeriesId);\n  api.dispatchAction({\n    type: 'legendToggleSelect',\n    name: seriesName != null ? seriesName : dataName\n  }); // highlight after select\n  // TODO highlight immediately may cause animation loss.\n\n  dispatchHighlightAction(seriesName, dataName, api, excludeSeriesId);\n}\n\nfunction isUseHoverLayer(api) {\n  var list = api.getZr().storage.getDisplayList();\n  var emphasisState;\n  var i = 0;\n  var len = list.length;\n\n  while (i < len && !(emphasisState = list[i].states.emphasis)) {\n    i++;\n  }\n\n  return emphasisState && emphasisState.hoverLayer;\n}\n\nfunction dispatchHighlightAction(seriesName, dataName, api, excludeSeriesId) {\n  // If element hover will move to a hoverLayer.\n  if (!isUseHoverLayer(api)) {\n    api.dispatchAction({\n      type: 'highlight',\n      seriesName: seriesName,\n      name: dataName,\n      excludeSeriesId: excludeSeriesId\n    });\n  }\n}\n\nfunction dispatchDownplayAction(seriesName, dataName, api, excludeSeriesId) {\n  // If element hover will move to a hoverLayer.\n  if (!isUseHoverLayer(api)) {\n    api.dispatchAction({\n      type: 'downplay',\n      seriesName: seriesName,\n      name: dataName,\n      excludeSeriesId: excludeSeriesId\n    });\n  }\n}\n\nexport default LegendView;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nexport default function legendFilter(ecModel) {\n  var legendModels = ecModel.findComponents({\n    mainType: 'legend'\n  });\n\n  if (legendModels && legendModels.length) {\n    ecModel.filterSeries(function (series) {\n      // If in any legend component the status is not selected.\n      // Because in legend series is assumed selected when it is not in the legend data.\n      for (var i = 0; i < legendModels.length; i++) {\n        if (!legendModels[i].isSelected(series.name)) {\n          return false;\n        }\n      }\n\n      return true;\n    });\n  }\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\n// @ts-nocheck\nimport { curry, each } from 'zrender/lib/core/util.js';\n\nfunction legendSelectActionHandler(methodName, payload, ecModel) {\n  var selectedMap = {};\n  var isToggleSelect = methodName === 'toggleSelected';\n  var isSelected; // Update all legend components\n\n  ecModel.eachComponent('legend', function (legendModel) {\n    if (isToggleSelect && isSelected != null) {\n      // Force other legend has same selected status\n      // Or the first is toggled to true and other are toggled to false\n      // In the case one legend has some item unSelected in option. And if other legend\n      // doesn't has the item, they will assume it is selected.\n      legendModel[isSelected ? 'select' : 'unSelect'](payload.name);\n    } else if (methodName === 'allSelect' || methodName === 'inverseSelect') {\n      legendModel[methodName]();\n    } else {\n      legendModel[methodName](payload.name);\n      isSelected = legendModel.isSelected(payload.name);\n    }\n\n    var legendData = legendModel.getData();\n    each(legendData, function (model) {\n      var name = model.get('name'); // Wrap element\n\n      if (name === '\\n' || name === '') {\n        return;\n      }\n\n      var isItemSelected = legendModel.isSelected(name);\n\n      if (selectedMap.hasOwnProperty(name)) {\n        // Unselected if any legend is unselected\n        selectedMap[name] = selectedMap[name] && isItemSelected;\n      } else {\n        selectedMap[name] = isItemSelected;\n      }\n    });\n  }); // Return the event explicitly\n\n  return methodName === 'allSelect' || methodName === 'inverseSelect' ? {\n    selected: selectedMap\n  } : {\n    name: payload.name,\n    selected: selectedMap\n  };\n}\n\nexport function installLegendAction(registers) {\n  /**\r\n   * @event legendToggleSelect\r\n   * @type {Object}\r\n   * @property {string} type 'legendToggleSelect'\r\n   * @property {string} [from]\r\n   * @property {string} name Series name or data item name\r\n   */\n  registers.registerAction('legendToggleSelect', 'legendselectchanged', curry(legendSelectActionHandler, 'toggleSelected'));\n  registers.registerAction('legendAllSelect', 'legendselectall', curry(legendSelectActionHandler, 'allSelect'));\n  registers.registerAction('legendInverseSelect', 'legendinverseselect', curry(legendSelectActionHandler, 'inverseSelect'));\n  /**\r\n   * @event legendSelect\r\n   * @type {Object}\r\n   * @property {string} type 'legendSelect'\r\n   * @property {string} name Series name or data item name\r\n   */\n\n  registers.registerAction('legendSelect', 'legendselected', curry(legendSelectActionHandler, 'select'));\n  /**\r\n   * @event legendUnSelect\r\n   * @type {Object}\r\n   * @property {string} type 'legendUnSelect'\r\n   * @property {string} name Series name or data item name\r\n   */\n\n  registers.registerAction('legendUnSelect', 'legendunselected', curry(legendSelectActionHandler, 'unSelect'));\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport LegendModel from './LegendModel.js';\nimport LegendView from './LegendView.js';\nimport legendFilter from './legendFilter.js';\nimport { installLegendAction } from './legendAction.js';\nexport function install(registers) {\n  registers.registerComponentModel(LegendModel);\n  registers.registerComponentView(LegendView);\n  registers.registerProcessor(registers.PRIORITY.PROCESSOR.SERIES_FILTER, legendFilter);\n  registers.registerSubTypeDefaulter('legend', function () {\n    return 'plain';\n  });\n  installLegendAction(registers);\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { __extends } from \"tslib\";\nimport LegendModel from './LegendModel.js';\nimport { mergeLayoutParam, getLayoutParams } from '../../util/layout.js';\nimport { inheritDefaultOption } from '../../util/component.js';\n\nvar ScrollableLegendModel =\n/** @class */\nfunction (_super) {\n  __extends(ScrollableLegendModel, _super);\n\n  function ScrollableLegendModel() {\n    var _this = _super !== null && _super.apply(this, arguments) || this;\n\n    _this.type = ScrollableLegendModel.type;\n    return _this;\n  }\n  /**\r\n   * @param {number} scrollDataIndex\r\n   */\n\n\n  ScrollableLegendModel.prototype.setScrollDataIndex = function (scrollDataIndex) {\n    this.option.scrollDataIndex = scrollDataIndex;\n  };\n\n  ScrollableLegendModel.prototype.init = function (option, parentModel, ecModel) {\n    var inputPositionParams = getLayoutParams(option);\n\n    _super.prototype.init.call(this, option, parentModel, ecModel);\n\n    mergeAndNormalizeLayoutParams(this, option, inputPositionParams);\n  };\n  /**\r\n   * @override\r\n   */\n\n\n  ScrollableLegendModel.prototype.mergeOption = function (option, ecModel) {\n    _super.prototype.mergeOption.call(this, option, ecModel);\n\n    mergeAndNormalizeLayoutParams(this, this.option, option);\n  };\n\n  ScrollableLegendModel.type = 'legend.scroll';\n  ScrollableLegendModel.defaultOption = inheritDefaultOption(LegendModel.defaultOption, {\n    scrollDataIndex: 0,\n    pageButtonItemGap: 5,\n    pageButtonGap: null,\n    pageButtonPosition: 'end',\n    pageFormatter: '{current}/{total}',\n    pageIcons: {\n      horizontal: ['M0,0L12,-10L12,10z', 'M0,0L-12,-10L-12,10z'],\n      vertical: ['M0,0L20,0L10,-20z', 'M0,0L20,0L10,20z']\n    },\n    pageIconColor: '#2f4554',\n    pageIconInactiveColor: '#aaa',\n    pageIconSize: 15,\n    pageTextStyle: {\n      color: '#333'\n    },\n    animationDurationUpdate: 800\n  });\n  return ScrollableLegendModel;\n}(LegendModel);\n\n; // Do not `ignoreSize` to enable setting {left: 10, right: 10}.\n\nfunction mergeAndNormalizeLayoutParams(legendModel, target, raw) {\n  var orient = legendModel.getOrient();\n  var ignoreSize = [1, 1];\n  ignoreSize[orient.index] = 0;\n  mergeLayoutParam(target, raw, {\n    type: 'box',\n    ignoreSize: !!ignoreSize\n  });\n}\n\nexport default ScrollableLegendModel;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { __extends } from \"tslib\";\n/**\r\n * Separate legend and scrollable legend to reduce package size.\r\n */\n\nimport * as zrUtil from 'zrender/lib/core/util.js';\nimport * as graphic from '../../util/graphic.js';\nimport * as layoutUtil from '../../util/layout.js';\nimport LegendView from './LegendView.js';\nvar Group = graphic.Group;\nvar WH = ['width', 'height'];\nvar XY = ['x', 'y'];\n\nvar ScrollableLegendView =\n/** @class */\nfunction (_super) {\n  __extends(ScrollableLegendView, _super);\n\n  function ScrollableLegendView() {\n    var _this = _super !== null && _super.apply(this, arguments) || this;\n\n    _this.type = ScrollableLegendView.type;\n    _this.newlineDisabled = true;\n    _this._currentIndex = 0;\n    return _this;\n  }\n\n  ScrollableLegendView.prototype.init = function () {\n    _super.prototype.init.call(this);\n\n    this.group.add(this._containerGroup = new Group());\n\n    this._containerGroup.add(this.getContentGroup());\n\n    this.group.add(this._controllerGroup = new Group());\n  };\n  /**\r\n   * @override\r\n   */\n\n\n  ScrollableLegendView.prototype.resetInner = function () {\n    _super.prototype.resetInner.call(this);\n\n    this._controllerGroup.removeAll();\n\n    this._containerGroup.removeClipPath();\n\n    this._containerGroup.__rectSize = null;\n  };\n  /**\r\n   * @override\r\n   */\n\n\n  ScrollableLegendView.prototype.renderInner = function (itemAlign, legendModel, ecModel, api, selector, orient, selectorPosition) {\n    var self = this; // Render content items.\n\n    _super.prototype.renderInner.call(this, itemAlign, legendModel, ecModel, api, selector, orient, selectorPosition);\n\n    var controllerGroup = this._controllerGroup; // FIXME: support be 'auto' adapt to size number text length,\n    // e.g., '3/12345' should not overlap with the control arrow button.\n\n    var pageIconSize = legendModel.get('pageIconSize', true);\n    var pageIconSizeArr = zrUtil.isArray(pageIconSize) ? pageIconSize : [pageIconSize, pageIconSize];\n    createPageButton('pagePrev', 0);\n    var pageTextStyleModel = legendModel.getModel('pageTextStyle');\n    controllerGroup.add(new graphic.Text({\n      name: 'pageText',\n      style: {\n        // Placeholder to calculate a proper layout.\n        text: 'xx/xx',\n        fill: pageTextStyleModel.getTextColor(),\n        font: pageTextStyleModel.getFont(),\n        verticalAlign: 'middle',\n        align: 'center'\n      },\n      silent: true\n    }));\n    createPageButton('pageNext', 1);\n\n    function createPageButton(name, iconIdx) {\n      var pageDataIndexName = name + 'DataIndex';\n      var icon = graphic.createIcon(legendModel.get('pageIcons', true)[legendModel.getOrient().name][iconIdx], {\n        // Buttons will be created in each render, so we do not need\n        // to worry about avoiding using legendModel kept in scope.\n        onclick: zrUtil.bind(self._pageGo, self, pageDataIndexName, legendModel, api)\n      }, {\n        x: -pageIconSizeArr[0] / 2,\n        y: -pageIconSizeArr[1] / 2,\n        width: pageIconSizeArr[0],\n        height: pageIconSizeArr[1]\n      });\n      icon.name = name;\n      controllerGroup.add(icon);\n    }\n  };\n  /**\r\n   * @override\r\n   */\n\n\n  ScrollableLegendView.prototype.layoutInner = function (legendModel, itemAlign, maxSize, isFirstRender, selector, selectorPosition) {\n    var selectorGroup = this.getSelectorGroup();\n    var orientIdx = legendModel.getOrient().index;\n    var wh = WH[orientIdx];\n    var xy = XY[orientIdx];\n    var hw = WH[1 - orientIdx];\n    var yx = XY[1 - orientIdx];\n    selector && layoutUtil.box( // Buttons in selectorGroup always layout horizontally\n    'horizontal', selectorGroup, legendModel.get('selectorItemGap', true));\n    var selectorButtonGap = legendModel.get('selectorButtonGap', true);\n    var selectorRect = selectorGroup.getBoundingRect();\n    var selectorPos = [-selectorRect.x, -selectorRect.y];\n    var processMaxSize = zrUtil.clone(maxSize);\n    selector && (processMaxSize[wh] = maxSize[wh] - selectorRect[wh] - selectorButtonGap);\n\n    var mainRect = this._layoutContentAndController(legendModel, isFirstRender, processMaxSize, orientIdx, wh, hw, yx, xy);\n\n    if (selector) {\n      if (selectorPosition === 'end') {\n        selectorPos[orientIdx] += mainRect[wh] + selectorButtonGap;\n      } else {\n        var offset = selectorRect[wh] + selectorButtonGap;\n        selectorPos[orientIdx] -= offset;\n        mainRect[xy] -= offset;\n      }\n\n      mainRect[wh] += selectorRect[wh] + selectorButtonGap;\n      selectorPos[1 - orientIdx] += mainRect[yx] + mainRect[hw] / 2 - selectorRect[hw] / 2;\n      mainRect[hw] = Math.max(mainRect[hw], selectorRect[hw]);\n      mainRect[yx] = Math.min(mainRect[yx], selectorRect[yx] + selectorPos[1 - orientIdx]);\n      selectorGroup.x = selectorPos[0];\n      selectorGroup.y = selectorPos[1];\n      selectorGroup.markRedraw();\n    }\n\n    return mainRect;\n  };\n\n  ScrollableLegendView.prototype._layoutContentAndController = function (legendModel, isFirstRender, maxSize, orientIdx, wh, hw, yx, xy) {\n    var contentGroup = this.getContentGroup();\n    var containerGroup = this._containerGroup;\n    var controllerGroup = this._controllerGroup; // Place items in contentGroup.\n\n    layoutUtil.box(legendModel.get('orient'), contentGroup, legendModel.get('itemGap'), !orientIdx ? null : maxSize.width, orientIdx ? null : maxSize.height);\n    layoutUtil.box( // Buttons in controller are layout always horizontally.\n    'horizontal', controllerGroup, legendModel.get('pageButtonItemGap', true));\n    var contentRect = contentGroup.getBoundingRect();\n    var controllerRect = controllerGroup.getBoundingRect();\n    var showController = this._showController = contentRect[wh] > maxSize[wh]; // In case that the inner elements of contentGroup layout do not based on [0, 0]\n\n    var contentPos = [-contentRect.x, -contentRect.y]; // Remain contentPos when scroll animation perfroming.\n    // If first rendering, `contentGroup.position` is [0, 0], which\n    // does not make sense and may cause unexepcted animation if adopted.\n\n    if (!isFirstRender) {\n      contentPos[orientIdx] = contentGroup[xy];\n    } // Layout container group based on 0.\n\n\n    var containerPos = [0, 0];\n    var controllerPos = [-controllerRect.x, -controllerRect.y];\n    var pageButtonGap = zrUtil.retrieve2(legendModel.get('pageButtonGap', true), legendModel.get('itemGap', true)); // Place containerGroup and controllerGroup and contentGroup.\n\n    if (showController) {\n      var pageButtonPosition = legendModel.get('pageButtonPosition', true); // controller is on the right / bottom.\n\n      if (pageButtonPosition === 'end') {\n        controllerPos[orientIdx] += maxSize[wh] - controllerRect[wh];\n      } // controller is on the left / top.\n      else {\n          containerPos[orientIdx] += controllerRect[wh] + pageButtonGap;\n        }\n    } // Always align controller to content as 'middle'.\n\n\n    controllerPos[1 - orientIdx] += contentRect[hw] / 2 - controllerRect[hw] / 2;\n    contentGroup.setPosition(contentPos);\n    containerGroup.setPosition(containerPos);\n    controllerGroup.setPosition(controllerPos); // Calculate `mainRect` and set `clipPath`.\n    // mainRect should not be calculated by `this.group.getBoundingRect()`\n    // for sake of the overflow.\n\n    var mainRect = {\n      x: 0,\n      y: 0\n    }; // Consider content may be overflow (should be clipped).\n\n    mainRect[wh] = showController ? maxSize[wh] : contentRect[wh];\n    mainRect[hw] = Math.max(contentRect[hw], controllerRect[hw]); // `containerRect[yx] + containerPos[1 - orientIdx]` is 0.\n\n    mainRect[yx] = Math.min(0, controllerRect[yx] + controllerPos[1 - orientIdx]);\n    containerGroup.__rectSize = maxSize[wh];\n\n    if (showController) {\n      var clipShape = {\n        x: 0,\n        y: 0\n      };\n      clipShape[wh] = Math.max(maxSize[wh] - controllerRect[wh] - pageButtonGap, 0);\n      clipShape[hw] = mainRect[hw];\n      containerGroup.setClipPath(new graphic.Rect({\n        shape: clipShape\n      })); // Consider content may be larger than container, container rect\n      // can not be obtained from `containerGroup.getBoundingRect()`.\n\n      containerGroup.__rectSize = clipShape[wh];\n    } else {\n      // Do not remove or ignore controller. Keep them set as placeholders.\n      controllerGroup.eachChild(function (child) {\n        child.attr({\n          invisible: true,\n          silent: true\n        });\n      });\n    } // Content translate animation.\n\n\n    var pageInfo = this._getPageInfo(legendModel);\n\n    pageInfo.pageIndex != null && graphic.updateProps(contentGroup, {\n      x: pageInfo.contentPosition[0],\n      y: pageInfo.contentPosition[1]\n    }, // When switch from \"show controller\" to \"not show controller\", view should be\n    // updated immediately without animation, otherwise causes weird effect.\n    showController ? legendModel : null);\n\n    this._updatePageInfoView(legendModel, pageInfo);\n\n    return mainRect;\n  };\n\n  ScrollableLegendView.prototype._pageGo = function (to, legendModel, api) {\n    var scrollDataIndex = this._getPageInfo(legendModel)[to];\n\n    scrollDataIndex != null && api.dispatchAction({\n      type: 'legendScroll',\n      scrollDataIndex: scrollDataIndex,\n      legendId: legendModel.id\n    });\n  };\n\n  ScrollableLegendView.prototype._updatePageInfoView = function (legendModel, pageInfo) {\n    var controllerGroup = this._controllerGroup;\n    zrUtil.each(['pagePrev', 'pageNext'], function (name) {\n      var key = name + 'DataIndex';\n      var canJump = pageInfo[key] != null;\n      var icon = controllerGroup.childOfName(name);\n\n      if (icon) {\n        icon.setStyle('fill', canJump ? legendModel.get('pageIconColor', true) : legendModel.get('pageIconInactiveColor', true));\n        icon.cursor = canJump ? 'pointer' : 'default';\n      }\n    });\n    var pageText = controllerGroup.childOfName('pageText');\n    var pageFormatter = legendModel.get('pageFormatter');\n    var pageIndex = pageInfo.pageIndex;\n    var current = pageIndex != null ? pageIndex + 1 : 0;\n    var total = pageInfo.pageCount;\n    pageText && pageFormatter && pageText.setStyle('text', zrUtil.isString(pageFormatter) ? pageFormatter.replace('{current}', current == null ? '' : current + '').replace('{total}', total == null ? '' : total + '') : pageFormatter({\n      current: current,\n      total: total\n    }));\n  };\n  /**\r\n   *  contentPosition: Array.<number>, null when data item not found.\r\n   *  pageIndex: number, null when data item not found.\r\n   *  pageCount: number, always be a number, can be 0.\r\n   *  pagePrevDataIndex: number, null when no previous page.\r\n   *  pageNextDataIndex: number, null when no next page.\r\n   * }\r\n   */\n\n\n  ScrollableLegendView.prototype._getPageInfo = function (legendModel) {\n    var scrollDataIndex = legendModel.get('scrollDataIndex', true);\n    var contentGroup = this.getContentGroup();\n    var containerRectSize = this._containerGroup.__rectSize;\n    var orientIdx = legendModel.getOrient().index;\n    var wh = WH[orientIdx];\n    var xy = XY[orientIdx];\n\n    var targetItemIndex = this._findTargetItemIndex(scrollDataIndex);\n\n    var children = contentGroup.children();\n    var targetItem = children[targetItemIndex];\n    var itemCount = children.length;\n    var pCount = !itemCount ? 0 : 1;\n    var result = {\n      contentPosition: [contentGroup.x, contentGroup.y],\n      pageCount: pCount,\n      pageIndex: pCount - 1,\n      pagePrevDataIndex: null,\n      pageNextDataIndex: null\n    };\n\n    if (!targetItem) {\n      return result;\n    }\n\n    var targetItemInfo = getItemInfo(targetItem);\n    result.contentPosition[orientIdx] = -targetItemInfo.s; // Strategy:\n    // (1) Always align based on the left/top most item.\n    // (2) It is user-friendly that the last item shown in the\n    // current window is shown at the begining of next window.\n    // Otherwise if half of the last item is cut by the window,\n    // it will have no chance to display entirely.\n    // (3) Consider that item size probably be different, we\n    // have calculate pageIndex by size rather than item index,\n    // and we can not get page index directly by division.\n    // (4) The window is to narrow to contain more than\n    // one item, we should make sure that the page can be fliped.\n\n    for (var i = targetItemIndex + 1, winStartItemInfo = targetItemInfo, winEndItemInfo = targetItemInfo, currItemInfo = null; i <= itemCount; ++i) {\n      currItemInfo = getItemInfo(children[i]);\n\n      if ( // Half of the last item is out of the window.\n      !currItemInfo && winEndItemInfo.e > winStartItemInfo.s + containerRectSize || // If the current item does not intersect with the window, the new page\n      // can be started at the current item or the last item.\n      currItemInfo && !intersect(currItemInfo, winStartItemInfo.s)) {\n        if (winEndItemInfo.i > winStartItemInfo.i) {\n          winStartItemInfo = winEndItemInfo;\n        } else {\n          // e.g., when page size is smaller than item size.\n          winStartItemInfo = currItemInfo;\n        }\n\n        if (winStartItemInfo) {\n          if (result.pageNextDataIndex == null) {\n            result.pageNextDataIndex = winStartItemInfo.i;\n          }\n\n          ++result.pageCount;\n        }\n      }\n\n      winEndItemInfo = currItemInfo;\n    }\n\n    for (var i = targetItemIndex - 1, winStartItemInfo = targetItemInfo, winEndItemInfo = targetItemInfo, currItemInfo = null; i >= -1; --i) {\n      currItemInfo = getItemInfo(children[i]);\n\n      if ( // If the the end item does not intersect with the window started\n      // from the current item, a page can be settled.\n      (!currItemInfo || !intersect(winEndItemInfo, currItemInfo.s)) && // e.g., when page size is smaller than item size.\n      winStartItemInfo.i < winEndItemInfo.i) {\n        winEndItemInfo = winStartItemInfo;\n\n        if (result.pagePrevDataIndex == null) {\n          result.pagePrevDataIndex = winStartItemInfo.i;\n        }\n\n        ++result.pageCount;\n        ++result.pageIndex;\n      }\n\n      winStartItemInfo = currItemInfo;\n    }\n\n    return result;\n\n    function getItemInfo(el) {\n      if (el) {\n        var itemRect = el.getBoundingRect();\n        var start = itemRect[xy] + el[xy];\n        return {\n          s: start,\n          e: start + itemRect[wh],\n          i: el.__legendDataIndex\n        };\n      }\n    }\n\n    function intersect(itemInfo, winStart) {\n      return itemInfo.e >= winStart && itemInfo.s <= winStart + containerRectSize;\n    }\n  };\n\n  ScrollableLegendView.prototype._findTargetItemIndex = function (targetDataIndex) {\n    if (!this._showController) {\n      return 0;\n    }\n\n    var index;\n    var contentGroup = this.getContentGroup();\n    var defaultIndex;\n    contentGroup.eachChild(function (child, idx) {\n      var legendDataIdx = child.__legendDataIndex; // FIXME\n      // If the given targetDataIndex (from model) is illegal,\n      // we use defaultIndex. But the index on the legend model and\n      // action payload is still illegal. That case will not be\n      // changed until some scenario requires.\n\n      if (defaultIndex == null && legendDataIdx != null) {\n        defaultIndex = idx;\n      }\n\n      if (legendDataIdx === targetDataIndex) {\n        index = idx;\n      }\n    });\n    return index != null ? index : defaultIndex;\n  };\n\n  ScrollableLegendView.type = 'legend.scroll';\n  return ScrollableLegendView;\n}(LegendView);\n\nexport default ScrollableLegendView;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { use } from '../../extension.js';\nimport { install as installLegendPlain } from './installLegendPlain.js';\nimport ScrollableLegendModel from './ScrollableLegendModel.js';\nimport ScrollableLegendView from './ScrollableLegendView.js';\nimport installScrollableLegendAction from './scrollableLegendAction.js';\nexport function install(registers) {\n  use(installLegendPlain);\n  registers.registerComponentModel(ScrollableLegendModel);\n  registers.registerComponentView(ScrollableLegendView);\n  installScrollableLegendAction(registers);\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nexport default function installScrollableLegendAction(registers) {\n  /**\r\n   * @event legendScroll\r\n   * @type {Object}\r\n   * @property {string} type 'legendScroll'\r\n   * @property {string} scrollDataIndex\r\n   */\n  registers.registerAction('legendScroll', 'legendscroll', function (payload, ecModel) {\n    var scrollDataIndex = payload.scrollDataIndex;\n    scrollDataIndex != null && ecModel.eachComponent({\n      mainType: 'legend',\n      subType: 'scroll',\n      query: payload\n    }, function (legendModel) {\n      legendModel.setScrollDataIndex(scrollDataIndex);\n    });\n  });\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { __extends } from \"tslib\";\nimport DataZoomModel from './DataZoomModel.js';\nimport { inheritDefaultOption } from '../../util/component.js';\n\nvar InsideZoomModel =\n/** @class */\nfunction (_super) {\n  __extends(InsideZoomModel, _super);\n\n  function InsideZoomModel() {\n    var _this = _super !== null && _super.apply(this, arguments) || this;\n\n    _this.type = InsideZoomModel.type;\n    return _this;\n  }\n\n  InsideZoomModel.type = 'dataZoom.inside';\n  InsideZoomModel.defaultOption = inheritDefaultOption(DataZoomModel.defaultOption, {\n    disabled: false,\n    zoomLock: false,\n    zoomOnMouseWheel: true,\n    moveOnMouseMove: true,\n    moveOnMouseWheel: false,\n    preventDefaultMouseMove: true\n  });\n  return InsideZoomModel;\n}(DataZoomModel);\n\nexport default InsideZoomModel;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\n// Only create one roam controller for each coordinate system.\n// one roam controller might be refered by two inside data zoom\n// components (for example, one for x and one for y). When user\n// pan or zoom, only dispatch one action for those data zoom\n// components.\nimport RoamController from '../../component/helper/RoamController.js';\nimport * as throttleUtil from '../../util/throttle.js';\nimport { makeInner } from '../../util/model.js';\nimport { each, curry, createHashMap } from 'zrender/lib/core/util.js';\nimport { collectReferCoordSysModelInfo } from './helper.js';\nvar inner = makeInner();\nexport function setViewInfoToCoordSysRecord(api, dataZoomModel, getRange) {\n  inner(api).coordSysRecordMap.each(function (coordSysRecord) {\n    var dzInfo = coordSysRecord.dataZoomInfoMap.get(dataZoomModel.uid);\n\n    if (dzInfo) {\n      dzInfo.getRange = getRange;\n    }\n  });\n}\nexport function disposeCoordSysRecordIfNeeded(api, dataZoomModel) {\n  var coordSysRecordMap = inner(api).coordSysRecordMap;\n  var coordSysKeyArr = coordSysRecordMap.keys();\n\n  for (var i = 0; i < coordSysKeyArr.length; i++) {\n    var coordSysKey = coordSysKeyArr[i];\n    var coordSysRecord = coordSysRecordMap.get(coordSysKey);\n    var dataZoomInfoMap = coordSysRecord.dataZoomInfoMap;\n\n    if (dataZoomInfoMap) {\n      var dzUid = dataZoomModel.uid;\n      var dzInfo = dataZoomInfoMap.get(dzUid);\n\n      if (dzInfo) {\n        dataZoomInfoMap.removeKey(dzUid);\n\n        if (!dataZoomInfoMap.keys().length) {\n          disposeCoordSysRecord(coordSysRecordMap, coordSysRecord);\n        }\n      }\n    }\n  }\n}\n\nfunction disposeCoordSysRecord(coordSysRecordMap, coordSysRecord) {\n  if (coordSysRecord) {\n    coordSysRecordMap.removeKey(coordSysRecord.model.uid);\n    var controller = coordSysRecord.controller;\n    controller && controller.dispose();\n  }\n}\n\nfunction createCoordSysRecord(api, coordSysModel) {\n  // These init props will never change after record created.\n  var coordSysRecord = {\n    model: coordSysModel,\n    containsPoint: curry(containsPoint, coordSysModel),\n    dispatchAction: curry(dispatchAction, api),\n    dataZoomInfoMap: null,\n    controller: null\n  }; // Must not do anything depends on coordSysRecord outside the event handler here,\n  // because coordSysRecord not completed yet.\n\n  var controller = coordSysRecord.controller = new RoamController(api.getZr());\n  each(['pan', 'zoom', 'scrollMove'], function (eventName) {\n    controller.on(eventName, function (event) {\n      var batch = [];\n      coordSysRecord.dataZoomInfoMap.each(function (dzInfo) {\n        // Check whether the behaviors (zoomOnMouseWheel, moveOnMouseMove,\n        // moveOnMouseWheel, ...) enabled.\n        if (!event.isAvailableBehavior(dzInfo.model.option)) {\n          return;\n        }\n\n        var method = (dzInfo.getRange || {})[eventName];\n        var range = method && method(dzInfo.dzReferCoordSysInfo, coordSysRecord.model.mainType, coordSysRecord.controller, event);\n        !dzInfo.model.get('disabled', true) && range && batch.push({\n          dataZoomId: dzInfo.model.id,\n          start: range[0],\n          end: range[1]\n        });\n      });\n      batch.length && coordSysRecord.dispatchAction(batch);\n    });\n  });\n  return coordSysRecord;\n}\n/**\r\n * This action will be throttled.\r\n */\n\n\nfunction dispatchAction(api, batch) {\n  if (!api.isDisposed()) {\n    api.dispatchAction({\n      type: 'dataZoom',\n      animation: {\n        easing: 'cubicOut',\n        duration: 100\n      },\n      batch: batch\n    });\n  }\n}\n\nfunction containsPoint(coordSysModel, e, x, y) {\n  return coordSysModel.coordinateSystem.containPoint([x, y]);\n}\n/**\r\n * Merge roamController settings when multiple dataZooms share one roamController.\r\n */\n\n\nfunction mergeControllerParams(dataZoomInfoMap) {\n  var controlType; // DO NOT use reserved word (true, false, undefined) as key literally. Even if encapsulated\n  // as string, it is probably revert to reserved word by compress tool. See #7411.\n\n  var prefix = 'type_';\n  var typePriority = {\n    'type_true': 2,\n    'type_move': 1,\n    'type_false': 0,\n    'type_undefined': -1\n  };\n  var preventDefaultMouseMove = true;\n  dataZoomInfoMap.each(function (dataZoomInfo) {\n    var dataZoomModel = dataZoomInfo.model;\n    var oneType = dataZoomModel.get('disabled', true) ? false : dataZoomModel.get('zoomLock', true) ? 'move' : true;\n\n    if (typePriority[prefix + oneType] > typePriority[prefix + controlType]) {\n      controlType = oneType;\n    } // Prevent default move event by default. If one false, do not prevent. Otherwise\n    // users may be confused why it does not work when multiple insideZooms exist.\n\n\n    preventDefaultMouseMove = preventDefaultMouseMove && dataZoomModel.get('preventDefaultMouseMove', true);\n  });\n  return {\n    controlType: controlType,\n    opt: {\n      // RoamController will enable all of these functionalities,\n      // and the final behavior is determined by its event listener\n      // provided by each inside zoom.\n      zoomOnMouseWheel: true,\n      moveOnMouseMove: true,\n      moveOnMouseWheel: true,\n      preventDefaultMouseMove: !!preventDefaultMouseMove\n    }\n  };\n}\n\nexport function installDataZoomRoamProcessor(registers) {\n  registers.registerProcessor(registers.PRIORITY.PROCESSOR.FILTER, function (ecModel, api) {\n    var apiInner = inner(api);\n    var coordSysRecordMap = apiInner.coordSysRecordMap || (apiInner.coordSysRecordMap = createHashMap());\n    coordSysRecordMap.each(function (coordSysRecord) {\n      // `coordSysRecordMap` always exists (because it holds the `roam controller`, which should\n      // better not re-create each time), but clear `dataZoomInfoMap` each round of the workflow.\n      coordSysRecord.dataZoomInfoMap = null;\n    });\n    ecModel.eachComponent({\n      mainType: 'dataZoom',\n      subType: 'inside'\n    }, function (dataZoomModel) {\n      var dzReferCoordSysWrap = collectReferCoordSysModelInfo(dataZoomModel);\n      each(dzReferCoordSysWrap.infoList, function (dzCoordSysInfo) {\n        var coordSysUid = dzCoordSysInfo.model.uid;\n        var coordSysRecord = coordSysRecordMap.get(coordSysUid) || coordSysRecordMap.set(coordSysUid, createCoordSysRecord(api, dzCoordSysInfo.model));\n        var dataZoomInfoMap = coordSysRecord.dataZoomInfoMap || (coordSysRecord.dataZoomInfoMap = createHashMap()); // Notice these props might be changed each time for a single dataZoomModel.\n\n        dataZoomInfoMap.set(dataZoomModel.uid, {\n          dzReferCoordSysInfo: dzCoordSysInfo,\n          model: dataZoomModel,\n          getRange: null\n        });\n      });\n    }); // (1) Merge dataZoom settings for each coord sys and set to the roam controller.\n    // (2) Clear coord sys if not refered by any dataZoom.\n\n    coordSysRecordMap.each(function (coordSysRecord) {\n      var controller = coordSysRecord.controller;\n      var firstDzInfo;\n      var dataZoomInfoMap = coordSysRecord.dataZoomInfoMap;\n\n      if (dataZoomInfoMap) {\n        var firstDzKey = dataZoomInfoMap.keys()[0];\n\n        if (firstDzKey != null) {\n          firstDzInfo = dataZoomInfoMap.get(firstDzKey);\n        }\n      }\n\n      if (!firstDzInfo) {\n        disposeCoordSysRecord(coordSysRecordMap, coordSysRecord);\n        return;\n      }\n\n      var controllerParams = mergeControllerParams(dataZoomInfoMap);\n      controller.enable(controllerParams.controlType, controllerParams.opt);\n      controller.setPointerChecker(coordSysRecord.containsPoint);\n      throttleUtil.createOrUpdate(coordSysRecord, 'dispatchAction', firstDzInfo.model.get('throttle', true), 'fixRate');\n    });\n  });\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { __extends } from \"tslib\";\nimport DataZoomView from './DataZoomView.js';\nimport sliderMove from '../helper/sliderMove.js';\nimport * as roams from './roams.js';\nimport { bind } from 'zrender/lib/core/util.js';\n\nvar InsideZoomView =\n/** @class */\nfunction (_super) {\n  __extends(InsideZoomView, _super);\n\n  function InsideZoomView() {\n    var _this = _super !== null && _super.apply(this, arguments) || this;\n\n    _this.type = 'dataZoom.inside';\n    return _this;\n  }\n\n  InsideZoomView.prototype.render = function (dataZoomModel, ecModel, api) {\n    _super.prototype.render.apply(this, arguments);\n\n    if (dataZoomModel.noTarget()) {\n      this._clear();\n\n      return;\n    } // Hence the `throttle` util ensures to preserve command order,\n    // here simply updating range all the time will not cause missing\n    // any of the the roam change.\n\n\n    this.range = dataZoomModel.getPercentRange(); // Reset controllers.\n\n    roams.setViewInfoToCoordSysRecord(api, dataZoomModel, {\n      pan: bind(getRangeHandlers.pan, this),\n      zoom: bind(getRangeHandlers.zoom, this),\n      scrollMove: bind(getRangeHandlers.scrollMove, this)\n    });\n  };\n\n  InsideZoomView.prototype.dispose = function () {\n    this._clear();\n\n    _super.prototype.dispose.apply(this, arguments);\n  };\n\n  InsideZoomView.prototype._clear = function () {\n    roams.disposeCoordSysRecordIfNeeded(this.api, this.dataZoomModel);\n    this.range = null;\n  };\n\n  InsideZoomView.type = 'dataZoom.inside';\n  return InsideZoomView;\n}(DataZoomView);\n\nvar getRangeHandlers = {\n  zoom: function (coordSysInfo, coordSysMainType, controller, e) {\n    var lastRange = this.range;\n    var range = lastRange.slice(); // Calculate transform by the first axis.\n\n    var axisModel = coordSysInfo.axisModels[0];\n\n    if (!axisModel) {\n      return;\n    }\n\n    var directionInfo = getDirectionInfo[coordSysMainType](null, [e.originX, e.originY], axisModel, controller, coordSysInfo);\n    var percentPoint = (directionInfo.signal > 0 ? directionInfo.pixelStart + directionInfo.pixelLength - directionInfo.pixel : directionInfo.pixel - directionInfo.pixelStart) / directionInfo.pixelLength * (range[1] - range[0]) + range[0];\n    var scale = Math.max(1 / e.scale, 0);\n    range[0] = (range[0] - percentPoint) * scale + percentPoint;\n    range[1] = (range[1] - percentPoint) * scale + percentPoint; // Restrict range.\n\n    var minMaxSpan = this.dataZoomModel.findRepresentativeAxisProxy().getMinMaxSpan();\n    sliderMove(0, range, [0, 100], 0, minMaxSpan.minSpan, minMaxSpan.maxSpan);\n    this.range = range;\n\n    if (lastRange[0] !== range[0] || lastRange[1] !== range[1]) {\n      return range;\n    }\n  },\n  pan: makeMover(function (range, axisModel, coordSysInfo, coordSysMainType, controller, e) {\n    var directionInfo = getDirectionInfo[coordSysMainType]([e.oldX, e.oldY], [e.newX, e.newY], axisModel, controller, coordSysInfo);\n    return directionInfo.signal * (range[1] - range[0]) * directionInfo.pixel / directionInfo.pixelLength;\n  }),\n  scrollMove: makeMover(function (range, axisModel, coordSysInfo, coordSysMainType, controller, e) {\n    var directionInfo = getDirectionInfo[coordSysMainType]([0, 0], [e.scrollDelta, e.scrollDelta], axisModel, controller, coordSysInfo);\n    return directionInfo.signal * (range[1] - range[0]) * e.scrollDelta;\n  })\n};\n\nfunction makeMover(getPercentDelta) {\n  return function (coordSysInfo, coordSysMainType, controller, e) {\n    var lastRange = this.range;\n    var range = lastRange.slice(); // Calculate transform by the first axis.\n\n    var axisModel = coordSysInfo.axisModels[0];\n\n    if (!axisModel) {\n      return;\n    }\n\n    var percentDelta = getPercentDelta(range, axisModel, coordSysInfo, coordSysMainType, controller, e);\n    sliderMove(percentDelta, range, [0, 100], 'all');\n    this.range = range;\n\n    if (lastRange[0] !== range[0] || lastRange[1] !== range[1]) {\n      return range;\n    }\n  };\n}\n\nvar getDirectionInfo = {\n  grid: function (oldPoint, newPoint, axisModel, controller, coordSysInfo) {\n    var axis = axisModel.axis;\n    var ret = {};\n    var rect = coordSysInfo.model.coordinateSystem.getRect();\n    oldPoint = oldPoint || [0, 0];\n\n    if (axis.dim === 'x') {\n      ret.pixel = newPoint[0] - oldPoint[0];\n      ret.pixelLength = rect.width;\n      ret.pixelStart = rect.x;\n      ret.signal = axis.inverse ? 1 : -1;\n    } else {\n      // axis.dim === 'y'\n      ret.pixel = newPoint[1] - oldPoint[1];\n      ret.pixelLength = rect.height;\n      ret.pixelStart = rect.y;\n      ret.signal = axis.inverse ? -1 : 1;\n    }\n\n    return ret;\n  },\n  polar: function (oldPoint, newPoint, axisModel, controller, coordSysInfo) {\n    var axis = axisModel.axis;\n    var ret = {};\n    var polar = coordSysInfo.model.coordinateSystem;\n    var radiusExtent = polar.getRadiusAxis().getExtent();\n    var angleExtent = polar.getAngleAxis().getExtent();\n    oldPoint = oldPoint ? polar.pointToCoord(oldPoint) : [0, 0];\n    newPoint = polar.pointToCoord(newPoint);\n\n    if (axisModel.mainType === 'radiusAxis') {\n      ret.pixel = newPoint[0] - oldPoint[0]; // ret.pixelLength = Math.abs(radiusExtent[1] - radiusExtent[0]);\n      // ret.pixelStart = Math.min(radiusExtent[0], radiusExtent[1]);\n\n      ret.pixelLength = radiusExtent[1] - radiusExtent[0];\n      ret.pixelStart = radiusExtent[0];\n      ret.signal = axis.inverse ? 1 : -1;\n    } else {\n      // 'angleAxis'\n      ret.pixel = newPoint[1] - oldPoint[1]; // ret.pixelLength = Math.abs(angleExtent[1] - angleExtent[0]);\n      // ret.pixelStart = Math.min(angleExtent[0], angleExtent[1]);\n\n      ret.pixelLength = angleExtent[1] - angleExtent[0];\n      ret.pixelStart = angleExtent[0];\n      ret.signal = axis.inverse ? -1 : 1;\n    }\n\n    return ret;\n  },\n  singleAxis: function (oldPoint, newPoint, axisModel, controller, coordSysInfo) {\n    var axis = axisModel.axis;\n    var rect = coordSysInfo.model.coordinateSystem.getRect();\n    var ret = {};\n    oldPoint = oldPoint || [0, 0];\n\n    if (axis.orient === 'horizontal') {\n      ret.pixel = newPoint[0] - oldPoint[0];\n      ret.pixelLength = rect.width;\n      ret.pixelStart = rect.x;\n      ret.signal = axis.inverse ? 1 : -1;\n    } else {\n      // 'vertical'\n      ret.pixel = newPoint[1] - oldPoint[1];\n      ret.pixelLength = rect.height;\n      ret.pixelStart = rect.y;\n      ret.signal = axis.inverse ? -1 : 1;\n    }\n\n    return ret;\n  }\n};\nexport default InsideZoomView;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport InsideZoomModel from './InsideZoomModel.js';\nimport InsideZoomView from './InsideZoomView.js';\nimport { installDataZoomRoamProcessor } from './roams.js';\nimport installCommon from './installCommon.js';\nexport function install(registers) {\n  installCommon(registers);\n  registers.registerComponentModel(InsideZoomModel);\n  registers.registerComponentView(InsideZoomView);\n  installDataZoomRoamProcessor(registers);\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { __extends } from \"tslib\";\nimport DataZoomModel from './DataZoomModel.js';\nimport { inheritDefaultOption } from '../../util/component.js';\n\nvar SliderZoomModel =\n/** @class */\nfunction (_super) {\n  __extends(SliderZoomModel, _super);\n\n  function SliderZoomModel() {\n    var _this = _super !== null && _super.apply(this, arguments) || this;\n\n    _this.type = SliderZoomModel.type;\n    return _this;\n  }\n\n  SliderZoomModel.type = 'dataZoom.slider';\n  SliderZoomModel.layoutMode = 'box';\n  SliderZoomModel.defaultOption = inheritDefaultOption(DataZoomModel.defaultOption, {\n    show: true,\n    // deault value can only be drived in view stage.\n    right: 'ph',\n    top: 'ph',\n    width: 'ph',\n    height: 'ph',\n    left: null,\n    bottom: null,\n    borderColor: '#d2dbee',\n    borderRadius: 3,\n    backgroundColor: 'rgba(47,69,84,0)',\n    // dataBackgroundColor: '#ddd',\n    dataBackground: {\n      lineStyle: {\n        color: '#d2dbee',\n        width: 0.5\n      },\n      areaStyle: {\n        color: '#d2dbee',\n        opacity: 0.2\n      }\n    },\n    selectedDataBackground: {\n      lineStyle: {\n        color: '#8fb0f7',\n        width: 0.5\n      },\n      areaStyle: {\n        color: '#8fb0f7',\n        opacity: 0.2\n      }\n    },\n    // Color of selected window.\n    fillerColor: 'rgba(135,175,274,0.2)',\n    handleIcon: 'path://M-9.35,34.56V42m0-40V9.5m-2,0h4a2,2,0,0,1,2,2v21a2,2,0,0,1-2,2h-4a2,2,0,0,1-2-2v-21A2,2,0,0,1-11.35,9.5Z',\n    // Percent of the slider height\n    handleSize: '100%',\n    handleStyle: {\n      color: '#fff',\n      borderColor: '#ACB8D1'\n    },\n    moveHandleSize: 7,\n    moveHandleIcon: 'path://M-320.9-50L-320.9-50c18.1,0,27.1,9,27.1,27.1V85.7c0,18.1-9,27.1-27.1,27.1l0,0c-18.1,0-27.1-9-27.1-27.1V-22.9C-348-41-339-50-320.9-50z M-212.3-50L-212.3-50c18.1,0,27.1,9,27.1,27.1V85.7c0,18.1-9,27.1-27.1,27.1l0,0c-18.1,0-27.1-9-27.1-27.1V-22.9C-239.4-41-230.4-50-212.3-50z M-103.7-50L-103.7-50c18.1,0,27.1,9,27.1,27.1V85.7c0,18.1-9,27.1-27.1,27.1l0,0c-18.1,0-27.1-9-27.1-27.1V-22.9C-130.9-41-121.8-50-103.7-50z',\n    moveHandleStyle: {\n      color: '#D2DBEE',\n      opacity: 0.7\n    },\n    showDetail: true,\n    showDataShadow: 'auto',\n    realtime: true,\n    zoomLock: false,\n    textStyle: {\n      color: '#6E7079'\n    },\n    brushSelect: true,\n    brushStyle: {\n      color: 'rgba(135,175,274,0.15)'\n    },\n    emphasis: {\n      handleStyle: {\n        borderColor: '#8FB0F7'\n      },\n      moveHandleStyle: {\n        color: '#8FB0F7'\n      }\n    }\n  });\n  return SliderZoomModel;\n}(DataZoomModel);\n\nexport default SliderZoomModel;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { __extends } from \"tslib\";\nimport { bind, each, isFunction, isString, indexOf } from 'zrender/lib/core/util.js';\nimport * as eventTool from 'zrender/lib/core/event.js';\nimport * as graphic from '../../util/graphic.js';\nimport * as throttle from '../../util/throttle.js';\nimport DataZoomView from './DataZoomView.js';\nimport { linearMap, asc, parsePercent } from '../../util/number.js';\nimport * as layout from '../../util/layout.js';\nimport sliderMove from '../helper/sliderMove.js';\nimport { getAxisMainType, collectReferCoordSysModelInfo } from './helper.js';\nimport { enableHoverEmphasis } from '../../util/states.js';\nimport { createSymbol, symbolBuildProxies } from '../../util/symbol.js';\nimport { deprecateLog } from '../../util/log.js';\nimport { createTextStyle } from '../../label/labelStyle.js';\nvar Rect = graphic.Rect; // Constants\n\nvar DEFAULT_LOCATION_EDGE_GAP = 7;\nvar DEFAULT_FRAME_BORDER_WIDTH = 1;\nvar DEFAULT_FILLER_SIZE = 30;\nvar DEFAULT_MOVE_HANDLE_SIZE = 7;\nvar HORIZONTAL = 'horizontal';\nvar VERTICAL = 'vertical';\nvar LABEL_GAP = 5;\nvar SHOW_DATA_SHADOW_SERIES_TYPE = ['line', 'bar', 'candlestick', 'scatter'];\nvar REALTIME_ANIMATION_CONFIG = {\n  easing: 'cubicOut',\n  duration: 100,\n  delay: 0\n};\n\nvar SliderZoomView =\n/** @class */\nfunction (_super) {\n  __extends(SliderZoomView, _super);\n\n  function SliderZoomView() {\n    var _this = _super !== null && _super.apply(this, arguments) || this;\n\n    _this.type = SliderZoomView.type;\n    _this._displayables = {};\n    return _this;\n  }\n\n  SliderZoomView.prototype.init = function (ecModel, api) {\n    this.api = api; // A unique handler for each dataZoom component\n\n    this._onBrush = bind(this._onBrush, this);\n    this._onBrushEnd = bind(this._onBrushEnd, this);\n  };\n\n  SliderZoomView.prototype.render = function (dataZoomModel, ecModel, api, payload) {\n    _super.prototype.render.apply(this, arguments);\n\n    throttle.createOrUpdate(this, '_dispatchZoomAction', dataZoomModel.get('throttle'), 'fixRate');\n    this._orient = dataZoomModel.getOrient();\n\n    if (dataZoomModel.get('show') === false) {\n      this.group.removeAll();\n      return;\n    }\n\n    if (dataZoomModel.noTarget()) {\n      this._clear();\n\n      this.group.removeAll();\n      return;\n    } // Notice: this._resetInterval() should not be executed when payload.type\n    // is 'dataZoom', origin this._range should be maintained, otherwise 'pan'\n    // or 'zoom' info will be missed because of 'throttle' of this.dispatchAction,\n\n\n    if (!payload || payload.type !== 'dataZoom' || payload.from !== this.uid) {\n      this._buildView();\n    }\n\n    this._updateView();\n  };\n\n  SliderZoomView.prototype.dispose = function () {\n    this._clear();\n\n    _super.prototype.dispose.apply(this, arguments);\n  };\n\n  SliderZoomView.prototype._clear = function () {\n    throttle.clear(this, '_dispatchZoomAction');\n    var zr = this.api.getZr();\n    zr.off('mousemove', this._onBrush);\n    zr.off('mouseup', this._onBrushEnd);\n  };\n\n  SliderZoomView.prototype._buildView = function () {\n    var thisGroup = this.group;\n    thisGroup.removeAll();\n    this._brushing = false;\n    this._displayables.brushRect = null;\n\n    this._resetLocation();\n\n    this._resetInterval();\n\n    var barGroup = this._displayables.sliderGroup = new graphic.Group();\n\n    this._renderBackground();\n\n    this._renderHandle();\n\n    this._renderDataShadow();\n\n    thisGroup.add(barGroup);\n\n    this._positionGroup();\n  };\n\n  SliderZoomView.prototype._resetLocation = function () {\n    var dataZoomModel = this.dataZoomModel;\n    var api = this.api;\n    var showMoveHandle = dataZoomModel.get('brushSelect');\n    var moveHandleSize = showMoveHandle ? DEFAULT_MOVE_HANDLE_SIZE : 0; // If some of x/y/width/height are not specified,\n    // auto-adapt according to target grid.\n\n    var coordRect = this._findCoordRect();\n\n    var ecSize = {\n      width: api.getWidth(),\n      height: api.getHeight()\n    }; // Default align by coordinate system rect.\n\n    var positionInfo = this._orient === HORIZONTAL ? {\n      // Why using 'right', because right should be used in vertical,\n      // and it is better to be consistent for dealing with position param merge.\n      right: ecSize.width - coordRect.x - coordRect.width,\n      top: ecSize.height - DEFAULT_FILLER_SIZE - DEFAULT_LOCATION_EDGE_GAP - moveHandleSize,\n      width: coordRect.width,\n      height: DEFAULT_FILLER_SIZE\n    } : {\n      right: DEFAULT_LOCATION_EDGE_GAP,\n      top: coordRect.y,\n      width: DEFAULT_FILLER_SIZE,\n      height: coordRect.height\n    }; // Do not write back to option and replace value 'ph', because\n    // the 'ph' value should be recalculated when resize.\n\n    var layoutParams = layout.getLayoutParams(dataZoomModel.option); // Replace the placeholder value.\n\n    each(['right', 'top', 'width', 'height'], function (name) {\n      if (layoutParams[name] === 'ph') {\n        layoutParams[name] = positionInfo[name];\n      }\n    });\n    var layoutRect = layout.getLayoutRect(layoutParams, ecSize);\n    this._location = {\n      x: layoutRect.x,\n      y: layoutRect.y\n    };\n    this._size = [layoutRect.width, layoutRect.height];\n    this._orient === VERTICAL && this._size.reverse();\n  };\n\n  SliderZoomView.prototype._positionGroup = function () {\n    var thisGroup = this.group;\n    var location = this._location;\n    var orient = this._orient; // Just use the first axis to determine mapping.\n\n    var targetAxisModel = this.dataZoomModel.getFirstTargetAxisModel();\n    var inverse = targetAxisModel && targetAxisModel.get('inverse');\n    var sliderGroup = this._displayables.sliderGroup;\n    var otherAxisInverse = (this._dataShadowInfo || {}).otherAxisInverse; // Transform barGroup.\n\n    sliderGroup.attr(orient === HORIZONTAL && !inverse ? {\n      scaleY: otherAxisInverse ? 1 : -1,\n      scaleX: 1\n    } : orient === HORIZONTAL && inverse ? {\n      scaleY: otherAxisInverse ? 1 : -1,\n      scaleX: -1\n    } : orient === VERTICAL && !inverse ? {\n      scaleY: otherAxisInverse ? -1 : 1,\n      scaleX: 1,\n      rotation: Math.PI / 2\n    } // Don't use Math.PI, considering shadow direction.\n    : {\n      scaleY: otherAxisInverse ? -1 : 1,\n      scaleX: -1,\n      rotation: Math.PI / 2\n    }); // Position barGroup\n\n    var rect = thisGroup.getBoundingRect([sliderGroup]);\n    thisGroup.x = location.x - rect.x;\n    thisGroup.y = location.y - rect.y;\n    thisGroup.markRedraw();\n  };\n\n  SliderZoomView.prototype._getViewExtent = function () {\n    return [0, this._size[0]];\n  };\n\n  SliderZoomView.prototype._renderBackground = function () {\n    var dataZoomModel = this.dataZoomModel;\n    var size = this._size;\n    var barGroup = this._displayables.sliderGroup;\n    var brushSelect = dataZoomModel.get('brushSelect');\n    barGroup.add(new Rect({\n      silent: true,\n      shape: {\n        x: 0,\n        y: 0,\n        width: size[0],\n        height: size[1]\n      },\n      style: {\n        fill: dataZoomModel.get('backgroundColor')\n      },\n      z2: -40\n    })); // Click panel, over shadow, below handles.\n\n    var clickPanel = new Rect({\n      shape: {\n        x: 0,\n        y: 0,\n        width: size[0],\n        height: size[1]\n      },\n      style: {\n        fill: 'transparent'\n      },\n      z2: 0,\n      onclick: bind(this._onClickPanel, this)\n    });\n    var zr = this.api.getZr();\n\n    if (brushSelect) {\n      clickPanel.on('mousedown', this._onBrushStart, this);\n      clickPanel.cursor = 'crosshair';\n      zr.on('mousemove', this._onBrush);\n      zr.on('mouseup', this._onBrushEnd);\n    } else {\n      zr.off('mousemove', this._onBrush);\n      zr.off('mouseup', this._onBrushEnd);\n    }\n\n    barGroup.add(clickPanel);\n  };\n\n  SliderZoomView.prototype._renderDataShadow = function () {\n    var info = this._dataShadowInfo = this._prepareDataShadowInfo();\n\n    this._displayables.dataShadowSegs = [];\n\n    if (!info) {\n      return;\n    }\n\n    var size = this._size;\n    var oldSize = this._shadowSize || [];\n    var seriesModel = info.series;\n    var data = seriesModel.getRawData();\n    var candlestickDim = seriesModel.getShadowDim && seriesModel.getShadowDim();\n    var otherDim = candlestickDim && data.getDimensionInfo(candlestickDim) ? seriesModel.getShadowDim() // @see candlestick\n    : info.otherDim;\n\n    if (otherDim == null) {\n      return;\n    }\n\n    var polygonPts = this._shadowPolygonPts;\n    var polylinePts = this._shadowPolylinePts; // Not re-render if data doesn't change.\n\n    if (data !== this._shadowData || otherDim !== this._shadowDim || size[0] !== oldSize[0] || size[1] !== oldSize[1]) {\n      var otherDataExtent_1 = data.getDataExtent(otherDim); // Nice extent.\n\n      var otherOffset = (otherDataExtent_1[1] - otherDataExtent_1[0]) * 0.3;\n      otherDataExtent_1 = [otherDataExtent_1[0] - otherOffset, otherDataExtent_1[1] + otherOffset];\n      var otherShadowExtent_1 = [0, size[1]];\n      var thisShadowExtent = [0, size[0]];\n      var areaPoints_1 = [[size[0], 0], [0, 0]];\n      var linePoints_1 = [];\n      var step_1 = thisShadowExtent[1] / (data.count() - 1);\n      var thisCoord_1 = 0; // Optimize for large data shadow\n\n      var stride_1 = Math.round(data.count() / size[0]);\n      var lastIsEmpty_1;\n      data.each([otherDim], function (value, index) {\n        if (stride_1 > 0 && index % stride_1) {\n          thisCoord_1 += step_1;\n          return;\n        } // FIXME\n        // Should consider axis.min/axis.max when drawing dataShadow.\n        // FIXME\n        // 应该使用统一的空判断？还是在list里进行空判断？\n\n\n        var isEmpty = value == null || isNaN(value) || value === ''; // See #4235.\n\n        var otherCoord = isEmpty ? 0 : linearMap(value, otherDataExtent_1, otherShadowExtent_1, true); // Attempt to draw data shadow precisely when there are empty value.\n\n        if (isEmpty && !lastIsEmpty_1 && index) {\n          areaPoints_1.push([areaPoints_1[areaPoints_1.length - 1][0], 0]);\n          linePoints_1.push([linePoints_1[linePoints_1.length - 1][0], 0]);\n        } else if (!isEmpty && lastIsEmpty_1) {\n          areaPoints_1.push([thisCoord_1, 0]);\n          linePoints_1.push([thisCoord_1, 0]);\n        }\n\n        areaPoints_1.push([thisCoord_1, otherCoord]);\n        linePoints_1.push([thisCoord_1, otherCoord]);\n        thisCoord_1 += step_1;\n        lastIsEmpty_1 = isEmpty;\n      });\n      polygonPts = this._shadowPolygonPts = areaPoints_1;\n      polylinePts = this._shadowPolylinePts = linePoints_1;\n    }\n\n    this._shadowData = data;\n    this._shadowDim = otherDim;\n    this._shadowSize = [size[0], size[1]];\n    var dataZoomModel = this.dataZoomModel;\n\n    function createDataShadowGroup(isSelectedArea) {\n      var model = dataZoomModel.getModel(isSelectedArea ? 'selectedDataBackground' : 'dataBackground');\n      var group = new graphic.Group();\n      var polygon = new graphic.Polygon({\n        shape: {\n          points: polygonPts\n        },\n        segmentIgnoreThreshold: 1,\n        style: model.getModel('areaStyle').getAreaStyle(),\n        silent: true,\n        z2: -20\n      });\n      var polyline = new graphic.Polyline({\n        shape: {\n          points: polylinePts\n        },\n        segmentIgnoreThreshold: 1,\n        style: model.getModel('lineStyle').getLineStyle(),\n        silent: true,\n        z2: -19\n      });\n      group.add(polygon);\n      group.add(polyline);\n      return group;\n    } // let dataBackgroundModel = dataZoomModel.getModel('dataBackground');\n\n\n    for (var i = 0; i < 3; i++) {\n      var group = createDataShadowGroup(i === 1);\n\n      this._displayables.sliderGroup.add(group);\n\n      this._displayables.dataShadowSegs.push(group);\n    }\n  };\n\n  SliderZoomView.prototype._prepareDataShadowInfo = function () {\n    var dataZoomModel = this.dataZoomModel;\n    var showDataShadow = dataZoomModel.get('showDataShadow');\n\n    if (showDataShadow === false) {\n      return;\n    } // Find a representative series.\n\n\n    var result;\n    var ecModel = this.ecModel;\n    dataZoomModel.eachTargetAxis(function (axisDim, axisIndex) {\n      var seriesModels = dataZoomModel.getAxisProxy(axisDim, axisIndex).getTargetSeriesModels();\n      each(seriesModels, function (seriesModel) {\n        if (result) {\n          return;\n        }\n\n        if (showDataShadow !== true && indexOf(SHOW_DATA_SHADOW_SERIES_TYPE, seriesModel.get('type')) < 0) {\n          return;\n        }\n\n        var thisAxis = ecModel.getComponent(getAxisMainType(axisDim), axisIndex).axis;\n        var otherDim = getOtherDim(axisDim);\n        var otherAxisInverse;\n        var coordSys = seriesModel.coordinateSystem;\n\n        if (otherDim != null && coordSys.getOtherAxis) {\n          otherAxisInverse = coordSys.getOtherAxis(thisAxis).inverse;\n        }\n\n        otherDim = seriesModel.getData().mapDimension(otherDim);\n        result = {\n          thisAxis: thisAxis,\n          series: seriesModel,\n          thisDim: axisDim,\n          otherDim: otherDim,\n          otherAxisInverse: otherAxisInverse\n        };\n      }, this);\n    }, this);\n    return result;\n  };\n\n  SliderZoomView.prototype._renderHandle = function () {\n    var thisGroup = this.group;\n    var displayables = this._displayables;\n    var handles = displayables.handles = [null, null];\n    var handleLabels = displayables.handleLabels = [null, null];\n    var sliderGroup = this._displayables.sliderGroup;\n    var size = this._size;\n    var dataZoomModel = this.dataZoomModel;\n    var api = this.api;\n    var borderRadius = dataZoomModel.get('borderRadius') || 0;\n    var brushSelect = dataZoomModel.get('brushSelect');\n    var filler = displayables.filler = new Rect({\n      silent: brushSelect,\n      style: {\n        fill: dataZoomModel.get('fillerColor')\n      },\n      textConfig: {\n        position: 'inside'\n      }\n    });\n    sliderGroup.add(filler); // Frame border.\n\n    sliderGroup.add(new Rect({\n      silent: true,\n      subPixelOptimize: true,\n      shape: {\n        x: 0,\n        y: 0,\n        width: size[0],\n        height: size[1],\n        r: borderRadius\n      },\n      style: {\n        // deprecated option\n        stroke: dataZoomModel.get('dataBackgroundColor') || dataZoomModel.get('borderColor'),\n        lineWidth: DEFAULT_FRAME_BORDER_WIDTH,\n        fill: 'rgba(0,0,0,0)'\n      }\n    })); // Left and right handle to resize\n\n    each([0, 1], function (handleIndex) {\n      var iconStr = dataZoomModel.get('handleIcon');\n\n      if (!symbolBuildProxies[iconStr] && iconStr.indexOf('path://') < 0 && iconStr.indexOf('image://') < 0) {\n        // Compatitable with the old icon parsers. Which can use a path string without path://\n        iconStr = 'path://' + iconStr;\n\n        if (process.env.NODE_ENV !== 'production') {\n          deprecateLog('handleIcon now needs \\'path://\\' prefix when using a path string');\n        }\n      }\n\n      var path = createSymbol(iconStr, -1, 0, 2, 2, null, true);\n      path.attr({\n        cursor: getCursor(this._orient),\n        draggable: true,\n        drift: bind(this._onDragMove, this, handleIndex),\n        ondragend: bind(this._onDragEnd, this),\n        onmouseover: bind(this._showDataInfo, this, true),\n        onmouseout: bind(this._showDataInfo, this, false),\n        z2: 5\n      });\n      var bRect = path.getBoundingRect();\n      var handleSize = dataZoomModel.get('handleSize');\n      this._handleHeight = parsePercent(handleSize, this._size[1]);\n      this._handleWidth = bRect.width / bRect.height * this._handleHeight;\n      path.setStyle(dataZoomModel.getModel('handleStyle').getItemStyle());\n      path.style.strokeNoScale = true;\n      path.rectHover = true;\n      path.ensureState('emphasis').style = dataZoomModel.getModel(['emphasis', 'handleStyle']).getItemStyle();\n      enableHoverEmphasis(path);\n      var handleColor = dataZoomModel.get('handleColor'); // deprecated option\n      // Compatitable with previous version\n\n      if (handleColor != null) {\n        path.style.fill = handleColor;\n      }\n\n      sliderGroup.add(handles[handleIndex] = path);\n      var textStyleModel = dataZoomModel.getModel('textStyle');\n      thisGroup.add(handleLabels[handleIndex] = new graphic.Text({\n        silent: true,\n        invisible: true,\n        style: createTextStyle(textStyleModel, {\n          x: 0,\n          y: 0,\n          text: '',\n          verticalAlign: 'middle',\n          align: 'center',\n          fill: textStyleModel.getTextColor(),\n          font: textStyleModel.getFont()\n        }),\n        z2: 10\n      }));\n    }, this); // Handle to move. Only visible when brushSelect is set true.\n\n    var actualMoveZone = filler;\n\n    if (brushSelect) {\n      var moveHandleHeight = parsePercent(dataZoomModel.get('moveHandleSize'), size[1]);\n      var moveHandle_1 = displayables.moveHandle = new graphic.Rect({\n        style: dataZoomModel.getModel('moveHandleStyle').getItemStyle(),\n        silent: true,\n        shape: {\n          r: [0, 0, 2, 2],\n          y: size[1] - 0.5,\n          height: moveHandleHeight\n        }\n      });\n      var iconSize = moveHandleHeight * 0.8;\n      var moveHandleIcon = displayables.moveHandleIcon = createSymbol(dataZoomModel.get('moveHandleIcon'), -iconSize / 2, -iconSize / 2, iconSize, iconSize, '#fff', true);\n      moveHandleIcon.silent = true;\n      moveHandleIcon.y = size[1] + moveHandleHeight / 2 - 0.5;\n      moveHandle_1.ensureState('emphasis').style = dataZoomModel.getModel(['emphasis', 'moveHandleStyle']).getItemStyle();\n      var moveZoneExpandSize = Math.min(size[1] / 2, Math.max(moveHandleHeight, 10));\n      actualMoveZone = displayables.moveZone = new graphic.Rect({\n        invisible: true,\n        shape: {\n          y: size[1] - moveZoneExpandSize,\n          height: moveHandleHeight + moveZoneExpandSize\n        }\n      });\n      actualMoveZone.on('mouseover', function () {\n        api.enterEmphasis(moveHandle_1);\n      }).on('mouseout', function () {\n        api.leaveEmphasis(moveHandle_1);\n      });\n      sliderGroup.add(moveHandle_1);\n      sliderGroup.add(moveHandleIcon);\n      sliderGroup.add(actualMoveZone);\n    }\n\n    actualMoveZone.attr({\n      draggable: true,\n      cursor: getCursor(this._orient),\n      drift: bind(this._onDragMove, this, 'all'),\n      ondragstart: bind(this._showDataInfo, this, true),\n      ondragend: bind(this._onDragEnd, this),\n      onmouseover: bind(this._showDataInfo, this, true),\n      onmouseout: bind(this._showDataInfo, this, false)\n    });\n  };\n\n  SliderZoomView.prototype._resetInterval = function () {\n    var range = this._range = this.dataZoomModel.getPercentRange();\n\n    var viewExtent = this._getViewExtent();\n\n    this._handleEnds = [linearMap(range[0], [0, 100], viewExtent, true), linearMap(range[1], [0, 100], viewExtent, true)];\n  };\n\n  SliderZoomView.prototype._updateInterval = function (handleIndex, delta) {\n    var dataZoomModel = this.dataZoomModel;\n    var handleEnds = this._handleEnds;\n\n    var viewExtend = this._getViewExtent();\n\n    var minMaxSpan = dataZoomModel.findRepresentativeAxisProxy().getMinMaxSpan();\n    var percentExtent = [0, 100];\n    sliderMove(delta, handleEnds, viewExtend, dataZoomModel.get('zoomLock') ? 'all' : handleIndex, minMaxSpan.minSpan != null ? linearMap(minMaxSpan.minSpan, percentExtent, viewExtend, true) : null, minMaxSpan.maxSpan != null ? linearMap(minMaxSpan.maxSpan, percentExtent, viewExtend, true) : null);\n    var lastRange = this._range;\n    var range = this._range = asc([linearMap(handleEnds[0], viewExtend, percentExtent, true), linearMap(handleEnds[1], viewExtend, percentExtent, true)]);\n    return !lastRange || lastRange[0] !== range[0] || lastRange[1] !== range[1];\n  };\n\n  SliderZoomView.prototype._updateView = function (nonRealtime) {\n    var displaybles = this._displayables;\n    var handleEnds = this._handleEnds;\n    var handleInterval = asc(handleEnds.slice());\n    var size = this._size;\n    each([0, 1], function (handleIndex) {\n      // Handles\n      var handle = displaybles.handles[handleIndex];\n      var handleHeight = this._handleHeight;\n      handle.attr({\n        scaleX: handleHeight / 2,\n        scaleY: handleHeight / 2,\n        // This is a trick, by adding an extra tiny offset to let the default handle's end point align to the drag window.\n        // NOTE: It may affect some custom shapes a bit. But we prefer to have better result by default.\n        x: handleEnds[handleIndex] + (handleIndex ? -1 : 1),\n        y: size[1] / 2 - handleHeight / 2\n      });\n    }, this); // Filler\n\n    displaybles.filler.setShape({\n      x: handleInterval[0],\n      y: 0,\n      width: handleInterval[1] - handleInterval[0],\n      height: size[1]\n    });\n    var viewExtent = {\n      x: handleInterval[0],\n      width: handleInterval[1] - handleInterval[0]\n    }; // Move handle\n\n    if (displaybles.moveHandle) {\n      displaybles.moveHandle.setShape(viewExtent);\n      displaybles.moveZone.setShape(viewExtent); // Force update path on the invisible object\n\n      displaybles.moveZone.getBoundingRect();\n      displaybles.moveHandleIcon && displaybles.moveHandleIcon.attr('x', viewExtent.x + viewExtent.width / 2);\n    } // update clip path of shadow.\n\n\n    var dataShadowSegs = displaybles.dataShadowSegs;\n    var segIntervals = [0, handleInterval[0], handleInterval[1], size[0]];\n\n    for (var i = 0; i < dataShadowSegs.length; i++) {\n      var segGroup = dataShadowSegs[i];\n      var clipPath = segGroup.getClipPath();\n\n      if (!clipPath) {\n        clipPath = new graphic.Rect();\n        segGroup.setClipPath(clipPath);\n      }\n\n      clipPath.setShape({\n        x: segIntervals[i],\n        y: 0,\n        width: segIntervals[i + 1] - segIntervals[i],\n        height: size[1]\n      });\n    }\n\n    this._updateDataInfo(nonRealtime);\n  };\n\n  SliderZoomView.prototype._updateDataInfo = function (nonRealtime) {\n    var dataZoomModel = this.dataZoomModel;\n    var displaybles = this._displayables;\n    var handleLabels = displaybles.handleLabels;\n    var orient = this._orient;\n    var labelTexts = ['', '']; // FIXME\n    // date型，支持formatter，autoformatter（ec2 date.getAutoFormatter）\n\n    if (dataZoomModel.get('showDetail')) {\n      var axisProxy = dataZoomModel.findRepresentativeAxisProxy();\n\n      if (axisProxy) {\n        var axis = axisProxy.getAxisModel().axis;\n        var range = this._range;\n        var dataInterval = nonRealtime // See #4434, data and axis are not processed and reset yet in non-realtime mode.\n        ? axisProxy.calculateDataWindow({\n          start: range[0],\n          end: range[1]\n        }).valueWindow : axisProxy.getDataValueWindow();\n        labelTexts = [this._formatLabel(dataInterval[0], axis), this._formatLabel(dataInterval[1], axis)];\n      }\n    }\n\n    var orderedHandleEnds = asc(this._handleEnds.slice());\n    setLabel.call(this, 0);\n    setLabel.call(this, 1);\n\n    function setLabel(handleIndex) {\n      // Label\n      // Text should not transform by barGroup.\n      // Ignore handlers transform\n      var barTransform = graphic.getTransform(displaybles.handles[handleIndex].parent, this.group);\n      var direction = graphic.transformDirection(handleIndex === 0 ? 'right' : 'left', barTransform);\n      var offset = this._handleWidth / 2 + LABEL_GAP;\n      var textPoint = graphic.applyTransform([orderedHandleEnds[handleIndex] + (handleIndex === 0 ? -offset : offset), this._size[1] / 2], barTransform);\n      handleLabels[handleIndex].setStyle({\n        x: textPoint[0],\n        y: textPoint[1],\n        verticalAlign: orient === HORIZONTAL ? 'middle' : direction,\n        align: orient === HORIZONTAL ? direction : 'center',\n        text: labelTexts[handleIndex]\n      });\n    }\n  };\n\n  SliderZoomView.prototype._formatLabel = function (value, axis) {\n    var dataZoomModel = this.dataZoomModel;\n    var labelFormatter = dataZoomModel.get('labelFormatter');\n    var labelPrecision = dataZoomModel.get('labelPrecision');\n\n    if (labelPrecision == null || labelPrecision === 'auto') {\n      labelPrecision = axis.getPixelPrecision();\n    }\n\n    var valueStr = value == null || isNaN(value) ? '' // FIXME Glue code\n    : axis.type === 'category' || axis.type === 'time' ? axis.scale.getLabel({\n      value: Math.round(value)\n    }) // param of toFixed should less then 20.\n    : value.toFixed(Math.min(labelPrecision, 20));\n    return isFunction(labelFormatter) ? labelFormatter(value, valueStr) : isString(labelFormatter) ? labelFormatter.replace('{value}', valueStr) : valueStr;\n  };\n  /**\r\n   * @param showOrHide true: show, false: hide\r\n   */\n\n\n  SliderZoomView.prototype._showDataInfo = function (showOrHide) {\n    // Always show when drgging.\n    showOrHide = this._dragging || showOrHide;\n    var displayables = this._displayables;\n    var handleLabels = displayables.handleLabels;\n    handleLabels[0].attr('invisible', !showOrHide);\n    handleLabels[1].attr('invisible', !showOrHide); // Highlight move handle\n\n    displayables.moveHandle && this.api[showOrHide ? 'enterEmphasis' : 'leaveEmphasis'](displayables.moveHandle, 1);\n  };\n\n  SliderZoomView.prototype._onDragMove = function (handleIndex, dx, dy, event) {\n    this._dragging = true; // For mobile device, prevent screen slider on the button.\n\n    eventTool.stop(event.event); // Transform dx, dy to bar coordination.\n\n    var barTransform = this._displayables.sliderGroup.getLocalTransform();\n\n    var vertex = graphic.applyTransform([dx, dy], barTransform, true);\n\n    var changed = this._updateInterval(handleIndex, vertex[0]);\n\n    var realtime = this.dataZoomModel.get('realtime');\n\n    this._updateView(!realtime); // Avoid dispatch dataZoom repeatly but range not changed,\n    // which cause bad visual effect when progressive enabled.\n\n\n    changed && realtime && this._dispatchZoomAction(true);\n  };\n\n  SliderZoomView.prototype._onDragEnd = function () {\n    this._dragging = false;\n\n    this._showDataInfo(false); // While in realtime mode and stream mode, dispatch action when\n    // drag end will cause the whole view rerender, which is unnecessary.\n\n\n    var realtime = this.dataZoomModel.get('realtime');\n    !realtime && this._dispatchZoomAction(false);\n  };\n\n  SliderZoomView.prototype._onClickPanel = function (e) {\n    var size = this._size;\n\n    var localPoint = this._displayables.sliderGroup.transformCoordToLocal(e.offsetX, e.offsetY);\n\n    if (localPoint[0] < 0 || localPoint[0] > size[0] || localPoint[1] < 0 || localPoint[1] > size[1]) {\n      return;\n    }\n\n    var handleEnds = this._handleEnds;\n    var center = (handleEnds[0] + handleEnds[1]) / 2;\n\n    var changed = this._updateInterval('all', localPoint[0] - center);\n\n    this._updateView();\n\n    changed && this._dispatchZoomAction(false);\n  };\n\n  SliderZoomView.prototype._onBrushStart = function (e) {\n    var x = e.offsetX;\n    var y = e.offsetY;\n    this._brushStart = new graphic.Point(x, y);\n    this._brushing = true;\n    this._brushStartTime = +new Date(); // this._updateBrushRect(x, y);\n  };\n\n  SliderZoomView.prototype._onBrushEnd = function (e) {\n    if (!this._brushing) {\n      return;\n    }\n\n    var brushRect = this._displayables.brushRect;\n    this._brushing = false;\n\n    if (!brushRect) {\n      return;\n    }\n\n    brushRect.attr('ignore', true);\n    var brushShape = brushRect.shape;\n    var brushEndTime = +new Date(); // console.log(brushEndTime - this._brushStartTime);\n\n    if (brushEndTime - this._brushStartTime < 200 && Math.abs(brushShape.width) < 5) {\n      // Will treat it as a click\n      return;\n    }\n\n    var viewExtend = this._getViewExtent();\n\n    var percentExtent = [0, 100];\n    this._range = asc([linearMap(brushShape.x, viewExtend, percentExtent, true), linearMap(brushShape.x + brushShape.width, viewExtend, percentExtent, true)]);\n    this._handleEnds = [brushShape.x, brushShape.x + brushShape.width];\n\n    this._updateView();\n\n    this._dispatchZoomAction(false);\n  };\n\n  SliderZoomView.prototype._onBrush = function (e) {\n    if (this._brushing) {\n      // For mobile device, prevent screen slider on the button.\n      eventTool.stop(e.event);\n\n      this._updateBrushRect(e.offsetX, e.offsetY);\n    }\n  };\n\n  SliderZoomView.prototype._updateBrushRect = function (mouseX, mouseY) {\n    var displayables = this._displayables;\n    var dataZoomModel = this.dataZoomModel;\n    var brushRect = displayables.brushRect;\n\n    if (!brushRect) {\n      brushRect = displayables.brushRect = new Rect({\n        silent: true,\n        style: dataZoomModel.getModel('brushStyle').getItemStyle()\n      });\n      displayables.sliderGroup.add(brushRect);\n    }\n\n    brushRect.attr('ignore', false);\n    var brushStart = this._brushStart;\n    var sliderGroup = this._displayables.sliderGroup;\n    var endPoint = sliderGroup.transformCoordToLocal(mouseX, mouseY);\n    var startPoint = sliderGroup.transformCoordToLocal(brushStart.x, brushStart.y);\n    var size = this._size;\n    endPoint[0] = Math.max(Math.min(size[0], endPoint[0]), 0);\n    brushRect.setShape({\n      x: startPoint[0],\n      y: 0,\n      width: endPoint[0] - startPoint[0],\n      height: size[1]\n    });\n  };\n  /**\r\n   * This action will be throttled.\r\n   */\n\n\n  SliderZoomView.prototype._dispatchZoomAction = function (realtime) {\n    var range = this._range;\n    this.api.dispatchAction({\n      type: 'dataZoom',\n      from: this.uid,\n      dataZoomId: this.dataZoomModel.id,\n      animation: realtime ? REALTIME_ANIMATION_CONFIG : null,\n      start: range[0],\n      end: range[1]\n    });\n  };\n\n  SliderZoomView.prototype._findCoordRect = function () {\n    // Find the grid corresponding to the first axis referred by dataZoom.\n    var rect;\n    var coordSysInfoList = collectReferCoordSysModelInfo(this.dataZoomModel).infoList;\n\n    if (!rect && coordSysInfoList.length) {\n      var coordSys = coordSysInfoList[0].model.coordinateSystem;\n      rect = coordSys.getRect && coordSys.getRect();\n    }\n\n    if (!rect) {\n      var width = this.api.getWidth();\n      var height = this.api.getHeight();\n      rect = {\n        x: width * 0.2,\n        y: height * 0.2,\n        width: width * 0.6,\n        height: height * 0.6\n      };\n    }\n\n    return rect;\n  };\n\n  SliderZoomView.type = 'dataZoom.slider';\n  return SliderZoomView;\n}(DataZoomView);\n\nfunction getOtherDim(thisDim) {\n  // FIXME\n  // 这个逻辑和getOtherAxis里一致，但是写在这里是否不好\n  var map = {\n    x: 'y',\n    y: 'x',\n    radius: 'angle',\n    angle: 'radius'\n  };\n  return map[thisDim];\n}\n\nfunction getCursor(orient) {\n  return orient === 'vertical' ? 'ns-resize' : 'ew-resize';\n}\n\nexport default SliderZoomView;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport SliderZoomModel from './SliderZoomModel.js';\nimport SliderZoomView from './SliderZoomView.js';\nimport installCommon from './installCommon.js';\nexport function install(registers) {\n  registers.registerComponentModel(SliderZoomModel);\n  registers.registerComponentView(SliderZoomView);\n  installCommon(registers);\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\n\n/**\r\n * @file Visual mapping.\r\n */\nimport * as zrUtil from 'zrender/lib/core/util.js';\nvar visualDefault = {\n  /**\r\n   * @public\r\n   */\n  get: function (visualType, key, isCategory) {\n    var value = zrUtil.clone((defaultOption[visualType] || {})[key]);\n    return isCategory ? zrUtil.isArray(value) ? value[value.length - 1] : value : value;\n  }\n};\nvar defaultOption = {\n  color: {\n    active: ['#006edd', '#e0ffff'],\n    inactive: ['rgba(0,0,0,0)']\n  },\n  colorHue: {\n    active: [0, 360],\n    inactive: [0, 0]\n  },\n  colorSaturation: {\n    active: [0.3, 1],\n    inactive: [0, 0]\n  },\n  colorLightness: {\n    active: [0.9, 0.5],\n    inactive: [0, 0]\n  },\n  colorAlpha: {\n    active: [0.3, 1],\n    inactive: [0, 0]\n  },\n  opacity: {\n    active: [0.3, 1],\n    inactive: [0, 0]\n  },\n  symbol: {\n    active: ['circle', 'roundRect', 'diamond'],\n    inactive: ['none']\n  },\n  symbolSize: {\n    active: [10, 50],\n    inactive: [0, 0]\n  }\n};\nexport default visualDefault;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { __extends } from \"tslib\";\nimport * as zrUtil from 'zrender/lib/core/util.js';\nimport visualDefault from '../../visual/visualDefault.js';\nimport VisualMapping from '../../visual/VisualMapping.js';\nimport * as visualSolution from '../../visual/visualSolution.js';\nimport * as modelUtil from '../../util/model.js';\nimport * as numberUtil from '../../util/number.js';\nimport ComponentModel from '../../model/Component.js';\nvar mapVisual = VisualMapping.mapVisual;\nvar eachVisual = VisualMapping.eachVisual;\nvar isArray = zrUtil.isArray;\nvar each = zrUtil.each;\nvar asc = numberUtil.asc;\nvar linearMap = numberUtil.linearMap;\n\nvar VisualMapModel =\n/** @class */\nfunction (_super) {\n  __extends(VisualMapModel, _super);\n\n  function VisualMapModel() {\n    var _this = _super !== null && _super.apply(this, arguments) || this;\n\n    _this.type = VisualMapModel.type;\n    _this.stateList = ['inRange', 'outOfRange'];\n    _this.replacableOptionKeys = ['inRange', 'outOfRange', 'target', 'controller', 'color'];\n    _this.layoutMode = {\n      type: 'box',\n      ignoreSize: true\n    };\n    /**\r\n     * [lowerBound, upperBound]\r\n     */\n\n    _this.dataBound = [-Infinity, Infinity];\n    _this.targetVisuals = {};\n    _this.controllerVisuals = {};\n    return _this;\n  }\n\n  VisualMapModel.prototype.init = function (option, parentModel, ecModel) {\n    this.mergeDefaultAndTheme(option, ecModel);\n  };\n  /**\r\n   * @protected\r\n   */\n\n\n  VisualMapModel.prototype.optionUpdated = function (newOption, isInit) {\n    var thisOption = this.option;\n    !isInit && visualSolution.replaceVisualOption(thisOption, newOption, this.replacableOptionKeys);\n    this.textStyleModel = this.getModel('textStyle');\n    this.resetItemSize();\n    this.completeVisualOption();\n  };\n  /**\r\n   * @protected\r\n   */\n\n\n  VisualMapModel.prototype.resetVisual = function (supplementVisualOption) {\n    var stateList = this.stateList;\n    supplementVisualOption = zrUtil.bind(supplementVisualOption, this);\n    this.controllerVisuals = visualSolution.createVisualMappings(this.option.controller, stateList, supplementVisualOption);\n    this.targetVisuals = visualSolution.createVisualMappings(this.option.target, stateList, supplementVisualOption);\n  };\n  /**\r\n   * @public\r\n   */\n\n\n  VisualMapModel.prototype.getItemSymbol = function () {\n    return null;\n  };\n  /**\r\n   * @protected\r\n   * @return {Array.<number>} An array of series indices.\r\n   */\n\n\n  VisualMapModel.prototype.getTargetSeriesIndices = function () {\n    var optionSeriesIndex = this.option.seriesIndex;\n    var seriesIndices = [];\n\n    if (optionSeriesIndex == null || optionSeriesIndex === 'all') {\n      this.ecModel.eachSeries(function (seriesModel, index) {\n        seriesIndices.push(index);\n      });\n    } else {\n      seriesIndices = modelUtil.normalizeToArray(optionSeriesIndex);\n    }\n\n    return seriesIndices;\n  };\n  /**\r\n   * @public\r\n   */\n\n\n  VisualMapModel.prototype.eachTargetSeries = function (callback, context) {\n    zrUtil.each(this.getTargetSeriesIndices(), function (seriesIndex) {\n      var seriesModel = this.ecModel.getSeriesByIndex(seriesIndex);\n\n      if (seriesModel) {\n        callback.call(context, seriesModel);\n      }\n    }, this);\n  };\n  /**\r\n   * @pubilc\r\n   */\n\n\n  VisualMapModel.prototype.isTargetSeries = function (seriesModel) {\n    var is = false;\n    this.eachTargetSeries(function (model) {\n      model === seriesModel && (is = true);\n    });\n    return is;\n  };\n  /**\r\n   * @example\r\n   * this.formatValueText(someVal); // format single numeric value to text.\r\n   * this.formatValueText(someVal, true); // format single category value to text.\r\n   * this.formatValueText([min, max]); // format numeric min-max to text.\r\n   * this.formatValueText([this.dataBound[0], max]); // using data lower bound.\r\n   * this.formatValueText([min, this.dataBound[1]]); // using data upper bound.\r\n   *\r\n   * @param value Real value, or this.dataBound[0 or 1].\r\n   * @param isCategory Only available when value is number.\r\n   * @param edgeSymbols Open-close symbol when value is interval.\r\n   * @protected\r\n   */\n\n\n  VisualMapModel.prototype.formatValueText = function (value, isCategory, edgeSymbols) {\n    var option = this.option;\n    var precision = option.precision;\n    var dataBound = this.dataBound;\n    var formatter = option.formatter;\n    var isMinMax;\n    edgeSymbols = edgeSymbols || ['<', '>'];\n\n    if (zrUtil.isArray(value)) {\n      value = value.slice();\n      isMinMax = true;\n    }\n\n    var textValue = isCategory ? value // Value is string when isCategory\n    : isMinMax ? [toFixed(value[0]), toFixed(value[1])] : toFixed(value);\n\n    if (zrUtil.isString(formatter)) {\n      return formatter.replace('{value}', isMinMax ? textValue[0] : textValue).replace('{value2}', isMinMax ? textValue[1] : textValue);\n    } else if (zrUtil.isFunction(formatter)) {\n      return isMinMax ? formatter(value[0], value[1]) : formatter(value);\n    }\n\n    if (isMinMax) {\n      if (value[0] === dataBound[0]) {\n        return edgeSymbols[0] + ' ' + textValue[1];\n      } else if (value[1] === dataBound[1]) {\n        return edgeSymbols[1] + ' ' + textValue[0];\n      } else {\n        return textValue[0] + ' - ' + textValue[1];\n      }\n    } else {\n      // Format single value (includes category case).\n      return textValue;\n    }\n\n    function toFixed(val) {\n      return val === dataBound[0] ? 'min' : val === dataBound[1] ? 'max' : (+val).toFixed(Math.min(precision, 20));\n    }\n  };\n  /**\r\n   * @protected\r\n   */\n\n\n  VisualMapModel.prototype.resetExtent = function () {\n    var thisOption = this.option; // Can not calculate data extent by data here.\n    // Because series and data may be modified in processing stage.\n    // So we do not support the feature \"auto min/max\".\n\n    var extent = asc([thisOption.min, thisOption.max]);\n    this._dataExtent = extent;\n  };\n  /**\r\n   * PENDING:\r\n   * delete this method if no outer usage.\r\n   *\r\n   * Return  Concrete dimension. If null/undefined is returned, no dimension is used.\r\n   */\n  // getDataDimension(data: SeriesData) {\n  //     const optDim = this.option.dimension;\n  //     if (optDim != null) {\n  //         return data.getDimension(optDim);\n  //     }\n  //     const dimNames = data.dimensions;\n  //     for (let i = dimNames.length - 1; i >= 0; i--) {\n  //         const dimName = dimNames[i];\n  //         const dimInfo = data.getDimensionInfo(dimName);\n  //         if (!dimInfo.isCalculationCoord) {\n  //             return dimName;\n  //         }\n  //     }\n  // }\n\n\n  VisualMapModel.prototype.getDataDimensionIndex = function (data) {\n    var optDim = this.option.dimension;\n\n    if (optDim != null) {\n      return data.getDimensionIndex(optDim);\n    }\n\n    var dimNames = data.dimensions;\n\n    for (var i = dimNames.length - 1; i >= 0; i--) {\n      var dimName = dimNames[i];\n      var dimInfo = data.getDimensionInfo(dimName);\n\n      if (!dimInfo.isCalculationCoord) {\n        return dimInfo.storeDimIndex;\n      }\n    }\n  };\n\n  VisualMapModel.prototype.getExtent = function () {\n    return this._dataExtent.slice();\n  };\n\n  VisualMapModel.prototype.completeVisualOption = function () {\n    var ecModel = this.ecModel;\n    var thisOption = this.option;\n    var base = {\n      inRange: thisOption.inRange,\n      outOfRange: thisOption.outOfRange\n    };\n    var target = thisOption.target || (thisOption.target = {});\n    var controller = thisOption.controller || (thisOption.controller = {});\n    zrUtil.merge(target, base); // Do not override\n\n    zrUtil.merge(controller, base); // Do not override\n\n    var isCategory = this.isCategory();\n    completeSingle.call(this, target);\n    completeSingle.call(this, controller);\n    completeInactive.call(this, target, 'inRange', 'outOfRange'); // completeInactive.call(this, target, 'outOfRange', 'inRange');\n\n    completeController.call(this, controller);\n\n    function completeSingle(base) {\n      // Compatible with ec2 dataRange.color.\n      // The mapping order of dataRange.color is: [high value, ..., low value]\n      // whereas inRange.color and outOfRange.color is [low value, ..., high value]\n      // Notice: ec2 has no inverse.\n      if (isArray(thisOption.color) // If there has been inRange: {symbol: ...}, adding color is a mistake.\n      // So adding color only when no inRange defined.\n      && !base.inRange) {\n        base.inRange = {\n          color: thisOption.color.slice().reverse()\n        };\n      } // Compatible with previous logic, always give a default color, otherwise\n      // simple config with no inRange and outOfRange will not work.\n      // Originally we use visualMap.color as the default color, but setOption at\n      // the second time the default color will be erased. So we change to use\n      // constant DEFAULT_COLOR.\n      // If user do not want the default color, set inRange: {color: null}.\n\n\n      base.inRange = base.inRange || {\n        color: ecModel.get('gradientColor')\n      };\n    }\n\n    function completeInactive(base, stateExist, stateAbsent) {\n      var optExist = base[stateExist];\n      var optAbsent = base[stateAbsent];\n\n      if (optExist && !optAbsent) {\n        optAbsent = base[stateAbsent] = {};\n        each(optExist, function (visualData, visualType) {\n          if (!VisualMapping.isValidType(visualType)) {\n            return;\n          }\n\n          var defa = visualDefault.get(visualType, 'inactive', isCategory);\n\n          if (defa != null) {\n            optAbsent[visualType] = defa; // Compatibable with ec2:\n            // Only inactive color to rgba(0,0,0,0) can not\n            // make label transparent, so use opacity also.\n\n            if (visualType === 'color' && !optAbsent.hasOwnProperty('opacity') && !optAbsent.hasOwnProperty('colorAlpha')) {\n              optAbsent.opacity = [0, 0];\n            }\n          }\n        });\n      }\n    }\n\n    function completeController(controller) {\n      var symbolExists = (controller.inRange || {}).symbol || (controller.outOfRange || {}).symbol;\n      var symbolSizeExists = (controller.inRange || {}).symbolSize || (controller.outOfRange || {}).symbolSize;\n      var inactiveColor = this.get('inactiveColor');\n      var itemSymbol = this.getItemSymbol();\n      var defaultSymbol = itemSymbol || 'roundRect';\n      each(this.stateList, function (state) {\n        var itemSize = this.itemSize;\n        var visuals = controller[state]; // Set inactive color for controller if no other color\n        // attr (like colorAlpha) specified.\n\n        if (!visuals) {\n          visuals = controller[state] = {\n            color: isCategory ? inactiveColor : [inactiveColor]\n          };\n        } // Consistent symbol and symbolSize if not specified.\n\n\n        if (visuals.symbol == null) {\n          visuals.symbol = symbolExists && zrUtil.clone(symbolExists) || (isCategory ? defaultSymbol : [defaultSymbol]);\n        }\n\n        if (visuals.symbolSize == null) {\n          visuals.symbolSize = symbolSizeExists && zrUtil.clone(symbolSizeExists) || (isCategory ? itemSize[0] : [itemSize[0], itemSize[0]]);\n        } // Filter none\n\n\n        visuals.symbol = mapVisual(visuals.symbol, function (symbol) {\n          return symbol === 'none' ? defaultSymbol : symbol;\n        }); // Normalize symbolSize\n\n        var symbolSize = visuals.symbolSize;\n\n        if (symbolSize != null) {\n          var max_1 = -Infinity; // symbolSize can be object when categories defined.\n\n          eachVisual(symbolSize, function (value) {\n            value > max_1 && (max_1 = value);\n          });\n          visuals.symbolSize = mapVisual(symbolSize, function (value) {\n            return linearMap(value, [0, max_1], [0, itemSize[0]], true);\n          });\n        }\n      }, this);\n    }\n  };\n\n  VisualMapModel.prototype.resetItemSize = function () {\n    this.itemSize = [parseFloat(this.get('itemWidth')), parseFloat(this.get('itemHeight'))];\n  };\n\n  VisualMapModel.prototype.isCategory = function () {\n    return !!this.option.categories;\n  };\n  /**\r\n   * @public\r\n   * @abstract\r\n   */\n\n\n  VisualMapModel.prototype.setSelected = function (selected) {};\n\n  VisualMapModel.prototype.getSelected = function () {\n    return null;\n  };\n  /**\r\n   * @public\r\n   * @abstract\r\n   */\n\n\n  VisualMapModel.prototype.getValueState = function (value) {\n    return null;\n  };\n  /**\r\n   * FIXME\r\n   * Do not publish to thirt-part-dev temporarily\r\n   * util the interface is stable. (Should it return\r\n   * a function but not visual meta?)\r\n   *\r\n   * @pubilc\r\n   * @abstract\r\n   * @param getColorVisual\r\n   *        params: value, valueState\r\n   *        return: color\r\n   * @return {Object} visualMeta\r\n   *        should includes {stops, outerColors}\r\n   *        outerColor means [colorBeyondMinValue, colorBeyondMaxValue]\r\n   */\n\n\n  VisualMapModel.prototype.getVisualMeta = function (getColorVisual) {\n    return null;\n  };\n\n  VisualMapModel.type = 'visualMap';\n  VisualMapModel.dependencies = ['series'];\n  VisualMapModel.defaultOption = {\n    show: true,\n    // zlevel: 0,\n    z: 4,\n    seriesIndex: 'all',\n    min: 0,\n    max: 200,\n    left: 0,\n    right: null,\n    top: null,\n    bottom: 0,\n    itemWidth: null,\n    itemHeight: null,\n    inverse: false,\n    orient: 'vertical',\n    backgroundColor: 'rgba(0,0,0,0)',\n    borderColor: '#ccc',\n    contentColor: '#5793f3',\n    inactiveColor: '#aaa',\n    borderWidth: 0,\n    padding: 5,\n    // 接受数组分别设定上右下左边距，同css\n    textGap: 10,\n    precision: 0,\n    textStyle: {\n      color: '#333' // 值域文字颜色\n\n    }\n  };\n  return VisualMapModel;\n}(ComponentModel);\n\nexport default VisualMapModel;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { __extends } from \"tslib\";\nimport * as zrUtil from 'zrender/lib/core/util.js';\nimport VisualMapModel from './VisualMapModel.js';\nimport * as numberUtil from '../../util/number.js';\nimport { inheritDefaultOption } from '../../util/component.js'; // Constant\n\nvar DEFAULT_BAR_BOUND = [20, 140];\n\nvar ContinuousModel =\n/** @class */\nfunction (_super) {\n  __extends(ContinuousModel, _super);\n\n  function ContinuousModel() {\n    var _this = _super !== null && _super.apply(this, arguments) || this;\n\n    _this.type = ContinuousModel.type;\n    return _this;\n  }\n  /**\r\n   * @override\r\n   */\n\n\n  ContinuousModel.prototype.optionUpdated = function (newOption, isInit) {\n    _super.prototype.optionUpdated.apply(this, arguments);\n\n    this.resetExtent();\n    this.resetVisual(function (mappingOption) {\n      mappingOption.mappingMethod = 'linear';\n      mappingOption.dataExtent = this.getExtent();\n    });\n\n    this._resetRange();\n  };\n  /**\r\n   * @protected\r\n   * @override\r\n   */\n\n\n  ContinuousModel.prototype.resetItemSize = function () {\n    _super.prototype.resetItemSize.apply(this, arguments);\n\n    var itemSize = this.itemSize;\n    (itemSize[0] == null || isNaN(itemSize[0])) && (itemSize[0] = DEFAULT_BAR_BOUND[0]);\n    (itemSize[1] == null || isNaN(itemSize[1])) && (itemSize[1] = DEFAULT_BAR_BOUND[1]);\n  };\n  /**\r\n   * @private\r\n   */\n\n\n  ContinuousModel.prototype._resetRange = function () {\n    var dataExtent = this.getExtent();\n    var range = this.option.range;\n\n    if (!range || range.auto) {\n      // `range` should always be array (so we don't use other\n      // value like 'auto') for user-friend. (consider getOption).\n      dataExtent.auto = 1;\n      this.option.range = dataExtent;\n    } else if (zrUtil.isArray(range)) {\n      if (range[0] > range[1]) {\n        range.reverse();\n      }\n\n      range[0] = Math.max(range[0], dataExtent[0]);\n      range[1] = Math.min(range[1], dataExtent[1]);\n    }\n  };\n  /**\r\n   * @protected\r\n   * @override\r\n   */\n\n\n  ContinuousModel.prototype.completeVisualOption = function () {\n    _super.prototype.completeVisualOption.apply(this, arguments);\n\n    zrUtil.each(this.stateList, function (state) {\n      var symbolSize = this.option.controller[state].symbolSize;\n\n      if (symbolSize && symbolSize[0] !== symbolSize[1]) {\n        symbolSize[0] = symbolSize[1] / 3; // For good looking.\n      }\n    }, this);\n  };\n  /**\r\n   * @override\r\n   */\n\n\n  ContinuousModel.prototype.setSelected = function (selected) {\n    this.option.range = selected.slice();\n\n    this._resetRange();\n  };\n  /**\r\n   * @public\r\n   */\n\n\n  ContinuousModel.prototype.getSelected = function () {\n    var dataExtent = this.getExtent();\n    var dataInterval = numberUtil.asc((this.get('range') || []).slice()); // Clamp\n\n    dataInterval[0] > dataExtent[1] && (dataInterval[0] = dataExtent[1]);\n    dataInterval[1] > dataExtent[1] && (dataInterval[1] = dataExtent[1]);\n    dataInterval[0] < dataExtent[0] && (dataInterval[0] = dataExtent[0]);\n    dataInterval[1] < dataExtent[0] && (dataInterval[1] = dataExtent[0]);\n    return dataInterval;\n  };\n  /**\r\n   * @override\r\n   */\n\n\n  ContinuousModel.prototype.getValueState = function (value) {\n    var range = this.option.range;\n    var dataExtent = this.getExtent(); // When range[0] === dataExtent[0], any value larger than dataExtent[0] maps to 'inRange'.\n    // range[1] is processed likewise.\n\n    return (range[0] <= dataExtent[0] || range[0] <= value) && (range[1] >= dataExtent[1] || value <= range[1]) ? 'inRange' : 'outOfRange';\n  };\n\n  ContinuousModel.prototype.findTargetDataIndices = function (range) {\n    var result = [];\n    this.eachTargetSeries(function (seriesModel) {\n      var dataIndices = [];\n      var data = seriesModel.getData();\n      data.each(this.getDataDimensionIndex(data), function (value, dataIndex) {\n        range[0] <= value && value <= range[1] && dataIndices.push(dataIndex);\n      }, this);\n      result.push({\n        seriesId: seriesModel.id,\n        dataIndex: dataIndices\n      });\n    }, this);\n    return result;\n  };\n  /**\r\n   * @implement\r\n   */\n\n\n  ContinuousModel.prototype.getVisualMeta = function (getColorVisual) {\n    var oVals = getColorStopValues(this, 'outOfRange', this.getExtent());\n    var iVals = getColorStopValues(this, 'inRange', this.option.range.slice());\n    var stops = [];\n\n    function setStop(value, valueState) {\n      stops.push({\n        value: value,\n        color: getColorVisual(value, valueState)\n      });\n    } // Format to: outOfRange -- inRange -- outOfRange.\n\n\n    var iIdx = 0;\n    var oIdx = 0;\n    var iLen = iVals.length;\n    var oLen = oVals.length;\n\n    for (; oIdx < oLen && (!iVals.length || oVals[oIdx] <= iVals[0]); oIdx++) {\n      // If oVal[oIdx] === iVals[iIdx], oVal[oIdx] should be ignored.\n      if (oVals[oIdx] < iVals[iIdx]) {\n        setStop(oVals[oIdx], 'outOfRange');\n      }\n    }\n\n    for (var first = 1; iIdx < iLen; iIdx++, first = 0) {\n      // If range is full, value beyond min, max will be clamped.\n      // make a singularity\n      first && stops.length && setStop(iVals[iIdx], 'outOfRange');\n      setStop(iVals[iIdx], 'inRange');\n    }\n\n    for (var first = 1; oIdx < oLen; oIdx++) {\n      if (!iVals.length || iVals[iVals.length - 1] < oVals[oIdx]) {\n        // make a singularity\n        if (first) {\n          stops.length && setStop(stops[stops.length - 1].value, 'outOfRange');\n          first = 0;\n        }\n\n        setStop(oVals[oIdx], 'outOfRange');\n      }\n    }\n\n    var stopsLen = stops.length;\n    return {\n      stops: stops,\n      outerColors: [stopsLen ? stops[0].color : 'transparent', stopsLen ? stops[stopsLen - 1].color : 'transparent']\n    };\n  };\n\n  ContinuousModel.type = 'visualMap.continuous';\n  ContinuousModel.defaultOption = inheritDefaultOption(VisualMapModel.defaultOption, {\n    align: 'auto',\n    calculable: false,\n    hoverLink: true,\n    realtime: true,\n    handleIcon: 'path://M-11.39,9.77h0a3.5,3.5,0,0,1-3.5,3.5h-22a3.5,3.5,0,0,1-3.5-3.5h0a3.5,3.5,0,0,1,3.5-3.5h22A3.5,3.5,0,0,1-11.39,9.77Z',\n    handleSize: '120%',\n    handleStyle: {\n      borderColor: '#fff',\n      borderWidth: 1\n    },\n    indicatorIcon: 'circle',\n    indicatorSize: '50%',\n    indicatorStyle: {\n      borderColor: '#fff',\n      borderWidth: 2,\n      shadowBlur: 2,\n      shadowOffsetX: 1,\n      shadowOffsetY: 1,\n      shadowColor: 'rgba(0,0,0,0.2)'\n    } // emphasis: {\n    //     handleStyle: {\n    //         shadowBlur: 3,\n    //         shadowOffsetX: 1,\n    //         shadowOffsetY: 1,\n    //         shadowColor: 'rgba(0,0,0,0.2)'\n    //     }\n    // }\n\n  });\n  return ContinuousModel;\n}(VisualMapModel);\n\nfunction getColorStopValues(visualMapModel, valueState, dataExtent) {\n  if (dataExtent[0] === dataExtent[1]) {\n    return dataExtent.slice();\n  } // When using colorHue mapping, it is not linear color any more.\n  // Moreover, canvas gradient seems not to be accurate linear.\n  // FIXME\n  // Should be arbitrary value 100? or based on pixel size?\n\n\n  var count = 200;\n  var step = (dataExtent[1] - dataExtent[0]) / count;\n  var value = dataExtent[0];\n  var stopValues = [];\n\n  for (var i = 0; i <= count && value < dataExtent[1]; i++) {\n    stopValues.push(value);\n    value += step;\n  }\n\n  stopValues.push(dataExtent[1]);\n  return stopValues;\n}\n\nexport default ContinuousModel;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { __extends } from \"tslib\";\nimport * as zrUtil from 'zrender/lib/core/util.js';\nimport { Rect } from '../../util/graphic.js';\nimport * as formatUtil from '../../util/format.js';\nimport * as layout from '../../util/layout.js';\nimport VisualMapping from '../../visual/VisualMapping.js';\nimport ComponentView from '../../view/Component.js';\n\nvar VisualMapView =\n/** @class */\nfunction (_super) {\n  __extends(VisualMapView, _super);\n\n  function VisualMapView() {\n    var _this = _super !== null && _super.apply(this, arguments) || this;\n\n    _this.type = VisualMapView.type;\n    _this.autoPositionValues = {\n      left: 1,\n      right: 1,\n      top: 1,\n      bottom: 1\n    };\n    return _this;\n  }\n\n  VisualMapView.prototype.init = function (ecModel, api) {\n    this.ecModel = ecModel;\n    this.api = api;\n  };\n  /**\r\n   * @protected\r\n   */\n\n\n  VisualMapView.prototype.render = function (visualMapModel, ecModel, api, payload // TODO: TYPE\n  ) {\n    this.visualMapModel = visualMapModel;\n\n    if (visualMapModel.get('show') === false) {\n      this.group.removeAll();\n      return;\n    }\n\n    this.doRender(visualMapModel, ecModel, api, payload);\n  };\n  /**\r\n   * @protected\r\n   */\n\n\n  VisualMapView.prototype.renderBackground = function (group) {\n    var visualMapModel = this.visualMapModel;\n    var padding = formatUtil.normalizeCssArray(visualMapModel.get('padding') || 0);\n    var rect = group.getBoundingRect();\n    group.add(new Rect({\n      z2: -1,\n      silent: true,\n      shape: {\n        x: rect.x - padding[3],\n        y: rect.y - padding[0],\n        width: rect.width + padding[3] + padding[1],\n        height: rect.height + padding[0] + padding[2]\n      },\n      style: {\n        fill: visualMapModel.get('backgroundColor'),\n        stroke: visualMapModel.get('borderColor'),\n        lineWidth: visualMapModel.get('borderWidth')\n      }\n    }));\n  };\n  /**\r\n   * @protected\r\n   * @param targetValue can be Infinity or -Infinity\r\n   * @param visualCluster Only can be 'color' 'opacity' 'symbol' 'symbolSize'\r\n   * @param opts\r\n   * @param opts.forceState Specify state, instead of using getValueState method.\r\n   * @param opts.convertOpacityToAlpha For color gradient in controller widget.\r\n   * @return {*} Visual value.\r\n   */\n\n\n  VisualMapView.prototype.getControllerVisual = function (targetValue, visualCluster, opts) {\n    opts = opts || {};\n    var forceState = opts.forceState;\n    var visualMapModel = this.visualMapModel;\n    var visualObj = {}; // Default values.\n\n    if (visualCluster === 'color') {\n      var defaultColor = visualMapModel.get('contentColor');\n      visualObj.color = defaultColor;\n    }\n\n    function getter(key) {\n      return visualObj[key];\n    }\n\n    function setter(key, value) {\n      visualObj[key] = value;\n    }\n\n    var mappings = visualMapModel.controllerVisuals[forceState || visualMapModel.getValueState(targetValue)];\n    var visualTypes = VisualMapping.prepareVisualTypes(mappings);\n    zrUtil.each(visualTypes, function (type) {\n      var visualMapping = mappings[type];\n\n      if (opts.convertOpacityToAlpha && type === 'opacity') {\n        type = 'colorAlpha';\n        visualMapping = mappings.__alphaForOpacity;\n      }\n\n      if (VisualMapping.dependsOn(type, visualCluster)) {\n        visualMapping && visualMapping.applyVisual(targetValue, getter, setter);\n      }\n    });\n    return visualObj[visualCluster];\n  };\n\n  VisualMapView.prototype.positionGroup = function (group) {\n    var model = this.visualMapModel;\n    var api = this.api;\n    layout.positionElement(group, model.getBoxLayoutParams(), {\n      width: api.getWidth(),\n      height: api.getHeight()\n    });\n  };\n\n  VisualMapView.prototype.doRender = function (visualMapModel, ecModel, api, payload) {};\n\n  VisualMapView.type = 'visualMap';\n  return VisualMapView;\n}(ComponentView);\n\nexport default VisualMapView;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport * as zrUtil from 'zrender/lib/core/util.js';\nimport { getLayoutRect } from '../../util/layout.js';\nvar paramsSet = [['left', 'right', 'width'], ['top', 'bottom', 'height']];\n/**\r\n * @param visualMapModel\r\n * @param api\r\n * @param itemSize always [short, long]\r\n * @return {string} 'left' or 'right' or 'top' or 'bottom'\r\n */\n\nexport function getItemAlign(visualMapModel, api, itemSize) {\n  var modelOption = visualMapModel.option;\n  var itemAlign = modelOption.align;\n\n  if (itemAlign != null && itemAlign !== 'auto') {\n    return itemAlign;\n  } // Auto decision align.\n\n\n  var ecSize = {\n    width: api.getWidth(),\n    height: api.getHeight()\n  };\n  var realIndex = modelOption.orient === 'horizontal' ? 1 : 0;\n  var reals = paramsSet[realIndex];\n  var fakeValue = [0, null, 10];\n  var layoutInput = {};\n\n  for (var i = 0; i < 3; i++) {\n    layoutInput[paramsSet[1 - realIndex][i]] = fakeValue[i];\n    layoutInput[reals[i]] = i === 2 ? itemSize[0] : modelOption[reals[i]];\n  }\n\n  var rParam = [['x', 'width', 3], ['y', 'height', 0]][realIndex];\n  var rect = getLayoutRect(layoutInput, ecSize, modelOption.padding);\n  return reals[(rect.margin[rParam[2]] || 0) + rect[rParam[0]] + rect[rParam[1]] * 0.5 < ecSize[rParam[1]] * 0.5 ? 0 : 1];\n}\n/**\r\n * Prepare dataIndex for outside usage, where dataIndex means rawIndex, and\r\n * dataIndexInside means filtered index.\r\n */\n// TODO: TYPE more specified payload types.\n\nexport function makeHighDownBatch(batch, visualMapModel) {\n  zrUtil.each(batch || [], function (batchItem) {\n    if (batchItem.dataIndex != null) {\n      batchItem.dataIndexInside = batchItem.dataIndex;\n      batchItem.dataIndex = null;\n    }\n\n    batchItem.highlightKey = 'visualMap' + (visualMapModel ? visualMapModel.componentIndex : '');\n  });\n  return batch;\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { __extends } from \"tslib\";\nimport * as zrUtil from 'zrender/lib/core/util.js';\nimport LinearGradient from 'zrender/lib/graphic/LinearGradient.js';\nimport * as eventTool from 'zrender/lib/core/event.js';\nimport VisualMapView from './VisualMapView.js';\nimport * as graphic from '../../util/graphic.js';\nimport * as numberUtil from '../../util/number.js';\nimport sliderMove from '../helper/sliderMove.js';\nimport * as helper from './helper.js';\nimport * as modelUtil from '../../util/model.js';\nimport { parsePercent } from 'zrender/lib/contain/text.js';\nimport { setAsHighDownDispatcher } from '../../util/states.js';\nimport { createSymbol } from '../../util/symbol.js';\nimport ZRImage from 'zrender/lib/graphic/Image.js';\nimport { getECData } from '../../util/innerStore.js';\nimport { createTextStyle } from '../../label/labelStyle.js';\nimport { findEventDispatcher } from '../../util/event.js';\nvar linearMap = numberUtil.linearMap;\nvar each = zrUtil.each;\nvar mathMin = Math.min;\nvar mathMax = Math.max; // Arbitrary value\n\nvar HOVER_LINK_SIZE = 12;\nvar HOVER_LINK_OUT = 6; // Notice:\n// Any \"interval\" should be by the order of [low, high].\n// \"handle0\" (handleIndex === 0) maps to\n// low data value: this._dataInterval[0] and has low coord.\n// \"handle1\" (handleIndex === 1) maps to\n// high data value: this._dataInterval[1] and has high coord.\n// The logic of transform is implemented in this._createBarGroup.\n\nvar ContinuousView =\n/** @class */\nfunction (_super) {\n  __extends(ContinuousView, _super);\n\n  function ContinuousView() {\n    var _this = _super !== null && _super.apply(this, arguments) || this;\n\n    _this.type = ContinuousView.type;\n    _this._shapes = {};\n    _this._dataInterval = [];\n    _this._handleEnds = [];\n    _this._hoverLinkDataIndices = [];\n    return _this;\n  }\n\n  ContinuousView.prototype.doRender = function (visualMapModel, ecModel, api, payload) {\n    this._api = api;\n\n    if (!payload || payload.type !== 'selectDataRange' || payload.from !== this.uid) {\n      this._buildView();\n    }\n  };\n\n  ContinuousView.prototype._buildView = function () {\n    this.group.removeAll();\n    var visualMapModel = this.visualMapModel;\n    var thisGroup = this.group;\n    this._orient = visualMapModel.get('orient');\n    this._useHandle = visualMapModel.get('calculable');\n\n    this._resetInterval();\n\n    this._renderBar(thisGroup);\n\n    var dataRangeText = visualMapModel.get('text');\n\n    this._renderEndsText(thisGroup, dataRangeText, 0);\n\n    this._renderEndsText(thisGroup, dataRangeText, 1); // Do this for background size calculation.\n\n\n    this._updateView(true); // After updating view, inner shapes is built completely,\n    // and then background can be rendered.\n\n\n    this.renderBackground(thisGroup); // Real update view\n\n    this._updateView();\n\n    this._enableHoverLinkToSeries();\n\n    this._enableHoverLinkFromSeries();\n\n    this.positionGroup(thisGroup);\n  };\n\n  ContinuousView.prototype._renderEndsText = function (group, dataRangeText, endsIndex) {\n    if (!dataRangeText) {\n      return;\n    } // Compatible with ec2, text[0] map to high value, text[1] map low value.\n\n\n    var text = dataRangeText[1 - endsIndex];\n    text = text != null ? text + '' : '';\n    var visualMapModel = this.visualMapModel;\n    var textGap = visualMapModel.get('textGap');\n    var itemSize = visualMapModel.itemSize;\n    var barGroup = this._shapes.mainGroup;\n\n    var position = this._applyTransform([itemSize[0] / 2, endsIndex === 0 ? -textGap : itemSize[1] + textGap], barGroup);\n\n    var align = this._applyTransform(endsIndex === 0 ? 'bottom' : 'top', barGroup);\n\n    var orient = this._orient;\n    var textStyleModel = this.visualMapModel.textStyleModel;\n    this.group.add(new graphic.Text({\n      style: createTextStyle(textStyleModel, {\n        x: position[0],\n        y: position[1],\n        verticalAlign: orient === 'horizontal' ? 'middle' : align,\n        align: orient === 'horizontal' ? align : 'center',\n        text: text\n      })\n    }));\n  };\n\n  ContinuousView.prototype._renderBar = function (targetGroup) {\n    var visualMapModel = this.visualMapModel;\n    var shapes = this._shapes;\n    var itemSize = visualMapModel.itemSize;\n    var orient = this._orient;\n    var useHandle = this._useHandle;\n    var itemAlign = helper.getItemAlign(visualMapModel, this.api, itemSize);\n\n    var mainGroup = shapes.mainGroup = this._createBarGroup(itemAlign);\n\n    var gradientBarGroup = new graphic.Group();\n    mainGroup.add(gradientBarGroup); // Bar\n\n    gradientBarGroup.add(shapes.outOfRange = createPolygon());\n    gradientBarGroup.add(shapes.inRange = createPolygon(null, useHandle ? getCursor(this._orient) : null, zrUtil.bind(this._dragHandle, this, 'all', false), zrUtil.bind(this._dragHandle, this, 'all', true))); // A border radius clip.\n\n    gradientBarGroup.setClipPath(new graphic.Rect({\n      shape: {\n        x: 0,\n        y: 0,\n        width: itemSize[0],\n        height: itemSize[1],\n        r: 3\n      }\n    }));\n    var textRect = visualMapModel.textStyleModel.getTextRect('国');\n    var textSize = mathMax(textRect.width, textRect.height); // Handle\n\n    if (useHandle) {\n      shapes.handleThumbs = [];\n      shapes.handleLabels = [];\n      shapes.handleLabelPoints = [];\n\n      this._createHandle(visualMapModel, mainGroup, 0, itemSize, textSize, orient);\n\n      this._createHandle(visualMapModel, mainGroup, 1, itemSize, textSize, orient);\n    }\n\n    this._createIndicator(visualMapModel, mainGroup, itemSize, textSize, orient);\n\n    targetGroup.add(mainGroup);\n  };\n\n  ContinuousView.prototype._createHandle = function (visualMapModel, mainGroup, handleIndex, itemSize, textSize, orient) {\n    var onDrift = zrUtil.bind(this._dragHandle, this, handleIndex, false);\n    var onDragEnd = zrUtil.bind(this._dragHandle, this, handleIndex, true);\n    var handleSize = parsePercent(visualMapModel.get('handleSize'), itemSize[0]);\n    var handleThumb = createSymbol(visualMapModel.get('handleIcon'), -handleSize / 2, -handleSize / 2, handleSize, handleSize, null, true);\n    var cursor = getCursor(this._orient);\n    handleThumb.attr({\n      cursor: cursor,\n      draggable: true,\n      drift: onDrift,\n      ondragend: onDragEnd,\n      onmousemove: function (e) {\n        eventTool.stop(e.event);\n      }\n    });\n    handleThumb.x = itemSize[0] / 2;\n    handleThumb.useStyle(visualMapModel.getModel('handleStyle').getItemStyle());\n    handleThumb.setStyle({\n      strokeNoScale: true,\n      strokeFirst: true\n    });\n    handleThumb.style.lineWidth *= 2;\n    handleThumb.ensureState('emphasis').style = visualMapModel.getModel(['emphasis', 'handleStyle']).getItemStyle();\n    setAsHighDownDispatcher(handleThumb, true);\n    mainGroup.add(handleThumb); // Text is always horizontal layout but should not be effected by\n    // transform (orient/inverse). So label is built separately but not\n    // use zrender/graphic/helper/RectText, and is located based on view\n    // group (according to handleLabelPoint) but not barGroup.\n\n    var textStyleModel = this.visualMapModel.textStyleModel;\n    var handleLabel = new graphic.Text({\n      cursor: cursor,\n      draggable: true,\n      drift: onDrift,\n      onmousemove: function (e) {\n        // For mobile device, prevent screen slider on the button.\n        eventTool.stop(e.event);\n      },\n      ondragend: onDragEnd,\n      style: createTextStyle(textStyleModel, {\n        x: 0,\n        y: 0,\n        text: ''\n      })\n    });\n    handleLabel.ensureState('blur').style = {\n      opacity: 0.1\n    };\n    handleLabel.stateTransition = {\n      duration: 200\n    };\n    this.group.add(handleLabel);\n    var handleLabelPoint = [handleSize, 0];\n    var shapes = this._shapes;\n    shapes.handleThumbs[handleIndex] = handleThumb;\n    shapes.handleLabelPoints[handleIndex] = handleLabelPoint;\n    shapes.handleLabels[handleIndex] = handleLabel;\n  };\n\n  ContinuousView.prototype._createIndicator = function (visualMapModel, mainGroup, itemSize, textSize, orient) {\n    var scale = parsePercent(visualMapModel.get('indicatorSize'), itemSize[0]);\n    var indicator = createSymbol(visualMapModel.get('indicatorIcon'), -scale / 2, -scale / 2, scale, scale, null, true);\n    indicator.attr({\n      cursor: 'move',\n      invisible: true,\n      silent: true,\n      x: itemSize[0] / 2\n    });\n    var indicatorStyle = visualMapModel.getModel('indicatorStyle').getItemStyle();\n\n    if (indicator instanceof ZRImage) {\n      var pathStyle = indicator.style;\n      indicator.useStyle(zrUtil.extend({\n        // TODO other properties like x, y ?\n        image: pathStyle.image,\n        x: pathStyle.x,\n        y: pathStyle.y,\n        width: pathStyle.width,\n        height: pathStyle.height\n      }, indicatorStyle));\n    } else {\n      indicator.useStyle(indicatorStyle);\n    }\n\n    mainGroup.add(indicator);\n    var textStyleModel = this.visualMapModel.textStyleModel;\n    var indicatorLabel = new graphic.Text({\n      silent: true,\n      invisible: true,\n      style: createTextStyle(textStyleModel, {\n        x: 0,\n        y: 0,\n        text: ''\n      })\n    });\n    this.group.add(indicatorLabel);\n    var indicatorLabelPoint = [(orient === 'horizontal' ? textSize / 2 : HOVER_LINK_OUT) + itemSize[0] / 2, 0];\n    var shapes = this._shapes;\n    shapes.indicator = indicator;\n    shapes.indicatorLabel = indicatorLabel;\n    shapes.indicatorLabelPoint = indicatorLabelPoint;\n    this._firstShowIndicator = true;\n  };\n\n  ContinuousView.prototype._dragHandle = function (handleIndex, isEnd, // dx is event from ondragend if isEnd is true. It's not used\n  dx, dy) {\n    if (!this._useHandle) {\n      return;\n    }\n\n    this._dragging = !isEnd;\n\n    if (!isEnd) {\n      // Transform dx, dy to bar coordination.\n      var vertex = this._applyTransform([dx, dy], this._shapes.mainGroup, true);\n\n      this._updateInterval(handleIndex, vertex[1]);\n\n      this._hideIndicator(); // Considering realtime, update view should be executed\n      // before dispatch action.\n\n\n      this._updateView();\n    } // dragEnd do not dispatch action when realtime.\n\n\n    if (isEnd === !this.visualMapModel.get('realtime')) {\n      // jshint ignore:line\n      this.api.dispatchAction({\n        type: 'selectDataRange',\n        from: this.uid,\n        visualMapId: this.visualMapModel.id,\n        selected: this._dataInterval.slice()\n      });\n    }\n\n    if (isEnd) {\n      !this._hovering && this._clearHoverLinkToSeries();\n    } else if (useHoverLinkOnHandle(this.visualMapModel)) {\n      this._doHoverLinkToSeries(this._handleEnds[handleIndex], false);\n    }\n  };\n\n  ContinuousView.prototype._resetInterval = function () {\n    var visualMapModel = this.visualMapModel;\n    var dataInterval = this._dataInterval = visualMapModel.getSelected();\n    var dataExtent = visualMapModel.getExtent();\n    var sizeExtent = [0, visualMapModel.itemSize[1]];\n    this._handleEnds = [linearMap(dataInterval[0], dataExtent, sizeExtent, true), linearMap(dataInterval[1], dataExtent, sizeExtent, true)];\n  };\n  /**\r\n   * @private\r\n   * @param {(number|string)} handleIndex 0 or 1 or 'all'\r\n   * @param {number} dx\r\n   * @param {number} dy\r\n   */\n\n\n  ContinuousView.prototype._updateInterval = function (handleIndex, delta) {\n    delta = delta || 0;\n    var visualMapModel = this.visualMapModel;\n    var handleEnds = this._handleEnds;\n    var sizeExtent = [0, visualMapModel.itemSize[1]];\n    sliderMove(delta, handleEnds, sizeExtent, handleIndex, // cross is forbidden\n    0);\n    var dataExtent = visualMapModel.getExtent(); // Update data interval.\n\n    this._dataInterval = [linearMap(handleEnds[0], sizeExtent, dataExtent, true), linearMap(handleEnds[1], sizeExtent, dataExtent, true)];\n  };\n\n  ContinuousView.prototype._updateView = function (forSketch) {\n    var visualMapModel = this.visualMapModel;\n    var dataExtent = visualMapModel.getExtent();\n    var shapes = this._shapes;\n    var outOfRangeHandleEnds = [0, visualMapModel.itemSize[1]];\n    var inRangeHandleEnds = forSketch ? outOfRangeHandleEnds : this._handleEnds;\n\n    var visualInRange = this._createBarVisual(this._dataInterval, dataExtent, inRangeHandleEnds, 'inRange');\n\n    var visualOutOfRange = this._createBarVisual(dataExtent, dataExtent, outOfRangeHandleEnds, 'outOfRange');\n\n    shapes.inRange.setStyle({\n      fill: visualInRange.barColor // opacity: visualInRange.opacity\n\n    }).setShape('points', visualInRange.barPoints);\n    shapes.outOfRange.setStyle({\n      fill: visualOutOfRange.barColor // opacity: visualOutOfRange.opacity\n\n    }).setShape('points', visualOutOfRange.barPoints);\n\n    this._updateHandle(inRangeHandleEnds, visualInRange);\n  };\n\n  ContinuousView.prototype._createBarVisual = function (dataInterval, dataExtent, handleEnds, forceState) {\n    var opts = {\n      forceState: forceState,\n      convertOpacityToAlpha: true\n    };\n\n    var colorStops = this._makeColorGradient(dataInterval, opts);\n\n    var symbolSizes = [this.getControllerVisual(dataInterval[0], 'symbolSize', opts), this.getControllerVisual(dataInterval[1], 'symbolSize', opts)];\n\n    var barPoints = this._createBarPoints(handleEnds, symbolSizes);\n\n    return {\n      barColor: new LinearGradient(0, 0, 0, 1, colorStops),\n      barPoints: barPoints,\n      handlesColor: [colorStops[0].color, colorStops[colorStops.length - 1].color]\n    };\n  };\n\n  ContinuousView.prototype._makeColorGradient = function (dataInterval, opts) {\n    // Considering colorHue, which is not linear, so we have to sample\n    // to calculate gradient color stops, but not only calculate head\n    // and tail.\n    var sampleNumber = 100; // Arbitrary value.\n\n    var colorStops = [];\n    var step = (dataInterval[1] - dataInterval[0]) / sampleNumber;\n    colorStops.push({\n      color: this.getControllerVisual(dataInterval[0], 'color', opts),\n      offset: 0\n    });\n\n    for (var i = 1; i < sampleNumber; i++) {\n      var currValue = dataInterval[0] + step * i;\n\n      if (currValue > dataInterval[1]) {\n        break;\n      }\n\n      colorStops.push({\n        color: this.getControllerVisual(currValue, 'color', opts),\n        offset: i / sampleNumber\n      });\n    }\n\n    colorStops.push({\n      color: this.getControllerVisual(dataInterval[1], 'color', opts),\n      offset: 1\n    });\n    return colorStops;\n  };\n\n  ContinuousView.prototype._createBarPoints = function (handleEnds, symbolSizes) {\n    var itemSize = this.visualMapModel.itemSize;\n    return [[itemSize[0] - symbolSizes[0], handleEnds[0]], [itemSize[0], handleEnds[0]], [itemSize[0], handleEnds[1]], [itemSize[0] - symbolSizes[1], handleEnds[1]]];\n  };\n\n  ContinuousView.prototype._createBarGroup = function (itemAlign) {\n    var orient = this._orient;\n    var inverse = this.visualMapModel.get('inverse');\n    return new graphic.Group(orient === 'horizontal' && !inverse ? {\n      scaleX: itemAlign === 'bottom' ? 1 : -1,\n      rotation: Math.PI / 2\n    } : orient === 'horizontal' && inverse ? {\n      scaleX: itemAlign === 'bottom' ? -1 : 1,\n      rotation: -Math.PI / 2\n    } : orient === 'vertical' && !inverse ? {\n      scaleX: itemAlign === 'left' ? 1 : -1,\n      scaleY: -1\n    } : {\n      scaleX: itemAlign === 'left' ? 1 : -1\n    });\n  };\n\n  ContinuousView.prototype._updateHandle = function (handleEnds, visualInRange) {\n    if (!this._useHandle) {\n      return;\n    }\n\n    var shapes = this._shapes;\n    var visualMapModel = this.visualMapModel;\n    var handleThumbs = shapes.handleThumbs;\n    var handleLabels = shapes.handleLabels;\n    var itemSize = visualMapModel.itemSize;\n    var dataExtent = visualMapModel.getExtent();\n    each([0, 1], function (handleIndex) {\n      var handleThumb = handleThumbs[handleIndex];\n      handleThumb.setStyle('fill', visualInRange.handlesColor[handleIndex]);\n      handleThumb.y = handleEnds[handleIndex];\n      var val = linearMap(handleEnds[handleIndex], [0, itemSize[1]], dataExtent, true);\n      var symbolSize = this.getControllerVisual(val, 'symbolSize');\n      handleThumb.scaleX = handleThumb.scaleY = symbolSize / itemSize[0];\n      handleThumb.x = itemSize[0] - symbolSize / 2; // Update handle label position.\n\n      var textPoint = graphic.applyTransform(shapes.handleLabelPoints[handleIndex], graphic.getTransform(handleThumb, this.group));\n      handleLabels[handleIndex].setStyle({\n        x: textPoint[0],\n        y: textPoint[1],\n        text: visualMapModel.formatValueText(this._dataInterval[handleIndex]),\n        verticalAlign: 'middle',\n        align: this._orient === 'vertical' ? this._applyTransform('left', shapes.mainGroup) : 'center'\n      });\n    }, this);\n  };\n\n  ContinuousView.prototype._showIndicator = function (cursorValue, textValue, rangeSymbol, halfHoverLinkSize) {\n    var visualMapModel = this.visualMapModel;\n    var dataExtent = visualMapModel.getExtent();\n    var itemSize = visualMapModel.itemSize;\n    var sizeExtent = [0, itemSize[1]];\n    var shapes = this._shapes;\n    var indicator = shapes.indicator;\n\n    if (!indicator) {\n      return;\n    }\n\n    indicator.attr('invisible', false);\n    var opts = {\n      convertOpacityToAlpha: true\n    };\n    var color = this.getControllerVisual(cursorValue, 'color', opts);\n    var symbolSize = this.getControllerVisual(cursorValue, 'symbolSize');\n    var y = linearMap(cursorValue, dataExtent, sizeExtent, true);\n    var x = itemSize[0] - symbolSize / 2;\n    var oldIndicatorPos = {\n      x: indicator.x,\n      y: indicator.y\n    }; // Update handle label position.\n\n    indicator.y = y;\n    indicator.x = x;\n    var textPoint = graphic.applyTransform(shapes.indicatorLabelPoint, graphic.getTransform(indicator, this.group));\n    var indicatorLabel = shapes.indicatorLabel;\n    indicatorLabel.attr('invisible', false);\n\n    var align = this._applyTransform('left', shapes.mainGroup);\n\n    var orient = this._orient;\n    var isHorizontal = orient === 'horizontal';\n    indicatorLabel.setStyle({\n      text: (rangeSymbol ? rangeSymbol : '') + visualMapModel.formatValueText(textValue),\n      verticalAlign: isHorizontal ? align : 'middle',\n      align: isHorizontal ? 'center' : align\n    });\n    var indicatorNewProps = {\n      x: x,\n      y: y,\n      style: {\n        fill: color\n      }\n    };\n    var labelNewProps = {\n      style: {\n        x: textPoint[0],\n        y: textPoint[1]\n      }\n    };\n\n    if (visualMapModel.ecModel.isAnimationEnabled() && !this._firstShowIndicator) {\n      var animationCfg = {\n        duration: 100,\n        easing: 'cubicInOut',\n        additive: true\n      };\n      indicator.x = oldIndicatorPos.x;\n      indicator.y = oldIndicatorPos.y;\n      indicator.animateTo(indicatorNewProps, animationCfg);\n      indicatorLabel.animateTo(labelNewProps, animationCfg);\n    } else {\n      indicator.attr(indicatorNewProps);\n      indicatorLabel.attr(labelNewProps);\n    }\n\n    this._firstShowIndicator = false;\n    var handleLabels = this._shapes.handleLabels;\n\n    if (handleLabels) {\n      for (var i = 0; i < handleLabels.length; i++) {\n        // Fade out handle labels.\n        // NOTE: Must use api enter/leave on emphasis/blur/select state. Or the global states manager will change it.\n        this._api.enterBlur(handleLabels[i]);\n      }\n    }\n  };\n\n  ContinuousView.prototype._enableHoverLinkToSeries = function () {\n    var self = this;\n\n    this._shapes.mainGroup.on('mousemove', function (e) {\n      self._hovering = true;\n\n      if (!self._dragging) {\n        var itemSize = self.visualMapModel.itemSize;\n\n        var pos = self._applyTransform([e.offsetX, e.offsetY], self._shapes.mainGroup, true, true); // For hover link show when hover handle, which might be\n        // below or upper than sizeExtent.\n\n\n        pos[1] = mathMin(mathMax(0, pos[1]), itemSize[1]);\n\n        self._doHoverLinkToSeries(pos[1], 0 <= pos[0] && pos[0] <= itemSize[0]);\n      }\n    }).on('mouseout', function () {\n      // When mouse is out of handle, hoverLink still need\n      // to be displayed when realtime is set as false.\n      self._hovering = false;\n      !self._dragging && self._clearHoverLinkToSeries();\n    });\n  };\n\n  ContinuousView.prototype._enableHoverLinkFromSeries = function () {\n    var zr = this.api.getZr();\n\n    if (this.visualMapModel.option.hoverLink) {\n      zr.on('mouseover', this._hoverLinkFromSeriesMouseOver, this);\n      zr.on('mouseout', this._hideIndicator, this);\n    } else {\n      this._clearHoverLinkFromSeries();\n    }\n  };\n\n  ContinuousView.prototype._doHoverLinkToSeries = function (cursorPos, hoverOnBar) {\n    var visualMapModel = this.visualMapModel;\n    var itemSize = visualMapModel.itemSize;\n\n    if (!visualMapModel.option.hoverLink) {\n      return;\n    }\n\n    var sizeExtent = [0, itemSize[1]];\n    var dataExtent = visualMapModel.getExtent(); // For hover link show when hover handle, which might be below or upper than sizeExtent.\n\n    cursorPos = mathMin(mathMax(sizeExtent[0], cursorPos), sizeExtent[1]);\n    var halfHoverLinkSize = getHalfHoverLinkSize(visualMapModel, dataExtent, sizeExtent);\n    var hoverRange = [cursorPos - halfHoverLinkSize, cursorPos + halfHoverLinkSize];\n    var cursorValue = linearMap(cursorPos, sizeExtent, dataExtent, true);\n    var valueRange = [linearMap(hoverRange[0], sizeExtent, dataExtent, true), linearMap(hoverRange[1], sizeExtent, dataExtent, true)]; // Consider data range is out of visualMap range, see test/visualMap-continuous.html,\n    // where china and india has very large population.\n\n    hoverRange[0] < sizeExtent[0] && (valueRange[0] = -Infinity);\n    hoverRange[1] > sizeExtent[1] && (valueRange[1] = Infinity); // Do not show indicator when mouse is over handle,\n    // otherwise labels overlap, especially when dragging.\n\n    if (hoverOnBar) {\n      if (valueRange[0] === -Infinity) {\n        this._showIndicator(cursorValue, valueRange[1], '< ', halfHoverLinkSize);\n      } else if (valueRange[1] === Infinity) {\n        this._showIndicator(cursorValue, valueRange[0], '> ', halfHoverLinkSize);\n      } else {\n        this._showIndicator(cursorValue, cursorValue, '≈ ', halfHoverLinkSize);\n      }\n    } // When realtime is set as false, handles, which are in barGroup,\n    // also trigger hoverLink, which help user to realize where they\n    // focus on when dragging. (see test/heatmap-large.html)\n    // When realtime is set as true, highlight will not show when hover\n    // handle, because the label on handle, which displays a exact value\n    // but not range, might mislead users.\n\n\n    var oldBatch = this._hoverLinkDataIndices;\n    var newBatch = [];\n\n    if (hoverOnBar || useHoverLinkOnHandle(visualMapModel)) {\n      newBatch = this._hoverLinkDataIndices = visualMapModel.findTargetDataIndices(valueRange);\n    }\n\n    var resultBatches = modelUtil.compressBatches(oldBatch, newBatch);\n\n    this._dispatchHighDown('downplay', helper.makeHighDownBatch(resultBatches[0], visualMapModel));\n\n    this._dispatchHighDown('highlight', helper.makeHighDownBatch(resultBatches[1], visualMapModel));\n  };\n\n  ContinuousView.prototype._hoverLinkFromSeriesMouseOver = function (e) {\n    var ecData;\n    findEventDispatcher(e.target, function (target) {\n      var currECData = getECData(target);\n\n      if (currECData.dataIndex != null) {\n        ecData = currECData;\n        return true;\n      }\n    }, true);\n\n    if (!ecData) {\n      return;\n    }\n\n    var dataModel = this.ecModel.getSeriesByIndex(ecData.seriesIndex);\n    var visualMapModel = this.visualMapModel;\n\n    if (!visualMapModel.isTargetSeries(dataModel)) {\n      return;\n    }\n\n    var data = dataModel.getData(ecData.dataType);\n    var value = data.getStore().get(visualMapModel.getDataDimensionIndex(data), ecData.dataIndex);\n\n    if (!isNaN(value)) {\n      this._showIndicator(value, value);\n    }\n  };\n\n  ContinuousView.prototype._hideIndicator = function () {\n    var shapes = this._shapes;\n    shapes.indicator && shapes.indicator.attr('invisible', true);\n    shapes.indicatorLabel && shapes.indicatorLabel.attr('invisible', true);\n    var handleLabels = this._shapes.handleLabels;\n\n    if (handleLabels) {\n      for (var i = 0; i < handleLabels.length; i++) {\n        // Fade out handle labels.\n        // NOTE: Must use api enter/leave on emphasis/blur/select state. Or the global states manager will change it.\n        this._api.leaveBlur(handleLabels[i]);\n      }\n    }\n  };\n\n  ContinuousView.prototype._clearHoverLinkToSeries = function () {\n    this._hideIndicator();\n\n    var indices = this._hoverLinkDataIndices;\n\n    this._dispatchHighDown('downplay', helper.makeHighDownBatch(indices, this.visualMapModel));\n\n    indices.length = 0;\n  };\n\n  ContinuousView.prototype._clearHoverLinkFromSeries = function () {\n    this._hideIndicator();\n\n    var zr = this.api.getZr();\n    zr.off('mouseover', this._hoverLinkFromSeriesMouseOver);\n    zr.off('mouseout', this._hideIndicator);\n  };\n\n  ContinuousView.prototype._applyTransform = function (vertex, element, inverse, global) {\n    var transform = graphic.getTransform(element, global ? null : this.group);\n    return zrUtil.isArray(vertex) ? graphic.applyTransform(vertex, transform, inverse) : graphic.transformDirection(vertex, transform, inverse);\n  }; // TODO: TYPE more specified payload types.\n\n\n  ContinuousView.prototype._dispatchHighDown = function (type, batch) {\n    batch && batch.length && this.api.dispatchAction({\n      type: type,\n      batch: batch\n    });\n  };\n  /**\r\n   * @override\r\n   */\n\n\n  ContinuousView.prototype.dispose = function () {\n    this._clearHoverLinkFromSeries();\n\n    this._clearHoverLinkToSeries();\n  };\n  /**\r\n   * @override\r\n   */\n\n\n  ContinuousView.prototype.remove = function () {\n    this._clearHoverLinkFromSeries();\n\n    this._clearHoverLinkToSeries();\n  };\n\n  ContinuousView.type = 'visualMap.continuous';\n  return ContinuousView;\n}(VisualMapView);\n\nfunction createPolygon(points, cursor, onDrift, onDragEnd) {\n  return new graphic.Polygon({\n    shape: {\n      points: points\n    },\n    draggable: !!onDrift,\n    cursor: cursor,\n    drift: onDrift,\n    onmousemove: function (e) {\n      // For mobile device, prevent screen slider on the button.\n      eventTool.stop(e.event);\n    },\n    ondragend: onDragEnd\n  });\n}\n\nfunction getHalfHoverLinkSize(visualMapModel, dataExtent, sizeExtent) {\n  var halfHoverLinkSize = HOVER_LINK_SIZE / 2;\n  var hoverLinkDataSize = visualMapModel.get('hoverLinkDataSize');\n\n  if (hoverLinkDataSize) {\n    halfHoverLinkSize = linearMap(hoverLinkDataSize, dataExtent, sizeExtent, true) / 2;\n  }\n\n  return halfHoverLinkSize;\n}\n\nfunction useHoverLinkOnHandle(visualMapModel) {\n  var hoverLinkOnHandle = visualMapModel.get('hoverLinkOnHandle');\n  return !!(hoverLinkOnHandle == null ? visualMapModel.get('realtime') : hoverLinkOnHandle);\n}\n\nfunction getCursor(orient) {\n  return orient === 'vertical' ? 'ns-resize' : 'ew-resize';\n}\n\nexport default ContinuousView;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nexport var visualMapActionInfo = {\n  type: 'selectDataRange',\n  event: 'dataRangeSelected',\n  // FIXME use updateView appears wrong\n  update: 'update'\n};\nexport var visualMapActionHander = function (payload, ecModel) {\n  ecModel.eachComponent({\n    mainType: 'visualMap',\n    query: payload\n  }, function (model) {\n    model.setSelected(payload.selected);\n  });\n};","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport * as zrUtil from 'zrender/lib/core/util.js';\nimport * as visualSolution from '../../visual/visualSolution.js';\nimport VisualMapping from '../../visual/VisualMapping.js';\nimport { getVisualFromData } from '../../visual/helper.js';\nexport var visualMapEncodingHandlers = [{\n  createOnAllSeries: true,\n  reset: function (seriesModel, ecModel) {\n    var resetDefines = [];\n    ecModel.eachComponent('visualMap', function (visualMapModel) {\n      var pipelineContext = seriesModel.pipelineContext;\n\n      if (!visualMapModel.isTargetSeries(seriesModel) || pipelineContext && pipelineContext.large) {\n        return;\n      }\n\n      resetDefines.push(visualSolution.incrementalApplyVisual(visualMapModel.stateList, visualMapModel.targetVisuals, zrUtil.bind(visualMapModel.getValueState, visualMapModel), visualMapModel.getDataDimensionIndex(seriesModel.getData())));\n    });\n    return resetDefines;\n  }\n}, // Only support color.\n{\n  createOnAllSeries: true,\n  reset: function (seriesModel, ecModel) {\n    var data = seriesModel.getData();\n    var visualMetaList = [];\n    ecModel.eachComponent('visualMap', function (visualMapModel) {\n      if (visualMapModel.isTargetSeries(seriesModel)) {\n        var visualMeta = visualMapModel.getVisualMeta(zrUtil.bind(getColorVisual, null, seriesModel, visualMapModel)) || {\n          stops: [],\n          outerColors: []\n        };\n        var dimIdx = visualMapModel.getDataDimensionIndex(data);\n\n        if (dimIdx >= 0) {\n          // visualMeta.dimension should be dimension index, but not concrete dimension.\n          visualMeta.dimension = dimIdx;\n          visualMetaList.push(visualMeta);\n        }\n      }\n    }); // console.log(JSON.stringify(visualMetaList.map(a => a.stops)));\n\n    seriesModel.getData().setVisual('visualMeta', visualMetaList);\n  }\n}]; // FIXME\n// performance and export for heatmap?\n// value can be Infinity or -Infinity\n\nfunction getColorVisual(seriesModel, visualMapModel, value, valueState) {\n  var mappings = visualMapModel.targetVisuals[valueState];\n  var visualTypes = VisualMapping.prepareVisualTypes(mappings);\n  var resultVisual = {\n    color: getVisualFromData(seriesModel.getData(), 'color') // default color.\n\n  };\n\n  for (var i = 0, len = visualTypes.length; i < len; i++) {\n    var type = visualTypes[i];\n    var mapping = mappings[type === 'opacity' ? '__alphaForOpacity' : type];\n    mapping && mapping.applyVisual(value, getVisual, setVisual);\n  }\n\n  return resultVisual.color;\n\n  function getVisual(key) {\n    return resultVisual[key];\n  }\n\n  function setVisual(key, value) {\n    resultVisual[key] = value;\n  }\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\n// @ts-nocheck\nimport * as zrUtil from 'zrender/lib/core/util.js';\nvar each = zrUtil.each;\nexport default function visualMapPreprocessor(option) {\n  var visualMap = option && option.visualMap;\n\n  if (!zrUtil.isArray(visualMap)) {\n    visualMap = visualMap ? [visualMap] : [];\n  }\n\n  each(visualMap, function (opt) {\n    if (!opt) {\n      return;\n    } // rename splitList to pieces\n\n\n    if (has(opt, 'splitList') && !has(opt, 'pieces')) {\n      opt.pieces = opt.splitList;\n      delete opt.splitList;\n    }\n\n    var pieces = opt.pieces;\n\n    if (pieces && zrUtil.isArray(pieces)) {\n      each(pieces, function (piece) {\n        if (zrUtil.isObject(piece)) {\n          if (has(piece, 'start') && !has(piece, 'min')) {\n            piece.min = piece.start;\n          }\n\n          if (has(piece, 'end') && !has(piece, 'max')) {\n            piece.max = piece.end;\n          }\n        }\n      });\n    }\n  });\n}\n\nfunction has(obj, name) {\n  return obj && obj.hasOwnProperty && obj.hasOwnProperty(name);\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { visualMapActionInfo, visualMapActionHander } from './visualMapAction.js';\nimport { visualMapEncodingHandlers } from './visualEncoding.js';\nimport { each } from 'zrender/lib/core/util.js';\nimport preprocessor from './preprocessor.js';\nvar installed = false;\nexport default function installCommon(registers) {\n  if (installed) {\n    return;\n  }\n\n  installed = true;\n  registers.registerSubTypeDefaulter('visualMap', function (option) {\n    // Compatible with ec2, when splitNumber === 0, continuous visualMap will be used.\n    return !option.categories && (!(option.pieces ? option.pieces.length > 0 : option.splitNumber > 0) || option.calculable) ? 'continuous' : 'piecewise';\n  });\n  registers.registerAction(visualMapActionInfo, visualMapActionHander);\n  each(visualMapEncodingHandlers, function (handler) {\n    registers.registerVisual(registers.PRIORITY.VISUAL.COMPONENT, handler);\n  });\n  registers.registerPreprocessor(preprocessor);\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport ContinuousModel from './ContinuousModel.js';\nimport ContinuousView from './ContinuousView.js';\nimport installCommon from './installCommon.js';\nexport function install(registers) {\n  registers.registerComponentModel(ContinuousModel);\n  registers.registerComponentView(ContinuousView);\n  installCommon(registers);\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { __extends } from \"tslib\";\nimport * as zrUtil from 'zrender/lib/core/util.js';\nimport VisualMapModel from './VisualMapModel.js';\nimport VisualMapping from '../../visual/VisualMapping.js';\nimport visualDefault from '../../visual/visualDefault.js';\nimport { reformIntervals } from '../../util/number.js';\nimport { inheritDefaultOption } from '../../util/component.js';\n\nvar PiecewiseModel =\n/** @class */\nfunction (_super) {\n  __extends(PiecewiseModel, _super);\n\n  function PiecewiseModel() {\n    var _this = _super !== null && _super.apply(this, arguments) || this;\n\n    _this.type = PiecewiseModel.type;\n    /**\r\n     * The order is always [low, ..., high].\r\n     * [{text: string, interval: Array.<number>}, ...]\r\n     */\n\n    _this._pieceList = [];\n    return _this;\n  }\n\n  PiecewiseModel.prototype.optionUpdated = function (newOption, isInit) {\n    _super.prototype.optionUpdated.apply(this, arguments);\n\n    this.resetExtent();\n\n    var mode = this._mode = this._determineMode();\n\n    this._pieceList = [];\n\n    resetMethods[this._mode].call(this, this._pieceList);\n\n    this._resetSelected(newOption, isInit);\n\n    var categories = this.option.categories;\n    this.resetVisual(function (mappingOption, state) {\n      if (mode === 'categories') {\n        mappingOption.mappingMethod = 'category';\n        mappingOption.categories = zrUtil.clone(categories);\n      } else {\n        mappingOption.dataExtent = this.getExtent();\n        mappingOption.mappingMethod = 'piecewise';\n        mappingOption.pieceList = zrUtil.map(this._pieceList, function (piece) {\n          piece = zrUtil.clone(piece);\n\n          if (state !== 'inRange') {\n            // FIXME\n            // outOfRange do not support special visual in pieces.\n            piece.visual = null;\n          }\n\n          return piece;\n        });\n      }\n    });\n  };\n  /**\r\n   * @protected\r\n   * @override\r\n   */\n\n\n  PiecewiseModel.prototype.completeVisualOption = function () {\n    // Consider this case:\n    // visualMap: {\n    //      pieces: [{symbol: 'circle', lt: 0}, {symbol: 'rect', gte: 0}]\n    // }\n    // where no inRange/outOfRange set but only pieces. So we should make\n    // default inRange/outOfRange for this case, otherwise visuals that only\n    // appear in `pieces` will not be taken into account in visual encoding.\n    var option = this.option;\n    var visualTypesInPieces = {};\n    var visualTypes = VisualMapping.listVisualTypes();\n    var isCategory = this.isCategory();\n    zrUtil.each(option.pieces, function (piece) {\n      zrUtil.each(visualTypes, function (visualType) {\n        if (piece.hasOwnProperty(visualType)) {\n          visualTypesInPieces[visualType] = 1;\n        }\n      });\n    });\n    zrUtil.each(visualTypesInPieces, function (v, visualType) {\n      var exists = false;\n      zrUtil.each(this.stateList, function (state) {\n        exists = exists || has(option, state, visualType) || has(option.target, state, visualType);\n      }, this);\n      !exists && zrUtil.each(this.stateList, function (state) {\n        (option[state] || (option[state] = {}))[visualType] = visualDefault.get(visualType, state === 'inRange' ? 'active' : 'inactive', isCategory);\n      });\n    }, this);\n\n    function has(obj, state, visualType) {\n      return obj && obj[state] && obj[state].hasOwnProperty(visualType);\n    }\n\n    _super.prototype.completeVisualOption.apply(this, arguments);\n  };\n\n  PiecewiseModel.prototype._resetSelected = function (newOption, isInit) {\n    var thisOption = this.option;\n    var pieceList = this._pieceList; // Selected do not merge but all override.\n\n    var selected = (isInit ? thisOption : newOption).selected || {};\n    thisOption.selected = selected; // Consider 'not specified' means true.\n\n    zrUtil.each(pieceList, function (piece, index) {\n      var key = this.getSelectedMapKey(piece);\n\n      if (!selected.hasOwnProperty(key)) {\n        selected[key] = true;\n      }\n    }, this);\n\n    if (thisOption.selectedMode === 'single') {\n      // Ensure there is only one selected.\n      var hasSel_1 = false;\n      zrUtil.each(pieceList, function (piece, index) {\n        var key = this.getSelectedMapKey(piece);\n\n        if (selected[key]) {\n          hasSel_1 ? selected[key] = false : hasSel_1 = true;\n        }\n      }, this);\n    } // thisOption.selectedMode === 'multiple', default: all selected.\n\n  };\n  /**\r\n   * @public\r\n   */\n\n\n  PiecewiseModel.prototype.getItemSymbol = function () {\n    return this.get('itemSymbol');\n  };\n  /**\r\n   * @public\r\n   */\n\n\n  PiecewiseModel.prototype.getSelectedMapKey = function (piece) {\n    return this._mode === 'categories' ? piece.value + '' : piece.index + '';\n  };\n  /**\r\n   * @public\r\n   */\n\n\n  PiecewiseModel.prototype.getPieceList = function () {\n    return this._pieceList;\n  };\n  /**\r\n   * @return {string}\r\n   */\n\n\n  PiecewiseModel.prototype._determineMode = function () {\n    var option = this.option;\n    return option.pieces && option.pieces.length > 0 ? 'pieces' : this.option.categories ? 'categories' : 'splitNumber';\n  };\n  /**\r\n   * @override\r\n   */\n\n\n  PiecewiseModel.prototype.setSelected = function (selected) {\n    this.option.selected = zrUtil.clone(selected);\n  };\n  /**\r\n   * @override\r\n   */\n\n\n  PiecewiseModel.prototype.getValueState = function (value) {\n    var index = VisualMapping.findPieceIndex(value, this._pieceList);\n    return index != null ? this.option.selected[this.getSelectedMapKey(this._pieceList[index])] ? 'inRange' : 'outOfRange' : 'outOfRange';\n  };\n  /**\r\n   * @public\r\n   * @param pieceIndex piece index in visualMapModel.getPieceList()\r\n   */\n\n\n  PiecewiseModel.prototype.findTargetDataIndices = function (pieceIndex) {\n    var result = [];\n    var pieceList = this._pieceList;\n    this.eachTargetSeries(function (seriesModel) {\n      var dataIndices = [];\n      var data = seriesModel.getData();\n      data.each(this.getDataDimensionIndex(data), function (value, dataIndex) {\n        // Should always base on model pieceList, because it is order sensitive.\n        var pIdx = VisualMapping.findPieceIndex(value, pieceList);\n        pIdx === pieceIndex && dataIndices.push(dataIndex);\n      }, this);\n      result.push({\n        seriesId: seriesModel.id,\n        dataIndex: dataIndices\n      });\n    }, this);\n    return result;\n  };\n  /**\r\n   * @private\r\n   * @param piece piece.value or piece.interval is required.\r\n   * @return  Can be Infinity or -Infinity\r\n   */\n\n\n  PiecewiseModel.prototype.getRepresentValue = function (piece) {\n    var representValue;\n\n    if (this.isCategory()) {\n      representValue = piece.value;\n    } else {\n      if (piece.value != null) {\n        representValue = piece.value;\n      } else {\n        var pieceInterval = piece.interval || [];\n        representValue = pieceInterval[0] === -Infinity && pieceInterval[1] === Infinity ? 0 : (pieceInterval[0] + pieceInterval[1]) / 2;\n      }\n    }\n\n    return representValue;\n  };\n\n  PiecewiseModel.prototype.getVisualMeta = function (getColorVisual) {\n    // Do not support category. (category axis is ordinal, numerical)\n    if (this.isCategory()) {\n      return;\n    }\n\n    var stops = [];\n    var outerColors = ['', ''];\n    var visualMapModel = this;\n\n    function setStop(interval, valueState) {\n      var representValue = visualMapModel.getRepresentValue({\n        interval: interval\n      }); // Not category\n\n      if (!valueState) {\n        valueState = visualMapModel.getValueState(representValue);\n      }\n\n      var color = getColorVisual(representValue, valueState);\n\n      if (interval[0] === -Infinity) {\n        outerColors[0] = color;\n      } else if (interval[1] === Infinity) {\n        outerColors[1] = color;\n      } else {\n        stops.push({\n          value: interval[0],\n          color: color\n        }, {\n          value: interval[1],\n          color: color\n        });\n      }\n    } // Suplement\n\n\n    var pieceList = this._pieceList.slice();\n\n    if (!pieceList.length) {\n      pieceList.push({\n        interval: [-Infinity, Infinity]\n      });\n    } else {\n      var edge = pieceList[0].interval[0];\n      edge !== -Infinity && pieceList.unshift({\n        interval: [-Infinity, edge]\n      });\n      edge = pieceList[pieceList.length - 1].interval[1];\n      edge !== Infinity && pieceList.push({\n        interval: [edge, Infinity]\n      });\n    }\n\n    var curr = -Infinity;\n    zrUtil.each(pieceList, function (piece) {\n      var interval = piece.interval;\n\n      if (interval) {\n        // Fulfill gap.\n        interval[0] > curr && setStop([curr, interval[0]], 'outOfRange');\n        setStop(interval.slice());\n        curr = interval[1];\n      }\n    }, this);\n    return {\n      stops: stops,\n      outerColors: outerColors\n    };\n  };\n\n  PiecewiseModel.type = 'visualMap.piecewise';\n  PiecewiseModel.defaultOption = inheritDefaultOption(VisualMapModel.defaultOption, {\n    selected: null,\n    minOpen: false,\n    maxOpen: false,\n    align: 'auto',\n    itemWidth: 20,\n    itemHeight: 14,\n    itemSymbol: 'roundRect',\n    pieces: null,\n    categories: null,\n    splitNumber: 5,\n    selectedMode: 'multiple',\n    itemGap: 10,\n    hoverLink: true // Enable hover highlight.\n\n  });\n  return PiecewiseModel;\n}(VisualMapModel);\n\n;\n/**\r\n * Key is this._mode\r\n * @type {Object}\r\n * @this {module:echarts/component/viusalMap/PiecewiseMode}\r\n */\n\nvar resetMethods = {\n  splitNumber: function (outPieceList) {\n    var thisOption = this.option;\n    var precision = Math.min(thisOption.precision, 20);\n    var dataExtent = this.getExtent();\n    var splitNumber = thisOption.splitNumber;\n    splitNumber = Math.max(parseInt(splitNumber, 10), 1);\n    thisOption.splitNumber = splitNumber;\n    var splitStep = (dataExtent[1] - dataExtent[0]) / splitNumber; // Precision auto-adaption\n\n    while (+splitStep.toFixed(precision) !== splitStep && precision < 5) {\n      precision++;\n    }\n\n    thisOption.precision = precision;\n    splitStep = +splitStep.toFixed(precision);\n\n    if (thisOption.minOpen) {\n      outPieceList.push({\n        interval: [-Infinity, dataExtent[0]],\n        close: [0, 0]\n      });\n    }\n\n    for (var index = 0, curr = dataExtent[0]; index < splitNumber; curr += splitStep, index++) {\n      var max = index === splitNumber - 1 ? dataExtent[1] : curr + splitStep;\n      outPieceList.push({\n        interval: [curr, max],\n        close: [1, 1]\n      });\n    }\n\n    if (thisOption.maxOpen) {\n      outPieceList.push({\n        interval: [dataExtent[1], Infinity],\n        close: [0, 0]\n      });\n    }\n\n    reformIntervals(outPieceList);\n    zrUtil.each(outPieceList, function (piece, index) {\n      piece.index = index;\n      piece.text = this.formatValueText(piece.interval);\n    }, this);\n  },\n  categories: function (outPieceList) {\n    var thisOption = this.option;\n    zrUtil.each(thisOption.categories, function (cate) {\n      // FIXME category模式也使用pieceList，但在visualMapping中不是使用pieceList。\n      // 是否改一致。\n      outPieceList.push({\n        text: this.formatValueText(cate, true),\n        value: cate\n      });\n    }, this); // See \"Order Rule\".\n\n    normalizeReverse(thisOption, outPieceList);\n  },\n  pieces: function (outPieceList) {\n    var thisOption = this.option;\n    zrUtil.each(thisOption.pieces, function (pieceListItem, index) {\n      if (!zrUtil.isObject(pieceListItem)) {\n        pieceListItem = {\n          value: pieceListItem\n        };\n      }\n\n      var item = {\n        text: '',\n        index: index\n      };\n\n      if (pieceListItem.label != null) {\n        item.text = pieceListItem.label;\n      }\n\n      if (pieceListItem.hasOwnProperty('value')) {\n        var value = item.value = pieceListItem.value;\n        item.interval = [value, value];\n        item.close = [1, 1];\n      } else {\n        // `min` `max` is legacy option.\n        // `lt` `gt` `lte` `gte` is recommended.\n        var interval = item.interval = [];\n        var close_1 = item.close = [0, 0];\n        var closeList = [1, 0, 1];\n        var infinityList = [-Infinity, Infinity];\n        var useMinMax = [];\n\n        for (var lg = 0; lg < 2; lg++) {\n          var names = [['gte', 'gt', 'min'], ['lte', 'lt', 'max']][lg];\n\n          for (var i = 0; i < 3 && interval[lg] == null; i++) {\n            interval[lg] = pieceListItem[names[i]];\n            close_1[lg] = closeList[i];\n            useMinMax[lg] = i === 2;\n          }\n\n          interval[lg] == null && (interval[lg] = infinityList[lg]);\n        }\n\n        useMinMax[0] && interval[1] === Infinity && (close_1[0] = 0);\n        useMinMax[1] && interval[0] === -Infinity && (close_1[1] = 0);\n\n        if (process.env.NODE_ENV !== 'production') {\n          if (interval[0] > interval[1]) {\n            console.warn('Piece ' + index + 'is illegal: ' + interval + ' lower bound should not greater then uppper bound.');\n          }\n        }\n\n        if (interval[0] === interval[1] && close_1[0] && close_1[1]) {\n          // Consider: [{min: 5, max: 5, visual: {...}}, {min: 0, max: 5}],\n          // we use value to lift the priority when min === max\n          item.value = interval[0];\n        }\n      }\n\n      item.visual = VisualMapping.retrieveVisuals(pieceListItem);\n      outPieceList.push(item);\n    }, this); // See \"Order Rule\".\n\n    normalizeReverse(thisOption, outPieceList); // Only pieces\n\n    reformIntervals(outPieceList);\n    zrUtil.each(outPieceList, function (piece) {\n      var close = piece.close;\n      var edgeSymbols = [['<', '≤'][close[1]], ['>', '≥'][close[0]]];\n      piece.text = piece.text || this.formatValueText(piece.value != null ? piece.value : piece.interval, false, edgeSymbols);\n    }, this);\n  }\n};\n\nfunction normalizeReverse(thisOption, pieceList) {\n  var inverse = thisOption.inverse;\n\n  if (thisOption.orient === 'vertical' ? !inverse : inverse) {\n    pieceList.reverse();\n  }\n}\n\nexport default PiecewiseModel;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { __extends } from \"tslib\";\nimport * as zrUtil from 'zrender/lib/core/util.js';\nimport VisualMapView from './VisualMapView.js';\nimport * as graphic from '../../util/graphic.js';\nimport { createSymbol } from '../../util/symbol.js';\nimport * as layout from '../../util/layout.js';\nimport * as helper from './helper.js';\nimport { createTextStyle } from '../../label/labelStyle.js';\n\nvar PiecewiseVisualMapView =\n/** @class */\nfunction (_super) {\n  __extends(PiecewiseVisualMapView, _super);\n\n  function PiecewiseVisualMapView() {\n    var _this = _super !== null && _super.apply(this, arguments) || this;\n\n    _this.type = PiecewiseVisualMapView.type;\n    return _this;\n  }\n\n  PiecewiseVisualMapView.prototype.doRender = function () {\n    var thisGroup = this.group;\n    thisGroup.removeAll();\n    var visualMapModel = this.visualMapModel;\n    var textGap = visualMapModel.get('textGap');\n    var textStyleModel = visualMapModel.textStyleModel;\n    var textFont = textStyleModel.getFont();\n    var textFill = textStyleModel.getTextColor();\n\n    var itemAlign = this._getItemAlign();\n\n    var itemSize = visualMapModel.itemSize;\n\n    var viewData = this._getViewData();\n\n    var endsText = viewData.endsText;\n    var showLabel = zrUtil.retrieve(visualMapModel.get('showLabel', true), !endsText);\n    endsText && this._renderEndsText(thisGroup, endsText[0], itemSize, showLabel, itemAlign);\n    zrUtil.each(viewData.viewPieceList, function (item) {\n      var piece = item.piece;\n      var itemGroup = new graphic.Group();\n      itemGroup.onclick = zrUtil.bind(this._onItemClick, this, piece);\n\n      this._enableHoverLink(itemGroup, item.indexInModelPieceList); // TODO Category\n\n\n      var representValue = visualMapModel.getRepresentValue(piece);\n\n      this._createItemSymbol(itemGroup, representValue, [0, 0, itemSize[0], itemSize[1]]);\n\n      if (showLabel) {\n        var visualState = this.visualMapModel.getValueState(representValue);\n        itemGroup.add(new graphic.Text({\n          style: {\n            x: itemAlign === 'right' ? -textGap : itemSize[0] + textGap,\n            y: itemSize[1] / 2,\n            text: piece.text,\n            verticalAlign: 'middle',\n            align: itemAlign,\n            font: textFont,\n            fill: textFill,\n            opacity: visualState === 'outOfRange' ? 0.5 : 1\n          }\n        }));\n      }\n\n      thisGroup.add(itemGroup);\n    }, this);\n    endsText && this._renderEndsText(thisGroup, endsText[1], itemSize, showLabel, itemAlign);\n    layout.box(visualMapModel.get('orient'), thisGroup, visualMapModel.get('itemGap'));\n    this.renderBackground(thisGroup);\n    this.positionGroup(thisGroup);\n  };\n\n  PiecewiseVisualMapView.prototype._enableHoverLink = function (itemGroup, pieceIndex) {\n    var _this = this;\n\n    itemGroup.on('mouseover', function () {\n      return onHoverLink('highlight');\n    }).on('mouseout', function () {\n      return onHoverLink('downplay');\n    });\n\n    var onHoverLink = function (method) {\n      var visualMapModel = _this.visualMapModel; // TODO: TYPE More detailed action types\n\n      visualMapModel.option.hoverLink && _this.api.dispatchAction({\n        type: method,\n        batch: helper.makeHighDownBatch(visualMapModel.findTargetDataIndices(pieceIndex), visualMapModel)\n      });\n    };\n  };\n\n  PiecewiseVisualMapView.prototype._getItemAlign = function () {\n    var visualMapModel = this.visualMapModel;\n    var modelOption = visualMapModel.option;\n\n    if (modelOption.orient === 'vertical') {\n      return helper.getItemAlign(visualMapModel, this.api, visualMapModel.itemSize);\n    } else {\n      // horizontal, most case left unless specifying right.\n      var align = modelOption.align;\n\n      if (!align || align === 'auto') {\n        align = 'left';\n      }\n\n      return align;\n    }\n  };\n\n  PiecewiseVisualMapView.prototype._renderEndsText = function (group, text, itemSize, showLabel, itemAlign) {\n    if (!text) {\n      return;\n    }\n\n    var itemGroup = new graphic.Group();\n    var textStyleModel = this.visualMapModel.textStyleModel;\n    itemGroup.add(new graphic.Text({\n      style: createTextStyle(textStyleModel, {\n        x: showLabel ? itemAlign === 'right' ? itemSize[0] : 0 : itemSize[0] / 2,\n        y: itemSize[1] / 2,\n        verticalAlign: 'middle',\n        align: showLabel ? itemAlign : 'center',\n        text: text\n      })\n    }));\n    group.add(itemGroup);\n  };\n  /**\r\n   * @private\r\n   * @return {Object} {peiceList, endsText} The order is the same as screen pixel order.\r\n   */\n\n\n  PiecewiseVisualMapView.prototype._getViewData = function () {\n    var visualMapModel = this.visualMapModel;\n    var viewPieceList = zrUtil.map(visualMapModel.getPieceList(), function (piece, index) {\n      return {\n        piece: piece,\n        indexInModelPieceList: index\n      };\n    });\n    var endsText = visualMapModel.get('text'); // Consider orient and inverse.\n\n    var orient = visualMapModel.get('orient');\n    var inverse = visualMapModel.get('inverse'); // Order of model pieceList is always [low, ..., high]\n\n    if (orient === 'horizontal' ? inverse : !inverse) {\n      viewPieceList.reverse();\n    } // Origin order of endsText is [high, low]\n    else if (endsText) {\n        endsText = endsText.slice().reverse();\n      }\n\n    return {\n      viewPieceList: viewPieceList,\n      endsText: endsText\n    };\n  };\n\n  PiecewiseVisualMapView.prototype._createItemSymbol = function (group, representValue, shapeParam) {\n    group.add(createSymbol( // symbol will be string\n    this.getControllerVisual(representValue, 'symbol'), shapeParam[0], shapeParam[1], shapeParam[2], shapeParam[3], // color will be string\n    this.getControllerVisual(representValue, 'color')));\n  };\n\n  PiecewiseVisualMapView.prototype._onItemClick = function (piece) {\n    var visualMapModel = this.visualMapModel;\n    var option = visualMapModel.option;\n    var selectedMode = option.selectedMode;\n\n    if (!selectedMode) {\n      return;\n    }\n\n    var selected = zrUtil.clone(option.selected);\n    var newKey = visualMapModel.getSelectedMapKey(piece);\n\n    if (selectedMode === 'single' || selectedMode === true) {\n      selected[newKey] = true;\n      zrUtil.each(selected, function (o, key) {\n        selected[key] = key === newKey;\n      });\n    } else {\n      selected[newKey] = !selected[newKey];\n    }\n\n    this.api.dispatchAction({\n      type: 'selectDataRange',\n      from: this.uid,\n      visualMapId: this.visualMapModel.id,\n      selected: selected\n    });\n  };\n\n  PiecewiseVisualMapView.type = 'visualMap.piecewise';\n  return PiecewiseVisualMapView;\n}(VisualMapView);\n\nexport default PiecewiseVisualMapView;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport PiecewiseModel from './PiecewiseModel.js';\nimport PiecewiseView from './PiecewiseView.js';\nimport installCommon from './installCommon.js';\nexport function install(registers) {\n  registers.registerComponentModel(PiecewiseModel);\n  registers.registerComponentView(PiecewiseView);\n  installCommon(registers);\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport * as zrUtil from 'zrender/lib/core/util.js';\nimport { makeInner } from '../util/model.js';\nimport { getDecalFromPalette } from '../model/mixin/palette.js';\nvar DEFAULT_OPTION = {\n  label: {\n    enabled: true\n  },\n  decal: {\n    show: false\n  }\n};\nvar inner = makeInner();\nvar decalPaletteScope = {};\nexport default function ariaVisual(ecModel, api) {\n  var ariaModel = ecModel.getModel('aria'); // See \"area enabled\" detection code in `GlobalModel.ts`.\n\n  if (!ariaModel.get('enabled')) {\n    return;\n  }\n\n  var defaultOption = zrUtil.clone(DEFAULT_OPTION);\n  zrUtil.merge(defaultOption.label, ecModel.getLocaleModel().get('aria'), false);\n  zrUtil.merge(ariaModel.option, defaultOption, false);\n  setDecal();\n  setLabel();\n\n  function setDecal() {\n    var decalModel = ariaModel.getModel('decal');\n    var useDecal = decalModel.get('show');\n\n    if (useDecal) {\n      // Each type of series use one scope.\n      // Pie and funnel are using different scopes.\n      var paletteScopeGroupByType_1 = zrUtil.createHashMap();\n      ecModel.eachSeries(function (seriesModel) {\n        if (seriesModel.isColorBySeries()) {\n          return;\n        }\n\n        var decalScope = paletteScopeGroupByType_1.get(seriesModel.type);\n\n        if (!decalScope) {\n          decalScope = {};\n          paletteScopeGroupByType_1.set(seriesModel.type, decalScope);\n        }\n\n        inner(seriesModel).scope = decalScope;\n      });\n      ecModel.eachRawSeries(function (seriesModel) {\n        if (ecModel.isSeriesFiltered(seriesModel)) {\n          return;\n        }\n\n        if (zrUtil.isFunction(seriesModel.enableAriaDecal)) {\n          // Let series define how to use decal palette on data\n          seriesModel.enableAriaDecal();\n          return;\n        }\n\n        var data = seriesModel.getData();\n\n        if (!seriesModel.isColorBySeries()) {\n          var dataAll_1 = seriesModel.getRawData();\n          var idxMap_1 = {};\n          var decalScope_1 = inner(seriesModel).scope;\n          data.each(function (idx) {\n            var rawIdx = data.getRawIndex(idx);\n            idxMap_1[rawIdx] = idx;\n          });\n          var dataCount_1 = dataAll_1.count();\n          dataAll_1.each(function (rawIdx) {\n            var idx = idxMap_1[rawIdx];\n            var name = dataAll_1.getName(rawIdx) || rawIdx + '';\n            var paletteDecal = getDecalFromPalette(seriesModel.ecModel, name, decalScope_1, dataCount_1);\n            var specifiedDecal = data.getItemVisual(idx, 'decal');\n            data.setItemVisual(idx, 'decal', mergeDecal(specifiedDecal, paletteDecal));\n          });\n        } else {\n          var paletteDecal = getDecalFromPalette(seriesModel.ecModel, seriesModel.name, decalPaletteScope, ecModel.getSeriesCount());\n          var specifiedDecal = data.getVisual('decal');\n          data.setVisual('decal', mergeDecal(specifiedDecal, paletteDecal));\n        }\n\n        function mergeDecal(specifiedDecal, paletteDecal) {\n          // Merge decal from palette to decal from itemStyle.\n          // User do not need to specify all of the decal props.\n          var resultDecal = specifiedDecal ? zrUtil.extend(zrUtil.extend({}, paletteDecal), specifiedDecal) : paletteDecal;\n          resultDecal.dirty = true;\n          return resultDecal;\n        }\n      });\n    }\n  }\n\n  function setLabel() {\n    var labelLocale = ecModel.getLocaleModel().get('aria');\n    var labelModel = ariaModel.getModel('label');\n    labelModel.option = zrUtil.defaults(labelModel.option, labelLocale);\n\n    if (!labelModel.get('enabled')) {\n      return;\n    }\n\n    var dom = api.getZr().dom;\n\n    if (labelModel.get('description')) {\n      dom.setAttribute('aria-label', labelModel.get('description'));\n      return;\n    }\n\n    var seriesCnt = ecModel.getSeriesCount();\n    var maxDataCnt = labelModel.get(['data', 'maxCount']) || 10;\n    var maxSeriesCnt = labelModel.get(['series', 'maxCount']) || 10;\n    var displaySeriesCnt = Math.min(seriesCnt, maxSeriesCnt);\n    var ariaLabel;\n\n    if (seriesCnt < 1) {\n      // No series, no aria label\n      return;\n    } else {\n      var title = getTitle();\n\n      if (title) {\n        var withTitle = labelModel.get(['general', 'withTitle']);\n        ariaLabel = replace(withTitle, {\n          title: title\n        });\n      } else {\n        ariaLabel = labelModel.get(['general', 'withoutTitle']);\n      }\n\n      var seriesLabels_1 = [];\n      var prefix = seriesCnt > 1 ? labelModel.get(['series', 'multiple', 'prefix']) : labelModel.get(['series', 'single', 'prefix']);\n      ariaLabel += replace(prefix, {\n        seriesCount: seriesCnt\n      });\n      ecModel.eachSeries(function (seriesModel, idx) {\n        if (idx < displaySeriesCnt) {\n          var seriesLabel = void 0;\n          var seriesName = seriesModel.get('name');\n          var withName = seriesName ? 'withName' : 'withoutName';\n          seriesLabel = seriesCnt > 1 ? labelModel.get(['series', 'multiple', withName]) : labelModel.get(['series', 'single', withName]);\n          seriesLabel = replace(seriesLabel, {\n            seriesId: seriesModel.seriesIndex,\n            seriesName: seriesModel.get('name'),\n            seriesType: getSeriesTypeName(seriesModel.subType)\n          });\n          var data = seriesModel.getData();\n\n          if (data.count() > maxDataCnt) {\n            // Show part of data\n            var partialLabel = labelModel.get(['data', 'partialData']);\n            seriesLabel += replace(partialLabel, {\n              displayCnt: maxDataCnt\n            });\n          } else {\n            seriesLabel += labelModel.get(['data', 'allData']);\n          }\n\n          var middleSeparator_1 = labelModel.get(['data', 'separator', 'middle']);\n          var endSeparator_1 = labelModel.get(['data', 'separator', 'end']);\n          var dataLabels = [];\n\n          for (var i = 0; i < data.count(); i++) {\n            if (i < maxDataCnt) {\n              var name_1 = data.getName(i);\n              var value = data.getValues(i);\n              var dataLabel = labelModel.get(['data', name_1 ? 'withName' : 'withoutName']);\n              dataLabels.push(replace(dataLabel, {\n                name: name_1,\n                value: value.join(middleSeparator_1)\n              }));\n            }\n          }\n\n          seriesLabel += dataLabels.join(middleSeparator_1) + endSeparator_1;\n          seriesLabels_1.push(seriesLabel);\n        }\n      });\n      var separatorModel = labelModel.getModel(['series', 'multiple', 'separator']);\n      var middleSeparator = separatorModel.get('middle');\n      var endSeparator = separatorModel.get('end');\n      ariaLabel += seriesLabels_1.join(middleSeparator) + endSeparator;\n      dom.setAttribute('aria-label', ariaLabel);\n    }\n  }\n\n  function replace(str, keyValues) {\n    if (!zrUtil.isString(str)) {\n      return str;\n    }\n\n    var result = str;\n    zrUtil.each(keyValues, function (value, key) {\n      result = result.replace(new RegExp('\\\\{\\\\s*' + key + '\\\\s*\\\\}', 'g'), value);\n    });\n    return result;\n  }\n\n  function getTitle() {\n    var title = ecModel.get('title');\n\n    if (title && title.length) {\n      title = title[0];\n    }\n\n    return title && title.text;\n  }\n\n  function getSeriesTypeName(type) {\n    return ecModel.getLocaleModel().get(['series', 'typeNames'])[type] || '自定义图';\n  }\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport * as zrUtil from 'zrender/lib/core/util.js';\nexport default function ariaPreprocessor(option) {\n  if (!option || !option.aria) {\n    return;\n  }\n\n  var aria = option.aria; // aria.show is deprecated and should use aria.enabled instead\n\n  if (aria.show != null) {\n    aria.enabled = aria.show;\n  }\n\n  aria.label = aria.label || {}; // move description, general, series, data to be under aria.label\n\n  zrUtil.each(['description', 'general', 'series', 'data'], function (name) {\n    if (aria[name] != null) {\n      aria.label[name] = aria[name];\n    }\n  });\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { keys, isArray, map, isObject, isString, isRegExp, isArrayLike, hasOwn, isNumber } from 'zrender/lib/core/util.js';\nimport { throwError, makePrintable } from './log.js';\nimport { getRawValueParser, createFilterComparator } from '../data/helper/dataValueHelper.js';\n;\nvar RELATIONAL_EXPRESSION_OP_ALIAS_MAP = {\n  value: 'eq',\n  // PENDING: not good for literal semantic?\n  '<': 'lt',\n  '<=': 'lte',\n  '>': 'gt',\n  '>=': 'gte',\n  '=': 'eq',\n  '!=': 'ne',\n  '<>': 'ne' // Might be misleading for sake of the difference between '==' and '===',\n  // so don't support them.\n  // '==': 'eq',\n  // '===': 'seq',\n  // '!==': 'sne'\n  // PENDING: Whether support some common alias \"ge\", \"le\", \"neq\"?\n  // ge: 'gte',\n  // le: 'lte',\n  // neq: 'ne',\n\n}; // type RelationalExpressionOpEvaluate = (tarVal: unknown, condVal: unknown) => boolean;\n\nvar RegExpEvaluator =\n/** @class */\nfunction () {\n  function RegExpEvaluator(rVal) {\n    // Support condVal: RegExp | string\n    var condValue = this._condVal = isString(rVal) ? new RegExp(rVal) : isRegExp(rVal) ? rVal : null;\n\n    if (condValue == null) {\n      var errMsg = '';\n\n      if (process.env.NODE_ENV !== 'production') {\n        errMsg = makePrintable('Illegal regexp', rVal, 'in');\n      }\n\n      throwError(errMsg);\n    }\n  }\n\n  RegExpEvaluator.prototype.evaluate = function (lVal) {\n    var type = typeof lVal;\n    return isString(type) ? this._condVal.test(lVal) : isNumber(type) ? this._condVal.test(lVal + '') : false;\n  };\n\n  return RegExpEvaluator;\n}();\n\nvar ConstConditionInternal =\n/** @class */\nfunction () {\n  function ConstConditionInternal() {}\n\n  ConstConditionInternal.prototype.evaluate = function () {\n    return this.value;\n  };\n\n  return ConstConditionInternal;\n}();\n\nvar AndConditionInternal =\n/** @class */\nfunction () {\n  function AndConditionInternal() {}\n\n  AndConditionInternal.prototype.evaluate = function () {\n    var children = this.children;\n\n    for (var i = 0; i < children.length; i++) {\n      if (!children[i].evaluate()) {\n        return false;\n      }\n    }\n\n    return true;\n  };\n\n  return AndConditionInternal;\n}();\n\nvar OrConditionInternal =\n/** @class */\nfunction () {\n  function OrConditionInternal() {}\n\n  OrConditionInternal.prototype.evaluate = function () {\n    var children = this.children;\n\n    for (var i = 0; i < children.length; i++) {\n      if (children[i].evaluate()) {\n        return true;\n      }\n    }\n\n    return false;\n  };\n\n  return OrConditionInternal;\n}();\n\nvar NotConditionInternal =\n/** @class */\nfunction () {\n  function NotConditionInternal() {}\n\n  NotConditionInternal.prototype.evaluate = function () {\n    return !this.child.evaluate();\n  };\n\n  return NotConditionInternal;\n}();\n\nvar RelationalConditionInternal =\n/** @class */\nfunction () {\n  function RelationalConditionInternal() {}\n\n  RelationalConditionInternal.prototype.evaluate = function () {\n    var needParse = !!this.valueParser; // Call getValue with no `this`.\n\n    var getValue = this.getValue;\n    var tarValRaw = getValue(this.valueGetterParam);\n    var tarValParsed = needParse ? this.valueParser(tarValRaw) : null; // Relational cond follow \"and\" logic internally.\n\n    for (var i = 0; i < this.subCondList.length; i++) {\n      if (!this.subCondList[i].evaluate(needParse ? tarValParsed : tarValRaw)) {\n        return false;\n      }\n    }\n\n    return true;\n  };\n\n  return RelationalConditionInternal;\n}();\n\nfunction parseOption(exprOption, getters) {\n  if (exprOption === true || exprOption === false) {\n    var cond = new ConstConditionInternal();\n    cond.value = exprOption;\n    return cond;\n  }\n\n  var errMsg = '';\n\n  if (!isObjectNotArray(exprOption)) {\n    if (process.env.NODE_ENV !== 'production') {\n      errMsg = makePrintable('Illegal config. Expect a plain object but actually', exprOption);\n    }\n\n    throwError(errMsg);\n  }\n\n  if (exprOption.and) {\n    return parseAndOrOption('and', exprOption, getters);\n  } else if (exprOption.or) {\n    return parseAndOrOption('or', exprOption, getters);\n  } else if (exprOption.not) {\n    return parseNotOption(exprOption, getters);\n  }\n\n  return parseRelationalOption(exprOption, getters);\n}\n\nfunction parseAndOrOption(op, exprOption, getters) {\n  var subOptionArr = exprOption[op];\n  var errMsg = '';\n\n  if (process.env.NODE_ENV !== 'production') {\n    errMsg = makePrintable('\"and\"/\"or\" condition should only be `' + op + ': [...]` and must not be empty array.', 'Illegal condition:', exprOption);\n  }\n\n  if (!isArray(subOptionArr)) {\n    throwError(errMsg);\n  }\n\n  if (!subOptionArr.length) {\n    throwError(errMsg);\n  }\n\n  var cond = op === 'and' ? new AndConditionInternal() : new OrConditionInternal();\n  cond.children = map(subOptionArr, function (subOption) {\n    return parseOption(subOption, getters);\n  });\n\n  if (!cond.children.length) {\n    throwError(errMsg);\n  }\n\n  return cond;\n}\n\nfunction parseNotOption(exprOption, getters) {\n  var subOption = exprOption.not;\n  var errMsg = '';\n\n  if (process.env.NODE_ENV !== 'production') {\n    errMsg = makePrintable('\"not\" condition should only be `not: {}`.', 'Illegal condition:', exprOption);\n  }\n\n  if (!isObjectNotArray(subOption)) {\n    throwError(errMsg);\n  }\n\n  var cond = new NotConditionInternal();\n  cond.child = parseOption(subOption, getters);\n\n  if (!cond.child) {\n    throwError(errMsg);\n  }\n\n  return cond;\n}\n\nfunction parseRelationalOption(exprOption, getters) {\n  var errMsg = '';\n  var valueGetterParam = getters.prepareGetValue(exprOption);\n  var subCondList = [];\n  var exprKeys = keys(exprOption);\n  var parserName = exprOption.parser;\n  var valueParser = parserName ? getRawValueParser(parserName) : null;\n\n  for (var i = 0; i < exprKeys.length; i++) {\n    var keyRaw = exprKeys[i];\n\n    if (keyRaw === 'parser' || getters.valueGetterAttrMap.get(keyRaw)) {\n      continue;\n    }\n\n    var op = hasOwn(RELATIONAL_EXPRESSION_OP_ALIAS_MAP, keyRaw) ? RELATIONAL_EXPRESSION_OP_ALIAS_MAP[keyRaw] : keyRaw;\n    var condValueRaw = exprOption[keyRaw];\n    var condValueParsed = valueParser ? valueParser(condValueRaw) : condValueRaw;\n    var evaluator = createFilterComparator(op, condValueParsed) || op === 'reg' && new RegExpEvaluator(condValueParsed);\n\n    if (!evaluator) {\n      if (process.env.NODE_ENV !== 'production') {\n        errMsg = makePrintable('Illegal relational operation: \"' + keyRaw + '\" in condition:', exprOption);\n      }\n\n      throwError(errMsg);\n    }\n\n    subCondList.push(evaluator);\n  }\n\n  if (!subCondList.length) {\n    if (process.env.NODE_ENV !== 'production') {\n      errMsg = makePrintable('Relational condition must have at least one operator.', 'Illegal condition:', exprOption);\n    } // No relational operator always disabled in case of dangers result.\n\n\n    throwError(errMsg);\n  }\n\n  var cond = new RelationalConditionInternal();\n  cond.valueGetterParam = valueGetterParam;\n  cond.valueParser = valueParser;\n  cond.getValue = getters.getValue;\n  cond.subCondList = subCondList;\n  return cond;\n}\n\nfunction isObjectNotArray(val) {\n  return isObject(val) && !isArrayLike(val);\n}\n\nvar ConditionalExpressionParsed =\n/** @class */\nfunction () {\n  function ConditionalExpressionParsed(exprOption, getters) {\n    this._cond = parseOption(exprOption, getters);\n  }\n\n  ConditionalExpressionParsed.prototype.evaluate = function () {\n    return this._cond.evaluate();\n  };\n\n  return ConditionalExpressionParsed;\n}();\n\n;\nexport function parseConditionalExpression(exprOption, getters) {\n  return new ConditionalExpressionParsed(exprOption, getters);\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { parseConditionalExpression } from '../../util/conditionalExpression.js';\nimport { hasOwn, createHashMap } from 'zrender/lib/core/util.js';\nimport { makePrintable, throwError } from '../../util/log.js';\nexport var filterTransform = {\n  type: 'echarts:filter',\n  // PENDING: enhance to filter by index rather than create new data\n  transform: function (params) {\n    // [Caveat] Fail-Fast:\n    // Do not return the whole dataset unless user config indicates it explicitly.\n    // For example, if no condition is specified by mistake, returning an empty result\n    // is better than returning the entire raw source for the user to find the mistake.\n    var upstream = params.upstream;\n    var rawItem;\n    var condition = parseConditionalExpression(params.config, {\n      valueGetterAttrMap: createHashMap({\n        dimension: true\n      }),\n      prepareGetValue: function (exprOption) {\n        var errMsg = '';\n        var dimLoose = exprOption.dimension;\n\n        if (!hasOwn(exprOption, 'dimension')) {\n          if (process.env.NODE_ENV !== 'production') {\n            errMsg = makePrintable('Relation condition must has prop \"dimension\" specified.', 'Illegal condition:', exprOption);\n          }\n\n          throwError(errMsg);\n        }\n\n        var dimInfo = upstream.getDimensionInfo(dimLoose);\n\n        if (!dimInfo) {\n          if (process.env.NODE_ENV !== 'production') {\n            errMsg = makePrintable('Can not find dimension info via: ' + dimLoose + '.\\n', 'Existing dimensions: ', upstream.cloneAllDimensionInfo(), '.\\n', 'Illegal condition:', exprOption, '.\\n');\n          }\n\n          throwError(errMsg);\n        }\n\n        return {\n          dimIdx: dimInfo.index\n        };\n      },\n      getValue: function (param) {\n        return upstream.retrieveValueFromItem(rawItem, param.dimIdx);\n      }\n    });\n    var resultData = [];\n\n    for (var i = 0, len = upstream.count(); i < len; i++) {\n      rawItem = upstream.getRawDataItem(i);\n\n      if (condition.evaluate()) {\n        resultData.push(rawItem);\n      }\n    }\n\n    return {\n      data: resultData\n    };\n  }\n};","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { SOURCE_FORMAT_ARRAY_ROWS, SOURCE_FORMAT_OBJECT_ROWS } from '../../util/types.js';\nimport { makePrintable, throwError } from '../../util/log.js';\nimport { each } from 'zrender/lib/core/util.js';\nimport { normalizeToArray } from '../../util/model.js';\nimport { getRawValueParser, SortOrderComparator } from '../../data/helper/dataValueHelper.js';\nvar sampleLog = '';\n\nif (process.env.NODE_ENV !== 'production') {\n  sampleLog = ['Valid config is like:', '{ dimension: \"age\", order: \"asc\" }', 'or [{ dimension: \"age\", order: \"asc\"], { dimension: \"date\", order: \"desc\" }]'].join(' ');\n}\n\nexport var sortTransform = {\n  type: 'echarts:sort',\n  transform: function (params) {\n    var upstream = params.upstream;\n    var config = params.config;\n    var errMsg = ''; // Normalize\n    // const orderExprList: OrderExpression[] = isArray(config[0])\n    //     ? config as OrderExpression[]\n    //     : [config as OrderExpression];\n\n    var orderExprList = normalizeToArray(config);\n\n    if (!orderExprList.length) {\n      if (process.env.NODE_ENV !== 'production') {\n        errMsg = 'Empty `config` in sort transform.';\n      }\n\n      throwError(errMsg);\n    }\n\n    var orderDefList = [];\n    each(orderExprList, function (orderExpr) {\n      var dimLoose = orderExpr.dimension;\n      var order = orderExpr.order;\n      var parserName = orderExpr.parser;\n      var incomparable = orderExpr.incomparable;\n\n      if (dimLoose == null) {\n        if (process.env.NODE_ENV !== 'production') {\n          errMsg = 'Sort transform config must has \"dimension\" specified.' + sampleLog;\n        }\n\n        throwError(errMsg);\n      }\n\n      if (order !== 'asc' && order !== 'desc') {\n        if (process.env.NODE_ENV !== 'production') {\n          errMsg = 'Sort transform config must has \"order\" specified.' + sampleLog;\n        }\n\n        throwError(errMsg);\n      }\n\n      if (incomparable && incomparable !== 'min' && incomparable !== 'max') {\n        var errMsg_1 = '';\n\n        if (process.env.NODE_ENV !== 'production') {\n          errMsg_1 = 'incomparable must be \"min\" or \"max\" rather than \"' + incomparable + '\".';\n        }\n\n        throwError(errMsg_1);\n      }\n\n      if (order !== 'asc' && order !== 'desc') {\n        var errMsg_2 = '';\n\n        if (process.env.NODE_ENV !== 'production') {\n          errMsg_2 = 'order must be \"asc\" or \"desc\" rather than \"' + order + '\".';\n        }\n\n        throwError(errMsg_2);\n      }\n\n      var dimInfo = upstream.getDimensionInfo(dimLoose);\n\n      if (!dimInfo) {\n        if (process.env.NODE_ENV !== 'production') {\n          errMsg = makePrintable('Can not find dimension info via: ' + dimLoose + '.\\n', 'Existing dimensions: ', upstream.cloneAllDimensionInfo(), '.\\n', 'Illegal config:', orderExpr, '.\\n');\n        }\n\n        throwError(errMsg);\n      }\n\n      var parser = parserName ? getRawValueParser(parserName) : null;\n\n      if (parserName && !parser) {\n        if (process.env.NODE_ENV !== 'production') {\n          errMsg = makePrintable('Invalid parser name ' + parserName + '.\\n', 'Illegal config:', orderExpr, '.\\n');\n        }\n\n        throwError(errMsg);\n      }\n\n      orderDefList.push({\n        dimIdx: dimInfo.index,\n        parser: parser,\n        comparator: new SortOrderComparator(order, incomparable)\n      });\n    }); // TODO: support it?\n\n    var sourceFormat = upstream.sourceFormat;\n\n    if (sourceFormat !== SOURCE_FORMAT_ARRAY_ROWS && sourceFormat !== SOURCE_FORMAT_OBJECT_ROWS) {\n      if (process.env.NODE_ENV !== 'production') {\n        errMsg = 'sourceFormat \"' + sourceFormat + '\" is not supported yet';\n      }\n\n      throwError(errMsg);\n    } // Other upstream format are all array.\n\n\n    var resultData = [];\n\n    for (var i = 0, len = upstream.count(); i < len; i++) {\n      resultData.push(upstream.getRawDataItem(i));\n    }\n\n    resultData.sort(function (item0, item1) {\n      for (var i = 0; i < orderDefList.length; i++) {\n        var orderDef = orderDefList[i];\n        var val0 = upstream.retrieveValueFromItem(item0, orderDef.dimIdx);\n        var val1 = upstream.retrieveValueFromItem(item1, orderDef.dimIdx);\n\n        if (orderDef.parser) {\n          val0 = orderDef.parser(val0);\n          val1 = orderDef.parser(val1);\n        }\n\n        var result = orderDef.comparator.evaluate(val0, val1);\n\n        if (result !== 0) {\n          return result;\n        }\n      }\n\n      return 0;\n    });\n    return {\n      data: resultData\n    };\n  }\n};","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { __extends } from \"tslib\";\n/**\r\n * This module is imported by echarts directly.\r\n *\r\n * Notice:\r\n * Always keep this file exists for backward compatibility.\r\n * Because before 4.1.0, dataset is an optional component,\r\n * some users may import this module manually.\r\n */\n\nimport ComponentModel from '../../model/Component.js';\nimport ComponentView from '../../view/Component.js';\nimport { SERIES_LAYOUT_BY_COLUMN } from '../../util/types.js';\nimport { disableTransformOptionMerge, SourceManager } from '../../data/helper/sourceManager.js';\n\nvar DatasetModel =\n/** @class */\nfunction (_super) {\n  __extends(DatasetModel, _super);\n\n  function DatasetModel() {\n    var _this = _super !== null && _super.apply(this, arguments) || this;\n\n    _this.type = 'dataset';\n    return _this;\n  }\n\n  DatasetModel.prototype.init = function (option, parentModel, ecModel) {\n    _super.prototype.init.call(this, option, parentModel, ecModel);\n\n    this._sourceManager = new SourceManager(this);\n    disableTransformOptionMerge(this);\n  };\n\n  DatasetModel.prototype.mergeOption = function (newOption, ecModel) {\n    _super.prototype.mergeOption.call(this, newOption, ecModel);\n\n    disableTransformOptionMerge(this);\n  };\n\n  DatasetModel.prototype.optionUpdated = function () {\n    this._sourceManager.dirty();\n  };\n\n  DatasetModel.prototype.getSourceManager = function () {\n    return this._sourceManager;\n  };\n\n  DatasetModel.type = 'dataset';\n  DatasetModel.defaultOption = {\n    seriesLayoutBy: SERIES_LAYOUT_BY_COLUMN\n  };\n  return DatasetModel;\n}(ComponentModel);\n\nexport { DatasetModel };\n\nvar DatasetView =\n/** @class */\nfunction (_super) {\n  __extends(DatasetView, _super);\n\n  function DatasetView() {\n    var _this = _super !== null && _super.apply(this, arguments) || this;\n\n    _this.type = 'dataset';\n    return _this;\n  }\n\n  DatasetView.type = 'dataset';\n  return DatasetView;\n}(ComponentView);\n\nexport function install(registers) {\n  registers.registerComponentModel(DatasetModel);\n  registers.registerComponentView(DatasetView);\n}","import { cubicSubdivide } from '../core/curve.js';\nimport PathProxy from '../core/PathProxy.js';\nvar CMD = PathProxy.CMD;\nfunction aroundEqual(a, b) {\n    return Math.abs(a - b) < 1e-5;\n}\nexport function pathToBezierCurves(path) {\n    var data = path.data;\n    var len = path.len();\n    var bezierArrayGroups = [];\n    var currentSubpath;\n    var xi = 0;\n    var yi = 0;\n    var x0 = 0;\n    var y0 = 0;\n    function createNewSubpath(x, y) {\n        if (currentSubpath && currentSubpath.length > 2) {\n            bezierArrayGroups.push(currentSubpath);\n        }\n        currentSubpath = [x, y];\n    }\n    function addLine(x0, y0, x1, y1) {\n        if (!(aroundEqual(x0, x1) && aroundEqual(y0, y1))) {\n            currentSubpath.push(x0, y0, x1, y1, x1, y1);\n        }\n    }\n    function addArc(startAngle, endAngle, cx, cy, rx, ry) {\n        var delta = Math.abs(endAngle - startAngle);\n        var len = Math.tan(delta / 4) * 4 / 3;\n        var dir = endAngle < startAngle ? -1 : 1;\n        var c1 = Math.cos(startAngle);\n        var s1 = Math.sin(startAngle);\n        var c2 = Math.cos(endAngle);\n        var s2 = Math.sin(endAngle);\n        var x1 = c1 * rx + cx;\n        var y1 = s1 * ry + cy;\n        var x4 = c2 * rx + cx;\n        var y4 = s2 * ry + cy;\n        var hx = rx * len * dir;\n        var hy = ry * len * dir;\n        currentSubpath.push(x1 - hx * s1, y1 + hy * c1, x4 + hx * s2, y4 - hy * c2, x4, y4);\n    }\n    var x1;\n    var y1;\n    var x2;\n    var y2;\n    for (var i = 0; i < len;) {\n        var cmd = data[i++];\n        var isFirst = i === 1;\n        if (isFirst) {\n            xi = data[i];\n            yi = data[i + 1];\n            x0 = xi;\n            y0 = yi;\n            if (cmd === CMD.L || cmd === CMD.C || cmd === CMD.Q) {\n                currentSubpath = [x0, y0];\n            }\n        }\n        switch (cmd) {\n            case CMD.M:\n                xi = x0 = data[i++];\n                yi = y0 = data[i++];\n                createNewSubpath(x0, y0);\n                break;\n            case CMD.L:\n                x1 = data[i++];\n                y1 = data[i++];\n                addLine(xi, yi, x1, y1);\n                xi = x1;\n                yi = y1;\n                break;\n            case CMD.C:\n                currentSubpath.push(data[i++], data[i++], data[i++], data[i++], xi = data[i++], yi = data[i++]);\n                break;\n            case CMD.Q:\n                x1 = data[i++];\n                y1 = data[i++];\n                x2 = data[i++];\n                y2 = data[i++];\n                currentSubpath.push(xi + 2 / 3 * (x1 - xi), yi + 2 / 3 * (y1 - yi), x2 + 2 / 3 * (x1 - x2), y2 + 2 / 3 * (y1 - y2), x2, y2);\n                xi = x2;\n                yi = y2;\n                break;\n            case CMD.A:\n                var cx = data[i++];\n                var cy = data[i++];\n                var rx = data[i++];\n                var ry = data[i++];\n                var startAngle = data[i++];\n                var endAngle = data[i++] + startAngle;\n                i += 1;\n                var anticlockwise = !data[i++];\n                x1 = Math.cos(startAngle) * rx + cx;\n                y1 = Math.sin(startAngle) * ry + cy;\n                if (isFirst) {\n                    x0 = x1;\n                    y0 = y1;\n                    createNewSubpath(x0, y0);\n                }\n                else {\n                    addLine(xi, yi, x1, y1);\n                }\n                xi = Math.cos(endAngle) * rx + cx;\n                yi = Math.sin(endAngle) * ry + cy;\n                var step = (anticlockwise ? -1 : 1) * Math.PI / 2;\n                for (var angle = startAngle; anticlockwise ? angle > endAngle : angle < endAngle; angle += step) {\n                    var nextAngle = anticlockwise ? Math.max(angle + step, endAngle)\n                        : Math.min(angle + step, endAngle);\n                    addArc(angle, nextAngle, cx, cy, rx, ry);\n                }\n                break;\n            case CMD.R:\n                x0 = xi = data[i++];\n                y0 = yi = data[i++];\n                x1 = x0 + data[i++];\n                y1 = y0 + data[i++];\n                createNewSubpath(x1, y0);\n                addLine(x1, y0, x1, y1);\n                addLine(x1, y1, x0, y1);\n                addLine(x0, y1, x0, y0);\n                addLine(x0, y0, x1, y0);\n                break;\n            case CMD.Z:\n                currentSubpath && addLine(xi, yi, x0, y0);\n                xi = x0;\n                yi = y0;\n                break;\n        }\n    }\n    if (currentSubpath && currentSubpath.length > 2) {\n        bezierArrayGroups.push(currentSubpath);\n    }\n    return bezierArrayGroups;\n}\nfunction adpativeBezier(x0, y0, x1, y1, x2, y2, x3, y3, out, scale) {\n    if (aroundEqual(x0, x1) && aroundEqual(y0, y1) && aroundEqual(x2, x3) && aroundEqual(y2, y3)) {\n        out.push(x3, y3);\n        return;\n    }\n    var PIXEL_DISTANCE = 2 / scale;\n    var PIXEL_DISTANCE_SQR = PIXEL_DISTANCE * PIXEL_DISTANCE;\n    var dx = x3 - x0;\n    var dy = y3 - y0;\n    var d = Math.sqrt(dx * dx + dy * dy);\n    dx /= d;\n    dy /= d;\n    var dx1 = x1 - x0;\n    var dy1 = y1 - y0;\n    var dx2 = x2 - x3;\n    var dy2 = y2 - y3;\n    var cp1LenSqr = dx1 * dx1 + dy1 * dy1;\n    var cp2LenSqr = dx2 * dx2 + dy2 * dy2;\n    if (cp1LenSqr < PIXEL_DISTANCE_SQR && cp2LenSqr < PIXEL_DISTANCE_SQR) {\n        out.push(x3, y3);\n        return;\n    }\n    var projLen1 = dx * dx1 + dy * dy1;\n    var projLen2 = -dx * dx2 - dy * dy2;\n    var d1Sqr = cp1LenSqr - projLen1 * projLen1;\n    var d2Sqr = cp2LenSqr - projLen2 * projLen2;\n    if (d1Sqr < PIXEL_DISTANCE_SQR && projLen1 >= 0\n        && d2Sqr < PIXEL_DISTANCE_SQR && projLen2 >= 0) {\n        out.push(x3, y3);\n        return;\n    }\n    var tmpSegX = [];\n    var tmpSegY = [];\n    cubicSubdivide(x0, x1, x2, x3, 0.5, tmpSegX);\n    cubicSubdivide(y0, y1, y2, y3, 0.5, tmpSegY);\n    adpativeBezier(tmpSegX[0], tmpSegY[0], tmpSegX[1], tmpSegY[1], tmpSegX[2], tmpSegY[2], tmpSegX[3], tmpSegY[3], out, scale);\n    adpativeBezier(tmpSegX[4], tmpSegY[4], tmpSegX[5], tmpSegY[5], tmpSegX[6], tmpSegY[6], tmpSegX[7], tmpSegY[7], out, scale);\n}\nexport function pathToPolygons(path, scale) {\n    var bezierArrayGroups = pathToBezierCurves(path);\n    var polygons = [];\n    scale = scale || 1;\n    for (var i = 0; i < bezierArrayGroups.length; i++) {\n        var beziers = bezierArrayGroups[i];\n        var polygon = [];\n        var x0 = beziers[0];\n        var y0 = beziers[1];\n        polygon.push(x0, y0);\n        for (var k = 2; k < beziers.length;) {\n            var x1 = beziers[k++];\n            var y1 = beziers[k++];\n            var x2 = beziers[k++];\n            var y2 = beziers[k++];\n            var x3 = beziers[k++];\n            var y3 = beziers[k++];\n            adpativeBezier(x0, y0, x1, y1, x2, y2, x3, y3, polygon, scale);\n            x0 = x3;\n            y0 = y3;\n        }\n        polygons.push(polygon);\n    }\n    return polygons;\n}\n","import { fromPoints } from '../core/bbox.js';\nimport BoundingRect from '../core/BoundingRect.js';\nimport Point from '../core/Point.js';\nimport { map } from '../core/util.js';\nimport Polygon from '../graphic/shape/Polygon.js';\nimport Rect from '../graphic/shape/Rect.js';\nimport Sector from '../graphic/shape/Sector.js';\nimport { pathToPolygons } from './convertPath.js';\nimport { clonePath } from './path.js';\nfunction getDividingGrids(dimSize, rowDim, count) {\n    var rowSize = dimSize[rowDim];\n    var columnSize = dimSize[1 - rowDim];\n    var ratio = Math.abs(rowSize / columnSize);\n    var rowCount = Math.ceil(Math.sqrt(ratio * count));\n    var columnCount = Math.floor(count / rowCount);\n    if (columnCount === 0) {\n        columnCount = 1;\n        rowCount = count;\n    }\n    var grids = [];\n    for (var i = 0; i < rowCount; i++) {\n        grids.push(columnCount);\n    }\n    var currentCount = rowCount * columnCount;\n    var remained = count - currentCount;\n    if (remained > 0) {\n        for (var i = 0; i < remained; i++) {\n            grids[i % rowCount] += 1;\n        }\n    }\n    return grids;\n}\nfunction divideSector(sectorShape, count, outShapes) {\n    var r0 = sectorShape.r0;\n    var r = sectorShape.r;\n    var startAngle = sectorShape.startAngle;\n    var endAngle = sectorShape.endAngle;\n    var angle = Math.abs(endAngle - startAngle);\n    var arcLen = angle * r;\n    var deltaR = r - r0;\n    var isAngleRow = arcLen > Math.abs(deltaR);\n    var grids = getDividingGrids([arcLen, deltaR], isAngleRow ? 0 : 1, count);\n    var rowSize = (isAngleRow ? angle : deltaR) / grids.length;\n    for (var row = 0; row < grids.length; row++) {\n        var columnSize = (isAngleRow ? deltaR : angle) / grids[row];\n        for (var column = 0; column < grids[row]; column++) {\n            var newShape = {};\n            if (isAngleRow) {\n                newShape.startAngle = startAngle + rowSize * row;\n                newShape.endAngle = startAngle + rowSize * (row + 1);\n                newShape.r0 = r0 + columnSize * column;\n                newShape.r = r0 + columnSize * (column + 1);\n            }\n            else {\n                newShape.startAngle = startAngle + columnSize * column;\n                newShape.endAngle = startAngle + columnSize * (column + 1);\n                newShape.r0 = r0 + rowSize * row;\n                newShape.r = r0 + rowSize * (row + 1);\n            }\n            newShape.clockwise = sectorShape.clockwise;\n            newShape.cx = sectorShape.cx;\n            newShape.cy = sectorShape.cy;\n            outShapes.push(newShape);\n        }\n    }\n}\nfunction divideRect(rectShape, count, outShapes) {\n    var width = rectShape.width;\n    var height = rectShape.height;\n    var isHorizontalRow = width > height;\n    var grids = getDividingGrids([width, height], isHorizontalRow ? 0 : 1, count);\n    var rowSizeDim = isHorizontalRow ? 'width' : 'height';\n    var columnSizeDim = isHorizontalRow ? 'height' : 'width';\n    var rowDim = isHorizontalRow ? 'x' : 'y';\n    var columnDim = isHorizontalRow ? 'y' : 'x';\n    var rowSize = rectShape[rowSizeDim] / grids.length;\n    for (var row = 0; row < grids.length; row++) {\n        var columnSize = rectShape[columnSizeDim] / grids[row];\n        for (var column = 0; column < grids[row]; column++) {\n            var newShape = {};\n            newShape[rowDim] = row * rowSize;\n            newShape[columnDim] = column * columnSize;\n            newShape[rowSizeDim] = rowSize;\n            newShape[columnSizeDim] = columnSize;\n            newShape.x += rectShape.x;\n            newShape.y += rectShape.y;\n            outShapes.push(newShape);\n        }\n    }\n}\nfunction crossProduct2d(x1, y1, x2, y2) {\n    return x1 * y2 - x2 * y1;\n}\nfunction lineLineIntersect(a1x, a1y, a2x, a2y, b1x, b1y, b2x, b2y) {\n    var mx = a2x - a1x;\n    var my = a2y - a1y;\n    var nx = b2x - b1x;\n    var ny = b2y - b1y;\n    var nmCrossProduct = crossProduct2d(nx, ny, mx, my);\n    if (Math.abs(nmCrossProduct) < 1e-6) {\n        return null;\n    }\n    var b1a1x = a1x - b1x;\n    var b1a1y = a1y - b1y;\n    var p = crossProduct2d(b1a1x, b1a1y, nx, ny) / nmCrossProduct;\n    if (p < 0 || p > 1) {\n        return null;\n    }\n    return new Point(p * mx + a1x, p * my + a1y);\n}\nfunction projPtOnLine(pt, lineA, lineB) {\n    var dir = new Point();\n    Point.sub(dir, lineB, lineA);\n    dir.normalize();\n    var dir2 = new Point();\n    Point.sub(dir2, pt, lineA);\n    var len = dir2.dot(dir);\n    return len;\n}\nfunction addToPoly(poly, pt) {\n    var last = poly[poly.length - 1];\n    if (last && last[0] === pt[0] && last[1] === pt[1]) {\n        return;\n    }\n    poly.push(pt);\n}\nfunction splitPolygonByLine(points, lineA, lineB) {\n    var len = points.length;\n    var intersections = [];\n    for (var i = 0; i < len; i++) {\n        var p0 = points[i];\n        var p1 = points[(i + 1) % len];\n        var intersectionPt = lineLineIntersect(p0[0], p0[1], p1[0], p1[1], lineA.x, lineA.y, lineB.x, lineB.y);\n        if (intersectionPt) {\n            intersections.push({\n                projPt: projPtOnLine(intersectionPt, lineA, lineB),\n                pt: intersectionPt,\n                idx: i\n            });\n        }\n    }\n    if (intersections.length < 2) {\n        return [{ points: points }, { points: points }];\n    }\n    intersections.sort(function (a, b) {\n        return a.projPt - b.projPt;\n    });\n    var splitPt0 = intersections[0];\n    var splitPt1 = intersections[intersections.length - 1];\n    if (splitPt1.idx < splitPt0.idx) {\n        var tmp = splitPt0;\n        splitPt0 = splitPt1;\n        splitPt1 = tmp;\n    }\n    var splitPt0Arr = [splitPt0.pt.x, splitPt0.pt.y];\n    var splitPt1Arr = [splitPt1.pt.x, splitPt1.pt.y];\n    var newPolyA = [splitPt0Arr];\n    var newPolyB = [splitPt1Arr];\n    for (var i = splitPt0.idx + 1; i <= splitPt1.idx; i++) {\n        addToPoly(newPolyA, points[i].slice());\n    }\n    addToPoly(newPolyA, splitPt1Arr);\n    addToPoly(newPolyA, splitPt0Arr);\n    for (var i = splitPt1.idx + 1; i <= splitPt0.idx + len; i++) {\n        addToPoly(newPolyB, points[i % len].slice());\n    }\n    addToPoly(newPolyB, splitPt0Arr);\n    addToPoly(newPolyB, splitPt1Arr);\n    return [{\n            points: newPolyA\n        }, {\n            points: newPolyB\n        }];\n}\nfunction binaryDividePolygon(polygonShape) {\n    var points = polygonShape.points;\n    var min = [];\n    var max = [];\n    fromPoints(points, min, max);\n    var boundingRect = new BoundingRect(min[0], min[1], max[0] - min[0], max[1] - min[1]);\n    var width = boundingRect.width;\n    var height = boundingRect.height;\n    var x = boundingRect.x;\n    var y = boundingRect.y;\n    var pt0 = new Point();\n    var pt1 = new Point();\n    if (width > height) {\n        pt0.x = pt1.x = x + width / 2;\n        pt0.y = y;\n        pt1.y = y + height;\n    }\n    else {\n        pt0.y = pt1.y = y + height / 2;\n        pt0.x = x;\n        pt1.x = x + width;\n    }\n    return splitPolygonByLine(points, pt0, pt1);\n}\nfunction binaryDivideRecursive(divider, shape, count, out) {\n    if (count === 1) {\n        out.push(shape);\n    }\n    else {\n        var mid = Math.floor(count / 2);\n        var sub = divider(shape);\n        binaryDivideRecursive(divider, sub[0], mid, out);\n        binaryDivideRecursive(divider, sub[1], count - mid, out);\n    }\n    return out;\n}\nexport function clone(path, count) {\n    var paths = [];\n    for (var i = 0; i < count; i++) {\n        paths.push(clonePath(path));\n    }\n    return paths;\n}\nfunction copyPathProps(source, target) {\n    target.setStyle(source.style);\n    target.z = source.z;\n    target.z2 = source.z2;\n    target.zlevel = source.zlevel;\n}\nfunction polygonConvert(points) {\n    var out = [];\n    for (var i = 0; i < points.length;) {\n        out.push([points[i++], points[i++]]);\n    }\n    return out;\n}\nexport function split(path, count) {\n    var outShapes = [];\n    var shape = path.shape;\n    var OutShapeCtor;\n    switch (path.type) {\n        case 'rect':\n            divideRect(shape, count, outShapes);\n            OutShapeCtor = Rect;\n            break;\n        case 'sector':\n            divideSector(shape, count, outShapes);\n            OutShapeCtor = Sector;\n            break;\n        case 'circle':\n            divideSector({\n                r0: 0, r: shape.r, startAngle: 0, endAngle: Math.PI * 2,\n                cx: shape.cx, cy: shape.cy\n            }, count, outShapes);\n            OutShapeCtor = Sector;\n            break;\n        default:\n            var m = path.getComputedTransform();\n            var scale = m ? Math.sqrt(Math.max(m[0] * m[0] + m[1] * m[1], m[2] * m[2] + m[3] * m[3])) : 1;\n            var polygons = map(pathToPolygons(path.getUpdatedPathProxy(), scale), function (poly) { return polygonConvert(poly); });\n            var polygonCount = polygons.length;\n            if (polygonCount === 0) {\n                binaryDivideRecursive(binaryDividePolygon, {\n                    points: polygons[0]\n                }, count, outShapes);\n            }\n            else if (polygonCount === count) {\n                for (var i = 0; i < polygonCount; i++) {\n                    outShapes.push({\n                        points: polygons[i]\n                    });\n                }\n            }\n            else {\n                var totalArea_1 = 0;\n                var items = map(polygons, function (poly) {\n                    var min = [];\n                    var max = [];\n                    fromPoints(poly, min, max);\n                    var area = (max[1] - min[1]) * (max[0] - min[0]);\n                    totalArea_1 += area;\n                    return { poly: poly, area: area };\n                });\n                items.sort(function (a, b) { return b.area - a.area; });\n                var left = count;\n                for (var i = 0; i < polygonCount; i++) {\n                    var item = items[i];\n                    if (left <= 0) {\n                        break;\n                    }\n                    var selfCount = i === polygonCount - 1\n                        ? left\n                        : Math.ceil(item.area / totalArea_1 * count);\n                    if (selfCount < 0) {\n                        continue;\n                    }\n                    binaryDivideRecursive(binaryDividePolygon, {\n                        points: item.poly\n                    }, selfCount, outShapes);\n                    left -= selfCount;\n                }\n                ;\n            }\n            OutShapeCtor = Polygon;\n            break;\n    }\n    if (!OutShapeCtor) {\n        return clone(path, count);\n    }\n    var out = [];\n    for (var i = 0; i < outShapes.length; i++) {\n        var subPath = new OutShapeCtor();\n        subPath.setShape(outShapes[i]);\n        copyPathProps(path, subPath);\n        out.push(subPath);\n    }\n    return out;\n}\n","import { cubicSubdivide } from '../core/curve.js';\nimport Path from '../graphic/Path.js';\nimport { defaults, map } from '../core/util.js';\nimport { lerp } from '../core/vector.js';\nimport { clonePath } from './path.js';\nimport Transformable from '../core/Transformable.js';\nimport { split } from './dividePath.js';\nimport { pathToBezierCurves } from './convertPath.js';\nfunction alignSubpath(subpath1, subpath2) {\n    var len1 = subpath1.length;\n    var len2 = subpath2.length;\n    if (len1 === len2) {\n        return [subpath1, subpath2];\n    }\n    var tmpSegX = [];\n    var tmpSegY = [];\n    var shorterPath = len1 < len2 ? subpath1 : subpath2;\n    var shorterLen = Math.min(len1, len2);\n    var diff = Math.abs(len2 - len1) / 6;\n    var shorterBezierCount = (shorterLen - 2) / 6;\n    var eachCurveSubDivCount = Math.ceil(diff / shorterBezierCount) + 1;\n    var newSubpath = [shorterPath[0], shorterPath[1]];\n    var remained = diff;\n    for (var i = 2; i < shorterLen;) {\n        var x0 = shorterPath[i - 2];\n        var y0 = shorterPath[i - 1];\n        var x1 = shorterPath[i++];\n        var y1 = shorterPath[i++];\n        var x2 = shorterPath[i++];\n        var y2 = shorterPath[i++];\n        var x3 = shorterPath[i++];\n        var y3 = shorterPath[i++];\n        if (remained <= 0) {\n            newSubpath.push(x1, y1, x2, y2, x3, y3);\n            continue;\n        }\n        var actualSubDivCount = Math.min(remained, eachCurveSubDivCount - 1) + 1;\n        for (var k = 1; k <= actualSubDivCount; k++) {\n            var p = k / actualSubDivCount;\n            cubicSubdivide(x0, x1, x2, x3, p, tmpSegX);\n            cubicSubdivide(y0, y1, y2, y3, p, tmpSegY);\n            x0 = tmpSegX[3];\n            y0 = tmpSegY[3];\n            newSubpath.push(tmpSegX[1], tmpSegY[1], tmpSegX[2], tmpSegY[2], x0, y0);\n            x1 = tmpSegX[5];\n            y1 = tmpSegY[5];\n            x2 = tmpSegX[6];\n            y2 = tmpSegY[6];\n        }\n        remained -= actualSubDivCount - 1;\n    }\n    return shorterPath === subpath1 ? [newSubpath, subpath2] : [subpath1, newSubpath];\n}\nfunction createSubpath(lastSubpathSubpath, otherSubpath) {\n    var len = lastSubpathSubpath.length;\n    var lastX = lastSubpathSubpath[len - 2];\n    var lastY = lastSubpathSubpath[len - 1];\n    var newSubpath = [];\n    for (var i = 0; i < otherSubpath.length;) {\n        newSubpath[i++] = lastX;\n        newSubpath[i++] = lastY;\n    }\n    return newSubpath;\n}\nexport function alignBezierCurves(array1, array2) {\n    var _a;\n    var lastSubpath1;\n    var lastSubpath2;\n    var newArray1 = [];\n    var newArray2 = [];\n    for (var i = 0; i < Math.max(array1.length, array2.length); i++) {\n        var subpath1 = array1[i];\n        var subpath2 = array2[i];\n        var newSubpath1 = void 0;\n        var newSubpath2 = void 0;\n        if (!subpath1) {\n            newSubpath1 = createSubpath(lastSubpath1 || subpath2, subpath2);\n            newSubpath2 = subpath2;\n        }\n        else if (!subpath2) {\n            newSubpath2 = createSubpath(lastSubpath2 || subpath1, subpath1);\n            newSubpath1 = subpath1;\n        }\n        else {\n            _a = alignSubpath(subpath1, subpath2), newSubpath1 = _a[0], newSubpath2 = _a[1];\n            lastSubpath1 = newSubpath1;\n            lastSubpath2 = newSubpath2;\n        }\n        newArray1.push(newSubpath1);\n        newArray2.push(newSubpath2);\n    }\n    return [newArray1, newArray2];\n}\nexport function centroid(array) {\n    var signedArea = 0;\n    var cx = 0;\n    var cy = 0;\n    var len = array.length;\n    for (var i = 0, j = len - 2; i < len; j = i, i += 2) {\n        var x0 = array[j];\n        var y0 = array[j + 1];\n        var x1 = array[i];\n        var y1 = array[i + 1];\n        var a = x0 * y1 - x1 * y0;\n        signedArea += a;\n        cx += (x0 + x1) * a;\n        cy += (y0 + y1) * a;\n    }\n    if (signedArea === 0) {\n        return [array[0] || 0, array[1] || 0];\n    }\n    return [cx / signedArea / 3, cy / signedArea / 3, signedArea];\n}\nfunction findBestRingOffset(fromSubBeziers, toSubBeziers, fromCp, toCp) {\n    var bezierCount = (fromSubBeziers.length - 2) / 6;\n    var bestScore = Infinity;\n    var bestOffset = 0;\n    var len = fromSubBeziers.length;\n    var len2 = len - 2;\n    for (var offset = 0; offset < bezierCount; offset++) {\n        var cursorOffset = offset * 6;\n        var score = 0;\n        for (var k = 0; k < len; k += 2) {\n            var idx = k === 0 ? cursorOffset : ((cursorOffset + k - 2) % len2 + 2);\n            var x0 = fromSubBeziers[idx] - fromCp[0];\n            var y0 = fromSubBeziers[idx + 1] - fromCp[1];\n            var x1 = toSubBeziers[k] - toCp[0];\n            var y1 = toSubBeziers[k + 1] - toCp[1];\n            var dx = x1 - x0;\n            var dy = y1 - y0;\n            score += dx * dx + dy * dy;\n        }\n        if (score < bestScore) {\n            bestScore = score;\n            bestOffset = offset;\n        }\n    }\n    return bestOffset;\n}\nfunction reverse(array) {\n    var newArr = [];\n    var len = array.length;\n    for (var i = 0; i < len; i += 2) {\n        newArr[i] = array[len - i - 2];\n        newArr[i + 1] = array[len - i - 1];\n    }\n    return newArr;\n}\nfunction findBestMorphingRotation(fromArr, toArr, searchAngleIteration, searchAngleRange) {\n    var result = [];\n    var fromNeedsReverse;\n    for (var i = 0; i < fromArr.length; i++) {\n        var fromSubpathBezier = fromArr[i];\n        var toSubpathBezier = toArr[i];\n        var fromCp = centroid(fromSubpathBezier);\n        var toCp = centroid(toSubpathBezier);\n        if (fromNeedsReverse == null) {\n            fromNeedsReverse = fromCp[2] < 0 !== toCp[2] < 0;\n        }\n        var newFromSubpathBezier = [];\n        var newToSubpathBezier = [];\n        var bestAngle = 0;\n        var bestScore = Infinity;\n        var tmpArr = [];\n        var len = fromSubpathBezier.length;\n        if (fromNeedsReverse) {\n            fromSubpathBezier = reverse(fromSubpathBezier);\n        }\n        var offset = findBestRingOffset(fromSubpathBezier, toSubpathBezier, fromCp, toCp) * 6;\n        var len2 = len - 2;\n        for (var k = 0; k < len2; k += 2) {\n            var idx = (offset + k) % len2 + 2;\n            newFromSubpathBezier[k + 2] = fromSubpathBezier[idx] - fromCp[0];\n            newFromSubpathBezier[k + 3] = fromSubpathBezier[idx + 1] - fromCp[1];\n        }\n        newFromSubpathBezier[0] = fromSubpathBezier[offset] - fromCp[0];\n        newFromSubpathBezier[1] = fromSubpathBezier[offset + 1] - fromCp[1];\n        if (searchAngleIteration > 0) {\n            var step = searchAngleRange / searchAngleIteration;\n            for (var angle = -searchAngleRange / 2; angle <= searchAngleRange / 2; angle += step) {\n                var sa = Math.sin(angle);\n                var ca = Math.cos(angle);\n                var score = 0;\n                for (var k = 0; k < fromSubpathBezier.length; k += 2) {\n                    var x0 = newFromSubpathBezier[k];\n                    var y0 = newFromSubpathBezier[k + 1];\n                    var x1 = toSubpathBezier[k] - toCp[0];\n                    var y1 = toSubpathBezier[k + 1] - toCp[1];\n                    var newX1 = x1 * ca - y1 * sa;\n                    var newY1 = x1 * sa + y1 * ca;\n                    tmpArr[k] = newX1;\n                    tmpArr[k + 1] = newY1;\n                    var dx = newX1 - x0;\n                    var dy = newY1 - y0;\n                    score += dx * dx + dy * dy;\n                }\n                if (score < bestScore) {\n                    bestScore = score;\n                    bestAngle = angle;\n                    for (var m = 0; m < tmpArr.length; m++) {\n                        newToSubpathBezier[m] = tmpArr[m];\n                    }\n                }\n            }\n        }\n        else {\n            for (var i_1 = 0; i_1 < len; i_1 += 2) {\n                newToSubpathBezier[i_1] = toSubpathBezier[i_1] - toCp[0];\n                newToSubpathBezier[i_1 + 1] = toSubpathBezier[i_1 + 1] - toCp[1];\n            }\n        }\n        result.push({\n            from: newFromSubpathBezier,\n            to: newToSubpathBezier,\n            fromCp: fromCp,\n            toCp: toCp,\n            rotation: -bestAngle\n        });\n    }\n    return result;\n}\nexport function isCombineMorphing(path) {\n    return path.__isCombineMorphing;\n}\nexport function isMorphing(el) {\n    return el.__morphT >= 0;\n}\nvar SAVED_METHOD_PREFIX = '__mOriginal_';\nfunction saveAndModifyMethod(obj, methodName, modifiers) {\n    var savedMethodName = SAVED_METHOD_PREFIX + methodName;\n    var originalMethod = obj[savedMethodName] || obj[methodName];\n    if (!obj[savedMethodName]) {\n        obj[savedMethodName] = obj[methodName];\n    }\n    var replace = modifiers.replace;\n    var after = modifiers.after;\n    var before = modifiers.before;\n    obj[methodName] = function () {\n        var args = arguments;\n        var res;\n        before && before.apply(this, args);\n        if (replace) {\n            res = replace.apply(this, args);\n        }\n        else {\n            res = originalMethod.apply(this, args);\n        }\n        after && after.apply(this, args);\n        return res;\n    };\n}\nfunction restoreMethod(obj, methodName) {\n    var savedMethodName = SAVED_METHOD_PREFIX + methodName;\n    if (obj[savedMethodName]) {\n        obj[methodName] = obj[savedMethodName];\n        obj[savedMethodName] = null;\n    }\n}\nfunction applyTransformOnBeziers(bezierCurves, mm) {\n    for (var i = 0; i < bezierCurves.length; i++) {\n        var subBeziers = bezierCurves[i];\n        for (var k = 0; k < subBeziers.length;) {\n            var x = subBeziers[k];\n            var y = subBeziers[k + 1];\n            subBeziers[k++] = mm[0] * x + mm[2] * y + mm[4];\n            subBeziers[k++] = mm[1] * x + mm[3] * y + mm[5];\n        }\n    }\n}\nfunction prepareMorphPath(fromPath, toPath) {\n    var fromPathProxy = fromPath.getUpdatedPathProxy();\n    var toPathProxy = toPath.getUpdatedPathProxy();\n    var _a = alignBezierCurves(pathToBezierCurves(fromPathProxy), pathToBezierCurves(toPathProxy)), fromBezierCurves = _a[0], toBezierCurves = _a[1];\n    var fromPathTransform = fromPath.getComputedTransform();\n    var toPathTransform = toPath.getComputedTransform();\n    function updateIdentityTransform() {\n        this.transform = null;\n    }\n    fromPathTransform && applyTransformOnBeziers(fromBezierCurves, fromPathTransform);\n    toPathTransform && applyTransformOnBeziers(toBezierCurves, toPathTransform);\n    saveAndModifyMethod(toPath, 'updateTransform', { replace: updateIdentityTransform });\n    toPath.transform = null;\n    var morphingData = findBestMorphingRotation(fromBezierCurves, toBezierCurves, 10, Math.PI);\n    var tmpArr = [];\n    saveAndModifyMethod(toPath, 'buildPath', { replace: function (path) {\n            var t = toPath.__morphT;\n            var onet = 1 - t;\n            var newCp = [];\n            for (var i = 0; i < morphingData.length; i++) {\n                var item = morphingData[i];\n                var from = item.from;\n                var to = item.to;\n                var angle = item.rotation * t;\n                var fromCp = item.fromCp;\n                var toCp = item.toCp;\n                var sa = Math.sin(angle);\n                var ca = Math.cos(angle);\n                lerp(newCp, fromCp, toCp, t);\n                for (var m = 0; m < from.length; m += 2) {\n                    var x0_1 = from[m];\n                    var y0_1 = from[m + 1];\n                    var x1 = to[m];\n                    var y1 = to[m + 1];\n                    var x = x0_1 * onet + x1 * t;\n                    var y = y0_1 * onet + y1 * t;\n                    tmpArr[m] = (x * ca - y * sa) + newCp[0];\n                    tmpArr[m + 1] = (x * sa + y * ca) + newCp[1];\n                }\n                var x0 = tmpArr[0];\n                var y0 = tmpArr[1];\n                path.moveTo(x0, y0);\n                for (var m = 2; m < from.length;) {\n                    var x1 = tmpArr[m++];\n                    var y1 = tmpArr[m++];\n                    var x2 = tmpArr[m++];\n                    var y2 = tmpArr[m++];\n                    var x3 = tmpArr[m++];\n                    var y3 = tmpArr[m++];\n                    if (x0 === x1 && y0 === y1 && x2 === x3 && y2 === y3) {\n                        path.lineTo(x3, y3);\n                    }\n                    else {\n                        path.bezierCurveTo(x1, y1, x2, y2, x3, y3);\n                    }\n                    x0 = x3;\n                    y0 = y3;\n                }\n            }\n        } });\n}\nexport function morphPath(fromPath, toPath, animationOpts) {\n    if (!fromPath || !toPath) {\n        return toPath;\n    }\n    var oldDone = animationOpts.done;\n    var oldDuring = animationOpts.during;\n    prepareMorphPath(fromPath, toPath);\n    toPath.__morphT = 0;\n    function restoreToPath() {\n        restoreMethod(toPath, 'buildPath');\n        restoreMethod(toPath, 'updateTransform');\n        toPath.__morphT = -1;\n        toPath.createPathProxy();\n        toPath.dirtyShape();\n    }\n    toPath.animateTo({\n        __morphT: 1\n    }, defaults({\n        during: function (p) {\n            toPath.dirtyShape();\n            oldDuring && oldDuring(p);\n        },\n        done: function () {\n            restoreToPath();\n            oldDone && oldDone();\n        }\n    }, animationOpts));\n    return toPath;\n}\nfunction hilbert(x, y, minX, minY, maxX, maxY) {\n    var bits = 16;\n    x = (maxX === minX) ? 0 : Math.round(32767 * (x - minX) / (maxX - minX));\n    y = (maxY === minY) ? 0 : Math.round(32767 * (y - minY) / (maxY - minY));\n    var d = 0;\n    var tmp;\n    for (var s = (1 << bits) / 2; s > 0; s /= 2) {\n        var rx = 0;\n        var ry = 0;\n        if ((x & s) > 0) {\n            rx = 1;\n        }\n        if ((y & s) > 0) {\n            ry = 1;\n        }\n        d += s * s * ((3 * rx) ^ ry);\n        if (ry === 0) {\n            if (rx === 1) {\n                x = s - 1 - x;\n                y = s - 1 - y;\n            }\n            tmp = x;\n            x = y;\n            y = tmp;\n        }\n    }\n    return d;\n}\nfunction sortPaths(pathList) {\n    var xMin = Infinity;\n    var yMin = Infinity;\n    var xMax = -Infinity;\n    var yMax = -Infinity;\n    var cps = map(pathList, function (path) {\n        var rect = path.getBoundingRect();\n        var m = path.getComputedTransform();\n        var x = rect.x + rect.width / 2 + (m ? m[4] : 0);\n        var y = rect.y + rect.height / 2 + (m ? m[5] : 0);\n        xMin = Math.min(x, xMin);\n        yMin = Math.min(y, yMin);\n        xMax = Math.max(x, xMax);\n        yMax = Math.max(y, yMax);\n        return [x, y];\n    });\n    var items = map(cps, function (cp, idx) {\n        return {\n            cp: cp,\n            z: hilbert(cp[0], cp[1], xMin, yMin, xMax, yMax),\n            path: pathList[idx]\n        };\n    });\n    return items.sort(function (a, b) { return a.z - b.z; }).map(function (item) { return item.path; });\n}\n;\nfunction defaultDividePath(param) {\n    return split(param.path, param.count);\n}\nfunction createEmptyReturn() {\n    return {\n        fromIndividuals: [],\n        toIndividuals: [],\n        count: 0\n    };\n}\nexport function combineMorph(fromList, toPath, animationOpts) {\n    var fromPathList = [];\n    function addFromPath(fromList) {\n        for (var i = 0; i < fromList.length; i++) {\n            var from = fromList[i];\n            if (isCombineMorphing(from)) {\n                addFromPath(from.childrenRef());\n            }\n            else if (from instanceof Path) {\n                fromPathList.push(from);\n            }\n        }\n    }\n    addFromPath(fromList);\n    var separateCount = fromPathList.length;\n    if (!separateCount) {\n        return createEmptyReturn();\n    }\n    var dividePath = animationOpts.dividePath || defaultDividePath;\n    var toSubPathList = dividePath({\n        path: toPath, count: separateCount\n    });\n    if (toSubPathList.length !== separateCount) {\n        console.error('Invalid morphing: unmatched splitted path');\n        return createEmptyReturn();\n    }\n    fromPathList = sortPaths(fromPathList);\n    toSubPathList = sortPaths(toSubPathList);\n    var oldDone = animationOpts.done;\n    var oldDuring = animationOpts.during;\n    var individualDelay = animationOpts.individualDelay;\n    var identityTransform = new Transformable();\n    for (var i = 0; i < separateCount; i++) {\n        var from = fromPathList[i];\n        var to = toSubPathList[i];\n        to.parent = toPath;\n        to.copyTransform(identityTransform);\n        if (!individualDelay) {\n            prepareMorphPath(from, to);\n        }\n    }\n    toPath.__isCombineMorphing = true;\n    toPath.childrenRef = function () {\n        return toSubPathList;\n    };\n    function addToSubPathListToZr(zr) {\n        for (var i = 0; i < toSubPathList.length; i++) {\n            toSubPathList[i].addSelfToZr(zr);\n        }\n    }\n    saveAndModifyMethod(toPath, 'addSelfToZr', {\n        after: function (zr) {\n            addToSubPathListToZr(zr);\n        }\n    });\n    saveAndModifyMethod(toPath, 'removeSelfFromZr', {\n        after: function (zr) {\n            for (var i = 0; i < toSubPathList.length; i++) {\n                toSubPathList[i].removeSelfFromZr(zr);\n            }\n        }\n    });\n    function restoreToPath() {\n        toPath.__isCombineMorphing = false;\n        toPath.__morphT = -1;\n        toPath.childrenRef = null;\n        restoreMethod(toPath, 'addSelfToZr');\n        restoreMethod(toPath, 'removeSelfFromZr');\n    }\n    var toLen = toSubPathList.length;\n    if (individualDelay) {\n        var animating_1 = toLen;\n        var eachDone = function () {\n            animating_1--;\n            if (animating_1 === 0) {\n                restoreToPath();\n                oldDone && oldDone();\n            }\n        };\n        for (var i = 0; i < toLen; i++) {\n            var indivdualAnimationOpts = individualDelay ? defaults({\n                delay: (animationOpts.delay || 0) + individualDelay(i, toLen, fromPathList[i], toSubPathList[i]),\n                done: eachDone\n            }, animationOpts) : animationOpts;\n            morphPath(fromPathList[i], toSubPathList[i], indivdualAnimationOpts);\n        }\n    }\n    else {\n        toPath.__morphT = 0;\n        toPath.animateTo({\n            __morphT: 1\n        }, defaults({\n            during: function (p) {\n                for (var i = 0; i < toLen; i++) {\n                    var child = toSubPathList[i];\n                    child.__morphT = toPath.__morphT;\n                    child.dirtyShape();\n                }\n                oldDuring && oldDuring(p);\n            },\n            done: function () {\n                restoreToPath();\n                for (var i = 0; i < fromList.length; i++) {\n                    restoreMethod(fromList[i], 'updateTransform');\n                }\n                oldDone && oldDone();\n            }\n        }, animationOpts));\n    }\n    if (toPath.__zr) {\n        addToSubPathListToZr(toPath.__zr);\n    }\n    return {\n        fromIndividuals: fromPathList,\n        toIndividuals: toSubPathList,\n        count: toLen\n    };\n}\nexport function separateMorph(fromPath, toPathList, animationOpts) {\n    var toLen = toPathList.length;\n    var fromPathList = [];\n    var dividePath = animationOpts.dividePath || defaultDividePath;\n    function addFromPath(fromList) {\n        for (var i = 0; i < fromList.length; i++) {\n            var from = fromList[i];\n            if (isCombineMorphing(from)) {\n                addFromPath(from.childrenRef());\n            }\n            else if (from instanceof Path) {\n                fromPathList.push(from);\n            }\n        }\n    }\n    if (isCombineMorphing(fromPath)) {\n        addFromPath(fromPath.childrenRef());\n        var fromLen = fromPathList.length;\n        if (fromLen < toLen) {\n            var k = 0;\n            for (var i = fromLen; i < toLen; i++) {\n                fromPathList.push(clonePath(fromPathList[k++ % fromLen]));\n            }\n        }\n        fromPathList.length = toLen;\n    }\n    else {\n        fromPathList = dividePath({ path: fromPath, count: toLen });\n        var fromPathTransform = fromPath.getComputedTransform();\n        for (var i = 0; i < fromPathList.length; i++) {\n            fromPathList[i].setLocalTransform(fromPathTransform);\n        }\n        if (fromPathList.length !== toLen) {\n            console.error('Invalid morphing: unmatched splitted path');\n            return createEmptyReturn();\n        }\n    }\n    fromPathList = sortPaths(fromPathList);\n    toPathList = sortPaths(toPathList);\n    var individualDelay = animationOpts.individualDelay;\n    for (var i = 0; i < toLen; i++) {\n        var indivdualAnimationOpts = individualDelay ? defaults({\n            delay: (animationOpts.delay || 0) + individualDelay(i, toLen, fromPathList[i], toPathList[i])\n        }, animationOpts) : animationOpts;\n        morphPath(fromPathList[i], toPathList[i], indivdualAnimationOpts);\n    }\n    return {\n        fromIndividuals: fromPathList,\n        toIndividuals: toPathList,\n        count: toPathList.length\n    };\n}\nexport { split as defaultDividePath };\n","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { separateMorph, combineMorph, morphPath, isCombineMorphing } from 'zrender/lib/tool/morphPath.js';\nimport { Path } from '../util/graphic.js';\nimport { defaults, isArray } from 'zrender/lib/core/util.js';\nimport { getAnimationConfig } from './basicTransition.js';\nimport { clonePath } from 'zrender/lib/tool/path.js';\n\nfunction isMultiple(elements) {\n  return isArray(elements[0]);\n}\n\nfunction prepareMorphBatches(one, many) {\n  var batches = [];\n  var batchCount = one.length;\n\n  for (var i = 0; i < batchCount; i++) {\n    batches.push({\n      one: one[i],\n      many: []\n    });\n  }\n\n  for (var i = 0; i < many.length; i++) {\n    var len = many[i].length;\n    var k = void 0;\n\n    for (k = 0; k < len; k++) {\n      batches[k % batchCount].many.push(many[i][k]);\n    }\n  }\n\n  var off = 0; // If one has more paths than each one of many. average them.\n\n  for (var i = batchCount - 1; i >= 0; i--) {\n    if (!batches[i].many.length) {\n      var moveFrom = batches[off].many;\n\n      if (moveFrom.length <= 1) {\n        // Not enough\n        // Start from the first one.\n        if (off) {\n          off = 0;\n        } else {\n          return batches;\n        }\n      }\n\n      var len = moveFrom.length;\n      var mid = Math.ceil(len / 2);\n      batches[i].many = moveFrom.slice(mid, len);\n      batches[off].many = moveFrom.slice(0, mid);\n      off++;\n    }\n  }\n\n  return batches;\n}\n\nvar pathDividers = {\n  clone: function (params) {\n    var ret = []; // Fitting the alpha\n\n    var approxOpacity = 1 - Math.pow(1 - params.path.style.opacity, 1 / params.count);\n\n    for (var i = 0; i < params.count; i++) {\n      var cloned = clonePath(params.path);\n      cloned.setStyle('opacity', approxOpacity);\n      ret.push(cloned);\n    }\n\n    return ret;\n  },\n  // Use the default divider\n  split: null\n};\nexport function applyMorphAnimation(from, to, divideShape, seriesModel, dataIndex, animateOtherProps) {\n  if (!from.length || !to.length) {\n    return;\n  }\n\n  var updateAnimationCfg = getAnimationConfig('update', seriesModel, dataIndex);\n\n  if (!(updateAnimationCfg && updateAnimationCfg.duration > 0)) {\n    return;\n  }\n\n  var animationDelay = seriesModel.getModel('universalTransition').get('delay');\n  var animationCfg = Object.assign({\n    // Need to setToFinal so the further calculation based on the style can be correct.\n    // Like emphasis color.\n    setToFinal: true\n  }, updateAnimationCfg);\n  var many;\n  var one;\n\n  if (isMultiple(from)) {\n    // manyToOne\n    many = from;\n    one = to;\n  }\n\n  if (isMultiple(to)) {\n    // oneToMany\n    many = to;\n    one = from;\n  }\n\n  function morphOneBatch(batch, fromIsMany, animateIndex, animateCount, forceManyOne) {\n    var batchMany = batch.many;\n    var batchOne = batch.one;\n\n    if (batchMany.length === 1 && !forceManyOne) {\n      // Is one to one\n      var batchFrom = fromIsMany ? batchMany[0] : batchOne;\n      var batchTo = fromIsMany ? batchOne : batchMany[0];\n\n      if (isCombineMorphing(batchFrom)) {\n        // Keep doing combine animation.\n        morphOneBatch({\n          many: [batchFrom],\n          one: batchTo\n        }, true, animateIndex, animateCount, true);\n      } else {\n        var individualAnimationCfg = animationDelay ? defaults({\n          delay: animationDelay(animateIndex, animateCount)\n        }, animationCfg) : animationCfg;\n        morphPath(batchFrom, batchTo, individualAnimationCfg);\n        animateOtherProps(batchFrom, batchTo, batchFrom, batchTo, individualAnimationCfg);\n      }\n    } else {\n      var separateAnimationCfg = defaults({\n        dividePath: pathDividers[divideShape],\n        individualDelay: animationDelay && function (idx, count, fromPath, toPath) {\n          return animationDelay(idx + animateIndex, animateCount);\n        }\n      }, animationCfg);\n\n      var _a = fromIsMany ? combineMorph(batchMany, batchOne, separateAnimationCfg) : separateMorph(batchOne, batchMany, separateAnimationCfg),\n          fromIndividuals = _a.fromIndividuals,\n          toIndividuals = _a.toIndividuals;\n\n      var count = fromIndividuals.length;\n\n      for (var k = 0; k < count; k++) {\n        var individualAnimationCfg = animationDelay ? defaults({\n          delay: animationDelay(k, count)\n        }, animationCfg) : animationCfg;\n        animateOtherProps(fromIndividuals[k], toIndividuals[k], fromIsMany ? batchMany[k] : batch.one, fromIsMany ? batch.one : batchMany[k], individualAnimationCfg);\n      }\n    }\n  }\n\n  var fromIsMany = many ? many === from // Is one to one. If the path number not match. also needs do merge and separate morphing.\n  : from.length > to.length;\n  var morphBatches = many ? prepareMorphBatches(one, many) : prepareMorphBatches(fromIsMany ? to : from, [fromIsMany ? from : to]);\n  var animateCount = 0;\n\n  for (var i = 0; i < morphBatches.length; i++) {\n    animateCount += morphBatches[i].many.length;\n  }\n\n  var animateIndex = 0;\n\n  for (var i = 0; i < morphBatches.length; i++) {\n    morphOneBatch(morphBatches[i], fromIsMany, animateIndex, animateCount);\n    animateIndex += morphBatches[i].many.length;\n  }\n}\nexport function getPathList(elements) {\n  if (!elements) {\n    return [];\n  }\n\n  if (isArray(elements)) {\n    var pathList_1 = [];\n\n    for (var i = 0; i < elements.length; i++) {\n      pathList_1.push(getPathList(elements[i]));\n    }\n\n    return pathList_1;\n  }\n\n  var pathList = [];\n  elements.traverse(function (el) {\n    if (el instanceof Path && !el.disableMorphing && !el.invisible && !el.ignore) {\n      pathList.push(el);\n    }\n  });\n  return pathList;\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\n// Universal transitions that can animate between any shapes(series) and any properties in any amounts.\nimport { SERIES_UNIVERSAL_TRANSITION_PROP } from '../model/Series.js';\nimport { createHashMap, each, map, filter, isArray, extend } from 'zrender/lib/core/util.js';\nimport { applyMorphAnimation, getPathList } from './morphTransitionHelper.js';\nimport Path from 'zrender/lib/graphic/Path.js';\nimport { initProps } from '../util/graphic.js';\nimport DataDiffer from '../data/DataDiffer.js';\nimport { makeInner, normalizeToArray } from '../util/model.js';\nimport { warn } from '../util/log.js';\nimport { getAnimationConfig, getOldStyle } from './basicTransition.js';\nimport Displayable from 'zrender/lib/graphic/Displayable.js';\nvar DATA_COUNT_THRESHOLD = 1e4;\n;\nvar getUniversalTransitionGlobalStore = makeInner();\n\nfunction getGroupIdDimension(data) {\n  var dimensions = data.dimensions;\n\n  for (var i = 0; i < dimensions.length; i++) {\n    var dimInfo = data.getDimensionInfo(dimensions[i]);\n\n    if (dimInfo && dimInfo.otherDims.itemGroupId === 0) {\n      return dimensions[i];\n    }\n  }\n}\n\nfunction flattenDataDiffItems(list) {\n  var items = [];\n  each(list, function (seriesInfo) {\n    var data = seriesInfo.data;\n\n    if (data.count() > DATA_COUNT_THRESHOLD) {\n      if (process.env.NODE_ENV !== 'production') {\n        warn('Universal transition is disabled on large data > 10k.');\n      }\n\n      return;\n    }\n\n    var indices = data.getIndices();\n    var groupDim = getGroupIdDimension(data);\n\n    for (var dataIndex = 0; dataIndex < indices.length; dataIndex++) {\n      items.push({\n        dataGroupId: seriesInfo.dataGroupId,\n        data: data,\n        dim: seriesInfo.dim || groupDim,\n        divide: seriesInfo.divide,\n        dataIndex: dataIndex\n      });\n    }\n  });\n  return items;\n}\n\nfunction fadeInElement(newEl, newSeries, newIndex) {\n  newEl.traverse(function (el) {\n    if (el instanceof Path) {\n      // TODO use fade in animation for target element.\n      initProps(el, {\n        style: {\n          opacity: 0\n        }\n      }, newSeries, {\n        dataIndex: newIndex,\n        isFrom: true\n      });\n    }\n  });\n}\n\nfunction removeEl(el) {\n  if (el.parent) {\n    // Bake parent transform to element.\n    // So it can still have proper transform to transition after it's removed.\n    var computedTransform = el.getComputedTransform();\n    el.setLocalTransform(computedTransform);\n    el.parent.remove(el);\n  }\n}\n\nfunction stopAnimation(el) {\n  el.stopAnimation();\n\n  if (el.isGroup) {\n    el.traverse(function (child) {\n      child.stopAnimation();\n    });\n  }\n}\n\nfunction animateElementStyles(el, dataIndex, seriesModel) {\n  var animationConfig = getAnimationConfig('update', seriesModel, dataIndex);\n  animationConfig && el.traverse(function (child) {\n    if (child instanceof Displayable) {\n      var oldStyle = getOldStyle(child);\n\n      if (oldStyle) {\n        child.animateFrom({\n          style: oldStyle\n        }, animationConfig);\n      }\n    }\n  });\n}\n\nfunction isAllIdSame(oldDiffItems, newDiffItems) {\n  var len = oldDiffItems.length;\n\n  if (len !== newDiffItems.length) {\n    return false;\n  }\n\n  for (var i = 0; i < len; i++) {\n    var oldItem = oldDiffItems[i];\n    var newItem = newDiffItems[i];\n\n    if (oldItem.data.getId(oldItem.dataIndex) !== newItem.data.getId(newItem.dataIndex)) {\n      return false;\n    }\n  }\n\n  return true;\n}\n\nfunction transitionBetween(oldList, newList, api) {\n  var oldDiffItems = flattenDataDiffItems(oldList);\n  var newDiffItems = flattenDataDiffItems(newList);\n\n  function updateMorphingPathProps(from, to, rawFrom, rawTo, animationCfg) {\n    if (rawFrom || from) {\n      to.animateFrom({\n        style: rawFrom && rawFrom !== from ? // dividingMethod like clone may override the style(opacity)\n        // So extend it to raw style.\n        extend(extend({}, rawFrom.style), from.style) : from.style\n      }, animationCfg);\n    }\n  }\n\n  function findKeyDim(items) {\n    for (var i = 0; i < items.length; i++) {\n      if (items[i].dim) {\n        return items[i].dim;\n      }\n    }\n  }\n\n  var oldKeyDim = findKeyDim(oldDiffItems);\n  var newKeyDim = findKeyDim(newDiffItems);\n  var hasMorphAnimation = false;\n\n  function createKeyGetter(isOld, onlyGetId) {\n    return function (diffItem) {\n      var data = diffItem.data;\n      var dataIndex = diffItem.dataIndex; // TODO if specified dim\n\n      if (onlyGetId) {\n        return data.getId(dataIndex);\n      } // Use group id as transition key by default.\n      // So we can achieve multiple to multiple animation like drilldown / up naturally.\n      // If group id not exits. Use id instead. If so, only one to one transition will be applied.\n\n\n      var dataGroupId = diffItem.dataGroupId; // If specified key dimension(itemGroupId by default). Use this same dimension from other data.\n      // PENDING: If only use key dimension of newData.\n\n      var keyDim = isOld ? oldKeyDim || newKeyDim : newKeyDim || oldKeyDim;\n      var dimInfo = keyDim && data.getDimensionInfo(keyDim);\n      var dimOrdinalMeta = dimInfo && dimInfo.ordinalMeta;\n\n      if (dimInfo) {\n        // Get from encode.itemGroupId.\n        var key = data.get(dimInfo.name, dataIndex);\n\n        if (dimOrdinalMeta) {\n          return dimOrdinalMeta.categories[key] || key + '';\n        }\n\n        return key + '';\n      } // Get groupId from raw item. { groupId: '' }\n\n\n      var itemVal = data.getRawDataItem(dataIndex);\n\n      if (itemVal && itemVal.groupId) {\n        return itemVal.groupId + '';\n      }\n\n      return dataGroupId || data.getId(dataIndex);\n    };\n  } // Use id if it's very likely to be an one to one animation\n  // It's more robust than groupId\n  // TODO Check if key dimension is specified.\n\n\n  var useId = isAllIdSame(oldDiffItems, newDiffItems);\n  var isElementStillInChart = {};\n\n  if (!useId) {\n    // We may have different diff strategy with basicTransition if we use other dimension as key.\n    // If so, we can't simply check if oldEl is same with newEl. We need a map to check if oldEl is still being used in the new chart.\n    // We can't use the elements that already being morphed. Let it keep it's original basic transition.\n    for (var i = 0; i < newDiffItems.length; i++) {\n      var newItem = newDiffItems[i];\n      var el = newItem.data.getItemGraphicEl(newItem.dataIndex);\n\n      if (el) {\n        isElementStillInChart[el.id] = true;\n      }\n    }\n  }\n\n  function updateOneToOne(newIndex, oldIndex) {\n    var oldItem = oldDiffItems[oldIndex];\n    var newItem = newDiffItems[newIndex];\n    var newSeries = newItem.data.hostModel; // TODO Mark this elements is morphed and don't morph them anymore\n\n    var oldEl = oldItem.data.getItemGraphicEl(oldItem.dataIndex);\n    var newEl = newItem.data.getItemGraphicEl(newItem.dataIndex); // Can't handle same elements.\n\n    if (oldEl === newEl) {\n      newEl && animateElementStyles(newEl, newItem.dataIndex, newSeries);\n      return;\n    }\n\n    if ( // We can't use the elements that already being morphed\n    oldEl && isElementStillInChart[oldEl.id]) {\n      return;\n    }\n\n    if (newEl) {\n      // TODO: If keep animating the group in case\n      // some of the elements don't want to be morphed.\n      // TODO Label?\n      stopAnimation(newEl);\n\n      if (oldEl) {\n        stopAnimation(oldEl); // If old element is doing leaving animation. stop it and remove it immediately.\n\n        removeEl(oldEl);\n        hasMorphAnimation = true;\n        applyMorphAnimation(getPathList(oldEl), getPathList(newEl), newItem.divide, newSeries, newIndex, updateMorphingPathProps);\n      } else {\n        fadeInElement(newEl, newSeries, newIndex);\n      }\n    } // else keep oldEl leaving animation.\n\n  }\n\n  new DataDiffer(oldDiffItems, newDiffItems, createKeyGetter(true, useId), createKeyGetter(false, useId), null, 'multiple').update(updateOneToOne).updateManyToOne(function (newIndex, oldIndices) {\n    var newItem = newDiffItems[newIndex];\n    var newData = newItem.data;\n    var newSeries = newData.hostModel;\n    var newEl = newData.getItemGraphicEl(newItem.dataIndex);\n    var oldElsList = filter(map(oldIndices, function (idx) {\n      return oldDiffItems[idx].data.getItemGraphicEl(oldDiffItems[idx].dataIndex);\n    }), function (oldEl) {\n      return oldEl && oldEl !== newEl && !isElementStillInChart[oldEl.id];\n    });\n\n    if (newEl) {\n      stopAnimation(newEl);\n\n      if (oldElsList.length) {\n        // If old element is doing leaving animation. stop it and remove it immediately.\n        each(oldElsList, function (oldEl) {\n          stopAnimation(oldEl);\n          removeEl(oldEl);\n        });\n        hasMorphAnimation = true;\n        applyMorphAnimation(getPathList(oldElsList), getPathList(newEl), newItem.divide, newSeries, newIndex, updateMorphingPathProps);\n      } else {\n        fadeInElement(newEl, newSeries, newItem.dataIndex);\n      }\n    } // else keep oldEl leaving animation.\n\n  }).updateOneToMany(function (newIndices, oldIndex) {\n    var oldItem = oldDiffItems[oldIndex];\n    var oldEl = oldItem.data.getItemGraphicEl(oldItem.dataIndex); // We can't use the elements that already being morphed\n\n    if (oldEl && isElementStillInChart[oldEl.id]) {\n      return;\n    }\n\n    var newElsList = filter(map(newIndices, function (idx) {\n      return newDiffItems[idx].data.getItemGraphicEl(newDiffItems[idx].dataIndex);\n    }), function (el) {\n      return el && el !== oldEl;\n    });\n    var newSeris = newDiffItems[newIndices[0]].data.hostModel;\n\n    if (newElsList.length) {\n      each(newElsList, function (newEl) {\n        return stopAnimation(newEl);\n      });\n\n      if (oldEl) {\n        stopAnimation(oldEl); // If old element is doing leaving animation. stop it and remove it immediately.\n\n        removeEl(oldEl);\n        hasMorphAnimation = true;\n        applyMorphAnimation(getPathList(oldEl), getPathList(newElsList), oldItem.divide, // Use divide on old.\n        newSeris, newIndices[0], updateMorphingPathProps);\n      } else {\n        each(newElsList, function (newEl) {\n          return fadeInElement(newEl, newSeris, newIndices[0]);\n        });\n      }\n    } // else keep oldEl leaving animation.\n\n  }).updateManyToMany(function (newIndices, oldIndices) {\n    // If two data are same and both have groupId.\n    // Normally they should be diff by id.\n    new DataDiffer(oldIndices, newIndices, function (rawIdx) {\n      return oldDiffItems[rawIdx].data.getId(oldDiffItems[rawIdx].dataIndex);\n    }, function (rawIdx) {\n      return newDiffItems[rawIdx].data.getId(newDiffItems[rawIdx].dataIndex);\n    }).update(function (newIndex, oldIndex) {\n      // Use the original index\n      updateOneToOne(newIndices[newIndex], oldIndices[oldIndex]);\n    }).execute();\n  }).execute();\n\n  if (hasMorphAnimation) {\n    each(newList, function (_a) {\n      var data = _a.data;\n      var seriesModel = data.hostModel;\n      var view = seriesModel && api.getViewOfSeriesModel(seriesModel);\n      var animationCfg = getAnimationConfig('update', seriesModel, 0); // use 0 index.\n\n      if (view && seriesModel.isAnimationEnabled() && animationCfg && animationCfg.duration > 0) {\n        view.group.traverse(function (el) {\n          if (el instanceof Path && !el.animators.length) {\n            // We can't accept there still exists element that has no animation\n            // if universalTransition is enabled\n            el.animateFrom({\n              style: {\n                opacity: 0\n              }\n            }, animationCfg);\n          }\n        });\n      }\n    });\n  }\n}\n\nfunction getSeriesTransitionKey(series) {\n  var seriesKey = series.getModel('universalTransition').get('seriesKey');\n\n  if (!seriesKey) {\n    // Use series id by default.\n    return series.id;\n  }\n\n  return seriesKey;\n}\n\nfunction convertArraySeriesKeyToString(seriesKey) {\n  if (isArray(seriesKey)) {\n    // Order independent.\n    return seriesKey.sort().join(',');\n  }\n\n  return seriesKey;\n}\n\nfunction getDivideShapeFromData(data) {\n  if (data.hostModel) {\n    return data.hostModel.getModel('universalTransition').get('divideShape');\n  }\n}\n\nfunction findTransitionSeriesBatches(globalStore, params) {\n  var updateBatches = createHashMap();\n  var oldDataMap = createHashMap(); // Map that only store key in array seriesKey.\n  // Which is used to query the old data when transition from one to multiple series.\n\n  var oldDataMapForSplit = createHashMap();\n  each(globalStore.oldSeries, function (series, idx) {\n    var oldDataGroupId = globalStore.oldDataGroupIds[idx];\n    var oldData = globalStore.oldData[idx];\n    var transitionKey = getSeriesTransitionKey(series);\n    var transitionKeyStr = convertArraySeriesKeyToString(transitionKey);\n    oldDataMap.set(transitionKeyStr, {\n      dataGroupId: oldDataGroupId,\n      data: oldData\n    });\n\n    if (isArray(transitionKey)) {\n      // Same key can't in different array seriesKey.\n      each(transitionKey, function (key) {\n        oldDataMapForSplit.set(key, {\n          key: transitionKeyStr,\n          dataGroupId: oldDataGroupId,\n          data: oldData\n        });\n      });\n    }\n  });\n\n  function checkTransitionSeriesKeyDuplicated(transitionKeyStr) {\n    if (updateBatches.get(transitionKeyStr)) {\n      warn(\"Duplicated seriesKey in universalTransition \" + transitionKeyStr);\n    }\n  }\n\n  each(params.updatedSeries, function (series) {\n    if (series.isUniversalTransitionEnabled() && series.isAnimationEnabled()) {\n      var newDataGroupId = series.get('dataGroupId');\n      var newData = series.getData();\n      var transitionKey = getSeriesTransitionKey(series);\n      var transitionKeyStr = convertArraySeriesKeyToString(transitionKey); // Only transition between series with same id.\n\n      var oldData = oldDataMap.get(transitionKeyStr); // string transition key is the best match.\n\n      if (oldData) {\n        if (process.env.NODE_ENV !== 'production') {\n          checkTransitionSeriesKeyDuplicated(transitionKeyStr);\n        } // TODO check if data is same?\n\n\n        updateBatches.set(transitionKeyStr, {\n          oldSeries: [{\n            dataGroupId: oldData.dataGroupId,\n            divide: getDivideShapeFromData(oldData.data),\n            data: oldData.data\n          }],\n          newSeries: [{\n            dataGroupId: newDataGroupId,\n            divide: getDivideShapeFromData(newData),\n            data: newData\n          }]\n        });\n      } else {\n        // Transition from multiple series.\n        if (isArray(transitionKey)) {\n          if (process.env.NODE_ENV !== 'production') {\n            checkTransitionSeriesKeyDuplicated(transitionKeyStr);\n          }\n\n          var oldSeries_1 = [];\n          each(transitionKey, function (key) {\n            var oldData = oldDataMap.get(key);\n\n            if (oldData.data) {\n              oldSeries_1.push({\n                dataGroupId: oldData.dataGroupId,\n                divide: getDivideShapeFromData(oldData.data),\n                data: oldData.data\n              });\n            }\n          });\n\n          if (oldSeries_1.length) {\n            updateBatches.set(transitionKeyStr, {\n              oldSeries: oldSeries_1,\n              newSeries: [{\n                dataGroupId: newDataGroupId,\n                data: newData,\n                divide: getDivideShapeFromData(newData)\n              }]\n            });\n          }\n        } else {\n          // Try transition to multiple series.\n          var oldData_1 = oldDataMapForSplit.get(transitionKey);\n\n          if (oldData_1) {\n            var batch = updateBatches.get(oldData_1.key);\n\n            if (!batch) {\n              batch = {\n                oldSeries: [{\n                  dataGroupId: oldData_1.dataGroupId,\n                  data: oldData_1.data,\n                  divide: getDivideShapeFromData(oldData_1.data)\n                }],\n                newSeries: []\n              };\n              updateBatches.set(oldData_1.key, batch);\n            }\n\n            batch.newSeries.push({\n              dataGroupId: newDataGroupId,\n              data: newData,\n              divide: getDivideShapeFromData(newData)\n            });\n          }\n        }\n      }\n    }\n  });\n  return updateBatches;\n}\n\nfunction querySeries(series, finder) {\n  for (var i = 0; i < series.length; i++) {\n    var found = finder.seriesIndex != null && finder.seriesIndex === series[i].seriesIndex || finder.seriesId != null && finder.seriesId === series[i].id;\n\n    if (found) {\n      return i;\n    }\n  }\n}\n\nfunction transitionSeriesFromOpt(transitionOpt, globalStore, params, api) {\n  var from = [];\n  var to = [];\n  each(normalizeToArray(transitionOpt.from), function (finder) {\n    var idx = querySeries(globalStore.oldSeries, finder);\n\n    if (idx >= 0) {\n      from.push({\n        dataGroupId: globalStore.oldDataGroupIds[idx],\n        data: globalStore.oldData[idx],\n        // TODO can specify divideShape in transition.\n        divide: getDivideShapeFromData(globalStore.oldData[idx]),\n        dim: finder.dimension\n      });\n    }\n  });\n  each(normalizeToArray(transitionOpt.to), function (finder) {\n    var idx = querySeries(params.updatedSeries, finder);\n\n    if (idx >= 0) {\n      var data = params.updatedSeries[idx].getData();\n      to.push({\n        dataGroupId: globalStore.oldDataGroupIds[idx],\n        data: data,\n        divide: getDivideShapeFromData(data),\n        dim: finder.dimension\n      });\n    }\n  });\n\n  if (from.length > 0 && to.length > 0) {\n    transitionBetween(from, to, api);\n  }\n}\n\nexport function installUniversalTransition(registers) {\n  registers.registerUpdateLifecycle('series:beforeupdate', function (ecMOdel, api, params) {\n    each(normalizeToArray(params.seriesTransition), function (transOpt) {\n      each(normalizeToArray(transOpt.to), function (finder) {\n        var series = params.updatedSeries;\n\n        for (var i = 0; i < series.length; i++) {\n          if (finder.seriesIndex != null && finder.seriesIndex === series[i].seriesIndex || finder.seriesId != null && finder.seriesId === series[i].id) {\n            series[i][SERIES_UNIVERSAL_TRANSITION_PROP] = true;\n          }\n        }\n      });\n    });\n  });\n  registers.registerUpdateLifecycle('series:transition', function (ecModel, api, params) {\n    // TODO api provide an namespace that can save stuff per instance\n    var globalStore = getUniversalTransitionGlobalStore(api); // TODO multiple to multiple series.\n\n    if (globalStore.oldSeries && params.updatedSeries && params.optionChanged) {\n      // Use give transition config if its' give;\n      var transitionOpt = params.seriesTransition;\n\n      if (transitionOpt) {\n        each(normalizeToArray(transitionOpt), function (opt) {\n          transitionSeriesFromOpt(opt, globalStore, params, api);\n        });\n      } else {\n        // Else guess from series based on transition series key.\n        var updateBatches_1 = findTransitionSeriesBatches(globalStore, params);\n        each(updateBatches_1.keys(), function (key) {\n          var batch = updateBatches_1.get(key);\n          transitionBetween(batch.oldSeries, batch.newSeries, api);\n        });\n      } // Reset\n\n\n      each(params.updatedSeries, function (series) {\n        // Reset;\n        if (series[SERIES_UNIVERSAL_TRANSITION_PROP]) {\n          series[SERIES_UNIVERSAL_TRANSITION_PROP] = false;\n        }\n      });\n    } // Save all series of current update. Not only the updated one.\n\n\n    var allSeries = ecModel.getSeries();\n    var savedSeries = globalStore.oldSeries = [];\n    var savedDataGroupIds = globalStore.oldDataGroupIds = [];\n    var savedData = globalStore.oldData = [];\n\n    for (var i = 0; i < allSeries.length; i++) {\n      var data = allSeries[i].getData(); // Only save the data that can have transition.\n      // Avoid large data costing too much extra memory\n\n      if (data.count() < DATA_COUNT_THRESHOLD) {\n        savedSeries.push(allSeries[i]);\n        savedDataGroupIds.push(allSeries[i].get('dataGroupId'));\n        savedData.push(data);\n      }\n    }\n  });\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { use } from './lib/extension.js';\nexport * from './lib/export/core.js'; // ----------------------------------------------\n// All of the modules that are allowed to be\n// imported are listed below.\n//\n// Users MUST NOT import other modules that are\n// not included in this list.\n// ----------------------------------------------\n\nimport { SVGRenderer, CanvasRenderer } from './lib/export/renderers.js';\nimport { LineChart, BarChart, PieChart, ScatterChart, RadarChart, MapChart, TreeChart, TreemapChart, GraphChart, GaugeChart, FunnelChart, ParallelChart, SankeyChart, BoxplotChart, CandlestickChart, EffectScatterChart, LinesChart, HeatmapChart, PictorialBarChart, ThemeRiverChart, SunburstChart, CustomChart } from './lib/export/charts.js';\nimport { GridComponent, PolarComponent, GeoComponent, SingleAxisComponent, ParallelComponent, CalendarComponent, GraphicComponent, ToolboxComponent, TooltipComponent, AxisPointerComponent, BrushComponent, TitleComponent, TimelineComponent, MarkPointComponent, MarkLineComponent, MarkAreaComponent, LegendComponent, DataZoomComponent, DataZoomInsideComponent, DataZoomSliderComponent, VisualMapComponent, VisualMapContinuousComponent, VisualMapPiecewiseComponent, AriaComponent, DatasetComponent, TransformComponent } from './lib/export/components.js';\nimport { UniversalTransition, LabelLayout } from './lib/export/features.js'; // -----------------\n// Render engines\n// -----------------\n// Render via Canvas.\n// echarts.init(dom, null, { renderer: 'canvas' })\n\nuse([CanvasRenderer]); // Render via SVG.\n// echarts.init(dom, null, { renderer: 'svg' })\n\nuse([SVGRenderer]); // ----------------\n// Charts (series)\n// ----------------\n// All of the series types, for example:\n// chart.setOption({\n//     series: [{\n//         type: 'line' // or 'bar', 'pie', ...\n//     }]\n// });\n\nuse([LineChart, BarChart, PieChart, ScatterChart, RadarChart, MapChart, TreeChart, TreemapChart, GraphChart, GaugeChart, FunnelChart, ParallelChart, SankeyChart, BoxplotChart, CandlestickChart, EffectScatterChart, LinesChart, HeatmapChart, PictorialBarChart, ThemeRiverChart, SunburstChart, CustomChart]); // -------------------\n// Coordinate systems\n// -------------------\n// All of the axis modules have been included in the\n// coordinate system module below, do not need to\n// make extra import.\n// `cartesian` coordinate system. For some historical\n// reasons, it is named as grid, for example:\n// chart.setOption({\n//     grid: {...},\n//     xAxis: {...},\n//     yAxis: {...},\n//     series: [{...}]\n// });\n\nuse(GridComponent); // `polar` coordinate system, for example:\n// chart.setOption({\n//     polar: {...},\n//     radiusAxis: {...},\n//     angleAxis: {...},\n//     series: [{\n//         coordinateSystem: 'polar'\n//     }]\n// });\n\nuse(PolarComponent); // `geo` coordinate system, for example:\n// chart.setOption({\n//     geo: {...},\n//     series: [{\n//         coordinateSystem: 'geo'\n//     }]\n// });\n\nuse(GeoComponent); // `singleAxis` coordinate system (notice, it is a coordinate system\n// with only one axis, work for chart like theme river), for example:\n// chart.setOption({\n//     singleAxis: {...}\n//     series: [{type: 'themeRiver', ...}]\n// });\n\nuse(SingleAxisComponent); // `parallel` coordinate system, only work for parallel series, for example:\n// chart.setOption({\n//     parallel: {...},\n//     parallelAxis: [{...}, ...],\n//     series: [{\n//         type: 'parallel'\n//     }]\n// });\n\nuse(ParallelComponent); // `calendar` coordinate system. for example,\n// chart.setOption({\n//     calendar: {...},\n//     series: [{\n//         coordinateSystem: 'calendar'\n//     }]\n// );\n\nuse(CalendarComponent); // ------------------\n// Other components\n// ------------------\n// `graphic` component, for example:\n// chart.setOption({\n//     graphic: {...}\n// });\n\nuse(GraphicComponent); // `toolbox` component, for example:\n// chart.setOption({\n//     toolbox: {...}\n// });\n\nuse(ToolboxComponent); // `tooltip` component, for example:\n// chart.setOption({\n//     tooltip: {...}\n// });\n\nuse(TooltipComponent); // `axisPointer` component, for example:\n// chart.setOption({\n//     tooltip: {axisPointer: {...}, ...}\n// });\n// Or\n// chart.setOption({\n//     axisPointer: {...}\n// });\n\nuse(AxisPointerComponent); // `brush` component, for example:\n// chart.setOption({\n//     brush: {...}\n// });\n// Or\n// chart.setOption({\n//     tooltip: {feature: {brush: {...}}\n// })\n\nuse(BrushComponent); // `title` component, for example:\n// chart.setOption({\n//     title: {...}\n// });\n\nuse(TitleComponent); // `timeline` component, for example:\n// chart.setOption({\n//     timeline: {...}\n// });\n\nuse(TimelineComponent); // `markPoint` component, for example:\n// chart.setOption({\n//     series: [{markPoint: {...}}]\n// });\n\nuse(MarkPointComponent); // `markLine` component, for example:\n// chart.setOption({\n//     series: [{markLine: {...}}]\n// });\n\nuse(MarkLineComponent); // `markArea` component, for example:\n// chart.setOption({\n//     series: [{markArea: {...}}]\n// });\n\nuse(MarkAreaComponent); // `legend` component not scrollable. for example:\n// chart.setOption({\n//     legend: {...}\n// });\n\nuse(LegendComponent); // `dataZoom` component including both `dataZoomInside` and `dataZoomSlider`.\n\nuse(DataZoomComponent); // `dataZoom` component providing drag, pinch, wheel behaviors\n// inside coordinate system, for example:\n// chart.setOption({\n//     dataZoom: {type: 'inside'}\n// });\n\nuse(DataZoomInsideComponent); // `dataZoom` component providing a slider bar, for example:\n// chart.setOption({\n//     dataZoom: {type: 'slider'}\n// });\n\nuse(DataZoomSliderComponent); // `visualMap` component including both `visualMapContinuous` and `visualMapPiecewise`.\n\nuse(VisualMapComponent); // `visualMap` component providing continuous bar, for example:\n// chart.setOption({\n//     visualMap: {type: 'continuous'}\n// });\n\nuse(VisualMapContinuousComponent); // `visualMap` component providing pieces bar, for example:\n// chart.setOption({\n//     visualMap: {type: 'piecewise'}\n// });\n\nuse(VisualMapPiecewiseComponent); // `aria` component providing aria, for example:\n// chart.setOption({\n//     aria: {...}\n// });\n\nuse(AriaComponent); // dataset transform\n// chart.setOption({\n//     dataset: {\n//          transform: []\n//     }\n// });\n\nuse(TransformComponent);\nuse(DatasetComponent); // universal transition\n// chart.setOption({\n//     series: {\n//         universalTransition: { enabled: true }\n//     }\n// })\n\nuse(UniversalTransition); // label layout\n// chart.setOption({\n//     series: {\n//         labelLayout: { hideOverlap: true }\n//     }\n// })\n\nuse(LabelLayout);","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport CanvasPainter from 'zrender/lib/canvas/Painter.js';\nexport function install(registers) {\n  registers.registerPainter('canvas', CanvasPainter);\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport SVGPainter from 'zrender/lib/svg/Painter.js';\nexport function install(registers) {\n  registers.registerPainter('svg', SVGPainter);\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport LineSeries from './LineSeries.js';\nimport LineView from './LineView.js'; // In case developer forget to include grid component\n\nimport layoutPoints from '../../layout/points.js';\nimport dataSample from '../../processor/dataSample.js';\nexport function install(registers) {\n  registers.registerChartView(LineView);\n  registers.registerSeriesModel(LineSeries);\n  registers.registerLayout(layoutPoints('line', true));\n  registers.registerVisual({\n    seriesType: 'line',\n    reset: function (seriesModel) {\n      var data = seriesModel.getData(); // Visual coding for legend\n\n      var lineStyle = seriesModel.getModel('lineStyle').getLineStyle();\n\n      if (lineStyle && !lineStyle.stroke) {\n        // Fill in visual should be palette color if\n        // has color callback\n        lineStyle.stroke = data.getVisual('style').fill;\n      }\n\n      data.setVisual('legendLineStyle', lineStyle);\n    }\n  }); // Down sample after filter\n\n  registers.registerProcessor(registers.PRIORITY.PROCESSOR.STATISTIC, dataSample('line'));\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport * as zrUtil from 'zrender/lib/core/util.js';\nimport { layout, createProgressiveLayout } from '../../layout/barGrid.js';\nimport dataSample from '../../processor/dataSample.js';\nimport BarSeries from './BarSeries.js';\nimport BarView from './BarView.js';\nexport function install(registers) {\n  registers.registerChartView(BarView);\n  registers.registerSeriesModel(BarSeries);\n  registers.registerLayout(registers.PRIORITY.VISUAL.LAYOUT, zrUtil.curry(layout, 'bar')); // Do layout after other overall layout, which can prepare some information.\n\n  registers.registerLayout(registers.PRIORITY.VISUAL.PROGRESSIVE_LAYOUT, createProgressiveLayout('bar')); // Down sample after filter\n\n  registers.registerProcessor(registers.PRIORITY.PROCESSOR.STATISTIC, dataSample('bar'));\n  /**\r\n   * @payload\r\n   * @property {string} [componentType=series]\r\n   * @property {number} [dx]\r\n   * @property {number} [dy]\r\n   * @property {number} [zoom]\r\n   * @property {number} [originX]\r\n   * @property {number} [originY]\r\n   */\n\n  registers.registerAction({\n    type: 'changeAxisOrder',\n    event: 'changeAxisOrder',\n    update: 'update'\n  }, function (payload, ecModel) {\n    var componentType = payload.componentType || 'series';\n    ecModel.eachComponent({\n      mainType: componentType,\n      query: payload\n    }, function (componentModel) {\n      if (payload.sortInfo) {\n        componentModel.axis.setCategorySortInfo(payload.sortInfo);\n      }\n    });\n  });\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { createLegacyDataSelectAction } from '../../legacy/dataSelectAction.js';\nimport pieLayout from '../pie/pieLayout.js';\nimport dataFilter from '../../processor/dataFilter.js';\nimport { curry } from 'zrender/lib/core/util.js';\nimport PieView from './PieView.js';\nimport PieSeriesModel from './PieSeries.js';\nimport negativeDataFilter from '../../processor/negativeDataFilter.js';\nexport function install(registers) {\n  registers.registerChartView(PieView);\n  registers.registerSeriesModel(PieSeriesModel);\n  createLegacyDataSelectAction('pie', registers.registerAction);\n  registers.registerLayout(curry(pieLayout, 'pie'));\n  registers.registerProcessor(dataFilter('pie'));\n  registers.registerProcessor(negativeDataFilter('pie'));\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { isNumber } from 'zrender/lib/core/util.js';\nexport default function negativeDataFilter(seriesType) {\n  return {\n    seriesType: seriesType,\n    reset: function (seriesModel, ecModel) {\n      var data = seriesModel.getData();\n      data.filterSelf(function (idx) {\n        // handle negative value condition\n        var valueDim = data.mapDimension('value');\n        var curValue = data.get(valueDim, idx);\n\n        if (isNumber(curValue) && !isNaN(curValue) && curValue < 0) {\n          return false;\n        }\n\n        return true;\n      });\n    }\n  };\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { use } from '../../extension.js';\nimport ScatterSeriesModel from './ScatterSeries.js';\nimport ScatterView from './ScatterView.js';\nimport { install as installGridSimple } from '../../component/grid/installSimple.js';\nimport layoutPoints from '../../layout/points.js';\nexport function install(registers) {\n  // In case developer forget to include grid component\n  use(installGridSimple);\n  registers.registerSeriesModel(ScatterSeriesModel);\n  registers.registerChartView(ScatterView);\n  registers.registerLayout(layoutPoints('scatter'));\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { use } from '../../extension.js';\nimport radarLayout from '../radar/radarLayout.js';\nimport dataFilter from '../../processor/dataFilter.js';\nimport backwardCompat from '../radar/backwardCompat.js';\nimport RadarView from './RadarView.js';\nimport RadarSeriesModel from './RadarSeries.js';\nimport { install as installRadarComponent } from '../../component/radar/install.js';\nexport function install(registers) {\n  use(installRadarComponent);\n  registers.registerChartView(RadarView);\n  registers.registerSeriesModel(RadarSeriesModel);\n  registers.registerLayout(radarLayout);\n  registers.registerProcessor(dataFilter('radar'));\n  registers.registerPreprocessor(backwardCompat);\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { use } from '../../extension.js';\nimport MapView from './MapView.js';\nimport MapSeries from './MapSeries.js';\nimport mapDataStatistic from './mapDataStatistic.js';\nimport mapSymbolLayout from './mapSymbolLayout.js';\nimport { createLegacyDataSelectAction } from '../../legacy/dataSelectAction.js';\nimport { install as installGeo } from '../../component/geo/install.js';\nexport function install(registers) {\n  use(installGeo);\n  registers.registerChartView(MapView);\n  registers.registerSeriesModel(MapSeries);\n  registers.registerLayout(mapSymbolLayout);\n  registers.registerProcessor(registers.PRIORITY.PROCESSOR.STATISTIC, mapDataStatistic);\n  createLegacyDataSelectAction('map', registers.registerAction);\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport TreeView from './TreeView.js';\nimport TreeSeriesModel from './TreeSeries.js';\nimport treeLayout from './treeLayout.js';\nimport treeVisual from './treeVisual.js';\nimport { installTreeAction } from './treeAction.js';\nexport function install(registers) {\n  registers.registerChartView(TreeView);\n  registers.registerSeriesModel(TreeSeriesModel);\n  registers.registerLayout(treeLayout);\n  registers.registerVisual(treeVisual);\n  installTreeAction(registers);\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { updateCenterAndZoom } from '../../action/roamHelper.js';\nexport function installTreeAction(registers) {\n  registers.registerAction({\n    type: 'treeExpandAndCollapse',\n    event: 'treeExpandAndCollapse',\n    update: 'update'\n  }, function (payload, ecModel) {\n    ecModel.eachComponent({\n      mainType: 'series',\n      subType: 'tree',\n      query: payload\n    }, function (seriesModel) {\n      var dataIndex = payload.dataIndex;\n      var tree = seriesModel.getData().tree;\n      var node = tree.getNodeByDataIndex(dataIndex);\n      node.isExpand = !node.isExpand;\n    });\n  });\n  registers.registerAction({\n    type: 'treeRoam',\n    event: 'treeRoam',\n    // Here we set 'none' instead of 'update', because roam action\n    // just need to update the transform matrix without having to recalculate\n    // the layout. So don't need to go through the whole update process, such\n    // as 'dataPrcocess', 'coordSystemUpdate', 'layout' and so on.\n    update: 'none'\n  }, function (payload, ecModel, api) {\n    ecModel.eachComponent({\n      mainType: 'series',\n      subType: 'tree',\n      query: payload\n    }, function (seriesModel) {\n      var coordSys = seriesModel.coordinateSystem;\n      var res = updateCenterAndZoom(coordSys, payload, undefined, api);\n      seriesModel.setCenter && seriesModel.setCenter(res.center);\n      seriesModel.setZoom && seriesModel.setZoom(res.zoom);\n    });\n  });\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { installTreemapAction } from './treemapAction.js';\nimport TreemapSeriesModel from './TreemapSeries.js';\nimport TreemapView from './TreemapView.js';\nimport treemapVisual from './treemapVisual.js';\nimport treemapLayout from './treemapLayout.js';\nexport function install(registers) {\n  registers.registerSeriesModel(TreemapSeriesModel);\n  registers.registerChartView(TreemapView);\n  registers.registerVisual(treemapVisual);\n  registers.registerLayout(treemapLayout);\n  installTreemapAction(registers);\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport GaugeView from './GaugeView.js';\nimport GaugeSeriesModel from './GaugeSeries.js';\nexport function install(registers) {\n  registers.registerChartView(GaugeView);\n  registers.registerSeriesModel(GaugeSeriesModel);\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport FunnelView from './FunnelView.js';\nimport FunnelSeriesModel from './FunnelSeries.js';\nimport funnelLayout from './funnelLayout.js';\nimport dataFilter from '../../processor/dataFilter.js';\nexport function install(registers) {\n  registers.registerChartView(FunnelView);\n  registers.registerSeriesModel(FunnelSeriesModel);\n  registers.registerLayout(funnelLayout);\n  registers.registerProcessor(dataFilter('funnel'));\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { use } from '../../extension.js';\nimport ParallelView from './ParallelView.js';\nimport ParallelSeriesModel from './ParallelSeries.js';\nimport parallelVisual from './parallelVisual.js';\nimport { install as installParallelComponent } from '../../component/parallel/install.js';\nexport function install(registers) {\n  use(installParallelComponent);\n  registers.registerChartView(ParallelView);\n  registers.registerSeriesModel(ParallelSeriesModel);\n  registers.registerVisual(registers.PRIORITY.VISUAL.BRUSH, parallelVisual);\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport SankeyView from './SankeyView.js';\nimport SankeySeriesModel from './SankeySeries.js';\nimport sankeyLayout from './sankeyLayout.js';\nimport sankeyVisual from './sankeyVisual.js';\nexport function install(registers) {\n  registers.registerChartView(SankeyView);\n  registers.registerSeriesModel(SankeySeriesModel);\n  registers.registerLayout(sankeyLayout);\n  registers.registerVisual(sankeyVisual);\n  registers.registerAction({\n    type: 'dragNode',\n    event: 'dragnode',\n    // here can only use 'update' now, other value is not support in echarts.\n    update: 'update'\n  }, function (payload, ecModel) {\n    ecModel.eachComponent({\n      mainType: 'series',\n      subType: 'sankey',\n      query: payload\n    }, function (seriesModel) {\n      seriesModel.setNodePosition(payload.dataIndex, [payload.localX, payload.localY]);\n    });\n  });\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport BoxplotSeriesModel from './BoxplotSeries.js';\nimport BoxplotView from './BoxplotView.js';\nimport boxplotLayout from './boxplotLayout.js';\nimport { boxplotTransform } from './boxplotTransform.js';\nexport function install(registers) {\n  registers.registerSeriesModel(BoxplotSeriesModel);\n  registers.registerChartView(BoxplotView);\n  registers.registerLayout(boxplotLayout);\n  registers.registerTransform(boxplotTransform);\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport CandlestickView from './CandlestickView.js';\nimport CandlestickSeriesModel from './CandlestickSeries.js';\nimport preprocessor from './preprocessor.js';\nimport candlestickVisual from './candlestickVisual.js';\nimport candlestickLayout from './candlestickLayout.js';\nexport function install(registers) {\n  registers.registerChartView(CandlestickView);\n  registers.registerSeriesModel(CandlestickSeriesModel);\n  registers.registerPreprocessor(preprocessor);\n  registers.registerVisual(candlestickVisual);\n  registers.registerLayout(candlestickLayout);\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport EffectScatterView from './EffectScatterView.js';\nimport EffectScatterSeriesModel from './EffectScatterSeries.js';\nimport layoutPoints from '../../layout/points.js';\nexport function install(registers) {\n  registers.registerChartView(EffectScatterView);\n  registers.registerSeriesModel(EffectScatterSeriesModel);\n  registers.registerLayout(layoutPoints('effectScatter'));\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport LinesView from './LinesView.js';\nimport LinesSeriesModel from './LinesSeries.js';\nimport linesLayout from './linesLayout.js';\nimport linesVisual from './linesVisual.js';\nexport function install(registers) {\n  registers.registerChartView(LinesView);\n  registers.registerSeriesModel(LinesSeriesModel);\n  registers.registerLayout(linesLayout);\n  registers.registerVisual(linesVisual);\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport HeatmapView from './HeatmapView.js';\nimport HeatmapSeriesModel from './HeatmapSeries.js';\nexport function install(registers) {\n  registers.registerChartView(HeatmapView);\n  registers.registerSeriesModel(HeatmapSeriesModel);\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport PictorialBarView from './PictorialBarView.js';\nimport PictorialBarSeriesModel from './PictorialBarSeries.js';\nimport { createProgressiveLayout, layout } from '../../layout/barGrid.js';\nimport { curry } from 'zrender/lib/core/util.js';\nexport function install(registers) {\n  registers.registerChartView(PictorialBarView);\n  registers.registerSeriesModel(PictorialBarSeriesModel);\n  registers.registerLayout(registers.PRIORITY.VISUAL.LAYOUT, curry(layout, 'pictorialBar')); // Do layout after other overall layout, which can prepare some information.\n\n  registers.registerLayout(registers.PRIORITY.VISUAL.PROGRESSIVE_LAYOUT, createProgressiveLayout('pictorialBar'));\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\nimport ThemeRiverView from './ThemeRiverView.js';\nimport ThemeRiverSeriesModel from './ThemeRiverSeries.js';\nimport themeRiverLayout from './themeRiverLayout.js';\nimport dataFilter from '../../processor/dataFilter.js';\nexport function install(registers) {\n  registers.registerChartView(ThemeRiverView);\n  registers.registerSeriesModel(ThemeRiverSeriesModel);\n  registers.registerLayout(themeRiverLayout);\n  registers.registerProcessor(dataFilter('themeRiver'));\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport SunburstView from './SunburstView.js';\nimport SunburstSeriesModel from './SunburstSeries.js';\nimport sunburstLayout from './sunburstLayout.js';\nimport sunburstVisual from './sunburstVisual.js';\nimport dataFilter from '../../processor/dataFilter.js';\nimport { curry } from 'zrender/lib/core/util.js';\nimport { installSunburstAction } from './sunburstAction.js';\nexport function install(registers) {\n  registers.registerChartView(SunburstView);\n  registers.registerSeriesModel(SunburstSeriesModel);\n  registers.registerLayout(curry(sunburstLayout, 'sunburst'));\n  registers.registerProcessor(curry(dataFilter, 'sunburst'));\n  registers.registerVisual(sunburstVisual);\n  installSunburstAction(registers);\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport CustomSeriesModel from './CustomSeries.js';\nimport CustomChartView from './CustomView.js';\nexport function install(registers) {\n  registers.registerChartView(CustomChartView);\n  registers.registerSeriesModel(CustomSeriesModel);\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { install as installSimple } from './installSimple.js';\nimport { install as installAxisPointer } from '../axisPointer/install.js';\nimport { use } from '../../extension.js';\nexport function install(registers) {\n  use(installSimple);\n  use(installAxisPointer);\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport CalendarModel from '../../coord/calendar/CalendarModel.js';\nimport CalendarView from './CalendarView.js';\nimport Calendar from '../../coord/calendar/Calendar.js';\nexport function install(registers) {\n  registers.registerComponentModel(CalendarModel);\n  registers.registerComponentView(CalendarView);\n  registers.registerCoordinateSystem('calendar', Calendar);\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { isArray } from 'zrender/lib/core/util.js';\nimport { GraphicComponentModel } from './GraphicModel.js';\nimport { GraphicComponentView } from './GraphicView.js';\nexport function install(registers) {\n  registers.registerComponentModel(GraphicComponentModel);\n  registers.registerComponentView(GraphicComponentView);\n  registers.registerPreprocessor(function (option) {\n    var graphicOption = option.graphic; // Convert\n    // {graphic: [{left: 10, type: 'circle'}, ...]}\n    // or\n    // {graphic: {left: 10, type: 'circle'}}\n    // to\n    // {graphic: [{elements: [{left: 10, type: 'circle'}, ...]}]}\n\n    if (isArray(graphicOption)) {\n      if (!graphicOption[0] || !graphicOption[0].elements) {\n        option.graphic = [{\n          elements: graphicOption\n        }];\n      } else {\n        // Only one graphic instance can be instantiated. (We don't\n        // want that too many views are created in echarts._viewMap.)\n        option.graphic = [option.graphic[0]];\n      }\n    } else if (graphicOption && !graphicOption.elements) {\n      option.graphic = [{\n        elements: [graphicOption]\n      }];\n    }\n  });\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { use } from '../../extension.js';\nimport { install as installDataZoomSelect } from '../../component/dataZoom/installDataZoomSelect.js';\nimport ToolboxModel from './ToolboxModel.js';\nimport ToolboxView from './ToolboxView.js'; // TODOD: REGISTER IN INSTALL\n\nimport { registerFeature } from './featureManager.js';\nimport SaveAsImage from './feature/SaveAsImage.js';\nimport MagicType from './feature/MagicType.js';\nimport DataView from './feature/DataView.js';\nimport Restore from './feature/Restore.js';\nimport DataZoom from './feature/DataZoom.js';\nexport function install(registers) {\n  registers.registerComponentModel(ToolboxModel);\n  registers.registerComponentView(ToolboxView);\n  registerFeature('saveAsImage', SaveAsImage);\n  registerFeature('magicType', MagicType);\n  registerFeature('dataView', DataView);\n  registerFeature('dataZoom', DataZoom);\n  registerFeature('restore', Restore);\n  use(installDataZoomSelect);\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { install as installAxisPointer } from '../axisPointer/install.js';\nimport { use } from '../../extension.js';\nimport TooltipModel from './TooltipModel.js';\nimport TooltipView from './TooltipView.js';\nimport { noop } from 'zrender/lib/core/util.js';\nexport function install(registers) {\n  use(installAxisPointer);\n  registers.registerComponentModel(TooltipModel);\n  registers.registerComponentView(TooltipView);\n  /**\r\n   * @action\r\n   * @property {string} type\r\n   * @property {number} seriesIndex\r\n   * @property {number} dataIndex\r\n   * @property {number} [x]\r\n   * @property {number} [y]\r\n   */\n\n  registers.registerAction({\n    type: 'showTip',\n    event: 'showTip',\n    update: 'tooltip:manuallyShowTip'\n  }, noop);\n  registers.registerAction({\n    type: 'hideTip',\n    event: 'hideTip',\n    update: 'tooltip:manuallyHideTip'\n  }, noop);\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport brushPreprocessor from './preprocessor.js';\nimport BrushView from './BrushView.js';\nimport BrushModel from './BrushModel.js';\nimport brushVisual from './visualEncoding.js'; // TODO\n\nimport BrushFeature from '../toolbox/feature/Brush.js';\nimport { registerFeature } from '../toolbox/featureManager.js';\nimport { noop } from 'zrender/lib/core/util.js';\nexport function install(registers) {\n  registers.registerComponentView(BrushView);\n  registers.registerComponentModel(BrushModel);\n  registers.registerPreprocessor(brushPreprocessor);\n  registers.registerVisual(registers.PRIORITY.VISUAL.BRUSH, brushVisual);\n  registers.registerAction({\n    type: 'brush',\n    event: 'brush',\n    update: 'updateVisual'\n  }, function (payload, ecModel) {\n    ecModel.eachComponent({\n      mainType: 'brush',\n      query: payload\n    }, function (brushModel) {\n      brushModel.setAreas(payload.areas);\n    });\n  });\n  /**\r\n   * payload: {\r\n   *      brushComponents: [\r\n   *          {\r\n   *              brushId,\r\n   *              brushIndex,\r\n   *              brushName,\r\n   *              series: [\r\n   *                  {\r\n   *                      seriesId,\r\n   *                      seriesIndex,\r\n   *                      seriesName,\r\n   *                      rawIndices: [21, 34, ...]\r\n   *                  },\r\n   *                  ...\r\n   *              ]\r\n   *          },\r\n   *          ...\r\n   *      ]\r\n   * }\r\n   */\n\n  registers.registerAction({\n    type: 'brushSelect',\n    event: 'brushSelected',\n    update: 'none'\n  }, noop);\n  registers.registerAction({\n    type: 'brushEnd',\n    event: 'brushEnd',\n    update: 'none'\n  }, noop);\n  registerFeature('brush', BrushFeature);\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\nimport SliderTimelineModel from './SliderTimelineModel.js';\nimport SliderTimelineView from './SliderTimelineView.js';\nimport { installTimelineAction } from './timelineAction.js';\nimport preprocessor from './preprocessor.js';\nexport function install(registers) {\n  registers.registerComponentModel(SliderTimelineModel);\n  registers.registerComponentView(SliderTimelineView);\n  registers.registerSubTypeDefaulter('timeline', function () {\n    // Only slider now.\n    return 'slider';\n  });\n  installTimelineAction(registers);\n  registers.registerPreprocessor(preprocessor);\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { defaults } from 'zrender/lib/core/util.js';\nexport function installTimelineAction(registers) {\n  registers.registerAction({\n    type: 'timelineChange',\n    event: 'timelineChanged',\n    update: 'prepareAndUpdate'\n  }, function (payload, ecModel, api) {\n    var timelineModel = ecModel.getComponent('timeline');\n\n    if (timelineModel && payload.currentIndex != null) {\n      timelineModel.setCurrentIndex(payload.currentIndex);\n\n      if (!timelineModel.get('loop', true) && timelineModel.isIndexMax() && timelineModel.getPlayState()) {\n        timelineModel.setPlayState(false); // The timeline has played to the end, trigger event\n\n        api.dispatchAction({\n          type: 'timelinePlayChange',\n          playState: false,\n          from: payload.from\n        });\n      }\n    } // Set normalized currentIndex to payload.\n\n\n    ecModel.resetOption('timeline', {\n      replaceMerge: timelineModel.get('replaceMerge', true)\n    });\n    return defaults({\n      currentIndex: timelineModel.option.currentIndex\n    }, payload);\n  });\n  registers.registerAction({\n    type: 'timelinePlayChange',\n    event: 'timelinePlayChanged',\n    update: 'update'\n  }, function (payload, ecModel) {\n    var timelineModel = ecModel.getComponent('timeline');\n\n    if (timelineModel && payload.playState != null) {\n      timelineModel.setPlayState(payload.playState);\n    }\n  });\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\nimport checkMarkerInSeries from './checkMarkerInSeries.js';\nimport MarkPointModel from './MarkPointModel.js';\nimport MarkPointView from './MarkPointView.js';\nexport function install(registers) {\n  registers.registerComponentModel(MarkPointModel);\n  registers.registerComponentView(MarkPointView);\n  registers.registerPreprocessor(function (opt) {\n    if (checkMarkerInSeries(opt.series, 'markPoint')) {\n      // Make sure markPoint component is enabled\n      opt.markPoint = opt.markPoint || {};\n    }\n  });\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\nimport checkMarkerInSeries from './checkMarkerInSeries.js';\nimport MarkLineModel from './MarkLineModel.js';\nimport MarkLineView from './MarkLineView.js';\nexport function install(registers) {\n  registers.registerComponentModel(MarkLineModel);\n  registers.registerComponentView(MarkLineView);\n  registers.registerPreprocessor(function (opt) {\n    if (checkMarkerInSeries(opt.series, 'markLine')) {\n      // Make sure markLine component is enabled\n      opt.markLine = opt.markLine || {};\n    }\n  });\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport checkMarkerInSeries from './checkMarkerInSeries.js';\nimport MarkAreaModel from './MarkAreaModel.js';\nimport MarkAreaView from './MarkAreaView.js';\nexport function install(registers) {\n  registers.registerComponentModel(MarkAreaModel);\n  registers.registerComponentView(MarkAreaView);\n  registers.registerPreprocessor(function (opt) {\n    if (checkMarkerInSeries(opt.series, 'markArea')) {\n      // Make sure markArea component is enabled\n      opt.markArea = opt.markArea || {};\n    }\n  });\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { use } from '../../extension.js';\nimport { install as installLegendPlain } from './installLegendPlain.js';\nimport { install as installLegendScroll } from './installLegendScroll.js';\nexport function install(registers) {\n  use(installLegendPlain);\n  use(installLegendScroll);\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { use } from '../../extension.js';\nimport { install as installDataZoomInside } from './installDataZoomInside.js';\nimport { install as installDataZoomSlider } from './installDataZoomSlider.js';\nexport function install(registers) {\n  use(installDataZoomInside);\n  use(installDataZoomSlider); // Do not install './dataZoomSelect',\n  // since it only work for toolbox dataZoom.\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { use } from '../../extension.js';\nimport { install as installVisualMapContinuous } from './installVisualMapContinuous.js';\nimport { install as installVisualMapPiecewise } from './installVisualMapPiecewise.js';\nexport function install(registers) {\n  use(installVisualMapContinuous);\n  use(installVisualMapPiecewise); // Do not install './dataZoomSelect',\n  // since it only work for toolbox dataZoom.\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport ariaVisual from '../../visual/aria.js';\nimport ariaPreprocessor from './preprocessor.js';\nexport function install(registers) {\n  registers.registerPreprocessor(ariaPreprocessor);\n  registers.registerVisual(registers.PRIORITY.VISUAL.ARIA, ariaVisual);\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  You may obtain a copy of the License at\n*\n*   http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements.  See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership.  The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License.  You may obtain a copy of the License at\r\n*\r\n*   http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied.  See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { filterTransform } from './filterTransform.js';\nimport { sortTransform } from './sortTransform.js';\nexport function install(registers) {\n  registers.registerTransform(filterTransform);\n  registers.registerTransform(sortTransform);\n}","'use strict';\n\nvar has = Object.prototype.hasOwnProperty\n  , prefix = '~';\n\n/**\n * Constructor to create a storage for our `EE` objects.\n * An `Events` instance is a plain object whose properties are event names.\n *\n * @constructor\n * @private\n */\nfunction Events() {}\n\n//\n// We try to not inherit from `Object.prototype`. In some engines creating an\n// instance in this way is faster than calling `Object.create(null)` directly.\n// If `Object.create(null)` is not supported we prefix the event names with a\n// character to make sure that the built-in object properties are not\n// overridden or used as an attack vector.\n//\nif (Object.create) {\n  Events.prototype = Object.create(null);\n\n  //\n  // This hack is needed because the `__proto__` property is still inherited in\n  // some old browsers like Android 4, iPhone 5.1, Opera 11 and Safari 5.\n  //\n  if (!new Events().__proto__) prefix = false;\n}\n\n/**\n * Representation of a single event listener.\n *\n * @param {Function} fn The listener function.\n * @param {*} context The context to invoke the listener with.\n * @param {Boolean} [once=false] Specify if the listener is a one-time listener.\n * @constructor\n * @private\n */\nfunction EE(fn, context, once) {\n  this.fn = fn;\n  this.context = context;\n  this.once = once || false;\n}\n\n/**\n * Add a listener for a given event.\n *\n * @param {EventEmitter} emitter Reference to the `EventEmitter` instance.\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} context The context to invoke the listener with.\n * @param {Boolean} once Specify if the listener is a one-time listener.\n * @returns {EventEmitter}\n * @private\n */\nfunction addListener(emitter, event, fn, context, once) {\n  if (typeof fn !== 'function') {\n    throw new TypeError('The listener must be a function');\n  }\n\n  var listener = new EE(fn, context || emitter, once)\n    , evt = prefix ? prefix + event : event;\n\n  if (!emitter._events[evt]) emitter._events[evt] = listener, emitter._eventsCount++;\n  else if (!emitter._events[evt].fn) emitter._events[evt].push(listener);\n  else emitter._events[evt] = [emitter._events[evt], listener];\n\n  return emitter;\n}\n\n/**\n * Clear event by name.\n *\n * @param {EventEmitter} emitter Reference to the `EventEmitter` instance.\n * @param {(String|Symbol)} evt The Event name.\n * @private\n */\nfunction clearEvent(emitter, evt) {\n  if (--emitter._eventsCount === 0) emitter._events = new Events();\n  else delete emitter._events[evt];\n}\n\n/**\n * Minimal `EventEmitter` interface that is molded against the Node.js\n * `EventEmitter` interface.\n *\n * @constructor\n * @public\n */\nfunction EventEmitter() {\n  this._events = new Events();\n  this._eventsCount = 0;\n}\n\n/**\n * Return an array listing the events for which the emitter has registered\n * listeners.\n *\n * @returns {Array}\n * @public\n */\nEventEmitter.prototype.eventNames = function eventNames() {\n  var names = []\n    , events\n    , name;\n\n  if (this._eventsCount === 0) return names;\n\n  for (name in (events = this._events)) {\n    if (has.call(events, name)) names.push(prefix ? name.slice(1) : name);\n  }\n\n  if (Object.getOwnPropertySymbols) {\n    return names.concat(Object.getOwnPropertySymbols(events));\n  }\n\n  return names;\n};\n\n/**\n * Return the listeners registered for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Array} The registered listeners.\n * @public\n */\nEventEmitter.prototype.listeners = function listeners(event) {\n  var evt = prefix ? prefix + event : event\n    , handlers = this._events[evt];\n\n  if (!handlers) return [];\n  if (handlers.fn) return [handlers.fn];\n\n  for (var i = 0, l = handlers.length, ee = new Array(l); i < l; i++) {\n    ee[i] = handlers[i].fn;\n  }\n\n  return ee;\n};\n\n/**\n * Return the number of listeners listening to a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Number} The number of listeners.\n * @public\n */\nEventEmitter.prototype.listenerCount = function listenerCount(event) {\n  var evt = prefix ? prefix + event : event\n    , listeners = this._events[evt];\n\n  if (!listeners) return 0;\n  if (listeners.fn) return 1;\n  return listeners.length;\n};\n\n/**\n * Calls each of the listeners registered for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Boolean} `true` if the event had listeners, else `false`.\n * @public\n */\nEventEmitter.prototype.emit = function emit(event, a1, a2, a3, a4, a5) {\n  var evt = prefix ? prefix + event : event;\n\n  if (!this._events[evt]) return false;\n\n  var listeners = this._events[evt]\n    , len = arguments.length\n    , args\n    , i;\n\n  if (listeners.fn) {\n    if (listeners.once) this.removeListener(event, listeners.fn, undefined, true);\n\n    switch (len) {\n      case 1: return listeners.fn.call(listeners.context), true;\n      case 2: return listeners.fn.call(listeners.context, a1), true;\n      case 3: return listeners.fn.call(listeners.context, a1, a2), true;\n      case 4: return listeners.fn.call(listeners.context, a1, a2, a3), true;\n      case 5: return listeners.fn.call(listeners.context, a1, a2, a3, a4), true;\n      case 6: return listeners.fn.call(listeners.context, a1, a2, a3, a4, a5), true;\n    }\n\n    for (i = 1, args = new Array(len -1); i < len; i++) {\n      args[i - 1] = arguments[i];\n    }\n\n    listeners.fn.apply(listeners.context, args);\n  } else {\n    var length = listeners.length\n      , j;\n\n    for (i = 0; i < length; i++) {\n      if (listeners[i].once) this.removeListener(event, listeners[i].fn, undefined, true);\n\n      switch (len) {\n        case 1: listeners[i].fn.call(listeners[i].context); break;\n        case 2: listeners[i].fn.call(listeners[i].context, a1); break;\n        case 3: listeners[i].fn.call(listeners[i].context, a1, a2); break;\n        case 4: listeners[i].fn.call(listeners[i].context, a1, a2, a3); break;\n        default:\n          if (!args) for (j = 1, args = new Array(len -1); j < len; j++) {\n            args[j - 1] = arguments[j];\n          }\n\n          listeners[i].fn.apply(listeners[i].context, args);\n      }\n    }\n  }\n\n  return true;\n};\n\n/**\n * Add a listener for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.on = function on(event, fn, context) {\n  return addListener(this, event, fn, context, false);\n};\n\n/**\n * Add a one-time listener for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.once = function once(event, fn, context) {\n  return addListener(this, event, fn, context, true);\n};\n\n/**\n * Remove the listeners of a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn Only remove the listeners that match this function.\n * @param {*} context Only remove the listeners that have this context.\n * @param {Boolean} once Only remove one-time listeners.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.removeListener = function removeListener(event, fn, context, once) {\n  var evt = prefix ? prefix + event : event;\n\n  if (!this._events[evt]) return this;\n  if (!fn) {\n    clearEvent(this, evt);\n    return this;\n  }\n\n  var listeners = this._events[evt];\n\n  if (listeners.fn) {\n    if (\n      listeners.fn === fn &&\n      (!once || listeners.once) &&\n      (!context || listeners.context === context)\n    ) {\n      clearEvent(this, evt);\n    }\n  } else {\n    for (var i = 0, events = [], length = listeners.length; i < length; i++) {\n      if (\n        listeners[i].fn !== fn ||\n        (once && !listeners[i].once) ||\n        (context && listeners[i].context !== context)\n      ) {\n        events.push(listeners[i]);\n      }\n    }\n\n    //\n    // Reset the array, or remove it completely if we have no more listeners.\n    //\n    if (events.length) this._events[evt] = events.length === 1 ? events[0] : events;\n    else clearEvent(this, evt);\n  }\n\n  return this;\n};\n\n/**\n * Remove all listeners, or those of the specified event.\n *\n * @param {(String|Symbol)} [event] The event name.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.removeAllListeners = function removeAllListeners(event) {\n  var evt;\n\n  if (event) {\n    evt = prefix ? prefix + event : event;\n    if (this._events[evt]) clearEvent(this, evt);\n  } else {\n    this._events = new Events();\n    this._eventsCount = 0;\n  }\n\n  return this;\n};\n\n//\n// Alias methods names because people roll like that.\n//\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\nEventEmitter.prototype.addListener = EventEmitter.prototype.on;\n\n//\n// Expose the prefix.\n//\nEventEmitter.prefixed = prefix;\n\n//\n// Allow `EventEmitter` to be imported as module namespace.\n//\nEventEmitter.EventEmitter = EventEmitter;\n\n//\n// Expose the module.\n//\nif ('undefined' !== typeof module) {\n  module.exports = EventEmitter;\n}\n","/*!\n  Copyright (c) 2015 Jed Watson.\n  Based on code that is Copyright 2013-2015, Facebook, Inc.\n  All rights reserved.\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar canUseDOM = !!(\n\t\ttypeof window !== 'undefined' &&\n\t\twindow.document &&\n\t\twindow.document.createElement\n\t);\n\n\tvar ExecutionEnvironment = {\n\n\t\tcanUseDOM: canUseDOM,\n\n\t\tcanUseWorkers: typeof Worker !== 'undefined',\n\n\t\tcanUseEventListeners:\n\t\t\tcanUseDOM && !!(window.addEventListener || window.attachEvent),\n\n\t\tcanUseViewport: canUseDOM && !!window.screen\n\n\t};\n\n\tif (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\tdefine(function () {\n\t\t\treturn ExecutionEnvironment;\n\t\t});\n\t} else if (typeof module !== 'undefined' && module.exports) {\n\t\tmodule.exports = ExecutionEnvironment;\n\t} else {\n\t\twindow.ExecutionEnvironment = ExecutionEnvironment;\n\t}\n\n}());\n","'use strict';\n\n// do not edit .js files directly - edit src/index.jst\n\n\n\nmodule.exports = function equal(a, b) {\n  if (a === b) return true;\n\n  if (a && b && typeof a == 'object' && typeof b == 'object') {\n    if (a.constructor !== b.constructor) return false;\n\n    var length, i, keys;\n    if (Array.isArray(a)) {\n      length = a.length;\n      if (length != b.length) return false;\n      for (i = length; i-- !== 0;)\n        if (!equal(a[i], b[i])) return false;\n      return true;\n    }\n\n\n\n    if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags;\n    if (a.valueOf !== Object.prototype.valueOf) return a.valueOf() === b.valueOf();\n    if (a.toString !== Object.prototype.toString) return a.toString() === b.toString();\n\n    keys = Object.keys(a);\n    length = keys.length;\n    if (length !== Object.keys(b).length) return false;\n\n    for (i = length; i-- !== 0;)\n      if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\n\n    for (i = length; i-- !== 0;) {\n      var key = keys[i];\n\n      if (!equal(a[key], b[key])) return false;\n    }\n\n    return true;\n  }\n\n  // true if both NaN, false otherwise\n  return a!==a && b!==b;\n};\n","'use strict';\n\nconst validator = require('./validator');\nconst XMLParser = require('./xmlparser/XMLParser');\nconst XMLBuilder = require('./xmlbuilder/json2xml');\n\nmodule.exports = {\n  XMLParser: XMLParser,\n  XMLValidator: validator,\n  XMLBuilder: XMLBuilder\n}","'use strict';\n\nconst nameStartChar = ':A-Za-z_\\\\u00C0-\\\\u00D6\\\\u00D8-\\\\u00F6\\\\u00F8-\\\\u02FF\\\\u0370-\\\\u037D\\\\u037F-\\\\u1FFF\\\\u200C-\\\\u200D\\\\u2070-\\\\u218F\\\\u2C00-\\\\u2FEF\\\\u3001-\\\\uD7FF\\\\uF900-\\\\uFDCF\\\\uFDF0-\\\\uFFFD';\nconst nameChar = nameStartChar + '\\\\-.\\\\d\\\\u00B7\\\\u0300-\\\\u036F\\\\u203F-\\\\u2040';\nconst nameRegexp = '[' + nameStartChar + '][' + nameChar + ']*'\nconst regexName = new RegExp('^' + nameRegexp + '$');\n\nconst getAllMatches = function(string, regex) {\n  const matches = [];\n  let match = regex.exec(string);\n  while (match) {\n    const allmatches = [];\n    allmatches.startIndex = regex.lastIndex - match[0].length;\n    const len = match.length;\n    for (let index = 0; index < len; index++) {\n      allmatches.push(match[index]);\n    }\n    matches.push(allmatches);\n    match = regex.exec(string);\n  }\n  return matches;\n};\n\nconst isName = function(string) {\n  const match = regexName.exec(string);\n  return !(match === null || typeof match === 'undefined');\n};\n\nexports.isExist = function(v) {\n  return typeof v !== 'undefined';\n};\n\nexports.isEmptyObject = function(obj) {\n  return Object.keys(obj).length === 0;\n};\n\n/**\n * Copy all the properties of a into b.\n * @param {*} target\n * @param {*} a\n */\nexports.merge = function(target, a, arrayMode) {\n  if (a) {\n    const keys = Object.keys(a); // will return an array of own properties\n    const len = keys.length; //don't make it inline\n    for (let i = 0; i < len; i++) {\n      if (arrayMode === 'strict') {\n        target[keys[i]] = [ a[keys[i]] ];\n      } else {\n        target[keys[i]] = a[keys[i]];\n      }\n    }\n  }\n};\n/* exports.merge =function (b,a){\n  return Object.assign(b,a);\n} */\n\nexports.getValue = function(v) {\n  if (exports.isExist(v)) {\n    return v;\n  } else {\n    return '';\n  }\n};\n\n// const fakeCall = function(a) {return a;};\n// const fakeCallNoReturn = function() {};\n\nexports.isName = isName;\nexports.getAllMatches = getAllMatches;\nexports.nameRegexp = nameRegexp;\n","'use strict';\n\nconst util = require('./util');\n\nconst defaultOptions = {\n  allowBooleanAttributes: false, //A tag can have attributes without any value\n  unpairedTags: []\n};\n\n//const tagsPattern = new RegExp(\"<\\\\/?([\\\\w:\\\\-_\\.]+)\\\\s*\\/?>\",\"g\");\nexports.validate = function (xmlData, options) {\n  options = Object.assign({}, defaultOptions, options);\n\n  //xmlData = xmlData.replace(/(\\r\\n|\\n|\\r)/gm,\"\");//make it single line\n  //xmlData = xmlData.replace(/(^\\s*<\\?xml.*?\\?>)/g,\"\");//Remove XML starting tag\n  //xmlData = xmlData.replace(/(<!DOCTYPE[\\s\\w\\\"\\.\\/\\-\\:]+(\\[.*\\])*\\s*>)/g,\"\");//Remove DOCTYPE\n  const tags = [];\n  let tagFound = false;\n\n  //indicates that the root tag has been closed (aka. depth 0 has been reached)\n  let reachedRoot = false;\n\n  if (xmlData[0] === '\\ufeff') {\n    // check for byte order mark (BOM)\n    xmlData = xmlData.substr(1);\n  }\n  \n  for (let i = 0; i < xmlData.length; i++) {\n\n    if (xmlData[i] === '<' && xmlData[i+1] === '?') {\n      i+=2;\n      i = readPI(xmlData,i);\n      if (i.err) return i;\n    }else if (xmlData[i] === '<') {\n      //starting of tag\n      //read until you reach to '>' avoiding any '>' in attribute value\n      let tagStartPos = i;\n      i++;\n      \n      if (xmlData[i] === '!') {\n        i = readCommentAndCDATA(xmlData, i);\n        continue;\n      } else {\n        let closingTag = false;\n        if (xmlData[i] === '/') {\n          //closing tag\n          closingTag = true;\n          i++;\n        }\n        //read tagname\n        let tagName = '';\n        for (; i < xmlData.length &&\n          xmlData[i] !== '>' &&\n          xmlData[i] !== ' ' &&\n          xmlData[i] !== '\\t' &&\n          xmlData[i] !== '\\n' &&\n          xmlData[i] !== '\\r'; i++\n        ) {\n          tagName += xmlData[i];\n        }\n        tagName = tagName.trim();\n        //console.log(tagName);\n\n        if (tagName[tagName.length - 1] === '/') {\n          //self closing tag without attributes\n          tagName = tagName.substring(0, tagName.length - 1);\n          //continue;\n          i--;\n        }\n        if (!validateTagName(tagName)) {\n          let msg;\n          if (tagName.trim().length === 0) {\n            msg = \"Invalid space after '<'.\";\n          } else {\n            msg = \"Tag '\"+tagName+\"' is an invalid name.\";\n          }\n          return getErrorObject('InvalidTag', msg, getLineNumberForPosition(xmlData, i));\n        }\n\n        const result = readAttributeStr(xmlData, i);\n        if (result === false) {\n          return getErrorObject('InvalidAttr', \"Attributes for '\"+tagName+\"' have open quote.\", getLineNumberForPosition(xmlData, i));\n        }\n        let attrStr = result.value;\n        i = result.index;\n\n        if (attrStr[attrStr.length - 1] === '/') {\n          //self closing tag\n          const attrStrStart = i - attrStr.length;\n          attrStr = attrStr.substring(0, attrStr.length - 1);\n          const isValid = validateAttributeString(attrStr, options);\n          if (isValid === true) {\n            tagFound = true;\n            //continue; //text may presents after self closing tag\n          } else {\n            //the result from the nested function returns the position of the error within the attribute\n            //in order to get the 'true' error line, we need to calculate the position where the attribute begins (i - attrStr.length) and then add the position within the attribute\n            //this gives us the absolute index in the entire xml, which we can use to find the line at last\n            return getErrorObject(isValid.err.code, isValid.err.msg, getLineNumberForPosition(xmlData, attrStrStart + isValid.err.line));\n          }\n        } else if (closingTag) {\n          if (!result.tagClosed) {\n            return getErrorObject('InvalidTag', \"Closing tag '\"+tagName+\"' doesn't have proper closing.\", getLineNumberForPosition(xmlData, i));\n          } else if (attrStr.trim().length > 0) {\n            return getErrorObject('InvalidTag', \"Closing tag '\"+tagName+\"' can't have attributes or invalid starting.\", getLineNumberForPosition(xmlData, tagStartPos));\n          } else if (tags.length === 0) {\n            return getErrorObject('InvalidTag', \"Closing tag '\"+tagName+\"' has not been opened.\", getLineNumberForPosition(xmlData, tagStartPos));\n          } else {\n            const otg = tags.pop();\n            if (tagName !== otg.tagName) {\n              let openPos = getLineNumberForPosition(xmlData, otg.tagStartPos);\n              return getErrorObject('InvalidTag',\n                \"Expected closing tag '\"+otg.tagName+\"' (opened in line \"+openPos.line+\", col \"+openPos.col+\") instead of closing tag '\"+tagName+\"'.\",\n                getLineNumberForPosition(xmlData, tagStartPos));\n            }\n\n            //when there are no more tags, we reached the root level.\n            if (tags.length == 0) {\n              reachedRoot = true;\n            }\n          }\n        } else {\n          const isValid = validateAttributeString(attrStr, options);\n          if (isValid !== true) {\n            //the result from the nested function returns the position of the error within the attribute\n            //in order to get the 'true' error line, we need to calculate the position where the attribute begins (i - attrStr.length) and then add the position within the attribute\n            //this gives us the absolute index in the entire xml, which we can use to find the line at last\n            return getErrorObject(isValid.err.code, isValid.err.msg, getLineNumberForPosition(xmlData, i - attrStr.length + isValid.err.line));\n          }\n\n          //if the root level has been reached before ...\n          if (reachedRoot === true) {\n            return getErrorObject('InvalidXml', 'Multiple possible root nodes found.', getLineNumberForPosition(xmlData, i));\n          } else if(options.unpairedTags.indexOf(tagName) !== -1){\n            //don't push into stack\n          } else {\n            tags.push({tagName, tagStartPos});\n          }\n          tagFound = true;\n        }\n\n        //skip tag text value\n        //It may include comments and CDATA value\n        for (i++; i < xmlData.length; i++) {\n          if (xmlData[i] === '<') {\n            if (xmlData[i + 1] === '!') {\n              //comment or CADATA\n              i++;\n              i = readCommentAndCDATA(xmlData, i);\n              continue;\n            } else if (xmlData[i+1] === '?') {\n              i = readPI(xmlData, ++i);\n              if (i.err) return i;\n            } else{\n              break;\n            }\n          } else if (xmlData[i] === '&') {\n            const afterAmp = validateAmpersand(xmlData, i);\n            if (afterAmp == -1)\n              return getErrorObject('InvalidChar', \"char '&' is not expected.\", getLineNumberForPosition(xmlData, i));\n            i = afterAmp;\n          }else{\n            if (reachedRoot === true && !isWhiteSpace(xmlData[i])) {\n              return getErrorObject('InvalidXml', \"Extra text at the end\", getLineNumberForPosition(xmlData, i));\n            }\n          }\n        } //end of reading tag text value\n        if (xmlData[i] === '<') {\n          i--;\n        }\n      }\n    } else {\n      if ( isWhiteSpace(xmlData[i])) {\n        continue;\n      }\n      return getErrorObject('InvalidChar', \"char '\"+xmlData[i]+\"' is not expected.\", getLineNumberForPosition(xmlData, i));\n    }\n  }\n\n  if (!tagFound) {\n    return getErrorObject('InvalidXml', 'Start tag expected.', 1);\n  }else if (tags.length == 1) {\n      return getErrorObject('InvalidTag', \"Unclosed tag '\"+tags[0].tagName+\"'.\", getLineNumberForPosition(xmlData, tags[0].tagStartPos));\n  }else if (tags.length > 0) {\n      return getErrorObject('InvalidXml', \"Invalid '\"+\n          JSON.stringify(tags.map(t => t.tagName), null, 4).replace(/\\r?\\n/g, '')+\n          \"' found.\", {line: 1, col: 1});\n  }\n\n  return true;\n};\n\nfunction isWhiteSpace(char){\n  return char === ' ' || char === '\\t' || char === '\\n'  || char === '\\r';\n}\n/**\n * Read Processing insstructions and skip\n * @param {*} xmlData\n * @param {*} i\n */\nfunction readPI(xmlData, i) {\n  const start = i;\n  for (; i < xmlData.length; i++) {\n    if (xmlData[i] == '?' || xmlData[i] == ' ') {\n      //tagname\n      const tagname = xmlData.substr(start, i - start);\n      if (i > 5 && tagname === 'xml') {\n        return getErrorObject('InvalidXml', 'XML declaration allowed only at the start of the document.', getLineNumberForPosition(xmlData, i));\n      } else if (xmlData[i] == '?' && xmlData[i + 1] == '>') {\n        //check if valid attribut string\n        i++;\n        break;\n      } else {\n        continue;\n      }\n    }\n  }\n  return i;\n}\n\nfunction readCommentAndCDATA(xmlData, i) {\n  if (xmlData.length > i + 5 && xmlData[i + 1] === '-' && xmlData[i + 2] === '-') {\n    //comment\n    for (i += 3; i < xmlData.length; i++) {\n      if (xmlData[i] === '-' && xmlData[i + 1] === '-' && xmlData[i + 2] === '>') {\n        i += 2;\n        break;\n      }\n    }\n  } else if (\n    xmlData.length > i + 8 &&\n    xmlData[i + 1] === 'D' &&\n    xmlData[i + 2] === 'O' &&\n    xmlData[i + 3] === 'C' &&\n    xmlData[i + 4] === 'T' &&\n    xmlData[i + 5] === 'Y' &&\n    xmlData[i + 6] === 'P' &&\n    xmlData[i + 7] === 'E'\n  ) {\n    let angleBracketsCount = 1;\n    for (i += 8; i < xmlData.length; i++) {\n      if (xmlData[i] === '<') {\n        angleBracketsCount++;\n      } else if (xmlData[i] === '>') {\n        angleBracketsCount--;\n        if (angleBracketsCount === 0) {\n          break;\n        }\n      }\n    }\n  } else if (\n    xmlData.length > i + 9 &&\n    xmlData[i + 1] === '[' &&\n    xmlData[i + 2] === 'C' &&\n    xmlData[i + 3] === 'D' &&\n    xmlData[i + 4] === 'A' &&\n    xmlData[i + 5] === 'T' &&\n    xmlData[i + 6] === 'A' &&\n    xmlData[i + 7] === '['\n  ) {\n    for (i += 8; i < xmlData.length; i++) {\n      if (xmlData[i] === ']' && xmlData[i + 1] === ']' && xmlData[i + 2] === '>') {\n        i += 2;\n        break;\n      }\n    }\n  }\n\n  return i;\n}\n\nconst doubleQuote = '\"';\nconst singleQuote = \"'\";\n\n/**\n * Keep reading xmlData until '<' is found outside the attribute value.\n * @param {string} xmlData\n * @param {number} i\n */\nfunction readAttributeStr(xmlData, i) {\n  let attrStr = '';\n  let startChar = '';\n  let tagClosed = false;\n  for (; i < xmlData.length; i++) {\n    if (xmlData[i] === doubleQuote || xmlData[i] === singleQuote) {\n      if (startChar === '') {\n        startChar = xmlData[i];\n      } else if (startChar !== xmlData[i]) {\n        //if vaue is enclosed with double quote then single quotes are allowed inside the value and vice versa\n      } else {\n        startChar = '';\n      }\n    } else if (xmlData[i] === '>') {\n      if (startChar === '') {\n        tagClosed = true;\n        break;\n      }\n    }\n    attrStr += xmlData[i];\n  }\n  if (startChar !== '') {\n    return false;\n  }\n\n  return {\n    value: attrStr,\n    index: i,\n    tagClosed: tagClosed\n  };\n}\n\n/**\n * Select all the attributes whether valid or invalid.\n */\nconst validAttrStrRegxp = new RegExp('(\\\\s*)([^\\\\s=]+)(\\\\s*=)?(\\\\s*([\\'\"])(([\\\\s\\\\S])*?)\\\\5)?', 'g');\n\n//attr, =\"sd\", a=\"amit's\", a=\"sd\"b=\"saf\", ab  cd=\"\"\n\nfunction validateAttributeString(attrStr, options) {\n  //console.log(\"start:\"+attrStr+\":end\");\n\n  //if(attrStr.trim().length === 0) return true; //empty string\n\n  const matches = util.getAllMatches(attrStr, validAttrStrRegxp);\n  const attrNames = {};\n\n  for (let i = 0; i < matches.length; i++) {\n    if (matches[i][1].length === 0) {\n      //nospace before attribute name: a=\"sd\"b=\"saf\"\n      return getErrorObject('InvalidAttr', \"Attribute '\"+matches[i][2]+\"' has no space in starting.\", getPositionFromMatch(matches[i]))\n    } else if (matches[i][3] !== undefined && matches[i][4] === undefined) {\n      return getErrorObject('InvalidAttr', \"Attribute '\"+matches[i][2]+\"' is without value.\", getPositionFromMatch(matches[i]));\n    } else if (matches[i][3] === undefined && !options.allowBooleanAttributes) {\n      //independent attribute: ab\n      return getErrorObject('InvalidAttr', \"boolean attribute '\"+matches[i][2]+\"' is not allowed.\", getPositionFromMatch(matches[i]));\n    }\n    /* else if(matches[i][6] === undefined){//attribute without value: ab=\n                    return { err: { code:\"InvalidAttr\",msg:\"attribute \" + matches[i][2] + \" has no value assigned.\"}};\n                } */\n    const attrName = matches[i][2];\n    if (!validateAttrName(attrName)) {\n      return getErrorObject('InvalidAttr', \"Attribute '\"+attrName+\"' is an invalid name.\", getPositionFromMatch(matches[i]));\n    }\n    if (!attrNames.hasOwnProperty(attrName)) {\n      //check for duplicate attribute.\n      attrNames[attrName] = 1;\n    } else {\n      return getErrorObject('InvalidAttr', \"Attribute '\"+attrName+\"' is repeated.\", getPositionFromMatch(matches[i]));\n    }\n  }\n\n  return true;\n}\n\nfunction validateNumberAmpersand(xmlData, i) {\n  let re = /\\d/;\n  if (xmlData[i] === 'x') {\n    i++;\n    re = /[\\da-fA-F]/;\n  }\n  for (; i < xmlData.length; i++) {\n    if (xmlData[i] === ';')\n      return i;\n    if (!xmlData[i].match(re))\n      break;\n  }\n  return -1;\n}\n\nfunction validateAmpersand(xmlData, i) {\n  // https://www.w3.org/TR/xml/#dt-charref\n  i++;\n  if (xmlData[i] === ';')\n    return -1;\n  if (xmlData[i] === '#') {\n    i++;\n    return validateNumberAmpersand(xmlData, i);\n  }\n  let count = 0;\n  for (; i < xmlData.length; i++, count++) {\n    if (xmlData[i].match(/\\w/) && count < 20)\n      continue;\n    if (xmlData[i] === ';')\n      break;\n    return -1;\n  }\n  return i;\n}\n\nfunction getErrorObject(code, message, lineNumber) {\n  return {\n    err: {\n      code: code,\n      msg: message,\n      line: lineNumber.line || lineNumber,\n      col: lineNumber.col,\n    },\n  };\n}\n\nfunction validateAttrName(attrName) {\n  return util.isName(attrName);\n}\n\n// const startsWithXML = /^xml/i;\n\nfunction validateTagName(tagname) {\n  return util.isName(tagname) /* && !tagname.match(startsWithXML) */;\n}\n\n//this function returns the line number for the character at the given index\nfunction getLineNumberForPosition(xmlData, index) {\n  const lines = xmlData.substring(0, index).split(/\\r?\\n/);\n  return {\n    line: lines.length,\n\n    // column number is last line's length + 1, because column numbering starts at 1:\n    col: lines[lines.length - 1].length + 1\n  };\n}\n\n//this function returns the position of the first character of match within attrStr\nfunction getPositionFromMatch(match) {\n  return match.startIndex + match[1].length;\n}\n","'use strict';\n//parse Empty Node as self closing node\nconst buildFromOrderedJs = require('./orderedJs2Xml');\n\nconst defaultOptions = {\n  attributeNamePrefix: '@_',\n  attributesGroupName: false,\n  textNodeName: '#text',\n  ignoreAttributes: true,\n  cdataPropName: false,\n  format: false,\n  indentBy: '  ',\n  suppressEmptyNode: false,\n  suppressUnpairedNode: true,\n  suppressBooleanAttributes: true,\n  tagValueProcessor: function(key, a) {\n    return a;\n  },\n  attributeValueProcessor: function(attrName, a) {\n    return a;\n  },\n  preserveOrder: false,\n  commentPropName: false,\n  unpairedTags: [],\n  entities: [\n    { regex: new RegExp(\"&\", \"g\"), val: \"&amp;\" },//it must be on top\n    { regex: new RegExp(\">\", \"g\"), val: \"&gt;\" },\n    { regex: new RegExp(\"<\", \"g\"), val: \"&lt;\" },\n    { regex: new RegExp(\"\\'\", \"g\"), val: \"&apos;\" },\n    { regex: new RegExp(\"\\\"\", \"g\"), val: \"&quot;\" }\n  ],\n  processEntities: true,\n  stopNodes: [],\n  // transformTagName: false,\n  // transformAttributeName: false,\n  oneListGroup: false\n};\n\nfunction Builder(options) {\n  this.options = Object.assign({}, defaultOptions, options);\n  if (this.options.ignoreAttributes || this.options.attributesGroupName) {\n    this.isAttribute = function(/*a*/) {\n      return false;\n    };\n  } else {\n    this.attrPrefixLen = this.options.attributeNamePrefix.length;\n    this.isAttribute = isAttribute;\n  }\n\n  this.processTextOrObjNode = processTextOrObjNode\n\n  if (this.options.format) {\n    this.indentate = indentate;\n    this.tagEndChar = '>\\n';\n    this.newLine = '\\n';\n  } else {\n    this.indentate = function() {\n      return '';\n    };\n    this.tagEndChar = '>';\n    this.newLine = '';\n  }\n}\n\nBuilder.prototype.build = function(jObj) {\n  if(this.options.preserveOrder){\n    return buildFromOrderedJs(jObj, this.options);\n  }else {\n    if(Array.isArray(jObj) && this.options.arrayNodeName && this.options.arrayNodeName.length > 1){\n      jObj = {\n        [this.options.arrayNodeName] : jObj\n      }\n    }\n    return this.j2x(jObj, 0).val;\n  }\n};\n\nBuilder.prototype.j2x = function(jObj, level) {\n  let attrStr = '';\n  let val = '';\n  for (let key in jObj) {\n    if(!Object.prototype.hasOwnProperty.call(jObj, key)) continue;\n    if (typeof jObj[key] === 'undefined') {\n      // supress undefined node only if it is not an attribute\n      if (this.isAttribute(key)) {\n        val += '';\n      }\n    } else if (jObj[key] === null) {\n      // null attribute should be ignored by the attribute list, but should not cause the tag closing\n      if (this.isAttribute(key)) {\n        val += '';\n      } else if (key[0] === '?') {\n        val += this.indentate(level) + '<' + key + '?' + this.tagEndChar;\n      } else {\n        val += this.indentate(level) + '<' + key + '/' + this.tagEndChar;\n      }\n      // val += this.indentate(level) + '<' + key + '/' + this.tagEndChar;\n    } else if (jObj[key] instanceof Date) {\n      val += this.buildTextValNode(jObj[key], key, '', level);\n    } else if (typeof jObj[key] !== 'object') {\n      //premitive type\n      const attr = this.isAttribute(key);\n      if (attr) {\n        attrStr += this.buildAttrPairStr(attr, '' + jObj[key]);\n      }else {\n        //tag value\n        if (key === this.options.textNodeName) {\n          let newval = this.options.tagValueProcessor(key, '' + jObj[key]);\n          val += this.replaceEntitiesValue(newval);\n        } else {\n          val += this.buildTextValNode(jObj[key], key, '', level);\n        }\n      }\n    } else if (Array.isArray(jObj[key])) {\n      //repeated nodes\n      const arrLen = jObj[key].length;\n      let listTagVal = \"\";\n      for (let j = 0; j < arrLen; j++) {\n        const item = jObj[key][j];\n        if (typeof item === 'undefined') {\n          // supress undefined node\n        } else if (item === null) {\n          if(key[0] === \"?\") val += this.indentate(level) + '<' + key + '?' + this.tagEndChar;\n          else val += this.indentate(level) + '<' + key + '/' + this.tagEndChar;\n          // val += this.indentate(level) + '<' + key + '/' + this.tagEndChar;\n        } else if (typeof item === 'object') {\n          if(this.options.oneListGroup ){\n            listTagVal += this.j2x(item, level + 1).val;\n          }else{\n            listTagVal += this.processTextOrObjNode(item, key, level)\n          }\n        } else {\n          listTagVal += this.buildTextValNode(item, key, '', level);\n        }\n      }\n      if(this.options.oneListGroup){\n        listTagVal = this.buildObjectNode(listTagVal, key, '', level);\n      }\n      val += listTagVal;\n    } else {\n      //nested node\n      if (this.options.attributesGroupName && key === this.options.attributesGroupName) {\n        const Ks = Object.keys(jObj[key]);\n        const L = Ks.length;\n        for (let j = 0; j < L; j++) {\n          attrStr += this.buildAttrPairStr(Ks[j], '' + jObj[key][Ks[j]]);\n        }\n      } else {\n        val += this.processTextOrObjNode(jObj[key], key, level)\n      }\n    }\n  }\n  return {attrStr: attrStr, val: val};\n};\n\nBuilder.prototype.buildAttrPairStr = function(attrName, val){\n  val = this.options.attributeValueProcessor(attrName, '' + val);\n  val = this.replaceEntitiesValue(val);\n  if (this.options.suppressBooleanAttributes && val === \"true\") {\n    return ' ' + attrName;\n  } else return ' ' + attrName + '=\"' + val + '\"';\n}\n\nfunction processTextOrObjNode (object, key, level) {\n  const result = this.j2x(object, level + 1);\n  if (object[this.options.textNodeName] !== undefined && Object.keys(object).length === 1) {\n    return this.buildTextValNode(object[this.options.textNodeName], key, result.attrStr, level);\n  } else {\n    return this.buildObjectNode(result.val, key, result.attrStr, level);\n  }\n}\n\nBuilder.prototype.buildObjectNode = function(val, key, attrStr, level) {\n  if(val === \"\"){\n    if(key[0] === \"?\") return  this.indentate(level) + '<' + key + attrStr+ '?' + this.tagEndChar;\n    else {\n      return this.indentate(level) + '<' + key + attrStr + this.closeTag(key) + this.tagEndChar;\n    }\n  }else{\n\n    let tagEndExp = '</' + key + this.tagEndChar;\n    let piClosingChar = \"\";\n    \n    if(key[0] === \"?\") {\n      piClosingChar = \"?\";\n      tagEndExp = \"\";\n    }\n  \n    // attrStr is an empty string in case the attribute came as undefined or null\n    if ((attrStr || attrStr === '') && val.indexOf('<') === -1) {\n      return ( this.indentate(level) + '<' +  key + attrStr + piClosingChar + '>' + val + tagEndExp );\n    } else if (this.options.commentPropName !== false && key === this.options.commentPropName && piClosingChar.length === 0) {\n      return this.indentate(level) + `<!--${val}-->` + this.newLine;\n    }else {\n      return (\n        this.indentate(level) + '<' + key + attrStr + piClosingChar + this.tagEndChar +\n        val +\n        this.indentate(level) + tagEndExp    );\n    }\n  }\n}\n\nBuilder.prototype.closeTag = function(key){\n  let closeTag = \"\";\n  if(this.options.unpairedTags.indexOf(key) !== -1){ //unpaired\n    if(!this.options.suppressUnpairedNode) closeTag = \"/\"\n  }else if(this.options.suppressEmptyNode){ //empty\n    closeTag = \"/\";\n  }else{\n    closeTag = `></${key}`\n  }\n  return closeTag;\n}\n\nfunction buildEmptyObjNode(val, key, attrStr, level) {\n  if (val !== '') {\n    return this.buildObjectNode(val, key, attrStr, level);\n  } else {\n    if(key[0] === \"?\") return  this.indentate(level) + '<' + key + attrStr+ '?' + this.tagEndChar;\n    else {\n      return  this.indentate(level) + '<' + key + attrStr + '/' + this.tagEndChar;\n      // return this.buildTagStr(level,key, attrStr);\n    }\n  }\n}\n\nBuilder.prototype.buildTextValNode = function(val, key, attrStr, level) {\n  if (this.options.cdataPropName !== false && key === this.options.cdataPropName) {\n    return this.indentate(level) + `<![CDATA[${val}]]>` +  this.newLine;\n  }else if (this.options.commentPropName !== false && key === this.options.commentPropName) {\n    return this.indentate(level) + `<!--${val}-->` +  this.newLine;\n  }else if(key[0] === \"?\") {//PI tag\n    return  this.indentate(level) + '<' + key + attrStr+ '?' + this.tagEndChar; \n  }else{\n    let textValue = this.options.tagValueProcessor(key, val);\n    textValue = this.replaceEntitiesValue(textValue);\n  \n    if( textValue === ''){\n      return this.indentate(level) + '<' + key + attrStr + this.closeTag(key) + this.tagEndChar;\n    }else{\n      return this.indentate(level) + '<' + key + attrStr + '>' +\n         textValue +\n        '</' + key + this.tagEndChar;\n    }\n  }\n}\n\nBuilder.prototype.replaceEntitiesValue = function(textValue){\n  if(textValue && textValue.length > 0 && this.options.processEntities){\n    for (let i=0; i<this.options.entities.length; i++) {\n      const entity = this.options.entities[i];\n      textValue = textValue.replace(entity.regex, entity.val);\n    }\n  }\n  return textValue;\n}\n\nfunction indentate(level) {\n  return this.options.indentBy.repeat(level);\n}\n\nfunction isAttribute(name /*, options*/) {\n  if (name.startsWith(this.options.attributeNamePrefix) && name !== this.options.textNodeName) {\n    return name.substr(this.attrPrefixLen);\n  } else {\n    return false;\n  }\n}\n\nmodule.exports = Builder;\n","const EOL = \"\\n\";\n\n/**\n * \n * @param {array} jArray \n * @param {any} options \n * @returns \n */\nfunction toXml(jArray, options) {\n    let indentation = \"\";\n    if (options.format && options.indentBy.length > 0) {\n        indentation = EOL;\n    }\n    return arrToStr(jArray, options, \"\", indentation);\n}\n\nfunction arrToStr(arr, options, jPath, indentation) {\n    let xmlStr = \"\";\n    let isPreviousElementTag = false;\n\n    for (let i = 0; i < arr.length; i++) {\n        const tagObj = arr[i];\n        const tagName = propName(tagObj);\n        if(tagName === undefined) continue;\n\n        let newJPath = \"\";\n        if (jPath.length === 0) newJPath = tagName\n        else newJPath = `${jPath}.${tagName}`;\n\n        if (tagName === options.textNodeName) {\n            let tagText = tagObj[tagName];\n            if (!isStopNode(newJPath, options)) {\n                tagText = options.tagValueProcessor(tagName, tagText);\n                tagText = replaceEntitiesValue(tagText, options);\n            }\n            if (isPreviousElementTag) {\n                xmlStr += indentation;\n            }\n            xmlStr += tagText;\n            isPreviousElementTag = false;\n            continue;\n        } else if (tagName === options.cdataPropName) {\n            if (isPreviousElementTag) {\n                xmlStr += indentation;\n            }\n            xmlStr += `<![CDATA[${tagObj[tagName][0][options.textNodeName]}]]>`;\n            isPreviousElementTag = false;\n            continue;\n        } else if (tagName === options.commentPropName) {\n            xmlStr += indentation + `<!--${tagObj[tagName][0][options.textNodeName]}-->`;\n            isPreviousElementTag = true;\n            continue;\n        } else if (tagName[0] === \"?\") {\n            const attStr = attr_to_str(tagObj[\":@\"], options);\n            const tempInd = tagName === \"?xml\" ? \"\" : indentation;\n            let piTextNodeName = tagObj[tagName][0][options.textNodeName];\n            piTextNodeName = piTextNodeName.length !== 0 ? \" \" + piTextNodeName : \"\"; //remove extra spacing\n            xmlStr += tempInd + `<${tagName}${piTextNodeName}${attStr}?>`;\n            isPreviousElementTag = true;\n            continue;\n        }\n        let newIdentation = indentation;\n        if (newIdentation !== \"\") {\n            newIdentation += options.indentBy;\n        }\n        const attStr = attr_to_str(tagObj[\":@\"], options);\n        const tagStart = indentation + `<${tagName}${attStr}`;\n        const tagValue = arrToStr(tagObj[tagName], options, newJPath, newIdentation);\n        if (options.unpairedTags.indexOf(tagName) !== -1) {\n            if (options.suppressUnpairedNode) xmlStr += tagStart + \">\";\n            else xmlStr += tagStart + \"/>\";\n        } else if ((!tagValue || tagValue.length === 0) && options.suppressEmptyNode) {\n            xmlStr += tagStart + \"/>\";\n        } else if (tagValue && tagValue.endsWith(\">\")) {\n            xmlStr += tagStart + `>${tagValue}${indentation}</${tagName}>`;\n        } else {\n            xmlStr += tagStart + \">\";\n            if (tagValue && indentation !== \"\" && (tagValue.includes(\"/>\") || tagValue.includes(\"</\"))) {\n                xmlStr += indentation + options.indentBy + tagValue + indentation;\n            } else {\n                xmlStr += tagValue;\n            }\n            xmlStr += `</${tagName}>`;\n        }\n        isPreviousElementTag = true;\n    }\n\n    return xmlStr;\n}\n\nfunction propName(obj) {\n    const keys = Object.keys(obj);\n    for (let i = 0; i < keys.length; i++) {\n        const key = keys[i];\n        if(!obj.hasOwnProperty(key)) continue;\n        if (key !== \":@\") return key;\n    }\n}\n\nfunction attr_to_str(attrMap, options) {\n    let attrStr = \"\";\n    if (attrMap && !options.ignoreAttributes) {\n        for (let attr in attrMap) {\n            if(!attrMap.hasOwnProperty(attr)) continue;\n            let attrVal = options.attributeValueProcessor(attr, attrMap[attr]);\n            attrVal = replaceEntitiesValue(attrVal, options);\n            if (attrVal === true && options.suppressBooleanAttributes) {\n                attrStr += ` ${attr.substr(options.attributeNamePrefix.length)}`;\n            } else {\n                attrStr += ` ${attr.substr(options.attributeNamePrefix.length)}=\"${attrVal}\"`;\n            }\n        }\n    }\n    return attrStr;\n}\n\nfunction isStopNode(jPath, options) {\n    jPath = jPath.substr(0, jPath.length - options.textNodeName.length - 1);\n    let tagName = jPath.substr(jPath.lastIndexOf(\".\") + 1);\n    for (let index in options.stopNodes) {\n        if (options.stopNodes[index] === jPath || options.stopNodes[index] === \"*.\" + tagName) return true;\n    }\n    return false;\n}\n\nfunction replaceEntitiesValue(textValue, options) {\n    if (textValue && textValue.length > 0 && options.processEntities) {\n        for (let i = 0; i < options.entities.length; i++) {\n            const entity = options.entities[i];\n            textValue = textValue.replace(entity.regex, entity.val);\n        }\n    }\n    return textValue;\n}\nmodule.exports = toXml;\n","const util = require('../util');\n\n//TODO: handle comments\nfunction readDocType(xmlData, i){\n    \n    const entities = {};\n    if( xmlData[i + 3] === 'O' &&\n         xmlData[i + 4] === 'C' &&\n         xmlData[i + 5] === 'T' &&\n         xmlData[i + 6] === 'Y' &&\n         xmlData[i + 7] === 'P' &&\n         xmlData[i + 8] === 'E')\n    {    \n        i = i+9;\n        let angleBracketsCount = 1;\n        let hasBody = false, comment = false;\n        let exp = \"\";\n        for(;i<xmlData.length;i++){\n            if (xmlData[i] === '<' && !comment) { //Determine the tag type\n                if( hasBody && isEntity(xmlData, i)){\n                    i += 7; \n                    [entityName, val,i] = readEntityExp(xmlData,i+1);\n                    if(val.indexOf(\"&\") === -1) //Parameter entities are not supported\n                        entities[ validateEntityName(entityName) ] = {\n                            regx : RegExp( `&${entityName};`,\"g\"),\n                            val: val\n                        };\n                }\n                else if( hasBody && isElement(xmlData, i))  i += 8;//Not supported\n                else if( hasBody && isAttlist(xmlData, i))  i += 8;//Not supported\n                else if( hasBody && isNotation(xmlData, i)) i += 9;//Not supported\n                else if( isComment)                         comment = true;\n                else                                        throw new Error(\"Invalid DOCTYPE\");\n\n                angleBracketsCount++;\n                exp = \"\";\n            } else if (xmlData[i] === '>') { //Read tag content\n                if(comment){\n                    if( xmlData[i - 1] === \"-\" && xmlData[i - 2] === \"-\"){\n                        comment = false;\n                        angleBracketsCount--;\n                    }\n                }else{\n                    angleBracketsCount--;\n                }\n                if (angleBracketsCount === 0) {\n                  break;\n                }\n            }else if( xmlData[i] === '['){\n                hasBody = true;\n            }else{\n                exp += xmlData[i];\n            }\n        }\n        if(angleBracketsCount !== 0){\n            throw new Error(`Unclosed DOCTYPE`);\n        }\n    }else{\n        throw new Error(`Invalid Tag instead of DOCTYPE`);\n    }\n    return {entities, i};\n}\n\nfunction readEntityExp(xmlData,i){\n    //External entities are not supported\n    //    <!ENTITY ext SYSTEM \"http://normal-website.com\" >\n\n    //Parameter entities are not supported\n    //    <!ENTITY entityname \"&anotherElement;\">\n\n    //Internal entities are supported\n    //    <!ENTITY entityname \"replacement text\">\n    \n    //read EntityName\n    let entityName = \"\";\n    for (; i < xmlData.length && (xmlData[i] !== \"'\" && xmlData[i] !== '\"' ); i++) {\n        // if(xmlData[i] === \" \") continue;\n        // else \n        entityName += xmlData[i];\n    }\n    entityName = entityName.trim();\n    if(entityName.indexOf(\" \") !== -1) throw new Error(\"External entites are not supported\");\n\n    //read Entity Value\n    const startChar = xmlData[i++];\n    let val = \"\"\n    for (; i < xmlData.length && xmlData[i] !== startChar ; i++) {\n        val += xmlData[i];\n    }\n    return [entityName, val, i];\n}\n\nfunction isComment(xmlData, i){\n    if(xmlData[i+1] === '!' &&\n    xmlData[i+2] === '-' &&\n    xmlData[i+3] === '-') return true\n    return false\n}\nfunction isEntity(xmlData, i){\n    if(xmlData[i+1] === '!' &&\n    xmlData[i+2] === 'E' &&\n    xmlData[i+3] === 'N' &&\n    xmlData[i+4] === 'T' &&\n    xmlData[i+5] === 'I' &&\n    xmlData[i+6] === 'T' &&\n    xmlData[i+7] === 'Y') return true\n    return false\n}\nfunction isElement(xmlData, i){\n    if(xmlData[i+1] === '!' &&\n    xmlData[i+2] === 'E' &&\n    xmlData[i+3] === 'L' &&\n    xmlData[i+4] === 'E' &&\n    xmlData[i+5] === 'M' &&\n    xmlData[i+6] === 'E' &&\n    xmlData[i+7] === 'N' &&\n    xmlData[i+8] === 'T') return true\n    return false\n}\n\nfunction isAttlist(xmlData, i){\n    if(xmlData[i+1] === '!' &&\n    xmlData[i+2] === 'A' &&\n    xmlData[i+3] === 'T' &&\n    xmlData[i+4] === 'T' &&\n    xmlData[i+5] === 'L' &&\n    xmlData[i+6] === 'I' &&\n    xmlData[i+7] === 'S' &&\n    xmlData[i+8] === 'T') return true\n    return false\n}\nfunction isNotation(xmlData, i){\n    if(xmlData[i+1] === '!' &&\n    xmlData[i+2] === 'N' &&\n    xmlData[i+3] === 'O' &&\n    xmlData[i+4] === 'T' &&\n    xmlData[i+5] === 'A' &&\n    xmlData[i+6] === 'T' &&\n    xmlData[i+7] === 'I' &&\n    xmlData[i+8] === 'O' &&\n    xmlData[i+9] === 'N') return true\n    return false\n}\n\nfunction validateEntityName(name){\n    if (util.isName(name))\n\treturn name;\n    else\n        throw new Error(`Invalid entity name ${name}`);\n}\n\nmodule.exports = readDocType;\n","\nconst defaultOptions = {\n    preserveOrder: false,\n    attributeNamePrefix: '@_',\n    attributesGroupName: false,\n    textNodeName: '#text',\n    ignoreAttributes: true,\n    removeNSPrefix: false, // remove NS from tag name or attribute name if true\n    allowBooleanAttributes: false, //a tag can have attributes without any value\n    //ignoreRootElement : false,\n    parseTagValue: true,\n    parseAttributeValue: false,\n    trimValues: true, //Trim string values of tag and attributes\n    cdataPropName: false,\n    numberParseOptions: {\n      hex: true,\n      leadingZeros: true,\n      eNotation: true\n    },\n    tagValueProcessor: function(tagName, val) {\n      return val;\n    },\n    attributeValueProcessor: function(attrName, val) {\n      return val;\n    },\n    stopNodes: [], //nested tags will not be parsed even for errors\n    alwaysCreateTextNode: false,\n    isArray: () => false,\n    commentPropName: false,\n    unpairedTags: [],\n    processEntities: true,\n    htmlEntities: false,\n    ignoreDeclaration: false,\n    ignorePiTags: false,\n    transformTagName: false,\n    transformAttributeName: false,\n    updateTag: function(tagName, jPath, attrs){\n      return tagName\n    },\n    // skipEmptyListItem: false\n};\n   \nconst buildOptions = function(options) {\n    return Object.assign({}, defaultOptions, options);\n};\n\nexports.buildOptions = buildOptions;\nexports.defaultOptions = defaultOptions;","'use strict';\n///@ts-check\n\nconst util = require('../util');\nconst xmlNode = require('./xmlNode');\nconst readDocType = require(\"./DocTypeReader\");\nconst toNumber = require(\"strnum\");\n\n// const regx =\n//   '<((!\\\\[CDATA\\\\[([\\\\s\\\\S]*?)(]]>))|((NAME:)?(NAME))([^>]*)>|((\\\\/)(NAME)\\\\s*>))([^<]*)'\n//   .replace(/NAME/g, util.nameRegexp);\n\n//const tagsRegx = new RegExp(\"<(\\\\/?[\\\\w:\\\\-\\._]+)([^>]*)>(\\\\s*\"+cdataRegx+\")*([^<]+)?\",\"g\");\n//const tagsRegx = new RegExp(\"<(\\\\/?)((\\\\w*:)?([\\\\w:\\\\-\\._]+))([^>]*)>([^<]*)(\"+cdataRegx+\"([^<]*))*([^<]+)?\",\"g\");\n\nclass OrderedObjParser{\n  constructor(options){\n    this.options = options;\n    this.currentNode = null;\n    this.tagsNodeStack = [];\n    this.docTypeEntities = {};\n    this.lastEntities = {\n      \"apos\" : { regex: /&(apos|#39|#x27);/g, val : \"'\"},\n      \"gt\" : { regex: /&(gt|#62|#x3E);/g, val : \">\"},\n      \"lt\" : { regex: /&(lt|#60|#x3C);/g, val : \"<\"},\n      \"quot\" : { regex: /&(quot|#34|#x22);/g, val : \"\\\"\"},\n    };\n    this.ampEntity = { regex: /&(amp|#38|#x26);/g, val : \"&\"};\n    this.htmlEntities = {\n      \"space\": { regex: /&(nbsp|#160);/g, val: \" \" },\n      // \"lt\" : { regex: /&(lt|#60);/g, val: \"<\" },\n      // \"gt\" : { regex: /&(gt|#62);/g, val: \">\" },\n      // \"amp\" : { regex: /&(amp|#38);/g, val: \"&\" },\n      // \"quot\" : { regex: /&(quot|#34);/g, val: \"\\\"\" },\n      // \"apos\" : { regex: /&(apos|#39);/g, val: \"'\" },\n      \"cent\" : { regex: /&(cent|#162);/g, val: \"¢\" },\n      \"pound\" : { regex: /&(pound|#163);/g, val: \"£\" },\n      \"yen\" : { regex: /&(yen|#165);/g, val: \"¥\" },\n      \"euro\" : { regex: /&(euro|#8364);/g, val: \"€\" },\n      \"copyright\" : { regex: /&(copy|#169);/g, val: \"©\" },\n      \"reg\" : { regex: /&(reg|#174);/g, val: \"®\" },\n      \"inr\" : { regex: /&(inr|#8377);/g, val: \"₹\" },\n      \"num_dec\": { regex: /&#([0-9]{1,7});/g, val : (_, str) => String.fromCharCode(Number.parseInt(str, 10)) },\n      \"num_hex\": { regex: /&#x([0-9a-fA-F]{1,6});/g, val : (_, str) => String.fromCharCode(Number.parseInt(str, 16)) },\n    };\n    this.addExternalEntities = addExternalEntities;\n    this.parseXml = parseXml;\n    this.parseTextData = parseTextData;\n    this.resolveNameSpace = resolveNameSpace;\n    this.buildAttributesMap = buildAttributesMap;\n    this.isItStopNode = isItStopNode;\n    this.replaceEntitiesValue = replaceEntitiesValue;\n    this.readStopNodeData = readStopNodeData;\n    this.saveTextToParentTag = saveTextToParentTag;\n    this.addChild = addChild;\n  }\n\n}\n\nfunction addExternalEntities(externalEntities){\n  const entKeys = Object.keys(externalEntities);\n  for (let i = 0; i < entKeys.length; i++) {\n    const ent = entKeys[i];\n    this.lastEntities[ent] = {\n       regex: new RegExp(\"&\"+ent+\";\",\"g\"),\n       val : externalEntities[ent]\n    }\n  }\n}\n\n/**\n * @param {string} val\n * @param {string} tagName\n * @param {string} jPath\n * @param {boolean} dontTrim\n * @param {boolean} hasAttributes\n * @param {boolean} isLeafNode\n * @param {boolean} escapeEntities\n */\nfunction parseTextData(val, tagName, jPath, dontTrim, hasAttributes, isLeafNode, escapeEntities) {\n  if (val !== undefined) {\n    if (this.options.trimValues && !dontTrim) {\n      val = val.trim();\n    }\n    if(val.length > 0){\n      if(!escapeEntities) val = this.replaceEntitiesValue(val);\n      \n      const newval = this.options.tagValueProcessor(tagName, val, jPath, hasAttributes, isLeafNode);\n      if(newval === null || newval === undefined){\n        //don't parse\n        return val;\n      }else if(typeof newval !== typeof val || newval !== val){\n        //overwrite\n        return newval;\n      }else if(this.options.trimValues){\n        return parseValue(val, this.options.parseTagValue, this.options.numberParseOptions);\n      }else{\n        const trimmedVal = val.trim();\n        if(trimmedVal === val){\n          return parseValue(val, this.options.parseTagValue, this.options.numberParseOptions);\n        }else{\n          return val;\n        }\n      }\n    }\n  }\n}\n\nfunction resolveNameSpace(tagname) {\n  if (this.options.removeNSPrefix) {\n    const tags = tagname.split(':');\n    const prefix = tagname.charAt(0) === '/' ? '/' : '';\n    if (tags[0] === 'xmlns') {\n      return '';\n    }\n    if (tags.length === 2) {\n      tagname = prefix + tags[1];\n    }\n  }\n  return tagname;\n}\n\n//TODO: change regex to capture NS\n//const attrsRegx = new RegExp(\"([\\\\w\\\\-\\\\.\\\\:]+)\\\\s*=\\\\s*(['\\\"])((.|\\n)*?)\\\\2\",\"gm\");\nconst attrsRegx = new RegExp('([^\\\\s=]+)\\\\s*(=\\\\s*([\\'\"])([\\\\s\\\\S]*?)\\\\3)?', 'gm');\n\nfunction buildAttributesMap(attrStr, jPath, tagName) {\n  if (!this.options.ignoreAttributes && typeof attrStr === 'string') {\n    // attrStr = attrStr.replace(/\\r?\\n/g, ' ');\n    //attrStr = attrStr || attrStr.trim();\n\n    const matches = util.getAllMatches(attrStr, attrsRegx);\n    const len = matches.length; //don't make it inline\n    const attrs = {};\n    for (let i = 0; i < len; i++) {\n      const attrName = this.resolveNameSpace(matches[i][1]);\n      let oldVal = matches[i][4];\n      let aName = this.options.attributeNamePrefix + attrName;\n      if (attrName.length) {\n        if (this.options.transformAttributeName) {\n          aName = this.options.transformAttributeName(aName);\n        }\n        if(aName === \"__proto__\") aName  = \"#__proto__\";\n        if (oldVal !== undefined) {\n          if (this.options.trimValues) {\n            oldVal = oldVal.trim();\n          }\n          oldVal = this.replaceEntitiesValue(oldVal);\n          const newVal = this.options.attributeValueProcessor(attrName, oldVal, jPath);\n          if(newVal === null || newVal === undefined){\n            //don't parse\n            attrs[aName] = oldVal;\n          }else if(typeof newVal !== typeof oldVal || newVal !== oldVal){\n            //overwrite\n            attrs[aName] = newVal;\n          }else{\n            //parse\n            attrs[aName] = parseValue(\n              oldVal,\n              this.options.parseAttributeValue,\n              this.options.numberParseOptions\n            );\n          }\n        } else if (this.options.allowBooleanAttributes) {\n          attrs[aName] = true;\n        }\n      }\n    }\n    if (!Object.keys(attrs).length) {\n      return;\n    }\n    if (this.options.attributesGroupName) {\n      const attrCollection = {};\n      attrCollection[this.options.attributesGroupName] = attrs;\n      return attrCollection;\n    }\n    return attrs\n  }\n}\n\nconst parseXml = function(xmlData) {\n  xmlData = xmlData.replace(/\\r\\n?/g, \"\\n\"); //TODO: remove this line\n  const xmlObj = new xmlNode('!xml');\n  let currentNode = xmlObj;\n  let textData = \"\";\n  let jPath = \"\";\n  for(let i=0; i< xmlData.length; i++){//for each char in XML data\n    const ch = xmlData[i];\n    if(ch === '<'){\n      // const nextIndex = i+1;\n      // const _2ndChar = xmlData[nextIndex];\n      if( xmlData[i+1] === '/') {//Closing Tag\n        const closeIndex = findClosingIndex(xmlData, \">\", i, \"Closing Tag is not closed.\")\n        let tagName = xmlData.substring(i+2,closeIndex).trim();\n\n        if(this.options.removeNSPrefix){\n          const colonIndex = tagName.indexOf(\":\");\n          if(colonIndex !== -1){\n            tagName = tagName.substr(colonIndex+1);\n          }\n        }\n\n        if(this.options.transformTagName) {\n          tagName = this.options.transformTagName(tagName);\n        }\n\n        if(currentNode){\n          textData = this.saveTextToParentTag(textData, currentNode, jPath);\n        }\n\n        //check if last tag of nested tag was unpaired tag\n        const lastTagName = jPath.substring(jPath.lastIndexOf(\".\")+1);\n        if(tagName && this.options.unpairedTags.indexOf(tagName) !== -1 ){\n          throw new Error(`Unpaired tag can not be used as closing tag: </${tagName}>`);\n        }\n        let propIndex = 0\n        if(lastTagName && this.options.unpairedTags.indexOf(lastTagName) !== -1 ){\n          propIndex = jPath.lastIndexOf('.', jPath.lastIndexOf('.')-1)\n          this.tagsNodeStack.pop();\n        }else{\n          propIndex = jPath.lastIndexOf(\".\");\n        }\n        jPath = jPath.substring(0, propIndex);\n\n        currentNode = this.tagsNodeStack.pop();//avoid recursion, set the parent tag scope\n        textData = \"\";\n        i = closeIndex;\n      } else if( xmlData[i+1] === '?') {\n\n        let tagData = readTagExp(xmlData,i, false, \"?>\");\n        if(!tagData) throw new Error(\"Pi Tag is not closed.\");\n\n        textData = this.saveTextToParentTag(textData, currentNode, jPath);\n        if( (this.options.ignoreDeclaration && tagData.tagName === \"?xml\") || this.options.ignorePiTags){\n\n        }else{\n  \n          const childNode = new xmlNode(tagData.tagName);\n          childNode.add(this.options.textNodeName, \"\");\n          \n          if(tagData.tagName !== tagData.tagExp && tagData.attrExpPresent){\n            childNode[\":@\"] = this.buildAttributesMap(tagData.tagExp, jPath, tagData.tagName);\n          }\n          this.addChild(currentNode, childNode, jPath)\n\n        }\n\n\n        i = tagData.closeIndex + 1;\n      } else if(xmlData.substr(i + 1, 3) === '!--') {\n        const endIndex = findClosingIndex(xmlData, \"-->\", i+4, \"Comment is not closed.\")\n        if(this.options.commentPropName){\n          const comment = xmlData.substring(i + 4, endIndex - 2);\n\n          textData = this.saveTextToParentTag(textData, currentNode, jPath);\n\n          currentNode.add(this.options.commentPropName, [ { [this.options.textNodeName] : comment } ]);\n        }\n        i = endIndex;\n      } else if( xmlData.substr(i + 1, 2) === '!D') {\n        const result = readDocType(xmlData, i);\n        this.docTypeEntities = result.entities;\n        i = result.i;\n      }else if(xmlData.substr(i + 1, 2) === '![') {\n        const closeIndex = findClosingIndex(xmlData, \"]]>\", i, \"CDATA is not closed.\") - 2;\n        const tagExp = xmlData.substring(i + 9,closeIndex);\n\n        textData = this.saveTextToParentTag(textData, currentNode, jPath);\n\n        let val = this.parseTextData(tagExp, currentNode.tagname, jPath, true, false, true, true);\n        if(val == undefined) val = \"\";\n\n        //cdata should be set even if it is 0 length string\n        if(this.options.cdataPropName){\n          currentNode.add(this.options.cdataPropName, [ { [this.options.textNodeName] : tagExp } ]);\n        }else{\n          currentNode.add(this.options.textNodeName, val);\n        }\n        \n        i = closeIndex + 2;\n      }else {//Opening tag\n        let result = readTagExp(xmlData,i, this.options.removeNSPrefix);\n        let tagName= result.tagName;\n        const rawTagName = result.rawTagName;\n        let tagExp = result.tagExp;\n        let attrExpPresent = result.attrExpPresent;\n        let closeIndex = result.closeIndex;\n\n        if (this.options.transformTagName) {\n          tagName = this.options.transformTagName(tagName);\n        }\n        \n        //save text as child node\n        if (currentNode && textData) {\n          if(currentNode.tagname !== '!xml'){\n            //when nested tag is found\n            textData = this.saveTextToParentTag(textData, currentNode, jPath, false);\n          }\n        }\n\n        //check if last tag was unpaired tag\n        const lastTag = currentNode;\n        if(lastTag && this.options.unpairedTags.indexOf(lastTag.tagname) !== -1 ){\n          currentNode = this.tagsNodeStack.pop();\n          jPath = jPath.substring(0, jPath.lastIndexOf(\".\"));\n        }\n        if(tagName !== xmlObj.tagname){\n          jPath += jPath ? \".\" + tagName : tagName;\n        }\n        if (this.isItStopNode(this.options.stopNodes, jPath, tagName)) {\n          let tagContent = \"\";\n          //self-closing tag\n          if(tagExp.length > 0 && tagExp.lastIndexOf(\"/\") === tagExp.length - 1){\n            if(tagName[tagName.length - 1] === \"/\"){ //remove trailing '/'\n              tagName = tagName.substr(0, tagName.length - 1);\n              jPath = jPath.substr(0, jPath.length - 1);\n              tagExp = tagName;\n            }else{\n              tagExp = tagExp.substr(0, tagExp.length - 1);\n            }\n            i = result.closeIndex;\n          }\n          //unpaired tag\n          else if(this.options.unpairedTags.indexOf(tagName) !== -1){\n            \n            i = result.closeIndex;\n          }\n          //normal tag\n          else{\n            //read until closing tag is found\n            const result = this.readStopNodeData(xmlData, rawTagName, closeIndex + 1);\n            if(!result) throw new Error(`Unexpected end of ${rawTagName}`);\n            i = result.i;\n            tagContent = result.tagContent;\n          }\n\n          const childNode = new xmlNode(tagName);\n          if(tagName !== tagExp && attrExpPresent){\n            childNode[\":@\"] = this.buildAttributesMap(tagExp, jPath, tagName);\n          }\n          if(tagContent) {\n            tagContent = this.parseTextData(tagContent, tagName, jPath, true, attrExpPresent, true, true);\n          }\n          \n          jPath = jPath.substr(0, jPath.lastIndexOf(\".\"));\n          childNode.add(this.options.textNodeName, tagContent);\n          \n          this.addChild(currentNode, childNode, jPath)\n        }else{\n  //selfClosing tag\n          if(tagExp.length > 0 && tagExp.lastIndexOf(\"/\") === tagExp.length - 1){\n            if(tagName[tagName.length - 1] === \"/\"){ //remove trailing '/'\n              tagName = tagName.substr(0, tagName.length - 1);\n              jPath = jPath.substr(0, jPath.length - 1);\n              tagExp = tagName;\n            }else{\n              tagExp = tagExp.substr(0, tagExp.length - 1);\n            }\n            \n            if(this.options.transformTagName) {\n              tagName = this.options.transformTagName(tagName);\n            }\n\n            const childNode = new xmlNode(tagName);\n            if(tagName !== tagExp && attrExpPresent){\n              childNode[\":@\"] = this.buildAttributesMap(tagExp, jPath, tagName);\n            }\n            this.addChild(currentNode, childNode, jPath)\n            jPath = jPath.substr(0, jPath.lastIndexOf(\".\"));\n          }\n    //opening tag\n          else{\n            const childNode = new xmlNode( tagName);\n            this.tagsNodeStack.push(currentNode);\n            \n            if(tagName !== tagExp && attrExpPresent){\n              childNode[\":@\"] = this.buildAttributesMap(tagExp, jPath, tagName);\n            }\n            this.addChild(currentNode, childNode, jPath)\n            currentNode = childNode;\n          }\n          textData = \"\";\n          i = closeIndex;\n        }\n      }\n    }else{\n      textData += xmlData[i];\n    }\n  }\n  return xmlObj.child;\n}\n\nfunction addChild(currentNode, childNode, jPath){\n  const result = this.options.updateTag(childNode.tagname, jPath, childNode[\":@\"])\n  if(result === false){\n  }else if(typeof result === \"string\"){\n    childNode.tagname = result\n    currentNode.addChild(childNode);\n  }else{\n    currentNode.addChild(childNode);\n  }\n}\n\nconst replaceEntitiesValue = function(val){\n\n  if(this.options.processEntities){\n    for(let entityName in this.docTypeEntities){\n      const entity = this.docTypeEntities[entityName];\n      val = val.replace( entity.regx, entity.val);\n    }\n    for(let entityName in this.lastEntities){\n      const entity = this.lastEntities[entityName];\n      val = val.replace( entity.regex, entity.val);\n    }\n    if(this.options.htmlEntities){\n      for(let entityName in this.htmlEntities){\n        const entity = this.htmlEntities[entityName];\n        val = val.replace( entity.regex, entity.val);\n      }\n    }\n    val = val.replace( this.ampEntity.regex, this.ampEntity.val);\n  }\n  return val;\n}\nfunction saveTextToParentTag(textData, currentNode, jPath, isLeafNode) {\n  if (textData) { //store previously collected data as textNode\n    if(isLeafNode === undefined) isLeafNode = Object.keys(currentNode.child).length === 0\n    \n    textData = this.parseTextData(textData,\n      currentNode.tagname,\n      jPath,\n      false,\n      currentNode[\":@\"] ? Object.keys(currentNode[\":@\"]).length !== 0 : false,\n      isLeafNode);\n\n    if (textData !== undefined && textData !== \"\")\n      currentNode.add(this.options.textNodeName, textData);\n    textData = \"\";\n  }\n  return textData;\n}\n\n//TODO: use jPath to simplify the logic\n/**\n * \n * @param {string[]} stopNodes \n * @param {string} jPath\n * @param {string} currentTagName \n */\nfunction isItStopNode(stopNodes, jPath, currentTagName){\n  const allNodesExp = \"*.\" + currentTagName;\n  for (const stopNodePath in stopNodes) {\n    const stopNodeExp = stopNodes[stopNodePath];\n    if( allNodesExp === stopNodeExp || jPath === stopNodeExp  ) return true;\n  }\n  return false;\n}\n\n/**\n * Returns the tag Expression and where it is ending handling single-double quotes situation\n * @param {string} xmlData \n * @param {number} i starting index\n * @returns \n */\nfunction tagExpWithClosingIndex(xmlData, i, closingChar = \">\"){\n  let attrBoundary;\n  let tagExp = \"\";\n  for (let index = i; index < xmlData.length; index++) {\n    let ch = xmlData[index];\n    if (attrBoundary) {\n        if (ch === attrBoundary) attrBoundary = \"\";//reset\n    } else if (ch === '\"' || ch === \"'\") {\n        attrBoundary = ch;\n    } else if (ch === closingChar[0]) {\n      if(closingChar[1]){\n        if(xmlData[index + 1] === closingChar[1]){\n          return {\n            data: tagExp,\n            index: index\n          }\n        }\n      }else{\n        return {\n          data: tagExp,\n          index: index\n        }\n      }\n    } else if (ch === '\\t') {\n      ch = \" \"\n    }\n    tagExp += ch;\n  }\n}\n\nfunction findClosingIndex(xmlData, str, i, errMsg){\n  const closingIndex = xmlData.indexOf(str, i);\n  if(closingIndex === -1){\n    throw new Error(errMsg)\n  }else{\n    return closingIndex + str.length - 1;\n  }\n}\n\nfunction readTagExp(xmlData,i, removeNSPrefix, closingChar = \">\"){\n  const result = tagExpWithClosingIndex(xmlData, i+1, closingChar);\n  if(!result) return;\n  let tagExp = result.data;\n  const closeIndex = result.index;\n  const separatorIndex = tagExp.search(/\\s/);\n  let tagName = tagExp;\n  let attrExpPresent = true;\n  if(separatorIndex !== -1){//separate tag name and attributes expression\n    tagName = tagExp.substring(0, separatorIndex);\n    tagExp = tagExp.substring(separatorIndex + 1).trimStart();\n  }\n\n  const rawTagName = tagName;\n  if(removeNSPrefix){\n    const colonIndex = tagName.indexOf(\":\");\n    if(colonIndex !== -1){\n      tagName = tagName.substr(colonIndex+1);\n      attrExpPresent = tagName !== result.data.substr(colonIndex + 1);\n    }\n  }\n\n  return {\n    tagName: tagName,\n    tagExp: tagExp,\n    closeIndex: closeIndex,\n    attrExpPresent: attrExpPresent,\n    rawTagName: rawTagName,\n  }\n}\n/**\n * find paired tag for a stop node\n * @param {string} xmlData \n * @param {string} tagName \n * @param {number} i \n */\nfunction readStopNodeData(xmlData, tagName, i){\n  const startIndex = i;\n  // Starting at 1 since we already have an open tag\n  let openTagCount = 1;\n\n  for (; i < xmlData.length; i++) {\n    if( xmlData[i] === \"<\"){ \n      if (xmlData[i+1] === \"/\") {//close tag\n          const closeIndex = findClosingIndex(xmlData, \">\", i, `${tagName} is not closed`);\n          let closeTagName = xmlData.substring(i+2,closeIndex).trim();\n          if(closeTagName === tagName){\n            openTagCount--;\n            if (openTagCount === 0) {\n              return {\n                tagContent: xmlData.substring(startIndex, i),\n                i : closeIndex\n              }\n            }\n          }\n          i=closeIndex;\n        } else if(xmlData[i+1] === '?') { \n          const closeIndex = findClosingIndex(xmlData, \"?>\", i+1, \"StopNode is not closed.\")\n          i=closeIndex;\n        } else if(xmlData.substr(i + 1, 3) === '!--') { \n          const closeIndex = findClosingIndex(xmlData, \"-->\", i+3, \"StopNode is not closed.\")\n          i=closeIndex;\n        } else if(xmlData.substr(i + 1, 2) === '![') { \n          const closeIndex = findClosingIndex(xmlData, \"]]>\", i, \"StopNode is not closed.\") - 2;\n          i=closeIndex;\n        } else {\n          const tagData = readTagExp(xmlData, i, '>')\n\n          if (tagData) {\n            const openTagName = tagData && tagData.tagName;\n            if (openTagName === tagName && tagData.tagExp[tagData.tagExp.length-1] !== \"/\") {\n              openTagCount++;\n            }\n            i=tagData.closeIndex;\n          }\n        }\n      }\n  }//end for loop\n}\n\nfunction parseValue(val, shouldParse, options) {\n  if (shouldParse && typeof val === 'string') {\n    //console.log(options)\n    const newval = val.trim();\n    if(newval === 'true' ) return true;\n    else if(newval === 'false' ) return false;\n    else return toNumber(val, options);\n  } else {\n    if (util.isExist(val)) {\n      return val;\n    } else {\n      return '';\n    }\n  }\n}\n\n\nmodule.exports = OrderedObjParser;\n","const { buildOptions} = require(\"./OptionsBuilder\");\nconst OrderedObjParser = require(\"./OrderedObjParser\");\nconst { prettify} = require(\"./node2json\");\nconst validator = require('../validator');\n\nclass XMLParser{\n    \n    constructor(options){\n        this.externalEntities = {};\n        this.options = buildOptions(options);\n        \n    }\n    /**\n     * Parse XML dats to JS object \n     * @param {string|Buffer} xmlData \n     * @param {boolean|Object} validationOption \n     */\n    parse(xmlData,validationOption){\n        if(typeof xmlData === \"string\"){\n        }else if( xmlData.toString){\n            xmlData = xmlData.toString();\n        }else{\n            throw new Error(\"XML data is accepted in String or Bytes[] form.\")\n        }\n        if( validationOption){\n            if(validationOption === true) validationOption = {}; //validate with default options\n            \n            const result = validator.validate(xmlData, validationOption);\n            if (result !== true) {\n              throw Error( `${result.err.msg}:${result.err.line}:${result.err.col}` )\n            }\n          }\n        const orderedObjParser = new OrderedObjParser(this.options);\n        orderedObjParser.addExternalEntities(this.externalEntities);\n        const orderedResult = orderedObjParser.parseXml(xmlData);\n        if(this.options.preserveOrder || orderedResult === undefined) return orderedResult;\n        else return prettify(orderedResult, this.options);\n    }\n\n    /**\n     * Add Entity which is not by default supported by this library\n     * @param {string} key \n     * @param {string} value \n     */\n    addEntity(key, value){\n        if(value.indexOf(\"&\") !== -1){\n            throw new Error(\"Entity value can't have '&'\")\n        }else if(key.indexOf(\"&\") !== -1 || key.indexOf(\";\") !== -1){\n            throw new Error(\"An entity must be set without '&' and ';'. Eg. use '#xD' for '&#xD;'\")\n        }else if(value === \"&\"){\n            throw new Error(\"An entity with value '&' is not permitted\");\n        }else{\n            this.externalEntities[key] = value;\n        }\n    }\n}\n\nmodule.exports = XMLParser;","'use strict';\n\n/**\n * \n * @param {array} node \n * @param {any} options \n * @returns \n */\nfunction prettify(node, options){\n  return compress( node, options);\n}\n\n/**\n * \n * @param {array} arr \n * @param {object} options \n * @param {string} jPath \n * @returns object\n */\nfunction compress(arr, options, jPath){\n  let text;\n  const compressedObj = {};\n  for (let i = 0; i < arr.length; i++) {\n    const tagObj = arr[i];\n    const property = propName(tagObj);\n    let newJpath = \"\";\n    if(jPath === undefined) newJpath = property;\n    else newJpath = jPath + \".\" + property;\n\n    if(property === options.textNodeName){\n      if(text === undefined) text = tagObj[property];\n      else text += \"\" + tagObj[property];\n    }else if(property === undefined){\n      continue;\n    }else if(tagObj[property]){\n      \n      let val = compress(tagObj[property], options, newJpath);\n      const isLeaf = isLeafTag(val, options);\n\n      if(tagObj[\":@\"]){\n        assignAttributes( val, tagObj[\":@\"], newJpath, options);\n      }else if(Object.keys(val).length === 1 && val[options.textNodeName] !== undefined && !options.alwaysCreateTextNode){\n        val = val[options.textNodeName];\n      }else if(Object.keys(val).length === 0){\n        if(options.alwaysCreateTextNode) val[options.textNodeName] = \"\";\n        else val = \"\";\n      }\n\n      if(compressedObj[property] !== undefined && compressedObj.hasOwnProperty(property)) {\n        if(!Array.isArray(compressedObj[property])) {\n            compressedObj[property] = [ compressedObj[property] ];\n        }\n        compressedObj[property].push(val);\n      }else{\n        //TODO: if a node is not an array, then check if it should be an array\n        //also determine if it is a leaf node\n        if (options.isArray(property, newJpath, isLeaf )) {\n          compressedObj[property] = [val];\n        }else{\n          compressedObj[property] = val;\n        }\n      }\n    }\n    \n  }\n  // if(text && text.length > 0) compressedObj[options.textNodeName] = text;\n  if(typeof text === \"string\"){\n    if(text.length > 0) compressedObj[options.textNodeName] = text;\n  }else if(text !== undefined) compressedObj[options.textNodeName] = text;\n  return compressedObj;\n}\n\nfunction propName(obj){\n  const keys = Object.keys(obj);\n  for (let i = 0; i < keys.length; i++) {\n    const key = keys[i];\n    if(key !== \":@\") return key;\n  }\n}\n\nfunction assignAttributes(obj, attrMap, jpath, options){\n  if (attrMap) {\n    const keys = Object.keys(attrMap);\n    const len = keys.length; //don't make it inline\n    for (let i = 0; i < len; i++) {\n      const atrrName = keys[i];\n      if (options.isArray(atrrName, jpath + \".\" + atrrName, true, true)) {\n        obj[atrrName] = [ attrMap[atrrName] ];\n      } else {\n        obj[atrrName] = attrMap[atrrName];\n      }\n    }\n  }\n}\n\nfunction isLeafTag(obj, options){\n  const { textNodeName } = options;\n  const propCount = Object.keys(obj).length;\n  \n  if (propCount === 0) {\n    return true;\n  }\n\n  if (\n    propCount === 1 &&\n    (obj[textNodeName] || typeof obj[textNodeName] === \"boolean\" || obj[textNodeName] === 0)\n  ) {\n    return true;\n  }\n\n  return false;\n}\nexports.prettify = prettify;\n","'use strict';\n\nclass XmlNode{\n  constructor(tagname) {\n    this.tagname = tagname;\n    this.child = []; //nested tags, text, cdata, comments in order\n    this[\":@\"] = {}; //attributes map\n  }\n  add(key,val){\n    // this.child.push( {name : key, val: val, isCdata: isCdata });\n    if(key === \"__proto__\") key = \"#__proto__\";\n    this.child.push( {[key]: val });\n  }\n  addChild(node) {\n    if(node.tagname === \"__proto__\") node.tagname = \"#__proto__\";\n    if(node[\":@\"] && Object.keys(node[\":@\"]).length > 0){\n      this.child.push( { [node.tagname]: node.child, [\":@\"]: node[\":@\"] });\n    }else{\n      this.child.push( { [node.tagname]: node.child });\n    }\n  };\n};\n\n\nmodule.exports = XmlNode;","'use strict';\nmodule.exports = function (obj, predicate) {\n\tvar ret = {};\n\tvar keys = Object.keys(obj);\n\tvar isArr = Array.isArray(predicate);\n\n\tfor (var i = 0; i < keys.length; i++) {\n\t\tvar key = keys[i];\n\t\tvar val = obj[key];\n\n\t\tif (isArr ? predicate.indexOf(key) !== -1 : predicate(key, val, obj)) {\n\t\t\tret[key] = val;\n\t\t}\n\t}\n\n\treturn ret;\n};\n","/**\n * Fuse.js v6.6.2 - Lightweight fuzzy-search (http://fusejs.io)\n *\n * Copyright (c) 2022 Kiro Risk (http://kiro.me)\n * All Rights Reserved. Apache Software License 2.0\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n */\n\nfunction isArray(value) {\n  return !Array.isArray\n    ? getTag(value) === '[object Array]'\n    : Array.isArray(value)\n}\n\n// Adapted from: https://github.com/lodash/lodash/blob/master/.internal/baseToString.js\nconst INFINITY = 1 / 0;\nfunction baseToString(value) {\n  // Exit early for strings to avoid a performance hit in some environments.\n  if (typeof value == 'string') {\n    return value\n  }\n  let result = value + '';\n  return result == '0' && 1 / value == -INFINITY ? '-0' : result\n}\n\nfunction toString(value) {\n  return value == null ? '' : baseToString(value)\n}\n\nfunction isString(value) {\n  return typeof value === 'string'\n}\n\nfunction isNumber(value) {\n  return typeof value === 'number'\n}\n\n// Adapted from: https://github.com/lodash/lodash/blob/master/isBoolean.js\nfunction isBoolean(value) {\n  return (\n    value === true ||\n    value === false ||\n    (isObjectLike(value) && getTag(value) == '[object Boolean]')\n  )\n}\n\nfunction isObject(value) {\n  return typeof value === 'object'\n}\n\n// Checks if `value` is object-like.\nfunction isObjectLike(value) {\n  return isObject(value) && value !== null\n}\n\nfunction isDefined(value) {\n  return value !== undefined && value !== null\n}\n\nfunction isBlank(value) {\n  return !value.trim().length\n}\n\n// Gets the `toStringTag` of `value`.\n// Adapted from: https://github.com/lodash/lodash/blob/master/.internal/getTag.js\nfunction getTag(value) {\n  return value == null\n    ? value === undefined\n      ? '[object Undefined]'\n      : '[object Null]'\n    : Object.prototype.toString.call(value)\n}\n\nconst EXTENDED_SEARCH_UNAVAILABLE = 'Extended search is not available';\n\nconst INCORRECT_INDEX_TYPE = \"Incorrect 'index' type\";\n\nconst LOGICAL_SEARCH_INVALID_QUERY_FOR_KEY = (key) =>\n  `Invalid value for key ${key}`;\n\nconst PATTERN_LENGTH_TOO_LARGE = (max) =>\n  `Pattern length exceeds max of ${max}.`;\n\nconst MISSING_KEY_PROPERTY = (name) => `Missing ${name} property in key`;\n\nconst INVALID_KEY_WEIGHT_VALUE = (key) =>\n  `Property 'weight' in key '${key}' must be a positive integer`;\n\nconst hasOwn = Object.prototype.hasOwnProperty;\n\nclass KeyStore {\n  constructor(keys) {\n    this._keys = [];\n    this._keyMap = {};\n\n    let totalWeight = 0;\n\n    keys.forEach((key) => {\n      let obj = createKey(key);\n\n      totalWeight += obj.weight;\n\n      this._keys.push(obj);\n      this._keyMap[obj.id] = obj;\n\n      totalWeight += obj.weight;\n    });\n\n    // Normalize weights so that their sum is equal to 1\n    this._keys.forEach((key) => {\n      key.weight /= totalWeight;\n    });\n  }\n  get(keyId) {\n    return this._keyMap[keyId]\n  }\n  keys() {\n    return this._keys\n  }\n  toJSON() {\n    return JSON.stringify(this._keys)\n  }\n}\n\nfunction createKey(key) {\n  let path = null;\n  let id = null;\n  let src = null;\n  let weight = 1;\n  let getFn = null;\n\n  if (isString(key) || isArray(key)) {\n    src = key;\n    path = createKeyPath(key);\n    id = createKeyId(key);\n  } else {\n    if (!hasOwn.call(key, 'name')) {\n      throw new Error(MISSING_KEY_PROPERTY('name'))\n    }\n\n    const name = key.name;\n    src = name;\n\n    if (hasOwn.call(key, 'weight')) {\n      weight = key.weight;\n\n      if (weight <= 0) {\n        throw new Error(INVALID_KEY_WEIGHT_VALUE(name))\n      }\n    }\n\n    path = createKeyPath(name);\n    id = createKeyId(name);\n    getFn = key.getFn;\n  }\n\n  return { path, id, weight, src, getFn }\n}\n\nfunction createKeyPath(key) {\n  return isArray(key) ? key : key.split('.')\n}\n\nfunction createKeyId(key) {\n  return isArray(key) ? key.join('.') : key\n}\n\nfunction get(obj, path) {\n  let list = [];\n  let arr = false;\n\n  const deepGet = (obj, path, index) => {\n    if (!isDefined(obj)) {\n      return\n    }\n    if (!path[index]) {\n      // If there's no path left, we've arrived at the object we care about.\n      list.push(obj);\n    } else {\n      let key = path[index];\n\n      const value = obj[key];\n\n      if (!isDefined(value)) {\n        return\n      }\n\n      // If we're at the last value in the path, and if it's a string/number/bool,\n      // add it to the list\n      if (\n        index === path.length - 1 &&\n        (isString(value) || isNumber(value) || isBoolean(value))\n      ) {\n        list.push(toString(value));\n      } else if (isArray(value)) {\n        arr = true;\n        // Search each item in the array.\n        for (let i = 0, len = value.length; i < len; i += 1) {\n          deepGet(value[i], path, index + 1);\n        }\n      } else if (path.length) {\n        // An object. Recurse further.\n        deepGet(value, path, index + 1);\n      }\n    }\n  };\n\n  // Backwards compatibility (since path used to be a string)\n  deepGet(obj, isString(path) ? path.split('.') : path, 0);\n\n  return arr ? list : list[0]\n}\n\nconst MatchOptions = {\n  // Whether the matches should be included in the result set. When `true`, each record in the result\n  // set will include the indices of the matched characters.\n  // These can consequently be used for highlighting purposes.\n  includeMatches: false,\n  // When `true`, the matching function will continue to the end of a search pattern even if\n  // a perfect match has already been located in the string.\n  findAllMatches: false,\n  // Minimum number of characters that must be matched before a result is considered a match\n  minMatchCharLength: 1\n};\n\nconst BasicOptions = {\n  // When `true`, the algorithm continues searching to the end of the input even if a perfect\n  // match is found before the end of the same input.\n  isCaseSensitive: false,\n  // When true, the matching function will continue to the end of a search pattern even if\n  includeScore: false,\n  // List of properties that will be searched. This also supports nested properties.\n  keys: [],\n  // Whether to sort the result list, by score\n  shouldSort: true,\n  // Default sort function: sort by ascending score, ascending index\n  sortFn: (a, b) =>\n    a.score === b.score ? (a.idx < b.idx ? -1 : 1) : a.score < b.score ? -1 : 1\n};\n\nconst FuzzyOptions = {\n  // Approximately where in the text is the pattern expected to be found?\n  location: 0,\n  // At what point does the match algorithm give up. A threshold of '0.0' requires a perfect match\n  // (of both letters and location), a threshold of '1.0' would match anything.\n  threshold: 0.6,\n  // Determines how close the match must be to the fuzzy location (specified above).\n  // An exact letter match which is 'distance' characters away from the fuzzy location\n  // would score as a complete mismatch. A distance of '0' requires the match be at\n  // the exact location specified, a threshold of '1000' would require a perfect match\n  // to be within 800 characters of the fuzzy location to be found using a 0.8 threshold.\n  distance: 100\n};\n\nconst AdvancedOptions = {\n  // When `true`, it enables the use of unix-like search commands\n  useExtendedSearch: false,\n  // The get function to use when fetching an object's properties.\n  // The default will search nested paths *ie foo.bar.baz*\n  getFn: get,\n  // When `true`, search will ignore `location` and `distance`, so it won't matter\n  // where in the string the pattern appears.\n  // More info: https://fusejs.io/concepts/scoring-theory.html#fuzziness-score\n  ignoreLocation: false,\n  // When `true`, the calculation for the relevance score (used for sorting) will\n  // ignore the field-length norm.\n  // More info: https://fusejs.io/concepts/scoring-theory.html#field-length-norm\n  ignoreFieldNorm: false,\n  // The weight to determine how much field length norm effects scoring.\n  fieldNormWeight: 1\n};\n\nvar Config = {\n  ...BasicOptions,\n  ...MatchOptions,\n  ...FuzzyOptions,\n  ...AdvancedOptions\n};\n\nconst SPACE = /[^ ]+/g;\n\n// Field-length norm: the shorter the field, the higher the weight.\n// Set to 3 decimals to reduce index size.\nfunction norm(weight = 1, mantissa = 3) {\n  const cache = new Map();\n  const m = Math.pow(10, mantissa);\n\n  return {\n    get(value) {\n      const numTokens = value.match(SPACE).length;\n\n      if (cache.has(numTokens)) {\n        return cache.get(numTokens)\n      }\n\n      // Default function is 1/sqrt(x), weight makes that variable\n      const norm = 1 / Math.pow(numTokens, 0.5 * weight);\n\n      // In place of `toFixed(mantissa)`, for faster computation\n      const n = parseFloat(Math.round(norm * m) / m);\n\n      cache.set(numTokens, n);\n\n      return n\n    },\n    clear() {\n      cache.clear();\n    }\n  }\n}\n\nclass FuseIndex {\n  constructor({\n    getFn = Config.getFn,\n    fieldNormWeight = Config.fieldNormWeight\n  } = {}) {\n    this.norm = norm(fieldNormWeight, 3);\n    this.getFn = getFn;\n    this.isCreated = false;\n\n    this.setIndexRecords();\n  }\n  setSources(docs = []) {\n    this.docs = docs;\n  }\n  setIndexRecords(records = []) {\n    this.records = records;\n  }\n  setKeys(keys = []) {\n    this.keys = keys;\n    this._keysMap = {};\n    keys.forEach((key, idx) => {\n      this._keysMap[key.id] = idx;\n    });\n  }\n  create() {\n    if (this.isCreated || !this.docs.length) {\n      return\n    }\n\n    this.isCreated = true;\n\n    // List is Array<String>\n    if (isString(this.docs[0])) {\n      this.docs.forEach((doc, docIndex) => {\n        this._addString(doc, docIndex);\n      });\n    } else {\n      // List is Array<Object>\n      this.docs.forEach((doc, docIndex) => {\n        this._addObject(doc, docIndex);\n      });\n    }\n\n    this.norm.clear();\n  }\n  // Adds a doc to the end of the index\n  add(doc) {\n    const idx = this.size();\n\n    if (isString(doc)) {\n      this._addString(doc, idx);\n    } else {\n      this._addObject(doc, idx);\n    }\n  }\n  // Removes the doc at the specified index of the index\n  removeAt(idx) {\n    this.records.splice(idx, 1);\n\n    // Change ref index of every subsquent doc\n    for (let i = idx, len = this.size(); i < len; i += 1) {\n      this.records[i].i -= 1;\n    }\n  }\n  getValueForItemAtKeyId(item, keyId) {\n    return item[this._keysMap[keyId]]\n  }\n  size() {\n    return this.records.length\n  }\n  _addString(doc, docIndex) {\n    if (!isDefined(doc) || isBlank(doc)) {\n      return\n    }\n\n    let record = {\n      v: doc,\n      i: docIndex,\n      n: this.norm.get(doc)\n    };\n\n    this.records.push(record);\n  }\n  _addObject(doc, docIndex) {\n    let record = { i: docIndex, $: {} };\n\n    // Iterate over every key (i.e, path), and fetch the value at that key\n    this.keys.forEach((key, keyIndex) => {\n      let value = key.getFn ? key.getFn(doc) : this.getFn(doc, key.path);\n\n      if (!isDefined(value)) {\n        return\n      }\n\n      if (isArray(value)) {\n        let subRecords = [];\n        const stack = [{ nestedArrIndex: -1, value }];\n\n        while (stack.length) {\n          const { nestedArrIndex, value } = stack.pop();\n\n          if (!isDefined(value)) {\n            continue\n          }\n\n          if (isString(value) && !isBlank(value)) {\n            let subRecord = {\n              v: value,\n              i: nestedArrIndex,\n              n: this.norm.get(value)\n            };\n\n            subRecords.push(subRecord);\n          } else if (isArray(value)) {\n            value.forEach((item, k) => {\n              stack.push({\n                nestedArrIndex: k,\n                value: item\n              });\n            });\n          } else ;\n        }\n        record.$[keyIndex] = subRecords;\n      } else if (isString(value) && !isBlank(value)) {\n        let subRecord = {\n          v: value,\n          n: this.norm.get(value)\n        };\n\n        record.$[keyIndex] = subRecord;\n      }\n    });\n\n    this.records.push(record);\n  }\n  toJSON() {\n    return {\n      keys: this.keys,\n      records: this.records\n    }\n  }\n}\n\nfunction createIndex(\n  keys,\n  docs,\n  { getFn = Config.getFn, fieldNormWeight = Config.fieldNormWeight } = {}\n) {\n  const myIndex = new FuseIndex({ getFn, fieldNormWeight });\n  myIndex.setKeys(keys.map(createKey));\n  myIndex.setSources(docs);\n  myIndex.create();\n  return myIndex\n}\n\nfunction parseIndex(\n  data,\n  { getFn = Config.getFn, fieldNormWeight = Config.fieldNormWeight } = {}\n) {\n  const { keys, records } = data;\n  const myIndex = new FuseIndex({ getFn, fieldNormWeight });\n  myIndex.setKeys(keys);\n  myIndex.setIndexRecords(records);\n  return myIndex\n}\n\nfunction computeScore$1(\n  pattern,\n  {\n    errors = 0,\n    currentLocation = 0,\n    expectedLocation = 0,\n    distance = Config.distance,\n    ignoreLocation = Config.ignoreLocation\n  } = {}\n) {\n  const accuracy = errors / pattern.length;\n\n  if (ignoreLocation) {\n    return accuracy\n  }\n\n  const proximity = Math.abs(expectedLocation - currentLocation);\n\n  if (!distance) {\n    // Dodge divide by zero error.\n    return proximity ? 1.0 : accuracy\n  }\n\n  return accuracy + proximity / distance\n}\n\nfunction convertMaskToIndices(\n  matchmask = [],\n  minMatchCharLength = Config.minMatchCharLength\n) {\n  let indices = [];\n  let start = -1;\n  let end = -1;\n  let i = 0;\n\n  for (let len = matchmask.length; i < len; i += 1) {\n    let match = matchmask[i];\n    if (match && start === -1) {\n      start = i;\n    } else if (!match && start !== -1) {\n      end = i - 1;\n      if (end - start + 1 >= minMatchCharLength) {\n        indices.push([start, end]);\n      }\n      start = -1;\n    }\n  }\n\n  // (i-1 - start) + 1 => i - start\n  if (matchmask[i - 1] && i - start >= minMatchCharLength) {\n    indices.push([start, i - 1]);\n  }\n\n  return indices\n}\n\n// Machine word size\nconst MAX_BITS = 32;\n\nfunction search(\n  text,\n  pattern,\n  patternAlphabet,\n  {\n    location = Config.location,\n    distance = Config.distance,\n    threshold = Config.threshold,\n    findAllMatches = Config.findAllMatches,\n    minMatchCharLength = Config.minMatchCharLength,\n    includeMatches = Config.includeMatches,\n    ignoreLocation = Config.ignoreLocation\n  } = {}\n) {\n  if (pattern.length > MAX_BITS) {\n    throw new Error(PATTERN_LENGTH_TOO_LARGE(MAX_BITS))\n  }\n\n  const patternLen = pattern.length;\n  // Set starting location at beginning text and initialize the alphabet.\n  const textLen = text.length;\n  // Handle the case when location > text.length\n  const expectedLocation = Math.max(0, Math.min(location, textLen));\n  // Highest score beyond which we give up.\n  let currentThreshold = threshold;\n  // Is there a nearby exact match? (speedup)\n  let bestLocation = expectedLocation;\n\n  // Performance: only computer matches when the minMatchCharLength > 1\n  // OR if `includeMatches` is true.\n  const computeMatches = minMatchCharLength > 1 || includeMatches;\n  // A mask of the matches, used for building the indices\n  const matchMask = computeMatches ? Array(textLen) : [];\n\n  let index;\n\n  // Get all exact matches, here for speed up\n  while ((index = text.indexOf(pattern, bestLocation)) > -1) {\n    let score = computeScore$1(pattern, {\n      currentLocation: index,\n      expectedLocation,\n      distance,\n      ignoreLocation\n    });\n\n    currentThreshold = Math.min(score, currentThreshold);\n    bestLocation = index + patternLen;\n\n    if (computeMatches) {\n      let i = 0;\n      while (i < patternLen) {\n        matchMask[index + i] = 1;\n        i += 1;\n      }\n    }\n  }\n\n  // Reset the best location\n  bestLocation = -1;\n\n  let lastBitArr = [];\n  let finalScore = 1;\n  let binMax = patternLen + textLen;\n\n  const mask = 1 << (patternLen - 1);\n\n  for (let i = 0; i < patternLen; i += 1) {\n    // Scan for the best match; each iteration allows for one more error.\n    // Run a binary search to determine how far from the match location we can stray\n    // at this error level.\n    let binMin = 0;\n    let binMid = binMax;\n\n    while (binMin < binMid) {\n      const score = computeScore$1(pattern, {\n        errors: i,\n        currentLocation: expectedLocation + binMid,\n        expectedLocation,\n        distance,\n        ignoreLocation\n      });\n\n      if (score <= currentThreshold) {\n        binMin = binMid;\n      } else {\n        binMax = binMid;\n      }\n\n      binMid = Math.floor((binMax - binMin) / 2 + binMin);\n    }\n\n    // Use the result from this iteration as the maximum for the next.\n    binMax = binMid;\n\n    let start = Math.max(1, expectedLocation - binMid + 1);\n    let finish = findAllMatches\n      ? textLen\n      : Math.min(expectedLocation + binMid, textLen) + patternLen;\n\n    // Initialize the bit array\n    let bitArr = Array(finish + 2);\n\n    bitArr[finish + 1] = (1 << i) - 1;\n\n    for (let j = finish; j >= start; j -= 1) {\n      let currentLocation = j - 1;\n      let charMatch = patternAlphabet[text.charAt(currentLocation)];\n\n      if (computeMatches) {\n        // Speed up: quick bool to int conversion (i.e, `charMatch ? 1 : 0`)\n        matchMask[currentLocation] = +!!charMatch;\n      }\n\n      // First pass: exact match\n      bitArr[j] = ((bitArr[j + 1] << 1) | 1) & charMatch;\n\n      // Subsequent passes: fuzzy match\n      if (i) {\n        bitArr[j] |=\n          ((lastBitArr[j + 1] | lastBitArr[j]) << 1) | 1 | lastBitArr[j + 1];\n      }\n\n      if (bitArr[j] & mask) {\n        finalScore = computeScore$1(pattern, {\n          errors: i,\n          currentLocation,\n          expectedLocation,\n          distance,\n          ignoreLocation\n        });\n\n        // This match will almost certainly be better than any existing match.\n        // But check anyway.\n        if (finalScore <= currentThreshold) {\n          // Indeed it is\n          currentThreshold = finalScore;\n          bestLocation = currentLocation;\n\n          // Already passed `loc`, downhill from here on in.\n          if (bestLocation <= expectedLocation) {\n            break\n          }\n\n          // When passing `bestLocation`, don't exceed our current distance from `expectedLocation`.\n          start = Math.max(1, 2 * expectedLocation - bestLocation);\n        }\n      }\n    }\n\n    // No hope for a (better) match at greater error levels.\n    const score = computeScore$1(pattern, {\n      errors: i + 1,\n      currentLocation: expectedLocation,\n      expectedLocation,\n      distance,\n      ignoreLocation\n    });\n\n    if (score > currentThreshold) {\n      break\n    }\n\n    lastBitArr = bitArr;\n  }\n\n  const result = {\n    isMatch: bestLocation >= 0,\n    // Count exact matches (those with a score of 0) to be \"almost\" exact\n    score: Math.max(0.001, finalScore)\n  };\n\n  if (computeMatches) {\n    const indices = convertMaskToIndices(matchMask, minMatchCharLength);\n    if (!indices.length) {\n      result.isMatch = false;\n    } else if (includeMatches) {\n      result.indices = indices;\n    }\n  }\n\n  return result\n}\n\nfunction createPatternAlphabet(pattern) {\n  let mask = {};\n\n  for (let i = 0, len = pattern.length; i < len; i += 1) {\n    const char = pattern.charAt(i);\n    mask[char] = (mask[char] || 0) | (1 << (len - i - 1));\n  }\n\n  return mask\n}\n\nclass BitapSearch {\n  constructor(\n    pattern,\n    {\n      location = Config.location,\n      threshold = Config.threshold,\n      distance = Config.distance,\n      includeMatches = Config.includeMatches,\n      findAllMatches = Config.findAllMatches,\n      minMatchCharLength = Config.minMatchCharLength,\n      isCaseSensitive = Config.isCaseSensitive,\n      ignoreLocation = Config.ignoreLocation\n    } = {}\n  ) {\n    this.options = {\n      location,\n      threshold,\n      distance,\n      includeMatches,\n      findAllMatches,\n      minMatchCharLength,\n      isCaseSensitive,\n      ignoreLocation\n    };\n\n    this.pattern = isCaseSensitive ? pattern : pattern.toLowerCase();\n\n    this.chunks = [];\n\n    if (!this.pattern.length) {\n      return\n    }\n\n    const addChunk = (pattern, startIndex) => {\n      this.chunks.push({\n        pattern,\n        alphabet: createPatternAlphabet(pattern),\n        startIndex\n      });\n    };\n\n    const len = this.pattern.length;\n\n    if (len > MAX_BITS) {\n      let i = 0;\n      const remainder = len % MAX_BITS;\n      const end = len - remainder;\n\n      while (i < end) {\n        addChunk(this.pattern.substr(i, MAX_BITS), i);\n        i += MAX_BITS;\n      }\n\n      if (remainder) {\n        const startIndex = len - MAX_BITS;\n        addChunk(this.pattern.substr(startIndex), startIndex);\n      }\n    } else {\n      addChunk(this.pattern, 0);\n    }\n  }\n\n  searchIn(text) {\n    const { isCaseSensitive, includeMatches } = this.options;\n\n    if (!isCaseSensitive) {\n      text = text.toLowerCase();\n    }\n\n    // Exact match\n    if (this.pattern === text) {\n      let result = {\n        isMatch: true,\n        score: 0\n      };\n\n      if (includeMatches) {\n        result.indices = [[0, text.length - 1]];\n      }\n\n      return result\n    }\n\n    // Otherwise, use Bitap algorithm\n    const {\n      location,\n      distance,\n      threshold,\n      findAllMatches,\n      minMatchCharLength,\n      ignoreLocation\n    } = this.options;\n\n    let allIndices = [];\n    let totalScore = 0;\n    let hasMatches = false;\n\n    this.chunks.forEach(({ pattern, alphabet, startIndex }) => {\n      const { isMatch, score, indices } = search(text, pattern, alphabet, {\n        location: location + startIndex,\n        distance,\n        threshold,\n        findAllMatches,\n        minMatchCharLength,\n        includeMatches,\n        ignoreLocation\n      });\n\n      if (isMatch) {\n        hasMatches = true;\n      }\n\n      totalScore += score;\n\n      if (isMatch && indices) {\n        allIndices = [...allIndices, ...indices];\n      }\n    });\n\n    let result = {\n      isMatch: hasMatches,\n      score: hasMatches ? totalScore / this.chunks.length : 1\n    };\n\n    if (hasMatches && includeMatches) {\n      result.indices = allIndices;\n    }\n\n    return result\n  }\n}\n\nclass BaseMatch {\n  constructor(pattern) {\n    this.pattern = pattern;\n  }\n  static isMultiMatch(pattern) {\n    return getMatch(pattern, this.multiRegex)\n  }\n  static isSingleMatch(pattern) {\n    return getMatch(pattern, this.singleRegex)\n  }\n  search(/*text*/) {}\n}\n\nfunction getMatch(pattern, exp) {\n  const matches = pattern.match(exp);\n  return matches ? matches[1] : null\n}\n\n// Token: 'file\n\nclass ExactMatch extends BaseMatch {\n  constructor(pattern) {\n    super(pattern);\n  }\n  static get type() {\n    return 'exact'\n  }\n  static get multiRegex() {\n    return /^=\"(.*)\"$/\n  }\n  static get singleRegex() {\n    return /^=(.*)$/\n  }\n  search(text) {\n    const isMatch = text === this.pattern;\n\n    return {\n      isMatch,\n      score: isMatch ? 0 : 1,\n      indices: [0, this.pattern.length - 1]\n    }\n  }\n}\n\n// Token: !fire\n\nclass InverseExactMatch extends BaseMatch {\n  constructor(pattern) {\n    super(pattern);\n  }\n  static get type() {\n    return 'inverse-exact'\n  }\n  static get multiRegex() {\n    return /^!\"(.*)\"$/\n  }\n  static get singleRegex() {\n    return /^!(.*)$/\n  }\n  search(text) {\n    const index = text.indexOf(this.pattern);\n    const isMatch = index === -1;\n\n    return {\n      isMatch,\n      score: isMatch ? 0 : 1,\n      indices: [0, text.length - 1]\n    }\n  }\n}\n\n// Token: ^file\n\nclass PrefixExactMatch extends BaseMatch {\n  constructor(pattern) {\n    super(pattern);\n  }\n  static get type() {\n    return 'prefix-exact'\n  }\n  static get multiRegex() {\n    return /^\\^\"(.*)\"$/\n  }\n  static get singleRegex() {\n    return /^\\^(.*)$/\n  }\n  search(text) {\n    const isMatch = text.startsWith(this.pattern);\n\n    return {\n      isMatch,\n      score: isMatch ? 0 : 1,\n      indices: [0, this.pattern.length - 1]\n    }\n  }\n}\n\n// Token: !^fire\n\nclass InversePrefixExactMatch extends BaseMatch {\n  constructor(pattern) {\n    super(pattern);\n  }\n  static get type() {\n    return 'inverse-prefix-exact'\n  }\n  static get multiRegex() {\n    return /^!\\^\"(.*)\"$/\n  }\n  static get singleRegex() {\n    return /^!\\^(.*)$/\n  }\n  search(text) {\n    const isMatch = !text.startsWith(this.pattern);\n\n    return {\n      isMatch,\n      score: isMatch ? 0 : 1,\n      indices: [0, text.length - 1]\n    }\n  }\n}\n\n// Token: .file$\n\nclass SuffixExactMatch extends BaseMatch {\n  constructor(pattern) {\n    super(pattern);\n  }\n  static get type() {\n    return 'suffix-exact'\n  }\n  static get multiRegex() {\n    return /^\"(.*)\"\\$$/\n  }\n  static get singleRegex() {\n    return /^(.*)\\$$/\n  }\n  search(text) {\n    const isMatch = text.endsWith(this.pattern);\n\n    return {\n      isMatch,\n      score: isMatch ? 0 : 1,\n      indices: [text.length - this.pattern.length, text.length - 1]\n    }\n  }\n}\n\n// Token: !.file$\n\nclass InverseSuffixExactMatch extends BaseMatch {\n  constructor(pattern) {\n    super(pattern);\n  }\n  static get type() {\n    return 'inverse-suffix-exact'\n  }\n  static get multiRegex() {\n    return /^!\"(.*)\"\\$$/\n  }\n  static get singleRegex() {\n    return /^!(.*)\\$$/\n  }\n  search(text) {\n    const isMatch = !text.endsWith(this.pattern);\n    return {\n      isMatch,\n      score: isMatch ? 0 : 1,\n      indices: [0, text.length - 1]\n    }\n  }\n}\n\nclass FuzzyMatch extends BaseMatch {\n  constructor(\n    pattern,\n    {\n      location = Config.location,\n      threshold = Config.threshold,\n      distance = Config.distance,\n      includeMatches = Config.includeMatches,\n      findAllMatches = Config.findAllMatches,\n      minMatchCharLength = Config.minMatchCharLength,\n      isCaseSensitive = Config.isCaseSensitive,\n      ignoreLocation = Config.ignoreLocation\n    } = {}\n  ) {\n    super(pattern);\n    this._bitapSearch = new BitapSearch(pattern, {\n      location,\n      threshold,\n      distance,\n      includeMatches,\n      findAllMatches,\n      minMatchCharLength,\n      isCaseSensitive,\n      ignoreLocation\n    });\n  }\n  static get type() {\n    return 'fuzzy'\n  }\n  static get multiRegex() {\n    return /^\"(.*)\"$/\n  }\n  static get singleRegex() {\n    return /^(.*)$/\n  }\n  search(text) {\n    return this._bitapSearch.searchIn(text)\n  }\n}\n\n// Token: 'file\n\nclass IncludeMatch extends BaseMatch {\n  constructor(pattern) {\n    super(pattern);\n  }\n  static get type() {\n    return 'include'\n  }\n  static get multiRegex() {\n    return /^'\"(.*)\"$/\n  }\n  static get singleRegex() {\n    return /^'(.*)$/\n  }\n  search(text) {\n    let location = 0;\n    let index;\n\n    const indices = [];\n    const patternLen = this.pattern.length;\n\n    // Get all exact matches\n    while ((index = text.indexOf(this.pattern, location)) > -1) {\n      location = index + patternLen;\n      indices.push([index, location - 1]);\n    }\n\n    const isMatch = !!indices.length;\n\n    return {\n      isMatch,\n      score: isMatch ? 0 : 1,\n      indices\n    }\n  }\n}\n\n// ❗Order is important. DO NOT CHANGE.\nconst searchers = [\n  ExactMatch,\n  IncludeMatch,\n  PrefixExactMatch,\n  InversePrefixExactMatch,\n  InverseSuffixExactMatch,\n  SuffixExactMatch,\n  InverseExactMatch,\n  FuzzyMatch\n];\n\nconst searchersLen = searchers.length;\n\n// Regex to split by spaces, but keep anything in quotes together\nconst SPACE_RE = / +(?=(?:[^\\\"]*\\\"[^\\\"]*\\\")*[^\\\"]*$)/;\nconst OR_TOKEN = '|';\n\n// Return a 2D array representation of the query, for simpler parsing.\n// Example:\n// \"^core go$ | rb$ | py$ xy$\" => [[\"^core\", \"go$\"], [\"rb$\"], [\"py$\", \"xy$\"]]\nfunction parseQuery(pattern, options = {}) {\n  return pattern.split(OR_TOKEN).map((item) => {\n    let query = item\n      .trim()\n      .split(SPACE_RE)\n      .filter((item) => item && !!item.trim());\n\n    let results = [];\n    for (let i = 0, len = query.length; i < len; i += 1) {\n      const queryItem = query[i];\n\n      // 1. Handle multiple query match (i.e, once that are quoted, like `\"hello world\"`)\n      let found = false;\n      let idx = -1;\n      while (!found && ++idx < searchersLen) {\n        const searcher = searchers[idx];\n        let token = searcher.isMultiMatch(queryItem);\n        if (token) {\n          results.push(new searcher(token, options));\n          found = true;\n        }\n      }\n\n      if (found) {\n        continue\n      }\n\n      // 2. Handle single query matches (i.e, once that are *not* quoted)\n      idx = -1;\n      while (++idx < searchersLen) {\n        const searcher = searchers[idx];\n        let token = searcher.isSingleMatch(queryItem);\n        if (token) {\n          results.push(new searcher(token, options));\n          break\n        }\n      }\n    }\n\n    return results\n  })\n}\n\n// These extended matchers can return an array of matches, as opposed\n// to a singl match\nconst MultiMatchSet = new Set([FuzzyMatch.type, IncludeMatch.type]);\n\n/**\n * Command-like searching\n * ======================\n *\n * Given multiple search terms delimited by spaces.e.g. `^jscript .python$ ruby !java`,\n * search in a given text.\n *\n * Search syntax:\n *\n * | Token       | Match type                 | Description                            |\n * | ----------- | -------------------------- | -------------------------------------- |\n * | `jscript`   | fuzzy-match                | Items that fuzzy match `jscript`       |\n * | `=scheme`   | exact-match                | Items that are `scheme`                |\n * | `'python`   | include-match              | Items that include `python`            |\n * | `!ruby`     | inverse-exact-match        | Items that do not include `ruby`       |\n * | `^java`     | prefix-exact-match         | Items that start with `java`           |\n * | `!^earlang` | inverse-prefix-exact-match | Items that do not start with `earlang` |\n * | `.js$`      | suffix-exact-match         | Items that end with `.js`              |\n * | `!.go$`     | inverse-suffix-exact-match | Items that do not end with `.go`       |\n *\n * A single pipe character acts as an OR operator. For example, the following\n * query matches entries that start with `core` and end with either`go`, `rb`,\n * or`py`.\n *\n * ```\n * ^core go$ | rb$ | py$\n * ```\n */\nclass ExtendedSearch {\n  constructor(\n    pattern,\n    {\n      isCaseSensitive = Config.isCaseSensitive,\n      includeMatches = Config.includeMatches,\n      minMatchCharLength = Config.minMatchCharLength,\n      ignoreLocation = Config.ignoreLocation,\n      findAllMatches = Config.findAllMatches,\n      location = Config.location,\n      threshold = Config.threshold,\n      distance = Config.distance\n    } = {}\n  ) {\n    this.query = null;\n    this.options = {\n      isCaseSensitive,\n      includeMatches,\n      minMatchCharLength,\n      findAllMatches,\n      ignoreLocation,\n      location,\n      threshold,\n      distance\n    };\n\n    this.pattern = isCaseSensitive ? pattern : pattern.toLowerCase();\n    this.query = parseQuery(this.pattern, this.options);\n  }\n\n  static condition(_, options) {\n    return options.useExtendedSearch\n  }\n\n  searchIn(text) {\n    const query = this.query;\n\n    if (!query) {\n      return {\n        isMatch: false,\n        score: 1\n      }\n    }\n\n    const { includeMatches, isCaseSensitive } = this.options;\n\n    text = isCaseSensitive ? text : text.toLowerCase();\n\n    let numMatches = 0;\n    let allIndices = [];\n    let totalScore = 0;\n\n    // ORs\n    for (let i = 0, qLen = query.length; i < qLen; i += 1) {\n      const searchers = query[i];\n\n      // Reset indices\n      allIndices.length = 0;\n      numMatches = 0;\n\n      // ANDs\n      for (let j = 0, pLen = searchers.length; j < pLen; j += 1) {\n        const searcher = searchers[j];\n        const { isMatch, indices, score } = searcher.search(text);\n\n        if (isMatch) {\n          numMatches += 1;\n          totalScore += score;\n          if (includeMatches) {\n            const type = searcher.constructor.type;\n            if (MultiMatchSet.has(type)) {\n              allIndices = [...allIndices, ...indices];\n            } else {\n              allIndices.push(indices);\n            }\n          }\n        } else {\n          totalScore = 0;\n          numMatches = 0;\n          allIndices.length = 0;\n          break\n        }\n      }\n\n      // OR condition, so if TRUE, return\n      if (numMatches) {\n        let result = {\n          isMatch: true,\n          score: totalScore / numMatches\n        };\n\n        if (includeMatches) {\n          result.indices = allIndices;\n        }\n\n        return result\n      }\n    }\n\n    // Nothing was matched\n    return {\n      isMatch: false,\n      score: 1\n    }\n  }\n}\n\nconst registeredSearchers = [];\n\nfunction register(...args) {\n  registeredSearchers.push(...args);\n}\n\nfunction createSearcher(pattern, options) {\n  for (let i = 0, len = registeredSearchers.length; i < len; i += 1) {\n    let searcherClass = registeredSearchers[i];\n    if (searcherClass.condition(pattern, options)) {\n      return new searcherClass(pattern, options)\n    }\n  }\n\n  return new BitapSearch(pattern, options)\n}\n\nconst LogicalOperator = {\n  AND: '$and',\n  OR: '$or'\n};\n\nconst KeyType = {\n  PATH: '$path',\n  PATTERN: '$val'\n};\n\nconst isExpression = (query) =>\n  !!(query[LogicalOperator.AND] || query[LogicalOperator.OR]);\n\nconst isPath = (query) => !!query[KeyType.PATH];\n\nconst isLeaf = (query) =>\n  !isArray(query) && isObject(query) && !isExpression(query);\n\nconst convertToExplicit = (query) => ({\n  [LogicalOperator.AND]: Object.keys(query).map((key) => ({\n    [key]: query[key]\n  }))\n});\n\n// When `auto` is `true`, the parse function will infer and initialize and add\n// the appropriate `Searcher` instance\nfunction parse(query, options, { auto = true } = {}) {\n  const next = (query) => {\n    let keys = Object.keys(query);\n\n    const isQueryPath = isPath(query);\n\n    if (!isQueryPath && keys.length > 1 && !isExpression(query)) {\n      return next(convertToExplicit(query))\n    }\n\n    if (isLeaf(query)) {\n      const key = isQueryPath ? query[KeyType.PATH] : keys[0];\n\n      const pattern = isQueryPath ? query[KeyType.PATTERN] : query[key];\n\n      if (!isString(pattern)) {\n        throw new Error(LOGICAL_SEARCH_INVALID_QUERY_FOR_KEY(key))\n      }\n\n      const obj = {\n        keyId: createKeyId(key),\n        pattern\n      };\n\n      if (auto) {\n        obj.searcher = createSearcher(pattern, options);\n      }\n\n      return obj\n    }\n\n    let node = {\n      children: [],\n      operator: keys[0]\n    };\n\n    keys.forEach((key) => {\n      const value = query[key];\n\n      if (isArray(value)) {\n        value.forEach((item) => {\n          node.children.push(next(item));\n        });\n      }\n    });\n\n    return node\n  };\n\n  if (!isExpression(query)) {\n    query = convertToExplicit(query);\n  }\n\n  return next(query)\n}\n\n// Practical scoring function\nfunction computeScore(\n  results,\n  { ignoreFieldNorm = Config.ignoreFieldNorm }\n) {\n  results.forEach((result) => {\n    let totalScore = 1;\n\n    result.matches.forEach(({ key, norm, score }) => {\n      const weight = key ? key.weight : null;\n\n      totalScore *= Math.pow(\n        score === 0 && weight ? Number.EPSILON : score,\n        (weight || 1) * (ignoreFieldNorm ? 1 : norm)\n      );\n    });\n\n    result.score = totalScore;\n  });\n}\n\nfunction transformMatches(result, data) {\n  const matches = result.matches;\n  data.matches = [];\n\n  if (!isDefined(matches)) {\n    return\n  }\n\n  matches.forEach((match) => {\n    if (!isDefined(match.indices) || !match.indices.length) {\n      return\n    }\n\n    const { indices, value } = match;\n\n    let obj = {\n      indices,\n      value\n    };\n\n    if (match.key) {\n      obj.key = match.key.src;\n    }\n\n    if (match.idx > -1) {\n      obj.refIndex = match.idx;\n    }\n\n    data.matches.push(obj);\n  });\n}\n\nfunction transformScore(result, data) {\n  data.score = result.score;\n}\n\nfunction format(\n  results,\n  docs,\n  {\n    includeMatches = Config.includeMatches,\n    includeScore = Config.includeScore\n  } = {}\n) {\n  const transformers = [];\n\n  if (includeMatches) transformers.push(transformMatches);\n  if (includeScore) transformers.push(transformScore);\n\n  return results.map((result) => {\n    const { idx } = result;\n\n    const data = {\n      item: docs[idx],\n      refIndex: idx\n    };\n\n    if (transformers.length) {\n      transformers.forEach((transformer) => {\n        transformer(result, data);\n      });\n    }\n\n    return data\n  })\n}\n\nclass Fuse {\n  constructor(docs, options = {}, index) {\n    this.options = { ...Config, ...options };\n\n    if (\n      this.options.useExtendedSearch &&\n      !true\n    ) {\n      throw new Error(EXTENDED_SEARCH_UNAVAILABLE)\n    }\n\n    this._keyStore = new KeyStore(this.options.keys);\n\n    this.setCollection(docs, index);\n  }\n\n  setCollection(docs, index) {\n    this._docs = docs;\n\n    if (index && !(index instanceof FuseIndex)) {\n      throw new Error(INCORRECT_INDEX_TYPE)\n    }\n\n    this._myIndex =\n      index ||\n      createIndex(this.options.keys, this._docs, {\n        getFn: this.options.getFn,\n        fieldNormWeight: this.options.fieldNormWeight\n      });\n  }\n\n  add(doc) {\n    if (!isDefined(doc)) {\n      return\n    }\n\n    this._docs.push(doc);\n    this._myIndex.add(doc);\n  }\n\n  remove(predicate = (/* doc, idx */) => false) {\n    const results = [];\n\n    for (let i = 0, len = this._docs.length; i < len; i += 1) {\n      const doc = this._docs[i];\n      if (predicate(doc, i)) {\n        this.removeAt(i);\n        i -= 1;\n        len -= 1;\n\n        results.push(doc);\n      }\n    }\n\n    return results\n  }\n\n  removeAt(idx) {\n    this._docs.splice(idx, 1);\n    this._myIndex.removeAt(idx);\n  }\n\n  getIndex() {\n    return this._myIndex\n  }\n\n  search(query, { limit = -1 } = {}) {\n    const {\n      includeMatches,\n      includeScore,\n      shouldSort,\n      sortFn,\n      ignoreFieldNorm\n    } = this.options;\n\n    let results = isString(query)\n      ? isString(this._docs[0])\n        ? this._searchStringList(query)\n        : this._searchObjectList(query)\n      : this._searchLogical(query);\n\n    computeScore(results, { ignoreFieldNorm });\n\n    if (shouldSort) {\n      results.sort(sortFn);\n    }\n\n    if (isNumber(limit) && limit > -1) {\n      results = results.slice(0, limit);\n    }\n\n    return format(results, this._docs, {\n      includeMatches,\n      includeScore\n    })\n  }\n\n  _searchStringList(query) {\n    const searcher = createSearcher(query, this.options);\n    const { records } = this._myIndex;\n    const results = [];\n\n    // Iterate over every string in the index\n    records.forEach(({ v: text, i: idx, n: norm }) => {\n      if (!isDefined(text)) {\n        return\n      }\n\n      const { isMatch, score, indices } = searcher.searchIn(text);\n\n      if (isMatch) {\n        results.push({\n          item: text,\n          idx,\n          matches: [{ score, value: text, norm, indices }]\n        });\n      }\n    });\n\n    return results\n  }\n\n  _searchLogical(query) {\n\n    const expression = parse(query, this.options);\n\n    const evaluate = (node, item, idx) => {\n      if (!node.children) {\n        const { keyId, searcher } = node;\n\n        const matches = this._findMatches({\n          key: this._keyStore.get(keyId),\n          value: this._myIndex.getValueForItemAtKeyId(item, keyId),\n          searcher\n        });\n\n        if (matches && matches.length) {\n          return [\n            {\n              idx,\n              item,\n              matches\n            }\n          ]\n        }\n\n        return []\n      }\n\n      const res = [];\n      for (let i = 0, len = node.children.length; i < len; i += 1) {\n        const child = node.children[i];\n        const result = evaluate(child, item, idx);\n        if (result.length) {\n          res.push(...result);\n        } else if (node.operator === LogicalOperator.AND) {\n          return []\n        }\n      }\n      return res\n    };\n\n    const records = this._myIndex.records;\n    const resultMap = {};\n    const results = [];\n\n    records.forEach(({ $: item, i: idx }) => {\n      if (isDefined(item)) {\n        let expResults = evaluate(expression, item, idx);\n\n        if (expResults.length) {\n          // Dedupe when adding\n          if (!resultMap[idx]) {\n            resultMap[idx] = { idx, item, matches: [] };\n            results.push(resultMap[idx]);\n          }\n          expResults.forEach(({ matches }) => {\n            resultMap[idx].matches.push(...matches);\n          });\n        }\n      }\n    });\n\n    return results\n  }\n\n  _searchObjectList(query) {\n    const searcher = createSearcher(query, this.options);\n    const { keys, records } = this._myIndex;\n    const results = [];\n\n    // List is Array<Object>\n    records.forEach(({ $: item, i: idx }) => {\n      if (!isDefined(item)) {\n        return\n      }\n\n      let matches = [];\n\n      // Iterate over every key (i.e, path), and fetch the value at that key\n      keys.forEach((key, keyIndex) => {\n        matches.push(\n          ...this._findMatches({\n            key,\n            value: item[keyIndex],\n            searcher\n          })\n        );\n      });\n\n      if (matches.length) {\n        results.push({\n          idx,\n          item,\n          matches\n        });\n      }\n    });\n\n    return results\n  }\n  _findMatches({ key, value, searcher }) {\n    if (!isDefined(value)) {\n      return []\n    }\n\n    let matches = [];\n\n    if (isArray(value)) {\n      value.forEach(({ v: text, i: idx, n: norm }) => {\n        if (!isDefined(text)) {\n          return\n        }\n\n        const { isMatch, score, indices } = searcher.searchIn(text);\n\n        if (isMatch) {\n          matches.push({\n            score,\n            key,\n            value: text,\n            idx,\n            norm,\n            indices\n          });\n        }\n      });\n    } else {\n      const { v: text, n: norm } = value;\n\n      const { isMatch, score, indices } = searcher.searchIn(text);\n\n      if (isMatch) {\n        matches.push({ score, key, value: text, norm, indices });\n      }\n    }\n\n    return matches\n  }\n}\n\nFuse.version = '6.6.2';\nFuse.createIndex = createIndex;\nFuse.parseIndex = parseIndex;\nFuse.config = Config;\n\n{\n  Fuse.parseQuery = parse;\n}\n\n{\n  register(ExtendedSearch);\n}\n\nexport { Fuse as default };\n","var rbush = require('rbush');\nvar helpers = require('@turf/helpers');\nvar meta = require('@turf/meta');\nvar turfBBox = require('@turf/bbox').default;\nvar featureEach = meta.featureEach;\nvar coordEach = meta.coordEach;\nvar polygon = helpers.polygon;\nvar featureCollection = helpers.featureCollection;\n\n/**\n * GeoJSON implementation of [RBush](https://github.com/mourner/rbush#rbush) spatial index.\n *\n * @name rbush\n * @param {number} [maxEntries=9] defines the maximum number of entries in a tree node. 9 (used by default) is a\n * reasonable choice for most applications. Higher value means faster insertion and slower search, and vice versa.\n * @returns {RBush} GeoJSON RBush\n * @example\n * var geojsonRbush = require('geojson-rbush').default;\n * var tree = geojsonRbush();\n */\nfunction geojsonRbush(maxEntries) {\n    var tree = new rbush(maxEntries);\n    /**\n     * [insert](https://github.com/mourner/rbush#data-format)\n     *\n     * @param {Feature} feature insert single GeoJSON Feature\n     * @returns {RBush} GeoJSON RBush\n     * @example\n     * var poly = turf.polygon([[[-78, 41], [-67, 41], [-67, 48], [-78, 48], [-78, 41]]]);\n     * tree.insert(poly)\n     */\n    tree.insert = function (feature) {\n        if (feature.type !== 'Feature') throw new Error('invalid feature');\n        feature.bbox = feature.bbox ? feature.bbox : turfBBox(feature);\n        return rbush.prototype.insert.call(this, feature);\n    };\n\n    /**\n     * [load](https://github.com/mourner/rbush#bulk-inserting-data)\n     *\n     * @param {FeatureCollection|Array<Feature>} features load entire GeoJSON FeatureCollection\n     * @returns {RBush} GeoJSON RBush\n     * @example\n     * var polys = turf.polygons([\n     *     [[[-78, 41], [-67, 41], [-67, 48], [-78, 48], [-78, 41]]],\n     *     [[[-93, 32], [-83, 32], [-83, 39], [-93, 39], [-93, 32]]]\n     * ]);\n     * tree.load(polys);\n     */\n    tree.load = function (features) {\n        var load = [];\n        // Load an Array of Features\n        if (Array.isArray(features)) {\n            features.forEach(function (feature) {\n                if (feature.type !== 'Feature') throw new Error('invalid features');\n                feature.bbox = feature.bbox ? feature.bbox : turfBBox(feature);\n                load.push(feature);\n            });\n        } else {\n            // Load a FeatureCollection\n            featureEach(features, function (feature) {\n                if (feature.type !== 'Feature') throw new Error('invalid features');\n                feature.bbox = feature.bbox ? feature.bbox : turfBBox(feature);\n                load.push(feature);\n            });\n        }\n        return rbush.prototype.load.call(this, load);\n    };\n\n    /**\n     * [remove](https://github.com/mourner/rbush#removing-data)\n     *\n     * @param {Feature} feature remove single GeoJSON Feature\n     * @param {Function} equals Pass a custom equals function to compare by value for removal.\n     * @returns {RBush} GeoJSON RBush\n     * @example\n     * var poly = turf.polygon([[[-78, 41], [-67, 41], [-67, 48], [-78, 48], [-78, 41]]]);\n     *\n     * tree.remove(poly);\n     */\n    tree.remove = function (feature, equals) {\n        if (feature.type !== 'Feature') throw new Error('invalid feature');\n        feature.bbox = feature.bbox ? feature.bbox : turfBBox(feature);\n        return rbush.prototype.remove.call(this, feature, equals);\n    };\n\n    /**\n     * [clear](https://github.com/mourner/rbush#removing-data)\n     *\n     * @returns {RBush} GeoJSON Rbush\n     * @example\n     * tree.clear()\n     */\n    tree.clear = function () {\n        return rbush.prototype.clear.call(this);\n    };\n\n    /**\n     * [search](https://github.com/mourner/rbush#search)\n     *\n     * @param {BBox|FeatureCollection|Feature} geojson search with GeoJSON\n     * @returns {FeatureCollection} all features that intersects with the given GeoJSON.\n     * @example\n     * var poly = turf.polygon([[[-78, 41], [-67, 41], [-67, 48], [-78, 48], [-78, 41]]]);\n     *\n     * tree.search(poly);\n     */\n    tree.search = function (geojson) {\n        var features = rbush.prototype.search.call(this, this.toBBox(geojson));\n        return featureCollection(features);\n    };\n\n    /**\n     * [collides](https://github.com/mourner/rbush#collisions)\n     *\n     * @param {BBox|FeatureCollection|Feature} geojson collides with GeoJSON\n     * @returns {boolean} true if there are any items intersecting the given GeoJSON, otherwise false.\n     * @example\n     * var poly = turf.polygon([[[-78, 41], [-67, 41], [-67, 48], [-78, 48], [-78, 41]]]);\n     *\n     * tree.collides(poly);\n     */\n    tree.collides = function (geojson) {\n        return rbush.prototype.collides.call(this, this.toBBox(geojson));\n    };\n\n    /**\n     * [all](https://github.com/mourner/rbush#search)\n     *\n     * @returns {FeatureCollection} all the features in RBush\n     * @example\n     * tree.all()\n     */\n    tree.all = function () {\n        var features = rbush.prototype.all.call(this);\n        return featureCollection(features);\n    };\n\n    /**\n     * [toJSON](https://github.com/mourner/rbush#export-and-import)\n     *\n     * @returns {any} export data as JSON object\n     * @example\n     * var exported = tree.toJSON()\n     */\n    tree.toJSON = function () {\n        return rbush.prototype.toJSON.call(this);\n    };\n\n    /**\n     * [fromJSON](https://github.com/mourner/rbush#export-and-import)\n     *\n     * @param {any} json import previously exported data\n     * @returns {RBush} GeoJSON RBush\n     * @example\n     * var exported = {\n     *   \"children\": [\n     *     {\n     *       \"type\": \"Feature\",\n     *       \"geometry\": {\n     *         \"type\": \"Point\",\n     *         \"coordinates\": [110, 50]\n     *       },\n     *       \"properties\": {},\n     *       \"bbox\": [110, 50, 110, 50]\n     *     }\n     *   ],\n     *   \"height\": 1,\n     *   \"leaf\": true,\n     *   \"minX\": 110,\n     *   \"minY\": 50,\n     *   \"maxX\": 110,\n     *   \"maxY\": 50\n     * }\n     * tree.fromJSON(exported)\n     */\n    tree.fromJSON = function (json) {\n        return rbush.prototype.fromJSON.call(this, json);\n    };\n\n    /**\n     * Converts GeoJSON to {minX, minY, maxX, maxY} schema\n     *\n     * @private\n     * @param {BBox|FeatureCollection|Feature} geojson feature(s) to retrieve BBox from\n     * @returns {Object} converted to {minX, minY, maxX, maxY}\n     */\n    tree.toBBox = function (geojson) {\n        var bbox;\n        if (geojson.bbox) bbox = geojson.bbox;\n        else if (Array.isArray(geojson) && geojson.length === 4) bbox = geojson;\n        else if (Array.isArray(geojson) && geojson.length === 6) bbox = [geojson[0], geojson[1], geojson[3], geojson[4]];\n        else if (geojson.type === 'Feature') bbox = turfBBox(geojson);\n        else if (geojson.type === 'FeatureCollection') bbox = turfBBox(geojson);\n        else throw new Error('invalid geojson')\n\n        return {\n            minX: bbox[0],\n            minY: bbox[1],\n            maxX: bbox[2],\n            maxY: bbox[3]\n        };\n    };\n    return tree;\n}\n\nmodule.exports = geojsonRbush;\nmodule.exports.default = geojsonRbush;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * @module helpers\n */\n/**\n * Earth Radius used with the Harvesine formula and approximates using a spherical (non-ellipsoid) Earth.\n *\n * @memberof helpers\n * @type {number}\n */\nexports.earthRadius = 6371008.8;\n/**\n * Unit of measurement factors using a spherical (non-ellipsoid) earth radius.\n *\n * @memberof helpers\n * @type {Object}\n */\nexports.factors = {\n    centimeters: exports.earthRadius * 100,\n    centimetres: exports.earthRadius * 100,\n    degrees: exports.earthRadius / 111325,\n    feet: exports.earthRadius * 3.28084,\n    inches: exports.earthRadius * 39.37,\n    kilometers: exports.earthRadius / 1000,\n    kilometres: exports.earthRadius / 1000,\n    meters: exports.earthRadius,\n    metres: exports.earthRadius,\n    miles: exports.earthRadius / 1609.344,\n    millimeters: exports.earthRadius * 1000,\n    millimetres: exports.earthRadius * 1000,\n    nauticalmiles: exports.earthRadius / 1852,\n    radians: 1,\n    yards: exports.earthRadius * 1.0936,\n};\n/**\n * Units of measurement factors based on 1 meter.\n *\n * @memberof helpers\n * @type {Object}\n */\nexports.unitsFactors = {\n    centimeters: 100,\n    centimetres: 100,\n    degrees: 1 / 111325,\n    feet: 3.28084,\n    inches: 39.37,\n    kilometers: 1 / 1000,\n    kilometres: 1 / 1000,\n    meters: 1,\n    metres: 1,\n    miles: 1 / 1609.344,\n    millimeters: 1000,\n    millimetres: 1000,\n    nauticalmiles: 1 / 1852,\n    radians: 1 / exports.earthRadius,\n    yards: 1.0936133,\n};\n/**\n * Area of measurement factors based on 1 square meter.\n *\n * @memberof helpers\n * @type {Object}\n */\nexports.areaFactors = {\n    acres: 0.000247105,\n    centimeters: 10000,\n    centimetres: 10000,\n    feet: 10.763910417,\n    hectares: 0.0001,\n    inches: 1550.003100006,\n    kilometers: 0.000001,\n    kilometres: 0.000001,\n    meters: 1,\n    metres: 1,\n    miles: 3.86e-7,\n    millimeters: 1000000,\n    millimetres: 1000000,\n    yards: 1.195990046,\n};\n/**\n * Wraps a GeoJSON {@link Geometry} in a GeoJSON {@link Feature}.\n *\n * @name feature\n * @param {Geometry} geometry input geometry\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} a GeoJSON Feature\n * @example\n * var geometry = {\n *   \"type\": \"Point\",\n *   \"coordinates\": [110, 50]\n * };\n *\n * var feature = turf.feature(geometry);\n *\n * //=feature\n */\nfunction feature(geom, properties, options) {\n    if (options === void 0) { options = {}; }\n    var feat = { type: \"Feature\" };\n    if (options.id === 0 || options.id) {\n        feat.id = options.id;\n    }\n    if (options.bbox) {\n        feat.bbox = options.bbox;\n    }\n    feat.properties = properties || {};\n    feat.geometry = geom;\n    return feat;\n}\nexports.feature = feature;\n/**\n * Creates a GeoJSON {@link Geometry} from a Geometry string type & coordinates.\n * For GeometryCollection type use `helpers.geometryCollection`\n *\n * @name geometry\n * @param {string} type Geometry Type\n * @param {Array<any>} coordinates Coordinates\n * @param {Object} [options={}] Optional Parameters\n * @returns {Geometry} a GeoJSON Geometry\n * @example\n * var type = \"Point\";\n * var coordinates = [110, 50];\n * var geometry = turf.geometry(type, coordinates);\n * // => geometry\n */\nfunction geometry(type, coordinates, _options) {\n    if (_options === void 0) { _options = {}; }\n    switch (type) {\n        case \"Point\":\n            return point(coordinates).geometry;\n        case \"LineString\":\n            return lineString(coordinates).geometry;\n        case \"Polygon\":\n            return polygon(coordinates).geometry;\n        case \"MultiPoint\":\n            return multiPoint(coordinates).geometry;\n        case \"MultiLineString\":\n            return multiLineString(coordinates).geometry;\n        case \"MultiPolygon\":\n            return multiPolygon(coordinates).geometry;\n        default:\n            throw new Error(type + \" is invalid\");\n    }\n}\nexports.geometry = geometry;\n/**\n * Creates a {@link Point} {@link Feature} from a Position.\n *\n * @name point\n * @param {Array<number>} coordinates longitude, latitude position (each in decimal degrees)\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<Point>} a Point feature\n * @example\n * var point = turf.point([-75.343, 39.984]);\n *\n * //=point\n */\nfunction point(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    if (!coordinates) {\n        throw new Error(\"coordinates is required\");\n    }\n    if (!Array.isArray(coordinates)) {\n        throw new Error(\"coordinates must be an Array\");\n    }\n    if (coordinates.length < 2) {\n        throw new Error(\"coordinates must be at least 2 numbers long\");\n    }\n    if (!isNumber(coordinates[0]) || !isNumber(coordinates[1])) {\n        throw new Error(\"coordinates must contain numbers\");\n    }\n    var geom = {\n        type: \"Point\",\n        coordinates: coordinates,\n    };\n    return feature(geom, properties, options);\n}\nexports.point = point;\n/**\n * Creates a {@link Point} {@link FeatureCollection} from an Array of Point coordinates.\n *\n * @name points\n * @param {Array<Array<number>>} coordinates an array of Points\n * @param {Object} [properties={}] Translate these properties to each Feature\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north]\n * associated with the FeatureCollection\n * @param {string|number} [options.id] Identifier associated with the FeatureCollection\n * @returns {FeatureCollection<Point>} Point Feature\n * @example\n * var points = turf.points([\n *   [-75, 39],\n *   [-80, 45],\n *   [-78, 50]\n * ]);\n *\n * //=points\n */\nfunction points(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    return featureCollection(coordinates.map(function (coords) {\n        return point(coords, properties);\n    }), options);\n}\nexports.points = points;\n/**\n * Creates a {@link Polygon} {@link Feature} from an Array of LinearRings.\n *\n * @name polygon\n * @param {Array<Array<Array<number>>>} coordinates an array of LinearRings\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<Polygon>} Polygon Feature\n * @example\n * var polygon = turf.polygon([[[-5, 52], [-4, 56], [-2, 51], [-7, 54], [-5, 52]]], { name: 'poly1' });\n *\n * //=polygon\n */\nfunction polygon(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    for (var _i = 0, coordinates_1 = coordinates; _i < coordinates_1.length; _i++) {\n        var ring = coordinates_1[_i];\n        if (ring.length < 4) {\n            throw new Error(\"Each LinearRing of a Polygon must have 4 or more Positions.\");\n        }\n        for (var j = 0; j < ring[ring.length - 1].length; j++) {\n            // Check if first point of Polygon contains two numbers\n            if (ring[ring.length - 1][j] !== ring[0][j]) {\n                throw new Error(\"First and last Position are not equivalent.\");\n            }\n        }\n    }\n    var geom = {\n        type: \"Polygon\",\n        coordinates: coordinates,\n    };\n    return feature(geom, properties, options);\n}\nexports.polygon = polygon;\n/**\n * Creates a {@link Polygon} {@link FeatureCollection} from an Array of Polygon coordinates.\n *\n * @name polygons\n * @param {Array<Array<Array<Array<number>>>>} coordinates an array of Polygon coordinates\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the FeatureCollection\n * @returns {FeatureCollection<Polygon>} Polygon FeatureCollection\n * @example\n * var polygons = turf.polygons([\n *   [[[-5, 52], [-4, 56], [-2, 51], [-7, 54], [-5, 52]]],\n *   [[[-15, 42], [-14, 46], [-12, 41], [-17, 44], [-15, 42]]],\n * ]);\n *\n * //=polygons\n */\nfunction polygons(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    return featureCollection(coordinates.map(function (coords) {\n        return polygon(coords, properties);\n    }), options);\n}\nexports.polygons = polygons;\n/**\n * Creates a {@link LineString} {@link Feature} from an Array of Positions.\n *\n * @name lineString\n * @param {Array<Array<number>>} coordinates an array of Positions\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<LineString>} LineString Feature\n * @example\n * var linestring1 = turf.lineString([[-24, 63], [-23, 60], [-25, 65], [-20, 69]], {name: 'line 1'});\n * var linestring2 = turf.lineString([[-14, 43], [-13, 40], [-15, 45], [-10, 49]], {name: 'line 2'});\n *\n * //=linestring1\n * //=linestring2\n */\nfunction lineString(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    if (coordinates.length < 2) {\n        throw new Error(\"coordinates must be an array of two or more positions\");\n    }\n    var geom = {\n        type: \"LineString\",\n        coordinates: coordinates,\n    };\n    return feature(geom, properties, options);\n}\nexports.lineString = lineString;\n/**\n * Creates a {@link LineString} {@link FeatureCollection} from an Array of LineString coordinates.\n *\n * @name lineStrings\n * @param {Array<Array<Array<number>>>} coordinates an array of LinearRings\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north]\n * associated with the FeatureCollection\n * @param {string|number} [options.id] Identifier associated with the FeatureCollection\n * @returns {FeatureCollection<LineString>} LineString FeatureCollection\n * @example\n * var linestrings = turf.lineStrings([\n *   [[-24, 63], [-23, 60], [-25, 65], [-20, 69]],\n *   [[-14, 43], [-13, 40], [-15, 45], [-10, 49]]\n * ]);\n *\n * //=linestrings\n */\nfunction lineStrings(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    return featureCollection(coordinates.map(function (coords) {\n        return lineString(coords, properties);\n    }), options);\n}\nexports.lineStrings = lineStrings;\n/**\n * Takes one or more {@link Feature|Features} and creates a {@link FeatureCollection}.\n *\n * @name featureCollection\n * @param {Feature[]} features input features\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {FeatureCollection} FeatureCollection of Features\n * @example\n * var locationA = turf.point([-75.343, 39.984], {name: 'Location A'});\n * var locationB = turf.point([-75.833, 39.284], {name: 'Location B'});\n * var locationC = turf.point([-75.534, 39.123], {name: 'Location C'});\n *\n * var collection = turf.featureCollection([\n *   locationA,\n *   locationB,\n *   locationC\n * ]);\n *\n * //=collection\n */\nfunction featureCollection(features, options) {\n    if (options === void 0) { options = {}; }\n    var fc = { type: \"FeatureCollection\" };\n    if (options.id) {\n        fc.id = options.id;\n    }\n    if (options.bbox) {\n        fc.bbox = options.bbox;\n    }\n    fc.features = features;\n    return fc;\n}\nexports.featureCollection = featureCollection;\n/**\n * Creates a {@link Feature<MultiLineString>} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name multiLineString\n * @param {Array<Array<Array<number>>>} coordinates an array of LineStrings\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<MultiLineString>} a MultiLineString feature\n * @throws {Error} if no coordinates are passed\n * @example\n * var multiLine = turf.multiLineString([[[0,0],[10,10]]]);\n *\n * //=multiLine\n */\nfunction multiLineString(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    var geom = {\n        type: \"MultiLineString\",\n        coordinates: coordinates,\n    };\n    return feature(geom, properties, options);\n}\nexports.multiLineString = multiLineString;\n/**\n * Creates a {@link Feature<MultiPoint>} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name multiPoint\n * @param {Array<Array<number>>} coordinates an array of Positions\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<MultiPoint>} a MultiPoint feature\n * @throws {Error} if no coordinates are passed\n * @example\n * var multiPt = turf.multiPoint([[0,0],[10,10]]);\n *\n * //=multiPt\n */\nfunction multiPoint(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    var geom = {\n        type: \"MultiPoint\",\n        coordinates: coordinates,\n    };\n    return feature(geom, properties, options);\n}\nexports.multiPoint = multiPoint;\n/**\n * Creates a {@link Feature<MultiPolygon>} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name multiPolygon\n * @param {Array<Array<Array<Array<number>>>>} coordinates an array of Polygons\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<MultiPolygon>} a multipolygon feature\n * @throws {Error} if no coordinates are passed\n * @example\n * var multiPoly = turf.multiPolygon([[[[0,0],[0,10],[10,10],[10,0],[0,0]]]]);\n *\n * //=multiPoly\n *\n */\nfunction multiPolygon(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    var geom = {\n        type: \"MultiPolygon\",\n        coordinates: coordinates,\n    };\n    return feature(geom, properties, options);\n}\nexports.multiPolygon = multiPolygon;\n/**\n * Creates a {@link Feature<GeometryCollection>} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name geometryCollection\n * @param {Array<Geometry>} geometries an array of GeoJSON Geometries\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<GeometryCollection>} a GeoJSON GeometryCollection Feature\n * @example\n * var pt = turf.geometry(\"Point\", [100, 0]);\n * var line = turf.geometry(\"LineString\", [[101, 0], [102, 1]]);\n * var collection = turf.geometryCollection([pt, line]);\n *\n * // => collection\n */\nfunction geometryCollection(geometries, properties, options) {\n    if (options === void 0) { options = {}; }\n    var geom = {\n        type: \"GeometryCollection\",\n        geometries: geometries,\n    };\n    return feature(geom, properties, options);\n}\nexports.geometryCollection = geometryCollection;\n/**\n * Round number to precision\n *\n * @param {number} num Number\n * @param {number} [precision=0] Precision\n * @returns {number} rounded number\n * @example\n * turf.round(120.4321)\n * //=120\n *\n * turf.round(120.4321, 2)\n * //=120.43\n */\nfunction round(num, precision) {\n    if (precision === void 0) { precision = 0; }\n    if (precision && !(precision >= 0)) {\n        throw new Error(\"precision must be a positive number\");\n    }\n    var multiplier = Math.pow(10, precision || 0);\n    return Math.round(num * multiplier) / multiplier;\n}\nexports.round = round;\n/**\n * Convert a distance measurement (assuming a spherical Earth) from radians to a more friendly unit.\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet\n *\n * @name radiansToLength\n * @param {number} radians in radians across the sphere\n * @param {string} [units=\"kilometers\"] can be degrees, radians, miles, inches, yards, metres,\n * meters, kilometres, kilometers.\n * @returns {number} distance\n */\nfunction radiansToLength(radians, units) {\n    if (units === void 0) { units = \"kilometers\"; }\n    var factor = exports.factors[units];\n    if (!factor) {\n        throw new Error(units + \" units is invalid\");\n    }\n    return radians * factor;\n}\nexports.radiansToLength = radiansToLength;\n/**\n * Convert a distance measurement (assuming a spherical Earth) from a real-world unit into radians\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet\n *\n * @name lengthToRadians\n * @param {number} distance in real units\n * @param {string} [units=\"kilometers\"] can be degrees, radians, miles, inches, yards, metres,\n * meters, kilometres, kilometers.\n * @returns {number} radians\n */\nfunction lengthToRadians(distance, units) {\n    if (units === void 0) { units = \"kilometers\"; }\n    var factor = exports.factors[units];\n    if (!factor) {\n        throw new Error(units + \" units is invalid\");\n    }\n    return distance / factor;\n}\nexports.lengthToRadians = lengthToRadians;\n/**\n * Convert a distance measurement (assuming a spherical Earth) from a real-world unit into degrees\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, centimeters, kilometres, feet\n *\n * @name lengthToDegrees\n * @param {number} distance in real units\n * @param {string} [units=\"kilometers\"] can be degrees, radians, miles, inches, yards, metres,\n * meters, kilometres, kilometers.\n * @returns {number} degrees\n */\nfunction lengthToDegrees(distance, units) {\n    return radiansToDegrees(lengthToRadians(distance, units));\n}\nexports.lengthToDegrees = lengthToDegrees;\n/**\n * Converts any bearing angle from the north line direction (positive clockwise)\n * and returns an angle between 0-360 degrees (positive clockwise), 0 being the north line\n *\n * @name bearingToAzimuth\n * @param {number} bearing angle, between -180 and +180 degrees\n * @returns {number} angle between 0 and 360 degrees\n */\nfunction bearingToAzimuth(bearing) {\n    var angle = bearing % 360;\n    if (angle < 0) {\n        angle += 360;\n    }\n    return angle;\n}\nexports.bearingToAzimuth = bearingToAzimuth;\n/**\n * Converts an angle in radians to degrees\n *\n * @name radiansToDegrees\n * @param {number} radians angle in radians\n * @returns {number} degrees between 0 and 360 degrees\n */\nfunction radiansToDegrees(radians) {\n    var degrees = radians % (2 * Math.PI);\n    return (degrees * 180) / Math.PI;\n}\nexports.radiansToDegrees = radiansToDegrees;\n/**\n * Converts an angle in degrees to radians\n *\n * @name degreesToRadians\n * @param {number} degrees angle between 0 and 360 degrees\n * @returns {number} angle in radians\n */\nfunction degreesToRadians(degrees) {\n    var radians = degrees % 360;\n    return (radians * Math.PI) / 180;\n}\nexports.degreesToRadians = degreesToRadians;\n/**\n * Converts a length to the requested unit.\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet\n *\n * @param {number} length to be converted\n * @param {Units} [originalUnit=\"kilometers\"] of the length\n * @param {Units} [finalUnit=\"kilometers\"] returned unit\n * @returns {number} the converted length\n */\nfunction convertLength(length, originalUnit, finalUnit) {\n    if (originalUnit === void 0) { originalUnit = \"kilometers\"; }\n    if (finalUnit === void 0) { finalUnit = \"kilometers\"; }\n    if (!(length >= 0)) {\n        throw new Error(\"length must be a positive number\");\n    }\n    return radiansToLength(lengthToRadians(length, originalUnit), finalUnit);\n}\nexports.convertLength = convertLength;\n/**\n * Converts a area to the requested unit.\n * Valid units: kilometers, kilometres, meters, metres, centimetres, millimeters, acres, miles, yards, feet, inches, hectares\n * @param {number} area to be converted\n * @param {Units} [originalUnit=\"meters\"] of the distance\n * @param {Units} [finalUnit=\"kilometers\"] returned unit\n * @returns {number} the converted area\n */\nfunction convertArea(area, originalUnit, finalUnit) {\n    if (originalUnit === void 0) { originalUnit = \"meters\"; }\n    if (finalUnit === void 0) { finalUnit = \"kilometers\"; }\n    if (!(area >= 0)) {\n        throw new Error(\"area must be a positive number\");\n    }\n    var startFactor = exports.areaFactors[originalUnit];\n    if (!startFactor) {\n        throw new Error(\"invalid original units\");\n    }\n    var finalFactor = exports.areaFactors[finalUnit];\n    if (!finalFactor) {\n        throw new Error(\"invalid final units\");\n    }\n    return (area / startFactor) * finalFactor;\n}\nexports.convertArea = convertArea;\n/**\n * isNumber\n *\n * @param {*} num Number to validate\n * @returns {boolean} true/false\n * @example\n * turf.isNumber(123)\n * //=true\n * turf.isNumber('foo')\n * //=false\n */\nfunction isNumber(num) {\n    return !isNaN(num) && num !== null && !Array.isArray(num);\n}\nexports.isNumber = isNumber;\n/**\n * isObject\n *\n * @param {*} input variable to validate\n * @returns {boolean} true/false\n * @example\n * turf.isObject({elevation: 10})\n * //=true\n * turf.isObject('foo')\n * //=false\n */\nfunction isObject(input) {\n    return !!input && input.constructor === Object;\n}\nexports.isObject = isObject;\n/**\n * Validate BBox\n *\n * @private\n * @param {Array<number>} bbox BBox to validate\n * @returns {void}\n * @throws Error if BBox is not valid\n * @example\n * validateBBox([-180, -40, 110, 50])\n * //=OK\n * validateBBox([-180, -40])\n * //=Error\n * validateBBox('Foo')\n * //=Error\n * validateBBox(5)\n * //=Error\n * validateBBox(null)\n * //=Error\n * validateBBox(undefined)\n * //=Error\n */\nfunction validateBBox(bbox) {\n    if (!bbox) {\n        throw new Error(\"bbox is required\");\n    }\n    if (!Array.isArray(bbox)) {\n        throw new Error(\"bbox must be an Array\");\n    }\n    if (bbox.length !== 4 && bbox.length !== 6) {\n        throw new Error(\"bbox must be an Array of 4 or 6 numbers\");\n    }\n    bbox.forEach(function (num) {\n        if (!isNumber(num)) {\n            throw new Error(\"bbox must only contain numbers\");\n        }\n    });\n}\nexports.validateBBox = validateBBox;\n/**\n * Validate Id\n *\n * @private\n * @param {string|number} id Id to validate\n * @returns {void}\n * @throws Error if Id is not valid\n * @example\n * validateId([-180, -40, 110, 50])\n * //=Error\n * validateId([-180, -40])\n * //=Error\n * validateId('Foo')\n * //=OK\n * validateId(5)\n * //=OK\n * validateId(null)\n * //=Error\n * validateId(undefined)\n * //=Error\n */\nfunction validateId(id) {\n    if (!id) {\n        throw new Error(\"id is required\");\n    }\n    if ([\"string\", \"number\"].indexOf(typeof id) === -1) {\n        throw new Error(\"id must be a number or a string\");\n    }\n}\nexports.validateId = validateId;\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nvar helpers = require('@turf/helpers');\n\n/**\n * Callback for coordEach\n *\n * @callback coordEachCallback\n * @param {Array<number>} currentCoord The current coordinate being processed.\n * @param {number} coordIndex The current index of the coordinate being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n * @param {number} geometryIndex The current index of the Geometry being processed.\n */\n\n/**\n * Iterate over coordinates in any GeoJSON object, similar to Array.forEach()\n *\n * @name coordEach\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (currentCoord, coordIndex, featureIndex, multiFeatureIndex)\n * @param {boolean} [excludeWrapCoord=false] whether or not to include the final coordinate of LinearRings that wraps the ring in its iteration.\n * @returns {void}\n * @example\n * var features = turf.featureCollection([\n *   turf.point([26, 37], {\"foo\": \"bar\"}),\n *   turf.point([36, 53], {\"hello\": \"world\"})\n * ]);\n *\n * turf.coordEach(features, function (currentCoord, coordIndex, featureIndex, multiFeatureIndex, geometryIndex) {\n *   //=currentCoord\n *   //=coordIndex\n *   //=featureIndex\n *   //=multiFeatureIndex\n *   //=geometryIndex\n * });\n */\nfunction coordEach(geojson, callback, excludeWrapCoord) {\n  // Handles null Geometry -- Skips this GeoJSON\n  if (geojson === null) return;\n  var j,\n    k,\n    l,\n    geometry,\n    stopG,\n    coords,\n    geometryMaybeCollection,\n    wrapShrink = 0,\n    coordIndex = 0,\n    isGeometryCollection,\n    type = geojson.type,\n    isFeatureCollection = type === \"FeatureCollection\",\n    isFeature = type === \"Feature\",\n    stop = isFeatureCollection ? geojson.features.length : 1;\n\n  // This logic may look a little weird. The reason why it is that way\n  // is because it's trying to be fast. GeoJSON supports multiple kinds\n  // of objects at its root: FeatureCollection, Features, Geometries.\n  // This function has the responsibility of handling all of them, and that\n  // means that some of the `for` loops you see below actually just don't apply\n  // to certain inputs. For instance, if you give this just a\n  // Point geometry, then both loops are short-circuited and all we do\n  // is gradually rename the input until it's called 'geometry'.\n  //\n  // This also aims to allocate as few resources as possible: just a\n  // few numbers and booleans, rather than any temporary arrays as would\n  // be required with the normalization approach.\n  for (var featureIndex = 0; featureIndex < stop; featureIndex++) {\n    geometryMaybeCollection = isFeatureCollection\n      ? geojson.features[featureIndex].geometry\n      : isFeature\n      ? geojson.geometry\n      : geojson;\n    isGeometryCollection = geometryMaybeCollection\n      ? geometryMaybeCollection.type === \"GeometryCollection\"\n      : false;\n    stopG = isGeometryCollection\n      ? geometryMaybeCollection.geometries.length\n      : 1;\n\n    for (var geomIndex = 0; geomIndex < stopG; geomIndex++) {\n      var multiFeatureIndex = 0;\n      var geometryIndex = 0;\n      geometry = isGeometryCollection\n        ? geometryMaybeCollection.geometries[geomIndex]\n        : geometryMaybeCollection;\n\n      // Handles null Geometry -- Skips this geometry\n      if (geometry === null) continue;\n      coords = geometry.coordinates;\n      var geomType = geometry.type;\n\n      wrapShrink =\n        excludeWrapCoord &&\n        (geomType === \"Polygon\" || geomType === \"MultiPolygon\")\n          ? 1\n          : 0;\n\n      switch (geomType) {\n        case null:\n          break;\n        case \"Point\":\n          if (\n            callback(\n              coords,\n              coordIndex,\n              featureIndex,\n              multiFeatureIndex,\n              geometryIndex\n            ) === false\n          )\n            return false;\n          coordIndex++;\n          multiFeatureIndex++;\n          break;\n        case \"LineString\":\n        case \"MultiPoint\":\n          for (j = 0; j < coords.length; j++) {\n            if (\n              callback(\n                coords[j],\n                coordIndex,\n                featureIndex,\n                multiFeatureIndex,\n                geometryIndex\n              ) === false\n            )\n              return false;\n            coordIndex++;\n            if (geomType === \"MultiPoint\") multiFeatureIndex++;\n          }\n          if (geomType === \"LineString\") multiFeatureIndex++;\n          break;\n        case \"Polygon\":\n        case \"MultiLineString\":\n          for (j = 0; j < coords.length; j++) {\n            for (k = 0; k < coords[j].length - wrapShrink; k++) {\n              if (\n                callback(\n                  coords[j][k],\n                  coordIndex,\n                  featureIndex,\n                  multiFeatureIndex,\n                  geometryIndex\n                ) === false\n              )\n                return false;\n              coordIndex++;\n            }\n            if (geomType === \"MultiLineString\") multiFeatureIndex++;\n            if (geomType === \"Polygon\") geometryIndex++;\n          }\n          if (geomType === \"Polygon\") multiFeatureIndex++;\n          break;\n        case \"MultiPolygon\":\n          for (j = 0; j < coords.length; j++) {\n            geometryIndex = 0;\n            for (k = 0; k < coords[j].length; k++) {\n              for (l = 0; l < coords[j][k].length - wrapShrink; l++) {\n                if (\n                  callback(\n                    coords[j][k][l],\n                    coordIndex,\n                    featureIndex,\n                    multiFeatureIndex,\n                    geometryIndex\n                  ) === false\n                )\n                  return false;\n                coordIndex++;\n              }\n              geometryIndex++;\n            }\n            multiFeatureIndex++;\n          }\n          break;\n        case \"GeometryCollection\":\n          for (j = 0; j < geometry.geometries.length; j++)\n            if (\n              coordEach(geometry.geometries[j], callback, excludeWrapCoord) ===\n              false\n            )\n              return false;\n          break;\n        default:\n          throw new Error(\"Unknown Geometry Type\");\n      }\n    }\n  }\n}\n\n/**\n * Callback for coordReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n *  - The previousValue argument is initialValue.\n *  - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n *  - The previousValue argument is the value of the first element present in the array.\n *  - The currentValue argument is the value of the second element present in the array.\n *\n * @callback coordReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Array<number>} currentCoord The current coordinate being processed.\n * @param {number} coordIndex The current index of the coordinate being processed.\n * Starts at index 0, if an initialValue is provided, and at index 1 otherwise.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n * @param {number} geometryIndex The current index of the Geometry being processed.\n */\n\n/**\n * Reduce coordinates in any GeoJSON object, similar to Array.reduce()\n *\n * @name coordReduce\n * @param {FeatureCollection|Geometry|Feature} geojson any GeoJSON object\n * @param {Function} callback a method that takes (previousValue, currentCoord, coordIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @param {boolean} [excludeWrapCoord=false] whether or not to include the final coordinate of LinearRings that wraps the ring in its iteration.\n * @returns {*} The value that results from the reduction.\n * @example\n * var features = turf.featureCollection([\n *   turf.point([26, 37], {\"foo\": \"bar\"}),\n *   turf.point([36, 53], {\"hello\": \"world\"})\n * ]);\n *\n * turf.coordReduce(features, function (previousValue, currentCoord, coordIndex, featureIndex, multiFeatureIndex, geometryIndex) {\n *   //=previousValue\n *   //=currentCoord\n *   //=coordIndex\n *   //=featureIndex\n *   //=multiFeatureIndex\n *   //=geometryIndex\n *   return currentCoord;\n * });\n */\nfunction coordReduce(geojson, callback, initialValue, excludeWrapCoord) {\n  var previousValue = initialValue;\n  coordEach(\n    geojson,\n    function (\n      currentCoord,\n      coordIndex,\n      featureIndex,\n      multiFeatureIndex,\n      geometryIndex\n    ) {\n      if (coordIndex === 0 && initialValue === undefined)\n        previousValue = currentCoord;\n      else\n        previousValue = callback(\n          previousValue,\n          currentCoord,\n          coordIndex,\n          featureIndex,\n          multiFeatureIndex,\n          geometryIndex\n        );\n    },\n    excludeWrapCoord\n  );\n  return previousValue;\n}\n\n/**\n * Callback for propEach\n *\n * @callback propEachCallback\n * @param {Object} currentProperties The current Properties being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n */\n\n/**\n * Iterate over properties in any GeoJSON object, similar to Array.forEach()\n *\n * @name propEach\n * @param {FeatureCollection|Feature} geojson any GeoJSON object\n * @param {Function} callback a method that takes (currentProperties, featureIndex)\n * @returns {void}\n * @example\n * var features = turf.featureCollection([\n *     turf.point([26, 37], {foo: 'bar'}),\n *     turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * turf.propEach(features, function (currentProperties, featureIndex) {\n *   //=currentProperties\n *   //=featureIndex\n * });\n */\nfunction propEach(geojson, callback) {\n  var i;\n  switch (geojson.type) {\n    case \"FeatureCollection\":\n      for (i = 0; i < geojson.features.length; i++) {\n        if (callback(geojson.features[i].properties, i) === false) break;\n      }\n      break;\n    case \"Feature\":\n      callback(geojson.properties, 0);\n      break;\n  }\n}\n\n/**\n * Callback for propReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n *  - The previousValue argument is initialValue.\n *  - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n *  - The previousValue argument is the value of the first element present in the array.\n *  - The currentValue argument is the value of the second element present in the array.\n *\n * @callback propReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {*} currentProperties The current Properties being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n */\n\n/**\n * Reduce properties in any GeoJSON object into a single value,\n * similar to how Array.reduce works. However, in this case we lazily run\n * the reduction, so an array of all properties is unnecessary.\n *\n * @name propReduce\n * @param {FeatureCollection|Feature} geojson any GeoJSON object\n * @param {Function} callback a method that takes (previousValue, currentProperties, featureIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {*} The value that results from the reduction.\n * @example\n * var features = turf.featureCollection([\n *     turf.point([26, 37], {foo: 'bar'}),\n *     turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * turf.propReduce(features, function (previousValue, currentProperties, featureIndex) {\n *   //=previousValue\n *   //=currentProperties\n *   //=featureIndex\n *   return currentProperties\n * });\n */\nfunction propReduce(geojson, callback, initialValue) {\n  var previousValue = initialValue;\n  propEach(geojson, function (currentProperties, featureIndex) {\n    if (featureIndex === 0 && initialValue === undefined)\n      previousValue = currentProperties;\n    else\n      previousValue = callback(previousValue, currentProperties, featureIndex);\n  });\n  return previousValue;\n}\n\n/**\n * Callback for featureEach\n *\n * @callback featureEachCallback\n * @param {Feature<any>} currentFeature The current Feature being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n */\n\n/**\n * Iterate over features in any GeoJSON object, similar to\n * Array.forEach.\n *\n * @name featureEach\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (currentFeature, featureIndex)\n * @returns {void}\n * @example\n * var features = turf.featureCollection([\n *   turf.point([26, 37], {foo: 'bar'}),\n *   turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * turf.featureEach(features, function (currentFeature, featureIndex) {\n *   //=currentFeature\n *   //=featureIndex\n * });\n */\nfunction featureEach(geojson, callback) {\n  if (geojson.type === \"Feature\") {\n    callback(geojson, 0);\n  } else if (geojson.type === \"FeatureCollection\") {\n    for (var i = 0; i < geojson.features.length; i++) {\n      if (callback(geojson.features[i], i) === false) break;\n    }\n  }\n}\n\n/**\n * Callback for featureReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n *  - The previousValue argument is initialValue.\n *  - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n *  - The previousValue argument is the value of the first element present in the array.\n *  - The currentValue argument is the value of the second element present in the array.\n *\n * @callback featureReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Feature} currentFeature The current Feature being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n */\n\n/**\n * Reduce features in any GeoJSON object, similar to Array.reduce().\n *\n * @name featureReduce\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (previousValue, currentFeature, featureIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {*} The value that results from the reduction.\n * @example\n * var features = turf.featureCollection([\n *   turf.point([26, 37], {\"foo\": \"bar\"}),\n *   turf.point([36, 53], {\"hello\": \"world\"})\n * ]);\n *\n * turf.featureReduce(features, function (previousValue, currentFeature, featureIndex) {\n *   //=previousValue\n *   //=currentFeature\n *   //=featureIndex\n *   return currentFeature\n * });\n */\nfunction featureReduce(geojson, callback, initialValue) {\n  var previousValue = initialValue;\n  featureEach(geojson, function (currentFeature, featureIndex) {\n    if (featureIndex === 0 && initialValue === undefined)\n      previousValue = currentFeature;\n    else previousValue = callback(previousValue, currentFeature, featureIndex);\n  });\n  return previousValue;\n}\n\n/**\n * Get all coordinates from any GeoJSON object.\n *\n * @name coordAll\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @returns {Array<Array<number>>} coordinate position array\n * @example\n * var features = turf.featureCollection([\n *   turf.point([26, 37], {foo: 'bar'}),\n *   turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * var coords = turf.coordAll(features);\n * //= [[26, 37], [36, 53]]\n */\nfunction coordAll(geojson) {\n  var coords = [];\n  coordEach(geojson, function (coord) {\n    coords.push(coord);\n  });\n  return coords;\n}\n\n/**\n * Callback for geomEach\n *\n * @callback geomEachCallback\n * @param {Geometry} currentGeometry The current Geometry being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {Object} featureProperties The current Feature Properties being processed.\n * @param {Array<number>} featureBBox The current Feature BBox being processed.\n * @param {number|string} featureId The current Feature Id being processed.\n */\n\n/**\n * Iterate over each geometry in any GeoJSON object, similar to Array.forEach()\n *\n * @name geomEach\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (currentGeometry, featureIndex, featureProperties, featureBBox, featureId)\n * @returns {void}\n * @example\n * var features = turf.featureCollection([\n *     turf.point([26, 37], {foo: 'bar'}),\n *     turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * turf.geomEach(features, function (currentGeometry, featureIndex, featureProperties, featureBBox, featureId) {\n *   //=currentGeometry\n *   //=featureIndex\n *   //=featureProperties\n *   //=featureBBox\n *   //=featureId\n * });\n */\nfunction geomEach(geojson, callback) {\n  var i,\n    j,\n    g,\n    geometry,\n    stopG,\n    geometryMaybeCollection,\n    isGeometryCollection,\n    featureProperties,\n    featureBBox,\n    featureId,\n    featureIndex = 0,\n    isFeatureCollection = geojson.type === \"FeatureCollection\",\n    isFeature = geojson.type === \"Feature\",\n    stop = isFeatureCollection ? geojson.features.length : 1;\n\n  // This logic may look a little weird. The reason why it is that way\n  // is because it's trying to be fast. GeoJSON supports multiple kinds\n  // of objects at its root: FeatureCollection, Features, Geometries.\n  // This function has the responsibility of handling all of them, and that\n  // means that some of the `for` loops you see below actually just don't apply\n  // to certain inputs. For instance, if you give this just a\n  // Point geometry, then both loops are short-circuited and all we do\n  // is gradually rename the input until it's called 'geometry'.\n  //\n  // This also aims to allocate as few resources as possible: just a\n  // few numbers and booleans, rather than any temporary arrays as would\n  // be required with the normalization approach.\n  for (i = 0; i < stop; i++) {\n    geometryMaybeCollection = isFeatureCollection\n      ? geojson.features[i].geometry\n      : isFeature\n      ? geojson.geometry\n      : geojson;\n    featureProperties = isFeatureCollection\n      ? geojson.features[i].properties\n      : isFeature\n      ? geojson.properties\n      : {};\n    featureBBox = isFeatureCollection\n      ? geojson.features[i].bbox\n      : isFeature\n      ? geojson.bbox\n      : undefined;\n    featureId = isFeatureCollection\n      ? geojson.features[i].id\n      : isFeature\n      ? geojson.id\n      : undefined;\n    isGeometryCollection = geometryMaybeCollection\n      ? geometryMaybeCollection.type === \"GeometryCollection\"\n      : false;\n    stopG = isGeometryCollection\n      ? geometryMaybeCollection.geometries.length\n      : 1;\n\n    for (g = 0; g < stopG; g++) {\n      geometry = isGeometryCollection\n        ? geometryMaybeCollection.geometries[g]\n        : geometryMaybeCollection;\n\n      // Handle null Geometry\n      if (geometry === null) {\n        if (\n          callback(\n            null,\n            featureIndex,\n            featureProperties,\n            featureBBox,\n            featureId\n          ) === false\n        )\n          return false;\n        continue;\n      }\n      switch (geometry.type) {\n        case \"Point\":\n        case \"LineString\":\n        case \"MultiPoint\":\n        case \"Polygon\":\n        case \"MultiLineString\":\n        case \"MultiPolygon\": {\n          if (\n            callback(\n              geometry,\n              featureIndex,\n              featureProperties,\n              featureBBox,\n              featureId\n            ) === false\n          )\n            return false;\n          break;\n        }\n        case \"GeometryCollection\": {\n          for (j = 0; j < geometry.geometries.length; j++) {\n            if (\n              callback(\n                geometry.geometries[j],\n                featureIndex,\n                featureProperties,\n                featureBBox,\n                featureId\n              ) === false\n            )\n              return false;\n          }\n          break;\n        }\n        default:\n          throw new Error(\"Unknown Geometry Type\");\n      }\n    }\n    // Only increase `featureIndex` per each feature\n    featureIndex++;\n  }\n}\n\n/**\n * Callback for geomReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n *  - The previousValue argument is initialValue.\n *  - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n *  - The previousValue argument is the value of the first element present in the array.\n *  - The currentValue argument is the value of the second element present in the array.\n *\n * @callback geomReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Geometry} currentGeometry The current Geometry being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {Object} featureProperties The current Feature Properties being processed.\n * @param {Array<number>} featureBBox The current Feature BBox being processed.\n * @param {number|string} featureId The current Feature Id being processed.\n */\n\n/**\n * Reduce geometry in any GeoJSON object, similar to Array.reduce().\n *\n * @name geomReduce\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (previousValue, currentGeometry, featureIndex, featureProperties, featureBBox, featureId)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {*} The value that results from the reduction.\n * @example\n * var features = turf.featureCollection([\n *     turf.point([26, 37], {foo: 'bar'}),\n *     turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * turf.geomReduce(features, function (previousValue, currentGeometry, featureIndex, featureProperties, featureBBox, featureId) {\n *   //=previousValue\n *   //=currentGeometry\n *   //=featureIndex\n *   //=featureProperties\n *   //=featureBBox\n *   //=featureId\n *   return currentGeometry\n * });\n */\nfunction geomReduce(geojson, callback, initialValue) {\n  var previousValue = initialValue;\n  geomEach(\n    geojson,\n    function (\n      currentGeometry,\n      featureIndex,\n      featureProperties,\n      featureBBox,\n      featureId\n    ) {\n      if (featureIndex === 0 && initialValue === undefined)\n        previousValue = currentGeometry;\n      else\n        previousValue = callback(\n          previousValue,\n          currentGeometry,\n          featureIndex,\n          featureProperties,\n          featureBBox,\n          featureId\n        );\n    }\n  );\n  return previousValue;\n}\n\n/**\n * Callback for flattenEach\n *\n * @callback flattenEachCallback\n * @param {Feature} currentFeature The current flattened feature being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n */\n\n/**\n * Iterate over flattened features in any GeoJSON object, similar to\n * Array.forEach.\n *\n * @name flattenEach\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (currentFeature, featureIndex, multiFeatureIndex)\n * @example\n * var features = turf.featureCollection([\n *     turf.point([26, 37], {foo: 'bar'}),\n *     turf.multiPoint([[40, 30], [36, 53]], {hello: 'world'})\n * ]);\n *\n * turf.flattenEach(features, function (currentFeature, featureIndex, multiFeatureIndex) {\n *   //=currentFeature\n *   //=featureIndex\n *   //=multiFeatureIndex\n * });\n */\nfunction flattenEach(geojson, callback) {\n  geomEach(geojson, function (geometry, featureIndex, properties, bbox, id) {\n    // Callback for single geometry\n    var type = geometry === null ? null : geometry.type;\n    switch (type) {\n      case null:\n      case \"Point\":\n      case \"LineString\":\n      case \"Polygon\":\n        if (\n          callback(\n            helpers.feature(geometry, properties, { bbox: bbox, id: id }),\n            featureIndex,\n            0\n          ) === false\n        )\n          return false;\n        return;\n    }\n\n    var geomType;\n\n    // Callback for multi-geometry\n    switch (type) {\n      case \"MultiPoint\":\n        geomType = \"Point\";\n        break;\n      case \"MultiLineString\":\n        geomType = \"LineString\";\n        break;\n      case \"MultiPolygon\":\n        geomType = \"Polygon\";\n        break;\n    }\n\n    for (\n      var multiFeatureIndex = 0;\n      multiFeatureIndex < geometry.coordinates.length;\n      multiFeatureIndex++\n    ) {\n      var coordinate = geometry.coordinates[multiFeatureIndex];\n      var geom = {\n        type: geomType,\n        coordinates: coordinate,\n      };\n      if (\n        callback(helpers.feature(geom, properties), featureIndex, multiFeatureIndex) ===\n        false\n      )\n        return false;\n    }\n  });\n}\n\n/**\n * Callback for flattenReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n *  - The previousValue argument is initialValue.\n *  - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n *  - The previousValue argument is the value of the first element present in the array.\n *  - The currentValue argument is the value of the second element present in the array.\n *\n * @callback flattenReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Feature} currentFeature The current Feature being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n */\n\n/**\n * Reduce flattened features in any GeoJSON object, similar to Array.reduce().\n *\n * @name flattenReduce\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (previousValue, currentFeature, featureIndex, multiFeatureIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {*} The value that results from the reduction.\n * @example\n * var features = turf.featureCollection([\n *     turf.point([26, 37], {foo: 'bar'}),\n *     turf.multiPoint([[40, 30], [36, 53]], {hello: 'world'})\n * ]);\n *\n * turf.flattenReduce(features, function (previousValue, currentFeature, featureIndex, multiFeatureIndex) {\n *   //=previousValue\n *   //=currentFeature\n *   //=featureIndex\n *   //=multiFeatureIndex\n *   return currentFeature\n * });\n */\nfunction flattenReduce(geojson, callback, initialValue) {\n  var previousValue = initialValue;\n  flattenEach(\n    geojson,\n    function (currentFeature, featureIndex, multiFeatureIndex) {\n      if (\n        featureIndex === 0 &&\n        multiFeatureIndex === 0 &&\n        initialValue === undefined\n      )\n        previousValue = currentFeature;\n      else\n        previousValue = callback(\n          previousValue,\n          currentFeature,\n          featureIndex,\n          multiFeatureIndex\n        );\n    }\n  );\n  return previousValue;\n}\n\n/**\n * Callback for segmentEach\n *\n * @callback segmentEachCallback\n * @param {Feature<LineString>} currentSegment The current Segment being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n * @param {number} geometryIndex The current index of the Geometry being processed.\n * @param {number} segmentIndex The current index of the Segment being processed.\n * @returns {void}\n */\n\n/**\n * Iterate over 2-vertex line segment in any GeoJSON object, similar to Array.forEach()\n * (Multi)Point geometries do not contain segments therefore they are ignored during this operation.\n *\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON\n * @param {Function} callback a method that takes (currentSegment, featureIndex, multiFeatureIndex, geometryIndex, segmentIndex)\n * @returns {void}\n * @example\n * var polygon = turf.polygon([[[-50, 5], [-40, -10], [-50, -10], [-40, 5], [-50, 5]]]);\n *\n * // Iterate over GeoJSON by 2-vertex segments\n * turf.segmentEach(polygon, function (currentSegment, featureIndex, multiFeatureIndex, geometryIndex, segmentIndex) {\n *   //=currentSegment\n *   //=featureIndex\n *   //=multiFeatureIndex\n *   //=geometryIndex\n *   //=segmentIndex\n * });\n *\n * // Calculate the total number of segments\n * var total = 0;\n * turf.segmentEach(polygon, function () {\n *     total++;\n * });\n */\nfunction segmentEach(geojson, callback) {\n  flattenEach(geojson, function (feature, featureIndex, multiFeatureIndex) {\n    var segmentIndex = 0;\n\n    // Exclude null Geometries\n    if (!feature.geometry) return;\n    // (Multi)Point geometries do not contain segments therefore they are ignored during this operation.\n    var type = feature.geometry.type;\n    if (type === \"Point\" || type === \"MultiPoint\") return;\n\n    // Generate 2-vertex line segments\n    var previousCoords;\n    var previousFeatureIndex = 0;\n    var previousMultiIndex = 0;\n    var prevGeomIndex = 0;\n    if (\n      coordEach(\n        feature,\n        function (\n          currentCoord,\n          coordIndex,\n          featureIndexCoord,\n          multiPartIndexCoord,\n          geometryIndex\n        ) {\n          // Simulating a meta.coordReduce() since `reduce` operations cannot be stopped by returning `false`\n          if (\n            previousCoords === undefined ||\n            featureIndex > previousFeatureIndex ||\n            multiPartIndexCoord > previousMultiIndex ||\n            geometryIndex > prevGeomIndex\n          ) {\n            previousCoords = currentCoord;\n            previousFeatureIndex = featureIndex;\n            previousMultiIndex = multiPartIndexCoord;\n            prevGeomIndex = geometryIndex;\n            segmentIndex = 0;\n            return;\n          }\n          var currentSegment = helpers.lineString(\n            [previousCoords, currentCoord],\n            feature.properties\n          );\n          if (\n            callback(\n              currentSegment,\n              featureIndex,\n              multiFeatureIndex,\n              geometryIndex,\n              segmentIndex\n            ) === false\n          )\n            return false;\n          segmentIndex++;\n          previousCoords = currentCoord;\n        }\n      ) === false\n    )\n      return false;\n  });\n}\n\n/**\n * Callback for segmentReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n *  - The previousValue argument is initialValue.\n *  - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n *  - The previousValue argument is the value of the first element present in the array.\n *  - The currentValue argument is the value of the second element present in the array.\n *\n * @callback segmentReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Feature<LineString>} currentSegment The current Segment being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n * @param {number} geometryIndex The current index of the Geometry being processed.\n * @param {number} segmentIndex The current index of the Segment being processed.\n */\n\n/**\n * Reduce 2-vertex line segment in any GeoJSON object, similar to Array.reduce()\n * (Multi)Point geometries do not contain segments therefore they are ignored during this operation.\n *\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON\n * @param {Function} callback a method that takes (previousValue, currentSegment, currentIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {void}\n * @example\n * var polygon = turf.polygon([[[-50, 5], [-40, -10], [-50, -10], [-40, 5], [-50, 5]]]);\n *\n * // Iterate over GeoJSON by 2-vertex segments\n * turf.segmentReduce(polygon, function (previousSegment, currentSegment, featureIndex, multiFeatureIndex, geometryIndex, segmentIndex) {\n *   //= previousSegment\n *   //= currentSegment\n *   //= featureIndex\n *   //= multiFeatureIndex\n *   //= geometryIndex\n *   //= segmentIndex\n *   return currentSegment\n * });\n *\n * // Calculate the total number of segments\n * var initialValue = 0\n * var total = turf.segmentReduce(polygon, function (previousValue) {\n *     previousValue++;\n *     return previousValue;\n * }, initialValue);\n */\nfunction segmentReduce(geojson, callback, initialValue) {\n  var previousValue = initialValue;\n  var started = false;\n  segmentEach(\n    geojson,\n    function (\n      currentSegment,\n      featureIndex,\n      multiFeatureIndex,\n      geometryIndex,\n      segmentIndex\n    ) {\n      if (started === false && initialValue === undefined)\n        previousValue = currentSegment;\n      else\n        previousValue = callback(\n          previousValue,\n          currentSegment,\n          featureIndex,\n          multiFeatureIndex,\n          geometryIndex,\n          segmentIndex\n        );\n      started = true;\n    }\n  );\n  return previousValue;\n}\n\n/**\n * Callback for lineEach\n *\n * @callback lineEachCallback\n * @param {Feature<LineString>} currentLine The current LineString|LinearRing being processed\n * @param {number} featureIndex The current index of the Feature being processed\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed\n * @param {number} geometryIndex The current index of the Geometry being processed\n */\n\n/**\n * Iterate over line or ring coordinates in LineString, Polygon, MultiLineString, MultiPolygon Features or Geometries,\n * similar to Array.forEach.\n *\n * @name lineEach\n * @param {Geometry|Feature<LineString|Polygon|MultiLineString|MultiPolygon>} geojson object\n * @param {Function} callback a method that takes (currentLine, featureIndex, multiFeatureIndex, geometryIndex)\n * @example\n * var multiLine = turf.multiLineString([\n *   [[26, 37], [35, 45]],\n *   [[36, 53], [38, 50], [41, 55]]\n * ]);\n *\n * turf.lineEach(multiLine, function (currentLine, featureIndex, multiFeatureIndex, geometryIndex) {\n *   //=currentLine\n *   //=featureIndex\n *   //=multiFeatureIndex\n *   //=geometryIndex\n * });\n */\nfunction lineEach(geojson, callback) {\n  // validation\n  if (!geojson) throw new Error(\"geojson is required\");\n\n  flattenEach(geojson, function (feature, featureIndex, multiFeatureIndex) {\n    if (feature.geometry === null) return;\n    var type = feature.geometry.type;\n    var coords = feature.geometry.coordinates;\n    switch (type) {\n      case \"LineString\":\n        if (callback(feature, featureIndex, multiFeatureIndex, 0, 0) === false)\n          return false;\n        break;\n      case \"Polygon\":\n        for (\n          var geometryIndex = 0;\n          geometryIndex < coords.length;\n          geometryIndex++\n        ) {\n          if (\n            callback(\n              helpers.lineString(coords[geometryIndex], feature.properties),\n              featureIndex,\n              multiFeatureIndex,\n              geometryIndex\n            ) === false\n          )\n            return false;\n        }\n        break;\n    }\n  });\n}\n\n/**\n * Callback for lineReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n *  - The previousValue argument is initialValue.\n *  - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n *  - The previousValue argument is the value of the first element present in the array.\n *  - The currentValue argument is the value of the second element present in the array.\n *\n * @callback lineReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Feature<LineString>} currentLine The current LineString|LinearRing being processed.\n * @param {number} featureIndex The current index of the Feature being processed\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed\n * @param {number} geometryIndex The current index of the Geometry being processed\n */\n\n/**\n * Reduce features in any GeoJSON object, similar to Array.reduce().\n *\n * @name lineReduce\n * @param {Geometry|Feature<LineString|Polygon|MultiLineString|MultiPolygon>} geojson object\n * @param {Function} callback a method that takes (previousValue, currentLine, featureIndex, multiFeatureIndex, geometryIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {*} The value that results from the reduction.\n * @example\n * var multiPoly = turf.multiPolygon([\n *   turf.polygon([[[12,48],[2,41],[24,38],[12,48]], [[9,44],[13,41],[13,45],[9,44]]]),\n *   turf.polygon([[[5, 5], [0, 0], [2, 2], [4, 4], [5, 5]]])\n * ]);\n *\n * turf.lineReduce(multiPoly, function (previousValue, currentLine, featureIndex, multiFeatureIndex, geometryIndex) {\n *   //=previousValue\n *   //=currentLine\n *   //=featureIndex\n *   //=multiFeatureIndex\n *   //=geometryIndex\n *   return currentLine\n * });\n */\nfunction lineReduce(geojson, callback, initialValue) {\n  var previousValue = initialValue;\n  lineEach(\n    geojson,\n    function (currentLine, featureIndex, multiFeatureIndex, geometryIndex) {\n      if (featureIndex === 0 && initialValue === undefined)\n        previousValue = currentLine;\n      else\n        previousValue = callback(\n          previousValue,\n          currentLine,\n          featureIndex,\n          multiFeatureIndex,\n          geometryIndex\n        );\n    }\n  );\n  return previousValue;\n}\n\n/**\n * Finds a particular 2-vertex LineString Segment from a GeoJSON using `@turf/meta` indexes.\n *\n * Negative indexes are permitted.\n * Point & MultiPoint will always return null.\n *\n * @param {FeatureCollection|Feature|Geometry} geojson Any GeoJSON Feature or Geometry\n * @param {Object} [options={}] Optional parameters\n * @param {number} [options.featureIndex=0] Feature Index\n * @param {number} [options.multiFeatureIndex=0] Multi-Feature Index\n * @param {number} [options.geometryIndex=0] Geometry Index\n * @param {number} [options.segmentIndex=0] Segment Index\n * @param {Object} [options.properties={}] Translate Properties to output LineString\n * @param {BBox} [options.bbox={}] Translate BBox to output LineString\n * @param {number|string} [options.id={}] Translate Id to output LineString\n * @returns {Feature<LineString>} 2-vertex GeoJSON Feature LineString\n * @example\n * var multiLine = turf.multiLineString([\n *     [[10, 10], [50, 30], [30, 40]],\n *     [[-10, -10], [-50, -30], [-30, -40]]\n * ]);\n *\n * // First Segment (defaults are 0)\n * turf.findSegment(multiLine);\n * // => Feature<LineString<[[10, 10], [50, 30]]>>\n *\n * // First Segment of 2nd Multi Feature\n * turf.findSegment(multiLine, {multiFeatureIndex: 1});\n * // => Feature<LineString<[[-10, -10], [-50, -30]]>>\n *\n * // Last Segment of Last Multi Feature\n * turf.findSegment(multiLine, {multiFeatureIndex: -1, segmentIndex: -1});\n * // => Feature<LineString<[[-50, -30], [-30, -40]]>>\n */\nfunction findSegment(geojson, options) {\n  // Optional Parameters\n  options = options || {};\n  if (!helpers.isObject(options)) throw new Error(\"options is invalid\");\n  var featureIndex = options.featureIndex || 0;\n  var multiFeatureIndex = options.multiFeatureIndex || 0;\n  var geometryIndex = options.geometryIndex || 0;\n  var segmentIndex = options.segmentIndex || 0;\n\n  // Find FeatureIndex\n  var properties = options.properties;\n  var geometry;\n\n  switch (geojson.type) {\n    case \"FeatureCollection\":\n      if (featureIndex < 0)\n        featureIndex = geojson.features.length + featureIndex;\n      properties = properties || geojson.features[featureIndex].properties;\n      geometry = geojson.features[featureIndex].geometry;\n      break;\n    case \"Feature\":\n      properties = properties || geojson.properties;\n      geometry = geojson.geometry;\n      break;\n    case \"Point\":\n    case \"MultiPoint\":\n      return null;\n    case \"LineString\":\n    case \"Polygon\":\n    case \"MultiLineString\":\n    case \"MultiPolygon\":\n      geometry = geojson;\n      break;\n    default:\n      throw new Error(\"geojson is invalid\");\n  }\n\n  // Find SegmentIndex\n  if (geometry === null) return null;\n  var coords = geometry.coordinates;\n  switch (geometry.type) {\n    case \"Point\":\n    case \"MultiPoint\":\n      return null;\n    case \"LineString\":\n      if (segmentIndex < 0) segmentIndex = coords.length + segmentIndex - 1;\n      return helpers.lineString(\n        [coords[segmentIndex], coords[segmentIndex + 1]],\n        properties,\n        options\n      );\n    case \"Polygon\":\n      if (geometryIndex < 0) geometryIndex = coords.length + geometryIndex;\n      if (segmentIndex < 0)\n        segmentIndex = coords[geometryIndex].length + segmentIndex - 1;\n      return helpers.lineString(\n        [\n          coords[geometryIndex][segmentIndex],\n          coords[geometryIndex][segmentIndex + 1],\n        ],\n        properties,\n        options\n      );\n    case \"MultiLineString\":\n      if (multiFeatureIndex < 0)\n        multiFeatureIndex = coords.length + multiFeatureIndex;\n      if (segmentIndex < 0)\n        segmentIndex = coords[multiFeatureIndex].length + segmentIndex - 1;\n      return helpers.lineString(\n        [\n          coords[multiFeatureIndex][segmentIndex],\n          coords[multiFeatureIndex][segmentIndex + 1],\n        ],\n        properties,\n        options\n      );\n    case \"MultiPolygon\":\n      if (multiFeatureIndex < 0)\n        multiFeatureIndex = coords.length + multiFeatureIndex;\n      if (geometryIndex < 0)\n        geometryIndex = coords[multiFeatureIndex].length + geometryIndex;\n      if (segmentIndex < 0)\n        segmentIndex =\n          coords[multiFeatureIndex][geometryIndex].length - segmentIndex - 1;\n      return helpers.lineString(\n        [\n          coords[multiFeatureIndex][geometryIndex][segmentIndex],\n          coords[multiFeatureIndex][geometryIndex][segmentIndex + 1],\n        ],\n        properties,\n        options\n      );\n  }\n  throw new Error(\"geojson is invalid\");\n}\n\n/**\n * Finds a particular Point from a GeoJSON using `@turf/meta` indexes.\n *\n * Negative indexes are permitted.\n *\n * @param {FeatureCollection|Feature|Geometry} geojson Any GeoJSON Feature or Geometry\n * @param {Object} [options={}] Optional parameters\n * @param {number} [options.featureIndex=0] Feature Index\n * @param {number} [options.multiFeatureIndex=0] Multi-Feature Index\n * @param {number} [options.geometryIndex=0] Geometry Index\n * @param {number} [options.coordIndex=0] Coord Index\n * @param {Object} [options.properties={}] Translate Properties to output Point\n * @param {BBox} [options.bbox={}] Translate BBox to output Point\n * @param {number|string} [options.id={}] Translate Id to output Point\n * @returns {Feature<Point>} 2-vertex GeoJSON Feature Point\n * @example\n * var multiLine = turf.multiLineString([\n *     [[10, 10], [50, 30], [30, 40]],\n *     [[-10, -10], [-50, -30], [-30, -40]]\n * ]);\n *\n * // First Segment (defaults are 0)\n * turf.findPoint(multiLine);\n * // => Feature<Point<[10, 10]>>\n *\n * // First Segment of the 2nd Multi-Feature\n * turf.findPoint(multiLine, {multiFeatureIndex: 1});\n * // => Feature<Point<[-10, -10]>>\n *\n * // Last Segment of last Multi-Feature\n * turf.findPoint(multiLine, {multiFeatureIndex: -1, coordIndex: -1});\n * // => Feature<Point<[-30, -40]>>\n */\nfunction findPoint(geojson, options) {\n  // Optional Parameters\n  options = options || {};\n  if (!helpers.isObject(options)) throw new Error(\"options is invalid\");\n  var featureIndex = options.featureIndex || 0;\n  var multiFeatureIndex = options.multiFeatureIndex || 0;\n  var geometryIndex = options.geometryIndex || 0;\n  var coordIndex = options.coordIndex || 0;\n\n  // Find FeatureIndex\n  var properties = options.properties;\n  var geometry;\n\n  switch (geojson.type) {\n    case \"FeatureCollection\":\n      if (featureIndex < 0)\n        featureIndex = geojson.features.length + featureIndex;\n      properties = properties || geojson.features[featureIndex].properties;\n      geometry = geojson.features[featureIndex].geometry;\n      break;\n    case \"Feature\":\n      properties = properties || geojson.properties;\n      geometry = geojson.geometry;\n      break;\n    case \"Point\":\n    case \"MultiPoint\":\n      return null;\n    case \"LineString\":\n    case \"Polygon\":\n    case \"MultiLineString\":\n    case \"MultiPolygon\":\n      geometry = geojson;\n      break;\n    default:\n      throw new Error(\"geojson is invalid\");\n  }\n\n  // Find Coord Index\n  if (geometry === null) return null;\n  var coords = geometry.coordinates;\n  switch (geometry.type) {\n    case \"Point\":\n      return helpers.point(coords, properties, options);\n    case \"MultiPoint\":\n      if (multiFeatureIndex < 0)\n        multiFeatureIndex = coords.length + multiFeatureIndex;\n      return helpers.point(coords[multiFeatureIndex], properties, options);\n    case \"LineString\":\n      if (coordIndex < 0) coordIndex = coords.length + coordIndex;\n      return helpers.point(coords[coordIndex], properties, options);\n    case \"Polygon\":\n      if (geometryIndex < 0) geometryIndex = coords.length + geometryIndex;\n      if (coordIndex < 0)\n        coordIndex = coords[geometryIndex].length + coordIndex;\n      return helpers.point(coords[geometryIndex][coordIndex], properties, options);\n    case \"MultiLineString\":\n      if (multiFeatureIndex < 0)\n        multiFeatureIndex = coords.length + multiFeatureIndex;\n      if (coordIndex < 0)\n        coordIndex = coords[multiFeatureIndex].length + coordIndex;\n      return helpers.point(coords[multiFeatureIndex][coordIndex], properties, options);\n    case \"MultiPolygon\":\n      if (multiFeatureIndex < 0)\n        multiFeatureIndex = coords.length + multiFeatureIndex;\n      if (geometryIndex < 0)\n        geometryIndex = coords[multiFeatureIndex].length + geometryIndex;\n      if (coordIndex < 0)\n        coordIndex =\n          coords[multiFeatureIndex][geometryIndex].length - coordIndex;\n      return helpers.point(\n        coords[multiFeatureIndex][geometryIndex][coordIndex],\n        properties,\n        options\n      );\n  }\n  throw new Error(\"geojson is invalid\");\n}\n\nexports.coordAll = coordAll;\nexports.coordEach = coordEach;\nexports.coordReduce = coordReduce;\nexports.featureEach = featureEach;\nexports.featureReduce = featureReduce;\nexports.findPoint = findPoint;\nexports.findSegment = findSegment;\nexports.flattenEach = flattenEach;\nexports.flattenReduce = flattenReduce;\nexports.geomEach = geomEach;\nexports.geomReduce = geomReduce;\nexports.lineEach = lineEach;\nexports.lineReduce = lineReduce;\nexports.propEach = propEach;\nexports.propReduce = propReduce;\nexports.segmentEach = segmentEach;\nexports.segmentReduce = segmentReduce;\n","/**\n * Common utilities\n * @module glMatrix\n */\n// Configuration Constants\nexport var EPSILON = 0.000001;\nexport var ARRAY_TYPE = typeof Float32Array !== 'undefined' ? Float32Array : Array;\nexport var RANDOM = Math.random;\n/**\n * Sets the type of array used when creating new vectors and matrices\n *\n * @param {Float32ArrayConstructor | ArrayConstructor} type Array type, such as Float32Array or Array\n */\n\nexport function setMatrixArrayType(type) {\n  ARRAY_TYPE = type;\n}\nvar degree = Math.PI / 180;\n/**\n * Convert Degree To Radian\n *\n * @param {Number} a Angle in Degrees\n */\n\nexport function toRadian(a) {\n  return a * degree;\n}\n/**\n * Tests whether or not the arguments have approximately the same value, within an absolute\n * or relative tolerance of glMatrix.EPSILON (an absolute tolerance is used for values less\n * than or equal to 1.0, and a relative tolerance is used for larger values)\n *\n * @param {Number} a The first number to test.\n * @param {Number} b The second number to test.\n * @returns {Boolean} True if the numbers are approximately equal, false otherwise.\n */\n\nexport function equals(a, b) {\n  return Math.abs(a - b) <= EPSILON * Math.max(1.0, Math.abs(a), Math.abs(b));\n}\nif (!Math.hypot) Math.hypot = function () {\n  var y = 0,\n      i = arguments.length;\n\n  while (i--) {\n    y += arguments[i] * arguments[i];\n  }\n\n  return Math.sqrt(y);\n};","import * as glMatrix from \"./common.js\";\n/**\n * 3x3 Matrix\n * @module mat3\n */\n\n/**\n * Creates a new identity mat3\n *\n * @returns {mat3} a new 3x3 matrix\n */\n\nexport function create() {\n  var out = new glMatrix.ARRAY_TYPE(9);\n\n  if (glMatrix.ARRAY_TYPE != Float32Array) {\n    out[1] = 0;\n    out[2] = 0;\n    out[3] = 0;\n    out[5] = 0;\n    out[6] = 0;\n    out[7] = 0;\n  }\n\n  out[0] = 1;\n  out[4] = 1;\n  out[8] = 1;\n  return out;\n}\n/**\n * Copies the upper-left 3x3 values into the given mat3.\n *\n * @param {mat3} out the receiving 3x3 matrix\n * @param {ReadonlyMat4} a   the source 4x4 matrix\n * @returns {mat3} out\n */\n\nexport function fromMat4(out, a) {\n  out[0] = a[0];\n  out[1] = a[1];\n  out[2] = a[2];\n  out[3] = a[4];\n  out[4] = a[5];\n  out[5] = a[6];\n  out[6] = a[8];\n  out[7] = a[9];\n  out[8] = a[10];\n  return out;\n}\n/**\n * Creates a new mat3 initialized with values from an existing matrix\n *\n * @param {ReadonlyMat3} a matrix to clone\n * @returns {mat3} a new 3x3 matrix\n */\n\nexport function clone(a) {\n  var out = new glMatrix.ARRAY_TYPE(9);\n  out[0] = a[0];\n  out[1] = a[1];\n  out[2] = a[2];\n  out[3] = a[3];\n  out[4] = a[4];\n  out[5] = a[5];\n  out[6] = a[6];\n  out[7] = a[7];\n  out[8] = a[8];\n  return out;\n}\n/**\n * Copy the values from one mat3 to another\n *\n * @param {mat3} out the receiving matrix\n * @param {ReadonlyMat3} a the source matrix\n * @returns {mat3} out\n */\n\nexport function copy(out, a) {\n  out[0] = a[0];\n  out[1] = a[1];\n  out[2] = a[2];\n  out[3] = a[3];\n  out[4] = a[4];\n  out[5] = a[5];\n  out[6] = a[6];\n  out[7] = a[7];\n  out[8] = a[8];\n  return out;\n}\n/**\n * Create a new mat3 with the given values\n *\n * @param {Number} m00 Component in column 0, row 0 position (index 0)\n * @param {Number} m01 Component in column 0, row 1 position (index 1)\n * @param {Number} m02 Component in column 0, row 2 position (index 2)\n * @param {Number} m10 Component in column 1, row 0 position (index 3)\n * @param {Number} m11 Component in column 1, row 1 position (index 4)\n * @param {Number} m12 Component in column 1, row 2 position (index 5)\n * @param {Number} m20 Component in column 2, row 0 position (index 6)\n * @param {Number} m21 Component in column 2, row 1 position (index 7)\n * @param {Number} m22 Component in column 2, row 2 position (index 8)\n * @returns {mat3} A new mat3\n */\n\nexport function fromValues(m00, m01, m02, m10, m11, m12, m20, m21, m22) {\n  var out = new glMatrix.ARRAY_TYPE(9);\n  out[0] = m00;\n  out[1] = m01;\n  out[2] = m02;\n  out[3] = m10;\n  out[4] = m11;\n  out[5] = m12;\n  out[6] = m20;\n  out[7] = m21;\n  out[8] = m22;\n  return out;\n}\n/**\n * Set the components of a mat3 to the given values\n *\n * @param {mat3} out the receiving matrix\n * @param {Number} m00 Component in column 0, row 0 position (index 0)\n * @param {Number} m01 Component in column 0, row 1 position (index 1)\n * @param {Number} m02 Component in column 0, row 2 position (index 2)\n * @param {Number} m10 Component in column 1, row 0 position (index 3)\n * @param {Number} m11 Component in column 1, row 1 position (index 4)\n * @param {Number} m12 Component in column 1, row 2 position (index 5)\n * @param {Number} m20 Component in column 2, row 0 position (index 6)\n * @param {Number} m21 Component in column 2, row 1 position (index 7)\n * @param {Number} m22 Component in column 2, row 2 position (index 8)\n * @returns {mat3} out\n */\n\nexport function set(out, m00, m01, m02, m10, m11, m12, m20, m21, m22) {\n  out[0] = m00;\n  out[1] = m01;\n  out[2] = m02;\n  out[3] = m10;\n  out[4] = m11;\n  out[5] = m12;\n  out[6] = m20;\n  out[7] = m21;\n  out[8] = m22;\n  return out;\n}\n/**\n * Set a mat3 to the identity matrix\n *\n * @param {mat3} out the receiving matrix\n * @returns {mat3} out\n */\n\nexport function identity(out) {\n  out[0] = 1;\n  out[1] = 0;\n  out[2] = 0;\n  out[3] = 0;\n  out[4] = 1;\n  out[5] = 0;\n  out[6] = 0;\n  out[7] = 0;\n  out[8] = 1;\n  return out;\n}\n/**\n * Transpose the values of a mat3\n *\n * @param {mat3} out the receiving matrix\n * @param {ReadonlyMat3} a the source matrix\n * @returns {mat3} out\n */\n\nexport function transpose(out, a) {\n  // If we are transposing ourselves we can skip a few steps but have to cache some values\n  if (out === a) {\n    var a01 = a[1],\n        a02 = a[2],\n        a12 = a[5];\n    out[1] = a[3];\n    out[2] = a[6];\n    out[3] = a01;\n    out[5] = a[7];\n    out[6] = a02;\n    out[7] = a12;\n  } else {\n    out[0] = a[0];\n    out[1] = a[3];\n    out[2] = a[6];\n    out[3] = a[1];\n    out[4] = a[4];\n    out[5] = a[7];\n    out[6] = a[2];\n    out[7] = a[5];\n    out[8] = a[8];\n  }\n\n  return out;\n}\n/**\n * Inverts a mat3\n *\n * @param {mat3} out the receiving matrix\n * @param {ReadonlyMat3} a the source matrix\n * @returns {mat3} out\n */\n\nexport function invert(out, a) {\n  var a00 = a[0],\n      a01 = a[1],\n      a02 = a[2];\n  var a10 = a[3],\n      a11 = a[4],\n      a12 = a[5];\n  var a20 = a[6],\n      a21 = a[7],\n      a22 = a[8];\n  var b01 = a22 * a11 - a12 * a21;\n  var b11 = -a22 * a10 + a12 * a20;\n  var b21 = a21 * a10 - a11 * a20; // Calculate the determinant\n\n  var det = a00 * b01 + a01 * b11 + a02 * b21;\n\n  if (!det) {\n    return null;\n  }\n\n  det = 1.0 / det;\n  out[0] = b01 * det;\n  out[1] = (-a22 * a01 + a02 * a21) * det;\n  out[2] = (a12 * a01 - a02 * a11) * det;\n  out[3] = b11 * det;\n  out[4] = (a22 * a00 - a02 * a20) * det;\n  out[5] = (-a12 * a00 + a02 * a10) * det;\n  out[6] = b21 * det;\n  out[7] = (-a21 * a00 + a01 * a20) * det;\n  out[8] = (a11 * a00 - a01 * a10) * det;\n  return out;\n}\n/**\n * Calculates the adjugate of a mat3\n *\n * @param {mat3} out the receiving matrix\n * @param {ReadonlyMat3} a the source matrix\n * @returns {mat3} out\n */\n\nexport function adjoint(out, a) {\n  var a00 = a[0],\n      a01 = a[1],\n      a02 = a[2];\n  var a10 = a[3],\n      a11 = a[4],\n      a12 = a[5];\n  var a20 = a[6],\n      a21 = a[7],\n      a22 = a[8];\n  out[0] = a11 * a22 - a12 * a21;\n  out[1] = a02 * a21 - a01 * a22;\n  out[2] = a01 * a12 - a02 * a11;\n  out[3] = a12 * a20 - a10 * a22;\n  out[4] = a00 * a22 - a02 * a20;\n  out[5] = a02 * a10 - a00 * a12;\n  out[6] = a10 * a21 - a11 * a20;\n  out[7] = a01 * a20 - a00 * a21;\n  out[8] = a00 * a11 - a01 * a10;\n  return out;\n}\n/**\n * Calculates the determinant of a mat3\n *\n * @param {ReadonlyMat3} a the source matrix\n * @returns {Number} determinant of a\n */\n\nexport function determinant(a) {\n  var a00 = a[0],\n      a01 = a[1],\n      a02 = a[2];\n  var a10 = a[3],\n      a11 = a[4],\n      a12 = a[5];\n  var a20 = a[6],\n      a21 = a[7],\n      a22 = a[8];\n  return a00 * (a22 * a11 - a12 * a21) + a01 * (-a22 * a10 + a12 * a20) + a02 * (a21 * a10 - a11 * a20);\n}\n/**\n * Multiplies two mat3's\n *\n * @param {mat3} out the receiving matrix\n * @param {ReadonlyMat3} a the first operand\n * @param {ReadonlyMat3} b the second operand\n * @returns {mat3} out\n */\n\nexport function multiply(out, a, b) {\n  var a00 = a[0],\n      a01 = a[1],\n      a02 = a[2];\n  var a10 = a[3],\n      a11 = a[4],\n      a12 = a[5];\n  var a20 = a[6],\n      a21 = a[7],\n      a22 = a[8];\n  var b00 = b[0],\n      b01 = b[1],\n      b02 = b[2];\n  var b10 = b[3],\n      b11 = b[4],\n      b12 = b[5];\n  var b20 = b[6],\n      b21 = b[7],\n      b22 = b[8];\n  out[0] = b00 * a00 + b01 * a10 + b02 * a20;\n  out[1] = b00 * a01 + b01 * a11 + b02 * a21;\n  out[2] = b00 * a02 + b01 * a12 + b02 * a22;\n  out[3] = b10 * a00 + b11 * a10 + b12 * a20;\n  out[4] = b10 * a01 + b11 * a11 + b12 * a21;\n  out[5] = b10 * a02 + b11 * a12 + b12 * a22;\n  out[6] = b20 * a00 + b21 * a10 + b22 * a20;\n  out[7] = b20 * a01 + b21 * a11 + b22 * a21;\n  out[8] = b20 * a02 + b21 * a12 + b22 * a22;\n  return out;\n}\n/**\n * Translate a mat3 by the given vector\n *\n * @param {mat3} out the receiving matrix\n * @param {ReadonlyMat3} a the matrix to translate\n * @param {ReadonlyVec2} v vector to translate by\n * @returns {mat3} out\n */\n\nexport function translate(out, a, v) {\n  var a00 = a[0],\n      a01 = a[1],\n      a02 = a[2],\n      a10 = a[3],\n      a11 = a[4],\n      a12 = a[5],\n      a20 = a[6],\n      a21 = a[7],\n      a22 = a[8],\n      x = v[0],\n      y = v[1];\n  out[0] = a00;\n  out[1] = a01;\n  out[2] = a02;\n  out[3] = a10;\n  out[4] = a11;\n  out[5] = a12;\n  out[6] = x * a00 + y * a10 + a20;\n  out[7] = x * a01 + y * a11 + a21;\n  out[8] = x * a02 + y * a12 + a22;\n  return out;\n}\n/**\n * Rotates a mat3 by the given angle\n *\n * @param {mat3} out the receiving matrix\n * @param {ReadonlyMat3} a the matrix to rotate\n * @param {Number} rad the angle to rotate the matrix by\n * @returns {mat3} out\n */\n\nexport function rotate(out, a, rad) {\n  var a00 = a[0],\n      a01 = a[1],\n      a02 = a[2],\n      a10 = a[3],\n      a11 = a[4],\n      a12 = a[5],\n      a20 = a[6],\n      a21 = a[7],\n      a22 = a[8],\n      s = Math.sin(rad),\n      c = Math.cos(rad);\n  out[0] = c * a00 + s * a10;\n  out[1] = c * a01 + s * a11;\n  out[2] = c * a02 + s * a12;\n  out[3] = c * a10 - s * a00;\n  out[4] = c * a11 - s * a01;\n  out[5] = c * a12 - s * a02;\n  out[6] = a20;\n  out[7] = a21;\n  out[8] = a22;\n  return out;\n}\n/**\n * Scales the mat3 by the dimensions in the given vec2\n *\n * @param {mat3} out the receiving matrix\n * @param {ReadonlyMat3} a the matrix to rotate\n * @param {ReadonlyVec2} v the vec2 to scale the matrix by\n * @returns {mat3} out\n **/\n\nexport function scale(out, a, v) {\n  var x = v[0],\n      y = v[1];\n  out[0] = x * a[0];\n  out[1] = x * a[1];\n  out[2] = x * a[2];\n  out[3] = y * a[3];\n  out[4] = y * a[4];\n  out[5] = y * a[5];\n  out[6] = a[6];\n  out[7] = a[7];\n  out[8] = a[8];\n  return out;\n}\n/**\n * Creates a matrix from a vector translation\n * This is equivalent to (but much faster than):\n *\n *     mat3.identity(dest);\n *     mat3.translate(dest, dest, vec);\n *\n * @param {mat3} out mat3 receiving operation result\n * @param {ReadonlyVec2} v Translation vector\n * @returns {mat3} out\n */\n\nexport function fromTranslation(out, v) {\n  out[0] = 1;\n  out[1] = 0;\n  out[2] = 0;\n  out[3] = 0;\n  out[4] = 1;\n  out[5] = 0;\n  out[6] = v[0];\n  out[7] = v[1];\n  out[8] = 1;\n  return out;\n}\n/**\n * Creates a matrix from a given angle\n * This is equivalent to (but much faster than):\n *\n *     mat3.identity(dest);\n *     mat3.rotate(dest, dest, rad);\n *\n * @param {mat3} out mat3 receiving operation result\n * @param {Number} rad the angle to rotate the matrix by\n * @returns {mat3} out\n */\n\nexport function fromRotation(out, rad) {\n  var s = Math.sin(rad),\n      c = Math.cos(rad);\n  out[0] = c;\n  out[1] = s;\n  out[2] = 0;\n  out[3] = -s;\n  out[4] = c;\n  out[5] = 0;\n  out[6] = 0;\n  out[7] = 0;\n  out[8] = 1;\n  return out;\n}\n/**\n * Creates a matrix from a vector scaling\n * This is equivalent to (but much faster than):\n *\n *     mat3.identity(dest);\n *     mat3.scale(dest, dest, vec);\n *\n * @param {mat3} out mat3 receiving operation result\n * @param {ReadonlyVec2} v Scaling vector\n * @returns {mat3} out\n */\n\nexport function fromScaling(out, v) {\n  out[0] = v[0];\n  out[1] = 0;\n  out[2] = 0;\n  out[3] = 0;\n  out[4] = v[1];\n  out[5] = 0;\n  out[6] = 0;\n  out[7] = 0;\n  out[8] = 1;\n  return out;\n}\n/**\n * Copies the values from a mat2d into a mat3\n *\n * @param {mat3} out the receiving matrix\n * @param {ReadonlyMat2d} a the matrix to copy\n * @returns {mat3} out\n **/\n\nexport function fromMat2d(out, a) {\n  out[0] = a[0];\n  out[1] = a[1];\n  out[2] = 0;\n  out[3] = a[2];\n  out[4] = a[3];\n  out[5] = 0;\n  out[6] = a[4];\n  out[7] = a[5];\n  out[8] = 1;\n  return out;\n}\n/**\n * Calculates a 3x3 matrix from the given quaternion\n *\n * @param {mat3} out mat3 receiving operation result\n * @param {ReadonlyQuat} q Quaternion to create matrix from\n *\n * @returns {mat3} out\n */\n\nexport function fromQuat(out, q) {\n  var x = q[0],\n      y = q[1],\n      z = q[2],\n      w = q[3];\n  var x2 = x + x;\n  var y2 = y + y;\n  var z2 = z + z;\n  var xx = x * x2;\n  var yx = y * x2;\n  var yy = y * y2;\n  var zx = z * x2;\n  var zy = z * y2;\n  var zz = z * z2;\n  var wx = w * x2;\n  var wy = w * y2;\n  var wz = w * z2;\n  out[0] = 1 - yy - zz;\n  out[3] = yx - wz;\n  out[6] = zx + wy;\n  out[1] = yx + wz;\n  out[4] = 1 - xx - zz;\n  out[7] = zy - wx;\n  out[2] = zx - wy;\n  out[5] = zy + wx;\n  out[8] = 1 - xx - yy;\n  return out;\n}\n/**\n * Calculates a 3x3 normal matrix (transpose inverse) from the 4x4 matrix\n *\n * @param {mat3} out mat3 receiving operation result\n * @param {ReadonlyMat4} a Mat4 to derive the normal matrix from\n *\n * @returns {mat3} out\n */\n\nexport function normalFromMat4(out, a) {\n  var a00 = a[0],\n      a01 = a[1],\n      a02 = a[2],\n      a03 = a[3];\n  var a10 = a[4],\n      a11 = a[5],\n      a12 = a[6],\n      a13 = a[7];\n  var a20 = a[8],\n      a21 = a[9],\n      a22 = a[10],\n      a23 = a[11];\n  var a30 = a[12],\n      a31 = a[13],\n      a32 = a[14],\n      a33 = a[15];\n  var b00 = a00 * a11 - a01 * a10;\n  var b01 = a00 * a12 - a02 * a10;\n  var b02 = a00 * a13 - a03 * a10;\n  var b03 = a01 * a12 - a02 * a11;\n  var b04 = a01 * a13 - a03 * a11;\n  var b05 = a02 * a13 - a03 * a12;\n  var b06 = a20 * a31 - a21 * a30;\n  var b07 = a20 * a32 - a22 * a30;\n  var b08 = a20 * a33 - a23 * a30;\n  var b09 = a21 * a32 - a22 * a31;\n  var b10 = a21 * a33 - a23 * a31;\n  var b11 = a22 * a33 - a23 * a32; // Calculate the determinant\n\n  var det = b00 * b11 - b01 * b10 + b02 * b09 + b03 * b08 - b04 * b07 + b05 * b06;\n\n  if (!det) {\n    return null;\n  }\n\n  det = 1.0 / det;\n  out[0] = (a11 * b11 - a12 * b10 + a13 * b09) * det;\n  out[1] = (a12 * b08 - a10 * b11 - a13 * b07) * det;\n  out[2] = (a10 * b10 - a11 * b08 + a13 * b06) * det;\n  out[3] = (a02 * b10 - a01 * b11 - a03 * b09) * det;\n  out[4] = (a00 * b11 - a02 * b08 + a03 * b07) * det;\n  out[5] = (a01 * b08 - a00 * b10 - a03 * b06) * det;\n  out[6] = (a31 * b05 - a32 * b04 + a33 * b03) * det;\n  out[7] = (a32 * b02 - a30 * b05 - a33 * b01) * det;\n  out[8] = (a30 * b04 - a31 * b02 + a33 * b00) * det;\n  return out;\n}\n/**\n * Generates a 2D projection matrix with the given bounds\n *\n * @param {mat3} out mat3 frustum matrix will be written into\n * @param {number} width Width of your gl context\n * @param {number} height Height of gl context\n * @returns {mat3} out\n */\n\nexport function projection(out, width, height) {\n  out[0] = 2 / width;\n  out[1] = 0;\n  out[2] = 0;\n  out[3] = 0;\n  out[4] = -2 / height;\n  out[5] = 0;\n  out[6] = -1;\n  out[7] = 1;\n  out[8] = 1;\n  return out;\n}\n/**\n * Returns a string representation of a mat3\n *\n * @param {ReadonlyMat3} a matrix to represent as a string\n * @returns {String} string representation of the matrix\n */\n\nexport function str(a) {\n  return \"mat3(\" + a[0] + \", \" + a[1] + \", \" + a[2] + \", \" + a[3] + \", \" + a[4] + \", \" + a[5] + \", \" + a[6] + \", \" + a[7] + \", \" + a[8] + \")\";\n}\n/**\n * Returns Frobenius norm of a mat3\n *\n * @param {ReadonlyMat3} a the matrix to calculate Frobenius norm of\n * @returns {Number} Frobenius norm\n */\n\nexport function frob(a) {\n  return Math.hypot(a[0], a[1], a[2], a[3], a[4], a[5], a[6], a[7], a[8]);\n}\n/**\n * Adds two mat3's\n *\n * @param {mat3} out the receiving matrix\n * @param {ReadonlyMat3} a the first operand\n * @param {ReadonlyMat3} b the second operand\n * @returns {mat3} out\n */\n\nexport function add(out, a, b) {\n  out[0] = a[0] + b[0];\n  out[1] = a[1] + b[1];\n  out[2] = a[2] + b[2];\n  out[3] = a[3] + b[3];\n  out[4] = a[4] + b[4];\n  out[5] = a[5] + b[5];\n  out[6] = a[6] + b[6];\n  out[7] = a[7] + b[7];\n  out[8] = a[8] + b[8];\n  return out;\n}\n/**\n * Subtracts matrix b from matrix a\n *\n * @param {mat3} out the receiving matrix\n * @param {ReadonlyMat3} a the first operand\n * @param {ReadonlyMat3} b the second operand\n * @returns {mat3} out\n */\n\nexport function subtract(out, a, b) {\n  out[0] = a[0] - b[0];\n  out[1] = a[1] - b[1];\n  out[2] = a[2] - b[2];\n  out[3] = a[3] - b[3];\n  out[4] = a[4] - b[4];\n  out[5] = a[5] - b[5];\n  out[6] = a[6] - b[6];\n  out[7] = a[7] - b[7];\n  out[8] = a[8] - b[8];\n  return out;\n}\n/**\n * Multiply each element of the matrix by a scalar.\n *\n * @param {mat3} out the receiving matrix\n * @param {ReadonlyMat3} a the matrix to scale\n * @param {Number} b amount to scale the matrix's elements by\n * @returns {mat3} out\n */\n\nexport function multiplyScalar(out, a, b) {\n  out[0] = a[0] * b;\n  out[1] = a[1] * b;\n  out[2] = a[2] * b;\n  out[3] = a[3] * b;\n  out[4] = a[4] * b;\n  out[5] = a[5] * b;\n  out[6] = a[6] * b;\n  out[7] = a[7] * b;\n  out[8] = a[8] * b;\n  return out;\n}\n/**\n * Adds two mat3's after multiplying each element of the second operand by a scalar value.\n *\n * @param {mat3} out the receiving vector\n * @param {ReadonlyMat3} a the first operand\n * @param {ReadonlyMat3} b the second operand\n * @param {Number} scale the amount to scale b's elements by before adding\n * @returns {mat3} out\n */\n\nexport function multiplyScalarAndAdd(out, a, b, scale) {\n  out[0] = a[0] + b[0] * scale;\n  out[1] = a[1] + b[1] * scale;\n  out[2] = a[2] + b[2] * scale;\n  out[3] = a[3] + b[3] * scale;\n  out[4] = a[4] + b[4] * scale;\n  out[5] = a[5] + b[5] * scale;\n  out[6] = a[6] + b[6] * scale;\n  out[7] = a[7] + b[7] * scale;\n  out[8] = a[8] + b[8] * scale;\n  return out;\n}\n/**\n * Returns whether or not the matrices have exactly the same elements in the same position (when compared with ===)\n *\n * @param {ReadonlyMat3} a The first matrix.\n * @param {ReadonlyMat3} b The second matrix.\n * @returns {Boolean} True if the matrices are equal, false otherwise.\n */\n\nexport function exactEquals(a, b) {\n  return a[0] === b[0] && a[1] === b[1] && a[2] === b[2] && a[3] === b[3] && a[4] === b[4] && a[5] === b[5] && a[6] === b[6] && a[7] === b[7] && a[8] === b[8];\n}\n/**\n * Returns whether or not the matrices have approximately the same elements in the same position.\n *\n * @param {ReadonlyMat3} a The first matrix.\n * @param {ReadonlyMat3} b The second matrix.\n * @returns {Boolean} True if the matrices are equal, false otherwise.\n */\n\nexport function equals(a, b) {\n  var a0 = a[0],\n      a1 = a[1],\n      a2 = a[2],\n      a3 = a[3],\n      a4 = a[4],\n      a5 = a[5],\n      a6 = a[6],\n      a7 = a[7],\n      a8 = a[8];\n  var b0 = b[0],\n      b1 = b[1],\n      b2 = b[2],\n      b3 = b[3],\n      b4 = b[4],\n      b5 = b[5],\n      b6 = b[6],\n      b7 = b[7],\n      b8 = b[8];\n  return Math.abs(a0 - b0) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a0), Math.abs(b0)) && Math.abs(a1 - b1) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a1), Math.abs(b1)) && Math.abs(a2 - b2) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a2), Math.abs(b2)) && Math.abs(a3 - b3) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a3), Math.abs(b3)) && Math.abs(a4 - b4) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a4), Math.abs(b4)) && Math.abs(a5 - b5) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a5), Math.abs(b5)) && Math.abs(a6 - b6) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a6), Math.abs(b6)) && Math.abs(a7 - b7) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a7), Math.abs(b7)) && Math.abs(a8 - b8) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a8), Math.abs(b8));\n}\n/**\n * Alias for {@link mat3.multiply}\n * @function\n */\n\nexport var mul = multiply;\n/**\n * Alias for {@link mat3.subtract}\n * @function\n */\n\nexport var sub = subtract;","import * as glMatrix from \"./common.js\";\n/**\n * 4x4 Matrix<br>Format: column-major, when typed out it looks like row-major<br>The matrices are being post multiplied.\n * @module mat4\n */\n\n/**\n * Creates a new identity mat4\n *\n * @returns {mat4} a new 4x4 matrix\n */\n\nexport function create() {\n  var out = new glMatrix.ARRAY_TYPE(16);\n\n  if (glMatrix.ARRAY_TYPE != Float32Array) {\n    out[1] = 0;\n    out[2] = 0;\n    out[3] = 0;\n    out[4] = 0;\n    out[6] = 0;\n    out[7] = 0;\n    out[8] = 0;\n    out[9] = 0;\n    out[11] = 0;\n    out[12] = 0;\n    out[13] = 0;\n    out[14] = 0;\n  }\n\n  out[0] = 1;\n  out[5] = 1;\n  out[10] = 1;\n  out[15] = 1;\n  return out;\n}\n/**\n * Creates a new mat4 initialized with values from an existing matrix\n *\n * @param {ReadonlyMat4} a matrix to clone\n * @returns {mat4} a new 4x4 matrix\n */\n\nexport function clone(a) {\n  var out = new glMatrix.ARRAY_TYPE(16);\n  out[0] = a[0];\n  out[1] = a[1];\n  out[2] = a[2];\n  out[3] = a[3];\n  out[4] = a[4];\n  out[5] = a[5];\n  out[6] = a[6];\n  out[7] = a[7];\n  out[8] = a[8];\n  out[9] = a[9];\n  out[10] = a[10];\n  out[11] = a[11];\n  out[12] = a[12];\n  out[13] = a[13];\n  out[14] = a[14];\n  out[15] = a[15];\n  return out;\n}\n/**\n * Copy the values from one mat4 to another\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the source matrix\n * @returns {mat4} out\n */\n\nexport function copy(out, a) {\n  out[0] = a[0];\n  out[1] = a[1];\n  out[2] = a[2];\n  out[3] = a[3];\n  out[4] = a[4];\n  out[5] = a[5];\n  out[6] = a[6];\n  out[7] = a[7];\n  out[8] = a[8];\n  out[9] = a[9];\n  out[10] = a[10];\n  out[11] = a[11];\n  out[12] = a[12];\n  out[13] = a[13];\n  out[14] = a[14];\n  out[15] = a[15];\n  return out;\n}\n/**\n * Create a new mat4 with the given values\n *\n * @param {Number} m00 Component in column 0, row 0 position (index 0)\n * @param {Number} m01 Component in column 0, row 1 position (index 1)\n * @param {Number} m02 Component in column 0, row 2 position (index 2)\n * @param {Number} m03 Component in column 0, row 3 position (index 3)\n * @param {Number} m10 Component in column 1, row 0 position (index 4)\n * @param {Number} m11 Component in column 1, row 1 position (index 5)\n * @param {Number} m12 Component in column 1, row 2 position (index 6)\n * @param {Number} m13 Component in column 1, row 3 position (index 7)\n * @param {Number} m20 Component in column 2, row 0 position (index 8)\n * @param {Number} m21 Component in column 2, row 1 position (index 9)\n * @param {Number} m22 Component in column 2, row 2 position (index 10)\n * @param {Number} m23 Component in column 2, row 3 position (index 11)\n * @param {Number} m30 Component in column 3, row 0 position (index 12)\n * @param {Number} m31 Component in column 3, row 1 position (index 13)\n * @param {Number} m32 Component in column 3, row 2 position (index 14)\n * @param {Number} m33 Component in column 3, row 3 position (index 15)\n * @returns {mat4} A new mat4\n */\n\nexport function fromValues(m00, m01, m02, m03, m10, m11, m12, m13, m20, m21, m22, m23, m30, m31, m32, m33) {\n  var out = new glMatrix.ARRAY_TYPE(16);\n  out[0] = m00;\n  out[1] = m01;\n  out[2] = m02;\n  out[3] = m03;\n  out[4] = m10;\n  out[5] = m11;\n  out[6] = m12;\n  out[7] = m13;\n  out[8] = m20;\n  out[9] = m21;\n  out[10] = m22;\n  out[11] = m23;\n  out[12] = m30;\n  out[13] = m31;\n  out[14] = m32;\n  out[15] = m33;\n  return out;\n}\n/**\n * Set the components of a mat4 to the given values\n *\n * @param {mat4} out the receiving matrix\n * @param {Number} m00 Component in column 0, row 0 position (index 0)\n * @param {Number} m01 Component in column 0, row 1 position (index 1)\n * @param {Number} m02 Component in column 0, row 2 position (index 2)\n * @param {Number} m03 Component in column 0, row 3 position (index 3)\n * @param {Number} m10 Component in column 1, row 0 position (index 4)\n * @param {Number} m11 Component in column 1, row 1 position (index 5)\n * @param {Number} m12 Component in column 1, row 2 position (index 6)\n * @param {Number} m13 Component in column 1, row 3 position (index 7)\n * @param {Number} m20 Component in column 2, row 0 position (index 8)\n * @param {Number} m21 Component in column 2, row 1 position (index 9)\n * @param {Number} m22 Component in column 2, row 2 position (index 10)\n * @param {Number} m23 Component in column 2, row 3 position (index 11)\n * @param {Number} m30 Component in column 3, row 0 position (index 12)\n * @param {Number} m31 Component in column 3, row 1 position (index 13)\n * @param {Number} m32 Component in column 3, row 2 position (index 14)\n * @param {Number} m33 Component in column 3, row 3 position (index 15)\n * @returns {mat4} out\n */\n\nexport function set(out, m00, m01, m02, m03, m10, m11, m12, m13, m20, m21, m22, m23, m30, m31, m32, m33) {\n  out[0] = m00;\n  out[1] = m01;\n  out[2] = m02;\n  out[3] = m03;\n  out[4] = m10;\n  out[5] = m11;\n  out[6] = m12;\n  out[7] = m13;\n  out[8] = m20;\n  out[9] = m21;\n  out[10] = m22;\n  out[11] = m23;\n  out[12] = m30;\n  out[13] = m31;\n  out[14] = m32;\n  out[15] = m33;\n  return out;\n}\n/**\n * Set a mat4 to the identity matrix\n *\n * @param {mat4} out the receiving matrix\n * @returns {mat4} out\n */\n\nexport function identity(out) {\n  out[0] = 1;\n  out[1] = 0;\n  out[2] = 0;\n  out[3] = 0;\n  out[4] = 0;\n  out[5] = 1;\n  out[6] = 0;\n  out[7] = 0;\n  out[8] = 0;\n  out[9] = 0;\n  out[10] = 1;\n  out[11] = 0;\n  out[12] = 0;\n  out[13] = 0;\n  out[14] = 0;\n  out[15] = 1;\n  return out;\n}\n/**\n * Transpose the values of a mat4\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the source matrix\n * @returns {mat4} out\n */\n\nexport function transpose(out, a) {\n  // If we are transposing ourselves we can skip a few steps but have to cache some values\n  if (out === a) {\n    var a01 = a[1],\n        a02 = a[2],\n        a03 = a[3];\n    var a12 = a[6],\n        a13 = a[7];\n    var a23 = a[11];\n    out[1] = a[4];\n    out[2] = a[8];\n    out[3] = a[12];\n    out[4] = a01;\n    out[6] = a[9];\n    out[7] = a[13];\n    out[8] = a02;\n    out[9] = a12;\n    out[11] = a[14];\n    out[12] = a03;\n    out[13] = a13;\n    out[14] = a23;\n  } else {\n    out[0] = a[0];\n    out[1] = a[4];\n    out[2] = a[8];\n    out[3] = a[12];\n    out[4] = a[1];\n    out[5] = a[5];\n    out[6] = a[9];\n    out[7] = a[13];\n    out[8] = a[2];\n    out[9] = a[6];\n    out[10] = a[10];\n    out[11] = a[14];\n    out[12] = a[3];\n    out[13] = a[7];\n    out[14] = a[11];\n    out[15] = a[15];\n  }\n\n  return out;\n}\n/**\n * Inverts a mat4\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the source matrix\n * @returns {mat4} out\n */\n\nexport function invert(out, a) {\n  var a00 = a[0],\n      a01 = a[1],\n      a02 = a[2],\n      a03 = a[3];\n  var a10 = a[4],\n      a11 = a[5],\n      a12 = a[6],\n      a13 = a[7];\n  var a20 = a[8],\n      a21 = a[9],\n      a22 = a[10],\n      a23 = a[11];\n  var a30 = a[12],\n      a31 = a[13],\n      a32 = a[14],\n      a33 = a[15];\n  var b00 = a00 * a11 - a01 * a10;\n  var b01 = a00 * a12 - a02 * a10;\n  var b02 = a00 * a13 - a03 * a10;\n  var b03 = a01 * a12 - a02 * a11;\n  var b04 = a01 * a13 - a03 * a11;\n  var b05 = a02 * a13 - a03 * a12;\n  var b06 = a20 * a31 - a21 * a30;\n  var b07 = a20 * a32 - a22 * a30;\n  var b08 = a20 * a33 - a23 * a30;\n  var b09 = a21 * a32 - a22 * a31;\n  var b10 = a21 * a33 - a23 * a31;\n  var b11 = a22 * a33 - a23 * a32; // Calculate the determinant\n\n  var det = b00 * b11 - b01 * b10 + b02 * b09 + b03 * b08 - b04 * b07 + b05 * b06;\n\n  if (!det) {\n    return null;\n  }\n\n  det = 1.0 / det;\n  out[0] = (a11 * b11 - a12 * b10 + a13 * b09) * det;\n  out[1] = (a02 * b10 - a01 * b11 - a03 * b09) * det;\n  out[2] = (a31 * b05 - a32 * b04 + a33 * b03) * det;\n  out[3] = (a22 * b04 - a21 * b05 - a23 * b03) * det;\n  out[4] = (a12 * b08 - a10 * b11 - a13 * b07) * det;\n  out[5] = (a00 * b11 - a02 * b08 + a03 * b07) * det;\n  out[6] = (a32 * b02 - a30 * b05 - a33 * b01) * det;\n  out[7] = (a20 * b05 - a22 * b02 + a23 * b01) * det;\n  out[8] = (a10 * b10 - a11 * b08 + a13 * b06) * det;\n  out[9] = (a01 * b08 - a00 * b10 - a03 * b06) * det;\n  out[10] = (a30 * b04 - a31 * b02 + a33 * b00) * det;\n  out[11] = (a21 * b02 - a20 * b04 - a23 * b00) * det;\n  out[12] = (a11 * b07 - a10 * b09 - a12 * b06) * det;\n  out[13] = (a00 * b09 - a01 * b07 + a02 * b06) * det;\n  out[14] = (a31 * b01 - a30 * b03 - a32 * b00) * det;\n  out[15] = (a20 * b03 - a21 * b01 + a22 * b00) * det;\n  return out;\n}\n/**\n * Calculates the adjugate of a mat4\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the source matrix\n * @returns {mat4} out\n */\n\nexport function adjoint(out, a) {\n  var a00 = a[0],\n      a01 = a[1],\n      a02 = a[2],\n      a03 = a[3];\n  var a10 = a[4],\n      a11 = a[5],\n      a12 = a[6],\n      a13 = a[7];\n  var a20 = a[8],\n      a21 = a[9],\n      a22 = a[10],\n      a23 = a[11];\n  var a30 = a[12],\n      a31 = a[13],\n      a32 = a[14],\n      a33 = a[15];\n  out[0] = a11 * (a22 * a33 - a23 * a32) - a21 * (a12 * a33 - a13 * a32) + a31 * (a12 * a23 - a13 * a22);\n  out[1] = -(a01 * (a22 * a33 - a23 * a32) - a21 * (a02 * a33 - a03 * a32) + a31 * (a02 * a23 - a03 * a22));\n  out[2] = a01 * (a12 * a33 - a13 * a32) - a11 * (a02 * a33 - a03 * a32) + a31 * (a02 * a13 - a03 * a12);\n  out[3] = -(a01 * (a12 * a23 - a13 * a22) - a11 * (a02 * a23 - a03 * a22) + a21 * (a02 * a13 - a03 * a12));\n  out[4] = -(a10 * (a22 * a33 - a23 * a32) - a20 * (a12 * a33 - a13 * a32) + a30 * (a12 * a23 - a13 * a22));\n  out[5] = a00 * (a22 * a33 - a23 * a32) - a20 * (a02 * a33 - a03 * a32) + a30 * (a02 * a23 - a03 * a22);\n  out[6] = -(a00 * (a12 * a33 - a13 * a32) - a10 * (a02 * a33 - a03 * a32) + a30 * (a02 * a13 - a03 * a12));\n  out[7] = a00 * (a12 * a23 - a13 * a22) - a10 * (a02 * a23 - a03 * a22) + a20 * (a02 * a13 - a03 * a12);\n  out[8] = a10 * (a21 * a33 - a23 * a31) - a20 * (a11 * a33 - a13 * a31) + a30 * (a11 * a23 - a13 * a21);\n  out[9] = -(a00 * (a21 * a33 - a23 * a31) - a20 * (a01 * a33 - a03 * a31) + a30 * (a01 * a23 - a03 * a21));\n  out[10] = a00 * (a11 * a33 - a13 * a31) - a10 * (a01 * a33 - a03 * a31) + a30 * (a01 * a13 - a03 * a11);\n  out[11] = -(a00 * (a11 * a23 - a13 * a21) - a10 * (a01 * a23 - a03 * a21) + a20 * (a01 * a13 - a03 * a11));\n  out[12] = -(a10 * (a21 * a32 - a22 * a31) - a20 * (a11 * a32 - a12 * a31) + a30 * (a11 * a22 - a12 * a21));\n  out[13] = a00 * (a21 * a32 - a22 * a31) - a20 * (a01 * a32 - a02 * a31) + a30 * (a01 * a22 - a02 * a21);\n  out[14] = -(a00 * (a11 * a32 - a12 * a31) - a10 * (a01 * a32 - a02 * a31) + a30 * (a01 * a12 - a02 * a11));\n  out[15] = a00 * (a11 * a22 - a12 * a21) - a10 * (a01 * a22 - a02 * a21) + a20 * (a01 * a12 - a02 * a11);\n  return out;\n}\n/**\n * Calculates the determinant of a mat4\n *\n * @param {ReadonlyMat4} a the source matrix\n * @returns {Number} determinant of a\n */\n\nexport function determinant(a) {\n  var a00 = a[0],\n      a01 = a[1],\n      a02 = a[2],\n      a03 = a[3];\n  var a10 = a[4],\n      a11 = a[5],\n      a12 = a[6],\n      a13 = a[7];\n  var a20 = a[8],\n      a21 = a[9],\n      a22 = a[10],\n      a23 = a[11];\n  var a30 = a[12],\n      a31 = a[13],\n      a32 = a[14],\n      a33 = a[15];\n  var b00 = a00 * a11 - a01 * a10;\n  var b01 = a00 * a12 - a02 * a10;\n  var b02 = a00 * a13 - a03 * a10;\n  var b03 = a01 * a12 - a02 * a11;\n  var b04 = a01 * a13 - a03 * a11;\n  var b05 = a02 * a13 - a03 * a12;\n  var b06 = a20 * a31 - a21 * a30;\n  var b07 = a20 * a32 - a22 * a30;\n  var b08 = a20 * a33 - a23 * a30;\n  var b09 = a21 * a32 - a22 * a31;\n  var b10 = a21 * a33 - a23 * a31;\n  var b11 = a22 * a33 - a23 * a32; // Calculate the determinant\n\n  return b00 * b11 - b01 * b10 + b02 * b09 + b03 * b08 - b04 * b07 + b05 * b06;\n}\n/**\n * Multiplies two mat4s\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the first operand\n * @param {ReadonlyMat4} b the second operand\n * @returns {mat4} out\n */\n\nexport function multiply(out, a, b) {\n  var a00 = a[0],\n      a01 = a[1],\n      a02 = a[2],\n      a03 = a[3];\n  var a10 = a[4],\n      a11 = a[5],\n      a12 = a[6],\n      a13 = a[7];\n  var a20 = a[8],\n      a21 = a[9],\n      a22 = a[10],\n      a23 = a[11];\n  var a30 = a[12],\n      a31 = a[13],\n      a32 = a[14],\n      a33 = a[15]; // Cache only the current line of the second matrix\n\n  var b0 = b[0],\n      b1 = b[1],\n      b2 = b[2],\n      b3 = b[3];\n  out[0] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30;\n  out[1] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31;\n  out[2] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32;\n  out[3] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33;\n  b0 = b[4];\n  b1 = b[5];\n  b2 = b[6];\n  b3 = b[7];\n  out[4] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30;\n  out[5] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31;\n  out[6] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32;\n  out[7] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33;\n  b0 = b[8];\n  b1 = b[9];\n  b2 = b[10];\n  b3 = b[11];\n  out[8] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30;\n  out[9] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31;\n  out[10] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32;\n  out[11] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33;\n  b0 = b[12];\n  b1 = b[13];\n  b2 = b[14];\n  b3 = b[15];\n  out[12] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30;\n  out[13] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31;\n  out[14] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32;\n  out[15] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33;\n  return out;\n}\n/**\n * Translate a mat4 by the given vector\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the matrix to translate\n * @param {ReadonlyVec3} v vector to translate by\n * @returns {mat4} out\n */\n\nexport function translate(out, a, v) {\n  var x = v[0],\n      y = v[1],\n      z = v[2];\n  var a00, a01, a02, a03;\n  var a10, a11, a12, a13;\n  var a20, a21, a22, a23;\n\n  if (a === out) {\n    out[12] = a[0] * x + a[4] * y + a[8] * z + a[12];\n    out[13] = a[1] * x + a[5] * y + a[9] * z + a[13];\n    out[14] = a[2] * x + a[6] * y + a[10] * z + a[14];\n    out[15] = a[3] * x + a[7] * y + a[11] * z + a[15];\n  } else {\n    a00 = a[0];\n    a01 = a[1];\n    a02 = a[2];\n    a03 = a[3];\n    a10 = a[4];\n    a11 = a[5];\n    a12 = a[6];\n    a13 = a[7];\n    a20 = a[8];\n    a21 = a[9];\n    a22 = a[10];\n    a23 = a[11];\n    out[0] = a00;\n    out[1] = a01;\n    out[2] = a02;\n    out[3] = a03;\n    out[4] = a10;\n    out[5] = a11;\n    out[6] = a12;\n    out[7] = a13;\n    out[8] = a20;\n    out[9] = a21;\n    out[10] = a22;\n    out[11] = a23;\n    out[12] = a00 * x + a10 * y + a20 * z + a[12];\n    out[13] = a01 * x + a11 * y + a21 * z + a[13];\n    out[14] = a02 * x + a12 * y + a22 * z + a[14];\n    out[15] = a03 * x + a13 * y + a23 * z + a[15];\n  }\n\n  return out;\n}\n/**\n * Scales the mat4 by the dimensions in the given vec3 not using vectorization\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the matrix to scale\n * @param {ReadonlyVec3} v the vec3 to scale the matrix by\n * @returns {mat4} out\n **/\n\nexport function scale(out, a, v) {\n  var x = v[0],\n      y = v[1],\n      z = v[2];\n  out[0] = a[0] * x;\n  out[1] = a[1] * x;\n  out[2] = a[2] * x;\n  out[3] = a[3] * x;\n  out[4] = a[4] * y;\n  out[5] = a[5] * y;\n  out[6] = a[6] * y;\n  out[7] = a[7] * y;\n  out[8] = a[8] * z;\n  out[9] = a[9] * z;\n  out[10] = a[10] * z;\n  out[11] = a[11] * z;\n  out[12] = a[12];\n  out[13] = a[13];\n  out[14] = a[14];\n  out[15] = a[15];\n  return out;\n}\n/**\n * Rotates a mat4 by the given angle around the given axis\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the matrix to rotate\n * @param {Number} rad the angle to rotate the matrix by\n * @param {ReadonlyVec3} axis the axis to rotate around\n * @returns {mat4} out\n */\n\nexport function rotate(out, a, rad, axis) {\n  var x = axis[0],\n      y = axis[1],\n      z = axis[2];\n  var len = Math.hypot(x, y, z);\n  var s, c, t;\n  var a00, a01, a02, a03;\n  var a10, a11, a12, a13;\n  var a20, a21, a22, a23;\n  var b00, b01, b02;\n  var b10, b11, b12;\n  var b20, b21, b22;\n\n  if (len < glMatrix.EPSILON) {\n    return null;\n  }\n\n  len = 1 / len;\n  x *= len;\n  y *= len;\n  z *= len;\n  s = Math.sin(rad);\n  c = Math.cos(rad);\n  t = 1 - c;\n  a00 = a[0];\n  a01 = a[1];\n  a02 = a[2];\n  a03 = a[3];\n  a10 = a[4];\n  a11 = a[5];\n  a12 = a[6];\n  a13 = a[7];\n  a20 = a[8];\n  a21 = a[9];\n  a22 = a[10];\n  a23 = a[11]; // Construct the elements of the rotation matrix\n\n  b00 = x * x * t + c;\n  b01 = y * x * t + z * s;\n  b02 = z * x * t - y * s;\n  b10 = x * y * t - z * s;\n  b11 = y * y * t + c;\n  b12 = z * y * t + x * s;\n  b20 = x * z * t + y * s;\n  b21 = y * z * t - x * s;\n  b22 = z * z * t + c; // Perform rotation-specific matrix multiplication\n\n  out[0] = a00 * b00 + a10 * b01 + a20 * b02;\n  out[1] = a01 * b00 + a11 * b01 + a21 * b02;\n  out[2] = a02 * b00 + a12 * b01 + a22 * b02;\n  out[3] = a03 * b00 + a13 * b01 + a23 * b02;\n  out[4] = a00 * b10 + a10 * b11 + a20 * b12;\n  out[5] = a01 * b10 + a11 * b11 + a21 * b12;\n  out[6] = a02 * b10 + a12 * b11 + a22 * b12;\n  out[7] = a03 * b10 + a13 * b11 + a23 * b12;\n  out[8] = a00 * b20 + a10 * b21 + a20 * b22;\n  out[9] = a01 * b20 + a11 * b21 + a21 * b22;\n  out[10] = a02 * b20 + a12 * b21 + a22 * b22;\n  out[11] = a03 * b20 + a13 * b21 + a23 * b22;\n\n  if (a !== out) {\n    // If the source and destination differ, copy the unchanged last row\n    out[12] = a[12];\n    out[13] = a[13];\n    out[14] = a[14];\n    out[15] = a[15];\n  }\n\n  return out;\n}\n/**\n * Rotates a matrix by the given angle around the X axis\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the matrix to rotate\n * @param {Number} rad the angle to rotate the matrix by\n * @returns {mat4} out\n */\n\nexport function rotateX(out, a, rad) {\n  var s = Math.sin(rad);\n  var c = Math.cos(rad);\n  var a10 = a[4];\n  var a11 = a[5];\n  var a12 = a[6];\n  var a13 = a[7];\n  var a20 = a[8];\n  var a21 = a[9];\n  var a22 = a[10];\n  var a23 = a[11];\n\n  if (a !== out) {\n    // If the source and destination differ, copy the unchanged rows\n    out[0] = a[0];\n    out[1] = a[1];\n    out[2] = a[2];\n    out[3] = a[3];\n    out[12] = a[12];\n    out[13] = a[13];\n    out[14] = a[14];\n    out[15] = a[15];\n  } // Perform axis-specific matrix multiplication\n\n\n  out[4] = a10 * c + a20 * s;\n  out[5] = a11 * c + a21 * s;\n  out[6] = a12 * c + a22 * s;\n  out[7] = a13 * c + a23 * s;\n  out[8] = a20 * c - a10 * s;\n  out[9] = a21 * c - a11 * s;\n  out[10] = a22 * c - a12 * s;\n  out[11] = a23 * c - a13 * s;\n  return out;\n}\n/**\n * Rotates a matrix by the given angle around the Y axis\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the matrix to rotate\n * @param {Number} rad the angle to rotate the matrix by\n * @returns {mat4} out\n */\n\nexport function rotateY(out, a, rad) {\n  var s = Math.sin(rad);\n  var c = Math.cos(rad);\n  var a00 = a[0];\n  var a01 = a[1];\n  var a02 = a[2];\n  var a03 = a[3];\n  var a20 = a[8];\n  var a21 = a[9];\n  var a22 = a[10];\n  var a23 = a[11];\n\n  if (a !== out) {\n    // If the source and destination differ, copy the unchanged rows\n    out[4] = a[4];\n    out[5] = a[5];\n    out[6] = a[6];\n    out[7] = a[7];\n    out[12] = a[12];\n    out[13] = a[13];\n    out[14] = a[14];\n    out[15] = a[15];\n  } // Perform axis-specific matrix multiplication\n\n\n  out[0] = a00 * c - a20 * s;\n  out[1] = a01 * c - a21 * s;\n  out[2] = a02 * c - a22 * s;\n  out[3] = a03 * c - a23 * s;\n  out[8] = a00 * s + a20 * c;\n  out[9] = a01 * s + a21 * c;\n  out[10] = a02 * s + a22 * c;\n  out[11] = a03 * s + a23 * c;\n  return out;\n}\n/**\n * Rotates a matrix by the given angle around the Z axis\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the matrix to rotate\n * @param {Number} rad the angle to rotate the matrix by\n * @returns {mat4} out\n */\n\nexport function rotateZ(out, a, rad) {\n  var s = Math.sin(rad);\n  var c = Math.cos(rad);\n  var a00 = a[0];\n  var a01 = a[1];\n  var a02 = a[2];\n  var a03 = a[3];\n  var a10 = a[4];\n  var a11 = a[5];\n  var a12 = a[6];\n  var a13 = a[7];\n\n  if (a !== out) {\n    // If the source and destination differ, copy the unchanged last row\n    out[8] = a[8];\n    out[9] = a[9];\n    out[10] = a[10];\n    out[11] = a[11];\n    out[12] = a[12];\n    out[13] = a[13];\n    out[14] = a[14];\n    out[15] = a[15];\n  } // Perform axis-specific matrix multiplication\n\n\n  out[0] = a00 * c + a10 * s;\n  out[1] = a01 * c + a11 * s;\n  out[2] = a02 * c + a12 * s;\n  out[3] = a03 * c + a13 * s;\n  out[4] = a10 * c - a00 * s;\n  out[5] = a11 * c - a01 * s;\n  out[6] = a12 * c - a02 * s;\n  out[7] = a13 * c - a03 * s;\n  return out;\n}\n/**\n * Creates a matrix from a vector translation\n * This is equivalent to (but much faster than):\n *\n *     mat4.identity(dest);\n *     mat4.translate(dest, dest, vec);\n *\n * @param {mat4} out mat4 receiving operation result\n * @param {ReadonlyVec3} v Translation vector\n * @returns {mat4} out\n */\n\nexport function fromTranslation(out, v) {\n  out[0] = 1;\n  out[1] = 0;\n  out[2] = 0;\n  out[3] = 0;\n  out[4] = 0;\n  out[5] = 1;\n  out[6] = 0;\n  out[7] = 0;\n  out[8] = 0;\n  out[9] = 0;\n  out[10] = 1;\n  out[11] = 0;\n  out[12] = v[0];\n  out[13] = v[1];\n  out[14] = v[2];\n  out[15] = 1;\n  return out;\n}\n/**\n * Creates a matrix from a vector scaling\n * This is equivalent to (but much faster than):\n *\n *     mat4.identity(dest);\n *     mat4.scale(dest, dest, vec);\n *\n * @param {mat4} out mat4 receiving operation result\n * @param {ReadonlyVec3} v Scaling vector\n * @returns {mat4} out\n */\n\nexport function fromScaling(out, v) {\n  out[0] = v[0];\n  out[1] = 0;\n  out[2] = 0;\n  out[3] = 0;\n  out[4] = 0;\n  out[5] = v[1];\n  out[6] = 0;\n  out[7] = 0;\n  out[8] = 0;\n  out[9] = 0;\n  out[10] = v[2];\n  out[11] = 0;\n  out[12] = 0;\n  out[13] = 0;\n  out[14] = 0;\n  out[15] = 1;\n  return out;\n}\n/**\n * Creates a matrix from a given angle around a given axis\n * This is equivalent to (but much faster than):\n *\n *     mat4.identity(dest);\n *     mat4.rotate(dest, dest, rad, axis);\n *\n * @param {mat4} out mat4 receiving operation result\n * @param {Number} rad the angle to rotate the matrix by\n * @param {ReadonlyVec3} axis the axis to rotate around\n * @returns {mat4} out\n */\n\nexport function fromRotation(out, rad, axis) {\n  var x = axis[0],\n      y = axis[1],\n      z = axis[2];\n  var len = Math.hypot(x, y, z);\n  var s, c, t;\n\n  if (len < glMatrix.EPSILON) {\n    return null;\n  }\n\n  len = 1 / len;\n  x *= len;\n  y *= len;\n  z *= len;\n  s = Math.sin(rad);\n  c = Math.cos(rad);\n  t = 1 - c; // Perform rotation-specific matrix multiplication\n\n  out[0] = x * x * t + c;\n  out[1] = y * x * t + z * s;\n  out[2] = z * x * t - y * s;\n  out[3] = 0;\n  out[4] = x * y * t - z * s;\n  out[5] = y * y * t + c;\n  out[6] = z * y * t + x * s;\n  out[7] = 0;\n  out[8] = x * z * t + y * s;\n  out[9] = y * z * t - x * s;\n  out[10] = z * z * t + c;\n  out[11] = 0;\n  out[12] = 0;\n  out[13] = 0;\n  out[14] = 0;\n  out[15] = 1;\n  return out;\n}\n/**\n * Creates a matrix from the given angle around the X axis\n * This is equivalent to (but much faster than):\n *\n *     mat4.identity(dest);\n *     mat4.rotateX(dest, dest, rad);\n *\n * @param {mat4} out mat4 receiving operation result\n * @param {Number} rad the angle to rotate the matrix by\n * @returns {mat4} out\n */\n\nexport function fromXRotation(out, rad) {\n  var s = Math.sin(rad);\n  var c = Math.cos(rad); // Perform axis-specific matrix multiplication\n\n  out[0] = 1;\n  out[1] = 0;\n  out[2] = 0;\n  out[3] = 0;\n  out[4] = 0;\n  out[5] = c;\n  out[6] = s;\n  out[7] = 0;\n  out[8] = 0;\n  out[9] = -s;\n  out[10] = c;\n  out[11] = 0;\n  out[12] = 0;\n  out[13] = 0;\n  out[14] = 0;\n  out[15] = 1;\n  return out;\n}\n/**\n * Creates a matrix from the given angle around the Y axis\n * This is equivalent to (but much faster than):\n *\n *     mat4.identity(dest);\n *     mat4.rotateY(dest, dest, rad);\n *\n * @param {mat4} out mat4 receiving operation result\n * @param {Number} rad the angle to rotate the matrix by\n * @returns {mat4} out\n */\n\nexport function fromYRotation(out, rad) {\n  var s = Math.sin(rad);\n  var c = Math.cos(rad); // Perform axis-specific matrix multiplication\n\n  out[0] = c;\n  out[1] = 0;\n  out[2] = -s;\n  out[3] = 0;\n  out[4] = 0;\n  out[5] = 1;\n  out[6] = 0;\n  out[7] = 0;\n  out[8] = s;\n  out[9] = 0;\n  out[10] = c;\n  out[11] = 0;\n  out[12] = 0;\n  out[13] = 0;\n  out[14] = 0;\n  out[15] = 1;\n  return out;\n}\n/**\n * Creates a matrix from the given angle around the Z axis\n * This is equivalent to (but much faster than):\n *\n *     mat4.identity(dest);\n *     mat4.rotateZ(dest, dest, rad);\n *\n * @param {mat4} out mat4 receiving operation result\n * @param {Number} rad the angle to rotate the matrix by\n * @returns {mat4} out\n */\n\nexport function fromZRotation(out, rad) {\n  var s = Math.sin(rad);\n  var c = Math.cos(rad); // Perform axis-specific matrix multiplication\n\n  out[0] = c;\n  out[1] = s;\n  out[2] = 0;\n  out[3] = 0;\n  out[4] = -s;\n  out[5] = c;\n  out[6] = 0;\n  out[7] = 0;\n  out[8] = 0;\n  out[9] = 0;\n  out[10] = 1;\n  out[11] = 0;\n  out[12] = 0;\n  out[13] = 0;\n  out[14] = 0;\n  out[15] = 1;\n  return out;\n}\n/**\n * Creates a matrix from a quaternion rotation and vector translation\n * This is equivalent to (but much faster than):\n *\n *     mat4.identity(dest);\n *     mat4.translate(dest, vec);\n *     let quatMat = mat4.create();\n *     quat4.toMat4(quat, quatMat);\n *     mat4.multiply(dest, quatMat);\n *\n * @param {mat4} out mat4 receiving operation result\n * @param {quat4} q Rotation quaternion\n * @param {ReadonlyVec3} v Translation vector\n * @returns {mat4} out\n */\n\nexport function fromRotationTranslation(out, q, v) {\n  // Quaternion math\n  var x = q[0],\n      y = q[1],\n      z = q[2],\n      w = q[3];\n  var x2 = x + x;\n  var y2 = y + y;\n  var z2 = z + z;\n  var xx = x * x2;\n  var xy = x * y2;\n  var xz = x * z2;\n  var yy = y * y2;\n  var yz = y * z2;\n  var zz = z * z2;\n  var wx = w * x2;\n  var wy = w * y2;\n  var wz = w * z2;\n  out[0] = 1 - (yy + zz);\n  out[1] = xy + wz;\n  out[2] = xz - wy;\n  out[3] = 0;\n  out[4] = xy - wz;\n  out[5] = 1 - (xx + zz);\n  out[6] = yz + wx;\n  out[7] = 0;\n  out[8] = xz + wy;\n  out[9] = yz - wx;\n  out[10] = 1 - (xx + yy);\n  out[11] = 0;\n  out[12] = v[0];\n  out[13] = v[1];\n  out[14] = v[2];\n  out[15] = 1;\n  return out;\n}\n/**\n * Creates a new mat4 from a dual quat.\n *\n * @param {mat4} out Matrix\n * @param {ReadonlyQuat2} a Dual Quaternion\n * @returns {mat4} mat4 receiving operation result\n */\n\nexport function fromQuat2(out, a) {\n  var translation = new glMatrix.ARRAY_TYPE(3);\n  var bx = -a[0],\n      by = -a[1],\n      bz = -a[2],\n      bw = a[3],\n      ax = a[4],\n      ay = a[5],\n      az = a[6],\n      aw = a[7];\n  var magnitude = bx * bx + by * by + bz * bz + bw * bw; //Only scale if it makes sense\n\n  if (magnitude > 0) {\n    translation[0] = (ax * bw + aw * bx + ay * bz - az * by) * 2 / magnitude;\n    translation[1] = (ay * bw + aw * by + az * bx - ax * bz) * 2 / magnitude;\n    translation[2] = (az * bw + aw * bz + ax * by - ay * bx) * 2 / magnitude;\n  } else {\n    translation[0] = (ax * bw + aw * bx + ay * bz - az * by) * 2;\n    translation[1] = (ay * bw + aw * by + az * bx - ax * bz) * 2;\n    translation[2] = (az * bw + aw * bz + ax * by - ay * bx) * 2;\n  }\n\n  fromRotationTranslation(out, a, translation);\n  return out;\n}\n/**\n * Returns the translation vector component of a transformation\n *  matrix. If a matrix is built with fromRotationTranslation,\n *  the returned vector will be the same as the translation vector\n *  originally supplied.\n * @param  {vec3} out Vector to receive translation component\n * @param  {ReadonlyMat4} mat Matrix to be decomposed (input)\n * @return {vec3} out\n */\n\nexport function getTranslation(out, mat) {\n  out[0] = mat[12];\n  out[1] = mat[13];\n  out[2] = mat[14];\n  return out;\n}\n/**\n * Returns the scaling factor component of a transformation\n *  matrix. If a matrix is built with fromRotationTranslationScale\n *  with a normalized Quaternion paramter, the returned vector will be\n *  the same as the scaling vector\n *  originally supplied.\n * @param  {vec3} out Vector to receive scaling factor component\n * @param  {ReadonlyMat4} mat Matrix to be decomposed (input)\n * @return {vec3} out\n */\n\nexport function getScaling(out, mat) {\n  var m11 = mat[0];\n  var m12 = mat[1];\n  var m13 = mat[2];\n  var m21 = mat[4];\n  var m22 = mat[5];\n  var m23 = mat[6];\n  var m31 = mat[8];\n  var m32 = mat[9];\n  var m33 = mat[10];\n  out[0] = Math.hypot(m11, m12, m13);\n  out[1] = Math.hypot(m21, m22, m23);\n  out[2] = Math.hypot(m31, m32, m33);\n  return out;\n}\n/**\n * Returns a quaternion representing the rotational component\n *  of a transformation matrix. If a matrix is built with\n *  fromRotationTranslation, the returned quaternion will be the\n *  same as the quaternion originally supplied.\n * @param {quat} out Quaternion to receive the rotation component\n * @param {ReadonlyMat4} mat Matrix to be decomposed (input)\n * @return {quat} out\n */\n\nexport function getRotation(out, mat) {\n  var scaling = new glMatrix.ARRAY_TYPE(3);\n  getScaling(scaling, mat);\n  var is1 = 1 / scaling[0];\n  var is2 = 1 / scaling[1];\n  var is3 = 1 / scaling[2];\n  var sm11 = mat[0] * is1;\n  var sm12 = mat[1] * is2;\n  var sm13 = mat[2] * is3;\n  var sm21 = mat[4] * is1;\n  var sm22 = mat[5] * is2;\n  var sm23 = mat[6] * is3;\n  var sm31 = mat[8] * is1;\n  var sm32 = mat[9] * is2;\n  var sm33 = mat[10] * is3;\n  var trace = sm11 + sm22 + sm33;\n  var S = 0;\n\n  if (trace > 0) {\n    S = Math.sqrt(trace + 1.0) * 2;\n    out[3] = 0.25 * S;\n    out[0] = (sm23 - sm32) / S;\n    out[1] = (sm31 - sm13) / S;\n    out[2] = (sm12 - sm21) / S;\n  } else if (sm11 > sm22 && sm11 > sm33) {\n    S = Math.sqrt(1.0 + sm11 - sm22 - sm33) * 2;\n    out[3] = (sm23 - sm32) / S;\n    out[0] = 0.25 * S;\n    out[1] = (sm12 + sm21) / S;\n    out[2] = (sm31 + sm13) / S;\n  } else if (sm22 > sm33) {\n    S = Math.sqrt(1.0 + sm22 - sm11 - sm33) * 2;\n    out[3] = (sm31 - sm13) / S;\n    out[0] = (sm12 + sm21) / S;\n    out[1] = 0.25 * S;\n    out[2] = (sm23 + sm32) / S;\n  } else {\n    S = Math.sqrt(1.0 + sm33 - sm11 - sm22) * 2;\n    out[3] = (sm12 - sm21) / S;\n    out[0] = (sm31 + sm13) / S;\n    out[1] = (sm23 + sm32) / S;\n    out[2] = 0.25 * S;\n  }\n\n  return out;\n}\n/**\n * Creates a matrix from a quaternion rotation, vector translation and vector scale\n * This is equivalent to (but much faster than):\n *\n *     mat4.identity(dest);\n *     mat4.translate(dest, vec);\n *     let quatMat = mat4.create();\n *     quat4.toMat4(quat, quatMat);\n *     mat4.multiply(dest, quatMat);\n *     mat4.scale(dest, scale)\n *\n * @param {mat4} out mat4 receiving operation result\n * @param {quat4} q Rotation quaternion\n * @param {ReadonlyVec3} v Translation vector\n * @param {ReadonlyVec3} s Scaling vector\n * @returns {mat4} out\n */\n\nexport function fromRotationTranslationScale(out, q, v, s) {\n  // Quaternion math\n  var x = q[0],\n      y = q[1],\n      z = q[2],\n      w = q[3];\n  var x2 = x + x;\n  var y2 = y + y;\n  var z2 = z + z;\n  var xx = x * x2;\n  var xy = x * y2;\n  var xz = x * z2;\n  var yy = y * y2;\n  var yz = y * z2;\n  var zz = z * z2;\n  var wx = w * x2;\n  var wy = w * y2;\n  var wz = w * z2;\n  var sx = s[0];\n  var sy = s[1];\n  var sz = s[2];\n  out[0] = (1 - (yy + zz)) * sx;\n  out[1] = (xy + wz) * sx;\n  out[2] = (xz - wy) * sx;\n  out[3] = 0;\n  out[4] = (xy - wz) * sy;\n  out[5] = (1 - (xx + zz)) * sy;\n  out[6] = (yz + wx) * sy;\n  out[7] = 0;\n  out[8] = (xz + wy) * sz;\n  out[9] = (yz - wx) * sz;\n  out[10] = (1 - (xx + yy)) * sz;\n  out[11] = 0;\n  out[12] = v[0];\n  out[13] = v[1];\n  out[14] = v[2];\n  out[15] = 1;\n  return out;\n}\n/**\n * Creates a matrix from a quaternion rotation, vector translation and vector scale, rotating and scaling around the given origin\n * This is equivalent to (but much faster than):\n *\n *     mat4.identity(dest);\n *     mat4.translate(dest, vec);\n *     mat4.translate(dest, origin);\n *     let quatMat = mat4.create();\n *     quat4.toMat4(quat, quatMat);\n *     mat4.multiply(dest, quatMat);\n *     mat4.scale(dest, scale)\n *     mat4.translate(dest, negativeOrigin);\n *\n * @param {mat4} out mat4 receiving operation result\n * @param {quat4} q Rotation quaternion\n * @param {ReadonlyVec3} v Translation vector\n * @param {ReadonlyVec3} s Scaling vector\n * @param {ReadonlyVec3} o The origin vector around which to scale and rotate\n * @returns {mat4} out\n */\n\nexport function fromRotationTranslationScaleOrigin(out, q, v, s, o) {\n  // Quaternion math\n  var x = q[0],\n      y = q[1],\n      z = q[2],\n      w = q[3];\n  var x2 = x + x;\n  var y2 = y + y;\n  var z2 = z + z;\n  var xx = x * x2;\n  var xy = x * y2;\n  var xz = x * z2;\n  var yy = y * y2;\n  var yz = y * z2;\n  var zz = z * z2;\n  var wx = w * x2;\n  var wy = w * y2;\n  var wz = w * z2;\n  var sx = s[0];\n  var sy = s[1];\n  var sz = s[2];\n  var ox = o[0];\n  var oy = o[1];\n  var oz = o[2];\n  var out0 = (1 - (yy + zz)) * sx;\n  var out1 = (xy + wz) * sx;\n  var out2 = (xz - wy) * sx;\n  var out4 = (xy - wz) * sy;\n  var out5 = (1 - (xx + zz)) * sy;\n  var out6 = (yz + wx) * sy;\n  var out8 = (xz + wy) * sz;\n  var out9 = (yz - wx) * sz;\n  var out10 = (1 - (xx + yy)) * sz;\n  out[0] = out0;\n  out[1] = out1;\n  out[2] = out2;\n  out[3] = 0;\n  out[4] = out4;\n  out[5] = out5;\n  out[6] = out6;\n  out[7] = 0;\n  out[8] = out8;\n  out[9] = out9;\n  out[10] = out10;\n  out[11] = 0;\n  out[12] = v[0] + ox - (out0 * ox + out4 * oy + out8 * oz);\n  out[13] = v[1] + oy - (out1 * ox + out5 * oy + out9 * oz);\n  out[14] = v[2] + oz - (out2 * ox + out6 * oy + out10 * oz);\n  out[15] = 1;\n  return out;\n}\n/**\n * Calculates a 4x4 matrix from the given quaternion\n *\n * @param {mat4} out mat4 receiving operation result\n * @param {ReadonlyQuat} q Quaternion to create matrix from\n *\n * @returns {mat4} out\n */\n\nexport function fromQuat(out, q) {\n  var x = q[0],\n      y = q[1],\n      z = q[2],\n      w = q[3];\n  var x2 = x + x;\n  var y2 = y + y;\n  var z2 = z + z;\n  var xx = x * x2;\n  var yx = y * x2;\n  var yy = y * y2;\n  var zx = z * x2;\n  var zy = z * y2;\n  var zz = z * z2;\n  var wx = w * x2;\n  var wy = w * y2;\n  var wz = w * z2;\n  out[0] = 1 - yy - zz;\n  out[1] = yx + wz;\n  out[2] = zx - wy;\n  out[3] = 0;\n  out[4] = yx - wz;\n  out[5] = 1 - xx - zz;\n  out[6] = zy + wx;\n  out[7] = 0;\n  out[8] = zx + wy;\n  out[9] = zy - wx;\n  out[10] = 1 - xx - yy;\n  out[11] = 0;\n  out[12] = 0;\n  out[13] = 0;\n  out[14] = 0;\n  out[15] = 1;\n  return out;\n}\n/**\n * Generates a frustum matrix with the given bounds\n *\n * @param {mat4} out mat4 frustum matrix will be written into\n * @param {Number} left Left bound of the frustum\n * @param {Number} right Right bound of the frustum\n * @param {Number} bottom Bottom bound of the frustum\n * @param {Number} top Top bound of the frustum\n * @param {Number} near Near bound of the frustum\n * @param {Number} far Far bound of the frustum\n * @returns {mat4} out\n */\n\nexport function frustum(out, left, right, bottom, top, near, far) {\n  var rl = 1 / (right - left);\n  var tb = 1 / (top - bottom);\n  var nf = 1 / (near - far);\n  out[0] = near * 2 * rl;\n  out[1] = 0;\n  out[2] = 0;\n  out[3] = 0;\n  out[4] = 0;\n  out[5] = near * 2 * tb;\n  out[6] = 0;\n  out[7] = 0;\n  out[8] = (right + left) * rl;\n  out[9] = (top + bottom) * tb;\n  out[10] = (far + near) * nf;\n  out[11] = -1;\n  out[12] = 0;\n  out[13] = 0;\n  out[14] = far * near * 2 * nf;\n  out[15] = 0;\n  return out;\n}\n/**\n * Generates a perspective projection matrix with the given bounds.\n * The near/far clip planes correspond to a normalized device coordinate Z range of [-1, 1],\n * which matches WebGL/OpenGL's clip volume.\n * Passing null/undefined/no value for far will generate infinite projection matrix.\n *\n * @param {mat4} out mat4 frustum matrix will be written into\n * @param {number} fovy Vertical field of view in radians\n * @param {number} aspect Aspect ratio. typically viewport width/height\n * @param {number} near Near bound of the frustum\n * @param {number} far Far bound of the frustum, can be null or Infinity\n * @returns {mat4} out\n */\n\nexport function perspectiveNO(out, fovy, aspect, near, far) {\n  var f = 1.0 / Math.tan(fovy / 2),\n      nf;\n  out[0] = f / aspect;\n  out[1] = 0;\n  out[2] = 0;\n  out[3] = 0;\n  out[4] = 0;\n  out[5] = f;\n  out[6] = 0;\n  out[7] = 0;\n  out[8] = 0;\n  out[9] = 0;\n  out[11] = -1;\n  out[12] = 0;\n  out[13] = 0;\n  out[15] = 0;\n\n  if (far != null && far !== Infinity) {\n    nf = 1 / (near - far);\n    out[10] = (far + near) * nf;\n    out[14] = 2 * far * near * nf;\n  } else {\n    out[10] = -1;\n    out[14] = -2 * near;\n  }\n\n  return out;\n}\n/**\n * Alias for {@link mat4.perspectiveNO}\n * @function\n */\n\nexport var perspective = perspectiveNO;\n/**\n * Generates a perspective projection matrix suitable for WebGPU with the given bounds.\n * The near/far clip planes correspond to a normalized device coordinate Z range of [0, 1],\n * which matches WebGPU/Vulkan/DirectX/Metal's clip volume.\n * Passing null/undefined/no value for far will generate infinite projection matrix.\n *\n * @param {mat4} out mat4 frustum matrix will be written into\n * @param {number} fovy Vertical field of view in radians\n * @param {number} aspect Aspect ratio. typically viewport width/height\n * @param {number} near Near bound of the frustum\n * @param {number} far Far bound of the frustum, can be null or Infinity\n * @returns {mat4} out\n */\n\nexport function perspectiveZO(out, fovy, aspect, near, far) {\n  var f = 1.0 / Math.tan(fovy / 2),\n      nf;\n  out[0] = f / aspect;\n  out[1] = 0;\n  out[2] = 0;\n  out[3] = 0;\n  out[4] = 0;\n  out[5] = f;\n  out[6] = 0;\n  out[7] = 0;\n  out[8] = 0;\n  out[9] = 0;\n  out[11] = -1;\n  out[12] = 0;\n  out[13] = 0;\n  out[15] = 0;\n\n  if (far != null && far !== Infinity) {\n    nf = 1 / (near - far);\n    out[10] = far * nf;\n    out[14] = far * near * nf;\n  } else {\n    out[10] = -1;\n    out[14] = -near;\n  }\n\n  return out;\n}\n/**\n * Generates a perspective projection matrix with the given field of view.\n * This is primarily useful for generating projection matrices to be used\n * with the still experiemental WebVR API.\n *\n * @param {mat4} out mat4 frustum matrix will be written into\n * @param {Object} fov Object containing the following values: upDegrees, downDegrees, leftDegrees, rightDegrees\n * @param {number} near Near bound of the frustum\n * @param {number} far Far bound of the frustum\n * @returns {mat4} out\n */\n\nexport function perspectiveFromFieldOfView(out, fov, near, far) {\n  var upTan = Math.tan(fov.upDegrees * Math.PI / 180.0);\n  var downTan = Math.tan(fov.downDegrees * Math.PI / 180.0);\n  var leftTan = Math.tan(fov.leftDegrees * Math.PI / 180.0);\n  var rightTan = Math.tan(fov.rightDegrees * Math.PI / 180.0);\n  var xScale = 2.0 / (leftTan + rightTan);\n  var yScale = 2.0 / (upTan + downTan);\n  out[0] = xScale;\n  out[1] = 0.0;\n  out[2] = 0.0;\n  out[3] = 0.0;\n  out[4] = 0.0;\n  out[5] = yScale;\n  out[6] = 0.0;\n  out[7] = 0.0;\n  out[8] = -((leftTan - rightTan) * xScale * 0.5);\n  out[9] = (upTan - downTan) * yScale * 0.5;\n  out[10] = far / (near - far);\n  out[11] = -1.0;\n  out[12] = 0.0;\n  out[13] = 0.0;\n  out[14] = far * near / (near - far);\n  out[15] = 0.0;\n  return out;\n}\n/**\n * Generates a orthogonal projection matrix with the given bounds.\n * The near/far clip planes correspond to a normalized device coordinate Z range of [-1, 1],\n * which matches WebGL/OpenGL's clip volume.\n *\n * @param {mat4} out mat4 frustum matrix will be written into\n * @param {number} left Left bound of the frustum\n * @param {number} right Right bound of the frustum\n * @param {number} bottom Bottom bound of the frustum\n * @param {number} top Top bound of the frustum\n * @param {number} near Near bound of the frustum\n * @param {number} far Far bound of the frustum\n * @returns {mat4} out\n */\n\nexport function orthoNO(out, left, right, bottom, top, near, far) {\n  var lr = 1 / (left - right);\n  var bt = 1 / (bottom - top);\n  var nf = 1 / (near - far);\n  out[0] = -2 * lr;\n  out[1] = 0;\n  out[2] = 0;\n  out[3] = 0;\n  out[4] = 0;\n  out[5] = -2 * bt;\n  out[6] = 0;\n  out[7] = 0;\n  out[8] = 0;\n  out[9] = 0;\n  out[10] = 2 * nf;\n  out[11] = 0;\n  out[12] = (left + right) * lr;\n  out[13] = (top + bottom) * bt;\n  out[14] = (far + near) * nf;\n  out[15] = 1;\n  return out;\n}\n/**\n * Alias for {@link mat4.orthoNO}\n * @function\n */\n\nexport var ortho = orthoNO;\n/**\n * Generates a orthogonal projection matrix with the given bounds.\n * The near/far clip planes correspond to a normalized device coordinate Z range of [0, 1],\n * which matches WebGPU/Vulkan/DirectX/Metal's clip volume.\n *\n * @param {mat4} out mat4 frustum matrix will be written into\n * @param {number} left Left bound of the frustum\n * @param {number} right Right bound of the frustum\n * @param {number} bottom Bottom bound of the frustum\n * @param {number} top Top bound of the frustum\n * @param {number} near Near bound of the frustum\n * @param {number} far Far bound of the frustum\n * @returns {mat4} out\n */\n\nexport function orthoZO(out, left, right, bottom, top, near, far) {\n  var lr = 1 / (left - right);\n  var bt = 1 / (bottom - top);\n  var nf = 1 / (near - far);\n  out[0] = -2 * lr;\n  out[1] = 0;\n  out[2] = 0;\n  out[3] = 0;\n  out[4] = 0;\n  out[5] = -2 * bt;\n  out[6] = 0;\n  out[7] = 0;\n  out[8] = 0;\n  out[9] = 0;\n  out[10] = nf;\n  out[11] = 0;\n  out[12] = (left + right) * lr;\n  out[13] = (top + bottom) * bt;\n  out[14] = near * nf;\n  out[15] = 1;\n  return out;\n}\n/**\n * Generates a look-at matrix with the given eye position, focal point, and up axis.\n * If you want a matrix that actually makes an object look at another object, you should use targetTo instead.\n *\n * @param {mat4} out mat4 frustum matrix will be written into\n * @param {ReadonlyVec3} eye Position of the viewer\n * @param {ReadonlyVec3} center Point the viewer is looking at\n * @param {ReadonlyVec3} up vec3 pointing up\n * @returns {mat4} out\n */\n\nexport function lookAt(out, eye, center, up) {\n  var x0, x1, x2, y0, y1, y2, z0, z1, z2, len;\n  var eyex = eye[0];\n  var eyey = eye[1];\n  var eyez = eye[2];\n  var upx = up[0];\n  var upy = up[1];\n  var upz = up[2];\n  var centerx = center[0];\n  var centery = center[1];\n  var centerz = center[2];\n\n  if (Math.abs(eyex - centerx) < glMatrix.EPSILON && Math.abs(eyey - centery) < glMatrix.EPSILON && Math.abs(eyez - centerz) < glMatrix.EPSILON) {\n    return identity(out);\n  }\n\n  z0 = eyex - centerx;\n  z1 = eyey - centery;\n  z2 = eyez - centerz;\n  len = 1 / Math.hypot(z0, z1, z2);\n  z0 *= len;\n  z1 *= len;\n  z2 *= len;\n  x0 = upy * z2 - upz * z1;\n  x1 = upz * z0 - upx * z2;\n  x2 = upx * z1 - upy * z0;\n  len = Math.hypot(x0, x1, x2);\n\n  if (!len) {\n    x0 = 0;\n    x1 = 0;\n    x2 = 0;\n  } else {\n    len = 1 / len;\n    x0 *= len;\n    x1 *= len;\n    x2 *= len;\n  }\n\n  y0 = z1 * x2 - z2 * x1;\n  y1 = z2 * x0 - z0 * x2;\n  y2 = z0 * x1 - z1 * x0;\n  len = Math.hypot(y0, y1, y2);\n\n  if (!len) {\n    y0 = 0;\n    y1 = 0;\n    y2 = 0;\n  } else {\n    len = 1 / len;\n    y0 *= len;\n    y1 *= len;\n    y2 *= len;\n  }\n\n  out[0] = x0;\n  out[1] = y0;\n  out[2] = z0;\n  out[3] = 0;\n  out[4] = x1;\n  out[5] = y1;\n  out[6] = z1;\n  out[7] = 0;\n  out[8] = x2;\n  out[9] = y2;\n  out[10] = z2;\n  out[11] = 0;\n  out[12] = -(x0 * eyex + x1 * eyey + x2 * eyez);\n  out[13] = -(y0 * eyex + y1 * eyey + y2 * eyez);\n  out[14] = -(z0 * eyex + z1 * eyey + z2 * eyez);\n  out[15] = 1;\n  return out;\n}\n/**\n * Generates a matrix that makes something look at something else.\n *\n * @param {mat4} out mat4 frustum matrix will be written into\n * @param {ReadonlyVec3} eye Position of the viewer\n * @param {ReadonlyVec3} center Point the viewer is looking at\n * @param {ReadonlyVec3} up vec3 pointing up\n * @returns {mat4} out\n */\n\nexport function targetTo(out, eye, target, up) {\n  var eyex = eye[0],\n      eyey = eye[1],\n      eyez = eye[2],\n      upx = up[0],\n      upy = up[1],\n      upz = up[2];\n  var z0 = eyex - target[0],\n      z1 = eyey - target[1],\n      z2 = eyez - target[2];\n  var len = z0 * z0 + z1 * z1 + z2 * z2;\n\n  if (len > 0) {\n    len = 1 / Math.sqrt(len);\n    z0 *= len;\n    z1 *= len;\n    z2 *= len;\n  }\n\n  var x0 = upy * z2 - upz * z1,\n      x1 = upz * z0 - upx * z2,\n      x2 = upx * z1 - upy * z0;\n  len = x0 * x0 + x1 * x1 + x2 * x2;\n\n  if (len > 0) {\n    len = 1 / Math.sqrt(len);\n    x0 *= len;\n    x1 *= len;\n    x2 *= len;\n  }\n\n  out[0] = x0;\n  out[1] = x1;\n  out[2] = x2;\n  out[3] = 0;\n  out[4] = z1 * x2 - z2 * x1;\n  out[5] = z2 * x0 - z0 * x2;\n  out[6] = z0 * x1 - z1 * x0;\n  out[7] = 0;\n  out[8] = z0;\n  out[9] = z1;\n  out[10] = z2;\n  out[11] = 0;\n  out[12] = eyex;\n  out[13] = eyey;\n  out[14] = eyez;\n  out[15] = 1;\n  return out;\n}\n/**\n * Returns a string representation of a mat4\n *\n * @param {ReadonlyMat4} a matrix to represent as a string\n * @returns {String} string representation of the matrix\n */\n\nexport function str(a) {\n  return \"mat4(\" + a[0] + \", \" + a[1] + \", \" + a[2] + \", \" + a[3] + \", \" + a[4] + \", \" + a[5] + \", \" + a[6] + \", \" + a[7] + \", \" + a[8] + \", \" + a[9] + \", \" + a[10] + \", \" + a[11] + \", \" + a[12] + \", \" + a[13] + \", \" + a[14] + \", \" + a[15] + \")\";\n}\n/**\n * Returns Frobenius norm of a mat4\n *\n * @param {ReadonlyMat4} a the matrix to calculate Frobenius norm of\n * @returns {Number} Frobenius norm\n */\n\nexport function frob(a) {\n  return Math.hypot(a[0], a[1], a[2], a[3], a[4], a[5], a[6], a[7], a[8], a[9], a[10], a[11], a[12], a[13], a[14], a[15]);\n}\n/**\n * Adds two mat4's\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the first operand\n * @param {ReadonlyMat4} b the second operand\n * @returns {mat4} out\n */\n\nexport function add(out, a, b) {\n  out[0] = a[0] + b[0];\n  out[1] = a[1] + b[1];\n  out[2] = a[2] + b[2];\n  out[3] = a[3] + b[3];\n  out[4] = a[4] + b[4];\n  out[5] = a[5] + b[5];\n  out[6] = a[6] + b[6];\n  out[7] = a[7] + b[7];\n  out[8] = a[8] + b[8];\n  out[9] = a[9] + b[9];\n  out[10] = a[10] + b[10];\n  out[11] = a[11] + b[11];\n  out[12] = a[12] + b[12];\n  out[13] = a[13] + b[13];\n  out[14] = a[14] + b[14];\n  out[15] = a[15] + b[15];\n  return out;\n}\n/**\n * Subtracts matrix b from matrix a\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the first operand\n * @param {ReadonlyMat4} b the second operand\n * @returns {mat4} out\n */\n\nexport function subtract(out, a, b) {\n  out[0] = a[0] - b[0];\n  out[1] = a[1] - b[1];\n  out[2] = a[2] - b[2];\n  out[3] = a[3] - b[3];\n  out[4] = a[4] - b[4];\n  out[5] = a[5] - b[5];\n  out[6] = a[6] - b[6];\n  out[7] = a[7] - b[7];\n  out[8] = a[8] - b[8];\n  out[9] = a[9] - b[9];\n  out[10] = a[10] - b[10];\n  out[11] = a[11] - b[11];\n  out[12] = a[12] - b[12];\n  out[13] = a[13] - b[13];\n  out[14] = a[14] - b[14];\n  out[15] = a[15] - b[15];\n  return out;\n}\n/**\n * Multiply each element of the matrix by a scalar.\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the matrix to scale\n * @param {Number} b amount to scale the matrix's elements by\n * @returns {mat4} out\n */\n\nexport function multiplyScalar(out, a, b) {\n  out[0] = a[0] * b;\n  out[1] = a[1] * b;\n  out[2] = a[2] * b;\n  out[3] = a[3] * b;\n  out[4] = a[4] * b;\n  out[5] = a[5] * b;\n  out[6] = a[6] * b;\n  out[7] = a[7] * b;\n  out[8] = a[8] * b;\n  out[9] = a[9] * b;\n  out[10] = a[10] * b;\n  out[11] = a[11] * b;\n  out[12] = a[12] * b;\n  out[13] = a[13] * b;\n  out[14] = a[14] * b;\n  out[15] = a[15] * b;\n  return out;\n}\n/**\n * Adds two mat4's after multiplying each element of the second operand by a scalar value.\n *\n * @param {mat4} out the receiving vector\n * @param {ReadonlyMat4} a the first operand\n * @param {ReadonlyMat4} b the second operand\n * @param {Number} scale the amount to scale b's elements by before adding\n * @returns {mat4} out\n */\n\nexport function multiplyScalarAndAdd(out, a, b, scale) {\n  out[0] = a[0] + b[0] * scale;\n  out[1] = a[1] + b[1] * scale;\n  out[2] = a[2] + b[2] * scale;\n  out[3] = a[3] + b[3] * scale;\n  out[4] = a[4] + b[4] * scale;\n  out[5] = a[5] + b[5] * scale;\n  out[6] = a[6] + b[6] * scale;\n  out[7] = a[7] + b[7] * scale;\n  out[8] = a[8] + b[8] * scale;\n  out[9] = a[9] + b[9] * scale;\n  out[10] = a[10] + b[10] * scale;\n  out[11] = a[11] + b[11] * scale;\n  out[12] = a[12] + b[12] * scale;\n  out[13] = a[13] + b[13] * scale;\n  out[14] = a[14] + b[14] * scale;\n  out[15] = a[15] + b[15] * scale;\n  return out;\n}\n/**\n * Returns whether or not the matrices have exactly the same elements in the same position (when compared with ===)\n *\n * @param {ReadonlyMat4} a The first matrix.\n * @param {ReadonlyMat4} b The second matrix.\n * @returns {Boolean} True if the matrices are equal, false otherwise.\n */\n\nexport function exactEquals(a, b) {\n  return a[0] === b[0] && a[1] === b[1] && a[2] === b[2] && a[3] === b[3] && a[4] === b[4] && a[5] === b[5] && a[6] === b[6] && a[7] === b[7] && a[8] === b[8] && a[9] === b[9] && a[10] === b[10] && a[11] === b[11] && a[12] === b[12] && a[13] === b[13] && a[14] === b[14] && a[15] === b[15];\n}\n/**\n * Returns whether or not the matrices have approximately the same elements in the same position.\n *\n * @param {ReadonlyMat4} a The first matrix.\n * @param {ReadonlyMat4} b The second matrix.\n * @returns {Boolean} True if the matrices are equal, false otherwise.\n */\n\nexport function equals(a, b) {\n  var a0 = a[0],\n      a1 = a[1],\n      a2 = a[2],\n      a3 = a[3];\n  var a4 = a[4],\n      a5 = a[5],\n      a6 = a[6],\n      a7 = a[7];\n  var a8 = a[8],\n      a9 = a[9],\n      a10 = a[10],\n      a11 = a[11];\n  var a12 = a[12],\n      a13 = a[13],\n      a14 = a[14],\n      a15 = a[15];\n  var b0 = b[0],\n      b1 = b[1],\n      b2 = b[2],\n      b3 = b[3];\n  var b4 = b[4],\n      b5 = b[5],\n      b6 = b[6],\n      b7 = b[7];\n  var b8 = b[8],\n      b9 = b[9],\n      b10 = b[10],\n      b11 = b[11];\n  var b12 = b[12],\n      b13 = b[13],\n      b14 = b[14],\n      b15 = b[15];\n  return Math.abs(a0 - b0) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a0), Math.abs(b0)) && Math.abs(a1 - b1) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a1), Math.abs(b1)) && Math.abs(a2 - b2) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a2), Math.abs(b2)) && Math.abs(a3 - b3) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a3), Math.abs(b3)) && Math.abs(a4 - b4) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a4), Math.abs(b4)) && Math.abs(a5 - b5) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a5), Math.abs(b5)) && Math.abs(a6 - b6) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a6), Math.abs(b6)) && Math.abs(a7 - b7) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a7), Math.abs(b7)) && Math.abs(a8 - b8) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a8), Math.abs(b8)) && Math.abs(a9 - b9) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a9), Math.abs(b9)) && Math.abs(a10 - b10) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a10), Math.abs(b10)) && Math.abs(a11 - b11) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a11), Math.abs(b11)) && Math.abs(a12 - b12) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a12), Math.abs(b12)) && Math.abs(a13 - b13) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a13), Math.abs(b13)) && Math.abs(a14 - b14) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a14), Math.abs(b14)) && Math.abs(a15 - b15) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a15), Math.abs(b15));\n}\n/**\n * Alias for {@link mat4.multiply}\n * @function\n */\n\nexport var mul = multiply;\n/**\n * Alias for {@link mat4.subtract}\n * @function\n */\n\nexport var sub = subtract;","import * as glMatrix from \"./common.js\";\n/**\n * 2 Dimensional Vector\n * @module vec2\n */\n\n/**\n * Creates a new, empty vec2\n *\n * @returns {vec2} a new 2D vector\n */\n\nexport function create() {\n  var out = new glMatrix.ARRAY_TYPE(2);\n\n  if (glMatrix.ARRAY_TYPE != Float32Array) {\n    out[0] = 0;\n    out[1] = 0;\n  }\n\n  return out;\n}\n/**\n * Creates a new vec2 initialized with values from an existing vector\n *\n * @param {ReadonlyVec2} a vector to clone\n * @returns {vec2} a new 2D vector\n */\n\nexport function clone(a) {\n  var out = new glMatrix.ARRAY_TYPE(2);\n  out[0] = a[0];\n  out[1] = a[1];\n  return out;\n}\n/**\n * Creates a new vec2 initialized with the given values\n *\n * @param {Number} x X component\n * @param {Number} y Y component\n * @returns {vec2} a new 2D vector\n */\n\nexport function fromValues(x, y) {\n  var out = new glMatrix.ARRAY_TYPE(2);\n  out[0] = x;\n  out[1] = y;\n  return out;\n}\n/**\n * Copy the values from one vec2 to another\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the source vector\n * @returns {vec2} out\n */\n\nexport function copy(out, a) {\n  out[0] = a[0];\n  out[1] = a[1];\n  return out;\n}\n/**\n * Set the components of a vec2 to the given values\n *\n * @param {vec2} out the receiving vector\n * @param {Number} x X component\n * @param {Number} y Y component\n * @returns {vec2} out\n */\n\nexport function set(out, x, y) {\n  out[0] = x;\n  out[1] = y;\n  return out;\n}\n/**\n * Adds two vec2's\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the first operand\n * @param {ReadonlyVec2} b the second operand\n * @returns {vec2} out\n */\n\nexport function add(out, a, b) {\n  out[0] = a[0] + b[0];\n  out[1] = a[1] + b[1];\n  return out;\n}\n/**\n * Subtracts vector b from vector a\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the first operand\n * @param {ReadonlyVec2} b the second operand\n * @returns {vec2} out\n */\n\nexport function subtract(out, a, b) {\n  out[0] = a[0] - b[0];\n  out[1] = a[1] - b[1];\n  return out;\n}\n/**\n * Multiplies two vec2's\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the first operand\n * @param {ReadonlyVec2} b the second operand\n * @returns {vec2} out\n */\n\nexport function multiply(out, a, b) {\n  out[0] = a[0] * b[0];\n  out[1] = a[1] * b[1];\n  return out;\n}\n/**\n * Divides two vec2's\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the first operand\n * @param {ReadonlyVec2} b the second operand\n * @returns {vec2} out\n */\n\nexport function divide(out, a, b) {\n  out[0] = a[0] / b[0];\n  out[1] = a[1] / b[1];\n  return out;\n}\n/**\n * Math.ceil the components of a vec2\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a vector to ceil\n * @returns {vec2} out\n */\n\nexport function ceil(out, a) {\n  out[0] = Math.ceil(a[0]);\n  out[1] = Math.ceil(a[1]);\n  return out;\n}\n/**\n * Math.floor the components of a vec2\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a vector to floor\n * @returns {vec2} out\n */\n\nexport function floor(out, a) {\n  out[0] = Math.floor(a[0]);\n  out[1] = Math.floor(a[1]);\n  return out;\n}\n/**\n * Returns the minimum of two vec2's\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the first operand\n * @param {ReadonlyVec2} b the second operand\n * @returns {vec2} out\n */\n\nexport function min(out, a, b) {\n  out[0] = Math.min(a[0], b[0]);\n  out[1] = Math.min(a[1], b[1]);\n  return out;\n}\n/**\n * Returns the maximum of two vec2's\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the first operand\n * @param {ReadonlyVec2} b the second operand\n * @returns {vec2} out\n */\n\nexport function max(out, a, b) {\n  out[0] = Math.max(a[0], b[0]);\n  out[1] = Math.max(a[1], b[1]);\n  return out;\n}\n/**\n * Math.round the components of a vec2\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a vector to round\n * @returns {vec2} out\n */\n\nexport function round(out, a) {\n  out[0] = Math.round(a[0]);\n  out[1] = Math.round(a[1]);\n  return out;\n}\n/**\n * Scales a vec2 by a scalar number\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the vector to scale\n * @param {Number} b amount to scale the vector by\n * @returns {vec2} out\n */\n\nexport function scale(out, a, b) {\n  out[0] = a[0] * b;\n  out[1] = a[1] * b;\n  return out;\n}\n/**\n * Adds two vec2's after scaling the second operand by a scalar value\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the first operand\n * @param {ReadonlyVec2} b the second operand\n * @param {Number} scale the amount to scale b by before adding\n * @returns {vec2} out\n */\n\nexport function scaleAndAdd(out, a, b, scale) {\n  out[0] = a[0] + b[0] * scale;\n  out[1] = a[1] + b[1] * scale;\n  return out;\n}\n/**\n * Calculates the euclidian distance between two vec2's\n *\n * @param {ReadonlyVec2} a the first operand\n * @param {ReadonlyVec2} b the second operand\n * @returns {Number} distance between a and b\n */\n\nexport function distance(a, b) {\n  var x = b[0] - a[0],\n      y = b[1] - a[1];\n  return Math.hypot(x, y);\n}\n/**\n * Calculates the squared euclidian distance between two vec2's\n *\n * @param {ReadonlyVec2} a the first operand\n * @param {ReadonlyVec2} b the second operand\n * @returns {Number} squared distance between a and b\n */\n\nexport function squaredDistance(a, b) {\n  var x = b[0] - a[0],\n      y = b[1] - a[1];\n  return x * x + y * y;\n}\n/**\n * Calculates the length of a vec2\n *\n * @param {ReadonlyVec2} a vector to calculate length of\n * @returns {Number} length of a\n */\n\nexport function length(a) {\n  var x = a[0],\n      y = a[1];\n  return Math.hypot(x, y);\n}\n/**\n * Calculates the squared length of a vec2\n *\n * @param {ReadonlyVec2} a vector to calculate squared length of\n * @returns {Number} squared length of a\n */\n\nexport function squaredLength(a) {\n  var x = a[0],\n      y = a[1];\n  return x * x + y * y;\n}\n/**\n * Negates the components of a vec2\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a vector to negate\n * @returns {vec2} out\n */\n\nexport function negate(out, a) {\n  out[0] = -a[0];\n  out[1] = -a[1];\n  return out;\n}\n/**\n * Returns the inverse of the components of a vec2\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a vector to invert\n * @returns {vec2} out\n */\n\nexport function inverse(out, a) {\n  out[0] = 1.0 / a[0];\n  out[1] = 1.0 / a[1];\n  return out;\n}\n/**\n * Normalize a vec2\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a vector to normalize\n * @returns {vec2} out\n */\n\nexport function normalize(out, a) {\n  var x = a[0],\n      y = a[1];\n  var len = x * x + y * y;\n\n  if (len > 0) {\n    //TODO: evaluate use of glm_invsqrt here?\n    len = 1 / Math.sqrt(len);\n  }\n\n  out[0] = a[0] * len;\n  out[1] = a[1] * len;\n  return out;\n}\n/**\n * Calculates the dot product of two vec2's\n *\n * @param {ReadonlyVec2} a the first operand\n * @param {ReadonlyVec2} b the second operand\n * @returns {Number} dot product of a and b\n */\n\nexport function dot(a, b) {\n  return a[0] * b[0] + a[1] * b[1];\n}\n/**\n * Computes the cross product of two vec2's\n * Note that the cross product must by definition produce a 3D vector\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec2} a the first operand\n * @param {ReadonlyVec2} b the second operand\n * @returns {vec3} out\n */\n\nexport function cross(out, a, b) {\n  var z = a[0] * b[1] - a[1] * b[0];\n  out[0] = out[1] = 0;\n  out[2] = z;\n  return out;\n}\n/**\n * Performs a linear interpolation between two vec2's\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the first operand\n * @param {ReadonlyVec2} b the second operand\n * @param {Number} t interpolation amount, in the range [0-1], between the two inputs\n * @returns {vec2} out\n */\n\nexport function lerp(out, a, b, t) {\n  var ax = a[0],\n      ay = a[1];\n  out[0] = ax + t * (b[0] - ax);\n  out[1] = ay + t * (b[1] - ay);\n  return out;\n}\n/**\n * Generates a random vector with the given scale\n *\n * @param {vec2} out the receiving vector\n * @param {Number} [scale] Length of the resulting vector. If ommitted, a unit vector will be returned\n * @returns {vec2} out\n */\n\nexport function random(out, scale) {\n  scale = scale || 1.0;\n  var r = glMatrix.RANDOM() * 2.0 * Math.PI;\n  out[0] = Math.cos(r) * scale;\n  out[1] = Math.sin(r) * scale;\n  return out;\n}\n/**\n * Transforms the vec2 with a mat2\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the vector to transform\n * @param {ReadonlyMat2} m matrix to transform with\n * @returns {vec2} out\n */\n\nexport function transformMat2(out, a, m) {\n  var x = a[0],\n      y = a[1];\n  out[0] = m[0] * x + m[2] * y;\n  out[1] = m[1] * x + m[3] * y;\n  return out;\n}\n/**\n * Transforms the vec2 with a mat2d\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the vector to transform\n * @param {ReadonlyMat2d} m matrix to transform with\n * @returns {vec2} out\n */\n\nexport function transformMat2d(out, a, m) {\n  var x = a[0],\n      y = a[1];\n  out[0] = m[0] * x + m[2] * y + m[4];\n  out[1] = m[1] * x + m[3] * y + m[5];\n  return out;\n}\n/**\n * Transforms the vec2 with a mat3\n * 3rd vector component is implicitly '1'\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the vector to transform\n * @param {ReadonlyMat3} m matrix to transform with\n * @returns {vec2} out\n */\n\nexport function transformMat3(out, a, m) {\n  var x = a[0],\n      y = a[1];\n  out[0] = m[0] * x + m[3] * y + m[6];\n  out[1] = m[1] * x + m[4] * y + m[7];\n  return out;\n}\n/**\n * Transforms the vec2 with a mat4\n * 3rd vector component is implicitly '0'\n * 4th vector component is implicitly '1'\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the vector to transform\n * @param {ReadonlyMat4} m matrix to transform with\n * @returns {vec2} out\n */\n\nexport function transformMat4(out, a, m) {\n  var x = a[0];\n  var y = a[1];\n  out[0] = m[0] * x + m[4] * y + m[12];\n  out[1] = m[1] * x + m[5] * y + m[13];\n  return out;\n}\n/**\n * Rotate a 2D vector\n * @param {vec2} out The receiving vec2\n * @param {ReadonlyVec2} a The vec2 point to rotate\n * @param {ReadonlyVec2} b The origin of the rotation\n * @param {Number} rad The angle of rotation in radians\n * @returns {vec2} out\n */\n\nexport function rotate(out, a, b, rad) {\n  //Translate point to the origin\n  var p0 = a[0] - b[0],\n      p1 = a[1] - b[1],\n      sinC = Math.sin(rad),\n      cosC = Math.cos(rad); //perform rotation and translate to correct position\n\n  out[0] = p0 * cosC - p1 * sinC + b[0];\n  out[1] = p0 * sinC + p1 * cosC + b[1];\n  return out;\n}\n/**\n * Get the angle between two 2D vectors\n * @param {ReadonlyVec2} a The first operand\n * @param {ReadonlyVec2} b The second operand\n * @returns {Number} The angle in radians\n */\n\nexport function angle(a, b) {\n  var x1 = a[0],\n      y1 = a[1],\n      x2 = b[0],\n      y2 = b[1],\n      // mag is the product of the magnitudes of a and b\n  mag = Math.sqrt(x1 * x1 + y1 * y1) * Math.sqrt(x2 * x2 + y2 * y2),\n      // mag &&.. short circuits if mag == 0\n  cosine = mag && (x1 * x2 + y1 * y2) / mag; // Math.min(Math.max(cosine, -1), 1) clamps the cosine between -1 and 1\n\n  return Math.acos(Math.min(Math.max(cosine, -1), 1));\n}\n/**\n * Set the components of a vec2 to zero\n *\n * @param {vec2} out the receiving vector\n * @returns {vec2} out\n */\n\nexport function zero(out) {\n  out[0] = 0.0;\n  out[1] = 0.0;\n  return out;\n}\n/**\n * Returns a string representation of a vector\n *\n * @param {ReadonlyVec2} a vector to represent as a string\n * @returns {String} string representation of the vector\n */\n\nexport function str(a) {\n  return \"vec2(\" + a[0] + \", \" + a[1] + \")\";\n}\n/**\n * Returns whether or not the vectors exactly have the same elements in the same position (when compared with ===)\n *\n * @param {ReadonlyVec2} a The first vector.\n * @param {ReadonlyVec2} b The second vector.\n * @returns {Boolean} True if the vectors are equal, false otherwise.\n */\n\nexport function exactEquals(a, b) {\n  return a[0] === b[0] && a[1] === b[1];\n}\n/**\n * Returns whether or not the vectors have approximately the same elements in the same position.\n *\n * @param {ReadonlyVec2} a The first vector.\n * @param {ReadonlyVec2} b The second vector.\n * @returns {Boolean} True if the vectors are equal, false otherwise.\n */\n\nexport function equals(a, b) {\n  var a0 = a[0],\n      a1 = a[1];\n  var b0 = b[0],\n      b1 = b[1];\n  return Math.abs(a0 - b0) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a0), Math.abs(b0)) && Math.abs(a1 - b1) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a1), Math.abs(b1));\n}\n/**\n * Alias for {@link vec2.length}\n * @function\n */\n\nexport var len = length;\n/**\n * Alias for {@link vec2.subtract}\n * @function\n */\n\nexport var sub = subtract;\n/**\n * Alias for {@link vec2.multiply}\n * @function\n */\n\nexport var mul = multiply;\n/**\n * Alias for {@link vec2.divide}\n * @function\n */\n\nexport var div = divide;\n/**\n * Alias for {@link vec2.distance}\n * @function\n */\n\nexport var dist = distance;\n/**\n * Alias for {@link vec2.squaredDistance}\n * @function\n */\n\nexport var sqrDist = squaredDistance;\n/**\n * Alias for {@link vec2.squaredLength}\n * @function\n */\n\nexport var sqrLen = squaredLength;\n/**\n * Perform some operation over an array of vec2s.\n *\n * @param {Array} a the array of vectors to iterate over\n * @param {Number} stride Number of elements between the start of each vec2. If 0 assumes tightly packed\n * @param {Number} offset Number of elements to skip at the beginning of the array\n * @param {Number} count Number of vec2s to iterate over. If 0 iterates over entire array\n * @param {Function} fn Function to call for each vector in the array\n * @param {Object} [arg] additional argument to pass to fn\n * @returns {Array} a\n * @function\n */\n\nexport var forEach = function () {\n  var vec = create();\n  return function (a, stride, offset, count, fn, arg) {\n    var i, l;\n\n    if (!stride) {\n      stride = 2;\n    }\n\n    if (!offset) {\n      offset = 0;\n    }\n\n    if (count) {\n      l = Math.min(count * stride + offset, a.length);\n    } else {\n      l = a.length;\n    }\n\n    for (i = offset; i < l; i += stride) {\n      vec[0] = a[i];\n      vec[1] = a[i + 1];\n      fn(vec, vec, arg);\n      a[i] = vec[0];\n      a[i + 1] = vec[1];\n    }\n\n    return a;\n  };\n}();","import * as glMatrix from \"./common.js\";\n/**\n * 3 Dimensional Vector\n * @module vec3\n */\n\n/**\n * Creates a new, empty vec3\n *\n * @returns {vec3} a new 3D vector\n */\n\nexport function create() {\n  var out = new glMatrix.ARRAY_TYPE(3);\n\n  if (glMatrix.ARRAY_TYPE != Float32Array) {\n    out[0] = 0;\n    out[1] = 0;\n    out[2] = 0;\n  }\n\n  return out;\n}\n/**\n * Creates a new vec3 initialized with values from an existing vector\n *\n * @param {ReadonlyVec3} a vector to clone\n * @returns {vec3} a new 3D vector\n */\n\nexport function clone(a) {\n  var out = new glMatrix.ARRAY_TYPE(3);\n  out[0] = a[0];\n  out[1] = a[1];\n  out[2] = a[2];\n  return out;\n}\n/**\n * Calculates the length of a vec3\n *\n * @param {ReadonlyVec3} a vector to calculate length of\n * @returns {Number} length of a\n */\n\nexport function length(a) {\n  var x = a[0];\n  var y = a[1];\n  var z = a[2];\n  return Math.hypot(x, y, z);\n}\n/**\n * Creates a new vec3 initialized with the given values\n *\n * @param {Number} x X component\n * @param {Number} y Y component\n * @param {Number} z Z component\n * @returns {vec3} a new 3D vector\n */\n\nexport function fromValues(x, y, z) {\n  var out = new glMatrix.ARRAY_TYPE(3);\n  out[0] = x;\n  out[1] = y;\n  out[2] = z;\n  return out;\n}\n/**\n * Copy the values from one vec3 to another\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the source vector\n * @returns {vec3} out\n */\n\nexport function copy(out, a) {\n  out[0] = a[0];\n  out[1] = a[1];\n  out[2] = a[2];\n  return out;\n}\n/**\n * Set the components of a vec3 to the given values\n *\n * @param {vec3} out the receiving vector\n * @param {Number} x X component\n * @param {Number} y Y component\n * @param {Number} z Z component\n * @returns {vec3} out\n */\n\nexport function set(out, x, y, z) {\n  out[0] = x;\n  out[1] = y;\n  out[2] = z;\n  return out;\n}\n/**\n * Adds two vec3's\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @returns {vec3} out\n */\n\nexport function add(out, a, b) {\n  out[0] = a[0] + b[0];\n  out[1] = a[1] + b[1];\n  out[2] = a[2] + b[2];\n  return out;\n}\n/**\n * Subtracts vector b from vector a\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @returns {vec3} out\n */\n\nexport function subtract(out, a, b) {\n  out[0] = a[0] - b[0];\n  out[1] = a[1] - b[1];\n  out[2] = a[2] - b[2];\n  return out;\n}\n/**\n * Multiplies two vec3's\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @returns {vec3} out\n */\n\nexport function multiply(out, a, b) {\n  out[0] = a[0] * b[0];\n  out[1] = a[1] * b[1];\n  out[2] = a[2] * b[2];\n  return out;\n}\n/**\n * Divides two vec3's\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @returns {vec3} out\n */\n\nexport function divide(out, a, b) {\n  out[0] = a[0] / b[0];\n  out[1] = a[1] / b[1];\n  out[2] = a[2] / b[2];\n  return out;\n}\n/**\n * Math.ceil the components of a vec3\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a vector to ceil\n * @returns {vec3} out\n */\n\nexport function ceil(out, a) {\n  out[0] = Math.ceil(a[0]);\n  out[1] = Math.ceil(a[1]);\n  out[2] = Math.ceil(a[2]);\n  return out;\n}\n/**\n * Math.floor the components of a vec3\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a vector to floor\n * @returns {vec3} out\n */\n\nexport function floor(out, a) {\n  out[0] = Math.floor(a[0]);\n  out[1] = Math.floor(a[1]);\n  out[2] = Math.floor(a[2]);\n  return out;\n}\n/**\n * Returns the minimum of two vec3's\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @returns {vec3} out\n */\n\nexport function min(out, a, b) {\n  out[0] = Math.min(a[0], b[0]);\n  out[1] = Math.min(a[1], b[1]);\n  out[2] = Math.min(a[2], b[2]);\n  return out;\n}\n/**\n * Returns the maximum of two vec3's\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @returns {vec3} out\n */\n\nexport function max(out, a, b) {\n  out[0] = Math.max(a[0], b[0]);\n  out[1] = Math.max(a[1], b[1]);\n  out[2] = Math.max(a[2], b[2]);\n  return out;\n}\n/**\n * Math.round the components of a vec3\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a vector to round\n * @returns {vec3} out\n */\n\nexport function round(out, a) {\n  out[0] = Math.round(a[0]);\n  out[1] = Math.round(a[1]);\n  out[2] = Math.round(a[2]);\n  return out;\n}\n/**\n * Scales a vec3 by a scalar number\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the vector to scale\n * @param {Number} b amount to scale the vector by\n * @returns {vec3} out\n */\n\nexport function scale(out, a, b) {\n  out[0] = a[0] * b;\n  out[1] = a[1] * b;\n  out[2] = a[2] * b;\n  return out;\n}\n/**\n * Adds two vec3's after scaling the second operand by a scalar value\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @param {Number} scale the amount to scale b by before adding\n * @returns {vec3} out\n */\n\nexport function scaleAndAdd(out, a, b, scale) {\n  out[0] = a[0] + b[0] * scale;\n  out[1] = a[1] + b[1] * scale;\n  out[2] = a[2] + b[2] * scale;\n  return out;\n}\n/**\n * Calculates the euclidian distance between two vec3's\n *\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @returns {Number} distance between a and b\n */\n\nexport function distance(a, b) {\n  var x = b[0] - a[0];\n  var y = b[1] - a[1];\n  var z = b[2] - a[2];\n  return Math.hypot(x, y, z);\n}\n/**\n * Calculates the squared euclidian distance between two vec3's\n *\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @returns {Number} squared distance between a and b\n */\n\nexport function squaredDistance(a, b) {\n  var x = b[0] - a[0];\n  var y = b[1] - a[1];\n  var z = b[2] - a[2];\n  return x * x + y * y + z * z;\n}\n/**\n * Calculates the squared length of a vec3\n *\n * @param {ReadonlyVec3} a vector to calculate squared length of\n * @returns {Number} squared length of a\n */\n\nexport function squaredLength(a) {\n  var x = a[0];\n  var y = a[1];\n  var z = a[2];\n  return x * x + y * y + z * z;\n}\n/**\n * Negates the components of a vec3\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a vector to negate\n * @returns {vec3} out\n */\n\nexport function negate(out, a) {\n  out[0] = -a[0];\n  out[1] = -a[1];\n  out[2] = -a[2];\n  return out;\n}\n/**\n * Returns the inverse of the components of a vec3\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a vector to invert\n * @returns {vec3} out\n */\n\nexport function inverse(out, a) {\n  out[0] = 1.0 / a[0];\n  out[1] = 1.0 / a[1];\n  out[2] = 1.0 / a[2];\n  return out;\n}\n/**\n * Normalize a vec3\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a vector to normalize\n * @returns {vec3} out\n */\n\nexport function normalize(out, a) {\n  var x = a[0];\n  var y = a[1];\n  var z = a[2];\n  var len = x * x + y * y + z * z;\n\n  if (len > 0) {\n    //TODO: evaluate use of glm_invsqrt here?\n    len = 1 / Math.sqrt(len);\n  }\n\n  out[0] = a[0] * len;\n  out[1] = a[1] * len;\n  out[2] = a[2] * len;\n  return out;\n}\n/**\n * Calculates the dot product of two vec3's\n *\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @returns {Number} dot product of a and b\n */\n\nexport function dot(a, b) {\n  return a[0] * b[0] + a[1] * b[1] + a[2] * b[2];\n}\n/**\n * Computes the cross product of two vec3's\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @returns {vec3} out\n */\n\nexport function cross(out, a, b) {\n  var ax = a[0],\n      ay = a[1],\n      az = a[2];\n  var bx = b[0],\n      by = b[1],\n      bz = b[2];\n  out[0] = ay * bz - az * by;\n  out[1] = az * bx - ax * bz;\n  out[2] = ax * by - ay * bx;\n  return out;\n}\n/**\n * Performs a linear interpolation between two vec3's\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @param {Number} t interpolation amount, in the range [0-1], between the two inputs\n * @returns {vec3} out\n */\n\nexport function lerp(out, a, b, t) {\n  var ax = a[0];\n  var ay = a[1];\n  var az = a[2];\n  out[0] = ax + t * (b[0] - ax);\n  out[1] = ay + t * (b[1] - ay);\n  out[2] = az + t * (b[2] - az);\n  return out;\n}\n/**\n * Performs a hermite interpolation with two control points\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @param {ReadonlyVec3} c the third operand\n * @param {ReadonlyVec3} d the fourth operand\n * @param {Number} t interpolation amount, in the range [0-1], between the two inputs\n * @returns {vec3} out\n */\n\nexport function hermite(out, a, b, c, d, t) {\n  var factorTimes2 = t * t;\n  var factor1 = factorTimes2 * (2 * t - 3) + 1;\n  var factor2 = factorTimes2 * (t - 2) + t;\n  var factor3 = factorTimes2 * (t - 1);\n  var factor4 = factorTimes2 * (3 - 2 * t);\n  out[0] = a[0] * factor1 + b[0] * factor2 + c[0] * factor3 + d[0] * factor4;\n  out[1] = a[1] * factor1 + b[1] * factor2 + c[1] * factor3 + d[1] * factor4;\n  out[2] = a[2] * factor1 + b[2] * factor2 + c[2] * factor3 + d[2] * factor4;\n  return out;\n}\n/**\n * Performs a bezier interpolation with two control points\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @param {ReadonlyVec3} c the third operand\n * @param {ReadonlyVec3} d the fourth operand\n * @param {Number} t interpolation amount, in the range [0-1], between the two inputs\n * @returns {vec3} out\n */\n\nexport function bezier(out, a, b, c, d, t) {\n  var inverseFactor = 1 - t;\n  var inverseFactorTimesTwo = inverseFactor * inverseFactor;\n  var factorTimes2 = t * t;\n  var factor1 = inverseFactorTimesTwo * inverseFactor;\n  var factor2 = 3 * t * inverseFactorTimesTwo;\n  var factor3 = 3 * factorTimes2 * inverseFactor;\n  var factor4 = factorTimes2 * t;\n  out[0] = a[0] * factor1 + b[0] * factor2 + c[0] * factor3 + d[0] * factor4;\n  out[1] = a[1] * factor1 + b[1] * factor2 + c[1] * factor3 + d[1] * factor4;\n  out[2] = a[2] * factor1 + b[2] * factor2 + c[2] * factor3 + d[2] * factor4;\n  return out;\n}\n/**\n * Generates a random vector with the given scale\n *\n * @param {vec3} out the receiving vector\n * @param {Number} [scale] Length of the resulting vector. If ommitted, a unit vector will be returned\n * @returns {vec3} out\n */\n\nexport function random(out, scale) {\n  scale = scale || 1.0;\n  var r = glMatrix.RANDOM() * 2.0 * Math.PI;\n  var z = glMatrix.RANDOM() * 2.0 - 1.0;\n  var zScale = Math.sqrt(1.0 - z * z) * scale;\n  out[0] = Math.cos(r) * zScale;\n  out[1] = Math.sin(r) * zScale;\n  out[2] = z * scale;\n  return out;\n}\n/**\n * Transforms the vec3 with a mat4.\n * 4th vector component is implicitly '1'\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the vector to transform\n * @param {ReadonlyMat4} m matrix to transform with\n * @returns {vec3} out\n */\n\nexport function transformMat4(out, a, m) {\n  var x = a[0],\n      y = a[1],\n      z = a[2];\n  var w = m[3] * x + m[7] * y + m[11] * z + m[15];\n  w = w || 1.0;\n  out[0] = (m[0] * x + m[4] * y + m[8] * z + m[12]) / w;\n  out[1] = (m[1] * x + m[5] * y + m[9] * z + m[13]) / w;\n  out[2] = (m[2] * x + m[6] * y + m[10] * z + m[14]) / w;\n  return out;\n}\n/**\n * Transforms the vec3 with a mat3.\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the vector to transform\n * @param {ReadonlyMat3} m the 3x3 matrix to transform with\n * @returns {vec3} out\n */\n\nexport function transformMat3(out, a, m) {\n  var x = a[0],\n      y = a[1],\n      z = a[2];\n  out[0] = x * m[0] + y * m[3] + z * m[6];\n  out[1] = x * m[1] + y * m[4] + z * m[7];\n  out[2] = x * m[2] + y * m[5] + z * m[8];\n  return out;\n}\n/**\n * Transforms the vec3 with a quat\n * Can also be used for dual quaternions. (Multiply it with the real part)\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the vector to transform\n * @param {ReadonlyQuat} q quaternion to transform with\n * @returns {vec3} out\n */\n\nexport function transformQuat(out, a, q) {\n  // benchmarks: https://jsperf.com/quaternion-transform-vec3-implementations-fixed\n  var qx = q[0],\n      qy = q[1],\n      qz = q[2],\n      qw = q[3];\n  var x = a[0],\n      y = a[1],\n      z = a[2]; // var qvec = [qx, qy, qz];\n  // var uv = vec3.cross([], qvec, a);\n\n  var uvx = qy * z - qz * y,\n      uvy = qz * x - qx * z,\n      uvz = qx * y - qy * x; // var uuv = vec3.cross([], qvec, uv);\n\n  var uuvx = qy * uvz - qz * uvy,\n      uuvy = qz * uvx - qx * uvz,\n      uuvz = qx * uvy - qy * uvx; // vec3.scale(uv, uv, 2 * w);\n\n  var w2 = qw * 2;\n  uvx *= w2;\n  uvy *= w2;\n  uvz *= w2; // vec3.scale(uuv, uuv, 2);\n\n  uuvx *= 2;\n  uuvy *= 2;\n  uuvz *= 2; // return vec3.add(out, a, vec3.add(out, uv, uuv));\n\n  out[0] = x + uvx + uuvx;\n  out[1] = y + uvy + uuvy;\n  out[2] = z + uvz + uuvz;\n  return out;\n}\n/**\n * Rotate a 3D vector around the x-axis\n * @param {vec3} out The receiving vec3\n * @param {ReadonlyVec3} a The vec3 point to rotate\n * @param {ReadonlyVec3} b The origin of the rotation\n * @param {Number} rad The angle of rotation in radians\n * @returns {vec3} out\n */\n\nexport function rotateX(out, a, b, rad) {\n  var p = [],\n      r = []; //Translate point to the origin\n\n  p[0] = a[0] - b[0];\n  p[1] = a[1] - b[1];\n  p[2] = a[2] - b[2]; //perform rotation\n\n  r[0] = p[0];\n  r[1] = p[1] * Math.cos(rad) - p[2] * Math.sin(rad);\n  r[2] = p[1] * Math.sin(rad) + p[2] * Math.cos(rad); //translate to correct position\n\n  out[0] = r[0] + b[0];\n  out[1] = r[1] + b[1];\n  out[2] = r[2] + b[2];\n  return out;\n}\n/**\n * Rotate a 3D vector around the y-axis\n * @param {vec3} out The receiving vec3\n * @param {ReadonlyVec3} a The vec3 point to rotate\n * @param {ReadonlyVec3} b The origin of the rotation\n * @param {Number} rad The angle of rotation in radians\n * @returns {vec3} out\n */\n\nexport function rotateY(out, a, b, rad) {\n  var p = [],\n      r = []; //Translate point to the origin\n\n  p[0] = a[0] - b[0];\n  p[1] = a[1] - b[1];\n  p[2] = a[2] - b[2]; //perform rotation\n\n  r[0] = p[2] * Math.sin(rad) + p[0] * Math.cos(rad);\n  r[1] = p[1];\n  r[2] = p[2] * Math.cos(rad) - p[0] * Math.sin(rad); //translate to correct position\n\n  out[0] = r[0] + b[0];\n  out[1] = r[1] + b[1];\n  out[2] = r[2] + b[2];\n  return out;\n}\n/**\n * Rotate a 3D vector around the z-axis\n * @param {vec3} out The receiving vec3\n * @param {ReadonlyVec3} a The vec3 point to rotate\n * @param {ReadonlyVec3} b The origin of the rotation\n * @param {Number} rad The angle of rotation in radians\n * @returns {vec3} out\n */\n\nexport function rotateZ(out, a, b, rad) {\n  var p = [],\n      r = []; //Translate point to the origin\n\n  p[0] = a[0] - b[0];\n  p[1] = a[1] - b[1];\n  p[2] = a[2] - b[2]; //perform rotation\n\n  r[0] = p[0] * Math.cos(rad) - p[1] * Math.sin(rad);\n  r[1] = p[0] * Math.sin(rad) + p[1] * Math.cos(rad);\n  r[2] = p[2]; //translate to correct position\n\n  out[0] = r[0] + b[0];\n  out[1] = r[1] + b[1];\n  out[2] = r[2] + b[2];\n  return out;\n}\n/**\n * Get the angle between two 3D vectors\n * @param {ReadonlyVec3} a The first operand\n * @param {ReadonlyVec3} b The second operand\n * @returns {Number} The angle in radians\n */\n\nexport function angle(a, b) {\n  var ax = a[0],\n      ay = a[1],\n      az = a[2],\n      bx = b[0],\n      by = b[1],\n      bz = b[2],\n      mag1 = Math.sqrt(ax * ax + ay * ay + az * az),\n      mag2 = Math.sqrt(bx * bx + by * by + bz * bz),\n      mag = mag1 * mag2,\n      cosine = mag && dot(a, b) / mag;\n  return Math.acos(Math.min(Math.max(cosine, -1), 1));\n}\n/**\n * Set the components of a vec3 to zero\n *\n * @param {vec3} out the receiving vector\n * @returns {vec3} out\n */\n\nexport function zero(out) {\n  out[0] = 0.0;\n  out[1] = 0.0;\n  out[2] = 0.0;\n  return out;\n}\n/**\n * Returns a string representation of a vector\n *\n * @param {ReadonlyVec3} a vector to represent as a string\n * @returns {String} string representation of the vector\n */\n\nexport function str(a) {\n  return \"vec3(\" + a[0] + \", \" + a[1] + \", \" + a[2] + \")\";\n}\n/**\n * Returns whether or not the vectors have exactly the same elements in the same position (when compared with ===)\n *\n * @param {ReadonlyVec3} a The first vector.\n * @param {ReadonlyVec3} b The second vector.\n * @returns {Boolean} True if the vectors are equal, false otherwise.\n */\n\nexport function exactEquals(a, b) {\n  return a[0] === b[0] && a[1] === b[1] && a[2] === b[2];\n}\n/**\n * Returns whether or not the vectors have approximately the same elements in the same position.\n *\n * @param {ReadonlyVec3} a The first vector.\n * @param {ReadonlyVec3} b The second vector.\n * @returns {Boolean} True if the vectors are equal, false otherwise.\n */\n\nexport function equals(a, b) {\n  var a0 = a[0],\n      a1 = a[1],\n      a2 = a[2];\n  var b0 = b[0],\n      b1 = b[1],\n      b2 = b[2];\n  return Math.abs(a0 - b0) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a0), Math.abs(b0)) && Math.abs(a1 - b1) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a1), Math.abs(b1)) && Math.abs(a2 - b2) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a2), Math.abs(b2));\n}\n/**\n * Alias for {@link vec3.subtract}\n * @function\n */\n\nexport var sub = subtract;\n/**\n * Alias for {@link vec3.multiply}\n * @function\n */\n\nexport var mul = multiply;\n/**\n * Alias for {@link vec3.divide}\n * @function\n */\n\nexport var div = divide;\n/**\n * Alias for {@link vec3.distance}\n * @function\n */\n\nexport var dist = distance;\n/**\n * Alias for {@link vec3.squaredDistance}\n * @function\n */\n\nexport var sqrDist = squaredDistance;\n/**\n * Alias for {@link vec3.length}\n * @function\n */\n\nexport var len = length;\n/**\n * Alias for {@link vec3.squaredLength}\n * @function\n */\n\nexport var sqrLen = squaredLength;\n/**\n * Perform some operation over an array of vec3s.\n *\n * @param {Array} a the array of vectors to iterate over\n * @param {Number} stride Number of elements between the start of each vec3. If 0 assumes tightly packed\n * @param {Number} offset Number of elements to skip at the beginning of the array\n * @param {Number} count Number of vec3s to iterate over. If 0 iterates over entire array\n * @param {Function} fn Function to call for each vector in the array\n * @param {Object} [arg] additional argument to pass to fn\n * @returns {Array} a\n * @function\n */\n\nexport var forEach = function () {\n  var vec = create();\n  return function (a, stride, offset, count, fn, arg) {\n    var i, l;\n\n    if (!stride) {\n      stride = 3;\n    }\n\n    if (!offset) {\n      offset = 0;\n    }\n\n    if (count) {\n      l = Math.min(count * stride + offset, a.length);\n    } else {\n      l = a.length;\n    }\n\n    for (i = offset; i < l; i += stride) {\n      vec[0] = a[i];\n      vec[1] = a[i + 1];\n      vec[2] = a[i + 2];\n      fn(vec, vec, arg);\n      a[i] = vec[0];\n      a[i + 1] = vec[1];\n      a[i + 2] = vec[2];\n    }\n\n    return a;\n  };\n}();","import * as glMatrix from \"./common.js\";\n/**\n * 4 Dimensional Vector\n * @module vec4\n */\n\n/**\n * Creates a new, empty vec4\n *\n * @returns {vec4} a new 4D vector\n */\n\nexport function create() {\n  var out = new glMatrix.ARRAY_TYPE(4);\n\n  if (glMatrix.ARRAY_TYPE != Float32Array) {\n    out[0] = 0;\n    out[1] = 0;\n    out[2] = 0;\n    out[3] = 0;\n  }\n\n  return out;\n}\n/**\n * Creates a new vec4 initialized with values from an existing vector\n *\n * @param {ReadonlyVec4} a vector to clone\n * @returns {vec4} a new 4D vector\n */\n\nexport function clone(a) {\n  var out = new glMatrix.ARRAY_TYPE(4);\n  out[0] = a[0];\n  out[1] = a[1];\n  out[2] = a[2];\n  out[3] = a[3];\n  return out;\n}\n/**\n * Creates a new vec4 initialized with the given values\n *\n * @param {Number} x X component\n * @param {Number} y Y component\n * @param {Number} z Z component\n * @param {Number} w W component\n * @returns {vec4} a new 4D vector\n */\n\nexport function fromValues(x, y, z, w) {\n  var out = new glMatrix.ARRAY_TYPE(4);\n  out[0] = x;\n  out[1] = y;\n  out[2] = z;\n  out[3] = w;\n  return out;\n}\n/**\n * Copy the values from one vec4 to another\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a the source vector\n * @returns {vec4} out\n */\n\nexport function copy(out, a) {\n  out[0] = a[0];\n  out[1] = a[1];\n  out[2] = a[2];\n  out[3] = a[3];\n  return out;\n}\n/**\n * Set the components of a vec4 to the given values\n *\n * @param {vec4} out the receiving vector\n * @param {Number} x X component\n * @param {Number} y Y component\n * @param {Number} z Z component\n * @param {Number} w W component\n * @returns {vec4} out\n */\n\nexport function set(out, x, y, z, w) {\n  out[0] = x;\n  out[1] = y;\n  out[2] = z;\n  out[3] = w;\n  return out;\n}\n/**\n * Adds two vec4's\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a the first operand\n * @param {ReadonlyVec4} b the second operand\n * @returns {vec4} out\n */\n\nexport function add(out, a, b) {\n  out[0] = a[0] + b[0];\n  out[1] = a[1] + b[1];\n  out[2] = a[2] + b[2];\n  out[3] = a[3] + b[3];\n  return out;\n}\n/**\n * Subtracts vector b from vector a\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a the first operand\n * @param {ReadonlyVec4} b the second operand\n * @returns {vec4} out\n */\n\nexport function subtract(out, a, b) {\n  out[0] = a[0] - b[0];\n  out[1] = a[1] - b[1];\n  out[2] = a[2] - b[2];\n  out[3] = a[3] - b[3];\n  return out;\n}\n/**\n * Multiplies two vec4's\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a the first operand\n * @param {ReadonlyVec4} b the second operand\n * @returns {vec4} out\n */\n\nexport function multiply(out, a, b) {\n  out[0] = a[0] * b[0];\n  out[1] = a[1] * b[1];\n  out[2] = a[2] * b[2];\n  out[3] = a[3] * b[3];\n  return out;\n}\n/**\n * Divides two vec4's\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a the first operand\n * @param {ReadonlyVec4} b the second operand\n * @returns {vec4} out\n */\n\nexport function divide(out, a, b) {\n  out[0] = a[0] / b[0];\n  out[1] = a[1] / b[1];\n  out[2] = a[2] / b[2];\n  out[3] = a[3] / b[3];\n  return out;\n}\n/**\n * Math.ceil the components of a vec4\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a vector to ceil\n * @returns {vec4} out\n */\n\nexport function ceil(out, a) {\n  out[0] = Math.ceil(a[0]);\n  out[1] = Math.ceil(a[1]);\n  out[2] = Math.ceil(a[2]);\n  out[3] = Math.ceil(a[3]);\n  return out;\n}\n/**\n * Math.floor the components of a vec4\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a vector to floor\n * @returns {vec4} out\n */\n\nexport function floor(out, a) {\n  out[0] = Math.floor(a[0]);\n  out[1] = Math.floor(a[1]);\n  out[2] = Math.floor(a[2]);\n  out[3] = Math.floor(a[3]);\n  return out;\n}\n/**\n * Returns the minimum of two vec4's\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a the first operand\n * @param {ReadonlyVec4} b the second operand\n * @returns {vec4} out\n */\n\nexport function min(out, a, b) {\n  out[0] = Math.min(a[0], b[0]);\n  out[1] = Math.min(a[1], b[1]);\n  out[2] = Math.min(a[2], b[2]);\n  out[3] = Math.min(a[3], b[3]);\n  return out;\n}\n/**\n * Returns the maximum of two vec4's\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a the first operand\n * @param {ReadonlyVec4} b the second operand\n * @returns {vec4} out\n */\n\nexport function max(out, a, b) {\n  out[0] = Math.max(a[0], b[0]);\n  out[1] = Math.max(a[1], b[1]);\n  out[2] = Math.max(a[2], b[2]);\n  out[3] = Math.max(a[3], b[3]);\n  return out;\n}\n/**\n * Math.round the components of a vec4\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a vector to round\n * @returns {vec4} out\n */\n\nexport function round(out, a) {\n  out[0] = Math.round(a[0]);\n  out[1] = Math.round(a[1]);\n  out[2] = Math.round(a[2]);\n  out[3] = Math.round(a[3]);\n  return out;\n}\n/**\n * Scales a vec4 by a scalar number\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a the vector to scale\n * @param {Number} b amount to scale the vector by\n * @returns {vec4} out\n */\n\nexport function scale(out, a, b) {\n  out[0] = a[0] * b;\n  out[1] = a[1] * b;\n  out[2] = a[2] * b;\n  out[3] = a[3] * b;\n  return out;\n}\n/**\n * Adds two vec4's after scaling the second operand by a scalar value\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a the first operand\n * @param {ReadonlyVec4} b the second operand\n * @param {Number} scale the amount to scale b by before adding\n * @returns {vec4} out\n */\n\nexport function scaleAndAdd(out, a, b, scale) {\n  out[0] = a[0] + b[0] * scale;\n  out[1] = a[1] + b[1] * scale;\n  out[2] = a[2] + b[2] * scale;\n  out[3] = a[3] + b[3] * scale;\n  return out;\n}\n/**\n * Calculates the euclidian distance between two vec4's\n *\n * @param {ReadonlyVec4} a the first operand\n * @param {ReadonlyVec4} b the second operand\n * @returns {Number} distance between a and b\n */\n\nexport function distance(a, b) {\n  var x = b[0] - a[0];\n  var y = b[1] - a[1];\n  var z = b[2] - a[2];\n  var w = b[3] - a[3];\n  return Math.hypot(x, y, z, w);\n}\n/**\n * Calculates the squared euclidian distance between two vec4's\n *\n * @param {ReadonlyVec4} a the first operand\n * @param {ReadonlyVec4} b the second operand\n * @returns {Number} squared distance between a and b\n */\n\nexport function squaredDistance(a, b) {\n  var x = b[0] - a[0];\n  var y = b[1] - a[1];\n  var z = b[2] - a[2];\n  var w = b[3] - a[3];\n  return x * x + y * y + z * z + w * w;\n}\n/**\n * Calculates the length of a vec4\n *\n * @param {ReadonlyVec4} a vector to calculate length of\n * @returns {Number} length of a\n */\n\nexport function length(a) {\n  var x = a[0];\n  var y = a[1];\n  var z = a[2];\n  var w = a[3];\n  return Math.hypot(x, y, z, w);\n}\n/**\n * Calculates the squared length of a vec4\n *\n * @param {ReadonlyVec4} a vector to calculate squared length of\n * @returns {Number} squared length of a\n */\n\nexport function squaredLength(a) {\n  var x = a[0];\n  var y = a[1];\n  var z = a[2];\n  var w = a[3];\n  return x * x + y * y + z * z + w * w;\n}\n/**\n * Negates the components of a vec4\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a vector to negate\n * @returns {vec4} out\n */\n\nexport function negate(out, a) {\n  out[0] = -a[0];\n  out[1] = -a[1];\n  out[2] = -a[2];\n  out[3] = -a[3];\n  return out;\n}\n/**\n * Returns the inverse of the components of a vec4\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a vector to invert\n * @returns {vec4} out\n */\n\nexport function inverse(out, a) {\n  out[0] = 1.0 / a[0];\n  out[1] = 1.0 / a[1];\n  out[2] = 1.0 / a[2];\n  out[3] = 1.0 / a[3];\n  return out;\n}\n/**\n * Normalize a vec4\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a vector to normalize\n * @returns {vec4} out\n */\n\nexport function normalize(out, a) {\n  var x = a[0];\n  var y = a[1];\n  var z = a[2];\n  var w = a[3];\n  var len = x * x + y * y + z * z + w * w;\n\n  if (len > 0) {\n    len = 1 / Math.sqrt(len);\n  }\n\n  out[0] = x * len;\n  out[1] = y * len;\n  out[2] = z * len;\n  out[3] = w * len;\n  return out;\n}\n/**\n * Calculates the dot product of two vec4's\n *\n * @param {ReadonlyVec4} a the first operand\n * @param {ReadonlyVec4} b the second operand\n * @returns {Number} dot product of a and b\n */\n\nexport function dot(a, b) {\n  return a[0] * b[0] + a[1] * b[1] + a[2] * b[2] + a[3] * b[3];\n}\n/**\n * Returns the cross-product of three vectors in a 4-dimensional space\n *\n * @param {ReadonlyVec4} result the receiving vector\n * @param {ReadonlyVec4} U the first vector\n * @param {ReadonlyVec4} V the second vector\n * @param {ReadonlyVec4} W the third vector\n * @returns {vec4} result\n */\n\nexport function cross(out, u, v, w) {\n  var A = v[0] * w[1] - v[1] * w[0],\n      B = v[0] * w[2] - v[2] * w[0],\n      C = v[0] * w[3] - v[3] * w[0],\n      D = v[1] * w[2] - v[2] * w[1],\n      E = v[1] * w[3] - v[3] * w[1],\n      F = v[2] * w[3] - v[3] * w[2];\n  var G = u[0];\n  var H = u[1];\n  var I = u[2];\n  var J = u[3];\n  out[0] = H * F - I * E + J * D;\n  out[1] = -(G * F) + I * C - J * B;\n  out[2] = G * E - H * C + J * A;\n  out[3] = -(G * D) + H * B - I * A;\n  return out;\n}\n/**\n * Performs a linear interpolation between two vec4's\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a the first operand\n * @param {ReadonlyVec4} b the second operand\n * @param {Number} t interpolation amount, in the range [0-1], between the two inputs\n * @returns {vec4} out\n */\n\nexport function lerp(out, a, b, t) {\n  var ax = a[0];\n  var ay = a[1];\n  var az = a[2];\n  var aw = a[3];\n  out[0] = ax + t * (b[0] - ax);\n  out[1] = ay + t * (b[1] - ay);\n  out[2] = az + t * (b[2] - az);\n  out[3] = aw + t * (b[3] - aw);\n  return out;\n}\n/**\n * Generates a random vector with the given scale\n *\n * @param {vec4} out the receiving vector\n * @param {Number} [scale] Length of the resulting vector. If ommitted, a unit vector will be returned\n * @returns {vec4} out\n */\n\nexport function random(out, scale) {\n  scale = scale || 1.0; // Marsaglia, George. Choosing a Point from the Surface of a\n  // Sphere. Ann. Math. Statist. 43 (1972), no. 2, 645--646.\n  // http://projecteuclid.org/euclid.aoms/1177692644;\n\n  var v1, v2, v3, v4;\n  var s1, s2;\n\n  do {\n    v1 = glMatrix.RANDOM() * 2 - 1;\n    v2 = glMatrix.RANDOM() * 2 - 1;\n    s1 = v1 * v1 + v2 * v2;\n  } while (s1 >= 1);\n\n  do {\n    v3 = glMatrix.RANDOM() * 2 - 1;\n    v4 = glMatrix.RANDOM() * 2 - 1;\n    s2 = v3 * v3 + v4 * v4;\n  } while (s2 >= 1);\n\n  var d = Math.sqrt((1 - s1) / s2);\n  out[0] = scale * v1;\n  out[1] = scale * v2;\n  out[2] = scale * v3 * d;\n  out[3] = scale * v4 * d;\n  return out;\n}\n/**\n * Transforms the vec4 with a mat4.\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a the vector to transform\n * @param {ReadonlyMat4} m matrix to transform with\n * @returns {vec4} out\n */\n\nexport function transformMat4(out, a, m) {\n  var x = a[0],\n      y = a[1],\n      z = a[2],\n      w = a[3];\n  out[0] = m[0] * x + m[4] * y + m[8] * z + m[12] * w;\n  out[1] = m[1] * x + m[5] * y + m[9] * z + m[13] * w;\n  out[2] = m[2] * x + m[6] * y + m[10] * z + m[14] * w;\n  out[3] = m[3] * x + m[7] * y + m[11] * z + m[15] * w;\n  return out;\n}\n/**\n * Transforms the vec4 with a quat\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a the vector to transform\n * @param {ReadonlyQuat} q quaternion to transform with\n * @returns {vec4} out\n */\n\nexport function transformQuat(out, a, q) {\n  var x = a[0],\n      y = a[1],\n      z = a[2];\n  var qx = q[0],\n      qy = q[1],\n      qz = q[2],\n      qw = q[3]; // calculate quat * vec\n\n  var ix = qw * x + qy * z - qz * y;\n  var iy = qw * y + qz * x - qx * z;\n  var iz = qw * z + qx * y - qy * x;\n  var iw = -qx * x - qy * y - qz * z; // calculate result * inverse quat\n\n  out[0] = ix * qw + iw * -qx + iy * -qz - iz * -qy;\n  out[1] = iy * qw + iw * -qy + iz * -qx - ix * -qz;\n  out[2] = iz * qw + iw * -qz + ix * -qy - iy * -qx;\n  out[3] = a[3];\n  return out;\n}\n/**\n * Set the components of a vec4 to zero\n *\n * @param {vec4} out the receiving vector\n * @returns {vec4} out\n */\n\nexport function zero(out) {\n  out[0] = 0.0;\n  out[1] = 0.0;\n  out[2] = 0.0;\n  out[3] = 0.0;\n  return out;\n}\n/**\n * Returns a string representation of a vector\n *\n * @param {ReadonlyVec4} a vector to represent as a string\n * @returns {String} string representation of the vector\n */\n\nexport function str(a) {\n  return \"vec4(\" + a[0] + \", \" + a[1] + \", \" + a[2] + \", \" + a[3] + \")\";\n}\n/**\n * Returns whether or not the vectors have exactly the same elements in the same position (when compared with ===)\n *\n * @param {ReadonlyVec4} a The first vector.\n * @param {ReadonlyVec4} b The second vector.\n * @returns {Boolean} True if the vectors are equal, false otherwise.\n */\n\nexport function exactEquals(a, b) {\n  return a[0] === b[0] && a[1] === b[1] && a[2] === b[2] && a[3] === b[3];\n}\n/**\n * Returns whether or not the vectors have approximately the same elements in the same position.\n *\n * @param {ReadonlyVec4} a The first vector.\n * @param {ReadonlyVec4} b The second vector.\n * @returns {Boolean} True if the vectors are equal, false otherwise.\n */\n\nexport function equals(a, b) {\n  var a0 = a[0],\n      a1 = a[1],\n      a2 = a[2],\n      a3 = a[3];\n  var b0 = b[0],\n      b1 = b[1],\n      b2 = b[2],\n      b3 = b[3];\n  return Math.abs(a0 - b0) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a0), Math.abs(b0)) && Math.abs(a1 - b1) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a1), Math.abs(b1)) && Math.abs(a2 - b2) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a2), Math.abs(b2)) && Math.abs(a3 - b3) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a3), Math.abs(b3));\n}\n/**\n * Alias for {@link vec4.subtract}\n * @function\n */\n\nexport var sub = subtract;\n/**\n * Alias for {@link vec4.multiply}\n * @function\n */\n\nexport var mul = multiply;\n/**\n * Alias for {@link vec4.divide}\n * @function\n */\n\nexport var div = divide;\n/**\n * Alias for {@link vec4.distance}\n * @function\n */\n\nexport var dist = distance;\n/**\n * Alias for {@link vec4.squaredDistance}\n * @function\n */\n\nexport var sqrDist = squaredDistance;\n/**\n * Alias for {@link vec4.length}\n * @function\n */\n\nexport var len = length;\n/**\n * Alias for {@link vec4.squaredLength}\n * @function\n */\n\nexport var sqrLen = squaredLength;\n/**\n * Perform some operation over an array of vec4s.\n *\n * @param {Array} a the array of vectors to iterate over\n * @param {Number} stride Number of elements between the start of each vec4. If 0 assumes tightly packed\n * @param {Number} offset Number of elements to skip at the beginning of the array\n * @param {Number} count Number of vec4s to iterate over. If 0 iterates over entire array\n * @param {Function} fn Function to call for each vector in the array\n * @param {Object} [arg] additional argument to pass to fn\n * @returns {Array} a\n * @function\n */\n\nexport var forEach = function () {\n  var vec = create();\n  return function (a, stride, offset, count, fn, arg) {\n    var i, l;\n\n    if (!stride) {\n      stride = 4;\n    }\n\n    if (!offset) {\n      offset = 0;\n    }\n\n    if (count) {\n      l = Math.min(count * stride + offset, a.length);\n    } else {\n      l = a.length;\n    }\n\n    for (i = offset; i < l; i += stride) {\n      vec[0] = a[i];\n      vec[1] = a[i + 1];\n      vec[2] = a[i + 2];\n      vec[3] = a[i + 3];\n      fn(vec, vec, arg);\n      a[i] = vec[0];\n      a[i + 1] = vec[1];\n      a[i + 2] = vec[2];\n      a[i + 3] = vec[3];\n    }\n\n    return a;\n  };\n}();","var libh3 = function (libh3) {\n  libh3 = libh3 || {};\n  var Module = typeof libh3 !== \"undefined\" ? libh3 : {};\n  var moduleOverrides = {};\n  var key;\n\n  for (key in Module) {\n    if (Module.hasOwnProperty(key)) {\n      moduleOverrides[key] = Module[key];\n    }\n  }\n\n  var arguments_ = [];\n  var scriptDirectory = \"\";\n\n  function locateFile(path) {\n    if (Module[\"locateFile\"]) {\n      return Module[\"locateFile\"](path, scriptDirectory);\n    }\n\n    return scriptDirectory + path;\n  }\n\n  var readAsync;\n\n  {\n    if (document.currentScript) {\n      scriptDirectory = document.currentScript.src;\n    }\n\n    if (scriptDirectory.indexOf(\"blob:\") !== 0) {\n      scriptDirectory = scriptDirectory.substr(0, scriptDirectory.lastIndexOf(\"/\") + 1);\n    } else {\n      scriptDirectory = \"\";\n    }\n\n    readAsync = function readAsync(url, onload, onerror) {\n      var xhr = new XMLHttpRequest();\n      xhr.open(\"GET\", url, true);\n      xhr.responseType = \"arraybuffer\";\n\n      xhr.onload = function xhr_onload() {\n        if (xhr.status == 200 || xhr.status == 0 && xhr.response) {\n          onload(xhr.response);\n          return;\n        }\n\n        var data = tryParseAsDataURI(url);\n\n        if (data) {\n          onload(data.buffer);\n          return;\n        }\n\n        onerror();\n      };\n\n      xhr.onerror = onerror;\n      xhr.send(null);\n    };\n  }\n\n  var out = Module[\"print\"] || console.log.bind(console);\n  var err = Module[\"printErr\"] || console.warn.bind(console);\n\n  for (key in moduleOverrides) {\n    if (moduleOverrides.hasOwnProperty(key)) {\n      Module[key] = moduleOverrides[key];\n    }\n  }\n\n  moduleOverrides = null;\n  if (Module[\"arguments\"]) { arguments_ = Module[\"arguments\"]; }\n\n  var tempRet0 = 0;\n\n  var setTempRet0 = function (value) {\n    tempRet0 = value;\n  };\n\n  var getTempRet0 = function () {\n    return tempRet0;\n  };\n\n  var GLOBAL_BASE = 8;\n\n  function setValue(ptr, value, type, noSafe) {\n    type = type || \"i8\";\n    if (type.charAt(type.length - 1) === \"*\") { type = \"i32\"; }\n\n    switch (type) {\n      case \"i1\":\n        HEAP8[ptr >> 0] = value;\n        break;\n\n      case \"i8\":\n        HEAP8[ptr >> 0] = value;\n        break;\n\n      case \"i16\":\n        HEAP16[ptr >> 1] = value;\n        break;\n\n      case \"i32\":\n        HEAP32[ptr >> 2] = value;\n        break;\n\n      case \"i64\":\n        tempI64 = [value >>> 0, (tempDouble = value, +Math_abs(tempDouble) >= +1 ? tempDouble > +0 ? (Math_min(+Math_floor(tempDouble / +4294967296), +4294967295) | 0) >>> 0 : ~~+Math_ceil((tempDouble - +(~~tempDouble >>> 0)) / +4294967296) >>> 0 : 0)], HEAP32[ptr >> 2] = tempI64[0], HEAP32[ptr + 4 >> 2] = tempI64[1];\n        break;\n\n      case \"float\":\n        HEAPF32[ptr >> 2] = value;\n        break;\n\n      case \"double\":\n        HEAPF64[ptr >> 3] = value;\n        break;\n\n      default:\n        abort(\"invalid type for setValue: \" + type);\n    }\n  }\n\n  function getValue(ptr, type, noSafe) {\n    type = type || \"i8\";\n    if (type.charAt(type.length - 1) === \"*\") { type = \"i32\"; }\n\n    switch (type) {\n      case \"i1\":\n        return HEAP8[ptr >> 0];\n\n      case \"i8\":\n        return HEAP8[ptr >> 0];\n\n      case \"i16\":\n        return HEAP16[ptr >> 1];\n\n      case \"i32\":\n        return HEAP32[ptr >> 2];\n\n      case \"i64\":\n        return HEAP32[ptr >> 2];\n\n      case \"float\":\n        return HEAPF32[ptr >> 2];\n\n      case \"double\":\n        return HEAPF64[ptr >> 3];\n\n      default:\n        abort(\"invalid type for getValue: \" + type);\n    }\n\n    return null;\n  }\n\n  var ABORT = false;\n\n  function assert(condition, text) {\n    if (!condition) {\n      abort(\"Assertion failed: \" + text);\n    }\n  }\n\n  function getCFunc(ident) {\n    var func = Module[\"_\" + ident];\n    assert(func, \"Cannot call unknown function \" + ident + \", make sure it is exported\");\n    return func;\n  }\n\n  function ccall(ident, returnType, argTypes, args, opts) {\n    var toC = {\n      \"string\": function (str) {\n        var ret = 0;\n\n        if (str !== null && str !== undefined && str !== 0) {\n          var len = (str.length << 2) + 1;\n          ret = stackAlloc(len);\n          stringToUTF8(str, ret, len);\n        }\n\n        return ret;\n      },\n      \"array\": function (arr) {\n        var ret = stackAlloc(arr.length);\n        writeArrayToMemory(arr, ret);\n        return ret;\n      }\n    };\n\n    function convertReturnValue(ret) {\n      if (returnType === \"string\") { return UTF8ToString(ret); }\n      if (returnType === \"boolean\") { return Boolean(ret); }\n      return ret;\n    }\n\n    var func = getCFunc(ident);\n    var cArgs = [];\n    var stack = 0;\n\n    if (args) {\n      for (var i = 0; i < args.length; i++) {\n        var converter = toC[argTypes[i]];\n\n        if (converter) {\n          if (stack === 0) { stack = stackSave(); }\n          cArgs[i] = converter(args[i]);\n        } else {\n          cArgs[i] = args[i];\n        }\n      }\n    }\n\n    var ret = func.apply(null, cArgs);\n    ret = convertReturnValue(ret);\n    if (stack !== 0) { stackRestore(stack); }\n    return ret;\n  }\n\n  function cwrap(ident, returnType, argTypes, opts) {\n    argTypes = argTypes || [];\n    var numericArgs = argTypes.every(function (type) {\n      return type === \"number\";\n    });\n    var numericRet = returnType !== \"string\";\n\n    if (numericRet && numericArgs && !opts) {\n      return getCFunc(ident);\n    }\n\n    return function () {\n      return ccall(ident, returnType, argTypes, arguments, opts);\n    };\n  }\n  var UTF8Decoder = typeof TextDecoder !== \"undefined\" ? new TextDecoder(\"utf8\") : undefined;\n\n  function UTF8ArrayToString(u8Array, idx, maxBytesToRead) {\n    var endIdx = idx + maxBytesToRead;\n    var endPtr = idx;\n\n    while (u8Array[endPtr] && !(endPtr >= endIdx)) { ++endPtr; }\n\n    if (endPtr - idx > 16 && u8Array.subarray && UTF8Decoder) {\n      return UTF8Decoder.decode(u8Array.subarray(idx, endPtr));\n    } else {\n      var str = \"\";\n\n      while (idx < endPtr) {\n        var u0 = u8Array[idx++];\n\n        if (!(u0 & 128)) {\n          str += String.fromCharCode(u0);\n          continue;\n        }\n\n        var u1 = u8Array[idx++] & 63;\n\n        if ((u0 & 224) == 192) {\n          str += String.fromCharCode((u0 & 31) << 6 | u1);\n          continue;\n        }\n\n        var u2 = u8Array[idx++] & 63;\n\n        if ((u0 & 240) == 224) {\n          u0 = (u0 & 15) << 12 | u1 << 6 | u2;\n        } else {\n          u0 = (u0 & 7) << 18 | u1 << 12 | u2 << 6 | u8Array[idx++] & 63;\n        }\n\n        if (u0 < 65536) {\n          str += String.fromCharCode(u0);\n        } else {\n          var ch = u0 - 65536;\n          str += String.fromCharCode(55296 | ch >> 10, 56320 | ch & 1023);\n        }\n      }\n    }\n\n    return str;\n  }\n\n  function UTF8ToString(ptr, maxBytesToRead) {\n    return ptr ? UTF8ArrayToString(HEAPU8, ptr, maxBytesToRead) : \"\";\n  }\n\n  function stringToUTF8Array(str, outU8Array, outIdx, maxBytesToWrite) {\n    if (!(maxBytesToWrite > 0)) { return 0; }\n    var startIdx = outIdx;\n    var endIdx = outIdx + maxBytesToWrite - 1;\n\n    for (var i = 0; i < str.length; ++i) {\n      var u = str.charCodeAt(i);\n\n      if (u >= 55296 && u <= 57343) {\n        var u1 = str.charCodeAt(++i);\n        u = 65536 + ((u & 1023) << 10) | u1 & 1023;\n      }\n\n      if (u <= 127) {\n        if (outIdx >= endIdx) { break; }\n        outU8Array[outIdx++] = u;\n      } else if (u <= 2047) {\n        if (outIdx + 1 >= endIdx) { break; }\n        outU8Array[outIdx++] = 192 | u >> 6;\n        outU8Array[outIdx++] = 128 | u & 63;\n      } else if (u <= 65535) {\n        if (outIdx + 2 >= endIdx) { break; }\n        outU8Array[outIdx++] = 224 | u >> 12;\n        outU8Array[outIdx++] = 128 | u >> 6 & 63;\n        outU8Array[outIdx++] = 128 | u & 63;\n      } else {\n        if (outIdx + 3 >= endIdx) { break; }\n        outU8Array[outIdx++] = 240 | u >> 18;\n        outU8Array[outIdx++] = 128 | u >> 12 & 63;\n        outU8Array[outIdx++] = 128 | u >> 6 & 63;\n        outU8Array[outIdx++] = 128 | u & 63;\n      }\n    }\n\n    outU8Array[outIdx] = 0;\n    return outIdx - startIdx;\n  }\n\n  function stringToUTF8(str, outPtr, maxBytesToWrite) {\n    return stringToUTF8Array(str, HEAPU8, outPtr, maxBytesToWrite);\n  }\n\n  var UTF16Decoder = typeof TextDecoder !== \"undefined\" ? new TextDecoder(\"utf-16le\") : undefined;\n\n  function writeArrayToMemory(array, buffer) {\n    HEAP8.set(array, buffer);\n  }\n\n  function alignUp(x, multiple) {\n    if (x % multiple > 0) {\n      x += multiple - x % multiple;\n    }\n\n    return x;\n  }\n\n  var buffer, HEAP8, HEAPU8, HEAP16, HEAPU16, HEAP32, HEAPU32, HEAPF32, HEAPF64;\n\n  function updateGlobalBufferAndViews(buf) {\n    buffer = buf;\n    Module[\"HEAP8\"] = HEAP8 = new Int8Array(buf);\n    Module[\"HEAP16\"] = HEAP16 = new Int16Array(buf);\n    Module[\"HEAP32\"] = HEAP32 = new Int32Array(buf);\n    Module[\"HEAPU8\"] = HEAPU8 = new Uint8Array(buf);\n    Module[\"HEAPU16\"] = HEAPU16 = new Uint16Array(buf);\n    Module[\"HEAPU32\"] = HEAPU32 = new Uint32Array(buf);\n    Module[\"HEAPF32\"] = HEAPF32 = new Float32Array(buf);\n    Module[\"HEAPF64\"] = HEAPF64 = new Float64Array(buf);\n  }\n\n  var DYNAMIC_BASE = 5266928,\n      DYNAMICTOP_PTR = 24016;\n  var INITIAL_TOTAL_MEMORY = Module[\"TOTAL_MEMORY\"] || 33554432;\n\n  if (Module[\"buffer\"]) {\n    buffer = Module[\"buffer\"];\n  } else {\n    buffer = new ArrayBuffer(INITIAL_TOTAL_MEMORY);\n  }\n\n  INITIAL_TOTAL_MEMORY = buffer.byteLength;\n  updateGlobalBufferAndViews(buffer);\n  HEAP32[DYNAMICTOP_PTR >> 2] = DYNAMIC_BASE;\n\n  function callRuntimeCallbacks(callbacks) {\n    while (callbacks.length > 0) {\n      var callback = callbacks.shift();\n\n      if (typeof callback == \"function\") {\n        callback();\n        continue;\n      }\n\n      var func = callback.func;\n\n      if (typeof func === \"number\") {\n        if (callback.arg === undefined) {\n          Module[\"dynCall_v\"](func);\n        } else {\n          Module[\"dynCall_vi\"](func, callback.arg);\n        }\n      } else {\n        func(callback.arg === undefined ? null : callback.arg);\n      }\n    }\n  }\n\n  var __ATPRERUN__ = [];\n  var __ATINIT__ = [];\n  var __ATMAIN__ = [];\n  var __ATPOSTRUN__ = [];\n\n  function preRun() {\n    if (Module[\"preRun\"]) {\n      if (typeof Module[\"preRun\"] == \"function\") { Module[\"preRun\"] = [Module[\"preRun\"]]; }\n\n      while (Module[\"preRun\"].length) {\n        addOnPreRun(Module[\"preRun\"].shift());\n      }\n    }\n\n    callRuntimeCallbacks(__ATPRERUN__);\n  }\n\n  function initRuntime() {\n    callRuntimeCallbacks(__ATINIT__);\n  }\n\n  function preMain() {\n    callRuntimeCallbacks(__ATMAIN__);\n  }\n\n  function postRun() {\n    if (Module[\"postRun\"]) {\n      if (typeof Module[\"postRun\"] == \"function\") { Module[\"postRun\"] = [Module[\"postRun\"]]; }\n\n      while (Module[\"postRun\"].length) {\n        addOnPostRun(Module[\"postRun\"].shift());\n      }\n    }\n\n    callRuntimeCallbacks(__ATPOSTRUN__);\n  }\n\n  function addOnPreRun(cb) {\n    __ATPRERUN__.unshift(cb);\n  }\n\n  function addOnPostRun(cb) {\n    __ATPOSTRUN__.unshift(cb);\n  }\n\n  var Math_abs = Math.abs;\n  var Math_ceil = Math.ceil;\n  var Math_floor = Math.floor;\n  var Math_min = Math.min;\n  var runDependencies = 0;\n  var runDependencyWatcher = null;\n  var dependenciesFulfilled = null;\n\n  function addRunDependency(id) {\n    runDependencies++;\n\n    if (Module[\"monitorRunDependencies\"]) {\n      Module[\"monitorRunDependencies\"](runDependencies);\n    }\n  }\n\n  function removeRunDependency(id) {\n    runDependencies--;\n\n    if (Module[\"monitorRunDependencies\"]) {\n      Module[\"monitorRunDependencies\"](runDependencies);\n    }\n\n    if (runDependencies == 0) {\n      if (runDependencyWatcher !== null) {\n        clearInterval(runDependencyWatcher);\n        runDependencyWatcher = null;\n      }\n\n      if (dependenciesFulfilled) {\n        var callback = dependenciesFulfilled;\n        dependenciesFulfilled = null;\n        callback();\n      }\n    }\n  }\n\n  Module[\"preloadedImages\"] = {};\n  Module[\"preloadedAudios\"] = {};\n  var memoryInitializer = null;\n  var dataURIPrefix = \"data:application/octet-stream;base64,\";\n\n  function isDataURI(filename) {\n    return String.prototype.startsWith ? filename.startsWith(dataURIPrefix) : filename.indexOf(dataURIPrefix) === 0;\n  }\n\n  var tempDouble;\n  var tempI64;\n  memoryInitializer = \"data:application/octet-stream;base64,AAAAAAAAAAACAAAAAwAAAAEAAAAFAAAABAAAAAYAAAAAAAAAAAAAAAAAAAABAAAAAgAAAAMAAAAEAAAABQAAAAYAAAABAAAABAAAAAMAAAAGAAAABQAAAAIAAAAAAAAAAgAAAAMAAAABAAAABAAAAAYAAAAAAAAABQAAAAMAAAAGAAAABAAAAAUAAAAAAAAAAQAAAAIAAAAEAAAABQAAAAYAAAAAAAAAAgAAAAMAAAABAAAABQAAAAIAAAAAAAAAAQAAAAMAAAAGAAAABAAAAAYAAAAAAAAABQAAAAIAAAABAAAABAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAgAAAAMAAAAAAAAAAAAAAAIAAAAAAAAAAQAAAAMAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAEAAAABgAAAAAAAAAFAAAAAAAAAAAAAAAEAAAABQAAAAAAAAAAAAAAAAAAAAIAAAAAAAAABgAAAAAAAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAACAAAAAwAAAAQAAAAFAAAABgAAAAEAAAACAAAAAwAAAAQAAAAFAAAABgAAAAAAAAACAAAAAwAAAAQAAAAFAAAABgAAAAAAAAABAAAAAwAAAAQAAAAFAAAABgAAAAAAAAABAAAAAgAAAAQAAAAFAAAABgAAAAAAAAABAAAAAgAAAAMAAAAFAAAABgAAAAAAAAABAAAAAgAAAAMAAAAEAAAABgAAAAAAAAABAAAAAgAAAAMAAAAEAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAADAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAACAAAAAgAAAAAAAAAAAAAABgAAAAAAAAADAAAAAgAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAUAAAAEAAAAAAAAAAEAAAAAAAAAAAAAAAUAAAAFAAAAAAAAAAAAAAAAAAAABgAAAAAAAAAEAAAAAAAAAAYAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAUAAAACAAAABAAAAAMAAAAIAAAA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AAAAAAAAAAAAAAAABQAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAUAAAABAAAAAAAAAAAAAAABAAAAAwAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAQAAAAMAAAAAAAAAAAAAAAEAAAAAAAAAAwAAAAMAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAMAAAAFAAAAAQAAAAAAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAEAAAAAAAAA/////wMAAAAAAAAABQAAAAIAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAQAAAAFAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAwAAAAMAAAADAAAAAwAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAwAAAAUAAAAFAAAAAAAAAAAAAAADAAAAAwAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAMAAAADAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAUAAAAFAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAwAAAAMAAAADAAAAAAAAAAMAAAAAAAAAAAAAAP////8DAAAAAAAAAAUAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAADAAAAAwAAAAAAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAAAAAAEAAAADAAAAAAAAAAAAAAABAAAAAAAAAAMAAAADAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAwAAAAMAAAADAAAAAwAAAAAAAAADAAAAAAAAAAAAAAABAAAAAwAAAAAAAAAAAAAAAQAAAAAAAAADAAAAAwAAAAMAAAADAAAAAAAAAAMAAAAAAAAAAAAAAAMAAAAAAAAAAwAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAAAAAAAAwAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAwAAAAMAAAAAAAAA/////wMAAAAAAAAABQAAAAIAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAMAAAADAAAAAAAAAAAAAAADAAAAAAAAAAAAAAADAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAADAAAABQAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAUAAAAFAAAAAAAAAAAAAAADAAAAAwAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAADAAAAAAAAAAAAAAABAAAAAAAAAAAAAAADAAAAAAAAAAAAAAADAAAAAwAAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAwAAAAAAAAAAAAAAAwAAAAMAAAADAAAAAAAAAAMAAAAAAAAAAAAAAAMAAAADAAAAAwAAAAAAAAADAAAAAAAAAAAAAAD/////AwAAAAAAAAAFAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAAAAAADAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAADAAAAAwAAAAAAAAAAAAAAAwAAAAAAAAADAAAAAAAAAAMAAAAAAAAAAwAAAAMAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAMAAAAAAAAAAwAAAAAAAAAAAAAAAwAAAAAAAAAAAAAAAwAAAAMAAAAAAAAAAwAAAAMAAAADAAAAAAAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAADAAAAAAAAAAAAAAD/////AwAAAAAAAAAFAAAAAgAAAAAAAAAAAAAAAwAAAAMAAAADAAAAAwAAAAMAAAAAAAAAAAAAAAMAAAADAAAAAwAAAAMAAAADAAAAAAAAAAAAAAADAAAAAwAAAAMAAAADAAAAAAAAAAMAAAAAAAAAAwAAAAMAAAADAAAAAwAAAAAAAAADAAAAAAAAAP////8DAAAAAAAAAAUAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAMAAAAAAAAAAwAAAAMAAAADAAAAAAAAAAMAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAADAAAAAwAAAAAAAAADAAAAAAAAAAAAAAADAAAAAwAAAAAAAAAAAAAAAwAAAAMAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAMAAAADAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAAAAAAAAwAAAAMAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAMAAAAAAAAAAAAAAP////8DAAAAAAAAAAUAAAACAAAAAAAAAAAAAAADAAAAAwAAAAMAAAAAAAAAAAAAAAMAAAAAAAAAAwAAAAMAAAADAAAAAAAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAAAAAAAAwAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAwAAAAMAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAUAAAAAAAAAAAAAAAMAAAADAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAMAAAABAAAAAAAAAAEAAAAAAAAAAAAAAAEAAAADAAAAAQAAAAAAAAABAAAAAAAAAAAAAAADAAAAAAAAAAMAAAAAAAAAAwAAAAAAAAAAAAAAAwAAAAAAAAADAAAAAAAAAAMAAAAAAAAA/////wMAAAAAAAAABQAAAAIAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAAAAAADAAAAAwAAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAwAAAAAAAAAAAAAAAwAAAAAAAAAAAAAAAwAAAAMAAAAAAAAAAAAAAAMAAAADAAAAAwAAAAMAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAAABQAAAAAAAAAAAAAAAwAAAAMAAAADAAAAAwAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAADAAAAAwAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAUAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAUAAAAFAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAAAAAAAAwAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAADAAAAAAAAAAAAAAD/////AwAAAAAAAAAFAAAAAgAAAAAAAAAAAAAAAwAAAAMAAAADAAAAAAAAAAAAAAADAAAAAAAAAAUAAAAAAAAAAAAAAAUAAAAFAAAAAAAAAAAAAAAAAAAAAQAAAAMAAAABAAAAAAAAAAEAAAAAAAAAAwAAAAMAAAADAAAAAAAAAAAAAAADAAAAAAAAAAMAAAADAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAMAAAABAAAAAAAAAAEAAAAAAAAAAwAAAAMAAAADAAAAAwAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAQAAAAAAAAADAAAABQAAAAEAAAAAAAAA/////wMAAAAAAAAABQAAAAIAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAUAAAAFAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAEAAAABQAAAAEAAAAAAAAAAwAAAAMAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAgAAAAUAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAQAAAAMAAAABAAAAAAAAAAEAAAAAAAAABQAAAAAAAAAAAAAABQAAAAUAAAAAAAAAAAAAAP////8BAAAAAAAAAAMAAAAEAAAAAgAAAAAAAAAAAAAAAQAAAAAAAAAAAAAABQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAUAAAAAAAAAAAAAAAUAAAAFAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAABAAAABQAAAAEAAAAAAAAAAAAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAQAAAP//////////AQAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAMAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAACwAAAAIAAAAAAAAAAAAAAAEAAAACAAAABgAAAAQAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAEAAAABAAAAAAAAAAAAAAAAAAAABwAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAoAAAACAAAAAAAAAAAAAAABAAAAAQAAAAUAAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAsAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAHAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAACwAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAIAAAAAAAAAAAAAAAEAAAADAAAABwAAAAYAAAABAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAHAAAAAQAAAAAAAAABAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAEAAAABAAAAAAAAAAAAAAAAAAAABAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAOAAAAAgAAAAAAAAAAAAAAAQAAAAAAAAAJAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAwAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAHAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAgAAAAAAAAAAAAAAAQAAAAQAAAAIAAAACgAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAsAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAJAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAACAAAAAAAAAAAAAAABAAAACwAAAA8AAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA4AAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAgAAAABAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAFAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcAAAACAAAAAAAAAAAAAAABAAAADAAAABAAAAAMAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAACgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA8AAAAAAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAPAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAA4AAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAIAAAAAAAAAAAAAAAEAAAAKAAAAEwAAAAgAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQAAAAEAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA4AAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAARAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARAAAAAAAAAAEAAAABAAAAAAAAAAAAAAAAAAAADwAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAABAAAAABAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAJAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAgAAAAAAAAAAAAAAAQAAAA0AAAARAAAADQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAABEAAAABAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAATAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAABMAAAAAAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAARAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAABEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQAAAAIAAAAAAAAAAAAAAAEAAAAOAAAAEgAAAA8AAAABAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAPAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEgAAAAAAAAABAAAAAQAAAAAAAAAAAAAAAAAAABIAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAATAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAEQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAEgAAAAEAAAAAAAAAAQAAAAAAAAAAAAAAAAAAABMAAAACAAAAAAAAAAAAAAABAAAA//////////8TAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABMAAAABAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAASAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAABIAAAAAAAAAGAAAAAAAAAAhAAAAAAAAAB4AAAAAAAAAIAAAAAMAAAAxAAAAAQAAADAAAAADAAAAMgAAAAMAAAAIAAAAAAAAAAUAAAAFAAAACgAAAAUAAAAWAAAAAAAAABAAAAAAAAAAEgAAAAAAAAApAAAAAQAAACEAAAAAAAAAHgAAAAAAAAAEAAAAAAAAAAAAAAAFAAAAAgAAAAUAAAAPAAAAAQAAAAgAAAAAAAAABQAAAAUAAAAfAAAAAQAAABYAAAAAAAAAEAAAAAAAAAACAAAAAAAAAAYAAAAAAAAADgAAAAAAAAAKAAAAAAAAAAsAAAAAAAAAEQAAAAMAAAAYAAAAAQAAABcAAAADAAAAGQAAAAMAAAAAAAAAAAAAAAEAAAAFAAAACQAAAAUAAAAFAAAAAAAAAAIAAAAAAAAABgAAAAAAAAASAAAAAQAAAAoAAAAAAAAACwAAAAAAAAAEAAAAAQAAAAMAAAAFAAAABwAAAAUAAAAIAAAAAQAAAAAAAAAAAAAAAQAAAAUAAAAQAAAAAQAAAAUAAAAAAAAAAgAAAAAAAAAHAAAAAAAAABUAAAAAAAAAJgAAAAAAAAAJAAAAAAAAABMAAAAAAAAAIgAAAAMAAAAOAAAAAQAAABQAAAADAAAAJAAAAAMAAAADAAAAAAAAAA0AAAAFAAAAHQAAAAUAAAABAAAAAAAAAAcAAAAAAAAAFQAAAAAAAAAGAAAA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74auECWhw7+cjSACjzniv8CZ+wUhN9I/1uGEKzup6z+/GYr/04bavwmkNHp7xee/F2NMZVAA1z+82s+x2BLivwr2ytbJ9em/KwEH1sMS1r8yp/2LhTfev81i5RexJsy/BlIKPVwR5b95Wyu0/Qjnv5DjoT7YYcs/nBhKZ6zrwr8wRYS7Nebuv3OW6geh+Lu/SLrixebL3j+pcyymN9Xrv8rHIFfWehZAMBwUdlo0DECTUc17EOb2PxpVB1SWChdAzjbhb9pTDUDQhmdvECX5P9FlMKCC9+g/IIAzjELgE0DajDngMv8GQFhWDmDPjNs/y1guLh96EkAxPi8k7DIEQJCc4URlhRhA3eLKKLwkEECqpNAyTBD/P6xpjXcDiwVAFtl//cQm4z+Ibt3XKiYTQM7mCLUb3QdAoM1t8yVv7D8aLZv2Nk8UQEAJPV5nQwxAtSsfTCoE9z9TPjXLXIIWQBVanC5W9AtAYM3d7Adm9j++5mQz1FoWQBUThyaVBghAwH5muQsV7T89Q1qv82MUQJoWGOfNuBdAzrkClkmwDkDQjKq77t37Py+g0dtitsE/ZwAMTwVPEUBojepluNwBQGYbtuW+t9w/HNWIJs6MEkDTNuQUSlgEQKxktPP5TcQ/ixbLB8JjEUCwuWjXMQYCQAS/R09FkRdAowpiZjhhDkB7LmlczD/7P01iQmhhsAVAnrtTwDy84z/Z6jfQ2TgTQChOCXMnWwpAhrW3daoz8z/HYJvVPI4VQLT3ik5FcA5Angi7LOZd+z+NNVzDy5gXQBXdvVTFUA1AYNMgOeYe+T8+qHXGCwkXQKQTOKwa5AJA8gFVoEMW0T+FwzJyttIRQAEAAAD/////BwAAAP////8xAAAA/////1cBAAD/////YQkAAP////+nQQAA/////5HLAQD/////95AMAP/////B9lcAAAAAAAAAAAAAAAAAAgAAAP////8OAAAA/////2IAAAD/////rgIAAP/////CEgAA/////06DAAD/////IpcDAP/////uIRkA/////4LtrwAAAAAAAAAAAAAAAAAAAAAAAgAAAP//////////AQAAAAMAAAD//////////////////////////////////////////////////////////////////////////wEAAAAAAAAAAgAAAP///////////////wMAAAD//////////////////////////////////////////////////////////////////////////wEAAAAAAAAAAgAAAP///////////////wMAAAD//////////////////////////////////////////////////////////////////////////wEAAAAAAAAAAgAAAP///////////////wMAAAD//////////////////////////////////////////////////////////wIAAAD//////////wEAAAAAAAAA/////////////////////wMAAAD/////////////////////////////////////////////////////AwAAAP////////////////////8AAAAA/////////////////////wEAAAD///////////////8CAAAA////////////////////////////////AwAAAP////////////////////8AAAAA////////////////AgAAAAEAAAD/////////////////////////////////////////////////////AwAAAP////////////////////8AAAAA////////////////AgAAAAEAAAD/////////////////////////////////////////////////////AwAAAP////////////////////8AAAAA////////////////AgAAAAEAAAD/////////////////////////////////////////////////////AwAAAP////////////////////8AAAAA////////////////AgAAAAEAAAD/////////////////////////////////////////////////////AQAAAAIAAAD///////////////8AAAAA/////////////////////wMAAAD/////////////////////////////////////////////////////AQAAAAIAAAD///////////////8AAAAA/////////////////////wMAAAD/////////////////////////////////////////////////////AQAAAAIAAAD///////////////8AAAAA/////////////////////wMAAAD/////////////////////////////////////////////////////AQAAAAIAAAD///////////////8AAAAA/////////////////////wMAAAD///////////////////////////////8CAAAA////////////////AQAAAP////////////////////8AAAAA/////////////////////wMAAAD/////////////////////////////////////////////////////AwAAAP////////////////////8AAAAAAQAAAP//////////AgAAAP//////////////////////////////////////////////////////////AwAAAP///////////////wIAAAAAAAAAAQAAAP//////////////////////////////////////////////////////////////////////////AwAAAP///////////////wIAAAAAAAAAAQAAAP//////////////////////////////////////////////////////////////////////////AwAAAP///////////////wIAAAAAAAAAAQAAAP//////////////////////////////////////////////////////////////////////////AwAAAAEAAAD//////////wIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAgAAAAAAAAACAAAAAQAAAAEAAAACAAAAAgAAAAAAAAAFAAAABQAAAAAAAAACAAAAAgAAAAMAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAIAAAABAAAAAgAAAAIAAAACAAAAAAAAAAUAAAAGAAAAAAAAAAIAAAACAAAAAwAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAIAAAAAAAAAAgAAAAEAAAADAAAAAgAAAAIAAAAAAAAABQAAAAcAAAAAAAAAAgAAAAIAAAADAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAgAAAAAAAAACAAAAAQAAAAQAAAACAAAAAgAAAAAAAAAFAAAACAAAAAAAAAACAAAAAgAAAAMAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAACAAAAAAAAAAIAAAABAAAAAAAAAAIAAAACAAAAAAAAAAUAAAAJAAAAAAAAAAIAAAACAAAAAwAAAAUAAAAAAAAAAAAAAAAAAAAAAAAACgAAAAIAAAACAAAAAAAAAAMAAAAOAAAAAgAAAAAAAAACAAAAAwAAAAAAAAAAAAAAAgAAAAIAAAADAAAABgAAAAAAAAAAAAAAAAAAAAAAAAALAAAAAgAAAAIAAAAAAAAAAwAAAAoAAAACAAAAAAAAAAIAAAADAAAAAQAAAAAAAAACAAAAAgAAAAMAAAAHAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAACAAAAAgAAAAAAAAADAAAACwAAAAIAAAAAAAAAAgAAAAMAAAACAAAAAAAAAAIAAAACAAAAAwAAAAgAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAIAAAACAAAAAAAAAAMAAAAMAAAAAgAAAAAAAAACAAAAAwAAAAMAAAAAAAAAAgAAAAIAAAADAAAACQAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAgAAAAIAAAAAAAAAAwAAAA0AAAACAAAAAAAAAAIAAAADAAAABAAAAAAAAAACAAAAAgAAAAMAAAAKAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAACAAAAAgAAAAAAAAADAAAABgAAAAIAAAAAAAAAAgAAAAMAAAAPAAAAAAAAAAIAAAACAAAAAwAAAAsAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAIAAAACAAAAAAAAAAMAAAAHAAAAAgAAAAAAAAACAAAAAwAAABAAAAAAAAAAAgAAAAIAAAADAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAHAAAAAgAAAAIAAAAAAAAAAwAAAAgAAAACAAAAAAAAAAIAAAADAAAAEQAAAAAAAAACAAAAAgAAAAMAAAANAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAACAAAAAgAAAAAAAAADAAAACQAAAAIAAAAAAAAAAgAAAAMAAAASAAAAAAAAAAIAAAACAAAAAwAAAA4AAAAAAAAAAAAAAAAAAAAAAAAACQAAAAIAAAACAAAAAAAAAAMAAAAFAAAAAgAAAAAAAAACAAAAAwAAABMAAAAAAAAAAgAAAAIAAAADAAAA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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/////////////////////////////////////wAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAUAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////////////////////////////////////8AAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAABAAAAAAAAAAAAAAABAAAAAQAAAAEAAAAAAAAAAQAAAAAAAAAFAAAAAQAAAAEAAAAAAAAAAAAAAAEAAAABAAAAAAAAAAEAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAAAAAAABAAEAAAEBAAAAAAABAAAAAQAAAAEAAQAAAAAAAAAAAAAAAAAAAAAEAAAABAAAAAAAAAACAAAAAQAAAAMAAAAOAAAABgAAAAsAAAACAAAABwAAAAEAAAAYAAAABQAAAAoAAAABAAAABgAAAAAAAAAmAAAABwAAAAwAAAADAAAACAAAAAIAAAAxAAAACQAAAA4AAAAAAAAABQAAAAQAAAA6AAAACAAAAA0AAAAEAAAACQAAAAMAAAA/AAAACwAAAAYAAAAPAAAACgAAABAAAABIAAAADAAAAAcAAAAQAAAACwAAABEAAABTAAAACgAAAAUAAAATAAAADgAAAA8AAABhAAAADQAAAAgAAAARAAAADAAAABIAAABrAAAADgAAAAkAAAASAAAADQAAABMAAAB1AAAADwAAABMAAAARAAAAEgAAABAAAAAHAAAABwAAAAEAAAACAAAABAAAAAMAAAAAAAAAAAAAAAcAAAADAAAAAQAAAAIAAAAFAAAABAAAAAAAAAAAAAAAYWxnb3MuYwBfcG9seWZpbGxJbnRlcm5hbABhZGphY2VudEZhY2VEaXJbdG1wRmlqay5mYWNlXVtmaWprLmZhY2VdID09IEtJAGZhY2VpamsuYwBfZmFjZUlqa1BlbnRUb0dlb0JvdW5kYXJ5AGFkamFjZW50RmFjZURpcltjZW50ZXJJSksuZmFjZV1bZmFjZTJdID09IEtJAF9mYWNlSWprVG9HZW9Cb3VuZGFyeQBwb2x5Z29uLT5uZXh0ID09IE5VTEwAbGlua2VkR2VvLmMAYWRkTmV3TGlua2VkUG9seWdvbgBuZXh0ICE9IE5VTEwAbG9vcCAhPSBOVUxMAGFkZE5ld0xpbmtlZExvb3AAcG9seWdvbi0+Zmlyc3QgPT0gTlVMTABhZGRMaW5rZWRMb29wAGNvb3JkICE9IE5VTEwAYWRkTGlua2VkQ29vcmQAbG9vcC0+Zmlyc3QgPT0gTlVMTABpbm5lckxvb3BzICE9IE5VTEwAbm9ybWFsaXplTXVsdGlQb2x5Z29uAGJib3hlcyAhPSBOVUxMAGNhbmRpZGF0ZXMgIT0gTlVMTABmaW5kUG9seWdvbkZvckhvbGUAY2FuZGlkYXRlQkJveGVzICE9IE5VTEwAcmV2RGlyICE9IElOVkFMSURfRElHSVQAbG9jYWxpai5jAGgzVG9Mb2NhbElqawBiYXNlQ2VsbCAhPSBvcmlnaW5CYXNlQ2VsbAAhKG9yaWdpbk9uUGVudCAmJiBpbmRleE9uUGVudCkAcGVudGFnb25Sb3RhdGlvbnMgPj0gMABkaXJlY3Rpb25Sb3RhdGlvbnMgPj0gMABiYXNlQ2VsbCA9PSBvcmlnaW5CYXNlQ2VsbABiYXNlQ2VsbCAhPSBJTlZBTElEX0JBU0VfQ0VMTABsb2NhbElqa1RvSDMAIV9pc0Jhc2VDZWxsUGVudGFnb24oYmFzZUNlbGwpAGJhc2VDZWxsUm90YXRpb25zID49IDAAd2l0aGluUGVudGFnb25Sb3RhdGlvbnMgPj0gMABncmFwaC0+YnVja2V0cyAhPSBOVUxMAHZlcnRleEdyYXBoLmMAaW5pdFZlcnRleEdyYXBoAG5vZGUgIT0gTlVMTABhZGRWZXJ0ZXhOb2Rl\";\n  var tempDoublePtr = 24032;\n\n  function demangle(func) {\n    return func;\n  }\n\n  function demangleAll(text) {\n    var regex = /\\b__Z[\\w\\d_]+/g;\n    return text.replace(regex, function (x) {\n      var y = demangle(x);\n      return x === y ? x : y + \" [\" + x + \"]\";\n    });\n  }\n\n  function jsStackTrace() {\n    var err = new Error();\n\n    if (!err.stack) {\n      try {\n        throw new Error(0);\n      } catch (e) {\n        err = e;\n      }\n\n      if (!err.stack) {\n        return \"(no stack trace available)\";\n      }\n    }\n\n    return err.stack.toString();\n  }\n\n  function stackTrace() {\n    var js = jsStackTrace();\n    if (Module[\"extraStackTrace\"]) { js += \"\\n\" + Module[\"extraStackTrace\"](); }\n    return demangleAll(js);\n  }\n\n  function ___assert_fail(condition, filename, line, func) {\n    abort(\"Assertion failed: \" + UTF8ToString(condition) + \", at: \" + [filename ? UTF8ToString(filename) : \"unknown filename\", line, func ? UTF8ToString(func) : \"unknown function\"]);\n  }\n\n  function _emscripten_get_heap_size() {\n    return HEAP8.length;\n  }\n\n  function _emscripten_memcpy_big(dest, src, num) {\n    HEAPU8.set(HEAPU8.subarray(src, src + num), dest);\n  }\n\n  function ___setErrNo(value) {\n    if (Module[\"___errno_location\"]) { HEAP32[Module[\"___errno_location\"]() >> 2] = value; }\n    return value;\n  }\n\n  function abortOnCannotGrowMemory(requestedSize) {\n    abort(\"OOM\");\n  }\n\n  function emscripten_realloc_buffer(size) {\n    try {\n      var newBuffer = new ArrayBuffer(size);\n      if (newBuffer.byteLength != size) { return; }\n      new Int8Array(newBuffer).set(HEAP8);\n\n      _emscripten_replace_memory(newBuffer);\n\n      updateGlobalBufferAndViews(newBuffer);\n      return 1;\n    } catch (e) {}\n  }\n\n  function _emscripten_resize_heap(requestedSize) {\n    var oldSize = _emscripten_get_heap_size();\n\n    var PAGE_MULTIPLE = 16777216;\n    var LIMIT = 2147483648 - PAGE_MULTIPLE;\n\n    if (requestedSize > LIMIT) {\n      return false;\n    }\n\n    var MIN_TOTAL_MEMORY = 16777216;\n    var newSize = Math.max(oldSize, MIN_TOTAL_MEMORY);\n\n    while (newSize < requestedSize) {\n      if (newSize <= 536870912) {\n        newSize = alignUp(2 * newSize, PAGE_MULTIPLE);\n      } else {\n        newSize = Math.min(alignUp((3 * newSize + 2147483648) / 4, PAGE_MULTIPLE), LIMIT);\n      }\n    }\n\n    var replacement = emscripten_realloc_buffer(newSize);\n\n    if (!replacement) {\n      return false;\n    }\n\n    return true;\n  }\n\n  var decodeBase64 = typeof atob === \"function\" ? atob : function (input) {\n    var keyStr = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";\n    var output = \"\";\n    var chr1, chr2, chr3;\n    var enc1, enc2, enc3, enc4;\n    var i = 0;\n    input = input.replace(/[^A-Za-z0-9\\+\\/\\=]/g, \"\");\n\n    do {\n      enc1 = keyStr.indexOf(input.charAt(i++));\n      enc2 = keyStr.indexOf(input.charAt(i++));\n      enc3 = keyStr.indexOf(input.charAt(i++));\n      enc4 = keyStr.indexOf(input.charAt(i++));\n      chr1 = enc1 << 2 | enc2 >> 4;\n      chr2 = (enc2 & 15) << 4 | enc3 >> 2;\n      chr3 = (enc3 & 3) << 6 | enc4;\n      output = output + String.fromCharCode(chr1);\n\n      if (enc3 !== 64) {\n        output = output + String.fromCharCode(chr2);\n      }\n\n      if (enc4 !== 64) {\n        output = output + String.fromCharCode(chr3);\n      }\n    } while (i < input.length);\n\n    return output;\n  };\n\n  function intArrayFromBase64(s) {\n    try {\n      var decoded = decodeBase64(s);\n      var bytes = new Uint8Array(decoded.length);\n\n      for (var i = 0; i < decoded.length; ++i) {\n        bytes[i] = decoded.charCodeAt(i);\n      }\n\n      return bytes;\n    } catch (_) {\n      throw new Error(\"Converting base64 string to bytes failed.\");\n    }\n  }\n\n  function tryParseAsDataURI(filename) {\n    if (!isDataURI(filename)) {\n      return;\n    }\n\n    return intArrayFromBase64(filename.slice(dataURIPrefix.length));\n  }\n\n  var asmGlobalArg = {\n    \"Math\": Math,\n    \"Int8Array\": Int8Array,\n    \"Int32Array\": Int32Array,\n    \"Uint8Array\": Uint8Array,\n    \"Float32Array\": Float32Array,\n    \"Float64Array\": Float64Array\n  };\n  var asmLibraryArg = {\n    \"a\": abort,\n    \"b\": setTempRet0,\n    \"c\": getTempRet0,\n    \"d\": ___assert_fail,\n    \"e\": ___setErrNo,\n    \"f\": _emscripten_get_heap_size,\n    \"g\": _emscripten_memcpy_big,\n    \"h\": _emscripten_resize_heap,\n    \"i\": abortOnCannotGrowMemory,\n    \"j\": demangle,\n    \"k\": demangleAll,\n    \"l\": emscripten_realloc_buffer,\n    \"m\": jsStackTrace,\n    \"n\": stackTrace,\n    \"o\": tempDoublePtr,\n    \"p\": DYNAMICTOP_PTR\n  }; // EMSCRIPTEN_START_ASM\n\n  var asm =\n  /** @suppress {uselessCode} */\n  function (global, env, buffer) {\n    \"almost asm\";\n\n    var a = new global.Int8Array(buffer),\n        b = new global.Int32Array(buffer),\n        c = new global.Uint8Array(buffer),\n        d = new global.Float32Array(buffer),\n        e = new global.Float64Array(buffer),\n        g = env.p | 0,\n        p = global.Math.floor,\n        q = global.Math.abs,\n        r = global.Math.sqrt,\n        s = global.Math.pow,\n        t = global.Math.cos,\n        u = global.Math.sin,\n        v = global.Math.tan,\n        w = global.Math.acos,\n        x = global.Math.asin,\n        y = global.Math.atan,\n        z = global.Math.atan2,\n        A = global.Math.ceil,\n        B = global.Math.imul,\n        C = global.Math.min,\n        D = global.Math.clz32,\n        F = env.b,\n        G = env.c,\n        H = env.d,\n        I = env.e,\n        J = env.f,\n        K = env.g,\n        L = env.h,\n        M = env.i,\n        S = 24048;\n\n    function V(newBuffer) {\n      a = new Int8Array(newBuffer);\n      c = new Uint8Array(newBuffer);\n      b = new Int32Array(newBuffer);\n      d = new Float32Array(newBuffer);\n      e = new Float64Array(newBuffer);\n      buffer = newBuffer;\n      return true;\n    } // EMSCRIPTEN_START_FUNCS\n\n\n    function W(a) {\n      a = a | 0;\n      var b = 0;\n      b = S;\n      S = S + a | 0;\n      S = S + 15 & -16;\n      return b | 0;\n    }\n\n    function X() {\n      return S | 0;\n    }\n\n    function Y(a) {\n      a = a | 0;\n      S = a;\n    }\n\n    function Z(a, b) {\n      a = a | 0;\n      b = b | 0;\n      S = a;\n    }\n\n    function _(a) {\n      a = a | 0;\n      return (B(a * 3 | 0, a + 1 | 0) | 0) + 1 | 0;\n    }\n\n    function $(a, b, c, d) {\n      a = a | 0;\n      b = b | 0;\n      c = c | 0;\n      d = d | 0;\n      var e = 0,\n          f = 0;\n      if (!(ba(a, b, c, d, 0) | 0)) { return; }\n      f = (B(c * 3 | 0, c + 1 | 0) | 0) + 1 | 0;\n      hd(d | 0, 0, f << 3 | 0) | 0;\n      e = Yc(f, 4) | 0;\n      if (!e) { return; }\n      ca(a, b, c, d, e, f, 0);\n      Xc(e);\n      return;\n    }\n\n    function aa(a, b, c, d, e) {\n      a = a | 0;\n      b = b | 0;\n      c = c | 0;\n      d = d | 0;\n      e = e | 0;\n      var f = 0;\n      if (!(ba(a, b, c, d, e) | 0)) { return; }\n      f = (B(c * 3 | 0, c + 1 | 0) | 0) + 1 | 0;\n      hd(d | 0, 0, f << 3 | 0) | 0;\n\n      if (e | 0) {\n        hd(e | 0, 0, f << 2 | 0) | 0;\n        ca(a, b, c, d, e, f, 0);\n        return;\n      }\n\n      e = Yc(f, 4) | 0;\n      if (!e) { return; }\n      ca(a, b, c, d, e, f, 0);\n      Xc(e);\n      return;\n    }\n\n    function ba(a, c, d, e, f) {\n      a = a | 0;\n      c = c | 0;\n      d = d | 0;\n      e = e | 0;\n      f = f | 0;\n      var g = 0,\n          h = 0,\n          i = 0,\n          j = 0,\n          k = 0,\n          l = 0,\n          m = 0,\n          n = 0,\n          o = 0;\n      o = S;\n      S = S + 16 | 0;\n      n = o;\n      g = e;\n      b[g >> 2] = a;\n      b[g + 4 >> 2] = c;\n      g = (f | 0) != 0;\n      if (g) { b[f >> 2] = 0; }\n\n      if (Fb(a, c) | 0) {\n        n = 1;\n        S = o;\n        return n | 0;\n      }\n\n      b[n >> 2] = 0;\n\n      a: do { if ((d | 0) >= 1) {\n        if (g) {\n          k = 0;\n          l = 1;\n          m = 1;\n          h = 0;\n          g = a;\n\n          while (1) {\n            if (!(h | k)) {\n              g = da(g, c, 4, n) | 0;\n              c = G() | 0;\n\n              if ((g | 0) == 0 & (c | 0) == 0) {\n                g = 2;\n                break a;\n              }\n\n              if (Fb(g, c) | 0) {\n                g = 1;\n                break a;\n              }\n            }\n\n            g = da(g, c, b[16 + (k << 2) >> 2] | 0, n) | 0;\n            c = G() | 0;\n\n            if ((g | 0) == 0 & (c | 0) == 0) {\n              g = 2;\n              break a;\n            }\n\n            a = e + (m << 3) | 0;\n            b[a >> 2] = g;\n            b[a + 4 >> 2] = c;\n            b[f + (m << 2) >> 2] = l;\n            h = h + 1 | 0;\n            a = (h | 0) == (l | 0);\n            i = k + 1 | 0;\n            j = (i | 0) == 6;\n\n            if (Fb(g, c) | 0) {\n              g = 1;\n              break a;\n            }\n\n            l = l + (j & a & 1) | 0;\n\n            if ((l | 0) > (d | 0)) {\n              g = 0;\n              break;\n            } else {\n              k = a ? j ? 0 : i : k;\n              m = m + 1 | 0;\n              h = a ? 0 : h;\n            }\n          }\n        } else {\n          k = 0;\n          l = 1;\n          m = 1;\n          h = 0;\n          g = a;\n\n          while (1) {\n            if (!(h | k)) {\n              g = da(g, c, 4, n) | 0;\n              c = G() | 0;\n\n              if ((g | 0) == 0 & (c | 0) == 0) {\n                g = 2;\n                break a;\n              }\n\n              if (Fb(g, c) | 0) {\n                g = 1;\n                break a;\n              }\n            }\n\n            g = da(g, c, b[16 + (k << 2) >> 2] | 0, n) | 0;\n            c = G() | 0;\n\n            if ((g | 0) == 0 & (c | 0) == 0) {\n              g = 2;\n              break a;\n            }\n\n            a = e + (m << 3) | 0;\n            b[a >> 2] = g;\n            b[a + 4 >> 2] = c;\n            h = h + 1 | 0;\n            a = (h | 0) == (l | 0);\n            i = k + 1 | 0;\n            j = (i | 0) == 6;\n\n            if (Fb(g, c) | 0) {\n              g = 1;\n              break a;\n            }\n\n            l = l + (j & a & 1) | 0;\n\n            if ((l | 0) > (d | 0)) {\n              g = 0;\n              break;\n            } else {\n              k = a ? j ? 0 : i : k;\n              m = m + 1 | 0;\n              h = a ? 0 : h;\n            }\n          }\n        }\n      } else { g = 0; } } while (0);\n\n      n = g;\n      S = o;\n      return n | 0;\n    }\n\n    function ca(a, c, d, e, f, g, h) {\n      a = a | 0;\n      c = c | 0;\n      d = d | 0;\n      e = e | 0;\n      f = f | 0;\n      g = g | 0;\n      h = h | 0;\n      var i = 0,\n          j = 0,\n          k = 0,\n          l = 0,\n          m = 0,\n          n = 0,\n          o = 0;\n      m = S;\n      S = S + 16 | 0;\n      l = m;\n\n      if ((a | 0) == 0 & (c | 0) == 0) {\n        S = m;\n        return;\n      }\n\n      i = bd(a | 0, c | 0, g | 0, ((g | 0) < 0) << 31 >> 31 | 0) | 0;\n      G() | 0;\n      j = e + (i << 3) | 0;\n      n = j;\n      o = b[n >> 2] | 0;\n      n = b[n + 4 >> 2] | 0;\n      k = (o | 0) == (a | 0) & (n | 0) == (c | 0);\n      if (!((o | 0) == 0 & (n | 0) == 0 | k)) { do {\n        i = (i + 1 | 0) % (g | 0) | 0;\n        j = e + (i << 3) | 0;\n        o = j;\n        n = b[o >> 2] | 0;\n        o = b[o + 4 >> 2] | 0;\n        k = (n | 0) == (a | 0) & (o | 0) == (c | 0);\n      } while (!((n | 0) == 0 & (o | 0) == 0 | k)); }\n      i = f + (i << 2) | 0;\n\n      if (k ? (b[i >> 2] | 0) <= (h | 0) : 0) {\n        S = m;\n        return;\n      }\n\n      o = j;\n      b[o >> 2] = a;\n      b[o + 4 >> 2] = c;\n      b[i >> 2] = h;\n\n      if ((h | 0) >= (d | 0)) {\n        S = m;\n        return;\n      }\n\n      o = h + 1 | 0;\n      b[l >> 2] = 0;\n      n = da(a, c, 2, l) | 0;\n      ca(n, G() | 0, d, e, f, g, o);\n      b[l >> 2] = 0;\n      n = da(a, c, 3, l) | 0;\n      ca(n, G() | 0, d, e, f, g, o);\n      b[l >> 2] = 0;\n      n = da(a, c, 1, l) | 0;\n      ca(n, G() | 0, d, e, f, g, o);\n      b[l >> 2] = 0;\n      n = da(a, c, 5, l) | 0;\n      ca(n, G() | 0, d, e, f, g, o);\n      b[l >> 2] = 0;\n      n = da(a, c, 4, l) | 0;\n      ca(n, G() | 0, d, e, f, g, o);\n      b[l >> 2] = 0;\n      n = da(a, c, 6, l) | 0;\n      ca(n, G() | 0, d, e, f, g, o);\n      S = m;\n      return;\n    }\n\n    function da(a, c, d, e) {\n      a = a | 0;\n      c = c | 0;\n      d = d | 0;\n      e = e | 0;\n      var f = 0,\n          g = 0,\n          h = 0,\n          i = 0,\n          j = 0,\n          k = 0,\n          l = 0,\n          m = 0,\n          n = 0,\n          o = 0;\n\n      if ((b[e >> 2] | 0) > 0) {\n        f = 0;\n\n        do {\n          d = Pa(d) | 0;\n          f = f + 1 | 0;\n        } while ((f | 0) < (b[e >> 2] | 0));\n      }\n\n      i = cd(a | 0, c | 0, 45) | 0;\n      G() | 0;\n      j = i & 127;\n      g = Lb(a, c) | 0;\n      f = cd(a | 0, c | 0, 52) | 0;\n      G() | 0;\n      f = f & 15;\n\n      a: do { if (!f) { h = 6; }else { while (1) {\n        m = (15 - f | 0) * 3 | 0;\n        n = cd(a | 0, c | 0, m | 0) | 0;\n        G() | 0;\n        n = n & 7;\n        o = (Rb(f) | 0) == 0;\n        f = f + -1 | 0;\n        l = dd(7, 0, m | 0) | 0;\n        c = c & ~(G() | 0);\n        m = dd(b[(o ? 464 : 48) + (n * 28 | 0) + (d << 2) >> 2] | 0, 0, m | 0) | 0;\n        k = G() | 0;\n        d = b[(o ? 672 : 256) + (n * 28 | 0) + (d << 2) >> 2] | 0;\n        a = m | a & ~l;\n        c = k | c;\n\n        if (!d) {\n          d = 0;\n          break a;\n        }\n\n        if (!f) {\n          h = 6;\n          break;\n        }\n      } } } while (0);\n\n      if ((h | 0) == 6) {\n        o = b[880 + (j * 28 | 0) + (d << 2) >> 2] | 0;\n        n = dd(o | 0, 0, 45) | 0;\n        a = n | a;\n        c = G() | 0 | c & -1040385;\n        d = b[4304 + (j * 28 | 0) + (d << 2) >> 2] | 0;\n\n        if ((o & 127 | 0) == 127) {\n          o = dd(b[880 + (j * 28 | 0) + 20 >> 2] | 0, 0, 45) | 0;\n          c = G() | 0 | c & -1040385;\n          d = b[4304 + (j * 28 | 0) + 20 >> 2] | 0;\n          a = Nb(o | a, c) | 0;\n          c = G() | 0;\n          b[e >> 2] = (b[e >> 2] | 0) + 1;\n        }\n      }\n\n      h = cd(a | 0, c | 0, 45) | 0;\n      G() | 0;\n      h = h & 127;\n\n      b: do { if (!(la(h) | 0)) {\n        if ((d | 0) > 0) {\n          f = 0;\n\n          do {\n            a = Nb(a, c) | 0;\n            c = G() | 0;\n            f = f + 1 | 0;\n          } while ((f | 0) != (d | 0));\n        }\n      } else {\n        c: do { if ((Lb(a, c) | 0) == 1) {\n          if ((j | 0) != (h | 0)) { if (ra(h, b[7728 + (j * 28 | 0) >> 2] | 0) | 0) {\n            a = Pb(a, c) | 0;\n            g = 1;\n            c = G() | 0;\n            break;\n          } else {\n            a = Nb(a, c) | 0;\n            g = 1;\n            c = G() | 0;\n            break;\n          } }\n\n          switch (g | 0) {\n            case 5:\n              {\n                a = Pb(a, c) | 0;\n                c = G() | 0;\n                b[e >> 2] = (b[e >> 2] | 0) + 5;\n                g = 0;\n                break c;\n              }\n\n            case 3:\n              {\n                a = Nb(a, c) | 0;\n                c = G() | 0;\n                b[e >> 2] = (b[e >> 2] | 0) + 1;\n                g = 0;\n                break c;\n              }\n\n            default:\n              {\n                n = 0;\n                o = 0;\n                F(n | 0);\n                return o | 0;\n              }\n          }\n        } else { g = 0; } } while (0);\n\n        if ((d | 0) > 0) {\n          f = 0;\n\n          do {\n            a = Mb(a, c) | 0;\n            c = G() | 0;\n            f = f + 1 | 0;\n          } while ((f | 0) != (d | 0));\n        }\n\n        if ((j | 0) != (h | 0)) {\n          if (!(ma(h) | 0)) {\n            if ((g | 0) != 0 | (Lb(a, c) | 0) != 5) { break; }\n            b[e >> 2] = (b[e >> 2] | 0) + 1;\n            break;\n          }\n\n          switch (i & 127) {\n            case 8:\n            case 118:\n              break b;\n\n            default:\n\n          }\n\n          if ((Lb(a, c) | 0) != 3) { b[e >> 2] = (b[e >> 2] | 0) + 1; }\n        }\n      } } while (0);\n\n      b[e >> 2] = ((b[e >> 2] | 0) + d | 0) % 6 | 0;\n      n = c;\n      o = a;\n      F(n | 0);\n      return o | 0;\n    }\n\n    function ea(a, c, d, e) {\n      a = a | 0;\n      c = c | 0;\n      d = d | 0;\n      e = e | 0;\n      var f = 0,\n          g = 0,\n          h = 0,\n          i = 0,\n          j = 0,\n          k = 0,\n          l = 0,\n          m = 0;\n      m = S;\n      S = S + 16 | 0;\n      l = m;\n\n      if (!d) {\n        l = e;\n        b[l >> 2] = a;\n        b[l + 4 >> 2] = c;\n        l = 0;\n        S = m;\n        return l | 0;\n      }\n\n      b[l >> 2] = 0;\n\n      a: do { if (!(Fb(a, c) | 0)) {\n        g = (d | 0) > 0;\n\n        if (g) {\n          f = 0;\n          k = a;\n\n          do {\n            k = da(k, c, 4, l) | 0;\n            c = G() | 0;\n\n            if ((k | 0) == 0 & (c | 0) == 0) {\n              a = 2;\n              break a;\n            }\n\n            f = f + 1 | 0;\n\n            if (Fb(k, c) | 0) {\n              a = 1;\n              break a;\n            }\n          } while ((f | 0) < (d | 0));\n\n          j = e;\n          b[j >> 2] = k;\n          b[j + 4 >> 2] = c;\n          j = d + -1 | 0;\n\n          if (g) {\n            g = 0;\n            h = 1;\n            f = k;\n            a = c;\n\n            do {\n              f = da(f, a, 2, l) | 0;\n              a = G() | 0;\n\n              if ((f | 0) == 0 & (a | 0) == 0) {\n                a = 2;\n                break a;\n              }\n\n              i = e + (h << 3) | 0;\n              b[i >> 2] = f;\n              b[i + 4 >> 2] = a;\n              h = h + 1 | 0;\n\n              if (Fb(f, a) | 0) {\n                a = 1;\n                break a;\n              }\n\n              g = g + 1 | 0;\n            } while ((g | 0) < (d | 0));\n\n            i = 0;\n            g = h;\n\n            do {\n              f = da(f, a, 3, l) | 0;\n              a = G() | 0;\n\n              if ((f | 0) == 0 & (a | 0) == 0) {\n                a = 2;\n                break a;\n              }\n\n              h = e + (g << 3) | 0;\n              b[h >> 2] = f;\n              b[h + 4 >> 2] = a;\n              g = g + 1 | 0;\n\n              if (Fb(f, a) | 0) {\n                a = 1;\n                break a;\n              }\n\n              i = i + 1 | 0;\n            } while ((i | 0) < (d | 0));\n\n            h = 0;\n\n            do {\n              f = da(f, a, 1, l) | 0;\n              a = G() | 0;\n\n              if ((f | 0) == 0 & (a | 0) == 0) {\n                a = 2;\n                break a;\n              }\n\n              i = e + (g << 3) | 0;\n              b[i >> 2] = f;\n              b[i + 4 >> 2] = a;\n              g = g + 1 | 0;\n\n              if (Fb(f, a) | 0) {\n                a = 1;\n                break a;\n              }\n\n              h = h + 1 | 0;\n            } while ((h | 0) < (d | 0));\n\n            h = 0;\n\n            do {\n              f = da(f, a, 5, l) | 0;\n              a = G() | 0;\n\n              if ((f | 0) == 0 & (a | 0) == 0) {\n                a = 2;\n                break a;\n              }\n\n              i = e + (g << 3) | 0;\n              b[i >> 2] = f;\n              b[i + 4 >> 2] = a;\n              g = g + 1 | 0;\n\n              if (Fb(f, a) | 0) {\n                a = 1;\n                break a;\n              }\n\n              h = h + 1 | 0;\n            } while ((h | 0) < (d | 0));\n\n            h = 0;\n\n            do {\n              f = da(f, a, 4, l) | 0;\n              a = G() | 0;\n\n              if ((f | 0) == 0 & (a | 0) == 0) {\n                a = 2;\n                break a;\n              }\n\n              i = e + (g << 3) | 0;\n              b[i >> 2] = f;\n              b[i + 4 >> 2] = a;\n              g = g + 1 | 0;\n\n              if (Fb(f, a) | 0) {\n                a = 1;\n                break a;\n              }\n\n              h = h + 1 | 0;\n            } while ((h | 0) < (d | 0));\n\n            h = 0;\n\n            while (1) {\n              f = da(f, a, 6, l) | 0;\n              a = G() | 0;\n\n              if ((f | 0) == 0 & (a | 0) == 0) {\n                a = 2;\n                break a;\n              }\n\n              if ((h | 0) != (j | 0)) {\n                i = e + (g << 3) | 0;\n                b[i >> 2] = f;\n                b[i + 4 >> 2] = a;\n                if (!(Fb(f, a) | 0)) { g = g + 1 | 0; }else {\n                  a = 1;\n                  break a;\n                }\n              }\n\n              h = h + 1 | 0;\n\n              if ((h | 0) >= (d | 0)) {\n                h = k;\n                g = c;\n                break;\n              }\n            }\n          } else {\n            h = k;\n            f = k;\n            g = c;\n            a = c;\n          }\n        } else {\n          h = e;\n          b[h >> 2] = a;\n          b[h + 4 >> 2] = c;\n          h = a;\n          f = a;\n          g = c;\n          a = c;\n        }\n\n        a = ((h | 0) != (f | 0) | (g | 0) != (a | 0)) & 1;\n      } else { a = 1; } } while (0);\n\n      l = a;\n      S = m;\n      return l | 0;\n    }\n\n    function fa(a, c) {\n      a = a | 0;\n      c = c | 0;\n      var d = 0,\n          e = 0,\n          f = 0,\n          g = 0,\n          h = 0,\n          i = 0;\n      g = S;\n      S = S + 48 | 0;\n      f = g + 8 | 0;\n      e = g;\n      i = a;\n      h = b[i + 4 >> 2] | 0;\n      d = e;\n      b[d >> 2] = b[i >> 2];\n      b[d + 4 >> 2] = h;\n      vc(e, f);\n      f = ya(f, c) | 0;\n      c = b[e >> 2] | 0;\n      e = b[a + 8 >> 2] | 0;\n\n      if ((e | 0) <= 0) {\n        i = c;\n        h = (f | 0) < (i | 0);\n        i = h ? i : f;\n        i = i + 12 | 0;\n        S = g;\n        return i | 0;\n      }\n\n      d = b[a + 12 >> 2] | 0;\n      a = 0;\n\n      do {\n        c = (b[d + (a << 3) >> 2] | 0) + c | 0;\n        a = a + 1 | 0;\n      } while ((a | 0) < (e | 0));\n\n      i = (f | 0) < (c | 0);\n      i = i ? c : f;\n      i = i + 12 | 0;\n      S = g;\n      return i | 0;\n    }\n\n    function ga(a, c, d) {\n      a = a | 0;\n      c = c | 0;\n      d = d | 0;\n      var e = 0,\n          f = 0,\n          g = 0,\n          h = 0,\n          i = 0,\n          j = 0;\n      i = S;\n      S = S + 48 | 0;\n      e = i + 8 | 0;\n      f = i;\n\n      if (!(ha(a, c, d) | 0)) {\n        S = i;\n        return;\n      }\n\n      j = a;\n      g = b[j + 4 >> 2] | 0;\n      h = f;\n      b[h >> 2] = b[j >> 2];\n      b[h + 4 >> 2] = g;\n      vc(f, e);\n      h = ya(e, c) | 0;\n      c = b[f >> 2] | 0;\n      g = b[a + 8 >> 2] | 0;\n\n      if ((g | 0) > 0) {\n        f = b[a + 12 >> 2] | 0;\n        e = 0;\n\n        do {\n          c = (b[f + (e << 3) >> 2] | 0) + c | 0;\n          e = e + 1 | 0;\n        } while ((e | 0) != (g | 0));\n      }\n\n      c = (h | 0) < (c | 0) ? c : h;\n\n      if ((c | 0) <= -12) {\n        S = i;\n        return;\n      }\n\n      j = c + 11 | 0;\n      hd(d | 0, 0, (((j | 0) > 0 ? j : 0) << 3) + 8 | 0) | 0;\n      S = i;\n      return;\n    }\n\n    function ha(a, c, d) {\n      a = a | 0;\n      c = c | 0;\n      d = d | 0;\n      var e = 0,\n          f = 0,\n          g = 0,\n          h = 0,\n          i = 0,\n          j = 0,\n          k = 0,\n          l = 0,\n          m = 0,\n          n = 0,\n          o = 0,\n          p = 0,\n          q = 0,\n          r = 0,\n          s = 0,\n          t = 0,\n          u = 0,\n          v = 0,\n          w = 0,\n          x = 0,\n          y = 0,\n          z = 0,\n          A = 0,\n          B = 0,\n          C = 0,\n          D = 0,\n          E = 0,\n          F = 0,\n          I = 0,\n          J = 0;\n      J = S;\n      S = S + 112 | 0;\n      D = J + 80 | 0;\n      j = J + 72 | 0;\n      E = J;\n      F = J + 56 | 0;\n      k = a + 8 | 0;\n      I = Wc((b[k >> 2] << 5) + 32 | 0) | 0;\n      if (!I) { H(22848, 22448, 800, 22456); }\n      wc(a, I);\n      g = a;\n      e = b[g + 4 >> 2] | 0;\n      i = j;\n      b[i >> 2] = b[g >> 2];\n      b[i + 4 >> 2] = e;\n      vc(j, D);\n      i = ya(D, c) | 0;\n      e = b[j >> 2] | 0;\n      g = b[k >> 2] | 0;\n\n      if ((g | 0) > 0) {\n        h = b[a + 12 >> 2] | 0;\n        f = 0;\n\n        do {\n          e = (b[h + (f << 3) >> 2] | 0) + e | 0;\n          f = f + 1 | 0;\n        } while ((f | 0) != (g | 0));\n      }\n\n      i = (i | 0) < (e | 0) ? e : i;\n      C = i + 12 | 0;\n      f = Yc(C, 8) | 0;\n      l = Yc(C, 8) | 0;\n      b[D >> 2] = 0;\n      A = a;\n      B = b[A + 4 >> 2] | 0;\n      e = j;\n      b[e >> 2] = b[A >> 2];\n      b[e + 4 >> 2] = B;\n      e = ia(j, C, c, D, f, l) | 0;\n\n      if (e | 0) {\n        Xc(f);\n        Xc(l);\n        Xc(I);\n        I = e;\n        S = J;\n        return I | 0;\n      }\n\n      a: do { if ((b[k >> 2] | 0) > 0) {\n        g = a + 12 | 0;\n        e = 0;\n\n        while (1) {\n          h = ia((b[g >> 2] | 0) + (e << 3) | 0, C, c, D, f, l) | 0;\n          e = e + 1 | 0;\n          if (h | 0) { break; }\n          if ((e | 0) >= (b[k >> 2] | 0)) { break a; }\n        }\n\n        Xc(f);\n        Xc(l);\n        Xc(I);\n        I = h;\n        S = J;\n        return I | 0;\n      } } while (0);\n\n      if ((i | 0) > -12) { hd(l | 0, 0, ((C | 0) > 1 ? C : 1) << 3 | 0) | 0; }\n\n      b: do { if ((b[D >> 2] | 0) > 0) {\n        B = ((C | 0) < 0) << 31 >> 31;\n        v = f;\n        w = l;\n        x = f;\n        y = f;\n        z = l;\n        A = f;\n        e = f;\n        r = f;\n        s = l;\n        t = l;\n        u = l;\n        f = l;\n\n        c: while (1) {\n          q = b[D >> 2] | 0;\n          o = 0;\n          p = 0;\n          g = 0;\n\n          while (1) {\n            h = E;\n            i = h + 56 | 0;\n\n            do {\n              b[h >> 2] = 0;\n              h = h + 4 | 0;\n            } while ((h | 0) < (i | 0));\n\n            c = v + (o << 3) | 0;\n            j = b[c >> 2] | 0;\n            c = b[c + 4 >> 2] | 0;\n\n            if (ba(j, c, 1, E, 0) | 0) {\n              h = E;\n              i = h + 56 | 0;\n\n              do {\n                b[h >> 2] = 0;\n                h = h + 4 | 0;\n              } while ((h | 0) < (i | 0));\n\n              h = Yc(7, 4) | 0;\n\n              if (h | 0) {\n                ca(j, c, 1, E, h, 7, 0);\n                Xc(h);\n              }\n            }\n\n            n = 0;\n\n            do {\n              m = E + (n << 3) | 0;\n              l = b[m >> 2] | 0;\n              m = b[m + 4 >> 2] | 0;\n\n              d: do { if (!((l | 0) == 0 & (m | 0) == 0)) {\n                j = bd(l | 0, m | 0, C | 0, B | 0) | 0;\n                G() | 0;\n                h = d + (j << 3) | 0;\n                i = h;\n                c = b[i >> 2] | 0;\n                i = b[i + 4 >> 2] | 0;\n\n                if (!((c | 0) == 0 & (i | 0) == 0)) {\n                  k = 0;\n\n                  while (1) {\n                    if ((k | 0) > (C | 0)) { break c; }\n                    if ((c | 0) == (l | 0) & (i | 0) == (m | 0)) { break d; }\n                    j = (j + 1 | 0) % (C | 0) | 0;\n                    h = d + (j << 3) | 0;\n                    i = h;\n                    c = b[i >> 2] | 0;\n                    i = b[i + 4 >> 2] | 0;\n                    if ((c | 0) == 0 & (i | 0) == 0) { break; }else { k = k + 1 | 0; }\n                  }\n                }\n\n                if (!((l | 0) == 0 & (m | 0) == 0)) {\n                  Vb(l, m, F);\n\n                  if (xc(a, I, F) | 0) {\n                    k = h;\n                    b[k >> 2] = l;\n                    b[k + 4 >> 2] = m;\n                    k = w + (g << 3) | 0;\n                    b[k >> 2] = l;\n                    b[k + 4 >> 2] = m;\n                    g = g + 1 | 0;\n                  }\n                }\n              } } while (0);\n\n              n = n + 1 | 0;\n            } while (n >>> 0 < 7);\n\n            p = p + 1 | 0;\n            if ((p | 0) >= (q | 0)) { break; }else { o = o + 1 | 0; }\n          }\n\n          if ((q | 0) > 0) { hd(x | 0, 0, q << 3 | 0) | 0; }\n          b[D >> 2] = g;\n\n          if ((g | 0) > 0) {\n            l = f;\n            m = u;\n            n = A;\n            o = t;\n            p = s;\n            q = w;\n            f = r;\n            u = e;\n            t = y;\n            s = x;\n            r = l;\n            e = m;\n            A = z;\n            z = n;\n            y = o;\n            x = p;\n            w = v;\n            v = q;\n          } else { break b; }\n        }\n\n        Xc(y);\n        Xc(z);\n        Xc(I);\n        I = -1;\n        S = J;\n        return I | 0;\n      } else { e = l; } } while (0);\n\n      Xc(I);\n      Xc(f);\n      Xc(e);\n      I = 0;\n      S = J;\n      return I | 0;\n    }\n\n    function ia(a, c, d, f, g, h) {\n      a = a | 0;\n      c = c | 0;\n      d = d | 0;\n      f = f | 0;\n      g = g | 0;\n      h = h | 0;\n      var i = 0,\n          j = 0,\n          k = 0,\n          l = 0,\n          m = 0,\n          n = 0,\n          o = 0,\n          p = 0,\n          q = 0,\n          r = 0.0,\n          s = 0,\n          t = 0,\n          u = 0,\n          v = 0,\n          w = 0,\n          x = 0,\n          y = 0,\n          z = 0,\n          A = 0,\n          B = 0,\n          C = 0,\n          D = 0.0,\n          E = 0.0;\n      C = S;\n      S = S + 48 | 0;\n      y = C + 32 | 0;\n      z = C + 16 | 0;\n      A = C;\n      i = b[a >> 2] | 0;\n\n      if ((i | 0) <= 0) {\n        B = 0;\n        S = C;\n        return B | 0;\n      }\n\n      t = a + 4 | 0;\n      u = y + 8 | 0;\n      v = z + 8 | 0;\n      w = A + 8 | 0;\n      x = ((c | 0) < 0) << 31 >> 31;\n      s = 0;\n\n      a: while (1) {\n        j = b[t >> 2] | 0;\n        q = j + (s << 4) | 0;\n        b[y >> 2] = b[q >> 2];\n        b[y + 4 >> 2] = b[q + 4 >> 2];\n        b[y + 8 >> 2] = b[q + 8 >> 2];\n        b[y + 12 >> 2] = b[q + 12 >> 2];\n\n        if ((s | 0) == (i + -1 | 0)) {\n          b[z >> 2] = b[j >> 2];\n          b[z + 4 >> 2] = b[j + 4 >> 2];\n          b[z + 8 >> 2] = b[j + 8 >> 2];\n          b[z + 12 >> 2] = b[j + 12 >> 2];\n        } else {\n          q = j + (s + 1 << 4) | 0;\n          b[z >> 2] = b[q >> 2];\n          b[z + 4 >> 2] = b[q + 4 >> 2];\n          b[z + 8 >> 2] = b[q + 8 >> 2];\n          b[z + 12 >> 2] = b[q + 12 >> 2];\n        }\n\n        q = za(y, z, d) | 0;\n\n        b: do { if ((q | 0) > 0) {\n          r = +(q | 0);\n          p = 0;\n\n          c: while (1) {\n            E = +(q - p | 0);\n            D = +(p | 0);\n            e[A >> 3] = +e[y >> 3] * E / r + +e[z >> 3] * D / r;\n            e[w >> 3] = +e[u >> 3] * E / r + +e[v >> 3] * D / r;\n            n = Sb(A, d) | 0;\n            o = G() | 0;\n            j = bd(n | 0, o | 0, c | 0, x | 0) | 0;\n            G() | 0;\n            i = h + (j << 3) | 0;\n            k = i;\n            l = b[k >> 2] | 0;\n            k = b[k + 4 >> 2] | 0;\n\n            d: do { if ((l | 0) == 0 & (k | 0) == 0) { B = 14; }else {\n              m = 0;\n\n              while (1) {\n                if ((m | 0) > (c | 0)) {\n                  i = 1;\n                  break d;\n                }\n\n                if ((l | 0) == (n | 0) & (k | 0) == (o | 0)) {\n                  i = 7;\n                  break d;\n                }\n\n                j = (j + 1 | 0) % (c | 0) | 0;\n                i = h + (j << 3) | 0;\n                k = i;\n                l = b[k >> 2] | 0;\n                k = b[k + 4 >> 2] | 0;\n\n                if ((l | 0) == 0 & (k | 0) == 0) {\n                  B = 14;\n                  break;\n                } else { m = m + 1 | 0; }\n              }\n            } } while (0);\n\n            if ((B | 0) == 14) {\n              B = 0;\n              if ((n | 0) == 0 & (o | 0) == 0) { i = 7; }else {\n                b[i >> 2] = n;\n                b[i + 4 >> 2] = o;\n                i = b[f >> 2] | 0;\n                m = g + (i << 3) | 0;\n                b[m >> 2] = n;\n                b[m + 4 >> 2] = o;\n                b[f >> 2] = i + 1;\n                i = 0;\n              }\n            }\n\n            switch (i & 7) {\n              case 7:\n              case 0:\n                break;\n\n              default:\n                break c;\n            }\n\n            p = p + 1 | 0;\n\n            if ((q | 0) <= (p | 0)) {\n              B = 8;\n              break b;\n            }\n          }\n\n          if (i | 0) {\n            i = -1;\n            B = 20;\n            break a;\n          }\n        } else { B = 8; } } while (0);\n\n        if ((B | 0) == 8) { B = 0; }\n        s = s + 1 | 0;\n        i = b[a >> 2] | 0;\n\n        if ((s | 0) >= (i | 0)) {\n          i = 0;\n          B = 20;\n          break;\n        }\n      }\n\n      if ((B | 0) == 20) {\n        S = C;\n        return i | 0;\n      }\n\n      return 0;\n    }\n\n    function ja(a, c, d) {\n      a = a | 0;\n      c = c | 0;\n      d = d | 0;\n      var e = 0,\n          f = 0,\n          g = 0,\n          h = 0,\n          i = 0,\n          j = 0,\n          k = 0;\n      k = S;\n      S = S + 176 | 0;\n      j = k;\n\n      if ((c | 0) < 1) {\n        Mc(d, 0, 0);\n        S = k;\n        return;\n      }\n\n      h = a;\n      h = cd(b[h >> 2] | 0, b[h + 4 >> 2] | 0, 52) | 0;\n      G() | 0;\n      Mc(d, (c | 0) > 6 ? c : 6, h & 15);\n      h = 0;\n\n      do {\n        e = a + (h << 3) | 0;\n        Wb(b[e >> 2] | 0, b[e + 4 >> 2] | 0, j);\n        e = b[j >> 2] | 0;\n\n        if ((e | 0) > 0) {\n          i = 0;\n\n          do {\n            g = j + 8 + (i << 4) | 0;\n            i = i + 1 | 0;\n            e = j + 8 + (((i | 0) % (e | 0) | 0) << 4) | 0;\n            f = Rc(d, e, g) | 0;\n            if (!f) { Qc(d, g, e) | 0; }else { Pc(d, f) | 0; }\n            e = b[j >> 2] | 0;\n          } while ((i | 0) < (e | 0));\n        }\n\n        h = h + 1 | 0;\n      } while ((h | 0) != (c | 0));\n\n      S = k;\n      return;\n    }\n\n    function ka(a, c, d) {\n      a = a | 0;\n      c = c | 0;\n      d = d | 0;\n      var e = 0,\n          f = 0,\n          g = 0,\n          h = 0;\n      g = S;\n      S = S + 32 | 0;\n      e = g;\n      f = g + 16 | 0;\n      ja(a, c, f);\n      b[d >> 2] = 0;\n      b[d + 4 >> 2] = 0;\n      b[d + 8 >> 2] = 0;\n      a = Oc(f) | 0;\n\n      if (!a) {\n        kc(d) | 0;\n        Nc(f);\n        S = g;\n        return;\n      }\n\n      do {\n        c = hc(d) | 0;\n\n        do {\n          ic(c, a) | 0;\n          h = a + 16 | 0;\n          b[e >> 2] = b[h >> 2];\n          b[e + 4 >> 2] = b[h + 4 >> 2];\n          b[e + 8 >> 2] = b[h + 8 >> 2];\n          b[e + 12 >> 2] = b[h + 12 >> 2];\n          Pc(f, a) | 0;\n          a = Sc(f, e) | 0;\n        } while ((a | 0) != 0);\n\n        a = Oc(f) | 0;\n      } while ((a | 0) != 0);\n\n      kc(d) | 0;\n      Nc(f);\n      S = g;\n      return;\n    }\n\n    function la(a) {\n      a = a | 0;\n      return b[7728 + (a * 28 | 0) + 16 >> 2] | 0;\n    }\n\n    function ma(a) {\n      a = a | 0;\n      return (a | 0) == 4 | (a | 0) == 117 | 0;\n    }\n\n    function na(a) {\n      a = a | 0;\n      return b[11152 + ((b[a >> 2] | 0) * 216 | 0) + ((b[a + 4 >> 2] | 0) * 72 | 0) + ((b[a + 8 >> 2] | 0) * 24 | 0) + (b[a + 12 >> 2] << 3) >> 2] | 0;\n    }\n\n    function oa(a) {\n      a = a | 0;\n      return b[11152 + ((b[a >> 2] | 0) * 216 | 0) + ((b[a + 4 >> 2] | 0) * 72 | 0) + ((b[a + 8 >> 2] | 0) * 24 | 0) + (b[a + 12 >> 2] << 3) + 4 >> 2] | 0;\n    }\n\n    function pa(a, c) {\n      a = a | 0;\n      c = c | 0;\n      a = 7728 + (a * 28 | 0) | 0;\n      b[c >> 2] = b[a >> 2];\n      b[c + 4 >> 2] = b[a + 4 >> 2];\n      b[c + 8 >> 2] = b[a + 8 >> 2];\n      b[c + 12 >> 2] = b[a + 12 >> 2];\n      return;\n    }\n\n    function qa(a, c) {\n      a = a | 0;\n      c = c | 0;\n      var d = 0,\n          e = 0;\n\n      if (c >>> 0 > 20) {\n        c = -1;\n        return c | 0;\n      }\n\n      do { if ((b[11152 + (c * 216 | 0) >> 2] | 0) != (a | 0)) {\n        if ((b[11152 + (c * 216 | 0) + 8 >> 2] | 0) != (a | 0)) {\n          if ((b[11152 + (c * 216 | 0) + 16 >> 2] | 0) != (a | 0)) {\n            if ((b[11152 + (c * 216 | 0) + 24 >> 2] | 0) != (a | 0)) {\n              if ((b[11152 + (c * 216 | 0) + 32 >> 2] | 0) != (a | 0)) {\n                if ((b[11152 + (c * 216 | 0) + 40 >> 2] | 0) != (a | 0)) {\n                  if ((b[11152 + (c * 216 | 0) + 48 >> 2] | 0) != (a | 0)) {\n                    if ((b[11152 + (c * 216 | 0) + 56 >> 2] | 0) != (a | 0)) {\n                      if ((b[11152 + (c * 216 | 0) + 64 >> 2] | 0) != (a | 0)) {\n                        if ((b[11152 + (c * 216 | 0) + 72 >> 2] | 0) != (a | 0)) {\n                          if ((b[11152 + (c * 216 | 0) + 80 >> 2] | 0) != (a | 0)) {\n                            if ((b[11152 + (c * 216 | 0) + 88 >> 2] | 0) != (a | 0)) {\n                              if ((b[11152 + (c * 216 | 0) + 96 >> 2] | 0) != (a | 0)) {\n                                if ((b[11152 + (c * 216 | 0) + 104 >> 2] | 0) != (a | 0)) {\n                                  if ((b[11152 + (c * 216 | 0) + 112 >> 2] | 0) != (a | 0)) {\n                                    if ((b[11152 + (c * 216 | 0) + 120 >> 2] | 0) != (a | 0)) {\n                                      if ((b[11152 + (c * 216 | 0) + 128 >> 2] | 0) != (a | 0)) {\n                                        if ((b[11152 + (c * 216 | 0) + 136 >> 2] | 0) == (a | 0)) {\n                                          a = 2;\n                                          d = 1;\n                                          e = 2;\n                                        } else {\n                                          if ((b[11152 + (c * 216 | 0) + 144 >> 2] | 0) == (a | 0)) {\n                                            a = 0;\n                                            d = 2;\n                                            e = 0;\n                                            break;\n                                          }\n\n                                          if ((b[11152 + (c * 216 | 0) + 152 >> 2] | 0) == (a | 0)) {\n                                            a = 0;\n                                            d = 2;\n                                            e = 1;\n                                            break;\n                                          }\n\n                                          if ((b[11152 + (c * 216 | 0) + 160 >> 2] | 0) == (a | 0)) {\n                                            a = 0;\n                                            d = 2;\n                                            e = 2;\n                                            break;\n                                          }\n\n                                          if ((b[11152 + (c * 216 | 0) + 168 >> 2] | 0) == (a | 0)) {\n                                            a = 1;\n                                            d = 2;\n                                            e = 0;\n                                            break;\n                                          }\n\n                                          if ((b[11152 + (c * 216 | 0) + 176 >> 2] | 0) == (a | 0)) {\n                                            a = 1;\n                                            d = 2;\n                                            e = 1;\n                                            break;\n                                          }\n\n                                          if ((b[11152 + (c * 216 | 0) + 184 >> 2] | 0) == (a | 0)) {\n                                            a = 1;\n                                            d = 2;\n                                            e = 2;\n                                            break;\n                                          }\n\n                                          if ((b[11152 + (c * 216 | 0) + 192 >> 2] | 0) == (a | 0)) {\n                                            a = 2;\n                                            d = 2;\n                                            e = 0;\n                                            break;\n                                          }\n\n                                          if ((b[11152 + (c * 216 | 0) + 200 >> 2] | 0) == (a | 0)) {\n                                            a = 2;\n                                            d = 2;\n                                            e = 1;\n                                            break;\n                                          }\n\n                                          if ((b[11152 + (c * 216 | 0) + 208 >> 2] | 0) == (a | 0)) {\n                                            a = 2;\n                                            d = 2;\n                                            e = 2;\n                                            break;\n                                          } else { a = -1; }\n\n                                          return a | 0;\n                                        }\n                                      } else {\n                                        a = 2;\n                                        d = 1;\n                                        e = 1;\n                                      }\n                                    } else {\n                                      a = 2;\n                                      d = 1;\n                                      e = 0;\n                                    }\n                                  } else {\n                                    a = 1;\n                                    d = 1;\n                                    e = 2;\n                                  }\n                                } else {\n                                  a = 1;\n                                  d = 1;\n                                  e = 1;\n                                }\n                              } else {\n                                a = 1;\n                                d = 1;\n                                e = 0;\n                              }\n                            } else {\n                              a = 0;\n                              d = 1;\n                              e = 2;\n                            }\n                          } else {\n                            a = 0;\n                            d = 1;\n                            e = 1;\n                          }\n                        } else {\n                          a = 0;\n                          d = 1;\n                          e = 0;\n                        }\n                      } else {\n                        a = 2;\n                        d = 0;\n                        e = 2;\n                      }\n                    } else {\n                      a = 2;\n                      d = 0;\n                      e = 1;\n                    }\n                  } else {\n                    a = 2;\n                    d = 0;\n                    e = 0;\n                  }\n                } else {\n                  a = 1;\n                  d = 0;\n                  e = 2;\n                }\n              } else {\n                a = 1;\n                d = 0;\n                e = 1;\n              }\n            } else {\n              a = 1;\n              d = 0;\n              e = 0;\n            }\n          } else {\n            a = 0;\n            d = 0;\n            e = 2;\n          }\n        } else {\n          a = 0;\n          d = 0;\n          e = 1;\n        }\n      } else {\n        a = 0;\n        d = 0;\n        e = 0;\n      } } while (0);\n\n      c = b[11152 + (c * 216 | 0) + (d * 72 | 0) + (a * 24 | 0) + (e << 3) + 4 >> 2] | 0;\n      return c | 0;\n    }\n\n    function ra(a, c) {\n      a = a | 0;\n      c = c | 0;\n\n      if ((b[7728 + (a * 28 | 0) + 20 >> 2] | 0) == (c | 0)) {\n        c = 1;\n        return c | 0;\n      }\n\n      c = (b[7728 + (a * 28 | 0) + 24 >> 2] | 0) == (c | 0);\n      return c | 0;\n    }\n\n    function sa(a, c) {\n      a = a | 0;\n      c = c | 0;\n      return b[880 + (a * 28 | 0) + (c << 2) >> 2] | 0;\n    }\n\n    function ta(a, c) {\n      a = a | 0;\n      c = c | 0;\n\n      if ((b[880 + (a * 28 | 0) >> 2] | 0) == (c | 0)) {\n        c = 0;\n        return c | 0;\n      }\n\n      if ((b[880 + (a * 28 | 0) + 4 >> 2] | 0) == (c | 0)) {\n        c = 1;\n        return c | 0;\n      }\n\n      if ((b[880 + (a * 28 | 0) + 8 >> 2] | 0) == (c | 0)) {\n        c = 2;\n        return c | 0;\n      }\n\n      if ((b[880 + (a * 28 | 0) + 12 >> 2] | 0) == (c | 0)) {\n        c = 3;\n        return c | 0;\n      }\n\n      if ((b[880 + (a * 28 | 0) + 16 >> 2] | 0) == (c | 0)) {\n        c = 4;\n        return c | 0;\n      }\n\n      if ((b[880 + (a * 28 | 0) + 20 >> 2] | 0) == (c | 0)) {\n        c = 5;\n        return c | 0;\n      } else { return ((b[880 + (a * 28 | 0) + 24 >> 2] | 0) == (c | 0) ? 6 : 7) | 0; }\n\n      return 0;\n    }\n\n    function ua() {\n      return 122;\n    }\n\n    function va(a) {\n      a = a | 0;\n      var c = 0,\n          d = 0,\n          e = 0;\n      c = 0;\n\n      do {\n        dd(c | 0, 0, 45) | 0;\n        e = G() | 0 | 134225919;\n        d = a + (c << 3) | 0;\n        b[d >> 2] = -1;\n        b[d + 4 >> 2] = e;\n        c = c + 1 | 0;\n      } while ((c | 0) != 122);\n\n      return;\n    }\n\n    function wa(a) {\n      a = a | 0;\n      return +e[a + 16 >> 3] < +e[a + 24 >> 3] | 0;\n    }\n\n    function xa(a, b) {\n      a = a | 0;\n      b = b | 0;\n      var c = 0.0,\n          d = 0.0,\n          f = 0.0;\n      c = +e[b >> 3];\n\n      if (!(c >= +e[a + 8 >> 3])) {\n        b = 0;\n        return b | 0;\n      }\n\n      if (!(c <= +e[a >> 3])) {\n        b = 0;\n        return b | 0;\n      }\n\n      d = +e[a + 16 >> 3];\n      c = +e[a + 24 >> 3];\n      f = +e[b + 8 >> 3];\n      b = f >= c;\n      a = f <= d & 1;\n\n      if (d < c) {\n        if (b) { a = 1; }\n      } else if (!b) { a = 0; }\n\n      b = (a | 0) != 0;\n      return b | 0;\n    }\n\n    function ya(a, c) {\n      a = a | 0;\n      c = c | 0;\n      var d = 0,\n          f = 0,\n          g = 0,\n          h = 0,\n          i = 0,\n          j = 0,\n          k = 0.0,\n          l = 0.0;\n      i = S;\n      S = S + 288 | 0;\n      d = i + 264 | 0;\n      f = i + 96 | 0;\n      g = i;\n      h = g;\n      j = h + 96 | 0;\n\n      do {\n        b[h >> 2] = 0;\n        h = h + 4 | 0;\n      } while ((h | 0) < (j | 0));\n\n      _b(c, g);\n\n      h = g;\n      j = b[h >> 2] | 0;\n      h = b[h + 4 >> 2] | 0;\n      Vb(j, h, d);\n      Wb(j, h, f);\n      k = +jb(d, f + 8 | 0);\n      e[d >> 3] = +e[a >> 3];\n      h = d + 8 | 0;\n      e[h >> 3] = +e[a + 16 >> 3];\n      e[f >> 3] = +e[a + 8 >> 3];\n      j = f + 8 | 0;\n      e[j >> 3] = +e[a + 24 >> 3];\n      l = +jb(d, f);\n      j = ~~+A(+(l * l / +ed(+ +q(+((+e[h >> 3] - +e[j >> 3]) / (+e[d >> 3] - +e[f >> 3]))), 3.0) / (k * (k * 2.59807621135) * .8)));\n      S = i;\n      return ((j | 0) == 0 ? 1 : j) | 0;\n    }\n\n    function za(a, c, d) {\n      a = a | 0;\n      c = c | 0;\n      d = d | 0;\n      var e = 0,\n          f = 0,\n          g = 0,\n          h = 0,\n          i = 0,\n          j = 0,\n          k = 0.0;\n      i = S;\n      S = S + 288 | 0;\n      e = i + 264 | 0;\n      f = i + 96 | 0;\n      g = i;\n      h = g;\n      j = h + 96 | 0;\n\n      do {\n        b[h >> 2] = 0;\n        h = h + 4 | 0;\n      } while ((h | 0) < (j | 0));\n\n      _b(d, g);\n\n      j = g;\n      h = b[j >> 2] | 0;\n      j = b[j + 4 >> 2] | 0;\n      Vb(h, j, e);\n      Wb(h, j, f);\n      k = +jb(e, f + 8 | 0);\n      j = ~~+A(+(+jb(a, c) / (k * 2.0)));\n      S = i;\n      return ((j | 0) == 0 ? 1 : j) | 0;\n    }\n\n    function Aa(a, c, d, e) {\n      a = a | 0;\n      c = c | 0;\n      d = d | 0;\n      e = e | 0;\n      b[a >> 2] = c;\n      b[a + 4 >> 2] = d;\n      b[a + 8 >> 2] = e;\n      return;\n    }\n\n    function Ba(a, c) {\n      a = a | 0;\n      c = c | 0;\n      var d = 0,\n          f = 0,\n          g = 0,\n          h = 0,\n          i = 0.0,\n          j = 0.0,\n          k = 0.0,\n          l = 0.0,\n          m = 0,\n          n = 0,\n          o = 0.0;\n      n = c + 8 | 0;\n      b[n >> 2] = 0;\n      k = +e[a >> 3];\n      i = +q(+k);\n      l = +e[a + 8 >> 3];\n      j = +q(+l) / .8660254037844386;\n      i = i + j * .5;\n      d = ~~i;\n      a = ~~j;\n      i = i - +(d | 0);\n      j = j - +(a | 0);\n\n      do { if (i < .5) {\n        if (i < .3333333333333333) {\n          b[c >> 2] = d;\n\n          if (j < (i + 1.0) * .5) {\n            b[c + 4 >> 2] = a;\n            break;\n          } else {\n            a = a + 1 | 0;\n            b[c + 4 >> 2] = a;\n            break;\n          }\n        } else {\n          o = 1.0 - i;\n          a = (!(j < o) & 1) + a | 0;\n          b[c + 4 >> 2] = a;\n\n          if (o <= j & j < i * 2.0) {\n            d = d + 1 | 0;\n            b[c >> 2] = d;\n            break;\n          } else {\n            b[c >> 2] = d;\n            break;\n          }\n        }\n      } else {\n        if (!(i < .6666666666666666)) {\n          d = d + 1 | 0;\n          b[c >> 2] = d;\n\n          if (j < i * .5) {\n            b[c + 4 >> 2] = a;\n            break;\n          } else {\n            a = a + 1 | 0;\n            b[c + 4 >> 2] = a;\n            break;\n          }\n        }\n\n        if (j < 1.0 - i) {\n          b[c + 4 >> 2] = a;\n\n          if (i * 2.0 + -1.0 < j) {\n            b[c >> 2] = d;\n            break;\n          }\n        } else {\n          a = a + 1 | 0;\n          b[c + 4 >> 2] = a;\n        }\n\n        d = d + 1 | 0;\n        b[c >> 2] = d;\n      } } while (0);\n\n      do { if (k < 0.0) { if (!(a & 1)) {\n        m = (a | 0) / 2 | 0;\n        m = _c(d | 0, ((d | 0) < 0) << 31 >> 31 | 0, m | 0, ((m | 0) < 0) << 31 >> 31 | 0) | 0;\n        d = ~~(+(d | 0) - (+(m >>> 0) + 4294967296.0 * +(G() | 0)) * 2.0);\n        b[c >> 2] = d;\n        break;\n      } else {\n        m = (a + 1 | 0) / 2 | 0;\n        m = _c(d | 0, ((d | 0) < 0) << 31 >> 31 | 0, m | 0, ((m | 0) < 0) << 31 >> 31 | 0) | 0;\n        d = ~~(+(d | 0) - ((+(m >>> 0) + 4294967296.0 * +(G() | 0)) * 2.0 + 1.0));\n        b[c >> 2] = d;\n        break;\n      } } } while (0);\n\n      m = c + 4 | 0;\n\n      if (l < 0.0) {\n        d = d - ((a << 1 | 1 | 0) / 2 | 0) | 0;\n        b[c >> 2] = d;\n        a = 0 - a | 0;\n        b[m >> 2] = a;\n      }\n\n      f = a - d | 0;\n\n      if ((d | 0) < 0) {\n        g = 0 - d | 0;\n        b[m >> 2] = f;\n        b[n >> 2] = g;\n        b[c >> 2] = 0;\n        a = f;\n        d = 0;\n      } else { g = 0; }\n\n      if ((a | 0) < 0) {\n        d = d - a | 0;\n        b[c >> 2] = d;\n        g = g - a | 0;\n        b[n >> 2] = g;\n        b[m >> 2] = 0;\n        a = 0;\n      }\n\n      h = d - g | 0;\n      f = a - g | 0;\n\n      if ((g | 0) < 0) {\n        b[c >> 2] = h;\n        b[m >> 2] = f;\n        b[n >> 2] = 0;\n        a = f;\n        d = h;\n        g = 0;\n      }\n\n      f = (a | 0) < (d | 0) ? a : d;\n      f = (g | 0) < (f | 0) ? g : f;\n      if ((f | 0) <= 0) { return; }\n      b[c >> 2] = d - f;\n      b[m >> 2] = a - f;\n      b[n >> 2] = g - f;\n      return;\n    }\n\n    function Ca(a) {\n      a = a | 0;\n      var c = 0,\n          d = 0,\n          e = 0,\n          f = 0,\n          g = 0,\n          h = 0;\n      c = b[a >> 2] | 0;\n      h = a + 4 | 0;\n      d = b[h >> 2] | 0;\n\n      if ((c | 0) < 0) {\n        d = d - c | 0;\n        b[h >> 2] = d;\n        g = a + 8 | 0;\n        b[g >> 2] = (b[g >> 2] | 0) - c;\n        b[a >> 2] = 0;\n        c = 0;\n      }\n\n      if ((d | 0) < 0) {\n        c = c - d | 0;\n        b[a >> 2] = c;\n        g = a + 8 | 0;\n        f = (b[g >> 2] | 0) - d | 0;\n        b[g >> 2] = f;\n        b[h >> 2] = 0;\n        d = 0;\n      } else {\n        f = a + 8 | 0;\n        g = f;\n        f = b[f >> 2] | 0;\n      }\n\n      if ((f | 0) < 0) {\n        c = c - f | 0;\n        b[a >> 2] = c;\n        d = d - f | 0;\n        b[h >> 2] = d;\n        b[g >> 2] = 0;\n        f = 0;\n      }\n\n      e = (d | 0) < (c | 0) ? d : c;\n      e = (f | 0) < (e | 0) ? f : e;\n      if ((e | 0) <= 0) { return; }\n      b[a >> 2] = c - e;\n      b[h >> 2] = d - e;\n      b[g >> 2] = f - e;\n      return;\n    }\n\n    function Da(a, c) {\n      a = a | 0;\n      c = c | 0;\n      var d = 0.0,\n          f = 0;\n      f = b[a + 8 >> 2] | 0;\n      d = +((b[a + 4 >> 2] | 0) - f | 0);\n      e[c >> 3] = +((b[a >> 2] | 0) - f | 0) - d * .5;\n      e[c + 8 >> 3] = d * .8660254037844386;\n      return;\n    }\n\n    function Ea(a, c, d) {\n      a = a | 0;\n      c = c | 0;\n      d = d | 0;\n      b[d >> 2] = (b[c >> 2] | 0) + (b[a >> 2] | 0);\n      b[d + 4 >> 2] = (b[c + 4 >> 2] | 0) + (b[a + 4 >> 2] | 0);\n      b[d + 8 >> 2] = (b[c + 8 >> 2] | 0) + (b[a + 8 >> 2] | 0);\n      return;\n    }\n\n    function Fa(a, c, d) {\n      a = a | 0;\n      c = c | 0;\n      d = d | 0;\n      b[d >> 2] = (b[a >> 2] | 0) - (b[c >> 2] | 0);\n      b[d + 4 >> 2] = (b[a + 4 >> 2] | 0) - (b[c + 4 >> 2] | 0);\n      b[d + 8 >> 2] = (b[a + 8 >> 2] | 0) - (b[c + 8 >> 2] | 0);\n      return;\n    }\n\n    function Ga(a, c) {\n      a = a | 0;\n      c = c | 0;\n      var d = 0,\n          e = 0;\n      d = B(b[a >> 2] | 0, c) | 0;\n      b[a >> 2] = d;\n      d = a + 4 | 0;\n      e = B(b[d >> 2] | 0, c) | 0;\n      b[d >> 2] = e;\n      a = a + 8 | 0;\n      c = B(b[a >> 2] | 0, c) | 0;\n      b[a >> 2] = c;\n      return;\n    }\n\n    function Ha(a) {\n      a = a | 0;\n      var c = 0,\n          d = 0,\n          e = 0,\n          f = 0,\n          g = 0,\n          h = 0,\n          i = 0;\n      h = b[a >> 2] | 0;\n      i = (h | 0) < 0;\n      e = (b[a + 4 >> 2] | 0) - (i ? h : 0) | 0;\n      g = (e | 0) < 0;\n      f = (g ? 0 - e | 0 : 0) + ((b[a + 8 >> 2] | 0) - (i ? h : 0)) | 0;\n      d = (f | 0) < 0;\n      a = d ? 0 : f;\n      c = (g ? 0 : e) - (d ? f : 0) | 0;\n      f = (i ? 0 : h) - (g ? e : 0) - (d ? f : 0) | 0;\n      d = (c | 0) < (f | 0) ? c : f;\n      d = (a | 0) < (d | 0) ? a : d;\n      e = (d | 0) > 0;\n      a = a - (e ? d : 0) | 0;\n      c = c - (e ? d : 0) | 0;\n\n      a: do { switch (f - (e ? d : 0) | 0) {\n        case 0:\n          switch (c | 0) {\n            case 0:\n              {\n                i = (a | 0) == 0 ? 0 : (a | 0) == 1 ? 1 : 7;\n                return i | 0;\n              }\n\n            case 1:\n              {\n                i = (a | 0) == 0 ? 2 : (a | 0) == 1 ? 3 : 7;\n                return i | 0;\n              }\n\n            default:\n              break a;\n          }\n\n        case 1:\n          switch (c | 0) {\n            case 0:\n              {\n                i = (a | 0) == 0 ? 4 : (a | 0) == 1 ? 5 : 7;\n                return i | 0;\n              }\n\n            case 1:\n              {\n                if (!a) { a = 6; }else { break a; }\n                return a | 0;\n              }\n\n            default:\n              break a;\n          }\n\n        default:\n\n      } } while (0);\n\n      i = 7;\n      return i | 0;\n    }\n\n    function Ia(a) {\n      a = a | 0;\n      var c = 0,\n          d = 0,\n          e = 0,\n          f = 0,\n          g = 0,\n          h = 0,\n          i = 0;\n      h = a + 8 | 0;\n      d = b[h >> 2] | 0;\n      c = (b[a >> 2] | 0) - d | 0;\n      i = a + 4 | 0;\n      d = (b[i >> 2] | 0) - d | 0;\n      e = Vc(+((c * 3 | 0) - d | 0) / 7.0) | 0;\n      b[a >> 2] = e;\n      c = Vc(+((d << 1) + c | 0) / 7.0) | 0;\n      b[i >> 2] = c;\n      b[h >> 2] = 0;\n      d = c - e | 0;\n\n      if ((e | 0) < 0) {\n        g = 0 - e | 0;\n        b[i >> 2] = d;\n        b[h >> 2] = g;\n        b[a >> 2] = 0;\n        c = d;\n        e = 0;\n        d = g;\n      } else { d = 0; }\n\n      if ((c | 0) < 0) {\n        e = e - c | 0;\n        b[a >> 2] = e;\n        d = d - c | 0;\n        b[h >> 2] = d;\n        b[i >> 2] = 0;\n        c = 0;\n      }\n\n      g = e - d | 0;\n      f = c - d | 0;\n\n      if ((d | 0) < 0) {\n        b[a >> 2] = g;\n        b[i >> 2] = f;\n        b[h >> 2] = 0;\n        c = f;\n        f = g;\n        d = 0;\n      } else { f = e; }\n\n      e = (c | 0) < (f | 0) ? c : f;\n      e = (d | 0) < (e | 0) ? d : e;\n      if ((e | 0) <= 0) { return; }\n      b[a >> 2] = f - e;\n      b[i >> 2] = c - e;\n      b[h >> 2] = d - e;\n      return;\n    }\n\n    function Ja(a) {\n      a = a | 0;\n      var c = 0,\n          d = 0,\n          e = 0,\n          f = 0,\n          g = 0,\n          h = 0,\n          i = 0;\n      h = a + 8 | 0;\n      d = b[h >> 2] | 0;\n      c = (b[a >> 2] | 0) - d | 0;\n      i = a + 4 | 0;\n      d = (b[i >> 2] | 0) - d | 0;\n      e = Vc(+((c << 1) + d | 0) / 7.0) | 0;\n      b[a >> 2] = e;\n      c = Vc(+((d * 3 | 0) - c | 0) / 7.0) | 0;\n      b[i >> 2] = c;\n      b[h >> 2] = 0;\n      d = c - e | 0;\n\n      if ((e | 0) < 0) {\n        g = 0 - e | 0;\n        b[i >> 2] = d;\n        b[h >> 2] = g;\n        b[a >> 2] = 0;\n        c = d;\n        e = 0;\n        d = g;\n      } else { d = 0; }\n\n      if ((c | 0) < 0) {\n        e = e - c | 0;\n        b[a >> 2] = e;\n        d = d - c | 0;\n        b[h >> 2] = d;\n        b[i >> 2] = 0;\n        c = 0;\n      }\n\n      g = e - d | 0;\n      f = c - d | 0;\n\n      if ((d | 0) < 0) {\n        b[a >> 2] = g;\n        b[i >> 2] = f;\n        b[h >> 2] = 0;\n        c = f;\n        f = g;\n        d = 0;\n      } else { f = e; }\n\n      e = (c | 0) < (f | 0) ? c : f;\n      e = (d | 0) < (e | 0) ? d : e;\n      if ((e | 0) <= 0) { return; }\n      b[a >> 2] = f - e;\n      b[i >> 2] = c - e;\n      b[h >> 2] = d - e;\n      return;\n    }\n\n    function Ka(a) {\n      a = a | 0;\n      var c = 0,\n          d = 0,\n          e = 0,\n          f = 0,\n          g = 0,\n          h = 0,\n          i = 0;\n      c = b[a >> 2] | 0;\n      h = a + 4 | 0;\n      d = b[h >> 2] | 0;\n      i = a + 8 | 0;\n      e = b[i >> 2] | 0;\n      f = d + (c * 3 | 0) | 0;\n      b[a >> 2] = f;\n      d = e + (d * 3 | 0) | 0;\n      b[h >> 2] = d;\n      c = (e * 3 | 0) + c | 0;\n      b[i >> 2] = c;\n      e = d - f | 0;\n\n      if ((f | 0) < 0) {\n        c = c - f | 0;\n        b[h >> 2] = e;\n        b[i >> 2] = c;\n        b[a >> 2] = 0;\n        d = e;\n        e = 0;\n      } else { e = f; }\n\n      if ((d | 0) < 0) {\n        e = e - d | 0;\n        b[a >> 2] = e;\n        c = c - d | 0;\n        b[i >> 2] = c;\n        b[h >> 2] = 0;\n        d = 0;\n      }\n\n      g = e - c | 0;\n      f = d - c | 0;\n\n      if ((c | 0) < 0) {\n        b[a >> 2] = g;\n        b[h >> 2] = f;\n        b[i >> 2] = 0;\n        e = g;\n        c = 0;\n      } else { f = d; }\n\n      d = (f | 0) < (e | 0) ? f : e;\n      d = (c | 0) < (d | 0) ? c : d;\n      if ((d | 0) <= 0) { return; }\n      b[a >> 2] = e - d;\n      b[h >> 2] = f - d;\n      b[i >> 2] = c - d;\n      return;\n    }\n\n    function La(a) {\n      a = a | 0;\n      var c = 0,\n          d = 0,\n          e = 0,\n          f = 0,\n          g = 0,\n          h = 0,\n          i = 0;\n      f = b[a >> 2] | 0;\n      h = a + 4 | 0;\n      c = b[h >> 2] | 0;\n      i = a + 8 | 0;\n      d = b[i >> 2] | 0;\n      e = (c * 3 | 0) + f | 0;\n      f = d + (f * 3 | 0) | 0;\n      b[a >> 2] = f;\n      b[h >> 2] = e;\n      c = (d * 3 | 0) + c | 0;\n      b[i >> 2] = c;\n      d = e - f | 0;\n\n      if ((f | 0) < 0) {\n        c = c - f | 0;\n        b[h >> 2] = d;\n        b[i >> 2] = c;\n        b[a >> 2] = 0;\n        f = 0;\n      } else { d = e; }\n\n      if ((d | 0) < 0) {\n        f = f - d | 0;\n        b[a >> 2] = f;\n        c = c - d | 0;\n        b[i >> 2] = c;\n        b[h >> 2] = 0;\n        d = 0;\n      }\n\n      g = f - c | 0;\n      e = d - c | 0;\n\n      if ((c | 0) < 0) {\n        b[a >> 2] = g;\n        b[h >> 2] = e;\n        b[i >> 2] = 0;\n        f = g;\n        c = 0;\n      } else { e = d; }\n\n      d = (e | 0) < (f | 0) ? e : f;\n      d = (c | 0) < (d | 0) ? c : d;\n      if ((d | 0) <= 0) { return; }\n      b[a >> 2] = f - d;\n      b[h >> 2] = e - d;\n      b[i >> 2] = c - d;\n      return;\n    }\n\n    function Ma(a, c) {\n      a = a | 0;\n      c = c | 0;\n      var d = 0,\n          e = 0,\n          f = 0,\n          g = 0,\n          h = 0,\n          i = 0;\n      if ((c + -1 | 0) >>> 0 >= 6) { return; }\n      f = (b[15472 + (c * 12 | 0) >> 2] | 0) + (b[a >> 2] | 0) | 0;\n      b[a >> 2] = f;\n      i = a + 4 | 0;\n      e = (b[15472 + (c * 12 | 0) + 4 >> 2] | 0) + (b[i >> 2] | 0) | 0;\n      b[i >> 2] = e;\n      h = a + 8 | 0;\n      c = (b[15472 + (c * 12 | 0) + 8 >> 2] | 0) + (b[h >> 2] | 0) | 0;\n      b[h >> 2] = c;\n      d = e - f | 0;\n\n      if ((f | 0) < 0) {\n        c = c - f | 0;\n        b[i >> 2] = d;\n        b[h >> 2] = c;\n        b[a >> 2] = 0;\n        e = 0;\n      } else {\n        d = e;\n        e = f;\n      }\n\n      if ((d | 0) < 0) {\n        e = e - d | 0;\n        b[a >> 2] = e;\n        c = c - d | 0;\n        b[h >> 2] = c;\n        b[i >> 2] = 0;\n        d = 0;\n      }\n\n      g = e - c | 0;\n      f = d - c | 0;\n\n      if ((c | 0) < 0) {\n        b[a >> 2] = g;\n        b[i >> 2] = f;\n        b[h >> 2] = 0;\n        e = g;\n        c = 0;\n      } else { f = d; }\n\n      d = (f | 0) < (e | 0) ? f : e;\n      d = (c | 0) < (d | 0) ? c : d;\n      if ((d | 0) <= 0) { return; }\n      b[a >> 2] = e - d;\n      b[i >> 2] = f - d;\n      b[h >> 2] = c - d;\n      return;\n    }\n\n    function Na(a) {\n      a = a | 0;\n      var c = 0,\n          d = 0,\n          e = 0,\n          f = 0,\n          g = 0,\n          h = 0,\n          i = 0;\n      f = b[a >> 2] | 0;\n      h = a + 4 | 0;\n      c = b[h >> 2] | 0;\n      i = a + 8 | 0;\n      d = b[i >> 2] | 0;\n      e = c + f | 0;\n      f = d + f | 0;\n      b[a >> 2] = f;\n      b[h >> 2] = e;\n      c = d + c | 0;\n      b[i >> 2] = c;\n      d = e - f | 0;\n\n      if ((f | 0) < 0) {\n        c = c - f | 0;\n        b[h >> 2] = d;\n        b[i >> 2] = c;\n        b[a >> 2] = 0;\n        e = 0;\n      } else {\n        d = e;\n        e = f;\n      }\n\n      if ((d | 0) < 0) {\n        e = e - d | 0;\n        b[a >> 2] = e;\n        c = c - d | 0;\n        b[i >> 2] = c;\n        b[h >> 2] = 0;\n        d = 0;\n      }\n\n      g = e - c | 0;\n      f = d - c | 0;\n\n      if ((c | 0) < 0) {\n        b[a >> 2] = g;\n        b[h >> 2] = f;\n        b[i >> 2] = 0;\n        e = g;\n        c = 0;\n      } else { f = d; }\n\n      d = (f | 0) < (e | 0) ? f : e;\n      d = (c | 0) < (d | 0) ? c : d;\n      if ((d | 0) <= 0) { return; }\n      b[a >> 2] = e - d;\n      b[h >> 2] = f - d;\n      b[i >> 2] = c - d;\n      return;\n    }\n\n    function Oa(a) {\n      a = a | 0;\n      var c = 0,\n          d = 0,\n          e = 0,\n          f = 0,\n          g = 0,\n          h = 0,\n          i = 0;\n      c = b[a >> 2] | 0;\n      h = a + 4 | 0;\n      e = b[h >> 2] | 0;\n      i = a + 8 | 0;\n      d = b[i >> 2] | 0;\n      f = e + c | 0;\n      b[a >> 2] = f;\n      e = d + e | 0;\n      b[h >> 2] = e;\n      c = d + c | 0;\n      b[i >> 2] = c;\n      d = e - f | 0;\n\n      if ((f | 0) < 0) {\n        c = c - f | 0;\n        b[h >> 2] = d;\n        b[i >> 2] = c;\n        b[a >> 2] = 0;\n        e = 0;\n      } else {\n        d = e;\n        e = f;\n      }\n\n      if ((d | 0) < 0) {\n        e = e - d | 0;\n        b[a >> 2] = e;\n        c = c - d | 0;\n        b[i >> 2] = c;\n        b[h >> 2] = 0;\n        d = 0;\n      }\n\n      g = e - c | 0;\n      f = d - c | 0;\n\n      if ((c | 0) < 0) {\n        b[a >> 2] = g;\n        b[h >> 2] = f;\n        b[i >> 2] = 0;\n        e = g;\n        c = 0;\n      } else { f = d; }\n\n      d = (f | 0) < (e | 0) ? f : e;\n      d = (c | 0) < (d | 0) ? c : d;\n      if ((d | 0) <= 0) { return; }\n      b[a >> 2] = e - d;\n      b[h >> 2] = f - d;\n      b[i >> 2] = c - d;\n      return;\n    }\n\n    function Pa(a) {\n      a = a | 0;\n\n      switch (a | 0) {\n        case 1:\n          {\n            a = 5;\n            break;\n          }\n\n        case 5:\n          {\n            a = 4;\n            break;\n          }\n\n        case 4:\n          {\n            a = 6;\n            break;\n          }\n\n        case 6:\n          {\n            a = 2;\n            break;\n          }\n\n        case 2:\n          {\n            a = 3;\n            break;\n          }\n\n        case 3:\n          {\n            a = 1;\n            break;\n          }\n\n        default:\n\n      }\n\n      return a | 0;\n    }\n\n    function Qa(a) {\n      a = a | 0;\n\n      switch (a | 0) {\n        case 1:\n          {\n            a = 3;\n            break;\n          }\n\n        case 3:\n          {\n            a = 2;\n            break;\n          }\n\n        case 2:\n          {\n            a = 6;\n            break;\n          }\n\n        case 6:\n          {\n            a = 4;\n            break;\n          }\n\n        case 4:\n          {\n            a = 5;\n            break;\n          }\n\n        case 5:\n          {\n            a = 1;\n            break;\n          }\n\n        default:\n\n      }\n\n      return a | 0;\n    }\n\n    function Ra(a) {\n      a = a | 0;\n      var c = 0,\n          d = 0,\n          e = 0,\n          f = 0,\n          g = 0,\n          h = 0,\n          i = 0;\n      c = b[a >> 2] | 0;\n      h = a + 4 | 0;\n      d = b[h >> 2] | 0;\n      i = a + 8 | 0;\n      e = b[i >> 2] | 0;\n      f = d + (c << 1) | 0;\n      b[a >> 2] = f;\n      d = e + (d << 1) | 0;\n      b[h >> 2] = d;\n      c = (e << 1) + c | 0;\n      b[i >> 2] = c;\n      e = d - f | 0;\n\n      if ((f | 0) < 0) {\n        c = c - f | 0;\n        b[h >> 2] = e;\n        b[i >> 2] = c;\n        b[a >> 2] = 0;\n        d = e;\n        e = 0;\n      } else { e = f; }\n\n      if ((d | 0) < 0) {\n        e = e - d | 0;\n        b[a >> 2] = e;\n        c = c - d | 0;\n        b[i >> 2] = c;\n        b[h >> 2] = 0;\n        d = 0;\n      }\n\n      g = e - c | 0;\n      f = d - c | 0;\n\n      if ((c | 0) < 0) {\n        b[a >> 2] = g;\n        b[h >> 2] = f;\n        b[i >> 2] = 0;\n        e = g;\n        c = 0;\n      } else { f = d; }\n\n      d = (f | 0) < (e | 0) ? f : e;\n      d = (c | 0) < (d | 0) ? c : d;\n      if ((d | 0) <= 0) { return; }\n      b[a >> 2] = e - d;\n      b[h >> 2] = f - d;\n      b[i >> 2] = c - d;\n      return;\n    }\n\n    function Sa(a) {\n      a = a | 0;\n      var c = 0,\n          d = 0,\n          e = 0,\n          f = 0,\n          g = 0,\n          h = 0,\n          i = 0;\n      f = b[a >> 2] | 0;\n      h = a + 4 | 0;\n      c = b[h >> 2] | 0;\n      i = a + 8 | 0;\n      d = b[i >> 2] | 0;\n      e = (c << 1) + f | 0;\n      f = d + (f << 1) | 0;\n      b[a >> 2] = f;\n      b[h >> 2] = e;\n      c = (d << 1) + c | 0;\n      b[i >> 2] = c;\n      d = e - f | 0;\n\n      if ((f | 0) < 0) {\n        c = c - f | 0;\n        b[h >> 2] = d;\n        b[i >> 2] = c;\n        b[a >> 2] = 0;\n        f = 0;\n      } else { d = e; }\n\n      if ((d | 0) < 0) {\n        f = f - d | 0;\n        b[a >> 2] = f;\n        c = c - d | 0;\n        b[i >> 2] = c;\n        b[h >> 2] = 0;\n        d = 0;\n      }\n\n      g = f - c | 0;\n      e = d - c | 0;\n\n      if ((c | 0) < 0) {\n        b[a >> 2] = g;\n        b[h >> 2] = e;\n        b[i >> 2] = 0;\n        f = g;\n        c = 0;\n      } else { e = d; }\n\n      d = (e | 0) < (f | 0) ? e : f;\n      d = (c | 0) < (d | 0) ? c : d;\n      if ((d | 0) <= 0) { return; }\n      b[a >> 2] = f - d;\n      b[h >> 2] = e - d;\n      b[i >> 2] = c - d;\n      return;\n    }\n\n    function Ta(a, c) {\n      a = a | 0;\n      c = c | 0;\n      var d = 0,\n          e = 0,\n          f = 0,\n          g = 0,\n          h = 0,\n          i = 0;\n      h = (b[a >> 2] | 0) - (b[c >> 2] | 0) | 0;\n      i = (h | 0) < 0;\n      e = (b[a + 4 >> 2] | 0) - (b[c + 4 >> 2] | 0) - (i ? h : 0) | 0;\n      g = (e | 0) < 0;\n      f = (i ? 0 - h | 0 : 0) + (b[a + 8 >> 2] | 0) - (b[c + 8 >> 2] | 0) + (g ? 0 - e | 0 : 0) | 0;\n      a = (f | 0) < 0;\n      c = a ? 0 : f;\n      d = (g ? 0 : e) - (a ? f : 0) | 0;\n      f = (i ? 0 : h) - (g ? e : 0) - (a ? f : 0) | 0;\n      a = (d | 0) < (f | 0) ? d : f;\n      a = (c | 0) < (a | 0) ? c : a;\n      e = (a | 0) > 0;\n      c = c - (e ? a : 0) | 0;\n      d = d - (e ? a : 0) | 0;\n      a = f - (e ? a : 0) | 0;\n      a = (a | 0) > -1 ? a : 0 - a | 0;\n      d = (d | 0) > -1 ? d : 0 - d | 0;\n      c = (c | 0) > -1 ? c : 0 - c | 0;\n      c = (d | 0) > (c | 0) ? d : c;\n      return ((a | 0) > (c | 0) ? a : c) | 0;\n    }\n\n    function Ua(a, c) {\n      a = a | 0;\n      c = c | 0;\n      var d = 0;\n      d = b[a + 8 >> 2] | 0;\n      b[c >> 2] = (b[a >> 2] | 0) - d;\n      b[c + 4 >> 2] = (b[a + 4 >> 2] | 0) - d;\n      return;\n    }\n\n    function Va(a, c) {\n      a = a | 0;\n      c = c | 0;\n      var d = 0,\n          e = 0,\n          f = 0,\n          g = 0,\n          h = 0,\n          i = 0;\n      e = b[a >> 2] | 0;\n      b[c >> 2] = e;\n      a = b[a + 4 >> 2] | 0;\n      h = c + 4 | 0;\n      b[h >> 2] = a;\n      i = c + 8 | 0;\n      b[i >> 2] = 0;\n      d = a - e | 0;\n\n      if ((e | 0) < 0) {\n        a = 0 - e | 0;\n        b[h >> 2] = d;\n        b[i >> 2] = a;\n        b[c >> 2] = 0;\n        e = 0;\n      } else {\n        d = a;\n        a = 0;\n      }\n\n      if ((d | 0) < 0) {\n        e = e - d | 0;\n        b[c >> 2] = e;\n        a = a - d | 0;\n        b[i >> 2] = a;\n        b[h >> 2] = 0;\n        d = 0;\n      }\n\n      g = e - a | 0;\n      f = d - a | 0;\n\n      if ((a | 0) < 0) {\n        b[c >> 2] = g;\n        b[h >> 2] = f;\n        b[i >> 2] = 0;\n        d = f;\n        f = g;\n        a = 0;\n      } else { f = e; }\n\n      e = (d | 0) < (f | 0) ? d : f;\n      e = (a | 0) < (e | 0) ? a : e;\n      if ((e | 0) <= 0) { return; }\n      b[c >> 2] = f - e;\n      b[h >> 2] = d - e;\n      b[i >> 2] = a - e;\n      return;\n    }\n\n    function Wa(a) {\n      a = a | 0;\n      var c = 0,\n          d = 0,\n          e = 0,\n          f = 0;\n      c = a + 8 | 0;\n      f = b[c >> 2] | 0;\n      d = f - (b[a >> 2] | 0) | 0;\n      b[a >> 2] = d;\n      e = a + 4 | 0;\n      a = (b[e >> 2] | 0) - f | 0;\n      b[e >> 2] = a;\n      b[c >> 2] = 0 - (a + d);\n      return;\n    }\n\n    function Xa(a) {\n      a = a | 0;\n      var c = 0,\n          d = 0,\n          e = 0,\n          f = 0,\n          g = 0,\n          h = 0,\n          i = 0;\n      d = b[a >> 2] | 0;\n      c = 0 - d | 0;\n      b[a >> 2] = c;\n      h = a + 8 | 0;\n      b[h >> 2] = 0;\n      i = a + 4 | 0;\n      e = b[i >> 2] | 0;\n      f = e + d | 0;\n\n      if ((d | 0) > 0) {\n        b[i >> 2] = f;\n        b[h >> 2] = d;\n        b[a >> 2] = 0;\n        c = 0;\n        e = f;\n      } else { d = 0; }\n\n      if ((e | 0) < 0) {\n        g = c - e | 0;\n        b[a >> 2] = g;\n        d = d - e | 0;\n        b[h >> 2] = d;\n        b[i >> 2] = 0;\n        f = g - d | 0;\n        c = 0 - d | 0;\n\n        if ((d | 0) < 0) {\n          b[a >> 2] = f;\n          b[i >> 2] = c;\n          b[h >> 2] = 0;\n          e = c;\n          d = 0;\n        } else {\n          e = 0;\n          f = g;\n        }\n      } else { f = c; }\n\n      c = (e | 0) < (f | 0) ? e : f;\n      c = (d | 0) < (c | 0) ? d : c;\n      if ((c | 0) <= 0) { return; }\n      b[a >> 2] = f - c;\n      b[i >> 2] = e - c;\n      b[h >> 2] = d - c;\n      return;\n    }\n\n    function Ya(a, b, c) {\n      a = a | 0;\n      b = b | 0;\n      c = c | 0;\n      var d = 0,\n          e = 0;\n      d = S;\n      S = S + 16 | 0;\n      e = d;\n      Za(a, b, c, e);\n      Ba(e, c + 4 | 0);\n      S = d;\n      return;\n    }\n\n    function Za(a, c, d, f) {\n      a = a | 0;\n      c = c | 0;\n      d = d | 0;\n      f = f | 0;\n      var g = 0.0,\n          h = 0,\n          i = 0.0,\n          j = 0.0,\n          k = 0;\n      k = S;\n      S = S + 32 | 0;\n      h = k;\n      Jc(a, h);\n      b[d >> 2] = 0;\n      g = +Ic(15888, h);\n      i = +Ic(15912, h);\n\n      if (i < g) {\n        b[d >> 2] = 1;\n        g = i;\n      }\n\n      i = +Ic(15936, h);\n\n      if (i < g) {\n        b[d >> 2] = 2;\n        g = i;\n      }\n\n      i = +Ic(15960, h);\n\n      if (i < g) {\n        b[d >> 2] = 3;\n        g = i;\n      }\n\n      i = +Ic(15984, h);\n\n      if (i < g) {\n        b[d >> 2] = 4;\n        g = i;\n      }\n\n      i = +Ic(16008, h);\n\n      if (i < g) {\n        b[d >> 2] = 5;\n        g = i;\n      }\n\n      i = +Ic(16032, h);\n\n      if (i < g) {\n        b[d >> 2] = 6;\n        g = i;\n      }\n\n      i = +Ic(16056, h);\n\n      if (i < g) {\n        b[d >> 2] = 7;\n        g = i;\n      }\n\n      i = +Ic(16080, h);\n\n      if (i < g) {\n        b[d >> 2] = 8;\n        g = i;\n      }\n\n      i = +Ic(16104, h);\n\n      if (i < g) {\n        b[d >> 2] = 9;\n        g = i;\n      }\n\n      i = +Ic(16128, h);\n\n      if (i < g) {\n        b[d >> 2] = 10;\n        g = i;\n      }\n\n      i = +Ic(16152, h);\n\n      if (i < g) {\n        b[d >> 2] = 11;\n        g = i;\n      }\n\n      i = +Ic(16176, h);\n\n      if (i < g) {\n        b[d >> 2] = 12;\n        g = i;\n      }\n\n      i = +Ic(16200, h);\n\n      if (i < g) {\n        b[d >> 2] = 13;\n        g = i;\n      }\n\n      i = +Ic(16224, h);\n\n      if (i < g) {\n        b[d >> 2] = 14;\n        g = i;\n      }\n\n      i = +Ic(16248, h);\n\n      if (i < g) {\n        b[d >> 2] = 15;\n        g = i;\n      }\n\n      i = +Ic(16272, h);\n\n      if (i < g) {\n        b[d >> 2] = 16;\n        g = i;\n      }\n\n      i = +Ic(16296, h);\n\n      if (i < g) {\n        b[d >> 2] = 17;\n        g = i;\n      }\n\n      i = +Ic(16320, h);\n\n      if (i < g) {\n        b[d >> 2] = 18;\n        g = i;\n      }\n\n      i = +Ic(16344, h);\n\n      if (i < g) {\n        b[d >> 2] = 19;\n        g = i;\n      }\n\n      i = +w(+(1.0 - g * .5));\n\n      if (i < 1.0e-16) {\n        b[f >> 2] = 0;\n        b[f + 4 >> 2] = 0;\n        b[f + 8 >> 2] = 0;\n        b[f + 12 >> 2] = 0;\n        S = k;\n        return;\n      }\n\n      d = b[d >> 2] | 0;\n      g = +e[16368 + (d * 24 | 0) >> 3];\n      g = +gb(g - +gb(+lb(15568 + (d << 4) | 0, a)));\n      if (!(Rb(c) | 0)) { j = g; }else { j = +gb(g + -.3334731722518321); }\n      g = +v(+i) / .381966011250105;\n\n      if ((c | 0) > 0) {\n        h = 0;\n\n        do {\n          g = g * 2.6457513110645907;\n          h = h + 1 | 0;\n        } while ((h | 0) != (c | 0));\n      }\n\n      i = +t(+j) * g;\n      e[f >> 3] = i;\n      j = +u(+j) * g;\n      e[f + 8 >> 3] = j;\n      S = k;\n      return;\n    }\n\n    function _a(a, c, d, f, g) {\n      a = a | 0;\n      c = c | 0;\n      d = d | 0;\n      f = f | 0;\n      g = g | 0;\n      var h = 0.0,\n          i = 0.0;\n      h = +Fc(a);\n\n      if (h < 1.0e-16) {\n        c = 15568 + (c << 4) | 0;\n        b[g >> 2] = b[c >> 2];\n        b[g + 4 >> 2] = b[c + 4 >> 2];\n        b[g + 8 >> 2] = b[c + 8 >> 2];\n        b[g + 12 >> 2] = b[c + 12 >> 2];\n        return;\n      }\n\n      i = +z(+ +e[a + 8 >> 3], + +e[a >> 3]);\n\n      if ((d | 0) > 0) {\n        a = 0;\n\n        do {\n          h = h / 2.6457513110645907;\n          a = a + 1 | 0;\n        } while ((a | 0) != (d | 0));\n      }\n\n      if (!f) {\n        h = +y(+(h * .381966011250105));\n        if (Rb(d) | 0) { i = +gb(i + .3334731722518321); }\n      } else {\n        h = h / 3.0;\n        d = (Rb(d) | 0) == 0;\n        h = +y(+((d ? h : h / 2.6457513110645907) * .381966011250105));\n      }\n\n      mb(15568 + (c << 4) | 0, +gb(+e[16368 + (c * 24 | 0) >> 3] - i), h, g);\n      return;\n    }\n\n    function $a(a, c, d) {\n      a = a | 0;\n      c = c | 0;\n      d = d | 0;\n      var e = 0,\n          f = 0;\n      e = S;\n      S = S + 16 | 0;\n      f = e;\n      Da(a + 4 | 0, f);\n\n      _a(f, b[a >> 2] | 0, c, 0, d);\n\n      S = e;\n      return;\n    }\n\n    function ab(a, c, d, f, g) {\n      a = a | 0;\n      c = c | 0;\n      d = d | 0;\n      f = f | 0;\n      g = g | 0;\n      var h = 0,\n          i = 0,\n          j = 0,\n          k = 0,\n          l = 0,\n          m = 0,\n          n = 0,\n          o = 0,\n          p = 0,\n          q = 0,\n          r = 0,\n          s = 0,\n          t = 0,\n          u = 0,\n          v = 0,\n          w = 0,\n          x = 0,\n          y = 0,\n          z = 0,\n          A = 0,\n          B = 0,\n          C = 0,\n          D = 0,\n          E = 0,\n          F = 0,\n          G = 0,\n          I = 0.0,\n          J = 0.0;\n      G = S;\n      S = S + 272 | 0;\n      h = G + 256 | 0;\n      u = G + 240 | 0;\n      D = G;\n      E = G + 224 | 0;\n      F = G + 208 | 0;\n      v = G + 176 | 0;\n      w = G + 160 | 0;\n      x = G + 192 | 0;\n      y = G + 144 | 0;\n      z = G + 128 | 0;\n      A = G + 112 | 0;\n      B = G + 96 | 0;\n      C = G + 80 | 0;\n      b[h >> 2] = c;\n      b[u >> 2] = b[a >> 2];\n      b[u + 4 >> 2] = b[a + 4 >> 2];\n      b[u + 8 >> 2] = b[a + 8 >> 2];\n      b[u + 12 >> 2] = b[a + 12 >> 2];\n      bb(u, h, D);\n      b[g >> 2] = 0;\n      u = f + d + ((f | 0) == 5 & 1) | 0;\n\n      if ((u | 0) <= (d | 0)) {\n        S = G;\n        return;\n      }\n\n      k = b[h >> 2] | 0;\n      l = E + 4 | 0;\n      m = v + 4 | 0;\n      n = d + 5 | 0;\n      o = 16848 + (k << 2) | 0;\n      p = 16928 + (k << 2) | 0;\n      q = z + 8 | 0;\n      r = A + 8 | 0;\n      s = B + 8 | 0;\n      t = F + 4 | 0;\n      j = d;\n\n      a: while (1) {\n        i = D + (((j | 0) % 5 | 0) << 4) | 0;\n        b[F >> 2] = b[i >> 2];\n        b[F + 4 >> 2] = b[i + 4 >> 2];\n        b[F + 8 >> 2] = b[i + 8 >> 2];\n        b[F + 12 >> 2] = b[i + 12 >> 2];\n\n        do {} while ((cb(F, k, 0, 1) | 0) == 2);\n\n        if ((j | 0) > (d | 0) & (Rb(c) | 0) != 0) {\n          b[v >> 2] = b[F >> 2];\n          b[v + 4 >> 2] = b[F + 4 >> 2];\n          b[v + 8 >> 2] = b[F + 8 >> 2];\n          b[v + 12 >> 2] = b[F + 12 >> 2];\n          Da(l, w);\n          f = b[v >> 2] | 0;\n          h = b[17008 + (f * 80 | 0) + (b[E >> 2] << 2) >> 2] | 0;\n          b[v >> 2] = b[18608 + (f * 80 | 0) + (h * 20 | 0) >> 2];\n          i = b[18608 + (f * 80 | 0) + (h * 20 | 0) + 16 >> 2] | 0;\n\n          if ((i | 0) > 0) {\n            a = 0;\n\n            do {\n              Na(m);\n              a = a + 1 | 0;\n            } while ((a | 0) < (i | 0));\n          }\n\n          i = 18608 + (f * 80 | 0) + (h * 20 | 0) + 4 | 0;\n          b[x >> 2] = b[i >> 2];\n          b[x + 4 >> 2] = b[i + 4 >> 2];\n          b[x + 8 >> 2] = b[i + 8 >> 2];\n          Ga(x, (b[o >> 2] | 0) * 3 | 0);\n          Ea(m, x, m);\n          Ca(m);\n          Da(m, y);\n          I = +(b[p >> 2] | 0);\n          e[z >> 3] = I * 3.0;\n          e[q >> 3] = 0.0;\n          J = I * -1.5;\n          e[A >> 3] = J;\n          e[r >> 3] = I * 2.598076211353316;\n          e[B >> 3] = J;\n          e[s >> 3] = I * -2.598076211353316;\n\n          switch (b[17008 + ((b[v >> 2] | 0) * 80 | 0) + (b[F >> 2] << 2) >> 2] | 0) {\n            case 1:\n              {\n                a = A;\n                f = z;\n                break;\n              }\n\n            case 3:\n              {\n                a = B;\n                f = A;\n                break;\n              }\n\n            case 2:\n              {\n                a = z;\n                f = B;\n                break;\n              }\n\n            default:\n              {\n                a = 12;\n                break a;\n              }\n          }\n\n          Gc(w, y, f, a, C);\n\n          _a(C, b[v >> 2] | 0, k, 1, g + 8 + (b[g >> 2] << 4) | 0);\n\n          b[g >> 2] = (b[g >> 2] | 0) + 1;\n        }\n\n        if ((j | 0) < (n | 0)) {\n          Da(t, v);\n\n          _a(v, b[F >> 2] | 0, k, 1, g + 8 + (b[g >> 2] << 4) | 0);\n\n          b[g >> 2] = (b[g >> 2] | 0) + 1;\n        }\n        b[E >> 2] = b[F >> 2];\n        b[E + 4 >> 2] = b[F + 4 >> 2];\n        b[E + 8 >> 2] = b[F + 8 >> 2];\n        b[E + 12 >> 2] = b[F + 12 >> 2];\n        j = j + 1 | 0;\n\n        if ((j | 0) >= (u | 0)) {\n          a = 3;\n          break;\n        }\n      }\n\n      if ((a | 0) == 3) {\n        S = G;\n        return;\n      } else if ((a | 0) == 12) { H(22474, 22521, 581, 22531); }\n    }\n\n    function bb(a, c, d) {\n      a = a | 0;\n      c = c | 0;\n      d = d | 0;\n      var e = 0,\n          f = 0,\n          g = 0,\n          h = 0,\n          i = 0,\n          j = 0;\n      j = S;\n      S = S + 128 | 0;\n      e = j + 64 | 0;\n      f = j;\n      g = e;\n      h = 20208;\n      i = g + 60 | 0;\n\n      do {\n        b[g >> 2] = b[h >> 2];\n        g = g + 4 | 0;\n        h = h + 4 | 0;\n      } while ((g | 0) < (i | 0));\n\n      g = f;\n      h = 20272;\n      i = g + 60 | 0;\n\n      do {\n        b[g >> 2] = b[h >> 2];\n        g = g + 4 | 0;\n        h = h + 4 | 0;\n      } while ((g | 0) < (i | 0));\n\n      i = (Rb(b[c >> 2] | 0) | 0) == 0;\n      e = i ? e : f;\n      f = a + 4 | 0;\n      Ra(f);\n      Sa(f);\n\n      if (Rb(b[c >> 2] | 0) | 0) {\n        La(f);\n        b[c >> 2] = (b[c >> 2] | 0) + 1;\n      }\n\n      b[d >> 2] = b[a >> 2];\n      c = d + 4 | 0;\n      Ea(f, e, c);\n      Ca(c);\n      b[d + 16 >> 2] = b[a >> 2];\n      c = d + 20 | 0;\n      Ea(f, e + 12 | 0, c);\n      Ca(c);\n      b[d + 32 >> 2] = b[a >> 2];\n      c = d + 36 | 0;\n      Ea(f, e + 24 | 0, c);\n      Ca(c);\n      b[d + 48 >> 2] = b[a >> 2];\n      c = d + 52 | 0;\n      Ea(f, e + 36 | 0, c);\n      Ca(c);\n      b[d + 64 >> 2] = b[a >> 2];\n      d = d + 68 | 0;\n      Ea(f, e + 48 | 0, d);\n      Ca(d);\n      S = j;\n      return;\n    }\n\n    function cb(a, c, d, e) {\n      a = a | 0;\n      c = c | 0;\n      d = d | 0;\n      e = e | 0;\n      var f = 0,\n          g = 0,\n          h = 0,\n          i = 0,\n          j = 0,\n          k = 0,\n          l = 0,\n          m = 0,\n          n = 0,\n          o = 0,\n          p = 0;\n      p = S;\n      S = S + 32 | 0;\n      n = p + 12 | 0;\n      i = p;\n      o = a + 4 | 0;\n      m = b[16928 + (c << 2) >> 2] | 0;\n      l = (e | 0) != 0;\n      m = l ? m * 3 | 0 : m;\n      f = b[o >> 2] | 0;\n      k = a + 8 | 0;\n      h = b[k >> 2] | 0;\n\n      if (l) {\n        g = a + 12 | 0;\n        e = b[g >> 2] | 0;\n        f = h + f + e | 0;\n\n        if ((f | 0) == (m | 0)) {\n          o = 1;\n          S = p;\n          return o | 0;\n        } else { j = g; }\n      } else {\n        j = a + 12 | 0;\n        e = b[j >> 2] | 0;\n        f = h + f + e | 0;\n      }\n\n      if ((f | 0) <= (m | 0)) {\n        o = 0;\n        S = p;\n        return o | 0;\n      }\n\n      do { if ((e | 0) > 0) {\n        e = b[a >> 2] | 0;\n\n        if ((h | 0) > 0) {\n          g = 18608 + (e * 80 | 0) + 60 | 0;\n          e = a;\n          break;\n        }\n\n        e = 18608 + (e * 80 | 0) + 40 | 0;\n\n        if (!d) {\n          g = e;\n          e = a;\n        } else {\n          Aa(n, m, 0, 0);\n          Fa(o, n, i);\n          Oa(i);\n          Ea(i, n, o);\n          g = e;\n          e = a;\n        }\n      } else {\n        g = 18608 + ((b[a >> 2] | 0) * 80 | 0) + 20 | 0;\n        e = a;\n      } } while (0);\n\n      b[e >> 2] = b[g >> 2];\n      f = g + 16 | 0;\n\n      if ((b[f >> 2] | 0) > 0) {\n        e = 0;\n\n        do {\n          Na(o);\n          e = e + 1 | 0;\n        } while ((e | 0) < (b[f >> 2] | 0));\n      }\n\n      a = g + 4 | 0;\n      b[n >> 2] = b[a >> 2];\n      b[n + 4 >> 2] = b[a + 4 >> 2];\n      b[n + 8 >> 2] = b[a + 8 >> 2];\n      c = b[16848 + (c << 2) >> 2] | 0;\n      Ga(n, l ? c * 3 | 0 : c);\n      Ea(o, n, o);\n      Ca(o);\n      if (l) { e = ((b[k >> 2] | 0) + (b[o >> 2] | 0) + (b[j >> 2] | 0) | 0) == (m | 0) ? 1 : 2; }else { e = 2; }\n      o = e;\n      S = p;\n      return o | 0;\n    }\n\n    function db(a, b) {\n      a = a | 0;\n      b = b | 0;\n      var c = 0;\n\n      do { c = cb(a, b, 0, 1) | 0; } while ((c | 0) == 2);\n\n      return c | 0;\n    }\n\n    function eb(a, c, d, f, g) {\n      a = a | 0;\n      c = c | 0;\n      d = d | 0;\n      f = f | 0;\n      g = g | 0;\n      var h = 0,\n          i = 0,\n          j = 0,\n          k = 0,\n          l = 0,\n          m = 0,\n          n = 0,\n          o = 0,\n          p = 0,\n          q = 0,\n          r = 0,\n          s = 0,\n          t = 0,\n          u = 0,\n          v = 0,\n          w = 0,\n          x = 0,\n          y = 0,\n          z = 0,\n          A = 0,\n          B = 0,\n          C = 0.0,\n          D = 0.0;\n      B = S;\n      S = S + 240 | 0;\n      h = B + 224 | 0;\n      x = B + 208 | 0;\n      y = B;\n      z = B + 192 | 0;\n      A = B + 176 | 0;\n      s = B + 160 | 0;\n      t = B + 144 | 0;\n      u = B + 128 | 0;\n      v = B + 112 | 0;\n      w = B + 96 | 0;\n      b[h >> 2] = c;\n      b[x >> 2] = b[a >> 2];\n      b[x + 4 >> 2] = b[a + 4 >> 2];\n      b[x + 8 >> 2] = b[a + 8 >> 2];\n      b[x + 12 >> 2] = b[a + 12 >> 2];\n      fb(x, h, y);\n      b[g >> 2] = 0;\n      r = f + d + ((f | 0) == 6 & 1) | 0;\n\n      if ((r | 0) <= (d | 0)) {\n        S = B;\n        return;\n      }\n\n      k = b[h >> 2] | 0;\n      l = d + 6 | 0;\n      m = 16928 + (k << 2) | 0;\n      n = t + 8 | 0;\n      o = u + 8 | 0;\n      p = v + 8 | 0;\n      q = z + 4 | 0;\n      i = 0;\n      j = d;\n      f = -1;\n\n      a: while (1) {\n        h = (j | 0) % 6 | 0;\n        a = y + (h << 4) | 0;\n        b[z >> 2] = b[a >> 2];\n        b[z + 4 >> 2] = b[a + 4 >> 2];\n        b[z + 8 >> 2] = b[a + 8 >> 2];\n        b[z + 12 >> 2] = b[a + 12 >> 2];\n        a = i;\n        i = cb(z, k, 0, 1) | 0;\n\n        if ((j | 0) > (d | 0) & (Rb(c) | 0) != 0 ? (a | 0) != 1 ? (b[z >> 2] | 0) != (f | 0) : 0 : 0) {\n          Da(y + (((h + 5 | 0) % 6 | 0) << 4) + 4 | 0, A);\n          Da(y + (h << 4) + 4 | 0, s);\n          C = +(b[m >> 2] | 0);\n          e[t >> 3] = C * 3.0;\n          e[n >> 3] = 0.0;\n          D = C * -1.5;\n          e[u >> 3] = D;\n          e[o >> 3] = C * 2.598076211353316;\n          e[v >> 3] = D;\n          e[p >> 3] = C * -2.598076211353316;\n          h = b[x >> 2] | 0;\n\n          switch (b[17008 + (h * 80 | 0) + (((f | 0) == (h | 0) ? b[z >> 2] | 0 : f) << 2) >> 2] | 0) {\n            case 1:\n              {\n                a = u;\n                f = t;\n                break;\n              }\n\n            case 3:\n              {\n                a = v;\n                f = u;\n                break;\n              }\n\n            case 2:\n              {\n                a = t;\n                f = v;\n                break;\n              }\n\n            default:\n              {\n                a = 8;\n                break a;\n              }\n          }\n\n          Gc(A, s, f, a, w);\n\n          if (!(Hc(A, w) | 0) ? !(Hc(s, w) | 0) : 0) {\n            _a(w, b[x >> 2] | 0, k, 1, g + 8 + (b[g >> 2] << 4) | 0);\n\n            b[g >> 2] = (b[g >> 2] | 0) + 1;\n          }\n        }\n\n        if ((j | 0) < (l | 0)) {\n          Da(q, A);\n\n          _a(A, b[z >> 2] | 0, k, 1, g + 8 + (b[g >> 2] << 4) | 0);\n\n          b[g >> 2] = (b[g >> 2] | 0) + 1;\n        }\n\n        j = j + 1 | 0;\n\n        if ((j | 0) >= (r | 0)) {\n          a = 3;\n          break;\n        } else { f = b[z >> 2] | 0; }\n      }\n\n      if ((a | 0) == 3) {\n        S = B;\n        return;\n      } else if ((a | 0) == 8) { H(22557, 22521, 746, 22602); }\n    }\n\n    function fb(a, c, d) {\n      a = a | 0;\n      c = c | 0;\n      d = d | 0;\n      var e = 0,\n          f = 0,\n          g = 0,\n          h = 0,\n          i = 0,\n          j = 0;\n      j = S;\n      S = S + 160 | 0;\n      e = j + 80 | 0;\n      f = j;\n      g = e;\n      h = 20336;\n      i = g + 72 | 0;\n\n      do {\n        b[g >> 2] = b[h >> 2];\n        g = g + 4 | 0;\n        h = h + 4 | 0;\n      } while ((g | 0) < (i | 0));\n\n      g = f;\n      h = 20416;\n      i = g + 72 | 0;\n\n      do {\n        b[g >> 2] = b[h >> 2];\n        g = g + 4 | 0;\n        h = h + 4 | 0;\n      } while ((g | 0) < (i | 0));\n\n      i = (Rb(b[c >> 2] | 0) | 0) == 0;\n      e = i ? e : f;\n      f = a + 4 | 0;\n      Ra(f);\n      Sa(f);\n\n      if (Rb(b[c >> 2] | 0) | 0) {\n        La(f);\n        b[c >> 2] = (b[c >> 2] | 0) + 1;\n      }\n\n      b[d >> 2] = b[a >> 2];\n      c = d + 4 | 0;\n      Ea(f, e, c);\n      Ca(c);\n      b[d + 16 >> 2] = b[a >> 2];\n      c = d + 20 | 0;\n      Ea(f, e + 12 | 0, c);\n      Ca(c);\n      b[d + 32 >> 2] = b[a >> 2];\n      c = d + 36 | 0;\n      Ea(f, e + 24 | 0, c);\n      Ca(c);\n      b[d + 48 >> 2] = b[a >> 2];\n      c = d + 52 | 0;\n      Ea(f, e + 36 | 0, c);\n      Ca(c);\n      b[d + 64 >> 2] = b[a >> 2];\n      c = d + 68 | 0;\n      Ea(f, e + 48 | 0, c);\n      Ca(c);\n      b[d + 80 >> 2] = b[a >> 2];\n      d = d + 84 | 0;\n      Ea(f, e + 60 | 0, d);\n      Ca(d);\n      S = j;\n      return;\n    }\n\n    function gb(a) {\n      a = +a;\n      var b = 0.0;\n      b = a < 0.0 ? a + 6.283185307179586 : a;\n      return +(!(a >= 6.283185307179586) ? b : b + -6.283185307179586);\n    }\n\n    function hb(a, b) {\n      a = a | 0;\n      b = b | 0;\n\n      if (!(+q(+(+e[a >> 3] - +e[b >> 3])) < 1.7453292519943298e-11)) {\n        b = 0;\n        return b | 0;\n      }\n\n      b = +q(+(+e[a + 8 >> 3] - +e[b + 8 >> 3])) < 1.7453292519943298e-11;\n      return b | 0;\n    }\n\n    function ib(a, b) {\n      a = a | 0;\n      b = b | 0;\n      var c = 0.0,\n          d = 0.0,\n          f = 0.0,\n          g = 0.0;\n      f = +e[b >> 3];\n      d = +e[a >> 3];\n      g = +u(+((f - d) * .5));\n      c = +u(+((+e[b + 8 >> 3] - +e[a + 8 >> 3]) * .5));\n      c = g * g + c * (+t(+f) * +t(+d) * c);\n      return +(+z(+ +r(+c), + +r(+(1.0 - c))) * 2.0);\n    }\n\n    function jb(a, b) {\n      a = a | 0;\n      b = b | 0;\n      var c = 0.0,\n          d = 0.0,\n          f = 0.0,\n          g = 0.0;\n      f = +e[b >> 3];\n      d = +e[a >> 3];\n      g = +u(+((f - d) * .5));\n      c = +u(+((+e[b + 8 >> 3] - +e[a + 8 >> 3]) * .5));\n      c = g * g + c * (+t(+f) * +t(+d) * c);\n      return +(+z(+ +r(+c), + +r(+(1.0 - c))) * 2.0 * 6371.007180918475);\n    }\n\n    function kb(a, b) {\n      a = a | 0;\n      b = b | 0;\n      var c = 0.0,\n          d = 0.0,\n          f = 0.0,\n          g = 0.0;\n      f = +e[b >> 3];\n      d = +e[a >> 3];\n      g = +u(+((f - d) * .5));\n      c = +u(+((+e[b + 8 >> 3] - +e[a + 8 >> 3]) * .5));\n      c = g * g + c * (+t(+f) * +t(+d) * c);\n      return +(+z(+ +r(+c), + +r(+(1.0 - c))) * 2.0 * 6371.007180918475 * 1.0e3);\n    }\n\n    function lb(a, b) {\n      a = a | 0;\n      b = b | 0;\n      var c = 0.0,\n          d = 0.0,\n          f = 0.0,\n          g = 0.0,\n          h = 0.0;\n      g = +e[b >> 3];\n      d = +t(+g);\n      f = +e[b + 8 >> 3] - +e[a + 8 >> 3];\n      h = d * +u(+f);\n      c = +e[a >> 3];\n      return + +z(+h, +(+u(+g) * +t(+c) - +t(+f) * (d * +u(+c))));\n    }\n\n    function mb(a, c, d, f) {\n      a = a | 0;\n      c = +c;\n      d = +d;\n      f = f | 0;\n      var g = 0,\n          h = 0.0,\n          i = 0.0,\n          j = 0.0;\n\n      if (d < 1.0e-16) {\n        b[f >> 2] = b[a >> 2];\n        b[f + 4 >> 2] = b[a + 4 >> 2];\n        b[f + 8 >> 2] = b[a + 8 >> 2];\n        b[f + 12 >> 2] = b[a + 12 >> 2];\n        return;\n      }\n\n      h = c < 0.0 ? c + 6.283185307179586 : c;\n      h = !(c >= 6.283185307179586) ? h : h + -6.283185307179586;\n\n      do { if (h < 1.0e-16) {\n        c = +e[a >> 3] + d;\n        e[f >> 3] = c;\n        g = f;\n      } else {\n        g = +q(+(h + -3.141592653589793)) < 1.0e-16;\n        c = +e[a >> 3];\n\n        if (g) {\n          c = c - d;\n          e[f >> 3] = c;\n          g = f;\n          break;\n        }\n\n        i = +t(+d);\n        d = +u(+d);\n        c = i * +u(+c) + +t(+h) * (d * +t(+c));\n        c = c > 1.0 ? 1.0 : c;\n        c = +x(+(c < -1.0 ? -1.0 : c));\n        e[f >> 3] = c;\n\n        if (+q(+(c + -1.5707963267948966)) < 1.0e-16) {\n          e[f >> 3] = 1.5707963267948966;\n          e[f + 8 >> 3] = 0.0;\n          return;\n        }\n\n        if (+q(+(c + 1.5707963267948966)) < 1.0e-16) {\n          e[f >> 3] = -1.5707963267948966;\n          e[f + 8 >> 3] = 0.0;\n          return;\n        }\n\n        j = +t(+c);\n        h = d * +u(+h) / j;\n        d = +e[a >> 3];\n        c = (i - +u(+c) * +u(+d)) / +t(+d) / j;\n        i = h > 1.0 ? 1.0 : h;\n        c = c > 1.0 ? 1.0 : c;\n        c = +e[a + 8 >> 3] + +z(+(i < -1.0 ? -1.0 : i), +(c < -1.0 ? -1.0 : c));\n        if (c > 3.141592653589793) { do { c = c + -6.283185307179586; } while (c > 3.141592653589793); }\n        if (c < -3.141592653589793) { do { c = c + 6.283185307179586; } while (c < -3.141592653589793); }\n        e[f + 8 >> 3] = c;\n        return;\n      } } while (0);\n\n      if (+q(+(c + -1.5707963267948966)) < 1.0e-16) {\n        e[g >> 3] = 1.5707963267948966;\n        e[f + 8 >> 3] = 0.0;\n        return;\n      }\n\n      if (+q(+(c + 1.5707963267948966)) < 1.0e-16) {\n        e[g >> 3] = -1.5707963267948966;\n        e[f + 8 >> 3] = 0.0;\n        return;\n      }\n\n      c = +e[a + 8 >> 3];\n      if (c > 3.141592653589793) { do { c = c + -6.283185307179586; } while (c > 3.141592653589793); }\n      if (c < -3.141592653589793) { do { c = c + 6.283185307179586; } while (c < -3.141592653589793); }\n      e[f + 8 >> 3] = c;\n      return;\n    }\n\n    function nb(a) {\n      a = a | 0;\n      return + +e[20496 + (a << 3) >> 3];\n    }\n\n    function ob(a) {\n      a = a | 0;\n      return + +e[20624 + (a << 3) >> 3];\n    }\n\n    function pb(a) {\n      a = a | 0;\n      return + +e[20752 + (a << 3) >> 3];\n    }\n\n    function qb(a) {\n      a = a | 0;\n      return + +e[20880 + (a << 3) >> 3];\n    }\n\n    function rb(a) {\n      a = a | 0;\n      var c = 0;\n      c = 21008 + (a << 3) | 0;\n      a = b[c >> 2] | 0;\n      F(b[c + 4 >> 2] | 0);\n      return a | 0;\n    }\n\n    function sb(a, b, c) {\n      a = a | 0;\n      b = b | 0;\n      c = c | 0;\n      var d = 0.0,\n          f = 0.0,\n          g = 0.0,\n          h = 0.0,\n          i = 0.0,\n          j = 0.0,\n          k = 0.0,\n          l = 0.0,\n          m = 0.0,\n          n = 0.0;\n      n = +e[b >> 3];\n      l = +e[a >> 3];\n      j = +u(+((n - l) * .5));\n      g = +e[b + 8 >> 3];\n      k = +e[a + 8 >> 3];\n      h = +u(+((g - k) * .5));\n      i = +t(+l);\n      m = +t(+n);\n      h = j * j + h * (m * i * h);\n      h = +z(+ +r(+h), + +r(+(1.0 - h))) * 2.0;\n      j = +e[c >> 3];\n      n = +u(+((j - n) * .5));\n      d = +e[c + 8 >> 3];\n      g = +u(+((d - g) * .5));\n      f = +t(+j);\n      g = n * n + g * (m * f * g);\n      g = +z(+ +r(+g), + +r(+(1.0 - g))) * 2.0;\n      j = +u(+((l - j) * .5));\n      d = +u(+((k - d) * .5));\n      d = j * j + d * (i * f * d);\n      d = +z(+ +r(+d), + +r(+(1.0 - d))) * 2.0;\n      f = (h + g + d) * .5;\n      return +(+y(+ +r(+(+v(+(f * .5)) * +v(+((f - h) * .5)) * +v(+((f - g) * .5)) * +v(+((f - d) * .5))))) * 4.0);\n    }\n\n    function tb(a, c) {\n      a = a | 0;\n      c = c | 0;\n      var d = 0.0,\n          e = 0,\n          f = 0,\n          g = 0,\n          h = 0;\n      g = S;\n      S = S + 192 | 0;\n      e = g + 168 | 0;\n      f = g;\n      Vb(a, c, e);\n      Wb(a, c, f);\n      c = b[f >> 2] | 0;\n\n      if ((c | 0) <= 0) {\n        d = 0.0;\n        S = g;\n        return +d;\n      }\n\n      d = +sb(f + 8 | 0, f + 8 + (((c | 0) != 1 & 1) << 4) | 0, e) + 0.0;\n\n      if ((c | 0) == 1) {\n        S = g;\n        return +d;\n      }\n\n      a = 1;\n\n      do {\n        h = a;\n        a = a + 1 | 0;\n        d = d + +sb(f + 8 + (h << 4) | 0, f + 8 + (((a | 0) % (c | 0) | 0) << 4) | 0, e);\n      } while ((a | 0) < (c | 0));\n\n      S = g;\n      return +d;\n    }\n\n    function ub(a, c) {\n      a = a | 0;\n      c = c | 0;\n      var d = 0.0,\n          e = 0,\n          f = 0,\n          g = 0,\n          h = 0;\n      g = S;\n      S = S + 192 | 0;\n      e = g + 168 | 0;\n      f = g;\n      Vb(a, c, e);\n      Wb(a, c, f);\n      c = b[f >> 2] | 0;\n\n      if ((c | 0) > 0) {\n        d = +sb(f + 8 | 0, f + 8 + (((c | 0) != 1 & 1) << 4) | 0, e) + 0.0;\n\n        if ((c | 0) != 1) {\n          a = 1;\n\n          do {\n            h = a;\n            a = a + 1 | 0;\n            d = d + +sb(f + 8 + (h << 4) | 0, f + 8 + (((a | 0) % (c | 0) | 0) << 4) | 0, e);\n          } while ((a | 0) < (c | 0));\n        }\n      } else { d = 0.0; }\n\n      S = g;\n      return +(d * 6371.007180918475 * 6371.007180918475);\n    }\n\n    function vb(a, c) {\n      a = a | 0;\n      c = c | 0;\n      var d = 0.0,\n          e = 0,\n          f = 0,\n          g = 0,\n          h = 0;\n      g = S;\n      S = S + 192 | 0;\n      e = g + 168 | 0;\n      f = g;\n      Vb(a, c, e);\n      Wb(a, c, f);\n      c = b[f >> 2] | 0;\n\n      if ((c | 0) > 0) {\n        d = +sb(f + 8 | 0, f + 8 + (((c | 0) != 1 & 1) << 4) | 0, e) + 0.0;\n\n        if ((c | 0) != 1) {\n          a = 1;\n\n          do {\n            h = a;\n            a = a + 1 | 0;\n            d = d + +sb(f + 8 + (h << 4) | 0, f + 8 + (((a | 0) % (c | 0) | 0) << 4) | 0, e);\n          } while ((a | 0) < (c | 0));\n        }\n      } else { d = 0.0; }\n\n      S = g;\n      return +(d * 6371.007180918475 * 6371.007180918475 * 1.0e3 * 1.0e3);\n    }\n\n    function wb(a, c) {\n      a = a | 0;\n      c = c | 0;\n      var d = 0.0,\n          f = 0.0,\n          g = 0.0,\n          h = 0,\n          i = 0,\n          j = 0.0,\n          k = 0.0,\n          l = 0.0;\n      i = S;\n      S = S + 176 | 0;\n      h = i;\n      gc(a, c, h);\n      a = b[h >> 2] | 0;\n\n      if ((a | 0) <= 1) {\n        g = 0.0;\n        S = i;\n        return +g;\n      }\n\n      c = a + -1 | 0;\n      a = 0;\n      d = 0.0;\n      f = +e[h + 8 >> 3];\n      g = +e[h + 16 >> 3];\n\n      do {\n        a = a + 1 | 0;\n        k = f;\n        f = +e[h + 8 + (a << 4) >> 3];\n        l = +u(+((f - k) * .5));\n        j = g;\n        g = +e[h + 8 + (a << 4) + 8 >> 3];\n        j = +u(+((g - j) * .5));\n        j = l * l + j * (+t(+f) * +t(+k) * j);\n        d = d + +z(+ +r(+j), + +r(+(1.0 - j))) * 2.0;\n      } while ((a | 0) < (c | 0));\n\n      S = i;\n      return +d;\n    }\n\n    function xb(a, c) {\n      a = a | 0;\n      c = c | 0;\n      var d = 0.0,\n          f = 0.0,\n          g = 0.0,\n          h = 0,\n          i = 0,\n          j = 0.0,\n          k = 0.0,\n          l = 0.0;\n      i = S;\n      S = S + 176 | 0;\n      h = i;\n      gc(a, c, h);\n      a = b[h >> 2] | 0;\n\n      if ((a | 0) <= 1) {\n        g = 0.0;\n        S = i;\n        return +g;\n      }\n\n      c = a + -1 | 0;\n      a = 0;\n      d = 0.0;\n      f = +e[h + 8 >> 3];\n      g = +e[h + 16 >> 3];\n\n      do {\n        a = a + 1 | 0;\n        k = f;\n        f = +e[h + 8 + (a << 4) >> 3];\n        l = +u(+((f - k) * .5));\n        j = g;\n        g = +e[h + 8 + (a << 4) + 8 >> 3];\n        j = +u(+((g - j) * .5));\n        j = l * l + j * (+t(+k) * +t(+f) * j);\n        d = d + +z(+ +r(+j), + +r(+(1.0 - j))) * 2.0;\n      } while ((a | 0) != (c | 0));\n\n      l = d * 6371.007180918475;\n      S = i;\n      return +l;\n    }\n\n    function yb(a, c) {\n      a = a | 0;\n      c = c | 0;\n      var d = 0.0,\n          f = 0.0,\n          g = 0.0,\n          h = 0,\n          i = 0,\n          j = 0.0,\n          k = 0.0,\n          l = 0.0;\n      i = S;\n      S = S + 176 | 0;\n      h = i;\n      gc(a, c, h);\n      a = b[h >> 2] | 0;\n\n      if ((a | 0) <= 1) {\n        g = 0.0;\n        S = i;\n        return +g;\n      }\n\n      c = a + -1 | 0;\n      a = 0;\n      d = 0.0;\n      f = +e[h + 8 >> 3];\n      g = +e[h + 16 >> 3];\n\n      do {\n        a = a + 1 | 0;\n        k = f;\n        f = +e[h + 8 + (a << 4) >> 3];\n        l = +u(+((f - k) * .5));\n        j = g;\n        g = +e[h + 8 + (a << 4) + 8 >> 3];\n        j = +u(+((g - j) * .5));\n        j = l * l + j * (+t(+k) * +t(+f) * j);\n        d = d + +z(+ +r(+j), + +r(+(1.0 - j))) * 2.0;\n      } while ((a | 0) != (c | 0));\n\n      l = d * 6371.007180918475 * 1.0e3;\n      S = i;\n      return +l;\n    }\n\n    function zb(a, b) {\n      a = a | 0;\n      b = b | 0;\n      b = cd(a | 0, b | 0, 52) | 0;\n      G() | 0;\n      return b & 15 | 0;\n    }\n\n    function Ab(a, b) {\n      a = a | 0;\n      b = b | 0;\n      b = cd(a | 0, b | 0, 45) | 0;\n      G() | 0;\n      return b & 127 | 0;\n    }\n\n    function Bb(a, b) {\n      a = a | 0;\n      b = b | 0;\n      var c = 0,\n          d = 0,\n          e = 0,\n          f = 0,\n          g = 0,\n          h = 0;\n\n      if (!(0 == 0 & (b & -16777216 | 0) == 134217728)) {\n        b = 0;\n        return b | 0;\n      }\n\n      g = cd(a | 0, b | 0, 45) | 0;\n      G() | 0;\n      g = g & 127;\n\n      if (g >>> 0 > 121) {\n        b = 0;\n        return b | 0;\n      }\n\n      c = cd(a | 0, b | 0, 52) | 0;\n      G() | 0;\n      c = c & 15;\n\n      do { if (c | 0) {\n        e = 1;\n        d = 0;\n\n        while (1) {\n          f = cd(a | 0, b | 0, (15 - e | 0) * 3 | 0) | 0;\n          G() | 0;\n          f = f & 7;\n          if ((f | 0) != 0 & (d ^ 1)) { if ((f | 0) == 1 & (la(g) | 0) != 0) {\n            h = 0;\n            d = 13;\n            break;\n          } else { d = 1; } }\n\n          if ((f | 0) == 7) {\n            h = 0;\n            d = 13;\n            break;\n          }\n\n          if (e >>> 0 < c >>> 0) { e = e + 1 | 0; }else {\n            d = 9;\n            break;\n          }\n        }\n\n        if ((d | 0) == 9) {\n          if ((c | 0) == 15) { h = 1; }else { break; }\n          return h | 0;\n        } else if ((d | 0) == 13) { return h | 0; }\n      } } while (0);\n\n      while (1) {\n        h = cd(a | 0, b | 0, (14 - c | 0) * 3 | 0) | 0;\n        G() | 0;\n\n        if (!((h & 7 | 0) == 7 & 0 == 0)) {\n          h = 0;\n          d = 13;\n          break;\n        }\n\n        if (c >>> 0 < 14) { c = c + 1 | 0; }else {\n          h = 1;\n          d = 13;\n          break;\n        }\n      }\n\n      if ((d | 0) == 13) { return h | 0; }\n      return 0;\n    }\n\n    function Cb(a, b, c) {\n      a = a | 0;\n      b = b | 0;\n      c = c | 0;\n      var d = 0,\n          e = 0;\n      d = cd(a | 0, b | 0, 52) | 0;\n      G() | 0;\n      d = d & 15;\n\n      if ((d | 0) >= (c | 0)) {\n        if ((d | 0) != (c | 0)) { if (c >>> 0 <= 15) {\n          e = dd(c | 0, 0, 52) | 0;\n          a = e | a;\n          b = G() | 0 | b & -15728641;\n          if ((d | 0) > (c | 0)) { do {\n            e = dd(7, 0, (14 - c | 0) * 3 | 0) | 0;\n            c = c + 1 | 0;\n            a = e | a;\n            b = G() | 0 | b;\n          } while ((c | 0) < (d | 0)); }\n        } else {\n          b = 0;\n          a = 0;\n        } }\n      } else {\n        b = 0;\n        a = 0;\n      }\n\n      F(b | 0);\n      return a | 0;\n    }\n\n    function Db(a, b, c) {\n      a = a | 0;\n      b = b | 0;\n      c = c | 0;\n      a = cd(a | 0, b | 0, 52) | 0;\n      G() | 0;\n      a = a & 15;\n\n      if (!((c | 0) < 16 & (a | 0) <= (c | 0))) {\n        c = 0;\n        return c | 0;\n      }\n\n      c = tc(7, c - a | 0) | 0;\n      return c | 0;\n    }\n\n    function Eb(a, c, d, e) {\n      a = a | 0;\n      c = c | 0;\n      d = d | 0;\n      e = e | 0;\n      var f = 0,\n          g = 0,\n          h = 0,\n          i = 0,\n          j = 0,\n          k = 0,\n          l = 0;\n      h = cd(a | 0, c | 0, 52) | 0;\n      G() | 0;\n      h = h & 15;\n      if (!((d | 0) < 16 & (h | 0) <= (d | 0))) { return; }\n\n      if ((h | 0) == (d | 0)) {\n        d = e;\n        b[d >> 2] = a;\n        b[d + 4 >> 2] = c;\n        return;\n      }\n\n      j = tc(7, d - h | 0) | 0;\n      k = (j | 0) / 7 | 0;\n      i = cd(a | 0, c | 0, 45) | 0;\n      G() | 0;\n      if (!(la(i & 127) | 0)) { g = 0; }else {\n        a: do { if (!h) { f = 0; }else {\n          g = 1;\n\n          while (1) {\n            f = cd(a | 0, c | 0, (15 - g | 0) * 3 | 0) | 0;\n            G() | 0;\n            f = f & 7;\n            if (f | 0) { break a; }\n            if (g >>> 0 < h >>> 0) { g = g + 1 | 0; }else {\n              f = 0;\n              break;\n            }\n          }\n        } } while (0);\n\n        g = (f | 0) == 0;\n      }\n      l = dd(h + 1 | 0, 0, 52) | 0;\n      f = G() | 0 | c & -15728641;\n      i = (14 - h | 0) * 3 | 0;\n      c = dd(7, 0, i | 0) | 0;\n      c = (l | a) & ~c;\n      h = f & ~(G() | 0);\n      Eb(c, h, d, e);\n      f = e + (k << 3) | 0;\n\n      if (!g) {\n        l = dd(1, 0, i | 0) | 0;\n        Eb(l | c, G() | 0 | h, d, f);\n        l = f + (k << 3) | 0;\n        j = dd(2, 0, i | 0) | 0;\n        Eb(j | c, G() | 0 | h, d, l);\n        l = l + (k << 3) | 0;\n        j = dd(3, 0, i | 0) | 0;\n        Eb(j | c, G() | 0 | h, d, l);\n        l = l + (k << 3) | 0;\n        j = dd(4, 0, i | 0) | 0;\n        Eb(j | c, G() | 0 | h, d, l);\n        l = l + (k << 3) | 0;\n        j = dd(5, 0, i | 0) | 0;\n        Eb(j | c, G() | 0 | h, d, l);\n        j = dd(6, 0, i | 0) | 0;\n        Eb(j | c, G() | 0 | h, d, l + (k << 3) | 0);\n        return;\n      }\n\n      g = f + (k << 3) | 0;\n\n      if ((j | 0) > 6) {\n        j = f + 8 | 0;\n        l = (g >>> 0 > j >>> 0 ? g : j) + -1 + (0 - f) | 0;\n        hd(f | 0, 0, l + 8 & -8 | 0) | 0;\n        f = j + (l >>> 3 << 3) | 0;\n      }\n\n      l = dd(2, 0, i | 0) | 0;\n      Eb(l | c, G() | 0 | h, d, f);\n      l = f + (k << 3) | 0;\n      j = dd(3, 0, i | 0) | 0;\n      Eb(j | c, G() | 0 | h, d, l);\n      l = l + (k << 3) | 0;\n      j = dd(4, 0, i | 0) | 0;\n      Eb(j | c, G() | 0 | h, d, l);\n      l = l + (k << 3) | 0;\n      j = dd(5, 0, i | 0) | 0;\n      Eb(j | c, G() | 0 | h, d, l);\n      j = dd(6, 0, i | 0) | 0;\n      Eb(j | c, G() | 0 | h, d, l + (k << 3) | 0);\n      return;\n    }\n\n    function Fb(a, b) {\n      a = a | 0;\n      b = b | 0;\n      var c = 0,\n          d = 0,\n          e = 0;\n      e = cd(a | 0, b | 0, 45) | 0;\n      G() | 0;\n\n      if (!(la(e & 127) | 0)) {\n        e = 0;\n        return e | 0;\n      }\n\n      e = cd(a | 0, b | 0, 52) | 0;\n      G() | 0;\n      e = e & 15;\n\n      a: do { if (!e) { c = 0; }else {\n        d = 1;\n\n        while (1) {\n          c = cd(a | 0, b | 0, (15 - d | 0) * 3 | 0) | 0;\n          G() | 0;\n          c = c & 7;\n          if (c | 0) { break a; }\n          if (d >>> 0 < e >>> 0) { d = d + 1 | 0; }else {\n            c = 0;\n            break;\n          }\n        }\n      } } while (0);\n\n      e = (c | 0) == 0 & 1;\n      return e | 0;\n    }\n\n    function Gb(a, b, c) {\n      a = a | 0;\n      b = b | 0;\n      c = c | 0;\n      var d = 0,\n          e = 0;\n      d = cd(a | 0, b | 0, 52) | 0;\n      G() | 0;\n      d = d & 15;\n\n      if ((c | 0) < 16 & (d | 0) <= (c | 0)) {\n        if ((d | 0) != (c | 0)) {\n          e = dd(c | 0, 0, 52) | 0;\n          a = e | a;\n          b = G() | 0 | b & -15728641;\n          if ((d | 0) < (c | 0)) { do {\n            e = dd(7, 0, (14 - d | 0) * 3 | 0) | 0;\n            d = d + 1 | 0;\n            a = a & ~e;\n            b = b & ~(G() | 0);\n          } while ((d | 0) < (c | 0)); }\n        }\n      } else {\n        b = 0;\n        a = 0;\n      }\n\n      F(b | 0);\n      return a | 0;\n    }\n\n    function Hb(a, c, d) {\n      a = a | 0;\n      c = c | 0;\n      d = d | 0;\n      var e = 0,\n          f = 0,\n          g = 0,\n          h = 0,\n          i = 0,\n          j = 0,\n          k = 0,\n          l = 0,\n          m = 0,\n          n = 0,\n          o = 0,\n          p = 0,\n          q = 0,\n          r = 0,\n          s = 0,\n          t = 0,\n          u = 0,\n          v = 0,\n          w = 0,\n          x = 0,\n          y = 0,\n          z = 0;\n\n      if (!d) {\n        y = 0;\n        return y | 0;\n      }\n\n      f = a;\n      e = b[f >> 2] | 0;\n      f = b[f + 4 >> 2] | 0;\n\n      if (0 == 0 & (f & 15728640 | 0) == 0) {\n        if ((d | 0) <= 0) {\n          y = 0;\n          return y | 0;\n        }\n\n        y = c;\n        b[y >> 2] = e;\n        b[y + 4 >> 2] = f;\n\n        if ((d | 0) == 1) {\n          y = 0;\n          return y | 0;\n        }\n\n        e = 1;\n\n        do {\n          w = a + (e << 3) | 0;\n          x = b[w + 4 >> 2] | 0;\n          y = c + (e << 3) | 0;\n          b[y >> 2] = b[w >> 2];\n          b[y + 4 >> 2] = x;\n          e = e + 1 | 0;\n        } while ((e | 0) != (d | 0));\n\n        e = 0;\n        return e | 0;\n      }\n\n      w = d << 3;\n      x = Wc(w) | 0;\n\n      if (!x) {\n        y = -3;\n        return y | 0;\n      }\n\n      gd(x | 0, a | 0, w | 0) | 0;\n      v = Yc(d, 8) | 0;\n\n      if (!v) {\n        Xc(x);\n        y = -3;\n        return y | 0;\n      }\n\n      e = d;\n\n      a: while (1) {\n        h = x;\n        l = b[h >> 2] | 0;\n        h = b[h + 4 >> 2] | 0;\n        t = cd(l | 0, h | 0, 52) | 0;\n        G() | 0;\n        t = t & 15;\n        u = t + -1 | 0;\n        s = (e | 0) > 0;\n\n        b: do { if (s) {\n          r = ((e | 0) < 0) << 31 >> 31;\n          p = dd(u | 0, 0, 52) | 0;\n          q = G() | 0;\n\n          if (u >>> 0 > 15) {\n            f = 0;\n            a = l;\n            d = h;\n\n            while (1) {\n              if (!((a | 0) == 0 & (d | 0) == 0)) {\n                g = cd(a | 0, d | 0, 52) | 0;\n                G() | 0;\n                g = g & 15;\n                i = (g | 0) < (u | 0);\n                g = (g | 0) == (u | 0);\n                k = i ? 0 : g ? a : 0;\n                a = i ? 0 : g ? d : 0;\n                d = bd(k | 0, a | 0, e | 0, r | 0) | 0;\n                G() | 0;\n                g = v + (d << 3) | 0;\n                i = g;\n                j = b[i >> 2] | 0;\n                i = b[i + 4 >> 2] | 0;\n                if ((j | 0) == 0 & (i | 0) == 0) { d = k; }else {\n                  p = 0;\n                  o = d;\n                  n = i;\n                  d = k;\n\n                  while (1) {\n                    if ((p | 0) > (e | 0)) {\n                      y = 41;\n                      break a;\n                    }\n\n                    if ((j | 0) == (d | 0) & (n & -117440513 | 0) == (a | 0)) {\n                      k = cd(j | 0, n | 0, 56) | 0;\n                      G() | 0;\n                      k = k & 7;\n                      m = k + 1 | 0;\n                      q = cd(j | 0, n | 0, 45) | 0;\n                      G() | 0;\n\n                      c: do { if (!(la(q & 127) | 0)) { i = 7; }else {\n                        j = cd(j | 0, n | 0, 52) | 0;\n                        G() | 0;\n                        j = j & 15;\n\n                        if (!j) {\n                          i = 6;\n                          break;\n                        }\n\n                        i = 1;\n\n                        while (1) {\n                          q = dd(7, 0, (15 - i | 0) * 3 | 0) | 0;\n\n                          if (!((q & d | 0) == 0 & ((G() | 0) & a | 0) == 0)) {\n                            i = 7;\n                            break c;\n                          }\n\n                          if (i >>> 0 < j >>> 0) { i = i + 1 | 0; }else {\n                            i = 6;\n                            break;\n                          }\n                        }\n                      } } while (0);\n\n                      if ((k + 2 | 0) >>> 0 > i >>> 0) {\n                        y = 51;\n                        break a;\n                      }\n\n                      q = dd(m | 0, 0, 56) | 0;\n                      a = G() | 0 | a & -117440513;\n                      i = g;\n                      b[i >> 2] = 0;\n                      b[i + 4 >> 2] = 0;\n                      i = o;\n                      d = q | d;\n                    } else { i = (o + 1 | 0) % (e | 0) | 0; }\n\n                    g = v + (i << 3) | 0;\n                    n = g;\n                    j = b[n >> 2] | 0;\n                    n = b[n + 4 >> 2] | 0;\n                    if ((j | 0) == 0 & (n | 0) == 0) { break; }else {\n                      p = p + 1 | 0;\n                      o = i;\n                    }\n                  }\n                }\n                q = g;\n                b[q >> 2] = d;\n                b[q + 4 >> 2] = a;\n              }\n\n              f = f + 1 | 0;\n              if ((f | 0) >= (e | 0)) { break b; }\n              d = x + (f << 3) | 0;\n              a = b[d >> 2] | 0;\n              d = b[d + 4 >> 2] | 0;\n            }\n          }\n\n          f = 0;\n          a = l;\n          d = h;\n\n          while (1) {\n            if (!((a | 0) == 0 & (d | 0) == 0)) {\n              i = cd(a | 0, d | 0, 52) | 0;\n              G() | 0;\n              i = i & 15;\n\n              if ((i | 0) >= (u | 0)) {\n                if ((i | 0) != (u | 0)) {\n                  a = a | p;\n                  d = d & -15728641 | q;\n\n                  if (i >>> 0 >= t >>> 0) {\n                    g = u;\n\n                    do {\n                      o = dd(7, 0, (14 - g | 0) * 3 | 0) | 0;\n                      g = g + 1 | 0;\n                      a = o | a;\n                      d = G() | 0 | d;\n                    } while (g >>> 0 < i >>> 0);\n                  }\n                }\n              } else {\n                a = 0;\n                d = 0;\n              }\n\n              i = bd(a | 0, d | 0, e | 0, r | 0) | 0;\n              G() | 0;\n              g = v + (i << 3) | 0;\n              j = g;\n              k = b[j >> 2] | 0;\n              j = b[j + 4 >> 2] | 0;\n\n              if (!((k | 0) == 0 & (j | 0) == 0)) {\n                o = 0;\n\n                while (1) {\n                  if ((o | 0) > (e | 0)) {\n                    y = 41;\n                    break a;\n                  }\n\n                  if ((k | 0) == (a | 0) & (j & -117440513 | 0) == (d | 0)) {\n                    m = cd(k | 0, j | 0, 56) | 0;\n                    G() | 0;\n                    m = m & 7;\n                    n = m + 1 | 0;\n                    z = cd(k | 0, j | 0, 45) | 0;\n                    G() | 0;\n\n                    d: do { if (!(la(z & 127) | 0)) { j = 7; }else {\n                      k = cd(k | 0, j | 0, 52) | 0;\n                      G() | 0;\n                      k = k & 15;\n\n                      if (!k) {\n                        j = 6;\n                        break;\n                      }\n\n                      j = 1;\n\n                      while (1) {\n                        z = dd(7, 0, (15 - j | 0) * 3 | 0) | 0;\n\n                        if (!((z & a | 0) == 0 & ((G() | 0) & d | 0) == 0)) {\n                          j = 7;\n                          break d;\n                        }\n\n                        if (j >>> 0 < k >>> 0) { j = j + 1 | 0; }else {\n                          j = 6;\n                          break;\n                        }\n                      }\n                    } } while (0);\n\n                    if ((m + 2 | 0) >>> 0 > j >>> 0) {\n                      y = 51;\n                      break a;\n                    }\n\n                    z = dd(n | 0, 0, 56) | 0;\n                    d = G() | 0 | d & -117440513;\n                    n = g;\n                    b[n >> 2] = 0;\n                    b[n + 4 >> 2] = 0;\n                    a = z | a;\n                  } else { i = (i + 1 | 0) % (e | 0) | 0; }\n\n                  g = v + (i << 3) | 0;\n                  j = g;\n                  k = b[j >> 2] | 0;\n                  j = b[j + 4 >> 2] | 0;\n                  if ((k | 0) == 0 & (j | 0) == 0) { break; }else { o = o + 1 | 0; }\n                }\n              }\n\n              z = g;\n              b[z >> 2] = a;\n              b[z + 4 >> 2] = d;\n            }\n\n            f = f + 1 | 0;\n            if ((f | 0) >= (e | 0)) { break b; }\n            d = x + (f << 3) | 0;\n            a = b[d >> 2] | 0;\n            d = b[d + 4 >> 2] | 0;\n          }\n        } } while (0);\n\n        if ((e + 5 | 0) >>> 0 < 11) {\n          y = 99;\n          break;\n        }\n\n        q = Yc((e | 0) / 6 | 0, 8) | 0;\n\n        if (!q) {\n          y = 58;\n          break;\n        }\n\n        e: do { if (s) {\n          o = 0;\n          n = 0;\n\n          do {\n            i = v + (o << 3) | 0;\n            a = i;\n            f = b[a >> 2] | 0;\n            a = b[a + 4 >> 2] | 0;\n\n            if (!((f | 0) == 0 & (a | 0) == 0)) {\n              j = cd(f | 0, a | 0, 56) | 0;\n              G() | 0;\n              j = j & 7;\n              d = j + 1 | 0;\n              k = a & -117440513;\n              z = cd(f | 0, a | 0, 45) | 0;\n              G() | 0;\n\n              f: do { if (la(z & 127) | 0) {\n                m = cd(f | 0, a | 0, 52) | 0;\n                G() | 0;\n                m = m & 15;\n\n                if (m | 0) {\n                  g = 1;\n\n                  while (1) {\n                    z = dd(7, 0, (15 - g | 0) * 3 | 0) | 0;\n                    if (!((f & z | 0) == 0 & (k & (G() | 0) | 0) == 0)) { break f; }\n                    if (g >>> 0 < m >>> 0) { g = g + 1 | 0; }else { break; }\n                  }\n                }\n\n                a = dd(d | 0, 0, 56) | 0;\n                f = a | f;\n                a = G() | 0 | k;\n                d = i;\n                b[d >> 2] = f;\n                b[d + 4 >> 2] = a;\n                d = j + 2 | 0;\n              } } while (0);\n\n              if ((d | 0) == 7) {\n                z = q + (n << 3) | 0;\n                b[z >> 2] = f;\n                b[z + 4 >> 2] = a & -117440513;\n                n = n + 1 | 0;\n              }\n            }\n\n            o = o + 1 | 0;\n          } while ((o | 0) != (e | 0));\n\n          if (s) {\n            p = ((e | 0) < 0) << 31 >> 31;\n            m = dd(u | 0, 0, 52) | 0;\n            o = G() | 0;\n\n            if (u >>> 0 > 15) {\n              a = 0;\n              f = 0;\n\n              while (1) {\n                do { if (!((l | 0) == 0 & (h | 0) == 0)) {\n                  j = cd(l | 0, h | 0, 52) | 0;\n                  G() | 0;\n                  j = j & 15;\n                  g = (j | 0) < (u | 0);\n                  j = (j | 0) == (u | 0);\n                  i = g ? 0 : j ? l : 0;\n                  j = g ? 0 : j ? h : 0;\n                  g = bd(i | 0, j | 0, e | 0, p | 0) | 0;\n                  G() | 0;\n                  d = 0;\n\n                  while (1) {\n                    if ((d | 0) > (e | 0)) {\n                      y = 98;\n                      break a;\n                    }\n\n                    z = v + (g << 3) | 0;\n                    k = b[z + 4 >> 2] | 0;\n\n                    if ((k & -117440513 | 0) == (j | 0) ? (b[z >> 2] | 0) == (i | 0) : 0) {\n                      y = 70;\n                      break;\n                    }\n\n                    g = (g + 1 | 0) % (e | 0) | 0;\n                    z = v + (g << 3) | 0;\n                    if ((b[z >> 2] | 0) == (i | 0) ? (b[z + 4 >> 2] | 0) == (j | 0) : 0) { break; }else { d = d + 1 | 0; }\n                  }\n\n                  if ((y | 0) == 70 ? (y = 0, 0 == 0 & (k & 117440512 | 0) == 100663296) : 0) { break; }\n                  z = c + (f << 3) | 0;\n                  b[z >> 2] = l;\n                  b[z + 4 >> 2] = h;\n                  f = f + 1 | 0;\n                } } while (0);\n\n                a = a + 1 | 0;\n\n                if ((a | 0) >= (e | 0)) {\n                  e = n;\n                  break e;\n                }\n\n                h = x + (a << 3) | 0;\n                l = b[h >> 2] | 0;\n                h = b[h + 4 >> 2] | 0;\n              }\n            }\n\n            a = 0;\n            f = 0;\n\n            while (1) {\n              do { if (!((l | 0) == 0 & (h | 0) == 0)) {\n                j = cd(l | 0, h | 0, 52) | 0;\n                G() | 0;\n                j = j & 15;\n                if ((j | 0) >= (u | 0)) {\n                  if ((j | 0) != (u | 0)) {\n                    d = l | m;\n                    g = h & -15728641 | o;\n                    if (j >>> 0 < t >>> 0) { j = g; }else {\n                      i = u;\n\n                      do {\n                        z = dd(7, 0, (14 - i | 0) * 3 | 0) | 0;\n                        i = i + 1 | 0;\n                        d = z | d;\n                        g = G() | 0 | g;\n                      } while (i >>> 0 < j >>> 0);\n\n                      j = g;\n                    }\n                  } else {\n                    d = l;\n                    j = h;\n                  }\n                } else {\n                  d = 0;\n                  j = 0;\n                }\n                i = bd(d | 0, j | 0, e | 0, p | 0) | 0;\n                G() | 0;\n                g = 0;\n\n                while (1) {\n                  if ((g | 0) > (e | 0)) {\n                    y = 98;\n                    break a;\n                  }\n\n                  z = v + (i << 3) | 0;\n                  k = b[z + 4 >> 2] | 0;\n\n                  if ((k & -117440513 | 0) == (j | 0) ? (b[z >> 2] | 0) == (d | 0) : 0) {\n                    y = 93;\n                    break;\n                  }\n\n                  i = (i + 1 | 0) % (e | 0) | 0;\n                  z = v + (i << 3) | 0;\n                  if ((b[z >> 2] | 0) == (d | 0) ? (b[z + 4 >> 2] | 0) == (j | 0) : 0) { break; }else { g = g + 1 | 0; }\n                }\n\n                if ((y | 0) == 93 ? (y = 0, 0 == 0 & (k & 117440512 | 0) == 100663296) : 0) { break; }\n                z = c + (f << 3) | 0;\n                b[z >> 2] = l;\n                b[z + 4 >> 2] = h;\n                f = f + 1 | 0;\n              } } while (0);\n\n              a = a + 1 | 0;\n\n              if ((a | 0) >= (e | 0)) {\n                e = n;\n                break e;\n              }\n\n              h = x + (a << 3) | 0;\n              l = b[h >> 2] | 0;\n              h = b[h + 4 >> 2] | 0;\n            }\n          } else {\n            f = 0;\n            e = n;\n          }\n        } else {\n          f = 0;\n          e = 0;\n        } } while (0);\n\n        hd(v | 0, 0, w | 0) | 0;\n        gd(x | 0, q | 0, e << 3 | 0) | 0;\n        Xc(q);\n        if (!e) { break; }else { c = c + (f << 3) | 0; }\n      }\n\n      if ((y | 0) == 41) {\n        Xc(x);\n        Xc(v);\n        z = -1;\n        return z | 0;\n      } else if ((y | 0) == 51) {\n        Xc(x);\n        Xc(v);\n        z = -2;\n        return z | 0;\n      } else if ((y | 0) == 58) {\n        Xc(x);\n        Xc(v);\n        z = -3;\n        return z | 0;\n      } else if ((y | 0) == 98) {\n        Xc(q);\n        Xc(x);\n        Xc(v);\n        z = -1;\n        return z | 0;\n      } else if ((y | 0) == 99) { gd(c | 0, x | 0, e << 3 | 0) | 0; }\n\n      Xc(x);\n      Xc(v);\n      z = 0;\n      return z | 0;\n    }\n\n    function Ib(a, c, d, e, f) {\n      a = a | 0;\n      c = c | 0;\n      d = d | 0;\n      e = e | 0;\n      f = f | 0;\n      var g = 0,\n          h = 0,\n          i = 0,\n          j = 0,\n          k = 0,\n          l = 0;\n\n      if ((c | 0) <= 0) {\n        f = 0;\n        return f | 0;\n      }\n\n      if ((f | 0) >= 16) {\n        g = 0;\n\n        while (1) {\n          l = a + (g << 3) | 0;\n\n          if (!((b[l >> 2] | 0) == 0 & (b[l + 4 >> 2] | 0) == 0)) {\n            g = 14;\n            break;\n          }\n\n          g = g + 1 | 0;\n\n          if ((g | 0) >= (c | 0)) {\n            h = 0;\n            g = 16;\n            break;\n          }\n        }\n\n        if ((g | 0) == 14) { return ((e | 0) > 0 ? -2 : -1) | 0; }else if ((g | 0) == 16) { return h | 0; }\n      }\n\n      g = 0;\n      l = 0;\n\n      a: while (1) {\n        k = a + (l << 3) | 0;\n        i = k;\n        h = b[i >> 2] | 0;\n        i = b[i + 4 >> 2] | 0;\n\n        do { if (!((h | 0) == 0 & (i | 0) == 0)) {\n          if ((g | 0) >= (e | 0)) {\n            h = -1;\n            g = 16;\n            break a;\n          }\n\n          j = cd(h | 0, i | 0, 52) | 0;\n          G() | 0;\n          j = j & 15;\n\n          if ((j | 0) > (f | 0)) {\n            h = -2;\n            g = 16;\n            break a;\n          }\n\n          if ((j | 0) == (f | 0)) {\n            k = d + (g << 3) | 0;\n            b[k >> 2] = h;\n            b[k + 4 >> 2] = i;\n            g = g + 1 | 0;\n            break;\n          }\n\n          h = (tc(7, f - j | 0) | 0) + g | 0;\n\n          if ((h | 0) > (e | 0)) {\n            h = -1;\n            g = 16;\n            break a;\n          }\n\n          Eb(b[k >> 2] | 0, b[k + 4 >> 2] | 0, f, d + (g << 3) | 0);\n          g = h;\n        } } while (0);\n\n        l = l + 1 | 0;\n\n        if ((l | 0) >= (c | 0)) {\n          h = 0;\n          g = 16;\n          break;\n        }\n      }\n\n      if ((g | 0) == 16) { return h | 0; }\n      return 0;\n    }\n\n    function Jb(a, c, d) {\n      a = a | 0;\n      c = c | 0;\n      d = d | 0;\n      var e = 0,\n          f = 0,\n          g = 0,\n          h = 0;\n\n      if ((c | 0) <= 0) {\n        d = 0;\n        return d | 0;\n      }\n\n      if ((d | 0) >= 16) {\n        e = 0;\n\n        while (1) {\n          h = a + (e << 3) | 0;\n\n          if (!((b[h >> 2] | 0) == 0 & (b[h + 4 >> 2] | 0) == 0)) {\n            e = -1;\n            f = 13;\n            break;\n          }\n\n          e = e + 1 | 0;\n\n          if ((e | 0) >= (c | 0)) {\n            e = 0;\n            f = 13;\n            break;\n          }\n        }\n\n        if ((f | 0) == 13) { return e | 0; }\n      }\n\n      e = 0;\n      h = 0;\n\n      a: while (1) {\n        f = a + (h << 3) | 0;\n        g = b[f >> 2] | 0;\n        f = b[f + 4 >> 2] | 0;\n\n        do { if (!((g | 0) == 0 & (f | 0) == 0)) {\n          f = cd(g | 0, f | 0, 52) | 0;\n          G() | 0;\n          f = f & 15;\n\n          if ((f | 0) > (d | 0)) {\n            e = -1;\n            f = 13;\n            break a;\n          }\n\n          if ((f | 0) == (d | 0)) {\n            e = e + 1 | 0;\n            break;\n          } else {\n            e = (tc(7, d - f | 0) | 0) + e | 0;\n            break;\n          }\n        } } while (0);\n\n        h = h + 1 | 0;\n\n        if ((h | 0) >= (c | 0)) {\n          f = 13;\n          break;\n        }\n      }\n\n      if ((f | 0) == 13) { return e | 0; }\n      return 0;\n    }\n\n    function Kb(a, b) {\n      a = a | 0;\n      b = b | 0;\n      b = cd(a | 0, b | 0, 52) | 0;\n      G() | 0;\n      return b & 1 | 0;\n    }\n\n    function Lb(a, b) {\n      a = a | 0;\n      b = b | 0;\n      var c = 0,\n          d = 0,\n          e = 0;\n      e = cd(a | 0, b | 0, 52) | 0;\n      G() | 0;\n      e = e & 15;\n\n      if (!e) {\n        e = 0;\n        return e | 0;\n      }\n\n      d = 1;\n\n      while (1) {\n        c = cd(a | 0, b | 0, (15 - d | 0) * 3 | 0) | 0;\n        G() | 0;\n        c = c & 7;\n\n        if (c | 0) {\n          d = 5;\n          break;\n        }\n\n        if (d >>> 0 < e >>> 0) { d = d + 1 | 0; }else {\n          c = 0;\n          d = 5;\n          break;\n        }\n      }\n\n      if ((d | 0) == 5) { return c | 0; }\n      return 0;\n    }\n\n    function Mb(a, b) {\n      a = a | 0;\n      b = b | 0;\n      var c = 0,\n          d = 0,\n          e = 0,\n          f = 0,\n          g = 0,\n          h = 0,\n          i = 0;\n      i = cd(a | 0, b | 0, 52) | 0;\n      G() | 0;\n      i = i & 15;\n\n      if (!i) {\n        h = b;\n        i = a;\n        F(h | 0);\n        return i | 0;\n      }\n\n      h = 1;\n      c = 0;\n\n      while (1) {\n        f = (15 - h | 0) * 3 | 0;\n        d = dd(7, 0, f | 0) | 0;\n        e = G() | 0;\n        g = cd(a | 0, b | 0, f | 0) | 0;\n        G() | 0;\n        f = dd(Pa(g & 7) | 0, 0, f | 0) | 0;\n        g = G() | 0;\n        a = f | a & ~d;\n        b = g | b & ~e;\n\n        a: do { if (!c) { if (!((f & d | 0) == 0 & (g & e | 0) == 0)) {\n          d = cd(a | 0, b | 0, 52) | 0;\n          G() | 0;\n          d = d & 15;\n          if (!d) { c = 1; }else {\n            c = 1;\n\n            b: while (1) {\n              g = cd(a | 0, b | 0, (15 - c | 0) * 3 | 0) | 0;\n              G() | 0;\n\n              switch (g & 7) {\n                case 1:\n                  break b;\n\n                case 0:\n                  break;\n\n                default:\n                  {\n                    c = 1;\n                    break a;\n                  }\n              }\n\n              if (c >>> 0 < d >>> 0) { c = c + 1 | 0; }else {\n                c = 1;\n                break a;\n              }\n            }\n\n            c = 1;\n\n            while (1) {\n              g = (15 - c | 0) * 3 | 0;\n              e = cd(a | 0, b | 0, g | 0) | 0;\n              G() | 0;\n              f = dd(7, 0, g | 0) | 0;\n              b = b & ~(G() | 0);\n              g = dd(Pa(e & 7) | 0, 0, g | 0) | 0;\n              a = a & ~f | g;\n              b = b | (G() | 0);\n              if (c >>> 0 < d >>> 0) { c = c + 1 | 0; }else {\n                c = 1;\n                break;\n              }\n            }\n          }\n        } else { c = 0; } } } while (0);\n\n        if (h >>> 0 < i >>> 0) { h = h + 1 | 0; }else { break; }\n      }\n\n      F(b | 0);\n      return a | 0;\n    }\n\n    function Nb(a, b) {\n      a = a | 0;\n      b = b | 0;\n      var c = 0,\n          d = 0,\n          e = 0,\n          f = 0,\n          g = 0;\n      d = cd(a | 0, b | 0, 52) | 0;\n      G() | 0;\n      d = d & 15;\n\n      if (!d) {\n        c = b;\n        d = a;\n        F(c | 0);\n        return d | 0;\n      }\n\n      c = 1;\n\n      while (1) {\n        f = (15 - c | 0) * 3 | 0;\n        g = cd(a | 0, b | 0, f | 0) | 0;\n        G() | 0;\n        e = dd(7, 0, f | 0) | 0;\n        b = b & ~(G() | 0);\n        f = dd(Pa(g & 7) | 0, 0, f | 0) | 0;\n        a = f | a & ~e;\n        b = G() | 0 | b;\n        if (c >>> 0 < d >>> 0) { c = c + 1 | 0; }else { break; }\n      }\n\n      F(b | 0);\n      return a | 0;\n    }\n\n    function Ob(a, b) {\n      a = a | 0;\n      b = b | 0;\n      var c = 0,\n          d = 0,\n          e = 0,\n          f = 0,\n          g = 0,\n          h = 0,\n          i = 0;\n      i = cd(a | 0, b | 0, 52) | 0;\n      G() | 0;\n      i = i & 15;\n\n      if (!i) {\n        h = b;\n        i = a;\n        F(h | 0);\n        return i | 0;\n      }\n\n      h = 1;\n      c = 0;\n\n      while (1) {\n        f = (15 - h | 0) * 3 | 0;\n        d = dd(7, 0, f | 0) | 0;\n        e = G() | 0;\n        g = cd(a | 0, b | 0, f | 0) | 0;\n        G() | 0;\n        f = dd(Qa(g & 7) | 0, 0, f | 0) | 0;\n        g = G() | 0;\n        a = f | a & ~d;\n        b = g | b & ~e;\n\n        a: do { if (!c) { if (!((f & d | 0) == 0 & (g & e | 0) == 0)) {\n          d = cd(a | 0, b | 0, 52) | 0;\n          G() | 0;\n          d = d & 15;\n          if (!d) { c = 1; }else {\n            c = 1;\n\n            b: while (1) {\n              g = cd(a | 0, b | 0, (15 - c | 0) * 3 | 0) | 0;\n              G() | 0;\n\n              switch (g & 7) {\n                case 1:\n                  break b;\n\n                case 0:\n                  break;\n\n                default:\n                  {\n                    c = 1;\n                    break a;\n                  }\n              }\n\n              if (c >>> 0 < d >>> 0) { c = c + 1 | 0; }else {\n                c = 1;\n                break a;\n              }\n            }\n\n            c = 1;\n\n            while (1) {\n              e = (15 - c | 0) * 3 | 0;\n              f = dd(7, 0, e | 0) | 0;\n              g = b & ~(G() | 0);\n              b = cd(a | 0, b | 0, e | 0) | 0;\n              G() | 0;\n              b = dd(Qa(b & 7) | 0, 0, e | 0) | 0;\n              a = a & ~f | b;\n              b = g | (G() | 0);\n              if (c >>> 0 < d >>> 0) { c = c + 1 | 0; }else {\n                c = 1;\n                break;\n              }\n            }\n          }\n        } else { c = 0; } } } while (0);\n\n        if (h >>> 0 < i >>> 0) { h = h + 1 | 0; }else { break; }\n      }\n\n      F(b | 0);\n      return a | 0;\n    }\n\n    function Pb(a, b) {\n      a = a | 0;\n      b = b | 0;\n      var c = 0,\n          d = 0,\n          e = 0,\n          f = 0,\n          g = 0;\n      d = cd(a | 0, b | 0, 52) | 0;\n      G() | 0;\n      d = d & 15;\n\n      if (!d) {\n        c = b;\n        d = a;\n        F(c | 0);\n        return d | 0;\n      }\n\n      c = 1;\n\n      while (1) {\n        g = (15 - c | 0) * 3 | 0;\n        f = dd(7, 0, g | 0) | 0;\n        e = b & ~(G() | 0);\n        b = cd(a | 0, b | 0, g | 0) | 0;\n        G() | 0;\n        b = dd(Qa(b & 7) | 0, 0, g | 0) | 0;\n        a = b | a & ~f;\n        b = G() | 0 | e;\n        if (c >>> 0 < d >>> 0) { c = c + 1 | 0; }else { break; }\n      }\n\n      F(b | 0);\n      return a | 0;\n    }\n\n    function Qb(a, c) {\n      a = a | 0;\n      c = c | 0;\n      var d = 0,\n          e = 0,\n          f = 0,\n          g = 0,\n          h = 0,\n          i = 0,\n          j = 0,\n          k = 0,\n          l = 0;\n      j = S;\n      S = S + 64 | 0;\n      i = j + 40 | 0;\n      e = j + 24 | 0;\n      f = j + 12 | 0;\n      g = j;\n      dd(c | 0, 0, 52) | 0;\n      d = G() | 0 | 134225919;\n\n      if (!c) {\n        if ((b[a + 4 >> 2] | 0) > 2) {\n          h = 0;\n          i = 0;\n          F(h | 0);\n          S = j;\n          return i | 0;\n        }\n\n        if ((b[a + 8 >> 2] | 0) > 2) {\n          h = 0;\n          i = 0;\n          F(h | 0);\n          S = j;\n          return i | 0;\n        }\n\n        if ((b[a + 12 >> 2] | 0) > 2) {\n          h = 0;\n          i = 0;\n          F(h | 0);\n          S = j;\n          return i | 0;\n        }\n\n        dd(na(a) | 0, 0, 45) | 0;\n        h = G() | 0 | d;\n        i = -1;\n        F(h | 0);\n        S = j;\n        return i | 0;\n      }\n      b[i >> 2] = b[a >> 2];\n      b[i + 4 >> 2] = b[a + 4 >> 2];\n      b[i + 8 >> 2] = b[a + 8 >> 2];\n      b[i + 12 >> 2] = b[a + 12 >> 2];\n      h = i + 4 | 0;\n\n      if ((c | 0) > 0) {\n        a = -1;\n\n        while (1) {\n          b[e >> 2] = b[h >> 2];\n          b[e + 4 >> 2] = b[h + 4 >> 2];\n          b[e + 8 >> 2] = b[h + 8 >> 2];\n\n          if (!(c & 1)) {\n            Ja(h);\n            b[f >> 2] = b[h >> 2];\n            b[f + 4 >> 2] = b[h + 4 >> 2];\n            b[f + 8 >> 2] = b[h + 8 >> 2];\n            La(f);\n          } else {\n            Ia(h);\n            b[f >> 2] = b[h >> 2];\n            b[f + 4 >> 2] = b[h + 4 >> 2];\n            b[f + 8 >> 2] = b[h + 8 >> 2];\n            Ka(f);\n          }\n\n          Fa(e, f, g);\n          Ca(g);\n          l = (15 - c | 0) * 3 | 0;\n          k = dd(7, 0, l | 0) | 0;\n          d = d & ~(G() | 0);\n          l = dd(Ha(g) | 0, 0, l | 0) | 0;\n          a = l | a & ~k;\n          d = G() | 0 | d;\n          if ((c | 0) > 1) { c = c + -1 | 0; }else { break; }\n        }\n      } else { a = -1; }\n\n      a: do { if (((b[h >> 2] | 0) <= 2 ? (b[i + 8 >> 2] | 0) <= 2 : 0) ? (b[i + 12 >> 2] | 0) <= 2 : 0) {\n        e = na(i) | 0;\n        c = dd(e | 0, 0, 45) | 0;\n        c = c | a;\n        a = G() | 0 | d & -1040385;\n        g = oa(i) | 0;\n\n        if (!(la(e) | 0)) {\n          if ((g | 0) <= 0) { break; }\n          f = 0;\n\n          while (1) {\n            e = cd(c | 0, a | 0, 52) | 0;\n            G() | 0;\n            e = e & 15;\n\n            if (e) {\n              d = 1;\n\n              while (1) {\n                l = (15 - d | 0) * 3 | 0;\n                i = cd(c | 0, a | 0, l | 0) | 0;\n                G() | 0;\n                k = dd(7, 0, l | 0) | 0;\n                a = a & ~(G() | 0);\n                l = dd(Pa(i & 7) | 0, 0, l | 0) | 0;\n                c = c & ~k | l;\n                a = a | (G() | 0);\n                if (d >>> 0 < e >>> 0) { d = d + 1 | 0; }else { break; }\n              }\n            }\n\n            f = f + 1 | 0;\n            if ((f | 0) == (g | 0)) { break a; }\n          }\n        }\n\n        f = cd(c | 0, a | 0, 52) | 0;\n        G() | 0;\n        f = f & 15;\n\n        b: do { if (f) {\n          d = 1;\n\n          c: while (1) {\n            l = cd(c | 0, a | 0, (15 - d | 0) * 3 | 0) | 0;\n            G() | 0;\n\n            switch (l & 7) {\n              case 1:\n                break c;\n\n              case 0:\n                break;\n\n              default:\n                break b;\n            }\n\n            if (d >>> 0 < f >>> 0) { d = d + 1 | 0; }else { break b; }\n          }\n\n          if (ra(e, b[i >> 2] | 0) | 0) {\n            d = 1;\n\n            while (1) {\n              i = (15 - d | 0) * 3 | 0;\n              k = dd(7, 0, i | 0) | 0;\n              l = a & ~(G() | 0);\n              a = cd(c | 0, a | 0, i | 0) | 0;\n              G() | 0;\n              a = dd(Qa(a & 7) | 0, 0, i | 0) | 0;\n              c = c & ~k | a;\n              a = l | (G() | 0);\n              if (d >>> 0 < f >>> 0) { d = d + 1 | 0; }else { break; }\n            }\n          } else {\n            d = 1;\n\n            while (1) {\n              l = (15 - d | 0) * 3 | 0;\n              i = cd(c | 0, a | 0, l | 0) | 0;\n              G() | 0;\n              k = dd(7, 0, l | 0) | 0;\n              a = a & ~(G() | 0);\n              l = dd(Pa(i & 7) | 0, 0, l | 0) | 0;\n              c = c & ~k | l;\n              a = a | (G() | 0);\n              if (d >>> 0 < f >>> 0) { d = d + 1 | 0; }else { break; }\n            }\n          }\n        } } while (0);\n\n        if ((g | 0) > 0) {\n          d = 0;\n\n          do {\n            c = Mb(c, a) | 0;\n            a = G() | 0;\n            d = d + 1 | 0;\n          } while ((d | 0) != (g | 0));\n        }\n      } else {\n        c = 0;\n        a = 0;\n      } } while (0);\n\n      k = a;\n      l = c;\n      F(k | 0);\n      S = j;\n      return l | 0;\n    }\n\n    function Rb(a) {\n      a = a | 0;\n      return (a | 0) % 2 | 0 | 0;\n    }\n\n    function Sb(a, c) {\n      a = a | 0;\n      c = c | 0;\n      var d = 0,\n          e = 0;\n      e = S;\n      S = S + 16 | 0;\n      d = e;\n\n      if ((c >>> 0 <= 15 ? !((b[a + 4 >> 2] & 2146435072 | 0) == 2146435072) : 0) ? !((b[a + 8 + 4 >> 2] & 2146435072 | 0) == 2146435072) : 0) {\n        Ya(a, c, d);\n        c = Qb(d, c) | 0;\n        a = G() | 0;\n      } else {\n        a = 0;\n        c = 0;\n      }\n\n      F(a | 0);\n      S = e;\n      return c | 0;\n    }\n\n    function Tb(a, c, d) {\n      a = a | 0;\n      c = c | 0;\n      d = d | 0;\n      var e = 0,\n          f = 0,\n          g = 0,\n          h = 0;\n      f = d + 4 | 0;\n      g = cd(a | 0, c | 0, 52) | 0;\n      G() | 0;\n      g = g & 15;\n      h = cd(a | 0, c | 0, 45) | 0;\n      G() | 0;\n      e = (g | 0) == 0;\n\n      if (!(la(h & 127) | 0)) {\n        if (e) {\n          h = 0;\n          return h | 0;\n        }\n\n        if ((b[f >> 2] | 0) == 0 ? (b[d + 8 >> 2] | 0) == 0 : 0) { e = (b[d + 12 >> 2] | 0) != 0 & 1; }else { e = 1; }\n      } else if (e) {\n        h = 1;\n        return h | 0;\n      } else { e = 1; }\n\n      d = 1;\n\n      while (1) {\n        if (!(d & 1)) { La(f); }else { Ka(f); }\n        h = cd(a | 0, c | 0, (15 - d | 0) * 3 | 0) | 0;\n        G() | 0;\n        Ma(f, h & 7);\n        if (d >>> 0 < g >>> 0) { d = d + 1 | 0; }else { break; }\n      }\n\n      return e | 0;\n    }\n\n    function Ub(a, c, d) {\n      a = a | 0;\n      c = c | 0;\n      d = d | 0;\n      var e = 0,\n          f = 0,\n          g = 0,\n          h = 0,\n          i = 0,\n          j = 0,\n          k = 0,\n          l = 0;\n      l = S;\n      S = S + 16 | 0;\n      j = l;\n      k = cd(a | 0, c | 0, 45) | 0;\n      G() | 0;\n      k = k & 127;\n\n      a: do { if ((la(k) | 0) != 0 ? (g = cd(a | 0, c | 0, 52) | 0, G() | 0, g = g & 15, (g | 0) != 0) : 0) {\n        e = 1;\n\n        b: while (1) {\n          i = cd(a | 0, c | 0, (15 - e | 0) * 3 | 0) | 0;\n          G() | 0;\n\n          switch (i & 7) {\n            case 5:\n              break b;\n\n            case 0:\n              break;\n\n            default:\n              {\n                e = c;\n                break a;\n              }\n          }\n\n          if (e >>> 0 < g >>> 0) { e = e + 1 | 0; }else {\n            e = c;\n            break a;\n          }\n        }\n\n        f = 1;\n        e = c;\n\n        while (1) {\n          c = (15 - f | 0) * 3 | 0;\n          h = dd(7, 0, c | 0) | 0;\n          i = e & ~(G() | 0);\n          e = cd(a | 0, e | 0, c | 0) | 0;\n          G() | 0;\n          e = dd(Qa(e & 7) | 0, 0, c | 0) | 0;\n          a = a & ~h | e;\n          e = i | (G() | 0);\n          if (f >>> 0 < g >>> 0) { f = f + 1 | 0; }else { break; }\n        }\n      } else { e = c; } } while (0);\n\n      i = 7728 + (k * 28 | 0) | 0;\n      b[d >> 2] = b[i >> 2];\n      b[d + 4 >> 2] = b[i + 4 >> 2];\n      b[d + 8 >> 2] = b[i + 8 >> 2];\n      b[d + 12 >> 2] = b[i + 12 >> 2];\n\n      if (!(Tb(a, e, d) | 0)) {\n        S = l;\n        return;\n      }\n\n      h = d + 4 | 0;\n      b[j >> 2] = b[h >> 2];\n      b[j + 4 >> 2] = b[h + 4 >> 2];\n      b[j + 8 >> 2] = b[h + 8 >> 2];\n      g = cd(a | 0, e | 0, 52) | 0;\n      G() | 0;\n      i = g & 15;\n      if (!(g & 1)) { g = i; }else {\n        La(h);\n        g = i + 1 | 0;\n      }\n      if (!(la(k) | 0)) { e = 0; }else {\n        c: do { if (!i) { e = 0; }else {\n          c = 1;\n\n          while (1) {\n            f = cd(a | 0, e | 0, (15 - c | 0) * 3 | 0) | 0;\n            G() | 0;\n            f = f & 7;\n\n            if (f | 0) {\n              e = f;\n              break c;\n            }\n\n            if (c >>> 0 < i >>> 0) { c = c + 1 | 0; }else {\n              e = 0;\n              break;\n            }\n          }\n        } } while (0);\n\n        e = (e | 0) == 4 & 1;\n      }\n\n      if (!(cb(d, g, e, 0) | 0)) {\n        if ((g | 0) != (i | 0)) {\n          b[h >> 2] = b[j >> 2];\n          b[h + 4 >> 2] = b[j + 4 >> 2];\n          b[h + 8 >> 2] = b[j + 8 >> 2];\n        }\n      } else {\n        if (la(k) | 0) { do {} while ((cb(d, g, 0, 0) | 0) != 0); }\n        if ((g | 0) != (i | 0)) { Ja(h); }\n      }\n\n      S = l;\n      return;\n    }\n\n    function Vb(a, b, c) {\n      a = a | 0;\n      b = b | 0;\n      c = c | 0;\n      var d = 0,\n          e = 0;\n      d = S;\n      S = S + 16 | 0;\n      e = d;\n      Ub(a, b, e);\n      b = cd(a | 0, b | 0, 52) | 0;\n      G() | 0;\n      $a(e, b & 15, c);\n      S = d;\n      return;\n    }\n\n    function Wb(a, b, c) {\n      a = a | 0;\n      b = b | 0;\n      c = c | 0;\n      var d = 0,\n          e = 0,\n          f = 0,\n          g = 0,\n          h = 0;\n      g = S;\n      S = S + 16 | 0;\n      f = g;\n      Ub(a, b, f);\n      d = cd(a | 0, b | 0, 45) | 0;\n      G() | 0;\n      d = (la(d & 127) | 0) == 0;\n      e = cd(a | 0, b | 0, 52) | 0;\n      G() | 0;\n      e = e & 15;\n\n      a: do { if (!d) {\n        if (e | 0) {\n          d = 1;\n\n          while (1) {\n            h = dd(7, 0, (15 - d | 0) * 3 | 0) | 0;\n            if (!((h & a | 0) == 0 & ((G() | 0) & b | 0) == 0)) { break a; }\n            if (d >>> 0 < e >>> 0) { d = d + 1 | 0; }else { break; }\n          }\n        }\n\n        ab(f, e, 0, 5, c);\n        S = g;\n        return;\n      } } while (0);\n\n      eb(f, e, 0, 6, c);\n      S = g;\n      return;\n    }\n\n    function Xb(a, b) {\n      a = a | 0;\n      b = b | 0;\n      var c = 0,\n          d = 0,\n          e = 0;\n      d = cd(a | 0, b | 0, 45) | 0;\n      G() | 0;\n\n      if (!(la(d & 127) | 0)) {\n        d = 2;\n        return d | 0;\n      }\n\n      d = cd(a | 0, b | 0, 52) | 0;\n      G() | 0;\n      d = d & 15;\n\n      if (!d) {\n        d = 5;\n        return d | 0;\n      }\n\n      c = 1;\n\n      while (1) {\n        e = dd(7, 0, (15 - c | 0) * 3 | 0) | 0;\n\n        if (!((e & a | 0) == 0 & ((G() | 0) & b | 0) == 0)) {\n          c = 2;\n          a = 6;\n          break;\n        }\n\n        if (c >>> 0 < d >>> 0) { c = c + 1 | 0; }else {\n          c = 5;\n          a = 6;\n          break;\n        }\n      }\n\n      if ((a | 0) == 6) { return c | 0; }\n      return 0;\n    }\n\n    function Yb(a, c, d) {\n      a = a | 0;\n      c = c | 0;\n      d = d | 0;\n      var e = 0,\n          f = 0,\n          g = 0,\n          h = 0,\n          i = 0,\n          j = 0,\n          k = 0,\n          l = 0,\n          m = 0;\n      m = S;\n      S = S + 128 | 0;\n      k = m + 112 | 0;\n      g = m + 96 | 0;\n      l = m;\n      f = cd(a | 0, c | 0, 52) | 0;\n      G() | 0;\n      i = f & 15;\n      b[k >> 2] = i;\n      h = cd(a | 0, c | 0, 45) | 0;\n      G() | 0;\n      h = h & 127;\n\n      a: do { if (la(h) | 0) {\n        if (i | 0) {\n          e = 1;\n\n          while (1) {\n            j = dd(7, 0, (15 - e | 0) * 3 | 0) | 0;\n\n            if (!((j & a | 0) == 0 & ((G() | 0) & c | 0) == 0)) {\n              f = 0;\n              break a;\n            }\n\n            if (e >>> 0 < i >>> 0) { e = e + 1 | 0; }else { break; }\n          }\n        }\n\n        if (!(f & 1)) {\n          j = dd(i + 1 | 0, 0, 52) | 0;\n          l = G() | 0 | c & -15728641;\n          k = dd(7, 0, (14 - i | 0) * 3 | 0) | 0;\n          Yb((j | a) & ~k, l & ~(G() | 0), d);\n          S = m;\n          return;\n        } else { f = 1; }\n      } else { f = 0; } } while (0);\n\n      Ub(a, c, g);\n\n      if (f) {\n        bb(g, k, l);\n        j = 5;\n      } else {\n        fb(g, k, l);\n        j = 6;\n      }\n\n      b: do { if (la(h) | 0) {\n        if (!i) { e = 20; }else {\n          e = 1;\n\n          while (1) {\n            h = dd(7, 0, (15 - e | 0) * 3 | 0) | 0;\n\n            if (!((h & a | 0) == 0 & ((G() | 0) & c | 0) == 0)) {\n              e = 8;\n              break b;\n            }\n\n            if (e >>> 0 < i >>> 0) { e = e + 1 | 0; }else {\n              e = 20;\n              break;\n            }\n          }\n        }\n      } else { e = 8; } } while (0);\n\n      hd(d | 0, -1, e | 0) | 0;\n\n      if (f) {\n        f = 0;\n\n        do {\n          g = l + (f << 4) | 0;\n          db(g, b[k >> 2] | 0) | 0;\n          g = b[g >> 2] | 0;\n          e = 0;\n\n          while (1) {\n            h = d + (e << 2) | 0;\n            i = b[h >> 2] | 0;\n            if ((i | 0) == -1 | (i | 0) == (g | 0)) { break; }else { e = e + 1 | 0; }\n          }\n\n          b[h >> 2] = g;\n          f = f + 1 | 0;\n        } while ((f | 0) != (j | 0));\n      } else {\n        f = 0;\n\n        do {\n          g = l + (f << 4) | 0;\n          cb(g, b[k >> 2] | 0, 0, 1) | 0;\n          g = b[g >> 2] | 0;\n          e = 0;\n\n          while (1) {\n            h = d + (e << 2) | 0;\n            i = b[h >> 2] | 0;\n            if ((i | 0) == -1 | (i | 0) == (g | 0)) { break; }else { e = e + 1 | 0; }\n          }\n\n          b[h >> 2] = g;\n          f = f + 1 | 0;\n        } while ((f | 0) != (j | 0));\n      }\n\n      S = m;\n      return;\n    }\n\n    function Zb() {\n      return 12;\n    }\n\n    function _b(a, c) {\n      a = a | 0;\n      c = c | 0;\n      var d = 0,\n          e = 0,\n          f = 0,\n          g = 0,\n          h = 0,\n          i = 0,\n          j = 0;\n      dd(a | 0, 0, 52) | 0;\n      i = G() | 0 | 134225919;\n\n      if ((a | 0) < 1) {\n        e = 0;\n        d = 0;\n\n        do {\n          if (la(e) | 0) {\n            dd(e | 0, 0, 45) | 0;\n            h = i | (G() | 0);\n            a = c + (d << 3) | 0;\n            b[a >> 2] = -1;\n            b[a + 4 >> 2] = h;\n            d = d + 1 | 0;\n          }\n\n          e = e + 1 | 0;\n        } while ((e | 0) != 122);\n\n        return;\n      }\n\n      h = 0;\n      d = 0;\n\n      do {\n        if (la(h) | 0) {\n          dd(h | 0, 0, 45) | 0;\n          e = 1;\n          f = -1;\n          g = i | (G() | 0);\n\n          while (1) {\n            j = dd(7, 0, (15 - e | 0) * 3 | 0) | 0;\n            f = f & ~j;\n            g = g & ~(G() | 0);\n            if ((e | 0) == (a | 0)) { break; }else { e = e + 1 | 0; }\n          }\n\n          j = c + (d << 3) | 0;\n          b[j >> 2] = f;\n          b[j + 4 >> 2] = g;\n          d = d + 1 | 0;\n        }\n\n        h = h + 1 | 0;\n      } while ((h | 0) != 122);\n\n      return;\n    }\n\n    function $b(a, c, d, e) {\n      a = a | 0;\n      c = c | 0;\n      d = d | 0;\n      e = e | 0;\n      var f = 0,\n          g = 0,\n          h = 0,\n          i = 0,\n          j = 0,\n          k = 0;\n      i = S;\n      S = S + 64 | 0;\n      h = i;\n\n      if ((a | 0) == (d | 0) & (c | 0) == (e | 0) | (0 != 0 | (c & 2013265920 | 0) != 134217728 | (0 != 0 | (e & 2013265920 | 0) != 134217728))) {\n        h = 0;\n        S = i;\n        return h | 0;\n      }\n\n      f = cd(a | 0, c | 0, 52) | 0;\n      G() | 0;\n      f = f & 15;\n      g = cd(d | 0, e | 0, 52) | 0;\n      G() | 0;\n\n      if ((f | 0) != (g & 15 | 0)) {\n        h = 0;\n        S = i;\n        return h | 0;\n      }\n\n      g = f + -1 | 0;\n\n      if (f >>> 0 > 1 ? (k = Cb(a, c, g) | 0, j = G() | 0, g = Cb(d, e, g) | 0, (k | 0) == (g | 0) & (j | 0) == (G() | 0)) : 0) {\n        g = (f ^ 15) * 3 | 0;\n        f = cd(a | 0, c | 0, g | 0) | 0;\n        G() | 0;\n        f = f & 7;\n        g = cd(d | 0, e | 0, g | 0) | 0;\n        G() | 0;\n        g = g & 7;\n\n        if ((f | 0) == 0 | (g | 0) == 0) {\n          k = 1;\n          S = i;\n          return k | 0;\n        }\n\n        if ((b[21136 + (f << 2) >> 2] | 0) == (g | 0)) {\n          k = 1;\n          S = i;\n          return k | 0;\n        }\n\n        if ((b[21168 + (f << 2) >> 2] | 0) == (g | 0)) {\n          k = 1;\n          S = i;\n          return k | 0;\n        }\n      }\n\n      f = h;\n      g = f + 56 | 0;\n\n      do {\n        b[f >> 2] = 0;\n        f = f + 4 | 0;\n      } while ((f | 0) < (g | 0));\n\n      $(a, c, 1, h);\n      k = h;\n\n      if (((((!((b[k >> 2] | 0) == (d | 0) ? (b[k + 4 >> 2] | 0) == (e | 0) : 0) ? (k = h + 8 | 0, !((b[k >> 2] | 0) == (d | 0) ? (b[k + 4 >> 2] | 0) == (e | 0) : 0)) : 0) ? (k = h + 16 | 0, !((b[k >> 2] | 0) == (d | 0) ? (b[k + 4 >> 2] | 0) == (e | 0) : 0)) : 0) ? (k = h + 24 | 0, !((b[k >> 2] | 0) == (d | 0) ? (b[k + 4 >> 2] | 0) == (e | 0) : 0)) : 0) ? (k = h + 32 | 0, !((b[k >> 2] | 0) == (d | 0) ? (b[k + 4 >> 2] | 0) == (e | 0) : 0)) : 0) ? (k = h + 40 | 0, !((b[k >> 2] | 0) == (d | 0) ? (b[k + 4 >> 2] | 0) == (e | 0) : 0)) : 0) {\n        f = h + 48 | 0;\n        f = ((b[f >> 2] | 0) == (d | 0) ? (b[f + 4 >> 2] | 0) == (e | 0) : 0) & 1;\n      } else { f = 1; }\n\n      k = f;\n      S = i;\n      return k | 0;\n    }\n\n    function ac(a, c, d, e) {\n      a = a | 0;\n      c = c | 0;\n      d = d | 0;\n      e = e | 0;\n      var f = 0,\n          g = 0,\n          h = 0,\n          i = 0,\n          j = 0,\n          k = 0,\n          l = 0;\n      k = S;\n      S = S + 16 | 0;\n      h = k;\n\n      if (!($b(a, c, d, e) | 0)) {\n        i = 0;\n        j = 0;\n        F(i | 0);\n        S = k;\n        return j | 0;\n      }\n\n      i = c & -2130706433;\n      f = (Fb(a, c) | 0) == 0;\n      f = f ? 1 : 2;\n\n      while (1) {\n        b[h >> 2] = 0;\n        l = da(a, c, f, h) | 0;\n        g = f + 1 | 0;\n        if ((l | 0) == (d | 0) & (G() | 0) == (e | 0)) { break; }\n        if (g >>> 0 < 7) { f = g; }else {\n          f = 0;\n          a = 0;\n          j = 6;\n          break;\n        }\n      }\n\n      if ((j | 0) == 6) {\n        F(f | 0);\n        S = k;\n        return a | 0;\n      }\n\n      l = dd(f | 0, 0, 56) | 0;\n      j = i | (G() | 0) | 268435456;\n      l = a | l;\n      F(j | 0);\n      S = k;\n      return l | 0;\n    }\n\n    function bc(a, b) {\n      a = a | 0;\n      b = b | 0;\n      var c = 0;\n      c = 0 == 0 & (b & 2013265920 | 0) == 268435456;\n      F((c ? b & -2130706433 | 134217728 : 0) | 0);\n      return (c ? a : 0) | 0;\n    }\n\n    function cc(a, c) {\n      a = a | 0;\n      c = c | 0;\n      var d = 0,\n          e = 0,\n          f = 0;\n      e = S;\n      S = S + 16 | 0;\n      d = e;\n\n      if (!(0 == 0 & (c & 2013265920 | 0) == 268435456)) {\n        c = 0;\n        d = 0;\n        F(c | 0);\n        S = e;\n        return d | 0;\n      }\n\n      f = cd(a | 0, c | 0, 56) | 0;\n      G() | 0;\n      b[d >> 2] = 0;\n      d = da(a, c & -2130706433 | 134217728, f & 7, d) | 0;\n      c = G() | 0;\n      F(c | 0);\n      S = e;\n      return d | 0;\n    }\n\n    function dc(a, b) {\n      a = a | 0;\n      b = b | 0;\n      var c = 0;\n\n      if (!(0 == 0 & (b & 2013265920 | 0) == 268435456)) {\n        c = 0;\n        return c | 0;\n      }\n\n      c = cd(a | 0, b | 0, 56) | 0;\n      G() | 0;\n\n      switch (c & 7) {\n        case 0:\n        case 7:\n          {\n            c = 0;\n            return c | 0;\n          }\n\n        default:\n\n      }\n\n      c = b & -2130706433 | 134217728;\n\n      if (0 == 0 & (b & 117440512 | 0) == 16777216 & (Fb(a, c) | 0) != 0) {\n        c = 0;\n        return c | 0;\n      }\n\n      c = Bb(a, c) | 0;\n      return c | 0;\n    }\n\n    function ec(a, c, d) {\n      a = a | 0;\n      c = c | 0;\n      d = d | 0;\n      var e = 0,\n          f = 0,\n          g = 0,\n          h = 0,\n          i = 0;\n      g = S;\n      S = S + 16 | 0;\n      e = g;\n      h = 0 == 0 & (c & 2013265920 | 0) == 268435456;\n      f = c & -2130706433 | 134217728;\n      i = d;\n      b[i >> 2] = h ? a : 0;\n      b[i + 4 >> 2] = h ? f : 0;\n\n      if (h) {\n        c = cd(a | 0, c | 0, 56) | 0;\n        G() | 0;\n        b[e >> 2] = 0;\n        a = da(a, f, c & 7, e) | 0;\n        c = G() | 0;\n      } else {\n        a = 0;\n        c = 0;\n      }\n\n      i = d + 8 | 0;\n      b[i >> 2] = a;\n      b[i + 4 >> 2] = c;\n      S = g;\n      return;\n    }\n\n    function fc(a, c, d) {\n      a = a | 0;\n      c = c | 0;\n      d = d | 0;\n      var e = 0,\n          f = 0;\n      f = (Fb(a, c) | 0) == 0;\n      c = c & -2130706433;\n      e = d;\n      b[e >> 2] = f ? a : 0;\n      b[e + 4 >> 2] = f ? c | 285212672 : 0;\n      e = d + 8 | 0;\n      b[e >> 2] = a;\n      b[e + 4 >> 2] = c | 301989888;\n      e = d + 16 | 0;\n      b[e >> 2] = a;\n      b[e + 4 >> 2] = c | 318767104;\n      e = d + 24 | 0;\n      b[e >> 2] = a;\n      b[e + 4 >> 2] = c | 335544320;\n      e = d + 32 | 0;\n      b[e >> 2] = a;\n      b[e + 4 >> 2] = c | 352321536;\n      d = d + 40 | 0;\n      b[d >> 2] = a;\n      b[d + 4 >> 2] = c | 369098752;\n      return;\n    }\n\n    function gc(a, c, d) {\n      a = a | 0;\n      c = c | 0;\n      d = d | 0;\n      var e = 0,\n          f = 0,\n          g = 0,\n          h = 0,\n          i = 0;\n      h = S;\n      S = S + 16 | 0;\n      g = h;\n      e = cd(a | 0, c | 0, 56) | 0;\n      G() | 0;\n      i = 0 == 0 & (c & 2013265920 | 0) == 268435456;\n      f = i ? a : 0;\n      a = i ? c & -2130706433 | 134217728 : 0;\n      c = Lc(f, a, e & 7) | 0;\n\n      if ((c | 0) == -1) {\n        b[d >> 2] = 0;\n        S = h;\n        return;\n      }\n\n      Ub(f, a, g);\n      e = cd(f | 0, a | 0, 52) | 0;\n      G() | 0;\n      e = e & 15;\n      if (!(Fb(f, a) | 0)) { eb(g, e, c, 2, d); }else { ab(g, e, c, 2, d); }\n      S = h;\n      return;\n    }\n\n    function hc(a) {\n      a = a | 0;\n      var c = 0,\n          d = 0,\n          e = 0;\n      c = Yc(1, 12) | 0;\n      if (!c) { H(22691, 22646, 49, 22704); }\n      d = a + 4 | 0;\n      e = b[d >> 2] | 0;\n\n      if (e | 0) {\n        e = e + 8 | 0;\n        b[e >> 2] = c;\n        b[d >> 2] = c;\n        return c | 0;\n      }\n\n      if (b[a >> 2] | 0) { H(22721, 22646, 61, 22744); }\n      e = a;\n      b[e >> 2] = c;\n      b[d >> 2] = c;\n      return c | 0;\n    }\n\n    function ic(a, c) {\n      a = a | 0;\n      c = c | 0;\n      var d = 0,\n          e = 0;\n      e = Wc(24) | 0;\n      if (!e) { H(22758, 22646, 78, 22772); }\n      b[e >> 2] = b[c >> 2];\n      b[e + 4 >> 2] = b[c + 4 >> 2];\n      b[e + 8 >> 2] = b[c + 8 >> 2];\n      b[e + 12 >> 2] = b[c + 12 >> 2];\n      b[e + 16 >> 2] = 0;\n      c = a + 4 | 0;\n      d = b[c >> 2] | 0;\n\n      if (d | 0) {\n        b[d + 16 >> 2] = e;\n        b[c >> 2] = e;\n        return e | 0;\n      }\n\n      if (b[a >> 2] | 0) { H(22787, 22646, 82, 22772); }\n      b[a >> 2] = e;\n      b[c >> 2] = e;\n      return e | 0;\n    }\n\n    function jc(a) {\n      a = a | 0;\n      var c = 0,\n          d = 0,\n          e = 0,\n          f = 0;\n      if (!a) { return; }\n      e = 1;\n\n      while (1) {\n        c = b[a >> 2] | 0;\n        if (c | 0) { do {\n          d = b[c >> 2] | 0;\n          if (d | 0) { do {\n            f = d;\n            d = b[d + 16 >> 2] | 0;\n            Xc(f);\n          } while ((d | 0) != 0); }\n          f = c;\n          c = b[c + 8 >> 2] | 0;\n          Xc(f);\n        } while ((c | 0) != 0); }\n        c = a;\n        a = b[a + 8 >> 2] | 0;\n        if (!e) { Xc(c); }\n        if (!a) { break; }else { e = 0; }\n      }\n\n      return;\n    }\n\n    function kc(a) {\n      a = a | 0;\n      var c = 0,\n          d = 0,\n          f = 0,\n          g = 0,\n          h = 0.0,\n          i = 0,\n          j = 0.0,\n          k = 0.0,\n          l = 0,\n          m = 0,\n          n = 0,\n          o = 0,\n          p = 0,\n          r = 0,\n          s = 0.0,\n          t = 0.0,\n          u = 0.0,\n          v = 0.0,\n          w = 0.0,\n          x = 0.0,\n          y = 0,\n          z = 0,\n          A = 0,\n          B = 0,\n          C = 0,\n          D = 0,\n          E = 0,\n          F = 0,\n          G = 0,\n          I = 0,\n          J = 0,\n          K = 0;\n      g = a + 8 | 0;\n\n      if (b[g >> 2] | 0) {\n        K = 1;\n        return K | 0;\n      }\n\n      f = b[a >> 2] | 0;\n\n      if (!f) {\n        K = 0;\n        return K | 0;\n      }\n\n      c = f;\n      d = 0;\n\n      do {\n        d = d + 1 | 0;\n        c = b[c + 8 >> 2] | 0;\n      } while ((c | 0) != 0);\n\n      if (d >>> 0 < 2) {\n        K = 0;\n        return K | 0;\n      }\n\n      I = Wc(d << 2) | 0;\n      if (!I) { H(22807, 22646, 317, 22826); }\n      G = Wc(d << 5) | 0;\n      if (!G) { H(22848, 22646, 321, 22826); }\n      b[a >> 2] = 0;\n      z = a + 4 | 0;\n      b[z >> 2] = 0;\n      b[g >> 2] = 0;\n      d = 0;\n      F = 0;\n      y = 0;\n      n = 0;\n\n      a: while (1) {\n        m = b[f >> 2] | 0;\n\n        if (m) {\n          h = 0.0;\n          i = m;\n\n          do {\n            k = +e[i + 8 >> 3];\n            c = i;\n            i = b[i + 16 >> 2] | 0;\n            l = (i | 0) == 0;\n            g = l ? m : i;\n            j = +e[g + 8 >> 3];\n\n            if (+q(+(k - j)) > 3.141592653589793) {\n              K = 14;\n              break;\n            }\n\n            h = h + (j - k) * (+e[c >> 3] + +e[g >> 3]);\n          } while (!l);\n\n          if ((K | 0) == 14) {\n            K = 0;\n            h = 0.0;\n            c = m;\n\n            do {\n              x = +e[c + 8 >> 3];\n              E = c + 16 | 0;\n              D = b[E >> 2] | 0;\n              D = (D | 0) == 0 ? m : D;\n              w = +e[D + 8 >> 3];\n              h = h + (+e[c >> 3] + +e[D >> 3]) * ((w < 0.0 ? w + 6.283185307179586 : w) - (x < 0.0 ? x + 6.283185307179586 : x));\n              c = b[((c | 0) == 0 ? f : E) >> 2] | 0;\n            } while ((c | 0) != 0);\n          }\n\n          if (h > 0.0) {\n            b[I + (F << 2) >> 2] = f;\n            F = F + 1 | 0;\n            g = y;\n            c = n;\n          } else { K = 19; }\n        } else { K = 19; }\n\n        if ((K | 0) == 19) {\n          K = 0;\n\n          do { if (!d) {\n            if (!n) {\n              if (!(b[a >> 2] | 0)) {\n                g = z;\n                i = a;\n                c = f;\n                d = a;\n                break;\n              } else {\n                K = 27;\n                break a;\n              }\n            } else {\n              g = z;\n              i = n + 8 | 0;\n              c = f;\n              d = a;\n              break;\n            }\n          } else {\n            c = d + 8 | 0;\n\n            if (b[c >> 2] | 0) {\n              K = 21;\n              break a;\n            }\n\n            d = Yc(1, 12) | 0;\n\n            if (!d) {\n              K = 23;\n              break a;\n            }\n\n            b[c >> 2] = d;\n            g = d + 4 | 0;\n            i = d;\n            c = n;\n          } } while (0);\n\n          b[i >> 2] = f;\n          b[g >> 2] = f;\n          i = G + (y << 5) | 0;\n          l = b[f >> 2] | 0;\n\n          if (l) {\n            m = G + (y << 5) + 8 | 0;\n            e[m >> 3] = 1797693134862315708145274.0e284;\n            n = G + (y << 5) + 24 | 0;\n            e[n >> 3] = 1797693134862315708145274.0e284;\n            e[i >> 3] = -1797693134862315708145274.0e284;\n            o = G + (y << 5) + 16 | 0;\n            e[o >> 3] = -1797693134862315708145274.0e284;\n            u = 1797693134862315708145274.0e284;\n            v = -1797693134862315708145274.0e284;\n            g = 0;\n            p = l;\n            k = 1797693134862315708145274.0e284;\n            s = 1797693134862315708145274.0e284;\n            t = -1797693134862315708145274.0e284;\n            j = -1797693134862315708145274.0e284;\n\n            while (1) {\n              h = +e[p >> 3];\n              x = +e[p + 8 >> 3];\n              p = b[p + 16 >> 2] | 0;\n              r = (p | 0) == 0;\n              w = +e[(r ? l : p) + 8 >> 3];\n\n              if (h < k) {\n                e[m >> 3] = h;\n                k = h;\n              }\n\n              if (x < s) {\n                e[n >> 3] = x;\n                s = x;\n              }\n\n              if (h > t) { e[i >> 3] = h; }else { h = t; }\n\n              if (x > j) {\n                e[o >> 3] = x;\n                j = x;\n              }\n\n              u = x > 0.0 & x < u ? x : u;\n              v = x < 0.0 & x > v ? x : v;\n              g = g | +q(+(x - w)) > 3.141592653589793;\n              if (r) { break; }else { t = h; }\n            }\n\n            if (g) {\n              e[o >> 3] = v;\n              e[n >> 3] = u;\n            }\n          } else {\n            b[i >> 2] = 0;\n            b[i + 4 >> 2] = 0;\n            b[i + 8 >> 2] = 0;\n            b[i + 12 >> 2] = 0;\n            b[i + 16 >> 2] = 0;\n            b[i + 20 >> 2] = 0;\n            b[i + 24 >> 2] = 0;\n            b[i + 28 >> 2] = 0;\n          }\n\n          g = y + 1 | 0;\n        }\n\n        E = f + 8 | 0;\n        f = b[E >> 2] | 0;\n        b[E >> 2] = 0;\n\n        if (!f) {\n          K = 45;\n          break;\n        } else {\n          y = g;\n          n = c;\n        }\n      }\n\n      if ((K | 0) == 21) { H(22624, 22646, 35, 22658); }else if ((K | 0) == 23) { H(22678, 22646, 37, 22658); }else if ((K | 0) == 27) { H(22721, 22646, 61, 22744); }else if ((K | 0) == 45) {\n        b: do { if ((F | 0) > 0) {\n          E = (g | 0) == 0;\n          C = g << 2;\n          D = (a | 0) == 0;\n          B = 0;\n          c = 0;\n\n          while (1) {\n            A = b[I + (B << 2) >> 2] | 0;\n\n            if (!E) {\n              y = Wc(C) | 0;\n\n              if (!y) {\n                K = 50;\n                break;\n              }\n\n              z = Wc(C) | 0;\n\n              if (!z) {\n                K = 52;\n                break;\n              }\n\n              c: do { if (!D) {\n                g = 0;\n                d = 0;\n                i = a;\n\n                while (1) {\n                  f = G + (g << 5) | 0;\n\n                  if (lc(b[i >> 2] | 0, f, b[A >> 2] | 0) | 0) {\n                    b[y + (d << 2) >> 2] = i;\n                    b[z + (d << 2) >> 2] = f;\n                    r = d + 1 | 0;\n                  } else { r = d; }\n\n                  i = b[i + 8 >> 2] | 0;\n                  if (!i) { break; }else {\n                    g = g + 1 | 0;\n                    d = r;\n                  }\n                }\n\n                if ((r | 0) > 0) {\n                  f = b[y >> 2] | 0;\n                  if ((r | 0) == 1) { d = f; }else {\n                    o = 0;\n                    p = -1;\n                    d = f;\n                    n = f;\n\n                    while (1) {\n                      l = b[n >> 2] | 0;\n                      f = 0;\n                      i = 0;\n\n                      while (1) {\n                        g = b[b[y + (i << 2) >> 2] >> 2] | 0;\n                        if ((g | 0) == (l | 0)) { m = f; }else { m = f + ((lc(g, b[z + (i << 2) >> 2] | 0, b[l >> 2] | 0) | 0) & 1) | 0; }\n                        i = i + 1 | 0;\n                        if ((i | 0) == (r | 0)) { break; }else { f = m; }\n                      }\n\n                      g = (m | 0) > (p | 0);\n                      d = g ? n : d;\n                      f = o + 1 | 0;\n                      if ((f | 0) == (r | 0)) { break c; }\n                      o = f;\n                      p = g ? m : p;\n                      n = b[y + (f << 2) >> 2] | 0;\n                    }\n                  }\n                } else { d = 0; }\n              } else { d = 0; } } while (0);\n\n              Xc(y);\n              Xc(z);\n\n              if (d) {\n                g = d + 4 | 0;\n                f = b[g >> 2] | 0;\n\n                if (!f) {\n                  if (b[d >> 2] | 0) {\n                    K = 70;\n                    break;\n                  }\n                } else { d = f + 8 | 0; }\n\n                b[d >> 2] = A;\n                b[g >> 2] = A;\n              } else { K = 73; }\n            } else { K = 73; }\n\n            if ((K | 0) == 73) {\n              K = 0;\n              c = b[A >> 2] | 0;\n              if (c | 0) { do {\n                z = c;\n                c = b[c + 16 >> 2] | 0;\n                Xc(z);\n              } while ((c | 0) != 0); }\n              Xc(A);\n              c = 2;\n            }\n\n            B = B + 1 | 0;\n\n            if ((B | 0) >= (F | 0)) {\n              J = c;\n              break b;\n            }\n          }\n\n          if ((K | 0) == 50) { H(22863, 22646, 249, 22882); }else if ((K | 0) == 52) { H(22901, 22646, 252, 22882); }else if ((K | 0) == 70) { H(22721, 22646, 61, 22744); }\n        } else { J = 0; } } while (0);\n\n        Xc(I);\n        Xc(G);\n        K = J;\n        return K | 0;\n      }\n      return 0;\n    }\n\n    function lc(a, c, d) {\n      a = a | 0;\n      c = c | 0;\n      d = d | 0;\n      var f = 0.0,\n          g = 0.0,\n          h = 0.0,\n          i = 0.0,\n          j = 0.0,\n          k = 0.0,\n          l = 0.0,\n          m = 0;\n\n      if (!(xa(c, d) | 0)) {\n        a = 0;\n        return a | 0;\n      }\n\n      c = wa(c) | 0;\n      l = +e[d >> 3];\n      f = +e[d + 8 >> 3];\n      f = c & f < 0.0 ? f + 6.283185307179586 : f;\n      a = b[a >> 2] | 0;\n\n      if (!a) {\n        a = 0;\n        return a | 0;\n      }\n\n      if (c) {\n        c = 0;\n        d = a;\n\n        a: while (1) {\n          while (1) {\n            i = +e[d >> 3];\n            k = +e[d + 8 >> 3];\n            d = d + 16 | 0;\n            m = b[d >> 2] | 0;\n            m = (m | 0) == 0 ? a : m;\n            h = +e[m >> 3];\n            g = +e[m + 8 >> 3];\n\n            if (i > h) {\n              j = i;\n              i = k;\n            } else {\n              j = h;\n              h = i;\n              i = g;\n              g = k;\n            }\n\n            if (!(l < h | l > j)) { break; }\n            d = b[d >> 2] | 0;\n\n            if (!d) {\n              d = 22;\n              break a;\n            }\n          }\n\n          k = g < 0.0 ? g + 6.283185307179586 : g;\n          i = i < 0.0 ? i + 6.283185307179586 : i;\n          f = i == f | k == f ? f + -2.220446049250313e-16 : f;\n          k = k + (l - h) / (j - h) * (i - k);\n          if ((k < 0.0 ? k + 6.283185307179586 : k) > f) { c = c ^ 1; }\n          d = b[d >> 2] | 0;\n\n          if (!d) {\n            d = 22;\n            break;\n          }\n        }\n\n        if ((d | 0) == 22) { return c | 0; }\n      } else {\n        c = 0;\n        d = a;\n\n        b: while (1) {\n          while (1) {\n            i = +e[d >> 3];\n            k = +e[d + 8 >> 3];\n            d = d + 16 | 0;\n            m = b[d >> 2] | 0;\n            m = (m | 0) == 0 ? a : m;\n            h = +e[m >> 3];\n            g = +e[m + 8 >> 3];\n\n            if (i > h) {\n              j = i;\n              i = k;\n            } else {\n              j = h;\n              h = i;\n              i = g;\n              g = k;\n            }\n\n            if (!(l < h | l > j)) { break; }\n            d = b[d >> 2] | 0;\n\n            if (!d) {\n              d = 22;\n              break b;\n            }\n          }\n\n          f = i == f | g == f ? f + -2.220446049250313e-16 : f;\n          if (g + (l - h) / (j - h) * (i - g) > f) { c = c ^ 1; }\n          d = b[d >> 2] | 0;\n\n          if (!d) {\n            d = 22;\n            break;\n          }\n        }\n\n        if ((d | 0) == 22) { return c | 0; }\n      }\n\n      return 0;\n    }\n\n    function mc(c, d, e, f, g) {\n      c = c | 0;\n      d = d | 0;\n      e = e | 0;\n      f = f | 0;\n      g = g | 0;\n      var h = 0,\n          i = 0,\n          j = 0,\n          k = 0,\n          l = 0,\n          m = 0,\n          n = 0,\n          o = 0,\n          p = 0,\n          q = 0,\n          r = 0,\n          s = 0,\n          t = 0,\n          u = 0;\n      u = S;\n      S = S + 32 | 0;\n      t = u + 16 | 0;\n      s = u;\n      h = cd(c | 0, d | 0, 52) | 0;\n      G() | 0;\n      h = h & 15;\n      p = cd(e | 0, f | 0, 52) | 0;\n      G() | 0;\n\n      if ((h | 0) != (p & 15 | 0)) {\n        t = 1;\n        S = u;\n        return t | 0;\n      }\n\n      l = cd(c | 0, d | 0, 45) | 0;\n      G() | 0;\n      l = l & 127;\n      m = cd(e | 0, f | 0, 45) | 0;\n      G() | 0;\n      m = m & 127;\n      p = (l | 0) != (m | 0);\n\n      if (p) {\n        j = ta(l, m) | 0;\n\n        if ((j | 0) == 7) {\n          t = 2;\n          S = u;\n          return t | 0;\n        }\n\n        k = ta(m, l) | 0;\n        if ((k | 0) == 7) { H(22925, 22949, 151, 22959); }else {\n          q = j;\n          i = k;\n        }\n      } else {\n        q = 0;\n        i = 0;\n      }\n\n      n = la(l) | 0;\n      o = la(m) | 0;\n      b[t >> 2] = 0;\n      b[t + 4 >> 2] = 0;\n      b[t + 8 >> 2] = 0;\n      b[t + 12 >> 2] = 0;\n\n      do { if (!q) {\n        Tb(e, f, t) | 0;\n\n        if ((n | 0) != 0 & (o | 0) != 0) {\n          if ((m | 0) != (l | 0)) { H(23077, 22949, 243, 22959); }\n          i = Lb(c, d) | 0;\n          h = Lb(e, f) | 0;\n\n          if (!(a[22032 + (i * 7 | 0) + h >> 0] | 0)) {\n            i = b[21200 + (i * 28 | 0) + (h << 2) >> 2] | 0;\n\n            if ((i | 0) > 0) {\n              j = t + 4 | 0;\n              h = 0;\n\n              do {\n                Oa(j);\n                h = h + 1 | 0;\n              } while ((h | 0) != (i | 0));\n\n              r = 50;\n            } else { r = 50; }\n          } else { h = 5; }\n        } else { r = 50; }\n      } else {\n        m = b[4304 + (l * 28 | 0) + (q << 2) >> 2] | 0;\n        j = (m | 0) > 0;\n        if (!o) {\n          if (j) {\n            l = 0;\n            k = e;\n            j = f;\n\n            do {\n              k = Pb(k, j) | 0;\n              j = G() | 0;\n              i = Qa(i) | 0;\n              l = l + 1 | 0;\n            } while ((l | 0) != (m | 0));\n\n            m = i;\n            l = k;\n            k = j;\n          } else {\n            m = i;\n            l = e;\n            k = f;\n          }\n        } else if (j) {\n          l = 0;\n          k = e;\n          j = f;\n\n          do {\n            k = Ob(k, j) | 0;\n            j = G() | 0;\n            i = Qa(i) | 0;\n            if ((i | 0) == 1) { i = Qa(1) | 0; }\n            l = l + 1 | 0;\n          } while ((l | 0) != (m | 0));\n\n          m = i;\n          l = k;\n          k = j;\n        } else {\n          m = i;\n          l = e;\n          k = f;\n        }\n        Tb(l, k, t) | 0;\n        if (!p) { H(22972, 22949, 181, 22959); }\n        j = (n | 0) != 0;\n        i = (o | 0) != 0;\n        if (j & i) { H(22999, 22949, 182, 22959); }\n        if (!j) {\n          if (i) {\n            i = Lb(l, k) | 0;\n\n            if (a[22032 + (i * 7 | 0) + m >> 0] | 0) {\n              h = 4;\n              break;\n            }\n\n            l = 0;\n            k = b[21200 + (m * 28 | 0) + (i << 2) >> 2] | 0;\n            r = 26;\n          } else { i = 0; }\n        } else {\n          i = Lb(c, d) | 0;\n\n          if (a[22032 + (i * 7 | 0) + q >> 0] | 0) {\n            h = 3;\n            break;\n          }\n\n          k = b[21200 + (i * 28 | 0) + (q << 2) >> 2] | 0;\n          l = k;\n          r = 26;\n        }\n\n        if ((r | 0) == 26) {\n          if ((k | 0) <= -1) { H(23030, 22949, 212, 22959); }\n          if ((l | 0) <= -1) { H(23053, 22949, 213, 22959); }\n\n          if ((k | 0) > 0) {\n            j = t + 4 | 0;\n            i = 0;\n\n            do {\n              Oa(j);\n              i = i + 1 | 0;\n            } while ((i | 0) != (k | 0));\n\n            i = l;\n          } else { i = l; }\n        }\n        b[s >> 2] = 0;\n        b[s + 4 >> 2] = 0;\n        b[s + 8 >> 2] = 0;\n        Ma(s, q);\n        if (h | 0) { while (1) {\n          if (!(Rb(h) | 0)) { La(s); }else { Ka(s); }\n          if ((h | 0) > 1) { h = h + -1 | 0; }else { break; }\n        } }\n\n        if ((i | 0) > 0) {\n          h = 0;\n\n          do {\n            Oa(s);\n            h = h + 1 | 0;\n          } while ((h | 0) != (i | 0));\n        }\n\n        r = t + 4 | 0;\n        Ea(r, s, r);\n        Ca(r);\n        r = 50;\n      } } while (0);\n\n      if ((r | 0) == 50) {\n        h = t + 4 | 0;\n        b[g >> 2] = b[h >> 2];\n        b[g + 4 >> 2] = b[h + 4 >> 2];\n        b[g + 8 >> 2] = b[h + 8 >> 2];\n        h = 0;\n      }\n\n      t = h;\n      S = u;\n      return t | 0;\n    }\n\n    function nc(a, c, d, e) {\n      a = a | 0;\n      c = c | 0;\n      d = d | 0;\n      e = e | 0;\n      var f = 0,\n          g = 0,\n          h = 0,\n          i = 0,\n          j = 0,\n          k = 0,\n          l = 0,\n          m = 0,\n          n = 0,\n          o = 0,\n          p = 0,\n          q = 0,\n          r = 0,\n          s = 0,\n          t = 0;\n      p = S;\n      S = S + 48 | 0;\n      h = p + 36 | 0;\n      i = p + 24 | 0;\n      j = p + 12 | 0;\n      k = p;\n      g = cd(a | 0, c | 0, 52) | 0;\n      G() | 0;\n      g = g & 15;\n      n = cd(a | 0, c | 0, 45) | 0;\n      G() | 0;\n      n = n & 127;\n      l = la(n) | 0;\n      dd(g | 0, 0, 52) | 0;\n      r = G() | 0 | 134225919;\n      q = e;\n      b[q >> 2] = -1;\n      b[q + 4 >> 2] = r;\n\n      if (!g) {\n        if ((b[d >> 2] | 0) > 1) {\n          r = 1;\n          S = p;\n          return r | 0;\n        }\n\n        if ((b[d + 4 >> 2] | 0) > 1) {\n          r = 1;\n          S = p;\n          return r | 0;\n        }\n\n        if ((b[d + 8 >> 2] | 0) > 1) {\n          r = 1;\n          S = p;\n          return r | 0;\n        }\n\n        f = sa(n, Ha(d) | 0) | 0;\n\n        if ((f | 0) == 127) {\n          r = 1;\n          S = p;\n          return r | 0;\n        }\n\n        o = dd(f | 0, 0, 45) | 0;\n        q = G() | 0;\n        n = e;\n        q = b[n + 4 >> 2] & -1040385 | q;\n        r = e;\n        b[r >> 2] = b[n >> 2] | o;\n        b[r + 4 >> 2] = q;\n        r = 0;\n        S = p;\n        return r | 0;\n      }\n      b[h >> 2] = b[d >> 2];\n      b[h + 4 >> 2] = b[d + 4 >> 2];\n      b[h + 8 >> 2] = b[d + 8 >> 2];\n\n      while (1) {\n        b[i >> 2] = b[h >> 2];\n        b[i + 4 >> 2] = b[h + 4 >> 2];\n        b[i + 8 >> 2] = b[h + 8 >> 2];\n\n        if (!(Rb(g) | 0)) {\n          Ja(h);\n          b[j >> 2] = b[h >> 2];\n          b[j + 4 >> 2] = b[h + 4 >> 2];\n          b[j + 8 >> 2] = b[h + 8 >> 2];\n          La(j);\n        } else {\n          Ia(h);\n          b[j >> 2] = b[h >> 2];\n          b[j + 4 >> 2] = b[h + 4 >> 2];\n          b[j + 8 >> 2] = b[h + 8 >> 2];\n          Ka(j);\n        }\n\n        Fa(i, j, k);\n        Ca(k);\n        q = e;\n        s = b[q >> 2] | 0;\n        q = b[q + 4 >> 2] | 0;\n        t = (15 - g | 0) * 3 | 0;\n        d = dd(7, 0, t | 0) | 0;\n        q = q & ~(G() | 0);\n        t = dd(Ha(k) | 0, 0, t | 0) | 0;\n        q = G() | 0 | q;\n        r = e;\n        b[r >> 2] = t | s & ~d;\n        b[r + 4 >> 2] = q;\n        if ((g | 0) > 1) { g = g + -1 | 0; }else { break; }\n      }\n\n      a: do { if (((b[h >> 2] | 0) <= 1 ? (b[h + 4 >> 2] | 0) <= 1 : 0) ? (b[h + 8 >> 2] | 0) <= 1 : 0) {\n        g = Ha(h) | 0;\n        i = sa(n, g) | 0;\n        if ((i | 0) == 127) { k = 0; }else { k = la(i) | 0; }\n\n        b: do { if (!g) {\n          if ((l | 0) != 0 & (k | 0) != 0) {\n            t = Lb(a, c) | 0;\n            g = e;\n            g = 21408 + (t * 28 | 0) + ((Lb(b[g >> 2] | 0, b[g + 4 >> 2] | 0) | 0) << 2) | 0;\n            g = b[g >> 2] | 0;\n            if ((g | 0) <= -1) { H(23201, 22949, 433, 23134); }\n\n            if (!g) {\n              f = i;\n              g = 55;\n            } else {\n              h = e;\n              f = 0;\n              d = b[h >> 2] | 0;\n              h = b[h + 4 >> 2] | 0;\n\n              do {\n                d = Nb(d, h) | 0;\n                h = G() | 0;\n                t = e;\n                b[t >> 2] = d;\n                b[t + 4 >> 2] = h;\n                f = f + 1 | 0;\n              } while ((f | 0) < (g | 0));\n\n              f = i;\n              g = 54;\n            }\n          } else {\n            f = i;\n            g = 54;\n          }\n        } else {\n          if (l) {\n            h = 21408 + ((Lb(a, c) | 0) * 28 | 0) + (g << 2) | 0;\n            h = b[h >> 2] | 0;\n\n            if ((h | 0) > 0) {\n              d = 0;\n\n              do {\n                g = Pa(g) | 0;\n                d = d + 1 | 0;\n              } while ((d | 0) != (h | 0));\n            }\n\n            if ((g | 0) == 1) {\n              f = 3;\n              break a;\n            }\n\n            d = sa(n, g) | 0;\n            if ((d | 0) == 127) { H(23104, 22949, 376, 23134); }\n\n            if (!(la(d) | 0)) {\n              o = h;\n              m = g;\n              f = d;\n            } else { H(23147, 22949, 377, 23134); }\n          } else {\n            o = 0;\n            m = g;\n            f = i;\n          }\n\n          j = b[4304 + (n * 28 | 0) + (m << 2) >> 2] | 0;\n          if ((j | 0) <= -1) { H(23178, 22949, 384, 23134); }\n\n          if (!k) {\n            if ((o | 0) <= -1) { H(23030, 22949, 417, 23134); }\n\n            if (o | 0) {\n              h = e;\n              g = 0;\n              d = b[h >> 2] | 0;\n              h = b[h + 4 >> 2] | 0;\n\n              do {\n                d = Nb(d, h) | 0;\n                h = G() | 0;\n                t = e;\n                b[t >> 2] = d;\n                b[t + 4 >> 2] = h;\n                g = g + 1 | 0;\n              } while ((g | 0) < (o | 0));\n            }\n\n            if ((j | 0) <= 0) {\n              g = 54;\n              break;\n            }\n\n            h = e;\n            g = 0;\n            d = b[h >> 2] | 0;\n            h = b[h + 4 >> 2] | 0;\n\n            while (1) {\n              d = Nb(d, h) | 0;\n              h = G() | 0;\n              t = e;\n              b[t >> 2] = d;\n              b[t + 4 >> 2] = h;\n              g = g + 1 | 0;\n\n              if ((g | 0) == (j | 0)) {\n                g = 54;\n                break b;\n              }\n            }\n          }\n\n          i = ta(f, n) | 0;\n          if ((i | 0) == 7) { H(22925, 22949, 393, 23134); }\n          g = e;\n          d = b[g >> 2] | 0;\n          g = b[g + 4 >> 2] | 0;\n\n          if ((j | 0) > 0) {\n            h = 0;\n\n            do {\n              d = Nb(d, g) | 0;\n              g = G() | 0;\n              t = e;\n              b[t >> 2] = d;\n              b[t + 4 >> 2] = g;\n              h = h + 1 | 0;\n            } while ((h | 0) != (j | 0));\n          }\n\n          d = Lb(d, g) | 0;\n          t = ma(f) | 0;\n          d = b[(t ? 21824 : 21616) + (i * 28 | 0) + (d << 2) >> 2] | 0;\n          if ((d | 0) <= -1) { H(23030, 22949, 412, 23134); }\n          if (!d) { g = 54; }else {\n            i = e;\n            g = 0;\n            h = b[i >> 2] | 0;\n            i = b[i + 4 >> 2] | 0;\n\n            do {\n              h = Mb(h, i) | 0;\n              i = G() | 0;\n              t = e;\n              b[t >> 2] = h;\n              b[t + 4 >> 2] = i;\n              g = g + 1 | 0;\n            } while ((g | 0) < (d | 0));\n\n            g = 54;\n          }\n        } } while (0);\n\n        if ((g | 0) == 54) { if (k) { g = 55; } }\n\n        if ((g | 0) == 55) {\n          t = e;\n\n          if ((Lb(b[t >> 2] | 0, b[t + 4 >> 2] | 0) | 0) == 1) {\n            f = 4;\n            break;\n          }\n        }\n\n        t = e;\n        r = b[t >> 2] | 0;\n        t = b[t + 4 >> 2] & -1040385;\n        s = dd(f | 0, 0, 45) | 0;\n        t = t | (G() | 0);\n        f = e;\n        b[f >> 2] = r | s;\n        b[f + 4 >> 2] = t;\n        f = 0;\n      } else { f = 2; } } while (0);\n\n      t = f;\n      S = p;\n      return t | 0;\n    }\n\n    function oc(a, b, c, d, e) {\n      a = a | 0;\n      b = b | 0;\n      c = c | 0;\n      d = d | 0;\n      e = e | 0;\n      var f = 0,\n          g = 0;\n      g = S;\n      S = S + 16 | 0;\n      f = g;\n      a = mc(a, b, c, d, f) | 0;\n\n      if (!a) {\n        Ua(f, e);\n        a = 0;\n      }\n\n      S = g;\n      return a | 0;\n    }\n\n    function pc(a, b, c, d) {\n      a = a | 0;\n      b = b | 0;\n      c = c | 0;\n      d = d | 0;\n      var e = 0,\n          f = 0;\n      e = S;\n      S = S + 16 | 0;\n      f = e;\n      Va(c, f);\n      d = nc(a, b, f, d) | 0;\n      S = e;\n      return d | 0;\n    }\n\n    function qc(a, b, c, d) {\n      a = a | 0;\n      b = b | 0;\n      c = c | 0;\n      d = d | 0;\n      var e = 0,\n          f = 0,\n          g = 0;\n      g = S;\n      S = S + 32 | 0;\n      e = g + 12 | 0;\n      f = g;\n      if ((mc(a, b, a, b, e) | 0) == 0 ? (mc(a, b, c, d, f) | 0) == 0 : 0) { a = Ta(e, f) | 0; }else { a = -1; }\n      S = g;\n      return a | 0;\n    }\n\n    function rc(a, b, c, d) {\n      a = a | 0;\n      b = b | 0;\n      c = c | 0;\n      d = d | 0;\n      var e = 0,\n          f = 0,\n          g = 0;\n      g = S;\n      S = S + 32 | 0;\n      e = g + 12 | 0;\n      f = g;\n      if ((mc(a, b, a, b, e) | 0) == 0 ? (mc(a, b, c, d, f) | 0) == 0 : 0) { a = Ta(e, f) | 0; }else { a = -1; }\n      S = g;\n      return (a >>> 31 ^ 1) + a | 0;\n    }\n\n    function sc(a, c, d, e, f) {\n      a = a | 0;\n      c = c | 0;\n      d = d | 0;\n      e = e | 0;\n      f = f | 0;\n      var g = 0,\n          h = 0,\n          i = 0.0,\n          j = 0.0,\n          k = 0,\n          l = 0,\n          m = 0,\n          n = 0,\n          o = 0.0,\n          p = 0.0,\n          r = 0.0,\n          s = 0,\n          t = 0,\n          u = 0,\n          v = 0,\n          w = 0,\n          x = 0,\n          y = 0.0;\n      x = S;\n      S = S + 48 | 0;\n      g = x + 24 | 0;\n      h = x + 12 | 0;\n      w = x;\n\n      if ((mc(a, c, a, c, g) | 0) == 0 ? (mc(a, c, d, e, h) | 0) == 0 : 0) {\n        v = Ta(g, h) | 0;\n\n        if ((v | 0) < 0) {\n          w = v;\n          S = x;\n          return w | 0;\n        }\n        b[g >> 2] = 0;\n        b[g + 4 >> 2] = 0;\n        b[g + 8 >> 2] = 0;\n        b[h >> 2] = 0;\n        b[h + 4 >> 2] = 0;\n        b[h + 8 >> 2] = 0;\n        mc(a, c, a, c, g) | 0;\n        mc(a, c, d, e, h) | 0;\n        Wa(g);\n        Wa(h);\n\n        if (!v) {\n          e = g + 4 | 0;\n          n = g + 8 | 0;\n          s = e;\n          t = n;\n          u = g;\n          d = b[g >> 2] | 0;\n          e = b[e >> 2] | 0;\n          g = b[n >> 2] | 0;\n          p = 0.0;\n          r = 0.0;\n          o = 0.0;\n        } else {\n          l = b[g >> 2] | 0;\n          o = +(v | 0);\n          s = g + 4 | 0;\n          m = b[s >> 2] | 0;\n          t = g + 8 | 0;\n          n = b[t >> 2] | 0;\n          u = g;\n          d = l;\n          e = m;\n          g = n;\n          p = +((b[h >> 2] | 0) - l | 0) / o;\n          r = +((b[h + 4 >> 2] | 0) - m | 0) / o;\n          o = +((b[h + 8 >> 2] | 0) - n | 0) / o;\n        }\n\n        b[w >> 2] = d;\n        n = w + 4 | 0;\n        b[n >> 2] = e;\n        m = w + 8 | 0;\n        b[m >> 2] = g;\n        l = 0;\n\n        while (1) {\n          j = +(l | 0);\n          y = p * j + +(d | 0);\n          i = r * j + +(b[s >> 2] | 0);\n          j = o * j + +(b[t >> 2] | 0);\n          e = ~~+fd(+y);\n          h = ~~+fd(+i);\n          d = ~~+fd(+j);\n          y = +q(+(+(e | 0) - y));\n          i = +q(+(+(h | 0) - i));\n          j = +q(+(+(d | 0) - j));\n\n          do { if (!(y > i & y > j)) {\n            k = 0 - e | 0;\n\n            if (i > j) {\n              g = k - d | 0;\n              break;\n            } else {\n              g = h;\n              d = k - h | 0;\n              break;\n            }\n          } else {\n            e = 0 - (h + d) | 0;\n            g = h;\n          } } while (0);\n\n          b[w >> 2] = e;\n          b[n >> 2] = g;\n          b[m >> 2] = d;\n          Xa(w);\n          nc(a, c, w, f + (l << 3) | 0) | 0;\n          if ((l | 0) == (v | 0)) { break; }\n          l = l + 1 | 0;\n          d = b[u >> 2] | 0;\n        }\n\n        w = 0;\n        S = x;\n        return w | 0;\n      }\n\n      w = -1;\n      S = x;\n      return w | 0;\n    }\n\n    function tc(a, b) {\n      a = a | 0;\n      b = b | 0;\n      var c = 0;\n\n      if (!b) {\n        c = 1;\n        return c | 0;\n      }\n\n      c = a;\n      a = 1;\n\n      do {\n        a = B((b & 1 | 0) == 0 ? 1 : c, a) | 0;\n        b = b >> 1;\n        c = B(c, c) | 0;\n      } while ((b | 0) != 0);\n\n      return a | 0;\n    }\n\n    function uc(a, c, d) {\n      a = a | 0;\n      c = c | 0;\n      d = d | 0;\n      var f = 0.0,\n          g = 0.0,\n          h = 0.0,\n          i = 0.0,\n          j = 0.0,\n          k = 0.0,\n          l = 0,\n          m = 0,\n          n = 0,\n          o = 0.0;\n\n      if (!(xa(c, d) | 0)) {\n        n = 0;\n        return n | 0;\n      }\n\n      c = wa(c) | 0;\n      o = +e[d >> 3];\n      f = +e[d + 8 >> 3];\n      f = c & f < 0.0 ? f + 6.283185307179586 : f;\n      n = b[a >> 2] | 0;\n\n      if ((n | 0) <= 0) {\n        n = 0;\n        return n | 0;\n      }\n\n      m = b[a + 4 >> 2] | 0;\n\n      if (c) {\n        c = 0;\n        d = -1;\n        a = 0;\n\n        a: while (1) {\n          l = a;\n\n          while (1) {\n            i = +e[m + (l << 4) >> 3];\n            k = +e[m + (l << 4) + 8 >> 3];\n            a = (d + 2 | 0) % (n | 0) | 0;\n            h = +e[m + (a << 4) >> 3];\n            g = +e[m + (a << 4) + 8 >> 3];\n\n            if (i > h) {\n              j = i;\n              i = k;\n            } else {\n              j = h;\n              h = i;\n              i = g;\n              g = k;\n            }\n\n            if (!(o < h | o > j)) { break; }\n            d = l + 1 | 0;\n\n            if ((d | 0) < (n | 0)) {\n              a = l;\n              l = d;\n              d = a;\n            } else {\n              d = 22;\n              break a;\n            }\n          }\n\n          k = g < 0.0 ? g + 6.283185307179586 : g;\n          i = i < 0.0 ? i + 6.283185307179586 : i;\n          f = i == f | k == f ? f + -2.220446049250313e-16 : f;\n          k = k + (o - h) / (j - h) * (i - k);\n          if ((k < 0.0 ? k + 6.283185307179586 : k) > f) { c = c ^ 1; }\n          a = l + 1 | 0;\n\n          if ((a | 0) >= (n | 0)) {\n            d = 22;\n            break;\n          } else { d = l; }\n        }\n\n        if ((d | 0) == 22) { return c | 0; }\n      } else {\n        c = 0;\n        d = -1;\n        a = 0;\n\n        b: while (1) {\n          l = a;\n\n          while (1) {\n            i = +e[m + (l << 4) >> 3];\n            k = +e[m + (l << 4) + 8 >> 3];\n            a = (d + 2 | 0) % (n | 0) | 0;\n            h = +e[m + (a << 4) >> 3];\n            g = +e[m + (a << 4) + 8 >> 3];\n\n            if (i > h) {\n              j = i;\n              i = k;\n            } else {\n              j = h;\n              h = i;\n              i = g;\n              g = k;\n            }\n\n            if (!(o < h | o > j)) { break; }\n            d = l + 1 | 0;\n\n            if ((d | 0) < (n | 0)) {\n              a = l;\n              l = d;\n              d = a;\n            } else {\n              d = 22;\n              break b;\n            }\n          }\n\n          f = i == f | g == f ? f + -2.220446049250313e-16 : f;\n          if (g + (o - h) / (j - h) * (i - g) > f) { c = c ^ 1; }\n          a = l + 1 | 0;\n\n          if ((a | 0) >= (n | 0)) {\n            d = 22;\n            break;\n          } else { d = l; }\n        }\n\n        if ((d | 0) == 22) { return c | 0; }\n      }\n\n      return 0;\n    }\n\n    function vc(a, c) {\n      a = a | 0;\n      c = c | 0;\n      var d = 0.0,\n          f = 0.0,\n          g = 0.0,\n          h = 0.0,\n          i = 0.0,\n          j = 0.0,\n          k = 0.0,\n          l = 0.0,\n          m = 0.0,\n          n = 0,\n          o = 0,\n          p = 0,\n          r = 0,\n          s = 0,\n          t = 0,\n          u = 0,\n          v = 0;\n      r = b[a >> 2] | 0;\n\n      if (!r) {\n        b[c >> 2] = 0;\n        b[c + 4 >> 2] = 0;\n        b[c + 8 >> 2] = 0;\n        b[c + 12 >> 2] = 0;\n        b[c + 16 >> 2] = 0;\n        b[c + 20 >> 2] = 0;\n        b[c + 24 >> 2] = 0;\n        b[c + 28 >> 2] = 0;\n        return;\n      }\n\n      s = c + 8 | 0;\n      e[s >> 3] = 1797693134862315708145274.0e284;\n      t = c + 24 | 0;\n      e[t >> 3] = 1797693134862315708145274.0e284;\n      e[c >> 3] = -1797693134862315708145274.0e284;\n      u = c + 16 | 0;\n      e[u >> 3] = -1797693134862315708145274.0e284;\n      if ((r | 0) <= 0) { return; }\n      o = b[a + 4 >> 2] | 0;\n      l = 1797693134862315708145274.0e284;\n      m = -1797693134862315708145274.0e284;\n      n = 0;\n      a = -1;\n      h = 1797693134862315708145274.0e284;\n      i = 1797693134862315708145274.0e284;\n      k = -1797693134862315708145274.0e284;\n      f = -1797693134862315708145274.0e284;\n      p = 0;\n\n      while (1) {\n        d = +e[o + (p << 4) >> 3];\n        j = +e[o + (p << 4) + 8 >> 3];\n        a = a + 2 | 0;\n        g = +e[o + (((a | 0) == (r | 0) ? 0 : a) << 4) + 8 >> 3];\n\n        if (d < h) {\n          e[s >> 3] = d;\n          h = d;\n        }\n\n        if (j < i) {\n          e[t >> 3] = j;\n          i = j;\n        }\n\n        if (d > k) { e[c >> 3] = d; }else { d = k; }\n\n        if (j > f) {\n          e[u >> 3] = j;\n          f = j;\n        }\n\n        l = j > 0.0 & j < l ? j : l;\n        m = j < 0.0 & j > m ? j : m;\n        n = n | +q(+(j - g)) > 3.141592653589793;\n        a = p + 1 | 0;\n        if ((a | 0) == (r | 0)) { break; }else {\n          v = p;\n          k = d;\n          p = a;\n          a = v;\n        }\n      }\n\n      if (!n) { return; }\n      e[u >> 3] = m;\n      e[t >> 3] = l;\n      return;\n    }\n\n    function wc(a, c) {\n      a = a | 0;\n      c = c | 0;\n      var d = 0,\n          f = 0,\n          g = 0,\n          h = 0.0,\n          i = 0.0,\n          j = 0.0,\n          k = 0.0,\n          l = 0.0,\n          m = 0.0,\n          n = 0.0,\n          o = 0.0,\n          p = 0.0,\n          r = 0,\n          s = 0,\n          t = 0,\n          u = 0,\n          v = 0,\n          w = 0,\n          x = 0,\n          y = 0,\n          z = 0,\n          A = 0;\n      r = b[a >> 2] | 0;\n\n      if (r) {\n        s = c + 8 | 0;\n        e[s >> 3] = 1797693134862315708145274.0e284;\n        t = c + 24 | 0;\n        e[t >> 3] = 1797693134862315708145274.0e284;\n        e[c >> 3] = -1797693134862315708145274.0e284;\n        u = c + 16 | 0;\n        e[u >> 3] = -1797693134862315708145274.0e284;\n\n        if ((r | 0) > 0) {\n          g = b[a + 4 >> 2] | 0;\n          o = 1797693134862315708145274.0e284;\n          p = -1797693134862315708145274.0e284;\n          f = 0;\n          d = -1;\n          k = 1797693134862315708145274.0e284;\n          l = 1797693134862315708145274.0e284;\n          n = -1797693134862315708145274.0e284;\n          i = -1797693134862315708145274.0e284;\n          v = 0;\n\n          while (1) {\n            h = +e[g + (v << 4) >> 3];\n            m = +e[g + (v << 4) + 8 >> 3];\n            z = d + 2 | 0;\n            j = +e[g + (((z | 0) == (r | 0) ? 0 : z) << 4) + 8 >> 3];\n\n            if (h < k) {\n              e[s >> 3] = h;\n              k = h;\n            }\n\n            if (m < l) {\n              e[t >> 3] = m;\n              l = m;\n            }\n\n            if (h > n) { e[c >> 3] = h; }else { h = n; }\n\n            if (m > i) {\n              e[u >> 3] = m;\n              i = m;\n            }\n\n            o = m > 0.0 & m < o ? m : o;\n            p = m < 0.0 & m > p ? m : p;\n            f = f | +q(+(m - j)) > 3.141592653589793;\n            d = v + 1 | 0;\n            if ((d | 0) == (r | 0)) { break; }else {\n              z = v;\n              n = h;\n              v = d;\n              d = z;\n            }\n          }\n\n          if (f) {\n            e[u >> 3] = p;\n            e[t >> 3] = o;\n          }\n        }\n      } else {\n        b[c >> 2] = 0;\n        b[c + 4 >> 2] = 0;\n        b[c + 8 >> 2] = 0;\n        b[c + 12 >> 2] = 0;\n        b[c + 16 >> 2] = 0;\n        b[c + 20 >> 2] = 0;\n        b[c + 24 >> 2] = 0;\n        b[c + 28 >> 2] = 0;\n      }\n\n      z = a + 8 | 0;\n      d = b[z >> 2] | 0;\n      if ((d | 0) <= 0) { return; }\n      y = a + 12 | 0;\n      x = 0;\n\n      do {\n        g = b[y >> 2] | 0;\n        f = x;\n        x = x + 1 | 0;\n        t = c + (x << 5) | 0;\n        u = b[g + (f << 3) >> 2] | 0;\n\n        if (u) {\n          v = c + (x << 5) + 8 | 0;\n          e[v >> 3] = 1797693134862315708145274.0e284;\n          a = c + (x << 5) + 24 | 0;\n          e[a >> 3] = 1797693134862315708145274.0e284;\n          e[t >> 3] = -1797693134862315708145274.0e284;\n          w = c + (x << 5) + 16 | 0;\n          e[w >> 3] = -1797693134862315708145274.0e284;\n\n          if ((u | 0) > 0) {\n            r = b[g + (f << 3) + 4 >> 2] | 0;\n            o = 1797693134862315708145274.0e284;\n            p = -1797693134862315708145274.0e284;\n            g = 0;\n            f = -1;\n            s = 0;\n            k = 1797693134862315708145274.0e284;\n            l = 1797693134862315708145274.0e284;\n            m = -1797693134862315708145274.0e284;\n            i = -1797693134862315708145274.0e284;\n\n            while (1) {\n              h = +e[r + (s << 4) >> 3];\n              n = +e[r + (s << 4) + 8 >> 3];\n              f = f + 2 | 0;\n              j = +e[r + (((f | 0) == (u | 0) ? 0 : f) << 4) + 8 >> 3];\n\n              if (h < k) {\n                e[v >> 3] = h;\n                k = h;\n              }\n\n              if (n < l) {\n                e[a >> 3] = n;\n                l = n;\n              }\n\n              if (h > m) { e[t >> 3] = h; }else { h = m; }\n\n              if (n > i) {\n                e[w >> 3] = n;\n                i = n;\n              }\n\n              o = n > 0.0 & n < o ? n : o;\n              p = n < 0.0 & n > p ? n : p;\n              g = g | +q(+(n - j)) > 3.141592653589793;\n              f = s + 1 | 0;\n              if ((f | 0) == (u | 0)) { break; }else {\n                A = s;\n                s = f;\n                m = h;\n                f = A;\n              }\n            }\n\n            if (g) {\n              e[w >> 3] = p;\n              e[a >> 3] = o;\n            }\n          }\n        } else {\n          b[t >> 2] = 0;\n          b[t + 4 >> 2] = 0;\n          b[t + 8 >> 2] = 0;\n          b[t + 12 >> 2] = 0;\n          b[t + 16 >> 2] = 0;\n          b[t + 20 >> 2] = 0;\n          b[t + 24 >> 2] = 0;\n          b[t + 28 >> 2] = 0;\n          d = b[z >> 2] | 0;\n        }\n      } while ((x | 0) < (d | 0));\n\n      return;\n    }\n\n    function xc(a, c, d) {\n      a = a | 0;\n      c = c | 0;\n      d = d | 0;\n      var e = 0,\n          f = 0,\n          g = 0;\n\n      if (!(uc(a, c, d) | 0)) {\n        f = 0;\n        return f | 0;\n      }\n\n      f = a + 8 | 0;\n\n      if ((b[f >> 2] | 0) <= 0) {\n        f = 1;\n        return f | 0;\n      }\n\n      e = a + 12 | 0;\n      a = 0;\n\n      while (1) {\n        g = a;\n        a = a + 1 | 0;\n\n        if (uc((b[e >> 2] | 0) + (g << 3) | 0, c + (a << 5) | 0, d) | 0) {\n          a = 0;\n          e = 6;\n          break;\n        }\n\n        if ((a | 0) >= (b[f >> 2] | 0)) {\n          a = 1;\n          e = 6;\n          break;\n        }\n      }\n\n      if ((e | 0) == 6) { return a | 0; }\n      return 0;\n    }\n\n    function yc() {\n      return 8;\n    }\n\n    function zc() {\n      return 16;\n    }\n\n    function Ac() {\n      return 168;\n    }\n\n    function Bc() {\n      return 8;\n    }\n\n    function Cc() {\n      return 16;\n    }\n\n    function Dc() {\n      return 12;\n    }\n\n    function Ec() {\n      return 8;\n    }\n\n    function Fc(a) {\n      a = a | 0;\n      var b = 0.0,\n          c = 0.0;\n      c = +e[a >> 3];\n      b = +e[a + 8 >> 3];\n      return + +r(+(c * c + b * b));\n    }\n\n    function Gc(a, b, c, d, f) {\n      a = a | 0;\n      b = b | 0;\n      c = c | 0;\n      d = d | 0;\n      f = f | 0;\n      var g = 0.0,\n          h = 0.0,\n          i = 0.0,\n          j = 0.0,\n          k = 0.0,\n          l = 0.0,\n          m = 0.0,\n          n = 0.0;\n      k = +e[a >> 3];\n      j = +e[b >> 3] - k;\n      i = +e[a + 8 >> 3];\n      h = +e[b + 8 >> 3] - i;\n      m = +e[c >> 3];\n      g = +e[d >> 3] - m;\n      n = +e[c + 8 >> 3];\n      l = +e[d + 8 >> 3] - n;\n      g = (g * (i - n) - (k - m) * l) / (j * l - h * g);\n      e[f >> 3] = k + j * g;\n      e[f + 8 >> 3] = i + h * g;\n      return;\n    }\n\n    function Hc(a, b) {\n      a = a | 0;\n      b = b | 0;\n\n      if (!(+e[a >> 3] == +e[b >> 3])) {\n        b = 0;\n        return b | 0;\n      }\n\n      b = +e[a + 8 >> 3] == +e[b + 8 >> 3];\n      return b | 0;\n    }\n\n    function Ic(a, b) {\n      a = a | 0;\n      b = b | 0;\n      var c = 0.0,\n          d = 0.0,\n          f = 0.0;\n      f = +e[a >> 3] - +e[b >> 3];\n      d = +e[a + 8 >> 3] - +e[b + 8 >> 3];\n      c = +e[a + 16 >> 3] - +e[b + 16 >> 3];\n      return +(f * f + d * d + c * c);\n    }\n\n    function Jc(a, b) {\n      a = a | 0;\n      b = b | 0;\n      var c = 0.0,\n          d = 0.0,\n          f = 0.0;\n      c = +e[a >> 3];\n      d = +t(+c);\n      c = +u(+c);\n      e[b + 16 >> 3] = c;\n      c = +e[a + 8 >> 3];\n      f = d * +t(+c);\n      e[b >> 3] = f;\n      c = d * +u(+c);\n      e[b + 8 >> 3] = c;\n      return;\n    }\n\n    function Kc(a, c) {\n      a = a | 0;\n      c = c | 0;\n      var d = 0,\n          e = 0,\n          f = 0,\n          g = 0,\n          h = 0,\n          i = 0,\n          j = 0,\n          k = 0;\n      k = S;\n      S = S + 32 | 0;\n      f = k + 16 | 0;\n      g = k;\n      Ub(a, c, f);\n      h = Ab(a, c) | 0;\n      j = Lb(a, c) | 0;\n      pa(h, g);\n      c = qa(h, b[f >> 2] | 0) | 0;\n\n      if (!(la(h) | 0)) {\n        j = c;\n        S = k;\n        return j | 0;\n      }\n\n      do { switch (h | 0) {\n        case 4:\n          {\n            a = 0;\n            d = 14;\n            break;\n          }\n\n        case 14:\n          {\n            a = 1;\n            d = 14;\n            break;\n          }\n\n        case 24:\n          {\n            a = 2;\n            d = 14;\n            break;\n          }\n\n        case 38:\n          {\n            a = 3;\n            d = 14;\n            break;\n          }\n\n        case 49:\n          {\n            a = 4;\n            d = 14;\n            break;\n          }\n\n        case 58:\n          {\n            a = 5;\n            d = 14;\n            break;\n          }\n\n        case 63:\n          {\n            a = 6;\n            d = 14;\n            break;\n          }\n\n        case 72:\n          {\n            a = 7;\n            d = 14;\n            break;\n          }\n\n        case 83:\n          {\n            a = 8;\n            d = 14;\n            break;\n          }\n\n        case 97:\n          {\n            a = 9;\n            d = 14;\n            break;\n          }\n\n        case 107:\n          {\n            a = 10;\n            d = 14;\n            break;\n          }\n\n        case 117:\n          {\n            a = 11;\n            d = 14;\n            break;\n          }\n\n        default:\n          {\n            i = 0;\n            e = 0;\n          }\n      } } while (0);\n\n      if ((d | 0) == 14) {\n        i = b[22096 + (a * 24 | 0) + 8 >> 2] | 0;\n        e = b[22096 + (a * 24 | 0) + 16 >> 2] | 0;\n      }\n\n      a = b[f >> 2] | 0;\n\n      if ((a | 0) != (b[g >> 2] | 0)) {\n        h = ma(h) | 0;\n        a = b[f >> 2] | 0;\n        if (h | (a | 0) == (e | 0)) { c = (c + 1 | 0) % 6 | 0; }\n      }\n\n      if ((j | 0) == 3 & (a | 0) == (e | 0)) {\n        j = (c + 5 | 0) % 6 | 0;\n        S = k;\n        return j | 0;\n      }\n\n      if (!((j | 0) == 5 & (a | 0) == (i | 0))) {\n        j = c;\n        S = k;\n        return j | 0;\n      }\n\n      j = (c + 1 | 0) % 6 | 0;\n      S = k;\n      return j | 0;\n    }\n\n    function Lc(a, c, d) {\n      a = a | 0;\n      c = c | 0;\n      d = d | 0;\n      var e = 0,\n          f = 0;\n      e = Fb(a, c) | 0;\n\n      if ((d + -1 | 0) >>> 0 > 5) {\n        d = -1;\n        return d | 0;\n      }\n\n      f = (e | 0) != 0;\n\n      if ((d | 0) == 1 & f) {\n        d = -1;\n        return d | 0;\n      }\n\n      e = Kc(a, c) | 0;\n\n      if (f) {\n        d = (5 - e + (b[22384 + (d << 2) >> 2] | 0) | 0) % 5 | 0;\n        return d | 0;\n      } else {\n        d = (6 - e + (b[22416 + (d << 2) >> 2] | 0) | 0) % 6 | 0;\n        return d | 0;\n      }\n\n      return 0;\n    }\n\n    function Mc(a, c, d) {\n      a = a | 0;\n      c = c | 0;\n      d = d | 0;\n      var e = 0;\n\n      if ((c | 0) > 0) {\n        e = Yc(c, 4) | 0;\n        b[a >> 2] = e;\n        if (!e) { H(23230, 23253, 40, 23267); }\n      } else { b[a >> 2] = 0; }\n\n      b[a + 4 >> 2] = c;\n      b[a + 8 >> 2] = 0;\n      b[a + 12 >> 2] = d;\n      return;\n    }\n\n    function Nc(a) {\n      a = a | 0;\n      var c = 0,\n          d = 0,\n          f = 0,\n          g = 0,\n          h = 0,\n          i = 0,\n          j = 0;\n      g = a + 4 | 0;\n      h = a + 12 | 0;\n      i = a + 8 | 0;\n\n      a: while (1) {\n        d = b[g >> 2] | 0;\n        c = 0;\n\n        while (1) {\n          if ((c | 0) >= (d | 0)) { break a; }\n          f = b[a >> 2] | 0;\n          j = b[f + (c << 2) >> 2] | 0;\n          if (!j) { c = c + 1 | 0; }else { break; }\n        }\n\n        c = f + (~~(+q(+(+s(10.0, + +(15 - (b[h >> 2] | 0) | 0)) * (+e[j >> 3] + +e[j + 8 >> 3]))) % +(d | 0)) >>> 0 << 2) | 0;\n        d = b[c >> 2] | 0;\n\n        b: do { if (d | 0) {\n          f = j + 32 | 0;\n          if ((d | 0) == (j | 0)) { b[c >> 2] = b[f >> 2]; }else {\n            d = d + 32 | 0;\n            c = b[d >> 2] | 0;\n            if (!c) { break; }\n\n            while (1) {\n              if ((c | 0) == (j | 0)) { break; }\n              d = c + 32 | 0;\n              c = b[d >> 2] | 0;\n              if (!c) { break b; }\n            }\n\n            b[d >> 2] = b[f >> 2];\n          }\n          Xc(j);\n          b[i >> 2] = (b[i >> 2] | 0) + -1;\n        } } while (0);\n      }\n\n      Xc(b[a >> 2] | 0);\n      return;\n    }\n\n    function Oc(a) {\n      a = a | 0;\n      var c = 0,\n          d = 0,\n          e = 0;\n      e = b[a + 4 >> 2] | 0;\n      d = 0;\n\n      while (1) {\n        if ((d | 0) >= (e | 0)) {\n          c = 0;\n          d = 4;\n          break;\n        }\n\n        c = b[(b[a >> 2] | 0) + (d << 2) >> 2] | 0;\n        if (!c) { d = d + 1 | 0; }else {\n          d = 4;\n          break;\n        }\n      }\n\n      if ((d | 0) == 4) { return c | 0; }\n      return 0;\n    }\n\n    function Pc(a, c) {\n      a = a | 0;\n      c = c | 0;\n      var d = 0,\n          f = 0,\n          g = 0,\n          h = 0;\n      d = ~~(+q(+(+s(10.0, + +(15 - (b[a + 12 >> 2] | 0) | 0)) * (+e[c >> 3] + +e[c + 8 >> 3]))) % +(b[a + 4 >> 2] | 0)) >>> 0;\n      d = (b[a >> 2] | 0) + (d << 2) | 0;\n      f = b[d >> 2] | 0;\n\n      if (!f) {\n        h = 1;\n        return h | 0;\n      }\n\n      h = c + 32 | 0;\n\n      do { if ((f | 0) != (c | 0)) {\n        d = b[f + 32 >> 2] | 0;\n\n        if (!d) {\n          h = 1;\n          return h | 0;\n        }\n\n        g = d;\n\n        while (1) {\n          if ((g | 0) == (c | 0)) {\n            g = 8;\n            break;\n          }\n\n          d = b[g + 32 >> 2] | 0;\n\n          if (!d) {\n            d = 1;\n            g = 10;\n            break;\n          } else {\n            f = g;\n            g = d;\n          }\n        }\n\n        if ((g | 0) == 8) {\n          b[f + 32 >> 2] = b[h >> 2];\n          break;\n        } else if ((g | 0) == 10) { return d | 0; }\n      } else { b[d >> 2] = b[h >> 2]; } } while (0);\n\n      Xc(c);\n      h = a + 8 | 0;\n      b[h >> 2] = (b[h >> 2] | 0) + -1;\n      h = 0;\n      return h | 0;\n    }\n\n    function Qc(a, c, d) {\n      a = a | 0;\n      c = c | 0;\n      d = d | 0;\n      var f = 0,\n          g = 0,\n          h = 0,\n          i = 0;\n      h = Wc(40) | 0;\n      if (!h) { H(23283, 23253, 98, 23296); }\n      b[h >> 2] = b[c >> 2];\n      b[h + 4 >> 2] = b[c + 4 >> 2];\n      b[h + 8 >> 2] = b[c + 8 >> 2];\n      b[h + 12 >> 2] = b[c + 12 >> 2];\n      g = h + 16 | 0;\n      b[g >> 2] = b[d >> 2];\n      b[g + 4 >> 2] = b[d + 4 >> 2];\n      b[g + 8 >> 2] = b[d + 8 >> 2];\n      b[g + 12 >> 2] = b[d + 12 >> 2];\n      b[h + 32 >> 2] = 0;\n      g = ~~(+q(+(+s(10.0, + +(15 - (b[a + 12 >> 2] | 0) | 0)) * (+e[c >> 3] + +e[c + 8 >> 3]))) % +(b[a + 4 >> 2] | 0)) >>> 0;\n      g = (b[a >> 2] | 0) + (g << 2) | 0;\n      f = b[g >> 2] | 0;\n\n      do { if (!f) { b[g >> 2] = h; }else {\n        while (1) {\n          if (hb(f, c) | 0 ? hb(f + 16 | 0, d) | 0 : 0) { break; }\n          g = b[f + 32 >> 2] | 0;\n          f = (g | 0) == 0 ? f : g;\n\n          if (!(b[f + 32 >> 2] | 0)) {\n            i = 10;\n            break;\n          }\n        }\n\n        if ((i | 0) == 10) {\n          b[f + 32 >> 2] = h;\n          break;\n        }\n\n        Xc(h);\n        i = f;\n        return i | 0;\n      } } while (0);\n\n      i = a + 8 | 0;\n      b[i >> 2] = (b[i >> 2] | 0) + 1;\n      i = h;\n      return i | 0;\n    }\n\n    function Rc(a, c, d) {\n      a = a | 0;\n      c = c | 0;\n      d = d | 0;\n      var f = 0,\n          g = 0;\n      g = ~~(+q(+(+s(10.0, + +(15 - (b[a + 12 >> 2] | 0) | 0)) * (+e[c >> 3] + +e[c + 8 >> 3]))) % +(b[a + 4 >> 2] | 0)) >>> 0;\n      g = b[(b[a >> 2] | 0) + (g << 2) >> 2] | 0;\n\n      if (!g) {\n        d = 0;\n        return d | 0;\n      }\n\n      if (!d) {\n        a = g;\n\n        while (1) {\n          if (hb(a, c) | 0) {\n            f = 10;\n            break;\n          }\n\n          a = b[a + 32 >> 2] | 0;\n\n          if (!a) {\n            a = 0;\n            f = 10;\n            break;\n          }\n        }\n\n        if ((f | 0) == 10) { return a | 0; }\n      }\n\n      a = g;\n\n      while (1) {\n        if (hb(a, c) | 0 ? hb(a + 16 | 0, d) | 0 : 0) {\n          f = 10;\n          break;\n        }\n\n        a = b[a + 32 >> 2] | 0;\n\n        if (!a) {\n          a = 0;\n          f = 10;\n          break;\n        }\n      }\n\n      if ((f | 0) == 10) { return a | 0; }\n      return 0;\n    }\n\n    function Sc(a, c) {\n      a = a | 0;\n      c = c | 0;\n      var d = 0;\n      d = ~~(+q(+(+s(10.0, + +(15 - (b[a + 12 >> 2] | 0) | 0)) * (+e[c >> 3] + +e[c + 8 >> 3]))) % +(b[a + 4 >> 2] | 0)) >>> 0;\n      a = b[(b[a >> 2] | 0) + (d << 2) >> 2] | 0;\n\n      if (!a) {\n        d = 0;\n        return d | 0;\n      }\n\n      while (1) {\n        if (hb(a, c) | 0) {\n          c = 5;\n          break;\n        }\n\n        a = b[a + 32 >> 2] | 0;\n\n        if (!a) {\n          a = 0;\n          c = 5;\n          break;\n        }\n      }\n\n      if ((c | 0) == 5) { return a | 0; }\n      return 0;\n    }\n\n    function Tc() {\n      return 23312;\n    }\n\n    function Uc(a) {\n      a = +a;\n      return + +id(+a);\n    }\n\n    function Vc(a) {\n      a = +a;\n      return ~~+Uc(a) | 0;\n    }\n\n    function Wc(a) {\n      a = a | 0;\n      var c = 0,\n          d = 0,\n          e = 0,\n          f = 0,\n          g = 0,\n          h = 0,\n          i = 0,\n          j = 0,\n          k = 0,\n          l = 0,\n          m = 0,\n          n = 0,\n          o = 0,\n          p = 0,\n          q = 0,\n          r = 0,\n          s = 0,\n          t = 0,\n          u = 0,\n          v = 0,\n          w = 0;\n      w = S;\n      S = S + 16 | 0;\n      n = w;\n\n      do { if (a >>> 0 < 245) {\n        k = a >>> 0 < 11 ? 16 : a + 11 & -8;\n        a = k >>> 3;\n        m = b[5829] | 0;\n        d = m >>> a;\n\n        if (d & 3 | 0) {\n          c = (d & 1 ^ 1) + a | 0;\n          a = 23356 + (c << 1 << 2) | 0;\n          d = a + 8 | 0;\n          e = b[d >> 2] | 0;\n          f = e + 8 | 0;\n          g = b[f >> 2] | 0;\n          if ((g | 0) == (a | 0)) { b[5829] = m & ~(1 << c); }else {\n            b[g + 12 >> 2] = a;\n            b[d >> 2] = g;\n          }\n          v = c << 3;\n          b[e + 4 >> 2] = v | 3;\n          v = e + v + 4 | 0;\n          b[v >> 2] = b[v >> 2] | 1;\n          v = f;\n          S = w;\n          return v | 0;\n        }\n\n        l = b[5831] | 0;\n\n        if (k >>> 0 > l >>> 0) {\n          if (d | 0) {\n            c = 2 << a;\n            c = d << a & (c | 0 - c);\n            c = (c & 0 - c) + -1 | 0;\n            i = c >>> 12 & 16;\n            c = c >>> i;\n            d = c >>> 5 & 8;\n            c = c >>> d;\n            g = c >>> 2 & 4;\n            c = c >>> g;\n            a = c >>> 1 & 2;\n            c = c >>> a;\n            e = c >>> 1 & 1;\n            e = (d | i | g | a | e) + (c >>> e) | 0;\n            c = 23356 + (e << 1 << 2) | 0;\n            a = c + 8 | 0;\n            g = b[a >> 2] | 0;\n            i = g + 8 | 0;\n            d = b[i >> 2] | 0;\n\n            if ((d | 0) == (c | 0)) {\n              a = m & ~(1 << e);\n              b[5829] = a;\n            } else {\n              b[d + 12 >> 2] = c;\n              b[a >> 2] = d;\n              a = m;\n            }\n\n            v = e << 3;\n            h = v - k | 0;\n            b[g + 4 >> 2] = k | 3;\n            f = g + k | 0;\n            b[f + 4 >> 2] = h | 1;\n            b[g + v >> 2] = h;\n\n            if (l | 0) {\n              e = b[5834] | 0;\n              c = l >>> 3;\n              d = 23356 + (c << 1 << 2) | 0;\n              c = 1 << c;\n\n              if (!(a & c)) {\n                b[5829] = a | c;\n                c = d;\n                a = d + 8 | 0;\n              } else {\n                a = d + 8 | 0;\n                c = b[a >> 2] | 0;\n              }\n\n              b[a >> 2] = e;\n              b[c + 12 >> 2] = e;\n              b[e + 8 >> 2] = c;\n              b[e + 12 >> 2] = d;\n            }\n\n            b[5831] = h;\n            b[5834] = f;\n            v = i;\n            S = w;\n            return v | 0;\n          }\n\n          g = b[5830] | 0;\n\n          if (g) {\n            d = (g & 0 - g) + -1 | 0;\n            f = d >>> 12 & 16;\n            d = d >>> f;\n            e = d >>> 5 & 8;\n            d = d >>> e;\n            h = d >>> 2 & 4;\n            d = d >>> h;\n            i = d >>> 1 & 2;\n            d = d >>> i;\n            j = d >>> 1 & 1;\n            j = b[23620 + ((e | f | h | i | j) + (d >>> j) << 2) >> 2] | 0;\n            d = j;\n            i = j;\n            j = (b[j + 4 >> 2] & -8) - k | 0;\n\n            while (1) {\n              a = b[d + 16 >> 2] | 0;\n\n              if (!a) {\n                a = b[d + 20 >> 2] | 0;\n                if (!a) { break; }\n              }\n\n              h = (b[a + 4 >> 2] & -8) - k | 0;\n              f = h >>> 0 < j >>> 0;\n              d = a;\n              i = f ? a : i;\n              j = f ? h : j;\n            }\n\n            h = i + k | 0;\n\n            if (h >>> 0 > i >>> 0) {\n              f = b[i + 24 >> 2] | 0;\n              c = b[i + 12 >> 2] | 0;\n\n              do { if ((c | 0) == (i | 0)) {\n                a = i + 20 | 0;\n                c = b[a >> 2] | 0;\n\n                if (!c) {\n                  a = i + 16 | 0;\n                  c = b[a >> 2] | 0;\n\n                  if (!c) {\n                    d = 0;\n                    break;\n                  }\n                }\n\n                while (1) {\n                  e = c + 20 | 0;\n                  d = b[e >> 2] | 0;\n\n                  if (!d) {\n                    e = c + 16 | 0;\n                    d = b[e >> 2] | 0;\n                    if (!d) { break; }else {\n                      c = d;\n                      a = e;\n                    }\n                  } else {\n                    c = d;\n                    a = e;\n                  }\n                }\n\n                b[a >> 2] = 0;\n                d = c;\n              } else {\n                d = b[i + 8 >> 2] | 0;\n                b[d + 12 >> 2] = c;\n                b[c + 8 >> 2] = d;\n                d = c;\n              } } while (0);\n\n              do { if (f | 0) {\n                c = b[i + 28 >> 2] | 0;\n                a = 23620 + (c << 2) | 0;\n\n                if ((i | 0) == (b[a >> 2] | 0)) {\n                  b[a >> 2] = d;\n\n                  if (!d) {\n                    b[5830] = g & ~(1 << c);\n                    break;\n                  }\n                } else {\n                  v = f + 16 | 0;\n                  b[((b[v >> 2] | 0) == (i | 0) ? v : f + 20 | 0) >> 2] = d;\n                  if (!d) { break; }\n                }\n\n                b[d + 24 >> 2] = f;\n                c = b[i + 16 >> 2] | 0;\n\n                if (c | 0) {\n                  b[d + 16 >> 2] = c;\n                  b[c + 24 >> 2] = d;\n                }\n\n                c = b[i + 20 >> 2] | 0;\n\n                if (c | 0) {\n                  b[d + 20 >> 2] = c;\n                  b[c + 24 >> 2] = d;\n                }\n              } } while (0);\n\n              if (j >>> 0 < 16) {\n                v = j + k | 0;\n                b[i + 4 >> 2] = v | 3;\n                v = i + v + 4 | 0;\n                b[v >> 2] = b[v >> 2] | 1;\n              } else {\n                b[i + 4 >> 2] = k | 3;\n                b[h + 4 >> 2] = j | 1;\n                b[h + j >> 2] = j;\n\n                if (l | 0) {\n                  e = b[5834] | 0;\n                  c = l >>> 3;\n                  d = 23356 + (c << 1 << 2) | 0;\n                  c = 1 << c;\n\n                  if (!(c & m)) {\n                    b[5829] = c | m;\n                    c = d;\n                    a = d + 8 | 0;\n                  } else {\n                    a = d + 8 | 0;\n                    c = b[a >> 2] | 0;\n                  }\n\n                  b[a >> 2] = e;\n                  b[c + 12 >> 2] = e;\n                  b[e + 8 >> 2] = c;\n                  b[e + 12 >> 2] = d;\n                }\n\n                b[5831] = j;\n                b[5834] = h;\n              }\n\n              v = i + 8 | 0;\n              S = w;\n              return v | 0;\n            } else { m = k; }\n          } else { m = k; }\n        } else { m = k; }\n      } else if (a >>> 0 <= 4294967231) {\n        a = a + 11 | 0;\n        k = a & -8;\n        e = b[5830] | 0;\n\n        if (e) {\n          f = 0 - k | 0;\n          a = a >>> 8;\n          if (a) {\n            if (k >>> 0 > 16777215) { j = 31; }else {\n              m = (a + 1048320 | 0) >>> 16 & 8;\n              q = a << m;\n              i = (q + 520192 | 0) >>> 16 & 4;\n              q = q << i;\n              j = (q + 245760 | 0) >>> 16 & 2;\n              j = 14 - (i | m | j) + (q << j >>> 15) | 0;\n              j = k >>> (j + 7 | 0) & 1 | j << 1;\n            }\n          } else { j = 0; }\n          d = b[23620 + (j << 2) >> 2] | 0;\n\n          a: do { if (!d) {\n            d = 0;\n            a = 0;\n            q = 61;\n          } else {\n            a = 0;\n            i = k << ((j | 0) == 31 ? 0 : 25 - (j >>> 1) | 0);\n            g = 0;\n\n            while (1) {\n              h = (b[d + 4 >> 2] & -8) - k | 0;\n              if (h >>> 0 < f >>> 0) { if (!h) {\n                a = d;\n                f = 0;\n                q = 65;\n                break a;\n              } else {\n                a = d;\n                f = h;\n              } }\n              q = b[d + 20 >> 2] | 0;\n              d = b[d + 16 + (i >>> 31 << 2) >> 2] | 0;\n              g = (q | 0) == 0 | (q | 0) == (d | 0) ? g : q;\n\n              if (!d) {\n                d = g;\n                q = 61;\n                break;\n              } else { i = i << 1; }\n            }\n          } } while (0);\n\n          if ((q | 0) == 61) {\n            if ((d | 0) == 0 & (a | 0) == 0) {\n              a = 2 << j;\n              a = (a | 0 - a) & e;\n\n              if (!a) {\n                m = k;\n                break;\n              }\n\n              m = (a & 0 - a) + -1 | 0;\n              h = m >>> 12 & 16;\n              m = m >>> h;\n              g = m >>> 5 & 8;\n              m = m >>> g;\n              i = m >>> 2 & 4;\n              m = m >>> i;\n              j = m >>> 1 & 2;\n              m = m >>> j;\n              d = m >>> 1 & 1;\n              a = 0;\n              d = b[23620 + ((g | h | i | j | d) + (m >>> d) << 2) >> 2] | 0;\n            }\n\n            if (!d) {\n              i = a;\n              h = f;\n            } else { q = 65; }\n          }\n\n          if ((q | 0) == 65) {\n            g = d;\n\n            while (1) {\n              m = (b[g + 4 >> 2] & -8) - k | 0;\n              d = m >>> 0 < f >>> 0;\n              f = d ? m : f;\n              a = d ? g : a;\n              d = b[g + 16 >> 2] | 0;\n              if (!d) { d = b[g + 20 >> 2] | 0; }\n\n              if (!d) {\n                i = a;\n                h = f;\n                break;\n              } else { g = d; }\n            }\n          }\n\n          if (((i | 0) != 0 ? h >>> 0 < ((b[5831] | 0) - k | 0) >>> 0 : 0) ? (l = i + k | 0, l >>> 0 > i >>> 0) : 0) {\n            g = b[i + 24 >> 2] | 0;\n            c = b[i + 12 >> 2] | 0;\n\n            do { if ((c | 0) == (i | 0)) {\n              a = i + 20 | 0;\n              c = b[a >> 2] | 0;\n\n              if (!c) {\n                a = i + 16 | 0;\n                c = b[a >> 2] | 0;\n\n                if (!c) {\n                  c = 0;\n                  break;\n                }\n              }\n\n              while (1) {\n                f = c + 20 | 0;\n                d = b[f >> 2] | 0;\n\n                if (!d) {\n                  f = c + 16 | 0;\n                  d = b[f >> 2] | 0;\n                  if (!d) { break; }else {\n                    c = d;\n                    a = f;\n                  }\n                } else {\n                  c = d;\n                  a = f;\n                }\n              }\n\n              b[a >> 2] = 0;\n            } else {\n              v = b[i + 8 >> 2] | 0;\n              b[v + 12 >> 2] = c;\n              b[c + 8 >> 2] = v;\n            } } while (0);\n\n            do { if (g) {\n              a = b[i + 28 >> 2] | 0;\n              d = 23620 + (a << 2) | 0;\n\n              if ((i | 0) == (b[d >> 2] | 0)) {\n                b[d >> 2] = c;\n\n                if (!c) {\n                  e = e & ~(1 << a);\n                  b[5830] = e;\n                  break;\n                }\n              } else {\n                v = g + 16 | 0;\n                b[((b[v >> 2] | 0) == (i | 0) ? v : g + 20 | 0) >> 2] = c;\n                if (!c) { break; }\n              }\n\n              b[c + 24 >> 2] = g;\n              a = b[i + 16 >> 2] | 0;\n\n              if (a | 0) {\n                b[c + 16 >> 2] = a;\n                b[a + 24 >> 2] = c;\n              }\n\n              a = b[i + 20 >> 2] | 0;\n\n              if (a) {\n                b[c + 20 >> 2] = a;\n                b[a + 24 >> 2] = c;\n              }\n            } } while (0);\n\n            b: do { if (h >>> 0 < 16) {\n              v = h + k | 0;\n              b[i + 4 >> 2] = v | 3;\n              v = i + v + 4 | 0;\n              b[v >> 2] = b[v >> 2] | 1;\n            } else {\n              b[i + 4 >> 2] = k | 3;\n              b[l + 4 >> 2] = h | 1;\n              b[l + h >> 2] = h;\n              c = h >>> 3;\n\n              if (h >>> 0 < 256) {\n                d = 23356 + (c << 1 << 2) | 0;\n                a = b[5829] | 0;\n                c = 1 << c;\n\n                if (!(a & c)) {\n                  b[5829] = a | c;\n                  c = d;\n                  a = d + 8 | 0;\n                } else {\n                  a = d + 8 | 0;\n                  c = b[a >> 2] | 0;\n                }\n\n                b[a >> 2] = l;\n                b[c + 12 >> 2] = l;\n                b[l + 8 >> 2] = c;\n                b[l + 12 >> 2] = d;\n                break;\n              }\n\n              c = h >>> 8;\n              if (c) {\n                if (h >>> 0 > 16777215) { d = 31; }else {\n                  u = (c + 1048320 | 0) >>> 16 & 8;\n                  v = c << u;\n                  t = (v + 520192 | 0) >>> 16 & 4;\n                  v = v << t;\n                  d = (v + 245760 | 0) >>> 16 & 2;\n                  d = 14 - (t | u | d) + (v << d >>> 15) | 0;\n                  d = h >>> (d + 7 | 0) & 1 | d << 1;\n                }\n              } else { d = 0; }\n              c = 23620 + (d << 2) | 0;\n              b[l + 28 >> 2] = d;\n              a = l + 16 | 0;\n              b[a + 4 >> 2] = 0;\n              b[a >> 2] = 0;\n              a = 1 << d;\n\n              if (!(e & a)) {\n                b[5830] = e | a;\n                b[c >> 2] = l;\n                b[l + 24 >> 2] = c;\n                b[l + 12 >> 2] = l;\n                b[l + 8 >> 2] = l;\n                break;\n              }\n\n              c = b[c >> 2] | 0;\n\n              c: do { if ((b[c + 4 >> 2] & -8 | 0) != (h | 0)) {\n                e = h << ((d | 0) == 31 ? 0 : 25 - (d >>> 1) | 0);\n\n                while (1) {\n                  d = c + 16 + (e >>> 31 << 2) | 0;\n                  a = b[d >> 2] | 0;\n                  if (!a) { break; }\n\n                  if ((b[a + 4 >> 2] & -8 | 0) == (h | 0)) {\n                    c = a;\n                    break c;\n                  } else {\n                    e = e << 1;\n                    c = a;\n                  }\n                }\n\n                b[d >> 2] = l;\n                b[l + 24 >> 2] = c;\n                b[l + 12 >> 2] = l;\n                b[l + 8 >> 2] = l;\n                break b;\n              } } while (0);\n\n              u = c + 8 | 0;\n              v = b[u >> 2] | 0;\n              b[v + 12 >> 2] = l;\n              b[u >> 2] = l;\n              b[l + 8 >> 2] = v;\n              b[l + 12 >> 2] = c;\n              b[l + 24 >> 2] = 0;\n            } } while (0);\n\n            v = i + 8 | 0;\n            S = w;\n            return v | 0;\n          } else { m = k; }\n        } else { m = k; }\n      } else { m = -1; } } while (0);\n\n      d = b[5831] | 0;\n\n      if (d >>> 0 >= m >>> 0) {\n        c = d - m | 0;\n        a = b[5834] | 0;\n\n        if (c >>> 0 > 15) {\n          v = a + m | 0;\n          b[5834] = v;\n          b[5831] = c;\n          b[v + 4 >> 2] = c | 1;\n          b[a + d >> 2] = c;\n          b[a + 4 >> 2] = m | 3;\n        } else {\n          b[5831] = 0;\n          b[5834] = 0;\n          b[a + 4 >> 2] = d | 3;\n          v = a + d + 4 | 0;\n          b[v >> 2] = b[v >> 2] | 1;\n        }\n\n        v = a + 8 | 0;\n        S = w;\n        return v | 0;\n      }\n\n      h = b[5832] | 0;\n\n      if (h >>> 0 > m >>> 0) {\n        t = h - m | 0;\n        b[5832] = t;\n        v = b[5835] | 0;\n        u = v + m | 0;\n        b[5835] = u;\n        b[u + 4 >> 2] = t | 1;\n        b[v + 4 >> 2] = m | 3;\n        v = v + 8 | 0;\n        S = w;\n        return v | 0;\n      }\n\n      if (!(b[5947] | 0)) {\n        b[5949] = 4096;\n        b[5948] = 4096;\n        b[5950] = -1;\n        b[5951] = -1;\n        b[5952] = 0;\n        b[5940] = 0;\n        b[5947] = n & -16 ^ 1431655768;\n        a = 4096;\n      } else { a = b[5949] | 0; }\n\n      i = m + 48 | 0;\n      j = m + 47 | 0;\n      g = a + j | 0;\n      f = 0 - a | 0;\n      k = g & f;\n\n      if (k >>> 0 <= m >>> 0) {\n        v = 0;\n        S = w;\n        return v | 0;\n      }\n\n      a = b[5939] | 0;\n\n      if (a | 0 ? (l = b[5937] | 0, n = l + k | 0, n >>> 0 <= l >>> 0 | n >>> 0 > a >>> 0) : 0) {\n        v = 0;\n        S = w;\n        return v | 0;\n      }\n\n      d: do { if (!(b[5940] & 4)) {\n        d = b[5835] | 0;\n\n        e: do { if (d) {\n          e = 23764;\n\n          while (1) {\n            n = b[e >> 2] | 0;\n            if (n >>> 0 <= d >>> 0 ? (n + (b[e + 4 >> 2] | 0) | 0) >>> 0 > d >>> 0 : 0) { break; }\n            a = b[e + 8 >> 2] | 0;\n\n            if (!a) {\n              q = 128;\n              break e;\n            } else { e = a; }\n          }\n\n          c = g - h & f;\n\n          if (c >>> 0 < 2147483647) {\n            a = jd(c | 0) | 0;\n\n            if ((a | 0) == ((b[e >> 2] | 0) + (b[e + 4 >> 2] | 0) | 0)) {\n              if ((a | 0) != (-1 | 0)) {\n                h = c;\n                g = a;\n                q = 145;\n                break d;\n              }\n            } else {\n              e = a;\n              q = 136;\n            }\n          } else { c = 0; }\n        } else { q = 128; } } while (0);\n\n        do { if ((q | 0) == 128) {\n          d = jd(0) | 0;\n\n          if ((d | 0) != (-1 | 0) ? (c = d, o = b[5948] | 0, p = o + -1 | 0, c = ((p & c | 0) == 0 ? 0 : (p + c & 0 - o) - c | 0) + k | 0, o = b[5937] | 0, p = c + o | 0, c >>> 0 > m >>> 0 & c >>> 0 < 2147483647) : 0) {\n            n = b[5939] | 0;\n\n            if (n | 0 ? p >>> 0 <= o >>> 0 | p >>> 0 > n >>> 0 : 0) {\n              c = 0;\n              break;\n            }\n\n            a = jd(c | 0) | 0;\n\n            if ((a | 0) == (d | 0)) {\n              h = c;\n              g = d;\n              q = 145;\n              break d;\n            } else {\n              e = a;\n              q = 136;\n            }\n          } else { c = 0; }\n        } } while (0);\n\n        do { if ((q | 0) == 136) {\n          d = 0 - c | 0;\n          if (!(i >>> 0 > c >>> 0 & (c >>> 0 < 2147483647 & (e | 0) != (-1 | 0)))) { if ((e | 0) == (-1 | 0)) {\n            c = 0;\n            break;\n          } else {\n            h = c;\n            g = e;\n            q = 145;\n            break d;\n          } }\n          a = b[5949] | 0;\n          a = j - c + a & 0 - a;\n\n          if (a >>> 0 >= 2147483647) {\n            h = c;\n            g = e;\n            q = 145;\n            break d;\n          }\n\n          if ((jd(a | 0) | 0) == (-1 | 0)) {\n            jd(d | 0) | 0;\n            c = 0;\n            break;\n          } else {\n            h = a + c | 0;\n            g = e;\n            q = 145;\n            break d;\n          }\n        } } while (0);\n\n        b[5940] = b[5940] | 4;\n        q = 143;\n      } else {\n        c = 0;\n        q = 143;\n      } } while (0);\n\n      if (((q | 0) == 143 ? k >>> 0 < 2147483647 : 0) ? (t = jd(k | 0) | 0, p = jd(0) | 0, r = p - t | 0, s = r >>> 0 > (m + 40 | 0) >>> 0, !((t | 0) == (-1 | 0) | s ^ 1 | t >>> 0 < p >>> 0 & ((t | 0) != (-1 | 0) & (p | 0) != (-1 | 0)) ^ 1)) : 0) {\n        h = s ? r : c;\n        g = t;\n        q = 145;\n      }\n\n      if ((q | 0) == 145) {\n        c = (b[5937] | 0) + h | 0;\n        b[5937] = c;\n        if (c >>> 0 > (b[5938] | 0) >>> 0) { b[5938] = c; }\n        j = b[5835] | 0;\n\n        f: do { if (j) {\n          c = 23764;\n\n          while (1) {\n            a = b[c >> 2] | 0;\n            d = b[c + 4 >> 2] | 0;\n\n            if ((g | 0) == (a + d | 0)) {\n              q = 154;\n              break;\n            }\n\n            e = b[c + 8 >> 2] | 0;\n            if (!e) { break; }else { c = e; }\n          }\n\n          if (((q | 0) == 154 ? (u = c + 4 | 0, (b[c + 12 >> 2] & 8 | 0) == 0) : 0) ? g >>> 0 > j >>> 0 & a >>> 0 <= j >>> 0 : 0) {\n            b[u >> 2] = d + h;\n            v = (b[5832] | 0) + h | 0;\n            t = j + 8 | 0;\n            t = (t & 7 | 0) == 0 ? 0 : 0 - t & 7;\n            u = j + t | 0;\n            t = v - t | 0;\n            b[5835] = u;\n            b[5832] = t;\n            b[u + 4 >> 2] = t | 1;\n            b[j + v + 4 >> 2] = 40;\n            b[5836] = b[5951];\n            break;\n          }\n\n          if (g >>> 0 < (b[5833] | 0) >>> 0) { b[5833] = g; }\n          d = g + h | 0;\n          c = 23764;\n\n          while (1) {\n            if ((b[c >> 2] | 0) == (d | 0)) {\n              q = 162;\n              break;\n            }\n\n            a = b[c + 8 >> 2] | 0;\n            if (!a) { break; }else { c = a; }\n          }\n\n          if ((q | 0) == 162 ? (b[c + 12 >> 2] & 8 | 0) == 0 : 0) {\n            b[c >> 2] = g;\n            l = c + 4 | 0;\n            b[l >> 2] = (b[l >> 2] | 0) + h;\n            l = g + 8 | 0;\n            l = g + ((l & 7 | 0) == 0 ? 0 : 0 - l & 7) | 0;\n            c = d + 8 | 0;\n            c = d + ((c & 7 | 0) == 0 ? 0 : 0 - c & 7) | 0;\n            k = l + m | 0;\n            i = c - l - m | 0;\n            b[l + 4 >> 2] = m | 3;\n\n            g: do { if ((j | 0) == (c | 0)) {\n              v = (b[5832] | 0) + i | 0;\n              b[5832] = v;\n              b[5835] = k;\n              b[k + 4 >> 2] = v | 1;\n            } else {\n              if ((b[5834] | 0) == (c | 0)) {\n                v = (b[5831] | 0) + i | 0;\n                b[5831] = v;\n                b[5834] = k;\n                b[k + 4 >> 2] = v | 1;\n                b[k + v >> 2] = v;\n                break;\n              }\n\n              a = b[c + 4 >> 2] | 0;\n\n              if ((a & 3 | 0) == 1) {\n                h = a & -8;\n                e = a >>> 3;\n\n                h: do { if (a >>> 0 < 256) {\n                  a = b[c + 8 >> 2] | 0;\n                  d = b[c + 12 >> 2] | 0;\n\n                  if ((d | 0) == (a | 0)) {\n                    b[5829] = b[5829] & ~(1 << e);\n                    break;\n                  } else {\n                    b[a + 12 >> 2] = d;\n                    b[d + 8 >> 2] = a;\n                    break;\n                  }\n                } else {\n                  g = b[c + 24 >> 2] | 0;\n                  a = b[c + 12 >> 2] | 0;\n\n                  do { if ((a | 0) == (c | 0)) {\n                    d = c + 16 | 0;\n                    e = d + 4 | 0;\n                    a = b[e >> 2] | 0;\n\n                    if (!a) {\n                      a = b[d >> 2] | 0;\n\n                      if (!a) {\n                        a = 0;\n                        break;\n                      }\n                    } else { d = e; }\n\n                    while (1) {\n                      f = a + 20 | 0;\n                      e = b[f >> 2] | 0;\n\n                      if (!e) {\n                        f = a + 16 | 0;\n                        e = b[f >> 2] | 0;\n                        if (!e) { break; }else {\n                          a = e;\n                          d = f;\n                        }\n                      } else {\n                        a = e;\n                        d = f;\n                      }\n                    }\n\n                    b[d >> 2] = 0;\n                  } else {\n                    v = b[c + 8 >> 2] | 0;\n                    b[v + 12 >> 2] = a;\n                    b[a + 8 >> 2] = v;\n                  } } while (0);\n\n                  if (!g) { break; }\n                  d = b[c + 28 >> 2] | 0;\n                  e = 23620 + (d << 2) | 0;\n\n                  do { if ((b[e >> 2] | 0) != (c | 0)) {\n                    v = g + 16 | 0;\n                    b[((b[v >> 2] | 0) == (c | 0) ? v : g + 20 | 0) >> 2] = a;\n                    if (!a) { break h; }\n                  } else {\n                    b[e >> 2] = a;\n                    if (a | 0) { break; }\n                    b[5830] = b[5830] & ~(1 << d);\n                    break h;\n                  } } while (0);\n\n                  b[a + 24 >> 2] = g;\n                  d = c + 16 | 0;\n                  e = b[d >> 2] | 0;\n\n                  if (e | 0) {\n                    b[a + 16 >> 2] = e;\n                    b[e + 24 >> 2] = a;\n                  }\n\n                  d = b[d + 4 >> 2] | 0;\n                  if (!d) { break; }\n                  b[a + 20 >> 2] = d;\n                  b[d + 24 >> 2] = a;\n                } } while (0);\n\n                c = c + h | 0;\n                f = h + i | 0;\n              } else { f = i; }\n\n              c = c + 4 | 0;\n              b[c >> 2] = b[c >> 2] & -2;\n              b[k + 4 >> 2] = f | 1;\n              b[k + f >> 2] = f;\n              c = f >>> 3;\n\n              if (f >>> 0 < 256) {\n                d = 23356 + (c << 1 << 2) | 0;\n                a = b[5829] | 0;\n                c = 1 << c;\n\n                if (!(a & c)) {\n                  b[5829] = a | c;\n                  c = d;\n                  a = d + 8 | 0;\n                } else {\n                  a = d + 8 | 0;\n                  c = b[a >> 2] | 0;\n                }\n\n                b[a >> 2] = k;\n                b[c + 12 >> 2] = k;\n                b[k + 8 >> 2] = c;\n                b[k + 12 >> 2] = d;\n                break;\n              }\n\n              c = f >>> 8;\n\n              do { if (!c) { e = 0; }else {\n                if (f >>> 0 > 16777215) {\n                  e = 31;\n                  break;\n                }\n\n                u = (c + 1048320 | 0) >>> 16 & 8;\n                v = c << u;\n                t = (v + 520192 | 0) >>> 16 & 4;\n                v = v << t;\n                e = (v + 245760 | 0) >>> 16 & 2;\n                e = 14 - (t | u | e) + (v << e >>> 15) | 0;\n                e = f >>> (e + 7 | 0) & 1 | e << 1;\n              } } while (0);\n\n              c = 23620 + (e << 2) | 0;\n              b[k + 28 >> 2] = e;\n              a = k + 16 | 0;\n              b[a + 4 >> 2] = 0;\n              b[a >> 2] = 0;\n              a = b[5830] | 0;\n              d = 1 << e;\n\n              if (!(a & d)) {\n                b[5830] = a | d;\n                b[c >> 2] = k;\n                b[k + 24 >> 2] = c;\n                b[k + 12 >> 2] = k;\n                b[k + 8 >> 2] = k;\n                break;\n              }\n\n              c = b[c >> 2] | 0;\n\n              i: do { if ((b[c + 4 >> 2] & -8 | 0) != (f | 0)) {\n                e = f << ((e | 0) == 31 ? 0 : 25 - (e >>> 1) | 0);\n\n                while (1) {\n                  d = c + 16 + (e >>> 31 << 2) | 0;\n                  a = b[d >> 2] | 0;\n                  if (!a) { break; }\n\n                  if ((b[a + 4 >> 2] & -8 | 0) == (f | 0)) {\n                    c = a;\n                    break i;\n                  } else {\n                    e = e << 1;\n                    c = a;\n                  }\n                }\n\n                b[d >> 2] = k;\n                b[k + 24 >> 2] = c;\n                b[k + 12 >> 2] = k;\n                b[k + 8 >> 2] = k;\n                break g;\n              } } while (0);\n\n              u = c + 8 | 0;\n              v = b[u >> 2] | 0;\n              b[v + 12 >> 2] = k;\n              b[u >> 2] = k;\n              b[k + 8 >> 2] = v;\n              b[k + 12 >> 2] = c;\n              b[k + 24 >> 2] = 0;\n            } } while (0);\n\n            v = l + 8 | 0;\n            S = w;\n            return v | 0;\n          }\n\n          c = 23764;\n\n          while (1) {\n            a = b[c >> 2] | 0;\n            if (a >>> 0 <= j >>> 0 ? (v = a + (b[c + 4 >> 2] | 0) | 0, v >>> 0 > j >>> 0) : 0) { break; }\n            c = b[c + 8 >> 2] | 0;\n          }\n\n          f = v + -47 | 0;\n          a = f + 8 | 0;\n          a = f + ((a & 7 | 0) == 0 ? 0 : 0 - a & 7) | 0;\n          f = j + 16 | 0;\n          a = a >>> 0 < f >>> 0 ? j : a;\n          c = a + 8 | 0;\n          d = h + -40 | 0;\n          t = g + 8 | 0;\n          t = (t & 7 | 0) == 0 ? 0 : 0 - t & 7;\n          u = g + t | 0;\n          t = d - t | 0;\n          b[5835] = u;\n          b[5832] = t;\n          b[u + 4 >> 2] = t | 1;\n          b[g + d + 4 >> 2] = 40;\n          b[5836] = b[5951];\n          d = a + 4 | 0;\n          b[d >> 2] = 27;\n          b[c >> 2] = b[5941];\n          b[c + 4 >> 2] = b[5942];\n          b[c + 8 >> 2] = b[5943];\n          b[c + 12 >> 2] = b[5944];\n          b[5941] = g;\n          b[5942] = h;\n          b[5944] = 0;\n          b[5943] = c;\n          c = a + 24 | 0;\n\n          do {\n            u = c;\n            c = c + 4 | 0;\n            b[c >> 2] = 7;\n          } while ((u + 8 | 0) >>> 0 < v >>> 0);\n\n          if ((a | 0) != (j | 0)) {\n            g = a - j | 0;\n            b[d >> 2] = b[d >> 2] & -2;\n            b[j + 4 >> 2] = g | 1;\n            b[a >> 2] = g;\n            c = g >>> 3;\n\n            if (g >>> 0 < 256) {\n              d = 23356 + (c << 1 << 2) | 0;\n              a = b[5829] | 0;\n              c = 1 << c;\n\n              if (!(a & c)) {\n                b[5829] = a | c;\n                c = d;\n                a = d + 8 | 0;\n              } else {\n                a = d + 8 | 0;\n                c = b[a >> 2] | 0;\n              }\n\n              b[a >> 2] = j;\n              b[c + 12 >> 2] = j;\n              b[j + 8 >> 2] = c;\n              b[j + 12 >> 2] = d;\n              break;\n            }\n\n            c = g >>> 8;\n            if (c) {\n              if (g >>> 0 > 16777215) { e = 31; }else {\n                u = (c + 1048320 | 0) >>> 16 & 8;\n                v = c << u;\n                t = (v + 520192 | 0) >>> 16 & 4;\n                v = v << t;\n                e = (v + 245760 | 0) >>> 16 & 2;\n                e = 14 - (t | u | e) + (v << e >>> 15) | 0;\n                e = g >>> (e + 7 | 0) & 1 | e << 1;\n              }\n            } else { e = 0; }\n            d = 23620 + (e << 2) | 0;\n            b[j + 28 >> 2] = e;\n            b[j + 20 >> 2] = 0;\n            b[f >> 2] = 0;\n            c = b[5830] | 0;\n            a = 1 << e;\n\n            if (!(c & a)) {\n              b[5830] = c | a;\n              b[d >> 2] = j;\n              b[j + 24 >> 2] = d;\n              b[j + 12 >> 2] = j;\n              b[j + 8 >> 2] = j;\n              break;\n            }\n\n            c = b[d >> 2] | 0;\n\n            j: do { if ((b[c + 4 >> 2] & -8 | 0) != (g | 0)) {\n              e = g << ((e | 0) == 31 ? 0 : 25 - (e >>> 1) | 0);\n\n              while (1) {\n                d = c + 16 + (e >>> 31 << 2) | 0;\n                a = b[d >> 2] | 0;\n                if (!a) { break; }\n\n                if ((b[a + 4 >> 2] & -8 | 0) == (g | 0)) {\n                  c = a;\n                  break j;\n                } else {\n                  e = e << 1;\n                  c = a;\n                }\n              }\n\n              b[d >> 2] = j;\n              b[j + 24 >> 2] = c;\n              b[j + 12 >> 2] = j;\n              b[j + 8 >> 2] = j;\n              break f;\n            } } while (0);\n\n            u = c + 8 | 0;\n            v = b[u >> 2] | 0;\n            b[v + 12 >> 2] = j;\n            b[u >> 2] = j;\n            b[j + 8 >> 2] = v;\n            b[j + 12 >> 2] = c;\n            b[j + 24 >> 2] = 0;\n          }\n        } else {\n          v = b[5833] | 0;\n          if ((v | 0) == 0 | g >>> 0 < v >>> 0) { b[5833] = g; }\n          b[5941] = g;\n          b[5942] = h;\n          b[5944] = 0;\n          b[5838] = b[5947];\n          b[5837] = -1;\n          b[5842] = 23356;\n          b[5841] = 23356;\n          b[5844] = 23364;\n          b[5843] = 23364;\n          b[5846] = 23372;\n          b[5845] = 23372;\n          b[5848] = 23380;\n          b[5847] = 23380;\n          b[5850] = 23388;\n          b[5849] = 23388;\n          b[5852] = 23396;\n          b[5851] = 23396;\n          b[5854] = 23404;\n          b[5853] = 23404;\n          b[5856] = 23412;\n          b[5855] = 23412;\n          b[5858] = 23420;\n          b[5857] = 23420;\n          b[5860] = 23428;\n          b[5859] = 23428;\n          b[5862] = 23436;\n          b[5861] = 23436;\n          b[5864] = 23444;\n          b[5863] = 23444;\n          b[5866] = 23452;\n          b[5865] = 23452;\n          b[5868] = 23460;\n          b[5867] = 23460;\n          b[5870] = 23468;\n          b[5869] = 23468;\n          b[5872] = 23476;\n          b[5871] = 23476;\n          b[5874] = 23484;\n          b[5873] = 23484;\n          b[5876] = 23492;\n          b[5875] = 23492;\n          b[5878] = 23500;\n          b[5877] = 23500;\n          b[5880] = 23508;\n          b[5879] = 23508;\n          b[5882] = 23516;\n          b[5881] = 23516;\n          b[5884] = 23524;\n          b[5883] = 23524;\n          b[5886] = 23532;\n          b[5885] = 23532;\n          b[5888] = 23540;\n          b[5887] = 23540;\n          b[5890] = 23548;\n          b[5889] = 23548;\n          b[5892] = 23556;\n          b[5891] = 23556;\n          b[5894] = 23564;\n          b[5893] = 23564;\n          b[5896] = 23572;\n          b[5895] = 23572;\n          b[5898] = 23580;\n          b[5897] = 23580;\n          b[5900] = 23588;\n          b[5899] = 23588;\n          b[5902] = 23596;\n          b[5901] = 23596;\n          b[5904] = 23604;\n          b[5903] = 23604;\n          v = h + -40 | 0;\n          t = g + 8 | 0;\n          t = (t & 7 | 0) == 0 ? 0 : 0 - t & 7;\n          u = g + t | 0;\n          t = v - t | 0;\n          b[5835] = u;\n          b[5832] = t;\n          b[u + 4 >> 2] = t | 1;\n          b[g + v + 4 >> 2] = 40;\n          b[5836] = b[5951];\n        } } while (0);\n\n        c = b[5832] | 0;\n\n        if (c >>> 0 > m >>> 0) {\n          t = c - m | 0;\n          b[5832] = t;\n          v = b[5835] | 0;\n          u = v + m | 0;\n          b[5835] = u;\n          b[u + 4 >> 2] = t | 1;\n          b[v + 4 >> 2] = m | 3;\n          v = v + 8 | 0;\n          S = w;\n          return v | 0;\n        }\n      }\n\n      v = Tc() | 0;\n      b[v >> 2] = 12;\n      v = 0;\n      S = w;\n      return v | 0;\n    }\n\n    function Xc(a) {\n      a = a | 0;\n      var c = 0,\n          d = 0,\n          e = 0,\n          f = 0,\n          g = 0,\n          h = 0,\n          i = 0,\n          j = 0;\n      if (!a) { return; }\n      d = a + -8 | 0;\n      f = b[5833] | 0;\n      a = b[a + -4 >> 2] | 0;\n      c = a & -8;\n      j = d + c | 0;\n\n      do { if (!(a & 1)) {\n        e = b[d >> 2] | 0;\n        if (!(a & 3)) { return; }\n        h = d + (0 - e) | 0;\n        g = e + c | 0;\n        if (h >>> 0 < f >>> 0) { return; }\n\n        if ((b[5834] | 0) == (h | 0)) {\n          a = j + 4 | 0;\n          c = b[a >> 2] | 0;\n\n          if ((c & 3 | 0) != 3) {\n            i = h;\n            c = g;\n            break;\n          }\n\n          b[5831] = g;\n          b[a >> 2] = c & -2;\n          b[h + 4 >> 2] = g | 1;\n          b[h + g >> 2] = g;\n          return;\n        }\n\n        d = e >>> 3;\n\n        if (e >>> 0 < 256) {\n          a = b[h + 8 >> 2] | 0;\n          c = b[h + 12 >> 2] | 0;\n\n          if ((c | 0) == (a | 0)) {\n            b[5829] = b[5829] & ~(1 << d);\n            i = h;\n            c = g;\n            break;\n          } else {\n            b[a + 12 >> 2] = c;\n            b[c + 8 >> 2] = a;\n            i = h;\n            c = g;\n            break;\n          }\n        }\n\n        f = b[h + 24 >> 2] | 0;\n        a = b[h + 12 >> 2] | 0;\n\n        do { if ((a | 0) == (h | 0)) {\n          c = h + 16 | 0;\n          d = c + 4 | 0;\n          a = b[d >> 2] | 0;\n\n          if (!a) {\n            a = b[c >> 2] | 0;\n\n            if (!a) {\n              a = 0;\n              break;\n            }\n          } else { c = d; }\n\n          while (1) {\n            e = a + 20 | 0;\n            d = b[e >> 2] | 0;\n\n            if (!d) {\n              e = a + 16 | 0;\n              d = b[e >> 2] | 0;\n              if (!d) { break; }else {\n                a = d;\n                c = e;\n              }\n            } else {\n              a = d;\n              c = e;\n            }\n          }\n\n          b[c >> 2] = 0;\n        } else {\n          i = b[h + 8 >> 2] | 0;\n          b[i + 12 >> 2] = a;\n          b[a + 8 >> 2] = i;\n        } } while (0);\n\n        if (f) {\n          c = b[h + 28 >> 2] | 0;\n          d = 23620 + (c << 2) | 0;\n\n          if ((b[d >> 2] | 0) == (h | 0)) {\n            b[d >> 2] = a;\n\n            if (!a) {\n              b[5830] = b[5830] & ~(1 << c);\n              i = h;\n              c = g;\n              break;\n            }\n          } else {\n            i = f + 16 | 0;\n            b[((b[i >> 2] | 0) == (h | 0) ? i : f + 20 | 0) >> 2] = a;\n\n            if (!a) {\n              i = h;\n              c = g;\n              break;\n            }\n          }\n\n          b[a + 24 >> 2] = f;\n          c = h + 16 | 0;\n          d = b[c >> 2] | 0;\n\n          if (d | 0) {\n            b[a + 16 >> 2] = d;\n            b[d + 24 >> 2] = a;\n          }\n\n          c = b[c + 4 >> 2] | 0;\n\n          if (c) {\n            b[a + 20 >> 2] = c;\n            b[c + 24 >> 2] = a;\n            i = h;\n            c = g;\n          } else {\n            i = h;\n            c = g;\n          }\n        } else {\n          i = h;\n          c = g;\n        }\n      } else {\n        i = d;\n        h = d;\n      } } while (0);\n\n      if (h >>> 0 >= j >>> 0) { return; }\n      a = j + 4 | 0;\n      e = b[a >> 2] | 0;\n      if (!(e & 1)) { return; }\n\n      if (!(e & 2)) {\n        if ((b[5835] | 0) == (j | 0)) {\n          j = (b[5832] | 0) + c | 0;\n          b[5832] = j;\n          b[5835] = i;\n          b[i + 4 >> 2] = j | 1;\n          if ((i | 0) != (b[5834] | 0)) { return; }\n          b[5834] = 0;\n          b[5831] = 0;\n          return;\n        }\n\n        if ((b[5834] | 0) == (j | 0)) {\n          j = (b[5831] | 0) + c | 0;\n          b[5831] = j;\n          b[5834] = h;\n          b[i + 4 >> 2] = j | 1;\n          b[h + j >> 2] = j;\n          return;\n        }\n\n        f = (e & -8) + c | 0;\n        d = e >>> 3;\n\n        do { if (e >>> 0 < 256) {\n          c = b[j + 8 >> 2] | 0;\n          a = b[j + 12 >> 2] | 0;\n\n          if ((a | 0) == (c | 0)) {\n            b[5829] = b[5829] & ~(1 << d);\n            break;\n          } else {\n            b[c + 12 >> 2] = a;\n            b[a + 8 >> 2] = c;\n            break;\n          }\n        } else {\n          g = b[j + 24 >> 2] | 0;\n          a = b[j + 12 >> 2] | 0;\n\n          do { if ((a | 0) == (j | 0)) {\n            c = j + 16 | 0;\n            d = c + 4 | 0;\n            a = b[d >> 2] | 0;\n\n            if (!a) {\n              a = b[c >> 2] | 0;\n\n              if (!a) {\n                d = 0;\n                break;\n              }\n            } else { c = d; }\n\n            while (1) {\n              e = a + 20 | 0;\n              d = b[e >> 2] | 0;\n\n              if (!d) {\n                e = a + 16 | 0;\n                d = b[e >> 2] | 0;\n                if (!d) { break; }else {\n                  a = d;\n                  c = e;\n                }\n              } else {\n                a = d;\n                c = e;\n              }\n            }\n\n            b[c >> 2] = 0;\n            d = a;\n          } else {\n            d = b[j + 8 >> 2] | 0;\n            b[d + 12 >> 2] = a;\n            b[a + 8 >> 2] = d;\n            d = a;\n          } } while (0);\n\n          if (g | 0) {\n            a = b[j + 28 >> 2] | 0;\n            c = 23620 + (a << 2) | 0;\n\n            if ((b[c >> 2] | 0) == (j | 0)) {\n              b[c >> 2] = d;\n\n              if (!d) {\n                b[5830] = b[5830] & ~(1 << a);\n                break;\n              }\n            } else {\n              e = g + 16 | 0;\n              b[((b[e >> 2] | 0) == (j | 0) ? e : g + 20 | 0) >> 2] = d;\n              if (!d) { break; }\n            }\n\n            b[d + 24 >> 2] = g;\n            a = j + 16 | 0;\n            c = b[a >> 2] | 0;\n\n            if (c | 0) {\n              b[d + 16 >> 2] = c;\n              b[c + 24 >> 2] = d;\n            }\n\n            a = b[a + 4 >> 2] | 0;\n\n            if (a | 0) {\n              b[d + 20 >> 2] = a;\n              b[a + 24 >> 2] = d;\n            }\n          }\n        } } while (0);\n\n        b[i + 4 >> 2] = f | 1;\n        b[h + f >> 2] = f;\n\n        if ((i | 0) == (b[5834] | 0)) {\n          b[5831] = f;\n          return;\n        }\n      } else {\n        b[a >> 2] = e & -2;\n        b[i + 4 >> 2] = c | 1;\n        b[h + c >> 2] = c;\n        f = c;\n      }\n\n      a = f >>> 3;\n\n      if (f >>> 0 < 256) {\n        d = 23356 + (a << 1 << 2) | 0;\n        c = b[5829] | 0;\n        a = 1 << a;\n\n        if (!(c & a)) {\n          b[5829] = c | a;\n          a = d;\n          c = d + 8 | 0;\n        } else {\n          c = d + 8 | 0;\n          a = b[c >> 2] | 0;\n        }\n\n        b[c >> 2] = i;\n        b[a + 12 >> 2] = i;\n        b[i + 8 >> 2] = a;\n        b[i + 12 >> 2] = d;\n        return;\n      }\n\n      a = f >>> 8;\n      if (a) {\n        if (f >>> 0 > 16777215) { e = 31; }else {\n          h = (a + 1048320 | 0) >>> 16 & 8;\n          j = a << h;\n          g = (j + 520192 | 0) >>> 16 & 4;\n          j = j << g;\n          e = (j + 245760 | 0) >>> 16 & 2;\n          e = 14 - (g | h | e) + (j << e >>> 15) | 0;\n          e = f >>> (e + 7 | 0) & 1 | e << 1;\n        }\n      } else { e = 0; }\n      a = 23620 + (e << 2) | 0;\n      b[i + 28 >> 2] = e;\n      b[i + 20 >> 2] = 0;\n      b[i + 16 >> 2] = 0;\n      c = b[5830] | 0;\n      d = 1 << e;\n\n      a: do { if (!(c & d)) {\n        b[5830] = c | d;\n        b[a >> 2] = i;\n        b[i + 24 >> 2] = a;\n        b[i + 12 >> 2] = i;\n        b[i + 8 >> 2] = i;\n      } else {\n        a = b[a >> 2] | 0;\n\n        b: do { if ((b[a + 4 >> 2] & -8 | 0) != (f | 0)) {\n          e = f << ((e | 0) == 31 ? 0 : 25 - (e >>> 1) | 0);\n\n          while (1) {\n            d = a + 16 + (e >>> 31 << 2) | 0;\n            c = b[d >> 2] | 0;\n            if (!c) { break; }\n\n            if ((b[c + 4 >> 2] & -8 | 0) == (f | 0)) {\n              a = c;\n              break b;\n            } else {\n              e = e << 1;\n              a = c;\n            }\n          }\n\n          b[d >> 2] = i;\n          b[i + 24 >> 2] = a;\n          b[i + 12 >> 2] = i;\n          b[i + 8 >> 2] = i;\n          break a;\n        } } while (0);\n\n        h = a + 8 | 0;\n        j = b[h >> 2] | 0;\n        b[j + 12 >> 2] = i;\n        b[h >> 2] = i;\n        b[i + 8 >> 2] = j;\n        b[i + 12 >> 2] = a;\n        b[i + 24 >> 2] = 0;\n      } } while (0);\n\n      j = (b[5837] | 0) + -1 | 0;\n      b[5837] = j;\n      if (j | 0) { return; }\n      a = 23772;\n\n      while (1) {\n        a = b[a >> 2] | 0;\n        if (!a) { break; }else { a = a + 8 | 0; }\n      }\n\n      b[5837] = -1;\n      return;\n    }\n\n    function Yc(a, c) {\n      a = a | 0;\n      c = c | 0;\n      var d = 0;\n\n      if (a) {\n        d = B(c, a) | 0;\n        if ((c | a) >>> 0 > 65535) { d = ((d >>> 0) / (a >>> 0) | 0 | 0) == (c | 0) ? d : -1; }\n      } else { d = 0; }\n\n      a = Wc(d) | 0;\n      if (!a) { return a | 0; }\n      if (!(b[a + -4 >> 2] & 3)) { return a | 0; }\n      hd(a | 0, 0, d | 0) | 0;\n      return a | 0;\n    }\n\n    function Zc(a, b, c, d) {\n      a = a | 0;\n      b = b | 0;\n      c = c | 0;\n      d = d | 0;\n      c = a + c >>> 0;\n      return (F(b + d + (c >>> 0 < a >>> 0 | 0) >>> 0 | 0), c | 0) | 0;\n    }\n\n    function _c(a, b, c, d) {\n      a = a | 0;\n      b = b | 0;\n      c = c | 0;\n      d = d | 0;\n      d = b - d - (c >>> 0 > a >>> 0 | 0) >>> 0;\n      return (F(d | 0), a - c >>> 0 | 0) | 0;\n    }\n\n    function $c(a) {\n      a = a | 0;\n      return (a ? 31 - (D(a ^ a - 1) | 0) | 0 : 32) | 0;\n    }\n\n    function ad(a, c, d, e, f) {\n      a = a | 0;\n      c = c | 0;\n      d = d | 0;\n      e = e | 0;\n      f = f | 0;\n      var g = 0,\n          h = 0,\n          i = 0,\n          j = 0,\n          k = 0,\n          l = 0,\n          m = 0,\n          n = 0,\n          o = 0,\n          p = 0;\n      l = a;\n      j = c;\n      k = j;\n      h = d;\n      n = e;\n      i = n;\n\n      if (!k) {\n        g = (f | 0) != 0;\n\n        if (!i) {\n          if (g) {\n            b[f >> 2] = (l >>> 0) % (h >>> 0);\n            b[f + 4 >> 2] = 0;\n          }\n\n          n = 0;\n          f = (l >>> 0) / (h >>> 0) >>> 0;\n          return (F(n | 0), f) | 0;\n        } else {\n          if (!g) {\n            n = 0;\n            f = 0;\n            return (F(n | 0), f) | 0;\n          }\n\n          b[f >> 2] = a | 0;\n          b[f + 4 >> 2] = c & 0;\n          n = 0;\n          f = 0;\n          return (F(n | 0), f) | 0;\n        }\n      }\n\n      g = (i | 0) == 0;\n\n      do { if (h) {\n        if (!g) {\n          g = (D(i | 0) | 0) - (D(k | 0) | 0) | 0;\n\n          if (g >>> 0 <= 31) {\n            m = g + 1 | 0;\n            i = 31 - g | 0;\n            c = g - 31 >> 31;\n            h = m;\n            a = l >>> (m >>> 0) & c | k << i;\n            c = k >>> (m >>> 0) & c;\n            g = 0;\n            i = l << i;\n            break;\n          }\n\n          if (!f) {\n            n = 0;\n            f = 0;\n            return (F(n | 0), f) | 0;\n          }\n\n          b[f >> 2] = a | 0;\n          b[f + 4 >> 2] = j | c & 0;\n          n = 0;\n          f = 0;\n          return (F(n | 0), f) | 0;\n        }\n\n        g = h - 1 | 0;\n\n        if (g & h | 0) {\n          i = (D(h | 0) | 0) + 33 - (D(k | 0) | 0) | 0;\n          p = 64 - i | 0;\n          m = 32 - i | 0;\n          j = m >> 31;\n          o = i - 32 | 0;\n          c = o >> 31;\n          h = i;\n          a = m - 1 >> 31 & k >>> (o >>> 0) | (k << m | l >>> (i >>> 0)) & c;\n          c = c & k >>> (i >>> 0);\n          g = l << p & j;\n          i = (k << p | l >>> (o >>> 0)) & j | l << m & i - 33 >> 31;\n          break;\n        }\n\n        if (f | 0) {\n          b[f >> 2] = g & l;\n          b[f + 4 >> 2] = 0;\n        }\n\n        if ((h | 0) == 1) {\n          o = j | c & 0;\n          p = a | 0 | 0;\n          return (F(o | 0), p) | 0;\n        } else {\n          p = $c(h | 0) | 0;\n          o = k >>> (p >>> 0) | 0;\n          p = k << 32 - p | l >>> (p >>> 0) | 0;\n          return (F(o | 0), p) | 0;\n        }\n      } else {\n        if (g) {\n          if (f | 0) {\n            b[f >> 2] = (k >>> 0) % (h >>> 0);\n            b[f + 4 >> 2] = 0;\n          }\n\n          o = 0;\n          p = (k >>> 0) / (h >>> 0) >>> 0;\n          return (F(o | 0), p) | 0;\n        }\n\n        if (!l) {\n          if (f | 0) {\n            b[f >> 2] = 0;\n            b[f + 4 >> 2] = (k >>> 0) % (i >>> 0);\n          }\n\n          o = 0;\n          p = (k >>> 0) / (i >>> 0) >>> 0;\n          return (F(o | 0), p) | 0;\n        }\n\n        g = i - 1 | 0;\n\n        if (!(g & i)) {\n          if (f | 0) {\n            b[f >> 2] = a | 0;\n            b[f + 4 >> 2] = g & k | c & 0;\n          }\n\n          o = 0;\n          p = k >>> (($c(i | 0) | 0) >>> 0);\n          return (F(o | 0), p) | 0;\n        }\n\n        g = (D(i | 0) | 0) - (D(k | 0) | 0) | 0;\n\n        if (g >>> 0 <= 30) {\n          c = g + 1 | 0;\n          i = 31 - g | 0;\n          h = c;\n          a = k << i | l >>> (c >>> 0);\n          c = k >>> (c >>> 0);\n          g = 0;\n          i = l << i;\n          break;\n        }\n\n        if (!f) {\n          o = 0;\n          p = 0;\n          return (F(o | 0), p) | 0;\n        }\n\n        b[f >> 2] = a | 0;\n        b[f + 4 >> 2] = j | c & 0;\n        o = 0;\n        p = 0;\n        return (F(o | 0), p) | 0;\n      } } while (0);\n\n      if (!h) {\n        k = i;\n        j = 0;\n        i = 0;\n      } else {\n        m = d | 0 | 0;\n        l = n | e & 0;\n        k = Zc(m | 0, l | 0, -1, -1) | 0;\n        d = G() | 0;\n        j = i;\n        i = 0;\n\n        do {\n          e = j;\n          j = g >>> 31 | j << 1;\n          g = i | g << 1;\n          e = a << 1 | e >>> 31 | 0;\n          n = a >>> 31 | c << 1 | 0;\n          _c(k | 0, d | 0, e | 0, n | 0) | 0;\n          p = G() | 0;\n          o = p >> 31 | ((p | 0) < 0 ? -1 : 0) << 1;\n          i = o & 1;\n          a = _c(e | 0, n | 0, o & m | 0, (((p | 0) < 0 ? -1 : 0) >> 31 | ((p | 0) < 0 ? -1 : 0) << 1) & l | 0) | 0;\n          c = G() | 0;\n          h = h - 1 | 0;\n        } while ((h | 0) != 0);\n\n        k = j;\n        j = 0;\n      }\n\n      h = 0;\n\n      if (f | 0) {\n        b[f >> 2] = a;\n        b[f + 4 >> 2] = c;\n      }\n\n      o = (g | 0) >>> 31 | (k | h) << 1 | (h << 1 | g >>> 31) & 0 | j;\n      p = (g << 1 | 0 >>> 31) & -2 | i;\n      return (F(o | 0), p) | 0;\n    }\n\n    function bd(a, c, d, e) {\n      a = a | 0;\n      c = c | 0;\n      d = d | 0;\n      e = e | 0;\n      var f = 0,\n          g = 0;\n      g = S;\n      S = S + 16 | 0;\n      f = g | 0;\n      ad(a, c, d, e, f) | 0;\n      S = g;\n      return (F(b[f + 4 >> 2] | 0), b[f >> 2] | 0) | 0;\n    }\n\n    function cd(a, b, c) {\n      a = a | 0;\n      b = b | 0;\n      c = c | 0;\n\n      if ((c | 0) < 32) {\n        F(b >>> c | 0);\n        return a >>> c | (b & (1 << c) - 1) << 32 - c;\n      }\n\n      F(0);\n      return b >>> c - 32 | 0;\n    }\n\n    function dd(a, b, c) {\n      a = a | 0;\n      b = b | 0;\n      c = c | 0;\n\n      if ((c | 0) < 32) {\n        F(b << c | (a & (1 << c) - 1 << 32 - c) >>> 32 - c | 0);\n        return a << c;\n      }\n\n      F(a << c - 32 | 0);\n      return 0;\n    }\n\n    function ed(a, b) {\n      a = +a;\n      b = +b;\n      if (a != a) { return +b; }\n      if (b != b) { return +a; }\n      return +C(+a, +b);\n    }\n\n    function fd(a) {\n      a = +a;\n      return a >= 0.0 ? +p(a + .5) : +A(a - .5);\n    }\n\n    function gd(c, d, e) {\n      c = c | 0;\n      d = d | 0;\n      e = e | 0;\n      var f = 0,\n          g = 0,\n          h = 0;\n\n      if ((e | 0) >= 8192) {\n        K(c | 0, d | 0, e | 0) | 0;\n        return c | 0;\n      }\n\n      h = c | 0;\n      g = c + e | 0;\n\n      if ((c & 3) == (d & 3)) {\n        while (c & 3) {\n          if (!e) { return h | 0; }\n          a[c >> 0] = a[d >> 0] | 0;\n          c = c + 1 | 0;\n          d = d + 1 | 0;\n          e = e - 1 | 0;\n        }\n\n        e = g & -4 | 0;\n        f = e - 64 | 0;\n\n        while ((c | 0) <= (f | 0)) {\n          b[c >> 2] = b[d >> 2];\n          b[c + 4 >> 2] = b[d + 4 >> 2];\n          b[c + 8 >> 2] = b[d + 8 >> 2];\n          b[c + 12 >> 2] = b[d + 12 >> 2];\n          b[c + 16 >> 2] = b[d + 16 >> 2];\n          b[c + 20 >> 2] = b[d + 20 >> 2];\n          b[c + 24 >> 2] = b[d + 24 >> 2];\n          b[c + 28 >> 2] = b[d + 28 >> 2];\n          b[c + 32 >> 2] = b[d + 32 >> 2];\n          b[c + 36 >> 2] = b[d + 36 >> 2];\n          b[c + 40 >> 2] = b[d + 40 >> 2];\n          b[c + 44 >> 2] = b[d + 44 >> 2];\n          b[c + 48 >> 2] = b[d + 48 >> 2];\n          b[c + 52 >> 2] = b[d + 52 >> 2];\n          b[c + 56 >> 2] = b[d + 56 >> 2];\n          b[c + 60 >> 2] = b[d + 60 >> 2];\n          c = c + 64 | 0;\n          d = d + 64 | 0;\n        }\n\n        while ((c | 0) < (e | 0)) {\n          b[c >> 2] = b[d >> 2];\n          c = c + 4 | 0;\n          d = d + 4 | 0;\n        }\n      } else {\n        e = g - 4 | 0;\n\n        while ((c | 0) < (e | 0)) {\n          a[c >> 0] = a[d >> 0] | 0;\n          a[c + 1 >> 0] = a[d + 1 >> 0] | 0;\n          a[c + 2 >> 0] = a[d + 2 >> 0] | 0;\n          a[c + 3 >> 0] = a[d + 3 >> 0] | 0;\n          c = c + 4 | 0;\n          d = d + 4 | 0;\n        }\n      }\n\n      while ((c | 0) < (g | 0)) {\n        a[c >> 0] = a[d >> 0] | 0;\n        c = c + 1 | 0;\n        d = d + 1 | 0;\n      }\n\n      return h | 0;\n    }\n\n    function hd(c, d, e) {\n      c = c | 0;\n      d = d | 0;\n      e = e | 0;\n      var f = 0,\n          g = 0,\n          h = 0,\n          i = 0;\n      h = c + e | 0;\n      d = d & 255;\n\n      if ((e | 0) >= 67) {\n        while (c & 3) {\n          a[c >> 0] = d;\n          c = c + 1 | 0;\n        }\n\n        f = h & -4 | 0;\n        i = d | d << 8 | d << 16 | d << 24;\n        g = f - 64 | 0;\n\n        while ((c | 0) <= (g | 0)) {\n          b[c >> 2] = i;\n          b[c + 4 >> 2] = i;\n          b[c + 8 >> 2] = i;\n          b[c + 12 >> 2] = i;\n          b[c + 16 >> 2] = i;\n          b[c + 20 >> 2] = i;\n          b[c + 24 >> 2] = i;\n          b[c + 28 >> 2] = i;\n          b[c + 32 >> 2] = i;\n          b[c + 36 >> 2] = i;\n          b[c + 40 >> 2] = i;\n          b[c + 44 >> 2] = i;\n          b[c + 48 >> 2] = i;\n          b[c + 52 >> 2] = i;\n          b[c + 56 >> 2] = i;\n          b[c + 60 >> 2] = i;\n          c = c + 64 | 0;\n        }\n\n        while ((c | 0) < (f | 0)) {\n          b[c >> 2] = i;\n          c = c + 4 | 0;\n        }\n      }\n\n      while ((c | 0) < (h | 0)) {\n        a[c >> 0] = d;\n        c = c + 1 | 0;\n      }\n\n      return h - e | 0;\n    }\n\n    function id(a) {\n      a = +a;\n      return a >= 0.0 ? +p(a + .5) : +A(a - .5);\n    }\n\n    function jd(a) {\n      a = a | 0;\n      var c = 0,\n          d = 0,\n          e = 0;\n      e = J() | 0;\n      d = b[g >> 2] | 0;\n      c = d + a | 0;\n\n      if ((a | 0) > 0 & (c | 0) < (d | 0) | (c | 0) < 0) {\n        M(c | 0) | 0;\n        I(12);\n        return -1;\n      }\n\n      if ((c | 0) > (e | 0)) { if (!(L(c | 0) | 0)) {\n        I(12);\n        return -1;\n      } }\n      b[g >> 2] = c;\n      return d | 0;\n    } // EMSCRIPTEN_END_FUNCS\n\n\n    return {\n      ___uremdi3: bd,\n      _bitshift64Lshr: cd,\n      _bitshift64Shl: dd,\n      _calloc: Yc,\n      _cellAreaKm2: ub,\n      _cellAreaM2: vb,\n      _cellAreaRads2: tb,\n      _compact: Hb,\n      _destroyLinkedPolygon: jc,\n      _edgeLengthKm: pb,\n      _edgeLengthM: qb,\n      _emscripten_replace_memory: V,\n      _exactEdgeLengthKm: xb,\n      _exactEdgeLengthM: yb,\n      _exactEdgeLengthRads: wb,\n      _experimentalH3ToLocalIj: oc,\n      _experimentalLocalIjToH3: pc,\n      _free: Xc,\n      _geoToH3: Sb,\n      _getDestinationH3IndexFromUnidirectionalEdge: cc,\n      _getH3IndexesFromUnidirectionalEdge: ec,\n      _getH3UnidirectionalEdge: ac,\n      _getH3UnidirectionalEdgeBoundary: gc,\n      _getH3UnidirectionalEdgesFromHexagon: fc,\n      _getOriginH3IndexFromUnidirectionalEdge: bc,\n      _getPentagonIndexes: _b,\n      _getRes0Indexes: va,\n      _h3Distance: qc,\n      _h3GetBaseCell: Ab,\n      _h3GetFaces: Yb,\n      _h3GetResolution: zb,\n      _h3IndexesAreNeighbors: $b,\n      _h3IsPentagon: Fb,\n      _h3IsResClassIII: Kb,\n      _h3IsValid: Bb,\n      _h3Line: sc,\n      _h3LineSize: rc,\n      _h3SetToLinkedGeo: ka,\n      _h3ToCenterChild: Gb,\n      _h3ToChildren: Eb,\n      _h3ToGeo: Vb,\n      _h3ToGeoBoundary: Wb,\n      _h3ToParent: Cb,\n      _h3UnidirectionalEdgeIsValid: dc,\n      _hexAreaKm2: nb,\n      _hexAreaM2: ob,\n      _hexRing: ea,\n      _i64Subtract: _c,\n      _kRing: $,\n      _kRingDistances: aa,\n      _llvm_minnum_f64: ed,\n      _llvm_round_f64: fd,\n      _malloc: Wc,\n      _maxFaceCount: Xb,\n      _maxH3ToChildrenSize: Db,\n      _maxKringSize: _,\n      _maxPolyfillSize: fa,\n      _maxUncompactSize: Jb,\n      _memcpy: gd,\n      _memset: hd,\n      _numHexagons: rb,\n      _pentagonIndexCount: Zb,\n      _pointDistKm: jb,\n      _pointDistM: kb,\n      _pointDistRads: ib,\n      _polyfill: ga,\n      _res0IndexCount: ua,\n      _round: id,\n      _sbrk: jd,\n      _sizeOfCoordIJ: Ec,\n      _sizeOfGeoBoundary: Ac,\n      _sizeOfGeoCoord: zc,\n      _sizeOfGeoPolygon: Cc,\n      _sizeOfGeofence: Bc,\n      _sizeOfH3Index: yc,\n      _sizeOfLinkedGeoPolygon: Dc,\n      _uncompact: Ib,\n      establishStackSpace: Z,\n      stackAlloc: W,\n      stackRestore: Y,\n      stackSave: X\n    };\n  }( // EMSCRIPTEN_END_ASM\n  asmGlobalArg, asmLibraryArg, buffer);\n\n  var ___uremdi3 = Module[\"___uremdi3\"] = asm[\"___uremdi3\"];\n\n  var _bitshift64Lshr = Module[\"_bitshift64Lshr\"] = asm[\"_bitshift64Lshr\"];\n\n  var _bitshift64Shl = Module[\"_bitshift64Shl\"] = asm[\"_bitshift64Shl\"];\n\n  var _calloc = Module[\"_calloc\"] = asm[\"_calloc\"];\n\n  var _cellAreaKm2 = Module[\"_cellAreaKm2\"] = asm[\"_cellAreaKm2\"];\n\n  var _cellAreaM2 = Module[\"_cellAreaM2\"] = asm[\"_cellAreaM2\"];\n\n  var _cellAreaRads2 = Module[\"_cellAreaRads2\"] = asm[\"_cellAreaRads2\"];\n\n  var _compact = Module[\"_compact\"] = asm[\"_compact\"];\n\n  var _destroyLinkedPolygon = Module[\"_destroyLinkedPolygon\"] = asm[\"_destroyLinkedPolygon\"];\n\n  var _edgeLengthKm = Module[\"_edgeLengthKm\"] = asm[\"_edgeLengthKm\"];\n\n  var _edgeLengthM = Module[\"_edgeLengthM\"] = asm[\"_edgeLengthM\"];\n\n  var _emscripten_replace_memory = Module[\"_emscripten_replace_memory\"] = asm[\"_emscripten_replace_memory\"];\n\n  var _exactEdgeLengthKm = Module[\"_exactEdgeLengthKm\"] = asm[\"_exactEdgeLengthKm\"];\n\n  var _exactEdgeLengthM = Module[\"_exactEdgeLengthM\"] = asm[\"_exactEdgeLengthM\"];\n\n  var _exactEdgeLengthRads = Module[\"_exactEdgeLengthRads\"] = asm[\"_exactEdgeLengthRads\"];\n\n  var _experimentalH3ToLocalIj = Module[\"_experimentalH3ToLocalIj\"] = asm[\"_experimentalH3ToLocalIj\"];\n\n  var _experimentalLocalIjToH3 = Module[\"_experimentalLocalIjToH3\"] = asm[\"_experimentalLocalIjToH3\"];\n\n  var _free = Module[\"_free\"] = asm[\"_free\"];\n\n  var _geoToH3 = Module[\"_geoToH3\"] = asm[\"_geoToH3\"];\n\n  var _getDestinationH3IndexFromUnidirectionalEdge = Module[\"_getDestinationH3IndexFromUnidirectionalEdge\"] = asm[\"_getDestinationH3IndexFromUnidirectionalEdge\"];\n\n  var _getH3IndexesFromUnidirectionalEdge = Module[\"_getH3IndexesFromUnidirectionalEdge\"] = asm[\"_getH3IndexesFromUnidirectionalEdge\"];\n\n  var _getH3UnidirectionalEdge = Module[\"_getH3UnidirectionalEdge\"] = asm[\"_getH3UnidirectionalEdge\"];\n\n  var _getH3UnidirectionalEdgeBoundary = Module[\"_getH3UnidirectionalEdgeBoundary\"] = asm[\"_getH3UnidirectionalEdgeBoundary\"];\n\n  var _getH3UnidirectionalEdgesFromHexagon = Module[\"_getH3UnidirectionalEdgesFromHexagon\"] = asm[\"_getH3UnidirectionalEdgesFromHexagon\"];\n\n  var _getOriginH3IndexFromUnidirectionalEdge = Module[\"_getOriginH3IndexFromUnidirectionalEdge\"] = asm[\"_getOriginH3IndexFromUnidirectionalEdge\"];\n\n  var _getPentagonIndexes = Module[\"_getPentagonIndexes\"] = asm[\"_getPentagonIndexes\"];\n\n  var _getRes0Indexes = Module[\"_getRes0Indexes\"] = asm[\"_getRes0Indexes\"];\n\n  var _h3Distance = Module[\"_h3Distance\"] = asm[\"_h3Distance\"];\n\n  var _h3GetBaseCell = Module[\"_h3GetBaseCell\"] = asm[\"_h3GetBaseCell\"];\n\n  var _h3GetFaces = Module[\"_h3GetFaces\"] = asm[\"_h3GetFaces\"];\n\n  var _h3GetResolution = Module[\"_h3GetResolution\"] = asm[\"_h3GetResolution\"];\n\n  var _h3IndexesAreNeighbors = Module[\"_h3IndexesAreNeighbors\"] = asm[\"_h3IndexesAreNeighbors\"];\n\n  var _h3IsPentagon = Module[\"_h3IsPentagon\"] = asm[\"_h3IsPentagon\"];\n\n  var _h3IsResClassIII = Module[\"_h3IsResClassIII\"] = asm[\"_h3IsResClassIII\"];\n\n  var _h3IsValid = Module[\"_h3IsValid\"] = asm[\"_h3IsValid\"];\n\n  var _h3Line = Module[\"_h3Line\"] = asm[\"_h3Line\"];\n\n  var _h3LineSize = Module[\"_h3LineSize\"] = asm[\"_h3LineSize\"];\n\n  var _h3SetToLinkedGeo = Module[\"_h3SetToLinkedGeo\"] = asm[\"_h3SetToLinkedGeo\"];\n\n  var _h3ToCenterChild = Module[\"_h3ToCenterChild\"] = asm[\"_h3ToCenterChild\"];\n\n  var _h3ToChildren = Module[\"_h3ToChildren\"] = asm[\"_h3ToChildren\"];\n\n  var _h3ToGeo = Module[\"_h3ToGeo\"] = asm[\"_h3ToGeo\"];\n\n  var _h3ToGeoBoundary = Module[\"_h3ToGeoBoundary\"] = asm[\"_h3ToGeoBoundary\"];\n\n  var _h3ToParent = Module[\"_h3ToParent\"] = asm[\"_h3ToParent\"];\n\n  var _h3UnidirectionalEdgeIsValid = Module[\"_h3UnidirectionalEdgeIsValid\"] = asm[\"_h3UnidirectionalEdgeIsValid\"];\n\n  var _hexAreaKm2 = Module[\"_hexAreaKm2\"] = asm[\"_hexAreaKm2\"];\n\n  var _hexAreaM2 = Module[\"_hexAreaM2\"] = asm[\"_hexAreaM2\"];\n\n  var _hexRing = Module[\"_hexRing\"] = asm[\"_hexRing\"];\n\n  var _i64Subtract = Module[\"_i64Subtract\"] = asm[\"_i64Subtract\"];\n\n  var _kRing = Module[\"_kRing\"] = asm[\"_kRing\"];\n\n  var _kRingDistances = Module[\"_kRingDistances\"] = asm[\"_kRingDistances\"];\n\n  var _llvm_minnum_f64 = Module[\"_llvm_minnum_f64\"] = asm[\"_llvm_minnum_f64\"];\n\n  var _llvm_round_f64 = Module[\"_llvm_round_f64\"] = asm[\"_llvm_round_f64\"];\n\n  var _malloc = Module[\"_malloc\"] = asm[\"_malloc\"];\n\n  var _maxFaceCount = Module[\"_maxFaceCount\"] = asm[\"_maxFaceCount\"];\n\n  var _maxH3ToChildrenSize = Module[\"_maxH3ToChildrenSize\"] = asm[\"_maxH3ToChildrenSize\"];\n\n  var _maxKringSize = Module[\"_maxKringSize\"] = asm[\"_maxKringSize\"];\n\n  var _maxPolyfillSize = Module[\"_maxPolyfillSize\"] = asm[\"_maxPolyfillSize\"];\n\n  var _maxUncompactSize = Module[\"_maxUncompactSize\"] = asm[\"_maxUncompactSize\"];\n\n  var _memcpy = Module[\"_memcpy\"] = asm[\"_memcpy\"];\n\n  var _memset = Module[\"_memset\"] = asm[\"_memset\"];\n\n  var _numHexagons = Module[\"_numHexagons\"] = asm[\"_numHexagons\"];\n\n  var _pentagonIndexCount = Module[\"_pentagonIndexCount\"] = asm[\"_pentagonIndexCount\"];\n\n  var _pointDistKm = Module[\"_pointDistKm\"] = asm[\"_pointDistKm\"];\n\n  var _pointDistM = Module[\"_pointDistM\"] = asm[\"_pointDistM\"];\n\n  var _pointDistRads = Module[\"_pointDistRads\"] = asm[\"_pointDistRads\"];\n\n  var _polyfill = Module[\"_polyfill\"] = asm[\"_polyfill\"];\n\n  var _res0IndexCount = Module[\"_res0IndexCount\"] = asm[\"_res0IndexCount\"];\n\n  var _round = Module[\"_round\"] = asm[\"_round\"];\n\n  var _sbrk = Module[\"_sbrk\"] = asm[\"_sbrk\"];\n\n  var _sizeOfCoordIJ = Module[\"_sizeOfCoordIJ\"] = asm[\"_sizeOfCoordIJ\"];\n\n  var _sizeOfGeoBoundary = Module[\"_sizeOfGeoBoundary\"] = asm[\"_sizeOfGeoBoundary\"];\n\n  var _sizeOfGeoCoord = Module[\"_sizeOfGeoCoord\"] = asm[\"_sizeOfGeoCoord\"];\n\n  var _sizeOfGeoPolygon = Module[\"_sizeOfGeoPolygon\"] = asm[\"_sizeOfGeoPolygon\"];\n\n  var _sizeOfGeofence = Module[\"_sizeOfGeofence\"] = asm[\"_sizeOfGeofence\"];\n\n  var _sizeOfH3Index = Module[\"_sizeOfH3Index\"] = asm[\"_sizeOfH3Index\"];\n\n  var _sizeOfLinkedGeoPolygon = Module[\"_sizeOfLinkedGeoPolygon\"] = asm[\"_sizeOfLinkedGeoPolygon\"];\n\n  var _uncompact = Module[\"_uncompact\"] = asm[\"_uncompact\"];\n\n  var establishStackSpace = Module[\"establishStackSpace\"] = asm[\"establishStackSpace\"];\n  var stackAlloc = Module[\"stackAlloc\"] = asm[\"stackAlloc\"];\n  var stackRestore = Module[\"stackRestore\"] = asm[\"stackRestore\"];\n  var stackSave = Module[\"stackSave\"] = asm[\"stackSave\"];\n  Module[\"asm\"] = asm;\n  Module[\"cwrap\"] = cwrap;\n  Module[\"setValue\"] = setValue;\n  Module[\"getValue\"] = getValue;\n  Module[\"getTempRet0\"] = getTempRet0;\n\n  if (memoryInitializer) {\n    if (!isDataURI(memoryInitializer)) {\n      memoryInitializer = locateFile(memoryInitializer);\n    }\n\n    {\n      addRunDependency(\"memory initializer\");\n\n      var applyMemoryInitializer = function (data) {\n        if (data.byteLength) { data = new Uint8Array(data); }\n        HEAPU8.set(data, GLOBAL_BASE);\n        if (Module[\"memoryInitializerRequest\"]) { delete Module[\"memoryInitializerRequest\"].response; }\n        removeRunDependency(\"memory initializer\");\n      };\n\n      var doBrowserLoad = function () {\n        readAsync(memoryInitializer, applyMemoryInitializer, function () {\n          throw \"could not load memory initializer \" + memoryInitializer;\n        });\n      };\n\n      var memoryInitializerBytes = tryParseAsDataURI(memoryInitializer);\n\n      if (memoryInitializerBytes) {\n        applyMemoryInitializer(memoryInitializerBytes.buffer);\n      } else if (Module[\"memoryInitializerRequest\"]) {\n        var useRequest = function () {\n          var request = Module[\"memoryInitializerRequest\"];\n          var response = request.response;\n\n          if (request.status !== 200 && request.status !== 0) {\n            var data = tryParseAsDataURI(Module[\"memoryInitializerRequestURL\"]);\n\n            if (data) {\n              response = data.buffer;\n            } else {\n              console.warn(\"a problem seems to have happened with Module.memoryInitializerRequest, status: \" + request.status + \", retrying \" + memoryInitializer);\n              doBrowserLoad();\n              return;\n            }\n          }\n\n          applyMemoryInitializer(response);\n        };\n\n        if (Module[\"memoryInitializerRequest\"].response) {\n          setTimeout(useRequest, 0);\n        } else {\n          Module[\"memoryInitializerRequest\"].addEventListener(\"load\", useRequest);\n        }\n      } else {\n        doBrowserLoad();\n      }\n    }\n  }\n\n  var calledRun;\n\n  dependenciesFulfilled = function runCaller() {\n    if (!calledRun) { run(); }\n    if (!calledRun) { dependenciesFulfilled = runCaller; }\n  };\n\n  function run(args) {\n    args = args || arguments_;\n\n    if (runDependencies > 0) {\n      return;\n    }\n\n    preRun();\n    if (runDependencies > 0) { return; }\n\n    function doRun() {\n      if (calledRun) { return; }\n      calledRun = true;\n      if (ABORT) { return; }\n      initRuntime();\n      preMain();\n      if (Module[\"onRuntimeInitialized\"]) { Module[\"onRuntimeInitialized\"](); }\n      postRun();\n    }\n\n    if (Module[\"setStatus\"]) {\n      Module[\"setStatus\"](\"Running...\");\n      setTimeout(function () {\n        setTimeout(function () {\n          Module[\"setStatus\"](\"\");\n        }, 1);\n        doRun();\n      }, 1);\n    } else {\n      doRun();\n    }\n  }\n\n  Module[\"run\"] = run;\n\n  function abort(what) {\n    if (Module[\"onAbort\"]) {\n      Module[\"onAbort\"](what);\n    }\n\n    what += \"\";\n    out(what);\n    err(what);\n    ABORT = true;\n    throw \"abort(\" + what + \"). Build with -s ASSERTIONS=1 for more info.\";\n  }\n\n  Module[\"abort\"] = abort;\n\n  if (Module[\"preInit\"]) {\n    if (typeof Module[\"preInit\"] == \"function\") { Module[\"preInit\"] = [Module[\"preInit\"]]; }\n\n    while (Module[\"preInit\"].length > 0) {\n      Module[\"preInit\"].pop()();\n    }\n  }\n  run();\n  return libh3;\n}(typeof libh3 === 'object' ? libh3 : {});\n\n/*\n * Copyright 2018-2019 Uber Technologies, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *         http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n// Define the C bindings for the h3 library\n// Add some aliases to make the function definitions more intelligible\nvar NUMBER = 'number';\nvar BOOLEAN = NUMBER;\nvar H3_LOWER = NUMBER;\nvar H3_UPPER = NUMBER;\nvar RESOLUTION = NUMBER;\nvar POINTER = NUMBER; // Define the bindings to functions in the C lib. Functions are defined as\n// [name, return type, [arg types]]. You must run `npm run build-emscripten`\n// before new functions added here will be available.\n\nvar BINDINGS = [// The size functions are inserted via build/sizes.h\n['sizeOfH3Index', NUMBER], ['sizeOfGeoCoord', NUMBER], ['sizeOfGeoBoundary', NUMBER], ['sizeOfGeoPolygon', NUMBER], ['sizeOfGeofence', NUMBER], ['sizeOfLinkedGeoPolygon', NUMBER], ['sizeOfCoordIJ', NUMBER], // The remaining functions are defined in the core lib in h3Api.h\n['h3IsValid', BOOLEAN, [H3_LOWER, H3_UPPER]], ['geoToH3', H3_LOWER, [NUMBER, NUMBER, RESOLUTION]], ['h3ToGeo', null, [H3_LOWER, H3_UPPER, POINTER]], ['h3ToGeoBoundary', null, [H3_LOWER, H3_UPPER, POINTER]], ['maxKringSize', NUMBER, [NUMBER]], ['kRing', null, [H3_LOWER, H3_UPPER, NUMBER, POINTER]], ['kRingDistances', null, [H3_LOWER, H3_UPPER, NUMBER, POINTER, POINTER]], ['hexRing', null, [H3_LOWER, H3_UPPER, NUMBER, POINTER]], ['maxPolyfillSize', NUMBER, [POINTER, RESOLUTION]], ['polyfill', null, [POINTER, RESOLUTION, POINTER]], ['h3SetToLinkedGeo', null, [POINTER, NUMBER, POINTER]], ['destroyLinkedPolygon', null, [POINTER]], ['compact', NUMBER, [POINTER, POINTER, NUMBER]], ['uncompact', NUMBER, [POINTER, NUMBER, POINTER, NUMBER, RESOLUTION]], ['maxUncompactSize', NUMBER, [POINTER, NUMBER, RESOLUTION]], ['h3IsPentagon', BOOLEAN, [H3_LOWER, H3_UPPER]], ['h3IsResClassIII', BOOLEAN, [H3_LOWER, H3_UPPER]], ['h3GetBaseCell', NUMBER, [H3_LOWER, H3_UPPER]], ['h3GetResolution', NUMBER, [H3_LOWER, H3_UPPER]], ['maxFaceCount', NUMBER, [H3_LOWER, H3_UPPER]], ['h3GetFaces', null, [H3_LOWER, H3_UPPER, POINTER]], ['h3ToParent', H3_LOWER, [H3_LOWER, H3_UPPER, RESOLUTION]], ['h3ToChildren', null, [H3_LOWER, H3_UPPER, RESOLUTION, POINTER]], ['h3ToCenterChild', H3_LOWER, [H3_LOWER, H3_UPPER, RESOLUTION]], ['maxH3ToChildrenSize', NUMBER, [H3_LOWER, H3_UPPER, RESOLUTION]], ['h3IndexesAreNeighbors', BOOLEAN, [H3_LOWER, H3_UPPER, H3_LOWER, H3_UPPER]], ['getH3UnidirectionalEdge', H3_LOWER, [H3_LOWER, H3_UPPER, H3_LOWER, H3_UPPER]], ['getOriginH3IndexFromUnidirectionalEdge', H3_LOWER, [H3_LOWER, H3_UPPER]], ['getDestinationH3IndexFromUnidirectionalEdge', H3_LOWER, [H3_LOWER, H3_UPPER]], ['h3UnidirectionalEdgeIsValid', BOOLEAN, [H3_LOWER, H3_UPPER]], ['getH3IndexesFromUnidirectionalEdge', null, [H3_LOWER, H3_UPPER, POINTER]], ['getH3UnidirectionalEdgesFromHexagon', null, [H3_LOWER, H3_UPPER, POINTER]], ['getH3UnidirectionalEdgeBoundary', null, [H3_LOWER, H3_UPPER, POINTER]], ['h3Distance', NUMBER, [H3_LOWER, H3_UPPER, H3_LOWER, H3_UPPER]], ['h3Line', NUMBER, [H3_LOWER, H3_UPPER, H3_LOWER, H3_UPPER, POINTER]], ['h3LineSize', NUMBER, [H3_LOWER, H3_UPPER, H3_LOWER, H3_UPPER]], ['experimentalH3ToLocalIj', NUMBER, [H3_LOWER, H3_UPPER, H3_LOWER, H3_UPPER, POINTER]], ['experimentalLocalIjToH3', NUMBER, [H3_LOWER, H3_UPPER, POINTER, POINTER]], ['hexAreaM2', NUMBER, [RESOLUTION]], ['hexAreaKm2', NUMBER, [RESOLUTION]], ['edgeLengthM', NUMBER, [RESOLUTION]], ['edgeLengthKm', NUMBER, [RESOLUTION]], ['pointDistM', NUMBER, [POINTER, POINTER]], ['pointDistKm', NUMBER, [POINTER, POINTER]], ['pointDistRads', NUMBER, [POINTER, POINTER]], ['cellAreaM2', NUMBER, [H3_LOWER, H3_UPPER]], ['cellAreaKm2', NUMBER, [H3_LOWER, H3_UPPER]], ['cellAreaRads2', NUMBER, [H3_LOWER, H3_UPPER]], ['exactEdgeLengthM', NUMBER, [H3_LOWER, H3_UPPER]], ['exactEdgeLengthKm', NUMBER, [H3_LOWER, H3_UPPER]], ['exactEdgeLengthRads', NUMBER, [H3_LOWER, H3_UPPER]], ['numHexagons', NUMBER, [RESOLUTION]], ['getRes0Indexes', null, [POINTER]], ['res0IndexCount', NUMBER], ['getPentagonIndexes', null, [NUMBER, POINTER]], ['pentagonIndexCount', NUMBER]];\n\n/*\n * Copyright 2018-2019 Uber Technologies, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *         http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nvar H3 = {}; // Create the bound functions themselves\n\nBINDINGS.forEach(function bind(def) {\n  H3[def[0]] = libh3.cwrap.apply(libh3, def);\n}); // Alias the hexidecimal base for legibility\n\nvar BASE_16 = 16; // ----------------------------------------------------------------------------\n// Byte size imports\n\nvar SZ_INT = 4;\nvar SZ_PTR = 4;\nvar SZ_DBL = 8;\nvar SZ_H3INDEX = H3.sizeOfH3Index();\nvar SZ_GEOCOORD = H3.sizeOfGeoCoord();\nvar SZ_GEOBOUNDARY = H3.sizeOfGeoBoundary();\nvar SZ_GEOPOLYGON = H3.sizeOfGeoPolygon();\nvar SZ_GEOFENCE = H3.sizeOfGeofence();\nvar SZ_LINKED_GEOPOLYGON = H3.sizeOfLinkedGeoPolygon();\nvar SZ_COORDIJ = H3.sizeOfCoordIJ(); // ----------------------------------------------------------------------------\n// Custom types\n\n/**\n * 64-bit hexidecimal string representation of an H3 index\n * @static\n * @typedef {string} H3Index\n */\n\n/**\n * 64-bit hexidecimal string representation of an H3 index,\n * or two 32-bit integers in little endian order in an array.\n * @static\n * @typedef {string | number[]} H3IndexInput\n */\n\n/**\n * Coordinates as an `{i, j}` pair\n * @static\n * @typedef CoordIJ\n * @type {Object}\n * @property {number} i\n * @property {number} j\n */\n// ----------------------------------------------------------------------------\n// Unit constants\n\n/**\n * Length/Area units\n * @static\n * @typedef UNITS\n * @type {Object}\n * @property {string} m\n * @property {string} m2\n * @property {string} km\n * @property {string} km2\n * @property {string} rads\n * @property {string} rads2\n */\n\nvar UNITS = {\n  m: 'm',\n  m2: 'm2',\n  km: 'km',\n  km2: 'km2',\n  rads: 'rads',\n  rads2: 'rads2'\n}; // ----------------------------------------------------------------------------\n// Utilities and helpers\n\n/**\n * Validate a resolution, throwing an error if invalid\n * @private\n * @param  {mixed} res Value to validate\n * @throws {Error}     Error if invalid\n */\n\nfunction validateRes(res) {\n  if (typeof res !== 'number' || res < 0 || res > 15 || Math.floor(res) !== res) {\n    throw new Error((\"Invalid resolution: \" + res));\n  }\n}\n\nvar INVALID_HEXIDECIMAL_CHAR = /[^0-9a-fA-F]/;\n/**\n * Convert an H3 index (64-bit hexidecimal string) into a \"split long\" - a pair of 32-bit ints\n * @private\n * @param  {H3IndexInput} h3Index  H3 index to check\n * @return {number[]}         A two-element array with 32 lower bits and 32 upper bits\n */\n\nfunction h3IndexToSplitLong(h3Index) {\n  if (Array.isArray(h3Index) && h3Index.length === 2 && Number.isInteger(h3Index[0]) && Number.isInteger(h3Index[1])) {\n    return h3Index;\n  }\n\n  if (typeof h3Index !== 'string' || INVALID_HEXIDECIMAL_CHAR.test(h3Index)) {\n    return [0, 0];\n  }\n\n  var upper = parseInt(h3Index.substring(0, h3Index.length - 8), BASE_16);\n  var lower = parseInt(h3Index.substring(h3Index.length - 8), BASE_16);\n  return [lower, upper];\n}\n/**\n * Convert a 32-bit int to a hexdecimal string\n * @private\n * @param  {number} num  Integer to convert\n * @return {H3Index}     Hexidecimal string\n */\n\nfunction hexFrom32Bit(num) {\n  if (num >= 0) {\n    return num.toString(BASE_16);\n  } // Handle negative numbers\n\n\n  num = num & 0x7fffffff;\n  var tempStr = zeroPad(8, num.toString(BASE_16));\n  var topNum = (parseInt(tempStr[0], BASE_16) + 8).toString(BASE_16);\n  tempStr = topNum + tempStr.substring(1);\n  return tempStr;\n}\n/**\n * Get a H3 index from a split long (pair of 32-bit ints)\n * @private\n * @param  {number} lower Lower 32 bits\n * @param  {number} upper Upper 32 bits\n * @return {H3Index}       H3 index\n */\n\n\nfunction splitLongToh3Index(lower, upper) {\n  return hexFrom32Bit(upper) + zeroPad(8, hexFrom32Bit(lower));\n}\n/**\n * Zero-pad a string to a given length\n * @private\n * @param  {number} fullLen Target length\n * @param  {string} numStr  String to zero-pad\n * @return {string}         Zero-padded string\n */\n\nfunction zeroPad(fullLen, numStr) {\n  var numZeroes = fullLen - numStr.length;\n  var outStr = '';\n\n  for (var i = 0; i < numZeroes; i++) {\n    outStr += '0';\n  }\n\n  outStr = outStr + numStr;\n  return outStr;\n}\n/**\n * Populate a C-appropriate Geofence struct from a polygon array\n * @private\n * @param  {Array[]} polygonArray Polygon, as an array of coordinate pairs\n * @param  {number}  geofence     C pointer to a Geofence struct\n * @param  {boolean} isGeoJson    Whether coordinates are in [lng, lat] order per GeoJSON spec\n * @return {number}               C pointer to populated Geofence struct\n */\n\n\nfunction polygonArrayToGeofence(polygonArray, geofence, isGeoJson) {\n  var numVerts = polygonArray.length;\n\n  var geoCoordArray = libh3._calloc(numVerts, SZ_GEOCOORD); // Support [lng, lat] pairs if GeoJSON is specified\n\n\n  var latIndex = isGeoJson ? 1 : 0;\n  var lngIndex = isGeoJson ? 0 : 1;\n\n  for (var i = 0; i < numVerts * 2; i += 2) {\n    libh3.HEAPF64.set([polygonArray[i / 2][latIndex], polygonArray[i / 2][lngIndex]].map(degsToRads), geoCoordArray / SZ_DBL + i);\n  }\n\n  libh3.HEAPU32.set([numVerts, geoCoordArray], geofence / SZ_INT);\n  return geofence;\n}\n/**\n * Create a C-appropriate GeoPolygon struct from an array of polygons\n * @private\n * @param  {Array[]} coordinates  Array of polygons, each an array of coordinate pairs\n * @param  {boolean} isGeoJson    Whether coordinates are in [lng, lat] order per GeoJSON spec\n * @return {number}               C pointer to populated GeoPolygon struct\n */\n\n\nfunction coordinatesToGeoPolygon(coordinates, isGeoJson) {\n  // Any loops beyond the first loop are holes\n  var numHoles = coordinates.length - 1;\n\n  var geoPolygon = libh3._calloc(SZ_GEOPOLYGON); // Byte positions within the struct\n\n\n  var geofenceOffset = 0;\n  var numHolesOffset = geofenceOffset + SZ_GEOFENCE;\n  var holesOffset = numHolesOffset + SZ_INT; // geofence is first part of struct\n\n  polygonArrayToGeofence(coordinates[0], geoPolygon + geofenceOffset, isGeoJson);\n  var holes;\n\n  if (numHoles > 0) {\n    holes = libh3._calloc(numHoles, SZ_GEOFENCE);\n\n    for (var i = 0; i < numHoles; i++) {\n      polygonArrayToGeofence(coordinates[i + 1], holes + SZ_GEOFENCE * i, isGeoJson);\n    }\n  }\n\n  libh3.setValue(geoPolygon + numHolesOffset, numHoles, 'i32');\n  libh3.setValue(geoPolygon + holesOffset, holes, 'i32');\n  return geoPolygon;\n}\n/**\n * Free memory allocated for a GeoPolygon struct. It is an error to access the struct\n * after passing it to this method.\n * @private\n * @return {number} geoPolygon C pointer to populated GeoPolygon struct\n */\n\n\nfunction destroyGeoPolygon(geoPolygon) {\n  // Byte positions within the struct\n  var geofenceOffset = 0;\n  var numHolesOffset = geofenceOffset + SZ_GEOFENCE;\n  var holesOffset = numHolesOffset + SZ_INT; // Offset of the geofence vertex array pointer within the Geofence struct\n\n  var geofenceArrayOffset = SZ_INT; // Free the outer vertex array\n\n  libh3._free(libh3.getValue(geoPolygon + geofenceOffset + geofenceArrayOffset, 'i8*')); // Free the vertex array for the holes, if any\n\n\n  var numHoles = libh3.getValue(geoPolygon + numHolesOffset, 'i32');\n\n  if (numHoles > 0) {\n    var holes = libh3.getValue(geoPolygon + holesOffset, 'i32');\n\n    for (var i = 0; i < numHoles; i++) {\n      libh3._free(libh3.getValue(holes + SZ_GEOFENCE * i + geofenceArrayOffset, 'i8*'));\n    }\n\n    libh3._free(holes);\n  }\n\n  libh3._free(geoPolygon);\n}\n/**\n * Read a long value, returning the lower and upper portions as separate 32-bit integers.\n * Because the upper bits are returned via side effect, the argument to this function is\n * intended to be the invocation that caused the side effect, e.g. readLong(H3.getSomeLong())\n * @private\n * @param  {number} invocation Invoked function returning a long value. The actual return\n *                             value of these functions is a 32-bit integer.\n * @return {number}            Long value as a [lower, upper] pair\n */\n\n\nfunction readLong(invocation) {\n  // Upper 32-bits of the long set via side-effect\n  var upper = libh3.getTempRet0();\n  return [invocation, upper];\n}\n/**\n * Read an H3 index from a C return value. As with readLong, the argument to this function\n * is intended to be an invocation, e.g. readH3Index(H3.getSomeAddress()), to help ensure that\n * the temp value storing the upper bits of the long is still set.\n * @private\n * @param  {number} invocation  Invoked function returning a single H3 index\n * @return {H3Index}            H3 index, or null if index was invalid\n */\n\n\nfunction readH3Index(invocation) {\n  var ref = readLong(invocation);\n  var lower = ref[0];\n  var upper = ref[1]; // The lower bits are allowed to be 0s, but if the upper bits are 0\n  // this represents an invalid H3 index\n\n  return upper ? splitLongToh3Index(lower, upper) : null;\n}\n/**\n * Read an H3 index from a pointer to C memory.\n * @private\n * @param  {number} cAddress  Pointer to allocated C memory\n * @param {number} offset     Offset, in number of H3 indexes, in case we're\n *                            reading an array\n * @return {H3Index}          H3 index, or null if index was invalid\n */\n\n\nfunction readH3IndexFromPointer(cAddress, offset) {\n  if ( offset === void 0 ) offset = 0;\n\n  var lower = libh3.getValue(cAddress + SZ_INT * offset * 2, 'i32');\n  var upper = libh3.getValue(cAddress + SZ_INT * (offset * 2 + 1), 'i32'); // The lower bits are allowed to be 0s, but if the upper bits are 0\n  // this represents an invalid H3 index\n\n  return upper ? splitLongToh3Index(lower, upper) : null;\n}\n/**\n * Store an H3 index in C memory. Primarily used as an efficient way to\n * write sets of hexagons.\n * @private\n * @param  {H3IndexInput} h3Index  H3 index to store\n * @param  {number} cAddress  Pointer to allocated C memory\n * @param {number} offset     Offset, in number of H3 indexes from beginning\n *                            of the current array\n */\n\n\nfunction storeH3Index(h3Index, cAddress, offset) {\n  // HEAPU32 is a typed array projection on the index space\n  // as unsigned 32-bit integers. This means the index needs\n  // to be divided by SZ_INT (4) to access correctly. Also,\n  // the H3 index is 64 bits, so we skip by twos as we're writing\n  // to 32-bit integers in the proper order.\n  libh3.HEAPU32.set(h3IndexToSplitLong(h3Index), cAddress / SZ_INT + 2 * offset);\n}\n/**\n * Read an array of 64-bit H3 indexes from C and convert to a JS array of\n * H3 index strings\n * @private\n * @param  {number} cAddress    Pointer to C ouput array\n * @param  {number} maxCount    Max number of hexagons in array. Hexagons with\n *                              the value 0 will be skipped, so this isn't\n *                              necessarily the length of the output array.\n * @return {H3Index[]}          Array of H3 indexes\n */\n\n\nfunction readArrayOfHexagons(cAddress, maxCount) {\n  var out = [];\n\n  for (var i = 0; i < maxCount; i++) {\n    var h3Index = readH3IndexFromPointer(cAddress, i);\n\n    if (h3Index !== null) {\n      out.push(h3Index);\n    }\n  }\n\n  return out;\n}\n/**\n * Store an array of H3 index strings as a C array of 64-bit integers.\n * @private\n * @param  {number} cAddress    Pointer to C input array\n * @param  {H3IndexInput[]} hexagons H3 indexes to pass to the C lib\n */\n\n\nfunction storeArrayOfHexagons(cAddress, hexagons) {\n  // Assuming the cAddress points to an already appropriately\n  // allocated space\n  var count = hexagons.length;\n\n  for (var i = 0; i < count; i++) {\n    storeH3Index(hexagons[i], cAddress, i);\n  }\n}\n/**\n * Populate a C-appropriate GeoCoord struct from a [lat, lng] array\n * @private\n * @param {number} lat     Coordinate latitude\n * @param {number} lng     Coordinate longitude\n * @return {number}        C pointer to populated GeoCoord struct\n */\n\n\nfunction storeGeoCoord(lat, lng) {\n  var geoCoord = libh3._calloc(1, SZ_GEOCOORD);\n\n  libh3.HEAPF64.set([lat, lng].map(degsToRads), geoCoord / SZ_DBL);\n  return geoCoord;\n}\n\nfunction readSingleCoord(cAddress) {\n  return radsToDegs(libh3.getValue(cAddress, 'double'));\n}\n/**\n * Read a GeoCoord from C and return a [lat, lng] pair.\n * @private\n * @param  {number} cAddress    Pointer to C struct\n * @return {number[]}           [lat, lng] pair\n */\n\n\nfunction readGeoCoord(cAddress) {\n  return [readSingleCoord(cAddress), readSingleCoord(cAddress + SZ_DBL)];\n}\n/**\n * Read a GeoCoord from C and return a GeoJSON-style [lng, lat] pair.\n * @private\n * @param  {number} cAddress    Pointer to C struct\n * @return {number[]}           [lng, lat] pair\n */\n\n\nfunction readGeoCoordGeoJson(cAddress) {\n  return [readSingleCoord(cAddress + SZ_DBL), readSingleCoord(cAddress)];\n}\n/**\n * Read the GeoBoundary structure into a list of geo coordinate pairs\n * @private\n * @param {number}  geoBoundary     C pointer to GeoBoundary struct\n * @param {boolean} geoJsonCoords   Whether to provide GeoJSON coordinate order: [lng, lat]\n * @param {boolean} closedLoop      Whether to close the loop\n * @return {Array[]}                Array of geo coordinate pairs\n */\n\n\nfunction readGeoBoundary(geoBoundary, geoJsonCoords, closedLoop) {\n  var numVerts = libh3.getValue(geoBoundary, 'i32'); // Note that though numVerts is an int, the coordinate doubles have to be\n  // aligned to 8 bytes, hence the 8-byte offset here\n\n  var vertsPos = geoBoundary + SZ_DBL;\n  var out = []; // Support [lng, lat] pairs if GeoJSON is specified\n\n  var readCoord = geoJsonCoords ? readGeoCoordGeoJson : readGeoCoord;\n\n  for (var i = 0; i < numVerts * 2; i += 2) {\n    out.push(readCoord(vertsPos + SZ_DBL * i));\n  }\n\n  if (closedLoop) {\n    // Close loop if GeoJSON is specified\n    out.push(out[0]);\n  }\n\n  return out;\n}\n/**\n * Read the LinkedGeoPolygon structure into a nested array of MultiPolygon coordinates\n * @private\n * @param {number}  polygon         C pointer to LinkedGeoPolygon struct\n * @param {boolean} formatAsGeoJson Whether to provide GeoJSON output: [lng, lat], closed loops\n * @return {number[][][][]}         MultiPolygon-style output.\n */\n\n\nfunction readMultiPolygon(polygon, formatAsGeoJson) {\n  var output = [];\n  var readCoord = formatAsGeoJson ? readGeoCoordGeoJson : readGeoCoord;\n  var loops;\n  var loop;\n  var coords;\n  var coord; // Loop through the linked structure, building the output\n\n  while (polygon) {\n    output.push(loops = []); // Follow ->first pointer\n\n    loop = libh3.getValue(polygon, 'i8*');\n\n    while (loop) {\n      loops.push(coords = []); // Follow ->first pointer\n\n      coord = libh3.getValue(loop, 'i8*');\n\n      while (coord) {\n        coords.push(readCoord(coord)); // Follow ->next pointer\n\n        coord = libh3.getValue(coord + SZ_DBL * 2, 'i8*');\n      }\n\n      if (formatAsGeoJson) {\n        // Close loop if GeoJSON is requested\n        coords.push(coords[0]);\n      } // Follow ->next pointer\n\n\n      loop = libh3.getValue(loop + SZ_PTR * 2, 'i8*');\n    } // Follow ->next pointer\n\n\n    polygon = libh3.getValue(polygon + SZ_PTR * 2, 'i8*');\n  }\n\n  return output;\n}\n/**\n * Read a CoordIJ from C and return an {i, j} pair.\n * @private\n * @param  {number} cAddress    Pointer to C struct\n * @return {CoordIJ}            {i, j} pair\n */\n\n\nfunction readCoordIJ(cAddress) {\n  return {\n    i: libh3.getValue(cAddress, 'i32'),\n    j: libh3.getValue(cAddress + SZ_INT, 'i32')\n  };\n}\n/**\n * Store an {i, j} pair to a C CoordIJ struct.\n * @private\n * @param  {number} cAddress    Pointer to C struct\n * @return {CoordIJ}            {i, j} pair\n */\n\n\nfunction storeCoordIJ(cAddress, ref) {\n  var i = ref.i;\n  var j = ref.j;\n\n  libh3.setValue(cAddress, i, 'i32');\n  libh3.setValue(cAddress + SZ_INT, j, 'i32');\n}\n/**\n * Read an array of positive integers array from C. Negative\n * values are considered invalid and ignored in output.\n * @private\n * @param  {number} cAddress    Pointer to C array\n * @param  {number} count       Length of C array\n * @return {number[]}           Javascript integer array\n */\n\n\nfunction readArrayOfPositiveIntegers(cAddress, count) {\n  var out = [];\n\n  for (var i = 0; i < count; i++) {\n    var int = libh3.getValue(cAddress + SZ_INT * i, 'i32');\n\n    if (int >= 0) {\n      out.push(int);\n    }\n  }\n\n  return out;\n} // ----------------------------------------------------------------------------\n// Public API functions: Core\n\n/**\n * Whether a given string represents a valid H3 index\n * @static\n * @param  {H3IndexInput} h3Index  H3 index to check\n * @return {boolean}          Whether the index is valid\n */\n\n\nfunction h3IsValid(h3Index) {\n  var ref = h3IndexToSplitLong(h3Index);\n  var lower = ref[0];\n  var upper = ref[1];\n  return Boolean(H3.h3IsValid(lower, upper));\n}\n/**\n * Whether the given H3 index is a pentagon\n * @static\n * @param  {H3IndexInput} h3Index  H3 index to check\n * @return {boolean}          isPentagon\n */\n\nfunction h3IsPentagon(h3Index) {\n  var ref = h3IndexToSplitLong(h3Index);\n  var lower = ref[0];\n  var upper = ref[1];\n  return Boolean(H3.h3IsPentagon(lower, upper));\n}\n/**\n * Whether the given H3 index is in a Class III resolution (rotated versus\n * the icosahedron and subject to shape distortion adding extra points on\n * icosahedron edges, making them not true hexagons).\n * @static\n * @param  {H3IndexInput} h3Index  H3 index to check\n * @return {boolean}          isResClassIII\n */\n\nfunction h3IsResClassIII(h3Index) {\n  var ref = h3IndexToSplitLong(h3Index);\n  var lower = ref[0];\n  var upper = ref[1];\n  return Boolean(H3.h3IsResClassIII(lower, upper));\n}\n/**\n * Get the number of the base cell for a given H3 index\n * @static\n * @param  {H3IndexInput} h3Index  H3 index to get the base cell for\n * @return {number}           Index of the base cell (0-121)\n */\n\nfunction h3GetBaseCell(h3Index) {\n  var ref = h3IndexToSplitLong(h3Index);\n  var lower = ref[0];\n  var upper = ref[1];\n  return H3.h3GetBaseCell(lower, upper);\n}\n/**\n * Get the indices of all icosahedron faces intersected by a given H3 index\n * @static\n * @param  {H3IndexInput} h3Index  H3 index to get faces for\n * @return {number[]}         Indices (0-19) of all intersected faces\n */\n\nfunction h3GetFaces(h3Index) {\n  var ref = h3IndexToSplitLong(h3Index);\n  var lower = ref[0];\n  var upper = ref[1];\n  var count = H3.maxFaceCount(lower, upper);\n\n  var faces = libh3._malloc(SZ_INT * count);\n\n  H3.h3GetFaces(lower, upper, faces);\n  var out = readArrayOfPositiveIntegers(faces, count);\n\n  libh3._free(faces);\n\n  return out;\n}\n/**\n * Returns the resolution of an H3 index\n * @static\n * @param  {H3IndexInput} h3Index H3 index to get resolution\n * @return {number}          The number (0-15) resolution, or -1 if invalid\n */\n\nfunction h3GetResolution(h3Index) {\n  var ref = h3IndexToSplitLong(h3Index);\n  var lower = ref[0];\n  var upper = ref[1];\n\n  if (!H3.h3IsValid(lower, upper)) {\n    // Compatability with stated API\n    return -1;\n  }\n\n  return H3.h3GetResolution(lower, upper);\n}\n/**\n * Get the hexagon containing a lat,lon point\n * @static\n * @param  {number} lat Latitude of point\n * @param  {number} lng Longtitude of point\n * @param  {number} res Resolution of hexagons to return\n * @return {H3Index}    H3 index\n */\n\nfunction geoToH3(lat, lng, res) {\n  var latlng = libh3._malloc(SZ_GEOCOORD); // Slightly more efficient way to set the memory\n\n\n  libh3.HEAPF64.set([lat, lng].map(degsToRads), latlng / SZ_DBL); // Read value as a split long\n\n  var h3Index = readH3Index(H3.geoToH3(latlng, res));\n\n  libh3._free(latlng);\n\n  return h3Index;\n}\n/**\n * Get the lat,lon center of a given hexagon\n * @static\n * @param  {H3IndexInput} h3Index  H3 index\n * @return {number[]}         Point as a [lat, lng] pair\n */\n\nfunction h3ToGeo(h3Index) {\n  var latlng = libh3._malloc(SZ_GEOCOORD);\n\n  var ref = h3IndexToSplitLong(h3Index);\n  var lower = ref[0];\n  var upper = ref[1];\n  H3.h3ToGeo(lower, upper, latlng);\n  var out = readGeoCoord(latlng);\n\n  libh3._free(latlng);\n\n  return out;\n}\n/**\n * Get the vertices of a given hexagon (or pentagon), as an array of [lat, lng]\n * points. For pentagons and hexagons on the edge of an icosahedron face, this\n * function may return up to 10 vertices.\n * @static\n * @param  {H3Index} h3Index          H3 index\n * @param {boolean} [formatAsGeoJson] Whether to provide GeoJSON output: [lng, lat], closed loops\n * @return {number[][]}               Array of [lat, lng] pairs\n */\n\nfunction h3ToGeoBoundary(h3Index, formatAsGeoJson) {\n  var geoBoundary = libh3._malloc(SZ_GEOBOUNDARY);\n\n  var ref = h3IndexToSplitLong(h3Index);\n  var lower = ref[0];\n  var upper = ref[1];\n  H3.h3ToGeoBoundary(lower, upper, geoBoundary);\n  var out = readGeoBoundary(geoBoundary, formatAsGeoJson, formatAsGeoJson);\n\n  libh3._free(geoBoundary);\n\n  return out;\n} // ----------------------------------------------------------------------------\n// Public API functions: Algorithms\n\n/**\n * Get the parent of the given hexagon at a particular resolution\n * @static\n * @param  {H3IndexInput} h3Index  H3 index to get parent for\n * @param  {number} res       Resolution of hexagon to return\n * @return {H3Index}          H3 index of parent, or null for invalid input\n */\n\nfunction h3ToParent(h3Index, res) {\n  var ref = h3IndexToSplitLong(h3Index);\n  var lower = ref[0];\n  var upper = ref[1];\n  return readH3Index(H3.h3ToParent(lower, upper, res));\n}\n/**\n * Get the children/descendents of the given hexagon at a particular resolution\n * @static\n * @param  {H3IndexInput} h3Index  H3 index to get children for\n * @param  {number} res       Resolution of hexagons to return\n * @return {H3Index[]}        H3 indexes of children, or empty array for invalid input\n */\n\nfunction h3ToChildren(h3Index, res) {\n  // Bad input in this case can potentially result in high computation volume\n  // using the current C algorithm. Validate and return an empty array on failure.\n  if (!h3IsValid(h3Index)) {\n    return [];\n  }\n\n  var ref = h3IndexToSplitLong(h3Index);\n  var lower = ref[0];\n  var upper = ref[1];\n  var maxCount = H3.maxH3ToChildrenSize(lower, upper, res);\n\n  var hexagons = libh3._calloc(maxCount, SZ_H3INDEX);\n\n  H3.h3ToChildren(lower, upper, res, hexagons);\n  var out = readArrayOfHexagons(hexagons, maxCount);\n\n  libh3._free(hexagons);\n\n  return out;\n}\n/**\n * Get the center child of the given hexagon at a particular resolution\n * @static\n * @param  {H3IndexInput} h3Index  H3 index to get center child for\n * @param  {number} res       Resolution of hexagon to return\n * @return {H3Index}          H3 index of child, or null for invalid input\n */\n\nfunction h3ToCenterChild(h3Index, res) {\n  var ref = h3IndexToSplitLong(h3Index);\n  var lower = ref[0];\n  var upper = ref[1];\n  return readH3Index(H3.h3ToCenterChild(lower, upper, res));\n}\n/**\n * Get all hexagons in a k-ring around a given center. The order of the hexagons is undefined.\n * @static\n * @param  {H3IndexInput} h3Index  H3 index of center hexagon\n * @param  {number} ringSize  Radius of k-ring\n * @return {H3Index[]}        H3 indexes for all hexagons in ring\n */\n\nfunction kRing(h3Index, ringSize) {\n  var ref = h3IndexToSplitLong(h3Index);\n  var lower = ref[0];\n  var upper = ref[1];\n  var maxCount = H3.maxKringSize(ringSize);\n\n  var hexagons = libh3._calloc(maxCount, SZ_H3INDEX);\n\n  H3.kRing(lower, upper, ringSize, hexagons);\n  var out = readArrayOfHexagons(hexagons, maxCount);\n\n  libh3._free(hexagons);\n\n  return out;\n}\n/**\n * Get all hexagons in a k-ring around a given center, in an array of arrays\n * ordered by distance from the origin. The order of the hexagons within each ring is undefined.\n * @static\n * @param  {H3IndexInput} h3Index  H3 index of center hexagon\n * @param  {number} ringSize  Radius of k-ring\n * @return {H3Index[][]}      Array of arrays with H3 indexes for all hexagons each ring\n */\n\nfunction kRingDistances(h3Index, ringSize) {\n  var ref = h3IndexToSplitLong(h3Index);\n  var lower = ref[0];\n  var upper = ref[1];\n  var maxCount = H3.maxKringSize(ringSize);\n\n  var kRings = libh3._calloc(maxCount, SZ_H3INDEX);\n\n  var distances = libh3._calloc(maxCount, SZ_INT);\n\n  H3.kRingDistances(lower, upper, ringSize, kRings, distances); // Create an array of empty arrays to hold the output\n\n  var out = [];\n\n  for (var i = 0; i < ringSize + 1; i++) {\n    out.push([]);\n  } // Read the array of hexagons, putting them into the appropriate rings\n\n\n  for (var i$1 = 0; i$1 < maxCount * 2; i$1 += 2) {\n    var hexLower = libh3.getValue(kRings + SZ_INT * i$1, 'i32');\n    var hexUpper = libh3.getValue(kRings + SZ_INT * (i$1 + 1), 'i32');\n    var index = libh3.getValue(distances + SZ_INT * (i$1 / 2), 'i32');\n\n    if (hexLower !== 0 || hexUpper !== 0) {\n      out[index].push(splitLongToh3Index(hexLower, hexUpper));\n    }\n  }\n\n  libh3._free(kRings);\n\n  libh3._free(distances);\n\n  return out;\n}\n/**\n * Get all hexagons in a hollow hexagonal ring centered at origin with sides of a given length.\n * Unlike kRing, this function will throw an error if there is a pentagon anywhere in the ring.\n * @static\n * @param  {H3IndexInput} h3Index  H3 index of center hexagon\n * @param  {number} ringSize  Radius of ring\n * @return {H3Index[]}        H3 indexes for all hexagons in ring\n * @throws {Error}            If the algorithm could not calculate the ring\n */\n\nfunction hexRing(h3Index, ringSize) {\n  var maxCount = ringSize === 0 ? 1 : 6 * ringSize;\n\n  var hexagons = libh3._calloc(maxCount, SZ_H3INDEX);\n\n  var retVal = H3.hexRing.apply(H3, h3IndexToSplitLong(h3Index).concat( [ringSize], [hexagons] ));\n\n  if (retVal !== 0) {\n    libh3._free(hexagons);\n\n    throw new Error('Failed to get hexRing (encountered a pentagon?)');\n  }\n\n  var out = readArrayOfHexagons(hexagons, maxCount);\n\n  libh3._free(hexagons);\n\n  return out;\n}\n/**\n * Get all hexagons with centers contained in a given polygon. The polygon\n * is specified with GeoJson semantics as an array of loops. Each loop is\n * an array of [lat, lng] pairs (or [lng, lat] if isGeoJson is specified).\n * The first loop is the perimeter of the polygon, and subsequent loops are\n * expected to be holes.\n * @static\n * @param  {number[][] | number[][][]} coordinates\n *                                  Array of loops, or a single loop\n * @param  {number} res             Resolution of hexagons to return\n * @param  {boolean} [isGeoJson]    Whether to expect GeoJson-style [lng, lat]\n *                                  pairs instead of [lat, lng]\n * @return {H3Index[]}              H3 indexes for all hexagons in polygon\n */\n\nfunction polyfill(coordinates, res, isGeoJson) {\n  validateRes(res);\n  isGeoJson = Boolean(isGeoJson); // Guard against empty input\n\n  if (coordinates.length === 0 || coordinates[0].length === 0) {\n    return [];\n  } // Wrap to expected format if a single loop is provided\n\n\n  if (typeof coordinates[0][0] === 'number') {\n    coordinates = [coordinates];\n  }\n\n  var geoPolygon = coordinatesToGeoPolygon(coordinates, isGeoJson);\n  var arrayLen = H3.maxPolyfillSize(geoPolygon, res);\n\n  var hexagons = libh3._calloc(arrayLen, SZ_H3INDEX);\n\n  H3.polyfill(geoPolygon, res, hexagons);\n  var out = readArrayOfHexagons(hexagons, arrayLen);\n\n  libh3._free(hexagons);\n\n  destroyGeoPolygon(geoPolygon);\n  return out;\n}\n/**\n * Get the outlines of a set of H3 hexagons, returned in GeoJSON MultiPolygon\n * format (an array of polygons, each with an array of loops, each an array of\n * coordinates). Coordinates are returned as [lat, lng] pairs unless GeoJSON\n * is requested.\n *\n * It is the responsibility of the caller to ensure that all hexagons in the\n * set have the same resolution and that the set contains no duplicates. Behavior\n * is undefined if duplicates or multiple resolutions are present, and the\n * algorithm may produce unexpected or invalid polygons.\n *\n * @static\n * @param {H3IndexInput[]} h3Indexes       H3 indexes to get outlines for\n * @param {boolean} [formatAsGeoJson] Whether to provide GeoJSON output:\n *                                    [lng, lat], closed loops\n * @return {number[][][][]}           MultiPolygon-style output.\n */\n\nfunction h3SetToMultiPolygon(h3Indexes, formatAsGeoJson) {\n  // Early exit on empty input\n  if (!h3Indexes || !h3Indexes.length) {\n    return [];\n  } // Set up input set\n\n\n  var indexCount = h3Indexes.length;\n\n  var set = libh3._calloc(indexCount, SZ_H3INDEX);\n\n  storeArrayOfHexagons(set, h3Indexes); // Allocate memory for output linked polygon\n\n  var polygon = libh3._calloc(SZ_LINKED_GEOPOLYGON); // Store a reference to the first polygon - that's the one we need for\n  // memory deallocation\n\n\n  var originalPolygon = polygon;\n  H3.h3SetToLinkedGeo(set, indexCount, polygon);\n  var multiPolygon = readMultiPolygon(polygon, formatAsGeoJson); // Clean up\n\n  H3.destroyLinkedPolygon(originalPolygon);\n\n  libh3._free(originalPolygon);\n\n  libh3._free(set);\n\n  return multiPolygon;\n}\n/**\n * Compact a set of hexagons of the same resolution into a set of hexagons across\n * multiple levels that represents the same area.\n * @static\n * @param  {H3IndexInput[]} h3Set H3 indexes to compact\n * @return {H3Index[]}       Compacted H3 indexes\n * @throws {Error}           If the input is invalid (e.g. duplicate hexagons)\n */\n\nfunction compact(h3Set) {\n  if (!h3Set || !h3Set.length) {\n    return [];\n  } // Set up input set\n\n\n  var count = h3Set.length;\n\n  var set = libh3._calloc(count, SZ_H3INDEX);\n\n  storeArrayOfHexagons(set, h3Set); // Allocate memory for compacted hexagons, worst-case is no compaction\n\n  var compactedSet = libh3._calloc(count, SZ_H3INDEX);\n\n  var retVal = H3.compact(set, compactedSet, count);\n\n  if (retVal !== 0) {\n    libh3._free(set);\n\n    libh3._free(compactedSet);\n\n    throw new Error('Failed to compact, malformed input data (duplicate hexagons?)');\n  }\n\n  var out = readArrayOfHexagons(compactedSet, count);\n\n  libh3._free(set);\n\n  libh3._free(compactedSet);\n\n  return out;\n}\n/**\n * Uncompact a compacted set of hexagons to hexagons of the same resolution\n * @static\n * @param  {H3IndexInput[]} compactedSet H3 indexes to uncompact\n * @param  {number}    res          The resolution to uncompact to\n * @return {H3Index[]}              The uncompacted H3 indexes\n * @throws {Error}                  If the input is invalid (e.g. invalid resolution)\n */\n\nfunction uncompact(compactedSet, res) {\n  validateRes(res);\n\n  if (!compactedSet || !compactedSet.length) {\n    return [];\n  } // Set up input set\n\n\n  var count = compactedSet.length;\n\n  var set = libh3._calloc(count, SZ_H3INDEX);\n\n  storeArrayOfHexagons(set, compactedSet); // Estimate how many hexagons we need (always overestimates if in error)\n\n  var maxUncompactedNum = H3.maxUncompactSize(set, count, res); // Allocate memory for uncompacted hexagons\n\n  var uncompactedSet = libh3._calloc(maxUncompactedNum, SZ_H3INDEX);\n\n  var retVal = H3.uncompact(set, count, uncompactedSet, maxUncompactedNum, res);\n\n  if (retVal !== 0) {\n    libh3._free(set);\n\n    libh3._free(uncompactedSet);\n\n    throw new Error('Failed to uncompact (bad resolution?)');\n  }\n\n  var out = readArrayOfHexagons(uncompactedSet, maxUncompactedNum);\n\n  libh3._free(set);\n\n  libh3._free(uncompactedSet);\n\n  return out;\n} // ----------------------------------------------------------------------------\n// Public API functions: Unidirectional edges\n\n/**\n * Whether two H3 indexes are neighbors (share an edge)\n * @static\n * @param  {H3IndexInput} origin      Origin hexagon index\n * @param  {H3IndexInput} destination Destination hexagon index\n * @return {boolean}             Whether the hexagons share an edge\n */\n\nfunction h3IndexesAreNeighbors(origin, destination) {\n  var ref = h3IndexToSplitLong(origin);\n  var oLower = ref[0];\n  var oUpper = ref[1];\n  var ref$1 = h3IndexToSplitLong(destination);\n  var dLower = ref$1[0];\n  var dUpper = ref$1[1];\n  return Boolean(H3.h3IndexesAreNeighbors(oLower, oUpper, dLower, dUpper));\n}\n/**\n * Get an H3 index representing a unidirectional edge for a given origin and destination\n * @static\n * @param  {H3IndexInput} origin      Origin hexagon index\n * @param  {H3IndexInput} destination Destination hexagon index\n * @return {H3Index}             H3 index of the edge, or null if no edge is shared\n */\n\nfunction getH3UnidirectionalEdge(origin, destination) {\n  var ref = h3IndexToSplitLong(origin);\n  var oLower = ref[0];\n  var oUpper = ref[1];\n  var ref$1 = h3IndexToSplitLong(destination);\n  var dLower = ref$1[0];\n  var dUpper = ref$1[1];\n  return readH3Index(H3.getH3UnidirectionalEdge(oLower, oUpper, dLower, dUpper));\n}\n/**\n * Get the origin hexagon from an H3 index representing a unidirectional edge\n * @static\n * @param  {H3IndexInput} edgeIndex H3 index of the edge\n * @return {H3Index}           H3 index of the edge origin\n */\n\nfunction getOriginH3IndexFromUnidirectionalEdge(edgeIndex) {\n  var ref = h3IndexToSplitLong(edgeIndex);\n  var lower = ref[0];\n  var upper = ref[1];\n  return readH3Index(H3.getOriginH3IndexFromUnidirectionalEdge(lower, upper));\n}\n/**\n * Get the destination hexagon from an H3 index representing a unidirectional edge\n * @static\n * @param  {H3IndexInput} edgeIndex H3 index of the edge\n * @return {H3Index}           H3 index of the edge destination\n */\n\nfunction getDestinationH3IndexFromUnidirectionalEdge(edgeIndex) {\n  var ref = h3IndexToSplitLong(edgeIndex);\n  var lower = ref[0];\n  var upper = ref[1];\n  return readH3Index(H3.getDestinationH3IndexFromUnidirectionalEdge(lower, upper));\n}\n/**\n * Whether the input is a valid unidirectional edge\n * @static\n * @param  {H3IndexInput} edgeIndex H3 index of the edge\n * @return {boolean}           Whether the index is valid\n */\n\nfunction h3UnidirectionalEdgeIsValid(edgeIndex) {\n  var ref = h3IndexToSplitLong(edgeIndex);\n  var lower = ref[0];\n  var upper = ref[1];\n  return Boolean(H3.h3UnidirectionalEdgeIsValid(lower, upper));\n}\n/**\n * Get the [origin, destination] pair represented by a unidirectional edge\n * @static\n * @param  {H3IndexInput} edgeIndex H3 index of the edge\n * @return {H3Index[]}         [origin, destination] pair as H3 indexes\n */\n\nfunction getH3IndexesFromUnidirectionalEdge(edgeIndex) {\n  var ref = h3IndexToSplitLong(edgeIndex);\n  var lower = ref[0];\n  var upper = ref[1];\n  var count = 2;\n\n  var hexagons = libh3._calloc(count, SZ_H3INDEX);\n\n  H3.getH3IndexesFromUnidirectionalEdge(lower, upper, hexagons);\n  var out = readArrayOfHexagons(hexagons, count);\n\n  libh3._free(hexagons);\n\n  return out;\n}\n/**\n * Get all of the unidirectional edges with the given H3 index as the origin (i.e. an edge to\n * every neighbor)\n * @static\n * @param  {H3IndexInput} h3Index   H3 index of the origin hexagon\n * @return {H3Index[]}         List of unidirectional edges\n */\n\nfunction getH3UnidirectionalEdgesFromHexagon(h3Index) {\n  var ref = h3IndexToSplitLong(h3Index);\n  var lower = ref[0];\n  var upper = ref[1];\n  var count = 6;\n\n  var edges = libh3._calloc(count, SZ_H3INDEX);\n\n  H3.getH3UnidirectionalEdgesFromHexagon(lower, upper, edges);\n  var out = readArrayOfHexagons(edges, count);\n\n  libh3._free(edges);\n\n  return out;\n}\n/**\n * Get the vertices of a given edge as an array of [lat, lng] points. Note that for edges that\n * cross the edge of an icosahedron face, this may return 3 coordinates.\n * @static\n * @param  {H3IndexInput} edgeIndex        H3 index of the edge\n * @param {boolean} [formatAsGeoJson] Whether to provide GeoJSON output: [lng, lat]\n * @return {number[][]}               Array of geo coordinate pairs\n */\n\nfunction getH3UnidirectionalEdgeBoundary(edgeIndex, formatAsGeoJson) {\n  var geoBoundary = libh3._malloc(SZ_GEOBOUNDARY);\n\n  var ref = h3IndexToSplitLong(edgeIndex);\n  var lower = ref[0];\n  var upper = ref[1];\n  H3.getH3UnidirectionalEdgeBoundary(lower, upper, geoBoundary);\n  var out = readGeoBoundary(geoBoundary, formatAsGeoJson);\n\n  libh3._free(geoBoundary);\n\n  return out;\n}\n/**\n * Get the grid distance between two hex indexes. This function may fail\n * to find the distance between two indexes if they are very far apart or\n * on opposite sides of a pentagon.\n * @static\n * @param  {H3IndexInput} origin      Origin hexagon index\n * @param  {H3IndexInput} destination Destination hexagon index\n * @return {number}              Distance between hexagons, or a negative\n *                               number if the distance could not be computed\n */\n\nfunction h3Distance(origin, destination) {\n  var ref = h3IndexToSplitLong(origin);\n  var oLower = ref[0];\n  var oUpper = ref[1];\n  var ref$1 = h3IndexToSplitLong(destination);\n  var dLower = ref$1[0];\n  var dUpper = ref$1[1];\n  return H3.h3Distance(oLower, oUpper, dLower, dUpper);\n}\n/**\n * Given two H3 indexes, return the line of indexes between them (inclusive).\n *\n * This function may fail to find the line between two indexes, for\n * example if they are very far apart. It may also fail when finding\n * distances for indexes on opposite sides of a pentagon.\n *\n * Notes:\n *\n *  - The specific output of this function should not be considered stable\n *    across library versions. The only guarantees the library provides are\n *    that the line length will be `h3Distance(start, end) + 1` and that\n *    every index in the line will be a neighbor of the preceding index.\n *  - Lines are drawn in grid space, and may not correspond exactly to either\n *    Cartesian lines or great arcs.\n *\n * @static\n * @param  {H3IndexInput} origin      Origin hexagon index\n * @param  {H3IndexInput} destination Destination hexagon index\n * @return {H3Index[]}           H3 indexes connecting origin and destination\n * @throws {Error}               If the line cannot be calculated\n */\n\nfunction h3Line(origin, destination) {\n  var ref = h3IndexToSplitLong(origin);\n  var oLower = ref[0];\n  var oUpper = ref[1];\n  var ref$1 = h3IndexToSplitLong(destination);\n  var dLower = ref$1[0];\n  var dUpper = ref$1[1];\n  var count = H3.h3LineSize(oLower, oUpper, dLower, dUpper);\n\n  if (count < 0) {\n    // We can't get the specific error code here - may be any of\n    // the errors possible in experimentalH3ToLocalIj\n    throw new Error('Line cannot be calculated');\n  }\n\n  var hexagons = libh3._calloc(count, SZ_H3INDEX);\n\n  H3.h3Line(oLower, oUpper, dLower, dUpper, hexagons);\n  var out = readArrayOfHexagons(hexagons, count);\n\n  libh3._free(hexagons);\n\n  return out;\n}\n/**\n * Produces IJ coordinates for an H3 index anchored by an origin.\n *\n * - The coordinate space used by this function may have deleted\n * regions or warping due to pentagonal distortion.\n * - Coordinates are only comparable if they come from the same\n * origin index.\n * - Failure may occur if the index is too far away from the origin\n * or if the index is on the other side of a pentagon.\n * - This function is experimental, and its output is not guaranteed\n * to be compatible across different versions of H3.\n * @static\n * @param  {H3IndexInput} origin      Origin H3 index\n * @param  {H3IndexInput} destination H3 index for which to find relative coordinates\n * @return {CoordIJ}             Coordinates as an `{i, j}` pair\n * @throws {Error}               If the IJ coordinates cannot be calculated\n */\n\nfunction experimentalH3ToLocalIj(origin, destination) {\n  var ij = libh3._malloc(SZ_COORDIJ);\n\n  var retVal = H3.experimentalH3ToLocalIj.apply(H3, h3IndexToSplitLong(origin).concat( h3IndexToSplitLong(destination), [ij] ));\n  var coords = readCoordIJ(ij);\n\n  libh3._free(ij); // Return the pair, or throw if an error code was returned.\n  // Switch statement and error codes cribbed from h3-java's implementation.\n\n\n  switch (retVal) {\n    case 0:\n      return coords;\n\n    case 1:\n      throw new Error('Incompatible origin and index.');\n\n    case 2:\n    default:\n      throw new Error('Local IJ coordinates undefined for this origin and index pair. ' + 'The index may be too far from the origin.');\n\n    case 3:\n    case 4:\n    case 5:\n      throw new Error('Encountered possible pentagon distortion');\n  }\n}\n/**\n * Produces an H3 index for IJ coordinates anchored by an origin.\n *\n * - The coordinate space used by this function may have deleted\n * regions or warping due to pentagonal distortion.\n * - Coordinates are only comparable if they come from the same\n * origin index.\n * - Failure may occur if the index is too far away from the origin\n * or if the index is on the other side of a pentagon.\n * - This function is experimental, and its output is not guaranteed\n * to be compatible across different versions of H3.\n * @static\n * @param  {H3IndexInput} origin     Origin H3 index\n * @param  {CoordIJ} coords     Coordinates as an `{i, j}` pair\n * @return {H3Index}            H3 index at the relative coordinates\n * @throws {Error}              If the H3 index cannot be calculated\n */\n\nfunction experimentalLocalIjToH3(origin, coords) {\n  // Validate input coords\n  if (!coords || typeof coords.i !== 'number' || typeof coords.j !== 'number') {\n    throw new Error('Coordinates must be provided as an {i, j} object');\n  } // Allocate memory for the CoordIJ struct and an H3 index to hold the return value\n\n\n  var ij = libh3._malloc(SZ_COORDIJ);\n\n  var out = libh3._malloc(SZ_H3INDEX);\n\n  storeCoordIJ(ij, coords);\n  var retVal = H3.experimentalLocalIjToH3.apply(H3, h3IndexToSplitLong(origin).concat( [ij], [out] ));\n  var h3Index = readH3IndexFromPointer(out);\n\n  libh3._free(ij);\n\n  libh3._free(out);\n\n  if (retVal !== 0) {\n    throw new Error('Index not defined for this origin and IJ coordinates pair. ' + 'IJ coordinates may be too far from origin, or ' + 'a pentagon distortion was encountered.');\n  }\n\n  return h3Index;\n} // ----------------------------------------------------------------------------\n// Public API functions: Distance/area utilities\n\n/**\n * Great circle distance between two geo points. This is not specific to H3,\n * but is implemented in the library and provided here as a convenience.\n * @static\n * @param  {number[]} latlng1 Origin coordinate as [lat, lng]\n * @param  {number[]} latlng2 Destination coordinate as [lat, lng]\n * @param  {string}   unit    Distance unit (either UNITS.m or UNITS.km)\n * @return {number}           Great circle distance\n * @throws {Error}            If the unit is invalid\n */\n\nfunction pointDist(latlng1, latlng2, unit) {\n  var coord1 = storeGeoCoord(latlng1[0], latlng1[1]);\n  var coord2 = storeGeoCoord(latlng2[0], latlng2[1]);\n  var result;\n\n  switch (unit) {\n    case UNITS.m:\n      result = H3.pointDistM(coord1, coord2);\n      break;\n\n    case UNITS.km:\n      result = H3.pointDistKm(coord1, coord2);\n      break;\n\n    case UNITS.rads:\n      result = H3.pointDistRads(coord1, coord2);\n      break;\n\n    default:\n      result = null;\n  }\n\n  libh3._free(coord1);\n\n  libh3._free(coord2);\n\n  if (result === null) {\n    throw new Error((\"Unknown unit: \" + unit));\n  }\n\n  return result;\n}\n/**\n * Exact area of a given cell\n * @static\n * @param  {H3Index} h3Index  H3 index of the hexagon to measure\n * @param  {string}  unit     Distance unit (either UNITS.m2 or UNITS.km2)\n * @return {number}           Cell area\n * @throws {Error}            If the unit is invalid\n */\n\nfunction cellArea(h3Index, unit) {\n  var ref = h3IndexToSplitLong(h3Index);\n  var lower = ref[0];\n  var upper = ref[1];\n\n  switch (unit) {\n    case UNITS.m2:\n      return H3.cellAreaM2(lower, upper);\n\n    case UNITS.km2:\n      return H3.cellAreaKm2(lower, upper);\n\n    case UNITS.rads2:\n      return H3.cellAreaRads2(lower, upper);\n\n    default:\n      throw new Error((\"Unknown unit: \" + unit));\n  }\n}\n/**\n * Exact length of a given unidirectional edge\n * @static\n * @param  {H3Index} edge     H3 index of the edge to measure\n * @param  {string}  unit     Distance unit (either UNITS.m, UNITS.km, or UNITS.rads)\n * @return {number}           Cell area\n * @throws {Error}            If the unit is invalid\n */\n\nfunction exactEdgeLength(edge, unit) {\n  var ref = h3IndexToSplitLong(edge);\n  var lower = ref[0];\n  var upper = ref[1];\n\n  switch (unit) {\n    case UNITS.m:\n      return H3.exactEdgeLengthM(lower, upper);\n\n    case UNITS.km:\n      return H3.exactEdgeLengthKm(lower, upper);\n\n    case UNITS.rads:\n      return H3.exactEdgeLengthRads(lower, upper);\n\n    default:\n      throw new Error((\"Unknown unit: \" + unit));\n  }\n}\n/**\n * Average hexagon area at a given resolution\n * @static\n * @param  {number} res  Hexagon resolution\n * @param  {string} unit Area unit (either UNITS.m2, UNITS.km2, or UNITS.rads2)\n * @return {number}      Average area\n * @throws {Error}       If the unit is invalid\n */\n\nfunction hexArea(res, unit) {\n  validateRes(res);\n\n  switch (unit) {\n    case UNITS.m2:\n      return H3.hexAreaM2(res);\n\n    case UNITS.km2:\n      return H3.hexAreaKm2(res);\n\n    default:\n      throw new Error((\"Unknown unit: \" + unit));\n  }\n}\n/**\n * Average hexagon edge length at a given resolution\n * @static\n * @param  {number} res  Hexagon resolution\n * @param  {string} unit Distance unit (either UNITS.m, UNITS.km, or UNITS.rads)\n * @return {number}      Average edge length\n * @throws {Error}       If the unit is invalid\n */\n\nfunction edgeLength(res, unit) {\n  validateRes(res);\n\n  switch (unit) {\n    case UNITS.m:\n      return H3.edgeLengthM(res);\n\n    case UNITS.km:\n      return H3.edgeLengthKm(res);\n\n    default:\n      throw new Error((\"Unknown unit: \" + unit));\n  }\n} // ----------------------------------------------------------------------------\n// Public informational utilities\n\n/**\n * The total count of hexagons in the world at a given resolution. Note that above\n * resolution 8 the exact count cannot be represented in a JavaScript 32-bit number,\n * so consumers should use caution when applying further operations to the output.\n * @static\n * @param  {number} res  Hexagon resolution\n * @return {number}      Count\n */\n\nfunction numHexagons(res) {\n  validateRes(res); // Get number as a long value\n\n  var ref = readLong(H3.numHexagons(res));\n  var lower = ref[0];\n  var upper = ref[1]; // If we're using <= 32 bits we can use normal JS numbers\n\n  if (!upper) {\n    return lower;\n  } // Above 32 bit, make a JS number that's correct in order of magnitude\n\n\n  return upper * Math.pow(2, 32) + lower;\n}\n/**\n * Get all H3 indexes at resolution 0. As every index at every resolution > 0 is\n * the descendant of a res 0 index, this can be used with h3ToChildren to iterate\n * over H3 indexes at any resolution.\n * @static\n * @return {H3Index[]}  All H3 indexes at res 0\n */\n\nfunction getRes0Indexes() {\n  var count = H3.res0IndexCount();\n\n  var hexagons = libh3._malloc(SZ_H3INDEX * count);\n\n  H3.getRes0Indexes(hexagons);\n  var out = readArrayOfHexagons(hexagons, count);\n\n  libh3._free(hexagons);\n\n  return out;\n}\n/**\n * Get the twelve pentagon indexes at a given resolution.\n * @static\n * @param  {number} res  Hexagon resolution\n * @return {H3Index[]}  All H3 pentagon indexes at res\n */\n\nfunction getPentagonIndexes(res) {\n  validateRes(res);\n  var count = H3.pentagonIndexCount();\n\n  var hexagons = libh3._malloc(SZ_H3INDEX * count);\n\n  H3.getPentagonIndexes(res, hexagons);\n  var out = readArrayOfHexagons(hexagons, count);\n\n  libh3._free(hexagons);\n\n  return out;\n}\n/**\n * Convert degrees to radians\n * @static\n * @param  {number} deg Value in degrees\n * @return {number}     Value in radians\n */\n\nfunction degsToRads(deg) {\n  return deg * Math.PI / 180;\n}\n/**\n * Convert radians to degrees\n * @static\n * @param  {number} rad Value in radians\n * @return {number}     Value in degrees\n */\n\nfunction radsToDegs(rad) {\n  return rad * 180 / Math.PI;\n}\n\nexport { UNITS, h3IndexToSplitLong, splitLongToh3Index, h3IsValid, h3IsPentagon, h3IsResClassIII, h3GetBaseCell, h3GetFaces, h3GetResolution, geoToH3, h3ToGeo, h3ToGeoBoundary, h3ToParent, h3ToChildren, h3ToCenterChild, kRing, kRingDistances, hexRing, polyfill, h3SetToMultiPolygon, compact, uncompact, h3IndexesAreNeighbors, getH3UnidirectionalEdge, getOriginH3IndexFromUnidirectionalEdge, getDestinationH3IndexFromUnidirectionalEdge, h3UnidirectionalEdgeIsValid, getH3IndexesFromUnidirectionalEdge, getH3UnidirectionalEdgesFromHexagon, getH3UnidirectionalEdgeBoundary, h3Distance, h3Line, experimentalH3ToLocalIj, experimentalLocalIjToH3, pointDist, cellArea, exactEdgeLength, hexArea, edgeLength, numHexagons, getRes0Indexes, getPentagonIndexes, degsToRads, radsToDegs };\n//# sourceMappingURL=h3-js.es.js.map\n","/*! Hammer.JS - v2.0.7 - 2016-04-22\n * http://hammerjs.github.io/\n *\n * Copyright (c) 2016 Jorik Tangelder;\n * Licensed under the MIT license */\n(function(window, document, exportName, undefined) {\n  'use strict';\n\nvar VENDOR_PREFIXES = ['', 'webkit', 'Moz', 'MS', 'ms', 'o'];\nvar TEST_ELEMENT = document.createElement('div');\n\nvar TYPE_FUNCTION = 'function';\n\nvar round = Math.round;\nvar abs = Math.abs;\nvar now = Date.now;\n\n/**\n * set a timeout with a given scope\n * @param {Function} fn\n * @param {Number} timeout\n * @param {Object} context\n * @returns {number}\n */\nfunction setTimeoutContext(fn, timeout, context) {\n    return setTimeout(bindFn(fn, context), timeout);\n}\n\n/**\n * if the argument is an array, we want to execute the fn on each entry\n * if it aint an array we don't want to do a thing.\n * this is used by all the methods that accept a single and array argument.\n * @param {*|Array} arg\n * @param {String} fn\n * @param {Object} [context]\n * @returns {Boolean}\n */\nfunction invokeArrayArg(arg, fn, context) {\n    if (Array.isArray(arg)) {\n        each(arg, context[fn], context);\n        return true;\n    }\n    return false;\n}\n\n/**\n * walk objects and arrays\n * @param {Object} obj\n * @param {Function} iterator\n * @param {Object} context\n */\nfunction each(obj, iterator, context) {\n    var i;\n\n    if (!obj) {\n        return;\n    }\n\n    if (obj.forEach) {\n        obj.forEach(iterator, context);\n    } else if (obj.length !== undefined) {\n        i = 0;\n        while (i < obj.length) {\n            iterator.call(context, obj[i], i, obj);\n            i++;\n        }\n    } else {\n        for (i in obj) {\n            obj.hasOwnProperty(i) && iterator.call(context, obj[i], i, obj);\n        }\n    }\n}\n\n/**\n * wrap a method with a deprecation warning and stack trace\n * @param {Function} method\n * @param {String} name\n * @param {String} message\n * @returns {Function} A new function wrapping the supplied method.\n */\nfunction deprecate(method, name, message) {\n    var deprecationMessage = 'DEPRECATED METHOD: ' + name + '\\n' + message + ' AT \\n';\n    return function() {\n        var e = new Error('get-stack-trace');\n        var stack = e && e.stack ? e.stack.replace(/^[^\\(]+?[\\n$]/gm, '')\n            .replace(/^\\s+at\\s+/gm, '')\n            .replace(/^Object.<anonymous>\\s*\\(/gm, '{anonymous}()@') : 'Unknown Stack Trace';\n\n        var log = window.console && (window.console.warn || window.console.log);\n        if (log) {\n            log.call(window.console, deprecationMessage, stack);\n        }\n        return method.apply(this, arguments);\n    };\n}\n\n/**\n * extend object.\n * means that properties in dest will be overwritten by the ones in src.\n * @param {Object} target\n * @param {...Object} objects_to_assign\n * @returns {Object} target\n */\nvar assign;\nif (typeof Object.assign !== 'function') {\n    assign = function assign(target) {\n        if (target === undefined || target === null) {\n            throw new TypeError('Cannot convert undefined or null to object');\n        }\n\n        var output = Object(target);\n        for (var index = 1; index < arguments.length; index++) {\n            var source = arguments[index];\n            if (source !== undefined && source !== null) {\n                for (var nextKey in source) {\n                    if (source.hasOwnProperty(nextKey)) {\n                        output[nextKey] = source[nextKey];\n                    }\n                }\n            }\n        }\n        return output;\n    };\n} else {\n    assign = Object.assign;\n}\n\n/**\n * extend object.\n * means that properties in dest will be overwritten by the ones in src.\n * @param {Object} dest\n * @param {Object} src\n * @param {Boolean} [merge=false]\n * @returns {Object} dest\n */\nvar extend = deprecate(function extend(dest, src, merge) {\n    var keys = Object.keys(src);\n    var i = 0;\n    while (i < keys.length) {\n        if (!merge || (merge && dest[keys[i]] === undefined)) {\n            dest[keys[i]] = src[keys[i]];\n        }\n        i++;\n    }\n    return dest;\n}, 'extend', 'Use `assign`.');\n\n/**\n * merge the values from src in the dest.\n * means that properties that exist in dest will not be overwritten by src\n * @param {Object} dest\n * @param {Object} src\n * @returns {Object} dest\n */\nvar merge = deprecate(function merge(dest, src) {\n    return extend(dest, src, true);\n}, 'merge', 'Use `assign`.');\n\n/**\n * simple class inheritance\n * @param {Function} child\n * @param {Function} base\n * @param {Object} [properties]\n */\nfunction inherit(child, base, properties) {\n    var baseP = base.prototype,\n        childP;\n\n    childP = child.prototype = Object.create(baseP);\n    childP.constructor = child;\n    childP._super = baseP;\n\n    if (properties) {\n        assign(childP, properties);\n    }\n}\n\n/**\n * simple function bind\n * @param {Function} fn\n * @param {Object} context\n * @returns {Function}\n */\nfunction bindFn(fn, context) {\n    return function boundFn() {\n        return fn.apply(context, arguments);\n    };\n}\n\n/**\n * let a boolean value also be a function that must return a boolean\n * this first item in args will be used as the context\n * @param {Boolean|Function} val\n * @param {Array} [args]\n * @returns {Boolean}\n */\nfunction boolOrFn(val, args) {\n    if (typeof val == TYPE_FUNCTION) {\n        return val.apply(args ? args[0] || undefined : undefined, args);\n    }\n    return val;\n}\n\n/**\n * use the val2 when val1 is undefined\n * @param {*} val1\n * @param {*} val2\n * @returns {*}\n */\nfunction ifUndefined(val1, val2) {\n    return (val1 === undefined) ? val2 : val1;\n}\n\n/**\n * addEventListener with multiple events at once\n * @param {EventTarget} target\n * @param {String} types\n * @param {Function} handler\n */\nfunction addEventListeners(target, types, handler) {\n    each(splitStr(types), function(type) {\n        target.addEventListener(type, handler, false);\n    });\n}\n\n/**\n * removeEventListener with multiple events at once\n * @param {EventTarget} target\n * @param {String} types\n * @param {Function} handler\n */\nfunction removeEventListeners(target, types, handler) {\n    each(splitStr(types), function(type) {\n        target.removeEventListener(type, handler, false);\n    });\n}\n\n/**\n * find if a node is in the given parent\n * @method hasParent\n * @param {HTMLElement} node\n * @param {HTMLElement} parent\n * @return {Boolean} found\n */\nfunction hasParent(node, parent) {\n    while (node) {\n        if (node == parent) {\n            return true;\n        }\n        node = node.parentNode;\n    }\n    return false;\n}\n\n/**\n * small indexOf wrapper\n * @param {String} str\n * @param {String} find\n * @returns {Boolean} found\n */\nfunction inStr(str, find) {\n    return str.indexOf(find) > -1;\n}\n\n/**\n * split string on whitespace\n * @param {String} str\n * @returns {Array} words\n */\nfunction splitStr(str) {\n    return str.trim().split(/\\s+/g);\n}\n\n/**\n * find if a array contains the object using indexOf or a simple polyFill\n * @param {Array} src\n * @param {String} find\n * @param {String} [findByKey]\n * @return {Boolean|Number} false when not found, or the index\n */\nfunction inArray(src, find, findByKey) {\n    if (src.indexOf && !findByKey) {\n        return src.indexOf(find);\n    } else {\n        var i = 0;\n        while (i < src.length) {\n            if ((findByKey && src[i][findByKey] == find) || (!findByKey && src[i] === find)) {\n                return i;\n            }\n            i++;\n        }\n        return -1;\n    }\n}\n\n/**\n * convert array-like objects to real arrays\n * @param {Object} obj\n * @returns {Array}\n */\nfunction toArray(obj) {\n    return Array.prototype.slice.call(obj, 0);\n}\n\n/**\n * unique array with objects based on a key (like 'id') or just by the array's value\n * @param {Array} src [{id:1},{id:2},{id:1}]\n * @param {String} [key]\n * @param {Boolean} [sort=False]\n * @returns {Array} [{id:1},{id:2}]\n */\nfunction uniqueArray(src, key, sort) {\n    var results = [];\n    var values = [];\n    var i = 0;\n\n    while (i < src.length) {\n        var val = key ? src[i][key] : src[i];\n        if (inArray(values, val) < 0) {\n            results.push(src[i]);\n        }\n        values[i] = val;\n        i++;\n    }\n\n    if (sort) {\n        if (!key) {\n            results = results.sort();\n        } else {\n            results = results.sort(function sortUniqueArray(a, b) {\n                return a[key] > b[key];\n            });\n        }\n    }\n\n    return results;\n}\n\n/**\n * get the prefixed property\n * @param {Object} obj\n * @param {String} property\n * @returns {String|Undefined} prefixed\n */\nfunction prefixed(obj, property) {\n    var prefix, prop;\n    var camelProp = property[0].toUpperCase() + property.slice(1);\n\n    var i = 0;\n    while (i < VENDOR_PREFIXES.length) {\n        prefix = VENDOR_PREFIXES[i];\n        prop = (prefix) ? prefix + camelProp : property;\n\n        if (prop in obj) {\n            return prop;\n        }\n        i++;\n    }\n    return undefined;\n}\n\n/**\n * get a unique id\n * @returns {number} uniqueId\n */\nvar _uniqueId = 1;\nfunction uniqueId() {\n    return _uniqueId++;\n}\n\n/**\n * get the window object of an element\n * @param {HTMLElement} element\n * @returns {DocumentView|Window}\n */\nfunction getWindowForElement(element) {\n    var doc = element.ownerDocument || element;\n    return (doc.defaultView || doc.parentWindow || window);\n}\n\nvar MOBILE_REGEX = /mobile|tablet|ip(ad|hone|od)|android/i;\n\nvar SUPPORT_TOUCH = ('ontouchstart' in window);\nvar SUPPORT_POINTER_EVENTS = prefixed(window, 'PointerEvent') !== undefined;\nvar SUPPORT_ONLY_TOUCH = SUPPORT_TOUCH && MOBILE_REGEX.test(navigator.userAgent);\n\nvar INPUT_TYPE_TOUCH = 'touch';\nvar INPUT_TYPE_PEN = 'pen';\nvar INPUT_TYPE_MOUSE = 'mouse';\nvar INPUT_TYPE_KINECT = 'kinect';\n\nvar COMPUTE_INTERVAL = 25;\n\nvar INPUT_START = 1;\nvar INPUT_MOVE = 2;\nvar INPUT_END = 4;\nvar INPUT_CANCEL = 8;\n\nvar DIRECTION_NONE = 1;\nvar DIRECTION_LEFT = 2;\nvar DIRECTION_RIGHT = 4;\nvar DIRECTION_UP = 8;\nvar DIRECTION_DOWN = 16;\n\nvar DIRECTION_HORIZONTAL = DIRECTION_LEFT | DIRECTION_RIGHT;\nvar DIRECTION_VERTICAL = DIRECTION_UP | DIRECTION_DOWN;\nvar DIRECTION_ALL = DIRECTION_HORIZONTAL | DIRECTION_VERTICAL;\n\nvar PROPS_XY = ['x', 'y'];\nvar PROPS_CLIENT_XY = ['clientX', 'clientY'];\n\n/**\n * create new input type manager\n * @param {Manager} manager\n * @param {Function} callback\n * @returns {Input}\n * @constructor\n */\nfunction Input(manager, callback) {\n    var self = this;\n    this.manager = manager;\n    this.callback = callback;\n    this.element = manager.element;\n    this.target = manager.options.inputTarget;\n\n    // smaller wrapper around the handler, for the scope and the enabled state of the manager,\n    // so when disabled the input events are completely bypassed.\n    this.domHandler = function(ev) {\n        if (boolOrFn(manager.options.enable, [manager])) {\n            self.handler(ev);\n        }\n    };\n\n    this.init();\n\n}\n\nInput.prototype = {\n    /**\n     * should handle the inputEvent data and trigger the callback\n     * @virtual\n     */\n    handler: function() { },\n\n    /**\n     * bind the events\n     */\n    init: function() {\n        this.evEl && addEventListeners(this.element, this.evEl, this.domHandler);\n        this.evTarget && addEventListeners(this.target, this.evTarget, this.domHandler);\n        this.evWin && addEventListeners(getWindowForElement(this.element), this.evWin, this.domHandler);\n    },\n\n    /**\n     * unbind the events\n     */\n    destroy: function() {\n        this.evEl && removeEventListeners(this.element, this.evEl, this.domHandler);\n        this.evTarget && removeEventListeners(this.target, this.evTarget, this.domHandler);\n        this.evWin && removeEventListeners(getWindowForElement(this.element), this.evWin, this.domHandler);\n    }\n};\n\n/**\n * create new input type manager\n * called by the Manager constructor\n * @param {Hammer} manager\n * @returns {Input}\n */\nfunction createInputInstance(manager) {\n    var Type;\n    var inputClass = manager.options.inputClass;\n\n    if (inputClass) {\n        Type = inputClass;\n    } else if (SUPPORT_POINTER_EVENTS) {\n        Type = PointerEventInput;\n    } else if (SUPPORT_ONLY_TOUCH) {\n        Type = TouchInput;\n    } else if (!SUPPORT_TOUCH) {\n        Type = MouseInput;\n    } else {\n        Type = TouchMouseInput;\n    }\n    return new (Type)(manager, inputHandler);\n}\n\n/**\n * handle input events\n * @param {Manager} manager\n * @param {String} eventType\n * @param {Object} input\n */\nfunction inputHandler(manager, eventType, input) {\n    var pointersLen = input.pointers.length;\n    var changedPointersLen = input.changedPointers.length;\n    var isFirst = (eventType & INPUT_START && (pointersLen - changedPointersLen === 0));\n    var isFinal = (eventType & (INPUT_END | INPUT_CANCEL) && (pointersLen - changedPointersLen === 0));\n\n    input.isFirst = !!isFirst;\n    input.isFinal = !!isFinal;\n\n    if (isFirst) {\n        manager.session = {};\n    }\n\n    // source event is the normalized value of the domEvents\n    // like 'touchstart, mouseup, pointerdown'\n    input.eventType = eventType;\n\n    // compute scale, rotation etc\n    computeInputData(manager, input);\n\n    // emit secret event\n    manager.emit('hammer.input', input);\n\n    manager.recognize(input);\n    manager.session.prevInput = input;\n}\n\n/**\n * extend the data with some usable properties like scale, rotate, velocity etc\n * @param {Object} manager\n * @param {Object} input\n */\nfunction computeInputData(manager, input) {\n    var session = manager.session;\n    var pointers = input.pointers;\n    var pointersLength = pointers.length;\n\n    // store the first input to calculate the distance and direction\n    if (!session.firstInput) {\n        session.firstInput = simpleCloneInputData(input);\n    }\n\n    // to compute scale and rotation we need to store the multiple touches\n    if (pointersLength > 1 && !session.firstMultiple) {\n        session.firstMultiple = simpleCloneInputData(input);\n    } else if (pointersLength === 1) {\n        session.firstMultiple = false;\n    }\n\n    var firstInput = session.firstInput;\n    var firstMultiple = session.firstMultiple;\n    var offsetCenter = firstMultiple ? firstMultiple.center : firstInput.center;\n\n    var center = input.center = getCenter(pointers);\n    input.timeStamp = now();\n    input.deltaTime = input.timeStamp - firstInput.timeStamp;\n\n    input.angle = getAngle(offsetCenter, center);\n    input.distance = getDistance(offsetCenter, center);\n\n    computeDeltaXY(session, input);\n    input.offsetDirection = getDirection(input.deltaX, input.deltaY);\n\n    var overallVelocity = getVelocity(input.deltaTime, input.deltaX, input.deltaY);\n    input.overallVelocityX = overallVelocity.x;\n    input.overallVelocityY = overallVelocity.y;\n    input.overallVelocity = (abs(overallVelocity.x) > abs(overallVelocity.y)) ? overallVelocity.x : overallVelocity.y;\n\n    input.scale = firstMultiple ? getScale(firstMultiple.pointers, pointers) : 1;\n    input.rotation = firstMultiple ? getRotation(firstMultiple.pointers, pointers) : 0;\n\n    input.maxPointers = !session.prevInput ? input.pointers.length : ((input.pointers.length >\n        session.prevInput.maxPointers) ? input.pointers.length : session.prevInput.maxPointers);\n\n    computeIntervalInputData(session, input);\n\n    // find the correct target\n    var target = manager.element;\n    if (hasParent(input.srcEvent.target, target)) {\n        target = input.srcEvent.target;\n    }\n    input.target = target;\n}\n\nfunction computeDeltaXY(session, input) {\n    var center = input.center;\n    var offset = session.offsetDelta || {};\n    var prevDelta = session.prevDelta || {};\n    var prevInput = session.prevInput || {};\n\n    if (input.eventType === INPUT_START || prevInput.eventType === INPUT_END) {\n        prevDelta = session.prevDelta = {\n            x: prevInput.deltaX || 0,\n            y: prevInput.deltaY || 0\n        };\n\n        offset = session.offsetDelta = {\n            x: center.x,\n            y: center.y\n        };\n    }\n\n    input.deltaX = prevDelta.x + (center.x - offset.x);\n    input.deltaY = prevDelta.y + (center.y - offset.y);\n}\n\n/**\n * velocity is calculated every x ms\n * @param {Object} session\n * @param {Object} input\n */\nfunction computeIntervalInputData(session, input) {\n    var last = session.lastInterval || input,\n        deltaTime = input.timeStamp - last.timeStamp,\n        velocity, velocityX, velocityY, direction;\n\n    if (input.eventType != INPUT_CANCEL && (deltaTime > COMPUTE_INTERVAL || last.velocity === undefined)) {\n        var deltaX = input.deltaX - last.deltaX;\n        var deltaY = input.deltaY - last.deltaY;\n\n        var v = getVelocity(deltaTime, deltaX, deltaY);\n        velocityX = v.x;\n        velocityY = v.y;\n        velocity = (abs(v.x) > abs(v.y)) ? v.x : v.y;\n        direction = getDirection(deltaX, deltaY);\n\n        session.lastInterval = input;\n    } else {\n        // use latest velocity info if it doesn't overtake a minimum period\n        velocity = last.velocity;\n        velocityX = last.velocityX;\n        velocityY = last.velocityY;\n        direction = last.direction;\n    }\n\n    input.velocity = velocity;\n    input.velocityX = velocityX;\n    input.velocityY = velocityY;\n    input.direction = direction;\n}\n\n/**\n * create a simple clone from the input used for storage of firstInput and firstMultiple\n * @param {Object} input\n * @returns {Object} clonedInputData\n */\nfunction simpleCloneInputData(input) {\n    // make a simple copy of the pointers because we will get a reference if we don't\n    // we only need clientXY for the calculations\n    var pointers = [];\n    var i = 0;\n    while (i < input.pointers.length) {\n        pointers[i] = {\n            clientX: round(input.pointers[i].clientX),\n            clientY: round(input.pointers[i].clientY)\n        };\n        i++;\n    }\n\n    return {\n        timeStamp: now(),\n        pointers: pointers,\n        center: getCenter(pointers),\n        deltaX: input.deltaX,\n        deltaY: input.deltaY\n    };\n}\n\n/**\n * get the center of all the pointers\n * @param {Array} pointers\n * @return {Object} center contains `x` and `y` properties\n */\nfunction getCenter(pointers) {\n    var pointersLength = pointers.length;\n\n    // no need to loop when only one touch\n    if (pointersLength === 1) {\n        return {\n            x: round(pointers[0].clientX),\n            y: round(pointers[0].clientY)\n        };\n    }\n\n    var x = 0, y = 0, i = 0;\n    while (i < pointersLength) {\n        x += pointers[i].clientX;\n        y += pointers[i].clientY;\n        i++;\n    }\n\n    return {\n        x: round(x / pointersLength),\n        y: round(y / pointersLength)\n    };\n}\n\n/**\n * calculate the velocity between two points. unit is in px per ms.\n * @param {Number} deltaTime\n * @param {Number} x\n * @param {Number} y\n * @return {Object} velocity `x` and `y`\n */\nfunction getVelocity(deltaTime, x, y) {\n    return {\n        x: x / deltaTime || 0,\n        y: y / deltaTime || 0\n    };\n}\n\n/**\n * get the direction between two points\n * @param {Number} x\n * @param {Number} y\n * @return {Number} direction\n */\nfunction getDirection(x, y) {\n    if (x === y) {\n        return DIRECTION_NONE;\n    }\n\n    if (abs(x) >= abs(y)) {\n        return x < 0 ? DIRECTION_LEFT : DIRECTION_RIGHT;\n    }\n    return y < 0 ? DIRECTION_UP : DIRECTION_DOWN;\n}\n\n/**\n * calculate the absolute distance between two points\n * @param {Object} p1 {x, y}\n * @param {Object} p2 {x, y}\n * @param {Array} [props] containing x and y keys\n * @return {Number} distance\n */\nfunction getDistance(p1, p2, props) {\n    if (!props) {\n        props = PROPS_XY;\n    }\n    var x = p2[props[0]] - p1[props[0]],\n        y = p2[props[1]] - p1[props[1]];\n\n    return Math.sqrt((x * x) + (y * y));\n}\n\n/**\n * calculate the angle between two coordinates\n * @param {Object} p1\n * @param {Object} p2\n * @param {Array} [props] containing x and y keys\n * @return {Number} angle\n */\nfunction getAngle(p1, p2, props) {\n    if (!props) {\n        props = PROPS_XY;\n    }\n    var x = p2[props[0]] - p1[props[0]],\n        y = p2[props[1]] - p1[props[1]];\n    return Math.atan2(y, x) * 180 / Math.PI;\n}\n\n/**\n * calculate the rotation degrees between two pointersets\n * @param {Array} start array of pointers\n * @param {Array} end array of pointers\n * @return {Number} rotation\n */\nfunction getRotation(start, end) {\n    return getAngle(end[1], end[0], PROPS_CLIENT_XY) + getAngle(start[1], start[0], PROPS_CLIENT_XY);\n}\n\n/**\n * calculate the scale factor between two pointersets\n * no scale is 1, and goes down to 0 when pinched together, and bigger when pinched out\n * @param {Array} start array of pointers\n * @param {Array} end array of pointers\n * @return {Number} scale\n */\nfunction getScale(start, end) {\n    return getDistance(end[0], end[1], PROPS_CLIENT_XY) / getDistance(start[0], start[1], PROPS_CLIENT_XY);\n}\n\nvar MOUSE_INPUT_MAP = {\n    mousedown: INPUT_START,\n    mousemove: INPUT_MOVE,\n    mouseup: INPUT_END\n};\n\nvar MOUSE_ELEMENT_EVENTS = 'mousedown';\nvar MOUSE_WINDOW_EVENTS = 'mousemove mouseup';\n\n/**\n * Mouse events input\n * @constructor\n * @extends Input\n */\nfunction MouseInput() {\n    this.evEl = MOUSE_ELEMENT_EVENTS;\n    this.evWin = MOUSE_WINDOW_EVENTS;\n\n    this.pressed = false; // mousedown state\n\n    Input.apply(this, arguments);\n}\n\ninherit(MouseInput, Input, {\n    /**\n     * handle mouse events\n     * @param {Object} ev\n     */\n    handler: function MEhandler(ev) {\n        var eventType = MOUSE_INPUT_MAP[ev.type];\n\n        // on start we want to have the left mouse button down\n        if (eventType & INPUT_START && ev.button === 0) {\n            this.pressed = true;\n        }\n\n        if (eventType & INPUT_MOVE && ev.which !== 1) {\n            eventType = INPUT_END;\n        }\n\n        // mouse must be down\n        if (!this.pressed) {\n            return;\n        }\n\n        if (eventType & INPUT_END) {\n            this.pressed = false;\n        }\n\n        this.callback(this.manager, eventType, {\n            pointers: [ev],\n            changedPointers: [ev],\n            pointerType: INPUT_TYPE_MOUSE,\n            srcEvent: ev\n        });\n    }\n});\n\nvar POINTER_INPUT_MAP = {\n    pointerdown: INPUT_START,\n    pointermove: INPUT_MOVE,\n    pointerup: INPUT_END,\n    pointercancel: INPUT_CANCEL,\n    pointerout: INPUT_CANCEL\n};\n\n// in IE10 the pointer types is defined as an enum\nvar IE10_POINTER_TYPE_ENUM = {\n    2: INPUT_TYPE_TOUCH,\n    3: INPUT_TYPE_PEN,\n    4: INPUT_TYPE_MOUSE,\n    5: INPUT_TYPE_KINECT // see https://twitter.com/jacobrossi/status/480596438489890816\n};\n\nvar POINTER_ELEMENT_EVENTS = 'pointerdown';\nvar POINTER_WINDOW_EVENTS = 'pointermove pointerup pointercancel';\n\n// IE10 has prefixed support, and case-sensitive\nif (window.MSPointerEvent && !window.PointerEvent) {\n    POINTER_ELEMENT_EVENTS = 'MSPointerDown';\n    POINTER_WINDOW_EVENTS = 'MSPointerMove MSPointerUp MSPointerCancel';\n}\n\n/**\n * Pointer events input\n * @constructor\n * @extends Input\n */\nfunction PointerEventInput() {\n    this.evEl = POINTER_ELEMENT_EVENTS;\n    this.evWin = POINTER_WINDOW_EVENTS;\n\n    Input.apply(this, arguments);\n\n    this.store = (this.manager.session.pointerEvents = []);\n}\n\ninherit(PointerEventInput, Input, {\n    /**\n     * handle mouse events\n     * @param {Object} ev\n     */\n    handler: function PEhandler(ev) {\n        var store = this.store;\n        var removePointer = false;\n\n        var eventTypeNormalized = ev.type.toLowerCase().replace('ms', '');\n        var eventType = POINTER_INPUT_MAP[eventTypeNormalized];\n        var pointerType = IE10_POINTER_TYPE_ENUM[ev.pointerType] || ev.pointerType;\n\n        var isTouch = (pointerType == INPUT_TYPE_TOUCH);\n\n        // get index of the event in the store\n        var storeIndex = inArray(store, ev.pointerId, 'pointerId');\n\n        // start and mouse must be down\n        if (eventType & INPUT_START && (ev.button === 0 || isTouch)) {\n            if (storeIndex < 0) {\n                store.push(ev);\n                storeIndex = store.length - 1;\n            }\n        } else if (eventType & (INPUT_END | INPUT_CANCEL)) {\n            removePointer = true;\n        }\n\n        // it not found, so the pointer hasn't been down (so it's probably a hover)\n        if (storeIndex < 0) {\n            return;\n        }\n\n        // update the event in the store\n        store[storeIndex] = ev;\n\n        this.callback(this.manager, eventType, {\n            pointers: store,\n            changedPointers: [ev],\n            pointerType: pointerType,\n            srcEvent: ev\n        });\n\n        if (removePointer) {\n            // remove from the store\n            store.splice(storeIndex, 1);\n        }\n    }\n});\n\nvar SINGLE_TOUCH_INPUT_MAP = {\n    touchstart: INPUT_START,\n    touchmove: INPUT_MOVE,\n    touchend: INPUT_END,\n    touchcancel: INPUT_CANCEL\n};\n\nvar SINGLE_TOUCH_TARGET_EVENTS = 'touchstart';\nvar SINGLE_TOUCH_WINDOW_EVENTS = 'touchstart touchmove touchend touchcancel';\n\n/**\n * Touch events input\n * @constructor\n * @extends Input\n */\nfunction SingleTouchInput() {\n    this.evTarget = SINGLE_TOUCH_TARGET_EVENTS;\n    this.evWin = SINGLE_TOUCH_WINDOW_EVENTS;\n    this.started = false;\n\n    Input.apply(this, arguments);\n}\n\ninherit(SingleTouchInput, Input, {\n    handler: function TEhandler(ev) {\n        var type = SINGLE_TOUCH_INPUT_MAP[ev.type];\n\n        // should we handle the touch events?\n        if (type === INPUT_START) {\n            this.started = true;\n        }\n\n        if (!this.started) {\n            return;\n        }\n\n        var touches = normalizeSingleTouches.call(this, ev, type);\n\n        // when done, reset the started state\n        if (type & (INPUT_END | INPUT_CANCEL) && touches[0].length - touches[1].length === 0) {\n            this.started = false;\n        }\n\n        this.callback(this.manager, type, {\n            pointers: touches[0],\n            changedPointers: touches[1],\n            pointerType: INPUT_TYPE_TOUCH,\n            srcEvent: ev\n        });\n    }\n});\n\n/**\n * @this {TouchInput}\n * @param {Object} ev\n * @param {Number} type flag\n * @returns {undefined|Array} [all, changed]\n */\nfunction normalizeSingleTouches(ev, type) {\n    var all = toArray(ev.touches);\n    var changed = toArray(ev.changedTouches);\n\n    if (type & (INPUT_END | INPUT_CANCEL)) {\n        all = uniqueArray(all.concat(changed), 'identifier', true);\n    }\n\n    return [all, changed];\n}\n\nvar TOUCH_INPUT_MAP = {\n    touchstart: INPUT_START,\n    touchmove: INPUT_MOVE,\n    touchend: INPUT_END,\n    touchcancel: INPUT_CANCEL\n};\n\nvar TOUCH_TARGET_EVENTS = 'touchstart touchmove touchend touchcancel';\n\n/**\n * Multi-user touch events input\n * @constructor\n * @extends Input\n */\nfunction TouchInput() {\n    this.evTarget = TOUCH_TARGET_EVENTS;\n    this.targetIds = {};\n\n    Input.apply(this, arguments);\n}\n\ninherit(TouchInput, Input, {\n    handler: function MTEhandler(ev) {\n        var type = TOUCH_INPUT_MAP[ev.type];\n        var touches = getTouches.call(this, ev, type);\n        if (!touches) {\n            return;\n        }\n\n        this.callback(this.manager, type, {\n            pointers: touches[0],\n            changedPointers: touches[1],\n            pointerType: INPUT_TYPE_TOUCH,\n            srcEvent: ev\n        });\n    }\n});\n\n/**\n * @this {TouchInput}\n * @param {Object} ev\n * @param {Number} type flag\n * @returns {undefined|Array} [all, changed]\n */\nfunction getTouches(ev, type) {\n    var allTouches = toArray(ev.touches);\n    var targetIds = this.targetIds;\n\n    // when there is only one touch, the process can be simplified\n    if (type & (INPUT_START | INPUT_MOVE) && allTouches.length === 1) {\n        targetIds[allTouches[0].identifier] = true;\n        return [allTouches, allTouches];\n    }\n\n    var i,\n        targetTouches,\n        changedTouches = toArray(ev.changedTouches),\n        changedTargetTouches = [],\n        target = this.target;\n\n    // get target touches from touches\n    targetTouches = allTouches.filter(function(touch) {\n        return hasParent(touch.target, target);\n    });\n\n    // collect touches\n    if (type === INPUT_START) {\n        i = 0;\n        while (i < targetTouches.length) {\n            targetIds[targetTouches[i].identifier] = true;\n            i++;\n        }\n    }\n\n    // filter changed touches to only contain touches that exist in the collected target ids\n    i = 0;\n    while (i < changedTouches.length) {\n        if (targetIds[changedTouches[i].identifier]) {\n            changedTargetTouches.push(changedTouches[i]);\n        }\n\n        // cleanup removed touches\n        if (type & (INPUT_END | INPUT_CANCEL)) {\n            delete targetIds[changedTouches[i].identifier];\n        }\n        i++;\n    }\n\n    if (!changedTargetTouches.length) {\n        return;\n    }\n\n    return [\n        // merge targetTouches with changedTargetTouches so it contains ALL touches, including 'end' and 'cancel'\n        uniqueArray(targetTouches.concat(changedTargetTouches), 'identifier', true),\n        changedTargetTouches\n    ];\n}\n\n/**\n * Combined touch and mouse input\n *\n * Touch has a higher priority then mouse, and while touching no mouse events are allowed.\n * This because touch devices also emit mouse events while doing a touch.\n *\n * @constructor\n * @extends Input\n */\n\nvar DEDUP_TIMEOUT = 2500;\nvar DEDUP_DISTANCE = 25;\n\nfunction TouchMouseInput() {\n    Input.apply(this, arguments);\n\n    var handler = bindFn(this.handler, this);\n    this.touch = new TouchInput(this.manager, handler);\n    this.mouse = new MouseInput(this.manager, handler);\n\n    this.primaryTouch = null;\n    this.lastTouches = [];\n}\n\ninherit(TouchMouseInput, Input, {\n    /**\n     * handle mouse and touch events\n     * @param {Hammer} manager\n     * @param {String} inputEvent\n     * @param {Object} inputData\n     */\n    handler: function TMEhandler(manager, inputEvent, inputData) {\n        var isTouch = (inputData.pointerType == INPUT_TYPE_TOUCH),\n            isMouse = (inputData.pointerType == INPUT_TYPE_MOUSE);\n\n        if (isMouse && inputData.sourceCapabilities && inputData.sourceCapabilities.firesTouchEvents) {\n            return;\n        }\n\n        // when we're in a touch event, record touches to  de-dupe synthetic mouse event\n        if (isTouch) {\n            recordTouches.call(this, inputEvent, inputData);\n        } else if (isMouse && isSyntheticEvent.call(this, inputData)) {\n            return;\n        }\n\n        this.callback(manager, inputEvent, inputData);\n    },\n\n    /**\n     * remove the event listeners\n     */\n    destroy: function destroy() {\n        this.touch.destroy();\n        this.mouse.destroy();\n    }\n});\n\nfunction recordTouches(eventType, eventData) {\n    if (eventType & INPUT_START) {\n        this.primaryTouch = eventData.changedPointers[0].identifier;\n        setLastTouch.call(this, eventData);\n    } else if (eventType & (INPUT_END | INPUT_CANCEL)) {\n        setLastTouch.call(this, eventData);\n    }\n}\n\nfunction setLastTouch(eventData) {\n    var touch = eventData.changedPointers[0];\n\n    if (touch.identifier === this.primaryTouch) {\n        var lastTouch = {x: touch.clientX, y: touch.clientY};\n        this.lastTouches.push(lastTouch);\n        var lts = this.lastTouches;\n        var removeLastTouch = function() {\n            var i = lts.indexOf(lastTouch);\n            if (i > -1) {\n                lts.splice(i, 1);\n            }\n        };\n        setTimeout(removeLastTouch, DEDUP_TIMEOUT);\n    }\n}\n\nfunction isSyntheticEvent(eventData) {\n    var x = eventData.srcEvent.clientX, y = eventData.srcEvent.clientY;\n    for (var i = 0; i < this.lastTouches.length; i++) {\n        var t = this.lastTouches[i];\n        var dx = Math.abs(x - t.x), dy = Math.abs(y - t.y);\n        if (dx <= DEDUP_DISTANCE && dy <= DEDUP_DISTANCE) {\n            return true;\n        }\n    }\n    return false;\n}\n\nvar PREFIXED_TOUCH_ACTION = prefixed(TEST_ELEMENT.style, 'touchAction');\nvar NATIVE_TOUCH_ACTION = PREFIXED_TOUCH_ACTION !== undefined;\n\n// magical touchAction value\nvar TOUCH_ACTION_COMPUTE = 'compute';\nvar TOUCH_ACTION_AUTO = 'auto';\nvar TOUCH_ACTION_MANIPULATION = 'manipulation'; // not implemented\nvar TOUCH_ACTION_NONE = 'none';\nvar TOUCH_ACTION_PAN_X = 'pan-x';\nvar TOUCH_ACTION_PAN_Y = 'pan-y';\nvar TOUCH_ACTION_MAP = getTouchActionProps();\n\n/**\n * Touch Action\n * sets the touchAction property or uses the js alternative\n * @param {Manager} manager\n * @param {String} value\n * @constructor\n */\nfunction TouchAction(manager, value) {\n    this.manager = manager;\n    this.set(value);\n}\n\nTouchAction.prototype = {\n    /**\n     * set the touchAction value on the element or enable the polyfill\n     * @param {String} value\n     */\n    set: function(value) {\n        // find out the touch-action by the event handlers\n        if (value == TOUCH_ACTION_COMPUTE) {\n            value = this.compute();\n        }\n\n        if (NATIVE_TOUCH_ACTION && this.manager.element.style && TOUCH_ACTION_MAP[value]) {\n            this.manager.element.style[PREFIXED_TOUCH_ACTION] = value;\n        }\n        this.actions = value.toLowerCase().trim();\n    },\n\n    /**\n     * just re-set the touchAction value\n     */\n    update: function() {\n        this.set(this.manager.options.touchAction);\n    },\n\n    /**\n     * compute the value for the touchAction property based on the recognizer's settings\n     * @returns {String} value\n     */\n    compute: function() {\n        var actions = [];\n        each(this.manager.recognizers, function(recognizer) {\n            if (boolOrFn(recognizer.options.enable, [recognizer])) {\n                actions = actions.concat(recognizer.getTouchAction());\n            }\n        });\n        return cleanTouchActions(actions.join(' '));\n    },\n\n    /**\n     * this method is called on each input cycle and provides the preventing of the browser behavior\n     * @param {Object} input\n     */\n    preventDefaults: function(input) {\n        var srcEvent = input.srcEvent;\n        var direction = input.offsetDirection;\n\n        // if the touch action did prevented once this session\n        if (this.manager.session.prevented) {\n            srcEvent.preventDefault();\n            return;\n        }\n\n        var actions = this.actions;\n        var hasNone = inStr(actions, TOUCH_ACTION_NONE) && !TOUCH_ACTION_MAP[TOUCH_ACTION_NONE];\n        var hasPanY = inStr(actions, TOUCH_ACTION_PAN_Y) && !TOUCH_ACTION_MAP[TOUCH_ACTION_PAN_Y];\n        var hasPanX = inStr(actions, TOUCH_ACTION_PAN_X) && !TOUCH_ACTION_MAP[TOUCH_ACTION_PAN_X];\n\n        if (hasNone) {\n            //do not prevent defaults if this is a tap gesture\n\n            var isTapPointer = input.pointers.length === 1;\n            var isTapMovement = input.distance < 2;\n            var isTapTouchTime = input.deltaTime < 250;\n\n            if (isTapPointer && isTapMovement && isTapTouchTime) {\n                return;\n            }\n        }\n\n        if (hasPanX && hasPanY) {\n            // `pan-x pan-y` means browser handles all scrolling/panning, do not prevent\n            return;\n        }\n\n        if (hasNone ||\n            (hasPanY && direction & DIRECTION_HORIZONTAL) ||\n            (hasPanX && direction & DIRECTION_VERTICAL)) {\n            return this.preventSrc(srcEvent);\n        }\n    },\n\n    /**\n     * call preventDefault to prevent the browser's default behavior (scrolling in most cases)\n     * @param {Object} srcEvent\n     */\n    preventSrc: function(srcEvent) {\n        this.manager.session.prevented = true;\n        srcEvent.preventDefault();\n    }\n};\n\n/**\n * when the touchActions are collected they are not a valid value, so we need to clean things up. *\n * @param {String} actions\n * @returns {*}\n */\nfunction cleanTouchActions(actions) {\n    // none\n    if (inStr(actions, TOUCH_ACTION_NONE)) {\n        return TOUCH_ACTION_NONE;\n    }\n\n    var hasPanX = inStr(actions, TOUCH_ACTION_PAN_X);\n    var hasPanY = inStr(actions, TOUCH_ACTION_PAN_Y);\n\n    // if both pan-x and pan-y are set (different recognizers\n    // for different directions, e.g. horizontal pan but vertical swipe?)\n    // we need none (as otherwise with pan-x pan-y combined none of these\n    // recognizers will work, since the browser would handle all panning\n    if (hasPanX && hasPanY) {\n        return TOUCH_ACTION_NONE;\n    }\n\n    // pan-x OR pan-y\n    if (hasPanX || hasPanY) {\n        return hasPanX ? TOUCH_ACTION_PAN_X : TOUCH_ACTION_PAN_Y;\n    }\n\n    // manipulation\n    if (inStr(actions, TOUCH_ACTION_MANIPULATION)) {\n        return TOUCH_ACTION_MANIPULATION;\n    }\n\n    return TOUCH_ACTION_AUTO;\n}\n\nfunction getTouchActionProps() {\n    if (!NATIVE_TOUCH_ACTION) {\n        return false;\n    }\n    var touchMap = {};\n    var cssSupports = window.CSS && window.CSS.supports;\n    ['auto', 'manipulation', 'pan-y', 'pan-x', 'pan-x pan-y', 'none'].forEach(function(val) {\n\n        // If css.supports is not supported but there is native touch-action assume it supports\n        // all values. This is the case for IE 10 and 11.\n        touchMap[val] = cssSupports ? window.CSS.supports('touch-action', val) : true;\n    });\n    return touchMap;\n}\n\n/**\n * Recognizer flow explained; *\n * All recognizers have the initial state of POSSIBLE when a input session starts.\n * The definition of a input session is from the first input until the last input, with all it's movement in it. *\n * Example session for mouse-input: mousedown -> mousemove -> mouseup\n *\n * On each recognizing cycle (see Manager.recognize) the .recognize() method is executed\n * which determines with state it should be.\n *\n * If the recognizer has the state FAILED, CANCELLED or RECOGNIZED (equals ENDED), it is reset to\n * POSSIBLE to give it another change on the next cycle.\n *\n *               Possible\n *                  |\n *            +-----+---------------+\n *            |                     |\n *      +-----+-----+               |\n *      |           |               |\n *   Failed      Cancelled          |\n *                          +-------+------+\n *                          |              |\n *                      Recognized       Began\n *                                         |\n *                                      Changed\n *                                         |\n *                                  Ended/Recognized\n */\nvar STATE_POSSIBLE = 1;\nvar STATE_BEGAN = 2;\nvar STATE_CHANGED = 4;\nvar STATE_ENDED = 8;\nvar STATE_RECOGNIZED = STATE_ENDED;\nvar STATE_CANCELLED = 16;\nvar STATE_FAILED = 32;\n\n/**\n * Recognizer\n * Every recognizer needs to extend from this class.\n * @constructor\n * @param {Object} options\n */\nfunction Recognizer(options) {\n    this.options = assign({}, this.defaults, options || {});\n\n    this.id = uniqueId();\n\n    this.manager = null;\n\n    // default is enable true\n    this.options.enable = ifUndefined(this.options.enable, true);\n\n    this.state = STATE_POSSIBLE;\n\n    this.simultaneous = {};\n    this.requireFail = [];\n}\n\nRecognizer.prototype = {\n    /**\n     * @virtual\n     * @type {Object}\n     */\n    defaults: {},\n\n    /**\n     * set options\n     * @param {Object} options\n     * @return {Recognizer}\n     */\n    set: function(options) {\n        assign(this.options, options);\n\n        // also update the touchAction, in case something changed about the directions/enabled state\n        this.manager && this.manager.touchAction.update();\n        return this;\n    },\n\n    /**\n     * recognize simultaneous with an other recognizer.\n     * @param {Recognizer} otherRecognizer\n     * @returns {Recognizer} this\n     */\n    recognizeWith: function(otherRecognizer) {\n        if (invokeArrayArg(otherRecognizer, 'recognizeWith', this)) {\n            return this;\n        }\n\n        var simultaneous = this.simultaneous;\n        otherRecognizer = getRecognizerByNameIfManager(otherRecognizer, this);\n        if (!simultaneous[otherRecognizer.id]) {\n            simultaneous[otherRecognizer.id] = otherRecognizer;\n            otherRecognizer.recognizeWith(this);\n        }\n        return this;\n    },\n\n    /**\n     * drop the simultaneous link. it doesnt remove the link on the other recognizer.\n     * @param {Recognizer} otherRecognizer\n     * @returns {Recognizer} this\n     */\n    dropRecognizeWith: function(otherRecognizer) {\n        if (invokeArrayArg(otherRecognizer, 'dropRecognizeWith', this)) {\n            return this;\n        }\n\n        otherRecognizer = getRecognizerByNameIfManager(otherRecognizer, this);\n        delete this.simultaneous[otherRecognizer.id];\n        return this;\n    },\n\n    /**\n     * recognizer can only run when an other is failing\n     * @param {Recognizer} otherRecognizer\n     * @returns {Recognizer} this\n     */\n    requireFailure: function(otherRecognizer) {\n        if (invokeArrayArg(otherRecognizer, 'requireFailure', this)) {\n            return this;\n        }\n\n        var requireFail = this.requireFail;\n        otherRecognizer = getRecognizerByNameIfManager(otherRecognizer, this);\n        if (inArray(requireFail, otherRecognizer) === -1) {\n            requireFail.push(otherRecognizer);\n            otherRecognizer.requireFailure(this);\n        }\n        return this;\n    },\n\n    /**\n     * drop the requireFailure link. it does not remove the link on the other recognizer.\n     * @param {Recognizer} otherRecognizer\n     * @returns {Recognizer} this\n     */\n    dropRequireFailure: function(otherRecognizer) {\n        if (invokeArrayArg(otherRecognizer, 'dropRequireFailure', this)) {\n            return this;\n        }\n\n        otherRecognizer = getRecognizerByNameIfManager(otherRecognizer, this);\n        var index = inArray(this.requireFail, otherRecognizer);\n        if (index > -1) {\n            this.requireFail.splice(index, 1);\n        }\n        return this;\n    },\n\n    /**\n     * has require failures boolean\n     * @returns {boolean}\n     */\n    hasRequireFailures: function() {\n        return this.requireFail.length > 0;\n    },\n\n    /**\n     * if the recognizer can recognize simultaneous with an other recognizer\n     * @param {Recognizer} otherRecognizer\n     * @returns {Boolean}\n     */\n    canRecognizeWith: function(otherRecognizer) {\n        return !!this.simultaneous[otherRecognizer.id];\n    },\n\n    /**\n     * You should use `tryEmit` instead of `emit` directly to check\n     * that all the needed recognizers has failed before emitting.\n     * @param {Object} input\n     */\n    emit: function(input) {\n        var self = this;\n        var state = this.state;\n\n        function emit(event) {\n            self.manager.emit(event, input);\n        }\n\n        // 'panstart' and 'panmove'\n        if (state < STATE_ENDED) {\n            emit(self.options.event + stateStr(state));\n        }\n\n        emit(self.options.event); // simple 'eventName' events\n\n        if (input.additionalEvent) { // additional event(panleft, panright, pinchin, pinchout...)\n            emit(input.additionalEvent);\n        }\n\n        // panend and pancancel\n        if (state >= STATE_ENDED) {\n            emit(self.options.event + stateStr(state));\n        }\n    },\n\n    /**\n     * Check that all the require failure recognizers has failed,\n     * if true, it emits a gesture event,\n     * otherwise, setup the state to FAILED.\n     * @param {Object} input\n     */\n    tryEmit: function(input) {\n        if (this.canEmit()) {\n            return this.emit(input);\n        }\n        // it's failing anyway\n        this.state = STATE_FAILED;\n    },\n\n    /**\n     * can we emit?\n     * @returns {boolean}\n     */\n    canEmit: function() {\n        var i = 0;\n        while (i < this.requireFail.length) {\n            if (!(this.requireFail[i].state & (STATE_FAILED | STATE_POSSIBLE))) {\n                return false;\n            }\n            i++;\n        }\n        return true;\n    },\n\n    /**\n     * update the recognizer\n     * @param {Object} inputData\n     */\n    recognize: function(inputData) {\n        // make a new copy of the inputData\n        // so we can change the inputData without messing up the other recognizers\n        var inputDataClone = assign({}, inputData);\n\n        // is is enabled and allow recognizing?\n        if (!boolOrFn(this.options.enable, [this, inputDataClone])) {\n            this.reset();\n            this.state = STATE_FAILED;\n            return;\n        }\n\n        // reset when we've reached the end\n        if (this.state & (STATE_RECOGNIZED | STATE_CANCELLED | STATE_FAILED)) {\n            this.state = STATE_POSSIBLE;\n        }\n\n        this.state = this.process(inputDataClone);\n\n        // the recognizer has recognized a gesture\n        // so trigger an event\n        if (this.state & (STATE_BEGAN | STATE_CHANGED | STATE_ENDED | STATE_CANCELLED)) {\n            this.tryEmit(inputDataClone);\n        }\n    },\n\n    /**\n     * return the state of the recognizer\n     * the actual recognizing happens in this method\n     * @virtual\n     * @param {Object} inputData\n     * @returns {Const} STATE\n     */\n    process: function(inputData) { }, // jshint ignore:line\n\n    /**\n     * return the preferred touch-action\n     * @virtual\n     * @returns {Array}\n     */\n    getTouchAction: function() { },\n\n    /**\n     * called when the gesture isn't allowed to recognize\n     * like when another is being recognized or it is disabled\n     * @virtual\n     */\n    reset: function() { }\n};\n\n/**\n * get a usable string, used as event postfix\n * @param {Const} state\n * @returns {String} state\n */\nfunction stateStr(state) {\n    if (state & STATE_CANCELLED) {\n        return 'cancel';\n    } else if (state & STATE_ENDED) {\n        return 'end';\n    } else if (state & STATE_CHANGED) {\n        return 'move';\n    } else if (state & STATE_BEGAN) {\n        return 'start';\n    }\n    return '';\n}\n\n/**\n * direction cons to string\n * @param {Const} direction\n * @returns {String}\n */\nfunction directionStr(direction) {\n    if (direction == DIRECTION_DOWN) {\n        return 'down';\n    } else if (direction == DIRECTION_UP) {\n        return 'up';\n    } else if (direction == DIRECTION_LEFT) {\n        return 'left';\n    } else if (direction == DIRECTION_RIGHT) {\n        return 'right';\n    }\n    return '';\n}\n\n/**\n * get a recognizer by name if it is bound to a manager\n * @param {Recognizer|String} otherRecognizer\n * @param {Recognizer} recognizer\n * @returns {Recognizer}\n */\nfunction getRecognizerByNameIfManager(otherRecognizer, recognizer) {\n    var manager = recognizer.manager;\n    if (manager) {\n        return manager.get(otherRecognizer);\n    }\n    return otherRecognizer;\n}\n\n/**\n * This recognizer is just used as a base for the simple attribute recognizers.\n * @constructor\n * @extends Recognizer\n */\nfunction AttrRecognizer() {\n    Recognizer.apply(this, arguments);\n}\n\ninherit(AttrRecognizer, Recognizer, {\n    /**\n     * @namespace\n     * @memberof AttrRecognizer\n     */\n    defaults: {\n        /**\n         * @type {Number}\n         * @default 1\n         */\n        pointers: 1\n    },\n\n    /**\n     * Used to check if it the recognizer receives valid input, like input.distance > 10.\n     * @memberof AttrRecognizer\n     * @param {Object} input\n     * @returns {Boolean} recognized\n     */\n    attrTest: function(input) {\n        var optionPointers = this.options.pointers;\n        return optionPointers === 0 || input.pointers.length === optionPointers;\n    },\n\n    /**\n     * Process the input and return the state for the recognizer\n     * @memberof AttrRecognizer\n     * @param {Object} input\n     * @returns {*} State\n     */\n    process: function(input) {\n        var state = this.state;\n        var eventType = input.eventType;\n\n        var isRecognized = state & (STATE_BEGAN | STATE_CHANGED);\n        var isValid = this.attrTest(input);\n\n        // on cancel input and we've recognized before, return STATE_CANCELLED\n        if (isRecognized && (eventType & INPUT_CANCEL || !isValid)) {\n            return state | STATE_CANCELLED;\n        } else if (isRecognized || isValid) {\n            if (eventType & INPUT_END) {\n                return state | STATE_ENDED;\n            } else if (!(state & STATE_BEGAN)) {\n                return STATE_BEGAN;\n            }\n            return state | STATE_CHANGED;\n        }\n        return STATE_FAILED;\n    }\n});\n\n/**\n * Pan\n * Recognized when the pointer is down and moved in the allowed direction.\n * @constructor\n * @extends AttrRecognizer\n */\nfunction PanRecognizer() {\n    AttrRecognizer.apply(this, arguments);\n\n    this.pX = null;\n    this.pY = null;\n}\n\ninherit(PanRecognizer, AttrRecognizer, {\n    /**\n     * @namespace\n     * @memberof PanRecognizer\n     */\n    defaults: {\n        event: 'pan',\n        threshold: 10,\n        pointers: 1,\n        direction: DIRECTION_ALL\n    },\n\n    getTouchAction: function() {\n        var direction = this.options.direction;\n        var actions = [];\n        if (direction & DIRECTION_HORIZONTAL) {\n            actions.push(TOUCH_ACTION_PAN_Y);\n        }\n        if (direction & DIRECTION_VERTICAL) {\n            actions.push(TOUCH_ACTION_PAN_X);\n        }\n        return actions;\n    },\n\n    directionTest: function(input) {\n        var options = this.options;\n        var hasMoved = true;\n        var distance = input.distance;\n        var direction = input.direction;\n        var x = input.deltaX;\n        var y = input.deltaY;\n\n        // lock to axis?\n        if (!(direction & options.direction)) {\n            if (options.direction & DIRECTION_HORIZONTAL) {\n                direction = (x === 0) ? DIRECTION_NONE : (x < 0) ? DIRECTION_LEFT : DIRECTION_RIGHT;\n                hasMoved = x != this.pX;\n                distance = Math.abs(input.deltaX);\n            } else {\n                direction = (y === 0) ? DIRECTION_NONE : (y < 0) ? DIRECTION_UP : DIRECTION_DOWN;\n                hasMoved = y != this.pY;\n                distance = Math.abs(input.deltaY);\n            }\n        }\n        input.direction = direction;\n        return hasMoved && distance > options.threshold && direction & options.direction;\n    },\n\n    attrTest: function(input) {\n        return AttrRecognizer.prototype.attrTest.call(this, input) &&\n            (this.state & STATE_BEGAN || (!(this.state & STATE_BEGAN) && this.directionTest(input)));\n    },\n\n    emit: function(input) {\n\n        this.pX = input.deltaX;\n        this.pY = input.deltaY;\n\n        var direction = directionStr(input.direction);\n\n        if (direction) {\n            input.additionalEvent = this.options.event + direction;\n        }\n        this._super.emit.call(this, input);\n    }\n});\n\n/**\n * Pinch\n * Recognized when two or more pointers are moving toward (zoom-in) or away from each other (zoom-out).\n * @constructor\n * @extends AttrRecognizer\n */\nfunction PinchRecognizer() {\n    AttrRecognizer.apply(this, arguments);\n}\n\ninherit(PinchRecognizer, AttrRecognizer, {\n    /**\n     * @namespace\n     * @memberof PinchRecognizer\n     */\n    defaults: {\n        event: 'pinch',\n        threshold: 0,\n        pointers: 2\n    },\n\n    getTouchAction: function() {\n        return [TOUCH_ACTION_NONE];\n    },\n\n    attrTest: function(input) {\n        return this._super.attrTest.call(this, input) &&\n            (Math.abs(input.scale - 1) > this.options.threshold || this.state & STATE_BEGAN);\n    },\n\n    emit: function(input) {\n        if (input.scale !== 1) {\n            var inOut = input.scale < 1 ? 'in' : 'out';\n            input.additionalEvent = this.options.event + inOut;\n        }\n        this._super.emit.call(this, input);\n    }\n});\n\n/**\n * Press\n * Recognized when the pointer is down for x ms without any movement.\n * @constructor\n * @extends Recognizer\n */\nfunction PressRecognizer() {\n    Recognizer.apply(this, arguments);\n\n    this._timer = null;\n    this._input = null;\n}\n\ninherit(PressRecognizer, Recognizer, {\n    /**\n     * @namespace\n     * @memberof PressRecognizer\n     */\n    defaults: {\n        event: 'press',\n        pointers: 1,\n        time: 251, // minimal time of the pointer to be pressed\n        threshold: 9 // a minimal movement is ok, but keep it low\n    },\n\n    getTouchAction: function() {\n        return [TOUCH_ACTION_AUTO];\n    },\n\n    process: function(input) {\n        var options = this.options;\n        var validPointers = input.pointers.length === options.pointers;\n        var validMovement = input.distance < options.threshold;\n        var validTime = input.deltaTime > options.time;\n\n        this._input = input;\n\n        // we only allow little movement\n        // and we've reached an end event, so a tap is possible\n        if (!validMovement || !validPointers || (input.eventType & (INPUT_END | INPUT_CANCEL) && !validTime)) {\n            this.reset();\n        } else if (input.eventType & INPUT_START) {\n            this.reset();\n            this._timer = setTimeoutContext(function() {\n                this.state = STATE_RECOGNIZED;\n                this.tryEmit();\n            }, options.time, this);\n        } else if (input.eventType & INPUT_END) {\n            return STATE_RECOGNIZED;\n        }\n        return STATE_FAILED;\n    },\n\n    reset: function() {\n        clearTimeout(this._timer);\n    },\n\n    emit: function(input) {\n        if (this.state !== STATE_RECOGNIZED) {\n            return;\n        }\n\n        if (input && (input.eventType & INPUT_END)) {\n            this.manager.emit(this.options.event + 'up', input);\n        } else {\n            this._input.timeStamp = now();\n            this.manager.emit(this.options.event, this._input);\n        }\n    }\n});\n\n/**\n * Rotate\n * Recognized when two or more pointer are moving in a circular motion.\n * @constructor\n * @extends AttrRecognizer\n */\nfunction RotateRecognizer() {\n    AttrRecognizer.apply(this, arguments);\n}\n\ninherit(RotateRecognizer, AttrRecognizer, {\n    /**\n     * @namespace\n     * @memberof RotateRecognizer\n     */\n    defaults: {\n        event: 'rotate',\n        threshold: 0,\n        pointers: 2\n    },\n\n    getTouchAction: function() {\n        return [TOUCH_ACTION_NONE];\n    },\n\n    attrTest: function(input) {\n        return this._super.attrTest.call(this, input) &&\n            (Math.abs(input.rotation) > this.options.threshold || this.state & STATE_BEGAN);\n    }\n});\n\n/**\n * Swipe\n * Recognized when the pointer is moving fast (velocity), with enough distance in the allowed direction.\n * @constructor\n * @extends AttrRecognizer\n */\nfunction SwipeRecognizer() {\n    AttrRecognizer.apply(this, arguments);\n}\n\ninherit(SwipeRecognizer, AttrRecognizer, {\n    /**\n     * @namespace\n     * @memberof SwipeRecognizer\n     */\n    defaults: {\n        event: 'swipe',\n        threshold: 10,\n        velocity: 0.3,\n        direction: DIRECTION_HORIZONTAL | DIRECTION_VERTICAL,\n        pointers: 1\n    },\n\n    getTouchAction: function() {\n        return PanRecognizer.prototype.getTouchAction.call(this);\n    },\n\n    attrTest: function(input) {\n        var direction = this.options.direction;\n        var velocity;\n\n        if (direction & (DIRECTION_HORIZONTAL | DIRECTION_VERTICAL)) {\n            velocity = input.overallVelocity;\n        } else if (direction & DIRECTION_HORIZONTAL) {\n            velocity = input.overallVelocityX;\n        } else if (direction & DIRECTION_VERTICAL) {\n            velocity = input.overallVelocityY;\n        }\n\n        return this._super.attrTest.call(this, input) &&\n            direction & input.offsetDirection &&\n            input.distance > this.options.threshold &&\n            input.maxPointers == this.options.pointers &&\n            abs(velocity) > this.options.velocity && input.eventType & INPUT_END;\n    },\n\n    emit: function(input) {\n        var direction = directionStr(input.offsetDirection);\n        if (direction) {\n            this.manager.emit(this.options.event + direction, input);\n        }\n\n        this.manager.emit(this.options.event, input);\n    }\n});\n\n/**\n * A tap is ecognized when the pointer is doing a small tap/click. Multiple taps are recognized if they occur\n * between the given interval and position. The delay option can be used to recognize multi-taps without firing\n * a single tap.\n *\n * The eventData from the emitted event contains the property `tapCount`, which contains the amount of\n * multi-taps being recognized.\n * @constructor\n * @extends Recognizer\n */\nfunction TapRecognizer() {\n    Recognizer.apply(this, arguments);\n\n    // previous time and center,\n    // used for tap counting\n    this.pTime = false;\n    this.pCenter = false;\n\n    this._timer = null;\n    this._input = null;\n    this.count = 0;\n}\n\ninherit(TapRecognizer, Recognizer, {\n    /**\n     * @namespace\n     * @memberof PinchRecognizer\n     */\n    defaults: {\n        event: 'tap',\n        pointers: 1,\n        taps: 1,\n        interval: 300, // max time between the multi-tap taps\n        time: 250, // max time of the pointer to be down (like finger on the screen)\n        threshold: 9, // a minimal movement is ok, but keep it low\n        posThreshold: 10 // a multi-tap can be a bit off the initial position\n    },\n\n    getTouchAction: function() {\n        return [TOUCH_ACTION_MANIPULATION];\n    },\n\n    process: function(input) {\n        var options = this.options;\n\n        var validPointers = input.pointers.length === options.pointers;\n        var validMovement = input.distance < options.threshold;\n        var validTouchTime = input.deltaTime < options.time;\n\n        this.reset();\n\n        if ((input.eventType & INPUT_START) && (this.count === 0)) {\n            return this.failTimeout();\n        }\n\n        // we only allow little movement\n        // and we've reached an end event, so a tap is possible\n        if (validMovement && validTouchTime && validPointers) {\n            if (input.eventType != INPUT_END) {\n                return this.failTimeout();\n            }\n\n            var validInterval = this.pTime ? (input.timeStamp - this.pTime < options.interval) : true;\n            var validMultiTap = !this.pCenter || getDistance(this.pCenter, input.center) < options.posThreshold;\n\n            this.pTime = input.timeStamp;\n            this.pCenter = input.center;\n\n            if (!validMultiTap || !validInterval) {\n                this.count = 1;\n            } else {\n                this.count += 1;\n            }\n\n            this._input = input;\n\n            // if tap count matches we have recognized it,\n            // else it has began recognizing...\n            var tapCount = this.count % options.taps;\n            if (tapCount === 0) {\n                // no failing requirements, immediately trigger the tap event\n                // or wait as long as the multitap interval to trigger\n                if (!this.hasRequireFailures()) {\n                    return STATE_RECOGNIZED;\n                } else {\n                    this._timer = setTimeoutContext(function() {\n                        this.state = STATE_RECOGNIZED;\n                        this.tryEmit();\n                    }, options.interval, this);\n                    return STATE_BEGAN;\n                }\n            }\n        }\n        return STATE_FAILED;\n    },\n\n    failTimeout: function() {\n        this._timer = setTimeoutContext(function() {\n            this.state = STATE_FAILED;\n        }, this.options.interval, this);\n        return STATE_FAILED;\n    },\n\n    reset: function() {\n        clearTimeout(this._timer);\n    },\n\n    emit: function() {\n        if (this.state == STATE_RECOGNIZED) {\n            this._input.tapCount = this.count;\n            this.manager.emit(this.options.event, this._input);\n        }\n    }\n});\n\n/**\n * Simple way to create a manager with a default set of recognizers.\n * @param {HTMLElement} element\n * @param {Object} [options]\n * @constructor\n */\nfunction Hammer(element, options) {\n    options = options || {};\n    options.recognizers = ifUndefined(options.recognizers, Hammer.defaults.preset);\n    return new Manager(element, options);\n}\n\n/**\n * @const {string}\n */\nHammer.VERSION = '2.0.7';\n\n/**\n * default settings\n * @namespace\n */\nHammer.defaults = {\n    /**\n     * set if DOM events are being triggered.\n     * But this is slower and unused by simple implementations, so disabled by default.\n     * @type {Boolean}\n     * @default false\n     */\n    domEvents: false,\n\n    /**\n     * The value for the touchAction property/fallback.\n     * When set to `compute` it will magically set the correct value based on the added recognizers.\n     * @type {String}\n     * @default compute\n     */\n    touchAction: TOUCH_ACTION_COMPUTE,\n\n    /**\n     * @type {Boolean}\n     * @default true\n     */\n    enable: true,\n\n    /**\n     * EXPERIMENTAL FEATURE -- can be removed/changed\n     * Change the parent input target element.\n     * If Null, then it is being set the to main element.\n     * @type {Null|EventTarget}\n     * @default null\n     */\n    inputTarget: null,\n\n    /**\n     * force an input class\n     * @type {Null|Function}\n     * @default null\n     */\n    inputClass: null,\n\n    /**\n     * Default recognizer setup when calling `Hammer()`\n     * When creating a new Manager these will be skipped.\n     * @type {Array}\n     */\n    preset: [\n        // RecognizerClass, options, [recognizeWith, ...], [requireFailure, ...]\n        [RotateRecognizer, {enable: false}],\n        [PinchRecognizer, {enable: false}, ['rotate']],\n        [SwipeRecognizer, {direction: DIRECTION_HORIZONTAL}],\n        [PanRecognizer, {direction: DIRECTION_HORIZONTAL}, ['swipe']],\n        [TapRecognizer],\n        [TapRecognizer, {event: 'doubletap', taps: 2}, ['tap']],\n        [PressRecognizer]\n    ],\n\n    /**\n     * Some CSS properties can be used to improve the working of Hammer.\n     * Add them to this method and they will be set when creating a new Manager.\n     * @namespace\n     */\n    cssProps: {\n        /**\n         * Disables text selection to improve the dragging gesture. Mainly for desktop browsers.\n         * @type {String}\n         * @default 'none'\n         */\n        userSelect: 'none',\n\n        /**\n         * Disable the Windows Phone grippers when pressing an element.\n         * @type {String}\n         * @default 'none'\n         */\n        touchSelect: 'none',\n\n        /**\n         * Disables the default callout shown when you touch and hold a touch target.\n         * On iOS, when you touch and hold a touch target such as a link, Safari displays\n         * a callout containing information about the link. This property allows you to disable that callout.\n         * @type {String}\n         * @default 'none'\n         */\n        touchCallout: 'none',\n\n        /**\n         * Specifies whether zooming is enabled. Used by IE10>\n         * @type {String}\n         * @default 'none'\n         */\n        contentZooming: 'none',\n\n        /**\n         * Specifies that an entire element should be draggable instead of its contents. Mainly for desktop browsers.\n         * @type {String}\n         * @default 'none'\n         */\n        userDrag: 'none',\n\n        /**\n         * Overrides the highlight color shown when the user taps a link or a JavaScript\n         * clickable element in iOS. This property obeys the alpha value, if specified.\n         * @type {String}\n         * @default 'rgba(0,0,0,0)'\n         */\n        tapHighlightColor: 'rgba(0,0,0,0)'\n    }\n};\n\nvar STOP = 1;\nvar FORCED_STOP = 2;\n\n/**\n * Manager\n * @param {HTMLElement} element\n * @param {Object} [options]\n * @constructor\n */\nfunction Manager(element, options) {\n    this.options = assign({}, Hammer.defaults, options || {});\n\n    this.options.inputTarget = this.options.inputTarget || element;\n\n    this.handlers = {};\n    this.session = {};\n    this.recognizers = [];\n    this.oldCssProps = {};\n\n    this.element = element;\n    this.input = createInputInstance(this);\n    this.touchAction = new TouchAction(this, this.options.touchAction);\n\n    toggleCssProps(this, true);\n\n    each(this.options.recognizers, function(item) {\n        var recognizer = this.add(new (item[0])(item[1]));\n        item[2] && recognizer.recognizeWith(item[2]);\n        item[3] && recognizer.requireFailure(item[3]);\n    }, this);\n}\n\nManager.prototype = {\n    /**\n     * set options\n     * @param {Object} options\n     * @returns {Manager}\n     */\n    set: function(options) {\n        assign(this.options, options);\n\n        // Options that need a little more setup\n        if (options.touchAction) {\n            this.touchAction.update();\n        }\n        if (options.inputTarget) {\n            // Clean up existing event listeners and reinitialize\n            this.input.destroy();\n            this.input.target = options.inputTarget;\n            this.input.init();\n        }\n        return this;\n    },\n\n    /**\n     * stop recognizing for this session.\n     * This session will be discarded, when a new [input]start event is fired.\n     * When forced, the recognizer cycle is stopped immediately.\n     * @param {Boolean} [force]\n     */\n    stop: function(force) {\n        this.session.stopped = force ? FORCED_STOP : STOP;\n    },\n\n    /**\n     * run the recognizers!\n     * called by the inputHandler function on every movement of the pointers (touches)\n     * it walks through all the recognizers and tries to detect the gesture that is being made\n     * @param {Object} inputData\n     */\n    recognize: function(inputData) {\n        var session = this.session;\n        if (session.stopped) {\n            return;\n        }\n\n        // run the touch-action polyfill\n        this.touchAction.preventDefaults(inputData);\n\n        var recognizer;\n        var recognizers = this.recognizers;\n\n        // this holds the recognizer that is being recognized.\n        // so the recognizer's state needs to be BEGAN, CHANGED, ENDED or RECOGNIZED\n        // if no recognizer is detecting a thing, it is set to `null`\n        var curRecognizer = session.curRecognizer;\n\n        // reset when the last recognizer is recognized\n        // or when we're in a new session\n        if (!curRecognizer || (curRecognizer && curRecognizer.state & STATE_RECOGNIZED)) {\n            curRecognizer = session.curRecognizer = null;\n        }\n\n        var i = 0;\n        while (i < recognizers.length) {\n            recognizer = recognizers[i];\n\n            // find out if we are allowed try to recognize the input for this one.\n            // 1.   allow if the session is NOT forced stopped (see the .stop() method)\n            // 2.   allow if we still haven't recognized a gesture in this session, or the this recognizer is the one\n            //      that is being recognized.\n            // 3.   allow if the recognizer is allowed to run simultaneous with the current recognized recognizer.\n            //      this can be setup with the `recognizeWith()` method on the recognizer.\n            if (session.stopped !== FORCED_STOP && ( // 1\n                    !curRecognizer || recognizer == curRecognizer || // 2\n                    recognizer.canRecognizeWith(curRecognizer))) { // 3\n                recognizer.recognize(inputData);\n            } else {\n                recognizer.reset();\n            }\n\n            // if the recognizer has been recognizing the input as a valid gesture, we want to store this one as the\n            // current active recognizer. but only if we don't already have an active recognizer\n            if (!curRecognizer && recognizer.state & (STATE_BEGAN | STATE_CHANGED | STATE_ENDED)) {\n                curRecognizer = session.curRecognizer = recognizer;\n            }\n            i++;\n        }\n    },\n\n    /**\n     * get a recognizer by its event name.\n     * @param {Recognizer|String} recognizer\n     * @returns {Recognizer|Null}\n     */\n    get: function(recognizer) {\n        if (recognizer instanceof Recognizer) {\n            return recognizer;\n        }\n\n        var recognizers = this.recognizers;\n        for (var i = 0; i < recognizers.length; i++) {\n            if (recognizers[i].options.event == recognizer) {\n                return recognizers[i];\n            }\n        }\n        return null;\n    },\n\n    /**\n     * add a recognizer to the manager\n     * existing recognizers with the same event name will be removed\n     * @param {Recognizer} recognizer\n     * @returns {Recognizer|Manager}\n     */\n    add: function(recognizer) {\n        if (invokeArrayArg(recognizer, 'add', this)) {\n            return this;\n        }\n\n        // remove existing\n        var existing = this.get(recognizer.options.event);\n        if (existing) {\n            this.remove(existing);\n        }\n\n        this.recognizers.push(recognizer);\n        recognizer.manager = this;\n\n        this.touchAction.update();\n        return recognizer;\n    },\n\n    /**\n     * remove a recognizer by name or instance\n     * @param {Recognizer|String} recognizer\n     * @returns {Manager}\n     */\n    remove: function(recognizer) {\n        if (invokeArrayArg(recognizer, 'remove', this)) {\n            return this;\n        }\n\n        recognizer = this.get(recognizer);\n\n        // let's make sure this recognizer exists\n        if (recognizer) {\n            var recognizers = this.recognizers;\n            var index = inArray(recognizers, recognizer);\n\n            if (index !== -1) {\n                recognizers.splice(index, 1);\n                this.touchAction.update();\n            }\n        }\n\n        return this;\n    },\n\n    /**\n     * bind event\n     * @param {String} events\n     * @param {Function} handler\n     * @returns {EventEmitter} this\n     */\n    on: function(events, handler) {\n        if (events === undefined) {\n            return;\n        }\n        if (handler === undefined) {\n            return;\n        }\n\n        var handlers = this.handlers;\n        each(splitStr(events), function(event) {\n            handlers[event] = handlers[event] || [];\n            handlers[event].push(handler);\n        });\n        return this;\n    },\n\n    /**\n     * unbind event, leave emit blank to remove all handlers\n     * @param {String} events\n     * @param {Function} [handler]\n     * @returns {EventEmitter} this\n     */\n    off: function(events, handler) {\n        if (events === undefined) {\n            return;\n        }\n\n        var handlers = this.handlers;\n        each(splitStr(events), function(event) {\n            if (!handler) {\n                delete handlers[event];\n            } else {\n                handlers[event] && handlers[event].splice(inArray(handlers[event], handler), 1);\n            }\n        });\n        return this;\n    },\n\n    /**\n     * emit event to the listeners\n     * @param {String} event\n     * @param {Object} data\n     */\n    emit: function(event, data) {\n        // we also want to trigger dom events\n        if (this.options.domEvents) {\n            triggerDomEvent(event, data);\n        }\n\n        // no handlers, so skip it all\n        var handlers = this.handlers[event] && this.handlers[event].slice();\n        if (!handlers || !handlers.length) {\n            return;\n        }\n\n        data.type = event;\n        data.preventDefault = function() {\n            data.srcEvent.preventDefault();\n        };\n\n        var i = 0;\n        while (i < handlers.length) {\n            handlers[i](data);\n            i++;\n        }\n    },\n\n    /**\n     * destroy the manager and unbinds all events\n     * it doesn't unbind dom events, that is the user own responsibility\n     */\n    destroy: function() {\n        this.element && toggleCssProps(this, false);\n\n        this.handlers = {};\n        this.session = {};\n        this.input.destroy();\n        this.element = null;\n    }\n};\n\n/**\n * add/remove the css properties as defined in manager.options.cssProps\n * @param {Manager} manager\n * @param {Boolean} add\n */\nfunction toggleCssProps(manager, add) {\n    var element = manager.element;\n    if (!element.style) {\n        return;\n    }\n    var prop;\n    each(manager.options.cssProps, function(value, name) {\n        prop = prefixed(element.style, name);\n        if (add) {\n            manager.oldCssProps[prop] = element.style[prop];\n            element.style[prop] = value;\n        } else {\n            element.style[prop] = manager.oldCssProps[prop] || '';\n        }\n    });\n    if (!add) {\n        manager.oldCssProps = {};\n    }\n}\n\n/**\n * trigger dom event\n * @param {String} event\n * @param {Object} data\n */\nfunction triggerDomEvent(event, data) {\n    var gestureEvent = document.createEvent('Event');\n    gestureEvent.initEvent(event, true, true);\n    gestureEvent.gesture = data;\n    data.target.dispatchEvent(gestureEvent);\n}\n\nassign(Hammer, {\n    INPUT_START: INPUT_START,\n    INPUT_MOVE: INPUT_MOVE,\n    INPUT_END: INPUT_END,\n    INPUT_CANCEL: INPUT_CANCEL,\n\n    STATE_POSSIBLE: STATE_POSSIBLE,\n    STATE_BEGAN: STATE_BEGAN,\n    STATE_CHANGED: STATE_CHANGED,\n    STATE_ENDED: STATE_ENDED,\n    STATE_RECOGNIZED: STATE_RECOGNIZED,\n    STATE_CANCELLED: STATE_CANCELLED,\n    STATE_FAILED: STATE_FAILED,\n\n    DIRECTION_NONE: DIRECTION_NONE,\n    DIRECTION_LEFT: DIRECTION_LEFT,\n    DIRECTION_RIGHT: DIRECTION_RIGHT,\n    DIRECTION_UP: DIRECTION_UP,\n    DIRECTION_DOWN: DIRECTION_DOWN,\n    DIRECTION_HORIZONTAL: DIRECTION_HORIZONTAL,\n    DIRECTION_VERTICAL: DIRECTION_VERTICAL,\n    DIRECTION_ALL: DIRECTION_ALL,\n\n    Manager: Manager,\n    Input: Input,\n    TouchAction: TouchAction,\n\n    TouchInput: TouchInput,\n    MouseInput: MouseInput,\n    PointerEventInput: PointerEventInput,\n    TouchMouseInput: TouchMouseInput,\n    SingleTouchInput: SingleTouchInput,\n\n    Recognizer: Recognizer,\n    AttrRecognizer: AttrRecognizer,\n    Tap: TapRecognizer,\n    Pan: PanRecognizer,\n    Swipe: SwipeRecognizer,\n    Pinch: PinchRecognizer,\n    Rotate: RotateRecognizer,\n    Press: PressRecognizer,\n\n    on: addEventListeners,\n    off: removeEventListeners,\n    each: each,\n    merge: merge,\n    extend: extend,\n    assign: assign,\n    inherit: inherit,\n    bindFn: bindFn,\n    prefixed: prefixed\n});\n\n// this prevents errors when Hammer is loaded in the presence of an AMD\n//  style loader but by script tag, not by the loader.\nvar freeGlobal = (typeof window !== 'undefined' ? window : (typeof self !== 'undefined' ? self : {})); // jshint ignore:line\nfreeGlobal.Hammer = Hammer;\n\nif (typeof define === 'function' && define.amd) {\n    define(function() {\n        return Hammer;\n    });\n} else if (typeof module != 'undefined' && module.exports) {\n    module.exports = Hammer;\n} else {\n    window[exportName] = Hammer;\n}\n\n})(window, document, 'Hammer');\n","'use strict';\n\nvar reactIs = require('react-is');\n\n/**\n * Copyright 2015, Yahoo! Inc.\n * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.\n */\nvar REACT_STATICS = {\n  childContextTypes: true,\n  contextType: true,\n  contextTypes: true,\n  defaultProps: true,\n  displayName: true,\n  getDefaultProps: true,\n  getDerivedStateFromError: true,\n  getDerivedStateFromProps: true,\n  mixins: true,\n  propTypes: true,\n  type: true\n};\nvar KNOWN_STATICS = {\n  name: true,\n  length: true,\n  prototype: true,\n  caller: true,\n  callee: true,\n  arguments: true,\n  arity: true\n};\nvar FORWARD_REF_STATICS = {\n  '$$typeof': true,\n  render: true,\n  defaultProps: true,\n  displayName: true,\n  propTypes: true\n};\nvar MEMO_STATICS = {\n  '$$typeof': true,\n  compare: true,\n  defaultProps: true,\n  displayName: true,\n  propTypes: true,\n  type: true\n};\nvar TYPE_STATICS = {};\nTYPE_STATICS[reactIs.ForwardRef] = FORWARD_REF_STATICS;\nTYPE_STATICS[reactIs.Memo] = MEMO_STATICS;\n\nfunction getStatics(component) {\n  // React v16.11 and below\n  if (reactIs.isMemo(component)) {\n    return MEMO_STATICS;\n  } // React v16.12 and above\n\n\n  return TYPE_STATICS[component['$$typeof']] || REACT_STATICS;\n}\n\nvar defineProperty = Object.defineProperty;\nvar getOwnPropertyNames = Object.getOwnPropertyNames;\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar getPrototypeOf = Object.getPrototypeOf;\nvar objectPrototype = Object.prototype;\nfunction hoistNonReactStatics(targetComponent, sourceComponent, blacklist) {\n  if (typeof sourceComponent !== 'string') {\n    // don't hoist over string (html) components\n    if (objectPrototype) {\n      var inheritedComponent = getPrototypeOf(sourceComponent);\n\n      if (inheritedComponent && inheritedComponent !== objectPrototype) {\n        hoistNonReactStatics(targetComponent, inheritedComponent, blacklist);\n      }\n    }\n\n    var keys = getOwnPropertyNames(sourceComponent);\n\n    if (getOwnPropertySymbols) {\n      keys = keys.concat(getOwnPropertySymbols(sourceComponent));\n    }\n\n    var targetStatics = getStatics(targetComponent);\n    var sourceStatics = getStatics(sourceComponent);\n\n    for (var i = 0; i < keys.length; ++i) {\n      var key = keys[i];\n\n      if (!KNOWN_STATICS[key] && !(blacklist && blacklist[key]) && !(sourceStatics && sourceStatics[key]) && !(targetStatics && targetStatics[key])) {\n        var descriptor = getOwnPropertyDescriptor(sourceComponent, key);\n\n        try {\n          // Avoid failures from read-only properties\n          defineProperty(targetComponent, key, descriptor);\n        } catch (e) {}\n      }\n    }\n  }\n\n  return targetComponent;\n}\n\nmodule.exports = hoistNonReactStatics;\n","/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh <https://feross.org/opensource> */\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\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nfunction _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }\n\nvar csvDownload = function csvDownload(data, name, delimiter) {\n  var items = data;\n  var filename = name || 'export.csv';\n  var d = delimiter || ',';\n\n  var header = Array.from(new Set(items.reduce(function (r, e) {\n    return [].concat(_toConsumableArray(r), _toConsumableArray(Object.keys(e)));\n  }, [])));\n  var csv = items.map(function (row) {\n    return header.map(function (fieldName) {\n      return JSON.stringify(row[fieldName] === 0 ? 0 : row[fieldName] || '');\n    }).join(d);\n  });\n  csv.unshift(header.join(d));\n  csv = csv.join('\\r\\n');\n\n  var blob = new Blob([csv], {\n    type: 'text/plain;charset=utf-8'\n  });\n\n  if (navigator.msSaveBlob) {\n    navigator.msSaveBlob(blob, filename);\n    return;\n  }\n  var link = document.createElement('a');\n  var url = URL.createObjectURL(blob);\n  link.href = url;\n  link.download = filename;\n  link.style.display = 'none';\n  document.body.appendChild(link);\n  link.click();\n  document.body.removeChild(link);\n};\n\nexports.default = csvDownload;","/**\n * lodash (Custom Build) <https://lodash.com/>\n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors <https://jquery.org/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the `TypeError` message for \"Functions\" methods. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/** Used to match leading and trailing whitespace. */\nvar reTrim = /^\\s+|\\s+$/g;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n    nativeMin = Math.min;\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n *   console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n  return root.Date.now();\n};\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n *  Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n *  The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n *  Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n *   'leading': true,\n *   'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n  var lastArgs,\n      lastThis,\n      maxWait,\n      result,\n      timerId,\n      lastCallTime,\n      lastInvokeTime = 0,\n      leading = false,\n      maxing = false,\n      trailing = true;\n\n  if (typeof func != 'function') {\n    throw new TypeError(FUNC_ERROR_TEXT);\n  }\n  wait = toNumber(wait) || 0;\n  if (isObject(options)) {\n    leading = !!options.leading;\n    maxing = 'maxWait' in options;\n    maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n    trailing = 'trailing' in options ? !!options.trailing : trailing;\n  }\n\n  function invokeFunc(time) {\n    var args = lastArgs,\n        thisArg = lastThis;\n\n    lastArgs = lastThis = undefined;\n    lastInvokeTime = time;\n    result = func.apply(thisArg, args);\n    return result;\n  }\n\n  function leadingEdge(time) {\n    // Reset any `maxWait` timer.\n    lastInvokeTime = time;\n    // Start the timer for the trailing edge.\n    timerId = setTimeout(timerExpired, wait);\n    // Invoke the leading edge.\n    return leading ? invokeFunc(time) : result;\n  }\n\n  function remainingWait(time) {\n    var timeSinceLastCall = time - lastCallTime,\n        timeSinceLastInvoke = time - lastInvokeTime,\n        result = wait - timeSinceLastCall;\n\n    return maxing ? nativeMin(result, maxWait - timeSinceLastInvoke) : result;\n  }\n\n  function shouldInvoke(time) {\n    var timeSinceLastCall = time - lastCallTime,\n        timeSinceLastInvoke = time - lastInvokeTime;\n\n    // Either this is the first call, activity has stopped and we're at the\n    // trailing edge, the system time has gone backwards and we're treating\n    // it as the trailing edge, or we've hit the `maxWait` limit.\n    return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n      (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n  }\n\n  function timerExpired() {\n    var time = now();\n    if (shouldInvoke(time)) {\n      return trailingEdge(time);\n    }\n    // Restart the timer.\n    timerId = setTimeout(timerExpired, remainingWait(time));\n  }\n\n  function trailingEdge(time) {\n    timerId = undefined;\n\n    // Only invoke if we have `lastArgs` which means `func` has been\n    // debounced at least once.\n    if (trailing && lastArgs) {\n      return invokeFunc(time);\n    }\n    lastArgs = lastThis = undefined;\n    return result;\n  }\n\n  function cancel() {\n    if (timerId !== undefined) {\n      clearTimeout(timerId);\n    }\n    lastInvokeTime = 0;\n    lastArgs = lastCallTime = lastThis = timerId = undefined;\n  }\n\n  function flush() {\n    return timerId === undefined ? result : trailingEdge(now());\n  }\n\n  function debounced() {\n    var time = now(),\n        isInvoking = shouldInvoke(time);\n\n    lastArgs = arguments;\n    lastThis = this;\n    lastCallTime = time;\n\n    if (isInvoking) {\n      if (timerId === undefined) {\n        return leadingEdge(lastCallTime);\n      }\n      if (maxing) {\n        // Handle invocations in a tight loop.\n        timerId = setTimeout(timerExpired, wait);\n        return invokeFunc(lastCallTime);\n      }\n    }\n    if (timerId === undefined) {\n      timerId = setTimeout(timerExpired, wait);\n    }\n    return result;\n  }\n  debounced.cancel = cancel;\n  debounced.flush = flush;\n  return debounced;\n}\n\n/**\n * Creates a throttled function that only invokes `func` at most once per\n * every `wait` milliseconds. The throttled function comes with a `cancel`\n * method to cancel delayed `func` invocations and a `flush` method to\n * immediately invoke them. Provide `options` to indicate whether `func`\n * should be invoked on the leading and/or trailing edge of the `wait`\n * timeout. The `func` is invoked with the last arguments provided to the\n * throttled function. Subsequent calls to the throttled function return the\n * result of the last `func` invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the throttled function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.throttle` and `_.debounce`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to throttle.\n * @param {number} [wait=0] The number of milliseconds to throttle invocations to.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=true]\n *  Specify invoking on the leading edge of the timeout.\n * @param {boolean} [options.trailing=true]\n *  Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new throttled function.\n * @example\n *\n * // Avoid excessively updating the position while scrolling.\n * jQuery(window).on('scroll', _.throttle(updatePosition, 100));\n *\n * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes.\n * var throttled = _.throttle(renewToken, 300000, { 'trailing': false });\n * jQuery(element).on('click', throttled);\n *\n * // Cancel the trailing throttled invocation.\n * jQuery(window).on('popstate', throttled.cancel);\n */\nfunction throttle(func, wait, options) {\n  var leading = true,\n      trailing = true;\n\n  if (typeof func != 'function') {\n    throw new TypeError(FUNC_ERROR_TEXT);\n  }\n  if (isObject(options)) {\n    leading = 'leading' in options ? !!options.leading : leading;\n    trailing = 'trailing' in options ? !!options.trailing : trailing;\n  }\n  return debounce(func, wait, {\n    'leading': leading,\n    'maxWait': wait,\n    'trailing': trailing\n  });\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n  var type = typeof value;\n  return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n  return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n  return typeof value == 'symbol' ||\n    (isObjectLike(value) && objectToString.call(value) == symbolTag);\n}\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n  if (typeof value == 'number') {\n    return value;\n  }\n  if (isSymbol(value)) {\n    return NAN;\n  }\n  if (isObject(value)) {\n    var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n    value = isObject(other) ? (other + '') : other;\n  }\n  if (typeof value != 'string') {\n    return value === 0 ? value : +value;\n  }\n  value = value.replace(reTrim, '');\n  var isBinary = reIsBinary.test(value);\n  return (isBinary || reIsOctal.test(value))\n    ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n    : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = throttle;\n","var getNative = require('./_getNative'),\n    root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView');\n\nmodule.exports = DataView;\n","var hashClear = require('./_hashClear'),\n    hashDelete = require('./_hashDelete'),\n    hashGet = require('./_hashGet'),\n    hashHas = require('./_hashHas'),\n    hashSet = require('./_hashSet');\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n  var index = -1,\n      length = entries == null ? 0 : entries.length;\n\n  this.clear();\n  while (++index < length) {\n    var entry = entries[index];\n    this.set(entry[0], entry[1]);\n  }\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\nmodule.exports = Hash;\n","var listCacheClear = require('./_listCacheClear'),\n    listCacheDelete = require('./_listCacheDelete'),\n    listCacheGet = require('./_listCacheGet'),\n    listCacheHas = require('./_listCacheHas'),\n    listCacheSet = require('./_listCacheSet');\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n  var index = -1,\n      length = entries == null ? 0 : entries.length;\n\n  this.clear();\n  while (++index < length) {\n    var entry = entries[index];\n    this.set(entry[0], entry[1]);\n  }\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\nmodule.exports = ListCache;\n","var getNative = require('./_getNative'),\n    root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map');\n\nmodule.exports = Map;\n","var mapCacheClear = require('./_mapCacheClear'),\n    mapCacheDelete = require('./_mapCacheDelete'),\n    mapCacheGet = require('./_mapCacheGet'),\n    mapCacheHas = require('./_mapCacheHas'),\n    mapCacheSet = require('./_mapCacheSet');\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n  var index = -1,\n      length = entries == null ? 0 : entries.length;\n\n  this.clear();\n  while (++index < length) {\n    var entry = entries[index];\n    this.set(entry[0], entry[1]);\n  }\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\nmodule.exports = MapCache;\n","var getNative = require('./_getNative'),\n    root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Promise = getNative(root, 'Promise');\n\nmodule.exports = Promise;\n","var getNative = require('./_getNative'),\n    root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Set = getNative(root, 'Set');\n\nmodule.exports = Set;\n","var MapCache = require('./_MapCache'),\n    setCacheAdd = require('./_setCacheAdd'),\n    setCacheHas = require('./_setCacheHas');\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n  var index = -1,\n      length = values == null ? 0 : values.length;\n\n  this.__data__ = new MapCache;\n  while (++index < length) {\n    this.add(values[index]);\n  }\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\nmodule.exports = SetCache;\n","var ListCache = require('./_ListCache'),\n    stackClear = require('./_stackClear'),\n    stackDelete = require('./_stackDelete'),\n    stackGet = require('./_stackGet'),\n    stackHas = require('./_stackHas'),\n    stackSet = require('./_stackSet');\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n  var data = this.__data__ = new ListCache(entries);\n  this.size = data.size;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\nmodule.exports = Stack;\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nmodule.exports = Symbol;\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Uint8Array = root.Uint8Array;\n\nmodule.exports = Uint8Array;\n","var getNative = require('./_getNative'),\n    root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar WeakMap = getNative(root, 'WeakMap');\n\nmodule.exports = WeakMap;\n","/**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\nfunction apply(func, thisArg, args) {\n  switch (args.length) {\n    case 0: return func.call(thisArg);\n    case 1: return func.call(thisArg, args[0]);\n    case 2: return func.call(thisArg, args[0], args[1]);\n    case 3: return func.call(thisArg, args[0], args[1], args[2]);\n  }\n  return func.apply(thisArg, args);\n}\n\nmodule.exports = apply;\n","/**\n * A specialized version of `_.forEach` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\nfunction arrayEach(array, iteratee) {\n  var index = -1,\n      length = array == null ? 0 : array.length;\n\n  while (++index < length) {\n    if (iteratee(array[index], index, array) === false) {\n      break;\n    }\n  }\n  return array;\n}\n\nmodule.exports = arrayEach;\n","/**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction arrayFilter(array, predicate) {\n  var index = -1,\n      length = array == null ? 0 : array.length,\n      resIndex = 0,\n      result = [];\n\n  while (++index < length) {\n    var value = array[index];\n    if (predicate(value, index, array)) {\n      result[resIndex++] = value;\n    }\n  }\n  return result;\n}\n\nmodule.exports = arrayFilter;\n","var baseIndexOf = require('./_baseIndexOf');\n\n/**\n * A specialized version of `_.includes` for arrays without support for\n * specifying an index to search from.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludes(array, value) {\n  var length = array == null ? 0 : array.length;\n  return !!length && baseIndexOf(array, value, 0) > -1;\n}\n\nmodule.exports = arrayIncludes;\n","/**\n * This function is like `arrayIncludes` except that it accepts a comparator.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludesWith(array, value, comparator) {\n  var index = -1,\n      length = array == null ? 0 : array.length;\n\n  while (++index < length) {\n    if (comparator(value, array[index])) {\n      return true;\n    }\n  }\n  return false;\n}\n\nmodule.exports = arrayIncludesWith;\n","var baseTimes = require('./_baseTimes'),\n    isArguments = require('./isArguments'),\n    isArray = require('./isArray'),\n    isBuffer = require('./isBuffer'),\n    isIndex = require('./_isIndex'),\n    isTypedArray = require('./isTypedArray');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n  var isArr = isArray(value),\n      isArg = !isArr && isArguments(value),\n      isBuff = !isArr && !isArg && isBuffer(value),\n      isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n      skipIndexes = isArr || isArg || isBuff || isType,\n      result = skipIndexes ? baseTimes(value.length, String) : [],\n      length = result.length;\n\n  for (var key in value) {\n    if ((inherited || hasOwnProperty.call(value, key)) &&\n        !(skipIndexes && (\n           // Safari 9 has enumerable `arguments.length` in strict mode.\n           key == 'length' ||\n           // Node.js 0.10 has enumerable non-index properties on buffers.\n           (isBuff && (key == 'offset' || key == 'parent')) ||\n           // PhantomJS 2 has enumerable non-index properties on typed arrays.\n           (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n           // Skip index properties.\n           isIndex(key, length)\n        ))) {\n      result.push(key);\n    }\n  }\n  return result;\n}\n\nmodule.exports = arrayLikeKeys;\n","/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n  var index = -1,\n      length = array == null ? 0 : array.length,\n      result = Array(length);\n\n  while (++index < length) {\n    result[index] = iteratee(array[index], index, array);\n  }\n  return result;\n}\n\nmodule.exports = arrayMap;\n","/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n  var index = -1,\n      length = values.length,\n      offset = array.length;\n\n  while (++index < length) {\n    array[offset + index] = values[index];\n  }\n  return array;\n}\n\nmodule.exports = arrayPush;\n","/**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n *  else `false`.\n */\nfunction arraySome(array, predicate) {\n  var index = -1,\n      length = array == null ? 0 : array.length;\n\n  while (++index < length) {\n    if (predicate(array[index], index, array)) {\n      return true;\n    }\n  }\n  return false;\n}\n\nmodule.exports = arraySome;\n","/**\n * Converts an ASCII `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction asciiToArray(string) {\n  return string.split('');\n}\n\nmodule.exports = asciiToArray;\n","var baseAssignValue = require('./_baseAssignValue'),\n    eq = require('./eq');\n\n/**\n * This function is like `assignValue` except that it doesn't assign\n * `undefined` values.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignMergeValue(object, key, value) {\n  if ((value !== undefined && !eq(object[key], value)) ||\n      (value === undefined && !(key in object))) {\n    baseAssignValue(object, key, value);\n  }\n}\n\nmodule.exports = assignMergeValue;\n","var baseAssignValue = require('./_baseAssignValue'),\n    eq = require('./eq');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignValue(object, key, value) {\n  var objValue = object[key];\n  if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n      (value === undefined && !(key in object))) {\n    baseAssignValue(object, key, value);\n  }\n}\n\nmodule.exports = assignValue;\n","var eq = require('./eq');\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n  var length = array.length;\n  while (length--) {\n    if (eq(array[length][0], key)) {\n      return length;\n    }\n  }\n  return -1;\n}\n\nmodule.exports = assocIndexOf;\n","var copyObject = require('./_copyObject'),\n    keys = require('./keys');\n\n/**\n * The base implementation of `_.assign` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\nfunction baseAssign(object, source) {\n  return object && copyObject(source, keys(source), object);\n}\n\nmodule.exports = baseAssign;\n","var copyObject = require('./_copyObject'),\n    keysIn = require('./keysIn');\n\n/**\n * The base implementation of `_.assignIn` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\nfunction baseAssignIn(object, source) {\n  return object && copyObject(source, keysIn(source), object);\n}\n\nmodule.exports = baseAssignIn;\n","var defineProperty = require('./_defineProperty');\n\n/**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction baseAssignValue(object, key, value) {\n  if (key == '__proto__' && defineProperty) {\n    defineProperty(object, key, {\n      'configurable': true,\n      'enumerable': true,\n      'value': value,\n      'writable': true\n    });\n  } else {\n    object[key] = value;\n  }\n}\n\nmodule.exports = baseAssignValue;\n","var Stack = require('./_Stack'),\n    arrayEach = require('./_arrayEach'),\n    assignValue = require('./_assignValue'),\n    baseAssign = require('./_baseAssign'),\n    baseAssignIn = require('./_baseAssignIn'),\n    cloneBuffer = require('./_cloneBuffer'),\n    copyArray = require('./_copyArray'),\n    copySymbols = require('./_copySymbols'),\n    copySymbolsIn = require('./_copySymbolsIn'),\n    getAllKeys = require('./_getAllKeys'),\n    getAllKeysIn = require('./_getAllKeysIn'),\n    getTag = require('./_getTag'),\n    initCloneArray = require('./_initCloneArray'),\n    initCloneByTag = require('./_initCloneByTag'),\n    initCloneObject = require('./_initCloneObject'),\n    isArray = require('./isArray'),\n    isBuffer = require('./isBuffer'),\n    isMap = require('./isMap'),\n    isObject = require('./isObject'),\n    isSet = require('./isSet'),\n    keys = require('./keys'),\n    keysIn = require('./keysIn');\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1,\n    CLONE_FLAT_FLAG = 2,\n    CLONE_SYMBOLS_FLAG = 4;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n    arrayTag = '[object Array]',\n    boolTag = '[object Boolean]',\n    dateTag = '[object Date]',\n    errorTag = '[object Error]',\n    funcTag = '[object Function]',\n    genTag = '[object GeneratorFunction]',\n    mapTag = '[object Map]',\n    numberTag = '[object Number]',\n    objectTag = '[object Object]',\n    regexpTag = '[object RegExp]',\n    setTag = '[object Set]',\n    stringTag = '[object String]',\n    symbolTag = '[object Symbol]',\n    weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n    dataViewTag = '[object DataView]',\n    float32Tag = '[object Float32Array]',\n    float64Tag = '[object Float64Array]',\n    int8Tag = '[object Int8Array]',\n    int16Tag = '[object Int16Array]',\n    int32Tag = '[object Int32Array]',\n    uint8Tag = '[object Uint8Array]',\n    uint8ClampedTag = '[object Uint8ClampedArray]',\n    uint16Tag = '[object Uint16Array]',\n    uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values supported by `_.clone`. */\nvar cloneableTags = {};\ncloneableTags[argsTag] = cloneableTags[arrayTag] =\ncloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =\ncloneableTags[boolTag] = cloneableTags[dateTag] =\ncloneableTags[float32Tag] = cloneableTags[float64Tag] =\ncloneableTags[int8Tag] = cloneableTags[int16Tag] =\ncloneableTags[int32Tag] = cloneableTags[mapTag] =\ncloneableTags[numberTag] = cloneableTags[objectTag] =\ncloneableTags[regexpTag] = cloneableTags[setTag] =\ncloneableTags[stringTag] = cloneableTags[symbolTag] =\ncloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =\ncloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;\ncloneableTags[errorTag] = cloneableTags[funcTag] =\ncloneableTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.clone` and `_.cloneDeep` which tracks\n * traversed objects.\n *\n * @private\n * @param {*} value The value to clone.\n * @param {boolean} bitmask The bitmask flags.\n *  1 - Deep clone\n *  2 - Flatten inherited properties\n *  4 - Clone symbols\n * @param {Function} [customizer] The function to customize cloning.\n * @param {string} [key] The key of `value`.\n * @param {Object} [object] The parent object of `value`.\n * @param {Object} [stack] Tracks traversed objects and their clone counterparts.\n * @returns {*} Returns the cloned value.\n */\nfunction baseClone(value, bitmask, customizer, key, object, stack) {\n  var result,\n      isDeep = bitmask & CLONE_DEEP_FLAG,\n      isFlat = bitmask & CLONE_FLAT_FLAG,\n      isFull = bitmask & CLONE_SYMBOLS_FLAG;\n\n  if (customizer) {\n    result = object ? customizer(value, key, object, stack) : customizer(value);\n  }\n  if (result !== undefined) {\n    return result;\n  }\n  if (!isObject(value)) {\n    return value;\n  }\n  var isArr = isArray(value);\n  if (isArr) {\n    result = initCloneArray(value);\n    if (!isDeep) {\n      return copyArray(value, result);\n    }\n  } else {\n    var tag = getTag(value),\n        isFunc = tag == funcTag || tag == genTag;\n\n    if (isBuffer(value)) {\n      return cloneBuffer(value, isDeep);\n    }\n    if (tag == objectTag || tag == argsTag || (isFunc && !object)) {\n      result = (isFlat || isFunc) ? {} : initCloneObject(value);\n      if (!isDeep) {\n        return isFlat\n          ? copySymbolsIn(value, baseAssignIn(result, value))\n          : copySymbols(value, baseAssign(result, value));\n      }\n    } else {\n      if (!cloneableTags[tag]) {\n        return object ? value : {};\n      }\n      result = initCloneByTag(value, tag, isDeep);\n    }\n  }\n  // Check for circular references and return its corresponding clone.\n  stack || (stack = new Stack);\n  var stacked = stack.get(value);\n  if (stacked) {\n    return stacked;\n  }\n  stack.set(value, result);\n\n  if (isSet(value)) {\n    value.forEach(function(subValue) {\n      result.add(baseClone(subValue, bitmask, customizer, subValue, value, stack));\n    });\n  } else if (isMap(value)) {\n    value.forEach(function(subValue, key) {\n      result.set(key, baseClone(subValue, bitmask, customizer, key, value, stack));\n    });\n  }\n\n  var keysFunc = isFull\n    ? (isFlat ? getAllKeysIn : getAllKeys)\n    : (isFlat ? keysIn : keys);\n\n  var props = isArr ? undefined : keysFunc(value);\n  arrayEach(props || value, function(subValue, key) {\n    if (props) {\n      key = subValue;\n      subValue = value[key];\n    }\n    // Recursively populate clone (susceptible to call stack limits).\n    assignValue(result, key, baseClone(subValue, bitmask, customizer, key, value, stack));\n  });\n  return result;\n}\n\nmodule.exports = baseClone;\n","var isObject = require('./isObject');\n\n/** Built-in value references. */\nvar objectCreate = Object.create;\n\n/**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} proto The object to inherit from.\n * @returns {Object} Returns the new object.\n */\nvar baseCreate = (function() {\n  function object() {}\n  return function(proto) {\n    if (!isObject(proto)) {\n      return {};\n    }\n    if (objectCreate) {\n      return objectCreate(proto);\n    }\n    object.prototype = proto;\n    var result = new object;\n    object.prototype = undefined;\n    return result;\n  };\n}());\n\nmodule.exports = baseCreate;\n","var SetCache = require('./_SetCache'),\n    arrayIncludes = require('./_arrayIncludes'),\n    arrayIncludesWith = require('./_arrayIncludesWith'),\n    arrayMap = require('./_arrayMap'),\n    baseUnary = require('./_baseUnary'),\n    cacheHas = require('./_cacheHas');\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * The base implementation of methods like `_.difference` without support\n * for excluding multiple arrays or iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Array} values The values to exclude.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n */\nfunction baseDifference(array, values, iteratee, comparator) {\n  var index = -1,\n      includes = arrayIncludes,\n      isCommon = true,\n      length = array.length,\n      result = [],\n      valuesLength = values.length;\n\n  if (!length) {\n    return result;\n  }\n  if (iteratee) {\n    values = arrayMap(values, baseUnary(iteratee));\n  }\n  if (comparator) {\n    includes = arrayIncludesWith;\n    isCommon = false;\n  }\n  else if (values.length >= LARGE_ARRAY_SIZE) {\n    includes = cacheHas;\n    isCommon = false;\n    values = new SetCache(values);\n  }\n  outer:\n  while (++index < length) {\n    var value = array[index],\n        computed = iteratee == null ? value : iteratee(value);\n\n    value = (comparator || value !== 0) ? value : 0;\n    if (isCommon && computed === computed) {\n      var valuesIndex = valuesLength;\n      while (valuesIndex--) {\n        if (values[valuesIndex] === computed) {\n          continue outer;\n        }\n      }\n      result.push(value);\n    }\n    else if (!includes(values, computed, comparator)) {\n      result.push(value);\n    }\n  }\n  return result;\n}\n\nmodule.exports = baseDifference;\n","var baseForOwn = require('./_baseForOwn'),\n    createBaseEach = require('./_createBaseEach');\n\n/**\n * The base implementation of `_.forEach` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n */\nvar baseEach = createBaseEach(baseForOwn);\n\nmodule.exports = baseEach;\n","/**\n * The base implementation of `_.findIndex` and `_.findLastIndex` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {number} fromIndex The index to search from.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseFindIndex(array, predicate, fromIndex, fromRight) {\n  var length = array.length,\n      index = fromIndex + (fromRight ? 1 : -1);\n\n  while ((fromRight ? index-- : ++index < length)) {\n    if (predicate(array[index], index, array)) {\n      return index;\n    }\n  }\n  return -1;\n}\n\nmodule.exports = baseFindIndex;\n","var arrayPush = require('./_arrayPush'),\n    isFlattenable = require('./_isFlattenable');\n\n/**\n * The base implementation of `_.flatten` with support for restricting flattening.\n *\n * @private\n * @param {Array} array The array to flatten.\n * @param {number} depth The maximum recursion depth.\n * @param {boolean} [predicate=isFlattenable] The function invoked per iteration.\n * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks.\n * @param {Array} [result=[]] The initial result value.\n * @returns {Array} Returns the new flattened array.\n */\nfunction baseFlatten(array, depth, predicate, isStrict, result) {\n  var index = -1,\n      length = array.length;\n\n  predicate || (predicate = isFlattenable);\n  result || (result = []);\n\n  while (++index < length) {\n    var value = array[index];\n    if (depth > 0 && predicate(value)) {\n      if (depth > 1) {\n        // Recursively flatten arrays (susceptible to call stack limits).\n        baseFlatten(value, depth - 1, predicate, isStrict, result);\n      } else {\n        arrayPush(result, value);\n      }\n    } else if (!isStrict) {\n      result[result.length] = value;\n    }\n  }\n  return result;\n}\n\nmodule.exports = baseFlatten;\n","var createBaseFor = require('./_createBaseFor');\n\n/**\n * The base implementation of `baseForOwn` which iterates over `object`\n * properties returned by `keysFunc` and invokes `iteratee` for each property.\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\nvar baseFor = createBaseFor();\n\nmodule.exports = baseFor;\n","var baseFor = require('./_baseFor'),\n    keys = require('./keys');\n\n/**\n * The base implementation of `_.forOwn` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\nfunction baseForOwn(object, iteratee) {\n  return object && baseFor(object, iteratee, keys);\n}\n\nmodule.exports = baseForOwn;\n","var castPath = require('./_castPath'),\n    toKey = require('./_toKey');\n\n/**\n * The base implementation of `_.get` without support for default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @returns {*} Returns the resolved value.\n */\nfunction baseGet(object, path) {\n  path = castPath(path, object);\n\n  var index = 0,\n      length = path.length;\n\n  while (object != null && index < length) {\n    object = object[toKey(path[index++])];\n  }\n  return (index && index == length) ? object : undefined;\n}\n\nmodule.exports = baseGet;\n","var arrayPush = require('./_arrayPush'),\n    isArray = require('./isArray');\n\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n  var result = keysFunc(object);\n  return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n\nmodule.exports = baseGetAllKeys;\n","var Symbol = require('./_Symbol'),\n    getRawTag = require('./_getRawTag'),\n    objectToString = require('./_objectToString');\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n    undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n  if (value == null) {\n    return value === undefined ? undefinedTag : nullTag;\n  }\n  return (symToStringTag && symToStringTag in Object(value))\n    ? getRawTag(value)\n    : objectToString(value);\n}\n\nmodule.exports = baseGetTag;\n","/**\n * The base implementation of `_.hasIn` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\nfunction baseHasIn(object, key) {\n  return object != null && key in Object(object);\n}\n\nmodule.exports = baseHasIn;\n","var baseFindIndex = require('./_baseFindIndex'),\n    baseIsNaN = require('./_baseIsNaN'),\n    strictIndexOf = require('./_strictIndexOf');\n\n/**\n * The base implementation of `_.indexOf` without `fromIndex` bounds checks.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseIndexOf(array, value, fromIndex) {\n  return value === value\n    ? strictIndexOf(array, value, fromIndex)\n    : baseFindIndex(array, baseIsNaN, fromIndex);\n}\n\nmodule.exports = baseIndexOf;\n","var SetCache = require('./_SetCache'),\n    arrayIncludes = require('./_arrayIncludes'),\n    arrayIncludesWith = require('./_arrayIncludesWith'),\n    arrayMap = require('./_arrayMap'),\n    baseUnary = require('./_baseUnary'),\n    cacheHas = require('./_cacheHas');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMin = Math.min;\n\n/**\n * The base implementation of methods like `_.intersection`, without support\n * for iteratee shorthands, that accepts an array of arrays to inspect.\n *\n * @private\n * @param {Array} arrays The arrays to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of shared values.\n */\nfunction baseIntersection(arrays, iteratee, comparator) {\n  var includes = comparator ? arrayIncludesWith : arrayIncludes,\n      length = arrays[0].length,\n      othLength = arrays.length,\n      othIndex = othLength,\n      caches = Array(othLength),\n      maxLength = Infinity,\n      result = [];\n\n  while (othIndex--) {\n    var array = arrays[othIndex];\n    if (othIndex && iteratee) {\n      array = arrayMap(array, baseUnary(iteratee));\n    }\n    maxLength = nativeMin(array.length, maxLength);\n    caches[othIndex] = !comparator && (iteratee || (length >= 120 && array.length >= 120))\n      ? new SetCache(othIndex && array)\n      : undefined;\n  }\n  array = arrays[0];\n\n  var index = -1,\n      seen = caches[0];\n\n  outer:\n  while (++index < length && result.length < maxLength) {\n    var value = array[index],\n        computed = iteratee ? iteratee(value) : value;\n\n    value = (comparator || value !== 0) ? value : 0;\n    if (!(seen\n          ? cacheHas(seen, computed)\n          : includes(result, computed, comparator)\n        )) {\n      othIndex = othLength;\n      while (--othIndex) {\n        var cache = caches[othIndex];\n        if (!(cache\n              ? cacheHas(cache, computed)\n              : includes(arrays[othIndex], computed, comparator))\n            ) {\n          continue outer;\n        }\n      }\n      if (seen) {\n        seen.push(computed);\n      }\n      result.push(value);\n    }\n  }\n  return result;\n}\n\nmodule.exports = baseIntersection;\n","var baseGetTag = require('./_baseGetTag'),\n    isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]';\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n  return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\nmodule.exports = baseIsArguments;\n","var baseIsEqualDeep = require('./_baseIsEqualDeep'),\n    isObjectLike = require('./isObjectLike');\n\n/**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n *  1 - Unordered comparison\n *  2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\nfunction baseIsEqual(value, other, bitmask, customizer, stack) {\n  if (value === other) {\n    return true;\n  }\n  if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n    return value !== value && other !== other;\n  }\n  return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n}\n\nmodule.exports = baseIsEqual;\n","var Stack = require('./_Stack'),\n    equalArrays = require('./_equalArrays'),\n    equalByTag = require('./_equalByTag'),\n    equalObjects = require('./_equalObjects'),\n    getTag = require('./_getTag'),\n    isArray = require('./isArray'),\n    isBuffer = require('./isBuffer'),\n    isTypedArray = require('./isTypedArray');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n    arrayTag = '[object Array]',\n    objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n  var objIsArr = isArray(object),\n      othIsArr = isArray(other),\n      objTag = objIsArr ? arrayTag : getTag(object),\n      othTag = othIsArr ? arrayTag : getTag(other);\n\n  objTag = objTag == argsTag ? objectTag : objTag;\n  othTag = othTag == argsTag ? objectTag : othTag;\n\n  var objIsObj = objTag == objectTag,\n      othIsObj = othTag == objectTag,\n      isSameTag = objTag == othTag;\n\n  if (isSameTag && isBuffer(object)) {\n    if (!isBuffer(other)) {\n      return false;\n    }\n    objIsArr = true;\n    objIsObj = false;\n  }\n  if (isSameTag && !objIsObj) {\n    stack || (stack = new Stack);\n    return (objIsArr || isTypedArray(object))\n      ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n      : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n  }\n  if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n    var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n        othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n    if (objIsWrapped || othIsWrapped) {\n      var objUnwrapped = objIsWrapped ? object.value() : object,\n          othUnwrapped = othIsWrapped ? other.value() : other;\n\n      stack || (stack = new Stack);\n      return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n    }\n  }\n  if (!isSameTag) {\n    return false;\n  }\n  stack || (stack = new Stack);\n  return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n}\n\nmodule.exports = baseIsEqualDeep;\n","var getTag = require('./_getTag'),\n    isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]';\n\n/**\n * The base implementation of `_.isMap` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n */\nfunction baseIsMap(value) {\n  return isObjectLike(value) && getTag(value) == mapTag;\n}\n\nmodule.exports = baseIsMap;\n","var Stack = require('./_Stack'),\n    baseIsEqual = require('./_baseIsEqual');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n    COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * The base implementation of `_.isMatch` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Array} matchData The property names, values, and compare flags to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n */\nfunction baseIsMatch(object, source, matchData, customizer) {\n  var index = matchData.length,\n      length = index,\n      noCustomizer = !customizer;\n\n  if (object == null) {\n    return !length;\n  }\n  object = Object(object);\n  while (index--) {\n    var data = matchData[index];\n    if ((noCustomizer && data[2])\n          ? data[1] !== object[data[0]]\n          : !(data[0] in object)\n        ) {\n      return false;\n    }\n  }\n  while (++index < length) {\n    data = matchData[index];\n    var key = data[0],\n        objValue = object[key],\n        srcValue = data[1];\n\n    if (noCustomizer && data[2]) {\n      if (objValue === undefined && !(key in object)) {\n        return false;\n      }\n    } else {\n      var stack = new Stack;\n      if (customizer) {\n        var result = customizer(objValue, srcValue, key, object, source, stack);\n      }\n      if (!(result === undefined\n            ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack)\n            : result\n          )) {\n        return false;\n      }\n    }\n  }\n  return true;\n}\n\nmodule.exports = baseIsMatch;\n","/**\n * The base implementation of `_.isNaN` without support for number objects.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n */\nfunction baseIsNaN(value) {\n  return value !== value;\n}\n\nmodule.exports = baseIsNaN;\n","var isFunction = require('./isFunction'),\n    isMasked = require('./_isMasked'),\n    isObject = require('./isObject'),\n    toSource = require('./_toSource');\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n    objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n  funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n  .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n *  else `false`.\n */\nfunction baseIsNative(value) {\n  if (!isObject(value) || isMasked(value)) {\n    return false;\n  }\n  var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n  return pattern.test(toSource(value));\n}\n\nmodule.exports = baseIsNative;\n","var getTag = require('./_getTag'),\n    isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar setTag = '[object Set]';\n\n/**\n * The base implementation of `_.isSet` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n */\nfunction baseIsSet(value) {\n  return isObjectLike(value) && getTag(value) == setTag;\n}\n\nmodule.exports = baseIsSet;\n","var baseGetTag = require('./_baseGetTag'),\n    isLength = require('./isLength'),\n    isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n    arrayTag = '[object Array]',\n    boolTag = '[object Boolean]',\n    dateTag = '[object Date]',\n    errorTag = '[object Error]',\n    funcTag = '[object Function]',\n    mapTag = '[object Map]',\n    numberTag = '[object Number]',\n    objectTag = '[object Object]',\n    regexpTag = '[object RegExp]',\n    setTag = '[object Set]',\n    stringTag = '[object String]',\n    weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n    dataViewTag = '[object DataView]',\n    float32Tag = '[object Float32Array]',\n    float64Tag = '[object Float64Array]',\n    int8Tag = '[object Int8Array]',\n    int16Tag = '[object Int16Array]',\n    int32Tag = '[object Int32Array]',\n    uint8Tag = '[object Uint8Array]',\n    uint8ClampedTag = '[object Uint8ClampedArray]',\n    uint16Tag = '[object Uint16Array]',\n    uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n  return isObjectLike(value) &&\n    isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\nmodule.exports = baseIsTypedArray;\n","var baseMatches = require('./_baseMatches'),\n    baseMatchesProperty = require('./_baseMatchesProperty'),\n    identity = require('./identity'),\n    isArray = require('./isArray'),\n    property = require('./property');\n\n/**\n * The base implementation of `_.iteratee`.\n *\n * @private\n * @param {*} [value=_.identity] The value to convert to an iteratee.\n * @returns {Function} Returns the iteratee.\n */\nfunction baseIteratee(value) {\n  // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.\n  // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.\n  if (typeof value == 'function') {\n    return value;\n  }\n  if (value == null) {\n    return identity;\n  }\n  if (typeof value == 'object') {\n    return isArray(value)\n      ? baseMatchesProperty(value[0], value[1])\n      : baseMatches(value);\n  }\n  return property(value);\n}\n\nmodule.exports = baseIteratee;\n","var isPrototype = require('./_isPrototype'),\n    nativeKeys = require('./_nativeKeys');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n  if (!isPrototype(object)) {\n    return nativeKeys(object);\n  }\n  var result = [];\n  for (var key in Object(object)) {\n    if (hasOwnProperty.call(object, key) && key != 'constructor') {\n      result.push(key);\n    }\n  }\n  return result;\n}\n\nmodule.exports = baseKeys;\n","var isObject = require('./isObject'),\n    isPrototype = require('./_isPrototype'),\n    nativeKeysIn = require('./_nativeKeysIn');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeysIn(object) {\n  if (!isObject(object)) {\n    return nativeKeysIn(object);\n  }\n  var isProto = isPrototype(object),\n      result = [];\n\n  for (var key in object) {\n    if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n      result.push(key);\n    }\n  }\n  return result;\n}\n\nmodule.exports = baseKeysIn;\n","var baseEach = require('./_baseEach'),\n    isArrayLike = require('./isArrayLike');\n\n/**\n * The base implementation of `_.map` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction baseMap(collection, iteratee) {\n  var index = -1,\n      result = isArrayLike(collection) ? Array(collection.length) : [];\n\n  baseEach(collection, function(value, key, collection) {\n    result[++index] = iteratee(value, key, collection);\n  });\n  return result;\n}\n\nmodule.exports = baseMap;\n","var baseIsMatch = require('./_baseIsMatch'),\n    getMatchData = require('./_getMatchData'),\n    matchesStrictComparable = require('./_matchesStrictComparable');\n\n/**\n * The base implementation of `_.matches` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatches(source) {\n  var matchData = getMatchData(source);\n  if (matchData.length == 1 && matchData[0][2]) {\n    return matchesStrictComparable(matchData[0][0], matchData[0][1]);\n  }\n  return function(object) {\n    return object === source || baseIsMatch(object, source, matchData);\n  };\n}\n\nmodule.exports = baseMatches;\n","var baseIsEqual = require('./_baseIsEqual'),\n    get = require('./get'),\n    hasIn = require('./hasIn'),\n    isKey = require('./_isKey'),\n    isStrictComparable = require('./_isStrictComparable'),\n    matchesStrictComparable = require('./_matchesStrictComparable'),\n    toKey = require('./_toKey');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n    COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.\n *\n * @private\n * @param {string} path The path of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatchesProperty(path, srcValue) {\n  if (isKey(path) && isStrictComparable(srcValue)) {\n    return matchesStrictComparable(toKey(path), srcValue);\n  }\n  return function(object) {\n    var objValue = get(object, path);\n    return (objValue === undefined && objValue === srcValue)\n      ? hasIn(object, path)\n      : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);\n  };\n}\n\nmodule.exports = baseMatchesProperty;\n","var Stack = require('./_Stack'),\n    assignMergeValue = require('./_assignMergeValue'),\n    baseFor = require('./_baseFor'),\n    baseMergeDeep = require('./_baseMergeDeep'),\n    isObject = require('./isObject'),\n    keysIn = require('./keysIn'),\n    safeGet = require('./_safeGet');\n\n/**\n * The base implementation of `_.merge` without support for multiple sources.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} [customizer] The function to customize merged values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n *  counterparts.\n */\nfunction baseMerge(object, source, srcIndex, customizer, stack) {\n  if (object === source) {\n    return;\n  }\n  baseFor(source, function(srcValue, key) {\n    stack || (stack = new Stack);\n    if (isObject(srcValue)) {\n      baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack);\n    }\n    else {\n      var newValue = customizer\n        ? customizer(safeGet(object, key), srcValue, (key + ''), object, source, stack)\n        : undefined;\n\n      if (newValue === undefined) {\n        newValue = srcValue;\n      }\n      assignMergeValue(object, key, newValue);\n    }\n  }, keysIn);\n}\n\nmodule.exports = baseMerge;\n","var assignMergeValue = require('./_assignMergeValue'),\n    cloneBuffer = require('./_cloneBuffer'),\n    cloneTypedArray = require('./_cloneTypedArray'),\n    copyArray = require('./_copyArray'),\n    initCloneObject = require('./_initCloneObject'),\n    isArguments = require('./isArguments'),\n    isArray = require('./isArray'),\n    isArrayLikeObject = require('./isArrayLikeObject'),\n    isBuffer = require('./isBuffer'),\n    isFunction = require('./isFunction'),\n    isObject = require('./isObject'),\n    isPlainObject = require('./isPlainObject'),\n    isTypedArray = require('./isTypedArray'),\n    safeGet = require('./_safeGet'),\n    toPlainObject = require('./toPlainObject');\n\n/**\n * A specialized version of `baseMerge` for arrays and objects which performs\n * deep merges and tracks traversed objects enabling objects with circular\n * references to be merged.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {string} key The key of the value to merge.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} mergeFunc The function to merge values.\n * @param {Function} [customizer] The function to customize assigned values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n *  counterparts.\n */\nfunction baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) {\n  var objValue = safeGet(object, key),\n      srcValue = safeGet(source, key),\n      stacked = stack.get(srcValue);\n\n  if (stacked) {\n    assignMergeValue(object, key, stacked);\n    return;\n  }\n  var newValue = customizer\n    ? customizer(objValue, srcValue, (key + ''), object, source, stack)\n    : undefined;\n\n  var isCommon = newValue === undefined;\n\n  if (isCommon) {\n    var isArr = isArray(srcValue),\n        isBuff = !isArr && isBuffer(srcValue),\n        isTyped = !isArr && !isBuff && isTypedArray(srcValue);\n\n    newValue = srcValue;\n    if (isArr || isBuff || isTyped) {\n      if (isArray(objValue)) {\n        newValue = objValue;\n      }\n      else if (isArrayLikeObject(objValue)) {\n        newValue = copyArray(objValue);\n      }\n      else if (isBuff) {\n        isCommon = false;\n        newValue = cloneBuffer(srcValue, true);\n      }\n      else if (isTyped) {\n        isCommon = false;\n        newValue = cloneTypedArray(srcValue, true);\n      }\n      else {\n        newValue = [];\n      }\n    }\n    else if (isPlainObject(srcValue) || isArguments(srcValue)) {\n      newValue = objValue;\n      if (isArguments(objValue)) {\n        newValue = toPlainObject(objValue);\n      }\n      else if (!isObject(objValue) || isFunction(objValue)) {\n        newValue = initCloneObject(srcValue);\n      }\n    }\n    else {\n      isCommon = false;\n    }\n  }\n  if (isCommon) {\n    // Recursively merge objects and arrays (susceptible to call stack limits).\n    stack.set(srcValue, newValue);\n    mergeFunc(newValue, srcValue, srcIndex, customizer, stack);\n    stack['delete'](srcValue);\n  }\n  assignMergeValue(object, key, newValue);\n}\n\nmodule.exports = baseMergeDeep;\n","var arrayMap = require('./_arrayMap'),\n    baseGet = require('./_baseGet'),\n    baseIteratee = require('./_baseIteratee'),\n    baseMap = require('./_baseMap'),\n    baseSortBy = require('./_baseSortBy'),\n    baseUnary = require('./_baseUnary'),\n    compareMultiple = require('./_compareMultiple'),\n    identity = require('./identity'),\n    isArray = require('./isArray');\n\n/**\n * The base implementation of `_.orderBy` without param guards.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function[]|Object[]|string[]} iteratees The iteratees to sort by.\n * @param {string[]} orders The sort orders of `iteratees`.\n * @returns {Array} Returns the new sorted array.\n */\nfunction baseOrderBy(collection, iteratees, orders) {\n  if (iteratees.length) {\n    iteratees = arrayMap(iteratees, function(iteratee) {\n      if (isArray(iteratee)) {\n        return function(value) {\n          return baseGet(value, iteratee.length === 1 ? iteratee[0] : iteratee);\n        };\n      }\n      return iteratee;\n    });\n  } else {\n    iteratees = [identity];\n  }\n\n  var index = -1;\n  iteratees = arrayMap(iteratees, baseUnary(baseIteratee));\n\n  var result = baseMap(collection, function(value, key, collection) {\n    var criteria = arrayMap(iteratees, function(iteratee) {\n      return iteratee(value);\n    });\n    return { 'criteria': criteria, 'index': ++index, 'value': value };\n  });\n\n  return baseSortBy(result, function(object, other) {\n    return compareMultiple(object, other, orders);\n  });\n}\n\nmodule.exports = baseOrderBy;\n","var basePickBy = require('./_basePickBy'),\n    hasIn = require('./hasIn');\n\n/**\n * The base implementation of `_.pick` without support for individual\n * property identifiers.\n *\n * @private\n * @param {Object} object The source object.\n * @param {string[]} paths The property paths to pick.\n * @returns {Object} Returns the new object.\n */\nfunction basePick(object, paths) {\n  return basePickBy(object, paths, function(value, path) {\n    return hasIn(object, path);\n  });\n}\n\nmodule.exports = basePick;\n","var baseGet = require('./_baseGet'),\n    baseSet = require('./_baseSet'),\n    castPath = require('./_castPath');\n\n/**\n * The base implementation of  `_.pickBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The source object.\n * @param {string[]} paths The property paths to pick.\n * @param {Function} predicate The function invoked per property.\n * @returns {Object} Returns the new object.\n */\nfunction basePickBy(object, paths, predicate) {\n  var index = -1,\n      length = paths.length,\n      result = {};\n\n  while (++index < length) {\n    var path = paths[index],\n        value = baseGet(object, path);\n\n    if (predicate(value, path)) {\n      baseSet(result, castPath(path, object), value);\n    }\n  }\n  return result;\n}\n\nmodule.exports = basePickBy;\n","/**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction baseProperty(key) {\n  return function(object) {\n    return object == null ? undefined : object[key];\n  };\n}\n\nmodule.exports = baseProperty;\n","var baseGet = require('./_baseGet');\n\n/**\n * A specialized version of `baseProperty` which supports deep paths.\n *\n * @private\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction basePropertyDeep(path) {\n  return function(object) {\n    return baseGet(object, path);\n  };\n}\n\nmodule.exports = basePropertyDeep;\n","var identity = require('./identity'),\n    overRest = require('./_overRest'),\n    setToString = require('./_setToString');\n\n/**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\nfunction baseRest(func, start) {\n  return setToString(overRest(func, start, identity), func + '');\n}\n\nmodule.exports = baseRest;\n","var assignValue = require('./_assignValue'),\n    castPath = require('./_castPath'),\n    isIndex = require('./_isIndex'),\n    isObject = require('./isObject'),\n    toKey = require('./_toKey');\n\n/**\n * The base implementation of `_.set`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @param {Function} [customizer] The function to customize path creation.\n * @returns {Object} Returns `object`.\n */\nfunction baseSet(object, path, value, customizer) {\n  if (!isObject(object)) {\n    return object;\n  }\n  path = castPath(path, object);\n\n  var index = -1,\n      length = path.length,\n      lastIndex = length - 1,\n      nested = object;\n\n  while (nested != null && ++index < length) {\n    var key = toKey(path[index]),\n        newValue = value;\n\n    if (key === '__proto__' || key === 'constructor' || key === 'prototype') {\n      return object;\n    }\n\n    if (index != lastIndex) {\n      var objValue = nested[key];\n      newValue = customizer ? customizer(objValue, key, nested) : undefined;\n      if (newValue === undefined) {\n        newValue = isObject(objValue)\n          ? objValue\n          : (isIndex(path[index + 1]) ? [] : {});\n      }\n    }\n    assignValue(nested, key, newValue);\n    nested = nested[key];\n  }\n  return object;\n}\n\nmodule.exports = baseSet;\n","var constant = require('./constant'),\n    defineProperty = require('./_defineProperty'),\n    identity = require('./identity');\n\n/**\n * The base implementation of `setToString` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar baseSetToString = !defineProperty ? identity : function(func, string) {\n  return defineProperty(func, 'toString', {\n    'configurable': true,\n    'enumerable': false,\n    'value': constant(string),\n    'writable': true\n  });\n};\n\nmodule.exports = baseSetToString;\n","/**\n * The base implementation of `_.slice` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\nfunction baseSlice(array, start, end) {\n  var index = -1,\n      length = array.length;\n\n  if (start < 0) {\n    start = -start > length ? 0 : (length + start);\n  }\n  end = end > length ? length : end;\n  if (end < 0) {\n    end += length;\n  }\n  length = start > end ? 0 : ((end - start) >>> 0);\n  start >>>= 0;\n\n  var result = Array(length);\n  while (++index < length) {\n    result[index] = array[index + start];\n  }\n  return result;\n}\n\nmodule.exports = baseSlice;\n","/**\n * The base implementation of `_.sortBy` which uses `comparer` to define the\n * sort order of `array` and replaces criteria objects with their corresponding\n * values.\n *\n * @private\n * @param {Array} array The array to sort.\n * @param {Function} comparer The function to define sort order.\n * @returns {Array} Returns `array`.\n */\nfunction baseSortBy(array, comparer) {\n  var length = array.length;\n\n  array.sort(comparer);\n  while (length--) {\n    array[length] = array[length].value;\n  }\n  return array;\n}\n\nmodule.exports = baseSortBy;\n","/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n  var index = -1,\n      result = Array(n);\n\n  while (++index < n) {\n    result[index] = iteratee(index);\n  }\n  return result;\n}\n\nmodule.exports = baseTimes;\n","var Symbol = require('./_Symbol'),\n    arrayMap = require('./_arrayMap'),\n    isArray = require('./isArray'),\n    isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n    symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n  // Exit early for strings to avoid a performance hit in some environments.\n  if (typeof value == 'string') {\n    return value;\n  }\n  if (isArray(value)) {\n    // Recursively convert values (susceptible to call stack limits).\n    return arrayMap(value, baseToString) + '';\n  }\n  if (isSymbol(value)) {\n    return symbolToString ? symbolToString.call(value) : '';\n  }\n  var result = (value + '');\n  return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nmodule.exports = baseToString;\n","var trimmedEndIndex = require('./_trimmedEndIndex');\n\n/** Used to match leading whitespace. */\nvar reTrimStart = /^\\s+/;\n\n/**\n * The base implementation of `_.trim`.\n *\n * @private\n * @param {string} string The string to trim.\n * @returns {string} Returns the trimmed string.\n */\nfunction baseTrim(string) {\n  return string\n    ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, '')\n    : string;\n}\n\nmodule.exports = baseTrim;\n","/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n  return function(value) {\n    return func(value);\n  };\n}\n\nmodule.exports = baseUnary;\n","var SetCache = require('./_SetCache'),\n    arrayIncludes = require('./_arrayIncludes'),\n    arrayIncludesWith = require('./_arrayIncludesWith'),\n    cacheHas = require('./_cacheHas'),\n    createSet = require('./_createSet'),\n    setToArray = require('./_setToArray');\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * The base implementation of `_.uniqBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n */\nfunction baseUniq(array, iteratee, comparator) {\n  var index = -1,\n      includes = arrayIncludes,\n      length = array.length,\n      isCommon = true,\n      result = [],\n      seen = result;\n\n  if (comparator) {\n    isCommon = false;\n    includes = arrayIncludesWith;\n  }\n  else if (length >= LARGE_ARRAY_SIZE) {\n    var set = iteratee ? null : createSet(array);\n    if (set) {\n      return setToArray(set);\n    }\n    isCommon = false;\n    includes = cacheHas;\n    seen = new SetCache;\n  }\n  else {\n    seen = iteratee ? [] : result;\n  }\n  outer:\n  while (++index < length) {\n    var value = array[index],\n        computed = iteratee ? iteratee(value) : value;\n\n    value = (comparator || value !== 0) ? value : 0;\n    if (isCommon && computed === computed) {\n      var seenIndex = seen.length;\n      while (seenIndex--) {\n        if (seen[seenIndex] === computed) {\n          continue outer;\n        }\n      }\n      if (iteratee) {\n        seen.push(computed);\n      }\n      result.push(value);\n    }\n    else if (!includes(seen, computed, comparator)) {\n      if (seen !== result) {\n        seen.push(computed);\n      }\n      result.push(value);\n    }\n  }\n  return result;\n}\n\nmodule.exports = baseUniq;\n","/**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction cacheHas(cache, key) {\n  return cache.has(key);\n}\n\nmodule.exports = cacheHas;\n","var isArrayLikeObject = require('./isArrayLikeObject');\n\n/**\n * Casts `value` to an empty array if it's not an array like object.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Array|Object} Returns the cast array-like object.\n */\nfunction castArrayLikeObject(value) {\n  return isArrayLikeObject(value) ? value : [];\n}\n\nmodule.exports = castArrayLikeObject;\n","var isArray = require('./isArray'),\n    isKey = require('./_isKey'),\n    stringToPath = require('./_stringToPath'),\n    toString = require('./toString');\n\n/**\n * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {Object} [object] The object to query keys on.\n * @returns {Array} Returns the cast property path array.\n */\nfunction castPath(value, object) {\n  if (isArray(value)) {\n    return value;\n  }\n  return isKey(value, object) ? [value] : stringToPath(toString(value));\n}\n\nmodule.exports = castPath;\n","var baseSlice = require('./_baseSlice');\n\n/**\n * Casts `array` to a slice if it's needed.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {number} start The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the cast slice.\n */\nfunction castSlice(array, start, end) {\n  var length = array.length;\n  end = end === undefined ? length : end;\n  return (!start && end >= length) ? array : baseSlice(array, start, end);\n}\n\nmodule.exports = castSlice;\n","var Uint8Array = require('./_Uint8Array');\n\n/**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\nfunction cloneArrayBuffer(arrayBuffer) {\n  var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n  new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n  return result;\n}\n\nmodule.exports = cloneArrayBuffer;\n","var root = require('./_root');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined,\n    allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined;\n\n/**\n * Creates a clone of  `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\nfunction cloneBuffer(buffer, isDeep) {\n  if (isDeep) {\n    return buffer.slice();\n  }\n  var length = buffer.length,\n      result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);\n\n  buffer.copy(result);\n  return result;\n}\n\nmodule.exports = cloneBuffer;\n","var cloneArrayBuffer = require('./_cloneArrayBuffer');\n\n/**\n * Creates a clone of `dataView`.\n *\n * @private\n * @param {Object} dataView The data view to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned data view.\n */\nfunction cloneDataView(dataView, isDeep) {\n  var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;\n  return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);\n}\n\nmodule.exports = cloneDataView;\n","/** Used to match `RegExp` flags from their coerced string values. */\nvar reFlags = /\\w*$/;\n\n/**\n * Creates a clone of `regexp`.\n *\n * @private\n * @param {Object} regexp The regexp to clone.\n * @returns {Object} Returns the cloned regexp.\n */\nfunction cloneRegExp(regexp) {\n  var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));\n  result.lastIndex = regexp.lastIndex;\n  return result;\n}\n\nmodule.exports = cloneRegExp;\n","var Symbol = require('./_Symbol');\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n    symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * Creates a clone of the `symbol` object.\n *\n * @private\n * @param {Object} symbol The symbol object to clone.\n * @returns {Object} Returns the cloned symbol object.\n */\nfunction cloneSymbol(symbol) {\n  return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};\n}\n\nmodule.exports = cloneSymbol;\n","var cloneArrayBuffer = require('./_cloneArrayBuffer');\n\n/**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\nfunction cloneTypedArray(typedArray, isDeep) {\n  var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n  return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n}\n\nmodule.exports = cloneTypedArray;\n","var isSymbol = require('./isSymbol');\n\n/**\n * Compares values to sort them in ascending order.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {number} Returns the sort order indicator for `value`.\n */\nfunction compareAscending(value, other) {\n  if (value !== other) {\n    var valIsDefined = value !== undefined,\n        valIsNull = value === null,\n        valIsReflexive = value === value,\n        valIsSymbol = isSymbol(value);\n\n    var othIsDefined = other !== undefined,\n        othIsNull = other === null,\n        othIsReflexive = other === other,\n        othIsSymbol = isSymbol(other);\n\n    if ((!othIsNull && !othIsSymbol && !valIsSymbol && value > other) ||\n        (valIsSymbol && othIsDefined && othIsReflexive && !othIsNull && !othIsSymbol) ||\n        (valIsNull && othIsDefined && othIsReflexive) ||\n        (!valIsDefined && othIsReflexive) ||\n        !valIsReflexive) {\n      return 1;\n    }\n    if ((!valIsNull && !valIsSymbol && !othIsSymbol && value < other) ||\n        (othIsSymbol && valIsDefined && valIsReflexive && !valIsNull && !valIsSymbol) ||\n        (othIsNull && valIsDefined && valIsReflexive) ||\n        (!othIsDefined && valIsReflexive) ||\n        !othIsReflexive) {\n      return -1;\n    }\n  }\n  return 0;\n}\n\nmodule.exports = compareAscending;\n","var compareAscending = require('./_compareAscending');\n\n/**\n * Used by `_.orderBy` to compare multiple properties of a value to another\n * and stable sort them.\n *\n * If `orders` is unspecified, all values are sorted in ascending order. Otherwise,\n * specify an order of \"desc\" for descending or \"asc\" for ascending sort order\n * of corresponding values.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {boolean[]|string[]} orders The order to sort by for each property.\n * @returns {number} Returns the sort order indicator for `object`.\n */\nfunction compareMultiple(object, other, orders) {\n  var index = -1,\n      objCriteria = object.criteria,\n      othCriteria = other.criteria,\n      length = objCriteria.length,\n      ordersLength = orders.length;\n\n  while (++index < length) {\n    var result = compareAscending(objCriteria[index], othCriteria[index]);\n    if (result) {\n      if (index >= ordersLength) {\n        return result;\n      }\n      var order = orders[index];\n      return result * (order == 'desc' ? -1 : 1);\n    }\n  }\n  // Fixes an `Array#sort` bug in the JS engine embedded in Adobe applications\n  // that causes it, under certain circumstances, to provide the same value for\n  // `object` and `other`. See https://github.com/jashkenas/underscore/pull/1247\n  // for more details.\n  //\n  // This also ensures a stable sort in V8 and other engines.\n  // See https://bugs.chromium.org/p/v8/issues/detail?id=90 for more details.\n  return object.index - other.index;\n}\n\nmodule.exports = compareMultiple;\n","/**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\nfunction copyArray(source, array) {\n  var index = -1,\n      length = source.length;\n\n  array || (array = Array(length));\n  while (++index < length) {\n    array[index] = source[index];\n  }\n  return array;\n}\n\nmodule.exports = copyArray;\n","var assignValue = require('./_assignValue'),\n    baseAssignValue = require('./_baseAssignValue');\n\n/**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\nfunction copyObject(source, props, object, customizer) {\n  var isNew = !object;\n  object || (object = {});\n\n  var index = -1,\n      length = props.length;\n\n  while (++index < length) {\n    var key = props[index];\n\n    var newValue = customizer\n      ? customizer(object[key], source[key], key, object, source)\n      : undefined;\n\n    if (newValue === undefined) {\n      newValue = source[key];\n    }\n    if (isNew) {\n      baseAssignValue(object, key, newValue);\n    } else {\n      assignValue(object, key, newValue);\n    }\n  }\n  return object;\n}\n\nmodule.exports = copyObject;\n","var copyObject = require('./_copyObject'),\n    getSymbols = require('./_getSymbols');\n\n/**\n * Copies own symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\nfunction copySymbols(source, object) {\n  return copyObject(source, getSymbols(source), object);\n}\n\nmodule.exports = copySymbols;\n","var copyObject = require('./_copyObject'),\n    getSymbolsIn = require('./_getSymbolsIn');\n\n/**\n * Copies own and inherited symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\nfunction copySymbolsIn(source, object) {\n  return copyObject(source, getSymbolsIn(source), object);\n}\n\nmodule.exports = copySymbolsIn;\n","var root = require('./_root');\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\nmodule.exports = coreJsData;\n","var baseRest = require('./_baseRest'),\n    isIterateeCall = require('./_isIterateeCall');\n\n/**\n * Creates a function like `_.assign`.\n *\n * @private\n * @param {Function} assigner The function to assign values.\n * @returns {Function} Returns the new assigner function.\n */\nfunction createAssigner(assigner) {\n  return baseRest(function(object, sources) {\n    var index = -1,\n        length = sources.length,\n        customizer = length > 1 ? sources[length - 1] : undefined,\n        guard = length > 2 ? sources[2] : undefined;\n\n    customizer = (assigner.length > 3 && typeof customizer == 'function')\n      ? (length--, customizer)\n      : undefined;\n\n    if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n      customizer = length < 3 ? undefined : customizer;\n      length = 1;\n    }\n    object = Object(object);\n    while (++index < length) {\n      var source = sources[index];\n      if (source) {\n        assigner(object, source, index, customizer);\n      }\n    }\n    return object;\n  });\n}\n\nmodule.exports = createAssigner;\n","var isArrayLike = require('./isArrayLike');\n\n/**\n * Creates a `baseEach` or `baseEachRight` function.\n *\n * @private\n * @param {Function} eachFunc The function to iterate over a collection.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseEach(eachFunc, fromRight) {\n  return function(collection, iteratee) {\n    if (collection == null) {\n      return collection;\n    }\n    if (!isArrayLike(collection)) {\n      return eachFunc(collection, iteratee);\n    }\n    var length = collection.length,\n        index = fromRight ? length : -1,\n        iterable = Object(collection);\n\n    while ((fromRight ? index-- : ++index < length)) {\n      if (iteratee(iterable[index], index, iterable) === false) {\n        break;\n      }\n    }\n    return collection;\n  };\n}\n\nmodule.exports = createBaseEach;\n","/**\n * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseFor(fromRight) {\n  return function(object, iteratee, keysFunc) {\n    var index = -1,\n        iterable = Object(object),\n        props = keysFunc(object),\n        length = props.length;\n\n    while (length--) {\n      var key = props[fromRight ? length : ++index];\n      if (iteratee(iterable[key], key, iterable) === false) {\n        break;\n      }\n    }\n    return object;\n  };\n}\n\nmodule.exports = createBaseFor;\n","var castSlice = require('./_castSlice'),\n    hasUnicode = require('./_hasUnicode'),\n    stringToArray = require('./_stringToArray'),\n    toString = require('./toString');\n\n/**\n * Creates a function like `_.lowerFirst`.\n *\n * @private\n * @param {string} methodName The name of the `String` case method to use.\n * @returns {Function} Returns the new case function.\n */\nfunction createCaseFirst(methodName) {\n  return function(string) {\n    string = toString(string);\n\n    var strSymbols = hasUnicode(string)\n      ? stringToArray(string)\n      : undefined;\n\n    var chr = strSymbols\n      ? strSymbols[0]\n      : string.charAt(0);\n\n    var trailing = strSymbols\n      ? castSlice(strSymbols, 1).join('')\n      : string.slice(1);\n\n    return chr[methodName]() + trailing;\n  };\n}\n\nmodule.exports = createCaseFirst;\n","var root = require('./_root'),\n    toInteger = require('./toInteger'),\n    toNumber = require('./toNumber'),\n    toString = require('./toString');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsFinite = root.isFinite,\n    nativeMin = Math.min;\n\n/**\n * Creates a function like `_.round`.\n *\n * @private\n * @param {string} methodName The name of the `Math` method to use when rounding.\n * @returns {Function} Returns the new round function.\n */\nfunction createRound(methodName) {\n  var func = Math[methodName];\n  return function(number, precision) {\n    number = toNumber(number);\n    precision = precision == null ? 0 : nativeMin(toInteger(precision), 292);\n    if (precision && nativeIsFinite(number)) {\n      // Shift with exponential notation to avoid floating-point issues.\n      // See [MDN](https://mdn.io/round#Examples) for more details.\n      var pair = (toString(number) + 'e').split('e'),\n          value = func(pair[0] + 'e' + (+pair[1] + precision));\n\n      pair = (toString(value) + 'e').split('e');\n      return +(pair[0] + 'e' + (+pair[1] - precision));\n    }\n    return func(number);\n  };\n}\n\nmodule.exports = createRound;\n","var Set = require('./_Set'),\n    noop = require('./noop'),\n    setToArray = require('./_setToArray');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Creates a set object of `values`.\n *\n * @private\n * @param {Array} values The values to add to the set.\n * @returns {Object} Returns the new set.\n */\nvar createSet = !(Set && (1 / setToArray(new Set([,-0]))[1]) == INFINITY) ? noop : function(values) {\n  return new Set(values);\n};\n\nmodule.exports = createSet;\n","var getNative = require('./_getNative');\n\nvar defineProperty = (function() {\n  try {\n    var func = getNative(Object, 'defineProperty');\n    func({}, '', {});\n    return func;\n  } catch (e) {}\n}());\n\nmodule.exports = defineProperty;\n","var SetCache = require('./_SetCache'),\n    arraySome = require('./_arraySome'),\n    cacheHas = require('./_cacheHas');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n    COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\nfunction equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n  var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n      arrLength = array.length,\n      othLength = other.length;\n\n  if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n    return false;\n  }\n  // Check that cyclic values are equal.\n  var arrStacked = stack.get(array);\n  var othStacked = stack.get(other);\n  if (arrStacked && othStacked) {\n    return arrStacked == other && othStacked == array;\n  }\n  var index = -1,\n      result = true,\n      seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n  stack.set(array, other);\n  stack.set(other, array);\n\n  // Ignore non-index properties.\n  while (++index < arrLength) {\n    var arrValue = array[index],\n        othValue = other[index];\n\n    if (customizer) {\n      var compared = isPartial\n        ? customizer(othValue, arrValue, index, other, array, stack)\n        : customizer(arrValue, othValue, index, array, other, stack);\n    }\n    if (compared !== undefined) {\n      if (compared) {\n        continue;\n      }\n      result = false;\n      break;\n    }\n    // Recursively compare arrays (susceptible to call stack limits).\n    if (seen) {\n      if (!arraySome(other, function(othValue, othIndex) {\n            if (!cacheHas(seen, othIndex) &&\n                (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n              return seen.push(othIndex);\n            }\n          })) {\n        result = false;\n        break;\n      }\n    } else if (!(\n          arrValue === othValue ||\n            equalFunc(arrValue, othValue, bitmask, customizer, stack)\n        )) {\n      result = false;\n      break;\n    }\n  }\n  stack['delete'](array);\n  stack['delete'](other);\n  return result;\n}\n\nmodule.exports = equalArrays;\n","var Symbol = require('./_Symbol'),\n    Uint8Array = require('./_Uint8Array'),\n    eq = require('./eq'),\n    equalArrays = require('./_equalArrays'),\n    mapToArray = require('./_mapToArray'),\n    setToArray = require('./_setToArray');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n    COMPARE_UNORDERED_FLAG = 2;\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]',\n    dateTag = '[object Date]',\n    errorTag = '[object Error]',\n    mapTag = '[object Map]',\n    numberTag = '[object Number]',\n    regexpTag = '[object RegExp]',\n    setTag = '[object Set]',\n    stringTag = '[object String]',\n    symbolTag = '[object Symbol]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n    dataViewTag = '[object DataView]';\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n    symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n  switch (tag) {\n    case dataViewTag:\n      if ((object.byteLength != other.byteLength) ||\n          (object.byteOffset != other.byteOffset)) {\n        return false;\n      }\n      object = object.buffer;\n      other = other.buffer;\n\n    case arrayBufferTag:\n      if ((object.byteLength != other.byteLength) ||\n          !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n        return false;\n      }\n      return true;\n\n    case boolTag:\n    case dateTag:\n    case numberTag:\n      // Coerce booleans to `1` or `0` and dates to milliseconds.\n      // Invalid dates are coerced to `NaN`.\n      return eq(+object, +other);\n\n    case errorTag:\n      return object.name == other.name && object.message == other.message;\n\n    case regexpTag:\n    case stringTag:\n      // Coerce regexes to strings and treat strings, primitives and objects,\n      // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n      // for more details.\n      return object == (other + '');\n\n    case mapTag:\n      var convert = mapToArray;\n\n    case setTag:\n      var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n      convert || (convert = setToArray);\n\n      if (object.size != other.size && !isPartial) {\n        return false;\n      }\n      // Assume cyclic values are equal.\n      var stacked = stack.get(object);\n      if (stacked) {\n        return stacked == other;\n      }\n      bitmask |= COMPARE_UNORDERED_FLAG;\n\n      // Recursively compare objects (susceptible to call stack limits).\n      stack.set(object, other);\n      var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n      stack['delete'](object);\n      return result;\n\n    case symbolTag:\n      if (symbolValueOf) {\n        return symbolValueOf.call(object) == symbolValueOf.call(other);\n      }\n  }\n  return false;\n}\n\nmodule.exports = equalByTag;\n","var getAllKeys = require('./_getAllKeys');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n  var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n      objProps = getAllKeys(object),\n      objLength = objProps.length,\n      othProps = getAllKeys(other),\n      othLength = othProps.length;\n\n  if (objLength != othLength && !isPartial) {\n    return false;\n  }\n  var index = objLength;\n  while (index--) {\n    var key = objProps[index];\n    if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n      return false;\n    }\n  }\n  // Check that cyclic values are equal.\n  var objStacked = stack.get(object);\n  var othStacked = stack.get(other);\n  if (objStacked && othStacked) {\n    return objStacked == other && othStacked == object;\n  }\n  var result = true;\n  stack.set(object, other);\n  stack.set(other, object);\n\n  var skipCtor = isPartial;\n  while (++index < objLength) {\n    key = objProps[index];\n    var objValue = object[key],\n        othValue = other[key];\n\n    if (customizer) {\n      var compared = isPartial\n        ? customizer(othValue, objValue, key, other, object, stack)\n        : customizer(objValue, othValue, key, object, other, stack);\n    }\n    // Recursively compare objects (susceptible to call stack limits).\n    if (!(compared === undefined\n          ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n          : compared\n        )) {\n      result = false;\n      break;\n    }\n    skipCtor || (skipCtor = key == 'constructor');\n  }\n  if (result && !skipCtor) {\n    var objCtor = object.constructor,\n        othCtor = other.constructor;\n\n    // Non `Object` object instances with different constructors are not equal.\n    if (objCtor != othCtor &&\n        ('constructor' in object && 'constructor' in other) &&\n        !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n          typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n      result = false;\n    }\n  }\n  stack['delete'](object);\n  stack['delete'](other);\n  return result;\n}\n\nmodule.exports = equalObjects;\n","var flatten = require('./flatten'),\n    overRest = require('./_overRest'),\n    setToString = require('./_setToString');\n\n/**\n * A specialized version of `baseRest` which flattens the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @returns {Function} Returns the new function.\n */\nfunction flatRest(func) {\n  return setToString(overRest(func, undefined, flatten), func + '');\n}\n\nmodule.exports = flatRest;\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\n","var baseGetAllKeys = require('./_baseGetAllKeys'),\n    getSymbols = require('./_getSymbols'),\n    keys = require('./keys');\n\n/**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeys(object) {\n  return baseGetAllKeys(object, keys, getSymbols);\n}\n\nmodule.exports = getAllKeys;\n","var baseGetAllKeys = require('./_baseGetAllKeys'),\n    getSymbolsIn = require('./_getSymbolsIn'),\n    keysIn = require('./keysIn');\n\n/**\n * Creates an array of own and inherited enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeysIn(object) {\n  return baseGetAllKeys(object, keysIn, getSymbolsIn);\n}\n\nmodule.exports = getAllKeysIn;\n","var isKeyable = require('./_isKeyable');\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n  var data = map.__data__;\n  return isKeyable(key)\n    ? data[typeof key == 'string' ? 'string' : 'hash']\n    : data.map;\n}\n\nmodule.exports = getMapData;\n","var isStrictComparable = require('./_isStrictComparable'),\n    keys = require('./keys');\n\n/**\n * Gets the property names, values, and compare flags of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the match data of `object`.\n */\nfunction getMatchData(object) {\n  var result = keys(object),\n      length = result.length;\n\n  while (length--) {\n    var key = result[length],\n        value = object[key];\n\n    result[length] = [key, value, isStrictComparable(value)];\n  }\n  return result;\n}\n\nmodule.exports = getMatchData;\n","var baseIsNative = require('./_baseIsNative'),\n    getValue = require('./_getValue');\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n  var value = getValue(object, key);\n  return baseIsNative(value) ? value : undefined;\n}\n\nmodule.exports = getNative;\n","var overArg = require('./_overArg');\n\n/** Built-in value references. */\nvar getPrototype = overArg(Object.getPrototypeOf, Object);\n\nmodule.exports = getPrototype;\n","var Symbol = require('./_Symbol');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n  var isOwn = hasOwnProperty.call(value, symToStringTag),\n      tag = value[symToStringTag];\n\n  try {\n    value[symToStringTag] = undefined;\n    var unmasked = true;\n  } catch (e) {}\n\n  var result = nativeObjectToString.call(value);\n  if (unmasked) {\n    if (isOwn) {\n      value[symToStringTag] = tag;\n    } else {\n      delete value[symToStringTag];\n    }\n  }\n  return result;\n}\n\nmodule.exports = getRawTag;\n","var arrayFilter = require('./_arrayFilter'),\n    stubArray = require('./stubArray');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n  if (object == null) {\n    return [];\n  }\n  object = Object(object);\n  return arrayFilter(nativeGetSymbols(object), function(symbol) {\n    return propertyIsEnumerable.call(object, symbol);\n  });\n};\n\nmodule.exports = getSymbols;\n","var arrayPush = require('./_arrayPush'),\n    getPrototype = require('./_getPrototype'),\n    getSymbols = require('./_getSymbols'),\n    stubArray = require('./stubArray');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own and inherited enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) {\n  var result = [];\n  while (object) {\n    arrayPush(result, getSymbols(object));\n    object = getPrototype(object);\n  }\n  return result;\n};\n\nmodule.exports = getSymbolsIn;\n","var DataView = require('./_DataView'),\n    Map = require('./_Map'),\n    Promise = require('./_Promise'),\n    Set = require('./_Set'),\n    WeakMap = require('./_WeakMap'),\n    baseGetTag = require('./_baseGetTag'),\n    toSource = require('./_toSource');\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n    objectTag = '[object Object]',\n    promiseTag = '[object Promise]',\n    setTag = '[object Set]',\n    weakMapTag = '[object WeakMap]';\n\nvar dataViewTag = '[object DataView]';\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n    mapCtorString = toSource(Map),\n    promiseCtorString = toSource(Promise),\n    setCtorString = toSource(Set),\n    weakMapCtorString = toSource(WeakMap);\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n    (Map && getTag(new Map) != mapTag) ||\n    (Promise && getTag(Promise.resolve()) != promiseTag) ||\n    (Set && getTag(new Set) != setTag) ||\n    (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n  getTag = function(value) {\n    var result = baseGetTag(value),\n        Ctor = result == objectTag ? value.constructor : undefined,\n        ctorString = Ctor ? toSource(Ctor) : '';\n\n    if (ctorString) {\n      switch (ctorString) {\n        case dataViewCtorString: return dataViewTag;\n        case mapCtorString: return mapTag;\n        case promiseCtorString: return promiseTag;\n        case setCtorString: return setTag;\n        case weakMapCtorString: return weakMapTag;\n      }\n    }\n    return result;\n  };\n}\n\nmodule.exports = getTag;\n","/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n  return object == null ? undefined : object[key];\n}\n\nmodule.exports = getValue;\n","var castPath = require('./_castPath'),\n    isArguments = require('./isArguments'),\n    isArray = require('./isArray'),\n    isIndex = require('./_isIndex'),\n    isLength = require('./isLength'),\n    toKey = require('./_toKey');\n\n/**\n * Checks if `path` exists on `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @param {Function} hasFunc The function to check properties.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n */\nfunction hasPath(object, path, hasFunc) {\n  path = castPath(path, object);\n\n  var index = -1,\n      length = path.length,\n      result = false;\n\n  while (++index < length) {\n    var key = toKey(path[index]);\n    if (!(result = object != null && hasFunc(object, key))) {\n      break;\n    }\n    object = object[key];\n  }\n  if (result || ++index != length) {\n    return result;\n  }\n  length = object == null ? 0 : object.length;\n  return !!length && isLength(length) && isIndex(key, length) &&\n    (isArray(object) || isArguments(object));\n}\n\nmodule.exports = hasPath;\n","/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n    rsComboMarksRange = '\\\\u0300-\\\\u036f',\n    reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n    rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n    rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n    rsVarRange = '\\\\ufe0e\\\\ufe0f';\n\n/** Used to compose unicode capture groups. */\nvar rsZWJ = '\\\\u200d';\n\n/** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */\nvar reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange  + rsComboRange + rsVarRange + ']');\n\n/**\n * Checks if `string` contains Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a symbol is found, else `false`.\n */\nfunction hasUnicode(string) {\n  return reHasUnicode.test(string);\n}\n\nmodule.exports = hasUnicode;\n","var nativeCreate = require('./_nativeCreate');\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n  this.__data__ = nativeCreate ? nativeCreate(null) : {};\n  this.size = 0;\n}\n\nmodule.exports = hashClear;\n","/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n  var result = this.has(key) && delete this.__data__[key];\n  this.size -= result ? 1 : 0;\n  return result;\n}\n\nmodule.exports = hashDelete;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n  var data = this.__data__;\n  if (nativeCreate) {\n    var result = data[key];\n    return result === HASH_UNDEFINED ? undefined : result;\n  }\n  return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\nmodule.exports = hashGet;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n  var data = this.__data__;\n  return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\nmodule.exports = hashHas;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n  var data = this.__data__;\n  this.size += this.has(key) ? 0 : 1;\n  data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n  return this;\n}\n\nmodule.exports = hashSet;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Initializes an array clone.\n *\n * @private\n * @param {Array} array The array to clone.\n * @returns {Array} Returns the initialized clone.\n */\nfunction initCloneArray(array) {\n  var length = array.length,\n      result = new array.constructor(length);\n\n  // Add properties assigned by `RegExp#exec`.\n  if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {\n    result.index = array.index;\n    result.input = array.input;\n  }\n  return result;\n}\n\nmodule.exports = initCloneArray;\n","var cloneArrayBuffer = require('./_cloneArrayBuffer'),\n    cloneDataView = require('./_cloneDataView'),\n    cloneRegExp = require('./_cloneRegExp'),\n    cloneSymbol = require('./_cloneSymbol'),\n    cloneTypedArray = require('./_cloneTypedArray');\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]',\n    dateTag = '[object Date]',\n    mapTag = '[object Map]',\n    numberTag = '[object Number]',\n    regexpTag = '[object RegExp]',\n    setTag = '[object Set]',\n    stringTag = '[object String]',\n    symbolTag = '[object Symbol]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n    dataViewTag = '[object DataView]',\n    float32Tag = '[object Float32Array]',\n    float64Tag = '[object Float64Array]',\n    int8Tag = '[object Int8Array]',\n    int16Tag = '[object Int16Array]',\n    int32Tag = '[object Int32Array]',\n    uint8Tag = '[object Uint8Array]',\n    uint8ClampedTag = '[object Uint8ClampedArray]',\n    uint16Tag = '[object Uint16Array]',\n    uint32Tag = '[object Uint32Array]';\n\n/**\n * Initializes an object clone based on its `toStringTag`.\n *\n * **Note:** This function only supports cloning values with tags of\n * `Boolean`, `Date`, `Error`, `Map`, `Number`, `RegExp`, `Set`, or `String`.\n *\n * @private\n * @param {Object} object The object to clone.\n * @param {string} tag The `toStringTag` of the object to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneByTag(object, tag, isDeep) {\n  var Ctor = object.constructor;\n  switch (tag) {\n    case arrayBufferTag:\n      return cloneArrayBuffer(object);\n\n    case boolTag:\n    case dateTag:\n      return new Ctor(+object);\n\n    case dataViewTag:\n      return cloneDataView(object, isDeep);\n\n    case float32Tag: case float64Tag:\n    case int8Tag: case int16Tag: case int32Tag:\n    case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:\n      return cloneTypedArray(object, isDeep);\n\n    case mapTag:\n      return new Ctor;\n\n    case numberTag:\n    case stringTag:\n      return new Ctor(object);\n\n    case regexpTag:\n      return cloneRegExp(object);\n\n    case setTag:\n      return new Ctor;\n\n    case symbolTag:\n      return cloneSymbol(object);\n  }\n}\n\nmodule.exports = initCloneByTag;\n","var baseCreate = require('./_baseCreate'),\n    getPrototype = require('./_getPrototype'),\n    isPrototype = require('./_isPrototype');\n\n/**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneObject(object) {\n  return (typeof object.constructor == 'function' && !isPrototype(object))\n    ? baseCreate(getPrototype(object))\n    : {};\n}\n\nmodule.exports = initCloneObject;\n","var Symbol = require('./_Symbol'),\n    isArguments = require('./isArguments'),\n    isArray = require('./isArray');\n\n/** Built-in value references. */\nvar spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined;\n\n/**\n * Checks if `value` is a flattenable `arguments` object or array.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is flattenable, else `false`.\n */\nfunction isFlattenable(value) {\n  return isArray(value) || isArguments(value) ||\n    !!(spreadableSymbol && value && value[spreadableSymbol]);\n}\n\nmodule.exports = isFlattenable;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n  var type = typeof value;\n  length = length == null ? MAX_SAFE_INTEGER : length;\n\n  return !!length &&\n    (type == 'number' ||\n      (type != 'symbol' && reIsUint.test(value))) &&\n        (value > -1 && value % 1 == 0 && value < length);\n}\n\nmodule.exports = isIndex;\n","var eq = require('./eq'),\n    isArrayLike = require('./isArrayLike'),\n    isIndex = require('./_isIndex'),\n    isObject = require('./isObject');\n\n/**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n *  else `false`.\n */\nfunction isIterateeCall(value, index, object) {\n  if (!isObject(object)) {\n    return false;\n  }\n  var type = typeof index;\n  if (type == 'number'\n        ? (isArrayLike(object) && isIndex(index, object.length))\n        : (type == 'string' && index in object)\n      ) {\n    return eq(object[index], value);\n  }\n  return false;\n}\n\nmodule.exports = isIterateeCall;\n","var isArray = require('./isArray'),\n    isSymbol = require('./isSymbol');\n\n/** Used to match property names within property paths. */\nvar reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n    reIsPlainProp = /^\\w*$/;\n\n/**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\nfunction isKey(value, object) {\n  if (isArray(value)) {\n    return false;\n  }\n  var type = typeof value;\n  if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n      value == null || isSymbol(value)) {\n    return true;\n  }\n  return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n    (object != null && value in Object(object));\n}\n\nmodule.exports = isKey;\n","/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n  var type = typeof value;\n  return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n    ? (value !== '__proto__')\n    : (value === null);\n}\n\nmodule.exports = isKeyable;\n","var coreJsData = require('./_coreJsData');\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n  var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n  return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n  return !!maskSrcKey && (maskSrcKey in func);\n}\n\nmodule.exports = isMasked;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n  var Ctor = value && value.constructor,\n      proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n  return value === proto;\n}\n\nmodule.exports = isPrototype;\n","var isObject = require('./isObject');\n\n/**\n * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` if suitable for strict\n *  equality comparisons, else `false`.\n */\nfunction isStrictComparable(value) {\n  return value === value && !isObject(value);\n}\n\nmodule.exports = isStrictComparable;\n","/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n  this.__data__ = [];\n  this.size = 0;\n}\n\nmodule.exports = listCacheClear;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype;\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n  var data = this.__data__,\n      index = assocIndexOf(data, key);\n\n  if (index < 0) {\n    return false;\n  }\n  var lastIndex = data.length - 1;\n  if (index == lastIndex) {\n    data.pop();\n  } else {\n    splice.call(data, index, 1);\n  }\n  --this.size;\n  return true;\n}\n\nmodule.exports = listCacheDelete;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n  var data = this.__data__,\n      index = assocIndexOf(data, key);\n\n  return index < 0 ? undefined : data[index][1];\n}\n\nmodule.exports = listCacheGet;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n  return assocIndexOf(this.__data__, key) > -1;\n}\n\nmodule.exports = listCacheHas;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n  var data = this.__data__,\n      index = assocIndexOf(data, key);\n\n  if (index < 0) {\n    ++this.size;\n    data.push([key, value]);\n  } else {\n    data[index][1] = value;\n  }\n  return this;\n}\n\nmodule.exports = listCacheSet;\n","var Hash = require('./_Hash'),\n    ListCache = require('./_ListCache'),\n    Map = require('./_Map');\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n  this.size = 0;\n  this.__data__ = {\n    'hash': new Hash,\n    'map': new (Map || ListCache),\n    'string': new Hash\n  };\n}\n\nmodule.exports = mapCacheClear;\n","var getMapData = require('./_getMapData');\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n  var result = getMapData(this, key)['delete'](key);\n  this.size -= result ? 1 : 0;\n  return result;\n}\n\nmodule.exports = mapCacheDelete;\n","var getMapData = require('./_getMapData');\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n  return getMapData(this, key).get(key);\n}\n\nmodule.exports = mapCacheGet;\n","var getMapData = require('./_getMapData');\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n  return getMapData(this, key).has(key);\n}\n\nmodule.exports = mapCacheHas;\n","var getMapData = require('./_getMapData');\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n  var data = getMapData(this, key),\n      size = data.size;\n\n  data.set(key, value);\n  this.size += data.size == size ? 0 : 1;\n  return this;\n}\n\nmodule.exports = mapCacheSet;\n","/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n  var index = -1,\n      result = Array(map.size);\n\n  map.forEach(function(value, key) {\n    result[++index] = [key, value];\n  });\n  return result;\n}\n\nmodule.exports = mapToArray;\n","/**\n * A specialized version of `matchesProperty` for source values suitable\n * for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction matchesStrictComparable(key, srcValue) {\n  return function(object) {\n    if (object == null) {\n      return false;\n    }\n    return object[key] === srcValue &&\n      (srcValue !== undefined || (key in Object(object)));\n  };\n}\n\nmodule.exports = matchesStrictComparable;\n","var memoize = require('./memoize');\n\n/** Used as the maximum memoize cache size. */\nvar MAX_MEMOIZE_SIZE = 500;\n\n/**\n * A specialized version of `_.memoize` which clears the memoized function's\n * cache when it exceeds `MAX_MEMOIZE_SIZE`.\n *\n * @private\n * @param {Function} func The function to have its output memoized.\n * @returns {Function} Returns the new memoized function.\n */\nfunction memoizeCapped(func) {\n  var result = memoize(func, function(key) {\n    if (cache.size === MAX_MEMOIZE_SIZE) {\n      cache.clear();\n    }\n    return key;\n  });\n\n  var cache = result.cache;\n  return result;\n}\n\nmodule.exports = memoizeCapped;\n","var getNative = require('./_getNative');\n\n/* Built-in method references that are verified to be native. */\nvar nativeCreate = getNative(Object, 'create');\n\nmodule.exports = nativeCreate;\n","var overArg = require('./_overArg');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = overArg(Object.keys, Object);\n\nmodule.exports = nativeKeys;\n","/**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction nativeKeysIn(object) {\n  var result = [];\n  if (object != null) {\n    for (var key in Object(object)) {\n      result.push(key);\n    }\n  }\n  return result;\n}\n\nmodule.exports = nativeKeysIn;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n  try {\n    // Use `util.types` for Node.js 10+.\n    var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n    if (types) {\n      return types;\n    }\n\n    // Legacy `process.binding('util')` for Node.js < 10.\n    return freeProcess && freeProcess.binding && freeProcess.binding('util');\n  } catch (e) {}\n}());\n\nmodule.exports = nodeUtil;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n  return nativeObjectToString.call(value);\n}\n\nmodule.exports = objectToString;\n","/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n  return function(arg) {\n    return func(transform(arg));\n  };\n}\n\nmodule.exports = overArg;\n","var apply = require('./_apply');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * A specialized version of `baseRest` which transforms the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @param {Function} transform The rest array transform.\n * @returns {Function} Returns the new function.\n */\nfunction overRest(func, start, transform) {\n  start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n  return function() {\n    var args = arguments,\n        index = -1,\n        length = nativeMax(args.length - start, 0),\n        array = Array(length);\n\n    while (++index < length) {\n      array[index] = args[start + index];\n    }\n    index = -1;\n    var otherArgs = Array(start + 1);\n    while (++index < start) {\n      otherArgs[index] = args[index];\n    }\n    otherArgs[start] = transform(array);\n    return apply(func, this, otherArgs);\n  };\n}\n\nmodule.exports = overRest;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nmodule.exports = root;\n","/**\n * Gets the value at `key`, unless `key` is \"__proto__\" or \"constructor\".\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction safeGet(object, key) {\n  if (key === 'constructor' && typeof object[key] === 'function') {\n    return;\n  }\n\n  if (key == '__proto__') {\n    return;\n  }\n\n  return object[key];\n}\n\nmodule.exports = safeGet;\n","/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n  this.__data__.set(value, HASH_UNDEFINED);\n  return this;\n}\n\nmodule.exports = setCacheAdd;\n","/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {boolean} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n  return this.__data__.has(value);\n}\n\nmodule.exports = setCacheHas;\n","/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n  var index = -1,\n      result = Array(set.size);\n\n  set.forEach(function(value) {\n    result[++index] = value;\n  });\n  return result;\n}\n\nmodule.exports = setToArray;\n","var baseSetToString = require('./_baseSetToString'),\n    shortOut = require('./_shortOut');\n\n/**\n * Sets the `toString` method of `func` to return `string`.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar setToString = shortOut(baseSetToString);\n\nmodule.exports = setToString;\n","/** Used to detect hot functions by number of calls within a span of milliseconds. */\nvar HOT_COUNT = 800,\n    HOT_SPAN = 16;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeNow = Date.now;\n\n/**\n * Creates a function that'll short out and invoke `identity` instead\n * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`\n * milliseconds.\n *\n * @private\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new shortable function.\n */\nfunction shortOut(func) {\n  var count = 0,\n      lastCalled = 0;\n\n  return function() {\n    var stamp = nativeNow(),\n        remaining = HOT_SPAN - (stamp - lastCalled);\n\n    lastCalled = stamp;\n    if (remaining > 0) {\n      if (++count >= HOT_COUNT) {\n        return arguments[0];\n      }\n    } else {\n      count = 0;\n    }\n    return func.apply(undefined, arguments);\n  };\n}\n\nmodule.exports = shortOut;\n","var ListCache = require('./_ListCache');\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n  this.__data__ = new ListCache;\n  this.size = 0;\n}\n\nmodule.exports = stackClear;\n","/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n  var data = this.__data__,\n      result = data['delete'](key);\n\n  this.size = data.size;\n  return result;\n}\n\nmodule.exports = stackDelete;\n","/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n  return this.__data__.get(key);\n}\n\nmodule.exports = stackGet;\n","/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n  return this.__data__.has(key);\n}\n\nmodule.exports = stackHas;\n","var ListCache = require('./_ListCache'),\n    Map = require('./_Map'),\n    MapCache = require('./_MapCache');\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n  var data = this.__data__;\n  if (data instanceof ListCache) {\n    var pairs = data.__data__;\n    if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n      pairs.push([key, value]);\n      this.size = ++data.size;\n      return this;\n    }\n    data = this.__data__ = new MapCache(pairs);\n  }\n  data.set(key, value);\n  this.size = data.size;\n  return this;\n}\n\nmodule.exports = stackSet;\n","/**\n * A specialized version of `_.indexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction strictIndexOf(array, value, fromIndex) {\n  var index = fromIndex - 1,\n      length = array.length;\n\n  while (++index < length) {\n    if (array[index] === value) {\n      return index;\n    }\n  }\n  return -1;\n}\n\nmodule.exports = strictIndexOf;\n","var asciiToArray = require('./_asciiToArray'),\n    hasUnicode = require('./_hasUnicode'),\n    unicodeToArray = require('./_unicodeToArray');\n\n/**\n * Converts `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction stringToArray(string) {\n  return hasUnicode(string)\n    ? unicodeToArray(string)\n    : asciiToArray(string);\n}\n\nmodule.exports = stringToArray;\n","var memoizeCapped = require('./_memoizeCapped');\n\n/** Used to match property names within property paths. */\nvar rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n/** Used to match backslashes in property paths. */\nvar reEscapeChar = /\\\\(\\\\)?/g;\n\n/**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\nvar stringToPath = memoizeCapped(function(string) {\n  var result = [];\n  if (string.charCodeAt(0) === 46 /* . */) {\n    result.push('');\n  }\n  string.replace(rePropName, function(match, number, quote, subString) {\n    result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match));\n  });\n  return result;\n});\n\nmodule.exports = stringToPath;\n","var isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\nfunction toKey(value) {\n  if (typeof value == 'string' || isSymbol(value)) {\n    return value;\n  }\n  var result = (value + '');\n  return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nmodule.exports = toKey;\n","/** Used for built-in method references. */\nvar funcProto = Function.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n  if (func != null) {\n    try {\n      return funcToString.call(func);\n    } catch (e) {}\n    try {\n      return (func + '');\n    } catch (e) {}\n  }\n  return '';\n}\n\nmodule.exports = toSource;\n","/** Used to match a single whitespace character. */\nvar reWhitespace = /\\s/;\n\n/**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last non-whitespace\n * character of `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the index of the last non-whitespace character.\n */\nfunction trimmedEndIndex(string) {\n  var index = string.length;\n\n  while (index-- && reWhitespace.test(string.charAt(index))) {}\n  return index;\n}\n\nmodule.exports = trimmedEndIndex;\n","/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n    rsComboMarksRange = '\\\\u0300-\\\\u036f',\n    reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n    rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n    rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n    rsVarRange = '\\\\ufe0e\\\\ufe0f';\n\n/** Used to compose unicode capture groups. */\nvar rsAstral = '[' + rsAstralRange + ']',\n    rsCombo = '[' + rsComboRange + ']',\n    rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n    rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n    rsNonAstral = '[^' + rsAstralRange + ']',\n    rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n    rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n    rsZWJ = '\\\\u200d';\n\n/** Used to compose unicode regexes. */\nvar reOptMod = rsModifier + '?',\n    rsOptVar = '[' + rsVarRange + ']?',\n    rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n    rsSeq = rsOptVar + reOptMod + rsOptJoin,\n    rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';\n\n/** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */\nvar reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g');\n\n/**\n * Converts a Unicode `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction unicodeToArray(string) {\n  return string.match(reUnicode) || [];\n}\n\nmodule.exports = unicodeToArray;\n","var toString = require('./toString'),\n    upperFirst = require('./upperFirst');\n\n/**\n * Converts the first character of `string` to upper case and the remaining\n * to lower case.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to capitalize.\n * @returns {string} Returns the capitalized string.\n * @example\n *\n * _.capitalize('FRED');\n * // => 'Fred'\n */\nfunction capitalize(string) {\n  return upperFirst(toString(string).toLowerCase());\n}\n\nmodule.exports = capitalize;\n","var baseSlice = require('./_baseSlice'),\n    isIterateeCall = require('./_isIterateeCall'),\n    toInteger = require('./toInteger');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeCeil = Math.ceil,\n    nativeMax = Math.max;\n\n/**\n * Creates an array of elements split into groups the length of `size`.\n * If `array` can't be split evenly, the final chunk will be the remaining\n * elements.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to process.\n * @param {number} [size=1] The length of each chunk\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the new array of chunks.\n * @example\n *\n * _.chunk(['a', 'b', 'c', 'd'], 2);\n * // => [['a', 'b'], ['c', 'd']]\n *\n * _.chunk(['a', 'b', 'c', 'd'], 3);\n * // => [['a', 'b', 'c'], ['d']]\n */\nfunction chunk(array, size, guard) {\n  if ((guard ? isIterateeCall(array, size, guard) : size === undefined)) {\n    size = 1;\n  } else {\n    size = nativeMax(toInteger(size), 0);\n  }\n  var length = array == null ? 0 : array.length;\n  if (!length || size < 1) {\n    return [];\n  }\n  var index = 0,\n      resIndex = 0,\n      result = Array(nativeCeil(length / size));\n\n  while (index < length) {\n    result[resIndex++] = baseSlice(array, index, (index += size));\n  }\n  return result;\n}\n\nmodule.exports = chunk;\n","var baseClone = require('./_baseClone');\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1,\n    CLONE_SYMBOLS_FLAG = 4;\n\n/**\n * This method is like `_.clone` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @returns {*} Returns the deep cloned value.\n * @see _.clone\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var deep = _.cloneDeep(objects);\n * console.log(deep[0] === objects[0]);\n * // => false\n */\nfunction cloneDeep(value) {\n  return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG);\n}\n\nmodule.exports = cloneDeep;\n","/**\n * Creates a function that returns `value`.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {*} value The value to return from the new function.\n * @returns {Function} Returns the new constant function.\n * @example\n *\n * var objects = _.times(2, _.constant({ 'a': 1 }));\n *\n * console.log(objects);\n * // => [{ 'a': 1 }, { 'a': 1 }]\n *\n * console.log(objects[0] === objects[1]);\n * // => true\n */\nfunction constant(value) {\n  return function() {\n    return value;\n  };\n}\n\nmodule.exports = constant;\n","var isObject = require('./isObject'),\n    now = require('./now'),\n    toNumber = require('./toNumber');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n    nativeMin = Math.min;\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n *  Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n *  The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n *  Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n *   'leading': true,\n *   'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n  var lastArgs,\n      lastThis,\n      maxWait,\n      result,\n      timerId,\n      lastCallTime,\n      lastInvokeTime = 0,\n      leading = false,\n      maxing = false,\n      trailing = true;\n\n  if (typeof func != 'function') {\n    throw new TypeError(FUNC_ERROR_TEXT);\n  }\n  wait = toNumber(wait) || 0;\n  if (isObject(options)) {\n    leading = !!options.leading;\n    maxing = 'maxWait' in options;\n    maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n    trailing = 'trailing' in options ? !!options.trailing : trailing;\n  }\n\n  function invokeFunc(time) {\n    var args = lastArgs,\n        thisArg = lastThis;\n\n    lastArgs = lastThis = undefined;\n    lastInvokeTime = time;\n    result = func.apply(thisArg, args);\n    return result;\n  }\n\n  function leadingEdge(time) {\n    // Reset any `maxWait` timer.\n    lastInvokeTime = time;\n    // Start the timer for the trailing edge.\n    timerId = setTimeout(timerExpired, wait);\n    // Invoke the leading edge.\n    return leading ? invokeFunc(time) : result;\n  }\n\n  function remainingWait(time) {\n    var timeSinceLastCall = time - lastCallTime,\n        timeSinceLastInvoke = time - lastInvokeTime,\n        timeWaiting = wait - timeSinceLastCall;\n\n    return maxing\n      ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke)\n      : timeWaiting;\n  }\n\n  function shouldInvoke(time) {\n    var timeSinceLastCall = time - lastCallTime,\n        timeSinceLastInvoke = time - lastInvokeTime;\n\n    // Either this is the first call, activity has stopped and we're at the\n    // trailing edge, the system time has gone backwards and we're treating\n    // it as the trailing edge, or we've hit the `maxWait` limit.\n    return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n      (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n  }\n\n  function timerExpired() {\n    var time = now();\n    if (shouldInvoke(time)) {\n      return trailingEdge(time);\n    }\n    // Restart the timer.\n    timerId = setTimeout(timerExpired, remainingWait(time));\n  }\n\n  function trailingEdge(time) {\n    timerId = undefined;\n\n    // Only invoke if we have `lastArgs` which means `func` has been\n    // debounced at least once.\n    if (trailing && lastArgs) {\n      return invokeFunc(time);\n    }\n    lastArgs = lastThis = undefined;\n    return result;\n  }\n\n  function cancel() {\n    if (timerId !== undefined) {\n      clearTimeout(timerId);\n    }\n    lastInvokeTime = 0;\n    lastArgs = lastCallTime = lastThis = timerId = undefined;\n  }\n\n  function flush() {\n    return timerId === undefined ? result : trailingEdge(now());\n  }\n\n  function debounced() {\n    var time = now(),\n        isInvoking = shouldInvoke(time);\n\n    lastArgs = arguments;\n    lastThis = this;\n    lastCallTime = time;\n\n    if (isInvoking) {\n      if (timerId === undefined) {\n        return leadingEdge(lastCallTime);\n      }\n      if (maxing) {\n        // Handle invocations in a tight loop.\n        clearTimeout(timerId);\n        timerId = setTimeout(timerExpired, wait);\n        return invokeFunc(lastCallTime);\n      }\n    }\n    if (timerId === undefined) {\n      timerId = setTimeout(timerExpired, wait);\n    }\n    return result;\n  }\n  debounced.cancel = cancel;\n  debounced.flush = flush;\n  return debounced;\n}\n\nmodule.exports = debounce;\n","var baseDifference = require('./_baseDifference'),\n    baseFlatten = require('./_baseFlatten'),\n    baseIteratee = require('./_baseIteratee'),\n    baseRest = require('./_baseRest'),\n    isArrayLikeObject = require('./isArrayLikeObject'),\n    last = require('./last');\n\n/**\n * This method is like `_.difference` except that it accepts `iteratee` which\n * is invoked for each element of `array` and `values` to generate the criterion\n * by which they're compared. The order and references of result values are\n * determined by the first array. The iteratee is invoked with one argument:\n * (value).\n *\n * **Note:** Unlike `_.pullAllBy`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...Array} [values] The values to exclude.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * _.differenceBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n * // => [1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.differenceBy([{ 'x': 2 }, { 'x': 1 }], [{ 'x': 1 }], 'x');\n * // => [{ 'x': 2 }]\n */\nvar differenceBy = baseRest(function(array, values) {\n  var iteratee = last(values);\n  if (isArrayLikeObject(iteratee)) {\n    iteratee = undefined;\n  }\n  return isArrayLikeObject(array)\n    ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), baseIteratee(iteratee, 2))\n    : [];\n});\n\nmodule.exports = differenceBy;\n","/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n  return value === other || (value !== value && other !== other);\n}\n\nmodule.exports = eq;\n","var baseFlatten = require('./_baseFlatten');\n\n/**\n * Flattens `array` a single level deep.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * _.flatten([1, [2, [3, [4]], 5]]);\n * // => [1, 2, [3, [4]], 5]\n */\nfunction flatten(array) {\n  var length = array == null ? 0 : array.length;\n  return length ? baseFlatten(array, 1) : [];\n}\n\nmodule.exports = flatten;\n","var baseGet = require('./_baseGet');\n\n/**\n * Gets the value at `path` of `object`. If the resolved value is\n * `undefined`, the `defaultValue` is returned in its place.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.get(object, 'a[0].b.c');\n * // => 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\nfunction get(object, path, defaultValue) {\n  var result = object == null ? undefined : baseGet(object, path);\n  return result === undefined ? defaultValue : result;\n}\n\nmodule.exports = get;\n","var baseHasIn = require('./_baseHasIn'),\n    hasPath = require('./_hasPath');\n\n/**\n * Checks if `path` is a direct or inherited property of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.hasIn(object, 'a');\n * // => true\n *\n * _.hasIn(object, 'a.b');\n * // => true\n *\n * _.hasIn(object, ['a', 'b']);\n * // => true\n *\n * _.hasIn(object, 'b');\n * // => false\n */\nfunction hasIn(object, path) {\n  return object != null && hasPath(object, path, baseHasIn);\n}\n\nmodule.exports = hasIn;\n","/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n  return value;\n}\n\nmodule.exports = identity;\n","var arrayMap = require('./_arrayMap'),\n    baseIntersection = require('./_baseIntersection'),\n    baseRest = require('./_baseRest'),\n    castArrayLikeObject = require('./_castArrayLikeObject');\n\n/**\n * Creates an array of unique values that are included in all given arrays\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. The order and references of result values are\n * determined by the first array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of intersecting values.\n * @example\n *\n * _.intersection([2, 1], [2, 3]);\n * // => [2]\n */\nvar intersection = baseRest(function(arrays) {\n  var mapped = arrayMap(arrays, castArrayLikeObject);\n  return (mapped.length && mapped[0] === arrays[0])\n    ? baseIntersection(mapped)\n    : [];\n});\n\nmodule.exports = intersection;\n","var baseIsArguments = require('./_baseIsArguments'),\n    isObjectLike = require('./isObjectLike');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n *  else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n  return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n    !propertyIsEnumerable.call(value, 'callee');\n};\n\nmodule.exports = isArguments;\n","/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nmodule.exports = isArray;\n","var isFunction = require('./isFunction'),\n    isLength = require('./isLength');\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n  return value != null && isLength(value.length) && !isFunction(value);\n}\n\nmodule.exports = isArrayLike;\n","var isArrayLike = require('./isArrayLike'),\n    isObjectLike = require('./isObjectLike');\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n *  else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n  return isObjectLike(value) && isArrayLike(value);\n}\n\nmodule.exports = isArrayLikeObject;\n","var root = require('./_root'),\n    stubFalse = require('./stubFalse');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined;\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\nmodule.exports = isBuffer;\n","var baseKeys = require('./_baseKeys'),\n    getTag = require('./_getTag'),\n    isArguments = require('./isArguments'),\n    isArray = require('./isArray'),\n    isArrayLike = require('./isArrayLike'),\n    isBuffer = require('./isBuffer'),\n    isPrototype = require('./_isPrototype'),\n    isTypedArray = require('./isTypedArray');\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n    setTag = '[object Set]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Checks if `value` is an empty object, collection, map, or set.\n *\n * Objects are considered empty if they have no own enumerable string keyed\n * properties.\n *\n * Array-like values such as `arguments` objects, arrays, buffers, strings, or\n * jQuery-like collections are considered empty if they have a `length` of `0`.\n * Similarly, maps and sets are considered empty if they have a `size` of `0`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is empty, else `false`.\n * @example\n *\n * _.isEmpty(null);\n * // => true\n *\n * _.isEmpty(true);\n * // => true\n *\n * _.isEmpty(1);\n * // => true\n *\n * _.isEmpty([1, 2, 3]);\n * // => false\n *\n * _.isEmpty({ 'a': 1 });\n * // => false\n */\nfunction isEmpty(value) {\n  if (value == null) {\n    return true;\n  }\n  if (isArrayLike(value) &&\n      (isArray(value) || typeof value == 'string' || typeof value.splice == 'function' ||\n        isBuffer(value) || isTypedArray(value) || isArguments(value))) {\n    return !value.length;\n  }\n  var tag = getTag(value);\n  if (tag == mapTag || tag == setTag) {\n    return !value.size;\n  }\n  if (isPrototype(value)) {\n    return !baseKeys(value).length;\n  }\n  for (var key in value) {\n    if (hasOwnProperty.call(value, key)) {\n      return false;\n    }\n  }\n  return true;\n}\n\nmodule.exports = isEmpty;\n","var baseIsEqual = require('./_baseIsEqual');\n\n/**\n * Performs a deep comparison between two values to determine if they are\n * equivalent.\n *\n * **Note:** This method supports comparing arrays, array buffers, booleans,\n * date objects, error objects, maps, numbers, `Object` objects, regexes,\n * sets, strings, symbols, and typed arrays. `Object` objects are compared\n * by their own, not inherited, enumerable properties. Functions and DOM\n * nodes are compared by strict equality, i.e. `===`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.isEqual(object, other);\n * // => true\n *\n * object === other;\n * // => false\n */\nfunction isEqual(value, other) {\n  return baseIsEqual(value, other);\n}\n\nmodule.exports = isEqual;\n","var baseGetTag = require('./_baseGetTag'),\n    isObject = require('./isObject');\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n    funcTag = '[object Function]',\n    genTag = '[object GeneratorFunction]',\n    proxyTag = '[object Proxy]';\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n  if (!isObject(value)) {\n    return false;\n  }\n  // The use of `Object#toString` avoids issues with the `typeof` operator\n  // in Safari 9 which returns 'object' for typed arrays and other constructors.\n  var tag = baseGetTag(value);\n  return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\nmodule.exports = isFunction;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n  return typeof value == 'number' &&\n    value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\nmodule.exports = isLength;\n","var baseIsMap = require('./_baseIsMap'),\n    baseUnary = require('./_baseUnary'),\n    nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsMap = nodeUtil && nodeUtil.isMap;\n\n/**\n * Checks if `value` is classified as a `Map` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n * @example\n *\n * _.isMap(new Map);\n * // => true\n *\n * _.isMap(new WeakMap);\n * // => false\n */\nvar isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap;\n\nmodule.exports = isMap;\n","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n  var type = typeof value;\n  return value != null && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isObject;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n  return value != null && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\n","var baseGetTag = require('./_baseGetTag'),\n    getPrototype = require('./_getPrototype'),\n    isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n    objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to infer the `Object` constructor. */\nvar objectCtorString = funcToString.call(Object);\n\n/**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n *   this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\nfunction isPlainObject(value) {\n  if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\n    return false;\n  }\n  var proto = getPrototype(value);\n  if (proto === null) {\n    return true;\n  }\n  var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n  return typeof Ctor == 'function' && Ctor instanceof Ctor &&\n    funcToString.call(Ctor) == objectCtorString;\n}\n\nmodule.exports = isPlainObject;\n","var baseIsSet = require('./_baseIsSet'),\n    baseUnary = require('./_baseUnary'),\n    nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsSet = nodeUtil && nodeUtil.isSet;\n\n/**\n * Checks if `value` is classified as a `Set` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n * @example\n *\n * _.isSet(new Set);\n * // => true\n *\n * _.isSet(new WeakSet);\n * // => false\n */\nvar isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet;\n\nmodule.exports = isSet;\n","var baseGetTag = require('./_baseGetTag'),\n    isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n  return typeof value == 'symbol' ||\n    (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nmodule.exports = isSymbol;\n","var baseIsTypedArray = require('./_baseIsTypedArray'),\n    baseUnary = require('./_baseUnary'),\n    nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\nmodule.exports = isTypedArray;\n","var arrayLikeKeys = require('./_arrayLikeKeys'),\n    baseKeys = require('./_baseKeys'),\n    isArrayLike = require('./isArrayLike');\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n *   this.a = 1;\n *   this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n  return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\nmodule.exports = keys;\n","var arrayLikeKeys = require('./_arrayLikeKeys'),\n    baseKeysIn = require('./_baseKeysIn'),\n    isArrayLike = require('./isArrayLike');\n\n/**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n *   this.a = 1;\n *   this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\nfunction keysIn(object) {\n  return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n}\n\nmodule.exports = keysIn;\n","/**\n * Gets the last element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the last element of `array`.\n * @example\n *\n * _.last([1, 2, 3]);\n * // => 3\n */\nfunction last(array) {\n  var length = array == null ? 0 : array.length;\n  return length ? array[length - 1] : undefined;\n}\n\nmodule.exports = last;\n","/**\n * @license\n * Lodash <https://lodash.com/>\n * Copyright OpenJS Foundation and other contributors <https://openjsf.org/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n;(function() {\n\n  /** Used as a safe reference for `undefined` in pre-ES5 environments. */\n  var undefined;\n\n  /** Used as the semantic version number. */\n  var VERSION = '4.18.1';\n\n  /** Used as the size to enable large array optimizations. */\n  var LARGE_ARRAY_SIZE = 200;\n\n  /** Error message constants. */\n  var CORE_ERROR_TEXT = 'Unsupported core-js use. Try https://npms.io/search?q=ponyfill.',\n      FUNC_ERROR_TEXT = 'Expected a function',\n      INVALID_TEMPL_VAR_ERROR_TEXT = 'Invalid `variable` option passed into `_.template`',\n      INVALID_TEMPL_IMPORTS_ERROR_TEXT = 'Invalid `imports` option passed into `_.template`';\n\n  /** Used to stand-in for `undefined` hash values. */\n  var HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n  /** Used as the maximum memoize cache size. */\n  var MAX_MEMOIZE_SIZE = 500;\n\n  /** Used as the internal argument placeholder. */\n  var PLACEHOLDER = '__lodash_placeholder__';\n\n  /** Used to compose bitmasks for cloning. */\n  var CLONE_DEEP_FLAG = 1,\n      CLONE_FLAT_FLAG = 2,\n      CLONE_SYMBOLS_FLAG = 4;\n\n  /** Used to compose bitmasks for value comparisons. */\n  var COMPARE_PARTIAL_FLAG = 1,\n      COMPARE_UNORDERED_FLAG = 2;\n\n  /** Used to compose bitmasks for function metadata. */\n  var WRAP_BIND_FLAG = 1,\n      WRAP_BIND_KEY_FLAG = 2,\n      WRAP_CURRY_BOUND_FLAG = 4,\n      WRAP_CURRY_FLAG = 8,\n      WRAP_CURRY_RIGHT_FLAG = 16,\n      WRAP_PARTIAL_FLAG = 32,\n      WRAP_PARTIAL_RIGHT_FLAG = 64,\n      WRAP_ARY_FLAG = 128,\n      WRAP_REARG_FLAG = 256,\n      WRAP_FLIP_FLAG = 512;\n\n  /** Used as default options for `_.truncate`. */\n  var DEFAULT_TRUNC_LENGTH = 30,\n      DEFAULT_TRUNC_OMISSION = '...';\n\n  /** Used to detect hot functions by number of calls within a span of milliseconds. */\n  var HOT_COUNT = 800,\n      HOT_SPAN = 16;\n\n  /** Used to indicate the type of lazy iteratees. */\n  var LAZY_FILTER_FLAG = 1,\n      LAZY_MAP_FLAG = 2,\n      LAZY_WHILE_FLAG = 3;\n\n  /** Used as references for various `Number` constants. */\n  var INFINITY = 1 / 0,\n      MAX_SAFE_INTEGER = 9007199254740991,\n      MAX_INTEGER = 1.7976931348623157e+308,\n      NAN = 0 / 0;\n\n  /** Used as references for the maximum length and index of an array. */\n  var MAX_ARRAY_LENGTH = 4294967295,\n      MAX_ARRAY_INDEX = MAX_ARRAY_LENGTH - 1,\n      HALF_MAX_ARRAY_LENGTH = MAX_ARRAY_LENGTH >>> 1;\n\n  /** Used to associate wrap methods with their bit flags. */\n  var wrapFlags = [\n    ['ary', WRAP_ARY_FLAG],\n    ['bind', WRAP_BIND_FLAG],\n    ['bindKey', WRAP_BIND_KEY_FLAG],\n    ['curry', WRAP_CURRY_FLAG],\n    ['curryRight', WRAP_CURRY_RIGHT_FLAG],\n    ['flip', WRAP_FLIP_FLAG],\n    ['partial', WRAP_PARTIAL_FLAG],\n    ['partialRight', WRAP_PARTIAL_RIGHT_FLAG],\n    ['rearg', WRAP_REARG_FLAG]\n  ];\n\n  /** `Object#toString` result references. */\n  var argsTag = '[object Arguments]',\n      arrayTag = '[object Array]',\n      asyncTag = '[object AsyncFunction]',\n      boolTag = '[object Boolean]',\n      dateTag = '[object Date]',\n      domExcTag = '[object DOMException]',\n      errorTag = '[object Error]',\n      funcTag = '[object Function]',\n      genTag = '[object GeneratorFunction]',\n      mapTag = '[object Map]',\n      numberTag = '[object Number]',\n      nullTag = '[object Null]',\n      objectTag = '[object Object]',\n      promiseTag = '[object Promise]',\n      proxyTag = '[object Proxy]',\n      regexpTag = '[object RegExp]',\n      setTag = '[object Set]',\n      stringTag = '[object String]',\n      symbolTag = '[object Symbol]',\n      undefinedTag = '[object Undefined]',\n      weakMapTag = '[object WeakMap]',\n      weakSetTag = '[object WeakSet]';\n\n  var arrayBufferTag = '[object ArrayBuffer]',\n      dataViewTag = '[object DataView]',\n      float32Tag = '[object Float32Array]',\n      float64Tag = '[object Float64Array]',\n      int8Tag = '[object Int8Array]',\n      int16Tag = '[object Int16Array]',\n      int32Tag = '[object Int32Array]',\n      uint8Tag = '[object Uint8Array]',\n      uint8ClampedTag = '[object Uint8ClampedArray]',\n      uint16Tag = '[object Uint16Array]',\n      uint32Tag = '[object Uint32Array]';\n\n  /** Used to match empty string literals in compiled template source. */\n  var reEmptyStringLeading = /\\b__p \\+= '';/g,\n      reEmptyStringMiddle = /\\b(__p \\+=) '' \\+/g,\n      reEmptyStringTrailing = /(__e\\(.*?\\)|\\b__t\\)) \\+\\n'';/g;\n\n  /** Used to match HTML entities and HTML characters. */\n  var reEscapedHtml = /&(?:amp|lt|gt|quot|#39);/g,\n      reUnescapedHtml = /[&<>\"']/g,\n      reHasEscapedHtml = RegExp(reEscapedHtml.source),\n      reHasUnescapedHtml = RegExp(reUnescapedHtml.source);\n\n  /** Used to match template delimiters. */\n  var reEscape = /<%-([\\s\\S]+?)%>/g,\n      reEvaluate = /<%([\\s\\S]+?)%>/g,\n      reInterpolate = /<%=([\\s\\S]+?)%>/g;\n\n  /** Used to match property names within property paths. */\n  var reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n      reIsPlainProp = /^\\w*$/,\n      rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n  /**\n   * Used to match `RegExp`\n   * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n   */\n  var reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g,\n      reHasRegExpChar = RegExp(reRegExpChar.source);\n\n  /** Used to match leading whitespace. */\n  var reTrimStart = /^\\s+/;\n\n  /** Used to match a single whitespace character. */\n  var reWhitespace = /\\s/;\n\n  /** Used to match wrap detail comments. */\n  var reWrapComment = /\\{(?:\\n\\/\\* \\[wrapped with .+\\] \\*\\/)?\\n?/,\n      reWrapDetails = /\\{\\n\\/\\* \\[wrapped with (.+)\\] \\*/,\n      reSplitDetails = /,? & /;\n\n  /** Used to match words composed of alphanumeric characters. */\n  var reAsciiWord = /[^\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\x7f]+/g;\n\n  /**\n   * Used to validate the `validate` option in `_.template` variable.\n   *\n   * Forbids characters which could potentially change the meaning of the function argument definition:\n   * - \"(),\" (modification of function parameters)\n   * - \"=\" (default value)\n   * - \"[]{}\" (destructuring of function parameters)\n   * - \"/\" (beginning of a comment)\n   * - whitespace\n   */\n  var reForbiddenIdentifierChars = /[()=,{}\\[\\]\\/\\s]/;\n\n  /** Used to match backslashes in property paths. */\n  var reEscapeChar = /\\\\(\\\\)?/g;\n\n  /**\n   * Used to match\n   * [ES template delimiters](http://ecma-international.org/ecma-262/7.0/#sec-template-literal-lexical-components).\n   */\n  var reEsTemplate = /\\$\\{([^\\\\}]*(?:\\\\.[^\\\\}]*)*)\\}/g;\n\n  /** Used to match `RegExp` flags from their coerced string values. */\n  var reFlags = /\\w*$/;\n\n  /** Used to detect bad signed hexadecimal string values. */\n  var reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n  /** Used to detect binary string values. */\n  var reIsBinary = /^0b[01]+$/i;\n\n  /** Used to detect host constructors (Safari). */\n  var reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n  /** Used to detect octal string values. */\n  var reIsOctal = /^0o[0-7]+$/i;\n\n  /** Used to detect unsigned integer values. */\n  var reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n  /** Used to match Latin Unicode letters (excluding mathematical operators). */\n  var reLatin = /[\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\xff\\u0100-\\u017f]/g;\n\n  /** Used to ensure capturing order of template delimiters. */\n  var reNoMatch = /($^)/;\n\n  /** Used to match unescaped characters in compiled string literals. */\n  var reUnescapedString = /['\\n\\r\\u2028\\u2029\\\\]/g;\n\n  /** Used to compose unicode character classes. */\n  var rsAstralRange = '\\\\ud800-\\\\udfff',\n      rsComboMarksRange = '\\\\u0300-\\\\u036f',\n      reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n      rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n      rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n      rsDingbatRange = '\\\\u2700-\\\\u27bf',\n      rsLowerRange = 'a-z\\\\xdf-\\\\xf6\\\\xf8-\\\\xff',\n      rsMathOpRange = '\\\\xac\\\\xb1\\\\xd7\\\\xf7',\n      rsNonCharRange = '\\\\x00-\\\\x2f\\\\x3a-\\\\x40\\\\x5b-\\\\x60\\\\x7b-\\\\xbf',\n      rsPunctuationRange = '\\\\u2000-\\\\u206f',\n      rsSpaceRange = ' \\\\t\\\\x0b\\\\f\\\\xa0\\\\ufeff\\\\n\\\\r\\\\u2028\\\\u2029\\\\u1680\\\\u180e\\\\u2000\\\\u2001\\\\u2002\\\\u2003\\\\u2004\\\\u2005\\\\u2006\\\\u2007\\\\u2008\\\\u2009\\\\u200a\\\\u202f\\\\u205f\\\\u3000',\n      rsUpperRange = 'A-Z\\\\xc0-\\\\xd6\\\\xd8-\\\\xde',\n      rsVarRange = '\\\\ufe0e\\\\ufe0f',\n      rsBreakRange = rsMathOpRange + rsNonCharRange + rsPunctuationRange + rsSpaceRange;\n\n  /** Used to compose unicode capture groups. */\n  var rsApos = \"['\\u2019]\",\n      rsAstral = '[' + rsAstralRange + ']',\n      rsBreak = '[' + rsBreakRange + ']',\n      rsCombo = '[' + rsComboRange + ']',\n      rsDigits = '\\\\d+',\n      rsDingbat = '[' + rsDingbatRange + ']',\n      rsLower = '[' + rsLowerRange + ']',\n      rsMisc = '[^' + rsAstralRange + rsBreakRange + rsDigits + rsDingbatRange + rsLowerRange + rsUpperRange + ']',\n      rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n      rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n      rsNonAstral = '[^' + rsAstralRange + ']',\n      rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n      rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n      rsUpper = '[' + rsUpperRange + ']',\n      rsZWJ = '\\\\u200d';\n\n  /** Used to compose unicode regexes. */\n  var rsMiscLower = '(?:' + rsLower + '|' + rsMisc + ')',\n      rsMiscUpper = '(?:' + rsUpper + '|' + rsMisc + ')',\n      rsOptContrLower = '(?:' + rsApos + '(?:d|ll|m|re|s|t|ve))?',\n      rsOptContrUpper = '(?:' + rsApos + '(?:D|LL|M|RE|S|T|VE))?',\n      reOptMod = rsModifier + '?',\n      rsOptVar = '[' + rsVarRange + ']?',\n      rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n      rsOrdLower = '\\\\d*(?:1st|2nd|3rd|(?![123])\\\\dth)(?=\\\\b|[A-Z_])',\n      rsOrdUpper = '\\\\d*(?:1ST|2ND|3RD|(?![123])\\\\dTH)(?=\\\\b|[a-z_])',\n      rsSeq = rsOptVar + reOptMod + rsOptJoin,\n      rsEmoji = '(?:' + [rsDingbat, rsRegional, rsSurrPair].join('|') + ')' + rsSeq,\n      rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';\n\n  /** Used to match apostrophes. */\n  var reApos = RegExp(rsApos, 'g');\n\n  /**\n   * Used to match [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks) and\n   * [combining diacritical marks for symbols](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks_for_Symbols).\n   */\n  var reComboMark = RegExp(rsCombo, 'g');\n\n  /** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */\n  var reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g');\n\n  /** Used to match complex or compound words. */\n  var reUnicodeWord = RegExp([\n    rsUpper + '?' + rsLower + '+' + rsOptContrLower + '(?=' + [rsBreak, rsUpper, '$'].join('|') + ')',\n    rsMiscUpper + '+' + rsOptContrUpper + '(?=' + [rsBreak, rsUpper + rsMiscLower, '$'].join('|') + ')',\n    rsUpper + '?' + rsMiscLower + '+' + rsOptContrLower,\n    rsUpper + '+' + rsOptContrUpper,\n    rsOrdUpper,\n    rsOrdLower,\n    rsDigits,\n    rsEmoji\n  ].join('|'), 'g');\n\n  /** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */\n  var reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange  + rsComboRange + rsVarRange + ']');\n\n  /** Used to detect strings that need a more robust regexp to match words. */\n  var reHasUnicodeWord = /[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/;\n\n  /** Used to assign default `context` object properties. */\n  var contextProps = [\n    'Array', 'Buffer', 'DataView', 'Date', 'Error', 'Float32Array', 'Float64Array',\n    'Function', 'Int8Array', 'Int16Array', 'Int32Array', 'Map', 'Math', 'Object',\n    'Promise', 'RegExp', 'Set', 'String', 'Symbol', 'TypeError', 'Uint8Array',\n    'Uint8ClampedArray', 'Uint16Array', 'Uint32Array', 'WeakMap',\n    '_', 'clearTimeout', 'isFinite', 'parseInt', 'setTimeout'\n  ];\n\n  /** Used to make template sourceURLs easier to identify. */\n  var templateCounter = -1;\n\n  /** Used to identify `toStringTag` values of typed arrays. */\n  var typedArrayTags = {};\n  typedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\n  typedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\n  typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\n  typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\n  typedArrayTags[uint32Tag] = true;\n  typedArrayTags[argsTag] = typedArrayTags[arrayTag] =\n  typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\n  typedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\n  typedArrayTags[errorTag] = typedArrayTags[funcTag] =\n  typedArrayTags[mapTag] = typedArrayTags[numberTag] =\n  typedArrayTags[objectTag] = typedArrayTags[regexpTag] =\n  typedArrayTags[setTag] = typedArrayTags[stringTag] =\n  typedArrayTags[weakMapTag] = false;\n\n  /** Used to identify `toStringTag` values supported by `_.clone`. */\n  var cloneableTags = {};\n  cloneableTags[argsTag] = cloneableTags[arrayTag] =\n  cloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =\n  cloneableTags[boolTag] = cloneableTags[dateTag] =\n  cloneableTags[float32Tag] = cloneableTags[float64Tag] =\n  cloneableTags[int8Tag] = cloneableTags[int16Tag] =\n  cloneableTags[int32Tag] = cloneableTags[mapTag] =\n  cloneableTags[numberTag] = cloneableTags[objectTag] =\n  cloneableTags[regexpTag] = cloneableTags[setTag] =\n  cloneableTags[stringTag] = cloneableTags[symbolTag] =\n  cloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =\n  cloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;\n  cloneableTags[errorTag] = cloneableTags[funcTag] =\n  cloneableTags[weakMapTag] = false;\n\n  /** Used to map Latin Unicode letters to basic Latin letters. */\n  var deburredLetters = {\n    // Latin-1 Supplement block.\n    '\\xc0': 'A',  '\\xc1': 'A', '\\xc2': 'A', '\\xc3': 'A', '\\xc4': 'A', '\\xc5': 'A',\n    '\\xe0': 'a',  '\\xe1': 'a', '\\xe2': 'a', '\\xe3': 'a', '\\xe4': 'a', '\\xe5': 'a',\n    '\\xc7': 'C',  '\\xe7': 'c',\n    '\\xd0': 'D',  '\\xf0': 'd',\n    '\\xc8': 'E',  '\\xc9': 'E', '\\xca': 'E', '\\xcb': 'E',\n    '\\xe8': 'e',  '\\xe9': 'e', '\\xea': 'e', '\\xeb': 'e',\n    '\\xcc': 'I',  '\\xcd': 'I', '\\xce': 'I', '\\xcf': 'I',\n    '\\xec': 'i',  '\\xed': 'i', '\\xee': 'i', '\\xef': 'i',\n    '\\xd1': 'N',  '\\xf1': 'n',\n    '\\xd2': 'O',  '\\xd3': 'O', '\\xd4': 'O', '\\xd5': 'O', '\\xd6': 'O', '\\xd8': 'O',\n    '\\xf2': 'o',  '\\xf3': 'o', '\\xf4': 'o', '\\xf5': 'o', '\\xf6': 'o', '\\xf8': 'o',\n    '\\xd9': 'U',  '\\xda': 'U', '\\xdb': 'U', '\\xdc': 'U',\n    '\\xf9': 'u',  '\\xfa': 'u', '\\xfb': 'u', '\\xfc': 'u',\n    '\\xdd': 'Y',  '\\xfd': 'y', '\\xff': 'y',\n    '\\xc6': 'Ae', '\\xe6': 'ae',\n    '\\xde': 'Th', '\\xfe': 'th',\n    '\\xdf': 'ss',\n    // Latin Extended-A block.\n    '\\u0100': 'A',  '\\u0102': 'A', '\\u0104': 'A',\n    '\\u0101': 'a',  '\\u0103': 'a', '\\u0105': 'a',\n    '\\u0106': 'C',  '\\u0108': 'C', '\\u010a': 'C', '\\u010c': 'C',\n    '\\u0107': 'c',  '\\u0109': 'c', '\\u010b': 'c', '\\u010d': 'c',\n    '\\u010e': 'D',  '\\u0110': 'D', '\\u010f': 'd', '\\u0111': 'd',\n    '\\u0112': 'E',  '\\u0114': 'E', '\\u0116': 'E', '\\u0118': 'E', '\\u011a': 'E',\n    '\\u0113': 'e',  '\\u0115': 'e', '\\u0117': 'e', '\\u0119': 'e', '\\u011b': 'e',\n    '\\u011c': 'G',  '\\u011e': 'G', '\\u0120': 'G', '\\u0122': 'G',\n    '\\u011d': 'g',  '\\u011f': 'g', '\\u0121': 'g', '\\u0123': 'g',\n    '\\u0124': 'H',  '\\u0126': 'H', '\\u0125': 'h', '\\u0127': 'h',\n    '\\u0128': 'I',  '\\u012a': 'I', '\\u012c': 'I', '\\u012e': 'I', '\\u0130': 'I',\n    '\\u0129': 'i',  '\\u012b': 'i', '\\u012d': 'i', '\\u012f': 'i', '\\u0131': 'i',\n    '\\u0134': 'J',  '\\u0135': 'j',\n    '\\u0136': 'K',  '\\u0137': 'k', '\\u0138': 'k',\n    '\\u0139': 'L',  '\\u013b': 'L', '\\u013d': 'L', '\\u013f': 'L', '\\u0141': 'L',\n    '\\u013a': 'l',  '\\u013c': 'l', '\\u013e': 'l', '\\u0140': 'l', '\\u0142': 'l',\n    '\\u0143': 'N',  '\\u0145': 'N', '\\u0147': 'N', '\\u014a': 'N',\n    '\\u0144': 'n',  '\\u0146': 'n', '\\u0148': 'n', '\\u014b': 'n',\n    '\\u014c': 'O',  '\\u014e': 'O', '\\u0150': 'O',\n    '\\u014d': 'o',  '\\u014f': 'o', '\\u0151': 'o',\n    '\\u0154': 'R',  '\\u0156': 'R', '\\u0158': 'R',\n    '\\u0155': 'r',  '\\u0157': 'r', '\\u0159': 'r',\n    '\\u015a': 'S',  '\\u015c': 'S', '\\u015e': 'S', '\\u0160': 'S',\n    '\\u015b': 's',  '\\u015d': 's', '\\u015f': 's', '\\u0161': 's',\n    '\\u0162': 'T',  '\\u0164': 'T', '\\u0166': 'T',\n    '\\u0163': 't',  '\\u0165': 't', '\\u0167': 't',\n    '\\u0168': 'U',  '\\u016a': 'U', '\\u016c': 'U', '\\u016e': 'U', '\\u0170': 'U', '\\u0172': 'U',\n    '\\u0169': 'u',  '\\u016b': 'u', '\\u016d': 'u', '\\u016f': 'u', '\\u0171': 'u', '\\u0173': 'u',\n    '\\u0174': 'W',  '\\u0175': 'w',\n    '\\u0176': 'Y',  '\\u0177': 'y', '\\u0178': 'Y',\n    '\\u0179': 'Z',  '\\u017b': 'Z', '\\u017d': 'Z',\n    '\\u017a': 'z',  '\\u017c': 'z', '\\u017e': 'z',\n    '\\u0132': 'IJ', '\\u0133': 'ij',\n    '\\u0152': 'Oe', '\\u0153': 'oe',\n    '\\u0149': \"'n\", '\\u017f': 's'\n  };\n\n  /** Used to map characters to HTML entities. */\n  var htmlEscapes = {\n    '&': '&amp;',\n    '<': '&lt;',\n    '>': '&gt;',\n    '\"': '&quot;',\n    \"'\": '&#39;'\n  };\n\n  /** Used to map HTML entities to characters. */\n  var htmlUnescapes = {\n    '&amp;': '&',\n    '&lt;': '<',\n    '&gt;': '>',\n    '&quot;': '\"',\n    '&#39;': \"'\"\n  };\n\n  /** Used to escape characters for inclusion in compiled string literals. */\n  var stringEscapes = {\n    '\\\\': '\\\\',\n    \"'\": \"'\",\n    '\\n': 'n',\n    '\\r': 'r',\n    '\\u2028': 'u2028',\n    '\\u2029': 'u2029'\n  };\n\n  /** Built-in method references without a dependency on `root`. */\n  var freeParseFloat = parseFloat,\n      freeParseInt = parseInt;\n\n  /** Detect free variable `global` from Node.js. */\n  var freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n  /** Detect free variable `self`. */\n  var freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n  /** Used as a reference to the global object. */\n  var root = freeGlobal || freeSelf || Function('return this')();\n\n  /** Detect free variable `exports`. */\n  var freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n  /** Detect free variable `module`. */\n  var freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n  /** Detect the popular CommonJS extension `module.exports`. */\n  var moduleExports = freeModule && freeModule.exports === freeExports;\n\n  /** Detect free variable `process` from Node.js. */\n  var freeProcess = moduleExports && freeGlobal.process;\n\n  /** Used to access faster Node.js helpers. */\n  var nodeUtil = (function() {\n    try {\n      // Use `util.types` for Node.js 10+.\n      var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n      if (types) {\n        return types;\n      }\n\n      // Legacy `process.binding('util')` for Node.js < 10.\n      return freeProcess && freeProcess.binding && freeProcess.binding('util');\n    } catch (e) {}\n  }());\n\n  /* Node.js helper references. */\n  var nodeIsArrayBuffer = nodeUtil && nodeUtil.isArrayBuffer,\n      nodeIsDate = nodeUtil && nodeUtil.isDate,\n      nodeIsMap = nodeUtil && nodeUtil.isMap,\n      nodeIsRegExp = nodeUtil && nodeUtil.isRegExp,\n      nodeIsSet = nodeUtil && nodeUtil.isSet,\n      nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n  /*--------------------------------------------------------------------------*/\n\n  /**\n   * A faster alternative to `Function#apply`, this function invokes `func`\n   * with the `this` binding of `thisArg` and the arguments of `args`.\n   *\n   * @private\n   * @param {Function} func The function to invoke.\n   * @param {*} thisArg The `this` binding of `func`.\n   * @param {Array} args The arguments to invoke `func` with.\n   * @returns {*} Returns the result of `func`.\n   */\n  function apply(func, thisArg, args) {\n    switch (args.length) {\n      case 0: return func.call(thisArg);\n      case 1: return func.call(thisArg, args[0]);\n      case 2: return func.call(thisArg, args[0], args[1]);\n      case 3: return func.call(thisArg, args[0], args[1], args[2]);\n    }\n    return func.apply(thisArg, args);\n  }\n\n  /**\n   * A specialized version of `baseAggregator` for arrays.\n   *\n   * @private\n   * @param {Array} [array] The array to iterate over.\n   * @param {Function} setter The function to set `accumulator` values.\n   * @param {Function} iteratee The iteratee to transform keys.\n   * @param {Object} accumulator The initial aggregated object.\n   * @returns {Function} Returns `accumulator`.\n   */\n  function arrayAggregator(array, setter, iteratee, accumulator) {\n    var index = -1,\n        length = array == null ? 0 : array.length;\n\n    while (++index < length) {\n      var value = array[index];\n      setter(accumulator, value, iteratee(value), array);\n    }\n    return accumulator;\n  }\n\n  /**\n   * A specialized version of `_.forEach` for arrays without support for\n   * iteratee shorthands.\n   *\n   * @private\n   * @param {Array} [array] The array to iterate over.\n   * @param {Function} iteratee The function invoked per iteration.\n   * @returns {Array} Returns `array`.\n   */\n  function arrayEach(array, iteratee) {\n    var index = -1,\n        length = array == null ? 0 : array.length;\n\n    while (++index < length) {\n      if (iteratee(array[index], index, array) === false) {\n        break;\n      }\n    }\n    return array;\n  }\n\n  /**\n   * A specialized version of `_.forEachRight` for arrays without support for\n   * iteratee shorthands.\n   *\n   * @private\n   * @param {Array} [array] The array to iterate over.\n   * @param {Function} iteratee The function invoked per iteration.\n   * @returns {Array} Returns `array`.\n   */\n  function arrayEachRight(array, iteratee) {\n    var length = array == null ? 0 : array.length;\n\n    while (length--) {\n      if (iteratee(array[length], length, array) === false) {\n        break;\n      }\n    }\n    return array;\n  }\n\n  /**\n   * A specialized version of `_.every` for arrays without support for\n   * iteratee shorthands.\n   *\n   * @private\n   * @param {Array} [array] The array to iterate over.\n   * @param {Function} predicate The function invoked per iteration.\n   * @returns {boolean} Returns `true` if all elements pass the predicate check,\n   *  else `false`.\n   */\n  function arrayEvery(array, predicate) {\n    var index = -1,\n        length = array == null ? 0 : array.length;\n\n    while (++index < length) {\n      if (!predicate(array[index], index, array)) {\n        return false;\n      }\n    }\n    return true;\n  }\n\n  /**\n   * A specialized version of `_.filter` for arrays without support for\n   * iteratee shorthands.\n   *\n   * @private\n   * @param {Array} [array] The array to iterate over.\n   * @param {Function} predicate The function invoked per iteration.\n   * @returns {Array} Returns the new filtered array.\n   */\n  function arrayFilter(array, predicate) {\n    var index = -1,\n        length = array == null ? 0 : array.length,\n        resIndex = 0,\n        result = [];\n\n    while (++index < length) {\n      var value = array[index];\n      if (predicate(value, index, array)) {\n        result[resIndex++] = value;\n      }\n    }\n    return result;\n  }\n\n  /**\n   * A specialized version of `_.includes` for arrays without support for\n   * specifying an index to search from.\n   *\n   * @private\n   * @param {Array} [array] The array to inspect.\n   * @param {*} target The value to search for.\n   * @returns {boolean} Returns `true` if `target` is found, else `false`.\n   */\n  function arrayIncludes(array, value) {\n    var length = array == null ? 0 : array.length;\n    return !!length && baseIndexOf(array, value, 0) > -1;\n  }\n\n  /**\n   * This function is like `arrayIncludes` except that it accepts a comparator.\n   *\n   * @private\n   * @param {Array} [array] The array to inspect.\n   * @param {*} target The value to search for.\n   * @param {Function} comparator The comparator invoked per element.\n   * @returns {boolean} Returns `true` if `target` is found, else `false`.\n   */\n  function arrayIncludesWith(array, value, comparator) {\n    var index = -1,\n        length = array == null ? 0 : array.length;\n\n    while (++index < length) {\n      if (comparator(value, array[index])) {\n        return true;\n      }\n    }\n    return false;\n  }\n\n  /**\n   * A specialized version of `_.map` for arrays without support for iteratee\n   * shorthands.\n   *\n   * @private\n   * @param {Array} [array] The array to iterate over.\n   * @param {Function} iteratee The function invoked per iteration.\n   * @returns {Array} Returns the new mapped array.\n   */\n  function arrayMap(array, iteratee) {\n    var index = -1,\n        length = array == null ? 0 : array.length,\n        result = Array(length);\n\n    while (++index < length) {\n      result[index] = iteratee(array[index], index, array);\n    }\n    return result;\n  }\n\n  /**\n   * Appends the elements of `values` to `array`.\n   *\n   * @private\n   * @param {Array} array The array to modify.\n   * @param {Array} values The values to append.\n   * @returns {Array} Returns `array`.\n   */\n  function arrayPush(array, values) {\n    var index = -1,\n        length = values.length,\n        offset = array.length;\n\n    while (++index < length) {\n      array[offset + index] = values[index];\n    }\n    return array;\n  }\n\n  /**\n   * A specialized version of `_.reduce` for arrays without support for\n   * iteratee shorthands.\n   *\n   * @private\n   * @param {Array} [array] The array to iterate over.\n   * @param {Function} iteratee The function invoked per iteration.\n   * @param {*} [accumulator] The initial value.\n   * @param {boolean} [initAccum] Specify using the first element of `array` as\n   *  the initial value.\n   * @returns {*} Returns the accumulated value.\n   */\n  function arrayReduce(array, iteratee, accumulator, initAccum) {\n    var index = -1,\n        length = array == null ? 0 : array.length;\n\n    if (initAccum && length) {\n      accumulator = array[++index];\n    }\n    while (++index < length) {\n      accumulator = iteratee(accumulator, array[index], index, array);\n    }\n    return accumulator;\n  }\n\n  /**\n   * A specialized version of `_.reduceRight` for arrays without support for\n   * iteratee shorthands.\n   *\n   * @private\n   * @param {Array} [array] The array to iterate over.\n   * @param {Function} iteratee The function invoked per iteration.\n   * @param {*} [accumulator] The initial value.\n   * @param {boolean} [initAccum] Specify using the last element of `array` as\n   *  the initial value.\n   * @returns {*} Returns the accumulated value.\n   */\n  function arrayReduceRight(array, iteratee, accumulator, initAccum) {\n    var length = array == null ? 0 : array.length;\n    if (initAccum && length) {\n      accumulator = array[--length];\n    }\n    while (length--) {\n      accumulator = iteratee(accumulator, array[length], length, array);\n    }\n    return accumulator;\n  }\n\n  /**\n   * A specialized version of `_.some` for arrays without support for iteratee\n   * shorthands.\n   *\n   * @private\n   * @param {Array} [array] The array to iterate over.\n   * @param {Function} predicate The function invoked per iteration.\n   * @returns {boolean} Returns `true` if any element passes the predicate check,\n   *  else `false`.\n   */\n  function arraySome(array, predicate) {\n    var index = -1,\n        length = array == null ? 0 : array.length;\n\n    while (++index < length) {\n      if (predicate(array[index], index, array)) {\n        return true;\n      }\n    }\n    return false;\n  }\n\n  /**\n   * Gets the size of an ASCII `string`.\n   *\n   * @private\n   * @param {string} string The string inspect.\n   * @returns {number} Returns the string size.\n   */\n  var asciiSize = baseProperty('length');\n\n  /**\n   * Converts an ASCII `string` to an array.\n   *\n   * @private\n   * @param {string} string The string to convert.\n   * @returns {Array} Returns the converted array.\n   */\n  function asciiToArray(string) {\n    return string.split('');\n  }\n\n  /**\n   * Splits an ASCII `string` into an array of its words.\n   *\n   * @private\n   * @param {string} The string to inspect.\n   * @returns {Array} Returns the words of `string`.\n   */\n  function asciiWords(string) {\n    return string.match(reAsciiWord) || [];\n  }\n\n  /**\n   * The base implementation of methods like `_.findKey` and `_.findLastKey`,\n   * without support for iteratee shorthands, which iterates over `collection`\n   * using `eachFunc`.\n   *\n   * @private\n   * @param {Array|Object} collection The collection to inspect.\n   * @param {Function} predicate The function invoked per iteration.\n   * @param {Function} eachFunc The function to iterate over `collection`.\n   * @returns {*} Returns the found element or its key, else `undefined`.\n   */\n  function baseFindKey(collection, predicate, eachFunc) {\n    var result;\n    eachFunc(collection, function(value, key, collection) {\n      if (predicate(value, key, collection)) {\n        result = key;\n        return false;\n      }\n    });\n    return result;\n  }\n\n  /**\n   * The base implementation of `_.findIndex` and `_.findLastIndex` without\n   * support for iteratee shorthands.\n   *\n   * @private\n   * @param {Array} array The array to inspect.\n   * @param {Function} predicate The function invoked per iteration.\n   * @param {number} fromIndex The index to search from.\n   * @param {boolean} [fromRight] Specify iterating from right to left.\n   * @returns {number} Returns the index of the matched value, else `-1`.\n   */\n  function baseFindIndex(array, predicate, fromIndex, fromRight) {\n    var length = array.length,\n        index = fromIndex + (fromRight ? 1 : -1);\n\n    while ((fromRight ? index-- : ++index < length)) {\n      if (predicate(array[index], index, array)) {\n        return index;\n      }\n    }\n    return -1;\n  }\n\n  /**\n   * The base implementation of `_.indexOf` without `fromIndex` bounds checks.\n   *\n   * @private\n   * @param {Array} array The array to inspect.\n   * @param {*} value The value to search for.\n   * @param {number} fromIndex The index to search from.\n   * @returns {number} Returns the index of the matched value, else `-1`.\n   */\n  function baseIndexOf(array, value, fromIndex) {\n    return value === value\n      ? strictIndexOf(array, value, fromIndex)\n      : baseFindIndex(array, baseIsNaN, fromIndex);\n  }\n\n  /**\n   * This function is like `baseIndexOf` except that it accepts a comparator.\n   *\n   * @private\n   * @param {Array} array The array to inspect.\n   * @param {*} value The value to search for.\n   * @param {number} fromIndex The index to search from.\n   * @param {Function} comparator The comparator invoked per element.\n   * @returns {number} Returns the index of the matched value, else `-1`.\n   */\n  function baseIndexOfWith(array, value, fromIndex, comparator) {\n    var index = fromIndex - 1,\n        length = array.length;\n\n    while (++index < length) {\n      if (comparator(array[index], value)) {\n        return index;\n      }\n    }\n    return -1;\n  }\n\n  /**\n   * The base implementation of `_.isNaN` without support for number objects.\n   *\n   * @private\n   * @param {*} value The value to check.\n   * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n   */\n  function baseIsNaN(value) {\n    return value !== value;\n  }\n\n  /**\n   * The base implementation of `_.mean` and `_.meanBy` without support for\n   * iteratee shorthands.\n   *\n   * @private\n   * @param {Array} array The array to iterate over.\n   * @param {Function} iteratee The function invoked per iteration.\n   * @returns {number} Returns the mean.\n   */\n  function baseMean(array, iteratee) {\n    var length = array == null ? 0 : array.length;\n    return length ? (baseSum(array, iteratee) / length) : NAN;\n  }\n\n  /**\n   * The base implementation of `_.property` without support for deep paths.\n   *\n   * @private\n   * @param {string} key The key of the property to get.\n   * @returns {Function} Returns the new accessor function.\n   */\n  function baseProperty(key) {\n    return function(object) {\n      return object == null ? undefined : object[key];\n    };\n  }\n\n  /**\n   * The base implementation of `_.propertyOf` without support for deep paths.\n   *\n   * @private\n   * @param {Object} object The object to query.\n   * @returns {Function} Returns the new accessor function.\n   */\n  function basePropertyOf(object) {\n    return function(key) {\n      return object == null ? undefined : object[key];\n    };\n  }\n\n  /**\n   * The base implementation of `_.reduce` and `_.reduceRight`, without support\n   * for iteratee shorthands, which iterates over `collection` using `eachFunc`.\n   *\n   * @private\n   * @param {Array|Object} collection The collection to iterate over.\n   * @param {Function} iteratee The function invoked per iteration.\n   * @param {*} accumulator The initial value.\n   * @param {boolean} initAccum Specify using the first or last element of\n   *  `collection` as the initial value.\n   * @param {Function} eachFunc The function to iterate over `collection`.\n   * @returns {*} Returns the accumulated value.\n   */\n  function baseReduce(collection, iteratee, accumulator, initAccum, eachFunc) {\n    eachFunc(collection, function(value, index, collection) {\n      accumulator = initAccum\n        ? (initAccum = false, value)\n        : iteratee(accumulator, value, index, collection);\n    });\n    return accumulator;\n  }\n\n  /**\n   * The base implementation of `_.sortBy` which uses `comparer` to define the\n   * sort order of `array` and replaces criteria objects with their corresponding\n   * values.\n   *\n   * @private\n   * @param {Array} array The array to sort.\n   * @param {Function} comparer The function to define sort order.\n   * @returns {Array} Returns `array`.\n   */\n  function baseSortBy(array, comparer) {\n    var length = array.length;\n\n    array.sort(comparer);\n    while (length--) {\n      array[length] = array[length].value;\n    }\n    return array;\n  }\n\n  /**\n   * The base implementation of `_.sum` and `_.sumBy` without support for\n   * iteratee shorthands.\n   *\n   * @private\n   * @param {Array} array The array to iterate over.\n   * @param {Function} iteratee The function invoked per iteration.\n   * @returns {number} Returns the sum.\n   */\n  function baseSum(array, iteratee) {\n    var result,\n        index = -1,\n        length = array.length;\n\n    while (++index < length) {\n      var current = iteratee(array[index]);\n      if (current !== undefined) {\n        result = result === undefined ? current : (result + current);\n      }\n    }\n    return result;\n  }\n\n  /**\n   * The base implementation of `_.times` without support for iteratee shorthands\n   * or max array length checks.\n   *\n   * @private\n   * @param {number} n The number of times to invoke `iteratee`.\n   * @param {Function} iteratee The function invoked per iteration.\n   * @returns {Array} Returns the array of results.\n   */\n  function baseTimes(n, iteratee) {\n    var index = -1,\n        result = Array(n);\n\n    while (++index < n) {\n      result[index] = iteratee(index);\n    }\n    return result;\n  }\n\n  /**\n   * The base implementation of `_.toPairs` and `_.toPairsIn` which creates an array\n   * of key-value pairs for `object` corresponding to the property names of `props`.\n   *\n   * @private\n   * @param {Object} object The object to query.\n   * @param {Array} props The property names to get values for.\n   * @returns {Object} Returns the key-value pairs.\n   */\n  function baseToPairs(object, props) {\n    return arrayMap(props, function(key) {\n      return [key, object[key]];\n    });\n  }\n\n  /**\n   * The base implementation of `_.trim`.\n   *\n   * @private\n   * @param {string} string The string to trim.\n   * @returns {string} Returns the trimmed string.\n   */\n  function baseTrim(string) {\n    return string\n      ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, '')\n      : string;\n  }\n\n  /**\n   * The base implementation of `_.unary` without support for storing metadata.\n   *\n   * @private\n   * @param {Function} func The function to cap arguments for.\n   * @returns {Function} Returns the new capped function.\n   */\n  function baseUnary(func) {\n    return function(value) {\n      return func(value);\n    };\n  }\n\n  /**\n   * The base implementation of `_.values` and `_.valuesIn` which creates an\n   * array of `object` property values corresponding to the property names\n   * of `props`.\n   *\n   * @private\n   * @param {Object} object The object to query.\n   * @param {Array} props The property names to get values for.\n   * @returns {Object} Returns the array of property values.\n   */\n  function baseValues(object, props) {\n    return arrayMap(props, function(key) {\n      return object[key];\n    });\n  }\n\n  /**\n   * Checks if a `cache` value for `key` exists.\n   *\n   * @private\n   * @param {Object} cache The cache to query.\n   * @param {string} key The key of the entry to check.\n   * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n   */\n  function cacheHas(cache, key) {\n    return cache.has(key);\n  }\n\n  /**\n   * Used by `_.trim` and `_.trimStart` to get the index of the first string symbol\n   * that is not found in the character symbols.\n   *\n   * @private\n   * @param {Array} strSymbols The string symbols to inspect.\n   * @param {Array} chrSymbols The character symbols to find.\n   * @returns {number} Returns the index of the first unmatched string symbol.\n   */\n  function charsStartIndex(strSymbols, chrSymbols) {\n    var index = -1,\n        length = strSymbols.length;\n\n    while (++index < length && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {}\n    return index;\n  }\n\n  /**\n   * Used by `_.trim` and `_.trimEnd` to get the index of the last string symbol\n   * that is not found in the character symbols.\n   *\n   * @private\n   * @param {Array} strSymbols The string symbols to inspect.\n   * @param {Array} chrSymbols The character symbols to find.\n   * @returns {number} Returns the index of the last unmatched string symbol.\n   */\n  function charsEndIndex(strSymbols, chrSymbols) {\n    var index = strSymbols.length;\n\n    while (index-- && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {}\n    return index;\n  }\n\n  /**\n   * Gets the number of `placeholder` occurrences in `array`.\n   *\n   * @private\n   * @param {Array} array The array to inspect.\n   * @param {*} placeholder The placeholder to search for.\n   * @returns {number} Returns the placeholder count.\n   */\n  function countHolders(array, placeholder) {\n    var length = array.length,\n        result = 0;\n\n    while (length--) {\n      if (array[length] === placeholder) {\n        ++result;\n      }\n    }\n    return result;\n  }\n\n  /**\n   * Used by `_.deburr` to convert Latin-1 Supplement and Latin Extended-A\n   * letters to basic Latin letters.\n   *\n   * @private\n   * @param {string} letter The matched letter to deburr.\n   * @returns {string} Returns the deburred letter.\n   */\n  var deburrLetter = basePropertyOf(deburredLetters);\n\n  /**\n   * Used by `_.escape` to convert characters to HTML entities.\n   *\n   * @private\n   * @param {string} chr The matched character to escape.\n   * @returns {string} Returns the escaped character.\n   */\n  var escapeHtmlChar = basePropertyOf(htmlEscapes);\n\n  /**\n   * Used by `_.template` to escape characters for inclusion in compiled string literals.\n   *\n   * @private\n   * @param {string} chr The matched character to escape.\n   * @returns {string} Returns the escaped character.\n   */\n  function escapeStringChar(chr) {\n    return '\\\\' + stringEscapes[chr];\n  }\n\n  /**\n   * Gets the value at `key` of `object`.\n   *\n   * @private\n   * @param {Object} [object] The object to query.\n   * @param {string} key The key of the property to get.\n   * @returns {*} Returns the property value.\n   */\n  function getValue(object, key) {\n    return object == null ? undefined : object[key];\n  }\n\n  /**\n   * Checks if `string` contains Unicode symbols.\n   *\n   * @private\n   * @param {string} string The string to inspect.\n   * @returns {boolean} Returns `true` if a symbol is found, else `false`.\n   */\n  function hasUnicode(string) {\n    return reHasUnicode.test(string);\n  }\n\n  /**\n   * Checks if `string` contains a word composed of Unicode symbols.\n   *\n   * @private\n   * @param {string} string The string to inspect.\n   * @returns {boolean} Returns `true` if a word is found, else `false`.\n   */\n  function hasUnicodeWord(string) {\n    return reHasUnicodeWord.test(string);\n  }\n\n  /**\n   * Converts `iterator` to an array.\n   *\n   * @private\n   * @param {Object} iterator The iterator to convert.\n   * @returns {Array} Returns the converted array.\n   */\n  function iteratorToArray(iterator) {\n    var data,\n        result = [];\n\n    while (!(data = iterator.next()).done) {\n      result.push(data.value);\n    }\n    return result;\n  }\n\n  /**\n   * Converts `map` to its key-value pairs.\n   *\n   * @private\n   * @param {Object} map The map to convert.\n   * @returns {Array} Returns the key-value pairs.\n   */\n  function mapToArray(map) {\n    var index = -1,\n        result = Array(map.size);\n\n    map.forEach(function(value, key) {\n      result[++index] = [key, value];\n    });\n    return result;\n  }\n\n  /**\n   * Creates a unary function that invokes `func` with its argument transformed.\n   *\n   * @private\n   * @param {Function} func The function to wrap.\n   * @param {Function} transform The argument transform.\n   * @returns {Function} Returns the new function.\n   */\n  function overArg(func, transform) {\n    return function(arg) {\n      return func(transform(arg));\n    };\n  }\n\n  /**\n   * Replaces all `placeholder` elements in `array` with an internal placeholder\n   * and returns an array of their indexes.\n   *\n   * @private\n   * @param {Array} array The array to modify.\n   * @param {*} placeholder The placeholder to replace.\n   * @returns {Array} Returns the new array of placeholder indexes.\n   */\n  function replaceHolders(array, placeholder) {\n    var index = -1,\n        length = array.length,\n        resIndex = 0,\n        result = [];\n\n    while (++index < length) {\n      var value = array[index];\n      if (value === placeholder || value === PLACEHOLDER) {\n        array[index] = PLACEHOLDER;\n        result[resIndex++] = index;\n      }\n    }\n    return result;\n  }\n\n  /**\n   * Converts `set` to an array of its values.\n   *\n   * @private\n   * @param {Object} set The set to convert.\n   * @returns {Array} Returns the values.\n   */\n  function setToArray(set) {\n    var index = -1,\n        result = Array(set.size);\n\n    set.forEach(function(value) {\n      result[++index] = value;\n    });\n    return result;\n  }\n\n  /**\n   * Converts `set` to its value-value pairs.\n   *\n   * @private\n   * @param {Object} set The set to convert.\n   * @returns {Array} Returns the value-value pairs.\n   */\n  function setToPairs(set) {\n    var index = -1,\n        result = Array(set.size);\n\n    set.forEach(function(value) {\n      result[++index] = [value, value];\n    });\n    return result;\n  }\n\n  /**\n   * A specialized version of `_.indexOf` which performs strict equality\n   * comparisons of values, i.e. `===`.\n   *\n   * @private\n   * @param {Array} array The array to inspect.\n   * @param {*} value The value to search for.\n   * @param {number} fromIndex The index to search from.\n   * @returns {number} Returns the index of the matched value, else `-1`.\n   */\n  function strictIndexOf(array, value, fromIndex) {\n    var index = fromIndex - 1,\n        length = array.length;\n\n    while (++index < length) {\n      if (array[index] === value) {\n        return index;\n      }\n    }\n    return -1;\n  }\n\n  /**\n   * A specialized version of `_.lastIndexOf` which performs strict equality\n   * comparisons of values, i.e. `===`.\n   *\n   * @private\n   * @param {Array} array The array to inspect.\n   * @param {*} value The value to search for.\n   * @param {number} fromIndex The index to search from.\n   * @returns {number} Returns the index of the matched value, else `-1`.\n   */\n  function strictLastIndexOf(array, value, fromIndex) {\n    var index = fromIndex + 1;\n    while (index--) {\n      if (array[index] === value) {\n        return index;\n      }\n    }\n    return index;\n  }\n\n  /**\n   * Gets the number of symbols in `string`.\n   *\n   * @private\n   * @param {string} string The string to inspect.\n   * @returns {number} Returns the string size.\n   */\n  function stringSize(string) {\n    return hasUnicode(string)\n      ? unicodeSize(string)\n      : asciiSize(string);\n  }\n\n  /**\n   * Converts `string` to an array.\n   *\n   * @private\n   * @param {string} string The string to convert.\n   * @returns {Array} Returns the converted array.\n   */\n  function stringToArray(string) {\n    return hasUnicode(string)\n      ? unicodeToArray(string)\n      : asciiToArray(string);\n  }\n\n  /**\n   * Used by `_.trim` and `_.trimEnd` to get the index of the last non-whitespace\n   * character of `string`.\n   *\n   * @private\n   * @param {string} string The string to inspect.\n   * @returns {number} Returns the index of the last non-whitespace character.\n   */\n  function trimmedEndIndex(string) {\n    var index = string.length;\n\n    while (index-- && reWhitespace.test(string.charAt(index))) {}\n    return index;\n  }\n\n  /**\n   * Used by `_.unescape` to convert HTML entities to characters.\n   *\n   * @private\n   * @param {string} chr The matched character to unescape.\n   * @returns {string} Returns the unescaped character.\n   */\n  var unescapeHtmlChar = basePropertyOf(htmlUnescapes);\n\n  /**\n   * Gets the size of a Unicode `string`.\n   *\n   * @private\n   * @param {string} string The string inspect.\n   * @returns {number} Returns the string size.\n   */\n  function unicodeSize(string) {\n    var result = reUnicode.lastIndex = 0;\n    while (reUnicode.test(string)) {\n      ++result;\n    }\n    return result;\n  }\n\n  /**\n   * Converts a Unicode `string` to an array.\n   *\n   * @private\n   * @param {string} string The string to convert.\n   * @returns {Array} Returns the converted array.\n   */\n  function unicodeToArray(string) {\n    return string.match(reUnicode) || [];\n  }\n\n  /**\n   * Splits a Unicode `string` into an array of its words.\n   *\n   * @private\n   * @param {string} The string to inspect.\n   * @returns {Array} Returns the words of `string`.\n   */\n  function unicodeWords(string) {\n    return string.match(reUnicodeWord) || [];\n  }\n\n  /*--------------------------------------------------------------------------*/\n\n  /**\n   * Create a new pristine `lodash` function using the `context` object.\n   *\n   * @static\n   * @memberOf _\n   * @since 1.1.0\n   * @category Util\n   * @param {Object} [context=root] The context object.\n   * @returns {Function} Returns a new `lodash` function.\n   * @example\n   *\n   * _.mixin({ 'foo': _.constant('foo') });\n   *\n   * var lodash = _.runInContext();\n   * lodash.mixin({ 'bar': lodash.constant('bar') });\n   *\n   * _.isFunction(_.foo);\n   * // => true\n   * _.isFunction(_.bar);\n   * // => false\n   *\n   * lodash.isFunction(lodash.foo);\n   * // => false\n   * lodash.isFunction(lodash.bar);\n   * // => true\n   *\n   * // Create a suped-up `defer` in Node.js.\n   * var defer = _.runInContext({ 'setTimeout': setImmediate }).defer;\n   */\n  var runInContext = (function runInContext(context) {\n    context = context == null ? root : _.defaults(root.Object(), context, _.pick(root, contextProps));\n\n    /** Built-in constructor references. */\n    var Array = context.Array,\n        Date = context.Date,\n        Error = context.Error,\n        Function = context.Function,\n        Math = context.Math,\n        Object = context.Object,\n        RegExp = context.RegExp,\n        String = context.String,\n        TypeError = context.TypeError;\n\n    /** Used for built-in method references. */\n    var arrayProto = Array.prototype,\n        funcProto = Function.prototype,\n        objectProto = Object.prototype;\n\n    /** Used to detect overreaching core-js shims. */\n    var coreJsData = context['__core-js_shared__'];\n\n    /** Used to resolve the decompiled source of functions. */\n    var funcToString = funcProto.toString;\n\n    /** Used to check objects for own properties. */\n    var hasOwnProperty = objectProto.hasOwnProperty;\n\n    /** Used to generate unique IDs. */\n    var idCounter = 0;\n\n    /** Used to detect methods masquerading as native. */\n    var maskSrcKey = (function() {\n      var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n      return uid ? ('Symbol(src)_1.' + uid) : '';\n    }());\n\n    /**\n     * Used to resolve the\n     * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n     * of values.\n     */\n    var nativeObjectToString = objectProto.toString;\n\n    /** Used to infer the `Object` constructor. */\n    var objectCtorString = funcToString.call(Object);\n\n    /** Used to restore the original `_` reference in `_.noConflict`. */\n    var oldDash = root._;\n\n    /** Used to detect if a method is native. */\n    var reIsNative = RegExp('^' +\n      funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n      .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n    );\n\n    /** Built-in value references. */\n    var Buffer = moduleExports ? context.Buffer : undefined,\n        Symbol = context.Symbol,\n        Uint8Array = context.Uint8Array,\n        allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined,\n        getPrototype = overArg(Object.getPrototypeOf, Object),\n        objectCreate = Object.create,\n        propertyIsEnumerable = objectProto.propertyIsEnumerable,\n        splice = arrayProto.splice,\n        spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined,\n        symIterator = Symbol ? Symbol.iterator : undefined,\n        symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n    var defineProperty = (function() {\n      try {\n        var func = getNative(Object, 'defineProperty');\n        func({}, '', {});\n        return func;\n      } catch (e) {}\n    }());\n\n    /** Mocked built-ins. */\n    var ctxClearTimeout = context.clearTimeout !== root.clearTimeout && context.clearTimeout,\n        ctxNow = Date && Date.now !== root.Date.now && Date.now,\n        ctxSetTimeout = context.setTimeout !== root.setTimeout && context.setTimeout;\n\n    /* Built-in method references for those with the same name as other `lodash` methods. */\n    var nativeCeil = Math.ceil,\n        nativeFloor = Math.floor,\n        nativeGetSymbols = Object.getOwnPropertySymbols,\n        nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,\n        nativeIsFinite = context.isFinite,\n        nativeJoin = arrayProto.join,\n        nativeKeys = overArg(Object.keys, Object),\n        nativeMax = Math.max,\n        nativeMin = Math.min,\n        nativeNow = Date.now,\n        nativeParseInt = context.parseInt,\n        nativeRandom = Math.random,\n        nativeReverse = arrayProto.reverse;\n\n    /* Built-in method references that are verified to be native. */\n    var DataView = getNative(context, 'DataView'),\n        Map = getNative(context, 'Map'),\n        Promise = getNative(context, 'Promise'),\n        Set = getNative(context, 'Set'),\n        WeakMap = getNative(context, 'WeakMap'),\n        nativeCreate = getNative(Object, 'create');\n\n    /** Used to store function metadata. */\n    var metaMap = WeakMap && new WeakMap;\n\n    /** Used to lookup unminified function names. */\n    var realNames = {};\n\n    /** Used to detect maps, sets, and weakmaps. */\n    var dataViewCtorString = toSource(DataView),\n        mapCtorString = toSource(Map),\n        promiseCtorString = toSource(Promise),\n        setCtorString = toSource(Set),\n        weakMapCtorString = toSource(WeakMap);\n\n    /** Used to convert symbols to primitives and strings. */\n    var symbolProto = Symbol ? Symbol.prototype : undefined,\n        symbolValueOf = symbolProto ? symbolProto.valueOf : undefined,\n        symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     * Creates a `lodash` object which wraps `value` to enable implicit method\n     * chain sequences. Methods that operate on and return arrays, collections,\n     * and functions can be chained together. Methods that retrieve a single value\n     * or may return a primitive value will automatically end the chain sequence\n     * and return the unwrapped value. Otherwise, the value must be unwrapped\n     * with `_#value`.\n     *\n     * Explicit chain sequences, which must be unwrapped with `_#value`, may be\n     * enabled using `_.chain`.\n     *\n     * The execution of chained methods is lazy, that is, it's deferred until\n     * `_#value` is implicitly or explicitly called.\n     *\n     * Lazy evaluation allows several methods to support shortcut fusion.\n     * Shortcut fusion is an optimization to merge iteratee calls; this avoids\n     * the creation of intermediate arrays and can greatly reduce the number of\n     * iteratee executions. Sections of a chain sequence qualify for shortcut\n     * fusion if the section is applied to an array and iteratees accept only\n     * one argument. The heuristic for whether a section qualifies for shortcut\n     * fusion is subject to change.\n     *\n     * Chaining is supported in custom builds as long as the `_#value` method is\n     * directly or indirectly included in the build.\n     *\n     * In addition to lodash methods, wrappers have `Array` and `String` methods.\n     *\n     * The wrapper `Array` methods are:\n     * `concat`, `join`, `pop`, `push`, `shift`, `sort`, `splice`, and `unshift`\n     *\n     * The wrapper `String` methods are:\n     * `replace` and `split`\n     *\n     * The wrapper methods that support shortcut fusion are:\n     * `at`, `compact`, `drop`, `dropRight`, `dropWhile`, `filter`, `find`,\n     * `findLast`, `head`, `initial`, `last`, `map`, `reject`, `reverse`, `slice`,\n     * `tail`, `take`, `takeRight`, `takeRightWhile`, `takeWhile`, and `toArray`\n     *\n     * The chainable wrapper methods are:\n     * `after`, `ary`, `assign`, `assignIn`, `assignInWith`, `assignWith`, `at`,\n     * `before`, `bind`, `bindAll`, `bindKey`, `castArray`, `chain`, `chunk`,\n     * `commit`, `compact`, `concat`, `conforms`, `constant`, `countBy`, `create`,\n     * `curry`, `debounce`, `defaults`, `defaultsDeep`, `defer`, `delay`,\n     * `difference`, `differenceBy`, `differenceWith`, `drop`, `dropRight`,\n     * `dropRightWhile`, `dropWhile`, `extend`, `extendWith`, `fill`, `filter`,\n     * `flatMap`, `flatMapDeep`, `flatMapDepth`, `flatten`, `flattenDeep`,\n     * `flattenDepth`, `flip`, `flow`, `flowRight`, `fromPairs`, `functions`,\n     * `functionsIn`, `groupBy`, `initial`, `intersection`, `intersectionBy`,\n     * `intersectionWith`, `invert`, `invertBy`, `invokeMap`, `iteratee`, `keyBy`,\n     * `keys`, `keysIn`, `map`, `mapKeys`, `mapValues`, `matches`, `matchesProperty`,\n     * `memoize`, `merge`, `mergeWith`, `method`, `methodOf`, `mixin`, `negate`,\n     * `nthArg`, `omit`, `omitBy`, `once`, `orderBy`, `over`, `overArgs`,\n     * `overEvery`, `overSome`, `partial`, `partialRight`, `partition`, `pick`,\n     * `pickBy`, `plant`, `property`, `propertyOf`, `pull`, `pullAll`, `pullAllBy`,\n     * `pullAllWith`, `pullAt`, `push`, `range`, `rangeRight`, `rearg`, `reject`,\n     * `remove`, `rest`, `reverse`, `sampleSize`, `set`, `setWith`, `shuffle`,\n     * `slice`, `sort`, `sortBy`, `splice`, `spread`, `tail`, `take`, `takeRight`,\n     * `takeRightWhile`, `takeWhile`, `tap`, `throttle`, `thru`, `toArray`,\n     * `toPairs`, `toPairsIn`, `toPath`, `toPlainObject`, `transform`, `unary`,\n     * `union`, `unionBy`, `unionWith`, `uniq`, `uniqBy`, `uniqWith`, `unset`,\n     * `unshift`, `unzip`, `unzipWith`, `update`, `updateWith`, `values`,\n     * `valuesIn`, `without`, `wrap`, `xor`, `xorBy`, `xorWith`, `zip`,\n     * `zipObject`, `zipObjectDeep`, and `zipWith`\n     *\n     * The wrapper methods that are **not** chainable by default are:\n     * `add`, `attempt`, `camelCase`, `capitalize`, `ceil`, `clamp`, `clone`,\n     * `cloneDeep`, `cloneDeepWith`, `cloneWith`, `conformsTo`, `deburr`,\n     * `defaultTo`, `divide`, `each`, `eachRight`, `endsWith`, `eq`, `escape`,\n     * `escapeRegExp`, `every`, `find`, `findIndex`, `findKey`, `findLast`,\n     * `findLastIndex`, `findLastKey`, `first`, `floor`, `forEach`, `forEachRight`,\n     * `forIn`, `forInRight`, `forOwn`, `forOwnRight`, `get`, `gt`, `gte`, `has`,\n     * `hasIn`, `head`, `identity`, `includes`, `indexOf`, `inRange`, `invoke`,\n     * `isArguments`, `isArray`, `isArrayBuffer`, `isArrayLike`, `isArrayLikeObject`,\n     * `isBoolean`, `isBuffer`, `isDate`, `isElement`, `isEmpty`, `isEqual`,\n     * `isEqualWith`, `isError`, `isFinite`, `isFunction`, `isInteger`, `isLength`,\n     * `isMap`, `isMatch`, `isMatchWith`, `isNaN`, `isNative`, `isNil`, `isNull`,\n     * `isNumber`, `isObject`, `isObjectLike`, `isPlainObject`, `isRegExp`,\n     * `isSafeInteger`, `isSet`, `isString`, `isUndefined`, `isTypedArray`,\n     * `isWeakMap`, `isWeakSet`, `join`, `kebabCase`, `last`, `lastIndexOf`,\n     * `lowerCase`, `lowerFirst`, `lt`, `lte`, `max`, `maxBy`, `mean`, `meanBy`,\n     * `min`, `minBy`, `multiply`, `noConflict`, `noop`, `now`, `nth`, `pad`,\n     * `padEnd`, `padStart`, `parseInt`, `pop`, `random`, `reduce`, `reduceRight`,\n     * `repeat`, `result`, `round`, `runInContext`, `sample`, `shift`, `size`,\n     * `snakeCase`, `some`, `sortedIndex`, `sortedIndexBy`, `sortedLastIndex`,\n     * `sortedLastIndexBy`, `startCase`, `startsWith`, `stubArray`, `stubFalse`,\n     * `stubObject`, `stubString`, `stubTrue`, `subtract`, `sum`, `sumBy`,\n     * `template`, `times`, `toFinite`, `toInteger`, `toJSON`, `toLength`,\n     * `toLower`, `toNumber`, `toSafeInteger`, `toString`, `toUpper`, `trim`,\n     * `trimEnd`, `trimStart`, `truncate`, `unescape`, `uniqueId`, `upperCase`,\n     * `upperFirst`, `value`, and `words`\n     *\n     * @name _\n     * @constructor\n     * @category Seq\n     * @param {*} value The value to wrap in a `lodash` instance.\n     * @returns {Object} Returns the new `lodash` wrapper instance.\n     * @example\n     *\n     * function square(n) {\n     *   return n * n;\n     * }\n     *\n     * var wrapped = _([1, 2, 3]);\n     *\n     * // Returns an unwrapped value.\n     * wrapped.reduce(_.add);\n     * // => 6\n     *\n     * // Returns a wrapped value.\n     * var squares = wrapped.map(square);\n     *\n     * _.isArray(squares);\n     * // => false\n     *\n     * _.isArray(squares.value());\n     * // => true\n     */\n    function lodash(value) {\n      if (isObjectLike(value) && !isArray(value) && !(value instanceof LazyWrapper)) {\n        if (value instanceof LodashWrapper) {\n          return value;\n        }\n        if (hasOwnProperty.call(value, '__wrapped__')) {\n          return wrapperClone(value);\n        }\n      }\n      return new LodashWrapper(value);\n    }\n\n    /**\n     * The base implementation of `_.create` without support for assigning\n     * properties to the created object.\n     *\n     * @private\n     * @param {Object} proto The object to inherit from.\n     * @returns {Object} Returns the new object.\n     */\n    var baseCreate = (function() {\n      function object() {}\n      return function(proto) {\n        if (!isObject(proto)) {\n          return {};\n        }\n        if (objectCreate) {\n          return objectCreate(proto);\n        }\n        object.prototype = proto;\n        var result = new object;\n        object.prototype = undefined;\n        return result;\n      };\n    }());\n\n    /**\n     * The function whose prototype chain sequence wrappers inherit from.\n     *\n     * @private\n     */\n    function baseLodash() {\n      // No operation performed.\n    }\n\n    /**\n     * The base constructor for creating `lodash` wrapper objects.\n     *\n     * @private\n     * @param {*} value The value to wrap.\n     * @param {boolean} [chainAll] Enable explicit method chain sequences.\n     */\n    function LodashWrapper(value, chainAll) {\n      this.__wrapped__ = value;\n      this.__actions__ = [];\n      this.__chain__ = !!chainAll;\n      this.__index__ = 0;\n      this.__values__ = undefined;\n    }\n\n    /**\n     * By default, the template delimiters used by lodash are like those in\n     * embedded Ruby (ERB) as well as ES2015 template strings. Change the\n     * following template settings to use alternative delimiters.\n     *\n     * **Security:** See\n     * [threat model](https://github.com/lodash/lodash/blob/main/threat-model.md)\n     * — `_.template` is insecure and will be removed in v5.\n     *\n     * @static\n     * @memberOf _\n     * @type {Object}\n     */\n    lodash.templateSettings = {\n\n      /**\n       * Used to detect `data` property values to be HTML-escaped.\n       *\n       * @memberOf _.templateSettings\n       * @type {RegExp}\n       */\n      'escape': reEscape,\n\n      /**\n       * Used to detect code to be evaluated.\n       *\n       * @memberOf _.templateSettings\n       * @type {RegExp}\n       */\n      'evaluate': reEvaluate,\n\n      /**\n       * Used to detect `data` property values to inject.\n       *\n       * @memberOf _.templateSettings\n       * @type {RegExp}\n       */\n      'interpolate': reInterpolate,\n\n      /**\n       * Used to reference the data object in the template text.\n       *\n       * @memberOf _.templateSettings\n       * @type {string}\n       */\n      'variable': '',\n\n      /**\n       * Used to import variables into the compiled template.\n       *\n       * @memberOf _.templateSettings\n       * @type {Object}\n       */\n      'imports': {\n\n        /**\n         * A reference to the `lodash` function.\n         *\n         * @memberOf _.templateSettings.imports\n         * @type {Function}\n         */\n        '_': lodash\n      }\n    };\n\n    // Ensure wrappers are instances of `baseLodash`.\n    lodash.prototype = baseLodash.prototype;\n    lodash.prototype.constructor = lodash;\n\n    LodashWrapper.prototype = baseCreate(baseLodash.prototype);\n    LodashWrapper.prototype.constructor = LodashWrapper;\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     * Creates a lazy wrapper object which wraps `value` to enable lazy evaluation.\n     *\n     * @private\n     * @constructor\n     * @param {*} value The value to wrap.\n     */\n    function LazyWrapper(value) {\n      this.__wrapped__ = value;\n      this.__actions__ = [];\n      this.__dir__ = 1;\n      this.__filtered__ = false;\n      this.__iteratees__ = [];\n      this.__takeCount__ = MAX_ARRAY_LENGTH;\n      this.__views__ = [];\n    }\n\n    /**\n     * Creates a clone of the lazy wrapper object.\n     *\n     * @private\n     * @name clone\n     * @memberOf LazyWrapper\n     * @returns {Object} Returns the cloned `LazyWrapper` object.\n     */\n    function lazyClone() {\n      var result = new LazyWrapper(this.__wrapped__);\n      result.__actions__ = copyArray(this.__actions__);\n      result.__dir__ = this.__dir__;\n      result.__filtered__ = this.__filtered__;\n      result.__iteratees__ = copyArray(this.__iteratees__);\n      result.__takeCount__ = this.__takeCount__;\n      result.__views__ = copyArray(this.__views__);\n      return result;\n    }\n\n    /**\n     * Reverses the direction of lazy iteration.\n     *\n     * @private\n     * @name reverse\n     * @memberOf LazyWrapper\n     * @returns {Object} Returns the new reversed `LazyWrapper` object.\n     */\n    function lazyReverse() {\n      if (this.__filtered__) {\n        var result = new LazyWrapper(this);\n        result.__dir__ = -1;\n        result.__filtered__ = true;\n      } else {\n        result = this.clone();\n        result.__dir__ *= -1;\n      }\n      return result;\n    }\n\n    /**\n     * Extracts the unwrapped value from its lazy wrapper.\n     *\n     * @private\n     * @name value\n     * @memberOf LazyWrapper\n     * @returns {*} Returns the unwrapped value.\n     */\n    function lazyValue() {\n      var array = this.__wrapped__.value(),\n          dir = this.__dir__,\n          isArr = isArray(array),\n          isRight = dir < 0,\n          arrLength = isArr ? array.length : 0,\n          view = getView(0, arrLength, this.__views__),\n          start = view.start,\n          end = view.end,\n          length = end - start,\n          index = isRight ? end : (start - 1),\n          iteratees = this.__iteratees__,\n          iterLength = iteratees.length,\n          resIndex = 0,\n          takeCount = nativeMin(length, this.__takeCount__);\n\n      if (!isArr || (!isRight && arrLength == length && takeCount == length)) {\n        return baseWrapperValue(array, this.__actions__);\n      }\n      var result = [];\n\n      outer:\n      while (length-- && resIndex < takeCount) {\n        index += dir;\n\n        var iterIndex = -1,\n            value = array[index];\n\n        while (++iterIndex < iterLength) {\n          var data = iteratees[iterIndex],\n              iteratee = data.iteratee,\n              type = data.type,\n              computed = iteratee(value);\n\n          if (type == LAZY_MAP_FLAG) {\n            value = computed;\n          } else if (!computed) {\n            if (type == LAZY_FILTER_FLAG) {\n              continue outer;\n            } else {\n              break outer;\n            }\n          }\n        }\n        result[resIndex++] = value;\n      }\n      return result;\n    }\n\n    // Ensure `LazyWrapper` is an instance of `baseLodash`.\n    LazyWrapper.prototype = baseCreate(baseLodash.prototype);\n    LazyWrapper.prototype.constructor = LazyWrapper;\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     * Creates a hash object.\n     *\n     * @private\n     * @constructor\n     * @param {Array} [entries] The key-value pairs to cache.\n     */\n    function Hash(entries) {\n      var index = -1,\n          length = entries == null ? 0 : entries.length;\n\n      this.clear();\n      while (++index < length) {\n        var entry = entries[index];\n        this.set(entry[0], entry[1]);\n      }\n    }\n\n    /**\n     * Removes all key-value entries from the hash.\n     *\n     * @private\n     * @name clear\n     * @memberOf Hash\n     */\n    function hashClear() {\n      this.__data__ = nativeCreate ? nativeCreate(null) : {};\n      this.size = 0;\n    }\n\n    /**\n     * Removes `key` and its value from the hash.\n     *\n     * @private\n     * @name delete\n     * @memberOf Hash\n     * @param {Object} hash The hash to modify.\n     * @param {string} key The key of the value to remove.\n     * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n     */\n    function hashDelete(key) {\n      var result = this.has(key) && delete this.__data__[key];\n      this.size -= result ? 1 : 0;\n      return result;\n    }\n\n    /**\n     * Gets the hash value for `key`.\n     *\n     * @private\n     * @name get\n     * @memberOf Hash\n     * @param {string} key The key of the value to get.\n     * @returns {*} Returns the entry value.\n     */\n    function hashGet(key) {\n      var data = this.__data__;\n      if (nativeCreate) {\n        var result = data[key];\n        return result === HASH_UNDEFINED ? undefined : result;\n      }\n      return hasOwnProperty.call(data, key) ? data[key] : undefined;\n    }\n\n    /**\n     * Checks if a hash value for `key` exists.\n     *\n     * @private\n     * @name has\n     * @memberOf Hash\n     * @param {string} key The key of the entry to check.\n     * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n     */\n    function hashHas(key) {\n      var data = this.__data__;\n      return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n    }\n\n    /**\n     * Sets the hash `key` to `value`.\n     *\n     * @private\n     * @name set\n     * @memberOf Hash\n     * @param {string} key The key of the value to set.\n     * @param {*} value The value to set.\n     * @returns {Object} Returns the hash instance.\n     */\n    function hashSet(key, value) {\n      var data = this.__data__;\n      this.size += this.has(key) ? 0 : 1;\n      data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n      return this;\n    }\n\n    // Add methods to `Hash`.\n    Hash.prototype.clear = hashClear;\n    Hash.prototype['delete'] = hashDelete;\n    Hash.prototype.get = hashGet;\n    Hash.prototype.has = hashHas;\n    Hash.prototype.set = hashSet;\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     * Creates an list cache object.\n     *\n     * @private\n     * @constructor\n     * @param {Array} [entries] The key-value pairs to cache.\n     */\n    function ListCache(entries) {\n      var index = -1,\n          length = entries == null ? 0 : entries.length;\n\n      this.clear();\n      while (++index < length) {\n        var entry = entries[index];\n        this.set(entry[0], entry[1]);\n      }\n    }\n\n    /**\n     * Removes all key-value entries from the list cache.\n     *\n     * @private\n     * @name clear\n     * @memberOf ListCache\n     */\n    function listCacheClear() {\n      this.__data__ = [];\n      this.size = 0;\n    }\n\n    /**\n     * Removes `key` and its value from the list cache.\n     *\n     * @private\n     * @name delete\n     * @memberOf ListCache\n     * @param {string} key The key of the value to remove.\n     * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n     */\n    function listCacheDelete(key) {\n      var data = this.__data__,\n          index = assocIndexOf(data, key);\n\n      if (index < 0) {\n        return false;\n      }\n      var lastIndex = data.length - 1;\n      if (index == lastIndex) {\n        data.pop();\n      } else {\n        splice.call(data, index, 1);\n      }\n      --this.size;\n      return true;\n    }\n\n    /**\n     * Gets the list cache value for `key`.\n     *\n     * @private\n     * @name get\n     * @memberOf ListCache\n     * @param {string} key The key of the value to get.\n     * @returns {*} Returns the entry value.\n     */\n    function listCacheGet(key) {\n      var data = this.__data__,\n          index = assocIndexOf(data, key);\n\n      return index < 0 ? undefined : data[index][1];\n    }\n\n    /**\n     * Checks if a list cache value for `key` exists.\n     *\n     * @private\n     * @name has\n     * @memberOf ListCache\n     * @param {string} key The key of the entry to check.\n     * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n     */\n    function listCacheHas(key) {\n      return assocIndexOf(this.__data__, key) > -1;\n    }\n\n    /**\n     * Sets the list cache `key` to `value`.\n     *\n     * @private\n     * @name set\n     * @memberOf ListCache\n     * @param {string} key The key of the value to set.\n     * @param {*} value The value to set.\n     * @returns {Object} Returns the list cache instance.\n     */\n    function listCacheSet(key, value) {\n      var data = this.__data__,\n          index = assocIndexOf(data, key);\n\n      if (index < 0) {\n        ++this.size;\n        data.push([key, value]);\n      } else {\n        data[index][1] = value;\n      }\n      return this;\n    }\n\n    // Add methods to `ListCache`.\n    ListCache.prototype.clear = listCacheClear;\n    ListCache.prototype['delete'] = listCacheDelete;\n    ListCache.prototype.get = listCacheGet;\n    ListCache.prototype.has = listCacheHas;\n    ListCache.prototype.set = listCacheSet;\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     * Creates a map cache object to store key-value pairs.\n     *\n     * @private\n     * @constructor\n     * @param {Array} [entries] The key-value pairs to cache.\n     */\n    function MapCache(entries) {\n      var index = -1,\n          length = entries == null ? 0 : entries.length;\n\n      this.clear();\n      while (++index < length) {\n        var entry = entries[index];\n        this.set(entry[0], entry[1]);\n      }\n    }\n\n    /**\n     * Removes all key-value entries from the map.\n     *\n     * @private\n     * @name clear\n     * @memberOf MapCache\n     */\n    function mapCacheClear() {\n      this.size = 0;\n      this.__data__ = {\n        'hash': new Hash,\n        'map': new (Map || ListCache),\n        'string': new Hash\n      };\n    }\n\n    /**\n     * Removes `key` and its value from the map.\n     *\n     * @private\n     * @name delete\n     * @memberOf MapCache\n     * @param {string} key The key of the value to remove.\n     * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n     */\n    function mapCacheDelete(key) {\n      var result = getMapData(this, key)['delete'](key);\n      this.size -= result ? 1 : 0;\n      return result;\n    }\n\n    /**\n     * Gets the map value for `key`.\n     *\n     * @private\n     * @name get\n     * @memberOf MapCache\n     * @param {string} key The key of the value to get.\n     * @returns {*} Returns the entry value.\n     */\n    function mapCacheGet(key) {\n      return getMapData(this, key).get(key);\n    }\n\n    /**\n     * Checks if a map value for `key` exists.\n     *\n     * @private\n     * @name has\n     * @memberOf MapCache\n     * @param {string} key The key of the entry to check.\n     * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n     */\n    function mapCacheHas(key) {\n      return getMapData(this, key).has(key);\n    }\n\n    /**\n     * Sets the map `key` to `value`.\n     *\n     * @private\n     * @name set\n     * @memberOf MapCache\n     * @param {string} key The key of the value to set.\n     * @param {*} value The value to set.\n     * @returns {Object} Returns the map cache instance.\n     */\n    function mapCacheSet(key, value) {\n      var data = getMapData(this, key),\n          size = data.size;\n\n      data.set(key, value);\n      this.size += data.size == size ? 0 : 1;\n      return this;\n    }\n\n    // Add methods to `MapCache`.\n    MapCache.prototype.clear = mapCacheClear;\n    MapCache.prototype['delete'] = mapCacheDelete;\n    MapCache.prototype.get = mapCacheGet;\n    MapCache.prototype.has = mapCacheHas;\n    MapCache.prototype.set = mapCacheSet;\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     *\n     * Creates an array cache object to store unique values.\n     *\n     * @private\n     * @constructor\n     * @param {Array} [values] The values to cache.\n     */\n    function SetCache(values) {\n      var index = -1,\n          length = values == null ? 0 : values.length;\n\n      this.__data__ = new MapCache;\n      while (++index < length) {\n        this.add(values[index]);\n      }\n    }\n\n    /**\n     * Adds `value` to the array cache.\n     *\n     * @private\n     * @name add\n     * @memberOf SetCache\n     * @alias push\n     * @param {*} value The value to cache.\n     * @returns {Object} Returns the cache instance.\n     */\n    function setCacheAdd(value) {\n      this.__data__.set(value, HASH_UNDEFINED);\n      return this;\n    }\n\n    /**\n     * Checks if `value` is in the array cache.\n     *\n     * @private\n     * @name has\n     * @memberOf SetCache\n     * @param {*} value The value to search for.\n     * @returns {boolean} Returns `true` if `value` is found, else `false`.\n     */\n    function setCacheHas(value) {\n      return this.__data__.has(value);\n    }\n\n    // Add methods to `SetCache`.\n    SetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\n    SetCache.prototype.has = setCacheHas;\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     * Creates a stack cache object to store key-value pairs.\n     *\n     * @private\n     * @constructor\n     * @param {Array} [entries] The key-value pairs to cache.\n     */\n    function Stack(entries) {\n      var data = this.__data__ = new ListCache(entries);\n      this.size = data.size;\n    }\n\n    /**\n     * Removes all key-value entries from the stack.\n     *\n     * @private\n     * @name clear\n     * @memberOf Stack\n     */\n    function stackClear() {\n      this.__data__ = new ListCache;\n      this.size = 0;\n    }\n\n    /**\n     * Removes `key` and its value from the stack.\n     *\n     * @private\n     * @name delete\n     * @memberOf Stack\n     * @param {string} key The key of the value to remove.\n     * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n     */\n    function stackDelete(key) {\n      var data = this.__data__,\n          result = data['delete'](key);\n\n      this.size = data.size;\n      return result;\n    }\n\n    /**\n     * Gets the stack value for `key`.\n     *\n     * @private\n     * @name get\n     * @memberOf Stack\n     * @param {string} key The key of the value to get.\n     * @returns {*} Returns the entry value.\n     */\n    function stackGet(key) {\n      return this.__data__.get(key);\n    }\n\n    /**\n     * Checks if a stack value for `key` exists.\n     *\n     * @private\n     * @name has\n     * @memberOf Stack\n     * @param {string} key The key of the entry to check.\n     * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n     */\n    function stackHas(key) {\n      return this.__data__.has(key);\n    }\n\n    /**\n     * Sets the stack `key` to `value`.\n     *\n     * @private\n     * @name set\n     * @memberOf Stack\n     * @param {string} key The key of the value to set.\n     * @param {*} value The value to set.\n     * @returns {Object} Returns the stack cache instance.\n     */\n    function stackSet(key, value) {\n      var data = this.__data__;\n      if (data instanceof ListCache) {\n        var pairs = data.__data__;\n        if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n          pairs.push([key, value]);\n          this.size = ++data.size;\n          return this;\n        }\n        data = this.__data__ = new MapCache(pairs);\n      }\n      data.set(key, value);\n      this.size = data.size;\n      return this;\n    }\n\n    // Add methods to `Stack`.\n    Stack.prototype.clear = stackClear;\n    Stack.prototype['delete'] = stackDelete;\n    Stack.prototype.get = stackGet;\n    Stack.prototype.has = stackHas;\n    Stack.prototype.set = stackSet;\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     * Creates an array of the enumerable property names of the array-like `value`.\n     *\n     * @private\n     * @param {*} value The value to query.\n     * @param {boolean} inherited Specify returning inherited property names.\n     * @returns {Array} Returns the array of property names.\n     */\n    function arrayLikeKeys(value, inherited) {\n      var isArr = isArray(value),\n          isArg = !isArr && isArguments(value),\n          isBuff = !isArr && !isArg && isBuffer(value),\n          isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n          skipIndexes = isArr || isArg || isBuff || isType,\n          result = skipIndexes ? baseTimes(value.length, String) : [],\n          length = result.length;\n\n      for (var key in value) {\n        if ((inherited || hasOwnProperty.call(value, key)) &&\n            !(skipIndexes && (\n               // Safari 9 has enumerable `arguments.length` in strict mode.\n               key == 'length' ||\n               // Node.js 0.10 has enumerable non-index properties on buffers.\n               (isBuff && (key == 'offset' || key == 'parent')) ||\n               // PhantomJS 2 has enumerable non-index properties on typed arrays.\n               (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n               // Skip index properties.\n               isIndex(key, length)\n            ))) {\n          result.push(key);\n        }\n      }\n      return result;\n    }\n\n    /**\n     * A specialized version of `_.sample` for arrays.\n     *\n     * @private\n     * @param {Array} array The array to sample.\n     * @returns {*} Returns the random element.\n     */\n    function arraySample(array) {\n      var length = array.length;\n      return length ? array[baseRandom(0, length - 1)] : undefined;\n    }\n\n    /**\n     * A specialized version of `_.sampleSize` for arrays.\n     *\n     * @private\n     * @param {Array} array The array to sample.\n     * @param {number} n The number of elements to sample.\n     * @returns {Array} Returns the random elements.\n     */\n    function arraySampleSize(array, n) {\n      return shuffleSelf(copyArray(array), baseClamp(n, 0, array.length));\n    }\n\n    /**\n     * A specialized version of `_.shuffle` for arrays.\n     *\n     * @private\n     * @param {Array} array The array to shuffle.\n     * @returns {Array} Returns the new shuffled array.\n     */\n    function arrayShuffle(array) {\n      return shuffleSelf(copyArray(array));\n    }\n\n    /**\n     * This function is like `assignValue` except that it doesn't assign\n     * `undefined` values.\n     *\n     * @private\n     * @param {Object} object The object to modify.\n     * @param {string} key The key of the property to assign.\n     * @param {*} value The value to assign.\n     */\n    function assignMergeValue(object, key, value) {\n      if ((value !== undefined && !eq(object[key], value)) ||\n          (value === undefined && !(key in object))) {\n        baseAssignValue(object, key, value);\n      }\n    }\n\n    /**\n     * Assigns `value` to `key` of `object` if the existing value is not equivalent\n     * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n     * for equality comparisons.\n     *\n     * @private\n     * @param {Object} object The object to modify.\n     * @param {string} key The key of the property to assign.\n     * @param {*} value The value to assign.\n     */\n    function assignValue(object, key, value) {\n      var objValue = object[key];\n      if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n          (value === undefined && !(key in object))) {\n        baseAssignValue(object, key, value);\n      }\n    }\n\n    /**\n     * Gets the index at which the `key` is found in `array` of key-value pairs.\n     *\n     * @private\n     * @param {Array} array The array to inspect.\n     * @param {*} key The key to search for.\n     * @returns {number} Returns the index of the matched value, else `-1`.\n     */\n    function assocIndexOf(array, key) {\n      var length = array.length;\n      while (length--) {\n        if (eq(array[length][0], key)) {\n          return length;\n        }\n      }\n      return -1;\n    }\n\n    /**\n     * Aggregates elements of `collection` on `accumulator` with keys transformed\n     * by `iteratee` and values set by `setter`.\n     *\n     * @private\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} setter The function to set `accumulator` values.\n     * @param {Function} iteratee The iteratee to transform keys.\n     * @param {Object} accumulator The initial aggregated object.\n     * @returns {Function} Returns `accumulator`.\n     */\n    function baseAggregator(collection, setter, iteratee, accumulator) {\n      baseEach(collection, function(value, key, collection) {\n        setter(accumulator, value, iteratee(value), collection);\n      });\n      return accumulator;\n    }\n\n    /**\n     * The base implementation of `_.assign` without support for multiple sources\n     * or `customizer` functions.\n     *\n     * @private\n     * @param {Object} object The destination object.\n     * @param {Object} source The source object.\n     * @returns {Object} Returns `object`.\n     */\n    function baseAssign(object, source) {\n      return object && copyObject(source, keys(source), object);\n    }\n\n    /**\n     * The base implementation of `_.assignIn` without support for multiple sources\n     * or `customizer` functions.\n     *\n     * @private\n     * @param {Object} object The destination object.\n     * @param {Object} source The source object.\n     * @returns {Object} Returns `object`.\n     */\n    function baseAssignIn(object, source) {\n      return object && copyObject(source, keysIn(source), object);\n    }\n\n    /**\n     * The base implementation of `assignValue` and `assignMergeValue` without\n     * value checks.\n     *\n     * @private\n     * @param {Object} object The object to modify.\n     * @param {string} key The key of the property to assign.\n     * @param {*} value The value to assign.\n     */\n    function baseAssignValue(object, key, value) {\n      if (key == '__proto__' && defineProperty) {\n        defineProperty(object, key, {\n          'configurable': true,\n          'enumerable': true,\n          'value': value,\n          'writable': true\n        });\n      } else {\n        object[key] = value;\n      }\n    }\n\n    /**\n     * The base implementation of `_.at` without support for individual paths.\n     *\n     * @private\n     * @param {Object} object The object to iterate over.\n     * @param {string[]} paths The property paths to pick.\n     * @returns {Array} Returns the picked elements.\n     */\n    function baseAt(object, paths) {\n      var index = -1,\n          length = paths.length,\n          result = Array(length),\n          skip = object == null;\n\n      while (++index < length) {\n        result[index] = skip ? undefined : get(object, paths[index]);\n      }\n      return result;\n    }\n\n    /**\n     * The base implementation of `_.clamp` which doesn't coerce arguments.\n     *\n     * @private\n     * @param {number} number The number to clamp.\n     * @param {number} [lower] The lower bound.\n     * @param {number} upper The upper bound.\n     * @returns {number} Returns the clamped number.\n     */\n    function baseClamp(number, lower, upper) {\n      if (number === number) {\n        if (upper !== undefined) {\n          number = number <= upper ? number : upper;\n        }\n        if (lower !== undefined) {\n          number = number >= lower ? number : lower;\n        }\n      }\n      return number;\n    }\n\n    /**\n     * The base implementation of `_.clone` and `_.cloneDeep` which tracks\n     * traversed objects.\n     *\n     * @private\n     * @param {*} value The value to clone.\n     * @param {boolean} bitmask The bitmask flags.\n     *  1 - Deep clone\n     *  2 - Flatten inherited properties\n     *  4 - Clone symbols\n     * @param {Function} [customizer] The function to customize cloning.\n     * @param {string} [key] The key of `value`.\n     * @param {Object} [object] The parent object of `value`.\n     * @param {Object} [stack] Tracks traversed objects and their clone counterparts.\n     * @returns {*} Returns the cloned value.\n     */\n    function baseClone(value, bitmask, customizer, key, object, stack) {\n      var result,\n          isDeep = bitmask & CLONE_DEEP_FLAG,\n          isFlat = bitmask & CLONE_FLAT_FLAG,\n          isFull = bitmask & CLONE_SYMBOLS_FLAG;\n\n      if (customizer) {\n        result = object ? customizer(value, key, object, stack) : customizer(value);\n      }\n      if (result !== undefined) {\n        return result;\n      }\n      if (!isObject(value)) {\n        return value;\n      }\n      var isArr = isArray(value);\n      if (isArr) {\n        result = initCloneArray(value);\n        if (!isDeep) {\n          return copyArray(value, result);\n        }\n      } else {\n        var tag = getTag(value),\n            isFunc = tag == funcTag || tag == genTag;\n\n        if (isBuffer(value)) {\n          return cloneBuffer(value, isDeep);\n        }\n        if (tag == objectTag || tag == argsTag || (isFunc && !object)) {\n          result = (isFlat || isFunc) ? {} : initCloneObject(value);\n          if (!isDeep) {\n            return isFlat\n              ? copySymbolsIn(value, baseAssignIn(result, value))\n              : copySymbols(value, baseAssign(result, value));\n          }\n        } else {\n          if (!cloneableTags[tag]) {\n            return object ? value : {};\n          }\n          result = initCloneByTag(value, tag, isDeep);\n        }\n      }\n      // Check for circular references and return its corresponding clone.\n      stack || (stack = new Stack);\n      var stacked = stack.get(value);\n      if (stacked) {\n        return stacked;\n      }\n      stack.set(value, result);\n\n      if (isSet(value)) {\n        value.forEach(function(subValue) {\n          result.add(baseClone(subValue, bitmask, customizer, subValue, value, stack));\n        });\n      } else if (isMap(value)) {\n        value.forEach(function(subValue, key) {\n          result.set(key, baseClone(subValue, bitmask, customizer, key, value, stack));\n        });\n      }\n\n      var keysFunc = isFull\n        ? (isFlat ? getAllKeysIn : getAllKeys)\n        : (isFlat ? keysIn : keys);\n\n      var props = isArr ? undefined : keysFunc(value);\n      arrayEach(props || value, function(subValue, key) {\n        if (props) {\n          key = subValue;\n          subValue = value[key];\n        }\n        // Recursively populate clone (susceptible to call stack limits).\n        assignValue(result, key, baseClone(subValue, bitmask, customizer, key, value, stack));\n      });\n      return result;\n    }\n\n    /**\n     * The base implementation of `_.conforms` which doesn't clone `source`.\n     *\n     * @private\n     * @param {Object} source The object of property predicates to conform to.\n     * @returns {Function} Returns the new spec function.\n     */\n    function baseConforms(source) {\n      var props = keys(source);\n      return function(object) {\n        return baseConformsTo(object, source, props);\n      };\n    }\n\n    /**\n     * The base implementation of `_.conformsTo` which accepts `props` to check.\n     *\n     * @private\n     * @param {Object} object The object to inspect.\n     * @param {Object} source The object of property predicates to conform to.\n     * @returns {boolean} Returns `true` if `object` conforms, else `false`.\n     */\n    function baseConformsTo(object, source, props) {\n      var length = props.length;\n      if (object == null) {\n        return !length;\n      }\n      object = Object(object);\n      while (length--) {\n        var key = props[length],\n            predicate = source[key],\n            value = object[key];\n\n        if ((value === undefined && !(key in object)) || !predicate(value)) {\n          return false;\n        }\n      }\n      return true;\n    }\n\n    /**\n     * The base implementation of `_.delay` and `_.defer` which accepts `args`\n     * to provide to `func`.\n     *\n     * @private\n     * @param {Function} func The function to delay.\n     * @param {number} wait The number of milliseconds to delay invocation.\n     * @param {Array} args The arguments to provide to `func`.\n     * @returns {number|Object} Returns the timer id or timeout object.\n     */\n    function baseDelay(func, wait, args) {\n      if (typeof func != 'function') {\n        throw new TypeError(FUNC_ERROR_TEXT);\n      }\n      return setTimeout(function() { func.apply(undefined, args); }, wait);\n    }\n\n    /**\n     * The base implementation of methods like `_.difference` without support\n     * for excluding multiple arrays or iteratee shorthands.\n     *\n     * @private\n     * @param {Array} array The array to inspect.\n     * @param {Array} values The values to exclude.\n     * @param {Function} [iteratee] The iteratee invoked per element.\n     * @param {Function} [comparator] The comparator invoked per element.\n     * @returns {Array} Returns the new array of filtered values.\n     */\n    function baseDifference(array, values, iteratee, comparator) {\n      var index = -1,\n          includes = arrayIncludes,\n          isCommon = true,\n          length = array.length,\n          result = [],\n          valuesLength = values.length;\n\n      if (!length) {\n        return result;\n      }\n      if (iteratee) {\n        values = arrayMap(values, baseUnary(iteratee));\n      }\n      if (comparator) {\n        includes = arrayIncludesWith;\n        isCommon = false;\n      }\n      else if (values.length >= LARGE_ARRAY_SIZE) {\n        includes = cacheHas;\n        isCommon = false;\n        values = new SetCache(values);\n      }\n      outer:\n      while (++index < length) {\n        var value = array[index],\n            computed = iteratee == null ? value : iteratee(value);\n\n        value = (comparator || value !== 0) ? value : 0;\n        if (isCommon && computed === computed) {\n          var valuesIndex = valuesLength;\n          while (valuesIndex--) {\n            if (values[valuesIndex] === computed) {\n              continue outer;\n            }\n          }\n          result.push(value);\n        }\n        else if (!includes(values, computed, comparator)) {\n          result.push(value);\n        }\n      }\n      return result;\n    }\n\n    /**\n     * The base implementation of `_.forEach` without support for iteratee shorthands.\n     *\n     * @private\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} iteratee The function invoked per iteration.\n     * @returns {Array|Object} Returns `collection`.\n     */\n    var baseEach = createBaseEach(baseForOwn);\n\n    /**\n     * The base implementation of `_.forEachRight` without support for iteratee shorthands.\n     *\n     * @private\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} iteratee The function invoked per iteration.\n     * @returns {Array|Object} Returns `collection`.\n     */\n    var baseEachRight = createBaseEach(baseForOwnRight, true);\n\n    /**\n     * The base implementation of `_.every` without support for iteratee shorthands.\n     *\n     * @private\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} predicate The function invoked per iteration.\n     * @returns {boolean} Returns `true` if all elements pass the predicate check,\n     *  else `false`\n     */\n    function baseEvery(collection, predicate) {\n      var result = true;\n      baseEach(collection, function(value, index, collection) {\n        result = !!predicate(value, index, collection);\n        return result;\n      });\n      return result;\n    }\n\n    /**\n     * The base implementation of methods like `_.max` and `_.min` which accepts a\n     * `comparator` to determine the extremum value.\n     *\n     * @private\n     * @param {Array} array The array to iterate over.\n     * @param {Function} iteratee The iteratee invoked per iteration.\n     * @param {Function} comparator The comparator used to compare values.\n     * @returns {*} Returns the extremum value.\n     */\n    function baseExtremum(array, iteratee, comparator) {\n      var index = -1,\n          length = array.length;\n\n      while (++index < length) {\n        var value = array[index],\n            current = iteratee(value);\n\n        if (current != null && (computed === undefined\n              ? (current === current && !isSymbol(current))\n              : comparator(current, computed)\n            )) {\n          var computed = current,\n              result = value;\n        }\n      }\n      return result;\n    }\n\n    /**\n     * The base implementation of `_.fill` without an iteratee call guard.\n     *\n     * @private\n     * @param {Array} array The array to fill.\n     * @param {*} value The value to fill `array` with.\n     * @param {number} [start=0] The start position.\n     * @param {number} [end=array.length] The end position.\n     * @returns {Array} Returns `array`.\n     */\n    function baseFill(array, value, start, end) {\n      var length = array.length;\n\n      start = toInteger(start);\n      if (start < 0) {\n        start = -start > length ? 0 : (length + start);\n      }\n      end = (end === undefined || end > length) ? length : toInteger(end);\n      if (end < 0) {\n        end += length;\n      }\n      end = start > end ? 0 : toLength(end);\n      while (start < end) {\n        array[start++] = value;\n      }\n      return array;\n    }\n\n    /**\n     * The base implementation of `_.filter` without support for iteratee shorthands.\n     *\n     * @private\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} predicate The function invoked per iteration.\n     * @returns {Array} Returns the new filtered array.\n     */\n    function baseFilter(collection, predicate) {\n      var result = [];\n      baseEach(collection, function(value, index, collection) {\n        if (predicate(value, index, collection)) {\n          result.push(value);\n        }\n      });\n      return result;\n    }\n\n    /**\n     * The base implementation of `_.flatten` with support for restricting flattening.\n     *\n     * @private\n     * @param {Array} array The array to flatten.\n     * @param {number} depth The maximum recursion depth.\n     * @param {boolean} [predicate=isFlattenable] The function invoked per iteration.\n     * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks.\n     * @param {Array} [result=[]] The initial result value.\n     * @returns {Array} Returns the new flattened array.\n     */\n    function baseFlatten(array, depth, predicate, isStrict, result) {\n      var index = -1,\n          length = array.length;\n\n      predicate || (predicate = isFlattenable);\n      result || (result = []);\n\n      while (++index < length) {\n        var value = array[index];\n        if (depth > 0 && predicate(value)) {\n          if (depth > 1) {\n            // Recursively flatten arrays (susceptible to call stack limits).\n            baseFlatten(value, depth - 1, predicate, isStrict, result);\n          } else {\n            arrayPush(result, value);\n          }\n        } else if (!isStrict) {\n          result[result.length] = value;\n        }\n      }\n      return result;\n    }\n\n    /**\n     * The base implementation of `baseForOwn` which iterates over `object`\n     * properties returned by `keysFunc` and invokes `iteratee` for each property.\n     * Iteratee functions may exit iteration early by explicitly returning `false`.\n     *\n     * @private\n     * @param {Object} object The object to iterate over.\n     * @param {Function} iteratee The function invoked per iteration.\n     * @param {Function} keysFunc The function to get the keys of `object`.\n     * @returns {Object} Returns `object`.\n     */\n    var baseFor = createBaseFor();\n\n    /**\n     * This function is like `baseFor` except that it iterates over properties\n     * in the opposite order.\n     *\n     * @private\n     * @param {Object} object The object to iterate over.\n     * @param {Function} iteratee The function invoked per iteration.\n     * @param {Function} keysFunc The function to get the keys of `object`.\n     * @returns {Object} Returns `object`.\n     */\n    var baseForRight = createBaseFor(true);\n\n    /**\n     * The base implementation of `_.forOwn` without support for iteratee shorthands.\n     *\n     * @private\n     * @param {Object} object The object to iterate over.\n     * @param {Function} iteratee The function invoked per iteration.\n     * @returns {Object} Returns `object`.\n     */\n    function baseForOwn(object, iteratee) {\n      return object && baseFor(object, iteratee, keys);\n    }\n\n    /**\n     * The base implementation of `_.forOwnRight` without support for iteratee shorthands.\n     *\n     * @private\n     * @param {Object} object The object to iterate over.\n     * @param {Function} iteratee The function invoked per iteration.\n     * @returns {Object} Returns `object`.\n     */\n    function baseForOwnRight(object, iteratee) {\n      return object && baseForRight(object, iteratee, keys);\n    }\n\n    /**\n     * The base implementation of `_.functions` which creates an array of\n     * `object` function property names filtered from `props`.\n     *\n     * @private\n     * @param {Object} object The object to inspect.\n     * @param {Array} props The property names to filter.\n     * @returns {Array} Returns the function names.\n     */\n    function baseFunctions(object, props) {\n      return arrayFilter(props, function(key) {\n        return isFunction(object[key]);\n      });\n    }\n\n    /**\n     * The base implementation of `_.get` without support for default values.\n     *\n     * @private\n     * @param {Object} object The object to query.\n     * @param {Array|string} path The path of the property to get.\n     * @returns {*} Returns the resolved value.\n     */\n    function baseGet(object, path) {\n      path = castPath(path, object);\n\n      var index = 0,\n          length = path.length;\n\n      while (object != null && index < length) {\n        object = object[toKey(path[index++])];\n      }\n      return (index && index == length) ? object : undefined;\n    }\n\n    /**\n     * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n     * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n     * symbols of `object`.\n     *\n     * @private\n     * @param {Object} object The object to query.\n     * @param {Function} keysFunc The function to get the keys of `object`.\n     * @param {Function} symbolsFunc The function to get the symbols of `object`.\n     * @returns {Array} Returns the array of property names and symbols.\n     */\n    function baseGetAllKeys(object, keysFunc, symbolsFunc) {\n      var result = keysFunc(object);\n      return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n    }\n\n    /**\n     * The base implementation of `getTag` without fallbacks for buggy environments.\n     *\n     * @private\n     * @param {*} value The value to query.\n     * @returns {string} Returns the `toStringTag`.\n     */\n    function baseGetTag(value) {\n      if (value == null) {\n        return value === undefined ? undefinedTag : nullTag;\n      }\n      return (symToStringTag && symToStringTag in Object(value))\n        ? getRawTag(value)\n        : objectToString(value);\n    }\n\n    /**\n     * The base implementation of `_.gt` which doesn't coerce arguments.\n     *\n     * @private\n     * @param {*} value The value to compare.\n     * @param {*} other The other value to compare.\n     * @returns {boolean} Returns `true` if `value` is greater than `other`,\n     *  else `false`.\n     */\n    function baseGt(value, other) {\n      return value > other;\n    }\n\n    /**\n     * The base implementation of `_.has` without support for deep paths.\n     *\n     * @private\n     * @param {Object} [object] The object to query.\n     * @param {Array|string} key The key to check.\n     * @returns {boolean} Returns `true` if `key` exists, else `false`.\n     */\n    function baseHas(object, key) {\n      return object != null && hasOwnProperty.call(object, key);\n    }\n\n    /**\n     * The base implementation of `_.hasIn` without support for deep paths.\n     *\n     * @private\n     * @param {Object} [object] The object to query.\n     * @param {Array|string} key The key to check.\n     * @returns {boolean} Returns `true` if `key` exists, else `false`.\n     */\n    function baseHasIn(object, key) {\n      return object != null && key in Object(object);\n    }\n\n    /**\n     * The base implementation of `_.inRange` which doesn't coerce arguments.\n     *\n     * @private\n     * @param {number} number The number to check.\n     * @param {number} start The start of the range.\n     * @param {number} end The end of the range.\n     * @returns {boolean} Returns `true` if `number` is in the range, else `false`.\n     */\n    function baseInRange(number, start, end) {\n      return number >= nativeMin(start, end) && number < nativeMax(start, end);\n    }\n\n    /**\n     * The base implementation of methods like `_.intersection`, without support\n     * for iteratee shorthands, that accepts an array of arrays to inspect.\n     *\n     * @private\n     * @param {Array} arrays The arrays to inspect.\n     * @param {Function} [iteratee] The iteratee invoked per element.\n     * @param {Function} [comparator] The comparator invoked per element.\n     * @returns {Array} Returns the new array of shared values.\n     */\n    function baseIntersection(arrays, iteratee, comparator) {\n      var includes = comparator ? arrayIncludesWith : arrayIncludes,\n          length = arrays[0].length,\n          othLength = arrays.length,\n          othIndex = othLength,\n          caches = Array(othLength),\n          maxLength = Infinity,\n          result = [];\n\n      while (othIndex--) {\n        var array = arrays[othIndex];\n        if (othIndex && iteratee) {\n          array = arrayMap(array, baseUnary(iteratee));\n        }\n        maxLength = nativeMin(array.length, maxLength);\n        caches[othIndex] = !comparator && (iteratee || (length >= 120 && array.length >= 120))\n          ? new SetCache(othIndex && array)\n          : undefined;\n      }\n      array = arrays[0];\n\n      var index = -1,\n          seen = caches[0];\n\n      outer:\n      while (++index < length && result.length < maxLength) {\n        var value = array[index],\n            computed = iteratee ? iteratee(value) : value;\n\n        value = (comparator || value !== 0) ? value : 0;\n        if (!(seen\n              ? cacheHas(seen, computed)\n              : includes(result, computed, comparator)\n            )) {\n          othIndex = othLength;\n          while (--othIndex) {\n            var cache = caches[othIndex];\n            if (!(cache\n                  ? cacheHas(cache, computed)\n                  : includes(arrays[othIndex], computed, comparator))\n                ) {\n              continue outer;\n            }\n          }\n          if (seen) {\n            seen.push(computed);\n          }\n          result.push(value);\n        }\n      }\n      return result;\n    }\n\n    /**\n     * The base implementation of `_.invert` and `_.invertBy` which inverts\n     * `object` with values transformed by `iteratee` and set by `setter`.\n     *\n     * @private\n     * @param {Object} object The object to iterate over.\n     * @param {Function} setter The function to set `accumulator` values.\n     * @param {Function} iteratee The iteratee to transform values.\n     * @param {Object} accumulator The initial inverted object.\n     * @returns {Function} Returns `accumulator`.\n     */\n    function baseInverter(object, setter, iteratee, accumulator) {\n      baseForOwn(object, function(value, key, object) {\n        setter(accumulator, iteratee(value), key, object);\n      });\n      return accumulator;\n    }\n\n    /**\n     * The base implementation of `_.invoke` without support for individual\n     * method arguments.\n     *\n     * @private\n     * @param {Object} object The object to query.\n     * @param {Array|string} path The path of the method to invoke.\n     * @param {Array} args The arguments to invoke the method with.\n     * @returns {*} Returns the result of the invoked method.\n     */\n    function baseInvoke(object, path, args) {\n      path = castPath(path, object);\n      object = parent(object, path);\n      var func = object == null ? object : object[toKey(last(path))];\n      return func == null ? undefined : apply(func, object, args);\n    }\n\n    /**\n     * The base implementation of `_.isArguments`.\n     *\n     * @private\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n     */\n    function baseIsArguments(value) {\n      return isObjectLike(value) && baseGetTag(value) == argsTag;\n    }\n\n    /**\n     * The base implementation of `_.isArrayBuffer` without Node.js optimizations.\n     *\n     * @private\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is an array buffer, else `false`.\n     */\n    function baseIsArrayBuffer(value) {\n      return isObjectLike(value) && baseGetTag(value) == arrayBufferTag;\n    }\n\n    /**\n     * The base implementation of `_.isDate` without Node.js optimizations.\n     *\n     * @private\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a date object, else `false`.\n     */\n    function baseIsDate(value) {\n      return isObjectLike(value) && baseGetTag(value) == dateTag;\n    }\n\n    /**\n     * The base implementation of `_.isEqual` which supports partial comparisons\n     * and tracks traversed objects.\n     *\n     * @private\n     * @param {*} value The value to compare.\n     * @param {*} other The other value to compare.\n     * @param {boolean} bitmask The bitmask flags.\n     *  1 - Unordered comparison\n     *  2 - Partial comparison\n     * @param {Function} [customizer] The function to customize comparisons.\n     * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n     * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n     */\n    function baseIsEqual(value, other, bitmask, customizer, stack) {\n      if (value === other) {\n        return true;\n      }\n      if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n        return value !== value && other !== other;\n      }\n      return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n    }\n\n    /**\n     * A specialized version of `baseIsEqual` for arrays and objects which performs\n     * deep comparisons and tracks traversed objects enabling objects with circular\n     * references to be compared.\n     *\n     * @private\n     * @param {Object} object The object to compare.\n     * @param {Object} other The other object to compare.\n     * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n     * @param {Function} customizer The function to customize comparisons.\n     * @param {Function} equalFunc The function to determine equivalents of values.\n     * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n     * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n     */\n    function baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n      var objIsArr = isArray(object),\n          othIsArr = isArray(other),\n          objTag = objIsArr ? arrayTag : getTag(object),\n          othTag = othIsArr ? arrayTag : getTag(other);\n\n      objTag = objTag == argsTag ? objectTag : objTag;\n      othTag = othTag == argsTag ? objectTag : othTag;\n\n      var objIsObj = objTag == objectTag,\n          othIsObj = othTag == objectTag,\n          isSameTag = objTag == othTag;\n\n      if (isSameTag && isBuffer(object)) {\n        if (!isBuffer(other)) {\n          return false;\n        }\n        objIsArr = true;\n        objIsObj = false;\n      }\n      if (isSameTag && !objIsObj) {\n        stack || (stack = new Stack);\n        return (objIsArr || isTypedArray(object))\n          ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n          : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n      }\n      if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n        var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n            othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n        if (objIsWrapped || othIsWrapped) {\n          var objUnwrapped = objIsWrapped ? object.value() : object,\n              othUnwrapped = othIsWrapped ? other.value() : other;\n\n          stack || (stack = new Stack);\n          return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n        }\n      }\n      if (!isSameTag) {\n        return false;\n      }\n      stack || (stack = new Stack);\n      return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n    }\n\n    /**\n     * The base implementation of `_.isMap` without Node.js optimizations.\n     *\n     * @private\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n     */\n    function baseIsMap(value) {\n      return isObjectLike(value) && getTag(value) == mapTag;\n    }\n\n    /**\n     * The base implementation of `_.isMatch` without support for iteratee shorthands.\n     *\n     * @private\n     * @param {Object} object The object to inspect.\n     * @param {Object} source The object of property values to match.\n     * @param {Array} matchData The property names, values, and compare flags to match.\n     * @param {Function} [customizer] The function to customize comparisons.\n     * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n     */\n    function baseIsMatch(object, source, matchData, customizer) {\n      var index = matchData.length,\n          length = index,\n          noCustomizer = !customizer;\n\n      if (object == null) {\n        return !length;\n      }\n      object = Object(object);\n      while (index--) {\n        var data = matchData[index];\n        if ((noCustomizer && data[2])\n              ? data[1] !== object[data[0]]\n              : !(data[0] in object)\n            ) {\n          return false;\n        }\n      }\n      while (++index < length) {\n        data = matchData[index];\n        var key = data[0],\n            objValue = object[key],\n            srcValue = data[1];\n\n        if (noCustomizer && data[2]) {\n          if (objValue === undefined && !(key in object)) {\n            return false;\n          }\n        } else {\n          var stack = new Stack;\n          if (customizer) {\n            var result = customizer(objValue, srcValue, key, object, source, stack);\n          }\n          if (!(result === undefined\n                ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack)\n                : result\n              )) {\n            return false;\n          }\n        }\n      }\n      return true;\n    }\n\n    /**\n     * The base implementation of `_.isNative` without bad shim checks.\n     *\n     * @private\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a native function,\n     *  else `false`.\n     */\n    function baseIsNative(value) {\n      if (!isObject(value) || isMasked(value)) {\n        return false;\n      }\n      var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n      return pattern.test(toSource(value));\n    }\n\n    /**\n     * The base implementation of `_.isRegExp` without Node.js optimizations.\n     *\n     * @private\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a regexp, else `false`.\n     */\n    function baseIsRegExp(value) {\n      return isObjectLike(value) && baseGetTag(value) == regexpTag;\n    }\n\n    /**\n     * The base implementation of `_.isSet` without Node.js optimizations.\n     *\n     * @private\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n     */\n    function baseIsSet(value) {\n      return isObjectLike(value) && getTag(value) == setTag;\n    }\n\n    /**\n     * The base implementation of `_.isTypedArray` without Node.js optimizations.\n     *\n     * @private\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n     */\n    function baseIsTypedArray(value) {\n      return isObjectLike(value) &&\n        isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n    }\n\n    /**\n     * The base implementation of `_.iteratee`.\n     *\n     * @private\n     * @param {*} [value=_.identity] The value to convert to an iteratee.\n     * @returns {Function} Returns the iteratee.\n     */\n    function baseIteratee(value) {\n      // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.\n      // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.\n      if (typeof value == 'function') {\n        return value;\n      }\n      if (value == null) {\n        return identity;\n      }\n      if (typeof value == 'object') {\n        return isArray(value)\n          ? baseMatchesProperty(value[0], value[1])\n          : baseMatches(value);\n      }\n      return property(value);\n    }\n\n    /**\n     * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n     *\n     * @private\n     * @param {Object} object The object to query.\n     * @returns {Array} Returns the array of property names.\n     */\n    function baseKeys(object) {\n      if (!isPrototype(object)) {\n        return nativeKeys(object);\n      }\n      var result = [];\n      for (var key in Object(object)) {\n        if (hasOwnProperty.call(object, key) && key != 'constructor') {\n          result.push(key);\n        }\n      }\n      return result;\n    }\n\n    /**\n     * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.\n     *\n     * @private\n     * @param {Object} object The object to query.\n     * @returns {Array} Returns the array of property names.\n     */\n    function baseKeysIn(object) {\n      if (!isObject(object)) {\n        return nativeKeysIn(object);\n      }\n      var isProto = isPrototype(object),\n          result = [];\n\n      for (var key in object) {\n        if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n          result.push(key);\n        }\n      }\n      return result;\n    }\n\n    /**\n     * The base implementation of `_.lt` which doesn't coerce arguments.\n     *\n     * @private\n     * @param {*} value The value to compare.\n     * @param {*} other The other value to compare.\n     * @returns {boolean} Returns `true` if `value` is less than `other`,\n     *  else `false`.\n     */\n    function baseLt(value, other) {\n      return value < other;\n    }\n\n    /**\n     * The base implementation of `_.map` without support for iteratee shorthands.\n     *\n     * @private\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} iteratee The function invoked per iteration.\n     * @returns {Array} Returns the new mapped array.\n     */\n    function baseMap(collection, iteratee) {\n      var index = -1,\n          result = isArrayLike(collection) ? Array(collection.length) : [];\n\n      baseEach(collection, function(value, key, collection) {\n        result[++index] = iteratee(value, key, collection);\n      });\n      return result;\n    }\n\n    /**\n     * The base implementation of `_.matches` which doesn't clone `source`.\n     *\n     * @private\n     * @param {Object} source The object of property values to match.\n     * @returns {Function} Returns the new spec function.\n     */\n    function baseMatches(source) {\n      var matchData = getMatchData(source);\n      if (matchData.length == 1 && matchData[0][2]) {\n        return matchesStrictComparable(matchData[0][0], matchData[0][1]);\n      }\n      return function(object) {\n        return object === source || baseIsMatch(object, source, matchData);\n      };\n    }\n\n    /**\n     * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.\n     *\n     * @private\n     * @param {string} path The path of the property to get.\n     * @param {*} srcValue The value to match.\n     * @returns {Function} Returns the new spec function.\n     */\n    function baseMatchesProperty(path, srcValue) {\n      if (isKey(path) && isStrictComparable(srcValue)) {\n        return matchesStrictComparable(toKey(path), srcValue);\n      }\n      return function(object) {\n        var objValue = get(object, path);\n        return (objValue === undefined && objValue === srcValue)\n          ? hasIn(object, path)\n          : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);\n      };\n    }\n\n    /**\n     * The base implementation of `_.merge` without support for multiple sources.\n     *\n     * @private\n     * @param {Object} object The destination object.\n     * @param {Object} source The source object.\n     * @param {number} srcIndex The index of `source`.\n     * @param {Function} [customizer] The function to customize merged values.\n     * @param {Object} [stack] Tracks traversed source values and their merged\n     *  counterparts.\n     */\n    function baseMerge(object, source, srcIndex, customizer, stack) {\n      if (object === source) {\n        return;\n      }\n      baseFor(source, function(srcValue, key) {\n        stack || (stack = new Stack);\n        if (isObject(srcValue)) {\n          baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack);\n        }\n        else {\n          var newValue = customizer\n            ? customizer(safeGet(object, key), srcValue, (key + ''), object, source, stack)\n            : undefined;\n\n          if (newValue === undefined) {\n            newValue = srcValue;\n          }\n          assignMergeValue(object, key, newValue);\n        }\n      }, keysIn);\n    }\n\n    /**\n     * A specialized version of `baseMerge` for arrays and objects which performs\n     * deep merges and tracks traversed objects enabling objects with circular\n     * references to be merged.\n     *\n     * @private\n     * @param {Object} object The destination object.\n     * @param {Object} source The source object.\n     * @param {string} key The key of the value to merge.\n     * @param {number} srcIndex The index of `source`.\n     * @param {Function} mergeFunc The function to merge values.\n     * @param {Function} [customizer] The function to customize assigned values.\n     * @param {Object} [stack] Tracks traversed source values and their merged\n     *  counterparts.\n     */\n    function baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) {\n      var objValue = safeGet(object, key),\n          srcValue = safeGet(source, key),\n          stacked = stack.get(srcValue);\n\n      if (stacked) {\n        assignMergeValue(object, key, stacked);\n        return;\n      }\n      var newValue = customizer\n        ? customizer(objValue, srcValue, (key + ''), object, source, stack)\n        : undefined;\n\n      var isCommon = newValue === undefined;\n\n      if (isCommon) {\n        var isArr = isArray(srcValue),\n            isBuff = !isArr && isBuffer(srcValue),\n            isTyped = !isArr && !isBuff && isTypedArray(srcValue);\n\n        newValue = srcValue;\n        if (isArr || isBuff || isTyped) {\n          if (isArray(objValue)) {\n            newValue = objValue;\n          }\n          else if (isArrayLikeObject(objValue)) {\n            newValue = copyArray(objValue);\n          }\n          else if (isBuff) {\n            isCommon = false;\n            newValue = cloneBuffer(srcValue, true);\n          }\n          else if (isTyped) {\n            isCommon = false;\n            newValue = cloneTypedArray(srcValue, true);\n          }\n          else {\n            newValue = [];\n          }\n        }\n        else if (isPlainObject(srcValue) || isArguments(srcValue)) {\n          newValue = objValue;\n          if (isArguments(objValue)) {\n            newValue = toPlainObject(objValue);\n          }\n          else if (!isObject(objValue) || isFunction(objValue)) {\n            newValue = initCloneObject(srcValue);\n          }\n        }\n        else {\n          isCommon = false;\n        }\n      }\n      if (isCommon) {\n        // Recursively merge objects and arrays (susceptible to call stack limits).\n        stack.set(srcValue, newValue);\n        mergeFunc(newValue, srcValue, srcIndex, customizer, stack);\n        stack['delete'](srcValue);\n      }\n      assignMergeValue(object, key, newValue);\n    }\n\n    /**\n     * The base implementation of `_.nth` which doesn't coerce arguments.\n     *\n     * @private\n     * @param {Array} array The array to query.\n     * @param {number} n The index of the element to return.\n     * @returns {*} Returns the nth element of `array`.\n     */\n    function baseNth(array, n) {\n      var length = array.length;\n      if (!length) {\n        return;\n      }\n      n += n < 0 ? length : 0;\n      return isIndex(n, length) ? array[n] : undefined;\n    }\n\n    /**\n     * The base implementation of `_.orderBy` without param guards.\n     *\n     * @private\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function[]|Object[]|string[]} iteratees The iteratees to sort by.\n     * @param {string[]} orders The sort orders of `iteratees`.\n     * @returns {Array} Returns the new sorted array.\n     */\n    function baseOrderBy(collection, iteratees, orders) {\n      if (iteratees.length) {\n        iteratees = arrayMap(iteratees, function(iteratee) {\n          if (isArray(iteratee)) {\n            return function(value) {\n              return baseGet(value, iteratee.length === 1 ? iteratee[0] : iteratee);\n            };\n          }\n          return iteratee;\n        });\n      } else {\n        iteratees = [identity];\n      }\n\n      var index = -1;\n      iteratees = arrayMap(iteratees, baseUnary(getIteratee()));\n\n      var result = baseMap(collection, function(value, key, collection) {\n        var criteria = arrayMap(iteratees, function(iteratee) {\n          return iteratee(value);\n        });\n        return { 'criteria': criteria, 'index': ++index, 'value': value };\n      });\n\n      return baseSortBy(result, function(object, other) {\n        return compareMultiple(object, other, orders);\n      });\n    }\n\n    /**\n     * The base implementation of `_.pick` without support for individual\n     * property identifiers.\n     *\n     * @private\n     * @param {Object} object The source object.\n     * @param {string[]} paths The property paths to pick.\n     * @returns {Object} Returns the new object.\n     */\n    function basePick(object, paths) {\n      return basePickBy(object, paths, function(value, path) {\n        return hasIn(object, path);\n      });\n    }\n\n    /**\n     * The base implementation of  `_.pickBy` without support for iteratee shorthands.\n     *\n     * @private\n     * @param {Object} object The source object.\n     * @param {string[]} paths The property paths to pick.\n     * @param {Function} predicate The function invoked per property.\n     * @returns {Object} Returns the new object.\n     */\n    function basePickBy(object, paths, predicate) {\n      var index = -1,\n          length = paths.length,\n          result = {};\n\n      while (++index < length) {\n        var path = paths[index],\n            value = baseGet(object, path);\n\n        if (predicate(value, path)) {\n          baseSet(result, castPath(path, object), value);\n        }\n      }\n      return result;\n    }\n\n    /**\n     * A specialized version of `baseProperty` which supports deep paths.\n     *\n     * @private\n     * @param {Array|string} path The path of the property to get.\n     * @returns {Function} Returns the new accessor function.\n     */\n    function basePropertyDeep(path) {\n      return function(object) {\n        return baseGet(object, path);\n      };\n    }\n\n    /**\n     * The base implementation of `_.pullAllBy` without support for iteratee\n     * shorthands.\n     *\n     * @private\n     * @param {Array} array The array to modify.\n     * @param {Array} values The values to remove.\n     * @param {Function} [iteratee] The iteratee invoked per element.\n     * @param {Function} [comparator] The comparator invoked per element.\n     * @returns {Array} Returns `array`.\n     */\n    function basePullAll(array, values, iteratee, comparator) {\n      var indexOf = comparator ? baseIndexOfWith : baseIndexOf,\n          index = -1,\n          length = values.length,\n          seen = array;\n\n      if (array === values) {\n        values = copyArray(values);\n      }\n      if (iteratee) {\n        seen = arrayMap(array, baseUnary(iteratee));\n      }\n      while (++index < length) {\n        var fromIndex = 0,\n            value = values[index],\n            computed = iteratee ? iteratee(value) : value;\n\n        while ((fromIndex = indexOf(seen, computed, fromIndex, comparator)) > -1) {\n          if (seen !== array) {\n            splice.call(seen, fromIndex, 1);\n          }\n          splice.call(array, fromIndex, 1);\n        }\n      }\n      return array;\n    }\n\n    /**\n     * The base implementation of `_.pullAt` without support for individual\n     * indexes or capturing the removed elements.\n     *\n     * @private\n     * @param {Array} array The array to modify.\n     * @param {number[]} indexes The indexes of elements to remove.\n     * @returns {Array} Returns `array`.\n     */\n    function basePullAt(array, indexes) {\n      var length = array ? indexes.length : 0,\n          lastIndex = length - 1;\n\n      while (length--) {\n        var index = indexes[length];\n        if (length == lastIndex || index !== previous) {\n          var previous = index;\n          if (isIndex(index)) {\n            splice.call(array, index, 1);\n          } else {\n            baseUnset(array, index);\n          }\n        }\n      }\n      return array;\n    }\n\n    /**\n     * The base implementation of `_.random` without support for returning\n     * floating-point numbers.\n     *\n     * @private\n     * @param {number} lower The lower bound.\n     * @param {number} upper The upper bound.\n     * @returns {number} Returns the random number.\n     */\n    function baseRandom(lower, upper) {\n      return lower + nativeFloor(nativeRandom() * (upper - lower + 1));\n    }\n\n    /**\n     * The base implementation of `_.range` and `_.rangeRight` which doesn't\n     * coerce arguments.\n     *\n     * @private\n     * @param {number} start The start of the range.\n     * @param {number} end The end of the range.\n     * @param {number} step The value to increment or decrement by.\n     * @param {boolean} [fromRight] Specify iterating from right to left.\n     * @returns {Array} Returns the range of numbers.\n     */\n    function baseRange(start, end, step, fromRight) {\n      var index = -1,\n          length = nativeMax(nativeCeil((end - start) / (step || 1)), 0),\n          result = Array(length);\n\n      while (length--) {\n        result[fromRight ? length : ++index] = start;\n        start += step;\n      }\n      return result;\n    }\n\n    /**\n     * The base implementation of `_.repeat` which doesn't coerce arguments.\n     *\n     * @private\n     * @param {string} string The string to repeat.\n     * @param {number} n The number of times to repeat the string.\n     * @returns {string} Returns the repeated string.\n     */\n    function baseRepeat(string, n) {\n      var result = '';\n      if (!string || n < 1 || n > MAX_SAFE_INTEGER) {\n        return result;\n      }\n      // Leverage the exponentiation by squaring algorithm for a faster repeat.\n      // See https://en.wikipedia.org/wiki/Exponentiation_by_squaring for more details.\n      do {\n        if (n % 2) {\n          result += string;\n        }\n        n = nativeFloor(n / 2);\n        if (n) {\n          string += string;\n        }\n      } while (n);\n\n      return result;\n    }\n\n    /**\n     * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n     *\n     * @private\n     * @param {Function} func The function to apply a rest parameter to.\n     * @param {number} [start=func.length-1] The start position of the rest parameter.\n     * @returns {Function} Returns the new function.\n     */\n    function baseRest(func, start) {\n      return setToString(overRest(func, start, identity), func + '');\n    }\n\n    /**\n     * The base implementation of `_.sample`.\n     *\n     * @private\n     * @param {Array|Object} collection The collection to sample.\n     * @returns {*} Returns the random element.\n     */\n    function baseSample(collection) {\n      return arraySample(values(collection));\n    }\n\n    /**\n     * The base implementation of `_.sampleSize` without param guards.\n     *\n     * @private\n     * @param {Array|Object} collection The collection to sample.\n     * @param {number} n The number of elements to sample.\n     * @returns {Array} Returns the random elements.\n     */\n    function baseSampleSize(collection, n) {\n      var array = values(collection);\n      return shuffleSelf(array, baseClamp(n, 0, array.length));\n    }\n\n    /**\n     * The base implementation of `_.set`.\n     *\n     * @private\n     * @param {Object} object The object to modify.\n     * @param {Array|string} path The path of the property to set.\n     * @param {*} value The value to set.\n     * @param {Function} [customizer] The function to customize path creation.\n     * @returns {Object} Returns `object`.\n     */\n    function baseSet(object, path, value, customizer) {\n      if (!isObject(object)) {\n        return object;\n      }\n      path = castPath(path, object);\n\n      var index = -1,\n          length = path.length,\n          lastIndex = length - 1,\n          nested = object;\n\n      while (nested != null && ++index < length) {\n        var key = toKey(path[index]),\n            newValue = value;\n\n        if (key === '__proto__' || key === 'constructor' || key === 'prototype') {\n          return object;\n        }\n\n        if (index != lastIndex) {\n          var objValue = nested[key];\n          newValue = customizer ? customizer(objValue, key, nested) : undefined;\n          if (newValue === undefined) {\n            newValue = isObject(objValue)\n              ? objValue\n              : (isIndex(path[index + 1]) ? [] : {});\n          }\n        }\n        assignValue(nested, key, newValue);\n        nested = nested[key];\n      }\n      return object;\n    }\n\n    /**\n     * The base implementation of `setData` without support for hot loop shorting.\n     *\n     * @private\n     * @param {Function} func The function to associate metadata with.\n     * @param {*} data The metadata.\n     * @returns {Function} Returns `func`.\n     */\n    var baseSetData = !metaMap ? identity : function(func, data) {\n      metaMap.set(func, data);\n      return func;\n    };\n\n    /**\n     * The base implementation of `setToString` without support for hot loop shorting.\n     *\n     * @private\n     * @param {Function} func The function to modify.\n     * @param {Function} string The `toString` result.\n     * @returns {Function} Returns `func`.\n     */\n    var baseSetToString = !defineProperty ? identity : function(func, string) {\n      return defineProperty(func, 'toString', {\n        'configurable': true,\n        'enumerable': false,\n        'value': constant(string),\n        'writable': true\n      });\n    };\n\n    /**\n     * The base implementation of `_.shuffle`.\n     *\n     * @private\n     * @param {Array|Object} collection The collection to shuffle.\n     * @returns {Array} Returns the new shuffled array.\n     */\n    function baseShuffle(collection) {\n      return shuffleSelf(values(collection));\n    }\n\n    /**\n     * The base implementation of `_.slice` without an iteratee call guard.\n     *\n     * @private\n     * @param {Array} array The array to slice.\n     * @param {number} [start=0] The start position.\n     * @param {number} [end=array.length] The end position.\n     * @returns {Array} Returns the slice of `array`.\n     */\n    function baseSlice(array, start, end) {\n      var index = -1,\n          length = array.length;\n\n      if (start < 0) {\n        start = -start > length ? 0 : (length + start);\n      }\n      end = end > length ? length : end;\n      if (end < 0) {\n        end += length;\n      }\n      length = start > end ? 0 : ((end - start) >>> 0);\n      start >>>= 0;\n\n      var result = Array(length);\n      while (++index < length) {\n        result[index] = array[index + start];\n      }\n      return result;\n    }\n\n    /**\n     * The base implementation of `_.some` without support for iteratee shorthands.\n     *\n     * @private\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} predicate The function invoked per iteration.\n     * @returns {boolean} Returns `true` if any element passes the predicate check,\n     *  else `false`.\n     */\n    function baseSome(collection, predicate) {\n      var result;\n\n      baseEach(collection, function(value, index, collection) {\n        result = predicate(value, index, collection);\n        return !result;\n      });\n      return !!result;\n    }\n\n    /**\n     * The base implementation of `_.sortedIndex` and `_.sortedLastIndex` which\n     * performs a binary search of `array` to determine the index at which `value`\n     * should be inserted into `array` in order to maintain its sort order.\n     *\n     * @private\n     * @param {Array} array The sorted array to inspect.\n     * @param {*} value The value to evaluate.\n     * @param {boolean} [retHighest] Specify returning the highest qualified index.\n     * @returns {number} Returns the index at which `value` should be inserted\n     *  into `array`.\n     */\n    function baseSortedIndex(array, value, retHighest) {\n      var low = 0,\n          high = array == null ? low : array.length;\n\n      if (typeof value == 'number' && value === value && high <= HALF_MAX_ARRAY_LENGTH) {\n        while (low < high) {\n          var mid = (low + high) >>> 1,\n              computed = array[mid];\n\n          if (computed !== null && !isSymbol(computed) &&\n              (retHighest ? (computed <= value) : (computed < value))) {\n            low = mid + 1;\n          } else {\n            high = mid;\n          }\n        }\n        return high;\n      }\n      return baseSortedIndexBy(array, value, identity, retHighest);\n    }\n\n    /**\n     * The base implementation of `_.sortedIndexBy` and `_.sortedLastIndexBy`\n     * which invokes `iteratee` for `value` and each element of `array` to compute\n     * their sort ranking. The iteratee is invoked with one argument; (value).\n     *\n     * @private\n     * @param {Array} array The sorted array to inspect.\n     * @param {*} value The value to evaluate.\n     * @param {Function} iteratee The iteratee invoked per element.\n     * @param {boolean} [retHighest] Specify returning the highest qualified index.\n     * @returns {number} Returns the index at which `value` should be inserted\n     *  into `array`.\n     */\n    function baseSortedIndexBy(array, value, iteratee, retHighest) {\n      var low = 0,\n          high = array == null ? 0 : array.length;\n      if (high === 0) {\n        return 0;\n      }\n\n      value = iteratee(value);\n      var valIsNaN = value !== value,\n          valIsNull = value === null,\n          valIsSymbol = isSymbol(value),\n          valIsUndefined = value === undefined;\n\n      while (low < high) {\n        var mid = nativeFloor((low + high) / 2),\n            computed = iteratee(array[mid]),\n            othIsDefined = computed !== undefined,\n            othIsNull = computed === null,\n            othIsReflexive = computed === computed,\n            othIsSymbol = isSymbol(computed);\n\n        if (valIsNaN) {\n          var setLow = retHighest || othIsReflexive;\n        } else if (valIsUndefined) {\n          setLow = othIsReflexive && (retHighest || othIsDefined);\n        } else if (valIsNull) {\n          setLow = othIsReflexive && othIsDefined && (retHighest || !othIsNull);\n        } else if (valIsSymbol) {\n          setLow = othIsReflexive && othIsDefined && !othIsNull && (retHighest || !othIsSymbol);\n        } else if (othIsNull || othIsSymbol) {\n          setLow = false;\n        } else {\n          setLow = retHighest ? (computed <= value) : (computed < value);\n        }\n        if (setLow) {\n          low = mid + 1;\n        } else {\n          high = mid;\n        }\n      }\n      return nativeMin(high, MAX_ARRAY_INDEX);\n    }\n\n    /**\n     * The base implementation of `_.sortedUniq` and `_.sortedUniqBy` without\n     * support for iteratee shorthands.\n     *\n     * @private\n     * @param {Array} array The array to inspect.\n     * @param {Function} [iteratee] The iteratee invoked per element.\n     * @returns {Array} Returns the new duplicate free array.\n     */\n    function baseSortedUniq(array, iteratee) {\n      var index = -1,\n          length = array.length,\n          resIndex = 0,\n          result = [];\n\n      while (++index < length) {\n        var value = array[index],\n            computed = iteratee ? iteratee(value) : value;\n\n        if (!index || !eq(computed, seen)) {\n          var seen = computed;\n          result[resIndex++] = value === 0 ? 0 : value;\n        }\n      }\n      return result;\n    }\n\n    /**\n     * The base implementation of `_.toNumber` which doesn't ensure correct\n     * conversions of binary, hexadecimal, or octal string values.\n     *\n     * @private\n     * @param {*} value The value to process.\n     * @returns {number} Returns the number.\n     */\n    function baseToNumber(value) {\n      if (typeof value == 'number') {\n        return value;\n      }\n      if (isSymbol(value)) {\n        return NAN;\n      }\n      return +value;\n    }\n\n    /**\n     * The base implementation of `_.toString` which doesn't convert nullish\n     * values to empty strings.\n     *\n     * @private\n     * @param {*} value The value to process.\n     * @returns {string} Returns the string.\n     */\n    function baseToString(value) {\n      // Exit early for strings to avoid a performance hit in some environments.\n      if (typeof value == 'string') {\n        return value;\n      }\n      if (isArray(value)) {\n        // Recursively convert values (susceptible to call stack limits).\n        return arrayMap(value, baseToString) + '';\n      }\n      if (isSymbol(value)) {\n        return symbolToString ? symbolToString.call(value) : '';\n      }\n      var result = (value + '');\n      return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n    }\n\n    /**\n     * The base implementation of `_.uniqBy` without support for iteratee shorthands.\n     *\n     * @private\n     * @param {Array} array The array to inspect.\n     * @param {Function} [iteratee] The iteratee invoked per element.\n     * @param {Function} [comparator] The comparator invoked per element.\n     * @returns {Array} Returns the new duplicate free array.\n     */\n    function baseUniq(array, iteratee, comparator) {\n      var index = -1,\n          includes = arrayIncludes,\n          length = array.length,\n          isCommon = true,\n          result = [],\n          seen = result;\n\n      if (comparator) {\n        isCommon = false;\n        includes = arrayIncludesWith;\n      }\n      else if (length >= LARGE_ARRAY_SIZE) {\n        var set = iteratee ? null : createSet(array);\n        if (set) {\n          return setToArray(set);\n        }\n        isCommon = false;\n        includes = cacheHas;\n        seen = new SetCache;\n      }\n      else {\n        seen = iteratee ? [] : result;\n      }\n      outer:\n      while (++index < length) {\n        var value = array[index],\n            computed = iteratee ? iteratee(value) : value;\n\n        value = (comparator || value !== 0) ? value : 0;\n        if (isCommon && computed === computed) {\n          var seenIndex = seen.length;\n          while (seenIndex--) {\n            if (seen[seenIndex] === computed) {\n              continue outer;\n            }\n          }\n          if (iteratee) {\n            seen.push(computed);\n          }\n          result.push(value);\n        }\n        else if (!includes(seen, computed, comparator)) {\n          if (seen !== result) {\n            seen.push(computed);\n          }\n          result.push(value);\n        }\n      }\n      return result;\n    }\n\n    /**\n     * The base implementation of `_.unset`.\n     *\n     * @private\n     * @param {Object} object The object to modify.\n     * @param {Array|string} path The property path to unset.\n     * @returns {boolean} Returns `true` if the property is deleted, else `false`.\n     */\n    function baseUnset(object, path) {\n      path = castPath(path, object);\n\n      // Prevent prototype pollution:\n      // https://github.com/lodash/lodash/security/advisories/GHSA-xxjr-mmjv-4gpg\n      // https://github.com/lodash/lodash/security/advisories/GHSA-f23m-r3pf-42rh\n      var index = -1,\n          length = path.length;\n\n      if (!length) {\n        return true;\n      }\n\n      while (++index < length) {\n        var key = toKey(path[index]);\n\n        // Always block \"__proto__\" anywhere in the path if it's not expected\n        if (key === '__proto__' && !hasOwnProperty.call(object, '__proto__')) {\n          return false;\n        }\n\n        // Block constructor/prototype as non-terminal traversal keys to prevent\n        // escaping the object graph into built-in constructors and prototypes.\n        if ((key === 'constructor' || key === 'prototype') && index < length - 1) {\n          return false;\n        }\n      }\n\n      var obj = parent(object, path);\n      return obj == null || delete obj[toKey(last(path))];\n    }\n\n    /**\n     * The base implementation of `_.update`.\n     *\n     * @private\n     * @param {Object} object The object to modify.\n     * @param {Array|string} path The path of the property to update.\n     * @param {Function} updater The function to produce the updated value.\n     * @param {Function} [customizer] The function to customize path creation.\n     * @returns {Object} Returns `object`.\n     */\n    function baseUpdate(object, path, updater, customizer) {\n      return baseSet(object, path, updater(baseGet(object, path)), customizer);\n    }\n\n    /**\n     * The base implementation of methods like `_.dropWhile` and `_.takeWhile`\n     * without support for iteratee shorthands.\n     *\n     * @private\n     * @param {Array} array The array to query.\n     * @param {Function} predicate The function invoked per iteration.\n     * @param {boolean} [isDrop] Specify dropping elements instead of taking them.\n     * @param {boolean} [fromRight] Specify iterating from right to left.\n     * @returns {Array} Returns the slice of `array`.\n     */\n    function baseWhile(array, predicate, isDrop, fromRight) {\n      var length = array.length,\n          index = fromRight ? length : -1;\n\n      while ((fromRight ? index-- : ++index < length) &&\n        predicate(array[index], index, array)) {}\n\n      return isDrop\n        ? baseSlice(array, (fromRight ? 0 : index), (fromRight ? index + 1 : length))\n        : baseSlice(array, (fromRight ? index + 1 : 0), (fromRight ? length : index));\n    }\n\n    /**\n     * The base implementation of `wrapperValue` which returns the result of\n     * performing a sequence of actions on the unwrapped `value`, where each\n     * successive action is supplied the return value of the previous.\n     *\n     * @private\n     * @param {*} value The unwrapped value.\n     * @param {Array} actions Actions to perform to resolve the unwrapped value.\n     * @returns {*} Returns the resolved value.\n     */\n    function baseWrapperValue(value, actions) {\n      var result = value;\n      if (result instanceof LazyWrapper) {\n        result = result.value();\n      }\n      return arrayReduce(actions, function(result, action) {\n        return action.func.apply(action.thisArg, arrayPush([result], action.args));\n      }, result);\n    }\n\n    /**\n     * The base implementation of methods like `_.xor`, without support for\n     * iteratee shorthands, that accepts an array of arrays to inspect.\n     *\n     * @private\n     * @param {Array} arrays The arrays to inspect.\n     * @param {Function} [iteratee] The iteratee invoked per element.\n     * @param {Function} [comparator] The comparator invoked per element.\n     * @returns {Array} Returns the new array of values.\n     */\n    function baseXor(arrays, iteratee, comparator) {\n      var length = arrays.length;\n      if (length < 2) {\n        return length ? baseUniq(arrays[0]) : [];\n      }\n      var index = -1,\n          result = Array(length);\n\n      while (++index < length) {\n        var array = arrays[index],\n            othIndex = -1;\n\n        while (++othIndex < length) {\n          if (othIndex != index) {\n            result[index] = baseDifference(result[index] || array, arrays[othIndex], iteratee, comparator);\n          }\n        }\n      }\n      return baseUniq(baseFlatten(result, 1), iteratee, comparator);\n    }\n\n    /**\n     * This base implementation of `_.zipObject` which assigns values using `assignFunc`.\n     *\n     * @private\n     * @param {Array} props The property identifiers.\n     * @param {Array} values The property values.\n     * @param {Function} assignFunc The function to assign values.\n     * @returns {Object} Returns the new object.\n     */\n    function baseZipObject(props, values, assignFunc) {\n      var index = -1,\n          length = props.length,\n          valsLength = values.length,\n          result = {};\n\n      while (++index < length) {\n        var value = index < valsLength ? values[index] : undefined;\n        assignFunc(result, props[index], value);\n      }\n      return result;\n    }\n\n    /**\n     * Casts `value` to an empty array if it's not an array like object.\n     *\n     * @private\n     * @param {*} value The value to inspect.\n     * @returns {Array|Object} Returns the cast array-like object.\n     */\n    function castArrayLikeObject(value) {\n      return isArrayLikeObject(value) ? value : [];\n    }\n\n    /**\n     * Casts `value` to `identity` if it's not a function.\n     *\n     * @private\n     * @param {*} value The value to inspect.\n     * @returns {Function} Returns cast function.\n     */\n    function castFunction(value) {\n      return typeof value == 'function' ? value : identity;\n    }\n\n    /**\n     * Casts `value` to a path array if it's not one.\n     *\n     * @private\n     * @param {*} value The value to inspect.\n     * @param {Object} [object] The object to query keys on.\n     * @returns {Array} Returns the cast property path array.\n     */\n    function castPath(value, object) {\n      if (isArray(value)) {\n        return value;\n      }\n      return isKey(value, object) ? [value] : stringToPath(toString(value));\n    }\n\n    /**\n     * A `baseRest` alias which can be replaced with `identity` by module\n     * replacement plugins.\n     *\n     * @private\n     * @type {Function}\n     * @param {Function} func The function to apply a rest parameter to.\n     * @returns {Function} Returns the new function.\n     */\n    var castRest = baseRest;\n\n    /**\n     * Casts `array` to a slice if it's needed.\n     *\n     * @private\n     * @param {Array} array The array to inspect.\n     * @param {number} start The start position.\n     * @param {number} [end=array.length] The end position.\n     * @returns {Array} Returns the cast slice.\n     */\n    function castSlice(array, start, end) {\n      var length = array.length;\n      end = end === undefined ? length : end;\n      return (!start && end >= length) ? array : baseSlice(array, start, end);\n    }\n\n    /**\n     * A simple wrapper around the global [`clearTimeout`](https://mdn.io/clearTimeout).\n     *\n     * @private\n     * @param {number|Object} id The timer id or timeout object of the timer to clear.\n     */\n    var clearTimeout = ctxClearTimeout || function(id) {\n      return root.clearTimeout(id);\n    };\n\n    /**\n     * Creates a clone of  `buffer`.\n     *\n     * @private\n     * @param {Buffer} buffer The buffer to clone.\n     * @param {boolean} [isDeep] Specify a deep clone.\n     * @returns {Buffer} Returns the cloned buffer.\n     */\n    function cloneBuffer(buffer, isDeep) {\n      if (isDeep) {\n        return buffer.slice();\n      }\n      var length = buffer.length,\n          result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);\n\n      buffer.copy(result);\n      return result;\n    }\n\n    /**\n     * Creates a clone of `arrayBuffer`.\n     *\n     * @private\n     * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n     * @returns {ArrayBuffer} Returns the cloned array buffer.\n     */\n    function cloneArrayBuffer(arrayBuffer) {\n      var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n      new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n      return result;\n    }\n\n    /**\n     * Creates a clone of `dataView`.\n     *\n     * @private\n     * @param {Object} dataView The data view to clone.\n     * @param {boolean} [isDeep] Specify a deep clone.\n     * @returns {Object} Returns the cloned data view.\n     */\n    function cloneDataView(dataView, isDeep) {\n      var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;\n      return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);\n    }\n\n    /**\n     * Creates a clone of `regexp`.\n     *\n     * @private\n     * @param {Object} regexp The regexp to clone.\n     * @returns {Object} Returns the cloned regexp.\n     */\n    function cloneRegExp(regexp) {\n      var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));\n      result.lastIndex = regexp.lastIndex;\n      return result;\n    }\n\n    /**\n     * Creates a clone of the `symbol` object.\n     *\n     * @private\n     * @param {Object} symbol The symbol object to clone.\n     * @returns {Object} Returns the cloned symbol object.\n     */\n    function cloneSymbol(symbol) {\n      return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};\n    }\n\n    /**\n     * Creates a clone of `typedArray`.\n     *\n     * @private\n     * @param {Object} typedArray The typed array to clone.\n     * @param {boolean} [isDeep] Specify a deep clone.\n     * @returns {Object} Returns the cloned typed array.\n     */\n    function cloneTypedArray(typedArray, isDeep) {\n      var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n      return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n    }\n\n    /**\n     * Compares values to sort them in ascending order.\n     *\n     * @private\n     * @param {*} value The value to compare.\n     * @param {*} other The other value to compare.\n     * @returns {number} Returns the sort order indicator for `value`.\n     */\n    function compareAscending(value, other) {\n      if (value !== other) {\n        var valIsDefined = value !== undefined,\n            valIsNull = value === null,\n            valIsReflexive = value === value,\n            valIsSymbol = isSymbol(value);\n\n        var othIsDefined = other !== undefined,\n            othIsNull = other === null,\n            othIsReflexive = other === other,\n            othIsSymbol = isSymbol(other);\n\n        if ((!othIsNull && !othIsSymbol && !valIsSymbol && value > other) ||\n            (valIsSymbol && othIsDefined && othIsReflexive && !othIsNull && !othIsSymbol) ||\n            (valIsNull && othIsDefined && othIsReflexive) ||\n            (!valIsDefined && othIsReflexive) ||\n            !valIsReflexive) {\n          return 1;\n        }\n        if ((!valIsNull && !valIsSymbol && !othIsSymbol && value < other) ||\n            (othIsSymbol && valIsDefined && valIsReflexive && !valIsNull && !valIsSymbol) ||\n            (othIsNull && valIsDefined && valIsReflexive) ||\n            (!othIsDefined && valIsReflexive) ||\n            !othIsReflexive) {\n          return -1;\n        }\n      }\n      return 0;\n    }\n\n    /**\n     * Used by `_.orderBy` to compare multiple properties of a value to another\n     * and stable sort them.\n     *\n     * If `orders` is unspecified, all values are sorted in ascending order. Otherwise,\n     * specify an order of \"desc\" for descending or \"asc\" for ascending sort order\n     * of corresponding values.\n     *\n     * @private\n     * @param {Object} object The object to compare.\n     * @param {Object} other The other object to compare.\n     * @param {boolean[]|string[]} orders The order to sort by for each property.\n     * @returns {number} Returns the sort order indicator for `object`.\n     */\n    function compareMultiple(object, other, orders) {\n      var index = -1,\n          objCriteria = object.criteria,\n          othCriteria = other.criteria,\n          length = objCriteria.length,\n          ordersLength = orders.length;\n\n      while (++index < length) {\n        var result = compareAscending(objCriteria[index], othCriteria[index]);\n        if (result) {\n          if (index >= ordersLength) {\n            return result;\n          }\n          var order = orders[index];\n          return result * (order == 'desc' ? -1 : 1);\n        }\n      }\n      // Fixes an `Array#sort` bug in the JS engine embedded in Adobe applications\n      // that causes it, under certain circumstances, to provide the same value for\n      // `object` and `other`. See https://github.com/jashkenas/underscore/pull/1247\n      // for more details.\n      //\n      // This also ensures a stable sort in V8 and other engines.\n      // See https://bugs.chromium.org/p/v8/issues/detail?id=90 for more details.\n      return object.index - other.index;\n    }\n\n    /**\n     * Creates an array that is the composition of partially applied arguments,\n     * placeholders, and provided arguments into a single array of arguments.\n     *\n     * @private\n     * @param {Array} args The provided arguments.\n     * @param {Array} partials The arguments to prepend to those provided.\n     * @param {Array} holders The `partials` placeholder indexes.\n     * @params {boolean} [isCurried] Specify composing for a curried function.\n     * @returns {Array} Returns the new array of composed arguments.\n     */\n    function composeArgs(args, partials, holders, isCurried) {\n      var argsIndex = -1,\n          argsLength = args.length,\n          holdersLength = holders.length,\n          leftIndex = -1,\n          leftLength = partials.length,\n          rangeLength = nativeMax(argsLength - holdersLength, 0),\n          result = Array(leftLength + rangeLength),\n          isUncurried = !isCurried;\n\n      while (++leftIndex < leftLength) {\n        result[leftIndex] = partials[leftIndex];\n      }\n      while (++argsIndex < holdersLength) {\n        if (isUncurried || argsIndex < argsLength) {\n          result[holders[argsIndex]] = args[argsIndex];\n        }\n      }\n      while (rangeLength--) {\n        result[leftIndex++] = args[argsIndex++];\n      }\n      return result;\n    }\n\n    /**\n     * This function is like `composeArgs` except that the arguments composition\n     * is tailored for `_.partialRight`.\n     *\n     * @private\n     * @param {Array} args The provided arguments.\n     * @param {Array} partials The arguments to append to those provided.\n     * @param {Array} holders The `partials` placeholder indexes.\n     * @params {boolean} [isCurried] Specify composing for a curried function.\n     * @returns {Array} Returns the new array of composed arguments.\n     */\n    function composeArgsRight(args, partials, holders, isCurried) {\n      var argsIndex = -1,\n          argsLength = args.length,\n          holdersIndex = -1,\n          holdersLength = holders.length,\n          rightIndex = -1,\n          rightLength = partials.length,\n          rangeLength = nativeMax(argsLength - holdersLength, 0),\n          result = Array(rangeLength + rightLength),\n          isUncurried = !isCurried;\n\n      while (++argsIndex < rangeLength) {\n        result[argsIndex] = args[argsIndex];\n      }\n      var offset = argsIndex;\n      while (++rightIndex < rightLength) {\n        result[offset + rightIndex] = partials[rightIndex];\n      }\n      while (++holdersIndex < holdersLength) {\n        if (isUncurried || argsIndex < argsLength) {\n          result[offset + holders[holdersIndex]] = args[argsIndex++];\n        }\n      }\n      return result;\n    }\n\n    /**\n     * Copies the values of `source` to `array`.\n     *\n     * @private\n     * @param {Array} source The array to copy values from.\n     * @param {Array} [array=[]] The array to copy values to.\n     * @returns {Array} Returns `array`.\n     */\n    function copyArray(source, array) {\n      var index = -1,\n          length = source.length;\n\n      array || (array = Array(length));\n      while (++index < length) {\n        array[index] = source[index];\n      }\n      return array;\n    }\n\n    /**\n     * Copies properties of `source` to `object`.\n     *\n     * @private\n     * @param {Object} source The object to copy properties from.\n     * @param {Array} props The property identifiers to copy.\n     * @param {Object} [object={}] The object to copy properties to.\n     * @param {Function} [customizer] The function to customize copied values.\n     * @returns {Object} Returns `object`.\n     */\n    function copyObject(source, props, object, customizer) {\n      var isNew = !object;\n      object || (object = {});\n\n      var index = -1,\n          length = props.length;\n\n      while (++index < length) {\n        var key = props[index];\n\n        var newValue = customizer\n          ? customizer(object[key], source[key], key, object, source)\n          : undefined;\n\n        if (newValue === undefined) {\n          newValue = source[key];\n        }\n        if (isNew) {\n          baseAssignValue(object, key, newValue);\n        } else {\n          assignValue(object, key, newValue);\n        }\n      }\n      return object;\n    }\n\n    /**\n     * Copies own symbols of `source` to `object`.\n     *\n     * @private\n     * @param {Object} source The object to copy symbols from.\n     * @param {Object} [object={}] The object to copy symbols to.\n     * @returns {Object} Returns `object`.\n     */\n    function copySymbols(source, object) {\n      return copyObject(source, getSymbols(source), object);\n    }\n\n    /**\n     * Copies own and inherited symbols of `source` to `object`.\n     *\n     * @private\n     * @param {Object} source The object to copy symbols from.\n     * @param {Object} [object={}] The object to copy symbols to.\n     * @returns {Object} Returns `object`.\n     */\n    function copySymbolsIn(source, object) {\n      return copyObject(source, getSymbolsIn(source), object);\n    }\n\n    /**\n     * Creates a function like `_.groupBy`.\n     *\n     * @private\n     * @param {Function} setter The function to set accumulator values.\n     * @param {Function} [initializer] The accumulator object initializer.\n     * @returns {Function} Returns the new aggregator function.\n     */\n    function createAggregator(setter, initializer) {\n      return function(collection, iteratee) {\n        var func = isArray(collection) ? arrayAggregator : baseAggregator,\n            accumulator = initializer ? initializer() : {};\n\n        return func(collection, setter, getIteratee(iteratee, 2), accumulator);\n      };\n    }\n\n    /**\n     * Creates a function like `_.assign`.\n     *\n     * @private\n     * @param {Function} assigner The function to assign values.\n     * @returns {Function} Returns the new assigner function.\n     */\n    function createAssigner(assigner) {\n      return baseRest(function(object, sources) {\n        var index = -1,\n            length = sources.length,\n            customizer = length > 1 ? sources[length - 1] : undefined,\n            guard = length > 2 ? sources[2] : undefined;\n\n        customizer = (assigner.length > 3 && typeof customizer == 'function')\n          ? (length--, customizer)\n          : undefined;\n\n        if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n          customizer = length < 3 ? undefined : customizer;\n          length = 1;\n        }\n        object = Object(object);\n        while (++index < length) {\n          var source = sources[index];\n          if (source) {\n            assigner(object, source, index, customizer);\n          }\n        }\n        return object;\n      });\n    }\n\n    /**\n     * Creates a `baseEach` or `baseEachRight` function.\n     *\n     * @private\n     * @param {Function} eachFunc The function to iterate over a collection.\n     * @param {boolean} [fromRight] Specify iterating from right to left.\n     * @returns {Function} Returns the new base function.\n     */\n    function createBaseEach(eachFunc, fromRight) {\n      return function(collection, iteratee) {\n        if (collection == null) {\n          return collection;\n        }\n        if (!isArrayLike(collection)) {\n          return eachFunc(collection, iteratee);\n        }\n        var length = collection.length,\n            index = fromRight ? length : -1,\n            iterable = Object(collection);\n\n        while ((fromRight ? index-- : ++index < length)) {\n          if (iteratee(iterable[index], index, iterable) === false) {\n            break;\n          }\n        }\n        return collection;\n      };\n    }\n\n    /**\n     * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n     *\n     * @private\n     * @param {boolean} [fromRight] Specify iterating from right to left.\n     * @returns {Function} Returns the new base function.\n     */\n    function createBaseFor(fromRight) {\n      return function(object, iteratee, keysFunc) {\n        var index = -1,\n            iterable = Object(object),\n            props = keysFunc(object),\n            length = props.length;\n\n        while (length--) {\n          var key = props[fromRight ? length : ++index];\n          if (iteratee(iterable[key], key, iterable) === false) {\n            break;\n          }\n        }\n        return object;\n      };\n    }\n\n    /**\n     * Creates a function that wraps `func` to invoke it with the optional `this`\n     * binding of `thisArg`.\n     *\n     * @private\n     * @param {Function} func The function to wrap.\n     * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n     * @param {*} [thisArg] The `this` binding of `func`.\n     * @returns {Function} Returns the new wrapped function.\n     */\n    function createBind(func, bitmask, thisArg) {\n      var isBind = bitmask & WRAP_BIND_FLAG,\n          Ctor = createCtor(func);\n\n      function wrapper() {\n        var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n        return fn.apply(isBind ? thisArg : this, arguments);\n      }\n      return wrapper;\n    }\n\n    /**\n     * Creates a function like `_.lowerFirst`.\n     *\n     * @private\n     * @param {string} methodName The name of the `String` case method to use.\n     * @returns {Function} Returns the new case function.\n     */\n    function createCaseFirst(methodName) {\n      return function(string) {\n        string = toString(string);\n\n        var strSymbols = hasUnicode(string)\n          ? stringToArray(string)\n          : undefined;\n\n        var chr = strSymbols\n          ? strSymbols[0]\n          : string.charAt(0);\n\n        var trailing = strSymbols\n          ? castSlice(strSymbols, 1).join('')\n          : string.slice(1);\n\n        return chr[methodName]() + trailing;\n      };\n    }\n\n    /**\n     * Creates a function like `_.camelCase`.\n     *\n     * @private\n     * @param {Function} callback The function to combine each word.\n     * @returns {Function} Returns the new compounder function.\n     */\n    function createCompounder(callback) {\n      return function(string) {\n        return arrayReduce(words(deburr(string).replace(reApos, '')), callback, '');\n      };\n    }\n\n    /**\n     * Creates a function that produces an instance of `Ctor` regardless of\n     * whether it was invoked as part of a `new` expression or by `call` or `apply`.\n     *\n     * @private\n     * @param {Function} Ctor The constructor to wrap.\n     * @returns {Function} Returns the new wrapped function.\n     */\n    function createCtor(Ctor) {\n      return function() {\n        // Use a `switch` statement to work with class constructors. See\n        // http://ecma-international.org/ecma-262/7.0/#sec-ecmascript-function-objects-call-thisargument-argumentslist\n        // for more details.\n        var args = arguments;\n        switch (args.length) {\n          case 0: return new Ctor;\n          case 1: return new Ctor(args[0]);\n          case 2: return new Ctor(args[0], args[1]);\n          case 3: return new Ctor(args[0], args[1], args[2]);\n          case 4: return new Ctor(args[0], args[1], args[2], args[3]);\n          case 5: return new Ctor(args[0], args[1], args[2], args[3], args[4]);\n          case 6: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5]);\n          case 7: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5], args[6]);\n        }\n        var thisBinding = baseCreate(Ctor.prototype),\n            result = Ctor.apply(thisBinding, args);\n\n        // Mimic the constructor's `return` behavior.\n        // See https://es5.github.io/#x13.2.2 for more details.\n        return isObject(result) ? result : thisBinding;\n      };\n    }\n\n    /**\n     * Creates a function that wraps `func` to enable currying.\n     *\n     * @private\n     * @param {Function} func The function to wrap.\n     * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n     * @param {number} arity The arity of `func`.\n     * @returns {Function} Returns the new wrapped function.\n     */\n    function createCurry(func, bitmask, arity) {\n      var Ctor = createCtor(func);\n\n      function wrapper() {\n        var length = arguments.length,\n            args = Array(length),\n            index = length,\n            placeholder = getHolder(wrapper);\n\n        while (index--) {\n          args[index] = arguments[index];\n        }\n        var holders = (length < 3 && args[0] !== placeholder && args[length - 1] !== placeholder)\n          ? []\n          : replaceHolders(args, placeholder);\n\n        length -= holders.length;\n        if (length < arity) {\n          return createRecurry(\n            func, bitmask, createHybrid, wrapper.placeholder, undefined,\n            args, holders, undefined, undefined, arity - length);\n        }\n        var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n        return apply(fn, this, args);\n      }\n      return wrapper;\n    }\n\n    /**\n     * Creates a `_.find` or `_.findLast` function.\n     *\n     * @private\n     * @param {Function} findIndexFunc The function to find the collection index.\n     * @returns {Function} Returns the new find function.\n     */\n    function createFind(findIndexFunc) {\n      return function(collection, predicate, fromIndex) {\n        var iterable = Object(collection);\n        if (!isArrayLike(collection)) {\n          var iteratee = getIteratee(predicate, 3);\n          collection = keys(collection);\n          predicate = function(key) { return iteratee(iterable[key], key, iterable); };\n        }\n        var index = findIndexFunc(collection, predicate, fromIndex);\n        return index > -1 ? iterable[iteratee ? collection[index] : index] : undefined;\n      };\n    }\n\n    /**\n     * Creates a `_.flow` or `_.flowRight` function.\n     *\n     * @private\n     * @param {boolean} [fromRight] Specify iterating from right to left.\n     * @returns {Function} Returns the new flow function.\n     */\n    function createFlow(fromRight) {\n      return flatRest(function(funcs) {\n        var length = funcs.length,\n            index = length,\n            prereq = LodashWrapper.prototype.thru;\n\n        if (fromRight) {\n          funcs.reverse();\n        }\n        while (index--) {\n          var func = funcs[index];\n          if (typeof func != 'function') {\n            throw new TypeError(FUNC_ERROR_TEXT);\n          }\n          if (prereq && !wrapper && getFuncName(func) == 'wrapper') {\n            var wrapper = new LodashWrapper([], true);\n          }\n        }\n        index = wrapper ? index : length;\n        while (++index < length) {\n          func = funcs[index];\n\n          var funcName = getFuncName(func),\n              data = funcName == 'wrapper' ? getData(func) : undefined;\n\n          if (data && isLaziable(data[0]) &&\n                data[1] == (WRAP_ARY_FLAG | WRAP_CURRY_FLAG | WRAP_PARTIAL_FLAG | WRAP_REARG_FLAG) &&\n                !data[4].length && data[9] == 1\n              ) {\n            wrapper = wrapper[getFuncName(data[0])].apply(wrapper, data[3]);\n          } else {\n            wrapper = (func.length == 1 && isLaziable(func))\n              ? wrapper[funcName]()\n              : wrapper.thru(func);\n          }\n        }\n        return function() {\n          var args = arguments,\n              value = args[0];\n\n          if (wrapper && args.length == 1 && isArray(value)) {\n            return wrapper.plant(value).value();\n          }\n          var index = 0,\n              result = length ? funcs[index].apply(this, args) : value;\n\n          while (++index < length) {\n            result = funcs[index].call(this, result);\n          }\n          return result;\n        };\n      });\n    }\n\n    /**\n     * Creates a function that wraps `func` to invoke it with optional `this`\n     * binding of `thisArg`, partial application, and currying.\n     *\n     * @private\n     * @param {Function|string} func The function or method name to wrap.\n     * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n     * @param {*} [thisArg] The `this` binding of `func`.\n     * @param {Array} [partials] The arguments to prepend to those provided to\n     *  the new function.\n     * @param {Array} [holders] The `partials` placeholder indexes.\n     * @param {Array} [partialsRight] The arguments to append to those provided\n     *  to the new function.\n     * @param {Array} [holdersRight] The `partialsRight` placeholder indexes.\n     * @param {Array} [argPos] The argument positions of the new function.\n     * @param {number} [ary] The arity cap of `func`.\n     * @param {number} [arity] The arity of `func`.\n     * @returns {Function} Returns the new wrapped function.\n     */\n    function createHybrid(func, bitmask, thisArg, partials, holders, partialsRight, holdersRight, argPos, ary, arity) {\n      var isAry = bitmask & WRAP_ARY_FLAG,\n          isBind = bitmask & WRAP_BIND_FLAG,\n          isBindKey = bitmask & WRAP_BIND_KEY_FLAG,\n          isCurried = bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG),\n          isFlip = bitmask & WRAP_FLIP_FLAG,\n          Ctor = isBindKey ? undefined : createCtor(func);\n\n      function wrapper() {\n        var length = arguments.length,\n            args = Array(length),\n            index = length;\n\n        while (index--) {\n          args[index] = arguments[index];\n        }\n        if (isCurried) {\n          var placeholder = getHolder(wrapper),\n              holdersCount = countHolders(args, placeholder);\n        }\n        if (partials) {\n          args = composeArgs(args, partials, holders, isCurried);\n        }\n        if (partialsRight) {\n          args = composeArgsRight(args, partialsRight, holdersRight, isCurried);\n        }\n        length -= holdersCount;\n        if (isCurried && length < arity) {\n          var newHolders = replaceHolders(args, placeholder);\n          return createRecurry(\n            func, bitmask, createHybrid, wrapper.placeholder, thisArg,\n            args, newHolders, argPos, ary, arity - length\n          );\n        }\n        var thisBinding = isBind ? thisArg : this,\n            fn = isBindKey ? thisBinding[func] : func;\n\n        length = args.length;\n        if (argPos) {\n          args = reorder(args, argPos);\n        } else if (isFlip && length > 1) {\n          args.reverse();\n        }\n        if (isAry && ary < length) {\n          args.length = ary;\n        }\n        if (this && this !== root && this instanceof wrapper) {\n          fn = Ctor || createCtor(fn);\n        }\n        return fn.apply(thisBinding, args);\n      }\n      return wrapper;\n    }\n\n    /**\n     * Creates a function like `_.invertBy`.\n     *\n     * @private\n     * @param {Function} setter The function to set accumulator values.\n     * @param {Function} toIteratee The function to resolve iteratees.\n     * @returns {Function} Returns the new inverter function.\n     */\n    function createInverter(setter, toIteratee) {\n      return function(object, iteratee) {\n        return baseInverter(object, setter, toIteratee(iteratee), {});\n      };\n    }\n\n    /**\n     * Creates a function that performs a mathematical operation on two values.\n     *\n     * @private\n     * @param {Function} operator The function to perform the operation.\n     * @param {number} [defaultValue] The value used for `undefined` arguments.\n     * @returns {Function} Returns the new mathematical operation function.\n     */\n    function createMathOperation(operator, defaultValue) {\n      return function(value, other) {\n        var result;\n        if (value === undefined && other === undefined) {\n          return defaultValue;\n        }\n        if (value !== undefined) {\n          result = value;\n        }\n        if (other !== undefined) {\n          if (result === undefined) {\n            return other;\n          }\n          if (typeof value == 'string' || typeof other == 'string') {\n            value = baseToString(value);\n            other = baseToString(other);\n          } else {\n            value = baseToNumber(value);\n            other = baseToNumber(other);\n          }\n          result = operator(value, other);\n        }\n        return result;\n      };\n    }\n\n    /**\n     * Creates a function like `_.over`.\n     *\n     * @private\n     * @param {Function} arrayFunc The function to iterate over iteratees.\n     * @returns {Function} Returns the new over function.\n     */\n    function createOver(arrayFunc) {\n      return flatRest(function(iteratees) {\n        iteratees = arrayMap(iteratees, baseUnary(getIteratee()));\n        return baseRest(function(args) {\n          var thisArg = this;\n          return arrayFunc(iteratees, function(iteratee) {\n            return apply(iteratee, thisArg, args);\n          });\n        });\n      });\n    }\n\n    /**\n     * Creates the padding for `string` based on `length`. The `chars` string\n     * is truncated if the number of characters exceeds `length`.\n     *\n     * @private\n     * @param {number} length The padding length.\n     * @param {string} [chars=' '] The string used as padding.\n     * @returns {string} Returns the padding for `string`.\n     */\n    function createPadding(length, chars) {\n      chars = chars === undefined ? ' ' : baseToString(chars);\n\n      var charsLength = chars.length;\n      if (charsLength < 2) {\n        return charsLength ? baseRepeat(chars, length) : chars;\n      }\n      var result = baseRepeat(chars, nativeCeil(length / stringSize(chars)));\n      return hasUnicode(chars)\n        ? castSlice(stringToArray(result), 0, length).join('')\n        : result.slice(0, length);\n    }\n\n    /**\n     * Creates a function that wraps `func` to invoke it with the `this` binding\n     * of `thisArg` and `partials` prepended to the arguments it receives.\n     *\n     * @private\n     * @param {Function} func The function to wrap.\n     * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n     * @param {*} thisArg The `this` binding of `func`.\n     * @param {Array} partials The arguments to prepend to those provided to\n     *  the new function.\n     * @returns {Function} Returns the new wrapped function.\n     */\n    function createPartial(func, bitmask, thisArg, partials) {\n      var isBind = bitmask & WRAP_BIND_FLAG,\n          Ctor = createCtor(func);\n\n      function wrapper() {\n        var argsIndex = -1,\n            argsLength = arguments.length,\n            leftIndex = -1,\n            leftLength = partials.length,\n            args = Array(leftLength + argsLength),\n            fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n\n        while (++leftIndex < leftLength) {\n          args[leftIndex] = partials[leftIndex];\n        }\n        while (argsLength--) {\n          args[leftIndex++] = arguments[++argsIndex];\n        }\n        return apply(fn, isBind ? thisArg : this, args);\n      }\n      return wrapper;\n    }\n\n    /**\n     * Creates a `_.range` or `_.rangeRight` function.\n     *\n     * @private\n     * @param {boolean} [fromRight] Specify iterating from right to left.\n     * @returns {Function} Returns the new range function.\n     */\n    function createRange(fromRight) {\n      return function(start, end, step) {\n        if (step && typeof step != 'number' && isIterateeCall(start, end, step)) {\n          end = step = undefined;\n        }\n        // Ensure the sign of `-0` is preserved.\n        start = toFinite(start);\n        if (end === undefined) {\n          end = start;\n          start = 0;\n        } else {\n          end = toFinite(end);\n        }\n        step = step === undefined ? (start < end ? 1 : -1) : toFinite(step);\n        return baseRange(start, end, step, fromRight);\n      };\n    }\n\n    /**\n     * Creates a function that performs a relational operation on two values.\n     *\n     * @private\n     * @param {Function} operator The function to perform the operation.\n     * @returns {Function} Returns the new relational operation function.\n     */\n    function createRelationalOperation(operator) {\n      return function(value, other) {\n        if (!(typeof value == 'string' && typeof other == 'string')) {\n          value = toNumber(value);\n          other = toNumber(other);\n        }\n        return operator(value, other);\n      };\n    }\n\n    /**\n     * Creates a function that wraps `func` to continue currying.\n     *\n     * @private\n     * @param {Function} func The function to wrap.\n     * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n     * @param {Function} wrapFunc The function to create the `func` wrapper.\n     * @param {*} placeholder The placeholder value.\n     * @param {*} [thisArg] The `this` binding of `func`.\n     * @param {Array} [partials] The arguments to prepend to those provided to\n     *  the new function.\n     * @param {Array} [holders] The `partials` placeholder indexes.\n     * @param {Array} [argPos] The argument positions of the new function.\n     * @param {number} [ary] The arity cap of `func`.\n     * @param {number} [arity] The arity of `func`.\n     * @returns {Function} Returns the new wrapped function.\n     */\n    function createRecurry(func, bitmask, wrapFunc, placeholder, thisArg, partials, holders, argPos, ary, arity) {\n      var isCurry = bitmask & WRAP_CURRY_FLAG,\n          newHolders = isCurry ? holders : undefined,\n          newHoldersRight = isCurry ? undefined : holders,\n          newPartials = isCurry ? partials : undefined,\n          newPartialsRight = isCurry ? undefined : partials;\n\n      bitmask |= (isCurry ? WRAP_PARTIAL_FLAG : WRAP_PARTIAL_RIGHT_FLAG);\n      bitmask &= ~(isCurry ? WRAP_PARTIAL_RIGHT_FLAG : WRAP_PARTIAL_FLAG);\n\n      if (!(bitmask & WRAP_CURRY_BOUND_FLAG)) {\n        bitmask &= ~(WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG);\n      }\n      var newData = [\n        func, bitmask, thisArg, newPartials, newHolders, newPartialsRight,\n        newHoldersRight, argPos, ary, arity\n      ];\n\n      var result = wrapFunc.apply(undefined, newData);\n      if (isLaziable(func)) {\n        setData(result, newData);\n      }\n      result.placeholder = placeholder;\n      return setWrapToString(result, func, bitmask);\n    }\n\n    /**\n     * Creates a function like `_.round`.\n     *\n     * @private\n     * @param {string} methodName The name of the `Math` method to use when rounding.\n     * @returns {Function} Returns the new round function.\n     */\n    function createRound(methodName) {\n      var func = Math[methodName];\n      return function(number, precision) {\n        number = toNumber(number);\n        precision = precision == null ? 0 : nativeMin(toInteger(precision), 292);\n        if (precision && nativeIsFinite(number)) {\n          // Shift with exponential notation to avoid floating-point issues.\n          // See [MDN](https://mdn.io/round#Examples) for more details.\n          var pair = (toString(number) + 'e').split('e'),\n              value = func(pair[0] + 'e' + (+pair[1] + precision));\n\n          pair = (toString(value) + 'e').split('e');\n          return +(pair[0] + 'e' + (+pair[1] - precision));\n        }\n        return func(number);\n      };\n    }\n\n    /**\n     * Creates a set object of `values`.\n     *\n     * @private\n     * @param {Array} values The values to add to the set.\n     * @returns {Object} Returns the new set.\n     */\n    var createSet = !(Set && (1 / setToArray(new Set([,-0]))[1]) == INFINITY) ? noop : function(values) {\n      return new Set(values);\n    };\n\n    /**\n     * Creates a `_.toPairs` or `_.toPairsIn` function.\n     *\n     * @private\n     * @param {Function} keysFunc The function to get the keys of a given object.\n     * @returns {Function} Returns the new pairs function.\n     */\n    function createToPairs(keysFunc) {\n      return function(object) {\n        var tag = getTag(object);\n        if (tag == mapTag) {\n          return mapToArray(object);\n        }\n        if (tag == setTag) {\n          return setToPairs(object);\n        }\n        return baseToPairs(object, keysFunc(object));\n      };\n    }\n\n    /**\n     * Creates a function that either curries or invokes `func` with optional\n     * `this` binding and partially applied arguments.\n     *\n     * @private\n     * @param {Function|string} func The function or method name to wrap.\n     * @param {number} bitmask The bitmask flags.\n     *    1 - `_.bind`\n     *    2 - `_.bindKey`\n     *    4 - `_.curry` or `_.curryRight` of a bound function\n     *    8 - `_.curry`\n     *   16 - `_.curryRight`\n     *   32 - `_.partial`\n     *   64 - `_.partialRight`\n     *  128 - `_.rearg`\n     *  256 - `_.ary`\n     *  512 - `_.flip`\n     * @param {*} [thisArg] The `this` binding of `func`.\n     * @param {Array} [partials] The arguments to be partially applied.\n     * @param {Array} [holders] The `partials` placeholder indexes.\n     * @param {Array} [argPos] The argument positions of the new function.\n     * @param {number} [ary] The arity cap of `func`.\n     * @param {number} [arity] The arity of `func`.\n     * @returns {Function} Returns the new wrapped function.\n     */\n    function createWrap(func, bitmask, thisArg, partials, holders, argPos, ary, arity) {\n      var isBindKey = bitmask & WRAP_BIND_KEY_FLAG;\n      if (!isBindKey && typeof func != 'function') {\n        throw new TypeError(FUNC_ERROR_TEXT);\n      }\n      var length = partials ? partials.length : 0;\n      if (!length) {\n        bitmask &= ~(WRAP_PARTIAL_FLAG | WRAP_PARTIAL_RIGHT_FLAG);\n        partials = holders = undefined;\n      }\n      ary = ary === undefined ? ary : nativeMax(toInteger(ary), 0);\n      arity = arity === undefined ? arity : toInteger(arity);\n      length -= holders ? holders.length : 0;\n\n      if (bitmask & WRAP_PARTIAL_RIGHT_FLAG) {\n        var partialsRight = partials,\n            holdersRight = holders;\n\n        partials = holders = undefined;\n      }\n      var data = isBindKey ? undefined : getData(func);\n\n      var newData = [\n        func, bitmask, thisArg, partials, holders, partialsRight, holdersRight,\n        argPos, ary, arity\n      ];\n\n      if (data) {\n        mergeData(newData, data);\n      }\n      func = newData[0];\n      bitmask = newData[1];\n      thisArg = newData[2];\n      partials = newData[3];\n      holders = newData[4];\n      arity = newData[9] = newData[9] === undefined\n        ? (isBindKey ? 0 : func.length)\n        : nativeMax(newData[9] - length, 0);\n\n      if (!arity && bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG)) {\n        bitmask &= ~(WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG);\n      }\n      if (!bitmask || bitmask == WRAP_BIND_FLAG) {\n        var result = createBind(func, bitmask, thisArg);\n      } else if (bitmask == WRAP_CURRY_FLAG || bitmask == WRAP_CURRY_RIGHT_FLAG) {\n        result = createCurry(func, bitmask, arity);\n      } else if ((bitmask == WRAP_PARTIAL_FLAG || bitmask == (WRAP_BIND_FLAG | WRAP_PARTIAL_FLAG)) && !holders.length) {\n        result = createPartial(func, bitmask, thisArg, partials);\n      } else {\n        result = createHybrid.apply(undefined, newData);\n      }\n      var setter = data ? baseSetData : setData;\n      return setWrapToString(setter(result, newData), func, bitmask);\n    }\n\n    /**\n     * Used by `_.defaults` to customize its `_.assignIn` use to assign properties\n     * of source objects to the destination object for all destination properties\n     * that resolve to `undefined`.\n     *\n     * @private\n     * @param {*} objValue The destination value.\n     * @param {*} srcValue The source value.\n     * @param {string} key The key of the property to assign.\n     * @param {Object} object The parent object of `objValue`.\n     * @returns {*} Returns the value to assign.\n     */\n    function customDefaultsAssignIn(objValue, srcValue, key, object) {\n      if (objValue === undefined ||\n          (eq(objValue, objectProto[key]) && !hasOwnProperty.call(object, key))) {\n        return srcValue;\n      }\n      return objValue;\n    }\n\n    /**\n     * Used by `_.defaultsDeep` to customize its `_.merge` use to merge source\n     * objects into destination objects that are passed thru.\n     *\n     * @private\n     * @param {*} objValue The destination value.\n     * @param {*} srcValue The source value.\n     * @param {string} key The key of the property to merge.\n     * @param {Object} object The parent object of `objValue`.\n     * @param {Object} source The parent object of `srcValue`.\n     * @param {Object} [stack] Tracks traversed source values and their merged\n     *  counterparts.\n     * @returns {*} Returns the value to assign.\n     */\n    function customDefaultsMerge(objValue, srcValue, key, object, source, stack) {\n      if (isObject(objValue) && isObject(srcValue)) {\n        // Recursively merge objects and arrays (susceptible to call stack limits).\n        stack.set(srcValue, objValue);\n        baseMerge(objValue, srcValue, undefined, customDefaultsMerge, stack);\n        stack['delete'](srcValue);\n      }\n      return objValue;\n    }\n\n    /**\n     * Used by `_.omit` to customize its `_.cloneDeep` use to only clone plain\n     * objects.\n     *\n     * @private\n     * @param {*} value The value to inspect.\n     * @param {string} key The key of the property to inspect.\n     * @returns {*} Returns the uncloned value or `undefined` to defer cloning to `_.cloneDeep`.\n     */\n    function customOmitClone(value) {\n      return isPlainObject(value) ? undefined : value;\n    }\n\n    /**\n     * A specialized version of `baseIsEqualDeep` for arrays with support for\n     * partial deep comparisons.\n     *\n     * @private\n     * @param {Array} array The array to compare.\n     * @param {Array} other The other array to compare.\n     * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n     * @param {Function} customizer The function to customize comparisons.\n     * @param {Function} equalFunc The function to determine equivalents of values.\n     * @param {Object} stack Tracks traversed `array` and `other` objects.\n     * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n     */\n    function equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n      var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n          arrLength = array.length,\n          othLength = other.length;\n\n      if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n        return false;\n      }\n      // Check that cyclic values are equal.\n      var arrStacked = stack.get(array);\n      var othStacked = stack.get(other);\n      if (arrStacked && othStacked) {\n        return arrStacked == other && othStacked == array;\n      }\n      var index = -1,\n          result = true,\n          seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n      stack.set(array, other);\n      stack.set(other, array);\n\n      // Ignore non-index properties.\n      while (++index < arrLength) {\n        var arrValue = array[index],\n            othValue = other[index];\n\n        if (customizer) {\n          var compared = isPartial\n            ? customizer(othValue, arrValue, index, other, array, stack)\n            : customizer(arrValue, othValue, index, array, other, stack);\n        }\n        if (compared !== undefined) {\n          if (compared) {\n            continue;\n          }\n          result = false;\n          break;\n        }\n        // Recursively compare arrays (susceptible to call stack limits).\n        if (seen) {\n          if (!arraySome(other, function(othValue, othIndex) {\n                if (!cacheHas(seen, othIndex) &&\n                    (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n                  return seen.push(othIndex);\n                }\n              })) {\n            result = false;\n            break;\n          }\n        } else if (!(\n              arrValue === othValue ||\n                equalFunc(arrValue, othValue, bitmask, customizer, stack)\n            )) {\n          result = false;\n          break;\n        }\n      }\n      stack['delete'](array);\n      stack['delete'](other);\n      return result;\n    }\n\n    /**\n     * A specialized version of `baseIsEqualDeep` for comparing objects of\n     * the same `toStringTag`.\n     *\n     * **Note:** This function only supports comparing values with tags of\n     * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n     *\n     * @private\n     * @param {Object} object The object to compare.\n     * @param {Object} other The other object to compare.\n     * @param {string} tag The `toStringTag` of the objects to compare.\n     * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n     * @param {Function} customizer The function to customize comparisons.\n     * @param {Function} equalFunc The function to determine equivalents of values.\n     * @param {Object} stack Tracks traversed `object` and `other` objects.\n     * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n     */\n    function equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n      switch (tag) {\n        case dataViewTag:\n          if ((object.byteLength != other.byteLength) ||\n              (object.byteOffset != other.byteOffset)) {\n            return false;\n          }\n          object = object.buffer;\n          other = other.buffer;\n\n        case arrayBufferTag:\n          if ((object.byteLength != other.byteLength) ||\n              !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n            return false;\n          }\n          return true;\n\n        case boolTag:\n        case dateTag:\n        case numberTag:\n          // Coerce booleans to `1` or `0` and dates to milliseconds.\n          // Invalid dates are coerced to `NaN`.\n          return eq(+object, +other);\n\n        case errorTag:\n          return object.name == other.name && object.message == other.message;\n\n        case regexpTag:\n        case stringTag:\n          // Coerce regexes to strings and treat strings, primitives and objects,\n          // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n          // for more details.\n          return object == (other + '');\n\n        case mapTag:\n          var convert = mapToArray;\n\n        case setTag:\n          var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n          convert || (convert = setToArray);\n\n          if (object.size != other.size && !isPartial) {\n            return false;\n          }\n          // Assume cyclic values are equal.\n          var stacked = stack.get(object);\n          if (stacked) {\n            return stacked == other;\n          }\n          bitmask |= COMPARE_UNORDERED_FLAG;\n\n          // Recursively compare objects (susceptible to call stack limits).\n          stack.set(object, other);\n          var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n          stack['delete'](object);\n          return result;\n\n        case symbolTag:\n          if (symbolValueOf) {\n            return symbolValueOf.call(object) == symbolValueOf.call(other);\n          }\n      }\n      return false;\n    }\n\n    /**\n     * A specialized version of `baseIsEqualDeep` for objects with support for\n     * partial deep comparisons.\n     *\n     * @private\n     * @param {Object} object The object to compare.\n     * @param {Object} other The other object to compare.\n     * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n     * @param {Function} customizer The function to customize comparisons.\n     * @param {Function} equalFunc The function to determine equivalents of values.\n     * @param {Object} stack Tracks traversed `object` and `other` objects.\n     * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n     */\n    function equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n      var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n          objProps = getAllKeys(object),\n          objLength = objProps.length,\n          othProps = getAllKeys(other),\n          othLength = othProps.length;\n\n      if (objLength != othLength && !isPartial) {\n        return false;\n      }\n      var index = objLength;\n      while (index--) {\n        var key = objProps[index];\n        if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n          return false;\n        }\n      }\n      // Check that cyclic values are equal.\n      var objStacked = stack.get(object);\n      var othStacked = stack.get(other);\n      if (objStacked && othStacked) {\n        return objStacked == other && othStacked == object;\n      }\n      var result = true;\n      stack.set(object, other);\n      stack.set(other, object);\n\n      var skipCtor = isPartial;\n      while (++index < objLength) {\n        key = objProps[index];\n        var objValue = object[key],\n            othValue = other[key];\n\n        if (customizer) {\n          var compared = isPartial\n            ? customizer(othValue, objValue, key, other, object, stack)\n            : customizer(objValue, othValue, key, object, other, stack);\n        }\n        // Recursively compare objects (susceptible to call stack limits).\n        if (!(compared === undefined\n              ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n              : compared\n            )) {\n          result = false;\n          break;\n        }\n        skipCtor || (skipCtor = key == 'constructor');\n      }\n      if (result && !skipCtor) {\n        var objCtor = object.constructor,\n            othCtor = other.constructor;\n\n        // Non `Object` object instances with different constructors are not equal.\n        if (objCtor != othCtor &&\n            ('constructor' in object && 'constructor' in other) &&\n            !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n              typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n          result = false;\n        }\n      }\n      stack['delete'](object);\n      stack['delete'](other);\n      return result;\n    }\n\n    /**\n     * A specialized version of `baseRest` which flattens the rest array.\n     *\n     * @private\n     * @param {Function} func The function to apply a rest parameter to.\n     * @returns {Function} Returns the new function.\n     */\n    function flatRest(func) {\n      return setToString(overRest(func, undefined, flatten), func + '');\n    }\n\n    /**\n     * Creates an array of own enumerable property names and symbols of `object`.\n     *\n     * @private\n     * @param {Object} object The object to query.\n     * @returns {Array} Returns the array of property names and symbols.\n     */\n    function getAllKeys(object) {\n      return baseGetAllKeys(object, keys, getSymbols);\n    }\n\n    /**\n     * Creates an array of own and inherited enumerable property names and\n     * symbols of `object`.\n     *\n     * @private\n     * @param {Object} object The object to query.\n     * @returns {Array} Returns the array of property names and symbols.\n     */\n    function getAllKeysIn(object) {\n      return baseGetAllKeys(object, keysIn, getSymbolsIn);\n    }\n\n    /**\n     * Gets metadata for `func`.\n     *\n     * @private\n     * @param {Function} func The function to query.\n     * @returns {*} Returns the metadata for `func`.\n     */\n    var getData = !metaMap ? noop : function(func) {\n      return metaMap.get(func);\n    };\n\n    /**\n     * Gets the name of `func`.\n     *\n     * @private\n     * @param {Function} func The function to query.\n     * @returns {string} Returns the function name.\n     */\n    function getFuncName(func) {\n      var result = (func.name + ''),\n          array = realNames[result],\n          length = hasOwnProperty.call(realNames, result) ? array.length : 0;\n\n      while (length--) {\n        var data = array[length],\n            otherFunc = data.func;\n        if (otherFunc == null || otherFunc == func) {\n          return data.name;\n        }\n      }\n      return result;\n    }\n\n    /**\n     * Gets the argument placeholder value for `func`.\n     *\n     * @private\n     * @param {Function} func The function to inspect.\n     * @returns {*} Returns the placeholder value.\n     */\n    function getHolder(func) {\n      var object = hasOwnProperty.call(lodash, 'placeholder') ? lodash : func;\n      return object.placeholder;\n    }\n\n    /**\n     * Gets the appropriate \"iteratee\" function. If `_.iteratee` is customized,\n     * this function returns the custom method, otherwise it returns `baseIteratee`.\n     * If arguments are provided, the chosen function is invoked with them and\n     * its result is returned.\n     *\n     * @private\n     * @param {*} [value] The value to convert to an iteratee.\n     * @param {number} [arity] The arity of the created iteratee.\n     * @returns {Function} Returns the chosen function or its result.\n     */\n    function getIteratee() {\n      var result = lodash.iteratee || iteratee;\n      result = result === iteratee ? baseIteratee : result;\n      return arguments.length ? result(arguments[0], arguments[1]) : result;\n    }\n\n    /**\n     * Gets the data for `map`.\n     *\n     * @private\n     * @param {Object} map The map to query.\n     * @param {string} key The reference key.\n     * @returns {*} Returns the map data.\n     */\n    function getMapData(map, key) {\n      var data = map.__data__;\n      return isKeyable(key)\n        ? data[typeof key == 'string' ? 'string' : 'hash']\n        : data.map;\n    }\n\n    /**\n     * Gets the property names, values, and compare flags of `object`.\n     *\n     * @private\n     * @param {Object} object The object to query.\n     * @returns {Array} Returns the match data of `object`.\n     */\n    function getMatchData(object) {\n      var result = keys(object),\n          length = result.length;\n\n      while (length--) {\n        var key = result[length],\n            value = object[key];\n\n        result[length] = [key, value, isStrictComparable(value)];\n      }\n      return result;\n    }\n\n    /**\n     * Gets the native function at `key` of `object`.\n     *\n     * @private\n     * @param {Object} object The object to query.\n     * @param {string} key The key of the method to get.\n     * @returns {*} Returns the function if it's native, else `undefined`.\n     */\n    function getNative(object, key) {\n      var value = getValue(object, key);\n      return baseIsNative(value) ? value : undefined;\n    }\n\n    /**\n     * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n     *\n     * @private\n     * @param {*} value The value to query.\n     * @returns {string} Returns the raw `toStringTag`.\n     */\n    function getRawTag(value) {\n      var isOwn = hasOwnProperty.call(value, symToStringTag),\n          tag = value[symToStringTag];\n\n      try {\n        value[symToStringTag] = undefined;\n        var unmasked = true;\n      } catch (e) {}\n\n      var result = nativeObjectToString.call(value);\n      if (unmasked) {\n        if (isOwn) {\n          value[symToStringTag] = tag;\n        } else {\n          delete value[symToStringTag];\n        }\n      }\n      return result;\n    }\n\n    /**\n     * Creates an array of the own enumerable symbols of `object`.\n     *\n     * @private\n     * @param {Object} object The object to query.\n     * @returns {Array} Returns the array of symbols.\n     */\n    var getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n      if (object == null) {\n        return [];\n      }\n      object = Object(object);\n      return arrayFilter(nativeGetSymbols(object), function(symbol) {\n        return propertyIsEnumerable.call(object, symbol);\n      });\n    };\n\n    /**\n     * Creates an array of the own and inherited enumerable symbols of `object`.\n     *\n     * @private\n     * @param {Object} object The object to query.\n     * @returns {Array} Returns the array of symbols.\n     */\n    var getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) {\n      var result = [];\n      while (object) {\n        arrayPush(result, getSymbols(object));\n        object = getPrototype(object);\n      }\n      return result;\n    };\n\n    /**\n     * Gets the `toStringTag` of `value`.\n     *\n     * @private\n     * @param {*} value The value to query.\n     * @returns {string} Returns the `toStringTag`.\n     */\n    var getTag = baseGetTag;\n\n    // Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\n    if ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n        (Map && getTag(new Map) != mapTag) ||\n        (Promise && getTag(Promise.resolve()) != promiseTag) ||\n        (Set && getTag(new Set) != setTag) ||\n        (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n      getTag = function(value) {\n        var result = baseGetTag(value),\n            Ctor = result == objectTag ? value.constructor : undefined,\n            ctorString = Ctor ? toSource(Ctor) : '';\n\n        if (ctorString) {\n          switch (ctorString) {\n            case dataViewCtorString: return dataViewTag;\n            case mapCtorString: return mapTag;\n            case promiseCtorString: return promiseTag;\n            case setCtorString: return setTag;\n            case weakMapCtorString: return weakMapTag;\n          }\n        }\n        return result;\n      };\n    }\n\n    /**\n     * Gets the view, applying any `transforms` to the `start` and `end` positions.\n     *\n     * @private\n     * @param {number} start The start of the view.\n     * @param {number} end The end of the view.\n     * @param {Array} transforms The transformations to apply to the view.\n     * @returns {Object} Returns an object containing the `start` and `end`\n     *  positions of the view.\n     */\n    function getView(start, end, transforms) {\n      var index = -1,\n          length = transforms.length;\n\n      while (++index < length) {\n        var data = transforms[index],\n            size = data.size;\n\n        switch (data.type) {\n          case 'drop':      start += size; break;\n          case 'dropRight': end -= size; break;\n          case 'take':      end = nativeMin(end, start + size); break;\n          case 'takeRight': start = nativeMax(start, end - size); break;\n        }\n      }\n      return { 'start': start, 'end': end };\n    }\n\n    /**\n     * Extracts wrapper details from the `source` body comment.\n     *\n     * @private\n     * @param {string} source The source to inspect.\n     * @returns {Array} Returns the wrapper details.\n     */\n    function getWrapDetails(source) {\n      var match = source.match(reWrapDetails);\n      return match ? match[1].split(reSplitDetails) : [];\n    }\n\n    /**\n     * Checks if `path` exists on `object`.\n     *\n     * @private\n     * @param {Object} object The object to query.\n     * @param {Array|string} path The path to check.\n     * @param {Function} hasFunc The function to check properties.\n     * @returns {boolean} Returns `true` if `path` exists, else `false`.\n     */\n    function hasPath(object, path, hasFunc) {\n      path = castPath(path, object);\n\n      var index = -1,\n          length = path.length,\n          result = false;\n\n      while (++index < length) {\n        var key = toKey(path[index]);\n        if (!(result = object != null && hasFunc(object, key))) {\n          break;\n        }\n        object = object[key];\n      }\n      if (result || ++index != length) {\n        return result;\n      }\n      length = object == null ? 0 : object.length;\n      return !!length && isLength(length) && isIndex(key, length) &&\n        (isArray(object) || isArguments(object));\n    }\n\n    /**\n     * Initializes an array clone.\n     *\n     * @private\n     * @param {Array} array The array to clone.\n     * @returns {Array} Returns the initialized clone.\n     */\n    function initCloneArray(array) {\n      var length = array.length,\n          result = new array.constructor(length);\n\n      // Add properties assigned by `RegExp#exec`.\n      if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {\n        result.index = array.index;\n        result.input = array.input;\n      }\n      return result;\n    }\n\n    /**\n     * Initializes an object clone.\n     *\n     * @private\n     * @param {Object} object The object to clone.\n     * @returns {Object} Returns the initialized clone.\n     */\n    function initCloneObject(object) {\n      return (typeof object.constructor == 'function' && !isPrototype(object))\n        ? baseCreate(getPrototype(object))\n        : {};\n    }\n\n    /**\n     * Initializes an object clone based on its `toStringTag`.\n     *\n     * **Note:** This function only supports cloning values with tags of\n     * `Boolean`, `Date`, `Error`, `Map`, `Number`, `RegExp`, `Set`, or `String`.\n     *\n     * @private\n     * @param {Object} object The object to clone.\n     * @param {string} tag The `toStringTag` of the object to clone.\n     * @param {boolean} [isDeep] Specify a deep clone.\n     * @returns {Object} Returns the initialized clone.\n     */\n    function initCloneByTag(object, tag, isDeep) {\n      var Ctor = object.constructor;\n      switch (tag) {\n        case arrayBufferTag:\n          return cloneArrayBuffer(object);\n\n        case boolTag:\n        case dateTag:\n          return new Ctor(+object);\n\n        case dataViewTag:\n          return cloneDataView(object, isDeep);\n\n        case float32Tag: case float64Tag:\n        case int8Tag: case int16Tag: case int32Tag:\n        case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:\n          return cloneTypedArray(object, isDeep);\n\n        case mapTag:\n          return new Ctor;\n\n        case numberTag:\n        case stringTag:\n          return new Ctor(object);\n\n        case regexpTag:\n          return cloneRegExp(object);\n\n        case setTag:\n          return new Ctor;\n\n        case symbolTag:\n          return cloneSymbol(object);\n      }\n    }\n\n    /**\n     * Inserts wrapper `details` in a comment at the top of the `source` body.\n     *\n     * @private\n     * @param {string} source The source to modify.\n     * @returns {Array} details The details to insert.\n     * @returns {string} Returns the modified source.\n     */\n    function insertWrapDetails(source, details) {\n      var length = details.length;\n      if (!length) {\n        return source;\n      }\n      var lastIndex = length - 1;\n      details[lastIndex] = (length > 1 ? '& ' : '') + details[lastIndex];\n      details = details.join(length > 2 ? ', ' : ' ');\n      return source.replace(reWrapComment, '{\\n/* [wrapped with ' + details + '] */\\n');\n    }\n\n    /**\n     * Checks if `value` is a flattenable `arguments` object or array.\n     *\n     * @private\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is flattenable, else `false`.\n     */\n    function isFlattenable(value) {\n      return isArray(value) || isArguments(value) ||\n        !!(spreadableSymbol && value && value[spreadableSymbol]);\n    }\n\n    /**\n     * Checks if `value` is a valid array-like index.\n     *\n     * @private\n     * @param {*} value The value to check.\n     * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n     * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n     */\n    function isIndex(value, length) {\n      var type = typeof value;\n      length = length == null ? MAX_SAFE_INTEGER : length;\n\n      return !!length &&\n        (type == 'number' ||\n          (type != 'symbol' && reIsUint.test(value))) &&\n            (value > -1 && value % 1 == 0 && value < length);\n    }\n\n    /**\n     * Checks if the given arguments are from an iteratee call.\n     *\n     * @private\n     * @param {*} value The potential iteratee value argument.\n     * @param {*} index The potential iteratee index or key argument.\n     * @param {*} object The potential iteratee object argument.\n     * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n     *  else `false`.\n     */\n    function isIterateeCall(value, index, object) {\n      if (!isObject(object)) {\n        return false;\n      }\n      var type = typeof index;\n      if (type == 'number'\n            ? (isArrayLike(object) && isIndex(index, object.length))\n            : (type == 'string' && index in object)\n          ) {\n        return eq(object[index], value);\n      }\n      return false;\n    }\n\n    /**\n     * Checks if `value` is a property name and not a property path.\n     *\n     * @private\n     * @param {*} value The value to check.\n     * @param {Object} [object] The object to query keys on.\n     * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n     */\n    function isKey(value, object) {\n      if (isArray(value)) {\n        return false;\n      }\n      var type = typeof value;\n      if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n          value == null || isSymbol(value)) {\n        return true;\n      }\n      return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n        (object != null && value in Object(object));\n    }\n\n    /**\n     * Checks if `value` is suitable for use as unique object key.\n     *\n     * @private\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n     */\n    function isKeyable(value) {\n      var type = typeof value;\n      return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n        ? (value !== '__proto__')\n        : (value === null);\n    }\n\n    /**\n     * Checks if `func` has a lazy counterpart.\n     *\n     * @private\n     * @param {Function} func The function to check.\n     * @returns {boolean} Returns `true` if `func` has a lazy counterpart,\n     *  else `false`.\n     */\n    function isLaziable(func) {\n      var funcName = getFuncName(func),\n          other = lodash[funcName];\n\n      if (typeof other != 'function' || !(funcName in LazyWrapper.prototype)) {\n        return false;\n      }\n      if (func === other) {\n        return true;\n      }\n      var data = getData(other);\n      return !!data && func === data[0];\n    }\n\n    /**\n     * Checks if `func` has its source masked.\n     *\n     * @private\n     * @param {Function} func The function to check.\n     * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n     */\n    function isMasked(func) {\n      return !!maskSrcKey && (maskSrcKey in func);\n    }\n\n    /**\n     * Checks if `func` is capable of being masked.\n     *\n     * @private\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `func` is maskable, else `false`.\n     */\n    var isMaskable = coreJsData ? isFunction : stubFalse;\n\n    /**\n     * Checks if `value` is likely a prototype object.\n     *\n     * @private\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n     */\n    function isPrototype(value) {\n      var Ctor = value && value.constructor,\n          proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n      return value === proto;\n    }\n\n    /**\n     * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.\n     *\n     * @private\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` if suitable for strict\n     *  equality comparisons, else `false`.\n     */\n    function isStrictComparable(value) {\n      return value === value && !isObject(value);\n    }\n\n    /**\n     * A specialized version of `matchesProperty` for source values suitable\n     * for strict equality comparisons, i.e. `===`.\n     *\n     * @private\n     * @param {string} key The key of the property to get.\n     * @param {*} srcValue The value to match.\n     * @returns {Function} Returns the new spec function.\n     */\n    function matchesStrictComparable(key, srcValue) {\n      return function(object) {\n        if (object == null) {\n          return false;\n        }\n        return object[key] === srcValue &&\n          (srcValue !== undefined || (key in Object(object)));\n      };\n    }\n\n    /**\n     * A specialized version of `_.memoize` which clears the memoized function's\n     * cache when it exceeds `MAX_MEMOIZE_SIZE`.\n     *\n     * @private\n     * @param {Function} func The function to have its output memoized.\n     * @returns {Function} Returns the new memoized function.\n     */\n    function memoizeCapped(func) {\n      var result = memoize(func, function(key) {\n        if (cache.size === MAX_MEMOIZE_SIZE) {\n          cache.clear();\n        }\n        return key;\n      });\n\n      var cache = result.cache;\n      return result;\n    }\n\n    /**\n     * Merges the function metadata of `source` into `data`.\n     *\n     * Merging metadata reduces the number of wrappers used to invoke a function.\n     * This is possible because methods like `_.bind`, `_.curry`, and `_.partial`\n     * may be applied regardless of execution order. Methods like `_.ary` and\n     * `_.rearg` modify function arguments, making the order in which they are\n     * executed important, preventing the merging of metadata. However, we make\n     * an exception for a safe combined case where curried functions have `_.ary`\n     * and or `_.rearg` applied.\n     *\n     * @private\n     * @param {Array} data The destination metadata.\n     * @param {Array} source The source metadata.\n     * @returns {Array} Returns `data`.\n     */\n    function mergeData(data, source) {\n      var bitmask = data[1],\n          srcBitmask = source[1],\n          newBitmask = bitmask | srcBitmask,\n          isCommon = newBitmask < (WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG | WRAP_ARY_FLAG);\n\n      var isCombo =\n        ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_CURRY_FLAG)) ||\n        ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_REARG_FLAG) && (data[7].length <= source[8])) ||\n        ((srcBitmask == (WRAP_ARY_FLAG | WRAP_REARG_FLAG)) && (source[7].length <= source[8]) && (bitmask == WRAP_CURRY_FLAG));\n\n      // Exit early if metadata can't be merged.\n      if (!(isCommon || isCombo)) {\n        return data;\n      }\n      // Use source `thisArg` if available.\n      if (srcBitmask & WRAP_BIND_FLAG) {\n        data[2] = source[2];\n        // Set when currying a bound function.\n        newBitmask |= bitmask & WRAP_BIND_FLAG ? 0 : WRAP_CURRY_BOUND_FLAG;\n      }\n      // Compose partial arguments.\n      var value = source[3];\n      if (value) {\n        var partials = data[3];\n        data[3] = partials ? composeArgs(partials, value, source[4]) : value;\n        data[4] = partials ? replaceHolders(data[3], PLACEHOLDER) : source[4];\n      }\n      // Compose partial right arguments.\n      value = source[5];\n      if (value) {\n        partials = data[5];\n        data[5] = partials ? composeArgsRight(partials, value, source[6]) : value;\n        data[6] = partials ? replaceHolders(data[5], PLACEHOLDER) : source[6];\n      }\n      // Use source `argPos` if available.\n      value = source[7];\n      if (value) {\n        data[7] = value;\n      }\n      // Use source `ary` if it's smaller.\n      if (srcBitmask & WRAP_ARY_FLAG) {\n        data[8] = data[8] == null ? source[8] : nativeMin(data[8], source[8]);\n      }\n      // Use source `arity` if one is not provided.\n      if (data[9] == null) {\n        data[9] = source[9];\n      }\n      // Use source `func` and merge bitmasks.\n      data[0] = source[0];\n      data[1] = newBitmask;\n\n      return data;\n    }\n\n    /**\n     * This function is like\n     * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n     * except that it includes inherited enumerable properties.\n     *\n     * @private\n     * @param {Object} object The object to query.\n     * @returns {Array} Returns the array of property names.\n     */\n    function nativeKeysIn(object) {\n      var result = [];\n      if (object != null) {\n        for (var key in Object(object)) {\n          result.push(key);\n        }\n      }\n      return result;\n    }\n\n    /**\n     * Converts `value` to a string using `Object.prototype.toString`.\n     *\n     * @private\n     * @param {*} value The value to convert.\n     * @returns {string} Returns the converted string.\n     */\n    function objectToString(value) {\n      return nativeObjectToString.call(value);\n    }\n\n    /**\n     * A specialized version of `baseRest` which transforms the rest array.\n     *\n     * @private\n     * @param {Function} func The function to apply a rest parameter to.\n     * @param {number} [start=func.length-1] The start position of the rest parameter.\n     * @param {Function} transform The rest array transform.\n     * @returns {Function} Returns the new function.\n     */\n    function overRest(func, start, transform) {\n      start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n      return function() {\n        var args = arguments,\n            index = -1,\n            length = nativeMax(args.length - start, 0),\n            array = Array(length);\n\n        while (++index < length) {\n          array[index] = args[start + index];\n        }\n        index = -1;\n        var otherArgs = Array(start + 1);\n        while (++index < start) {\n          otherArgs[index] = args[index];\n        }\n        otherArgs[start] = transform(array);\n        return apply(func, this, otherArgs);\n      };\n    }\n\n    /**\n     * Gets the parent value at `path` of `object`.\n     *\n     * @private\n     * @param {Object} object The object to query.\n     * @param {Array} path The path to get the parent value of.\n     * @returns {*} Returns the parent value.\n     */\n    function parent(object, path) {\n      return path.length < 2 ? object : baseGet(object, baseSlice(path, 0, -1));\n    }\n\n    /**\n     * Reorder `array` according to the specified indexes where the element at\n     * the first index is assigned as the first element, the element at\n     * the second index is assigned as the second element, and so on.\n     *\n     * @private\n     * @param {Array} array The array to reorder.\n     * @param {Array} indexes The arranged array indexes.\n     * @returns {Array} Returns `array`.\n     */\n    function reorder(array, indexes) {\n      var arrLength = array.length,\n          length = nativeMin(indexes.length, arrLength),\n          oldArray = copyArray(array);\n\n      while (length--) {\n        var index = indexes[length];\n        array[length] = isIndex(index, arrLength) ? oldArray[index] : undefined;\n      }\n      return array;\n    }\n\n    /**\n     * Gets the value at `key`, unless `key` is \"__proto__\" or \"constructor\".\n     *\n     * @private\n     * @param {Object} object The object to query.\n     * @param {string} key The key of the property to get.\n     * @returns {*} Returns the property value.\n     */\n    function safeGet(object, key) {\n      if (key === 'constructor' && typeof object[key] === 'function') {\n        return;\n      }\n\n      if (key == '__proto__') {\n        return;\n      }\n\n      return object[key];\n    }\n\n    /**\n     * Sets metadata for `func`.\n     *\n     * **Note:** If this function becomes hot, i.e. is invoked a lot in a short\n     * period of time, it will trip its breaker and transition to an identity\n     * function to avoid garbage collection pauses in V8. See\n     * [V8 issue 2070](https://bugs.chromium.org/p/v8/issues/detail?id=2070)\n     * for more details.\n     *\n     * @private\n     * @param {Function} func The function to associate metadata with.\n     * @param {*} data The metadata.\n     * @returns {Function} Returns `func`.\n     */\n    var setData = shortOut(baseSetData);\n\n    /**\n     * A simple wrapper around the global [`setTimeout`](https://mdn.io/setTimeout).\n     *\n     * @private\n     * @param {Function} func The function to delay.\n     * @param {number} wait The number of milliseconds to delay invocation.\n     * @returns {number|Object} Returns the timer id or timeout object.\n     */\n    var setTimeout = ctxSetTimeout || function(func, wait) {\n      return root.setTimeout(func, wait);\n    };\n\n    /**\n     * Sets the `toString` method of `func` to return `string`.\n     *\n     * @private\n     * @param {Function} func The function to modify.\n     * @param {Function} string The `toString` result.\n     * @returns {Function} Returns `func`.\n     */\n    var setToString = shortOut(baseSetToString);\n\n    /**\n     * Sets the `toString` method of `wrapper` to mimic the source of `reference`\n     * with wrapper details in a comment at the top of the source body.\n     *\n     * @private\n     * @param {Function} wrapper The function to modify.\n     * @param {Function} reference The reference function.\n     * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n     * @returns {Function} Returns `wrapper`.\n     */\n    function setWrapToString(wrapper, reference, bitmask) {\n      var source = (reference + '');\n      return setToString(wrapper, insertWrapDetails(source, updateWrapDetails(getWrapDetails(source), bitmask)));\n    }\n\n    /**\n     * Creates a function that'll short out and invoke `identity` instead\n     * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`\n     * milliseconds.\n     *\n     * @private\n     * @param {Function} func The function to restrict.\n     * @returns {Function} Returns the new shortable function.\n     */\n    function shortOut(func) {\n      var count = 0,\n          lastCalled = 0;\n\n      return function() {\n        var stamp = nativeNow(),\n            remaining = HOT_SPAN - (stamp - lastCalled);\n\n        lastCalled = stamp;\n        if (remaining > 0) {\n          if (++count >= HOT_COUNT) {\n            return arguments[0];\n          }\n        } else {\n          count = 0;\n        }\n        return func.apply(undefined, arguments);\n      };\n    }\n\n    /**\n     * A specialized version of `_.shuffle` which mutates and sets the size of `array`.\n     *\n     * @private\n     * @param {Array} array The array to shuffle.\n     * @param {number} [size=array.length] The size of `array`.\n     * @returns {Array} Returns `array`.\n     */\n    function shuffleSelf(array, size) {\n      var index = -1,\n          length = array.length,\n          lastIndex = length - 1;\n\n      size = size === undefined ? length : size;\n      while (++index < size) {\n        var rand = baseRandom(index, lastIndex),\n            value = array[rand];\n\n        array[rand] = array[index];\n        array[index] = value;\n      }\n      array.length = size;\n      return array;\n    }\n\n    /**\n     * Converts `string` to a property path array.\n     *\n     * @private\n     * @param {string} string The string to convert.\n     * @returns {Array} Returns the property path array.\n     */\n    var stringToPath = memoizeCapped(function(string) {\n      var result = [];\n      if (string.charCodeAt(0) === 46 /* . */) {\n        result.push('');\n      }\n      string.replace(rePropName, function(match, number, quote, subString) {\n        result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match));\n      });\n      return result;\n    });\n\n    /**\n     * Converts `value` to a string key if it's not a string or symbol.\n     *\n     * @private\n     * @param {*} value The value to inspect.\n     * @returns {string|symbol} Returns the key.\n     */\n    function toKey(value) {\n      if (typeof value == 'string' || isSymbol(value)) {\n        return value;\n      }\n      var result = (value + '');\n      return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n    }\n\n    /**\n     * Converts `func` to its source code.\n     *\n     * @private\n     * @param {Function} func The function to convert.\n     * @returns {string} Returns the source code.\n     */\n    function toSource(func) {\n      if (func != null) {\n        try {\n          return funcToString.call(func);\n        } catch (e) {}\n        try {\n          return (func + '');\n        } catch (e) {}\n      }\n      return '';\n    }\n\n    /**\n     * Updates wrapper `details` based on `bitmask` flags.\n     *\n     * @private\n     * @returns {Array} details The details to modify.\n     * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n     * @returns {Array} Returns `details`.\n     */\n    function updateWrapDetails(details, bitmask) {\n      arrayEach(wrapFlags, function(pair) {\n        var value = '_.' + pair[0];\n        if ((bitmask & pair[1]) && !arrayIncludes(details, value)) {\n          details.push(value);\n        }\n      });\n      return details.sort();\n    }\n\n    /**\n     * Creates a clone of `wrapper`.\n     *\n     * @private\n     * @param {Object} wrapper The wrapper to clone.\n     * @returns {Object} Returns the cloned wrapper.\n     */\n    function wrapperClone(wrapper) {\n      if (wrapper instanceof LazyWrapper) {\n        return wrapper.clone();\n      }\n      var result = new LodashWrapper(wrapper.__wrapped__, wrapper.__chain__);\n      result.__actions__ = copyArray(wrapper.__actions__);\n      result.__index__  = wrapper.__index__;\n      result.__values__ = wrapper.__values__;\n      return result;\n    }\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     * Creates an array of elements split into groups the length of `size`.\n     * If `array` can't be split evenly, the final chunk will be the remaining\n     * elements.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Array\n     * @param {Array} array The array to process.\n     * @param {number} [size=1] The length of each chunk\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n     * @returns {Array} Returns the new array of chunks.\n     * @example\n     *\n     * _.chunk(['a', 'b', 'c', 'd'], 2);\n     * // => [['a', 'b'], ['c', 'd']]\n     *\n     * _.chunk(['a', 'b', 'c', 'd'], 3);\n     * // => [['a', 'b', 'c'], ['d']]\n     */\n    function chunk(array, size, guard) {\n      if ((guard ? isIterateeCall(array, size, guard) : size === undefined)) {\n        size = 1;\n      } else {\n        size = nativeMax(toInteger(size), 0);\n      }\n      var length = array == null ? 0 : array.length;\n      if (!length || size < 1) {\n        return [];\n      }\n      var index = 0,\n          resIndex = 0,\n          result = Array(nativeCeil(length / size));\n\n      while (index < length) {\n        result[resIndex++] = baseSlice(array, index, (index += size));\n      }\n      return result;\n    }\n\n    /**\n     * Creates an array with all falsey values removed. The values `false`, `null`,\n     * `0`, `-0`, `0n`, `\"\"`, `undefined`, and `NaN` are falsy.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Array\n     * @param {Array} array The array to compact.\n     * @returns {Array} Returns the new array of filtered values.\n     * @example\n     *\n     * _.compact([0, 1, false, 2, '', 3]);\n     * // => [1, 2, 3]\n     */\n    function compact(array) {\n      var index = -1,\n          length = array == null ? 0 : array.length,\n          resIndex = 0,\n          result = [];\n\n      while (++index < length) {\n        var value = array[index];\n        if (value) {\n          result[resIndex++] = value;\n        }\n      }\n      return result;\n    }\n\n    /**\n     * Creates a new array concatenating `array` with any additional arrays\n     * and/or values.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {Array} array The array to concatenate.\n     * @param {...*} [values] The values to concatenate.\n     * @returns {Array} Returns the new concatenated array.\n     * @example\n     *\n     * var array = [1];\n     * var other = _.concat(array, 2, [3], [[4]]);\n     *\n     * console.log(other);\n     * // => [1, 2, 3, [4]]\n     *\n     * console.log(array);\n     * // => [1]\n     */\n    function concat() {\n      var length = arguments.length;\n      if (!length) {\n        return [];\n      }\n      var args = Array(length - 1),\n          array = arguments[0],\n          index = length;\n\n      while (index--) {\n        args[index - 1] = arguments[index];\n      }\n      return arrayPush(isArray(array) ? copyArray(array) : [array], baseFlatten(args, 1));\n    }\n\n    /**\n     * Creates an array of `array` values not included in the other given arrays\n     * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n     * for equality comparisons. The order and references of result values are\n     * determined by the first array.\n     *\n     * **Note:** Unlike `_.pullAll`, this method returns a new array.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Array\n     * @param {Array} array The array to inspect.\n     * @param {...Array} [values] The values to exclude.\n     * @returns {Array} Returns the new array of filtered values.\n     * @see _.without, _.xor\n     * @example\n     *\n     * _.difference([2, 1], [2, 3]);\n     * // => [1]\n     */\n    var difference = baseRest(function(array, values) {\n      return isArrayLikeObject(array)\n        ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true))\n        : [];\n    });\n\n    /**\n     * This method is like `_.difference` except that it accepts `iteratee` which\n     * is invoked for each element of `array` and `values` to generate the criterion\n     * by which they're compared. The order and references of result values are\n     * determined by the first array. The iteratee is invoked with one argument:\n     * (value).\n     *\n     * **Note:** Unlike `_.pullAllBy`, this method returns a new array.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {Array} array The array to inspect.\n     * @param {...Array} [values] The values to exclude.\n     * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n     * @returns {Array} Returns the new array of filtered values.\n     * @example\n     *\n     * _.differenceBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n     * // => [1.2]\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.differenceBy([{ 'x': 2 }, { 'x': 1 }], [{ 'x': 1 }], 'x');\n     * // => [{ 'x': 2 }]\n     */\n    var differenceBy = baseRest(function(array, values) {\n      var iteratee = last(values);\n      if (isArrayLikeObject(iteratee)) {\n        iteratee = undefined;\n      }\n      return isArrayLikeObject(array)\n        ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), getIteratee(iteratee, 2))\n        : [];\n    });\n\n    /**\n     * This method is like `_.difference` except that it accepts `comparator`\n     * which is invoked to compare elements of `array` to `values`. The order and\n     * references of result values are determined by the first array. The comparator\n     * is invoked with two arguments: (arrVal, othVal).\n     *\n     * **Note:** Unlike `_.pullAllWith`, this method returns a new array.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {Array} array The array to inspect.\n     * @param {...Array} [values] The values to exclude.\n     * @param {Function} [comparator] The comparator invoked per element.\n     * @returns {Array} Returns the new array of filtered values.\n     * @example\n     *\n     * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n     *\n     * _.differenceWith(objects, [{ 'x': 1, 'y': 2 }], _.isEqual);\n     * // => [{ 'x': 2, 'y': 1 }]\n     */\n    var differenceWith = baseRest(function(array, values) {\n      var comparator = last(values);\n      if (isArrayLikeObject(comparator)) {\n        comparator = undefined;\n      }\n      return isArrayLikeObject(array)\n        ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), undefined, comparator)\n        : [];\n    });\n\n    /**\n     * Creates a slice of `array` with `n` elements dropped from the beginning.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.5.0\n     * @category Array\n     * @param {Array} array The array to query.\n     * @param {number} [n=1] The number of elements to drop.\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n     * @returns {Array} Returns the slice of `array`.\n     * @example\n     *\n     * _.drop([1, 2, 3]);\n     * // => [2, 3]\n     *\n     * _.drop([1, 2, 3], 2);\n     * // => [3]\n     *\n     * _.drop([1, 2, 3], 5);\n     * // => []\n     *\n     * _.drop([1, 2, 3], 0);\n     * // => [1, 2, 3]\n     */\n    function drop(array, n, guard) {\n      var length = array == null ? 0 : array.length;\n      if (!length) {\n        return [];\n      }\n      n = (guard || n === undefined) ? 1 : toInteger(n);\n      return baseSlice(array, n < 0 ? 0 : n, length);\n    }\n\n    /**\n     * Creates a slice of `array` with `n` elements dropped from the end.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Array\n     * @param {Array} array The array to query.\n     * @param {number} [n=1] The number of elements to drop.\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n     * @returns {Array} Returns the slice of `array`.\n     * @example\n     *\n     * _.dropRight([1, 2, 3]);\n     * // => [1, 2]\n     *\n     * _.dropRight([1, 2, 3], 2);\n     * // => [1]\n     *\n     * _.dropRight([1, 2, 3], 5);\n     * // => []\n     *\n     * _.dropRight([1, 2, 3], 0);\n     * // => [1, 2, 3]\n     */\n    function dropRight(array, n, guard) {\n      var length = array == null ? 0 : array.length;\n      if (!length) {\n        return [];\n      }\n      n = (guard || n === undefined) ? 1 : toInteger(n);\n      n = length - n;\n      return baseSlice(array, 0, n < 0 ? 0 : n);\n    }\n\n    /**\n     * Creates a slice of `array` excluding elements dropped from the end.\n     * Elements are dropped until `predicate` returns falsey. The predicate is\n     * invoked with three arguments: (value, index, array).\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Array\n     * @param {Array} array The array to query.\n     * @param {Function} [predicate=_.identity] The function invoked per iteration.\n     * @returns {Array} Returns the slice of `array`.\n     * @example\n     *\n     * var users = [\n     *   { 'user': 'barney',  'active': true },\n     *   { 'user': 'fred',    'active': false },\n     *   { 'user': 'pebbles', 'active': false }\n     * ];\n     *\n     * _.dropRightWhile(users, function(o) { return !o.active; });\n     * // => objects for ['barney']\n     *\n     * // The `_.matches` iteratee shorthand.\n     * _.dropRightWhile(users, { 'user': 'pebbles', 'active': false });\n     * // => objects for ['barney', 'fred']\n     *\n     * // The `_.matchesProperty` iteratee shorthand.\n     * _.dropRightWhile(users, ['active', false]);\n     * // => objects for ['barney']\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.dropRightWhile(users, 'active');\n     * // => objects for ['barney', 'fred', 'pebbles']\n     */\n    function dropRightWhile(array, predicate) {\n      return (array && array.length)\n        ? baseWhile(array, getIteratee(predicate, 3), true, true)\n        : [];\n    }\n\n    /**\n     * Creates a slice of `array` excluding elements dropped from the beginning.\n     * Elements are dropped until `predicate` returns falsey. The predicate is\n     * invoked with three arguments: (value, index, array).\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Array\n     * @param {Array} array The array to query.\n     * @param {Function} [predicate=_.identity] The function invoked per iteration.\n     * @returns {Array} Returns the slice of `array`.\n     * @example\n     *\n     * var users = [\n     *   { 'user': 'barney',  'active': false },\n     *   { 'user': 'fred',    'active': false },\n     *   { 'user': 'pebbles', 'active': true }\n     * ];\n     *\n     * _.dropWhile(users, function(o) { return !o.active; });\n     * // => objects for ['pebbles']\n     *\n     * // The `_.matches` iteratee shorthand.\n     * _.dropWhile(users, { 'user': 'barney', 'active': false });\n     * // => objects for ['fred', 'pebbles']\n     *\n     * // The `_.matchesProperty` iteratee shorthand.\n     * _.dropWhile(users, ['active', false]);\n     * // => objects for ['pebbles']\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.dropWhile(users, 'active');\n     * // => objects for ['barney', 'fred', 'pebbles']\n     */\n    function dropWhile(array, predicate) {\n      return (array && array.length)\n        ? baseWhile(array, getIteratee(predicate, 3), true)\n        : [];\n    }\n\n    /**\n     * Fills elements of `array` with `value` from `start` up to, but not\n     * including, `end`.\n     *\n     * **Note:** This method mutates `array`.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.2.0\n     * @category Array\n     * @param {Array} array The array to fill.\n     * @param {*} value The value to fill `array` with.\n     * @param {number} [start=0] The start position.\n     * @param {number} [end=array.length] The end position.\n     * @returns {Array} Returns `array`.\n     * @example\n     *\n     * var array = [1, 2, 3];\n     *\n     * _.fill(array, 'a');\n     * console.log(array);\n     * // => ['a', 'a', 'a']\n     *\n     * _.fill(Array(3), 2);\n     * // => [2, 2, 2]\n     *\n     * _.fill([4, 6, 8, 10], '*', 1, 3);\n     * // => [4, '*', '*', 10]\n     */\n    function fill(array, value, start, end) {\n      var length = array == null ? 0 : array.length;\n      if (!length) {\n        return [];\n      }\n      if (start && typeof start != 'number' && isIterateeCall(array, value, start)) {\n        start = 0;\n        end = length;\n      }\n      return baseFill(array, value, start, end);\n    }\n\n    /**\n     * This method is like `_.find` except that it returns the index of the first\n     * element `predicate` returns truthy for instead of the element itself.\n     *\n     * @static\n     * @memberOf _\n     * @since 1.1.0\n     * @category Array\n     * @param {Array} array The array to inspect.\n     * @param {Function} [predicate=_.identity] The function invoked per iteration.\n     * @param {number} [fromIndex=0] The index to search from.\n     * @returns {number} Returns the index of the found element, else `-1`.\n     * @example\n     *\n     * var users = [\n     *   { 'user': 'barney',  'active': false },\n     *   { 'user': 'fred',    'active': false },\n     *   { 'user': 'pebbles', 'active': true }\n     * ];\n     *\n     * _.findIndex(users, function(o) { return o.user == 'barney'; });\n     * // => 0\n     *\n     * // The `_.matches` iteratee shorthand.\n     * _.findIndex(users, { 'user': 'fred', 'active': false });\n     * // => 1\n     *\n     * // The `_.matchesProperty` iteratee shorthand.\n     * _.findIndex(users, ['active', false]);\n     * // => 0\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.findIndex(users, 'active');\n     * // => 2\n     */\n    function findIndex(array, predicate, fromIndex) {\n      var length = array == null ? 0 : array.length;\n      if (!length) {\n        return -1;\n      }\n      var index = fromIndex == null ? 0 : toInteger(fromIndex);\n      if (index < 0) {\n        index = nativeMax(length + index, 0);\n      }\n      return baseFindIndex(array, getIteratee(predicate, 3), index);\n    }\n\n    /**\n     * This method is like `_.findIndex` except that it iterates over elements\n     * of `collection` from right to left.\n     *\n     * @static\n     * @memberOf _\n     * @since 2.0.0\n     * @category Array\n     * @param {Array} array The array to inspect.\n     * @param {Function} [predicate=_.identity] The function invoked per iteration.\n     * @param {number} [fromIndex=array.length-1] The index to search from.\n     * @returns {number} Returns the index of the found element, else `-1`.\n     * @example\n     *\n     * var users = [\n     *   { 'user': 'barney',  'active': true },\n     *   { 'user': 'fred',    'active': false },\n     *   { 'user': 'pebbles', 'active': false }\n     * ];\n     *\n     * _.findLastIndex(users, function(o) { return o.user == 'pebbles'; });\n     * // => 2\n     *\n     * // The `_.matches` iteratee shorthand.\n     * _.findLastIndex(users, { 'user': 'barney', 'active': true });\n     * // => 0\n     *\n     * // The `_.matchesProperty` iteratee shorthand.\n     * _.findLastIndex(users, ['active', false]);\n     * // => 2\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.findLastIndex(users, 'active');\n     * // => 0\n     */\n    function findLastIndex(array, predicate, fromIndex) {\n      var length = array == null ? 0 : array.length;\n      if (!length) {\n        return -1;\n      }\n      var index = length - 1;\n      if (fromIndex !== undefined) {\n        index = toInteger(fromIndex);\n        index = fromIndex < 0\n          ? nativeMax(length + index, 0)\n          : nativeMin(index, length - 1);\n      }\n      return baseFindIndex(array, getIteratee(predicate, 3), index, true);\n    }\n\n    /**\n     * Flattens `array` a single level deep.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Array\n     * @param {Array} array The array to flatten.\n     * @returns {Array} Returns the new flattened array.\n     * @example\n     *\n     * _.flatten([1, [2, [3, [4]], 5]]);\n     * // => [1, 2, [3, [4]], 5]\n     */\n    function flatten(array) {\n      var length = array == null ? 0 : array.length;\n      return length ? baseFlatten(array, 1) : [];\n    }\n\n    /**\n     * Recursively flattens `array`.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Array\n     * @param {Array} array The array to flatten.\n     * @returns {Array} Returns the new flattened array.\n     * @example\n     *\n     * _.flattenDeep([1, [2, [3, [4]], 5]]);\n     * // => [1, 2, 3, 4, 5]\n     */\n    function flattenDeep(array) {\n      var length = array == null ? 0 : array.length;\n      return length ? baseFlatten(array, INFINITY) : [];\n    }\n\n    /**\n     * Recursively flatten `array` up to `depth` times.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.4.0\n     * @category Array\n     * @param {Array} array The array to flatten.\n     * @param {number} [depth=1] The maximum recursion depth.\n     * @returns {Array} Returns the new flattened array.\n     * @example\n     *\n     * var array = [1, [2, [3, [4]], 5]];\n     *\n     * _.flattenDepth(array, 1);\n     * // => [1, 2, [3, [4]], 5]\n     *\n     * _.flattenDepth(array, 2);\n     * // => [1, 2, 3, [4], 5]\n     */\n    function flattenDepth(array, depth) {\n      var length = array == null ? 0 : array.length;\n      if (!length) {\n        return [];\n      }\n      depth = depth === undefined ? 1 : toInteger(depth);\n      return baseFlatten(array, depth);\n    }\n\n    /**\n     * The inverse of `_.toPairs`; this method returns an object composed\n     * from key-value `pairs`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {Array} pairs The key-value pairs.\n     * @returns {Object} Returns the new object.\n     * @example\n     *\n     * _.fromPairs([['a', 1], ['b', 2]]);\n     * // => { 'a': 1, 'b': 2 }\n     */\n    function fromPairs(pairs) {\n      var index = -1,\n          length = pairs == null ? 0 : pairs.length,\n          result = {};\n\n      while (++index < length) {\n        var pair = pairs[index];\n        baseAssignValue(result, pair[0], pair[1]);\n      }\n      return result;\n    }\n\n    /**\n     * Gets the first element of `array`.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @alias first\n     * @category Array\n     * @param {Array} array The array to query.\n     * @returns {*} Returns the first element of `array`.\n     * @example\n     *\n     * _.head([1, 2, 3]);\n     * // => 1\n     *\n     * _.head([]);\n     * // => undefined\n     */\n    function head(array) {\n      return (array && array.length) ? array[0] : undefined;\n    }\n\n    /**\n     * Gets the index at which the first occurrence of `value` is found in `array`\n     * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n     * for equality comparisons. If `fromIndex` is negative, it's used as the\n     * offset from the end of `array`.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Array\n     * @param {Array} array The array to inspect.\n     * @param {*} value The value to search for.\n     * @param {number} [fromIndex=0] The index to search from.\n     * @returns {number} Returns the index of the matched value, else `-1`.\n     * @example\n     *\n     * _.indexOf([1, 2, 1, 2], 2);\n     * // => 1\n     *\n     * // Search from the `fromIndex`.\n     * _.indexOf([1, 2, 1, 2], 2, 2);\n     * // => 3\n     */\n    function indexOf(array, value, fromIndex) {\n      var length = array == null ? 0 : array.length;\n      if (!length) {\n        return -1;\n      }\n      var index = fromIndex == null ? 0 : toInteger(fromIndex);\n      if (index < 0) {\n        index = nativeMax(length + index, 0);\n      }\n      return baseIndexOf(array, value, index);\n    }\n\n    /**\n     * Gets all but the last element of `array`.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Array\n     * @param {Array} array The array to query.\n     * @returns {Array} Returns the slice of `array`.\n     * @example\n     *\n     * _.initial([1, 2, 3]);\n     * // => [1, 2]\n     */\n    function initial(array) {\n      var length = array == null ? 0 : array.length;\n      return length ? baseSlice(array, 0, -1) : [];\n    }\n\n    /**\n     * Creates an array of unique values that are included in all given arrays\n     * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n     * for equality comparisons. The order and references of result values are\n     * determined by the first array.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Array\n     * @param {...Array} [arrays] The arrays to inspect.\n     * @returns {Array} Returns the new array of intersecting values.\n     * @example\n     *\n     * _.intersection([2, 1], [2, 3]);\n     * // => [2]\n     */\n    var intersection = baseRest(function(arrays) {\n      var mapped = arrayMap(arrays, castArrayLikeObject);\n      return (mapped.length && mapped[0] === arrays[0])\n        ? baseIntersection(mapped)\n        : [];\n    });\n\n    /**\n     * This method is like `_.intersection` except that it accepts `iteratee`\n     * which is invoked for each element of each `arrays` to generate the criterion\n     * by which they're compared. The order and references of result values are\n     * determined by the first array. The iteratee is invoked with one argument:\n     * (value).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {...Array} [arrays] The arrays to inspect.\n     * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n     * @returns {Array} Returns the new array of intersecting values.\n     * @example\n     *\n     * _.intersectionBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n     * // => [2.1]\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.intersectionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n     * // => [{ 'x': 1 }]\n     */\n    var intersectionBy = baseRest(function(arrays) {\n      var iteratee = last(arrays),\n          mapped = arrayMap(arrays, castArrayLikeObject);\n\n      if (iteratee === last(mapped)) {\n        iteratee = undefined;\n      } else {\n        mapped.pop();\n      }\n      return (mapped.length && mapped[0] === arrays[0])\n        ? baseIntersection(mapped, getIteratee(iteratee, 2))\n        : [];\n    });\n\n    /**\n     * This method is like `_.intersection` except that it accepts `comparator`\n     * which is invoked to compare elements of `arrays`. The order and references\n     * of result values are determined by the first array. The comparator is\n     * invoked with two arguments: (arrVal, othVal).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {...Array} [arrays] The arrays to inspect.\n     * @param {Function} [comparator] The comparator invoked per element.\n     * @returns {Array} Returns the new array of intersecting values.\n     * @example\n     *\n     * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n     * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];\n     *\n     * _.intersectionWith(objects, others, _.isEqual);\n     * // => [{ 'x': 1, 'y': 2 }]\n     */\n    var intersectionWith = baseRest(function(arrays) {\n      var comparator = last(arrays),\n          mapped = arrayMap(arrays, castArrayLikeObject);\n\n      comparator = typeof comparator == 'function' ? comparator : undefined;\n      if (comparator) {\n        mapped.pop();\n      }\n      return (mapped.length && mapped[0] === arrays[0])\n        ? baseIntersection(mapped, undefined, comparator)\n        : [];\n    });\n\n    /**\n     * Converts all elements in `array` into a string separated by `separator`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {Array} array The array to convert.\n     * @param {string} [separator=','] The element separator.\n     * @returns {string} Returns the joined string.\n     * @example\n     *\n     * _.join(['a', 'b', 'c'], '~');\n     * // => 'a~b~c'\n     */\n    function join(array, separator) {\n      return array == null ? '' : nativeJoin.call(array, separator);\n    }\n\n    /**\n     * Gets the last element of `array`.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Array\n     * @param {Array} array The array to query.\n     * @returns {*} Returns the last element of `array`.\n     * @example\n     *\n     * _.last([1, 2, 3]);\n     * // => 3\n     */\n    function last(array) {\n      var length = array == null ? 0 : array.length;\n      return length ? array[length - 1] : undefined;\n    }\n\n    /**\n     * This method is like `_.indexOf` except that it iterates over elements of\n     * `array` from right to left.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Array\n     * @param {Array} array The array to inspect.\n     * @param {*} value The value to search for.\n     * @param {number} [fromIndex=array.length-1] The index to search from.\n     * @returns {number} Returns the index of the matched value, else `-1`.\n     * @example\n     *\n     * _.lastIndexOf([1, 2, 1, 2], 2);\n     * // => 3\n     *\n     * // Search from the `fromIndex`.\n     * _.lastIndexOf([1, 2, 1, 2], 2, 2);\n     * // => 1\n     */\n    function lastIndexOf(array, value, fromIndex) {\n      var length = array == null ? 0 : array.length;\n      if (!length) {\n        return -1;\n      }\n      var index = length;\n      if (fromIndex !== undefined) {\n        index = toInteger(fromIndex);\n        index = index < 0 ? nativeMax(length + index, 0) : nativeMin(index, length - 1);\n      }\n      return value === value\n        ? strictLastIndexOf(array, value, index)\n        : baseFindIndex(array, baseIsNaN, index, true);\n    }\n\n    /**\n     * Gets the element at index `n` of `array`. If `n` is negative, the nth\n     * element from the end is returned.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.11.0\n     * @category Array\n     * @param {Array} array The array to query.\n     * @param {number} [n=0] The index of the element to return.\n     * @returns {*} Returns the nth element of `array`.\n     * @example\n     *\n     * var array = ['a', 'b', 'c', 'd'];\n     *\n     * _.nth(array, 1);\n     * // => 'b'\n     *\n     * _.nth(array, -2);\n     * // => 'c';\n     */\n    function nth(array, n) {\n      return (array && array.length) ? baseNth(array, toInteger(n)) : undefined;\n    }\n\n    /**\n     * Removes all given values from `array` using\n     * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n     * for equality comparisons.\n     *\n     * **Note:** Unlike `_.without`, this method mutates `array`. Use `_.remove`\n     * to remove elements from an array by predicate.\n     *\n     * @static\n     * @memberOf _\n     * @since 2.0.0\n     * @category Array\n     * @param {Array} array The array to modify.\n     * @param {...*} [values] The values to remove.\n     * @returns {Array} Returns `array`.\n     * @example\n     *\n     * var array = ['a', 'b', 'c', 'a', 'b', 'c'];\n     *\n     * _.pull(array, 'a', 'c');\n     * console.log(array);\n     * // => ['b', 'b']\n     */\n    var pull = baseRest(pullAll);\n\n    /**\n     * This method is like `_.pull` except that it accepts an array of values to remove.\n     *\n     * **Note:** Unlike `_.difference`, this method mutates `array`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {Array} array The array to modify.\n     * @param {Array} values The values to remove.\n     * @returns {Array} Returns `array`.\n     * @example\n     *\n     * var array = ['a', 'b', 'c', 'a', 'b', 'c'];\n     *\n     * _.pullAll(array, ['a', 'c']);\n     * console.log(array);\n     * // => ['b', 'b']\n     */\n    function pullAll(array, values) {\n      return (array && array.length && values && values.length)\n        ? basePullAll(array, values)\n        : array;\n    }\n\n    /**\n     * This method is like `_.pullAll` except that it accepts `iteratee` which is\n     * invoked for each element of `array` and `values` to generate the criterion\n     * by which they're compared. The iteratee is invoked with one argument: (value).\n     *\n     * **Note:** Unlike `_.differenceBy`, this method mutates `array`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {Array} array The array to modify.\n     * @param {Array} values The values to remove.\n     * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n     * @returns {Array} Returns `array`.\n     * @example\n     *\n     * var array = [{ 'x': 1 }, { 'x': 2 }, { 'x': 3 }, { 'x': 1 }];\n     *\n     * _.pullAllBy(array, [{ 'x': 1 }, { 'x': 3 }], 'x');\n     * console.log(array);\n     * // => [{ 'x': 2 }]\n     */\n    function pullAllBy(array, values, iteratee) {\n      return (array && array.length && values && values.length)\n        ? basePullAll(array, values, getIteratee(iteratee, 2))\n        : array;\n    }\n\n    /**\n     * This method is like `_.pullAll` except that it accepts `comparator` which\n     * is invoked to compare elements of `array` to `values`. The comparator is\n     * invoked with two arguments: (arrVal, othVal).\n     *\n     * **Note:** Unlike `_.differenceWith`, this method mutates `array`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.6.0\n     * @category Array\n     * @param {Array} array The array to modify.\n     * @param {Array} values The values to remove.\n     * @param {Function} [comparator] The comparator invoked per element.\n     * @returns {Array} Returns `array`.\n     * @example\n     *\n     * var array = [{ 'x': 1, 'y': 2 }, { 'x': 3, 'y': 4 }, { 'x': 5, 'y': 6 }];\n     *\n     * _.pullAllWith(array, [{ 'x': 3, 'y': 4 }], _.isEqual);\n     * console.log(array);\n     * // => [{ 'x': 1, 'y': 2 }, { 'x': 5, 'y': 6 }]\n     */\n    function pullAllWith(array, values, comparator) {\n      return (array && array.length && values && values.length)\n        ? basePullAll(array, values, undefined, comparator)\n        : array;\n    }\n\n    /**\n     * Removes elements from `array` corresponding to `indexes` and returns an\n     * array of removed elements.\n     *\n     * **Note:** Unlike `_.at`, this method mutates `array`.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Array\n     * @param {Array} array The array to modify.\n     * @param {...(number|number[])} [indexes] The indexes of elements to remove.\n     * @returns {Array} Returns the new array of removed elements.\n     * @example\n     *\n     * var array = ['a', 'b', 'c', 'd'];\n     * var pulled = _.pullAt(array, [1, 3]);\n     *\n     * console.log(array);\n     * // => ['a', 'c']\n     *\n     * console.log(pulled);\n     * // => ['b', 'd']\n     */\n    var pullAt = flatRest(function(array, indexes) {\n      var length = array == null ? 0 : array.length,\n          result = baseAt(array, indexes);\n\n      basePullAt(array, arrayMap(indexes, function(index) {\n        return isIndex(index, length) ? +index : index;\n      }).sort(compareAscending));\n\n      return result;\n    });\n\n    /**\n     * Removes all elements from `array` that `predicate` returns truthy for\n     * and returns an array of the removed elements. The predicate is invoked\n     * with three arguments: (value, index, array).\n     *\n     * **Note:** Unlike `_.filter`, this method mutates `array`. Use `_.pull`\n     * to pull elements from an array by value.\n     *\n     * @static\n     * @memberOf _\n     * @since 2.0.0\n     * @category Array\n     * @param {Array} array The array to modify.\n     * @param {Function} [predicate=_.identity] The function invoked per iteration.\n     * @returns {Array} Returns the new array of removed elements.\n     * @example\n     *\n     * var array = [1, 2, 3, 4];\n     * var evens = _.remove(array, function(n) {\n     *   return n % 2 == 0;\n     * });\n     *\n     * console.log(array);\n     * // => [1, 3]\n     *\n     * console.log(evens);\n     * // => [2, 4]\n     */\n    function remove(array, predicate) {\n      var result = [];\n      if (!(array && array.length)) {\n        return result;\n      }\n      var index = -1,\n          indexes = [],\n          length = array.length;\n\n      predicate = getIteratee(predicate, 3);\n      while (++index < length) {\n        var value = array[index];\n        if (predicate(value, index, array)) {\n          result.push(value);\n          indexes.push(index);\n        }\n      }\n      basePullAt(array, indexes);\n      return result;\n    }\n\n    /**\n     * Reverses `array` so that the first element becomes the last, the second\n     * element becomes the second to last, and so on.\n     *\n     * **Note:** This method mutates `array` and is based on\n     * [`Array#reverse`](https://mdn.io/Array/reverse).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {Array} array The array to modify.\n     * @returns {Array} Returns `array`.\n     * @example\n     *\n     * var array = [1, 2, 3];\n     *\n     * _.reverse(array);\n     * // => [3, 2, 1]\n     *\n     * console.log(array);\n     * // => [3, 2, 1]\n     */\n    function reverse(array) {\n      return array == null ? array : nativeReverse.call(array);\n    }\n\n    /**\n     * Creates a slice of `array` from `start` up to, but not including, `end`.\n     *\n     * **Note:** This method is used instead of\n     * [`Array#slice`](https://mdn.io/Array/slice) to ensure dense arrays are\n     * returned.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Array\n     * @param {Array} array The array to slice.\n     * @param {number} [start=0] The start position.\n     * @param {number} [end=array.length] The end position.\n     * @returns {Array} Returns the slice of `array`.\n     */\n    function slice(array, start, end) {\n      var length = array == null ? 0 : array.length;\n      if (!length) {\n        return [];\n      }\n      if (end && typeof end != 'number' && isIterateeCall(array, start, end)) {\n        start = 0;\n        end = length;\n      }\n      else {\n        start = start == null ? 0 : toInteger(start);\n        end = end === undefined ? length : toInteger(end);\n      }\n      return baseSlice(array, start, end);\n    }\n\n    /**\n     * Uses a binary search to determine the lowest index at which `value`\n     * should be inserted into `array` in order to maintain its sort order.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Array\n     * @param {Array} array The sorted array to inspect.\n     * @param {*} value The value to evaluate.\n     * @returns {number} Returns the index at which `value` should be inserted\n     *  into `array`.\n     * @example\n     *\n     * _.sortedIndex([30, 50], 40);\n     * // => 1\n     */\n    function sortedIndex(array, value) {\n      return baseSortedIndex(array, value);\n    }\n\n    /**\n     * This method is like `_.sortedIndex` except that it accepts `iteratee`\n     * which is invoked for `value` and each element of `array` to compute their\n     * sort ranking. The iteratee is invoked with one argument: (value).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {Array} array The sorted array to inspect.\n     * @param {*} value The value to evaluate.\n     * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n     * @returns {number} Returns the index at which `value` should be inserted\n     *  into `array`.\n     * @example\n     *\n     * var objects = [{ 'x': 4 }, { 'x': 5 }];\n     *\n     * _.sortedIndexBy(objects, { 'x': 4 }, function(o) { return o.x; });\n     * // => 0\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.sortedIndexBy(objects, { 'x': 4 }, 'x');\n     * // => 0\n     */\n    function sortedIndexBy(array, value, iteratee) {\n      return baseSortedIndexBy(array, value, getIteratee(iteratee, 2));\n    }\n\n    /**\n     * This method is like `_.indexOf` except that it performs a binary\n     * search on a sorted `array`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {Array} array The array to inspect.\n     * @param {*} value The value to search for.\n     * @returns {number} Returns the index of the matched value, else `-1`.\n     * @example\n     *\n     * _.sortedIndexOf([4, 5, 5, 5, 6], 5);\n     * // => 1\n     */\n    function sortedIndexOf(array, value) {\n      var length = array == null ? 0 : array.length;\n      if (length) {\n        var index = baseSortedIndex(array, value);\n        if (index < length && eq(array[index], value)) {\n          return index;\n        }\n      }\n      return -1;\n    }\n\n    /**\n     * This method is like `_.sortedIndex` except that it returns the highest\n     * index at which `value` should be inserted into `array` in order to\n     * maintain its sort order.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Array\n     * @param {Array} array The sorted array to inspect.\n     * @param {*} value The value to evaluate.\n     * @returns {number} Returns the index at which `value` should be inserted\n     *  into `array`.\n     * @example\n     *\n     * _.sortedLastIndex([4, 5, 5, 5, 6], 5);\n     * // => 4\n     */\n    function sortedLastIndex(array, value) {\n      return baseSortedIndex(array, value, true);\n    }\n\n    /**\n     * This method is like `_.sortedLastIndex` except that it accepts `iteratee`\n     * which is invoked for `value` and each element of `array` to compute their\n     * sort ranking. The iteratee is invoked with one argument: (value).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {Array} array The sorted array to inspect.\n     * @param {*} value The value to evaluate.\n     * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n     * @returns {number} Returns the index at which `value` should be inserted\n     *  into `array`.\n     * @example\n     *\n     * var objects = [{ 'x': 4 }, { 'x': 5 }];\n     *\n     * _.sortedLastIndexBy(objects, { 'x': 4 }, function(o) { return o.x; });\n     * // => 1\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.sortedLastIndexBy(objects, { 'x': 4 }, 'x');\n     * // => 1\n     */\n    function sortedLastIndexBy(array, value, iteratee) {\n      return baseSortedIndexBy(array, value, getIteratee(iteratee, 2), true);\n    }\n\n    /**\n     * This method is like `_.lastIndexOf` except that it performs a binary\n     * search on a sorted `array`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {Array} array The array to inspect.\n     * @param {*} value The value to search for.\n     * @returns {number} Returns the index of the matched value, else `-1`.\n     * @example\n     *\n     * _.sortedLastIndexOf([4, 5, 5, 5, 6], 5);\n     * // => 3\n     */\n    function sortedLastIndexOf(array, value) {\n      var length = array == null ? 0 : array.length;\n      if (length) {\n        var index = baseSortedIndex(array, value, true) - 1;\n        if (eq(array[index], value)) {\n          return index;\n        }\n      }\n      return -1;\n    }\n\n    /**\n     * This method is like `_.uniq` except that it's designed and optimized\n     * for sorted arrays.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {Array} array The array to inspect.\n     * @returns {Array} Returns the new duplicate free array.\n     * @example\n     *\n     * _.sortedUniq([1, 1, 2]);\n     * // => [1, 2]\n     */\n    function sortedUniq(array) {\n      return (array && array.length)\n        ? baseSortedUniq(array)\n        : [];\n    }\n\n    /**\n     * This method is like `_.uniqBy` except that it's designed and optimized\n     * for sorted arrays.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {Array} array The array to inspect.\n     * @param {Function} [iteratee] The iteratee invoked per element.\n     * @returns {Array} Returns the new duplicate free array.\n     * @example\n     *\n     * _.sortedUniqBy([1.1, 1.2, 2.3, 2.4], Math.floor);\n     * // => [1.1, 2.3]\n     */\n    function sortedUniqBy(array, iteratee) {\n      return (array && array.length)\n        ? baseSortedUniq(array, getIteratee(iteratee, 2))\n        : [];\n    }\n\n    /**\n     * Gets all but the first element of `array`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {Array} array The array to query.\n     * @returns {Array} Returns the slice of `array`.\n     * @example\n     *\n     * _.tail([1, 2, 3]);\n     * // => [2, 3]\n     */\n    function tail(array) {\n      var length = array == null ? 0 : array.length;\n      return length ? baseSlice(array, 1, length) : [];\n    }\n\n    /**\n     * Creates a slice of `array` with `n` elements taken from the beginning.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Array\n     * @param {Array} array The array to query.\n     * @param {number} [n=1] The number of elements to take.\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n     * @returns {Array} Returns the slice of `array`.\n     * @example\n     *\n     * _.take([1, 2, 3]);\n     * // => [1]\n     *\n     * _.take([1, 2, 3], 2);\n     * // => [1, 2]\n     *\n     * _.take([1, 2, 3], 5);\n     * // => [1, 2, 3]\n     *\n     * _.take([1, 2, 3], 0);\n     * // => []\n     */\n    function take(array, n, guard) {\n      if (!(array && array.length)) {\n        return [];\n      }\n      n = (guard || n === undefined) ? 1 : toInteger(n);\n      return baseSlice(array, 0, n < 0 ? 0 : n);\n    }\n\n    /**\n     * Creates a slice of `array` with `n` elements taken from the end.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Array\n     * @param {Array} array The array to query.\n     * @param {number} [n=1] The number of elements to take.\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n     * @returns {Array} Returns the slice of `array`.\n     * @example\n     *\n     * _.takeRight([1, 2, 3]);\n     * // => [3]\n     *\n     * _.takeRight([1, 2, 3], 2);\n     * // => [2, 3]\n     *\n     * _.takeRight([1, 2, 3], 5);\n     * // => [1, 2, 3]\n     *\n     * _.takeRight([1, 2, 3], 0);\n     * // => []\n     */\n    function takeRight(array, n, guard) {\n      var length = array == null ? 0 : array.length;\n      if (!length) {\n        return [];\n      }\n      n = (guard || n === undefined) ? 1 : toInteger(n);\n      n = length - n;\n      return baseSlice(array, n < 0 ? 0 : n, length);\n    }\n\n    /**\n     * Creates a slice of `array` with elements taken from the end. Elements are\n     * taken until `predicate` returns falsey. The predicate is invoked with\n     * three arguments: (value, index, array).\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Array\n     * @param {Array} array The array to query.\n     * @param {Function} [predicate=_.identity] The function invoked per iteration.\n     * @returns {Array} Returns the slice of `array`.\n     * @example\n     *\n     * var users = [\n     *   { 'user': 'barney',  'active': true },\n     *   { 'user': 'fred',    'active': false },\n     *   { 'user': 'pebbles', 'active': false }\n     * ];\n     *\n     * _.takeRightWhile(users, function(o) { return !o.active; });\n     * // => objects for ['fred', 'pebbles']\n     *\n     * // The `_.matches` iteratee shorthand.\n     * _.takeRightWhile(users, { 'user': 'pebbles', 'active': false });\n     * // => objects for ['pebbles']\n     *\n     * // The `_.matchesProperty` iteratee shorthand.\n     * _.takeRightWhile(users, ['active', false]);\n     * // => objects for ['fred', 'pebbles']\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.takeRightWhile(users, 'active');\n     * // => []\n     */\n    function takeRightWhile(array, predicate) {\n      return (array && array.length)\n        ? baseWhile(array, getIteratee(predicate, 3), false, true)\n        : [];\n    }\n\n    /**\n     * Creates a slice of `array` with elements taken from the beginning. Elements\n     * are taken until `predicate` returns falsey. The predicate is invoked with\n     * three arguments: (value, index, array).\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Array\n     * @param {Array} array The array to query.\n     * @param {Function} [predicate=_.identity] The function invoked per iteration.\n     * @returns {Array} Returns the slice of `array`.\n     * @example\n     *\n     * var users = [\n     *   { 'user': 'barney',  'active': false },\n     *   { 'user': 'fred',    'active': false },\n     *   { 'user': 'pebbles', 'active': true }\n     * ];\n     *\n     * _.takeWhile(users, function(o) { return !o.active; });\n     * // => objects for ['barney', 'fred']\n     *\n     * // The `_.matches` iteratee shorthand.\n     * _.takeWhile(users, { 'user': 'barney', 'active': false });\n     * // => objects for ['barney']\n     *\n     * // The `_.matchesProperty` iteratee shorthand.\n     * _.takeWhile(users, ['active', false]);\n     * // => objects for ['barney', 'fred']\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.takeWhile(users, 'active');\n     * // => []\n     */\n    function takeWhile(array, predicate) {\n      return (array && array.length)\n        ? baseWhile(array, getIteratee(predicate, 3))\n        : [];\n    }\n\n    /**\n     * Creates an array of unique values, in order, from all given arrays using\n     * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n     * for equality comparisons.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Array\n     * @param {...Array} [arrays] The arrays to inspect.\n     * @returns {Array} Returns the new array of combined values.\n     * @example\n     *\n     * _.union([2], [1, 2]);\n     * // => [2, 1]\n     */\n    var union = baseRest(function(arrays) {\n      return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true));\n    });\n\n    /**\n     * This method is like `_.union` except that it accepts `iteratee` which is\n     * invoked for each element of each `arrays` to generate the criterion by\n     * which uniqueness is computed. Result values are chosen from the first\n     * array in which the value occurs. The iteratee is invoked with one argument:\n     * (value).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {...Array} [arrays] The arrays to inspect.\n     * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n     * @returns {Array} Returns the new array of combined values.\n     * @example\n     *\n     * _.unionBy([2.1], [1.2, 2.3], Math.floor);\n     * // => [2.1, 1.2]\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.unionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n     * // => [{ 'x': 1 }, { 'x': 2 }]\n     */\n    var unionBy = baseRest(function(arrays) {\n      var iteratee = last(arrays);\n      if (isArrayLikeObject(iteratee)) {\n        iteratee = undefined;\n      }\n      return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), getIteratee(iteratee, 2));\n    });\n\n    /**\n     * This method is like `_.union` except that it accepts `comparator` which\n     * is invoked to compare elements of `arrays`. Result values are chosen from\n     * the first array in which the value occurs. The comparator is invoked\n     * with two arguments: (arrVal, othVal).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {...Array} [arrays] The arrays to inspect.\n     * @param {Function} [comparator] The comparator invoked per element.\n     * @returns {Array} Returns the new array of combined values.\n     * @example\n     *\n     * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n     * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];\n     *\n     * _.unionWith(objects, others, _.isEqual);\n     * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }]\n     */\n    var unionWith = baseRest(function(arrays) {\n      var comparator = last(arrays);\n      comparator = typeof comparator == 'function' ? comparator : undefined;\n      return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), undefined, comparator);\n    });\n\n    /**\n     * Creates a duplicate-free version of an array, using\n     * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n     * for equality comparisons, in which only the first occurrence of each element\n     * is kept. The order of result values is determined by the order they occur\n     * in the array.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Array\n     * @param {Array} array The array to inspect.\n     * @returns {Array} Returns the new duplicate free array.\n     * @example\n     *\n     * _.uniq([2, 1, 2]);\n     * // => [2, 1]\n     */\n    function uniq(array) {\n      return (array && array.length) ? baseUniq(array) : [];\n    }\n\n    /**\n     * This method is like `_.uniq` except that it accepts `iteratee` which is\n     * invoked for each element in `array` to generate the criterion by which\n     * uniqueness is computed. The order of result values is determined by the\n     * order they occur in the array. The iteratee is invoked with one argument:\n     * (value).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {Array} array The array to inspect.\n     * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n     * @returns {Array} Returns the new duplicate free array.\n     * @example\n     *\n     * _.uniqBy([2.1, 1.2, 2.3], Math.floor);\n     * // => [2.1, 1.2]\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.uniqBy([{ 'x': 1 }, { 'x': 2 }, { 'x': 1 }], 'x');\n     * // => [{ 'x': 1 }, { 'x': 2 }]\n     */\n    function uniqBy(array, iteratee) {\n      return (array && array.length) ? baseUniq(array, getIteratee(iteratee, 2)) : [];\n    }\n\n    /**\n     * This method is like `_.uniq` except that it accepts `comparator` which\n     * is invoked to compare elements of `array`. The order of result values is\n     * determined by the order they occur in the array.The comparator is invoked\n     * with two arguments: (arrVal, othVal).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {Array} array The array to inspect.\n     * @param {Function} [comparator] The comparator invoked per element.\n     * @returns {Array} Returns the new duplicate free array.\n     * @example\n     *\n     * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 2 }];\n     *\n     * _.uniqWith(objects, _.isEqual);\n     * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }]\n     */\n    function uniqWith(array, comparator) {\n      comparator = typeof comparator == 'function' ? comparator : undefined;\n      return (array && array.length) ? baseUniq(array, undefined, comparator) : [];\n    }\n\n    /**\n     * This method is like `_.zip` except that it accepts an array of grouped\n     * elements and creates an array regrouping the elements to their pre-zip\n     * configuration.\n     *\n     * @static\n     * @memberOf _\n     * @since 1.2.0\n     * @category Array\n     * @param {Array} array The array of grouped elements to process.\n     * @returns {Array} Returns the new array of regrouped elements.\n     * @example\n     *\n     * var zipped = _.zip(['a', 'b'], [1, 2], [true, false]);\n     * // => [['a', 1, true], ['b', 2, false]]\n     *\n     * _.unzip(zipped);\n     * // => [['a', 'b'], [1, 2], [true, false]]\n     */\n    function unzip(array) {\n      if (!(array && array.length)) {\n        return [];\n      }\n      var length = 0;\n      array = arrayFilter(array, function(group) {\n        if (isArrayLikeObject(group)) {\n          length = nativeMax(group.length, length);\n          return true;\n        }\n      });\n      return baseTimes(length, function(index) {\n        return arrayMap(array, baseProperty(index));\n      });\n    }\n\n    /**\n     * This method is like `_.unzip` except that it accepts `iteratee` to specify\n     * how regrouped values should be combined. The iteratee is invoked with the\n     * elements of each group: (...group).\n     *\n     * @static\n     * @memberOf _\n     * @since 3.8.0\n     * @category Array\n     * @param {Array} array The array of grouped elements to process.\n     * @param {Function} [iteratee=_.identity] The function to combine\n     *  regrouped values.\n     * @returns {Array} Returns the new array of regrouped elements.\n     * @example\n     *\n     * var zipped = _.zip([1, 2], [10, 20], [100, 200]);\n     * // => [[1, 10, 100], [2, 20, 200]]\n     *\n     * _.unzipWith(zipped, _.add);\n     * // => [3, 30, 300]\n     */\n    function unzipWith(array, iteratee) {\n      if (!(array && array.length)) {\n        return [];\n      }\n      var result = unzip(array);\n      if (iteratee == null) {\n        return result;\n      }\n      return arrayMap(result, function(group) {\n        return apply(iteratee, undefined, group);\n      });\n    }\n\n    /**\n     * Creates an array excluding all given values using\n     * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n     * for equality comparisons.\n     *\n     * **Note:** Unlike `_.pull`, this method returns a new array.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Array\n     * @param {Array} array The array to inspect.\n     * @param {...*} [values] The values to exclude.\n     * @returns {Array} Returns the new array of filtered values.\n     * @see _.difference, _.xor\n     * @example\n     *\n     * _.without([2, 1, 2, 3], 1, 2);\n     * // => [3]\n     */\n    var without = baseRest(function(array, values) {\n      return isArrayLikeObject(array)\n        ? baseDifference(array, values)\n        : [];\n    });\n\n    /**\n     * Creates an array of unique values that is the\n     * [symmetric difference](https://en.wikipedia.org/wiki/Symmetric_difference)\n     * of the given arrays. The order of result values is determined by the order\n     * they occur in the arrays.\n     *\n     * @static\n     * @memberOf _\n     * @since 2.4.0\n     * @category Array\n     * @param {...Array} [arrays] The arrays to inspect.\n     * @returns {Array} Returns the new array of filtered values.\n     * @see _.difference, _.without\n     * @example\n     *\n     * _.xor([2, 1], [2, 3]);\n     * // => [1, 3]\n     */\n    var xor = baseRest(function(arrays) {\n      return baseXor(arrayFilter(arrays, isArrayLikeObject));\n    });\n\n    /**\n     * This method is like `_.xor` except that it accepts `iteratee` which is\n     * invoked for each element of each `arrays` to generate the criterion by\n     * which by which they're compared. The order of result values is determined\n     * by the order they occur in the arrays. The iteratee is invoked with one\n     * argument: (value).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {...Array} [arrays] The arrays to inspect.\n     * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n     * @returns {Array} Returns the new array of filtered values.\n     * @example\n     *\n     * _.xorBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n     * // => [1.2, 3.4]\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.xorBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n     * // => [{ 'x': 2 }]\n     */\n    var xorBy = baseRest(function(arrays) {\n      var iteratee = last(arrays);\n      if (isArrayLikeObject(iteratee)) {\n        iteratee = undefined;\n      }\n      return baseXor(arrayFilter(arrays, isArrayLikeObject), getIteratee(iteratee, 2));\n    });\n\n    /**\n     * This method is like `_.xor` except that it accepts `comparator` which is\n     * invoked to compare elements of `arrays`. The order of result values is\n     * determined by the order they occur in the arrays. The comparator is invoked\n     * with two arguments: (arrVal, othVal).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {...Array} [arrays] The arrays to inspect.\n     * @param {Function} [comparator] The comparator invoked per element.\n     * @returns {Array} Returns the new array of filtered values.\n     * @example\n     *\n     * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n     * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];\n     *\n     * _.xorWith(objects, others, _.isEqual);\n     * // => [{ 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }]\n     */\n    var xorWith = baseRest(function(arrays) {\n      var comparator = last(arrays);\n      comparator = typeof comparator == 'function' ? comparator : undefined;\n      return baseXor(arrayFilter(arrays, isArrayLikeObject), undefined, comparator);\n    });\n\n    /**\n     * Creates an array of grouped elements, the first of which contains the\n     * first elements of the given arrays, the second of which contains the\n     * second elements of the given arrays, and so on.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Array\n     * @param {...Array} [arrays] The arrays to process.\n     * @returns {Array} Returns the new array of grouped elements.\n     * @example\n     *\n     * _.zip(['a', 'b'], [1, 2], [true, false]);\n     * // => [['a', 1, true], ['b', 2, false]]\n     */\n    var zip = baseRest(unzip);\n\n    /**\n     * This method is like `_.fromPairs` except that it accepts two arrays,\n     * one of property identifiers and one of corresponding values.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.4.0\n     * @category Array\n     * @param {Array} [props=[]] The property identifiers.\n     * @param {Array} [values=[]] The property values.\n     * @returns {Object} Returns the new object.\n     * @example\n     *\n     * _.zipObject(['a', 'b'], [1, 2]);\n     * // => { 'a': 1, 'b': 2 }\n     */\n    function zipObject(props, values) {\n      return baseZipObject(props || [], values || [], assignValue);\n    }\n\n    /**\n     * This method is like `_.zipObject` except that it supports property paths.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.1.0\n     * @category Array\n     * @param {Array} [props=[]] The property identifiers.\n     * @param {Array} [values=[]] The property values.\n     * @returns {Object} Returns the new object.\n     * @example\n     *\n     * _.zipObjectDeep(['a.b[0].c', 'a.b[1].d'], [1, 2]);\n     * // => { 'a': { 'b': [{ 'c': 1 }, { 'd': 2 }] } }\n     */\n    function zipObjectDeep(props, values) {\n      return baseZipObject(props || [], values || [], baseSet);\n    }\n\n    /**\n     * This method is like `_.zip` except that it accepts `iteratee` to specify\n     * how grouped values should be combined. The iteratee is invoked with the\n     * elements of each group: (...group).\n     *\n     * @static\n     * @memberOf _\n     * @since 3.8.0\n     * @category Array\n     * @param {...Array} [arrays] The arrays to process.\n     * @param {Function} [iteratee=_.identity] The function to combine\n     *  grouped values.\n     * @returns {Array} Returns the new array of grouped elements.\n     * @example\n     *\n     * _.zipWith([1, 2], [10, 20], [100, 200], function(a, b, c) {\n     *   return a + b + c;\n     * });\n     * // => [111, 222]\n     */\n    var zipWith = baseRest(function(arrays) {\n      var length = arrays.length,\n          iteratee = length > 1 ? arrays[length - 1] : undefined;\n\n      iteratee = typeof iteratee == 'function' ? (arrays.pop(), iteratee) : undefined;\n      return unzipWith(arrays, iteratee);\n    });\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     * Creates a `lodash` wrapper instance that wraps `value` with explicit method\n     * chain sequences enabled. The result of such sequences must be unwrapped\n     * with `_#value`.\n     *\n     * @static\n     * @memberOf _\n     * @since 1.3.0\n     * @category Seq\n     * @param {*} value The value to wrap.\n     * @returns {Object} Returns the new `lodash` wrapper instance.\n     * @example\n     *\n     * var users = [\n     *   { 'user': 'barney',  'age': 36 },\n     *   { 'user': 'fred',    'age': 40 },\n     *   { 'user': 'pebbles', 'age': 1 }\n     * ];\n     *\n     * var youngest = _\n     *   .chain(users)\n     *   .sortBy('age')\n     *   .map(function(o) {\n     *     return o.user + ' is ' + o.age;\n     *   })\n     *   .head()\n     *   .value();\n     * // => 'pebbles is 1'\n     */\n    function chain(value) {\n      var result = lodash(value);\n      result.__chain__ = true;\n      return result;\n    }\n\n    /**\n     * This method invokes `interceptor` and returns `value`. The interceptor\n     * is invoked with one argument; (value). The purpose of this method is to\n     * \"tap into\" a method chain sequence in order to modify intermediate results.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Seq\n     * @param {*} value The value to provide to `interceptor`.\n     * @param {Function} interceptor The function to invoke.\n     * @returns {*} Returns `value`.\n     * @example\n     *\n     * _([1, 2, 3])\n     *  .tap(function(array) {\n     *    // Mutate input array.\n     *    array.pop();\n     *  })\n     *  .reverse()\n     *  .value();\n     * // => [2, 1]\n     */\n    function tap(value, interceptor) {\n      interceptor(value);\n      return value;\n    }\n\n    /**\n     * This method is like `_.tap` except that it returns the result of `interceptor`.\n     * The purpose of this method is to \"pass thru\" values replacing intermediate\n     * results in a method chain sequence.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Seq\n     * @param {*} value The value to provide to `interceptor`.\n     * @param {Function} interceptor The function to invoke.\n     * @returns {*} Returns the result of `interceptor`.\n     * @example\n     *\n     * _('  abc  ')\n     *  .chain()\n     *  .trim()\n     *  .thru(function(value) {\n     *    return [value];\n     *  })\n     *  .value();\n     * // => ['abc']\n     */\n    function thru(value, interceptor) {\n      return interceptor(value);\n    }\n\n    /**\n     * This method is the wrapper version of `_.at`.\n     *\n     * @name at\n     * @memberOf _\n     * @since 1.0.0\n     * @category Seq\n     * @param {...(string|string[])} [paths] The property paths to pick.\n     * @returns {Object} Returns the new `lodash` wrapper instance.\n     * @example\n     *\n     * var object = { 'a': [{ 'b': { 'c': 3 } }, 4] };\n     *\n     * _(object).at(['a[0].b.c', 'a[1]']).value();\n     * // => [3, 4]\n     */\n    var wrapperAt = flatRest(function(paths) {\n      var length = paths.length,\n          start = length ? paths[0] : 0,\n          value = this.__wrapped__,\n          interceptor = function(object) { return baseAt(object, paths); };\n\n      if (length > 1 || this.__actions__.length ||\n          !(value instanceof LazyWrapper) || !isIndex(start)) {\n        return this.thru(interceptor);\n      }\n      value = value.slice(start, +start + (length ? 1 : 0));\n      value.__actions__.push({\n        'func': thru,\n        'args': [interceptor],\n        'thisArg': undefined\n      });\n      return new LodashWrapper(value, this.__chain__).thru(function(array) {\n        if (length && !array.length) {\n          array.push(undefined);\n        }\n        return array;\n      });\n    });\n\n    /**\n     * Creates a `lodash` wrapper instance with explicit method chain sequences enabled.\n     *\n     * @name chain\n     * @memberOf _\n     * @since 0.1.0\n     * @category Seq\n     * @returns {Object} Returns the new `lodash` wrapper instance.\n     * @example\n     *\n     * var users = [\n     *   { 'user': 'barney', 'age': 36 },\n     *   { 'user': 'fred',   'age': 40 }\n     * ];\n     *\n     * // A sequence without explicit chaining.\n     * _(users).head();\n     * // => { 'user': 'barney', 'age': 36 }\n     *\n     * // A sequence with explicit chaining.\n     * _(users)\n     *   .chain()\n     *   .head()\n     *   .pick('user')\n     *   .value();\n     * // => { 'user': 'barney' }\n     */\n    function wrapperChain() {\n      return chain(this);\n    }\n\n    /**\n     * Executes the chain sequence and returns the wrapped result.\n     *\n     * @name commit\n     * @memberOf _\n     * @since 3.2.0\n     * @category Seq\n     * @returns {Object} Returns the new `lodash` wrapper instance.\n     * @example\n     *\n     * var array = [1, 2];\n     * var wrapped = _(array).push(3);\n     *\n     * console.log(array);\n     * // => [1, 2]\n     *\n     * wrapped = wrapped.commit();\n     * console.log(array);\n     * // => [1, 2, 3]\n     *\n     * wrapped.last();\n     * // => 3\n     *\n     * console.log(array);\n     * // => [1, 2, 3]\n     */\n    function wrapperCommit() {\n      return new LodashWrapper(this.value(), this.__chain__);\n    }\n\n    /**\n     * Gets the next value on a wrapped object following the\n     * [iterator protocol](https://mdn.io/iteration_protocols#iterator).\n     *\n     * @name next\n     * @memberOf _\n     * @since 4.0.0\n     * @category Seq\n     * @returns {Object} Returns the next iterator value.\n     * @example\n     *\n     * var wrapped = _([1, 2]);\n     *\n     * wrapped.next();\n     * // => { 'done': false, 'value': 1 }\n     *\n     * wrapped.next();\n     * // => { 'done': false, 'value': 2 }\n     *\n     * wrapped.next();\n     * // => { 'done': true, 'value': undefined }\n     */\n    function wrapperNext() {\n      if (this.__values__ === undefined) {\n        this.__values__ = toArray(this.value());\n      }\n      var done = this.__index__ >= this.__values__.length,\n          value = done ? undefined : this.__values__[this.__index__++];\n\n      return { 'done': done, 'value': value };\n    }\n\n    /**\n     * Enables the wrapper to be iterable.\n     *\n     * @name Symbol.iterator\n     * @memberOf _\n     * @since 4.0.0\n     * @category Seq\n     * @returns {Object} Returns the wrapper object.\n     * @example\n     *\n     * var wrapped = _([1, 2]);\n     *\n     * wrapped[Symbol.iterator]() === wrapped;\n     * // => true\n     *\n     * Array.from(wrapped);\n     * // => [1, 2]\n     */\n    function wrapperToIterator() {\n      return this;\n    }\n\n    /**\n     * Creates a clone of the chain sequence planting `value` as the wrapped value.\n     *\n     * @name plant\n     * @memberOf _\n     * @since 3.2.0\n     * @category Seq\n     * @param {*} value The value to plant.\n     * @returns {Object} Returns the new `lodash` wrapper instance.\n     * @example\n     *\n     * function square(n) {\n     *   return n * n;\n     * }\n     *\n     * var wrapped = _([1, 2]).map(square);\n     * var other = wrapped.plant([3, 4]);\n     *\n     * other.value();\n     * // => [9, 16]\n     *\n     * wrapped.value();\n     * // => [1, 4]\n     */\n    function wrapperPlant(value) {\n      var result,\n          parent = this;\n\n      while (parent instanceof baseLodash) {\n        var clone = wrapperClone(parent);\n        clone.__index__ = 0;\n        clone.__values__ = undefined;\n        if (result) {\n          previous.__wrapped__ = clone;\n        } else {\n          result = clone;\n        }\n        var previous = clone;\n        parent = parent.__wrapped__;\n      }\n      previous.__wrapped__ = value;\n      return result;\n    }\n\n    /**\n     * This method is the wrapper version of `_.reverse`.\n     *\n     * **Note:** This method mutates the wrapped array.\n     *\n     * @name reverse\n     * @memberOf _\n     * @since 0.1.0\n     * @category Seq\n     * @returns {Object} Returns the new `lodash` wrapper instance.\n     * @example\n     *\n     * var array = [1, 2, 3];\n     *\n     * _(array).reverse().value()\n     * // => [3, 2, 1]\n     *\n     * console.log(array);\n     * // => [3, 2, 1]\n     */\n    function wrapperReverse() {\n      var value = this.__wrapped__;\n      if (value instanceof LazyWrapper) {\n        var wrapped = value;\n        if (this.__actions__.length) {\n          wrapped = new LazyWrapper(this);\n        }\n        wrapped = wrapped.reverse();\n        wrapped.__actions__.push({\n          'func': thru,\n          'args': [reverse],\n          'thisArg': undefined\n        });\n        return new LodashWrapper(wrapped, this.__chain__);\n      }\n      return this.thru(reverse);\n    }\n\n    /**\n     * Executes the chain sequence to resolve the unwrapped value.\n     *\n     * @name value\n     * @memberOf _\n     * @since 0.1.0\n     * @alias toJSON, valueOf\n     * @category Seq\n     * @returns {*} Returns the resolved unwrapped value.\n     * @example\n     *\n     * _([1, 2, 3]).value();\n     * // => [1, 2, 3]\n     */\n    function wrapperValue() {\n      return baseWrapperValue(this.__wrapped__, this.__actions__);\n    }\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     * Creates an object composed of keys generated from the results of running\n     * each element of `collection` thru `iteratee`. The corresponding value of\n     * each key is the number of times the key was returned by `iteratee`. The\n     * iteratee is invoked with one argument: (value).\n     *\n     * @static\n     * @memberOf _\n     * @since 0.5.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n     * @returns {Object} Returns the composed aggregate object.\n     * @example\n     *\n     * _.countBy([6.1, 4.2, 6.3], Math.floor);\n     * // => { '4': 1, '6': 2 }\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.countBy(['one', 'two', 'three'], 'length');\n     * // => { '3': 2, '5': 1 }\n     */\n    var countBy = createAggregator(function(result, value, key) {\n      if (hasOwnProperty.call(result, key)) {\n        ++result[key];\n      } else {\n        baseAssignValue(result, key, 1);\n      }\n    });\n\n    /**\n     * Checks if `predicate` returns truthy for **all** elements of `collection`.\n     * Iteration is stopped once `predicate` returns falsey. The predicate is\n     * invoked with three arguments: (value, index|key, collection).\n     *\n     * **Note:** This method returns `true` for\n     * [empty collections](https://en.wikipedia.org/wiki/Empty_set) because\n     * [everything is true](https://en.wikipedia.org/wiki/Vacuous_truth) of\n     * elements of empty collections.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} [predicate=_.identity] The function invoked per iteration.\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n     * @returns {boolean} Returns `true` if all elements pass the predicate check,\n     *  else `false`.\n     * @example\n     *\n     * _.every([true, 1, null, 'yes'], Boolean);\n     * // => false\n     *\n     * var users = [\n     *   { 'user': 'barney', 'age': 36, 'active': false },\n     *   { 'user': 'fred',   'age': 40, 'active': false }\n     * ];\n     *\n     * // The `_.matches` iteratee shorthand.\n     * _.every(users, { 'user': 'barney', 'active': false });\n     * // => false\n     *\n     * // The `_.matchesProperty` iteratee shorthand.\n     * _.every(users, ['active', false]);\n     * // => true\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.every(users, 'active');\n     * // => false\n     */\n    function every(collection, predicate, guard) {\n      var func = isArray(collection) ? arrayEvery : baseEvery;\n      if (guard && isIterateeCall(collection, predicate, guard)) {\n        predicate = undefined;\n      }\n      return func(collection, getIteratee(predicate, 3));\n    }\n\n    /**\n     * Iterates over elements of `collection`, returning an array of all elements\n     * `predicate` returns truthy for. The predicate is invoked with three\n     * arguments: (value, index|key, collection).\n     *\n     * **Note:** Unlike `_.remove`, this method returns a new array.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} [predicate=_.identity] The function invoked per iteration.\n     * @returns {Array} Returns the new filtered array.\n     * @see _.reject\n     * @example\n     *\n     * var users = [\n     *   { 'user': 'barney', 'age': 36, 'active': true },\n     *   { 'user': 'fred',   'age': 40, 'active': false }\n     * ];\n     *\n     * _.filter(users, function(o) { return !o.active; });\n     * // => objects for ['fred']\n     *\n     * // The `_.matches` iteratee shorthand.\n     * _.filter(users, { 'age': 36, 'active': true });\n     * // => objects for ['barney']\n     *\n     * // The `_.matchesProperty` iteratee shorthand.\n     * _.filter(users, ['active', false]);\n     * // => objects for ['fred']\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.filter(users, 'active');\n     * // => objects for ['barney']\n     *\n     * // Combining several predicates using `_.overEvery` or `_.overSome`.\n     * _.filter(users, _.overSome([{ 'age': 36 }, ['age', 40]]));\n     * // => objects for ['fred', 'barney']\n     */\n    function filter(collection, predicate) {\n      var func = isArray(collection) ? arrayFilter : baseFilter;\n      return func(collection, getIteratee(predicate, 3));\n    }\n\n    /**\n     * Iterates over elements of `collection`, returning the first element\n     * `predicate` returns truthy for. The predicate is invoked with three\n     * arguments: (value, index|key, collection).\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to inspect.\n     * @param {Function} [predicate=_.identity] The function invoked per iteration.\n     * @param {number} [fromIndex=0] The index to search from.\n     * @returns {*} Returns the matched element, else `undefined`.\n     * @example\n     *\n     * var users = [\n     *   { 'user': 'barney',  'age': 36, 'active': true },\n     *   { 'user': 'fred',    'age': 40, 'active': false },\n     *   { 'user': 'pebbles', 'age': 1,  'active': true }\n     * ];\n     *\n     * _.find(users, function(o) { return o.age < 40; });\n     * // => object for 'barney'\n     *\n     * // The `_.matches` iteratee shorthand.\n     * _.find(users, { 'age': 1, 'active': true });\n     * // => object for 'pebbles'\n     *\n     * // The `_.matchesProperty` iteratee shorthand.\n     * _.find(users, ['active', false]);\n     * // => object for 'fred'\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.find(users, 'active');\n     * // => object for 'barney'\n     */\n    var find = createFind(findIndex);\n\n    /**\n     * This method is like `_.find` except that it iterates over elements of\n     * `collection` from right to left.\n     *\n     * @static\n     * @memberOf _\n     * @since 2.0.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to inspect.\n     * @param {Function} [predicate=_.identity] The function invoked per iteration.\n     * @param {number} [fromIndex=collection.length-1] The index to search from.\n     * @returns {*} Returns the matched element, else `undefined`.\n     * @example\n     *\n     * _.findLast([1, 2, 3, 4], function(n) {\n     *   return n % 2 == 1;\n     * });\n     * // => 3\n     */\n    var findLast = createFind(findLastIndex);\n\n    /**\n     * Creates a flattened array of values by running each element in `collection`\n     * thru `iteratee` and flattening the mapped results. The iteratee is invoked\n     * with three arguments: (value, index|key, collection).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n     * @returns {Array} Returns the new flattened array.\n     * @example\n     *\n     * function duplicate(n) {\n     *   return [n, n];\n     * }\n     *\n     * _.flatMap([1, 2], duplicate);\n     * // => [1, 1, 2, 2]\n     */\n    function flatMap(collection, iteratee) {\n      return baseFlatten(map(collection, iteratee), 1);\n    }\n\n    /**\n     * This method is like `_.flatMap` except that it recursively flattens the\n     * mapped results.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.7.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n     * @returns {Array} Returns the new flattened array.\n     * @example\n     *\n     * function duplicate(n) {\n     *   return [[[n, n]]];\n     * }\n     *\n     * _.flatMapDeep([1, 2], duplicate);\n     * // => [1, 1, 2, 2]\n     */\n    function flatMapDeep(collection, iteratee) {\n      return baseFlatten(map(collection, iteratee), INFINITY);\n    }\n\n    /**\n     * This method is like `_.flatMap` except that it recursively flattens the\n     * mapped results up to `depth` times.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.7.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n     * @param {number} [depth=1] The maximum recursion depth.\n     * @returns {Array} Returns the new flattened array.\n     * @example\n     *\n     * function duplicate(n) {\n     *   return [[[n, n]]];\n     * }\n     *\n     * _.flatMapDepth([1, 2], duplicate, 2);\n     * // => [[1, 1], [2, 2]]\n     */\n    function flatMapDepth(collection, iteratee, depth) {\n      depth = depth === undefined ? 1 : toInteger(depth);\n      return baseFlatten(map(collection, iteratee), depth);\n    }\n\n    /**\n     * Iterates over elements of `collection` and invokes `iteratee` for each element.\n     * The iteratee is invoked with three arguments: (value, index|key, collection).\n     * Iteratee functions may exit iteration early by explicitly returning `false`.\n     *\n     * **Note:** As with other \"Collections\" methods, objects with a \"length\"\n     * property are iterated like arrays. To avoid this behavior use `_.forIn`\n     * or `_.forOwn` for object iteration.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @alias each\n     * @category Collection\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n     * @returns {Array|Object} Returns `collection`.\n     * @see _.forEachRight\n     * @example\n     *\n     * _.forEach([1, 2], function(value) {\n     *   console.log(value);\n     * });\n     * // => Logs `1` then `2`.\n     *\n     * _.forEach({ 'a': 1, 'b': 2 }, function(value, key) {\n     *   console.log(key);\n     * });\n     * // => Logs 'a' then 'b' (iteration order is not guaranteed).\n     */\n    function forEach(collection, iteratee) {\n      var func = isArray(collection) ? arrayEach : baseEach;\n      return func(collection, getIteratee(iteratee, 3));\n    }\n\n    /**\n     * This method is like `_.forEach` except that it iterates over elements of\n     * `collection` from right to left.\n     *\n     * @static\n     * @memberOf _\n     * @since 2.0.0\n     * @alias eachRight\n     * @category Collection\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n     * @returns {Array|Object} Returns `collection`.\n     * @see _.forEach\n     * @example\n     *\n     * _.forEachRight([1, 2], function(value) {\n     *   console.log(value);\n     * });\n     * // => Logs `2` then `1`.\n     */\n    function forEachRight(collection, iteratee) {\n      var func = isArray(collection) ? arrayEachRight : baseEachRight;\n      return func(collection, getIteratee(iteratee, 3));\n    }\n\n    /**\n     * Creates an object composed of keys generated from the results of running\n     * each element of `collection` thru `iteratee`. The order of grouped values\n     * is determined by the order they occur in `collection`. The corresponding\n     * value of each key is an array of elements responsible for generating the\n     * key. The iteratee is invoked with one argument: (value).\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n     * @returns {Object} Returns the composed aggregate object.\n     * @example\n     *\n     * _.groupBy([6.1, 4.2, 6.3], Math.floor);\n     * // => { '4': [4.2], '6': [6.1, 6.3] }\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.groupBy(['one', 'two', 'three'], 'length');\n     * // => { '3': ['one', 'two'], '5': ['three'] }\n     */\n    var groupBy = createAggregator(function(result, value, key) {\n      if (hasOwnProperty.call(result, key)) {\n        result[key].push(value);\n      } else {\n        baseAssignValue(result, key, [value]);\n      }\n    });\n\n    /**\n     * Checks if `value` is in `collection`. If `collection` is a string, it's\n     * checked for a substring of `value`, otherwise\n     * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n     * is used for equality comparisons. If `fromIndex` is negative, it's used as\n     * the offset from the end of `collection`.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Collection\n     * @param {Array|Object|string} collection The collection to inspect.\n     * @param {*} value The value to search for.\n     * @param {number} [fromIndex=0] The index to search from.\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`.\n     * @returns {boolean} Returns `true` if `value` is found, else `false`.\n     * @example\n     *\n     * _.includes([1, 2, 3], 1);\n     * // => true\n     *\n     * _.includes([1, 2, 3], 1, 2);\n     * // => false\n     *\n     * _.includes({ 'a': 1, 'b': 2 }, 1);\n     * // => true\n     *\n     * _.includes('abcd', 'bc');\n     * // => true\n     */\n    function includes(collection, value, fromIndex, guard) {\n      collection = isArrayLike(collection) ? collection : values(collection);\n      fromIndex = (fromIndex && !guard) ? toInteger(fromIndex) : 0;\n\n      var length = collection.length;\n      if (fromIndex < 0) {\n        fromIndex = nativeMax(length + fromIndex, 0);\n      }\n      return isString(collection)\n        ? (fromIndex <= length && collection.indexOf(value, fromIndex) > -1)\n        : (!!length && baseIndexOf(collection, value, fromIndex) > -1);\n    }\n\n    /**\n     * Invokes the method at `path` of each element in `collection`, returning\n     * an array of the results of each invoked method. Any additional arguments\n     * are provided to each invoked method. If `path` is a function, it's invoked\n     * for, and `this` bound to, each element in `collection`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Array|Function|string} path The path of the method to invoke or\n     *  the function invoked per iteration.\n     * @param {...*} [args] The arguments to invoke each method with.\n     * @returns {Array} Returns the array of results.\n     * @example\n     *\n     * _.invokeMap([[5, 1, 7], [3, 2, 1]], 'sort');\n     * // => [[1, 5, 7], [1, 2, 3]]\n     *\n     * _.invokeMap([123, 456], String.prototype.split, '');\n     * // => [['1', '2', '3'], ['4', '5', '6']]\n     */\n    var invokeMap = baseRest(function(collection, path, args) {\n      var index = -1,\n          isFunc = typeof path == 'function',\n          result = isArrayLike(collection) ? Array(collection.length) : [];\n\n      baseEach(collection, function(value) {\n        result[++index] = isFunc ? apply(path, value, args) : baseInvoke(value, path, args);\n      });\n      return result;\n    });\n\n    /**\n     * Creates an object composed of keys generated from the results of running\n     * each element of `collection` thru `iteratee`. The corresponding value of\n     * each key is the last element responsible for generating the key. The\n     * iteratee is invoked with one argument: (value).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n     * @returns {Object} Returns the composed aggregate object.\n     * @example\n     *\n     * var array = [\n     *   { 'dir': 'left', 'code': 97 },\n     *   { 'dir': 'right', 'code': 100 }\n     * ];\n     *\n     * _.keyBy(array, function(o) {\n     *   return String.fromCharCode(o.code);\n     * });\n     * // => { 'a': { 'dir': 'left', 'code': 97 }, 'd': { 'dir': 'right', 'code': 100 } }\n     *\n     * _.keyBy(array, 'dir');\n     * // => { 'left': { 'dir': 'left', 'code': 97 }, 'right': { 'dir': 'right', 'code': 100 } }\n     */\n    var keyBy = createAggregator(function(result, value, key) {\n      baseAssignValue(result, key, value);\n    });\n\n    /**\n     * Creates an array of values by running each element in `collection` thru\n     * `iteratee`. The iteratee is invoked with three arguments:\n     * (value, index|key, collection).\n     *\n     * Many lodash methods are guarded to work as iteratees for methods like\n     * `_.every`, `_.filter`, `_.map`, `_.mapValues`, `_.reject`, and `_.some`.\n     *\n     * The guarded methods are:\n     * `ary`, `chunk`, `curry`, `curryRight`, `drop`, `dropRight`, `every`,\n     * `fill`, `invert`, `parseInt`, `random`, `range`, `rangeRight`, `repeat`,\n     * `sampleSize`, `slice`, `some`, `sortBy`, `split`, `take`, `takeRight`,\n     * `template`, `trim`, `trimEnd`, `trimStart`, and `words`\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n     * @returns {Array} Returns the new mapped array.\n     * @example\n     *\n     * function square(n) {\n     *   return n * n;\n     * }\n     *\n     * _.map([4, 8], square);\n     * // => [16, 64]\n     *\n     * _.map({ 'a': 4, 'b': 8 }, square);\n     * // => [16, 64] (iteration order is not guaranteed)\n     *\n     * var users = [\n     *   { 'user': 'barney' },\n     *   { 'user': 'fred' }\n     * ];\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.map(users, 'user');\n     * // => ['barney', 'fred']\n     */\n    function map(collection, iteratee) {\n      var func = isArray(collection) ? arrayMap : baseMap;\n      return func(collection, getIteratee(iteratee, 3));\n    }\n\n    /**\n     * This method is like `_.sortBy` except that it allows specifying the sort\n     * orders of the iteratees to sort by. If `orders` is unspecified, all values\n     * are sorted in ascending order. Otherwise, specify an order of \"desc\" for\n     * descending or \"asc\" for ascending sort order of corresponding values.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Array[]|Function[]|Object[]|string[]} [iteratees=[_.identity]]\n     *  The iteratees to sort by.\n     * @param {string[]} [orders] The sort orders of `iteratees`.\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`.\n     * @returns {Array} Returns the new sorted array.\n     * @example\n     *\n     * var users = [\n     *   { 'user': 'fred',   'age': 48 },\n     *   { 'user': 'barney', 'age': 34 },\n     *   { 'user': 'fred',   'age': 40 },\n     *   { 'user': 'barney', 'age': 36 }\n     * ];\n     *\n     * // Sort by `user` in ascending order and by `age` in descending order.\n     * _.orderBy(users, ['user', 'age'], ['asc', 'desc']);\n     * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 40]]\n     */\n    function orderBy(collection, iteratees, orders, guard) {\n      if (collection == null) {\n        return [];\n      }\n      if (!isArray(iteratees)) {\n        iteratees = iteratees == null ? [] : [iteratees];\n      }\n      orders = guard ? undefined : orders;\n      if (!isArray(orders)) {\n        orders = orders == null ? [] : [orders];\n      }\n      return baseOrderBy(collection, iteratees, orders);\n    }\n\n    /**\n     * Creates an array of elements split into two groups, the first of which\n     * contains elements `predicate` returns truthy for, the second of which\n     * contains elements `predicate` returns falsey for. The predicate is\n     * invoked with one argument: (value).\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} [predicate=_.identity] The function invoked per iteration.\n     * @returns {Array} Returns the array of grouped elements.\n     * @example\n     *\n     * var users = [\n     *   { 'user': 'barney',  'age': 36, 'active': false },\n     *   { 'user': 'fred',    'age': 40, 'active': true },\n     *   { 'user': 'pebbles', 'age': 1,  'active': false }\n     * ];\n     *\n     * _.partition(users, function(o) { return o.active; });\n     * // => objects for [['fred'], ['barney', 'pebbles']]\n     *\n     * // The `_.matches` iteratee shorthand.\n     * _.partition(users, { 'age': 1, 'active': false });\n     * // => objects for [['pebbles'], ['barney', 'fred']]\n     *\n     * // The `_.matchesProperty` iteratee shorthand.\n     * _.partition(users, ['active', false]);\n     * // => objects for [['barney', 'pebbles'], ['fred']]\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.partition(users, 'active');\n     * // => objects for [['fred'], ['barney', 'pebbles']]\n     */\n    var partition = createAggregator(function(result, value, key) {\n      result[key ? 0 : 1].push(value);\n    }, function() { return [[], []]; });\n\n    /**\n     * Reduces `collection` to a value which is the accumulated result of running\n     * each element in `collection` thru `iteratee`, where each successive\n     * invocation is supplied the return value of the previous. If `accumulator`\n     * is not given, the first element of `collection` is used as the initial\n     * value. The iteratee is invoked with four arguments:\n     * (accumulator, value, index|key, collection).\n     *\n     * Many lodash methods are guarded to work as iteratees for methods like\n     * `_.reduce`, `_.reduceRight`, and `_.transform`.\n     *\n     * The guarded methods are:\n     * `assign`, `defaults`, `defaultsDeep`, `includes`, `merge`, `orderBy`,\n     * and `sortBy`\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n     * @param {*} [accumulator] The initial value.\n     * @returns {*} Returns the accumulated value.\n     * @see _.reduceRight\n     * @example\n     *\n     * _.reduce([1, 2], function(sum, n) {\n     *   return sum + n;\n     * }, 0);\n     * // => 3\n     *\n     * _.reduce({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {\n     *   (result[value] || (result[value] = [])).push(key);\n     *   return result;\n     * }, {});\n     * // => { '1': ['a', 'c'], '2': ['b'] } (iteration order is not guaranteed)\n     */\n    function reduce(collection, iteratee, accumulator) {\n      var func = isArray(collection) ? arrayReduce : baseReduce,\n          initAccum = arguments.length < 3;\n\n      return func(collection, getIteratee(iteratee, 4), accumulator, initAccum, baseEach);\n    }\n\n    /**\n     * This method is like `_.reduce` except that it iterates over elements of\n     * `collection` from right to left.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n     * @param {*} [accumulator] The initial value.\n     * @returns {*} Returns the accumulated value.\n     * @see _.reduce\n     * @example\n     *\n     * var array = [[0, 1], [2, 3], [4, 5]];\n     *\n     * _.reduceRight(array, function(flattened, other) {\n     *   return flattened.concat(other);\n     * }, []);\n     * // => [4, 5, 2, 3, 0, 1]\n     */\n    function reduceRight(collection, iteratee, accumulator) {\n      var func = isArray(collection) ? arrayReduceRight : baseReduce,\n          initAccum = arguments.length < 3;\n\n      return func(collection, getIteratee(iteratee, 4), accumulator, initAccum, baseEachRight);\n    }\n\n    /**\n     * The opposite of `_.filter`; this method returns the elements of `collection`\n     * that `predicate` does **not** return truthy for.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} [predicate=_.identity] The function invoked per iteration.\n     * @returns {Array} Returns the new filtered array.\n     * @see _.filter\n     * @example\n     *\n     * var users = [\n     *   { 'user': 'barney', 'age': 36, 'active': false },\n     *   { 'user': 'fred',   'age': 40, 'active': true }\n     * ];\n     *\n     * _.reject(users, function(o) { return !o.active; });\n     * // => objects for ['fred']\n     *\n     * // The `_.matches` iteratee shorthand.\n     * _.reject(users, { 'age': 40, 'active': true });\n     * // => objects for ['barney']\n     *\n     * // The `_.matchesProperty` iteratee shorthand.\n     * _.reject(users, ['active', false]);\n     * // => objects for ['fred']\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.reject(users, 'active');\n     * // => objects for ['barney']\n     */\n    function reject(collection, predicate) {\n      var func = isArray(collection) ? arrayFilter : baseFilter;\n      return func(collection, negate(getIteratee(predicate, 3)));\n    }\n\n    /**\n     * Gets a random element from `collection`.\n     *\n     * @static\n     * @memberOf _\n     * @since 2.0.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to sample.\n     * @returns {*} Returns the random element.\n     * @example\n     *\n     * _.sample([1, 2, 3, 4]);\n     * // => 2\n     */\n    function sample(collection) {\n      var func = isArray(collection) ? arraySample : baseSample;\n      return func(collection);\n    }\n\n    /**\n     * Gets `n` random elements at unique keys from `collection` up to the\n     * size of `collection`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to sample.\n     * @param {number} [n=1] The number of elements to sample.\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n     * @returns {Array} Returns the random elements.\n     * @example\n     *\n     * _.sampleSize([1, 2, 3], 2);\n     * // => [3, 1]\n     *\n     * _.sampleSize([1, 2, 3], 4);\n     * // => [2, 3, 1]\n     */\n    function sampleSize(collection, n, guard) {\n      if ((guard ? isIterateeCall(collection, n, guard) : n === undefined)) {\n        n = 1;\n      } else {\n        n = toInteger(n);\n      }\n      var func = isArray(collection) ? arraySampleSize : baseSampleSize;\n      return func(collection, n);\n    }\n\n    /**\n     * Creates an array of shuffled values, using a version of the\n     * [Fisher-Yates shuffle](https://en.wikipedia.org/wiki/Fisher-Yates_shuffle).\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to shuffle.\n     * @returns {Array} Returns the new shuffled array.\n     * @example\n     *\n     * _.shuffle([1, 2, 3, 4]);\n     * // => [4, 1, 3, 2]\n     */\n    function shuffle(collection) {\n      var func = isArray(collection) ? arrayShuffle : baseShuffle;\n      return func(collection);\n    }\n\n    /**\n     * Gets the size of `collection` by returning its length for array-like\n     * values or the number of own enumerable string keyed properties for objects.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Collection\n     * @param {Array|Object|string} collection The collection to inspect.\n     * @returns {number} Returns the collection size.\n     * @example\n     *\n     * _.size([1, 2, 3]);\n     * // => 3\n     *\n     * _.size({ 'a': 1, 'b': 2 });\n     * // => 2\n     *\n     * _.size('pebbles');\n     * // => 7\n     */\n    function size(collection) {\n      if (collection == null) {\n        return 0;\n      }\n      if (isArrayLike(collection)) {\n        return isString(collection) ? stringSize(collection) : collection.length;\n      }\n      var tag = getTag(collection);\n      if (tag == mapTag || tag == setTag) {\n        return collection.size;\n      }\n      return baseKeys(collection).length;\n    }\n\n    /**\n     * Checks if `predicate` returns truthy for **any** element of `collection`.\n     * Iteration is stopped once `predicate` returns truthy. The predicate is\n     * invoked with three arguments: (value, index|key, collection).\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} [predicate=_.identity] The function invoked per iteration.\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n     * @returns {boolean} Returns `true` if any element passes the predicate check,\n     *  else `false`.\n     * @example\n     *\n     * _.some([null, 0, 'yes', false], Boolean);\n     * // => true\n     *\n     * var users = [\n     *   { 'user': 'barney', 'active': true },\n     *   { 'user': 'fred',   'active': false }\n     * ];\n     *\n     * // The `_.matches` iteratee shorthand.\n     * _.some(users, { 'user': 'barney', 'active': false });\n     * // => false\n     *\n     * // The `_.matchesProperty` iteratee shorthand.\n     * _.some(users, ['active', false]);\n     * // => true\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.some(users, 'active');\n     * // => true\n     */\n    function some(collection, predicate, guard) {\n      var func = isArray(collection) ? arraySome : baseSome;\n      if (guard && isIterateeCall(collection, predicate, guard)) {\n        predicate = undefined;\n      }\n      return func(collection, getIteratee(predicate, 3));\n    }\n\n    /**\n     * Creates an array of elements, sorted in ascending order by the results of\n     * running each element in a collection thru each iteratee. This method\n     * performs a stable sort, that is, it preserves the original sort order of\n     * equal elements. The iteratees are invoked with one argument: (value).\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {...(Function|Function[])} [iteratees=[_.identity]]\n     *  The iteratees to sort by.\n     * @returns {Array} Returns the new sorted array.\n     * @example\n     *\n     * var users = [\n     *   { 'user': 'fred',   'age': 48 },\n     *   { 'user': 'barney', 'age': 36 },\n     *   { 'user': 'fred',   'age': 30 },\n     *   { 'user': 'barney', 'age': 34 }\n     * ];\n     *\n     * _.sortBy(users, [function(o) { return o.user; }]);\n     * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 30]]\n     *\n     * _.sortBy(users, ['user', 'age']);\n     * // => objects for [['barney', 34], ['barney', 36], ['fred', 30], ['fred', 48]]\n     */\n    var sortBy = baseRest(function(collection, iteratees) {\n      if (collection == null) {\n        return [];\n      }\n      var length = iteratees.length;\n      if (length > 1 && isIterateeCall(collection, iteratees[0], iteratees[1])) {\n        iteratees = [];\n      } else if (length > 2 && isIterateeCall(iteratees[0], iteratees[1], iteratees[2])) {\n        iteratees = [iteratees[0]];\n      }\n      return baseOrderBy(collection, baseFlatten(iteratees, 1), []);\n    });\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     * Gets the timestamp of the number of milliseconds that have elapsed since\n     * the Unix epoch (1 January 1970 00:00:00 UTC).\n     *\n     * @static\n     * @memberOf _\n     * @since 2.4.0\n     * @category Date\n     * @returns {number} Returns the timestamp.\n     * @example\n     *\n     * _.defer(function(stamp) {\n     *   console.log(_.now() - stamp);\n     * }, _.now());\n     * // => Logs the number of milliseconds it took for the deferred invocation.\n     */\n    var now = ctxNow || function() {\n      return root.Date.now();\n    };\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     * The opposite of `_.before`; this method creates a function that invokes\n     * `func` once it's called `n` or more times.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Function\n     * @param {number} n The number of calls before `func` is invoked.\n     * @param {Function} func The function to restrict.\n     * @returns {Function} Returns the new restricted function.\n     * @example\n     *\n     * var saves = ['profile', 'settings'];\n     *\n     * var done = _.after(saves.length, function() {\n     *   console.log('done saving!');\n     * });\n     *\n     * _.forEach(saves, function(type) {\n     *   asyncSave({ 'type': type, 'complete': done });\n     * });\n     * // => Logs 'done saving!' after the two async saves have completed.\n     */\n    function after(n, func) {\n      if (typeof func != 'function') {\n        throw new TypeError(FUNC_ERROR_TEXT);\n      }\n      n = toInteger(n);\n      return function() {\n        if (--n < 1) {\n          return func.apply(this, arguments);\n        }\n      };\n    }\n\n    /**\n     * Creates a function that invokes `func`, with up to `n` arguments,\n     * ignoring any additional arguments.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Function\n     * @param {Function} func The function to cap arguments for.\n     * @param {number} [n=func.length] The arity cap.\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n     * @returns {Function} Returns the new capped function.\n     * @example\n     *\n     * _.map(['6', '8', '10'], _.ary(parseInt, 1));\n     * // => [6, 8, 10]\n     */\n    function ary(func, n, guard) {\n      n = guard ? undefined : n;\n      n = (func && n == null) ? func.length : n;\n      return createWrap(func, WRAP_ARY_FLAG, undefined, undefined, undefined, undefined, n);\n    }\n\n    /**\n     * Creates a function that invokes `func`, with the `this` binding and arguments\n     * of the created function, while it's called less than `n` times. Subsequent\n     * calls to the created function return the result of the last `func` invocation.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Function\n     * @param {number} n The number of calls at which `func` is no longer invoked.\n     * @param {Function} func The function to restrict.\n     * @returns {Function} Returns the new restricted function.\n     * @example\n     *\n     * jQuery(element).on('click', _.before(5, addContactToList));\n     * // => Allows adding up to 4 contacts to the list.\n     */\n    function before(n, func) {\n      var result;\n      if (typeof func != 'function') {\n        throw new TypeError(FUNC_ERROR_TEXT);\n      }\n      n = toInteger(n);\n      return function() {\n        if (--n > 0) {\n          result = func.apply(this, arguments);\n        }\n        if (n <= 1) {\n          func = undefined;\n        }\n        return result;\n      };\n    }\n\n    /**\n     * Creates a function that invokes `func` with the `this` binding of `thisArg`\n     * and `partials` prepended to the arguments it receives.\n     *\n     * The `_.bind.placeholder` value, which defaults to `_` in monolithic builds,\n     * may be used as a placeholder for partially applied arguments.\n     *\n     * **Note:** Unlike native `Function#bind`, this method doesn't set the \"length\"\n     * property of bound functions.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Function\n     * @param {Function} func The function to bind.\n     * @param {*} thisArg The `this` binding of `func`.\n     * @param {...*} [partials] The arguments to be partially applied.\n     * @returns {Function} Returns the new bound function.\n     * @example\n     *\n     * function greet(greeting, punctuation) {\n     *   return greeting + ' ' + this.user + punctuation;\n     * }\n     *\n     * var object = { 'user': 'fred' };\n     *\n     * var bound = _.bind(greet, object, 'hi');\n     * bound('!');\n     * // => 'hi fred!'\n     *\n     * // Bound with placeholders.\n     * var bound = _.bind(greet, object, _, '!');\n     * bound('hi');\n     * // => 'hi fred!'\n     */\n    var bind = baseRest(function(func, thisArg, partials) {\n      var bitmask = WRAP_BIND_FLAG;\n      if (partials.length) {\n        var holders = replaceHolders(partials, getHolder(bind));\n        bitmask |= WRAP_PARTIAL_FLAG;\n      }\n      return createWrap(func, bitmask, thisArg, partials, holders);\n    });\n\n    /**\n     * Creates a function that invokes the method at `object[key]` with `partials`\n     * prepended to the arguments it receives.\n     *\n     * This method differs from `_.bind` by allowing bound functions to reference\n     * methods that may be redefined or don't yet exist. See\n     * [Peter Michaux's article](http://peter.michaux.ca/articles/lazy-function-definition-pattern)\n     * for more details.\n     *\n     * The `_.bindKey.placeholder` value, which defaults to `_` in monolithic\n     * builds, may be used as a placeholder for partially applied arguments.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.10.0\n     * @category Function\n     * @param {Object} object The object to invoke the method on.\n     * @param {string} key The key of the method.\n     * @param {...*} [partials] The arguments to be partially applied.\n     * @returns {Function} Returns the new bound function.\n     * @example\n     *\n     * var object = {\n     *   'user': 'fred',\n     *   'greet': function(greeting, punctuation) {\n     *     return greeting + ' ' + this.user + punctuation;\n     *   }\n     * };\n     *\n     * var bound = _.bindKey(object, 'greet', 'hi');\n     * bound('!');\n     * // => 'hi fred!'\n     *\n     * object.greet = function(greeting, punctuation) {\n     *   return greeting + 'ya ' + this.user + punctuation;\n     * };\n     *\n     * bound('!');\n     * // => 'hiya fred!'\n     *\n     * // Bound with placeholders.\n     * var bound = _.bindKey(object, 'greet', _, '!');\n     * bound('hi');\n     * // => 'hiya fred!'\n     */\n    var bindKey = baseRest(function(object, key, partials) {\n      var bitmask = WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG;\n      if (partials.length) {\n        var holders = replaceHolders(partials, getHolder(bindKey));\n        bitmask |= WRAP_PARTIAL_FLAG;\n      }\n      return createWrap(key, bitmask, object, partials, holders);\n    });\n\n    /**\n     * Creates a function that accepts arguments of `func` and either invokes\n     * `func` returning its result, if at least `arity` number of arguments have\n     * been provided, or returns a function that accepts the remaining `func`\n     * arguments, and so on. The arity of `func` may be specified if `func.length`\n     * is not sufficient.\n     *\n     * The `_.curry.placeholder` value, which defaults to `_` in monolithic builds,\n     * may be used as a placeholder for provided arguments.\n     *\n     * **Note:** This method doesn't set the \"length\" property of curried functions.\n     *\n     * @static\n     * @memberOf _\n     * @since 2.0.0\n     * @category Function\n     * @param {Function} func The function to curry.\n     * @param {number} [arity=func.length] The arity of `func`.\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n     * @returns {Function} Returns the new curried function.\n     * @example\n     *\n     * var abc = function(a, b, c) {\n     *   return [a, b, c];\n     * };\n     *\n     * var curried = _.curry(abc);\n     *\n     * curried(1)(2)(3);\n     * // => [1, 2, 3]\n     *\n     * curried(1, 2)(3);\n     * // => [1, 2, 3]\n     *\n     * curried(1, 2, 3);\n     * // => [1, 2, 3]\n     *\n     * // Curried with placeholders.\n     * curried(1)(_, 3)(2);\n     * // => [1, 2, 3]\n     */\n    function curry(func, arity, guard) {\n      arity = guard ? undefined : arity;\n      var result = createWrap(func, WRAP_CURRY_FLAG, undefined, undefined, undefined, undefined, undefined, arity);\n      result.placeholder = curry.placeholder;\n      return result;\n    }\n\n    /**\n     * This method is like `_.curry` except that arguments are applied to `func`\n     * in the manner of `_.partialRight` instead of `_.partial`.\n     *\n     * The `_.curryRight.placeholder` value, which defaults to `_` in monolithic\n     * builds, may be used as a placeholder for provided arguments.\n     *\n     * **Note:** This method doesn't set the \"length\" property of curried functions.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Function\n     * @param {Function} func The function to curry.\n     * @param {number} [arity=func.length] The arity of `func`.\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n     * @returns {Function} Returns the new curried function.\n     * @example\n     *\n     * var abc = function(a, b, c) {\n     *   return [a, b, c];\n     * };\n     *\n     * var curried = _.curryRight(abc);\n     *\n     * curried(3)(2)(1);\n     * // => [1, 2, 3]\n     *\n     * curried(2, 3)(1);\n     * // => [1, 2, 3]\n     *\n     * curried(1, 2, 3);\n     * // => [1, 2, 3]\n     *\n     * // Curried with placeholders.\n     * curried(3)(1, _)(2);\n     * // => [1, 2, 3]\n     */\n    function curryRight(func, arity, guard) {\n      arity = guard ? undefined : arity;\n      var result = createWrap(func, WRAP_CURRY_RIGHT_FLAG, undefined, undefined, undefined, undefined, undefined, arity);\n      result.placeholder = curryRight.placeholder;\n      return result;\n    }\n\n    /**\n     * Creates a debounced function that delays invoking `func` until after `wait`\n     * milliseconds have elapsed since the last time the debounced function was\n     * invoked. The debounced function comes with a `cancel` method to cancel\n     * delayed `func` invocations and a `flush` method to immediately invoke them.\n     * Provide `options` to indicate whether `func` should be invoked on the\n     * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n     * with the last arguments provided to the debounced function. Subsequent\n     * calls to the debounced function return the result of the last `func`\n     * invocation.\n     *\n     * **Note:** If `leading` and `trailing` options are `true`, `func` is\n     * invoked on the trailing edge of the timeout only if the debounced function\n     * is invoked more than once during the `wait` timeout.\n     *\n     * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n     * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n     *\n     * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n     * for details over the differences between `_.debounce` and `_.throttle`.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Function\n     * @param {Function} func The function to debounce.\n     * @param {number} [wait=0] The number of milliseconds to delay.\n     * @param {Object} [options={}] The options object.\n     * @param {boolean} [options.leading=false]\n     *  Specify invoking on the leading edge of the timeout.\n     * @param {number} [options.maxWait]\n     *  The maximum time `func` is allowed to be delayed before it's invoked.\n     * @param {boolean} [options.trailing=true]\n     *  Specify invoking on the trailing edge of the timeout.\n     * @returns {Function} Returns the new debounced function.\n     * @example\n     *\n     * // Avoid costly calculations while the window size is in flux.\n     * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n     *\n     * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n     * jQuery(element).on('click', _.debounce(sendMail, 300, {\n     *   'leading': true,\n     *   'trailing': false\n     * }));\n     *\n     * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n     * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n     * var source = new EventSource('/stream');\n     * jQuery(source).on('message', debounced);\n     *\n     * // Cancel the trailing debounced invocation.\n     * jQuery(window).on('popstate', debounced.cancel);\n     */\n    function debounce(func, wait, options) {\n      var lastArgs,\n          lastThis,\n          maxWait,\n          result,\n          timerId,\n          lastCallTime,\n          lastInvokeTime = 0,\n          leading = false,\n          maxing = false,\n          trailing = true;\n\n      if (typeof func != 'function') {\n        throw new TypeError(FUNC_ERROR_TEXT);\n      }\n      wait = toNumber(wait) || 0;\n      if (isObject(options)) {\n        leading = !!options.leading;\n        maxing = 'maxWait' in options;\n        maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n        trailing = 'trailing' in options ? !!options.trailing : trailing;\n      }\n\n      function invokeFunc(time) {\n        var args = lastArgs,\n            thisArg = lastThis;\n\n        lastArgs = lastThis = undefined;\n        lastInvokeTime = time;\n        result = func.apply(thisArg, args);\n        return result;\n      }\n\n      function leadingEdge(time) {\n        // Reset any `maxWait` timer.\n        lastInvokeTime = time;\n        // Start the timer for the trailing edge.\n        timerId = setTimeout(timerExpired, wait);\n        // Invoke the leading edge.\n        return leading ? invokeFunc(time) : result;\n      }\n\n      function remainingWait(time) {\n        var timeSinceLastCall = time - lastCallTime,\n            timeSinceLastInvoke = time - lastInvokeTime,\n            timeWaiting = wait - timeSinceLastCall;\n\n        return maxing\n          ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke)\n          : timeWaiting;\n      }\n\n      function shouldInvoke(time) {\n        var timeSinceLastCall = time - lastCallTime,\n            timeSinceLastInvoke = time - lastInvokeTime;\n\n        // Either this is the first call, activity has stopped and we're at the\n        // trailing edge, the system time has gone backwards and we're treating\n        // it as the trailing edge, or we've hit the `maxWait` limit.\n        return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n          (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n      }\n\n      function timerExpired() {\n        var time = now();\n        if (shouldInvoke(time)) {\n          return trailingEdge(time);\n        }\n        // Restart the timer.\n        timerId = setTimeout(timerExpired, remainingWait(time));\n      }\n\n      function trailingEdge(time) {\n        timerId = undefined;\n\n        // Only invoke if we have `lastArgs` which means `func` has been\n        // debounced at least once.\n        if (trailing && lastArgs) {\n          return invokeFunc(time);\n        }\n        lastArgs = lastThis = undefined;\n        return result;\n      }\n\n      function cancel() {\n        if (timerId !== undefined) {\n          clearTimeout(timerId);\n        }\n        lastInvokeTime = 0;\n        lastArgs = lastCallTime = lastThis = timerId = undefined;\n      }\n\n      function flush() {\n        return timerId === undefined ? result : trailingEdge(now());\n      }\n\n      function debounced() {\n        var time = now(),\n            isInvoking = shouldInvoke(time);\n\n        lastArgs = arguments;\n        lastThis = this;\n        lastCallTime = time;\n\n        if (isInvoking) {\n          if (timerId === undefined) {\n            return leadingEdge(lastCallTime);\n          }\n          if (maxing) {\n            // Handle invocations in a tight loop.\n            clearTimeout(timerId);\n            timerId = setTimeout(timerExpired, wait);\n            return invokeFunc(lastCallTime);\n          }\n        }\n        if (timerId === undefined) {\n          timerId = setTimeout(timerExpired, wait);\n        }\n        return result;\n      }\n      debounced.cancel = cancel;\n      debounced.flush = flush;\n      return debounced;\n    }\n\n    /**\n     * Defers invoking the `func` until the current call stack has cleared. Any\n     * additional arguments are provided to `func` when it's invoked.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Function\n     * @param {Function} func The function to defer.\n     * @param {...*} [args] The arguments to invoke `func` with.\n     * @returns {number} Returns the timer id.\n     * @example\n     *\n     * _.defer(function(text) {\n     *   console.log(text);\n     * }, 'deferred');\n     * // => Logs 'deferred' after one millisecond.\n     */\n    var defer = baseRest(function(func, args) {\n      return baseDelay(func, 1, args);\n    });\n\n    /**\n     * Invokes `func` after `wait` milliseconds. Any additional arguments are\n     * provided to `func` when it's invoked.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Function\n     * @param {Function} func The function to delay.\n     * @param {number} wait The number of milliseconds to delay invocation.\n     * @param {...*} [args] The arguments to invoke `func` with.\n     * @returns {number} Returns the timer id.\n     * @example\n     *\n     * _.delay(function(text) {\n     *   console.log(text);\n     * }, 1000, 'later');\n     * // => Logs 'later' after one second.\n     */\n    var delay = baseRest(function(func, wait, args) {\n      return baseDelay(func, toNumber(wait) || 0, args);\n    });\n\n    /**\n     * Creates a function that invokes `func` with arguments reversed.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Function\n     * @param {Function} func The function to flip arguments for.\n     * @returns {Function} Returns the new flipped function.\n     * @example\n     *\n     * var flipped = _.flip(function() {\n     *   return _.toArray(arguments);\n     * });\n     *\n     * flipped('a', 'b', 'c', 'd');\n     * // => ['d', 'c', 'b', 'a']\n     */\n    function flip(func) {\n      return createWrap(func, WRAP_FLIP_FLAG);\n    }\n\n    /**\n     * Creates a function that memoizes the result of `func`. If `resolver` is\n     * provided, it determines the cache key for storing the result based on the\n     * arguments provided to the memoized function. By default, the first argument\n     * provided to the memoized function is used as the map cache key. The `func`\n     * is invoked with the `this` binding of the memoized function.\n     *\n     * **Note:** The cache is exposed as the `cache` property on the memoized\n     * function. Its creation may be customized by replacing the `_.memoize.Cache`\n     * constructor with one whose instances implement the\n     * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n     * method interface of `clear`, `delete`, `get`, `has`, and `set`.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Function\n     * @param {Function} func The function to have its output memoized.\n     * @param {Function} [resolver] The function to resolve the cache key.\n     * @returns {Function} Returns the new memoized function.\n     * @example\n     *\n     * var object = { 'a': 1, 'b': 2 };\n     * var other = { 'c': 3, 'd': 4 };\n     *\n     * var values = _.memoize(_.values);\n     * values(object);\n     * // => [1, 2]\n     *\n     * values(other);\n     * // => [3, 4]\n     *\n     * object.a = 2;\n     * values(object);\n     * // => [1, 2]\n     *\n     * // Modify the result cache.\n     * values.cache.set(object, ['a', 'b']);\n     * values(object);\n     * // => ['a', 'b']\n     *\n     * // Replace `_.memoize.Cache`.\n     * _.memoize.Cache = WeakMap;\n     */\n    function memoize(func, resolver) {\n      if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {\n        throw new TypeError(FUNC_ERROR_TEXT);\n      }\n      var memoized = function() {\n        var args = arguments,\n            key = resolver ? resolver.apply(this, args) : args[0],\n            cache = memoized.cache;\n\n        if (cache.has(key)) {\n          return cache.get(key);\n        }\n        var result = func.apply(this, args);\n        memoized.cache = cache.set(key, result) || cache;\n        return result;\n      };\n      memoized.cache = new (memoize.Cache || MapCache);\n      return memoized;\n    }\n\n    // Expose `MapCache`.\n    memoize.Cache = MapCache;\n\n    /**\n     * Creates a function that negates the result of the predicate `func`. The\n     * `func` predicate is invoked with the `this` binding and arguments of the\n     * created function.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Function\n     * @param {Function} predicate The predicate to negate.\n     * @returns {Function} Returns the new negated function.\n     * @example\n     *\n     * function isEven(n) {\n     *   return n % 2 == 0;\n     * }\n     *\n     * _.filter([1, 2, 3, 4, 5, 6], _.negate(isEven));\n     * // => [1, 3, 5]\n     */\n    function negate(predicate) {\n      if (typeof predicate != 'function') {\n        throw new TypeError(FUNC_ERROR_TEXT);\n      }\n      return function() {\n        var args = arguments;\n        switch (args.length) {\n          case 0: return !predicate.call(this);\n          case 1: return !predicate.call(this, args[0]);\n          case 2: return !predicate.call(this, args[0], args[1]);\n          case 3: return !predicate.call(this, args[0], args[1], args[2]);\n        }\n        return !predicate.apply(this, args);\n      };\n    }\n\n    /**\n     * Creates a function that is restricted to invoking `func` once. Repeat calls\n     * to the function return the value of the first invocation. The `func` is\n     * invoked with the `this` binding and arguments of the created function.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Function\n     * @param {Function} func The function to restrict.\n     * @returns {Function} Returns the new restricted function.\n     * @example\n     *\n     * var initialize = _.once(createApplication);\n     * initialize();\n     * initialize();\n     * // => `createApplication` is invoked once\n     */\n    function once(func) {\n      return before(2, func);\n    }\n\n    /**\n     * Creates a function that invokes `func` with its arguments transformed.\n     *\n     * @static\n     * @since 4.0.0\n     * @memberOf _\n     * @category Function\n     * @param {Function} func The function to wrap.\n     * @param {...(Function|Function[])} [transforms=[_.identity]]\n     *  The argument transforms.\n     * @returns {Function} Returns the new function.\n     * @example\n     *\n     * function doubled(n) {\n     *   return n * 2;\n     * }\n     *\n     * function square(n) {\n     *   return n * n;\n     * }\n     *\n     * var func = _.overArgs(function(x, y) {\n     *   return [x, y];\n     * }, [square, doubled]);\n     *\n     * func(9, 3);\n     * // => [81, 6]\n     *\n     * func(10, 5);\n     * // => [100, 10]\n     */\n    var overArgs = castRest(function(func, transforms) {\n      transforms = (transforms.length == 1 && isArray(transforms[0]))\n        ? arrayMap(transforms[0], baseUnary(getIteratee()))\n        : arrayMap(baseFlatten(transforms, 1), baseUnary(getIteratee()));\n\n      var funcsLength = transforms.length;\n      return baseRest(function(args) {\n        var index = -1,\n            length = nativeMin(args.length, funcsLength);\n\n        while (++index < length) {\n          args[index] = transforms[index].call(this, args[index]);\n        }\n        return apply(func, this, args);\n      });\n    });\n\n    /**\n     * Creates a function that invokes `func` with `partials` prepended to the\n     * arguments it receives. This method is like `_.bind` except it does **not**\n     * alter the `this` binding.\n     *\n     * The `_.partial.placeholder` value, which defaults to `_` in monolithic\n     * builds, may be used as a placeholder for partially applied arguments.\n     *\n     * **Note:** This method doesn't set the \"length\" property of partially\n     * applied functions.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.2.0\n     * @category Function\n     * @param {Function} func The function to partially apply arguments to.\n     * @param {...*} [partials] The arguments to be partially applied.\n     * @returns {Function} Returns the new partially applied function.\n     * @example\n     *\n     * function greet(greeting, name) {\n     *   return greeting + ' ' + name;\n     * }\n     *\n     * var sayHelloTo = _.partial(greet, 'hello');\n     * sayHelloTo('fred');\n     * // => 'hello fred'\n     *\n     * // Partially applied with placeholders.\n     * var greetFred = _.partial(greet, _, 'fred');\n     * greetFred('hi');\n     * // => 'hi fred'\n     */\n    var partial = baseRest(function(func, partials) {\n      var holders = replaceHolders(partials, getHolder(partial));\n      return createWrap(func, WRAP_PARTIAL_FLAG, undefined, partials, holders);\n    });\n\n    /**\n     * This method is like `_.partial` except that partially applied arguments\n     * are appended to the arguments it receives.\n     *\n     * The `_.partialRight.placeholder` value, which defaults to `_` in monolithic\n     * builds, may be used as a placeholder for partially applied arguments.\n     *\n     * **Note:** This method doesn't set the \"length\" property of partially\n     * applied functions.\n     *\n     * @static\n     * @memberOf _\n     * @since 1.0.0\n     * @category Function\n     * @param {Function} func The function to partially apply arguments to.\n     * @param {...*} [partials] The arguments to be partially applied.\n     * @returns {Function} Returns the new partially applied function.\n     * @example\n     *\n     * function greet(greeting, name) {\n     *   return greeting + ' ' + name;\n     * }\n     *\n     * var greetFred = _.partialRight(greet, 'fred');\n     * greetFred('hi');\n     * // => 'hi fred'\n     *\n     * // Partially applied with placeholders.\n     * var sayHelloTo = _.partialRight(greet, 'hello', _);\n     * sayHelloTo('fred');\n     * // => 'hello fred'\n     */\n    var partialRight = baseRest(function(func, partials) {\n      var holders = replaceHolders(partials, getHolder(partialRight));\n      return createWrap(func, WRAP_PARTIAL_RIGHT_FLAG, undefined, partials, holders);\n    });\n\n    /**\n     * Creates a function that invokes `func` with arguments arranged according\n     * to the specified `indexes` where the argument value at the first index is\n     * provided as the first argument, the argument value at the second index is\n     * provided as the second argument, and so on.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Function\n     * @param {Function} func The function to rearrange arguments for.\n     * @param {...(number|number[])} indexes The arranged argument indexes.\n     * @returns {Function} Returns the new function.\n     * @example\n     *\n     * var rearged = _.rearg(function(a, b, c) {\n     *   return [a, b, c];\n     * }, [2, 0, 1]);\n     *\n     * rearged('b', 'c', 'a')\n     * // => ['a', 'b', 'c']\n     */\n    var rearg = flatRest(function(func, indexes) {\n      return createWrap(func, WRAP_REARG_FLAG, undefined, undefined, undefined, indexes);\n    });\n\n    /**\n     * Creates a function that invokes `func` with the `this` binding of the\n     * created function and arguments from `start` and beyond provided as\n     * an array.\n     *\n     * **Note:** This method is based on the\n     * [rest parameter](https://mdn.io/rest_parameters).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Function\n     * @param {Function} func The function to apply a rest parameter to.\n     * @param {number} [start=func.length-1] The start position of the rest parameter.\n     * @returns {Function} Returns the new function.\n     * @example\n     *\n     * var say = _.rest(function(what, names) {\n     *   return what + ' ' + _.initial(names).join(', ') +\n     *     (_.size(names) > 1 ? ', & ' : '') + _.last(names);\n     * });\n     *\n     * say('hello', 'fred', 'barney', 'pebbles');\n     * // => 'hello fred, barney, & pebbles'\n     */\n    function rest(func, start) {\n      if (typeof func != 'function') {\n        throw new TypeError(FUNC_ERROR_TEXT);\n      }\n      start = start === undefined ? start : toInteger(start);\n      return baseRest(func, start);\n    }\n\n    /**\n     * Creates a function that invokes `func` with the `this` binding of the\n     * create function and an array of arguments much like\n     * [`Function#apply`](http://www.ecma-international.org/ecma-262/7.0/#sec-function.prototype.apply).\n     *\n     * **Note:** This method is based on the\n     * [spread operator](https://mdn.io/spread_operator).\n     *\n     * @static\n     * @memberOf _\n     * @since 3.2.0\n     * @category Function\n     * @param {Function} func The function to spread arguments over.\n     * @param {number} [start=0] The start position of the spread.\n     * @returns {Function} Returns the new function.\n     * @example\n     *\n     * var say = _.spread(function(who, what) {\n     *   return who + ' says ' + what;\n     * });\n     *\n     * say(['fred', 'hello']);\n     * // => 'fred says hello'\n     *\n     * var numbers = Promise.all([\n     *   Promise.resolve(40),\n     *   Promise.resolve(36)\n     * ]);\n     *\n     * numbers.then(_.spread(function(x, y) {\n     *   return x + y;\n     * }));\n     * // => a Promise of 76\n     */\n    function spread(func, start) {\n      if (typeof func != 'function') {\n        throw new TypeError(FUNC_ERROR_TEXT);\n      }\n      start = start == null ? 0 : nativeMax(toInteger(start), 0);\n      return baseRest(function(args) {\n        var array = args[start],\n            otherArgs = castSlice(args, 0, start);\n\n        if (array) {\n          arrayPush(otherArgs, array);\n        }\n        return apply(func, this, otherArgs);\n      });\n    }\n\n    /**\n     * Creates a throttled function that only invokes `func` at most once per\n     * every `wait` milliseconds. The throttled function comes with a `cancel`\n     * method to cancel delayed `func` invocations and a `flush` method to\n     * immediately invoke them. Provide `options` to indicate whether `func`\n     * should be invoked on the leading and/or trailing edge of the `wait`\n     * timeout. The `func` is invoked with the last arguments provided to the\n     * throttled function. Subsequent calls to the throttled function return the\n     * result of the last `func` invocation.\n     *\n     * **Note:** If `leading` and `trailing` options are `true`, `func` is\n     * invoked on the trailing edge of the timeout only if the throttled function\n     * is invoked more than once during the `wait` timeout.\n     *\n     * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n     * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n     *\n     * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n     * for details over the differences between `_.throttle` and `_.debounce`.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Function\n     * @param {Function} func The function to throttle.\n     * @param {number} [wait=0] The number of milliseconds to throttle invocations to.\n     * @param {Object} [options={}] The options object.\n     * @param {boolean} [options.leading=true]\n     *  Specify invoking on the leading edge of the timeout.\n     * @param {boolean} [options.trailing=true]\n     *  Specify invoking on the trailing edge of the timeout.\n     * @returns {Function} Returns the new throttled function.\n     * @example\n     *\n     * // Avoid excessively updating the position while scrolling.\n     * jQuery(window).on('scroll', _.throttle(updatePosition, 100));\n     *\n     * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes.\n     * var throttled = _.throttle(renewToken, 300000, { 'trailing': false });\n     * jQuery(element).on('click', throttled);\n     *\n     * // Cancel the trailing throttled invocation.\n     * jQuery(window).on('popstate', throttled.cancel);\n     */\n    function throttle(func, wait, options) {\n      var leading = true,\n          trailing = true;\n\n      if (typeof func != 'function') {\n        throw new TypeError(FUNC_ERROR_TEXT);\n      }\n      if (isObject(options)) {\n        leading = 'leading' in options ? !!options.leading : leading;\n        trailing = 'trailing' in options ? !!options.trailing : trailing;\n      }\n      return debounce(func, wait, {\n        'leading': leading,\n        'maxWait': wait,\n        'trailing': trailing\n      });\n    }\n\n    /**\n     * Creates a function that accepts up to one argument, ignoring any\n     * additional arguments.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Function\n     * @param {Function} func The function to cap arguments for.\n     * @returns {Function} Returns the new capped function.\n     * @example\n     *\n     * _.map(['6', '8', '10'], _.unary(parseInt));\n     * // => [6, 8, 10]\n     */\n    function unary(func) {\n      return ary(func, 1);\n    }\n\n    /**\n     * Creates a function that provides `value` to `wrapper` as its first\n     * argument. Any additional arguments provided to the function are appended\n     * to those provided to the `wrapper`. The wrapper is invoked with the `this`\n     * binding of the created function.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Function\n     * @param {*} value The value to wrap.\n     * @param {Function} [wrapper=identity] The wrapper function.\n     * @returns {Function} Returns the new function.\n     * @example\n     *\n     * var p = _.wrap(_.escape, function(func, text) {\n     *   return '<p>' + func(text) + '</p>';\n     * });\n     *\n     * p('fred, barney, & pebbles');\n     * // => '<p>fred, barney, &amp; pebbles</p>'\n     */\n    function wrap(value, wrapper) {\n      return partial(castFunction(wrapper), value);\n    }\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     * Casts `value` as an array if it's not one.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.4.0\n     * @category Lang\n     * @param {*} value The value to inspect.\n     * @returns {Array} Returns the cast array.\n     * @example\n     *\n     * _.castArray(1);\n     * // => [1]\n     *\n     * _.castArray({ 'a': 1 });\n     * // => [{ 'a': 1 }]\n     *\n     * _.castArray('abc');\n     * // => ['abc']\n     *\n     * _.castArray(null);\n     * // => [null]\n     *\n     * _.castArray(undefined);\n     * // => [undefined]\n     *\n     * _.castArray();\n     * // => []\n     *\n     * var array = [1, 2, 3];\n     * console.log(_.castArray(array) === array);\n     * // => true\n     */\n    function castArray() {\n      if (!arguments.length) {\n        return [];\n      }\n      var value = arguments[0];\n      return isArray(value) ? value : [value];\n    }\n\n    /**\n     * Creates a shallow clone of `value`.\n     *\n     * **Note:** This method is loosely based on the\n     * [structured clone algorithm](https://mdn.io/Structured_clone_algorithm)\n     * and supports cloning arrays, array buffers, booleans, date objects, maps,\n     * numbers, `Object` objects, regexes, sets, strings, symbols, and typed\n     * arrays. The own enumerable properties of `arguments` objects are cloned\n     * as plain objects. An empty object is returned for uncloneable values such\n     * as error objects, functions, DOM nodes, and WeakMaps.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Lang\n     * @param {*} value The value to clone.\n     * @returns {*} Returns the cloned value.\n     * @see _.cloneDeep\n     * @example\n     *\n     * var objects = [{ 'a': 1 }, { 'b': 2 }];\n     *\n     * var shallow = _.clone(objects);\n     * console.log(shallow[0] === objects[0]);\n     * // => true\n     */\n    function clone(value) {\n      return baseClone(value, CLONE_SYMBOLS_FLAG);\n    }\n\n    /**\n     * This method is like `_.clone` except that it accepts `customizer` which\n     * is invoked to produce the cloned value. If `customizer` returns `undefined`,\n     * cloning is handled by the method instead. The `customizer` is invoked with\n     * up to four arguments; (value [, index|key, object, stack]).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Lang\n     * @param {*} value The value to clone.\n     * @param {Function} [customizer] The function to customize cloning.\n     * @returns {*} Returns the cloned value.\n     * @see _.cloneDeepWith\n     * @example\n     *\n     * function customizer(value) {\n     *   if (_.isElement(value)) {\n     *     return value.cloneNode(false);\n     *   }\n     * }\n     *\n     * var el = _.cloneWith(document.body, customizer);\n     *\n     * console.log(el === document.body);\n     * // => false\n     * console.log(el.nodeName);\n     * // => 'BODY'\n     * console.log(el.childNodes.length);\n     * // => 0\n     */\n    function cloneWith(value, customizer) {\n      customizer = typeof customizer == 'function' ? customizer : undefined;\n      return baseClone(value, CLONE_SYMBOLS_FLAG, customizer);\n    }\n\n    /**\n     * This method is like `_.clone` except that it recursively clones `value`.\n     *\n     * @static\n     * @memberOf _\n     * @since 1.0.0\n     * @category Lang\n     * @param {*} value The value to recursively clone.\n     * @returns {*} Returns the deep cloned value.\n     * @see _.clone\n     * @example\n     *\n     * var objects = [{ 'a': 1 }, { 'b': 2 }];\n     *\n     * var deep = _.cloneDeep(objects);\n     * console.log(deep[0] === objects[0]);\n     * // => false\n     */\n    function cloneDeep(value) {\n      return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG);\n    }\n\n    /**\n     * This method is like `_.cloneWith` except that it recursively clones `value`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Lang\n     * @param {*} value The value to recursively clone.\n     * @param {Function} [customizer] The function to customize cloning.\n     * @returns {*} Returns the deep cloned value.\n     * @see _.cloneWith\n     * @example\n     *\n     * function customizer(value) {\n     *   if (_.isElement(value)) {\n     *     return value.cloneNode(true);\n     *   }\n     * }\n     *\n     * var el = _.cloneDeepWith(document.body, customizer);\n     *\n     * console.log(el === document.body);\n     * // => false\n     * console.log(el.nodeName);\n     * // => 'BODY'\n     * console.log(el.childNodes.length);\n     * // => 20\n     */\n    function cloneDeepWith(value, customizer) {\n      customizer = typeof customizer == 'function' ? customizer : undefined;\n      return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG, customizer);\n    }\n\n    /**\n     * Checks if `object` conforms to `source` by invoking the predicate\n     * properties of `source` with the corresponding property values of `object`.\n     *\n     * **Note:** This method is equivalent to `_.conforms` when `source` is\n     * partially applied.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.14.0\n     * @category Lang\n     * @param {Object} object The object to inspect.\n     * @param {Object} source The object of property predicates to conform to.\n     * @returns {boolean} Returns `true` if `object` conforms, else `false`.\n     * @example\n     *\n     * var object = { 'a': 1, 'b': 2 };\n     *\n     * _.conformsTo(object, { 'b': function(n) { return n > 1; } });\n     * // => true\n     *\n     * _.conformsTo(object, { 'b': function(n) { return n > 2; } });\n     * // => false\n     */\n    function conformsTo(object, source) {\n      return source == null || baseConformsTo(object, source, keys(source));\n    }\n\n    /**\n     * Performs a\n     * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n     * comparison between two values to determine if they are equivalent.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Lang\n     * @param {*} value The value to compare.\n     * @param {*} other The other value to compare.\n     * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n     * @example\n     *\n     * var object = { 'a': 1 };\n     * var other = { 'a': 1 };\n     *\n     * _.eq(object, object);\n     * // => true\n     *\n     * _.eq(object, other);\n     * // => false\n     *\n     * _.eq('a', 'a');\n     * // => true\n     *\n     * _.eq('a', Object('a'));\n     * // => false\n     *\n     * _.eq(NaN, NaN);\n     * // => true\n     */\n    function eq(value, other) {\n      return value === other || (value !== value && other !== other);\n    }\n\n    /**\n     * Checks if `value` is greater than `other`.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.9.0\n     * @category Lang\n     * @param {*} value The value to compare.\n     * @param {*} other The other value to compare.\n     * @returns {boolean} Returns `true` if `value` is greater than `other`,\n     *  else `false`.\n     * @see _.lt\n     * @example\n     *\n     * _.gt(3, 1);\n     * // => true\n     *\n     * _.gt(3, 3);\n     * // => false\n     *\n     * _.gt(1, 3);\n     * // => false\n     */\n    var gt = createRelationalOperation(baseGt);\n\n    /**\n     * Checks if `value` is greater than or equal to `other`.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.9.0\n     * @category Lang\n     * @param {*} value The value to compare.\n     * @param {*} other The other value to compare.\n     * @returns {boolean} Returns `true` if `value` is greater than or equal to\n     *  `other`, else `false`.\n     * @see _.lte\n     * @example\n     *\n     * _.gte(3, 1);\n     * // => true\n     *\n     * _.gte(3, 3);\n     * // => true\n     *\n     * _.gte(1, 3);\n     * // => false\n     */\n    var gte = createRelationalOperation(function(value, other) {\n      return value >= other;\n    });\n\n    /**\n     * Checks if `value` is likely an `arguments` object.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n     *  else `false`.\n     * @example\n     *\n     * _.isArguments(function() { return arguments; }());\n     * // => true\n     *\n     * _.isArguments([1, 2, 3]);\n     * // => false\n     */\n    var isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n      return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n        !propertyIsEnumerable.call(value, 'callee');\n    };\n\n    /**\n     * Checks if `value` is classified as an `Array` object.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n     * @example\n     *\n     * _.isArray([1, 2, 3]);\n     * // => true\n     *\n     * _.isArray(document.body.children);\n     * // => false\n     *\n     * _.isArray('abc');\n     * // => false\n     *\n     * _.isArray(_.noop);\n     * // => false\n     */\n    var isArray = Array.isArray;\n\n    /**\n     * Checks if `value` is classified as an `ArrayBuffer` object.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.3.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is an array buffer, else `false`.\n     * @example\n     *\n     * _.isArrayBuffer(new ArrayBuffer(2));\n     * // => true\n     *\n     * _.isArrayBuffer(new Array(2));\n     * // => false\n     */\n    var isArrayBuffer = nodeIsArrayBuffer ? baseUnary(nodeIsArrayBuffer) : baseIsArrayBuffer;\n\n    /**\n     * Checks if `value` is array-like. A value is considered array-like if it's\n     * not a function and has a `value.length` that's an integer greater than or\n     * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n     * @example\n     *\n     * _.isArrayLike([1, 2, 3]);\n     * // => true\n     *\n     * _.isArrayLike(document.body.children);\n     * // => true\n     *\n     * _.isArrayLike('abc');\n     * // => true\n     *\n     * _.isArrayLike(_.noop);\n     * // => false\n     */\n    function isArrayLike(value) {\n      return value != null && isLength(value.length) && !isFunction(value);\n    }\n\n    /**\n     * This method is like `_.isArrayLike` except that it also checks if `value`\n     * is an object.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is an array-like object,\n     *  else `false`.\n     * @example\n     *\n     * _.isArrayLikeObject([1, 2, 3]);\n     * // => true\n     *\n     * _.isArrayLikeObject(document.body.children);\n     * // => true\n     *\n     * _.isArrayLikeObject('abc');\n     * // => false\n     *\n     * _.isArrayLikeObject(_.noop);\n     * // => false\n     */\n    function isArrayLikeObject(value) {\n      return isObjectLike(value) && isArrayLike(value);\n    }\n\n    /**\n     * Checks if `value` is classified as a boolean primitive or object.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a boolean, else `false`.\n     * @example\n     *\n     * _.isBoolean(false);\n     * // => true\n     *\n     * _.isBoolean(null);\n     * // => false\n     */\n    function isBoolean(value) {\n      return value === true || value === false ||\n        (isObjectLike(value) && baseGetTag(value) == boolTag);\n    }\n\n    /**\n     * Checks if `value` is a buffer.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.3.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n     * @example\n     *\n     * _.isBuffer(new Buffer(2));\n     * // => true\n     *\n     * _.isBuffer(new Uint8Array(2));\n     * // => false\n     */\n    var isBuffer = nativeIsBuffer || stubFalse;\n\n    /**\n     * Checks if `value` is classified as a `Date` object.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a date object, else `false`.\n     * @example\n     *\n     * _.isDate(new Date);\n     * // => true\n     *\n     * _.isDate('Mon April 23 2012');\n     * // => false\n     */\n    var isDate = nodeIsDate ? baseUnary(nodeIsDate) : baseIsDate;\n\n    /**\n     * Checks if `value` is likely a DOM element.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a DOM element, else `false`.\n     * @example\n     *\n     * _.isElement(document.body);\n     * // => true\n     *\n     * _.isElement('<body>');\n     * // => false\n     */\n    function isElement(value) {\n      return isObjectLike(value) && value.nodeType === 1 && !isPlainObject(value);\n    }\n\n    /**\n     * Checks if `value` is an empty object, collection, map, or set.\n     *\n     * Objects are considered empty if they have no own enumerable string keyed\n     * properties.\n     *\n     * Array-like values such as `arguments` objects, arrays, buffers, strings, or\n     * jQuery-like collections are considered empty if they have a `length` of `0`.\n     * Similarly, maps and sets are considered empty if they have a `size` of `0`.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is empty, else `false`.\n     * @example\n     *\n     * _.isEmpty(null);\n     * // => true\n     *\n     * _.isEmpty(true);\n     * // => true\n     *\n     * _.isEmpty(1);\n     * // => true\n     *\n     * _.isEmpty([1, 2, 3]);\n     * // => false\n     *\n     * _.isEmpty({ 'a': 1 });\n     * // => false\n     */\n    function isEmpty(value) {\n      if (value == null) {\n        return true;\n      }\n      if (isArrayLike(value) &&\n          (isArray(value) || typeof value == 'string' || typeof value.splice == 'function' ||\n            isBuffer(value) || isTypedArray(value) || isArguments(value))) {\n        return !value.length;\n      }\n      var tag = getTag(value);\n      if (tag == mapTag || tag == setTag) {\n        return !value.size;\n      }\n      if (isPrototype(value)) {\n        return !baseKeys(value).length;\n      }\n      for (var key in value) {\n        if (hasOwnProperty.call(value, key)) {\n          return false;\n        }\n      }\n      return true;\n    }\n\n    /**\n     * Performs a deep comparison between two values to determine if they are\n     * equivalent.\n     *\n     * **Note:** This method supports comparing arrays, array buffers, booleans,\n     * date objects, error objects, maps, numbers, `Object` objects, regexes,\n     * sets, strings, symbols, and typed arrays. `Object` objects are compared\n     * by their own, not inherited, enumerable properties. Functions and DOM\n     * nodes are compared by strict equality, i.e. `===`.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Lang\n     * @param {*} value The value to compare.\n     * @param {*} other The other value to compare.\n     * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n     * @example\n     *\n     * var object = { 'a': 1 };\n     * var other = { 'a': 1 };\n     *\n     * _.isEqual(object, other);\n     * // => true\n     *\n     * object === other;\n     * // => false\n     */\n    function isEqual(value, other) {\n      return baseIsEqual(value, other);\n    }\n\n    /**\n     * This method is like `_.isEqual` except that it accepts `customizer` which\n     * is invoked to compare values. If `customizer` returns `undefined`, comparisons\n     * are handled by the method instead. The `customizer` is invoked with up to\n     * six arguments: (objValue, othValue [, index|key, object, other, stack]).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Lang\n     * @param {*} value The value to compare.\n     * @param {*} other The other value to compare.\n     * @param {Function} [customizer] The function to customize comparisons.\n     * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n     * @example\n     *\n     * function isGreeting(value) {\n     *   return /^h(?:i|ello)$/.test(value);\n     * }\n     *\n     * function customizer(objValue, othValue) {\n     *   if (isGreeting(objValue) && isGreeting(othValue)) {\n     *     return true;\n     *   }\n     * }\n     *\n     * var array = ['hello', 'goodbye'];\n     * var other = ['hi', 'goodbye'];\n     *\n     * _.isEqualWith(array, other, customizer);\n     * // => true\n     */\n    function isEqualWith(value, other, customizer) {\n      customizer = typeof customizer == 'function' ? customizer : undefined;\n      var result = customizer ? customizer(value, other) : undefined;\n      return result === undefined ? baseIsEqual(value, other, undefined, customizer) : !!result;\n    }\n\n    /**\n     * Checks if `value` is an `Error`, `EvalError`, `RangeError`, `ReferenceError`,\n     * `SyntaxError`, `TypeError`, or `URIError` object.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is an error object, else `false`.\n     * @example\n     *\n     * _.isError(new Error);\n     * // => true\n     *\n     * _.isError(Error);\n     * // => false\n     */\n    function isError(value) {\n      if (!isObjectLike(value)) {\n        return false;\n      }\n      var tag = baseGetTag(value);\n      return tag == errorTag || tag == domExcTag ||\n        (typeof value.message == 'string' && typeof value.name == 'string' && !isPlainObject(value));\n    }\n\n    /**\n     * Checks if `value` is a finite primitive number.\n     *\n     * **Note:** This method is based on\n     * [`Number.isFinite`](https://mdn.io/Number/isFinite).\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a finite number, else `false`.\n     * @example\n     *\n     * _.isFinite(3);\n     * // => true\n     *\n     * _.isFinite(Number.MIN_VALUE);\n     * // => true\n     *\n     * _.isFinite(Infinity);\n     * // => false\n     *\n     * _.isFinite('3');\n     * // => false\n     */\n    function isFinite(value) {\n      return typeof value == 'number' && nativeIsFinite(value);\n    }\n\n    /**\n     * Checks if `value` is classified as a `Function` object.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n     * @example\n     *\n     * _.isFunction(_);\n     * // => true\n     *\n     * _.isFunction(/abc/);\n     * // => false\n     */\n    function isFunction(value) {\n      if (!isObject(value)) {\n        return false;\n      }\n      // The use of `Object#toString` avoids issues with the `typeof` operator\n      // in Safari 9 which returns 'object' for typed arrays and other constructors.\n      var tag = baseGetTag(value);\n      return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n    }\n\n    /**\n     * Checks if `value` is an integer.\n     *\n     * **Note:** This method is based on\n     * [`Number.isInteger`](https://mdn.io/Number/isInteger).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is an integer, else `false`.\n     * @example\n     *\n     * _.isInteger(3);\n     * // => true\n     *\n     * _.isInteger(Number.MIN_VALUE);\n     * // => false\n     *\n     * _.isInteger(Infinity);\n     * // => false\n     *\n     * _.isInteger('3');\n     * // => false\n     */\n    function isInteger(value) {\n      return typeof value == 'number' && value == toInteger(value);\n    }\n\n    /**\n     * Checks if `value` is a valid array-like length.\n     *\n     * **Note:** This method is loosely based on\n     * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n     * @example\n     *\n     * _.isLength(3);\n     * // => true\n     *\n     * _.isLength(Number.MIN_VALUE);\n     * // => false\n     *\n     * _.isLength(Infinity);\n     * // => false\n     *\n     * _.isLength('3');\n     * // => false\n     */\n    function isLength(value) {\n      return typeof value == 'number' &&\n        value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n    }\n\n    /**\n     * Checks if `value` is the\n     * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n     * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n     * @example\n     *\n     * _.isObject({});\n     * // => true\n     *\n     * _.isObject([1, 2, 3]);\n     * // => true\n     *\n     * _.isObject(_.noop);\n     * // => true\n     *\n     * _.isObject(null);\n     * // => false\n     */\n    function isObject(value) {\n      var type = typeof value;\n      return value != null && (type == 'object' || type == 'function');\n    }\n\n    /**\n     * Checks if `value` is object-like. A value is object-like if it's not `null`\n     * and has a `typeof` result of \"object\".\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n     * @example\n     *\n     * _.isObjectLike({});\n     * // => true\n     *\n     * _.isObjectLike([1, 2, 3]);\n     * // => true\n     *\n     * _.isObjectLike(_.noop);\n     * // => false\n     *\n     * _.isObjectLike(null);\n     * // => false\n     */\n    function isObjectLike(value) {\n      return value != null && typeof value == 'object';\n    }\n\n    /**\n     * Checks if `value` is classified as a `Map` object.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.3.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n     * @example\n     *\n     * _.isMap(new Map);\n     * // => true\n     *\n     * _.isMap(new WeakMap);\n     * // => false\n     */\n    var isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap;\n\n    /**\n     * Performs a partial deep comparison between `object` and `source` to\n     * determine if `object` contains equivalent property values.\n     *\n     * **Note:** This method is equivalent to `_.matches` when `source` is\n     * partially applied.\n     *\n     * Partial comparisons will match empty array and empty object `source`\n     * values against any array or object value, respectively. See `_.isEqual`\n     * for a list of supported value comparisons.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Lang\n     * @param {Object} object The object to inspect.\n     * @param {Object} source The object of property values to match.\n     * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n     * @example\n     *\n     * var object = { 'a': 1, 'b': 2 };\n     *\n     * _.isMatch(object, { 'b': 2 });\n     * // => true\n     *\n     * _.isMatch(object, { 'b': 1 });\n     * // => false\n     */\n    function isMatch(object, source) {\n      return object === source || baseIsMatch(object, source, getMatchData(source));\n    }\n\n    /**\n     * This method is like `_.isMatch` except that it accepts `customizer` which\n     * is invoked to compare values. If `customizer` returns `undefined`, comparisons\n     * are handled by the method instead. The `customizer` is invoked with five\n     * arguments: (objValue, srcValue, index|key, object, source).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Lang\n     * @param {Object} object The object to inspect.\n     * @param {Object} source The object of property values to match.\n     * @param {Function} [customizer] The function to customize comparisons.\n     * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n     * @example\n     *\n     * function isGreeting(value) {\n     *   return /^h(?:i|ello)$/.test(value);\n     * }\n     *\n     * function customizer(objValue, srcValue) {\n     *   if (isGreeting(objValue) && isGreeting(srcValue)) {\n     *     return true;\n     *   }\n     * }\n     *\n     * var object = { 'greeting': 'hello' };\n     * var source = { 'greeting': 'hi' };\n     *\n     * _.isMatchWith(object, source, customizer);\n     * // => true\n     */\n    function isMatchWith(object, source, customizer) {\n      customizer = typeof customizer == 'function' ? customizer : undefined;\n      return baseIsMatch(object, source, getMatchData(source), customizer);\n    }\n\n    /**\n     * Checks if `value` is `NaN`.\n     *\n     * **Note:** This method is based on\n     * [`Number.isNaN`](https://mdn.io/Number/isNaN) and is not the same as\n     * global [`isNaN`](https://mdn.io/isNaN) which returns `true` for\n     * `undefined` and other non-number values.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n     * @example\n     *\n     * _.isNaN(NaN);\n     * // => true\n     *\n     * _.isNaN(new Number(NaN));\n     * // => true\n     *\n     * isNaN(undefined);\n     * // => true\n     *\n     * _.isNaN(undefined);\n     * // => false\n     */\n    function isNaN(value) {\n      // An `NaN` primitive is the only value that is not equal to itself.\n      // Perform the `toStringTag` check first to avoid errors with some\n      // ActiveX objects in IE.\n      return isNumber(value) && value != +value;\n    }\n\n    /**\n     * Checks if `value` is a pristine native function.\n     *\n     * **Note:** This method can't reliably detect native functions in the presence\n     * of the core-js package because core-js circumvents this kind of detection.\n     * Despite multiple requests, the core-js maintainer has made it clear: any\n     * attempt to fix the detection will be obstructed. As a result, we're left\n     * with little choice but to throw an error. Unfortunately, this also affects\n     * packages, like [babel-polyfill](https://www.npmjs.com/package/babel-polyfill),\n     * which rely on core-js.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a native function,\n     *  else `false`.\n     * @example\n     *\n     * _.isNative(Array.prototype.push);\n     * // => true\n     *\n     * _.isNative(_);\n     * // => false\n     */\n    function isNative(value) {\n      if (isMaskable(value)) {\n        throw new Error(CORE_ERROR_TEXT);\n      }\n      return baseIsNative(value);\n    }\n\n    /**\n     * Checks if `value` is `null`.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is `null`, else `false`.\n     * @example\n     *\n     * _.isNull(null);\n     * // => true\n     *\n     * _.isNull(void 0);\n     * // => false\n     */\n    function isNull(value) {\n      return value === null;\n    }\n\n    /**\n     * Checks if `value` is `null` or `undefined`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is nullish, else `false`.\n     * @example\n     *\n     * _.isNil(null);\n     * // => true\n     *\n     * _.isNil(void 0);\n     * // => true\n     *\n     * _.isNil(NaN);\n     * // => false\n     */\n    function isNil(value) {\n      return value == null;\n    }\n\n    /**\n     * Checks if `value` is classified as a `Number` primitive or object.\n     *\n     * **Note:** To exclude `Infinity`, `-Infinity`, and `NaN`, which are\n     * classified as numbers, use the `_.isFinite` method.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a number, else `false`.\n     * @example\n     *\n     * _.isNumber(3);\n     * // => true\n     *\n     * _.isNumber(Number.MIN_VALUE);\n     * // => true\n     *\n     * _.isNumber(Infinity);\n     * // => true\n     *\n     * _.isNumber('3');\n     * // => false\n     */\n    function isNumber(value) {\n      return typeof value == 'number' ||\n        (isObjectLike(value) && baseGetTag(value) == numberTag);\n    }\n\n    /**\n     * Checks if `value` is a plain object, that is, an object created by the\n     * `Object` constructor or one with a `[[Prototype]]` of `null`.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.8.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n     * @example\n     *\n     * function Foo() {\n     *   this.a = 1;\n     * }\n     *\n     * _.isPlainObject(new Foo);\n     * // => false\n     *\n     * _.isPlainObject([1, 2, 3]);\n     * // => false\n     *\n     * _.isPlainObject({ 'x': 0, 'y': 0 });\n     * // => true\n     *\n     * _.isPlainObject(Object.create(null));\n     * // => true\n     */\n    function isPlainObject(value) {\n      if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\n        return false;\n      }\n      var proto = getPrototype(value);\n      if (proto === null) {\n        return true;\n      }\n      var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n      return typeof Ctor == 'function' && Ctor instanceof Ctor &&\n        funcToString.call(Ctor) == objectCtorString;\n    }\n\n    /**\n     * Checks if `value` is classified as a `RegExp` object.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a regexp, else `false`.\n     * @example\n     *\n     * _.isRegExp(/abc/);\n     * // => true\n     *\n     * _.isRegExp('/abc/');\n     * // => false\n     */\n    var isRegExp = nodeIsRegExp ? baseUnary(nodeIsRegExp) : baseIsRegExp;\n\n    /**\n     * Checks if `value` is a safe integer. An integer is safe if it's an IEEE-754\n     * double precision number which isn't the result of a rounded unsafe integer.\n     *\n     * **Note:** This method is based on\n     * [`Number.isSafeInteger`](https://mdn.io/Number/isSafeInteger).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a safe integer, else `false`.\n     * @example\n     *\n     * _.isSafeInteger(3);\n     * // => true\n     *\n     * _.isSafeInteger(Number.MIN_VALUE);\n     * // => false\n     *\n     * _.isSafeInteger(Infinity);\n     * // => false\n     *\n     * _.isSafeInteger('3');\n     * // => false\n     */\n    function isSafeInteger(value) {\n      return isInteger(value) && value >= -MAX_SAFE_INTEGER && value <= MAX_SAFE_INTEGER;\n    }\n\n    /**\n     * Checks if `value` is classified as a `Set` object.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.3.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n     * @example\n     *\n     * _.isSet(new Set);\n     * // => true\n     *\n     * _.isSet(new WeakSet);\n     * // => false\n     */\n    var isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet;\n\n    /**\n     * Checks if `value` is classified as a `String` primitive or object.\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a string, else `false`.\n     * @example\n     *\n     * _.isString('abc');\n     * // => true\n     *\n     * _.isString(1);\n     * // => false\n     */\n    function isString(value) {\n      return typeof value == 'string' ||\n        (!isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag);\n    }\n\n    /**\n     * Checks if `value` is classified as a `Symbol` primitive or object.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n     * @example\n     *\n     * _.isSymbol(Symbol.iterator);\n     * // => true\n     *\n     * _.isSymbol('abc');\n     * // => false\n     */\n    function isSymbol(value) {\n      return typeof value == 'symbol' ||\n        (isObjectLike(value) && baseGetTag(value) == symbolTag);\n    }\n\n    /**\n     * Checks if `value` is classified as a typed array.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n     * @example\n     *\n     * _.isTypedArray(new Uint8Array);\n     * // => true\n     *\n     * _.isTypedArray([]);\n     * // => false\n     */\n    var isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\n    /**\n     * Checks if `value` is `undefined`.\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is `undefined`, else `false`.\n     * @example\n     *\n     * _.isUndefined(void 0);\n     * // => true\n     *\n     * _.isUndefined(null);\n     * // => false\n     */\n    function isUndefined(value) {\n      return value === undefined;\n    }\n\n    /**\n     * Checks if `value` is classified as a `WeakMap` object.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.3.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a weak map, else `false`.\n     * @example\n     *\n     * _.isWeakMap(new WeakMap);\n     * // => true\n     *\n     * _.isWeakMap(new Map);\n     * // => false\n     */\n    function isWeakMap(value) {\n      return isObjectLike(value) && getTag(value) == weakMapTag;\n    }\n\n    /**\n     * Checks if `value` is classified as a `WeakSet` object.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.3.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a weak set, else `false`.\n     * @example\n     *\n     * _.isWeakSet(new WeakSet);\n     * // => true\n     *\n     * _.isWeakSet(new Set);\n     * // => false\n     */\n    function isWeakSet(value) {\n      return isObjectLike(value) && baseGetTag(value) == weakSetTag;\n    }\n\n    /**\n     * Checks if `value` is less than `other`.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.9.0\n     * @category Lang\n     * @param {*} value The value to compare.\n     * @param {*} other The other value to compare.\n     * @returns {boolean} Returns `true` if `value` is less than `other`,\n     *  else `false`.\n     * @see _.gt\n     * @example\n     *\n     * _.lt(1, 3);\n     * // => true\n     *\n     * _.lt(3, 3);\n     * // => false\n     *\n     * _.lt(3, 1);\n     * // => false\n     */\n    var lt = createRelationalOperation(baseLt);\n\n    /**\n     * Checks if `value` is less than or equal to `other`.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.9.0\n     * @category Lang\n     * @param {*} value The value to compare.\n     * @param {*} other The other value to compare.\n     * @returns {boolean} Returns `true` if `value` is less than or equal to\n     *  `other`, else `false`.\n     * @see _.gte\n     * @example\n     *\n     * _.lte(1, 3);\n     * // => true\n     *\n     * _.lte(3, 3);\n     * // => true\n     *\n     * _.lte(3, 1);\n     * // => false\n     */\n    var lte = createRelationalOperation(function(value, other) {\n      return value <= other;\n    });\n\n    /**\n     * Converts `value` to an array.\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category Lang\n     * @param {*} value The value to convert.\n     * @returns {Array} Returns the converted array.\n     * @example\n     *\n     * _.toArray({ 'a': 1, 'b': 2 });\n     * // => [1, 2]\n     *\n     * _.toArray('abc');\n     * // => ['a', 'b', 'c']\n     *\n     * _.toArray(1);\n     * // => []\n     *\n     * _.toArray(null);\n     * // => []\n     */\n    function toArray(value) {\n      if (!value) {\n        return [];\n      }\n      if (isArrayLike(value)) {\n        return isString(value) ? stringToArray(value) : copyArray(value);\n      }\n      if (symIterator && value[symIterator]) {\n        return iteratorToArray(value[symIterator]());\n      }\n      var tag = getTag(value),\n          func = tag == mapTag ? mapToArray : (tag == setTag ? setToArray : values);\n\n      return func(value);\n    }\n\n    /**\n     * Converts `value` to a finite number.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.12.0\n     * @category Lang\n     * @param {*} value The value to convert.\n     * @returns {number} Returns the converted number.\n     * @example\n     *\n     * _.toFinite(3.2);\n     * // => 3.2\n     *\n     * _.toFinite(Number.MIN_VALUE);\n     * // => 5e-324\n     *\n     * _.toFinite(Infinity);\n     * // => 1.7976931348623157e+308\n     *\n     * _.toFinite('3.2');\n     * // => 3.2\n     */\n    function toFinite(value) {\n      if (!value) {\n        return value === 0 ? value : 0;\n      }\n      value = toNumber(value);\n      if (value === INFINITY || value === -INFINITY) {\n        var sign = (value < 0 ? -1 : 1);\n        return sign * MAX_INTEGER;\n      }\n      return value === value ? value : 0;\n    }\n\n    /**\n     * Converts `value` to an integer.\n     *\n     * **Note:** This method is loosely based on\n     * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Lang\n     * @param {*} value The value to convert.\n     * @returns {number} Returns the converted integer.\n     * @example\n     *\n     * _.toInteger(3.2);\n     * // => 3\n     *\n     * _.toInteger(Number.MIN_VALUE);\n     * // => 0\n     *\n     * _.toInteger(Infinity);\n     * // => 1.7976931348623157e+308\n     *\n     * _.toInteger('3.2');\n     * // => 3\n     */\n    function toInteger(value) {\n      var result = toFinite(value),\n          remainder = result % 1;\n\n      return result === result ? (remainder ? result - remainder : result) : 0;\n    }\n\n    /**\n     * Converts `value` to an integer suitable for use as the length of an\n     * array-like object.\n     *\n     * **Note:** This method is based on\n     * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Lang\n     * @param {*} value The value to convert.\n     * @returns {number} Returns the converted integer.\n     * @example\n     *\n     * _.toLength(3.2);\n     * // => 3\n     *\n     * _.toLength(Number.MIN_VALUE);\n     * // => 0\n     *\n     * _.toLength(Infinity);\n     * // => 4294967295\n     *\n     * _.toLength('3.2');\n     * // => 3\n     */\n    function toLength(value) {\n      return value ? baseClamp(toInteger(value), 0, MAX_ARRAY_LENGTH) : 0;\n    }\n\n    /**\n     * Converts `value` to a number.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Lang\n     * @param {*} value The value to process.\n     * @returns {number} Returns the number.\n     * @example\n     *\n     * _.toNumber(3.2);\n     * // => 3.2\n     *\n     * _.toNumber(Number.MIN_VALUE);\n     * // => 5e-324\n     *\n     * _.toNumber(Infinity);\n     * // => Infinity\n     *\n     * _.toNumber('3.2');\n     * // => 3.2\n     */\n    function toNumber(value) {\n      if (typeof value == 'number') {\n        return value;\n      }\n      if (isSymbol(value)) {\n        return NAN;\n      }\n      if (isObject(value)) {\n        var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n        value = isObject(other) ? (other + '') : other;\n      }\n      if (typeof value != 'string') {\n        return value === 0 ? value : +value;\n      }\n      value = baseTrim(value);\n      var isBinary = reIsBinary.test(value);\n      return (isBinary || reIsOctal.test(value))\n        ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n        : (reIsBadHex.test(value) ? NAN : +value);\n    }\n\n    /**\n     * Converts `value` to a plain object flattening inherited enumerable string\n     * keyed properties of `value` to own properties of the plain object.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Lang\n     * @param {*} value The value to convert.\n     * @returns {Object} Returns the converted plain object.\n     * @example\n     *\n     * function Foo() {\n     *   this.b = 2;\n     * }\n     *\n     * Foo.prototype.c = 3;\n     *\n     * _.assign({ 'a': 1 }, new Foo);\n     * // => { 'a': 1, 'b': 2 }\n     *\n     * _.assign({ 'a': 1 }, _.toPlainObject(new Foo));\n     * // => { 'a': 1, 'b': 2, 'c': 3 }\n     */\n    function toPlainObject(value) {\n      return copyObject(value, keysIn(value));\n    }\n\n    /**\n     * Converts `value` to a safe integer. A safe integer can be compared and\n     * represented correctly.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Lang\n     * @param {*} value The value to convert.\n     * @returns {number} Returns the converted integer.\n     * @example\n     *\n     * _.toSafeInteger(3.2);\n     * // => 3\n     *\n     * _.toSafeInteger(Number.MIN_VALUE);\n     * // => 0\n     *\n     * _.toSafeInteger(Infinity);\n     * // => 9007199254740991\n     *\n     * _.toSafeInteger('3.2');\n     * // => 3\n     */\n    function toSafeInteger(value) {\n      return value\n        ? baseClamp(toInteger(value), -MAX_SAFE_INTEGER, MAX_SAFE_INTEGER)\n        : (value === 0 ? value : 0);\n    }\n\n    /**\n     * Converts `value` to a string. An empty string is returned for `null`\n     * and `undefined` values. The sign of `-0` is preserved.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Lang\n     * @param {*} value The value to convert.\n     * @returns {string} Returns the converted string.\n     * @example\n     *\n     * _.toString(null);\n     * // => ''\n     *\n     * _.toString(-0);\n     * // => '-0'\n     *\n     * _.toString([1, 2, 3]);\n     * // => '1,2,3'\n     */\n    function toString(value) {\n      return value == null ? '' : baseToString(value);\n    }\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     * Assigns own enumerable string keyed properties of source objects to the\n     * destination object. Source objects are applied from left to right.\n     * Subsequent sources overwrite property assignments of previous sources.\n     *\n     * **Note:** This method mutates `object` and is loosely based on\n     * [`Object.assign`](https://mdn.io/Object/assign).\n     *\n     * @static\n     * @memberOf _\n     * @since 0.10.0\n     * @category Object\n     * @param {Object} object The destination object.\n     * @param {...Object} [sources] The source objects.\n     * @returns {Object} Returns `object`.\n     * @see _.assignIn\n     * @example\n     *\n     * function Foo() {\n     *   this.a = 1;\n     * }\n     *\n     * function Bar() {\n     *   this.c = 3;\n     * }\n     *\n     * Foo.prototype.b = 2;\n     * Bar.prototype.d = 4;\n     *\n     * _.assign({ 'a': 0 }, new Foo, new Bar);\n     * // => { 'a': 1, 'c': 3 }\n     */\n    var assign = createAssigner(function(object, source) {\n      if (isPrototype(source) || isArrayLike(source)) {\n        copyObject(source, keys(source), object);\n        return;\n      }\n      for (var key in source) {\n        if (hasOwnProperty.call(source, key)) {\n          assignValue(object, key, source[key]);\n        }\n      }\n    });\n\n    /**\n     * This method is like `_.assign` except that it iterates over own and\n     * inherited source properties.\n     *\n     * **Note:** This method mutates `object`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @alias extend\n     * @category Object\n     * @param {Object} object The destination object.\n     * @param {...Object} [sources] The source objects.\n     * @returns {Object} Returns `object`.\n     * @see _.assign\n     * @example\n     *\n     * function Foo() {\n     *   this.a = 1;\n     * }\n     *\n     * function Bar() {\n     *   this.c = 3;\n     * }\n     *\n     * Foo.prototype.b = 2;\n     * Bar.prototype.d = 4;\n     *\n     * _.assignIn({ 'a': 0 }, new Foo, new Bar);\n     * // => { 'a': 1, 'b': 2, 'c': 3, 'd': 4 }\n     */\n    var assignIn = createAssigner(function(object, source) {\n      copyObject(source, keysIn(source), object);\n    });\n\n    /**\n     * This method is like `_.assignIn` except that it accepts `customizer`\n     * which is invoked to produce the assigned values. If `customizer` returns\n     * `undefined`, assignment is handled by the method instead. The `customizer`\n     * is invoked with five arguments: (objValue, srcValue, key, object, source).\n     *\n     * **Note:** This method mutates `object`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @alias extendWith\n     * @category Object\n     * @param {Object} object The destination object.\n     * @param {...Object} sources The source objects.\n     * @param {Function} [customizer] The function to customize assigned values.\n     * @returns {Object} Returns `object`.\n     * @see _.assignWith\n     * @example\n     *\n     * function customizer(objValue, srcValue) {\n     *   return _.isUndefined(objValue) ? srcValue : objValue;\n     * }\n     *\n     * var defaults = _.partialRight(_.assignInWith, customizer);\n     *\n     * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n     * // => { 'a': 1, 'b': 2 }\n     */\n    var assignInWith = createAssigner(function(object, source, srcIndex, customizer) {\n      copyObject(source, keysIn(source), object, customizer);\n    });\n\n    /**\n     * This method is like `_.assign` except that it accepts `customizer`\n     * which is invoked to produce the assigned values. If `customizer` returns\n     * `undefined`, assignment is handled by the method instead. The `customizer`\n     * is invoked with five arguments: (objValue, srcValue, key, object, source).\n     *\n     * **Note:** This method mutates `object`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Object\n     * @param {Object} object The destination object.\n     * @param {...Object} sources The source objects.\n     * @param {Function} [customizer] The function to customize assigned values.\n     * @returns {Object} Returns `object`.\n     * @see _.assignInWith\n     * @example\n     *\n     * function customizer(objValue, srcValue) {\n     *   return _.isUndefined(objValue) ? srcValue : objValue;\n     * }\n     *\n     * var defaults = _.partialRight(_.assignWith, customizer);\n     *\n     * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n     * // => { 'a': 1, 'b': 2 }\n     */\n    var assignWith = createAssigner(function(object, source, srcIndex, customizer) {\n      copyObject(source, keys(source), object, customizer);\n    });\n\n    /**\n     * Creates an array of values corresponding to `paths` of `object`.\n     *\n     * @static\n     * @memberOf _\n     * @since 1.0.0\n     * @category Object\n     * @param {Object} object The object to iterate over.\n     * @param {...(string|string[])} [paths] The property paths to pick.\n     * @returns {Array} Returns the picked values.\n     * @example\n     *\n     * var object = { 'a': [{ 'b': { 'c': 3 } }, 4] };\n     *\n     * _.at(object, ['a[0].b.c', 'a[1]']);\n     * // => [3, 4]\n     */\n    var at = flatRest(baseAt);\n\n    /**\n     * Creates an object that inherits from the `prototype` object. If a\n     * `properties` object is given, its own enumerable string keyed properties\n     * are assigned to the created object.\n     *\n     * @static\n     * @memberOf _\n     * @since 2.3.0\n     * @category Object\n     * @param {Object} prototype The object to inherit from.\n     * @param {Object} [properties] The properties to assign to the object.\n     * @returns {Object} Returns the new object.\n     * @example\n     *\n     * function Shape() {\n     *   this.x = 0;\n     *   this.y = 0;\n     * }\n     *\n     * function Circle() {\n     *   Shape.call(this);\n     * }\n     *\n     * Circle.prototype = _.create(Shape.prototype, {\n     *   'constructor': Circle\n     * });\n     *\n     * var circle = new Circle;\n     * circle instanceof Circle;\n     * // => true\n     *\n     * circle instanceof Shape;\n     * // => true\n     */\n    function create(prototype, properties) {\n      var result = baseCreate(prototype);\n      return properties == null ? result : baseAssign(result, properties);\n    }\n\n    /**\n     * Assigns own and inherited enumerable string keyed properties of source\n     * objects to the destination object for all destination properties that\n     * resolve to `undefined`. Source objects are applied from left to right.\n     * Once a property is set, additional values of the same property are ignored.\n     *\n     * **Note:** This method mutates `object`.\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category Object\n     * @param {Object} object The destination object.\n     * @param {...Object} [sources] The source objects.\n     * @returns {Object} Returns `object`.\n     * @see _.defaultsDeep\n     * @example\n     *\n     * _.defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n     * // => { 'a': 1, 'b': 2 }\n     */\n    var defaults = baseRest(function(object, sources) {\n      object = Object(object);\n\n      var index = -1;\n      var length = sources.length;\n      var guard = length > 2 ? sources[2] : undefined;\n\n      if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n        length = 1;\n      }\n\n      while (++index < length) {\n        var source = sources[index];\n        var props = keysIn(source);\n        var propsIndex = -1;\n        var propsLength = props.length;\n\n        while (++propsIndex < propsLength) {\n          var key = props[propsIndex];\n          var value = object[key];\n\n          if (value === undefined ||\n              (eq(value, objectProto[key]) && !hasOwnProperty.call(object, key))) {\n            object[key] = source[key];\n          }\n        }\n      }\n\n      return object;\n    });\n\n    /**\n     * This method is like `_.defaults` except that it recursively assigns\n     * default properties.\n     *\n     * **Note:** This method mutates `object`.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.10.0\n     * @category Object\n     * @param {Object} object The destination object.\n     * @param {...Object} [sources] The source objects.\n     * @returns {Object} Returns `object`.\n     * @see _.defaults\n     * @example\n     *\n     * _.defaultsDeep({ 'a': { 'b': 2 } }, { 'a': { 'b': 1, 'c': 3 } });\n     * // => { 'a': { 'b': 2, 'c': 3 } }\n     */\n    var defaultsDeep = baseRest(function(args) {\n      args.push(undefined, customDefaultsMerge);\n      return apply(mergeWith, undefined, args);\n    });\n\n    /**\n     * This method is like `_.find` except that it returns the key of the first\n     * element `predicate` returns truthy for instead of the element itself.\n     *\n     * @static\n     * @memberOf _\n     * @since 1.1.0\n     * @category Object\n     * @param {Object} object The object to inspect.\n     * @param {Function} [predicate=_.identity] The function invoked per iteration.\n     * @returns {string|undefined} Returns the key of the matched element,\n     *  else `undefined`.\n     * @example\n     *\n     * var users = {\n     *   'barney':  { 'age': 36, 'active': true },\n     *   'fred':    { 'age': 40, 'active': false },\n     *   'pebbles': { 'age': 1,  'active': true }\n     * };\n     *\n     * _.findKey(users, function(o) { return o.age < 40; });\n     * // => 'barney' (iteration order is not guaranteed)\n     *\n     * // The `_.matches` iteratee shorthand.\n     * _.findKey(users, { 'age': 1, 'active': true });\n     * // => 'pebbles'\n     *\n     * // The `_.matchesProperty` iteratee shorthand.\n     * _.findKey(users, ['active', false]);\n     * // => 'fred'\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.findKey(users, 'active');\n     * // => 'barney'\n     */\n    function findKey(object, predicate) {\n      return baseFindKey(object, getIteratee(predicate, 3), baseForOwn);\n    }\n\n    /**\n     * This method is like `_.findKey` except that it iterates over elements of\n     * a collection in the opposite order.\n     *\n     * @static\n     * @memberOf _\n     * @since 2.0.0\n     * @category Object\n     * @param {Object} object The object to inspect.\n     * @param {Function} [predicate=_.identity] The function invoked per iteration.\n     * @returns {string|undefined} Returns the key of the matched element,\n     *  else `undefined`.\n     * @example\n     *\n     * var users = {\n     *   'barney':  { 'age': 36, 'active': true },\n     *   'fred':    { 'age': 40, 'active': false },\n     *   'pebbles': { 'age': 1,  'active': true }\n     * };\n     *\n     * _.findLastKey(users, function(o) { return o.age < 40; });\n     * // => returns 'pebbles' assuming `_.findKey` returns 'barney'\n     *\n     * // The `_.matches` iteratee shorthand.\n     * _.findLastKey(users, { 'age': 36, 'active': true });\n     * // => 'barney'\n     *\n     * // The `_.matchesProperty` iteratee shorthand.\n     * _.findLastKey(users, ['active', false]);\n     * // => 'fred'\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.findLastKey(users, 'active');\n     * // => 'pebbles'\n     */\n    function findLastKey(object, predicate) {\n      return baseFindKey(object, getIteratee(predicate, 3), baseForOwnRight);\n    }\n\n    /**\n     * Iterates over own and inherited enumerable string keyed properties of an\n     * object and invokes `iteratee` for each property. The iteratee is invoked\n     * with three arguments: (value, key, object). Iteratee functions may exit\n     * iteration early by explicitly returning `false`.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.3.0\n     * @category Object\n     * @param {Object} object The object to iterate over.\n     * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n     * @returns {Object} Returns `object`.\n     * @see _.forInRight\n     * @example\n     *\n     * function Foo() {\n     *   this.a = 1;\n     *   this.b = 2;\n     * }\n     *\n     * Foo.prototype.c = 3;\n     *\n     * _.forIn(new Foo, function(value, key) {\n     *   console.log(key);\n     * });\n     * // => Logs 'a', 'b', then 'c' (iteration order is not guaranteed).\n     */\n    function forIn(object, iteratee) {\n      return object == null\n        ? object\n        : baseFor(object, getIteratee(iteratee, 3), keysIn);\n    }\n\n    /**\n     * This method is like `_.forIn` except that it iterates over properties of\n     * `object` in the opposite order.\n     *\n     * @static\n     * @memberOf _\n     * @since 2.0.0\n     * @category Object\n     * @param {Object} object The object to iterate over.\n     * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n     * @returns {Object} Returns `object`.\n     * @see _.forIn\n     * @example\n     *\n     * function Foo() {\n     *   this.a = 1;\n     *   this.b = 2;\n     * }\n     *\n     * Foo.prototype.c = 3;\n     *\n     * _.forInRight(new Foo, function(value, key) {\n     *   console.log(key);\n     * });\n     * // => Logs 'c', 'b', then 'a' assuming `_.forIn` logs 'a', 'b', then 'c'.\n     */\n    function forInRight(object, iteratee) {\n      return object == null\n        ? object\n        : baseForRight(object, getIteratee(iteratee, 3), keysIn);\n    }\n\n    /**\n     * Iterates over own enumerable string keyed properties of an object and\n     * invokes `iteratee` for each property. The iteratee is invoked with three\n     * arguments: (value, key, object). Iteratee functions may exit iteration\n     * early by explicitly returning `false`.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.3.0\n     * @category Object\n     * @param {Object} object The object to iterate over.\n     * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n     * @returns {Object} Returns `object`.\n     * @see _.forOwnRight\n     * @example\n     *\n     * function Foo() {\n     *   this.a = 1;\n     *   this.b = 2;\n     * }\n     *\n     * Foo.prototype.c = 3;\n     *\n     * _.forOwn(new Foo, function(value, key) {\n     *   console.log(key);\n     * });\n     * // => Logs 'a' then 'b' (iteration order is not guaranteed).\n     */\n    function forOwn(object, iteratee) {\n      return object && baseForOwn(object, getIteratee(iteratee, 3));\n    }\n\n    /**\n     * This method is like `_.forOwn` except that it iterates over properties of\n     * `object` in the opposite order.\n     *\n     * @static\n     * @memberOf _\n     * @since 2.0.0\n     * @category Object\n     * @param {Object} object The object to iterate over.\n     * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n     * @returns {Object} Returns `object`.\n     * @see _.forOwn\n     * @example\n     *\n     * function Foo() {\n     *   this.a = 1;\n     *   this.b = 2;\n     * }\n     *\n     * Foo.prototype.c = 3;\n     *\n     * _.forOwnRight(new Foo, function(value, key) {\n     *   console.log(key);\n     * });\n     * // => Logs 'b' then 'a' assuming `_.forOwn` logs 'a' then 'b'.\n     */\n    function forOwnRight(object, iteratee) {\n      return object && baseForOwnRight(object, getIteratee(iteratee, 3));\n    }\n\n    /**\n     * Creates an array of function property names from own enumerable properties\n     * of `object`.\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category Object\n     * @param {Object} object The object to inspect.\n     * @returns {Array} Returns the function names.\n     * @see _.functionsIn\n     * @example\n     *\n     * function Foo() {\n     *   this.a = _.constant('a');\n     *   this.b = _.constant('b');\n     * }\n     *\n     * Foo.prototype.c = _.constant('c');\n     *\n     * _.functions(new Foo);\n     * // => ['a', 'b']\n     */\n    function functions(object) {\n      return object == null ? [] : baseFunctions(object, keys(object));\n    }\n\n    /**\n     * Creates an array of function property names from own and inherited\n     * enumerable properties of `object`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Object\n     * @param {Object} object The object to inspect.\n     * @returns {Array} Returns the function names.\n     * @see _.functions\n     * @example\n     *\n     * function Foo() {\n     *   this.a = _.constant('a');\n     *   this.b = _.constant('b');\n     * }\n     *\n     * Foo.prototype.c = _.constant('c');\n     *\n     * _.functionsIn(new Foo);\n     * // => ['a', 'b', 'c']\n     */\n    function functionsIn(object) {\n      return object == null ? [] : baseFunctions(object, keysIn(object));\n    }\n\n    /**\n     * Gets the value at `path` of `object`. If the resolved value is\n     * `undefined`, the `defaultValue` is returned in its place.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.7.0\n     * @category Object\n     * @param {Object} object The object to query.\n     * @param {Array|string} path The path of the property to get.\n     * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n     * @returns {*} Returns the resolved value.\n     * @example\n     *\n     * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n     *\n     * _.get(object, 'a[0].b.c');\n     * // => 3\n     *\n     * _.get(object, ['a', '0', 'b', 'c']);\n     * // => 3\n     *\n     * _.get(object, 'a.b.c', 'default');\n     * // => 'default'\n     */\n    function get(object, path, defaultValue) {\n      var result = object == null ? undefined : baseGet(object, path);\n      return result === undefined ? defaultValue : result;\n    }\n\n    /**\n     * Checks if `path` is a direct property of `object`.\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category Object\n     * @param {Object} object The object to query.\n     * @param {Array|string} path The path to check.\n     * @returns {boolean} Returns `true` if `path` exists, else `false`.\n     * @example\n     *\n     * var object = { 'a': { 'b': 2 } };\n     * var other = _.create({ 'a': _.create({ 'b': 2 }) });\n     *\n     * _.has(object, 'a');\n     * // => true\n     *\n     * _.has(object, 'a.b');\n     * // => true\n     *\n     * _.has(object, ['a', 'b']);\n     * // => true\n     *\n     * _.has(other, 'a');\n     * // => false\n     */\n    function has(object, path) {\n      return object != null && hasPath(object, path, baseHas);\n    }\n\n    /**\n     * Checks if `path` is a direct or inherited property of `object`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Object\n     * @param {Object} object The object to query.\n     * @param {Array|string} path The path to check.\n     * @returns {boolean} Returns `true` if `path` exists, else `false`.\n     * @example\n     *\n     * var object = _.create({ 'a': _.create({ 'b': 2 }) });\n     *\n     * _.hasIn(object, 'a');\n     * // => true\n     *\n     * _.hasIn(object, 'a.b');\n     * // => true\n     *\n     * _.hasIn(object, ['a', 'b']);\n     * // => true\n     *\n     * _.hasIn(object, 'b');\n     * // => false\n     */\n    function hasIn(object, path) {\n      return object != null && hasPath(object, path, baseHasIn);\n    }\n\n    /**\n     * Creates an object composed of the inverted keys and values of `object`.\n     * If `object` contains duplicate values, subsequent values overwrite\n     * property assignments of previous values.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.7.0\n     * @category Object\n     * @param {Object} object The object to invert.\n     * @returns {Object} Returns the new inverted object.\n     * @example\n     *\n     * var object = { 'a': 1, 'b': 2, 'c': 1 };\n     *\n     * _.invert(object);\n     * // => { '1': 'c', '2': 'b' }\n     */\n    var invert = createInverter(function(result, value, key) {\n      if (value != null &&\n          typeof value.toString != 'function') {\n        value = nativeObjectToString.call(value);\n      }\n\n      result[value] = key;\n    }, constant(identity));\n\n    /**\n     * This method is like `_.invert` except that the inverted object is generated\n     * from the results of running each element of `object` thru `iteratee`. The\n     * corresponding inverted value of each inverted key is an array of keys\n     * responsible for generating the inverted value. The iteratee is invoked\n     * with one argument: (value).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.1.0\n     * @category Object\n     * @param {Object} object The object to invert.\n     * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n     * @returns {Object} Returns the new inverted object.\n     * @example\n     *\n     * var object = { 'a': 1, 'b': 2, 'c': 1 };\n     *\n     * _.invertBy(object);\n     * // => { '1': ['a', 'c'], '2': ['b'] }\n     *\n     * _.invertBy(object, function(value) {\n     *   return 'group' + value;\n     * });\n     * // => { 'group1': ['a', 'c'], 'group2': ['b'] }\n     */\n    var invertBy = createInverter(function(result, value, key) {\n      if (value != null &&\n          typeof value.toString != 'function') {\n        value = nativeObjectToString.call(value);\n      }\n\n      if (hasOwnProperty.call(result, value)) {\n        result[value].push(key);\n      } else {\n        result[value] = [key];\n      }\n    }, getIteratee);\n\n    /**\n     * Invokes the method at `path` of `object`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Object\n     * @param {Object} object The object to query.\n     * @param {Array|string} path The path of the method to invoke.\n     * @param {...*} [args] The arguments to invoke the method with.\n     * @returns {*} Returns the result of the invoked method.\n     * @example\n     *\n     * var object = { 'a': [{ 'b': { 'c': [1, 2, 3, 4] } }] };\n     *\n     * _.invoke(object, 'a[0].b.c.slice', 1, 3);\n     * // => [2, 3]\n     */\n    var invoke = baseRest(baseInvoke);\n\n    /**\n     * Creates an array of the own enumerable property names of `object`.\n     *\n     * **Note:** Non-object values are coerced to objects. See the\n     * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n     * for more details.\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category Object\n     * @param {Object} object The object to query.\n     * @returns {Array} Returns the array of property names.\n     * @example\n     *\n     * function Foo() {\n     *   this.a = 1;\n     *   this.b = 2;\n     * }\n     *\n     * Foo.prototype.c = 3;\n     *\n     * _.keys(new Foo);\n     * // => ['a', 'b'] (iteration order is not guaranteed)\n     *\n     * _.keys('hi');\n     * // => ['0', '1']\n     */\n    function keys(object) {\n      return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n    }\n\n    /**\n     * Creates an array of the own and inherited enumerable property names of `object`.\n     *\n     * **Note:** Non-object values are coerced to objects.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Object\n     * @param {Object} object The object to query.\n     * @returns {Array} Returns the array of property names.\n     * @example\n     *\n     * function Foo() {\n     *   this.a = 1;\n     *   this.b = 2;\n     * }\n     *\n     * Foo.prototype.c = 3;\n     *\n     * _.keysIn(new Foo);\n     * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n     */\n    function keysIn(object) {\n      return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n    }\n\n    /**\n     * The opposite of `_.mapValues`; this method creates an object with the\n     * same values as `object` and keys generated by running each own enumerable\n     * string keyed property of `object` thru `iteratee`. The iteratee is invoked\n     * with three arguments: (value, key, object).\n     *\n     * @static\n     * @memberOf _\n     * @since 3.8.0\n     * @category Object\n     * @param {Object} object The object to iterate over.\n     * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n     * @returns {Object} Returns the new mapped object.\n     * @see _.mapValues\n     * @example\n     *\n     * _.mapKeys({ 'a': 1, 'b': 2 }, function(value, key) {\n     *   return key + value;\n     * });\n     * // => { 'a1': 1, 'b2': 2 }\n     */\n    function mapKeys(object, iteratee) {\n      var result = {};\n      iteratee = getIteratee(iteratee, 3);\n\n      baseForOwn(object, function(value, key, object) {\n        baseAssignValue(result, iteratee(value, key, object), value);\n      });\n      return result;\n    }\n\n    /**\n     * Creates an object with the same keys as `object` and values generated\n     * by running each own enumerable string keyed property of `object` thru\n     * `iteratee`. The iteratee is invoked with three arguments:\n     * (value, key, object).\n     *\n     * @static\n     * @memberOf _\n     * @since 2.4.0\n     * @category Object\n     * @param {Object} object The object to iterate over.\n     * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n     * @returns {Object} Returns the new mapped object.\n     * @see _.mapKeys\n     * @example\n     *\n     * var users = {\n     *   'fred':    { 'user': 'fred',    'age': 40 },\n     *   'pebbles': { 'user': 'pebbles', 'age': 1 }\n     * };\n     *\n     * _.mapValues(users, function(o) { return o.age; });\n     * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.mapValues(users, 'age');\n     * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n     */\n    function mapValues(object, iteratee) {\n      var result = {};\n      iteratee = getIteratee(iteratee, 3);\n\n      baseForOwn(object, function(value, key, object) {\n        baseAssignValue(result, key, iteratee(value, key, object));\n      });\n      return result;\n    }\n\n    /**\n     * This method is like `_.assign` except that it recursively merges own and\n     * inherited enumerable string keyed properties of source objects into the\n     * destination object. Source properties that resolve to `undefined` are\n     * skipped if a destination value exists. Array and plain object properties\n     * are merged recursively. Other objects and value types are overridden by\n     * assignment. Source objects are applied from left to right. Subsequent\n     * sources overwrite property assignments of previous sources.\n     *\n     * **Note:** This method mutates `object`.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.5.0\n     * @category Object\n     * @param {Object} object The destination object.\n     * @param {...Object} [sources] The source objects.\n     * @returns {Object} Returns `object`.\n     * @example\n     *\n     * var object = {\n     *   'a': [{ 'b': 2 }, { 'd': 4 }]\n     * };\n     *\n     * var other = {\n     *   'a': [{ 'c': 3 }, { 'e': 5 }]\n     * };\n     *\n     * _.merge(object, other);\n     * // => { 'a': [{ 'b': 2, 'c': 3 }, { 'd': 4, 'e': 5 }] }\n     */\n    var merge = createAssigner(function(object, source, srcIndex) {\n      baseMerge(object, source, srcIndex);\n    });\n\n    /**\n     * This method is like `_.merge` except that it accepts `customizer` which\n     * is invoked to produce the merged values of the destination and source\n     * properties. If `customizer` returns `undefined`, merging is handled by the\n     * method instead. The `customizer` is invoked with six arguments:\n     * (objValue, srcValue, key, object, source, stack).\n     *\n     * **Note:** This method mutates `object`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Object\n     * @param {Object} object The destination object.\n     * @param {...Object} sources The source objects.\n     * @param {Function} customizer The function to customize assigned values.\n     * @returns {Object} Returns `object`.\n     * @example\n     *\n     * function customizer(objValue, srcValue) {\n     *   if (_.isArray(objValue)) {\n     *     return objValue.concat(srcValue);\n     *   }\n     * }\n     *\n     * var object = { 'a': [1], 'b': [2] };\n     * var other = { 'a': [3], 'b': [4] };\n     *\n     * _.mergeWith(object, other, customizer);\n     * // => { 'a': [1, 3], 'b': [2, 4] }\n     */\n    var mergeWith = createAssigner(function(object, source, srcIndex, customizer) {\n      baseMerge(object, source, srcIndex, customizer);\n    });\n\n    /**\n     * The opposite of `_.pick`; this method creates an object composed of the\n     * own and inherited enumerable property paths of `object` that are not omitted.\n     *\n     * **Note:** This method is considerably slower than `_.pick`.\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category Object\n     * @param {Object} object The source object.\n     * @param {...(string|string[])} [paths] The property paths to omit.\n     * @returns {Object} Returns the new object.\n     * @example\n     *\n     * var object = { 'a': 1, 'b': '2', 'c': 3 };\n     *\n     * _.omit(object, ['a', 'c']);\n     * // => { 'b': '2' }\n     */\n    var omit = flatRest(function(object, paths) {\n      var result = {};\n      if (object == null) {\n        return result;\n      }\n      var isDeep = false;\n      paths = arrayMap(paths, function(path) {\n        path = castPath(path, object);\n        isDeep || (isDeep = path.length > 1);\n        return path;\n      });\n      copyObject(object, getAllKeysIn(object), result);\n      if (isDeep) {\n        result = baseClone(result, CLONE_DEEP_FLAG | CLONE_FLAT_FLAG | CLONE_SYMBOLS_FLAG, customOmitClone);\n      }\n      var length = paths.length;\n      while (length--) {\n        baseUnset(result, paths[length]);\n      }\n      return result;\n    });\n\n    /**\n     * The opposite of `_.pickBy`; this method creates an object composed of\n     * the own and inherited enumerable string keyed properties of `object` that\n     * `predicate` doesn't return truthy for. The predicate is invoked with two\n     * arguments: (value, key).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Object\n     * @param {Object} object The source object.\n     * @param {Function} [predicate=_.identity] The function invoked per property.\n     * @returns {Object} Returns the new object.\n     * @example\n     *\n     * var object = { 'a': 1, 'b': '2', 'c': 3 };\n     *\n     * _.omitBy(object, _.isNumber);\n     * // => { 'b': '2' }\n     */\n    function omitBy(object, predicate) {\n      return pickBy(object, negate(getIteratee(predicate)));\n    }\n\n    /**\n     * Creates an object composed of the picked `object` properties.\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category Object\n     * @param {Object} object The source object.\n     * @param {...(string|string[])} [paths] The property paths to pick.\n     * @returns {Object} Returns the new object.\n     * @example\n     *\n     * var object = { 'a': 1, 'b': '2', 'c': 3 };\n     *\n     * _.pick(object, ['a', 'c']);\n     * // => { 'a': 1, 'c': 3 }\n     */\n    var pick = flatRest(function(object, paths) {\n      return object == null ? {} : basePick(object, paths);\n    });\n\n    /**\n     * Creates an object composed of the `object` properties `predicate` returns\n     * truthy for. The predicate is invoked with two arguments: (value, key).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Object\n     * @param {Object} object The source object.\n     * @param {Function} [predicate=_.identity] The function invoked per property.\n     * @returns {Object} Returns the new object.\n     * @example\n     *\n     * var object = { 'a': 1, 'b': '2', 'c': 3 };\n     *\n     * _.pickBy(object, _.isNumber);\n     * // => { 'a': 1, 'c': 3 }\n     */\n    function pickBy(object, predicate) {\n      if (object == null) {\n        return {};\n      }\n      var props = arrayMap(getAllKeysIn(object), function(prop) {\n        return [prop];\n      });\n      predicate = getIteratee(predicate);\n      return basePickBy(object, props, function(value, path) {\n        return predicate(value, path[0]);\n      });\n    }\n\n    /**\n     * This method is like `_.get` except that if the resolved value is a\n     * function it's invoked with the `this` binding of its parent object and\n     * its result is returned.\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category Object\n     * @param {Object} object The object to query.\n     * @param {Array|string} path The path of the property to resolve.\n     * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n     * @returns {*} Returns the resolved value.\n     * @example\n     *\n     * var object = { 'a': [{ 'b': { 'c1': 3, 'c2': _.constant(4) } }] };\n     *\n     * _.result(object, 'a[0].b.c1');\n     * // => 3\n     *\n     * _.result(object, 'a[0].b.c2');\n     * // => 4\n     *\n     * _.result(object, 'a[0].b.c3', 'default');\n     * // => 'default'\n     *\n     * _.result(object, 'a[0].b.c3', _.constant('default'));\n     * // => 'default'\n     */\n    function result(object, path, defaultValue) {\n      path = castPath(path, object);\n\n      var index = -1,\n          length = path.length;\n\n      // Ensure the loop is entered when path is empty.\n      if (!length) {\n        length = 1;\n        object = undefined;\n      }\n      while (++index < length) {\n        var value = object == null ? undefined : object[toKey(path[index])];\n        if (value === undefined) {\n          index = length;\n          value = defaultValue;\n        }\n        object = isFunction(value) ? value.call(object) : value;\n      }\n      return object;\n    }\n\n    /**\n     * Sets the value at `path` of `object`. If a portion of `path` doesn't exist,\n     * it's created. Arrays are created for missing index properties while objects\n     * are created for all other missing properties. Use `_.setWith` to customize\n     * `path` creation.\n     *\n     * **Note:** This method mutates `object`.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.7.0\n     * @category Object\n     * @param {Object} object The object to modify.\n     * @param {Array|string} path The path of the property to set.\n     * @param {*} value The value to set.\n     * @returns {Object} Returns `object`.\n     * @example\n     *\n     * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n     *\n     * _.set(object, 'a[0].b.c', 4);\n     * console.log(object.a[0].b.c);\n     * // => 4\n     *\n     * _.set(object, ['x', '0', 'y', 'z'], 5);\n     * console.log(object.x[0].y.z);\n     * // => 5\n     */\n    function set(object, path, value) {\n      return object == null ? object : baseSet(object, path, value);\n    }\n\n    /**\n     * This method is like `_.set` except that it accepts `customizer` which is\n     * invoked to produce the objects of `path`.  If `customizer` returns `undefined`\n     * path creation is handled by the method instead. The `customizer` is invoked\n     * with three arguments: (nsValue, key, nsObject).\n     *\n     * **Note:** This method mutates `object`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Object\n     * @param {Object} object The object to modify.\n     * @param {Array|string} path The path of the property to set.\n     * @param {*} value The value to set.\n     * @param {Function} [customizer] The function to customize assigned values.\n     * @returns {Object} Returns `object`.\n     * @example\n     *\n     * var object = {};\n     *\n     * _.setWith(object, '[0][1]', 'a', Object);\n     * // => { '0': { '1': 'a' } }\n     */\n    function setWith(object, path, value, customizer) {\n      customizer = typeof customizer == 'function' ? customizer : undefined;\n      return object == null ? object : baseSet(object, path, value, customizer);\n    }\n\n    /**\n     * Creates an array of own enumerable string keyed-value pairs for `object`\n     * which can be consumed by `_.fromPairs`. If `object` is a map or set, its\n     * entries are returned.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @alias entries\n     * @category Object\n     * @param {Object} object The object to query.\n     * @returns {Array} Returns the key-value pairs.\n     * @example\n     *\n     * function Foo() {\n     *   this.a = 1;\n     *   this.b = 2;\n     * }\n     *\n     * Foo.prototype.c = 3;\n     *\n     * _.toPairs(new Foo);\n     * // => [['a', 1], ['b', 2]] (iteration order is not guaranteed)\n     */\n    var toPairs = createToPairs(keys);\n\n    /**\n     * Creates an array of own and inherited enumerable string keyed-value pairs\n     * for `object` which can be consumed by `_.fromPairs`. If `object` is a map\n     * or set, its entries are returned.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @alias entriesIn\n     * @category Object\n     * @param {Object} object The object to query.\n     * @returns {Array} Returns the key-value pairs.\n     * @example\n     *\n     * function Foo() {\n     *   this.a = 1;\n     *   this.b = 2;\n     * }\n     *\n     * Foo.prototype.c = 3;\n     *\n     * _.toPairsIn(new Foo);\n     * // => [['a', 1], ['b', 2], ['c', 3]] (iteration order is not guaranteed)\n     */\n    var toPairsIn = createToPairs(keysIn);\n\n    /**\n     * An alternative to `_.reduce`; this method transforms `object` to a new\n     * `accumulator` object which is the result of running each of its own\n     * enumerable string keyed properties thru `iteratee`, with each invocation\n     * potentially mutating the `accumulator` object. If `accumulator` is not\n     * provided, a new object with the same `[[Prototype]]` will be used. The\n     * iteratee is invoked with four arguments: (accumulator, value, key, object).\n     * Iteratee functions may exit iteration early by explicitly returning `false`.\n     *\n     * @static\n     * @memberOf _\n     * @since 1.3.0\n     * @category Object\n     * @param {Object} object The object to iterate over.\n     * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n     * @param {*} [accumulator] The custom accumulator value.\n     * @returns {*} Returns the accumulated value.\n     * @example\n     *\n     * _.transform([2, 3, 4], function(result, n) {\n     *   result.push(n *= n);\n     *   return n % 2 == 0;\n     * }, []);\n     * // => [4, 9]\n     *\n     * _.transform({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {\n     *   (result[value] || (result[value] = [])).push(key);\n     * }, {});\n     * // => { '1': ['a', 'c'], '2': ['b'] }\n     */\n    function transform(object, iteratee, accumulator) {\n      var isArr = isArray(object),\n          isArrLike = isArr || isBuffer(object) || isTypedArray(object);\n\n      iteratee = getIteratee(iteratee, 4);\n      if (accumulator == null) {\n        var Ctor = object && object.constructor;\n        if (isArrLike) {\n          accumulator = isArr ? new Ctor : [];\n        }\n        else if (isObject(object)) {\n          accumulator = isFunction(Ctor) ? baseCreate(getPrototype(object)) : {};\n        }\n        else {\n          accumulator = {};\n        }\n      }\n      (isArrLike ? arrayEach : baseForOwn)(object, function(value, index, object) {\n        return iteratee(accumulator, value, index, object);\n      });\n      return accumulator;\n    }\n\n    /**\n     * Removes the property at `path` of `object`.\n     *\n     * **Note:** This method mutates `object`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Object\n     * @param {Object} object The object to modify.\n     * @param {Array|string} path The path of the property to unset.\n     * @returns {boolean} Returns `true` if the property is deleted, else `false`.\n     * @example\n     *\n     * var object = { 'a': [{ 'b': { 'c': 7 } }] };\n     * _.unset(object, 'a[0].b.c');\n     * // => true\n     *\n     * console.log(object);\n     * // => { 'a': [{ 'b': {} }] };\n     *\n     * _.unset(object, ['a', '0', 'b', 'c']);\n     * // => true\n     *\n     * console.log(object);\n     * // => { 'a': [{ 'b': {} }] };\n     */\n    function unset(object, path) {\n      return object == null ? true : baseUnset(object, path);\n    }\n\n    /**\n     * This method is like `_.set` except that accepts `updater` to produce the\n     * value to set. Use `_.updateWith` to customize `path` creation. The `updater`\n     * is invoked with one argument: (value).\n     *\n     * **Note:** This method mutates `object`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.6.0\n     * @category Object\n     * @param {Object} object The object to modify.\n     * @param {Array|string} path The path of the property to set.\n     * @param {Function} updater The function to produce the updated value.\n     * @returns {Object} Returns `object`.\n     * @example\n     *\n     * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n     *\n     * _.update(object, 'a[0].b.c', function(n) { return n * n; });\n     * console.log(object.a[0].b.c);\n     * // => 9\n     *\n     * _.update(object, 'x[0].y.z', function(n) { return n ? n + 1 : 0; });\n     * console.log(object.x[0].y.z);\n     * // => 0\n     */\n    function update(object, path, updater) {\n      return object == null ? object : baseUpdate(object, path, castFunction(updater));\n    }\n\n    /**\n     * This method is like `_.update` except that it accepts `customizer` which is\n     * invoked to produce the objects of `path`.  If `customizer` returns `undefined`\n     * path creation is handled by the method instead. The `customizer` is invoked\n     * with three arguments: (nsValue, key, nsObject).\n     *\n     * **Note:** This method mutates `object`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.6.0\n     * @category Object\n     * @param {Object} object The object to modify.\n     * @param {Array|string} path The path of the property to set.\n     * @param {Function} updater The function to produce the updated value.\n     * @param {Function} [customizer] The function to customize assigned values.\n     * @returns {Object} Returns `object`.\n     * @example\n     *\n     * var object = {};\n     *\n     * _.updateWith(object, '[0][1]', _.constant('a'), Object);\n     * // => { '0': { '1': 'a' } }\n     */\n    function updateWith(object, path, updater, customizer) {\n      customizer = typeof customizer == 'function' ? customizer : undefined;\n      return object == null ? object : baseUpdate(object, path, castFunction(updater), customizer);\n    }\n\n    /**\n     * Creates an array of the own enumerable string keyed property values of `object`.\n     *\n     * **Note:** Non-object values are coerced to objects.\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category Object\n     * @param {Object} object The object to query.\n     * @returns {Array} Returns the array of property values.\n     * @example\n     *\n     * function Foo() {\n     *   this.a = 1;\n     *   this.b = 2;\n     * }\n     *\n     * Foo.prototype.c = 3;\n     *\n     * _.values(new Foo);\n     * // => [1, 2] (iteration order is not guaranteed)\n     *\n     * _.values('hi');\n     * // => ['h', 'i']\n     */\n    function values(object) {\n      return object == null ? [] : baseValues(object, keys(object));\n    }\n\n    /**\n     * Creates an array of the own and inherited enumerable string keyed property\n     * values of `object`.\n     *\n     * **Note:** Non-object values are coerced to objects.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Object\n     * @param {Object} object The object to query.\n     * @returns {Array} Returns the array of property values.\n     * @example\n     *\n     * function Foo() {\n     *   this.a = 1;\n     *   this.b = 2;\n     * }\n     *\n     * Foo.prototype.c = 3;\n     *\n     * _.valuesIn(new Foo);\n     * // => [1, 2, 3] (iteration order is not guaranteed)\n     */\n    function valuesIn(object) {\n      return object == null ? [] : baseValues(object, keysIn(object));\n    }\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     * Clamps `number` within the inclusive `lower` and `upper` bounds.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Number\n     * @param {number} number The number to clamp.\n     * @param {number} [lower] The lower bound.\n     * @param {number} upper The upper bound.\n     * @returns {number} Returns the clamped number.\n     * @example\n     *\n     * _.clamp(-10, -5, 5);\n     * // => -5\n     *\n     * _.clamp(10, -5, 5);\n     * // => 5\n     */\n    function clamp(number, lower, upper) {\n      if (upper === undefined) {\n        upper = lower;\n        lower = undefined;\n      }\n      if (upper !== undefined) {\n        upper = toNumber(upper);\n        upper = upper === upper ? upper : 0;\n      }\n      if (lower !== undefined) {\n        lower = toNumber(lower);\n        lower = lower === lower ? lower : 0;\n      }\n      return baseClamp(toNumber(number), lower, upper);\n    }\n\n    /**\n     * Checks if `n` is between `start` and up to, but not including, `end`. If\n     * `end` is not specified, it's set to `start` with `start` then set to `0`.\n     * If `start` is greater than `end` the params are swapped to support\n     * negative ranges.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.3.0\n     * @category Number\n     * @param {number} number The number to check.\n     * @param {number} [start=0] The start of the range.\n     * @param {number} end The end of the range.\n     * @returns {boolean} Returns `true` if `number` is in the range, else `false`.\n     * @see _.range, _.rangeRight\n     * @example\n     *\n     * _.inRange(3, 2, 4);\n     * // => true\n     *\n     * _.inRange(4, 8);\n     * // => true\n     *\n     * _.inRange(4, 2);\n     * // => false\n     *\n     * _.inRange(2, 2);\n     * // => false\n     *\n     * _.inRange(1.2, 2);\n     * // => true\n     *\n     * _.inRange(5.2, 4);\n     * // => false\n     *\n     * _.inRange(-3, -2, -6);\n     * // => true\n     */\n    function inRange(number, start, end) {\n      start = toFinite(start);\n      if (end === undefined) {\n        end = start;\n        start = 0;\n      } else {\n        end = toFinite(end);\n      }\n      number = toNumber(number);\n      return baseInRange(number, start, end);\n    }\n\n    /**\n     * Produces a random number between the inclusive `lower` and `upper` bounds.\n     * If only one argument is provided a number between `0` and the given number\n     * is returned. If `floating` is `true`, or either `lower` or `upper` are\n     * floats, a floating-point number is returned instead of an integer.\n     *\n     * **Note:** JavaScript follows the IEEE-754 standard for resolving\n     * floating-point values which can produce unexpected results.\n     *\n     * **Note:** If `lower` is greater than `upper`, the values are swapped.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.7.0\n     * @category Number\n     * @param {number} [lower=0] The lower bound.\n     * @param {number} [upper=1] The upper bound.\n     * @param {boolean} [floating] Specify returning a floating-point number.\n     * @returns {number} Returns the random number.\n     * @example\n     *\n     * _.random(0, 5);\n     * // => an integer between 0 and 5\n     *\n     * // when lower is greater than upper the values are swapped\n     * _.random(5, 0);\n     * // => an integer between 0 and 5\n     *\n     * _.random(5);\n     * // => also an integer between 0 and 5\n     *\n     * _.random(-5);\n     * // => an integer between -5 and 0\n     *\n     * _.random(5, true);\n     * // => a floating-point number between 0 and 5\n     *\n     * _.random(1.2, 5.2);\n     * // => a floating-point number between 1.2 and 5.2\n     */\n    function random(lower, upper, floating) {\n      if (floating && typeof floating != 'boolean' && isIterateeCall(lower, upper, floating)) {\n        upper = floating = undefined;\n      }\n      if (floating === undefined) {\n        if (typeof upper == 'boolean') {\n          floating = upper;\n          upper = undefined;\n        }\n        else if (typeof lower == 'boolean') {\n          floating = lower;\n          lower = undefined;\n        }\n      }\n      if (lower === undefined && upper === undefined) {\n        lower = 0;\n        upper = 1;\n      }\n      else {\n        lower = toFinite(lower);\n        if (upper === undefined) {\n          upper = lower;\n          lower = 0;\n        } else {\n          upper = toFinite(upper);\n        }\n      }\n      if (lower > upper) {\n        var temp = lower;\n        lower = upper;\n        upper = temp;\n      }\n      if (floating || lower % 1 || upper % 1) {\n        var rand = nativeRandom();\n        return nativeMin(lower + (rand * (upper - lower + freeParseFloat('1e-' + ((rand + '').length - 1)))), upper);\n      }\n      return baseRandom(lower, upper);\n    }\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     * Converts `string` to [camel case](https://en.wikipedia.org/wiki/CamelCase).\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category String\n     * @param {string} [string=''] The string to convert.\n     * @returns {string} Returns the camel cased string.\n     * @example\n     *\n     * _.camelCase('Foo Bar');\n     * // => 'fooBar'\n     *\n     * _.camelCase('--foo-bar--');\n     * // => 'fooBar'\n     *\n     * _.camelCase('__FOO_BAR__');\n     * // => 'fooBar'\n     */\n    var camelCase = createCompounder(function(result, word, index) {\n      word = word.toLowerCase();\n      return result + (index ? capitalize(word) : word);\n    });\n\n    /**\n     * Converts the first character of `string` to upper case and the remaining\n     * to lower case.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category String\n     * @param {string} [string=''] The string to capitalize.\n     * @returns {string} Returns the capitalized string.\n     * @example\n     *\n     * _.capitalize('FRED');\n     * // => 'Fred'\n     */\n    function capitalize(string) {\n      return upperFirst(toString(string).toLowerCase());\n    }\n\n    /**\n     * Deburrs `string` by converting\n     * [Latin-1 Supplement](https://en.wikipedia.org/wiki/Latin-1_Supplement_(Unicode_block)#Character_table)\n     * and [Latin Extended-A](https://en.wikipedia.org/wiki/Latin_Extended-A)\n     * letters to basic Latin letters and removing\n     * [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks).\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category String\n     * @param {string} [string=''] The string to deburr.\n     * @returns {string} Returns the deburred string.\n     * @example\n     *\n     * _.deburr('déjà vu');\n     * // => 'deja vu'\n     */\n    function deburr(string) {\n      string = toString(string);\n      return string && string.replace(reLatin, deburrLetter).replace(reComboMark, '');\n    }\n\n    /**\n     * Checks if `string` ends with the given target string.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category String\n     * @param {string} [string=''] The string to inspect.\n     * @param {string} [target] The string to search for.\n     * @param {number} [position=string.length] The position to search up to.\n     * @returns {boolean} Returns `true` if `string` ends with `target`,\n     *  else `false`.\n     * @example\n     *\n     * _.endsWith('abc', 'c');\n     * // => true\n     *\n     * _.endsWith('abc', 'b');\n     * // => false\n     *\n     * _.endsWith('abc', 'b', 2);\n     * // => true\n     */\n    function endsWith(string, target, position) {\n      string = toString(string);\n      target = baseToString(target);\n\n      var length = string.length;\n      position = position === undefined\n        ? length\n        : baseClamp(toInteger(position), 0, length);\n\n      var end = position;\n      position -= target.length;\n      return position >= 0 && string.slice(position, end) == target;\n    }\n\n    /**\n     * Converts the characters \"&\", \"<\", \">\", '\"', and \"'\" in `string` to their\n     * corresponding HTML entities.\n     *\n     * **Note:** No other characters are escaped. To escape additional\n     * characters use a third-party library like [_he_](https://mths.be/he).\n     *\n     * Though the \">\" character is escaped for symmetry, characters like\n     * \">\" and \"/\" don't need escaping in HTML and have no special meaning\n     * unless they're part of a tag or unquoted attribute value. See\n     * [Mathias Bynens's article](https://mathiasbynens.be/notes/ambiguous-ampersands)\n     * (under \"semi-related fun fact\") for more details.\n     *\n     * When working with HTML you should always\n     * [quote attribute values](http://wonko.com/post/html-escaping) to reduce\n     * XSS vectors.\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category String\n     * @param {string} [string=''] The string to escape.\n     * @returns {string} Returns the escaped string.\n     * @example\n     *\n     * _.escape('fred, barney, & pebbles');\n     * // => 'fred, barney, &amp; pebbles'\n     */\n    function escape(string) {\n      string = toString(string);\n      return (string && reHasUnescapedHtml.test(string))\n        ? string.replace(reUnescapedHtml, escapeHtmlChar)\n        : string;\n    }\n\n    /**\n     * Escapes the `RegExp` special characters \"^\", \"$\", \"\\\", \".\", \"*\", \"+\",\n     * \"?\", \"(\", \")\", \"[\", \"]\", \"{\", \"}\", and \"|\" in `string`.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category String\n     * @param {string} [string=''] The string to escape.\n     * @returns {string} Returns the escaped string.\n     * @example\n     *\n     * _.escapeRegExp('[lodash](https://lodash.com/)');\n     * // => '\\[lodash\\]\\(https://lodash\\.com/\\)'\n     */\n    function escapeRegExp(string) {\n      string = toString(string);\n      return (string && reHasRegExpChar.test(string))\n        ? string.replace(reRegExpChar, '\\\\$&')\n        : string;\n    }\n\n    /**\n     * Converts `string` to\n     * [kebab case](https://en.wikipedia.org/wiki/Letter_case#Special_case_styles).\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category String\n     * @param {string} [string=''] The string to convert.\n     * @returns {string} Returns the kebab cased string.\n     * @example\n     *\n     * _.kebabCase('Foo Bar');\n     * // => 'foo-bar'\n     *\n     * _.kebabCase('fooBar');\n     * // => 'foo-bar'\n     *\n     * _.kebabCase('__FOO_BAR__');\n     * // => 'foo-bar'\n     */\n    var kebabCase = createCompounder(function(result, word, index) {\n      return result + (index ? '-' : '') + word.toLowerCase();\n    });\n\n    /**\n     * Converts `string`, as space separated words, to lower case.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category String\n     * @param {string} [string=''] The string to convert.\n     * @returns {string} Returns the lower cased string.\n     * @example\n     *\n     * _.lowerCase('--Foo-Bar--');\n     * // => 'foo bar'\n     *\n     * _.lowerCase('fooBar');\n     * // => 'foo bar'\n     *\n     * _.lowerCase('__FOO_BAR__');\n     * // => 'foo bar'\n     */\n    var lowerCase = createCompounder(function(result, word, index) {\n      return result + (index ? ' ' : '') + word.toLowerCase();\n    });\n\n    /**\n     * Converts the first character of `string` to lower case.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category String\n     * @param {string} [string=''] The string to convert.\n     * @returns {string} Returns the converted string.\n     * @example\n     *\n     * _.lowerFirst('Fred');\n     * // => 'fred'\n     *\n     * _.lowerFirst('FRED');\n     * // => 'fRED'\n     */\n    var lowerFirst = createCaseFirst('toLowerCase');\n\n    /**\n     * Pads `string` on the left and right sides if it's shorter than `length`.\n     * Padding characters are truncated if they can't be evenly divided by `length`.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category String\n     * @param {string} [string=''] The string to pad.\n     * @param {number} [length=0] The padding length.\n     * @param {string} [chars=' '] The string used as padding.\n     * @returns {string} Returns the padded string.\n     * @example\n     *\n     * _.pad('abc', 8);\n     * // => '  abc   '\n     *\n     * _.pad('abc', 8, '_-');\n     * // => '_-abc_-_'\n     *\n     * _.pad('abc', 3);\n     * // => 'abc'\n     */\n    function pad(string, length, chars) {\n      string = toString(string);\n      length = toInteger(length);\n\n      var strLength = length ? stringSize(string) : 0;\n      if (!length || strLength >= length) {\n        return string;\n      }\n      var mid = (length - strLength) / 2;\n      return (\n        createPadding(nativeFloor(mid), chars) +\n        string +\n        createPadding(nativeCeil(mid), chars)\n      );\n    }\n\n    /**\n     * Pads `string` on the right side if it's shorter than `length`. Padding\n     * characters are truncated if they exceed `length`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category String\n     * @param {string} [string=''] The string to pad.\n     * @param {number} [length=0] The padding length.\n     * @param {string} [chars=' '] The string used as padding.\n     * @returns {string} Returns the padded string.\n     * @example\n     *\n     * _.padEnd('abc', 6);\n     * // => 'abc   '\n     *\n     * _.padEnd('abc', 6, '_-');\n     * // => 'abc_-_'\n     *\n     * _.padEnd('abc', 3);\n     * // => 'abc'\n     */\n    function padEnd(string, length, chars) {\n      string = toString(string);\n      length = toInteger(length);\n\n      var strLength = length ? stringSize(string) : 0;\n      return (length && strLength < length)\n        ? (string + createPadding(length - strLength, chars))\n        : string;\n    }\n\n    /**\n     * Pads `string` on the left side if it's shorter than `length`. Padding\n     * characters are truncated if they exceed `length`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category String\n     * @param {string} [string=''] The string to pad.\n     * @param {number} [length=0] The padding length.\n     * @param {string} [chars=' '] The string used as padding.\n     * @returns {string} Returns the padded string.\n     * @example\n     *\n     * _.padStart('abc', 6);\n     * // => '   abc'\n     *\n     * _.padStart('abc', 6, '_-');\n     * // => '_-_abc'\n     *\n     * _.padStart('abc', 3);\n     * // => 'abc'\n     */\n    function padStart(string, length, chars) {\n      string = toString(string);\n      length = toInteger(length);\n\n      var strLength = length ? stringSize(string) : 0;\n      return (length && strLength < length)\n        ? (createPadding(length - strLength, chars) + string)\n        : string;\n    }\n\n    /**\n     * Converts `string` to an integer of the specified radix. If `radix` is\n     * `undefined` or `0`, a `radix` of `10` is used unless `value` is a\n     * hexadecimal, in which case a `radix` of `16` is used.\n     *\n     * **Note:** This method aligns with the\n     * [ES5 implementation](https://es5.github.io/#x15.1.2.2) of `parseInt`.\n     *\n     * @static\n     * @memberOf _\n     * @since 1.1.0\n     * @category String\n     * @param {string} string The string to convert.\n     * @param {number} [radix=10] The radix to interpret `value` by.\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n     * @returns {number} Returns the converted integer.\n     * @example\n     *\n     * _.parseInt('08');\n     * // => 8\n     *\n     * _.map(['6', '08', '10'], _.parseInt);\n     * // => [6, 8, 10]\n     */\n    function parseInt(string, radix, guard) {\n      if (guard || radix == null) {\n        radix = 0;\n      } else if (radix) {\n        radix = +radix;\n      }\n      return nativeParseInt(toString(string).replace(reTrimStart, ''), radix || 0);\n    }\n\n    /**\n     * Repeats the given string `n` times.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category String\n     * @param {string} [string=''] The string to repeat.\n     * @param {number} [n=1] The number of times to repeat the string.\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n     * @returns {string} Returns the repeated string.\n     * @example\n     *\n     * _.repeat('*', 3);\n     * // => '***'\n     *\n     * _.repeat('abc', 2);\n     * // => 'abcabc'\n     *\n     * _.repeat('abc', 0);\n     * // => ''\n     */\n    function repeat(string, n, guard) {\n      if ((guard ? isIterateeCall(string, n, guard) : n === undefined)) {\n        n = 1;\n      } else {\n        n = toInteger(n);\n      }\n      return baseRepeat(toString(string), n);\n    }\n\n    /**\n     * Replaces matches for `pattern` in `string` with `replacement`.\n     *\n     * **Note:** This method is based on\n     * [`String#replace`](https://mdn.io/String/replace).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category String\n     * @param {string} [string=''] The string to modify.\n     * @param {RegExp|string} pattern The pattern to replace.\n     * @param {Function|string} replacement The match replacement.\n     * @returns {string} Returns the modified string.\n     * @example\n     *\n     * _.replace('Hi Fred', 'Fred', 'Barney');\n     * // => 'Hi Barney'\n     */\n    function replace() {\n      var args = arguments,\n          string = toString(args[0]);\n\n      return args.length < 3 ? string : string.replace(args[1], args[2]);\n    }\n\n    /**\n     * Converts `string` to\n     * [snake case](https://en.wikipedia.org/wiki/Snake_case).\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category String\n     * @param {string} [string=''] The string to convert.\n     * @returns {string} Returns the snake cased string.\n     * @example\n     *\n     * _.snakeCase('Foo Bar');\n     * // => 'foo_bar'\n     *\n     * _.snakeCase('fooBar');\n     * // => 'foo_bar'\n     *\n     * _.snakeCase('--FOO-BAR--');\n     * // => 'foo_bar'\n     */\n    var snakeCase = createCompounder(function(result, word, index) {\n      return result + (index ? '_' : '') + word.toLowerCase();\n    });\n\n    /**\n     * Splits `string` by `separator`.\n     *\n     * **Note:** This method is based on\n     * [`String#split`](https://mdn.io/String/split).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category String\n     * @param {string} [string=''] The string to split.\n     * @param {RegExp|string} separator The separator pattern to split by.\n     * @param {number} [limit] The length to truncate results to.\n     * @returns {Array} Returns the string segments.\n     * @example\n     *\n     * _.split('a-b-c', '-', 2);\n     * // => ['a', 'b']\n     */\n    function split(string, separator, limit) {\n      if (limit && typeof limit != 'number' && isIterateeCall(string, separator, limit)) {\n        separator = limit = undefined;\n      }\n      limit = limit === undefined ? MAX_ARRAY_LENGTH : limit >>> 0;\n      if (!limit) {\n        return [];\n      }\n      string = toString(string);\n      if (string && (\n            typeof separator == 'string' ||\n            (separator != null && !isRegExp(separator))\n          )) {\n        separator = baseToString(separator);\n        if (!separator && hasUnicode(string)) {\n          return castSlice(stringToArray(string), 0, limit);\n        }\n      }\n      return string.split(separator, limit);\n    }\n\n    /**\n     * Converts `string` to\n     * [start case](https://en.wikipedia.org/wiki/Letter_case#Stylistic_or_specialised_usage).\n     *\n     * @static\n     * @memberOf _\n     * @since 3.1.0\n     * @category String\n     * @param {string} [string=''] The string to convert.\n     * @returns {string} Returns the start cased string.\n     * @example\n     *\n     * _.startCase('--foo-bar--');\n     * // => 'Foo Bar'\n     *\n     * _.startCase('fooBar');\n     * // => 'Foo Bar'\n     *\n     * _.startCase('__FOO_BAR__');\n     * // => 'FOO BAR'\n     */\n    var startCase = createCompounder(function(result, word, index) {\n      return result + (index ? ' ' : '') + upperFirst(word);\n    });\n\n    /**\n     * Checks if `string` starts with the given target string.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category String\n     * @param {string} [string=''] The string to inspect.\n     * @param {string} [target] The string to search for.\n     * @param {number} [position=0] The position to search from.\n     * @returns {boolean} Returns `true` if `string` starts with `target`,\n     *  else `false`.\n     * @example\n     *\n     * _.startsWith('abc', 'a');\n     * // => true\n     *\n     * _.startsWith('abc', 'b');\n     * // => false\n     *\n     * _.startsWith('abc', 'b', 1);\n     * // => true\n     */\n    function startsWith(string, target, position) {\n      string = toString(string);\n      position = position == null\n        ? 0\n        : baseClamp(toInteger(position), 0, string.length);\n\n      target = baseToString(target);\n      return string.slice(position, position + target.length) == target;\n    }\n\n    /**\n     * Creates a compiled template function that can interpolate data properties\n     * in \"interpolate\" delimiters, HTML-escape interpolated data properties in\n     * \"escape\" delimiters, and execute JavaScript in \"evaluate\" delimiters. Data\n     * properties may be accessed as free variables in the template. If a setting\n     * object is given, it takes precedence over `_.templateSettings` values.\n     *\n     * **Security:** `_.template` is insecure and should not be used. It will be\n     * removed in Lodash v5. Avoid untrusted input. See\n     * [threat model](https://github.com/lodash/lodash/blob/main/threat-model.md).\n     *\n     * **Note:** In the development build `_.template` utilizes\n     * [sourceURLs](http://www.html5rocks.com/en/tutorials/developertools/sourcemaps/#toc-sourceurl)\n     * for easier debugging.\n     *\n     * For more information on precompiling templates see\n     * [lodash's custom builds documentation](https://lodash.com/custom-builds).\n     *\n     * For more information on Chrome extension sandboxes see\n     * [Chrome's extensions documentation](https://developer.chrome.com/extensions/sandboxingEval).\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category String\n     * @param {string} [string=''] The template string.\n     * @param {Object} [options={}] The options object.\n     * @param {RegExp} [options.escape=_.templateSettings.escape]\n     *  The HTML \"escape\" delimiter.\n     * @param {RegExp} [options.evaluate=_.templateSettings.evaluate]\n     *  The \"evaluate\" delimiter.\n     * @param {Object} [options.imports=_.templateSettings.imports]\n     *  An object to import into the template as free variables.\n     * @param {RegExp} [options.interpolate=_.templateSettings.interpolate]\n     *  The \"interpolate\" delimiter.\n     * @param {string} [options.sourceURL='lodash.templateSources[n]']\n     *  The sourceURL of the compiled template.\n     * @param {string} [options.variable='obj']\n     *  The data object variable name.\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n     * @returns {Function} Returns the compiled template function.\n     * @example\n     *\n     * // Use the \"interpolate\" delimiter to create a compiled template.\n     * var compiled = _.template('hello <%= user %>!');\n     * compiled({ 'user': 'fred' });\n     * // => 'hello fred!'\n     *\n     * // Use the HTML \"escape\" delimiter to escape data property values.\n     * var compiled = _.template('<b><%- value %></b>');\n     * compiled({ 'value': '<script>' });\n     * // => '<b>&lt;script&gt;</b>'\n     *\n     * // Use the \"evaluate\" delimiter to execute JavaScript and generate HTML.\n     * var compiled = _.template('<% _.forEach(users, function(user) { %><li><%- user %></li><% }); %>');\n     * compiled({ 'users': ['fred', 'barney'] });\n     * // => '<li>fred</li><li>barney</li>'\n     *\n     * // Use the internal `print` function in \"evaluate\" delimiters.\n     * var compiled = _.template('<% print(\"hello \" + user); %>!');\n     * compiled({ 'user': 'barney' });\n     * // => 'hello barney!'\n     *\n     * // Use the ES template literal delimiter as an \"interpolate\" delimiter.\n     * // Disable support by replacing the \"interpolate\" delimiter.\n     * var compiled = _.template('hello ${ user }!');\n     * compiled({ 'user': 'pebbles' });\n     * // => 'hello pebbles!'\n     *\n     * // Use backslashes to treat delimiters as plain text.\n     * var compiled = _.template('<%= \"\\\\<%- value %\\\\>\" %>');\n     * compiled({ 'value': 'ignored' });\n     * // => '<%- value %>'\n     *\n     * // Use the `imports` option to import `jQuery` as `jq`.\n     * var text = '<% jq.each(users, function(user) { %><li><%- user %></li><% }); %>';\n     * var compiled = _.template(text, { 'imports': { 'jq': jQuery } });\n     * compiled({ 'users': ['fred', 'barney'] });\n     * // => '<li>fred</li><li>barney</li>'\n     *\n     * // Use the `sourceURL` option to specify a custom sourceURL for the template.\n     * var compiled = _.template('hello <%= user %>!', { 'sourceURL': '/basic/greeting.jst' });\n     * compiled(data);\n     * // => Find the source of \"greeting.jst\" under the Sources tab or Resources panel of the web inspector.\n     *\n     * // Use the `variable` option to ensure a with-statement isn't used in the compiled template.\n     * var compiled = _.template('hi <%= data.user %>!', { 'variable': 'data' });\n     * compiled.source;\n     * // => function(data) {\n     * //   var __t, __p = '';\n     * //   __p += 'hi ' + ((__t = ( data.user )) == null ? '' : __t) + '!';\n     * //   return __p;\n     * // }\n     *\n     * // Use custom template delimiters.\n     * _.templateSettings.interpolate = /{{([\\s\\S]+?)}}/g;\n     * var compiled = _.template('hello {{ user }}!');\n     * compiled({ 'user': 'mustache' });\n     * // => 'hello mustache!'\n     *\n     * // Use the `source` property to inline compiled templates for meaningful\n     * // line numbers in error messages and stack traces.\n     * fs.writeFileSync(path.join(process.cwd(), 'jst.js'), '\\\n     *   var JST = {\\\n     *     \"main\": ' + _.template(mainText).source + '\\\n     *   };\\\n     * ');\n     */\n    function template(string, options, guard) {\n      // Based on John Resig's `tmpl` implementation\n      // (http://ejohn.org/blog/javascript-micro-templating/)\n      // and Laura Doktorova's doT.js (https://github.com/olado/doT).\n      var settings = lodash.templateSettings;\n\n      if (guard && isIterateeCall(string, options, guard)) {\n        options = undefined;\n      }\n      string = toString(string);\n      options = assignWith({}, options, settings, customDefaultsAssignIn);\n\n      var imports = assignWith({}, options.imports, settings.imports, customDefaultsAssignIn),\n          importsKeys = keys(imports),\n          importsValues = baseValues(imports, importsKeys);\n\n      arrayEach(importsKeys, function(key) {\n        if (reForbiddenIdentifierChars.test(key)) {\n          throw new Error(INVALID_TEMPL_IMPORTS_ERROR_TEXT);\n        }\n      });\n\n      var isEscaping,\n          isEvaluating,\n          index = 0,\n          interpolate = options.interpolate || reNoMatch,\n          source = \"__p += '\";\n\n      // Compile the regexp to match each delimiter.\n      var reDelimiters = RegExp(\n        (options.escape || reNoMatch).source + '|' +\n        interpolate.source + '|' +\n        (interpolate === reInterpolate ? reEsTemplate : reNoMatch).source + '|' +\n        (options.evaluate || reNoMatch).source + '|$'\n      , 'g');\n\n      // Use a sourceURL for easier debugging.\n      // The sourceURL gets injected into the source that's eval-ed, so be careful\n      // to normalize all kinds of whitespace, so e.g. newlines (and unicode versions of it) can't sneak in\n      // and escape the comment, thus injecting code that gets evaled.\n      var sourceURL = '//# sourceURL=' +\n        (hasOwnProperty.call(options, 'sourceURL')\n          ? (options.sourceURL + '').replace(/\\s/g, ' ')\n          : ('lodash.templateSources[' + (++templateCounter) + ']')\n        ) + '\\n';\n\n      string.replace(reDelimiters, function(match, escapeValue, interpolateValue, esTemplateValue, evaluateValue, offset) {\n        interpolateValue || (interpolateValue = esTemplateValue);\n\n        // Escape characters that can't be included in string literals.\n        source += string.slice(index, offset).replace(reUnescapedString, escapeStringChar);\n\n        // Replace delimiters with snippets.\n        if (escapeValue) {\n          isEscaping = true;\n          source += \"' +\\n__e(\" + escapeValue + \") +\\n'\";\n        }\n        if (evaluateValue) {\n          isEvaluating = true;\n          source += \"';\\n\" + evaluateValue + \";\\n__p += '\";\n        }\n        if (interpolateValue) {\n          source += \"' +\\n((__t = (\" + interpolateValue + \")) == null ? '' : __t) +\\n'\";\n        }\n        index = offset + match.length;\n\n        // The JS engine embedded in Adobe products needs `match` returned in\n        // order to produce the correct `offset` value.\n        return match;\n      });\n\n      source += \"';\\n\";\n\n      // If `variable` is not specified wrap a with-statement around the generated\n      // code to add the data object to the top of the scope chain.\n      var variable = hasOwnProperty.call(options, 'variable') && options.variable;\n      if (!variable) {\n        source = 'with (obj) {\\n' + source + '\\n}\\n';\n      }\n      // Throw an error if a forbidden character was found in `variable`, to prevent\n      // potential command injection attacks.\n      else if (reForbiddenIdentifierChars.test(variable)) {\n        throw new Error(INVALID_TEMPL_VAR_ERROR_TEXT);\n      }\n\n      // Cleanup code by stripping empty strings.\n      source = (isEvaluating ? source.replace(reEmptyStringLeading, '') : source)\n        .replace(reEmptyStringMiddle, '$1')\n        .replace(reEmptyStringTrailing, '$1;');\n\n      // Frame code as the function body.\n      source = 'function(' + (variable || 'obj') + ') {\\n' +\n        (variable\n          ? ''\n          : 'obj || (obj = {});\\n'\n        ) +\n        \"var __t, __p = ''\" +\n        (isEscaping\n           ? ', __e = _.escape'\n           : ''\n        ) +\n        (isEvaluating\n          ? ', __j = Array.prototype.join;\\n' +\n            \"function print() { __p += __j.call(arguments, '') }\\n\"\n          : ';\\n'\n        ) +\n        source +\n        'return __p\\n}';\n\n      var result = attempt(function() {\n        return Function(importsKeys, sourceURL + 'return ' + source)\n          .apply(undefined, importsValues);\n      });\n\n      // Provide the compiled function's source by its `toString` method or\n      // the `source` property as a convenience for inlining compiled templates.\n      result.source = source;\n      if (isError(result)) {\n        throw result;\n      }\n      return result;\n    }\n\n    /**\n     * Converts `string`, as a whole, to lower case just like\n     * [String#toLowerCase](https://mdn.io/toLowerCase).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category String\n     * @param {string} [string=''] The string to convert.\n     * @returns {string} Returns the lower cased string.\n     * @example\n     *\n     * _.toLower('--Foo-Bar--');\n     * // => '--foo-bar--'\n     *\n     * _.toLower('fooBar');\n     * // => 'foobar'\n     *\n     * _.toLower('__FOO_BAR__');\n     * // => '__foo_bar__'\n     */\n    function toLower(value) {\n      return toString(value).toLowerCase();\n    }\n\n    /**\n     * Converts `string`, as a whole, to upper case just like\n     * [String#toUpperCase](https://mdn.io/toUpperCase).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category String\n     * @param {string} [string=''] The string to convert.\n     * @returns {string} Returns the upper cased string.\n     * @example\n     *\n     * _.toUpper('--foo-bar--');\n     * // => '--FOO-BAR--'\n     *\n     * _.toUpper('fooBar');\n     * // => 'FOOBAR'\n     *\n     * _.toUpper('__foo_bar__');\n     * // => '__FOO_BAR__'\n     */\n    function toUpper(value) {\n      return toString(value).toUpperCase();\n    }\n\n    /**\n     * Removes leading and trailing whitespace or specified characters from `string`.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category String\n     * @param {string} [string=''] The string to trim.\n     * @param {string} [chars=whitespace] The characters to trim.\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n     * @returns {string} Returns the trimmed string.\n     * @example\n     *\n     * _.trim('  abc  ');\n     * // => 'abc'\n     *\n     * _.trim('-_-abc-_-', '_-');\n     * // => 'abc'\n     *\n     * _.map(['  foo  ', '  bar  '], _.trim);\n     * // => ['foo', 'bar']\n     */\n    function trim(string, chars, guard) {\n      string = toString(string);\n      if (string && (guard || chars === undefined)) {\n        return baseTrim(string);\n      }\n      if (!string || !(chars = baseToString(chars))) {\n        return string;\n      }\n      var strSymbols = stringToArray(string),\n          chrSymbols = stringToArray(chars),\n          start = charsStartIndex(strSymbols, chrSymbols),\n          end = charsEndIndex(strSymbols, chrSymbols) + 1;\n\n      return castSlice(strSymbols, start, end).join('');\n    }\n\n    /**\n     * Removes trailing whitespace or specified characters from `string`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category String\n     * @param {string} [string=''] The string to trim.\n     * @param {string} [chars=whitespace] The characters to trim.\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n     * @returns {string} Returns the trimmed string.\n     * @example\n     *\n     * _.trimEnd('  abc  ');\n     * // => '  abc'\n     *\n     * _.trimEnd('-_-abc-_-', '_-');\n     * // => '-_-abc'\n     */\n    function trimEnd(string, chars, guard) {\n      string = toString(string);\n      if (string && (guard || chars === undefined)) {\n        return string.slice(0, trimmedEndIndex(string) + 1);\n      }\n      if (!string || !(chars = baseToString(chars))) {\n        return string;\n      }\n      var strSymbols = stringToArray(string),\n          end = charsEndIndex(strSymbols, stringToArray(chars)) + 1;\n\n      return castSlice(strSymbols, 0, end).join('');\n    }\n\n    /**\n     * Removes leading whitespace or specified characters from `string`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category String\n     * @param {string} [string=''] The string to trim.\n     * @param {string} [chars=whitespace] The characters to trim.\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n     * @returns {string} Returns the trimmed string.\n     * @example\n     *\n     * _.trimStart('  abc  ');\n     * // => 'abc  '\n     *\n     * _.trimStart('-_-abc-_-', '_-');\n     * // => 'abc-_-'\n     */\n    function trimStart(string, chars, guard) {\n      string = toString(string);\n      if (string && (guard || chars === undefined)) {\n        return string.replace(reTrimStart, '');\n      }\n      if (!string || !(chars = baseToString(chars))) {\n        return string;\n      }\n      var strSymbols = stringToArray(string),\n          start = charsStartIndex(strSymbols, stringToArray(chars));\n\n      return castSlice(strSymbols, start).join('');\n    }\n\n    /**\n     * Truncates `string` if it's longer than the given maximum string length.\n     * The last characters of the truncated string are replaced with the omission\n     * string which defaults to \"...\".\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category String\n     * @param {string} [string=''] The string to truncate.\n     * @param {Object} [options={}] The options object.\n     * @param {number} [options.length=30] The maximum string length.\n     * @param {string} [options.omission='...'] The string to indicate text is omitted.\n     * @param {RegExp|string} [options.separator] The separator pattern to truncate to.\n     * @returns {string} Returns the truncated string.\n     * @example\n     *\n     * _.truncate('hi-diddly-ho there, neighborino');\n     * // => 'hi-diddly-ho there, neighbo...'\n     *\n     * _.truncate('hi-diddly-ho there, neighborino', {\n     *   'length': 24,\n     *   'separator': ' '\n     * });\n     * // => 'hi-diddly-ho there,...'\n     *\n     * _.truncate('hi-diddly-ho there, neighborino', {\n     *   'length': 24,\n     *   'separator': /,? +/\n     * });\n     * // => 'hi-diddly-ho there...'\n     *\n     * _.truncate('hi-diddly-ho there, neighborino', {\n     *   'omission': ' [...]'\n     * });\n     * // => 'hi-diddly-ho there, neig [...]'\n     */\n    function truncate(string, options) {\n      var length = DEFAULT_TRUNC_LENGTH,\n          omission = DEFAULT_TRUNC_OMISSION;\n\n      if (isObject(options)) {\n        var separator = 'separator' in options ? options.separator : separator;\n        length = 'length' in options ? toInteger(options.length) : length;\n        omission = 'omission' in options ? baseToString(options.omission) : omission;\n      }\n      string = toString(string);\n\n      var strLength = string.length;\n      if (hasUnicode(string)) {\n        var strSymbols = stringToArray(string);\n        strLength = strSymbols.length;\n      }\n      if (length >= strLength) {\n        return string;\n      }\n      var end = length - stringSize(omission);\n      if (end < 1) {\n        return omission;\n      }\n      var result = strSymbols\n        ? castSlice(strSymbols, 0, end).join('')\n        : string.slice(0, end);\n\n      if (separator === undefined) {\n        return result + omission;\n      }\n      if (strSymbols) {\n        end += (result.length - end);\n      }\n      if (isRegExp(separator)) {\n        if (string.slice(end).search(separator)) {\n          var match,\n              substring = result;\n\n          if (!separator.global) {\n            separator = RegExp(separator.source, toString(reFlags.exec(separator)) + 'g');\n          }\n          separator.lastIndex = 0;\n          while ((match = separator.exec(substring))) {\n            var newEnd = match.index;\n          }\n          result = result.slice(0, newEnd === undefined ? end : newEnd);\n        }\n      } else if (string.indexOf(baseToString(separator), end) != end) {\n        var index = result.lastIndexOf(separator);\n        if (index > -1) {\n          result = result.slice(0, index);\n        }\n      }\n      return result + omission;\n    }\n\n    /**\n     * The inverse of `_.escape`; this method converts the HTML entities\n     * `&amp;`, `&lt;`, `&gt;`, `&quot;`, and `&#39;` in `string` to\n     * their corresponding characters.\n     *\n     * **Note:** No other HTML entities are unescaped. To unescape additional\n     * HTML entities use a third-party library like [_he_](https://mths.be/he).\n     *\n     * @static\n     * @memberOf _\n     * @since 0.6.0\n     * @category String\n     * @param {string} [string=''] The string to unescape.\n     * @returns {string} Returns the unescaped string.\n     * @example\n     *\n     * _.unescape('fred, barney, &amp; pebbles');\n     * // => 'fred, barney, & pebbles'\n     */\n    function unescape(string) {\n      string = toString(string);\n      return (string && reHasEscapedHtml.test(string))\n        ? string.replace(reEscapedHtml, unescapeHtmlChar)\n        : string;\n    }\n\n    /**\n     * Converts `string`, as space separated words, to upper case.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category String\n     * @param {string} [string=''] The string to convert.\n     * @returns {string} Returns the upper cased string.\n     * @example\n     *\n     * _.upperCase('--foo-bar');\n     * // => 'FOO BAR'\n     *\n     * _.upperCase('fooBar');\n     * // => 'FOO BAR'\n     *\n     * _.upperCase('__foo_bar__');\n     * // => 'FOO BAR'\n     */\n    var upperCase = createCompounder(function(result, word, index) {\n      return result + (index ? ' ' : '') + word.toUpperCase();\n    });\n\n    /**\n     * Converts the first character of `string` to upper case.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category String\n     * @param {string} [string=''] The string to convert.\n     * @returns {string} Returns the converted string.\n     * @example\n     *\n     * _.upperFirst('fred');\n     * // => 'Fred'\n     *\n     * _.upperFirst('FRED');\n     * // => 'FRED'\n     */\n    var upperFirst = createCaseFirst('toUpperCase');\n\n    /**\n     * Splits `string` into an array of its words.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category String\n     * @param {string} [string=''] The string to inspect.\n     * @param {RegExp|string} [pattern] The pattern to match words.\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n     * @returns {Array} Returns the words of `string`.\n     * @example\n     *\n     * _.words('fred, barney, & pebbles');\n     * // => ['fred', 'barney', 'pebbles']\n     *\n     * _.words('fred, barney, & pebbles', /[^, ]+/g);\n     * // => ['fred', 'barney', '&', 'pebbles']\n     */\n    function words(string, pattern, guard) {\n      string = toString(string);\n      pattern = guard ? undefined : pattern;\n\n      if (pattern === undefined) {\n        return hasUnicodeWord(string) ? unicodeWords(string) : asciiWords(string);\n      }\n      return string.match(pattern) || [];\n    }\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     * Attempts to invoke `func`, returning either the result or the caught error\n     * object. Any additional arguments are provided to `func` when it's invoked.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Util\n     * @param {Function} func The function to attempt.\n     * @param {...*} [args] The arguments to invoke `func` with.\n     * @returns {*} Returns the `func` result or error object.\n     * @example\n     *\n     * // Avoid throwing errors for invalid selectors.\n     * var elements = _.attempt(function(selector) {\n     *   return document.querySelectorAll(selector);\n     * }, '>_>');\n     *\n     * if (_.isError(elements)) {\n     *   elements = [];\n     * }\n     */\n    var attempt = baseRest(function(func, args) {\n      try {\n        return apply(func, undefined, args);\n      } catch (e) {\n        return isError(e) ? e : new Error(e);\n      }\n    });\n\n    /**\n     * Binds methods of an object to the object itself, overwriting the existing\n     * method.\n     *\n     * **Note:** This method doesn't set the \"length\" property of bound functions.\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category Util\n     * @param {Object} object The object to bind and assign the bound methods to.\n     * @param {...(string|string[])} methodNames The object method names to bind.\n     * @returns {Object} Returns `object`.\n     * @example\n     *\n     * var view = {\n     *   'label': 'docs',\n     *   'click': function() {\n     *     console.log('clicked ' + this.label);\n     *   }\n     * };\n     *\n     * _.bindAll(view, ['click']);\n     * jQuery(element).on('click', view.click);\n     * // => Logs 'clicked docs' when clicked.\n     */\n    var bindAll = flatRest(function(object, methodNames) {\n      arrayEach(methodNames, function(key) {\n        key = toKey(key);\n        baseAssignValue(object, key, bind(object[key], object));\n      });\n      return object;\n    });\n\n    /**\n     * Creates a function that iterates over `pairs` and invokes the corresponding\n     * function of the first predicate to return truthy. The predicate-function\n     * pairs are invoked with the `this` binding and arguments of the created\n     * function.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Util\n     * @param {Array} pairs The predicate-function pairs.\n     * @returns {Function} Returns the new composite function.\n     * @example\n     *\n     * var func = _.cond([\n     *   [_.matches({ 'a': 1 }),           _.constant('matches A')],\n     *   [_.conforms({ 'b': _.isNumber }), _.constant('matches B')],\n     *   [_.stubTrue,                      _.constant('no match')]\n     * ]);\n     *\n     * func({ 'a': 1, 'b': 2 });\n     * // => 'matches A'\n     *\n     * func({ 'a': 0, 'b': 1 });\n     * // => 'matches B'\n     *\n     * func({ 'a': '1', 'b': '2' });\n     * // => 'no match'\n     */\n    function cond(pairs) {\n      var length = pairs == null ? 0 : pairs.length,\n          toIteratee = getIteratee();\n\n      pairs = !length ? [] : arrayMap(pairs, function(pair) {\n        if (typeof pair[1] != 'function') {\n          throw new TypeError(FUNC_ERROR_TEXT);\n        }\n        return [toIteratee(pair[0]), pair[1]];\n      });\n\n      return baseRest(function(args) {\n        var index = -1;\n        while (++index < length) {\n          var pair = pairs[index];\n          if (apply(pair[0], this, args)) {\n            return apply(pair[1], this, args);\n          }\n        }\n      });\n    }\n\n    /**\n     * Creates a function that invokes the predicate properties of `source` with\n     * the corresponding property values of a given object, returning `true` if\n     * all predicates return truthy, else `false`.\n     *\n     * **Note:** The created function is equivalent to `_.conformsTo` with\n     * `source` partially applied.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Util\n     * @param {Object} source The object of property predicates to conform to.\n     * @returns {Function} Returns the new spec function.\n     * @example\n     *\n     * var objects = [\n     *   { 'a': 2, 'b': 1 },\n     *   { 'a': 1, 'b': 2 }\n     * ];\n     *\n     * _.filter(objects, _.conforms({ 'b': function(n) { return n > 1; } }));\n     * // => [{ 'a': 1, 'b': 2 }]\n     */\n    function conforms(source) {\n      return baseConforms(baseClone(source, CLONE_DEEP_FLAG));\n    }\n\n    /**\n     * Creates a function that returns `value`.\n     *\n     * @static\n     * @memberOf _\n     * @since 2.4.0\n     * @category Util\n     * @param {*} value The value to return from the new function.\n     * @returns {Function} Returns the new constant function.\n     * @example\n     *\n     * var objects = _.times(2, _.constant({ 'a': 1 }));\n     *\n     * console.log(objects);\n     * // => [{ 'a': 1 }, { 'a': 1 }]\n     *\n     * console.log(objects[0] === objects[1]);\n     * // => true\n     */\n    function constant(value) {\n      return function() {\n        return value;\n      };\n    }\n\n    /**\n     * Checks `value` to determine whether a default value should be returned in\n     * its place. The `defaultValue` is returned if `value` is `NaN`, `null`,\n     * or `undefined`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.14.0\n     * @category Util\n     * @param {*} value The value to check.\n     * @param {*} defaultValue The default value.\n     * @returns {*} Returns the resolved value.\n     * @example\n     *\n     * _.defaultTo(1, 10);\n     * // => 1\n     *\n     * _.defaultTo(undefined, 10);\n     * // => 10\n     */\n    function defaultTo(value, defaultValue) {\n      return (value == null || value !== value) ? defaultValue : value;\n    }\n\n    /**\n     * Creates a function that returns the result of invoking the given functions\n     * with the `this` binding of the created function, where each successive\n     * invocation is supplied the return value of the previous.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Util\n     * @param {...(Function|Function[])} [funcs] The functions to invoke.\n     * @returns {Function} Returns the new composite function.\n     * @see _.flowRight\n     * @example\n     *\n     * function square(n) {\n     *   return n * n;\n     * }\n     *\n     * var addSquare = _.flow([_.add, square]);\n     * addSquare(1, 2);\n     * // => 9\n     */\n    var flow = createFlow();\n\n    /**\n     * This method is like `_.flow` except that it creates a function that\n     * invokes the given functions from right to left.\n     *\n     * @static\n     * @since 3.0.0\n     * @memberOf _\n     * @category Util\n     * @param {...(Function|Function[])} [funcs] The functions to invoke.\n     * @returns {Function} Returns the new composite function.\n     * @see _.flow\n     * @example\n     *\n     * function square(n) {\n     *   return n * n;\n     * }\n     *\n     * var addSquare = _.flowRight([square, _.add]);\n     * addSquare(1, 2);\n     * // => 9\n     */\n    var flowRight = createFlow(true);\n\n    /**\n     * This method returns the first argument it receives.\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category Util\n     * @param {*} value Any value.\n     * @returns {*} Returns `value`.\n     * @example\n     *\n     * var object = { 'a': 1 };\n     *\n     * console.log(_.identity(object) === object);\n     * // => true\n     */\n    function identity(value) {\n      return value;\n    }\n\n    /**\n     * Creates a function that invokes `func` with the arguments of the created\n     * function. If `func` is a property name, the created function returns the\n     * property value for a given element. If `func` is an array or object, the\n     * created function returns `true` for elements that contain the equivalent\n     * source properties, otherwise it returns `false`.\n     *\n     * @static\n     * @since 4.0.0\n     * @memberOf _\n     * @category Util\n     * @param {*} [func=_.identity] The value to convert to a callback.\n     * @returns {Function} Returns the callback.\n     * @example\n     *\n     * var users = [\n     *   { 'user': 'barney', 'age': 36, 'active': true },\n     *   { 'user': 'fred',   'age': 40, 'active': false }\n     * ];\n     *\n     * // The `_.matches` iteratee shorthand.\n     * _.filter(users, _.iteratee({ 'user': 'barney', 'active': true }));\n     * // => [{ 'user': 'barney', 'age': 36, 'active': true }]\n     *\n     * // The `_.matchesProperty` iteratee shorthand.\n     * _.filter(users, _.iteratee(['user', 'fred']));\n     * // => [{ 'user': 'fred', 'age': 40 }]\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.map(users, _.iteratee('user'));\n     * // => ['barney', 'fred']\n     *\n     * // Create custom iteratee shorthands.\n     * _.iteratee = _.wrap(_.iteratee, function(iteratee, func) {\n     *   return !_.isRegExp(func) ? iteratee(func) : function(string) {\n     *     return func.test(string);\n     *   };\n     * });\n     *\n     * _.filter(['abc', 'def'], /ef/);\n     * // => ['def']\n     */\n    function iteratee(func) {\n      return baseIteratee(typeof func == 'function' ? func : baseClone(func, CLONE_DEEP_FLAG));\n    }\n\n    /**\n     * Creates a function that performs a partial deep comparison between a given\n     * object and `source`, returning `true` if the given object has equivalent\n     * property values, else `false`.\n     *\n     * **Note:** The created function is equivalent to `_.isMatch` with `source`\n     * partially applied.\n     *\n     * Partial comparisons will match empty array and empty object `source`\n     * values against any array or object value, respectively. See `_.isEqual`\n     * for a list of supported value comparisons.\n     *\n     * **Note:** Multiple values can be checked by combining several matchers\n     * using `_.overSome`\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Util\n     * @param {Object} source The object of property values to match.\n     * @returns {Function} Returns the new spec function.\n     * @example\n     *\n     * var objects = [\n     *   { 'a': 1, 'b': 2, 'c': 3 },\n     *   { 'a': 4, 'b': 5, 'c': 6 }\n     * ];\n     *\n     * _.filter(objects, _.matches({ 'a': 4, 'c': 6 }));\n     * // => [{ 'a': 4, 'b': 5, 'c': 6 }]\n     *\n     * // Checking for several possible values\n     * _.filter(objects, _.overSome([_.matches({ 'a': 1 }), _.matches({ 'a': 4 })]));\n     * // => [{ 'a': 1, 'b': 2, 'c': 3 }, { 'a': 4, 'b': 5, 'c': 6 }]\n     */\n    function matches(source) {\n      return baseMatches(baseClone(source, CLONE_DEEP_FLAG));\n    }\n\n    /**\n     * Creates a function that performs a partial deep comparison between the\n     * value at `path` of a given object to `srcValue`, returning `true` if the\n     * object value is equivalent, else `false`.\n     *\n     * **Note:** Partial comparisons will match empty array and empty object\n     * `srcValue` values against any array or object value, respectively. See\n     * `_.isEqual` for a list of supported value comparisons.\n     *\n     * **Note:** Multiple values can be checked by combining several matchers\n     * using `_.overSome`\n     *\n     * @static\n     * @memberOf _\n     * @since 3.2.0\n     * @category Util\n     * @param {Array|string} path The path of the property to get.\n     * @param {*} srcValue The value to match.\n     * @returns {Function} Returns the new spec function.\n     * @example\n     *\n     * var objects = [\n     *   { 'a': 1, 'b': 2, 'c': 3 },\n     *   { 'a': 4, 'b': 5, 'c': 6 }\n     * ];\n     *\n     * _.find(objects, _.matchesProperty('a', 4));\n     * // => { 'a': 4, 'b': 5, 'c': 6 }\n     *\n     * // Checking for several possible values\n     * _.filter(objects, _.overSome([_.matchesProperty('a', 1), _.matchesProperty('a', 4)]));\n     * // => [{ 'a': 1, 'b': 2, 'c': 3 }, { 'a': 4, 'b': 5, 'c': 6 }]\n     */\n    function matchesProperty(path, srcValue) {\n      return baseMatchesProperty(path, baseClone(srcValue, CLONE_DEEP_FLAG));\n    }\n\n    /**\n     * Creates a function that invokes the method at `path` of a given object.\n     * Any additional arguments are provided to the invoked method.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.7.0\n     * @category Util\n     * @param {Array|string} path The path of the method to invoke.\n     * @param {...*} [args] The arguments to invoke the method with.\n     * @returns {Function} Returns the new invoker function.\n     * @example\n     *\n     * var objects = [\n     *   { 'a': { 'b': _.constant(2) } },\n     *   { 'a': { 'b': _.constant(1) } }\n     * ];\n     *\n     * _.map(objects, _.method('a.b'));\n     * // => [2, 1]\n     *\n     * _.map(objects, _.method(['a', 'b']));\n     * // => [2, 1]\n     */\n    var method = baseRest(function(path, args) {\n      return function(object) {\n        return baseInvoke(object, path, args);\n      };\n    });\n\n    /**\n     * The opposite of `_.method`; this method creates a function that invokes\n     * the method at a given path of `object`. Any additional arguments are\n     * provided to the invoked method.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.7.0\n     * @category Util\n     * @param {Object} object The object to query.\n     * @param {...*} [args] The arguments to invoke the method with.\n     * @returns {Function} Returns the new invoker function.\n     * @example\n     *\n     * var array = _.times(3, _.constant),\n     *     object = { 'a': array, 'b': array, 'c': array };\n     *\n     * _.map(['a[2]', 'c[0]'], _.methodOf(object));\n     * // => [2, 0]\n     *\n     * _.map([['a', '2'], ['c', '0']], _.methodOf(object));\n     * // => [2, 0]\n     */\n    var methodOf = baseRest(function(object, args) {\n      return function(path) {\n        return baseInvoke(object, path, args);\n      };\n    });\n\n    /**\n     * Adds all own enumerable string keyed function properties of a source\n     * object to the destination object. If `object` is a function, then methods\n     * are added to its prototype as well.\n     *\n     * **Note:** Use `_.runInContext` to create a pristine `lodash` function to\n     * avoid conflicts caused by modifying the original.\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category Util\n     * @param {Function|Object} [object=lodash] The destination object.\n     * @param {Object} source The object of functions to add.\n     * @param {Object} [options={}] The options object.\n     * @param {boolean} [options.chain=true] Specify whether mixins are chainable.\n     * @returns {Function|Object} Returns `object`.\n     * @example\n     *\n     * function vowels(string) {\n     *   return _.filter(string, function(v) {\n     *     return /[aeiou]/i.test(v);\n     *   });\n     * }\n     *\n     * _.mixin({ 'vowels': vowels });\n     * _.vowels('fred');\n     * // => ['e']\n     *\n     * _('fred').vowels().value();\n     * // => ['e']\n     *\n     * _.mixin({ 'vowels': vowels }, { 'chain': false });\n     * _('fred').vowels();\n     * // => ['e']\n     */\n    function mixin(object, source, options) {\n      var props = keys(source),\n          methodNames = baseFunctions(source, props);\n\n      if (options == null &&\n          !(isObject(source) && (methodNames.length || !props.length))) {\n        options = source;\n        source = object;\n        object = this;\n        methodNames = baseFunctions(source, keys(source));\n      }\n      var chain = !(isObject(options) && 'chain' in options) || !!options.chain,\n          isFunc = isFunction(object);\n\n      arrayEach(methodNames, function(methodName) {\n        var func = source[methodName];\n        object[methodName] = func;\n        if (isFunc) {\n          object.prototype[methodName] = function() {\n            var chainAll = this.__chain__;\n            if (chain || chainAll) {\n              var result = object(this.__wrapped__),\n                  actions = result.__actions__ = copyArray(this.__actions__);\n\n              actions.push({ 'func': func, 'args': arguments, 'thisArg': object });\n              result.__chain__ = chainAll;\n              return result;\n            }\n            return func.apply(object, arrayPush([this.value()], arguments));\n          };\n        }\n      });\n\n      return object;\n    }\n\n    /**\n     * Reverts the `_` variable to its previous value and returns a reference to\n     * the `lodash` function.\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category Util\n     * @returns {Function} Returns the `lodash` function.\n     * @example\n     *\n     * var lodash = _.noConflict();\n     */\n    function noConflict() {\n      if (root._ === this) {\n        root._ = oldDash;\n      }\n      return this;\n    }\n\n    /**\n     * This method returns `undefined`.\n     *\n     * @static\n     * @memberOf _\n     * @since 2.3.0\n     * @category Util\n     * @example\n     *\n     * _.times(2, _.noop);\n     * // => [undefined, undefined]\n     */\n    function noop() {\n      // No operation performed.\n    }\n\n    /**\n     * Creates a function that gets the argument at index `n`. If `n` is negative,\n     * the nth argument from the end is returned.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Util\n     * @param {number} [n=0] The index of the argument to return.\n     * @returns {Function} Returns the new pass-thru function.\n     * @example\n     *\n     * var func = _.nthArg(1);\n     * func('a', 'b', 'c', 'd');\n     * // => 'b'\n     *\n     * var func = _.nthArg(-2);\n     * func('a', 'b', 'c', 'd');\n     * // => 'c'\n     */\n    function nthArg(n) {\n      n = toInteger(n);\n      return baseRest(function(args) {\n        return baseNth(args, n);\n      });\n    }\n\n    /**\n     * Creates a function that invokes `iteratees` with the arguments it receives\n     * and returns their results.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Util\n     * @param {...(Function|Function[])} [iteratees=[_.identity]]\n     *  The iteratees to invoke.\n     * @returns {Function} Returns the new function.\n     * @example\n     *\n     * var func = _.over([Math.max, Math.min]);\n     *\n     * func(1, 2, 3, 4);\n     * // => [4, 1]\n     */\n    var over = createOver(arrayMap);\n\n    /**\n     * Creates a function that checks if **all** of the `predicates` return\n     * truthy when invoked with the arguments it receives.\n     *\n     * Following shorthands are possible for providing predicates.\n     * Pass an `Object` and it will be used as an parameter for `_.matches` to create the predicate.\n     * Pass an `Array` of parameters for `_.matchesProperty` and the predicate will be created using them.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Util\n     * @param {...(Function|Function[])} [predicates=[_.identity]]\n     *  The predicates to check.\n     * @returns {Function} Returns the new function.\n     * @example\n     *\n     * var func = _.overEvery([Boolean, isFinite]);\n     *\n     * func('1');\n     * // => true\n     *\n     * func(null);\n     * // => false\n     *\n     * func(NaN);\n     * // => false\n     */\n    var overEvery = createOver(arrayEvery);\n\n    /**\n     * Creates a function that checks if **any** of the `predicates` return\n     * truthy when invoked with the arguments it receives.\n     *\n     * Following shorthands are possible for providing predicates.\n     * Pass an `Object` and it will be used as an parameter for `_.matches` to create the predicate.\n     * Pass an `Array` of parameters for `_.matchesProperty` and the predicate will be created using them.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Util\n     * @param {...(Function|Function[])} [predicates=[_.identity]]\n     *  The predicates to check.\n     * @returns {Function} Returns the new function.\n     * @example\n     *\n     * var func = _.overSome([Boolean, isFinite]);\n     *\n     * func('1');\n     * // => true\n     *\n     * func(null);\n     * // => true\n     *\n     * func(NaN);\n     * // => false\n     *\n     * var matchesFunc = _.overSome([{ 'a': 1 }, { 'a': 2 }])\n     * var matchesPropertyFunc = _.overSome([['a', 1], ['a', 2]])\n     */\n    var overSome = createOver(arraySome);\n\n    /**\n     * Creates a function that returns the value at `path` of a given object.\n     *\n     * @static\n     * @memberOf _\n     * @since 2.4.0\n     * @category Util\n     * @param {Array|string} path The path of the property to get.\n     * @returns {Function} Returns the new accessor function.\n     * @example\n     *\n     * var objects = [\n     *   { 'a': { 'b': 2 } },\n     *   { 'a': { 'b': 1 } }\n     * ];\n     *\n     * _.map(objects, _.property('a.b'));\n     * // => [2, 1]\n     *\n     * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b');\n     * // => [1, 2]\n     */\n    function property(path) {\n      return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path);\n    }\n\n    /**\n     * The opposite of `_.property`; this method creates a function that returns\n     * the value at a given path of `object`.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Util\n     * @param {Object} object The object to query.\n     * @returns {Function} Returns the new accessor function.\n     * @example\n     *\n     * var array = [0, 1, 2],\n     *     object = { 'a': array, 'b': array, 'c': array };\n     *\n     * _.map(['a[2]', 'c[0]'], _.propertyOf(object));\n     * // => [2, 0]\n     *\n     * _.map([['a', '2'], ['c', '0']], _.propertyOf(object));\n     * // => [2, 0]\n     */\n    function propertyOf(object) {\n      return function(path) {\n        return object == null ? undefined : baseGet(object, path);\n      };\n    }\n\n    /**\n     * Creates an array of numbers (positive and/or negative) progressing from\n     * `start` up to, but not including, `end`. A step of `-1` is used if a negative\n     * `start` is specified without an `end` or `step`. If `end` is not specified,\n     * it's set to `start` with `start` then set to `0`.\n     *\n     * **Note:** JavaScript follows the IEEE-754 standard for resolving\n     * floating-point values which can produce unexpected results.\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category Util\n     * @param {number} [start=0] The start of the range.\n     * @param {number} end The end of the range.\n     * @param {number} [step=1] The value to increment or decrement by.\n     * @returns {Array} Returns the range of numbers.\n     * @see _.inRange, _.rangeRight\n     * @example\n     *\n     * _.range(4);\n     * // => [0, 1, 2, 3]\n     *\n     * _.range(-4);\n     * // => [0, -1, -2, -3]\n     *\n     * _.range(1, 5);\n     * // => [1, 2, 3, 4]\n     *\n     * _.range(0, 20, 5);\n     * // => [0, 5, 10, 15]\n     *\n     * _.range(0, -4, -1);\n     * // => [0, -1, -2, -3]\n     *\n     * _.range(1, 4, 0);\n     * // => [1, 1, 1]\n     *\n     * _.range(0);\n     * // => []\n     */\n    var range = createRange();\n\n    /**\n     * This method is like `_.range` except that it populates values in\n     * descending order.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Util\n     * @param {number} [start=0] The start of the range.\n     * @param {number} end The end of the range.\n     * @param {number} [step=1] The value to increment or decrement by.\n     * @returns {Array} Returns the range of numbers.\n     * @see _.inRange, _.range\n     * @example\n     *\n     * _.rangeRight(4);\n     * // => [3, 2, 1, 0]\n     *\n     * _.rangeRight(-4);\n     * // => [-3, -2, -1, 0]\n     *\n     * _.rangeRight(1, 5);\n     * // => [4, 3, 2, 1]\n     *\n     * _.rangeRight(0, 20, 5);\n     * // => [15, 10, 5, 0]\n     *\n     * _.rangeRight(0, -4, -1);\n     * // => [-3, -2, -1, 0]\n     *\n     * _.rangeRight(1, 4, 0);\n     * // => [1, 1, 1]\n     *\n     * _.rangeRight(0);\n     * // => []\n     */\n    var rangeRight = createRange(true);\n\n    /**\n     * This method returns a new empty array.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.13.0\n     * @category Util\n     * @returns {Array} Returns the new empty array.\n     * @example\n     *\n     * var arrays = _.times(2, _.stubArray);\n     *\n     * console.log(arrays);\n     * // => [[], []]\n     *\n     * console.log(arrays[0] === arrays[1]);\n     * // => false\n     */\n    function stubArray() {\n      return [];\n    }\n\n    /**\n     * This method returns `false`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.13.0\n     * @category Util\n     * @returns {boolean} Returns `false`.\n     * @example\n     *\n     * _.times(2, _.stubFalse);\n     * // => [false, false]\n     */\n    function stubFalse() {\n      return false;\n    }\n\n    /**\n     * This method returns a new empty object.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.13.0\n     * @category Util\n     * @returns {Object} Returns the new empty object.\n     * @example\n     *\n     * var objects = _.times(2, _.stubObject);\n     *\n     * console.log(objects);\n     * // => [{}, {}]\n     *\n     * console.log(objects[0] === objects[1]);\n     * // => false\n     */\n    function stubObject() {\n      return {};\n    }\n\n    /**\n     * This method returns an empty string.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.13.0\n     * @category Util\n     * @returns {string} Returns the empty string.\n     * @example\n     *\n     * _.times(2, _.stubString);\n     * // => ['', '']\n     */\n    function stubString() {\n      return '';\n    }\n\n    /**\n     * This method returns `true`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.13.0\n     * @category Util\n     * @returns {boolean} Returns `true`.\n     * @example\n     *\n     * _.times(2, _.stubTrue);\n     * // => [true, true]\n     */\n    function stubTrue() {\n      return true;\n    }\n\n    /**\n     * Invokes the iteratee `n` times, returning an array of the results of\n     * each invocation. The iteratee is invoked with one argument; (index).\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category Util\n     * @param {number} n The number of times to invoke `iteratee`.\n     * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n     * @returns {Array} Returns the array of results.\n     * @example\n     *\n     * _.times(3, String);\n     * // => ['0', '1', '2']\n     *\n     *  _.times(4, _.constant(0));\n     * // => [0, 0, 0, 0]\n     */\n    function times(n, iteratee) {\n      n = toInteger(n);\n      if (n < 1 || n > MAX_SAFE_INTEGER) {\n        return [];\n      }\n      var index = MAX_ARRAY_LENGTH,\n          length = nativeMin(n, MAX_ARRAY_LENGTH);\n\n      iteratee = getIteratee(iteratee);\n      n -= MAX_ARRAY_LENGTH;\n\n      var result = baseTimes(length, iteratee);\n      while (++index < n) {\n        iteratee(index);\n      }\n      return result;\n    }\n\n    /**\n     * Converts `value` to a property path array.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Util\n     * @param {*} value The value to convert.\n     * @returns {Array} Returns the new property path array.\n     * @example\n     *\n     * _.toPath('a.b.c');\n     * // => ['a', 'b', 'c']\n     *\n     * _.toPath('a[0].b.c');\n     * // => ['a', '0', 'b', 'c']\n     */\n    function toPath(value) {\n      if (isArray(value)) {\n        return arrayMap(value, toKey);\n      }\n      return isSymbol(value) ? [value] : copyArray(stringToPath(toString(value)));\n    }\n\n    /**\n     * Generates a unique ID. If `prefix` is given, the ID is appended to it.\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category Util\n     * @param {string} [prefix=''] The value to prefix the ID with.\n     * @returns {string} Returns the unique ID.\n     * @example\n     *\n     * _.uniqueId('contact_');\n     * // => 'contact_104'\n     *\n     * _.uniqueId();\n     * // => '105'\n     */\n    function uniqueId(prefix) {\n      var id = ++idCounter;\n      return toString(prefix) + id;\n    }\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     * Adds two numbers.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.4.0\n     * @category Math\n     * @param {number} augend The first number in an addition.\n     * @param {number} addend The second number in an addition.\n     * @returns {number} Returns the total.\n     * @example\n     *\n     * _.add(6, 4);\n     * // => 10\n     */\n    var add = createMathOperation(function(augend, addend) {\n      return augend + addend;\n    }, 0);\n\n    /**\n     * Computes `number` rounded up to `precision`.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.10.0\n     * @category Math\n     * @param {number} number The number to round up.\n     * @param {number} [precision=0] The precision to round up to.\n     * @returns {number} Returns the rounded up number.\n     * @example\n     *\n     * _.ceil(4.006);\n     * // => 5\n     *\n     * _.ceil(6.004, 2);\n     * // => 6.01\n     *\n     * _.ceil(6040, -2);\n     * // => 6100\n     */\n    var ceil = createRound('ceil');\n\n    /**\n     * Divide two numbers.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.7.0\n     * @category Math\n     * @param {number} dividend The first number in a division.\n     * @param {number} divisor The second number in a division.\n     * @returns {number} Returns the quotient.\n     * @example\n     *\n     * _.divide(6, 4);\n     * // => 1.5\n     */\n    var divide = createMathOperation(function(dividend, divisor) {\n      return dividend / divisor;\n    }, 1);\n\n    /**\n     * Computes `number` rounded down to `precision`.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.10.0\n     * @category Math\n     * @param {number} number The number to round down.\n     * @param {number} [precision=0] The precision to round down to.\n     * @returns {number} Returns the rounded down number.\n     * @example\n     *\n     * _.floor(4.006);\n     * // => 4\n     *\n     * _.floor(0.046, 2);\n     * // => 0.04\n     *\n     * _.floor(4060, -2);\n     * // => 4000\n     */\n    var floor = createRound('floor');\n\n    /**\n     * Computes the maximum value of `array`. If `array` is empty or falsey,\n     * `undefined` is returned.\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category Math\n     * @param {Array} array The array to iterate over.\n     * @returns {*} Returns the maximum value.\n     * @example\n     *\n     * _.max([4, 2, 8, 6]);\n     * // => 8\n     *\n     * _.max([]);\n     * // => undefined\n     */\n    function max(array) {\n      return (array && array.length)\n        ? baseExtremum(array, identity, baseGt)\n        : undefined;\n    }\n\n    /**\n     * This method is like `_.max` except that it accepts `iteratee` which is\n     * invoked for each element in `array` to generate the criterion by which\n     * the value is ranked. The iteratee is invoked with one argument: (value).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Math\n     * @param {Array} array The array to iterate over.\n     * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n     * @returns {*} Returns the maximum value.\n     * @example\n     *\n     * var objects = [{ 'n': 1 }, { 'n': 2 }];\n     *\n     * _.maxBy(objects, function(o) { return o.n; });\n     * // => { 'n': 2 }\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.maxBy(objects, 'n');\n     * // => { 'n': 2 }\n     */\n    function maxBy(array, iteratee) {\n      return (array && array.length)\n        ? baseExtremum(array, getIteratee(iteratee, 2), baseGt)\n        : undefined;\n    }\n\n    /**\n     * Computes the mean of the values in `array`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Math\n     * @param {Array} array The array to iterate over.\n     * @returns {number} Returns the mean.\n     * @example\n     *\n     * _.mean([4, 2, 8, 6]);\n     * // => 5\n     */\n    function mean(array) {\n      return baseMean(array, identity);\n    }\n\n    /**\n     * This method is like `_.mean` except that it accepts `iteratee` which is\n     * invoked for each element in `array` to generate the value to be averaged.\n     * The iteratee is invoked with one argument: (value).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.7.0\n     * @category Math\n     * @param {Array} array The array to iterate over.\n     * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n     * @returns {number} Returns the mean.\n     * @example\n     *\n     * var objects = [{ 'n': 4 }, { 'n': 2 }, { 'n': 8 }, { 'n': 6 }];\n     *\n     * _.meanBy(objects, function(o) { return o.n; });\n     * // => 5\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.meanBy(objects, 'n');\n     * // => 5\n     */\n    function meanBy(array, iteratee) {\n      return baseMean(array, getIteratee(iteratee, 2));\n    }\n\n    /**\n     * Computes the minimum value of `array`. If `array` is empty or falsey,\n     * `undefined` is returned.\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category Math\n     * @param {Array} array The array to iterate over.\n     * @returns {*} Returns the minimum value.\n     * @example\n     *\n     * _.min([4, 2, 8, 6]);\n     * // => 2\n     *\n     * _.min([]);\n     * // => undefined\n     */\n    function min(array) {\n      return (array && array.length)\n        ? baseExtremum(array, identity, baseLt)\n        : undefined;\n    }\n\n    /**\n     * This method is like `_.min` except that it accepts `iteratee` which is\n     * invoked for each element in `array` to generate the criterion by which\n     * the value is ranked. The iteratee is invoked with one argument: (value).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Math\n     * @param {Array} array The array to iterate over.\n     * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n     * @returns {*} Returns the minimum value.\n     * @example\n     *\n     * var objects = [{ 'n': 1 }, { 'n': 2 }];\n     *\n     * _.minBy(objects, function(o) { return o.n; });\n     * // => { 'n': 1 }\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.minBy(objects, 'n');\n     * // => { 'n': 1 }\n     */\n    function minBy(array, iteratee) {\n      return (array && array.length)\n        ? baseExtremum(array, getIteratee(iteratee, 2), baseLt)\n        : undefined;\n    }\n\n    /**\n     * Multiply two numbers.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.7.0\n     * @category Math\n     * @param {number} multiplier The first number in a multiplication.\n     * @param {number} multiplicand The second number in a multiplication.\n     * @returns {number} Returns the product.\n     * @example\n     *\n     * _.multiply(6, 4);\n     * // => 24\n     */\n    var multiply = createMathOperation(function(multiplier, multiplicand) {\n      return multiplier * multiplicand;\n    }, 1);\n\n    /**\n     * Computes `number` rounded to `precision`.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.10.0\n     * @category Math\n     * @param {number} number The number to round.\n     * @param {number} [precision=0] The precision to round to.\n     * @returns {number} Returns the rounded number.\n     * @example\n     *\n     * _.round(4.006);\n     * // => 4\n     *\n     * _.round(4.006, 2);\n     * // => 4.01\n     *\n     * _.round(4060, -2);\n     * // => 4100\n     */\n    var round = createRound('round');\n\n    /**\n     * Subtract two numbers.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Math\n     * @param {number} minuend The first number in a subtraction.\n     * @param {number} subtrahend The second number in a subtraction.\n     * @returns {number} Returns the difference.\n     * @example\n     *\n     * _.subtract(6, 4);\n     * // => 2\n     */\n    var subtract = createMathOperation(function(minuend, subtrahend) {\n      return minuend - subtrahend;\n    }, 0);\n\n    /**\n     * Computes the sum of the values in `array`.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.4.0\n     * @category Math\n     * @param {Array} array The array to iterate over.\n     * @returns {number} Returns the sum.\n     * @example\n     *\n     * _.sum([4, 2, 8, 6]);\n     * // => 20\n     */\n    function sum(array) {\n      return (array && array.length)\n        ? baseSum(array, identity)\n        : 0;\n    }\n\n    /**\n     * This method is like `_.sum` except that it accepts `iteratee` which is\n     * invoked for each element in `array` to generate the value to be summed.\n     * The iteratee is invoked with one argument: (value).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Math\n     * @param {Array} array The array to iterate over.\n     * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n     * @returns {number} Returns the sum.\n     * @example\n     *\n     * var objects = [{ 'n': 4 }, { 'n': 2 }, { 'n': 8 }, { 'n': 6 }];\n     *\n     * _.sumBy(objects, function(o) { return o.n; });\n     * // => 20\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.sumBy(objects, 'n');\n     * // => 20\n     */\n    function sumBy(array, iteratee) {\n      return (array && array.length)\n        ? baseSum(array, getIteratee(iteratee, 2))\n        : 0;\n    }\n\n    /*------------------------------------------------------------------------*/\n\n    // Add methods that return wrapped values in chain sequences.\n    lodash.after = after;\n    lodash.ary = ary;\n    lodash.assign = assign;\n    lodash.assignIn = assignIn;\n    lodash.assignInWith = assignInWith;\n    lodash.assignWith = assignWith;\n    lodash.at = at;\n    lodash.before = before;\n    lodash.bind = bind;\n    lodash.bindAll = bindAll;\n    lodash.bindKey = bindKey;\n    lodash.castArray = castArray;\n    lodash.chain = chain;\n    lodash.chunk = chunk;\n    lodash.compact = compact;\n    lodash.concat = concat;\n    lodash.cond = cond;\n    lodash.conforms = conforms;\n    lodash.constant = constant;\n    lodash.countBy = countBy;\n    lodash.create = create;\n    lodash.curry = curry;\n    lodash.curryRight = curryRight;\n    lodash.debounce = debounce;\n    lodash.defaults = defaults;\n    lodash.defaultsDeep = defaultsDeep;\n    lodash.defer = defer;\n    lodash.delay = delay;\n    lodash.difference = difference;\n    lodash.differenceBy = differenceBy;\n    lodash.differenceWith = differenceWith;\n    lodash.drop = drop;\n    lodash.dropRight = dropRight;\n    lodash.dropRightWhile = dropRightWhile;\n    lodash.dropWhile = dropWhile;\n    lodash.fill = fill;\n    lodash.filter = filter;\n    lodash.flatMap = flatMap;\n    lodash.flatMapDeep = flatMapDeep;\n    lodash.flatMapDepth = flatMapDepth;\n    lodash.flatten = flatten;\n    lodash.flattenDeep = flattenDeep;\n    lodash.flattenDepth = flattenDepth;\n    lodash.flip = flip;\n    lodash.flow = flow;\n    lodash.flowRight = flowRight;\n    lodash.fromPairs = fromPairs;\n    lodash.functions = functions;\n    lodash.functionsIn = functionsIn;\n    lodash.groupBy = groupBy;\n    lodash.initial = initial;\n    lodash.intersection = intersection;\n    lodash.intersectionBy = intersectionBy;\n    lodash.intersectionWith = intersectionWith;\n    lodash.invert = invert;\n    lodash.invertBy = invertBy;\n    lodash.invokeMap = invokeMap;\n    lodash.iteratee = iteratee;\n    lodash.keyBy = keyBy;\n    lodash.keys = keys;\n    lodash.keysIn = keysIn;\n    lodash.map = map;\n    lodash.mapKeys = mapKeys;\n    lodash.mapValues = mapValues;\n    lodash.matches = matches;\n    lodash.matchesProperty = matchesProperty;\n    lodash.memoize = memoize;\n    lodash.merge = merge;\n    lodash.mergeWith = mergeWith;\n    lodash.method = method;\n    lodash.methodOf = methodOf;\n    lodash.mixin = mixin;\n    lodash.negate = negate;\n    lodash.nthArg = nthArg;\n    lodash.omit = omit;\n    lodash.omitBy = omitBy;\n    lodash.once = once;\n    lodash.orderBy = orderBy;\n    lodash.over = over;\n    lodash.overArgs = overArgs;\n    lodash.overEvery = overEvery;\n    lodash.overSome = overSome;\n    lodash.partial = partial;\n    lodash.partialRight = partialRight;\n    lodash.partition = partition;\n    lodash.pick = pick;\n    lodash.pickBy = pickBy;\n    lodash.property = property;\n    lodash.propertyOf = propertyOf;\n    lodash.pull = pull;\n    lodash.pullAll = pullAll;\n    lodash.pullAllBy = pullAllBy;\n    lodash.pullAllWith = pullAllWith;\n    lodash.pullAt = pullAt;\n    lodash.range = range;\n    lodash.rangeRight = rangeRight;\n    lodash.rearg = rearg;\n    lodash.reject = reject;\n    lodash.remove = remove;\n    lodash.rest = rest;\n    lodash.reverse = reverse;\n    lodash.sampleSize = sampleSize;\n    lodash.set = set;\n    lodash.setWith = setWith;\n    lodash.shuffle = shuffle;\n    lodash.slice = slice;\n    lodash.sortBy = sortBy;\n    lodash.sortedUniq = sortedUniq;\n    lodash.sortedUniqBy = sortedUniqBy;\n    lodash.split = split;\n    lodash.spread = spread;\n    lodash.tail = tail;\n    lodash.take = take;\n    lodash.takeRight = takeRight;\n    lodash.takeRightWhile = takeRightWhile;\n    lodash.takeWhile = takeWhile;\n    lodash.tap = tap;\n    lodash.throttle = throttle;\n    lodash.thru = thru;\n    lodash.toArray = toArray;\n    lodash.toPairs = toPairs;\n    lodash.toPairsIn = toPairsIn;\n    lodash.toPath = toPath;\n    lodash.toPlainObject = toPlainObject;\n    lodash.transform = transform;\n    lodash.unary = unary;\n    lodash.union = union;\n    lodash.unionBy = unionBy;\n    lodash.unionWith = unionWith;\n    lodash.uniq = uniq;\n    lodash.uniqBy = uniqBy;\n    lodash.uniqWith = uniqWith;\n    lodash.unset = unset;\n    lodash.unzip = unzip;\n    lodash.unzipWith = unzipWith;\n    lodash.update = update;\n    lodash.updateWith = updateWith;\n    lodash.values = values;\n    lodash.valuesIn = valuesIn;\n    lodash.without = without;\n    lodash.words = words;\n    lodash.wrap = wrap;\n    lodash.xor = xor;\n    lodash.xorBy = xorBy;\n    lodash.xorWith = xorWith;\n    lodash.zip = zip;\n    lodash.zipObject = zipObject;\n    lodash.zipObjectDeep = zipObjectDeep;\n    lodash.zipWith = zipWith;\n\n    // Add aliases.\n    lodash.entries = toPairs;\n    lodash.entriesIn = toPairsIn;\n    lodash.extend = assignIn;\n    lodash.extendWith = assignInWith;\n\n    // Add methods to `lodash.prototype`.\n    mixin(lodash, lodash);\n\n    /*------------------------------------------------------------------------*/\n\n    // Add methods that return unwrapped values in chain sequences.\n    lodash.add = add;\n    lodash.attempt = attempt;\n    lodash.camelCase = camelCase;\n    lodash.capitalize = capitalize;\n    lodash.ceil = ceil;\n    lodash.clamp = clamp;\n    lodash.clone = clone;\n    lodash.cloneDeep = cloneDeep;\n    lodash.cloneDeepWith = cloneDeepWith;\n    lodash.cloneWith = cloneWith;\n    lodash.conformsTo = conformsTo;\n    lodash.deburr = deburr;\n    lodash.defaultTo = defaultTo;\n    lodash.divide = divide;\n    lodash.endsWith = endsWith;\n    lodash.eq = eq;\n    lodash.escape = escape;\n    lodash.escapeRegExp = escapeRegExp;\n    lodash.every = every;\n    lodash.find = find;\n    lodash.findIndex = findIndex;\n    lodash.findKey = findKey;\n    lodash.findLast = findLast;\n    lodash.findLastIndex = findLastIndex;\n    lodash.findLastKey = findLastKey;\n    lodash.floor = floor;\n    lodash.forEach = forEach;\n    lodash.forEachRight = forEachRight;\n    lodash.forIn = forIn;\n    lodash.forInRight = forInRight;\n    lodash.forOwn = forOwn;\n    lodash.forOwnRight = forOwnRight;\n    lodash.get = get;\n    lodash.gt = gt;\n    lodash.gte = gte;\n    lodash.has = has;\n    lodash.hasIn = hasIn;\n    lodash.head = head;\n    lodash.identity = identity;\n    lodash.includes = includes;\n    lodash.indexOf = indexOf;\n    lodash.inRange = inRange;\n    lodash.invoke = invoke;\n    lodash.isArguments = isArguments;\n    lodash.isArray = isArray;\n    lodash.isArrayBuffer = isArrayBuffer;\n    lodash.isArrayLike = isArrayLike;\n    lodash.isArrayLikeObject = isArrayLikeObject;\n    lodash.isBoolean = isBoolean;\n    lodash.isBuffer = isBuffer;\n    lodash.isDate = isDate;\n    lodash.isElement = isElement;\n    lodash.isEmpty = isEmpty;\n    lodash.isEqual = isEqual;\n    lodash.isEqualWith = isEqualWith;\n    lodash.isError = isError;\n    lodash.isFinite = isFinite;\n    lodash.isFunction = isFunction;\n    lodash.isInteger = isInteger;\n    lodash.isLength = isLength;\n    lodash.isMap = isMap;\n    lodash.isMatch = isMatch;\n    lodash.isMatchWith = isMatchWith;\n    lodash.isNaN = isNaN;\n    lodash.isNative = isNative;\n    lodash.isNil = isNil;\n    lodash.isNull = isNull;\n    lodash.isNumber = isNumber;\n    lodash.isObject = isObject;\n    lodash.isObjectLike = isObjectLike;\n    lodash.isPlainObject = isPlainObject;\n    lodash.isRegExp = isRegExp;\n    lodash.isSafeInteger = isSafeInteger;\n    lodash.isSet = isSet;\n    lodash.isString = isString;\n    lodash.isSymbol = isSymbol;\n    lodash.isTypedArray = isTypedArray;\n    lodash.isUndefined = isUndefined;\n    lodash.isWeakMap = isWeakMap;\n    lodash.isWeakSet = isWeakSet;\n    lodash.join = join;\n    lodash.kebabCase = kebabCase;\n    lodash.last = last;\n    lodash.lastIndexOf = lastIndexOf;\n    lodash.lowerCase = lowerCase;\n    lodash.lowerFirst = lowerFirst;\n    lodash.lt = lt;\n    lodash.lte = lte;\n    lodash.max = max;\n    lodash.maxBy = maxBy;\n    lodash.mean = mean;\n    lodash.meanBy = meanBy;\n    lodash.min = min;\n    lodash.minBy = minBy;\n    lodash.stubArray = stubArray;\n    lodash.stubFalse = stubFalse;\n    lodash.stubObject = stubObject;\n    lodash.stubString = stubString;\n    lodash.stubTrue = stubTrue;\n    lodash.multiply = multiply;\n    lodash.nth = nth;\n    lodash.noConflict = noConflict;\n    lodash.noop = noop;\n    lodash.now = now;\n    lodash.pad = pad;\n    lodash.padEnd = padEnd;\n    lodash.padStart = padStart;\n    lodash.parseInt = parseInt;\n    lodash.random = random;\n    lodash.reduce = reduce;\n    lodash.reduceRight = reduceRight;\n    lodash.repeat = repeat;\n    lodash.replace = replace;\n    lodash.result = result;\n    lodash.round = round;\n    lodash.runInContext = runInContext;\n    lodash.sample = sample;\n    lodash.size = size;\n    lodash.snakeCase = snakeCase;\n    lodash.some = some;\n    lodash.sortedIndex = sortedIndex;\n    lodash.sortedIndexBy = sortedIndexBy;\n    lodash.sortedIndexOf = sortedIndexOf;\n    lodash.sortedLastIndex = sortedLastIndex;\n    lodash.sortedLastIndexBy = sortedLastIndexBy;\n    lodash.sortedLastIndexOf = sortedLastIndexOf;\n    lodash.startCase = startCase;\n    lodash.startsWith = startsWith;\n    lodash.subtract = subtract;\n    lodash.sum = sum;\n    lodash.sumBy = sumBy;\n    lodash.template = template;\n    lodash.times = times;\n    lodash.toFinite = toFinite;\n    lodash.toInteger = toInteger;\n    lodash.toLength = toLength;\n    lodash.toLower = toLower;\n    lodash.toNumber = toNumber;\n    lodash.toSafeInteger = toSafeInteger;\n    lodash.toString = toString;\n    lodash.toUpper = toUpper;\n    lodash.trim = trim;\n    lodash.trimEnd = trimEnd;\n    lodash.trimStart = trimStart;\n    lodash.truncate = truncate;\n    lodash.unescape = unescape;\n    lodash.uniqueId = uniqueId;\n    lodash.upperCase = upperCase;\n    lodash.upperFirst = upperFirst;\n\n    // Add aliases.\n    lodash.each = forEach;\n    lodash.eachRight = forEachRight;\n    lodash.first = head;\n\n    mixin(lodash, (function() {\n      var source = {};\n      baseForOwn(lodash, function(func, methodName) {\n        if (!hasOwnProperty.call(lodash.prototype, methodName)) {\n          source[methodName] = func;\n        }\n      });\n      return source;\n    }()), { 'chain': false });\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     * The semantic version number.\n     *\n     * @static\n     * @memberOf _\n     * @type {string}\n     */\n    lodash.VERSION = VERSION;\n\n    // Assign default placeholders.\n    arrayEach(['bind', 'bindKey', 'curry', 'curryRight', 'partial', 'partialRight'], function(methodName) {\n      lodash[methodName].placeholder = lodash;\n    });\n\n    // Add `LazyWrapper` methods for `_.drop` and `_.take` variants.\n    arrayEach(['drop', 'take'], function(methodName, index) {\n      LazyWrapper.prototype[methodName] = function(n) {\n        n = n === undefined ? 1 : nativeMax(toInteger(n), 0);\n\n        var result = (this.__filtered__ && !index)\n          ? new LazyWrapper(this)\n          : this.clone();\n\n        if (result.__filtered__) {\n          result.__takeCount__ = nativeMin(n, result.__takeCount__);\n        } else {\n          result.__views__.push({\n            'size': nativeMin(n, MAX_ARRAY_LENGTH),\n            'type': methodName + (result.__dir__ < 0 ? 'Right' : '')\n          });\n        }\n        return result;\n      };\n\n      LazyWrapper.prototype[methodName + 'Right'] = function(n) {\n        return this.reverse()[methodName](n).reverse();\n      };\n    });\n\n    // Add `LazyWrapper` methods that accept an `iteratee` value.\n    arrayEach(['filter', 'map', 'takeWhile'], function(methodName, index) {\n      var type = index + 1,\n          isFilter = type == LAZY_FILTER_FLAG || type == LAZY_WHILE_FLAG;\n\n      LazyWrapper.prototype[methodName] = function(iteratee) {\n        var result = this.clone();\n        result.__iteratees__.push({\n          'iteratee': getIteratee(iteratee, 3),\n          'type': type\n        });\n        result.__filtered__ = result.__filtered__ || isFilter;\n        return result;\n      };\n    });\n\n    // Add `LazyWrapper` methods for `_.head` and `_.last`.\n    arrayEach(['head', 'last'], function(methodName, index) {\n      var takeName = 'take' + (index ? 'Right' : '');\n\n      LazyWrapper.prototype[methodName] = function() {\n        return this[takeName](1).value()[0];\n      };\n    });\n\n    // Add `LazyWrapper` methods for `_.initial` and `_.tail`.\n    arrayEach(['initial', 'tail'], function(methodName, index) {\n      var dropName = 'drop' + (index ? '' : 'Right');\n\n      LazyWrapper.prototype[methodName] = function() {\n        return this.__filtered__ ? new LazyWrapper(this) : this[dropName](1);\n      };\n    });\n\n    LazyWrapper.prototype.compact = function() {\n      return this.filter(identity);\n    };\n\n    LazyWrapper.prototype.find = function(predicate) {\n      return this.filter(predicate).head();\n    };\n\n    LazyWrapper.prototype.findLast = function(predicate) {\n      return this.reverse().find(predicate);\n    };\n\n    LazyWrapper.prototype.invokeMap = baseRest(function(path, args) {\n      if (typeof path == 'function') {\n        return new LazyWrapper(this);\n      }\n      return this.map(function(value) {\n        return baseInvoke(value, path, args);\n      });\n    });\n\n    LazyWrapper.prototype.reject = function(predicate) {\n      return this.filter(negate(getIteratee(predicate)));\n    };\n\n    LazyWrapper.prototype.slice = function(start, end) {\n      start = toInteger(start);\n\n      var result = this;\n      if (result.__filtered__ && (start > 0 || end < 0)) {\n        return new LazyWrapper(result);\n      }\n      if (start < 0) {\n        result = result.takeRight(-start);\n      } else if (start) {\n        result = result.drop(start);\n      }\n      if (end !== undefined) {\n        end = toInteger(end);\n        result = end < 0 ? result.dropRight(-end) : result.take(end - start);\n      }\n      return result;\n    };\n\n    LazyWrapper.prototype.takeRightWhile = function(predicate) {\n      return this.reverse().takeWhile(predicate).reverse();\n    };\n\n    LazyWrapper.prototype.toArray = function() {\n      return this.take(MAX_ARRAY_LENGTH);\n    };\n\n    // Add `LazyWrapper` methods to `lodash.prototype`.\n    baseForOwn(LazyWrapper.prototype, function(func, methodName) {\n      var checkIteratee = /^(?:filter|find|map|reject)|While$/.test(methodName),\n          isTaker = /^(?:head|last)$/.test(methodName),\n          lodashFunc = lodash[isTaker ? ('take' + (methodName == 'last' ? 'Right' : '')) : methodName],\n          retUnwrapped = isTaker || /^find/.test(methodName);\n\n      if (!lodashFunc) {\n        return;\n      }\n      lodash.prototype[methodName] = function() {\n        var value = this.__wrapped__,\n            args = isTaker ? [1] : arguments,\n            isLazy = value instanceof LazyWrapper,\n            iteratee = args[0],\n            useLazy = isLazy || isArray(value);\n\n        var interceptor = function(value) {\n          var result = lodashFunc.apply(lodash, arrayPush([value], args));\n          return (isTaker && chainAll) ? result[0] : result;\n        };\n\n        if (useLazy && checkIteratee && typeof iteratee == 'function' && iteratee.length != 1) {\n          // Avoid lazy use if the iteratee has a \"length\" value other than `1`.\n          isLazy = useLazy = false;\n        }\n        var chainAll = this.__chain__,\n            isHybrid = !!this.__actions__.length,\n            isUnwrapped = retUnwrapped && !chainAll,\n            onlyLazy = isLazy && !isHybrid;\n\n        if (!retUnwrapped && useLazy) {\n          value = onlyLazy ? value : new LazyWrapper(this);\n          var result = func.apply(value, args);\n          result.__actions__.push({ 'func': thru, 'args': [interceptor], 'thisArg': undefined });\n          return new LodashWrapper(result, chainAll);\n        }\n        if (isUnwrapped && onlyLazy) {\n          return func.apply(this, args);\n        }\n        result = this.thru(interceptor);\n        return isUnwrapped ? (isTaker ? result.value()[0] : result.value()) : result;\n      };\n    });\n\n    // Add `Array` methods to `lodash.prototype`.\n    arrayEach(['pop', 'push', 'shift', 'sort', 'splice', 'unshift'], function(methodName) {\n      var func = arrayProto[methodName],\n          chainName = /^(?:push|sort|unshift)$/.test(methodName) ? 'tap' : 'thru',\n          retUnwrapped = /^(?:pop|shift)$/.test(methodName);\n\n      lodash.prototype[methodName] = function() {\n        var args = arguments;\n        if (retUnwrapped && !this.__chain__) {\n          var value = this.value();\n          return func.apply(isArray(value) ? value : [], args);\n        }\n        return this[chainName](function(value) {\n          return func.apply(isArray(value) ? value : [], args);\n        });\n      };\n    });\n\n    // Map minified method names to their real names.\n    baseForOwn(LazyWrapper.prototype, function(func, methodName) {\n      var lodashFunc = lodash[methodName];\n      if (lodashFunc) {\n        var key = lodashFunc.name + '';\n        if (!hasOwnProperty.call(realNames, key)) {\n          realNames[key] = [];\n        }\n        realNames[key].push({ 'name': methodName, 'func': lodashFunc });\n      }\n    });\n\n    realNames[createHybrid(undefined, WRAP_BIND_KEY_FLAG).name] = [{\n      'name': 'wrapper',\n      'func': undefined\n    }];\n\n    // Add methods to `LazyWrapper`.\n    LazyWrapper.prototype.clone = lazyClone;\n    LazyWrapper.prototype.reverse = lazyReverse;\n    LazyWrapper.prototype.value = lazyValue;\n\n    // Add chain sequence methods to the `lodash` wrapper.\n    lodash.prototype.at = wrapperAt;\n    lodash.prototype.chain = wrapperChain;\n    lodash.prototype.commit = wrapperCommit;\n    lodash.prototype.next = wrapperNext;\n    lodash.prototype.plant = wrapperPlant;\n    lodash.prototype.reverse = wrapperReverse;\n    lodash.prototype.toJSON = lodash.prototype.valueOf = lodash.prototype.value = wrapperValue;\n\n    // Add lazy aliases.\n    lodash.prototype.first = lodash.prototype.head;\n\n    if (symIterator) {\n      lodash.prototype[symIterator] = wrapperToIterator;\n    }\n    return lodash;\n  });\n\n  /*--------------------------------------------------------------------------*/\n\n  // Export lodash.\n  var _ = runInContext();\n\n  // Some AMD build optimizers, like r.js, check for condition patterns like:\n  if (typeof define == 'function' && typeof define.amd == 'object' && define.amd) {\n    // Expose Lodash on the global object to prevent errors when Lodash is\n    // loaded by a script tag in the presence of an AMD loader.\n    // See http://requirejs.org/docs/errors.html#mismatch for more details.\n    // Use `_.noConflict` to remove Lodash from the global object.\n    root._ = _;\n\n    // Define as an anonymous module so, through path mapping, it can be\n    // referenced as the \"underscore\" module.\n    define(function() {\n      return _;\n    });\n  }\n  // Check for `exports` after `define` in case a build optimizer adds it.\n  else if (freeModule) {\n    // Export for Node.js.\n    (freeModule.exports = _)._ = _;\n    // Export for CommonJS support.\n    freeExports._ = _;\n  }\n  else {\n    // Export to the global object.\n    root._ = _;\n  }\n}.call(this));\n","var MapCache = require('./_MapCache');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `clear`, `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\nfunction memoize(func, resolver) {\n  if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {\n    throw new TypeError(FUNC_ERROR_TEXT);\n  }\n  var memoized = function() {\n    var args = arguments,\n        key = resolver ? resolver.apply(this, args) : args[0],\n        cache = memoized.cache;\n\n    if (cache.has(key)) {\n      return cache.get(key);\n    }\n    var result = func.apply(this, args);\n    memoized.cache = cache.set(key, result) || cache;\n    return result;\n  };\n  memoized.cache = new (memoize.Cache || MapCache);\n  return memoized;\n}\n\n// Expose `MapCache`.\nmemoize.Cache = MapCache;\n\nmodule.exports = memoize;\n","var baseMerge = require('./_baseMerge'),\n    createAssigner = require('./_createAssigner');\n\n/**\n * This method is like `_.assign` except that it recursively merges own and\n * inherited enumerable string keyed properties of source objects into the\n * destination object. Source properties that resolve to `undefined` are\n * skipped if a destination value exists. Array and plain object properties\n * are merged recursively. Other objects and value types are overridden by\n * assignment. Source objects are applied from left to right. Subsequent\n * sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {\n *   'a': [{ 'b': 2 }, { 'd': 4 }]\n * };\n *\n * var other = {\n *   'a': [{ 'c': 3 }, { 'e': 5 }]\n * };\n *\n * _.merge(object, other);\n * // => { 'a': [{ 'b': 2, 'c': 3 }, { 'd': 4, 'e': 5 }] }\n */\nvar merge = createAssigner(function(object, source, srcIndex) {\n  baseMerge(object, source, srcIndex);\n});\n\nmodule.exports = merge;\n","/**\n * This method returns `undefined`.\n *\n * @static\n * @memberOf _\n * @since 2.3.0\n * @category Util\n * @example\n *\n * _.times(2, _.noop);\n * // => [undefined, undefined]\n */\nfunction noop() {\n  // No operation performed.\n}\n\nmodule.exports = noop;\n","var root = require('./_root');\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n *   console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n  return root.Date.now();\n};\n\nmodule.exports = now;\n","var basePick = require('./_basePick'),\n    flatRest = require('./_flatRest');\n\n/**\n * Creates an object composed of the picked `object` properties.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The source object.\n * @param {...(string|string[])} [paths] The property paths to pick.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.pick(object, ['a', 'c']);\n * // => { 'a': 1, 'c': 3 }\n */\nvar pick = flatRest(function(object, paths) {\n  return object == null ? {} : basePick(object, paths);\n});\n\nmodule.exports = pick;\n","var baseProperty = require('./_baseProperty'),\n    basePropertyDeep = require('./_basePropertyDeep'),\n    isKey = require('./_isKey'),\n    toKey = require('./_toKey');\n\n/**\n * Creates a function that returns the value at `path` of a given object.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n * @example\n *\n * var objects = [\n *   { 'a': { 'b': 2 } },\n *   { 'a': { 'b': 1 } }\n * ];\n *\n * _.map(objects, _.property('a.b'));\n * // => [2, 1]\n *\n * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b');\n * // => [1, 2]\n */\nfunction property(path) {\n  return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path);\n}\n\nmodule.exports = property;\n","var createRound = require('./_createRound');\n\n/**\n * Computes `number` rounded to `precision`.\n *\n * @static\n * @memberOf _\n * @since 3.10.0\n * @category Math\n * @param {number} number The number to round.\n * @param {number} [precision=0] The precision to round to.\n * @returns {number} Returns the rounded number.\n * @example\n *\n * _.round(4.006);\n * // => 4\n *\n * _.round(4.006, 2);\n * // => 4.01\n *\n * _.round(4060, -2);\n * // => 4100\n */\nvar round = createRound('round');\n\nmodule.exports = round;\n","var baseFlatten = require('./_baseFlatten'),\n    baseOrderBy = require('./_baseOrderBy'),\n    baseRest = require('./_baseRest'),\n    isIterateeCall = require('./_isIterateeCall');\n\n/**\n * Creates an array of elements, sorted in ascending order by the results of\n * running each element in a collection thru each iteratee. This method\n * performs a stable sort, that is, it preserves the original sort order of\n * equal elements. The iteratees are invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {...(Function|Function[])} [iteratees=[_.identity]]\n *  The iteratees to sort by.\n * @returns {Array} Returns the new sorted array.\n * @example\n *\n * var users = [\n *   { 'user': 'fred',   'age': 48 },\n *   { 'user': 'barney', 'age': 36 },\n *   { 'user': 'fred',   'age': 30 },\n *   { 'user': 'barney', 'age': 34 }\n * ];\n *\n * _.sortBy(users, [function(o) { return o.user; }]);\n * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 30]]\n *\n * _.sortBy(users, ['user', 'age']);\n * // => objects for [['barney', 34], ['barney', 36], ['fred', 30], ['fred', 48]]\n */\nvar sortBy = baseRest(function(collection, iteratees) {\n  if (collection == null) {\n    return [];\n  }\n  var length = iteratees.length;\n  if (length > 1 && isIterateeCall(collection, iteratees[0], iteratees[1])) {\n    iteratees = [];\n  } else if (length > 2 && isIterateeCall(iteratees[0], iteratees[1], iteratees[2])) {\n    iteratees = [iteratees[0]];\n  }\n  return baseOrderBy(collection, baseFlatten(iteratees, 1), []);\n});\n\nmodule.exports = sortBy;\n","/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n  return [];\n}\n\nmodule.exports = stubArray;\n","/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n  return false;\n}\n\nmodule.exports = stubFalse;\n","var toNumber = require('./toNumber');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0,\n    MAX_INTEGER = 1.7976931348623157e+308;\n\n/**\n * Converts `value` to a finite number.\n *\n * @static\n * @memberOf _\n * @since 4.12.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted number.\n * @example\n *\n * _.toFinite(3.2);\n * // => 3.2\n *\n * _.toFinite(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toFinite(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toFinite('3.2');\n * // => 3.2\n */\nfunction toFinite(value) {\n  if (!value) {\n    return value === 0 ? value : 0;\n  }\n  value = toNumber(value);\n  if (value === INFINITY || value === -INFINITY) {\n    var sign = (value < 0 ? -1 : 1);\n    return sign * MAX_INTEGER;\n  }\n  return value === value ? value : 0;\n}\n\nmodule.exports = toFinite;\n","var toFinite = require('./toFinite');\n\n/**\n * Converts `value` to an integer.\n *\n * **Note:** This method is loosely based on\n * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toInteger(3.2);\n * // => 3\n *\n * _.toInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toInteger(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toInteger('3.2');\n * // => 3\n */\nfunction toInteger(value) {\n  var result = toFinite(value),\n      remainder = result % 1;\n\n  return result === result ? (remainder ? result - remainder : result) : 0;\n}\n\nmodule.exports = toInteger;\n","var baseTrim = require('./_baseTrim'),\n    isObject = require('./isObject'),\n    isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n  if (typeof value == 'number') {\n    return value;\n  }\n  if (isSymbol(value)) {\n    return NAN;\n  }\n  if (isObject(value)) {\n    var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n    value = isObject(other) ? (other + '') : other;\n  }\n  if (typeof value != 'string') {\n    return value === 0 ? value : +value;\n  }\n  value = baseTrim(value);\n  var isBinary = reIsBinary.test(value);\n  return (isBinary || reIsOctal.test(value))\n    ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n    : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = toNumber;\n","var copyObject = require('./_copyObject'),\n    keysIn = require('./keysIn');\n\n/**\n * Converts `value` to a plain object flattening inherited enumerable string\n * keyed properties of `value` to own properties of the plain object.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Object} Returns the converted plain object.\n * @example\n *\n * function Foo() {\n *   this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.assign({ 'a': 1 }, new Foo);\n * // => { 'a': 1, 'b': 2 }\n *\n * _.assign({ 'a': 1 }, _.toPlainObject(new Foo));\n * // => { 'a': 1, 'b': 2, 'c': 3 }\n */\nfunction toPlainObject(value) {\n  return copyObject(value, keysIn(value));\n}\n\nmodule.exports = toPlainObject;\n","var baseToString = require('./_baseToString');\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n  return value == null ? '' : baseToString(value);\n}\n\nmodule.exports = toString;\n","var baseUniq = require('./_baseUniq');\n\n/**\n * Creates a duplicate-free version of an array, using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons, in which only the first occurrence of each element\n * is kept. The order of result values is determined by the order they occur\n * in the array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.uniq([2, 1, 2]);\n * // => [2, 1]\n */\nfunction uniq(array) {\n  return (array && array.length) ? baseUniq(array) : [];\n}\n\nmodule.exports = uniq;\n","var baseIteratee = require('./_baseIteratee'),\n    baseUniq = require('./_baseUniq');\n\n/**\n * This method is like `_.uniq` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the criterion by which\n * uniqueness is computed. The order of result values is determined by the\n * order they occur in the array. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.uniqBy([2.1, 1.2, 2.3], Math.floor);\n * // => [2.1, 1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.uniqBy([{ 'x': 1 }, { 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }, { 'x': 2 }]\n */\nfunction uniqBy(array, iteratee) {\n  return (array && array.length) ? baseUniq(array, baseIteratee(iteratee, 2)) : [];\n}\n\nmodule.exports = uniqBy;\n","var toString = require('./toString');\n\n/** Used to generate unique IDs. */\nvar idCounter = 0;\n\n/**\n * Generates a unique ID. If `prefix` is given, the ID is appended to it.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {string} [prefix=''] The value to prefix the ID with.\n * @returns {string} Returns the unique ID.\n * @example\n *\n * _.uniqueId('contact_');\n * // => 'contact_104'\n *\n * _.uniqueId();\n * // => '105'\n */\nfunction uniqueId(prefix) {\n  var id = ++idCounter;\n  return toString(prefix) + id;\n}\n\nmodule.exports = uniqueId;\n","var createCaseFirst = require('./_createCaseFirst');\n\n/**\n * Converts the first character of `string` to upper case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.upperFirst('fred');\n * // => 'Fred'\n *\n * _.upperFirst('FRED');\n * // => 'FRED'\n */\nvar upperFirst = createCaseFirst('toUpperCase');\n\nmodule.exports = upperFirst;\n","/*\r\n Copyright 2013 Daniel Wirtz <dcode@dcode.io>\r\n Copyright 2009 The Closure Library Authors. All Rights Reserved.\r\n\r\n Licensed under the Apache License, Version 2.0 (the \"License\");\r\n you may not use this file except in compliance with the License.\r\n You may obtain a copy of the License at\r\n\r\n http://www.apache.org/licenses/LICENSE-2.0\r\n\r\n Unless required by applicable law or agreed to in writing, software\r\n distributed under the License is distributed on an \"AS-IS\" BASIS,\r\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n See the License for the specific language governing permissions and\r\n limitations under the License.\r\n */\r\n\r\n/**\r\n * @license long.js (c) 2013 Daniel Wirtz <dcode@dcode.io>\r\n * Released under the Apache License, Version 2.0\r\n * see: https://github.com/dcodeIO/long.js for details\r\n */\r\n(function(global, factory) {\r\n\r\n    /* AMD */ if (typeof define === 'function' && define[\"amd\"])\r\n        define([], factory);\r\n    /* CommonJS */ else if (typeof require === 'function' && typeof module === \"object\" && module && module[\"exports\"])\r\n        module[\"exports\"] = factory();\r\n    /* Global */ else\r\n        (global[\"dcodeIO\"] = global[\"dcodeIO\"] || {})[\"Long\"] = factory();\r\n\r\n})(this, function() {\r\n    \"use strict\";\r\n\r\n    /**\r\n     * Constructs a 64 bit two's-complement integer, given its low and high 32 bit values as *signed* integers.\r\n     *  See the from* functions below for more convenient ways of constructing Longs.\r\n     * @exports Long\r\n     * @class A Long class for representing a 64 bit two's-complement integer value.\r\n     * @param {number} low The low (signed) 32 bits of the long\r\n     * @param {number} high The high (signed) 32 bits of the long\r\n     * @param {boolean=} unsigned Whether unsigned or not, defaults to `false` for signed\r\n     * @constructor\r\n     */\r\n    function Long(low, high, unsigned) {\r\n\r\n        /**\r\n         * The low 32 bits as a signed value.\r\n         * @type {number}\r\n         */\r\n        this.low = low | 0;\r\n\r\n        /**\r\n         * The high 32 bits as a signed value.\r\n         * @type {number}\r\n         */\r\n        this.high = high | 0;\r\n\r\n        /**\r\n         * Whether unsigned or not.\r\n         * @type {boolean}\r\n         */\r\n        this.unsigned = !!unsigned;\r\n    }\r\n\r\n    // The internal representation of a long is the two given signed, 32-bit values.\r\n    // We use 32-bit pieces because these are the size of integers on which\r\n    // Javascript performs bit-operations.  For operations like addition and\r\n    // multiplication, we split each number into 16 bit pieces, which can easily be\r\n    // multiplied within Javascript's floating-point representation without overflow\r\n    // or change in sign.\r\n    //\r\n    // In the algorithms below, we frequently reduce the negative case to the\r\n    // positive case by negating the input(s) and then post-processing the result.\r\n    // Note that we must ALWAYS check specially whether those values are MIN_VALUE\r\n    // (-2^63) because -MIN_VALUE == MIN_VALUE (since 2^63 cannot be represented as\r\n    // a positive number, it overflows back into a negative).  Not handling this\r\n    // case would often result in infinite recursion.\r\n    //\r\n    // Common constant values ZERO, ONE, NEG_ONE, etc. are defined below the from*\r\n    // methods on which they depend.\r\n\r\n    /**\r\n     * An indicator used to reliably determine if an object is a Long or not.\r\n     * @type {boolean}\r\n     * @const\r\n     * @private\r\n     */\r\n    Long.prototype.__isLong__;\r\n\r\n    Object.defineProperty(Long.prototype, \"__isLong__\", {\r\n        value: true,\r\n        enumerable: false,\r\n        configurable: false\r\n    });\r\n\r\n    /**\r\n     * @function\r\n     * @param {*} obj Object\r\n     * @returns {boolean}\r\n     * @inner\r\n     */\r\n    function isLong(obj) {\r\n        return (obj && obj[\"__isLong__\"]) === true;\r\n    }\r\n\r\n    /**\r\n     * Tests if the specified object is a Long.\r\n     * @function\r\n     * @param {*} obj Object\r\n     * @returns {boolean}\r\n     */\r\n    Long.isLong = isLong;\r\n\r\n    /**\r\n     * A cache of the Long representations of small integer values.\r\n     * @type {!Object}\r\n     * @inner\r\n     */\r\n    var INT_CACHE = {};\r\n\r\n    /**\r\n     * A cache of the Long representations of small unsigned integer values.\r\n     * @type {!Object}\r\n     * @inner\r\n     */\r\n    var UINT_CACHE = {};\r\n\r\n    /**\r\n     * @param {number} value\r\n     * @param {boolean=} unsigned\r\n     * @returns {!Long}\r\n     * @inner\r\n     */\r\n    function fromInt(value, unsigned) {\r\n        var obj, cachedObj, cache;\r\n        if (unsigned) {\r\n            value >>>= 0;\r\n            if (cache = (0 <= value && value < 256)) {\r\n                cachedObj = UINT_CACHE[value];\r\n                if (cachedObj)\r\n                    return cachedObj;\r\n            }\r\n            obj = fromBits(value, (value | 0) < 0 ? -1 : 0, true);\r\n            if (cache)\r\n                UINT_CACHE[value] = obj;\r\n            return obj;\r\n        } else {\r\n            value |= 0;\r\n            if (cache = (-128 <= value && value < 128)) {\r\n                cachedObj = INT_CACHE[value];\r\n                if (cachedObj)\r\n                    return cachedObj;\r\n            }\r\n            obj = fromBits(value, value < 0 ? -1 : 0, false);\r\n            if (cache)\r\n                INT_CACHE[value] = obj;\r\n            return obj;\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Returns a Long representing the given 32 bit integer value.\r\n     * @function\r\n     * @param {number} value The 32 bit integer in question\r\n     * @param {boolean=} unsigned Whether unsigned or not, defaults to `false` for signed\r\n     * @returns {!Long} The corresponding Long value\r\n     */\r\n    Long.fromInt = fromInt;\r\n\r\n    /**\r\n     * @param {number} value\r\n     * @param {boolean=} unsigned\r\n     * @returns {!Long}\r\n     * @inner\r\n     */\r\n    function fromNumber(value, unsigned) {\r\n        if (isNaN(value) || !isFinite(value))\r\n            return unsigned ? UZERO : ZERO;\r\n        if (unsigned) {\r\n            if (value < 0)\r\n                return UZERO;\r\n            if (value >= TWO_PWR_64_DBL)\r\n                return MAX_UNSIGNED_VALUE;\r\n        } else {\r\n            if (value <= -TWO_PWR_63_DBL)\r\n                return MIN_VALUE;\r\n            if (value + 1 >= TWO_PWR_63_DBL)\r\n                return MAX_VALUE;\r\n        }\r\n        if (value < 0)\r\n            return fromNumber(-value, unsigned).neg();\r\n        return fromBits((value % TWO_PWR_32_DBL) | 0, (value / TWO_PWR_32_DBL) | 0, unsigned);\r\n    }\r\n\r\n    /**\r\n     * Returns a Long representing the given value, provided that it is a finite number. Otherwise, zero is returned.\r\n     * @function\r\n     * @param {number} value The number in question\r\n     * @param {boolean=} unsigned Whether unsigned or not, defaults to `false` for signed\r\n     * @returns {!Long} The corresponding Long value\r\n     */\r\n    Long.fromNumber = fromNumber;\r\n\r\n    /**\r\n     * @param {number} lowBits\r\n     * @param {number} highBits\r\n     * @param {boolean=} unsigned\r\n     * @returns {!Long}\r\n     * @inner\r\n     */\r\n    function fromBits(lowBits, highBits, unsigned) {\r\n        return new Long(lowBits, highBits, unsigned);\r\n    }\r\n\r\n    /**\r\n     * Returns a Long representing the 64 bit integer that comes by concatenating the given low and high bits. Each is\r\n     *  assumed to use 32 bits.\r\n     * @function\r\n     * @param {number} lowBits The low 32 bits\r\n     * @param {number} highBits The high 32 bits\r\n     * @param {boolean=} unsigned Whether unsigned or not, defaults to `false` for signed\r\n     * @returns {!Long} The corresponding Long value\r\n     */\r\n    Long.fromBits = fromBits;\r\n\r\n    /**\r\n     * @function\r\n     * @param {number} base\r\n     * @param {number} exponent\r\n     * @returns {number}\r\n     * @inner\r\n     */\r\n    var pow_dbl = Math.pow; // Used 4 times (4*8 to 15+4)\r\n\r\n    /**\r\n     * @param {string} str\r\n     * @param {(boolean|number)=} unsigned\r\n     * @param {number=} radix\r\n     * @returns {!Long}\r\n     * @inner\r\n     */\r\n    function fromString(str, unsigned, radix) {\r\n        if (str.length === 0)\r\n            throw Error('empty string');\r\n        if (str === \"NaN\" || str === \"Infinity\" || str === \"+Infinity\" || str === \"-Infinity\")\r\n            return ZERO;\r\n        if (typeof unsigned === 'number') {\r\n            // For goog.math.long compatibility\r\n            radix = unsigned,\r\n            unsigned = false;\r\n        } else {\r\n            unsigned = !! unsigned;\r\n        }\r\n        radix = radix || 10;\r\n        if (radix < 2 || 36 < radix)\r\n            throw RangeError('radix');\r\n\r\n        var p;\r\n        if ((p = str.indexOf('-')) > 0)\r\n            throw Error('interior hyphen');\r\n        else if (p === 0) {\r\n            return fromString(str.substring(1), unsigned, radix).neg();\r\n        }\r\n\r\n        // Do several (8) digits each time through the loop, so as to\r\n        // minimize the calls to the very expensive emulated div.\r\n        var radixToPower = fromNumber(pow_dbl(radix, 8));\r\n\r\n        var result = ZERO;\r\n        for (var i = 0; i < str.length; i += 8) {\r\n            var size = Math.min(8, str.length - i),\r\n                value = parseInt(str.substring(i, i + size), radix);\r\n            if (size < 8) {\r\n                var power = fromNumber(pow_dbl(radix, size));\r\n                result = result.mul(power).add(fromNumber(value));\r\n            } else {\r\n                result = result.mul(radixToPower);\r\n                result = result.add(fromNumber(value));\r\n            }\r\n        }\r\n        result.unsigned = unsigned;\r\n        return result;\r\n    }\r\n\r\n    /**\r\n     * Returns a Long representation of the given string, written using the specified radix.\r\n     * @function\r\n     * @param {string} str The textual representation of the Long\r\n     * @param {(boolean|number)=} unsigned Whether unsigned or not, defaults to `false` for signed\r\n     * @param {number=} radix The radix in which the text is written (2-36), defaults to 10\r\n     * @returns {!Long} The corresponding Long value\r\n     */\r\n    Long.fromString = fromString;\r\n\r\n    /**\r\n     * @function\r\n     * @param {!Long|number|string|!{low: number, high: number, unsigned: boolean}} val\r\n     * @returns {!Long}\r\n     * @inner\r\n     */\r\n    function fromValue(val) {\r\n        if (val /* is compatible */ instanceof Long)\r\n            return val;\r\n        if (typeof val === 'number')\r\n            return fromNumber(val);\r\n        if (typeof val === 'string')\r\n            return fromString(val);\r\n        // Throws for non-objects, converts non-instanceof Long:\r\n        return fromBits(val.low, val.high, val.unsigned);\r\n    }\r\n\r\n    /**\r\n     * Converts the specified value to a Long.\r\n     * @function\r\n     * @param {!Long|number|string|!{low: number, high: number, unsigned: boolean}} val Value\r\n     * @returns {!Long}\r\n     */\r\n    Long.fromValue = fromValue;\r\n\r\n    // NOTE: the compiler should inline these constant values below and then remove these variables, so there should be\r\n    // no runtime penalty for these.\r\n\r\n    /**\r\n     * @type {number}\r\n     * @const\r\n     * @inner\r\n     */\r\n    var TWO_PWR_16_DBL = 1 << 16;\r\n\r\n    /**\r\n     * @type {number}\r\n     * @const\r\n     * @inner\r\n     */\r\n    var TWO_PWR_24_DBL = 1 << 24;\r\n\r\n    /**\r\n     * @type {number}\r\n     * @const\r\n     * @inner\r\n     */\r\n    var TWO_PWR_32_DBL = TWO_PWR_16_DBL * TWO_PWR_16_DBL;\r\n\r\n    /**\r\n     * @type {number}\r\n     * @const\r\n     * @inner\r\n     */\r\n    var TWO_PWR_64_DBL = TWO_PWR_32_DBL * TWO_PWR_32_DBL;\r\n\r\n    /**\r\n     * @type {number}\r\n     * @const\r\n     * @inner\r\n     */\r\n    var TWO_PWR_63_DBL = TWO_PWR_64_DBL / 2;\r\n\r\n    /**\r\n     * @type {!Long}\r\n     * @const\r\n     * @inner\r\n     */\r\n    var TWO_PWR_24 = fromInt(TWO_PWR_24_DBL);\r\n\r\n    /**\r\n     * @type {!Long}\r\n     * @inner\r\n     */\r\n    var ZERO = fromInt(0);\r\n\r\n    /**\r\n     * Signed zero.\r\n     * @type {!Long}\r\n     */\r\n    Long.ZERO = ZERO;\r\n\r\n    /**\r\n     * @type {!Long}\r\n     * @inner\r\n     */\r\n    var UZERO = fromInt(0, true);\r\n\r\n    /**\r\n     * Unsigned zero.\r\n     * @type {!Long}\r\n     */\r\n    Long.UZERO = UZERO;\r\n\r\n    /**\r\n     * @type {!Long}\r\n     * @inner\r\n     */\r\n    var ONE = fromInt(1);\r\n\r\n    /**\r\n     * Signed one.\r\n     * @type {!Long}\r\n     */\r\n    Long.ONE = ONE;\r\n\r\n    /**\r\n     * @type {!Long}\r\n     * @inner\r\n     */\r\n    var UONE = fromInt(1, true);\r\n\r\n    /**\r\n     * Unsigned one.\r\n     * @type {!Long}\r\n     */\r\n    Long.UONE = UONE;\r\n\r\n    /**\r\n     * @type {!Long}\r\n     * @inner\r\n     */\r\n    var NEG_ONE = fromInt(-1);\r\n\r\n    /**\r\n     * Signed negative one.\r\n     * @type {!Long}\r\n     */\r\n    Long.NEG_ONE = NEG_ONE;\r\n\r\n    /**\r\n     * @type {!Long}\r\n     * @inner\r\n     */\r\n    var MAX_VALUE = fromBits(0xFFFFFFFF|0, 0x7FFFFFFF|0, false);\r\n\r\n    /**\r\n     * Maximum signed value.\r\n     * @type {!Long}\r\n     */\r\n    Long.MAX_VALUE = MAX_VALUE;\r\n\r\n    /**\r\n     * @type {!Long}\r\n     * @inner\r\n     */\r\n    var MAX_UNSIGNED_VALUE = fromBits(0xFFFFFFFF|0, 0xFFFFFFFF|0, true);\r\n\r\n    /**\r\n     * Maximum unsigned value.\r\n     * @type {!Long}\r\n     */\r\n    Long.MAX_UNSIGNED_VALUE = MAX_UNSIGNED_VALUE;\r\n\r\n    /**\r\n     * @type {!Long}\r\n     * @inner\r\n     */\r\n    var MIN_VALUE = fromBits(0, 0x80000000|0, false);\r\n\r\n    /**\r\n     * Minimum signed value.\r\n     * @type {!Long}\r\n     */\r\n    Long.MIN_VALUE = MIN_VALUE;\r\n\r\n    /**\r\n     * @alias Long.prototype\r\n     * @inner\r\n     */\r\n    var LongPrototype = Long.prototype;\r\n\r\n    /**\r\n     * Converts the Long to a 32 bit integer, assuming it is a 32 bit integer.\r\n     * @returns {number}\r\n     */\r\n    LongPrototype.toInt = function toInt() {\r\n        return this.unsigned ? this.low >>> 0 : this.low;\r\n    };\r\n\r\n    /**\r\n     * Converts the Long to a the nearest floating-point representation of this value (double, 53 bit mantissa).\r\n     * @returns {number}\r\n     */\r\n    LongPrototype.toNumber = function toNumber() {\r\n        if (this.unsigned)\r\n            return ((this.high >>> 0) * TWO_PWR_32_DBL) + (this.low >>> 0);\r\n        return this.high * TWO_PWR_32_DBL + (this.low >>> 0);\r\n    };\r\n\r\n    /**\r\n     * Converts the Long to a string written in the specified radix.\r\n     * @param {number=} radix Radix (2-36), defaults to 10\r\n     * @returns {string}\r\n     * @override\r\n     * @throws {RangeError} If `radix` is out of range\r\n     */\r\n    LongPrototype.toString = function toString(radix) {\r\n        radix = radix || 10;\r\n        if (radix < 2 || 36 < radix)\r\n            throw RangeError('radix');\r\n        if (this.isZero())\r\n            return '0';\r\n        if (this.isNegative()) { // Unsigned Longs are never negative\r\n            if (this.eq(MIN_VALUE)) {\r\n                // We need to change the Long value before it can be negated, so we remove\r\n                // the bottom-most digit in this base and then recurse to do the rest.\r\n                var radixLong = fromNumber(radix),\r\n                    div = this.div(radixLong),\r\n                    rem1 = div.mul(radixLong).sub(this);\r\n                return div.toString(radix) + rem1.toInt().toString(radix);\r\n            } else\r\n                return '-' + this.neg().toString(radix);\r\n        }\r\n\r\n        // Do several (6) digits each time through the loop, so as to\r\n        // minimize the calls to the very expensive emulated div.\r\n        var radixToPower = fromNumber(pow_dbl(radix, 6), this.unsigned),\r\n            rem = this;\r\n        var result = '';\r\n        while (true) {\r\n            var remDiv = rem.div(radixToPower),\r\n                intval = rem.sub(remDiv.mul(radixToPower)).toInt() >>> 0,\r\n                digits = intval.toString(radix);\r\n            rem = remDiv;\r\n            if (rem.isZero())\r\n                return digits + result;\r\n            else {\r\n                while (digits.length < 6)\r\n                    digits = '0' + digits;\r\n                result = '' + digits + result;\r\n            }\r\n        }\r\n    };\r\n\r\n    /**\r\n     * Gets the high 32 bits as a signed integer.\r\n     * @returns {number} Signed high bits\r\n     */\r\n    LongPrototype.getHighBits = function getHighBits() {\r\n        return this.high;\r\n    };\r\n\r\n    /**\r\n     * Gets the high 32 bits as an unsigned integer.\r\n     * @returns {number} Unsigned high bits\r\n     */\r\n    LongPrototype.getHighBitsUnsigned = function getHighBitsUnsigned() {\r\n        return this.high >>> 0;\r\n    };\r\n\r\n    /**\r\n     * Gets the low 32 bits as a signed integer.\r\n     * @returns {number} Signed low bits\r\n     */\r\n    LongPrototype.getLowBits = function getLowBits() {\r\n        return this.low;\r\n    };\r\n\r\n    /**\r\n     * Gets the low 32 bits as an unsigned integer.\r\n     * @returns {number} Unsigned low bits\r\n     */\r\n    LongPrototype.getLowBitsUnsigned = function getLowBitsUnsigned() {\r\n        return this.low >>> 0;\r\n    };\r\n\r\n    /**\r\n     * Gets the number of bits needed to represent the absolute value of this Long.\r\n     * @returns {number}\r\n     */\r\n    LongPrototype.getNumBitsAbs = function getNumBitsAbs() {\r\n        if (this.isNegative()) // Unsigned Longs are never negative\r\n            return this.eq(MIN_VALUE) ? 64 : this.neg().getNumBitsAbs();\r\n        var val = this.high != 0 ? this.high : this.low;\r\n        for (var bit = 31; bit > 0; bit--)\r\n            if ((val & (1 << bit)) != 0)\r\n                break;\r\n        return this.high != 0 ? bit + 33 : bit + 1;\r\n    };\r\n\r\n    /**\r\n     * Tests if this Long's value equals zero.\r\n     * @returns {boolean}\r\n     */\r\n    LongPrototype.isZero = function isZero() {\r\n        return this.high === 0 && this.low === 0;\r\n    };\r\n\r\n    /**\r\n     * Tests if this Long's value is negative.\r\n     * @returns {boolean}\r\n     */\r\n    LongPrototype.isNegative = function isNegative() {\r\n        return !this.unsigned && this.high < 0;\r\n    };\r\n\r\n    /**\r\n     * Tests if this Long's value is positive.\r\n     * @returns {boolean}\r\n     */\r\n    LongPrototype.isPositive = function isPositive() {\r\n        return this.unsigned || this.high >= 0;\r\n    };\r\n\r\n    /**\r\n     * Tests if this Long's value is odd.\r\n     * @returns {boolean}\r\n     */\r\n    LongPrototype.isOdd = function isOdd() {\r\n        return (this.low & 1) === 1;\r\n    };\r\n\r\n    /**\r\n     * Tests if this Long's value is even.\r\n     * @returns {boolean}\r\n     */\r\n    LongPrototype.isEven = function isEven() {\r\n        return (this.low & 1) === 0;\r\n    };\r\n\r\n    /**\r\n     * Tests if this Long's value equals the specified's.\r\n     * @param {!Long|number|string} other Other value\r\n     * @returns {boolean}\r\n     */\r\n    LongPrototype.equals = function equals(other) {\r\n        if (!isLong(other))\r\n            other = fromValue(other);\r\n        if (this.unsigned !== other.unsigned && (this.high >>> 31) === 1 && (other.high >>> 31) === 1)\r\n            return false;\r\n        return this.high === other.high && this.low === other.low;\r\n    };\r\n\r\n    /**\r\n     * Tests if this Long's value equals the specified's. This is an alias of {@link Long#equals}.\r\n     * @function\r\n     * @param {!Long|number|string} other Other value\r\n     * @returns {boolean}\r\n     */\r\n    LongPrototype.eq = LongPrototype.equals;\r\n\r\n    /**\r\n     * Tests if this Long's value differs from the specified's.\r\n     * @param {!Long|number|string} other Other value\r\n     * @returns {boolean}\r\n     */\r\n    LongPrototype.notEquals = function notEquals(other) {\r\n        return !this.eq(/* validates */ other);\r\n    };\r\n\r\n    /**\r\n     * Tests if this Long's value differs from the specified's. This is an alias of {@link Long#notEquals}.\r\n     * @function\r\n     * @param {!Long|number|string} other Other value\r\n     * @returns {boolean}\r\n     */\r\n    LongPrototype.neq = LongPrototype.notEquals;\r\n\r\n    /**\r\n     * Tests if this Long's value is less than the specified's.\r\n     * @param {!Long|number|string} other Other value\r\n     * @returns {boolean}\r\n     */\r\n    LongPrototype.lessThan = function lessThan(other) {\r\n        return this.comp(/* validates */ other) < 0;\r\n    };\r\n\r\n    /**\r\n     * Tests if this Long's value is less than the specified's. This is an alias of {@link Long#lessThan}.\r\n     * @function\r\n     * @param {!Long|number|string} other Other value\r\n     * @returns {boolean}\r\n     */\r\n    LongPrototype.lt = LongPrototype.lessThan;\r\n\r\n    /**\r\n     * Tests if this Long's value is less than or equal the specified's.\r\n     * @param {!Long|number|string} other Other value\r\n     * @returns {boolean}\r\n     */\r\n    LongPrototype.lessThanOrEqual = function lessThanOrEqual(other) {\r\n        return this.comp(/* validates */ other) <= 0;\r\n    };\r\n\r\n    /**\r\n     * Tests if this Long's value is less than or equal the specified's. This is an alias of {@link Long#lessThanOrEqual}.\r\n     * @function\r\n     * @param {!Long|number|string} other Other value\r\n     * @returns {boolean}\r\n     */\r\n    LongPrototype.lte = LongPrototype.lessThanOrEqual;\r\n\r\n    /**\r\n     * Tests if this Long's value is greater than the specified's.\r\n     * @param {!Long|number|string} other Other value\r\n     * @returns {boolean}\r\n     */\r\n    LongPrototype.greaterThan = function greaterThan(other) {\r\n        return this.comp(/* validates */ other) > 0;\r\n    };\r\n\r\n    /**\r\n     * Tests if this Long's value is greater than the specified's. This is an alias of {@link Long#greaterThan}.\r\n     * @function\r\n     * @param {!Long|number|string} other Other value\r\n     * @returns {boolean}\r\n     */\r\n    LongPrototype.gt = LongPrototype.greaterThan;\r\n\r\n    /**\r\n     * Tests if this Long's value is greater than or equal the specified's.\r\n     * @param {!Long|number|string} other Other value\r\n     * @returns {boolean}\r\n     */\r\n    LongPrototype.greaterThanOrEqual = function greaterThanOrEqual(other) {\r\n        return this.comp(/* validates */ other) >= 0;\r\n    };\r\n\r\n    /**\r\n     * Tests if this Long's value is greater than or equal the specified's. This is an alias of {@link Long#greaterThanOrEqual}.\r\n     * @function\r\n     * @param {!Long|number|string} other Other value\r\n     * @returns {boolean}\r\n     */\r\n    LongPrototype.gte = LongPrototype.greaterThanOrEqual;\r\n\r\n    /**\r\n     * Compares this Long's value with the specified's.\r\n     * @param {!Long|number|string} other Other value\r\n     * @returns {number} 0 if they are the same, 1 if the this is greater and -1\r\n     *  if the given one is greater\r\n     */\r\n    LongPrototype.compare = function compare(other) {\r\n        if (!isLong(other))\r\n            other = fromValue(other);\r\n        if (this.eq(other))\r\n            return 0;\r\n        var thisNeg = this.isNegative(),\r\n            otherNeg = other.isNegative();\r\n        if (thisNeg && !otherNeg)\r\n            return -1;\r\n        if (!thisNeg && otherNeg)\r\n            return 1;\r\n        // At this point the sign bits are the same\r\n        if (!this.unsigned)\r\n            return this.sub(other).isNegative() ? -1 : 1;\r\n        // Both are positive if at least one is unsigned\r\n        return (other.high >>> 0) > (this.high >>> 0) || (other.high === this.high && (other.low >>> 0) > (this.low >>> 0)) ? -1 : 1;\r\n    };\r\n\r\n    /**\r\n     * Compares this Long's value with the specified's. This is an alias of {@link Long#compare}.\r\n     * @function\r\n     * @param {!Long|number|string} other Other value\r\n     * @returns {number} 0 if they are the same, 1 if the this is greater and -1\r\n     *  if the given one is greater\r\n     */\r\n    LongPrototype.comp = LongPrototype.compare;\r\n\r\n    /**\r\n     * Negates this Long's value.\r\n     * @returns {!Long} Negated Long\r\n     */\r\n    LongPrototype.negate = function negate() {\r\n        if (!this.unsigned && this.eq(MIN_VALUE))\r\n            return MIN_VALUE;\r\n        return this.not().add(ONE);\r\n    };\r\n\r\n    /**\r\n     * Negates this Long's value. This is an alias of {@link Long#negate}.\r\n     * @function\r\n     * @returns {!Long} Negated Long\r\n     */\r\n    LongPrototype.neg = LongPrototype.negate;\r\n\r\n    /**\r\n     * Returns the sum of this and the specified Long.\r\n     * @param {!Long|number|string} addend Addend\r\n     * @returns {!Long} Sum\r\n     */\r\n    LongPrototype.add = function add(addend) {\r\n        if (!isLong(addend))\r\n            addend = fromValue(addend);\r\n\r\n        // Divide each number into 4 chunks of 16 bits, and then sum the chunks.\r\n\r\n        var a48 = this.high >>> 16;\r\n        var a32 = this.high & 0xFFFF;\r\n        var a16 = this.low >>> 16;\r\n        var a00 = this.low & 0xFFFF;\r\n\r\n        var b48 = addend.high >>> 16;\r\n        var b32 = addend.high & 0xFFFF;\r\n        var b16 = addend.low >>> 16;\r\n        var b00 = addend.low & 0xFFFF;\r\n\r\n        var c48 = 0, c32 = 0, c16 = 0, c00 = 0;\r\n        c00 += a00 + b00;\r\n        c16 += c00 >>> 16;\r\n        c00 &= 0xFFFF;\r\n        c16 += a16 + b16;\r\n        c32 += c16 >>> 16;\r\n        c16 &= 0xFFFF;\r\n        c32 += a32 + b32;\r\n        c48 += c32 >>> 16;\r\n        c32 &= 0xFFFF;\r\n        c48 += a48 + b48;\r\n        c48 &= 0xFFFF;\r\n        return fromBits((c16 << 16) | c00, (c48 << 16) | c32, this.unsigned);\r\n    };\r\n\r\n    /**\r\n     * Returns the difference of this and the specified Long.\r\n     * @param {!Long|number|string} subtrahend Subtrahend\r\n     * @returns {!Long} Difference\r\n     */\r\n    LongPrototype.subtract = function subtract(subtrahend) {\r\n        if (!isLong(subtrahend))\r\n            subtrahend = fromValue(subtrahend);\r\n        return this.add(subtrahend.neg());\r\n    };\r\n\r\n    /**\r\n     * Returns the difference of this and the specified Long. This is an alias of {@link Long#subtract}.\r\n     * @function\r\n     * @param {!Long|number|string} subtrahend Subtrahend\r\n     * @returns {!Long} Difference\r\n     */\r\n    LongPrototype.sub = LongPrototype.subtract;\r\n\r\n    /**\r\n     * Returns the product of this and the specified Long.\r\n     * @param {!Long|number|string} multiplier Multiplier\r\n     * @returns {!Long} Product\r\n     */\r\n    LongPrototype.multiply = function multiply(multiplier) {\r\n        if (this.isZero())\r\n            return ZERO;\r\n        if (!isLong(multiplier))\r\n            multiplier = fromValue(multiplier);\r\n        if (multiplier.isZero())\r\n            return ZERO;\r\n        if (this.eq(MIN_VALUE))\r\n            return multiplier.isOdd() ? MIN_VALUE : ZERO;\r\n        if (multiplier.eq(MIN_VALUE))\r\n            return this.isOdd() ? MIN_VALUE : ZERO;\r\n\r\n        if (this.isNegative()) {\r\n            if (multiplier.isNegative())\r\n                return this.neg().mul(multiplier.neg());\r\n            else\r\n                return this.neg().mul(multiplier).neg();\r\n        } else if (multiplier.isNegative())\r\n            return this.mul(multiplier.neg()).neg();\r\n\r\n        // If both longs are small, use float multiplication\r\n        if (this.lt(TWO_PWR_24) && multiplier.lt(TWO_PWR_24))\r\n            return fromNumber(this.toNumber() * multiplier.toNumber(), this.unsigned);\r\n\r\n        // Divide each long into 4 chunks of 16 bits, and then add up 4x4 products.\r\n        // We can skip products that would overflow.\r\n\r\n        var a48 = this.high >>> 16;\r\n        var a32 = this.high & 0xFFFF;\r\n        var a16 = this.low >>> 16;\r\n        var a00 = this.low & 0xFFFF;\r\n\r\n        var b48 = multiplier.high >>> 16;\r\n        var b32 = multiplier.high & 0xFFFF;\r\n        var b16 = multiplier.low >>> 16;\r\n        var b00 = multiplier.low & 0xFFFF;\r\n\r\n        var c48 = 0, c32 = 0, c16 = 0, c00 = 0;\r\n        c00 += a00 * b00;\r\n        c16 += c00 >>> 16;\r\n        c00 &= 0xFFFF;\r\n        c16 += a16 * b00;\r\n        c32 += c16 >>> 16;\r\n        c16 &= 0xFFFF;\r\n        c16 += a00 * b16;\r\n        c32 += c16 >>> 16;\r\n        c16 &= 0xFFFF;\r\n        c32 += a32 * b00;\r\n        c48 += c32 >>> 16;\r\n        c32 &= 0xFFFF;\r\n        c32 += a16 * b16;\r\n        c48 += c32 >>> 16;\r\n        c32 &= 0xFFFF;\r\n        c32 += a00 * b32;\r\n        c48 += c32 >>> 16;\r\n        c32 &= 0xFFFF;\r\n        c48 += a48 * b00 + a32 * b16 + a16 * b32 + a00 * b48;\r\n        c48 &= 0xFFFF;\r\n        return fromBits((c16 << 16) | c00, (c48 << 16) | c32, this.unsigned);\r\n    };\r\n\r\n    /**\r\n     * Returns the product of this and the specified Long. This is an alias of {@link Long#multiply}.\r\n     * @function\r\n     * @param {!Long|number|string} multiplier Multiplier\r\n     * @returns {!Long} Product\r\n     */\r\n    LongPrototype.mul = LongPrototype.multiply;\r\n\r\n    /**\r\n     * Returns this Long divided by the specified. The result is signed if this Long is signed or\r\n     *  unsigned if this Long is unsigned.\r\n     * @param {!Long|number|string} divisor Divisor\r\n     * @returns {!Long} Quotient\r\n     */\r\n    LongPrototype.divide = function divide(divisor) {\r\n        if (!isLong(divisor))\r\n            divisor = fromValue(divisor);\r\n        if (divisor.isZero())\r\n            throw Error('division by zero');\r\n        if (this.isZero())\r\n            return this.unsigned ? UZERO : ZERO;\r\n        var approx, rem, res;\r\n        if (!this.unsigned) {\r\n            // This section is only relevant for signed longs and is derived from the\r\n            // closure library as a whole.\r\n            if (this.eq(MIN_VALUE)) {\r\n                if (divisor.eq(ONE) || divisor.eq(NEG_ONE))\r\n                    return MIN_VALUE;  // recall that -MIN_VALUE == MIN_VALUE\r\n                else if (divisor.eq(MIN_VALUE))\r\n                    return ONE;\r\n                else {\r\n                    // At this point, we have |other| >= 2, so |this/other| < |MIN_VALUE|.\r\n                    var halfThis = this.shr(1);\r\n                    approx = halfThis.div(divisor).shl(1);\r\n                    if (approx.eq(ZERO)) {\r\n                        return divisor.isNegative() ? ONE : NEG_ONE;\r\n                    } else {\r\n                        rem = this.sub(divisor.mul(approx));\r\n                        res = approx.add(rem.div(divisor));\r\n                        return res;\r\n                    }\r\n                }\r\n            } else if (divisor.eq(MIN_VALUE))\r\n                return this.unsigned ? UZERO : ZERO;\r\n            if (this.isNegative()) {\r\n                if (divisor.isNegative())\r\n                    return this.neg().div(divisor.neg());\r\n                return this.neg().div(divisor).neg();\r\n            } else if (divisor.isNegative())\r\n                return this.div(divisor.neg()).neg();\r\n            res = ZERO;\r\n        } else {\r\n            // The algorithm below has not been made for unsigned longs. It's therefore\r\n            // required to take special care of the MSB prior to running it.\r\n            if (!divisor.unsigned)\r\n                divisor = divisor.toUnsigned();\r\n            if (divisor.gt(this))\r\n                return UZERO;\r\n            if (divisor.gt(this.shru(1))) // 15 >>> 1 = 7 ; with divisor = 8 ; true\r\n                return UONE;\r\n            res = UZERO;\r\n        }\r\n\r\n        // Repeat the following until the remainder is less than other:  find a\r\n        // floating-point that approximates remainder / other *from below*, add this\r\n        // into the result, and subtract it from the remainder.  It is critical that\r\n        // the approximate value is less than or equal to the real value so that the\r\n        // remainder never becomes negative.\r\n        rem = this;\r\n        while (rem.gte(divisor)) {\r\n            // Approximate the result of division. This may be a little greater or\r\n            // smaller than the actual value.\r\n            approx = Math.max(1, Math.floor(rem.toNumber() / divisor.toNumber()));\r\n\r\n            // We will tweak the approximate result by changing it in the 48-th digit or\r\n            // the smallest non-fractional digit, whichever is larger.\r\n            var log2 = Math.ceil(Math.log(approx) / Math.LN2),\r\n                delta = (log2 <= 48) ? 1 : pow_dbl(2, log2 - 48),\r\n\r\n            // Decrease the approximation until it is smaller than the remainder.  Note\r\n            // that if it is too large, the product overflows and is negative.\r\n                approxRes = fromNumber(approx),\r\n                approxRem = approxRes.mul(divisor);\r\n            while (approxRem.isNegative() || approxRem.gt(rem)) {\r\n                approx -= delta;\r\n                approxRes = fromNumber(approx, this.unsigned);\r\n                approxRem = approxRes.mul(divisor);\r\n            }\r\n\r\n            // We know the answer can't be zero... and actually, zero would cause\r\n            // infinite recursion since we would make no progress.\r\n            if (approxRes.isZero())\r\n                approxRes = ONE;\r\n\r\n            res = res.add(approxRes);\r\n            rem = rem.sub(approxRem);\r\n        }\r\n        return res;\r\n    };\r\n\r\n    /**\r\n     * Returns this Long divided by the specified. This is an alias of {@link Long#divide}.\r\n     * @function\r\n     * @param {!Long|number|string} divisor Divisor\r\n     * @returns {!Long} Quotient\r\n     */\r\n    LongPrototype.div = LongPrototype.divide;\r\n\r\n    /**\r\n     * Returns this Long modulo the specified.\r\n     * @param {!Long|number|string} divisor Divisor\r\n     * @returns {!Long} Remainder\r\n     */\r\n    LongPrototype.modulo = function modulo(divisor) {\r\n        if (!isLong(divisor))\r\n            divisor = fromValue(divisor);\r\n        return this.sub(this.div(divisor).mul(divisor));\r\n    };\r\n\r\n    /**\r\n     * Returns this Long modulo the specified. This is an alias of {@link Long#modulo}.\r\n     * @function\r\n     * @param {!Long|number|string} divisor Divisor\r\n     * @returns {!Long} Remainder\r\n     */\r\n    LongPrototype.mod = LongPrototype.modulo;\r\n\r\n    /**\r\n     * Returns the bitwise NOT of this Long.\r\n     * @returns {!Long}\r\n     */\r\n    LongPrototype.not = function not() {\r\n        return fromBits(~this.low, ~this.high, this.unsigned);\r\n    };\r\n\r\n    /**\r\n     * Returns the bitwise AND of this Long and the specified.\r\n     * @param {!Long|number|string} other Other Long\r\n     * @returns {!Long}\r\n     */\r\n    LongPrototype.and = function and(other) {\r\n        if (!isLong(other))\r\n            other = fromValue(other);\r\n        return fromBits(this.low & other.low, this.high & other.high, this.unsigned);\r\n    };\r\n\r\n    /**\r\n     * Returns the bitwise OR of this Long and the specified.\r\n     * @param {!Long|number|string} other Other Long\r\n     * @returns {!Long}\r\n     */\r\n    LongPrototype.or = function or(other) {\r\n        if (!isLong(other))\r\n            other = fromValue(other);\r\n        return fromBits(this.low | other.low, this.high | other.high, this.unsigned);\r\n    };\r\n\r\n    /**\r\n     * Returns the bitwise XOR of this Long and the given one.\r\n     * @param {!Long|number|string} other Other Long\r\n     * @returns {!Long}\r\n     */\r\n    LongPrototype.xor = function xor(other) {\r\n        if (!isLong(other))\r\n            other = fromValue(other);\r\n        return fromBits(this.low ^ other.low, this.high ^ other.high, this.unsigned);\r\n    };\r\n\r\n    /**\r\n     * Returns this Long with bits shifted to the left by the given amount.\r\n     * @param {number|!Long} numBits Number of bits\r\n     * @returns {!Long} Shifted Long\r\n     */\r\n    LongPrototype.shiftLeft = function shiftLeft(numBits) {\r\n        if (isLong(numBits))\r\n            numBits = numBits.toInt();\r\n        if ((numBits &= 63) === 0)\r\n            return this;\r\n        else if (numBits < 32)\r\n            return fromBits(this.low << numBits, (this.high << numBits) | (this.low >>> (32 - numBits)), this.unsigned);\r\n        else\r\n            return fromBits(0, this.low << (numBits - 32), this.unsigned);\r\n    };\r\n\r\n    /**\r\n     * Returns this Long with bits shifted to the left by the given amount. This is an alias of {@link Long#shiftLeft}.\r\n     * @function\r\n     * @param {number|!Long} numBits Number of bits\r\n     * @returns {!Long} Shifted Long\r\n     */\r\n    LongPrototype.shl = LongPrototype.shiftLeft;\r\n\r\n    /**\r\n     * Returns this Long with bits arithmetically shifted to the right by the given amount.\r\n     * @param {number|!Long} numBits Number of bits\r\n     * @returns {!Long} Shifted Long\r\n     */\r\n    LongPrototype.shiftRight = function shiftRight(numBits) {\r\n        if (isLong(numBits))\r\n            numBits = numBits.toInt();\r\n        if ((numBits &= 63) === 0)\r\n            return this;\r\n        else if (numBits < 32)\r\n            return fromBits((this.low >>> numBits) | (this.high << (32 - numBits)), this.high >> numBits, this.unsigned);\r\n        else\r\n            return fromBits(this.high >> (numBits - 32), this.high >= 0 ? 0 : -1, this.unsigned);\r\n    };\r\n\r\n    /**\r\n     * Returns this Long with bits arithmetically shifted to the right by the given amount. This is an alias of {@link Long#shiftRight}.\r\n     * @function\r\n     * @param {number|!Long} numBits Number of bits\r\n     * @returns {!Long} Shifted Long\r\n     */\r\n    LongPrototype.shr = LongPrototype.shiftRight;\r\n\r\n    /**\r\n     * Returns this Long with bits logically shifted to the right by the given amount.\r\n     * @param {number|!Long} numBits Number of bits\r\n     * @returns {!Long} Shifted Long\r\n     */\r\n    LongPrototype.shiftRightUnsigned = function shiftRightUnsigned(numBits) {\r\n        if (isLong(numBits))\r\n            numBits = numBits.toInt();\r\n        numBits &= 63;\r\n        if (numBits === 0)\r\n            return this;\r\n        else {\r\n            var high = this.high;\r\n            if (numBits < 32) {\r\n                var low = this.low;\r\n                return fromBits((low >>> numBits) | (high << (32 - numBits)), high >>> numBits, this.unsigned);\r\n            } else if (numBits === 32)\r\n                return fromBits(high, 0, this.unsigned);\r\n            else\r\n                return fromBits(high >>> (numBits - 32), 0, this.unsigned);\r\n        }\r\n    };\r\n\r\n    /**\r\n     * Returns this Long with bits logically shifted to the right by the given amount. This is an alias of {@link Long#shiftRightUnsigned}.\r\n     * @function\r\n     * @param {number|!Long} numBits Number of bits\r\n     * @returns {!Long} Shifted Long\r\n     */\r\n    LongPrototype.shru = LongPrototype.shiftRightUnsigned;\r\n\r\n    /**\r\n     * Converts this Long to signed.\r\n     * @returns {!Long} Signed long\r\n     */\r\n    LongPrototype.toSigned = function toSigned() {\r\n        if (!this.unsigned)\r\n            return this;\r\n        return fromBits(this.low, this.high, false);\r\n    };\r\n\r\n    /**\r\n     * Converts this Long to unsigned.\r\n     * @returns {!Long} Unsigned long\r\n     */\r\n    LongPrototype.toUnsigned = function toUnsigned() {\r\n        if (this.unsigned)\r\n            return this;\r\n        return fromBits(this.low, this.high, true);\r\n    };\r\n\r\n    /**\r\n     * Converts this Long to its byte representation.\r\n     * @param {boolean=} le Whether little or big endian, defaults to big endian\r\n     * @returns {!Array.<number>} Byte representation\r\n     */\r\n    LongPrototype.toBytes = function(le) {\r\n        return le ? this.toBytesLE() : this.toBytesBE();\r\n    }\r\n\r\n    /**\r\n     * Converts this Long to its little endian byte representation.\r\n     * @returns {!Array.<number>} Little endian byte representation\r\n     */\r\n    LongPrototype.toBytesLE = function() {\r\n        var hi = this.high,\r\n            lo = this.low;\r\n        return [\r\n             lo         & 0xff,\r\n            (lo >>>  8) & 0xff,\r\n            (lo >>> 16) & 0xff,\r\n            (lo >>> 24) & 0xff,\r\n             hi         & 0xff,\r\n            (hi >>>  8) & 0xff,\r\n            (hi >>> 16) & 0xff,\r\n            (hi >>> 24) & 0xff\r\n        ];\r\n    }\r\n\r\n    /**\r\n     * Converts this Long to its big endian byte representation.\r\n     * @returns {!Array.<number>} Big endian byte representation\r\n     */\r\n    LongPrototype.toBytesBE = function() {\r\n        var hi = this.high,\r\n            lo = this.low;\r\n        return [\r\n            (hi >>> 24) & 0xff,\r\n            (hi >>> 16) & 0xff,\r\n            (hi >>>  8) & 0xff,\r\n             hi         & 0xff,\r\n            (lo >>> 24) & 0xff,\r\n            (lo >>> 16) & 0xff,\r\n            (lo >>>  8) & 0xff,\r\n             lo         & 0xff\r\n        ];\r\n    }\r\n\r\n    return Long;\r\n});\r\n","import MathArray from './base/math-array';\nimport Quaternion from './quaternion';\nimport { clamp } from '../lib/common';\nimport { checkNumber } from '../lib/validators';\nconst ERR_UNKNOWN_ORDER = 'Unknown Euler angle order';\nconst ALMOST_ONE = 0.99999;\nvar RotationOrder;\n\n(function (RotationOrder) {\n  RotationOrder[RotationOrder[\"ZYX\"] = 0] = \"ZYX\";\n  RotationOrder[RotationOrder[\"YXZ\"] = 1] = \"YXZ\";\n  RotationOrder[RotationOrder[\"XZY\"] = 2] = \"XZY\";\n  RotationOrder[RotationOrder[\"ZXY\"] = 3] = \"ZXY\";\n  RotationOrder[RotationOrder[\"YZX\"] = 4] = \"YZX\";\n  RotationOrder[RotationOrder[\"XYZ\"] = 5] = \"XYZ\";\n})(RotationOrder || (RotationOrder = {}));\n\nexport default class Euler extends MathArray {\n  static get ZYX() {\n    return RotationOrder.ZYX;\n  }\n\n  static get YXZ() {\n    return RotationOrder.YXZ;\n  }\n\n  static get XZY() {\n    return RotationOrder.XZY;\n  }\n\n  static get ZXY() {\n    return RotationOrder.ZXY;\n  }\n\n  static get YZX() {\n    return RotationOrder.YZX;\n  }\n\n  static get XYZ() {\n    return RotationOrder.XYZ;\n  }\n\n  static get RollPitchYaw() {\n    return RotationOrder.ZYX;\n  }\n\n  static get DefaultOrder() {\n    return RotationOrder.ZYX;\n  }\n\n  static get RotationOrders() {\n    return RotationOrder;\n  }\n\n  static rotationOrder(order) {\n    return RotationOrder[order];\n  }\n\n  get ELEMENTS() {\n    return 4;\n  }\n\n  constructor(x = 0, y = 0, z = 0, order = Euler.DefaultOrder) {\n    super(-0, -0, -0, -0);\n\n    if (arguments.length > 0 && Array.isArray(arguments[0])) {\n      this.fromVector3(...arguments);\n    } else {\n      this.set(x, y, z, order);\n    }\n  }\n\n  fromQuaternion(quaternion) {\n    const [x, y, z, w] = quaternion;\n    const ysqr = y * y;\n    const t0 = -2 * (ysqr + z * z) + 1;\n    const t1 = +2 * (x * y + w * z);\n    let t2 = -2 * (x * z - w * y);\n    const t3 = +2 * (y * z + w * x);\n    const t4 = -2 * (x * x + ysqr) + 1;\n    t2 = t2 > 1 ? 1 : t2;\n    t2 = t2 < -1 ? -1 : t2;\n    const roll = Math.atan2(t3, t4);\n    const pitch = Math.asin(t2);\n    const yaw = Math.atan2(t1, t0);\n    return this.set(roll, pitch, yaw, Euler.RollPitchYaw);\n  }\n\n  fromObject(object) {\n    throw new Error('not implemented');\n  }\n\n  copy(array) {\n    this[0] = array[0];\n    this[1] = array[1];\n    this[2] = array[2];\n    this[3] = Number.isFinite(array[3]) || this.order;\n    return this.check();\n  }\n\n  set(x = 0, y = 0, z = 0, order) {\n    this[0] = x;\n    this[1] = y;\n    this[2] = z;\n    this[3] = Number.isFinite(order) ? order : this[3];\n    return this.check();\n  }\n\n  validate() {\n    return validateOrder(this[3]) && Number.isFinite(this[0]) && Number.isFinite(this[1]) && Number.isFinite(this[2]);\n  }\n\n  toArray(array = [], offset = 0) {\n    array[offset] = this[0];\n    array[offset + 1] = this[1];\n    array[offset + 2] = this[2];\n    return array;\n  }\n\n  toArray4(array = [], offset = 0) {\n    array[offset] = this[0];\n    array[offset + 1] = this[1];\n    array[offset + 2] = this[2];\n    array[offset + 3] = this[3];\n    return array;\n  }\n\n  toVector3(result = [-0, -0, -0]) {\n    result[0] = this[0];\n    result[1] = this[1];\n    result[2] = this[2];\n    return result;\n  }\n\n  get x() {\n    return this[0];\n  }\n\n  set x(value) {\n    this[0] = checkNumber(value);\n  }\n\n  get y() {\n    return this[1];\n  }\n\n  set y(value) {\n    this[1] = checkNumber(value);\n  }\n\n  get z() {\n    return this[2];\n  }\n\n  set z(value) {\n    this[2] = checkNumber(value);\n  }\n\n  get alpha() {\n    return this[0];\n  }\n\n  set alpha(value) {\n    this[0] = checkNumber(value);\n  }\n\n  get beta() {\n    return this[1];\n  }\n\n  set beta(value) {\n    this[1] = checkNumber(value);\n  }\n\n  get gamma() {\n    return this[2];\n  }\n\n  set gamma(value) {\n    this[2] = checkNumber(value);\n  }\n\n  get phi() {\n    return this[0];\n  }\n\n  set phi(value) {\n    this[0] = checkNumber(value);\n  }\n\n  get theta() {\n    return this[1];\n  }\n\n  set theta(value) {\n    this[1] = checkNumber(value);\n  }\n\n  get psi() {\n    return this[2];\n  }\n\n  set psi(value) {\n    this[2] = checkNumber(value);\n  }\n\n  get roll() {\n    return this[0];\n  }\n\n  set roll(value) {\n    this[0] = checkNumber(value);\n  }\n\n  get pitch() {\n    return this[1];\n  }\n\n  set pitch(value) {\n    this[1] = checkNumber(value);\n  }\n\n  get yaw() {\n    return this[2];\n  }\n\n  set yaw(value) {\n    this[2] = checkNumber(value);\n  }\n\n  get order() {\n    return this[3];\n  }\n\n  set order(value) {\n    this[3] = checkOrder(value);\n  }\n\n  fromVector3(v, order) {\n    return this.set(v[0], v[1], v[2], Number.isFinite(order) ? order : this[3]);\n  }\n\n  fromArray(array, offset = 0) {\n    this[0] = array[0 + offset];\n    this[1] = array[1 + offset];\n    this[2] = array[2 + offset];\n\n    if (array[3] !== undefined) {\n      this[3] = array[3];\n    }\n\n    return this.check();\n  }\n\n  fromRollPitchYaw(roll, pitch, yaw) {\n    return this.set(roll, pitch, yaw, RotationOrder.ZYX);\n  }\n\n  fromRotationMatrix(m, order = Euler.DefaultOrder) {\n    this._fromRotationMatrix(m, order);\n\n    return this.check();\n  }\n\n  getRotationMatrix(m) {\n    return this._getRotationMatrix(m);\n  }\n\n  getQuaternion() {\n    const q = new Quaternion();\n\n    switch (this[4]) {\n      case RotationOrder.XYZ:\n        return q.rotateX(this[0]).rotateY(this[1]).rotateZ(this[2]);\n\n      case RotationOrder.YXZ:\n        return q.rotateY(this[0]).rotateX(this[1]).rotateZ(this[2]);\n\n      case RotationOrder.ZXY:\n        return q.rotateZ(this[0]).rotateX(this[1]).rotateY(this[2]);\n\n      case RotationOrder.ZYX:\n        return q.rotateZ(this[0]).rotateY(this[1]).rotateX(this[2]);\n\n      case RotationOrder.YZX:\n        return q.rotateY(this[0]).rotateZ(this[1]).rotateX(this[2]);\n\n      case RotationOrder.XZY:\n        return q.rotateX(this[0]).rotateZ(this[1]).rotateY(this[2]);\n\n      default:\n        throw new Error(ERR_UNKNOWN_ORDER);\n    }\n  }\n\n  _fromRotationMatrix(m, order = Euler.DefaultOrder) {\n    const m11 = m[0],\n          m12 = m[4],\n          m13 = m[8];\n    const m21 = m[1],\n          m22 = m[5],\n          m23 = m[9];\n    const m31 = m[2],\n          m32 = m[6],\n          m33 = m[10];\n    order = order || this[3];\n\n    switch (order) {\n      case Euler.XYZ:\n        this[1] = Math.asin(clamp(m13, -1, 1));\n\n        if (Math.abs(m13) < ALMOST_ONE) {\n          this[0] = Math.atan2(-m23, m33);\n          this[2] = Math.atan2(-m12, m11);\n        } else {\n          this[0] = Math.atan2(m32, m22);\n          this[2] = 0;\n        }\n\n        break;\n\n      case Euler.YXZ:\n        this[0] = Math.asin(-clamp(m23, -1, 1));\n\n        if (Math.abs(m23) < ALMOST_ONE) {\n          this[1] = Math.atan2(m13, m33);\n          this[2] = Math.atan2(m21, m22);\n        } else {\n          this[1] = Math.atan2(-m31, m11);\n          this[2] = 0;\n        }\n\n        break;\n\n      case Euler.ZXY:\n        this[0] = Math.asin(clamp(m32, -1, 1));\n\n        if (Math.abs(m32) < ALMOST_ONE) {\n          this[1] = Math.atan2(-m31, m33);\n          this[2] = Math.atan2(-m12, m22);\n        } else {\n          this[1] = 0;\n          this[2] = Math.atan2(m21, m11);\n        }\n\n        break;\n\n      case Euler.ZYX:\n        this[1] = Math.asin(-clamp(m31, -1, 1));\n\n        if (Math.abs(m31) < ALMOST_ONE) {\n          this[0] = Math.atan2(m32, m33);\n          this[2] = Math.atan2(m21, m11);\n        } else {\n          this[0] = 0;\n          this[2] = Math.atan2(-m12, m22);\n        }\n\n        break;\n\n      case Euler.YZX:\n        this[2] = Math.asin(clamp(m21, -1, 1));\n\n        if (Math.abs(m21) < ALMOST_ONE) {\n          this[0] = Math.atan2(-m23, m22);\n          this[1] = Math.atan2(-m31, m11);\n        } else {\n          this[0] = 0;\n          this[1] = Math.atan2(m13, m33);\n        }\n\n        break;\n\n      case Euler.XZY:\n        this[2] = Math.asin(-clamp(m12, -1, 1));\n\n        if (Math.abs(m12) < ALMOST_ONE) {\n          this[0] = Math.atan2(m32, m22);\n          this[1] = Math.atan2(m13, m11);\n        } else {\n          this[0] = Math.atan2(-m23, m33);\n          this[1] = 0;\n        }\n\n        break;\n\n      default:\n        throw new Error(ERR_UNKNOWN_ORDER);\n    }\n\n    this[3] = order;\n    return this;\n  }\n\n  _getRotationMatrix(result) {\n    const te = result || [-0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0];\n    const x = this.x,\n          y = this.y,\n          z = this.z;\n    const a = Math.cos(x);\n    const c = Math.cos(y);\n    const e = Math.cos(z);\n    const b = Math.sin(x);\n    const d = Math.sin(y);\n    const f = Math.sin(z);\n\n    switch (this[3]) {\n      case Euler.XYZ:\n        {\n          const ae = a * e,\n                af = a * f,\n                be = b * e,\n                bf = b * f;\n          te[0] = c * e;\n          te[4] = -c * f;\n          te[8] = d;\n          te[1] = af + be * d;\n          te[5] = ae - bf * d;\n          te[9] = -b * c;\n          te[2] = bf - ae * d;\n          te[6] = be + af * d;\n          te[10] = a * c;\n          break;\n        }\n\n      case Euler.YXZ:\n        {\n          const ce = c * e,\n                cf = c * f,\n                de = d * e,\n                df = d * f;\n          te[0] = ce + df * b;\n          te[4] = de * b - cf;\n          te[8] = a * d;\n          te[1] = a * f;\n          te[5] = a * e;\n          te[9] = -b;\n          te[2] = cf * b - de;\n          te[6] = df + ce * b;\n          te[10] = a * c;\n          break;\n        }\n\n      case Euler.ZXY:\n        {\n          const ce = c * e,\n                cf = c * f,\n                de = d * e,\n                df = d * f;\n          te[0] = ce - df * b;\n          te[4] = -a * f;\n          te[8] = de + cf * b;\n          te[1] = cf + de * b;\n          te[5] = a * e;\n          te[9] = df - ce * b;\n          te[2] = -a * d;\n          te[6] = b;\n          te[10] = a * c;\n          break;\n        }\n\n      case Euler.ZYX:\n        {\n          const ae = a * e,\n                af = a * f,\n                be = b * e,\n                bf = b * f;\n          te[0] = c * e;\n          te[4] = be * d - af;\n          te[8] = ae * d + bf;\n          te[1] = c * f;\n          te[5] = bf * d + ae;\n          te[9] = af * d - be;\n          te[2] = -d;\n          te[6] = b * c;\n          te[10] = a * c;\n          break;\n        }\n\n      case Euler.YZX:\n        {\n          const ac = a * c,\n                ad = a * d,\n                bc = b * c,\n                bd = b * d;\n          te[0] = c * e;\n          te[4] = bd - ac * f;\n          te[8] = bc * f + ad;\n          te[1] = f;\n          te[5] = a * e;\n          te[9] = -b * e;\n          te[2] = -d * e;\n          te[6] = ad * f + bc;\n          te[10] = ac - bd * f;\n          break;\n        }\n\n      case Euler.XZY:\n        {\n          const ac = a * c,\n                ad = a * d,\n                bc = b * c,\n                bd = b * d;\n          te[0] = c * e;\n          te[4] = -f;\n          te[8] = d * e;\n          te[1] = ac * f + bd;\n          te[5] = a * e;\n          te[9] = ad * f - bc;\n          te[2] = bc * f - ad;\n          te[6] = b * e;\n          te[10] = bd * f + ac;\n          break;\n        }\n\n      default:\n        throw new Error(ERR_UNKNOWN_ORDER);\n    }\n\n    te[3] = 0;\n    te[7] = 0;\n    te[11] = 0;\n    te[12] = 0;\n    te[13] = 0;\n    te[14] = 0;\n    te[15] = 1;\n    return te;\n  }\n\n  toQuaternion() {\n    const cy = Math.cos(this.yaw * 0.5);\n    const sy = Math.sin(this.yaw * 0.5);\n    const cr = Math.cos(this.roll * 0.5);\n    const sr = Math.sin(this.roll * 0.5);\n    const cp = Math.cos(this.pitch * 0.5);\n    const sp = Math.sin(this.pitch * 0.5);\n    const w = cy * cr * cp + sy * sr * sp;\n    const x = cy * sr * cp - sy * cr * sp;\n    const y = cy * cr * sp + sy * sr * cp;\n    const z = sy * cr * cp - cy * sr * sp;\n    return new Quaternion(x, y, z, w);\n  }\n\n}\n\nfunction validateOrder(value) {\n  return value >= 0 && value < 6;\n}\n\nfunction checkOrder(value) {\n  if (value < 0 && value >= 6) {\n    throw new Error(ERR_UNKNOWN_ORDER);\n  }\n\n  return value;\n}\n//# sourceMappingURL=euler.js.map","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport Matrix4 from './matrix4';\nimport Vector3 from './vector3';\nimport Euler from './euler';\nexport default class Pose {\n  constructor({\n    x = 0,\n    y = 0,\n    z = 0,\n    roll = 0,\n    pitch = 0,\n    yaw = 0,\n    position,\n    orientation\n  } = {}) {\n    _defineProperty(this, \"position\", void 0);\n\n    _defineProperty(this, \"orientation\", void 0);\n\n    if (Array.isArray(position) && position.length === 3) {\n      this.position = new Vector3(position);\n    } else {\n      this.position = new Vector3(x, y, z);\n    }\n\n    if (Array.isArray(orientation) && orientation.length === 4) {\n      this.orientation = new Euler(orientation, orientation[3]);\n    } else {\n      this.orientation = new Euler(roll, pitch, yaw, Euler.RollPitchYaw);\n    }\n  }\n\n  get x() {\n    return this.position.x;\n  }\n\n  set x(value) {\n    this.position.x = value;\n  }\n\n  get y() {\n    return this.position.y;\n  }\n\n  set y(value) {\n    this.position.y = value;\n  }\n\n  get z() {\n    return this.position.z;\n  }\n\n  set z(value) {\n    this.position.z = value;\n  }\n\n  get roll() {\n    return this.orientation.roll;\n  }\n\n  set roll(value) {\n    this.orientation.roll = value;\n  }\n\n  get pitch() {\n    return this.orientation.pitch;\n  }\n\n  set pitch(value) {\n    this.orientation.pitch = value;\n  }\n\n  get yaw() {\n    return this.orientation.yaw;\n  }\n\n  set yaw(value) {\n    this.orientation.yaw = value;\n  }\n\n  getPosition() {\n    return this.position;\n  }\n\n  getOrientation() {\n    return this.orientation;\n  }\n\n  equals(pose) {\n    if (!pose) {\n      return false;\n    }\n\n    return this.position.equals(pose.position) && this.orientation.equals(pose.orientation);\n  }\n\n  exactEquals(pose) {\n    if (!pose) {\n      return false;\n    }\n\n    return this.position.exactEquals(pose.position) && this.orientation.exactEquals(pose.orientation);\n  }\n\n  getTransformationMatrix() {\n    const sr = Math.sin(this.roll);\n    const sp = Math.sin(this.pitch);\n    const sw = Math.sin(this.yaw);\n    const cr = Math.cos(this.roll);\n    const cp = Math.cos(this.pitch);\n    const cw = Math.cos(this.yaw);\n    return new Matrix4().setRowMajor(cw * cp, -sw * cr + cw * sp * sr, sw * sr + cw * sp * cr, this.x, sw * cp, cw * cr + sw * sp * sr, -cw * sr + sw * sp * cr, this.y, -sp, cp * sr, cp * cr, this.z, 0, 0, 0, 1);\n  }\n\n  getTransformationMatrixFromPose(pose) {\n    return new Matrix4().multiplyRight(this.getTransformationMatrix()).multiplyRight(pose.getTransformationMatrix().invert());\n  }\n\n  getTransformationMatrixToPose(pose) {\n    return new Matrix4().multiplyRight(pose.getTransformationMatrix()).multiplyRight(this.getTransformationMatrix().invert());\n  }\n\n}\n//# sourceMappingURL=pose.js.map","var safeIsNaN = Number.isNaN ||\n    function ponyfill(value) {\n        return typeof value === 'number' && value !== value;\n    };\nfunction isEqual(first, second) {\n    if (first === second) {\n        return true;\n    }\n    if (safeIsNaN(first) && safeIsNaN(second)) {\n        return true;\n    }\n    return false;\n}\nfunction areInputsEqual(newInputs, lastInputs) {\n    if (newInputs.length !== lastInputs.length) {\n        return false;\n    }\n    for (var i = 0; i < newInputs.length; i++) {\n        if (!isEqual(newInputs[i], lastInputs[i])) {\n            return false;\n        }\n    }\n    return true;\n}\n\nfunction memoizeOne(resultFn, isEqual) {\n    if (isEqual === void 0) { isEqual = areInputsEqual; }\n    var lastThis;\n    var lastArgs = [];\n    var lastResult;\n    var calledOnce = false;\n    function memoized() {\n        var newArgs = [];\n        for (var _i = 0; _i < arguments.length; _i++) {\n            newArgs[_i] = arguments[_i];\n        }\n        if (calledOnce && lastThis === this && isEqual(newArgs, lastArgs)) {\n            return lastResult;\n        }\n        lastResult = resultFn.apply(this, newArgs);\n        calledOnce = true;\n        lastThis = this;\n        lastArgs = newArgs;\n        return lastResult;\n    }\n    return memoized;\n}\n\nexport default memoizeOne;\n","\"use strict\";\n\n/* eslint-env browser */\n/*\n  eslint-disable\n  no-console,\n  func-names\n*/\n\n/** @typedef {any} TODO */\n\nvar normalizeUrl = require(\"./normalize-url\");\nvar srcByModuleId = Object.create(null);\nvar noDocument = typeof document === \"undefined\";\nvar forEach = Array.prototype.forEach;\n\n/**\n * @param {function} fn\n * @param {number} time\n * @returns {(function(): void)|*}\n */\nfunction debounce(fn, time) {\n  var timeout = 0;\n  return function () {\n    // @ts-ignore\n    var self = this;\n    // eslint-disable-next-line prefer-rest-params\n    var args = arguments;\n    var functionCall = function functionCall() {\n      return fn.apply(self, args);\n    };\n    clearTimeout(timeout);\n\n    // @ts-ignore\n    timeout = setTimeout(functionCall, time);\n  };\n}\nfunction noop() {}\n\n/**\n * @param {TODO} moduleId\n * @returns {TODO}\n */\nfunction getCurrentScriptUrl(moduleId) {\n  var src = srcByModuleId[moduleId];\n  if (!src) {\n    if (document.currentScript) {\n      src = ( /** @type {HTMLScriptElement} */document.currentScript).src;\n    } else {\n      var scripts = document.getElementsByTagName(\"script\");\n      var lastScriptTag = scripts[scripts.length - 1];\n      if (lastScriptTag) {\n        src = lastScriptTag.src;\n      }\n    }\n    srcByModuleId[moduleId] = src;\n  }\n\n  /**\n   * @param {string} fileMap\n   * @returns {null | string[]}\n   */\n  return function (fileMap) {\n    if (!src) {\n      return null;\n    }\n    var splitResult = src.split(/([^\\\\/]+)\\.js$/);\n    var filename = splitResult && splitResult[1];\n    if (!filename) {\n      return [src.replace(\".js\", \".css\")];\n    }\n    if (!fileMap) {\n      return [src.replace(\".js\", \".css\")];\n    }\n    return fileMap.split(\",\").map(function (mapRule) {\n      var reg = new RegExp(\"\".concat(filename, \"\\\\.js$\"), \"g\");\n      return normalizeUrl(src.replace(reg, \"\".concat(mapRule.replace(/{fileName}/g, filename), \".css\")));\n    });\n  };\n}\n\n/**\n * @param {TODO} el\n * @param {string} [url]\n */\nfunction updateCss(el, url) {\n  if (!url) {\n    if (!el.href) {\n      return;\n    }\n\n    // eslint-disable-next-line\n    url = el.href.split(\"?\")[0];\n  }\n  if (!isUrlRequest( /** @type {string} */url)) {\n    return;\n  }\n  if (el.isLoaded === false) {\n    // We seem to be about to replace a css link that hasn't loaded yet.\n    // We're probably changing the same file more than once.\n    return;\n  }\n  if (!url || !(url.indexOf(\".css\") > -1)) {\n    return;\n  }\n\n  // eslint-disable-next-line no-param-reassign\n  el.visited = true;\n  var newEl = el.cloneNode();\n  newEl.isLoaded = false;\n  newEl.addEventListener(\"load\", function () {\n    if (newEl.isLoaded) {\n      return;\n    }\n    newEl.isLoaded = true;\n    el.parentNode.removeChild(el);\n  });\n  newEl.addEventListener(\"error\", function () {\n    if (newEl.isLoaded) {\n      return;\n    }\n    newEl.isLoaded = true;\n    el.parentNode.removeChild(el);\n  });\n  newEl.href = \"\".concat(url, \"?\").concat(Date.now());\n  if (el.nextSibling) {\n    el.parentNode.insertBefore(newEl, el.nextSibling);\n  } else {\n    el.parentNode.appendChild(newEl);\n  }\n}\n\n/**\n * @param {string} href\n * @param {TODO} src\n * @returns {TODO}\n */\nfunction getReloadUrl(href, src) {\n  var ret;\n\n  // eslint-disable-next-line no-param-reassign\n  href = normalizeUrl(href);\n  src.some(\n  /**\n   * @param {string} url\n   */\n  // eslint-disable-next-line array-callback-return\n  function (url) {\n    if (href.indexOf(src) > -1) {\n      ret = url;\n    }\n  });\n  return ret;\n}\n\n/**\n * @param {string} [src]\n * @returns {boolean}\n */\nfunction reloadStyle(src) {\n  if (!src) {\n    return false;\n  }\n  var elements = document.querySelectorAll(\"link\");\n  var loaded = false;\n  forEach.call(elements, function (el) {\n    if (!el.href) {\n      return;\n    }\n    var url = getReloadUrl(el.href, src);\n    if (!isUrlRequest(url)) {\n      return;\n    }\n    if (el.visited === true) {\n      return;\n    }\n    if (url) {\n      updateCss(el, url);\n      loaded = true;\n    }\n  });\n  return loaded;\n}\nfunction reloadAll() {\n  var elements = document.querySelectorAll(\"link\");\n  forEach.call(elements, function (el) {\n    if (el.visited === true) {\n      return;\n    }\n    updateCss(el);\n  });\n}\n\n/**\n * @param {string} url\n * @returns {boolean}\n */\nfunction isUrlRequest(url) {\n  // An URL is not an request if\n\n  // It is not http or https\n  if (!/^[a-zA-Z][a-zA-Z\\d+\\-.]*:/.test(url)) {\n    return false;\n  }\n  return true;\n}\n\n/**\n * @param {TODO} moduleId\n * @param {TODO} options\n * @returns {TODO}\n */\nmodule.exports = function (moduleId, options) {\n  if (noDocument) {\n    console.log(\"no window.document found, will not HMR CSS\");\n    return noop;\n  }\n  var getScriptSrc = getCurrentScriptUrl(moduleId);\n  function update() {\n    var src = getScriptSrc(options.filename);\n    var reloaded = reloadStyle(src);\n    if (options.locals) {\n      console.log(\"[HMR] Detected local css modules. Reload all css\");\n      reloadAll();\n      return;\n    }\n    if (reloaded) {\n      console.log(\"[HMR] css reload %s\", src.join(\" \"));\n    } else {\n      console.log(\"[HMR] Reload all css\");\n      reloadAll();\n    }\n  }\n  return debounce(update, 50);\n};","\"use strict\";\n\n/* eslint-disable */\n\n/**\n * @param {string[]} pathComponents\n * @returns {string}\n */\nfunction normalizeUrl(pathComponents) {\n  return pathComponents.reduce(function (accumulator, item) {\n    switch (item) {\n      case \"..\":\n        accumulator.pop();\n        break;\n      case \".\":\n        break;\n      default:\n        accumulator.push(item);\n    }\n    return accumulator;\n  }, /** @type {string[]} */[]).join(\"/\");\n}\n\n/**\n * @param {string} urlString\n * @returns {string}\n */\nmodule.exports = function (urlString) {\n  urlString = urlString.trim();\n  if (/^data:/i.test(urlString)) {\n    return urlString;\n  }\n  var protocol = urlString.indexOf(\"//\") !== -1 ? urlString.split(\"//\")[0] + \"//\" : \"\";\n  var components = urlString.replace(new RegExp(protocol, \"i\"), \"\").split(\"/\");\n  var host = components[0].toLowerCase().replace(/\\.$/, \"\");\n  components[0] = \"\";\n  var path = normalizeUrl(components);\n  return protocol + host + path;\n};","// extracted by mini-css-extract-plugin\nexport {};\n    if(module.hot) {\n      // 1791547744490\n      var cssReload = require(\"../../mini-css-extract-plugin/dist/hmr/hotModuleReplacement.js\")(module.id, {\"locals\":false});\n      module.hot.dispose(cssReload);\n      module.hot.accept(undefined, cssReload);\n    }\n  ","// extracted by mini-css-extract-plugin\nexport {};\n    if(module.hot) {\n      // 1791547749774\n      var cssReload = require(\"../../mini-css-extract-plugin/dist/hmr/hotModuleReplacement.js\")(module.id, {\"locals\":false});\n      module.hot.dispose(cssReload);\n      module.hot.accept(undefined, cssReload);\n    }\n  ","// extracted by mini-css-extract-plugin\nexport {};\n    if(module.hot) {\n      // 1791547744482\n      var cssReload = require(\"../../mini-css-extract-plugin/dist/hmr/hotModuleReplacement.js\")(module.id, {\"locals\":false});\n      module.hot.dispose(cssReload);\n      module.hot.accept(undefined, cssReload);\n    }\n  ","// extracted by mini-css-extract-plugin\nexport {};\n    if(module.hot) {\n      // 1791547746688\n      var cssReload = require(\"../../mini-css-extract-plugin/dist/hmr/hotModuleReplacement.js\")(module.id, {\"locals\":false});\n      module.hot.dispose(cssReload);\n      module.hot.accept(undefined, cssReload);\n    }\n  ","// extracted by mini-css-extract-plugin\nexport {};\n    if(module.hot) {\n      // 1791547739923\n      var cssReload = require(\"../../mini-css-extract-plugin/dist/hmr/hotModuleReplacement.js\")(module.id, {\"locals\":false});\n      module.hot.dispose(cssReload);\n      module.hot.accept(undefined, cssReload);\n    }\n  ","'use strict';\n\nvar Config = {\n    DEBUG: false,\n    LIB_VERSION: '2.47.0'\n};\n\n// since es6 imports are static and we run unit tests from the console, window won't be defined when importing this file\nvar window$1;\nif (typeof(window) === 'undefined') {\n    var loc = {\n        hostname: ''\n    };\n    window$1 = {\n        navigator: { userAgent: '' },\n        document: {\n            location: loc,\n            referrer: ''\n        },\n        screen: { width: 0, height: 0 },\n        location: loc\n    };\n} else {\n    window$1 = window;\n}\n\n/*\n * Saved references to long variable names, so that closure compiler can\n * minimize file size.\n */\n\nvar ArrayProto = Array.prototype;\nvar FuncProto = Function.prototype;\nvar ObjProto = Object.prototype;\nvar slice = ArrayProto.slice;\nvar toString = ObjProto.toString;\nvar hasOwnProperty = ObjProto.hasOwnProperty;\nvar windowConsole = window$1.console;\nvar navigator = window$1.navigator;\nvar document$1 = window$1.document;\nvar windowOpera = window$1.opera;\nvar screen = window$1.screen;\nvar userAgent = navigator.userAgent;\nvar nativeBind = FuncProto.bind;\nvar nativeForEach = ArrayProto.forEach;\nvar nativeIndexOf = ArrayProto.indexOf;\nvar nativeMap = ArrayProto.map;\nvar nativeIsArray = Array.isArray;\nvar breaker = {};\nvar _ = {\n    trim: function(str) {\n        // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/Trim#Polyfill\n        return str.replace(/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g, '');\n    }\n};\n\n// Console override\nvar console = {\n    /** @type {function(...*)} */\n    log: function() {\n        if (Config.DEBUG && !_.isUndefined(windowConsole) && windowConsole) {\n            try {\n                windowConsole.log.apply(windowConsole, arguments);\n            } catch (err) {\n                _.each(arguments, function(arg) {\n                    windowConsole.log(arg);\n                });\n            }\n        }\n    },\n    /** @type {function(...*)} */\n    warn: function() {\n        if (Config.DEBUG && !_.isUndefined(windowConsole) && windowConsole) {\n            var args = ['Mixpanel warning:'].concat(_.toArray(arguments));\n            try {\n                windowConsole.warn.apply(windowConsole, args);\n            } catch (err) {\n                _.each(args, function(arg) {\n                    windowConsole.warn(arg);\n                });\n            }\n        }\n    },\n    /** @type {function(...*)} */\n    error: function() {\n        if (Config.DEBUG && !_.isUndefined(windowConsole) && windowConsole) {\n            var args = ['Mixpanel error:'].concat(_.toArray(arguments));\n            try {\n                windowConsole.error.apply(windowConsole, args);\n            } catch (err) {\n                _.each(args, function(arg) {\n                    windowConsole.error(arg);\n                });\n            }\n        }\n    },\n    /** @type {function(...*)} */\n    critical: function() {\n        if (!_.isUndefined(windowConsole) && windowConsole) {\n            var args = ['Mixpanel error:'].concat(_.toArray(arguments));\n            try {\n                windowConsole.error.apply(windowConsole, args);\n            } catch (err) {\n                _.each(args, function(arg) {\n                    windowConsole.error(arg);\n                });\n            }\n        }\n    }\n};\n\nvar log_func_with_prefix = function(func, prefix) {\n    return function() {\n        arguments[0] = '[' + prefix + '] ' + arguments[0];\n        return func.apply(console, arguments);\n    };\n};\nvar console_with_prefix = function(prefix) {\n    return {\n        log: log_func_with_prefix(console.log, prefix),\n        error: log_func_with_prefix(console.error, prefix),\n        critical: log_func_with_prefix(console.critical, prefix)\n    };\n};\n\n\n// UNDERSCORE\n// Embed part of the Underscore Library\n_.bind = function(func, context) {\n    var args, bound;\n    if (nativeBind && func.bind === nativeBind) {\n        return nativeBind.apply(func, slice.call(arguments, 1));\n    }\n    if (!_.isFunction(func)) {\n        throw new TypeError();\n    }\n    args = slice.call(arguments, 2);\n    bound = function() {\n        if (!(this instanceof bound)) {\n            return func.apply(context, args.concat(slice.call(arguments)));\n        }\n        var ctor = {};\n        ctor.prototype = func.prototype;\n        var self = new ctor();\n        ctor.prototype = null;\n        var result = func.apply(self, args.concat(slice.call(arguments)));\n        if (Object(result) === result) {\n            return result;\n        }\n        return self;\n    };\n    return bound;\n};\n\n/**\n * @param {*=} obj\n * @param {function(...*)=} iterator\n * @param {Object=} context\n */\n_.each = function(obj, iterator, context) {\n    if (obj === null || obj === undefined) {\n        return;\n    }\n    if (nativeForEach && obj.forEach === nativeForEach) {\n        obj.forEach(iterator, context);\n    } else if (obj.length === +obj.length) {\n        for (var i = 0, l = obj.length; i < l; i++) {\n            if (i in obj && iterator.call(context, obj[i], i, obj) === breaker) {\n                return;\n            }\n        }\n    } else {\n        for (var key in obj) {\n            if (hasOwnProperty.call(obj, key)) {\n                if (iterator.call(context, obj[key], key, obj) === breaker) {\n                    return;\n                }\n            }\n        }\n    }\n};\n\n_.extend = function(obj) {\n    _.each(slice.call(arguments, 1), function(source) {\n        for (var prop in source) {\n            if (source[prop] !== void 0) {\n                obj[prop] = source[prop];\n            }\n        }\n    });\n    return obj;\n};\n\n_.isArray = nativeIsArray || function(obj) {\n    return toString.call(obj) === '[object Array]';\n};\n\n// from a comment on http://dbj.org/dbj/?p=286\n// fails on only one very rare and deliberate custom object:\n// var bomb = { toString : undefined, valueOf: function(o) { return \"function BOMBA!\"; }};\n_.isFunction = function(f) {\n    try {\n        return /^\\s*\\bfunction\\b/.test(f);\n    } catch (x) {\n        return false;\n    }\n};\n\n_.isArguments = function(obj) {\n    return !!(obj && hasOwnProperty.call(obj, 'callee'));\n};\n\n_.toArray = function(iterable) {\n    if (!iterable) {\n        return [];\n    }\n    if (iterable.toArray) {\n        return iterable.toArray();\n    }\n    if (_.isArray(iterable)) {\n        return slice.call(iterable);\n    }\n    if (_.isArguments(iterable)) {\n        return slice.call(iterable);\n    }\n    return _.values(iterable);\n};\n\n_.map = function(arr, callback, context) {\n    if (nativeMap && arr.map === nativeMap) {\n        return arr.map(callback, context);\n    } else {\n        var results = [];\n        _.each(arr, function(item) {\n            results.push(callback.call(context, item));\n        });\n        return results;\n    }\n};\n\n_.keys = function(obj) {\n    var results = [];\n    if (obj === null) {\n        return results;\n    }\n    _.each(obj, function(value, key) {\n        results[results.length] = key;\n    });\n    return results;\n};\n\n_.values = function(obj) {\n    var results = [];\n    if (obj === null) {\n        return results;\n    }\n    _.each(obj, function(value) {\n        results[results.length] = value;\n    });\n    return results;\n};\n\n_.include = function(obj, target) {\n    var found = false;\n    if (obj === null) {\n        return found;\n    }\n    if (nativeIndexOf && obj.indexOf === nativeIndexOf) {\n        return obj.indexOf(target) != -1;\n    }\n    _.each(obj, function(value) {\n        if (found || (found = (value === target))) {\n            return breaker;\n        }\n    });\n    return found;\n};\n\n_.includes = function(str, needle) {\n    return str.indexOf(needle) !== -1;\n};\n\n// Underscore Addons\n_.inherit = function(subclass, superclass) {\n    subclass.prototype = new superclass();\n    subclass.prototype.constructor = subclass;\n    subclass.superclass = superclass.prototype;\n    return subclass;\n};\n\n_.isObject = function(obj) {\n    return (obj === Object(obj) && !_.isArray(obj));\n};\n\n_.isEmptyObject = function(obj) {\n    if (_.isObject(obj)) {\n        for (var key in obj) {\n            if (hasOwnProperty.call(obj, key)) {\n                return false;\n            }\n        }\n        return true;\n    }\n    return false;\n};\n\n_.isUndefined = function(obj) {\n    return obj === void 0;\n};\n\n_.isString = function(obj) {\n    return toString.call(obj) == '[object String]';\n};\n\n_.isDate = function(obj) {\n    return toString.call(obj) == '[object Date]';\n};\n\n_.isNumber = function(obj) {\n    return toString.call(obj) == '[object Number]';\n};\n\n_.isElement = function(obj) {\n    return !!(obj && obj.nodeType === 1);\n};\n\n_.encodeDates = function(obj) {\n    _.each(obj, function(v, k) {\n        if (_.isDate(v)) {\n            obj[k] = _.formatDate(v);\n        } else if (_.isObject(v)) {\n            obj[k] = _.encodeDates(v); // recurse\n        }\n    });\n    return obj;\n};\n\n_.timestamp = function() {\n    Date.now = Date.now || function() {\n        return +new Date;\n    };\n    return Date.now();\n};\n\n_.formatDate = function(d) {\n    // YYYY-MM-DDTHH:MM:SS in UTC\n    function pad(n) {\n        return n < 10 ? '0' + n : n;\n    }\n    return d.getUTCFullYear() + '-' +\n        pad(d.getUTCMonth() + 1) + '-' +\n        pad(d.getUTCDate()) + 'T' +\n        pad(d.getUTCHours()) + ':' +\n        pad(d.getUTCMinutes()) + ':' +\n        pad(d.getUTCSeconds());\n};\n\n_.strip_empty_properties = function(p) {\n    var ret = {};\n    _.each(p, function(v, k) {\n        if (_.isString(v) && v.length > 0) {\n            ret[k] = v;\n        }\n    });\n    return ret;\n};\n\n/*\n * this function returns a copy of object after truncating it.  If\n * passed an Array or Object it will iterate through obj and\n * truncate all the values recursively.\n */\n_.truncate = function(obj, length) {\n    var ret;\n\n    if (typeof(obj) === 'string') {\n        ret = obj.slice(0, length);\n    } else if (_.isArray(obj)) {\n        ret = [];\n        _.each(obj, function(val) {\n            ret.push(_.truncate(val, length));\n        });\n    } else if (_.isObject(obj)) {\n        ret = {};\n        _.each(obj, function(val, key) {\n            ret[key] = _.truncate(val, length);\n        });\n    } else {\n        ret = obj;\n    }\n\n    return ret;\n};\n\n_.JSONEncode = (function() {\n    return function(mixed_val) {\n        var value = mixed_val;\n        var quote = function(string) {\n            var escapable = /[\\\\\"\\x00-\\x1f\\x7f-\\x9f\\u00ad\\u0600-\\u0604\\u070f\\u17b4\\u17b5\\u200c-\\u200f\\u2028-\\u202f\\u2060-\\u206f\\ufeff\\ufff0-\\uffff]/g; // eslint-disable-line no-control-regex\n            var meta = { // table of character substitutions\n                '\\b': '\\\\b',\n                '\\t': '\\\\t',\n                '\\n': '\\\\n',\n                '\\f': '\\\\f',\n                '\\r': '\\\\r',\n                '\"': '\\\\\"',\n                '\\\\': '\\\\\\\\'\n            };\n\n            escapable.lastIndex = 0;\n            return escapable.test(string) ?\n                '\"' + string.replace(escapable, function(a) {\n                    var c = meta[a];\n                    return typeof c === 'string' ? c :\n                        '\\\\u' + ('0000' + a.charCodeAt(0).toString(16)).slice(-4);\n                }) + '\"' :\n                '\"' + string + '\"';\n        };\n\n        var str = function(key, holder) {\n            var gap = '';\n            var indent = '    ';\n            var i = 0; // The loop counter.\n            var k = ''; // The member key.\n            var v = ''; // The member value.\n            var length = 0;\n            var mind = gap;\n            var partial = [];\n            var value = holder[key];\n\n            // If the value has a toJSON method, call it to obtain a replacement value.\n            if (value && typeof value === 'object' &&\n                typeof value.toJSON === 'function') {\n                value = value.toJSON(key);\n            }\n\n            // What happens next depends on the value's type.\n            switch (typeof value) {\n                case 'string':\n                    return quote(value);\n\n                case 'number':\n                    // JSON numbers must be finite. Encode non-finite numbers as null.\n                    return isFinite(value) ? String(value) : 'null';\n\n                case 'boolean':\n                case 'null':\n                    // If the value is a boolean or null, convert it to a string. Note:\n                    // typeof null does not produce 'null'. The case is included here in\n                    // the remote chance that this gets fixed someday.\n\n                    return String(value);\n\n                case 'object':\n                    // If the type is 'object', we might be dealing with an object or an array or\n                    // null.\n                    // Due to a specification blunder in ECMAScript, typeof null is 'object',\n                    // so watch out for that case.\n                    if (!value) {\n                        return 'null';\n                    }\n\n                    // Make an array to hold the partial results of stringifying this object value.\n                    gap += indent;\n                    partial = [];\n\n                    // Is the value an array?\n                    if (toString.apply(value) === '[object Array]') {\n                        // The value is an array. Stringify every element. Use null as a placeholder\n                        // for non-JSON values.\n\n                        length = value.length;\n                        for (i = 0; i < length; i += 1) {\n                            partial[i] = str(i, value) || 'null';\n                        }\n\n                        // Join all of the elements together, separated with commas, and wrap them in\n                        // brackets.\n                        v = partial.length === 0 ? '[]' :\n                            gap ? '[\\n' + gap +\n                            partial.join(',\\n' + gap) + '\\n' +\n                            mind + ']' :\n                                '[' + partial.join(',') + ']';\n                        gap = mind;\n                        return v;\n                    }\n\n                    // Iterate through all of the keys in the object.\n                    for (k in value) {\n                        if (hasOwnProperty.call(value, k)) {\n                            v = str(k, value);\n                            if (v) {\n                                partial.push(quote(k) + (gap ? ': ' : ':') + v);\n                            }\n                        }\n                    }\n\n                    // Join all of the member texts together, separated with commas,\n                    // and wrap them in braces.\n                    v = partial.length === 0 ? '{}' :\n                        gap ? '{' + partial.join(',') + '' +\n                        mind + '}' : '{' + partial.join(',') + '}';\n                    gap = mind;\n                    return v;\n            }\n        };\n\n        // Make a fake root object containing our value under the key of ''.\n        // Return the result of stringifying the value.\n        return str('', {\n            '': value\n        });\n    };\n})();\n\n/**\n * From https://github.com/douglascrockford/JSON-js/blob/master/json_parse.js\n * Slightly modified to throw a real Error rather than a POJO\n */\n_.JSONDecode = (function() {\n    var at, // The index of the current character\n        ch, // The current character\n        escapee = {\n            '\"': '\"',\n            '\\\\': '\\\\',\n            '/': '/',\n            'b': '\\b',\n            'f': '\\f',\n            'n': '\\n',\n            'r': '\\r',\n            't': '\\t'\n        },\n        text,\n        error = function(m) {\n            var e = new SyntaxError(m);\n            e.at = at;\n            e.text = text;\n            throw e;\n        },\n        next = function(c) {\n            // If a c parameter is provided, verify that it matches the current character.\n            if (c && c !== ch) {\n                error('Expected \\'' + c + '\\' instead of \\'' + ch + '\\'');\n            }\n            // Get the next character. When there are no more characters,\n            // return the empty string.\n            ch = text.charAt(at);\n            at += 1;\n            return ch;\n        },\n        number = function() {\n            // Parse a number value.\n            var number,\n                string = '';\n\n            if (ch === '-') {\n                string = '-';\n                next('-');\n            }\n            while (ch >= '0' && ch <= '9') {\n                string += ch;\n                next();\n            }\n            if (ch === '.') {\n                string += '.';\n                while (next() && ch >= '0' && ch <= '9') {\n                    string += ch;\n                }\n            }\n            if (ch === 'e' || ch === 'E') {\n                string += ch;\n                next();\n                if (ch === '-' || ch === '+') {\n                    string += ch;\n                    next();\n                }\n                while (ch >= '0' && ch <= '9') {\n                    string += ch;\n                    next();\n                }\n            }\n            number = +string;\n            if (!isFinite(number)) {\n                error('Bad number');\n            } else {\n                return number;\n            }\n        },\n\n        string = function() {\n            // Parse a string value.\n            var hex,\n                i,\n                string = '',\n                uffff;\n            // When parsing for string values, we must look for \" and \\ characters.\n            if (ch === '\"') {\n                while (next()) {\n                    if (ch === '\"') {\n                        next();\n                        return string;\n                    }\n                    if (ch === '\\\\') {\n                        next();\n                        if (ch === 'u') {\n                            uffff = 0;\n                            for (i = 0; i < 4; i += 1) {\n                                hex = parseInt(next(), 16);\n                                if (!isFinite(hex)) {\n                                    break;\n                                }\n                                uffff = uffff * 16 + hex;\n                            }\n                            string += String.fromCharCode(uffff);\n                        } else if (typeof escapee[ch] === 'string') {\n                            string += escapee[ch];\n                        } else {\n                            break;\n                        }\n                    } else {\n                        string += ch;\n                    }\n                }\n            }\n            error('Bad string');\n        },\n        white = function() {\n            // Skip whitespace.\n            while (ch && ch <= ' ') {\n                next();\n            }\n        },\n        word = function() {\n            // true, false, or null.\n            switch (ch) {\n                case 't':\n                    next('t');\n                    next('r');\n                    next('u');\n                    next('e');\n                    return true;\n                case 'f':\n                    next('f');\n                    next('a');\n                    next('l');\n                    next('s');\n                    next('e');\n                    return false;\n                case 'n':\n                    next('n');\n                    next('u');\n                    next('l');\n                    next('l');\n                    return null;\n            }\n            error('Unexpected \"' + ch + '\"');\n        },\n        value, // Placeholder for the value function.\n        array = function() {\n            // Parse an array value.\n            var array = [];\n\n            if (ch === '[') {\n                next('[');\n                white();\n                if (ch === ']') {\n                    next(']');\n                    return array; // empty array\n                }\n                while (ch) {\n                    array.push(value());\n                    white();\n                    if (ch === ']') {\n                        next(']');\n                        return array;\n                    }\n                    next(',');\n                    white();\n                }\n            }\n            error('Bad array');\n        },\n        object = function() {\n            // Parse an object value.\n            var key,\n                object = {};\n\n            if (ch === '{') {\n                next('{');\n                white();\n                if (ch === '}') {\n                    next('}');\n                    return object; // empty object\n                }\n                while (ch) {\n                    key = string();\n                    white();\n                    next(':');\n                    if (Object.hasOwnProperty.call(object, key)) {\n                        error('Duplicate key \"' + key + '\"');\n                    }\n                    object[key] = value();\n                    white();\n                    if (ch === '}') {\n                        next('}');\n                        return object;\n                    }\n                    next(',');\n                    white();\n                }\n            }\n            error('Bad object');\n        };\n\n    value = function() {\n        // Parse a JSON value. It could be an object, an array, a string,\n        // a number, or a word.\n        white();\n        switch (ch) {\n            case '{':\n                return object();\n            case '[':\n                return array();\n            case '\"':\n                return string();\n            case '-':\n                return number();\n            default:\n                return ch >= '0' && ch <= '9' ? number() : word();\n        }\n    };\n\n    // Return the json_parse function. It will have access to all of the\n    // above functions and variables.\n    return function(source) {\n        var result;\n\n        text = source;\n        at = 0;\n        ch = ' ';\n        result = value();\n        white();\n        if (ch) {\n            error('Syntax error');\n        }\n\n        return result;\n    };\n})();\n\n_.base64Encode = function(data) {\n    var b64 = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';\n    var o1, o2, o3, h1, h2, h3, h4, bits, i = 0,\n        ac = 0,\n        enc = '',\n        tmp_arr = [];\n\n    if (!data) {\n        return data;\n    }\n\n    data = _.utf8Encode(data);\n\n    do { // pack three octets into four hexets\n        o1 = data.charCodeAt(i++);\n        o2 = data.charCodeAt(i++);\n        o3 = data.charCodeAt(i++);\n\n        bits = o1 << 16 | o2 << 8 | o3;\n\n        h1 = bits >> 18 & 0x3f;\n        h2 = bits >> 12 & 0x3f;\n        h3 = bits >> 6 & 0x3f;\n        h4 = bits & 0x3f;\n\n        // use hexets to index into b64, and append result to encoded string\n        tmp_arr[ac++] = b64.charAt(h1) + b64.charAt(h2) + b64.charAt(h3) + b64.charAt(h4);\n    } while (i < data.length);\n\n    enc = tmp_arr.join('');\n\n    switch (data.length % 3) {\n        case 1:\n            enc = enc.slice(0, -2) + '==';\n            break;\n        case 2:\n            enc = enc.slice(0, -1) + '=';\n            break;\n    }\n\n    return enc;\n};\n\n_.utf8Encode = function(string) {\n    string = (string + '').replace(/\\r\\n/g, '\\n').replace(/\\r/g, '\\n');\n\n    var utftext = '',\n        start,\n        end;\n    var stringl = 0,\n        n;\n\n    start = end = 0;\n    stringl = string.length;\n\n    for (n = 0; n < stringl; n++) {\n        var c1 = string.charCodeAt(n);\n        var enc = null;\n\n        if (c1 < 128) {\n            end++;\n        } else if ((c1 > 127) && (c1 < 2048)) {\n            enc = String.fromCharCode((c1 >> 6) | 192, (c1 & 63) | 128);\n        } else {\n            enc = String.fromCharCode((c1 >> 12) | 224, ((c1 >> 6) & 63) | 128, (c1 & 63) | 128);\n        }\n        if (enc !== null) {\n            if (end > start) {\n                utftext += string.substring(start, end);\n            }\n            utftext += enc;\n            start = end = n + 1;\n        }\n    }\n\n    if (end > start) {\n        utftext += string.substring(start, string.length);\n    }\n\n    return utftext;\n};\n\n_.UUID = (function() {\n\n    // Time-based entropy\n    var T = function() {\n        var time = 1 * new Date(); // cross-browser version of Date.now()\n        var ticks;\n        if (window$1.performance && window$1.performance.now) {\n            ticks = window$1.performance.now();\n        } else {\n            // fall back to busy loop\n            ticks = 0;\n\n            // this while loop figures how many browser ticks go by\n            // before 1*new Date() returns a new number, ie the amount\n            // of ticks that go by per millisecond\n            while (time == 1 * new Date()) {\n                ticks++;\n            }\n        }\n        return time.toString(16) + Math.floor(ticks).toString(16);\n    };\n\n    // Math.Random entropy\n    var R = function() {\n        return Math.random().toString(16).replace('.', '');\n    };\n\n    // User agent entropy\n    // This function takes the user agent string, and then xors\n    // together each sequence of 8 bytes.  This produces a final\n    // sequence of 8 bytes which it returns as hex.\n    var UA = function() {\n        var ua = userAgent,\n            i, ch, buffer = [],\n            ret = 0;\n\n        function xor(result, byte_array) {\n            var j, tmp = 0;\n            for (j = 0; j < byte_array.length; j++) {\n                tmp |= (buffer[j] << j * 8);\n            }\n            return result ^ tmp;\n        }\n\n        for (i = 0; i < ua.length; i++) {\n            ch = ua.charCodeAt(i);\n            buffer.unshift(ch & 0xFF);\n            if (buffer.length >= 4) {\n                ret = xor(ret, buffer);\n                buffer = [];\n            }\n        }\n\n        if (buffer.length > 0) {\n            ret = xor(ret, buffer);\n        }\n\n        return ret.toString(16);\n    };\n\n    return function() {\n        var se = (screen.height * screen.width).toString(16);\n        return (T() + '-' + R() + '-' + UA() + '-' + se + '-' + T());\n    };\n})();\n\n// _.isBlockedUA()\n// This is to block various web spiders from executing our JS and\n// sending false tracking data\nvar BLOCKED_UA_STRS = [\n    'ahrefsbot',\n    'baiduspider',\n    'bingbot',\n    'bingpreview',\n    'facebookexternal',\n    'petalbot',\n    'pinterest',\n    'screaming frog',\n    'yahoo! slurp',\n    'yandexbot',\n\n    // a whole bunch of goog-specific crawlers\n    // https://developers.google.com/search/docs/advanced/crawling/overview-google-crawlers\n    'adsbot-google',\n    'apis-google',\n    'duplexweb-google',\n    'feedfetcher-google',\n    'google favicon',\n    'google web preview',\n    'google-read-aloud',\n    'googlebot',\n    'googleweblight',\n    'mediapartners-google',\n    'storebot-google'\n];\n_.isBlockedUA = function(ua) {\n    var i;\n    ua = ua.toLowerCase();\n    for (i = 0; i < BLOCKED_UA_STRS.length; i++) {\n        if (ua.indexOf(BLOCKED_UA_STRS[i]) !== -1) {\n            return true;\n        }\n    }\n    return false;\n};\n\n/**\n * @param {Object=} formdata\n * @param {string=} arg_separator\n */\n_.HTTPBuildQuery = function(formdata, arg_separator) {\n    var use_val, use_key, tmp_arr = [];\n\n    if (_.isUndefined(arg_separator)) {\n        arg_separator = '&';\n    }\n\n    _.each(formdata, function(val, key) {\n        use_val = encodeURIComponent(val.toString());\n        use_key = encodeURIComponent(key);\n        tmp_arr[tmp_arr.length] = use_key + '=' + use_val;\n    });\n\n    return tmp_arr.join(arg_separator);\n};\n\n_.getQueryParam = function(url, param) {\n    // Expects a raw URL\n\n    param = param.replace(/[[]/, '\\\\[').replace(/[\\]]/, '\\\\]');\n    var regexS = '[\\\\?&]' + param + '=([^&#]*)',\n        regex = new RegExp(regexS),\n        results = regex.exec(url);\n    if (results === null || (results && typeof(results[1]) !== 'string' && results[1].length)) {\n        return '';\n    } else {\n        var result = results[1];\n        try {\n            result = decodeURIComponent(result);\n        } catch(err) {\n            console.error('Skipping decoding for malformed query param: ' + result);\n        }\n        return result.replace(/\\+/g, ' ');\n    }\n};\n\n\n// _.cookie\n// Methods partially borrowed from quirksmode.org/js/cookies.html\n_.cookie = {\n    get: function(name) {\n        var nameEQ = name + '=';\n        var ca = document$1.cookie.split(';');\n        for (var i = 0; i < ca.length; i++) {\n            var c = ca[i];\n            while (c.charAt(0) == ' ') {\n                c = c.substring(1, c.length);\n            }\n            if (c.indexOf(nameEQ) === 0) {\n                return decodeURIComponent(c.substring(nameEQ.length, c.length));\n            }\n        }\n        return null;\n    },\n\n    parse: function(name) {\n        var cookie;\n        try {\n            cookie = _.JSONDecode(_.cookie.get(name)) || {};\n        } catch (err) {\n            // noop\n        }\n        return cookie;\n    },\n\n    set_seconds: function(name, value, seconds, is_cross_subdomain, is_secure, is_cross_site, domain_override) {\n        var cdomain = '',\n            expires = '',\n            secure = '';\n\n        if (domain_override) {\n            cdomain = '; domain=' + domain_override;\n        } else if (is_cross_subdomain) {\n            var domain = extract_domain(document$1.location.hostname);\n            cdomain = domain ? '; domain=.' + domain : '';\n        }\n\n        if (seconds) {\n            var date = new Date();\n            date.setTime(date.getTime() + (seconds * 1000));\n            expires = '; expires=' + date.toGMTString();\n        }\n\n        if (is_cross_site) {\n            is_secure = true;\n            secure = '; SameSite=None';\n        }\n        if (is_secure) {\n            secure += '; secure';\n        }\n\n        document$1.cookie = name + '=' + encodeURIComponent(value) + expires + '; path=/' + cdomain + secure;\n    },\n\n    set: function(name, value, days, is_cross_subdomain, is_secure, is_cross_site, domain_override) {\n        var cdomain = '', expires = '', secure = '';\n\n        if (domain_override) {\n            cdomain = '; domain=' + domain_override;\n        } else if (is_cross_subdomain) {\n            var domain = extract_domain(document$1.location.hostname);\n            cdomain = domain ? '; domain=.' + domain : '';\n        }\n\n        if (days) {\n            var date = new Date();\n            date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));\n            expires = '; expires=' + date.toGMTString();\n        }\n\n        if (is_cross_site) {\n            is_secure = true;\n            secure = '; SameSite=None';\n        }\n        if (is_secure) {\n            secure += '; secure';\n        }\n\n        var new_cookie_val = name + '=' + encodeURIComponent(value) + expires + '; path=/' + cdomain + secure;\n        document$1.cookie = new_cookie_val;\n        return new_cookie_val;\n    },\n\n    remove: function(name, is_cross_subdomain, domain_override) {\n        _.cookie.set(name, '', -1, is_cross_subdomain, false, false, domain_override);\n    }\n};\n\nvar _localStorageSupported = null;\nvar localStorageSupported = function(storage, forceCheck) {\n    if (_localStorageSupported !== null && !forceCheck) {\n        return _localStorageSupported;\n    }\n\n    var supported = true;\n    try {\n        storage = storage || window.localStorage;\n        var key = '__mplss_' + cheap_guid(8),\n            val = 'xyz';\n        storage.setItem(key, val);\n        if (storage.getItem(key) !== val) {\n            supported = false;\n        }\n        storage.removeItem(key);\n    } catch (err) {\n        supported = false;\n    }\n\n    _localStorageSupported = supported;\n    return supported;\n};\n\n// _.localStorage\n_.localStorage = {\n    is_supported: function(force_check) {\n        var supported = localStorageSupported(null, force_check);\n        if (!supported) {\n            console.error('localStorage unsupported; falling back to cookie store');\n        }\n        return supported;\n    },\n\n    error: function(msg) {\n        console.error('localStorage error: ' + msg);\n    },\n\n    get: function(name) {\n        try {\n            return window.localStorage.getItem(name);\n        } catch (err) {\n            _.localStorage.error(err);\n        }\n        return null;\n    },\n\n    parse: function(name) {\n        try {\n            return _.JSONDecode(_.localStorage.get(name)) || {};\n        } catch (err) {\n            // noop\n        }\n        return null;\n    },\n\n    set: function(name, value) {\n        try {\n            window.localStorage.setItem(name, value);\n        } catch (err) {\n            _.localStorage.error(err);\n        }\n    },\n\n    remove: function(name) {\n        try {\n            window.localStorage.removeItem(name);\n        } catch (err) {\n            _.localStorage.error(err);\n        }\n    }\n};\n\n_.register_event = (function() {\n    // written by Dean Edwards, 2005\n    // with input from Tino Zijdel - crisp@xs4all.nl\n    // with input from Carl Sverre - mail@carlsverre.com\n    // with input from Mixpanel\n    // http://dean.edwards.name/weblog/2005/10/add-event/\n    // https://gist.github.com/1930440\n\n    /**\n     * @param {Object} element\n     * @param {string} type\n     * @param {function(...*)} handler\n     * @param {boolean=} oldSchool\n     * @param {boolean=} useCapture\n     */\n    var register_event = function(element, type, handler, oldSchool, useCapture) {\n        if (!element) {\n            console.error('No valid element provided to register_event');\n            return;\n        }\n\n        if (element.addEventListener && !oldSchool) {\n            element.addEventListener(type, handler, !!useCapture);\n        } else {\n            var ontype = 'on' + type;\n            var old_handler = element[ontype]; // can be undefined\n            element[ontype] = makeHandler(element, handler, old_handler);\n        }\n    };\n\n    function makeHandler(element, new_handler, old_handlers) {\n        var handler = function(event) {\n            event = event || fixEvent(window.event);\n\n            // this basically happens in firefox whenever another script\n            // overwrites the onload callback and doesn't pass the event\n            // object to previously defined callbacks.  All the browsers\n            // that don't define window.event implement addEventListener\n            // so the dom_loaded handler will still be fired as usual.\n            if (!event) {\n                return undefined;\n            }\n\n            var ret = true;\n            var old_result, new_result;\n\n            if (_.isFunction(old_handlers)) {\n                old_result = old_handlers(event);\n            }\n            new_result = new_handler.call(element, event);\n\n            if ((false === old_result) || (false === new_result)) {\n                ret = false;\n            }\n\n            return ret;\n        };\n\n        return handler;\n    }\n\n    function fixEvent(event) {\n        if (event) {\n            event.preventDefault = fixEvent.preventDefault;\n            event.stopPropagation = fixEvent.stopPropagation;\n        }\n        return event;\n    }\n    fixEvent.preventDefault = function() {\n        this.returnValue = false;\n    };\n    fixEvent.stopPropagation = function() {\n        this.cancelBubble = true;\n    };\n\n    return register_event;\n})();\n\n\nvar TOKEN_MATCH_REGEX = new RegExp('^(\\\\w*)\\\\[(\\\\w+)([=~\\\\|\\\\^\\\\$\\\\*]?)=?\"?([^\\\\]\"]*)\"?\\\\]$');\n\n_.dom_query = (function() {\n    /* document.getElementsBySelector(selector)\n    - returns an array of element objects from the current document\n    matching the CSS selector. Selectors can contain element names,\n    class names and ids and can be nested. For example:\n\n    elements = document.getElementsBySelector('div#main p a.external')\n\n    Will return an array of all 'a' elements with 'external' in their\n    class attribute that are contained inside 'p' elements that are\n    contained inside the 'div' element which has id=\"main\"\n\n    New in version 0.4: Support for CSS2 and CSS3 attribute selectors:\n    See http://www.w3.org/TR/css3-selectors/#attribute-selectors\n\n    Version 0.4 - Simon Willison, March 25th 2003\n    -- Works in Phoenix 0.5, Mozilla 1.3, Opera 7, Internet Explorer 6, Internet Explorer 5 on Windows\n    -- Opera 7 fails\n\n    Version 0.5 - Carl Sverre, Jan 7th 2013\n    -- Now uses jQuery-esque `hasClass` for testing class name\n    equality.  This fixes a bug related to '-' characters being\n    considered not part of a 'word' in regex.\n    */\n\n    function getAllChildren(e) {\n        // Returns all children of element. Workaround required for IE5/Windows. Ugh.\n        return e.all ? e.all : e.getElementsByTagName('*');\n    }\n\n    var bad_whitespace = /[\\t\\r\\n]/g;\n\n    function hasClass(elem, selector) {\n        var className = ' ' + selector + ' ';\n        return ((' ' + elem.className + ' ').replace(bad_whitespace, ' ').indexOf(className) >= 0);\n    }\n\n    function getElementsBySelector(selector) {\n        // Attempt to fail gracefully in lesser browsers\n        if (!document$1.getElementsByTagName) {\n            return [];\n        }\n        // Split selector in to tokens\n        var tokens = selector.split(' ');\n        var token, bits, tagName, found, foundCount, i, j, k, elements, currentContextIndex;\n        var currentContext = [document$1];\n        for (i = 0; i < tokens.length; i++) {\n            token = tokens[i].replace(/^\\s+/, '').replace(/\\s+$/, '');\n            if (token.indexOf('#') > -1) {\n                // Token is an ID selector\n                bits = token.split('#');\n                tagName = bits[0];\n                var id = bits[1];\n                var element = document$1.getElementById(id);\n                if (!element || (tagName && element.nodeName.toLowerCase() != tagName)) {\n                    // element not found or tag with that ID not found, return false\n                    return [];\n                }\n                // Set currentContext to contain just this element\n                currentContext = [element];\n                continue; // Skip to next token\n            }\n            if (token.indexOf('.') > -1) {\n                // Token contains a class selector\n                bits = token.split('.');\n                tagName = bits[0];\n                var className = bits[1];\n                if (!tagName) {\n                    tagName = '*';\n                }\n                // Get elements matching tag, filter them for class selector\n                found = [];\n                foundCount = 0;\n                for (j = 0; j < currentContext.length; j++) {\n                    if (tagName == '*') {\n                        elements = getAllChildren(currentContext[j]);\n                    } else {\n                        elements = currentContext[j].getElementsByTagName(tagName);\n                    }\n                    for (k = 0; k < elements.length; k++) {\n                        found[foundCount++] = elements[k];\n                    }\n                }\n                currentContext = [];\n                currentContextIndex = 0;\n                for (j = 0; j < found.length; j++) {\n                    if (found[j].className &&\n                        _.isString(found[j].className) && // some SVG elements have classNames which are not strings\n                        hasClass(found[j], className)\n                    ) {\n                        currentContext[currentContextIndex++] = found[j];\n                    }\n                }\n                continue; // Skip to next token\n            }\n            // Code to deal with attribute selectors\n            var token_match = token.match(TOKEN_MATCH_REGEX);\n            if (token_match) {\n                tagName = token_match[1];\n                var attrName = token_match[2];\n                var attrOperator = token_match[3];\n                var attrValue = token_match[4];\n                if (!tagName) {\n                    tagName = '*';\n                }\n                // Grab all of the tagName elements within current context\n                found = [];\n                foundCount = 0;\n                for (j = 0; j < currentContext.length; j++) {\n                    if (tagName == '*') {\n                        elements = getAllChildren(currentContext[j]);\n                    } else {\n                        elements = currentContext[j].getElementsByTagName(tagName);\n                    }\n                    for (k = 0; k < elements.length; k++) {\n                        found[foundCount++] = elements[k];\n                    }\n                }\n                currentContext = [];\n                currentContextIndex = 0;\n                var checkFunction; // This function will be used to filter the elements\n                switch (attrOperator) {\n                    case '=': // Equality\n                        checkFunction = function(e) {\n                            return (e.getAttribute(attrName) == attrValue);\n                        };\n                        break;\n                    case '~': // Match one of space seperated words\n                        checkFunction = function(e) {\n                            return (e.getAttribute(attrName).match(new RegExp('\\\\b' + attrValue + '\\\\b')));\n                        };\n                        break;\n                    case '|': // Match start with value followed by optional hyphen\n                        checkFunction = function(e) {\n                            return (e.getAttribute(attrName).match(new RegExp('^' + attrValue + '-?')));\n                        };\n                        break;\n                    case '^': // Match starts with value\n                        checkFunction = function(e) {\n                            return (e.getAttribute(attrName).indexOf(attrValue) === 0);\n                        };\n                        break;\n                    case '$': // Match ends with value - fails with \"Warning\" in Opera 7\n                        checkFunction = function(e) {\n                            return (e.getAttribute(attrName).lastIndexOf(attrValue) == e.getAttribute(attrName).length - attrValue.length);\n                        };\n                        break;\n                    case '*': // Match ends with value\n                        checkFunction = function(e) {\n                            return (e.getAttribute(attrName).indexOf(attrValue) > -1);\n                        };\n                        break;\n                    default:\n                        // Just test for existence of attribute\n                        checkFunction = function(e) {\n                            return e.getAttribute(attrName);\n                        };\n                }\n                currentContext = [];\n                currentContextIndex = 0;\n                for (j = 0; j < found.length; j++) {\n                    if (checkFunction(found[j])) {\n                        currentContext[currentContextIndex++] = found[j];\n                    }\n                }\n                // alert('Attribute Selector: '+tagName+' '+attrName+' '+attrOperator+' '+attrValue);\n                continue; // Skip to next token\n            }\n            // If we get here, token is JUST an element (not a class or ID selector)\n            tagName = token;\n            found = [];\n            foundCount = 0;\n            for (j = 0; j < currentContext.length; j++) {\n                elements = currentContext[j].getElementsByTagName(tagName);\n                for (k = 0; k < elements.length; k++) {\n                    found[foundCount++] = elements[k];\n                }\n            }\n            currentContext = found;\n        }\n        return currentContext;\n    }\n\n    return function(query) {\n        if (_.isElement(query)) {\n            return [query];\n        } else if (_.isObject(query) && !_.isUndefined(query.length)) {\n            return query;\n        } else {\n            return getElementsBySelector.call(this, query);\n        }\n    };\n})();\n\nvar CAMPAIGN_KEYWORDS = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_content', 'utm_term'];\nvar CLICK_IDS = ['dclid', 'fbclid', 'gclid', 'ko_click_id', 'li_fat_id', 'msclkid', 'ttclid', 'twclid', 'wbraid'];\n\n_.info = {\n    campaignParams: function(default_value) {\n        var kw = '',\n            params = {};\n        _.each(CAMPAIGN_KEYWORDS, function(kwkey) {\n            kw = _.getQueryParam(document$1.URL, kwkey);\n            if (kw.length) {\n                params[kwkey] = kw;\n            } else if (default_value !== undefined) {\n                params[kwkey] = default_value;\n            }\n        });\n\n        return params;\n    },\n\n    clickParams: function() {\n        var id = '',\n            params = {};\n        _.each(CLICK_IDS, function(idkey) {\n            id = _.getQueryParam(document$1.URL, idkey);\n            if (id.length) {\n                params[idkey] = id;\n            }\n        });\n\n        return params;\n    },\n\n    marketingParams: function() {\n        return _.extend(_.info.campaignParams(), _.info.clickParams());\n    },\n\n    searchEngine: function(referrer) {\n        if (referrer.search('https?://(.*)google.([^/?]*)') === 0) {\n            return 'google';\n        } else if (referrer.search('https?://(.*)bing.com') === 0) {\n            return 'bing';\n        } else if (referrer.search('https?://(.*)yahoo.com') === 0) {\n            return 'yahoo';\n        } else if (referrer.search('https?://(.*)duckduckgo.com') === 0) {\n            return 'duckduckgo';\n        } else {\n            return null;\n        }\n    },\n\n    searchInfo: function(referrer) {\n        var search = _.info.searchEngine(referrer),\n            param = (search != 'yahoo') ? 'q' : 'p',\n            ret = {};\n\n        if (search !== null) {\n            ret['$search_engine'] = search;\n\n            var keyword = _.getQueryParam(referrer, param);\n            if (keyword.length) {\n                ret['mp_keyword'] = keyword;\n            }\n        }\n\n        return ret;\n    },\n\n    /**\n     * This function detects which browser is running this script.\n     * The order of the checks are important since many user agents\n     * include key words used in later checks.\n     */\n    browser: function(user_agent, vendor, opera) {\n        vendor = vendor || ''; // vendor is undefined for at least IE9\n        if (opera || _.includes(user_agent, ' OPR/')) {\n            if (_.includes(user_agent, 'Mini')) {\n                return 'Opera Mini';\n            }\n            return 'Opera';\n        } else if (/(BlackBerry|PlayBook|BB10)/i.test(user_agent)) {\n            return 'BlackBerry';\n        } else if (_.includes(user_agent, 'IEMobile') || _.includes(user_agent, 'WPDesktop')) {\n            return 'Internet Explorer Mobile';\n        } else if (_.includes(user_agent, 'SamsungBrowser/')) {\n            // https://developer.samsung.com/internet/user-agent-string-format\n            return 'Samsung Internet';\n        } else if (_.includes(user_agent, 'Edge') || _.includes(user_agent, 'Edg/')) {\n            return 'Microsoft Edge';\n        } else if (_.includes(user_agent, 'FBIOS')) {\n            return 'Facebook Mobile';\n        } else if (_.includes(user_agent, 'Chrome')) {\n            return 'Chrome';\n        } else if (_.includes(user_agent, 'CriOS')) {\n            return 'Chrome iOS';\n        } else if (_.includes(user_agent, 'UCWEB') || _.includes(user_agent, 'UCBrowser')) {\n            return 'UC Browser';\n        } else if (_.includes(user_agent, 'FxiOS')) {\n            return 'Firefox iOS';\n        } else if (_.includes(vendor, 'Apple')) {\n            if (_.includes(user_agent, 'Mobile')) {\n                return 'Mobile Safari';\n            }\n            return 'Safari';\n        } else if (_.includes(user_agent, 'Android')) {\n            return 'Android Mobile';\n        } else if (_.includes(user_agent, 'Konqueror')) {\n            return 'Konqueror';\n        } else if (_.includes(user_agent, 'Firefox')) {\n            return 'Firefox';\n        } else if (_.includes(user_agent, 'MSIE') || _.includes(user_agent, 'Trident/')) {\n            return 'Internet Explorer';\n        } else if (_.includes(user_agent, 'Gecko')) {\n            return 'Mozilla';\n        } else {\n            return '';\n        }\n    },\n\n    /**\n     * This function detects which browser version is running this script,\n     * parsing major and minor version (e.g., 42.1). User agent strings from:\n     * http://www.useragentstring.com/pages/useragentstring.php\n     */\n    browserVersion: function(userAgent, vendor, opera) {\n        var browser = _.info.browser(userAgent, vendor, opera);\n        var versionRegexs = {\n            'Internet Explorer Mobile': /rv:(\\d+(\\.\\d+)?)/,\n            'Microsoft Edge': /Edge?\\/(\\d+(\\.\\d+)?)/,\n            'Chrome': /Chrome\\/(\\d+(\\.\\d+)?)/,\n            'Chrome iOS': /CriOS\\/(\\d+(\\.\\d+)?)/,\n            'UC Browser' : /(UCBrowser|UCWEB)\\/(\\d+(\\.\\d+)?)/,\n            'Safari': /Version\\/(\\d+(\\.\\d+)?)/,\n            'Mobile Safari': /Version\\/(\\d+(\\.\\d+)?)/,\n            'Opera': /(Opera|OPR)\\/(\\d+(\\.\\d+)?)/,\n            'Firefox': /Firefox\\/(\\d+(\\.\\d+)?)/,\n            'Firefox iOS': /FxiOS\\/(\\d+(\\.\\d+)?)/,\n            'Konqueror': /Konqueror:(\\d+(\\.\\d+)?)/,\n            'BlackBerry': /BlackBerry (\\d+(\\.\\d+)?)/,\n            'Android Mobile': /android\\s(\\d+(\\.\\d+)?)/,\n            'Samsung Internet': /SamsungBrowser\\/(\\d+(\\.\\d+)?)/,\n            'Internet Explorer': /(rv:|MSIE )(\\d+(\\.\\d+)?)/,\n            'Mozilla': /rv:(\\d+(\\.\\d+)?)/\n        };\n        var regex = versionRegexs[browser];\n        if (regex === undefined) {\n            return null;\n        }\n        var matches = userAgent.match(regex);\n        if (!matches) {\n            return null;\n        }\n        return parseFloat(matches[matches.length - 2]);\n    },\n\n    os: function() {\n        var a = userAgent;\n        if (/Windows/i.test(a)) {\n            if (/Phone/.test(a) || /WPDesktop/.test(a)) {\n                return 'Windows Phone';\n            }\n            return 'Windows';\n        } else if (/(iPhone|iPad|iPod)/.test(a)) {\n            return 'iOS';\n        } else if (/Android/.test(a)) {\n            return 'Android';\n        } else if (/(BlackBerry|PlayBook|BB10)/i.test(a)) {\n            return 'BlackBerry';\n        } else if (/Mac/i.test(a)) {\n            return 'Mac OS X';\n        } else if (/Linux/.test(a)) {\n            return 'Linux';\n        } else if (/CrOS/.test(a)) {\n            return 'Chrome OS';\n        } else {\n            return '';\n        }\n    },\n\n    device: function(user_agent) {\n        if (/Windows Phone/i.test(user_agent) || /WPDesktop/.test(user_agent)) {\n            return 'Windows Phone';\n        } else if (/iPad/.test(user_agent)) {\n            return 'iPad';\n        } else if (/iPod/.test(user_agent)) {\n            return 'iPod Touch';\n        } else if (/iPhone/.test(user_agent)) {\n            return 'iPhone';\n        } else if (/(BlackBerry|PlayBook|BB10)/i.test(user_agent)) {\n            return 'BlackBerry';\n        } else if (/Android/.test(user_agent)) {\n            return 'Android';\n        } else {\n            return '';\n        }\n    },\n\n    referringDomain: function(referrer) {\n        var split = referrer.split('/');\n        if (split.length >= 3) {\n            return split[2];\n        }\n        return '';\n    },\n\n    properties: function() {\n        return _.extend(_.strip_empty_properties({\n            '$os': _.info.os(),\n            '$browser': _.info.browser(userAgent, navigator.vendor, windowOpera),\n            '$referrer': document$1.referrer,\n            '$referring_domain': _.info.referringDomain(document$1.referrer),\n            '$device': _.info.device(userAgent)\n        }), {\n            '$current_url': window$1.location.href,\n            '$browser_version': _.info.browserVersion(userAgent, navigator.vendor, windowOpera),\n            '$screen_height': screen.height,\n            '$screen_width': screen.width,\n            'mp_lib': 'web',\n            '$lib_version': Config.LIB_VERSION,\n            '$insert_id': cheap_guid(),\n            'time': _.timestamp() / 1000 // epoch time in seconds\n        });\n    },\n\n    people_properties: function() {\n        return _.extend(_.strip_empty_properties({\n            '$os': _.info.os(),\n            '$browser': _.info.browser(userAgent, navigator.vendor, windowOpera)\n        }), {\n            '$browser_version': _.info.browserVersion(userAgent, navigator.vendor, windowOpera)\n        });\n    },\n\n    mpPageViewProperties: function() {\n        return _.strip_empty_properties({\n            'current_page_title': document$1.title,\n            'current_domain': window$1.location.hostname,\n            'current_url_path': window$1.location.pathname,\n            'current_url_protocol': window$1.location.protocol,\n            'current_url_search': window$1.location.search\n        });\n    }\n};\n\nvar cheap_guid = function(maxlen) {\n    var guid = Math.random().toString(36).substring(2, 10) + Math.random().toString(36).substring(2, 10);\n    return maxlen ? guid.substring(0, maxlen) : guid;\n};\n\n// naive way to extract domain name (example.com) from full hostname (my.sub.example.com)\nvar SIMPLE_DOMAIN_MATCH_REGEX = /[a-z0-9][a-z0-9-]*\\.[a-z]+$/i;\n// this next one attempts to account for some ccSLDs, e.g. extracting oxford.ac.uk from www.oxford.ac.uk\nvar DOMAIN_MATCH_REGEX = /[a-z0-9][a-z0-9-]+\\.[a-z.]{2,6}$/i;\n/**\n * Attempts to extract main domain name from full hostname, using a few blunt heuristics. For\n * common TLDs like .com/.org that always have a simple SLD.TLD structure (example.com), we\n * simply extract the last two .-separated parts of the hostname (SIMPLE_DOMAIN_MATCH_REGEX).\n * For others, we attempt to account for short ccSLD+TLD combos (.ac.uk) with the legacy\n * DOMAIN_MATCH_REGEX (kept to maintain backwards compatibility with existing Mixpanel\n * integrations). The only _reliable_ way to extract domain from hostname is with an up-to-date\n * list like at https://publicsuffix.org/ so for cases that this helper fails at, the SDK\n * offers the 'cookie_domain' config option to set it explicitly.\n * @example\n * extract_domain('my.sub.example.com')\n * // 'example.com'\n */\nvar extract_domain = function(hostname) {\n    var domain_regex = DOMAIN_MATCH_REGEX;\n    var parts = hostname.split('.');\n    var tld = parts[parts.length - 1];\n    if (tld.length > 4 || tld === 'com' || tld === 'org') {\n        domain_regex = SIMPLE_DOMAIN_MATCH_REGEX;\n    }\n    var matches = hostname.match(domain_regex);\n    return matches ? matches[0] : '';\n};\n\nvar JSONStringify = null;\nvar JSONParse = null;\nif (typeof JSON !== 'undefined') {\n    JSONStringify = JSON.stringify;\n    JSONParse = JSON.parse;\n}\nJSONStringify = JSONStringify || _.JSONEncode;\nJSONParse = JSONParse || _.JSONDecode;\n\n// EXPORTS (for closure compiler)\n_['toArray']                = _.toArray;\n_['isObject']               = _.isObject;\n_['JSONEncode']             = _.JSONEncode;\n_['JSONDecode']             = _.JSONDecode;\n_['isBlockedUA']            = _.isBlockedUA;\n_['isEmptyObject']          = _.isEmptyObject;\n_['info']                   = _.info;\n_['info']['device']         = _.info.device;\n_['info']['browser']        = _.info.browser;\n_['info']['browserVersion'] = _.info.browserVersion;\n_['info']['properties']     = _.info.properties;\n\n/**\n * DomTracker Object\n * @constructor\n */\nvar DomTracker = function() {};\n\n\n// interface\nDomTracker.prototype.create_properties = function() {};\nDomTracker.prototype.event_handler = function() {};\nDomTracker.prototype.after_track_handler = function() {};\n\nDomTracker.prototype.init = function(mixpanel_instance) {\n    this.mp = mixpanel_instance;\n    return this;\n};\n\n/**\n * @param {Object|string} query\n * @param {string} event_name\n * @param {Object=} properties\n * @param {function=} user_callback\n */\nDomTracker.prototype.track = function(query, event_name, properties, user_callback) {\n    var that = this;\n    var elements = _.dom_query(query);\n\n    if (elements.length === 0) {\n        console.error('The DOM query (' + query + ') returned 0 elements');\n        return;\n    }\n\n    _.each(elements, function(element) {\n        _.register_event(element, this.override_event, function(e) {\n            var options = {};\n            var props = that.create_properties(properties, this);\n            var timeout = that.mp.get_config('track_links_timeout');\n\n            that.event_handler(e, this, options);\n\n            // in case the mixpanel servers don't get back to us in time\n            window.setTimeout(that.track_callback(user_callback, props, options, true), timeout);\n\n            // fire the tracking event\n            that.mp.track(event_name, props, that.track_callback(user_callback, props, options));\n        });\n    }, this);\n\n    return true;\n};\n\n/**\n * @param {function} user_callback\n * @param {Object} props\n * @param {boolean=} timeout_occured\n */\nDomTracker.prototype.track_callback = function(user_callback, props, options, timeout_occured) {\n    timeout_occured = timeout_occured || false;\n    var that = this;\n\n    return function() {\n        // options is referenced from both callbacks, so we can have\n        // a 'lock' of sorts to ensure only one fires\n        if (options.callback_fired) { return; }\n        options.callback_fired = true;\n\n        if (user_callback && user_callback(timeout_occured, props) === false) {\n            // user can prevent the default functionality by\n            // returning false from their callback\n            return;\n        }\n\n        that.after_track_handler(props, options, timeout_occured);\n    };\n};\n\nDomTracker.prototype.create_properties = function(properties, element) {\n    var props;\n\n    if (typeof(properties) === 'function') {\n        props = properties(element);\n    } else {\n        props = _.extend({}, properties);\n    }\n\n    return props;\n};\n\n/**\n * LinkTracker Object\n * @constructor\n * @extends DomTracker\n */\nvar LinkTracker = function() {\n    this.override_event = 'click';\n};\n_.inherit(LinkTracker, DomTracker);\n\nLinkTracker.prototype.create_properties = function(properties, element) {\n    var props = LinkTracker.superclass.create_properties.apply(this, arguments);\n\n    if (element.href) { props['url'] = element.href; }\n\n    return props;\n};\n\nLinkTracker.prototype.event_handler = function(evt, element, options) {\n    options.new_tab = (\n        evt.which === 2 ||\n        evt.metaKey ||\n        evt.ctrlKey ||\n        element.target === '_blank'\n    );\n    options.href = element.href;\n\n    if (!options.new_tab) {\n        evt.preventDefault();\n    }\n};\n\nLinkTracker.prototype.after_track_handler = function(props, options) {\n    if (options.new_tab) { return; }\n\n    setTimeout(function() {\n        window.location = options.href;\n    }, 0);\n};\n\n/**\n * FormTracker Object\n * @constructor\n * @extends DomTracker\n */\nvar FormTracker = function() {\n    this.override_event = 'submit';\n};\n_.inherit(FormTracker, DomTracker);\n\nFormTracker.prototype.event_handler = function(evt, element, options) {\n    options.element = element;\n    evt.preventDefault();\n};\n\nFormTracker.prototype.after_track_handler = function(props, options) {\n    setTimeout(function() {\n        options.element.submit();\n    }, 0);\n};\n\n// eslint-disable-line camelcase\n\nvar logger$2 = console_with_prefix('lock');\n\n/**\n * SharedLock: a mutex built on HTML5 localStorage, to ensure that only one browser\n * window/tab at a time will be able to access shared resources.\n *\n * Based on the Alur and Taubenfeld fast lock\n * (http://www.cs.rochester.edu/research/synchronization/pseudocode/fastlock.html)\n * with an added timeout to ensure there will be eventual progress in the event\n * that a window is closed in the middle of the callback.\n *\n * Implementation based on the original version by David Wolever (https://github.com/wolever)\n * at https://gist.github.com/wolever/5fd7573d1ef6166e8f8c4af286a69432.\n *\n * @example\n * const myLock = new SharedLock('some-key');\n * myLock.withLock(function() {\n *   console.log('I hold the mutex!');\n * });\n *\n * @constructor\n */\nvar SharedLock = function(key, options) {\n    options = options || {};\n\n    this.storageKey = key;\n    this.storage = options.storage || window.localStorage;\n    this.pollIntervalMS = options.pollIntervalMS || 100;\n    this.timeoutMS = options.timeoutMS || 2000;\n};\n\n// pass in a specific pid to test contention scenarios; otherwise\n// it is chosen randomly for each acquisition attempt\nSharedLock.prototype.withLock = function(lockedCB, errorCB, pid) {\n    if (!pid && typeof errorCB !== 'function') {\n        pid = errorCB;\n        errorCB = null;\n    }\n\n    var i = pid || (new Date().getTime() + '|' + Math.random());\n    var startTime = new Date().getTime();\n\n    var key = this.storageKey;\n    var pollIntervalMS = this.pollIntervalMS;\n    var timeoutMS = this.timeoutMS;\n    var storage = this.storage;\n\n    var keyX = key + ':X';\n    var keyY = key + ':Y';\n    var keyZ = key + ':Z';\n\n    var reportError = function(err) {\n        errorCB && errorCB(err);\n    };\n\n    var delay = function(cb) {\n        if (new Date().getTime() - startTime > timeoutMS) {\n            logger$2.error('Timeout waiting for mutex on ' + key + '; clearing lock. [' + i + ']');\n            storage.removeItem(keyZ);\n            storage.removeItem(keyY);\n            loop();\n            return;\n        }\n        setTimeout(function() {\n            try {\n                cb();\n            } catch(err) {\n                reportError(err);\n            }\n        }, pollIntervalMS * (Math.random() + 0.1));\n    };\n\n    var waitFor = function(predicate, cb) {\n        if (predicate()) {\n            cb();\n        } else {\n            delay(function() {\n                waitFor(predicate, cb);\n            });\n        }\n    };\n\n    var getSetY = function() {\n        var valY = storage.getItem(keyY);\n        if (valY && valY !== i) { // if Y == i then this process already has the lock (useful for test cases)\n            return false;\n        } else {\n            storage.setItem(keyY, i);\n            if (storage.getItem(keyY) === i) {\n                return true;\n            } else {\n                if (!localStorageSupported(storage, true)) {\n                    throw new Error('localStorage support dropped while acquiring lock');\n                }\n                return false;\n            }\n        }\n    };\n\n    var loop = function() {\n        storage.setItem(keyX, i);\n\n        waitFor(getSetY, function() {\n            if (storage.getItem(keyX) === i) {\n                criticalSection();\n                return;\n            }\n\n            delay(function() {\n                if (storage.getItem(keyY) !== i) {\n                    loop();\n                    return;\n                }\n                waitFor(function() {\n                    return !storage.getItem(keyZ);\n                }, criticalSection);\n            });\n        });\n    };\n\n    var criticalSection = function() {\n        storage.setItem(keyZ, '1');\n        try {\n            lockedCB();\n        } finally {\n            storage.removeItem(keyZ);\n            if (storage.getItem(keyY) === i) {\n                storage.removeItem(keyY);\n            }\n            if (storage.getItem(keyX) === i) {\n                storage.removeItem(keyX);\n            }\n        }\n    };\n\n    try {\n        if (localStorageSupported(storage, true)) {\n            loop();\n        } else {\n            throw new Error('localStorage support check failed');\n        }\n    } catch(err) {\n        reportError(err);\n    }\n};\n\n// eslint-disable-line camelcase\n\nvar logger$1 = console_with_prefix('batch');\n\n/**\n * RequestQueue: queue for batching API requests with localStorage backup for retries.\n * Maintains an in-memory queue which represents the source of truth for the current\n * page, but also writes all items out to a copy in the browser's localStorage, which\n * can be read on subsequent pageloads and retried. For batchability, all the request\n * items in the queue should be of the same type (events, people updates, group updates)\n * so they can be sent in a single request to the same API endpoint.\n *\n * LocalStorage keying and locking: In order for reloads and subsequent pageloads of\n * the same site to access the same persisted data, they must share the same localStorage\n * key (for instance based on project token and queue type). Therefore access to the\n * localStorage entry is guarded by an asynchronous mutex (SharedLock) to prevent\n * simultaneously open windows/tabs from overwriting each other's data (which would lead\n * to data loss in some situations).\n * @constructor\n */\nvar RequestQueue = function(storageKey, options) {\n    options = options || {};\n    this.storageKey = storageKey;\n    this.storage = options.storage || window.localStorage;\n    this.reportError = options.errorReporter || _.bind(logger$1.error, logger$1);\n    this.lock = new SharedLock(storageKey, {storage: this.storage});\n\n    this.pid = options.pid || null; // pass pid to test out storage lock contention scenarios\n\n    this.memQueue = [];\n};\n\n/**\n * Add one item to queues (memory and localStorage). The queued entry includes\n * the given item along with an auto-generated ID and a \"flush-after\" timestamp.\n * It is expected that the item will be sent over the network and dequeued\n * before the flush-after time; if this doesn't happen it is considered orphaned\n * (e.g., the original tab where it was enqueued got closed before it could be\n * sent) and the item can be sent by any tab that finds it in localStorage.\n *\n * The final callback param is called with a param indicating success or\n * failure of the enqueue operation; it is asynchronous because the localStorage\n * lock is asynchronous.\n */\nRequestQueue.prototype.enqueue = function(item, flushInterval, cb) {\n    var queueEntry = {\n        'id': cheap_guid(),\n        'flushAfter': new Date().getTime() + flushInterval * 2,\n        'payload': item\n    };\n\n    this.lock.withLock(_.bind(function lockAcquired() {\n        var succeeded;\n        try {\n            var storedQueue = this.readFromStorage();\n            storedQueue.push(queueEntry);\n            succeeded = this.saveToStorage(storedQueue);\n            if (succeeded) {\n                // only add to in-memory queue when storage succeeds\n                this.memQueue.push(queueEntry);\n            }\n        } catch(err) {\n            this.reportError('Error enqueueing item', item);\n            succeeded = false;\n        }\n        if (cb) {\n            cb(succeeded);\n        }\n    }, this), _.bind(function lockFailure(err) {\n        this.reportError('Error acquiring storage lock', err);\n        if (cb) {\n            cb(false);\n        }\n    }, this), this.pid);\n};\n\n/**\n * Read out the given number of queue entries. If this.memQueue\n * has fewer than batchSize items, then look for \"orphaned\" items\n * in the persisted queue (items where the 'flushAfter' time has\n * already passed).\n */\nRequestQueue.prototype.fillBatch = function(batchSize) {\n    var batch = this.memQueue.slice(0, batchSize);\n    if (batch.length < batchSize) {\n        // don't need lock just to read events; localStorage is thread-safe\n        // and the worst that could happen is a duplicate send of some\n        // orphaned events, which will be deduplicated on the server side\n        var storedQueue = this.readFromStorage();\n        if (storedQueue.length) {\n            // item IDs already in batch; don't duplicate out of storage\n            var idsInBatch = {}; // poor man's Set\n            _.each(batch, function(item) { idsInBatch[item['id']] = true; });\n\n            for (var i = 0; i < storedQueue.length; i++) {\n                var item = storedQueue[i];\n                if (new Date().getTime() > item['flushAfter'] && !idsInBatch[item['id']]) {\n                    item.orphaned = true;\n                    batch.push(item);\n                    if (batch.length >= batchSize) {\n                        break;\n                    }\n                }\n            }\n        }\n    }\n    return batch;\n};\n\n/**\n * Remove items with matching 'id' from array (immutably)\n * also remove any item without a valid id (e.g., malformed\n * storage entries).\n */\nvar filterOutIDsAndInvalid = function(items, idSet) {\n    var filteredItems = [];\n    _.each(items, function(item) {\n        if (item['id'] && !idSet[item['id']]) {\n            filteredItems.push(item);\n        }\n    });\n    return filteredItems;\n};\n\n/**\n * Remove items with matching IDs from both in-memory queue\n * and persisted queue\n */\nRequestQueue.prototype.removeItemsByID = function(ids, cb) {\n    var idSet = {}; // poor man's Set\n    _.each(ids, function(id) { idSet[id] = true; });\n\n    this.memQueue = filterOutIDsAndInvalid(this.memQueue, idSet);\n\n    var removeFromStorage = _.bind(function() {\n        var succeeded;\n        try {\n            var storedQueue = this.readFromStorage();\n            storedQueue = filterOutIDsAndInvalid(storedQueue, idSet);\n            succeeded = this.saveToStorage(storedQueue);\n\n            // an extra check: did storage report success but somehow\n            // the items are still there?\n            if (succeeded) {\n                storedQueue = this.readFromStorage();\n                for (var i = 0; i < storedQueue.length; i++) {\n                    var item = storedQueue[i];\n                    if (item['id'] && !!idSet[item['id']]) {\n                        this.reportError('Item not removed from storage');\n                        return false;\n                    }\n                }\n            }\n        } catch(err) {\n            this.reportError('Error removing items', ids);\n            succeeded = false;\n        }\n        return succeeded;\n    }, this);\n\n    this.lock.withLock(function lockAcquired() {\n        var succeeded = removeFromStorage();\n        if (cb) {\n            cb(succeeded);\n        }\n    }, _.bind(function lockFailure(err) {\n        var succeeded = false;\n        this.reportError('Error acquiring storage lock', err);\n        if (!localStorageSupported(this.storage, true)) {\n            // Looks like localStorage writes have stopped working sometime after\n            // initialization (probably full), and so nobody can acquire locks\n            // anymore. Consider it temporarily safe to remove items without the\n            // lock, since nobody's writing successfully anyway.\n            succeeded = removeFromStorage();\n            if (!succeeded) {\n                // OK, we couldn't even write out the smaller queue. Try clearing it\n                // entirely.\n                try {\n                    this.storage.removeItem(this.storageKey);\n                } catch(err) {\n                    this.reportError('Error clearing queue', err);\n                }\n            }\n        }\n        if (cb) {\n            cb(succeeded);\n        }\n    }, this), this.pid);\n};\n\n// internal helper for RequestQueue.updatePayloads\nvar updatePayloads = function(existingItems, itemsToUpdate) {\n    var newItems = [];\n    _.each(existingItems, function(item) {\n        var id = item['id'];\n        if (id in itemsToUpdate) {\n            var newPayload = itemsToUpdate[id];\n            if (newPayload !== null) {\n                item['payload'] = newPayload;\n                newItems.push(item);\n            }\n        } else {\n            // no update\n            newItems.push(item);\n        }\n    });\n    return newItems;\n};\n\n/**\n * Update payloads of given items in both in-memory queue and\n * persisted queue. Items set to null are removed from queues.\n */\nRequestQueue.prototype.updatePayloads = function(itemsToUpdate, cb) {\n    this.memQueue = updatePayloads(this.memQueue, itemsToUpdate);\n    this.lock.withLock(_.bind(function lockAcquired() {\n        var succeeded;\n        try {\n            var storedQueue = this.readFromStorage();\n            storedQueue = updatePayloads(storedQueue, itemsToUpdate);\n            succeeded = this.saveToStorage(storedQueue);\n        } catch(err) {\n            this.reportError('Error updating items', itemsToUpdate);\n            succeeded = false;\n        }\n        if (cb) {\n            cb(succeeded);\n        }\n    }, this), _.bind(function lockFailure(err) {\n        this.reportError('Error acquiring storage lock', err);\n        if (cb) {\n            cb(false);\n        }\n    }, this), this.pid);\n};\n\n/**\n * Read and parse items array from localStorage entry, handling\n * malformed/missing data if necessary.\n */\nRequestQueue.prototype.readFromStorage = function() {\n    var storageEntry;\n    try {\n        storageEntry = this.storage.getItem(this.storageKey);\n        if (storageEntry) {\n            storageEntry = JSONParse(storageEntry);\n            if (!_.isArray(storageEntry)) {\n                this.reportError('Invalid storage entry:', storageEntry);\n                storageEntry = null;\n            }\n        }\n    } catch (err) {\n        this.reportError('Error retrieving queue', err);\n        storageEntry = null;\n    }\n    return storageEntry || [];\n};\n\n/**\n * Serialize the given items array to localStorage.\n */\nRequestQueue.prototype.saveToStorage = function(queue) {\n    try {\n        this.storage.setItem(this.storageKey, JSONStringify(queue));\n        return true;\n    } catch (err) {\n        this.reportError('Error saving queue', err);\n        return false;\n    }\n};\n\n/**\n * Clear out queues (memory and localStorage).\n */\nRequestQueue.prototype.clear = function() {\n    this.memQueue = [];\n    this.storage.removeItem(this.storageKey);\n};\n\n// eslint-disable-line camelcase\n\n// maximum interval between request retries after exponential backoff\nvar MAX_RETRY_INTERVAL_MS = 10 * 60 * 1000; // 10 minutes\n\nvar logger = console_with_prefix('batch');\n\n/**\n * RequestBatcher: manages the queueing, flushing, retry etc of requests of one\n * type (events, people, groups).\n * Uses RequestQueue to manage the backing store.\n * @constructor\n */\nvar RequestBatcher = function(storageKey, options) {\n    this.errorReporter = options.errorReporter;\n    this.queue = new RequestQueue(storageKey, {\n        errorReporter: _.bind(this.reportError, this),\n        storage: options.storage\n    });\n\n    this.libConfig = options.libConfig;\n    this.sendRequest = options.sendRequestFunc;\n    this.beforeSendHook = options.beforeSendHook;\n    this.stopAllBatching = options.stopAllBatchingFunc;\n\n    // seed variable batch size + flush interval with configured values\n    this.batchSize = this.libConfig['batch_size'];\n    this.flushInterval = this.libConfig['batch_flush_interval_ms'];\n\n    this.stopped = !this.libConfig['batch_autostart'];\n    this.consecutiveRemovalFailures = 0;\n\n    // extra client-side dedupe\n    this.itemIdsSentSuccessfully = {};\n};\n\n/**\n * Add one item to queue.\n */\nRequestBatcher.prototype.enqueue = function(item, cb) {\n    this.queue.enqueue(item, this.flushInterval, cb);\n};\n\n/**\n * Start flushing batches at the configured time interval. Must call\n * this method upon SDK init in order to send anything over the network.\n */\nRequestBatcher.prototype.start = function() {\n    this.stopped = false;\n    this.consecutiveRemovalFailures = 0;\n    this.flush();\n};\n\n/**\n * Stop flushing batches. Can be restarted by calling start().\n */\nRequestBatcher.prototype.stop = function() {\n    this.stopped = true;\n    if (this.timeoutID) {\n        clearTimeout(this.timeoutID);\n        this.timeoutID = null;\n    }\n};\n\n/**\n * Clear out queue.\n */\nRequestBatcher.prototype.clear = function() {\n    this.queue.clear();\n};\n\n/**\n * Restore batch size configuration to whatever is set in the main SDK.\n */\nRequestBatcher.prototype.resetBatchSize = function() {\n    this.batchSize = this.libConfig['batch_size'];\n};\n\n/**\n * Restore flush interval time configuration to whatever is set in the main SDK.\n */\nRequestBatcher.prototype.resetFlush = function() {\n    this.scheduleFlush(this.libConfig['batch_flush_interval_ms']);\n};\n\n/**\n * Schedule the next flush in the given number of milliseconds.\n */\nRequestBatcher.prototype.scheduleFlush = function(flushMS) {\n    this.flushInterval = flushMS;\n    if (!this.stopped) { // don't schedule anymore if batching has been stopped\n        this.timeoutID = setTimeout(_.bind(this.flush, this), this.flushInterval);\n    }\n};\n\n/**\n * Flush one batch to network. Depending on success/failure modes, it will either\n * remove the batch from the queue or leave it in for retry, and schedule the next\n * flush. In cases of most network or API failures, it will back off exponentially\n * when retrying.\n * @param {Object} [options]\n * @param {boolean} [options.sendBeacon] - whether to send batch with\n * navigator.sendBeacon (only useful for sending batches before page unloads, as\n * sendBeacon offers no callbacks or status indications)\n */\nRequestBatcher.prototype.flush = function(options) {\n    try {\n\n        if (this.requestInProgress) {\n            logger.log('Flush: Request already in progress');\n            return;\n        }\n\n        options = options || {};\n        var timeoutMS = this.libConfig['batch_request_timeout_ms'];\n        var startTime = new Date().getTime();\n        var currentBatchSize = this.batchSize;\n        var batch = this.queue.fillBatch(currentBatchSize);\n        var dataForRequest = [];\n        var transformedItems = {};\n        _.each(batch, function(item) {\n            var payload = item['payload'];\n            if (this.beforeSendHook && !item.orphaned) {\n                payload = this.beforeSendHook(payload);\n            }\n            if (payload) {\n                // mp_sent_by_lib_version prop captures which lib version actually\n                // sends each event (regardless of which version originally queued\n                // it for sending)\n                if (payload['event'] && payload['properties']) {\n                    payload['properties'] = _.extend(\n                        {},\n                        payload['properties'],\n                        {'mp_sent_by_lib_version': Config.LIB_VERSION}\n                    );\n                }\n                var addPayload = true;\n                var itemId = item['id'];\n                if (itemId) {\n                    if ((this.itemIdsSentSuccessfully[itemId] || 0) > 5) {\n                        this.reportError('[dupe] item ID sent too many times, not sending', {\n                            item: item,\n                            batchSize: batch.length,\n                            timesSent: this.itemIdsSentSuccessfully[itemId]\n                        });\n                        addPayload = false;\n                    }\n                } else {\n                    this.reportError('[dupe] found item with no ID', {item: item});\n                }\n\n                if (addPayload) {\n                    dataForRequest.push(payload);\n                }\n            }\n            transformedItems[item['id']] = payload;\n        }, this);\n        if (dataForRequest.length < 1) {\n            this.resetFlush();\n            return; // nothing to do\n        }\n\n        this.requestInProgress = true;\n\n        var batchSendCallback = _.bind(function(res) {\n            this.requestInProgress = false;\n\n            try {\n\n                // handle API response in a try-catch to make sure we can reset the\n                // flush operation if something goes wrong\n\n                var removeItemsFromQueue = false;\n                if (options.unloading) {\n                    // update persisted data to include hook transformations\n                    this.queue.updatePayloads(transformedItems);\n                } else if (\n                    _.isObject(res) &&\n                    res.error === 'timeout' &&\n                    new Date().getTime() - startTime >= timeoutMS\n                ) {\n                    this.reportError('Network timeout; retrying');\n                    this.flush();\n                } else if (\n                    _.isObject(res) &&\n                    res.xhr_req &&\n                    (res.xhr_req['status'] >= 500 || res.xhr_req['status'] === 429 || res.error === 'timeout')\n                ) {\n                    // network or API error, or 429 Too Many Requests, retry\n                    var retryMS = this.flushInterval * 2;\n                    var headers = res.xhr_req['responseHeaders'];\n                    if (headers) {\n                        var retryAfter = headers['Retry-After'];\n                        if (retryAfter) {\n                            retryMS = (parseInt(retryAfter, 10) * 1000) || retryMS;\n                        }\n                    }\n                    retryMS = Math.min(MAX_RETRY_INTERVAL_MS, retryMS);\n                    this.reportError('Error; retry in ' + retryMS + ' ms');\n                    this.scheduleFlush(retryMS);\n                } else if (_.isObject(res) && res.xhr_req && res.xhr_req['status'] === 413) {\n                    // 413 Payload Too Large\n                    if (batch.length > 1) {\n                        var halvedBatchSize = Math.max(1, Math.floor(currentBatchSize / 2));\n                        this.batchSize = Math.min(this.batchSize, halvedBatchSize, batch.length - 1);\n                        this.reportError('413 response; reducing batch size to ' + this.batchSize);\n                        this.resetFlush();\n                    } else {\n                        this.reportError('Single-event request too large; dropping', batch);\n                        this.resetBatchSize();\n                        removeItemsFromQueue = true;\n                    }\n                } else {\n                    // successful network request+response; remove each item in batch from queue\n                    // (even if it was e.g. a 400, in which case retrying won't help)\n                    removeItemsFromQueue = true;\n                }\n\n                if (removeItemsFromQueue) {\n                    this.queue.removeItemsByID(\n                        _.map(batch, function(item) { return item['id']; }),\n                        _.bind(function(succeeded) {\n                            if (succeeded) {\n                                this.consecutiveRemovalFailures = 0;\n                                this.flush(); // handle next batch if the queue isn't empty\n                            } else {\n                                this.reportError('Failed to remove items from queue');\n                                if (++this.consecutiveRemovalFailures > 5) {\n                                    this.reportError('Too many queue failures; disabling batching system.');\n                                    this.stopAllBatching();\n                                } else {\n                                    this.resetFlush();\n                                }\n                            }\n                        }, this)\n                    );\n\n                    // client-side dedupe\n                    _.each(batch, _.bind(function(item) {\n                        var itemId = item['id'];\n                        if (itemId) {\n                            this.itemIdsSentSuccessfully[itemId] = this.itemIdsSentSuccessfully[itemId] || 0;\n                            this.itemIdsSentSuccessfully[itemId]++;\n                            if (this.itemIdsSentSuccessfully[itemId] > 5) {\n                                this.reportError('[dupe] item ID sent too many times', {\n                                    item: item,\n                                    batchSize: batch.length,\n                                    timesSent: this.itemIdsSentSuccessfully[itemId]\n                                });\n                            }\n                        } else {\n                            this.reportError('[dupe] found item with no ID while removing', {item: item});\n                        }\n                    }, this));\n                }\n\n            } catch(err) {\n                this.reportError('Error handling API response', err);\n                this.resetFlush();\n            }\n        }, this);\n        var requestOptions = {\n            method: 'POST',\n            verbose: true,\n            ignore_json_errors: true, // eslint-disable-line camelcase\n            timeout_ms: timeoutMS // eslint-disable-line camelcase\n        };\n        if (options.unloading) {\n            requestOptions.transport = 'sendBeacon';\n        }\n        logger.log('MIXPANEL REQUEST:', dataForRequest);\n        this.sendRequest(dataForRequest, requestOptions, batchSendCallback);\n\n    } catch(err) {\n        this.reportError('Error flushing request queue', err);\n        this.resetFlush();\n    }\n};\n\n/**\n * Log error to global logger and optional user-defined logger.\n */\nRequestBatcher.prototype.reportError = function(msg, err) {\n    logger.error.apply(logger.error, arguments);\n    if (this.errorReporter) {\n        try {\n            if (!(err instanceof Error)) {\n                err = new Error(msg);\n            }\n            this.errorReporter(msg, err);\n        } catch(err) {\n            logger.error(err);\n        }\n    }\n};\n\n/**\n * A function used to track a Mixpanel event (e.g. MixpanelLib.track)\n * @callback trackFunction\n * @param {String} event_name The name of the event. This can be anything the user does - 'Button Click', 'Sign Up', 'Item Purchased', etc.\n * @param {Object} [properties] A set of properties to include with the event you're sending. These describe the user who did the event or details about the event itself.\n * @param {Function} [callback] If provided, the callback function will be called after tracking the event.\n */\n\n/** Public **/\n\nvar GDPR_DEFAULT_PERSISTENCE_PREFIX = '__mp_opt_in_out_';\n\n/**\n * Opt the user in to data tracking and cookies/localstorage for the given token\n * @param {string} token - Mixpanel project tracking token\n * @param {Object} [options]\n * @param {trackFunction} [options.track] - function used for tracking a Mixpanel event to record the opt-in action\n * @param {string} [options.trackEventName] - event name to be used for tracking the opt-in action\n * @param {Object} [options.trackProperties] - set of properties to be tracked along with the opt-in action\n * @param {string} [options.persistenceType] Persistence mechanism used - cookie or localStorage\n * @param {string} [options.persistencePrefix=__mp_opt_in_out] - custom prefix to be used in the cookie/localstorage name\n * @param {Number} [options.cookieExpiration] - number of days until the opt-in cookie expires\n * @param {string} [options.cookieDomain] - custom cookie domain\n * @param {boolean} [options.crossSiteCookie] - whether the opt-in cookie is set as cross-site-enabled\n * @param {boolean} [options.crossSubdomainCookie] - whether the opt-in cookie is set as cross-subdomain or not\n * @param {boolean} [options.secureCookie] - whether the opt-in cookie is set as secure or not\n */\nfunction optIn(token, options) {\n    _optInOut(true, token, options);\n}\n\n/**\n * Opt the user out of data tracking and cookies/localstorage for the given token\n * @param {string} token - Mixpanel project tracking token\n * @param {Object} [options]\n * @param {string} [options.persistenceType] Persistence mechanism used - cookie or localStorage\n * @param {string} [options.persistencePrefix=__mp_opt_in_out] - custom prefix to be used in the cookie/localstorage name\n * @param {Number} [options.cookieExpiration] - number of days until the opt-out cookie expires\n * @param {string} [options.cookieDomain] - custom cookie domain\n * @param {boolean} [options.crossSiteCookie] - whether the opt-in cookie is set as cross-site-enabled\n * @param {boolean} [options.crossSubdomainCookie] - whether the opt-out cookie is set as cross-subdomain or not\n * @param {boolean} [options.secureCookie] - whether the opt-out cookie is set as secure or not\n */\nfunction optOut(token, options) {\n    _optInOut(false, token, options);\n}\n\n/**\n * Check whether the user has opted in to data tracking and cookies/localstorage for the given token\n * @param {string} token - Mixpanel project tracking token\n * @param {Object} [options]\n * @param {string} [options.persistenceType] Persistence mechanism used - cookie or localStorage\n * @param {string} [options.persistencePrefix=__mp_opt_in_out] - custom prefix to be used in the cookie/localstorage name\n * @returns {boolean} whether the user has opted in to the given opt type\n */\nfunction hasOptedIn(token, options) {\n    return _getStorageValue(token, options) === '1';\n}\n\n/**\n * Check whether the user has opted out of data tracking and cookies/localstorage for the given token\n * @param {string} token - Mixpanel project tracking token\n * @param {Object} [options]\n * @param {string} [options.persistenceType] Persistence mechanism used - cookie or localStorage\n * @param {string} [options.persistencePrefix=__mp_opt_in_out] - custom prefix to be used in the cookie/localstorage name\n * @param {boolean} [options.ignoreDnt] - flag to ignore browser DNT settings and always return false\n * @returns {boolean} whether the user has opted out of the given opt type\n */\nfunction hasOptedOut(token, options) {\n    if (_hasDoNotTrackFlagOn(options)) {\n        console.warn('This browser has \"Do Not Track\" enabled. This will prevent the Mixpanel SDK from sending any data. To ignore the \"Do Not Track\" browser setting, initialize the Mixpanel instance with the config \"ignore_dnt: true\"');\n        return true;\n    }\n    var optedOut = _getStorageValue(token, options) === '0';\n    if (optedOut) {\n        console.warn('You are opted out of Mixpanel tracking. This will prevent the Mixpanel SDK from sending any data.');\n    }\n    return optedOut;\n}\n\n/**\n * Wrap a MixpanelLib method with a check for whether the user is opted out of data tracking and cookies/localstorage for the given token\n * If the user has opted out, return early instead of executing the method.\n * If a callback argument was provided, execute it passing the 0 error code.\n * @param {function} method - wrapped method to be executed if the user has not opted out\n * @returns {*} the result of executing method OR undefined if the user has opted out\n */\nfunction addOptOutCheckMixpanelLib(method) {\n    return _addOptOutCheck(method, function(name) {\n        return this.get_config(name);\n    });\n}\n\n/**\n * Wrap a MixpanelPeople method with a check for whether the user is opted out of data tracking and cookies/localstorage for the given token\n * If the user has opted out, return early instead of executing the method.\n * If a callback argument was provided, execute it passing the 0 error code.\n * @param {function} method - wrapped method to be executed if the user has not opted out\n * @returns {*} the result of executing method OR undefined if the user has opted out\n */\nfunction addOptOutCheckMixpanelPeople(method) {\n    return _addOptOutCheck(method, function(name) {\n        return this._get_config(name);\n    });\n}\n\n/**\n * Wrap a MixpanelGroup method with a check for whether the user is opted out of data tracking and cookies/localstorage for the given token\n * If the user has opted out, return early instead of executing the method.\n * If a callback argument was provided, execute it passing the 0 error code.\n * @param {function} method - wrapped method to be executed if the user has not opted out\n * @returns {*} the result of executing method OR undefined if the user has opted out\n */\nfunction addOptOutCheckMixpanelGroup(method) {\n    return _addOptOutCheck(method, function(name) {\n        return this._get_config(name);\n    });\n}\n\n/**\n * Clear the user's opt in/out status of data tracking and cookies/localstorage for the given token\n * @param {string} token - Mixpanel project tracking token\n * @param {Object} [options]\n * @param {string} [options.persistenceType] Persistence mechanism used - cookie or localStorage\n * @param {string} [options.persistencePrefix=__mp_opt_in_out] - custom prefix to be used in the cookie/localstorage name\n * @param {Number} [options.cookieExpiration] - number of days until the opt-in cookie expires\n * @param {string} [options.cookieDomain] - custom cookie domain\n * @param {boolean} [options.crossSiteCookie] - whether the opt-in cookie is set as cross-site-enabled\n * @param {boolean} [options.crossSubdomainCookie] - whether the opt-in cookie is set as cross-subdomain or not\n * @param {boolean} [options.secureCookie] - whether the opt-in cookie is set as secure or not\n */\nfunction clearOptInOut(token, options) {\n    options = options || {};\n    _getStorage(options).remove(\n        _getStorageKey(token, options), !!options.crossSubdomainCookie, options.cookieDomain\n    );\n}\n\n/** Private **/\n\n/**\n * Get storage util\n * @param {Object} [options]\n * @param {string} [options.persistenceType]\n * @returns {object} either _.cookie or _.localstorage\n */\nfunction _getStorage(options) {\n    options = options || {};\n    return options.persistenceType === 'localStorage' ? _.localStorage : _.cookie;\n}\n\n/**\n * Get the name of the cookie that is used for the given opt type (tracking, cookie, etc.)\n * @param {string} token - Mixpanel project tracking token\n * @param {Object} [options]\n * @param {string} [options.persistencePrefix=__mp_opt_in_out] - custom prefix to be used in the cookie/localstorage name\n * @returns {string} the name of the cookie for the given opt type\n */\nfunction _getStorageKey(token, options) {\n    options = options || {};\n    return (options.persistencePrefix || GDPR_DEFAULT_PERSISTENCE_PREFIX) + token;\n}\n\n/**\n * Get the value of the cookie that is used for the given opt type (tracking, cookie, etc.)\n * @param {string} token - Mixpanel project tracking token\n * @param {Object} [options]\n * @param {string} [options.persistencePrefix=__mp_opt_in_out] - custom prefix to be used in the cookie/localstorage name\n * @returns {string} the value of the cookie for the given opt type\n */\nfunction _getStorageValue(token, options) {\n    return _getStorage(options).get(_getStorageKey(token, options));\n}\n\n/**\n * Check whether the user has set the DNT/doNotTrack setting to true in their browser\n * @param {Object} [options]\n * @param {string} [options.window] - alternate window object to check; used to force various DNT settings in browser tests\n * @param {boolean} [options.ignoreDnt] - flag to ignore browser DNT settings and always return false\n * @returns {boolean} whether the DNT setting is true\n */\nfunction _hasDoNotTrackFlagOn(options) {\n    if (options && options.ignoreDnt) {\n        return false;\n    }\n    var win = (options && options.window) || window$1;\n    var nav = win['navigator'] || {};\n    var hasDntOn = false;\n\n    _.each([\n        nav['doNotTrack'], // standard\n        nav['msDoNotTrack'],\n        win['doNotTrack']\n    ], function(dntValue) {\n        if (_.includes([true, 1, '1', 'yes'], dntValue)) {\n            hasDntOn = true;\n        }\n    });\n\n    return hasDntOn;\n}\n\n/**\n * Set cookie/localstorage for the user indicating that they are opted in or out for the given opt type\n * @param {boolean} optValue - whether to opt the user in or out for the given opt type\n * @param {string} token - Mixpanel project tracking token\n * @param {Object} [options]\n * @param {trackFunction} [options.track] - function used for tracking a Mixpanel event to record the opt-in action\n * @param {string} [options.trackEventName] - event name to be used for tracking the opt-in action\n * @param {Object} [options.trackProperties] - set of properties to be tracked along with the opt-in action\n * @param {string} [options.persistencePrefix=__mp_opt_in_out] - custom prefix to be used in the cookie/localstorage name\n * @param {Number} [options.cookieExpiration] - number of days until the opt-in cookie expires\n * @param {string} [options.cookieDomain] - custom cookie domain\n * @param {boolean} [options.crossSiteCookie] - whether the opt-in cookie is set as cross-site-enabled\n * @param {boolean} [options.crossSubdomainCookie] - whether the opt-in cookie is set as cross-subdomain or not\n * @param {boolean} [options.secureCookie] - whether the opt-in cookie is set as secure or not\n */\nfunction _optInOut(optValue, token, options) {\n    if (!_.isString(token) || !token.length) {\n        console.error('gdpr.' + (optValue ? 'optIn' : 'optOut') + ' called with an invalid token');\n        return;\n    }\n\n    options = options || {};\n\n    _getStorage(options).set(\n        _getStorageKey(token, options),\n        optValue ? 1 : 0,\n        _.isNumber(options.cookieExpiration) ? options.cookieExpiration : null,\n        !!options.crossSubdomainCookie,\n        !!options.secureCookie,\n        !!options.crossSiteCookie,\n        options.cookieDomain\n    );\n\n    if (options.track && optValue) { // only track event if opting in (optValue=true)\n        options.track(options.trackEventName || '$opt_in', options.trackProperties, {\n            'send_immediately': true\n        });\n    }\n}\n\n/**\n * Wrap a method with a check for whether the user is opted out of data tracking and cookies/localstorage for the given token\n * If the user has opted out, return early instead of executing the method.\n * If a callback argument was provided, execute it passing the 0 error code.\n * @param {function} method - wrapped method to be executed if the user has not opted out\n * @param {function} getConfigValue - getter function for the Mixpanel API token and other options to be used with opt-out check\n * @returns {*} the result of executing method OR undefined if the user has opted out\n */\nfunction _addOptOutCheck(method, getConfigValue) {\n    return function() {\n        var optedOut = false;\n\n        try {\n            var token = getConfigValue.call(this, 'token');\n            var ignoreDnt = getConfigValue.call(this, 'ignore_dnt');\n            var persistenceType = getConfigValue.call(this, 'opt_out_tracking_persistence_type');\n            var persistencePrefix = getConfigValue.call(this, 'opt_out_tracking_cookie_prefix');\n            var win = getConfigValue.call(this, 'window'); // used to override window during browser tests\n\n            if (token) { // if there was an issue getting the token, continue method execution as normal\n                optedOut = hasOptedOut(token, {\n                    ignoreDnt: ignoreDnt,\n                    persistenceType: persistenceType,\n                    persistencePrefix: persistencePrefix,\n                    window: win\n                });\n            }\n        } catch(err) {\n            console.error('Unexpected error when checking tracking opt-out status: ' + err);\n        }\n\n        if (!optedOut) {\n            return method.apply(this, arguments);\n        }\n\n        var callback = arguments[arguments.length - 1];\n        if (typeof(callback) === 'function') {\n            callback(0);\n        }\n\n        return;\n    };\n}\n\n/** @const */ var SET_ACTION      = '$set';\n/** @const */ var SET_ONCE_ACTION = '$set_once';\n/** @const */ var UNSET_ACTION    = '$unset';\n/** @const */ var ADD_ACTION      = '$add';\n/** @const */ var APPEND_ACTION   = '$append';\n/** @const */ var UNION_ACTION    = '$union';\n/** @const */ var REMOVE_ACTION   = '$remove';\n/** @const */ var DELETE_ACTION   = '$delete';\n\n// Common internal methods for mixpanel.people and mixpanel.group APIs.\n// These methods shouldn't involve network I/O.\nvar apiActions = {\n    set_action: function(prop, to) {\n        var data = {};\n        var $set = {};\n        if (_.isObject(prop)) {\n            _.each(prop, function(v, k) {\n                if (!this._is_reserved_property(k)) {\n                    $set[k] = v;\n                }\n            }, this);\n        } else {\n            $set[prop] = to;\n        }\n\n        data[SET_ACTION] = $set;\n        return data;\n    },\n\n    unset_action: function(prop) {\n        var data = {};\n        var $unset = [];\n        if (!_.isArray(prop)) {\n            prop = [prop];\n        }\n\n        _.each(prop, function(k) {\n            if (!this._is_reserved_property(k)) {\n                $unset.push(k);\n            }\n        }, this);\n\n        data[UNSET_ACTION] = $unset;\n        return data;\n    },\n\n    set_once_action: function(prop, to) {\n        var data = {};\n        var $set_once = {};\n        if (_.isObject(prop)) {\n            _.each(prop, function(v, k) {\n                if (!this._is_reserved_property(k)) {\n                    $set_once[k] = v;\n                }\n            }, this);\n        } else {\n            $set_once[prop] = to;\n        }\n        data[SET_ONCE_ACTION] = $set_once;\n        return data;\n    },\n\n    union_action: function(list_name, values) {\n        var data = {};\n        var $union = {};\n        if (_.isObject(list_name)) {\n            _.each(list_name, function(v, k) {\n                if (!this._is_reserved_property(k)) {\n                    $union[k] = _.isArray(v) ? v : [v];\n                }\n            }, this);\n        } else {\n            $union[list_name] = _.isArray(values) ? values : [values];\n        }\n        data[UNION_ACTION] = $union;\n        return data;\n    },\n\n    append_action: function(list_name, value) {\n        var data = {};\n        var $append = {};\n        if (_.isObject(list_name)) {\n            _.each(list_name, function(v, k) {\n                if (!this._is_reserved_property(k)) {\n                    $append[k] = v;\n                }\n            }, this);\n        } else {\n            $append[list_name] = value;\n        }\n        data[APPEND_ACTION] = $append;\n        return data;\n    },\n\n    remove_action: function(list_name, value) {\n        var data = {};\n        var $remove = {};\n        if (_.isObject(list_name)) {\n            _.each(list_name, function(v, k) {\n                if (!this._is_reserved_property(k)) {\n                    $remove[k] = v;\n                }\n            }, this);\n        } else {\n            $remove[list_name] = value;\n        }\n        data[REMOVE_ACTION] = $remove;\n        return data;\n    },\n\n    delete_action: function() {\n        var data = {};\n        data[DELETE_ACTION] = '';\n        return data;\n    }\n};\n\n/**\n * Mixpanel Group Object\n * @constructor\n */\nvar MixpanelGroup = function() {};\n\n_.extend(MixpanelGroup.prototype, apiActions);\n\nMixpanelGroup.prototype._init = function(mixpanel_instance, group_key, group_id) {\n    this._mixpanel = mixpanel_instance;\n    this._group_key = group_key;\n    this._group_id = group_id;\n};\n\n/**\n * Set properties on a group.\n *\n * ### Usage:\n *\n *     mixpanel.get_group('company', 'mixpanel').set('Location', '405 Howard');\n *\n *     // or set multiple properties at once\n *     mixpanel.get_group('company', 'mixpanel').set({\n *          'Location': '405 Howard',\n *          'Founded' : 2009,\n *     });\n *     // properties can be strings, integers, dates, or lists\n *\n * @param {Object|String} prop If a string, this is the name of the property. If an object, this is an associative array of names and values.\n * @param {*} [to] A value to set on the given property name\n * @param {Function} [callback] If provided, the callback will be called after the tracking event\n */\nMixpanelGroup.prototype.set = addOptOutCheckMixpanelGroup(function(prop, to, callback) {\n    var data = this.set_action(prop, to);\n    if (_.isObject(prop)) {\n        callback = to;\n    }\n    return this._send_request(data, callback);\n});\n\n/**\n * Set properties on a group, only if they do not yet exist.\n * This will not overwrite previous group property values, unlike\n * group.set().\n *\n * ### Usage:\n *\n *     mixpanel.get_group('company', 'mixpanel').set_once('Location', '405 Howard');\n *\n *     // or set multiple properties at once\n *     mixpanel.get_group('company', 'mixpanel').set_once({\n *          'Location': '405 Howard',\n *          'Founded' : 2009,\n *     });\n *     // properties can be strings, integers, lists or dates\n *\n * @param {Object|String} prop If a string, this is the name of the property. If an object, this is an associative array of names and values.\n * @param {*} [to] A value to set on the given property name\n * @param {Function} [callback] If provided, the callback will be called after the tracking event\n */\nMixpanelGroup.prototype.set_once = addOptOutCheckMixpanelGroup(function(prop, to, callback) {\n    var data = this.set_once_action(prop, to);\n    if (_.isObject(prop)) {\n        callback = to;\n    }\n    return this._send_request(data, callback);\n});\n\n/**\n * Unset properties on a group permanently.\n *\n * ### Usage:\n *\n *     mixpanel.get_group('company', 'mixpanel').unset('Founded');\n *\n * @param {String} prop The name of the property.\n * @param {Function} [callback] If provided, the callback will be called after the tracking event\n */\nMixpanelGroup.prototype.unset = addOptOutCheckMixpanelGroup(function(prop, callback) {\n    var data = this.unset_action(prop);\n    return this._send_request(data, callback);\n});\n\n/**\n * Merge a given list with a list-valued group property, excluding duplicate values.\n *\n * ### Usage:\n *\n *     // merge a value to a list, creating it if needed\n *     mixpanel.get_group('company', 'mixpanel').union('Location', ['San Francisco', 'London']);\n *\n * @param {String} list_name Name of the property.\n * @param {Array} values Values to merge with the given property\n * @param {Function} [callback] If provided, the callback will be called after the tracking event\n */\nMixpanelGroup.prototype.union = addOptOutCheckMixpanelGroup(function(list_name, values, callback) {\n    if (_.isObject(list_name)) {\n        callback = values;\n    }\n    var data = this.union_action(list_name, values);\n    return this._send_request(data, callback);\n});\n\n/**\n * Permanently delete a group.\n *\n * ### Usage:\n *\n *     mixpanel.get_group('company', 'mixpanel').delete();\n *\n * @param {Function} [callback] If provided, the callback will be called after the tracking event\n */\nMixpanelGroup.prototype['delete'] = addOptOutCheckMixpanelGroup(function(callback) {\n    // bracket notation above prevents a minification error related to reserved words\n    var data = this.delete_action();\n    return this._send_request(data, callback);\n});\n\n/**\n * Remove a property from a group. The value will be ignored if doesn't exist.\n *\n * ### Usage:\n *\n *     mixpanel.get_group('company', 'mixpanel').remove('Location', 'London');\n *\n * @param {String} list_name Name of the property.\n * @param {Object} value Value to remove from the given group property\n * @param {Function} [callback] If provided, the callback will be called after the tracking event\n */\nMixpanelGroup.prototype.remove = addOptOutCheckMixpanelGroup(function(list_name, value, callback) {\n    var data = this.remove_action(list_name, value);\n    return this._send_request(data, callback);\n});\n\nMixpanelGroup.prototype._send_request = function(data, callback) {\n    data['$group_key'] = this._group_key;\n    data['$group_id'] = this._group_id;\n    data['$token'] = this._get_config('token');\n\n    var date_encoded_data = _.encodeDates(data);\n    return this._mixpanel._track_or_batch({\n        type: 'groups',\n        data: date_encoded_data,\n        endpoint: this._get_config('api_host') + '/groups/',\n        batcher: this._mixpanel.request_batchers.groups\n    }, callback);\n};\n\nMixpanelGroup.prototype._is_reserved_property = function(prop) {\n    return prop === '$group_key' || prop === '$group_id';\n};\n\nMixpanelGroup.prototype._get_config = function(conf) {\n    return this._mixpanel.get_config(conf);\n};\n\nMixpanelGroup.prototype.toString = function() {\n    return this._mixpanel.toString() + '.group.' + this._group_key + '.' + this._group_id;\n};\n\n// MixpanelGroup Exports\nMixpanelGroup.prototype['remove']   = MixpanelGroup.prototype.remove;\nMixpanelGroup.prototype['set']      = MixpanelGroup.prototype.set;\nMixpanelGroup.prototype['set_once'] = MixpanelGroup.prototype.set_once;\nMixpanelGroup.prototype['union']    = MixpanelGroup.prototype.union;\nMixpanelGroup.prototype['unset']    = MixpanelGroup.prototype.unset;\nMixpanelGroup.prototype['toString'] = MixpanelGroup.prototype.toString;\n\n/**\n * Mixpanel People Object\n * @constructor\n */\nvar MixpanelPeople = function() {};\n\n_.extend(MixpanelPeople.prototype, apiActions);\n\nMixpanelPeople.prototype._init = function(mixpanel_instance) {\n    this._mixpanel = mixpanel_instance;\n};\n\n/*\n* Set properties on a user record.\n*\n* ### Usage:\n*\n*     mixpanel.people.set('gender', 'm');\n*\n*     // or set multiple properties at once\n*     mixpanel.people.set({\n*         'Company': 'Acme',\n*         'Plan': 'Premium',\n*         'Upgrade date': new Date()\n*     });\n*     // properties can be strings, integers, dates, or lists\n*\n* @param {Object|String} prop If a string, this is the name of the property. If an object, this is an associative array of names and values.\n* @param {*} [to] A value to set on the given property name\n* @param {Function} [callback] If provided, the callback will be called after tracking the event.\n*/\nMixpanelPeople.prototype.set = addOptOutCheckMixpanelPeople(function(prop, to, callback) {\n    var data = this.set_action(prop, to);\n    if (_.isObject(prop)) {\n        callback = to;\n    }\n    // make sure that the referrer info has been updated and saved\n    if (this._get_config('save_referrer')) {\n        this._mixpanel['persistence'].update_referrer_info(document.referrer);\n    }\n\n    // update $set object with default people properties\n    data[SET_ACTION] = _.extend(\n        {},\n        _.info.people_properties(),\n        this._mixpanel['persistence'].get_referrer_info(),\n        data[SET_ACTION]\n    );\n    return this._send_request(data, callback);\n});\n\n/*\n* Set properties on a user record, only if they do not yet exist.\n* This will not overwrite previous people property values, unlike\n* people.set().\n*\n* ### Usage:\n*\n*     mixpanel.people.set_once('First Login Date', new Date());\n*\n*     // or set multiple properties at once\n*     mixpanel.people.set_once({\n*         'First Login Date': new Date(),\n*         'Starting Plan': 'Premium'\n*     });\n*\n*     // properties can be strings, integers or dates\n*\n* @param {Object|String} prop If a string, this is the name of the property. If an object, this is an associative array of names and values.\n* @param {*} [to] A value to set on the given property name\n* @param {Function} [callback] If provided, the callback will be called after tracking the event.\n*/\nMixpanelPeople.prototype.set_once = addOptOutCheckMixpanelPeople(function(prop, to, callback) {\n    var data = this.set_once_action(prop, to);\n    if (_.isObject(prop)) {\n        callback = to;\n    }\n    return this._send_request(data, callback);\n});\n\n/*\n* Unset properties on a user record (permanently removes the properties and their values from a profile).\n*\n* ### Usage:\n*\n*     mixpanel.people.unset('gender');\n*\n*     // or unset multiple properties at once\n*     mixpanel.people.unset(['gender', 'Company']);\n*\n* @param {Array|String} prop If a string, this is the name of the property. If an array, this is a list of property names.\n* @param {Function} [callback] If provided, the callback will be called after tracking the event.\n*/\nMixpanelPeople.prototype.unset = addOptOutCheckMixpanelPeople(function(prop, callback) {\n    var data = this.unset_action(prop);\n    return this._send_request(data, callback);\n});\n\n/*\n* Increment/decrement numeric people analytics properties.\n*\n* ### Usage:\n*\n*     mixpanel.people.increment('page_views', 1);\n*\n*     // or, for convenience, if you're just incrementing a counter by\n*     // 1, you can simply do\n*     mixpanel.people.increment('page_views');\n*\n*     // to decrement a counter, pass a negative number\n*     mixpanel.people.increment('credits_left', -1);\n*\n*     // like mixpanel.people.set(), you can increment multiple\n*     // properties at once:\n*     mixpanel.people.increment({\n*         counter1: 1,\n*         counter2: 6\n*     });\n*\n* @param {Object|String} prop If a string, this is the name of the property. If an object, this is an associative array of names and numeric values.\n* @param {Number} [by] An amount to increment the given property\n* @param {Function} [callback] If provided, the callback will be called after tracking the event.\n*/\nMixpanelPeople.prototype.increment = addOptOutCheckMixpanelPeople(function(prop, by, callback) {\n    var data = {};\n    var $add = {};\n    if (_.isObject(prop)) {\n        _.each(prop, function(v, k) {\n            if (!this._is_reserved_property(k)) {\n                if (isNaN(parseFloat(v))) {\n                    console.error('Invalid increment value passed to mixpanel.people.increment - must be a number');\n                    return;\n                } else {\n                    $add[k] = v;\n                }\n            }\n        }, this);\n        callback = by;\n    } else {\n        // convenience: mixpanel.people.increment('property'); will\n        // increment 'property' by 1\n        if (_.isUndefined(by)) {\n            by = 1;\n        }\n        $add[prop] = by;\n    }\n    data[ADD_ACTION] = $add;\n\n    return this._send_request(data, callback);\n});\n\n/*\n* Append a value to a list-valued people analytics property.\n*\n* ### Usage:\n*\n*     // append a value to a list, creating it if needed\n*     mixpanel.people.append('pages_visited', 'homepage');\n*\n*     // like mixpanel.people.set(), you can append multiple\n*     // properties at once:\n*     mixpanel.people.append({\n*         list1: 'bob',\n*         list2: 123\n*     });\n*\n* @param {Object|String} list_name If a string, this is the name of the property. If an object, this is an associative array of names and values.\n* @param {*} [value] value An item to append to the list\n* @param {Function} [callback] If provided, the callback will be called after tracking the event.\n*/\nMixpanelPeople.prototype.append = addOptOutCheckMixpanelPeople(function(list_name, value, callback) {\n    if (_.isObject(list_name)) {\n        callback = value;\n    }\n    var data = this.append_action(list_name, value);\n    return this._send_request(data, callback);\n});\n\n/*\n* Remove a value from a list-valued people analytics property.\n*\n* ### Usage:\n*\n*     mixpanel.people.remove('School', 'UCB');\n*\n* @param {Object|String} list_name If a string, this is the name of the property. If an object, this is an associative array of names and values.\n* @param {*} [value] value Item to remove from the list\n* @param {Function} [callback] If provided, the callback will be called after tracking the event.\n*/\nMixpanelPeople.prototype.remove = addOptOutCheckMixpanelPeople(function(list_name, value, callback) {\n    if (_.isObject(list_name)) {\n        callback = value;\n    }\n    var data = this.remove_action(list_name, value);\n    return this._send_request(data, callback);\n});\n\n/*\n* Merge a given list with a list-valued people analytics property,\n* excluding duplicate values.\n*\n* ### Usage:\n*\n*     // merge a value to a list, creating it if needed\n*     mixpanel.people.union('pages_visited', 'homepage');\n*\n*     // like mixpanel.people.set(), you can append multiple\n*     // properties at once:\n*     mixpanel.people.union({\n*         list1: 'bob',\n*         list2: 123\n*     });\n*\n*     // like mixpanel.people.append(), you can append multiple\n*     // values to the same list:\n*     mixpanel.people.union({\n*         list1: ['bob', 'billy']\n*     });\n*\n* @param {Object|String} list_name If a string, this is the name of the property. If an object, this is an associative array of names and values.\n* @param {*} [value] Value / values to merge with the given property\n* @param {Function} [callback] If provided, the callback will be called after tracking the event.\n*/\nMixpanelPeople.prototype.union = addOptOutCheckMixpanelPeople(function(list_name, values, callback) {\n    if (_.isObject(list_name)) {\n        callback = values;\n    }\n    var data = this.union_action(list_name, values);\n    return this._send_request(data, callback);\n});\n\n/*\n * Record that you have charged the current user a certain amount\n * of money. Charges recorded with track_charge() will appear in the\n * Mixpanel revenue report.\n *\n * ### Usage:\n *\n *     // charge a user $50\n *     mixpanel.people.track_charge(50);\n *\n *     // charge a user $30.50 on the 2nd of january\n *     mixpanel.people.track_charge(30.50, {\n *         '$time': new Date('jan 1 2012')\n *     });\n *\n * @param {Number} amount The amount of money charged to the current user\n * @param {Object} [properties] An associative array of properties associated with the charge\n * @param {Function} [callback] If provided, the callback will be called when the server responds\n * @deprecated\n */\nMixpanelPeople.prototype.track_charge = addOptOutCheckMixpanelPeople(function(amount, properties, callback) {\n    if (!_.isNumber(amount)) {\n        amount = parseFloat(amount);\n        if (isNaN(amount)) {\n            console.error('Invalid value passed to mixpanel.people.track_charge - must be a number');\n            return;\n        }\n    }\n\n    return this.append('$transactions', _.extend({\n        '$amount': amount\n    }, properties), callback);\n});\n\n/*\n * Permanently clear all revenue report transactions from the\n * current user's people analytics profile.\n *\n * ### Usage:\n *\n *     mixpanel.people.clear_charges();\n *\n * @param {Function} [callback] If provided, the callback will be called after tracking the event.\n * @deprecated\n */\nMixpanelPeople.prototype.clear_charges = function(callback) {\n    return this.set('$transactions', [], callback);\n};\n\n/*\n* Permanently deletes the current people analytics profile from\n* Mixpanel (using the current distinct_id).\n*\n* ### Usage:\n*\n*     // remove the all data you have stored about the current user\n*     mixpanel.people.delete_user();\n*\n*/\nMixpanelPeople.prototype.delete_user = function() {\n    if (!this._identify_called()) {\n        console.error('mixpanel.people.delete_user() requires you to call identify() first');\n        return;\n    }\n    var data = {'$delete': this._mixpanel.get_distinct_id()};\n    return this._send_request(data);\n};\n\nMixpanelPeople.prototype.toString = function() {\n    return this._mixpanel.toString() + '.people';\n};\n\nMixpanelPeople.prototype._send_request = function(data, callback) {\n    data['$token'] = this._get_config('token');\n    data['$distinct_id'] = this._mixpanel.get_distinct_id();\n    var device_id = this._mixpanel.get_property('$device_id');\n    var user_id = this._mixpanel.get_property('$user_id');\n    var had_persisted_distinct_id = this._mixpanel.get_property('$had_persisted_distinct_id');\n    if (device_id) {\n        data['$device_id'] = device_id;\n    }\n    if (user_id) {\n        data['$user_id'] = user_id;\n    }\n    if (had_persisted_distinct_id) {\n        data['$had_persisted_distinct_id'] = had_persisted_distinct_id;\n    }\n\n    var date_encoded_data = _.encodeDates(data);\n\n    if (!this._identify_called()) {\n        this._enqueue(data);\n        if (!_.isUndefined(callback)) {\n            if (this._get_config('verbose')) {\n                callback({status: -1, error: null});\n            } else {\n                callback(-1);\n            }\n        }\n        return _.truncate(date_encoded_data, 255);\n    }\n\n    return this._mixpanel._track_or_batch({\n        type: 'people',\n        data: date_encoded_data,\n        endpoint: this._get_config('api_host') + '/engage/',\n        batcher: this._mixpanel.request_batchers.people\n    }, callback);\n};\n\nMixpanelPeople.prototype._get_config = function(conf_var) {\n    return this._mixpanel.get_config(conf_var);\n};\n\nMixpanelPeople.prototype._identify_called = function() {\n    return this._mixpanel._flags.identify_called === true;\n};\n\n// Queue up engage operations if identify hasn't been called yet.\nMixpanelPeople.prototype._enqueue = function(data) {\n    if (SET_ACTION in data) {\n        this._mixpanel['persistence']._add_to_people_queue(SET_ACTION, data);\n    } else if (SET_ONCE_ACTION in data) {\n        this._mixpanel['persistence']._add_to_people_queue(SET_ONCE_ACTION, data);\n    } else if (UNSET_ACTION in data) {\n        this._mixpanel['persistence']._add_to_people_queue(UNSET_ACTION, data);\n    } else if (ADD_ACTION in data) {\n        this._mixpanel['persistence']._add_to_people_queue(ADD_ACTION, data);\n    } else if (APPEND_ACTION in data) {\n        this._mixpanel['persistence']._add_to_people_queue(APPEND_ACTION, data);\n    } else if (REMOVE_ACTION in data) {\n        this._mixpanel['persistence']._add_to_people_queue(REMOVE_ACTION, data);\n    } else if (UNION_ACTION in data) {\n        this._mixpanel['persistence']._add_to_people_queue(UNION_ACTION, data);\n    } else {\n        console.error('Invalid call to _enqueue():', data);\n    }\n};\n\nMixpanelPeople.prototype._flush_one_queue = function(action, action_method, callback, queue_to_params_fn) {\n    var _this = this;\n    var queued_data = _.extend({}, this._mixpanel['persistence']._get_queue(action));\n    var action_params = queued_data;\n\n    if (!_.isUndefined(queued_data) && _.isObject(queued_data) && !_.isEmptyObject(queued_data)) {\n        _this._mixpanel['persistence']._pop_from_people_queue(action, queued_data);\n        if (queue_to_params_fn) {\n            action_params = queue_to_params_fn(queued_data);\n        }\n        action_method.call(_this, action_params, function(response, data) {\n            // on bad response, we want to add it back to the queue\n            if (response === 0) {\n                _this._mixpanel['persistence']._add_to_people_queue(action, queued_data);\n            }\n            if (!_.isUndefined(callback)) {\n                callback(response, data);\n            }\n        });\n    }\n};\n\n// Flush queued engage operations - order does not matter,\n// and there are network level race conditions anyway\nMixpanelPeople.prototype._flush = function(\n    _set_callback, _add_callback, _append_callback, _set_once_callback, _union_callback, _unset_callback, _remove_callback\n) {\n    var _this = this;\n    var $append_queue = this._mixpanel['persistence']._get_queue(APPEND_ACTION);\n    var $remove_queue = this._mixpanel['persistence']._get_queue(REMOVE_ACTION);\n\n    this._flush_one_queue(SET_ACTION, this.set, _set_callback);\n    this._flush_one_queue(SET_ONCE_ACTION, this.set_once, _set_once_callback);\n    this._flush_one_queue(UNSET_ACTION, this.unset, _unset_callback, function(queue) { return _.keys(queue); });\n    this._flush_one_queue(ADD_ACTION, this.increment, _add_callback);\n    this._flush_one_queue(UNION_ACTION, this.union, _union_callback);\n\n    // we have to fire off each $append individually since there is\n    // no concat method server side\n    if (!_.isUndefined($append_queue) && _.isArray($append_queue) && $append_queue.length) {\n        var $append_item;\n        var append_callback = function(response, data) {\n            if (response === 0) {\n                _this._mixpanel['persistence']._add_to_people_queue(APPEND_ACTION, $append_item);\n            }\n            if (!_.isUndefined(_append_callback)) {\n                _append_callback(response, data);\n            }\n        };\n        for (var i = $append_queue.length - 1; i >= 0; i--) {\n            $append_item = $append_queue.pop();\n            if (!_.isEmptyObject($append_item)) {\n                _this.append($append_item, append_callback);\n            }\n        }\n        // Save the shortened append queue\n        _this._mixpanel['persistence'].save();\n    }\n\n    // same for $remove\n    if (!_.isUndefined($remove_queue) && _.isArray($remove_queue) && $remove_queue.length) {\n        var $remove_item;\n        var remove_callback = function(response, data) {\n            if (response === 0) {\n                _this._mixpanel['persistence']._add_to_people_queue(REMOVE_ACTION, $remove_item);\n            }\n            if (!_.isUndefined(_remove_callback)) {\n                _remove_callback(response, data);\n            }\n        };\n        for (var j = $remove_queue.length - 1; j >= 0; j--) {\n            $remove_item = $remove_queue.pop();\n            if (!_.isEmptyObject($remove_item)) {\n                _this.remove($remove_item, remove_callback);\n            }\n        }\n        _this._mixpanel['persistence'].save();\n    }\n};\n\nMixpanelPeople.prototype._is_reserved_property = function(prop) {\n    return prop === '$distinct_id' || prop === '$token' || prop === '$device_id' || prop === '$user_id' || prop === '$had_persisted_distinct_id';\n};\n\n// MixpanelPeople Exports\nMixpanelPeople.prototype['set']           = MixpanelPeople.prototype.set;\nMixpanelPeople.prototype['set_once']      = MixpanelPeople.prototype.set_once;\nMixpanelPeople.prototype['unset']         = MixpanelPeople.prototype.unset;\nMixpanelPeople.prototype['increment']     = MixpanelPeople.prototype.increment;\nMixpanelPeople.prototype['append']        = MixpanelPeople.prototype.append;\nMixpanelPeople.prototype['remove']        = MixpanelPeople.prototype.remove;\nMixpanelPeople.prototype['union']         = MixpanelPeople.prototype.union;\nMixpanelPeople.prototype['track_charge']  = MixpanelPeople.prototype.track_charge;\nMixpanelPeople.prototype['clear_charges'] = MixpanelPeople.prototype.clear_charges;\nMixpanelPeople.prototype['delete_user']   = MixpanelPeople.prototype.delete_user;\nMixpanelPeople.prototype['toString']      = MixpanelPeople.prototype.toString;\n\n/*\n * Constants\n */\n/** @const */ var SET_QUEUE_KEY          = '__mps';\n/** @const */ var SET_ONCE_QUEUE_KEY     = '__mpso';\n/** @const */ var UNSET_QUEUE_KEY        = '__mpus';\n/** @const */ var ADD_QUEUE_KEY          = '__mpa';\n/** @const */ var APPEND_QUEUE_KEY       = '__mpap';\n/** @const */ var REMOVE_QUEUE_KEY       = '__mpr';\n/** @const */ var UNION_QUEUE_KEY        = '__mpu';\n// This key is deprecated, but we want to check for it to see whether aliasing is allowed.\n/** @const */ var PEOPLE_DISTINCT_ID_KEY = '$people_distinct_id';\n/** @const */ var ALIAS_ID_KEY           = '__alias';\n/** @const */ var EVENT_TIMERS_KEY       = '__timers';\n/** @const */ var RESERVED_PROPERTIES = [\n    SET_QUEUE_KEY,\n    SET_ONCE_QUEUE_KEY,\n    UNSET_QUEUE_KEY,\n    ADD_QUEUE_KEY,\n    APPEND_QUEUE_KEY,\n    REMOVE_QUEUE_KEY,\n    UNION_QUEUE_KEY,\n    PEOPLE_DISTINCT_ID_KEY,\n    ALIAS_ID_KEY,\n    EVENT_TIMERS_KEY\n];\n\n/**\n * Mixpanel Persistence Object\n * @constructor\n */\nvar MixpanelPersistence = function(config) {\n    this['props'] = {};\n    this.campaign_params_saved = false;\n\n    if (config['persistence_name']) {\n        this.name = 'mp_' + config['persistence_name'];\n    } else {\n        this.name = 'mp_' + config['token'] + '_mixpanel';\n    }\n\n    var storage_type = config['persistence'];\n    if (storage_type !== 'cookie' && storage_type !== 'localStorage') {\n        console.critical('Unknown persistence type ' + storage_type + '; falling back to cookie');\n        storage_type = config['persistence'] = 'cookie';\n    }\n\n    if (storage_type === 'localStorage' && _.localStorage.is_supported()) {\n        this.storage = _.localStorage;\n    } else {\n        this.storage = _.cookie;\n    }\n\n    this.load();\n    this.update_config(config);\n    this.upgrade(config);\n    this.save();\n};\n\nMixpanelPersistence.prototype.properties = function() {\n    var p = {};\n    // Filter out reserved properties\n    _.each(this['props'], function(v, k) {\n        if (!_.include(RESERVED_PROPERTIES, k)) {\n            p[k] = v;\n        }\n    });\n    return p;\n};\n\nMixpanelPersistence.prototype.load = function() {\n    if (this.disabled) { return; }\n\n    var entry = this.storage.parse(this.name);\n\n    if (entry) {\n        this['props'] = _.extend({}, entry);\n    }\n};\n\nMixpanelPersistence.prototype.upgrade = function(config) {\n    var upgrade_from_old_lib = config['upgrade'],\n        old_cookie_name,\n        old_cookie;\n\n    if (upgrade_from_old_lib) {\n        old_cookie_name = 'mp_super_properties';\n        // Case where they had a custom cookie name before.\n        if (typeof(upgrade_from_old_lib) === 'string') {\n            old_cookie_name = upgrade_from_old_lib;\n        }\n\n        old_cookie = this.storage.parse(old_cookie_name);\n\n        // remove the cookie\n        this.storage.remove(old_cookie_name);\n        this.storage.remove(old_cookie_name, true);\n\n        if (old_cookie) {\n            this['props'] = _.extend(\n                this['props'],\n                old_cookie['all'],\n                old_cookie['events']\n            );\n        }\n    }\n\n    if (!config['cookie_name'] && config['name'] !== 'mixpanel') {\n        // special case to handle people with cookies of the form\n        // mp_TOKEN_INSTANCENAME from the first release of this library\n        old_cookie_name = 'mp_' + config['token'] + '_' + config['name'];\n        old_cookie = this.storage.parse(old_cookie_name);\n\n        if (old_cookie) {\n            this.storage.remove(old_cookie_name);\n            this.storage.remove(old_cookie_name, true);\n\n            // Save the prop values that were in the cookie from before -\n            // this should only happen once as we delete the old one.\n            this.register_once(old_cookie);\n        }\n    }\n\n    if (this.storage === _.localStorage) {\n        old_cookie = _.cookie.parse(this.name);\n\n        _.cookie.remove(this.name);\n        _.cookie.remove(this.name, true);\n\n        if (old_cookie) {\n            this.register_once(old_cookie);\n        }\n    }\n};\n\nMixpanelPersistence.prototype.save = function() {\n    if (this.disabled) { return; }\n    this.storage.set(\n        this.name,\n        _.JSONEncode(this['props']),\n        this.expire_days,\n        this.cross_subdomain,\n        this.secure,\n        this.cross_site,\n        this.cookie_domain\n    );\n};\n\nMixpanelPersistence.prototype.remove = function() {\n    // remove both domain and subdomain cookies\n    this.storage.remove(this.name, false, this.cookie_domain);\n    this.storage.remove(this.name, true, this.cookie_domain);\n};\n\n// removes the storage entry and deletes all loaded data\n// forced name for tests\nMixpanelPersistence.prototype.clear = function() {\n    this.remove();\n    this['props'] = {};\n};\n\n/**\n* @param {Object} props\n* @param {*=} default_value\n* @param {number=} days\n*/\nMixpanelPersistence.prototype.register_once = function(props, default_value, days) {\n    if (_.isObject(props)) {\n        if (typeof(default_value) === 'undefined') { default_value = 'None'; }\n        this.expire_days = (typeof(days) === 'undefined') ? this.default_expiry : days;\n\n        _.each(props, function(val, prop) {\n            if (!this['props'].hasOwnProperty(prop) || this['props'][prop] === default_value) {\n                this['props'][prop] = val;\n            }\n        }, this);\n\n        this.save();\n\n        return true;\n    }\n    return false;\n};\n\n/**\n* @param {Object} props\n* @param {number=} days\n*/\nMixpanelPersistence.prototype.register = function(props, days) {\n    if (_.isObject(props)) {\n        this.expire_days = (typeof(days) === 'undefined') ? this.default_expiry : days;\n\n        _.extend(this['props'], props);\n\n        this.save();\n\n        return true;\n    }\n    return false;\n};\n\nMixpanelPersistence.prototype.unregister = function(prop) {\n    if (prop in this['props']) {\n        delete this['props'][prop];\n        this.save();\n    }\n};\n\nMixpanelPersistence.prototype.update_search_keyword = function(referrer) {\n    this.register(_.info.searchInfo(referrer));\n};\n\n// EXPORTED METHOD, we test this directly.\nMixpanelPersistence.prototype.update_referrer_info = function(referrer) {\n    // If referrer doesn't exist, we want to note the fact that it was type-in traffic.\n    this.register_once({\n        '$initial_referrer': referrer || '$direct',\n        '$initial_referring_domain': _.info.referringDomain(referrer) || '$direct'\n    }, '');\n};\n\nMixpanelPersistence.prototype.get_referrer_info = function() {\n    return _.strip_empty_properties({\n        '$initial_referrer': this['props']['$initial_referrer'],\n        '$initial_referring_domain': this['props']['$initial_referring_domain']\n    });\n};\n\n// safely fills the passed in object with stored properties,\n// does not override any properties defined in both\n// returns the passed in object\nMixpanelPersistence.prototype.safe_merge = function(props) {\n    _.each(this['props'], function(val, prop) {\n        if (!(prop in props)) {\n            props[prop] = val;\n        }\n    });\n\n    return props;\n};\n\nMixpanelPersistence.prototype.update_config = function(config) {\n    this.default_expiry = this.expire_days = config['cookie_expiration'];\n    this.set_disabled(config['disable_persistence']);\n    this.set_cookie_domain(config['cookie_domain']);\n    this.set_cross_site(config['cross_site_cookie']);\n    this.set_cross_subdomain(config['cross_subdomain_cookie']);\n    this.set_secure(config['secure_cookie']);\n};\n\nMixpanelPersistence.prototype.set_disabled = function(disabled) {\n    this.disabled = disabled;\n    if (this.disabled) {\n        this.remove();\n    } else {\n        this.save();\n    }\n};\n\nMixpanelPersistence.prototype.set_cookie_domain = function(cookie_domain) {\n    if (cookie_domain !== this.cookie_domain) {\n        this.remove();\n        this.cookie_domain = cookie_domain;\n        this.save();\n    }\n};\n\nMixpanelPersistence.prototype.set_cross_site = function(cross_site) {\n    if (cross_site !== this.cross_site) {\n        this.cross_site = cross_site;\n        this.remove();\n        this.save();\n    }\n};\n\nMixpanelPersistence.prototype.set_cross_subdomain = function(cross_subdomain) {\n    if (cross_subdomain !== this.cross_subdomain) {\n        this.cross_subdomain = cross_subdomain;\n        this.remove();\n        this.save();\n    }\n};\n\nMixpanelPersistence.prototype.get_cross_subdomain = function() {\n    return this.cross_subdomain;\n};\n\nMixpanelPersistence.prototype.set_secure = function(secure) {\n    if (secure !== this.secure) {\n        this.secure = secure ? true : false;\n        this.remove();\n        this.save();\n    }\n};\n\nMixpanelPersistence.prototype._add_to_people_queue = function(queue, data) {\n    var q_key = this._get_queue_key(queue),\n        q_data = data[queue],\n        set_q = this._get_or_create_queue(SET_ACTION),\n        set_once_q = this._get_or_create_queue(SET_ONCE_ACTION),\n        unset_q = this._get_or_create_queue(UNSET_ACTION),\n        add_q = this._get_or_create_queue(ADD_ACTION),\n        union_q = this._get_or_create_queue(UNION_ACTION),\n        remove_q = this._get_or_create_queue(REMOVE_ACTION, []),\n        append_q = this._get_or_create_queue(APPEND_ACTION, []);\n\n    if (q_key === SET_QUEUE_KEY) {\n        // Update the set queue - we can override any existing values\n        _.extend(set_q, q_data);\n        // if there was a pending increment, override it\n        // with the set.\n        this._pop_from_people_queue(ADD_ACTION, q_data);\n        // if there was a pending union, override it\n        // with the set.\n        this._pop_from_people_queue(UNION_ACTION, q_data);\n        this._pop_from_people_queue(UNSET_ACTION, q_data);\n    } else if (q_key === SET_ONCE_QUEUE_KEY) {\n        // only queue the data if there is not already a set_once call for it.\n        _.each(q_data, function(v, k) {\n            if (!(k in set_once_q)) {\n                set_once_q[k] = v;\n            }\n        });\n        this._pop_from_people_queue(UNSET_ACTION, q_data);\n    } else if (q_key === UNSET_QUEUE_KEY) {\n        _.each(q_data, function(prop) {\n\n            // undo previously-queued actions on this key\n            _.each([set_q, set_once_q, add_q, union_q], function(enqueued_obj) {\n                if (prop in enqueued_obj) {\n                    delete enqueued_obj[prop];\n                }\n            });\n            _.each(append_q, function(append_obj) {\n                if (prop in append_obj) {\n                    delete append_obj[prop];\n                }\n            });\n\n            unset_q[prop] = true;\n\n        });\n    } else if (q_key === ADD_QUEUE_KEY) {\n        _.each(q_data, function(v, k) {\n            // If it exists in the set queue, increment\n            // the value\n            if (k in set_q) {\n                set_q[k] += v;\n            } else {\n                // If it doesn't exist, update the add\n                // queue\n                if (!(k in add_q)) {\n                    add_q[k] = 0;\n                }\n                add_q[k] += v;\n            }\n        }, this);\n        this._pop_from_people_queue(UNSET_ACTION, q_data);\n    } else if (q_key === UNION_QUEUE_KEY) {\n        _.each(q_data, function(v, k) {\n            if (_.isArray(v)) {\n                if (!(k in union_q)) {\n                    union_q[k] = [];\n                }\n                // We may send duplicates, the server will dedup them.\n                union_q[k] = union_q[k].concat(v);\n            }\n        });\n        this._pop_from_people_queue(UNSET_ACTION, q_data);\n    } else if (q_key === REMOVE_QUEUE_KEY) {\n        remove_q.push(q_data);\n        this._pop_from_people_queue(APPEND_ACTION, q_data);\n    } else if (q_key === APPEND_QUEUE_KEY) {\n        append_q.push(q_data);\n        this._pop_from_people_queue(UNSET_ACTION, q_data);\n    }\n\n    console.log('MIXPANEL PEOPLE REQUEST (QUEUED, PENDING IDENTIFY):');\n    console.log(data);\n\n    this.save();\n};\n\nMixpanelPersistence.prototype._pop_from_people_queue = function(queue, data) {\n    var q = this._get_queue(queue);\n    if (!_.isUndefined(q)) {\n        _.each(data, function(v, k) {\n            if (queue === APPEND_ACTION || queue === REMOVE_ACTION) {\n                // list actions: only remove if both k+v match\n                // e.g. remove should not override append in a case like\n                // append({foo: 'bar'}); remove({foo: 'qux'})\n                _.each(q, function(queued_action) {\n                    if (queued_action[k] === v) {\n                        delete queued_action[k];\n                    }\n                });\n            } else {\n                delete q[k];\n            }\n        }, this);\n\n        this.save();\n    }\n};\n\nMixpanelPersistence.prototype._get_queue_key = function(queue) {\n    if (queue === SET_ACTION) {\n        return SET_QUEUE_KEY;\n    } else if (queue === SET_ONCE_ACTION) {\n        return SET_ONCE_QUEUE_KEY;\n    } else if (queue === UNSET_ACTION) {\n        return UNSET_QUEUE_KEY;\n    } else if (queue === ADD_ACTION) {\n        return ADD_QUEUE_KEY;\n    } else if (queue === APPEND_ACTION) {\n        return APPEND_QUEUE_KEY;\n    } else if (queue === REMOVE_ACTION) {\n        return REMOVE_QUEUE_KEY;\n    } else if (queue === UNION_ACTION) {\n        return UNION_QUEUE_KEY;\n    } else {\n        console.error('Invalid queue:', queue);\n    }\n};\n\nMixpanelPersistence.prototype._get_queue = function(queue) {\n    return this['props'][this._get_queue_key(queue)];\n};\nMixpanelPersistence.prototype._get_or_create_queue = function(queue, default_val) {\n    var key = this._get_queue_key(queue);\n    default_val = _.isUndefined(default_val) ? {} : default_val;\n\n    return this['props'][key] || (this['props'][key] = default_val);\n};\n\nMixpanelPersistence.prototype.set_event_timer = function(event_name, timestamp) {\n    var timers = this['props'][EVENT_TIMERS_KEY] || {};\n    timers[event_name] = timestamp;\n    this['props'][EVENT_TIMERS_KEY] = timers;\n    this.save();\n};\n\nMixpanelPersistence.prototype.remove_event_timer = function(event_name) {\n    var timers = this['props'][EVENT_TIMERS_KEY] || {};\n    var timestamp = timers[event_name];\n    if (!_.isUndefined(timestamp)) {\n        delete this['props'][EVENT_TIMERS_KEY][event_name];\n        this.save();\n    }\n    return timestamp;\n};\n\n/*\n * Mixpanel JS Library\n *\n * Copyright 2012, Mixpanel, Inc. All Rights Reserved\n * http://mixpanel.com/\n *\n * Includes portions of Underscore.js\n * http://documentcloud.github.com/underscore/\n * (c) 2011 Jeremy Ashkenas, DocumentCloud Inc.\n * Released under the MIT License.\n */\n\n// ==ClosureCompiler==\n// @compilation_level ADVANCED_OPTIMIZATIONS\n// @output_file_name mixpanel-2.8.min.js\n// ==/ClosureCompiler==\n\n/*\nSIMPLE STYLE GUIDE:\n\nthis.x === public function\nthis._x === internal - only use within this file\nthis.__x === private - only use within the class\n\nGlobals should be all caps\n*/\n\nvar init_type;       // MODULE or SNIPPET loader\nvar mixpanel_master; // main mixpanel instance / object\nvar INIT_MODULE  = 0;\nvar INIT_SNIPPET = 1;\n\nvar IDENTITY_FUNC = function(x) {return x;};\nvar NOOP_FUNC = function() {};\n\n/** @const */ var PRIMARY_INSTANCE_NAME = 'mixpanel';\n/** @const */ var PAYLOAD_TYPE_BASE64   = 'base64';\n/** @const */ var PAYLOAD_TYPE_JSON     = 'json';\n/** @const */ var DEVICE_ID_PREFIX      = '$device:';\n\n\n/*\n * Dynamic... constants? Is that an oxymoron?\n */\n// http://hacks.mozilla.org/2009/07/cross-site-xmlhttprequest-with-cors/\n// https://developer.mozilla.org/en-US/docs/DOM/XMLHttpRequest#withCredentials\nvar USE_XHR = (window$1.XMLHttpRequest && 'withCredentials' in new XMLHttpRequest());\n\n// IE<10 does not support cross-origin XHR's but script tags\n// with defer won't block window.onload; ENQUEUE_REQUESTS\n// should only be true for Opera<12\nvar ENQUEUE_REQUESTS = !USE_XHR && (userAgent.indexOf('MSIE') === -1) && (userAgent.indexOf('Mozilla') === -1);\n\n// save reference to navigator.sendBeacon so it can be minified\nvar sendBeacon = null;\nif (navigator['sendBeacon']) {\n    sendBeacon = function() {\n        // late reference to navigator.sendBeacon to allow patching/spying\n        return navigator['sendBeacon'].apply(navigator, arguments);\n    };\n}\n\n/*\n * Module-level globals\n */\nvar DEFAULT_CONFIG = {\n    'api_host':                          'https://api-js.mixpanel.com',\n    'api_method':                        'POST',\n    'api_transport':                     'XHR',\n    'api_payload_format':                PAYLOAD_TYPE_BASE64,\n    'app_host':                          'https://mixpanel.com',\n    'cdn':                               'https://cdn.mxpnl.com',\n    'cross_site_cookie':                 false,\n    'cross_subdomain_cookie':            true,\n    'error_reporter':                    NOOP_FUNC,\n    'persistence':                       'cookie',\n    'persistence_name':                  '',\n    'cookie_domain':                     '',\n    'cookie_name':                       '',\n    'loaded':                            NOOP_FUNC,\n    'track_marketing':                   true,\n    'track_pageview':                    false,\n    'skip_first_touch_marketing':        false,\n    'store_google':                      true,\n    'save_referrer':                     true,\n    'test':                              false,\n    'verbose':                           false,\n    'img':                               false,\n    'debug':                             false,\n    'track_links_timeout':               300,\n    'cookie_expiration':                 365,\n    'upgrade':                           false,\n    'disable_persistence':               false,\n    'disable_cookie':                    false,\n    'secure_cookie':                     false,\n    'ip':                                true,\n    'opt_out_tracking_by_default':       false,\n    'opt_out_persistence_by_default':    false,\n    'opt_out_tracking_persistence_type': 'localStorage',\n    'opt_out_tracking_cookie_prefix':    null,\n    'property_blacklist':                [],\n    'xhr_headers':                       {}, // { header: value, header2: value }\n    'ignore_dnt':                        false,\n    'batch_requests':                    true,\n    'batch_size':                        50,\n    'batch_flush_interval_ms':           5000,\n    'batch_request_timeout_ms':          90000,\n    'batch_autostart':                   true,\n    'hooks':                             {}\n};\n\nvar DOM_LOADED = false;\n\n/**\n * Mixpanel Library Object\n * @constructor\n */\nvar MixpanelLib = function() {};\n\n\n/**\n * create_mplib(token:string, config:object, name:string)\n *\n * This function is used by the init method of MixpanelLib objects\n * as well as the main initializer at the end of the JSLib (that\n * initializes document.mixpanel as well as any additional instances\n * declared before this file has loaded).\n */\nvar create_mplib = function(token, config, name) {\n    var instance,\n        target = (name === PRIMARY_INSTANCE_NAME) ? mixpanel_master : mixpanel_master[name];\n\n    if (target && init_type === INIT_MODULE) {\n        instance = target;\n    } else {\n        if (target && !_.isArray(target)) {\n            console.error('You have already initialized ' + name);\n            return;\n        }\n        instance = new MixpanelLib();\n    }\n\n    instance._cached_groups = {}; // cache groups in a pool\n\n    instance._init(token, config, name);\n\n    instance['people'] = new MixpanelPeople();\n    instance['people']._init(instance);\n\n    if (!instance.get_config('skip_first_touch_marketing')) {\n        // We need null UTM params in the object because\n        // UTM parameters act as a tuple. If any UTM param\n        // is present, then we set all UTM params including\n        // empty ones together\n        var utm_params = _.info.campaignParams(null);\n        var initial_utm_params = {};\n        var has_utm = false;\n        _.each(utm_params, function(utm_value, utm_key) {\n            initial_utm_params['initial_' + utm_key] = utm_value;\n            if (utm_value) {\n                has_utm = true;\n            }\n        });\n        if (has_utm) {\n            instance['people'].set_once(initial_utm_params);\n        }\n    }\n\n    // if any instance on the page has debug = true, we set the\n    // global debug to be true\n    Config.DEBUG = Config.DEBUG || instance.get_config('debug');\n\n    // if target is not defined, we called init after the lib already\n    // loaded, so there won't be an array of things to execute\n    if (!_.isUndefined(target) && _.isArray(target)) {\n        // Crunch through the people queue first - we queue this data up &\n        // flush on identify, so it's better to do all these operations first\n        instance._execute_array.call(instance['people'], target['people']);\n        instance._execute_array(target);\n    }\n\n    return instance;\n};\n\n// Initialization methods\n\n/**\n * This function initializes a new instance of the Mixpanel tracking object.\n * All new instances are added to the main mixpanel object as sub properties (such as\n * mixpanel.library_name) and also returned by this function. To define a\n * second instance on the page, you would call:\n *\n *     mixpanel.init('new token', { your: 'config' }, 'library_name');\n *\n * and use it like so:\n *\n *     mixpanel.library_name.track(...);\n *\n * @param {String} token   Your Mixpanel API token\n * @param {Object} [config]  A dictionary of config options to override. <a href=\"https://github.com/mixpanel/mixpanel-js/blob/v2.46.0/src/mixpanel-core.js#L88-L127\">See a list of default config options</a>.\n * @param {String} [name]    The name for the new mixpanel instance that you want created\n */\nMixpanelLib.prototype.init = function (token, config, name) {\n    if (_.isUndefined(name)) {\n        this.report_error('You must name your new library: init(token, config, name)');\n        return;\n    }\n    if (name === PRIMARY_INSTANCE_NAME) {\n        this.report_error('You must initialize the main mixpanel object right after you include the Mixpanel js snippet');\n        return;\n    }\n\n    var instance = create_mplib(token, config, name);\n    mixpanel_master[name] = instance;\n    instance._loaded();\n\n    return instance;\n};\n\n// mixpanel._init(token:string, config:object, name:string)\n//\n// This function sets up the current instance of the mixpanel\n// library.  The difference between this method and the init(...)\n// method is this one initializes the actual instance, whereas the\n// init(...) method sets up a new library and calls _init on it.\n//\nMixpanelLib.prototype._init = function(token, config, name) {\n    config = config || {};\n\n    this['__loaded'] = true;\n    this['config'] = {};\n\n    var variable_features = {};\n\n    // default to JSON payload for standard mixpanel.com API hosts\n    if (!('api_payload_format' in config)) {\n        var api_host = config['api_host'] || DEFAULT_CONFIG['api_host'];\n        if (api_host.match(/\\.mixpanel\\.com/)) {\n            variable_features['api_payload_format'] = PAYLOAD_TYPE_JSON;\n        }\n    }\n\n    this.set_config(_.extend({}, DEFAULT_CONFIG, variable_features, config, {\n        'name': name,\n        'token': token,\n        'callback_fn': ((name === PRIMARY_INSTANCE_NAME) ? name : PRIMARY_INSTANCE_NAME + '.' + name) + '._jsc'\n    }));\n\n    this['_jsc'] = NOOP_FUNC;\n\n    this.__dom_loaded_queue = [];\n    this.__request_queue = [];\n    this.__disabled_events = [];\n    this._flags = {\n        'disable_all_events': false,\n        'identify_called': false\n    };\n\n    // set up request queueing/batching\n    this.request_batchers = {};\n    this._batch_requests = this.get_config('batch_requests');\n    if (this._batch_requests) {\n        if (!_.localStorage.is_supported(true) || !USE_XHR) {\n            this._batch_requests = false;\n            console.log('Turning off Mixpanel request-queueing; needs XHR and localStorage support');\n        } else {\n            this.init_batchers();\n            if (sendBeacon && window$1.addEventListener) {\n                // Before page closes or hides (user tabs away etc), attempt to flush any events\n                // queued up via navigator.sendBeacon. Since sendBeacon doesn't report success/failure,\n                // events will not be removed from the persistent store; if the site is loaded again,\n                // the events will be flushed again on startup and deduplicated on the Mixpanel server\n                // side.\n                // There is no reliable way to capture only page close events, so we lean on the\n                // visibilitychange and pagehide events as recommended at\n                // https://developer.mozilla.org/en-US/docs/Web/API/Window/unload_event#usage_notes.\n                // These events fire when the user clicks away from the current page/tab, so will occur\n                // more frequently than page unload, but are the only mechanism currently for capturing\n                // this scenario somewhat reliably.\n                var flush_on_unload = _.bind(function() {\n                    if (!this.request_batchers.events.stopped) {\n                        this.request_batchers.events.flush({unloading: true});\n                    }\n                }, this);\n                window$1.addEventListener('pagehide', function(ev) {\n                    if (ev['persisted']) {\n                        flush_on_unload();\n                    }\n                });\n                window$1.addEventListener('visibilitychange', function() {\n                    if (document$1['visibilityState'] === 'hidden') {\n                        flush_on_unload();\n                    }\n                });\n            }\n        }\n    }\n\n    this['persistence'] = this['cookie'] = new MixpanelPersistence(this['config']);\n    this.unpersisted_superprops = {};\n    this._gdpr_init();\n\n    var uuid = _.UUID();\n    if (!this.get_distinct_id()) {\n        // There is no need to set the distinct id\n        // or the device id if something was already stored\n        // in the persitence\n        this.register_once({\n            'distinct_id': DEVICE_ID_PREFIX + uuid,\n            '$device_id': uuid\n        }, '');\n    }\n\n    if (this.get_config('track_pageview')) {\n        this.track_pageview();\n    }\n};\n\n// Private methods\n\nMixpanelLib.prototype._loaded = function() {\n    this.get_config('loaded')(this);\n    this._set_default_superprops();\n};\n\n// update persistence with info on referrer, UTM params, etc\nMixpanelLib.prototype._set_default_superprops = function() {\n    this['persistence'].update_search_keyword(document$1.referrer);\n    if (this.get_config('store_google')) {\n        this.register(_.info.campaignParams(), {persistent: false});\n    }\n    if (this.get_config('save_referrer')) {\n        this['persistence'].update_referrer_info(document$1.referrer);\n    }\n};\n\nMixpanelLib.prototype._dom_loaded = function() {\n    _.each(this.__dom_loaded_queue, function(item) {\n        this._track_dom.apply(this, item);\n    }, this);\n\n    if (!this.has_opted_out_tracking()) {\n        _.each(this.__request_queue, function(item) {\n            this._send_request.apply(this, item);\n        }, this);\n    }\n\n    delete this.__dom_loaded_queue;\n    delete this.__request_queue;\n};\n\nMixpanelLib.prototype._track_dom = function(DomClass, args) {\n    if (this.get_config('img')) {\n        this.report_error('You can\\'t use DOM tracking functions with img = true.');\n        return false;\n    }\n\n    if (!DOM_LOADED) {\n        this.__dom_loaded_queue.push([DomClass, args]);\n        return false;\n    }\n\n    var dt = new DomClass().init(this);\n    return dt.track.apply(dt, args);\n};\n\n/**\n * _prepare_callback() should be called by callers of _send_request for use\n * as the callback argument.\n *\n * If there is no callback, this returns null.\n * If we are going to make XHR/XDR requests, this returns a function.\n * If we are going to use script tags, this returns a string to use as the\n * callback GET param.\n */\nMixpanelLib.prototype._prepare_callback = function(callback, data) {\n    if (_.isUndefined(callback)) {\n        return null;\n    }\n\n    if (USE_XHR) {\n        var callback_function = function(response) {\n            callback(response, data);\n        };\n        return callback_function;\n    } else {\n        // if the user gives us a callback, we store as a random\n        // property on this instances jsc function and update our\n        // callback string to reflect that.\n        var jsc = this['_jsc'];\n        var randomized_cb = '' + Math.floor(Math.random() * 100000000);\n        var callback_string = this.get_config('callback_fn') + '[' + randomized_cb + ']';\n        jsc[randomized_cb] = function(response) {\n            delete jsc[randomized_cb];\n            callback(response, data);\n        };\n        return callback_string;\n    }\n};\n\nMixpanelLib.prototype._send_request = function(url, data, options, callback) {\n    var succeeded = true;\n\n    if (ENQUEUE_REQUESTS) {\n        this.__request_queue.push(arguments);\n        return succeeded;\n    }\n\n    var DEFAULT_OPTIONS = {\n        method: this.get_config('api_method'),\n        transport: this.get_config('api_transport'),\n        verbose: this.get_config('verbose')\n    };\n    var body_data = null;\n\n    if (!callback && (_.isFunction(options) || typeof options === 'string')) {\n        callback = options;\n        options = null;\n    }\n    options = _.extend(DEFAULT_OPTIONS, options || {});\n    if (!USE_XHR) {\n        options.method = 'GET';\n    }\n    var use_post = options.method === 'POST';\n    var use_sendBeacon = sendBeacon && use_post && options.transport.toLowerCase() === 'sendbeacon';\n\n    // needed to correctly format responses\n    var verbose_mode = options.verbose;\n    if (data['verbose']) { verbose_mode = true; }\n\n    if (this.get_config('test')) { data['test'] = 1; }\n    if (verbose_mode) { data['verbose'] = 1; }\n    if (this.get_config('img')) { data['img'] = 1; }\n    if (!USE_XHR) {\n        if (callback) {\n            data['callback'] = callback;\n        } else if (verbose_mode || this.get_config('test')) {\n            // Verbose output (from verbose mode, or an error in test mode) is a json blob,\n            // which by itself is not valid javascript. Without a callback, this verbose output will\n            // cause an error when returned via jsonp, so we force a no-op callback param.\n            // See the ECMA script spec: http://www.ecma-international.org/ecma-262/5.1/#sec-12.4\n            data['callback'] = '(function(){})';\n        }\n    }\n\n    data['ip'] = this.get_config('ip')?1:0;\n    data['_'] = new Date().getTime().toString();\n\n    if (use_post) {\n        body_data = 'data=' + encodeURIComponent(data['data']);\n        delete data['data'];\n    }\n\n    url += '?' + _.HTTPBuildQuery(data);\n\n    var lib = this;\n    if ('img' in data) {\n        var img = document$1.createElement('img');\n        img.src = url;\n        document$1.body.appendChild(img);\n    } else if (use_sendBeacon) {\n        try {\n            succeeded = sendBeacon(url, body_data);\n        } catch (e) {\n            lib.report_error(e);\n            succeeded = false;\n        }\n        try {\n            if (callback) {\n                callback(succeeded ? 1 : 0);\n            }\n        } catch (e) {\n            lib.report_error(e);\n        }\n    } else if (USE_XHR) {\n        try {\n            var req = new XMLHttpRequest();\n            req.open(options.method, url, true);\n\n            var headers = this.get_config('xhr_headers');\n            if (use_post) {\n                headers['Content-Type'] = 'application/x-www-form-urlencoded';\n            }\n            _.each(headers, function(headerValue, headerName) {\n                req.setRequestHeader(headerName, headerValue);\n            });\n\n            if (options.timeout_ms && typeof req.timeout !== 'undefined') {\n                req.timeout = options.timeout_ms;\n                var start_time = new Date().getTime();\n            }\n\n            // send the mp_optout cookie\n            // withCredentials cannot be modified until after calling .open on Android and Mobile Safari\n            req.withCredentials = true;\n            req.onreadystatechange = function () {\n                if (req.readyState === 4) { // XMLHttpRequest.DONE == 4, except in safari 4\n                    if (req.status === 200) {\n                        if (callback) {\n                            if (verbose_mode) {\n                                var response;\n                                try {\n                                    response = _.JSONDecode(req.responseText);\n                                } catch (e) {\n                                    lib.report_error(e);\n                                    if (options.ignore_json_errors) {\n                                        response = req.responseText;\n                                    } else {\n                                        return;\n                                    }\n                                }\n                                callback(response);\n                            } else {\n                                callback(Number(req.responseText));\n                            }\n                        }\n                    } else {\n                        var error;\n                        if (\n                            req.timeout &&\n                            !req.status &&\n                            new Date().getTime() - start_time >= req.timeout\n                        ) {\n                            error = 'timeout';\n                        } else {\n                            error = 'Bad HTTP status: ' + req.status + ' ' + req.statusText;\n                        }\n                        lib.report_error(error);\n                        if (callback) {\n                            if (verbose_mode) {\n                                callback({status: 0, error: error, xhr_req: req});\n                            } else {\n                                callback(0);\n                            }\n                        }\n                    }\n                }\n            };\n            req.send(body_data);\n        } catch (e) {\n            lib.report_error(e);\n            succeeded = false;\n        }\n    } else {\n        var script = document$1.createElement('script');\n        script.type = 'text/javascript';\n        script.async = true;\n        script.defer = true;\n        script.src = url;\n        var s = document$1.getElementsByTagName('script')[0];\n        s.parentNode.insertBefore(script, s);\n    }\n\n    return succeeded;\n};\n\n/**\n * _execute_array() deals with processing any mixpanel function\n * calls that were called before the Mixpanel library were loaded\n * (and are thus stored in an array so they can be called later)\n *\n * Note: we fire off all the mixpanel function calls && user defined\n * functions BEFORE we fire off mixpanel tracking calls. This is so\n * identify/register/set_config calls can properly modify early\n * tracking calls.\n *\n * @param {Array} array\n */\nMixpanelLib.prototype._execute_array = function(array) {\n    var fn_name, alias_calls = [], other_calls = [], tracking_calls = [];\n    _.each(array, function(item) {\n        if (item) {\n            fn_name = item[0];\n            if (_.isArray(fn_name)) {\n                tracking_calls.push(item); // chained call e.g. mixpanel.get_group().set()\n            } else if (typeof(item) === 'function') {\n                item.call(this);\n            } else if (_.isArray(item) && fn_name === 'alias') {\n                alias_calls.push(item);\n            } else if (_.isArray(item) && fn_name.indexOf('track') !== -1 && typeof(this[fn_name]) === 'function') {\n                tracking_calls.push(item);\n            } else {\n                other_calls.push(item);\n            }\n        }\n    }, this);\n\n    var execute = function(calls, context) {\n        _.each(calls, function(item) {\n            if (_.isArray(item[0])) {\n                // chained call\n                var caller = context;\n                _.each(item, function(call) {\n                    caller = caller[call[0]].apply(caller, call.slice(1));\n                });\n            } else {\n                this[item[0]].apply(this, item.slice(1));\n            }\n        }, context);\n    };\n\n    execute(alias_calls, this);\n    execute(other_calls, this);\n    execute(tracking_calls, this);\n};\n\n// request queueing utils\n\nMixpanelLib.prototype.are_batchers_initialized = function() {\n    return !!this.request_batchers.events;\n};\n\nMixpanelLib.prototype.init_batchers = function() {\n    var token = this.get_config('token');\n    if (!this.are_batchers_initialized()) {\n        var batcher_for = _.bind(function(attrs) {\n            return new RequestBatcher(\n                '__mpq_' + token + attrs.queue_suffix,\n                {\n                    libConfig: this['config'],\n                    sendRequestFunc: _.bind(function(data, options, cb) {\n                        this._send_request(\n                            this.get_config('api_host') + attrs.endpoint,\n                            this._encode_data_for_request(data),\n                            options,\n                            this._prepare_callback(cb, data)\n                        );\n                    }, this),\n                    beforeSendHook: _.bind(function(item) {\n                        return this._run_hook('before_send_' + attrs.type, item);\n                    }, this),\n                    errorReporter: this.get_config('error_reporter'),\n                    stopAllBatchingFunc: _.bind(this.stop_batch_senders, this)\n                }\n            );\n        }, this);\n        this.request_batchers = {\n            events: batcher_for({type: 'events', endpoint: '/track/', queue_suffix: '_ev'}),\n            people: batcher_for({type: 'people', endpoint: '/engage/', queue_suffix: '_pp'}),\n            groups: batcher_for({type: 'groups', endpoint: '/groups/', queue_suffix: '_gr'})\n        };\n    }\n    if (this.get_config('batch_autostart')) {\n        this.start_batch_senders();\n    }\n};\n\nMixpanelLib.prototype.start_batch_senders = function() {\n    if (this.are_batchers_initialized()) {\n        this._batch_requests = true;\n        _.each(this.request_batchers, function(batcher) {\n            batcher.start();\n        });\n    }\n};\n\nMixpanelLib.prototype.stop_batch_senders = function() {\n    this._batch_requests = false;\n    _.each(this.request_batchers, function(batcher) {\n        batcher.stop();\n        batcher.clear();\n    });\n};\n\n/**\n * push() keeps the standard async-array-push\n * behavior around after the lib is loaded.\n * This is only useful for external integrations that\n * do not wish to rely on our convenience methods\n * (created in the snippet).\n *\n * ### Usage:\n *     mixpanel.push(['register', { a: 'b' }]);\n *\n * @param {Array} item A [function_name, args...] array to be executed\n */\nMixpanelLib.prototype.push = function(item) {\n    this._execute_array([item]);\n};\n\n/**\n * Disable events on the Mixpanel object. If passed no arguments,\n * this function disables tracking of any event. If passed an\n * array of event names, those events will be disabled, but other\n * events will continue to be tracked.\n *\n * Note: this function does not stop other mixpanel functions from\n * firing, such as register() or people.set().\n *\n * @param {Array} [events] An array of event names to disable\n */\nMixpanelLib.prototype.disable = function(events) {\n    if (typeof(events) === 'undefined') {\n        this._flags.disable_all_events = true;\n    } else {\n        this.__disabled_events = this.__disabled_events.concat(events);\n    }\n};\n\nMixpanelLib.prototype._encode_data_for_request = function(data) {\n    var encoded_data = _.JSONEncode(data);\n    if (this.get_config('api_payload_format') === PAYLOAD_TYPE_BASE64) {\n        encoded_data = _.base64Encode(encoded_data);\n    }\n    return {'data': encoded_data};\n};\n\n// internal method for handling track vs batch-enqueue logic\nMixpanelLib.prototype._track_or_batch = function(options, callback) {\n    var truncated_data = _.truncate(options.data, 255);\n    var endpoint = options.endpoint;\n    var batcher = options.batcher;\n    var should_send_immediately = options.should_send_immediately;\n    var send_request_options = options.send_request_options || {};\n    callback = callback || NOOP_FUNC;\n\n    var request_enqueued_or_initiated = true;\n    var send_request_immediately = _.bind(function() {\n        if (!send_request_options.skip_hooks) {\n            truncated_data = this._run_hook('before_send_' + options.type, truncated_data);\n        }\n        if (truncated_data) {\n            console.log('MIXPANEL REQUEST:');\n            console.log(truncated_data);\n            return this._send_request(\n                endpoint,\n                this._encode_data_for_request(truncated_data),\n                send_request_options,\n                this._prepare_callback(callback, truncated_data)\n            );\n        } else {\n            return null;\n        }\n    }, this);\n\n    if (this._batch_requests && !should_send_immediately) {\n        batcher.enqueue(truncated_data, function(succeeded) {\n            if (succeeded) {\n                callback(1, truncated_data);\n            } else {\n                send_request_immediately();\n            }\n        });\n    } else {\n        request_enqueued_or_initiated = send_request_immediately();\n    }\n\n    return request_enqueued_or_initiated && truncated_data;\n};\n\n/**\n * Track an event. This is the most important and\n * frequently used Mixpanel function.\n *\n * ### Usage:\n *\n *     // track an event named 'Registered'\n *     mixpanel.track('Registered', {'Gender': 'Male', 'Age': 21});\n *\n *     // track an event using navigator.sendBeacon\n *     mixpanel.track('Left page', {'duration_seconds': 35}, {transport: 'sendBeacon'});\n *\n * To track link clicks or form submissions, see track_links() or track_forms().\n *\n * @param {String} event_name The name of the event. This can be anything the user does - 'Button Click', 'Sign Up', 'Item Purchased', etc.\n * @param {Object} [properties] A set of properties to include with the event you're sending. These describe the user who did the event or details about the event itself.\n * @param {Object} [options] Optional configuration for this track request.\n * @param {String} [options.transport] Transport method for network request ('xhr' or 'sendBeacon').\n * @param {Boolean} [options.send_immediately] Whether to bypass batching/queueing and send track request immediately.\n * @param {Function} [callback] If provided, the callback function will be called after tracking the event.\n * @returns {Boolean|Object} If the tracking request was successfully initiated/queued, an object\n * with the tracking payload sent to the API server is returned; otherwise false.\n */\nMixpanelLib.prototype.track = addOptOutCheckMixpanelLib(function(event_name, properties, options, callback) {\n    if (!callback && typeof options === 'function') {\n        callback = options;\n        options = null;\n    }\n    options = options || {};\n    var transport = options['transport']; // external API, don't minify 'transport' prop\n    if (transport) {\n        options.transport = transport; // 'transport' prop name can be minified internally\n    }\n    var should_send_immediately = options['send_immediately'];\n    if (typeof callback !== 'function') {\n        callback = NOOP_FUNC;\n    }\n\n    if (_.isUndefined(event_name)) {\n        this.report_error('No event name provided to mixpanel.track');\n        return;\n    }\n\n    if (this._event_is_disabled(event_name)) {\n        callback(0);\n        return;\n    }\n\n    // set defaults\n    properties = properties || {};\n    properties['token'] = this.get_config('token');\n\n    // set $duration if time_event was previously called for this event\n    var start_timestamp = this['persistence'].remove_event_timer(event_name);\n    if (!_.isUndefined(start_timestamp)) {\n        var duration_in_ms = new Date().getTime() - start_timestamp;\n        properties['$duration'] = parseFloat((duration_in_ms / 1000).toFixed(3));\n    }\n\n    this._set_default_superprops();\n\n    var marketing_properties = this.get_config('track_marketing')\n        ? _.info.marketingParams()\n        : {};\n\n    // note: extend writes to the first object, so lets make sure we\n    // don't write to the persistence properties object and info\n    // properties object by passing in a new object\n\n    // update properties with pageview info and super-properties\n    properties = _.extend(\n        {},\n        _.info.properties(),\n        marketing_properties,\n        this['persistence'].properties(),\n        this.unpersisted_superprops,\n        properties\n    );\n\n    var property_blacklist = this.get_config('property_blacklist');\n    if (_.isArray(property_blacklist)) {\n        _.each(property_blacklist, function(blacklisted_prop) {\n            delete properties[blacklisted_prop];\n        });\n    } else {\n        this.report_error('Invalid value for property_blacklist config: ' + property_blacklist);\n    }\n\n    var data = {\n        'event': event_name,\n        'properties': properties\n    };\n    var ret = this._track_or_batch({\n        type: 'events',\n        data: data,\n        endpoint: this.get_config('api_host') + '/track/',\n        batcher: this.request_batchers.events,\n        should_send_immediately: should_send_immediately,\n        send_request_options: options\n    }, callback);\n\n    return ret;\n});\n\n/**\n * Register the current user into one/many groups.\n *\n * ### Usage:\n *\n *      mixpanel.set_group('company', ['mixpanel', 'google']) // an array of IDs\n *      mixpanel.set_group('company', 'mixpanel')\n *      mixpanel.set_group('company', 128746312)\n *\n * @param {String} group_key Group key\n * @param {Array|String|Number} group_ids An array of group IDs, or a singular group ID\n * @param {Function} [callback] If provided, the callback will be called after tracking the event.\n *\n */\nMixpanelLib.prototype.set_group = addOptOutCheckMixpanelLib(function(group_key, group_ids, callback) {\n    if (!_.isArray(group_ids)) {\n        group_ids = [group_ids];\n    }\n    var prop = {};\n    prop[group_key] = group_ids;\n    this.register(prop);\n    return this['people'].set(group_key, group_ids, callback);\n});\n\n/**\n * Add a new group for this user.\n *\n * ### Usage:\n *\n *      mixpanel.add_group('company', 'mixpanel')\n *\n * @param {String} group_key Group key\n * @param {*} group_id A valid Mixpanel property type\n * @param {Function} [callback] If provided, the callback will be called after tracking the event.\n */\nMixpanelLib.prototype.add_group = addOptOutCheckMixpanelLib(function(group_key, group_id, callback) {\n    var old_values = this.get_property(group_key);\n    if (old_values === undefined) {\n        var prop = {};\n        prop[group_key] = [group_id];\n        this.register(prop);\n    } else {\n        if (old_values.indexOf(group_id) === -1) {\n            old_values.push(group_id);\n            this.register(prop);\n        }\n    }\n    return this['people'].union(group_key, group_id, callback);\n});\n\n/**\n * Remove a group from this user.\n *\n * ### Usage:\n *\n *      mixpanel.remove_group('company', 'mixpanel')\n *\n * @param {String} group_key Group key\n * @param {*} group_id A valid Mixpanel property type\n * @param {Function} [callback] If provided, the callback will be called after tracking the event.\n */\nMixpanelLib.prototype.remove_group = addOptOutCheckMixpanelLib(function(group_key, group_id, callback) {\n    var old_value = this.get_property(group_key);\n    // if the value doesn't exist, the persistent store is unchanged\n    if (old_value !== undefined) {\n        var idx = old_value.indexOf(group_id);\n        if (idx > -1) {\n            old_value.splice(idx, 1);\n            this.register({group_key: old_value});\n        }\n        if (old_value.length === 0) {\n            this.unregister(group_key);\n        }\n    }\n    return this['people'].remove(group_key, group_id, callback);\n});\n\n/**\n * Track an event with specific groups.\n *\n * ### Usage:\n *\n *      mixpanel.track_with_groups('purchase', {'product': 'iphone'}, {'University': ['UCB', 'UCLA']})\n *\n * @param {String} event_name The name of the event (see `mixpanel.track()`)\n * @param {Object=} properties A set of properties to include with the event you're sending (see `mixpanel.track()`)\n * @param {Object=} groups An object mapping group name keys to one or more values\n * @param {Function} [callback] If provided, the callback will be called after tracking the event.\n */\nMixpanelLib.prototype.track_with_groups = addOptOutCheckMixpanelLib(function(event_name, properties, groups, callback) {\n    var tracking_props = _.extend({}, properties || {});\n    _.each(groups, function(v, k) {\n        if (v !== null && v !== undefined) {\n            tracking_props[k] = v;\n        }\n    });\n    return this.track(event_name, tracking_props, callback);\n});\n\nMixpanelLib.prototype._create_map_key = function (group_key, group_id) {\n    return group_key + '_' + JSON.stringify(group_id);\n};\n\nMixpanelLib.prototype._remove_group_from_cache = function (group_key, group_id) {\n    delete this._cached_groups[this._create_map_key(group_key, group_id)];\n};\n\n/**\n * Look up reference to a Mixpanel group\n *\n * ### Usage:\n *\n *       mixpanel.get_group(group_key, group_id)\n *\n * @param {String} group_key Group key\n * @param {Object} group_id A valid Mixpanel property type\n * @returns {Object} A MixpanelGroup identifier\n */\nMixpanelLib.prototype.get_group = function (group_key, group_id) {\n    var map_key = this._create_map_key(group_key, group_id);\n    var group = this._cached_groups[map_key];\n    if (group === undefined || group._group_key !== group_key || group._group_id !== group_id) {\n        group = new MixpanelGroup();\n        group._init(this, group_key, group_id);\n        this._cached_groups[map_key] = group;\n    }\n    return group;\n};\n\n/**\n * Track a default Mixpanel page view event, which includes extra default event properties to\n * improve page view data. The `config.track_pageview` option for <a href=\"#mixpanelinit\">mixpanel.init()</a>\n * may be turned on for tracking page loads automatically.\n *\n * ### Usage\n *\n *     // track a default $mp_web_page_view event\n *     mixpanel.track_pageview();\n *\n *     // track a page view event with additional event properties\n *     mixpanel.track_pageview({'ab_test_variant': 'card-layout-b'});\n *\n *     // example approach to track page views on different page types as event properties\n *     mixpanel.track_pageview({'page': 'pricing'});\n *     mixpanel.track_pageview({'page': 'homepage'});\n *\n *     // UNCOMMON: Tracking a page view event with a custom event_name option. NOT expected to be used for\n *     // individual pages on the same site or product. Use cases for custom event_name may be page\n *     // views on different products or internal applications that are considered completely separate\n *     mixpanel.track_pageview({'page': 'customer-search'}, {'event_name': '[internal] Admin Page View'});\n *\n * @param {Object} [properties] An optional set of additional properties to send with the page view event\n * @param {Object} [options] Page view tracking options\n * @param {String} [options.event_name] - Alternate name for the tracking event\n * @returns {Boolean|Object} If the tracking request was successfully initiated/queued, an object\n * with the tracking payload sent to the API server is returned; otherwise false.\n */\nMixpanelLib.prototype.track_pageview = addOptOutCheckMixpanelLib(function(properties, options) {\n    if (typeof properties !== 'object') {\n        properties = {};\n    }\n    options = options || {};\n    var event_name = options['event_name'] || '$mp_web_page_view';\n\n    var default_page_properties = _.extend(\n        _.info.mpPageViewProperties(),\n        _.info.campaignParams(),\n        _.info.clickParams()\n    );\n\n    var event_properties = _.extend(\n        {},\n        default_page_properties,\n        properties\n    );\n\n    return this.track(event_name, event_properties);\n});\n\n/**\n * Track clicks on a set of document elements. Selector must be a\n * valid query. Elements must exist on the page at the time track_links is called.\n *\n * ### Usage:\n *\n *     // track click for link id #nav\n *     mixpanel.track_links('#nav', 'Clicked Nav Link');\n *\n * ### Notes:\n *\n * This function will wait up to 300 ms for the Mixpanel\n * servers to respond. If they have not responded by that time\n * it will head to the link without ensuring that your event\n * has been tracked.  To configure this timeout please see the\n * set_config() documentation below.\n *\n * If you pass a function in as the properties argument, the\n * function will receive the DOMElement that triggered the\n * event as an argument.  You are expected to return an object\n * from the function; any properties defined on this object\n * will be sent to mixpanel as event properties.\n *\n * @type {Function}\n * @param {Object|String} query A valid DOM query, element or jQuery-esque list\n * @param {String} event_name The name of the event to track\n * @param {Object|Function} [properties] A properties object or function that returns a dictionary of properties when passed a DOMElement\n */\nMixpanelLib.prototype.track_links = function() {\n    return this._track_dom.call(this, LinkTracker, arguments);\n};\n\n/**\n * Track form submissions. Selector must be a valid query.\n *\n * ### Usage:\n *\n *     // track submission for form id 'register'\n *     mixpanel.track_forms('#register', 'Created Account');\n *\n * ### Notes:\n *\n * This function will wait up to 300 ms for the mixpanel\n * servers to respond, if they have not responded by that time\n * it will head to the link without ensuring that your event\n * has been tracked.  To configure this timeout please see the\n * set_config() documentation below.\n *\n * If you pass a function in as the properties argument, the\n * function will receive the DOMElement that triggered the\n * event as an argument.  You are expected to return an object\n * from the function; any properties defined on this object\n * will be sent to mixpanel as event properties.\n *\n * @type {Function}\n * @param {Object|String} query A valid DOM query, element or jQuery-esque list\n * @param {String} event_name The name of the event to track\n * @param {Object|Function} [properties] This can be a set of properties, or a function that returns a set of properties after being passed a DOMElement\n */\nMixpanelLib.prototype.track_forms = function() {\n    return this._track_dom.call(this, FormTracker, arguments);\n};\n\n/**\n * Time an event by including the time between this call and a\n * later 'track' call for the same event in the properties sent\n * with the event.\n *\n * ### Usage:\n *\n *     // time an event named 'Registered'\n *     mixpanel.time_event('Registered');\n *     mixpanel.track('Registered', {'Gender': 'Male', 'Age': 21});\n *\n * When called for a particular event name, the next track call for that event\n * name will include the elapsed time between the 'time_event' and 'track'\n * calls. This value is stored as seconds in the '$duration' property.\n *\n * @param {String} event_name The name of the event.\n */\nMixpanelLib.prototype.time_event = function(event_name) {\n    if (_.isUndefined(event_name)) {\n        this.report_error('No event name provided to mixpanel.time_event');\n        return;\n    }\n\n    if (this._event_is_disabled(event_name)) {\n        return;\n    }\n\n    this['persistence'].set_event_timer(event_name,  new Date().getTime());\n};\n\nvar REGISTER_DEFAULTS = {\n    'persistent': true\n};\n/**\n * Helper to parse options param for register methods, maintaining\n * legacy support for plain \"days\" param instead of options object\n * @param {Number|Object} [days_or_options] 'days' option (Number), or Options object for register methods\n * @returns {Object} options object\n */\nvar options_for_register = function(days_or_options) {\n    var options;\n    if (_.isObject(days_or_options)) {\n        options = days_or_options;\n    } else if (!_.isUndefined(days_or_options)) {\n        options = {'days': days_or_options};\n    } else {\n        options = {};\n    }\n    return _.extend({}, REGISTER_DEFAULTS, options);\n};\n\n/**\n * Register a set of super properties, which are included with all\n * events. This will overwrite previous super property values.\n *\n * ### Usage:\n *\n *     // register 'Gender' as a super property\n *     mixpanel.register({'Gender': 'Female'});\n *\n *     // register several super properties when a user signs up\n *     mixpanel.register({\n *         'Email': 'jdoe@example.com',\n *         'Account Type': 'Free'\n *     });\n *\n *     // register only for the current pageload\n *     mixpanel.register({'Name': 'Pat'}, {persistent: false});\n *\n * @param {Object} properties An associative array of properties to store about the user\n * @param {Number|Object} [days_or_options] Options object or number of days since the user's last visit to store the super properties (only valid for persisted props)\n * @param {boolean} [days_or_options.days] - number of days since the user's last visit to store the super properties (only valid for persisted props)\n * @param {boolean} [days_or_options.persistent=true] - whether to put in persistent storage (cookie/localStorage)\n */\nMixpanelLib.prototype.register = function(props, days_or_options) {\n    var options = options_for_register(days_or_options);\n    if (options['persistent']) {\n        this['persistence'].register(props, options['days']);\n    } else {\n        _.extend(this.unpersisted_superprops, props);\n    }\n};\n\n/**\n * Register a set of super properties only once. This will not\n * overwrite previous super property values, unlike register().\n *\n * ### Usage:\n *\n *     // register a super property for the first time only\n *     mixpanel.register_once({\n *         'First Login Date': new Date().toISOString()\n *     });\n *\n *     // register once, only for the current pageload\n *     mixpanel.register_once({\n *         'First interaction time': new Date().toISOString()\n *     }, 'None', {persistent: false});\n *\n * ### Notes:\n *\n * If default_value is specified, current super properties\n * with that value will be overwritten.\n *\n * @param {Object} properties An associative array of properties to store about the user\n * @param {*} [default_value] Value to override if already set in super properties (ex: 'False') Default: 'None'\n * @param {Number|Object} [days_or_options] Options object or number of days since the user's last visit to store the super properties (only valid for persisted props)\n * @param {boolean} [days_or_options.days] - number of days since the user's last visit to store the super properties (only valid for persisted props)\n * @param {boolean} [days_or_options.persistent=true] - whether to put in persistent storage (cookie/localStorage)\n */\nMixpanelLib.prototype.register_once = function(props, default_value, days_or_options) {\n    var options = options_for_register(days_or_options);\n    if (options['persistent']) {\n        this['persistence'].register_once(props, default_value, options['days']);\n    } else {\n        if (typeof(default_value) === 'undefined') {\n            default_value = 'None';\n        }\n        _.each(props, function(val, prop) {\n            if (!this.unpersisted_superprops.hasOwnProperty(prop) || this.unpersisted_superprops[prop] === default_value) {\n                this.unpersisted_superprops[prop] = val;\n            }\n        }, this);\n    }\n};\n\n/**\n * Delete a super property stored with the current user.\n *\n * @param {String} property The name of the super property to remove\n * @param {Object} [options]\n * @param {boolean} [options.persistent=true] - whether to look in persistent storage (cookie/localStorage)\n */\nMixpanelLib.prototype.unregister = function(property, options) {\n    options = options_for_register(options);\n    if (options['persistent']) {\n        this['persistence'].unregister(property);\n    } else {\n        delete this.unpersisted_superprops[property];\n    }\n};\n\nMixpanelLib.prototype._register_single = function(prop, value) {\n    var props = {};\n    props[prop] = value;\n    this.register(props);\n};\n\n/**\n * Identify a user with a unique ID to track user activity across\n * devices, tie a user to their events, and create a user profile.\n * If you never call this method, unique visitors are tracked using\n * a UUID generated the first time they visit the site.\n *\n * Call identify when you know the identity of the current user,\n * typically after login or signup. We recommend against using\n * identify for anonymous visitors to your site.\n *\n * ### Notes:\n * If your project has\n * <a href=\"https://help.mixpanel.com/hc/en-us/articles/360039133851\">ID Merge</a>\n * enabled, the identify method will connect pre- and\n * post-authentication events when appropriate.\n *\n * If your project does not have ID Merge enabled, identify will\n * change the user's local distinct_id to the unique ID you pass.\n * Events tracked prior to authentication will not be connected\n * to the same user identity. If ID Merge is disabled, alias can\n * be used to connect pre- and post-registration events.\n *\n * @param {String} [unique_id] A string that uniquely identifies a user. If not provided, the distinct_id currently in the persistent store (cookie or localStorage) will be used.\n */\nMixpanelLib.prototype.identify = function(\n    new_distinct_id, _set_callback, _add_callback, _append_callback, _set_once_callback, _union_callback, _unset_callback, _remove_callback\n) {\n    // Optional Parameters\n    //  _set_callback:function  A callback to be run if and when the People set queue is flushed\n    //  _add_callback:function  A callback to be run if and when the People add queue is flushed\n    //  _append_callback:function  A callback to be run if and when the People append queue is flushed\n    //  _set_once_callback:function  A callback to be run if and when the People set_once queue is flushed\n    //  _union_callback:function  A callback to be run if and when the People union queue is flushed\n    //  _unset_callback:function  A callback to be run if and when the People unset queue is flushed\n\n    var previous_distinct_id = this.get_distinct_id();\n    if (new_distinct_id && previous_distinct_id !== new_distinct_id) {\n        // we allow the following condition if previous distinct_id is same as new_distinct_id\n        // so that you can force flush people updates for anonymous profiles.\n        if (typeof new_distinct_id === 'string' && new_distinct_id.indexOf(DEVICE_ID_PREFIX) === 0) {\n            this.report_error('distinct_id cannot have $device: prefix');\n            return -1;\n        }\n        this.register({'$user_id': new_distinct_id});\n    }\n\n    if (!this.get_property('$device_id')) {\n        // The persisted distinct id might not actually be a device id at all\n        // it might be a distinct id of the user from before\n        var device_id = previous_distinct_id;\n        this.register_once({\n            '$had_persisted_distinct_id': true,\n            '$device_id': device_id\n        }, '');\n    }\n\n    // identify only changes the distinct id if it doesn't match either the existing or the alias;\n    // if it's new, blow away the alias as well.\n    if (new_distinct_id !== previous_distinct_id && new_distinct_id !== this.get_property(ALIAS_ID_KEY)) {\n        this.unregister(ALIAS_ID_KEY);\n        this.register({'distinct_id': new_distinct_id});\n    }\n    this._flags.identify_called = true;\n    // Flush any queued up people requests\n    this['people']._flush(_set_callback, _add_callback, _append_callback, _set_once_callback, _union_callback, _unset_callback, _remove_callback);\n\n    // send an $identify event any time the distinct_id is changing - logic on the server\n    // will determine whether or not to do anything with it.\n    if (new_distinct_id !== previous_distinct_id) {\n        this.track('$identify', {\n            'distinct_id': new_distinct_id,\n            '$anon_distinct_id': previous_distinct_id\n        }, {skip_hooks: true});\n    }\n};\n\n/**\n * Clears super properties and generates a new random distinct_id for this instance.\n * Useful for clearing data when a user logs out.\n */\nMixpanelLib.prototype.reset = function() {\n    this['persistence'].clear();\n    this._flags.identify_called = false;\n    var uuid = _.UUID();\n    this.register_once({\n        'distinct_id': DEVICE_ID_PREFIX + uuid,\n        '$device_id': uuid\n    }, '');\n};\n\n/**\n * Returns the current distinct id of the user. This is either the id automatically\n * generated by the library or the id that has been passed by a call to identify().\n *\n * ### Notes:\n *\n * get_distinct_id() can only be called after the Mixpanel library has finished loading.\n * init() has a loaded function available to handle this automatically. For example:\n *\n *     // set distinct_id after the mixpanel library has loaded\n *     mixpanel.init('YOUR PROJECT TOKEN', {\n *         loaded: function(mixpanel) {\n *             distinct_id = mixpanel.get_distinct_id();\n *         }\n *     });\n */\nMixpanelLib.prototype.get_distinct_id = function() {\n    return this.get_property('distinct_id');\n};\n\n/**\n * The alias method creates an alias which Mixpanel will use to\n * remap one id to another. Multiple aliases can point to the\n * same identifier.\n *\n * The following is a valid use of alias:\n *\n *     mixpanel.alias('new_id', 'existing_id');\n *     // You can add multiple id aliases to the existing ID\n *     mixpanel.alias('newer_id', 'existing_id');\n *\n * Aliases can also be chained - the following is a valid example:\n *\n *     mixpanel.alias('new_id', 'existing_id');\n *     // chain newer_id - new_id - existing_id\n *     mixpanel.alias('newer_id', 'new_id');\n *\n * Aliases cannot point to multiple identifiers - the following\n * example will not work:\n *\n *     mixpanel.alias('new_id', 'existing_id');\n *     // this is invalid as 'new_id' already points to 'existing_id'\n *     mixpanel.alias('new_id', 'newer_id');\n *\n * ### Notes:\n *\n * If your project does not have\n * <a href=\"https://help.mixpanel.com/hc/en-us/articles/360039133851\">ID Merge</a>\n * enabled, the best practice is to call alias once when a unique\n * ID is first created for a user (e.g., when a user first registers\n * for an account). Do not use alias multiple times for a single\n * user without ID Merge enabled.\n *\n * @param {String} alias A unique identifier that you want to use for this user in the future.\n * @param {String} [original] The current identifier being used for this user.\n */\nMixpanelLib.prototype.alias = function(alias, original) {\n    // If the $people_distinct_id key exists in persistence, there has been a previous\n    // mixpanel.people.identify() call made for this user. It is VERY BAD to make an alias with\n    // this ID, as it will duplicate users.\n    if (alias === this.get_property(PEOPLE_DISTINCT_ID_KEY)) {\n        this.report_error('Attempting to create alias for existing People user - aborting.');\n        return -2;\n    }\n\n    var _this = this;\n    if (_.isUndefined(original)) {\n        original = this.get_distinct_id();\n    }\n    if (alias !== original) {\n        this._register_single(ALIAS_ID_KEY, alias);\n        return this.track('$create_alias', {\n            'alias': alias,\n            'distinct_id': original\n        }, {\n            skip_hooks: true\n        }, function() {\n            // Flush the people queue\n            _this.identify(alias);\n        });\n    } else {\n        this.report_error('alias matches current distinct_id - skipping api call.');\n        this.identify(alias);\n        return -1;\n    }\n};\n\n/**\n * Provide a string to recognize the user by. The string passed to\n * this method will appear in the Mixpanel Streams product rather\n * than an automatically generated name. Name tags do not have to\n * be unique.\n *\n * This value will only be included in Streams data.\n *\n * @param {String} name_tag A human readable name for the user\n * @deprecated\n */\nMixpanelLib.prototype.name_tag = function(name_tag) {\n    this._register_single('mp_name_tag', name_tag);\n};\n\n/**\n * Update the configuration of a mixpanel library instance.\n *\n * The default config is:\n *\n *     {\n *       // HTTP method for tracking requests\n *       api_method: 'POST'\n *\n *       // transport for sending requests ('XHR' or 'sendBeacon')\n *       // NB: sendBeacon should only be used for scenarios such as\n *       // page unload where a \"best-effort\" attempt to send is\n *       // acceptable; the sendBeacon API does not support callbacks\n *       // or any way to know the result of the request. Mixpanel\n *       // tracking via sendBeacon will not support any event-\n *       // batching or retry mechanisms.\n *       api_transport: 'XHR'\n *\n *       // request-batching/queueing/retry\n *       batch_requests: true,\n *\n *       // maximum number of events/updates to send in a single\n *       // network request\n *       batch_size: 50,\n *\n *       // milliseconds to wait between sending batch requests\n *       batch_flush_interval_ms: 5000,\n *\n *       // milliseconds to wait for network responses to batch requests\n *       // before they are considered timed-out and retried\n *       batch_request_timeout_ms: 90000,\n *\n *       // override value for cookie domain, only useful for ensuring\n *       // correct cross-subdomain cookies on unusual domains like\n *       // subdomain.mainsite.avocat.fr; NB this cannot be used to\n *       // set cookies on a different domain than the current origin\n *       cookie_domain: ''\n *\n *       // super properties cookie expiration (in days)\n *       cookie_expiration: 365\n *\n *       // if true, cookie will be set with SameSite=None; Secure\n *       // this is only useful in special situations, like embedded\n *       // 3rd-party iframes that set up a Mixpanel instance\n *       cross_site_cookie: false\n *\n *       // super properties span subdomains\n *       cross_subdomain_cookie: true\n *\n *       // debug mode\n *       debug: false\n *\n *       // if this is true, the mixpanel cookie or localStorage entry\n *       // will be deleted, and no user persistence will take place\n *       disable_persistence: false\n *\n *       // if this is true, Mixpanel will automatically determine\n *       // City, Region and Country data using the IP address of\n *       //the client\n *       ip: true\n *\n *       // opt users out of tracking by this Mixpanel instance by default\n *       opt_out_tracking_by_default: false\n *\n *       // opt users out of browser data storage by this Mixpanel instance by default\n *       opt_out_persistence_by_default: false\n *\n *       // persistence mechanism used by opt-in/opt-out methods - cookie\n *       // or localStorage - falls back to cookie if localStorage is unavailable\n *       opt_out_tracking_persistence_type: 'localStorage'\n *\n *       // customize the name of cookie/localStorage set by opt-in/opt-out methods\n *       opt_out_tracking_cookie_prefix: null\n *\n *       // type of persistent store for super properties (cookie/\n *       // localStorage) if set to 'localStorage', any existing\n *       // mixpanel cookie value with the same persistence_name\n *       // will be transferred to localStorage and deleted\n *       persistence: 'cookie'\n *\n *       // name for super properties persistent store\n *       persistence_name: ''\n *\n *       // names of properties/superproperties which should never\n *       // be sent with track() calls\n *       property_blacklist: []\n *\n *       // if this is true, mixpanel cookies will be marked as\n *       // secure, meaning they will only be transmitted over https\n *       secure_cookie: false\n *\n *       // disables enriching user profiles with first touch marketing data\n *       skip_first_touch_marketing: false\n *\n *       // the amount of time track_links will\n *       // wait for Mixpanel's servers to respond\n *       track_links_timeout: 300\n *\n *       // adds any UTM parameters and click IDs present on the page to any events fired\n *       track_marketing: true\n *\n *       // enables automatic page view tracking using default page view events through\n *       // the track_pageview() method\n *       track_pageview: false\n *\n *       // if you set upgrade to be true, the library will check for\n *       // a cookie from our old js library and import super\n *       // properties from it, then the old cookie is deleted\n *       // The upgrade config option only works in the initialization,\n *       // so make sure you set it when you create the library.\n *       upgrade: false\n *\n *       // extra HTTP request headers to set for each API request, in\n *       // the format {'Header-Name': value}\n *       xhr_headers: {}\n *\n *       // whether to ignore or respect the web browser's Do Not Track setting\n *       ignore_dnt: false\n *     }\n *\n *\n * @param {Object} config A dictionary of new configuration values to update\n */\nMixpanelLib.prototype.set_config = function(config) {\n    if (_.isObject(config)) {\n        _.extend(this['config'], config);\n\n        var new_batch_size = config['batch_size'];\n        if (new_batch_size) {\n            _.each(this.request_batchers, function(batcher) {\n                batcher.resetBatchSize();\n            });\n        }\n\n        if (!this.get_config('persistence_name')) {\n            this['config']['persistence_name'] = this['config']['cookie_name'];\n        }\n        if (!this.get_config('disable_persistence')) {\n            this['config']['disable_persistence'] = this['config']['disable_cookie'];\n        }\n\n        if (this['persistence']) {\n            this['persistence'].update_config(this['config']);\n        }\n        Config.DEBUG = Config.DEBUG || this.get_config('debug');\n    }\n};\n\n/**\n * returns the current config object for the library.\n */\nMixpanelLib.prototype.get_config = function(prop_name) {\n    return this['config'][prop_name];\n};\n\n/**\n * Fetch a hook function from config, with safe default, and run it\n * against the given arguments\n * @param {string} hook_name which hook to retrieve\n * @returns {any|null} return value of user-provided hook, or null if nothing was returned\n */\nMixpanelLib.prototype._run_hook = function(hook_name) {\n    var ret = (this['config']['hooks'][hook_name] || IDENTITY_FUNC).apply(this, slice.call(arguments, 1));\n    if (typeof ret === 'undefined') {\n        this.report_error(hook_name + ' hook did not return a value');\n        ret = null;\n    }\n    return ret;\n};\n\n/**\n * Returns the value of the super property named property_name. If no such\n * property is set, get_property() will return the undefined value.\n *\n * ### Notes:\n *\n * get_property() can only be called after the Mixpanel library has finished loading.\n * init() has a loaded function available to handle this automatically. For example:\n *\n *     // grab value for 'user_id' after the mixpanel library has loaded\n *     mixpanel.init('YOUR PROJECT TOKEN', {\n *         loaded: function(mixpanel) {\n *             user_id = mixpanel.get_property('user_id');\n *         }\n *     });\n *\n * @param {String} property_name The name of the super property you want to retrieve\n */\nMixpanelLib.prototype.get_property = function(property_name) {\n    return this['persistence']['props'][property_name];\n};\n\nMixpanelLib.prototype.toString = function() {\n    var name = this.get_config('name');\n    if (name !== PRIMARY_INSTANCE_NAME) {\n        name = PRIMARY_INSTANCE_NAME + '.' + name;\n    }\n    return name;\n};\n\nMixpanelLib.prototype._event_is_disabled = function(event_name) {\n    return _.isBlockedUA(userAgent) ||\n        this._flags.disable_all_events ||\n        _.include(this.__disabled_events, event_name);\n};\n\n// perform some housekeeping around GDPR opt-in/out state\nMixpanelLib.prototype._gdpr_init = function() {\n    var is_localStorage_requested = this.get_config('opt_out_tracking_persistence_type') === 'localStorage';\n\n    // try to convert opt-in/out cookies to localStorage if possible\n    if (is_localStorage_requested && _.localStorage.is_supported()) {\n        if (!this.has_opted_in_tracking() && this.has_opted_in_tracking({'persistence_type': 'cookie'})) {\n            this.opt_in_tracking({'enable_persistence': false});\n        }\n        if (!this.has_opted_out_tracking() && this.has_opted_out_tracking({'persistence_type': 'cookie'})) {\n            this.opt_out_tracking({'clear_persistence': false});\n        }\n        this.clear_opt_in_out_tracking({\n            'persistence_type': 'cookie',\n            'enable_persistence': false\n        });\n    }\n\n    // check whether the user has already opted out - if so, clear & disable persistence\n    if (this.has_opted_out_tracking()) {\n        this._gdpr_update_persistence({'clear_persistence': true});\n\n    // check whether we should opt out by default\n    // note: we don't clear persistence here by default since opt-out default state is often\n    //       used as an initial state while GDPR information is being collected\n    } else if (!this.has_opted_in_tracking() && (\n        this.get_config('opt_out_tracking_by_default') || _.cookie.get('mp_optout')\n    )) {\n        _.cookie.remove('mp_optout');\n        this.opt_out_tracking({\n            'clear_persistence': this.get_config('opt_out_persistence_by_default')\n        });\n    }\n};\n\n/**\n * Enable or disable persistence based on options\n * only enable/disable if persistence is not already in this state\n * @param {boolean} [options.clear_persistence] If true, will delete all data stored by the sdk in persistence and disable it\n * @param {boolean} [options.enable_persistence] If true, will re-enable sdk persistence\n */\nMixpanelLib.prototype._gdpr_update_persistence = function(options) {\n    var disabled;\n    if (options && options['clear_persistence']) {\n        disabled = true;\n    } else if (options && options['enable_persistence']) {\n        disabled = false;\n    } else {\n        return;\n    }\n\n    if (!this.get_config('disable_persistence') && this['persistence'].disabled !== disabled) {\n        this['persistence'].set_disabled(disabled);\n    }\n\n    if (disabled) {\n        _.each(this.request_batchers, function(batcher) {\n            batcher.clear();\n        });\n    }\n};\n\n// call a base gdpr function after constructing the appropriate token and options args\nMixpanelLib.prototype._gdpr_call_func = function(func, options) {\n    options = _.extend({\n        'track': _.bind(this.track, this),\n        'persistence_type': this.get_config('opt_out_tracking_persistence_type'),\n        'cookie_prefix': this.get_config('opt_out_tracking_cookie_prefix'),\n        'cookie_expiration': this.get_config('cookie_expiration'),\n        'cross_site_cookie': this.get_config('cross_site_cookie'),\n        'cross_subdomain_cookie': this.get_config('cross_subdomain_cookie'),\n        'cookie_domain': this.get_config('cookie_domain'),\n        'secure_cookie': this.get_config('secure_cookie'),\n        'ignore_dnt': this.get_config('ignore_dnt')\n    }, options);\n\n    // check if localStorage can be used for recording opt out status, fall back to cookie if not\n    if (!_.localStorage.is_supported()) {\n        options['persistence_type'] = 'cookie';\n    }\n\n    return func(this.get_config('token'), {\n        track: options['track'],\n        trackEventName: options['track_event_name'],\n        trackProperties: options['track_properties'],\n        persistenceType: options['persistence_type'],\n        persistencePrefix: options['cookie_prefix'],\n        cookieDomain: options['cookie_domain'],\n        cookieExpiration: options['cookie_expiration'],\n        crossSiteCookie: options['cross_site_cookie'],\n        crossSubdomainCookie: options['cross_subdomain_cookie'],\n        secureCookie: options['secure_cookie'],\n        ignoreDnt: options['ignore_dnt']\n    });\n};\n\n/**\n * Opt the user in to data tracking and cookies/localstorage for this Mixpanel instance\n *\n * ### Usage\n *\n *     // opt user in\n *     mixpanel.opt_in_tracking();\n *\n *     // opt user in with specific event name, properties, cookie configuration\n *     mixpanel.opt_in_tracking({\n *         track_event_name: 'User opted in',\n *         track_event_properties: {\n *             'Email': 'jdoe@example.com'\n *         },\n *         cookie_expiration: 30,\n *         secure_cookie: true\n *     });\n *\n * @param {Object} [options] A dictionary of config options to override\n * @param {function} [options.track] Function used for tracking a Mixpanel event to record the opt-in action (default is this Mixpanel instance's track method)\n * @param {string} [options.track_event_name=$opt_in] Event name to be used for tracking the opt-in action\n * @param {Object} [options.track_properties] Set of properties to be tracked along with the opt-in action\n * @param {boolean} [options.enable_persistence=true] If true, will re-enable sdk persistence\n * @param {string} [options.persistence_type=localStorage] Persistence mechanism used - cookie or localStorage - falls back to cookie if localStorage is unavailable\n * @param {string} [options.cookie_prefix=__mp_opt_in_out] Custom prefix to be used in the cookie/localstorage name\n * @param {Number} [options.cookie_expiration] Number of days until the opt-in cookie expires (overrides value specified in this Mixpanel instance's config)\n * @param {string} [options.cookie_domain] Custom cookie domain (overrides value specified in this Mixpanel instance's config)\n * @param {boolean} [options.cross_site_cookie] Whether the opt-in cookie is set as cross-site-enabled (overrides value specified in this Mixpanel instance's config)\n * @param {boolean} [options.cross_subdomain_cookie] Whether the opt-in cookie is set as cross-subdomain or not (overrides value specified in this Mixpanel instance's config)\n * @param {boolean} [options.secure_cookie] Whether the opt-in cookie is set as secure or not (overrides value specified in this Mixpanel instance's config)\n */\nMixpanelLib.prototype.opt_in_tracking = function(options) {\n    options = _.extend({\n        'enable_persistence': true\n    }, options);\n\n    this._gdpr_call_func(optIn, options);\n    this._gdpr_update_persistence(options);\n};\n\n/**\n * Opt the user out of data tracking and cookies/localstorage for this Mixpanel instance\n *\n * ### Usage\n *\n *     // opt user out\n *     mixpanel.opt_out_tracking();\n *\n *     // opt user out with different cookie configuration from Mixpanel instance\n *     mixpanel.opt_out_tracking({\n *         cookie_expiration: 30,\n *         secure_cookie: true\n *     });\n *\n * @param {Object} [options] A dictionary of config options to override\n * @param {boolean} [options.delete_user=true] If true, will delete the currently identified user's profile and clear all charges after opting the user out\n * @param {boolean} [options.clear_persistence=true] If true, will delete all data stored by the sdk in persistence\n * @param {string} [options.persistence_type=localStorage] Persistence mechanism used - cookie or localStorage - falls back to cookie if localStorage is unavailable\n * @param {string} [options.cookie_prefix=__mp_opt_in_out] Custom prefix to be used in the cookie/localstorage name\n * @param {Number} [options.cookie_expiration] Number of days until the opt-in cookie expires (overrides value specified in this Mixpanel instance's config)\n * @param {string} [options.cookie_domain] Custom cookie domain (overrides value specified in this Mixpanel instance's config)\n * @param {boolean} [options.cross_site_cookie] Whether the opt-in cookie is set as cross-site-enabled (overrides value specified in this Mixpanel instance's config)\n * @param {boolean} [options.cross_subdomain_cookie] Whether the opt-in cookie is set as cross-subdomain or not (overrides value specified in this Mixpanel instance's config)\n * @param {boolean} [options.secure_cookie] Whether the opt-in cookie is set as secure or not (overrides value specified in this Mixpanel instance's config)\n */\nMixpanelLib.prototype.opt_out_tracking = function(options) {\n    options = _.extend({\n        'clear_persistence': true,\n        'delete_user': true\n    }, options);\n\n    // delete user and clear charges since these methods may be disabled by opt-out\n    if (options['delete_user'] && this['people'] && this['people']._identify_called()) {\n        this['people'].delete_user();\n        this['people'].clear_charges();\n    }\n\n    this._gdpr_call_func(optOut, options);\n    this._gdpr_update_persistence(options);\n};\n\n/**\n * Check whether the user has opted in to data tracking and cookies/localstorage for this Mixpanel instance\n *\n * ### Usage\n *\n *     var has_opted_in = mixpanel.has_opted_in_tracking();\n *     // use has_opted_in value\n *\n * @param {Object} [options] A dictionary of config options to override\n * @param {string} [options.persistence_type=localStorage] Persistence mechanism used - cookie or localStorage - falls back to cookie if localStorage is unavailable\n * @param {string} [options.cookie_prefix=__mp_opt_in_out] Custom prefix to be used in the cookie/localstorage name\n * @returns {boolean} current opt-in status\n */\nMixpanelLib.prototype.has_opted_in_tracking = function(options) {\n    return this._gdpr_call_func(hasOptedIn, options);\n};\n\n/**\n * Check whether the user has opted out of data tracking and cookies/localstorage for this Mixpanel instance\n *\n * ### Usage\n *\n *     var has_opted_out = mixpanel.has_opted_out_tracking();\n *     // use has_opted_out value\n *\n * @param {Object} [options] A dictionary of config options to override\n * @param {string} [options.persistence_type=localStorage] Persistence mechanism used - cookie or localStorage - falls back to cookie if localStorage is unavailable\n * @param {string} [options.cookie_prefix=__mp_opt_in_out] Custom prefix to be used in the cookie/localstorage name\n * @returns {boolean} current opt-out status\n */\nMixpanelLib.prototype.has_opted_out_tracking = function(options) {\n    return this._gdpr_call_func(hasOptedOut, options);\n};\n\n/**\n * Clear the user's opt in/out status of data tracking and cookies/localstorage for this Mixpanel instance\n *\n * ### Usage\n *\n *     // clear user's opt-in/out status\n *     mixpanel.clear_opt_in_out_tracking();\n *\n *     // clear user's opt-in/out status with specific cookie configuration - should match\n *     // configuration used when opt_in_tracking/opt_out_tracking methods were called.\n *     mixpanel.clear_opt_in_out_tracking({\n *         cookie_expiration: 30,\n *         secure_cookie: true\n *     });\n *\n * @param {Object} [options] A dictionary of config options to override\n * @param {boolean} [options.enable_persistence=true] If true, will re-enable sdk persistence\n * @param {string} [options.persistence_type=localStorage] Persistence mechanism used - cookie or localStorage - falls back to cookie if localStorage is unavailable\n * @param {string} [options.cookie_prefix=__mp_opt_in_out] Custom prefix to be used in the cookie/localstorage name\n * @param {Number} [options.cookie_expiration] Number of days until the opt-in cookie expires (overrides value specified in this Mixpanel instance's config)\n * @param {string} [options.cookie_domain] Custom cookie domain (overrides value specified in this Mixpanel instance's config)\n * @param {boolean} [options.cross_site_cookie] Whether the opt-in cookie is set as cross-site-enabled (overrides value specified in this Mixpanel instance's config)\n * @param {boolean} [options.cross_subdomain_cookie] Whether the opt-in cookie is set as cross-subdomain or not (overrides value specified in this Mixpanel instance's config)\n * @param {boolean} [options.secure_cookie] Whether the opt-in cookie is set as secure or not (overrides value specified in this Mixpanel instance's config)\n */\nMixpanelLib.prototype.clear_opt_in_out_tracking = function(options) {\n    options = _.extend({\n        'enable_persistence': true\n    }, options);\n\n    this._gdpr_call_func(clearOptInOut, options);\n    this._gdpr_update_persistence(options);\n};\n\nMixpanelLib.prototype.report_error = function(msg, err) {\n    console.error.apply(console.error, arguments);\n    try {\n        if (!err && !(msg instanceof Error)) {\n            msg = new Error(msg);\n        }\n        this.get_config('error_reporter')(msg, err);\n    } catch(err) {\n        console.error(err);\n    }\n};\n\n// EXPORTS (for closure compiler)\n\n// MixpanelLib Exports\nMixpanelLib.prototype['init']                               = MixpanelLib.prototype.init;\nMixpanelLib.prototype['reset']                              = MixpanelLib.prototype.reset;\nMixpanelLib.prototype['disable']                            = MixpanelLib.prototype.disable;\nMixpanelLib.prototype['time_event']                         = MixpanelLib.prototype.time_event;\nMixpanelLib.prototype['track']                              = MixpanelLib.prototype.track;\nMixpanelLib.prototype['track_links']                        = MixpanelLib.prototype.track_links;\nMixpanelLib.prototype['track_forms']                        = MixpanelLib.prototype.track_forms;\nMixpanelLib.prototype['track_pageview']                     = MixpanelLib.prototype.track_pageview;\nMixpanelLib.prototype['register']                           = MixpanelLib.prototype.register;\nMixpanelLib.prototype['register_once']                      = MixpanelLib.prototype.register_once;\nMixpanelLib.prototype['unregister']                         = MixpanelLib.prototype.unregister;\nMixpanelLib.prototype['identify']                           = MixpanelLib.prototype.identify;\nMixpanelLib.prototype['alias']                              = MixpanelLib.prototype.alias;\nMixpanelLib.prototype['name_tag']                           = MixpanelLib.prototype.name_tag;\nMixpanelLib.prototype['set_config']                         = MixpanelLib.prototype.set_config;\nMixpanelLib.prototype['get_config']                         = MixpanelLib.prototype.get_config;\nMixpanelLib.prototype['get_property']                       = MixpanelLib.prototype.get_property;\nMixpanelLib.prototype['get_distinct_id']                    = MixpanelLib.prototype.get_distinct_id;\nMixpanelLib.prototype['toString']                           = MixpanelLib.prototype.toString;\nMixpanelLib.prototype['opt_out_tracking']                   = MixpanelLib.prototype.opt_out_tracking;\nMixpanelLib.prototype['opt_in_tracking']                    = MixpanelLib.prototype.opt_in_tracking;\nMixpanelLib.prototype['has_opted_out_tracking']             = MixpanelLib.prototype.has_opted_out_tracking;\nMixpanelLib.prototype['has_opted_in_tracking']              = MixpanelLib.prototype.has_opted_in_tracking;\nMixpanelLib.prototype['clear_opt_in_out_tracking']          = MixpanelLib.prototype.clear_opt_in_out_tracking;\nMixpanelLib.prototype['get_group']                          = MixpanelLib.prototype.get_group;\nMixpanelLib.prototype['set_group']                          = MixpanelLib.prototype.set_group;\nMixpanelLib.prototype['add_group']                          = MixpanelLib.prototype.add_group;\nMixpanelLib.prototype['remove_group']                       = MixpanelLib.prototype.remove_group;\nMixpanelLib.prototype['track_with_groups']                  = MixpanelLib.prototype.track_with_groups;\nMixpanelLib.prototype['start_batch_senders']                = MixpanelLib.prototype.start_batch_senders;\nMixpanelLib.prototype['stop_batch_senders']                 = MixpanelLib.prototype.stop_batch_senders;\n\n// MixpanelPersistence Exports\nMixpanelPersistence.prototype['properties']            = MixpanelPersistence.prototype.properties;\nMixpanelPersistence.prototype['update_search_keyword'] = MixpanelPersistence.prototype.update_search_keyword;\nMixpanelPersistence.prototype['update_referrer_info']  = MixpanelPersistence.prototype.update_referrer_info;\nMixpanelPersistence.prototype['get_cross_subdomain']   = MixpanelPersistence.prototype.get_cross_subdomain;\nMixpanelPersistence.prototype['clear']                 = MixpanelPersistence.prototype.clear;\n\n\nvar instances = {};\nvar extend_mp = function() {\n    // add all the sub mixpanel instances\n    _.each(instances, function(instance, name) {\n        if (name !== PRIMARY_INSTANCE_NAME) { mixpanel_master[name] = instance; }\n    });\n\n    // add private functions as _\n    mixpanel_master['_'] = _;\n};\n\nvar override_mp_init_func = function() {\n    // we override the snippets init function to handle the case where a\n    // user initializes the mixpanel library after the script loads & runs\n    mixpanel_master['init'] = function(token, config, name) {\n        if (name) {\n            // initialize a sub library\n            if (!mixpanel_master[name]) {\n                mixpanel_master[name] = instances[name] = create_mplib(token, config, name);\n                mixpanel_master[name]._loaded();\n            }\n            return mixpanel_master[name];\n        } else {\n            var instance = mixpanel_master;\n\n            if (instances[PRIMARY_INSTANCE_NAME]) {\n                // main mixpanel lib already initialized\n                instance = instances[PRIMARY_INSTANCE_NAME];\n            } else if (token) {\n                // intialize the main mixpanel lib\n                instance = create_mplib(token, config, PRIMARY_INSTANCE_NAME);\n                instance._loaded();\n                instances[PRIMARY_INSTANCE_NAME] = instance;\n            }\n\n            mixpanel_master = instance;\n            if (init_type === INIT_SNIPPET) {\n                window$1[PRIMARY_INSTANCE_NAME] = mixpanel_master;\n            }\n            extend_mp();\n        }\n    };\n};\n\nvar add_dom_loaded_handler = function() {\n    // Cross browser DOM Loaded support\n    function dom_loaded_handler() {\n        // function flag since we only want to execute this once\n        if (dom_loaded_handler.done) { return; }\n        dom_loaded_handler.done = true;\n\n        DOM_LOADED = true;\n        ENQUEUE_REQUESTS = false;\n\n        _.each(instances, function(inst) {\n            inst._dom_loaded();\n        });\n    }\n\n    function do_scroll_check() {\n        try {\n            document$1.documentElement.doScroll('left');\n        } catch(e) {\n            setTimeout(do_scroll_check, 1);\n            return;\n        }\n\n        dom_loaded_handler();\n    }\n\n    if (document$1.addEventListener) {\n        if (document$1.readyState === 'complete') {\n            // safari 4 can fire the DOMContentLoaded event before loading all\n            // external JS (including this file). you will see some copypasta\n            // on the internet that checks for 'complete' and 'loaded', but\n            // 'loaded' is an IE thing\n            dom_loaded_handler();\n        } else {\n            document$1.addEventListener('DOMContentLoaded', dom_loaded_handler, false);\n        }\n    } else if (document$1.attachEvent) {\n        // IE\n        document$1.attachEvent('onreadystatechange', dom_loaded_handler);\n\n        // check to make sure we arn't in a frame\n        var toplevel = false;\n        try {\n            toplevel = window$1.frameElement === null;\n        } catch(e) {\n            // noop\n        }\n\n        if (document$1.documentElement.doScroll && toplevel) {\n            do_scroll_check();\n        }\n    }\n\n    // fallback handler, always will work\n    _.register_event(window$1, 'load', dom_loaded_handler, true);\n};\n\nfunction init_as_module() {\n    init_type = INIT_MODULE;\n    mixpanel_master = new MixpanelLib();\n\n    override_mp_init_func();\n    mixpanel_master['init']();\n    add_dom_loaded_handler();\n\n    return mixpanel_master;\n}\n\nvar mixpanel = init_as_module();\n\nmodule.exports = mixpanel;","/**\n * This file contains overrides the default\n * hammer.js functions to add our own utility\n */\n/* eslint-disable */\n/* Hammer.js constants */\nconst INPUT_START = 1;\nconst INPUT_MOVE = 2;\nconst INPUT_END = 4;\nconst MOUSE_INPUT_MAP = {\n    mousedown: INPUT_START,\n    mousemove: INPUT_MOVE,\n    mouseup: INPUT_END\n};\n/**\n * Helper function that returns true if any element in an array meets given criteria.\n * Because older browsers do not support `Array.prototype.some`\n * @params array {Array}\n * @params predict {Function}\n */\nfunction some(array, predict) {\n    for (let i = 0; i < array.length; i++) {\n        if (predict(array[i])) {\n            return true;\n        }\n    }\n    return false;\n}\n/* eslint-disable no-invalid-this */\nexport function enhancePointerEventInput(PointerEventInput) {\n    const oldHandler = PointerEventInput.prototype.handler;\n    // overrides PointerEventInput.handler to accept right mouse button\n    PointerEventInput.prototype.handler = function handler(ev) {\n        const store = this.store;\n        // Allow non-left mouse buttons through\n        if (ev.button > 0 && ev.type === 'pointerdown') {\n            if (!some(store, e => e.pointerId === ev.pointerId)) {\n                store.push(ev);\n            }\n        }\n        oldHandler.call(this, ev);\n    };\n}\n// overrides MouseInput.handler to accept right mouse button\nexport function enhanceMouseInput(MouseInput) {\n    MouseInput.prototype.handler = function handler(ev) {\n        let eventType = MOUSE_INPUT_MAP[ev.type];\n        // on start we want to have the mouse button down\n        if (eventType & INPUT_START && ev.button >= 0) {\n            this.pressed = true;\n        }\n        if (eventType & INPUT_MOVE && ev.which === 0) {\n            eventType = INPUT_END;\n        }\n        // mouse must be down\n        if (!this.pressed) {\n            return;\n        }\n        if (eventType & INPUT_END) {\n            this.pressed = false;\n        }\n        this.callback(this.manager, eventType, {\n            pointers: [ev],\n            changedPointers: [ev],\n            pointerType: 'mouse',\n            srcEvent: ev\n        });\n    };\n}\n//# sourceMappingURL=hammer-overrides.js.map","import * as hammerjs from 'hammerjs';\nimport { enhancePointerEventInput, enhanceMouseInput } from './hammer-overrides';\nenhancePointerEventInput(hammerjs.PointerEventInput);\nenhanceMouseInput(hammerjs.MouseInput);\nexport const Manager = hammerjs.Manager;\nexport default hammerjs;\n//# sourceMappingURL=hammer.browser.js.map","export default class Input {\n    constructor(element, callback, options) {\n        this.element = element;\n        this.callback = callback;\n        this.options = { enable: true, ...options };\n    }\n}\n//# sourceMappingURL=input.js.map","import Hammer from './utils/hammer';\n// This module contains constants that must be conditionally required\n// due to `window`/`document` references downstream.\nexport const RECOGNIZERS = Hammer\n    ? [\n        [Hammer.Pan, { event: 'tripan', pointers: 3, threshold: 0, enable: false }],\n        [Hammer.Rotate, { enable: false }],\n        [Hammer.Pinch, { enable: false }],\n        [Hammer.Swipe, { enable: false }],\n        [Hammer.Pan, { threshold: 0, enable: false }],\n        [Hammer.Press, { enable: false }],\n        [Hammer.Tap, { event: 'doubletap', taps: 2, enable: false }],\n        // TODO - rename to 'tap' and 'singletap' in the next major release\n        [Hammer.Tap, { event: 'anytap', enable: false }],\n        [Hammer.Tap, { enable: false }]\n    ]\n    : null;\n// Recognize the following gestures even if a given recognizer succeeds\nexport const RECOGNIZER_COMPATIBLE_MAP = {\n    tripan: ['rotate', 'pinch', 'pan'],\n    rotate: ['pinch'],\n    pinch: ['pan'],\n    pan: ['press', 'doubletap', 'anytap', 'tap'],\n    doubletap: ['anytap'],\n    anytap: ['tap']\n};\n// Recognize the folling gestures only if a given recognizer fails\nexport const RECOGNIZER_FALLBACK_MAP = {\n    doubletap: ['tap']\n};\n/**\n * Only one set of basic input events will be fired by Hammer.js:\n * either pointer, touch, or mouse, depending on system support.\n * In order to enable an application to be agnostic of system support,\n * alias basic input events into \"classes\" of events: down, move, and up.\n * See `_onBasicInput()` for usage of these aliases.\n */\nexport const BASIC_EVENT_ALIASES = {\n    pointerdown: 'pointerdown',\n    pointermove: 'pointermove',\n    pointerup: 'pointerup',\n    touchstart: 'pointerdown',\n    touchmove: 'pointermove',\n    touchend: 'pointerup',\n    mousedown: 'pointerdown',\n    mousemove: 'pointermove',\n    mouseup: 'pointerup'\n};\nexport const INPUT_EVENT_TYPES = {\n    KEY_EVENTS: ['keydown', 'keyup'],\n    MOUSE_EVENTS: ['mousedown', 'mousemove', 'mouseup', 'mouseover', 'mouseout', 'mouseleave'],\n    WHEEL_EVENTS: [\n        // Chrome, Safari\n        'wheel',\n        // IE\n        'mousewheel'\n    ]\n};\n/**\n * \"Gestural\" events are those that have semantic meaning beyond the basic input event,\n * e.g. a click or tap is a sequence of `down` and `up` events with no `move` event in between.\n * Hammer.js handles these with its Recognizer system;\n * this block maps event names to the Recognizers required to detect the events.\n */\nexport const EVENT_RECOGNIZER_MAP = {\n    tap: 'tap',\n    anytap: 'anytap',\n    doubletap: 'doubletap',\n    press: 'press',\n    pinch: 'pinch',\n    pinchin: 'pinch',\n    pinchout: 'pinch',\n    pinchstart: 'pinch',\n    pinchmove: 'pinch',\n    pinchend: 'pinch',\n    pinchcancel: 'pinch',\n    rotate: 'rotate',\n    rotatestart: 'rotate',\n    rotatemove: 'rotate',\n    rotateend: 'rotate',\n    rotatecancel: 'rotate',\n    tripan: 'tripan',\n    tripanstart: 'tripan',\n    tripanmove: 'tripan',\n    tripanup: 'tripan',\n    tripandown: 'tripan',\n    tripanleft: 'tripan',\n    tripanright: 'tripan',\n    tripanend: 'tripan',\n    tripancancel: 'tripan',\n    pan: 'pan',\n    panstart: 'pan',\n    panmove: 'pan',\n    panup: 'pan',\n    pandown: 'pan',\n    panleft: 'pan',\n    panright: 'pan',\n    panend: 'pan',\n    pancancel: 'pan',\n    swipe: 'swipe',\n    swipeleft: 'swipe',\n    swiperight: 'swipe',\n    swipeup: 'swipe',\n    swipedown: 'swipe'\n};\n/**\n * Map gestural events typically provided by browsers\n * that are not reported in 'hammer.input' events\n * to corresponding Hammer.js gestures.\n */\nexport const GESTURE_EVENT_ALIASES = {\n    click: 'tap',\n    anyclick: 'anytap',\n    dblclick: 'doubletap',\n    mousedown: 'pointerdown',\n    mousemove: 'pointermove',\n    mouseup: 'pointerup',\n    mouseover: 'pointerover',\n    mouseout: 'pointerout',\n    mouseleave: 'pointerleave'\n};\n//# sourceMappingURL=constants.js.map","// Purpose: include this in your module to avoids adding dependencies on\n// micro modules like 'global'\n/* global window, global, document, navigator */\nexport const userAgent = typeof navigator !== 'undefined' && navigator.userAgent ? navigator.userAgent.toLowerCase() : '';\nconst window_ = typeof window !== 'undefined' ? window : global;\nconst global_ = typeof global !== 'undefined' ? global : window;\nconst document_ = typeof document !== 'undefined' ? document : {};\nexport { window_ as window, global_ as global, document_ as document };\n/*\n * Detect whether passive option is supported by the current browser.\n * https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener\n   #Safely_detecting_option_support\n */\nlet passiveSupported = false;\n/* eslint-disable accessor-pairs, no-empty */\ntry {\n    const options = {\n        // This function will be called when the browser\n        // attempts to access the passive property.\n        get passive() {\n            passiveSupported = true;\n            return true;\n        }\n    };\n    window_.addEventListener('test', null, options);\n    window_.removeEventListener('test', null);\n}\ncatch (err) {\n    passiveSupported = false;\n}\nexport { passiveSupported };\n//# sourceMappingURL=globals.js.map","import Input from './input';\nimport { INPUT_EVENT_TYPES } from '../constants';\nimport { window, userAgent, passiveSupported } from '../utils/globals';\nconst firefox = userAgent.indexOf('firefox') !== -1;\nconst { WHEEL_EVENTS } = INPUT_EVENT_TYPES;\nconst EVENT_TYPE = 'wheel';\n// Constants for normalizing input delta\nconst WHEEL_DELTA_MAGIC_SCALER = 4.000244140625;\nconst WHEEL_DELTA_PER_LINE = 40;\n// Slow down zoom if shift key is held for more precise zooming\nconst SHIFT_MULTIPLIER = 0.25;\nexport default class WheelInput extends Input {\n    constructor(element, callback, options) {\n        super(element, callback, options);\n        /* eslint-disable complexity, max-statements */\n        this.handleEvent = (event) => {\n            if (!this.options.enable) {\n                return;\n            }\n            let value = event.deltaY;\n            if (window.WheelEvent) {\n                // Firefox doubles the values on retina screens...\n                if (firefox && event.deltaMode === window.WheelEvent.DOM_DELTA_PIXEL) {\n                    value /= window.devicePixelRatio;\n                }\n                if (event.deltaMode === window.WheelEvent.DOM_DELTA_LINE) {\n                    value *= WHEEL_DELTA_PER_LINE;\n                }\n            }\n            if (value !== 0 && value % WHEEL_DELTA_MAGIC_SCALER === 0) {\n                // This one is definitely a mouse wheel event.\n                // Normalize this value to match trackpad.\n                value = Math.floor(value / WHEEL_DELTA_MAGIC_SCALER);\n            }\n            if (event.shiftKey && value) {\n                value = value * SHIFT_MULTIPLIER;\n            }\n            this.callback({\n                type: EVENT_TYPE,\n                center: {\n                    x: event.clientX,\n                    y: event.clientY\n                },\n                delta: -value,\n                srcEvent: event,\n                pointerType: 'mouse',\n                target: event.target\n            });\n        };\n        this.events = (this.options.events || []).concat(WHEEL_EVENTS);\n        this.events.forEach(event => element.addEventListener(event, this.handleEvent, passiveSupported ? { passive: false } : false));\n    }\n    destroy() {\n        this.events.forEach(event => this.element.removeEventListener(event, this.handleEvent));\n    }\n    /**\n     * Enable this input (begin processing events)\n     * if the specified event type is among those handled by this input.\n     */\n    enableEventType(eventType, enabled) {\n        if (eventType === EVENT_TYPE) {\n            this.options.enable = enabled;\n        }\n    }\n}\n//# sourceMappingURL=wheel-input.js.map","import Input from './input';\nimport { INPUT_EVENT_TYPES } from '../constants';\nconst { MOUSE_EVENTS } = INPUT_EVENT_TYPES;\nconst MOVE_EVENT_TYPE = 'pointermove';\nconst OVER_EVENT_TYPE = 'pointerover';\nconst OUT_EVENT_TYPE = 'pointerout';\nconst ENTER_EVENT_TYPE = 'pointerenter';\nconst LEAVE_EVENT_TYPE = 'pointerleave';\n/**\n * Hammer.js swallows 'move' events (for pointer/touch/mouse)\n * when the pointer is not down. This class sets up a handler\n * specifically for these events to work around this limitation.\n * Note that this could be extended to more intelligently handle\n * move events across input types, e.g. storing multiple simultaneous\n * pointer/touch events, calculating speed/direction, etc.\n */\nexport default class MoveInput extends Input {\n    constructor(element, callback, options) {\n        super(element, callback, options);\n        this.handleEvent = (event) => {\n            this.handleOverEvent(event);\n            this.handleOutEvent(event);\n            this.handleEnterEvent(event);\n            this.handleLeaveEvent(event);\n            this.handleMoveEvent(event);\n        };\n        this.pressed = false;\n        const { enable } = this.options;\n        this.enableMoveEvent = enable;\n        this.enableLeaveEvent = enable;\n        this.enableEnterEvent = enable;\n        this.enableOutEvent = enable;\n        this.enableOverEvent = enable;\n        this.events = (this.options.events || []).concat(MOUSE_EVENTS);\n        this.events.forEach(event => element.addEventListener(event, this.handleEvent));\n    }\n    destroy() {\n        this.events.forEach(event => this.element.removeEventListener(event, this.handleEvent));\n    }\n    /**\n     * Enable this input (begin processing events)\n     * if the specified event type is among those handled by this input.\n     */\n    enableEventType(eventType, enabled) {\n        if (eventType === MOVE_EVENT_TYPE) {\n            this.enableMoveEvent = enabled;\n        }\n        if (eventType === OVER_EVENT_TYPE) {\n            this.enableOverEvent = enabled;\n        }\n        if (eventType === OUT_EVENT_TYPE) {\n            this.enableOutEvent = enabled;\n        }\n        if (eventType === ENTER_EVENT_TYPE) {\n            this.enableEnterEvent = enabled;\n        }\n        if (eventType === LEAVE_EVENT_TYPE) {\n            this.enableLeaveEvent = enabled;\n        }\n    }\n    handleOverEvent(event) {\n        if (this.enableOverEvent) {\n            if (event.type === 'mouseover') {\n                this._emit(OVER_EVENT_TYPE, event);\n            }\n        }\n    }\n    handleOutEvent(event) {\n        if (this.enableOutEvent) {\n            if (event.type === 'mouseout') {\n                this._emit(OUT_EVENT_TYPE, event);\n            }\n        }\n    }\n    handleEnterEvent(event) {\n        if (this.enableEnterEvent) {\n            if (event.type === 'mouseenter') {\n                this._emit(ENTER_EVENT_TYPE, event);\n            }\n        }\n    }\n    handleLeaveEvent(event) {\n        if (this.enableLeaveEvent) {\n            if (event.type === 'mouseleave') {\n                this._emit(LEAVE_EVENT_TYPE, event);\n            }\n        }\n    }\n    handleMoveEvent(event) {\n        if (this.enableMoveEvent) {\n            switch (event.type) {\n                case 'mousedown':\n                    if (event.button >= 0) {\n                        // Button is down\n                        this.pressed = true;\n                    }\n                    break;\n                case 'mousemove':\n                    // Move events use `which` to track the button being pressed\n                    if (event.which === 0) {\n                        // Button is not down\n                        this.pressed = false;\n                    }\n                    if (!this.pressed) {\n                        // Drag events are emitted by hammer already\n                        // we just need to emit the move event on hover\n                        this._emit(MOVE_EVENT_TYPE, event);\n                    }\n                    break;\n                case 'mouseup':\n                    this.pressed = false;\n                    break;\n                default:\n            }\n        }\n    }\n    _emit(type, event) {\n        this.callback({\n            type,\n            center: {\n                x: event.clientX,\n                y: event.clientY\n            },\n            srcEvent: event,\n            pointerType: 'mouse',\n            target: event.target\n        });\n    }\n}\n//# sourceMappingURL=move-input.js.map","import Input from './input';\nimport { INPUT_EVENT_TYPES } from '../constants';\nconst { KEY_EVENTS } = INPUT_EVENT_TYPES;\nconst DOWN_EVENT_TYPE = 'keydown';\nconst UP_EVENT_TYPE = 'keyup';\nexport default class KeyInput extends Input {\n    constructor(element, callback, options) {\n        super(element, callback, options);\n        this.handleEvent = (event) => {\n            // Ignore if focused on text input\n            const targetElement = (event.target || event.srcElement);\n            if ((targetElement.tagName === 'INPUT' && targetElement.type === 'text') ||\n                targetElement.tagName === 'TEXTAREA') {\n                return;\n            }\n            if (this.enableDownEvent && event.type === 'keydown') {\n                this.callback({\n                    type: DOWN_EVENT_TYPE,\n                    srcEvent: event,\n                    key: event.key,\n                    target: event.target\n                });\n            }\n            if (this.enableUpEvent && event.type === 'keyup') {\n                this.callback({\n                    type: UP_EVENT_TYPE,\n                    srcEvent: event,\n                    key: event.key,\n                    target: event.target\n                });\n            }\n        };\n        this.enableDownEvent = this.options.enable;\n        this.enableUpEvent = this.options.enable;\n        this.events = (this.options.events || []).concat(KEY_EVENTS);\n        element.tabIndex = this.options.tabIndex || 0;\n        element.style.outline = 'none';\n        this.events.forEach(event => element.addEventListener(event, this.handleEvent));\n    }\n    destroy() {\n        this.events.forEach(event => this.element.removeEventListener(event, this.handleEvent));\n    }\n    /**\n     * Enable this input (begin processing events)\n     * if the specified event type is among those handled by this input.\n     */\n    enableEventType(eventType, enabled) {\n        if (eventType === DOWN_EVENT_TYPE) {\n            this.enableDownEvent = enabled;\n        }\n        if (eventType === UP_EVENT_TYPE) {\n            this.enableUpEvent = enabled;\n        }\n    }\n}\n//# sourceMappingURL=key-input.js.map","import Input from './input';\nconst EVENT_TYPE = 'contextmenu';\nexport default class ContextmenuInput extends Input {\n    constructor(element, callback, options) {\n        super(element, callback, options);\n        this.handleEvent = (event) => {\n            if (!this.options.enable) {\n                return;\n            }\n            this.callback({\n                type: EVENT_TYPE,\n                center: {\n                    x: event.clientX,\n                    y: event.clientY\n                },\n                srcEvent: event,\n                pointerType: 'mouse',\n                target: event.target\n            });\n        };\n        element.addEventListener('contextmenu', this.handleEvent);\n    }\n    destroy() {\n        this.element.removeEventListener('contextmenu', this.handleEvent);\n    }\n    /**\n     * Enable this input (begin processing events)\n     * if the specified event type is among those handled by this input.\n     */\n    enableEventType(eventType, enabled) {\n        if (eventType === EVENT_TYPE) {\n            this.options.enable = enabled;\n        }\n    }\n}\n//# sourceMappingURL=contextmenu-input.js.map","/* Constants */\nconst DOWN_EVENT = 1;\nconst MOVE_EVENT = 2;\nconst UP_EVENT = 4;\nconst MOUSE_EVENTS = {\n    pointerdown: DOWN_EVENT,\n    pointermove: MOVE_EVENT,\n    pointerup: UP_EVENT,\n    mousedown: DOWN_EVENT,\n    mousemove: MOVE_EVENT,\n    mouseup: UP_EVENT\n};\n// MouseEvent.which https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent/which\nconst MOUSE_EVENT_WHICH_LEFT = 1;\nconst MOUSE_EVENT_WHICH_MIDDLE = 2;\nconst MOUSE_EVENT_WHICH_RIGHT = 3;\n// MouseEvent.button https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent/button\nconst MOUSE_EVENT_BUTTON_LEFT = 0;\nconst MOUSE_EVENT_BUTTON_MIDDLE = 1;\nconst MOUSE_EVENT_BUTTON_RIGHT = 2;\n// MouseEvent.buttons https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent/buttons\nconst MOUSE_EVENT_BUTTONS_LEFT_MASK = 1;\nconst MOUSE_EVENT_BUTTONS_RIGHT_MASK = 2;\nconst MOUSE_EVENT_BUTTONS_MIDDLE_MASK = 4;\n/**\n * Extract the involved mouse button\n */\nexport function whichButtons(event) {\n    const eventType = MOUSE_EVENTS[event.srcEvent.type];\n    if (!eventType) {\n        // Not a mouse evet\n        return null;\n    }\n    const { buttons, button, which } = event.srcEvent;\n    let leftButton = false;\n    let middleButton = false;\n    let rightButton = false;\n    if (\n    // button is up, need to find out which one was pressed before\n    eventType === UP_EVENT ||\n        // moving but does not support `buttons` API\n        (eventType === MOVE_EVENT && !Number.isFinite(buttons))) {\n        leftButton = which === MOUSE_EVENT_WHICH_LEFT;\n        middleButton = which === MOUSE_EVENT_WHICH_MIDDLE;\n        rightButton = which === MOUSE_EVENT_WHICH_RIGHT;\n    }\n    else if (eventType === MOVE_EVENT) {\n        leftButton = Boolean(buttons & MOUSE_EVENT_BUTTONS_LEFT_MASK);\n        middleButton = Boolean(buttons & MOUSE_EVENT_BUTTONS_MIDDLE_MASK);\n        rightButton = Boolean(buttons & MOUSE_EVENT_BUTTONS_RIGHT_MASK);\n    }\n    else if (eventType === DOWN_EVENT) {\n        leftButton = button === MOUSE_EVENT_BUTTON_LEFT;\n        middleButton = button === MOUSE_EVENT_BUTTON_MIDDLE;\n        rightButton = button === MOUSE_EVENT_BUTTON_RIGHT;\n    }\n    return { leftButton, middleButton, rightButton };\n}\n/**\n * Calculate event position relative to the root element\n */\nexport function getOffsetPosition(event, rootElement) {\n    const center = event.center;\n    // `center` is a hammer.js event property\n    if (!center) {\n        // Not a gestural event\n        return null;\n    }\n    const rect = rootElement.getBoundingClientRect();\n    // Fix scale for map affected by a CSS transform.\n    // See https://stackoverflow.com/a/26893663/3528533\n    const scaleX = rect.width / rootElement.offsetWidth || 1;\n    const scaleY = rect.height / rootElement.offsetHeight || 1;\n    // Calculate center relative to the root element\n    const offsetCenter = {\n        x: (center.x - rect.left - rootElement.clientLeft) / scaleX,\n        y: (center.y - rect.top - rootElement.clientTop) / scaleY\n    };\n    return { center, offsetCenter };\n}\n//# sourceMappingURL=event-utils.js.map","import { whichButtons, getOffsetPosition } from './event-utils';\nconst DEFAULT_OPTIONS = {\n    srcElement: 'root',\n    priority: 0\n};\nexport default class EventRegistrar {\n    constructor(eventManager) {\n        /**\n         * Handles hammerjs event\n         */\n        this.handleEvent = (event) => {\n            if (this.isEmpty()) {\n                return;\n            }\n            const mjolnirEvent = this._normalizeEvent(event);\n            let target = event.srcEvent.target;\n            while (target && target !== mjolnirEvent.rootElement) {\n                this._emit(mjolnirEvent, target);\n                if (mjolnirEvent.handled) {\n                    return;\n                }\n                target = target.parentNode;\n            }\n            this._emit(mjolnirEvent, 'root');\n        };\n        this.eventManager = eventManager;\n        this.handlers = [];\n        // Element -> handler map\n        this.handlersByElement = new Map();\n        this._active = false;\n    }\n    // Returns true if there are no non-passive handlers\n    isEmpty() {\n        return !this._active;\n    }\n    add(type, handler, options, once = false, passive = false) {\n        const { handlers, handlersByElement } = this;\n        let opts = DEFAULT_OPTIONS;\n        if (typeof options === 'string' || (options && options.addEventListener)) {\n            // is DOM element, backward compatibility\n            // @ts-ignore\n            opts = { ...DEFAULT_OPTIONS, srcElement: options };\n        }\n        else if (options) {\n            opts = { ...DEFAULT_OPTIONS, ...options };\n        }\n        let entries = handlersByElement.get(opts.srcElement);\n        if (!entries) {\n            entries = [];\n            handlersByElement.set(opts.srcElement, entries);\n        }\n        const entry = {\n            type,\n            handler,\n            srcElement: opts.srcElement,\n            priority: opts.priority\n        };\n        if (once) {\n            entry.once = true;\n        }\n        if (passive) {\n            entry.passive = true;\n        }\n        handlers.push(entry);\n        this._active = this._active || !entry.passive;\n        // Sort handlers by descending priority\n        // Handlers with the same priority are excuted in the order of registration\n        let insertPosition = entries.length - 1;\n        while (insertPosition >= 0) {\n            if (entries[insertPosition].priority >= entry.priority) {\n                break;\n            }\n            insertPosition--;\n        }\n        entries.splice(insertPosition + 1, 0, entry);\n    }\n    remove(type, handler) {\n        const { handlers, handlersByElement } = this;\n        for (let i = handlers.length - 1; i >= 0; i--) {\n            const entry = handlers[i];\n            if (entry.type === type && entry.handler === handler) {\n                handlers.splice(i, 1);\n                const entries = handlersByElement.get(entry.srcElement);\n                entries.splice(entries.indexOf(entry), 1);\n                if (entries.length === 0) {\n                    handlersByElement.delete(entry.srcElement);\n                }\n            }\n        }\n        this._active = handlers.some(entry => !entry.passive);\n    }\n    /**\n     * Invoke handlers on a particular element\n     */\n    _emit(event, srcElement) {\n        const entries = this.handlersByElement.get(srcElement);\n        if (entries) {\n            let immediatePropagationStopped = false;\n            // Prevents the current event from bubbling up\n            const stopPropagation = () => {\n                event.handled = true;\n            };\n            // Prevent any remaining listeners from being called\n            const stopImmediatePropagation = () => {\n                event.handled = true;\n                immediatePropagationStopped = true;\n            };\n            const entriesToRemove = [];\n            for (let i = 0; i < entries.length; i++) {\n                const { type, handler, once } = entries[i];\n                handler({\n                    ...event,\n                    // @ts-ignore\n                    type,\n                    stopPropagation,\n                    stopImmediatePropagation\n                });\n                if (once) {\n                    entriesToRemove.push(entries[i]);\n                }\n                if (immediatePropagationStopped) {\n                    break;\n                }\n            }\n            for (let i = 0; i < entriesToRemove.length; i++) {\n                const { type, handler } = entriesToRemove[i];\n                this.remove(type, handler);\n            }\n        }\n    }\n    /**\n     * Normalizes hammerjs and custom events to have predictable fields.\n     */\n    _normalizeEvent(event) {\n        const rootElement = this.eventManager.getElement();\n        return {\n            ...event,\n            ...whichButtons(event),\n            ...getOffsetPosition(event, rootElement),\n            preventDefault: () => {\n                event.srcEvent.preventDefault();\n            },\n            stopImmediatePropagation: null,\n            stopPropagation: null,\n            handled: false,\n            rootElement\n        };\n    }\n}\n//# sourceMappingURL=event-registrar.js.map","import { Manager } from './utils/hammer';\nimport WheelInput from './inputs/wheel-input';\nimport MoveInput from './inputs/move-input';\nimport KeyInput from './inputs/key-input';\nimport ContextmenuInput from './inputs/contextmenu-input';\nimport EventRegistrar from './utils/event-registrar';\nimport { BASIC_EVENT_ALIASES, EVENT_RECOGNIZER_MAP, GESTURE_EVENT_ALIASES, RECOGNIZERS, RECOGNIZER_COMPATIBLE_MAP, RECOGNIZER_FALLBACK_MAP } from './constants';\nconst DEFAULT_OPTIONS = {\n    // event handlers\n    events: null,\n    // custom recognizers\n    recognizers: null,\n    recognizerOptions: {},\n    // Manager class\n    Manager,\n    // allow browser default touch action\n    // https://github.com/uber/react-map-gl/issues/506\n    touchAction: 'none',\n    tabIndex: 0\n};\n// Unified API for subscribing to events about both\n// basic input events (e.g. 'mousemove', 'touchstart', 'wheel')\n// and gestural input (e.g. 'click', 'tap', 'panstart').\n// Delegates gesture related event registration and handling to Hammer.js.\nexport default class EventManager {\n    constructor(element = null, options) {\n        /**\n         * Handle basic events using the 'hammer.input' Hammer.js API:\n         * Before running Recognizers, Hammer emits a 'hammer.input' event\n         * with the basic event info. This function emits all basic events\n         * aliased to the \"class\" of event received.\n         * See constants.BASIC_EVENT_CLASSES basic event class definitions.\n         */\n        this._onBasicInput = (event) => {\n            const { srcEvent } = event;\n            const alias = BASIC_EVENT_ALIASES[srcEvent.type];\n            if (alias) {\n                // fire all events aliased to srcEvent.type\n                this.manager.emit(alias, event);\n            }\n        };\n        /**\n         * Handle events not supported by Hammer.js,\n         * and pipe back out through same (Hammer) channel used by other events.\n         */\n        this._onOtherEvent = (event) => {\n            // console.log('onotherevent', event.type, event)\n            this.manager.emit(event.type, event);\n        };\n        this.options = { ...DEFAULT_OPTIONS, ...options };\n        this.events = new Map();\n        this.setElement(element);\n        // Register all passed events.\n        const { events } = this.options;\n        if (events) {\n            this.on(events);\n        }\n    }\n    getElement() {\n        return this.element;\n    }\n    setElement(element) {\n        if (this.element) {\n            // unregister all events\n            this.destroy();\n        }\n        this.element = element;\n        if (!element) {\n            return;\n        }\n        const { options } = this;\n        const ManagerClass = options.Manager;\n        this.manager = new ManagerClass(element, {\n            touchAction: options.touchAction,\n            recognizers: options.recognizers || RECOGNIZERS\n        }).on('hammer.input', this._onBasicInput);\n        if (!options.recognizers) {\n            // Set default recognize withs\n            // http://hammerjs.github.io/recognize-with/\n            Object.keys(RECOGNIZER_COMPATIBLE_MAP).forEach(name => {\n                const recognizer = this.manager.get(name);\n                if (recognizer) {\n                    RECOGNIZER_COMPATIBLE_MAP[name].forEach(otherName => {\n                        recognizer.recognizeWith(otherName);\n                    });\n                }\n            });\n        }\n        // Set recognizer options\n        for (const recognizerName in options.recognizerOptions) {\n            const recognizer = this.manager.get(recognizerName);\n            if (recognizer) {\n                const recognizerOption = options.recognizerOptions[recognizerName];\n                // `enable` is managed by the event registrations\n                delete recognizerOption.enable;\n                recognizer.set(recognizerOption);\n            }\n        }\n        // Handle events not handled by Hammer.js:\n        // - mouse wheel\n        // - pointer/touch/mouse move\n        this.wheelInput = new WheelInput(element, this._onOtherEvent, {\n            enable: false\n        });\n        this.moveInput = new MoveInput(element, this._onOtherEvent, {\n            enable: false\n        });\n        this.keyInput = new KeyInput(element, this._onOtherEvent, {\n            enable: false,\n            tabIndex: options.tabIndex\n        });\n        this.contextmenuInput = new ContextmenuInput(element, this._onOtherEvent, {\n            enable: false\n        });\n        // Register all existing events\n        for (const [eventAlias, eventRegistrar] of this.events) {\n            if (!eventRegistrar.isEmpty()) {\n                // Enable recognizer for this event.\n                this._toggleRecognizer(eventRegistrar.recognizerName, true);\n                this.manager.on(eventAlias, eventRegistrar.handleEvent);\n            }\n        }\n    }\n    // Tear down internal event management implementations.\n    destroy() {\n        if (this.element) {\n            // wheelInput etc. are created in setElement() and therefore\n            // cannot exist if there is no element\n            this.wheelInput.destroy();\n            this.moveInput.destroy();\n            this.keyInput.destroy();\n            this.contextmenuInput.destroy();\n            this.manager.destroy();\n            this.wheelInput = null;\n            this.moveInput = null;\n            this.keyInput = null;\n            this.contextmenuInput = null;\n            this.manager = null;\n            this.element = null;\n        }\n    }\n    /** Register an event handler function to be called on `event` */\n    on(event, handler, opts) {\n        this._addEventHandler(event, handler, opts, false);\n    }\n    once(event, handler, opts) {\n        this._addEventHandler(event, handler, opts, true);\n    }\n    watch(event, handler, opts) {\n        this._addEventHandler(event, handler, opts, false, true);\n    }\n    off(event, handler) {\n        this._removeEventHandler(event, handler);\n    }\n    /*\n     * Enable/disable recognizer for the given event\n     */\n    _toggleRecognizer(name, enabled) {\n        const { manager } = this;\n        if (!manager) {\n            return;\n        }\n        const recognizer = manager.get(name);\n        // @ts-ignore\n        if (recognizer && recognizer.options.enable !== enabled) {\n            recognizer.set({ enable: enabled });\n            const fallbackRecognizers = RECOGNIZER_FALLBACK_MAP[name];\n            if (fallbackRecognizers && !this.options.recognizers) {\n                // Set default require failures\n                // http://hammerjs.github.io/require-failure/\n                fallbackRecognizers.forEach(otherName => {\n                    const otherRecognizer = manager.get(otherName);\n                    if (enabled) {\n                        // Wait for this recognizer to fail\n                        otherRecognizer.requireFailure(name);\n                        /**\n                         * This seems to be a bug in hammerjs:\n                         * requireFailure() adds both ways\n                         * dropRequireFailure() only drops one way\n                         * https://github.com/hammerjs/hammer.js/blob/master/src/recognizerjs/\n                           recognizer-constructor.js#L136\n                         */\n                        recognizer.dropRequireFailure(otherName);\n                    }\n                    else {\n                        // Do not wait for this recognizer to fail\n                        otherRecognizer.dropRequireFailure(name);\n                    }\n                });\n            }\n        }\n        this.wheelInput.enableEventType(name, enabled);\n        this.moveInput.enableEventType(name, enabled);\n        this.keyInput.enableEventType(name, enabled);\n        this.contextmenuInput.enableEventType(name, enabled);\n    }\n    /**\n     * Process the event registration for a single event + handler.\n     */\n    _addEventHandler(event, handler, opts, once, passive) {\n        if (typeof event !== 'string') {\n            // @ts-ignore\n            opts = handler;\n            // If `event` is a map, call `on()` for each entry.\n            for (const eventName in event) {\n                this._addEventHandler(eventName, event[eventName], opts, once, passive);\n            }\n            return;\n        }\n        const { manager, events } = this;\n        // Alias to a recognized gesture as necessary.\n        const eventAlias = GESTURE_EVENT_ALIASES[event] || event;\n        let eventRegistrar = events.get(eventAlias);\n        if (!eventRegistrar) {\n            eventRegistrar = new EventRegistrar(this);\n            events.set(eventAlias, eventRegistrar);\n            // Enable recognizer for this event.\n            eventRegistrar.recognizerName = EVENT_RECOGNIZER_MAP[eventAlias] || eventAlias;\n            // Listen to the event\n            if (manager) {\n                manager.on(eventAlias, eventRegistrar.handleEvent);\n            }\n        }\n        eventRegistrar.add(event, handler, opts, once, passive);\n        if (!eventRegistrar.isEmpty()) {\n            this._toggleRecognizer(eventRegistrar.recognizerName, true);\n        }\n    }\n    /**\n     * Process the event deregistration for a single event + handler.\n     */\n    _removeEventHandler(event, handler) {\n        if (typeof event !== 'string') {\n            // If `event` is a map, call `off()` for each entry.\n            for (const eventName in event) {\n                this._removeEventHandler(eventName, event[eventName]);\n            }\n            return;\n        }\n        const { events } = this;\n        // Alias to a recognized gesture as necessary.\n        const eventAlias = GESTURE_EVENT_ALIASES[event] || event;\n        const eventRegistrar = events.get(eventAlias);\n        if (!eventRegistrar) {\n            return;\n        }\n        eventRegistrar.remove(event, handler);\n        if (eventRegistrar.isEmpty()) {\n            const { recognizerName } = eventRegistrar;\n            // Disable recognizer if no more handlers are attached to its events\n            let isRecognizerUsed = false;\n            for (const eh of events.values()) {\n                if (eh.recognizerName === recognizerName && !eh.isEmpty()) {\n                    isRecognizerUsed = true;\n                    break;\n                }\n            }\n            if (!isRecognizerUsed) {\n                this._toggleRecognizer(recognizerName, false);\n            }\n        }\n    }\n}\n//# sourceMappingURL=event-manager.js.map","/* @license\nPapa Parse\nv5.4.1\nhttps://github.com/mholt/PapaParse\nLicense: MIT\n*/\n!function(e,t){\"function\"==typeof define&&define.amd?define([],t):\"object\"==typeof module&&\"undefined\"!=typeof exports?module.exports=t():e.Papa=t()}(this,function s(){\"use strict\";var f=\"undefined\"!=typeof self?self:\"undefined\"!=typeof window?window:void 0!==f?f:{};var n=!f.document&&!!f.postMessage,o=f.IS_PAPA_WORKER||!1,a={},u=0,b={parse:function(e,t){var r=(t=t||{}).dynamicTyping||!1;J(r)&&(t.dynamicTypingFunction=r,r={});if(t.dynamicTyping=r,t.transform=!!J(t.transform)&&t.transform,t.worker&&b.WORKERS_SUPPORTED){var i=function(){if(!b.WORKERS_SUPPORTED)return!1;var e=(r=f.URL||f.webkitURL||null,i=s.toString(),b.BLOB_URL||(b.BLOB_URL=r.createObjectURL(new Blob([\"var global = (function() { if (typeof self !== 'undefined') { return self; } if (typeof window !== 'undefined') { return window; } if (typeof global !== 'undefined') { return global; } return {}; })(); global.IS_PAPA_WORKER=true; \",\"(\",i,\")();\"],{type:\"text/javascript\"})))),t=new f.Worker(e);var r,i;return t.onmessage=_,t.id=u++,a[t.id]=t}();return i.userStep=t.step,i.userChunk=t.chunk,i.userComplete=t.complete,i.userError=t.error,t.step=J(t.step),t.chunk=J(t.chunk),t.complete=J(t.complete),t.error=J(t.error),delete t.worker,void i.postMessage({input:e,config:t,workerId:i.id})}var n=null;b.NODE_STREAM_INPUT,\"string\"==typeof e?(e=function(e){if(65279===e.charCodeAt(0))return e.slice(1);return e}(e),n=t.download?new l(t):new p(t)):!0===e.readable&&J(e.read)&&J(e.on)?n=new g(t):(f.File&&e instanceof File||e instanceof Object)&&(n=new c(t));return n.stream(e)},unparse:function(e,t){var n=!1,_=!0,m=\",\",y=\"\\r\\n\",s='\"',a=s+s,r=!1,i=null,o=!1;!function(){if(\"object\"!=typeof t)return;\"string\"!=typeof t.delimiter||b.BAD_DELIMITERS.filter(function(e){return-1!==t.delimiter.indexOf(e)}).length||(m=t.delimiter);(\"boolean\"==typeof t.quotes||\"function\"==typeof t.quotes||Array.isArray(t.quotes))&&(n=t.quotes);\"boolean\"!=typeof t.skipEmptyLines&&\"string\"!=typeof t.skipEmptyLines||(r=t.skipEmptyLines);\"string\"==typeof t.newline&&(y=t.newline);\"string\"==typeof t.quoteChar&&(s=t.quoteChar);\"boolean\"==typeof t.header&&(_=t.header);if(Array.isArray(t.columns)){if(0===t.columns.length)throw new Error(\"Option columns is empty\");i=t.columns}void 0!==t.escapeChar&&(a=t.escapeChar+s);(\"boolean\"==typeof t.escapeFormulae||t.escapeFormulae instanceof RegExp)&&(o=t.escapeFormulae instanceof RegExp?t.escapeFormulae:/^[=+\\-@\\t\\r].*$/)}();var u=new RegExp(Q(s),\"g\");\"string\"==typeof e&&(e=JSON.parse(e));if(Array.isArray(e)){if(!e.length||Array.isArray(e[0]))return h(null,e,r);if(\"object\"==typeof e[0])return h(i||Object.keys(e[0]),e,r)}else if(\"object\"==typeof e)return\"string\"==typeof e.data&&(e.data=JSON.parse(e.data)),Array.isArray(e.data)&&(e.fields||(e.fields=e.meta&&e.meta.fields||i),e.fields||(e.fields=Array.isArray(e.data[0])?e.fields:\"object\"==typeof e.data[0]?Object.keys(e.data[0]):[]),Array.isArray(e.data[0])||\"object\"==typeof e.data[0]||(e.data=[e.data])),h(e.fields||[],e.data||[],r);throw new Error(\"Unable to serialize unrecognized input\");function h(e,t,r){var i=\"\";\"string\"==typeof e&&(e=JSON.parse(e)),\"string\"==typeof t&&(t=JSON.parse(t));var n=Array.isArray(e)&&0<e.length,s=!Array.isArray(t[0]);if(n&&_){for(var a=0;a<e.length;a++)0<a&&(i+=m),i+=v(e[a],a);0<t.length&&(i+=y)}for(var o=0;o<t.length;o++){var u=n?e.length:t[o].length,h=!1,f=n?0===Object.keys(t[o]).length:0===t[o].length;if(r&&!n&&(h=\"greedy\"===r?\"\"===t[o].join(\"\").trim():1===t[o].length&&0===t[o][0].length),\"greedy\"===r&&n){for(var d=[],l=0;l<u;l++){var c=s?e[l]:l;d.push(t[o][c])}h=\"\"===d.join(\"\").trim()}if(!h){for(var p=0;p<u;p++){0<p&&!f&&(i+=m);var g=n&&s?e[p]:p;i+=v(t[o][g],p)}o<t.length-1&&(!r||0<u&&!f)&&(i+=y)}}return i}function v(e,t){if(null==e)return\"\";if(e.constructor===Date)return JSON.stringify(e).slice(1,25);var r=!1;o&&\"string\"==typeof e&&o.test(e)&&(e=\"'\"+e,r=!0);var i=e.toString().replace(u,a);return(r=r||!0===n||\"function\"==typeof n&&n(e,t)||Array.isArray(n)&&n[t]||function(e,t){for(var r=0;r<t.length;r++)if(-1<e.indexOf(t[r]))return!0;return!1}(i,b.BAD_DELIMITERS)||-1<i.indexOf(m)||\" \"===i.charAt(0)||\" \"===i.charAt(i.length-1))?s+i+s:i}}};if(b.RECORD_SEP=String.fromCharCode(30),b.UNIT_SEP=String.fromCharCode(31),b.BYTE_ORDER_MARK=\"\\ufeff\",b.BAD_DELIMITERS=[\"\\r\",\"\\n\",'\"',b.BYTE_ORDER_MARK],b.WORKERS_SUPPORTED=!n&&!!f.Worker,b.NODE_STREAM_INPUT=1,b.LocalChunkSize=10485760,b.RemoteChunkSize=5242880,b.DefaultDelimiter=\",\",b.Parser=E,b.ParserHandle=r,b.NetworkStreamer=l,b.FileStreamer=c,b.StringStreamer=p,b.ReadableStreamStreamer=g,f.jQuery){var d=f.jQuery;d.fn.parse=function(o){var r=o.config||{},u=[];return this.each(function(e){if(!(\"INPUT\"===d(this).prop(\"tagName\").toUpperCase()&&\"file\"===d(this).attr(\"type\").toLowerCase()&&f.FileReader)||!this.files||0===this.files.length)return!0;for(var t=0;t<this.files.length;t++)u.push({file:this.files[t],inputElem:this,instanceConfig:d.extend({},r)})}),e(),this;function e(){if(0!==u.length){var e,t,r,i,n=u[0];if(J(o.before)){var s=o.before(n.file,n.inputElem);if(\"object\"==typeof s){if(\"abort\"===s.action)return e=\"AbortError\",t=n.file,r=n.inputElem,i=s.reason,void(J(o.error)&&o.error({name:e},t,r,i));if(\"skip\"===s.action)return void h();\"object\"==typeof s.config&&(n.instanceConfig=d.extend(n.instanceConfig,s.config))}else if(\"skip\"===s)return void h()}var a=n.instanceConfig.complete;n.instanceConfig.complete=function(e){J(a)&&a(e,n.file,n.inputElem),h()},b.parse(n.file,n.instanceConfig)}else J(o.complete)&&o.complete()}function h(){u.splice(0,1),e()}}}function h(e){this._handle=null,this._finished=!1,this._completed=!1,this._halted=!1,this._input=null,this._baseIndex=0,this._partialLine=\"\",this._rowCount=0,this._start=0,this._nextChunk=null,this.isFirstChunk=!0,this._completeResults={data:[],errors:[],meta:{}},function(e){var t=w(e);t.chunkSize=parseInt(t.chunkSize),e.step||e.chunk||(t.chunkSize=null);this._handle=new r(t),(this._handle.streamer=this)._config=t}.call(this,e),this.parseChunk=function(e,t){if(this.isFirstChunk&&J(this._config.beforeFirstChunk)){var r=this._config.beforeFirstChunk(e);void 0!==r&&(e=r)}this.isFirstChunk=!1,this._halted=!1;var i=this._partialLine+e;this._partialLine=\"\";var n=this._handle.parse(i,this._baseIndex,!this._finished);if(!this._handle.paused()&&!this._handle.aborted()){var s=n.meta.cursor;this._finished||(this._partialLine=i.substring(s-this._baseIndex),this._baseIndex=s),n&&n.data&&(this._rowCount+=n.data.length);var a=this._finished||this._config.preview&&this._rowCount>=this._config.preview;if(o)f.postMessage({results:n,workerId:b.WORKER_ID,finished:a});else if(J(this._config.chunk)&&!t){if(this._config.chunk(n,this._handle),this._handle.paused()||this._handle.aborted())return void(this._halted=!0);n=void 0,this._completeResults=void 0}return this._config.step||this._config.chunk||(this._completeResults.data=this._completeResults.data.concat(n.data),this._completeResults.errors=this._completeResults.errors.concat(n.errors),this._completeResults.meta=n.meta),this._completed||!a||!J(this._config.complete)||n&&n.meta.aborted||(this._config.complete(this._completeResults,this._input),this._completed=!0),a||n&&n.meta.paused||this._nextChunk(),n}this._halted=!0},this._sendError=function(e){J(this._config.error)?this._config.error(e):o&&this._config.error&&f.postMessage({workerId:b.WORKER_ID,error:e,finished:!1})}}function l(e){var i;(e=e||{}).chunkSize||(e.chunkSize=b.RemoteChunkSize),h.call(this,e),this._nextChunk=n?function(){this._readChunk(),this._chunkLoaded()}:function(){this._readChunk()},this.stream=function(e){this._input=e,this._nextChunk()},this._readChunk=function(){if(this._finished)this._chunkLoaded();else{if(i=new XMLHttpRequest,this._config.withCredentials&&(i.withCredentials=this._config.withCredentials),n||(i.onload=v(this._chunkLoaded,this),i.onerror=v(this._chunkError,this)),i.open(this._config.downloadRequestBody?\"POST\":\"GET\",this._input,!n),this._config.downloadRequestHeaders){var e=this._config.downloadRequestHeaders;for(var t in e)i.setRequestHeader(t,e[t])}if(this._config.chunkSize){var r=this._start+this._config.chunkSize-1;i.setRequestHeader(\"Range\",\"bytes=\"+this._start+\"-\"+r)}try{i.send(this._config.downloadRequestBody)}catch(e){this._chunkError(e.message)}n&&0===i.status&&this._chunkError()}},this._chunkLoaded=function(){4===i.readyState&&(i.status<200||400<=i.status?this._chunkError():(this._start+=this._config.chunkSize?this._config.chunkSize:i.responseText.length,this._finished=!this._config.chunkSize||this._start>=function(e){var t=e.getResponseHeader(\"Content-Range\");if(null===t)return-1;return parseInt(t.substring(t.lastIndexOf(\"/\")+1))}(i),this.parseChunk(i.responseText)))},this._chunkError=function(e){var t=i.statusText||e;this._sendError(new Error(t))}}function c(e){var i,n;(e=e||{}).chunkSize||(e.chunkSize=b.LocalChunkSize),h.call(this,e);var s=\"undefined\"!=typeof FileReader;this.stream=function(e){this._input=e,n=e.slice||e.webkitSlice||e.mozSlice,s?((i=new FileReader).onload=v(this._chunkLoaded,this),i.onerror=v(this._chunkError,this)):i=new FileReaderSync,this._nextChunk()},this._nextChunk=function(){this._finished||this._config.preview&&!(this._rowCount<this._config.preview)||this._readChunk()},this._readChunk=function(){var e=this._input;if(this._config.chunkSize){var t=Math.min(this._start+this._config.chunkSize,this._input.size);e=n.call(e,this._start,t)}var r=i.readAsText(e,this._config.encoding);s||this._chunkLoaded({target:{result:r}})},this._chunkLoaded=function(e){this._start+=this._config.chunkSize,this._finished=!this._config.chunkSize||this._start>=this._input.size,this.parseChunk(e.target.result)},this._chunkError=function(){this._sendError(i.error)}}function p(e){var r;h.call(this,e=e||{}),this.stream=function(e){return r=e,this._nextChunk()},this._nextChunk=function(){if(!this._finished){var e,t=this._config.chunkSize;return t?(e=r.substring(0,t),r=r.substring(t)):(e=r,r=\"\"),this._finished=!r,this.parseChunk(e)}}}function g(e){h.call(this,e=e||{});var t=[],r=!0,i=!1;this.pause=function(){h.prototype.pause.apply(this,arguments),this._input.pause()},this.resume=function(){h.prototype.resume.apply(this,arguments),this._input.resume()},this.stream=function(e){this._input=e,this._input.on(\"data\",this._streamData),this._input.on(\"end\",this._streamEnd),this._input.on(\"error\",this._streamError)},this._checkIsFinished=function(){i&&1===t.length&&(this._finished=!0)},this._nextChunk=function(){this._checkIsFinished(),t.length?this.parseChunk(t.shift()):r=!0},this._streamData=v(function(e){try{t.push(\"string\"==typeof e?e:e.toString(this._config.encoding)),r&&(r=!1,this._checkIsFinished(),this.parseChunk(t.shift()))}catch(e){this._streamError(e)}},this),this._streamError=v(function(e){this._streamCleanUp(),this._sendError(e)},this),this._streamEnd=v(function(){this._streamCleanUp(),i=!0,this._streamData(\"\")},this),this._streamCleanUp=v(function(){this._input.removeListener(\"data\",this._streamData),this._input.removeListener(\"end\",this._streamEnd),this._input.removeListener(\"error\",this._streamError)},this)}function r(m){var a,o,u,i=Math.pow(2,53),n=-i,s=/^\\s*-?(\\d+\\.?|\\.\\d+|\\d+\\.\\d+)([eE][-+]?\\d+)?\\s*$/,h=/^((\\d{4}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d:[0-5]\\d\\.\\d+([+-][0-2]\\d:[0-5]\\d|Z))|(\\d{4}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d:[0-5]\\d([+-][0-2]\\d:[0-5]\\d|Z))|(\\d{4}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d([+-][0-2]\\d:[0-5]\\d|Z)))$/,t=this,r=0,f=0,d=!1,e=!1,l=[],c={data:[],errors:[],meta:{}};if(J(m.step)){var p=m.step;m.step=function(e){if(c=e,_())g();else{if(g(),0===c.data.length)return;r+=e.data.length,m.preview&&r>m.preview?o.abort():(c.data=c.data[0],p(c,t))}}}function y(e){return\"greedy\"===m.skipEmptyLines?\"\"===e.join(\"\").trim():1===e.length&&0===e[0].length}function g(){return c&&u&&(k(\"Delimiter\",\"UndetectableDelimiter\",\"Unable to auto-detect delimiting character; defaulted to '\"+b.DefaultDelimiter+\"'\"),u=!1),m.skipEmptyLines&&(c.data=c.data.filter(function(e){return!y(e)})),_()&&function(){if(!c)return;function e(e,t){J(m.transformHeader)&&(e=m.transformHeader(e,t)),l.push(e)}if(Array.isArray(c.data[0])){for(var t=0;_()&&t<c.data.length;t++)c.data[t].forEach(e);c.data.splice(0,1)}else c.data.forEach(e)}(),function(){if(!c||!m.header&&!m.dynamicTyping&&!m.transform)return c;function e(e,t){var r,i=m.header?{}:[];for(r=0;r<e.length;r++){var n=r,s=e[r];m.header&&(n=r>=l.length?\"__parsed_extra\":l[r]),m.transform&&(s=m.transform(s,n)),s=v(n,s),\"__parsed_extra\"===n?(i[n]=i[n]||[],i[n].push(s)):i[n]=s}return m.header&&(r>l.length?k(\"FieldMismatch\",\"TooManyFields\",\"Too many fields: expected \"+l.length+\" fields but parsed \"+r,f+t):r<l.length&&k(\"FieldMismatch\",\"TooFewFields\",\"Too few fields: expected \"+l.length+\" fields but parsed \"+r,f+t)),i}var t=1;!c.data.length||Array.isArray(c.data[0])?(c.data=c.data.map(e),t=c.data.length):c.data=e(c.data,0);m.header&&c.meta&&(c.meta.fields=l);return f+=t,c}()}function _(){return m.header&&0===l.length}function v(e,t){return r=e,m.dynamicTypingFunction&&void 0===m.dynamicTyping[r]&&(m.dynamicTyping[r]=m.dynamicTypingFunction(r)),!0===(m.dynamicTyping[r]||m.dynamicTyping)?\"true\"===t||\"TRUE\"===t||\"false\"!==t&&\"FALSE\"!==t&&(function(e){if(s.test(e)){var t=parseFloat(e);if(n<t&&t<i)return!0}return!1}(t)?parseFloat(t):h.test(t)?new Date(t):\"\"===t?null:t):t;var r}function k(e,t,r,i){var n={type:e,code:t,message:r};void 0!==i&&(n.row=i),c.errors.push(n)}this.parse=function(e,t,r){var i=m.quoteChar||'\"';if(m.newline||(m.newline=function(e,t){e=e.substring(0,1048576);var r=new RegExp(Q(t)+\"([^]*?)\"+Q(t),\"gm\"),i=(e=e.replace(r,\"\")).split(\"\\r\"),n=e.split(\"\\n\"),s=1<n.length&&n[0].length<i[0].length;if(1===i.length||s)return\"\\n\";for(var a=0,o=0;o<i.length;o++)\"\\n\"===i[o][0]&&a++;return a>=i.length/2?\"\\r\\n\":\"\\r\"}(e,i)),u=!1,m.delimiter)J(m.delimiter)&&(m.delimiter=m.delimiter(e),c.meta.delimiter=m.delimiter);else{var n=function(e,t,r,i,n){var s,a,o,u;n=n||[\",\",\"\\t\",\"|\",\";\",b.RECORD_SEP,b.UNIT_SEP];for(var h=0;h<n.length;h++){var f=n[h],d=0,l=0,c=0;o=void 0;for(var p=new E({comments:i,delimiter:f,newline:t,preview:10}).parse(e),g=0;g<p.data.length;g++)if(r&&y(p.data[g]))c++;else{var _=p.data[g].length;l+=_,void 0!==o?0<_&&(d+=Math.abs(_-o),o=_):o=_}0<p.data.length&&(l/=p.data.length-c),(void 0===a||d<=a)&&(void 0===u||u<l)&&1.99<l&&(a=d,s=f,u=l)}return{successful:!!(m.delimiter=s),bestDelimiter:s}}(e,m.newline,m.skipEmptyLines,m.comments,m.delimitersToGuess);n.successful?m.delimiter=n.bestDelimiter:(u=!0,m.delimiter=b.DefaultDelimiter),c.meta.delimiter=m.delimiter}var s=w(m);return m.preview&&m.header&&s.preview++,a=e,o=new E(s),c=o.parse(a,t,r),g(),d?{meta:{paused:!0}}:c||{meta:{paused:!1}}},this.paused=function(){return d},this.pause=function(){d=!0,o.abort(),a=J(m.chunk)?\"\":a.substring(o.getCharIndex())},this.resume=function(){t.streamer._halted?(d=!1,t.streamer.parseChunk(a,!0)):setTimeout(t.resume,3)},this.aborted=function(){return e},this.abort=function(){e=!0,o.abort(),c.meta.aborted=!0,J(m.complete)&&m.complete(c),a=\"\"}}function Q(e){return e.replace(/[.*+?^${}()|[\\]\\\\]/g,\"\\\\$&\")}function E(j){var z,M=(j=j||{}).delimiter,P=j.newline,U=j.comments,q=j.step,N=j.preview,B=j.fastMode,K=z=void 0===j.quoteChar||null===j.quoteChar?'\"':j.quoteChar;if(void 0!==j.escapeChar&&(K=j.escapeChar),(\"string\"!=typeof M||-1<b.BAD_DELIMITERS.indexOf(M))&&(M=\",\"),U===M)throw new Error(\"Comment character same as delimiter\");!0===U?U=\"#\":(\"string\"!=typeof U||-1<b.BAD_DELIMITERS.indexOf(U))&&(U=!1),\"\\n\"!==P&&\"\\r\"!==P&&\"\\r\\n\"!==P&&(P=\"\\n\");var W=0,H=!1;this.parse=function(i,t,r){if(\"string\"!=typeof i)throw new Error(\"Input must be a string\");var n=i.length,e=M.length,s=P.length,a=U.length,o=J(q),u=[],h=[],f=[],d=W=0;if(!i)return L();if(j.header&&!t){var l=i.split(P)[0].split(M),c=[],p={},g=!1;for(var _ in l){var m=l[_];J(j.transformHeader)&&(m=j.transformHeader(m,_));var y=m,v=p[m]||0;for(0<v&&(g=!0,y=m+\"_\"+v),p[m]=v+1;c.includes(y);)y=y+\"_\"+v;c.push(y)}if(g){var k=i.split(P);k[0]=c.join(M),i=k.join(P)}}if(B||!1!==B&&-1===i.indexOf(z)){for(var b=i.split(P),E=0;E<b.length;E++){if(f=b[E],W+=f.length,E!==b.length-1)W+=P.length;else if(r)return L();if(!U||f.substring(0,a)!==U){if(o){if(u=[],I(f.split(M)),F(),H)return L()}else I(f.split(M));if(N&&N<=E)return u=u.slice(0,N),L(!0)}}return L()}for(var w=i.indexOf(M,W),R=i.indexOf(P,W),C=new RegExp(Q(K)+Q(z),\"g\"),S=i.indexOf(z,W);;)if(i[W]!==z)if(U&&0===f.length&&i.substring(W,W+a)===U){if(-1===R)return L();W=R+s,R=i.indexOf(P,W),w=i.indexOf(M,W)}else if(-1!==w&&(w<R||-1===R))f.push(i.substring(W,w)),W=w+e,w=i.indexOf(M,W);else{if(-1===R)break;if(f.push(i.substring(W,R)),D(R+s),o&&(F(),H))return L();if(N&&u.length>=N)return L(!0)}else for(S=W,W++;;){if(-1===(S=i.indexOf(z,S+1)))return r||h.push({type:\"Quotes\",code:\"MissingQuotes\",message:\"Quoted field unterminated\",row:u.length,index:W}),T();if(S===n-1)return T(i.substring(W,S).replace(C,z));if(z!==K||i[S+1]!==K){if(z===K||0===S||i[S-1]!==K){-1!==w&&w<S+1&&(w=i.indexOf(M,S+1)),-1!==R&&R<S+1&&(R=i.indexOf(P,S+1));var O=A(-1===R?w:Math.min(w,R));if(i.substr(S+1+O,e)===M){f.push(i.substring(W,S).replace(C,z)),i[W=S+1+O+e]!==z&&(S=i.indexOf(z,W)),w=i.indexOf(M,W),R=i.indexOf(P,W);break}var x=A(R);if(i.substring(S+1+x,S+1+x+s)===P){if(f.push(i.substring(W,S).replace(C,z)),D(S+1+x+s),w=i.indexOf(M,W),S=i.indexOf(z,W),o&&(F(),H))return L();if(N&&u.length>=N)return L(!0);break}h.push({type:\"Quotes\",code:\"InvalidQuotes\",message:\"Trailing quote on quoted field is malformed\",row:u.length,index:W}),S++}}else S++}return T();function I(e){u.push(e),d=W}function A(e){var t=0;if(-1!==e){var r=i.substring(S+1,e);r&&\"\"===r.trim()&&(t=r.length)}return t}function T(e){return r||(void 0===e&&(e=i.substring(W)),f.push(e),W=n,I(f),o&&F()),L()}function D(e){W=e,I(f),f=[],R=i.indexOf(P,W)}function L(e){return{data:u,errors:h,meta:{delimiter:M,linebreak:P,aborted:H,truncated:!!e,cursor:d+(t||0)}}}function F(){q(L()),u=[],h=[]}},this.abort=function(){H=!0},this.getCharIndex=function(){return W}}function _(e){var t=e.data,r=a[t.workerId],i=!1;if(t.error)r.userError(t.error,t.file);else if(t.results&&t.results.data){var n={abort:function(){i=!0,m(t.workerId,{data:[],errors:[],meta:{aborted:!0}})},pause:y,resume:y};if(J(r.userStep)){for(var s=0;s<t.results.data.length&&(r.userStep({data:t.results.data[s],errors:t.results.errors,meta:t.results.meta},n),!i);s++);delete t.results}else J(r.userChunk)&&(r.userChunk(t.results,n,t.file),delete t.results)}t.finished&&!i&&m(t.workerId,t.results)}function m(e,t){var r=a[e];J(r.userComplete)&&r.userComplete(t),r.terminate(),delete a[e]}function y(){throw new Error(\"Not implemented.\")}function w(e){if(\"object\"!=typeof e||null===e)return e;var t=Array.isArray(e)?[]:{};for(var r in e)t[r]=w(e[r]);return t}function v(e,t){return function(){e.apply(t,arguments)}}function J(e){return\"function\"==typeof e}return o&&(f.onmessage=function(e){var t=e.data;void 0===b.WORKER_ID&&t&&(b.WORKER_ID=t.workerId);if(\"string\"==typeof t.input)f.postMessage({workerId:b.WORKER_ID,results:b.parse(t.input,t.config),finished:!0});else if(f.File&&t.input instanceof File||t.input instanceof Object){var r=b.parse(t.input,t.config);r&&f.postMessage({workerId:b.WORKER_ID,results:r,finished:!0})}}),(l.prototype=Object.create(h.prototype)).constructor=l,(c.prototype=Object.create(h.prototype)).constructor=c,(p.prototype=Object.create(p.prototype)).constructor=p,(g.prototype=Object.create(h.prototype)).constructor=g,b});","'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","(function (global, factory) {\n    typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n    typeof define === 'function' && define.amd ? define(factory) :\n    (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.polygonClipping = factory());\n})(this, (function () { 'use strict';\n\n    /**\n     * splaytree v3.1.2\n     * Fast Splay tree for Node and browser\n     *\n     * @author Alexander Milevski <info@w8r.name>\n     * @license MIT\n     * @preserve\n     */\n\n    /*! *****************************************************************************\r\n    Copyright (c) Microsoft Corporation. All rights reserved.\r\n    Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\n    this file except in compliance with the License. You may obtain a copy of the\r\n    License at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\n    THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n    KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\n    WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\n    MERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\n    See the Apache Version 2.0 License for specific language governing permissions\r\n    and limitations under the License.\r\n    ***************************************************************************** */\n\n    function __generator(thisArg, body) {\n      var _ = {\n          label: 0,\n          sent: function () {\n            if (t[0] & 1) throw t[1];\n            return t[1];\n          },\n          trys: [],\n          ops: []\n        },\n        f,\n        y,\n        t,\n        g;\n      return g = {\n        next: verb(0),\n        \"throw\": verb(1),\n        \"return\": verb(2)\n      }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function () {\n        return this;\n      }), g;\n      function verb(n) {\n        return function (v) {\n          return step([n, v]);\n        };\n      }\n      function step(op) {\n        if (f) throw new TypeError(\"Generator is already executing.\");\n        while (_) try {\n          if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n          if (y = 0, t) op = [op[0] & 2, t.value];\n          switch (op[0]) {\n            case 0:\n            case 1:\n              t = op;\n              break;\n            case 4:\n              _.label++;\n              return {\n                value: op[1],\n                done: false\n              };\n            case 5:\n              _.label++;\n              y = op[1];\n              op = [0];\n              continue;\n            case 7:\n              op = _.ops.pop();\n              _.trys.pop();\n              continue;\n            default:\n              if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {\n                _ = 0;\n                continue;\n              }\n              if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {\n                _.label = op[1];\n                break;\n              }\n              if (op[0] === 6 && _.label < t[1]) {\n                _.label = t[1];\n                t = op;\n                break;\n              }\n              if (t && _.label < t[2]) {\n                _.label = t[2];\n                _.ops.push(op);\n                break;\n              }\n              if (t[2]) _.ops.pop();\n              _.trys.pop();\n              continue;\n          }\n          op = body.call(thisArg, _);\n        } catch (e) {\n          op = [6, e];\n          y = 0;\n        } finally {\n          f = t = 0;\n        }\n        if (op[0] & 5) throw op[1];\n        return {\n          value: op[0] ? op[1] : void 0,\n          done: true\n        };\n      }\n    }\n    var Node = /** @class */function () {\n      function Node(key, data) {\n        this.next = null;\n        this.key = key;\n        this.data = data;\n        this.left = null;\n        this.right = null;\n      }\n      return Node;\n    }();\n\n    /* follows \"An implementation of top-down splaying\"\r\n     * by D. Sleator <sleator@cs.cmu.edu> March 1992\r\n     */\n    function DEFAULT_COMPARE(a, b) {\n      return a > b ? 1 : a < b ? -1 : 0;\n    }\n    /**\r\n     * Simple top down splay, not requiring i to be in the tree t.\r\n     */\n    function splay(i, t, comparator) {\n      var N = new Node(null, null);\n      var l = N;\n      var r = N;\n      while (true) {\n        var cmp = comparator(i, t.key);\n        //if (i < t.key) {\n        if (cmp < 0) {\n          if (t.left === null) break;\n          //if (i < t.left.key) {\n          if (comparator(i, t.left.key) < 0) {\n            var y = t.left; /* rotate right */\n            t.left = y.right;\n            y.right = t;\n            t = y;\n            if (t.left === null) break;\n          }\n          r.left = t; /* link right */\n          r = t;\n          t = t.left;\n          //} else if (i > t.key) {\n        } else if (cmp > 0) {\n          if (t.right === null) break;\n          //if (i > t.right.key) {\n          if (comparator(i, t.right.key) > 0) {\n            var y = t.right; /* rotate left */\n            t.right = y.left;\n            y.left = t;\n            t = y;\n            if (t.right === null) break;\n          }\n          l.right = t; /* link left */\n          l = t;\n          t = t.right;\n        } else break;\n      }\n      /* assemble */\n      l.right = t.left;\n      r.left = t.right;\n      t.left = N.right;\n      t.right = N.left;\n      return t;\n    }\n    function insert(i, data, t, comparator) {\n      var node = new Node(i, data);\n      if (t === null) {\n        node.left = node.right = null;\n        return node;\n      }\n      t = splay(i, t, comparator);\n      var cmp = comparator(i, t.key);\n      if (cmp < 0) {\n        node.left = t.left;\n        node.right = t;\n        t.left = null;\n      } else if (cmp >= 0) {\n        node.right = t.right;\n        node.left = t;\n        t.right = null;\n      }\n      return node;\n    }\n    function split(key, v, comparator) {\n      var left = null;\n      var right = null;\n      if (v) {\n        v = splay(key, v, comparator);\n        var cmp = comparator(v.key, key);\n        if (cmp === 0) {\n          left = v.left;\n          right = v.right;\n        } else if (cmp < 0) {\n          right = v.right;\n          v.right = null;\n          left = v;\n        } else {\n          left = v.left;\n          v.left = null;\n          right = v;\n        }\n      }\n      return {\n        left: left,\n        right: right\n      };\n    }\n    function merge(left, right, comparator) {\n      if (right === null) return left;\n      if (left === null) return right;\n      right = splay(left.key, right, comparator);\n      right.left = left;\n      return right;\n    }\n    /**\r\n     * Prints level of the tree\r\n     */\n    function printRow(root, prefix, isTail, out, printNode) {\n      if (root) {\n        out(\"\" + prefix + (isTail ? '└── ' : '├── ') + printNode(root) + \"\\n\");\n        var indent = prefix + (isTail ? '    ' : '│   ');\n        if (root.left) printRow(root.left, indent, false, out, printNode);\n        if (root.right) printRow(root.right, indent, true, out, printNode);\n      }\n    }\n    var Tree = /** @class */function () {\n      function Tree(comparator) {\n        if (comparator === void 0) {\n          comparator = DEFAULT_COMPARE;\n        }\n        this._root = null;\n        this._size = 0;\n        this._comparator = comparator;\n      }\n      /**\r\n       * Inserts a key, allows duplicates\r\n       */\n      Tree.prototype.insert = function (key, data) {\n        this._size++;\n        return this._root = insert(key, data, this._root, this._comparator);\n      };\n      /**\r\n       * Adds a key, if it is not present in the tree\r\n       */\n      Tree.prototype.add = function (key, data) {\n        var node = new Node(key, data);\n        if (this._root === null) {\n          node.left = node.right = null;\n          this._size++;\n          this._root = node;\n        }\n        var comparator = this._comparator;\n        var t = splay(key, this._root, comparator);\n        var cmp = comparator(key, t.key);\n        if (cmp === 0) this._root = t;else {\n          if (cmp < 0) {\n            node.left = t.left;\n            node.right = t;\n            t.left = null;\n          } else if (cmp > 0) {\n            node.right = t.right;\n            node.left = t;\n            t.right = null;\n          }\n          this._size++;\n          this._root = node;\n        }\n        return this._root;\n      };\n      /**\r\n       * @param  {Key} key\r\n       * @return {Node|null}\r\n       */\n      Tree.prototype.remove = function (key) {\n        this._root = this._remove(key, this._root, this._comparator);\n      };\n      /**\r\n       * Deletes i from the tree if it's there\r\n       */\n      Tree.prototype._remove = function (i, t, comparator) {\n        var x;\n        if (t === null) return null;\n        t = splay(i, t, comparator);\n        var cmp = comparator(i, t.key);\n        if (cmp === 0) {\n          /* found it */\n          if (t.left === null) {\n            x = t.right;\n          } else {\n            x = splay(i, t.left, comparator);\n            x.right = t.right;\n          }\n          this._size--;\n          return x;\n        }\n        return t; /* It wasn't there */\n      };\n      /**\r\n       * Removes and returns the node with smallest key\r\n       */\n      Tree.prototype.pop = function () {\n        var node = this._root;\n        if (node) {\n          while (node.left) node = node.left;\n          this._root = splay(node.key, this._root, this._comparator);\n          this._root = this._remove(node.key, this._root, this._comparator);\n          return {\n            key: node.key,\n            data: node.data\n          };\n        }\n        return null;\n      };\n      /**\r\n       * Find without splaying\r\n       */\n      Tree.prototype.findStatic = function (key) {\n        var current = this._root;\n        var compare = this._comparator;\n        while (current) {\n          var cmp = compare(key, current.key);\n          if (cmp === 0) return current;else if (cmp < 0) current = current.left;else current = current.right;\n        }\n        return null;\n      };\n      Tree.prototype.find = function (key) {\n        if (this._root) {\n          this._root = splay(key, this._root, this._comparator);\n          if (this._comparator(key, this._root.key) !== 0) return null;\n        }\n        return this._root;\n      };\n      Tree.prototype.contains = function (key) {\n        var current = this._root;\n        var compare = this._comparator;\n        while (current) {\n          var cmp = compare(key, current.key);\n          if (cmp === 0) return true;else if (cmp < 0) current = current.left;else current = current.right;\n        }\n        return false;\n      };\n      Tree.prototype.forEach = function (visitor, ctx) {\n        var current = this._root;\n        var Q = []; /* Initialize stack s */\n        var done = false;\n        while (!done) {\n          if (current !== null) {\n            Q.push(current);\n            current = current.left;\n          } else {\n            if (Q.length !== 0) {\n              current = Q.pop();\n              visitor.call(ctx, current);\n              current = current.right;\n            } else done = true;\n          }\n        }\n        return this;\n      };\n      /**\r\n       * Walk key range from `low` to `high`. Stops if `fn` returns a value.\r\n       */\n      Tree.prototype.range = function (low, high, fn, ctx) {\n        var Q = [];\n        var compare = this._comparator;\n        var node = this._root;\n        var cmp;\n        while (Q.length !== 0 || node) {\n          if (node) {\n            Q.push(node);\n            node = node.left;\n          } else {\n            node = Q.pop();\n            cmp = compare(node.key, high);\n            if (cmp > 0) {\n              break;\n            } else if (compare(node.key, low) >= 0) {\n              if (fn.call(ctx, node)) return this; // stop if smth is returned\n            }\n            node = node.right;\n          }\n        }\n        return this;\n      };\n      /**\r\n       * Returns array of keys\r\n       */\n      Tree.prototype.keys = function () {\n        var keys = [];\n        this.forEach(function (_a) {\n          var key = _a.key;\n          return keys.push(key);\n        });\n        return keys;\n      };\n      /**\r\n       * Returns array of all the data in the nodes\r\n       */\n      Tree.prototype.values = function () {\n        var values = [];\n        this.forEach(function (_a) {\n          var data = _a.data;\n          return values.push(data);\n        });\n        return values;\n      };\n      Tree.prototype.min = function () {\n        if (this._root) return this.minNode(this._root).key;\n        return null;\n      };\n      Tree.prototype.max = function () {\n        if (this._root) return this.maxNode(this._root).key;\n        return null;\n      };\n      Tree.prototype.minNode = function (t) {\n        if (t === void 0) {\n          t = this._root;\n        }\n        if (t) while (t.left) t = t.left;\n        return t;\n      };\n      Tree.prototype.maxNode = function (t) {\n        if (t === void 0) {\n          t = this._root;\n        }\n        if (t) while (t.right) t = t.right;\n        return t;\n      };\n      /**\r\n       * Returns node at given index\r\n       */\n      Tree.prototype.at = function (index) {\n        var current = this._root;\n        var done = false;\n        var i = 0;\n        var Q = [];\n        while (!done) {\n          if (current) {\n            Q.push(current);\n            current = current.left;\n          } else {\n            if (Q.length > 0) {\n              current = Q.pop();\n              if (i === index) return current;\n              i++;\n              current = current.right;\n            } else done = true;\n          }\n        }\n        return null;\n      };\n      Tree.prototype.next = function (d) {\n        var root = this._root;\n        var successor = null;\n        if (d.right) {\n          successor = d.right;\n          while (successor.left) successor = successor.left;\n          return successor;\n        }\n        var comparator = this._comparator;\n        while (root) {\n          var cmp = comparator(d.key, root.key);\n          if (cmp === 0) break;else if (cmp < 0) {\n            successor = root;\n            root = root.left;\n          } else root = root.right;\n        }\n        return successor;\n      };\n      Tree.prototype.prev = function (d) {\n        var root = this._root;\n        var predecessor = null;\n        if (d.left !== null) {\n          predecessor = d.left;\n          while (predecessor.right) predecessor = predecessor.right;\n          return predecessor;\n        }\n        var comparator = this._comparator;\n        while (root) {\n          var cmp = comparator(d.key, root.key);\n          if (cmp === 0) break;else if (cmp < 0) root = root.left;else {\n            predecessor = root;\n            root = root.right;\n          }\n        }\n        return predecessor;\n      };\n      Tree.prototype.clear = function () {\n        this._root = null;\n        this._size = 0;\n        return this;\n      };\n      Tree.prototype.toList = function () {\n        return toList(this._root);\n      };\n      /**\r\n       * Bulk-load items. Both array have to be same size\r\n       */\n      Tree.prototype.load = function (keys, values, presort) {\n        if (values === void 0) {\n          values = [];\n        }\n        if (presort === void 0) {\n          presort = false;\n        }\n        var size = keys.length;\n        var comparator = this._comparator;\n        // sort if needed\n        if (presort) sort(keys, values, 0, size - 1, comparator);\n        if (this._root === null) {\n          // empty tree\n          this._root = loadRecursive(keys, values, 0, size);\n          this._size = size;\n        } else {\n          // that re-builds the whole tree from two in-order traversals\n          var mergedList = mergeLists(this.toList(), createList(keys, values), comparator);\n          size = this._size + size;\n          this._root = sortedListToBST({\n            head: mergedList\n          }, 0, size);\n        }\n        return this;\n      };\n      Tree.prototype.isEmpty = function () {\n        return this._root === null;\n      };\n      Object.defineProperty(Tree.prototype, \"size\", {\n        get: function () {\n          return this._size;\n        },\n        enumerable: true,\n        configurable: true\n      });\n      Object.defineProperty(Tree.prototype, \"root\", {\n        get: function () {\n          return this._root;\n        },\n        enumerable: true,\n        configurable: true\n      });\n      Tree.prototype.toString = function (printNode) {\n        if (printNode === void 0) {\n          printNode = function (n) {\n            return String(n.key);\n          };\n        }\n        var out = [];\n        printRow(this._root, '', true, function (v) {\n          return out.push(v);\n        }, printNode);\n        return out.join('');\n      };\n      Tree.prototype.update = function (key, newKey, newData) {\n        var comparator = this._comparator;\n        var _a = split(key, this._root, comparator),\n          left = _a.left,\n          right = _a.right;\n        if (comparator(key, newKey) < 0) {\n          right = insert(newKey, newData, right, comparator);\n        } else {\n          left = insert(newKey, newData, left, comparator);\n        }\n        this._root = merge(left, right, comparator);\n      };\n      Tree.prototype.split = function (key) {\n        return split(key, this._root, this._comparator);\n      };\n      Tree.prototype[Symbol.iterator] = function () {\n        var current, Q, done;\n        return __generator(this, function (_a) {\n          switch (_a.label) {\n            case 0:\n              current = this._root;\n              Q = [];\n              done = false;\n              _a.label = 1;\n            case 1:\n              if (!!done) return [3 /*break*/, 6];\n              if (!(current !== null)) return [3 /*break*/, 2];\n              Q.push(current);\n              current = current.left;\n              return [3 /*break*/, 5];\n            case 2:\n              if (!(Q.length !== 0)) return [3 /*break*/, 4];\n              current = Q.pop();\n              return [4 /*yield*/, current];\n            case 3:\n              _a.sent();\n              current = current.right;\n              return [3 /*break*/, 5];\n            case 4:\n              done = true;\n              _a.label = 5;\n            case 5:\n              return [3 /*break*/, 1];\n            case 6:\n              return [2 /*return*/];\n          }\n        });\n      };\n      return Tree;\n    }();\n    function loadRecursive(keys, values, start, end) {\n      var size = end - start;\n      if (size > 0) {\n        var middle = start + Math.floor(size / 2);\n        var key = keys[middle];\n        var data = values[middle];\n        var node = new Node(key, data);\n        node.left = loadRecursive(keys, values, start, middle);\n        node.right = loadRecursive(keys, values, middle + 1, end);\n        return node;\n      }\n      return null;\n    }\n    function createList(keys, values) {\n      var head = new Node(null, null);\n      var p = head;\n      for (var i = 0; i < keys.length; i++) {\n        p = p.next = new Node(keys[i], values[i]);\n      }\n      p.next = null;\n      return head.next;\n    }\n    function toList(root) {\n      var current = root;\n      var Q = [];\n      var done = false;\n      var head = new Node(null, null);\n      var p = head;\n      while (!done) {\n        if (current) {\n          Q.push(current);\n          current = current.left;\n        } else {\n          if (Q.length > 0) {\n            current = p = p.next = Q.pop();\n            current = current.right;\n          } else done = true;\n        }\n      }\n      p.next = null; // that'll work even if the tree was empty\n      return head.next;\n    }\n    function sortedListToBST(list, start, end) {\n      var size = end - start;\n      if (size > 0) {\n        var middle = start + Math.floor(size / 2);\n        var left = sortedListToBST(list, start, middle);\n        var root = list.head;\n        root.left = left;\n        list.head = list.head.next;\n        root.right = sortedListToBST(list, middle + 1, end);\n        return root;\n      }\n      return null;\n    }\n    function mergeLists(l1, l2, compare) {\n      var head = new Node(null, null); // dummy\n      var p = head;\n      var p1 = l1;\n      var p2 = l2;\n      while (p1 !== null && p2 !== null) {\n        if (compare(p1.key, p2.key) < 0) {\n          p.next = p1;\n          p1 = p1.next;\n        } else {\n          p.next = p2;\n          p2 = p2.next;\n        }\n        p = p.next;\n      }\n      if (p1 !== null) {\n        p.next = p1;\n      } else if (p2 !== null) {\n        p.next = p2;\n      }\n      return head.next;\n    }\n    function sort(keys, values, left, right, compare) {\n      if (left >= right) return;\n      var pivot = keys[left + right >> 1];\n      var i = left - 1;\n      var j = right + 1;\n      while (true) {\n        do i++; while (compare(keys[i], pivot) < 0);\n        do j--; while (compare(keys[j], pivot) > 0);\n        if (i >= j) break;\n        var tmp = keys[i];\n        keys[i] = keys[j];\n        keys[j] = tmp;\n        tmp = values[i];\n        values[i] = values[j];\n        values[j] = tmp;\n      }\n      sort(keys, values, left, j, compare);\n      sort(keys, values, j + 1, right, compare);\n    }\n\n    /**\n     * A bounding box has the format:\n     *\n     *  { ll: { x: xmin, y: ymin }, ur: { x: xmax, y: ymax } }\n     *\n     */\n\n    const isInBbox = (bbox, point) => {\n      return bbox.ll.x <= point.x && point.x <= bbox.ur.x && bbox.ll.y <= point.y && point.y <= bbox.ur.y;\n    };\n\n    /* Returns either null, or a bbox (aka an ordered pair of points)\n     * If there is only one point of overlap, a bbox with identical points\n     * will be returned */\n    const getBboxOverlap = (b1, b2) => {\n      // check if the bboxes overlap at all\n      if (b2.ur.x < b1.ll.x || b1.ur.x < b2.ll.x || b2.ur.y < b1.ll.y || b1.ur.y < b2.ll.y) return null;\n\n      // find the middle two X values\n      const lowerX = b1.ll.x < b2.ll.x ? b2.ll.x : b1.ll.x;\n      const upperX = b1.ur.x < b2.ur.x ? b1.ur.x : b2.ur.x;\n\n      // find the middle two Y values\n      const lowerY = b1.ll.y < b2.ll.y ? b2.ll.y : b1.ll.y;\n      const upperY = b1.ur.y < b2.ur.y ? b1.ur.y : b2.ur.y;\n\n      // put those middle values together to get the overlap\n      return {\n        ll: {\n          x: lowerX,\n          y: lowerY\n        },\n        ur: {\n          x: upperX,\n          y: upperY\n        }\n      };\n    };\n\n    /* Javascript doesn't do integer math. Everything is\n     * floating point with percision Number.EPSILON.\n     *\n     * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/EPSILON\n     */\n\n    let epsilon$1 = Number.EPSILON;\n\n    // IE Polyfill\n    if (epsilon$1 === undefined) epsilon$1 = Math.pow(2, -52);\n    const EPSILON_SQ = epsilon$1 * epsilon$1;\n\n    /* FLP comparator */\n    const cmp = (a, b) => {\n      // check if they're both 0\n      if (-epsilon$1 < a && a < epsilon$1) {\n        if (-epsilon$1 < b && b < epsilon$1) {\n          return 0;\n        }\n      }\n\n      // check if they're flp equal\n      const ab = a - b;\n      if (ab * ab < EPSILON_SQ * a * b) {\n        return 0;\n      }\n\n      // normal comparison\n      return a < b ? -1 : 1;\n    };\n\n    /**\n     * This class rounds incoming values sufficiently so that\n     * floating points problems are, for the most part, avoided.\n     *\n     * Incoming points are have their x & y values tested against\n     * all previously seen x & y values. If either is 'too close'\n     * to a previously seen value, it's value is 'snapped' to the\n     * previously seen value.\n     *\n     * All points should be rounded by this class before being\n     * stored in any data structures in the rest of this algorithm.\n     */\n\n    class PtRounder {\n      constructor() {\n        this.reset();\n      }\n      reset() {\n        this.xRounder = new CoordRounder();\n        this.yRounder = new CoordRounder();\n      }\n      round(x, y) {\n        return {\n          x: this.xRounder.round(x),\n          y: this.yRounder.round(y)\n        };\n      }\n    }\n    class CoordRounder {\n      constructor() {\n        this.tree = new Tree();\n        // preseed with 0 so we don't end up with values < Number.EPSILON\n        this.round(0);\n      }\n\n      // Note: this can rounds input values backwards or forwards.\n      //       You might ask, why not restrict this to just rounding\n      //       forwards? Wouldn't that allow left endpoints to always\n      //       remain left endpoints during splitting (never change to\n      //       right). No - it wouldn't, because we snap intersections\n      //       to endpoints (to establish independence from the segment\n      //       angle for t-intersections).\n      round(coord) {\n        const node = this.tree.add(coord);\n        const prevNode = this.tree.prev(node);\n        if (prevNode !== null && cmp(node.key, prevNode.key) === 0) {\n          this.tree.remove(coord);\n          return prevNode.key;\n        }\n        const nextNode = this.tree.next(node);\n        if (nextNode !== null && cmp(node.key, nextNode.key) === 0) {\n          this.tree.remove(coord);\n          return nextNode.key;\n        }\n        return coord;\n      }\n    }\n\n    // singleton available by import\n    const rounder = new PtRounder();\n\n    const epsilon = 1.1102230246251565e-16;\n    const splitter = 134217729;\n    const resulterrbound = (3 + 8 * epsilon) * epsilon;\n\n    // fast_expansion_sum_zeroelim routine from oritinal code\n    function sum(elen, e, flen, f, h) {\n      let Q, Qnew, hh, bvirt;\n      let enow = e[0];\n      let fnow = f[0];\n      let eindex = 0;\n      let findex = 0;\n      if (fnow > enow === fnow > -enow) {\n        Q = enow;\n        enow = e[++eindex];\n      } else {\n        Q = fnow;\n        fnow = f[++findex];\n      }\n      let hindex = 0;\n      if (eindex < elen && findex < flen) {\n        if (fnow > enow === fnow > -enow) {\n          Qnew = enow + Q;\n          hh = Q - (Qnew - enow);\n          enow = e[++eindex];\n        } else {\n          Qnew = fnow + Q;\n          hh = Q - (Qnew - fnow);\n          fnow = f[++findex];\n        }\n        Q = Qnew;\n        if (hh !== 0) {\n          h[hindex++] = hh;\n        }\n        while (eindex < elen && findex < flen) {\n          if (fnow > enow === fnow > -enow) {\n            Qnew = Q + enow;\n            bvirt = Qnew - Q;\n            hh = Q - (Qnew - bvirt) + (enow - bvirt);\n            enow = e[++eindex];\n          } else {\n            Qnew = Q + fnow;\n            bvirt = Qnew - Q;\n            hh = Q - (Qnew - bvirt) + (fnow - bvirt);\n            fnow = f[++findex];\n          }\n          Q = Qnew;\n          if (hh !== 0) {\n            h[hindex++] = hh;\n          }\n        }\n      }\n      while (eindex < elen) {\n        Qnew = Q + enow;\n        bvirt = Qnew - Q;\n        hh = Q - (Qnew - bvirt) + (enow - bvirt);\n        enow = e[++eindex];\n        Q = Qnew;\n        if (hh !== 0) {\n          h[hindex++] = hh;\n        }\n      }\n      while (findex < flen) {\n        Qnew = Q + fnow;\n        bvirt = Qnew - Q;\n        hh = Q - (Qnew - bvirt) + (fnow - bvirt);\n        fnow = f[++findex];\n        Q = Qnew;\n        if (hh !== 0) {\n          h[hindex++] = hh;\n        }\n      }\n      if (Q !== 0 || hindex === 0) {\n        h[hindex++] = Q;\n      }\n      return hindex;\n    }\n    function estimate(elen, e) {\n      let Q = e[0];\n      for (let i = 1; i < elen; i++) Q += e[i];\n      return Q;\n    }\n    function vec(n) {\n      return new Float64Array(n);\n    }\n\n    const ccwerrboundA = (3 + 16 * epsilon) * epsilon;\n    const ccwerrboundB = (2 + 12 * epsilon) * epsilon;\n    const ccwerrboundC = (9 + 64 * epsilon) * epsilon * epsilon;\n    const B = vec(4);\n    const C1 = vec(8);\n    const C2 = vec(12);\n    const D = vec(16);\n    const u = vec(4);\n    function orient2dadapt(ax, ay, bx, by, cx, cy, detsum) {\n      let acxtail, acytail, bcxtail, bcytail;\n      let bvirt, c, ahi, alo, bhi, blo, _i, _j, _0, s1, s0, t1, t0, u3;\n      const acx = ax - cx;\n      const bcx = bx - cx;\n      const acy = ay - cy;\n      const bcy = by - cy;\n      s1 = acx * bcy;\n      c = splitter * acx;\n      ahi = c - (c - acx);\n      alo = acx - ahi;\n      c = splitter * bcy;\n      bhi = c - (c - bcy);\n      blo = bcy - bhi;\n      s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n      t1 = acy * bcx;\n      c = splitter * acy;\n      ahi = c - (c - acy);\n      alo = acy - ahi;\n      c = splitter * bcx;\n      bhi = c - (c - bcx);\n      blo = bcx - bhi;\n      t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n      _i = s0 - t0;\n      bvirt = s0 - _i;\n      B[0] = s0 - (_i + bvirt) + (bvirt - t0);\n      _j = s1 + _i;\n      bvirt = _j - s1;\n      _0 = s1 - (_j - bvirt) + (_i - bvirt);\n      _i = _0 - t1;\n      bvirt = _0 - _i;\n      B[1] = _0 - (_i + bvirt) + (bvirt - t1);\n      u3 = _j + _i;\n      bvirt = u3 - _j;\n      B[2] = _j - (u3 - bvirt) + (_i - bvirt);\n      B[3] = u3;\n      let det = estimate(4, B);\n      let errbound = ccwerrboundB * detsum;\n      if (det >= errbound || -det >= errbound) {\n        return det;\n      }\n      bvirt = ax - acx;\n      acxtail = ax - (acx + bvirt) + (bvirt - cx);\n      bvirt = bx - bcx;\n      bcxtail = bx - (bcx + bvirt) + (bvirt - cx);\n      bvirt = ay - acy;\n      acytail = ay - (acy + bvirt) + (bvirt - cy);\n      bvirt = by - bcy;\n      bcytail = by - (bcy + bvirt) + (bvirt - cy);\n      if (acxtail === 0 && acytail === 0 && bcxtail === 0 && bcytail === 0) {\n        return det;\n      }\n      errbound = ccwerrboundC * detsum + resulterrbound * Math.abs(det);\n      det += acx * bcytail + bcy * acxtail - (acy * bcxtail + bcx * acytail);\n      if (det >= errbound || -det >= errbound) return det;\n      s1 = acxtail * bcy;\n      c = splitter * acxtail;\n      ahi = c - (c - acxtail);\n      alo = acxtail - ahi;\n      c = splitter * bcy;\n      bhi = c - (c - bcy);\n      blo = bcy - bhi;\n      s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n      t1 = acytail * bcx;\n      c = splitter * acytail;\n      ahi = c - (c - acytail);\n      alo = acytail - ahi;\n      c = splitter * bcx;\n      bhi = c - (c - bcx);\n      blo = bcx - bhi;\n      t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n      _i = s0 - t0;\n      bvirt = s0 - _i;\n      u[0] = s0 - (_i + bvirt) + (bvirt - t0);\n      _j = s1 + _i;\n      bvirt = _j - s1;\n      _0 = s1 - (_j - bvirt) + (_i - bvirt);\n      _i = _0 - t1;\n      bvirt = _0 - _i;\n      u[1] = _0 - (_i + bvirt) + (bvirt - t1);\n      u3 = _j + _i;\n      bvirt = u3 - _j;\n      u[2] = _j - (u3 - bvirt) + (_i - bvirt);\n      u[3] = u3;\n      const C1len = sum(4, B, 4, u, C1);\n      s1 = acx * bcytail;\n      c = splitter * acx;\n      ahi = c - (c - acx);\n      alo = acx - ahi;\n      c = splitter * bcytail;\n      bhi = c - (c - bcytail);\n      blo = bcytail - bhi;\n      s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n      t1 = acy * bcxtail;\n      c = splitter * acy;\n      ahi = c - (c - acy);\n      alo = acy - ahi;\n      c = splitter * bcxtail;\n      bhi = c - (c - bcxtail);\n      blo = bcxtail - bhi;\n      t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n      _i = s0 - t0;\n      bvirt = s0 - _i;\n      u[0] = s0 - (_i + bvirt) + (bvirt - t0);\n      _j = s1 + _i;\n      bvirt = _j - s1;\n      _0 = s1 - (_j - bvirt) + (_i - bvirt);\n      _i = _0 - t1;\n      bvirt = _0 - _i;\n      u[1] = _0 - (_i + bvirt) + (bvirt - t1);\n      u3 = _j + _i;\n      bvirt = u3 - _j;\n      u[2] = _j - (u3 - bvirt) + (_i - bvirt);\n      u[3] = u3;\n      const C2len = sum(C1len, C1, 4, u, C2);\n      s1 = acxtail * bcytail;\n      c = splitter * acxtail;\n      ahi = c - (c - acxtail);\n      alo = acxtail - ahi;\n      c = splitter * bcytail;\n      bhi = c - (c - bcytail);\n      blo = bcytail - bhi;\n      s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n      t1 = acytail * bcxtail;\n      c = splitter * acytail;\n      ahi = c - (c - acytail);\n      alo = acytail - ahi;\n      c = splitter * bcxtail;\n      bhi = c - (c - bcxtail);\n      blo = bcxtail - bhi;\n      t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n      _i = s0 - t0;\n      bvirt = s0 - _i;\n      u[0] = s0 - (_i + bvirt) + (bvirt - t0);\n      _j = s1 + _i;\n      bvirt = _j - s1;\n      _0 = s1 - (_j - bvirt) + (_i - bvirt);\n      _i = _0 - t1;\n      bvirt = _0 - _i;\n      u[1] = _0 - (_i + bvirt) + (bvirt - t1);\n      u3 = _j + _i;\n      bvirt = u3 - _j;\n      u[2] = _j - (u3 - bvirt) + (_i - bvirt);\n      u[3] = u3;\n      const Dlen = sum(C2len, C2, 4, u, D);\n      return D[Dlen - 1];\n    }\n    function orient2d(ax, ay, bx, by, cx, cy) {\n      const detleft = (ay - cy) * (bx - cx);\n      const detright = (ax - cx) * (by - cy);\n      const det = detleft - detright;\n      const detsum = Math.abs(detleft + detright);\n      if (Math.abs(det) >= ccwerrboundA * detsum) return det;\n      return -orient2dadapt(ax, ay, bx, by, cx, cy, detsum);\n    }\n\n    /* Cross Product of two vectors with first point at origin */\n    const crossProduct = (a, b) => a.x * b.y - a.y * b.x;\n\n    /* Dot Product of two vectors with first point at origin */\n    const dotProduct = (a, b) => a.x * b.x + a.y * b.y;\n\n    /* Comparator for two vectors with same starting point */\n    const compareVectorAngles = (basePt, endPt1, endPt2) => {\n      const res = orient2d(basePt.x, basePt.y, endPt1.x, endPt1.y, endPt2.x, endPt2.y);\n      if (res > 0) return -1;\n      if (res < 0) return 1;\n      return 0;\n    };\n    const length = v => Math.sqrt(dotProduct(v, v));\n\n    /* Get the sine of the angle from pShared -> pAngle to pShaed -> pBase */\n    const sineOfAngle = (pShared, pBase, pAngle) => {\n      const vBase = {\n        x: pBase.x - pShared.x,\n        y: pBase.y - pShared.y\n      };\n      const vAngle = {\n        x: pAngle.x - pShared.x,\n        y: pAngle.y - pShared.y\n      };\n      return crossProduct(vAngle, vBase) / length(vAngle) / length(vBase);\n    };\n\n    /* Get the cosine of the angle from pShared -> pAngle to pShaed -> pBase */\n    const cosineOfAngle = (pShared, pBase, pAngle) => {\n      const vBase = {\n        x: pBase.x - pShared.x,\n        y: pBase.y - pShared.y\n      };\n      const vAngle = {\n        x: pAngle.x - pShared.x,\n        y: pAngle.y - pShared.y\n      };\n      return dotProduct(vAngle, vBase) / length(vAngle) / length(vBase);\n    };\n\n    /* Get the x coordinate where the given line (defined by a point and vector)\n     * crosses the horizontal line with the given y coordiante.\n     * In the case of parrallel lines (including overlapping ones) returns null. */\n    const horizontalIntersection = (pt, v, y) => {\n      if (v.y === 0) return null;\n      return {\n        x: pt.x + v.x / v.y * (y - pt.y),\n        y: y\n      };\n    };\n\n    /* Get the y coordinate where the given line (defined by a point and vector)\n     * crosses the vertical line with the given x coordiante.\n     * In the case of parrallel lines (including overlapping ones) returns null. */\n    const verticalIntersection = (pt, v, x) => {\n      if (v.x === 0) return null;\n      return {\n        x: x,\n        y: pt.y + v.y / v.x * (x - pt.x)\n      };\n    };\n\n    /* Get the intersection of two lines, each defined by a base point and a vector.\n     * In the case of parrallel lines (including overlapping ones) returns null. */\n    const intersection$1 = (pt1, v1, pt2, v2) => {\n      // take some shortcuts for vertical and horizontal lines\n      // this also ensures we don't calculate an intersection and then discover\n      // it's actually outside the bounding box of the line\n      if (v1.x === 0) return verticalIntersection(pt2, v2, pt1.x);\n      if (v2.x === 0) return verticalIntersection(pt1, v1, pt2.x);\n      if (v1.y === 0) return horizontalIntersection(pt2, v2, pt1.y);\n      if (v2.y === 0) return horizontalIntersection(pt1, v1, pt2.y);\n\n      // General case for non-overlapping segments.\n      // This algorithm is based on Schneider and Eberly.\n      // http://www.cimec.org.ar/~ncalvo/Schneider_Eberly.pdf - pg 244\n\n      const kross = crossProduct(v1, v2);\n      if (kross == 0) return null;\n      const ve = {\n        x: pt2.x - pt1.x,\n        y: pt2.y - pt1.y\n      };\n      const d1 = crossProduct(ve, v1) / kross;\n      const d2 = crossProduct(ve, v2) / kross;\n\n      // take the average of the two calculations to minimize rounding error\n      const x1 = pt1.x + d2 * v1.x,\n        x2 = pt2.x + d1 * v2.x;\n      const y1 = pt1.y + d2 * v1.y,\n        y2 = pt2.y + d1 * v2.y;\n      const x = (x1 + x2) / 2;\n      const y = (y1 + y2) / 2;\n      return {\n        x: x,\n        y: y\n      };\n    };\n\n    class SweepEvent {\n      // for ordering sweep events in the sweep event queue\n      static compare(a, b) {\n        // favor event with a point that the sweep line hits first\n        const ptCmp = SweepEvent.comparePoints(a.point, b.point);\n        if (ptCmp !== 0) return ptCmp;\n\n        // the points are the same, so link them if needed\n        if (a.point !== b.point) a.link(b);\n\n        // favor right events over left\n        if (a.isLeft !== b.isLeft) return a.isLeft ? 1 : -1;\n\n        // we have two matching left or right endpoints\n        // ordering of this case is the same as for their segments\n        return Segment.compare(a.segment, b.segment);\n      }\n\n      // for ordering points in sweep line order\n      static comparePoints(aPt, bPt) {\n        if (aPt.x < bPt.x) return -1;\n        if (aPt.x > bPt.x) return 1;\n        if (aPt.y < bPt.y) return -1;\n        if (aPt.y > bPt.y) return 1;\n        return 0;\n      }\n\n      // Warning: 'point' input will be modified and re-used (for performance)\n      constructor(point, isLeft) {\n        if (point.events === undefined) point.events = [this];else point.events.push(this);\n        this.point = point;\n        this.isLeft = isLeft;\n        // this.segment, this.otherSE set by factory\n      }\n      link(other) {\n        if (other.point === this.point) {\n          throw new Error(\"Tried to link already linked events\");\n        }\n        const otherEvents = other.point.events;\n        for (let i = 0, iMax = otherEvents.length; i < iMax; i++) {\n          const evt = otherEvents[i];\n          this.point.events.push(evt);\n          evt.point = this.point;\n        }\n        this.checkForConsuming();\n      }\n\n      /* Do a pass over our linked events and check to see if any pair\n       * of segments match, and should be consumed. */\n      checkForConsuming() {\n        // FIXME: The loops in this method run O(n^2) => no good.\n        //        Maintain little ordered sweep event trees?\n        //        Can we maintaining an ordering that avoids the need\n        //        for the re-sorting with getLeftmostComparator in geom-out?\n\n        // Compare each pair of events to see if other events also match\n        const numEvents = this.point.events.length;\n        for (let i = 0; i < numEvents; i++) {\n          const evt1 = this.point.events[i];\n          if (evt1.segment.consumedBy !== undefined) continue;\n          for (let j = i + 1; j < numEvents; j++) {\n            const evt2 = this.point.events[j];\n            if (evt2.consumedBy !== undefined) continue;\n            if (evt1.otherSE.point.events !== evt2.otherSE.point.events) continue;\n            evt1.segment.consume(evt2.segment);\n          }\n        }\n      }\n      getAvailableLinkedEvents() {\n        // point.events is always of length 2 or greater\n        const events = [];\n        for (let i = 0, iMax = this.point.events.length; i < iMax; i++) {\n          const evt = this.point.events[i];\n          if (evt !== this && !evt.segment.ringOut && evt.segment.isInResult()) {\n            events.push(evt);\n          }\n        }\n        return events;\n      }\n\n      /**\n       * Returns a comparator function for sorting linked events that will\n       * favor the event that will give us the smallest left-side angle.\n       * All ring construction starts as low as possible heading to the right,\n       * so by always turning left as sharp as possible we'll get polygons\n       * without uncessary loops & holes.\n       *\n       * The comparator function has a compute cache such that it avoids\n       * re-computing already-computed values.\n       */\n      getLeftmostComparator(baseEvent) {\n        const cache = new Map();\n        const fillCache = linkedEvent => {\n          const nextEvent = linkedEvent.otherSE;\n          cache.set(linkedEvent, {\n            sine: sineOfAngle(this.point, baseEvent.point, nextEvent.point),\n            cosine: cosineOfAngle(this.point, baseEvent.point, nextEvent.point)\n          });\n        };\n        return (a, b) => {\n          if (!cache.has(a)) fillCache(a);\n          if (!cache.has(b)) fillCache(b);\n          const {\n            sine: asine,\n            cosine: acosine\n          } = cache.get(a);\n          const {\n            sine: bsine,\n            cosine: bcosine\n          } = cache.get(b);\n\n          // both on or above x-axis\n          if (asine >= 0 && bsine >= 0) {\n            if (acosine < bcosine) return 1;\n            if (acosine > bcosine) return -1;\n            return 0;\n          }\n\n          // both below x-axis\n          if (asine < 0 && bsine < 0) {\n            if (acosine < bcosine) return -1;\n            if (acosine > bcosine) return 1;\n            return 0;\n          }\n\n          // one above x-axis, one below\n          if (bsine < asine) return -1;\n          if (bsine > asine) return 1;\n          return 0;\n        };\n      }\n    }\n\n    // Give segments unique ID's to get consistent sorting of\n    // segments and sweep events when all else is identical\n    let segmentId = 0;\n    class Segment {\n      /* This compare() function is for ordering segments in the sweep\n       * line tree, and does so according to the following criteria:\n       *\n       * Consider the vertical line that lies an infinestimal step to the\n       * right of the right-more of the two left endpoints of the input\n       * segments. Imagine slowly moving a point up from negative infinity\n       * in the increasing y direction. Which of the two segments will that\n       * point intersect first? That segment comes 'before' the other one.\n       *\n       * If neither segment would be intersected by such a line, (if one\n       * or more of the segments are vertical) then the line to be considered\n       * is directly on the right-more of the two left inputs.\n       */\n      static compare(a, b) {\n        const alx = a.leftSE.point.x;\n        const blx = b.leftSE.point.x;\n        const arx = a.rightSE.point.x;\n        const brx = b.rightSE.point.x;\n\n        // check if they're even in the same vertical plane\n        if (brx < alx) return 1;\n        if (arx < blx) return -1;\n        const aly = a.leftSE.point.y;\n        const bly = b.leftSE.point.y;\n        const ary = a.rightSE.point.y;\n        const bry = b.rightSE.point.y;\n\n        // is left endpoint of segment B the right-more?\n        if (alx < blx) {\n          // are the two segments in the same horizontal plane?\n          if (bly < aly && bly < ary) return 1;\n          if (bly > aly && bly > ary) return -1;\n\n          // is the B left endpoint colinear to segment A?\n          const aCmpBLeft = a.comparePoint(b.leftSE.point);\n          if (aCmpBLeft < 0) return 1;\n          if (aCmpBLeft > 0) return -1;\n\n          // is the A right endpoint colinear to segment B ?\n          const bCmpARight = b.comparePoint(a.rightSE.point);\n          if (bCmpARight !== 0) return bCmpARight;\n\n          // colinear segments, consider the one with left-more\n          // left endpoint to be first (arbitrary?)\n          return -1;\n        }\n\n        // is left endpoint of segment A the right-more?\n        if (alx > blx) {\n          if (aly < bly && aly < bry) return -1;\n          if (aly > bly && aly > bry) return 1;\n\n          // is the A left endpoint colinear to segment B?\n          const bCmpALeft = b.comparePoint(a.leftSE.point);\n          if (bCmpALeft !== 0) return bCmpALeft;\n\n          // is the B right endpoint colinear to segment A?\n          const aCmpBRight = a.comparePoint(b.rightSE.point);\n          if (aCmpBRight < 0) return 1;\n          if (aCmpBRight > 0) return -1;\n\n          // colinear segments, consider the one with left-more\n          // left endpoint to be first (arbitrary?)\n          return 1;\n        }\n\n        // if we get here, the two left endpoints are in the same\n        // vertical plane, ie alx === blx\n\n        // consider the lower left-endpoint to come first\n        if (aly < bly) return -1;\n        if (aly > bly) return 1;\n\n        // left endpoints are identical\n        // check for colinearity by using the left-more right endpoint\n\n        // is the A right endpoint more left-more?\n        if (arx < brx) {\n          const bCmpARight = b.comparePoint(a.rightSE.point);\n          if (bCmpARight !== 0) return bCmpARight;\n        }\n\n        // is the B right endpoint more left-more?\n        if (arx > brx) {\n          const aCmpBRight = a.comparePoint(b.rightSE.point);\n          if (aCmpBRight < 0) return 1;\n          if (aCmpBRight > 0) return -1;\n        }\n        if (arx !== brx) {\n          // are these two [almost] vertical segments with opposite orientation?\n          // if so, the one with the lower right endpoint comes first\n          const ay = ary - aly;\n          const ax = arx - alx;\n          const by = bry - bly;\n          const bx = brx - blx;\n          if (ay > ax && by < bx) return 1;\n          if (ay < ax && by > bx) return -1;\n        }\n\n        // we have colinear segments with matching orientation\n        // consider the one with more left-more right endpoint to be first\n        if (arx > brx) return 1;\n        if (arx < brx) return -1;\n\n        // if we get here, two two right endpoints are in the same\n        // vertical plane, ie arx === brx\n\n        // consider the lower right-endpoint to come first\n        if (ary < bry) return -1;\n        if (ary > bry) return 1;\n\n        // right endpoints identical as well, so the segments are idential\n        // fall back on creation order as consistent tie-breaker\n        if (a.id < b.id) return -1;\n        if (a.id > b.id) return 1;\n\n        // identical segment, ie a === b\n        return 0;\n      }\n\n      /* Warning: a reference to ringWindings input will be stored,\n       *  and possibly will be later modified */\n      constructor(leftSE, rightSE, rings, windings) {\n        this.id = ++segmentId;\n        this.leftSE = leftSE;\n        leftSE.segment = this;\n        leftSE.otherSE = rightSE;\n        this.rightSE = rightSE;\n        rightSE.segment = this;\n        rightSE.otherSE = leftSE;\n        this.rings = rings;\n        this.windings = windings;\n        // left unset for performance, set later in algorithm\n        // this.ringOut, this.consumedBy, this.prev\n      }\n      static fromRing(pt1, pt2, ring) {\n        let leftPt, rightPt, winding;\n\n        // ordering the two points according to sweep line ordering\n        const cmpPts = SweepEvent.comparePoints(pt1, pt2);\n        if (cmpPts < 0) {\n          leftPt = pt1;\n          rightPt = pt2;\n          winding = 1;\n        } else if (cmpPts > 0) {\n          leftPt = pt2;\n          rightPt = pt1;\n          winding = -1;\n        } else throw new Error(`Tried to create degenerate segment at [${pt1.x}, ${pt1.y}]`);\n        const leftSE = new SweepEvent(leftPt, true);\n        const rightSE = new SweepEvent(rightPt, false);\n        return new Segment(leftSE, rightSE, [ring], [winding]);\n      }\n\n      /* When a segment is split, the rightSE is replaced with a new sweep event */\n      replaceRightSE(newRightSE) {\n        this.rightSE = newRightSE;\n        this.rightSE.segment = this;\n        this.rightSE.otherSE = this.leftSE;\n        this.leftSE.otherSE = this.rightSE;\n      }\n      bbox() {\n        const y1 = this.leftSE.point.y;\n        const y2 = this.rightSE.point.y;\n        return {\n          ll: {\n            x: this.leftSE.point.x,\n            y: y1 < y2 ? y1 : y2\n          },\n          ur: {\n            x: this.rightSE.point.x,\n            y: y1 > y2 ? y1 : y2\n          }\n        };\n      }\n\n      /* A vector from the left point to the right */\n      vector() {\n        return {\n          x: this.rightSE.point.x - this.leftSE.point.x,\n          y: this.rightSE.point.y - this.leftSE.point.y\n        };\n      }\n      isAnEndpoint(pt) {\n        return pt.x === this.leftSE.point.x && pt.y === this.leftSE.point.y || pt.x === this.rightSE.point.x && pt.y === this.rightSE.point.y;\n      }\n\n      /* Compare this segment with a point.\n       *\n       * A point P is considered to be colinear to a segment if there\n       * exists a distance D such that if we travel along the segment\n       * from one * endpoint towards the other a distance D, we find\n       * ourselves at point P.\n       *\n       * Return value indicates:\n       *\n       *   1: point lies above the segment (to the left of vertical)\n       *   0: point is colinear to segment\n       *  -1: point lies below the segment (to the right of vertical)\n       */\n      comparePoint(point) {\n        if (this.isAnEndpoint(point)) return 0;\n        const lPt = this.leftSE.point;\n        const rPt = this.rightSE.point;\n        const v = this.vector();\n\n        // Exactly vertical segments.\n        if (lPt.x === rPt.x) {\n          if (point.x === lPt.x) return 0;\n          return point.x < lPt.x ? 1 : -1;\n        }\n\n        // Nearly vertical segments with an intersection.\n        // Check to see where a point on the line with matching Y coordinate is.\n        const yDist = (point.y - lPt.y) / v.y;\n        const xFromYDist = lPt.x + yDist * v.x;\n        if (point.x === xFromYDist) return 0;\n\n        // General case.\n        // Check to see where a point on the line with matching X coordinate is.\n        const xDist = (point.x - lPt.x) / v.x;\n        const yFromXDist = lPt.y + xDist * v.y;\n        if (point.y === yFromXDist) return 0;\n        return point.y < yFromXDist ? -1 : 1;\n      }\n\n      /**\n       * Given another segment, returns the first non-trivial intersection\n       * between the two segments (in terms of sweep line ordering), if it exists.\n       *\n       * A 'non-trivial' intersection is one that will cause one or both of the\n       * segments to be split(). As such, 'trivial' vs. 'non-trivial' intersection:\n       *\n       *   * endpoint of segA with endpoint of segB --> trivial\n       *   * endpoint of segA with point along segB --> non-trivial\n       *   * endpoint of segB with point along segA --> non-trivial\n       *   * point along segA with point along segB --> non-trivial\n       *\n       * If no non-trivial intersection exists, return null\n       * Else, return null.\n       */\n      getIntersection(other) {\n        // If bboxes don't overlap, there can't be any intersections\n        const tBbox = this.bbox();\n        const oBbox = other.bbox();\n        const bboxOverlap = getBboxOverlap(tBbox, oBbox);\n        if (bboxOverlap === null) return null;\n\n        // We first check to see if the endpoints can be considered intersections.\n        // This will 'snap' intersections to endpoints if possible, and will\n        // handle cases of colinearity.\n\n        const tlp = this.leftSE.point;\n        const trp = this.rightSE.point;\n        const olp = other.leftSE.point;\n        const orp = other.rightSE.point;\n\n        // does each endpoint touch the other segment?\n        // note that we restrict the 'touching' definition to only allow segments\n        // to touch endpoints that lie forward from where we are in the sweep line pass\n        const touchesOtherLSE = isInBbox(tBbox, olp) && this.comparePoint(olp) === 0;\n        const touchesThisLSE = isInBbox(oBbox, tlp) && other.comparePoint(tlp) === 0;\n        const touchesOtherRSE = isInBbox(tBbox, orp) && this.comparePoint(orp) === 0;\n        const touchesThisRSE = isInBbox(oBbox, trp) && other.comparePoint(trp) === 0;\n\n        // do left endpoints match?\n        if (touchesThisLSE && touchesOtherLSE) {\n          // these two cases are for colinear segments with matching left\n          // endpoints, and one segment being longer than the other\n          if (touchesThisRSE && !touchesOtherRSE) return trp;\n          if (!touchesThisRSE && touchesOtherRSE) return orp;\n          // either the two segments match exactly (two trival intersections)\n          // or just on their left endpoint (one trivial intersection\n          return null;\n        }\n\n        // does this left endpoint matches (other doesn't)\n        if (touchesThisLSE) {\n          // check for segments that just intersect on opposing endpoints\n          if (touchesOtherRSE) {\n            if (tlp.x === orp.x && tlp.y === orp.y) return null;\n          }\n          // t-intersection on left endpoint\n          return tlp;\n        }\n\n        // does other left endpoint matches (this doesn't)\n        if (touchesOtherLSE) {\n          // check for segments that just intersect on opposing endpoints\n          if (touchesThisRSE) {\n            if (trp.x === olp.x && trp.y === olp.y) return null;\n          }\n          // t-intersection on left endpoint\n          return olp;\n        }\n\n        // trivial intersection on right endpoints\n        if (touchesThisRSE && touchesOtherRSE) return null;\n\n        // t-intersections on just one right endpoint\n        if (touchesThisRSE) return trp;\n        if (touchesOtherRSE) return orp;\n\n        // None of our endpoints intersect. Look for a general intersection between\n        // infinite lines laid over the segments\n        const pt = intersection$1(tlp, this.vector(), olp, other.vector());\n\n        // are the segments parrallel? Note that if they were colinear with overlap,\n        // they would have an endpoint intersection and that case was already handled above\n        if (pt === null) return null;\n\n        // is the intersection found between the lines not on the segments?\n        if (!isInBbox(bboxOverlap, pt)) return null;\n\n        // round the the computed point if needed\n        return rounder.round(pt.x, pt.y);\n      }\n\n      /**\n       * Split the given segment into multiple segments on the given points.\n       *  * Each existing segment will retain its leftSE and a new rightSE will be\n       *    generated for it.\n       *  * A new segment will be generated which will adopt the original segment's\n       *    rightSE, and a new leftSE will be generated for it.\n       *  * If there are more than two points given to split on, new segments\n       *    in the middle will be generated with new leftSE and rightSE's.\n       *  * An array of the newly generated SweepEvents will be returned.\n       *\n       * Warning: input array of points is modified\n       */\n      split(point) {\n        const newEvents = [];\n        const alreadyLinked = point.events !== undefined;\n        const newLeftSE = new SweepEvent(point, true);\n        const newRightSE = new SweepEvent(point, false);\n        const oldRightSE = this.rightSE;\n        this.replaceRightSE(newRightSE);\n        newEvents.push(newRightSE);\n        newEvents.push(newLeftSE);\n        const newSeg = new Segment(newLeftSE, oldRightSE, this.rings.slice(), this.windings.slice());\n\n        // when splitting a nearly vertical downward-facing segment,\n        // sometimes one of the resulting new segments is vertical, in which\n        // case its left and right events may need to be swapped\n        if (SweepEvent.comparePoints(newSeg.leftSE.point, newSeg.rightSE.point) > 0) {\n          newSeg.swapEvents();\n        }\n        if (SweepEvent.comparePoints(this.leftSE.point, this.rightSE.point) > 0) {\n          this.swapEvents();\n        }\n\n        // in the point we just used to create new sweep events with was already\n        // linked to other events, we need to check if either of the affected\n        // segments should be consumed\n        if (alreadyLinked) {\n          newLeftSE.checkForConsuming();\n          newRightSE.checkForConsuming();\n        }\n        return newEvents;\n      }\n\n      /* Swap which event is left and right */\n      swapEvents() {\n        const tmpEvt = this.rightSE;\n        this.rightSE = this.leftSE;\n        this.leftSE = tmpEvt;\n        this.leftSE.isLeft = true;\n        this.rightSE.isLeft = false;\n        for (let i = 0, iMax = this.windings.length; i < iMax; i++) {\n          this.windings[i] *= -1;\n        }\n      }\n\n      /* Consume another segment. We take their rings under our wing\n       * and mark them as consumed. Use for perfectly overlapping segments */\n      consume(other) {\n        let consumer = this;\n        let consumee = other;\n        while (consumer.consumedBy) consumer = consumer.consumedBy;\n        while (consumee.consumedBy) consumee = consumee.consumedBy;\n        const cmp = Segment.compare(consumer, consumee);\n        if (cmp === 0) return; // already consumed\n        // the winner of the consumption is the earlier segment\n        // according to sweep line ordering\n        if (cmp > 0) {\n          const tmp = consumer;\n          consumer = consumee;\n          consumee = tmp;\n        }\n\n        // make sure a segment doesn't consume it's prev\n        if (consumer.prev === consumee) {\n          const tmp = consumer;\n          consumer = consumee;\n          consumee = tmp;\n        }\n        for (let i = 0, iMax = consumee.rings.length; i < iMax; i++) {\n          const ring = consumee.rings[i];\n          const winding = consumee.windings[i];\n          const index = consumer.rings.indexOf(ring);\n          if (index === -1) {\n            consumer.rings.push(ring);\n            consumer.windings.push(winding);\n          } else consumer.windings[index] += winding;\n        }\n        consumee.rings = null;\n        consumee.windings = null;\n        consumee.consumedBy = consumer;\n\n        // mark sweep events consumed as to maintain ordering in sweep event queue\n        consumee.leftSE.consumedBy = consumer.leftSE;\n        consumee.rightSE.consumedBy = consumer.rightSE;\n      }\n\n      /* The first segment previous segment chain that is in the result */\n      prevInResult() {\n        if (this._prevInResult !== undefined) return this._prevInResult;\n        if (!this.prev) this._prevInResult = null;else if (this.prev.isInResult()) this._prevInResult = this.prev;else this._prevInResult = this.prev.prevInResult();\n        return this._prevInResult;\n      }\n      beforeState() {\n        if (this._beforeState !== undefined) return this._beforeState;\n        if (!this.prev) this._beforeState = {\n          rings: [],\n          windings: [],\n          multiPolys: []\n        };else {\n          const seg = this.prev.consumedBy || this.prev;\n          this._beforeState = seg.afterState();\n        }\n        return this._beforeState;\n      }\n      afterState() {\n        if (this._afterState !== undefined) return this._afterState;\n        const beforeState = this.beforeState();\n        this._afterState = {\n          rings: beforeState.rings.slice(0),\n          windings: beforeState.windings.slice(0),\n          multiPolys: []\n        };\n        const ringsAfter = this._afterState.rings;\n        const windingsAfter = this._afterState.windings;\n        const mpsAfter = this._afterState.multiPolys;\n\n        // calculate ringsAfter, windingsAfter\n        for (let i = 0, iMax = this.rings.length; i < iMax; i++) {\n          const ring = this.rings[i];\n          const winding = this.windings[i];\n          const index = ringsAfter.indexOf(ring);\n          if (index === -1) {\n            ringsAfter.push(ring);\n            windingsAfter.push(winding);\n          } else windingsAfter[index] += winding;\n        }\n\n        // calcualte polysAfter\n        const polysAfter = [];\n        const polysExclude = [];\n        for (let i = 0, iMax = ringsAfter.length; i < iMax; i++) {\n          if (windingsAfter[i] === 0) continue; // non-zero rule\n          const ring = ringsAfter[i];\n          const poly = ring.poly;\n          if (polysExclude.indexOf(poly) !== -1) continue;\n          if (ring.isExterior) polysAfter.push(poly);else {\n            if (polysExclude.indexOf(poly) === -1) polysExclude.push(poly);\n            const index = polysAfter.indexOf(ring.poly);\n            if (index !== -1) polysAfter.splice(index, 1);\n          }\n        }\n\n        // calculate multiPolysAfter\n        for (let i = 0, iMax = polysAfter.length; i < iMax; i++) {\n          const mp = polysAfter[i].multiPoly;\n          if (mpsAfter.indexOf(mp) === -1) mpsAfter.push(mp);\n        }\n        return this._afterState;\n      }\n\n      /* Is this segment part of the final result? */\n      isInResult() {\n        // if we've been consumed, we're not in the result\n        if (this.consumedBy) return false;\n        if (this._isInResult !== undefined) return this._isInResult;\n        const mpsBefore = this.beforeState().multiPolys;\n        const mpsAfter = this.afterState().multiPolys;\n        switch (operation.type) {\n          case \"union\":\n            {\n              // UNION - included iff:\n              //  * On one side of us there is 0 poly interiors AND\n              //  * On the other side there is 1 or more.\n              const noBefores = mpsBefore.length === 0;\n              const noAfters = mpsAfter.length === 0;\n              this._isInResult = noBefores !== noAfters;\n              break;\n            }\n          case \"intersection\":\n            {\n              // INTERSECTION - included iff:\n              //  * on one side of us all multipolys are rep. with poly interiors AND\n              //  * on the other side of us, not all multipolys are repsented\n              //    with poly interiors\n              let least;\n              let most;\n              if (mpsBefore.length < mpsAfter.length) {\n                least = mpsBefore.length;\n                most = mpsAfter.length;\n              } else {\n                least = mpsAfter.length;\n                most = mpsBefore.length;\n              }\n              this._isInResult = most === operation.numMultiPolys && least < most;\n              break;\n            }\n          case \"xor\":\n            {\n              // XOR - included iff:\n              //  * the difference between the number of multipolys represented\n              //    with poly interiors on our two sides is an odd number\n              const diff = Math.abs(mpsBefore.length - mpsAfter.length);\n              this._isInResult = diff % 2 === 1;\n              break;\n            }\n          case \"difference\":\n            {\n              // DIFFERENCE included iff:\n              //  * on exactly one side, we have just the subject\n              const isJustSubject = mps => mps.length === 1 && mps[0].isSubject;\n              this._isInResult = isJustSubject(mpsBefore) !== isJustSubject(mpsAfter);\n              break;\n            }\n          default:\n            throw new Error(`Unrecognized operation type found ${operation.type}`);\n        }\n        return this._isInResult;\n      }\n    }\n\n    class RingIn {\n      constructor(geomRing, poly, isExterior) {\n        if (!Array.isArray(geomRing) || geomRing.length === 0) {\n          throw new Error(\"Input geometry is not a valid Polygon or MultiPolygon\");\n        }\n        this.poly = poly;\n        this.isExterior = isExterior;\n        this.segments = [];\n        if (typeof geomRing[0][0] !== \"number\" || typeof geomRing[0][1] !== \"number\") {\n          throw new Error(\"Input geometry is not a valid Polygon or MultiPolygon\");\n        }\n        const firstPoint = rounder.round(geomRing[0][0], geomRing[0][1]);\n        this.bbox = {\n          ll: {\n            x: firstPoint.x,\n            y: firstPoint.y\n          },\n          ur: {\n            x: firstPoint.x,\n            y: firstPoint.y\n          }\n        };\n        let prevPoint = firstPoint;\n        for (let i = 1, iMax = geomRing.length; i < iMax; i++) {\n          if (typeof geomRing[i][0] !== \"number\" || typeof geomRing[i][1] !== \"number\") {\n            throw new Error(\"Input geometry is not a valid Polygon or MultiPolygon\");\n          }\n          let point = rounder.round(geomRing[i][0], geomRing[i][1]);\n          // skip repeated points\n          if (point.x === prevPoint.x && point.y === prevPoint.y) continue;\n          this.segments.push(Segment.fromRing(prevPoint, point, this));\n          if (point.x < this.bbox.ll.x) this.bbox.ll.x = point.x;\n          if (point.y < this.bbox.ll.y) this.bbox.ll.y = point.y;\n          if (point.x > this.bbox.ur.x) this.bbox.ur.x = point.x;\n          if (point.y > this.bbox.ur.y) this.bbox.ur.y = point.y;\n          prevPoint = point;\n        }\n        // add segment from last to first if last is not the same as first\n        if (firstPoint.x !== prevPoint.x || firstPoint.y !== prevPoint.y) {\n          this.segments.push(Segment.fromRing(prevPoint, firstPoint, this));\n        }\n      }\n      getSweepEvents() {\n        const sweepEvents = [];\n        for (let i = 0, iMax = this.segments.length; i < iMax; i++) {\n          const segment = this.segments[i];\n          sweepEvents.push(segment.leftSE);\n          sweepEvents.push(segment.rightSE);\n        }\n        return sweepEvents;\n      }\n    }\n    class PolyIn {\n      constructor(geomPoly, multiPoly) {\n        if (!Array.isArray(geomPoly)) {\n          throw new Error(\"Input geometry is not a valid Polygon or MultiPolygon\");\n        }\n        this.exteriorRing = new RingIn(geomPoly[0], this, true);\n        // copy by value\n        this.bbox = {\n          ll: {\n            x: this.exteriorRing.bbox.ll.x,\n            y: this.exteriorRing.bbox.ll.y\n          },\n          ur: {\n            x: this.exteriorRing.bbox.ur.x,\n            y: this.exteriorRing.bbox.ur.y\n          }\n        };\n        this.interiorRings = [];\n        for (let i = 1, iMax = geomPoly.length; i < iMax; i++) {\n          const ring = new RingIn(geomPoly[i], this, false);\n          if (ring.bbox.ll.x < this.bbox.ll.x) this.bbox.ll.x = ring.bbox.ll.x;\n          if (ring.bbox.ll.y < this.bbox.ll.y) this.bbox.ll.y = ring.bbox.ll.y;\n          if (ring.bbox.ur.x > this.bbox.ur.x) this.bbox.ur.x = ring.bbox.ur.x;\n          if (ring.bbox.ur.y > this.bbox.ur.y) this.bbox.ur.y = ring.bbox.ur.y;\n          this.interiorRings.push(ring);\n        }\n        this.multiPoly = multiPoly;\n      }\n      getSweepEvents() {\n        const sweepEvents = this.exteriorRing.getSweepEvents();\n        for (let i = 0, iMax = this.interiorRings.length; i < iMax; i++) {\n          const ringSweepEvents = this.interiorRings[i].getSweepEvents();\n          for (let j = 0, jMax = ringSweepEvents.length; j < jMax; j++) {\n            sweepEvents.push(ringSweepEvents[j]);\n          }\n        }\n        return sweepEvents;\n      }\n    }\n    class MultiPolyIn {\n      constructor(geom, isSubject) {\n        if (!Array.isArray(geom)) {\n          throw new Error(\"Input geometry is not a valid Polygon or MultiPolygon\");\n        }\n        try {\n          // if the input looks like a polygon, convert it to a multipolygon\n          if (typeof geom[0][0][0] === \"number\") geom = [geom];\n        } catch (ex) {\n          // The input is either malformed or has empty arrays.\n          // In either case, it will be handled later on.\n        }\n        this.polys = [];\n        this.bbox = {\n          ll: {\n            x: Number.POSITIVE_INFINITY,\n            y: Number.POSITIVE_INFINITY\n          },\n          ur: {\n            x: Number.NEGATIVE_INFINITY,\n            y: Number.NEGATIVE_INFINITY\n          }\n        };\n        for (let i = 0, iMax = geom.length; i < iMax; i++) {\n          const poly = new PolyIn(geom[i], this);\n          if (poly.bbox.ll.x < this.bbox.ll.x) this.bbox.ll.x = poly.bbox.ll.x;\n          if (poly.bbox.ll.y < this.bbox.ll.y) this.bbox.ll.y = poly.bbox.ll.y;\n          if (poly.bbox.ur.x > this.bbox.ur.x) this.bbox.ur.x = poly.bbox.ur.x;\n          if (poly.bbox.ur.y > this.bbox.ur.y) this.bbox.ur.y = poly.bbox.ur.y;\n          this.polys.push(poly);\n        }\n        this.isSubject = isSubject;\n      }\n      getSweepEvents() {\n        const sweepEvents = [];\n        for (let i = 0, iMax = this.polys.length; i < iMax; i++) {\n          const polySweepEvents = this.polys[i].getSweepEvents();\n          for (let j = 0, jMax = polySweepEvents.length; j < jMax; j++) {\n            sweepEvents.push(polySweepEvents[j]);\n          }\n        }\n        return sweepEvents;\n      }\n    }\n\n    class RingOut {\n      /* Given the segments from the sweep line pass, compute & return a series\n       * of closed rings from all the segments marked to be part of the result */\n      static factory(allSegments) {\n        const ringsOut = [];\n        for (let i = 0, iMax = allSegments.length; i < iMax; i++) {\n          const segment = allSegments[i];\n          if (!segment.isInResult() || segment.ringOut) continue;\n          let prevEvent = null;\n          let event = segment.leftSE;\n          let nextEvent = segment.rightSE;\n          const events = [event];\n          const startingPoint = event.point;\n          const intersectionLEs = [];\n\n          /* Walk the chain of linked events to form a closed ring */\n          while (true) {\n            prevEvent = event;\n            event = nextEvent;\n            events.push(event);\n\n            /* Is the ring complete? */\n            if (event.point === startingPoint) break;\n            while (true) {\n              const availableLEs = event.getAvailableLinkedEvents();\n\n              /* Did we hit a dead end? This shouldn't happen.\n               * Indicates some earlier part of the algorithm malfunctioned. */\n              if (availableLEs.length === 0) {\n                const firstPt = events[0].point;\n                const lastPt = events[events.length - 1].point;\n                throw new Error(`Unable to complete output ring starting at [${firstPt.x},` + ` ${firstPt.y}]. Last matching segment found ends at` + ` [${lastPt.x}, ${lastPt.y}].`);\n              }\n\n              /* Only one way to go, so cotinue on the path */\n              if (availableLEs.length === 1) {\n                nextEvent = availableLEs[0].otherSE;\n                break;\n              }\n\n              /* We must have an intersection. Check for a completed loop */\n              let indexLE = null;\n              for (let j = 0, jMax = intersectionLEs.length; j < jMax; j++) {\n                if (intersectionLEs[j].point === event.point) {\n                  indexLE = j;\n                  break;\n                }\n              }\n              /* Found a completed loop. Cut that off and make a ring */\n              if (indexLE !== null) {\n                const intersectionLE = intersectionLEs.splice(indexLE)[0];\n                const ringEvents = events.splice(intersectionLE.index);\n                ringEvents.unshift(ringEvents[0].otherSE);\n                ringsOut.push(new RingOut(ringEvents.reverse()));\n                continue;\n              }\n              /* register the intersection */\n              intersectionLEs.push({\n                index: events.length,\n                point: event.point\n              });\n              /* Choose the left-most option to continue the walk */\n              const comparator = event.getLeftmostComparator(prevEvent);\n              nextEvent = availableLEs.sort(comparator)[0].otherSE;\n              break;\n            }\n          }\n          ringsOut.push(new RingOut(events));\n        }\n        return ringsOut;\n      }\n      constructor(events) {\n        this.events = events;\n        for (let i = 0, iMax = events.length; i < iMax; i++) {\n          events[i].segment.ringOut = this;\n        }\n        this.poly = null;\n      }\n      getGeom() {\n        // Remove superfluous points (ie extra points along a straight line),\n        let prevPt = this.events[0].point;\n        const points = [prevPt];\n        for (let i = 1, iMax = this.events.length - 1; i < iMax; i++) {\n          const pt = this.events[i].point;\n          const nextPt = this.events[i + 1].point;\n          if (compareVectorAngles(pt, prevPt, nextPt) === 0) continue;\n          points.push(pt);\n          prevPt = pt;\n        }\n\n        // ring was all (within rounding error of angle calc) colinear points\n        if (points.length === 1) return null;\n\n        // check if the starting point is necessary\n        const pt = points[0];\n        const nextPt = points[1];\n        if (compareVectorAngles(pt, prevPt, nextPt) === 0) points.shift();\n        points.push(points[0]);\n        const step = this.isExteriorRing() ? 1 : -1;\n        const iStart = this.isExteriorRing() ? 0 : points.length - 1;\n        const iEnd = this.isExteriorRing() ? points.length : -1;\n        const orderedPoints = [];\n        for (let i = iStart; i != iEnd; i += step) orderedPoints.push([points[i].x, points[i].y]);\n        return orderedPoints;\n      }\n      isExteriorRing() {\n        if (this._isExteriorRing === undefined) {\n          const enclosing = this.enclosingRing();\n          this._isExteriorRing = enclosing ? !enclosing.isExteriorRing() : true;\n        }\n        return this._isExteriorRing;\n      }\n      enclosingRing() {\n        if (this._enclosingRing === undefined) {\n          this._enclosingRing = this._calcEnclosingRing();\n        }\n        return this._enclosingRing;\n      }\n\n      /* Returns the ring that encloses this one, if any */\n      _calcEnclosingRing() {\n        // start with the ealier sweep line event so that the prevSeg\n        // chain doesn't lead us inside of a loop of ours\n        let leftMostEvt = this.events[0];\n        for (let i = 1, iMax = this.events.length; i < iMax; i++) {\n          const evt = this.events[i];\n          if (SweepEvent.compare(leftMostEvt, evt) > 0) leftMostEvt = evt;\n        }\n        let prevSeg = leftMostEvt.segment.prevInResult();\n        let prevPrevSeg = prevSeg ? prevSeg.prevInResult() : null;\n        while (true) {\n          // no segment found, thus no ring can enclose us\n          if (!prevSeg) return null;\n\n          // no segments below prev segment found, thus the ring of the prev\n          // segment must loop back around and enclose us\n          if (!prevPrevSeg) return prevSeg.ringOut;\n\n          // if the two segments are of different rings, the ring of the prev\n          // segment must either loop around us or the ring of the prev prev\n          // seg, which would make us and the ring of the prev peers\n          if (prevPrevSeg.ringOut !== prevSeg.ringOut) {\n            if (prevPrevSeg.ringOut.enclosingRing() !== prevSeg.ringOut) {\n              return prevSeg.ringOut;\n            } else return prevSeg.ringOut.enclosingRing();\n          }\n\n          // two segments are from the same ring, so this was a penisula\n          // of that ring. iterate downward, keep searching\n          prevSeg = prevPrevSeg.prevInResult();\n          prevPrevSeg = prevSeg ? prevSeg.prevInResult() : null;\n        }\n      }\n    }\n    class PolyOut {\n      constructor(exteriorRing) {\n        this.exteriorRing = exteriorRing;\n        exteriorRing.poly = this;\n        this.interiorRings = [];\n      }\n      addInterior(ring) {\n        this.interiorRings.push(ring);\n        ring.poly = this;\n      }\n      getGeom() {\n        const geom = [this.exteriorRing.getGeom()];\n        // exterior ring was all (within rounding error of angle calc) colinear points\n        if (geom[0] === null) return null;\n        for (let i = 0, iMax = this.interiorRings.length; i < iMax; i++) {\n          const ringGeom = this.interiorRings[i].getGeom();\n          // interior ring was all (within rounding error of angle calc) colinear points\n          if (ringGeom === null) continue;\n          geom.push(ringGeom);\n        }\n        return geom;\n      }\n    }\n    class MultiPolyOut {\n      constructor(rings) {\n        this.rings = rings;\n        this.polys = this._composePolys(rings);\n      }\n      getGeom() {\n        const geom = [];\n        for (let i = 0, iMax = this.polys.length; i < iMax; i++) {\n          const polyGeom = this.polys[i].getGeom();\n          // exterior ring was all (within rounding error of angle calc) colinear points\n          if (polyGeom === null) continue;\n          geom.push(polyGeom);\n        }\n        return geom;\n      }\n      _composePolys(rings) {\n        const polys = [];\n        for (let i = 0, iMax = rings.length; i < iMax; i++) {\n          const ring = rings[i];\n          if (ring.poly) continue;\n          if (ring.isExteriorRing()) polys.push(new PolyOut(ring));else {\n            const enclosingRing = ring.enclosingRing();\n            if (!enclosingRing.poly) polys.push(new PolyOut(enclosingRing));\n            enclosingRing.poly.addInterior(ring);\n          }\n        }\n        return polys;\n      }\n    }\n\n    /**\n     * NOTE:  We must be careful not to change any segments while\n     *        they are in the SplayTree. AFAIK, there's no way to tell\n     *        the tree to rebalance itself - thus before splitting\n     *        a segment that's in the tree, we remove it from the tree,\n     *        do the split, then re-insert it. (Even though splitting a\n     *        segment *shouldn't* change its correct position in the\n     *        sweep line tree, the reality is because of rounding errors,\n     *        it sometimes does.)\n     */\n\n    class SweepLine {\n      constructor(queue) {\n        let comparator = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : Segment.compare;\n        this.queue = queue;\n        this.tree = new Tree(comparator);\n        this.segments = [];\n      }\n      process(event) {\n        const segment = event.segment;\n        const newEvents = [];\n\n        // if we've already been consumed by another segment,\n        // clean up our body parts and get out\n        if (event.consumedBy) {\n          if (event.isLeft) this.queue.remove(event.otherSE);else this.tree.remove(segment);\n          return newEvents;\n        }\n        const node = event.isLeft ? this.tree.add(segment) : this.tree.find(segment);\n        if (!node) throw new Error(`Unable to find segment #${segment.id} ` + `[${segment.leftSE.point.x}, ${segment.leftSE.point.y}] -> ` + `[${segment.rightSE.point.x}, ${segment.rightSE.point.y}] ` + \"in SweepLine tree.\");\n        let prevNode = node;\n        let nextNode = node;\n        let prevSeg = undefined;\n        let nextSeg = undefined;\n\n        // skip consumed segments still in tree\n        while (prevSeg === undefined) {\n          prevNode = this.tree.prev(prevNode);\n          if (prevNode === null) prevSeg = null;else if (prevNode.key.consumedBy === undefined) prevSeg = prevNode.key;\n        }\n\n        // skip consumed segments still in tree\n        while (nextSeg === undefined) {\n          nextNode = this.tree.next(nextNode);\n          if (nextNode === null) nextSeg = null;else if (nextNode.key.consumedBy === undefined) nextSeg = nextNode.key;\n        }\n        if (event.isLeft) {\n          // Check for intersections against the previous segment in the sweep line\n          let prevMySplitter = null;\n          if (prevSeg) {\n            const prevInter = prevSeg.getIntersection(segment);\n            if (prevInter !== null) {\n              if (!segment.isAnEndpoint(prevInter)) prevMySplitter = prevInter;\n              if (!prevSeg.isAnEndpoint(prevInter)) {\n                const newEventsFromSplit = this._splitSafely(prevSeg, prevInter);\n                for (let i = 0, iMax = newEventsFromSplit.length; i < iMax; i++) {\n                  newEvents.push(newEventsFromSplit[i]);\n                }\n              }\n            }\n          }\n\n          // Check for intersections against the next segment in the sweep line\n          let nextMySplitter = null;\n          if (nextSeg) {\n            const nextInter = nextSeg.getIntersection(segment);\n            if (nextInter !== null) {\n              if (!segment.isAnEndpoint(nextInter)) nextMySplitter = nextInter;\n              if (!nextSeg.isAnEndpoint(nextInter)) {\n                const newEventsFromSplit = this._splitSafely(nextSeg, nextInter);\n                for (let i = 0, iMax = newEventsFromSplit.length; i < iMax; i++) {\n                  newEvents.push(newEventsFromSplit[i]);\n                }\n              }\n            }\n          }\n\n          // For simplicity, even if we find more than one intersection we only\n          // spilt on the 'earliest' (sweep-line style) of the intersections.\n          // The other intersection will be handled in a future process().\n          if (prevMySplitter !== null || nextMySplitter !== null) {\n            let mySplitter = null;\n            if (prevMySplitter === null) mySplitter = nextMySplitter;else if (nextMySplitter === null) mySplitter = prevMySplitter;else {\n              const cmpSplitters = SweepEvent.comparePoints(prevMySplitter, nextMySplitter);\n              mySplitter = cmpSplitters <= 0 ? prevMySplitter : nextMySplitter;\n            }\n\n            // Rounding errors can cause changes in ordering,\n            // so remove afected segments and right sweep events before splitting\n            this.queue.remove(segment.rightSE);\n            newEvents.push(segment.rightSE);\n            const newEventsFromSplit = segment.split(mySplitter);\n            for (let i = 0, iMax = newEventsFromSplit.length; i < iMax; i++) {\n              newEvents.push(newEventsFromSplit[i]);\n            }\n          }\n          if (newEvents.length > 0) {\n            // We found some intersections, so re-do the current event to\n            // make sure sweep line ordering is totally consistent for later\n            // use with the segment 'prev' pointers\n            this.tree.remove(segment);\n            newEvents.push(event);\n          } else {\n            // done with left event\n            this.segments.push(segment);\n            segment.prev = prevSeg;\n          }\n        } else {\n          // event.isRight\n\n          // since we're about to be removed from the sweep line, check for\n          // intersections between our previous and next segments\n          if (prevSeg && nextSeg) {\n            const inter = prevSeg.getIntersection(nextSeg);\n            if (inter !== null) {\n              if (!prevSeg.isAnEndpoint(inter)) {\n                const newEventsFromSplit = this._splitSafely(prevSeg, inter);\n                for (let i = 0, iMax = newEventsFromSplit.length; i < iMax; i++) {\n                  newEvents.push(newEventsFromSplit[i]);\n                }\n              }\n              if (!nextSeg.isAnEndpoint(inter)) {\n                const newEventsFromSplit = this._splitSafely(nextSeg, inter);\n                for (let i = 0, iMax = newEventsFromSplit.length; i < iMax; i++) {\n                  newEvents.push(newEventsFromSplit[i]);\n                }\n              }\n            }\n          }\n          this.tree.remove(segment);\n        }\n        return newEvents;\n      }\n\n      /* Safely split a segment that is currently in the datastructures\n       * IE - a segment other than the one that is currently being processed. */\n      _splitSafely(seg, pt) {\n        // Rounding errors can cause changes in ordering,\n        // so remove afected segments and right sweep events before splitting\n        // removeNode() doesn't work, so have re-find the seg\n        // https://github.com/w8r/splay-tree/pull/5\n        this.tree.remove(seg);\n        const rightSE = seg.rightSE;\n        this.queue.remove(rightSE);\n        const newEvents = seg.split(pt);\n        newEvents.push(rightSE);\n        // splitting can trigger consumption\n        if (seg.consumedBy === undefined) this.tree.add(seg);\n        return newEvents;\n      }\n    }\n\n    // Limits on iterative processes to prevent infinite loops - usually caused by floating-point math round-off errors.\n    const POLYGON_CLIPPING_MAX_QUEUE_SIZE = typeof process !== \"undefined\" && process.env.POLYGON_CLIPPING_MAX_QUEUE_SIZE || 1000000;\n    const POLYGON_CLIPPING_MAX_SWEEPLINE_SEGMENTS = typeof process !== \"undefined\" && process.env.POLYGON_CLIPPING_MAX_SWEEPLINE_SEGMENTS || 1000000;\n    class Operation {\n      run(type, geom, moreGeoms) {\n        operation.type = type;\n        rounder.reset();\n\n        /* Convert inputs to MultiPoly objects */\n        const multipolys = [new MultiPolyIn(geom, true)];\n        for (let i = 0, iMax = moreGeoms.length; i < iMax; i++) {\n          multipolys.push(new MultiPolyIn(moreGeoms[i], false));\n        }\n        operation.numMultiPolys = multipolys.length;\n\n        /* BBox optimization for difference operation\n         * If the bbox of a multipolygon that's part of the clipping doesn't\n         * intersect the bbox of the subject at all, we can just drop that\n         * multiploygon. */\n        if (operation.type === \"difference\") {\n          // in place removal\n          const subject = multipolys[0];\n          let i = 1;\n          while (i < multipolys.length) {\n            if (getBboxOverlap(multipolys[i].bbox, subject.bbox) !== null) i++;else multipolys.splice(i, 1);\n          }\n        }\n\n        /* BBox optimization for intersection operation\n         * If we can find any pair of multipolygons whose bbox does not overlap,\n         * then the result will be empty. */\n        if (operation.type === \"intersection\") {\n          // TODO: this is O(n^2) in number of polygons. By sorting the bboxes,\n          //       it could be optimized to O(n * ln(n))\n          for (let i = 0, iMax = multipolys.length; i < iMax; i++) {\n            const mpA = multipolys[i];\n            for (let j = i + 1, jMax = multipolys.length; j < jMax; j++) {\n              if (getBboxOverlap(mpA.bbox, multipolys[j].bbox) === null) return [];\n            }\n          }\n        }\n\n        /* Put segment endpoints in a priority queue */\n        const queue = new Tree(SweepEvent.compare);\n        for (let i = 0, iMax = multipolys.length; i < iMax; i++) {\n          const sweepEvents = multipolys[i].getSweepEvents();\n          for (let j = 0, jMax = sweepEvents.length; j < jMax; j++) {\n            queue.insert(sweepEvents[j]);\n            if (queue.size > POLYGON_CLIPPING_MAX_QUEUE_SIZE) {\n              // prevents an infinite loop, an otherwise common manifestation of bugs\n              throw new Error(\"Infinite loop when putting segment endpoints in a priority queue \" + \"(queue size too big).\");\n            }\n          }\n        }\n\n        /* Pass the sweep line over those endpoints */\n        const sweepLine = new SweepLine(queue);\n        let prevQueueSize = queue.size;\n        let node = queue.pop();\n        while (node) {\n          const evt = node.key;\n          if (queue.size === prevQueueSize) {\n            // prevents an infinite loop, an otherwise common manifestation of bugs\n            const seg = evt.segment;\n            throw new Error(`Unable to pop() ${evt.isLeft ? \"left\" : \"right\"} SweepEvent ` + `[${evt.point.x}, ${evt.point.y}] from segment #${seg.id} ` + `[${seg.leftSE.point.x}, ${seg.leftSE.point.y}] -> ` + `[${seg.rightSE.point.x}, ${seg.rightSE.point.y}] from queue.`);\n          }\n          if (queue.size > POLYGON_CLIPPING_MAX_QUEUE_SIZE) {\n            // prevents an infinite loop, an otherwise common manifestation of bugs\n            throw new Error(\"Infinite loop when passing sweep line over endpoints \" + \"(queue size too big).\");\n          }\n          if (sweepLine.segments.length > POLYGON_CLIPPING_MAX_SWEEPLINE_SEGMENTS) {\n            // prevents an infinite loop, an otherwise common manifestation of bugs\n            throw new Error(\"Infinite loop when passing sweep line over endpoints \" + \"(too many sweep line segments).\");\n          }\n          const newEvents = sweepLine.process(evt);\n          for (let i = 0, iMax = newEvents.length; i < iMax; i++) {\n            const evt = newEvents[i];\n            if (evt.consumedBy === undefined) queue.insert(evt);\n          }\n          prevQueueSize = queue.size;\n          node = queue.pop();\n        }\n\n        // free some memory we don't need anymore\n        rounder.reset();\n\n        /* Collect and compile segments we're keeping into a multipolygon */\n        const ringsOut = RingOut.factory(sweepLine.segments);\n        const result = new MultiPolyOut(ringsOut);\n        return result.getGeom();\n      }\n    }\n\n    // singleton available by import\n    const operation = new Operation();\n\n    const union = function (geom) {\n      for (var _len = arguments.length, moreGeoms = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n        moreGeoms[_key - 1] = arguments[_key];\n      }\n      return operation.run(\"union\", geom, moreGeoms);\n    };\n    const intersection = function (geom) {\n      for (var _len2 = arguments.length, moreGeoms = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n        moreGeoms[_key2 - 1] = arguments[_key2];\n      }\n      return operation.run(\"intersection\", geom, moreGeoms);\n    };\n    const xor = function (geom) {\n      for (var _len3 = arguments.length, moreGeoms = new Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) {\n        moreGeoms[_key3 - 1] = arguments[_key3];\n      }\n      return operation.run(\"xor\", geom, moreGeoms);\n    };\n    const difference = function (subjectGeom) {\n      for (var _len4 = arguments.length, clippingGeoms = new Array(_len4 > 1 ? _len4 - 1 : 0), _key4 = 1; _key4 < _len4; _key4++) {\n        clippingGeoms[_key4 - 1] = arguments[_key4];\n      }\n      return operation.run(\"difference\", subjectGeom, clippingGeoms);\n    };\n    var index = {\n      union: union,\n      intersection: intersection,\n      xor: xor,\n      difference: difference\n    };\n\n    return index;\n\n}));\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n  function shim(props, propName, componentName, location, propFullName, secret) {\n    if (secret === ReactPropTypesSecret) {\n      // It is still safe when called from React.\n      return;\n    }\n    var err = new Error(\n      'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n      'Use PropTypes.checkPropTypes() to call them. ' +\n      'Read more at http://fb.me/use-check-prop-types'\n    );\n    err.name = 'Invariant Violation';\n    throw err;\n  };\n  shim.isRequired = shim;\n  function getShim() {\n    return shim;\n  };\n  // Important!\n  // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n  var ReactPropTypes = {\n    array: shim,\n    bigint: shim,\n    bool: shim,\n    func: shim,\n    number: shim,\n    object: shim,\n    string: shim,\n    symbol: shim,\n\n    any: shim,\n    arrayOf: getShim,\n    element: shim,\n    elementType: shim,\n    instanceOf: getShim,\n    node: shim,\n    objectOf: getShim,\n    oneOf: getShim,\n    oneOfType: getShim,\n    shape: getShim,\n    exact: getShim,\n\n    checkPropTypes: emptyFunctionWithReset,\n    resetWarningCache: emptyFunction\n  };\n\n  ReactPropTypes.PropTypes = ReactPropTypes;\n\n  return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n  var ReactIs = require('react-is');\n\n  // By explicitly using `prop-types` you are opting into new development behavior.\n  // http://fb.me/prop-types-in-prod\n  var throwOnDirectAccess = true;\n  module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n  // By explicitly using `prop-types` you are opting into new production behavior.\n  // http://fb.me/prop-types-in-prod\n  module.exports = require('./factoryWithThrowingShims')();\n}\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.geometryToCells = exports.cellToParent = exports.getResolution = exports.cellToTile = exports.tileToCell = exports.bigIntToHex = exports.hexToBigInt = void 0;\nconst tile_cover_1 = require(\"@mapbox/tile-cover\");\nconst B = [\n    0x5555555555555555n,\n    0x3333333333333333n,\n    0x0f0f0f0f0f0f0f0fn,\n    0x00ff00ff00ff00ffn,\n    0x0000ffff0000ffffn,\n    0x00000000ffffffffn\n];\nconst S = [0n, 1n, 2n, 4n, 8n, 16n];\nfunction hexToBigInt(hex) {\n    return BigInt(`0x${hex}`);\n}\nexports.hexToBigInt = hexToBigInt;\nfunction bigIntToHex(index) {\n    return index.toString(16);\n}\nexports.bigIntToHex = bigIntToHex;\nfunction tileToCell(tile) {\n    if (tile.z < 0 || tile.z > 26) {\n        throw new Error('Wrong zoom');\n    }\n    const z = BigInt(tile.z);\n    let x = BigInt(tile.x) << (32n - z);\n    let y = BigInt(tile.y) << (32n - z);\n    for (let i = 0; i < 5; i++) {\n        const s = S[5 - i];\n        const b = B[4 - i];\n        x = (x | (x << s)) & b;\n        y = (y | (y << s)) & b;\n    }\n    const quadbin = 0x4000000000000000n |\n        (1n << 59n) | // | (mode << 59) | (mode_dep << 57)\n        (z << 52n) |\n        ((x | (y << 1n)) >> 12n) |\n        (0xfffffffffffffn >> (z * 2n));\n    return quadbin;\n}\nexports.tileToCell = tileToCell;\nfunction cellToTile(quadbin) {\n    const mode = (quadbin >> 59n) & 7n;\n    const modeDep = (quadbin >> 57n) & 3n;\n    const z = (quadbin >> 52n) & 0x1fn;\n    const q = (quadbin & 0xfffffffffffffn) << 12n;\n    if (mode !== 1n && modeDep !== 0n) {\n        throw new Error('Wrong mode');\n    }\n    let x = q;\n    let y = q >> 1n;\n    for (let i = 0; i < 6; i++) {\n        const s = S[i];\n        const b = B[i];\n        x = (x | (x >> s)) & b;\n        y = (y | (y >> s)) & b;\n    }\n    x = x >> (32n - z);\n    y = y >> (32n - z);\n    return { z: Number(z), x: Number(x), y: Number(y) };\n}\nexports.cellToTile = cellToTile;\nfunction getResolution(quadbin) {\n    return (quadbin >> 52n) & 0x1fn;\n}\nexports.getResolution = getResolution;\nfunction cellToParent(quadbin) {\n    const zparent = getResolution(quadbin) - 1n;\n    const parent = (quadbin & ~(0x1fn << 52n)) | (zparent << 52n) | (0xfffffffffffffn >> (zparent * 2n));\n    return parent;\n}\nexports.cellToParent = cellToParent;\nfunction geometryToCells(geometry, resolution) {\n    const zoom = Number(resolution);\n    return (0, tile_cover_1.tiles)(geometry, {\n        min_zoom: zoom,\n        max_zoom: zoom\n    }).map(([x, y, z]) => tileToCell({ x, y, z }));\n}\nexports.geometryToCells = geometryToCells;\n","'use strict';\nconst strictUriEncode = require('strict-uri-encode');\nconst decodeComponent = require('decode-uri-component');\nconst splitOnFirst = require('split-on-first');\nconst filterObject = require('filter-obj');\n\nconst isNullOrUndefined = value => value === null || value === undefined;\n\nconst encodeFragmentIdentifier = Symbol('encodeFragmentIdentifier');\n\nfunction encoderForArrayFormat(options) {\n\tswitch (options.arrayFormat) {\n\t\tcase 'index':\n\t\t\treturn key => (result, value) => {\n\t\t\t\tconst index = result.length;\n\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined ||\n\t\t\t\t\t(options.skipNull && value === null) ||\n\t\t\t\t\t(options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (value === null) {\n\t\t\t\t\treturn [...result, [encode(key, options), '[', index, ']'].join('')];\n\t\t\t\t}\n\n\t\t\t\treturn [\n\t\t\t\t\t...result,\n\t\t\t\t\t[encode(key, options), '[', encode(index, options), ']=', encode(value, options)].join('')\n\t\t\t\t];\n\t\t\t};\n\n\t\tcase 'bracket':\n\t\t\treturn key => (result, value) => {\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined ||\n\t\t\t\t\t(options.skipNull && value === null) ||\n\t\t\t\t\t(options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (value === null) {\n\t\t\t\t\treturn [...result, [encode(key, options), '[]'].join('')];\n\t\t\t\t}\n\n\t\t\t\treturn [...result, [encode(key, options), '[]=', encode(value, options)].join('')];\n\t\t\t};\n\n\t\tcase 'colon-list-separator':\n\t\t\treturn key => (result, value) => {\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined ||\n\t\t\t\t\t(options.skipNull && value === null) ||\n\t\t\t\t\t(options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (value === null) {\n\t\t\t\t\treturn [...result, [encode(key, options), ':list='].join('')];\n\t\t\t\t}\n\n\t\t\t\treturn [...result, [encode(key, options), ':list=', encode(value, options)].join('')];\n\t\t\t};\n\n\t\tcase 'comma':\n\t\tcase 'separator':\n\t\tcase 'bracket-separator': {\n\t\t\tconst keyValueSep = options.arrayFormat === 'bracket-separator' ?\n\t\t\t\t'[]=' :\n\t\t\t\t'=';\n\n\t\t\treturn key => (result, value) => {\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined ||\n\t\t\t\t\t(options.skipNull && value === null) ||\n\t\t\t\t\t(options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\t// Translate null to an empty string so that it doesn't serialize as 'null'\n\t\t\t\tvalue = value === null ? '' : value;\n\n\t\t\t\tif (result.length === 0) {\n\t\t\t\t\treturn [[encode(key, options), keyValueSep, encode(value, options)].join('')];\n\t\t\t\t}\n\n\t\t\t\treturn [[result, encode(value, options)].join(options.arrayFormatSeparator)];\n\t\t\t};\n\t\t}\n\n\t\tdefault:\n\t\t\treturn key => (result, value) => {\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined ||\n\t\t\t\t\t(options.skipNull && value === null) ||\n\t\t\t\t\t(options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (value === null) {\n\t\t\t\t\treturn [...result, encode(key, options)];\n\t\t\t\t}\n\n\t\t\t\treturn [...result, [encode(key, options), '=', encode(value, options)].join('')];\n\t\t\t};\n\t}\n}\n\nfunction parserForArrayFormat(options) {\n\tlet result;\n\n\tswitch (options.arrayFormat) {\n\t\tcase 'index':\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tresult = /\\[(\\d*)\\]$/.exec(key);\n\n\t\t\t\tkey = key.replace(/\\[\\d*\\]$/, '');\n\n\t\t\t\tif (!result) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = {};\n\t\t\t\t}\n\n\t\t\t\taccumulator[key][result[1]] = value;\n\t\t\t};\n\n\t\tcase 'bracket':\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tresult = /(\\[\\])$/.exec(key);\n\t\t\t\tkey = key.replace(/\\[\\]$/, '');\n\n\t\t\t\tif (!result) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = [value];\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [].concat(accumulator[key], value);\n\t\t\t};\n\n\t\tcase 'colon-list-separator':\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tresult = /(:list)$/.exec(key);\n\t\t\t\tkey = key.replace(/:list$/, '');\n\n\t\t\t\tif (!result) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = [value];\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [].concat(accumulator[key], value);\n\t\t\t};\n\n\t\tcase 'comma':\n\t\tcase 'separator':\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tconst isArray = typeof value === 'string' && value.includes(options.arrayFormatSeparator);\n\t\t\t\tconst isEncodedArray = (typeof value === 'string' && !isArray && decode(value, options).includes(options.arrayFormatSeparator));\n\t\t\t\tvalue = isEncodedArray ? decode(value, options) : value;\n\t\t\t\tconst newValue = isArray || isEncodedArray ? value.split(options.arrayFormatSeparator).map(item => decode(item, options)) : value === null ? value : decode(value, options);\n\t\t\t\taccumulator[key] = newValue;\n\t\t\t};\n\n\t\tcase 'bracket-separator':\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tconst isArray = /(\\[\\])$/.test(key);\n\t\t\t\tkey = key.replace(/\\[\\]$/, '');\n\n\t\t\t\tif (!isArray) {\n\t\t\t\t\taccumulator[key] = value ? decode(value, options) : value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst arrayValue = value === null ?\n\t\t\t\t\t[] :\n\t\t\t\t\tvalue.split(options.arrayFormatSeparator).map(item => decode(item, options));\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = arrayValue;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [].concat(accumulator[key], arrayValue);\n\t\t\t};\n\n\t\tdefault:\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [].concat(accumulator[key], value);\n\t\t\t};\n\t}\n}\n\nfunction validateArrayFormatSeparator(value) {\n\tif (typeof value !== 'string' || value.length !== 1) {\n\t\tthrow new TypeError('arrayFormatSeparator must be single character string');\n\t}\n}\n\nfunction encode(value, options) {\n\tif (options.encode) {\n\t\treturn options.strict ? strictUriEncode(value) : encodeURIComponent(value);\n\t}\n\n\treturn value;\n}\n\nfunction decode(value, options) {\n\tif (options.decode) {\n\t\treturn decodeComponent(value);\n\t}\n\n\treturn value;\n}\n\nfunction keysSorter(input) {\n\tif (Array.isArray(input)) {\n\t\treturn input.sort();\n\t}\n\n\tif (typeof input === 'object') {\n\t\treturn keysSorter(Object.keys(input))\n\t\t\t.sort((a, b) => Number(a) - Number(b))\n\t\t\t.map(key => input[key]);\n\t}\n\n\treturn input;\n}\n\nfunction removeHash(input) {\n\tconst hashStart = input.indexOf('#');\n\tif (hashStart !== -1) {\n\t\tinput = input.slice(0, hashStart);\n\t}\n\n\treturn input;\n}\n\nfunction getHash(url) {\n\tlet hash = '';\n\tconst hashStart = url.indexOf('#');\n\tif (hashStart !== -1) {\n\t\thash = url.slice(hashStart);\n\t}\n\n\treturn hash;\n}\n\nfunction extract(input) {\n\tinput = removeHash(input);\n\tconst queryStart = input.indexOf('?');\n\tif (queryStart === -1) {\n\t\treturn '';\n\t}\n\n\treturn input.slice(queryStart + 1);\n}\n\nfunction parseValue(value, options) {\n\tif (options.parseNumbers && !Number.isNaN(Number(value)) && (typeof value === 'string' && value.trim() !== '')) {\n\t\tvalue = Number(value);\n\t} else if (options.parseBooleans && value !== null && (value.toLowerCase() === 'true' || value.toLowerCase() === 'false')) {\n\t\tvalue = value.toLowerCase() === 'true';\n\t}\n\n\treturn value;\n}\n\nfunction parse(query, options) {\n\toptions = Object.assign({\n\t\tdecode: true,\n\t\tsort: true,\n\t\tarrayFormat: 'none',\n\t\tarrayFormatSeparator: ',',\n\t\tparseNumbers: false,\n\t\tparseBooleans: false\n\t}, options);\n\n\tvalidateArrayFormatSeparator(options.arrayFormatSeparator);\n\n\tconst formatter = parserForArrayFormat(options);\n\n\t// Create an object with no prototype\n\tconst ret = Object.create(null);\n\n\tif (typeof query !== 'string') {\n\t\treturn ret;\n\t}\n\n\tquery = query.trim().replace(/^[?#&]/, '');\n\n\tif (!query) {\n\t\treturn ret;\n\t}\n\n\tfor (const param of query.split('&')) {\n\t\tif (param === '') {\n\t\t\tcontinue;\n\t\t}\n\n\t\tlet [key, value] = splitOnFirst(options.decode ? param.replace(/\\+/g, ' ') : param, '=');\n\n\t\t// Missing `=` should be `null`:\n\t\t// http://w3.org/TR/2012/WD-url-20120524/#collect-url-parameters\n\t\tvalue = value === undefined ? null : ['comma', 'separator', 'bracket-separator'].includes(options.arrayFormat) ? value : decode(value, options);\n\t\tformatter(decode(key, options), value, ret);\n\t}\n\n\tfor (const key of Object.keys(ret)) {\n\t\tconst value = ret[key];\n\t\tif (typeof value === 'object' && value !== null) {\n\t\t\tfor (const k of Object.keys(value)) {\n\t\t\t\tvalue[k] = parseValue(value[k], options);\n\t\t\t}\n\t\t} else {\n\t\t\tret[key] = parseValue(value, options);\n\t\t}\n\t}\n\n\tif (options.sort === false) {\n\t\treturn ret;\n\t}\n\n\treturn (options.sort === true ? Object.keys(ret).sort() : Object.keys(ret).sort(options.sort)).reduce((result, key) => {\n\t\tconst value = ret[key];\n\t\tif (Boolean(value) && typeof value === 'object' && !Array.isArray(value)) {\n\t\t\t// Sort object keys, not values\n\t\t\tresult[key] = keysSorter(value);\n\t\t} else {\n\t\t\tresult[key] = value;\n\t\t}\n\n\t\treturn result;\n\t}, Object.create(null));\n}\n\nexports.extract = extract;\nexports.parse = parse;\n\nexports.stringify = (object, options) => {\n\tif (!object) {\n\t\treturn '';\n\t}\n\n\toptions = Object.assign({\n\t\tencode: true,\n\t\tstrict: true,\n\t\tarrayFormat: 'none',\n\t\tarrayFormatSeparator: ','\n\t}, options);\n\n\tvalidateArrayFormatSeparator(options.arrayFormatSeparator);\n\n\tconst shouldFilter = key => (\n\t\t(options.skipNull && isNullOrUndefined(object[key])) ||\n\t\t(options.skipEmptyString && object[key] === '')\n\t);\n\n\tconst formatter = encoderForArrayFormat(options);\n\n\tconst objectCopy = {};\n\n\tfor (const key of Object.keys(object)) {\n\t\tif (!shouldFilter(key)) {\n\t\t\tobjectCopy[key] = object[key];\n\t\t}\n\t}\n\n\tconst keys = Object.keys(objectCopy);\n\n\tif (options.sort !== false) {\n\t\tkeys.sort(options.sort);\n\t}\n\n\treturn keys.map(key => {\n\t\tconst value = object[key];\n\n\t\tif (value === undefined) {\n\t\t\treturn '';\n\t\t}\n\n\t\tif (value === null) {\n\t\t\treturn encode(key, options);\n\t\t}\n\n\t\tif (Array.isArray(value)) {\n\t\t\tif (value.length === 0 && options.arrayFormat === 'bracket-separator') {\n\t\t\t\treturn encode(key, options) + '[]';\n\t\t\t}\n\n\t\t\treturn value\n\t\t\t\t.reduce(formatter(key), [])\n\t\t\t\t.join('&');\n\t\t}\n\n\t\treturn encode(key, options) + '=' + encode(value, options);\n\t}).filter(x => x.length > 0).join('&');\n};\n\nexports.parseUrl = (url, options) => {\n\toptions = Object.assign({\n\t\tdecode: true\n\t}, options);\n\n\tconst [url_, hash] = splitOnFirst(url, '#');\n\n\treturn Object.assign(\n\t\t{\n\t\t\turl: url_.split('?')[0] || '',\n\t\t\tquery: parse(extract(url), options)\n\t\t},\n\t\toptions && options.parseFragmentIdentifier && hash ? {fragmentIdentifier: decode(hash, options)} : {}\n\t);\n};\n\nexports.stringifyUrl = (object, options) => {\n\toptions = Object.assign({\n\t\tencode: true,\n\t\tstrict: true,\n\t\t[encodeFragmentIdentifier]: true\n\t}, options);\n\n\tconst url = removeHash(object.url).split('?')[0] || '';\n\tconst queryFromUrl = exports.extract(object.url);\n\tconst parsedQueryFromUrl = exports.parse(queryFromUrl, {sort: false});\n\n\tconst query = Object.assign(parsedQueryFromUrl, object.query);\n\tlet queryString = exports.stringify(query, options);\n\tif (queryString) {\n\t\tqueryString = `?${queryString}`;\n\t}\n\n\tlet hash = getHash(object.url);\n\tif (object.fragmentIdentifier) {\n\t\thash = `#${options[encodeFragmentIdentifier] ? encode(object.fragmentIdentifier, options) : object.fragmentIdentifier}`;\n\t}\n\n\treturn `${url}${queryString}${hash}`;\n};\n\nexports.pick = (input, filter, options) => {\n\toptions = Object.assign({\n\t\tparseFragmentIdentifier: true,\n\t\t[encodeFragmentIdentifier]: false\n\t}, options);\n\n\tconst {url, query, fragmentIdentifier} = exports.parseUrl(input, options);\n\treturn exports.stringifyUrl({\n\t\turl,\n\t\tquery: filterObject(query, filter),\n\t\tfragmentIdentifier\n\t}, options);\n};\n\nexports.exclude = (input, filter, options) => {\n\tconst exclusionFilter = Array.isArray(filter) ? key => !filter.includes(key) : (key, value) => !filter(key, value);\n\n\treturn exports.pick(input, exclusionFilter, options);\n};\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);d<x;){for(i(n,d,x),d++,x--;h(n[d],p)<0;)d++;for(;h(n[x],p)>0;)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 t<i?-1:t>i?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<i.length;r++)if(n(t,i[r]))return r;return-1}function a(t,i){h(t,0,t.children.length,i,t)}function h(t,i,n,r,e){e||(e=p(null)),e.minX=1/0,e.minY=1/0,e.maxX=-1/0,e.maxY=-1/0;for(var a=i;a<n;a++){var h=t.children[a];o(e,t.leaf?r(h):h)}return e}function o(t,i){return t.minX=Math.min(t.minX,i.minX),t.minY=Math.min(t.minY,i.minY),t.maxX=Math.max(t.maxX,i.maxX),t.maxY=Math.max(t.maxY,i.maxY),t}function s(t,i){return t.minX-i.minX}function l(t,i){return t.minY-i.minY}function f(t){return(t.maxX-t.minX)*(t.maxY-t.minY)}function u(t){return t.maxX-t.minX+(t.maxY-t.minY)}function m(t,i){return t.minX<=i.minX&&t.minY<=i.minY&&i.maxX<=t.maxX&&i.maxY<=t.maxY}function c(t,i){return i.minX<=t.maxX&&i.minY<=t.maxY&&i.maxX>=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<i.children.length;a++){var h=i.children[a],o=i.leaf?r(h):h;c(t,o)&&(i.leaf?n.push(h):m(t,o)?this._all(h,n):e.push(h))}i=e.pop()}return n},r.prototype.collides=function(t){var i=this.data;if(!c(t,i))return!1;for(var n=[];i;){for(var r=0;r<i.children.length;r++){var e=i.children[r],a=i.leaf?this.toBBox(e):e;if(c(t,a)){if(i.leaf||m(t,a))return!0;n.push(e)}}i=n.pop()}return!1},r.prototype.load=function(t){if(!t||!t.length)return this;if(t.length<this._minEntries){for(var i=0;i<t.length;i++)this.insert(t[i]);return this}var n=this._build(t.slice(),0,t.length-1,0);if(this.data.children.length)if(this.data.height===n.height)this._splitRoot(this.data,n);else{if(this.data.height<n.height){var r=this.data;this.data=n,n=r}this._insert(n,this.data.height-n.height-1,!0)}else this.data=n;return this},r.prototype.insert=function(t){return t&&this._insert(t,this.data.height-1),this},r.prototype.clear=function(){return this.data=p([]),this},r.prototype.remove=function(t,i){if(!t)return this;for(var n,r,a,h=this.data,o=this.toBBox(t),s=[],l=[];h||s.length;){if(h||(h=s.pop(),r=s[s.length-1],n=l.pop(),a=!0),h.leaf){var f=e(t,h.children,i);if(-1!==f)return h.children.splice(f,1),s.push(h),this._condense(s),this}a||h.leaf||!m(h,o)?r?(n++,h=r.children[n],a=!1):h=null:(s.push(h),l.push(n),n=0,r=h,h=h.children[0])}return this},r.prototype.toBBox=function(t){return t},r.prototype.compareMinX=function(t,i){return t.minX-i.minX},r.prototype.compareMinY=function(t,i){return t.minY-i.minY},r.prototype.toJSON=function(){return this.data},r.prototype.fromJSON=function(t){return this.data=t,this},r.prototype._all=function(t,i){for(var n=[];t;)t.leaf?i.push.apply(i,t.children):n.push.apply(n,t.children),t=n.pop();return i},r.prototype._build=function(t,i,n,r){var e,h=n-i+1,o=this._maxEntries;if(h<=o)return a(e=p(t.slice(i,n+1)),this.toBBox),e;r||(r=Math.ceil(Math.log(h)/Math.log(o)),o=Math.ceil(h/Math.pow(o,r-1))),(e=p([])).leaf=!1,e.height=r;var s=Math.ceil(h/o),l=s*Math.ceil(Math.sqrt(o));d(t,i,n,l,this.compareMinX);for(var f=i;f<=n;f+=l){var u=Math.min(f+l-1,n);d(t,f,u,s,this.compareMinY);for(var m=f;m<=u;m+=s){var c=Math.min(m+s-1,u);e.children.push(this._build(t,m,c,r-1))}}return a(e,this.toBBox),e},r.prototype._chooseSubtree=function(t,i,n,r){for(;r.push(i),!i.leaf&&r.length-1!==n;){for(var e=1/0,a=1/0,h=void 0,o=0;o<i.children.length;o++){var s=i.children[o],l=f(s),u=(m=t,c=s,(Math.max(c.maxX,m.maxX)-Math.min(c.minX,m.minX))*(Math.max(c.maxY,m.maxY)-Math.min(c.minY,m.minY))-l);u<a?(a=u,e=l<e?l:e,h=s):u===a&&l<e&&(e=l,h=s)}i=h||i.children[0]}var m,c;return i},r.prototype._insert=function(t,i,n){var r=n?t:this.toBBox(t),e=[],a=this._chooseSubtree(r,this.data,i,e);for(a.children.push(t),o(a,r);i>=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<m?(m=v,r=p,c=M<c?M:c):v===m&&M<c&&(c=M,r=p)}return r||n-i},r.prototype._chooseSplitAxis=function(t,i,n){var r=t.leaf?this.compareMinX:s,e=t.leaf?this.compareMinY:l;this._allDistMargin(t,i,n,r)<this._allDistMargin(t,i,n,e)&&t.children.sort(r)},r.prototype._allDistMargin=function(t,i,n,r){t.children.sort(r);for(var e=this.toBBox,a=h(t,0,i,e),s=h(t,n-i,n,e),l=u(a)+u(s),f=i;f<n-i;f++){var m=t.children[f];o(a,t.leaf?e(m):m),l+=u(a)}for(var c=n-i-1;c>=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","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name startOfMonth\n * @category Month Helpers\n * @summary Return the start of a month for the given date.\n *\n * @description\n * Return the start of a month for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the start of a month\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The start of a month for 2 September 2014 11:55:00:\n * const result = startOfMonth(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Mon Sep 01 2014 00:00:00\n */\nexport default function startOfMonth(dirtyDate) {\n  requiredArgs(1, arguments);\n  var date = toDate(dirtyDate);\n  date.setDate(1);\n  date.setHours(0, 0, 0, 0);\n  return date;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isSameYear\n * @category Year Helpers\n * @summary Are the given dates in the same year?\n *\n * @description\n * Are the given dates in the same year?\n *\n * @param {Date|Number} dateLeft - the first date to check\n * @param {Date|Number} dateRight - the second date to check\n * @returns {Boolean} the dates are in the same year\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Are 2 September 2014 and 25 September 2014 in the same year?\n * const result = isSameYear(new Date(2014, 8, 2), new Date(2014, 8, 25))\n * //=> true\n */\nexport default function isSameYear(dirtyDateLeft, dirtyDateRight) {\n  requiredArgs(2, arguments);\n  var dateLeft = toDate(dirtyDateLeft);\n  var dateRight = toDate(dirtyDateRight);\n  return dateLeft.getFullYear() === dateRight.getFullYear();\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport getDaysInMonth from \"../getDaysInMonth/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name setMonth\n * @category Month Helpers\n * @summary Set the month to the given date.\n *\n * @description\n * Set the month to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} month - the month of the new date\n * @returns {Date} the new date with the month set\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Set February to 1 September 2014:\n * const result = setMonth(new Date(2014, 8, 1), 1)\n * //=> Sat Feb 01 2014 00:00:00\n */\nexport default function setMonth(dirtyDate, dirtyMonth) {\n  requiredArgs(2, arguments);\n  var date = toDate(dirtyDate);\n  var month = toInteger(dirtyMonth);\n  var year = date.getFullYear();\n  var day = date.getDate();\n  var dateWithDesiredMonth = new Date(0);\n  dateWithDesiredMonth.setFullYear(year, month, 15);\n  dateWithDesiredMonth.setHours(0, 0, 0, 0);\n  var daysInMonth = getDaysInMonth(dateWithDesiredMonth);\n  // Set the last day of the new month\n  // if the original date was the last day of the longer month\n  date.setMonth(month, Math.min(day, daysInMonth));\n  return date;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name getDaysInMonth\n * @category Month Helpers\n * @summary Get the number of days in a month of the given date.\n *\n * @description\n * Get the number of days in a month of the given date.\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the number of days in a month\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // How many days are in February 2000?\n * const result = getDaysInMonth(new Date(2000, 1))\n * //=> 29\n */\nexport default function getDaysInMonth(dirtyDate) {\n  requiredArgs(1, arguments);\n  var date = toDate(dirtyDate);\n  var year = date.getFullYear();\n  var monthIndex = date.getMonth();\n  var lastDayOfMonth = new Date(0);\n  lastDayOfMonth.setFullYear(year, monthIndex + 1, 0);\n  lastDayOfMonth.setHours(0, 0, 0, 0);\n  return lastDayOfMonth.getDate();\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name setYear\n * @category Year Helpers\n * @summary Set the year to the given date.\n *\n * @description\n * Set the year to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} year - the year of the new date\n * @returns {Date} the new date with the year set\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Set year 2013 to 1 September 2014:\n * const result = setYear(new Date(2014, 8, 1), 2013)\n * //=> Sun Sep 01 2013 00:00:00\n */\nexport default function setYear(dirtyDate, dirtyYear) {\n  requiredArgs(2, arguments);\n  var date = toDate(dirtyDate);\n  var year = toInteger(dirtyYear);\n\n  // Check if date is Invalid Date because Date.prototype.setFullYear ignores the value of Invalid Date\n  if (isNaN(date.getTime())) {\n    return new Date(NaN);\n  }\n  date.setFullYear(year);\n  return date;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name startOfYear\n * @category Year Helpers\n * @summary Return the start of a year for the given date.\n *\n * @description\n * Return the start of a year for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the start of a year\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The start of a year for 2 September 2014 11:55:00:\n * const result = startOfYear(new Date(2014, 8, 2, 11, 55, 00))\n * //=> Wed Jan 01 2014 00:00:00\n */\nexport default function startOfYear(dirtyDate) {\n  requiredArgs(1, arguments);\n  var cleanDate = toDate(dirtyDate);\n  var date = new Date(0);\n  date.setFullYear(cleanDate.getFullYear(), 0, 1);\n  date.setHours(0, 0, 0, 0);\n  return date;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isSameMonth\n * @category Month Helpers\n * @summary Are the given dates in the same month (and year)?\n *\n * @description\n * Are the given dates in the same month (and year)?\n *\n * @param {Date|Number} dateLeft - the first date to check\n * @param {Date|Number} dateRight - the second date to check\n * @returns {Boolean} the dates are in the same month (and year)\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Are 2 September 2014 and 25 September 2014 in the same month?\n * const result = isSameMonth(new Date(2014, 8, 2), new Date(2014, 8, 25))\n * //=> true\n *\n * @example\n * // Are 2 September 2014 and 25 September 2015 in the same month?\n * const result = isSameMonth(new Date(2014, 8, 2), new Date(2015, 8, 25))\n * //=> false\n */\nexport default function isSameMonth(dirtyDateLeft, dirtyDateRight) {\n  requiredArgs(2, arguments);\n  var dateLeft = toDate(dirtyDateLeft);\n  var dateRight = toDate(dirtyDateRight);\n  return dateLeft.getFullYear() === dateRight.getFullYear() && dateLeft.getMonth() === dateRight.getMonth();\n}","import { getDefaultOptions } from \"../_lib/defaultOptions/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name endOfWeek\n * @category Week Helpers\n * @summary Return the end of a week for the given date.\n *\n * @description\n * Return the end of a week for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|Number} date - the original date\n * @param {Object} [options] - an object with options.\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @returns {Date} the end of a week\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n *\n * @example\n * // The end of a week for 2 September 2014 11:55:00:\n * const result = endOfWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Sat Sep 06 2014 23:59:59.999\n *\n * @example\n * // If the week starts on Monday, the end of the week for 2 September 2014 11:55:00:\n * const result = endOfWeek(new Date(2014, 8, 2, 11, 55, 0), { weekStartsOn: 1 })\n * //=> Sun Sep 07 2014 23:59:59.999\n */\nexport default function endOfWeek(dirtyDate, options) {\n  var _ref, _ref2, _ref3, _options$weekStartsOn, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2;\n  requiredArgs(1, arguments);\n  var defaultOptions = getDefaultOptions();\n  var weekStartsOn = toInteger((_ref = (_ref2 = (_ref3 = (_options$weekStartsOn = options === null || options === void 0 ? void 0 : options.weekStartsOn) !== null && _options$weekStartsOn !== void 0 ? _options$weekStartsOn : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.weekStartsOn) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions.weekStartsOn) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.weekStartsOn) !== null && _ref !== void 0 ? _ref : 0);\n\n  // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n  if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n    throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n  }\n  var date = toDate(dirtyDate);\n  var day = date.getDay();\n  var diff = (day < weekStartsOn ? -7 : 0) + 6 - (day - weekStartsOn);\n  date.setDate(date.getDate() + diff);\n  date.setHours(23, 59, 59, 999);\n  return date;\n}","import endOfWeek from \"../endOfWeek/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name endOfISOWeek\n * @category ISO Week Helpers\n * @summary Return the end of an ISO week for the given date.\n *\n * @description\n * Return the end of an ISO week for the given date.\n * The result will be in the local timezone.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the end of an ISO week\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The end of an ISO week for 2 September 2014 11:55:00:\n * const result = endOfISOWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Sun Sep 07 2014 23:59:59.999\n */\nexport default function endOfISOWeek(dirtyDate) {\n  requiredArgs(1, arguments);\n  return endOfWeek(dirtyDate, {\n    weekStartsOn: 1\n  });\n}","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name max\n * @category Common Helpers\n * @summary Return the latest of the given dates.\n *\n * @description\n * Return the latest of the given dates.\n *\n * @param {Date[]|Number[]} datesArray - the dates to compare\n * @returns {Date} the latest of the dates\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Which of these dates is the latest?\n * const result = max([\n *   new Date(1989, 6, 10),\n *   new Date(1987, 1, 11),\n *   new Date(1995, 6, 2),\n *   new Date(1990, 0, 1)\n * ])\n * //=> Sun Jul 02 1995 00:00:00\n */\nexport default function max(dirtyDatesArray) {\n  requiredArgs(1, arguments);\n  var datesArray;\n  // `dirtyDatesArray` is Array, Set or Map, or object with custom `forEach` method\n  if (dirtyDatesArray && typeof dirtyDatesArray.forEach === 'function') {\n    datesArray = dirtyDatesArray;\n\n    // If `dirtyDatesArray` is Array-like Object, convert to Array.\n  } else if (_typeof(dirtyDatesArray) === 'object' && dirtyDatesArray !== null) {\n    datesArray = Array.prototype.slice.call(dirtyDatesArray);\n  } else {\n    // `dirtyDatesArray` is non-iterable, return Invalid Date\n    return new Date(NaN);\n  }\n  var result;\n  datesArray.forEach(function (dirtyDate) {\n    var currentDate = toDate(dirtyDate);\n    if (result === undefined || result < currentDate || isNaN(Number(currentDate))) {\n      result = currentDate;\n    }\n  });\n  return result || new Date(NaN);\n}","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name min\n * @category Common Helpers\n * @summary Returns the earliest of the given dates.\n *\n * @description\n * Returns the earliest of the given dates.\n *\n * @param {Date[]|Number[]} datesArray - the dates to compare\n * @returns {Date} - the earliest of the dates\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Which of these dates is the earliest?\n * const result = min([\n *   new Date(1989, 6, 10),\n *   new Date(1987, 1, 11),\n *   new Date(1995, 6, 2),\n *   new Date(1990, 0, 1)\n * ])\n * //=> Wed Feb 11 1987 00:00:00\n */\nexport default function min(dirtyDatesArray) {\n  requiredArgs(1, arguments);\n  var datesArray;\n  // `dirtyDatesArray` is Array, Set or Map, or object with custom `forEach` method\n  if (dirtyDatesArray && typeof dirtyDatesArray.forEach === 'function') {\n    datesArray = dirtyDatesArray;\n    // If `dirtyDatesArray` is Array-like Object, convert to Array.\n  } else if (_typeof(dirtyDatesArray) === 'object' && dirtyDatesArray !== null) {\n    datesArray = Array.prototype.slice.call(dirtyDatesArray);\n  } else {\n    // `dirtyDatesArray` is non-iterable, return Invalid Date\n    return new Date(NaN);\n  }\n  var result;\n  datesArray.forEach(function (dirtyDate) {\n    var currentDate = toDate(dirtyDate);\n    if (result === undefined || result > currentDate || isNaN(currentDate.getDate())) {\n      result = currentDate;\n    }\n  });\n  return result || new Date(NaN);\n}","import toDate from \"../toDate/index.js\";\nimport startOfISOWeek from \"../startOfISOWeek/index.js\";\nimport startOfISOWeekYear from \"../startOfISOWeekYear/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nvar MILLISECONDS_IN_WEEK = 604800000;\n\n/**\n * @name getISOWeek\n * @category ISO Week Helpers\n * @summary Get the ISO week of the given date.\n *\n * @description\n * Get the ISO week of the given date.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the ISO week\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Which week of the ISO-week numbering year is 2 January 2005?\n * const result = getISOWeek(new Date(2005, 0, 2))\n * //=> 53\n */\nexport default function getISOWeek(dirtyDate) {\n  requiredArgs(1, arguments);\n  var date = toDate(dirtyDate);\n  var diff = startOfISOWeek(date).getTime() - startOfISOWeekYear(date).getTime();\n\n  // Round the number of days to the nearest integer\n  // because the number of milliseconds in a week is not constant\n  // (e.g. it's different in the week of the daylight saving time clock shift)\n  return Math.round(diff / MILLISECONDS_IN_WEEK) + 1;\n}","import startOfWeek from \"../startOfWeek/index.js\";\nimport getTimezoneOffsetInMilliseconds from \"../_lib/getTimezoneOffsetInMilliseconds/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nvar MILLISECONDS_IN_WEEK = 604800000;\n\n/**\n * @name differenceInCalendarWeeks\n * @category Week Helpers\n * @summary Get the number of calendar weeks between the given dates.\n *\n * @description\n * Get the number of calendar weeks between the given dates.\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @param {Object} [options] - an object with options.\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @returns {Number} the number of calendar weeks\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n *\n * @example\n * // How many calendar weeks are between 5 July 2014 and 20 July 2014?\n * const result = differenceInCalendarWeeks(\n *   new Date(2014, 6, 20),\n *   new Date(2014, 6, 5)\n * )\n * //=> 3\n *\n * @example\n * // If the week starts on Monday,\n * // how many calendar weeks are between 5 July 2014 and 20 July 2014?\n * const result = differenceInCalendarWeeks(\n *   new Date(2014, 6, 20),\n *   new Date(2014, 6, 5),\n *   { weekStartsOn: 1 }\n * )\n * //=> 2\n */\nexport default function differenceInCalendarWeeks(dirtyDateLeft, dirtyDateRight, options) {\n  requiredArgs(2, arguments);\n  var startOfWeekLeft = startOfWeek(dirtyDateLeft, options);\n  var startOfWeekRight = startOfWeek(dirtyDateRight, options);\n  var timestampLeft = startOfWeekLeft.getTime() - getTimezoneOffsetInMilliseconds(startOfWeekLeft);\n  var timestampRight = startOfWeekRight.getTime() - getTimezoneOffsetInMilliseconds(startOfWeekRight);\n\n  // Round the number of days to the nearest integer\n  // because the number of milliseconds in a week is not constant\n  // (e.g. it's different in the week of the daylight saving time clock shift)\n  return Math.round((timestampLeft - timestampRight) / MILLISECONDS_IN_WEEK);\n}","import differenceInCalendarWeeks from \"../differenceInCalendarWeeks/index.js\";\nimport lastDayOfMonth from \"../lastDayOfMonth/index.js\";\nimport startOfMonth from \"../startOfMonth/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name getWeeksInMonth\n * @category Week Helpers\n * @summary Get the number of calendar weeks a month spans.\n *\n * @description\n * Get the number of calendar weeks the month in the given date spans.\n *\n * @param {Date|Number} date - the given date\n * @param {Object} [options] - an object with options.\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @returns {Number} the number of calendar weeks\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n *\n * @example\n * // How many calendar weeks does February 2015 span?\n * const result = getWeeksInMonth(new Date(2015, 1, 8))\n * //=> 4\n *\n * @example\n * // If the week starts on Monday,\n * // how many calendar weeks does July 2017 span?\n * const result = getWeeksInMonth(new Date(2017, 6, 5), { weekStartsOn: 1 })\n * //=> 6\n */\nexport default function getWeeksInMonth(date, options) {\n  requiredArgs(1, arguments);\n  return differenceInCalendarWeeks(lastDayOfMonth(date), startOfMonth(date), options) + 1;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name lastDayOfMonth\n * @category Month Helpers\n * @summary Return the last day of a month for the given date.\n *\n * @description\n * Return the last day of a month for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the last day of a month\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The last day of a month for 2 September 2014 11:55:00:\n * const result = lastDayOfMonth(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 30 2014 00:00:00\n */\nexport default function lastDayOfMonth(dirtyDate) {\n  requiredArgs(1, arguments);\n  var date = toDate(dirtyDate);\n  var month = date.getMonth();\n  date.setFullYear(date.getFullYear(), month + 1, 0);\n  date.setHours(0, 0, 0, 0);\n  return date;\n}","import { jsx, jsxs, Fragment } from 'react/jsx-runtime';\nimport { createContext, useContext, useState, forwardRef, useEffect, useRef, useLayoutEffect } from 'react';\nimport { format, startOfMonth, endOfMonth, startOfDay, isSameYear, setMonth, setYear, startOfYear, differenceInCalendarMonths, addMonths, isSameMonth, isBefore, startOfISOWeek, startOfWeek, addDays, isSameDay, isAfter, subDays, differenceInCalendarDays, isDate, max, min, addWeeks, addYears, endOfISOWeek, endOfWeek, getUnixTime, getISOWeek, getWeek, getWeeksInMonth, parse } from 'date-fns';\nimport { enUS } from 'date-fns/locale';\n\n/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise, SuppressedError, Symbol */\r\n\r\n\r\nvar __assign = function() {\r\n    __assign = Object.assign || function __assign(t) {\r\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n            s = arguments[i];\r\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n        }\r\n        return t;\r\n    };\r\n    return __assign.apply(this, arguments);\r\n};\r\n\r\nfunction __rest(s, e) {\r\n    var t = {};\r\n    for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n        t[p] = s[p];\r\n    if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n        for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n            if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n                t[p[i]] = s[p[i]];\r\n        }\r\n    return t;\r\n}\r\n\r\nfunction __spreadArray(to, from, pack) {\r\n    if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n        if (ar || !(i in from)) {\r\n            if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n            ar[i] = from[i];\r\n        }\r\n    }\r\n    return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\ntypeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\r\n    var e = new Error(message);\r\n    return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\r\n};\n\n/** Returns true when the props are of type {@link DayPickerMultipleProps}. */\nfunction isDayPickerMultiple(props) {\n    return props.mode === 'multiple';\n}\n\n/** Returns true when the props are of type {@link DayPickerRangeProps}. */\nfunction isDayPickerRange(props) {\n    return props.mode === 'range';\n}\n\n/** Returns true when the props are of type {@link DayPickerSingleProps}. */\nfunction isDayPickerSingle(props) {\n    return props.mode === 'single';\n}\n\n/**\n * The name of the default CSS classes.\n */\nvar defaultClassNames = {\n    root: 'rdp',\n    multiple_months: 'rdp-multiple_months',\n    with_weeknumber: 'rdp-with_weeknumber',\n    vhidden: 'rdp-vhidden',\n    button_reset: 'rdp-button_reset',\n    button: 'rdp-button',\n    caption: 'rdp-caption',\n    caption_start: 'rdp-caption_start',\n    caption_end: 'rdp-caption_end',\n    caption_between: 'rdp-caption_between',\n    caption_label: 'rdp-caption_label',\n    caption_dropdowns: 'rdp-caption_dropdowns',\n    dropdown: 'rdp-dropdown',\n    dropdown_month: 'rdp-dropdown_month',\n    dropdown_year: 'rdp-dropdown_year',\n    dropdown_icon: 'rdp-dropdown_icon',\n    months: 'rdp-months',\n    month: 'rdp-month',\n    table: 'rdp-table',\n    tbody: 'rdp-tbody',\n    tfoot: 'rdp-tfoot',\n    head: 'rdp-head',\n    head_row: 'rdp-head_row',\n    head_cell: 'rdp-head_cell',\n    nav: 'rdp-nav',\n    nav_button: 'rdp-nav_button',\n    nav_button_previous: 'rdp-nav_button_previous',\n    nav_button_next: 'rdp-nav_button_next',\n    nav_icon: 'rdp-nav_icon',\n    row: 'rdp-row',\n    weeknumber: 'rdp-weeknumber',\n    cell: 'rdp-cell',\n    day: 'rdp-day',\n    day_today: 'rdp-day_today',\n    day_outside: 'rdp-day_outside',\n    day_selected: 'rdp-day_selected',\n    day_disabled: 'rdp-day_disabled',\n    day_hidden: 'rdp-day_hidden',\n    day_range_start: 'rdp-day_range_start',\n    day_range_end: 'rdp-day_range_end',\n    day_range_middle: 'rdp-day_range_middle'\n};\n\n/**\n * The default formatter for the caption.\n */\nfunction formatCaption(month, options) {\n    return format(month, 'LLLL y', options);\n}\n\n/**\n * The default formatter for the Day button.\n */\nfunction formatDay(day, options) {\n    return format(day, 'd', options);\n}\n\n/**\n * The default formatter for the Month caption.\n */\nfunction formatMonthCaption(month, options) {\n    return format(month, 'LLLL', options);\n}\n\n/**\n * The default formatter for the week number.\n */\nfunction formatWeekNumber(weekNumber) {\n    return \"\".concat(weekNumber);\n}\n\n/**\n * The default formatter for the name of the weekday.\n */\nfunction formatWeekdayName(weekday, options) {\n    return format(weekday, 'cccccc', options);\n}\n\n/**\n * The default formatter for the Year caption.\n */\nfunction formatYearCaption(year, options) {\n    return format(year, 'yyyy', options);\n}\n\nvar formatters = /*#__PURE__*/Object.freeze({\n    __proto__: null,\n    formatCaption: formatCaption,\n    formatDay: formatDay,\n    formatMonthCaption: formatMonthCaption,\n    formatWeekNumber: formatWeekNumber,\n    formatWeekdayName: formatWeekdayName,\n    formatYearCaption: formatYearCaption\n});\n\n/**\n * The default ARIA label for the day button.\n */\nvar labelDay = function (day, activeModifiers, options) {\n    return format(day, 'do MMMM (EEEE)', options);\n};\n\n/**\n * The default ARIA label for the WeekNumber element.\n */\nvar labelMonthDropdown = function () {\n    return 'Month: ';\n};\n\n/**\n * The default ARIA label for next month button in navigation\n */\nvar labelNext = function () {\n    return 'Go to next month';\n};\n\n/**\n * The default ARIA label for previous month button in navigation\n */\nvar labelPrevious = function () {\n    return 'Go to previous month';\n};\n\n/**\n * The default ARIA label for the Weekday element.\n */\nvar labelWeekday = function (day, options) {\n    return format(day, 'cccc', options);\n};\n\n/**\n * The default ARIA label for the WeekNumber element.\n */\nvar labelWeekNumber = function (n) {\n    return \"Week n. \".concat(n);\n};\n\n/**\n * The default ARIA label for the WeekNumber element.\n */\nvar labelYearDropdown = function () {\n    return 'Year: ';\n};\n\nvar labels = /*#__PURE__*/Object.freeze({\n    __proto__: null,\n    labelDay: labelDay,\n    labelMonthDropdown: labelMonthDropdown,\n    labelNext: labelNext,\n    labelPrevious: labelPrevious,\n    labelWeekNumber: labelWeekNumber,\n    labelWeekday: labelWeekday,\n    labelYearDropdown: labelYearDropdown\n});\n\n/**\n * Returns the default values to use in the DayPickerContext, in case they are\n * not passed down with the DayPicker initial props.\n */\nfunction getDefaultContextValues() {\n    var captionLayout = 'buttons';\n    var classNames = defaultClassNames;\n    var locale = enUS;\n    var modifiersClassNames = {};\n    var modifiers = {};\n    var numberOfMonths = 1;\n    var styles = {};\n    var today = new Date();\n    return {\n        captionLayout: captionLayout,\n        classNames: classNames,\n        formatters: formatters,\n        labels: labels,\n        locale: locale,\n        modifiersClassNames: modifiersClassNames,\n        modifiers: modifiers,\n        numberOfMonths: numberOfMonths,\n        styles: styles,\n        today: today,\n        mode: 'default'\n    };\n}\n\n/** Return the `fromDate` and `toDate` prop values values parsing the DayPicker props. */\nfunction parseFromToProps(props) {\n    var fromYear = props.fromYear, toYear = props.toYear, fromMonth = props.fromMonth, toMonth = props.toMonth;\n    var fromDate = props.fromDate, toDate = props.toDate;\n    if (fromMonth) {\n        fromDate = startOfMonth(fromMonth);\n    }\n    else if (fromYear) {\n        fromDate = new Date(fromYear, 0, 1);\n    }\n    if (toMonth) {\n        toDate = endOfMonth(toMonth);\n    }\n    else if (toYear) {\n        toDate = new Date(toYear, 11, 31);\n    }\n    return {\n        fromDate: fromDate ? startOfDay(fromDate) : undefined,\n        toDate: toDate ? startOfDay(toDate) : undefined\n    };\n}\n\n/**\n * The DayPicker context shares the props passed to DayPicker within internal\n * and custom components. It is used to set the default values and perform\n * one-time calculations required to render the days.\n *\n * Access to this context from the {@link useDayPicker} hook.\n */\nvar DayPickerContext = createContext(undefined);\n/**\n * The provider for the {@link DayPickerContext}, assigning the defaults from the\n * initial DayPicker props.\n */\nfunction DayPickerProvider(props) {\n    var _a;\n    var initialProps = props.initialProps;\n    var defaultContextValues = getDefaultContextValues();\n    var _b = parseFromToProps(initialProps), fromDate = _b.fromDate, toDate = _b.toDate;\n    var captionLayout = (_a = initialProps.captionLayout) !== null && _a !== void 0 ? _a : defaultContextValues.captionLayout;\n    if (captionLayout !== 'buttons' && (!fromDate || !toDate)) {\n        // When no from/to dates are set, the caption is always buttons\n        captionLayout = 'buttons';\n    }\n    var onSelect;\n    if (isDayPickerSingle(initialProps) ||\n        isDayPickerMultiple(initialProps) ||\n        isDayPickerRange(initialProps)) {\n        onSelect = initialProps.onSelect;\n    }\n    var value = __assign(__assign(__assign({}, defaultContextValues), initialProps), { captionLayout: captionLayout, classNames: __assign(__assign({}, defaultContextValues.classNames), initialProps.classNames), components: __assign({}, initialProps.components), formatters: __assign(__assign({}, defaultContextValues.formatters), initialProps.formatters), fromDate: fromDate, labels: __assign(__assign({}, defaultContextValues.labels), initialProps.labels), mode: initialProps.mode || defaultContextValues.mode, modifiers: __assign(__assign({}, defaultContextValues.modifiers), initialProps.modifiers), modifiersClassNames: __assign(__assign({}, defaultContextValues.modifiersClassNames), initialProps.modifiersClassNames), onSelect: onSelect, styles: __assign(__assign({}, defaultContextValues.styles), initialProps.styles), toDate: toDate });\n    return (jsx(DayPickerContext.Provider, { value: value, children: props.children }));\n}\n/**\n * Hook to access the {@link DayPickerContextValue}.\n *\n * Use the DayPicker context to access to the props passed to DayPicker inside\n * internal or custom components.\n */\nfunction useDayPicker() {\n    var context = useContext(DayPickerContext);\n    if (!context) {\n        throw new Error(\"useDayPicker must be used within a DayPickerProvider.\");\n    }\n    return context;\n}\n\n/** Render the caption for the displayed month. This component is used when `captionLayout=\"buttons\"`. */\nfunction CaptionLabel(props) {\n    var _a = useDayPicker(), locale = _a.locale, classNames = _a.classNames, styles = _a.styles, formatCaption = _a.formatters.formatCaption;\n    return (jsx(\"div\", { className: classNames.caption_label, style: styles.caption_label, \"aria-live\": \"polite\", role: \"presentation\", id: props.id, children: formatCaption(props.displayMonth, { locale: locale }) }));\n}\n\n/**\n * Render the icon in the styled drop-down.\n */\nfunction IconDropdown(props) {\n    return (jsx(\"svg\", __assign({ width: \"8px\", height: \"8px\", viewBox: \"0 0 120 120\", \"data-testid\": \"iconDropdown\" }, props, { children: jsx(\"path\", { d: \"M4.22182541,48.2218254 C8.44222828,44.0014225 15.2388494,43.9273804 19.5496459,47.9996989 L19.7781746,48.2218254 L60,88.443 L100.221825,48.2218254 C104.442228,44.0014225 111.238849,43.9273804 115.549646,47.9996989 L115.778175,48.2218254 C119.998577,52.4422283 120.07262,59.2388494 116.000301,63.5496459 L115.778175,63.7781746 L67.7781746,111.778175 C63.5577717,115.998577 56.7611506,116.07262 52.4503541,112.000301 L52.2218254,111.778175 L4.22182541,63.7781746 C-0.0739418023,59.4824074 -0.0739418023,52.5175926 4.22182541,48.2218254 Z\", fill: \"currentColor\", fillRule: \"nonzero\" }) })));\n}\n\n/**\n * Render a styled select component – displaying a caption and a custom\n * drop-down icon.\n */\nfunction Dropdown(props) {\n    var _a, _b;\n    var onChange = props.onChange, value = props.value, children = props.children, caption = props.caption, className = props.className, style = props.style;\n    var dayPicker = useDayPicker();\n    var IconDropdownComponent = (_b = (_a = dayPicker.components) === null || _a === void 0 ? void 0 : _a.IconDropdown) !== null && _b !== void 0 ? _b : IconDropdown;\n    return (jsxs(\"div\", { className: className, style: style, children: [jsx(\"span\", { className: dayPicker.classNames.vhidden, children: props['aria-label'] }), jsx(\"select\", { name: props.name, \"aria-label\": props['aria-label'], className: dayPicker.classNames.dropdown, style: dayPicker.styles.dropdown, value: value, onChange: onChange, children: children }), jsxs(\"div\", { className: dayPicker.classNames.caption_label, style: dayPicker.styles.caption_label, \"aria-hidden\": \"true\", children: [caption, jsx(IconDropdownComponent, { className: dayPicker.classNames.dropdown_icon, style: dayPicker.styles.dropdown_icon })] })] }));\n}\n\n/** Render the dropdown to navigate between months. */\nfunction MonthsDropdown(props) {\n    var _a;\n    var _b = useDayPicker(), fromDate = _b.fromDate, toDate = _b.toDate, styles = _b.styles, locale = _b.locale, formatMonthCaption = _b.formatters.formatMonthCaption, classNames = _b.classNames, components = _b.components, labelMonthDropdown = _b.labels.labelMonthDropdown;\n    // Dropdown should appear only when both from/toDate is set\n    if (!fromDate)\n        return jsx(Fragment, {});\n    if (!toDate)\n        return jsx(Fragment, {});\n    var dropdownMonths = [];\n    if (isSameYear(fromDate, toDate)) {\n        // only display the months included in the range\n        var date = startOfMonth(fromDate);\n        for (var month = fromDate.getMonth(); month <= toDate.getMonth(); month++) {\n            dropdownMonths.push(setMonth(date, month));\n        }\n    }\n    else {\n        // display all the 12 months\n        var date = startOfMonth(new Date()); // Any date should be OK, as we just need the year\n        for (var month = 0; month <= 11; month++) {\n            dropdownMonths.push(setMonth(date, month));\n        }\n    }\n    var handleChange = function (e) {\n        var selectedMonth = Number(e.target.value);\n        var newMonth = setMonth(startOfMonth(props.displayMonth), selectedMonth);\n        props.onChange(newMonth);\n    };\n    var DropdownComponent = (_a = components === null || components === void 0 ? void 0 : components.Dropdown) !== null && _a !== void 0 ? _a : Dropdown;\n    return (jsx(DropdownComponent, { name: \"months\", \"aria-label\": labelMonthDropdown(), className: classNames.dropdown_month, style: styles.dropdown_month, onChange: handleChange, value: props.displayMonth.getMonth(), caption: formatMonthCaption(props.displayMonth, { locale: locale }), children: dropdownMonths.map(function (m) { return (jsx(\"option\", { value: m.getMonth(), children: formatMonthCaption(m, { locale: locale }) }, m.getMonth())); }) }));\n}\n\n/**\n * Render a dropdown to change the year. Take in account the `nav.fromDate` and\n * `toDate` from context.\n */\nfunction YearsDropdown(props) {\n    var _a;\n    var displayMonth = props.displayMonth;\n    var _b = useDayPicker(), fromDate = _b.fromDate, toDate = _b.toDate, locale = _b.locale, styles = _b.styles, classNames = _b.classNames, components = _b.components, formatYearCaption = _b.formatters.formatYearCaption, labelYearDropdown = _b.labels.labelYearDropdown;\n    var years = [];\n    // Dropdown should appear only when both from/toDate is set\n    if (!fromDate)\n        return jsx(Fragment, {});\n    if (!toDate)\n        return jsx(Fragment, {});\n    var fromYear = fromDate.getFullYear();\n    var toYear = toDate.getFullYear();\n    for (var year = fromYear; year <= toYear; year++) {\n        years.push(setYear(startOfYear(new Date()), year));\n    }\n    var handleChange = function (e) {\n        var newMonth = setYear(startOfMonth(displayMonth), Number(e.target.value));\n        props.onChange(newMonth);\n    };\n    var DropdownComponent = (_a = components === null || components === void 0 ? void 0 : components.Dropdown) !== null && _a !== void 0 ? _a : Dropdown;\n    return (jsx(DropdownComponent, { name: \"years\", \"aria-label\": labelYearDropdown(), className: classNames.dropdown_year, style: styles.dropdown_year, onChange: handleChange, value: displayMonth.getFullYear(), caption: formatYearCaption(displayMonth, { locale: locale }), children: years.map(function (year) { return (jsx(\"option\", { value: year.getFullYear(), children: formatYearCaption(year, { locale: locale }) }, year.getFullYear())); }) }));\n}\n\n/**\n * Helper hook for using controlled/uncontrolled values from a component props.\n *\n * When the value is not controlled, pass `undefined` as `controlledValue` and\n * use the returned setter to update it.\n *\n * When the value is controlled, pass the controlled value as second\n * argument, which will be always returned as `value`.\n */\nfunction useControlledValue(defaultValue, controlledValue) {\n    var _a = useState(defaultValue), uncontrolledValue = _a[0], setValue = _a[1];\n    var value = controlledValue === undefined ? uncontrolledValue : controlledValue;\n    return [value, setValue];\n}\n\n/** Return the initial month according to the given options. */\nfunction getInitialMonth(context) {\n    var month = context.month, defaultMonth = context.defaultMonth, today = context.today;\n    var initialMonth = month || defaultMonth || today || new Date();\n    var toDate = context.toDate, fromDate = context.fromDate, _a = context.numberOfMonths, numberOfMonths = _a === void 0 ? 1 : _a;\n    // Fix the initialMonth if is after the to-date\n    if (toDate && differenceInCalendarMonths(toDate, initialMonth) < 0) {\n        var offset = -1 * (numberOfMonths - 1);\n        initialMonth = addMonths(toDate, offset);\n    }\n    // Fix the initialMonth if is before the from-date\n    if (fromDate && differenceInCalendarMonths(initialMonth, fromDate) < 0) {\n        initialMonth = fromDate;\n    }\n    return startOfMonth(initialMonth);\n}\n\n/** Controls the navigation state. */\nfunction useNavigationState() {\n    var context = useDayPicker();\n    var initialMonth = getInitialMonth(context);\n    var _a = useControlledValue(initialMonth, context.month), month = _a[0], setMonth = _a[1];\n    var goToMonth = function (date) {\n        var _a;\n        if (context.disableNavigation)\n            return;\n        var month = startOfMonth(date);\n        setMonth(month);\n        (_a = context.onMonthChange) === null || _a === void 0 ? void 0 : _a.call(context, month);\n    };\n    return [month, goToMonth];\n}\n\n/**\n * Return the months to display in the component according to the number of\n * months and the from/to date.\n */\nfunction getDisplayMonths(month, _a) {\n    var reverseMonths = _a.reverseMonths, numberOfMonths = _a.numberOfMonths;\n    var start = startOfMonth(month);\n    var end = startOfMonth(addMonths(start, numberOfMonths));\n    var monthsDiff = differenceInCalendarMonths(end, start);\n    var months = [];\n    for (var i = 0; i < monthsDiff; i++) {\n        var nextMonth = addMonths(start, i);\n        months.push(nextMonth);\n    }\n    if (reverseMonths)\n        months = months.reverse();\n    return months;\n}\n\n/**\n * Returns the next month the user can navigate to according to the given\n * options.\n *\n * Please note that the next month is not always the next calendar month:\n *\n * - if after the `toDate` range, is undefined;\n * - if the navigation is paged, is the number of months displayed ahead.\n *\n */\nfunction getNextMonth(startingMonth, options) {\n    if (options.disableNavigation) {\n        return undefined;\n    }\n    var toDate = options.toDate, pagedNavigation = options.pagedNavigation, _a = options.numberOfMonths, numberOfMonths = _a === void 0 ? 1 : _a;\n    var offset = pagedNavigation ? numberOfMonths : 1;\n    var month = startOfMonth(startingMonth);\n    if (!toDate) {\n        return addMonths(month, offset);\n    }\n    var monthsDiff = differenceInCalendarMonths(toDate, startingMonth);\n    if (monthsDiff < numberOfMonths) {\n        return undefined;\n    }\n    // Jump forward as the number of months when paged navigation\n    return addMonths(month, offset);\n}\n\n/**\n * Returns the next previous the user can navigate to, according to the given\n * options.\n *\n * Please note that the previous month is not always the previous calendar\n * month:\n *\n * - if before the `fromDate` date, is `undefined`;\n * - if the navigation is paged, is the number of months displayed before.\n *\n */\nfunction getPreviousMonth(startingMonth, options) {\n    if (options.disableNavigation) {\n        return undefined;\n    }\n    var fromDate = options.fromDate, pagedNavigation = options.pagedNavigation, _a = options.numberOfMonths, numberOfMonths = _a === void 0 ? 1 : _a;\n    var offset = pagedNavigation ? numberOfMonths : 1;\n    var month = startOfMonth(startingMonth);\n    if (!fromDate) {\n        return addMonths(month, -offset);\n    }\n    var monthsDiff = differenceInCalendarMonths(month, fromDate);\n    if (monthsDiff <= 0) {\n        return undefined;\n    }\n    // Jump back as the number of months when paged navigation\n    return addMonths(month, -offset);\n}\n\n/**\n * The Navigation context shares details and methods to navigate the months in DayPicker.\n * Access this context from the {@link useNavigation} hook.\n */\nvar NavigationContext = createContext(undefined);\n/** Provides the values for the {@link NavigationContext}. */\nfunction NavigationProvider(props) {\n    var dayPicker = useDayPicker();\n    var _a = useNavigationState(), currentMonth = _a[0], goToMonth = _a[1];\n    var displayMonths = getDisplayMonths(currentMonth, dayPicker);\n    var nextMonth = getNextMonth(currentMonth, dayPicker);\n    var previousMonth = getPreviousMonth(currentMonth, dayPicker);\n    var isDateDisplayed = function (date) {\n        return displayMonths.some(function (displayMonth) {\n            return isSameMonth(date, displayMonth);\n        });\n    };\n    var goToDate = function (date, refDate) {\n        if (isDateDisplayed(date)) {\n            return;\n        }\n        if (refDate && isBefore(date, refDate)) {\n            goToMonth(addMonths(date, 1 + dayPicker.numberOfMonths * -1));\n        }\n        else {\n            goToMonth(date);\n        }\n    };\n    var value = {\n        currentMonth: currentMonth,\n        displayMonths: displayMonths,\n        goToMonth: goToMonth,\n        goToDate: goToDate,\n        previousMonth: previousMonth,\n        nextMonth: nextMonth,\n        isDateDisplayed: isDateDisplayed\n    };\n    return (jsx(NavigationContext.Provider, { value: value, children: props.children }));\n}\n/**\n * Hook to access the {@link NavigationContextValue}. Use this hook to navigate\n * between months or years in DayPicker.\n *\n * This hook is meant to be used inside internal or custom components.\n */\nfunction useNavigation() {\n    var context = useContext(NavigationContext);\n    if (!context) {\n        throw new Error('useNavigation must be used within a NavigationProvider');\n    }\n    return context;\n}\n\n/**\n * Render a caption with the dropdowns to navigate between months and years.\n */\nfunction CaptionDropdowns(props) {\n    var _a;\n    var _b = useDayPicker(), classNames = _b.classNames, styles = _b.styles, components = _b.components;\n    var goToMonth = useNavigation().goToMonth;\n    var handleMonthChange = function (newMonth) {\n        goToMonth(addMonths(newMonth, props.displayIndex ? -props.displayIndex : 0));\n    };\n    var CaptionLabelComponent = (_a = components === null || components === void 0 ? void 0 : components.CaptionLabel) !== null && _a !== void 0 ? _a : CaptionLabel;\n    var captionLabel = (jsx(CaptionLabelComponent, { id: props.id, displayMonth: props.displayMonth }));\n    return (jsxs(\"div\", { className: classNames.caption_dropdowns, style: styles.caption_dropdowns, children: [jsx(\"div\", { className: classNames.vhidden, children: captionLabel }), jsx(MonthsDropdown, { onChange: handleMonthChange, displayMonth: props.displayMonth }), jsx(YearsDropdown, { onChange: handleMonthChange, displayMonth: props.displayMonth })] }));\n}\n\n/**\n * Render the \"previous month\" button in the navigation.\n */\nfunction IconLeft(props) {\n    return (jsx(\"svg\", __assign({ width: \"16px\", height: \"16px\", viewBox: \"0 0 120 120\" }, props, { children: jsx(\"path\", { d: \"M69.490332,3.34314575 C72.6145263,0.218951416 77.6798462,0.218951416 80.8040405,3.34314575 C83.8617626,6.40086786 83.9268205,11.3179931 80.9992143,14.4548388 L80.8040405,14.6568542 L35.461,60 L80.8040405,105.343146 C83.8617626,108.400868 83.9268205,113.317993 80.9992143,116.454839 L80.8040405,116.656854 C77.7463184,119.714576 72.8291931,119.779634 69.6923475,116.852028 L69.490332,116.656854 L18.490332,65.6568542 C15.4326099,62.5991321 15.367552,57.6820069 18.2951583,54.5451612 L18.490332,54.3431458 L69.490332,3.34314575 Z\", fill: \"currentColor\", fillRule: \"nonzero\" }) })));\n}\n\n/**\n * Render the \"next month\" button in the navigation.\n */\nfunction IconRight(props) {\n    return (jsx(\"svg\", __assign({ width: \"16px\", height: \"16px\", viewBox: \"0 0 120 120\" }, props, { children: jsx(\"path\", { d: \"M49.8040405,3.34314575 C46.6798462,0.218951416 41.6145263,0.218951416 38.490332,3.34314575 C35.4326099,6.40086786 35.367552,11.3179931 38.2951583,14.4548388 L38.490332,14.6568542 L83.8333725,60 L38.490332,105.343146 C35.4326099,108.400868 35.367552,113.317993 38.2951583,116.454839 L38.490332,116.656854 C41.5480541,119.714576 46.4651794,119.779634 49.602025,116.852028 L49.8040405,116.656854 L100.804041,65.6568542 C103.861763,62.5991321 103.926821,57.6820069 100.999214,54.5451612 L100.804041,54.3431458 L49.8040405,3.34314575 Z\", fill: \"currentColor\" }) })));\n}\n\n/** Render a button HTML element applying the reset class name. */\nvar Button = forwardRef(function (props, ref) {\n    var _a = useDayPicker(), classNames = _a.classNames, styles = _a.styles;\n    var classNamesArr = [classNames.button_reset, classNames.button];\n    if (props.className) {\n        classNamesArr.push(props.className);\n    }\n    var className = classNamesArr.join(' ');\n    var style = __assign(__assign({}, styles.button_reset), styles.button);\n    if (props.style) {\n        Object.assign(style, props.style);\n    }\n    return (jsx(\"button\", __assign({}, props, { ref: ref, type: \"button\", className: className, style: style })));\n});\n\n/** A component rendering the navigation buttons or the drop-downs. */\nfunction Navigation(props) {\n    var _a, _b;\n    var _c = useDayPicker(), dir = _c.dir, locale = _c.locale, classNames = _c.classNames, styles = _c.styles, _d = _c.labels, labelPrevious = _d.labelPrevious, labelNext = _d.labelNext, components = _c.components;\n    if (!props.nextMonth && !props.previousMonth) {\n        return jsx(Fragment, {});\n    }\n    var previousLabel = labelPrevious(props.previousMonth, { locale: locale });\n    var previousClassName = [\n        classNames.nav_button,\n        classNames.nav_button_previous\n    ].join(' ');\n    var nextLabel = labelNext(props.nextMonth, { locale: locale });\n    var nextClassName = [\n        classNames.nav_button,\n        classNames.nav_button_next\n    ].join(' ');\n    var IconRightComponent = (_a = components === null || components === void 0 ? void 0 : components.IconRight) !== null && _a !== void 0 ? _a : IconRight;\n    var IconLeftComponent = (_b = components === null || components === void 0 ? void 0 : components.IconLeft) !== null && _b !== void 0 ? _b : IconLeft;\n    return (jsxs(\"div\", { className: classNames.nav, style: styles.nav, children: [!props.hidePrevious && (jsx(Button, { name: \"previous-month\", \"aria-label\": previousLabel, className: previousClassName, style: styles.nav_button_previous, disabled: !props.previousMonth, onClick: props.onPreviousClick, children: dir === 'rtl' ? (jsx(IconRightComponent, { className: classNames.nav_icon, style: styles.nav_icon })) : (jsx(IconLeftComponent, { className: classNames.nav_icon, style: styles.nav_icon })) })), !props.hideNext && (jsx(Button, { name: \"next-month\", \"aria-label\": nextLabel, className: nextClassName, style: styles.nav_button_next, disabled: !props.nextMonth, onClick: props.onNextClick, children: dir === 'rtl' ? (jsx(IconLeftComponent, { className: classNames.nav_icon, style: styles.nav_icon })) : (jsx(IconRightComponent, { className: classNames.nav_icon, style: styles.nav_icon })) }))] }));\n}\n\n/**\n * Render a caption with a button-based navigation.\n */\nfunction CaptionNavigation(props) {\n    var numberOfMonths = useDayPicker().numberOfMonths;\n    var _a = useNavigation(), previousMonth = _a.previousMonth, nextMonth = _a.nextMonth, goToMonth = _a.goToMonth, displayMonths = _a.displayMonths;\n    var displayIndex = displayMonths.findIndex(function (month) {\n        return isSameMonth(props.displayMonth, month);\n    });\n    var isFirst = displayIndex === 0;\n    var isLast = displayIndex === displayMonths.length - 1;\n    var hideNext = numberOfMonths > 1 && (isFirst || !isLast);\n    var hidePrevious = numberOfMonths > 1 && (isLast || !isFirst);\n    var handlePreviousClick = function () {\n        if (!previousMonth)\n            return;\n        goToMonth(previousMonth);\n    };\n    var handleNextClick = function () {\n        if (!nextMonth)\n            return;\n        goToMonth(nextMonth);\n    };\n    return (jsx(Navigation, { displayMonth: props.displayMonth, hideNext: hideNext, hidePrevious: hidePrevious, nextMonth: nextMonth, previousMonth: previousMonth, onPreviousClick: handlePreviousClick, onNextClick: handleNextClick }));\n}\n\n/**\n * Render the caption of a month. The caption has a different layout when\n * setting the {@link DayPickerBase.captionLayout} prop.\n */\nfunction Caption(props) {\n    var _a;\n    var _b = useDayPicker(), classNames = _b.classNames, disableNavigation = _b.disableNavigation, styles = _b.styles, captionLayout = _b.captionLayout, components = _b.components;\n    var CaptionLabelComponent = (_a = components === null || components === void 0 ? void 0 : components.CaptionLabel) !== null && _a !== void 0 ? _a : CaptionLabel;\n    var caption;\n    if (disableNavigation) {\n        caption = (jsx(CaptionLabelComponent, { id: props.id, displayMonth: props.displayMonth }));\n    }\n    else if (captionLayout === 'dropdown') {\n        caption = (jsx(CaptionDropdowns, { displayMonth: props.displayMonth, id: props.id }));\n    }\n    else if (captionLayout === 'dropdown-buttons') {\n        caption = (jsxs(Fragment, { children: [jsx(CaptionDropdowns, { displayMonth: props.displayMonth, displayIndex: props.displayIndex, id: props.id }), jsx(CaptionNavigation, { displayMonth: props.displayMonth, displayIndex: props.displayIndex, id: props.id })] }));\n    }\n    else {\n        caption = (jsxs(Fragment, { children: [jsx(CaptionLabelComponent, { id: props.id, displayMonth: props.displayMonth, displayIndex: props.displayIndex }), jsx(CaptionNavigation, { displayMonth: props.displayMonth, id: props.id })] }));\n    }\n    return (jsx(\"div\", { className: classNames.caption, style: styles.caption, children: caption }));\n}\n\n/** Render the Footer component (empty as default).*/\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nfunction Footer(props) {\n    var _a = useDayPicker(), footer = _a.footer, styles = _a.styles, tfoot = _a.classNames.tfoot;\n    if (!footer)\n        return jsx(Fragment, {});\n    return (jsx(\"tfoot\", { className: tfoot, style: styles.tfoot, children: jsx(\"tr\", { children: jsx(\"td\", { colSpan: 8, children: footer }) }) }));\n}\n\n/**\n * Generate a series of 7 days, starting from the week, to use for formatting\n * the weekday names (Monday, Tuesday, etc.).\n */\nfunction getWeekdays(locale, \n/** The index of the first day of the week (0 - Sunday). */\nweekStartsOn, \n/** Use ISOWeek instead of locale/ */\nISOWeek) {\n    var start = ISOWeek\n        ? startOfISOWeek(new Date())\n        : startOfWeek(new Date(), { locale: locale, weekStartsOn: weekStartsOn });\n    var days = [];\n    for (var i = 0; i < 7; i++) {\n        var day = addDays(start, i);\n        days.push(day);\n    }\n    return days;\n}\n\n/**\n * Render the HeadRow component - i.e. the table head row with the weekday names.\n */\nfunction HeadRow() {\n    var _a = useDayPicker(), classNames = _a.classNames, styles = _a.styles, showWeekNumber = _a.showWeekNumber, locale = _a.locale, weekStartsOn = _a.weekStartsOn, ISOWeek = _a.ISOWeek, formatWeekdayName = _a.formatters.formatWeekdayName, labelWeekday = _a.labels.labelWeekday;\n    var weekdays = getWeekdays(locale, weekStartsOn, ISOWeek);\n    return (jsxs(\"tr\", { style: styles.head_row, className: classNames.head_row, children: [showWeekNumber && (jsx(\"td\", { style: styles.head_cell, className: classNames.head_cell })), weekdays.map(function (weekday, i) { return (jsx(\"th\", { scope: \"col\", className: classNames.head_cell, style: styles.head_cell, \"aria-label\": labelWeekday(weekday, { locale: locale }), children: formatWeekdayName(weekday, { locale: locale }) }, i)); })] }));\n}\n\n/** Render the table head. */\nfunction Head() {\n    var _a;\n    var _b = useDayPicker(), classNames = _b.classNames, styles = _b.styles, components = _b.components;\n    var HeadRowComponent = (_a = components === null || components === void 0 ? void 0 : components.HeadRow) !== null && _a !== void 0 ? _a : HeadRow;\n    return (jsx(\"thead\", { style: styles.head, className: classNames.head, children: jsx(HeadRowComponent, {}) }));\n}\n\n/** Render the content of the day cell. */\nfunction DayContent(props) {\n    var _a = useDayPicker(), locale = _a.locale, formatDay = _a.formatters.formatDay;\n    return jsx(Fragment, { children: formatDay(props.date, { locale: locale }) });\n}\n\n/**\n * The SelectMultiple context shares details about the selected days when in\n * multiple selection mode.\n *\n * Access this context from the {@link useSelectMultiple} hook.\n */\nvar SelectMultipleContext = createContext(undefined);\n/** Provides the values for the {@link SelectMultipleContext}. */\nfunction SelectMultipleProvider(props) {\n    if (!isDayPickerMultiple(props.initialProps)) {\n        var emptyContextValue = {\n            selected: undefined,\n            modifiers: {\n                disabled: []\n            }\n        };\n        return (jsx(SelectMultipleContext.Provider, { value: emptyContextValue, children: props.children }));\n    }\n    return (jsx(SelectMultipleProviderInternal, { initialProps: props.initialProps, children: props.children }));\n}\nfunction SelectMultipleProviderInternal(_a) {\n    var initialProps = _a.initialProps, children = _a.children;\n    var selected = initialProps.selected, min = initialProps.min, max = initialProps.max;\n    var onDayClick = function (day, activeModifiers, e) {\n        var _a, _b;\n        (_a = initialProps.onDayClick) === null || _a === void 0 ? void 0 : _a.call(initialProps, day, activeModifiers, e);\n        var isMinSelected = Boolean(activeModifiers.selected && min && (selected === null || selected === void 0 ? void 0 : selected.length) === min);\n        if (isMinSelected) {\n            return;\n        }\n        var isMaxSelected = Boolean(!activeModifiers.selected && max && (selected === null || selected === void 0 ? void 0 : selected.length) === max);\n        if (isMaxSelected) {\n            return;\n        }\n        var selectedDays = selected ? __spreadArray([], selected, true) : [];\n        if (activeModifiers.selected) {\n            var index = selectedDays.findIndex(function (selectedDay) {\n                return isSameDay(day, selectedDay);\n            });\n            selectedDays.splice(index, 1);\n        }\n        else {\n            selectedDays.push(day);\n        }\n        (_b = initialProps.onSelect) === null || _b === void 0 ? void 0 : _b.call(initialProps, selectedDays, day, activeModifiers, e);\n    };\n    var modifiers = {\n        disabled: []\n    };\n    if (selected) {\n        modifiers.disabled.push(function (day) {\n            var isMaxSelected = max && selected.length > max - 1;\n            var isSelected = selected.some(function (selectedDay) {\n                return isSameDay(selectedDay, day);\n            });\n            return Boolean(isMaxSelected && !isSelected);\n        });\n    }\n    var contextValue = {\n        selected: selected,\n        onDayClick: onDayClick,\n        modifiers: modifiers\n    };\n    return (jsx(SelectMultipleContext.Provider, { value: contextValue, children: children }));\n}\n/**\n * Hook to access the {@link SelectMultipleContextValue}.\n *\n * This hook is meant to be used inside internal or custom components.\n */\nfunction useSelectMultiple() {\n    var context = useContext(SelectMultipleContext);\n    if (!context) {\n        throw new Error('useSelectMultiple must be used within a SelectMultipleProvider');\n    }\n    return context;\n}\n\n/**\n * Add a day to an existing range.\n *\n * The returned range takes in account the `undefined` values and if the added\n * day is already present in the range.\n */\nfunction addToRange(day, range) {\n    var _a = range || {}, from = _a.from, to = _a.to;\n    if (from && to) {\n        if (isSameDay(to, day) && isSameDay(from, day)) {\n            return undefined;\n        }\n        if (isSameDay(to, day)) {\n            return { from: to, to: undefined };\n        }\n        if (isSameDay(from, day)) {\n            return undefined;\n        }\n        if (isAfter(from, day)) {\n            return { from: day, to: to };\n        }\n        return { from: from, to: day };\n    }\n    if (to) {\n        if (isAfter(day, to)) {\n            return { from: to, to: day };\n        }\n        return { from: day, to: to };\n    }\n    if (from) {\n        if (isBefore(day, from)) {\n            return { from: day, to: from };\n        }\n        return { from: from, to: day };\n    }\n    return { from: day, to: undefined };\n}\n\n/**\n * The SelectRange context shares details about the selected days when in\n * range selection mode.\n *\n * Access this context from the {@link useSelectRange} hook.\n */\nvar SelectRangeContext = createContext(undefined);\n/** Provides the values for the {@link SelectRangeProvider}. */\nfunction SelectRangeProvider(props) {\n    if (!isDayPickerRange(props.initialProps)) {\n        var emptyContextValue = {\n            selected: undefined,\n            modifiers: {\n                range_start: [],\n                range_end: [],\n                range_middle: [],\n                disabled: []\n            }\n        };\n        return (jsx(SelectRangeContext.Provider, { value: emptyContextValue, children: props.children }));\n    }\n    return (jsx(SelectRangeProviderInternal, { initialProps: props.initialProps, children: props.children }));\n}\nfunction SelectRangeProviderInternal(_a) {\n    var initialProps = _a.initialProps, children = _a.children;\n    var selected = initialProps.selected;\n    var _b = selected || {}, selectedFrom = _b.from, selectedTo = _b.to;\n    var min = initialProps.min;\n    var max = initialProps.max;\n    var onDayClick = function (day, activeModifiers, e) {\n        var _a, _b;\n        (_a = initialProps.onDayClick) === null || _a === void 0 ? void 0 : _a.call(initialProps, day, activeModifiers, e);\n        var newRange = addToRange(day, selected);\n        (_b = initialProps.onSelect) === null || _b === void 0 ? void 0 : _b.call(initialProps, newRange, day, activeModifiers, e);\n    };\n    var modifiers = {\n        range_start: [],\n        range_end: [],\n        range_middle: [],\n        disabled: []\n    };\n    if (selectedFrom) {\n        modifiers.range_start = [selectedFrom];\n        if (!selectedTo) {\n            modifiers.range_end = [selectedFrom];\n        }\n        else {\n            modifiers.range_end = [selectedTo];\n            if (!isSameDay(selectedFrom, selectedTo)) {\n                modifiers.range_middle = [\n                    {\n                        after: selectedFrom,\n                        before: selectedTo\n                    }\n                ];\n            }\n        }\n    }\n    else if (selectedTo) {\n        modifiers.range_start = [selectedTo];\n        modifiers.range_end = [selectedTo];\n    }\n    if (min) {\n        if (selectedFrom && !selectedTo) {\n            modifiers.disabled.push({\n                after: subDays(selectedFrom, min - 1),\n                before: addDays(selectedFrom, min - 1)\n            });\n        }\n        if (selectedFrom && selectedTo) {\n            modifiers.disabled.push({\n                after: selectedFrom,\n                before: addDays(selectedFrom, min - 1)\n            });\n        }\n        if (!selectedFrom && selectedTo) {\n            modifiers.disabled.push({\n                after: subDays(selectedTo, min - 1),\n                before: addDays(selectedTo, min - 1)\n            });\n        }\n    }\n    if (max) {\n        if (selectedFrom && !selectedTo) {\n            modifiers.disabled.push({\n                before: addDays(selectedFrom, -max + 1)\n            });\n            modifiers.disabled.push({\n                after: addDays(selectedFrom, max - 1)\n            });\n        }\n        if (selectedFrom && selectedTo) {\n            var selectedCount = differenceInCalendarDays(selectedTo, selectedFrom) + 1;\n            var offset = max - selectedCount;\n            modifiers.disabled.push({\n                before: subDays(selectedFrom, offset)\n            });\n            modifiers.disabled.push({\n                after: addDays(selectedTo, offset)\n            });\n        }\n        if (!selectedFrom && selectedTo) {\n            modifiers.disabled.push({\n                before: addDays(selectedTo, -max + 1)\n            });\n            modifiers.disabled.push({\n                after: addDays(selectedTo, max - 1)\n            });\n        }\n    }\n    return (jsx(SelectRangeContext.Provider, { value: { selected: selected, onDayClick: onDayClick, modifiers: modifiers }, children: children }));\n}\n/**\n * Hook to access the {@link SelectRangeContextValue}.\n *\n * This hook is meant to be used inside internal or custom components.\n */\nfunction useSelectRange() {\n    var context = useContext(SelectRangeContext);\n    if (!context) {\n        throw new Error('useSelectRange must be used within a SelectRangeProvider');\n    }\n    return context;\n}\n\n/** Normalize to array a matcher input. */\nfunction matcherToArray(matcher) {\n    if (Array.isArray(matcher)) {\n        return __spreadArray([], matcher, true);\n    }\n    else if (matcher !== undefined) {\n        return [matcher];\n    }\n    else {\n        return [];\n    }\n}\n\n/** Create CustomModifiers from dayModifiers */\nfunction getCustomModifiers(dayModifiers) {\n    var customModifiers = {};\n    Object.entries(dayModifiers).forEach(function (_a) {\n        var modifier = _a[0], matcher = _a[1];\n        customModifiers[modifier] = matcherToArray(matcher);\n    });\n    return customModifiers;\n}\n\n/** The name of the modifiers that are used internally by DayPicker. */\nvar InternalModifier;\n(function (InternalModifier) {\n    InternalModifier[\"Outside\"] = \"outside\";\n    /** Name of the modifier applied to the disabled days, using the `disabled` prop. */\n    InternalModifier[\"Disabled\"] = \"disabled\";\n    /** Name of the modifier applied to the selected days using the `selected` prop). */\n    InternalModifier[\"Selected\"] = \"selected\";\n    /** Name of the modifier applied to the hidden days using the `hidden` prop). */\n    InternalModifier[\"Hidden\"] = \"hidden\";\n    /** Name of the modifier applied to the day specified using the `today` prop). */\n    InternalModifier[\"Today\"] = \"today\";\n    /** The modifier applied to the day starting a selected range, when in range selection mode.  */\n    InternalModifier[\"RangeStart\"] = \"range_start\";\n    /** The modifier applied to the day ending a selected range, when in range selection mode.  */\n    InternalModifier[\"RangeEnd\"] = \"range_end\";\n    /** The modifier applied to the days between the start and the end of a selected range, when in range selection mode.  */\n    InternalModifier[\"RangeMiddle\"] = \"range_middle\";\n})(InternalModifier || (InternalModifier = {}));\n\nvar Selected = InternalModifier.Selected, Disabled = InternalModifier.Disabled, Hidden = InternalModifier.Hidden, Today = InternalModifier.Today, RangeEnd = InternalModifier.RangeEnd, RangeMiddle = InternalModifier.RangeMiddle, RangeStart = InternalModifier.RangeStart, Outside = InternalModifier.Outside;\n/** Return the {@link InternalModifiers} from the DayPicker and select contexts. */\nfunction getInternalModifiers(dayPicker, selectMultiple, selectRange) {\n    var _a;\n    var internalModifiers = (_a = {},\n        _a[Selected] = matcherToArray(dayPicker.selected),\n        _a[Disabled] = matcherToArray(dayPicker.disabled),\n        _a[Hidden] = matcherToArray(dayPicker.hidden),\n        _a[Today] = [dayPicker.today],\n        _a[RangeEnd] = [],\n        _a[RangeMiddle] = [],\n        _a[RangeStart] = [],\n        _a[Outside] = [],\n        _a);\n    if (dayPicker.fromDate) {\n        internalModifiers[Disabled].push({ before: dayPicker.fromDate });\n    }\n    if (dayPicker.toDate) {\n        internalModifiers[Disabled].push({ after: dayPicker.toDate });\n    }\n    if (isDayPickerMultiple(dayPicker)) {\n        internalModifiers[Disabled] = internalModifiers[Disabled].concat(selectMultiple.modifiers[Disabled]);\n    }\n    else if (isDayPickerRange(dayPicker)) {\n        internalModifiers[Disabled] = internalModifiers[Disabled].concat(selectRange.modifiers[Disabled]);\n        internalModifiers[RangeStart] = selectRange.modifiers[RangeStart];\n        internalModifiers[RangeMiddle] = selectRange.modifiers[RangeMiddle];\n        internalModifiers[RangeEnd] = selectRange.modifiers[RangeEnd];\n    }\n    return internalModifiers;\n}\n\n/** The Modifiers context store the modifiers used in DayPicker. To access the value of this context, use {@link useModifiers}. */\nvar ModifiersContext = createContext(undefined);\n/** Provide the value for the {@link ModifiersContext}. */\nfunction ModifiersProvider(props) {\n    var dayPicker = useDayPicker();\n    var selectMultiple = useSelectMultiple();\n    var selectRange = useSelectRange();\n    var internalModifiers = getInternalModifiers(dayPicker, selectMultiple, selectRange);\n    var customModifiers = getCustomModifiers(dayPicker.modifiers);\n    var modifiers = __assign(__assign({}, internalModifiers), customModifiers);\n    return (jsx(ModifiersContext.Provider, { value: modifiers, children: props.children }));\n}\n/**\n * Return the modifiers used by DayPicker.\n *\n * This hook is meant to be used inside internal or custom components.\n * Requires to be wrapped into {@link ModifiersProvider}.\n *\n */\nfunction useModifiers() {\n    var context = useContext(ModifiersContext);\n    if (!context) {\n        throw new Error('useModifiers must be used within a ModifiersProvider');\n    }\n    return context;\n}\n\n/** Returns true if `matcher` is of type {@link DateInterval}. */\nfunction isDateInterval(matcher) {\n    return Boolean(matcher &&\n        typeof matcher === 'object' &&\n        'before' in matcher &&\n        'after' in matcher);\n}\n/** Returns true if `value` is a {@link DateRange} type. */\nfunction isDateRange(value) {\n    return Boolean(value && typeof value === 'object' && 'from' in value);\n}\n/** Returns true if `value` is of type {@link DateAfter}. */\nfunction isDateAfterType(value) {\n    return Boolean(value && typeof value === 'object' && 'after' in value);\n}\n/** Returns true if `value` is of type {@link DateBefore}. */\nfunction isDateBeforeType(value) {\n    return Boolean(value && typeof value === 'object' && 'before' in value);\n}\n/** Returns true if `value` is a {@link DayOfWeek} type. */\nfunction isDayOfWeekType(value) {\n    return Boolean(value && typeof value === 'object' && 'dayOfWeek' in value);\n}\n\n/** Return `true` whether `date` is inside `range`. */\nfunction isDateInRange(date, range) {\n    var _a;\n    var from = range.from, to = range.to;\n    if (from && to) {\n        var isRangeInverted = differenceInCalendarDays(to, from) < 0;\n        if (isRangeInverted) {\n            _a = [to, from], from = _a[0], to = _a[1];\n        }\n        var isInRange = differenceInCalendarDays(date, from) >= 0 &&\n            differenceInCalendarDays(to, date) >= 0;\n        return isInRange;\n    }\n    if (to) {\n        return isSameDay(to, date);\n    }\n    if (from) {\n        return isSameDay(from, date);\n    }\n    return false;\n}\n\n/** Returns true if `value` is a Date type. */\nfunction isDateType(value) {\n    return isDate(value);\n}\n/** Returns true if `value` is an array of valid dates. */\nfunction isArrayOfDates(value) {\n    return Array.isArray(value) && value.every(isDate);\n}\n/**\n * Returns whether a day matches against at least one of the given Matchers.\n *\n * ```\n * const day = new Date(2022, 5, 19);\n * const matcher1: DateRange = {\n *    from: new Date(2021, 12, 21),\n *    to: new Date(2021, 12, 30)\n * }\n * const matcher2: DateRange = {\n *    from: new Date(2022, 5, 1),\n *    to: new Date(2022, 5, 23)\n * }\n *\n * const isMatch(day, [matcher1, matcher2]); // true, since day is in the matcher1 range.\n * ```\n * */\nfunction isMatch(day, matchers) {\n    return matchers.some(function (matcher) {\n        if (typeof matcher === 'boolean') {\n            return matcher;\n        }\n        if (isDateType(matcher)) {\n            return isSameDay(day, matcher);\n        }\n        if (isArrayOfDates(matcher)) {\n            return matcher.includes(day);\n        }\n        if (isDateRange(matcher)) {\n            return isDateInRange(day, matcher);\n        }\n        if (isDayOfWeekType(matcher)) {\n            return matcher.dayOfWeek.includes(day.getDay());\n        }\n        if (isDateInterval(matcher)) {\n            var diffBefore = differenceInCalendarDays(matcher.before, day);\n            var diffAfter = differenceInCalendarDays(matcher.after, day);\n            var isDayBefore = diffBefore > 0;\n            var isDayAfter = diffAfter < 0;\n            var isClosedInterval = isAfter(matcher.before, matcher.after);\n            if (isClosedInterval) {\n                return isDayAfter && isDayBefore;\n            }\n            else {\n                return isDayBefore || isDayAfter;\n            }\n        }\n        if (isDateAfterType(matcher)) {\n            return differenceInCalendarDays(day, matcher.after) > 0;\n        }\n        if (isDateBeforeType(matcher)) {\n            return differenceInCalendarDays(matcher.before, day) > 0;\n        }\n        if (typeof matcher === 'function') {\n            return matcher(day);\n        }\n        return false;\n    });\n}\n\n/** Return the active modifiers for the given day. */\nfunction getActiveModifiers(day, \n/** The modifiers to match for the given date. */\nmodifiers, \n/** The month where the day is displayed, to add the \"outside\" modifiers.  */\ndisplayMonth) {\n    var matchedModifiers = Object.keys(modifiers).reduce(function (result, key) {\n        var modifier = modifiers[key];\n        if (isMatch(day, modifier)) {\n            result.push(key);\n        }\n        return result;\n    }, []);\n    var activeModifiers = {};\n    matchedModifiers.forEach(function (modifier) { return (activeModifiers[modifier] = true); });\n    if (displayMonth && !isSameMonth(day, displayMonth)) {\n        activeModifiers.outside = true;\n    }\n    return activeModifiers;\n}\n\n/**\n * Returns the day that should be the target of the focus when DayPicker is\n * rendered the first time.\n *\n * TODO: this function doesn't consider if the day is outside the month. We\n * implemented this check in `useDayRender` but it should probably go here. See\n * https://github.com/gpbl/react-day-picker/pull/1576\n */\nfunction getInitialFocusTarget(displayMonths, modifiers) {\n    var firstDayInMonth = startOfMonth(displayMonths[0]);\n    var lastDayInMonth = endOfMonth(displayMonths[displayMonths.length - 1]);\n    // TODO: cleanup code\n    var firstFocusableDay;\n    var today;\n    var date = firstDayInMonth;\n    while (date <= lastDayInMonth) {\n        var activeModifiers = getActiveModifiers(date, modifiers);\n        var isFocusable = !activeModifiers.disabled && !activeModifiers.hidden;\n        if (!isFocusable) {\n            date = addDays(date, 1);\n            continue;\n        }\n        if (activeModifiers.selected) {\n            return date;\n        }\n        if (activeModifiers.today && !today) {\n            today = date;\n        }\n        if (!firstFocusableDay) {\n            firstFocusableDay = date;\n        }\n        date = addDays(date, 1);\n    }\n    if (today) {\n        return today;\n    }\n    else {\n        return firstFocusableDay;\n    }\n}\n\nvar MAX_RETRY = 365;\n/** Return the next date to be focused. */\nfunction getNextFocus(focusedDay, options) {\n    var moveBy = options.moveBy, direction = options.direction, context = options.context, modifiers = options.modifiers, _a = options.retry, retry = _a === void 0 ? { count: 0, lastFocused: focusedDay } : _a;\n    var weekStartsOn = context.weekStartsOn, fromDate = context.fromDate, toDate = context.toDate, locale = context.locale;\n    var moveFns = {\n        day: addDays,\n        week: addWeeks,\n        month: addMonths,\n        year: addYears,\n        startOfWeek: function (date) {\n            return context.ISOWeek\n                ? startOfISOWeek(date)\n                : startOfWeek(date, { locale: locale, weekStartsOn: weekStartsOn });\n        },\n        endOfWeek: function (date) {\n            return context.ISOWeek\n                ? endOfISOWeek(date)\n                : endOfWeek(date, { locale: locale, weekStartsOn: weekStartsOn });\n        }\n    };\n    var newFocusedDay = moveFns[moveBy](focusedDay, direction === 'after' ? 1 : -1);\n    if (direction === 'before' && fromDate) {\n        newFocusedDay = max([fromDate, newFocusedDay]);\n    }\n    else if (direction === 'after' && toDate) {\n        newFocusedDay = min([toDate, newFocusedDay]);\n    }\n    var isFocusable = true;\n    if (modifiers) {\n        var activeModifiers = getActiveModifiers(newFocusedDay, modifiers);\n        isFocusable = !activeModifiers.disabled && !activeModifiers.hidden;\n    }\n    if (isFocusable) {\n        return newFocusedDay;\n    }\n    else {\n        if (retry.count > MAX_RETRY) {\n            return retry.lastFocused;\n        }\n        return getNextFocus(newFocusedDay, {\n            moveBy: moveBy,\n            direction: direction,\n            context: context,\n            modifiers: modifiers,\n            retry: __assign(__assign({}, retry), { count: retry.count + 1 })\n        });\n    }\n}\n\n/**\n * The Focus context shares details about the focused day for the keyboard\n *\n * Access this context from the {@link useFocusContext} hook.\n */\nvar FocusContext = createContext(undefined);\n/** The provider for the {@link FocusContext}. */\nfunction FocusProvider(props) {\n    var navigation = useNavigation();\n    var modifiers = useModifiers();\n    var _a = useState(), focusedDay = _a[0], setFocusedDay = _a[1];\n    var _b = useState(), lastFocused = _b[0], setLastFocused = _b[1];\n    var initialFocusTarget = getInitialFocusTarget(navigation.displayMonths, modifiers);\n    // TODO: cleanup and test obscure code below\n    var focusTarget = (focusedDay !== null && focusedDay !== void 0 ? focusedDay : (lastFocused && navigation.isDateDisplayed(lastFocused)))\n        ? lastFocused\n        : initialFocusTarget;\n    var blur = function () {\n        setLastFocused(focusedDay);\n        setFocusedDay(undefined);\n    };\n    var focus = function (date) {\n        setFocusedDay(date);\n    };\n    var context = useDayPicker();\n    var moveFocus = function (moveBy, direction) {\n        if (!focusedDay)\n            return;\n        var nextFocused = getNextFocus(focusedDay, {\n            moveBy: moveBy,\n            direction: direction,\n            context: context,\n            modifiers: modifiers\n        });\n        if (isSameDay(focusedDay, nextFocused))\n            return undefined;\n        navigation.goToDate(nextFocused, focusedDay);\n        focus(nextFocused);\n    };\n    var value = {\n        focusedDay: focusedDay,\n        focusTarget: focusTarget,\n        blur: blur,\n        focus: focus,\n        focusDayAfter: function () { return moveFocus('day', 'after'); },\n        focusDayBefore: function () { return moveFocus('day', 'before'); },\n        focusWeekAfter: function () { return moveFocus('week', 'after'); },\n        focusWeekBefore: function () { return moveFocus('week', 'before'); },\n        focusMonthBefore: function () { return moveFocus('month', 'before'); },\n        focusMonthAfter: function () { return moveFocus('month', 'after'); },\n        focusYearBefore: function () { return moveFocus('year', 'before'); },\n        focusYearAfter: function () { return moveFocus('year', 'after'); },\n        focusStartOfWeek: function () { return moveFocus('startOfWeek', 'before'); },\n        focusEndOfWeek: function () { return moveFocus('endOfWeek', 'after'); }\n    };\n    return (jsx(FocusContext.Provider, { value: value, children: props.children }));\n}\n/**\n * Hook to access the {@link FocusContextValue}. Use this hook to handle the\n * focus state of the elements.\n *\n * This hook is meant to be used inside internal or custom components.\n */\nfunction useFocusContext() {\n    var context = useContext(FocusContext);\n    if (!context) {\n        throw new Error('useFocusContext must be used within a FocusProvider');\n    }\n    return context;\n}\n\n/**\n * Return the active modifiers for the specified day.\n *\n * This hook is meant to be used inside internal or custom components.\n *\n * @param day\n * @param displayMonth\n */\nfunction useActiveModifiers(day, \n/**\n * The month where the date is displayed. If not the same as `date`, the day\n * is an \"outside day\".\n */\ndisplayMonth) {\n    var modifiers = useModifiers();\n    var activeModifiers = getActiveModifiers(day, modifiers, displayMonth);\n    return activeModifiers;\n}\n\n/**\n * The SelectSingle context shares details about the selected days when in\n * single selection mode.\n *\n * Access this context from the {@link useSelectSingle} hook.\n */\nvar SelectSingleContext = createContext(undefined);\n/** Provides the values for the {@link SelectSingleProvider}. */\nfunction SelectSingleProvider(props) {\n    if (!isDayPickerSingle(props.initialProps)) {\n        var emptyContextValue = {\n            selected: undefined\n        };\n        return (jsx(SelectSingleContext.Provider, { value: emptyContextValue, children: props.children }));\n    }\n    return (jsx(SelectSingleProviderInternal, { initialProps: props.initialProps, children: props.children }));\n}\nfunction SelectSingleProviderInternal(_a) {\n    var initialProps = _a.initialProps, children = _a.children;\n    var onDayClick = function (day, activeModifiers, e) {\n        var _a, _b, _c;\n        (_a = initialProps.onDayClick) === null || _a === void 0 ? void 0 : _a.call(initialProps, day, activeModifiers, e);\n        if (activeModifiers.selected && !initialProps.required) {\n            (_b = initialProps.onSelect) === null || _b === void 0 ? void 0 : _b.call(initialProps, undefined, day, activeModifiers, e);\n            return;\n        }\n        (_c = initialProps.onSelect) === null || _c === void 0 ? void 0 : _c.call(initialProps, day, day, activeModifiers, e);\n    };\n    var contextValue = {\n        selected: initialProps.selected,\n        onDayClick: onDayClick\n    };\n    return (jsx(SelectSingleContext.Provider, { value: contextValue, children: children }));\n}\n/**\n * Hook to access the {@link SelectSingleContextValue}.\n *\n * This hook is meant to be used inside internal or custom components.\n */\nfunction useSelectSingle() {\n    var context = useContext(SelectSingleContext);\n    if (!context) {\n        throw new Error('useSelectSingle must be used within a SelectSingleProvider');\n    }\n    return context;\n}\n\n/**\n * This hook returns details about the content to render in the day cell.\n *\n *\n * When a day cell is rendered in the table, DayPicker can either:\n *\n * - render nothing: when the day is outside the month or has matched the\n *   \"hidden\" modifier.\n * - render a button when `onDayClick` or a selection mode is set.\n * - render a non-interactive element: when no selection mode is set, the day\n *   cell shouldn’t respond to any interaction. DayPicker should render a `div`\n *   or a `span`.\n *\n * ### Usage\n *\n * Use this hook to customize the behavior of the {@link Day} component. Create a\n * new `Day` component using this hook and pass it to the `components` prop.\n * The source of {@link Day} can be a good starting point.\n *\n */\nfunction useDayEventHandlers(date, activeModifiers) {\n    var dayPicker = useDayPicker();\n    var single = useSelectSingle();\n    var multiple = useSelectMultiple();\n    var range = useSelectRange();\n    var _a = useFocusContext(), focusDayAfter = _a.focusDayAfter, focusDayBefore = _a.focusDayBefore, focusWeekAfter = _a.focusWeekAfter, focusWeekBefore = _a.focusWeekBefore, blur = _a.blur, focus = _a.focus, focusMonthBefore = _a.focusMonthBefore, focusMonthAfter = _a.focusMonthAfter, focusYearBefore = _a.focusYearBefore, focusYearAfter = _a.focusYearAfter, focusStartOfWeek = _a.focusStartOfWeek, focusEndOfWeek = _a.focusEndOfWeek;\n    var onClick = function (e) {\n        var _a, _b, _c, _d;\n        if (isDayPickerSingle(dayPicker)) {\n            (_a = single.onDayClick) === null || _a === void 0 ? void 0 : _a.call(single, date, activeModifiers, e);\n        }\n        else if (isDayPickerMultiple(dayPicker)) {\n            (_b = multiple.onDayClick) === null || _b === void 0 ? void 0 : _b.call(multiple, date, activeModifiers, e);\n        }\n        else if (isDayPickerRange(dayPicker)) {\n            (_c = range.onDayClick) === null || _c === void 0 ? void 0 : _c.call(range, date, activeModifiers, e);\n        }\n        else {\n            (_d = dayPicker.onDayClick) === null || _d === void 0 ? void 0 : _d.call(dayPicker, date, activeModifiers, e);\n        }\n    };\n    var onFocus = function (e) {\n        var _a;\n        focus(date);\n        (_a = dayPicker.onDayFocus) === null || _a === void 0 ? void 0 : _a.call(dayPicker, date, activeModifiers, e);\n    };\n    var onBlur = function (e) {\n        var _a;\n        blur();\n        (_a = dayPicker.onDayBlur) === null || _a === void 0 ? void 0 : _a.call(dayPicker, date, activeModifiers, e);\n    };\n    var onMouseEnter = function (e) {\n        var _a;\n        (_a = dayPicker.onDayMouseEnter) === null || _a === void 0 ? void 0 : _a.call(dayPicker, date, activeModifiers, e);\n    };\n    var onMouseLeave = function (e) {\n        var _a;\n        (_a = dayPicker.onDayMouseLeave) === null || _a === void 0 ? void 0 : _a.call(dayPicker, date, activeModifiers, e);\n    };\n    var onPointerEnter = function (e) {\n        var _a;\n        (_a = dayPicker.onDayPointerEnter) === null || _a === void 0 ? void 0 : _a.call(dayPicker, date, activeModifiers, e);\n    };\n    var onPointerLeave = function (e) {\n        var _a;\n        (_a = dayPicker.onDayPointerLeave) === null || _a === void 0 ? void 0 : _a.call(dayPicker, date, activeModifiers, e);\n    };\n    var onTouchCancel = function (e) {\n        var _a;\n        (_a = dayPicker.onDayTouchCancel) === null || _a === void 0 ? void 0 : _a.call(dayPicker, date, activeModifiers, e);\n    };\n    var onTouchEnd = function (e) {\n        var _a;\n        (_a = dayPicker.onDayTouchEnd) === null || _a === void 0 ? void 0 : _a.call(dayPicker, date, activeModifiers, e);\n    };\n    var onTouchMove = function (e) {\n        var _a;\n        (_a = dayPicker.onDayTouchMove) === null || _a === void 0 ? void 0 : _a.call(dayPicker, date, activeModifiers, e);\n    };\n    var onTouchStart = function (e) {\n        var _a;\n        (_a = dayPicker.onDayTouchStart) === null || _a === void 0 ? void 0 : _a.call(dayPicker, date, activeModifiers, e);\n    };\n    var onKeyUp = function (e) {\n        var _a;\n        (_a = dayPicker.onDayKeyUp) === null || _a === void 0 ? void 0 : _a.call(dayPicker, date, activeModifiers, e);\n    };\n    var onKeyDown = function (e) {\n        var _a;\n        switch (e.key) {\n            case 'ArrowLeft':\n                e.preventDefault();\n                e.stopPropagation();\n                dayPicker.dir === 'rtl' ? focusDayAfter() : focusDayBefore();\n                break;\n            case 'ArrowRight':\n                e.preventDefault();\n                e.stopPropagation();\n                dayPicker.dir === 'rtl' ? focusDayBefore() : focusDayAfter();\n                break;\n            case 'ArrowDown':\n                e.preventDefault();\n                e.stopPropagation();\n                focusWeekAfter();\n                break;\n            case 'ArrowUp':\n                e.preventDefault();\n                e.stopPropagation();\n                focusWeekBefore();\n                break;\n            case 'PageUp':\n                e.preventDefault();\n                e.stopPropagation();\n                e.shiftKey ? focusYearBefore() : focusMonthBefore();\n                break;\n            case 'PageDown':\n                e.preventDefault();\n                e.stopPropagation();\n                e.shiftKey ? focusYearAfter() : focusMonthAfter();\n                break;\n            case 'Home':\n                e.preventDefault();\n                e.stopPropagation();\n                focusStartOfWeek();\n                break;\n            case 'End':\n                e.preventDefault();\n                e.stopPropagation();\n                focusEndOfWeek();\n                break;\n        }\n        (_a = dayPicker.onDayKeyDown) === null || _a === void 0 ? void 0 : _a.call(dayPicker, date, activeModifiers, e);\n    };\n    var eventHandlers = {\n        onClick: onClick,\n        onFocus: onFocus,\n        onBlur: onBlur,\n        onKeyDown: onKeyDown,\n        onKeyUp: onKeyUp,\n        onMouseEnter: onMouseEnter,\n        onMouseLeave: onMouseLeave,\n        onPointerEnter: onPointerEnter,\n        onPointerLeave: onPointerLeave,\n        onTouchCancel: onTouchCancel,\n        onTouchEnd: onTouchEnd,\n        onTouchMove: onTouchMove,\n        onTouchStart: onTouchStart\n    };\n    return eventHandlers;\n}\n\n/**\n * Return the current selected days when DayPicker is in selection mode. Days\n * selected by the custom selection mode are not returned.\n *\n * This hook is meant to be used inside internal or custom components.\n *\n */\nfunction useSelectedDays() {\n    var dayPicker = useDayPicker();\n    var single = useSelectSingle();\n    var multiple = useSelectMultiple();\n    var range = useSelectRange();\n    var selectedDays = isDayPickerSingle(dayPicker)\n        ? single.selected\n        : isDayPickerMultiple(dayPicker)\n            ? multiple.selected\n            : isDayPickerRange(dayPicker)\n                ? range.selected\n                : undefined;\n    return selectedDays;\n}\n\nfunction isInternalModifier(modifier) {\n    return Object.values(InternalModifier).includes(modifier);\n}\n/**\n * Return the class names for the Day element, according to the given active\n * modifiers.\n *\n * Custom class names are set via `modifiersClassNames` or `classNames`,\n * where the first have the precedence.\n */\nfunction getDayClassNames(dayPicker, activeModifiers) {\n    var classNames = [dayPicker.classNames.day];\n    Object.keys(activeModifiers).forEach(function (modifier) {\n        var customClassName = dayPicker.modifiersClassNames[modifier];\n        if (customClassName) {\n            classNames.push(customClassName);\n        }\n        else if (isInternalModifier(modifier)) {\n            var internalClassName = dayPicker.classNames[\"day_\".concat(modifier)];\n            if (internalClassName) {\n                classNames.push(internalClassName);\n            }\n        }\n    });\n    return classNames;\n}\n\n/** Return the style for the Day element, according to the given active modifiers. */\nfunction getDayStyle(dayPicker, activeModifiers) {\n    var style = __assign({}, dayPicker.styles.day);\n    Object.keys(activeModifiers).forEach(function (modifier) {\n        var _a;\n        style = __assign(__assign({}, style), (_a = dayPicker.modifiersStyles) === null || _a === void 0 ? void 0 : _a[modifier]);\n    });\n    return style;\n}\n\n/**\n * Return props and data used to render the {@link Day} component.\n *\n * Use this hook when creating a component to replace the built-in `Day`\n * component.\n */\nfunction useDayRender(\n/** The date to render. */\nday, \n/** The month where the date is displayed (if not the same as `date`, it means it is an \"outside\" day). */\ndisplayMonth, \n/** A ref to the button element that will be target of focus when rendered (if required). */\nbuttonRef) {\n    var _a;\n    var _b, _c;\n    var dayPicker = useDayPicker();\n    var focusContext = useFocusContext();\n    var activeModifiers = useActiveModifiers(day, displayMonth);\n    var eventHandlers = useDayEventHandlers(day, activeModifiers);\n    var selectedDays = useSelectedDays();\n    var isButton = Boolean(dayPicker.onDayClick || dayPicker.mode !== 'default');\n    // Focus the button if the day is focused according to the focus context\n    useEffect(function () {\n        var _a;\n        if (activeModifiers.outside)\n            return;\n        if (!focusContext.focusedDay)\n            return;\n        if (!isButton)\n            return;\n        if (isSameDay(focusContext.focusedDay, day)) {\n            (_a = buttonRef.current) === null || _a === void 0 ? void 0 : _a.focus();\n        }\n    }, [\n        focusContext.focusedDay,\n        day,\n        buttonRef,\n        isButton,\n        activeModifiers.outside\n    ]);\n    var className = getDayClassNames(dayPicker, activeModifiers).join(' ');\n    var style = getDayStyle(dayPicker, activeModifiers);\n    var isHidden = Boolean((activeModifiers.outside && !dayPicker.showOutsideDays) ||\n        activeModifiers.hidden);\n    var DayContentComponent = (_c = (_b = dayPicker.components) === null || _b === void 0 ? void 0 : _b.DayContent) !== null && _c !== void 0 ? _c : DayContent;\n    var children = (jsx(DayContentComponent, { date: day, displayMonth: displayMonth, activeModifiers: activeModifiers }));\n    var divProps = {\n        style: style,\n        className: className,\n        children: children,\n        role: 'gridcell'\n    };\n    var isFocusTarget = focusContext.focusTarget &&\n        isSameDay(focusContext.focusTarget, day) &&\n        !activeModifiers.outside;\n    var isFocused = focusContext.focusedDay && isSameDay(focusContext.focusedDay, day);\n    var buttonProps = __assign(__assign(__assign({}, divProps), (_a = { disabled: activeModifiers.disabled, role: 'gridcell' }, _a['aria-selected'] = activeModifiers.selected, _a.tabIndex = isFocused || isFocusTarget ? 0 : -1, _a)), eventHandlers);\n    var dayRender = {\n        isButton: isButton,\n        isHidden: isHidden,\n        activeModifiers: activeModifiers,\n        selectedDays: selectedDays,\n        buttonProps: buttonProps,\n        divProps: divProps\n    };\n    return dayRender;\n}\n\n/**\n * The content of a day cell – as a button or span element according to its\n * modifiers.\n */\nfunction Day(props) {\n    var buttonRef = useRef(null);\n    var dayRender = useDayRender(props.date, props.displayMonth, buttonRef);\n    if (dayRender.isHidden) {\n        return jsx(\"div\", { role: \"gridcell\" });\n    }\n    if (!dayRender.isButton) {\n        return jsx(\"div\", __assign({}, dayRender.divProps));\n    }\n    return jsx(Button, __assign({ name: \"day\", ref: buttonRef }, dayRender.buttonProps));\n}\n\n/**\n * Render the week number element. If `onWeekNumberClick` is passed to DayPicker, it\n * renders a button, otherwise a span element.\n */\nfunction WeekNumber(props) {\n    var weekNumber = props.number, dates = props.dates;\n    var _a = useDayPicker(), onWeekNumberClick = _a.onWeekNumberClick, styles = _a.styles, classNames = _a.classNames, locale = _a.locale, labelWeekNumber = _a.labels.labelWeekNumber, formatWeekNumber = _a.formatters.formatWeekNumber;\n    var content = formatWeekNumber(Number(weekNumber), { locale: locale });\n    if (!onWeekNumberClick) {\n        return (jsx(\"span\", { className: classNames.weeknumber, style: styles.weeknumber, children: content }));\n    }\n    var label = labelWeekNumber(Number(weekNumber), { locale: locale });\n    var handleClick = function (e) {\n        onWeekNumberClick(weekNumber, dates, e);\n    };\n    return (jsx(Button, { name: \"week-number\", \"aria-label\": label, className: classNames.weeknumber, style: styles.weeknumber, onClick: handleClick, children: content }));\n}\n\n/** Render a row in the calendar, with the days and the week number. */\nfunction Row(props) {\n    var _a, _b;\n    var _c = useDayPicker(), styles = _c.styles, classNames = _c.classNames, showWeekNumber = _c.showWeekNumber, components = _c.components;\n    var DayComponent = (_a = components === null || components === void 0 ? void 0 : components.Day) !== null && _a !== void 0 ? _a : Day;\n    var WeeknumberComponent = (_b = components === null || components === void 0 ? void 0 : components.WeekNumber) !== null && _b !== void 0 ? _b : WeekNumber;\n    var weekNumberCell;\n    if (showWeekNumber) {\n        weekNumberCell = (jsx(\"td\", { className: classNames.cell, style: styles.cell, children: jsx(WeeknumberComponent, { number: props.weekNumber, dates: props.dates }) }));\n    }\n    return (jsxs(\"tr\", { className: classNames.row, style: styles.row, children: [weekNumberCell, props.dates.map(function (date) { return (jsx(\"td\", { className: classNames.cell, style: styles.cell, role: \"presentation\", children: jsx(DayComponent, { displayMonth: props.displayMonth, date: date }) }, getUnixTime(date))); })] }));\n}\n\n/** Return the weeks between two dates.  */\nfunction daysToMonthWeeks(fromDate, toDate, options) {\n    var toWeek = (options === null || options === void 0 ? void 0 : options.ISOWeek)\n        ? endOfISOWeek(toDate)\n        : endOfWeek(toDate, options);\n    var fromWeek = (options === null || options === void 0 ? void 0 : options.ISOWeek)\n        ? startOfISOWeek(fromDate)\n        : startOfWeek(fromDate, options);\n    var nOfDays = differenceInCalendarDays(toWeek, fromWeek);\n    var days = [];\n    for (var i = 0; i <= nOfDays; i++) {\n        days.push(addDays(fromWeek, i));\n    }\n    var weeksInMonth = days.reduce(function (result, date) {\n        var weekNumber = (options === null || options === void 0 ? void 0 : options.ISOWeek)\n            ? getISOWeek(date)\n            : getWeek(date, options);\n        var existingWeek = result.find(function (value) { return value.weekNumber === weekNumber; });\n        if (existingWeek) {\n            existingWeek.dates.push(date);\n            return result;\n        }\n        result.push({\n            weekNumber: weekNumber,\n            dates: [date]\n        });\n        return result;\n    }, []);\n    return weeksInMonth;\n}\n\n/**\n * Return the weeks belonging to the given month, adding the \"outside days\" to\n * the first and last week.\n */\nfunction getMonthWeeks(month, options) {\n    var weeksInMonth = daysToMonthWeeks(startOfMonth(month), endOfMonth(month), options);\n    if (options === null || options === void 0 ? void 0 : options.useFixedWeeks) {\n        // Add extra weeks to the month, up to 6 weeks\n        var nrOfMonthWeeks = getWeeksInMonth(month, options);\n        if (nrOfMonthWeeks < 6) {\n            var lastWeek = weeksInMonth[weeksInMonth.length - 1];\n            var lastDate = lastWeek.dates[lastWeek.dates.length - 1];\n            var toDate = addWeeks(lastDate, 6 - nrOfMonthWeeks);\n            var extraWeeks = daysToMonthWeeks(addWeeks(lastDate, 1), toDate, options);\n            weeksInMonth.push.apply(weeksInMonth, extraWeeks);\n        }\n    }\n    return weeksInMonth;\n}\n\n/** Render the table with the calendar. */\nfunction Table(props) {\n    var _a, _b, _c;\n    var _d = useDayPicker(), locale = _d.locale, classNames = _d.classNames, styles = _d.styles, hideHead = _d.hideHead, fixedWeeks = _d.fixedWeeks, components = _d.components, weekStartsOn = _d.weekStartsOn, firstWeekContainsDate = _d.firstWeekContainsDate, ISOWeek = _d.ISOWeek;\n    var weeks = getMonthWeeks(props.displayMonth, {\n        useFixedWeeks: Boolean(fixedWeeks),\n        ISOWeek: ISOWeek,\n        locale: locale,\n        weekStartsOn: weekStartsOn,\n        firstWeekContainsDate: firstWeekContainsDate\n    });\n    var HeadComponent = (_a = components === null || components === void 0 ? void 0 : components.Head) !== null && _a !== void 0 ? _a : Head;\n    var RowComponent = (_b = components === null || components === void 0 ? void 0 : components.Row) !== null && _b !== void 0 ? _b : Row;\n    var FooterComponent = (_c = components === null || components === void 0 ? void 0 : components.Footer) !== null && _c !== void 0 ? _c : Footer;\n    return (jsxs(\"table\", { id: props.id, className: classNames.table, style: styles.table, role: \"grid\", \"aria-labelledby\": props['aria-labelledby'], children: [!hideHead && jsx(HeadComponent, {}), jsx(\"tbody\", { className: classNames.tbody, style: styles.tbody, children: weeks.map(function (week) { return (jsx(RowComponent, { displayMonth: props.displayMonth, dates: week.dates, weekNumber: week.weekNumber }, week.weekNumber)); }) }), jsx(FooterComponent, { displayMonth: props.displayMonth })] }));\n}\n\n/*\nThe MIT License (MIT)\n\nCopyright (c) 2018-present, React Training LLC\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n*/\n/* eslint-disable prefer-const */\n/* eslint-disable @typescript-eslint/ban-ts-comment */\n/*\n * Welcome to @reach/auto-id!\n * Let's see if we can make sense of why this hook exists and its\n * implementation.\n *\n * Some background:\n *   1. Accessibility APIs rely heavily on element IDs\n *   2. Requiring developers to put IDs on every element in Reach UI is both\n *      cumbersome and error-prone\n *   3. With a component model, we can generate IDs for them!\n *\n * Solution 1: Generate random IDs.\n *\n * This works great as long as you don't server render your app. When React (in\n * the client) tries to reuse the markup from the server, the IDs won't match\n * and React will then recreate the entire DOM tree.\n *\n * Solution 2: Increment an integer\n *\n * This sounds great. Since we're rendering the exact same tree on the server\n * and client, we can increment a counter and get a deterministic result between\n * client and server. Also, JS integers can go up to nine-quadrillion. I'm\n * pretty sure the tab will be closed before an app never needs\n * 10 quadrillion IDs!\n *\n * Problem solved, right?\n *\n * Ah, but there's a catch! React's concurrent rendering makes this approach\n * non-deterministic. While the client and server will end up with the same\n * elements in the end, depending on suspense boundaries (and possibly some user\n * input during the initial render) the incrementing integers won't always match\n * up.\n *\n * Solution 3: Don't use IDs at all on the server; patch after first render.\n *\n * What we've done here is solution 2 with some tricks. With this approach, the\n * ID returned is an empty string on the first render. This way the server and\n * client have the same markup no matter how wild the concurrent rendering may\n * have gotten.\n *\n * After the render, we patch up the components with an incremented ID. This\n * causes a double render on any components with `useId`. Shouldn't be a problem\n * since the components using this hook should be small, and we're only updating\n * the ID attribute on the DOM, nothing big is happening.\n *\n * It doesn't have to be an incremented number, though--we could do generate\n * random strings instead, but incrementing a number is probably the cheapest\n * thing we can do.\n *\n * Additionally, we only do this patchup on the very first client render ever.\n * Any calls to `useId` that happen dynamically in the client will be\n * populated immediately with a value. So, we only get the double render after\n * server hydration and never again, SO BACK OFF ALRIGHT?\n */\nfunction canUseDOM() {\n    return !!(typeof window !== 'undefined' &&\n        window.document &&\n        window.document.createElement);\n}\n/**\n * React currently throws a warning when using useLayoutEffect on the server. To\n * get around it, we can conditionally useEffect on the server (no-op) and\n * useLayoutEffect in the browser. We occasionally need useLayoutEffect to\n * ensure we don't get a render flash for certain operations, but we may also\n * need affected components to render on the server. One example is when setting\n * a component's descendants to retrieve their index values.\n *\n * Important to note that using this hook as an escape hatch will break the\n * eslint dependency warnings unless you rename the import to `useLayoutEffect`.\n * Use sparingly only when the effect won't effect the rendered HTML to avoid\n * any server/client mismatch.\n *\n * If a useLayoutEffect is needed and the result would create a mismatch, it's\n * likely that the component in question shouldn't be rendered on the server at\n * all, so a better approach would be to lazily render those in a parent\n * component after client-side hydration.\n *\n * https://gist.github.com/gaearon/e7d97cdf38a2907924ea12e4ebdf3c85\n * https://github.com/reduxjs/react-redux/blob/master/src/utils/useIsomorphicLayoutEffect.js\n *\n * @param effect\n * @param deps\n */\nvar useIsomorphicLayoutEffect = canUseDOM() ? useLayoutEffect : useEffect;\nvar serverHandoffComplete = false;\nvar id = 0;\nfunction genId() {\n    return \"react-day-picker-\".concat(++id);\n}\nfunction useId(providedId) {\n    // TODO: Remove error flag when updating internal deps to React 18. None of\n    // our tricks will play well with concurrent rendering anyway.\n    var _a;\n    // If this instance isn't part of the initial render, we don't have to do the\n    // double render/patch-up dance. We can just generate the ID and return it.\n    var initialId = providedId !== null && providedId !== void 0 ? providedId : (serverHandoffComplete ? genId() : null);\n    var _b = useState(initialId), id = _b[0], setId = _b[1];\n    useIsomorphicLayoutEffect(function () {\n        if (id === null) {\n            // Patch the ID after render. We do this in `useLayoutEffect` to avoid any\n            // rendering flicker, though it'll make the first render slower (unlikely\n            // to matter, but you're welcome to measure your app and let us know if\n            // it's a problem).\n            setId(genId());\n        }\n        // eslint-disable-next-line react-hooks/exhaustive-deps\n    }, []);\n    useEffect(function () {\n        if (serverHandoffComplete === false) {\n            // Flag all future uses of `useId` to skip the update dance. This is in\n            // `useEffect` because it goes after `useLayoutEffect`, ensuring we don't\n            // accidentally bail out of the patch-up dance prematurely.\n            serverHandoffComplete = true;\n        }\n    }, []);\n    return (_a = providedId !== null && providedId !== void 0 ? providedId : id) !== null && _a !== void 0 ? _a : undefined;\n}\n\n/** Render a month. */\nfunction Month(props) {\n    var _a;\n    var _b;\n    var dayPicker = useDayPicker();\n    var dir = dayPicker.dir, classNames = dayPicker.classNames, styles = dayPicker.styles, components = dayPicker.components;\n    var displayMonths = useNavigation().displayMonths;\n    var captionId = useId(dayPicker.id ? \"\".concat(dayPicker.id, \"-\").concat(props.displayIndex) : undefined);\n    var tableId = dayPicker.id\n        ? \"\".concat(dayPicker.id, \"-grid-\").concat(props.displayIndex)\n        : undefined;\n    var className = [classNames.month];\n    var style = styles.month;\n    var isStart = props.displayIndex === 0;\n    var isEnd = props.displayIndex === displayMonths.length - 1;\n    var isCenter = !isStart && !isEnd;\n    if (dir === 'rtl') {\n        _a = [isStart, isEnd], isEnd = _a[0], isStart = _a[1];\n    }\n    if (isStart) {\n        className.push(classNames.caption_start);\n        style = __assign(__assign({}, style), styles.caption_start);\n    }\n    if (isEnd) {\n        className.push(classNames.caption_end);\n        style = __assign(__assign({}, style), styles.caption_end);\n    }\n    if (isCenter) {\n        className.push(classNames.caption_between);\n        style = __assign(__assign({}, style), styles.caption_between);\n    }\n    var CaptionComponent = (_b = components === null || components === void 0 ? void 0 : components.Caption) !== null && _b !== void 0 ? _b : Caption;\n    return (jsxs(\"div\", { className: className.join(' '), style: style, children: [jsx(CaptionComponent, { id: captionId, displayMonth: props.displayMonth, displayIndex: props.displayIndex }), jsx(Table, { id: tableId, \"aria-labelledby\": captionId, displayMonth: props.displayMonth })] }, props.displayIndex));\n}\n\n/**\n * Render the wrapper for the month grids.\n */\nfunction Months(props) {\n    var _a = useDayPicker(), classNames = _a.classNames, styles = _a.styles;\n    return (jsx(\"div\", { className: classNames.months, style: styles.months, children: props.children }));\n}\n\n/** Render the container with the months according to the number of months to display. */\nfunction Root(_a) {\n    var _b, _c;\n    var initialProps = _a.initialProps;\n    var dayPicker = useDayPicker();\n    var focusContext = useFocusContext();\n    var navigation = useNavigation();\n    var _d = useState(false), hasInitialFocus = _d[0], setHasInitialFocus = _d[1];\n    // Focus the focus target when initialFocus is passed in\n    useEffect(function () {\n        if (!dayPicker.initialFocus)\n            return;\n        if (!focusContext.focusTarget)\n            return;\n        if (hasInitialFocus)\n            return;\n        focusContext.focus(focusContext.focusTarget);\n        setHasInitialFocus(true);\n    }, [\n        dayPicker.initialFocus,\n        hasInitialFocus,\n        focusContext.focus,\n        focusContext.focusTarget,\n        focusContext\n    ]);\n    // Apply classnames according to props\n    var classNames = [dayPicker.classNames.root, dayPicker.className];\n    if (dayPicker.numberOfMonths > 1) {\n        classNames.push(dayPicker.classNames.multiple_months);\n    }\n    if (dayPicker.showWeekNumber) {\n        classNames.push(dayPicker.classNames.with_weeknumber);\n    }\n    var style = __assign(__assign({}, dayPicker.styles.root), dayPicker.style);\n    var dataAttributes = Object.keys(initialProps)\n        .filter(function (key) { return key.startsWith('data-'); })\n        .reduce(function (attrs, key) {\n        var _a;\n        return __assign(__assign({}, attrs), (_a = {}, _a[key] = initialProps[key], _a));\n    }, {});\n    var MonthsComponent = (_c = (_b = initialProps.components) === null || _b === void 0 ? void 0 : _b.Months) !== null && _c !== void 0 ? _c : Months;\n    return (jsx(\"div\", __assign({ className: classNames.join(' '), style: style, dir: dayPicker.dir, id: dayPicker.id, nonce: initialProps.nonce, title: initialProps.title, lang: initialProps.lang }, dataAttributes, { children: jsx(MonthsComponent, { children: navigation.displayMonths.map(function (month, i) { return (jsx(Month, { displayIndex: i, displayMonth: month }, i)); }) }) })));\n}\n\n/** Provide the value for all the context providers. */\nfunction RootProvider(props) {\n    var children = props.children, initialProps = __rest(props, [\"children\"]);\n    return (jsx(DayPickerProvider, { initialProps: initialProps, children: jsx(NavigationProvider, { children: jsx(SelectSingleProvider, { initialProps: initialProps, children: jsx(SelectMultipleProvider, { initialProps: initialProps, children: jsx(SelectRangeProvider, { initialProps: initialProps, children: jsx(ModifiersProvider, { children: jsx(FocusProvider, { children: children }) }) }) }) }) }) }));\n}\n\n/**\n * DayPicker render a date picker component to let users pick dates from a\n * calendar. See http://react-day-picker.js.org for updated documentation and\n * examples.\n *\n * ### Customization\n *\n * DayPicker offers different customization props. For example,\n *\n * - show multiple months using `numberOfMonths`\n * - display a dropdown to navigate the months via `captionLayout`\n * - display the week numbers with `showWeekNumbers`\n * - disable or hide days with `disabled` or `hidden`\n *\n * ### Controlling the months\n *\n * Change the initially displayed month using the `defaultMonth` prop. The\n * displayed months are controlled by DayPicker and stored in its internal\n * state. To control the months yourself, use `month` instead of `defaultMonth`\n * and use the `onMonthChange` event to set it.\n *\n * To limit the months the user can navigate to, use\n * `fromDate`/`fromMonth`/`fromYear` or `toDate`/`toMonth`/`toYear`.\n *\n * ### Selection modes\n *\n * DayPicker supports different selection mode that can be toggled using the\n * `mode` prop:\n *\n * - `mode=\"single\"`: only one day can be selected. Use `required` to make the\n *   selection required. Use the `onSelect` event handler to get the selected\n *   days.\n * - `mode=\"multiple\"`: users can select one or more days. Limit the amount of\n *   days that can be selected with the `min` or the `max` props.\n * - `mode=\"range\"`: users can select a range of days. Limit the amount of days\n *   in the range with the `min` or the `max` props.\n * - `mode=\"default\"` (default): the built-in selections are disabled. Implement\n *   your own selection mode with `onDayClick`.\n *\n * The selection modes should cover the most common use cases. In case you\n * need a more refined way of selecting days, use `mode=\"default\"`. Use the\n * `selected` props and add the day event handlers to add/remove days from the\n * selection.\n *\n * ### Modifiers\n *\n * A _modifier_ represents different styles or states for the days displayed in\n * the calendar (like \"selected\" or \"disabled\"). Define custom modifiers using\n * the `modifiers` prop.\n *\n * ### Formatters and custom component\n *\n * You can customize how the content is displayed in the date picker by using\n * either the formatters or replacing the internal components.\n *\n * For the most common cases you want to use the `formatters` prop to change how\n * the content is formatted in the calendar. Use the `components` prop to\n * replace the internal components, like the navigation icons.\n *\n * ### Styling\n *\n * DayPicker comes with a default, basic style in `react-day-picker/style` – use\n * it as template for your own style.\n *\n * If you are using CSS modules, pass the imported styles object the\n * `classNames` props.\n *\n * You can also style the elements via inline styles using the `styles` prop.\n *\n * ### Form fields\n *\n * If you need to bind the date picker to a form field, you can use the\n * `useInput` hooks for a basic behavior. See the `useInput` source as an\n * example to bind the date picker with form fields.\n *\n * ### Localization\n *\n * To localize DayPicker, import the locale from `date-fns` package and use the\n * `locale` prop.\n *\n * For example, to use Spanish locale:\n *\n * ```\n * import { es } from 'date-fns/locale';\n * <DayPicker locale={es} />\n * ```\n */\nfunction DayPicker(props) {\n    return (jsx(RootProvider, __assign({}, props, { children: jsx(Root, { initialProps: props }) })));\n}\n\n/** @private */\nfunction isValidDate(day) {\n    return !isNaN(day.getTime());\n}\n\n/** Return props and setters for binding an input field to DayPicker. */\nfunction useInput(options) {\n    if (options === void 0) { options = {}; }\n    var _a = options.locale, locale = _a === void 0 ? enUS : _a, required = options.required, _b = options.format, format$1 = _b === void 0 ? 'PP' : _b, defaultSelected = options.defaultSelected, _c = options.today, today = _c === void 0 ? new Date() : _c;\n    var _d = parseFromToProps(options), fromDate = _d.fromDate, toDate = _d.toDate;\n    // Shortcut to the DateFns functions\n    var parseValue = function (value) { return parse(value, format$1, today, { locale: locale }); };\n    // Initialize states\n    var _e = useState(defaultSelected !== null && defaultSelected !== void 0 ? defaultSelected : today), month = _e[0], setMonth = _e[1];\n    var _f = useState(defaultSelected), selectedDay = _f[0], setSelectedDay = _f[1];\n    var defaultInputValue = defaultSelected\n        ? format(defaultSelected, format$1, { locale: locale })\n        : '';\n    var _g = useState(defaultInputValue), inputValue = _g[0], setInputValue = _g[1];\n    var reset = function () {\n        setSelectedDay(defaultSelected);\n        setMonth(defaultSelected !== null && defaultSelected !== void 0 ? defaultSelected : today);\n        setInputValue(defaultInputValue !== null && defaultInputValue !== void 0 ? defaultInputValue : '');\n    };\n    var setSelected = function (date) {\n        setSelectedDay(date);\n        setMonth(date !== null && date !== void 0 ? date : today);\n        setInputValue(date ? format(date, format$1, { locale: locale }) : '');\n    };\n    var handleDayClick = function (day, _a) {\n        var selected = _a.selected;\n        if (!required && selected) {\n            setSelectedDay(undefined);\n            setInputValue('');\n            return;\n        }\n        setSelectedDay(day);\n        setInputValue(day ? format(day, format$1, { locale: locale }) : '');\n    };\n    var handleMonthChange = function (month) {\n        setMonth(month);\n    };\n    // When changing the input field, save its value in state and check if the\n    // string is a valid date. If it is a valid day, set it as selected and update\n    // the calendar’s month.\n    var handleChange = function (e) {\n        setInputValue(e.target.value);\n        var day = parseValue(e.target.value);\n        var isBefore = fromDate && differenceInCalendarDays(fromDate, day) > 0;\n        var isAfter = toDate && differenceInCalendarDays(day, toDate) > 0;\n        if (!isValidDate(day) || isBefore || isAfter) {\n            setSelectedDay(undefined);\n            return;\n        }\n        setSelectedDay(day);\n        setMonth(day);\n    };\n    // Special case for _required_ fields: on blur, if the value of the input is not\n    // a valid date, reset the calendar and the input value.\n    var handleBlur = function (e) {\n        var day = parseValue(e.target.value);\n        if (!isValidDate(day)) {\n            reset();\n        }\n    };\n    // When focusing, make sure DayPicker visualizes the month of the date in the\n    // input field.\n    var handleFocus = function (e) {\n        if (!e.target.value) {\n            reset();\n            return;\n        }\n        var day = parseValue(e.target.value);\n        if (isValidDate(day)) {\n            setMonth(day);\n        }\n    };\n    var dayPickerProps = {\n        month: month,\n        onDayClick: handleDayClick,\n        onMonthChange: handleMonthChange,\n        selected: selectedDay,\n        locale: locale,\n        fromDate: fromDate,\n        toDate: toDate,\n        today: today\n    };\n    var inputProps = {\n        onBlur: handleBlur,\n        onChange: handleChange,\n        onFocus: handleFocus,\n        value: inputValue,\n        placeholder: format(new Date(), format$1, { locale: locale })\n    };\n    return { dayPickerProps: dayPickerProps, inputProps: inputProps, reset: reset, setSelected: setSelected };\n}\n\n/** Returns true when the props are of type {@link DayPickerDefaultProps}. */\nfunction isDayPickerDefault(props) {\n    return props.mode === undefined || props.mode === 'default';\n}\n\nexport { Button, Caption, CaptionDropdowns, CaptionLabel, CaptionNavigation, Day, DayContent, DayPicker, DayPickerContext, DayPickerProvider, Dropdown, FocusContext, FocusProvider, Footer, Head, HeadRow, IconDropdown, IconLeft, IconRight, InternalModifier, Months, NavigationContext, NavigationProvider, RootProvider, Row, SelectMultipleContext, SelectMultipleProvider, SelectMultipleProviderInternal, SelectRangeContext, SelectRangeProvider, SelectRangeProviderInternal, SelectSingleContext, SelectSingleProvider, SelectSingleProviderInternal, WeekNumber, addToRange, isDateAfterType, isDateBeforeType, isDateInterval, isDateRange, isDayOfWeekType, isDayPickerDefault, isDayPickerMultiple, isDayPickerRange, isDayPickerSingle, isMatch, useActiveModifiers, useDayPicker, useDayRender, useFocusContext, useInput, useNavigation, useSelectMultiple, useSelectRange, useSelectSingle };\n//# sourceMappingURL=index.esm.js.map\n","import getTime from \"../getTime/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name getUnixTime\n * @category Timestamp Helpers\n * @summary Get the seconds timestamp of the given date.\n *\n * @description\n * Get the seconds timestamp of the given date.\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the timestamp\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Get the timestamp of 29 February 2012 11:45:05 CET:\n * const result = getUnixTime(new Date(2012, 1, 29, 11, 45, 5))\n * //=> 1330512305\n */\nexport default function getUnixTime(dirtyDate) {\n  requiredArgs(1, arguments);\n  return Math.floor(getTime(dirtyDate) / 1000);\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name getTime\n * @category Timestamp Helpers\n * @summary Get the milliseconds timestamp of the given date.\n *\n * @description\n * Get the milliseconds timestamp of the given date.\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the timestamp\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Get the timestamp of 29 February 2012 11:45:05.123:\n * const result = getTime(new Date(2012, 1, 29, 11, 45, 5, 123))\n * //=> 1330515905123\n */\nexport default function getTime(dirtyDate) {\n  requiredArgs(1, arguments);\n  var date = toDate(dirtyDate);\n  var timestamp = date.getTime();\n  return timestamp;\n}","/**\n * @license React\n * react-dom-server-legacy.browser.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var aa=require(\"react\");function l(a){for(var b=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=1;c<arguments.length;c++)b+=\"&args[]=\"+encodeURIComponent(arguments[c]);return\"Minified React error #\"+a+\"; visit \"+b+\" for the full message or use the non-minified dev environment for full errors and additional helpful warnings.\"}\nvar p=Object.prototype.hasOwnProperty,fa=/^[:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD][:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\-.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*$/,ha={},ia={};\nfunction ja(a){if(p.call(ia,a))return!0;if(p.call(ha,a))return!1;if(fa.test(a))return ia[a]=!0;ha[a]=!0;return!1}function r(a,b,c,d,f,e,g){this.acceptsBooleans=2===b||3===b||4===b;this.attributeName=d;this.attributeNamespace=f;this.mustUseProperty=c;this.propertyName=a;this.type=b;this.sanitizeURL=e;this.removeEmptyString=g}var t={};\n\"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style\".split(\" \").forEach(function(a){t[a]=new r(a,0,!1,a,null,!1,!1)});[[\"acceptCharset\",\"accept-charset\"],[\"className\",\"class\"],[\"htmlFor\",\"for\"],[\"httpEquiv\",\"http-equiv\"]].forEach(function(a){var b=a[0];t[b]=new r(b,1,!1,a[1],null,!1,!1)});[\"contentEditable\",\"draggable\",\"spellCheck\",\"value\"].forEach(function(a){t[a]=new r(a,2,!1,a.toLowerCase(),null,!1,!1)});\n[\"autoReverse\",\"externalResourcesRequired\",\"focusable\",\"preserveAlpha\"].forEach(function(a){t[a]=new r(a,2,!1,a,null,!1,!1)});\"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope\".split(\" \").forEach(function(a){t[a]=new r(a,3,!1,a.toLowerCase(),null,!1,!1)});\n[\"checked\",\"multiple\",\"muted\",\"selected\"].forEach(function(a){t[a]=new r(a,3,!0,a,null,!1,!1)});[\"capture\",\"download\"].forEach(function(a){t[a]=new r(a,4,!1,a,null,!1,!1)});[\"cols\",\"rows\",\"size\",\"span\"].forEach(function(a){t[a]=new r(a,6,!1,a,null,!1,!1)});[\"rowSpan\",\"start\"].forEach(function(a){t[a]=new r(a,5,!1,a.toLowerCase(),null,!1,!1)});var ka=/[\\-:]([a-z])/g;function la(a){return a[1].toUpperCase()}\n\"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height\".split(\" \").forEach(function(a){var b=a.replace(ka,\nla);t[b]=new r(b,1,!1,a,null,!1,!1)});\"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type\".split(\" \").forEach(function(a){var b=a.replace(ka,la);t[b]=new r(b,1,!1,a,\"http://www.w3.org/1999/xlink\",!1,!1)});[\"xml:base\",\"xml:lang\",\"xml:space\"].forEach(function(a){var b=a.replace(ka,la);t[b]=new r(b,1,!1,a,\"http://www.w3.org/XML/1998/namespace\",!1,!1)});[\"tabIndex\",\"crossOrigin\"].forEach(function(a){t[a]=new r(a,1,!1,a.toLowerCase(),null,!1,!1)});\nt.xlinkHref=new r(\"xlinkHref\",1,!1,\"xlink:href\",\"http://www.w3.org/1999/xlink\",!0,!1);[\"src\",\"href\",\"action\",\"formAction\"].forEach(function(a){t[a]=new r(a,1,!1,a.toLowerCase(),null,!0,!0)});\nvar u={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,\nfillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},ma=[\"Webkit\",\"ms\",\"Moz\",\"O\"];Object.keys(u).forEach(function(a){ma.forEach(function(b){b=b+a.charAt(0).toUpperCase()+a.substring(1);u[b]=u[a]})});var na=/[\"'&<>]/;\nfunction v(a){if(\"boolean\"===typeof a||\"number\"===typeof a)return\"\"+a;a=\"\"+a;var b=na.exec(a);if(b){var c=\"\",d,f=0;for(d=b.index;d<a.length;d++){switch(a.charCodeAt(d)){case 34:b=\"&quot;\";break;case 38:b=\"&amp;\";break;case 39:b=\"&#x27;\";break;case 60:b=\"&lt;\";break;case 62:b=\"&gt;\";break;default:continue}f!==d&&(c+=a.substring(f,d));f=d+1;c+=b}a=f!==d?c+a.substring(f,d):c}return a}var oa=/([A-Z])/g,pa=/^ms-/,qa=Array.isArray;function w(a,b){return{insertionMode:a,selectedValue:b}}\nfunction ra(a,b,c){switch(b){case \"select\":return w(1,null!=c.value?c.value:c.defaultValue);case \"svg\":return w(2,null);case \"math\":return w(3,null);case \"foreignObject\":return w(1,null);case \"table\":return w(4,null);case \"thead\":case \"tbody\":case \"tfoot\":return w(5,null);case \"colgroup\":return w(7,null);case \"tr\":return w(6,null)}return 4<=a.insertionMode||0===a.insertionMode?w(1,null):a}var sa=new Map;\nfunction ta(a,b,c){if(\"object\"!==typeof c)throw Error(l(62));b=!0;for(var d in c)if(p.call(c,d)){var f=c[d];if(null!=f&&\"boolean\"!==typeof f&&\"\"!==f){if(0===d.indexOf(\"--\")){var e=v(d);f=v((\"\"+f).trim())}else{e=d;var g=sa.get(e);void 0!==g?e=g:(g=v(e.replace(oa,\"-$1\").toLowerCase().replace(pa,\"-ms-\")),sa.set(e,g),e=g);f=\"number\"===typeof f?0===f||p.call(u,d)?\"\"+f:f+\"px\":v((\"\"+f).trim())}b?(b=!1,a.push(' style=\"',e,\":\",f)):a.push(\";\",e,\":\",f)}}b||a.push('\"')}\nfunction x(a,b,c,d){switch(c){case \"style\":ta(a,b,d);return;case \"defaultValue\":case \"defaultChecked\":case \"innerHTML\":case \"suppressContentEditableWarning\":case \"suppressHydrationWarning\":return}if(!(2<c.length)||\"o\"!==c[0]&&\"O\"!==c[0]||\"n\"!==c[1]&&\"N\"!==c[1])if(b=t.hasOwnProperty(c)?t[c]:null,null!==b){switch(typeof d){case \"function\":case \"symbol\":return;case \"boolean\":if(!b.acceptsBooleans)return}c=b.attributeName;switch(b.type){case 3:d&&a.push(\" \",c,'=\"\"');break;case 4:!0===d?a.push(\" \",c,'=\"\"'):\n!1!==d&&a.push(\" \",c,'=\"',v(d),'\"');break;case 5:isNaN(d)||a.push(\" \",c,'=\"',v(d),'\"');break;case 6:!isNaN(d)&&1<=d&&a.push(\" \",c,'=\"',v(d),'\"');break;default:b.sanitizeURL&&(d=\"\"+d),a.push(\" \",c,'=\"',v(d),'\"')}}else if(ja(c)){switch(typeof d){case \"function\":case \"symbol\":return;case \"boolean\":if(b=c.toLowerCase().slice(0,5),\"data-\"!==b&&\"aria-\"!==b)return}a.push(\" \",c,'=\"',v(d),'\"')}}\nfunction y(a,b,c){if(null!=b){if(null!=c)throw Error(l(60));if(\"object\"!==typeof b||!(\"__html\"in b))throw Error(l(61));b=b.__html;null!==b&&void 0!==b&&a.push(\"\"+b)}}function ua(a){var b=\"\";aa.Children.forEach(a,function(a){null!=a&&(b+=a)});return b}\nfunction va(a,b,c,d){a.push(A(c));var f=c=null,e;for(e in b)if(p.call(b,e)){var g=b[e];if(null!=g)switch(e){case \"children\":c=g;break;case \"dangerouslySetInnerHTML\":f=g;break;default:x(a,d,e,g)}}a.push(\">\");y(a,f,c);return\"string\"===typeof c?(a.push(v(c)),null):c}var wa=/^[a-zA-Z][a-zA-Z:_\\.\\-\\d]*$/,xa=new Map;function A(a){var b=xa.get(a);if(void 0===b){if(!wa.test(a))throw Error(l(65,a));b=\"<\"+a;xa.set(a,b)}return b}\nfunction ya(a,b,c,d,f){switch(b){case \"select\":a.push(A(\"select\"));var e=null,g=null;for(n in c)if(p.call(c,n)){var h=c[n];if(null!=h)switch(n){case \"children\":e=h;break;case \"dangerouslySetInnerHTML\":g=h;break;case \"defaultValue\":case \"value\":break;default:x(a,d,n,h)}}a.push(\">\");y(a,g,e);return e;case \"option\":g=f.selectedValue;a.push(A(\"option\"));var k=h=null,m=null;var n=null;for(e in c)if(p.call(c,e)){var q=c[e];if(null!=q)switch(e){case \"children\":h=q;break;case \"selected\":m=q;break;case \"dangerouslySetInnerHTML\":n=\nq;break;case \"value\":k=q;default:x(a,d,e,q)}}if(null!=g)if(c=null!==k?\"\"+k:ua(h),qa(g))for(d=0;d<g.length;d++){if(\"\"+g[d]===c){a.push(' selected=\"\"');break}}else\"\"+g===c&&a.push(' selected=\"\"');else m&&a.push(' selected=\"\"');a.push(\">\");y(a,n,h);return h;case \"textarea\":a.push(A(\"textarea\"));n=g=e=null;for(h in c)if(p.call(c,h)&&(k=c[h],null!=k))switch(h){case \"children\":n=k;break;case \"value\":e=k;break;case \"defaultValue\":g=k;break;case \"dangerouslySetInnerHTML\":throw Error(l(91));default:x(a,d,\nh,k)}null===e&&null!==g&&(e=g);a.push(\">\");if(null!=n){if(null!=e)throw Error(l(92));if(qa(n)&&1<n.length)throw Error(l(93));e=\"\"+n}\"string\"===typeof e&&\"\\n\"===e[0]&&a.push(\"\\n\");null!==e&&a.push(v(\"\"+e));return null;case \"input\":a.push(A(\"input\"));k=n=h=e=null;for(g in c)if(p.call(c,g)&&(m=c[g],null!=m))switch(g){case \"children\":case \"dangerouslySetInnerHTML\":throw Error(l(399,\"input\"));case \"defaultChecked\":k=m;break;case \"defaultValue\":h=m;break;case \"checked\":n=m;break;case \"value\":e=m;break;\ndefault:x(a,d,g,m)}null!==n?x(a,d,\"checked\",n):null!==k&&x(a,d,\"checked\",k);null!==e?x(a,d,\"value\",e):null!==h&&x(a,d,\"value\",h);a.push(\"/>\");return null;case \"menuitem\":a.push(A(\"menuitem\"));for(var C in c)if(p.call(c,C)&&(e=c[C],null!=e))switch(C){case \"children\":case \"dangerouslySetInnerHTML\":throw Error(l(400));default:x(a,d,C,e)}a.push(\">\");return null;case \"title\":a.push(A(\"title\"));e=null;for(q in c)if(p.call(c,q)&&(g=c[q],null!=g))switch(q){case \"children\":e=g;break;case \"dangerouslySetInnerHTML\":throw Error(l(434));\ndefault:x(a,d,q,g)}a.push(\">\");return e;case \"listing\":case \"pre\":a.push(A(b));g=e=null;for(k in c)if(p.call(c,k)&&(h=c[k],null!=h))switch(k){case \"children\":e=h;break;case \"dangerouslySetInnerHTML\":g=h;break;default:x(a,d,k,h)}a.push(\">\");if(null!=g){if(null!=e)throw Error(l(60));if(\"object\"!==typeof g||!(\"__html\"in g))throw Error(l(61));c=g.__html;null!==c&&void 0!==c&&(\"string\"===typeof c&&0<c.length&&\"\\n\"===c[0]?a.push(\"\\n\",c):a.push(\"\"+c))}\"string\"===typeof e&&\"\\n\"===e[0]&&a.push(\"\\n\");return e;\ncase \"area\":case \"base\":case \"br\":case \"col\":case \"embed\":case \"hr\":case \"img\":case \"keygen\":case \"link\":case \"meta\":case \"param\":case \"source\":case \"track\":case \"wbr\":a.push(A(b));for(var D in c)if(p.call(c,D)&&(e=c[D],null!=e))switch(D){case \"children\":case \"dangerouslySetInnerHTML\":throw Error(l(399,b));default:x(a,d,D,e)}a.push(\"/>\");return null;case \"annotation-xml\":case \"color-profile\":case \"font-face\":case \"font-face-src\":case \"font-face-uri\":case \"font-face-format\":case \"font-face-name\":case \"missing-glyph\":return va(a,\nc,b,d);case \"html\":return 0===f.insertionMode&&a.push(\"<!DOCTYPE html>\"),va(a,c,b,d);default:if(-1===b.indexOf(\"-\")&&\"string\"!==typeof c.is)return va(a,c,b,d);a.push(A(b));g=e=null;for(m in c)if(p.call(c,m)&&(h=c[m],null!=h))switch(m){case \"children\":e=h;break;case \"dangerouslySetInnerHTML\":g=h;break;case \"style\":ta(a,d,h);break;case \"suppressContentEditableWarning\":case \"suppressHydrationWarning\":break;default:ja(m)&&\"function\"!==typeof h&&\"symbol\"!==typeof h&&a.push(\" \",m,'=\"',v(h),'\"')}a.push(\">\");\ny(a,g,e);return e}}function za(a,b,c){a.push('\\x3c!--$?--\\x3e<template id=\"');if(null===c)throw Error(l(395));a.push(c);return a.push('\"></template>')}\nfunction Aa(a,b,c,d){switch(c.insertionMode){case 0:case 1:return a.push('<div hidden id=\"'),a.push(b.segmentPrefix),b=d.toString(16),a.push(b),a.push('\">');case 2:return a.push('<svg aria-hidden=\"true\" style=\"display:none\" id=\"'),a.push(b.segmentPrefix),b=d.toString(16),a.push(b),a.push('\">');case 3:return a.push('<math aria-hidden=\"true\" style=\"display:none\" id=\"'),a.push(b.segmentPrefix),b=d.toString(16),a.push(b),a.push('\">');case 4:return a.push('<table hidden id=\"'),a.push(b.segmentPrefix),\nb=d.toString(16),a.push(b),a.push('\">');case 5:return a.push('<table hidden><tbody id=\"'),a.push(b.segmentPrefix),b=d.toString(16),a.push(b),a.push('\">');case 6:return a.push('<table hidden><tr id=\"'),a.push(b.segmentPrefix),b=d.toString(16),a.push(b),a.push('\">');case 7:return a.push('<table hidden><colgroup id=\"'),a.push(b.segmentPrefix),b=d.toString(16),a.push(b),a.push('\">');default:throw Error(l(397));}}\nfunction Ba(a,b){switch(b.insertionMode){case 0:case 1:return a.push(\"</div>\");case 2:return a.push(\"</svg>\");case 3:return a.push(\"</math>\");case 4:return a.push(\"</table>\");case 5:return a.push(\"</tbody></table>\");case 6:return a.push(\"</tr></table>\");case 7:return a.push(\"</colgroup></table>\");default:throw Error(l(397));}}var Ca=/[<\\u2028\\u2029]/g;\nfunction Da(a){return JSON.stringify(a).replace(Ca,function(a){switch(a){case \"<\":return\"\\\\u003c\";case \"\\u2028\":return\"\\\\u2028\";case \"\\u2029\":return\"\\\\u2029\";default:throw Error(\"escapeJSStringsForInstructionScripts encountered a match it does not know how to replace. this means the match regex and the replacement characters are no longer in sync. This is a bug in React\");}})}\nfunction Ea(a,b){b=void 0===b?\"\":b;return{bootstrapChunks:[],startInlineScript:\"<script>\",placeholderPrefix:b+\"P:\",segmentPrefix:b+\"S:\",boundaryPrefix:b+\"B:\",idPrefix:b,nextSuspenseID:0,sentCompleteSegmentFunction:!1,sentCompleteBoundaryFunction:!1,sentClientRenderFunction:!1,generateStaticMarkup:a}}function Fa(a,b,c,d){if(c.generateStaticMarkup)return a.push(v(b)),!1;\"\"===b?a=d:(d&&a.push(\"\\x3c!-- --\\x3e\"),a.push(v(b)),a=!0);return a}\nvar B=Object.assign,Ga=Symbol.for(\"react.element\"),Ha=Symbol.for(\"react.portal\"),Ia=Symbol.for(\"react.fragment\"),Ja=Symbol.for(\"react.strict_mode\"),Ka=Symbol.for(\"react.profiler\"),La=Symbol.for(\"react.provider\"),Ma=Symbol.for(\"react.context\"),Na=Symbol.for(\"react.forward_ref\"),Oa=Symbol.for(\"react.suspense\"),Pa=Symbol.for(\"react.suspense_list\"),Qa=Symbol.for(\"react.memo\"),Ra=Symbol.for(\"react.lazy\"),Sa=Symbol.for(\"react.scope\"),Ta=Symbol.for(\"react.debug_trace_mode\"),Ua=Symbol.for(\"react.legacy_hidden\"),\nVa=Symbol.for(\"react.default_value\"),Wa=Symbol.iterator;\nfunction Xa(a){if(null==a)return null;if(\"function\"===typeof a)return a.displayName||a.name||null;if(\"string\"===typeof a)return a;switch(a){case Ia:return\"Fragment\";case Ha:return\"Portal\";case Ka:return\"Profiler\";case Ja:return\"StrictMode\";case Oa:return\"Suspense\";case Pa:return\"SuspenseList\"}if(\"object\"===typeof a)switch(a.$$typeof){case Ma:return(a.displayName||\"Context\")+\".Consumer\";case La:return(a._context.displayName||\"Context\")+\".Provider\";case Na:var b=a.render;a=a.displayName;a||(a=b.displayName||\nb.name||\"\",a=\"\"!==a?\"ForwardRef(\"+a+\")\":\"ForwardRef\");return a;case Qa:return b=a.displayName||null,null!==b?b:Xa(a.type)||\"Memo\";case Ra:b=a._payload;a=a._init;try{return Xa(a(b))}catch(c){}}return null}var Ya={};function Za(a,b){a=a.contextTypes;if(!a)return Ya;var c={},d;for(d in a)c[d]=b[d];return c}var E=null;\nfunction F(a,b){if(a!==b){a.context._currentValue2=a.parentValue;a=a.parent;var c=b.parent;if(null===a){if(null!==c)throw Error(l(401));}else{if(null===c)throw Error(l(401));F(a,c)}b.context._currentValue2=b.value}}function $a(a){a.context._currentValue2=a.parentValue;a=a.parent;null!==a&&$a(a)}function ab(a){var b=a.parent;null!==b&&ab(b);a.context._currentValue2=a.value}\nfunction bb(a,b){a.context._currentValue2=a.parentValue;a=a.parent;if(null===a)throw Error(l(402));a.depth===b.depth?F(a,b):bb(a,b)}function cb(a,b){var c=b.parent;if(null===c)throw Error(l(402));a.depth===c.depth?F(a,c):cb(a,c);b.context._currentValue2=b.value}function G(a){var b=E;b!==a&&(null===b?ab(a):null===a?$a(b):b.depth===a.depth?F(b,a):b.depth>a.depth?bb(b,a):cb(b,a),E=a)}\nvar db={isMounted:function(){return!1},enqueueSetState:function(a,b){a=a._reactInternals;null!==a.queue&&a.queue.push(b)},enqueueReplaceState:function(a,b){a=a._reactInternals;a.replace=!0;a.queue=[b]},enqueueForceUpdate:function(){}};\nfunction eb(a,b,c,d){var f=void 0!==a.state?a.state:null;a.updater=db;a.props=c;a.state=f;var e={queue:[],replace:!1};a._reactInternals=e;var g=b.contextType;a.context=\"object\"===typeof g&&null!==g?g._currentValue2:d;g=b.getDerivedStateFromProps;\"function\"===typeof g&&(g=g(c,f),f=null===g||void 0===g?f:B({},f,g),a.state=f);if(\"function\"!==typeof b.getDerivedStateFromProps&&\"function\"!==typeof a.getSnapshotBeforeUpdate&&(\"function\"===typeof a.UNSAFE_componentWillMount||\"function\"===typeof a.componentWillMount))if(b=\na.state,\"function\"===typeof a.componentWillMount&&a.componentWillMount(),\"function\"===typeof a.UNSAFE_componentWillMount&&a.UNSAFE_componentWillMount(),b!==a.state&&db.enqueueReplaceState(a,a.state,null),null!==e.queue&&0<e.queue.length)if(b=e.queue,g=e.replace,e.queue=null,e.replace=!1,g&&1===b.length)a.state=b[0];else{e=g?b[0]:a.state;f=!0;for(g=g?1:0;g<b.length;g++){var h=b[g];h=\"function\"===typeof h?h.call(a,e,c,d):h;null!=h&&(f?(f=!1,e=B({},e,h)):B(e,h))}a.state=e}else e.queue=null}\nvar fb={id:1,overflow:\"\"};function gb(a,b,c){var d=a.id;a=a.overflow;var f=32-H(d)-1;d&=~(1<<f);c+=1;var e=32-H(b)+f;if(30<e){var g=f-f%5;e=(d&(1<<g)-1).toString(32);d>>=g;f-=g;return{id:1<<32-H(b)+f|c<<f|d,overflow:e+a}}return{id:1<<e|c<<f|d,overflow:a}}var H=Math.clz32?Math.clz32:hb,ib=Math.log,jb=Math.LN2;function hb(a){a>>>=0;return 0===a?32:31-(ib(a)/jb|0)|0}function kb(a,b){return a===b&&(0!==a||1/a===1/b)||a!==a&&b!==b}\nvar lb=\"function\"===typeof Object.is?Object.is:kb,I=null,ob=null,J=null,K=null,L=!1,M=!1,N=0,O=null,P=0;function Q(){if(null===I)throw Error(l(321));return I}function pb(){if(0<P)throw Error(l(312));return{memoizedState:null,queue:null,next:null}}function qb(){null===K?null===J?(L=!1,J=K=pb()):(L=!0,K=J):null===K.next?(L=!1,K=K.next=pb()):(L=!0,K=K.next);return K}function rb(){ob=I=null;M=!1;J=null;P=0;K=O=null}function sb(a,b){return\"function\"===typeof b?b(a):b}\nfunction tb(a,b,c){I=Q();K=qb();if(L){var d=K.queue;b=d.dispatch;if(null!==O&&(c=O.get(d),void 0!==c)){O.delete(d);d=K.memoizedState;do d=a(d,c.action),c=c.next;while(null!==c);K.memoizedState=d;return[d,b]}return[K.memoizedState,b]}a=a===sb?\"function\"===typeof b?b():b:void 0!==c?c(b):b;K.memoizedState=a;a=K.queue={last:null,dispatch:null};a=a.dispatch=ub.bind(null,I,a);return[K.memoizedState,a]}\nfunction vb(a,b){I=Q();K=qb();b=void 0===b?null:b;if(null!==K){var c=K.memoizedState;if(null!==c&&null!==b){var d=c[1];a:if(null===d)d=!1;else{for(var f=0;f<d.length&&f<b.length;f++)if(!lb(b[f],d[f])){d=!1;break a}d=!0}if(d)return c[0]}}a=a();K.memoizedState=[a,b];return a}function ub(a,b,c){if(25<=P)throw Error(l(301));if(a===I)if(M=!0,a={action:c,next:null},null===O&&(O=new Map),c=O.get(b),void 0===c)O.set(b,a);else{for(b=c;null!==b.next;)b=b.next;b.next=a}}function wb(){throw Error(l(394));}\nfunction R(){}\nvar xb={readContext:function(a){return a._currentValue2},useContext:function(a){Q();return a._currentValue2},useMemo:vb,useReducer:tb,useRef:function(a){I=Q();K=qb();var b=K.memoizedState;return null===b?(a={current:a},K.memoizedState=a):b},useState:function(a){return tb(sb,a)},useInsertionEffect:R,useLayoutEffect:function(){},useCallback:function(a,b){return vb(function(){return a},b)},useImperativeHandle:R,useEffect:R,useDebugValue:R,useDeferredValue:function(a){Q();return a},useTransition:function(){Q();return[!1,\nwb]},useId:function(){var a=ob.treeContext;var b=a.overflow;a=a.id;a=(a&~(1<<32-H(a)-1)).toString(32)+b;var c=S;if(null===c)throw Error(l(404));b=N++;a=\":\"+c.idPrefix+\"R\"+a;0<b&&(a+=\"H\"+b.toString(32));return a+\":\"},useMutableSource:function(a,b){Q();return b(a._source)},useSyncExternalStore:function(a,b,c){if(void 0===c)throw Error(l(407));return c()}},S=null,yb=aa.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentDispatcher;function zb(a){console.error(a);return null}\nfunction T(){}\nfunction Ab(a,b,c,d,f,e,g,h,k){var m=[],n=new Set;b={destination:null,responseState:b,progressiveChunkSize:void 0===d?12800:d,status:0,fatalError:null,nextSegmentId:0,allPendingTasks:0,pendingRootTasks:0,completedRootSegment:null,abortableTasks:n,pingedTasks:m,clientRenderedBoundaries:[],completedBoundaries:[],partialBoundaries:[],onError:void 0===f?zb:f,onAllReady:void 0===e?T:e,onShellReady:void 0===g?T:g,onShellError:void 0===h?T:h,onFatalError:void 0===k?T:k};c=U(b,0,null,c,!1,!1);c.parentFlushed=\n!0;a=Bb(b,a,null,c,n,Ya,null,fb);m.push(a);return b}function Bb(a,b,c,d,f,e,g,h){a.allPendingTasks++;null===c?a.pendingRootTasks++:c.pendingTasks++;var k={node:b,ping:function(){var b=a.pingedTasks;b.push(k);1===b.length&&Cb(a)},blockedBoundary:c,blockedSegment:d,abortSet:f,legacyContext:e,context:g,treeContext:h};f.add(k);return k}function U(a,b,c,d,f,e){return{status:0,id:-1,index:b,parentFlushed:!1,chunks:[],children:[],formatContext:d,boundary:c,lastPushedText:f,textEmbedded:e}}\nfunction V(a,b){a=a.onError(b);if(null!=a&&\"string\"!==typeof a)throw Error('onError returned something with a type other than \"string\". onError should return a string and may return null or undefined but must not return anything else. It received something of type \"'+typeof a+'\" instead');return a}function W(a,b){var c=a.onShellError;c(b);c=a.onFatalError;c(b);null!==a.destination?(a.status=2,a.destination.destroy(b)):(a.status=1,a.fatalError=b)}\nfunction Db(a,b,c,d,f){I={};ob=b;N=0;for(a=c(d,f);M;)M=!1,N=0,P+=1,K=null,a=c(d,f);rb();return a}function Eb(a,b,c,d){var f=c.render(),e=d.childContextTypes;if(null!==e&&void 0!==e){var g=b.legacyContext;if(\"function\"!==typeof c.getChildContext)d=g;else{c=c.getChildContext();for(var h in c)if(!(h in e))throw Error(l(108,Xa(d)||\"Unknown\",h));d=B({},g,c)}b.legacyContext=d;X(a,b,f);b.legacyContext=g}else X(a,b,f)}\nfunction Fb(a,b){if(a&&a.defaultProps){b=B({},b);a=a.defaultProps;for(var c in a)void 0===b[c]&&(b[c]=a[c]);return b}return b}\nfunction Gb(a,b,c,d,f){if(\"function\"===typeof c)if(c.prototype&&c.prototype.isReactComponent){f=Za(c,b.legacyContext);var e=c.contextType;e=new c(d,\"object\"===typeof e&&null!==e?e._currentValue2:f);eb(e,c,d,f);Eb(a,b,e,c)}else{e=Za(c,b.legacyContext);f=Db(a,b,c,d,e);var g=0!==N;if(\"object\"===typeof f&&null!==f&&\"function\"===typeof f.render&&void 0===f.$$typeof)eb(f,c,d,e),Eb(a,b,f,c);else if(g){d=b.treeContext;b.treeContext=gb(d,1,0);try{X(a,b,f)}finally{b.treeContext=d}}else X(a,b,f)}else if(\"string\"===\ntypeof c){f=b.blockedSegment;e=ya(f.chunks,c,d,a.responseState,f.formatContext);f.lastPushedText=!1;g=f.formatContext;f.formatContext=ra(g,c,d);Hb(a,b,e);f.formatContext=g;switch(c){case \"area\":case \"base\":case \"br\":case \"col\":case \"embed\":case \"hr\":case \"img\":case \"input\":case \"keygen\":case \"link\":case \"meta\":case \"param\":case \"source\":case \"track\":case \"wbr\":break;default:f.chunks.push(\"</\",c,\">\")}f.lastPushedText=!1}else{switch(c){case Ua:case Ta:case Ja:case Ka:case Ia:X(a,b,d.children);return;\ncase Pa:X(a,b,d.children);return;case Sa:throw Error(l(343));case Oa:a:{c=b.blockedBoundary;f=b.blockedSegment;e=d.fallback;d=d.children;g=new Set;var h={id:null,rootSegmentID:-1,parentFlushed:!1,pendingTasks:0,forceClientRender:!1,completedSegments:[],byteSize:0,fallbackAbortableTasks:g,errorDigest:null},k=U(a,f.chunks.length,h,f.formatContext,!1,!1);f.children.push(k);f.lastPushedText=!1;var m=U(a,0,null,f.formatContext,!1,!1);m.parentFlushed=!0;b.blockedBoundary=h;b.blockedSegment=m;try{if(Hb(a,\nb,d),a.responseState.generateStaticMarkup||m.lastPushedText&&m.textEmbedded&&m.chunks.push(\"\\x3c!-- --\\x3e\"),m.status=1,Y(h,m),0===h.pendingTasks)break a}catch(n){m.status=4,h.forceClientRender=!0,h.errorDigest=V(a,n)}finally{b.blockedBoundary=c,b.blockedSegment=f}b=Bb(a,e,c,k,g,b.legacyContext,b.context,b.treeContext);a.pingedTasks.push(b)}return}if(\"object\"===typeof c&&null!==c)switch(c.$$typeof){case Na:d=Db(a,b,c.render,d,f);if(0!==N){c=b.treeContext;b.treeContext=gb(c,1,0);try{X(a,b,d)}finally{b.treeContext=\nc}}else X(a,b,d);return;case Qa:c=c.type;d=Fb(c,d);Gb(a,b,c,d,f);return;case La:f=d.children;c=c._context;d=d.value;e=c._currentValue2;c._currentValue2=d;g=E;E=d={parent:g,depth:null===g?0:g.depth+1,context:c,parentValue:e,value:d};b.context=d;X(a,b,f);a=E;if(null===a)throw Error(l(403));d=a.parentValue;a.context._currentValue2=d===Va?a.context._defaultValue:d;a=E=a.parent;b.context=a;return;case Ma:d=d.children;d=d(c._currentValue2);X(a,b,d);return;case Ra:f=c._init;c=f(c._payload);d=Fb(c,d);Gb(a,\nb,c,d,void 0);return}throw Error(l(130,null==c?c:typeof c,\"\"));}}\nfunction X(a,b,c){b.node=c;if(\"object\"===typeof c&&null!==c){switch(c.$$typeof){case Ga:Gb(a,b,c.type,c.props,c.ref);return;case Ha:throw Error(l(257));case Ra:var d=c._init;c=d(c._payload);X(a,b,c);return}if(qa(c)){Ib(a,b,c);return}null===c||\"object\"!==typeof c?d=null:(d=Wa&&c[Wa]||c[\"@@iterator\"],d=\"function\"===typeof d?d:null);if(d&&(d=d.call(c))){c=d.next();if(!c.done){var f=[];do f.push(c.value),c=d.next();while(!c.done);Ib(a,b,f)}return}a=Object.prototype.toString.call(c);throw Error(l(31,\"[object Object]\"===\na?\"object with keys {\"+Object.keys(c).join(\", \")+\"}\":a));}\"string\"===typeof c?(d=b.blockedSegment,d.lastPushedText=Fa(b.blockedSegment.chunks,c,a.responseState,d.lastPushedText)):\"number\"===typeof c&&(d=b.blockedSegment,d.lastPushedText=Fa(b.blockedSegment.chunks,\"\"+c,a.responseState,d.lastPushedText))}function Ib(a,b,c){for(var d=c.length,f=0;f<d;f++){var e=b.treeContext;b.treeContext=gb(e,d,f);try{Hb(a,b,c[f])}finally{b.treeContext=e}}}\nfunction Hb(a,b,c){var d=b.blockedSegment.formatContext,f=b.legacyContext,e=b.context;try{return X(a,b,c)}catch(k){if(rb(),\"object\"===typeof k&&null!==k&&\"function\"===typeof k.then){c=k;var g=b.blockedSegment,h=U(a,g.chunks.length,null,g.formatContext,g.lastPushedText,!0);g.children.push(h);g.lastPushedText=!1;a=Bb(a,b.node,b.blockedBoundary,h,b.abortSet,b.legacyContext,b.context,b.treeContext).ping;c.then(a,a);b.blockedSegment.formatContext=d;b.legacyContext=f;b.context=e;G(e)}else throw b.blockedSegment.formatContext=\nd,b.legacyContext=f,b.context=e,G(e),k;}}function Jb(a){var b=a.blockedBoundary;a=a.blockedSegment;a.status=3;Kb(this,b,a)}\nfunction Lb(a,b,c){var d=a.blockedBoundary;a.blockedSegment.status=3;null===d?(b.allPendingTasks--,2!==b.status&&(b.status=2,null!==b.destination&&b.destination.push(null))):(d.pendingTasks--,d.forceClientRender||(d.forceClientRender=!0,a=void 0===c?Error(l(432)):c,d.errorDigest=b.onError(a),d.parentFlushed&&b.clientRenderedBoundaries.push(d)),d.fallbackAbortableTasks.forEach(function(a){return Lb(a,b,c)}),d.fallbackAbortableTasks.clear(),b.allPendingTasks--,0===b.allPendingTasks&&(d=b.onAllReady,\nd()))}function Y(a,b){if(0===b.chunks.length&&1===b.children.length&&null===b.children[0].boundary){var c=b.children[0];c.id=b.id;c.parentFlushed=!0;1===c.status&&Y(a,c)}else a.completedSegments.push(b)}\nfunction Kb(a,b,c){if(null===b){if(c.parentFlushed){if(null!==a.completedRootSegment)throw Error(l(389));a.completedRootSegment=c}a.pendingRootTasks--;0===a.pendingRootTasks&&(a.onShellError=T,b=a.onShellReady,b())}else b.pendingTasks--,b.forceClientRender||(0===b.pendingTasks?(c.parentFlushed&&1===c.status&&Y(b,c),b.parentFlushed&&a.completedBoundaries.push(b),b.fallbackAbortableTasks.forEach(Jb,a),b.fallbackAbortableTasks.clear()):c.parentFlushed&&1===c.status&&(Y(b,c),1===b.completedSegments.length&&\nb.parentFlushed&&a.partialBoundaries.push(b)));a.allPendingTasks--;0===a.allPendingTasks&&(a=a.onAllReady,a())}\nfunction Cb(a){if(2!==a.status){var b=E,c=yb.current;yb.current=xb;var d=S;S=a.responseState;try{var f=a.pingedTasks,e;for(e=0;e<f.length;e++){var g=f[e];var h=a,k=g.blockedSegment;if(0===k.status){G(g.context);try{X(h,g,g.node),h.responseState.generateStaticMarkup||k.lastPushedText&&k.textEmbedded&&k.chunks.push(\"\\x3c!-- --\\x3e\"),g.abortSet.delete(g),k.status=1,Kb(h,g.blockedBoundary,k)}catch(z){if(rb(),\"object\"===typeof z&&null!==z&&\"function\"===typeof z.then){var m=g.ping;z.then(m,m)}else{g.abortSet.delete(g);\nk.status=4;var n=g.blockedBoundary,q=z,C=V(h,q);null===n?W(h,q):(n.pendingTasks--,n.forceClientRender||(n.forceClientRender=!0,n.errorDigest=C,n.parentFlushed&&h.clientRenderedBoundaries.push(n)));h.allPendingTasks--;if(0===h.allPendingTasks){var D=h.onAllReady;D()}}}finally{}}}f.splice(0,e);null!==a.destination&&Mb(a,a.destination)}catch(z){V(a,z),W(a,z)}finally{S=d,yb.current=c,c===xb&&G(b)}}}\nfunction Z(a,b,c){c.parentFlushed=!0;switch(c.status){case 0:var d=c.id=a.nextSegmentId++;c.lastPushedText=!1;c.textEmbedded=!1;a=a.responseState;b.push('<template id=\"');b.push(a.placeholderPrefix);a=d.toString(16);b.push(a);return b.push('\"></template>');case 1:c.status=2;var f=!0;d=c.chunks;var e=0;c=c.children;for(var g=0;g<c.length;g++){for(f=c[g];e<f.index;e++)b.push(d[e]);f=Nb(a,b,f)}for(;e<d.length-1;e++)b.push(d[e]);e<d.length&&(f=b.push(d[e]));return f;default:throw Error(l(390));}}\nfunction Nb(a,b,c){var d=c.boundary;if(null===d)return Z(a,b,c);d.parentFlushed=!0;if(d.forceClientRender)return a.responseState.generateStaticMarkup||(d=d.errorDigest,b.push(\"\\x3c!--$!--\\x3e\"),b.push(\"<template\"),d&&(b.push(' data-dgst=\"'),d=v(d),b.push(d),b.push('\"')),b.push(\"></template>\")),Z(a,b,c),a=a.responseState.generateStaticMarkup?!0:b.push(\"\\x3c!--/$--\\x3e\"),a;if(0<d.pendingTasks){d.rootSegmentID=a.nextSegmentId++;0<d.completedSegments.length&&a.partialBoundaries.push(d);var f=a.responseState;\nvar e=f.nextSuspenseID++;f=f.boundaryPrefix+e.toString(16);d=d.id=f;za(b,a.responseState,d);Z(a,b,c);return b.push(\"\\x3c!--/$--\\x3e\")}if(d.byteSize>a.progressiveChunkSize)return d.rootSegmentID=a.nextSegmentId++,a.completedBoundaries.push(d),za(b,a.responseState,d.id),Z(a,b,c),b.push(\"\\x3c!--/$--\\x3e\");a.responseState.generateStaticMarkup||b.push(\"\\x3c!--$--\\x3e\");c=d.completedSegments;if(1!==c.length)throw Error(l(391));Nb(a,b,c[0]);a=a.responseState.generateStaticMarkup?!0:b.push(\"\\x3c!--/$--\\x3e\");\nreturn a}function Ob(a,b,c){Aa(b,a.responseState,c.formatContext,c.id);Nb(a,b,c);return Ba(b,c.formatContext)}\nfunction Pb(a,b,c){for(var d=c.completedSegments,f=0;f<d.length;f++)Qb(a,b,c,d[f]);d.length=0;a=a.responseState;d=c.id;c=c.rootSegmentID;b.push(a.startInlineScript);a.sentCompleteBoundaryFunction?b.push('$RC(\"'):(a.sentCompleteBoundaryFunction=!0,b.push('function $RC(a,b){a=document.getElementById(a);b=document.getElementById(b);b.parentNode.removeChild(b);if(a){a=a.previousSibling;var f=a.parentNode,c=a.nextSibling,e=0;do{if(c&&8===c.nodeType){var d=c.data;if(\"/$\"===d)if(0===e)break;else e--;else\"$\"!==d&&\"$?\"!==d&&\"$!\"!==d||e++}d=c.nextSibling;f.removeChild(c);c=d}while(c);for(;b.firstChild;)f.insertBefore(b.firstChild,c);a.data=\"$\";a._reactRetry&&a._reactRetry()}};$RC(\"'));if(null===\nd)throw Error(l(395));c=c.toString(16);b.push(d);b.push('\",\"');b.push(a.segmentPrefix);b.push(c);return b.push('\")\\x3c/script>')}\nfunction Qb(a,b,c,d){if(2===d.status)return!0;var f=d.id;if(-1===f){if(-1===(d.id=c.rootSegmentID))throw Error(l(392));return Ob(a,b,d)}Ob(a,b,d);a=a.responseState;b.push(a.startInlineScript);a.sentCompleteSegmentFunction?b.push('$RS(\"'):(a.sentCompleteSegmentFunction=!0,b.push('function $RS(a,b){a=document.getElementById(a);b=document.getElementById(b);for(a.parentNode.removeChild(a);a.firstChild;)b.parentNode.insertBefore(a.firstChild,b);b.parentNode.removeChild(b)};$RS(\"'));b.push(a.segmentPrefix);\nf=f.toString(16);b.push(f);b.push('\",\"');b.push(a.placeholderPrefix);b.push(f);return b.push('\")\\x3c/script>')}\nfunction Mb(a,b){try{var c=a.completedRootSegment;if(null!==c&&0===a.pendingRootTasks){Nb(a,b,c);a.completedRootSegment=null;var d=a.responseState.bootstrapChunks;for(c=0;c<d.length-1;c++)b.push(d[c]);c<d.length&&b.push(d[c])}var f=a.clientRenderedBoundaries,e;for(e=0;e<f.length;e++){var g=f[e];d=b;var h=a.responseState,k=g.id,m=g.errorDigest,n=g.errorMessage,q=g.errorComponentStack;d.push(h.startInlineScript);h.sentClientRenderFunction?d.push('$RX(\"'):(h.sentClientRenderFunction=!0,d.push('function $RX(b,c,d,e){var a=document.getElementById(b);a&&(b=a.previousSibling,b.data=\"$!\",a=a.dataset,c&&(a.dgst=c),d&&(a.msg=d),e&&(a.stck=e),b._reactRetry&&b._reactRetry())};$RX(\"'));\nif(null===k)throw Error(l(395));d.push(k);d.push('\"');if(m||n||q){d.push(\",\");var C=Da(m||\"\");d.push(C)}if(n||q){d.push(\",\");var D=Da(n||\"\");d.push(D)}if(q){d.push(\",\");var z=Da(q);d.push(z)}if(!d.push(\")\\x3c/script>\")){a.destination=null;e++;f.splice(0,e);return}}f.splice(0,e);var ba=a.completedBoundaries;for(e=0;e<ba.length;e++)if(!Pb(a,b,ba[e])){a.destination=null;e++;ba.splice(0,e);return}ba.splice(0,e);var ca=a.partialBoundaries;for(e=0;e<ca.length;e++){var mb=ca[e];a:{f=a;g=b;var da=mb.completedSegments;\nfor(h=0;h<da.length;h++)if(!Qb(f,g,mb,da[h])){h++;da.splice(0,h);var nb=!1;break a}da.splice(0,h);nb=!0}if(!nb){a.destination=null;e++;ca.splice(0,e);return}}ca.splice(0,e);var ea=a.completedBoundaries;for(e=0;e<ea.length;e++)if(!Pb(a,b,ea[e])){a.destination=null;e++;ea.splice(0,e);return}ea.splice(0,e)}finally{0===a.allPendingTasks&&0===a.pingedTasks.length&&0===a.clientRenderedBoundaries.length&&0===a.completedBoundaries.length&&b.push(null)}}\nfunction Rb(a,b){try{var c=a.abortableTasks;c.forEach(function(c){return Lb(c,a,b)});c.clear();null!==a.destination&&Mb(a,a.destination)}catch(d){V(a,d),W(a,d)}}function Sb(){}\nfunction Tb(a,b,c,d){var f=!1,e=null,g=\"\",h={push:function(a){null!==a&&(g+=a);return!0},destroy:function(a){f=!0;e=a}},k=!1;a=Ab(a,Ea(c,b?b.identifierPrefix:void 0),{insertionMode:1,selectedValue:null},Infinity,Sb,void 0,function(){k=!0},void 0,void 0);Cb(a);Rb(a,d);if(1===a.status)a.status=2,h.destroy(a.fatalError);else if(2!==a.status&&null===a.destination){a.destination=h;try{Mb(a,h)}catch(m){V(a,m),W(a,m)}}if(f)throw e;if(!k)throw Error(l(426));return g}\nexports.renderToNodeStream=function(){throw Error(l(207));};exports.renderToStaticMarkup=function(a,b){return Tb(a,b,!0,'The server used \"renderToStaticMarkup\" which does not support Suspense. If you intended to have the server wait for the suspended component please switch to \"renderToReadableStream\" which supports Suspense on the server')};exports.renderToStaticNodeStream=function(){throw Error(l(208));};exports.renderToString=function(a,b){return Tb(a,b,!1,'The server used \"renderToString\" which does not support Suspense. If you intended for this Suspense boundary to render the fallback content on the server consider throwing an Error somewhere within the Suspense boundary. If you intended to have the server wait for the suspended component please switch to \"renderToReadableStream\" which supports Suspense on the server')};\nexports.version=\"18.3.1\";\n","/**\n * @license React\n * react-dom-server.browser.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var aa=require(\"react\");function k(a){for(var b=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=1;c<arguments.length;c++)b+=\"&args[]=\"+encodeURIComponent(arguments[c]);return\"Minified React error #\"+a+\"; visit \"+b+\" for the full message or use the non-minified dev environment for full errors and additional helpful warnings.\"}var l=null,n=0;\nfunction p(a,b){if(0!==b.length)if(512<b.length)0<n&&(a.enqueue(new Uint8Array(l.buffer,0,n)),l=new Uint8Array(512),n=0),a.enqueue(b);else{var c=l.length-n;c<b.length&&(0===c?a.enqueue(l):(l.set(b.subarray(0,c),n),a.enqueue(l),b=b.subarray(c)),l=new Uint8Array(512),n=0);l.set(b,n);n+=b.length}}function t(a,b){p(a,b);return!0}function ba(a){l&&0<n&&(a.enqueue(new Uint8Array(l.buffer,0,n)),l=null,n=0)}var ca=new TextEncoder;function u(a){return ca.encode(a)}function w(a){return ca.encode(a)}\nfunction da(a,b){\"function\"===typeof a.error?a.error(b):a.close()}var x=Object.prototype.hasOwnProperty,ea=/^[:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD][:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\-.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*$/,fa={},ha={};\nfunction ia(a){if(x.call(ha,a))return!0;if(x.call(fa,a))return!1;if(ea.test(a))return ha[a]=!0;fa[a]=!0;return!1}function y(a,b,c,d,f,e,g){this.acceptsBooleans=2===b||3===b||4===b;this.attributeName=d;this.attributeNamespace=f;this.mustUseProperty=c;this.propertyName=a;this.type=b;this.sanitizeURL=e;this.removeEmptyString=g}var z={};\n\"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style\".split(\" \").forEach(function(a){z[a]=new y(a,0,!1,a,null,!1,!1)});[[\"acceptCharset\",\"accept-charset\"],[\"className\",\"class\"],[\"htmlFor\",\"for\"],[\"httpEquiv\",\"http-equiv\"]].forEach(function(a){var b=a[0];z[b]=new y(b,1,!1,a[1],null,!1,!1)});[\"contentEditable\",\"draggable\",\"spellCheck\",\"value\"].forEach(function(a){z[a]=new y(a,2,!1,a.toLowerCase(),null,!1,!1)});\n[\"autoReverse\",\"externalResourcesRequired\",\"focusable\",\"preserveAlpha\"].forEach(function(a){z[a]=new y(a,2,!1,a,null,!1,!1)});\"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope\".split(\" \").forEach(function(a){z[a]=new y(a,3,!1,a.toLowerCase(),null,!1,!1)});\n[\"checked\",\"multiple\",\"muted\",\"selected\"].forEach(function(a){z[a]=new y(a,3,!0,a,null,!1,!1)});[\"capture\",\"download\"].forEach(function(a){z[a]=new y(a,4,!1,a,null,!1,!1)});[\"cols\",\"rows\",\"size\",\"span\"].forEach(function(a){z[a]=new y(a,6,!1,a,null,!1,!1)});[\"rowSpan\",\"start\"].forEach(function(a){z[a]=new y(a,5,!1,a.toLowerCase(),null,!1,!1)});var ja=/[\\-:]([a-z])/g;function ka(a){return a[1].toUpperCase()}\n\"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height\".split(\" \").forEach(function(a){var b=a.replace(ja,\nka);z[b]=new y(b,1,!1,a,null,!1,!1)});\"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type\".split(\" \").forEach(function(a){var b=a.replace(ja,ka);z[b]=new y(b,1,!1,a,\"http://www.w3.org/1999/xlink\",!1,!1)});[\"xml:base\",\"xml:lang\",\"xml:space\"].forEach(function(a){var b=a.replace(ja,ka);z[b]=new y(b,1,!1,a,\"http://www.w3.org/XML/1998/namespace\",!1,!1)});[\"tabIndex\",\"crossOrigin\"].forEach(function(a){z[a]=new y(a,1,!1,a.toLowerCase(),null,!1,!1)});\nz.xlinkHref=new y(\"xlinkHref\",1,!1,\"xlink:href\",\"http://www.w3.org/1999/xlink\",!0,!1);[\"src\",\"href\",\"action\",\"formAction\"].forEach(function(a){z[a]=new y(a,1,!1,a.toLowerCase(),null,!0,!0)});\nvar B={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,\nfillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},la=[\"Webkit\",\"ms\",\"Moz\",\"O\"];Object.keys(B).forEach(function(a){la.forEach(function(b){b=b+a.charAt(0).toUpperCase()+a.substring(1);B[b]=B[a]})});var oa=/[\"'&<>]/;\nfunction C(a){if(\"boolean\"===typeof a||\"number\"===typeof a)return\"\"+a;a=\"\"+a;var b=oa.exec(a);if(b){var c=\"\",d,f=0;for(d=b.index;d<a.length;d++){switch(a.charCodeAt(d)){case 34:b=\"&quot;\";break;case 38:b=\"&amp;\";break;case 39:b=\"&#x27;\";break;case 60:b=\"&lt;\";break;case 62:b=\"&gt;\";break;default:continue}f!==d&&(c+=a.substring(f,d));f=d+1;c+=b}a=f!==d?c+a.substring(f,d):c}return a}\nvar pa=/([A-Z])/g,qa=/^ms-/,ra=Array.isArray,sa=w(\"<script>\"),ta=w(\"\\x3c/script>\"),ua=w('<script src=\"'),va=w('<script type=\"module\" src=\"'),wa=w('\" async=\"\">\\x3c/script>'),xa=/(<\\/|<)(s)(cript)/gi;function ya(a,b,c,d){return\"\"+b+(\"s\"===c?\"\\\\u0073\":\"\\\\u0053\")+d}\nfunction za(a,b,c,d,f){a=void 0===a?\"\":a;b=void 0===b?sa:w('<script nonce=\"'+C(b)+'\">');var e=[];void 0!==c&&e.push(b,u((\"\"+c).replace(xa,ya)),ta);if(void 0!==d)for(c=0;c<d.length;c++)e.push(ua,u(C(d[c])),wa);if(void 0!==f)for(d=0;d<f.length;d++)e.push(va,u(C(f[d])),wa);return{bootstrapChunks:e,startInlineScript:b,placeholderPrefix:w(a+\"P:\"),segmentPrefix:w(a+\"S:\"),boundaryPrefix:a+\"B:\",idPrefix:a,nextSuspenseID:0,sentCompleteSegmentFunction:!1,sentCompleteBoundaryFunction:!1,sentClientRenderFunction:!1}}\nfunction D(a,b){return{insertionMode:a,selectedValue:b}}function Aa(a){return D(\"http://www.w3.org/2000/svg\"===a?2:\"http://www.w3.org/1998/Math/MathML\"===a?3:0,null)}\nfunction Ba(a,b,c){switch(b){case \"select\":return D(1,null!=c.value?c.value:c.defaultValue);case \"svg\":return D(2,null);case \"math\":return D(3,null);case \"foreignObject\":return D(1,null);case \"table\":return D(4,null);case \"thead\":case \"tbody\":case \"tfoot\":return D(5,null);case \"colgroup\":return D(7,null);case \"tr\":return D(6,null)}return 4<=a.insertionMode||0===a.insertionMode?D(1,null):a}var Ca=w(\"\\x3c!-- --\\x3e\");function Da(a,b,c,d){if(\"\"===b)return d;d&&a.push(Ca);a.push(u(C(b)));return!0}\nvar Ea=new Map,Fa=w(' style=\"'),Ga=w(\":\"),Ha=w(\";\");\nfunction Ia(a,b,c){if(\"object\"!==typeof c)throw Error(k(62));b=!0;for(var d in c)if(x.call(c,d)){var f=c[d];if(null!=f&&\"boolean\"!==typeof f&&\"\"!==f){if(0===d.indexOf(\"--\")){var e=u(C(d));f=u(C((\"\"+f).trim()))}else{e=d;var g=Ea.get(e);void 0!==g?e=g:(g=w(C(e.replace(pa,\"-$1\").toLowerCase().replace(qa,\"-ms-\"))),Ea.set(e,g),e=g);f=\"number\"===typeof f?0===f||x.call(B,d)?u(\"\"+f):u(f+\"px\"):u(C((\"\"+f).trim()))}b?(b=!1,a.push(Fa,e,Ga,f)):a.push(Ha,e,Ga,f)}}b||a.push(E)}\nvar H=w(\" \"),I=w('=\"'),E=w('\"'),Ja=w('=\"\"');\nfunction J(a,b,c,d){switch(c){case \"style\":Ia(a,b,d);return;case \"defaultValue\":case \"defaultChecked\":case \"innerHTML\":case \"suppressContentEditableWarning\":case \"suppressHydrationWarning\":return}if(!(2<c.length)||\"o\"!==c[0]&&\"O\"!==c[0]||\"n\"!==c[1]&&\"N\"!==c[1])if(b=z.hasOwnProperty(c)?z[c]:null,null!==b){switch(typeof d){case \"function\":case \"symbol\":return;case \"boolean\":if(!b.acceptsBooleans)return}c=u(b.attributeName);switch(b.type){case 3:d&&a.push(H,c,Ja);break;case 4:!0===d?a.push(H,c,Ja):!1!==\nd&&a.push(H,c,I,u(C(d)),E);break;case 5:isNaN(d)||a.push(H,c,I,u(C(d)),E);break;case 6:!isNaN(d)&&1<=d&&a.push(H,c,I,u(C(d)),E);break;default:b.sanitizeURL&&(d=\"\"+d),a.push(H,c,I,u(C(d)),E)}}else if(ia(c)){switch(typeof d){case \"function\":case \"symbol\":return;case \"boolean\":if(b=c.toLowerCase().slice(0,5),\"data-\"!==b&&\"aria-\"!==b)return}a.push(H,u(c),I,u(C(d)),E)}}var K=w(\">\"),Ka=w(\"/>\");\nfunction L(a,b,c){if(null!=b){if(null!=c)throw Error(k(60));if(\"object\"!==typeof b||!(\"__html\"in b))throw Error(k(61));b=b.__html;null!==b&&void 0!==b&&a.push(u(\"\"+b))}}function La(a){var b=\"\";aa.Children.forEach(a,function(a){null!=a&&(b+=a)});return b}var Ma=w(' selected=\"\"');\nfunction Na(a,b,c,d){a.push(M(c));var f=c=null,e;for(e in b)if(x.call(b,e)){var g=b[e];if(null!=g)switch(e){case \"children\":c=g;break;case \"dangerouslySetInnerHTML\":f=g;break;default:J(a,d,e,g)}}a.push(K);L(a,f,c);return\"string\"===typeof c?(a.push(u(C(c))),null):c}var Oa=w(\"\\n\"),Pa=/^[a-zA-Z][a-zA-Z:_\\.\\-\\d]*$/,Qa=new Map;function M(a){var b=Qa.get(a);if(void 0===b){if(!Pa.test(a))throw Error(k(65,a));b=w(\"<\"+a);Qa.set(a,b)}return b}var Ra=w(\"<!DOCTYPE html>\");\nfunction Sa(a,b,c,d,f){switch(b){case \"select\":a.push(M(\"select\"));var e=null,g=null;for(r in c)if(x.call(c,r)){var h=c[r];if(null!=h)switch(r){case \"children\":e=h;break;case \"dangerouslySetInnerHTML\":g=h;break;case \"defaultValue\":case \"value\":break;default:J(a,d,r,h)}}a.push(K);L(a,g,e);return e;case \"option\":g=f.selectedValue;a.push(M(\"option\"));var m=h=null,q=null;var r=null;for(e in c)if(x.call(c,e)){var v=c[e];if(null!=v)switch(e){case \"children\":h=v;break;case \"selected\":q=v;break;case \"dangerouslySetInnerHTML\":r=\nv;break;case \"value\":m=v;default:J(a,d,e,v)}}if(null!=g)if(c=null!==m?\"\"+m:La(h),ra(g))for(d=0;d<g.length;d++){if(\"\"+g[d]===c){a.push(Ma);break}}else\"\"+g===c&&a.push(Ma);else q&&a.push(Ma);a.push(K);L(a,r,h);return h;case \"textarea\":a.push(M(\"textarea\"));r=g=e=null;for(h in c)if(x.call(c,h)&&(m=c[h],null!=m))switch(h){case \"children\":r=m;break;case \"value\":e=m;break;case \"defaultValue\":g=m;break;case \"dangerouslySetInnerHTML\":throw Error(k(91));default:J(a,d,h,m)}null===e&&null!==g&&(e=g);a.push(K);\nif(null!=r){if(null!=e)throw Error(k(92));if(ra(r)&&1<r.length)throw Error(k(93));e=\"\"+r}\"string\"===typeof e&&\"\\n\"===e[0]&&a.push(Oa);null!==e&&a.push(u(C(\"\"+e)));return null;case \"input\":a.push(M(\"input\"));m=r=h=e=null;for(g in c)if(x.call(c,g)&&(q=c[g],null!=q))switch(g){case \"children\":case \"dangerouslySetInnerHTML\":throw Error(k(399,\"input\"));case \"defaultChecked\":m=q;break;case \"defaultValue\":h=q;break;case \"checked\":r=q;break;case \"value\":e=q;break;default:J(a,d,g,q)}null!==r?J(a,d,\"checked\",\nr):null!==m&&J(a,d,\"checked\",m);null!==e?J(a,d,\"value\",e):null!==h&&J(a,d,\"value\",h);a.push(Ka);return null;case \"menuitem\":a.push(M(\"menuitem\"));for(var A in c)if(x.call(c,A)&&(e=c[A],null!=e))switch(A){case \"children\":case \"dangerouslySetInnerHTML\":throw Error(k(400));default:J(a,d,A,e)}a.push(K);return null;case \"title\":a.push(M(\"title\"));e=null;for(v in c)if(x.call(c,v)&&(g=c[v],null!=g))switch(v){case \"children\":e=g;break;case \"dangerouslySetInnerHTML\":throw Error(k(434));default:J(a,d,v,g)}a.push(K);\nreturn e;case \"listing\":case \"pre\":a.push(M(b));g=e=null;for(m in c)if(x.call(c,m)&&(h=c[m],null!=h))switch(m){case \"children\":e=h;break;case \"dangerouslySetInnerHTML\":g=h;break;default:J(a,d,m,h)}a.push(K);if(null!=g){if(null!=e)throw Error(k(60));if(\"object\"!==typeof g||!(\"__html\"in g))throw Error(k(61));c=g.__html;null!==c&&void 0!==c&&(\"string\"===typeof c&&0<c.length&&\"\\n\"===c[0]?a.push(Oa,u(c)):a.push(u(\"\"+c)))}\"string\"===typeof e&&\"\\n\"===e[0]&&a.push(Oa);return e;case \"area\":case \"base\":case \"br\":case \"col\":case \"embed\":case \"hr\":case \"img\":case \"keygen\":case \"link\":case \"meta\":case \"param\":case \"source\":case \"track\":case \"wbr\":a.push(M(b));\nfor(var F in c)if(x.call(c,F)&&(e=c[F],null!=e))switch(F){case \"children\":case \"dangerouslySetInnerHTML\":throw Error(k(399,b));default:J(a,d,F,e)}a.push(Ka);return null;case \"annotation-xml\":case \"color-profile\":case \"font-face\":case \"font-face-src\":case \"font-face-uri\":case \"font-face-format\":case \"font-face-name\":case \"missing-glyph\":return Na(a,c,b,d);case \"html\":return 0===f.insertionMode&&a.push(Ra),Na(a,c,b,d);default:if(-1===b.indexOf(\"-\")&&\"string\"!==typeof c.is)return Na(a,c,b,d);a.push(M(b));\ng=e=null;for(q in c)if(x.call(c,q)&&(h=c[q],null!=h))switch(q){case \"children\":e=h;break;case \"dangerouslySetInnerHTML\":g=h;break;case \"style\":Ia(a,d,h);break;case \"suppressContentEditableWarning\":case \"suppressHydrationWarning\":break;default:ia(q)&&\"function\"!==typeof h&&\"symbol\"!==typeof h&&a.push(H,u(q),I,u(C(h)),E)}a.push(K);L(a,g,e);return e}}\nvar Ta=w(\"</\"),Ua=w(\">\"),Va=w('<template id=\"'),Wa=w('\"></template>'),Xa=w(\"\\x3c!--$--\\x3e\"),Ya=w('\\x3c!--$?--\\x3e<template id=\"'),Za=w('\"></template>'),$a=w(\"\\x3c!--$!--\\x3e\"),ab=w(\"\\x3c!--/$--\\x3e\"),bb=w(\"<template\"),cb=w('\"'),db=w(' data-dgst=\"');w(' data-msg=\"');w(' data-stck=\"');var eb=w(\"></template>\");function fb(a,b,c){p(a,Ya);if(null===c)throw Error(k(395));p(a,c);return t(a,Za)}\nvar gb=w('<div hidden id=\"'),hb=w('\">'),ib=w(\"</div>\"),jb=w('<svg aria-hidden=\"true\" style=\"display:none\" id=\"'),kb=w('\">'),lb=w(\"</svg>\"),mb=w('<math aria-hidden=\"true\" style=\"display:none\" id=\"'),nb=w('\">'),ob=w(\"</math>\"),pb=w('<table hidden id=\"'),qb=w('\">'),rb=w(\"</table>\"),sb=w('<table hidden><tbody id=\"'),tb=w('\">'),ub=w(\"</tbody></table>\"),vb=w('<table hidden><tr id=\"'),wb=w('\">'),xb=w(\"</tr></table>\"),yb=w('<table hidden><colgroup id=\"'),zb=w('\">'),Ab=w(\"</colgroup></table>\");\nfunction Bb(a,b,c,d){switch(c.insertionMode){case 0:case 1:return p(a,gb),p(a,b.segmentPrefix),p(a,u(d.toString(16))),t(a,hb);case 2:return p(a,jb),p(a,b.segmentPrefix),p(a,u(d.toString(16))),t(a,kb);case 3:return p(a,mb),p(a,b.segmentPrefix),p(a,u(d.toString(16))),t(a,nb);case 4:return p(a,pb),p(a,b.segmentPrefix),p(a,u(d.toString(16))),t(a,qb);case 5:return p(a,sb),p(a,b.segmentPrefix),p(a,u(d.toString(16))),t(a,tb);case 6:return p(a,vb),p(a,b.segmentPrefix),p(a,u(d.toString(16))),t(a,wb);case 7:return p(a,\nyb),p(a,b.segmentPrefix),p(a,u(d.toString(16))),t(a,zb);default:throw Error(k(397));}}function Cb(a,b){switch(b.insertionMode){case 0:case 1:return t(a,ib);case 2:return t(a,lb);case 3:return t(a,ob);case 4:return t(a,rb);case 5:return t(a,ub);case 6:return t(a,xb);case 7:return t(a,Ab);default:throw Error(k(397));}}\nvar Db=w('function $RS(a,b){a=document.getElementById(a);b=document.getElementById(b);for(a.parentNode.removeChild(a);a.firstChild;)b.parentNode.insertBefore(a.firstChild,b);b.parentNode.removeChild(b)};$RS(\"'),Eb=w('$RS(\"'),Gb=w('\",\"'),Hb=w('\")\\x3c/script>'),Ib=w('function $RC(a,b){a=document.getElementById(a);b=document.getElementById(b);b.parentNode.removeChild(b);if(a){a=a.previousSibling;var f=a.parentNode,c=a.nextSibling,e=0;do{if(c&&8===c.nodeType){var d=c.data;if(\"/$\"===d)if(0===e)break;else e--;else\"$\"!==d&&\"$?\"!==d&&\"$!\"!==d||e++}d=c.nextSibling;f.removeChild(c);c=d}while(c);for(;b.firstChild;)f.insertBefore(b.firstChild,c);a.data=\"$\";a._reactRetry&&a._reactRetry()}};$RC(\"'),\nJb=w('$RC(\"'),Kb=w('\",\"'),Lb=w('\")\\x3c/script>'),Mb=w('function $RX(b,c,d,e){var a=document.getElementById(b);a&&(b=a.previousSibling,b.data=\"$!\",a=a.dataset,c&&(a.dgst=c),d&&(a.msg=d),e&&(a.stck=e),b._reactRetry&&b._reactRetry())};$RX(\"'),Nb=w('$RX(\"'),Ob=w('\"'),Pb=w(\")\\x3c/script>\"),Qb=w(\",\"),Rb=/[<\\u2028\\u2029]/g;\nfunction Sb(a){return JSON.stringify(a).replace(Rb,function(a){switch(a){case \"<\":return\"\\\\u003c\";case \"\\u2028\":return\"\\\\u2028\";case \"\\u2029\":return\"\\\\u2029\";default:throw Error(\"escapeJSStringsForInstructionScripts encountered a match it does not know how to replace. this means the match regex and the replacement characters are no longer in sync. This is a bug in React\");}})}\nvar N=Object.assign,Tb=Symbol.for(\"react.element\"),Ub=Symbol.for(\"react.portal\"),Vb=Symbol.for(\"react.fragment\"),Wb=Symbol.for(\"react.strict_mode\"),Xb=Symbol.for(\"react.profiler\"),Yb=Symbol.for(\"react.provider\"),Zb=Symbol.for(\"react.context\"),$b=Symbol.for(\"react.forward_ref\"),ac=Symbol.for(\"react.suspense\"),bc=Symbol.for(\"react.suspense_list\"),cc=Symbol.for(\"react.memo\"),dc=Symbol.for(\"react.lazy\"),ec=Symbol.for(\"react.scope\"),fc=Symbol.for(\"react.debug_trace_mode\"),gc=Symbol.for(\"react.legacy_hidden\"),\nhc=Symbol.for(\"react.default_value\"),ic=Symbol.iterator;\nfunction jc(a){if(null==a)return null;if(\"function\"===typeof a)return a.displayName||a.name||null;if(\"string\"===typeof a)return a;switch(a){case Vb:return\"Fragment\";case Ub:return\"Portal\";case Xb:return\"Profiler\";case Wb:return\"StrictMode\";case ac:return\"Suspense\";case bc:return\"SuspenseList\"}if(\"object\"===typeof a)switch(a.$$typeof){case Zb:return(a.displayName||\"Context\")+\".Consumer\";case Yb:return(a._context.displayName||\"Context\")+\".Provider\";case $b:var b=a.render;a=a.displayName;a||(a=b.displayName||\nb.name||\"\",a=\"\"!==a?\"ForwardRef(\"+a+\")\":\"ForwardRef\");return a;case cc:return b=a.displayName||null,null!==b?b:jc(a.type)||\"Memo\";case dc:b=a._payload;a=a._init;try{return jc(a(b))}catch(c){}}return null}var kc={};function lc(a,b){a=a.contextTypes;if(!a)return kc;var c={},d;for(d in a)c[d]=b[d];return c}var O=null;\nfunction P(a,b){if(a!==b){a.context._currentValue=a.parentValue;a=a.parent;var c=b.parent;if(null===a){if(null!==c)throw Error(k(401));}else{if(null===c)throw Error(k(401));P(a,c)}b.context._currentValue=b.value}}function mc(a){a.context._currentValue=a.parentValue;a=a.parent;null!==a&&mc(a)}function nc(a){var b=a.parent;null!==b&&nc(b);a.context._currentValue=a.value}\nfunction oc(a,b){a.context._currentValue=a.parentValue;a=a.parent;if(null===a)throw Error(k(402));a.depth===b.depth?P(a,b):oc(a,b)}function pc(a,b){var c=b.parent;if(null===c)throw Error(k(402));a.depth===c.depth?P(a,c):pc(a,c);b.context._currentValue=b.value}function Q(a){var b=O;b!==a&&(null===b?nc(a):null===a?mc(b):b.depth===a.depth?P(b,a):b.depth>a.depth?oc(b,a):pc(b,a),O=a)}\nvar qc={isMounted:function(){return!1},enqueueSetState:function(a,b){a=a._reactInternals;null!==a.queue&&a.queue.push(b)},enqueueReplaceState:function(a,b){a=a._reactInternals;a.replace=!0;a.queue=[b]},enqueueForceUpdate:function(){}};\nfunction rc(a,b,c,d){var f=void 0!==a.state?a.state:null;a.updater=qc;a.props=c;a.state=f;var e={queue:[],replace:!1};a._reactInternals=e;var g=b.contextType;a.context=\"object\"===typeof g&&null!==g?g._currentValue:d;g=b.getDerivedStateFromProps;\"function\"===typeof g&&(g=g(c,f),f=null===g||void 0===g?f:N({},f,g),a.state=f);if(\"function\"!==typeof b.getDerivedStateFromProps&&\"function\"!==typeof a.getSnapshotBeforeUpdate&&(\"function\"===typeof a.UNSAFE_componentWillMount||\"function\"===typeof a.componentWillMount))if(b=\na.state,\"function\"===typeof a.componentWillMount&&a.componentWillMount(),\"function\"===typeof a.UNSAFE_componentWillMount&&a.UNSAFE_componentWillMount(),b!==a.state&&qc.enqueueReplaceState(a,a.state,null),null!==e.queue&&0<e.queue.length)if(b=e.queue,g=e.replace,e.queue=null,e.replace=!1,g&&1===b.length)a.state=b[0];else{e=g?b[0]:a.state;f=!0;for(g=g?1:0;g<b.length;g++){var h=b[g];h=\"function\"===typeof h?h.call(a,e,c,d):h;null!=h&&(f?(f=!1,e=N({},e,h)):N(e,h))}a.state=e}else e.queue=null}\nvar sc={id:1,overflow:\"\"};function tc(a,b,c){var d=a.id;a=a.overflow;var f=32-uc(d)-1;d&=~(1<<f);c+=1;var e=32-uc(b)+f;if(30<e){var g=f-f%5;e=(d&(1<<g)-1).toString(32);d>>=g;f-=g;return{id:1<<32-uc(b)+f|c<<f|d,overflow:e+a}}return{id:1<<e|c<<f|d,overflow:a}}var uc=Math.clz32?Math.clz32:vc,wc=Math.log,xc=Math.LN2;function vc(a){a>>>=0;return 0===a?32:31-(wc(a)/xc|0)|0}function yc(a,b){return a===b&&(0!==a||1/a===1/b)||a!==a&&b!==b}\nvar zc=\"function\"===typeof Object.is?Object.is:yc,R=null,Ac=null,Bc=null,S=null,T=!1,Cc=!1,U=0,V=null,Dc=0;function W(){if(null===R)throw Error(k(321));return R}function Ec(){if(0<Dc)throw Error(k(312));return{memoizedState:null,queue:null,next:null}}function Fc(){null===S?null===Bc?(T=!1,Bc=S=Ec()):(T=!0,S=Bc):null===S.next?(T=!1,S=S.next=Ec()):(T=!0,S=S.next);return S}function Gc(){Ac=R=null;Cc=!1;Bc=null;Dc=0;S=V=null}function Hc(a,b){return\"function\"===typeof b?b(a):b}\nfunction Ic(a,b,c){R=W();S=Fc();if(T){var d=S.queue;b=d.dispatch;if(null!==V&&(c=V.get(d),void 0!==c)){V.delete(d);d=S.memoizedState;do d=a(d,c.action),c=c.next;while(null!==c);S.memoizedState=d;return[d,b]}return[S.memoizedState,b]}a=a===Hc?\"function\"===typeof b?b():b:void 0!==c?c(b):b;S.memoizedState=a;a=S.queue={last:null,dispatch:null};a=a.dispatch=Jc.bind(null,R,a);return[S.memoizedState,a]}\nfunction Kc(a,b){R=W();S=Fc();b=void 0===b?null:b;if(null!==S){var c=S.memoizedState;if(null!==c&&null!==b){var d=c[1];a:if(null===d)d=!1;else{for(var f=0;f<d.length&&f<b.length;f++)if(!zc(b[f],d[f])){d=!1;break a}d=!0}if(d)return c[0]}}a=a();S.memoizedState=[a,b];return a}function Jc(a,b,c){if(25<=Dc)throw Error(k(301));if(a===R)if(Cc=!0,a={action:c,next:null},null===V&&(V=new Map),c=V.get(b),void 0===c)V.set(b,a);else{for(b=c;null!==b.next;)b=b.next;b.next=a}}\nfunction Lc(){throw Error(k(394));}function Mc(){}\nvar Oc={readContext:function(a){return a._currentValue},useContext:function(a){W();return a._currentValue},useMemo:Kc,useReducer:Ic,useRef:function(a){R=W();S=Fc();var b=S.memoizedState;return null===b?(a={current:a},S.memoizedState=a):b},useState:function(a){return Ic(Hc,a)},useInsertionEffect:Mc,useLayoutEffect:function(){},useCallback:function(a,b){return Kc(function(){return a},b)},useImperativeHandle:Mc,useEffect:Mc,useDebugValue:Mc,useDeferredValue:function(a){W();return a},useTransition:function(){W();\nreturn[!1,Lc]},useId:function(){var a=Ac.treeContext;var b=a.overflow;a=a.id;a=(a&~(1<<32-uc(a)-1)).toString(32)+b;var c=Nc;if(null===c)throw Error(k(404));b=U++;a=\":\"+c.idPrefix+\"R\"+a;0<b&&(a+=\"H\"+b.toString(32));return a+\":\"},useMutableSource:function(a,b){W();return b(a._source)},useSyncExternalStore:function(a,b,c){if(void 0===c)throw Error(k(407));return c()}},Nc=null,Pc=aa.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentDispatcher;function Qc(a){console.error(a);return null}\nfunction X(){}\nfunction Rc(a,b,c,d,f,e,g,h,m){var q=[],r=new Set;b={destination:null,responseState:b,progressiveChunkSize:void 0===d?12800:d,status:0,fatalError:null,nextSegmentId:0,allPendingTasks:0,pendingRootTasks:0,completedRootSegment:null,abortableTasks:r,pingedTasks:q,clientRenderedBoundaries:[],completedBoundaries:[],partialBoundaries:[],onError:void 0===f?Qc:f,onAllReady:void 0===e?X:e,onShellReady:void 0===g?X:g,onShellError:void 0===h?X:h,onFatalError:void 0===m?X:m};c=Sc(b,0,null,c,!1,!1);c.parentFlushed=\n!0;a=Tc(b,a,null,c,r,kc,null,sc);q.push(a);return b}function Tc(a,b,c,d,f,e,g,h){a.allPendingTasks++;null===c?a.pendingRootTasks++:c.pendingTasks++;var m={node:b,ping:function(){var b=a.pingedTasks;b.push(m);1===b.length&&Uc(a)},blockedBoundary:c,blockedSegment:d,abortSet:f,legacyContext:e,context:g,treeContext:h};f.add(m);return m}function Sc(a,b,c,d,f,e){return{status:0,id:-1,index:b,parentFlushed:!1,chunks:[],children:[],formatContext:d,boundary:c,lastPushedText:f,textEmbedded:e}}\nfunction Y(a,b){a=a.onError(b);if(null!=a&&\"string\"!==typeof a)throw Error('onError returned something with a type other than \"string\". onError should return a string and may return null or undefined but must not return anything else. It received something of type \"'+typeof a+'\" instead');return a}function Vc(a,b){var c=a.onShellError;c(b);c=a.onFatalError;c(b);null!==a.destination?(a.status=2,da(a.destination,b)):(a.status=1,a.fatalError=b)}\nfunction Wc(a,b,c,d,f){R={};Ac=b;U=0;for(a=c(d,f);Cc;)Cc=!1,U=0,Dc+=1,S=null,a=c(d,f);Gc();return a}function Xc(a,b,c,d){var f=c.render(),e=d.childContextTypes;if(null!==e&&void 0!==e){var g=b.legacyContext;if(\"function\"!==typeof c.getChildContext)d=g;else{c=c.getChildContext();for(var h in c)if(!(h in e))throw Error(k(108,jc(d)||\"Unknown\",h));d=N({},g,c)}b.legacyContext=d;Z(a,b,f);b.legacyContext=g}else Z(a,b,f)}\nfunction Yc(a,b){if(a&&a.defaultProps){b=N({},b);a=a.defaultProps;for(var c in a)void 0===b[c]&&(b[c]=a[c]);return b}return b}\nfunction Zc(a,b,c,d,f){if(\"function\"===typeof c)if(c.prototype&&c.prototype.isReactComponent){f=lc(c,b.legacyContext);var e=c.contextType;e=new c(d,\"object\"===typeof e&&null!==e?e._currentValue:f);rc(e,c,d,f);Xc(a,b,e,c)}else{e=lc(c,b.legacyContext);f=Wc(a,b,c,d,e);var g=0!==U;if(\"object\"===typeof f&&null!==f&&\"function\"===typeof f.render&&void 0===f.$$typeof)rc(f,c,d,e),Xc(a,b,f,c);else if(g){d=b.treeContext;b.treeContext=tc(d,1,0);try{Z(a,b,f)}finally{b.treeContext=d}}else Z(a,b,f)}else if(\"string\"===\ntypeof c){f=b.blockedSegment;e=Sa(f.chunks,c,d,a.responseState,f.formatContext);f.lastPushedText=!1;g=f.formatContext;f.formatContext=Ba(g,c,d);$c(a,b,e);f.formatContext=g;switch(c){case \"area\":case \"base\":case \"br\":case \"col\":case \"embed\":case \"hr\":case \"img\":case \"input\":case \"keygen\":case \"link\":case \"meta\":case \"param\":case \"source\":case \"track\":case \"wbr\":break;default:f.chunks.push(Ta,u(c),Ua)}f.lastPushedText=!1}else{switch(c){case gc:case fc:case Wb:case Xb:case Vb:Z(a,b,d.children);return;\ncase bc:Z(a,b,d.children);return;case ec:throw Error(k(343));case ac:a:{c=b.blockedBoundary;f=b.blockedSegment;e=d.fallback;d=d.children;g=new Set;var h={id:null,rootSegmentID:-1,parentFlushed:!1,pendingTasks:0,forceClientRender:!1,completedSegments:[],byteSize:0,fallbackAbortableTasks:g,errorDigest:null},m=Sc(a,f.chunks.length,h,f.formatContext,!1,!1);f.children.push(m);f.lastPushedText=!1;var q=Sc(a,0,null,f.formatContext,!1,!1);q.parentFlushed=!0;b.blockedBoundary=h;b.blockedSegment=q;try{if($c(a,\nb,d),q.lastPushedText&&q.textEmbedded&&q.chunks.push(Ca),q.status=1,ad(h,q),0===h.pendingTasks)break a}catch(r){q.status=4,h.forceClientRender=!0,h.errorDigest=Y(a,r)}finally{b.blockedBoundary=c,b.blockedSegment=f}b=Tc(a,e,c,m,g,b.legacyContext,b.context,b.treeContext);a.pingedTasks.push(b)}return}if(\"object\"===typeof c&&null!==c)switch(c.$$typeof){case $b:d=Wc(a,b,c.render,d,f);if(0!==U){c=b.treeContext;b.treeContext=tc(c,1,0);try{Z(a,b,d)}finally{b.treeContext=c}}else Z(a,b,d);return;case cc:c=\nc.type;d=Yc(c,d);Zc(a,b,c,d,f);return;case Yb:f=d.children;c=c._context;d=d.value;e=c._currentValue;c._currentValue=d;g=O;O=d={parent:g,depth:null===g?0:g.depth+1,context:c,parentValue:e,value:d};b.context=d;Z(a,b,f);a=O;if(null===a)throw Error(k(403));d=a.parentValue;a.context._currentValue=d===hc?a.context._defaultValue:d;a=O=a.parent;b.context=a;return;case Zb:d=d.children;d=d(c._currentValue);Z(a,b,d);return;case dc:f=c._init;c=f(c._payload);d=Yc(c,d);Zc(a,b,c,d,void 0);return}throw Error(k(130,\nnull==c?c:typeof c,\"\"));}}\nfunction Z(a,b,c){b.node=c;if(\"object\"===typeof c&&null!==c){switch(c.$$typeof){case Tb:Zc(a,b,c.type,c.props,c.ref);return;case Ub:throw Error(k(257));case dc:var d=c._init;c=d(c._payload);Z(a,b,c);return}if(ra(c)){bd(a,b,c);return}null===c||\"object\"!==typeof c?d=null:(d=ic&&c[ic]||c[\"@@iterator\"],d=\"function\"===typeof d?d:null);if(d&&(d=d.call(c))){c=d.next();if(!c.done){var f=[];do f.push(c.value),c=d.next();while(!c.done);bd(a,b,f)}return}a=Object.prototype.toString.call(c);throw Error(k(31,\"[object Object]\"===\na?\"object with keys {\"+Object.keys(c).join(\", \")+\"}\":a));}\"string\"===typeof c?(d=b.blockedSegment,d.lastPushedText=Da(b.blockedSegment.chunks,c,a.responseState,d.lastPushedText)):\"number\"===typeof c&&(d=b.blockedSegment,d.lastPushedText=Da(b.blockedSegment.chunks,\"\"+c,a.responseState,d.lastPushedText))}function bd(a,b,c){for(var d=c.length,f=0;f<d;f++){var e=b.treeContext;b.treeContext=tc(e,d,f);try{$c(a,b,c[f])}finally{b.treeContext=e}}}\nfunction $c(a,b,c){var d=b.blockedSegment.formatContext,f=b.legacyContext,e=b.context;try{return Z(a,b,c)}catch(m){if(Gc(),\"object\"===typeof m&&null!==m&&\"function\"===typeof m.then){c=m;var g=b.blockedSegment,h=Sc(a,g.chunks.length,null,g.formatContext,g.lastPushedText,!0);g.children.push(h);g.lastPushedText=!1;a=Tc(a,b.node,b.blockedBoundary,h,b.abortSet,b.legacyContext,b.context,b.treeContext).ping;c.then(a,a);b.blockedSegment.formatContext=d;b.legacyContext=f;b.context=e;Q(e)}else throw b.blockedSegment.formatContext=\nd,b.legacyContext=f,b.context=e,Q(e),m;}}function cd(a){var b=a.blockedBoundary;a=a.blockedSegment;a.status=3;dd(this,b,a)}\nfunction ed(a,b,c){var d=a.blockedBoundary;a.blockedSegment.status=3;null===d?(b.allPendingTasks--,2!==b.status&&(b.status=2,null!==b.destination&&b.destination.close())):(d.pendingTasks--,d.forceClientRender||(d.forceClientRender=!0,a=void 0===c?Error(k(432)):c,d.errorDigest=b.onError(a),d.parentFlushed&&b.clientRenderedBoundaries.push(d)),d.fallbackAbortableTasks.forEach(function(a){return ed(a,b,c)}),d.fallbackAbortableTasks.clear(),b.allPendingTasks--,0===b.allPendingTasks&&(d=b.onAllReady,d()))}\nfunction ad(a,b){if(0===b.chunks.length&&1===b.children.length&&null===b.children[0].boundary){var c=b.children[0];c.id=b.id;c.parentFlushed=!0;1===c.status&&ad(a,c)}else a.completedSegments.push(b)}\nfunction dd(a,b,c){if(null===b){if(c.parentFlushed){if(null!==a.completedRootSegment)throw Error(k(389));a.completedRootSegment=c}a.pendingRootTasks--;0===a.pendingRootTasks&&(a.onShellError=X,b=a.onShellReady,b())}else b.pendingTasks--,b.forceClientRender||(0===b.pendingTasks?(c.parentFlushed&&1===c.status&&ad(b,c),b.parentFlushed&&a.completedBoundaries.push(b),b.fallbackAbortableTasks.forEach(cd,a),b.fallbackAbortableTasks.clear()):c.parentFlushed&&1===c.status&&(ad(b,c),1===b.completedSegments.length&&\nb.parentFlushed&&a.partialBoundaries.push(b)));a.allPendingTasks--;0===a.allPendingTasks&&(a=a.onAllReady,a())}\nfunction Uc(a){if(2!==a.status){var b=O,c=Pc.current;Pc.current=Oc;var d=Nc;Nc=a.responseState;try{var f=a.pingedTasks,e;for(e=0;e<f.length;e++){var g=f[e];var h=a,m=g.blockedSegment;if(0===m.status){Q(g.context);try{Z(h,g,g.node),m.lastPushedText&&m.textEmbedded&&m.chunks.push(Ca),g.abortSet.delete(g),m.status=1,dd(h,g.blockedBoundary,m)}catch(G){if(Gc(),\"object\"===typeof G&&null!==G&&\"function\"===typeof G.then){var q=g.ping;G.then(q,q)}else{g.abortSet.delete(g);m.status=4;var r=g.blockedBoundary,\nv=G,A=Y(h,v);null===r?Vc(h,v):(r.pendingTasks--,r.forceClientRender||(r.forceClientRender=!0,r.errorDigest=A,r.parentFlushed&&h.clientRenderedBoundaries.push(r)));h.allPendingTasks--;if(0===h.allPendingTasks){var F=h.onAllReady;F()}}}finally{}}}f.splice(0,e);null!==a.destination&&fd(a,a.destination)}catch(G){Y(a,G),Vc(a,G)}finally{Nc=d,Pc.current=c,c===Oc&&Q(b)}}}\nfunction gd(a,b,c){c.parentFlushed=!0;switch(c.status){case 0:var d=c.id=a.nextSegmentId++;c.lastPushedText=!1;c.textEmbedded=!1;a=a.responseState;p(b,Va);p(b,a.placeholderPrefix);a=u(d.toString(16));p(b,a);return t(b,Wa);case 1:c.status=2;var f=!0;d=c.chunks;var e=0;c=c.children;for(var g=0;g<c.length;g++){for(f=c[g];e<f.index;e++)p(b,d[e]);f=hd(a,b,f)}for(;e<d.length-1;e++)p(b,d[e]);e<d.length&&(f=t(b,d[e]));return f;default:throw Error(k(390));}}\nfunction hd(a,b,c){var d=c.boundary;if(null===d)return gd(a,b,c);d.parentFlushed=!0;if(d.forceClientRender)d=d.errorDigest,t(b,$a),p(b,bb),d&&(p(b,db),p(b,u(C(d))),p(b,cb)),t(b,eb),gd(a,b,c);else if(0<d.pendingTasks){d.rootSegmentID=a.nextSegmentId++;0<d.completedSegments.length&&a.partialBoundaries.push(d);var f=a.responseState;var e=f.nextSuspenseID++;f=w(f.boundaryPrefix+e.toString(16));d=d.id=f;fb(b,a.responseState,d);gd(a,b,c)}else if(d.byteSize>a.progressiveChunkSize)d.rootSegmentID=a.nextSegmentId++,\na.completedBoundaries.push(d),fb(b,a.responseState,d.id),gd(a,b,c);else{t(b,Xa);c=d.completedSegments;if(1!==c.length)throw Error(k(391));hd(a,b,c[0])}return t(b,ab)}function id(a,b,c){Bb(b,a.responseState,c.formatContext,c.id);hd(a,b,c);return Cb(b,c.formatContext)}\nfunction jd(a,b,c){for(var d=c.completedSegments,f=0;f<d.length;f++)kd(a,b,c,d[f]);d.length=0;a=a.responseState;d=c.id;c=c.rootSegmentID;p(b,a.startInlineScript);a.sentCompleteBoundaryFunction?p(b,Jb):(a.sentCompleteBoundaryFunction=!0,p(b,Ib));if(null===d)throw Error(k(395));c=u(c.toString(16));p(b,d);p(b,Kb);p(b,a.segmentPrefix);p(b,c);return t(b,Lb)}\nfunction kd(a,b,c,d){if(2===d.status)return!0;var f=d.id;if(-1===f){if(-1===(d.id=c.rootSegmentID))throw Error(k(392));return id(a,b,d)}id(a,b,d);a=a.responseState;p(b,a.startInlineScript);a.sentCompleteSegmentFunction?p(b,Eb):(a.sentCompleteSegmentFunction=!0,p(b,Db));p(b,a.segmentPrefix);f=u(f.toString(16));p(b,f);p(b,Gb);p(b,a.placeholderPrefix);p(b,f);return t(b,Hb)}\nfunction fd(a,b){l=new Uint8Array(512);n=0;try{var c=a.completedRootSegment;if(null!==c&&0===a.pendingRootTasks){hd(a,b,c);a.completedRootSegment=null;var d=a.responseState.bootstrapChunks;for(c=0;c<d.length-1;c++)p(b,d[c]);c<d.length&&t(b,d[c])}var f=a.clientRenderedBoundaries,e;for(e=0;e<f.length;e++){var g=f[e];d=b;var h=a.responseState,m=g.id,q=g.errorDigest,r=g.errorMessage,v=g.errorComponentStack;p(d,h.startInlineScript);h.sentClientRenderFunction?p(d,Nb):(h.sentClientRenderFunction=!0,p(d,\nMb));if(null===m)throw Error(k(395));p(d,m);p(d,Ob);if(q||r||v)p(d,Qb),p(d,u(Sb(q||\"\")));if(r||v)p(d,Qb),p(d,u(Sb(r||\"\")));v&&(p(d,Qb),p(d,u(Sb(v))));if(!t(d,Pb)){a.destination=null;e++;f.splice(0,e);return}}f.splice(0,e);var A=a.completedBoundaries;for(e=0;e<A.length;e++)if(!jd(a,b,A[e])){a.destination=null;e++;A.splice(0,e);return}A.splice(0,e);ba(b);l=new Uint8Array(512);n=0;var F=a.partialBoundaries;for(e=0;e<F.length;e++){var G=F[e];a:{f=a;g=b;var ma=G.completedSegments;for(h=0;h<ma.length;h++)if(!kd(f,\ng,G,ma[h])){h++;ma.splice(0,h);var Fb=!1;break a}ma.splice(0,h);Fb=!0}if(!Fb){a.destination=null;e++;F.splice(0,e);return}}F.splice(0,e);var na=a.completedBoundaries;for(e=0;e<na.length;e++)if(!jd(a,b,na[e])){a.destination=null;e++;na.splice(0,e);return}na.splice(0,e)}finally{ba(b),0===a.allPendingTasks&&0===a.pingedTasks.length&&0===a.clientRenderedBoundaries.length&&0===a.completedBoundaries.length&&b.close()}}\nfunction ld(a,b){try{var c=a.abortableTasks;c.forEach(function(c){return ed(c,a,b)});c.clear();null!==a.destination&&fd(a,a.destination)}catch(d){Y(a,d),Vc(a,d)}}\nexports.renderToReadableStream=function(a,b){return new Promise(function(c,d){var f,e,g=new Promise(function(a,b){e=a;f=b}),h=Rc(a,za(b?b.identifierPrefix:void 0,b?b.nonce:void 0,b?b.bootstrapScriptContent:void 0,b?b.bootstrapScripts:void 0,b?b.bootstrapModules:void 0),Aa(b?b.namespaceURI:void 0),b?b.progressiveChunkSize:void 0,b?b.onError:void 0,e,function(){var a=new ReadableStream({type:\"bytes\",pull:function(a){if(1===h.status)h.status=2,da(a,h.fatalError);else if(2!==h.status&&null===h.destination){h.destination=\na;try{fd(h,a)}catch(A){Y(h,A),Vc(h,A)}}},cancel:function(){ld(h)}},{highWaterMark:0});a.allReady=g;c(a)},function(a){g.catch(function(){});d(a)},f);if(b&&b.signal){var m=b.signal,q=function(){ld(h,m.reason);m.removeEventListener(\"abort\",q)};m.addEventListener(\"abort\",q)}Uc(h)})};exports.version=\"18.3.1\";\n","/**\n * @license React\n * react-dom.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n/*\n Modernizr 3.0.0pre (Custom Build) | MIT\n*/\n'use strict';var aa=require(\"react\"),ca=require(\"scheduler\");function p(a){for(var b=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=1;c<arguments.length;c++)b+=\"&args[]=\"+encodeURIComponent(arguments[c]);return\"Minified React error #\"+a+\"; visit \"+b+\" for the full message or use the non-minified dev environment for full errors and additional helpful warnings.\"}var da=new Set,ea={};function fa(a,b){ha(a,b);ha(a+\"Capture\",b)}\nfunction ha(a,b){ea[a]=b;for(a=0;a<b.length;a++)da.add(b[a])}\nvar ia=!(\"undefined\"===typeof window||\"undefined\"===typeof window.document||\"undefined\"===typeof window.document.createElement),ja=Object.prototype.hasOwnProperty,ka=/^[:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD][:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\-.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*$/,la=\n{},ma={};function oa(a){if(ja.call(ma,a))return!0;if(ja.call(la,a))return!1;if(ka.test(a))return ma[a]=!0;la[a]=!0;return!1}function pa(a,b,c,d){if(null!==c&&0===c.type)return!1;switch(typeof b){case \"function\":case \"symbol\":return!0;case \"boolean\":if(d)return!1;if(null!==c)return!c.acceptsBooleans;a=a.toLowerCase().slice(0,5);return\"data-\"!==a&&\"aria-\"!==a;default:return!1}}\nfunction qa(a,b,c,d){if(null===b||\"undefined\"===typeof b||pa(a,b,c,d))return!0;if(d)return!1;if(null!==c)switch(c.type){case 3:return!b;case 4:return!1===b;case 5:return isNaN(b);case 6:return isNaN(b)||1>b}return!1}function v(a,b,c,d,e,f,g){this.acceptsBooleans=2===b||3===b||4===b;this.attributeName=d;this.attributeNamespace=e;this.mustUseProperty=c;this.propertyName=a;this.type=b;this.sanitizeURL=f;this.removeEmptyString=g}var z={};\n\"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style\".split(\" \").forEach(function(a){z[a]=new v(a,0,!1,a,null,!1,!1)});[[\"acceptCharset\",\"accept-charset\"],[\"className\",\"class\"],[\"htmlFor\",\"for\"],[\"httpEquiv\",\"http-equiv\"]].forEach(function(a){var b=a[0];z[b]=new v(b,1,!1,a[1],null,!1,!1)});[\"contentEditable\",\"draggable\",\"spellCheck\",\"value\"].forEach(function(a){z[a]=new v(a,2,!1,a.toLowerCase(),null,!1,!1)});\n[\"autoReverse\",\"externalResourcesRequired\",\"focusable\",\"preserveAlpha\"].forEach(function(a){z[a]=new v(a,2,!1,a,null,!1,!1)});\"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope\".split(\" \").forEach(function(a){z[a]=new v(a,3,!1,a.toLowerCase(),null,!1,!1)});\n[\"checked\",\"multiple\",\"muted\",\"selected\"].forEach(function(a){z[a]=new v(a,3,!0,a,null,!1,!1)});[\"capture\",\"download\"].forEach(function(a){z[a]=new v(a,4,!1,a,null,!1,!1)});[\"cols\",\"rows\",\"size\",\"span\"].forEach(function(a){z[a]=new v(a,6,!1,a,null,!1,!1)});[\"rowSpan\",\"start\"].forEach(function(a){z[a]=new v(a,5,!1,a.toLowerCase(),null,!1,!1)});var ra=/[\\-:]([a-z])/g;function sa(a){return a[1].toUpperCase()}\n\"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height\".split(\" \").forEach(function(a){var b=a.replace(ra,\nsa);z[b]=new v(b,1,!1,a,null,!1,!1)});\"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type\".split(\" \").forEach(function(a){var b=a.replace(ra,sa);z[b]=new v(b,1,!1,a,\"http://www.w3.org/1999/xlink\",!1,!1)});[\"xml:base\",\"xml:lang\",\"xml:space\"].forEach(function(a){var b=a.replace(ra,sa);z[b]=new v(b,1,!1,a,\"http://www.w3.org/XML/1998/namespace\",!1,!1)});[\"tabIndex\",\"crossOrigin\"].forEach(function(a){z[a]=new v(a,1,!1,a.toLowerCase(),null,!1,!1)});\nz.xlinkHref=new v(\"xlinkHref\",1,!1,\"xlink:href\",\"http://www.w3.org/1999/xlink\",!0,!1);[\"src\",\"href\",\"action\",\"formAction\"].forEach(function(a){z[a]=new v(a,1,!1,a.toLowerCase(),null,!0,!0)});\nfunction ta(a,b,c,d){var e=z.hasOwnProperty(b)?z[b]:null;if(null!==e?0!==e.type:d||!(2<b.length)||\"o\"!==b[0]&&\"O\"!==b[0]||\"n\"!==b[1]&&\"N\"!==b[1])qa(b,c,e,d)&&(c=null),d||null===e?oa(b)&&(null===c?a.removeAttribute(b):a.setAttribute(b,\"\"+c)):e.mustUseProperty?a[e.propertyName]=null===c?3===e.type?!1:\"\":c:(b=e.attributeName,d=e.attributeNamespace,null===c?a.removeAttribute(b):(e=e.type,c=3===e||4===e&&!0===c?\"\":\"\"+c,d?a.setAttributeNS(d,b,c):a.setAttribute(b,c)))}\nvar ua=aa.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,va=Symbol.for(\"react.element\"),wa=Symbol.for(\"react.portal\"),ya=Symbol.for(\"react.fragment\"),za=Symbol.for(\"react.strict_mode\"),Aa=Symbol.for(\"react.profiler\"),Ba=Symbol.for(\"react.provider\"),Ca=Symbol.for(\"react.context\"),Da=Symbol.for(\"react.forward_ref\"),Ea=Symbol.for(\"react.suspense\"),Fa=Symbol.for(\"react.suspense_list\"),Ga=Symbol.for(\"react.memo\"),Ha=Symbol.for(\"react.lazy\");Symbol.for(\"react.scope\");Symbol.for(\"react.debug_trace_mode\");\nvar Ia=Symbol.for(\"react.offscreen\");Symbol.for(\"react.legacy_hidden\");Symbol.for(\"react.cache\");Symbol.for(\"react.tracing_marker\");var Ja=Symbol.iterator;function Ka(a){if(null===a||\"object\"!==typeof a)return null;a=Ja&&a[Ja]||a[\"@@iterator\"];return\"function\"===typeof a?a:null}var A=Object.assign,La;function Ma(a){if(void 0===La)try{throw Error();}catch(c){var b=c.stack.trim().match(/\\n( *(at )?)/);La=b&&b[1]||\"\"}return\"\\n\"+La+a}var Na=!1;\nfunction Oa(a,b){if(!a||Na)return\"\";Na=!0;var c=Error.prepareStackTrace;Error.prepareStackTrace=void 0;try{if(b)if(b=function(){throw Error();},Object.defineProperty(b.prototype,\"props\",{set:function(){throw Error();}}),\"object\"===typeof Reflect&&Reflect.construct){try{Reflect.construct(b,[])}catch(l){var d=l}Reflect.construct(a,[],b)}else{try{b.call()}catch(l){d=l}a.call(b.prototype)}else{try{throw Error();}catch(l){d=l}a()}}catch(l){if(l&&d&&\"string\"===typeof l.stack){for(var e=l.stack.split(\"\\n\"),\nf=d.stack.split(\"\\n\"),g=e.length-1,h=f.length-1;1<=g&&0<=h&&e[g]!==f[h];)h--;for(;1<=g&&0<=h;g--,h--)if(e[g]!==f[h]){if(1!==g||1!==h){do if(g--,h--,0>h||e[g]!==f[h]){var k=\"\\n\"+e[g].replace(\" at new \",\" at \");a.displayName&&k.includes(\"<anonymous>\")&&(k=k.replace(\"<anonymous>\",a.displayName));return k}while(1<=g&&0<=h)}break}}}finally{Na=!1,Error.prepareStackTrace=c}return(a=a?a.displayName||a.name:\"\")?Ma(a):\"\"}\nfunction Pa(a){switch(a.tag){case 5:return Ma(a.type);case 16:return Ma(\"Lazy\");case 13:return Ma(\"Suspense\");case 19:return Ma(\"SuspenseList\");case 0:case 2:case 15:return a=Oa(a.type,!1),a;case 11:return a=Oa(a.type.render,!1),a;case 1:return a=Oa(a.type,!0),a;default:return\"\"}}\nfunction Qa(a){if(null==a)return null;if(\"function\"===typeof a)return a.displayName||a.name||null;if(\"string\"===typeof a)return a;switch(a){case ya:return\"Fragment\";case wa:return\"Portal\";case Aa:return\"Profiler\";case za:return\"StrictMode\";case Ea:return\"Suspense\";case Fa:return\"SuspenseList\"}if(\"object\"===typeof a)switch(a.$$typeof){case Ca:return(a.displayName||\"Context\")+\".Consumer\";case Ba:return(a._context.displayName||\"Context\")+\".Provider\";case Da:var b=a.render;a=a.displayName;a||(a=b.displayName||\nb.name||\"\",a=\"\"!==a?\"ForwardRef(\"+a+\")\":\"ForwardRef\");return a;case Ga:return b=a.displayName||null,null!==b?b:Qa(a.type)||\"Memo\";case Ha:b=a._payload;a=a._init;try{return Qa(a(b))}catch(c){}}return null}\nfunction Ra(a){var b=a.type;switch(a.tag){case 24:return\"Cache\";case 9:return(b.displayName||\"Context\")+\".Consumer\";case 10:return(b._context.displayName||\"Context\")+\".Provider\";case 18:return\"DehydratedFragment\";case 11:return a=b.render,a=a.displayName||a.name||\"\",b.displayName||(\"\"!==a?\"ForwardRef(\"+a+\")\":\"ForwardRef\");case 7:return\"Fragment\";case 5:return b;case 4:return\"Portal\";case 3:return\"Root\";case 6:return\"Text\";case 16:return Qa(b);case 8:return b===za?\"StrictMode\":\"Mode\";case 22:return\"Offscreen\";\ncase 12:return\"Profiler\";case 21:return\"Scope\";case 13:return\"Suspense\";case 19:return\"SuspenseList\";case 25:return\"TracingMarker\";case 1:case 0:case 17:case 2:case 14:case 15:if(\"function\"===typeof b)return b.displayName||b.name||null;if(\"string\"===typeof b)return b}return null}function Sa(a){switch(typeof a){case \"boolean\":case \"number\":case \"string\":case \"undefined\":return a;case \"object\":return a;default:return\"\"}}\nfunction Ta(a){var b=a.type;return(a=a.nodeName)&&\"input\"===a.toLowerCase()&&(\"checkbox\"===b||\"radio\"===b)}\nfunction Ua(a){var b=Ta(a)?\"checked\":\"value\",c=Object.getOwnPropertyDescriptor(a.constructor.prototype,b),d=\"\"+a[b];if(!a.hasOwnProperty(b)&&\"undefined\"!==typeof c&&\"function\"===typeof c.get&&\"function\"===typeof c.set){var e=c.get,f=c.set;Object.defineProperty(a,b,{configurable:!0,get:function(){return e.call(this)},set:function(a){d=\"\"+a;f.call(this,a)}});Object.defineProperty(a,b,{enumerable:c.enumerable});return{getValue:function(){return d},setValue:function(a){d=\"\"+a},stopTracking:function(){a._valueTracker=\nnull;delete a[b]}}}}function Va(a){a._valueTracker||(a._valueTracker=Ua(a))}function Wa(a){if(!a)return!1;var b=a._valueTracker;if(!b)return!0;var c=b.getValue();var d=\"\";a&&(d=Ta(a)?a.checked?\"true\":\"false\":a.value);a=d;return a!==c?(b.setValue(a),!0):!1}function Xa(a){a=a||(\"undefined\"!==typeof document?document:void 0);if(\"undefined\"===typeof a)return null;try{return a.activeElement||a.body}catch(b){return a.body}}\nfunction Ya(a,b){var c=b.checked;return A({},b,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:null!=c?c:a._wrapperState.initialChecked})}function Za(a,b){var c=null==b.defaultValue?\"\":b.defaultValue,d=null!=b.checked?b.checked:b.defaultChecked;c=Sa(null!=b.value?b.value:c);a._wrapperState={initialChecked:d,initialValue:c,controlled:\"checkbox\"===b.type||\"radio\"===b.type?null!=b.checked:null!=b.value}}function ab(a,b){b=b.checked;null!=b&&ta(a,\"checked\",b,!1)}\nfunction bb(a,b){ab(a,b);var c=Sa(b.value),d=b.type;if(null!=c)if(\"number\"===d){if(0===c&&\"\"===a.value||a.value!=c)a.value=\"\"+c}else a.value!==\"\"+c&&(a.value=\"\"+c);else if(\"submit\"===d||\"reset\"===d){a.removeAttribute(\"value\");return}b.hasOwnProperty(\"value\")?cb(a,b.type,c):b.hasOwnProperty(\"defaultValue\")&&cb(a,b.type,Sa(b.defaultValue));null==b.checked&&null!=b.defaultChecked&&(a.defaultChecked=!!b.defaultChecked)}\nfunction db(a,b,c){if(b.hasOwnProperty(\"value\")||b.hasOwnProperty(\"defaultValue\")){var d=b.type;if(!(\"submit\"!==d&&\"reset\"!==d||void 0!==b.value&&null!==b.value))return;b=\"\"+a._wrapperState.initialValue;c||b===a.value||(a.value=b);a.defaultValue=b}c=a.name;\"\"!==c&&(a.name=\"\");a.defaultChecked=!!a._wrapperState.initialChecked;\"\"!==c&&(a.name=c)}\nfunction cb(a,b,c){if(\"number\"!==b||Xa(a.ownerDocument)!==a)null==c?a.defaultValue=\"\"+a._wrapperState.initialValue:a.defaultValue!==\"\"+c&&(a.defaultValue=\"\"+c)}var eb=Array.isArray;\nfunction fb(a,b,c,d){a=a.options;if(b){b={};for(var e=0;e<c.length;e++)b[\"$\"+c[e]]=!0;for(c=0;c<a.length;c++)e=b.hasOwnProperty(\"$\"+a[c].value),a[c].selected!==e&&(a[c].selected=e),e&&d&&(a[c].defaultSelected=!0)}else{c=\"\"+Sa(c);b=null;for(e=0;e<a.length;e++){if(a[e].value===c){a[e].selected=!0;d&&(a[e].defaultSelected=!0);return}null!==b||a[e].disabled||(b=a[e])}null!==b&&(b.selected=!0)}}\nfunction gb(a,b){if(null!=b.dangerouslySetInnerHTML)throw Error(p(91));return A({},b,{value:void 0,defaultValue:void 0,children:\"\"+a._wrapperState.initialValue})}function hb(a,b){var c=b.value;if(null==c){c=b.children;b=b.defaultValue;if(null!=c){if(null!=b)throw Error(p(92));if(eb(c)){if(1<c.length)throw Error(p(93));c=c[0]}b=c}null==b&&(b=\"\");c=b}a._wrapperState={initialValue:Sa(c)}}\nfunction ib(a,b){var c=Sa(b.value),d=Sa(b.defaultValue);null!=c&&(c=\"\"+c,c!==a.value&&(a.value=c),null==b.defaultValue&&a.defaultValue!==c&&(a.defaultValue=c));null!=d&&(a.defaultValue=\"\"+d)}function jb(a){var b=a.textContent;b===a._wrapperState.initialValue&&\"\"!==b&&null!==b&&(a.value=b)}function kb(a){switch(a){case \"svg\":return\"http://www.w3.org/2000/svg\";case \"math\":return\"http://www.w3.org/1998/Math/MathML\";default:return\"http://www.w3.org/1999/xhtml\"}}\nfunction lb(a,b){return null==a||\"http://www.w3.org/1999/xhtml\"===a?kb(b):\"http://www.w3.org/2000/svg\"===a&&\"foreignObject\"===b?\"http://www.w3.org/1999/xhtml\":a}\nvar mb,nb=function(a){return\"undefined\"!==typeof MSApp&&MSApp.execUnsafeLocalFunction?function(b,c,d,e){MSApp.execUnsafeLocalFunction(function(){return a(b,c,d,e)})}:a}(function(a,b){if(\"http://www.w3.org/2000/svg\"!==a.namespaceURI||\"innerHTML\"in a)a.innerHTML=b;else{mb=mb||document.createElement(\"div\");mb.innerHTML=\"<svg>\"+b.valueOf().toString()+\"</svg>\";for(b=mb.firstChild;a.firstChild;)a.removeChild(a.firstChild);for(;b.firstChild;)a.appendChild(b.firstChild)}});\nfunction ob(a,b){if(b){var c=a.firstChild;if(c&&c===a.lastChild&&3===c.nodeType){c.nodeValue=b;return}}a.textContent=b}\nvar pb={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,\nzoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},qb=[\"Webkit\",\"ms\",\"Moz\",\"O\"];Object.keys(pb).forEach(function(a){qb.forEach(function(b){b=b+a.charAt(0).toUpperCase()+a.substring(1);pb[b]=pb[a]})});function rb(a,b,c){return null==b||\"boolean\"===typeof b||\"\"===b?\"\":c||\"number\"!==typeof b||0===b||pb.hasOwnProperty(a)&&pb[a]?(\"\"+b).trim():b+\"px\"}\nfunction sb(a,b){a=a.style;for(var c in b)if(b.hasOwnProperty(c)){var d=0===c.indexOf(\"--\"),e=rb(c,b[c],d);\"float\"===c&&(c=\"cssFloat\");d?a.setProperty(c,e):a[c]=e}}var tb=A({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});\nfunction ub(a,b){if(b){if(tb[a]&&(null!=b.children||null!=b.dangerouslySetInnerHTML))throw Error(p(137,a));if(null!=b.dangerouslySetInnerHTML){if(null!=b.children)throw Error(p(60));if(\"object\"!==typeof b.dangerouslySetInnerHTML||!(\"__html\"in b.dangerouslySetInnerHTML))throw Error(p(61));}if(null!=b.style&&\"object\"!==typeof b.style)throw Error(p(62));}}\nfunction vb(a,b){if(-1===a.indexOf(\"-\"))return\"string\"===typeof b.is;switch(a){case \"annotation-xml\":case \"color-profile\":case \"font-face\":case \"font-face-src\":case \"font-face-uri\":case \"font-face-format\":case \"font-face-name\":case \"missing-glyph\":return!1;default:return!0}}var wb=null;function xb(a){a=a.target||a.srcElement||window;a.correspondingUseElement&&(a=a.correspondingUseElement);return 3===a.nodeType?a.parentNode:a}var yb=null,zb=null,Ab=null;\nfunction Bb(a){if(a=Cb(a)){if(\"function\"!==typeof yb)throw Error(p(280));var b=a.stateNode;b&&(b=Db(b),yb(a.stateNode,a.type,b))}}function Eb(a){zb?Ab?Ab.push(a):Ab=[a]:zb=a}function Fb(){if(zb){var a=zb,b=Ab;Ab=zb=null;Bb(a);if(b)for(a=0;a<b.length;a++)Bb(b[a])}}function Gb(a,b){return a(b)}function Hb(){}var Ib=!1;function Jb(a,b,c){if(Ib)return a(b,c);Ib=!0;try{return Gb(a,b,c)}finally{if(Ib=!1,null!==zb||null!==Ab)Hb(),Fb()}}\nfunction Kb(a,b){var c=a.stateNode;if(null===c)return null;var d=Db(c);if(null===d)return null;c=d[b];a:switch(b){case \"onClick\":case \"onClickCapture\":case \"onDoubleClick\":case \"onDoubleClickCapture\":case \"onMouseDown\":case \"onMouseDownCapture\":case \"onMouseMove\":case \"onMouseMoveCapture\":case \"onMouseUp\":case \"onMouseUpCapture\":case \"onMouseEnter\":(d=!d.disabled)||(a=a.type,d=!(\"button\"===a||\"input\"===a||\"select\"===a||\"textarea\"===a));a=!d;break a;default:a=!1}if(a)return null;if(c&&\"function\"!==\ntypeof c)throw Error(p(231,b,typeof c));return c}var Lb=!1;if(ia)try{var Mb={};Object.defineProperty(Mb,\"passive\",{get:function(){Lb=!0}});window.addEventListener(\"test\",Mb,Mb);window.removeEventListener(\"test\",Mb,Mb)}catch(a){Lb=!1}function Nb(a,b,c,d,e,f,g,h,k){var l=Array.prototype.slice.call(arguments,3);try{b.apply(c,l)}catch(m){this.onError(m)}}var Ob=!1,Pb=null,Qb=!1,Rb=null,Sb={onError:function(a){Ob=!0;Pb=a}};function Tb(a,b,c,d,e,f,g,h,k){Ob=!1;Pb=null;Nb.apply(Sb,arguments)}\nfunction Ub(a,b,c,d,e,f,g,h,k){Tb.apply(this,arguments);if(Ob){if(Ob){var l=Pb;Ob=!1;Pb=null}else throw Error(p(198));Qb||(Qb=!0,Rb=l)}}function Vb(a){var b=a,c=a;if(a.alternate)for(;b.return;)b=b.return;else{a=b;do b=a,0!==(b.flags&4098)&&(c=b.return),a=b.return;while(a)}return 3===b.tag?c:null}function Wb(a){if(13===a.tag){var b=a.memoizedState;null===b&&(a=a.alternate,null!==a&&(b=a.memoizedState));if(null!==b)return b.dehydrated}return null}function Xb(a){if(Vb(a)!==a)throw Error(p(188));}\nfunction Yb(a){var b=a.alternate;if(!b){b=Vb(a);if(null===b)throw Error(p(188));return b!==a?null:a}for(var c=a,d=b;;){var e=c.return;if(null===e)break;var f=e.alternate;if(null===f){d=e.return;if(null!==d){c=d;continue}break}if(e.child===f.child){for(f=e.child;f;){if(f===c)return Xb(e),a;if(f===d)return Xb(e),b;f=f.sibling}throw Error(p(188));}if(c.return!==d.return)c=e,d=f;else{for(var g=!1,h=e.child;h;){if(h===c){g=!0;c=e;d=f;break}if(h===d){g=!0;d=e;c=f;break}h=h.sibling}if(!g){for(h=f.child;h;){if(h===\nc){g=!0;c=f;d=e;break}if(h===d){g=!0;d=f;c=e;break}h=h.sibling}if(!g)throw Error(p(189));}}if(c.alternate!==d)throw Error(p(190));}if(3!==c.tag)throw Error(p(188));return c.stateNode.current===c?a:b}function Zb(a){a=Yb(a);return null!==a?$b(a):null}function $b(a){if(5===a.tag||6===a.tag)return a;for(a=a.child;null!==a;){var b=$b(a);if(null!==b)return b;a=a.sibling}return null}\nvar ac=ca.unstable_scheduleCallback,bc=ca.unstable_cancelCallback,cc=ca.unstable_shouldYield,dc=ca.unstable_requestPaint,B=ca.unstable_now,ec=ca.unstable_getCurrentPriorityLevel,fc=ca.unstable_ImmediatePriority,gc=ca.unstable_UserBlockingPriority,hc=ca.unstable_NormalPriority,ic=ca.unstable_LowPriority,jc=ca.unstable_IdlePriority,kc=null,lc=null;function mc(a){if(lc&&\"function\"===typeof lc.onCommitFiberRoot)try{lc.onCommitFiberRoot(kc,a,void 0,128===(a.current.flags&128))}catch(b){}}\nvar oc=Math.clz32?Math.clz32:nc,pc=Math.log,qc=Math.LN2;function nc(a){a>>>=0;return 0===a?32:31-(pc(a)/qc|0)|0}var rc=64,sc=4194304;\nfunction tc(a){switch(a&-a){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return a&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return a&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;\ndefault:return a}}function uc(a,b){var c=a.pendingLanes;if(0===c)return 0;var d=0,e=a.suspendedLanes,f=a.pingedLanes,g=c&268435455;if(0!==g){var h=g&~e;0!==h?d=tc(h):(f&=g,0!==f&&(d=tc(f)))}else g=c&~e,0!==g?d=tc(g):0!==f&&(d=tc(f));if(0===d)return 0;if(0!==b&&b!==d&&0===(b&e)&&(e=d&-d,f=b&-b,e>=f||16===e&&0!==(f&4194240)))return b;0!==(d&4)&&(d|=c&16);b=a.entangledLanes;if(0!==b)for(a=a.entanglements,b&=d;0<b;)c=31-oc(b),e=1<<c,d|=a[c],b&=~e;return d}\nfunction vc(a,b){switch(a){case 1:case 2:case 4:return b+250;case 8:case 16:case 32:case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return b+5E3;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return-1;case 134217728:case 268435456:case 536870912:case 1073741824:return-1;default:return-1}}\nfunction wc(a,b){for(var c=a.suspendedLanes,d=a.pingedLanes,e=a.expirationTimes,f=a.pendingLanes;0<f;){var g=31-oc(f),h=1<<g,k=e[g];if(-1===k){if(0===(h&c)||0!==(h&d))e[g]=vc(h,b)}else k<=b&&(a.expiredLanes|=h);f&=~h}}function xc(a){a=a.pendingLanes&-1073741825;return 0!==a?a:a&1073741824?1073741824:0}function yc(){var a=rc;rc<<=1;0===(rc&4194240)&&(rc=64);return a}function zc(a){for(var b=[],c=0;31>c;c++)b.push(a);return b}\nfunction Ac(a,b,c){a.pendingLanes|=b;536870912!==b&&(a.suspendedLanes=0,a.pingedLanes=0);a=a.eventTimes;b=31-oc(b);a[b]=c}function Bc(a,b){var c=a.pendingLanes&~b;a.pendingLanes=b;a.suspendedLanes=0;a.pingedLanes=0;a.expiredLanes&=b;a.mutableReadLanes&=b;a.entangledLanes&=b;b=a.entanglements;var d=a.eventTimes;for(a=a.expirationTimes;0<c;){var e=31-oc(c),f=1<<e;b[e]=0;d[e]=-1;a[e]=-1;c&=~f}}\nfunction Cc(a,b){var c=a.entangledLanes|=b;for(a=a.entanglements;c;){var d=31-oc(c),e=1<<d;e&b|a[d]&b&&(a[d]|=b);c&=~e}}var C=0;function Dc(a){a&=-a;return 1<a?4<a?0!==(a&268435455)?16:536870912:4:1}var Ec,Fc,Gc,Hc,Ic,Jc=!1,Kc=[],Lc=null,Mc=null,Nc=null,Oc=new Map,Pc=new Map,Qc=[],Rc=\"mousedown mouseup touchcancel touchend touchstart auxclick dblclick pointercancel pointerdown pointerup dragend dragstart drop compositionend compositionstart keydown keypress keyup input textInput copy cut paste click change contextmenu reset submit\".split(\" \");\nfunction Sc(a,b){switch(a){case \"focusin\":case \"focusout\":Lc=null;break;case \"dragenter\":case \"dragleave\":Mc=null;break;case \"mouseover\":case \"mouseout\":Nc=null;break;case \"pointerover\":case \"pointerout\":Oc.delete(b.pointerId);break;case \"gotpointercapture\":case \"lostpointercapture\":Pc.delete(b.pointerId)}}\nfunction Tc(a,b,c,d,e,f){if(null===a||a.nativeEvent!==f)return a={blockedOn:b,domEventName:c,eventSystemFlags:d,nativeEvent:f,targetContainers:[e]},null!==b&&(b=Cb(b),null!==b&&Fc(b)),a;a.eventSystemFlags|=d;b=a.targetContainers;null!==e&&-1===b.indexOf(e)&&b.push(e);return a}\nfunction Uc(a,b,c,d,e){switch(b){case \"focusin\":return Lc=Tc(Lc,a,b,c,d,e),!0;case \"dragenter\":return Mc=Tc(Mc,a,b,c,d,e),!0;case \"mouseover\":return Nc=Tc(Nc,a,b,c,d,e),!0;case \"pointerover\":var f=e.pointerId;Oc.set(f,Tc(Oc.get(f)||null,a,b,c,d,e));return!0;case \"gotpointercapture\":return f=e.pointerId,Pc.set(f,Tc(Pc.get(f)||null,a,b,c,d,e)),!0}return!1}\nfunction Vc(a){var b=Wc(a.target);if(null!==b){var c=Vb(b);if(null!==c)if(b=c.tag,13===b){if(b=Wb(c),null!==b){a.blockedOn=b;Ic(a.priority,function(){Gc(c)});return}}else if(3===b&&c.stateNode.current.memoizedState.isDehydrated){a.blockedOn=3===c.tag?c.stateNode.containerInfo:null;return}}a.blockedOn=null}\nfunction Xc(a){if(null!==a.blockedOn)return!1;for(var b=a.targetContainers;0<b.length;){var c=Yc(a.domEventName,a.eventSystemFlags,b[0],a.nativeEvent);if(null===c){c=a.nativeEvent;var d=new c.constructor(c.type,c);wb=d;c.target.dispatchEvent(d);wb=null}else return b=Cb(c),null!==b&&Fc(b),a.blockedOn=c,!1;b.shift()}return!0}function Zc(a,b,c){Xc(a)&&c.delete(b)}function $c(){Jc=!1;null!==Lc&&Xc(Lc)&&(Lc=null);null!==Mc&&Xc(Mc)&&(Mc=null);null!==Nc&&Xc(Nc)&&(Nc=null);Oc.forEach(Zc);Pc.forEach(Zc)}\nfunction ad(a,b){a.blockedOn===b&&(a.blockedOn=null,Jc||(Jc=!0,ca.unstable_scheduleCallback(ca.unstable_NormalPriority,$c)))}\nfunction bd(a){function b(b){return ad(b,a)}if(0<Kc.length){ad(Kc[0],a);for(var c=1;c<Kc.length;c++){var d=Kc[c];d.blockedOn===a&&(d.blockedOn=null)}}null!==Lc&&ad(Lc,a);null!==Mc&&ad(Mc,a);null!==Nc&&ad(Nc,a);Oc.forEach(b);Pc.forEach(b);for(c=0;c<Qc.length;c++)d=Qc[c],d.blockedOn===a&&(d.blockedOn=null);for(;0<Qc.length&&(c=Qc[0],null===c.blockedOn);)Vc(c),null===c.blockedOn&&Qc.shift()}var cd=ua.ReactCurrentBatchConfig,dd=!0;\nfunction ed(a,b,c,d){var e=C,f=cd.transition;cd.transition=null;try{C=1,fd(a,b,c,d)}finally{C=e,cd.transition=f}}function gd(a,b,c,d){var e=C,f=cd.transition;cd.transition=null;try{C=4,fd(a,b,c,d)}finally{C=e,cd.transition=f}}\nfunction fd(a,b,c,d){if(dd){var e=Yc(a,b,c,d);if(null===e)hd(a,b,d,id,c),Sc(a,d);else if(Uc(e,a,b,c,d))d.stopPropagation();else if(Sc(a,d),b&4&&-1<Rc.indexOf(a)){for(;null!==e;){var f=Cb(e);null!==f&&Ec(f);f=Yc(a,b,c,d);null===f&&hd(a,b,d,id,c);if(f===e)break;e=f}null!==e&&d.stopPropagation()}else hd(a,b,d,null,c)}}var id=null;\nfunction Yc(a,b,c,d){id=null;a=xb(d);a=Wc(a);if(null!==a)if(b=Vb(a),null===b)a=null;else if(c=b.tag,13===c){a=Wb(b);if(null!==a)return a;a=null}else if(3===c){if(b.stateNode.current.memoizedState.isDehydrated)return 3===b.tag?b.stateNode.containerInfo:null;a=null}else b!==a&&(a=null);id=a;return null}\nfunction jd(a){switch(a){case \"cancel\":case \"click\":case \"close\":case \"contextmenu\":case \"copy\":case \"cut\":case \"auxclick\":case \"dblclick\":case \"dragend\":case \"dragstart\":case \"drop\":case \"focusin\":case \"focusout\":case \"input\":case \"invalid\":case \"keydown\":case \"keypress\":case \"keyup\":case \"mousedown\":case \"mouseup\":case \"paste\":case \"pause\":case \"play\":case \"pointercancel\":case \"pointerdown\":case \"pointerup\":case \"ratechange\":case \"reset\":case \"resize\":case \"seeked\":case \"submit\":case \"touchcancel\":case \"touchend\":case \"touchstart\":case \"volumechange\":case \"change\":case \"selectionchange\":case \"textInput\":case \"compositionstart\":case \"compositionend\":case \"compositionupdate\":case \"beforeblur\":case \"afterblur\":case \"beforeinput\":case \"blur\":case \"fullscreenchange\":case \"focus\":case \"hashchange\":case \"popstate\":case \"select\":case \"selectstart\":return 1;case \"drag\":case \"dragenter\":case \"dragexit\":case \"dragleave\":case \"dragover\":case \"mousemove\":case \"mouseout\":case \"mouseover\":case \"pointermove\":case \"pointerout\":case \"pointerover\":case \"scroll\":case \"toggle\":case \"touchmove\":case \"wheel\":case \"mouseenter\":case \"mouseleave\":case \"pointerenter\":case \"pointerleave\":return 4;\ncase \"message\":switch(ec()){case fc:return 1;case gc:return 4;case hc:case ic:return 16;case jc:return 536870912;default:return 16}default:return 16}}var kd=null,ld=null,md=null;function nd(){if(md)return md;var a,b=ld,c=b.length,d,e=\"value\"in kd?kd.value:kd.textContent,f=e.length;for(a=0;a<c&&b[a]===e[a];a++);var g=c-a;for(d=1;d<=g&&b[c-d]===e[f-d];d++);return md=e.slice(a,1<d?1-d:void 0)}\nfunction od(a){var b=a.keyCode;\"charCode\"in a?(a=a.charCode,0===a&&13===b&&(a=13)):a=b;10===a&&(a=13);return 32<=a||13===a?a:0}function pd(){return!0}function qd(){return!1}\nfunction rd(a){function b(b,d,e,f,g){this._reactName=b;this._targetInst=e;this.type=d;this.nativeEvent=f;this.target=g;this.currentTarget=null;for(var c in a)a.hasOwnProperty(c)&&(b=a[c],this[c]=b?b(f):f[c]);this.isDefaultPrevented=(null!=f.defaultPrevented?f.defaultPrevented:!1===f.returnValue)?pd:qd;this.isPropagationStopped=qd;return this}A(b.prototype,{preventDefault:function(){this.defaultPrevented=!0;var a=this.nativeEvent;a&&(a.preventDefault?a.preventDefault():\"unknown\"!==typeof a.returnValue&&\n(a.returnValue=!1),this.isDefaultPrevented=pd)},stopPropagation:function(){var a=this.nativeEvent;a&&(a.stopPropagation?a.stopPropagation():\"unknown\"!==typeof a.cancelBubble&&(a.cancelBubble=!0),this.isPropagationStopped=pd)},persist:function(){},isPersistent:pd});return b}\nvar sd={eventPhase:0,bubbles:0,cancelable:0,timeStamp:function(a){return a.timeStamp||Date.now()},defaultPrevented:0,isTrusted:0},td=rd(sd),ud=A({},sd,{view:0,detail:0}),vd=rd(ud),wd,xd,yd,Ad=A({},ud,{screenX:0,screenY:0,clientX:0,clientY:0,pageX:0,pageY:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,getModifierState:zd,button:0,buttons:0,relatedTarget:function(a){return void 0===a.relatedTarget?a.fromElement===a.srcElement?a.toElement:a.fromElement:a.relatedTarget},movementX:function(a){if(\"movementX\"in\na)return a.movementX;a!==yd&&(yd&&\"mousemove\"===a.type?(wd=a.screenX-yd.screenX,xd=a.screenY-yd.screenY):xd=wd=0,yd=a);return wd},movementY:function(a){return\"movementY\"in a?a.movementY:xd}}),Bd=rd(Ad),Cd=A({},Ad,{dataTransfer:0}),Dd=rd(Cd),Ed=A({},ud,{relatedTarget:0}),Fd=rd(Ed),Gd=A({},sd,{animationName:0,elapsedTime:0,pseudoElement:0}),Hd=rd(Gd),Id=A({},sd,{clipboardData:function(a){return\"clipboardData\"in a?a.clipboardData:window.clipboardData}}),Jd=rd(Id),Kd=A({},sd,{data:0}),Ld=rd(Kd),Md={Esc:\"Escape\",\nSpacebar:\" \",Left:\"ArrowLeft\",Up:\"ArrowUp\",Right:\"ArrowRight\",Down:\"ArrowDown\",Del:\"Delete\",Win:\"OS\",Menu:\"ContextMenu\",Apps:\"ContextMenu\",Scroll:\"ScrollLock\",MozPrintableKey:\"Unidentified\"},Nd={8:\"Backspace\",9:\"Tab\",12:\"Clear\",13:\"Enter\",16:\"Shift\",17:\"Control\",18:\"Alt\",19:\"Pause\",20:\"CapsLock\",27:\"Escape\",32:\" \",33:\"PageUp\",34:\"PageDown\",35:\"End\",36:\"Home\",37:\"ArrowLeft\",38:\"ArrowUp\",39:\"ArrowRight\",40:\"ArrowDown\",45:\"Insert\",46:\"Delete\",112:\"F1\",113:\"F2\",114:\"F3\",115:\"F4\",116:\"F5\",117:\"F6\",118:\"F7\",\n119:\"F8\",120:\"F9\",121:\"F10\",122:\"F11\",123:\"F12\",144:\"NumLock\",145:\"ScrollLock\",224:\"Meta\"},Od={Alt:\"altKey\",Control:\"ctrlKey\",Meta:\"metaKey\",Shift:\"shiftKey\"};function Pd(a){var b=this.nativeEvent;return b.getModifierState?b.getModifierState(a):(a=Od[a])?!!b[a]:!1}function zd(){return Pd}\nvar Qd=A({},ud,{key:function(a){if(a.key){var b=Md[a.key]||a.key;if(\"Unidentified\"!==b)return b}return\"keypress\"===a.type?(a=od(a),13===a?\"Enter\":String.fromCharCode(a)):\"keydown\"===a.type||\"keyup\"===a.type?Nd[a.keyCode]||\"Unidentified\":\"\"},code:0,location:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,repeat:0,locale:0,getModifierState:zd,charCode:function(a){return\"keypress\"===a.type?od(a):0},keyCode:function(a){return\"keydown\"===a.type||\"keyup\"===a.type?a.keyCode:0},which:function(a){return\"keypress\"===\na.type?od(a):\"keydown\"===a.type||\"keyup\"===a.type?a.keyCode:0}}),Rd=rd(Qd),Sd=A({},Ad,{pointerId:0,width:0,height:0,pressure:0,tangentialPressure:0,tiltX:0,tiltY:0,twist:0,pointerType:0,isPrimary:0}),Td=rd(Sd),Ud=A({},ud,{touches:0,targetTouches:0,changedTouches:0,altKey:0,metaKey:0,ctrlKey:0,shiftKey:0,getModifierState:zd}),Vd=rd(Ud),Wd=A({},sd,{propertyName:0,elapsedTime:0,pseudoElement:0}),Xd=rd(Wd),Yd=A({},Ad,{deltaX:function(a){return\"deltaX\"in a?a.deltaX:\"wheelDeltaX\"in a?-a.wheelDeltaX:0},\ndeltaY:function(a){return\"deltaY\"in a?a.deltaY:\"wheelDeltaY\"in a?-a.wheelDeltaY:\"wheelDelta\"in a?-a.wheelDelta:0},deltaZ:0,deltaMode:0}),Zd=rd(Yd),$d=[9,13,27,32],ae=ia&&\"CompositionEvent\"in window,be=null;ia&&\"documentMode\"in document&&(be=document.documentMode);var ce=ia&&\"TextEvent\"in window&&!be,de=ia&&(!ae||be&&8<be&&11>=be),ee=String.fromCharCode(32),fe=!1;\nfunction ge(a,b){switch(a){case \"keyup\":return-1!==$d.indexOf(b.keyCode);case \"keydown\":return 229!==b.keyCode;case \"keypress\":case \"mousedown\":case \"focusout\":return!0;default:return!1}}function he(a){a=a.detail;return\"object\"===typeof a&&\"data\"in a?a.data:null}var ie=!1;function je(a,b){switch(a){case \"compositionend\":return he(b);case \"keypress\":if(32!==b.which)return null;fe=!0;return ee;case \"textInput\":return a=b.data,a===ee&&fe?null:a;default:return null}}\nfunction ke(a,b){if(ie)return\"compositionend\"===a||!ae&&ge(a,b)?(a=nd(),md=ld=kd=null,ie=!1,a):null;switch(a){case \"paste\":return null;case \"keypress\":if(!(b.ctrlKey||b.altKey||b.metaKey)||b.ctrlKey&&b.altKey){if(b.char&&1<b.char.length)return b.char;if(b.which)return String.fromCharCode(b.which)}return null;case \"compositionend\":return de&&\"ko\"!==b.locale?null:b.data;default:return null}}\nvar le={color:!0,date:!0,datetime:!0,\"datetime-local\":!0,email:!0,month:!0,number:!0,password:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0};function me(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return\"input\"===b?!!le[a.type]:\"textarea\"===b?!0:!1}function ne(a,b,c,d){Eb(d);b=oe(b,\"onChange\");0<b.length&&(c=new td(\"onChange\",\"change\",null,c,d),a.push({event:c,listeners:b}))}var pe=null,qe=null;function re(a){se(a,0)}function te(a){var b=ue(a);if(Wa(b))return a}\nfunction ve(a,b){if(\"change\"===a)return b}var we=!1;if(ia){var xe;if(ia){var ye=\"oninput\"in document;if(!ye){var ze=document.createElement(\"div\");ze.setAttribute(\"oninput\",\"return;\");ye=\"function\"===typeof ze.oninput}xe=ye}else xe=!1;we=xe&&(!document.documentMode||9<document.documentMode)}function Ae(){pe&&(pe.detachEvent(\"onpropertychange\",Be),qe=pe=null)}function Be(a){if(\"value\"===a.propertyName&&te(qe)){var b=[];ne(b,qe,a,xb(a));Jb(re,b)}}\nfunction Ce(a,b,c){\"focusin\"===a?(Ae(),pe=b,qe=c,pe.attachEvent(\"onpropertychange\",Be)):\"focusout\"===a&&Ae()}function De(a){if(\"selectionchange\"===a||\"keyup\"===a||\"keydown\"===a)return te(qe)}function Ee(a,b){if(\"click\"===a)return te(b)}function Fe(a,b){if(\"input\"===a||\"change\"===a)return te(b)}function Ge(a,b){return a===b&&(0!==a||1/a===1/b)||a!==a&&b!==b}var He=\"function\"===typeof Object.is?Object.is:Ge;\nfunction Ie(a,b){if(He(a,b))return!0;if(\"object\"!==typeof a||null===a||\"object\"!==typeof b||null===b)return!1;var c=Object.keys(a),d=Object.keys(b);if(c.length!==d.length)return!1;for(d=0;d<c.length;d++){var e=c[d];if(!ja.call(b,e)||!He(a[e],b[e]))return!1}return!0}function Je(a){for(;a&&a.firstChild;)a=a.firstChild;return a}\nfunction Ke(a,b){var c=Je(a);a=0;for(var d;c;){if(3===c.nodeType){d=a+c.textContent.length;if(a<=b&&d>=b)return{node:c,offset:b-a};a=d}a:{for(;c;){if(c.nextSibling){c=c.nextSibling;break a}c=c.parentNode}c=void 0}c=Je(c)}}function Le(a,b){return a&&b?a===b?!0:a&&3===a.nodeType?!1:b&&3===b.nodeType?Le(a,b.parentNode):\"contains\"in a?a.contains(b):a.compareDocumentPosition?!!(a.compareDocumentPosition(b)&16):!1:!1}\nfunction Me(){for(var a=window,b=Xa();b instanceof a.HTMLIFrameElement;){try{var c=\"string\"===typeof b.contentWindow.location.href}catch(d){c=!1}if(c)a=b.contentWindow;else break;b=Xa(a.document)}return b}function Ne(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return b&&(\"input\"===b&&(\"text\"===a.type||\"search\"===a.type||\"tel\"===a.type||\"url\"===a.type||\"password\"===a.type)||\"textarea\"===b||\"true\"===a.contentEditable)}\nfunction Oe(a){var b=Me(),c=a.focusedElem,d=a.selectionRange;if(b!==c&&c&&c.ownerDocument&&Le(c.ownerDocument.documentElement,c)){if(null!==d&&Ne(c))if(b=d.start,a=d.end,void 0===a&&(a=b),\"selectionStart\"in c)c.selectionStart=b,c.selectionEnd=Math.min(a,c.value.length);else if(a=(b=c.ownerDocument||document)&&b.defaultView||window,a.getSelection){a=a.getSelection();var e=c.textContent.length,f=Math.min(d.start,e);d=void 0===d.end?f:Math.min(d.end,e);!a.extend&&f>d&&(e=d,d=f,f=e);e=Ke(c,f);var g=Ke(c,\nd);e&&g&&(1!==a.rangeCount||a.anchorNode!==e.node||a.anchorOffset!==e.offset||a.focusNode!==g.node||a.focusOffset!==g.offset)&&(b=b.createRange(),b.setStart(e.node,e.offset),a.removeAllRanges(),f>d?(a.addRange(b),a.extend(g.node,g.offset)):(b.setEnd(g.node,g.offset),a.addRange(b)))}b=[];for(a=c;a=a.parentNode;)1===a.nodeType&&b.push({element:a,left:a.scrollLeft,top:a.scrollTop});\"function\"===typeof c.focus&&c.focus();for(c=0;c<b.length;c++)a=b[c],a.element.scrollLeft=a.left,a.element.scrollTop=a.top}}\nvar Pe=ia&&\"documentMode\"in document&&11>=document.documentMode,Qe=null,Re=null,Se=null,Te=!1;\nfunction Ue(a,b,c){var d=c.window===c?c.document:9===c.nodeType?c:c.ownerDocument;Te||null==Qe||Qe!==Xa(d)||(d=Qe,\"selectionStart\"in d&&Ne(d)?d={start:d.selectionStart,end:d.selectionEnd}:(d=(d.ownerDocument&&d.ownerDocument.defaultView||window).getSelection(),d={anchorNode:d.anchorNode,anchorOffset:d.anchorOffset,focusNode:d.focusNode,focusOffset:d.focusOffset}),Se&&Ie(Se,d)||(Se=d,d=oe(Re,\"onSelect\"),0<d.length&&(b=new td(\"onSelect\",\"select\",null,b,c),a.push({event:b,listeners:d}),b.target=Qe)))}\nfunction Ve(a,b){var c={};c[a.toLowerCase()]=b.toLowerCase();c[\"Webkit\"+a]=\"webkit\"+b;c[\"Moz\"+a]=\"moz\"+b;return c}var We={animationend:Ve(\"Animation\",\"AnimationEnd\"),animationiteration:Ve(\"Animation\",\"AnimationIteration\"),animationstart:Ve(\"Animation\",\"AnimationStart\"),transitionend:Ve(\"Transition\",\"TransitionEnd\")},Xe={},Ye={};\nia&&(Ye=document.createElement(\"div\").style,\"AnimationEvent\"in window||(delete We.animationend.animation,delete We.animationiteration.animation,delete We.animationstart.animation),\"TransitionEvent\"in window||delete We.transitionend.transition);function Ze(a){if(Xe[a])return Xe[a];if(!We[a])return a;var b=We[a],c;for(c in b)if(b.hasOwnProperty(c)&&c in Ye)return Xe[a]=b[c];return a}var $e=Ze(\"animationend\"),af=Ze(\"animationiteration\"),bf=Ze(\"animationstart\"),cf=Ze(\"transitionend\"),df=new Map,ef=\"abort auxClick cancel canPlay canPlayThrough click close contextMenu copy cut drag dragEnd dragEnter dragExit dragLeave dragOver dragStart drop durationChange emptied encrypted ended error gotPointerCapture input invalid keyDown keyPress keyUp load loadedData loadedMetadata loadStart lostPointerCapture mouseDown mouseMove mouseOut mouseOver mouseUp paste pause play playing pointerCancel pointerDown pointerMove pointerOut pointerOver pointerUp progress rateChange reset resize seeked seeking stalled submit suspend timeUpdate touchCancel touchEnd touchStart volumeChange scroll toggle touchMove waiting wheel\".split(\" \");\nfunction ff(a,b){df.set(a,b);fa(b,[a])}for(var gf=0;gf<ef.length;gf++){var hf=ef[gf],jf=hf.toLowerCase(),kf=hf[0].toUpperCase()+hf.slice(1);ff(jf,\"on\"+kf)}ff($e,\"onAnimationEnd\");ff(af,\"onAnimationIteration\");ff(bf,\"onAnimationStart\");ff(\"dblclick\",\"onDoubleClick\");ff(\"focusin\",\"onFocus\");ff(\"focusout\",\"onBlur\");ff(cf,\"onTransitionEnd\");ha(\"onMouseEnter\",[\"mouseout\",\"mouseover\"]);ha(\"onMouseLeave\",[\"mouseout\",\"mouseover\"]);ha(\"onPointerEnter\",[\"pointerout\",\"pointerover\"]);\nha(\"onPointerLeave\",[\"pointerout\",\"pointerover\"]);fa(\"onChange\",\"change click focusin focusout input keydown keyup selectionchange\".split(\" \"));fa(\"onSelect\",\"focusout contextmenu dragend focusin keydown keyup mousedown mouseup selectionchange\".split(\" \"));fa(\"onBeforeInput\",[\"compositionend\",\"keypress\",\"textInput\",\"paste\"]);fa(\"onCompositionEnd\",\"compositionend focusout keydown keypress keyup mousedown\".split(\" \"));fa(\"onCompositionStart\",\"compositionstart focusout keydown keypress keyup mousedown\".split(\" \"));\nfa(\"onCompositionUpdate\",\"compositionupdate focusout keydown keypress keyup mousedown\".split(\" \"));var lf=\"abort canplay canplaythrough durationchange emptied encrypted ended error loadeddata loadedmetadata loadstart pause play playing progress ratechange resize seeked seeking stalled suspend timeupdate volumechange waiting\".split(\" \"),mf=new Set(\"cancel close invalid load scroll toggle\".split(\" \").concat(lf));\nfunction nf(a,b,c){var d=a.type||\"unknown-event\";a.currentTarget=c;Ub(d,b,void 0,a);a.currentTarget=null}\nfunction se(a,b){b=0!==(b&4);for(var c=0;c<a.length;c++){var d=a[c],e=d.event;d=d.listeners;a:{var f=void 0;if(b)for(var g=d.length-1;0<=g;g--){var h=d[g],k=h.instance,l=h.currentTarget;h=h.listener;if(k!==f&&e.isPropagationStopped())break a;nf(e,h,l);f=k}else for(g=0;g<d.length;g++){h=d[g];k=h.instance;l=h.currentTarget;h=h.listener;if(k!==f&&e.isPropagationStopped())break a;nf(e,h,l);f=k}}}if(Qb)throw a=Rb,Qb=!1,Rb=null,a;}\nfunction D(a,b){var c=b[of];void 0===c&&(c=b[of]=new Set);var d=a+\"__bubble\";c.has(d)||(pf(b,a,2,!1),c.add(d))}function qf(a,b,c){var d=0;b&&(d|=4);pf(c,a,d,b)}var rf=\"_reactListening\"+Math.random().toString(36).slice(2);function sf(a){if(!a[rf]){a[rf]=!0;da.forEach(function(b){\"selectionchange\"!==b&&(mf.has(b)||qf(b,!1,a),qf(b,!0,a))});var b=9===a.nodeType?a:a.ownerDocument;null===b||b[rf]||(b[rf]=!0,qf(\"selectionchange\",!1,b))}}\nfunction pf(a,b,c,d){switch(jd(b)){case 1:var e=ed;break;case 4:e=gd;break;default:e=fd}c=e.bind(null,b,c,a);e=void 0;!Lb||\"touchstart\"!==b&&\"touchmove\"!==b&&\"wheel\"!==b||(e=!0);d?void 0!==e?a.addEventListener(b,c,{capture:!0,passive:e}):a.addEventListener(b,c,!0):void 0!==e?a.addEventListener(b,c,{passive:e}):a.addEventListener(b,c,!1)}\nfunction hd(a,b,c,d,e){var f=d;if(0===(b&1)&&0===(b&2)&&null!==d)a:for(;;){if(null===d)return;var g=d.tag;if(3===g||4===g){var h=d.stateNode.containerInfo;if(h===e||8===h.nodeType&&h.parentNode===e)break;if(4===g)for(g=d.return;null!==g;){var k=g.tag;if(3===k||4===k)if(k=g.stateNode.containerInfo,k===e||8===k.nodeType&&k.parentNode===e)return;g=g.return}for(;null!==h;){g=Wc(h);if(null===g)return;k=g.tag;if(5===k||6===k){d=f=g;continue a}h=h.parentNode}}d=d.return}Jb(function(){var d=f,e=xb(c),g=[];\na:{var h=df.get(a);if(void 0!==h){var k=td,n=a;switch(a){case \"keypress\":if(0===od(c))break a;case \"keydown\":case \"keyup\":k=Rd;break;case \"focusin\":n=\"focus\";k=Fd;break;case \"focusout\":n=\"blur\";k=Fd;break;case \"beforeblur\":case \"afterblur\":k=Fd;break;case \"click\":if(2===c.button)break a;case \"auxclick\":case \"dblclick\":case \"mousedown\":case \"mousemove\":case \"mouseup\":case \"mouseout\":case \"mouseover\":case \"contextmenu\":k=Bd;break;case \"drag\":case \"dragend\":case \"dragenter\":case \"dragexit\":case \"dragleave\":case \"dragover\":case \"dragstart\":case \"drop\":k=\nDd;break;case \"touchcancel\":case \"touchend\":case \"touchmove\":case \"touchstart\":k=Vd;break;case $e:case af:case bf:k=Hd;break;case cf:k=Xd;break;case \"scroll\":k=vd;break;case \"wheel\":k=Zd;break;case \"copy\":case \"cut\":case \"paste\":k=Jd;break;case \"gotpointercapture\":case \"lostpointercapture\":case \"pointercancel\":case \"pointerdown\":case \"pointermove\":case \"pointerout\":case \"pointerover\":case \"pointerup\":k=Td}var t=0!==(b&4),J=!t&&\"scroll\"===a,x=t?null!==h?h+\"Capture\":null:h;t=[];for(var w=d,u;null!==\nw;){u=w;var F=u.stateNode;5===u.tag&&null!==F&&(u=F,null!==x&&(F=Kb(w,x),null!=F&&t.push(tf(w,F,u))));if(J)break;w=w.return}0<t.length&&(h=new k(h,n,null,c,e),g.push({event:h,listeners:t}))}}if(0===(b&7)){a:{h=\"mouseover\"===a||\"pointerover\"===a;k=\"mouseout\"===a||\"pointerout\"===a;if(h&&c!==wb&&(n=c.relatedTarget||c.fromElement)&&(Wc(n)||n[uf]))break a;if(k||h){h=e.window===e?e:(h=e.ownerDocument)?h.defaultView||h.parentWindow:window;if(k){if(n=c.relatedTarget||c.toElement,k=d,n=n?Wc(n):null,null!==\nn&&(J=Vb(n),n!==J||5!==n.tag&&6!==n.tag))n=null}else k=null,n=d;if(k!==n){t=Bd;F=\"onMouseLeave\";x=\"onMouseEnter\";w=\"mouse\";if(\"pointerout\"===a||\"pointerover\"===a)t=Td,F=\"onPointerLeave\",x=\"onPointerEnter\",w=\"pointer\";J=null==k?h:ue(k);u=null==n?h:ue(n);h=new t(F,w+\"leave\",k,c,e);h.target=J;h.relatedTarget=u;F=null;Wc(e)===d&&(t=new t(x,w+\"enter\",n,c,e),t.target=u,t.relatedTarget=J,F=t);J=F;if(k&&n)b:{t=k;x=n;w=0;for(u=t;u;u=vf(u))w++;u=0;for(F=x;F;F=vf(F))u++;for(;0<w-u;)t=vf(t),w--;for(;0<u-w;)x=\nvf(x),u--;for(;w--;){if(t===x||null!==x&&t===x.alternate)break b;t=vf(t);x=vf(x)}t=null}else t=null;null!==k&&wf(g,h,k,t,!1);null!==n&&null!==J&&wf(g,J,n,t,!0)}}}a:{h=d?ue(d):window;k=h.nodeName&&h.nodeName.toLowerCase();if(\"select\"===k||\"input\"===k&&\"file\"===h.type)var na=ve;else if(me(h))if(we)na=Fe;else{na=De;var xa=Ce}else(k=h.nodeName)&&\"input\"===k.toLowerCase()&&(\"checkbox\"===h.type||\"radio\"===h.type)&&(na=Ee);if(na&&(na=na(a,d))){ne(g,na,c,e);break a}xa&&xa(a,h,d);\"focusout\"===a&&(xa=h._wrapperState)&&\nxa.controlled&&\"number\"===h.type&&cb(h,\"number\",h.value)}xa=d?ue(d):window;switch(a){case \"focusin\":if(me(xa)||\"true\"===xa.contentEditable)Qe=xa,Re=d,Se=null;break;case \"focusout\":Se=Re=Qe=null;break;case \"mousedown\":Te=!0;break;case \"contextmenu\":case \"mouseup\":case \"dragend\":Te=!1;Ue(g,c,e);break;case \"selectionchange\":if(Pe)break;case \"keydown\":case \"keyup\":Ue(g,c,e)}var $a;if(ae)b:{switch(a){case \"compositionstart\":var ba=\"onCompositionStart\";break b;case \"compositionend\":ba=\"onCompositionEnd\";\nbreak b;case \"compositionupdate\":ba=\"onCompositionUpdate\";break b}ba=void 0}else ie?ge(a,c)&&(ba=\"onCompositionEnd\"):\"keydown\"===a&&229===c.keyCode&&(ba=\"onCompositionStart\");ba&&(de&&\"ko\"!==c.locale&&(ie||\"onCompositionStart\"!==ba?\"onCompositionEnd\"===ba&&ie&&($a=nd()):(kd=e,ld=\"value\"in kd?kd.value:kd.textContent,ie=!0)),xa=oe(d,ba),0<xa.length&&(ba=new Ld(ba,a,null,c,e),g.push({event:ba,listeners:xa}),$a?ba.data=$a:($a=he(c),null!==$a&&(ba.data=$a))));if($a=ce?je(a,c):ke(a,c))d=oe(d,\"onBeforeInput\"),\n0<d.length&&(e=new Ld(\"onBeforeInput\",\"beforeinput\",null,c,e),g.push({event:e,listeners:d}),e.data=$a)}se(g,b)})}function tf(a,b,c){return{instance:a,listener:b,currentTarget:c}}function oe(a,b){for(var c=b+\"Capture\",d=[];null!==a;){var e=a,f=e.stateNode;5===e.tag&&null!==f&&(e=f,f=Kb(a,c),null!=f&&d.unshift(tf(a,f,e)),f=Kb(a,b),null!=f&&d.push(tf(a,f,e)));a=a.return}return d}function vf(a){if(null===a)return null;do a=a.return;while(a&&5!==a.tag);return a?a:null}\nfunction wf(a,b,c,d,e){for(var f=b._reactName,g=[];null!==c&&c!==d;){var h=c,k=h.alternate,l=h.stateNode;if(null!==k&&k===d)break;5===h.tag&&null!==l&&(h=l,e?(k=Kb(c,f),null!=k&&g.unshift(tf(c,k,h))):e||(k=Kb(c,f),null!=k&&g.push(tf(c,k,h))));c=c.return}0!==g.length&&a.push({event:b,listeners:g})}var xf=/\\r\\n?/g,yf=/\\u0000|\\uFFFD/g;function zf(a){return(\"string\"===typeof a?a:\"\"+a).replace(xf,\"\\n\").replace(yf,\"\")}function Af(a,b,c){b=zf(b);if(zf(a)!==b&&c)throw Error(p(425));}function Bf(){}\nvar Cf=null,Df=null;function Ef(a,b){return\"textarea\"===a||\"noscript\"===a||\"string\"===typeof b.children||\"number\"===typeof b.children||\"object\"===typeof b.dangerouslySetInnerHTML&&null!==b.dangerouslySetInnerHTML&&null!=b.dangerouslySetInnerHTML.__html}\nvar Ff=\"function\"===typeof setTimeout?setTimeout:void 0,Gf=\"function\"===typeof clearTimeout?clearTimeout:void 0,Hf=\"function\"===typeof Promise?Promise:void 0,Jf=\"function\"===typeof queueMicrotask?queueMicrotask:\"undefined\"!==typeof Hf?function(a){return Hf.resolve(null).then(a).catch(If)}:Ff;function If(a){setTimeout(function(){throw a;})}\nfunction Kf(a,b){var c=b,d=0;do{var e=c.nextSibling;a.removeChild(c);if(e&&8===e.nodeType)if(c=e.data,\"/$\"===c){if(0===d){a.removeChild(e);bd(b);return}d--}else\"$\"!==c&&\"$?\"!==c&&\"$!\"!==c||d++;c=e}while(c);bd(b)}function Lf(a){for(;null!=a;a=a.nextSibling){var b=a.nodeType;if(1===b||3===b)break;if(8===b){b=a.data;if(\"$\"===b||\"$!\"===b||\"$?\"===b)break;if(\"/$\"===b)return null}}return a}\nfunction Mf(a){a=a.previousSibling;for(var b=0;a;){if(8===a.nodeType){var c=a.data;if(\"$\"===c||\"$!\"===c||\"$?\"===c){if(0===b)return a;b--}else\"/$\"===c&&b++}a=a.previousSibling}return null}var Nf=Math.random().toString(36).slice(2),Of=\"__reactFiber$\"+Nf,Pf=\"__reactProps$\"+Nf,uf=\"__reactContainer$\"+Nf,of=\"__reactEvents$\"+Nf,Qf=\"__reactListeners$\"+Nf,Rf=\"__reactHandles$\"+Nf;\nfunction Wc(a){var b=a[Of];if(b)return b;for(var c=a.parentNode;c;){if(b=c[uf]||c[Of]){c=b.alternate;if(null!==b.child||null!==c&&null!==c.child)for(a=Mf(a);null!==a;){if(c=a[Of])return c;a=Mf(a)}return b}a=c;c=a.parentNode}return null}function Cb(a){a=a[Of]||a[uf];return!a||5!==a.tag&&6!==a.tag&&13!==a.tag&&3!==a.tag?null:a}function ue(a){if(5===a.tag||6===a.tag)return a.stateNode;throw Error(p(33));}function Db(a){return a[Pf]||null}var Sf=[],Tf=-1;function Uf(a){return{current:a}}\nfunction E(a){0>Tf||(a.current=Sf[Tf],Sf[Tf]=null,Tf--)}function G(a,b){Tf++;Sf[Tf]=a.current;a.current=b}var Vf={},H=Uf(Vf),Wf=Uf(!1),Xf=Vf;function Yf(a,b){var c=a.type.contextTypes;if(!c)return Vf;var d=a.stateNode;if(d&&d.__reactInternalMemoizedUnmaskedChildContext===b)return d.__reactInternalMemoizedMaskedChildContext;var e={},f;for(f in c)e[f]=b[f];d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=b,a.__reactInternalMemoizedMaskedChildContext=e);return e}\nfunction Zf(a){a=a.childContextTypes;return null!==a&&void 0!==a}function $f(){E(Wf);E(H)}function ag(a,b,c){if(H.current!==Vf)throw Error(p(168));G(H,b);G(Wf,c)}function bg(a,b,c){var d=a.stateNode;b=b.childContextTypes;if(\"function\"!==typeof d.getChildContext)return c;d=d.getChildContext();for(var e in d)if(!(e in b))throw Error(p(108,Ra(a)||\"Unknown\",e));return A({},c,d)}\nfunction cg(a){a=(a=a.stateNode)&&a.__reactInternalMemoizedMergedChildContext||Vf;Xf=H.current;G(H,a);G(Wf,Wf.current);return!0}function dg(a,b,c){var d=a.stateNode;if(!d)throw Error(p(169));c?(a=bg(a,b,Xf),d.__reactInternalMemoizedMergedChildContext=a,E(Wf),E(H),G(H,a)):E(Wf);G(Wf,c)}var eg=null,fg=!1,gg=!1;function hg(a){null===eg?eg=[a]:eg.push(a)}function ig(a){fg=!0;hg(a)}\nfunction jg(){if(!gg&&null!==eg){gg=!0;var a=0,b=C;try{var c=eg;for(C=1;a<c.length;a++){var d=c[a];do d=d(!0);while(null!==d)}eg=null;fg=!1}catch(e){throw null!==eg&&(eg=eg.slice(a+1)),ac(fc,jg),e;}finally{C=b,gg=!1}}return null}var kg=[],lg=0,mg=null,ng=0,og=[],pg=0,qg=null,rg=1,sg=\"\";function tg(a,b){kg[lg++]=ng;kg[lg++]=mg;mg=a;ng=b}\nfunction ug(a,b,c){og[pg++]=rg;og[pg++]=sg;og[pg++]=qg;qg=a;var d=rg;a=sg;var e=32-oc(d)-1;d&=~(1<<e);c+=1;var f=32-oc(b)+e;if(30<f){var g=e-e%5;f=(d&(1<<g)-1).toString(32);d>>=g;e-=g;rg=1<<32-oc(b)+e|c<<e|d;sg=f+a}else rg=1<<f|c<<e|d,sg=a}function vg(a){null!==a.return&&(tg(a,1),ug(a,1,0))}function wg(a){for(;a===mg;)mg=kg[--lg],kg[lg]=null,ng=kg[--lg],kg[lg]=null;for(;a===qg;)qg=og[--pg],og[pg]=null,sg=og[--pg],og[pg]=null,rg=og[--pg],og[pg]=null}var xg=null,yg=null,I=!1,zg=null;\nfunction Ag(a,b){var c=Bg(5,null,null,0);c.elementType=\"DELETED\";c.stateNode=b;c.return=a;b=a.deletions;null===b?(a.deletions=[c],a.flags|=16):b.push(c)}\nfunction Cg(a,b){switch(a.tag){case 5:var c=a.type;b=1!==b.nodeType||c.toLowerCase()!==b.nodeName.toLowerCase()?null:b;return null!==b?(a.stateNode=b,xg=a,yg=Lf(b.firstChild),!0):!1;case 6:return b=\"\"===a.pendingProps||3!==b.nodeType?null:b,null!==b?(a.stateNode=b,xg=a,yg=null,!0):!1;case 13:return b=8!==b.nodeType?null:b,null!==b?(c=null!==qg?{id:rg,overflow:sg}:null,a.memoizedState={dehydrated:b,treeContext:c,retryLane:1073741824},c=Bg(18,null,null,0),c.stateNode=b,c.return=a,a.child=c,xg=a,yg=\nnull,!0):!1;default:return!1}}function Dg(a){return 0!==(a.mode&1)&&0===(a.flags&128)}function Eg(a){if(I){var b=yg;if(b){var c=b;if(!Cg(a,b)){if(Dg(a))throw Error(p(418));b=Lf(c.nextSibling);var d=xg;b&&Cg(a,b)?Ag(d,c):(a.flags=a.flags&-4097|2,I=!1,xg=a)}}else{if(Dg(a))throw Error(p(418));a.flags=a.flags&-4097|2;I=!1;xg=a}}}function Fg(a){for(a=a.return;null!==a&&5!==a.tag&&3!==a.tag&&13!==a.tag;)a=a.return;xg=a}\nfunction Gg(a){if(a!==xg)return!1;if(!I)return Fg(a),I=!0,!1;var b;(b=3!==a.tag)&&!(b=5!==a.tag)&&(b=a.type,b=\"head\"!==b&&\"body\"!==b&&!Ef(a.type,a.memoizedProps));if(b&&(b=yg)){if(Dg(a))throw Hg(),Error(p(418));for(;b;)Ag(a,b),b=Lf(b.nextSibling)}Fg(a);if(13===a.tag){a=a.memoizedState;a=null!==a?a.dehydrated:null;if(!a)throw Error(p(317));a:{a=a.nextSibling;for(b=0;a;){if(8===a.nodeType){var c=a.data;if(\"/$\"===c){if(0===b){yg=Lf(a.nextSibling);break a}b--}else\"$\"!==c&&\"$!\"!==c&&\"$?\"!==c||b++}a=a.nextSibling}yg=\nnull}}else yg=xg?Lf(a.stateNode.nextSibling):null;return!0}function Hg(){for(var a=yg;a;)a=Lf(a.nextSibling)}function Ig(){yg=xg=null;I=!1}function Jg(a){null===zg?zg=[a]:zg.push(a)}var Kg=ua.ReactCurrentBatchConfig;\nfunction Lg(a,b,c){a=c.ref;if(null!==a&&\"function\"!==typeof a&&\"object\"!==typeof a){if(c._owner){c=c._owner;if(c){if(1!==c.tag)throw Error(p(309));var d=c.stateNode}if(!d)throw Error(p(147,a));var e=d,f=\"\"+a;if(null!==b&&null!==b.ref&&\"function\"===typeof b.ref&&b.ref._stringRef===f)return b.ref;b=function(a){var b=e.refs;null===a?delete b[f]:b[f]=a};b._stringRef=f;return b}if(\"string\"!==typeof a)throw Error(p(284));if(!c._owner)throw Error(p(290,a));}return a}\nfunction Mg(a,b){a=Object.prototype.toString.call(b);throw Error(p(31,\"[object Object]\"===a?\"object with keys {\"+Object.keys(b).join(\", \")+\"}\":a));}function Ng(a){var b=a._init;return b(a._payload)}\nfunction Og(a){function b(b,c){if(a){var d=b.deletions;null===d?(b.deletions=[c],b.flags|=16):d.push(c)}}function c(c,d){if(!a)return null;for(;null!==d;)b(c,d),d=d.sibling;return null}function d(a,b){for(a=new Map;null!==b;)null!==b.key?a.set(b.key,b):a.set(b.index,b),b=b.sibling;return a}function e(a,b){a=Pg(a,b);a.index=0;a.sibling=null;return a}function f(b,c,d){b.index=d;if(!a)return b.flags|=1048576,c;d=b.alternate;if(null!==d)return d=d.index,d<c?(b.flags|=2,c):d;b.flags|=2;return c}function g(b){a&&\nnull===b.alternate&&(b.flags|=2);return b}function h(a,b,c,d){if(null===b||6!==b.tag)return b=Qg(c,a.mode,d),b.return=a,b;b=e(b,c);b.return=a;return b}function k(a,b,c,d){var f=c.type;if(f===ya)return m(a,b,c.props.children,d,c.key);if(null!==b&&(b.elementType===f||\"object\"===typeof f&&null!==f&&f.$$typeof===Ha&&Ng(f)===b.type))return d=e(b,c.props),d.ref=Lg(a,b,c),d.return=a,d;d=Rg(c.type,c.key,c.props,null,a.mode,d);d.ref=Lg(a,b,c);d.return=a;return d}function l(a,b,c,d){if(null===b||4!==b.tag||\nb.stateNode.containerInfo!==c.containerInfo||b.stateNode.implementation!==c.implementation)return b=Sg(c,a.mode,d),b.return=a,b;b=e(b,c.children||[]);b.return=a;return b}function m(a,b,c,d,f){if(null===b||7!==b.tag)return b=Tg(c,a.mode,d,f),b.return=a,b;b=e(b,c);b.return=a;return b}function q(a,b,c){if(\"string\"===typeof b&&\"\"!==b||\"number\"===typeof b)return b=Qg(\"\"+b,a.mode,c),b.return=a,b;if(\"object\"===typeof b&&null!==b){switch(b.$$typeof){case va:return c=Rg(b.type,b.key,b.props,null,a.mode,c),\nc.ref=Lg(a,null,b),c.return=a,c;case wa:return b=Sg(b,a.mode,c),b.return=a,b;case Ha:var d=b._init;return q(a,d(b._payload),c)}if(eb(b)||Ka(b))return b=Tg(b,a.mode,c,null),b.return=a,b;Mg(a,b)}return null}function r(a,b,c,d){var e=null!==b?b.key:null;if(\"string\"===typeof c&&\"\"!==c||\"number\"===typeof c)return null!==e?null:h(a,b,\"\"+c,d);if(\"object\"===typeof c&&null!==c){switch(c.$$typeof){case va:return c.key===e?k(a,b,c,d):null;case wa:return c.key===e?l(a,b,c,d):null;case Ha:return e=c._init,r(a,\nb,e(c._payload),d)}if(eb(c)||Ka(c))return null!==e?null:m(a,b,c,d,null);Mg(a,c)}return null}function y(a,b,c,d,e){if(\"string\"===typeof d&&\"\"!==d||\"number\"===typeof d)return a=a.get(c)||null,h(b,a,\"\"+d,e);if(\"object\"===typeof d&&null!==d){switch(d.$$typeof){case va:return a=a.get(null===d.key?c:d.key)||null,k(b,a,d,e);case wa:return a=a.get(null===d.key?c:d.key)||null,l(b,a,d,e);case Ha:var f=d._init;return y(a,b,c,f(d._payload),e)}if(eb(d)||Ka(d))return a=a.get(c)||null,m(b,a,d,e,null);Mg(b,d)}return null}\nfunction n(e,g,h,k){for(var l=null,m=null,u=g,w=g=0,x=null;null!==u&&w<h.length;w++){u.index>w?(x=u,u=null):x=u.sibling;var n=r(e,u,h[w],k);if(null===n){null===u&&(u=x);break}a&&u&&null===n.alternate&&b(e,u);g=f(n,g,w);null===m?l=n:m.sibling=n;m=n;u=x}if(w===h.length)return c(e,u),I&&tg(e,w),l;if(null===u){for(;w<h.length;w++)u=q(e,h[w],k),null!==u&&(g=f(u,g,w),null===m?l=u:m.sibling=u,m=u);I&&tg(e,w);return l}for(u=d(e,u);w<h.length;w++)x=y(u,e,w,h[w],k),null!==x&&(a&&null!==x.alternate&&u.delete(null===\nx.key?w:x.key),g=f(x,g,w),null===m?l=x:m.sibling=x,m=x);a&&u.forEach(function(a){return b(e,a)});I&&tg(e,w);return l}function t(e,g,h,k){var l=Ka(h);if(\"function\"!==typeof l)throw Error(p(150));h=l.call(h);if(null==h)throw Error(p(151));for(var u=l=null,m=g,w=g=0,x=null,n=h.next();null!==m&&!n.done;w++,n=h.next()){m.index>w?(x=m,m=null):x=m.sibling;var t=r(e,m,n.value,k);if(null===t){null===m&&(m=x);break}a&&m&&null===t.alternate&&b(e,m);g=f(t,g,w);null===u?l=t:u.sibling=t;u=t;m=x}if(n.done)return c(e,\nm),I&&tg(e,w),l;if(null===m){for(;!n.done;w++,n=h.next())n=q(e,n.value,k),null!==n&&(g=f(n,g,w),null===u?l=n:u.sibling=n,u=n);I&&tg(e,w);return l}for(m=d(e,m);!n.done;w++,n=h.next())n=y(m,e,w,n.value,k),null!==n&&(a&&null!==n.alternate&&m.delete(null===n.key?w:n.key),g=f(n,g,w),null===u?l=n:u.sibling=n,u=n);a&&m.forEach(function(a){return b(e,a)});I&&tg(e,w);return l}function J(a,d,f,h){\"object\"===typeof f&&null!==f&&f.type===ya&&null===f.key&&(f=f.props.children);if(\"object\"===typeof f&&null!==f){switch(f.$$typeof){case va:a:{for(var k=\nf.key,l=d;null!==l;){if(l.key===k){k=f.type;if(k===ya){if(7===l.tag){c(a,l.sibling);d=e(l,f.props.children);d.return=a;a=d;break a}}else if(l.elementType===k||\"object\"===typeof k&&null!==k&&k.$$typeof===Ha&&Ng(k)===l.type){c(a,l.sibling);d=e(l,f.props);d.ref=Lg(a,l,f);d.return=a;a=d;break a}c(a,l);break}else b(a,l);l=l.sibling}f.type===ya?(d=Tg(f.props.children,a.mode,h,f.key),d.return=a,a=d):(h=Rg(f.type,f.key,f.props,null,a.mode,h),h.ref=Lg(a,d,f),h.return=a,a=h)}return g(a);case wa:a:{for(l=f.key;null!==\nd;){if(d.key===l)if(4===d.tag&&d.stateNode.containerInfo===f.containerInfo&&d.stateNode.implementation===f.implementation){c(a,d.sibling);d=e(d,f.children||[]);d.return=a;a=d;break a}else{c(a,d);break}else b(a,d);d=d.sibling}d=Sg(f,a.mode,h);d.return=a;a=d}return g(a);case Ha:return l=f._init,J(a,d,l(f._payload),h)}if(eb(f))return n(a,d,f,h);if(Ka(f))return t(a,d,f,h);Mg(a,f)}return\"string\"===typeof f&&\"\"!==f||\"number\"===typeof f?(f=\"\"+f,null!==d&&6===d.tag?(c(a,d.sibling),d=e(d,f),d.return=a,a=d):\n(c(a,d),d=Qg(f,a.mode,h),d.return=a,a=d),g(a)):c(a,d)}return J}var Ug=Og(!0),Vg=Og(!1),Wg=Uf(null),Xg=null,Yg=null,Zg=null;function $g(){Zg=Yg=Xg=null}function ah(a){var b=Wg.current;E(Wg);a._currentValue=b}function bh(a,b,c){for(;null!==a;){var d=a.alternate;(a.childLanes&b)!==b?(a.childLanes|=b,null!==d&&(d.childLanes|=b)):null!==d&&(d.childLanes&b)!==b&&(d.childLanes|=b);if(a===c)break;a=a.return}}\nfunction ch(a,b){Xg=a;Zg=Yg=null;a=a.dependencies;null!==a&&null!==a.firstContext&&(0!==(a.lanes&b)&&(dh=!0),a.firstContext=null)}function eh(a){var b=a._currentValue;if(Zg!==a)if(a={context:a,memoizedValue:b,next:null},null===Yg){if(null===Xg)throw Error(p(308));Yg=a;Xg.dependencies={lanes:0,firstContext:a}}else Yg=Yg.next=a;return b}var fh=null;function gh(a){null===fh?fh=[a]:fh.push(a)}\nfunction hh(a,b,c,d){var e=b.interleaved;null===e?(c.next=c,gh(b)):(c.next=e.next,e.next=c);b.interleaved=c;return ih(a,d)}function ih(a,b){a.lanes|=b;var c=a.alternate;null!==c&&(c.lanes|=b);c=a;for(a=a.return;null!==a;)a.childLanes|=b,c=a.alternate,null!==c&&(c.childLanes|=b),c=a,a=a.return;return 3===c.tag?c.stateNode:null}var jh=!1;function kh(a){a.updateQueue={baseState:a.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,interleaved:null,lanes:0},effects:null}}\nfunction lh(a,b){a=a.updateQueue;b.updateQueue===a&&(b.updateQueue={baseState:a.baseState,firstBaseUpdate:a.firstBaseUpdate,lastBaseUpdate:a.lastBaseUpdate,shared:a.shared,effects:a.effects})}function mh(a,b){return{eventTime:a,lane:b,tag:0,payload:null,callback:null,next:null}}\nfunction nh(a,b,c){var d=a.updateQueue;if(null===d)return null;d=d.shared;if(0!==(K&2)){var e=d.pending;null===e?b.next=b:(b.next=e.next,e.next=b);d.pending=b;return ih(a,c)}e=d.interleaved;null===e?(b.next=b,gh(d)):(b.next=e.next,e.next=b);d.interleaved=b;return ih(a,c)}function oh(a,b,c){b=b.updateQueue;if(null!==b&&(b=b.shared,0!==(c&4194240))){var d=b.lanes;d&=a.pendingLanes;c|=d;b.lanes=c;Cc(a,c)}}\nfunction ph(a,b){var c=a.updateQueue,d=a.alternate;if(null!==d&&(d=d.updateQueue,c===d)){var e=null,f=null;c=c.firstBaseUpdate;if(null!==c){do{var g={eventTime:c.eventTime,lane:c.lane,tag:c.tag,payload:c.payload,callback:c.callback,next:null};null===f?e=f=g:f=f.next=g;c=c.next}while(null!==c);null===f?e=f=b:f=f.next=b}else e=f=b;c={baseState:d.baseState,firstBaseUpdate:e,lastBaseUpdate:f,shared:d.shared,effects:d.effects};a.updateQueue=c;return}a=c.lastBaseUpdate;null===a?c.firstBaseUpdate=b:a.next=\nb;c.lastBaseUpdate=b}\nfunction qh(a,b,c,d){var e=a.updateQueue;jh=!1;var f=e.firstBaseUpdate,g=e.lastBaseUpdate,h=e.shared.pending;if(null!==h){e.shared.pending=null;var k=h,l=k.next;k.next=null;null===g?f=l:g.next=l;g=k;var m=a.alternate;null!==m&&(m=m.updateQueue,h=m.lastBaseUpdate,h!==g&&(null===h?m.firstBaseUpdate=l:h.next=l,m.lastBaseUpdate=k))}if(null!==f){var q=e.baseState;g=0;m=l=k=null;h=f;do{var r=h.lane,y=h.eventTime;if((d&r)===r){null!==m&&(m=m.next={eventTime:y,lane:0,tag:h.tag,payload:h.payload,callback:h.callback,\nnext:null});a:{var n=a,t=h;r=b;y=c;switch(t.tag){case 1:n=t.payload;if(\"function\"===typeof n){q=n.call(y,q,r);break a}q=n;break a;case 3:n.flags=n.flags&-65537|128;case 0:n=t.payload;r=\"function\"===typeof n?n.call(y,q,r):n;if(null===r||void 0===r)break a;q=A({},q,r);break a;case 2:jh=!0}}null!==h.callback&&0!==h.lane&&(a.flags|=64,r=e.effects,null===r?e.effects=[h]:r.push(h))}else y={eventTime:y,lane:r,tag:h.tag,payload:h.payload,callback:h.callback,next:null},null===m?(l=m=y,k=q):m=m.next=y,g|=r;\nh=h.next;if(null===h)if(h=e.shared.pending,null===h)break;else r=h,h=r.next,r.next=null,e.lastBaseUpdate=r,e.shared.pending=null}while(1);null===m&&(k=q);e.baseState=k;e.firstBaseUpdate=l;e.lastBaseUpdate=m;b=e.shared.interleaved;if(null!==b){e=b;do g|=e.lane,e=e.next;while(e!==b)}else null===f&&(e.shared.lanes=0);rh|=g;a.lanes=g;a.memoizedState=q}}\nfunction sh(a,b,c){a=b.effects;b.effects=null;if(null!==a)for(b=0;b<a.length;b++){var d=a[b],e=d.callback;if(null!==e){d.callback=null;d=c;if(\"function\"!==typeof e)throw Error(p(191,e));e.call(d)}}}var th={},uh=Uf(th),vh=Uf(th),wh=Uf(th);function xh(a){if(a===th)throw Error(p(174));return a}\nfunction yh(a,b){G(wh,b);G(vh,a);G(uh,th);a=b.nodeType;switch(a){case 9:case 11:b=(b=b.documentElement)?b.namespaceURI:lb(null,\"\");break;default:a=8===a?b.parentNode:b,b=a.namespaceURI||null,a=a.tagName,b=lb(b,a)}E(uh);G(uh,b)}function zh(){E(uh);E(vh);E(wh)}function Ah(a){xh(wh.current);var b=xh(uh.current);var c=lb(b,a.type);b!==c&&(G(vh,a),G(uh,c))}function Bh(a){vh.current===a&&(E(uh),E(vh))}var L=Uf(0);\nfunction Ch(a){for(var b=a;null!==b;){if(13===b.tag){var c=b.memoizedState;if(null!==c&&(c=c.dehydrated,null===c||\"$?\"===c.data||\"$!\"===c.data))return b}else if(19===b.tag&&void 0!==b.memoizedProps.revealOrder){if(0!==(b.flags&128))return b}else if(null!==b.child){b.child.return=b;b=b.child;continue}if(b===a)break;for(;null===b.sibling;){if(null===b.return||b.return===a)return null;b=b.return}b.sibling.return=b.return;b=b.sibling}return null}var Dh=[];\nfunction Eh(){for(var a=0;a<Dh.length;a++)Dh[a]._workInProgressVersionPrimary=null;Dh.length=0}var Fh=ua.ReactCurrentDispatcher,Gh=ua.ReactCurrentBatchConfig,Hh=0,M=null,N=null,O=null,Ih=!1,Jh=!1,Kh=0,Lh=0;function P(){throw Error(p(321));}function Mh(a,b){if(null===b)return!1;for(var c=0;c<b.length&&c<a.length;c++)if(!He(a[c],b[c]))return!1;return!0}\nfunction Nh(a,b,c,d,e,f){Hh=f;M=b;b.memoizedState=null;b.updateQueue=null;b.lanes=0;Fh.current=null===a||null===a.memoizedState?Oh:Ph;a=c(d,e);if(Jh){f=0;do{Jh=!1;Kh=0;if(25<=f)throw Error(p(301));f+=1;O=N=null;b.updateQueue=null;Fh.current=Qh;a=c(d,e)}while(Jh)}Fh.current=Rh;b=null!==N&&null!==N.next;Hh=0;O=N=M=null;Ih=!1;if(b)throw Error(p(300));return a}function Sh(){var a=0!==Kh;Kh=0;return a}\nfunction Th(){var a={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};null===O?M.memoizedState=O=a:O=O.next=a;return O}function Uh(){if(null===N){var a=M.alternate;a=null!==a?a.memoizedState:null}else a=N.next;var b=null===O?M.memoizedState:O.next;if(null!==b)O=b,N=a;else{if(null===a)throw Error(p(310));N=a;a={memoizedState:N.memoizedState,baseState:N.baseState,baseQueue:N.baseQueue,queue:N.queue,next:null};null===O?M.memoizedState=O=a:O=O.next=a}return O}\nfunction Vh(a,b){return\"function\"===typeof b?b(a):b}\nfunction Wh(a){var b=Uh(),c=b.queue;if(null===c)throw Error(p(311));c.lastRenderedReducer=a;var d=N,e=d.baseQueue,f=c.pending;if(null!==f){if(null!==e){var g=e.next;e.next=f.next;f.next=g}d.baseQueue=e=f;c.pending=null}if(null!==e){f=e.next;d=d.baseState;var h=g=null,k=null,l=f;do{var m=l.lane;if((Hh&m)===m)null!==k&&(k=k.next={lane:0,action:l.action,hasEagerState:l.hasEagerState,eagerState:l.eagerState,next:null}),d=l.hasEagerState?l.eagerState:a(d,l.action);else{var q={lane:m,action:l.action,hasEagerState:l.hasEagerState,\neagerState:l.eagerState,next:null};null===k?(h=k=q,g=d):k=k.next=q;M.lanes|=m;rh|=m}l=l.next}while(null!==l&&l!==f);null===k?g=d:k.next=h;He(d,b.memoizedState)||(dh=!0);b.memoizedState=d;b.baseState=g;b.baseQueue=k;c.lastRenderedState=d}a=c.interleaved;if(null!==a){e=a;do f=e.lane,M.lanes|=f,rh|=f,e=e.next;while(e!==a)}else null===e&&(c.lanes=0);return[b.memoizedState,c.dispatch]}\nfunction Xh(a){var b=Uh(),c=b.queue;if(null===c)throw Error(p(311));c.lastRenderedReducer=a;var d=c.dispatch,e=c.pending,f=b.memoizedState;if(null!==e){c.pending=null;var g=e=e.next;do f=a(f,g.action),g=g.next;while(g!==e);He(f,b.memoizedState)||(dh=!0);b.memoizedState=f;null===b.baseQueue&&(b.baseState=f);c.lastRenderedState=f}return[f,d]}function Yh(){}\nfunction Zh(a,b){var c=M,d=Uh(),e=b(),f=!He(d.memoizedState,e);f&&(d.memoizedState=e,dh=!0);d=d.queue;$h(ai.bind(null,c,d,a),[a]);if(d.getSnapshot!==b||f||null!==O&&O.memoizedState.tag&1){c.flags|=2048;bi(9,ci.bind(null,c,d,e,b),void 0,null);if(null===Q)throw Error(p(349));0!==(Hh&30)||di(c,b,e)}return e}function di(a,b,c){a.flags|=16384;a={getSnapshot:b,value:c};b=M.updateQueue;null===b?(b={lastEffect:null,stores:null},M.updateQueue=b,b.stores=[a]):(c=b.stores,null===c?b.stores=[a]:c.push(a))}\nfunction ci(a,b,c,d){b.value=c;b.getSnapshot=d;ei(b)&&fi(a)}function ai(a,b,c){return c(function(){ei(b)&&fi(a)})}function ei(a){var b=a.getSnapshot;a=a.value;try{var c=b();return!He(a,c)}catch(d){return!0}}function fi(a){var b=ih(a,1);null!==b&&gi(b,a,1,-1)}\nfunction hi(a){var b=Th();\"function\"===typeof a&&(a=a());b.memoizedState=b.baseState=a;a={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:Vh,lastRenderedState:a};b.queue=a;a=a.dispatch=ii.bind(null,M,a);return[b.memoizedState,a]}\nfunction bi(a,b,c,d){a={tag:a,create:b,destroy:c,deps:d,next:null};b=M.updateQueue;null===b?(b={lastEffect:null,stores:null},M.updateQueue=b,b.lastEffect=a.next=a):(c=b.lastEffect,null===c?b.lastEffect=a.next=a:(d=c.next,c.next=a,a.next=d,b.lastEffect=a));return a}function ji(){return Uh().memoizedState}function ki(a,b,c,d){var e=Th();M.flags|=a;e.memoizedState=bi(1|b,c,void 0,void 0===d?null:d)}\nfunction li(a,b,c,d){var e=Uh();d=void 0===d?null:d;var f=void 0;if(null!==N){var g=N.memoizedState;f=g.destroy;if(null!==d&&Mh(d,g.deps)){e.memoizedState=bi(b,c,f,d);return}}M.flags|=a;e.memoizedState=bi(1|b,c,f,d)}function mi(a,b){return ki(8390656,8,a,b)}function $h(a,b){return li(2048,8,a,b)}function ni(a,b){return li(4,2,a,b)}function oi(a,b){return li(4,4,a,b)}\nfunction pi(a,b){if(\"function\"===typeof b)return a=a(),b(a),function(){b(null)};if(null!==b&&void 0!==b)return a=a(),b.current=a,function(){b.current=null}}function qi(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return li(4,4,pi.bind(null,b,a),c)}function ri(){}function si(a,b){var c=Uh();b=void 0===b?null:b;var d=c.memoizedState;if(null!==d&&null!==b&&Mh(b,d[1]))return d[0];c.memoizedState=[a,b];return a}\nfunction ti(a,b){var c=Uh();b=void 0===b?null:b;var d=c.memoizedState;if(null!==d&&null!==b&&Mh(b,d[1]))return d[0];a=a();c.memoizedState=[a,b];return a}function ui(a,b,c){if(0===(Hh&21))return a.baseState&&(a.baseState=!1,dh=!0),a.memoizedState=c;He(c,b)||(c=yc(),M.lanes|=c,rh|=c,a.baseState=!0);return b}function vi(a,b){var c=C;C=0!==c&&4>c?c:4;a(!0);var d=Gh.transition;Gh.transition={};try{a(!1),b()}finally{C=c,Gh.transition=d}}function wi(){return Uh().memoizedState}\nfunction xi(a,b,c){var d=yi(a);c={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};if(zi(a))Ai(b,c);else if(c=hh(a,b,c,d),null!==c){var e=R();gi(c,a,d,e);Bi(c,b,d)}}\nfunction ii(a,b,c){var d=yi(a),e={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};if(zi(a))Ai(b,e);else{var f=a.alternate;if(0===a.lanes&&(null===f||0===f.lanes)&&(f=b.lastRenderedReducer,null!==f))try{var g=b.lastRenderedState,h=f(g,c);e.hasEagerState=!0;e.eagerState=h;if(He(h,g)){var k=b.interleaved;null===k?(e.next=e,gh(b)):(e.next=k.next,k.next=e);b.interleaved=e;return}}catch(l){}finally{}c=hh(a,b,e,d);null!==c&&(e=R(),gi(c,a,d,e),Bi(c,b,d))}}\nfunction zi(a){var b=a.alternate;return a===M||null!==b&&b===M}function Ai(a,b){Jh=Ih=!0;var c=a.pending;null===c?b.next=b:(b.next=c.next,c.next=b);a.pending=b}function Bi(a,b,c){if(0!==(c&4194240)){var d=b.lanes;d&=a.pendingLanes;c|=d;b.lanes=c;Cc(a,c)}}\nvar Rh={readContext:eh,useCallback:P,useContext:P,useEffect:P,useImperativeHandle:P,useInsertionEffect:P,useLayoutEffect:P,useMemo:P,useReducer:P,useRef:P,useState:P,useDebugValue:P,useDeferredValue:P,useTransition:P,useMutableSource:P,useSyncExternalStore:P,useId:P,unstable_isNewReconciler:!1},Oh={readContext:eh,useCallback:function(a,b){Th().memoizedState=[a,void 0===b?null:b];return a},useContext:eh,useEffect:mi,useImperativeHandle:function(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return ki(4194308,\n4,pi.bind(null,b,a),c)},useLayoutEffect:function(a,b){return ki(4194308,4,a,b)},useInsertionEffect:function(a,b){return ki(4,2,a,b)},useMemo:function(a,b){var c=Th();b=void 0===b?null:b;a=a();c.memoizedState=[a,b];return a},useReducer:function(a,b,c){var d=Th();b=void 0!==c?c(b):b;d.memoizedState=d.baseState=b;a={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:a,lastRenderedState:b};d.queue=a;a=a.dispatch=xi.bind(null,M,a);return[d.memoizedState,a]},useRef:function(a){var b=\nTh();a={current:a};return b.memoizedState=a},useState:hi,useDebugValue:ri,useDeferredValue:function(a){return Th().memoizedState=a},useTransition:function(){var a=hi(!1),b=a[0];a=vi.bind(null,a[1]);Th().memoizedState=a;return[b,a]},useMutableSource:function(){},useSyncExternalStore:function(a,b,c){var d=M,e=Th();if(I){if(void 0===c)throw Error(p(407));c=c()}else{c=b();if(null===Q)throw Error(p(349));0!==(Hh&30)||di(d,b,c)}e.memoizedState=c;var f={value:c,getSnapshot:b};e.queue=f;mi(ai.bind(null,d,\nf,a),[a]);d.flags|=2048;bi(9,ci.bind(null,d,f,c,b),void 0,null);return c},useId:function(){var a=Th(),b=Q.identifierPrefix;if(I){var c=sg;var d=rg;c=(d&~(1<<32-oc(d)-1)).toString(32)+c;b=\":\"+b+\"R\"+c;c=Kh++;0<c&&(b+=\"H\"+c.toString(32));b+=\":\"}else c=Lh++,b=\":\"+b+\"r\"+c.toString(32)+\":\";return a.memoizedState=b},unstable_isNewReconciler:!1},Ph={readContext:eh,useCallback:si,useContext:eh,useEffect:$h,useImperativeHandle:qi,useInsertionEffect:ni,useLayoutEffect:oi,useMemo:ti,useReducer:Wh,useRef:ji,useState:function(){return Wh(Vh)},\nuseDebugValue:ri,useDeferredValue:function(a){var b=Uh();return ui(b,N.memoizedState,a)},useTransition:function(){var a=Wh(Vh)[0],b=Uh().memoizedState;return[a,b]},useMutableSource:Yh,useSyncExternalStore:Zh,useId:wi,unstable_isNewReconciler:!1},Qh={readContext:eh,useCallback:si,useContext:eh,useEffect:$h,useImperativeHandle:qi,useInsertionEffect:ni,useLayoutEffect:oi,useMemo:ti,useReducer:Xh,useRef:ji,useState:function(){return Xh(Vh)},useDebugValue:ri,useDeferredValue:function(a){var b=Uh();return null===\nN?b.memoizedState=a:ui(b,N.memoizedState,a)},useTransition:function(){var a=Xh(Vh)[0],b=Uh().memoizedState;return[a,b]},useMutableSource:Yh,useSyncExternalStore:Zh,useId:wi,unstable_isNewReconciler:!1};function Ci(a,b){if(a&&a.defaultProps){b=A({},b);a=a.defaultProps;for(var c in a)void 0===b[c]&&(b[c]=a[c]);return b}return b}function Di(a,b,c,d){b=a.memoizedState;c=c(d,b);c=null===c||void 0===c?b:A({},b,c);a.memoizedState=c;0===a.lanes&&(a.updateQueue.baseState=c)}\nvar Ei={isMounted:function(a){return(a=a._reactInternals)?Vb(a)===a:!1},enqueueSetState:function(a,b,c){a=a._reactInternals;var d=R(),e=yi(a),f=mh(d,e);f.payload=b;void 0!==c&&null!==c&&(f.callback=c);b=nh(a,f,e);null!==b&&(gi(b,a,e,d),oh(b,a,e))},enqueueReplaceState:function(a,b,c){a=a._reactInternals;var d=R(),e=yi(a),f=mh(d,e);f.tag=1;f.payload=b;void 0!==c&&null!==c&&(f.callback=c);b=nh(a,f,e);null!==b&&(gi(b,a,e,d),oh(b,a,e))},enqueueForceUpdate:function(a,b){a=a._reactInternals;var c=R(),d=\nyi(a),e=mh(c,d);e.tag=2;void 0!==b&&null!==b&&(e.callback=b);b=nh(a,e,d);null!==b&&(gi(b,a,d,c),oh(b,a,d))}};function Fi(a,b,c,d,e,f,g){a=a.stateNode;return\"function\"===typeof a.shouldComponentUpdate?a.shouldComponentUpdate(d,f,g):b.prototype&&b.prototype.isPureReactComponent?!Ie(c,d)||!Ie(e,f):!0}\nfunction Gi(a,b,c){var d=!1,e=Vf;var f=b.contextType;\"object\"===typeof f&&null!==f?f=eh(f):(e=Zf(b)?Xf:H.current,d=b.contextTypes,f=(d=null!==d&&void 0!==d)?Yf(a,e):Vf);b=new b(c,f);a.memoizedState=null!==b.state&&void 0!==b.state?b.state:null;b.updater=Ei;a.stateNode=b;b._reactInternals=a;d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=e,a.__reactInternalMemoizedMaskedChildContext=f);return b}\nfunction Hi(a,b,c,d){a=b.state;\"function\"===typeof b.componentWillReceiveProps&&b.componentWillReceiveProps(c,d);\"function\"===typeof b.UNSAFE_componentWillReceiveProps&&b.UNSAFE_componentWillReceiveProps(c,d);b.state!==a&&Ei.enqueueReplaceState(b,b.state,null)}\nfunction Ii(a,b,c,d){var e=a.stateNode;e.props=c;e.state=a.memoizedState;e.refs={};kh(a);var f=b.contextType;\"object\"===typeof f&&null!==f?e.context=eh(f):(f=Zf(b)?Xf:H.current,e.context=Yf(a,f));e.state=a.memoizedState;f=b.getDerivedStateFromProps;\"function\"===typeof f&&(Di(a,b,f,c),e.state=a.memoizedState);\"function\"===typeof b.getDerivedStateFromProps||\"function\"===typeof e.getSnapshotBeforeUpdate||\"function\"!==typeof e.UNSAFE_componentWillMount&&\"function\"!==typeof e.componentWillMount||(b=e.state,\n\"function\"===typeof e.componentWillMount&&e.componentWillMount(),\"function\"===typeof e.UNSAFE_componentWillMount&&e.UNSAFE_componentWillMount(),b!==e.state&&Ei.enqueueReplaceState(e,e.state,null),qh(a,c,e,d),e.state=a.memoizedState);\"function\"===typeof e.componentDidMount&&(a.flags|=4194308)}function Ji(a,b){try{var c=\"\",d=b;do c+=Pa(d),d=d.return;while(d);var e=c}catch(f){e=\"\\nError generating stack: \"+f.message+\"\\n\"+f.stack}return{value:a,source:b,stack:e,digest:null}}\nfunction Ki(a,b,c){return{value:a,source:null,stack:null!=c?c:null,digest:null!=b?b:null}}function Li(a,b){try{console.error(b.value)}catch(c){setTimeout(function(){throw c;})}}var Mi=\"function\"===typeof WeakMap?WeakMap:Map;function Ni(a,b,c){c=mh(-1,c);c.tag=3;c.payload={element:null};var d=b.value;c.callback=function(){Oi||(Oi=!0,Pi=d);Li(a,b)};return c}\nfunction Qi(a,b,c){c=mh(-1,c);c.tag=3;var d=a.type.getDerivedStateFromError;if(\"function\"===typeof d){var e=b.value;c.payload=function(){return d(e)};c.callback=function(){Li(a,b)}}var f=a.stateNode;null!==f&&\"function\"===typeof f.componentDidCatch&&(c.callback=function(){Li(a,b);\"function\"!==typeof d&&(null===Ri?Ri=new Set([this]):Ri.add(this));var c=b.stack;this.componentDidCatch(b.value,{componentStack:null!==c?c:\"\"})});return c}\nfunction Si(a,b,c){var d=a.pingCache;if(null===d){d=a.pingCache=new Mi;var e=new Set;d.set(b,e)}else e=d.get(b),void 0===e&&(e=new Set,d.set(b,e));e.has(c)||(e.add(c),a=Ti.bind(null,a,b,c),b.then(a,a))}function Ui(a){do{var b;if(b=13===a.tag)b=a.memoizedState,b=null!==b?null!==b.dehydrated?!0:!1:!0;if(b)return a;a=a.return}while(null!==a);return null}\nfunction Vi(a,b,c,d,e){if(0===(a.mode&1))return a===b?a.flags|=65536:(a.flags|=128,c.flags|=131072,c.flags&=-52805,1===c.tag&&(null===c.alternate?c.tag=17:(b=mh(-1,1),b.tag=2,nh(c,b,1))),c.lanes|=1),a;a.flags|=65536;a.lanes=e;return a}var Wi=ua.ReactCurrentOwner,dh=!1;function Xi(a,b,c,d){b.child=null===a?Vg(b,null,c,d):Ug(b,a.child,c,d)}\nfunction Yi(a,b,c,d,e){c=c.render;var f=b.ref;ch(b,e);d=Nh(a,b,c,d,f,e);c=Sh();if(null!==a&&!dh)return b.updateQueue=a.updateQueue,b.flags&=-2053,a.lanes&=~e,Zi(a,b,e);I&&c&&vg(b);b.flags|=1;Xi(a,b,d,e);return b.child}\nfunction $i(a,b,c,d,e){if(null===a){var f=c.type;if(\"function\"===typeof f&&!aj(f)&&void 0===f.defaultProps&&null===c.compare&&void 0===c.defaultProps)return b.tag=15,b.type=f,bj(a,b,f,d,e);a=Rg(c.type,null,d,b,b.mode,e);a.ref=b.ref;a.return=b;return b.child=a}f=a.child;if(0===(a.lanes&e)){var g=f.memoizedProps;c=c.compare;c=null!==c?c:Ie;if(c(g,d)&&a.ref===b.ref)return Zi(a,b,e)}b.flags|=1;a=Pg(f,d);a.ref=b.ref;a.return=b;return b.child=a}\nfunction bj(a,b,c,d,e){if(null!==a){var f=a.memoizedProps;if(Ie(f,d)&&a.ref===b.ref)if(dh=!1,b.pendingProps=d=f,0!==(a.lanes&e))0!==(a.flags&131072)&&(dh=!0);else return b.lanes=a.lanes,Zi(a,b,e)}return cj(a,b,c,d,e)}\nfunction dj(a,b,c){var d=b.pendingProps,e=d.children,f=null!==a?a.memoizedState:null;if(\"hidden\"===d.mode)if(0===(b.mode&1))b.memoizedState={baseLanes:0,cachePool:null,transitions:null},G(ej,fj),fj|=c;else{if(0===(c&1073741824))return a=null!==f?f.baseLanes|c:c,b.lanes=b.childLanes=1073741824,b.memoizedState={baseLanes:a,cachePool:null,transitions:null},b.updateQueue=null,G(ej,fj),fj|=a,null;b.memoizedState={baseLanes:0,cachePool:null,transitions:null};d=null!==f?f.baseLanes:c;G(ej,fj);fj|=d}else null!==\nf?(d=f.baseLanes|c,b.memoizedState=null):d=c,G(ej,fj),fj|=d;Xi(a,b,e,c);return b.child}function gj(a,b){var c=b.ref;if(null===a&&null!==c||null!==a&&a.ref!==c)b.flags|=512,b.flags|=2097152}function cj(a,b,c,d,e){var f=Zf(c)?Xf:H.current;f=Yf(b,f);ch(b,e);c=Nh(a,b,c,d,f,e);d=Sh();if(null!==a&&!dh)return b.updateQueue=a.updateQueue,b.flags&=-2053,a.lanes&=~e,Zi(a,b,e);I&&d&&vg(b);b.flags|=1;Xi(a,b,c,e);return b.child}\nfunction hj(a,b,c,d,e){if(Zf(c)){var f=!0;cg(b)}else f=!1;ch(b,e);if(null===b.stateNode)ij(a,b),Gi(b,c,d),Ii(b,c,d,e),d=!0;else if(null===a){var g=b.stateNode,h=b.memoizedProps;g.props=h;var k=g.context,l=c.contextType;\"object\"===typeof l&&null!==l?l=eh(l):(l=Zf(c)?Xf:H.current,l=Yf(b,l));var m=c.getDerivedStateFromProps,q=\"function\"===typeof m||\"function\"===typeof g.getSnapshotBeforeUpdate;q||\"function\"!==typeof g.UNSAFE_componentWillReceiveProps&&\"function\"!==typeof g.componentWillReceiveProps||\n(h!==d||k!==l)&&Hi(b,g,d,l);jh=!1;var r=b.memoizedState;g.state=r;qh(b,d,g,e);k=b.memoizedState;h!==d||r!==k||Wf.current||jh?(\"function\"===typeof m&&(Di(b,c,m,d),k=b.memoizedState),(h=jh||Fi(b,c,h,d,r,k,l))?(q||\"function\"!==typeof g.UNSAFE_componentWillMount&&\"function\"!==typeof g.componentWillMount||(\"function\"===typeof g.componentWillMount&&g.componentWillMount(),\"function\"===typeof g.UNSAFE_componentWillMount&&g.UNSAFE_componentWillMount()),\"function\"===typeof g.componentDidMount&&(b.flags|=4194308)):\n(\"function\"===typeof g.componentDidMount&&(b.flags|=4194308),b.memoizedProps=d,b.memoizedState=k),g.props=d,g.state=k,g.context=l,d=h):(\"function\"===typeof g.componentDidMount&&(b.flags|=4194308),d=!1)}else{g=b.stateNode;lh(a,b);h=b.memoizedProps;l=b.type===b.elementType?h:Ci(b.type,h);g.props=l;q=b.pendingProps;r=g.context;k=c.contextType;\"object\"===typeof k&&null!==k?k=eh(k):(k=Zf(c)?Xf:H.current,k=Yf(b,k));var y=c.getDerivedStateFromProps;(m=\"function\"===typeof y||\"function\"===typeof g.getSnapshotBeforeUpdate)||\n\"function\"!==typeof g.UNSAFE_componentWillReceiveProps&&\"function\"!==typeof g.componentWillReceiveProps||(h!==q||r!==k)&&Hi(b,g,d,k);jh=!1;r=b.memoizedState;g.state=r;qh(b,d,g,e);var n=b.memoizedState;h!==q||r!==n||Wf.current||jh?(\"function\"===typeof y&&(Di(b,c,y,d),n=b.memoizedState),(l=jh||Fi(b,c,l,d,r,n,k)||!1)?(m||\"function\"!==typeof g.UNSAFE_componentWillUpdate&&\"function\"!==typeof g.componentWillUpdate||(\"function\"===typeof g.componentWillUpdate&&g.componentWillUpdate(d,n,k),\"function\"===typeof g.UNSAFE_componentWillUpdate&&\ng.UNSAFE_componentWillUpdate(d,n,k)),\"function\"===typeof g.componentDidUpdate&&(b.flags|=4),\"function\"===typeof g.getSnapshotBeforeUpdate&&(b.flags|=1024)):(\"function\"!==typeof g.componentDidUpdate||h===a.memoizedProps&&r===a.memoizedState||(b.flags|=4),\"function\"!==typeof g.getSnapshotBeforeUpdate||h===a.memoizedProps&&r===a.memoizedState||(b.flags|=1024),b.memoizedProps=d,b.memoizedState=n),g.props=d,g.state=n,g.context=k,d=l):(\"function\"!==typeof g.componentDidUpdate||h===a.memoizedProps&&r===\na.memoizedState||(b.flags|=4),\"function\"!==typeof g.getSnapshotBeforeUpdate||h===a.memoizedProps&&r===a.memoizedState||(b.flags|=1024),d=!1)}return jj(a,b,c,d,f,e)}\nfunction jj(a,b,c,d,e,f){gj(a,b);var g=0!==(b.flags&128);if(!d&&!g)return e&&dg(b,c,!1),Zi(a,b,f);d=b.stateNode;Wi.current=b;var h=g&&\"function\"!==typeof c.getDerivedStateFromError?null:d.render();b.flags|=1;null!==a&&g?(b.child=Ug(b,a.child,null,f),b.child=Ug(b,null,h,f)):Xi(a,b,h,f);b.memoizedState=d.state;e&&dg(b,c,!0);return b.child}function kj(a){var b=a.stateNode;b.pendingContext?ag(a,b.pendingContext,b.pendingContext!==b.context):b.context&&ag(a,b.context,!1);yh(a,b.containerInfo)}\nfunction lj(a,b,c,d,e){Ig();Jg(e);b.flags|=256;Xi(a,b,c,d);return b.child}var mj={dehydrated:null,treeContext:null,retryLane:0};function nj(a){return{baseLanes:a,cachePool:null,transitions:null}}\nfunction oj(a,b,c){var d=b.pendingProps,e=L.current,f=!1,g=0!==(b.flags&128),h;(h=g)||(h=null!==a&&null===a.memoizedState?!1:0!==(e&2));if(h)f=!0,b.flags&=-129;else if(null===a||null!==a.memoizedState)e|=1;G(L,e&1);if(null===a){Eg(b);a=b.memoizedState;if(null!==a&&(a=a.dehydrated,null!==a))return 0===(b.mode&1)?b.lanes=1:\"$!\"===a.data?b.lanes=8:b.lanes=1073741824,null;g=d.children;a=d.fallback;return f?(d=b.mode,f=b.child,g={mode:\"hidden\",children:g},0===(d&1)&&null!==f?(f.childLanes=0,f.pendingProps=\ng):f=pj(g,d,0,null),a=Tg(a,d,c,null),f.return=b,a.return=b,f.sibling=a,b.child=f,b.child.memoizedState=nj(c),b.memoizedState=mj,a):qj(b,g)}e=a.memoizedState;if(null!==e&&(h=e.dehydrated,null!==h))return rj(a,b,g,d,h,e,c);if(f){f=d.fallback;g=b.mode;e=a.child;h=e.sibling;var k={mode:\"hidden\",children:d.children};0===(g&1)&&b.child!==e?(d=b.child,d.childLanes=0,d.pendingProps=k,b.deletions=null):(d=Pg(e,k),d.subtreeFlags=e.subtreeFlags&14680064);null!==h?f=Pg(h,f):(f=Tg(f,g,c,null),f.flags|=2);f.return=\nb;d.return=b;d.sibling=f;b.child=d;d=f;f=b.child;g=a.child.memoizedState;g=null===g?nj(c):{baseLanes:g.baseLanes|c,cachePool:null,transitions:g.transitions};f.memoizedState=g;f.childLanes=a.childLanes&~c;b.memoizedState=mj;return d}f=a.child;a=f.sibling;d=Pg(f,{mode:\"visible\",children:d.children});0===(b.mode&1)&&(d.lanes=c);d.return=b;d.sibling=null;null!==a&&(c=b.deletions,null===c?(b.deletions=[a],b.flags|=16):c.push(a));b.child=d;b.memoizedState=null;return d}\nfunction qj(a,b){b=pj({mode:\"visible\",children:b},a.mode,0,null);b.return=a;return a.child=b}function sj(a,b,c,d){null!==d&&Jg(d);Ug(b,a.child,null,c);a=qj(b,b.pendingProps.children);a.flags|=2;b.memoizedState=null;return a}\nfunction rj(a,b,c,d,e,f,g){if(c){if(b.flags&256)return b.flags&=-257,d=Ki(Error(p(422))),sj(a,b,g,d);if(null!==b.memoizedState)return b.child=a.child,b.flags|=128,null;f=d.fallback;e=b.mode;d=pj({mode:\"visible\",children:d.children},e,0,null);f=Tg(f,e,g,null);f.flags|=2;d.return=b;f.return=b;d.sibling=f;b.child=d;0!==(b.mode&1)&&Ug(b,a.child,null,g);b.child.memoizedState=nj(g);b.memoizedState=mj;return f}if(0===(b.mode&1))return sj(a,b,g,null);if(\"$!\"===e.data){d=e.nextSibling&&e.nextSibling.dataset;\nif(d)var h=d.dgst;d=h;f=Error(p(419));d=Ki(f,d,void 0);return sj(a,b,g,d)}h=0!==(g&a.childLanes);if(dh||h){d=Q;if(null!==d){switch(g&-g){case 4:e=2;break;case 16:e=8;break;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:e=32;break;case 536870912:e=268435456;break;default:e=0}e=0!==(e&(d.suspendedLanes|g))?0:e;\n0!==e&&e!==f.retryLane&&(f.retryLane=e,ih(a,e),gi(d,a,e,-1))}tj();d=Ki(Error(p(421)));return sj(a,b,g,d)}if(\"$?\"===e.data)return b.flags|=128,b.child=a.child,b=uj.bind(null,a),e._reactRetry=b,null;a=f.treeContext;yg=Lf(e.nextSibling);xg=b;I=!0;zg=null;null!==a&&(og[pg++]=rg,og[pg++]=sg,og[pg++]=qg,rg=a.id,sg=a.overflow,qg=b);b=qj(b,d.children);b.flags|=4096;return b}function vj(a,b,c){a.lanes|=b;var d=a.alternate;null!==d&&(d.lanes|=b);bh(a.return,b,c)}\nfunction wj(a,b,c,d,e){var f=a.memoizedState;null===f?a.memoizedState={isBackwards:b,rendering:null,renderingStartTime:0,last:d,tail:c,tailMode:e}:(f.isBackwards=b,f.rendering=null,f.renderingStartTime=0,f.last=d,f.tail=c,f.tailMode=e)}\nfunction xj(a,b,c){var d=b.pendingProps,e=d.revealOrder,f=d.tail;Xi(a,b,d.children,c);d=L.current;if(0!==(d&2))d=d&1|2,b.flags|=128;else{if(null!==a&&0!==(a.flags&128))a:for(a=b.child;null!==a;){if(13===a.tag)null!==a.memoizedState&&vj(a,c,b);else if(19===a.tag)vj(a,c,b);else if(null!==a.child){a.child.return=a;a=a.child;continue}if(a===b)break a;for(;null===a.sibling;){if(null===a.return||a.return===b)break a;a=a.return}a.sibling.return=a.return;a=a.sibling}d&=1}G(L,d);if(0===(b.mode&1))b.memoizedState=\nnull;else switch(e){case \"forwards\":c=b.child;for(e=null;null!==c;)a=c.alternate,null!==a&&null===Ch(a)&&(e=c),c=c.sibling;c=e;null===c?(e=b.child,b.child=null):(e=c.sibling,c.sibling=null);wj(b,!1,e,c,f);break;case \"backwards\":c=null;e=b.child;for(b.child=null;null!==e;){a=e.alternate;if(null!==a&&null===Ch(a)){b.child=e;break}a=e.sibling;e.sibling=c;c=e;e=a}wj(b,!0,c,null,f);break;case \"together\":wj(b,!1,null,null,void 0);break;default:b.memoizedState=null}return b.child}\nfunction ij(a,b){0===(b.mode&1)&&null!==a&&(a.alternate=null,b.alternate=null,b.flags|=2)}function Zi(a,b,c){null!==a&&(b.dependencies=a.dependencies);rh|=b.lanes;if(0===(c&b.childLanes))return null;if(null!==a&&b.child!==a.child)throw Error(p(153));if(null!==b.child){a=b.child;c=Pg(a,a.pendingProps);b.child=c;for(c.return=b;null!==a.sibling;)a=a.sibling,c=c.sibling=Pg(a,a.pendingProps),c.return=b;c.sibling=null}return b.child}\nfunction yj(a,b,c){switch(b.tag){case 3:kj(b);Ig();break;case 5:Ah(b);break;case 1:Zf(b.type)&&cg(b);break;case 4:yh(b,b.stateNode.containerInfo);break;case 10:var d=b.type._context,e=b.memoizedProps.value;G(Wg,d._currentValue);d._currentValue=e;break;case 13:d=b.memoizedState;if(null!==d){if(null!==d.dehydrated)return G(L,L.current&1),b.flags|=128,null;if(0!==(c&b.child.childLanes))return oj(a,b,c);G(L,L.current&1);a=Zi(a,b,c);return null!==a?a.sibling:null}G(L,L.current&1);break;case 19:d=0!==(c&\nb.childLanes);if(0!==(a.flags&128)){if(d)return xj(a,b,c);b.flags|=128}e=b.memoizedState;null!==e&&(e.rendering=null,e.tail=null,e.lastEffect=null);G(L,L.current);if(d)break;else return null;case 22:case 23:return b.lanes=0,dj(a,b,c)}return Zi(a,b,c)}var zj,Aj,Bj,Cj;\nzj=function(a,b){for(var c=b.child;null!==c;){if(5===c.tag||6===c.tag)a.appendChild(c.stateNode);else if(4!==c.tag&&null!==c.child){c.child.return=c;c=c.child;continue}if(c===b)break;for(;null===c.sibling;){if(null===c.return||c.return===b)return;c=c.return}c.sibling.return=c.return;c=c.sibling}};Aj=function(){};\nBj=function(a,b,c,d){var e=a.memoizedProps;if(e!==d){a=b.stateNode;xh(uh.current);var f=null;switch(c){case \"input\":e=Ya(a,e);d=Ya(a,d);f=[];break;case \"select\":e=A({},e,{value:void 0});d=A({},d,{value:void 0});f=[];break;case \"textarea\":e=gb(a,e);d=gb(a,d);f=[];break;default:\"function\"!==typeof e.onClick&&\"function\"===typeof d.onClick&&(a.onclick=Bf)}ub(c,d);var g;c=null;for(l in e)if(!d.hasOwnProperty(l)&&e.hasOwnProperty(l)&&null!=e[l])if(\"style\"===l){var h=e[l];for(g in h)h.hasOwnProperty(g)&&\n(c||(c={}),c[g]=\"\")}else\"dangerouslySetInnerHTML\"!==l&&\"children\"!==l&&\"suppressContentEditableWarning\"!==l&&\"suppressHydrationWarning\"!==l&&\"autoFocus\"!==l&&(ea.hasOwnProperty(l)?f||(f=[]):(f=f||[]).push(l,null));for(l in d){var k=d[l];h=null!=e?e[l]:void 0;if(d.hasOwnProperty(l)&&k!==h&&(null!=k||null!=h))if(\"style\"===l)if(h){for(g in h)!h.hasOwnProperty(g)||k&&k.hasOwnProperty(g)||(c||(c={}),c[g]=\"\");for(g in k)k.hasOwnProperty(g)&&h[g]!==k[g]&&(c||(c={}),c[g]=k[g])}else c||(f||(f=[]),f.push(l,\nc)),c=k;else\"dangerouslySetInnerHTML\"===l?(k=k?k.__html:void 0,h=h?h.__html:void 0,null!=k&&h!==k&&(f=f||[]).push(l,k)):\"children\"===l?\"string\"!==typeof k&&\"number\"!==typeof k||(f=f||[]).push(l,\"\"+k):\"suppressContentEditableWarning\"!==l&&\"suppressHydrationWarning\"!==l&&(ea.hasOwnProperty(l)?(null!=k&&\"onScroll\"===l&&D(\"scroll\",a),f||h===k||(f=[])):(f=f||[]).push(l,k))}c&&(f=f||[]).push(\"style\",c);var l=f;if(b.updateQueue=l)b.flags|=4}};Cj=function(a,b,c,d){c!==d&&(b.flags|=4)};\nfunction Dj(a,b){if(!I)switch(a.tailMode){case \"hidden\":b=a.tail;for(var c=null;null!==b;)null!==b.alternate&&(c=b),b=b.sibling;null===c?a.tail=null:c.sibling=null;break;case \"collapsed\":c=a.tail;for(var d=null;null!==c;)null!==c.alternate&&(d=c),c=c.sibling;null===d?b||null===a.tail?a.tail=null:a.tail.sibling=null:d.sibling=null}}\nfunction S(a){var b=null!==a.alternate&&a.alternate.child===a.child,c=0,d=0;if(b)for(var e=a.child;null!==e;)c|=e.lanes|e.childLanes,d|=e.subtreeFlags&14680064,d|=e.flags&14680064,e.return=a,e=e.sibling;else for(e=a.child;null!==e;)c|=e.lanes|e.childLanes,d|=e.subtreeFlags,d|=e.flags,e.return=a,e=e.sibling;a.subtreeFlags|=d;a.childLanes=c;return b}\nfunction Ej(a,b,c){var d=b.pendingProps;wg(b);switch(b.tag){case 2:case 16:case 15:case 0:case 11:case 7:case 8:case 12:case 9:case 14:return S(b),null;case 1:return Zf(b.type)&&$f(),S(b),null;case 3:d=b.stateNode;zh();E(Wf);E(H);Eh();d.pendingContext&&(d.context=d.pendingContext,d.pendingContext=null);if(null===a||null===a.child)Gg(b)?b.flags|=4:null===a||a.memoizedState.isDehydrated&&0===(b.flags&256)||(b.flags|=1024,null!==zg&&(Fj(zg),zg=null));Aj(a,b);S(b);return null;case 5:Bh(b);var e=xh(wh.current);\nc=b.type;if(null!==a&&null!=b.stateNode)Bj(a,b,c,d,e),a.ref!==b.ref&&(b.flags|=512,b.flags|=2097152);else{if(!d){if(null===b.stateNode)throw Error(p(166));S(b);return null}a=xh(uh.current);if(Gg(b)){d=b.stateNode;c=b.type;var f=b.memoizedProps;d[Of]=b;d[Pf]=f;a=0!==(b.mode&1);switch(c){case \"dialog\":D(\"cancel\",d);D(\"close\",d);break;case \"iframe\":case \"object\":case \"embed\":D(\"load\",d);break;case \"video\":case \"audio\":for(e=0;e<lf.length;e++)D(lf[e],d);break;case \"source\":D(\"error\",d);break;case \"img\":case \"image\":case \"link\":D(\"error\",\nd);D(\"load\",d);break;case \"details\":D(\"toggle\",d);break;case \"input\":Za(d,f);D(\"invalid\",d);break;case \"select\":d._wrapperState={wasMultiple:!!f.multiple};D(\"invalid\",d);break;case \"textarea\":hb(d,f),D(\"invalid\",d)}ub(c,f);e=null;for(var g in f)if(f.hasOwnProperty(g)){var h=f[g];\"children\"===g?\"string\"===typeof h?d.textContent!==h&&(!0!==f.suppressHydrationWarning&&Af(d.textContent,h,a),e=[\"children\",h]):\"number\"===typeof h&&d.textContent!==\"\"+h&&(!0!==f.suppressHydrationWarning&&Af(d.textContent,\nh,a),e=[\"children\",\"\"+h]):ea.hasOwnProperty(g)&&null!=h&&\"onScroll\"===g&&D(\"scroll\",d)}switch(c){case \"input\":Va(d);db(d,f,!0);break;case \"textarea\":Va(d);jb(d);break;case \"select\":case \"option\":break;default:\"function\"===typeof f.onClick&&(d.onclick=Bf)}d=e;b.updateQueue=d;null!==d&&(b.flags|=4)}else{g=9===e.nodeType?e:e.ownerDocument;\"http://www.w3.org/1999/xhtml\"===a&&(a=kb(c));\"http://www.w3.org/1999/xhtml\"===a?\"script\"===c?(a=g.createElement(\"div\"),a.innerHTML=\"<script>\\x3c/script>\",a=a.removeChild(a.firstChild)):\n\"string\"===typeof d.is?a=g.createElement(c,{is:d.is}):(a=g.createElement(c),\"select\"===c&&(g=a,d.multiple?g.multiple=!0:d.size&&(g.size=d.size))):a=g.createElementNS(a,c);a[Of]=b;a[Pf]=d;zj(a,b,!1,!1);b.stateNode=a;a:{g=vb(c,d);switch(c){case \"dialog\":D(\"cancel\",a);D(\"close\",a);e=d;break;case \"iframe\":case \"object\":case \"embed\":D(\"load\",a);e=d;break;case \"video\":case \"audio\":for(e=0;e<lf.length;e++)D(lf[e],a);e=d;break;case \"source\":D(\"error\",a);e=d;break;case \"img\":case \"image\":case \"link\":D(\"error\",\na);D(\"load\",a);e=d;break;case \"details\":D(\"toggle\",a);e=d;break;case \"input\":Za(a,d);e=Ya(a,d);D(\"invalid\",a);break;case \"option\":e=d;break;case \"select\":a._wrapperState={wasMultiple:!!d.multiple};e=A({},d,{value:void 0});D(\"invalid\",a);break;case \"textarea\":hb(a,d);e=gb(a,d);D(\"invalid\",a);break;default:e=d}ub(c,e);h=e;for(f in h)if(h.hasOwnProperty(f)){var k=h[f];\"style\"===f?sb(a,k):\"dangerouslySetInnerHTML\"===f?(k=k?k.__html:void 0,null!=k&&nb(a,k)):\"children\"===f?\"string\"===typeof k?(\"textarea\"!==\nc||\"\"!==k)&&ob(a,k):\"number\"===typeof k&&ob(a,\"\"+k):\"suppressContentEditableWarning\"!==f&&\"suppressHydrationWarning\"!==f&&\"autoFocus\"!==f&&(ea.hasOwnProperty(f)?null!=k&&\"onScroll\"===f&&D(\"scroll\",a):null!=k&&ta(a,f,k,g))}switch(c){case \"input\":Va(a);db(a,d,!1);break;case \"textarea\":Va(a);jb(a);break;case \"option\":null!=d.value&&a.setAttribute(\"value\",\"\"+Sa(d.value));break;case \"select\":a.multiple=!!d.multiple;f=d.value;null!=f?fb(a,!!d.multiple,f,!1):null!=d.defaultValue&&fb(a,!!d.multiple,d.defaultValue,\n!0);break;default:\"function\"===typeof e.onClick&&(a.onclick=Bf)}switch(c){case \"button\":case \"input\":case \"select\":case \"textarea\":d=!!d.autoFocus;break a;case \"img\":d=!0;break a;default:d=!1}}d&&(b.flags|=4)}null!==b.ref&&(b.flags|=512,b.flags|=2097152)}S(b);return null;case 6:if(a&&null!=b.stateNode)Cj(a,b,a.memoizedProps,d);else{if(\"string\"!==typeof d&&null===b.stateNode)throw Error(p(166));c=xh(wh.current);xh(uh.current);if(Gg(b)){d=b.stateNode;c=b.memoizedProps;d[Of]=b;if(f=d.nodeValue!==c)if(a=\nxg,null!==a)switch(a.tag){case 3:Af(d.nodeValue,c,0!==(a.mode&1));break;case 5:!0!==a.memoizedProps.suppressHydrationWarning&&Af(d.nodeValue,c,0!==(a.mode&1))}f&&(b.flags|=4)}else d=(9===c.nodeType?c:c.ownerDocument).createTextNode(d),d[Of]=b,b.stateNode=d}S(b);return null;case 13:E(L);d=b.memoizedState;if(null===a||null!==a.memoizedState&&null!==a.memoizedState.dehydrated){if(I&&null!==yg&&0!==(b.mode&1)&&0===(b.flags&128))Hg(),Ig(),b.flags|=98560,f=!1;else if(f=Gg(b),null!==d&&null!==d.dehydrated){if(null===\na){if(!f)throw Error(p(318));f=b.memoizedState;f=null!==f?f.dehydrated:null;if(!f)throw Error(p(317));f[Of]=b}else Ig(),0===(b.flags&128)&&(b.memoizedState=null),b.flags|=4;S(b);f=!1}else null!==zg&&(Fj(zg),zg=null),f=!0;if(!f)return b.flags&65536?b:null}if(0!==(b.flags&128))return b.lanes=c,b;d=null!==d;d!==(null!==a&&null!==a.memoizedState)&&d&&(b.child.flags|=8192,0!==(b.mode&1)&&(null===a||0!==(L.current&1)?0===T&&(T=3):tj()));null!==b.updateQueue&&(b.flags|=4);S(b);return null;case 4:return zh(),\nAj(a,b),null===a&&sf(b.stateNode.containerInfo),S(b),null;case 10:return ah(b.type._context),S(b),null;case 17:return Zf(b.type)&&$f(),S(b),null;case 19:E(L);f=b.memoizedState;if(null===f)return S(b),null;d=0!==(b.flags&128);g=f.rendering;if(null===g)if(d)Dj(f,!1);else{if(0!==T||null!==a&&0!==(a.flags&128))for(a=b.child;null!==a;){g=Ch(a);if(null!==g){b.flags|=128;Dj(f,!1);d=g.updateQueue;null!==d&&(b.updateQueue=d,b.flags|=4);b.subtreeFlags=0;d=c;for(c=b.child;null!==c;)f=c,a=d,f.flags&=14680066,\ng=f.alternate,null===g?(f.childLanes=0,f.lanes=a,f.child=null,f.subtreeFlags=0,f.memoizedProps=null,f.memoizedState=null,f.updateQueue=null,f.dependencies=null,f.stateNode=null):(f.childLanes=g.childLanes,f.lanes=g.lanes,f.child=g.child,f.subtreeFlags=0,f.deletions=null,f.memoizedProps=g.memoizedProps,f.memoizedState=g.memoizedState,f.updateQueue=g.updateQueue,f.type=g.type,a=g.dependencies,f.dependencies=null===a?null:{lanes:a.lanes,firstContext:a.firstContext}),c=c.sibling;G(L,L.current&1|2);return b.child}a=\na.sibling}null!==f.tail&&B()>Gj&&(b.flags|=128,d=!0,Dj(f,!1),b.lanes=4194304)}else{if(!d)if(a=Ch(g),null!==a){if(b.flags|=128,d=!0,c=a.updateQueue,null!==c&&(b.updateQueue=c,b.flags|=4),Dj(f,!0),null===f.tail&&\"hidden\"===f.tailMode&&!g.alternate&&!I)return S(b),null}else 2*B()-f.renderingStartTime>Gj&&1073741824!==c&&(b.flags|=128,d=!0,Dj(f,!1),b.lanes=4194304);f.isBackwards?(g.sibling=b.child,b.child=g):(c=f.last,null!==c?c.sibling=g:b.child=g,f.last=g)}if(null!==f.tail)return b=f.tail,f.rendering=\nb,f.tail=b.sibling,f.renderingStartTime=B(),b.sibling=null,c=L.current,G(L,d?c&1|2:c&1),b;S(b);return null;case 22:case 23:return Hj(),d=null!==b.memoizedState,null!==a&&null!==a.memoizedState!==d&&(b.flags|=8192),d&&0!==(b.mode&1)?0!==(fj&1073741824)&&(S(b),b.subtreeFlags&6&&(b.flags|=8192)):S(b),null;case 24:return null;case 25:return null}throw Error(p(156,b.tag));}\nfunction Ij(a,b){wg(b);switch(b.tag){case 1:return Zf(b.type)&&$f(),a=b.flags,a&65536?(b.flags=a&-65537|128,b):null;case 3:return zh(),E(Wf),E(H),Eh(),a=b.flags,0!==(a&65536)&&0===(a&128)?(b.flags=a&-65537|128,b):null;case 5:return Bh(b),null;case 13:E(L);a=b.memoizedState;if(null!==a&&null!==a.dehydrated){if(null===b.alternate)throw Error(p(340));Ig()}a=b.flags;return a&65536?(b.flags=a&-65537|128,b):null;case 19:return E(L),null;case 4:return zh(),null;case 10:return ah(b.type._context),null;case 22:case 23:return Hj(),\nnull;case 24:return null;default:return null}}var Jj=!1,U=!1,Kj=\"function\"===typeof WeakSet?WeakSet:Set,V=null;function Lj(a,b){var c=a.ref;if(null!==c)if(\"function\"===typeof c)try{c(null)}catch(d){W(a,b,d)}else c.current=null}function Mj(a,b,c){try{c()}catch(d){W(a,b,d)}}var Nj=!1;\nfunction Oj(a,b){Cf=dd;a=Me();if(Ne(a)){if(\"selectionStart\"in a)var c={start:a.selectionStart,end:a.selectionEnd};else a:{c=(c=a.ownerDocument)&&c.defaultView||window;var d=c.getSelection&&c.getSelection();if(d&&0!==d.rangeCount){c=d.anchorNode;var e=d.anchorOffset,f=d.focusNode;d=d.focusOffset;try{c.nodeType,f.nodeType}catch(F){c=null;break a}var g=0,h=-1,k=-1,l=0,m=0,q=a,r=null;b:for(;;){for(var y;;){q!==c||0!==e&&3!==q.nodeType||(h=g+e);q!==f||0!==d&&3!==q.nodeType||(k=g+d);3===q.nodeType&&(g+=\nq.nodeValue.length);if(null===(y=q.firstChild))break;r=q;q=y}for(;;){if(q===a)break b;r===c&&++l===e&&(h=g);r===f&&++m===d&&(k=g);if(null!==(y=q.nextSibling))break;q=r;r=q.parentNode}q=y}c=-1===h||-1===k?null:{start:h,end:k}}else c=null}c=c||{start:0,end:0}}else c=null;Df={focusedElem:a,selectionRange:c};dd=!1;for(V=b;null!==V;)if(b=V,a=b.child,0!==(b.subtreeFlags&1028)&&null!==a)a.return=b,V=a;else for(;null!==V;){b=V;try{var n=b.alternate;if(0!==(b.flags&1024))switch(b.tag){case 0:case 11:case 15:break;\ncase 1:if(null!==n){var t=n.memoizedProps,J=n.memoizedState,x=b.stateNode,w=x.getSnapshotBeforeUpdate(b.elementType===b.type?t:Ci(b.type,t),J);x.__reactInternalSnapshotBeforeUpdate=w}break;case 3:var u=b.stateNode.containerInfo;1===u.nodeType?u.textContent=\"\":9===u.nodeType&&u.documentElement&&u.removeChild(u.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(p(163));}}catch(F){W(b,b.return,F)}a=b.sibling;if(null!==a){a.return=b.return;V=a;break}V=b.return}n=Nj;Nj=!1;return n}\nfunction Pj(a,b,c){var d=b.updateQueue;d=null!==d?d.lastEffect:null;if(null!==d){var e=d=d.next;do{if((e.tag&a)===a){var f=e.destroy;e.destroy=void 0;void 0!==f&&Mj(b,c,f)}e=e.next}while(e!==d)}}function Qj(a,b){b=b.updateQueue;b=null!==b?b.lastEffect:null;if(null!==b){var c=b=b.next;do{if((c.tag&a)===a){var d=c.create;c.destroy=d()}c=c.next}while(c!==b)}}function Rj(a){var b=a.ref;if(null!==b){var c=a.stateNode;switch(a.tag){case 5:a=c;break;default:a=c}\"function\"===typeof b?b(a):b.current=a}}\nfunction Sj(a){var b=a.alternate;null!==b&&(a.alternate=null,Sj(b));a.child=null;a.deletions=null;a.sibling=null;5===a.tag&&(b=a.stateNode,null!==b&&(delete b[Of],delete b[Pf],delete b[of],delete b[Qf],delete b[Rf]));a.stateNode=null;a.return=null;a.dependencies=null;a.memoizedProps=null;a.memoizedState=null;a.pendingProps=null;a.stateNode=null;a.updateQueue=null}function Tj(a){return 5===a.tag||3===a.tag||4===a.tag}\nfunction Uj(a){a:for(;;){for(;null===a.sibling;){if(null===a.return||Tj(a.return))return null;a=a.return}a.sibling.return=a.return;for(a=a.sibling;5!==a.tag&&6!==a.tag&&18!==a.tag;){if(a.flags&2)continue a;if(null===a.child||4===a.tag)continue a;else a.child.return=a,a=a.child}if(!(a.flags&2))return a.stateNode}}\nfunction Vj(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,b?8===c.nodeType?c.parentNode.insertBefore(a,b):c.insertBefore(a,b):(8===c.nodeType?(b=c.parentNode,b.insertBefore(a,c)):(b=c,b.appendChild(a)),c=c._reactRootContainer,null!==c&&void 0!==c||null!==b.onclick||(b.onclick=Bf));else if(4!==d&&(a=a.child,null!==a))for(Vj(a,b,c),a=a.sibling;null!==a;)Vj(a,b,c),a=a.sibling}\nfunction Wj(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,b?c.insertBefore(a,b):c.appendChild(a);else if(4!==d&&(a=a.child,null!==a))for(Wj(a,b,c),a=a.sibling;null!==a;)Wj(a,b,c),a=a.sibling}var X=null,Xj=!1;function Yj(a,b,c){for(c=c.child;null!==c;)Zj(a,b,c),c=c.sibling}\nfunction Zj(a,b,c){if(lc&&\"function\"===typeof lc.onCommitFiberUnmount)try{lc.onCommitFiberUnmount(kc,c)}catch(h){}switch(c.tag){case 5:U||Lj(c,b);case 6:var d=X,e=Xj;X=null;Yj(a,b,c);X=d;Xj=e;null!==X&&(Xj?(a=X,c=c.stateNode,8===a.nodeType?a.parentNode.removeChild(c):a.removeChild(c)):X.removeChild(c.stateNode));break;case 18:null!==X&&(Xj?(a=X,c=c.stateNode,8===a.nodeType?Kf(a.parentNode,c):1===a.nodeType&&Kf(a,c),bd(a)):Kf(X,c.stateNode));break;case 4:d=X;e=Xj;X=c.stateNode.containerInfo;Xj=!0;\nYj(a,b,c);X=d;Xj=e;break;case 0:case 11:case 14:case 15:if(!U&&(d=c.updateQueue,null!==d&&(d=d.lastEffect,null!==d))){e=d=d.next;do{var f=e,g=f.destroy;f=f.tag;void 0!==g&&(0!==(f&2)?Mj(c,b,g):0!==(f&4)&&Mj(c,b,g));e=e.next}while(e!==d)}Yj(a,b,c);break;case 1:if(!U&&(Lj(c,b),d=c.stateNode,\"function\"===typeof d.componentWillUnmount))try{d.props=c.memoizedProps,d.state=c.memoizedState,d.componentWillUnmount()}catch(h){W(c,b,h)}Yj(a,b,c);break;case 21:Yj(a,b,c);break;case 22:c.mode&1?(U=(d=U)||null!==\nc.memoizedState,Yj(a,b,c),U=d):Yj(a,b,c);break;default:Yj(a,b,c)}}function ak(a){var b=a.updateQueue;if(null!==b){a.updateQueue=null;var c=a.stateNode;null===c&&(c=a.stateNode=new Kj);b.forEach(function(b){var d=bk.bind(null,a,b);c.has(b)||(c.add(b),b.then(d,d))})}}\nfunction ck(a,b){var c=b.deletions;if(null!==c)for(var d=0;d<c.length;d++){var e=c[d];try{var f=a,g=b,h=g;a:for(;null!==h;){switch(h.tag){case 5:X=h.stateNode;Xj=!1;break a;case 3:X=h.stateNode.containerInfo;Xj=!0;break a;case 4:X=h.stateNode.containerInfo;Xj=!0;break a}h=h.return}if(null===X)throw Error(p(160));Zj(f,g,e);X=null;Xj=!1;var k=e.alternate;null!==k&&(k.return=null);e.return=null}catch(l){W(e,b,l)}}if(b.subtreeFlags&12854)for(b=b.child;null!==b;)dk(b,a),b=b.sibling}\nfunction dk(a,b){var c=a.alternate,d=a.flags;switch(a.tag){case 0:case 11:case 14:case 15:ck(b,a);ek(a);if(d&4){try{Pj(3,a,a.return),Qj(3,a)}catch(t){W(a,a.return,t)}try{Pj(5,a,a.return)}catch(t){W(a,a.return,t)}}break;case 1:ck(b,a);ek(a);d&512&&null!==c&&Lj(c,c.return);break;case 5:ck(b,a);ek(a);d&512&&null!==c&&Lj(c,c.return);if(a.flags&32){var e=a.stateNode;try{ob(e,\"\")}catch(t){W(a,a.return,t)}}if(d&4&&(e=a.stateNode,null!=e)){var f=a.memoizedProps,g=null!==c?c.memoizedProps:f,h=a.type,k=a.updateQueue;\na.updateQueue=null;if(null!==k)try{\"input\"===h&&\"radio\"===f.type&&null!=f.name&&ab(e,f);vb(h,g);var l=vb(h,f);for(g=0;g<k.length;g+=2){var m=k[g],q=k[g+1];\"style\"===m?sb(e,q):\"dangerouslySetInnerHTML\"===m?nb(e,q):\"children\"===m?ob(e,q):ta(e,m,q,l)}switch(h){case \"input\":bb(e,f);break;case \"textarea\":ib(e,f);break;case \"select\":var r=e._wrapperState.wasMultiple;e._wrapperState.wasMultiple=!!f.multiple;var y=f.value;null!=y?fb(e,!!f.multiple,y,!1):r!==!!f.multiple&&(null!=f.defaultValue?fb(e,!!f.multiple,\nf.defaultValue,!0):fb(e,!!f.multiple,f.multiple?[]:\"\",!1))}e[Pf]=f}catch(t){W(a,a.return,t)}}break;case 6:ck(b,a);ek(a);if(d&4){if(null===a.stateNode)throw Error(p(162));e=a.stateNode;f=a.memoizedProps;try{e.nodeValue=f}catch(t){W(a,a.return,t)}}break;case 3:ck(b,a);ek(a);if(d&4&&null!==c&&c.memoizedState.isDehydrated)try{bd(b.containerInfo)}catch(t){W(a,a.return,t)}break;case 4:ck(b,a);ek(a);break;case 13:ck(b,a);ek(a);e=a.child;e.flags&8192&&(f=null!==e.memoizedState,e.stateNode.isHidden=f,!f||\nnull!==e.alternate&&null!==e.alternate.memoizedState||(fk=B()));d&4&&ak(a);break;case 22:m=null!==c&&null!==c.memoizedState;a.mode&1?(U=(l=U)||m,ck(b,a),U=l):ck(b,a);ek(a);if(d&8192){l=null!==a.memoizedState;if((a.stateNode.isHidden=l)&&!m&&0!==(a.mode&1))for(V=a,m=a.child;null!==m;){for(q=V=m;null!==V;){r=V;y=r.child;switch(r.tag){case 0:case 11:case 14:case 15:Pj(4,r,r.return);break;case 1:Lj(r,r.return);var n=r.stateNode;if(\"function\"===typeof n.componentWillUnmount){d=r;c=r.return;try{b=d,n.props=\nb.memoizedProps,n.state=b.memoizedState,n.componentWillUnmount()}catch(t){W(d,c,t)}}break;case 5:Lj(r,r.return);break;case 22:if(null!==r.memoizedState){gk(q);continue}}null!==y?(y.return=r,V=y):gk(q)}m=m.sibling}a:for(m=null,q=a;;){if(5===q.tag){if(null===m){m=q;try{e=q.stateNode,l?(f=e.style,\"function\"===typeof f.setProperty?f.setProperty(\"display\",\"none\",\"important\"):f.display=\"none\"):(h=q.stateNode,k=q.memoizedProps.style,g=void 0!==k&&null!==k&&k.hasOwnProperty(\"display\")?k.display:null,h.style.display=\nrb(\"display\",g))}catch(t){W(a,a.return,t)}}}else if(6===q.tag){if(null===m)try{q.stateNode.nodeValue=l?\"\":q.memoizedProps}catch(t){W(a,a.return,t)}}else if((22!==q.tag&&23!==q.tag||null===q.memoizedState||q===a)&&null!==q.child){q.child.return=q;q=q.child;continue}if(q===a)break a;for(;null===q.sibling;){if(null===q.return||q.return===a)break a;m===q&&(m=null);q=q.return}m===q&&(m=null);q.sibling.return=q.return;q=q.sibling}}break;case 19:ck(b,a);ek(a);d&4&&ak(a);break;case 21:break;default:ck(b,\na),ek(a)}}function ek(a){var b=a.flags;if(b&2){try{a:{for(var c=a.return;null!==c;){if(Tj(c)){var d=c;break a}c=c.return}throw Error(p(160));}switch(d.tag){case 5:var e=d.stateNode;d.flags&32&&(ob(e,\"\"),d.flags&=-33);var f=Uj(a);Wj(a,f,e);break;case 3:case 4:var g=d.stateNode.containerInfo,h=Uj(a);Vj(a,h,g);break;default:throw Error(p(161));}}catch(k){W(a,a.return,k)}a.flags&=-3}b&4096&&(a.flags&=-4097)}function hk(a,b,c){V=a;ik(a,b,c)}\nfunction ik(a,b,c){for(var d=0!==(a.mode&1);null!==V;){var e=V,f=e.child;if(22===e.tag&&d){var g=null!==e.memoizedState||Jj;if(!g){var h=e.alternate,k=null!==h&&null!==h.memoizedState||U;h=Jj;var l=U;Jj=g;if((U=k)&&!l)for(V=e;null!==V;)g=V,k=g.child,22===g.tag&&null!==g.memoizedState?jk(e):null!==k?(k.return=g,V=k):jk(e);for(;null!==f;)V=f,ik(f,b,c),f=f.sibling;V=e;Jj=h;U=l}kk(a,b,c)}else 0!==(e.subtreeFlags&8772)&&null!==f?(f.return=e,V=f):kk(a,b,c)}}\nfunction kk(a){for(;null!==V;){var b=V;if(0!==(b.flags&8772)){var c=b.alternate;try{if(0!==(b.flags&8772))switch(b.tag){case 0:case 11:case 15:U||Qj(5,b);break;case 1:var d=b.stateNode;if(b.flags&4&&!U)if(null===c)d.componentDidMount();else{var e=b.elementType===b.type?c.memoizedProps:Ci(b.type,c.memoizedProps);d.componentDidUpdate(e,c.memoizedState,d.__reactInternalSnapshotBeforeUpdate)}var f=b.updateQueue;null!==f&&sh(b,f,d);break;case 3:var g=b.updateQueue;if(null!==g){c=null;if(null!==b.child)switch(b.child.tag){case 5:c=\nb.child.stateNode;break;case 1:c=b.child.stateNode}sh(b,g,c)}break;case 5:var h=b.stateNode;if(null===c&&b.flags&4){c=h;var k=b.memoizedProps;switch(b.type){case \"button\":case \"input\":case \"select\":case \"textarea\":k.autoFocus&&c.focus();break;case \"img\":k.src&&(c.src=k.src)}}break;case 6:break;case 4:break;case 12:break;case 13:if(null===b.memoizedState){var l=b.alternate;if(null!==l){var m=l.memoizedState;if(null!==m){var q=m.dehydrated;null!==q&&bd(q)}}}break;case 19:case 17:case 21:case 22:case 23:case 25:break;\ndefault:throw Error(p(163));}U||b.flags&512&&Rj(b)}catch(r){W(b,b.return,r)}}if(b===a){V=null;break}c=b.sibling;if(null!==c){c.return=b.return;V=c;break}V=b.return}}function gk(a){for(;null!==V;){var b=V;if(b===a){V=null;break}var c=b.sibling;if(null!==c){c.return=b.return;V=c;break}V=b.return}}\nfunction jk(a){for(;null!==V;){var b=V;try{switch(b.tag){case 0:case 11:case 15:var c=b.return;try{Qj(4,b)}catch(k){W(b,c,k)}break;case 1:var d=b.stateNode;if(\"function\"===typeof d.componentDidMount){var e=b.return;try{d.componentDidMount()}catch(k){W(b,e,k)}}var f=b.return;try{Rj(b)}catch(k){W(b,f,k)}break;case 5:var g=b.return;try{Rj(b)}catch(k){W(b,g,k)}}}catch(k){W(b,b.return,k)}if(b===a){V=null;break}var h=b.sibling;if(null!==h){h.return=b.return;V=h;break}V=b.return}}\nvar lk=Math.ceil,mk=ua.ReactCurrentDispatcher,nk=ua.ReactCurrentOwner,ok=ua.ReactCurrentBatchConfig,K=0,Q=null,Y=null,Z=0,fj=0,ej=Uf(0),T=0,pk=null,rh=0,qk=0,rk=0,sk=null,tk=null,fk=0,Gj=Infinity,uk=null,Oi=!1,Pi=null,Ri=null,vk=!1,wk=null,xk=0,yk=0,zk=null,Ak=-1,Bk=0;function R(){return 0!==(K&6)?B():-1!==Ak?Ak:Ak=B()}\nfunction yi(a){if(0===(a.mode&1))return 1;if(0!==(K&2)&&0!==Z)return Z&-Z;if(null!==Kg.transition)return 0===Bk&&(Bk=yc()),Bk;a=C;if(0!==a)return a;a=window.event;a=void 0===a?16:jd(a.type);return a}function gi(a,b,c,d){if(50<yk)throw yk=0,zk=null,Error(p(185));Ac(a,c,d);if(0===(K&2)||a!==Q)a===Q&&(0===(K&2)&&(qk|=c),4===T&&Ck(a,Z)),Dk(a,d),1===c&&0===K&&0===(b.mode&1)&&(Gj=B()+500,fg&&jg())}\nfunction Dk(a,b){var c=a.callbackNode;wc(a,b);var d=uc(a,a===Q?Z:0);if(0===d)null!==c&&bc(c),a.callbackNode=null,a.callbackPriority=0;else if(b=d&-d,a.callbackPriority!==b){null!=c&&bc(c);if(1===b)0===a.tag?ig(Ek.bind(null,a)):hg(Ek.bind(null,a)),Jf(function(){0===(K&6)&&jg()}),c=null;else{switch(Dc(d)){case 1:c=fc;break;case 4:c=gc;break;case 16:c=hc;break;case 536870912:c=jc;break;default:c=hc}c=Fk(c,Gk.bind(null,a))}a.callbackPriority=b;a.callbackNode=c}}\nfunction Gk(a,b){Ak=-1;Bk=0;if(0!==(K&6))throw Error(p(327));var c=a.callbackNode;if(Hk()&&a.callbackNode!==c)return null;var d=uc(a,a===Q?Z:0);if(0===d)return null;if(0!==(d&30)||0!==(d&a.expiredLanes)||b)b=Ik(a,d);else{b=d;var e=K;K|=2;var f=Jk();if(Q!==a||Z!==b)uk=null,Gj=B()+500,Kk(a,b);do try{Lk();break}catch(h){Mk(a,h)}while(1);$g();mk.current=f;K=e;null!==Y?b=0:(Q=null,Z=0,b=T)}if(0!==b){2===b&&(e=xc(a),0!==e&&(d=e,b=Nk(a,e)));if(1===b)throw c=pk,Kk(a,0),Ck(a,d),Dk(a,B()),c;if(6===b)Ck(a,d);\nelse{e=a.current.alternate;if(0===(d&30)&&!Ok(e)&&(b=Ik(a,d),2===b&&(f=xc(a),0!==f&&(d=f,b=Nk(a,f))),1===b))throw c=pk,Kk(a,0),Ck(a,d),Dk(a,B()),c;a.finishedWork=e;a.finishedLanes=d;switch(b){case 0:case 1:throw Error(p(345));case 2:Pk(a,tk,uk);break;case 3:Ck(a,d);if((d&130023424)===d&&(b=fk+500-B(),10<b)){if(0!==uc(a,0))break;e=a.suspendedLanes;if((e&d)!==d){R();a.pingedLanes|=a.suspendedLanes&e;break}a.timeoutHandle=Ff(Pk.bind(null,a,tk,uk),b);break}Pk(a,tk,uk);break;case 4:Ck(a,d);if((d&4194240)===\nd)break;b=a.eventTimes;for(e=-1;0<d;){var g=31-oc(d);f=1<<g;g=b[g];g>e&&(e=g);d&=~f}d=e;d=B()-d;d=(120>d?120:480>d?480:1080>d?1080:1920>d?1920:3E3>d?3E3:4320>d?4320:1960*lk(d/1960))-d;if(10<d){a.timeoutHandle=Ff(Pk.bind(null,a,tk,uk),d);break}Pk(a,tk,uk);break;case 5:Pk(a,tk,uk);break;default:throw Error(p(329));}}}Dk(a,B());return a.callbackNode===c?Gk.bind(null,a):null}\nfunction Nk(a,b){var c=sk;a.current.memoizedState.isDehydrated&&(Kk(a,b).flags|=256);a=Ik(a,b);2!==a&&(b=tk,tk=c,null!==b&&Fj(b));return a}function Fj(a){null===tk?tk=a:tk.push.apply(tk,a)}\nfunction Ok(a){for(var b=a;;){if(b.flags&16384){var c=b.updateQueue;if(null!==c&&(c=c.stores,null!==c))for(var d=0;d<c.length;d++){var e=c[d],f=e.getSnapshot;e=e.value;try{if(!He(f(),e))return!1}catch(g){return!1}}}c=b.child;if(b.subtreeFlags&16384&&null!==c)c.return=b,b=c;else{if(b===a)break;for(;null===b.sibling;){if(null===b.return||b.return===a)return!0;b=b.return}b.sibling.return=b.return;b=b.sibling}}return!0}\nfunction Ck(a,b){b&=~rk;b&=~qk;a.suspendedLanes|=b;a.pingedLanes&=~b;for(a=a.expirationTimes;0<b;){var c=31-oc(b),d=1<<c;a[c]=-1;b&=~d}}function Ek(a){if(0!==(K&6))throw Error(p(327));Hk();var b=uc(a,0);if(0===(b&1))return Dk(a,B()),null;var c=Ik(a,b);if(0!==a.tag&&2===c){var d=xc(a);0!==d&&(b=d,c=Nk(a,d))}if(1===c)throw c=pk,Kk(a,0),Ck(a,b),Dk(a,B()),c;if(6===c)throw Error(p(345));a.finishedWork=a.current.alternate;a.finishedLanes=b;Pk(a,tk,uk);Dk(a,B());return null}\nfunction Qk(a,b){var c=K;K|=1;try{return a(b)}finally{K=c,0===K&&(Gj=B()+500,fg&&jg())}}function Rk(a){null!==wk&&0===wk.tag&&0===(K&6)&&Hk();var b=K;K|=1;var c=ok.transition,d=C;try{if(ok.transition=null,C=1,a)return a()}finally{C=d,ok.transition=c,K=b,0===(K&6)&&jg()}}function Hj(){fj=ej.current;E(ej)}\nfunction Kk(a,b){a.finishedWork=null;a.finishedLanes=0;var c=a.timeoutHandle;-1!==c&&(a.timeoutHandle=-1,Gf(c));if(null!==Y)for(c=Y.return;null!==c;){var d=c;wg(d);switch(d.tag){case 1:d=d.type.childContextTypes;null!==d&&void 0!==d&&$f();break;case 3:zh();E(Wf);E(H);Eh();break;case 5:Bh(d);break;case 4:zh();break;case 13:E(L);break;case 19:E(L);break;case 10:ah(d.type._context);break;case 22:case 23:Hj()}c=c.return}Q=a;Y=a=Pg(a.current,null);Z=fj=b;T=0;pk=null;rk=qk=rh=0;tk=sk=null;if(null!==fh){for(b=\n0;b<fh.length;b++)if(c=fh[b],d=c.interleaved,null!==d){c.interleaved=null;var e=d.next,f=c.pending;if(null!==f){var g=f.next;f.next=e;d.next=g}c.pending=d}fh=null}return a}\nfunction Mk(a,b){do{var c=Y;try{$g();Fh.current=Rh;if(Ih){for(var d=M.memoizedState;null!==d;){var e=d.queue;null!==e&&(e.pending=null);d=d.next}Ih=!1}Hh=0;O=N=M=null;Jh=!1;Kh=0;nk.current=null;if(null===c||null===c.return){T=1;pk=b;Y=null;break}a:{var f=a,g=c.return,h=c,k=b;b=Z;h.flags|=32768;if(null!==k&&\"object\"===typeof k&&\"function\"===typeof k.then){var l=k,m=h,q=m.tag;if(0===(m.mode&1)&&(0===q||11===q||15===q)){var r=m.alternate;r?(m.updateQueue=r.updateQueue,m.memoizedState=r.memoizedState,\nm.lanes=r.lanes):(m.updateQueue=null,m.memoizedState=null)}var y=Ui(g);if(null!==y){y.flags&=-257;Vi(y,g,h,f,b);y.mode&1&&Si(f,l,b);b=y;k=l;var n=b.updateQueue;if(null===n){var t=new Set;t.add(k);b.updateQueue=t}else n.add(k);break a}else{if(0===(b&1)){Si(f,l,b);tj();break a}k=Error(p(426))}}else if(I&&h.mode&1){var J=Ui(g);if(null!==J){0===(J.flags&65536)&&(J.flags|=256);Vi(J,g,h,f,b);Jg(Ji(k,h));break a}}f=k=Ji(k,h);4!==T&&(T=2);null===sk?sk=[f]:sk.push(f);f=g;do{switch(f.tag){case 3:f.flags|=65536;\nb&=-b;f.lanes|=b;var x=Ni(f,k,b);ph(f,x);break a;case 1:h=k;var w=f.type,u=f.stateNode;if(0===(f.flags&128)&&(\"function\"===typeof w.getDerivedStateFromError||null!==u&&\"function\"===typeof u.componentDidCatch&&(null===Ri||!Ri.has(u)))){f.flags|=65536;b&=-b;f.lanes|=b;var F=Qi(f,h,b);ph(f,F);break a}}f=f.return}while(null!==f)}Sk(c)}catch(na){b=na;Y===c&&null!==c&&(Y=c=c.return);continue}break}while(1)}function Jk(){var a=mk.current;mk.current=Rh;return null===a?Rh:a}\nfunction tj(){if(0===T||3===T||2===T)T=4;null===Q||0===(rh&268435455)&&0===(qk&268435455)||Ck(Q,Z)}function Ik(a,b){var c=K;K|=2;var d=Jk();if(Q!==a||Z!==b)uk=null,Kk(a,b);do try{Tk();break}catch(e){Mk(a,e)}while(1);$g();K=c;mk.current=d;if(null!==Y)throw Error(p(261));Q=null;Z=0;return T}function Tk(){for(;null!==Y;)Uk(Y)}function Lk(){for(;null!==Y&&!cc();)Uk(Y)}function Uk(a){var b=Vk(a.alternate,a,fj);a.memoizedProps=a.pendingProps;null===b?Sk(a):Y=b;nk.current=null}\nfunction Sk(a){var b=a;do{var c=b.alternate;a=b.return;if(0===(b.flags&32768)){if(c=Ej(c,b,fj),null!==c){Y=c;return}}else{c=Ij(c,b);if(null!==c){c.flags&=32767;Y=c;return}if(null!==a)a.flags|=32768,a.subtreeFlags=0,a.deletions=null;else{T=6;Y=null;return}}b=b.sibling;if(null!==b){Y=b;return}Y=b=a}while(null!==b);0===T&&(T=5)}function Pk(a,b,c){var d=C,e=ok.transition;try{ok.transition=null,C=1,Wk(a,b,c,d)}finally{ok.transition=e,C=d}return null}\nfunction Wk(a,b,c,d){do Hk();while(null!==wk);if(0!==(K&6))throw Error(p(327));c=a.finishedWork;var e=a.finishedLanes;if(null===c)return null;a.finishedWork=null;a.finishedLanes=0;if(c===a.current)throw Error(p(177));a.callbackNode=null;a.callbackPriority=0;var f=c.lanes|c.childLanes;Bc(a,f);a===Q&&(Y=Q=null,Z=0);0===(c.subtreeFlags&2064)&&0===(c.flags&2064)||vk||(vk=!0,Fk(hc,function(){Hk();return null}));f=0!==(c.flags&15990);if(0!==(c.subtreeFlags&15990)||f){f=ok.transition;ok.transition=null;\nvar g=C;C=1;var h=K;K|=4;nk.current=null;Oj(a,c);dk(c,a);Oe(Df);dd=!!Cf;Df=Cf=null;a.current=c;hk(c,a,e);dc();K=h;C=g;ok.transition=f}else a.current=c;vk&&(vk=!1,wk=a,xk=e);f=a.pendingLanes;0===f&&(Ri=null);mc(c.stateNode,d);Dk(a,B());if(null!==b)for(d=a.onRecoverableError,c=0;c<b.length;c++)e=b[c],d(e.value,{componentStack:e.stack,digest:e.digest});if(Oi)throw Oi=!1,a=Pi,Pi=null,a;0!==(xk&1)&&0!==a.tag&&Hk();f=a.pendingLanes;0!==(f&1)?a===zk?yk++:(yk=0,zk=a):yk=0;jg();return null}\nfunction Hk(){if(null!==wk){var a=Dc(xk),b=ok.transition,c=C;try{ok.transition=null;C=16>a?16:a;if(null===wk)var d=!1;else{a=wk;wk=null;xk=0;if(0!==(K&6))throw Error(p(331));var e=K;K|=4;for(V=a.current;null!==V;){var f=V,g=f.child;if(0!==(V.flags&16)){var h=f.deletions;if(null!==h){for(var k=0;k<h.length;k++){var l=h[k];for(V=l;null!==V;){var m=V;switch(m.tag){case 0:case 11:case 15:Pj(8,m,f)}var q=m.child;if(null!==q)q.return=m,V=q;else for(;null!==V;){m=V;var r=m.sibling,y=m.return;Sj(m);if(m===\nl){V=null;break}if(null!==r){r.return=y;V=r;break}V=y}}}var n=f.alternate;if(null!==n){var t=n.child;if(null!==t){n.child=null;do{var J=t.sibling;t.sibling=null;t=J}while(null!==t)}}V=f}}if(0!==(f.subtreeFlags&2064)&&null!==g)g.return=f,V=g;else b:for(;null!==V;){f=V;if(0!==(f.flags&2048))switch(f.tag){case 0:case 11:case 15:Pj(9,f,f.return)}var x=f.sibling;if(null!==x){x.return=f.return;V=x;break b}V=f.return}}var w=a.current;for(V=w;null!==V;){g=V;var u=g.child;if(0!==(g.subtreeFlags&2064)&&null!==\nu)u.return=g,V=u;else b:for(g=w;null!==V;){h=V;if(0!==(h.flags&2048))try{switch(h.tag){case 0:case 11:case 15:Qj(9,h)}}catch(na){W(h,h.return,na)}if(h===g){V=null;break b}var F=h.sibling;if(null!==F){F.return=h.return;V=F;break b}V=h.return}}K=e;jg();if(lc&&\"function\"===typeof lc.onPostCommitFiberRoot)try{lc.onPostCommitFiberRoot(kc,a)}catch(na){}d=!0}return d}finally{C=c,ok.transition=b}}return!1}function Xk(a,b,c){b=Ji(c,b);b=Ni(a,b,1);a=nh(a,b,1);b=R();null!==a&&(Ac(a,1,b),Dk(a,b))}\nfunction W(a,b,c){if(3===a.tag)Xk(a,a,c);else for(;null!==b;){if(3===b.tag){Xk(b,a,c);break}else if(1===b.tag){var d=b.stateNode;if(\"function\"===typeof b.type.getDerivedStateFromError||\"function\"===typeof d.componentDidCatch&&(null===Ri||!Ri.has(d))){a=Ji(c,a);a=Qi(b,a,1);b=nh(b,a,1);a=R();null!==b&&(Ac(b,1,a),Dk(b,a));break}}b=b.return}}\nfunction Ti(a,b,c){var d=a.pingCache;null!==d&&d.delete(b);b=R();a.pingedLanes|=a.suspendedLanes&c;Q===a&&(Z&c)===c&&(4===T||3===T&&(Z&130023424)===Z&&500>B()-fk?Kk(a,0):rk|=c);Dk(a,b)}function Yk(a,b){0===b&&(0===(a.mode&1)?b=1:(b=sc,sc<<=1,0===(sc&130023424)&&(sc=4194304)));var c=R();a=ih(a,b);null!==a&&(Ac(a,b,c),Dk(a,c))}function uj(a){var b=a.memoizedState,c=0;null!==b&&(c=b.retryLane);Yk(a,c)}\nfunction bk(a,b){var c=0;switch(a.tag){case 13:var d=a.stateNode;var e=a.memoizedState;null!==e&&(c=e.retryLane);break;case 19:d=a.stateNode;break;default:throw Error(p(314));}null!==d&&d.delete(b);Yk(a,c)}var Vk;\nVk=function(a,b,c){if(null!==a)if(a.memoizedProps!==b.pendingProps||Wf.current)dh=!0;else{if(0===(a.lanes&c)&&0===(b.flags&128))return dh=!1,yj(a,b,c);dh=0!==(a.flags&131072)?!0:!1}else dh=!1,I&&0!==(b.flags&1048576)&&ug(b,ng,b.index);b.lanes=0;switch(b.tag){case 2:var d=b.type;ij(a,b);a=b.pendingProps;var e=Yf(b,H.current);ch(b,c);e=Nh(null,b,d,a,e,c);var f=Sh();b.flags|=1;\"object\"===typeof e&&null!==e&&\"function\"===typeof e.render&&void 0===e.$$typeof?(b.tag=1,b.memoizedState=null,b.updateQueue=\nnull,Zf(d)?(f=!0,cg(b)):f=!1,b.memoizedState=null!==e.state&&void 0!==e.state?e.state:null,kh(b),e.updater=Ei,b.stateNode=e,e._reactInternals=b,Ii(b,d,a,c),b=jj(null,b,d,!0,f,c)):(b.tag=0,I&&f&&vg(b),Xi(null,b,e,c),b=b.child);return b;case 16:d=b.elementType;a:{ij(a,b);a=b.pendingProps;e=d._init;d=e(d._payload);b.type=d;e=b.tag=Zk(d);a=Ci(d,a);switch(e){case 0:b=cj(null,b,d,a,c);break a;case 1:b=hj(null,b,d,a,c);break a;case 11:b=Yi(null,b,d,a,c);break a;case 14:b=$i(null,b,d,Ci(d.type,a),c);break a}throw Error(p(306,\nd,\"\"));}return b;case 0:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Ci(d,e),cj(a,b,d,e,c);case 1:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Ci(d,e),hj(a,b,d,e,c);case 3:a:{kj(b);if(null===a)throw Error(p(387));d=b.pendingProps;f=b.memoizedState;e=f.element;lh(a,b);qh(b,d,null,c);var g=b.memoizedState;d=g.element;if(f.isDehydrated)if(f={element:d,isDehydrated:!1,cache:g.cache,pendingSuspenseBoundaries:g.pendingSuspenseBoundaries,transitions:g.transitions},b.updateQueue.baseState=\nf,b.memoizedState=f,b.flags&256){e=Ji(Error(p(423)),b);b=lj(a,b,d,c,e);break a}else if(d!==e){e=Ji(Error(p(424)),b);b=lj(a,b,d,c,e);break a}else for(yg=Lf(b.stateNode.containerInfo.firstChild),xg=b,I=!0,zg=null,c=Vg(b,null,d,c),b.child=c;c;)c.flags=c.flags&-3|4096,c=c.sibling;else{Ig();if(d===e){b=Zi(a,b,c);break a}Xi(a,b,d,c)}b=b.child}return b;case 5:return Ah(b),null===a&&Eg(b),d=b.type,e=b.pendingProps,f=null!==a?a.memoizedProps:null,g=e.children,Ef(d,e)?g=null:null!==f&&Ef(d,f)&&(b.flags|=32),\ngj(a,b),Xi(a,b,g,c),b.child;case 6:return null===a&&Eg(b),null;case 13:return oj(a,b,c);case 4:return yh(b,b.stateNode.containerInfo),d=b.pendingProps,null===a?b.child=Ug(b,null,d,c):Xi(a,b,d,c),b.child;case 11:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Ci(d,e),Yi(a,b,d,e,c);case 7:return Xi(a,b,b.pendingProps,c),b.child;case 8:return Xi(a,b,b.pendingProps.children,c),b.child;case 12:return Xi(a,b,b.pendingProps.children,c),b.child;case 10:a:{d=b.type._context;e=b.pendingProps;f=b.memoizedProps;\ng=e.value;G(Wg,d._currentValue);d._currentValue=g;if(null!==f)if(He(f.value,g)){if(f.children===e.children&&!Wf.current){b=Zi(a,b,c);break a}}else for(f=b.child,null!==f&&(f.return=b);null!==f;){var h=f.dependencies;if(null!==h){g=f.child;for(var k=h.firstContext;null!==k;){if(k.context===d){if(1===f.tag){k=mh(-1,c&-c);k.tag=2;var l=f.updateQueue;if(null!==l){l=l.shared;var m=l.pending;null===m?k.next=k:(k.next=m.next,m.next=k);l.pending=k}}f.lanes|=c;k=f.alternate;null!==k&&(k.lanes|=c);bh(f.return,\nc,b);h.lanes|=c;break}k=k.next}}else if(10===f.tag)g=f.type===b.type?null:f.child;else if(18===f.tag){g=f.return;if(null===g)throw Error(p(341));g.lanes|=c;h=g.alternate;null!==h&&(h.lanes|=c);bh(g,c,b);g=f.sibling}else g=f.child;if(null!==g)g.return=f;else for(g=f;null!==g;){if(g===b){g=null;break}f=g.sibling;if(null!==f){f.return=g.return;g=f;break}g=g.return}f=g}Xi(a,b,e.children,c);b=b.child}return b;case 9:return e=b.type,d=b.pendingProps.children,ch(b,c),e=eh(e),d=d(e),b.flags|=1,Xi(a,b,d,c),\nb.child;case 14:return d=b.type,e=Ci(d,b.pendingProps),e=Ci(d.type,e),$i(a,b,d,e,c);case 15:return bj(a,b,b.type,b.pendingProps,c);case 17:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Ci(d,e),ij(a,b),b.tag=1,Zf(d)?(a=!0,cg(b)):a=!1,ch(b,c),Gi(b,d,e),Ii(b,d,e,c),jj(null,b,d,!0,a,c);case 19:return xj(a,b,c);case 22:return dj(a,b,c)}throw Error(p(156,b.tag));};function Fk(a,b){return ac(a,b)}\nfunction $k(a,b,c,d){this.tag=a;this.key=c;this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null;this.index=0;this.ref=null;this.pendingProps=b;this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null;this.mode=d;this.subtreeFlags=this.flags=0;this.deletions=null;this.childLanes=this.lanes=0;this.alternate=null}function Bg(a,b,c,d){return new $k(a,b,c,d)}function aj(a){a=a.prototype;return!(!a||!a.isReactComponent)}\nfunction Zk(a){if(\"function\"===typeof a)return aj(a)?1:0;if(void 0!==a&&null!==a){a=a.$$typeof;if(a===Da)return 11;if(a===Ga)return 14}return 2}\nfunction Pg(a,b){var c=a.alternate;null===c?(c=Bg(a.tag,b,a.key,a.mode),c.elementType=a.elementType,c.type=a.type,c.stateNode=a.stateNode,c.alternate=a,a.alternate=c):(c.pendingProps=b,c.type=a.type,c.flags=0,c.subtreeFlags=0,c.deletions=null);c.flags=a.flags&14680064;c.childLanes=a.childLanes;c.lanes=a.lanes;c.child=a.child;c.memoizedProps=a.memoizedProps;c.memoizedState=a.memoizedState;c.updateQueue=a.updateQueue;b=a.dependencies;c.dependencies=null===b?null:{lanes:b.lanes,firstContext:b.firstContext};\nc.sibling=a.sibling;c.index=a.index;c.ref=a.ref;return c}\nfunction Rg(a,b,c,d,e,f){var g=2;d=a;if(\"function\"===typeof a)aj(a)&&(g=1);else if(\"string\"===typeof a)g=5;else a:switch(a){case ya:return Tg(c.children,e,f,b);case za:g=8;e|=8;break;case Aa:return a=Bg(12,c,b,e|2),a.elementType=Aa,a.lanes=f,a;case Ea:return a=Bg(13,c,b,e),a.elementType=Ea,a.lanes=f,a;case Fa:return a=Bg(19,c,b,e),a.elementType=Fa,a.lanes=f,a;case Ia:return pj(c,e,f,b);default:if(\"object\"===typeof a&&null!==a)switch(a.$$typeof){case Ba:g=10;break a;case Ca:g=9;break a;case Da:g=11;\nbreak a;case Ga:g=14;break a;case Ha:g=16;d=null;break a}throw Error(p(130,null==a?a:typeof a,\"\"));}b=Bg(g,c,b,e);b.elementType=a;b.type=d;b.lanes=f;return b}function Tg(a,b,c,d){a=Bg(7,a,d,b);a.lanes=c;return a}function pj(a,b,c,d){a=Bg(22,a,d,b);a.elementType=Ia;a.lanes=c;a.stateNode={isHidden:!1};return a}function Qg(a,b,c){a=Bg(6,a,null,b);a.lanes=c;return a}\nfunction Sg(a,b,c){b=Bg(4,null!==a.children?a.children:[],a.key,b);b.lanes=c;b.stateNode={containerInfo:a.containerInfo,pendingChildren:null,implementation:a.implementation};return b}\nfunction al(a,b,c,d,e){this.tag=b;this.containerInfo=a;this.finishedWork=this.pingCache=this.current=this.pendingChildren=null;this.timeoutHandle=-1;this.callbackNode=this.pendingContext=this.context=null;this.callbackPriority=0;this.eventTimes=zc(0);this.expirationTimes=zc(-1);this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0;this.entanglements=zc(0);this.identifierPrefix=d;this.onRecoverableError=e;this.mutableSourceEagerHydrationData=\nnull}function bl(a,b,c,d,e,f,g,h,k){a=new al(a,b,c,h,k);1===b?(b=1,!0===f&&(b|=8)):b=0;f=Bg(3,null,null,b);a.current=f;f.stateNode=a;f.memoizedState={element:d,isDehydrated:c,cache:null,transitions:null,pendingSuspenseBoundaries:null};kh(f);return a}function cl(a,b,c){var d=3<arguments.length&&void 0!==arguments[3]?arguments[3]:null;return{$$typeof:wa,key:null==d?null:\"\"+d,children:a,containerInfo:b,implementation:c}}\nfunction dl(a){if(!a)return Vf;a=a._reactInternals;a:{if(Vb(a)!==a||1!==a.tag)throw Error(p(170));var b=a;do{switch(b.tag){case 3:b=b.stateNode.context;break a;case 1:if(Zf(b.type)){b=b.stateNode.__reactInternalMemoizedMergedChildContext;break a}}b=b.return}while(null!==b);throw Error(p(171));}if(1===a.tag){var c=a.type;if(Zf(c))return bg(a,c,b)}return b}\nfunction el(a,b,c,d,e,f,g,h,k){a=bl(c,d,!0,a,e,f,g,h,k);a.context=dl(null);c=a.current;d=R();e=yi(c);f=mh(d,e);f.callback=void 0!==b&&null!==b?b:null;nh(c,f,e);a.current.lanes=e;Ac(a,e,d);Dk(a,d);return a}function fl(a,b,c,d){var e=b.current,f=R(),g=yi(e);c=dl(c);null===b.context?b.context=c:b.pendingContext=c;b=mh(f,g);b.payload={element:a};d=void 0===d?null:d;null!==d&&(b.callback=d);a=nh(e,b,g);null!==a&&(gi(a,e,g,f),oh(a,e,g));return g}\nfunction gl(a){a=a.current;if(!a.child)return null;switch(a.child.tag){case 5:return a.child.stateNode;default:return a.child.stateNode}}function hl(a,b){a=a.memoizedState;if(null!==a&&null!==a.dehydrated){var c=a.retryLane;a.retryLane=0!==c&&c<b?c:b}}function il(a,b){hl(a,b);(a=a.alternate)&&hl(a,b)}function jl(){return null}var kl=\"function\"===typeof reportError?reportError:function(a){console.error(a)};function ll(a){this._internalRoot=a}\nml.prototype.render=ll.prototype.render=function(a){var b=this._internalRoot;if(null===b)throw Error(p(409));fl(a,b,null,null)};ml.prototype.unmount=ll.prototype.unmount=function(){var a=this._internalRoot;if(null!==a){this._internalRoot=null;var b=a.containerInfo;Rk(function(){fl(null,a,null,null)});b[uf]=null}};function ml(a){this._internalRoot=a}\nml.prototype.unstable_scheduleHydration=function(a){if(a){var b=Hc();a={blockedOn:null,target:a,priority:b};for(var c=0;c<Qc.length&&0!==b&&b<Qc[c].priority;c++);Qc.splice(c,0,a);0===c&&Vc(a)}};function nl(a){return!(!a||1!==a.nodeType&&9!==a.nodeType&&11!==a.nodeType)}function ol(a){return!(!a||1!==a.nodeType&&9!==a.nodeType&&11!==a.nodeType&&(8!==a.nodeType||\" react-mount-point-unstable \"!==a.nodeValue))}function pl(){}\nfunction ql(a,b,c,d,e){if(e){if(\"function\"===typeof d){var f=d;d=function(){var a=gl(g);f.call(a)}}var g=el(b,d,a,0,null,!1,!1,\"\",pl);a._reactRootContainer=g;a[uf]=g.current;sf(8===a.nodeType?a.parentNode:a);Rk();return g}for(;e=a.lastChild;)a.removeChild(e);if(\"function\"===typeof d){var h=d;d=function(){var a=gl(k);h.call(a)}}var k=bl(a,0,!1,null,null,!1,!1,\"\",pl);a._reactRootContainer=k;a[uf]=k.current;sf(8===a.nodeType?a.parentNode:a);Rk(function(){fl(b,k,c,d)});return k}\nfunction rl(a,b,c,d,e){var f=c._reactRootContainer;if(f){var g=f;if(\"function\"===typeof e){var h=e;e=function(){var a=gl(g);h.call(a)}}fl(b,g,a,e)}else g=ql(c,b,a,e,d);return gl(g)}Ec=function(a){switch(a.tag){case 3:var b=a.stateNode;if(b.current.memoizedState.isDehydrated){var c=tc(b.pendingLanes);0!==c&&(Cc(b,c|1),Dk(b,B()),0===(K&6)&&(Gj=B()+500,jg()))}break;case 13:Rk(function(){var b=ih(a,1);if(null!==b){var c=R();gi(b,a,1,c)}}),il(a,1)}};\nFc=function(a){if(13===a.tag){var b=ih(a,134217728);if(null!==b){var c=R();gi(b,a,134217728,c)}il(a,134217728)}};Gc=function(a){if(13===a.tag){var b=yi(a),c=ih(a,b);if(null!==c){var d=R();gi(c,a,b,d)}il(a,b)}};Hc=function(){return C};Ic=function(a,b){var c=C;try{return C=a,b()}finally{C=c}};\nyb=function(a,b,c){switch(b){case \"input\":bb(a,c);b=c.name;if(\"radio\"===c.type&&null!=b){for(c=a;c.parentNode;)c=c.parentNode;c=c.querySelectorAll(\"input[name=\"+JSON.stringify(\"\"+b)+'][type=\"radio\"]');for(b=0;b<c.length;b++){var d=c[b];if(d!==a&&d.form===a.form){var e=Db(d);if(!e)throw Error(p(90));Wa(d);bb(d,e)}}}break;case \"textarea\":ib(a,c);break;case \"select\":b=c.value,null!=b&&fb(a,!!c.multiple,b,!1)}};Gb=Qk;Hb=Rk;\nvar sl={usingClientEntryPoint:!1,Events:[Cb,ue,Db,Eb,Fb,Qk]},tl={findFiberByHostInstance:Wc,bundleType:0,version:\"18.3.1\",rendererPackageName:\"react-dom\"};\nvar ul={bundleType:tl.bundleType,version:tl.version,rendererPackageName:tl.rendererPackageName,rendererConfig:tl.rendererConfig,overrideHookState:null,overrideHookStateDeletePath:null,overrideHookStateRenamePath:null,overrideProps:null,overridePropsDeletePath:null,overridePropsRenamePath:null,setErrorHandler:null,setSuspenseHandler:null,scheduleUpdate:null,currentDispatcherRef:ua.ReactCurrentDispatcher,findHostInstanceByFiber:function(a){a=Zb(a);return null===a?null:a.stateNode},findFiberByHostInstance:tl.findFiberByHostInstance||\njl,findHostInstancesForRefresh:null,scheduleRefresh:null,scheduleRoot:null,setRefreshHandler:null,getCurrentFiber:null,reconcilerVersion:\"18.3.1-next-f1338f8080-20240426\"};if(\"undefined\"!==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__){var vl=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(!vl.isDisabled&&vl.supportsFiber)try{kc=vl.inject(ul),lc=vl}catch(a){}}exports.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=sl;\nexports.createPortal=function(a,b){var c=2<arguments.length&&void 0!==arguments[2]?arguments[2]:null;if(!nl(b))throw Error(p(200));return cl(a,b,null,c)};exports.createRoot=function(a,b){if(!nl(a))throw Error(p(299));var c=!1,d=\"\",e=kl;null!==b&&void 0!==b&&(!0===b.unstable_strictMode&&(c=!0),void 0!==b.identifierPrefix&&(d=b.identifierPrefix),void 0!==b.onRecoverableError&&(e=b.onRecoverableError));b=bl(a,1,!1,null,null,c,!1,d,e);a[uf]=b.current;sf(8===a.nodeType?a.parentNode:a);return new ll(b)};\nexports.findDOMNode=function(a){if(null==a)return null;if(1===a.nodeType)return a;var b=a._reactInternals;if(void 0===b){if(\"function\"===typeof a.render)throw Error(p(188));a=Object.keys(a).join(\",\");throw Error(p(268,a));}a=Zb(b);a=null===a?null:a.stateNode;return a};exports.flushSync=function(a){return Rk(a)};exports.hydrate=function(a,b,c){if(!ol(b))throw Error(p(200));return rl(null,a,b,!0,c)};\nexports.hydrateRoot=function(a,b,c){if(!nl(a))throw Error(p(405));var d=null!=c&&c.hydratedSources||null,e=!1,f=\"\",g=kl;null!==c&&void 0!==c&&(!0===c.unstable_strictMode&&(e=!0),void 0!==c.identifierPrefix&&(f=c.identifierPrefix),void 0!==c.onRecoverableError&&(g=c.onRecoverableError));b=el(b,null,a,1,null!=c?c:null,e,!1,f,g);a[uf]=b.current;sf(a);if(d)for(a=0;a<d.length;a++)c=d[a],e=c._getVersion,e=e(c._source),null==b.mutableSourceEagerHydrationData?b.mutableSourceEagerHydrationData=[c,e]:b.mutableSourceEagerHydrationData.push(c,\ne);return new ml(b)};exports.render=function(a,b,c){if(!ol(b))throw Error(p(200));return rl(null,a,b,!1,c)};exports.unmountComponentAtNode=function(a){if(!ol(a))throw Error(p(40));return a._reactRootContainer?(Rk(function(){rl(null,null,a,!1,function(){a._reactRootContainer=null;a[uf]=null})}),!0):!1};exports.unstable_batchedUpdates=Qk;\nexports.unstable_renderSubtreeIntoContainer=function(a,b,c,d){if(!ol(c))throw Error(p(200));if(null==a||void 0===a._reactInternals)throw Error(p(38));return rl(a,b,c,!1,d)};exports.version=\"18.3.1-next-f1338f8080-20240426\";\n","'use strict';\n\nvar m = require('react-dom');\nif (process.env.NODE_ENV === 'production') {\n  exports.createRoot = m.createRoot;\n  exports.hydrateRoot = m.hydrateRoot;\n} else {\n  var i = m.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;\n  exports.createRoot = function(c, o) {\n    i.usingClientEntryPoint = true;\n    try {\n      return m.createRoot(c, o);\n    } finally {\n      i.usingClientEntryPoint = false;\n    }\n  };\n  exports.hydrateRoot = function(c, h, o) {\n    i.usingClientEntryPoint = true;\n    try {\n      return m.hydrateRoot(c, h, o);\n    } finally {\n      i.usingClientEntryPoint = false;\n    }\n  };\n}\n","'use strict';\n\nfunction checkDCE() {\n  /* global __REACT_DEVTOOLS_GLOBAL_HOOK__ */\n  if (\n    typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ === 'undefined' ||\n    typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE !== 'function'\n  ) {\n    return;\n  }\n  if (process.env.NODE_ENV !== 'production') {\n    // This branch is unreachable because this function is only called\n    // in production, but the condition is true only in development.\n    // Therefore if the branch is still here, dead code elimination wasn't\n    // properly applied.\n    // Don't change the message. React DevTools relies on it. Also make sure\n    // this message doesn't occur elsewhere in this function, or it will cause\n    // a false positive.\n    throw new Error('^_^');\n  }\n  try {\n    // Verify that the code above has been dead code eliminated (DCE'd).\n    __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(checkDCE);\n  } catch (err) {\n    // DevTools shouldn't crash React, no matter what.\n    // We should still report in case we break this code.\n    console.error(err);\n  }\n}\n\nif (process.env.NODE_ENV === 'production') {\n  // DCE check should happen before ReactDOM bundle executes so that\n  // DevTools can report bad minification during injection.\n  checkDCE();\n  module.exports = require('./cjs/react-dom.production.min.js');\n} else {\n  module.exports = require('./cjs/react-dom.development.js');\n}\n","'use strict';\n\nvar l, s;\nif (process.env.NODE_ENV === 'production') {\n  l = require('./cjs/react-dom-server-legacy.browser.production.min.js');\n  s = require('./cjs/react-dom-server.browser.production.min.js');\n} else {\n  l = require('./cjs/react-dom-server-legacy.browser.development.js');\n  s = require('./cjs/react-dom-server.browser.development.js');\n}\n\nexports.version = l.version;\nexports.renderToString = l.renderToString;\nexports.renderToStaticMarkup = l.renderToStaticMarkup;\nexports.renderToNodeStream = l.renderToNodeStream;\nexports.renderToStaticNodeStream = l.renderToStaticNodeStream;\nexports.renderToReadableStream = s.renderToReadableStream;\n","\"use strict\";\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nObject.defineProperty(exports, \"DraggableCore\", {\n  enumerable: true,\n  get: function get() {\n    return _DraggableCore.default;\n  }\n});\nexports.default = void 0;\n\nvar React = _interopRequireWildcard(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _reactDom = _interopRequireDefault(require(\"react-dom\"));\n\nvar _clsx2 = _interopRequireDefault(require(\"clsx\"));\n\nvar _domFns = require(\"./utils/domFns\");\n\nvar _positionFns = require(\"./utils/positionFns\");\n\nvar _shims = require(\"./utils/shims\");\n\nvar _DraggableCore = _interopRequireDefault(require(\"./DraggableCore\"));\n\nvar _log = _interopRequireDefault(require(\"./utils/log\"));\n\nvar _excluded = [\"axis\", \"bounds\", \"children\", \"defaultPosition\", \"defaultClassName\", \"defaultClassNameDragging\", \"defaultClassNameDragged\", \"position\", \"positionOffset\", \"scale\"];\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== \"function\") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }\n\nfunction _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== \"object\" && typeof obj !== \"function\") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n//\n// Define <Draggable>\n//\nvar Draggable = /*#__PURE__*/function (_React$Component) {\n  _inherits(Draggable, _React$Component);\n\n  var _super = _createSuper(Draggable);\n\n  function Draggable(props\n  /*: DraggableProps*/\n  ) {\n    var _this;\n\n    _classCallCheck(this, Draggable);\n\n    _this = _super.call(this, props);\n\n    _defineProperty(_assertThisInitialized(_this), \"onDragStart\", function (e, coreData) {\n      (0, _log.default)('Draggable: onDragStart: %j', coreData); // Short-circuit if user's callback killed it.\n\n      var shouldStart = _this.props.onStart(e, (0, _positionFns.createDraggableData)(_assertThisInitialized(_this), coreData)); // Kills start event on core as well, so move handlers are never bound.\n\n\n      if (shouldStart === false) return false;\n\n      _this.setState({\n        dragging: true,\n        dragged: true\n      });\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"onDrag\", function (e, coreData) {\n      if (!_this.state.dragging) return false;\n      (0, _log.default)('Draggable: onDrag: %j', coreData);\n      var uiData = (0, _positionFns.createDraggableData)(_assertThisInitialized(_this), coreData);\n      var newState\n      /*: $Shape<DraggableState>*/\n      = {\n        x: uiData.x,\n        y: uiData.y\n      }; // Keep within bounds.\n\n      if (_this.props.bounds) {\n        // Save original x and y.\n        var x = newState.x,\n            y = newState.y; // Add slack to the values used to calculate bound position. This will ensure that if\n        // we start removing slack, the element won't react to it right away until it's been\n        // completely removed.\n\n        newState.x += _this.state.slackX;\n        newState.y += _this.state.slackY; // Get bound position. This will ceil/floor the x and y within the boundaries.\n\n        var _getBoundPosition = (0, _positionFns.getBoundPosition)(_assertThisInitialized(_this), newState.x, newState.y),\n            _getBoundPosition2 = _slicedToArray(_getBoundPosition, 2),\n            newStateX = _getBoundPosition2[0],\n            newStateY = _getBoundPosition2[1];\n\n        newState.x = newStateX;\n        newState.y = newStateY; // Recalculate slack by noting how much was shaved by the boundPosition handler.\n\n        newState.slackX = _this.state.slackX + (x - newState.x);\n        newState.slackY = _this.state.slackY + (y - newState.y); // Update the event we fire to reflect what really happened after bounds took effect.\n\n        uiData.x = newState.x;\n        uiData.y = newState.y;\n        uiData.deltaX = newState.x - _this.state.x;\n        uiData.deltaY = newState.y - _this.state.y;\n      } // Short-circuit if user's callback killed it.\n\n\n      var shouldUpdate = _this.props.onDrag(e, uiData);\n\n      if (shouldUpdate === false) return false;\n\n      _this.setState(newState);\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"onDragStop\", function (e, coreData) {\n      if (!_this.state.dragging) return false; // Short-circuit if user's callback killed it.\n\n      var shouldContinue = _this.props.onStop(e, (0, _positionFns.createDraggableData)(_assertThisInitialized(_this), coreData));\n\n      if (shouldContinue === false) return false;\n      (0, _log.default)('Draggable: onDragStop: %j', coreData);\n      var newState\n      /*: $Shape<DraggableState>*/\n      = {\n        dragging: false,\n        slackX: 0,\n        slackY: 0\n      }; // If this is a controlled component, the result of this operation will be to\n      // revert back to the old position. We expect a handler on `onDragStop`, at the least.\n\n      var controlled = Boolean(_this.props.position);\n\n      if (controlled) {\n        var _this$props$position = _this.props.position,\n            x = _this$props$position.x,\n            y = _this$props$position.y;\n        newState.x = x;\n        newState.y = y;\n      }\n\n      _this.setState(newState);\n    });\n\n    _this.state = {\n      // Whether or not we are currently dragging.\n      dragging: false,\n      // Whether or not we have been dragged before.\n      dragged: false,\n      // Current transform x and y.\n      x: props.position ? props.position.x : props.defaultPosition.x,\n      y: props.position ? props.position.y : props.defaultPosition.y,\n      prevPropsPosition: _objectSpread({}, props.position),\n      // Used for compensating for out-of-bounds drags\n      slackX: 0,\n      slackY: 0,\n      // Can only determine if SVG after mounting\n      isElementSVG: false\n    };\n\n    if (props.position && !(props.onDrag || props.onStop)) {\n      // eslint-disable-next-line no-console\n      console.warn('A `position` was applied to this <Draggable>, without drag handlers. This will make this ' + 'component effectively undraggable. Please attach `onDrag` or `onStop` handlers so you can adjust the ' + '`position` of this element.');\n    }\n\n    return _this;\n  }\n\n  _createClass(Draggable, [{\n    key: \"componentDidMount\",\n    value: function componentDidMount() {\n      // Check to see if the element passed is an instanceof SVGElement\n      if (typeof window.SVGElement !== 'undefined' && this.findDOMNode() instanceof window.SVGElement) {\n        this.setState({\n          isElementSVG: true\n        });\n      }\n    }\n  }, {\n    key: \"componentWillUnmount\",\n    value: function componentWillUnmount() {\n      this.setState({\n        dragging: false\n      }); // prevents invariant if unmounted while dragging\n    } // React Strict Mode compatibility: if `nodeRef` is passed, we will use it instead of trying to find\n    // the underlying DOM node ourselves. See the README for more information.\n\n  }, {\n    key: \"findDOMNode\",\n    value: function findDOMNode()\n    /*: ?HTMLElement*/\n    {\n      var _this$props$nodeRef$c, _this$props, _this$props$nodeRef;\n\n      return (_this$props$nodeRef$c = (_this$props = this.props) === null || _this$props === void 0 ? void 0 : (_this$props$nodeRef = _this$props.nodeRef) === null || _this$props$nodeRef === void 0 ? void 0 : _this$props$nodeRef.current) !== null && _this$props$nodeRef$c !== void 0 ? _this$props$nodeRef$c : _reactDom.default.findDOMNode(this);\n    }\n  }, {\n    key: \"render\",\n    value: function render()\n    /*: ReactElement<any>*/\n    {\n      var _clsx;\n\n      var _this$props2 = this.props,\n          axis = _this$props2.axis,\n          bounds = _this$props2.bounds,\n          children = _this$props2.children,\n          defaultPosition = _this$props2.defaultPosition,\n          defaultClassName = _this$props2.defaultClassName,\n          defaultClassNameDragging = _this$props2.defaultClassNameDragging,\n          defaultClassNameDragged = _this$props2.defaultClassNameDragged,\n          position = _this$props2.position,\n          positionOffset = _this$props2.positionOffset,\n          scale = _this$props2.scale,\n          draggableCoreProps = _objectWithoutProperties(_this$props2, _excluded);\n\n      var style = {};\n      var svgTransform = null; // If this is controlled, we don't want to move it - unless it's dragging.\n\n      var controlled = Boolean(position);\n      var draggable = !controlled || this.state.dragging;\n      var validPosition = position || defaultPosition;\n      var transformOpts = {\n        // Set left if horizontal drag is enabled\n        x: (0, _positionFns.canDragX)(this) && draggable ? this.state.x : validPosition.x,\n        // Set top if vertical drag is enabled\n        y: (0, _positionFns.canDragY)(this) && draggable ? this.state.y : validPosition.y\n      }; // If this element was SVG, we use the `transform` attribute.\n\n      if (this.state.isElementSVG) {\n        svgTransform = (0, _domFns.createSVGTransform)(transformOpts, positionOffset);\n      } else {\n        // Add a CSS transform to move the element around. This allows us to move the element around\n        // without worrying about whether or not it is relatively or absolutely positioned.\n        // If the item you are dragging already has a transform set, wrap it in a <span> so <Draggable>\n        // has a clean slate.\n        style = (0, _domFns.createCSSTransform)(transformOpts, positionOffset);\n      } // Mark with class while dragging\n\n\n      var className = (0, _clsx2.default)(children.props.className || '', defaultClassName, (_clsx = {}, _defineProperty(_clsx, defaultClassNameDragging, this.state.dragging), _defineProperty(_clsx, defaultClassNameDragged, this.state.dragged), _clsx)); // Reuse the child provided\n      // This makes it flexible to use whatever element is wanted (div, ul, etc)\n\n      return /*#__PURE__*/React.createElement(_DraggableCore.default, _extends({}, draggableCoreProps, {\n        onStart: this.onDragStart,\n        onDrag: this.onDrag,\n        onStop: this.onDragStop\n      }), /*#__PURE__*/React.cloneElement(React.Children.only(children), {\n        className: className,\n        style: _objectSpread(_objectSpread({}, children.props.style), style),\n        transform: svgTransform\n      }));\n    }\n  }], [{\n    key: \"getDerivedStateFromProps\",\n    value: // React 16.3+\n    // Arity (props, state)\n    function getDerivedStateFromProps(_ref, _ref2)\n    /*: ?$Shape<DraggableState>*/\n    {\n      var position = _ref.position;\n      var prevPropsPosition = _ref2.prevPropsPosition;\n\n      // Set x/y if a new position is provided in props that is different than the previous.\n      if (position && (!prevPropsPosition || position.x !== prevPropsPosition.x || position.y !== prevPropsPosition.y)) {\n        (0, _log.default)('Draggable: getDerivedStateFromProps %j', {\n          position: position,\n          prevPropsPosition: prevPropsPosition\n        });\n        return {\n          x: position.x,\n          y: position.y,\n          prevPropsPosition: _objectSpread({}, position)\n        };\n      }\n\n      return null;\n    }\n  }]);\n\n  return Draggable;\n}(React.Component);\n\nexports.default = Draggable;\n\n_defineProperty(Draggable, \"displayName\", 'Draggable');\n\n_defineProperty(Draggable, \"propTypes\", _objectSpread(_objectSpread({}, _DraggableCore.default.propTypes), {}, {\n  /**\n   * `axis` determines which axis the draggable can move.\n   *\n   *  Note that all callbacks will still return data as normal. This only\n   *  controls flushing to the DOM.\n   *\n   * 'both' allows movement horizontally and vertically.\n   * 'x' limits movement to horizontal axis.\n   * 'y' limits movement to vertical axis.\n   * 'none' limits all movement.\n   *\n   * Defaults to 'both'.\n   */\n  axis: _propTypes.default.oneOf(['both', 'x', 'y', 'none']),\n\n  /**\n   * `bounds` determines the range of movement available to the element.\n   * Available values are:\n   *\n   * 'parent' restricts movement within the Draggable's parent node.\n   *\n   * Alternatively, pass an object with the following properties, all of which are optional:\n   *\n   * {left: LEFT_BOUND, right: RIGHT_BOUND, bottom: BOTTOM_BOUND, top: TOP_BOUND}\n   *\n   * All values are in px.\n   *\n   * Example:\n   *\n   * ```jsx\n   *   let App = React.createClass({\n   *       render: function () {\n   *         return (\n   *            <Draggable bounds={{right: 300, bottom: 300}}>\n   *              <div>Content</div>\n   *           </Draggable>\n   *         );\n   *       }\n   *   });\n   * ```\n   */\n  bounds: _propTypes.default.oneOfType([_propTypes.default.shape({\n    left: _propTypes.default.number,\n    right: _propTypes.default.number,\n    top: _propTypes.default.number,\n    bottom: _propTypes.default.number\n  }), _propTypes.default.string, _propTypes.default.oneOf([false])]),\n  defaultClassName: _propTypes.default.string,\n  defaultClassNameDragging: _propTypes.default.string,\n  defaultClassNameDragged: _propTypes.default.string,\n\n  /**\n   * `defaultPosition` specifies the x and y that the dragged item should start at\n   *\n   * Example:\n   *\n   * ```jsx\n   *      let App = React.createClass({\n   *          render: function () {\n   *              return (\n   *                  <Draggable defaultPosition={{x: 25, y: 25}}>\n   *                      <div>I start with transformX: 25px and transformY: 25px;</div>\n   *                  </Draggable>\n   *              );\n   *          }\n   *      });\n   * ```\n   */\n  defaultPosition: _propTypes.default.shape({\n    x: _propTypes.default.number,\n    y: _propTypes.default.number\n  }),\n  positionOffset: _propTypes.default.shape({\n    x: _propTypes.default.oneOfType([_propTypes.default.number, _propTypes.default.string]),\n    y: _propTypes.default.oneOfType([_propTypes.default.number, _propTypes.default.string])\n  }),\n\n  /**\n   * `position`, if present, defines the current position of the element.\n   *\n   *  This is similar to how form elements in React work - if no `position` is supplied, the component\n   *  is uncontrolled.\n   *\n   * Example:\n   *\n   * ```jsx\n   *      let App = React.createClass({\n   *          render: function () {\n   *              return (\n   *                  <Draggable position={{x: 25, y: 25}}>\n   *                      <div>I start with transformX: 25px and transformY: 25px;</div>\n   *                  </Draggable>\n   *              );\n   *          }\n   *      });\n   * ```\n   */\n  position: _propTypes.default.shape({\n    x: _propTypes.default.number,\n    y: _propTypes.default.number\n  }),\n\n  /**\n   * These properties should be defined on the child, not here.\n   */\n  className: _shims.dontSetMe,\n  style: _shims.dontSetMe,\n  transform: _shims.dontSetMe\n}));\n\n_defineProperty(Draggable, \"defaultProps\", _objectSpread(_objectSpread({}, _DraggableCore.default.defaultProps), {}, {\n  axis: 'both',\n  bounds: false,\n  defaultClassName: 'react-draggable',\n  defaultClassNameDragging: 'react-draggable-dragging',\n  defaultClassNameDragged: 'react-draggable-dragged',\n  defaultPosition: {\n    x: 0,\n    y: 0\n  },\n  scale: 1\n}));","\"use strict\";\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\n\nvar React = _interopRequireWildcard(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _reactDom = _interopRequireDefault(require(\"react-dom\"));\n\nvar _domFns = require(\"./utils/domFns\");\n\nvar _positionFns = require(\"./utils/positionFns\");\n\nvar _shims = require(\"./utils/shims\");\n\nvar _log = _interopRequireDefault(require(\"./utils/log\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== \"function\") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }\n\nfunction _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== \"object\" && typeof obj !== \"function\") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n// Simple abstraction for dragging events names.\nvar eventsFor = {\n  touch: {\n    start: 'touchstart',\n    move: 'touchmove',\n    stop: 'touchend'\n  },\n  mouse: {\n    start: 'mousedown',\n    move: 'mousemove',\n    stop: 'mouseup'\n  }\n}; // Default to mouse events.\n\nvar dragEventFor = eventsFor.mouse;\n/*:: type DraggableCoreState = {\n  dragging: boolean,\n  lastX: number,\n  lastY: number,\n  touchIdentifier: ?number\n};*/\n\n/*:: export type DraggableData = {\n  node: HTMLElement,\n  x: number, y: number,\n  deltaX: number, deltaY: number,\n  lastX: number, lastY: number,\n};*/\n\n/*:: export type DraggableEventHandler = (e: MouseEvent, data: DraggableData) => void | false;*/\n\n/*:: export type ControlPosition = {x: number, y: number};*/\n\n/*:: export type PositionOffsetControlPosition = {x: number|string, y: number|string};*/\n\n/*:: export type DraggableCoreDefaultProps = {\n  allowAnyClick: boolean,\n  disabled: boolean,\n  enableUserSelectHack: boolean,\n  onStart: DraggableEventHandler,\n  onDrag: DraggableEventHandler,\n  onStop: DraggableEventHandler,\n  onMouseDown: (e: MouseEvent) => void,\n  scale: number,\n};*/\n\n/*:: export type DraggableCoreProps = {\n  ...DraggableCoreDefaultProps,\n  cancel: string,\n  children: ReactElement<any>,\n  offsetParent: HTMLElement,\n  grid: [number, number],\n  handle: string,\n  nodeRef?: ?React.ElementRef<any>,\n};*/\n\n//\n// Define <DraggableCore>.\n//\n// <DraggableCore> is for advanced usage of <Draggable>. It maintains minimal internal state so it can\n// work well with libraries that require more control over the element.\n//\nvar DraggableCore = /*#__PURE__*/function (_React$Component) {\n  _inherits(DraggableCore, _React$Component);\n\n  var _super = _createSuper(DraggableCore);\n\n  function DraggableCore() {\n    var _this;\n\n    _classCallCheck(this, DraggableCore);\n\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    _this = _super.call.apply(_super, [this].concat(args));\n\n    _defineProperty(_assertThisInitialized(_this), \"state\", {\n      dragging: false,\n      // Used while dragging to determine deltas.\n      lastX: NaN,\n      lastY: NaN,\n      touchIdentifier: null\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"mounted\", false);\n\n    _defineProperty(_assertThisInitialized(_this), \"handleDragStart\", function (e) {\n      // Make it possible to attach event handlers on top of this one.\n      _this.props.onMouseDown(e); // Only accept left-clicks.\n\n\n      if (!_this.props.allowAnyClick && typeof e.button === 'number' && e.button !== 0) return false; // Get nodes. Be sure to grab relative document (could be iframed)\n\n      var thisNode = _this.findDOMNode();\n\n      if (!thisNode || !thisNode.ownerDocument || !thisNode.ownerDocument.body) {\n        throw new Error('<DraggableCore> not mounted on DragStart!');\n      }\n\n      var ownerDocument = thisNode.ownerDocument; // Short circuit if handle or cancel prop was provided and selector doesn't match.\n\n      if (_this.props.disabled || !(e.target instanceof ownerDocument.defaultView.Node) || _this.props.handle && !(0, _domFns.matchesSelectorAndParentsTo)(e.target, _this.props.handle, thisNode) || _this.props.cancel && (0, _domFns.matchesSelectorAndParentsTo)(e.target, _this.props.cancel, thisNode)) {\n        return;\n      } // Prevent scrolling on mobile devices, like ipad/iphone.\n      // Important that this is after handle/cancel.\n\n\n      if (e.type === 'touchstart') e.preventDefault(); // Set touch identifier in component state if this is a touch event. This allows us to\n      // distinguish between individual touches on multitouch screens by identifying which\n      // touchpoint was set to this element.\n\n      var touchIdentifier = (0, _domFns.getTouchIdentifier)(e);\n\n      _this.setState({\n        touchIdentifier: touchIdentifier\n      }); // Get the current drag point from the event. This is used as the offset.\n\n\n      var position = (0, _positionFns.getControlPosition)(e, touchIdentifier, _assertThisInitialized(_this));\n      if (position == null) return; // not possible but satisfies flow\n\n      var x = position.x,\n          y = position.y; // Create an event object with all the data parents need to make a decision here.\n\n      var coreEvent = (0, _positionFns.createCoreData)(_assertThisInitialized(_this), x, y);\n      (0, _log.default)('DraggableCore: handleDragStart: %j', coreEvent); // Call event handler. If it returns explicit false, cancel.\n\n      (0, _log.default)('calling', _this.props.onStart);\n\n      var shouldUpdate = _this.props.onStart(e, coreEvent);\n\n      if (shouldUpdate === false || _this.mounted === false) return; // Add a style to the body to disable user-select. This prevents text from\n      // being selected all over the page.\n\n      if (_this.props.enableUserSelectHack) (0, _domFns.addUserSelectStyles)(ownerDocument); // Initiate dragging. Set the current x and y as offsets\n      // so we know how much we've moved during the drag. This allows us\n      // to drag elements around even if they have been moved, without issue.\n\n      _this.setState({\n        dragging: true,\n        lastX: x,\n        lastY: y\n      }); // Add events to the document directly so we catch when the user's mouse/touch moves outside of\n      // this element. We use different events depending on whether or not we have detected that this\n      // is a touch-capable device.\n\n\n      (0, _domFns.addEvent)(ownerDocument, dragEventFor.move, _this.handleDrag);\n      (0, _domFns.addEvent)(ownerDocument, dragEventFor.stop, _this.handleDragStop);\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"handleDrag\", function (e) {\n      // Get the current drag point from the event. This is used as the offset.\n      var position = (0, _positionFns.getControlPosition)(e, _this.state.touchIdentifier, _assertThisInitialized(_this));\n      if (position == null) return;\n      var x = position.x,\n          y = position.y; // Snap to grid if prop has been provided\n\n      if (Array.isArray(_this.props.grid)) {\n        var deltaX = x - _this.state.lastX,\n            deltaY = y - _this.state.lastY;\n\n        var _snapToGrid = (0, _positionFns.snapToGrid)(_this.props.grid, deltaX, deltaY);\n\n        var _snapToGrid2 = _slicedToArray(_snapToGrid, 2);\n\n        deltaX = _snapToGrid2[0];\n        deltaY = _snapToGrid2[1];\n        if (!deltaX && !deltaY) return; // skip useless drag\n\n        x = _this.state.lastX + deltaX, y = _this.state.lastY + deltaY;\n      }\n\n      var coreEvent = (0, _positionFns.createCoreData)(_assertThisInitialized(_this), x, y);\n      (0, _log.default)('DraggableCore: handleDrag: %j', coreEvent); // Call event handler. If it returns explicit false, trigger end.\n\n      var shouldUpdate = _this.props.onDrag(e, coreEvent);\n\n      if (shouldUpdate === false || _this.mounted === false) {\n        try {\n          // $FlowIgnore\n          _this.handleDragStop(new MouseEvent('mouseup'));\n        } catch (err) {\n          // Old browsers\n          var event = ((document.createEvent('MouseEvents')\n          /*: any*/\n          )\n          /*: MouseTouchEvent*/\n          ); // I see why this insanity was deprecated\n          // $FlowIgnore\n\n          event.initMouseEvent('mouseup', true, true, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);\n\n          _this.handleDragStop(event);\n        }\n\n        return;\n      }\n\n      _this.setState({\n        lastX: x,\n        lastY: y\n      });\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"handleDragStop\", function (e) {\n      if (!_this.state.dragging) return;\n      var position = (0, _positionFns.getControlPosition)(e, _this.state.touchIdentifier, _assertThisInitialized(_this));\n      if (position == null) return;\n      var x = position.x,\n          y = position.y; // Snap to grid if prop has been provided\n\n      if (Array.isArray(_this.props.grid)) {\n        var deltaX = x - _this.state.lastX || 0;\n        var deltaY = y - _this.state.lastY || 0;\n\n        var _snapToGrid3 = (0, _positionFns.snapToGrid)(_this.props.grid, deltaX, deltaY);\n\n        var _snapToGrid4 = _slicedToArray(_snapToGrid3, 2);\n\n        deltaX = _snapToGrid4[0];\n        deltaY = _snapToGrid4[1];\n        x = _this.state.lastX + deltaX, y = _this.state.lastY + deltaY;\n      }\n\n      var coreEvent = (0, _positionFns.createCoreData)(_assertThisInitialized(_this), x, y); // Call event handler\n\n      var shouldContinue = _this.props.onStop(e, coreEvent);\n\n      if (shouldContinue === false || _this.mounted === false) return false;\n\n      var thisNode = _this.findDOMNode();\n\n      if (thisNode) {\n        // Remove user-select hack\n        if (_this.props.enableUserSelectHack) (0, _domFns.removeUserSelectStyles)(thisNode.ownerDocument);\n      }\n\n      (0, _log.default)('DraggableCore: handleDragStop: %j', coreEvent); // Reset the el.\n\n      _this.setState({\n        dragging: false,\n        lastX: NaN,\n        lastY: NaN\n      });\n\n      if (thisNode) {\n        // Remove event handlers\n        (0, _log.default)('DraggableCore: Removing handlers');\n        (0, _domFns.removeEvent)(thisNode.ownerDocument, dragEventFor.move, _this.handleDrag);\n        (0, _domFns.removeEvent)(thisNode.ownerDocument, dragEventFor.stop, _this.handleDragStop);\n      }\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"onMouseDown\", function (e) {\n      dragEventFor = eventsFor.mouse; // on touchscreen laptops we could switch back to mouse\n\n      return _this.handleDragStart(e);\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"onMouseUp\", function (e) {\n      dragEventFor = eventsFor.mouse;\n      return _this.handleDragStop(e);\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"onTouchStart\", function (e) {\n      // We're on a touch device now, so change the event handlers\n      dragEventFor = eventsFor.touch;\n      return _this.handleDragStart(e);\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"onTouchEnd\", function (e) {\n      // We're on a touch device now, so change the event handlers\n      dragEventFor = eventsFor.touch;\n      return _this.handleDragStop(e);\n    });\n\n    return _this;\n  }\n\n  _createClass(DraggableCore, [{\n    key: \"componentDidMount\",\n    value: function componentDidMount() {\n      this.mounted = true; // Touch handlers must be added with {passive: false} to be cancelable.\n      // https://developers.google.com/web/updates/2017/01/scrolling-intervention\n\n      var thisNode = this.findDOMNode();\n\n      if (thisNode) {\n        (0, _domFns.addEvent)(thisNode, eventsFor.touch.start, this.onTouchStart, {\n          passive: false\n        });\n      }\n    }\n  }, {\n    key: \"componentWillUnmount\",\n    value: function componentWillUnmount() {\n      this.mounted = false; // Remove any leftover event handlers. Remove both touch and mouse handlers in case\n      // some browser quirk caused a touch event to fire during a mouse move, or vice versa.\n\n      var thisNode = this.findDOMNode();\n\n      if (thisNode) {\n        var ownerDocument = thisNode.ownerDocument;\n        (0, _domFns.removeEvent)(ownerDocument, eventsFor.mouse.move, this.handleDrag);\n        (0, _domFns.removeEvent)(ownerDocument, eventsFor.touch.move, this.handleDrag);\n        (0, _domFns.removeEvent)(ownerDocument, eventsFor.mouse.stop, this.handleDragStop);\n        (0, _domFns.removeEvent)(ownerDocument, eventsFor.touch.stop, this.handleDragStop);\n        (0, _domFns.removeEvent)(thisNode, eventsFor.touch.start, this.onTouchStart, {\n          passive: false\n        });\n        if (this.props.enableUserSelectHack) (0, _domFns.removeUserSelectStyles)(ownerDocument);\n      }\n    } // React Strict Mode compatibility: if `nodeRef` is passed, we will use it instead of trying to find\n    // the underlying DOM node ourselves. See the README for more information.\n\n  }, {\n    key: \"findDOMNode\",\n    value: function findDOMNode()\n    /*: ?HTMLElement*/\n    {\n      var _this$props, _this$props2, _this$props2$nodeRef;\n\n      return (_this$props = this.props) !== null && _this$props !== void 0 && _this$props.nodeRef ? (_this$props2 = this.props) === null || _this$props2 === void 0 ? void 0 : (_this$props2$nodeRef = _this$props2.nodeRef) === null || _this$props2$nodeRef === void 0 ? void 0 : _this$props2$nodeRef.current : _reactDom.default.findDOMNode(this);\n    }\n  }, {\n    key: \"render\",\n    value: function render()\n    /*: React.Element<any>*/\n    {\n      // Reuse the child provided\n      // This makes it flexible to use whatever element is wanted (div, ul, etc)\n      return /*#__PURE__*/React.cloneElement(React.Children.only(this.props.children), {\n        // Note: mouseMove handler is attached to document so it will still function\n        // when the user drags quickly and leaves the bounds of the element.\n        onMouseDown: this.onMouseDown,\n        onMouseUp: this.onMouseUp,\n        // onTouchStart is added on `componentDidMount` so they can be added with\n        // {passive: false}, which allows it to cancel. See\n        // https://developers.google.com/web/updates/2017/01/scrolling-intervention\n        onTouchEnd: this.onTouchEnd\n      });\n    }\n  }]);\n\n  return DraggableCore;\n}(React.Component);\n\nexports.default = DraggableCore;\n\n_defineProperty(DraggableCore, \"displayName\", 'DraggableCore');\n\n_defineProperty(DraggableCore, \"propTypes\", {\n  /**\n   * `allowAnyClick` allows dragging using any mouse button.\n   * By default, we only accept the left button.\n   *\n   * Defaults to `false`.\n   */\n  allowAnyClick: _propTypes.default.bool,\n\n  /**\n   * `disabled`, if true, stops the <Draggable> from dragging. All handlers,\n   * with the exception of `onMouseDown`, will not fire.\n   */\n  disabled: _propTypes.default.bool,\n\n  /**\n   * By default, we add 'user-select:none' attributes to the document body\n   * to prevent ugly text selection during drag. If this is causing problems\n   * for your app, set this to `false`.\n   */\n  enableUserSelectHack: _propTypes.default.bool,\n\n  /**\n   * `offsetParent`, if set, uses the passed DOM node to compute drag offsets\n   * instead of using the parent node.\n   */\n  offsetParent: function offsetParent(props\n  /*: DraggableCoreProps*/\n  , propName\n  /*: $Keys<DraggableCoreProps>*/\n  ) {\n    if (props[propName] && props[propName].nodeType !== 1) {\n      throw new Error('Draggable\\'s offsetParent must be a DOM Node.');\n    }\n  },\n\n  /**\n   * `grid` specifies the x and y that dragging should snap to.\n   */\n  grid: _propTypes.default.arrayOf(_propTypes.default.number),\n\n  /**\n   * `handle` specifies a selector to be used as the handle that initiates drag.\n   *\n   * Example:\n   *\n   * ```jsx\n   *   let App = React.createClass({\n   *       render: function () {\n   *         return (\n   *            <Draggable handle=\".handle\">\n   *              <div>\n   *                  <div className=\"handle\">Click me to drag</div>\n   *                  <div>This is some other content</div>\n   *              </div>\n   *           </Draggable>\n   *         );\n   *       }\n   *   });\n   * ```\n   */\n  handle: _propTypes.default.string,\n\n  /**\n   * `cancel` specifies a selector to be used to prevent drag initialization.\n   *\n   * Example:\n   *\n   * ```jsx\n   *   let App = React.createClass({\n   *       render: function () {\n   *           return(\n   *               <Draggable cancel=\".cancel\">\n   *                   <div>\n   *                     <div className=\"cancel\">You can't drag from here</div>\n   *                     <div>Dragging here works fine</div>\n   *                   </div>\n   *               </Draggable>\n   *           );\n   *       }\n   *   });\n   * ```\n   */\n  cancel: _propTypes.default.string,\n\n  /* If running in React Strict mode, ReactDOM.findDOMNode() is deprecated.\n   * Unfortunately, in order for <Draggable> to work properly, we need raw access\n   * to the underlying DOM node. If you want to avoid the warning, pass a `nodeRef`\n   * as in this example:\n   *\n   * function MyComponent() {\n   *   const nodeRef = React.useRef(null);\n   *   return (\n   *     <Draggable nodeRef={nodeRef}>\n   *       <div ref={nodeRef}>Example Target</div>\n   *     </Draggable>\n   *   );\n   * }\n   *\n   * This can be used for arbitrarily nested components, so long as the ref ends up\n   * pointing to the actual child DOM node and not a custom component.\n   */\n  nodeRef: _propTypes.default.object,\n\n  /**\n   * Called when dragging starts.\n   * If this function returns the boolean false, dragging will be canceled.\n   */\n  onStart: _propTypes.default.func,\n\n  /**\n   * Called while dragging.\n   * If this function returns the boolean false, dragging will be canceled.\n   */\n  onDrag: _propTypes.default.func,\n\n  /**\n   * Called when dragging stops.\n   * If this function returns the boolean false, the drag will remain active.\n   */\n  onStop: _propTypes.default.func,\n\n  /**\n   * A workaround option which can be passed if onMouseDown needs to be accessed,\n   * since it'll always be blocked (as there is internal use of onMouseDown)\n   */\n  onMouseDown: _propTypes.default.func,\n\n  /**\n   * `scale`, if set, applies scaling while dragging an element\n   */\n  scale: _propTypes.default.number,\n\n  /**\n   * These properties should be defined on the child, not here.\n   */\n  className: _shims.dontSetMe,\n  style: _shims.dontSetMe,\n  transform: _shims.dontSetMe\n});\n\n_defineProperty(DraggableCore, \"defaultProps\", {\n  allowAnyClick: false,\n  // by default only accept left click\n  disabled: false,\n  enableUserSelectHack: true,\n  onStart: function onStart() {},\n  onDrag: function onDrag() {},\n  onStop: function onStop() {},\n  onMouseDown: function onMouseDown() {},\n  scale: 1\n});","\"use strict\";\n\nvar _require = require('./Draggable'),\n    Draggable = _require.default,\n    DraggableCore = _require.DraggableCore; // Previous versions of this lib exported <Draggable> as the root export. As to no-// them, or TypeScript, we export *both* as the root and as 'default'.\n// See https://github.com/mzabriskie/react-draggable/pull/254\n// and https://github.com/mzabriskie/react-draggable/issues/266\n\n\nmodule.exports = Draggable;\nmodule.exports.default = Draggable;\nmodule.exports.DraggableCore = DraggableCore;","\"use strict\";\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.addClassName = addClassName;\nexports.addEvent = addEvent;\nexports.addUserSelectStyles = addUserSelectStyles;\nexports.createCSSTransform = createCSSTransform;\nexports.createSVGTransform = createSVGTransform;\nexports.getTouch = getTouch;\nexports.getTouchIdentifier = getTouchIdentifier;\nexports.getTranslation = getTranslation;\nexports.innerHeight = innerHeight;\nexports.innerWidth = innerWidth;\nexports.matchesSelector = matchesSelector;\nexports.matchesSelectorAndParentsTo = matchesSelectorAndParentsTo;\nexports.offsetXYFromParent = offsetXYFromParent;\nexports.outerHeight = outerHeight;\nexports.outerWidth = outerWidth;\nexports.removeClassName = removeClassName;\nexports.removeEvent = removeEvent;\nexports.removeUserSelectStyles = removeUserSelectStyles;\n\nvar _shims = require(\"./shims\");\n\nvar _getPrefix = _interopRequireWildcard(require(\"./getPrefix\"));\n\nfunction _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== \"function\") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }\n\nfunction _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== \"object\" && typeof obj !== \"function\") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar matchesSelectorFunc = '';\n\nfunction matchesSelector(el\n/*: Node*/\n, selector\n/*: string*/\n)\n/*: boolean*/\n{\n  if (!matchesSelectorFunc) {\n    matchesSelectorFunc = (0, _shims.findInArray)(['matches', 'webkitMatchesSelector', 'mozMatchesSelector', 'msMatchesSelector', 'oMatchesSelector'], function (method) {\n      // $FlowIgnore: Doesn't think elements are indexable\n      return (0, _shims.isFunction)(el[method]);\n    });\n  } // Might not be found entirely (not an Element?) - in that case, bail\n  // $FlowIgnore: Doesn't think elements are indexable\n\n\n  if (!(0, _shims.isFunction)(el[matchesSelectorFunc])) return false; // $FlowIgnore: Doesn't think elements are indexable\n\n  return el[matchesSelectorFunc](selector);\n} // Works up the tree to the draggable itself attempting to match selector.\n\n\nfunction matchesSelectorAndParentsTo(el\n/*: Node*/\n, selector\n/*: string*/\n, baseNode\n/*: Node*/\n)\n/*: boolean*/\n{\n  var node = el;\n\n  do {\n    if (matchesSelector(node, selector)) return true;\n    if (node === baseNode) return false;\n    node = node.parentNode;\n  } while (node);\n\n  return false;\n}\n\nfunction addEvent(el\n/*: ?Node*/\n, event\n/*: string*/\n, handler\n/*: Function*/\n, inputOptions\n/*: Object*/\n)\n/*: void*/\n{\n  if (!el) return;\n\n  var options = _objectSpread({\n    capture: true\n  }, inputOptions); // $FlowIgnore[method-unbinding]\n\n\n  if (el.addEventListener) {\n    el.addEventListener(event, handler, options);\n  } else if (el.attachEvent) {\n    el.attachEvent('on' + event, handler);\n  } else {\n    // $FlowIgnore: Doesn't think elements are indexable\n    el['on' + event] = handler;\n  }\n}\n\nfunction removeEvent(el\n/*: ?Node*/\n, event\n/*: string*/\n, handler\n/*: Function*/\n, inputOptions\n/*: Object*/\n)\n/*: void*/\n{\n  if (!el) return;\n\n  var options = _objectSpread({\n    capture: true\n  }, inputOptions); // $FlowIgnore[method-unbinding]\n\n\n  if (el.removeEventListener) {\n    el.removeEventListener(event, handler, options);\n  } else if (el.detachEvent) {\n    el.detachEvent('on' + event, handler);\n  } else {\n    // $FlowIgnore: Doesn't think elements are indexable\n    el['on' + event] = null;\n  }\n}\n\nfunction outerHeight(node\n/*: HTMLElement*/\n)\n/*: number*/\n{\n  // This is deliberately excluding margin for our calculations, since we are using\n  // offsetTop which is including margin. See getBoundPosition\n  var height = node.clientHeight;\n  var computedStyle = node.ownerDocument.defaultView.getComputedStyle(node);\n  height += (0, _shims.int)(computedStyle.borderTopWidth);\n  height += (0, _shims.int)(computedStyle.borderBottomWidth);\n  return height;\n}\n\nfunction outerWidth(node\n/*: HTMLElement*/\n)\n/*: number*/\n{\n  // This is deliberately excluding margin for our calculations, since we are using\n  // offsetLeft which is including margin. See getBoundPosition\n  var width = node.clientWidth;\n  var computedStyle = node.ownerDocument.defaultView.getComputedStyle(node);\n  width += (0, _shims.int)(computedStyle.borderLeftWidth);\n  width += (0, _shims.int)(computedStyle.borderRightWidth);\n  return width;\n}\n\nfunction innerHeight(node\n/*: HTMLElement*/\n)\n/*: number*/\n{\n  var height = node.clientHeight;\n  var computedStyle = node.ownerDocument.defaultView.getComputedStyle(node);\n  height -= (0, _shims.int)(computedStyle.paddingTop);\n  height -= (0, _shims.int)(computedStyle.paddingBottom);\n  return height;\n}\n\nfunction innerWidth(node\n/*: HTMLElement*/\n)\n/*: number*/\n{\n  var width = node.clientWidth;\n  var computedStyle = node.ownerDocument.defaultView.getComputedStyle(node);\n  width -= (0, _shims.int)(computedStyle.paddingLeft);\n  width -= (0, _shims.int)(computedStyle.paddingRight);\n  return width;\n}\n/*:: interface EventWithOffset {\n  clientX: number, clientY: number\n}*/\n\n\n// Get from offsetParent\nfunction offsetXYFromParent(evt\n/*: EventWithOffset*/\n, offsetParent\n/*: HTMLElement*/\n, scale\n/*: number*/\n)\n/*: ControlPosition*/\n{\n  var isBody = offsetParent === offsetParent.ownerDocument.body;\n  var offsetParentRect = isBody ? {\n    left: 0,\n    top: 0\n  } : offsetParent.getBoundingClientRect();\n  var x = (evt.clientX + offsetParent.scrollLeft - offsetParentRect.left) / scale;\n  var y = (evt.clientY + offsetParent.scrollTop - offsetParentRect.top) / scale;\n  return {\n    x: x,\n    y: y\n  };\n}\n\nfunction createCSSTransform(controlPos\n/*: ControlPosition*/\n, positionOffset\n/*: PositionOffsetControlPosition*/\n)\n/*: Object*/\n{\n  var translation = getTranslation(controlPos, positionOffset, 'px');\n  return _defineProperty({}, (0, _getPrefix.browserPrefixToKey)('transform', _getPrefix.default), translation);\n}\n\nfunction createSVGTransform(controlPos\n/*: ControlPosition*/\n, positionOffset\n/*: PositionOffsetControlPosition*/\n)\n/*: string*/\n{\n  var translation = getTranslation(controlPos, positionOffset, '');\n  return translation;\n}\n\nfunction getTranslation(_ref2, positionOffset\n/*: PositionOffsetControlPosition*/\n, unitSuffix\n/*: string*/\n)\n/*: string*/\n{\n  var x = _ref2.x,\n      y = _ref2.y;\n  var translation = \"translate(\".concat(x).concat(unitSuffix, \",\").concat(y).concat(unitSuffix, \")\");\n\n  if (positionOffset) {\n    var defaultX = \"\".concat(typeof positionOffset.x === 'string' ? positionOffset.x : positionOffset.x + unitSuffix);\n    var defaultY = \"\".concat(typeof positionOffset.y === 'string' ? positionOffset.y : positionOffset.y + unitSuffix);\n    translation = \"translate(\".concat(defaultX, \", \").concat(defaultY, \")\") + translation;\n  }\n\n  return translation;\n}\n\nfunction getTouch(e\n/*: MouseTouchEvent*/\n, identifier\n/*: number*/\n)\n/*: ?{clientX: number, clientY: number}*/\n{\n  return e.targetTouches && (0, _shims.findInArray)(e.targetTouches, function (t) {\n    return identifier === t.identifier;\n  }) || e.changedTouches && (0, _shims.findInArray)(e.changedTouches, function (t) {\n    return identifier === t.identifier;\n  });\n}\n\nfunction getTouchIdentifier(e\n/*: MouseTouchEvent*/\n)\n/*: ?number*/\n{\n  if (e.targetTouches && e.targetTouches[0]) return e.targetTouches[0].identifier;\n  if (e.changedTouches && e.changedTouches[0]) return e.changedTouches[0].identifier;\n} // User-select Hacks:\n//\n// Useful for preventing blue highlights all over everything when dragging.\n// Note we're passing `document` b/c we could be iframed\n\n\nfunction addUserSelectStyles(doc\n/*: ?Document*/\n) {\n  if (!doc) return;\n  var styleEl = doc.getElementById('react-draggable-style-el');\n\n  if (!styleEl) {\n    styleEl = doc.createElement('style');\n    styleEl.type = 'text/css';\n    styleEl.id = 'react-draggable-style-el';\n    styleEl.innerHTML = '.react-draggable-transparent-selection *::-moz-selection {all: inherit;}\\n';\n    styleEl.innerHTML += '.react-draggable-transparent-selection *::selection {all: inherit;}\\n';\n    doc.getElementsByTagName('head')[0].appendChild(styleEl);\n  }\n\n  if (doc.body) addClassName(doc.body, 'react-draggable-transparent-selection');\n}\n\nfunction removeUserSelectStyles(doc\n/*: ?Document*/\n) {\n  if (!doc) return;\n\n  try {\n    if (doc.body) removeClassName(doc.body, 'react-draggable-transparent-selection'); // $FlowIgnore: IE\n\n    if (doc.selection) {\n      // $FlowIgnore: IE\n      doc.selection.empty();\n    } else {\n      // Remove selection caused by scroll, unless it's a focused input\n      // (we use doc.defaultView in case we're in an iframe)\n      var selection = (doc.defaultView || window).getSelection();\n\n      if (selection && selection.type !== 'Caret') {\n        selection.removeAllRanges();\n      }\n    }\n  } catch (e) {// probably IE\n  }\n}\n\nfunction addClassName(el\n/*: HTMLElement*/\n, className\n/*: string*/\n) {\n  if (el.classList) {\n    el.classList.add(className);\n  } else {\n    if (!el.className.match(new RegExp(\"(?:^|\\\\s)\".concat(className, \"(?!\\\\S)\")))) {\n      el.className += \" \".concat(className);\n    }\n  }\n}\n\nfunction removeClassName(el\n/*: HTMLElement*/\n, className\n/*: string*/\n) {\n  if (el.classList) {\n    el.classList.remove(className);\n  } else {\n    el.className = el.className.replace(new RegExp(\"(?:^|\\\\s)\".concat(className, \"(?!\\\\S)\"), 'g'), '');\n  }\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.browserPrefixToKey = browserPrefixToKey;\nexports.browserPrefixToStyle = browserPrefixToStyle;\nexports.default = void 0;\nexports.getPrefix = getPrefix;\nvar prefixes = ['Moz', 'Webkit', 'O', 'ms'];\n\nfunction getPrefix()\n/*: string*/\n{\n  var _window$document, _window$document$docu;\n\n  var prop\n  /*: string*/\n  = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'transform';\n  // Ensure we're running in an environment where there is actually a global\n  // `window` obj\n  if (typeof window === 'undefined') return ''; // If we're in a pseudo-browser server-side environment, this access\n  // path may not exist, so bail out if it doesn't.\n\n  var style = (_window$document = window.document) === null || _window$document === void 0 ? void 0 : (_window$document$docu = _window$document.documentElement) === null || _window$document$docu === void 0 ? void 0 : _window$document$docu.style;\n  if (!style) return '';\n  if (prop in style) return '';\n\n  for (var i = 0; i < prefixes.length; i++) {\n    if (browserPrefixToKey(prop, prefixes[i]) in style) return prefixes[i];\n  }\n\n  return '';\n}\n\nfunction browserPrefixToKey(prop\n/*: string*/\n, prefix\n/*: string*/\n)\n/*: string*/\n{\n  return prefix ? \"\".concat(prefix).concat(kebabToTitleCase(prop)) : prop;\n}\n\nfunction browserPrefixToStyle(prop\n/*: string*/\n, prefix\n/*: string*/\n)\n/*: string*/\n{\n  return prefix ? \"-\".concat(prefix.toLowerCase(), \"-\").concat(prop) : prop;\n}\n\nfunction kebabToTitleCase(str\n/*: string*/\n)\n/*: string*/\n{\n  var out = '';\n  var shouldCapitalize = true;\n\n  for (var i = 0; i < str.length; i++) {\n    if (shouldCapitalize) {\n      out += str[i].toUpperCase();\n      shouldCapitalize = false;\n    } else if (str[i] === '-') {\n      shouldCapitalize = true;\n    } else {\n      out += str[i];\n    }\n  }\n\n  return out;\n} // Default export is the prefix itself, like 'Moz', 'Webkit', etc\n// Note that you may have to re-test for certain things; for instance, Chrome 50\n// can handle unprefixed `transform`, but not unprefixed `user-select`\n\n\nvar _default = (getPrefix()\n/*: string*/\n);\n\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = log;\n\n/*eslint no-console:0*/\nfunction log() {\n  var _console;\n\n  if (undefined) (_console = console).log.apply(_console, arguments);\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.canDragX = canDragX;\nexports.canDragY = canDragY;\nexports.createCoreData = createCoreData;\nexports.createDraggableData = createDraggableData;\nexports.getBoundPosition = getBoundPosition;\nexports.getControlPosition = getControlPosition;\nexports.snapToGrid = snapToGrid;\n\nvar _shims = require(\"./shims\");\n\nvar _domFns = require(\"./domFns\");\n\nfunction getBoundPosition(draggable\n/*: Draggable*/\n, x\n/*: number*/\n, y\n/*: number*/\n)\n/*: [number, number]*/\n{\n  // If no bounds, short-circuit and move on\n  if (!draggable.props.bounds) return [x, y]; // Clone new bounds\n\n  var bounds = draggable.props.bounds;\n  bounds = typeof bounds === 'string' ? bounds : cloneBounds(bounds);\n  var node = findDOMNode(draggable);\n\n  if (typeof bounds === 'string') {\n    var ownerDocument = node.ownerDocument;\n    var ownerWindow = ownerDocument.defaultView;\n    var boundNode;\n\n    if (bounds === 'parent') {\n      boundNode = node.parentNode;\n    } else {\n      boundNode = ownerDocument.querySelector(bounds);\n    }\n\n    if (!(boundNode instanceof ownerWindow.HTMLElement)) {\n      throw new Error('Bounds selector \"' + bounds + '\" could not find an element.');\n    }\n\n    var boundNodeEl\n    /*: HTMLElement*/\n    = boundNode; // for Flow, can't seem to refine correctly\n\n    var nodeStyle = ownerWindow.getComputedStyle(node);\n    var boundNodeStyle = ownerWindow.getComputedStyle(boundNodeEl); // Compute bounds. This is a pain with padding and offsets but this gets it exactly right.\n\n    bounds = {\n      left: -node.offsetLeft + (0, _shims.int)(boundNodeStyle.paddingLeft) + (0, _shims.int)(nodeStyle.marginLeft),\n      top: -node.offsetTop + (0, _shims.int)(boundNodeStyle.paddingTop) + (0, _shims.int)(nodeStyle.marginTop),\n      right: (0, _domFns.innerWidth)(boundNodeEl) - (0, _domFns.outerWidth)(node) - node.offsetLeft + (0, _shims.int)(boundNodeStyle.paddingRight) - (0, _shims.int)(nodeStyle.marginRight),\n      bottom: (0, _domFns.innerHeight)(boundNodeEl) - (0, _domFns.outerHeight)(node) - node.offsetTop + (0, _shims.int)(boundNodeStyle.paddingBottom) - (0, _shims.int)(nodeStyle.marginBottom)\n    };\n  } // Keep x and y below right and bottom limits...\n\n\n  if ((0, _shims.isNum)(bounds.right)) x = Math.min(x, bounds.right);\n  if ((0, _shims.isNum)(bounds.bottom)) y = Math.min(y, bounds.bottom); // But above left and top limits.\n\n  if ((0, _shims.isNum)(bounds.left)) x = Math.max(x, bounds.left);\n  if ((0, _shims.isNum)(bounds.top)) y = Math.max(y, bounds.top);\n  return [x, y];\n}\n\nfunction snapToGrid(grid\n/*: [number, number]*/\n, pendingX\n/*: number*/\n, pendingY\n/*: number*/\n)\n/*: [number, number]*/\n{\n  var x = Math.round(pendingX / grid[0]) * grid[0];\n  var y = Math.round(pendingY / grid[1]) * grid[1];\n  return [x, y];\n}\n\nfunction canDragX(draggable\n/*: Draggable*/\n)\n/*: boolean*/\n{\n  return draggable.props.axis === 'both' || draggable.props.axis === 'x';\n}\n\nfunction canDragY(draggable\n/*: Draggable*/\n)\n/*: boolean*/\n{\n  return draggable.props.axis === 'both' || draggable.props.axis === 'y';\n} // Get {x, y} positions from event.\n\n\nfunction getControlPosition(e\n/*: MouseTouchEvent*/\n, touchIdentifier\n/*: ?number*/\n, draggableCore\n/*: DraggableCore*/\n)\n/*: ?ControlPosition*/\n{\n  var touchObj = typeof touchIdentifier === 'number' ? (0, _domFns.getTouch)(e, touchIdentifier) : null;\n  if (typeof touchIdentifier === 'number' && !touchObj) return null; // not the right touch\n\n  var node = findDOMNode(draggableCore); // User can provide an offsetParent if desired.\n\n  var offsetParent = draggableCore.props.offsetParent || node.offsetParent || node.ownerDocument.body;\n  return (0, _domFns.offsetXYFromParent)(touchObj || e, offsetParent, draggableCore.props.scale);\n} // Create an data object exposed by <DraggableCore>'s events\n\n\nfunction createCoreData(draggable\n/*: DraggableCore*/\n, x\n/*: number*/\n, y\n/*: number*/\n)\n/*: DraggableData*/\n{\n  var state = draggable.state;\n  var isStart = !(0, _shims.isNum)(state.lastX);\n  var node = findDOMNode(draggable);\n\n  if (isStart) {\n    // If this is our first move, use the x and y as last coords.\n    return {\n      node: node,\n      deltaX: 0,\n      deltaY: 0,\n      lastX: x,\n      lastY: y,\n      x: x,\n      y: y\n    };\n  } else {\n    // Otherwise calculate proper values.\n    return {\n      node: node,\n      deltaX: x - state.lastX,\n      deltaY: y - state.lastY,\n      lastX: state.lastX,\n      lastY: state.lastY,\n      x: x,\n      y: y\n    };\n  }\n} // Create an data exposed by <Draggable>'s events\n\n\nfunction createDraggableData(draggable\n/*: Draggable*/\n, coreData\n/*: DraggableData*/\n)\n/*: DraggableData*/\n{\n  var scale = draggable.props.scale;\n  return {\n    node: coreData.node,\n    x: draggable.state.x + coreData.deltaX / scale,\n    y: draggable.state.y + coreData.deltaY / scale,\n    deltaX: coreData.deltaX / scale,\n    deltaY: coreData.deltaY / scale,\n    lastX: draggable.state.x,\n    lastY: draggable.state.y\n  };\n} // A lot faster than stringify/parse\n\n\nfunction cloneBounds(bounds\n/*: Bounds*/\n)\n/*: Bounds*/\n{\n  return {\n    left: bounds.left,\n    top: bounds.top,\n    right: bounds.right,\n    bottom: bounds.bottom\n  };\n}\n\nfunction findDOMNode(draggable\n/*: Draggable | DraggableCore*/\n)\n/*: HTMLElement*/\n{\n  var node = draggable.findDOMNode();\n\n  if (!node) {\n    throw new Error('<DraggableCore>: Unmounted during event!');\n  } // $FlowIgnore we can't assert on HTMLElement due to tests... FIXME\n\n\n  return node;\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.dontSetMe = dontSetMe;\nexports.findInArray = findInArray;\nexports.int = int;\nexports.isFunction = isFunction;\nexports.isNum = isNum;\n\n// @credits https://gist.github.com/rogozhnikoff/a43cfed27c41e4e68cdc\nfunction findInArray(array\n/*: Array<any> | TouchList*/\n, callback\n/*: Function*/\n)\n/*: any*/\n{\n  for (var i = 0, length = array.length; i < length; i++) {\n    if (callback.apply(callback, [array[i], i, array])) return array[i];\n  }\n}\n\nfunction isFunction(func\n/*: any*/\n)\n/*: boolean %checks*/\n{\n  // $FlowIgnore[method-unbinding]\n  return typeof func === 'function' || Object.prototype.toString.call(func) === '[object Function]';\n}\n\nfunction isNum(num\n/*: any*/\n)\n/*: boolean %checks*/\n{\n  return typeof num === 'number' && !isNaN(num);\n}\n\nfunction int(a\n/*: string*/\n)\n/*: number*/\n{\n  return parseInt(a, 10);\n}\n\nfunction dontSetMe(props\n/*: Object*/\n, propName\n/*: string*/\n, componentName\n/*: string*/\n)\n/*: ?Error*/\n{\n  if (props[propName]) {\n    return new Error(\"Invalid prop \".concat(propName, \" passed to \").concat(componentName, \" - do not set this, set it on the child.\"));\n  }\n}","function r(e){var t,f,n=\"\";if(\"string\"==typeof e||\"number\"==typeof e)n+=e;else if(\"object\"==typeof e)if(Array.isArray(e))for(t=0;t<e.length;t++)e[t]&&(f=r(e[t]))&&(n&&(n+=\" \"),n+=f);else for(t in e)e[t]&&(n&&(n+=\" \"),n+=t);return n}export function clsx(){for(var e,t,f=0,n=\"\";f<arguments.length;)(e=arguments[f++])&&(t=r(e))&&(n&&(n+=\" \"),n+=t);return n}export default clsx;","/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol */\n\nvar extendStatics = function(d, b) {\n  extendStatics = Object.setPrototypeOf ||\n      ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n      function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n  return extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n  if (typeof b !== \"function\" && b !== null)\n      throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n  extendStatics(d, b);\n  function __() { this.constructor = d; }\n  d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nexport var __assign = function() {\n  __assign = Object.assign || function __assign(t) {\n      for (var s, i = 1, n = arguments.length; i < n; i++) {\n          s = arguments[i];\n          for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n      }\n      return t;\n  }\n  return __assign.apply(this, arguments);\n}\n\nexport function __rest(s, e) {\n  var t = {};\n  for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n      t[p] = s[p];\n  if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n      for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n          if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n              t[p[i]] = s[p[i]];\n      }\n  return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n  if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n  else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n  return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n  return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n  function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n  var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n  var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n  var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n  var _, done = false;\n  for (var i = decorators.length - 1; i >= 0; i--) {\n      var context = {};\n      for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n      for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n      context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n      var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n      if (kind === \"accessor\") {\n          if (result === void 0) continue;\n          if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n          if (_ = accept(result.get)) descriptor.get = _;\n          if (_ = accept(result.set)) descriptor.set = _;\n          if (_ = accept(result.init)) initializers.unshift(_);\n      }\n      else if (_ = accept(result)) {\n          if (kind === \"field\") initializers.unshift(_);\n          else descriptor[key] = _;\n      }\n  }\n  if (target) Object.defineProperty(target, contextIn.name, descriptor);\n  done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n  var useValue = arguments.length > 2;\n  for (var i = 0; i < initializers.length; i++) {\n      value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n  }\n  return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n  return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n  if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n  return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n  if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n  return new (P || (P = Promise))(function (resolve, reject) {\n      function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n      function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n      function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n      step((generator = generator.apply(thisArg, _arguments || [])).next());\n  });\n}\n\nexport function __generator(thisArg, body) {\n  var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n  return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n  function verb(n) { return function (v) { return step([n, v]); }; }\n  function step(op) {\n      if (f) throw new TypeError(\"Generator is already executing.\");\n      while (g && (g = 0, op[0] && (_ = 0)), _) try {\n          if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n          if (y = 0, t) op = [op[0] & 2, t.value];\n          switch (op[0]) {\n              case 0: case 1: t = op; break;\n              case 4: _.label++; return { value: op[1], done: false };\n              case 5: _.label++; y = op[1]; op = [0]; continue;\n              case 7: op = _.ops.pop(); _.trys.pop(); continue;\n              default:\n                  if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n                  if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n                  if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n                  if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n                  if (t[2]) _.ops.pop();\n                  _.trys.pop(); continue;\n          }\n          op = body.call(thisArg, _);\n      } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n      if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n  }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n  if (k2 === undefined) k2 = k;\n  var desc = Object.getOwnPropertyDescriptor(m, k);\n  if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n      desc = { enumerable: true, get: function() { return m[k]; } };\n  }\n  Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n  if (k2 === undefined) k2 = k;\n  o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n  for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n  var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n  if (m) return m.call(o);\n  if (o && typeof o.length === \"number\") return {\n      next: function () {\n          if (o && i >= o.length) o = void 0;\n          return { value: o && o[i++], done: !o };\n      }\n  };\n  throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(o, n) {\n  var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n  if (!m) return o;\n  var i = m.call(o), r, ar = [], e;\n  try {\n      while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n  }\n  catch (error) { e = { error: error }; }\n  finally {\n      try {\n          if (r && !r.done && (m = i[\"return\"])) m.call(i);\n      }\n      finally { if (e) throw e.error; }\n  }\n  return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n  for (var ar = [], i = 0; i < arguments.length; i++)\n      ar = ar.concat(__read(arguments[i]));\n  return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n  for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n  for (var r = Array(s), k = 0, i = 0; i < il; i++)\n      for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n          r[k] = a[j];\n  return r;\n}\n\nexport function __spreadArray(to, from, pack) {\n  if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n      if (ar || !(i in from)) {\n          if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n          ar[i] = from[i];\n      }\n  }\n  return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nexport function __await(v) {\n  return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n  if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n  var g = generator.apply(thisArg, _arguments || []), i, q = [];\n  return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\n  function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\n  function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n  function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n  function fulfill(value) { resume(\"next\", value); }\n  function reject(value) { resume(\"throw\", value); }\n  function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n  var i, p;\n  return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n  function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n  if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n  var m = o[Symbol.asyncIterator], i;\n  return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n  function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n  function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n  if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n  return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n  Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n  o[\"default\"] = v;\n};\n\nexport function __importStar(mod) {\n  if (mod && mod.__esModule) return mod;\n  var result = {};\n  if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n  __setModuleDefault(result, mod);\n  return result;\n}\n\nexport function __importDefault(mod) {\n  return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n  if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n  if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n  return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n  if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n  if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n  if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n  return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n  if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n  return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport function __addDisposableResource(env, value, async) {\n  if (value !== null && value !== void 0) {\n    if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n    var dispose;\n    if (async) {\n        if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n        dispose = value[Symbol.asyncDispose];\n    }\n    if (dispose === void 0) {\n        if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n        dispose = value[Symbol.dispose];\n    }\n    if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n    env.stack.push({ value: value, dispose: dispose, async: async });\n  }\n  else if (async) {\n    env.stack.push({ async: true });\n  }\n  return value;\n}\n\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n  var e = new Error(message);\n  return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nexport function __disposeResources(env) {\n  function fail(e) {\n    env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n    env.hasError = true;\n  }\n  function next() {\n    while (env.stack.length) {\n      var rec = env.stack.pop();\n      try {\n        var result = rec.dispose && rec.dispose.call(rec.value);\n        if (rec.async) return Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n      }\n      catch (e) {\n          fail(e);\n      }\n    }\n    if (env.hasError) throw env.error;\n  }\n  return next();\n}\n\nexport default {\n  __extends,\n  __assign,\n  __rest,\n  __decorate,\n  __param,\n  __metadata,\n  __awaiter,\n  __generator,\n  __createBinding,\n  __exportStar,\n  __values,\n  __read,\n  __spread,\n  __spreadArrays,\n  __spreadArray,\n  __await,\n  __asyncGenerator,\n  __asyncDelegator,\n  __asyncValues,\n  __makeTemplateObject,\n  __importStar,\n  __importDefault,\n  __classPrivateFieldGet,\n  __classPrivateFieldSet,\n  __classPrivateFieldIn,\n  __addDisposableResource,\n  __disposeResources,\n};\n","export var COMMON_MIME_TYPES = new Map([\n    // https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types/Common_types\n    ['aac', 'audio/aac'],\n    ['abw', 'application/x-abiword'],\n    ['arc', 'application/x-freearc'],\n    ['avif', 'image/avif'],\n    ['avi', 'video/x-msvideo'],\n    ['azw', 'application/vnd.amazon.ebook'],\n    ['bin', 'application/octet-stream'],\n    ['bmp', 'image/bmp'],\n    ['bz', 'application/x-bzip'],\n    ['bz2', 'application/x-bzip2'],\n    ['cda', 'application/x-cdf'],\n    ['csh', 'application/x-csh'],\n    ['css', 'text/css'],\n    ['csv', 'text/csv'],\n    ['doc', 'application/msword'],\n    ['docx', 'application/vnd.openxmlformats-officedocument.wordprocessingml.document'],\n    ['eot', 'application/vnd.ms-fontobject'],\n    ['epub', 'application/epub+zip'],\n    ['gz', 'application/gzip'],\n    ['gif', 'image/gif'],\n    ['heic', 'image/heic'],\n    ['heif', 'image/heif'],\n    ['htm', 'text/html'],\n    ['html', 'text/html'],\n    ['ico', 'image/vnd.microsoft.icon'],\n    ['ics', 'text/calendar'],\n    ['jar', 'application/java-archive'],\n    ['jpeg', 'image/jpeg'],\n    ['jpg', 'image/jpeg'],\n    ['js', 'text/javascript'],\n    ['json', 'application/json'],\n    ['jsonld', 'application/ld+json'],\n    ['mid', 'audio/midi'],\n    ['midi', 'audio/midi'],\n    ['mjs', 'text/javascript'],\n    ['mp3', 'audio/mpeg'],\n    ['mp4', 'video/mp4'],\n    ['mpeg', 'video/mpeg'],\n    ['mpkg', 'application/vnd.apple.installer+xml'],\n    ['odp', 'application/vnd.oasis.opendocument.presentation'],\n    ['ods', 'application/vnd.oasis.opendocument.spreadsheet'],\n    ['odt', 'application/vnd.oasis.opendocument.text'],\n    ['oga', 'audio/ogg'],\n    ['ogv', 'video/ogg'],\n    ['ogx', 'application/ogg'],\n    ['opus', 'audio/opus'],\n    ['otf', 'font/otf'],\n    ['png', 'image/png'],\n    ['pdf', 'application/pdf'],\n    ['php', 'application/x-httpd-php'],\n    ['ppt', 'application/vnd.ms-powerpoint'],\n    ['pptx', 'application/vnd.openxmlformats-officedocument.presentationml.presentation'],\n    ['rar', 'application/vnd.rar'],\n    ['rtf', 'application/rtf'],\n    ['sh', 'application/x-sh'],\n    ['svg', 'image/svg+xml'],\n    ['swf', 'application/x-shockwave-flash'],\n    ['tar', 'application/x-tar'],\n    ['tif', 'image/tiff'],\n    ['tiff', 'image/tiff'],\n    ['ts', 'video/mp2t'],\n    ['ttf', 'font/ttf'],\n    ['txt', 'text/plain'],\n    ['vsd', 'application/vnd.visio'],\n    ['wav', 'audio/wav'],\n    ['weba', 'audio/webm'],\n    ['webm', 'video/webm'],\n    ['webp', 'image/webp'],\n    ['woff', 'font/woff'],\n    ['woff2', 'font/woff2'],\n    ['xhtml', 'application/xhtml+xml'],\n    ['xls', 'application/vnd.ms-excel'],\n    ['xlsx', 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'],\n    ['xml', 'application/xml'],\n    ['xul', 'application/vnd.mozilla.xul+xml'],\n    ['zip', 'application/zip'],\n    ['7z', 'application/x-7z-compressed'],\n    // Others\n    ['mkv', 'video/x-matroska'],\n    ['mov', 'video/quicktime'],\n    ['msg', 'application/vnd.ms-outlook']\n]);\nexport function toFileWithPath(file, path) {\n    var f = withMimeType(file);\n    if (typeof f.path !== 'string') { // on electron, path is already set to the absolute path\n        var webkitRelativePath = file.webkitRelativePath;\n        Object.defineProperty(f, 'path', {\n            value: typeof path === 'string'\n                ? path\n                // If <input webkitdirectory> is set,\n                // the File will have a {webkitRelativePath} property\n                // https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement/webkitdirectory\n                : typeof webkitRelativePath === 'string' && webkitRelativePath.length > 0\n                    ? webkitRelativePath\n                    : file.name,\n            writable: false,\n            configurable: false,\n            enumerable: true\n        });\n    }\n    return f;\n}\nfunction withMimeType(file) {\n    var name = file.name;\n    var hasExtension = name && name.lastIndexOf('.') !== -1;\n    if (hasExtension && !file.type) {\n        var ext = name.split('.')\n            .pop().toLowerCase();\n        var type = COMMON_MIME_TYPES.get(ext);\n        if (type) {\n            Object.defineProperty(file, 'type', {\n                value: type,\n                writable: false,\n                configurable: false,\n                enumerable: true\n            });\n        }\n    }\n    return file;\n}\n//# sourceMappingURL=file.js.map","import { __awaiter, __generator, __read, __spreadArray } from \"tslib\";\nimport { toFileWithPath } from './file';\nvar FILES_TO_IGNORE = [\n    // Thumbnail cache files for macOS and Windows\n    '.DS_Store',\n    'Thumbs.db' // Windows\n];\n/**\n * Convert a DragEvent's DataTrasfer object to a list of File objects\n * NOTE: If some of the items are folders,\n * everything will be flattened and placed in the same list but the paths will be kept as a {path} property.\n *\n * EXPERIMENTAL: A list of https://developer.mozilla.org/en-US/docs/Web/API/FileSystemHandle objects can also be passed as an arg\n * and a list of File objects will be returned.\n *\n * @param evt\n */\nexport function fromEvent(evt) {\n    return __awaiter(this, void 0, void 0, function () {\n        return __generator(this, function (_a) {\n            if (isObject(evt) && isDataTransfer(evt.dataTransfer)) {\n                return [2 /*return*/, getDataTransferFiles(evt.dataTransfer, evt.type)];\n            }\n            else if (isChangeEvt(evt)) {\n                return [2 /*return*/, getInputFiles(evt)];\n            }\n            else if (Array.isArray(evt) && evt.every(function (item) { return 'getFile' in item && typeof item.getFile === 'function'; })) {\n                return [2 /*return*/, getFsHandleFiles(evt)];\n            }\n            return [2 /*return*/, []];\n        });\n    });\n}\nfunction isDataTransfer(value) {\n    return isObject(value);\n}\nfunction isChangeEvt(value) {\n    return isObject(value) && isObject(value.target);\n}\nfunction isObject(v) {\n    return typeof v === 'object' && v !== null;\n}\nfunction getInputFiles(evt) {\n    return fromList(evt.target.files).map(function (file) { return toFileWithPath(file); });\n}\n// Ee expect each handle to be https://developer.mozilla.org/en-US/docs/Web/API/FileSystemFileHandle\nfunction getFsHandleFiles(handles) {\n    return __awaiter(this, void 0, void 0, function () {\n        var files;\n        return __generator(this, function (_a) {\n            switch (_a.label) {\n                case 0: return [4 /*yield*/, Promise.all(handles.map(function (h) { return h.getFile(); }))];\n                case 1:\n                    files = _a.sent();\n                    return [2 /*return*/, files.map(function (file) { return toFileWithPath(file); })];\n            }\n        });\n    });\n}\nfunction getDataTransferFiles(dt, type) {\n    return __awaiter(this, void 0, void 0, function () {\n        var items, files;\n        return __generator(this, function (_a) {\n            switch (_a.label) {\n                case 0:\n                    if (!dt.items) return [3 /*break*/, 2];\n                    items = fromList(dt.items)\n                        .filter(function (item) { return item.kind === 'file'; });\n                    // According to https://html.spec.whatwg.org/multipage/dnd.html#dndevents,\n                    // only 'dragstart' and 'drop' has access to the data (source node)\n                    if (type !== 'drop') {\n                        return [2 /*return*/, items];\n                    }\n                    return [4 /*yield*/, Promise.all(items.map(toFilePromises))];\n                case 1:\n                    files = _a.sent();\n                    return [2 /*return*/, noIgnoredFiles(flatten(files))];\n                case 2: return [2 /*return*/, noIgnoredFiles(fromList(dt.files)\n                        .map(function (file) { return toFileWithPath(file); }))];\n            }\n        });\n    });\n}\nfunction noIgnoredFiles(files) {\n    return files.filter(function (file) { return FILES_TO_IGNORE.indexOf(file.name) === -1; });\n}\n// IE11 does not support Array.from()\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/from#Browser_compatibility\n// https://developer.mozilla.org/en-US/docs/Web/API/FileList\n// https://developer.mozilla.org/en-US/docs/Web/API/DataTransferItemList\nfunction fromList(items) {\n    if (items === null) {\n        return [];\n    }\n    var files = [];\n    // tslint:disable: prefer-for-of\n    for (var i = 0; i < items.length; i++) {\n        var file = items[i];\n        files.push(file);\n    }\n    return files;\n}\n// https://developer.mozilla.org/en-US/docs/Web/API/DataTransferItem\nfunction toFilePromises(item) {\n    if (typeof item.webkitGetAsEntry !== 'function') {\n        return fromDataTransferItem(item);\n    }\n    var entry = item.webkitGetAsEntry();\n    // Safari supports dropping an image node from a different window and can be retrieved using\n    // the DataTransferItem.getAsFile() API\n    // NOTE: FileSystemEntry.file() throws if trying to get the file\n    if (entry && entry.isDirectory) {\n        return fromDirEntry(entry);\n    }\n    return fromDataTransferItem(item);\n}\nfunction flatten(items) {\n    return items.reduce(function (acc, files) { return __spreadArray(__spreadArray([], __read(acc), false), __read((Array.isArray(files) ? flatten(files) : [files])), false); }, []);\n}\nfunction fromDataTransferItem(item) {\n    var file = item.getAsFile();\n    if (!file) {\n        return Promise.reject(\"\".concat(item, \" is not a File\"));\n    }\n    var fwp = toFileWithPath(file);\n    return Promise.resolve(fwp);\n}\n// https://developer.mozilla.org/en-US/docs/Web/API/FileSystemEntry\nfunction fromEntry(entry) {\n    return __awaiter(this, void 0, void 0, function () {\n        return __generator(this, function (_a) {\n            return [2 /*return*/, entry.isDirectory ? fromDirEntry(entry) : fromFileEntry(entry)];\n        });\n    });\n}\n// https://developer.mozilla.org/en-US/docs/Web/API/FileSystemDirectoryEntry\nfunction fromDirEntry(entry) {\n    var reader = entry.createReader();\n    return new Promise(function (resolve, reject) {\n        var entries = [];\n        function readEntries() {\n            var _this = this;\n            // https://developer.mozilla.org/en-US/docs/Web/API/FileSystemDirectoryEntry/createReader\n            // https://developer.mozilla.org/en-US/docs/Web/API/FileSystemDirectoryReader/readEntries\n            reader.readEntries(function (batch) { return __awaiter(_this, void 0, void 0, function () {\n                var files, err_1, items;\n                return __generator(this, function (_a) {\n                    switch (_a.label) {\n                        case 0:\n                            if (!!batch.length) return [3 /*break*/, 5];\n                            _a.label = 1;\n                        case 1:\n                            _a.trys.push([1, 3, , 4]);\n                            return [4 /*yield*/, Promise.all(entries)];\n                        case 2:\n                            files = _a.sent();\n                            resolve(files);\n                            return [3 /*break*/, 4];\n                        case 3:\n                            err_1 = _a.sent();\n                            reject(err_1);\n                            return [3 /*break*/, 4];\n                        case 4: return [3 /*break*/, 6];\n                        case 5:\n                            items = Promise.all(batch.map(fromEntry));\n                            entries.push(items);\n                            // Continue reading\n                            readEntries();\n                            _a.label = 6;\n                        case 6: return [2 /*return*/];\n                    }\n                });\n            }); }, function (err) {\n                reject(err);\n            });\n        }\n        readEntries();\n    });\n}\n// https://developer.mozilla.org/en-US/docs/Web/API/FileSystemFileEntry\nfunction fromFileEntry(entry) {\n    return __awaiter(this, void 0, void 0, function () {\n        return __generator(this, function (_a) {\n            return [2 /*return*/, new Promise(function (resolve, reject) {\n                    entry.file(function (file) {\n                        var fwp = toFileWithPath(file, entry.fullPath);\n                        resolve(fwp);\n                    }, function (err) {\n                        reject(err);\n                    });\n                })];\n        });\n    });\n}\n//# sourceMappingURL=file-selector.js.map","function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nimport accepts from \"attr-accept\"; // Error codes\n\nexport var FILE_INVALID_TYPE = \"file-invalid-type\";\nexport var FILE_TOO_LARGE = \"file-too-large\";\nexport var FILE_TOO_SMALL = \"file-too-small\";\nexport var TOO_MANY_FILES = \"too-many-files\";\nexport var ErrorCode = {\n  FileInvalidType: FILE_INVALID_TYPE,\n  FileTooLarge: FILE_TOO_LARGE,\n  FileTooSmall: FILE_TOO_SMALL,\n  TooManyFiles: TOO_MANY_FILES\n}; // File Errors\n\nexport var getInvalidTypeRejectionErr = function getInvalidTypeRejectionErr(accept) {\n  accept = Array.isArray(accept) && accept.length === 1 ? accept[0] : accept;\n  var messageSuffix = Array.isArray(accept) ? \"one of \".concat(accept.join(\", \")) : accept;\n  return {\n    code: FILE_INVALID_TYPE,\n    message: \"File type must be \".concat(messageSuffix)\n  };\n};\nexport var getTooLargeRejectionErr = function getTooLargeRejectionErr(maxSize) {\n  return {\n    code: FILE_TOO_LARGE,\n    message: \"File is larger than \".concat(maxSize, \" \").concat(maxSize === 1 ? \"byte\" : \"bytes\")\n  };\n};\nexport var getTooSmallRejectionErr = function getTooSmallRejectionErr(minSize) {\n  return {\n    code: FILE_TOO_SMALL,\n    message: \"File is smaller than \".concat(minSize, \" \").concat(minSize === 1 ? \"byte\" : \"bytes\")\n  };\n};\nexport var TOO_MANY_FILES_REJECTION = {\n  code: TOO_MANY_FILES,\n  message: \"Too many files\"\n}; // Firefox versions prior to 53 return a bogus MIME type for every file drag, so dragovers with\n// that MIME type will always be accepted\n\nexport function fileAccepted(file, accept) {\n  var isAcceptable = file.type === \"application/x-moz-file\" || accepts(file, accept);\n  return [isAcceptable, isAcceptable ? null : getInvalidTypeRejectionErr(accept)];\n}\nexport function fileMatchSize(file, minSize, maxSize) {\n  if (isDefined(file.size)) {\n    if (isDefined(minSize) && isDefined(maxSize)) {\n      if (file.size > maxSize) return [false, getTooLargeRejectionErr(maxSize)];\n      if (file.size < minSize) return [false, getTooSmallRejectionErr(minSize)];\n    } else if (isDefined(minSize) && file.size < minSize) return [false, getTooSmallRejectionErr(minSize)];else if (isDefined(maxSize) && file.size > maxSize) return [false, getTooLargeRejectionErr(maxSize)];\n  }\n\n  return [true, null];\n}\n\nfunction isDefined(value) {\n  return value !== undefined && value !== null;\n}\n/**\n *\n * @param {object} options\n * @param {File[]} options.files\n * @param {string|string[]} [options.accept]\n * @param {number} [options.minSize]\n * @param {number} [options.maxSize]\n * @param {boolean} [options.multiple]\n * @param {number} [options.maxFiles]\n * @param {(f: File) => FileError|FileError[]|null} [options.validator]\n * @returns\n */\n\n\nexport function allFilesAccepted(_ref) {\n  var files = _ref.files,\n      accept = _ref.accept,\n      minSize = _ref.minSize,\n      maxSize = _ref.maxSize,\n      multiple = _ref.multiple,\n      maxFiles = _ref.maxFiles,\n      validator = _ref.validator;\n\n  if (!multiple && files.length > 1 || multiple && maxFiles >= 1 && files.length > maxFiles) {\n    return false;\n  }\n\n  return files.every(function (file) {\n    var _fileAccepted = fileAccepted(file, accept),\n        _fileAccepted2 = _slicedToArray(_fileAccepted, 1),\n        accepted = _fileAccepted2[0];\n\n    var _fileMatchSize = fileMatchSize(file, minSize, maxSize),\n        _fileMatchSize2 = _slicedToArray(_fileMatchSize, 1),\n        sizeMatch = _fileMatchSize2[0];\n\n    var customErrors = validator ? validator(file) : null;\n    return accepted && sizeMatch && !customErrors;\n  });\n} // React's synthetic events has event.isPropagationStopped,\n// but to remain compatibility with other libs (Preact) fall back\n// to check event.cancelBubble\n\nexport function isPropagationStopped(event) {\n  if (typeof event.isPropagationStopped === \"function\") {\n    return event.isPropagationStopped();\n  } else if (typeof event.cancelBubble !== \"undefined\") {\n    return event.cancelBubble;\n  }\n\n  return false;\n}\nexport function isEvtWithFiles(event) {\n  if (!event.dataTransfer) {\n    return !!event.target && !!event.target.files;\n  } // https://developer.mozilla.org/en-US/docs/Web/API/DataTransfer/types\n  // https://developer.mozilla.org/en-US/docs/Web/API/HTML_Drag_and_Drop_API/Recommended_drag_types#file\n\n\n  return Array.prototype.some.call(event.dataTransfer.types, function (type) {\n    return type === \"Files\" || type === \"application/x-moz-file\";\n  });\n}\nexport function isKindFile(item) {\n  return _typeof(item) === \"object\" && item !== null && item.kind === \"file\";\n} // allow the entire document to be a drag target\n\nexport function onDocumentDragOver(event) {\n  event.preventDefault();\n}\n\nfunction isIe(userAgent) {\n  return userAgent.indexOf(\"MSIE\") !== -1 || userAgent.indexOf(\"Trident/\") !== -1;\n}\n\nfunction isEdge(userAgent) {\n  return userAgent.indexOf(\"Edge/\") !== -1;\n}\n\nexport function isIeOrEdge() {\n  var userAgent = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : window.navigator.userAgent;\n  return isIe(userAgent) || isEdge(userAgent);\n}\n/**\n * This is intended to be used to compose event handlers\n * They are executed in order until one of them calls `event.isPropagationStopped()`.\n * Note that the check is done on the first invoke too,\n * meaning that if propagation was stopped before invoking the fns,\n * no handlers will be executed.\n *\n * @param {Function} fns the event hanlder functions\n * @return {Function} the event handler to add to an element\n */\n\nexport function composeEventHandlers() {\n  for (var _len = arguments.length, fns = new Array(_len), _key = 0; _key < _len; _key++) {\n    fns[_key] = arguments[_key];\n  }\n\n  return function (event) {\n    for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n      args[_key2 - 1] = arguments[_key2];\n    }\n\n    return fns.some(function (fn) {\n      if (!isPropagationStopped(event) && fn) {\n        fn.apply(void 0, [event].concat(args));\n      }\n\n      return isPropagationStopped(event);\n    });\n  };\n}\n/**\n * canUseFileSystemAccessAPI checks if the [File System Access API](https://developer.mozilla.org/en-US/docs/Web/API/File_System_Access_API)\n * is supported by the browser.\n * @returns {boolean}\n */\n\nexport function canUseFileSystemAccessAPI() {\n  return \"showOpenFilePicker\" in window;\n}\n/**\n * Convert the `{accept}` dropzone prop to the\n * `{types}` option for https://developer.mozilla.org/en-US/docs/Web/API/window/showOpenFilePicker\n *\n * @param {AcceptProp} accept\n * @returns {{accept: string[]}[]}\n */\n\nexport function pickerOptionsFromAccept(accept) {\n  if (isDefined(accept)) {\n    var acceptForPicker = Object.entries(accept).filter(function (_ref2) {\n      var _ref3 = _slicedToArray(_ref2, 2),\n          mimeType = _ref3[0],\n          ext = _ref3[1];\n\n      var ok = true;\n\n      if (!isMIMEType(mimeType)) {\n        console.warn(\"Skipped \\\"\".concat(mimeType, \"\\\" because it is not a valid MIME type. Check https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types/Common_types for a list of valid MIME types.\"));\n        ok = false;\n      }\n\n      if (!Array.isArray(ext) || !ext.every(isExt)) {\n        console.warn(\"Skipped \\\"\".concat(mimeType, \"\\\" because an invalid file extension was provided.\"));\n        ok = false;\n      }\n\n      return ok;\n    }).reduce(function (agg, _ref4) {\n      var _ref5 = _slicedToArray(_ref4, 2),\n          mimeType = _ref5[0],\n          ext = _ref5[1];\n\n      return _objectSpread(_objectSpread({}, agg), {}, _defineProperty({}, mimeType, ext));\n    }, {});\n    return [{\n      // description is required due to https://crbug.com/1264708\n      description: \"Files\",\n      accept: acceptForPicker\n    }];\n  }\n\n  return accept;\n}\n/**\n * Convert the `{accept}` dropzone prop to an array of MIME types/extensions.\n * @param {AcceptProp} accept\n * @returns {string}\n */\n\nexport function acceptPropAsAcceptAttr(accept) {\n  if (isDefined(accept)) {\n    return Object.entries(accept).reduce(function (a, _ref6) {\n      var _ref7 = _slicedToArray(_ref6, 2),\n          mimeType = _ref7[0],\n          ext = _ref7[1];\n\n      return [].concat(_toConsumableArray(a), [mimeType], _toConsumableArray(ext));\n    }, []) // Silently discard invalid entries as pickerOptionsFromAccept warns about these\n    .filter(function (v) {\n      return isMIMEType(v) || isExt(v);\n    }).join(\",\");\n  }\n\n  return undefined;\n}\n/**\n * Check if v is an exception caused by aborting a request (e.g window.showOpenFilePicker()).\n *\n * See https://developer.mozilla.org/en-US/docs/Web/API/DOMException.\n * @param {any} v\n * @returns {boolean} True if v is an abort exception.\n */\n\nexport function isAbort(v) {\n  return v instanceof DOMException && (v.name === \"AbortError\" || v.code === v.ABORT_ERR);\n}\n/**\n * Check if v is a security error.\n *\n * See https://developer.mozilla.org/en-US/docs/Web/API/DOMException.\n * @param {any} v\n * @returns {boolean} True if v is a security error.\n */\n\nexport function isSecurityError(v) {\n  return v instanceof DOMException && (v.name === \"SecurityError\" || v.code === v.SECURITY_ERR);\n}\n/**\n * Check if v is a MIME type string.\n *\n * See accepted format: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/file#unique_file_type_specifiers.\n *\n * @param {string} v\n */\n\nexport function isMIMEType(v) {\n  return v === \"audio/*\" || v === \"video/*\" || v === \"image/*\" || v === \"text/*\" || /\\w+\\/[-+.\\w]+/g.test(v);\n}\n/**\n * Check if v is a file extension.\n * @param {string} v\n */\n\nexport function isExt(v) {\n  return /^.*\\.[\\w]+$/.test(v);\n}\n/**\n * @typedef {Object.<string, string[]>} AcceptProp\n */\n\n/**\n * @typedef {object} FileError\n * @property {string} message\n * @property {ErrorCode|string} code\n */\n\n/**\n * @typedef {\"file-invalid-type\"|\"file-too-large\"|\"file-too-small\"|\"too-many-files\"} ErrorCode\n */","var _excluded = [\"children\"],\n    _excluded2 = [\"open\"],\n    _excluded3 = [\"refKey\", \"role\", \"onKeyDown\", \"onFocus\", \"onBlur\", \"onClick\", \"onDragEnter\", \"onDragOver\", \"onDragLeave\", \"onDrop\"],\n    _excluded4 = [\"refKey\", \"onChange\", \"onClick\"];\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\n/* eslint prefer-template: 0 */\nimport React, { forwardRef, Fragment, useCallback, useEffect, useImperativeHandle, useMemo, useReducer, useRef } from \"react\";\nimport PropTypes from \"prop-types\";\nimport { fromEvent } from \"file-selector\";\nimport { acceptPropAsAcceptAttr, allFilesAccepted, composeEventHandlers, fileAccepted, fileMatchSize, canUseFileSystemAccessAPI, isAbort, isEvtWithFiles, isIeOrEdge, isPropagationStopped, isSecurityError, onDocumentDragOver, pickerOptionsFromAccept, TOO_MANY_FILES_REJECTION } from \"./utils/index\";\n/**\n * Convenience wrapper component for the `useDropzone` hook\n *\n * ```jsx\n * <Dropzone>\n *   {({getRootProps, getInputProps}) => (\n *     <div {...getRootProps()}>\n *       <input {...getInputProps()} />\n *       <p>Drag 'n' drop some files here, or click to select files</p>\n *     </div>\n *   )}\n * </Dropzone>\n * ```\n */\n\nvar Dropzone = /*#__PURE__*/forwardRef(function (_ref, ref) {\n  var children = _ref.children,\n      params = _objectWithoutProperties(_ref, _excluded);\n\n  var _useDropzone = useDropzone(params),\n      open = _useDropzone.open,\n      props = _objectWithoutProperties(_useDropzone, _excluded2);\n\n  useImperativeHandle(ref, function () {\n    return {\n      open: open\n    };\n  }, [open]); // TODO: Figure out why react-styleguidist cannot create docs if we don't return a jsx element\n\n  return /*#__PURE__*/React.createElement(Fragment, null, children(_objectSpread(_objectSpread({}, props), {}, {\n    open: open\n  })));\n});\nDropzone.displayName = \"Dropzone\"; // Add default props for react-docgen\n\nvar defaultProps = {\n  disabled: false,\n  getFilesFromEvent: fromEvent,\n  maxSize: Infinity,\n  minSize: 0,\n  multiple: true,\n  maxFiles: 0,\n  preventDropOnDocument: true,\n  noClick: false,\n  noKeyboard: false,\n  noDrag: false,\n  noDragEventsBubbling: false,\n  validator: null,\n  useFsAccessApi: true,\n  autoFocus: false\n};\nDropzone.defaultProps = defaultProps;\nDropzone.propTypes = {\n  /**\n   * Render function that exposes the dropzone state and prop getter fns\n   *\n   * @param {object} params\n   * @param {Function} params.getRootProps Returns the props you should apply to the root drop container you render\n   * @param {Function} params.getInputProps Returns the props you should apply to hidden file input you render\n   * @param {Function} params.open Open the native file selection dialog\n   * @param {boolean} params.isFocused Dropzone area is in focus\n   * @param {boolean} params.isFileDialogActive File dialog is opened\n   * @param {boolean} params.isDragActive Active drag is in progress\n   * @param {boolean} params.isDragAccept Dragged files are accepted\n   * @param {boolean} params.isDragReject Some dragged files are rejected\n   * @param {File[]} params.acceptedFiles Accepted files\n   * @param {FileRejection[]} params.fileRejections Rejected files and why they were rejected\n   */\n  children: PropTypes.func,\n\n  /**\n   * Set accepted file types.\n   * Checkout https://developer.mozilla.org/en-US/docs/Web/API/window/showOpenFilePicker types option for more information.\n   * Keep in mind that mime type determination is not reliable across platforms. CSV files,\n   * for example, are reported as text/plain under macOS but as application/vnd.ms-excel under\n   * Windows. In some cases there might not be a mime type set at all (https://github.com/react-dropzone/react-dropzone/issues/276).\n   */\n  accept: PropTypes.objectOf(PropTypes.arrayOf(PropTypes.string)),\n\n  /**\n   * Allow drag 'n' drop (or selection from the file dialog) of multiple files\n   */\n  multiple: PropTypes.bool,\n\n  /**\n   * If false, allow dropped items to take over the current browser window\n   */\n  preventDropOnDocument: PropTypes.bool,\n\n  /**\n   * If true, disables click to open the native file selection dialog\n   */\n  noClick: PropTypes.bool,\n\n  /**\n   * If true, disables SPACE/ENTER to open the native file selection dialog.\n   * Note that it also stops tracking the focus state.\n   */\n  noKeyboard: PropTypes.bool,\n\n  /**\n   * If true, disables drag 'n' drop\n   */\n  noDrag: PropTypes.bool,\n\n  /**\n   * If true, stops drag event propagation to parents\n   */\n  noDragEventsBubbling: PropTypes.bool,\n\n  /**\n   * Minimum file size (in bytes)\n   */\n  minSize: PropTypes.number,\n\n  /**\n   * Maximum file size (in bytes)\n   */\n  maxSize: PropTypes.number,\n\n  /**\n   * Maximum accepted number of files\n   * The default value is 0 which means there is no limitation to how many files are accepted.\n   */\n  maxFiles: PropTypes.number,\n\n  /**\n   * Enable/disable the dropzone\n   */\n  disabled: PropTypes.bool,\n\n  /**\n   * Use this to provide a custom file aggregator\n   *\n   * @param {(DragEvent|Event)} event A drag event or input change event (if files were selected via the file dialog)\n   */\n  getFilesFromEvent: PropTypes.func,\n\n  /**\n   * Cb for when closing the file dialog with no selection\n   */\n  onFileDialogCancel: PropTypes.func,\n\n  /**\n   * Cb for when opening the file dialog\n   */\n  onFileDialogOpen: PropTypes.func,\n\n  /**\n   * Set to true to use the https://developer.mozilla.org/en-US/docs/Web/API/File_System_Access_API\n   * to open the file picker instead of using an `<input type=\"file\">` click event.\n   */\n  useFsAccessApi: PropTypes.bool,\n\n  /**\n   * Set to true to focus the root element on render\n   */\n  autoFocus: PropTypes.bool,\n\n  /**\n   * Cb for when the `dragenter` event occurs.\n   *\n   * @param {DragEvent} event\n   */\n  onDragEnter: PropTypes.func,\n\n  /**\n   * Cb for when the `dragleave` event occurs\n   *\n   * @param {DragEvent} event\n   */\n  onDragLeave: PropTypes.func,\n\n  /**\n   * Cb for when the `dragover` event occurs\n   *\n   * @param {DragEvent} event\n   */\n  onDragOver: PropTypes.func,\n\n  /**\n   * Cb for when the `drop` event occurs.\n   * Note that this callback is invoked after the `getFilesFromEvent` callback is done.\n   *\n   * Files are accepted or rejected based on the `accept`, `multiple`, `minSize` and `maxSize` props.\n   * `accept` must be a valid [MIME type](http://www.iana.org/assignments/media-types/media-types.xhtml) according to [input element specification](https://www.w3.org/wiki/HTML/Elements/input/file) or a valid file extension.\n   * If `multiple` is set to false and additional files are dropped,\n   * all files besides the first will be rejected.\n   * Any file which does not have a size in the [`minSize`, `maxSize`] range, will be rejected as well.\n   *\n   * Note that the `onDrop` callback will always be invoked regardless if the dropped files were accepted or rejected.\n   * If you'd like to react to a specific scenario, use the `onDropAccepted`/`onDropRejected` props.\n   *\n   * `onDrop` will provide you with an array of [File](https://developer.mozilla.org/en-US/docs/Web/API/File) objects which you can then process and send to a server.\n   * For example, with [SuperAgent](https://github.com/visionmedia/superagent) as a http/ajax library:\n   *\n   * ```js\n   * function onDrop(acceptedFiles) {\n   *   const req = request.post('/upload')\n   *   acceptedFiles.forEach(file => {\n   *     req.attach(file.name, file)\n   *   })\n   *   req.end(callback)\n   * }\n   * ```\n   *\n   * @param {File[]} acceptedFiles\n   * @param {FileRejection[]} fileRejections\n   * @param {(DragEvent|Event)} event A drag event or input change event (if files were selected via the file dialog)\n   */\n  onDrop: PropTypes.func,\n\n  /**\n   * Cb for when the `drop` event occurs.\n   * Note that if no files are accepted, this callback is not invoked.\n   *\n   * @param {File[]} files\n   * @param {(DragEvent|Event)} event\n   */\n  onDropAccepted: PropTypes.func,\n\n  /**\n   * Cb for when the `drop` event occurs.\n   * Note that if no files are rejected, this callback is not invoked.\n   *\n   * @param {FileRejection[]} fileRejections\n   * @param {(DragEvent|Event)} event\n   */\n  onDropRejected: PropTypes.func,\n\n  /**\n   * Cb for when there's some error from any of the promises.\n   *\n   * @param {Error} error\n   */\n  onError: PropTypes.func,\n\n  /**\n   * Custom validation function. It must return null if there's no errors.\n   * @param {File} file\n   * @returns {FileError|FileError[]|null}\n   */\n  validator: PropTypes.func\n};\nexport default Dropzone;\n/**\n * A function that is invoked for the `dragenter`,\n * `dragover` and `dragleave` events.\n * It is not invoked if the items are not files (such as link, text, etc.).\n *\n * @callback dragCb\n * @param {DragEvent} event\n */\n\n/**\n * A function that is invoked for the `drop` or input change event.\n * It is not invoked if the items are not files (such as link, text, etc.).\n *\n * @callback dropCb\n * @param {File[]} acceptedFiles List of accepted files\n * @param {FileRejection[]} fileRejections List of rejected files and why they were rejected\n * @param {(DragEvent|Event)} event A drag event or input change event (if files were selected via the file dialog)\n */\n\n/**\n * A function that is invoked for the `drop` or input change event.\n * It is not invoked if the items are files (such as link, text, etc.).\n *\n * @callback dropAcceptedCb\n * @param {File[]} files List of accepted files that meet the given criteria\n * (`accept`, `multiple`, `minSize`, `maxSize`)\n * @param {(DragEvent|Event)} event A drag event or input change event (if files were selected via the file dialog)\n */\n\n/**\n * A function that is invoked for the `drop` or input change event.\n *\n * @callback dropRejectedCb\n * @param {File[]} files List of rejected files that do not meet the given criteria\n * (`accept`, `multiple`, `minSize`, `maxSize`)\n * @param {(DragEvent|Event)} event A drag event or input change event (if files were selected via the file dialog)\n */\n\n/**\n * A function that is used aggregate files,\n * in a asynchronous fashion, from drag or input change events.\n *\n * @callback getFilesFromEvent\n * @param {(DragEvent|Event)} event A drag event or input change event (if files were selected via the file dialog)\n * @returns {(File[]|Promise<File[]>)}\n */\n\n/**\n * An object with the current dropzone state.\n *\n * @typedef {object} DropzoneState\n * @property {boolean} isFocused Dropzone area is in focus\n * @property {boolean} isFileDialogActive File dialog is opened\n * @property {boolean} isDragActive Active drag is in progress\n * @property {boolean} isDragAccept Dragged files are accepted\n * @property {boolean} isDragReject Some dragged files are rejected\n * @property {File[]} acceptedFiles Accepted files\n * @property {FileRejection[]} fileRejections Rejected files and why they were rejected\n */\n\n/**\n * An object with the dropzone methods.\n *\n * @typedef {object} DropzoneMethods\n * @property {Function} getRootProps Returns the props you should apply to the root drop container you render\n * @property {Function} getInputProps Returns the props you should apply to hidden file input you render\n * @property {Function} open Open the native file selection dialog\n */\n\nvar initialState = {\n  isFocused: false,\n  isFileDialogActive: false,\n  isDragActive: false,\n  isDragAccept: false,\n  isDragReject: false,\n  acceptedFiles: [],\n  fileRejections: []\n};\n/**\n * A React hook that creates a drag 'n' drop area.\n *\n * ```jsx\n * function MyDropzone(props) {\n *   const {getRootProps, getInputProps} = useDropzone({\n *     onDrop: acceptedFiles => {\n *       // do something with the File objects, e.g. upload to some server\n *     }\n *   });\n *   return (\n *     <div {...getRootProps()}>\n *       <input {...getInputProps()} />\n *       <p>Drag and drop some files here, or click to select files</p>\n *     </div>\n *   )\n * }\n * ```\n *\n * @function useDropzone\n *\n * @param {object} props\n * @param {import(\"./utils\").AcceptProp} [props.accept] Set accepted file types.\n * Checkout https://developer.mozilla.org/en-US/docs/Web/API/window/showOpenFilePicker types option for more information.\n * Keep in mind that mime type determination is not reliable across platforms. CSV files,\n * for example, are reported as text/plain under macOS but as application/vnd.ms-excel under\n * Windows. In some cases there might not be a mime type set at all (https://github.com/react-dropzone/react-dropzone/issues/276).\n * @param {boolean} [props.multiple=true] Allow drag 'n' drop (or selection from the file dialog) of multiple files\n * @param {boolean} [props.preventDropOnDocument=true] If false, allow dropped items to take over the current browser window\n * @param {boolean} [props.noClick=false] If true, disables click to open the native file selection dialog\n * @param {boolean} [props.noKeyboard=false] If true, disables SPACE/ENTER to open the native file selection dialog.\n * Note that it also stops tracking the focus state.\n * @param {boolean} [props.noDrag=false] If true, disables drag 'n' drop\n * @param {boolean} [props.noDragEventsBubbling=false] If true, stops drag event propagation to parents\n * @param {number} [props.minSize=0] Minimum file size (in bytes)\n * @param {number} [props.maxSize=Infinity] Maximum file size (in bytes)\n * @param {boolean} [props.disabled=false] Enable/disable the dropzone\n * @param {getFilesFromEvent} [props.getFilesFromEvent] Use this to provide a custom file aggregator\n * @param {Function} [props.onFileDialogCancel] Cb for when closing the file dialog with no selection\n * @param {boolean} [props.useFsAccessApi] Set to true to use the https://developer.mozilla.org/en-US/docs/Web/API/File_System_Access_API\n * to open the file picker instead of using an `<input type=\"file\">` click event.\n * @param {boolean} autoFocus Set to true to auto focus the root element.\n * @param {Function} [props.onFileDialogOpen] Cb for when opening the file dialog\n * @param {dragCb} [props.onDragEnter] Cb for when the `dragenter` event occurs.\n * @param {dragCb} [props.onDragLeave] Cb for when the `dragleave` event occurs\n * @param {dragCb} [props.onDragOver] Cb for when the `dragover` event occurs\n * @param {dropCb} [props.onDrop] Cb for when the `drop` event occurs.\n * Note that this callback is invoked after the `getFilesFromEvent` callback is done.\n *\n * Files are accepted or rejected based on the `accept`, `multiple`, `minSize` and `maxSize` props.\n * `accept` must be an object with keys as a valid [MIME type](http://www.iana.org/assignments/media-types/media-types.xhtml) according to [input element specification](https://www.w3.org/wiki/HTML/Elements/input/file) and the value an array of file extensions (optional).\n * If `multiple` is set to false and additional files are dropped,\n * all files besides the first will be rejected.\n * Any file which does not have a size in the [`minSize`, `maxSize`] range, will be rejected as well.\n *\n * Note that the `onDrop` callback will always be invoked regardless if the dropped files were accepted or rejected.\n * If you'd like to react to a specific scenario, use the `onDropAccepted`/`onDropRejected` props.\n *\n * `onDrop` will provide you with an array of [File](https://developer.mozilla.org/en-US/docs/Web/API/File) objects which you can then process and send to a server.\n * For example, with [SuperAgent](https://github.com/visionmedia/superagent) as a http/ajax library:\n *\n * ```js\n * function onDrop(acceptedFiles) {\n *   const req = request.post('/upload')\n *   acceptedFiles.forEach(file => {\n *     req.attach(file.name, file)\n *   })\n *   req.end(callback)\n * }\n * ```\n * @param {dropAcceptedCb} [props.onDropAccepted]\n * @param {dropRejectedCb} [props.onDropRejected]\n * @param {(error: Error) => void} [props.onError]\n *\n * @returns {DropzoneState & DropzoneMethods}\n */\n\nexport function useDropzone() {\n  var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n  var _defaultProps$props = _objectSpread(_objectSpread({}, defaultProps), props),\n      accept = _defaultProps$props.accept,\n      disabled = _defaultProps$props.disabled,\n      getFilesFromEvent = _defaultProps$props.getFilesFromEvent,\n      maxSize = _defaultProps$props.maxSize,\n      minSize = _defaultProps$props.minSize,\n      multiple = _defaultProps$props.multiple,\n      maxFiles = _defaultProps$props.maxFiles,\n      onDragEnter = _defaultProps$props.onDragEnter,\n      onDragLeave = _defaultProps$props.onDragLeave,\n      onDragOver = _defaultProps$props.onDragOver,\n      onDrop = _defaultProps$props.onDrop,\n      onDropAccepted = _defaultProps$props.onDropAccepted,\n      onDropRejected = _defaultProps$props.onDropRejected,\n      onFileDialogCancel = _defaultProps$props.onFileDialogCancel,\n      onFileDialogOpen = _defaultProps$props.onFileDialogOpen,\n      useFsAccessApi = _defaultProps$props.useFsAccessApi,\n      autoFocus = _defaultProps$props.autoFocus,\n      preventDropOnDocument = _defaultProps$props.preventDropOnDocument,\n      noClick = _defaultProps$props.noClick,\n      noKeyboard = _defaultProps$props.noKeyboard,\n      noDrag = _defaultProps$props.noDrag,\n      noDragEventsBubbling = _defaultProps$props.noDragEventsBubbling,\n      onError = _defaultProps$props.onError,\n      validator = _defaultProps$props.validator;\n\n  var acceptAttr = useMemo(function () {\n    return acceptPropAsAcceptAttr(accept);\n  }, [accept]);\n  var pickerTypes = useMemo(function () {\n    return pickerOptionsFromAccept(accept);\n  }, [accept]);\n  var onFileDialogOpenCb = useMemo(function () {\n    return typeof onFileDialogOpen === \"function\" ? onFileDialogOpen : noop;\n  }, [onFileDialogOpen]);\n  var onFileDialogCancelCb = useMemo(function () {\n    return typeof onFileDialogCancel === \"function\" ? onFileDialogCancel : noop;\n  }, [onFileDialogCancel]);\n  /**\n   * @constant\n   * @type {React.MutableRefObject<HTMLElement>}\n   */\n\n  var rootRef = useRef(null);\n  var inputRef = useRef(null);\n\n  var _useReducer = useReducer(reducer, initialState),\n      _useReducer2 = _slicedToArray(_useReducer, 2),\n      state = _useReducer2[0],\n      dispatch = _useReducer2[1];\n\n  var isFocused = state.isFocused,\n      isFileDialogActive = state.isFileDialogActive;\n  var fsAccessApiWorksRef = useRef(typeof window !== \"undefined\" && window.isSecureContext && useFsAccessApi && canUseFileSystemAccessAPI()); // Update file dialog active state when the window is focused on\n\n  var onWindowFocus = function onWindowFocus() {\n    // Execute the timeout only if the file dialog is opened in the browser\n    if (!fsAccessApiWorksRef.current && isFileDialogActive) {\n      setTimeout(function () {\n        if (inputRef.current) {\n          var files = inputRef.current.files;\n\n          if (!files.length) {\n            dispatch({\n              type: \"closeDialog\"\n            });\n            onFileDialogCancelCb();\n          }\n        }\n      }, 300);\n    }\n  };\n\n  useEffect(function () {\n    window.addEventListener(\"focus\", onWindowFocus, false);\n    return function () {\n      window.removeEventListener(\"focus\", onWindowFocus, false);\n    };\n  }, [inputRef, isFileDialogActive, onFileDialogCancelCb, fsAccessApiWorksRef]);\n  var dragTargetsRef = useRef([]);\n\n  var onDocumentDrop = function onDocumentDrop(event) {\n    if (rootRef.current && rootRef.current.contains(event.target)) {\n      // If we intercepted an event for our instance, let it propagate down to the instance's onDrop handler\n      return;\n    }\n\n    event.preventDefault();\n    dragTargetsRef.current = [];\n  };\n\n  useEffect(function () {\n    if (preventDropOnDocument) {\n      document.addEventListener(\"dragover\", onDocumentDragOver, false);\n      document.addEventListener(\"drop\", onDocumentDrop, false);\n    }\n\n    return function () {\n      if (preventDropOnDocument) {\n        document.removeEventListener(\"dragover\", onDocumentDragOver);\n        document.removeEventListener(\"drop\", onDocumentDrop);\n      }\n    };\n  }, [rootRef, preventDropOnDocument]); // Auto focus the root when autoFocus is true\n\n  useEffect(function () {\n    if (!disabled && autoFocus && rootRef.current) {\n      rootRef.current.focus();\n    }\n\n    return function () {};\n  }, [rootRef, autoFocus, disabled]);\n  var onErrCb = useCallback(function (e) {\n    if (onError) {\n      onError(e);\n    } else {\n      // Let the user know something's gone wrong if they haven't provided the onError cb.\n      console.error(e);\n    }\n  }, [onError]);\n  var onDragEnterCb = useCallback(function (event) {\n    event.preventDefault(); // Persist here because we need the event later after getFilesFromEvent() is done\n\n    event.persist();\n    stopPropagation(event);\n    dragTargetsRef.current = [].concat(_toConsumableArray(dragTargetsRef.current), [event.target]);\n\n    if (isEvtWithFiles(event)) {\n      Promise.resolve(getFilesFromEvent(event)).then(function (files) {\n        if (isPropagationStopped(event) && !noDragEventsBubbling) {\n          return;\n        }\n\n        var fileCount = files.length;\n        var isDragAccept = fileCount > 0 && allFilesAccepted({\n          files: files,\n          accept: acceptAttr,\n          minSize: minSize,\n          maxSize: maxSize,\n          multiple: multiple,\n          maxFiles: maxFiles,\n          validator: validator\n        });\n        var isDragReject = fileCount > 0 && !isDragAccept;\n        dispatch({\n          isDragAccept: isDragAccept,\n          isDragReject: isDragReject,\n          isDragActive: true,\n          type: \"setDraggedFiles\"\n        });\n\n        if (onDragEnter) {\n          onDragEnter(event);\n        }\n      }).catch(function (e) {\n        return onErrCb(e);\n      });\n    }\n  }, [getFilesFromEvent, onDragEnter, onErrCb, noDragEventsBubbling, acceptAttr, minSize, maxSize, multiple, maxFiles, validator]);\n  var onDragOverCb = useCallback(function (event) {\n    event.preventDefault();\n    event.persist();\n    stopPropagation(event);\n    var hasFiles = isEvtWithFiles(event);\n\n    if (hasFiles && event.dataTransfer) {\n      try {\n        event.dataTransfer.dropEffect = \"copy\";\n      } catch (_unused) {}\n      /* eslint-disable-line no-empty */\n\n    }\n\n    if (hasFiles && onDragOver) {\n      onDragOver(event);\n    }\n\n    return false;\n  }, [onDragOver, noDragEventsBubbling]);\n  var onDragLeaveCb = useCallback(function (event) {\n    event.preventDefault();\n    event.persist();\n    stopPropagation(event); // Only deactivate once the dropzone and all children have been left\n\n    var targets = dragTargetsRef.current.filter(function (target) {\n      return rootRef.current && rootRef.current.contains(target);\n    }); // Make sure to remove a target present multiple times only once\n    // (Firefox may fire dragenter/dragleave multiple times on the same element)\n\n    var targetIdx = targets.indexOf(event.target);\n\n    if (targetIdx !== -1) {\n      targets.splice(targetIdx, 1);\n    }\n\n    dragTargetsRef.current = targets;\n\n    if (targets.length > 0) {\n      return;\n    }\n\n    dispatch({\n      type: \"setDraggedFiles\",\n      isDragActive: false,\n      isDragAccept: false,\n      isDragReject: false\n    });\n\n    if (isEvtWithFiles(event) && onDragLeave) {\n      onDragLeave(event);\n    }\n  }, [rootRef, onDragLeave, noDragEventsBubbling]);\n  var setFiles = useCallback(function (files, event) {\n    var acceptedFiles = [];\n    var fileRejections = [];\n    files.forEach(function (file) {\n      var _fileAccepted = fileAccepted(file, acceptAttr),\n          _fileAccepted2 = _slicedToArray(_fileAccepted, 2),\n          accepted = _fileAccepted2[0],\n          acceptError = _fileAccepted2[1];\n\n      var _fileMatchSize = fileMatchSize(file, minSize, maxSize),\n          _fileMatchSize2 = _slicedToArray(_fileMatchSize, 2),\n          sizeMatch = _fileMatchSize2[0],\n          sizeError = _fileMatchSize2[1];\n\n      var customErrors = validator ? validator(file) : null;\n\n      if (accepted && sizeMatch && !customErrors) {\n        acceptedFiles.push(file);\n      } else {\n        var errors = [acceptError, sizeError];\n\n        if (customErrors) {\n          errors = errors.concat(customErrors);\n        }\n\n        fileRejections.push({\n          file: file,\n          errors: errors.filter(function (e) {\n            return e;\n          })\n        });\n      }\n    });\n\n    if (!multiple && acceptedFiles.length > 1 || multiple && maxFiles >= 1 && acceptedFiles.length > maxFiles) {\n      // Reject everything and empty accepted files\n      acceptedFiles.forEach(function (file) {\n        fileRejections.push({\n          file: file,\n          errors: [TOO_MANY_FILES_REJECTION]\n        });\n      });\n      acceptedFiles.splice(0);\n    }\n\n    dispatch({\n      acceptedFiles: acceptedFiles,\n      fileRejections: fileRejections,\n      type: \"setFiles\"\n    });\n\n    if (onDrop) {\n      onDrop(acceptedFiles, fileRejections, event);\n    }\n\n    if (fileRejections.length > 0 && onDropRejected) {\n      onDropRejected(fileRejections, event);\n    }\n\n    if (acceptedFiles.length > 0 && onDropAccepted) {\n      onDropAccepted(acceptedFiles, event);\n    }\n  }, [dispatch, multiple, acceptAttr, minSize, maxSize, maxFiles, onDrop, onDropAccepted, onDropRejected, validator]);\n  var onDropCb = useCallback(function (event) {\n    event.preventDefault(); // Persist here because we need the event later after getFilesFromEvent() is done\n\n    event.persist();\n    stopPropagation(event);\n    dragTargetsRef.current = [];\n\n    if (isEvtWithFiles(event)) {\n      Promise.resolve(getFilesFromEvent(event)).then(function (files) {\n        if (isPropagationStopped(event) && !noDragEventsBubbling) {\n          return;\n        }\n\n        setFiles(files, event);\n      }).catch(function (e) {\n        return onErrCb(e);\n      });\n    }\n\n    dispatch({\n      type: \"reset\"\n    });\n  }, [getFilesFromEvent, setFiles, onErrCb, noDragEventsBubbling]); // Fn for opening the file dialog programmatically\n\n  var openFileDialog = useCallback(function () {\n    // No point to use FS access APIs if context is not secure\n    // https://developer.mozilla.org/en-US/docs/Web/Security/Secure_Contexts#feature_detection\n    if (fsAccessApiWorksRef.current) {\n      dispatch({\n        type: \"openDialog\"\n      });\n      onFileDialogOpenCb(); // https://developer.mozilla.org/en-US/docs/Web/API/window/showOpenFilePicker\n\n      var opts = {\n        multiple: multiple,\n        types: pickerTypes\n      };\n      window.showOpenFilePicker(opts).then(function (handles) {\n        return getFilesFromEvent(handles);\n      }).then(function (files) {\n        setFiles(files, null);\n        dispatch({\n          type: \"closeDialog\"\n        });\n      }).catch(function (e) {\n        // AbortError means the user canceled\n        if (isAbort(e)) {\n          onFileDialogCancelCb(e);\n          dispatch({\n            type: \"closeDialog\"\n          });\n        } else if (isSecurityError(e)) {\n          fsAccessApiWorksRef.current = false; // CORS, so cannot use this API\n          // Try using the input\n\n          if (inputRef.current) {\n            inputRef.current.value = null;\n            inputRef.current.click();\n          } else {\n            onErrCb(new Error(\"Cannot open the file picker because the https://developer.mozilla.org/en-US/docs/Web/API/File_System_Access_API is not supported and no <input> was provided.\"));\n          }\n        } else {\n          onErrCb(e);\n        }\n      });\n      return;\n    }\n\n    if (inputRef.current) {\n      dispatch({\n        type: \"openDialog\"\n      });\n      onFileDialogOpenCb();\n      inputRef.current.value = null;\n      inputRef.current.click();\n    }\n  }, [dispatch, onFileDialogOpenCb, onFileDialogCancelCb, useFsAccessApi, setFiles, onErrCb, pickerTypes, multiple]); // Cb to open the file dialog when SPACE/ENTER occurs on the dropzone\n\n  var onKeyDownCb = useCallback(function (event) {\n    // Ignore keyboard events bubbling up the DOM tree\n    if (!rootRef.current || !rootRef.current.isEqualNode(event.target)) {\n      return;\n    }\n\n    if (event.key === \" \" || event.key === \"Enter\" || event.keyCode === 32 || event.keyCode === 13) {\n      event.preventDefault();\n      openFileDialog();\n    }\n  }, [rootRef, openFileDialog]); // Update focus state for the dropzone\n\n  var onFocusCb = useCallback(function () {\n    dispatch({\n      type: \"focus\"\n    });\n  }, []);\n  var onBlurCb = useCallback(function () {\n    dispatch({\n      type: \"blur\"\n    });\n  }, []); // Cb to open the file dialog when click occurs on the dropzone\n\n  var onClickCb = useCallback(function () {\n    if (noClick) {\n      return;\n    } // In IE11/Edge the file-browser dialog is blocking, therefore, use setTimeout()\n    // to ensure React can handle state changes\n    // See: https://github.com/react-dropzone/react-dropzone/issues/450\n\n\n    if (isIeOrEdge()) {\n      setTimeout(openFileDialog, 0);\n    } else {\n      openFileDialog();\n    }\n  }, [noClick, openFileDialog]);\n\n  var composeHandler = function composeHandler(fn) {\n    return disabled ? null : fn;\n  };\n\n  var composeKeyboardHandler = function composeKeyboardHandler(fn) {\n    return noKeyboard ? null : composeHandler(fn);\n  };\n\n  var composeDragHandler = function composeDragHandler(fn) {\n    return noDrag ? null : composeHandler(fn);\n  };\n\n  var stopPropagation = function stopPropagation(event) {\n    if (noDragEventsBubbling) {\n      event.stopPropagation();\n    }\n  };\n\n  var getRootProps = useMemo(function () {\n    return function () {\n      var _ref2 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n          _ref2$refKey = _ref2.refKey,\n          refKey = _ref2$refKey === void 0 ? \"ref\" : _ref2$refKey,\n          role = _ref2.role,\n          onKeyDown = _ref2.onKeyDown,\n          onFocus = _ref2.onFocus,\n          onBlur = _ref2.onBlur,\n          onClick = _ref2.onClick,\n          onDragEnter = _ref2.onDragEnter,\n          onDragOver = _ref2.onDragOver,\n          onDragLeave = _ref2.onDragLeave,\n          onDrop = _ref2.onDrop,\n          rest = _objectWithoutProperties(_ref2, _excluded3);\n\n      return _objectSpread(_objectSpread(_defineProperty({\n        onKeyDown: composeKeyboardHandler(composeEventHandlers(onKeyDown, onKeyDownCb)),\n        onFocus: composeKeyboardHandler(composeEventHandlers(onFocus, onFocusCb)),\n        onBlur: composeKeyboardHandler(composeEventHandlers(onBlur, onBlurCb)),\n        onClick: composeHandler(composeEventHandlers(onClick, onClickCb)),\n        onDragEnter: composeDragHandler(composeEventHandlers(onDragEnter, onDragEnterCb)),\n        onDragOver: composeDragHandler(composeEventHandlers(onDragOver, onDragOverCb)),\n        onDragLeave: composeDragHandler(composeEventHandlers(onDragLeave, onDragLeaveCb)),\n        onDrop: composeDragHandler(composeEventHandlers(onDrop, onDropCb)),\n        role: typeof role === \"string\" && role !== \"\" ? role : \"presentation\"\n      }, refKey, rootRef), !disabled && !noKeyboard ? {\n        tabIndex: 0\n      } : {}), rest);\n    };\n  }, [rootRef, onKeyDownCb, onFocusCb, onBlurCb, onClickCb, onDragEnterCb, onDragOverCb, onDragLeaveCb, onDropCb, noKeyboard, noDrag, disabled]);\n  var onInputElementClick = useCallback(function (event) {\n    event.stopPropagation();\n  }, []);\n  var getInputProps = useMemo(function () {\n    return function () {\n      var _ref3 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n          _ref3$refKey = _ref3.refKey,\n          refKey = _ref3$refKey === void 0 ? \"ref\" : _ref3$refKey,\n          onChange = _ref3.onChange,\n          onClick = _ref3.onClick,\n          rest = _objectWithoutProperties(_ref3, _excluded4);\n\n      var inputProps = _defineProperty({\n        accept: acceptAttr,\n        multiple: multiple,\n        type: \"file\",\n        style: {\n          display: \"none\"\n        },\n        onChange: composeHandler(composeEventHandlers(onChange, onDropCb)),\n        onClick: composeHandler(composeEventHandlers(onClick, onInputElementClick)),\n        tabIndex: -1\n      }, refKey, inputRef);\n\n      return _objectSpread(_objectSpread({}, inputProps), rest);\n    };\n  }, [inputRef, accept, multiple, onDropCb, disabled]);\n  return _objectSpread(_objectSpread({}, state), {}, {\n    isFocused: isFocused && !disabled,\n    getRootProps: getRootProps,\n    getInputProps: getInputProps,\n    rootRef: rootRef,\n    inputRef: inputRef,\n    open: composeHandler(openFileDialog)\n  });\n}\n/**\n * @param {DropzoneState} state\n * @param {{type: string} & DropzoneState} action\n * @returns {DropzoneState}\n */\n\nfunction reducer(state, action) {\n  /* istanbul ignore next */\n  switch (action.type) {\n    case \"focus\":\n      return _objectSpread(_objectSpread({}, state), {}, {\n        isFocused: true\n      });\n\n    case \"blur\":\n      return _objectSpread(_objectSpread({}, state), {}, {\n        isFocused: false\n      });\n\n    case \"openDialog\":\n      return _objectSpread(_objectSpread({}, initialState), {}, {\n        isFileDialogActive: true\n      });\n\n    case \"closeDialog\":\n      return _objectSpread(_objectSpread({}, state), {}, {\n        isFileDialogActive: false\n      });\n\n    case \"setDraggedFiles\":\n      return _objectSpread(_objectSpread({}, state), {}, {\n        isDragActive: action.isDragActive,\n        isDragAccept: action.isDragAccept,\n        isDragReject: action.isDragReject\n      });\n\n    case \"setFiles\":\n      return _objectSpread(_objectSpread({}, state), {}, {\n        acceptedFiles: action.acceptedFiles,\n        fileRejections: action.fileRejections\n      });\n\n    case \"reset\":\n      return _objectSpread({}, initialState);\n\n    default:\n      return state;\n  }\n}\n\nfunction noop() {}\n\nexport { ErrorCode } from \"./utils\";","\"use strict\";\r\n\r\nObject.defineProperty(exports, \"__esModule\", {\r\n  value: true\r\n});\r\nexports.useSize = useSize;\r\n\r\nvar _react = require(\"react\");\r\n\r\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); }\r\n\r\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); }\r\n\r\nfunction _iterableToArrayLimit(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\r\n\r\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\r\n\r\nfunction useSize(ref) {\r\n  var obs = (0, _react.useRef)();\r\n\r\n  var _useState = (0, _react.useState)(0),\r\n      _useState2 = _slicedToArray(_useState, 2),\r\n      ignored = _useState2[0],\r\n      setIgnored = _useState2[1];\r\n\r\n  var _useState3 = (0, _react.useState)({\r\n    width: null,\r\n    height: null\r\n  }),\r\n      _useState4 = _slicedToArray(_useState3, 2),\r\n      size = _useState4[0],\r\n      setSize = _useState4[1];\r\n\r\n  (0, _react.useEffect)(function () {\r\n    function observe(entries) {\r\n      var _entries$0$contentRec = entries[0].contentRect,\r\n          width = _entries$0$contentRec.width,\r\n          height = _entries$0$contentRec.height;\r\n      setSize(function (s) {\r\n        return s.width !== width || s.height !== height ? {\r\n          width: width,\r\n          height: height\r\n        } : s;\r\n      });\r\n    }\r\n\r\n    var RObserver = window.ResizeObserver || require('resize-observer-polyfill')[\"default\"];\r\n\r\n    obs.current = new RObserver(observe);\r\n    return function () {\r\n      return obs.current.disconnect();\r\n    };\r\n  }, []);\r\n  (0, _react.useEffect)(function () {\r\n    var forceUpdate = function forceUpdate() {\r\n      return setIgnored(function (c) {\r\n        return c + 1;\r\n      });\r\n    };\r\n\r\n    var item = ref.current;\r\n\r\n    if (item) {\r\n      obs.current.observe(item);\r\n      window.setTimeout(forceUpdate, 0);\r\n    }\r\n\r\n    return function () {\r\n      return item && obs.current.unobserve(item);\r\n    };\r\n  }, [obs, ref]);\r\n  return size;\r\n}","var __read = (this && this.__read) || function (o, n) {\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n    if (!m) return o;\n    var i = m.call(o), r, ar = [], e;\n    try {\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n    }\n    catch (error) { e = { error: error }; }\n    finally {\n        try {\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\n        }\n        finally { if (e) throw e.error; }\n    }\n    return ar;\n};\nexport var styleToObject = function (input) {\n    var attributes = input.split(/ ?; ?/);\n    return attributes.reduce(function (acc, d) {\n        var _a = __read(d.split(/ ?: ?/), 2), key = _a[0], value = _a[1];\n        if (key && value) {\n            acc[key.replace(/-(\\w)/g, function (_$0, $1) { return $1.toUpperCase(); })] = Number.isNaN(Number(value))\n                ? value\n                : Number(value);\n        }\n        return acc;\n    }, {});\n};\n/* istanbul ignore next */\nexport function randomString(length) {\n    if (length === void 0) { length = 6; }\n    var characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';\n    var result = '';\n    for (var index = length; index > 0; --index) {\n        result += characters[Math.round(Math.random() * (characters.length - 1))];\n    }\n    return result;\n}\nexport var noTextChildNodes = [\n    'br',\n    'col',\n    'colgroup',\n    'dl',\n    'hr',\n    'iframe',\n    'img',\n    'input',\n    'link',\n    'menuitem',\n    'meta',\n    'ol',\n    'param',\n    'select',\n    'table',\n    'tbody',\n    'tfoot',\n    'thead',\n    'tr',\n    'ul',\n    'wbr',\n];\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n// Taken from https://raw.githubusercontent.com/facebook/react/baff5cc2f69d30589a5dc65b089e47765437294b/packages/react-dom/src/shared/possibleStandardNames.js\n// tslint:disable:object-literal-sort-keys\nexport var possibleStandardNames = {\n    // HTML\n    'accept-charset': 'acceptCharset',\n    acceptcharset: 'acceptCharset',\n    accesskey: 'accessKey',\n    allowfullscreen: 'allowFullScreen',\n    autocapitalize: 'autoCapitalize',\n    autocomplete: 'autoComplete',\n    autocorrect: 'autoCorrect',\n    autofocus: 'autoFocus',\n    autoplay: 'autoPlay',\n    autosave: 'autoSave',\n    cellpadding: 'cellPadding',\n    cellspacing: 'cellSpacing',\n    charset: 'charSet',\n    class: 'className',\n    classid: 'classID',\n    classname: 'className',\n    colspan: 'colSpan',\n    contenteditable: 'contentEditable',\n    contextmenu: 'contextMenu',\n    controlslist: 'controlsList',\n    crossorigin: 'crossOrigin',\n    dangerouslysetinnerhtml: 'dangerouslySetInnerHTML',\n    datetime: 'dateTime',\n    defaultchecked: 'defaultChecked',\n    defaultvalue: 'defaultValue',\n    enctype: 'encType',\n    for: 'htmlFor',\n    formmethod: 'formMethod',\n    formaction: 'formAction',\n    formenctype: 'formEncType',\n    formnovalidate: 'formNoValidate',\n    formtarget: 'formTarget',\n    frameborder: 'frameBorder',\n    hreflang: 'hrefLang',\n    htmlfor: 'htmlFor',\n    httpequiv: 'httpEquiv',\n    'http-equiv': 'httpEquiv',\n    icon: 'icon',\n    innerhtml: 'innerHTML',\n    inputmode: 'inputMode',\n    itemid: 'itemID',\n    itemprop: 'itemProp',\n    itemref: 'itemRef',\n    itemscope: 'itemScope',\n    itemtype: 'itemType',\n    keyparams: 'keyParams',\n    keytype: 'keyType',\n    marginwidth: 'marginWidth',\n    marginheight: 'marginHeight',\n    maxlength: 'maxLength',\n    mediagroup: 'mediaGroup',\n    minlength: 'minLength',\n    nomodule: 'noModule',\n    novalidate: 'noValidate',\n    playsinline: 'playsInline',\n    radiogroup: 'radioGroup',\n    readonly: 'readOnly',\n    referrerpolicy: 'referrerPolicy',\n    rowspan: 'rowSpan',\n    spellcheck: 'spellCheck',\n    srcdoc: 'srcDoc',\n    srclang: 'srcLang',\n    srcset: 'srcSet',\n    tabindex: 'tabIndex',\n    typemustmatch: 'typeMustMatch',\n    usemap: 'useMap',\n    // SVG\n    accentheight: 'accentHeight',\n    'accent-height': 'accentHeight',\n    alignmentbaseline: 'alignmentBaseline',\n    'alignment-baseline': 'alignmentBaseline',\n    allowreorder: 'allowReorder',\n    arabicform: 'arabicForm',\n    'arabic-form': 'arabicForm',\n    attributename: 'attributeName',\n    attributetype: 'attributeType',\n    autoreverse: 'autoReverse',\n    basefrequency: 'baseFrequency',\n    baselineshift: 'baselineShift',\n    'baseline-shift': 'baselineShift',\n    baseprofile: 'baseProfile',\n    calcmode: 'calcMode',\n    capheight: 'capHeight',\n    'cap-height': 'capHeight',\n    clippath: 'clipPath',\n    'clip-path': 'clipPath',\n    clippathunits: 'clipPathUnits',\n    cliprule: 'clipRule',\n    'clip-rule': 'clipRule',\n    colorinterpolation: 'colorInterpolation',\n    'color-interpolation': 'colorInterpolation',\n    colorinterpolationfilters: 'colorInterpolationFilters',\n    'color-interpolation-filters': 'colorInterpolationFilters',\n    colorprofile: 'colorProfile',\n    'color-profile': 'colorProfile',\n    colorrendering: 'colorRendering',\n    'color-rendering': 'colorRendering',\n    contentscripttype: 'contentScriptType',\n    contentstyletype: 'contentStyleType',\n    diffuseconstant: 'diffuseConstant',\n    dominantbaseline: 'dominantBaseline',\n    'dominant-baseline': 'dominantBaseline',\n    edgemode: 'edgeMode',\n    enablebackground: 'enableBackground',\n    'enable-background': 'enableBackground',\n    externalresourcesrequired: 'externalResourcesRequired',\n    fillopacity: 'fillOpacity',\n    'fill-opacity': 'fillOpacity',\n    fillrule: 'fillRule',\n    'fill-rule': 'fillRule',\n    filterres: 'filterRes',\n    filterunits: 'filterUnits',\n    floodopacity: 'floodOpacity',\n    'flood-opacity': 'floodOpacity',\n    floodcolor: 'floodColor',\n    'flood-color': 'floodColor',\n    fontfamily: 'fontFamily',\n    'font-family': 'fontFamily',\n    fontsize: 'fontSize',\n    'font-size': 'fontSize',\n    fontsizeadjust: 'fontSizeAdjust',\n    'font-size-adjust': 'fontSizeAdjust',\n    fontstretch: 'fontStretch',\n    'font-stretch': 'fontStretch',\n    fontstyle: 'fontStyle',\n    'font-style': 'fontStyle',\n    fontvariant: 'fontVariant',\n    'font-variant': 'fontVariant',\n    fontweight: 'fontWeight',\n    'font-weight': 'fontWeight',\n    glyphname: 'glyphName',\n    'glyph-name': 'glyphName',\n    glyphorientationhorizontal: 'glyphOrientationHorizontal',\n    'glyph-orientation-horizontal': 'glyphOrientationHorizontal',\n    glyphorientationvertical: 'glyphOrientationVertical',\n    'glyph-orientation-vertical': 'glyphOrientationVertical',\n    glyphref: 'glyphRef',\n    gradienttransform: 'gradientTransform',\n    gradientunits: 'gradientUnits',\n    horizadvx: 'horizAdvX',\n    'horiz-adv-x': 'horizAdvX',\n    horizoriginx: 'horizOriginX',\n    'horiz-origin-x': 'horizOriginX',\n    imagerendering: 'imageRendering',\n    'image-rendering': 'imageRendering',\n    kernelmatrix: 'kernelMatrix',\n    kernelunitlength: 'kernelUnitLength',\n    keypoints: 'keyPoints',\n    keysplines: 'keySplines',\n    keytimes: 'keyTimes',\n    lengthadjust: 'lengthAdjust',\n    letterspacing: 'letterSpacing',\n    'letter-spacing': 'letterSpacing',\n    lightingcolor: 'lightingColor',\n    'lighting-color': 'lightingColor',\n    limitingconeangle: 'limitingConeAngle',\n    markerend: 'markerEnd',\n    'marker-end': 'markerEnd',\n    markerheight: 'markerHeight',\n    markermid: 'markerMid',\n    'marker-mid': 'markerMid',\n    markerstart: 'markerStart',\n    'marker-start': 'markerStart',\n    markerunits: 'markerUnits',\n    markerwidth: 'markerWidth',\n    maskcontentunits: 'maskContentUnits',\n    maskunits: 'maskUnits',\n    numoctaves: 'numOctaves',\n    overlineposition: 'overlinePosition',\n    'overline-position': 'overlinePosition',\n    overlinethickness: 'overlineThickness',\n    'overline-thickness': 'overlineThickness',\n    paintorder: 'paintOrder',\n    'paint-order': 'paintOrder',\n    'panose-1': 'panose1',\n    pathlength: 'pathLength',\n    patterncontentunits: 'patternContentUnits',\n    patterntransform: 'patternTransform',\n    patternunits: 'patternUnits',\n    pointerevents: 'pointerEvents',\n    'pointer-events': 'pointerEvents',\n    pointsatx: 'pointsAtX',\n    pointsaty: 'pointsAtY',\n    pointsatz: 'pointsAtZ',\n    preservealpha: 'preserveAlpha',\n    preserveaspectratio: 'preserveAspectRatio',\n    primitiveunits: 'primitiveUnits',\n    refx: 'refX',\n    refy: 'refY',\n    renderingintent: 'renderingIntent',\n    'rendering-intent': 'renderingIntent',\n    repeatcount: 'repeatCount',\n    repeatdur: 'repeatDur',\n    requiredextensions: 'requiredExtensions',\n    requiredfeatures: 'requiredFeatures',\n    shaperendering: 'shapeRendering',\n    'shape-rendering': 'shapeRendering',\n    specularconstant: 'specularConstant',\n    specularexponent: 'specularExponent',\n    spreadmethod: 'spreadMethod',\n    startoffset: 'startOffset',\n    stddeviation: 'stdDeviation',\n    stitchtiles: 'stitchTiles',\n    stopcolor: 'stopColor',\n    'stop-color': 'stopColor',\n    stopopacity: 'stopOpacity',\n    'stop-opacity': 'stopOpacity',\n    strikethroughposition: 'strikethroughPosition',\n    'strikethrough-position': 'strikethroughPosition',\n    strikethroughthickness: 'strikethroughThickness',\n    'strikethrough-thickness': 'strikethroughThickness',\n    strokedasharray: 'strokeDasharray',\n    'stroke-dasharray': 'strokeDasharray',\n    strokedashoffset: 'strokeDashoffset',\n    'stroke-dashoffset': 'strokeDashoffset',\n    strokelinecap: 'strokeLinecap',\n    'stroke-linecap': 'strokeLinecap',\n    strokelinejoin: 'strokeLinejoin',\n    'stroke-linejoin': 'strokeLinejoin',\n    strokemiterlimit: 'strokeMiterlimit',\n    'stroke-miterlimit': 'strokeMiterlimit',\n    strokewidth: 'strokeWidth',\n    'stroke-width': 'strokeWidth',\n    strokeopacity: 'strokeOpacity',\n    'stroke-opacity': 'strokeOpacity',\n    suppresscontenteditablewarning: 'suppressContentEditableWarning',\n    suppresshydrationwarning: 'suppressHydrationWarning',\n    surfacescale: 'surfaceScale',\n    systemlanguage: 'systemLanguage',\n    tablevalues: 'tableValues',\n    targetx: 'targetX',\n    targety: 'targetY',\n    textanchor: 'textAnchor',\n    'text-anchor': 'textAnchor',\n    textdecoration: 'textDecoration',\n    'text-decoration': 'textDecoration',\n    textlength: 'textLength',\n    textrendering: 'textRendering',\n    'text-rendering': 'textRendering',\n    underlineposition: 'underlinePosition',\n    'underline-position': 'underlinePosition',\n    underlinethickness: 'underlineThickness',\n    'underline-thickness': 'underlineThickness',\n    unicodebidi: 'unicodeBidi',\n    'unicode-bidi': 'unicodeBidi',\n    unicoderange: 'unicodeRange',\n    'unicode-range': 'unicodeRange',\n    unitsperem: 'unitsPerEm',\n    'units-per-em': 'unitsPerEm',\n    unselectable: 'unselectable',\n    valphabetic: 'vAlphabetic',\n    'v-alphabetic': 'vAlphabetic',\n    vectoreffect: 'vectorEffect',\n    'vector-effect': 'vectorEffect',\n    vertadvy: 'vertAdvY',\n    'vert-adv-y': 'vertAdvY',\n    vertoriginx: 'vertOriginX',\n    'vert-origin-x': 'vertOriginX',\n    vertoriginy: 'vertOriginY',\n    'vert-origin-y': 'vertOriginY',\n    vhanging: 'vHanging',\n    'v-hanging': 'vHanging',\n    videographic: 'vIdeographic',\n    'v-ideographic': 'vIdeographic',\n    viewbox: 'viewBox',\n    viewtarget: 'viewTarget',\n    vmathematical: 'vMathematical',\n    'v-mathematical': 'vMathematical',\n    wordspacing: 'wordSpacing',\n    'word-spacing': 'wordSpacing',\n    writingmode: 'writingMode',\n    'writing-mode': 'writingMode',\n    xchannelselector: 'xChannelSelector',\n    xheight: 'xHeight',\n    'x-height': 'xHeight',\n    xlinkactuate: 'xlinkActuate',\n    'xlink:actuate': 'xlinkActuate',\n    xlinkarcrole: 'xlinkArcrole',\n    'xlink:arcrole': 'xlinkArcrole',\n    xlinkhref: 'xlinkHref',\n    'xlink:href': 'xlinkHref',\n    xlinkrole: 'xlinkRole',\n    'xlink:role': 'xlinkRole',\n    xlinkshow: 'xlinkShow',\n    'xlink:show': 'xlinkShow',\n    xlinktitle: 'xlinkTitle',\n    'xlink:title': 'xlinkTitle',\n    xlinktype: 'xlinkType',\n    'xlink:type': 'xlinkType',\n    xmlbase: 'xmlBase',\n    'xml:base': 'xmlBase',\n    xmllang: 'xmlLang',\n    'xml:lang': 'xmlLang',\n    'xml:space': 'xmlSpace',\n    xmlnsxlink: 'xmlnsXlink',\n    'xmlns:xlink': 'xmlnsXlink',\n    xmlspace: 'xmlSpace',\n    ychannelselector: 'yChannelSelector',\n    zoomandpan: 'zoomAndPan',\n    // event handlers\n    onblur: 'onBlur',\n    onchange: 'onChange',\n    onclick: 'onClick',\n    oncontextmenu: 'onContextMenu',\n    ondoubleclick: 'onDoubleClick',\n    ondrag: 'onDrag',\n    ondragend: 'onDragEnd',\n    ondragenter: 'onDragEnter',\n    ondragexit: 'onDragExit',\n    ondragleave: 'onDragLeave',\n    ondragover: 'onDragOver',\n    ondragstart: 'onDragStart',\n    ondrop: 'onDrop',\n    onerror: 'onError',\n    onfocus: 'onFocus',\n    oninput: 'onInput',\n    oninvalid: 'onInvalid',\n    onkeydown: 'onKeyDown',\n    onkeypress: 'onKeyPress',\n    onkeyup: 'onKeyUp',\n    onload: 'onLoad',\n    onmousedown: 'onMouseDown',\n    onmouseenter: 'onMouseEnter',\n    onmouseleave: 'onMouseLeave',\n    onmousemove: 'onMouseMove',\n    onmouseout: 'onMouseOut',\n    onmouseover: 'onMouseOver',\n    onmouseup: 'onMouseUp',\n    onscroll: 'onScroll',\n    onsubmit: 'onSubmit',\n    ontouchcancel: 'onTouchCancel',\n    ontouchend: 'onTouchEnd',\n    ontouchmove: 'onTouchMove',\n    ontouchstart: 'onTouchStart',\n    onwheel: 'onWheel',\n};\n//# sourceMappingURL=helpers.js.map","var __assign = (this && this.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\nvar __read = (this && this.__read) || function (o, n) {\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n    if (!m) return o;\n    var i = m.call(o), r, ar = [], e;\n    try {\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n    }\n    catch (error) { e = { error: error }; }\n    finally {\n        try {\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\n        }\n        finally { if (e) throw e.error; }\n    }\n    return ar;\n};\nvar __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {\n    if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n        if (ar || !(i in from)) {\n            if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n            ar[i] = from[i];\n        }\n    }\n    return to.concat(ar || Array.prototype.slice.call(from));\n};\n/* eslint-disable @typescript-eslint/no-use-before-define */\nimport * as React from 'react';\nimport { noTextChildNodes, possibleStandardNames, randomString, styleToObject } from './helpers';\nfunction parseAttributes(node, reactKey) {\n    var attributes = {\n        key: reactKey,\n    };\n    /* istanbul ignore else */\n    if (node instanceof Element) {\n        var nodeClassNames = node.getAttribute('class');\n        if (nodeClassNames) {\n            attributes.className = nodeClassNames;\n        }\n        __spreadArray([], __read(node.attributes), false).forEach(function (d) {\n            switch (d.name) {\n                // this is manually handled above, so break;\n                case 'class':\n                    break;\n                case 'style':\n                    attributes[d.name] = styleToObject(d.value);\n                    break;\n                case 'allowfullscreen':\n                case 'allowpaymentrequest':\n                case 'async':\n                case 'autofocus':\n                case 'autoplay':\n                case 'checked':\n                case 'controls':\n                case 'default':\n                case 'defer':\n                case 'disabled':\n                case 'formnovalidate':\n                case 'hidden':\n                case 'ismap':\n                case 'itemscope':\n                case 'loop':\n                case 'multiple':\n                case 'muted':\n                case 'nomodule':\n                case 'novalidate':\n                case 'open':\n                case 'readonly':\n                case 'required':\n                case 'reversed':\n                case 'selected':\n                case 'typemustmatch':\n                    attributes[possibleStandardNames[d.name] || d.name] = true;\n                    break;\n                default:\n                    attributes[possibleStandardNames[d.name] || d.name] = d.value;\n            }\n        });\n    }\n    return attributes;\n}\nfunction parseChildren(childNodeList, level, options) {\n    var children = __spreadArray([], __read(childNodeList), false).map(function (node, index) {\n        return convertFromNode(node, __assign(__assign({}, options), { index: index, level: level + 1 }));\n    })\n        .filter(Boolean);\n    if (!children.length) {\n        return null;\n    }\n    return children;\n}\nfunction parseName(nodeName) {\n    if (/[a-z]+[A-Z]+[a-z]+/.test(nodeName)) {\n        return nodeName;\n    }\n    return nodeName.toLowerCase();\n}\nexport function convertFromNode(input, options) {\n    var _a;\n    if (options === void 0) { options = {}; }\n    if (!input || !(input instanceof Node)) {\n        return null;\n    }\n    var _b = options.actions, actions = _b === void 0 ? [] : _b, _c = options.index, index = _c === void 0 ? 0 : _c, _d = options.level, level = _d === void 0 ? 0 : _d, randomKey = options.randomKey;\n    var node = input;\n    var key = \"\".concat(level, \"-\").concat(index);\n    var result = [];\n    if (randomKey && level === 0) {\n        key = \"\".concat(randomString(), \"-\").concat(key);\n    }\n    /* istanbul ignore else */\n    if (Array.isArray(actions)) {\n        actions.forEach(function (action) {\n            if (action.condition(node, key, level)) {\n                if (typeof action.pre === 'function') {\n                    node = action.pre(node, key, level);\n                    if (!(node instanceof Node)) {\n                        node = input;\n                        /* istanbul ignore else */\n                        if (process.env.NODE_ENV !== 'production') {\n                            // eslint-disable-next-line no-console\n                            console.warn('The `pre` method always must return a valid DomNode (instanceof Node) - your modification will be ignored (Hint: if you want to render a React-component, use the `post` method instead)');\n                        }\n                    }\n                }\n                if (typeof action.post === 'function') {\n                    result.push(action.post(node, key, level));\n                }\n            }\n        });\n    }\n    if (result.length) {\n        return result;\n    }\n    switch (node.nodeType) {\n        case 1: {\n            // regular dom-node\n            return React.createElement(parseName(node.nodeName), parseAttributes(node, key), parseChildren(node.childNodes, level, options));\n        }\n        case 3: {\n            // textnode\n            var nodeText = ((_a = node.nodeValue) === null || _a === void 0 ? void 0 : _a.toString()) || '';\n            /* istanbul ignore else */\n            if (/^\\s+$/.test(nodeText) && !/[\\u00A0\\u202F]/.test(nodeText)) {\n                return null;\n            }\n            /* istanbul ignore next */\n            if (!node.parentNode) {\n                return nodeText;\n            }\n            var parentNodeName = node.parentNode.nodeName.toLowerCase();\n            if (noTextChildNodes.includes(parentNodeName)) {\n                /* istanbul ignore else */\n                if (/\\S/.test(nodeText)) {\n                    // eslint-disable-next-line no-console\n                    console.warn(\"A textNode is not allowed inside '\".concat(parentNodeName, \"'. Your text \\\"\").concat(nodeText, \"\\\" will be ignored\"));\n                }\n                return null;\n            }\n            return nodeText;\n        }\n        case 8: {\n            // html-comment\n            return null;\n        }\n        /* istanbul ignore next */\n        default: {\n            return null;\n        }\n    }\n}\nexport function convertFromString(input, options) {\n    if (options === void 0) { options = {}; }\n    if (!input || typeof input !== 'string') {\n        return null;\n    }\n    var _a = options.nodeOnly, nodeOnly = _a === void 0 ? false : _a, _b = options.selector, selector = _b === void 0 ? 'body > *' : _b, _c = options.type, type = _c === void 0 ? 'text/html' : _c;\n    try {\n        var parser = new DOMParser();\n        var document_1 = parser.parseFromString(input, type);\n        var node = document_1.querySelector(selector);\n        if (!(node instanceof Node)) {\n            throw new TypeError('Error parsing input');\n        }\n        if (nodeOnly) {\n            return node;\n        }\n        return convertFromNode(node, options);\n    }\n    catch (error) {\n        /* istanbul ignore else */\n        if (process.env.NODE_ENV !== 'production') {\n            // eslint-disable-next-line no-console\n            console.error(error);\n        }\n    }\n    return null;\n}\nexport default function convert(input, options) {\n    if (options === void 0) { options = {}; }\n    if (typeof input === 'string') {\n        return convertFromString(input, options);\n    }\n    if (input instanceof Node) {\n        return convertFromNode(input, options);\n    }\n    return null;\n}\n//# sourceMappingURL=index.js.map","import { canUseDOM as canUseDOMFlag } from 'exenv';\nexport var STATUS = {\n    FAILED: 'failed',\n    LOADED: 'loaded',\n    LOADING: 'loading',\n    PENDING: 'pending',\n    READY: 'ready',\n    UNSUPPORTED: 'unsupported',\n};\nexport function canUseDOM() {\n    return canUseDOMFlag;\n}\nexport function isSupportedEnvironment() {\n    return supportsInlineSVG() && typeof window !== 'undefined' && window !== null;\n}\nexport function supportsInlineSVG() {\n    /* istanbul ignore next */\n    if (!document) {\n        return false;\n    }\n    var div = document.createElement('div');\n    div.innerHTML = '<svg />';\n    return !!div.firstChild && div.firstChild.namespaceURI === 'http://www.w3.org/2000/svg';\n}\nexport function randomString(length) {\n    var letters = 'abcdefghijklmnopqrstuvwxyz';\n    var numbers = '1234567890';\n    var charset = \"\" + letters + letters.toUpperCase() + numbers;\n    var randomCharacter = function (character) {\n        return character[Math.floor(Math.random() * character.length)];\n    };\n    var R = '';\n    for (var i = 0; i < length; i++) {\n        R += randomCharacter(charset);\n    }\n    return R;\n}\n/**\n *  Remove properties from an object\n */\nexport function removeProperties(input) {\n    var filter = [];\n    for (var _i = 1; _i < arguments.length; _i++) {\n        filter[_i - 1] = arguments[_i];\n    }\n    var output = {};\n    for (var key in input) {\n        /* istanbul ignore else */\n        if ({}.hasOwnProperty.call(input, key)) {\n            if (!filter.includes(key)) {\n                output[key] = input[key];\n            }\n        }\n    }\n    return output;\n}\n//# sourceMappingURL=helpers.js.map","var __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __assign = (this && this.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\nvar __read = (this && this.__read) || function (o, n) {\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n    if (!m) return o;\n    var i = m.call(o), r, ar = [], e;\n    try {\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n    }\n    catch (error) { e = { error: error }; }\n    finally {\n        try {\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\n        }\n        finally { if (e) throw e.error; }\n    }\n    return ar;\n};\nvar __spreadArray = (this && this.__spreadArray) || function (to, from) {\n    for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\n        to[j] = from[i];\n    return to;\n};\nimport * as React from 'react';\nimport convert from 'react-from-dom';\nimport { STATUS, canUseDOM, isSupportedEnvironment, randomString, removeProperties, } from './helpers';\nexport var cacheStore = Object.create(null);\nvar InlineSVG = /** @class */ (function (_super) {\n    __extends(InlineSVG, _super);\n    function InlineSVG(props) {\n        var _this = _super.call(this, props) || this;\n        _this.isActive = false;\n        _this.handleCacheQueue = function (content) {\n            /* istanbul ignore else */\n            if (typeof content === 'string') {\n                _this.handleLoad(content);\n                return;\n            }\n            _this.handleError(content);\n        };\n        _this.handleLoad = function (content) {\n            /* istanbul ignore else */\n            if (_this.isActive) {\n                _this.setState({\n                    content: content,\n                    status: STATUS.LOADED,\n                }, _this.getElement);\n            }\n        };\n        _this.handleError = function (error) {\n            var onError = _this.props.onError;\n            var status = error.message === 'Browser does not support SVG' ? STATUS.UNSUPPORTED : STATUS.FAILED;\n            /* istanbul ignore else */\n            if (_this.isActive) {\n                _this.setState({ status: status }, function () {\n                    /* istanbul ignore else */\n                    if (typeof onError === 'function') {\n                        onError(error);\n                    }\n                });\n            }\n        };\n        _this.request = function () {\n            var _a = _this.props, cacheRequests = _a.cacheRequests, fetchOptions = _a.fetchOptions, src = _a.src;\n            try {\n                if (cacheRequests) {\n                    cacheStore[src] = { content: '', status: STATUS.LOADING, queue: [] };\n                }\n                return fetch(src, fetchOptions)\n                    .then(function (response) {\n                    var contentType = response.headers.get('content-type');\n                    var _a = __read((contentType || '').split(/ ?; ?/), 1), fileType = _a[0];\n                    if (response.status > 299) {\n                        throw new Error('Not found');\n                    }\n                    if (!['image/svg+xml', 'text/plain'].some(function (d) { return fileType.indexOf(d) >= 0; })) {\n                        throw new Error(\"Content type isn't valid: \" + fileType);\n                    }\n                    return response.text();\n                })\n                    .then(function (content) {\n                    var currentSrc = _this.props.src;\n                    // the current src don't match the previous one, skipping...\n                    if (src !== currentSrc) {\n                        return;\n                    }\n                    _this.handleLoad(content);\n                    /* istanbul ignore else */\n                    if (cacheRequests) {\n                        var cache = cacheStore[src];\n                        /* istanbul ignore else */\n                        if (cache) {\n                            cache.content = content;\n                            cache.status = STATUS.LOADED;\n                            cache.queue = cache.queue.filter(function (cb) {\n                                cb(content);\n                                return false;\n                            });\n                        }\n                    }\n                })\n                    .catch(function (error) {\n                    _this.handleError(error);\n                    /* istanbul ignore else */\n                    if (cacheRequests) {\n                        var cache = cacheStore[src];\n                        /* istanbul ignore else */\n                        if (cache) {\n                            cache.queue.forEach(function (cb) {\n                                cb(error);\n                            });\n                            delete cacheStore[src];\n                        }\n                    }\n                });\n            }\n            catch (error) {\n                return _this.handleError(new Error(error.message));\n            }\n        };\n        _this.state = {\n            content: '',\n            element: null,\n            hasCache: !!props.cacheRequests && !!cacheStore[props.src],\n            status: STATUS.PENDING,\n        };\n        _this.hash = props.uniqueHash || randomString(8);\n        return _this;\n    }\n    InlineSVG.prototype.componentDidMount = function () {\n        this.isActive = true;\n        if (!canUseDOM()) {\n            return;\n        }\n        var status = this.state.status;\n        var src = this.props.src;\n        try {\n            /* istanbul ignore else */\n            if (status === STATUS.PENDING) {\n                /* istanbul ignore else */\n                if (!isSupportedEnvironment()) {\n                    throw new Error('Browser does not support SVG');\n                }\n                /* istanbul ignore else */\n                if (!src) {\n                    throw new Error('Missing src');\n                }\n                this.load();\n            }\n        }\n        catch (error) {\n            this.handleError(error);\n        }\n    };\n    InlineSVG.prototype.componentDidUpdate = function (prevProps, prevState) {\n        if (!canUseDOM()) {\n            return;\n        }\n        var _a = this.state, hasCache = _a.hasCache, status = _a.status;\n        var _b = this.props, onLoad = _b.onLoad, src = _b.src;\n        if (prevState.status !== STATUS.READY && status === STATUS.READY) {\n            /* istanbul ignore else */\n            if (onLoad) {\n                onLoad(src, hasCache);\n            }\n        }\n        if (prevProps.src !== src) {\n            if (!src) {\n                this.handleError(new Error('Missing src'));\n                return;\n            }\n            this.load();\n        }\n    };\n    InlineSVG.prototype.componentWillUnmount = function () {\n        this.isActive = false;\n    };\n    InlineSVG.prototype.processSVG = function () {\n        var content = this.state.content;\n        var preProcessor = this.props.preProcessor;\n        if (preProcessor) {\n            return preProcessor(content);\n        }\n        return content;\n    };\n    InlineSVG.prototype.updateSVGAttributes = function (node) {\n        var _this = this;\n        var _a = this.props, _b = _a.baseURL, baseURL = _b === void 0 ? '' : _b, uniquifyIDs = _a.uniquifyIDs;\n        var replaceableAttributes = ['id', 'href', 'xlink:href', 'xlink:role', 'xlink:arcrole'];\n        var linkAttributes = ['href', 'xlink:href'];\n        var isDataValue = function (name, value) {\n            return linkAttributes.indexOf(name) >= 0 && (value ? value.indexOf('#') < 0 : false);\n        };\n        if (!uniquifyIDs) {\n            return node;\n        }\n        __spreadArray([], __read(node.children)).map(function (d) {\n            if (d.attributes && d.attributes.length) {\n                var attributes_1 = Object.values(d.attributes).map(function (a) {\n                    var attr = a;\n                    var match = a.value.match(/url\\((.*?)\\)/);\n                    if (match && match[1]) {\n                        attr.value = a.value.replace(match[0], \"url(\" + baseURL + match[1] + \"__\" + _this.hash + \")\");\n                    }\n                    return attr;\n                });\n                replaceableAttributes.forEach(function (r) {\n                    var attribute = attributes_1.find(function (a) { return a.name === r; });\n                    if (attribute && !isDataValue(r, attribute.value)) {\n                        attribute.value = attribute.value + \"__\" + _this.hash;\n                    }\n                });\n            }\n            if (d.children.length) {\n                return _this.updateSVGAttributes(d);\n            }\n            return d;\n        });\n        return node;\n    };\n    InlineSVG.prototype.getNode = function () {\n        var _a = this.props, description = _a.description, title = _a.title;\n        try {\n            var svgText = this.processSVG();\n            var node = convert(svgText, { nodeOnly: true });\n            if (!node || !(node instanceof SVGSVGElement)) {\n                throw new Error('Could not convert the src to a DOM Node');\n            }\n            var svg = this.updateSVGAttributes(node);\n            if (description) {\n                var originalDesc = svg.querySelector('desc');\n                if (originalDesc && originalDesc.parentNode) {\n                    originalDesc.parentNode.removeChild(originalDesc);\n                }\n                var descElement = document.createElement('desc');\n                descElement.innerHTML = description;\n                svg.prepend(descElement);\n            }\n            if (title) {\n                var originalTitle = svg.querySelector('title');\n                if (originalTitle && originalTitle.parentNode) {\n                    originalTitle.parentNode.removeChild(originalTitle);\n                }\n                var titleElement = document.createElement('title');\n                titleElement.innerHTML = title;\n                svg.prepend(titleElement);\n            }\n            return svg;\n        }\n        catch (error) {\n            return this.handleError(error);\n        }\n    };\n    InlineSVG.prototype.getElement = function () {\n        try {\n            var node = this.getNode();\n            var element = convert(node);\n            if (!element || !React.isValidElement(element)) {\n                throw new Error('Could not convert the src to a React element');\n            }\n            this.setState({\n                element: element,\n                status: STATUS.READY,\n            });\n        }\n        catch (error) {\n            this.handleError(new Error(error.message));\n        }\n    };\n    InlineSVG.prototype.load = function () {\n        var _this = this;\n        /* istanbul ignore else */\n        if (this.isActive) {\n            this.setState({\n                content: '',\n                element: null,\n                status: STATUS.LOADING,\n            }, function () {\n                var _a = _this.props, cacheRequests = _a.cacheRequests, src = _a.src;\n                var cache = cacheRequests && cacheStore[src];\n                if (cache) {\n                    /* istanbul ignore else */\n                    if (cache.status === STATUS.LOADING) {\n                        cache.queue.push(_this.handleCacheQueue);\n                    }\n                    else if (cache.status === STATUS.LOADED) {\n                        _this.handleLoad(cache.content);\n                    }\n                    return;\n                }\n                var dataURI = src.match(/data:image\\/svg[^,]*?(;base64)?,(.*)/);\n                var inlineSrc;\n                if (dataURI) {\n                    inlineSrc = dataURI[1] ? atob(dataURI[2]) : decodeURIComponent(dataURI[2]);\n                }\n                else if (src.indexOf('<svg') >= 0) {\n                    inlineSrc = src;\n                }\n                if (inlineSrc) {\n                    _this.handleLoad(inlineSrc);\n                    return;\n                }\n                _this.request();\n            });\n        }\n    };\n    InlineSVG.prototype.render = function () {\n        var _a = this.state, element = _a.element, status = _a.status;\n        var _b = this.props, _c = _b.children, children = _c === void 0 ? null : _c, innerRef = _b.innerRef, _d = _b.loader, loader = _d === void 0 ? null : _d;\n        var elementProps = removeProperties(this.props, 'baseURL', 'cacheRequests', 'children', 'description', 'fetchOptions', 'innerRef', 'loader', 'onError', 'onLoad', 'preProcessor', 'src', 'title', 'uniqueHash', 'uniquifyIDs');\n        if (!canUseDOM()) {\n            return loader;\n        }\n        if (element) {\n            return React.cloneElement(element, __assign({ ref: innerRef }, elementProps));\n        }\n        if ([STATUS.UNSUPPORTED, STATUS.FAILED].indexOf(status) > -1) {\n            return children;\n        }\n        return loader;\n    };\n    InlineSVG.defaultProps = {\n        cacheRequests: true,\n        uniquifyIDs: false,\n    };\n    return InlineSVG;\n}(React.PureComponent));\nexport default InlineSVG;\nexport * from './types';\n//# sourceMappingURL=index.js.map","/** @license React v16.13.1\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';var b=\"function\"===typeof Symbol&&Symbol.for,c=b?Symbol.for(\"react.element\"):60103,d=b?Symbol.for(\"react.portal\"):60106,e=b?Symbol.for(\"react.fragment\"):60107,f=b?Symbol.for(\"react.strict_mode\"):60108,g=b?Symbol.for(\"react.profiler\"):60114,h=b?Symbol.for(\"react.provider\"):60109,k=b?Symbol.for(\"react.context\"):60110,l=b?Symbol.for(\"react.async_mode\"):60111,m=b?Symbol.for(\"react.concurrent_mode\"):60111,n=b?Symbol.for(\"react.forward_ref\"):60112,p=b?Symbol.for(\"react.suspense\"):60113,q=b?\nSymbol.for(\"react.suspense_list\"):60120,r=b?Symbol.for(\"react.memo\"):60115,t=b?Symbol.for(\"react.lazy\"):60116,v=b?Symbol.for(\"react.block\"):60121,w=b?Symbol.for(\"react.fundamental\"):60117,x=b?Symbol.for(\"react.responder\"):60118,y=b?Symbol.for(\"react.scope\"):60119;\nfunction z(a){if(\"object\"===typeof a&&null!==a){var u=a.$$typeof;switch(u){case c:switch(a=a.type,a){case l:case m:case e:case g:case f:case p:return a;default:switch(a=a&&a.$$typeof,a){case k:case n:case t:case r:case h:return a;default:return u}}case d:return u}}}function A(a){return z(a)===m}exports.AsyncMode=l;exports.ConcurrentMode=m;exports.ContextConsumer=k;exports.ContextProvider=h;exports.Element=c;exports.ForwardRef=n;exports.Fragment=e;exports.Lazy=t;exports.Memo=r;exports.Portal=d;\nexports.Profiler=g;exports.StrictMode=f;exports.Suspense=p;exports.isAsyncMode=function(a){return A(a)||z(a)===l};exports.isConcurrentMode=A;exports.isContextConsumer=function(a){return z(a)===k};exports.isContextProvider=function(a){return z(a)===h};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===c};exports.isForwardRef=function(a){return z(a)===n};exports.isFragment=function(a){return z(a)===e};exports.isLazy=function(a){return z(a)===t};\nexports.isMemo=function(a){return z(a)===r};exports.isPortal=function(a){return z(a)===d};exports.isProfiler=function(a){return z(a)===g};exports.isStrictMode=function(a){return z(a)===f};exports.isSuspense=function(a){return z(a)===p};\nexports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===e||a===m||a===g||a===f||a===p||a===q||\"object\"===typeof a&&null!==a&&(a.$$typeof===t||a.$$typeof===r||a.$$typeof===h||a.$$typeof===k||a.$$typeof===n||a.$$typeof===w||a.$$typeof===x||a.$$typeof===y||a.$$typeof===v)};exports.typeOf=z;\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n  module.exports = require('./cjs/react-is.production.min.js');\n} else {\n  module.exports = require('./cjs/react-is.development.js');\n}\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _jsonToCsvExport = require('json-to-csv-export');\n\nvar _jsonToCsvExport2 = _interopRequireDefault(_jsonToCsvExport);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nvar CsvDownload = function CsvDownload(props) {\n  var data = props.data,\n      filename = props.filename,\n      others = _objectWithoutProperties(props, ['data', 'filename']);\n\n  return _react2.default.createElement(\n    'button',\n    _extends({ onClick: function onClick() {\n        return (0, _jsonToCsvExport2.default)(data, filename);\n      } }, others),\n    props.children || 'Download Data'\n  );\n};\nexports.default = CsvDownload;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nfunction componentWillMount() {\n  // Call this.constructor.gDSFP to support sub-classes.\n  var state = this.constructor.getDerivedStateFromProps(this.props, this.state);\n  if (state !== null && state !== undefined) {\n    this.setState(state);\n  }\n}\n\nfunction componentWillReceiveProps(nextProps) {\n  // Call this.constructor.gDSFP to support sub-classes.\n  // Use the setState() updater to ensure state isn't stale in certain edge cases.\n  function updater(prevState) {\n    var state = this.constructor.getDerivedStateFromProps(nextProps, prevState);\n    return state !== null && state !== undefined ? state : null;\n  }\n  // Binding \"this\" is important for shallow renderer support.\n  this.setState(updater.bind(this));\n}\n\nfunction componentWillUpdate(nextProps, nextState) {\n  try {\n    var prevProps = this.props;\n    var prevState = this.state;\n    this.props = nextProps;\n    this.state = nextState;\n    this.__reactInternalSnapshotFlag = true;\n    this.__reactInternalSnapshot = this.getSnapshotBeforeUpdate(\n      prevProps,\n      prevState\n    );\n  } finally {\n    this.props = prevProps;\n    this.state = prevState;\n  }\n}\n\n// React may warn about cWM/cWRP/cWU methods being deprecated.\n// Add a flag to suppress these warnings for this special case.\ncomponentWillMount.__suppressDeprecationWarning = true;\ncomponentWillReceiveProps.__suppressDeprecationWarning = true;\ncomponentWillUpdate.__suppressDeprecationWarning = true;\n\nfunction polyfill(Component) {\n  var prototype = Component.prototype;\n\n  if (!prototype || !prototype.isReactComponent) {\n    throw new Error('Can only polyfill class components');\n  }\n\n  if (\n    typeof Component.getDerivedStateFromProps !== 'function' &&\n    typeof prototype.getSnapshotBeforeUpdate !== 'function'\n  ) {\n    return Component;\n  }\n\n  // If new component APIs are defined, \"unsafe\" lifecycles won't be called.\n  // Error if any of these lifecycles are present,\n  // Because they would work differently between older and newer (16.3+) versions of React.\n  var foundWillMountName = null;\n  var foundWillReceivePropsName = null;\n  var foundWillUpdateName = null;\n  if (typeof prototype.componentWillMount === 'function') {\n    foundWillMountName = 'componentWillMount';\n  } else if (typeof prototype.UNSAFE_componentWillMount === 'function') {\n    foundWillMountName = 'UNSAFE_componentWillMount';\n  }\n  if (typeof prototype.componentWillReceiveProps === 'function') {\n    foundWillReceivePropsName = 'componentWillReceiveProps';\n  } else if (typeof prototype.UNSAFE_componentWillReceiveProps === 'function') {\n    foundWillReceivePropsName = 'UNSAFE_componentWillReceiveProps';\n  }\n  if (typeof prototype.componentWillUpdate === 'function') {\n    foundWillUpdateName = 'componentWillUpdate';\n  } else if (typeof prototype.UNSAFE_componentWillUpdate === 'function') {\n    foundWillUpdateName = 'UNSAFE_componentWillUpdate';\n  }\n  if (\n    foundWillMountName !== null ||\n    foundWillReceivePropsName !== null ||\n    foundWillUpdateName !== null\n  ) {\n    var componentName = Component.displayName || Component.name;\n    var newApiName =\n      typeof Component.getDerivedStateFromProps === 'function'\n        ? 'getDerivedStateFromProps()'\n        : 'getSnapshotBeforeUpdate()';\n\n    throw Error(\n      'Unsafe legacy lifecycles will not be called for components using new component APIs.\\n\\n' +\n        componentName +\n        ' uses ' +\n        newApiName +\n        ' but also contains the following legacy lifecycles:' +\n        (foundWillMountName !== null ? '\\n  ' + foundWillMountName : '') +\n        (foundWillReceivePropsName !== null\n          ? '\\n  ' + foundWillReceivePropsName\n          : '') +\n        (foundWillUpdateName !== null ? '\\n  ' + foundWillUpdateName : '') +\n        '\\n\\nThe above lifecycles should be removed. Learn more about this warning here:\\n' +\n        'https://fb.me/react-async-component-lifecycle-hooks'\n    );\n  }\n\n  // React <= 16.2 does not support static getDerivedStateFromProps.\n  // As a workaround, use cWM and cWRP to invoke the new static lifecycle.\n  // Newer versions of React will ignore these lifecycles if gDSFP exists.\n  if (typeof Component.getDerivedStateFromProps === 'function') {\n    prototype.componentWillMount = componentWillMount;\n    prototype.componentWillReceiveProps = componentWillReceiveProps;\n  }\n\n  // React <= 16.2 does not support getSnapshotBeforeUpdate.\n  // As a workaround, use cWU to invoke the new lifecycle.\n  // Newer versions of React will ignore that lifecycle if gSBU exists.\n  if (typeof prototype.getSnapshotBeforeUpdate === 'function') {\n    if (typeof prototype.componentDidUpdate !== 'function') {\n      throw new Error(\n        'Cannot polyfill getSnapshotBeforeUpdate() for components that do not define componentDidUpdate() on the prototype'\n      );\n    }\n\n    prototype.componentWillUpdate = componentWillUpdate;\n\n    var componentDidUpdate = prototype.componentDidUpdate;\n\n    prototype.componentDidUpdate = function componentDidUpdatePolyfill(\n      prevProps,\n      prevState,\n      maybeSnapshot\n    ) {\n      // 16.3+ will not execute our will-update method;\n      // It will pass a snapshot value to did-update though.\n      // Older versions will require our polyfilled will-update value.\n      // We need to handle both cases, but can't just check for the presence of \"maybeSnapshot\",\n      // Because for <= 15.x versions this might be a \"prevContext\" object.\n      // We also can't just check \"__reactInternalSnapshot\",\n      // Because get-snapshot might return a falsy value.\n      // So check for the explicit __reactInternalSnapshotFlag flag to determine behavior.\n      var snapshot = this.__reactInternalSnapshotFlag\n        ? this.__reactInternalSnapshot\n        : maybeSnapshot;\n\n      componentDidUpdate.call(this, prevProps, prevState, snapshot);\n    };\n  }\n\n  return Component;\n}\n\nexport { polyfill };\n","var window_ = typeof window !== 'undefined' ? window : global;\nvar global_ = typeof global !== 'undefined' ? global : window;\nvar document_ = typeof document !== 'undefined' ? document : {};\nexport { window_ as window, global_ as global, document_ as document };\n//# sourceMappingURL=globals.js.map","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it; if (typeof Symbol === \"undefined\" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = o[Symbol.iterator](); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it[\"return\"] != null) it[\"return\"](); } finally { if (didErr) throw err; } } }; }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nvar refProps = ['type', 'source', 'source-layer', 'minzoom', 'maxzoom', 'filter', 'layout'];\nexport function normalizeStyle(style) {\n  if (!style) {\n    return null;\n  }\n\n  if (typeof style === 'string') {\n    return style;\n  }\n\n  if (style.toJS) {\n    style = style.toJS();\n  }\n\n  var layerIndex = {};\n\n  var _iterator = _createForOfIteratorHelper(style.layers),\n      _step;\n\n  try {\n    for (_iterator.s(); !(_step = _iterator.n()).done;) {\n      var layer = _step.value;\n      layerIndex[layer.id] = layer;\n    }\n  } catch (err) {\n    _iterator.e(err);\n  } finally {\n    _iterator.f();\n  }\n\n  var layers = style.layers.map(function (layer) {\n    var layerRef = layerIndex[layer.ref];\n    var normalizedLayer = null;\n\n    if ('interactive' in layer) {\n      normalizedLayer = _objectSpread({}, layer);\n      delete normalizedLayer.interactive;\n    }\n\n    if (layerRef) {\n      normalizedLayer = normalizedLayer || _objectSpread({}, layer);\n      delete normalizedLayer.ref;\n\n      var _iterator2 = _createForOfIteratorHelper(refProps),\n          _step2;\n\n      try {\n        for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n          var propName = _step2.value;\n\n          if (propName in layerRef) {\n            normalizedLayer[propName] = layerRef[propName];\n          }\n        }\n      } catch (err) {\n        _iterator2.e(err);\n      } finally {\n        _iterator2.f();\n      }\n    }\n\n    return normalizedLayer || layer;\n  });\n  return _objectSpread(_objectSpread({}, style), {}, {\n    layers: layers\n  });\n}\n//# sourceMappingURL=style-utils.js.map","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport * as PropTypes from 'prop-types';\nimport { document } from '../utils/globals';\nimport { normalizeStyle } from '../utils/style-utils';\n\nfunction noop() {}\n\nfunction defaultOnError(event) {\n  if (event) {\n    console.error(event.error);\n  }\n}\n\nvar propTypes = {\n  container: PropTypes.object,\n  gl: PropTypes.object,\n  mapboxApiAccessToken: PropTypes.string,\n  mapboxApiUrl: PropTypes.string,\n  attributionControl: PropTypes.bool,\n  preserveDrawingBuffer: PropTypes.bool,\n  reuseMaps: PropTypes.bool,\n  transformRequest: PropTypes.func,\n  mapOptions: PropTypes.object,\n  mapStyle: PropTypes.oneOfType([PropTypes.string, PropTypes.object]),\n  preventStyleDiffing: PropTypes.bool,\n  visible: PropTypes.bool,\n  asyncRender: PropTypes.bool,\n  onLoad: PropTypes.func,\n  onError: PropTypes.func,\n  width: PropTypes.number,\n  height: PropTypes.number,\n  viewState: PropTypes.object,\n  longitude: PropTypes.number,\n  latitude: PropTypes.number,\n  zoom: PropTypes.number,\n  bearing: PropTypes.number,\n  pitch: PropTypes.number,\n  altitude: PropTypes.number\n};\nvar defaultProps = {\n  container: document.body,\n  mapboxApiAccessToken: getAccessToken(),\n  mapboxApiUrl: 'https://api.mapbox.com',\n  preserveDrawingBuffer: false,\n  attributionControl: true,\n  reuseMaps: false,\n  mapOptions: {},\n  mapStyle: 'mapbox://styles/mapbox/light-v8',\n  preventStyleDiffing: false,\n  visible: true,\n  asyncRender: false,\n  onLoad: noop,\n  onError: defaultOnError,\n  width: 0,\n  height: 0,\n  longitude: 0,\n  latitude: 0,\n  zoom: 0,\n  bearing: 0,\n  pitch: 0,\n  altitude: 1.5\n};\nexport function getAccessToken() {\n  var accessToken = null;\n\n  if (typeof window !== 'undefined' && window.location) {\n    var match = window.location.search.match(/access_token=([^&\\/]*)/);\n    accessToken = match && match[1];\n  }\n\n  if (!accessToken && typeof process !== 'undefined') {\n    accessToken = accessToken || process.env.MapboxAccessToken || process.env.REACT_APP_MAPBOX_ACCESS_TOKEN;\n  }\n\n  return accessToken || 'no-token';\n}\n\nfunction checkPropTypes(props) {\n  var component = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'component';\n\n  if (props.debug) {\n    PropTypes.checkPropTypes(propTypes, props, 'prop', component);\n  }\n}\n\nvar Mapbox = function () {\n  function Mapbox(props) {\n    var _this = this;\n\n    _classCallCheck(this, Mapbox);\n\n    _defineProperty(this, \"props\", defaultProps);\n\n    _defineProperty(this, \"width\", 0);\n\n    _defineProperty(this, \"height\", 0);\n\n    _defineProperty(this, \"_fireLoadEvent\", function () {\n      _this.props.onLoad({\n        type: 'load',\n        target: _this._map\n      });\n    });\n\n    if (!props.mapboxgl) {\n      throw new Error('Mapbox not available');\n    }\n\n    this.mapboxgl = props.mapboxgl;\n\n    if (!Mapbox.initialized) {\n      Mapbox.initialized = true;\n\n      this._checkStyleSheet(this.mapboxgl.version);\n    }\n\n    this._initialize(props);\n  }\n\n  _createClass(Mapbox, [{\n    key: \"finalize\",\n    value: function finalize() {\n      this._destroy();\n\n      return this;\n    }\n  }, {\n    key: \"setProps\",\n    value: function setProps(props) {\n      this._update(this.props, props);\n\n      return this;\n    }\n  }, {\n    key: \"redraw\",\n    value: function redraw() {\n      var map = this._map;\n\n      if (map.style) {\n        if (map._frame) {\n          map._frame.cancel();\n\n          map._frame = null;\n        }\n\n        map._render();\n      }\n    }\n  }, {\n    key: \"getMap\",\n    value: function getMap() {\n      return this._map;\n    }\n  }, {\n    key: \"_reuse\",\n    value: function _reuse(props) {\n      this._map = Mapbox.savedMap;\n\n      var oldContainer = this._map.getContainer();\n\n      var newContainer = props.container;\n      newContainer.classList.add('mapboxgl-map');\n\n      while (oldContainer.childNodes.length > 0) {\n        newContainer.appendChild(oldContainer.childNodes[0]);\n      }\n\n      this._map._container = newContainer;\n      Mapbox.savedMap = null;\n\n      if (props.mapStyle) {\n        this._map.setStyle(normalizeStyle(props.mapStyle), {\n          diff: false\n        });\n      }\n\n      if (this._map.isStyleLoaded()) {\n        this._fireLoadEvent();\n      } else {\n        this._map.once('styledata', this._fireLoadEvent);\n      }\n    }\n  }, {\n    key: \"_create\",\n    value: function _create(props) {\n      if (props.reuseMaps && Mapbox.savedMap) {\n        this._reuse(props);\n      } else {\n        if (props.gl) {\n          var getContext = HTMLCanvasElement.prototype.getContext;\n\n          HTMLCanvasElement.prototype.getContext = function () {\n            HTMLCanvasElement.prototype.getContext = getContext;\n            return props.gl;\n          };\n        }\n\n        var mapOptions = {\n          container: props.container,\n          center: [0, 0],\n          zoom: 8,\n          pitch: 0,\n          bearing: 0,\n          maxZoom: 24,\n          style: normalizeStyle(props.mapStyle),\n          interactive: false,\n          trackResize: false,\n          attributionControl: props.attributionControl,\n          preserveDrawingBuffer: props.preserveDrawingBuffer\n        };\n\n        if (props.transformRequest) {\n          mapOptions.transformRequest = props.transformRequest;\n        }\n\n        this._map = new this.mapboxgl.Map(Object.assign({}, mapOptions, props.mapOptions));\n\n        this._map.once('load', props.onLoad);\n\n        this._map.on('error', props.onError);\n      }\n\n      return this;\n    }\n  }, {\n    key: \"_destroy\",\n    value: function _destroy() {\n      if (!this._map) {\n        return;\n      }\n\n      if (!Mapbox.savedMap) {\n        Mapbox.savedMap = this._map;\n\n        this._map.off('load', this.props.onLoad);\n\n        this._map.off('error', this.props.onError);\n\n        this._map.off('styledata', this._fireLoadEvent);\n      } else {\n        this._map.remove();\n      }\n\n      this._map = null;\n    }\n  }, {\n    key: \"_initialize\",\n    value: function _initialize(props) {\n      var _this2 = this;\n\n      props = Object.assign({}, defaultProps, props);\n      checkPropTypes(props, 'Mapbox');\n      this.mapboxgl.accessToken = props.mapboxApiAccessToken || defaultProps.mapboxApiAccessToken;\n      this.mapboxgl.baseApiUrl = props.mapboxApiUrl;\n\n      this._create(props);\n\n      var _props = props,\n          container = _props.container;\n      Object.defineProperty(container, 'offsetWidth', {\n        get: function get() {\n          return _this2.width;\n        }\n      });\n      Object.defineProperty(container, 'clientWidth', {\n        get: function get() {\n          return _this2.width;\n        }\n      });\n      Object.defineProperty(container, 'offsetHeight', {\n        get: function get() {\n          return _this2.height;\n        }\n      });\n      Object.defineProperty(container, 'clientHeight', {\n        get: function get() {\n          return _this2.height;\n        }\n      });\n\n      var canvas = this._map.getCanvas();\n\n      if (canvas) {\n        canvas.style.outline = 'none';\n      }\n\n      this._updateMapViewport({}, props);\n\n      this._updateMapSize({}, props);\n\n      this.props = props;\n    }\n  }, {\n    key: \"_update\",\n    value: function _update(oldProps, newProps) {\n      if (!this._map) {\n        return;\n      }\n\n      newProps = Object.assign({}, this.props, newProps);\n      checkPropTypes(newProps, 'Mapbox');\n\n      var viewportChanged = this._updateMapViewport(oldProps, newProps);\n\n      var sizeChanged = this._updateMapSize(oldProps, newProps);\n\n      this._updateMapStyle(oldProps, newProps);\n\n      if (!newProps.asyncRender && (viewportChanged || sizeChanged)) {\n        this.redraw();\n      }\n\n      this.props = newProps;\n    }\n  }, {\n    key: \"_updateMapStyle\",\n    value: function _updateMapStyle(oldProps, newProps) {\n      var styleChanged = oldProps.mapStyle !== newProps.mapStyle;\n\n      if (styleChanged) {\n        this._map.setStyle(normalizeStyle(newProps.mapStyle), {\n          diff: !newProps.preventStyleDiffing\n        });\n      }\n    }\n  }, {\n    key: \"_updateMapSize\",\n    value: function _updateMapSize(oldProps, newProps) {\n      var sizeChanged = oldProps.width !== newProps.width || oldProps.height !== newProps.height;\n\n      if (sizeChanged) {\n        this.width = newProps.width;\n        this.height = newProps.height;\n\n        this._map.resize();\n      }\n\n      return sizeChanged;\n    }\n  }, {\n    key: \"_updateMapViewport\",\n    value: function _updateMapViewport(oldProps, newProps) {\n      var oldViewState = this._getViewState(oldProps);\n\n      var newViewState = this._getViewState(newProps);\n\n      var viewportChanged = newViewState.latitude !== oldViewState.latitude || newViewState.longitude !== oldViewState.longitude || newViewState.zoom !== oldViewState.zoom || newViewState.pitch !== oldViewState.pitch || newViewState.bearing !== oldViewState.bearing || newViewState.altitude !== oldViewState.altitude;\n\n      if (viewportChanged) {\n        this._map.jumpTo(this._viewStateToMapboxProps(newViewState));\n\n        if (newViewState.altitude !== oldViewState.altitude) {\n          this._map.transform.altitude = newViewState.altitude;\n        }\n      }\n\n      return viewportChanged;\n    }\n  }, {\n    key: \"_getViewState\",\n    value: function _getViewState(props) {\n      var _ref = props.viewState || props,\n          longitude = _ref.longitude,\n          latitude = _ref.latitude,\n          zoom = _ref.zoom,\n          _ref$pitch = _ref.pitch,\n          pitch = _ref$pitch === void 0 ? 0 : _ref$pitch,\n          _ref$bearing = _ref.bearing,\n          bearing = _ref$bearing === void 0 ? 0 : _ref$bearing,\n          _ref$altitude = _ref.altitude,\n          altitude = _ref$altitude === void 0 ? 1.5 : _ref$altitude;\n\n      return {\n        longitude: longitude,\n        latitude: latitude,\n        zoom: zoom,\n        pitch: pitch,\n        bearing: bearing,\n        altitude: altitude\n      };\n    }\n  }, {\n    key: \"_checkStyleSheet\",\n    value: function _checkStyleSheet() {\n      var mapboxVersion = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '0.47.0';\n\n      if (typeof document === 'undefined') {\n        return;\n      }\n\n      try {\n        var testElement = document.createElement('div');\n        testElement.className = 'mapboxgl-map';\n        testElement.style.display = 'none';\n        document.body.appendChild(testElement);\n        var isCssLoaded = window.getComputedStyle(testElement).position !== 'static';\n\n        if (!isCssLoaded) {\n          var link = document.createElement('link');\n          link.setAttribute('rel', 'stylesheet');\n          link.setAttribute('type', 'text/css');\n          link.setAttribute('href', \"https://api.tiles.mapbox.com/mapbox-gl-js/v\".concat(mapboxVersion, \"/mapbox-gl.css\"));\n          document.head.appendChild(link);\n        }\n      } catch (error) {}\n    }\n  }, {\n    key: \"_viewStateToMapboxProps\",\n    value: function _viewStateToMapboxProps(viewState) {\n      return {\n        center: [viewState.longitude, viewState.latitude],\n        zoom: viewState.zoom,\n        bearing: viewState.bearing,\n        pitch: viewState.pitch\n      };\n    }\n  }]);\n\n  return Mapbox;\n}();\n\n_defineProperty(Mapbox, \"initialized\", false);\n\n_defineProperty(Mapbox, \"propTypes\", propTypes);\n\n_defineProperty(Mapbox, \"defaultProps\", defaultProps);\n\n_defineProperty(Mapbox, \"savedMap\", null);\n\nexport { Mapbox as default };\n//# sourceMappingURL=mapbox.js.map","var EPSILON = 1e-7;\n\nfunction isArray(value) {\n  return Array.isArray(value) || ArrayBuffer.isView(value);\n}\n\nexport function equals(a, b) {\n  if (a === b) {\n    return true;\n  }\n\n  if (isArray(a) && isArray(b)) {\n    if (a.length !== b.length) {\n      return false;\n    }\n\n    for (var i = 0; i < a.length; ++i) {\n      if (!equals(a[i], b[i])) {\n        return false;\n      }\n    }\n\n    return true;\n  }\n\n  return Math.abs(a - b) <= EPSILON;\n}\nexport function clamp(value, min, max) {\n  return Math.max(min, Math.min(max, value));\n}\nexport function lerp(a, b, t) {\n  if (isArray(a)) {\n    return a.map(function (ai, i) {\n      return lerp(ai, b[i], t);\n    });\n  }\n\n  return t * b + (1 - t) * a;\n}\n//# sourceMappingURL=math-utils.js.map","export default function assert(condition, message) {\n  if (!condition) {\n    throw new Error(message || 'react-map-gl: assertion failed.');\n  }\n}\n//# sourceMappingURL=assert.js.map","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nimport WebMercatorViewport, { normalizeViewportProps } from 'viewport-mercator-project';\nimport { clamp } from './math-utils';\nimport assert from './assert';\nexport var MAPBOX_LIMITS = {\n  minZoom: 0,\n  maxZoom: 24,\n  minPitch: 0,\n  maxPitch: 60\n};\nvar DEFAULT_STATE = {\n  pitch: 0,\n  bearing: 0,\n  altitude: 1.5\n};\nvar PITCH_MOUSE_THRESHOLD = 5;\nvar PITCH_ACCEL = 1.2;\n\nvar MapState = function () {\n  function MapState(_ref) {\n    var width = _ref.width,\n        height = _ref.height,\n        latitude = _ref.latitude,\n        longitude = _ref.longitude,\n        zoom = _ref.zoom,\n        _ref$bearing = _ref.bearing,\n        bearing = _ref$bearing === void 0 ? DEFAULT_STATE.bearing : _ref$bearing,\n        _ref$pitch = _ref.pitch,\n        pitch = _ref$pitch === void 0 ? DEFAULT_STATE.pitch : _ref$pitch,\n        _ref$altitude = _ref.altitude,\n        altitude = _ref$altitude === void 0 ? DEFAULT_STATE.altitude : _ref$altitude,\n        _ref$maxZoom = _ref.maxZoom,\n        maxZoom = _ref$maxZoom === void 0 ? MAPBOX_LIMITS.maxZoom : _ref$maxZoom,\n        _ref$minZoom = _ref.minZoom,\n        minZoom = _ref$minZoom === void 0 ? MAPBOX_LIMITS.minZoom : _ref$minZoom,\n        _ref$maxPitch = _ref.maxPitch,\n        maxPitch = _ref$maxPitch === void 0 ? MAPBOX_LIMITS.maxPitch : _ref$maxPitch,\n        _ref$minPitch = _ref.minPitch,\n        minPitch = _ref$minPitch === void 0 ? MAPBOX_LIMITS.minPitch : _ref$minPitch,\n        transitionDuration = _ref.transitionDuration,\n        transitionEasing = _ref.transitionEasing,\n        transitionInterpolator = _ref.transitionInterpolator,\n        transitionInterruption = _ref.transitionInterruption,\n        startPanLngLat = _ref.startPanLngLat,\n        startZoomLngLat = _ref.startZoomLngLat,\n        startRotatePos = _ref.startRotatePos,\n        startBearing = _ref.startBearing,\n        startPitch = _ref.startPitch,\n        startZoom = _ref.startZoom;\n\n    _classCallCheck(this, MapState);\n\n    assert(Number.isFinite(width), '`width` must be supplied');\n    assert(Number.isFinite(height), '`height` must be supplied');\n    assert(Number.isFinite(longitude), '`longitude` must be supplied');\n    assert(Number.isFinite(latitude), '`latitude` must be supplied');\n    assert(Number.isFinite(zoom), '`zoom` must be supplied');\n    this._viewportProps = this._applyConstraints({\n      width: width,\n      height: height,\n      latitude: latitude,\n      longitude: longitude,\n      zoom: zoom,\n      bearing: bearing,\n      pitch: pitch,\n      altitude: altitude,\n      maxZoom: maxZoom,\n      minZoom: minZoom,\n      maxPitch: maxPitch,\n      minPitch: minPitch,\n      transitionDuration: transitionDuration,\n      transitionEasing: transitionEasing,\n      transitionInterpolator: transitionInterpolator,\n      transitionInterruption: transitionInterruption\n    });\n    this._state = {\n      startPanLngLat: startPanLngLat,\n      startZoomLngLat: startZoomLngLat,\n      startRotatePos: startRotatePos,\n      startBearing: startBearing,\n      startPitch: startPitch,\n      startZoom: startZoom\n    };\n  }\n\n  _createClass(MapState, [{\n    key: \"getViewportProps\",\n    value: function getViewportProps() {\n      return this._viewportProps;\n    }\n  }, {\n    key: \"getState\",\n    value: function getState() {\n      return this._state;\n    }\n  }, {\n    key: \"panStart\",\n    value: function panStart(_ref2) {\n      var pos = _ref2.pos;\n      return this._getUpdatedMapState({\n        startPanLngLat: this._unproject(pos)\n      });\n    }\n  }, {\n    key: \"pan\",\n    value: function pan(_ref3) {\n      var pos = _ref3.pos,\n          startPos = _ref3.startPos;\n\n      var startPanLngLat = this._state.startPanLngLat || this._unproject(startPos);\n\n      if (!startPanLngLat) {\n        return this;\n      }\n\n      var _this$_calculateNewLn = this._calculateNewLngLat({\n        startPanLngLat: startPanLngLat,\n        pos: pos\n      }),\n          _this$_calculateNewLn2 = _slicedToArray(_this$_calculateNewLn, 2),\n          longitude = _this$_calculateNewLn2[0],\n          latitude = _this$_calculateNewLn2[1];\n\n      return this._getUpdatedMapState({\n        longitude: longitude,\n        latitude: latitude\n      });\n    }\n  }, {\n    key: \"panEnd\",\n    value: function panEnd() {\n      return this._getUpdatedMapState({\n        startPanLngLat: null\n      });\n    }\n  }, {\n    key: \"rotateStart\",\n    value: function rotateStart(_ref4) {\n      var pos = _ref4.pos;\n      return this._getUpdatedMapState({\n        startRotatePos: pos,\n        startBearing: this._viewportProps.bearing,\n        startPitch: this._viewportProps.pitch\n      });\n    }\n  }, {\n    key: \"rotate\",\n    value: function rotate(_ref5) {\n      var pos = _ref5.pos,\n          _ref5$deltaAngleX = _ref5.deltaAngleX,\n          deltaAngleX = _ref5$deltaAngleX === void 0 ? 0 : _ref5$deltaAngleX,\n          _ref5$deltaAngleY = _ref5.deltaAngleY,\n          deltaAngleY = _ref5$deltaAngleY === void 0 ? 0 : _ref5$deltaAngleY;\n      var _this$_state = this._state,\n          startRotatePos = _this$_state.startRotatePos,\n          startBearing = _this$_state.startBearing,\n          startPitch = _this$_state.startPitch;\n\n      if (!Number.isFinite(startBearing) || !Number.isFinite(startPitch)) {\n        return this;\n      }\n\n      var newRotation;\n\n      if (pos) {\n        newRotation = this._calculateNewPitchAndBearing(_objectSpread(_objectSpread({}, this._getRotationParams(pos, startRotatePos)), {}, {\n          startBearing: startBearing,\n          startPitch: startPitch\n        }));\n      } else {\n        newRotation = {\n          bearing: startBearing + deltaAngleX,\n          pitch: startPitch + deltaAngleY\n        };\n      }\n\n      return this._getUpdatedMapState(newRotation);\n    }\n  }, {\n    key: \"rotateEnd\",\n    value: function rotateEnd() {\n      return this._getUpdatedMapState({\n        startBearing: null,\n        startPitch: null\n      });\n    }\n  }, {\n    key: \"zoomStart\",\n    value: function zoomStart(_ref6) {\n      var pos = _ref6.pos;\n      return this._getUpdatedMapState({\n        startZoomLngLat: this._unproject(pos),\n        startZoom: this._viewportProps.zoom\n      });\n    }\n  }, {\n    key: \"zoom\",\n    value: function zoom(_ref7) {\n      var pos = _ref7.pos,\n          startPos = _ref7.startPos,\n          scale = _ref7.scale;\n      assert(scale > 0, '`scale` must be a positive number');\n      var _this$_state2 = this._state,\n          startZoom = _this$_state2.startZoom,\n          startZoomLngLat = _this$_state2.startZoomLngLat;\n\n      if (!Number.isFinite(startZoom)) {\n        startZoom = this._viewportProps.zoom;\n        startZoomLngLat = this._unproject(startPos) || this._unproject(pos);\n      }\n\n      assert(startZoomLngLat, '`startZoomLngLat` prop is required ' + 'for zoom behavior to calculate where to position the map.');\n\n      var zoom = this._calculateNewZoom({\n        scale: scale,\n        startZoom: startZoom || 0\n      });\n\n      var zoomedViewport = new WebMercatorViewport(Object.assign({}, this._viewportProps, {\n        zoom: zoom\n      }));\n\n      var _zoomedViewport$getMa = zoomedViewport.getMapCenterByLngLatPosition({\n        lngLat: startZoomLngLat,\n        pos: pos\n      }),\n          _zoomedViewport$getMa2 = _slicedToArray(_zoomedViewport$getMa, 2),\n          longitude = _zoomedViewport$getMa2[0],\n          latitude = _zoomedViewport$getMa2[1];\n\n      return this._getUpdatedMapState({\n        zoom: zoom,\n        longitude: longitude,\n        latitude: latitude\n      });\n    }\n  }, {\n    key: \"zoomEnd\",\n    value: function zoomEnd() {\n      return this._getUpdatedMapState({\n        startZoomLngLat: null,\n        startZoom: null\n      });\n    }\n  }, {\n    key: \"_getUpdatedMapState\",\n    value: function _getUpdatedMapState(newProps) {\n      return new MapState(Object.assign({}, this._viewportProps, this._state, newProps));\n    }\n  }, {\n    key: \"_applyConstraints\",\n    value: function _applyConstraints(props) {\n      var maxZoom = props.maxZoom,\n          minZoom = props.minZoom,\n          zoom = props.zoom;\n      props.zoom = clamp(zoom, minZoom, maxZoom);\n      var maxPitch = props.maxPitch,\n          minPitch = props.minPitch,\n          pitch = props.pitch;\n      props.pitch = clamp(pitch, minPitch, maxPitch);\n      Object.assign(props, normalizeViewportProps(props));\n      return props;\n    }\n  }, {\n    key: \"_unproject\",\n    value: function _unproject(pos) {\n      var viewport = new WebMercatorViewport(this._viewportProps);\n      return pos && viewport.unproject(pos);\n    }\n  }, {\n    key: \"_calculateNewLngLat\",\n    value: function _calculateNewLngLat(_ref8) {\n      var startPanLngLat = _ref8.startPanLngLat,\n          pos = _ref8.pos;\n      var viewport = new WebMercatorViewport(this._viewportProps);\n      return viewport.getMapCenterByLngLatPosition({\n        lngLat: startPanLngLat,\n        pos: pos\n      });\n    }\n  }, {\n    key: \"_calculateNewZoom\",\n    value: function _calculateNewZoom(_ref9) {\n      var scale = _ref9.scale,\n          startZoom = _ref9.startZoom;\n      var _this$_viewportProps = this._viewportProps,\n          maxZoom = _this$_viewportProps.maxZoom,\n          minZoom = _this$_viewportProps.minZoom;\n      var zoom = startZoom + Math.log2(scale);\n      return clamp(zoom, minZoom, maxZoom);\n    }\n  }, {\n    key: \"_calculateNewPitchAndBearing\",\n    value: function _calculateNewPitchAndBearing(_ref10) {\n      var deltaScaleX = _ref10.deltaScaleX,\n          deltaScaleY = _ref10.deltaScaleY,\n          startBearing = _ref10.startBearing,\n          startPitch = _ref10.startPitch;\n      deltaScaleY = clamp(deltaScaleY, -1, 1);\n      var _this$_viewportProps2 = this._viewportProps,\n          minPitch = _this$_viewportProps2.minPitch,\n          maxPitch = _this$_viewportProps2.maxPitch;\n      var bearing = startBearing + 180 * deltaScaleX;\n      var pitch = startPitch;\n\n      if (deltaScaleY > 0) {\n        pitch = startPitch + deltaScaleY * (maxPitch - startPitch);\n      } else if (deltaScaleY < 0) {\n        pitch = startPitch - deltaScaleY * (minPitch - startPitch);\n      }\n\n      return {\n        pitch: pitch,\n        bearing: bearing\n      };\n    }\n  }, {\n    key: \"_getRotationParams\",\n    value: function _getRotationParams(pos, startPos) {\n      var deltaX = pos[0] - startPos[0];\n      var deltaY = pos[1] - startPos[1];\n      var centerY = pos[1];\n      var startY = startPos[1];\n      var _this$_viewportProps3 = this._viewportProps,\n          width = _this$_viewportProps3.width,\n          height = _this$_viewportProps3.height;\n      var deltaScaleX = deltaX / width;\n      var deltaScaleY = 0;\n\n      if (deltaY > 0) {\n        if (Math.abs(height - startY) > PITCH_MOUSE_THRESHOLD) {\n          deltaScaleY = deltaY / (startY - height) * PITCH_ACCEL;\n        }\n      } else if (deltaY < 0) {\n        if (startY > PITCH_MOUSE_THRESHOLD) {\n          deltaScaleY = 1 - centerY / startY;\n        }\n      }\n\n      deltaScaleY = Math.min(1, Math.max(-1, deltaScaleY));\n      return {\n        deltaScaleX: deltaScaleX,\n        deltaScaleY: deltaScaleY\n      };\n    }\n  }]);\n\n  return MapState;\n}();\n\nexport { MapState as default };\n//# sourceMappingURL=map-state.js.map","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nimport * as React from 'react';\nimport { createContext, useState, useContext } from 'react';\nvar MapContext = createContext({\n  viewport: null,\n  map: null,\n  container: null,\n  onViewportChange: null,\n  onViewStateChange: null,\n  eventManager: null\n});\nexport var MapContextProvider = MapContext.Provider;\n\nfunction WrappedProvider(_ref) {\n  var value = _ref.value,\n      children = _ref.children;\n\n  var _useState = useState(null),\n      _useState2 = _slicedToArray(_useState, 2),\n      map = _useState2[0],\n      setMap = _useState2[1];\n\n  var context = useContext(MapContext);\n  value = _objectSpread(_objectSpread({\n    setMap: setMap\n  }, context), {}, {\n    map: context && context.map || map\n  }, value);\n  return React.createElement(MapContextProvider, {\n    value: value\n  }, children);\n}\n\nMapContext.Provider = WrappedProvider;\nexport default MapContext;\n//# sourceMappingURL=map-context.js.map","import { useEffect, useLayoutEffect } from 'react';\nvar useIsomorphicLayoutEffect = typeof window !== 'undefined' ? useLayoutEffect : useEffect;\nexport default useIsomorphicLayoutEffect;\n//# sourceMappingURL=use-isomorphic-layout-effect.js.map","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nimport * as React from 'react';\nimport { useState, useRef, useCallback, useContext, useImperativeHandle, forwardRef } from 'react';\nimport * as PropTypes from 'prop-types';\nimport WebMercatorViewport from 'viewport-mercator-project';\nimport ResizeObserver from 'resize-observer-polyfill';\nimport Mapbox from '../mapbox/mapbox';\nimport mapboxgl from '../utils/mapboxgl';\nimport { checkVisibilityConstraints } from '../utils/map-constraints';\nimport { MAPBOX_LIMITS } from '../utils/map-state';\nimport MapContext, { MapContextProvider } from './map-context';\nimport useIsomorphicLayoutEffect from '../utils/use-isomorphic-layout-effect';\nvar TOKEN_DOC_URL = 'https://visgl.github.io/react-map-gl/docs/get-started/mapbox-tokens';\nvar NO_TOKEN_WARNING = 'A valid API access token is required to use Mapbox data';\n\nfunction noop() {}\n\nexport function getViewport(_ref) {\n  var props = _ref.props,\n      width = _ref.width,\n      height = _ref.height;\n  return new WebMercatorViewport(_objectSpread(_objectSpread(_objectSpread({}, props), props.viewState), {}, {\n    width: width,\n    height: height\n  }));\n}\nvar UNAUTHORIZED_ERROR_CODE = 401;\nvar CONTAINER_STYLE = {\n  position: 'absolute',\n  width: '100%',\n  height: '100%',\n  overflow: 'hidden'\n};\nvar propTypes = Object.assign({}, Mapbox.propTypes, {\n  width: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n  height: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n  onResize: PropTypes.func,\n  disableTokenWarning: PropTypes.bool,\n  visible: PropTypes.bool,\n  className: PropTypes.string,\n  style: PropTypes.object,\n  visibilityConstraints: PropTypes.object\n});\nvar defaultProps = Object.assign({}, Mapbox.defaultProps, {\n  disableTokenWarning: false,\n  visible: true,\n  onResize: noop,\n  className: '',\n  style: null,\n  visibilityConstraints: MAPBOX_LIMITS\n});\n\nfunction NoTokenWarning() {\n  var style = {\n    position: 'absolute',\n    left: 0,\n    top: 0\n  };\n  return React.createElement(\"div\", {\n    key: \"warning\",\n    id: \"no-token-warning\",\n    style: style\n  }, React.createElement(\"h3\", {\n    key: \"header\"\n  }, NO_TOKEN_WARNING), React.createElement(\"div\", {\n    key: \"text\"\n  }, \"For information on setting up your basemap, read\"), React.createElement(\"a\", {\n    key: \"link\",\n    href: TOKEN_DOC_URL\n  }, \"Note on Map Tokens\"));\n}\n\nfunction getRefHandles(mapboxRef) {\n  return {\n    getMap: function getMap() {\n      return mapboxRef.current && mapboxRef.current.getMap();\n    },\n    queryRenderedFeatures: function queryRenderedFeatures(geometry) {\n      var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n      var map = mapboxRef.current && mapboxRef.current.getMap();\n      return map && map.queryRenderedFeatures(geometry, options);\n    }\n  };\n}\n\nvar StaticMap = forwardRef(function (props, ref) {\n  var _useState = useState(true),\n      _useState2 = _slicedToArray(_useState, 2),\n      accessTokenValid = _useState2[0],\n      setTokenState = _useState2[1];\n\n  var _useState3 = useState({\n    width: 0,\n    height: 0\n  }),\n      _useState4 = _slicedToArray(_useState3, 2),\n      size = _useState4[0],\n      setSize = _useState4[1];\n\n  var mapboxRef = useRef(null);\n  var mapDivRef = useRef(null);\n  var containerRef = useRef(null);\n  var overlayRef = useRef(null);\n  var context = useContext(MapContext);\n  useIsomorphicLayoutEffect(function () {\n    if (!StaticMap.supported()) {\n      return undefined;\n    }\n\n    var mapbox = new Mapbox(_objectSpread(_objectSpread(_objectSpread({}, props), size), {}, {\n      mapboxgl: mapboxgl,\n      container: mapDivRef.current,\n      onError: function onError(evt) {\n        var statusCode = evt.error && evt.error.status || evt.status;\n\n        if (statusCode === UNAUTHORIZED_ERROR_CODE && accessTokenValid) {\n          console.error(NO_TOKEN_WARNING);\n          setTokenState(false);\n        }\n\n        props.onError(evt);\n      }\n    }));\n    mapboxRef.current = mapbox;\n\n    if (context && context.setMap) {\n      context.setMap(mapbox.getMap());\n    }\n\n    var resizeObserver = new ResizeObserver(function (entries) {\n      if (entries[0].contentRect) {\n        var _entries$0$contentRec = entries[0].contentRect,\n            _width = _entries$0$contentRec.width,\n            _height = _entries$0$contentRec.height;\n        setSize({\n          width: _width,\n          height: _height\n        });\n        props.onResize({\n          width: _width,\n          height: _height\n        });\n      }\n    });\n    resizeObserver.observe(containerRef.current);\n    return function () {\n      mapbox.finalize();\n      mapboxRef.current = null;\n      resizeObserver.disconnect();\n    };\n  }, []);\n  useIsomorphicLayoutEffect(function () {\n    if (mapboxRef.current) {\n      mapboxRef.current.setProps(_objectSpread(_objectSpread({}, props), size));\n    }\n  });\n  var map = mapboxRef.current && mapboxRef.current.getMap();\n  useImperativeHandle(ref, function () {\n    return getRefHandles(mapboxRef);\n  }, []);\n  var preventScroll = useCallback(function (_ref2) {\n    var target = _ref2.target;\n\n    if (target === overlayRef.current) {\n      target.scrollTo(0, 0);\n    }\n  }, []);\n  var overlays = map && React.createElement(MapContextProvider, {\n    value: _objectSpread(_objectSpread({}, context), {}, {\n      viewport: context.viewport || getViewport(_objectSpread({\n        map: map,\n        props: props\n      }, size)),\n      map: map,\n      container: context.container || containerRef.current\n    })\n  }, React.createElement(\"div\", {\n    key: \"map-overlays\",\n    className: \"overlays\",\n    ref: overlayRef,\n    style: CONTAINER_STYLE,\n    onScroll: preventScroll\n  }, props.children));\n  var className = props.className,\n      width = props.width,\n      height = props.height,\n      style = props.style,\n      visibilityConstraints = props.visibilityConstraints;\n  var mapContainerStyle = Object.assign({\n    position: 'relative'\n  }, style, {\n    width: width,\n    height: height\n  });\n  var visible = props.visible && checkVisibilityConstraints(props.viewState || props, visibilityConstraints);\n  var mapStyle = Object.assign({}, CONTAINER_STYLE, {\n    visibility: visible ? 'inherit' : 'hidden'\n  });\n  return React.createElement(\"div\", {\n    key: \"map-container\",\n    ref: containerRef,\n    style: mapContainerStyle\n  }, React.createElement(\"div\", {\n    key: \"map-mapbox\",\n    ref: mapDivRef,\n    style: mapStyle,\n    className: className\n  }), overlays, !accessTokenValid && !props.disableTokenWarning && React.createElement(NoTokenWarning, null));\n});\n\nStaticMap.supported = function () {\n  return mapboxgl && mapboxgl.supported();\n};\n\nStaticMap.propTypes = propTypes;\nStaticMap.defaultProps = defaultProps;\nexport default StaticMap;\n//# sourceMappingURL=static-map.js.map","import { MAPBOX_LIMITS } from './map-state';\n\nfunction decapitalize(s) {\n  return s[0].toLowerCase() + s.slice(1);\n}\n\nexport function checkVisibilityConstraints(props) {\n  var constraints = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : MAPBOX_LIMITS;\n\n  for (var constraintName in constraints) {\n    var type = constraintName.slice(0, 3);\n    var propName = decapitalize(constraintName.slice(3));\n\n    if (type === 'min' && props[propName] < constraints[constraintName]) {\n      return false;\n    }\n\n    if (type === 'max' && props[propName] > constraints[constraintName]) {\n      return false;\n    }\n  }\n\n  return true;\n}\n//# sourceMappingURL=map-constraints.js.map","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\n\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it; if (typeof Symbol === \"undefined\" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = o[Symbol.iterator](); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it[\"return\"] != null) it[\"return\"](); } finally { if (didErr) throw err; } } }; }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nimport { equals } from '../math-utils';\nimport assert from '../assert';\n\nvar TransitionInterpolator = function () {\n  function TransitionInterpolator() {\n    _classCallCheck(this, TransitionInterpolator);\n\n    _defineProperty(this, \"propNames\", []);\n  }\n\n  _createClass(TransitionInterpolator, [{\n    key: \"arePropsEqual\",\n    value: function arePropsEqual(currentProps, nextProps) {\n      var _iterator = _createForOfIteratorHelper(this.propNames || []),\n          _step;\n\n      try {\n        for (_iterator.s(); !(_step = _iterator.n()).done;) {\n          var key = _step.value;\n\n          if (!equals(currentProps[key], nextProps[key])) {\n            return false;\n          }\n        }\n      } catch (err) {\n        _iterator.e(err);\n      } finally {\n        _iterator.f();\n      }\n\n      return true;\n    }\n  }, {\n    key: \"initializeProps\",\n    value: function initializeProps(startProps, endProps) {\n      return {\n        start: startProps,\n        end: endProps\n      };\n    }\n  }, {\n    key: \"interpolateProps\",\n    value: function interpolateProps(startProps, endProps, t) {\n      assert(false, 'interpolateProps is not implemented');\n    }\n  }, {\n    key: \"getDuration\",\n    value: function getDuration(startProps, endProps) {\n      return endProps.transitionDuration;\n    }\n  }]);\n\n  return TransitionInterpolator;\n}();\n\nexport { TransitionInterpolator as default };\n//# sourceMappingURL=transition-interpolator.js.map","import _typeof from \"./typeof.js\";\nimport assertThisInitialized from \"./assertThisInitialized.js\";\nfunction _possibleConstructorReturn(t, e) {\n  if (e && (\"object\" == _typeof(e) || \"function\" == typeof e)) return e;\n  if (void 0 !== e) throw new TypeError(\"Derived constructors may only return object or undefined\");\n  return assertThisInitialized(t);\n}\nexport { _possibleConstructorReturn as default };","function _getPrototypeOf(t) {\n  return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) {\n    return t.__proto__ || Object.getPrototypeOf(t);\n  }, _getPrototypeOf(t);\n}\nexport { _getPrototypeOf as default };","var WRAPPED_ANGULAR_PROPS = {\n  longitude: 1,\n  bearing: 1\n};\nexport function mod(value, divisor) {\n  var modulus = value % divisor;\n  return modulus < 0 ? divisor + modulus : modulus;\n}\nexport function isValid(prop) {\n  return Number.isFinite(prop) || Array.isArray(prop);\n}\n\nfunction isWrappedAngularProp(propName) {\n  return propName in WRAPPED_ANGULAR_PROPS;\n}\n\nexport function getEndValueByShortestPath(propName, startValue, endValue) {\n  if (isWrappedAngularProp(propName) && Math.abs(endValue - startValue) > 180) {\n    endValue = endValue < 0 ? endValue + 360 : endValue - 360;\n  }\n\n  return endValue;\n}\n//# sourceMappingURL=transition-utils.js.map","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/esm/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/esm/getPrototypeOf\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\n\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it; if (typeof Symbol === \"undefined\" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = o[Symbol.iterator](); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it[\"return\"] != null) it[\"return\"](); } finally { if (didErr) throw err; } } }; }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nimport assert from '../assert';\nimport TransitionInterpolator from './transition-interpolator';\nimport { flyToViewport, getFlyToDuration } from 'viewport-mercator-project';\nimport { isValid, getEndValueByShortestPath } from './transition-utils';\nimport { lerp } from '../math-utils';\nvar VIEWPORT_TRANSITION_PROPS = ['longitude', 'latitude', 'zoom', 'bearing', 'pitch'];\nvar REQUIRED_PROPS = ['latitude', 'longitude', 'zoom', 'width', 'height'];\nvar LINEARLY_INTERPOLATED_PROPS = ['bearing', 'pitch'];\nvar DEFAULT_OPTS = {\n  speed: 1.2,\n  curve: 1.414\n};\n\nvar ViewportFlyToInterpolator = function (_TransitionInterpolat) {\n  _inherits(ViewportFlyToInterpolator, _TransitionInterpolat);\n\n  var _super = _createSuper(ViewportFlyToInterpolator);\n\n  function ViewportFlyToInterpolator() {\n    var _this;\n\n    var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n    _classCallCheck(this, ViewportFlyToInterpolator);\n\n    _this = _super.call(this);\n\n    _defineProperty(_assertThisInitialized(_this), \"propNames\", VIEWPORT_TRANSITION_PROPS);\n\n    _this.props = Object.assign({}, DEFAULT_OPTS, props);\n    return _this;\n  }\n\n  _createClass(ViewportFlyToInterpolator, [{\n    key: \"initializeProps\",\n    value: function initializeProps(startProps, endProps) {\n      var startViewportProps = {};\n      var endViewportProps = {};\n\n      var _iterator = _createForOfIteratorHelper(REQUIRED_PROPS),\n          _step;\n\n      try {\n        for (_iterator.s(); !(_step = _iterator.n()).done;) {\n          var key = _step.value;\n          var startValue = startProps[key];\n          var endValue = endProps[key];\n          assert(isValid(startValue) && isValid(endValue), \"\".concat(key, \" must be supplied for transition\"));\n          startViewportProps[key] = startValue;\n          endViewportProps[key] = getEndValueByShortestPath(key, startValue, endValue);\n        }\n      } catch (err) {\n        _iterator.e(err);\n      } finally {\n        _iterator.f();\n      }\n\n      var _iterator2 = _createForOfIteratorHelper(LINEARLY_INTERPOLATED_PROPS),\n          _step2;\n\n      try {\n        for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n          var _key = _step2.value;\n\n          var _startValue = startProps[_key] || 0;\n\n          var _endValue = endProps[_key] || 0;\n\n          startViewportProps[_key] = _startValue;\n          endViewportProps[_key] = getEndValueByShortestPath(_key, _startValue, _endValue);\n        }\n      } catch (err) {\n        _iterator2.e(err);\n      } finally {\n        _iterator2.f();\n      }\n\n      return {\n        start: startViewportProps,\n        end: endViewportProps\n      };\n    }\n  }, {\n    key: \"interpolateProps\",\n    value: function interpolateProps(startProps, endProps, t) {\n      var viewport = flyToViewport(startProps, endProps, t, this.props);\n\n      var _iterator3 = _createForOfIteratorHelper(LINEARLY_INTERPOLATED_PROPS),\n          _step3;\n\n      try {\n        for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {\n          var key = _step3.value;\n          viewport[key] = lerp(startProps[key], endProps[key], t);\n        }\n      } catch (err) {\n        _iterator3.e(err);\n      } finally {\n        _iterator3.f();\n      }\n\n      return viewport;\n    }\n  }, {\n    key: \"getDuration\",\n    value: function getDuration(startProps, endProps) {\n      var transitionDuration = endProps.transitionDuration;\n\n      if (transitionDuration === 'auto') {\n        transitionDuration = getFlyToDuration(startProps, endProps, this.props);\n      }\n\n      return transitionDuration;\n    }\n  }]);\n\n  return ViewportFlyToInterpolator;\n}(TransitionInterpolator);\n\nexport { ViewportFlyToInterpolator as default };\n//# sourceMappingURL=viewport-fly-to-interpolator.js.map","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/esm/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/esm/getPrototypeOf\";\n\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it; if (typeof Symbol === \"undefined\" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = o[Symbol.iterator](); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it[\"return\"] != null) it[\"return\"](); } finally { if (didErr) throw err; } } }; }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nimport WebMercatorViewport from 'viewport-mercator-project';\nimport assert from '../assert';\nimport TransitionInterpolator from './transition-interpolator';\nimport { isValid, getEndValueByShortestPath } from './transition-utils';\nimport { lerp } from '../math-utils';\nvar VIEWPORT_TRANSITION_PROPS = ['longitude', 'latitude', 'zoom', 'bearing', 'pitch'];\n\nvar LinearInterpolator = function (_TransitionInterpolat) {\n  _inherits(LinearInterpolator, _TransitionInterpolat);\n\n  var _super = _createSuper(LinearInterpolator);\n\n  function LinearInterpolator() {\n    var _this;\n\n    var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n    _classCallCheck(this, LinearInterpolator);\n\n    _this = _super.call(this);\n\n    if (Array.isArray(opts)) {\n      opts = {\n        transitionProps: opts\n      };\n    }\n\n    _this.propNames = opts.transitionProps || VIEWPORT_TRANSITION_PROPS;\n\n    if (opts.around) {\n      _this.around = opts.around;\n    }\n\n    return _this;\n  }\n\n  _createClass(LinearInterpolator, [{\n    key: \"initializeProps\",\n    value: function initializeProps(startProps, endProps) {\n      var startViewportProps = {};\n      var endViewportProps = {};\n\n      if (this.around) {\n        startViewportProps.around = this.around;\n        var aroundLngLat = new WebMercatorViewport(startProps).unproject(this.around);\n        Object.assign(endViewportProps, endProps, {\n          around: new WebMercatorViewport(endProps).project(aroundLngLat),\n          aroundLngLat: aroundLngLat\n        });\n      }\n\n      var _iterator = _createForOfIteratorHelper(this.propNames),\n          _step;\n\n      try {\n        for (_iterator.s(); !(_step = _iterator.n()).done;) {\n          var key = _step.value;\n          var startValue = startProps[key];\n          var endValue = endProps[key];\n          assert(isValid(startValue) && isValid(endValue), \"\".concat(key, \" must be supplied for transition\"));\n          startViewportProps[key] = startValue;\n          endViewportProps[key] = getEndValueByShortestPath(key, startValue, endValue);\n        }\n      } catch (err) {\n        _iterator.e(err);\n      } finally {\n        _iterator.f();\n      }\n\n      return {\n        start: startViewportProps,\n        end: endViewportProps\n      };\n    }\n  }, {\n    key: \"interpolateProps\",\n    value: function interpolateProps(startProps, endProps, t) {\n      var viewport = {};\n\n      var _iterator2 = _createForOfIteratorHelper(this.propNames),\n          _step2;\n\n      try {\n        for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n          var key = _step2.value;\n          viewport[key] = lerp(startProps[key], endProps[key], t);\n        }\n      } catch (err) {\n        _iterator2.e(err);\n      } finally {\n        _iterator2.f();\n      }\n\n      if (endProps.around) {\n        var _WebMercatorViewport$ = new WebMercatorViewport(Object.assign({}, endProps, viewport)).getMapCenterByLngLatPosition({\n          lngLat: endProps.aroundLngLat,\n          pos: lerp(startProps.around, endProps.around, t)\n        }),\n            _WebMercatorViewport$2 = _slicedToArray(_WebMercatorViewport$, 2),\n            longitude = _WebMercatorViewport$2[0],\n            latitude = _WebMercatorViewport$2[1];\n\n        viewport.longitude = longitude;\n        viewport.latitude = latitude;\n      }\n\n      return viewport;\n    }\n  }]);\n\n  return LinearInterpolator;\n}(TransitionInterpolator);\n\nexport { LinearInterpolator as default };\n//# sourceMappingURL=linear-interpolator.js.map","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport assert from './assert';\nimport { LinearInterpolator } from './transition';\nimport MapState from './map-state';\n\nvar noop = function noop() {};\n\nexport function cropEasingFunction(easing, x0) {\n  var y0 = easing(x0);\n  return function (t) {\n    return 1 / (1 - y0) * (easing(t * (1 - x0) + x0) - y0);\n  };\n}\nexport var TRANSITION_EVENTS = {\n  BREAK: 1,\n  SNAP_TO_END: 2,\n  IGNORE: 3,\n  UPDATE: 4\n};\nvar DEFAULT_PROPS = {\n  transitionDuration: 0,\n  transitionEasing: function transitionEasing(t) {\n    return t;\n  },\n  transitionInterpolator: new LinearInterpolator(),\n  transitionInterruption: TRANSITION_EVENTS.BREAK,\n  onTransitionStart: noop,\n  onTransitionInterrupt: noop,\n  onTransitionEnd: noop\n};\n\nvar TransitionManager = function () {\n  function TransitionManager() {\n    var _this = this;\n\n    var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n    _classCallCheck(this, TransitionManager);\n\n    _defineProperty(this, \"_animationFrame\", null);\n\n    _defineProperty(this, \"_onTransitionFrame\", function () {\n      _this._animationFrame = requestAnimationFrame(_this._onTransitionFrame);\n\n      _this._updateViewport();\n    });\n\n    this.props = null;\n    this.onViewportChange = opts.onViewportChange || noop;\n    this.onStateChange = opts.onStateChange || noop;\n    this.time = opts.getTime || Date.now;\n  }\n\n  _createClass(TransitionManager, [{\n    key: \"getViewportInTransition\",\n    value: function getViewportInTransition() {\n      return this._animationFrame ? this.state.propsInTransition : null;\n    }\n  }, {\n    key: \"processViewportChange\",\n    value: function processViewportChange(nextProps) {\n      var currentProps = this.props;\n      this.props = nextProps;\n\n      if (!currentProps || this._shouldIgnoreViewportChange(currentProps, nextProps)) {\n        return false;\n      }\n\n      if (this._isTransitionEnabled(nextProps)) {\n        var startProps = Object.assign({}, currentProps);\n        var endProps = Object.assign({}, nextProps);\n\n        if (this._isTransitionInProgress()) {\n          currentProps.onTransitionInterrupt();\n\n          if (this.state.interruption === TRANSITION_EVENTS.SNAP_TO_END) {\n            Object.assign(startProps, this.state.endProps);\n          } else {\n            Object.assign(startProps, this.state.propsInTransition);\n          }\n\n          if (this.state.interruption === TRANSITION_EVENTS.UPDATE) {\n            var currentTime = this.time();\n            var x0 = (currentTime - this.state.startTime) / this.state.duration;\n            endProps.transitionDuration = this.state.duration - (currentTime - this.state.startTime);\n            endProps.transitionEasing = cropEasingFunction(this.state.easing, x0);\n            endProps.transitionInterpolator = startProps.transitionInterpolator;\n          }\n        }\n\n        endProps.onTransitionStart();\n\n        this._triggerTransition(startProps, endProps);\n\n        return true;\n      }\n\n      if (this._isTransitionInProgress()) {\n        currentProps.onTransitionInterrupt();\n\n        this._endTransition();\n      }\n\n      return false;\n    }\n  }, {\n    key: \"_isTransitionInProgress\",\n    value: function _isTransitionInProgress() {\n      return Boolean(this._animationFrame);\n    }\n  }, {\n    key: \"_isTransitionEnabled\",\n    value: function _isTransitionEnabled(props) {\n      var transitionDuration = props.transitionDuration,\n          transitionInterpolator = props.transitionInterpolator;\n      return (transitionDuration > 0 || transitionDuration === 'auto') && Boolean(transitionInterpolator);\n    }\n  }, {\n    key: \"_isUpdateDueToCurrentTransition\",\n    value: function _isUpdateDueToCurrentTransition(props) {\n      if (this.state.propsInTransition) {\n        return this.state.interpolator.arePropsEqual(props, this.state.propsInTransition);\n      }\n\n      return false;\n    }\n  }, {\n    key: \"_shouldIgnoreViewportChange\",\n    value: function _shouldIgnoreViewportChange(currentProps, nextProps) {\n      if (!currentProps) {\n        return true;\n      }\n\n      if (this._isTransitionInProgress()) {\n        return this.state.interruption === TRANSITION_EVENTS.IGNORE || this._isUpdateDueToCurrentTransition(nextProps);\n      }\n\n      if (this._isTransitionEnabled(nextProps)) {\n        return nextProps.transitionInterpolator.arePropsEqual(currentProps, nextProps);\n      }\n\n      return true;\n    }\n  }, {\n    key: \"_triggerTransition\",\n    value: function _triggerTransition(startProps, endProps) {\n      assert(this._isTransitionEnabled(endProps));\n\n      if (this._animationFrame) {\n        cancelAnimationFrame(this._animationFrame);\n      }\n\n      var transitionInterpolator = endProps.transitionInterpolator;\n      var duration = transitionInterpolator.getDuration ? transitionInterpolator.getDuration(startProps, endProps) : endProps.transitionDuration;\n\n      if (duration === 0) {\n        return;\n      }\n\n      var initialProps = endProps.transitionInterpolator.initializeProps(startProps, endProps);\n      var interactionState = {\n        inTransition: true,\n        isZooming: startProps.zoom !== endProps.zoom,\n        isPanning: startProps.longitude !== endProps.longitude || startProps.latitude !== endProps.latitude,\n        isRotating: startProps.bearing !== endProps.bearing || startProps.pitch !== endProps.pitch\n      };\n      this.state = {\n        duration: duration,\n        easing: endProps.transitionEasing,\n        interpolator: endProps.transitionInterpolator,\n        interruption: endProps.transitionInterruption,\n        startTime: this.time(),\n        startProps: initialProps.start,\n        endProps: initialProps.end,\n        animation: null,\n        propsInTransition: {}\n      };\n\n      this._onTransitionFrame();\n\n      this.onStateChange(interactionState);\n    }\n  }, {\n    key: \"_endTransition\",\n    value: function _endTransition() {\n      if (this._animationFrame) {\n        cancelAnimationFrame(this._animationFrame);\n        this._animationFrame = null;\n      }\n\n      this.onStateChange({\n        inTransition: false,\n        isZooming: false,\n        isPanning: false,\n        isRotating: false\n      });\n    }\n  }, {\n    key: \"_updateViewport\",\n    value: function _updateViewport() {\n      var currentTime = this.time();\n      var _this$state = this.state,\n          startTime = _this$state.startTime,\n          duration = _this$state.duration,\n          easing = _this$state.easing,\n          interpolator = _this$state.interpolator,\n          startProps = _this$state.startProps,\n          endProps = _this$state.endProps;\n      var shouldEnd = false;\n      var t = (currentTime - startTime) / duration;\n\n      if (t >= 1) {\n        t = 1;\n        shouldEnd = true;\n      }\n\n      t = easing(t);\n      var viewport = interpolator.interpolateProps(startProps, endProps, t);\n      var mapState = new MapState(Object.assign({}, this.props, viewport));\n      this.state.propsInTransition = mapState.getViewportProps();\n      this.onViewportChange(this.state.propsInTransition, this.props);\n\n      if (shouldEnd) {\n        this._endTransition();\n\n        this.props.onTransitionEnd();\n      }\n    }\n  }]);\n\n  return TransitionManager;\n}();\n\n_defineProperty(TransitionManager, \"defaultProps\", DEFAULT_PROPS);\n\nexport { TransitionManager as default };\n//# sourceMappingURL=transition-manager.js.map","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nimport MapState from './map-state';\nimport { LinearInterpolator } from './transition';\nimport TransitionManager, { TRANSITION_EVENTS } from './transition-manager';\nvar NO_TRANSITION_PROPS = {\n  transitionDuration: 0\n};\nexport var LINEAR_TRANSITION_PROPS = {\n  transitionDuration: 300,\n  transitionEasing: function transitionEasing(t) {\n    return t;\n  },\n  transitionInterpolator: new LinearInterpolator(),\n  transitionInterruption: TRANSITION_EVENTS.BREAK\n};\nvar DEFAULT_INERTIA = 300;\n\nvar INERTIA_EASING = function INERTIA_EASING(t) {\n  return 1 - (1 - t) * (1 - t);\n};\n\nvar EVENT_TYPES = {\n  WHEEL: ['wheel'],\n  PAN: ['panstart', 'panmove', 'panend'],\n  PINCH: ['pinchstart', 'pinchmove', 'pinchend'],\n  TRIPLE_PAN: ['tripanstart', 'tripanmove', 'tripanend'],\n  DOUBLE_TAP: ['doubletap'],\n  KEYBOARD: ['keydown']\n};\n\nvar MapController = function () {\n  function MapController() {\n    var _this = this;\n\n    _classCallCheck(this, MapController);\n\n    _defineProperty(this, \"events\", []);\n\n    _defineProperty(this, \"scrollZoom\", true);\n\n    _defineProperty(this, \"dragPan\", true);\n\n    _defineProperty(this, \"dragRotate\", true);\n\n    _defineProperty(this, \"doubleClickZoom\", true);\n\n    _defineProperty(this, \"touchZoom\", true);\n\n    _defineProperty(this, \"touchRotate\", false);\n\n    _defineProperty(this, \"keyboard\", true);\n\n    _defineProperty(this, \"_interactionState\", {\n      isDragging: false\n    });\n\n    _defineProperty(this, \"_events\", {});\n\n    _defineProperty(this, \"_setInteractionState\", function (newState) {\n      Object.assign(_this._interactionState, newState);\n\n      if (_this.onStateChange) {\n        _this.onStateChange(_this._interactionState);\n      }\n    });\n\n    _defineProperty(this, \"_onTransition\", function (newViewport, oldViewport) {\n      _this.onViewportChange(newViewport, _this._interactionState, oldViewport);\n    });\n\n    this.handleEvent = this.handleEvent.bind(this);\n    this._transitionManager = new TransitionManager({\n      onViewportChange: this._onTransition,\n      onStateChange: this._setInteractionState\n    });\n  }\n\n  _createClass(MapController, [{\n    key: \"handleEvent\",\n    value: function handleEvent(event) {\n      this.mapState = this.getMapState();\n      var eventStartBlocked = this._eventStartBlocked;\n\n      switch (event.type) {\n        case 'panstart':\n          return eventStartBlocked ? false : this._onPanStart(event);\n\n        case 'panmove':\n          return this._onPan(event);\n\n        case 'panend':\n          return this._onPanEnd(event);\n\n        case 'pinchstart':\n          return eventStartBlocked ? false : this._onPinchStart(event);\n\n        case 'pinchmove':\n          return this._onPinch(event);\n\n        case 'pinchend':\n          return this._onPinchEnd(event);\n\n        case 'tripanstart':\n          return eventStartBlocked ? false : this._onTriplePanStart(event);\n\n        case 'tripanmove':\n          return this._onTriplePan(event);\n\n        case 'tripanend':\n          return this._onTriplePanEnd(event);\n\n        case 'doubletap':\n          return this._onDoubleTap(event);\n\n        case 'wheel':\n          return this._onWheel(event);\n\n        case 'keydown':\n          return this._onKeyDown(event);\n\n        default:\n          return false;\n      }\n    }\n  }, {\n    key: \"getCenter\",\n    value: function getCenter(event) {\n      var _event$offsetCenter = event.offsetCenter,\n          x = _event$offsetCenter.x,\n          y = _event$offsetCenter.y;\n      return [x, y];\n    }\n  }, {\n    key: \"isFunctionKeyPressed\",\n    value: function isFunctionKeyPressed(event) {\n      var srcEvent = event.srcEvent;\n      return Boolean(srcEvent.metaKey || srcEvent.altKey || srcEvent.ctrlKey || srcEvent.shiftKey);\n    }\n  }, {\n    key: \"blockEvents\",\n    value: function blockEvents(timeout) {\n      var _this2 = this;\n\n      var timer = setTimeout(function () {\n        if (_this2._eventStartBlocked === timer) {\n          _this2._eventStartBlocked = null;\n        }\n      }, timeout);\n      this._eventStartBlocked = timer;\n    }\n  }, {\n    key: \"updateViewport\",\n    value: function updateViewport(newMapState, extraProps, interactionState) {\n      var oldViewport = this.mapState instanceof MapState ? this.mapState.getViewportProps() : this.mapState;\n\n      var newViewport = _objectSpread(_objectSpread({}, newMapState.getViewportProps()), extraProps);\n\n      var viewStateChanged = Object.keys(newViewport).some(function (key) {\n        return oldViewport[key] !== newViewport[key];\n      });\n      this._state = newMapState.getState();\n\n      this._setInteractionState(interactionState);\n\n      if (viewStateChanged) {\n        this.onViewportChange(newViewport, this._interactionState, oldViewport);\n      }\n    }\n  }, {\n    key: \"getMapState\",\n    value: function getMapState(overrides) {\n      return new MapState(_objectSpread(_objectSpread(_objectSpread({}, this.mapStateProps), this._state), overrides));\n    }\n  }, {\n    key: \"isDragging\",\n    value: function isDragging() {\n      return this._interactionState.isDragging;\n    }\n  }, {\n    key: \"setOptions\",\n    value: function setOptions(options) {\n      var onViewportChange = options.onViewportChange,\n          onStateChange = options.onStateChange,\n          _options$eventManager = options.eventManager,\n          eventManager = _options$eventManager === void 0 ? this.eventManager : _options$eventManager,\n          _options$isInteractiv = options.isInteractive,\n          isInteractive = _options$isInteractiv === void 0 ? true : _options$isInteractiv,\n          _options$scrollZoom = options.scrollZoom,\n          scrollZoom = _options$scrollZoom === void 0 ? this.scrollZoom : _options$scrollZoom,\n          _options$dragPan = options.dragPan,\n          dragPan = _options$dragPan === void 0 ? this.dragPan : _options$dragPan,\n          _options$dragRotate = options.dragRotate,\n          dragRotate = _options$dragRotate === void 0 ? this.dragRotate : _options$dragRotate,\n          _options$doubleClickZ = options.doubleClickZoom,\n          doubleClickZoom = _options$doubleClickZ === void 0 ? this.doubleClickZoom : _options$doubleClickZ,\n          _options$touchZoom = options.touchZoom,\n          touchZoom = _options$touchZoom === void 0 ? this.touchZoom : _options$touchZoom,\n          _options$touchRotate = options.touchRotate,\n          touchRotate = _options$touchRotate === void 0 ? this.touchRotate : _options$touchRotate,\n          _options$keyboard = options.keyboard,\n          keyboard = _options$keyboard === void 0 ? this.keyboard : _options$keyboard;\n      this.onViewportChange = onViewportChange;\n      this.onStateChange = onStateChange;\n      var prevOptions = this.mapStateProps || {};\n      var dimensionChanged = prevOptions.height !== options.height || prevOptions.width !== options.width;\n      this.mapStateProps = options;\n\n      if (dimensionChanged) {\n        this.mapState = prevOptions;\n        this.updateViewport(new MapState(options));\n      }\n\n      this._transitionManager.processViewportChange(options);\n\n      if (this.eventManager !== eventManager) {\n        this.eventManager = eventManager;\n        this._events = {};\n        this.toggleEvents(this.events, true);\n      }\n\n      this.toggleEvents(EVENT_TYPES.WHEEL, isInteractive && Boolean(scrollZoom));\n      this.toggleEvents(EVENT_TYPES.PAN, isInteractive && Boolean(dragPan || dragRotate));\n      this.toggleEvents(EVENT_TYPES.PINCH, isInteractive && Boolean(touchZoom || touchRotate));\n      this.toggleEvents(EVENT_TYPES.TRIPLE_PAN, isInteractive && Boolean(touchRotate));\n      this.toggleEvents(EVENT_TYPES.DOUBLE_TAP, isInteractive && Boolean(doubleClickZoom));\n      this.toggleEvents(EVENT_TYPES.KEYBOARD, isInteractive && Boolean(keyboard));\n      this.scrollZoom = scrollZoom;\n      this.dragPan = dragPan;\n      this.dragRotate = dragRotate;\n      this.doubleClickZoom = doubleClickZoom;\n      this.touchZoom = touchZoom;\n      this.touchRotate = touchRotate;\n      this.keyboard = keyboard;\n    }\n  }, {\n    key: \"toggleEvents\",\n    value: function toggleEvents(eventNames, enabled) {\n      var _this3 = this;\n\n      if (this.eventManager) {\n        eventNames.forEach(function (eventName) {\n          if (_this3._events[eventName] !== enabled) {\n            _this3._events[eventName] = enabled;\n\n            if (enabled) {\n              _this3.eventManager.on(eventName, _this3.handleEvent);\n            } else {\n              _this3.eventManager.off(eventName, _this3.handleEvent);\n            }\n          }\n        });\n      }\n    }\n  }, {\n    key: \"_onPanStart\",\n    value: function _onPanStart(event) {\n      var pos = this.getCenter(event);\n      this._panRotate = this.isFunctionKeyPressed(event) || event.rightButton;\n      var newMapState = this._panRotate ? this.mapState.rotateStart({\n        pos: pos\n      }) : this.mapState.panStart({\n        pos: pos\n      });\n      this.updateViewport(newMapState, NO_TRANSITION_PROPS, {\n        isDragging: true\n      });\n      return true;\n    }\n  }, {\n    key: \"_onPan\",\n    value: function _onPan(event) {\n      if (!this.isDragging()) {\n        return false;\n      }\n\n      return this._panRotate ? this._onPanRotate(event) : this._onPanMove(event);\n    }\n  }, {\n    key: \"_onPanEnd\",\n    value: function _onPanEnd(event) {\n      if (!this.isDragging()) {\n        return false;\n      }\n\n      return this._panRotate ? this._onPanRotateEnd(event) : this._onPanMoveEnd(event);\n    }\n  }, {\n    key: \"_onPanMove\",\n    value: function _onPanMove(event) {\n      if (!this.dragPan) {\n        return false;\n      }\n\n      var pos = this.getCenter(event);\n      var newMapState = this.mapState.pan({\n        pos: pos\n      });\n      this.updateViewport(newMapState, NO_TRANSITION_PROPS, {\n        isPanning: true\n      });\n      return true;\n    }\n  }, {\n    key: \"_onPanMoveEnd\",\n    value: function _onPanMoveEnd(event) {\n      if (this.dragPan) {\n        var _this$dragPan$inertia = this.dragPan.inertia,\n            inertia = _this$dragPan$inertia === void 0 ? DEFAULT_INERTIA : _this$dragPan$inertia;\n\n        if (inertia && event.velocity) {\n          var pos = this.getCenter(event);\n          var endPos = [pos[0] + event.velocityX * inertia / 2, pos[1] + event.velocityY * inertia / 2];\n          var newControllerState = this.mapState.pan({\n            pos: endPos\n          }).panEnd();\n          this.updateViewport(newControllerState, _objectSpread(_objectSpread({}, LINEAR_TRANSITION_PROPS), {}, {\n            transitionDuration: inertia,\n            transitionEasing: INERTIA_EASING\n          }), {\n            isDragging: false,\n            isPanning: true\n          });\n          return true;\n        }\n      }\n\n      var newMapState = this.mapState.panEnd();\n      this.updateViewport(newMapState, null, {\n        isDragging: false,\n        isPanning: false\n      });\n      return true;\n    }\n  }, {\n    key: \"_onPanRotate\",\n    value: function _onPanRotate(event) {\n      if (!this.dragRotate) {\n        return false;\n      }\n\n      var pos = this.getCenter(event);\n      var newMapState = this.mapState.rotate({\n        pos: pos\n      });\n      this.updateViewport(newMapState, NO_TRANSITION_PROPS, {\n        isRotating: true\n      });\n      return true;\n    }\n  }, {\n    key: \"_onPanRotateEnd\",\n    value: function _onPanRotateEnd(event) {\n      if (this.dragRotate) {\n        var _this$dragRotate$iner = this.dragRotate.inertia,\n            inertia = _this$dragRotate$iner === void 0 ? DEFAULT_INERTIA : _this$dragRotate$iner;\n\n        if (inertia && event.velocity) {\n          var pos = this.getCenter(event);\n          var endPos = [pos[0] + event.velocityX * inertia / 2, pos[1] + event.velocityY * inertia / 2];\n          var newControllerState = this.mapState.rotate({\n            pos: endPos\n          }).rotateEnd();\n          this.updateViewport(newControllerState, _objectSpread(_objectSpread({}, LINEAR_TRANSITION_PROPS), {}, {\n            transitionDuration: inertia,\n            transitionEasing: INERTIA_EASING\n          }), {\n            isDragging: false,\n            isRotating: true\n          });\n          return true;\n        }\n      }\n\n      var newMapState = this.mapState.panEnd();\n      this.updateViewport(newMapState, null, {\n        isDragging: false,\n        isRotating: false\n      });\n      return true;\n    }\n  }, {\n    key: \"_onWheel\",\n    value: function _onWheel(event) {\n      if (!this.scrollZoom) {\n        return false;\n      }\n\n      var _this$scrollZoom = this.scrollZoom,\n          _this$scrollZoom$spee = _this$scrollZoom.speed,\n          speed = _this$scrollZoom$spee === void 0 ? 0.01 : _this$scrollZoom$spee,\n          _this$scrollZoom$smoo = _this$scrollZoom.smooth,\n          smooth = _this$scrollZoom$smoo === void 0 ? false : _this$scrollZoom$smoo;\n      event.preventDefault();\n      var pos = this.getCenter(event);\n      var delta = event.delta;\n      var scale = 2 / (1 + Math.exp(-Math.abs(delta * speed)));\n\n      if (delta < 0 && scale !== 0) {\n        scale = 1 / scale;\n      }\n\n      var newMapState = this.mapState.zoom({\n        pos: pos,\n        scale: scale\n      });\n      this.updateViewport(newMapState, _objectSpread(_objectSpread({}, LINEAR_TRANSITION_PROPS), {}, {\n        transitionInterpolator: new LinearInterpolator({\n          around: pos\n        }),\n        transitionDuration: smooth ? 250 : 1\n      }), {\n        isPanning: true,\n        isZooming: true\n      });\n      return true;\n    }\n  }, {\n    key: \"_onPinchStart\",\n    value: function _onPinchStart(event) {\n      var pos = this.getCenter(event);\n      var newMapState = this.mapState.zoomStart({\n        pos: pos\n      }).rotateStart({\n        pos: pos\n      });\n      this._startPinchRotation = event.rotation;\n      this._lastPinchEvent = event;\n      this.updateViewport(newMapState, NO_TRANSITION_PROPS, {\n        isDragging: true\n      });\n      return true;\n    }\n  }, {\n    key: \"_onPinch\",\n    value: function _onPinch(event) {\n      if (!this.isDragging()) {\n        return false;\n      }\n\n      if (!this.touchZoom && !this.touchRotate) {\n        return false;\n      }\n\n      var newMapState = this.mapState;\n\n      if (this.touchZoom) {\n        var scale = event.scale;\n        var pos = this.getCenter(event);\n        newMapState = newMapState.zoom({\n          pos: pos,\n          scale: scale\n        });\n      }\n\n      if (this.touchRotate) {\n        var rotation = event.rotation;\n        newMapState = newMapState.rotate({\n          deltaAngleX: this._startPinchRotation - rotation\n        });\n      }\n\n      this.updateViewport(newMapState, NO_TRANSITION_PROPS, {\n        isDragging: true,\n        isPanning: Boolean(this.touchZoom),\n        isZooming: Boolean(this.touchZoom),\n        isRotating: Boolean(this.touchRotate)\n      });\n      this._lastPinchEvent = event;\n      return true;\n    }\n  }, {\n    key: \"_onPinchEnd\",\n    value: function _onPinchEnd(event) {\n      if (!this.isDragging()) {\n        return false;\n      }\n\n      if (this.touchZoom) {\n        var _this$touchZoom$inert = this.touchZoom.inertia,\n            inertia = _this$touchZoom$inert === void 0 ? DEFAULT_INERTIA : _this$touchZoom$inert;\n        var _lastPinchEvent = this._lastPinchEvent;\n\n        if (inertia && _lastPinchEvent && event.scale !== _lastPinchEvent.scale) {\n          var pos = this.getCenter(event);\n\n          var _newMapState = this.mapState.rotateEnd();\n\n          var z = Math.log2(event.scale);\n\n          var velocityZ = (z - Math.log2(_lastPinchEvent.scale)) / (event.deltaTime - _lastPinchEvent.deltaTime);\n\n          var endScale = Math.pow(2, z + velocityZ * inertia / 2);\n          _newMapState = _newMapState.zoom({\n            pos: pos,\n            scale: endScale\n          }).zoomEnd();\n          this.updateViewport(_newMapState, _objectSpread(_objectSpread({}, LINEAR_TRANSITION_PROPS), {}, {\n            transitionInterpolator: new LinearInterpolator({\n              around: pos\n            }),\n            transitionDuration: inertia,\n            transitionEasing: INERTIA_EASING\n          }), {\n            isDragging: false,\n            isPanning: Boolean(this.touchZoom),\n            isZooming: Boolean(this.touchZoom),\n            isRotating: false\n          });\n          this.blockEvents(inertia);\n          return true;\n        }\n      }\n\n      var newMapState = this.mapState.zoomEnd().rotateEnd();\n      this._state.startPinchRotation = 0;\n      this.updateViewport(newMapState, null, {\n        isDragging: false,\n        isPanning: false,\n        isZooming: false,\n        isRotating: false\n      });\n      this._startPinchRotation = null;\n      this._lastPinchEvent = null;\n      return true;\n    }\n  }, {\n    key: \"_onTriplePanStart\",\n    value: function _onTriplePanStart(event) {\n      var pos = this.getCenter(event);\n      var newMapState = this.mapState.rotateStart({\n        pos: pos\n      });\n      this.updateViewport(newMapState, NO_TRANSITION_PROPS, {\n        isDragging: true\n      });\n      return true;\n    }\n  }, {\n    key: \"_onTriplePan\",\n    value: function _onTriplePan(event) {\n      if (!this.isDragging()) {\n        return false;\n      }\n\n      if (!this.touchRotate) {\n        return false;\n      }\n\n      var pos = this.getCenter(event);\n      pos[0] -= event.deltaX;\n      var newMapState = this.mapState.rotate({\n        pos: pos\n      });\n      this.updateViewport(newMapState, NO_TRANSITION_PROPS, {\n        isRotating: true\n      });\n      return true;\n    }\n  }, {\n    key: \"_onTriplePanEnd\",\n    value: function _onTriplePanEnd(event) {\n      if (!this.isDragging()) {\n        return false;\n      }\n\n      if (this.touchRotate) {\n        var _this$touchRotate$ine = this.touchRotate.inertia,\n            inertia = _this$touchRotate$ine === void 0 ? DEFAULT_INERTIA : _this$touchRotate$ine;\n\n        if (inertia && event.velocityY) {\n          var pos = this.getCenter(event);\n          var endPos = [pos[0], pos[1] += event.velocityY * inertia / 2];\n\n          var _newMapState2 = this.mapState.rotate({\n            pos: endPos\n          });\n\n          this.updateViewport(_newMapState2, _objectSpread(_objectSpread({}, LINEAR_TRANSITION_PROPS), {}, {\n            transitionDuration: inertia,\n            transitionEasing: INERTIA_EASING\n          }), {\n            isDragging: false,\n            isRotating: true\n          });\n          this.blockEvents(inertia);\n          return false;\n        }\n      }\n\n      var newMapState = this.mapState.rotateEnd();\n      this.updateViewport(newMapState, null, {\n        isDragging: false,\n        isRotating: false\n      });\n      return true;\n    }\n  }, {\n    key: \"_onDoubleTap\",\n    value: function _onDoubleTap(event) {\n      if (!this.doubleClickZoom) {\n        return false;\n      }\n\n      var pos = this.getCenter(event);\n      var isZoomOut = this.isFunctionKeyPressed(event);\n      var newMapState = this.mapState.zoom({\n        pos: pos,\n        scale: isZoomOut ? 0.5 : 2\n      });\n      this.updateViewport(newMapState, Object.assign({}, LINEAR_TRANSITION_PROPS, {\n        transitionInterpolator: new LinearInterpolator({\n          around: pos\n        })\n      }), {\n        isZooming: true\n      });\n      return true;\n    }\n  }, {\n    key: \"_onKeyDown\",\n    value: function _onKeyDown(event) {\n      if (!this.keyboard) {\n        return false;\n      }\n\n      var funcKey = this.isFunctionKeyPressed(event);\n      var _this$keyboard = this.keyboard,\n          _this$keyboard$zoomSp = _this$keyboard.zoomSpeed,\n          zoomSpeed = _this$keyboard$zoomSp === void 0 ? 2 : _this$keyboard$zoomSp,\n          _this$keyboard$moveSp = _this$keyboard.moveSpeed,\n          moveSpeed = _this$keyboard$moveSp === void 0 ? 100 : _this$keyboard$moveSp,\n          _this$keyboard$rotate = _this$keyboard.rotateSpeedX,\n          rotateSpeedX = _this$keyboard$rotate === void 0 ? 15 : _this$keyboard$rotate,\n          _this$keyboard$rotate2 = _this$keyboard.rotateSpeedY,\n          rotateSpeedY = _this$keyboard$rotate2 === void 0 ? 10 : _this$keyboard$rotate2;\n      var mapStateProps = this.mapStateProps;\n      var newMapState;\n\n      switch (event.srcEvent.keyCode) {\n        case 189:\n          if (funcKey) {\n            newMapState = this.getMapState({\n              zoom: mapStateProps.zoom - Math.log2(zoomSpeed) - 1\n            });\n          } else {\n            newMapState = this.getMapState({\n              zoom: mapStateProps.zoom - Math.log2(zoomSpeed)\n            });\n          }\n\n          break;\n\n        case 187:\n          if (funcKey) {\n            newMapState = this.getMapState({\n              zoom: mapStateProps.zoom + Math.log2(zoomSpeed) + 1\n            });\n          } else {\n            newMapState = this.getMapState({\n              zoom: mapStateProps.zoom + Math.log2(zoomSpeed)\n            });\n          }\n\n          break;\n\n        case 37:\n          if (funcKey) {\n            newMapState = this.getMapState({\n              bearing: mapStateProps.bearing - rotateSpeedX\n            });\n          } else {\n            newMapState = this.mapState.pan({\n              pos: [moveSpeed, 0],\n              startPos: [0, 0]\n            });\n          }\n\n          break;\n\n        case 39:\n          if (funcKey) {\n            newMapState = this.getMapState({\n              bearing: mapStateProps.bearing + rotateSpeedX\n            });\n          } else {\n            newMapState = this.mapState.pan({\n              pos: [-moveSpeed, 0],\n              startPos: [0, 0]\n            });\n          }\n\n          break;\n\n        case 38:\n          if (funcKey) {\n            newMapState = this.getMapState({\n              pitch: mapStateProps.pitch + rotateSpeedY\n            });\n          } else {\n            newMapState = this.mapState.pan({\n              pos: [0, moveSpeed],\n              startPos: [0, 0]\n            });\n          }\n\n          break;\n\n        case 40:\n          if (funcKey) {\n            newMapState = this.getMapState({\n              pitch: mapStateProps.pitch - rotateSpeedY\n            });\n          } else {\n            newMapState = this.mapState.pan({\n              pos: [0, -moveSpeed],\n              startPos: [0, 0]\n            });\n          }\n\n          break;\n\n        default:\n          return false;\n      }\n\n      return this.updateViewport(newMapState, LINEAR_TRANSITION_PROPS);\n    }\n  }]);\n\n  return MapController;\n}();\n\nexport { MapController as default };\n//# sourceMappingURL=map-controller.js.map","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nimport * as React from 'react';\nimport { useContext, useRef, useMemo, useEffect, useImperativeHandle, forwardRef } from 'react';\nimport * as PropTypes from 'prop-types';\nimport StaticMap, { getViewport } from './static-map';\nimport { MAPBOX_LIMITS } from '../utils/map-state';\nimport TransitionManager from '../utils/transition-manager';\nimport MapContext, { MapContextProvider } from './map-context';\nimport { EventManager } from 'mjolnir.js';\nimport MapController from '../utils/map-controller';\nimport useIsomorphicLayoutEffect from '../utils/use-isomorphic-layout-effect';\nvar propTypes = Object.assign({}, StaticMap.propTypes, {\n  maxZoom: PropTypes.number,\n  minZoom: PropTypes.number,\n  maxPitch: PropTypes.number,\n  minPitch: PropTypes.number,\n  onViewStateChange: PropTypes.func,\n  onViewportChange: PropTypes.func,\n  onInteractionStateChange: PropTypes.func,\n  transitionDuration: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n  transitionInterpolator: PropTypes.object,\n  transitionInterruption: PropTypes.number,\n  transitionEasing: PropTypes.func,\n  onTransitionStart: PropTypes.func,\n  onTransitionInterrupt: PropTypes.func,\n  onTransitionEnd: PropTypes.func,\n  scrollZoom: PropTypes.oneOfType([PropTypes.bool, PropTypes.object]),\n  dragPan: PropTypes.oneOfType([PropTypes.bool, PropTypes.object]),\n  dragRotate: PropTypes.oneOfType([PropTypes.bool, PropTypes.object]),\n  doubleClickZoom: PropTypes.bool,\n  touchZoom: PropTypes.oneOfType([PropTypes.bool, PropTypes.object]),\n  touchRotate: PropTypes.oneOfType([PropTypes.bool, PropTypes.object]),\n  keyboard: PropTypes.oneOfType([PropTypes.bool, PropTypes.object]),\n  onHover: PropTypes.func,\n  onClick: PropTypes.func,\n  onDblClick: PropTypes.func,\n  onContextMenu: PropTypes.func,\n  onMouseDown: PropTypes.func,\n  onMouseMove: PropTypes.func,\n  onMouseUp: PropTypes.func,\n  onTouchStart: PropTypes.func,\n  onTouchMove: PropTypes.func,\n  onTouchEnd: PropTypes.func,\n  onMouseEnter: PropTypes.func,\n  onMouseLeave: PropTypes.func,\n  onMouseOut: PropTypes.func,\n  onWheel: PropTypes.func,\n  touchAction: PropTypes.string,\n  eventRecognizerOptions: PropTypes.object,\n  clickRadius: PropTypes.number,\n  interactiveLayerIds: PropTypes.array,\n  getCursor: PropTypes.func,\n  controller: PropTypes.instanceOf(MapController)\n});\n\nvar getDefaultCursor = function getDefaultCursor(_ref) {\n  var isDragging = _ref.isDragging,\n      isHovering = _ref.isHovering;\n  return isDragging ? 'grabbing' : isHovering ? 'pointer' : 'grab';\n};\n\nvar defaultProps = Object.assign({}, StaticMap.defaultProps, MAPBOX_LIMITS, TransitionManager.defaultProps, {\n  onViewStateChange: null,\n  onViewportChange: null,\n  onClick: null,\n  onNativeClick: null,\n  onHover: null,\n  onContextMenu: function onContextMenu(event) {\n    return event.preventDefault();\n  },\n  scrollZoom: true,\n  dragPan: true,\n  dragRotate: true,\n  doubleClickZoom: true,\n  touchZoom: true,\n  touchRotate: false,\n  keyboard: true,\n  touchAction: 'none',\n  eventRecognizerOptions: {},\n  clickRadius: 0,\n  getCursor: getDefaultCursor\n});\n\nfunction normalizeEvent(event) {\n  if (event.lngLat || !event.offsetCenter) {\n    return event;\n  }\n\n  var _event$offsetCenter = event.offsetCenter,\n      x = _event$offsetCenter.x,\n      y = _event$offsetCenter.y;\n\n  if (!Number.isFinite(x) || !Number.isFinite(y)) {\n    return event;\n  }\n\n  var pos = [x, y];\n  event.point = pos;\n  event.lngLat = this.viewport.unproject(pos);\n  return event;\n}\n\nfunction getFeatures(pos) {\n  var map = this.map;\n\n  if (!map || !pos) {\n    return null;\n  }\n\n  var queryParams = {};\n  var size = this.props.clickRadius;\n\n  if (this.props.interactiveLayerIds) {\n    queryParams.layers = this.props.interactiveLayerIds;\n  }\n\n  try {\n    return map.queryRenderedFeatures(size ? [[pos[0] - size, pos[1] + size], [pos[0] + size, pos[1] - size]] : pos, queryParams);\n  } catch (_unused) {\n    return null;\n  }\n}\n\nfunction onEvent(callbackName, event) {\n  var func = this.props[callbackName];\n\n  if (func) {\n    func(normalizeEvent.call(this, event));\n  }\n}\n\nfunction onPointerDown(event) {\n  onEvent.call(this, event.pointerType === 'touch' ? 'onTouchStart' : 'onMouseDown', event);\n}\n\nfunction onPointerUp(event) {\n  onEvent.call(this, event.pointerType === 'touch' ? 'onTouchEnd' : 'onMouseUp', event);\n}\n\nfunction onPointerMove(event) {\n  onEvent.call(this, event.pointerType === 'touch' ? 'onTouchMove' : 'onMouseMove', event);\n\n  if (!this.state.isDragging) {\n    var _this$props = this.props,\n        onHover = _this$props.onHover,\n        interactiveLayerIds = _this$props.interactiveLayerIds;\n    var features;\n    event = normalizeEvent.call(this, event);\n\n    if (interactiveLayerIds || onHover) {\n      features = getFeatures.call(this, event.point);\n    }\n\n    var isHovering = Boolean(interactiveLayerIds && features && features.length > 0);\n    var isEntering = isHovering && !this.state.isHovering;\n    var isExiting = !isHovering && this.state.isHovering;\n\n    if (onHover || isEntering) {\n      event.features = features;\n\n      if (onHover) {\n        onHover(event);\n      }\n    }\n\n    if (isEntering) {\n      onEvent.call(this, 'onMouseEnter', event);\n    }\n\n    if (isExiting) {\n      onEvent.call(this, 'onMouseLeave', event);\n    }\n\n    if (isEntering || isExiting) {\n      this.setState({\n        isHovering: isHovering\n      });\n    }\n  }\n}\n\nfunction onPointerClick(event) {\n  var _this$props2 = this.props,\n      onClick = _this$props2.onClick,\n      onNativeClick = _this$props2.onNativeClick,\n      onDblClick = _this$props2.onDblClick,\n      doubleClickZoom = _this$props2.doubleClickZoom;\n  var callbacks = [];\n  var isDoubleClickEnabled = onDblClick || doubleClickZoom;\n\n  switch (event.type) {\n    case 'anyclick':\n      callbacks.push(onNativeClick);\n\n      if (!isDoubleClickEnabled) {\n        callbacks.push(onClick);\n      }\n\n      break;\n\n    case 'click':\n      if (isDoubleClickEnabled) {\n        callbacks.push(onClick);\n      }\n\n      break;\n\n    default:\n  }\n\n  callbacks = callbacks.filter(Boolean);\n\n  if (callbacks.length) {\n    event = normalizeEvent.call(this, event);\n    event.features = getFeatures.call(this, event.point);\n    callbacks.forEach(function (cb) {\n      return cb(event);\n    });\n  }\n}\n\nfunction getRefHandles(staticMapRef) {\n  return {\n    getMap: staticMapRef.current && staticMapRef.current.getMap,\n    queryRenderedFeatures: staticMapRef.current && staticMapRef.current.queryRenderedFeatures\n  };\n}\n\nvar InteractiveMap = forwardRef(function (props, ref) {\n  var parentContext = useContext(MapContext);\n  var controller = useMemo(function () {\n    return props.controller || new MapController();\n  }, []);\n  var eventManager = useMemo(function () {\n    return new EventManager(null, {\n      touchAction: props.touchAction,\n      recognizerOptions: props.eventRecognizerOptions\n    });\n  }, []);\n  var eventCanvasRef = useRef(null);\n  var staticMapRef = useRef(null);\n\n  var _thisRef = useRef({\n    width: 0,\n    height: 0,\n    state: {\n      isHovering: false,\n      isDragging: false\n    }\n  });\n\n  var thisRef = _thisRef.current;\n  thisRef.props = props;\n  thisRef.map = staticMapRef.current && staticMapRef.current.getMap();\n\n  thisRef.setState = function (newState) {\n    thisRef.state = _objectSpread(_objectSpread({}, thisRef.state), newState);\n    eventCanvasRef.current.style.cursor = props.getCursor(thisRef.state);\n  };\n\n  var inRender = true;\n  var viewportUpdateRequested;\n  var stateUpdateRequested;\n\n  var handleViewportChange = function handleViewportChange(viewState, interactionState, oldViewState) {\n    if (inRender) {\n      viewportUpdateRequested = [viewState, interactionState, oldViewState];\n      return;\n    }\n\n    var _thisRef$props = thisRef.props,\n        onViewStateChange = _thisRef$props.onViewStateChange,\n        onViewportChange = _thisRef$props.onViewportChange;\n\n    if (onViewStateChange) {\n      onViewStateChange({\n        viewState: viewState,\n        interactionState: interactionState,\n        oldViewState: oldViewState\n      });\n    }\n\n    if (onViewportChange) {\n      onViewportChange(viewState, interactionState, oldViewState);\n    }\n  };\n\n  useImperativeHandle(ref, function () {\n    return getRefHandles(staticMapRef);\n  }, []);\n  var context = useMemo(function () {\n    return _objectSpread(_objectSpread({}, parentContext), {}, {\n      eventManager: eventManager,\n      container: parentContext.container || eventCanvasRef.current\n    });\n  }, [parentContext, eventCanvasRef.current]);\n  context.onViewportChange = handleViewportChange;\n  context.viewport = parentContext.viewport || getViewport(thisRef);\n  thisRef.viewport = context.viewport;\n\n  var handleInteractionStateChange = function handleInteractionStateChange(interactionState) {\n    var _interactionState$isD = interactionState.isDragging,\n        isDragging = _interactionState$isD === void 0 ? false : _interactionState$isD;\n\n    if (isDragging !== thisRef.state.isDragging) {\n      thisRef.setState({\n        isDragging: isDragging\n      });\n    }\n\n    if (inRender) {\n      stateUpdateRequested = interactionState;\n      return;\n    }\n\n    var onInteractionStateChange = thisRef.props.onInteractionStateChange;\n\n    if (onInteractionStateChange) {\n      onInteractionStateChange(interactionState);\n    }\n  };\n\n  var updateControllerOpts = function updateControllerOpts() {\n    if (thisRef.width && thisRef.height) {\n      controller.setOptions(_objectSpread(_objectSpread(_objectSpread({}, thisRef.props), thisRef.props.viewState), {}, {\n        isInteractive: Boolean(thisRef.props.onViewStateChange || thisRef.props.onViewportChange),\n        onViewportChange: handleViewportChange,\n        onStateChange: handleInteractionStateChange,\n        eventManager: eventManager,\n        width: thisRef.width,\n        height: thisRef.height\n      }));\n    }\n  };\n\n  var onResize = function onResize(_ref2) {\n    var width = _ref2.width,\n        height = _ref2.height;\n    thisRef.width = width;\n    thisRef.height = height;\n    updateControllerOpts();\n    thisRef.props.onResize({\n      width: width,\n      height: height\n    });\n  };\n\n  useEffect(function () {\n    eventManager.setElement(eventCanvasRef.current);\n    eventManager.on({\n      pointerdown: onPointerDown.bind(thisRef),\n      pointermove: onPointerMove.bind(thisRef),\n      pointerup: onPointerUp.bind(thisRef),\n      pointerleave: onEvent.bind(thisRef, 'onMouseOut'),\n      click: onPointerClick.bind(thisRef),\n      anyclick: onPointerClick.bind(thisRef),\n      dblclick: onEvent.bind(thisRef, 'onDblClick'),\n      wheel: onEvent.bind(thisRef, 'onWheel'),\n      contextmenu: onEvent.bind(thisRef, 'onContextMenu')\n    });\n    return function () {\n      eventManager.destroy();\n    };\n  }, []);\n  useIsomorphicLayoutEffect(function () {\n    if (viewportUpdateRequested) {\n      handleViewportChange.apply(void 0, _toConsumableArray(viewportUpdateRequested));\n    }\n\n    if (stateUpdateRequested) {\n      handleInteractionStateChange(stateUpdateRequested);\n    }\n  });\n  updateControllerOpts();\n  var width = props.width,\n      height = props.height,\n      style = props.style,\n      getCursor = props.getCursor;\n  var eventCanvasStyle = useMemo(function () {\n    return _objectSpread(_objectSpread({\n      position: 'relative'\n    }, style), {}, {\n      width: width,\n      height: height,\n      cursor: getCursor(thisRef.state)\n    });\n  }, [style, width, height, getCursor, thisRef.state]);\n\n  if (!viewportUpdateRequested || !thisRef._child) {\n    thisRef._child = React.createElement(MapContextProvider, {\n      value: context\n    }, React.createElement(\"div\", {\n      key: \"event-canvas\",\n      ref: eventCanvasRef,\n      style: eventCanvasStyle\n    }, React.createElement(StaticMap, _extends({}, props, {\n      width: \"100%\",\n      height: \"100%\",\n      style: null,\n      onResize: onResize,\n      ref: staticMapRef\n    }))));\n  }\n\n  inRender = false;\n  return thisRef._child;\n});\nInteractiveMap.supported = StaticMap.supported;\nInteractiveMap.propTypes = propTypes;\nInteractiveMap.defaultProps = defaultProps;\nexport default InteractiveMap;\n//# sourceMappingURL=interactive-map.js.map","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nimport * as React from 'react';\nimport { useContext, useEffect, useMemo, useState, useRef } from 'react';\nimport { cloneElement } from 'react';\nimport * as PropTypes from 'prop-types';\nimport MapContext from './map-context';\nimport assert from '../utils/assert';\nimport deepEqual from '../utils/deep-equal';\nvar propTypes = {\n  type: PropTypes.string.isRequired,\n  id: PropTypes.string\n};\nvar sourceCounter = 0;\n\nfunction createSource(map, id, props) {\n  if (map.style && map.style._loaded) {\n    var options = _objectSpread({}, props);\n\n    delete options.id;\n    delete options.children;\n    map.addSource(id, options);\n    return map.getSource(id);\n  }\n\n  return null;\n}\n\nfunction updateSource(source, props, prevProps) {\n  assert(props.id === prevProps.id, 'source id changed');\n  assert(props.type === prevProps.type, 'source type changed');\n  var changedKey = '';\n  var changedKeyCount = 0;\n\n  for (var key in props) {\n    if (key !== 'children' && key !== 'id' && !deepEqual(prevProps[key], props[key])) {\n      changedKey = key;\n      changedKeyCount++;\n    }\n  }\n\n  if (!changedKeyCount) {\n    return;\n  }\n\n  var type = props.type;\n\n  if (type === 'geojson') {\n    source.setData(props.data);\n  } else if (type === 'image') {\n    source.updateImage({\n      url: props.url,\n      coordinates: props.coordinates\n    });\n  } else if ((type === 'canvas' || type === 'video') && changedKeyCount === 1 && changedKey === 'coordinates') {\n    source.setCoordinates(props.coordinates);\n  } else if (type === 'vector' && source.setUrl) {\n    switch (changedKey) {\n      case 'url':\n        source.setUrl(props.url);\n        break;\n\n      case 'tiles':\n        source.setTiles(props.tiles);\n        break;\n\n      default:\n    }\n  } else {\n    console.warn(\"Unable to update <Source> prop: \".concat(changedKey));\n  }\n}\n\nfunction Source(props) {\n  var context = useContext(MapContext);\n  var propsRef = useRef({\n    id: props.id,\n    type: props.type\n  });\n\n  var _useState = useState(0),\n      _useState2 = _slicedToArray(_useState, 2),\n      setStyleLoaded = _useState2[1];\n\n  var id = useMemo(function () {\n    return props.id || \"jsx-source-\".concat(sourceCounter++);\n  }, []);\n  var map = context.map;\n  useEffect(function () {\n    if (map) {\n      var forceUpdate = function forceUpdate() {\n        return setStyleLoaded(function (version) {\n          return version + 1;\n        });\n      };\n\n      map.on('styledata', forceUpdate);\n      return function () {\n        map.off('styledata', forceUpdate);\n        requestAnimationFrame(function () {\n          if (map.style && map.style._loaded && map.getSource(id)) {\n            map.removeSource(id);\n          }\n        });\n      };\n    }\n\n    return undefined;\n  }, [map, id]);\n  var source = map && map.style && map.getSource(id);\n\n  if (source) {\n    updateSource(source, props, propsRef.current);\n  } else {\n    source = createSource(map, id, props);\n  }\n\n  propsRef.current = props;\n  return source && React.Children.map(props.children, function (child) {\n    return child && cloneElement(child, {\n      source: id\n    });\n  }) || null;\n}\n\nSource.propTypes = propTypes;\nexport default Source;\n//# sourceMappingURL=source.js.map","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nimport { useContext, useEffect, useMemo, useState, useRef } from 'react';\nimport * as PropTypes from 'prop-types';\nimport MapContext from './map-context';\nimport assert from '../utils/assert';\nimport deepEqual from '../utils/deep-equal';\nvar LAYER_TYPES = ['fill', 'line', 'symbol', 'circle', 'fill-extrusion', 'raster', 'background', 'heatmap', 'hillshade'];\nvar propTypes = {\n  type: PropTypes.oneOf(LAYER_TYPES).isRequired,\n  id: PropTypes.string,\n  source: PropTypes.string,\n  beforeId: PropTypes.string\n};\n\nfunction diffLayerStyles(map, id, props, prevProps) {\n  var _props$layout = props.layout,\n      layout = _props$layout === void 0 ? {} : _props$layout,\n      _props$paint = props.paint,\n      paint = _props$paint === void 0 ? {} : _props$paint,\n      filter = props.filter,\n      minzoom = props.minzoom,\n      maxzoom = props.maxzoom,\n      beforeId = props.beforeId,\n      otherProps = _objectWithoutProperties(props, [\"layout\", \"paint\", \"filter\", \"minzoom\", \"maxzoom\", \"beforeId\"]);\n\n  if (beforeId !== prevProps.beforeId) {\n    map.moveLayer(id, beforeId);\n  }\n\n  if (layout !== prevProps.layout) {\n    var prevLayout = prevProps.layout || {};\n\n    for (var key in layout) {\n      if (!deepEqual(layout[key], prevLayout[key])) {\n        map.setLayoutProperty(id, key, layout[key]);\n      }\n    }\n\n    for (var _key in prevLayout) {\n      if (!layout.hasOwnProperty(_key)) {\n        map.setLayoutProperty(id, _key, undefined);\n      }\n    }\n  }\n\n  if (paint !== prevProps.paint) {\n    var prevPaint = prevProps.paint || {};\n\n    for (var _key2 in paint) {\n      if (!deepEqual(paint[_key2], prevPaint[_key2])) {\n        map.setPaintProperty(id, _key2, paint[_key2]);\n      }\n    }\n\n    for (var _key3 in prevPaint) {\n      if (!paint.hasOwnProperty(_key3)) {\n        map.setPaintProperty(id, _key3, undefined);\n      }\n    }\n  }\n\n  if (!deepEqual(filter, prevProps.filter)) {\n    map.setFilter(id, filter);\n  }\n\n  if (minzoom !== prevProps.minzoom || maxzoom !== prevProps.maxzoom) {\n    map.setLayerZoomRange(id, minzoom, maxzoom);\n  }\n\n  for (var _key4 in otherProps) {\n    if (!deepEqual(otherProps[_key4], prevProps[_key4])) {\n      map.setLayerProperty(id, _key4, otherProps[_key4]);\n    }\n  }\n}\n\nfunction createLayer(map, id, props) {\n  if (map.style && map.style._loaded) {\n    var options = _objectSpread(_objectSpread({}, props), {}, {\n      id: id\n    });\n\n    delete options.beforeId;\n    map.addLayer(options, props.beforeId);\n  }\n}\n\nfunction updateLayer(map, id, props, prevProps) {\n  assert(props.id === prevProps.id, 'layer id changed');\n  assert(props.type === prevProps.type, 'layer type changed');\n\n  try {\n    diffLayerStyles(map, id, props, prevProps);\n  } catch (error) {\n    console.warn(error);\n  }\n}\n\nvar layerCounter = 0;\n\nfunction Layer(props) {\n  var context = useContext(MapContext);\n  var propsRef = useRef({\n    id: props.id,\n    type: props.type\n  });\n\n  var _useState = useState(0),\n      _useState2 = _slicedToArray(_useState, 2),\n      setStyleLoaded = _useState2[1];\n\n  var id = useMemo(function () {\n    return props.id || \"jsx-layer-\".concat(layerCounter++);\n  }, []);\n  var map = context.map;\n  useEffect(function () {\n    if (map) {\n      var forceUpdate = function forceUpdate() {\n        return setStyleLoaded(function (version) {\n          return version + 1;\n        });\n      };\n\n      map.on('styledata', forceUpdate);\n      return function () {\n        map.off('styledata', forceUpdate);\n\n        if (map.style && map.style._loaded) {\n          map.removeLayer(id);\n        }\n      };\n    }\n\n    return undefined;\n  }, [map]);\n  var layer = map && map.style && map.getLayer(id);\n\n  if (layer) {\n    updateLayer(map, id, props, propsRef.current);\n  } else {\n    createLayer(map, id, props);\n  }\n\n  propsRef.current = props;\n  return null;\n}\n\nLayer.propTypes = propTypes;\nexport default Layer;\n//# sourceMappingURL=layer.js.map","import { useContext, useRef, useEffect } from 'react';\nimport * as PropTypes from 'prop-types';\nimport MapContext from './map-context';\nexport var mapControlDefaultProps = {\n  captureScroll: false,\n  captureDrag: true,\n  captureClick: true,\n  captureDoubleClick: true,\n  capturePointerMove: false\n};\nexport var mapControlPropTypes = {\n  captureScroll: PropTypes.bool,\n  captureDrag: PropTypes.bool,\n  captureClick: PropTypes.bool,\n  captureDoubleClick: PropTypes.bool,\n  capturePointerMove: PropTypes.bool\n};\n\nfunction onMount(thisRef) {\n  var ref = thisRef.containerRef.current;\n  var eventManager = thisRef.context.eventManager;\n\n  if (!ref || !eventManager) {\n    return undefined;\n  }\n\n  var events = {\n    wheel: function wheel(evt) {\n      var props = thisRef.props;\n\n      if (props.captureScroll) {\n        evt.stopPropagation();\n      }\n\n      if (props.onScroll) {\n        props.onScroll(evt, thisRef);\n      }\n    },\n    panstart: function panstart(evt) {\n      var props = thisRef.props;\n\n      if (props.captureDrag) {\n        evt.stopPropagation();\n      }\n\n      if (props.onDragStart) {\n        props.onDragStart(evt, thisRef);\n      }\n    },\n    anyclick: function anyclick(evt) {\n      var props = thisRef.props;\n\n      if (props.captureClick) {\n        evt.stopPropagation();\n      }\n\n      if (props.onClick) {\n        props.onClick(evt, thisRef);\n      }\n    },\n    click: function click(evt) {\n      var props = thisRef.props;\n\n      if (props.captureClick) {\n        evt.stopPropagation();\n      }\n\n      if (props.onClick) {\n        props.onClick(evt, thisRef);\n      }\n    },\n    dblclick: function dblclick(evt) {\n      var props = thisRef.props;\n\n      if (props.captureDoubleClick) {\n        evt.stopPropagation();\n      }\n\n      if (props.onDoubleClick) {\n        props.onDoubleClick(evt, thisRef);\n      }\n    },\n    pointermove: function pointermove(evt) {\n      var props = thisRef.props;\n\n      if (props.capturePointerMove) {\n        evt.stopPropagation();\n      }\n\n      if (props.onPointerMove) {\n        props.onPointerMove(evt, thisRef);\n      }\n    }\n  };\n  eventManager.watch(events, ref);\n  return function () {\n    eventManager.off(events);\n  };\n}\n\nexport default function useMapControl() {\n  var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n  var context = useContext(MapContext);\n  var containerRef = useRef(null);\n\n  var _thisRef = useRef({\n    props: props,\n    state: {},\n    context: context,\n    containerRef: containerRef\n  });\n\n  var thisRef = _thisRef.current;\n  thisRef.props = props;\n  thisRef.context = context;\n  useEffect(function () {\n    return onMount(thisRef);\n  }, [context.eventManager]);\n  return thisRef;\n}\n//# sourceMappingURL=use-map-control.js.map","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/esm/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/esm/getPrototypeOf\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nimport * as React from 'react';\nimport { PureComponent, createRef } from 'react';\nimport useMapControl, { mapControlDefaultProps, mapControlPropTypes } from './use-map-control';\n\nfunction Control(props) {\n  var instance = props.instance;\n\n  var _useMapControl = useMapControl(props),\n      context = _useMapControl.context,\n      containerRef = _useMapControl.containerRef;\n\n  instance._context = context;\n  instance._containerRef = containerRef;\n  return instance._render();\n}\n\nvar BaseControl = function (_PureComponent) {\n  _inherits(BaseControl, _PureComponent);\n\n  var _super = _createSuper(BaseControl);\n\n  function BaseControl() {\n    var _this;\n\n    _classCallCheck(this, BaseControl);\n\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    _this = _super.call.apply(_super, [this].concat(args));\n\n    _defineProperty(_assertThisInitialized(_this), \"_context\", {});\n\n    _defineProperty(_assertThisInitialized(_this), \"_containerRef\", createRef());\n\n    _defineProperty(_assertThisInitialized(_this), \"_onScroll\", function (evt) {});\n\n    _defineProperty(_assertThisInitialized(_this), \"_onDragStart\", function (evt) {});\n\n    _defineProperty(_assertThisInitialized(_this), \"_onDblClick\", function (evt) {});\n\n    _defineProperty(_assertThisInitialized(_this), \"_onClick\", function (evt) {});\n\n    _defineProperty(_assertThisInitialized(_this), \"_onPointerMove\", function (evt) {});\n\n    return _this;\n  }\n\n  _createClass(BaseControl, [{\n    key: \"_render\",\n    value: function _render() {\n      throw new Error('_render() not implemented');\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      return React.createElement(Control, _extends({\n        instance: this\n      }, this.props, {\n        onScroll: this._onScroll,\n        onDragStart: this._onDragStart,\n        onDblClick: this._onDblClick,\n        onClick: this._onClick,\n        onPointerMove: this._onPointerMove\n      }));\n    }\n  }]);\n\n  return BaseControl;\n}(PureComponent);\n\n_defineProperty(BaseControl, \"propTypes\", mapControlPropTypes);\n\n_defineProperty(BaseControl, \"defaultProps\", mapControlDefaultProps);\n\nexport { BaseControl as default };\n//# sourceMappingURL=base-control.js.map","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nimport * as PropTypes from 'prop-types';\nimport { useState, useEffect } from 'react';\nimport useMapControl, { mapControlDefaultProps, mapControlPropTypes } from './use-map-control';\nexport var draggableControlPropTypes = Object.assign({}, mapControlPropTypes, {\n  draggable: PropTypes.bool,\n  onDrag: PropTypes.func,\n  onDragEnd: PropTypes.func,\n  onDragStart: PropTypes.func,\n  offsetLeft: PropTypes.number,\n  offsetTop: PropTypes.number\n});\nexport var draggableControlDefaultProps = Object.assign({}, mapControlDefaultProps, {\n  draggable: false,\n  offsetLeft: 0,\n  offsetTop: 0\n});\n\nfunction getDragEventPosition(event) {\n  var _event$offsetCenter = event.offsetCenter,\n      x = _event$offsetCenter.x,\n      y = _event$offsetCenter.y;\n  return [x, y];\n}\n\nfunction getDragEventOffset(event, container) {\n  var _event$center = event.center,\n      x = _event$center.x,\n      y = _event$center.y;\n\n  if (container) {\n    var rect = container.getBoundingClientRect();\n    return [rect.left - x, rect.top - y];\n  }\n\n  return null;\n}\n\nfunction getDragLngLat(dragPos, dragOffset, props, context) {\n  var x = dragPos[0] + dragOffset[0] - props.offsetLeft;\n  var y = dragPos[1] + dragOffset[1] - props.offsetTop;\n  return context.viewport.unproject([x, y]);\n}\n\nfunction onDragStart(event, _ref) {\n  var props = _ref.props,\n      callbacks = _ref.callbacks,\n      state = _ref.state,\n      context = _ref.context,\n      containerRef = _ref.containerRef;\n  var draggable = props.draggable;\n\n  if (!draggable) {\n    return;\n  }\n\n  event.stopPropagation();\n  var dragPos = getDragEventPosition(event);\n  var dragOffset = getDragEventOffset(event, containerRef.current);\n  state.setDragPos(dragPos);\n  state.setDragOffset(dragOffset);\n\n  if (callbacks.onDragStart && dragOffset) {\n    var callbackEvent = Object.assign({}, event);\n    callbackEvent.lngLat = getDragLngLat(dragPos, dragOffset, props, context);\n    callbacks.onDragStart(callbackEvent);\n  }\n}\n\nfunction onDrag(event, _ref2) {\n  var props = _ref2.props,\n      callbacks = _ref2.callbacks,\n      state = _ref2.state,\n      context = _ref2.context;\n  event.stopPropagation();\n  var dragPos = getDragEventPosition(event);\n  state.setDragPos(dragPos);\n  var dragOffset = state.dragOffset;\n\n  if (callbacks.onDrag && dragOffset) {\n    var callbackEvent = Object.assign({}, event);\n    callbackEvent.lngLat = getDragLngLat(dragPos, dragOffset, props, context);\n    callbacks.onDrag(callbackEvent);\n  }\n}\n\nfunction onDragEnd(event, _ref3) {\n  var props = _ref3.props,\n      callbacks = _ref3.callbacks,\n      state = _ref3.state,\n      context = _ref3.context;\n  event.stopPropagation();\n  var dragPos = state.dragPos,\n      dragOffset = state.dragOffset;\n  state.setDragPos(null);\n  state.setDragOffset(null);\n\n  if (callbacks.onDragEnd && dragPos && dragOffset) {\n    var callbackEvent = Object.assign({}, event);\n    callbackEvent.lngLat = getDragLngLat(dragPos, dragOffset, props, context);\n    callbacks.onDragEnd(callbackEvent);\n  }\n}\n\nfunction onDragCancel(event, _ref4) {\n  var state = _ref4.state;\n  event.stopPropagation();\n  state.setDragPos(null);\n  state.setDragOffset(null);\n}\n\nfunction registerEvents(thisRef) {\n  var eventManager = thisRef.context.eventManager;\n\n  if (!eventManager || !thisRef.state.dragPos) {\n    return undefined;\n  }\n\n  var events = {\n    panmove: function panmove(evt) {\n      return onDrag(evt, thisRef);\n    },\n    panend: function panend(evt) {\n      return onDragEnd(evt, thisRef);\n    },\n    pancancel: function pancancel(evt) {\n      return onDragCancel(evt, thisRef);\n    }\n  };\n  eventManager.watch(events);\n  return function () {\n    eventManager.off(events);\n  };\n}\n\nexport default function useDraggableControl(props) {\n  var _useState = useState(null),\n      _useState2 = _slicedToArray(_useState, 2),\n      dragPos = _useState2[0],\n      setDragPos = _useState2[1];\n\n  var _useState3 = useState(null),\n      _useState4 = _slicedToArray(_useState3, 2),\n      dragOffset = _useState4[0],\n      setDragOffset = _useState4[1];\n\n  var thisRef = useMapControl(_objectSpread(_objectSpread({}, props), {}, {\n    onDragStart: onDragStart\n  }));\n  thisRef.callbacks = props;\n  thisRef.state.dragPos = dragPos;\n  thisRef.state.setDragPos = setDragPos;\n  thisRef.state.dragOffset = dragOffset;\n  thisRef.state.setDragOffset = setDragOffset;\n  useEffect(function () {\n    return registerEvents(thisRef);\n  }, [thisRef.context.eventManager, Boolean(dragPos)]);\n  return thisRef;\n}\n//# sourceMappingURL=draggable-control.js.map","var pixelRatio = typeof window !== 'undefined' && window.devicePixelRatio || 1;\nexport var crispPixel = function crispPixel(size) {\n  return Math.round(size * pixelRatio) / pixelRatio;\n};\nexport var crispPercentage = function crispPercentage(el, percentage) {\n  var dimension = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'x';\n\n  if (el === null) {\n    return percentage;\n  }\n\n  var origSize = dimension === 'x' ? el.offsetWidth : el.offsetHeight;\n  return crispPixel(percentage / 100 * origSize) / origSize * 100;\n};\n//# sourceMappingURL=crisp-pixel.js.map","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport * as React from 'react';\nimport { useMemo } from 'react';\nimport * as PropTypes from 'prop-types';\nimport useDraggableControl, { draggableControlDefaultProps, draggableControlPropTypes } from './draggable-control';\nimport { crispPixel } from '../utils/crisp-pixel';\nvar propTypes = Object.assign({}, draggableControlPropTypes, {\n  className: PropTypes.string,\n  longitude: PropTypes.number.isRequired,\n  latitude: PropTypes.number.isRequired\n});\nvar defaultProps = Object.assign({}, draggableControlDefaultProps, {\n  className: ''\n});\n\nfunction getPosition(_ref) {\n  var props = _ref.props,\n      state = _ref.state,\n      context = _ref.context;\n  var longitude = props.longitude,\n      latitude = props.latitude,\n      offsetLeft = props.offsetLeft,\n      offsetTop = props.offsetTop;\n  var dragPos = state.dragPos,\n      dragOffset = state.dragOffset;\n\n  if (dragPos && dragOffset) {\n    return [dragPos[0] + dragOffset[0], dragPos[1] + dragOffset[1]];\n  }\n\n  var _context$viewport$pro = context.viewport.project([longitude, latitude]),\n      _context$viewport$pro2 = _slicedToArray(_context$viewport$pro, 2),\n      x = _context$viewport$pro2[0],\n      y = _context$viewport$pro2[1];\n\n  x += offsetLeft;\n  y += offsetTop;\n  return [x, y];\n}\n\nfunction Marker(props) {\n  var thisRef = useDraggableControl(props);\n  var state = thisRef.state,\n      containerRef = thisRef.containerRef;\n  var children = props.children,\n      className = props.className,\n      draggable = props.draggable;\n  var dragPos = state.dragPos;\n\n  var _getPosition = getPosition(thisRef),\n      _getPosition2 = _slicedToArray(_getPosition, 2),\n      x = _getPosition2[0],\n      y = _getPosition2[1];\n\n  var transform = \"translate(\".concat(crispPixel(x), \"px, \").concat(crispPixel(y), \"px)\");\n  var cursor = draggable ? dragPos ? 'grabbing' : 'grab' : 'auto';\n  var control = useMemo(function () {\n    var containerStyle = {\n      position: 'absolute',\n      left: 0,\n      top: 0,\n      transform: transform,\n      cursor: cursor\n    };\n    return React.createElement(\"div\", {\n      className: \"mapboxgl-marker \".concat(className),\n      ref: thisRef.containerRef,\n      style: containerStyle\n    }, children);\n  }, [children, className]);\n  var container = containerRef.current;\n\n  if (container) {\n    container.style.transform = transform;\n    container.style.cursor = cursor;\n  }\n\n  return control;\n}\n\nMarker.defaultProps = defaultProps;\nMarker.propTypes = propTypes;\nexport default React.memo(Marker);\n//# sourceMappingURL=marker.js.map","export var ANCHOR_POSITION = {\n  top: {\n    x: 0.5,\n    y: 0\n  },\n  'top-left': {\n    x: 0,\n    y: 0\n  },\n  'top-right': {\n    x: 1,\n    y: 0\n  },\n  bottom: {\n    x: 0.5,\n    y: 1\n  },\n  'bottom-left': {\n    x: 0,\n    y: 1\n  },\n  'bottom-right': {\n    x: 1,\n    y: 1\n  },\n  left: {\n    x: 0,\n    y: 0.5\n  },\n  right: {\n    x: 1,\n    y: 0.5\n  }\n};\nvar ANCHOR_TYPES = Object.keys(ANCHOR_POSITION);\nexport function getDynamicPosition(_ref) {\n  var x = _ref.x,\n      y = _ref.y,\n      width = _ref.width,\n      height = _ref.height,\n      selfWidth = _ref.selfWidth,\n      selfHeight = _ref.selfHeight,\n      anchor = _ref.anchor,\n      _ref$padding = _ref.padding,\n      padding = _ref$padding === void 0 ? 0 : _ref$padding;\n  var _ANCHOR_POSITION$anch = ANCHOR_POSITION[anchor],\n      anchorX = _ANCHOR_POSITION$anch.x,\n      anchorY = _ANCHOR_POSITION$anch.y;\n  var top = y - anchorY * selfHeight;\n  var bottom = top + selfHeight;\n  var cutoffY = Math.max(0, padding - top) + Math.max(0, bottom - height + padding);\n\n  if (cutoffY > 0) {\n    var bestAnchorY = anchorY;\n    var minCutoff = cutoffY;\n\n    for (anchorY = 0; anchorY <= 1; anchorY += 0.5) {\n      top = y - anchorY * selfHeight;\n      bottom = top + selfHeight;\n      cutoffY = Math.max(0, padding - top) + Math.max(0, bottom - height + padding);\n\n      if (cutoffY < minCutoff) {\n        minCutoff = cutoffY;\n        bestAnchorY = anchorY;\n      }\n    }\n\n    anchorY = bestAnchorY;\n  }\n\n  var xStep = 0.5;\n\n  if (anchorY === 0.5) {\n    anchorX = Math.floor(anchorX);\n    xStep = 1;\n  }\n\n  var left = x - anchorX * selfWidth;\n  var right = left + selfWidth;\n  var cutoffX = Math.max(0, padding - left) + Math.max(0, right - width + padding);\n\n  if (cutoffX > 0) {\n    var bestAnchorX = anchorX;\n    var _minCutoff = cutoffX;\n\n    for (anchorX = 0; anchorX <= 1; anchorX += xStep) {\n      left = x - anchorX * selfWidth;\n      right = left + selfWidth;\n      cutoffX = Math.max(0, padding - left) + Math.max(0, right - width + padding);\n\n      if (cutoffX < _minCutoff) {\n        _minCutoff = cutoffX;\n        bestAnchorX = anchorX;\n      }\n    }\n\n    anchorX = bestAnchorX;\n  }\n\n  return ANCHOR_TYPES.find(function (positionType) {\n    var anchorPosition = ANCHOR_POSITION[positionType];\n    return anchorPosition.x === anchorX && anchorPosition.y === anchorY;\n  }) || anchor;\n}\n//# sourceMappingURL=dynamic-position.js.map","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nimport * as React from 'react';\nimport { useRef, useState, useEffect, useCallback } from 'react';\nimport * as PropTypes from 'prop-types';\nimport useMapControl, { mapControlDefaultProps, mapControlPropTypes } from './use-map-control';\nimport { getDynamicPosition, ANCHOR_POSITION } from '../utils/dynamic-position';\nimport { crispPercentage, crispPixel } from '../utils/crisp-pixel';\nvar propTypes = Object.assign({}, mapControlPropTypes, {\n  className: PropTypes.string,\n  longitude: PropTypes.number.isRequired,\n  latitude: PropTypes.number.isRequired,\n  altitude: PropTypes.number,\n  offsetLeft: PropTypes.number,\n  offsetTop: PropTypes.number,\n  tipSize: PropTypes.number,\n  closeButton: PropTypes.bool,\n  closeOnClick: PropTypes.bool,\n  anchor: PropTypes.oneOf(Object.keys(ANCHOR_POSITION)),\n  dynamicPosition: PropTypes.bool,\n  sortByDepth: PropTypes.bool,\n  onClose: PropTypes.func\n});\nvar defaultProps = Object.assign({}, mapControlDefaultProps, {\n  className: '',\n  altitude: 0,\n  offsetLeft: 0,\n  offsetTop: 0,\n  tipSize: 10,\n  anchor: 'bottom',\n  dynamicPosition: true,\n  sortByDepth: false,\n  closeButton: true,\n  closeOnClick: true,\n  onClose: function onClose() {}\n});\n\nfunction getPosition(props, viewport, el, _ref) {\n  var _ref2 = _slicedToArray(_ref, 2),\n      x = _ref2[0],\n      y = _ref2[1];\n\n  var anchor = props.anchor,\n      dynamicPosition = props.dynamicPosition,\n      tipSize = props.tipSize;\n\n  if (el) {\n    return dynamicPosition ? getDynamicPosition({\n      x: x,\n      y: y,\n      anchor: anchor,\n      padding: tipSize,\n      width: viewport.width,\n      height: viewport.height,\n      selfWidth: el.clientWidth,\n      selfHeight: el.clientHeight\n    }) : anchor;\n  }\n\n  return anchor;\n}\n\nfunction getContainerStyle(props, viewport, el, _ref3, positionType) {\n  var _ref4 = _slicedToArray(_ref3, 3),\n      x = _ref4[0],\n      y = _ref4[1],\n      z = _ref4[2];\n\n  var offsetLeft = props.offsetLeft,\n      offsetTop = props.offsetTop,\n      sortByDepth = props.sortByDepth;\n  var anchorPosition = ANCHOR_POSITION[positionType];\n  var left = x + offsetLeft;\n  var top = y + offsetTop;\n  var xPercentage = crispPercentage(el, -anchorPosition.x * 100);\n  var yPercentage = crispPercentage(el, -anchorPosition.y * 100, 'y');\n  var style = {\n    position: 'absolute',\n    transform: \"\\n      translate(\".concat(xPercentage, \"%, \").concat(yPercentage, \"%)\\n      translate(\").concat(crispPixel(left), \"px, \").concat(crispPixel(top), \"px)\\n    \"),\n    display: undefined,\n    zIndex: undefined\n  };\n\n  if (!sortByDepth) {\n    return style;\n  }\n\n  if (z > 1 || z < -1 || x < 0 || x > viewport.width || y < 0 || y > viewport.height) {\n    style.display = 'none';\n  } else {\n    style.zIndex = Math.floor((1 - z) / 2 * 100000);\n  }\n\n  return style;\n}\n\nfunction onClick(evt, _ref5) {\n  var props = _ref5.props,\n      context = _ref5.context;\n\n  if (props.closeOnClick || evt.target.className === 'mapboxgl-popup-close-button') {\n    props.onClose();\n\n    if (context.eventManager) {\n      context.eventManager.once('click', function (e) {\n        return e.stopPropagation();\n      }, evt.target);\n    }\n  }\n}\n\nfunction Popup(props) {\n  var contentRef = useRef(null);\n  var thisRef = useMapControl(_objectSpread(_objectSpread({}, props), {}, {\n    onClick: onClick\n  }));\n  var context = thisRef.context,\n      containerRef = thisRef.containerRef;\n\n  var _useState = useState(false),\n      _useState2 = _slicedToArray(_useState, 2),\n      setLoaded = _useState2[1];\n\n  useEffect(function () {\n    setLoaded(true);\n  }, [contentRef.current]);\n  var viewport = context.viewport;\n  var className = props.className,\n      longitude = props.longitude,\n      latitude = props.latitude,\n      altitude = props.altitude,\n      tipSize = props.tipSize,\n      closeButton = props.closeButton,\n      children = props.children;\n  var position = viewport.project([longitude, latitude, altitude]);\n  var positionType = getPosition(props, viewport, contentRef.current, position);\n  var containerStyle = getContainerStyle(props, viewport, containerRef.current, position, positionType);\n  var onReactClick = useCallback(function (e) {\n    return !context.eventManager && onClick(e, thisRef);\n  }, [context.eventManager]);\n  return React.createElement(\"div\", {\n    className: \"mapboxgl-popup mapboxgl-popup-anchor-\".concat(positionType, \" \").concat(className),\n    style: containerStyle,\n    ref: containerRef\n  }, React.createElement(\"div\", {\n    key: \"tip\",\n    className: \"mapboxgl-popup-tip\",\n    style: {\n      borderWidth: tipSize\n    }\n  }), React.createElement(\"div\", {\n    key: \"content\",\n    ref: contentRef,\n    className: \"mapboxgl-popup-content\",\n    onClick: onReactClick\n  }, closeButton && React.createElement(\"button\", {\n    key: \"close-button\",\n    className: \"mapboxgl-popup-close-button\",\n    type: \"button\"\n  }, \"\\xD7\"), children));\n}\n\nPopup.propTypes = propTypes;\nPopup.defaultProps = defaultProps;\nexport default React.memo(Popup);\n//# sourceMappingURL=popup.js.map","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nimport * as React from 'react';\nimport { useEffect, useCallback, useState, useRef, useMemo } from 'react';\nimport * as PropTypes from 'prop-types';\nimport mapboxgl from '../utils/mapboxgl';\nimport useMapControl, { mapControlDefaultProps, mapControlPropTypes } from './use-map-control';\nvar propTypes = Object.assign({}, mapControlPropTypes, {\n  toggleLabel: PropTypes.string,\n  className: PropTypes.string,\n  style: PropTypes.object,\n  compact: PropTypes.bool,\n  customAttribution: PropTypes.oneOfType([PropTypes.string, PropTypes.arrayOf(PropTypes.string)])\n});\nvar defaultProps = Object.assign({}, mapControlDefaultProps, {\n  className: '',\n  toggleLabel: 'Toggle Attribution'\n});\n\nfunction setupAttributioncontrol(opts, map, container, attributionContainer) {\n  var control = new mapboxgl.AttributionControl(opts);\n  control._map = map;\n  control._container = container;\n  control._innerContainer = attributionContainer;\n\n  control._updateAttributions();\n\n  control._updateEditLink();\n\n  map.on('styledata', control._updateData);\n  map.on('sourcedata', control._updateData);\n  return control;\n}\n\nfunction removeAttributionControl(control) {\n  control._map.off('styledata', control._updateData);\n\n  control._map.off('sourcedata', control._updateData);\n}\n\nfunction AttributionControl(props) {\n  var _useMapControl = useMapControl(props),\n      context = _useMapControl.context,\n      containerRef = _useMapControl.containerRef;\n\n  var innerContainerRef = useRef(null);\n\n  var _useState = useState(false),\n      _useState2 = _slicedToArray(_useState, 2),\n      showCompact = _useState2[0],\n      setShowCompact = _useState2[1];\n\n  useEffect(function () {\n    var control;\n\n    if (context.map) {\n      control = setupAttributioncontrol({\n        customAttribution: props.customAttribution\n      }, context.map, containerRef.current, innerContainerRef.current);\n    }\n\n    return function () {\n      return control && removeAttributionControl(control);\n    };\n  }, [context.map]);\n  var compact = props.compact === undefined ? context.viewport.width <= 640 : props.compact;\n  useEffect(function () {\n    if (!compact && showCompact) {\n      setShowCompact(false);\n    }\n  }, [compact]);\n  var toggleAttribution = useCallback(function () {\n    return setShowCompact(function (value) {\n      return !value;\n    });\n  }, []);\n  var style = useMemo(function () {\n    return _objectSpread({\n      position: 'absolute'\n    }, props.style);\n  }, [props.style]);\n  return React.createElement(\"div\", {\n    style: style,\n    className: props.className\n  }, React.createElement(\"div\", {\n    ref: containerRef,\n    \"aria-pressed\": showCompact,\n    className: \"mapboxgl-ctrl mapboxgl-ctrl-attrib \".concat(compact ? 'mapboxgl-compact' : '', \" \").concat(showCompact ? 'mapboxgl-compact-show' : '')\n  }, React.createElement(\"button\", {\n    type: \"button\",\n    className: \"mapboxgl-ctrl-attrib-button\",\n    title: props.toggleLabel,\n    onClick: toggleAttribution\n  }), React.createElement(\"div\", {\n    ref: innerContainerRef,\n    className: \"mapboxgl-ctrl-attrib-inner\",\n    role: \"list\"\n  })));\n}\n\nAttributionControl.propTypes = propTypes;\nAttributionControl.defaultProps = defaultProps;\nexport default React.memo(AttributionControl);\n//# sourceMappingURL=attribution-control.js.map","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nimport { document } from '../utils/globals';\nimport * as PropTypes from 'prop-types';\nimport * as React from 'react';\nimport { useEffect, useState, useMemo } from 'react';\nimport mapboxgl from '../utils/mapboxgl';\nimport useMapControl, { mapControlDefaultProps, mapControlPropTypes } from './use-map-control';\nvar propTypes = Object.assign({}, mapControlPropTypes, {\n  className: PropTypes.string,\n  style: PropTypes.object,\n  container: PropTypes.object,\n  label: PropTypes.string\n});\nvar defaultProps = Object.assign({}, mapControlDefaultProps, {\n  className: '',\n  container: null,\n  label: 'Toggle fullscreen'\n});\n\nfunction FullscreenControl(props) {\n  var _useMapControl = useMapControl(props),\n      context = _useMapControl.context,\n      containerRef = _useMapControl.containerRef;\n\n  var _useState = useState(false),\n      _useState2 = _slicedToArray(_useState, 2),\n      isFullscreen = _useState2[0],\n      setIsFullscreen = _useState2[1];\n\n  var _useState3 = useState(false),\n      _useState4 = _slicedToArray(_useState3, 2),\n      showButton = _useState4[0],\n      setShowButton = _useState4[1];\n\n  var _useState5 = useState(null),\n      _useState6 = _slicedToArray(_useState5, 2),\n      mapboxFullscreenControl = _useState6[0],\n      createMapboxFullscreenControl = _useState6[1];\n\n  useEffect(function () {\n    var control = new mapboxgl.FullscreenControl();\n    createMapboxFullscreenControl(control);\n    setShowButton(control._checkFullscreenSupport());\n\n    var onFullscreenChange = function onFullscreenChange() {\n      var nextState = !control._fullscreen;\n      control._fullscreen = nextState;\n      setIsFullscreen(nextState);\n    };\n\n    document.addEventListener(control._fullscreenchange, onFullscreenChange);\n    return function () {\n      document.removeEventListener(control._fullscreenchange, onFullscreenChange);\n    };\n  }, []);\n\n  var onClickFullscreen = function onClickFullscreen() {\n    if (mapboxFullscreenControl) {\n      mapboxFullscreenControl._container = props.container || context.container;\n\n      mapboxFullscreenControl._onClickFullscreen();\n    }\n  };\n\n  var style = useMemo(function () {\n    return _objectSpread({\n      position: 'absolute'\n    }, props.style);\n  }, [props.style]);\n\n  if (!showButton) {\n    return null;\n  }\n\n  var className = props.className,\n      label = props.label;\n  var type = isFullscreen ? 'shrink' : 'fullscreen';\n  return React.createElement(\"div\", {\n    style: style,\n    className: className\n  }, React.createElement(\"div\", {\n    className: \"mapboxgl-ctrl mapboxgl-ctrl-group\",\n    ref: containerRef\n  }, React.createElement(\"button\", {\n    key: type,\n    className: \"mapboxgl-ctrl-icon mapboxgl-ctrl-\".concat(type),\n    type: \"button\",\n    title: label,\n    onClick: onClickFullscreen\n  }, React.createElement(\"span\", {\n    className: \"mapboxgl-ctrl-icon\",\n    \"aria-hidden\": \"true\"\n  }))));\n}\n\nFullscreenControl.propTypes = propTypes;\nFullscreenControl.defaultProps = defaultProps;\nexport default React.memo(FullscreenControl);\n//# sourceMappingURL=fullscreen-control.js.map","var supported;\nexport function isGeolocationSupported() {\n  if (supported !== undefined) {\n    return Promise.resolve(supported);\n  }\n\n  if (window.navigator.permissions !== undefined) {\n    return window.navigator.permissions.query({\n      name: 'geolocation'\n    }).then(function (p) {\n      supported = p.state !== 'denied';\n      return supported;\n    });\n  }\n\n  supported = Boolean(window.navigator.geolocation);\n  return Promise.resolve(supported);\n}\n//# sourceMappingURL=geolocate-utils.js.map","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nimport * as React from 'react';\nimport { useRef, useEffect, useState, useCallback, useMemo } from 'react';\nimport * as PropTypes from 'prop-types';\nimport { document } from '../utils/globals';\nimport mapboxgl from '../utils/mapboxgl';\nimport MapState from '../utils/map-state';\nimport { LINEAR_TRANSITION_PROPS } from '../utils/map-controller';\nimport { isGeolocationSupported } from '../utils/geolocate-utils';\nimport useMapControl, { mapControlDefaultProps, mapControlPropTypes } from './use-map-control';\n\nvar noop = function noop() {};\n\nvar propTypes = Object.assign({}, mapControlPropTypes, {\n  className: PropTypes.string,\n  style: PropTypes.object,\n  label: PropTypes.string,\n  disabledLabel: PropTypes.string,\n  auto: PropTypes.bool,\n  positionOptions: PropTypes.object,\n  fitBoundsOptions: PropTypes.object,\n  trackUserLocation: PropTypes.bool,\n  showUserLocation: PropTypes.bool,\n  showAccuracyCircle: PropTypes.bool,\n  onViewStateChange: PropTypes.func,\n  onViewportChange: PropTypes.func,\n  onGeolocate: PropTypes.func\n});\nvar defaultProps = Object.assign({}, mapControlDefaultProps, {\n  className: '',\n  label: 'Find My Location',\n  disabledLabel: 'Location Not Available',\n  auto: false,\n  positionOptions: {\n    enableHighAccuracy: false,\n    timeout: 6000\n  },\n  fitBoundsOptions: {\n    maxZoom: 15\n  },\n  trackUserLocation: false,\n  showUserLocation: true,\n  showAccuracyCircle: true,\n  onGeolocate: function onGeolocate() {}\n});\n\nfunction getBounds(position) {\n  var center = new mapboxgl.LngLat(position.coords.longitude, position.coords.latitude);\n  var radius = position.coords.accuracy;\n  var bounds = center.toBounds(radius);\n  return [[bounds._ne.lng, bounds._ne.lat], [bounds._sw.lng, bounds._sw.lat]];\n}\n\nfunction setupMapboxGeolocateControl(context, props, geolocateButton) {\n  var control = new mapboxgl.GeolocateControl(props);\n  control._container = document.createElement('div');\n  control._map = {\n    on: function on() {},\n    _getUIString: function _getUIString() {\n      return '';\n    }\n  };\n\n  control._setupUI(true);\n\n  control._map = context.map;\n  control._geolocateButton = geolocateButton;\n  var eventManager = context.eventManager;\n\n  if (control.options.trackUserLocation && eventManager) {\n    eventManager.on('panstart', function () {\n      if (control._watchState === 'ACTIVE_LOCK') {\n        control._watchState = 'BACKGROUND';\n        geolocateButton.classList.add('mapboxgl-ctrl-geolocate-background');\n        geolocateButton.classList.remove('mapboxgl-ctrl-geolocate-active');\n      }\n    });\n  }\n\n  control.on('geolocate', props.onGeolocate);\n  return control;\n}\n\nfunction updateCamera(position, _ref) {\n  var context = _ref.context,\n      props = _ref.props;\n  var bounds = getBounds(position);\n\n  var _context$viewport$fit = context.viewport.fitBounds(bounds, props.fitBoundsOptions),\n      longitude = _context$viewport$fit.longitude,\n      latitude = _context$viewport$fit.latitude,\n      zoom = _context$viewport$fit.zoom;\n\n  var newViewState = Object.assign({}, context.viewport, {\n    longitude: longitude,\n    latitude: latitude,\n    zoom: zoom\n  });\n  var mapState = new MapState(newViewState);\n  var viewState = Object.assign({}, mapState.getViewportProps(), LINEAR_TRANSITION_PROPS);\n  var onViewportChange = props.onViewportChange || context.onViewportChange || noop;\n  var onViewStateChange = props.onViewStateChange || context.onViewStateChange || noop;\n  onViewStateChange({\n    viewState: viewState\n  });\n  onViewportChange(viewState);\n}\n\nfunction GeolocateControl(props) {\n  var thisRef = useMapControl(props);\n  var context = thisRef.context,\n      containerRef = thisRef.containerRef;\n  var geolocateButtonRef = useRef(null);\n\n  var _useState = useState(null),\n      _useState2 = _slicedToArray(_useState, 2),\n      mapboxGeolocateControl = _useState2[0],\n      createMapboxGeolocateControl = _useState2[1];\n\n  var _useState3 = useState(false),\n      _useState4 = _slicedToArray(_useState3, 2),\n      supportsGeolocation = _useState4[0],\n      setSupportsGeolocation = _useState4[1];\n\n  useEffect(function () {\n    var control;\n\n    if (context.map) {\n      isGeolocationSupported().then(function (result) {\n        setSupportsGeolocation(result);\n\n        if (geolocateButtonRef.current) {\n          control = setupMapboxGeolocateControl(context, props, geolocateButtonRef.current);\n\n          control._updateCamera = function (position) {\n            return updateCamera(position, thisRef);\n          };\n\n          createMapboxGeolocateControl(control);\n        }\n      });\n    }\n\n    return function () {\n      if (control) {\n        control._clearWatch();\n      }\n    };\n  }, [context.map]);\n  var triggerGeolocate = useCallback(function () {\n    if (mapboxGeolocateControl) {\n      mapboxGeolocateControl.options = thisRef.props;\n      mapboxGeolocateControl.trigger();\n    }\n  }, [mapboxGeolocateControl]);\n  useEffect(function () {\n    if (props.auto) {\n      triggerGeolocate();\n    }\n  }, [mapboxGeolocateControl, props.auto]);\n  useEffect(function () {\n    if (mapboxGeolocateControl) {\n      mapboxGeolocateControl._onZoom();\n    }\n  }, [context.viewport.zoom]);\n  var className = props.className,\n      label = props.label,\n      disabledLabel = props.disabledLabel,\n      trackUserLocation = props.trackUserLocation;\n  var style = useMemo(function () {\n    return _objectSpread({\n      position: 'absolute'\n    }, props.style);\n  }, [props.style]);\n  return React.createElement(\"div\", {\n    style: style,\n    className: className\n  }, React.createElement(\"div\", {\n    key: \"geolocate-control\",\n    className: \"mapboxgl-ctrl mapboxgl-ctrl-group\",\n    ref: containerRef\n  }, React.createElement(\"button\", {\n    key: \"geolocate\",\n    className: \"mapboxgl-ctrl-icon mapboxgl-ctrl-geolocate\",\n    ref: geolocateButtonRef,\n    disabled: !supportsGeolocation,\n    \"aria-pressed\": !trackUserLocation,\n    type: \"button\",\n    title: supportsGeolocation ? label : disabledLabel,\n    \"aria-label\": supportsGeolocation ? label : disabledLabel,\n    onClick: triggerGeolocate\n  }, React.createElement(\"span\", {\n    className: \"mapboxgl-ctrl-icon\",\n    \"aria-hidden\": \"true\"\n  }))));\n}\n\nGeolocateControl.propTypes = propTypes;\nGeolocateControl.defaultProps = defaultProps;\nexport default React.memo(GeolocateControl);\n//# sourceMappingURL=geolocate-control.js.map","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nimport * as React from 'react';\nimport { useMemo } from 'react';\nimport * as PropTypes from 'prop-types';\nimport MapState from '../utils/map-state';\nimport { LINEAR_TRANSITION_PROPS } from '../utils/map-controller';\nimport { compareVersions } from '../utils/version';\nimport useMapControl, { mapControlDefaultProps, mapControlPropTypes } from './use-map-control';\n\nvar noop = function noop() {};\n\nvar propTypes = Object.assign({}, mapControlPropTypes, {\n  className: PropTypes.string,\n  style: PropTypes.object,\n  onViewStateChange: PropTypes.func,\n  onViewportChange: PropTypes.func,\n  showCompass: PropTypes.bool,\n  showZoom: PropTypes.bool,\n  zoomInLabel: PropTypes.string,\n  zoomOutLabel: PropTypes.string,\n  compassLabel: PropTypes.string\n});\nvar defaultProps = Object.assign({}, mapControlDefaultProps, {\n  className: '',\n  showCompass: true,\n  showZoom: true,\n  zoomInLabel: 'Zoom In',\n  zoomOutLabel: 'Zoom Out',\n  compassLabel: 'Reset North'\n});\nvar VERSION_LEGACY = 1;\nvar VERSION_1_6 = 2;\n\nfunction getUIVersion(mapboxVersion) {\n  return compareVersions(mapboxVersion, '1.6.0') >= 0 ? VERSION_1_6 : VERSION_LEGACY;\n}\n\nfunction updateViewport(context, props, opts) {\n  var viewport = context.viewport;\n  var mapState = new MapState(Object.assign({}, viewport, opts));\n  var viewState = Object.assign({}, mapState.getViewportProps(), LINEAR_TRANSITION_PROPS);\n  var onViewportChange = props.onViewportChange || context.onViewportChange || noop;\n  var onViewStateChange = props.onViewStateChange || context.onViewStateChange || noop;\n  onViewStateChange({\n    viewState: viewState\n  });\n  onViewportChange(viewState);\n}\n\nfunction renderButton(type, label, callback, children) {\n  return React.createElement(\"button\", {\n    key: type,\n    className: \"mapboxgl-ctrl-icon mapboxgl-ctrl-\".concat(type),\n    type: \"button\",\n    title: label,\n    onClick: callback\n  }, children || React.createElement(\"span\", {\n    className: \"mapboxgl-ctrl-icon\",\n    \"aria-hidden\": \"true\"\n  }));\n}\n\nfunction renderCompass(context) {\n  var uiVersion = useMemo(function () {\n    return context.map ? getUIVersion(context.map.version) : VERSION_1_6;\n  }, [context.map]);\n  var bearing = context.viewport.bearing;\n  var style = {\n    transform: \"rotate(\".concat(-bearing, \"deg)\")\n  };\n  return uiVersion === VERSION_1_6 ? React.createElement(\"span\", {\n    className: \"mapboxgl-ctrl-icon\",\n    \"aria-hidden\": \"true\",\n    style: style\n  }) : React.createElement(\"span\", {\n    className: \"mapboxgl-ctrl-compass-arrow\",\n    style: style\n  });\n}\n\nfunction NavigationControl(props) {\n  var _useMapControl = useMapControl(props),\n      context = _useMapControl.context,\n      containerRef = _useMapControl.containerRef;\n\n  var onZoomIn = function onZoomIn() {\n    updateViewport(context, props, {\n      zoom: context.viewport.zoom + 1\n    });\n  };\n\n  var onZoomOut = function onZoomOut() {\n    updateViewport(context, props, {\n      zoom: context.viewport.zoom - 1\n    });\n  };\n\n  var onResetNorth = function onResetNorth() {\n    updateViewport(context, props, {\n      bearing: 0,\n      pitch: 0\n    });\n  };\n\n  var className = props.className,\n      showCompass = props.showCompass,\n      showZoom = props.showZoom,\n      zoomInLabel = props.zoomInLabel,\n      zoomOutLabel = props.zoomOutLabel,\n      compassLabel = props.compassLabel;\n  var style = useMemo(function () {\n    return _objectSpread({\n      position: 'absolute'\n    }, props.style);\n  }, [props.style]);\n  return React.createElement(\"div\", {\n    style: style,\n    className: className\n  }, React.createElement(\"div\", {\n    className: \"mapboxgl-ctrl mapboxgl-ctrl-group\",\n    ref: containerRef\n  }, showZoom && renderButton('zoom-in', zoomInLabel, onZoomIn), showZoom && renderButton('zoom-out', zoomOutLabel, onZoomOut), showCompass && renderButton('compass', compassLabel, onResetNorth, renderCompass(context))));\n}\n\nNavigationControl.propTypes = propTypes;\nNavigationControl.defaultProps = defaultProps;\nexport default React.memo(NavigationControl);\n//# sourceMappingURL=navigation-control.js.map","export function compareVersions(version1, version2) {\n  var v1 = (version1 || '').split('.').map(Number);\n  var v2 = (version2 || '').split('.').map(Number);\n\n  for (var i = 0; i < 3; i++) {\n    var part1 = v1[i] || 0;\n    var part2 = v2[i] || 0;\n\n    if (part1 < part2) {\n      return -1;\n    }\n\n    if (part1 > part2) {\n      return 1;\n    }\n  }\n\n  return 0;\n}\n//# sourceMappingURL=version.js.map","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nimport * as React from 'react';\nimport { useEffect, useState, useMemo } from 'react';\nimport * as PropTypes from 'prop-types';\nimport mapboxgl from '../utils/mapboxgl';\nimport useMapControl, { mapControlDefaultProps, mapControlPropTypes } from './use-map-control';\nvar propTypes = Object.assign({}, mapControlPropTypes, {\n  className: PropTypes.string,\n  style: PropTypes.object,\n  maxWidth: PropTypes.number,\n  unit: PropTypes.oneOf(['imperial', 'metric', 'nautical'])\n});\nvar defaultProps = Object.assign({}, mapControlDefaultProps, {\n  className: '',\n  maxWidth: 100,\n  unit: 'metric'\n});\n\nfunction ScaleControl(props) {\n  var _useMapControl = useMapControl(props),\n      context = _useMapControl.context,\n      containerRef = _useMapControl.containerRef;\n\n  var _useState = useState(null),\n      _useState2 = _slicedToArray(_useState, 2),\n      mapboxScaleControl = _useState2[0],\n      createMapboxScaleControl = _useState2[1];\n\n  useEffect(function () {\n    if (context.map) {\n      var control = new mapboxgl.ScaleControl();\n      control._map = context.map;\n      control._container = containerRef.current;\n      createMapboxScaleControl(control);\n    }\n  }, [context.map]);\n\n  if (mapboxScaleControl) {\n    mapboxScaleControl.options = props;\n\n    mapboxScaleControl._onMove();\n  }\n\n  var style = useMemo(function () {\n    return _objectSpread({\n      position: 'absolute'\n    }, props.style);\n  }, [props.style]);\n  return React.createElement(\"div\", {\n    style: style,\n    className: props.className\n  }, React.createElement(\"div\", {\n    ref: containerRef,\n    className: \"mapboxgl-ctrl mapboxgl-ctrl-scale\"\n  }));\n}\n\nScaleControl.propTypes = propTypes;\nScaleControl.defaultProps = defaultProps;\nexport default React.memo(ScaleControl);\n//# sourceMappingURL=scale-control.js.map","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport * as React from 'react';\nimport { useState, useEffect } from 'react';\nimport * as PropTypes from 'prop-types';\nimport useMapControl, { mapControlPropTypes } from '../components/use-map-control';\nvar pixelRatio = typeof window !== 'undefined' && window.devicePixelRatio || 1;\nvar propTypes = Object.assign({}, mapControlPropTypes, {\n  redraw: PropTypes.func.isRequired\n});\nvar defaultProps = {\n  captureScroll: false,\n  captureDrag: false,\n  captureClick: false,\n  captureDoubleClick: false,\n  capturePointerMove: false\n};\n\nfunction CanvasOverlay(props) {\n  var _useMapControl = useMapControl(props),\n      context = _useMapControl.context,\n      containerRef = _useMapControl.containerRef;\n\n  var _useState = useState(null),\n      _useState2 = _slicedToArray(_useState, 2),\n      ctx = _useState2[0],\n      setDrawingContext = _useState2[1];\n\n  useEffect(function () {\n    setDrawingContext(containerRef.current.getContext('2d'));\n  }, []);\n  var viewport = context.viewport,\n      isDragging = context.isDragging;\n\n  if (ctx) {\n    ctx.save();\n    ctx.scale(pixelRatio, pixelRatio);\n    props.redraw({\n      width: viewport.width,\n      height: viewport.height,\n      ctx: ctx,\n      isDragging: isDragging,\n      project: viewport.project,\n      unproject: viewport.unproject\n    });\n    ctx.restore();\n  }\n\n  return React.createElement(\"canvas\", {\n    ref: containerRef,\n    width: viewport.width * pixelRatio,\n    height: viewport.height * pixelRatio,\n    style: {\n      width: \"\".concat(viewport.width, \"px\"),\n      height: \"\".concat(viewport.height, \"px\"),\n      position: 'absolute',\n      left: 0,\n      top: 0\n    }\n  });\n}\n\nCanvasOverlay.propTypes = propTypes;\nCanvasOverlay.defaultProps = defaultProps;\nexport default CanvasOverlay;\n//# sourceMappingURL=canvas-overlay.js.map","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport useMapControl, { mapControlPropTypes } from '../components/use-map-control';\nvar propTypes = Object.assign({}, mapControlPropTypes, {\n  redraw: PropTypes.func.isRequired,\n  style: PropTypes.object\n});\nvar defaultProps = {\n  captureScroll: false,\n  captureDrag: false,\n  captureClick: false,\n  captureDoubleClick: false,\n  capturePointerMove: false\n};\n\nfunction HTMLOverlay(props) {\n  var _useMapControl = useMapControl(props),\n      context = _useMapControl.context,\n      containerRef = _useMapControl.containerRef;\n\n  var viewport = context.viewport,\n      isDragging = context.isDragging;\n\n  var style = _objectSpread({\n    position: 'absolute',\n    left: 0,\n    top: 0,\n    width: viewport.width,\n    height: viewport.height\n  }, props.style);\n\n  return React.createElement(\"div\", {\n    ref: containerRef,\n    style: style\n  }, props.redraw({\n    width: viewport.width,\n    height: viewport.height,\n    isDragging: isDragging,\n    project: viewport.project,\n    unproject: viewport.unproject\n  }));\n}\n\nHTMLOverlay.propTypes = propTypes;\nHTMLOverlay.defaultProps = defaultProps;\nexport default HTMLOverlay;\n//# sourceMappingURL=html-overlay.js.map","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport useMapControl, { mapControlPropTypes } from '../components/use-map-control';\nvar propTypes = Object.assign({}, mapControlPropTypes, {\n  redraw: PropTypes.func.isRequired,\n  style: PropTypes.object\n});\nvar defaultProps = {\n  captureScroll: false,\n  captureDrag: false,\n  captureClick: false,\n  captureDoubleClick: false,\n  capturePointerMove: false\n};\n\nfunction SVGOverlay(props) {\n  var _useMapControl = useMapControl(props),\n      context = _useMapControl.context,\n      containerRef = _useMapControl.containerRef;\n\n  var viewport = context.viewport,\n      isDragging = context.isDragging;\n\n  var style = _objectSpread({\n    position: 'absolute',\n    left: 0,\n    top: 0\n  }, props.style);\n\n  return React.createElement(\"svg\", {\n    width: viewport.width,\n    height: viewport.height,\n    ref: containerRef,\n    style: style\n  }, props.redraw({\n    width: viewport.width,\n    height: viewport.height,\n    isDragging: isDragging,\n    project: viewport.project,\n    unproject: viewport.unproject\n  }));\n}\n\nSVGOverlay.propTypes = propTypes;\nSVGOverlay.defaultProps = defaultProps;\nexport default SVGOverlay;\n//# sourceMappingURL=svg-overlay.js.map","import mapboxgl from './mapboxgl';\nvar setRTLTextPlugin = mapboxgl ? mapboxgl.setRTLTextPlugin : function () {};\nexport default setRTLTextPlugin;\n//# sourceMappingURL=set-rtl-text-plugin.js.map","/* Mapbox GL JS is licensed under the 3-Clause BSD License. Full text of license: https://github.com/mapbox/mapbox-gl-js/blob/v1.13.3/LICENSE.txt */\n(function (global, factory) {\ntypeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\ntypeof define === 'function' && define.amd ? define(factory) :\n(global = global || self, global.mapboxgl = factory());\n}(this, (function () { 'use strict';\n\n/* eslint-disable */\n\nvar shared, worker, mapboxgl;\n// define gets called three times: one for each chunk. we rely on the order\n// they're imported to know which is which\nfunction define(_, chunk) {\nif (!shared) {\n    shared = chunk;\n} else if (!worker) {\n    worker = chunk;\n} else {\n    var workerBundleString = 'var sharedChunk = {}; (' + shared + ')(sharedChunk); (' + worker + ')(sharedChunk);'\n\n    var sharedChunk = {};\n    shared(sharedChunk);\n    mapboxgl = chunk(sharedChunk);\n    if (typeof window !== 'undefined') {\n        mapboxgl.workerUrl = window.URL.createObjectURL(new Blob([workerBundleString], { type: 'text/javascript' }));\n    }\n}\n}\n\n\ndefine([\"exports\"],(function(t){\"use strict\";function e(t,e){return t(e={exports:{}},e.exports),e.exports}var r=n;function n(t,e,r,n){this.cx=3*t,this.bx=3*(r-t)-this.cx,this.ax=1-this.cx-this.bx,this.cy=3*e,this.by=3*(n-e)-this.cy,this.ay=1-this.cy-this.by,this.p1x=t,this.p1y=n,this.p2x=r,this.p2y=n;}n.prototype.sampleCurveX=function(t){return ((this.ax*t+this.bx)*t+this.cx)*t},n.prototype.sampleCurveY=function(t){return ((this.ay*t+this.by)*t+this.cy)*t},n.prototype.sampleCurveDerivativeX=function(t){return (3*this.ax*t+2*this.bx)*t+this.cx},n.prototype.solveCurveX=function(t,e){var r,n,i,a,o;for(void 0===e&&(e=1e-6),i=t,o=0;o<8;o++){if(a=this.sampleCurveX(i)-t,Math.abs(a)<e)return i;var s=this.sampleCurveDerivativeX(i);if(Math.abs(s)<1e-6)break;i-=a/s;}if((i=t)<(r=0))return r;if(i>(n=1))return n;for(;r<n;){if(a=this.sampleCurveX(i),Math.abs(a-t)<e)return i;t>a?r=i:n=i,i=.5*(n-r)+r;}return i},n.prototype.solve=function(t,e){return this.sampleCurveY(this.solveCurveX(t,e))};var i=a;function a(t,e){this.x=t,this.y=e;}a.prototype={clone:function(){return new a(this.x,this.y)},add:function(t){return this.clone()._add(t)},sub:function(t){return this.clone()._sub(t)},multByPoint:function(t){return this.clone()._multByPoint(t)},divByPoint:function(t){return this.clone()._divByPoint(t)},mult:function(t){return this.clone()._mult(t)},div:function(t){return this.clone()._div(t)},rotate:function(t){return this.clone()._rotate(t)},rotateAround:function(t,e){return this.clone()._rotateAround(t,e)},matMult:function(t){return this.clone()._matMult(t)},unit:function(){return this.clone()._unit()},perp:function(){return this.clone()._perp()},round:function(){return this.clone()._round()},mag:function(){return Math.sqrt(this.x*this.x+this.y*this.y)},equals:function(t){return this.x===t.x&&this.y===t.y},dist:function(t){return Math.sqrt(this.distSqr(t))},distSqr:function(t){var e=t.x-this.x,r=t.y-this.y;return e*e+r*r},angle:function(){return Math.atan2(this.y,this.x)},angleTo:function(t){return Math.atan2(this.y-t.y,this.x-t.x)},angleWith:function(t){return this.angleWithSep(t.x,t.y)},angleWithSep:function(t,e){return Math.atan2(this.x*e-this.y*t,this.x*t+this.y*e)},_matMult:function(t){var e=t[2]*this.x+t[3]*this.y;return this.x=t[0]*this.x+t[1]*this.y,this.y=e,this},_add:function(t){return this.x+=t.x,this.y+=t.y,this},_sub:function(t){return this.x-=t.x,this.y-=t.y,this},_mult:function(t){return this.x*=t,this.y*=t,this},_div:function(t){return this.x/=t,this.y/=t,this},_multByPoint:function(t){return this.x*=t.x,this.y*=t.y,this},_divByPoint:function(t){return this.x/=t.x,this.y/=t.y,this},_unit:function(){return this._div(this.mag()),this},_perp:function(){var t=this.y;return this.y=this.x,this.x=-t,this},_rotate:function(t){var e=Math.cos(t),r=Math.sin(t),n=r*this.x+e*this.y;return this.x=e*this.x-r*this.y,this.y=n,this},_rotateAround:function(t,e){var r=Math.cos(t),n=Math.sin(t),i=e.y+n*(this.x-e.x)+r*(this.y-e.y);return this.x=e.x+r*(this.x-e.x)-n*(this.y-e.y),this.y=i,this},_round:function(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this}},a.convert=function(t){return t instanceof a?t:Array.isArray(t)?new a(t[0],t[1]):t};var o=\"undefined\"!=typeof self?self:{},s=Math.pow(2,53)-1;function u(t,e,n,i){var a=new r(t,e,n,i);return function(t){return a.solve(t)}}var l=u(.25,.1,.25,1);function p(t,e,r){return Math.min(r,Math.max(e,t))}function c(t,e,r){var n=r-e,i=((t-e)%n+n)%n+e;return i===e?r:i}function h(t){for(var e=[],r=arguments.length-1;r-- >0;)e[r]=arguments[r+1];for(var n=0,i=e;n<i.length;n+=1){var a=i[n];for(var o in a)t[o]=a[o];}return t}var f=1;function y(){return f++}function d(){return function t(e){return e?(e^16*Math.random()>>e/4).toString(16):([1e7]+-[1e3]+-4e3+-8e3+-1e11).replace(/[018]/g,t)}()}function m(t){return !!t&&/^[0-9a-f]{8}-[0-9a-f]{4}-[4][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i.test(t)}function v(t,e){t.forEach((function(t){e[t]&&(e[t]=e[t].bind(e));}));}function g(t,e){return -1!==t.indexOf(e,t.length-e.length)}function x(t,e,r){var n={};for(var i in t)n[i]=e.call(r||this,t[i],i,t);return n}function b(t,e,r){var n={};for(var i in t)e.call(r||this,t[i],i,t)&&(n[i]=t[i]);return n}function w(t){return Array.isArray(t)?t.map(w):\"object\"==typeof t&&t?x(t,w):t}var _={};function A(t){_[t]||(\"undefined\"!=typeof console&&console.warn(t),_[t]=!0);}function S(t,e,r){return (r.y-t.y)*(e.x-t.x)>(e.y-t.y)*(r.x-t.x)}function k(t){for(var e=0,r=0,n=t.length,i=n-1,a=void 0,o=void 0;r<n;i=r++)e+=((o=t[i]).x-(a=t[r]).x)*(a.y+o.y);return e}function I(){return \"undefined\"!=typeof WorkerGlobalScope&&\"undefined\"!=typeof self&&self instanceof WorkerGlobalScope}function z(t){var e={};if(t.replace(/(?:^|(?:\\s*\\,\\s*))([^\\x00-\\x20\\(\\)<>@\\,;\\:\\\\\"\\/\\[\\]\\?\\=\\{\\}\\x7F]+)(?:\\=(?:([^\\x00-\\x20\\(\\)<>@\\,;\\:\\\\\"\\/\\[\\]\\?\\=\\{\\}\\x7F]+)|(?:\\\"((?:[^\"\\\\]|\\\\.)*)\\\")))?/g,(function(t,r,n,i){var a=n||i;return e[r]=!a||a.toLowerCase(),\"\"})),e[\"max-age\"]){var r=parseInt(e[\"max-age\"],10);isNaN(r)?delete e[\"max-age\"]:e[\"max-age\"]=r;}return e}var C=null;function E(t){if(null==C){var e=t.navigator?t.navigator.userAgent:null;C=!!t.safari||!(!e||!(/\\b(iPad|iPhone|iPod)\\b/.test(e)||e.match(\"Safari\")&&!e.match(\"Chrome\")));}return C}function P(t){try{var e=o[t];return e.setItem(\"_mapbox_test_\",1),e.removeItem(\"_mapbox_test_\"),!0}catch(t){return !1}}var M,B,T,V,F=o.performance&&o.performance.now?o.performance.now.bind(o.performance):Date.now.bind(Date),D=o.requestAnimationFrame||o.mozRequestAnimationFrame||o.webkitRequestAnimationFrame||o.msRequestAnimationFrame,L=o.cancelAnimationFrame||o.mozCancelAnimationFrame||o.webkitCancelAnimationFrame||o.msCancelAnimationFrame,O={now:F,frame:function(t){var e=D(t);return {cancel:function(){return L(e)}}},getImageData:function(t,e){void 0===e&&(e=0);var r=o.document.createElement(\"canvas\"),n=r.getContext(\"2d\");if(!n)throw new Error(\"failed to create canvas 2d context\");return r.width=t.width,r.height=t.height,n.drawImage(t,0,0,t.width,t.height),n.getImageData(-e,-e,t.width+2*e,t.height+2*e)},resolveURL:function(t){return M||(M=o.document.createElement(\"a\")),M.href=t,M.href},hardwareConcurrency:o.navigator&&o.navigator.hardwareConcurrency||4,get devicePixelRatio(){return o.devicePixelRatio},get prefersReducedMotion(){return !!o.matchMedia&&(null==B&&(B=o.matchMedia(\"(prefers-reduced-motion: reduce)\")),B.matches)}},R={API_URL:\"https://api.mapbox.com\",get EVENTS_URL(){return this.API_URL?0===this.API_URL.indexOf(\"https://api.mapbox.cn\")?\"https://events.mapbox.cn/events/v2\":0===this.API_URL.indexOf(\"https://api.mapbox.com\")?\"https://events.mapbox.com/events/v2\":null:null},FEEDBACK_URL:\"https://apps.mapbox.com/feedback\",REQUIRE_ACCESS_TOKEN:!0,ACCESS_TOKEN:null,MAX_PARALLEL_IMAGE_REQUESTS:16},U={supported:!1,testSupport:function(t){!j&&V&&(q?N(t):T=t);}},j=!1,q=!1;function N(t){var e=t.createTexture();t.bindTexture(t.TEXTURE_2D,e);try{if(t.texImage2D(t.TEXTURE_2D,0,t.RGBA,t.RGBA,t.UNSIGNED_BYTE,V),t.isContextLost())return;U.supported=!0;}catch(t){}t.deleteTexture(e),j=!0;}o.document&&((V=o.document.createElement(\"img\")).onload=function(){T&&N(T),T=null,q=!0;},V.onerror=function(){j=!0,T=null;},V.src=\"data:image/webp;base64,UklGRh4AAABXRUJQVlA4TBEAAAAvAQAAAAfQ//73v/+BiOh/AAA=\");var K=\"01\",G=function(t,e){this._transformRequestFn=t,this._customAccessToken=e,this._createSkuToken();};function Z(t){return 0===t.indexOf(\"mapbox:\")}G.prototype._createSkuToken=function(){var t=function(){for(var t=\"\",e=0;e<10;e++)t+=\"0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ\"[Math.floor(62*Math.random())];return {token:[\"1\",K,t].join(\"\"),tokenExpiresAt:Date.now()+432e5}}();this._skuToken=t.token,this._skuTokenExpiresAt=t.tokenExpiresAt;},G.prototype._isSkuTokenExpired=function(){return Date.now()>this._skuTokenExpiresAt},G.prototype.transformRequest=function(t,e){return this._transformRequestFn&&this._transformRequestFn(t,e)||{url:t}},G.prototype.normalizeStyleURL=function(t,e){if(!Z(t))return t;var r=Y(t);return r.path=\"/styles/v1\"+r.path,this._makeAPIURL(r,this._customAccessToken||e)},G.prototype.normalizeGlyphsURL=function(t,e){if(!Z(t))return t;var r=Y(t);return r.path=\"/fonts/v1\"+r.path,this._makeAPIURL(r,this._customAccessToken||e)},G.prototype.normalizeSourceURL=function(t,e){if(!Z(t))return t;var r=Y(t);return r.path=\"/v4/\"+r.authority+\".json\",r.params.push(\"secure\"),this._makeAPIURL(r,this._customAccessToken||e)},G.prototype.normalizeSpriteURL=function(t,e,r,n){var i=Y(t);return Z(t)?(i.path=\"/styles/v1\"+i.path+\"/sprite\"+e+r,this._makeAPIURL(i,this._customAccessToken||n)):(i.path+=\"\"+e+r,$(i))},G.prototype.normalizeTileURL=function(t,e){if(this._isSkuTokenExpired()&&this._createSkuToken(),t&&!Z(t))return t;var r=Y(t);r.path=r.path.replace(/(\\.(png|jpg)\\d*)(?=$)/,(O.devicePixelRatio>=2||512===e?\"@2x\":\"\")+(U.supported?\".webp\":\"$1\")),r.path=r.path.replace(/^.+\\/v4\\//,\"/\"),r.path=\"/v4\"+r.path;var n=this._customAccessToken||function(t){for(var e=0,r=t;e<r.length;e+=1){var n=r[e].match(/^access_token=(.*)$/);if(n)return n[1]}return null}(r.params)||R.ACCESS_TOKEN;return R.REQUIRE_ACCESS_TOKEN&&n&&this._skuToken&&r.params.push(\"sku=\"+this._skuToken),this._makeAPIURL(r,n)},G.prototype.canonicalizeTileURL=function(t,e){var r=Y(t);if(!r.path.match(/(^\\/v4\\/)/)||!r.path.match(/\\.[\\w]+$/))return t;var n=\"mapbox://tiles/\";n+=r.path.replace(\"/v4/\",\"\");var i=r.params;return e&&(i=i.filter((function(t){return !t.match(/^access_token=/)}))),i.length&&(n+=\"?\"+i.join(\"&\")),n},G.prototype.canonicalizeTileset=function(t,e){for(var r=!!e&&Z(e),n=[],i=0,a=t.tiles||[];i<a.length;i+=1){var o=a[i];J(o)?n.push(this.canonicalizeTileURL(o,r)):n.push(o);}return n},G.prototype._makeAPIURL=function(t,e){var r=\"See https://www.mapbox.com/api-documentation/#access-tokens-and-token-scopes\",n=Y(R.API_URL);if(t.protocol=n.protocol,t.authority=n.authority,\"http\"===t.protocol){var i=t.params.indexOf(\"secure\");i>=0&&t.params.splice(i,1);}if(\"/\"!==n.path&&(t.path=\"\"+n.path+t.path),!R.REQUIRE_ACCESS_TOKEN)return $(t);if(!(e=e||R.ACCESS_TOKEN))throw new Error(\"An API access token is required to use Mapbox GL. \"+r);if(\"s\"===e[0])throw new Error(\"Use a public access token (pk.*) with Mapbox GL, not a secret access token (sk.*). \"+r);return t.params=t.params.filter((function(t){return -1===t.indexOf(\"access_token\")})),t.params.push(\"access_token=\"+e),$(t)};var X=/^((https?:)?\\/\\/)?([^\\/]+\\.)?mapbox\\.c(n|om)(\\/|\\?|$)/i;function J(t){return X.test(t)}var H=/^(\\w+):\\/\\/([^/?]*)(\\/[^?]+)?\\??(.+)?/;function Y(t){var e=t.match(H);if(!e)throw new Error(\"Unable to parse URL object\");return {protocol:e[1],authority:e[2],path:e[3]||\"/\",params:e[4]?e[4].split(\"&\"):[]}}function $(t){var e=t.params.length?\"?\"+t.params.join(\"&\"):\"\";return t.protocol+\"://\"+t.authority+t.path+e}function W(t){if(!t)return null;var e=t.split(\".\");if(!e||3!==e.length)return null;try{return JSON.parse(decodeURIComponent(o.atob(e[1]).split(\"\").map((function(t){return \"%\"+(\"00\"+t.charCodeAt(0).toString(16)).slice(-2)})).join(\"\")))}catch(t){return null}}var Q=function(t){this.type=t,this.anonId=null,this.eventData={},this.queue=[],this.pendingRequest=null;};Q.prototype.getStorageKey=function(t){var e,r=W(R.ACCESS_TOKEN);return e=r&&r.u?o.btoa(encodeURIComponent(r.u).replace(/%([0-9A-F]{2})/g,(function(t,e){return String.fromCharCode(Number(\"0x\"+e))}))):R.ACCESS_TOKEN||\"\",t?\"mapbox.eventData.\"+t+\":\"+e:\"mapbox.eventData:\"+e},Q.prototype.fetchEventData=function(){var t=P(\"localStorage\"),e=this.getStorageKey(),r=this.getStorageKey(\"uuid\");if(t)try{var n=o.localStorage.getItem(e);n&&(this.eventData=JSON.parse(n));var i=o.localStorage.getItem(r);i&&(this.anonId=i);}catch(t){A(\"Unable to read from LocalStorage\");}},Q.prototype.saveEventData=function(){var t=P(\"localStorage\"),e=this.getStorageKey(),r=this.getStorageKey(\"uuid\");if(t)try{o.localStorage.setItem(r,this.anonId),Object.keys(this.eventData).length>=1&&o.localStorage.setItem(e,JSON.stringify(this.eventData));}catch(t){A(\"Unable to write to LocalStorage\");}},Q.prototype.processRequests=function(t){},Q.prototype.postEvent=function(t,e,r,n){var i=this;if(R.EVENTS_URL){var a=Y(R.EVENTS_URL);a.params.push(\"access_token=\"+(n||R.ACCESS_TOKEN||\"\"));var o={event:this.type,created:new Date(t).toISOString(),sdkIdentifier:\"mapbox-gl-js\",sdkVersion:\"1.13.3\",skuId:K,userId:this.anonId},s=e?h(o,e):o,u={url:$(a),headers:{\"Content-Type\":\"text/plain\"},body:JSON.stringify([s])};this.pendingRequest=wt(u,(function(t){i.pendingRequest=null,r(t),i.saveEventData(),i.processRequests(n);}));}},Q.prototype.queueRequest=function(t,e){this.queue.push(t),this.processRequests(e);};var tt,et,rt=function(t){function e(){t.call(this,\"map.load\"),this.success={},this.skuToken=\"\";}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e,e.prototype.postMapLoadEvent=function(t,e,r,n){this.skuToken=r;var i=!(!n&&!R.ACCESS_TOKEN),a=Array.isArray(t)&&t.some((function(t){return Z(t)||J(t)}));R.EVENTS_URL&&i&&a&&this.queueRequest({id:e,timestamp:Date.now()},n);},e.prototype.processRequests=function(t){var e=this;if(!this.pendingRequest&&0!==this.queue.length){var r=this.queue.shift(),n=r.id,i=r.timestamp;n&&this.success[n]||(this.anonId||this.fetchEventData(),m(this.anonId)||(this.anonId=d()),this.postEvent(i,{skuToken:this.skuToken},(function(t){t||n&&(e.success[n]=!0);}),t));}},e}(Q),nt=new(function(t){function e(e){t.call(this,\"appUserTurnstile\"),this._customAccessToken=e;}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e,e.prototype.postTurnstileEvent=function(t,e){R.EVENTS_URL&&R.ACCESS_TOKEN&&Array.isArray(t)&&t.some((function(t){return Z(t)||J(t)}))&&this.queueRequest(Date.now(),e);},e.prototype.processRequests=function(t){var e=this;if(!this.pendingRequest&&0!==this.queue.length){this.anonId&&this.eventData.lastSuccess&&this.eventData.tokenU||this.fetchEventData();var r=W(R.ACCESS_TOKEN),n=r?r.u:R.ACCESS_TOKEN,i=n!==this.eventData.tokenU;m(this.anonId)||(this.anonId=d(),i=!0);var a=this.queue.shift();if(this.eventData.lastSuccess){var o=new Date(this.eventData.lastSuccess),s=new Date(a),u=(a-this.eventData.lastSuccess)/864e5;i=i||u>=1||u<-1||o.getDate()!==s.getDate();}else i=!0;if(!i)return this.processRequests();this.postEvent(a,{\"enabled.telemetry\":!1},(function(t){t||(e.eventData.lastSuccess=a,e.eventData.tokenU=n);}),t);}},e}(Q)),it=nt.postTurnstileEvent.bind(nt),at=new rt,ot=at.postMapLoadEvent.bind(at),st=500,ut=50;function lt(){o.caches&&!tt&&(tt=o.caches.open(\"mapbox-tiles\"));}function pt(t){var e=t.indexOf(\"?\");return e<0?t:t.slice(0,e)}var ct,ht=1/0;function ft(){return null==ct&&(ct=o.OffscreenCanvas&&new o.OffscreenCanvas(1,1).getContext(\"2d\")&&\"function\"==typeof o.createImageBitmap),ct}var yt={Unknown:\"Unknown\",Style:\"Style\",Source:\"Source\",Tile:\"Tile\",Glyphs:\"Glyphs\",SpriteImage:\"SpriteImage\",SpriteJSON:\"SpriteJSON\",Image:\"Image\"};\"function\"==typeof Object.freeze&&Object.freeze(yt);var dt=function(t){function e(e,r,n){401===r&&J(n)&&(e+=\": you may have provided an invalid Mapbox access token. See https://www.mapbox.com/api-documentation/#access-tokens-and-token-scopes\"),t.call(this,e),this.status=r,this.url=n,this.name=this.constructor.name,this.message=e;}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e,e.prototype.toString=function(){return this.name+\": \"+this.message+\" (\"+this.status+\"): \"+this.url},e}(Error),mt=I()?function(){return self.worker&&self.worker.referrer}:function(){return (\"blob:\"===o.location.protocol?o.parent:o).location.href};var vt,gt,xt=function(t,e){if(!(/^file:/.test(r=t.url)||/^file:/.test(mt())&&!/^\\w+:/.test(r))){if(o.fetch&&o.Request&&o.AbortController&&o.Request.prototype.hasOwnProperty(\"signal\"))return function(t,e){var r,n=new o.AbortController,i=new o.Request(t.url,{method:t.method||\"GET\",body:t.body,credentials:t.credentials,headers:t.headers,referrer:mt(),signal:n.signal}),a=!1,s=!1,u=(r=i.url).indexOf(\"sku=\")>0&&J(r);\"json\"===t.type&&i.headers.set(\"Accept\",\"application/json\");var l=function(r,n,a){if(!s){if(r&&\"SecurityError\"!==r.message&&A(r),n&&a)return p(n);var l=Date.now();o.fetch(i).then((function(r){if(r.ok){var n=u?r.clone():null;return p(r,n,l)}return e(new dt(r.statusText,r.status,t.url))})).catch((function(t){20!==t.code&&e(new Error(t.message));}));}},p=function(r,n,u){(\"arrayBuffer\"===t.type?r.arrayBuffer():\"json\"===t.type?r.json():r.text()).then((function(t){s||(n&&u&&function(t,e,r){if(lt(),tt){var n={status:e.status,statusText:e.statusText,headers:new o.Headers};e.headers.forEach((function(t,e){return n.headers.set(e,t)}));var i=z(e.headers.get(\"Cache-Control\")||\"\");i[\"no-store\"]||(i[\"max-age\"]&&n.headers.set(\"Expires\",new Date(r+1e3*i[\"max-age\"]).toUTCString()),new Date(n.headers.get(\"Expires\")).getTime()-r<42e4||function(t,e){if(void 0===et)try{new Response(new ReadableStream),et=!0;}catch(t){et=!1;}et?e(t.body):t.blob().then(e);}(e,(function(e){var r=new o.Response(e,n);lt(),tt&&tt.then((function(e){return e.put(pt(t.url),r)})).catch((function(t){return A(t.message)}));})));}}(i,n,u),a=!0,e(null,t,r.headers.get(\"Cache-Control\"),r.headers.get(\"Expires\")));})).catch((function(t){s||e(new Error(t.message));}));};return u?function(t,e){if(lt(),!tt)return e(null);var r=pt(t.url);tt.then((function(t){t.match(r).then((function(n){var i=function(t){if(!t)return !1;var e=new Date(t.headers.get(\"Expires\")||0),r=z(t.headers.get(\"Cache-Control\")||\"\");return e>Date.now()&&!r[\"no-cache\"]}(n);t.delete(r),i&&t.put(r,n.clone()),e(null,n,i);})).catch(e);})).catch(e);}(i,l):l(null,null),{cancel:function(){s=!0,a||n.abort();}}}(t,e);if(I()&&self.worker&&self.worker.actor)return self.worker.actor.send(\"getResource\",t,e,void 0,!0)}var r;return function(t,e){var r=new o.XMLHttpRequest;for(var n in r.open(t.method||\"GET\",t.url,!0),\"arrayBuffer\"===t.type&&(r.responseType=\"arraybuffer\"),t.headers)r.setRequestHeader(n,t.headers[n]);return \"json\"===t.type&&(r.responseType=\"text\",r.setRequestHeader(\"Accept\",\"application/json\")),r.withCredentials=\"include\"===t.credentials,r.onerror=function(){e(new Error(r.statusText));},r.onload=function(){if((r.status>=200&&r.status<300||0===r.status)&&null!==r.response){var n=r.response;if(\"json\"===t.type)try{n=JSON.parse(r.response);}catch(t){return e(t)}e(null,n,r.getResponseHeader(\"Cache-Control\"),r.getResponseHeader(\"Expires\"));}else e(new dt(r.statusText,r.status,t.url));},r.send(t.body),{cancel:function(){return r.abort()}}}(t,e)},bt=function(t,e){return xt(h(t,{type:\"arrayBuffer\"}),e)},wt=function(t,e){return xt(h(t,{method:\"POST\"}),e)},_t=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAC0lEQVQYV2NgAAIAAAUAAarVyFEAAAAASUVORK5CYII=\";vt=[],gt=0;var At=function(t,e){if(U.supported&&(t.headers||(t.headers={}),t.headers.accept=\"image/webp,*/*\"),gt>=R.MAX_PARALLEL_IMAGE_REQUESTS){var r={requestParameters:t,callback:e,cancelled:!1,cancel:function(){this.cancelled=!0;}};return vt.push(r),r}gt++;var n=!1,i=function(){if(!n)for(n=!0,gt--;vt.length&&gt<R.MAX_PARALLEL_IMAGE_REQUESTS;){var t=vt.shift();t.cancelled||(t.cancel=At(t.requestParameters,t.callback).cancel);}},a=bt(t,(function(t,r,n,a){i(),t?e(t):r&&(ft()?function(t,e){var r=new o.Blob([new Uint8Array(t)],{type:\"image/png\"});o.createImageBitmap(r).then((function(t){e(null,t);})).catch((function(t){e(new Error(\"Could not load image because of \"+t.message+\". Please make sure to use a supported image type such as PNG or JPEG. Note that SVGs are not supported.\"));}));}(r,e):function(t,e,r,n){var i=new o.Image,a=o.URL;i.onload=function(){e(null,i),a.revokeObjectURL(i.src),i.onload=null,o.requestAnimationFrame((function(){i.src=_t;}));},i.onerror=function(){return e(new Error(\"Could not load image. Please make sure to use a supported image type such as PNG or JPEG. Note that SVGs are not supported.\"))};var s=new o.Blob([new Uint8Array(t)],{type:\"image/png\"});i.cacheControl=r,i.expires=n,i.src=t.byteLength?a.createObjectURL(s):_t;}(r,e,n,a));}));return {cancel:function(){a.cancel(),i();}}};function St(t,e,r){r[t]&&-1!==r[t].indexOf(e)||(r[t]=r[t]||[],r[t].push(e));}function kt(t,e,r){if(r&&r[t]){var n=r[t].indexOf(e);-1!==n&&r[t].splice(n,1);}}var It=function(t,e){void 0===e&&(e={}),h(this,e),this.type=t;},zt=function(t){function e(e,r){void 0===r&&(r={}),t.call(this,\"error\",h({error:e},r));}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e,e}(It),Ct=function(){};Ct.prototype.on=function(t,e){return this._listeners=this._listeners||{},St(t,e,this._listeners),this},Ct.prototype.off=function(t,e){return kt(t,e,this._listeners),kt(t,e,this._oneTimeListeners),this},Ct.prototype.once=function(t,e){return this._oneTimeListeners=this._oneTimeListeners||{},St(t,e,this._oneTimeListeners),this},Ct.prototype.fire=function(t,e){\"string\"==typeof t&&(t=new It(t,e||{}));var r=t.type;if(this.listens(r)){t.target=this;for(var n=0,i=this._listeners&&this._listeners[r]?this._listeners[r].slice():[];n<i.length;n+=1)i[n].call(this,t);for(var a=0,o=this._oneTimeListeners&&this._oneTimeListeners[r]?this._oneTimeListeners[r].slice():[];a<o.length;a+=1){var s=o[a];kt(r,s,this._oneTimeListeners),s.call(this,t);}var u=this._eventedParent;u&&(h(t,\"function\"==typeof this._eventedParentData?this._eventedParentData():this._eventedParentData),u.fire(t));}else t instanceof zt&&console.error(t.error);return this},Ct.prototype.listens=function(t){return this._listeners&&this._listeners[t]&&this._listeners[t].length>0||this._oneTimeListeners&&this._oneTimeListeners[t]&&this._oneTimeListeners[t].length>0||this._eventedParent&&this._eventedParent.listens(t)},Ct.prototype.setEventedParent=function(t,e){return this._eventedParent=t,this._eventedParentData=e,this};var Et={$version:8,$root:{version:{required:!0,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\"},sources:{required:!0,type:\"sources\"},sprite:{type:\"string\"},glyphs:{type:\"string\"},transition:{type:\"transition\"},layers:{required:!0,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:!0,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:!1},\"*\":{type:\"*\"}},source_raster:{type:{required:!0,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:!1},\"*\":{type:\"*\"}},source_raster_dem:{type:{required:!0,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:!1},\"*\":{type:\"*\"}},source_geojson:{type:{required:!0,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:.375},cluster:{type:\"boolean\",default:!1},clusterRadius:{type:\"number\",default:50,minimum:0},clusterMaxZoom:{type:\"number\"},clusterMinPoints:{type:\"number\"},clusterProperties:{type:\"*\"},lineMetrics:{type:\"boolean\",default:!1},generateId:{type:\"boolean\",default:!1},promoteId:{type:\"promoteId\"}},source_video:{type:{required:!0,type:\"enum\",values:{video:{}}},urls:{required:!0,type:\"array\",value:\"string\"},coordinates:{required:!0,type:\"array\",length:4,value:{type:\"array\",length:2,value:\"number\"}}},source_image:{type:{required:!0,type:\"enum\",values:{image:{}}},url:{required:!0,type:\"string\"},coordinates:{required:!0,type:\"array\",length:4,value:{type:\"array\",length:2,value:\"number\"}}},layer:{id:{type:\"string\",required:!0},type:{type:\"enum\",values:{fill:{},line:{},symbol:{},circle:{},heatmap:{},\"fill-extrusion\":{},raster:{},hillshade:{},background:{}},required:!0},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_background:{visibility:{type:\"enum\",values:{visible:{},none:{}},default:\"visible\",\"property-type\":\"constant\"}},layout_fill:{\"fill-sort-key\":{type:\"number\",expression:{interpolated:!1,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:!1,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\"}},layout_line:{\"line-cap\":{type:\"enum\",values:{butt:{},round:{},square:{}},default:\"butt\",expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"line-join\":{type:\"enum\",values:{bevel:{},round:{},miter:{}},default:\"miter\",expression:{interpolated:!1,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"line-miter-limit\":{type:\"number\",default:2,requires:[{\"line-join\":\"miter\"}],expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"line-round-limit\":{type:\"number\",default:1.05,requires:[{\"line-join\":\"round\"}],expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"line-sort-key\":{type:\"number\",expression:{interpolated:!1,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:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"symbol-spacing\":{type:\"number\",default:250,minimum:1,units:\"pixels\",requires:[{\"symbol-placement\":\"line\"}],expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"symbol-avoid-edges\":{type:\"boolean\",default:!1,expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"symbol-sort-key\":{type:\"number\",expression:{interpolated:!1,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"symbol-z-order\":{type:\"enum\",values:{auto:{},\"viewport-y\":{},source:{}},default:\"auto\",expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"icon-allow-overlap\":{type:\"boolean\",default:!1,requires:[\"icon-image\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"icon-ignore-placement\":{type:\"boolean\",default:!1,requires:[\"icon-image\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"icon-optional\":{type:\"boolean\",default:!1,requires:[\"icon-image\",\"text-field\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"icon-rotation-alignment\":{type:\"enum\",values:{map:{},viewport:{},auto:{}},default:\"auto\",requires:[\"icon-image\"],expression:{interpolated:!1,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:!0,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:!1,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:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"icon-image\":{type:\"resolvedImage\",tokens:!0,expression:{interpolated:!1,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"icon-rotate\":{type:\"number\",default:0,period:360,units:\"degrees\",requires:[\"icon-image\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"icon-padding\":{type:\"number\",default:2,minimum:0,units:\"pixels\",requires:[\"icon-image\"],expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"icon-keep-upright\":{type:\"boolean\",default:!1,requires:[\"icon-image\",{\"icon-rotation-alignment\":\"map\"},{\"symbol-placement\":[\"line\",\"line-center\"]}],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"icon-offset\":{type:\"array\",value:\"number\",length:2,default:[0,0],requires:[\"icon-image\"],expression:{interpolated:!0,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:!1,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"icon-pitch-alignment\":{type:\"enum\",values:{map:{},viewport:{},auto:{}},default:\"auto\",requires:[\"icon-image\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-pitch-alignment\":{type:\"enum\",values:{map:{},viewport:{},auto:{}},default:\"auto\",requires:[\"text-field\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-rotation-alignment\":{type:\"enum\",values:{map:{},viewport:{},auto:{}},default:\"auto\",requires:[\"text-field\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-field\":{type:\"formatted\",default:\"\",tokens:!0,expression:{interpolated:!1,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:!1,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"text-size\":{type:\"number\",default:16,minimum:0,units:\"pixels\",requires:[\"text-field\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"text-max-width\":{type:\"number\",default:10,minimum:0,units:\"ems\",requires:[\"text-field\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"text-line-height\":{type:\"number\",default:1.2,units:\"ems\",requires:[\"text-field\"],expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-letter-spacing\":{type:\"number\",default:0,units:\"ems\",requires:[\"text-field\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"text-justify\":{type:\"enum\",values:{auto:{},left:{},center:{},right:{}},default:\"center\",requires:[\"text-field\"],expression:{interpolated:!1,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:!0,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:!1,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:!1,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:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-writing-mode\":{type:\"array\",value:\"enum\",values:{horizontal:{},vertical:{}},requires:[\"text-field\",{\"symbol-placement\":[\"point\"]}],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-rotate\":{type:\"number\",default:0,period:360,units:\"degrees\",requires:[\"text-field\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"text-padding\":{type:\"number\",default:2,minimum:0,units:\"pixels\",requires:[\"text-field\"],expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-keep-upright\":{type:\"boolean\",default:!0,requires:[\"text-field\",{\"text-rotation-alignment\":\"map\"},{\"symbol-placement\":[\"line\",\"line-center\"]}],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-transform\":{type:\"enum\",values:{none:{},uppercase:{},lowercase:{}},default:\"none\",requires:[\"text-field\"],expression:{interpolated:!1,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:!0,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"text-allow-overlap\":{type:\"boolean\",default:!1,requires:[\"text-field\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-ignore-placement\":{type:\"boolean\",default:!1,requires:[\"text-field\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-optional\":{type:\"boolean\",default:!1,requires:[\"text-field\",\"icon-image\"],expression:{interpolated:!1,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_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:!1}},function_stop:{type:\"array\",minimum:0,maximum:24,value:[\"number\",\"color\"],length:2},expression:{type:\"array\",value:\"*\",minimum:1},light:{anchor:{type:\"enum\",default:\"viewport\",values:{map:{},viewport:{}},\"property-type\":\"data-constant\",transition:!1,expression:{interpolated:!1,parameters:[\"zoom\"]}},position:{type:\"array\",default:[1.15,210,30],length:3,value:\"number\",\"property-type\":\"data-constant\",transition:!0,expression:{interpolated:!0,parameters:[\"zoom\"]}},color:{type:\"color\",\"property-type\":\"data-constant\",default:\"#ffffff\",expression:{interpolated:!0,parameters:[\"zoom\"]},transition:!0},intensity:{type:\"number\",\"property-type\":\"data-constant\",default:.5,minimum:0,maximum:1,expression:{interpolated:!0,parameters:[\"zoom\"]},transition:!0}},paint:[\"paint_fill\",\"paint_line\",\"paint_circle\",\"paint_heatmap\",\"paint_fill-extrusion\",\"paint_symbol\",\"paint_raster\",\"paint_hillshade\",\"paint_background\"],paint_fill:{\"fill-antialias\":{type:\"boolean\",default:!0,expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"fill-opacity\":{type:\"number\",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"fill-color\":{type:\"color\",default:\"#000000\",transition:!0,requires:[{\"!\":\"fill-pattern\"}],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"fill-outline-color\":{type:\"color\",transition:!0,requires:[{\"!\":\"fill-pattern\"},{\"fill-antialias\":!0}],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"fill-translate\":{type:\"array\",value:\"number\",length:2,default:[0,0],transition:!0,units:\"pixels\",expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"fill-translate-anchor\":{type:\"enum\",values:{map:{},viewport:{}},default:\"map\",requires:[\"fill-translate\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"fill-pattern\":{type:\"resolvedImage\",transition:!0,expression:{interpolated:!1,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"cross-faded-data-driven\"}},\"paint_fill-extrusion\":{\"fill-extrusion-opacity\":{type:\"number\",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"fill-extrusion-color\":{type:\"color\",default:\"#000000\",transition:!0,requires:[{\"!\":\"fill-extrusion-pattern\"}],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"fill-extrusion-translate\":{type:\"array\",value:\"number\",length:2,default:[0,0],transition:!0,units:\"pixels\",expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"fill-extrusion-translate-anchor\":{type:\"enum\",values:{map:{},viewport:{}},default:\"map\",requires:[\"fill-extrusion-translate\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"fill-extrusion-pattern\":{type:\"resolvedImage\",transition:!0,expression:{interpolated:!1,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"cross-faded-data-driven\"},\"fill-extrusion-height\":{type:\"number\",default:0,minimum:0,units:\"meters\",transition:!0,expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"fill-extrusion-base\":{type:\"number\",default:0,minimum:0,units:\"meters\",transition:!0,requires:[\"fill-extrusion-height\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"fill-extrusion-vertical-gradient\":{type:\"boolean\",default:!0,transition:!1,expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"}},paint_line:{\"line-opacity\":{type:\"number\",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"line-color\":{type:\"color\",default:\"#000000\",transition:!0,requires:[{\"!\":\"line-pattern\"}],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"line-translate\":{type:\"array\",value:\"number\",length:2,default:[0,0],transition:!0,units:\"pixels\",expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"line-translate-anchor\":{type:\"enum\",values:{map:{},viewport:{}},default:\"map\",requires:[\"line-translate\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"line-width\":{type:\"number\",default:1,minimum:0,transition:!0,units:\"pixels\",expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"line-gap-width\":{type:\"number\",default:0,minimum:0,transition:!0,units:\"pixels\",expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"line-offset\":{type:\"number\",default:0,transition:!0,units:\"pixels\",expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"line-blur\":{type:\"number\",default:0,minimum:0,transition:!0,units:\"pixels\",expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"line-dasharray\":{type:\"array\",value:\"number\",minimum:0,transition:!0,units:\"line widths\",requires:[{\"!\":\"line-pattern\"}],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"cross-faded\"},\"line-pattern\":{type:\"resolvedImage\",transition:!0,expression:{interpolated:!1,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"cross-faded-data-driven\"},\"line-gradient\":{type:\"color\",transition:!1,requires:[{\"!\":\"line-dasharray\"},{\"!\":\"line-pattern\"},{source:\"geojson\",has:{lineMetrics:!0}}],expression:{interpolated:!0,parameters:[\"line-progress\"]},\"property-type\":\"color-ramp\"}},paint_circle:{\"circle-radius\":{type:\"number\",default:5,minimum:0,transition:!0,units:\"pixels\",expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"circle-color\":{type:\"color\",default:\"#000000\",transition:!0,expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"circle-blur\":{type:\"number\",default:0,transition:!0,expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"circle-opacity\":{type:\"number\",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"circle-translate\":{type:\"array\",value:\"number\",length:2,default:[0,0],transition:!0,units:\"pixels\",expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"circle-translate-anchor\":{type:\"enum\",values:{map:{},viewport:{}},default:\"map\",requires:[\"circle-translate\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"circle-pitch-scale\":{type:\"enum\",values:{map:{},viewport:{}},default:\"map\",expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"circle-pitch-alignment\":{type:\"enum\",values:{map:{},viewport:{}},default:\"viewport\",expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"circle-stroke-width\":{type:\"number\",default:0,minimum:0,transition:!0,units:\"pixels\",expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"circle-stroke-color\":{type:\"color\",default:\"#000000\",transition:!0,expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"circle-stroke-opacity\":{type:\"number\",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"}},paint_heatmap:{\"heatmap-radius\":{type:\"number\",default:30,minimum:1,transition:!0,units:\"pixels\",expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"heatmap-weight\":{type:\"number\",default:1,minimum:0,transition:!1,expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"heatmap-intensity\":{type:\"number\",default:1,minimum:0,transition:!0,expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"heatmap-color\":{type:\"color\",default:[\"interpolate\",[\"linear\"],[\"heatmap-density\"],0,\"rgba(0, 0, 255, 0)\",.1,\"royalblue\",.3,\"cyan\",.5,\"lime\",.7,\"yellow\",1,\"red\"],transition:!1,expression:{interpolated:!0,parameters:[\"heatmap-density\"]},\"property-type\":\"color-ramp\"},\"heatmap-opacity\":{type:\"number\",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"}},paint_symbol:{\"icon-opacity\":{type:\"number\",default:1,minimum:0,maximum:1,transition:!0,requires:[\"icon-image\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"icon-color\":{type:\"color\",default:\"#000000\",transition:!0,requires:[\"icon-image\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"icon-halo-color\":{type:\"color\",default:\"rgba(0, 0, 0, 0)\",transition:!0,requires:[\"icon-image\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"icon-halo-width\":{type:\"number\",default:0,minimum:0,transition:!0,units:\"pixels\",requires:[\"icon-image\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"icon-halo-blur\":{type:\"number\",default:0,minimum:0,transition:!0,units:\"pixels\",requires:[\"icon-image\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"icon-translate\":{type:\"array\",value:\"number\",length:2,default:[0,0],transition:!0,units:\"pixels\",requires:[\"icon-image\"],expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"icon-translate-anchor\":{type:\"enum\",values:{map:{},viewport:{}},default:\"map\",requires:[\"icon-image\",\"icon-translate\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-opacity\":{type:\"number\",default:1,minimum:0,maximum:1,transition:!0,requires:[\"text-field\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"text-color\":{type:\"color\",default:\"#000000\",transition:!0,overridable:!0,requires:[\"text-field\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"text-halo-color\":{type:\"color\",default:\"rgba(0, 0, 0, 0)\",transition:!0,requires:[\"text-field\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"text-halo-width\":{type:\"number\",default:0,minimum:0,transition:!0,units:\"pixels\",requires:[\"text-field\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"text-halo-blur\":{type:\"number\",default:0,minimum:0,transition:!0,units:\"pixels\",requires:[\"text-field\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"text-translate\":{type:\"array\",value:\"number\",length:2,default:[0,0],transition:!0,units:\"pixels\",requires:[\"text-field\"],expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-translate-anchor\":{type:\"enum\",values:{map:{},viewport:{}},default:\"map\",requires:[\"text-field\",\"text-translate\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"}},paint_raster:{\"raster-opacity\":{type:\"number\",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"raster-hue-rotate\":{type:\"number\",default:0,period:360,transition:!0,units:\"degrees\",expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"raster-brightness-min\":{type:\"number\",default:0,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"raster-brightness-max\":{type:\"number\",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"raster-saturation\":{type:\"number\",default:0,minimum:-1,maximum:1,transition:!0,expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"raster-contrast\":{type:\"number\",default:0,minimum:-1,maximum:1,transition:!0,expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"raster-resampling\":{type:\"enum\",values:{linear:{},nearest:{}},default:\"linear\",expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"raster-fade-duration\":{type:\"number\",default:300,minimum:0,transition:!1,units:\"milliseconds\",expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"}},paint_hillshade:{\"hillshade-illumination-direction\":{type:\"number\",default:335,minimum:0,maximum:359,transition:!1,expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"hillshade-illumination-anchor\":{type:\"enum\",values:{map:{},viewport:{}},default:\"viewport\",expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"hillshade-exaggeration\":{type:\"number\",default:.5,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"hillshade-shadow-color\":{type:\"color\",default:\"#000000\",transition:!0,expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"hillshade-highlight-color\":{type:\"color\",default:\"#FFFFFF\",transition:!0,expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"hillshade-accent-color\":{type:\"color\",default:\"#000000\",transition:!0,expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"}},paint_background:{\"background-color\":{type:\"color\",default:\"#000000\",transition:!0,requires:[{\"!\":\"background-pattern\"}],expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"background-pattern\":{type:\"resolvedImage\",transition:!0,expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"cross-faded\"},\"background-opacity\":{type:\"number\",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,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\"},\"cross-faded\":{type:\"property-type\"},\"cross-faded-data-driven\":{type:\"property-type\"},\"color-ramp\":{type:\"property-type\"},\"data-constant\":{type:\"property-type\"},constant:{type:\"property-type\"}},promoteId:{\"*\":{type:\"string\"}}},Pt=function(t,e,r,n){this.message=(t?t+\": \":\"\")+r,n&&(this.identifier=n),null!=e&&e.__line__&&(this.line=e.__line__);};function Mt(t){var e=t.value;return e?[new Pt(t.key,e,\"constants have been deprecated as of v8\")]:[]}function Bt(t){for(var e=[],r=arguments.length-1;r-- >0;)e[r]=arguments[r+1];for(var n=0,i=e;n<i.length;n+=1){var a=i[n];for(var o in a)t[o]=a[o];}return t}function Tt(t){return t instanceof Number||t instanceof String||t instanceof Boolean?t.valueOf():t}function Vt(t){if(Array.isArray(t))return t.map(Vt);if(t instanceof Object&&!(t instanceof Number||t instanceof String||t instanceof Boolean)){var e={};for(var r in t)e[r]=Vt(t[r]);return e}return Tt(t)}var Ft=function(t){function e(e,r){t.call(this,r),this.message=r,this.key=e;}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e,e}(Error),Dt=function(t,e){void 0===e&&(e=[]),this.parent=t,this.bindings={};for(var r=0,n=e;r<n.length;r+=1){var i=n[r];this.bindings[i[0]]=i[1];}};Dt.prototype.concat=function(t){return new Dt(this,t)},Dt.prototype.get=function(t){if(this.bindings[t])return this.bindings[t];if(this.parent)return this.parent.get(t);throw new Error(t+\" not found in scope.\")},Dt.prototype.has=function(t){return !!this.bindings[t]||!!this.parent&&this.parent.has(t)};var Lt={kind:\"null\"},Ot={kind:\"number\"},Rt={kind:\"string\"},Ut={kind:\"boolean\"},jt={kind:\"color\"},qt={kind:\"object\"},Nt={kind:\"value\"},Kt={kind:\"collator\"},Gt={kind:\"formatted\"},Zt={kind:\"resolvedImage\"};function Xt(t,e){return {kind:\"array\",itemType:t,N:e}}function Jt(t){if(\"array\"===t.kind){var e=Jt(t.itemType);return \"number\"==typeof t.N?\"array<\"+e+\", \"+t.N+\">\":\"value\"===t.itemType.kind?\"array\":\"array<\"+e+\">\"}return t.kind}var Ht=[Lt,Ot,Rt,Ut,jt,Gt,qt,Xt(Nt),Zt];function Yt(t,e){if(\"error\"===e.kind)return null;if(\"array\"===t.kind){if(\"array\"===e.kind&&(0===e.N&&\"value\"===e.itemType.kind||!Yt(t.itemType,e.itemType))&&(\"number\"!=typeof t.N||t.N===e.N))return null}else {if(t.kind===e.kind)return null;if(\"value\"===t.kind)for(var r=0,n=Ht;r<n.length;r+=1)if(!Yt(n[r],e))return null}return \"Expected \"+Jt(t)+\" but found \"+Jt(e)+\" instead.\"}function $t(t,e){return e.some((function(e){return e.kind===t.kind}))}function Wt(t,e){return e.some((function(e){return \"null\"===e?null===t:\"array\"===e?Array.isArray(t):\"object\"===e?t&&!Array.isArray(t)&&\"object\"==typeof t:e===typeof t}))}var Qt=e((function(t,e){var r={transparent:[0,0,0,0],aliceblue:[240,248,255,1],antiquewhite:[250,235,215,1],aqua:[0,255,255,1],aquamarine:[127,255,212,1],azure:[240,255,255,1],beige:[245,245,220,1],bisque:[255,228,196,1],black:[0,0,0,1],blanchedalmond:[255,235,205,1],blue:[0,0,255,1],blueviolet:[138,43,226,1],brown:[165,42,42,1],burlywood:[222,184,135,1],cadetblue:[95,158,160,1],chartreuse:[127,255,0,1],chocolate:[210,105,30,1],coral:[255,127,80,1],cornflowerblue:[100,149,237,1],cornsilk:[255,248,220,1],crimson:[220,20,60,1],cyan:[0,255,255,1],darkblue:[0,0,139,1],darkcyan:[0,139,139,1],darkgoldenrod:[184,134,11,1],darkgray:[169,169,169,1],darkgreen:[0,100,0,1],darkgrey:[169,169,169,1],darkkhaki:[189,183,107,1],darkmagenta:[139,0,139,1],darkolivegreen:[85,107,47,1],darkorange:[255,140,0,1],darkorchid:[153,50,204,1],darkred:[139,0,0,1],darksalmon:[233,150,122,1],darkseagreen:[143,188,143,1],darkslateblue:[72,61,139,1],darkslategray:[47,79,79,1],darkslategrey:[47,79,79,1],darkturquoise:[0,206,209,1],darkviolet:[148,0,211,1],deeppink:[255,20,147,1],deepskyblue:[0,191,255,1],dimgray:[105,105,105,1],dimgrey:[105,105,105,1],dodgerblue:[30,144,255,1],firebrick:[178,34,34,1],floralwhite:[255,250,240,1],forestgreen:[34,139,34,1],fuchsia:[255,0,255,1],gainsboro:[220,220,220,1],ghostwhite:[248,248,255,1],gold:[255,215,0,1],goldenrod:[218,165,32,1],gray:[128,128,128,1],green:[0,128,0,1],greenyellow:[173,255,47,1],grey:[128,128,128,1],honeydew:[240,255,240,1],hotpink:[255,105,180,1],indianred:[205,92,92,1],indigo:[75,0,130,1],ivory:[255,255,240,1],khaki:[240,230,140,1],lavender:[230,230,250,1],lavenderblush:[255,240,245,1],lawngreen:[124,252,0,1],lemonchiffon:[255,250,205,1],lightblue:[173,216,230,1],lightcoral:[240,128,128,1],lightcyan:[224,255,255,1],lightgoldenrodyellow:[250,250,210,1],lightgray:[211,211,211,1],lightgreen:[144,238,144,1],lightgrey:[211,211,211,1],lightpink:[255,182,193,1],lightsalmon:[255,160,122,1],lightseagreen:[32,178,170,1],lightskyblue:[135,206,250,1],lightslategray:[119,136,153,1],lightslategrey:[119,136,153,1],lightsteelblue:[176,196,222,1],lightyellow:[255,255,224,1],lime:[0,255,0,1],limegreen:[50,205,50,1],linen:[250,240,230,1],magenta:[255,0,255,1],maroon:[128,0,0,1],mediumaquamarine:[102,205,170,1],mediumblue:[0,0,205,1],mediumorchid:[186,85,211,1],mediumpurple:[147,112,219,1],mediumseagreen:[60,179,113,1],mediumslateblue:[123,104,238,1],mediumspringgreen:[0,250,154,1],mediumturquoise:[72,209,204,1],mediumvioletred:[199,21,133,1],midnightblue:[25,25,112,1],mintcream:[245,255,250,1],mistyrose:[255,228,225,1],moccasin:[255,228,181,1],navajowhite:[255,222,173,1],navy:[0,0,128,1],oldlace:[253,245,230,1],olive:[128,128,0,1],olivedrab:[107,142,35,1],orange:[255,165,0,1],orangered:[255,69,0,1],orchid:[218,112,214,1],palegoldenrod:[238,232,170,1],palegreen:[152,251,152,1],paleturquoise:[175,238,238,1],palevioletred:[219,112,147,1],papayawhip:[255,239,213,1],peachpuff:[255,218,185,1],peru:[205,133,63,1],pink:[255,192,203,1],plum:[221,160,221,1],powderblue:[176,224,230,1],purple:[128,0,128,1],rebeccapurple:[102,51,153,1],red:[255,0,0,1],rosybrown:[188,143,143,1],royalblue:[65,105,225,1],saddlebrown:[139,69,19,1],salmon:[250,128,114,1],sandybrown:[244,164,96,1],seagreen:[46,139,87,1],seashell:[255,245,238,1],sienna:[160,82,45,1],silver:[192,192,192,1],skyblue:[135,206,235,1],slateblue:[106,90,205,1],slategray:[112,128,144,1],slategrey:[112,128,144,1],snow:[255,250,250,1],springgreen:[0,255,127,1],steelblue:[70,130,180,1],tan:[210,180,140,1],teal:[0,128,128,1],thistle:[216,191,216,1],tomato:[255,99,71,1],turquoise:[64,224,208,1],violet:[238,130,238,1],wheat:[245,222,179,1],white:[255,255,255,1],whitesmoke:[245,245,245,1],yellow:[255,255,0,1],yellowgreen:[154,205,50,1]};function n(t){return (t=Math.round(t))<0?0:t>255?255:t}function i(t){return n(\"%\"===t[t.length-1]?parseFloat(t)/100*255:parseInt(t))}function a(t){return (e=\"%\"===t[t.length-1]?parseFloat(t)/100:parseFloat(t))<0?0:e>1?1:e;var e;}function o(t,e,r){return r<0?r+=1:r>1&&(r-=1),6*r<1?t+(e-t)*r*6:2*r<1?e:3*r<2?t+(e-t)*(2/3-r)*6:t}try{e.parseCSSColor=function(t){var e,s=t.replace(/ /g,\"\").toLowerCase();if(s in r)return r[s].slice();if(\"#\"===s[0])return 4===s.length?(e=parseInt(s.substr(1),16))>=0&&e<=4095?[(3840&e)>>4|(3840&e)>>8,240&e|(240&e)>>4,15&e|(15&e)<<4,1]:null:7===s.length&&(e=parseInt(s.substr(1),16))>=0&&e<=16777215?[(16711680&e)>>16,(65280&e)>>8,255&e,1]:null;var u=s.indexOf(\"(\"),l=s.indexOf(\")\");if(-1!==u&&l+1===s.length){var p=s.substr(0,u),c=s.substr(u+1,l-(u+1)).split(\",\"),h=1;switch(p){case\"rgba\":if(4!==c.length)return null;h=a(c.pop());case\"rgb\":return 3!==c.length?null:[i(c[0]),i(c[1]),i(c[2]),h];case\"hsla\":if(4!==c.length)return null;h=a(c.pop());case\"hsl\":if(3!==c.length)return null;var f=(parseFloat(c[0])%360+360)%360/360,y=a(c[1]),d=a(c[2]),m=d<=.5?d*(y+1):d+y-d*y,v=2*d-m;return [n(255*o(v,m,f+1/3)),n(255*o(v,m,f)),n(255*o(v,m,f-1/3)),h];default:return null}}return null};}catch(t){}})).parseCSSColor,te=function(t,e,r,n){void 0===n&&(n=1),this.r=t,this.g=e,this.b=r,this.a=n;};te.parse=function(t){if(t){if(t instanceof te)return t;if(\"string\"==typeof t){var e=Qt(t);if(e)return new te(e[0]/255*e[3],e[1]/255*e[3],e[2]/255*e[3],e[3])}}},te.prototype.toString=function(){var t=this.toArray(),e=t[1],r=t[2],n=t[3];return \"rgba(\"+Math.round(t[0])+\",\"+Math.round(e)+\",\"+Math.round(r)+\",\"+n+\")\"},te.prototype.toArray=function(){var t=this.a;return 0===t?[0,0,0,0]:[255*this.r/t,255*this.g/t,255*this.b/t,t]},te.black=new te(0,0,0,1),te.white=new te(1,1,1,1),te.transparent=new te(0,0,0,0),te.red=new te(1,0,0,1);var ee=function(t,e,r){this.sensitivity=t?e?\"variant\":\"case\":e?\"accent\":\"base\",this.locale=r,this.collator=new Intl.Collator(this.locale?this.locale:[],{sensitivity:this.sensitivity,usage:\"search\"});};ee.prototype.compare=function(t,e){return this.collator.compare(t,e)},ee.prototype.resolvedLocale=function(){return new Intl.Collator(this.locale?this.locale:[]).resolvedOptions().locale};var re=function(t,e,r,n,i){this.text=t,this.image=e,this.scale=r,this.fontStack=n,this.textColor=i;},ne=function(t){this.sections=t;};ne.fromString=function(t){return new ne([new re(t,null,null,null,null)])},ne.prototype.isEmpty=function(){return 0===this.sections.length||!this.sections.some((function(t){return 0!==t.text.length||t.image&&0!==t.image.name.length}))},ne.factory=function(t){return t instanceof ne?t:ne.fromString(t)},ne.prototype.toString=function(){return 0===this.sections.length?\"\":this.sections.map((function(t){return t.text})).join(\"\")},ne.prototype.serialize=function(){for(var t=[\"format\"],e=0,r=this.sections;e<r.length;e+=1){var n=r[e];if(n.image)t.push([\"image\",n.image.name]);else {t.push(n.text);var i={};n.fontStack&&(i[\"text-font\"]=[\"literal\",n.fontStack.split(\",\")]),n.scale&&(i[\"font-scale\"]=n.scale),n.textColor&&(i[\"text-color\"]=[\"rgba\"].concat(n.textColor.toArray())),t.push(i);}}return t};var ie=function(t){this.name=t.name,this.available=t.available;};function ae(t,e,r,n){return \"number\"==typeof t&&t>=0&&t<=255&&\"number\"==typeof e&&e>=0&&e<=255&&\"number\"==typeof r&&r>=0&&r<=255?void 0===n||\"number\"==typeof n&&n>=0&&n<=1?null:\"Invalid rgba value [\"+[t,e,r,n].join(\", \")+\"]: 'a' must be between 0 and 1.\":\"Invalid rgba value [\"+(\"number\"==typeof n?[t,e,r,n]:[t,e,r]).join(\", \")+\"]: 'r', 'g', and 'b' must be between 0 and 255.\"}function oe(t){if(null===t)return !0;if(\"string\"==typeof t)return !0;if(\"boolean\"==typeof t)return !0;if(\"number\"==typeof t)return !0;if(t instanceof te)return !0;if(t instanceof ee)return !0;if(t instanceof ne)return !0;if(t instanceof ie)return !0;if(Array.isArray(t)){for(var e=0,r=t;e<r.length;e+=1)if(!oe(r[e]))return !1;return !0}if(\"object\"==typeof t){for(var n in t)if(!oe(t[n]))return !1;return !0}return !1}function se(t){if(null===t)return Lt;if(\"string\"==typeof t)return Rt;if(\"boolean\"==typeof t)return Ut;if(\"number\"==typeof t)return Ot;if(t instanceof te)return jt;if(t instanceof ee)return Kt;if(t instanceof ne)return Gt;if(t instanceof ie)return Zt;if(Array.isArray(t)){for(var e,r=t.length,n=0,i=t;n<i.length;n+=1){var a=se(i[n]);if(e){if(e===a)continue;e=Nt;break}e=a;}return Xt(e||Nt,r)}return qt}function ue(t){var e=typeof t;return null===t?\"\":\"string\"===e||\"number\"===e||\"boolean\"===e?String(t):t instanceof te||t instanceof ne||t instanceof ie?t.toString():JSON.stringify(t)}ie.prototype.toString=function(){return this.name},ie.fromString=function(t){return t?new ie({name:t,available:!1}):null},ie.prototype.serialize=function(){return [\"image\",this.name]};var le=function(t,e){this.type=t,this.value=e;};le.parse=function(t,e){if(2!==t.length)return e.error(\"'literal' expression requires exactly one argument, but found \"+(t.length-1)+\" instead.\");if(!oe(t[1]))return e.error(\"invalid value\");var r=t[1],n=se(r),i=e.expectedType;return \"array\"!==n.kind||0!==n.N||!i||\"array\"!==i.kind||\"number\"==typeof i.N&&0!==i.N||(n=i),new le(n,r)},le.prototype.evaluate=function(){return this.value},le.prototype.eachChild=function(){},le.prototype.outputDefined=function(){return !0},le.prototype.serialize=function(){return \"array\"===this.type.kind||\"object\"===this.type.kind?[\"literal\",this.value]:this.value instanceof te?[\"rgba\"].concat(this.value.toArray()):this.value instanceof ne?this.value.serialize():this.value};var pe=function(t){this.name=\"ExpressionEvaluationError\",this.message=t;};pe.prototype.toJSON=function(){return this.message};var ce={string:Rt,number:Ot,boolean:Ut,object:qt},he=function(t,e){this.type=t,this.args=e;};he.parse=function(t,e){if(t.length<2)return e.error(\"Expected at least one argument.\");var r,n=1,i=t[0];if(\"array\"===i){var a,o;if(t.length>2){var s=t[1];if(\"string\"!=typeof s||!(s in ce)||\"object\"===s)return e.error('The item type argument of \"array\" must be one of string, number, boolean',1);a=ce[s],n++;}else a=Nt;if(t.length>3){if(null!==t[2]&&(\"number\"!=typeof t[2]||t[2]<0||t[2]!==Math.floor(t[2])))return e.error('The length argument to \"array\" must be a positive integer literal',2);o=t[2],n++;}r=Xt(a,o);}else r=ce[i];for(var u=[];n<t.length;n++){var l=e.parse(t[n],n,Nt);if(!l)return null;u.push(l);}return new he(r,u)},he.prototype.evaluate=function(t){for(var e=0;e<this.args.length;e++){var r=this.args[e].evaluate(t);if(!Yt(this.type,se(r)))return r;if(e===this.args.length-1)throw new pe(\"Expected value to be of type \"+Jt(this.type)+\", but found \"+Jt(se(r))+\" instead.\")}return null},he.prototype.eachChild=function(t){this.args.forEach(t);},he.prototype.outputDefined=function(){return this.args.every((function(t){return t.outputDefined()}))},he.prototype.serialize=function(){var t=this.type,e=[t.kind];if(\"array\"===t.kind){var r=t.itemType;if(\"string\"===r.kind||\"number\"===r.kind||\"boolean\"===r.kind){e.push(r.kind);var n=t.N;(\"number\"==typeof n||this.args.length>1)&&e.push(n);}}return e.concat(this.args.map((function(t){return t.serialize()})))};var fe=function(t){this.type=Gt,this.sections=t;};fe.parse=function(t,e){if(t.length<2)return e.error(\"Expected at least one argument.\");var r=t[1];if(!Array.isArray(r)&&\"object\"==typeof r)return e.error(\"First argument must be an image or text section.\");for(var n=[],i=!1,a=1;a<=t.length-1;++a){var o=t[a];if(i&&\"object\"==typeof o&&!Array.isArray(o)){i=!1;var s=null;if(o[\"font-scale\"]&&!(s=e.parse(o[\"font-scale\"],1,Ot)))return null;var u=null;if(o[\"text-font\"]&&!(u=e.parse(o[\"text-font\"],1,Xt(Rt))))return null;var l=null;if(o[\"text-color\"]&&!(l=e.parse(o[\"text-color\"],1,jt)))return null;var p=n[n.length-1];p.scale=s,p.font=u,p.textColor=l;}else {var c=e.parse(t[a],1,Nt);if(!c)return null;var h=c.type.kind;if(\"string\"!==h&&\"value\"!==h&&\"null\"!==h&&\"resolvedImage\"!==h)return e.error(\"Formatted text type must be 'string', 'value', 'image' or 'null'.\");i=!0,n.push({content:c,scale:null,font:null,textColor:null});}}return new fe(n)},fe.prototype.evaluate=function(t){return new ne(this.sections.map((function(e){var r=e.content.evaluate(t);return se(r)===Zt?new re(\"\",r,null,null,null):new re(ue(r),null,e.scale?e.scale.evaluate(t):null,e.font?e.font.evaluate(t).join(\",\"):null,e.textColor?e.textColor.evaluate(t):null)})))},fe.prototype.eachChild=function(t){for(var e=0,r=this.sections;e<r.length;e+=1){var n=r[e];t(n.content),n.scale&&t(n.scale),n.font&&t(n.font),n.textColor&&t(n.textColor);}},fe.prototype.outputDefined=function(){return !1},fe.prototype.serialize=function(){for(var t=[\"format\"],e=0,r=this.sections;e<r.length;e+=1){var n=r[e];t.push(n.content.serialize());var i={};n.scale&&(i[\"font-scale\"]=n.scale.serialize()),n.font&&(i[\"text-font\"]=n.font.serialize()),n.textColor&&(i[\"text-color\"]=n.textColor.serialize()),t.push(i);}return t};var ye=function(t){this.type=Zt,this.input=t;};ye.parse=function(t,e){if(2!==t.length)return e.error(\"Expected two arguments.\");var r=e.parse(t[1],1,Rt);return r?new ye(r):e.error(\"No image name provided.\")},ye.prototype.evaluate=function(t){var e=this.input.evaluate(t),r=ie.fromString(e);return r&&t.availableImages&&(r.available=t.availableImages.indexOf(e)>-1),r},ye.prototype.eachChild=function(t){t(this.input);},ye.prototype.outputDefined=function(){return !1},ye.prototype.serialize=function(){return [\"image\",this.input.serialize()]};var de={\"to-boolean\":Ut,\"to-color\":jt,\"to-number\":Ot,\"to-string\":Rt},me=function(t,e){this.type=t,this.args=e;};me.parse=function(t,e){if(t.length<2)return e.error(\"Expected at least one argument.\");var r=t[0];if((\"to-boolean\"===r||\"to-string\"===r)&&2!==t.length)return e.error(\"Expected one argument.\");for(var n=de[r],i=[],a=1;a<t.length;a++){var o=e.parse(t[a],a,Nt);if(!o)return null;i.push(o);}return new me(n,i)},me.prototype.evaluate=function(t){if(\"boolean\"===this.type.kind)return Boolean(this.args[0].evaluate(t));if(\"color\"===this.type.kind){for(var e,r,n=0,i=this.args;n<i.length;n+=1){if(r=null,(e=i[n].evaluate(t))instanceof te)return e;if(\"string\"==typeof e){var a=t.parseColor(e);if(a)return a}else if(Array.isArray(e)&&!(r=e.length<3||e.length>4?\"Invalid rbga value \"+JSON.stringify(e)+\": expected an array containing either three or four numeric values.\":ae(e[0],e[1],e[2],e[3])))return new te(e[0]/255,e[1]/255,e[2]/255,e[3])}throw new pe(r||\"Could not parse color from value '\"+(\"string\"==typeof e?e:String(JSON.stringify(e)))+\"'\")}if(\"number\"===this.type.kind){for(var o=null,s=0,u=this.args;s<u.length;s+=1){if(null===(o=u[s].evaluate(t)))return 0;var l=Number(o);if(!isNaN(l))return l}throw new pe(\"Could not convert \"+JSON.stringify(o)+\" to number.\")}return \"formatted\"===this.type.kind?ne.fromString(ue(this.args[0].evaluate(t))):\"resolvedImage\"===this.type.kind?ie.fromString(ue(this.args[0].evaluate(t))):ue(this.args[0].evaluate(t))},me.prototype.eachChild=function(t){this.args.forEach(t);},me.prototype.outputDefined=function(){return this.args.every((function(t){return t.outputDefined()}))},me.prototype.serialize=function(){if(\"formatted\"===this.type.kind)return new fe([{content:this.args[0],scale:null,font:null,textColor:null}]).serialize();if(\"resolvedImage\"===this.type.kind)return new ye(this.args[0]).serialize();var t=[\"to-\"+this.type.kind];return this.eachChild((function(e){t.push(e.serialize());})),t};var ve=[\"Unknown\",\"Point\",\"LineString\",\"Polygon\"],ge=function(){this.globals=null,this.feature=null,this.featureState=null,this.formattedSection=null,this._parseColorCache={},this.availableImages=null,this.canonical=null;};ge.prototype.id=function(){return this.feature&&\"id\"in this.feature?this.feature.id:null},ge.prototype.geometryType=function(){return this.feature?\"number\"==typeof this.feature.type?ve[this.feature.type]:this.feature.type:null},ge.prototype.geometry=function(){return this.feature&&\"geometry\"in this.feature?this.feature.geometry:null},ge.prototype.canonicalID=function(){return this.canonical},ge.prototype.properties=function(){return this.feature&&this.feature.properties||{}},ge.prototype.parseColor=function(t){var e=this._parseColorCache[t];return e||(e=this._parseColorCache[t]=te.parse(t)),e};var xe=function(t,e,r,n){this.name=t,this.type=e,this._evaluate=r,this.args=n;};xe.prototype.evaluate=function(t){return this._evaluate(t,this.args)},xe.prototype.eachChild=function(t){this.args.forEach(t);},xe.prototype.outputDefined=function(){return !1},xe.prototype.serialize=function(){return [this.name].concat(this.args.map((function(t){return t.serialize()})))},xe.parse=function(t,e){var r,n=t[0],i=xe.definitions[n];if(!i)return e.error('Unknown expression \"'+n+'\". If you wanted a literal array, use [\"literal\", [...]].',0);for(var a=Array.isArray(i)?i[0]:i.type,o=Array.isArray(i)?[[i[1],i[2]]]:i.overloads,s=o.filter((function(e){var r=e[0];return !Array.isArray(r)||r.length===t.length-1})),u=null,l=0,p=s;l<p.length;l+=1){var c=p[l],h=c[0],f=c[1];u=new je(e.registry,e.path,null,e.scope);for(var y=[],d=!1,m=1;m<t.length;m++){var v=t[m],g=Array.isArray(h)?h[m-1]:h.type,x=u.parse(v,1+y.length,g);if(!x){d=!0;break}y.push(x);}if(!d)if(Array.isArray(h)&&h.length!==y.length)u.error(\"Expected \"+h.length+\" arguments, but found \"+y.length+\" instead.\");else {for(var b=0;b<y.length;b++){var w=Array.isArray(h)?h[b]:h.type,_=y[b];u.concat(b+1).checkSubtype(w,_.type);}if(0===u.errors.length)return new xe(n,a,f,y)}}if(1===s.length)(r=e.errors).push.apply(r,u.errors);else {for(var A=(s.length?s:o).map((function(t){var e;return e=t[0],Array.isArray(e)?\"(\"+e.map(Jt).join(\", \")+\")\":\"(\"+Jt(e.type)+\"...)\"})).join(\" | \"),S=[],k=1;k<t.length;k++){var I=e.parse(t[k],1+S.length);if(!I)return null;S.push(Jt(I.type));}e.error(\"Expected arguments of type \"+A+\", but found (\"+S.join(\", \")+\") instead.\");}return null},xe.register=function(t,e){for(var r in xe.definitions=e,e)t[r]=xe;};var be=function(t,e,r){this.type=Kt,this.locale=r,this.caseSensitive=t,this.diacriticSensitive=e;};function we(t,e){t[0]=Math.min(t[0],e[0]),t[1]=Math.min(t[1],e[1]),t[2]=Math.max(t[2],e[0]),t[3]=Math.max(t[3],e[1]);}function _e(t,e){return !(t[0]<=e[0]||t[2]>=e[2]||t[1]<=e[1]||t[3]>=e[3])}function Ae(t,e){var r=(180+t[0])/360,n=(180-180/Math.PI*Math.log(Math.tan(Math.PI/4+t[1]*Math.PI/360)))/360,i=Math.pow(2,e.z);return [Math.round(r*i*8192),Math.round(n*i*8192)]}function Se(t,e,r){return e[1]>t[1]!=r[1]>t[1]&&t[0]<(r[0]-e[0])*(t[1]-e[1])/(r[1]-e[1])+e[0]}function ke(t,e){for(var r,n,i,a,o,s,u,l=!1,p=0,c=e.length;p<c;p++)for(var h=e[p],f=0,y=h.length;f<y-1;f++){if((a=(r=t)[0]-(n=h[f])[0])*(u=r[1]-(i=h[f+1])[1])-(s=r[0]-i[0])*(o=r[1]-n[1])==0&&a*s<=0&&o*u<=0)return !1;Se(t,h[f],h[f+1])&&(l=!l);}return l}function Ie(t,e){for(var r=0;r<e.length;r++)if(ke(t,e[r]))return !0;return !1}function ze(t,e,r,n){var i=n[0]-r[0],a=n[1]-r[1],o=(t[0]-r[0])*a-i*(t[1]-r[1]),s=(e[0]-r[0])*a-i*(e[1]-r[1]);return o>0&&s<0||o<0&&s>0}function Ce(t,e,r){for(var n=0,i=r;n<i.length;n+=1)for(var a=i[n],o=0;o<a.length-1;++o)if(0!=(c=[(p=a[o+1])[0]-(l=a[o])[0],p[1]-l[1]])[0]*(h=[(u=e)[0]-(s=t)[0],u[1]-s[1]])[1]-c[1]*h[0]&&ze(s,u,l,p)&&ze(l,p,s,u))return !0;var s,u,l,p,c,h;return !1}function Ee(t,e){for(var r=0;r<t.length;++r)if(!ke(t[r],e))return !1;for(var n=0;n<t.length-1;++n)if(Ce(t[n],t[n+1],e))return !1;return !0}function Pe(t,e){for(var r=0;r<e.length;r++)if(Ee(t,e[r]))return !0;return !1}function Me(t,e,r){for(var n=[],i=0;i<t.length;i++){for(var a=[],o=0;o<t[i].length;o++){var s=Ae(t[i][o],r);we(e,s),a.push(s);}n.push(a);}return n}function Be(t,e,r){for(var n=[],i=0;i<t.length;i++){var a=Me(t[i],e,r);n.push(a);}return n}function Te(t,e,r,n){if(t[0]<r[0]||t[0]>r[2]){var i=.5*n,a=t[0]-r[0]>i?-n:r[0]-t[0]>i?n:0;0===a&&(a=t[0]-r[2]>i?-n:r[2]-t[0]>i?n:0),t[0]+=a;}we(e,t);}function Ve(t,e,r,n){for(var i=8192*Math.pow(2,n.z),a=[8192*n.x,8192*n.y],o=[],s=0,u=t;s<u.length;s+=1)for(var l=0,p=u[s];l<p.length;l+=1){var c=p[l],h=[c.x+a[0],c.y+a[1]];Te(h,e,r,i),o.push(h);}return o}function Fe(t,e,r,n){for(var i,a=8192*Math.pow(2,n.z),o=[8192*n.x,8192*n.y],s=[],u=0,l=t;u<l.length;u+=1){for(var p=[],c=0,h=l[u];c<h.length;c+=1){var f=h[c],y=[f.x+o[0],f.y+o[1]];we(e,y),p.push(y);}s.push(p);}if(e[2]-e[0]<=a/2){(i=e)[0]=i[1]=1/0,i[2]=i[3]=-1/0;for(var d=0,m=s;d<m.length;d+=1)for(var v=0,g=m[d];v<g.length;v+=1)Te(g[v],e,r,a);}return s}be.parse=function(t,e){if(2!==t.length)return e.error(\"Expected one argument.\");var r=t[1];if(\"object\"!=typeof r||Array.isArray(r))return e.error(\"Collator options argument must be an object.\");var n=e.parse(void 0!==r[\"case-sensitive\"]&&r[\"case-sensitive\"],1,Ut);if(!n)return null;var i=e.parse(void 0!==r[\"diacritic-sensitive\"]&&r[\"diacritic-sensitive\"],1,Ut);if(!i)return null;var a=null;return r.locale&&!(a=e.parse(r.locale,1,Rt))?null:new be(n,i,a)},be.prototype.evaluate=function(t){return new ee(this.caseSensitive.evaluate(t),this.diacriticSensitive.evaluate(t),this.locale?this.locale.evaluate(t):null)},be.prototype.eachChild=function(t){t(this.caseSensitive),t(this.diacriticSensitive),this.locale&&t(this.locale);},be.prototype.outputDefined=function(){return !1},be.prototype.serialize=function(){var t={};return t[\"case-sensitive\"]=this.caseSensitive.serialize(),t[\"diacritic-sensitive\"]=this.diacriticSensitive.serialize(),this.locale&&(t.locale=this.locale.serialize()),[\"collator\",t]};var De=function(t,e){this.type=Ut,this.geojson=t,this.geometries=e;};function Le(t){if(t instanceof xe){if(\"get\"===t.name&&1===t.args.length)return !1;if(\"feature-state\"===t.name)return !1;if(\"has\"===t.name&&1===t.args.length)return !1;if(\"properties\"===t.name||\"geometry-type\"===t.name||\"id\"===t.name)return !1;if(/^filter-/.test(t.name))return !1}if(t instanceof De)return !1;var e=!0;return t.eachChild((function(t){e&&!Le(t)&&(e=!1);})),e}function Oe(t){if(t instanceof xe&&\"feature-state\"===t.name)return !1;var e=!0;return t.eachChild((function(t){e&&!Oe(t)&&(e=!1);})),e}function Re(t,e){if(t instanceof xe&&e.indexOf(t.name)>=0)return !1;var r=!0;return t.eachChild((function(t){r&&!Re(t,e)&&(r=!1);})),r}De.parse=function(t,e){if(2!==t.length)return e.error(\"'within' expression requires exactly one argument, but found \"+(t.length-1)+\" instead.\");if(oe(t[1])){var r=t[1];if(\"FeatureCollection\"===r.type)for(var n=0;n<r.features.length;++n){var i=r.features[n].geometry.type;if(\"Polygon\"===i||\"MultiPolygon\"===i)return new De(r,r.features[n].geometry)}else if(\"Feature\"===r.type){var a=r.geometry.type;if(\"Polygon\"===a||\"MultiPolygon\"===a)return new De(r,r.geometry)}else if(\"Polygon\"===r.type||\"MultiPolygon\"===r.type)return new De(r,r)}return e.error(\"'within' expression requires valid geojson object that contains polygon geometry type.\")},De.prototype.evaluate=function(t){if(null!=t.geometry()&&null!=t.canonicalID()){if(\"Point\"===t.geometryType())return function(t,e){var r=[1/0,1/0,-1/0,-1/0],n=[1/0,1/0,-1/0,-1/0],i=t.canonicalID();if(\"Polygon\"===e.type){var a=Me(e.coordinates,n,i),o=Ve(t.geometry(),r,n,i);if(!_e(r,n))return !1;for(var s=0,u=o;s<u.length;s+=1)if(!ke(u[s],a))return !1}if(\"MultiPolygon\"===e.type){var l=Be(e.coordinates,n,i),p=Ve(t.geometry(),r,n,i);if(!_e(r,n))return !1;for(var c=0,h=p;c<h.length;c+=1)if(!Ie(h[c],l))return !1}return !0}(t,this.geometries);if(\"LineString\"===t.geometryType())return function(t,e){var r=[1/0,1/0,-1/0,-1/0],n=[1/0,1/0,-1/0,-1/0],i=t.canonicalID();if(\"Polygon\"===e.type){var a=Me(e.coordinates,n,i),o=Fe(t.geometry(),r,n,i);if(!_e(r,n))return !1;for(var s=0,u=o;s<u.length;s+=1)if(!Ee(u[s],a))return !1}if(\"MultiPolygon\"===e.type){var l=Be(e.coordinates,n,i),p=Fe(t.geometry(),r,n,i);if(!_e(r,n))return !1;for(var c=0,h=p;c<h.length;c+=1)if(!Pe(h[c],l))return !1}return !0}(t,this.geometries)}return !1},De.prototype.eachChild=function(){},De.prototype.outputDefined=function(){return !0},De.prototype.serialize=function(){return [\"within\",this.geojson]};var Ue=function(t,e){this.type=e.type,this.name=t,this.boundExpression=e;};Ue.parse=function(t,e){if(2!==t.length||\"string\"!=typeof t[1])return e.error(\"'var' expression requires exactly one string literal argument.\");var r=t[1];return e.scope.has(r)?new Ue(r,e.scope.get(r)):e.error('Unknown variable \"'+r+'\". Make sure \"'+r+'\" has been bound in an enclosing \"let\" expression before using it.',1)},Ue.prototype.evaluate=function(t){return this.boundExpression.evaluate(t)},Ue.prototype.eachChild=function(){},Ue.prototype.outputDefined=function(){return !1},Ue.prototype.serialize=function(){return [\"var\",this.name]};var je=function(t,e,r,n,i){void 0===e&&(e=[]),void 0===n&&(n=new Dt),void 0===i&&(i=[]),this.registry=t,this.path=e,this.key=e.map((function(t){return \"[\"+t+\"]\"})).join(\"\"),this.scope=n,this.errors=i,this.expectedType=r;};function qe(t,e){for(var r,n=t.length-1,i=0,a=n,o=0;i<=a;)if((r=t[o=Math.floor((i+a)/2)])<=e){if(o===n||e<t[o+1])return o;i=o+1;}else {if(!(r>e))throw new pe(\"Input is not a number.\");a=o-1;}return 0}je.prototype.parse=function(t,e,r,n,i){return void 0===i&&(i={}),e?this.concat(e,r,n)._parse(t,i):this._parse(t,i)},je.prototype._parse=function(t,e){function r(t,e,r){return \"assert\"===r?new he(e,[t]):\"coerce\"===r?new me(e,[t]):t}if(null!==t&&\"string\"!=typeof t&&\"boolean\"!=typeof t&&\"number\"!=typeof t||(t=[\"literal\",t]),Array.isArray(t)){if(0===t.length)return this.error('Expected an array with at least one element. If you wanted a literal array, use [\"literal\", []].');var n=t[0];if(\"string\"!=typeof n)return this.error(\"Expression name must be a string, but found \"+typeof n+' instead. If you wanted a literal array, use [\"literal\", [...]].',0),null;var i=this.registry[n];if(i){var a=i.parse(t,this);if(!a)return null;if(this.expectedType){var o=this.expectedType,s=a.type;if(\"string\"!==o.kind&&\"number\"!==o.kind&&\"boolean\"!==o.kind&&\"object\"!==o.kind&&\"array\"!==o.kind||\"value\"!==s.kind)if(\"color\"!==o.kind&&\"formatted\"!==o.kind&&\"resolvedImage\"!==o.kind||\"value\"!==s.kind&&\"string\"!==s.kind){if(this.checkSubtype(o,s))return null}else a=r(a,o,e.typeAnnotation||\"coerce\");else a=r(a,o,e.typeAnnotation||\"assert\");}if(!(a instanceof le)&&\"resolvedImage\"!==a.type.kind&&function t(e){if(e instanceof Ue)return t(e.boundExpression);if(e instanceof xe&&\"error\"===e.name)return !1;if(e instanceof be)return !1;if(e instanceof De)return !1;var r=e instanceof me||e instanceof he,n=!0;return e.eachChild((function(e){n=r?n&&t(e):n&&e instanceof le;})),!!n&&Le(e)&&Re(e,[\"zoom\",\"heatmap-density\",\"line-progress\",\"accumulated\",\"is-supported-script\"])}(a)){var u=new ge;try{a=new le(a.type,a.evaluate(u));}catch(t){return this.error(t.message),null}}return a}return this.error('Unknown expression \"'+n+'\". If you wanted a literal array, use [\"literal\", [...]].',0)}return this.error(void 0===t?\"'undefined' value invalid. Use null instead.\":\"object\"==typeof t?'Bare objects invalid. Use [\"literal\", {...}] instead.':\"Expected an array, but found \"+typeof t+\" instead.\")},je.prototype.concat=function(t,e,r){var n=\"number\"==typeof t?this.path.concat(t):this.path,i=r?this.scope.concat(r):this.scope;return new je(this.registry,n,e||null,i,this.errors)},je.prototype.error=function(t){for(var e=[],r=arguments.length-1;r-- >0;)e[r]=arguments[r+1];var n=\"\"+this.key+e.map((function(t){return \"[\"+t+\"]\"})).join(\"\");this.errors.push(new Ft(n,t));},je.prototype.checkSubtype=function(t,e){var r=Yt(t,e);return r&&this.error(r),r};var Ne=function(t,e,r){this.type=t,this.input=e,this.labels=[],this.outputs=[];for(var n=0,i=r;n<i.length;n+=1){var a=i[n],o=a[1];this.labels.push(a[0]),this.outputs.push(o);}};function Ke(t,e,r){return t*(1-r)+e*r}Ne.parse=function(t,e){if(t.length-1<4)return e.error(\"Expected at least 4 arguments, but found only \"+(t.length-1)+\".\");if((t.length-1)%2!=0)return e.error(\"Expected an even number of arguments.\");var r=e.parse(t[1],1,Ot);if(!r)return null;var n=[],i=null;e.expectedType&&\"value\"!==e.expectedType.kind&&(i=e.expectedType);for(var a=1;a<t.length;a+=2){var o=1===a?-1/0:t[a],s=t[a+1],u=a,l=a+1;if(\"number\"!=typeof o)return e.error('Input/output pairs for \"step\" expressions must be defined using literal numeric values (not computed expressions) for the input values.',u);if(n.length&&n[n.length-1][0]>=o)return e.error('Input/output pairs for \"step\" expressions must be arranged with input values in strictly ascending order.',u);var p=e.parse(s,l,i);if(!p)return null;i=i||p.type,n.push([o,p]);}return new Ne(i,r,n)},Ne.prototype.evaluate=function(t){var e=this.labels,r=this.outputs;if(1===e.length)return r[0].evaluate(t);var n=this.input.evaluate(t);if(n<=e[0])return r[0].evaluate(t);var i=e.length;return n>=e[i-1]?r[i-1].evaluate(t):r[qe(e,n)].evaluate(t)},Ne.prototype.eachChild=function(t){t(this.input);for(var e=0,r=this.outputs;e<r.length;e+=1)t(r[e]);},Ne.prototype.outputDefined=function(){return this.outputs.every((function(t){return t.outputDefined()}))},Ne.prototype.serialize=function(){for(var t=[\"step\",this.input.serialize()],e=0;e<this.labels.length;e++)e>0&&t.push(this.labels[e]),t.push(this.outputs[e].serialize());return t};var Ge=Object.freeze({__proto__:null,number:Ke,color:function(t,e,r){return new te(Ke(t.r,e.r,r),Ke(t.g,e.g,r),Ke(t.b,e.b,r),Ke(t.a,e.a,r))},array:function(t,e,r){return t.map((function(t,n){return Ke(t,e[n],r)}))}}),Ze=6/29*3*(6/29),Xe=Math.PI/180,Je=180/Math.PI;function He(t){return t>.008856451679035631?Math.pow(t,1/3):t/Ze+4/29}function Ye(t){return t>6/29?t*t*t:Ze*(t-4/29)}function $e(t){return 255*(t<=.0031308?12.92*t:1.055*Math.pow(t,1/2.4)-.055)}function We(t){return (t/=255)<=.04045?t/12.92:Math.pow((t+.055)/1.055,2.4)}function Qe(t){var e=We(t.r),r=We(t.g),n=We(t.b),i=He((.4124564*e+.3575761*r+.1804375*n)/.95047),a=He((.2126729*e+.7151522*r+.072175*n)/1);return {l:116*a-16,a:500*(i-a),b:200*(a-He((.0193339*e+.119192*r+.9503041*n)/1.08883)),alpha:t.a}}function tr(t){var e=(t.l+16)/116,r=isNaN(t.a)?e:e+t.a/500,n=isNaN(t.b)?e:e-t.b/200;return e=1*Ye(e),r=.95047*Ye(r),n=1.08883*Ye(n),new te($e(3.2404542*r-1.5371385*e-.4985314*n),$e(-.969266*r+1.8760108*e+.041556*n),$e(.0556434*r-.2040259*e+1.0572252*n),t.alpha)}function er(t,e,r){var n=e-t;return t+r*(n>180||n<-180?n-360*Math.round(n/360):n)}var rr={forward:Qe,reverse:tr,interpolate:function(t,e,r){return {l:Ke(t.l,e.l,r),a:Ke(t.a,e.a,r),b:Ke(t.b,e.b,r),alpha:Ke(t.alpha,e.alpha,r)}}},nr={forward:function(t){var e=Qe(t),r=e.l,n=e.a,i=e.b,a=Math.atan2(i,n)*Je;return {h:a<0?a+360:a,c:Math.sqrt(n*n+i*i),l:r,alpha:t.a}},reverse:function(t){var e=t.h*Xe,r=t.c;return tr({l:t.l,a:Math.cos(e)*r,b:Math.sin(e)*r,alpha:t.alpha})},interpolate:function(t,e,r){return {h:er(t.h,e.h,r),c:Ke(t.c,e.c,r),l:Ke(t.l,e.l,r),alpha:Ke(t.alpha,e.alpha,r)}}},ir=Object.freeze({__proto__:null,lab:rr,hcl:nr}),ar=function(t,e,r,n,i){this.type=t,this.operator=e,this.interpolation=r,this.input=n,this.labels=[],this.outputs=[];for(var a=0,o=i;a<o.length;a+=1){var s=o[a],u=s[1];this.labels.push(s[0]),this.outputs.push(u);}};function or(t,e,r,n){var i=n-r,a=t-r;return 0===i?0:1===e?a/i:(Math.pow(e,a)-1)/(Math.pow(e,i)-1)}ar.interpolationFactor=function(t,e,n,i){var a=0;if(\"exponential\"===t.name)a=or(e,t.base,n,i);else if(\"linear\"===t.name)a=or(e,1,n,i);else if(\"cubic-bezier\"===t.name){var o=t.controlPoints;a=new r(o[0],o[1],o[2],o[3]).solve(or(e,1,n,i));}return a},ar.parse=function(t,e){var r=t[0],n=t[1],i=t[2],a=t.slice(3);if(!Array.isArray(n)||0===n.length)return e.error(\"Expected an interpolation type expression.\",1);if(\"linear\"===n[0])n={name:\"linear\"};else if(\"exponential\"===n[0]){var o=n[1];if(\"number\"!=typeof o)return e.error(\"Exponential interpolation requires a numeric base.\",1,1);n={name:\"exponential\",base:o};}else {if(\"cubic-bezier\"!==n[0])return e.error(\"Unknown interpolation type \"+String(n[0]),1,0);var s=n.slice(1);if(4!==s.length||s.some((function(t){return \"number\"!=typeof t||t<0||t>1})))return e.error(\"Cubic bezier interpolation requires four numeric arguments with values between 0 and 1.\",1);n={name:\"cubic-bezier\",controlPoints:s};}if(t.length-1<4)return e.error(\"Expected at least 4 arguments, but found only \"+(t.length-1)+\".\");if((t.length-1)%2!=0)return e.error(\"Expected an even number of arguments.\");if(!(i=e.parse(i,2,Ot)))return null;var u=[],l=null;\"interpolate-hcl\"===r||\"interpolate-lab\"===r?l=jt:e.expectedType&&\"value\"!==e.expectedType.kind&&(l=e.expectedType);for(var p=0;p<a.length;p+=2){var c=a[p],h=a[p+1],f=p+3,y=p+4;if(\"number\"!=typeof c)return e.error('Input/output pairs for \"interpolate\" expressions must be defined using literal numeric values (not computed expressions) for the input values.',f);if(u.length&&u[u.length-1][0]>=c)return e.error('Input/output pairs for \"interpolate\" expressions must be arranged with input values in strictly ascending order.',f);var d=e.parse(h,y,l);if(!d)return null;l=l||d.type,u.push([c,d]);}return \"number\"===l.kind||\"color\"===l.kind||\"array\"===l.kind&&\"number\"===l.itemType.kind&&\"number\"==typeof l.N?new ar(l,r,n,i,u):e.error(\"Type \"+Jt(l)+\" is not interpolatable.\")},ar.prototype.evaluate=function(t){var e=this.labels,r=this.outputs;if(1===e.length)return r[0].evaluate(t);var n=this.input.evaluate(t);if(n<=e[0])return r[0].evaluate(t);var i=e.length;if(n>=e[i-1])return r[i-1].evaluate(t);var a=qe(e,n),o=ar.interpolationFactor(this.interpolation,n,e[a],e[a+1]),s=r[a].evaluate(t),u=r[a+1].evaluate(t);return \"interpolate\"===this.operator?Ge[this.type.kind.toLowerCase()](s,u,o):\"interpolate-hcl\"===this.operator?nr.reverse(nr.interpolate(nr.forward(s),nr.forward(u),o)):rr.reverse(rr.interpolate(rr.forward(s),rr.forward(u),o))},ar.prototype.eachChild=function(t){t(this.input);for(var e=0,r=this.outputs;e<r.length;e+=1)t(r[e]);},ar.prototype.outputDefined=function(){return this.outputs.every((function(t){return t.outputDefined()}))},ar.prototype.serialize=function(){var t;t=\"linear\"===this.interpolation.name?[\"linear\"]:\"exponential\"===this.interpolation.name?1===this.interpolation.base?[\"linear\"]:[\"exponential\",this.interpolation.base]:[\"cubic-bezier\"].concat(this.interpolation.controlPoints);for(var e=[this.operator,t,this.input.serialize()],r=0;r<this.labels.length;r++)e.push(this.labels[r],this.outputs[r].serialize());return e};var sr=function(t,e){this.type=t,this.args=e;};sr.parse=function(t,e){if(t.length<2)return e.error(\"Expectected at least one argument.\");var r=null,n=e.expectedType;n&&\"value\"!==n.kind&&(r=n);for(var i=[],a=0,o=t.slice(1);a<o.length;a+=1){var s=e.parse(o[a],1+i.length,r,void 0,{typeAnnotation:\"omit\"});if(!s)return null;r=r||s.type,i.push(s);}var u=n&&i.some((function(t){return Yt(n,t.type)}));return new sr(u?Nt:r,i)},sr.prototype.evaluate=function(t){for(var e,r=null,n=0,i=0,a=this.args;i<a.length&&(n++,(r=a[i].evaluate(t))&&r instanceof ie&&!r.available&&(e||(e=r.name),r=null,n===this.args.length&&(r=e)),null===r);i+=1);return r},sr.prototype.eachChild=function(t){this.args.forEach(t);},sr.prototype.outputDefined=function(){return this.args.every((function(t){return t.outputDefined()}))},sr.prototype.serialize=function(){var t=[\"coalesce\"];return this.eachChild((function(e){t.push(e.serialize());})),t};var ur=function(t,e){this.type=e.type,this.bindings=[].concat(t),this.result=e;};ur.prototype.evaluate=function(t){return this.result.evaluate(t)},ur.prototype.eachChild=function(t){for(var e=0,r=this.bindings;e<r.length;e+=1)t(r[e][1]);t(this.result);},ur.parse=function(t,e){if(t.length<4)return e.error(\"Expected at least 3 arguments, but found \"+(t.length-1)+\" instead.\");for(var r=[],n=1;n<t.length-1;n+=2){var i=t[n];if(\"string\"!=typeof i)return e.error(\"Expected string, but found \"+typeof i+\" instead.\",n);if(/[^a-zA-Z0-9_]/.test(i))return e.error(\"Variable names must contain only alphanumeric characters or '_'.\",n);var a=e.parse(t[n+1],n+1);if(!a)return null;r.push([i,a]);}var o=e.parse(t[t.length-1],t.length-1,e.expectedType,r);return o?new ur(r,o):null},ur.prototype.outputDefined=function(){return this.result.outputDefined()},ur.prototype.serialize=function(){for(var t=[\"let\"],e=0,r=this.bindings;e<r.length;e+=1){var n=r[e];t.push(n[0],n[1].serialize());}return t.push(this.result.serialize()),t};var lr=function(t,e,r){this.type=t,this.index=e,this.input=r;};lr.parse=function(t,e){if(3!==t.length)return e.error(\"Expected 2 arguments, but found \"+(t.length-1)+\" instead.\");var r=e.parse(t[1],1,Ot),n=e.parse(t[2],2,Xt(e.expectedType||Nt));return r&&n?new lr(n.type.itemType,r,n):null},lr.prototype.evaluate=function(t){var e=this.index.evaluate(t),r=this.input.evaluate(t);if(e<0)throw new pe(\"Array index out of bounds: \"+e+\" < 0.\");if(e>=r.length)throw new pe(\"Array index out of bounds: \"+e+\" > \"+(r.length-1)+\".\");if(e!==Math.floor(e))throw new pe(\"Array index must be an integer, but found \"+e+\" instead.\");return r[e]},lr.prototype.eachChild=function(t){t(this.index),t(this.input);},lr.prototype.outputDefined=function(){return !1},lr.prototype.serialize=function(){return [\"at\",this.index.serialize(),this.input.serialize()]};var pr=function(t,e){this.type=Ut,this.needle=t,this.haystack=e;};pr.parse=function(t,e){if(3!==t.length)return e.error(\"Expected 2 arguments, but found \"+(t.length-1)+\" instead.\");var r=e.parse(t[1],1,Nt),n=e.parse(t[2],2,Nt);return r&&n?$t(r.type,[Ut,Rt,Ot,Lt,Nt])?new pr(r,n):e.error(\"Expected first argument to be of type boolean, string, number or null, but found \"+Jt(r.type)+\" instead\"):null},pr.prototype.evaluate=function(t){var e=this.needle.evaluate(t),r=this.haystack.evaluate(t);if(!r)return !1;if(!Wt(e,[\"boolean\",\"string\",\"number\",\"null\"]))throw new pe(\"Expected first argument to be of type boolean, string, number or null, but found \"+Jt(se(e))+\" instead.\");if(!Wt(r,[\"string\",\"array\"]))throw new pe(\"Expected second argument to be of type array or string, but found \"+Jt(se(r))+\" instead.\");return r.indexOf(e)>=0},pr.prototype.eachChild=function(t){t(this.needle),t(this.haystack);},pr.prototype.outputDefined=function(){return !0},pr.prototype.serialize=function(){return [\"in\",this.needle.serialize(),this.haystack.serialize()]};var cr=function(t,e,r){this.type=Ot,this.needle=t,this.haystack=e,this.fromIndex=r;};cr.parse=function(t,e){if(t.length<=2||t.length>=5)return e.error(\"Expected 3 or 4 arguments, but found \"+(t.length-1)+\" instead.\");var r=e.parse(t[1],1,Nt),n=e.parse(t[2],2,Nt);if(!r||!n)return null;if(!$t(r.type,[Ut,Rt,Ot,Lt,Nt]))return e.error(\"Expected first argument to be of type boolean, string, number or null, but found \"+Jt(r.type)+\" instead\");if(4===t.length){var i=e.parse(t[3],3,Ot);return i?new cr(r,n,i):null}return new cr(r,n)},cr.prototype.evaluate=function(t){var e=this.needle.evaluate(t),r=this.haystack.evaluate(t);if(!Wt(e,[\"boolean\",\"string\",\"number\",\"null\"]))throw new pe(\"Expected first argument to be of type boolean, string, number or null, but found \"+Jt(se(e))+\" instead.\");if(!Wt(r,[\"string\",\"array\"]))throw new pe(\"Expected second argument to be of type array or string, but found \"+Jt(se(r))+\" instead.\");if(this.fromIndex){var n=this.fromIndex.evaluate(t);return r.indexOf(e,n)}return r.indexOf(e)},cr.prototype.eachChild=function(t){t(this.needle),t(this.haystack),this.fromIndex&&t(this.fromIndex);},cr.prototype.outputDefined=function(){return !1},cr.prototype.serialize=function(){if(null!=this.fromIndex&&void 0!==this.fromIndex){var t=this.fromIndex.serialize();return [\"index-of\",this.needle.serialize(),this.haystack.serialize(),t]}return [\"index-of\",this.needle.serialize(),this.haystack.serialize()]};var hr=function(t,e,r,n,i,a){this.inputType=t,this.type=e,this.input=r,this.cases=n,this.outputs=i,this.otherwise=a;};hr.parse=function(t,e){if(t.length<5)return e.error(\"Expected at least 4 arguments, but found only \"+(t.length-1)+\".\");if(t.length%2!=1)return e.error(\"Expected an even number of arguments.\");var r,n;e.expectedType&&\"value\"!==e.expectedType.kind&&(n=e.expectedType);for(var i={},a=[],o=2;o<t.length-1;o+=2){var s=t[o],u=t[o+1];Array.isArray(s)||(s=[s]);var l=e.concat(o);if(0===s.length)return l.error(\"Expected at least one branch label.\");for(var p=0,c=s;p<c.length;p+=1){var h=c[p];if(\"number\"!=typeof h&&\"string\"!=typeof h)return l.error(\"Branch labels must be numbers or strings.\");if(\"number\"==typeof h&&Math.abs(h)>Number.MAX_SAFE_INTEGER)return l.error(\"Branch labels must be integers no larger than \"+Number.MAX_SAFE_INTEGER+\".\");if(\"number\"==typeof h&&Math.floor(h)!==h)return l.error(\"Numeric branch labels must be integer values.\");if(r){if(l.checkSubtype(r,se(h)))return null}else r=se(h);if(void 0!==i[String(h)])return l.error(\"Branch labels must be unique.\");i[String(h)]=a.length;}var f=e.parse(u,o,n);if(!f)return null;n=n||f.type,a.push(f);}var y=e.parse(t[1],1,Nt);if(!y)return null;var d=e.parse(t[t.length-1],t.length-1,n);return d?\"value\"!==y.type.kind&&e.concat(1).checkSubtype(r,y.type)?null:new hr(r,n,y,i,a,d):null},hr.prototype.evaluate=function(t){var e=this.input.evaluate(t);return (se(e)===this.inputType&&this.outputs[this.cases[e]]||this.otherwise).evaluate(t)},hr.prototype.eachChild=function(t){t(this.input),this.outputs.forEach(t),t(this.otherwise);},hr.prototype.outputDefined=function(){return this.outputs.every((function(t){return t.outputDefined()}))&&this.otherwise.outputDefined()},hr.prototype.serialize=function(){for(var t=this,e=[\"match\",this.input.serialize()],r=[],n={},i=0,a=Object.keys(this.cases).sort();i<a.length;i+=1){var o=a[i];void 0===(c=n[this.cases[o]])?(n[this.cases[o]]=r.length,r.push([this.cases[o],[o]])):r[c][1].push(o);}for(var s=function(e){return \"number\"===t.inputType.kind?Number(e):e},u=0,l=r;u<l.length;u+=1){var p=l[u],c=p[0],h=p[1];e.push(1===h.length?s(h[0]):h.map(s)),e.push(this.outputs[outputIndex$1].serialize());}return e.push(this.otherwise.serialize()),e};var fr=function(t,e,r){this.type=t,this.branches=e,this.otherwise=r;};fr.parse=function(t,e){if(t.length<4)return e.error(\"Expected at least 3 arguments, but found only \"+(t.length-1)+\".\");if(t.length%2!=0)return e.error(\"Expected an odd number of arguments.\");var r;e.expectedType&&\"value\"!==e.expectedType.kind&&(r=e.expectedType);for(var n=[],i=1;i<t.length-1;i+=2){var a=e.parse(t[i],i,Ut);if(!a)return null;var o=e.parse(t[i+1],i+1,r);if(!o)return null;n.push([a,o]),r=r||o.type;}var s=e.parse(t[t.length-1],t.length-1,r);return s?new fr(r,n,s):null},fr.prototype.evaluate=function(t){for(var e=0,r=this.branches;e<r.length;e+=1){var n=r[e],i=n[1];if(n[0].evaluate(t))return i.evaluate(t)}return this.otherwise.evaluate(t)},fr.prototype.eachChild=function(t){for(var e=0,r=this.branches;e<r.length;e+=1){var n=r[e],i=n[1];t(n[0]),t(i);}t(this.otherwise);},fr.prototype.outputDefined=function(){return this.branches.every((function(t){return t[1].outputDefined()}))&&this.otherwise.outputDefined()},fr.prototype.serialize=function(){var t=[\"case\"];return this.eachChild((function(e){t.push(e.serialize());})),t};var yr=function(t,e,r,n){this.type=t,this.input=e,this.beginIndex=r,this.endIndex=n;};function dr(t,e){return \"==\"===t||\"!=\"===t?\"boolean\"===e.kind||\"string\"===e.kind||\"number\"===e.kind||\"null\"===e.kind||\"value\"===e.kind:\"string\"===e.kind||\"number\"===e.kind||\"value\"===e.kind}function mr(t,e,r,n){return 0===n.compare(e,r)}function vr(t,e,r){var n=\"==\"!==t&&\"!=\"!==t;return function(){function i(t,e,r){this.type=Ut,this.lhs=t,this.rhs=e,this.collator=r,this.hasUntypedArgument=\"value\"===t.type.kind||\"value\"===e.type.kind;}return i.parse=function(t,e){if(3!==t.length&&4!==t.length)return e.error(\"Expected two or three arguments.\");var r=t[0],a=e.parse(t[1],1,Nt);if(!a)return null;if(!dr(r,a.type))return e.concat(1).error('\"'+r+\"\\\" comparisons are not supported for type '\"+Jt(a.type)+\"'.\");var o=e.parse(t[2],2,Nt);if(!o)return null;if(!dr(r,o.type))return e.concat(2).error('\"'+r+\"\\\" comparisons are not supported for type '\"+Jt(o.type)+\"'.\");if(a.type.kind!==o.type.kind&&\"value\"!==a.type.kind&&\"value\"!==o.type.kind)return e.error(\"Cannot compare types '\"+Jt(a.type)+\"' and '\"+Jt(o.type)+\"'.\");n&&(\"value\"===a.type.kind&&\"value\"!==o.type.kind?a=new he(o.type,[a]):\"value\"!==a.type.kind&&\"value\"===o.type.kind&&(o=new he(a.type,[o])));var s=null;if(4===t.length){if(\"string\"!==a.type.kind&&\"string\"!==o.type.kind&&\"value\"!==a.type.kind&&\"value\"!==o.type.kind)return e.error(\"Cannot use collator to compare non-string types.\");if(!(s=e.parse(t[3],3,Kt)))return null}return new i(a,o,s)},i.prototype.evaluate=function(i){var a=this.lhs.evaluate(i),o=this.rhs.evaluate(i);if(n&&this.hasUntypedArgument){var s=se(a),u=se(o);if(s.kind!==u.kind||\"string\"!==s.kind&&\"number\"!==s.kind)throw new pe('Expected arguments for \"'+t+'\" to be (string, string) or (number, number), but found ('+s.kind+\", \"+u.kind+\") instead.\")}if(this.collator&&!n&&this.hasUntypedArgument){var l=se(a),p=se(o);if(\"string\"!==l.kind||\"string\"!==p.kind)return e(i,a,o)}return this.collator?r(i,a,o,this.collator.evaluate(i)):e(i,a,o)},i.prototype.eachChild=function(t){t(this.lhs),t(this.rhs),this.collator&&t(this.collator);},i.prototype.outputDefined=function(){return !0},i.prototype.serialize=function(){var e=[t];return this.eachChild((function(t){e.push(t.serialize());})),e},i}()}yr.parse=function(t,e){if(t.length<=2||t.length>=5)return e.error(\"Expected 3 or 4 arguments, but found \"+(t.length-1)+\" instead.\");var r=e.parse(t[1],1,Nt),n=e.parse(t[2],2,Ot);if(!r||!n)return null;if(!$t(r.type,[Xt(Nt),Rt,Nt]))return e.error(\"Expected first argument to be of type array or string, but found \"+Jt(r.type)+\" instead\");if(4===t.length){var i=e.parse(t[3],3,Ot);return i?new yr(r.type,r,n,i):null}return new yr(r.type,r,n)},yr.prototype.evaluate=function(t){var e=this.input.evaluate(t),r=this.beginIndex.evaluate(t);if(!Wt(e,[\"string\",\"array\"]))throw new pe(\"Expected first argument to be of type array or string, but found \"+Jt(se(e))+\" instead.\");if(this.endIndex){var n=this.endIndex.evaluate(t);return e.slice(r,n)}return e.slice(r)},yr.prototype.eachChild=function(t){t(this.input),t(this.beginIndex),this.endIndex&&t(this.endIndex);},yr.prototype.outputDefined=function(){return !1},yr.prototype.serialize=function(){if(null!=this.endIndex&&void 0!==this.endIndex){var t=this.endIndex.serialize();return [\"slice\",this.input.serialize(),this.beginIndex.serialize(),t]}return [\"slice\",this.input.serialize(),this.beginIndex.serialize()]};var gr=vr(\"==\",(function(t,e,r){return e===r}),mr),xr=vr(\"!=\",(function(t,e,r){return e!==r}),(function(t,e,r,n){return !mr(0,e,r,n)})),br=vr(\"<\",(function(t,e,r){return e<r}),(function(t,e,r,n){return n.compare(e,r)<0})),wr=vr(\">\",(function(t,e,r){return e>r}),(function(t,e,r,n){return n.compare(e,r)>0})),_r=vr(\"<=\",(function(t,e,r){return e<=r}),(function(t,e,r,n){return n.compare(e,r)<=0})),Ar=vr(\">=\",(function(t,e,r){return e>=r}),(function(t,e,r,n){return n.compare(e,r)>=0})),Sr=function(t,e,r,n,i){this.type=Rt,this.number=t,this.locale=e,this.currency=r,this.minFractionDigits=n,this.maxFractionDigits=i;};Sr.parse=function(t,e){if(3!==t.length)return e.error(\"Expected two arguments.\");var r=e.parse(t[1],1,Ot);if(!r)return null;var n=t[2];if(\"object\"!=typeof n||Array.isArray(n))return e.error(\"NumberFormat options argument must be an object.\");var i=null;if(n.locale&&!(i=e.parse(n.locale,1,Rt)))return null;var a=null;if(n.currency&&!(a=e.parse(n.currency,1,Rt)))return null;var o=null;if(n[\"min-fraction-digits\"]&&!(o=e.parse(n[\"min-fraction-digits\"],1,Ot)))return null;var s=null;return n[\"max-fraction-digits\"]&&!(s=e.parse(n[\"max-fraction-digits\"],1,Ot))?null:new Sr(r,i,a,o,s)},Sr.prototype.evaluate=function(t){return new Intl.NumberFormat(this.locale?this.locale.evaluate(t):[],{style:this.currency?\"currency\":\"decimal\",currency:this.currency?this.currency.evaluate(t):void 0,minimumFractionDigits:this.minFractionDigits?this.minFractionDigits.evaluate(t):void 0,maximumFractionDigits:this.maxFractionDigits?this.maxFractionDigits.evaluate(t):void 0}).format(this.number.evaluate(t))},Sr.prototype.eachChild=function(t){t(this.number),this.locale&&t(this.locale),this.currency&&t(this.currency),this.minFractionDigits&&t(this.minFractionDigits),this.maxFractionDigits&&t(this.maxFractionDigits);},Sr.prototype.outputDefined=function(){return !1},Sr.prototype.serialize=function(){var t={};return this.locale&&(t.locale=this.locale.serialize()),this.currency&&(t.currency=this.currency.serialize()),this.minFractionDigits&&(t[\"min-fraction-digits\"]=this.minFractionDigits.serialize()),this.maxFractionDigits&&(t[\"max-fraction-digits\"]=this.maxFractionDigits.serialize()),[\"number-format\",this.number.serialize(),t]};var kr=function(t){this.type=Ot,this.input=t;};kr.parse=function(t,e){if(2!==t.length)return e.error(\"Expected 1 argument, but found \"+(t.length-1)+\" instead.\");var r=e.parse(t[1],1);return r?\"array\"!==r.type.kind&&\"string\"!==r.type.kind&&\"value\"!==r.type.kind?e.error(\"Expected argument of type string or array, but found \"+Jt(r.type)+\" instead.\"):new kr(r):null},kr.prototype.evaluate=function(t){var e=this.input.evaluate(t);if(\"string\"==typeof e)return e.length;if(Array.isArray(e))return e.length;throw new pe(\"Expected value to be of type string or array, but found \"+Jt(se(e))+\" instead.\")},kr.prototype.eachChild=function(t){t(this.input);},kr.prototype.outputDefined=function(){return !1},kr.prototype.serialize=function(){var t=[\"length\"];return this.eachChild((function(e){t.push(e.serialize());})),t};var Ir={\"==\":gr,\"!=\":xr,\">\":wr,\"<\":br,\">=\":Ar,\"<=\":_r,array:he,at:lr,boolean:he,case:fr,coalesce:sr,collator:be,format:fe,image:ye,in:pr,\"index-of\":cr,interpolate:ar,\"interpolate-hcl\":ar,\"interpolate-lab\":ar,length:kr,let:ur,literal:le,match:hr,number:he,\"number-format\":Sr,object:he,slice:yr,step:Ne,string:he,\"to-boolean\":me,\"to-color\":me,\"to-number\":me,\"to-string\":me,var:Ue,within:De};function zr(t,e){var r=e[0],n=e[1],i=e[2],a=e[3];r=r.evaluate(t),n=n.evaluate(t),i=i.evaluate(t);var o=a?a.evaluate(t):1,s=ae(r,n,i,o);if(s)throw new pe(s);return new te(r/255*o,n/255*o,i/255*o,o)}function Cr(t,e){return t in e}function Er(t,e){var r=e[t];return void 0===r?null:r}function Pr(t){return {type:t}}function Mr(t){return {result:\"success\",value:t}}function Br(t){return {result:\"error\",value:t}}function Tr(t){return \"data-driven\"===t[\"property-type\"]||\"cross-faded-data-driven\"===t[\"property-type\"]}function Vr(t){return !!t.expression&&t.expression.parameters.indexOf(\"zoom\")>-1}function Fr(t){return !!t.expression&&t.expression.interpolated}function Dr(t){return t instanceof Number?\"number\":t instanceof String?\"string\":t instanceof Boolean?\"boolean\":Array.isArray(t)?\"array\":null===t?\"null\":typeof t}function Lr(t){return \"object\"==typeof t&&null!==t&&!Array.isArray(t)}function Or(t){return t}function Rr(t,e,r){return void 0!==t?t:void 0!==e?e:void 0!==r?r:void 0}function Ur(t,e,r,n,i){return Rr(typeof r===i?n[r]:void 0,t.default,e.default)}function jr(t,e,r){if(\"number\"!==Dr(r))return Rr(t.default,e.default);var n=t.stops.length;if(1===n)return t.stops[0][1];if(r<=t.stops[0][0])return t.stops[0][1];if(r>=t.stops[n-1][0])return t.stops[n-1][1];var i=qe(t.stops.map((function(t){return t[0]})),r);return t.stops[i][1]}function qr(t,e,r){var n=void 0!==t.base?t.base:1;if(\"number\"!==Dr(r))return Rr(t.default,e.default);var i=t.stops.length;if(1===i)return t.stops[0][1];if(r<=t.stops[0][0])return t.stops[0][1];if(r>=t.stops[i-1][0])return t.stops[i-1][1];var a=qe(t.stops.map((function(t){return t[0]})),r),o=function(t,e,r,n){var i=n-r,a=t-r;return 0===i?0:1===e?a/i:(Math.pow(e,a)-1)/(Math.pow(e,i)-1)}(r,n,t.stops[a][0],t.stops[a+1][0]),s=t.stops[a][1],u=t.stops[a+1][1],l=Ge[e.type]||Or;if(t.colorSpace&&\"rgb\"!==t.colorSpace){var p=ir[t.colorSpace];l=function(t,e){return p.reverse(p.interpolate(p.forward(t),p.forward(e),o))};}return \"function\"==typeof s.evaluate?{evaluate:function(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];var r=s.evaluate.apply(void 0,t),n=u.evaluate.apply(void 0,t);if(void 0!==r&&void 0!==n)return l(r,n,o)}}:l(s,u,o)}function Nr(t,e,r){return \"color\"===e.type?r=te.parse(r):\"formatted\"===e.type?r=ne.fromString(r.toString()):\"resolvedImage\"===e.type?r=ie.fromString(r.toString()):Dr(r)===e.type||\"enum\"===e.type&&e.values[r]||(r=void 0),Rr(r,t.default,e.default)}xe.register(Ir,{error:[{kind:\"error\"},[Rt],function(t,e){throw new pe(e[0].evaluate(t))}],typeof:[Rt,[Nt],function(t,e){return Jt(se(e[0].evaluate(t)))}],\"to-rgba\":[Xt(Ot,4),[jt],function(t,e){return e[0].evaluate(t).toArray()}],rgb:[jt,[Ot,Ot,Ot],zr],rgba:[jt,[Ot,Ot,Ot,Ot],zr],has:{type:Ut,overloads:[[[Rt],function(t,e){return Cr(e[0].evaluate(t),t.properties())}],[[Rt,qt],function(t,e){var r=e[1];return Cr(e[0].evaluate(t),r.evaluate(t))}]]},get:{type:Nt,overloads:[[[Rt],function(t,e){return Er(e[0].evaluate(t),t.properties())}],[[Rt,qt],function(t,e){var r=e[1];return Er(e[0].evaluate(t),r.evaluate(t))}]]},\"feature-state\":[Nt,[Rt],function(t,e){return Er(e[0].evaluate(t),t.featureState||{})}],properties:[qt,[],function(t){return t.properties()}],\"geometry-type\":[Rt,[],function(t){return t.geometryType()}],id:[Nt,[],function(t){return t.id()}],zoom:[Ot,[],function(t){return t.globals.zoom}],\"heatmap-density\":[Ot,[],function(t){return t.globals.heatmapDensity||0}],\"line-progress\":[Ot,[],function(t){return t.globals.lineProgress||0}],accumulated:[Nt,[],function(t){return void 0===t.globals.accumulated?null:t.globals.accumulated}],\"+\":[Ot,Pr(Ot),function(t,e){for(var r=0,n=0,i=e;n<i.length;n+=1)r+=i[n].evaluate(t);return r}],\"*\":[Ot,Pr(Ot),function(t,e){for(var r=1,n=0,i=e;n<i.length;n+=1)r*=i[n].evaluate(t);return r}],\"-\":{type:Ot,overloads:[[[Ot,Ot],function(t,e){var r=e[1];return e[0].evaluate(t)-r.evaluate(t)}],[[Ot],function(t,e){return -e[0].evaluate(t)}]]},\"/\":[Ot,[Ot,Ot],function(t,e){var r=e[1];return e[0].evaluate(t)/r.evaluate(t)}],\"%\":[Ot,[Ot,Ot],function(t,e){var r=e[1];return e[0].evaluate(t)%r.evaluate(t)}],ln2:[Ot,[],function(){return Math.LN2}],pi:[Ot,[],function(){return Math.PI}],e:[Ot,[],function(){return Math.E}],\"^\":[Ot,[Ot,Ot],function(t,e){var r=e[1];return Math.pow(e[0].evaluate(t),r.evaluate(t))}],sqrt:[Ot,[Ot],function(t,e){return Math.sqrt(e[0].evaluate(t))}],log10:[Ot,[Ot],function(t,e){return Math.log(e[0].evaluate(t))/Math.LN10}],ln:[Ot,[Ot],function(t,e){return Math.log(e[0].evaluate(t))}],log2:[Ot,[Ot],function(t,e){return Math.log(e[0].evaluate(t))/Math.LN2}],sin:[Ot,[Ot],function(t,e){return Math.sin(e[0].evaluate(t))}],cos:[Ot,[Ot],function(t,e){return Math.cos(e[0].evaluate(t))}],tan:[Ot,[Ot],function(t,e){return Math.tan(e[0].evaluate(t))}],asin:[Ot,[Ot],function(t,e){return Math.asin(e[0].evaluate(t))}],acos:[Ot,[Ot],function(t,e){return Math.acos(e[0].evaluate(t))}],atan:[Ot,[Ot],function(t,e){return Math.atan(e[0].evaluate(t))}],min:[Ot,Pr(Ot),function(t,e){return Math.min.apply(Math,e.map((function(e){return e.evaluate(t)})))}],max:[Ot,Pr(Ot),function(t,e){return Math.max.apply(Math,e.map((function(e){return e.evaluate(t)})))}],abs:[Ot,[Ot],function(t,e){return Math.abs(e[0].evaluate(t))}],round:[Ot,[Ot],function(t,e){var r=e[0].evaluate(t);return r<0?-Math.round(-r):Math.round(r)}],floor:[Ot,[Ot],function(t,e){return Math.floor(e[0].evaluate(t))}],ceil:[Ot,[Ot],function(t,e){return Math.ceil(e[0].evaluate(t))}],\"filter-==\":[Ut,[Rt,Nt],function(t,e){var r=e[0],n=e[1];return t.properties()[r.value]===n.value}],\"filter-id-==\":[Ut,[Nt],function(t,e){var r=e[0];return t.id()===r.value}],\"filter-type-==\":[Ut,[Rt],function(t,e){var r=e[0];return t.geometryType()===r.value}],\"filter-<\":[Ut,[Rt,Nt],function(t,e){var r=e[0],n=e[1],i=t.properties()[r.value],a=n.value;return typeof i==typeof a&&i<a}],\"filter-id-<\":[Ut,[Nt],function(t,e){var r=e[0],n=t.id(),i=r.value;return typeof n==typeof i&&n<i}],\"filter->\":[Ut,[Rt,Nt],function(t,e){var r=e[0],n=e[1],i=t.properties()[r.value],a=n.value;return typeof i==typeof a&&i>a}],\"filter-id->\":[Ut,[Nt],function(t,e){var r=e[0],n=t.id(),i=r.value;return typeof n==typeof i&&n>i}],\"filter-<=\":[Ut,[Rt,Nt],function(t,e){var r=e[0],n=e[1],i=t.properties()[r.value],a=n.value;return typeof i==typeof a&&i<=a}],\"filter-id-<=\":[Ut,[Nt],function(t,e){var r=e[0],n=t.id(),i=r.value;return typeof n==typeof i&&n<=i}],\"filter->=\":[Ut,[Rt,Nt],function(t,e){var r=e[0],n=e[1],i=t.properties()[r.value],a=n.value;return typeof i==typeof a&&i>=a}],\"filter-id->=\":[Ut,[Nt],function(t,e){var r=e[0],n=t.id(),i=r.value;return typeof n==typeof i&&n>=i}],\"filter-has\":[Ut,[Nt],function(t,e){return e[0].value in t.properties()}],\"filter-has-id\":[Ut,[],function(t){return null!==t.id()&&void 0!==t.id()}],\"filter-type-in\":[Ut,[Xt(Rt)],function(t,e){return e[0].value.indexOf(t.geometryType())>=0}],\"filter-id-in\":[Ut,[Xt(Nt)],function(t,e){return e[0].value.indexOf(t.id())>=0}],\"filter-in-small\":[Ut,[Rt,Xt(Nt)],function(t,e){var r=e[0];return e[1].value.indexOf(t.properties()[r.value])>=0}],\"filter-in-large\":[Ut,[Rt,Xt(Nt)],function(t,e){var r=e[0],n=e[1];return function(t,e,r,n){for(;r<=n;){var i=r+n>>1;if(e[i]===t)return !0;e[i]>t?n=i-1:r=i+1;}return !1}(t.properties()[r.value],n.value,0,n.value.length-1)}],all:{type:Ut,overloads:[[[Ut,Ut],function(t,e){var r=e[1];return e[0].evaluate(t)&&r.evaluate(t)}],[Pr(Ut),function(t,e){for(var r=0,n=e;r<n.length;r+=1)if(!n[r].evaluate(t))return !1;return !0}]]},any:{type:Ut,overloads:[[[Ut,Ut],function(t,e){var r=e[1];return e[0].evaluate(t)||r.evaluate(t)}],[Pr(Ut),function(t,e){for(var r=0,n=e;r<n.length;r+=1)if(n[r].evaluate(t))return !0;return !1}]]},\"!\":[Ut,[Ut],function(t,e){return !e[0].evaluate(t)}],\"is-supported-script\":[Ut,[Rt],function(t,e){var r=t.globals&&t.globals.isSupportedScript;return !r||r(e[0].evaluate(t))}],upcase:[Rt,[Rt],function(t,e){return e[0].evaluate(t).toUpperCase()}],downcase:[Rt,[Rt],function(t,e){return e[0].evaluate(t).toLowerCase()}],concat:[Rt,Pr(Nt),function(t,e){return e.map((function(e){return ue(e.evaluate(t))})).join(\"\")}],\"resolved-locale\":[Rt,[Kt],function(t,e){return e[0].evaluate(t).resolvedLocale()}]});var Kr=function(t,e){this.expression=t,this._warningHistory={},this._evaluator=new ge,this._defaultValue=e?function(t){return \"color\"===t.type&&Lr(t.default)?new te(0,0,0,0):\"color\"===t.type?te.parse(t.default)||null:void 0===t.default?null:t.default}(e):null,this._enumValues=e&&\"enum\"===e.type?e.values:null;};function Gr(t){return Array.isArray(t)&&t.length>0&&\"string\"==typeof t[0]&&t[0]in Ir}function Zr(t,e){var r=new je(Ir,[],e?function(t){var e={color:jt,string:Rt,number:Ot,enum:Rt,boolean:Ut,formatted:Gt,resolvedImage:Zt};return \"array\"===t.type?Xt(e[t.value]||Nt,t.length):e[t.type]}(e):void 0),n=r.parse(t,void 0,void 0,void 0,e&&\"string\"===e.type?{typeAnnotation:\"coerce\"}:void 0);return n?Mr(new Kr(n,e)):Br(r.errors)}Kr.prototype.evaluateWithoutErrorHandling=function(t,e,r,n,i,a){return this._evaluator.globals=t,this._evaluator.feature=e,this._evaluator.featureState=r,this._evaluator.canonical=n,this._evaluator.availableImages=i||null,this._evaluator.formattedSection=a,this.expression.evaluate(this._evaluator)},Kr.prototype.evaluate=function(t,e,r,n,i,a){this._evaluator.globals=t,this._evaluator.feature=e||null,this._evaluator.featureState=r||null,this._evaluator.canonical=n,this._evaluator.availableImages=i||null,this._evaluator.formattedSection=a||null;try{var o=this.expression.evaluate(this._evaluator);if(null==o||\"number\"==typeof o&&o!=o)return this._defaultValue;if(this._enumValues&&!(o in this._enumValues))throw new pe(\"Expected value to be one of \"+Object.keys(this._enumValues).map((function(t){return JSON.stringify(t)})).join(\", \")+\", but found \"+JSON.stringify(o)+\" instead.\");return o}catch(t){return this._warningHistory[t.message]||(this._warningHistory[t.message]=!0,\"undefined\"!=typeof console&&console.warn(t.message)),this._defaultValue}};var Xr=function(t,e){this.kind=t,this._styleExpression=e,this.isStateDependent=\"constant\"!==t&&!Oe(e.expression);};Xr.prototype.evaluateWithoutErrorHandling=function(t,e,r,n,i,a){return this._styleExpression.evaluateWithoutErrorHandling(t,e,r,n,i,a)},Xr.prototype.evaluate=function(t,e,r,n,i,a){return this._styleExpression.evaluate(t,e,r,n,i,a)};var Jr=function(t,e,r,n){this.kind=t,this.zoomStops=r,this._styleExpression=e,this.isStateDependent=\"camera\"!==t&&!Oe(e.expression),this.interpolationType=n;};function Hr(t,e){if(\"error\"===(t=Zr(t,e)).result)return t;var r=t.value.expression,n=Le(r);if(!n&&!Tr(e))return Br([new Ft(\"\",\"data expressions not supported\")]);var i=Re(r,[\"zoom\"]);if(!i&&!Vr(e))return Br([new Ft(\"\",\"zoom expressions not supported\")]);var a=function t(e){var r=null;if(e instanceof ur)r=t(e.result);else if(e instanceof sr)for(var n=0,i=e.args;n<i.length&&!(r=t(i[n]));n+=1);else (e instanceof Ne||e instanceof ar)&&e.input instanceof xe&&\"zoom\"===e.input.name&&(r=e);return r instanceof Ft||e.eachChild((function(e){var n=t(e);n instanceof Ft?r=n:!r&&n?r=new Ft(\"\",'\"zoom\" expression may only be used as input to a top-level \"step\" or \"interpolate\" expression.'):r&&n&&r!==n&&(r=new Ft(\"\",'Only one zoom-based \"step\" or \"interpolate\" subexpression may be used in an expression.'));})),r}(r);return a||i?a instanceof Ft?Br([a]):a instanceof ar&&!Fr(e)?Br([new Ft(\"\",'\"interpolate\" expressions cannot be used with this property')]):Mr(a?new Jr(n?\"camera\":\"composite\",t.value,a.labels,a instanceof ar?a.interpolation:void 0):new Xr(n?\"constant\":\"source\",t.value)):Br([new Ft(\"\",'\"zoom\" expression may only be used as input to a top-level \"step\" or \"interpolate\" expression.')])}Jr.prototype.evaluateWithoutErrorHandling=function(t,e,r,n,i,a){return this._styleExpression.evaluateWithoutErrorHandling(t,e,r,n,i,a)},Jr.prototype.evaluate=function(t,e,r,n,i,a){return this._styleExpression.evaluate(t,e,r,n,i,a)},Jr.prototype.interpolationFactor=function(t,e,r){return this.interpolationType?ar.interpolationFactor(this.interpolationType,t,e,r):0};var Yr=function(t,e){this._parameters=t,this._specification=e,Bt(this,function t(e,r){var n,i,a,o=\"color\"===r.type,s=e.stops&&\"object\"==typeof e.stops[0][0],u=s||!(s||void 0!==e.property),l=e.type||(Fr(r)?\"exponential\":\"interval\");if(o&&((e=Bt({},e)).stops&&(e.stops=e.stops.map((function(t){return [t[0],te.parse(t[1])]}))),e.default=te.parse(e.default?e.default:r.default)),e.colorSpace&&\"rgb\"!==e.colorSpace&&!ir[e.colorSpace])throw new Error(\"Unknown color space: \"+e.colorSpace);if(\"exponential\"===l)n=qr;else if(\"interval\"===l)n=jr;else if(\"categorical\"===l){n=Ur,i=Object.create(null);for(var p=0,c=e.stops;p<c.length;p+=1){var h=c[p];i[h[0]]=h[1];}a=typeof e.stops[0][0];}else {if(\"identity\"!==l)throw new Error('Unknown function type \"'+l+'\"');n=Nr;}if(s){for(var f={},y=[],d=0;d<e.stops.length;d++){var m=e.stops[d],v=m[0].zoom;void 0===f[v]&&(f[v]={zoom:v,type:e.type,property:e.property,default:e.default,stops:[]},y.push(v)),f[v].stops.push([m[0].value,m[1]]);}for(var g=[],x=0,b=y;x<b.length;x+=1){var w=b[x];g.push([f[w].zoom,t(f[w],r)]);}var _={name:\"linear\"};return {kind:\"composite\",interpolationType:_,interpolationFactor:ar.interpolationFactor.bind(void 0,_),zoomStops:g.map((function(t){return t[0]})),evaluate:function(t,n){var i=t.zoom;return qr({stops:g,base:e.base},r,i).evaluate(i,n)}}}if(u){var A=\"exponential\"===l?{name:\"exponential\",base:void 0!==e.base?e.base:1}:null;return {kind:\"camera\",interpolationType:A,interpolationFactor:ar.interpolationFactor.bind(void 0,A),zoomStops:e.stops.map((function(t){return t[0]})),evaluate:function(t){return n(e,r,t.zoom,i,a)}}}return {kind:\"source\",evaluate:function(t,o){var s=o&&o.properties?o.properties[e.property]:void 0;return void 0===s?Rr(e.default,r.default):n(e,r,s,i,a)}}}(this._parameters,this._specification));};function $r(t){var e=t.key,r=t.value,n=t.valueSpec||{},i=t.objectElementValidators||{},a=t.style,o=t.styleSpec,s=[],u=Dr(r);if(\"object\"!==u)return [new Pt(e,r,\"object expected, \"+u+\" found\")];for(var l in r){var p=l.split(\".\")[0],c=n[p]||n[\"*\"],h=void 0;if(i[p])h=i[p];else if(n[p])h=An;else if(i[\"*\"])h=i[\"*\"];else {if(!n[\"*\"]){s.push(new Pt(e,r[l],'unknown property \"'+l+'\"'));continue}h=An;}s=s.concat(h({key:(e?e+\".\":e)+l,value:r[l],valueSpec:c,style:a,styleSpec:o,object:r,objectKey:l},r));}for(var f in n)i[f]||n[f].required&&void 0===n[f].default&&void 0===r[f]&&s.push(new Pt(e,r,'missing required property \"'+f+'\"'));return s}function Wr(t){var e=t.value,r=t.valueSpec,n=t.style,i=t.styleSpec,a=t.key,o=t.arrayElementValidator||An;if(\"array\"!==Dr(e))return [new Pt(a,e,\"array expected, \"+Dr(e)+\" found\")];if(r.length&&e.length!==r.length)return [new Pt(a,e,\"array length \"+r.length+\" expected, length \"+e.length+\" found\")];if(r[\"min-length\"]&&e.length<r[\"min-length\"])return [new Pt(a,e,\"array length at least \"+r[\"min-length\"]+\" expected, length \"+e.length+\" found\")];var s={type:r.value,values:r.values};i.$version<7&&(s.function=r.function),\"object\"===Dr(r.value)&&(s=r.value);for(var u=[],l=0;l<e.length;l++)u=u.concat(o({array:e,arrayIndex:l,value:e[l],valueSpec:s,style:n,styleSpec:i,key:a+\"[\"+l+\"]\"}));return u}function Qr(t){var e=t.key,r=t.value,n=t.valueSpec,i=Dr(r);return \"number\"===i&&r!=r&&(i=\"NaN\"),\"number\"!==i?[new Pt(e,r,\"number expected, \"+i+\" found\")]:\"minimum\"in n&&r<n.minimum?[new Pt(e,r,r+\" is less than the minimum value \"+n.minimum)]:\"maximum\"in n&&r>n.maximum?[new Pt(e,r,r+\" is greater than the maximum value \"+n.maximum)]:[]}function tn(t){var e,r,n,i=t.valueSpec,a=Tt(t.value.type),o={},s=\"categorical\"!==a&&void 0===t.value.property,u=!s,l=\"array\"===Dr(t.value.stops)&&\"array\"===Dr(t.value.stops[0])&&\"object\"===Dr(t.value.stops[0][0]),p=$r({key:t.key,value:t.value,valueSpec:t.styleSpec.function,style:t.style,styleSpec:t.styleSpec,objectElementValidators:{stops:function(t){if(\"identity\"===a)return [new Pt(t.key,t.value,'identity function may not have a \"stops\" property')];var e=[],r=t.value;return e=e.concat(Wr({key:t.key,value:r,valueSpec:t.valueSpec,style:t.style,styleSpec:t.styleSpec,arrayElementValidator:c})),\"array\"===Dr(r)&&0===r.length&&e.push(new Pt(t.key,r,\"array must have at least one stop\")),e},default:function(t){return An({key:t.key,value:t.value,valueSpec:i,style:t.style,styleSpec:t.styleSpec})}}});return \"identity\"===a&&s&&p.push(new Pt(t.key,t.value,'missing required property \"property\"')),\"identity\"===a||t.value.stops||p.push(new Pt(t.key,t.value,'missing required property \"stops\"')),\"exponential\"===a&&t.valueSpec.expression&&!Fr(t.valueSpec)&&p.push(new Pt(t.key,t.value,\"exponential functions not supported\")),t.styleSpec.$version>=8&&(u&&!Tr(t.valueSpec)?p.push(new Pt(t.key,t.value,\"property functions not supported\")):s&&!Vr(t.valueSpec)&&p.push(new Pt(t.key,t.value,\"zoom functions not supported\"))),\"categorical\"!==a&&!l||void 0!==t.value.property||p.push(new Pt(t.key,t.value,'\"property\" property is required')),p;function c(t){var e=[],a=t.value,s=t.key;if(\"array\"!==Dr(a))return [new Pt(s,a,\"array expected, \"+Dr(a)+\" found\")];if(2!==a.length)return [new Pt(s,a,\"array length 2 expected, length \"+a.length+\" found\")];if(l){if(\"object\"!==Dr(a[0]))return [new Pt(s,a,\"object expected, \"+Dr(a[0])+\" found\")];if(void 0===a[0].zoom)return [new Pt(s,a,\"object stop key must have zoom\")];if(void 0===a[0].value)return [new Pt(s,a,\"object stop key must have value\")];if(n&&n>Tt(a[0].zoom))return [new Pt(s,a[0].zoom,\"stop zoom values must appear in ascending order\")];Tt(a[0].zoom)!==n&&(n=Tt(a[0].zoom),r=void 0,o={}),e=e.concat($r({key:s+\"[0]\",value:a[0],valueSpec:{zoom:{}},style:t.style,styleSpec:t.styleSpec,objectElementValidators:{zoom:Qr,value:h}}));}else e=e.concat(h({key:s+\"[0]\",value:a[0],valueSpec:{},style:t.style,styleSpec:t.styleSpec},a));return Gr(Vt(a[1]))?e.concat([new Pt(s+\"[1]\",a[1],\"expressions are not allowed in function stops.\")]):e.concat(An({key:s+\"[1]\",value:a[1],valueSpec:i,style:t.style,styleSpec:t.styleSpec}))}function h(t,n){var s=Dr(t.value),u=Tt(t.value),l=null!==t.value?t.value:n;if(e){if(s!==e)return [new Pt(t.key,l,s+\" stop domain type must match previous stop domain type \"+e)]}else e=s;if(\"number\"!==s&&\"string\"!==s&&\"boolean\"!==s)return [new Pt(t.key,l,\"stop domain value must be a number, string, or boolean\")];if(\"number\"!==s&&\"categorical\"!==a){var p=\"number expected, \"+s+\" found\";return Tr(i)&&void 0===a&&(p+='\\nIf you intended to use a categorical function, specify `\"type\": \"categorical\"`.'),[new Pt(t.key,l,p)]}return \"categorical\"!==a||\"number\"!==s||isFinite(u)&&Math.floor(u)===u?\"categorical\"!==a&&\"number\"===s&&void 0!==r&&u<r?[new Pt(t.key,l,\"stop domain values must appear in ascending order\")]:(r=u,\"categorical\"===a&&u in o?[new Pt(t.key,l,\"stop domain values must be unique\")]:(o[u]=!0,[])):[new Pt(t.key,l,\"integer expected, found \"+u)]}}function en(t){var e=(\"property\"===t.expressionContext?Hr:Zr)(Vt(t.value),t.valueSpec);if(\"error\"===e.result)return e.value.map((function(e){return new Pt(\"\"+t.key+e.key,t.value,e.message)}));var r=e.value.expression||e.value._styleExpression.expression;if(\"property\"===t.expressionContext&&\"text-font\"===t.propertyKey&&!r.outputDefined())return [new Pt(t.key,t.value,'Invalid data expression for \"'+t.propertyKey+'\". Output values must be contained as literals within the expression.')];if(\"property\"===t.expressionContext&&\"layout\"===t.propertyType&&!Oe(r))return [new Pt(t.key,t.value,'\"feature-state\" data expressions are not supported with layout properties.')];if(\"filter\"===t.expressionContext&&!Oe(r))return [new Pt(t.key,t.value,'\"feature-state\" data expressions are not supported with filters.')];if(t.expressionContext&&0===t.expressionContext.indexOf(\"cluster\")){if(!Re(r,[\"zoom\",\"feature-state\"]))return [new Pt(t.key,t.value,'\"zoom\" and \"feature-state\" expressions are not supported with cluster properties.')];if(\"cluster-initial\"===t.expressionContext&&!Le(r))return [new Pt(t.key,t.value,\"Feature data expressions are not supported with initial expression part of cluster properties.\")]}return []}function rn(t){var e=t.key,r=t.value,n=t.valueSpec,i=[];return Array.isArray(n.values)?-1===n.values.indexOf(Tt(r))&&i.push(new Pt(e,r,\"expected one of [\"+n.values.join(\", \")+\"], \"+JSON.stringify(r)+\" found\")):-1===Object.keys(n.values).indexOf(Tt(r))&&i.push(new Pt(e,r,\"expected one of [\"+Object.keys(n.values).join(\", \")+\"], \"+JSON.stringify(r)+\" found\")),i}function nn(t){if(!0===t||!1===t)return !0;if(!Array.isArray(t)||0===t.length)return !1;switch(t[0]){case\"has\":return t.length>=2&&\"$id\"!==t[1]&&\"$type\"!==t[1];case\"in\":return t.length>=3&&(\"string\"!=typeof t[1]||Array.isArray(t[2]));case\"!in\":case\"!has\":case\"none\":return !1;case\"==\":case\"!=\":case\">\":case\">=\":case\"<\":case\"<=\":return 3!==t.length||Array.isArray(t[1])||Array.isArray(t[2]);case\"any\":case\"all\":for(var e=0,r=t.slice(1);e<r.length;e+=1){var n=r[e];if(!nn(n)&&\"boolean\"!=typeof n)return !1}return !0;default:return !0}}Yr.deserialize=function(t){return new Yr(t._parameters,t._specification)},Yr.serialize=function(t){return {_parameters:t._parameters,_specification:t._specification}};var an={type:\"boolean\",default:!1,transition:!1,\"property-type\":\"data-driven\",expression:{interpolated:!1,parameters:[\"zoom\",\"feature\"]}};function on(t){if(null==t)return {filter:function(){return !0},needGeometry:!1};nn(t)||(t=un(t));var e=Zr(t,an);if(\"error\"===e.result)throw new Error(e.value.map((function(t){return t.key+\": \"+t.message})).join(\", \"));return {filter:function(t,r,n){return e.value.evaluate(t,r,{},n)},needGeometry:function t(e){if(!Array.isArray(e))return !1;if(\"within\"===e[0])return !0;for(var r=1;r<e.length;r++)if(t(e[r]))return !0;return !1}(t)}}function sn(t,e){return t<e?-1:t>e?1:0}function un(t){if(!t)return !0;var e,r=t[0];return t.length<=1?\"any\"!==r:\"==\"===r?ln(t[1],t[2],\"==\"):\"!=\"===r?hn(ln(t[1],t[2],\"==\")):\"<\"===r||\">\"===r||\"<=\"===r||\">=\"===r?ln(t[1],t[2],r):\"any\"===r?(e=t.slice(1),[\"any\"].concat(e.map(un))):\"all\"===r?[\"all\"].concat(t.slice(1).map(un)):\"none\"===r?[\"all\"].concat(t.slice(1).map(un).map(hn)):\"in\"===r?pn(t[1],t.slice(2)):\"!in\"===r?hn(pn(t[1],t.slice(2))):\"has\"===r?cn(t[1]):\"!has\"===r?hn(cn(t[1])):\"within\"!==r||t}function ln(t,e,r){switch(t){case\"$type\":return [\"filter-type-\"+r,e];case\"$id\":return [\"filter-id-\"+r,e];default:return [\"filter-\"+r,t,e]}}function pn(t,e){if(0===e.length)return !1;switch(t){case\"$type\":return [\"filter-type-in\",[\"literal\",e]];case\"$id\":return [\"filter-id-in\",[\"literal\",e]];default:return e.length>200&&!e.some((function(t){return typeof t!=typeof e[0]}))?[\"filter-in-large\",t,[\"literal\",e.sort(sn)]]:[\"filter-in-small\",t,[\"literal\",e]]}}function cn(t){switch(t){case\"$type\":return !0;case\"$id\":return [\"filter-has-id\"];default:return [\"filter-has\",t]}}function hn(t){return [\"!\",t]}function fn(t){return nn(Vt(t.value))?en(Bt({},t,{expressionContext:\"filter\",valueSpec:{value:\"boolean\"}})):function t(e){var r=e.value,n=e.key;if(\"array\"!==Dr(r))return [new Pt(n,r,\"array expected, \"+Dr(r)+\" found\")];var i,a=e.styleSpec,o=[];if(r.length<1)return [new Pt(n,r,\"filter array must have at least 1 element\")];switch(o=o.concat(rn({key:n+\"[0]\",value:r[0],valueSpec:a.filter_operator,style:e.style,styleSpec:e.styleSpec})),Tt(r[0])){case\"<\":case\"<=\":case\">\":case\">=\":r.length>=2&&\"$type\"===Tt(r[1])&&o.push(new Pt(n,r,'\"$type\" cannot be use with operator \"'+r[0]+'\"'));case\"==\":case\"!=\":3!==r.length&&o.push(new Pt(n,r,'filter array for operator \"'+r[0]+'\" must have 3 elements'));case\"in\":case\"!in\":r.length>=2&&\"string\"!==(i=Dr(r[1]))&&o.push(new Pt(n+\"[1]\",r[1],\"string expected, \"+i+\" found\"));for(var s=2;s<r.length;s++)i=Dr(r[s]),\"$type\"===Tt(r[1])?o=o.concat(rn({key:n+\"[\"+s+\"]\",value:r[s],valueSpec:a.geometry_type,style:e.style,styleSpec:e.styleSpec})):\"string\"!==i&&\"number\"!==i&&\"boolean\"!==i&&o.push(new Pt(n+\"[\"+s+\"]\",r[s],\"string, number, or boolean expected, \"+i+\" found\"));break;case\"any\":case\"all\":case\"none\":for(var u=1;u<r.length;u++)o=o.concat(t({key:n+\"[\"+u+\"]\",value:r[u],style:e.style,styleSpec:e.styleSpec}));break;case\"has\":case\"!has\":i=Dr(r[1]),2!==r.length?o.push(new Pt(n,r,'filter array for \"'+r[0]+'\" operator must have 2 elements')):\"string\"!==i&&o.push(new Pt(n+\"[1]\",r[1],\"string expected, \"+i+\" found\"));break;case\"within\":i=Dr(r[1]),2!==r.length?o.push(new Pt(n,r,'filter array for \"'+r[0]+'\" operator must have 2 elements')):\"object\"!==i&&o.push(new Pt(n+\"[1]\",r[1],\"object expected, \"+i+\" found\"));}return o}(t)}function yn(t,e){var r=t.key,n=t.style,i=t.styleSpec,a=t.value,o=t.objectKey,s=i[e+\"_\"+t.layerType];if(!s)return [];var u=o.match(/^(.*)-transition$/);if(\"paint\"===e&&u&&s[u[1]]&&s[u[1]].transition)return An({key:r,value:a,valueSpec:i.transition,style:n,styleSpec:i});var l,p=t.valueSpec||s[o];if(!p)return [new Pt(r,a,'unknown property \"'+o+'\"')];if(\"string\"===Dr(a)&&Tr(p)&&!p.tokens&&(l=/^{([^}]+)}$/.exec(a)))return [new Pt(r,a,'\"'+o+'\" does not support interpolation syntax\\nUse an identity property function instead: `{ \"type\": \"identity\", \"property\": '+JSON.stringify(l[1])+\" }`.\")];var c=[];return \"symbol\"===t.layerType&&(\"text-field\"===o&&n&&!n.glyphs&&c.push(new Pt(r,a,'use of \"text-field\" requires a style \"glyphs\" property')),\"text-font\"===o&&Lr(Vt(a))&&\"identity\"===Tt(a.type)&&c.push(new Pt(r,a,'\"text-font\" does not support identity functions'))),c.concat(An({key:t.key,value:a,valueSpec:p,style:n,styleSpec:i,expressionContext:\"property\",propertyType:e,propertyKey:o}))}function dn(t){return yn(t,\"paint\")}function mn(t){return yn(t,\"layout\")}function vn(t){var e=[],r=t.value,n=t.key,i=t.style,a=t.styleSpec;r.type||r.ref||e.push(new Pt(n,r,'either \"type\" or \"ref\" is required'));var o,s=Tt(r.type),u=Tt(r.ref);if(r.id)for(var l=Tt(r.id),p=0;p<t.arrayIndex;p++){var c=i.layers[p];Tt(c.id)===l&&e.push(new Pt(n,r.id,'duplicate layer id \"'+r.id+'\", previously used at line '+c.id.__line__));}if(\"ref\"in r)[\"type\",\"source\",\"source-layer\",\"filter\",\"layout\"].forEach((function(t){t in r&&e.push(new Pt(n,r[t],'\"'+t+'\" is prohibited for ref layers'));})),i.layers.forEach((function(t){Tt(t.id)===u&&(o=t);})),o?o.ref?e.push(new Pt(n,r.ref,\"ref cannot reference another ref layer\")):s=Tt(o.type):e.push(new Pt(n,r.ref,'ref layer \"'+u+'\" not found'));else if(\"background\"!==s)if(r.source){var h=i.sources&&i.sources[r.source],f=h&&Tt(h.type);h?\"vector\"===f&&\"raster\"===s?e.push(new Pt(n,r.source,'layer \"'+r.id+'\" requires a raster source')):\"raster\"===f&&\"raster\"!==s?e.push(new Pt(n,r.source,'layer \"'+r.id+'\" requires a vector source')):\"vector\"!==f||r[\"source-layer\"]?\"raster-dem\"===f&&\"hillshade\"!==s?e.push(new Pt(n,r.source,\"raster-dem source can only be used with layer type 'hillshade'.\")):\"line\"!==s||!r.paint||!r.paint[\"line-gradient\"]||\"geojson\"===f&&h.lineMetrics||e.push(new Pt(n,r,'layer \"'+r.id+'\" specifies a line-gradient, which requires a GeoJSON source with `lineMetrics` enabled.')):e.push(new Pt(n,r,'layer \"'+r.id+'\" must specify a \"source-layer\"')):e.push(new Pt(n,r.source,'source \"'+r.source+'\" not found'));}else e.push(new Pt(n,r,'missing required property \"source\"'));return e=e.concat($r({key:n,value:r,valueSpec:a.layer,style:t.style,styleSpec:t.styleSpec,objectElementValidators:{\"*\":function(){return []},type:function(){return An({key:n+\".type\",value:r.type,valueSpec:a.layer.type,style:t.style,styleSpec:t.styleSpec,object:r,objectKey:\"type\"})},filter:fn,layout:function(t){return $r({layer:r,key:t.key,value:t.value,style:t.style,styleSpec:t.styleSpec,objectElementValidators:{\"*\":function(t){return mn(Bt({layerType:s},t))}}})},paint:function(t){return $r({layer:r,key:t.key,value:t.value,style:t.style,styleSpec:t.styleSpec,objectElementValidators:{\"*\":function(t){return dn(Bt({layerType:s},t))}}})}}}))}function gn(t){var e=t.value,r=t.key,n=Dr(e);return \"string\"!==n?[new Pt(r,e,\"string expected, \"+n+\" found\")]:[]}var xn={promoteId:function(t){var e=t.key,r=t.value;if(\"string\"===Dr(r))return gn({key:e,value:r});var n=[];for(var i in r)n.push.apply(n,gn({key:e+\".\"+i,value:r[i]}));return n}};function bn(t){var e=t.value,r=t.key,n=t.styleSpec,i=t.style;if(!e.type)return [new Pt(r,e,'\"type\" is required')];var a,o=Tt(e.type);switch(o){case\"vector\":case\"raster\":case\"raster-dem\":return $r({key:r,value:e,valueSpec:n[\"source_\"+o.replace(\"-\",\"_\")],style:t.style,styleSpec:n,objectElementValidators:xn});case\"geojson\":if(a=$r({key:r,value:e,valueSpec:n.source_geojson,style:i,styleSpec:n,objectElementValidators:xn}),e.cluster)for(var s in e.clusterProperties){var u=e.clusterProperties[s],l=u[0],p=\"string\"==typeof l?[l,[\"accumulated\"],[\"get\",s]]:l;a.push.apply(a,en({key:r+\".\"+s+\".map\",value:u[1],expressionContext:\"cluster-map\"})),a.push.apply(a,en({key:r+\".\"+s+\".reduce\",value:p,expressionContext:\"cluster-reduce\"}));}return a;case\"video\":return $r({key:r,value:e,valueSpec:n.source_video,style:i,styleSpec:n});case\"image\":return $r({key:r,value:e,valueSpec:n.source_image,style:i,styleSpec:n});case\"canvas\":return [new Pt(r,null,\"Please use runtime APIs to add canvas sources, rather than including them in stylesheets.\",\"source.canvas\")];default:return rn({key:r+\".type\",value:e.type,valueSpec:{values:[\"vector\",\"raster\",\"raster-dem\",\"geojson\",\"video\",\"image\"]},style:i,styleSpec:n})}}function wn(t){var e=t.value,r=t.styleSpec,n=r.light,i=t.style,a=[],o=Dr(e);if(void 0===e)return a;if(\"object\"!==o)return a.concat([new Pt(\"light\",e,\"object expected, \"+o+\" found\")]);for(var s in e){var u=s.match(/^(.*)-transition$/);a=a.concat(u&&n[u[1]]&&n[u[1]].transition?An({key:s,value:e[s],valueSpec:r.transition,style:i,styleSpec:r}):n[s]?An({key:s,value:e[s],valueSpec:n[s],style:i,styleSpec:r}):[new Pt(s,e[s],'unknown property \"'+s+'\"')]);}return a}var _n={\"*\":function(){return []},array:Wr,boolean:function(t){var e=t.value,r=t.key,n=Dr(e);return \"boolean\"!==n?[new Pt(r,e,\"boolean expected, \"+n+\" found\")]:[]},number:Qr,color:function(t){var e=t.key,r=t.value,n=Dr(r);return \"string\"!==n?[new Pt(e,r,\"color expected, \"+n+\" found\")]:null===Qt(r)?[new Pt(e,r,'color expected, \"'+r+'\" found')]:[]},constants:Mt,enum:rn,filter:fn,function:tn,layer:vn,object:$r,source:bn,light:wn,string:gn,formatted:function(t){return 0===gn(t).length?[]:en(t)},resolvedImage:function(t){return 0===gn(t).length?[]:en(t)}};function An(t){var e=t.value,r=t.valueSpec,n=t.styleSpec;return r.expression&&Lr(Tt(e))?tn(t):r.expression&&Gr(Vt(e))?en(t):r.type&&_n[r.type]?_n[r.type](t):$r(Bt({},t,{valueSpec:r.type?n[r.type]:r}))}function Sn(t){var e=t.value,r=t.key,n=gn(t);return n.length||(-1===e.indexOf(\"{fontstack}\")&&n.push(new Pt(r,e,'\"glyphs\" url must include a \"{fontstack}\" token')),-1===e.indexOf(\"{range}\")&&n.push(new Pt(r,e,'\"glyphs\" url must include a \"{range}\" token'))),n}function kn(t,e){void 0===e&&(e=Et);var r=[];return r=r.concat(An({key:\"\",value:t,valueSpec:e.$root,styleSpec:e,style:t,objectElementValidators:{glyphs:Sn,\"*\":function(){return []}}})),t.constants&&(r=r.concat(Mt({key:\"constants\",value:t.constants,style:t,styleSpec:e}))),In(r)}function In(t){return [].concat(t).sort((function(t,e){return t.line-e.line}))}function zn(t){return function(){for(var e=[],r=arguments.length;r--;)e[r]=arguments[r];return In(t.apply(this,e))}}kn.source=zn(bn),kn.light=zn(wn),kn.layer=zn(vn),kn.filter=zn(fn),kn.paintProperty=zn(dn),kn.layoutProperty=zn(mn);var Cn=kn,En=Cn.light,Pn=Cn.paintProperty,Mn=Cn.layoutProperty;function Bn(t,e){var r=!1;if(e&&e.length)for(var n=0,i=e;n<i.length;n+=1)t.fire(new zt(new Error(i[n].message))),r=!0;return r}var Tn=Vn;function Vn(t,e,r){var n=this.cells=[];if(t instanceof ArrayBuffer){this.arrayBuffer=t;var i=new Int32Array(this.arrayBuffer);t=i[0],this.d=(e=i[1])+2*(r=i[2]);for(var a=0;a<this.d*this.d;a++){var o=i[3+a],s=i[3+a+1];n.push(o===s?null:i.subarray(o,s));}var u=i[3+n.length+1];this.keys=i.subarray(i[3+n.length],u),this.bboxes=i.subarray(u),this.insert=this._insertReadonly;}else {this.d=e+2*r;for(var l=0;l<this.d*this.d;l++)n.push([]);this.keys=[],this.bboxes=[];}this.n=e,this.extent=t,this.padding=r,this.scale=e/t,this.uid=0;var p=r/e*t;this.min=-p,this.max=t+p;}Vn.prototype.insert=function(t,e,r,n,i){this._forEachCell(e,r,n,i,this._insertCell,this.uid++),this.keys.push(t),this.bboxes.push(e),this.bboxes.push(r),this.bboxes.push(n),this.bboxes.push(i);},Vn.prototype._insertReadonly=function(){throw \"Cannot insert into a GridIndex created from an ArrayBuffer.\"},Vn.prototype._insertCell=function(t,e,r,n,i,a){this.cells[i].push(a);},Vn.prototype.query=function(t,e,r,n,i){var a=this.min,o=this.max;if(t<=a&&e<=a&&o<=r&&o<=n&&!i)return Array.prototype.slice.call(this.keys);var s=[];return this._forEachCell(t,e,r,n,this._queryCell,s,{},i),s},Vn.prototype._queryCell=function(t,e,r,n,i,a,o,s){var u=this.cells[i];if(null!==u)for(var l=this.keys,p=this.bboxes,c=0;c<u.length;c++){var h=u[c];if(void 0===o[h]){var f=4*h;(s?s(p[f+0],p[f+1],p[f+2],p[f+3]):t<=p[f+2]&&e<=p[f+3]&&r>=p[f+0]&&n>=p[f+1])?(o[h]=!0,a.push(l[h])):o[h]=!1;}}},Vn.prototype._forEachCell=function(t,e,r,n,i,a,o,s){for(var u=this._convertToCellCoord(t),l=this._convertToCellCoord(e),p=this._convertToCellCoord(r),c=this._convertToCellCoord(n),h=u;h<=p;h++)for(var f=l;f<=c;f++){var y=this.d*f+h;if((!s||s(this._convertFromCellCoord(h),this._convertFromCellCoord(f),this._convertFromCellCoord(h+1),this._convertFromCellCoord(f+1)))&&i.call(this,t,e,r,n,y,a,o,s))return}},Vn.prototype._convertFromCellCoord=function(t){return (t-this.padding)/this.scale},Vn.prototype._convertToCellCoord=function(t){return Math.max(0,Math.min(this.d-1,Math.floor(t*this.scale)+this.padding))},Vn.prototype.toArrayBuffer=function(){if(this.arrayBuffer)return this.arrayBuffer;for(var t=this.cells,e=3+this.cells.length+1+1,r=0,n=0;n<this.cells.length;n++)r+=this.cells[n].length;var i=new Int32Array(e+r+this.keys.length+this.bboxes.length);i[0]=this.extent,i[1]=this.n,i[2]=this.padding;for(var a=e,o=0;o<t.length;o++){var s=t[o];i[3+o]=a,i.set(s,a),a+=s.length;}return i[3+t.length]=a,i.set(this.keys,a),i[3+t.length+1]=a+=this.keys.length,i.set(this.bboxes,a),a+=this.bboxes.length,i.buffer};var Fn=o.ImageData,Dn=o.ImageBitmap,Ln={};function On(t,e,r){void 0===r&&(r={}),Object.defineProperty(e,\"_classRegistryKey\",{value:t,writeable:!1}),Ln[t]={klass:e,omit:r.omit||[],shallow:r.shallow||[]};}for(var Rn in On(\"Object\",Object),Tn.serialize=function(t,e){var r=t.toArrayBuffer();return e&&e.push(r),{buffer:r}},Tn.deserialize=function(t){return new Tn(t.buffer)},On(\"Grid\",Tn),On(\"Color\",te),On(\"Error\",Error),On(\"ResolvedImage\",ie),On(\"StylePropertyFunction\",Yr),On(\"StyleExpression\",Kr,{omit:[\"_evaluator\"]}),On(\"ZoomDependentExpression\",Jr),On(\"ZoomConstantExpression\",Xr),On(\"CompoundExpression\",xe,{omit:[\"_evaluate\"]}),Ir)Ir[Rn]._classRegistryKey||On(\"Expression_\"+Rn,Ir[Rn]);function Un(t){return t&&\"undefined\"!=typeof ArrayBuffer&&(t instanceof ArrayBuffer||t.constructor&&\"ArrayBuffer\"===t.constructor.name)}function jn(t){return Dn&&t instanceof Dn}function qn(t,e){if(null==t||\"boolean\"==typeof t||\"number\"==typeof t||\"string\"==typeof t||t instanceof Boolean||t instanceof Number||t instanceof String||t instanceof Date||t instanceof RegExp)return t;if(Un(t)||jn(t))return e&&e.push(t),t;if(ArrayBuffer.isView(t)){var r=t;return e&&e.push(r.buffer),r}if(t instanceof Fn)return e&&e.push(t.data.buffer),t;if(Array.isArray(t)){for(var n=[],i=0,a=t;i<a.length;i+=1)n.push(qn(a[i],e));return n}if(\"object\"==typeof t){var o=t.constructor,s=o._classRegistryKey;if(!s)throw new Error(\"can't serialize object of unregistered class\");var u=o.serialize?o.serialize(t,e):{};if(!o.serialize){for(var l in t)if(t.hasOwnProperty(l)&&!(Ln[s].omit.indexOf(l)>=0)){var p=t[l];u[l]=Ln[s].shallow.indexOf(l)>=0?p:qn(p,e);}t instanceof Error&&(u.message=t.message);}if(u.$name)throw new Error(\"$name property is reserved for worker serialization logic.\");return \"Object\"!==s&&(u.$name=s),u}throw new Error(\"can't serialize object of type \"+typeof t)}function Nn(t){if(null==t||\"boolean\"==typeof t||\"number\"==typeof t||\"string\"==typeof t||t instanceof Boolean||t instanceof Number||t instanceof String||t instanceof Date||t instanceof RegExp||Un(t)||jn(t)||ArrayBuffer.isView(t)||t instanceof Fn)return t;if(Array.isArray(t))return t.map(Nn);if(\"object\"==typeof t){var e=t.$name||\"Object\",r=Ln[e].klass;if(!r)throw new Error(\"can't deserialize unregistered class \"+e);if(r.deserialize)return r.deserialize(t);for(var n=Object.create(r.prototype),i=0,a=Object.keys(t);i<a.length;i+=1){var o=a[i];if(\"$name\"!==o){var s=t[o];n[o]=Ln[e].shallow.indexOf(o)>=0?s:Nn(s);}}return n}throw new Error(\"can't deserialize object of type \"+typeof t)}var Kn=function(){this.first=!0;};Kn.prototype.update=function(t,e){var r=Math.floor(t);return this.first?(this.first=!1,this.lastIntegerZoom=r,this.lastIntegerZoomTime=0,this.lastZoom=t,this.lastFloorZoom=r,!0):(this.lastFloorZoom>r?(this.lastIntegerZoom=r+1,this.lastIntegerZoomTime=e):this.lastFloorZoom<r&&(this.lastIntegerZoom=r,this.lastIntegerZoomTime=e),t!==this.lastZoom&&(this.lastZoom=t,this.lastFloorZoom=r,!0))};var Gn={\"Latin-1 Supplement\":function(t){return t>=128&&t<=255},Arabic:function(t){return t>=1536&&t<=1791},\"Arabic Supplement\":function(t){return t>=1872&&t<=1919},\"Arabic Extended-A\":function(t){return t>=2208&&t<=2303},\"Hangul Jamo\":function(t){return t>=4352&&t<=4607},\"Unified Canadian Aboriginal Syllabics\":function(t){return t>=5120&&t<=5759},Khmer:function(t){return t>=6016&&t<=6143},\"Unified Canadian Aboriginal Syllabics Extended\":function(t){return t>=6320&&t<=6399},\"General Punctuation\":function(t){return t>=8192&&t<=8303},\"Letterlike Symbols\":function(t){return t>=8448&&t<=8527},\"Number Forms\":function(t){return t>=8528&&t<=8591},\"Miscellaneous Technical\":function(t){return t>=8960&&t<=9215},\"Control Pictures\":function(t){return t>=9216&&t<=9279},\"Optical Character Recognition\":function(t){return t>=9280&&t<=9311},\"Enclosed Alphanumerics\":function(t){return t>=9312&&t<=9471},\"Geometric Shapes\":function(t){return t>=9632&&t<=9727},\"Miscellaneous Symbols\":function(t){return t>=9728&&t<=9983},\"Miscellaneous Symbols and Arrows\":function(t){return t>=11008&&t<=11263},\"CJK Radicals Supplement\":function(t){return t>=11904&&t<=12031},\"Kangxi Radicals\":function(t){return t>=12032&&t<=12255},\"Ideographic Description Characters\":function(t){return t>=12272&&t<=12287},\"CJK Symbols and Punctuation\":function(t){return t>=12288&&t<=12351},Hiragana:function(t){return t>=12352&&t<=12447},Katakana:function(t){return t>=12448&&t<=12543},Bopomofo:function(t){return t>=12544&&t<=12591},\"Hangul Compatibility Jamo\":function(t){return t>=12592&&t<=12687},Kanbun:function(t){return t>=12688&&t<=12703},\"Bopomofo Extended\":function(t){return t>=12704&&t<=12735},\"CJK Strokes\":function(t){return t>=12736&&t<=12783},\"Katakana Phonetic Extensions\":function(t){return t>=12784&&t<=12799},\"Enclosed CJK Letters and Months\":function(t){return t>=12800&&t<=13055},\"CJK Compatibility\":function(t){return t>=13056&&t<=13311},\"CJK Unified Ideographs Extension A\":function(t){return t>=13312&&t<=19903},\"Yijing Hexagram Symbols\":function(t){return t>=19904&&t<=19967},\"CJK Unified Ideographs\":function(t){return t>=19968&&t<=40959},\"Yi Syllables\":function(t){return t>=40960&&t<=42127},\"Yi Radicals\":function(t){return t>=42128&&t<=42191},\"Hangul Jamo Extended-A\":function(t){return t>=43360&&t<=43391},\"Hangul Syllables\":function(t){return t>=44032&&t<=55215},\"Hangul Jamo Extended-B\":function(t){return t>=55216&&t<=55295},\"Private Use Area\":function(t){return t>=57344&&t<=63743},\"CJK Compatibility Ideographs\":function(t){return t>=63744&&t<=64255},\"Arabic Presentation Forms-A\":function(t){return t>=64336&&t<=65023},\"Vertical Forms\":function(t){return t>=65040&&t<=65055},\"CJK Compatibility Forms\":function(t){return t>=65072&&t<=65103},\"Small Form Variants\":function(t){return t>=65104&&t<=65135},\"Arabic Presentation Forms-B\":function(t){return t>=65136&&t<=65279},\"Halfwidth and Fullwidth Forms\":function(t){return t>=65280&&t<=65519}};function Zn(t){for(var e=0,r=t;e<r.length;e+=1)if(Xn(r[e].charCodeAt(0)))return !0;return !1}function Xn(t){return !(746!==t&&747!==t&&(t<4352||!(Gn[\"Bopomofo Extended\"](t)||Gn.Bopomofo(t)||Gn[\"CJK Compatibility Forms\"](t)&&!(t>=65097&&t<=65103)||Gn[\"CJK Compatibility Ideographs\"](t)||Gn[\"CJK Compatibility\"](t)||Gn[\"CJK Radicals Supplement\"](t)||Gn[\"CJK Strokes\"](t)||!(!Gn[\"CJK Symbols and Punctuation\"](t)||t>=12296&&t<=12305||t>=12308&&t<=12319||12336===t)||Gn[\"CJK Unified Ideographs Extension A\"](t)||Gn[\"CJK Unified Ideographs\"](t)||Gn[\"Enclosed CJK Letters and Months\"](t)||Gn[\"Hangul Compatibility Jamo\"](t)||Gn[\"Hangul Jamo Extended-A\"](t)||Gn[\"Hangul Jamo Extended-B\"](t)||Gn[\"Hangul Jamo\"](t)||Gn[\"Hangul Syllables\"](t)||Gn.Hiragana(t)||Gn[\"Ideographic Description Characters\"](t)||Gn.Kanbun(t)||Gn[\"Kangxi Radicals\"](t)||Gn[\"Katakana Phonetic Extensions\"](t)||Gn.Katakana(t)&&12540!==t||!(!Gn[\"Halfwidth and Fullwidth Forms\"](t)||65288===t||65289===t||65293===t||t>=65306&&t<=65310||65339===t||65341===t||65343===t||t>=65371&&t<=65503||65507===t||t>=65512&&t<=65519)||!(!Gn[\"Small Form Variants\"](t)||t>=65112&&t<=65118||t>=65123&&t<=65126)||Gn[\"Unified Canadian Aboriginal Syllabics\"](t)||Gn[\"Unified Canadian Aboriginal Syllabics Extended\"](t)||Gn[\"Vertical Forms\"](t)||Gn[\"Yijing Hexagram Symbols\"](t)||Gn[\"Yi Syllables\"](t)||Gn[\"Yi Radicals\"](t))))}function Jn(t){return !(Xn(t)||function(t){return !!(Gn[\"Latin-1 Supplement\"](t)&&(167===t||169===t||174===t||177===t||188===t||189===t||190===t||215===t||247===t)||Gn[\"General Punctuation\"](t)&&(8214===t||8224===t||8225===t||8240===t||8241===t||8251===t||8252===t||8258===t||8263===t||8264===t||8265===t||8273===t)||Gn[\"Letterlike Symbols\"](t)||Gn[\"Number Forms\"](t)||Gn[\"Miscellaneous Technical\"](t)&&(t>=8960&&t<=8967||t>=8972&&t<=8991||t>=8996&&t<=9e3||9003===t||t>=9085&&t<=9114||t>=9150&&t<=9165||9167===t||t>=9169&&t<=9179||t>=9186&&t<=9215)||Gn[\"Control Pictures\"](t)&&9251!==t||Gn[\"Optical Character Recognition\"](t)||Gn[\"Enclosed Alphanumerics\"](t)||Gn[\"Geometric Shapes\"](t)||Gn[\"Miscellaneous Symbols\"](t)&&!(t>=9754&&t<=9759)||Gn[\"Miscellaneous Symbols and Arrows\"](t)&&(t>=11026&&t<=11055||t>=11088&&t<=11097||t>=11192&&t<=11243)||Gn[\"CJK Symbols and Punctuation\"](t)||Gn.Katakana(t)||Gn[\"Private Use Area\"](t)||Gn[\"CJK Compatibility Forms\"](t)||Gn[\"Small Form Variants\"](t)||Gn[\"Halfwidth and Fullwidth Forms\"](t)||8734===t||8756===t||8757===t||t>=9984&&t<=10087||t>=10102&&t<=10131||65532===t||65533===t)}(t))}function Hn(t){return t>=1424&&t<=2303||Gn[\"Arabic Presentation Forms-A\"](t)||Gn[\"Arabic Presentation Forms-B\"](t)}function Yn(t,e){return !(!e&&Hn(t)||t>=2304&&t<=3583||t>=3840&&t<=4255||Gn.Khmer(t))}function $n(t){for(var e=0,r=t;e<r.length;e+=1)if(Hn(r[e].charCodeAt(0)))return !0;return !1}var Wn=null,Qn=\"unavailable\",ti=null,ei=function(t){t&&\"string\"==typeof t&&t.indexOf(\"NetworkError\")>-1&&(Qn=\"error\"),Wn&&Wn(t);};function ri(){ni.fire(new It(\"pluginStateChange\",{pluginStatus:Qn,pluginURL:ti}));}var ni=new Ct,ii=function(){return Qn},ai=function(){if(\"deferred\"!==Qn||!ti)throw new Error(\"rtl-text-plugin cannot be downloaded unless a pluginURL is specified\");Qn=\"loading\",ri(),ti&&bt({url:ti},(function(t){t?ei(t):(Qn=\"loaded\",ri());}));},oi={applyArabicShaping:null,processBidirectionalText:null,processStyledBidirectionalText:null,isLoaded:function(){return \"loaded\"===Qn||null!=oi.applyArabicShaping},isLoading:function(){return \"loading\"===Qn},setState:function(t){Qn=t.pluginStatus,ti=t.pluginURL;},isParsed:function(){return null!=oi.applyArabicShaping&&null!=oi.processBidirectionalText&&null!=oi.processStyledBidirectionalText},getPluginURL:function(){return ti}},si=function(t,e){this.zoom=t,e?(this.now=e.now,this.fadeDuration=e.fadeDuration,this.zoomHistory=e.zoomHistory,this.transition=e.transition):(this.now=0,this.fadeDuration=0,this.zoomHistory=new Kn,this.transition={});};si.prototype.isSupportedScript=function(t){return function(t,e){for(var r=0,n=t;r<n.length;r+=1)if(!Yn(n[r].charCodeAt(0),e))return !1;return !0}(t,oi.isLoaded())},si.prototype.crossFadingFactor=function(){return 0===this.fadeDuration?1:Math.min((this.now-this.zoomHistory.lastIntegerZoomTime)/this.fadeDuration,1)},si.prototype.getCrossfadeParameters=function(){var t=this.zoom,e=t-Math.floor(t),r=this.crossFadingFactor();return t>this.zoomHistory.lastIntegerZoom?{fromScale:2,toScale:1,t:e+(1-e)*r}:{fromScale:.5,toScale:1,t:1-(1-r)*e}};var ui=function(t,e){this.property=t,this.value=e,this.expression=function(t,e){if(Lr(t))return new Yr(t,e);if(Gr(t)){var r=Hr(t,e);if(\"error\"===r.result)throw new Error(r.value.map((function(t){return t.key+\": \"+t.message})).join(\", \"));return r.value}var n=t;return \"string\"==typeof t&&\"color\"===e.type&&(n=te.parse(t)),{kind:\"constant\",evaluate:function(){return n}}}(void 0===e?t.specification.default:e,t.specification);};ui.prototype.isDataDriven=function(){return \"source\"===this.expression.kind||\"composite\"===this.expression.kind},ui.prototype.possiblyEvaluate=function(t,e,r){return this.property.possiblyEvaluate(this,t,e,r)};var li=function(t){this.property=t,this.value=new ui(t,void 0);};li.prototype.transitioned=function(t,e){return new ci(this.property,this.value,e,h({},t.transition,this.transition),t.now)},li.prototype.untransitioned=function(){return new ci(this.property,this.value,null,{},0)};var pi=function(t){this._properties=t,this._values=Object.create(t.defaultTransitionablePropertyValues);};pi.prototype.getValue=function(t){return w(this._values[t].value.value)},pi.prototype.setValue=function(t,e){this._values.hasOwnProperty(t)||(this._values[t]=new li(this._values[t].property)),this._values[t].value=new ui(this._values[t].property,null===e?void 0:w(e));},pi.prototype.getTransition=function(t){return w(this._values[t].transition)},pi.prototype.setTransition=function(t,e){this._values.hasOwnProperty(t)||(this._values[t]=new li(this._values[t].property)),this._values[t].transition=w(e)||void 0;},pi.prototype.serialize=function(){for(var t={},e=0,r=Object.keys(this._values);e<r.length;e+=1){var n=r[e],i=this.getValue(n);void 0!==i&&(t[n]=i);var a=this.getTransition(n);void 0!==a&&(t[n+\"-transition\"]=a);}return t},pi.prototype.transitioned=function(t,e){for(var r=new hi(this._properties),n=0,i=Object.keys(this._values);n<i.length;n+=1){var a=i[n];r._values[a]=this._values[a].transitioned(t,e._values[a]);}return r},pi.prototype.untransitioned=function(){for(var t=new hi(this._properties),e=0,r=Object.keys(this._values);e<r.length;e+=1){var n=r[e];t._values[n]=this._values[n].untransitioned();}return t};var ci=function(t,e,r,n,i){this.property=t,this.value=e,this.begin=i+n.delay||0,this.end=this.begin+n.duration||0,t.specification.transition&&(n.delay||n.duration)&&(this.prior=r);};ci.prototype.possiblyEvaluate=function(t,e,r){var n=t.now||0,i=this.value.possiblyEvaluate(t,e,r),a=this.prior;if(a){if(n>this.end)return this.prior=null,i;if(this.value.isDataDriven())return this.prior=null,i;if(n<this.begin)return a.possiblyEvaluate(t,e,r);var o=(n-this.begin)/(this.end-this.begin);return this.property.interpolate(a.possiblyEvaluate(t,e,r),i,function(t){if(t<=0)return 0;if(t>=1)return 1;var e=t*t,r=e*t;return 4*(t<.5?r:3*(t-e)+r-.75)}(o))}return i};var hi=function(t){this._properties=t,this._values=Object.create(t.defaultTransitioningPropertyValues);};hi.prototype.possiblyEvaluate=function(t,e,r){for(var n=new di(this._properties),i=0,a=Object.keys(this._values);i<a.length;i+=1){var o=a[i];n._values[o]=this._values[o].possiblyEvaluate(t,e,r);}return n},hi.prototype.hasTransition=function(){for(var t=0,e=Object.keys(this._values);t<e.length;t+=1)if(this._values[e[t]].prior)return !0;return !1};var fi=function(t){this._properties=t,this._values=Object.create(t.defaultPropertyValues);};fi.prototype.getValue=function(t){return w(this._values[t].value)},fi.prototype.setValue=function(t,e){this._values[t]=new ui(this._values[t].property,null===e?void 0:w(e));},fi.prototype.serialize=function(){for(var t={},e=0,r=Object.keys(this._values);e<r.length;e+=1){var n=r[e],i=this.getValue(n);void 0!==i&&(t[n]=i);}return t},fi.prototype.possiblyEvaluate=function(t,e,r){for(var n=new di(this._properties),i=0,a=Object.keys(this._values);i<a.length;i+=1){var o=a[i];n._values[o]=this._values[o].possiblyEvaluate(t,e,r);}return n};var yi=function(t,e,r){this.property=t,this.value=e,this.parameters=r;};yi.prototype.isConstant=function(){return \"constant\"===this.value.kind},yi.prototype.constantOr=function(t){return \"constant\"===this.value.kind?this.value.value:t},yi.prototype.evaluate=function(t,e,r,n){return this.property.evaluate(this.value,this.parameters,t,e,r,n)};var di=function(t){this._properties=t,this._values=Object.create(t.defaultPossiblyEvaluatedValues);};di.prototype.get=function(t){return this._values[t]};var mi=function(t){this.specification=t;};mi.prototype.possiblyEvaluate=function(t,e){return t.expression.evaluate(e)},mi.prototype.interpolate=function(t,e,r){var n=Ge[this.specification.type];return n?n(t,e,r):t};var vi=function(t,e){this.specification=t,this.overrides=e;};vi.prototype.possiblyEvaluate=function(t,e,r,n){return new yi(this,\"constant\"===t.expression.kind||\"camera\"===t.expression.kind?{kind:\"constant\",value:t.expression.evaluate(e,null,{},r,n)}:t.expression,e)},vi.prototype.interpolate=function(t,e,r){if(\"constant\"!==t.value.kind||\"constant\"!==e.value.kind)return t;if(void 0===t.value.value||void 0===e.value.value)return new yi(this,{kind:\"constant\",value:void 0},t.parameters);var n=Ge[this.specification.type];return n?new yi(this,{kind:\"constant\",value:n(t.value.value,e.value.value,r)},t.parameters):t},vi.prototype.evaluate=function(t,e,r,n,i,a){return \"constant\"===t.kind?t.value:t.evaluate(e,r,n,i,a)};var gi=function(t){function e(){t.apply(this,arguments);}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e,e.prototype.possiblyEvaluate=function(t,e,r,n){if(void 0===t.value)return new yi(this,{kind:\"constant\",value:void 0},e);if(\"constant\"===t.expression.kind){var i=t.expression.evaluate(e,null,{},r,n),a=\"resolvedImage\"===t.property.specification.type&&\"string\"!=typeof i?i.name:i,o=this._calculate(a,a,a,e);return new yi(this,{kind:\"constant\",value:o},e)}if(\"camera\"===t.expression.kind){var s=this._calculate(t.expression.evaluate({zoom:e.zoom-1}),t.expression.evaluate({zoom:e.zoom}),t.expression.evaluate({zoom:e.zoom+1}),e);return new yi(this,{kind:\"constant\",value:s},e)}return new yi(this,t.expression,e)},e.prototype.evaluate=function(t,e,r,n,i,a){if(\"source\"===t.kind){var o=t.evaluate(e,r,n,i,a);return this._calculate(o,o,o,e)}return \"composite\"===t.kind?this._calculate(t.evaluate({zoom:Math.floor(e.zoom)-1},r,n),t.evaluate({zoom:Math.floor(e.zoom)},r,n),t.evaluate({zoom:Math.floor(e.zoom)+1},r,n),e):t.value},e.prototype._calculate=function(t,e,r,n){return n.zoom>n.zoomHistory.lastIntegerZoom?{from:t,to:e}:{from:r,to:e}},e.prototype.interpolate=function(t){return t},e}(vi),xi=function(t){this.specification=t;};xi.prototype.possiblyEvaluate=function(t,e,r,n){if(void 0!==t.value){if(\"constant\"===t.expression.kind){var i=t.expression.evaluate(e,null,{},r,n);return this._calculate(i,i,i,e)}return this._calculate(t.expression.evaluate(new si(Math.floor(e.zoom-1),e)),t.expression.evaluate(new si(Math.floor(e.zoom),e)),t.expression.evaluate(new si(Math.floor(e.zoom+1),e)),e)}},xi.prototype._calculate=function(t,e,r,n){return n.zoom>n.zoomHistory.lastIntegerZoom?{from:t,to:e}:{from:r,to:e}},xi.prototype.interpolate=function(t){return t};var bi=function(t){this.specification=t;};bi.prototype.possiblyEvaluate=function(t,e,r,n){return !!t.expression.evaluate(e,null,{},r,n)},bi.prototype.interpolate=function(){return !1};var wi=function(t){for(var e in this.properties=t,this.defaultPropertyValues={},this.defaultTransitionablePropertyValues={},this.defaultTransitioningPropertyValues={},this.defaultPossiblyEvaluatedValues={},this.overridableProperties=[],t){var r=t[e];r.specification.overridable&&this.overridableProperties.push(e);var n=this.defaultPropertyValues[e]=new ui(r,void 0),i=this.defaultTransitionablePropertyValues[e]=new li(r);this.defaultTransitioningPropertyValues[e]=i.untransitioned(),this.defaultPossiblyEvaluatedValues[e]=n.possiblyEvaluate({});}};On(\"DataDrivenProperty\",vi),On(\"DataConstantProperty\",mi),On(\"CrossFadedDataDrivenProperty\",gi),On(\"CrossFadedProperty\",xi),On(\"ColorRampProperty\",bi);var _i=function(t){function e(e,r){if(t.call(this),this.id=e.id,this.type=e.type,this._featureFilter={filter:function(){return !0},needGeometry:!1},\"custom\"!==e.type&&(this.metadata=(e=e).metadata,this.minzoom=e.minzoom,this.maxzoom=e.maxzoom,\"background\"!==e.type&&(this.source=e.source,this.sourceLayer=e[\"source-layer\"],this.filter=e.filter),r.layout&&(this._unevaluatedLayout=new fi(r.layout)),r.paint)){for(var n in this._transitionablePaint=new pi(r.paint),e.paint)this.setPaintProperty(n,e.paint[n],{validate:!1});for(var i in e.layout)this.setLayoutProperty(i,e.layout[i],{validate:!1});this._transitioningPaint=this._transitionablePaint.untransitioned(),this.paint=new di(r.paint);}}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e,e.prototype.getCrossfadeParameters=function(){return this._crossfadeParameters},e.prototype.getLayoutProperty=function(t){return \"visibility\"===t?this.visibility:this._unevaluatedLayout.getValue(t)},e.prototype.setLayoutProperty=function(t,e,r){void 0===r&&(r={}),null!=e&&this._validate(Mn,\"layers.\"+this.id+\".layout.\"+t,t,e,r)||(\"visibility\"!==t?this._unevaluatedLayout.setValue(t,e):this.visibility=e);},e.prototype.getPaintProperty=function(t){return g(t,\"-transition\")?this._transitionablePaint.getTransition(t.slice(0,-\"-transition\".length)):this._transitionablePaint.getValue(t)},e.prototype.setPaintProperty=function(t,e,r){if(void 0===r&&(r={}),null!=e&&this._validate(Pn,\"layers.\"+this.id+\".paint.\"+t,t,e,r))return !1;if(g(t,\"-transition\"))return this._transitionablePaint.setTransition(t.slice(0,-\"-transition\".length),e||void 0),!1;var n=this._transitionablePaint._values[t],i=\"cross-faded-data-driven\"===n.property.specification[\"property-type\"],a=n.value.isDataDriven(),o=n.value;this._transitionablePaint.setValue(t,e),this._handleSpecialPaintPropertyUpdate(t);var s=this._transitionablePaint._values[t].value;return s.isDataDriven()||a||i||this._handleOverridablePaintPropertyUpdate(t,o,s)},e.prototype._handleSpecialPaintPropertyUpdate=function(t){},e.prototype._handleOverridablePaintPropertyUpdate=function(t,e,r){return !1},e.prototype.isHidden=function(t){return !!(this.minzoom&&t<this.minzoom)||!!(this.maxzoom&&t>=this.maxzoom)||\"none\"===this.visibility},e.prototype.updateTransitions=function(t){this._transitioningPaint=this._transitionablePaint.transitioned(t,this._transitioningPaint);},e.prototype.hasTransition=function(){return this._transitioningPaint.hasTransition()},e.prototype.recalculate=function(t,e){t.getCrossfadeParameters&&(this._crossfadeParameters=t.getCrossfadeParameters()),this._unevaluatedLayout&&(this.layout=this._unevaluatedLayout.possiblyEvaluate(t,void 0,e)),this.paint=this._transitioningPaint.possiblyEvaluate(t,void 0,e);},e.prototype.serialize=function(){var t={id:this.id,type:this.type,source:this.source,\"source-layer\":this.sourceLayer,metadata:this.metadata,minzoom:this.minzoom,maxzoom:this.maxzoom,filter:this.filter,layout:this._unevaluatedLayout&&this._unevaluatedLayout.serialize(),paint:this._transitionablePaint&&this._transitionablePaint.serialize()};return this.visibility&&(t.layout=t.layout||{},t.layout.visibility=this.visibility),b(t,(function(t,e){return !(void 0===t||\"layout\"===e&&!Object.keys(t).length||\"paint\"===e&&!Object.keys(t).length)}))},e.prototype._validate=function(t,e,r,n,i){return void 0===i&&(i={}),(!i||!1!==i.validate)&&Bn(this,t.call(Cn,{key:e,layerType:this.type,objectKey:r,value:n,styleSpec:Et,style:{glyphs:!0,sprite:!0}}))},e.prototype.is3D=function(){return !1},e.prototype.isTileClipped=function(){return !1},e.prototype.hasOffscreenPass=function(){return !1},e.prototype.resize=function(){},e.prototype.isStateDependent=function(){for(var t in this.paint._values){var e=this.paint.get(t);if(e instanceof yi&&Tr(e.property.specification)&&(\"source\"===e.value.kind||\"composite\"===e.value.kind)&&e.value.isStateDependent)return !0}return !1},e}(Ct),Ai={Int8:Int8Array,Uint8:Uint8Array,Int16:Int16Array,Uint16:Uint16Array,Int32:Int32Array,Uint32:Uint32Array,Float32:Float32Array},Si=function(t,e){this._structArray=t,this._pos1=e*this.size,this._pos2=this._pos1/2,this._pos4=this._pos1/4,this._pos8=this._pos1/8;},ki=function(){this.isTransferred=!1,this.capacity=-1,this.resize(0);};function Ii(t,e){void 0===e&&(e=1);var r=0,n=0;return {members:t.map((function(t){var i=Ai[t.type].BYTES_PER_ELEMENT,a=r=zi(r,Math.max(e,i)),o=t.components||1;return n=Math.max(n,i),r+=i*o,{name:t.name,type:t.type,components:o,offset:a}})),size:zi(r,Math.max(n,e)),alignment:e}}function zi(t,e){return Math.ceil(t/e)*e}ki.serialize=function(t,e){return t._trim(),e&&(t.isTransferred=!0,e.push(t.arrayBuffer)),{length:t.length,arrayBuffer:t.arrayBuffer}},ki.deserialize=function(t){var e=Object.create(this.prototype);return e.arrayBuffer=t.arrayBuffer,e.length=t.length,e.capacity=t.arrayBuffer.byteLength/e.bytesPerElement,e._refreshViews(),e},ki.prototype._trim=function(){this.length!==this.capacity&&(this.capacity=this.length,this.arrayBuffer=this.arrayBuffer.slice(0,this.length*this.bytesPerElement),this._refreshViews());},ki.prototype.clear=function(){this.length=0;},ki.prototype.resize=function(t){this.reserve(t),this.length=t;},ki.prototype.reserve=function(t){if(t>this.capacity){this.capacity=Math.max(t,Math.floor(5*this.capacity),128),this.arrayBuffer=new ArrayBuffer(this.capacity*this.bytesPerElement);var e=this.uint8;this._refreshViews(),e&&this.uint8.set(e);}},ki.prototype._refreshViews=function(){throw new Error(\"_refreshViews() must be implemented by each concrete StructArray layout\")};var Ci=function(t){function e(){t.apply(this,arguments);}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer);},e.prototype.emplaceBack=function(t,e){var r=this.length;return this.resize(r+1),this.emplace(r,t,e)},e.prototype.emplace=function(t,e,r){var n=2*t;return this.int16[n+0]=e,this.int16[n+1]=r,t},e}(ki);Ci.prototype.bytesPerElement=4,On(\"StructArrayLayout2i4\",Ci);var Ei=function(t){function e(){t.apply(this,arguments);}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer);},e.prototype.emplaceBack=function(t,e,r,n){var i=this.length;return this.resize(i+1),this.emplace(i,t,e,r,n)},e.prototype.emplace=function(t,e,r,n,i){var a=4*t;return this.int16[a+0]=e,this.int16[a+1]=r,this.int16[a+2]=n,this.int16[a+3]=i,t},e}(ki);Ei.prototype.bytesPerElement=8,On(\"StructArrayLayout4i8\",Ei);var Pi=function(t){function e(){t.apply(this,arguments);}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer);},e.prototype.emplaceBack=function(t,e,r,n,i,a){var o=this.length;return this.resize(o+1),this.emplace(o,t,e,r,n,i,a)},e.prototype.emplace=function(t,e,r,n,i,a,o){var s=6*t;return this.int16[s+0]=e,this.int16[s+1]=r,this.int16[s+2]=n,this.int16[s+3]=i,this.int16[s+4]=a,this.int16[s+5]=o,t},e}(ki);Pi.prototype.bytesPerElement=12,On(\"StructArrayLayout2i4i12\",Pi);var Mi=function(t){function e(){t.apply(this,arguments);}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer);},e.prototype.emplaceBack=function(t,e,r,n,i,a){var o=this.length;return this.resize(o+1),this.emplace(o,t,e,r,n,i,a)},e.prototype.emplace=function(t,e,r,n,i,a,o){var s=4*t,u=8*t;return this.int16[s+0]=e,this.int16[s+1]=r,this.uint8[u+4]=n,this.uint8[u+5]=i,this.uint8[u+6]=a,this.uint8[u+7]=o,t},e}(ki);Mi.prototype.bytesPerElement=8,On(\"StructArrayLayout2i4ub8\",Mi);var Bi=function(t){function e(){t.apply(this,arguments);}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer);},e.prototype.emplaceBack=function(t,e){var r=this.length;return this.resize(r+1),this.emplace(r,t,e)},e.prototype.emplace=function(t,e,r){var n=2*t;return this.float32[n+0]=e,this.float32[n+1]=r,t},e}(ki);Bi.prototype.bytesPerElement=8,On(\"StructArrayLayout2f8\",Bi);var Ti=function(t){function e(){t.apply(this,arguments);}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer);},e.prototype.emplaceBack=function(t,e,r,n,i,a,o,s,u,l){var p=this.length;return this.resize(p+1),this.emplace(p,t,e,r,n,i,a,o,s,u,l)},e.prototype.emplace=function(t,e,r,n,i,a,o,s,u,l,p){var c=10*t;return this.uint16[c+0]=e,this.uint16[c+1]=r,this.uint16[c+2]=n,this.uint16[c+3]=i,this.uint16[c+4]=a,this.uint16[c+5]=o,this.uint16[c+6]=s,this.uint16[c+7]=u,this.uint16[c+8]=l,this.uint16[c+9]=p,t},e}(ki);Ti.prototype.bytesPerElement=20,On(\"StructArrayLayout10ui20\",Ti);var Vi=function(t){function e(){t.apply(this,arguments);}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer);},e.prototype.emplaceBack=function(t,e,r,n,i,a,o,s,u,l,p,c){var h=this.length;return this.resize(h+1),this.emplace(h,t,e,r,n,i,a,o,s,u,l,p,c)},e.prototype.emplace=function(t,e,r,n,i,a,o,s,u,l,p,c,h){var f=12*t;return this.int16[f+0]=e,this.int16[f+1]=r,this.int16[f+2]=n,this.int16[f+3]=i,this.uint16[f+4]=a,this.uint16[f+5]=o,this.uint16[f+6]=s,this.uint16[f+7]=u,this.int16[f+8]=l,this.int16[f+9]=p,this.int16[f+10]=c,this.int16[f+11]=h,t},e}(ki);Vi.prototype.bytesPerElement=24,On(\"StructArrayLayout4i4ui4i24\",Vi);var Fi=function(t){function e(){t.apply(this,arguments);}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer);},e.prototype.emplaceBack=function(t,e,r){var n=this.length;return this.resize(n+1),this.emplace(n,t,e,r)},e.prototype.emplace=function(t,e,r,n){var i=3*t;return this.float32[i+0]=e,this.float32[i+1]=r,this.float32[i+2]=n,t},e}(ki);Fi.prototype.bytesPerElement=12,On(\"StructArrayLayout3f12\",Fi);var Di=function(t){function e(){t.apply(this,arguments);}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer);},e.prototype.emplaceBack=function(t){var e=this.length;return this.resize(e+1),this.emplace(e,t)},e.prototype.emplace=function(t,e){return this.uint32[1*t+0]=e,t},e}(ki);Di.prototype.bytesPerElement=4,On(\"StructArrayLayout1ul4\",Di);var Li=function(t){function e(){t.apply(this,arguments);}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer);},e.prototype.emplaceBack=function(t,e,r,n,i,a,o,s,u){var l=this.length;return this.resize(l+1),this.emplace(l,t,e,r,n,i,a,o,s,u)},e.prototype.emplace=function(t,e,r,n,i,a,o,s,u,l){var p=10*t,c=5*t;return this.int16[p+0]=e,this.int16[p+1]=r,this.int16[p+2]=n,this.int16[p+3]=i,this.int16[p+4]=a,this.int16[p+5]=o,this.uint32[c+3]=s,this.uint16[p+8]=u,this.uint16[p+9]=l,t},e}(ki);Li.prototype.bytesPerElement=20,On(\"StructArrayLayout6i1ul2ui20\",Li);var Oi=function(t){function e(){t.apply(this,arguments);}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer);},e.prototype.emplaceBack=function(t,e,r,n,i,a){var o=this.length;return this.resize(o+1),this.emplace(o,t,e,r,n,i,a)},e.prototype.emplace=function(t,e,r,n,i,a,o){var s=6*t;return this.int16[s+0]=e,this.int16[s+1]=r,this.int16[s+2]=n,this.int16[s+3]=i,this.int16[s+4]=a,this.int16[s+5]=o,t},e}(ki);Oi.prototype.bytesPerElement=12,On(\"StructArrayLayout2i2i2i12\",Oi);var Ri=function(t){function e(){t.apply(this,arguments);}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer);},e.prototype.emplaceBack=function(t,e,r,n,i){var a=this.length;return this.resize(a+1),this.emplace(a,t,e,r,n,i)},e.prototype.emplace=function(t,e,r,n,i,a){var o=4*t,s=8*t;return this.float32[o+0]=e,this.float32[o+1]=r,this.float32[o+2]=n,this.int16[s+6]=i,this.int16[s+7]=a,t},e}(ki);Ri.prototype.bytesPerElement=16,On(\"StructArrayLayout2f1f2i16\",Ri);var Ui=function(t){function e(){t.apply(this,arguments);}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer);},e.prototype.emplaceBack=function(t,e,r,n){var i=this.length;return this.resize(i+1),this.emplace(i,t,e,r,n)},e.prototype.emplace=function(t,e,r,n,i){var a=12*t,o=3*t;return this.uint8[a+0]=e,this.uint8[a+1]=r,this.float32[o+1]=n,this.float32[o+2]=i,t},e}(ki);Ui.prototype.bytesPerElement=12,On(\"StructArrayLayout2ub2f12\",Ui);var ji=function(t){function e(){t.apply(this,arguments);}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer);},e.prototype.emplaceBack=function(t,e,r){var n=this.length;return this.resize(n+1),this.emplace(n,t,e,r)},e.prototype.emplace=function(t,e,r,n){var i=3*t;return this.uint16[i+0]=e,this.uint16[i+1]=r,this.uint16[i+2]=n,t},e}(ki);ji.prototype.bytesPerElement=6,On(\"StructArrayLayout3ui6\",ji);var qi=function(t){function e(){t.apply(this,arguments);}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer);},e.prototype.emplaceBack=function(t,e,r,n,i,a,o,s,u,l,p,c,h,f,y,d,m){var v=this.length;return this.resize(v+1),this.emplace(v,t,e,r,n,i,a,o,s,u,l,p,c,h,f,y,d,m)},e.prototype.emplace=function(t,e,r,n,i,a,o,s,u,l,p,c,h,f,y,d,m,v){var g=24*t,x=12*t,b=48*t;return this.int16[g+0]=e,this.int16[g+1]=r,this.uint16[g+2]=n,this.uint16[g+3]=i,this.uint32[x+2]=a,this.uint32[x+3]=o,this.uint32[x+4]=s,this.uint16[g+10]=u,this.uint16[g+11]=l,this.uint16[g+12]=p,this.float32[x+7]=c,this.float32[x+8]=h,this.uint8[b+36]=f,this.uint8[b+37]=y,this.uint8[b+38]=d,this.uint32[x+10]=m,this.int16[g+22]=v,t},e}(ki);qi.prototype.bytesPerElement=48,On(\"StructArrayLayout2i2ui3ul3ui2f3ub1ul1i48\",qi);var Ni=function(t){function e(){t.apply(this,arguments);}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer);},e.prototype.emplaceBack=function(t,e,r,n,i,a,o,s,u,l,p,c,h,f,y,d,m,v,g,x,b,w,_,A,S,k,I,z){var C=this.length;return this.resize(C+1),this.emplace(C,t,e,r,n,i,a,o,s,u,l,p,c,h,f,y,d,m,v,g,x,b,w,_,A,S,k,I,z)},e.prototype.emplace=function(t,e,r,n,i,a,o,s,u,l,p,c,h,f,y,d,m,v,g,x,b,w,_,A,S,k,I,z,C){var E=34*t,P=17*t;return this.int16[E+0]=e,this.int16[E+1]=r,this.int16[E+2]=n,this.int16[E+3]=i,this.int16[E+4]=a,this.int16[E+5]=o,this.int16[E+6]=s,this.int16[E+7]=u,this.uint16[E+8]=l,this.uint16[E+9]=p,this.uint16[E+10]=c,this.uint16[E+11]=h,this.uint16[E+12]=f,this.uint16[E+13]=y,this.uint16[E+14]=d,this.uint16[E+15]=m,this.uint16[E+16]=v,this.uint16[E+17]=g,this.uint16[E+18]=x,this.uint16[E+19]=b,this.uint16[E+20]=w,this.uint16[E+21]=_,this.uint16[E+22]=A,this.uint32[P+12]=S,this.float32[P+13]=k,this.float32[P+14]=I,this.float32[P+15]=z,this.float32[P+16]=C,t},e}(ki);Ni.prototype.bytesPerElement=68,On(\"StructArrayLayout8i15ui1ul4f68\",Ni);var Ki=function(t){function e(){t.apply(this,arguments);}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer);},e.prototype.emplaceBack=function(t){var e=this.length;return this.resize(e+1),this.emplace(e,t)},e.prototype.emplace=function(t,e){return this.float32[1*t+0]=e,t},e}(ki);Ki.prototype.bytesPerElement=4,On(\"StructArrayLayout1f4\",Ki);var Gi=function(t){function e(){t.apply(this,arguments);}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer);},e.prototype.emplaceBack=function(t,e,r){var n=this.length;return this.resize(n+1),this.emplace(n,t,e,r)},e.prototype.emplace=function(t,e,r,n){var i=3*t;return this.int16[i+0]=e,this.int16[i+1]=r,this.int16[i+2]=n,t},e}(ki);Gi.prototype.bytesPerElement=6,On(\"StructArrayLayout3i6\",Gi);var Zi=function(t){function e(){t.apply(this,arguments);}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer);},e.prototype.emplaceBack=function(t,e,r){var n=this.length;return this.resize(n+1),this.emplace(n,t,e,r)},e.prototype.emplace=function(t,e,r,n){var i=4*t;return this.uint32[2*t+0]=e,this.uint16[i+2]=r,this.uint16[i+3]=n,t},e}(ki);Zi.prototype.bytesPerElement=8,On(\"StructArrayLayout1ul2ui8\",Zi);var Xi=function(t){function e(){t.apply(this,arguments);}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer);},e.prototype.emplaceBack=function(t,e){var r=this.length;return this.resize(r+1),this.emplace(r,t,e)},e.prototype.emplace=function(t,e,r){var n=2*t;return this.uint16[n+0]=e,this.uint16[n+1]=r,t},e}(ki);Xi.prototype.bytesPerElement=4,On(\"StructArrayLayout2ui4\",Xi);var Ji=function(t){function e(){t.apply(this,arguments);}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer);},e.prototype.emplaceBack=function(t){var e=this.length;return this.resize(e+1),this.emplace(e,t)},e.prototype.emplace=function(t,e){return this.uint16[1*t+0]=e,t},e}(ki);Ji.prototype.bytesPerElement=2,On(\"StructArrayLayout1ui2\",Ji);var Hi=function(t){function e(){t.apply(this,arguments);}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer);},e.prototype.emplaceBack=function(t,e,r,n){var i=this.length;return this.resize(i+1),this.emplace(i,t,e,r,n)},e.prototype.emplace=function(t,e,r,n,i){var a=4*t;return this.float32[a+0]=e,this.float32[a+1]=r,this.float32[a+2]=n,this.float32[a+3]=i,t},e}(ki);Hi.prototype.bytesPerElement=16,On(\"StructArrayLayout4f16\",Hi);var Yi=function(t){function e(){t.apply(this,arguments);}t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e;var r={anchorPointX:{configurable:!0},anchorPointY:{configurable:!0},x1:{configurable:!0},y1:{configurable:!0},x2:{configurable:!0},y2:{configurable:!0},featureIndex:{configurable:!0},sourceLayerIndex:{configurable:!0},bucketIndex:{configurable:!0},anchorPoint:{configurable:!0}};return r.anchorPointX.get=function(){return this._structArray.int16[this._pos2+0]},r.anchorPointY.get=function(){return this._structArray.int16[this._pos2+1]},r.x1.get=function(){return this._structArray.int16[this._pos2+2]},r.y1.get=function(){return this._structArray.int16[this._pos2+3]},r.x2.get=function(){return this._structArray.int16[this._pos2+4]},r.y2.get=function(){return this._structArray.int16[this._pos2+5]},r.featureIndex.get=function(){return this._structArray.uint32[this._pos4+3]},r.sourceLayerIndex.get=function(){return this._structArray.uint16[this._pos2+8]},r.bucketIndex.get=function(){return this._structArray.uint16[this._pos2+9]},r.anchorPoint.get=function(){return new i(this.anchorPointX,this.anchorPointY)},Object.defineProperties(e.prototype,r),e}(Si);Yi.prototype.size=20;var $i=function(t){function e(){t.apply(this,arguments);}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e,e.prototype.get=function(t){return new Yi(this,t)},e}(Li);On(\"CollisionBoxArray\",$i);var Wi=function(t){function e(){t.apply(this,arguments);}t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e;var r={anchorX:{configurable:!0},anchorY:{configurable:!0},glyphStartIndex:{configurable:!0},numGlyphs:{configurable:!0},vertexStartIndex:{configurable:!0},lineStartIndex:{configurable:!0},lineLength:{configurable:!0},segment:{configurable:!0},lowerSize:{configurable:!0},upperSize:{configurable:!0},lineOffsetX:{configurable:!0},lineOffsetY:{configurable:!0},writingMode:{configurable:!0},placedOrientation:{configurable:!0},hidden:{configurable:!0},crossTileID:{configurable:!0},associatedIconIndex:{configurable:!0}};return r.anchorX.get=function(){return this._structArray.int16[this._pos2+0]},r.anchorY.get=function(){return this._structArray.int16[this._pos2+1]},r.glyphStartIndex.get=function(){return this._structArray.uint16[this._pos2+2]},r.numGlyphs.get=function(){return this._structArray.uint16[this._pos2+3]},r.vertexStartIndex.get=function(){return this._structArray.uint32[this._pos4+2]},r.lineStartIndex.get=function(){return this._structArray.uint32[this._pos4+3]},r.lineLength.get=function(){return this._structArray.uint32[this._pos4+4]},r.segment.get=function(){return this._structArray.uint16[this._pos2+10]},r.lowerSize.get=function(){return this._structArray.uint16[this._pos2+11]},r.upperSize.get=function(){return this._structArray.uint16[this._pos2+12]},r.lineOffsetX.get=function(){return this._structArray.float32[this._pos4+7]},r.lineOffsetY.get=function(){return this._structArray.float32[this._pos4+8]},r.writingMode.get=function(){return this._structArray.uint8[this._pos1+36]},r.placedOrientation.get=function(){return this._structArray.uint8[this._pos1+37]},r.placedOrientation.set=function(t){this._structArray.uint8[this._pos1+37]=t;},r.hidden.get=function(){return this._structArray.uint8[this._pos1+38]},r.hidden.set=function(t){this._structArray.uint8[this._pos1+38]=t;},r.crossTileID.get=function(){return this._structArray.uint32[this._pos4+10]},r.crossTileID.set=function(t){this._structArray.uint32[this._pos4+10]=t;},r.associatedIconIndex.get=function(){return this._structArray.int16[this._pos2+22]},Object.defineProperties(e.prototype,r),e}(Si);Wi.prototype.size=48;var Qi=function(t){function e(){t.apply(this,arguments);}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e,e.prototype.get=function(t){return new Wi(this,t)},e}(qi);On(\"PlacedSymbolArray\",Qi);var ta=function(t){function e(){t.apply(this,arguments);}t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e;var r={anchorX:{configurable:!0},anchorY:{configurable:!0},rightJustifiedTextSymbolIndex:{configurable:!0},centerJustifiedTextSymbolIndex:{configurable:!0},leftJustifiedTextSymbolIndex:{configurable:!0},verticalPlacedTextSymbolIndex:{configurable:!0},placedIconSymbolIndex:{configurable:!0},verticalPlacedIconSymbolIndex:{configurable:!0},key:{configurable:!0},textBoxStartIndex:{configurable:!0},textBoxEndIndex:{configurable:!0},verticalTextBoxStartIndex:{configurable:!0},verticalTextBoxEndIndex:{configurable:!0},iconBoxStartIndex:{configurable:!0},iconBoxEndIndex:{configurable:!0},verticalIconBoxStartIndex:{configurable:!0},verticalIconBoxEndIndex:{configurable:!0},featureIndex:{configurable:!0},numHorizontalGlyphVertices:{configurable:!0},numVerticalGlyphVertices:{configurable:!0},numIconVertices:{configurable:!0},numVerticalIconVertices:{configurable:!0},useRuntimeCollisionCircles:{configurable:!0},crossTileID:{configurable:!0},textBoxScale:{configurable:!0},textOffset0:{configurable:!0},textOffset1:{configurable:!0},collisionCircleDiameter:{configurable:!0}};return r.anchorX.get=function(){return this._structArray.int16[this._pos2+0]},r.anchorY.get=function(){return this._structArray.int16[this._pos2+1]},r.rightJustifiedTextSymbolIndex.get=function(){return this._structArray.int16[this._pos2+2]},r.centerJustifiedTextSymbolIndex.get=function(){return this._structArray.int16[this._pos2+3]},r.leftJustifiedTextSymbolIndex.get=function(){return this._structArray.int16[this._pos2+4]},r.verticalPlacedTextSymbolIndex.get=function(){return this._structArray.int16[this._pos2+5]},r.placedIconSymbolIndex.get=function(){return this._structArray.int16[this._pos2+6]},r.verticalPlacedIconSymbolIndex.get=function(){return this._structArray.int16[this._pos2+7]},r.key.get=function(){return this._structArray.uint16[this._pos2+8]},r.textBoxStartIndex.get=function(){return this._structArray.uint16[this._pos2+9]},r.textBoxEndIndex.get=function(){return this._structArray.uint16[this._pos2+10]},r.verticalTextBoxStartIndex.get=function(){return this._structArray.uint16[this._pos2+11]},r.verticalTextBoxEndIndex.get=function(){return this._structArray.uint16[this._pos2+12]},r.iconBoxStartIndex.get=function(){return this._structArray.uint16[this._pos2+13]},r.iconBoxEndIndex.get=function(){return this._structArray.uint16[this._pos2+14]},r.verticalIconBoxStartIndex.get=function(){return this._structArray.uint16[this._pos2+15]},r.verticalIconBoxEndIndex.get=function(){return this._structArray.uint16[this._pos2+16]},r.featureIndex.get=function(){return this._structArray.uint16[this._pos2+17]},r.numHorizontalGlyphVertices.get=function(){return this._structArray.uint16[this._pos2+18]},r.numVerticalGlyphVertices.get=function(){return this._structArray.uint16[this._pos2+19]},r.numIconVertices.get=function(){return this._structArray.uint16[this._pos2+20]},r.numVerticalIconVertices.get=function(){return this._structArray.uint16[this._pos2+21]},r.useRuntimeCollisionCircles.get=function(){return this._structArray.uint16[this._pos2+22]},r.crossTileID.get=function(){return this._structArray.uint32[this._pos4+12]},r.crossTileID.set=function(t){this._structArray.uint32[this._pos4+12]=t;},r.textBoxScale.get=function(){return this._structArray.float32[this._pos4+13]},r.textOffset0.get=function(){return this._structArray.float32[this._pos4+14]},r.textOffset1.get=function(){return this._structArray.float32[this._pos4+15]},r.collisionCircleDiameter.get=function(){return this._structArray.float32[this._pos4+16]},Object.defineProperties(e.prototype,r),e}(Si);ta.prototype.size=68;var ea=function(t){function e(){t.apply(this,arguments);}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e,e.prototype.get=function(t){return new ta(this,t)},e}(Ni);On(\"SymbolInstanceArray\",ea);var ra=function(t){function e(){t.apply(this,arguments);}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e,e.prototype.getoffsetX=function(t){return this.float32[1*t+0]},e}(Ki);On(\"GlyphOffsetArray\",ra);var na=function(t){function e(){t.apply(this,arguments);}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e,e.prototype.getx=function(t){return this.int16[3*t+0]},e.prototype.gety=function(t){return this.int16[3*t+1]},e.prototype.gettileUnitDistanceFromAnchor=function(t){return this.int16[3*t+2]},e}(Gi);On(\"SymbolLineVertexArray\",na);var ia=function(t){function e(){t.apply(this,arguments);}t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e;var r={featureIndex:{configurable:!0},sourceLayerIndex:{configurable:!0},bucketIndex:{configurable:!0}};return r.featureIndex.get=function(){return this._structArray.uint32[this._pos4+0]},r.sourceLayerIndex.get=function(){return this._structArray.uint16[this._pos2+2]},r.bucketIndex.get=function(){return this._structArray.uint16[this._pos2+3]},Object.defineProperties(e.prototype,r),e}(Si);ia.prototype.size=8;var aa=function(t){function e(){t.apply(this,arguments);}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e,e.prototype.get=function(t){return new ia(this,t)},e}(Zi);On(\"FeatureIndexArray\",aa);var oa=Ii([{name:\"a_pos\",components:2,type:\"Int16\"}],4).members,sa=function(t){void 0===t&&(t=[]),this.segments=t;};function ua(t,e){return 256*(t=p(Math.floor(t),0,255))+p(Math.floor(e),0,255)}sa.prototype.prepareSegment=function(t,e,r,n){var i=this.segments[this.segments.length-1];return t>sa.MAX_VERTEX_ARRAY_LENGTH&&A(\"Max vertices per segment is \"+sa.MAX_VERTEX_ARRAY_LENGTH+\": bucket requested \"+t),(!i||i.vertexLength+t>sa.MAX_VERTEX_ARRAY_LENGTH||i.sortKey!==n)&&(i={vertexOffset:e.length,primitiveOffset:r.length,vertexLength:0,primitiveLength:0},void 0!==n&&(i.sortKey=n),this.segments.push(i)),i},sa.prototype.get=function(){return this.segments},sa.prototype.destroy=function(){for(var t=0,e=this.segments;t<e.length;t+=1){var r=e[t];for(var n in r.vaos)r.vaos[n].destroy();}},sa.simpleSegment=function(t,e,r,n){return new sa([{vertexOffset:t,primitiveOffset:e,vertexLength:r,primitiveLength:n,vaos:{},sortKey:0}])},sa.MAX_VERTEX_ARRAY_LENGTH=Math.pow(2,16)-1,On(\"SegmentVector\",sa);var la=Ii([{name:\"a_pattern_from\",components:4,type:\"Uint16\"},{name:\"a_pattern_to\",components:4,type:\"Uint16\"},{name:\"a_pixel_ratio_from\",components:1,type:\"Uint16\"},{name:\"a_pixel_ratio_to\",components:1,type:\"Uint16\"}]),pa=e((function(t){t.exports=function(t,e){var r,n,i,a,o,s,u,l;for(n=t.length-(r=3&t.length),i=e,o=3432918353,s=461845907,l=0;l<n;)u=255&t.charCodeAt(l)|(255&t.charCodeAt(++l))<<8|(255&t.charCodeAt(++l))<<16|(255&t.charCodeAt(++l))<<24,++l,i=27492+(65535&(a=5*(65535&(i=(i^=u=(65535&(u=(u=(65535&u)*o+(((u>>>16)*o&65535)<<16)&4294967295)<<15|u>>>17))*s+(((u>>>16)*s&65535)<<16)&4294967295)<<13|i>>>19))+((5*(i>>>16)&65535)<<16)&4294967295))+((58964+(a>>>16)&65535)<<16);switch(u=0,r){case 3:u^=(255&t.charCodeAt(l+2))<<16;case 2:u^=(255&t.charCodeAt(l+1))<<8;case 1:i^=u=(65535&(u=(u=(65535&(u^=255&t.charCodeAt(l)))*o+(((u>>>16)*o&65535)<<16)&4294967295)<<15|u>>>17))*s+(((u>>>16)*s&65535)<<16)&4294967295;}return i^=t.length,i=2246822507*(65535&(i^=i>>>16))+((2246822507*(i>>>16)&65535)<<16)&4294967295,i=3266489909*(65535&(i^=i>>>13))+((3266489909*(i>>>16)&65535)<<16)&4294967295,(i^=i>>>16)>>>0};})),ca=e((function(t){t.exports=function(t,e){for(var r,n=t.length,i=e^n,a=0;n>=4;)r=1540483477*(65535&(r=255&t.charCodeAt(a)|(255&t.charCodeAt(++a))<<8|(255&t.charCodeAt(++a))<<16|(255&t.charCodeAt(++a))<<24))+((1540483477*(r>>>16)&65535)<<16),i=1540483477*(65535&i)+((1540483477*(i>>>16)&65535)<<16)^(r=1540483477*(65535&(r^=r>>>24))+((1540483477*(r>>>16)&65535)<<16)),n-=4,++a;switch(n){case 3:i^=(255&t.charCodeAt(a+2))<<16;case 2:i^=(255&t.charCodeAt(a+1))<<8;case 1:i=1540483477*(65535&(i^=255&t.charCodeAt(a)))+((1540483477*(i>>>16)&65535)<<16);}return i=1540483477*(65535&(i^=i>>>13))+((1540483477*(i>>>16)&65535)<<16),(i^=i>>>15)>>>0};})),ha=pa,fa=ca;ha.murmur3=pa,ha.murmur2=fa;var ya=function(){this.ids=[],this.positions=[],this.indexed=!1;};ya.prototype.add=function(t,e,r,n){this.ids.push(ma(t)),this.positions.push(e,r,n);},ya.prototype.getPositions=function(t){for(var e=ma(t),r=0,n=this.ids.length-1;r<n;){var i=r+n>>1;this.ids[i]>=e?n=i:r=i+1;}for(var a=[];this.ids[r]===e;)a.push({index:this.positions[3*r],start:this.positions[3*r+1],end:this.positions[3*r+2]}),r++;return a},ya.serialize=function(t,e){var r=new Float64Array(t.ids),n=new Uint32Array(t.positions);return function t(e,r,n,i){for(;n<i;){for(var a=e[n+i>>1],o=n-1,s=i+1;;){do{o++;}while(e[o]<a);do{s--;}while(e[s]>a);if(o>=s)break;va(e,o,s),va(r,3*o,3*s),va(r,3*o+1,3*s+1),va(r,3*o+2,3*s+2);}s-n<i-s?(t(e,r,n,s),n=s+1):(t(e,r,s+1,i),i=s);}}(r,n,0,r.length-1),e&&e.push(r.buffer,n.buffer),{ids:r,positions:n}},ya.deserialize=function(t){var e=new ya;return e.ids=t.ids,e.positions=t.positions,e.indexed=!0,e};var da=Math.pow(2,53)-1;function ma(t){var e=+t;return !isNaN(e)&&e<=da?e:ha(String(t))}function va(t,e,r){var n=t[e];t[e]=t[r],t[r]=n;}On(\"FeaturePositionMap\",ya);var ga=function(t,e){this.gl=t.gl,this.location=e;},xa=function(t){function e(e,r){t.call(this,e,r),this.current=0;}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e,e.prototype.set=function(t){this.current!==t&&(this.current=t,this.gl.uniform1i(this.location,t));},e}(ga),ba=function(t){function e(e,r){t.call(this,e,r),this.current=0;}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e,e.prototype.set=function(t){this.current!==t&&(this.current=t,this.gl.uniform1f(this.location,t));},e}(ga),wa=function(t){function e(e,r){t.call(this,e,r),this.current=[0,0];}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e,e.prototype.set=function(t){t[0]===this.current[0]&&t[1]===this.current[1]||(this.current=t,this.gl.uniform2f(this.location,t[0],t[1]));},e}(ga),_a=function(t){function e(e,r){t.call(this,e,r),this.current=[0,0,0];}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e,e.prototype.set=function(t){t[0]===this.current[0]&&t[1]===this.current[1]&&t[2]===this.current[2]||(this.current=t,this.gl.uniform3f(this.location,t[0],t[1],t[2]));},e}(ga),Aa=function(t){function e(e,r){t.call(this,e,r),this.current=[0,0,0,0];}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e,e.prototype.set=function(t){t[0]===this.current[0]&&t[1]===this.current[1]&&t[2]===this.current[2]&&t[3]===this.current[3]||(this.current=t,this.gl.uniform4f(this.location,t[0],t[1],t[2],t[3]));},e}(ga),Sa=function(t){function e(e,r){t.call(this,e,r),this.current=te.transparent;}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e,e.prototype.set=function(t){t.r===this.current.r&&t.g===this.current.g&&t.b===this.current.b&&t.a===this.current.a||(this.current=t,this.gl.uniform4f(this.location,t.r,t.g,t.b,t.a));},e}(ga),ka=new Float32Array(16),Ia=function(t){function e(e,r){t.call(this,e,r),this.current=ka;}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e,e.prototype.set=function(t){if(t[12]!==this.current[12]||t[0]!==this.current[0])return this.current=t,void this.gl.uniformMatrix4fv(this.location,!1,t);for(var e=1;e<16;e++)if(t[e]!==this.current[e]){this.current=t,this.gl.uniformMatrix4fv(this.location,!1,t);break}},e}(ga);function za(t){return [ua(255*t.r,255*t.g),ua(255*t.b,255*t.a)]}var Ca=function(t,e,r){this.value=t,this.uniformNames=e.map((function(t){return \"u_\"+t})),this.type=r;};Ca.prototype.setUniform=function(t,e,r){t.set(r.constantOr(this.value));},Ca.prototype.getBinding=function(t,e,r){return \"color\"===this.type?new Sa(t,e):new ba(t,e)};var Ea=function(t,e){this.uniformNames=e.map((function(t){return \"u_\"+t})),this.patternFrom=null,this.patternTo=null,this.pixelRatioFrom=1,this.pixelRatioTo=1;};Ea.prototype.setConstantPatternPositions=function(t,e){this.pixelRatioFrom=e.pixelRatio,this.pixelRatioTo=t.pixelRatio,this.patternFrom=e.tlbr,this.patternTo=t.tlbr;},Ea.prototype.setUniform=function(t,e,r,n){var i=\"u_pattern_to\"===n?this.patternTo:\"u_pattern_from\"===n?this.patternFrom:\"u_pixel_ratio_to\"===n?this.pixelRatioTo:\"u_pixel_ratio_from\"===n?this.pixelRatioFrom:null;i&&t.set(i);},Ea.prototype.getBinding=function(t,e,r){return \"u_pattern\"===r.substr(0,9)?new Aa(t,e):new ba(t,e)};var Pa=function(t,e,r,n){this.expression=t,this.type=r,this.maxValue=0,this.paintVertexAttributes=e.map((function(t){return {name:\"a_\"+t,type:\"Float32\",components:\"color\"===r?2:1,offset:0}})),this.paintVertexArray=new n;};Pa.prototype.populatePaintArray=function(t,e,r,n,i){var a=this.paintVertexArray.length,o=this.expression.evaluate(new si(0),e,{},n,[],i);this.paintVertexArray.resize(t),this._setPaintValue(a,t,o);},Pa.prototype.updatePaintArray=function(t,e,r,n){var i=this.expression.evaluate({zoom:0},r,n);this._setPaintValue(t,e,i);},Pa.prototype._setPaintValue=function(t,e,r){if(\"color\"===this.type)for(var n=za(r),i=t;i<e;i++)this.paintVertexArray.emplace(i,n[0],n[1]);else {for(var a=t;a<e;a++)this.paintVertexArray.emplace(a,r);this.maxValue=Math.max(this.maxValue,Math.abs(r));}},Pa.prototype.upload=function(t){this.paintVertexArray&&this.paintVertexArray.arrayBuffer&&(this.paintVertexBuffer&&this.paintVertexBuffer.buffer?this.paintVertexBuffer.updateData(this.paintVertexArray):this.paintVertexBuffer=t.createVertexBuffer(this.paintVertexArray,this.paintVertexAttributes,this.expression.isStateDependent));},Pa.prototype.destroy=function(){this.paintVertexBuffer&&this.paintVertexBuffer.destroy();};var Ma=function(t,e,r,n,i,a){this.expression=t,this.uniformNames=e.map((function(t){return \"u_\"+t+\"_t\"})),this.type=r,this.useIntegerZoom=n,this.zoom=i,this.maxValue=0,this.paintVertexAttributes=e.map((function(t){return {name:\"a_\"+t,type:\"Float32\",components:\"color\"===r?4:2,offset:0}})),this.paintVertexArray=new a;};Ma.prototype.populatePaintArray=function(t,e,r,n,i){var a=this.expression.evaluate(new si(this.zoom),e,{},n,[],i),o=this.expression.evaluate(new si(this.zoom+1),e,{},n,[],i),s=this.paintVertexArray.length;this.paintVertexArray.resize(t),this._setPaintValue(s,t,a,o);},Ma.prototype.updatePaintArray=function(t,e,r,n){var i=this.expression.evaluate({zoom:this.zoom},r,n),a=this.expression.evaluate({zoom:this.zoom+1},r,n);this._setPaintValue(t,e,i,a);},Ma.prototype._setPaintValue=function(t,e,r,n){if(\"color\"===this.type)for(var i=za(r),a=za(n),o=t;o<e;o++)this.paintVertexArray.emplace(o,i[0],i[1],a[0],a[1]);else {for(var s=t;s<e;s++)this.paintVertexArray.emplace(s,r,n);this.maxValue=Math.max(this.maxValue,Math.abs(r),Math.abs(n));}},Ma.prototype.upload=function(t){this.paintVertexArray&&this.paintVertexArray.arrayBuffer&&(this.paintVertexBuffer&&this.paintVertexBuffer.buffer?this.paintVertexBuffer.updateData(this.paintVertexArray):this.paintVertexBuffer=t.createVertexBuffer(this.paintVertexArray,this.paintVertexAttributes,this.expression.isStateDependent));},Ma.prototype.destroy=function(){this.paintVertexBuffer&&this.paintVertexBuffer.destroy();},Ma.prototype.setUniform=function(t,e){var r=this.useIntegerZoom?Math.floor(e.zoom):e.zoom,n=p(this.expression.interpolationFactor(r,this.zoom,this.zoom+1),0,1);t.set(n);},Ma.prototype.getBinding=function(t,e,r){return new ba(t,e)};var Ba=function(t,e,r,n,i,a){this.expression=t,this.type=e,this.useIntegerZoom=r,this.zoom=n,this.layerId=a,this.zoomInPaintVertexArray=new i,this.zoomOutPaintVertexArray=new i;};Ba.prototype.populatePaintArray=function(t,e,r){var n=this.zoomInPaintVertexArray.length;this.zoomInPaintVertexArray.resize(t),this.zoomOutPaintVertexArray.resize(t),this._setPaintValues(n,t,e.patterns&&e.patterns[this.layerId],r);},Ba.prototype.updatePaintArray=function(t,e,r,n,i){this._setPaintValues(t,e,r.patterns&&r.patterns[this.layerId],i);},Ba.prototype._setPaintValues=function(t,e,r,n){if(n&&r){var i=n[r.min],a=n[r.mid],o=n[r.max];if(i&&a&&o)for(var s=t;s<e;s++)this.zoomInPaintVertexArray.emplace(s,a.tl[0],a.tl[1],a.br[0],a.br[1],i.tl[0],i.tl[1],i.br[0],i.br[1],a.pixelRatio,i.pixelRatio),this.zoomOutPaintVertexArray.emplace(s,a.tl[0],a.tl[1],a.br[0],a.br[1],o.tl[0],o.tl[1],o.br[0],o.br[1],a.pixelRatio,o.pixelRatio);}},Ba.prototype.upload=function(t){this.zoomInPaintVertexArray&&this.zoomInPaintVertexArray.arrayBuffer&&this.zoomOutPaintVertexArray&&this.zoomOutPaintVertexArray.arrayBuffer&&(this.zoomInPaintVertexBuffer=t.createVertexBuffer(this.zoomInPaintVertexArray,la.members,this.expression.isStateDependent),this.zoomOutPaintVertexBuffer=t.createVertexBuffer(this.zoomOutPaintVertexArray,la.members,this.expression.isStateDependent));},Ba.prototype.destroy=function(){this.zoomOutPaintVertexBuffer&&this.zoomOutPaintVertexBuffer.destroy(),this.zoomInPaintVertexBuffer&&this.zoomInPaintVertexBuffer.destroy();};var Ta=function(t,e,r){this.binders={},this._buffers=[];var n=[];for(var i in t.paint._values)if(r(i)){var a=t.paint.get(i);if(a instanceof yi&&Tr(a.property.specification)){var o=Fa(i,t.type),s=a.value,u=a.property.specification.type,l=a.property.useIntegerZoom,p=a.property.specification[\"property-type\"],c=\"cross-faded\"===p||\"cross-faded-data-driven\"===p;if(\"constant\"===s.kind)this.binders[i]=c?new Ea(s.value,o):new Ca(s.value,o,u),n.push(\"/u_\"+i);else if(\"source\"===s.kind||c){var h=Da(i,u,\"source\");this.binders[i]=c?new Ba(s,u,l,e,h,t.id):new Pa(s,o,u,h),n.push(\"/a_\"+i);}else {var f=Da(i,u,\"composite\");this.binders[i]=new Ma(s,o,u,l,e,f),n.push(\"/z_\"+i);}}}this.cacheKey=n.sort().join(\"\");};Ta.prototype.getMaxValue=function(t){var e=this.binders[t];return e instanceof Pa||e instanceof Ma?e.maxValue:0},Ta.prototype.populatePaintArrays=function(t,e,r,n,i){for(var a in this.binders){var o=this.binders[a];(o instanceof Pa||o instanceof Ma||o instanceof Ba)&&o.populatePaintArray(t,e,r,n,i);}},Ta.prototype.setConstantPatternPositions=function(t,e){for(var r in this.binders){var n=this.binders[r];n instanceof Ea&&n.setConstantPatternPositions(t,e);}},Ta.prototype.updatePaintArrays=function(t,e,r,n,i){var a=!1;for(var o in t)for(var s=0,u=e.getPositions(o);s<u.length;s+=1){var l=u[s],p=r.feature(l.index);for(var c in this.binders){var h=this.binders[c];if((h instanceof Pa||h instanceof Ma||h instanceof Ba)&&!0===h.expression.isStateDependent){var f=n.paint.get(c);h.expression=f.value,h.updatePaintArray(l.start,l.end,p,t[o],i),a=!0;}}}return a},Ta.prototype.defines=function(){var t=[];for(var e in this.binders){var r=this.binders[e];(r instanceof Ca||r instanceof Ea)&&t.push.apply(t,r.uniformNames.map((function(t){return \"#define HAS_UNIFORM_\"+t})));}return t},Ta.prototype.getBinderAttributes=function(){var t=[];for(var e in this.binders){var r=this.binders[e];if(r instanceof Pa||r instanceof Ma)for(var n=0;n<r.paintVertexAttributes.length;n++)t.push(r.paintVertexAttributes[n].name);else if(r instanceof Ba)for(var i=0;i<la.members.length;i++)t.push(la.members[i].name);}return t},Ta.prototype.getBinderUniforms=function(){var t=[];for(var e in this.binders){var r=this.binders[e];if(r instanceof Ca||r instanceof Ea||r instanceof Ma)for(var n=0,i=r.uniformNames;n<i.length;n+=1)t.push(i[n]);}return t},Ta.prototype.getPaintVertexBuffers=function(){return this._buffers},Ta.prototype.getUniforms=function(t,e){var r=[];for(var n in this.binders){var i=this.binders[n];if(i instanceof Ca||i instanceof Ea||i instanceof Ma)for(var a=0,o=i.uniformNames;a<o.length;a+=1){var s=o[a];if(e[s]){var u=i.getBinding(t,e[s],s);r.push({name:s,property:n,binding:u});}}}return r},Ta.prototype.setUniforms=function(t,e,r,n){for(var i=0,a=e;i<a.length;i+=1){var o=a[i],s=o.name,u=o.property;this.binders[u].setUniform(o.binding,n,r.get(u),s);}},Ta.prototype.updatePaintBuffers=function(t){for(var e in this._buffers=[],this.binders){var r=this.binders[e];if(t&&r instanceof Ba){var n=2===t.fromScale?r.zoomInPaintVertexBuffer:r.zoomOutPaintVertexBuffer;n&&this._buffers.push(n);}else (r instanceof Pa||r instanceof Ma)&&r.paintVertexBuffer&&this._buffers.push(r.paintVertexBuffer);}},Ta.prototype.upload=function(t){for(var e in this.binders){var r=this.binders[e];(r instanceof Pa||r instanceof Ma||r instanceof Ba)&&r.upload(t);}this.updatePaintBuffers();},Ta.prototype.destroy=function(){for(var t in this.binders){var e=this.binders[t];(e instanceof Pa||e instanceof Ma||e instanceof Ba)&&e.destroy();}};var Va=function(t,e,r){void 0===r&&(r=function(){return !0}),this.programConfigurations={};for(var n=0,i=t;n<i.length;n+=1){var a=i[n];this.programConfigurations[a.id]=new Ta(a,e,r);}this.needsUpload=!1,this._featureMap=new ya,this._bufferOffset=0;};function Fa(t,e){return {\"text-opacity\":[\"opacity\"],\"icon-opacity\":[\"opacity\"],\"text-color\":[\"fill_color\"],\"icon-color\":[\"fill_color\"],\"text-halo-color\":[\"halo_color\"],\"icon-halo-color\":[\"halo_color\"],\"text-halo-blur\":[\"halo_blur\"],\"icon-halo-blur\":[\"halo_blur\"],\"text-halo-width\":[\"halo_width\"],\"icon-halo-width\":[\"halo_width\"],\"line-gap-width\":[\"gapwidth\"],\"line-pattern\":[\"pattern_to\",\"pattern_from\",\"pixel_ratio_to\",\"pixel_ratio_from\"],\"fill-pattern\":[\"pattern_to\",\"pattern_from\",\"pixel_ratio_to\",\"pixel_ratio_from\"],\"fill-extrusion-pattern\":[\"pattern_to\",\"pattern_from\",\"pixel_ratio_to\",\"pixel_ratio_from\"]}[t]||[t.replace(e+\"-\",\"\").replace(/-/g,\"_\")]}function Da(t,e,r){var n={color:{source:Bi,composite:Hi},number:{source:Ki,composite:Bi}},i=function(t){return {\"line-pattern\":{source:Ti,composite:Ti},\"fill-pattern\":{source:Ti,composite:Ti},\"fill-extrusion-pattern\":{source:Ti,composite:Ti}}[t]}(t);return i&&i[r]||n[e][r]}Va.prototype.populatePaintArrays=function(t,e,r,n,i,a){for(var o in this.programConfigurations)this.programConfigurations[o].populatePaintArrays(t,e,n,i,a);void 0!==e.id&&this._featureMap.add(e.id,r,this._bufferOffset,t),this._bufferOffset=t,this.needsUpload=!0;},Va.prototype.updatePaintArrays=function(t,e,r,n){for(var i=0,a=r;i<a.length;i+=1){var o=a[i];this.needsUpload=this.programConfigurations[o.id].updatePaintArrays(t,this._featureMap,e,o,n)||this.needsUpload;}},Va.prototype.get=function(t){return this.programConfigurations[t]},Va.prototype.upload=function(t){if(this.needsUpload){for(var e in this.programConfigurations)this.programConfigurations[e].upload(t);this.needsUpload=!1;}},Va.prototype.destroy=function(){for(var t in this.programConfigurations)this.programConfigurations[t].destroy();},On(\"ConstantBinder\",Ca),On(\"CrossFadedConstantBinder\",Ea),On(\"SourceExpressionBinder\",Pa),On(\"CrossFadedCompositeBinder\",Ba),On(\"CompositeExpressionBinder\",Ma),On(\"ProgramConfiguration\",Ta,{omit:[\"_buffers\"]}),On(\"ProgramConfigurationSet\",Va);var La=Math.pow(2,14)-1,Oa=-La-1;function Ra(t){for(var e=8192/t.extent,r=t.loadGeometry(),n=0;n<r.length;n++)for(var i=r[n],a=0;a<i.length;a++){var o=i[a],s=Math.round(o.x*e),u=Math.round(o.y*e);o.x=p(s,Oa,La),o.y=p(u,Oa,La),(s<o.x||s>o.x+1||u<o.y||u>o.y+1)&&A(\"Geometry exceeds allowed extent, reduce your vector tile buffer size\");}return r}function Ua(t,e){return {type:t.type,id:t.id,properties:t.properties,geometry:e?Ra(t):[]}}function ja(t,e,r,n,i){t.emplaceBack(2*e+(n+1)/2,2*r+(i+1)/2);}var qa=function(t){this.zoom=t.zoom,this.overscaling=t.overscaling,this.layers=t.layers,this.layerIds=this.layers.map((function(t){return t.id})),this.index=t.index,this.hasPattern=!1,this.layoutVertexArray=new Ci,this.indexArray=new ji,this.segments=new sa,this.programConfigurations=new Va(t.layers,t.zoom),this.stateDependentLayerIds=this.layers.filter((function(t){return t.isStateDependent()})).map((function(t){return t.id}));};function Na(t,e){for(var r=0;r<t.length;r++)if(Wa(e,t[r]))return !0;for(var n=0;n<e.length;n++)if(Wa(t,e[n]))return !0;return !!Xa(t,e)}function Ka(t,e,r){return !!Wa(t,e)||!!Ha(e,t,r)}function Ga(t,e){if(1===t.length)return $a(e,t[0]);for(var r=0;r<e.length;r++)for(var n=e[r],i=0;i<n.length;i++)if(Wa(t,n[i]))return !0;for(var a=0;a<t.length;a++)if($a(e,t[a]))return !0;for(var o=0;o<e.length;o++)if(Xa(t,e[o]))return !0;return !1}function Za(t,e,r){if(t.length>1){if(Xa(t,e))return !0;for(var n=0;n<e.length;n++)if(Ha(e[n],t,r))return !0}for(var i=0;i<t.length;i++)if(Ha(t[i],e,r))return !0;return !1}function Xa(t,e){if(0===t.length||0===e.length)return !1;for(var r=0;r<t.length-1;r++)for(var n=t[r],i=t[r+1],a=0;a<e.length-1;a++)if(Ja(n,i,e[a],e[a+1]))return !0;return !1}function Ja(t,e,r,n){return S(t,r,n)!==S(e,r,n)&&S(t,e,r)!==S(t,e,n)}function Ha(t,e,r){var n=r*r;if(1===e.length)return t.distSqr(e[0])<n;for(var i=1;i<e.length;i++)if(Ya(t,e[i-1],e[i])<n)return !0;return !1}function Ya(t,e,r){var n=e.distSqr(r);if(0===n)return t.distSqr(e);var i=((t.x-e.x)*(r.x-e.x)+(t.y-e.y)*(r.y-e.y))/n;return t.distSqr(i<0?e:i>1?r:r.sub(e)._mult(i)._add(e))}function $a(t,e){for(var r,n,i,a=!1,o=0;o<t.length;o++)for(var s=0,u=(r=t[o]).length-1;s<r.length;u=s++)(n=r[s]).y>e.y!=(i=r[u]).y>e.y&&e.x<(i.x-n.x)*(e.y-n.y)/(i.y-n.y)+n.x&&(a=!a);return a}function Wa(t,e){for(var r=!1,n=0,i=t.length-1;n<t.length;i=n++){var a=t[n],o=t[i];a.y>e.y!=o.y>e.y&&e.x<(o.x-a.x)*(e.y-a.y)/(o.y-a.y)+a.x&&(r=!r);}return r}function Qa(t,e,r){var n=r[0],i=r[2];if(t.x<n.x&&e.x<n.x||t.x>i.x&&e.x>i.x||t.y<n.y&&e.y<n.y||t.y>i.y&&e.y>i.y)return !1;var a=S(t,e,r[0]);return a!==S(t,e,r[1])||a!==S(t,e,r[2])||a!==S(t,e,r[3])}function to(t,e,r){var n=e.paint.get(t).value;return \"constant\"===n.kind?n.value:r.programConfigurations.get(e.id).getMaxValue(t)}function eo(t){return Math.sqrt(t[0]*t[0]+t[1]*t[1])}function ro(t,e,r,n,a){if(!e[0]&&!e[1])return t;var o=i.convert(e)._mult(a);\"viewport\"===r&&o._rotate(-n);for(var s=[],u=0;u<t.length;u++)s.push(t[u].sub(o));return s}qa.prototype.populate=function(t,e,r){var n=this.layers[0],i=[],a=null;\"circle\"===n.type&&(a=n.layout.get(\"circle-sort-key\"));for(var o=0,s=t;o<s.length;o+=1){var u=s[o],l=u.feature,p=u.id,c=u.index,h=u.sourceLayerIndex,f=this.layers[0]._featureFilter.needGeometry,y=Ua(l,f);if(this.layers[0]._featureFilter.filter(new si(this.zoom),y,r)){var d=a?a.evaluate(y,{},r):void 0,m={id:p,properties:l.properties,type:l.type,sourceLayerIndex:h,index:c,geometry:f?y.geometry:Ra(l),patterns:{},sortKey:d};i.push(m);}}a&&i.sort((function(t,e){return t.sortKey-e.sortKey}));for(var v=0,g=i;v<g.length;v+=1){var x=g[v],b=x.geometry,w=x.index,_=x.sourceLayerIndex,A=t[w].feature;this.addFeature(x,b,w,r),e.featureIndex.insert(A,b,w,_,this.index);}},qa.prototype.update=function(t,e,r){this.stateDependentLayers.length&&this.programConfigurations.updatePaintArrays(t,e,this.stateDependentLayers,r);},qa.prototype.isEmpty=function(){return 0===this.layoutVertexArray.length},qa.prototype.uploadPending=function(){return !this.uploaded||this.programConfigurations.needsUpload},qa.prototype.upload=function(t){this.uploaded||(this.layoutVertexBuffer=t.createVertexBuffer(this.layoutVertexArray,oa),this.indexBuffer=t.createIndexBuffer(this.indexArray)),this.programConfigurations.upload(t),this.uploaded=!0;},qa.prototype.destroy=function(){this.layoutVertexBuffer&&(this.layoutVertexBuffer.destroy(),this.indexBuffer.destroy(),this.programConfigurations.destroy(),this.segments.destroy());},qa.prototype.addFeature=function(t,e,r,n){for(var i=0,a=e;i<a.length;i+=1)for(var o=0,s=a[i];o<s.length;o+=1){var u=s[o],l=u.x,p=u.y;if(!(l<0||l>=8192||p<0||p>=8192)){var c=this.segments.prepareSegment(4,this.layoutVertexArray,this.indexArray,t.sortKey),h=c.vertexLength;ja(this.layoutVertexArray,l,p,-1,-1),ja(this.layoutVertexArray,l,p,1,-1),ja(this.layoutVertexArray,l,p,1,1),ja(this.layoutVertexArray,l,p,-1,1),this.indexArray.emplaceBack(h,h+1,h+2),this.indexArray.emplaceBack(h,h+3,h+2),c.vertexLength+=4,c.primitiveLength+=2;}}this.programConfigurations.populatePaintArrays(this.layoutVertexArray.length,t,r,{},n);},On(\"CircleBucket\",qa,{omit:[\"layers\"]});var no=new wi({\"circle-sort-key\":new vi(Et.layout_circle[\"circle-sort-key\"])}),io={paint:new wi({\"circle-radius\":new vi(Et.paint_circle[\"circle-radius\"]),\"circle-color\":new vi(Et.paint_circle[\"circle-color\"]),\"circle-blur\":new vi(Et.paint_circle[\"circle-blur\"]),\"circle-opacity\":new vi(Et.paint_circle[\"circle-opacity\"]),\"circle-translate\":new mi(Et.paint_circle[\"circle-translate\"]),\"circle-translate-anchor\":new mi(Et.paint_circle[\"circle-translate-anchor\"]),\"circle-pitch-scale\":new mi(Et.paint_circle[\"circle-pitch-scale\"]),\"circle-pitch-alignment\":new mi(Et.paint_circle[\"circle-pitch-alignment\"]),\"circle-stroke-width\":new vi(Et.paint_circle[\"circle-stroke-width\"]),\"circle-stroke-color\":new vi(Et.paint_circle[\"circle-stroke-color\"]),\"circle-stroke-opacity\":new vi(Et.paint_circle[\"circle-stroke-opacity\"])}),layout:no},ao=\"undefined\"!=typeof Float32Array?Float32Array:Array;function oo(t){return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=1,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=1,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t}function so(t,e,r){var n=e[0],i=e[1],a=e[2],o=e[3],s=e[4],u=e[5],l=e[6],p=e[7],c=e[8],h=e[9],f=e[10],y=e[11],d=e[12],m=e[13],v=e[14],g=e[15],x=r[0],b=r[1],w=r[2],_=r[3];return t[0]=x*n+b*s+w*c+_*d,t[1]=x*i+b*u+w*h+_*m,t[2]=x*a+b*l+w*f+_*v,t[3]=x*o+b*p+w*y+_*g,t[4]=(x=r[4])*n+(b=r[5])*s+(w=r[6])*c+(_=r[7])*d,t[5]=x*i+b*u+w*h+_*m,t[6]=x*a+b*l+w*f+_*v,t[7]=x*o+b*p+w*y+_*g,t[8]=(x=r[8])*n+(b=r[9])*s+(w=r[10])*c+(_=r[11])*d,t[9]=x*i+b*u+w*h+_*m,t[10]=x*a+b*l+w*f+_*v,t[11]=x*o+b*p+w*y+_*g,t[12]=(x=r[12])*n+(b=r[13])*s+(w=r[14])*c+(_=r[15])*d,t[13]=x*i+b*u+w*h+_*m,t[14]=x*a+b*l+w*f+_*v,t[15]=x*o+b*p+w*y+_*g,t}Math.hypot||(Math.hypot=function(){for(var t=arguments,e=0,r=arguments.length;r--;)e+=t[r]*t[r];return Math.sqrt(e)});var uo,lo=so;function po(t,e,r){var n=e[0],i=e[1],a=e[2],o=e[3];return t[0]=r[0]*n+r[4]*i+r[8]*a+r[12]*o,t[1]=r[1]*n+r[5]*i+r[9]*a+r[13]*o,t[2]=r[2]*n+r[6]*i+r[10]*a+r[14]*o,t[3]=r[3]*n+r[7]*i+r[11]*a+r[15]*o,t}uo=new ao(3),ao!=Float32Array&&(uo[0]=0,uo[1]=0,uo[2]=0),function(){var t=new ao(4);ao!=Float32Array&&(t[0]=0,t[1]=0,t[2]=0,t[3]=0);}();var co=(function(){var t=new ao(2);ao!=Float32Array&&(t[0]=0,t[1]=0);}(),function(t){function e(e){t.call(this,e,io);}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e,e.prototype.createBucket=function(t){return new qa(t)},e.prototype.queryRadius=function(t){var e=t;return to(\"circle-radius\",this,e)+to(\"circle-stroke-width\",this,e)+eo(this.paint.get(\"circle-translate\"))},e.prototype.queryIntersectsFeature=function(t,e,r,n,i,a,o,s){for(var u=ro(t,this.paint.get(\"circle-translate\"),this.paint.get(\"circle-translate-anchor\"),a.angle,o),l=this.paint.get(\"circle-radius\").evaluate(e,r)+this.paint.get(\"circle-stroke-width\").evaluate(e,r),p=\"map\"===this.paint.get(\"circle-pitch-alignment\"),c=p?u:function(t,e){return t.map((function(t){return ho(t,e)}))}(u,s),h=p?l*o:l,f=0,y=n;f<y.length;f+=1)for(var d=0,m=y[f];d<m.length;d+=1){var v=m[d],g=p?v:ho(v,s),x=h,b=po([],[v.x,v.y,0,1],s);if(\"viewport\"===this.paint.get(\"circle-pitch-scale\")&&\"map\"===this.paint.get(\"circle-pitch-alignment\")?x*=b[3]/a.cameraToCenterDistance:\"map\"===this.paint.get(\"circle-pitch-scale\")&&\"viewport\"===this.paint.get(\"circle-pitch-alignment\")&&(x*=a.cameraToCenterDistance/b[3]),Ka(c,g,x))return !0}return !1},e}(_i));function ho(t,e){var r=po([],[t.x,t.y,0,1],e);return new i(r[0]/r[3],r[1]/r[3])}var fo=function(t){function e(){t.apply(this,arguments);}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e,e}(qa);function yo(t,e,r,n){var i=e.width,a=e.height;if(n){if(n instanceof Uint8ClampedArray)n=new Uint8Array(n.buffer);else if(n.length!==i*a*r)throw new RangeError(\"mismatched image size\")}else n=new Uint8Array(i*a*r);return t.width=i,t.height=a,t.data=n,t}function mo(t,e,r){var n=e.width,i=e.height;if(n!==t.width||i!==t.height){var a=yo({},{width:n,height:i},r);vo(t,a,{x:0,y:0},{x:0,y:0},{width:Math.min(t.width,n),height:Math.min(t.height,i)},r),t.width=n,t.height=i,t.data=a.data;}}function vo(t,e,r,n,i,a){if(0===i.width||0===i.height)return e;if(i.width>t.width||i.height>t.height||r.x>t.width-i.width||r.y>t.height-i.height)throw new RangeError(\"out of range source coordinates for image copy\");if(i.width>e.width||i.height>e.height||n.x>e.width-i.width||n.y>e.height-i.height)throw new RangeError(\"out of range destination coordinates for image copy\");for(var o=t.data,s=e.data,u=0;u<i.height;u++)for(var l=((r.y+u)*t.width+r.x)*a,p=((n.y+u)*e.width+n.x)*a,c=0;c<i.width*a;c++)s[p+c]=o[l+c];return e}On(\"HeatmapBucket\",fo,{omit:[\"layers\"]});var go=function(t,e){yo(this,t,1,e);};go.prototype.resize=function(t){mo(this,t,1);},go.prototype.clone=function(){return new go({width:this.width,height:this.height},new Uint8Array(this.data))},go.copy=function(t,e,r,n,i){vo(t,e,r,n,i,1);};var xo=function(t,e){yo(this,t,4,e);};xo.prototype.resize=function(t){mo(this,t,4);},xo.prototype.replace=function(t,e){e?this.data.set(t):this.data=t instanceof Uint8ClampedArray?new Uint8Array(t.buffer):t;},xo.prototype.clone=function(){return new xo({width:this.width,height:this.height},new Uint8Array(this.data))},xo.copy=function(t,e,r,n,i){vo(t,e,r,n,i,4);},On(\"AlphaImage\",go),On(\"RGBAImage\",xo);var bo={paint:new wi({\"heatmap-radius\":new vi(Et.paint_heatmap[\"heatmap-radius\"]),\"heatmap-weight\":new vi(Et.paint_heatmap[\"heatmap-weight\"]),\"heatmap-intensity\":new mi(Et.paint_heatmap[\"heatmap-intensity\"]),\"heatmap-color\":new bi(Et.paint_heatmap[\"heatmap-color\"]),\"heatmap-opacity\":new mi(Et.paint_heatmap[\"heatmap-opacity\"])})};function wo(t){var e={},r=t.resolution||256,n=t.clips?t.clips.length:1,i=t.image||new xo({width:r,height:n}),a=function(r,n,a){e[t.evaluationKey]=a;var o=t.expression.evaluate(e);i.data[r+n+0]=Math.floor(255*o.r/o.a),i.data[r+n+1]=Math.floor(255*o.g/o.a),i.data[r+n+2]=Math.floor(255*o.b/o.a),i.data[r+n+3]=Math.floor(255*o.a);};if(t.clips)for(var o=0,s=0;o<n;++o,s+=4*r)for(var u=0,l=0;u<r;u++,l+=4){var p=u/(r-1),c=t.clips[o];a(s,l,c.start*(1-p)+c.end*p);}else for(var h=0,f=0;h<r;h++,f+=4)a(0,f,h/(r-1));return i}var _o=function(t){function e(e){t.call(this,e,bo),this._updateColorRamp();}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e,e.prototype.createBucket=function(t){return new fo(t)},e.prototype._handleSpecialPaintPropertyUpdate=function(t){\"heatmap-color\"===t&&this._updateColorRamp();},e.prototype._updateColorRamp=function(){this.colorRamp=wo({expression:this._transitionablePaint._values[\"heatmap-color\"].value.expression,evaluationKey:\"heatmapDensity\",image:this.colorRamp}),this.colorRampTexture=null;},e.prototype.resize=function(){this.heatmapFbo&&(this.heatmapFbo.destroy(),this.heatmapFbo=null);},e.prototype.queryRadius=function(){return 0},e.prototype.queryIntersectsFeature=function(){return !1},e.prototype.hasOffscreenPass=function(){return 0!==this.paint.get(\"heatmap-opacity\")&&\"none\"!==this.visibility},e}(_i),Ao={paint:new wi({\"hillshade-illumination-direction\":new mi(Et.paint_hillshade[\"hillshade-illumination-direction\"]),\"hillshade-illumination-anchor\":new mi(Et.paint_hillshade[\"hillshade-illumination-anchor\"]),\"hillshade-exaggeration\":new mi(Et.paint_hillshade[\"hillshade-exaggeration\"]),\"hillshade-shadow-color\":new mi(Et.paint_hillshade[\"hillshade-shadow-color\"]),\"hillshade-highlight-color\":new mi(Et.paint_hillshade[\"hillshade-highlight-color\"]),\"hillshade-accent-color\":new mi(Et.paint_hillshade[\"hillshade-accent-color\"])})},So=function(t){function e(e){t.call(this,e,Ao);}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e,e.prototype.hasOffscreenPass=function(){return 0!==this.paint.get(\"hillshade-exaggeration\")&&\"none\"!==this.visibility},e}(_i),ko=Ii([{name:\"a_pos\",components:2,type:\"Int16\"}],4).members,Io=Co,zo=Co;function Co(t,e,r){r=r||2;var n,i,a,o,s,u,l,p=e&&e.length,c=p?e[0]*r:t.length,h=Eo(t,0,c,r,!0),f=[];if(!h||h.next===h.prev)return f;if(p&&(h=function(t,e,r,n){var i,a,o,s=[];for(i=0,a=e.length;i<a;i++)(o=Eo(t,e[i]*n,i<a-1?e[i+1]*n:t.length,n,!1))===o.next&&(o.steiner=!0),s.push(Uo(o));for(s.sort(Do),i=0;i<s.length;i++)Lo(s[i],r),r=Po(r,r.next);return r}(t,e,h,r)),t.length>80*r){n=a=t[0],i=o=t[1];for(var y=r;y<c;y+=r)(s=t[y])<n&&(n=s),(u=t[y+1])<i&&(i=u),s>a&&(a=s),u>o&&(o=u);l=0!==(l=Math.max(a-n,o-i))?1/l:0;}return Mo(h,f,r,n,i,l),f}function Eo(t,e,r,n,i){var a,o;if(i===Qo(t,e,r,n)>0)for(a=e;a<r;a+=n)o=Yo(a,t[a],t[a+1],o);else for(a=r-n;a>=e;a-=n)o=Yo(a,t[a],t[a+1],o);return o&&Ko(o,o.next)&&($o(o),o=o.next),o}function Po(t,e){if(!t)return t;e||(e=t);var r,n=t;do{if(r=!1,n.steiner||!Ko(n,n.next)&&0!==No(n.prev,n,n.next))n=n.next;else {if($o(n),(n=e=n.prev)===n.next)break;r=!0;}}while(r||n!==e);return e}function Mo(t,e,r,n,i,a,o){if(t){!o&&a&&function(t,e,r,n){var i=t;do{null===i.z&&(i.z=Ro(i.x,i.y,e,r,n)),i.prevZ=i.prev,i.nextZ=i.next,i=i.next;}while(i!==t);i.prevZ.nextZ=null,i.prevZ=null,function(t){var e,r,n,i,a,o,s,u,l=1;do{for(r=t,t=null,a=null,o=0;r;){for(o++,n=r,s=0,e=0;e<l&&(s++,n=n.nextZ);e++);for(u=l;s>0||u>0&&n;)0!==s&&(0===u||!n||r.z<=n.z)?(i=r,r=r.nextZ,s--):(i=n,n=n.nextZ,u--),a?a.nextZ=i:t=i,i.prevZ=a,a=i;r=n;}a.nextZ=null,l*=2;}while(o>1)}(i);}(t,n,i,a);for(var s,u,l=t;t.prev!==t.next;)if(s=t.prev,u=t.next,a?To(t,n,i,a):Bo(t))e.push(s.i/r),e.push(t.i/r),e.push(u.i/r),$o(t),t=u.next,l=u.next;else if((t=u)===l){o?1===o?Mo(t=Vo(Po(t),e,r),e,r,n,i,a,2):2===o&&Fo(t,e,r,n,i,a):Mo(Po(t),e,r,n,i,a,1);break}}}function Bo(t){var e=t.prev,r=t,n=t.next;if(No(e,r,n)>=0)return !1;for(var i=t.next.next;i!==t.prev;){if(jo(e.x,e.y,r.x,r.y,n.x,n.y,i.x,i.y)&&No(i.prev,i,i.next)>=0)return !1;i=i.next;}return !0}function To(t,e,r,n){var i=t.prev,a=t,o=t.next;if(No(i,a,o)>=0)return !1;for(var s=i.x>a.x?i.x>o.x?i.x:o.x:a.x>o.x?a.x:o.x,u=i.y>a.y?i.y>o.y?i.y:o.y:a.y>o.y?a.y:o.y,l=Ro(i.x<a.x?i.x<o.x?i.x:o.x:a.x<o.x?a.x:o.x,i.y<a.y?i.y<o.y?i.y:o.y:a.y<o.y?a.y:o.y,e,r,n),p=Ro(s,u,e,r,n),c=t.prevZ,h=t.nextZ;c&&c.z>=l&&h&&h.z<=p;){if(c!==t.prev&&c!==t.next&&jo(i.x,i.y,a.x,a.y,o.x,o.y,c.x,c.y)&&No(c.prev,c,c.next)>=0)return !1;if(c=c.prevZ,h!==t.prev&&h!==t.next&&jo(i.x,i.y,a.x,a.y,o.x,o.y,h.x,h.y)&&No(h.prev,h,h.next)>=0)return !1;h=h.nextZ;}for(;c&&c.z>=l;){if(c!==t.prev&&c!==t.next&&jo(i.x,i.y,a.x,a.y,o.x,o.y,c.x,c.y)&&No(c.prev,c,c.next)>=0)return !1;c=c.prevZ;}for(;h&&h.z<=p;){if(h!==t.prev&&h!==t.next&&jo(i.x,i.y,a.x,a.y,o.x,o.y,h.x,h.y)&&No(h.prev,h,h.next)>=0)return !1;h=h.nextZ;}return !0}function Vo(t,e,r){var n=t;do{var i=n.prev,a=n.next.next;!Ko(i,a)&&Go(i,n,n.next,a)&&Jo(i,a)&&Jo(a,i)&&(e.push(i.i/r),e.push(n.i/r),e.push(a.i/r),$o(n),$o(n.next),n=t=a),n=n.next;}while(n!==t);return Po(n)}function Fo(t,e,r,n,i,a){var o=t;do{for(var s=o.next.next;s!==o.prev;){if(o.i!==s.i&&qo(o,s)){var u=Ho(o,s);return o=Po(o,o.next),u=Po(u,u.next),Mo(o,e,r,n,i,a),void Mo(u,e,r,n,i,a)}s=s.next;}o=o.next;}while(o!==t)}function Do(t,e){return t.x-e.x}function Lo(t,e){if(e=function(t,e){var r,n=e,i=t.x,a=t.y,o=-1/0;do{if(a<=n.y&&a>=n.next.y&&n.next.y!==n.y){var s=n.x+(a-n.y)*(n.next.x-n.x)/(n.next.y-n.y);if(s<=i&&s>o){if(o=s,s===i){if(a===n.y)return n;if(a===n.next.y)return n.next}r=n.x<n.next.x?n:n.next;}}n=n.next;}while(n!==e);if(!r)return null;if(i===o)return r;var u,l=r,p=r.x,c=r.y,h=1/0;n=r;do{i>=n.x&&n.x>=p&&i!==n.x&&jo(a<c?i:o,a,p,c,a<c?o:i,a,n.x,n.y)&&(u=Math.abs(a-n.y)/(i-n.x),Jo(n,t)&&(u<h||u===h&&(n.x>r.x||n.x===r.x&&Oo(r,n)))&&(r=n,h=u)),n=n.next;}while(n!==l);return r}(t,e)){var r=Ho(e,t);Po(e,e.next),Po(r,r.next);}}function Oo(t,e){return No(t.prev,t,e.prev)<0&&No(e.next,t,t.next)<0}function Ro(t,e,r,n,i){return (t=1431655765&((t=858993459&((t=252645135&((t=16711935&((t=32767*(t-r)*i)|t<<8))|t<<4))|t<<2))|t<<1))|(e=1431655765&((e=858993459&((e=252645135&((e=16711935&((e=32767*(e-n)*i)|e<<8))|e<<4))|e<<2))|e<<1))<<1}function Uo(t){var e=t,r=t;do{(e.x<r.x||e.x===r.x&&e.y<r.y)&&(r=e),e=e.next;}while(e!==t);return r}function jo(t,e,r,n,i,a,o,s){return (i-o)*(e-s)-(t-o)*(a-s)>=0&&(t-o)*(n-s)-(r-o)*(e-s)>=0&&(r-o)*(a-s)-(i-o)*(n-s)>=0}function qo(t,e){return t.next.i!==e.i&&t.prev.i!==e.i&&!function(t,e){var r=t;do{if(r.i!==t.i&&r.next.i!==t.i&&r.i!==e.i&&r.next.i!==e.i&&Go(r,r.next,t,e))return !0;r=r.next;}while(r!==t);return !1}(t,e)&&(Jo(t,e)&&Jo(e,t)&&function(t,e){var r=t,n=!1,i=(t.x+e.x)/2,a=(t.y+e.y)/2;do{r.y>a!=r.next.y>a&&r.next.y!==r.y&&i<(r.next.x-r.x)*(a-r.y)/(r.next.y-r.y)+r.x&&(n=!n),r=r.next;}while(r!==t);return n}(t,e)&&(No(t.prev,t,e.prev)||No(t,e.prev,e))||Ko(t,e)&&No(t.prev,t,t.next)>0&&No(e.prev,e,e.next)>0)}function No(t,e,r){return (e.y-t.y)*(r.x-e.x)-(e.x-t.x)*(r.y-e.y)}function Ko(t,e){return t.x===e.x&&t.y===e.y}function Go(t,e,r,n){var i=Xo(No(t,e,r)),a=Xo(No(t,e,n)),o=Xo(No(r,n,t)),s=Xo(No(r,n,e));return i!==a&&o!==s||!(0!==i||!Zo(t,r,e))||!(0!==a||!Zo(t,n,e))||!(0!==o||!Zo(r,t,n))||!(0!==s||!Zo(r,e,n))}function Zo(t,e,r){return e.x<=Math.max(t.x,r.x)&&e.x>=Math.min(t.x,r.x)&&e.y<=Math.max(t.y,r.y)&&e.y>=Math.min(t.y,r.y)}function Xo(t){return t>0?1:t<0?-1:0}function Jo(t,e){return No(t.prev,t,t.next)<0?No(t,e,t.next)>=0&&No(t,t.prev,e)>=0:No(t,e,t.prev)<0||No(t,t.next,e)<0}function Ho(t,e){var r=new Wo(t.i,t.x,t.y),n=new Wo(e.i,e.x,e.y),i=t.next,a=e.prev;return t.next=e,e.prev=t,r.next=i,i.prev=r,n.next=r,r.prev=n,a.next=n,n.prev=a,n}function Yo(t,e,r,n){var i=new Wo(t,e,r);return n?(i.next=n.next,i.prev=n,n.next.prev=i,n.next=i):(i.prev=i,i.next=i),i}function $o(t){t.next.prev=t.prev,t.prev.next=t.next,t.prevZ&&(t.prevZ.nextZ=t.nextZ),t.nextZ&&(t.nextZ.prevZ=t.prevZ);}function Wo(t,e,r){this.i=t,this.x=e,this.y=r,this.prev=null,this.next=null,this.z=null,this.prevZ=null,this.nextZ=null,this.steiner=!1;}function Qo(t,e,r,n){for(var i=0,a=e,o=r-n;a<r;a+=n)i+=(t[o]-t[a])*(t[a+1]+t[o+1]),o=a;return i}function ts(t,e,r,n,i){!function t(e,r,n,i,a){for(;i>n;){if(i-n>600){var o=i-n+1,s=r-n+1,u=Math.log(o),l=.5*Math.exp(2*u/3),p=.5*Math.sqrt(u*l*(o-l)/o)*(s-o/2<0?-1:1);t(e,r,Math.max(n,Math.floor(r-s*l/o+p)),Math.min(i,Math.floor(r+(o-s)*l/o+p)),a);}var c=e[r],h=n,f=i;for(es(e,n,r),a(e[i],c)>0&&es(e,n,i);h<f;){for(es(e,h,f),h++,f--;a(e[h],c)<0;)h++;for(;a(e[f],c)>0;)f--;}0===a(e[n],c)?es(e,n,f):es(e,++f,i),f<=r&&(n=f+1),r<=f&&(i=f-1);}}(t,e,r||0,n||t.length-1,i||rs);}function es(t,e,r){var n=t[e];t[e]=t[r],t[r]=n;}function rs(t,e){return t<e?-1:t>e?1:0}function ns(t,e){var r=t.length;if(r<=1)return [t];for(var n,i,a=[],o=0;o<r;o++){var s=k(t[o]);0!==s&&(t[o].area=Math.abs(s),void 0===i&&(i=s<0),i===s<0?(n&&a.push(n),n=[t[o]]):n.push(t[o]));}if(n&&a.push(n),e>1)for(var u=0;u<a.length;u++)a[u].length<=e||(ts(a[u],e,1,a[u].length-1,is),a[u]=a[u].slice(0,e));return a}function is(t,e){return e.area-t.area}function as(t,e,r){for(var n=r.patternDependencies,i=!1,a=0,o=e;a<o.length;a+=1){var s=o[a].paint.get(t+\"-pattern\");s.isConstant()||(i=!0);var u=s.constantOr(null);u&&(i=!0,n[u.to]=!0,n[u.from]=!0);}return i}function os(t,e,r,n,i){for(var a=i.patternDependencies,o=0,s=e;o<s.length;o+=1){var u=s[o],l=u.paint.get(t+\"-pattern\").value;if(\"constant\"!==l.kind){var p=l.evaluate({zoom:n-1},r,{},i.availableImages),c=l.evaluate({zoom:n},r,{},i.availableImages),h=l.evaluate({zoom:n+1},r,{},i.availableImages);c=c&&c.name?c.name:c,h=h&&h.name?h.name:h,a[p=p&&p.name?p.name:p]=!0,a[c]=!0,a[h]=!0,r.patterns[u.id]={min:p,mid:c,max:h};}}return r}Co.deviation=function(t,e,r,n){var i=e&&e.length,a=Math.abs(Qo(t,0,i?e[0]*r:t.length,r));if(i)for(var o=0,s=e.length;o<s;o++)a-=Math.abs(Qo(t,e[o]*r,o<s-1?e[o+1]*r:t.length,r));var u=0;for(o=0;o<n.length;o+=3){var l=n[o]*r,p=n[o+1]*r,c=n[o+2]*r;u+=Math.abs((t[l]-t[c])*(t[p+1]-t[l+1])-(t[l]-t[p])*(t[c+1]-t[l+1]));}return 0===a&&0===u?0:Math.abs((u-a)/a)},Co.flatten=function(t){for(var e=t[0][0].length,r={vertices:[],holes:[],dimensions:e},n=0,i=0;i<t.length;i++){for(var a=0;a<t[i].length;a++)for(var o=0;o<e;o++)r.vertices.push(t[i][a][o]);i>0&&r.holes.push(n+=t[i-1].length);}return r},Io.default=zo;var ss=function(t){this.zoom=t.zoom,this.overscaling=t.overscaling,this.layers=t.layers,this.layerIds=this.layers.map((function(t){return t.id})),this.index=t.index,this.hasPattern=!1,this.patternFeatures=[],this.layoutVertexArray=new Ci,this.indexArray=new ji,this.indexArray2=new Xi,this.programConfigurations=new Va(t.layers,t.zoom),this.segments=new sa,this.segments2=new sa,this.stateDependentLayerIds=this.layers.filter((function(t){return t.isStateDependent()})).map((function(t){return t.id}));};ss.prototype.populate=function(t,e,r){this.hasPattern=as(\"fill\",this.layers,e);for(var n=this.layers[0].layout.get(\"fill-sort-key\"),i=[],a=0,o=t;a<o.length;a+=1){var s=o[a],u=s.feature,l=s.id,p=s.index,c=s.sourceLayerIndex,h=this.layers[0]._featureFilter.needGeometry,f=Ua(u,h);if(this.layers[0]._featureFilter.filter(new si(this.zoom),f,r)){var y=n?n.evaluate(f,{},r,e.availableImages):void 0,d={id:l,properties:u.properties,type:u.type,sourceLayerIndex:c,index:p,geometry:h?f.geometry:Ra(u),patterns:{},sortKey:y};i.push(d);}}n&&i.sort((function(t,e){return t.sortKey-e.sortKey}));for(var m=0,v=i;m<v.length;m+=1){var g=v[m],x=g.geometry,b=g.index,w=g.sourceLayerIndex;if(this.hasPattern){var _=os(\"fill\",this.layers,g,this.zoom,e);this.patternFeatures.push(_);}else this.addFeature(g,x,b,r,{});e.featureIndex.insert(t[b].feature,x,b,w,this.index);}},ss.prototype.update=function(t,e,r){this.stateDependentLayers.length&&this.programConfigurations.updatePaintArrays(t,e,this.stateDependentLayers,r);},ss.prototype.addFeatures=function(t,e,r){for(var n=0,i=this.patternFeatures;n<i.length;n+=1){var a=i[n];this.addFeature(a,a.geometry,a.index,e,r);}},ss.prototype.isEmpty=function(){return 0===this.layoutVertexArray.length},ss.prototype.uploadPending=function(){return !this.uploaded||this.programConfigurations.needsUpload},ss.prototype.upload=function(t){this.uploaded||(this.layoutVertexBuffer=t.createVertexBuffer(this.layoutVertexArray,ko),this.indexBuffer=t.createIndexBuffer(this.indexArray),this.indexBuffer2=t.createIndexBuffer(this.indexArray2)),this.programConfigurations.upload(t),this.uploaded=!0;},ss.prototype.destroy=function(){this.layoutVertexBuffer&&(this.layoutVertexBuffer.destroy(),this.indexBuffer.destroy(),this.indexBuffer2.destroy(),this.programConfigurations.destroy(),this.segments.destroy(),this.segments2.destroy());},ss.prototype.addFeature=function(t,e,r,n,i){for(var a=0,o=ns(e,500);a<o.length;a+=1){for(var s=o[a],u=0,l=0,p=s;l<p.length;l+=1)u+=p[l].length;for(var c=this.segments.prepareSegment(u,this.layoutVertexArray,this.indexArray),h=c.vertexLength,f=[],y=[],d=0,m=s;d<m.length;d+=1){var v=m[d];if(0!==v.length){v!==s[0]&&y.push(f.length/2);var g=this.segments2.prepareSegment(v.length,this.layoutVertexArray,this.indexArray2),x=g.vertexLength;this.layoutVertexArray.emplaceBack(v[0].x,v[0].y),this.indexArray2.emplaceBack(x+v.length-1,x),f.push(v[0].x),f.push(v[0].y);for(var b=1;b<v.length;b++)this.layoutVertexArray.emplaceBack(v[b].x,v[b].y),this.indexArray2.emplaceBack(x+b-1,x+b),f.push(v[b].x),f.push(v[b].y);g.vertexLength+=v.length,g.primitiveLength+=v.length;}}for(var w=Io(f,y),_=0;_<w.length;_+=3)this.indexArray.emplaceBack(h+w[_],h+w[_+1],h+w[_+2]);c.vertexLength+=u,c.primitiveLength+=w.length/3;}this.programConfigurations.populatePaintArrays(this.layoutVertexArray.length,t,r,i,n);},On(\"FillBucket\",ss,{omit:[\"layers\",\"patternFeatures\"]});var us=new wi({\"fill-sort-key\":new vi(Et.layout_fill[\"fill-sort-key\"])}),ls={paint:new wi({\"fill-antialias\":new mi(Et.paint_fill[\"fill-antialias\"]),\"fill-opacity\":new vi(Et.paint_fill[\"fill-opacity\"]),\"fill-color\":new vi(Et.paint_fill[\"fill-color\"]),\"fill-outline-color\":new vi(Et.paint_fill[\"fill-outline-color\"]),\"fill-translate\":new mi(Et.paint_fill[\"fill-translate\"]),\"fill-translate-anchor\":new mi(Et.paint_fill[\"fill-translate-anchor\"]),\"fill-pattern\":new gi(Et.paint_fill[\"fill-pattern\"])}),layout:us},ps=function(t){function e(e){t.call(this,e,ls);}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e,e.prototype.recalculate=function(e,r){t.prototype.recalculate.call(this,e,r);var n=this.paint._values[\"fill-outline-color\"];\"constant\"===n.value.kind&&void 0===n.value.value&&(this.paint._values[\"fill-outline-color\"]=this.paint._values[\"fill-color\"]);},e.prototype.createBucket=function(t){return new ss(t)},e.prototype.queryRadius=function(){return eo(this.paint.get(\"fill-translate\"))},e.prototype.queryIntersectsFeature=function(t,e,r,n,i,a,o){return Ga(ro(t,this.paint.get(\"fill-translate\"),this.paint.get(\"fill-translate-anchor\"),a.angle,o),n)},e.prototype.isTileClipped=function(){return !0},e}(_i),cs=Ii([{name:\"a_pos\",components:2,type:\"Int16\"},{name:\"a_normal_ed\",components:4,type:\"Int16\"}],4).members,hs=fs;function fs(t,e,r,n,i){this.properties={},this.extent=r,this.type=0,this._pbf=t,this._geometry=-1,this._keys=n,this._values=i,t.readFields(ys,this,e);}function ys(t,e,r){1==t?e.id=r.readVarint():2==t?function(t,e){for(var r=t.readVarint()+t.pos;t.pos<r;){var n=e._keys[t.readVarint()],i=e._values[t.readVarint()];e.properties[n]=i;}}(r,e):3==t?e.type=r.readVarint():4==t&&(e._geometry=r.pos);}function ds(t){for(var e,r,n=0,i=0,a=t.length,o=a-1;i<a;o=i++)n+=((r=t[o]).x-(e=t[i]).x)*(e.y+r.y);return n}fs.types=[\"Unknown\",\"Point\",\"LineString\",\"Polygon\"],fs.prototype.loadGeometry=function(){var t=this._pbf;t.pos=this._geometry;for(var e,r=t.readVarint()+t.pos,n=1,a=0,o=0,s=0,u=[];t.pos<r;){if(a<=0){var l=t.readVarint();n=7&l,a=l>>3;}if(a--,1===n||2===n)o+=t.readSVarint(),s+=t.readSVarint(),1===n&&(e&&u.push(e),e=[]),e.push(new i(o,s));else {if(7!==n)throw new Error(\"unknown command \"+n);e&&e.push(e[0].clone());}}return e&&u.push(e),u},fs.prototype.bbox=function(){var t=this._pbf;t.pos=this._geometry;for(var e=t.readVarint()+t.pos,r=1,n=0,i=0,a=0,o=1/0,s=-1/0,u=1/0,l=-1/0;t.pos<e;){if(n<=0){var p=t.readVarint();r=7&p,n=p>>3;}if(n--,1===r||2===r)(i+=t.readSVarint())<o&&(o=i),i>s&&(s=i),(a+=t.readSVarint())<u&&(u=a),a>l&&(l=a);else if(7!==r)throw new Error(\"unknown command \"+r)}return [o,u,s,l]},fs.prototype.toGeoJSON=function(t,e,r){var n,i,a=this.extent*Math.pow(2,r),o=this.extent*t,s=this.extent*e,u=this.loadGeometry(),l=fs.types[this.type];function p(t){for(var e=0;e<t.length;e++){var r=t[e];t[e]=[360*(r.x+o)/a-180,360/Math.PI*Math.atan(Math.exp((180-360*(r.y+s)/a)*Math.PI/180))-90];}}switch(this.type){case 1:var c=[];for(n=0;n<u.length;n++)c[n]=u[n][0];p(u=c);break;case 2:for(n=0;n<u.length;n++)p(u[n]);break;case 3:for(u=function(t){var e=t.length;if(e<=1)return [t];for(var r,n,i=[],a=0;a<e;a++){var o=ds(t[a]);0!==o&&(void 0===n&&(n=o<0),n===o<0?(r&&i.push(r),r=[t[a]]):r.push(t[a]));}return r&&i.push(r),i}(u),n=0;n<u.length;n++)for(i=0;i<u[n].length;i++)p(u[n][i]);}1===u.length?u=u[0]:l=\"Multi\"+l;var h={type:\"Feature\",geometry:{type:l,coordinates:u},properties:this.properties};return \"id\"in this&&(h.id=this.id),h};var ms=vs;function vs(t,e){this.version=1,this.name=null,this.extent=4096,this.length=0,this._pbf=t,this._keys=[],this._values=[],this._features=[],t.readFields(gs,this,e),this.length=this._features.length;}function gs(t,e,r){15===t?e.version=r.readVarint():1===t?e.name=r.readString():5===t?e.extent=r.readVarint():2===t?e._features.push(r.pos):3===t?e._keys.push(r.readString()):4===t&&e._values.push(function(t){for(var e=null,r=t.readVarint()+t.pos;t.pos<r;){var n=t.readVarint()>>3;e=1===n?t.readString():2===n?t.readFloat():3===n?t.readDouble():4===n?t.readVarint64():5===n?t.readVarint():6===n?t.readSVarint():7===n?t.readBoolean():null;}return e}(r));}function xs(t,e,r){if(3===t){var n=new ms(r,r.readVarint()+r.pos);n.length&&(e[n.name]=n);}}vs.prototype.feature=function(t){if(t<0||t>=this._features.length)throw new Error(\"feature index out of bounds\");this._pbf.pos=this._features[t];var e=this._pbf.readVarint()+this._pbf.pos;return new hs(this._pbf,e,this.extent,this._keys,this._values)};var bs={VectorTile:function(t,e){this.layers=t.readFields(xs,{},e);},VectorTileFeature:hs,VectorTileLayer:ms},ws=bs.VectorTileFeature.types,_s=Math.pow(2,13);function As(t,e,r,n,i,a,o,s){t.emplaceBack(e,r,2*Math.floor(n*_s)+o,i*_s*2,a*_s*2,Math.round(s));}var Ss=function(t){this.zoom=t.zoom,this.overscaling=t.overscaling,this.layers=t.layers,this.layerIds=this.layers.map((function(t){return t.id})),this.index=t.index,this.hasPattern=!1,this.layoutVertexArray=new Pi,this.indexArray=new ji,this.programConfigurations=new Va(t.layers,t.zoom),this.segments=new sa,this.stateDependentLayerIds=this.layers.filter((function(t){return t.isStateDependent()})).map((function(t){return t.id}));};function ks(t,e){return t.x===e.x&&(t.x<0||t.x>8192)||t.y===e.y&&(t.y<0||t.y>8192)}Ss.prototype.populate=function(t,e,r){this.features=[],this.hasPattern=as(\"fill-extrusion\",this.layers,e);for(var n=0,i=t;n<i.length;n+=1){var a=i[n],o=a.feature,s=a.id,u=a.index,l=a.sourceLayerIndex,p=this.layers[0]._featureFilter.needGeometry,c=Ua(o,p);if(this.layers[0]._featureFilter.filter(new si(this.zoom),c,r)){var h={id:s,sourceLayerIndex:l,index:u,geometry:p?c.geometry:Ra(o),properties:o.properties,type:o.type,patterns:{}};this.hasPattern?this.features.push(os(\"fill-extrusion\",this.layers,h,this.zoom,e)):this.addFeature(h,h.geometry,u,r,{}),e.featureIndex.insert(o,h.geometry,u,l,this.index,!0);}}},Ss.prototype.addFeatures=function(t,e,r){for(var n=0,i=this.features;n<i.length;n+=1){var a=i[n];this.addFeature(a,a.geometry,a.index,e,r);}},Ss.prototype.update=function(t,e,r){this.stateDependentLayers.length&&this.programConfigurations.updatePaintArrays(t,e,this.stateDependentLayers,r);},Ss.prototype.isEmpty=function(){return 0===this.layoutVertexArray.length},Ss.prototype.uploadPending=function(){return !this.uploaded||this.programConfigurations.needsUpload},Ss.prototype.upload=function(t){this.uploaded||(this.layoutVertexBuffer=t.createVertexBuffer(this.layoutVertexArray,cs),this.indexBuffer=t.createIndexBuffer(this.indexArray)),this.programConfigurations.upload(t),this.uploaded=!0;},Ss.prototype.destroy=function(){this.layoutVertexBuffer&&(this.layoutVertexBuffer.destroy(),this.indexBuffer.destroy(),this.programConfigurations.destroy(),this.segments.destroy());},Ss.prototype.addFeature=function(t,e,r,n,i){for(var a=0,o=ns(e,500);a<o.length;a+=1){for(var s=o[a],u=0,l=0,p=s;l<p.length;l+=1)u+=p[l].length;for(var c=this.segments.prepareSegment(4,this.layoutVertexArray,this.indexArray),h=0,f=s;h<f.length;h+=1){var y=f[h];if(0!==y.length&&!((B=y).every((function(t){return t.x<0}))||B.every((function(t){return t.x>8192}))||B.every((function(t){return t.y<0}))||B.every((function(t){return t.y>8192}))))for(var d=0,m=0;m<y.length;m++){var v=y[m];if(m>=1){var g=y[m-1];if(!ks(v,g)){c.vertexLength+4>sa.MAX_VERTEX_ARRAY_LENGTH&&(c=this.segments.prepareSegment(4,this.layoutVertexArray,this.indexArray));var x=v.sub(g)._perp()._unit(),b=g.dist(v);d+b>32768&&(d=0),As(this.layoutVertexArray,v.x,v.y,x.x,x.y,0,0,d),As(this.layoutVertexArray,v.x,v.y,x.x,x.y,0,1,d),As(this.layoutVertexArray,g.x,g.y,x.x,x.y,0,0,d+=b),As(this.layoutVertexArray,g.x,g.y,x.x,x.y,0,1,d);var w=c.vertexLength;this.indexArray.emplaceBack(w,w+2,w+1),this.indexArray.emplaceBack(w+1,w+2,w+3),c.vertexLength+=4,c.primitiveLength+=2;}}}}if(c.vertexLength+u>sa.MAX_VERTEX_ARRAY_LENGTH&&(c=this.segments.prepareSegment(u,this.layoutVertexArray,this.indexArray)),\"Polygon\"===ws[t.type]){for(var _=[],A=[],S=c.vertexLength,k=0,I=s;k<I.length;k+=1){var z=I[k];if(0!==z.length){z!==s[0]&&A.push(_.length/2);for(var C=0;C<z.length;C++){var E=z[C];As(this.layoutVertexArray,E.x,E.y,0,0,1,1,0),_.push(E.x),_.push(E.y);}}}for(var P=Io(_,A),M=0;M<P.length;M+=3)this.indexArray.emplaceBack(S+P[M],S+P[M+2],S+P[M+1]);c.primitiveLength+=P.length/3,c.vertexLength+=u;}}var B;this.programConfigurations.populatePaintArrays(this.layoutVertexArray.length,t,r,i,n);},On(\"FillExtrusionBucket\",Ss,{omit:[\"layers\",\"features\"]});var Is={paint:new wi({\"fill-extrusion-opacity\":new mi(Et[\"paint_fill-extrusion\"][\"fill-extrusion-opacity\"]),\"fill-extrusion-color\":new vi(Et[\"paint_fill-extrusion\"][\"fill-extrusion-color\"]),\"fill-extrusion-translate\":new mi(Et[\"paint_fill-extrusion\"][\"fill-extrusion-translate\"]),\"fill-extrusion-translate-anchor\":new mi(Et[\"paint_fill-extrusion\"][\"fill-extrusion-translate-anchor\"]),\"fill-extrusion-pattern\":new gi(Et[\"paint_fill-extrusion\"][\"fill-extrusion-pattern\"]),\"fill-extrusion-height\":new vi(Et[\"paint_fill-extrusion\"][\"fill-extrusion-height\"]),\"fill-extrusion-base\":new vi(Et[\"paint_fill-extrusion\"][\"fill-extrusion-base\"]),\"fill-extrusion-vertical-gradient\":new mi(Et[\"paint_fill-extrusion\"][\"fill-extrusion-vertical-gradient\"])})},zs=function(t){function e(e){t.call(this,e,Is);}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e,e.prototype.createBucket=function(t){return new Ss(t)},e.prototype.queryRadius=function(){return eo(this.paint.get(\"fill-extrusion-translate\"))},e.prototype.is3D=function(){return !0},e.prototype.queryIntersectsFeature=function(t,e,r,n,a,o,s,u){var l=ro(t,this.paint.get(\"fill-extrusion-translate\"),this.paint.get(\"fill-extrusion-translate-anchor\"),o.angle,s),p=this.paint.get(\"fill-extrusion-height\").evaluate(e,r),c=this.paint.get(\"fill-extrusion-base\").evaluate(e,r),h=function(t,e,r,n){for(var a=[],o=0,s=t;o<s.length;o+=1){var u=s[o],l=[u.x,u.y,0,1];po(l,l,e),a.push(new i(l[0]/l[3],l[1]/l[3]));}return a}(l,u),f=function(t,e,r,n){for(var a=[],o=[],s=n[8]*e,u=n[9]*e,l=n[10]*e,p=n[11]*e,c=n[8]*r,h=n[9]*r,f=n[10]*r,y=n[11]*r,d=0,m=t;d<m.length;d+=1){for(var v=[],g=[],x=0,b=m[d];x<b.length;x+=1){var w=b[x],_=w.x,A=w.y,S=n[0]*_+n[4]*A+n[12],k=n[1]*_+n[5]*A+n[13],I=n[2]*_+n[6]*A+n[14],z=n[3]*_+n[7]*A+n[15],C=I+l,E=z+p,P=S+c,M=k+h,B=I+f,T=z+y,V=new i((S+s)/E,(k+u)/E);V.z=C/E,v.push(V);var F=new i(P/T,M/T);F.z=B/T,g.push(F);}a.push(v),o.push(g);}return [a,o]}(n,c,p,u);return function(t,e,r){var n=1/0;Ga(r,e)&&(n=Es(r,e[0]));for(var i=0;i<e.length;i++)for(var a=e[i],o=t[i],s=0;s<a.length-1;s++){var u=a[s],l=[u,a[s+1],o[s+1],o[s],u];Na(r,l)&&(n=Math.min(n,Es(r,l)));}return n!==1/0&&n}(f[0],f[1],h)},e}(_i);function Cs(t,e){return t.x*e.x+t.y*e.y}function Es(t,e){if(1===t.length){for(var r,n=0,i=e[n++];!r||i.equals(r);)if(!(r=e[n++]))return 1/0;for(;n<e.length;n++){var a=e[n],o=t[0],s=r.sub(i),u=a.sub(i),l=o.sub(i),p=Cs(s,s),c=Cs(s,u),h=Cs(u,u),f=Cs(l,s),y=Cs(l,u),d=p*h-c*c,m=(h*f-c*y)/d,v=(p*y-c*f)/d,g=i.z*(1-m-v)+r.z*m+a.z*v;if(isFinite(g))return g}return 1/0}for(var x=1/0,b=0,w=e;b<w.length;b+=1)x=Math.min(x,w[b].z);return x}var Ps=Ii([{name:\"a_pos_normal\",components:2,type:\"Int16\"},{name:\"a_data\",components:4,type:\"Uint8\"}],4).members,Ms=Ii([{name:\"a_uv_x\",components:1,type:\"Float32\"},{name:\"a_split_index\",components:1,type:\"Float32\"}]).members,Bs=bs.VectorTileFeature.types,Ts=Math.cos(Math.PI/180*37.5),Vs=Math.pow(2,14)/.5,Fs=function(t){var e=this;this.zoom=t.zoom,this.overscaling=t.overscaling,this.layers=t.layers,this.layerIds=this.layers.map((function(t){return t.id})),this.index=t.index,this.hasPattern=!1,this.patternFeatures=[],this.lineClipsArray=[],this.gradients={},this.layers.forEach((function(t){e.gradients[t.id]={};})),this.layoutVertexArray=new Mi,this.layoutVertexArray2=new Bi,this.indexArray=new ji,this.programConfigurations=new Va(t.layers,t.zoom),this.segments=new sa,this.maxLineLength=0,this.stateDependentLayerIds=this.layers.filter((function(t){return t.isStateDependent()})).map((function(t){return t.id}));};Fs.prototype.populate=function(t,e,r){this.hasPattern=as(\"line\",this.layers,e);for(var n=this.layers[0].layout.get(\"line-sort-key\"),i=[],a=0,o=t;a<o.length;a+=1){var s=o[a],u=s.feature,l=s.id,p=s.index,c=s.sourceLayerIndex,h=this.layers[0]._featureFilter.needGeometry,f=Ua(u,h);if(this.layers[0]._featureFilter.filter(new si(this.zoom),f,r)){var y=n?n.evaluate(f,{},r):void 0,d={id:l,properties:u.properties,type:u.type,sourceLayerIndex:c,index:p,geometry:h?f.geometry:Ra(u),patterns:{},sortKey:y};i.push(d);}}n&&i.sort((function(t,e){return t.sortKey-e.sortKey}));for(var m=0,v=i;m<v.length;m+=1){var g=v[m],x=g.geometry,b=g.index,w=g.sourceLayerIndex;if(this.hasPattern){var _=os(\"line\",this.layers,g,this.zoom,e);this.patternFeatures.push(_);}else this.addFeature(g,x,b,r,{});e.featureIndex.insert(t[b].feature,x,b,w,this.index);}},Fs.prototype.update=function(t,e,r){this.stateDependentLayers.length&&this.programConfigurations.updatePaintArrays(t,e,this.stateDependentLayers,r);},Fs.prototype.addFeatures=function(t,e,r){for(var n=0,i=this.patternFeatures;n<i.length;n+=1){var a=i[n];this.addFeature(a,a.geometry,a.index,e,r);}},Fs.prototype.isEmpty=function(){return 0===this.layoutVertexArray.length},Fs.prototype.uploadPending=function(){return !this.uploaded||this.programConfigurations.needsUpload},Fs.prototype.upload=function(t){this.uploaded||(0!==this.layoutVertexArray2.length&&(this.layoutVertexBuffer2=t.createVertexBuffer(this.layoutVertexArray2,Ms)),this.layoutVertexBuffer=t.createVertexBuffer(this.layoutVertexArray,Ps),this.indexBuffer=t.createIndexBuffer(this.indexArray)),this.programConfigurations.upload(t),this.uploaded=!0;},Fs.prototype.destroy=function(){this.layoutVertexBuffer&&(this.layoutVertexBuffer.destroy(),this.indexBuffer.destroy(),this.programConfigurations.destroy(),this.segments.destroy());},Fs.prototype.lineFeatureClips=function(t){if(t.properties&&t.properties.hasOwnProperty(\"mapbox_clip_start\")&&t.properties.hasOwnProperty(\"mapbox_clip_end\"))return {start:+t.properties.mapbox_clip_start,end:+t.properties.mapbox_clip_end}},Fs.prototype.addFeature=function(t,e,r,n,i){var a=this.layers[0].layout,o=a.get(\"line-join\").evaluate(t,{}),s=a.get(\"line-cap\"),u=a.get(\"line-miter-limit\"),l=a.get(\"line-round-limit\");this.lineClips=this.lineFeatureClips(t);for(var p=0,c=e;p<c.length;p+=1)this.addLine(c[p],t,o,s,u,l);this.programConfigurations.populatePaintArrays(this.layoutVertexArray.length,t,r,i,n);},Fs.prototype.addLine=function(t,e,r,n,i,a){if(this.distance=0,this.scaledDistance=0,this.totalDistance=0,this.lineClips){this.lineClipsArray.push(this.lineClips);for(var o=0;o<t.length-1;o++)this.totalDistance+=t[o].dist(t[o+1]);this.updateScaledDistance(),this.maxLineLength=Math.max(this.maxLineLength,this.totalDistance);}for(var s=\"Polygon\"===Bs[e.type],u=t.length;u>=2&&t[u-1].equals(t[u-2]);)u--;for(var l=0;l<u-1&&t[l].equals(t[l+1]);)l++;if(!(u<(s?3:2))){\"bevel\"===r&&(i=1.05);var p,c=this.overscaling<=16?122880/(512*this.overscaling):0,h=this.segments.prepareSegment(10*u,this.layoutVertexArray,this.indexArray),f=void 0,y=void 0,d=void 0,m=void 0;this.e1=this.e2=-1,s&&(m=t[l].sub(p=t[u-2])._unit()._perp());for(var v=l;v<u;v++)if(!(y=v===u-1?s?t[l+1]:void 0:t[v+1])||!t[v].equals(y)){m&&(d=m),p&&(f=p),p=t[v],m=y?y.sub(p)._unit()._perp():d;var g=(d=d||m).add(m);0===g.x&&0===g.y||g._unit();var x=d.x*m.x+d.y*m.y,b=g.x*m.x+g.y*m.y,w=0!==b?1/b:1/0,_=2*Math.sqrt(2-2*b),A=b<Ts&&f&&y,S=d.x*m.y-d.y*m.x>0;if(A&&v>l){var k=p.dist(f);if(k>2*c){var I=p.sub(p.sub(f)._mult(c/k)._round());this.updateDistance(f,I),this.addCurrentVertex(I,d,0,0,h),f=I;}}var z=f&&y,C=z?r:s?\"butt\":n;if(z&&\"round\"===C&&(w<a?C=\"miter\":w<=2&&(C=\"fakeround\")),\"miter\"===C&&w>i&&(C=\"bevel\"),\"bevel\"===C&&(w>2&&(C=\"flipbevel\"),w<i&&(C=\"miter\")),f&&this.updateDistance(f,p),\"miter\"===C)g._mult(w),this.addCurrentVertex(p,g,0,0,h);else if(\"flipbevel\"===C){if(w>100)g=m.mult(-1);else {var E=w*d.add(m).mag()/d.sub(m).mag();g._perp()._mult(E*(S?-1:1));}this.addCurrentVertex(p,g,0,0,h),this.addCurrentVertex(p,g.mult(-1),0,0,h);}else if(\"bevel\"===C||\"fakeround\"===C){var P=-Math.sqrt(w*w-1),M=S?P:0,B=S?0:P;if(f&&this.addCurrentVertex(p,d,M,B,h),\"fakeround\"===C)for(var T=Math.round(180*_/Math.PI/20),V=1;V<T;V++){var F=V/T;if(.5!==F){var D=F-.5;F+=F*D*(F-1)*((1.0904+x*(x*(3.55645-1.43519*x)-3.2452))*D*D+(.848013+x*(.215638*x-1.06021)));}var L=m.sub(d)._mult(F)._add(d)._unit()._mult(S?-1:1);this.addHalfVertex(p,L.x,L.y,!1,S,0,h);}y&&this.addCurrentVertex(p,m,-M,-B,h);}else if(\"butt\"===C)this.addCurrentVertex(p,g,0,0,h);else if(\"square\"===C){var O=f?1:-1;this.addCurrentVertex(p,g,O,O,h);}else \"round\"===C&&(f&&(this.addCurrentVertex(p,d,0,0,h),this.addCurrentVertex(p,d,1,1,h,!0)),y&&(this.addCurrentVertex(p,m,-1,-1,h,!0),this.addCurrentVertex(p,m,0,0,h)));if(A&&v<u-1){var R=p.dist(y);if(R>2*c){var U=p.add(y.sub(p)._mult(c/R)._round());this.updateDistance(p,U),this.addCurrentVertex(U,m,0,0,h),p=U;}}}}},Fs.prototype.addCurrentVertex=function(t,e,r,n,i,a){void 0===a&&(a=!1);var o=e.y*n-e.x,s=-e.y-e.x*n;this.addHalfVertex(t,e.x+e.y*r,e.y-e.x*r,a,!1,r,i),this.addHalfVertex(t,o,s,a,!0,-n,i),this.distance>Vs/2&&0===this.totalDistance&&(this.distance=0,this.addCurrentVertex(t,e,r,n,i,a));},Fs.prototype.addHalfVertex=function(t,e,r,n,i,a,o){var s=.5*(this.lineClips?this.scaledDistance*(Vs-1):this.scaledDistance);this.layoutVertexArray.emplaceBack((t.x<<1)+(n?1:0),(t.y<<1)+(i?1:0),Math.round(63*e)+128,Math.round(63*r)+128,1+(0===a?0:a<0?-1:1)|(63&s)<<2,s>>6),this.lineClips&&this.layoutVertexArray2.emplaceBack((this.scaledDistance-this.lineClips.start)/(this.lineClips.end-this.lineClips.start),this.lineClipsArray.length);var u=o.vertexLength++;this.e1>=0&&this.e2>=0&&(this.indexArray.emplaceBack(this.e1,this.e2,u),o.primitiveLength++),i?this.e2=u:this.e1=u;},Fs.prototype.updateScaledDistance=function(){this.scaledDistance=this.lineClips?this.lineClips.start+(this.lineClips.end-this.lineClips.start)*this.distance/this.totalDistance:this.distance;},Fs.prototype.updateDistance=function(t,e){this.distance+=t.dist(e),this.updateScaledDistance();},On(\"LineBucket\",Fs,{omit:[\"layers\",\"patternFeatures\"]});var Ds=new wi({\"line-cap\":new mi(Et.layout_line[\"line-cap\"]),\"line-join\":new vi(Et.layout_line[\"line-join\"]),\"line-miter-limit\":new mi(Et.layout_line[\"line-miter-limit\"]),\"line-round-limit\":new mi(Et.layout_line[\"line-round-limit\"]),\"line-sort-key\":new vi(Et.layout_line[\"line-sort-key\"])}),Ls={paint:new wi({\"line-opacity\":new vi(Et.paint_line[\"line-opacity\"]),\"line-color\":new vi(Et.paint_line[\"line-color\"]),\"line-translate\":new mi(Et.paint_line[\"line-translate\"]),\"line-translate-anchor\":new mi(Et.paint_line[\"line-translate-anchor\"]),\"line-width\":new vi(Et.paint_line[\"line-width\"]),\"line-gap-width\":new vi(Et.paint_line[\"line-gap-width\"]),\"line-offset\":new vi(Et.paint_line[\"line-offset\"]),\"line-blur\":new vi(Et.paint_line[\"line-blur\"]),\"line-dasharray\":new xi(Et.paint_line[\"line-dasharray\"]),\"line-pattern\":new gi(Et.paint_line[\"line-pattern\"]),\"line-gradient\":new bi(Et.paint_line[\"line-gradient\"])}),layout:Ds},Os=new(function(t){function e(){t.apply(this,arguments);}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e,e.prototype.possiblyEvaluate=function(e,r){return r=new si(Math.floor(r.zoom),{now:r.now,fadeDuration:r.fadeDuration,zoomHistory:r.zoomHistory,transition:r.transition}),t.prototype.possiblyEvaluate.call(this,e,r)},e.prototype.evaluate=function(e,r,n,i){return r=h({},r,{zoom:Math.floor(r.zoom)}),t.prototype.evaluate.call(this,e,r,n,i)},e}(vi))(Ls.paint.properties[\"line-width\"].specification);Os.useIntegerZoom=!0;var Rs=function(t){function e(e){t.call(this,e,Ls),this.gradientVersion=0;}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e,e.prototype._handleSpecialPaintPropertyUpdate=function(t){\"line-gradient\"===t&&(this.stepInterpolant=this._transitionablePaint._values[\"line-gradient\"].value.expression._styleExpression.expression instanceof Ne,this.gradientVersion=(this.gradientVersion+1)%s);},e.prototype.gradientExpression=function(){return this._transitionablePaint._values[\"line-gradient\"].value.expression},e.prototype.recalculate=function(e,r){t.prototype.recalculate.call(this,e,r),this.paint._values[\"line-floorwidth\"]=Os.possiblyEvaluate(this._transitioningPaint._values[\"line-width\"].value,e);},e.prototype.createBucket=function(t){return new Fs(t)},e.prototype.queryRadius=function(t){var e=t,r=Us(to(\"line-width\",this,e),to(\"line-gap-width\",this,e)),n=to(\"line-offset\",this,e);return r/2+Math.abs(n)+eo(this.paint.get(\"line-translate\"))},e.prototype.queryIntersectsFeature=function(t,e,r,n,a,o,s){var u=ro(t,this.paint.get(\"line-translate\"),this.paint.get(\"line-translate-anchor\"),o.angle,s),l=s/2*Us(this.paint.get(\"line-width\").evaluate(e,r),this.paint.get(\"line-gap-width\").evaluate(e,r)),p=this.paint.get(\"line-offset\").evaluate(e,r);return p&&(n=function(t,e){for(var r=[],n=new i(0,0),a=0;a<t.length;a++){for(var o=t[a],s=[],u=0;u<o.length;u++){var l=o[u],p=o[u+1],c=0===u?n:l.sub(o[u-1])._unit()._perp(),h=u===o.length-1?n:p.sub(l)._unit()._perp(),f=c._add(h)._unit();f._mult(1/(f.x*h.x+f.y*h.y)),s.push(f._mult(e)._add(l));}r.push(s);}return r}(n,p*s)),function(t,e,r){for(var n=0;n<e.length;n++){var i=e[n];if(t.length>=3)for(var a=0;a<i.length;a++)if(Wa(t,i[a]))return !0;if(Za(t,i,r))return !0}return !1}(u,n,l)},e.prototype.isTileClipped=function(){return !0},e}(_i);function Us(t,e){return e>0?e+2*t:t}var js=Ii([{name:\"a_pos_offset\",components:4,type:\"Int16\"},{name:\"a_data\",components:4,type:\"Uint16\"},{name:\"a_pixeloffset\",components:4,type:\"Int16\"}],4),qs=Ii([{name:\"a_projected_pos\",components:3,type:\"Float32\"}],4),Ns=(Ii([{name:\"a_fade_opacity\",components:1,type:\"Uint32\"}],4),Ii([{name:\"a_placed\",components:2,type:\"Uint8\"},{name:\"a_shift\",components:2,type:\"Float32\"}])),Ks=(Ii([{type:\"Int16\",name:\"anchorPointX\"},{type:\"Int16\",name:\"anchorPointY\"},{type:\"Int16\",name:\"x1\"},{type:\"Int16\",name:\"y1\"},{type:\"Int16\",name:\"x2\"},{type:\"Int16\",name:\"y2\"},{type:\"Uint32\",name:\"featureIndex\"},{type:\"Uint16\",name:\"sourceLayerIndex\"},{type:\"Uint16\",name:\"bucketIndex\"}]),Ii([{name:\"a_pos\",components:2,type:\"Int16\"},{name:\"a_anchor_pos\",components:2,type:\"Int16\"},{name:\"a_extrude\",components:2,type:\"Int16\"}],4)),Gs=Ii([{name:\"a_pos\",components:2,type:\"Float32\"},{name:\"a_radius\",components:1,type:\"Float32\"},{name:\"a_flags\",components:2,type:\"Int16\"}],4);function Zs(t,e,r){return t.sections.forEach((function(t){t.text=function(t,e,r){var n=e.layout.get(\"text-transform\").evaluate(r,{});return \"uppercase\"===n?t=t.toLocaleUpperCase():\"lowercase\"===n&&(t=t.toLocaleLowerCase()),oi.applyArabicShaping&&(t=oi.applyArabicShaping(t)),t}(t.text,e,r);})),t}Ii([{name:\"triangle\",components:3,type:\"Uint16\"}]),Ii([{type:\"Int16\",name:\"anchorX\"},{type:\"Int16\",name:\"anchorY\"},{type:\"Uint16\",name:\"glyphStartIndex\"},{type:\"Uint16\",name:\"numGlyphs\"},{type:\"Uint32\",name:\"vertexStartIndex\"},{type:\"Uint32\",name:\"lineStartIndex\"},{type:\"Uint32\",name:\"lineLength\"},{type:\"Uint16\",name:\"segment\"},{type:\"Uint16\",name:\"lowerSize\"},{type:\"Uint16\",name:\"upperSize\"},{type:\"Float32\",name:\"lineOffsetX\"},{type:\"Float32\",name:\"lineOffsetY\"},{type:\"Uint8\",name:\"writingMode\"},{type:\"Uint8\",name:\"placedOrientation\"},{type:\"Uint8\",name:\"hidden\"},{type:\"Uint32\",name:\"crossTileID\"},{type:\"Int16\",name:\"associatedIconIndex\"}]),Ii([{type:\"Int16\",name:\"anchorX\"},{type:\"Int16\",name:\"anchorY\"},{type:\"Int16\",name:\"rightJustifiedTextSymbolIndex\"},{type:\"Int16\",name:\"centerJustifiedTextSymbolIndex\"},{type:\"Int16\",name:\"leftJustifiedTextSymbolIndex\"},{type:\"Int16\",name:\"verticalPlacedTextSymbolIndex\"},{type:\"Int16\",name:\"placedIconSymbolIndex\"},{type:\"Int16\",name:\"verticalPlacedIconSymbolIndex\"},{type:\"Uint16\",name:\"key\"},{type:\"Uint16\",name:\"textBoxStartIndex\"},{type:\"Uint16\",name:\"textBoxEndIndex\"},{type:\"Uint16\",name:\"verticalTextBoxStartIndex\"},{type:\"Uint16\",name:\"verticalTextBoxEndIndex\"},{type:\"Uint16\",name:\"iconBoxStartIndex\"},{type:\"Uint16\",name:\"iconBoxEndIndex\"},{type:\"Uint16\",name:\"verticalIconBoxStartIndex\"},{type:\"Uint16\",name:\"verticalIconBoxEndIndex\"},{type:\"Uint16\",name:\"featureIndex\"},{type:\"Uint16\",name:\"numHorizontalGlyphVertices\"},{type:\"Uint16\",name:\"numVerticalGlyphVertices\"},{type:\"Uint16\",name:\"numIconVertices\"},{type:\"Uint16\",name:\"numVerticalIconVertices\"},{type:\"Uint16\",name:\"useRuntimeCollisionCircles\"},{type:\"Uint32\",name:\"crossTileID\"},{type:\"Float32\",name:\"textBoxScale\"},{type:\"Float32\",components:2,name:\"textOffset\"},{type:\"Float32\",name:\"collisionCircleDiameter\"}]),Ii([{type:\"Float32\",name:\"offsetX\"}]),Ii([{type:\"Int16\",name:\"x\"},{type:\"Int16\",name:\"y\"},{type:\"Int16\",name:\"tileUnitDistanceFromAnchor\"}]);var Xs={\"!\":\"︕\",\"#\":\"＃\",$:\"＄\",\"%\":\"％\",\"&\":\"＆\",\"(\":\"︵\",\")\":\"︶\",\"*\":\"＊\",\"+\":\"＋\",\",\":\"︐\",\"-\":\"︲\",\".\":\"・\",\"/\":\"／\",\":\":\"︓\",\";\":\"︔\",\"<\":\"︿\",\"=\":\"＝\",\">\":\"﹀\",\"?\":\"︖\",\"@\":\"＠\",\"[\":\"﹇\",\"\\\\\":\"＼\",\"]\":\"﹈\",\"^\":\"＾\",_:\"︳\",\"`\":\"｀\",\"{\":\"︷\",\"|\":\"―\",\"}\":\"︸\",\"~\":\"～\",\"¢\":\"￠\",\"£\":\"￡\",\"¥\":\"￥\",\"¦\":\"￤\",\"¬\":\"￢\",\"¯\":\"￣\",\"–\":\"︲\",\"—\":\"︱\",\"‘\":\"﹃\",\"’\":\"﹄\",\"“\":\"﹁\",\"”\":\"﹂\",\"…\":\"︙\",\"‧\":\"・\",\"₩\":\"￦\",\"、\":\"︑\",\"。\":\"︒\",\"〈\":\"︿\",\"〉\":\"﹀\",\"《\":\"︽\",\"》\":\"︾\",\"「\":\"﹁\",\"」\":\"﹂\",\"『\":\"﹃\",\"』\":\"﹄\",\"【\":\"︻\",\"】\":\"︼\",\"〔\":\"︹\",\"〕\":\"︺\",\"〖\":\"︗\",\"〗\":\"︘\",\"！\":\"︕\",\"（\":\"︵\",\"）\":\"︶\",\"，\":\"︐\",\"－\":\"︲\",\"．\":\"・\",\"：\":\"︓\",\"；\":\"︔\",\"＜\":\"︿\",\"＞\":\"﹀\",\"？\":\"︖\",\"［\":\"﹇\",\"］\":\"﹈\",\"＿\":\"︳\",\"｛\":\"︷\",\"｜\":\"―\",\"｝\":\"︸\",\"｟\":\"︵\",\"｠\":\"︶\",\"｡\":\"︒\",\"｢\":\"﹁\",\"｣\":\"﹂\"},Js=function(t,e,r,n,i){var a,o,s=8*i-n-1,u=(1<<s)-1,l=u>>1,p=-7,c=r?i-1:0,h=r?-1:1,f=t[e+c];for(c+=h,a=f&(1<<-p)-1,f>>=-p,p+=s;p>0;a=256*a+t[e+c],c+=h,p-=8);for(o=a&(1<<-p)-1,a>>=-p,p+=n;p>0;o=256*o+t[e+c],c+=h,p-=8);if(0===a)a=1-l;else {if(a===u)return o?NaN:1/0*(f?-1:1);o+=Math.pow(2,n),a-=l;}return (f?-1:1)*o*Math.pow(2,a-n)},Hs=function(t,e,r,n,i,a){var o,s,u,l=8*a-i-1,p=(1<<l)-1,c=p>>1,h=23===i?Math.pow(2,-24)-Math.pow(2,-77):0,f=n?0:a-1,y=n?1:-1,d=e<0||0===e&&1/e<0?1:0;for(e=Math.abs(e),isNaN(e)||e===1/0?(s=isNaN(e)?1:0,o=p):(o=Math.floor(Math.log(e)/Math.LN2),e*(u=Math.pow(2,-o))<1&&(o--,u*=2),(e+=o+c>=1?h/u:h*Math.pow(2,1-c))*u>=2&&(o++,u/=2),o+c>=p?(s=0,o=p):o+c>=1?(s=(e*u-1)*Math.pow(2,i),o+=c):(s=e*Math.pow(2,c-1)*Math.pow(2,i),o=0));i>=8;t[r+f]=255&s,f+=y,s/=256,i-=8);for(o=o<<i|s,l+=i;l>0;t[r+f]=255&o,f+=y,o/=256,l-=8);t[r+f-y]|=128*d;},Ys=$s;function $s(t){this.buf=ArrayBuffer.isView&&ArrayBuffer.isView(t)?t:new Uint8Array(t||0),this.pos=0,this.type=0,this.length=this.buf.length;}$s.Varint=0,$s.Fixed64=1,$s.Bytes=2,$s.Fixed32=5;var Ws=\"undefined\"==typeof TextDecoder?null:new TextDecoder(\"utf8\");function Qs(t){return t.type===$s.Bytes?t.readVarint()+t.pos:t.pos+1}function tu(t,e,r){return r?4294967296*e+(t>>>0):4294967296*(e>>>0)+(t>>>0)}function eu(t,e,r){var n=e<=16383?1:e<=2097151?2:e<=268435455?3:Math.floor(Math.log(e)/(7*Math.LN2));r.realloc(n);for(var i=r.pos-1;i>=t;i--)r.buf[i+n]=r.buf[i];}function ru(t,e){for(var r=0;r<t.length;r++)e.writeVarint(t[r]);}function nu(t,e){for(var r=0;r<t.length;r++)e.writeSVarint(t[r]);}function iu(t,e){for(var r=0;r<t.length;r++)e.writeFloat(t[r]);}function au(t,e){for(var r=0;r<t.length;r++)e.writeDouble(t[r]);}function ou(t,e){for(var r=0;r<t.length;r++)e.writeBoolean(t[r]);}function su(t,e){for(var r=0;r<t.length;r++)e.writeFixed32(t[r]);}function uu(t,e){for(var r=0;r<t.length;r++)e.writeSFixed32(t[r]);}function lu(t,e){for(var r=0;r<t.length;r++)e.writeFixed64(t[r]);}function pu(t,e){for(var r=0;r<t.length;r++)e.writeSFixed64(t[r]);}function cu(t,e){return (t[e]|t[e+1]<<8|t[e+2]<<16)+16777216*t[e+3]}function hu(t,e,r){t[r]=e,t[r+1]=e>>>8,t[r+2]=e>>>16,t[r+3]=e>>>24;}function fu(t,e){return (t[e]|t[e+1]<<8|t[e+2]<<16)+(t[e+3]<<24)}function yu(t,e,r){1===t&&r.readMessage(du,e);}function du(t,e,r){if(3===t){var n=r.readMessage(mu,{}),i=n.width,a=n.height,o=n.left,s=n.top,u=n.advance;e.push({id:n.id,bitmap:new go({width:i+6,height:a+6},n.bitmap),metrics:{width:i,height:a,left:o,top:s,advance:u}});}}function mu(t,e,r){1===t?e.id=r.readVarint():2===t?e.bitmap=r.readBytes():3===t?e.width=r.readVarint():4===t?e.height=r.readVarint():5===t?e.left=r.readSVarint():6===t?e.top=r.readSVarint():7===t&&(e.advance=r.readVarint());}function vu(t){for(var e=0,r=0,n=0,i=t;n<i.length;n+=1){var a=i[n];e+=a.w*a.h,r=Math.max(r,a.w);}t.sort((function(t,e){return e.h-t.h}));for(var o=[{x:0,y:0,w:Math.max(Math.ceil(Math.sqrt(e/.95)),r),h:1/0}],s=0,u=0,l=0,p=t;l<p.length;l+=1)for(var c=p[l],h=o.length-1;h>=0;h--){var f=o[h];if(!(c.w>f.w||c.h>f.h)){if(c.x=f.x,c.y=f.y,u=Math.max(u,c.y+c.h),s=Math.max(s,c.x+c.w),c.w===f.w&&c.h===f.h){var y=o.pop();h<o.length&&(o[h]=y);}else c.h===f.h?(f.x+=c.w,f.w-=c.w):c.w===f.w?(f.y+=c.h,f.h-=c.h):(o.push({x:f.x+c.w,y:f.y,w:f.w-c.w,h:c.h}),f.y+=c.h,f.h-=c.h);break}}return {w:s,h:u,fill:e/(s*u)||0}}$s.prototype={destroy:function(){this.buf=null;},readFields:function(t,e,r){for(r=r||this.length;this.pos<r;){var n=this.readVarint(),i=n>>3,a=this.pos;this.type=7&n,t(i,e,this),this.pos===a&&this.skip(n);}return e},readMessage:function(t,e){return this.readFields(t,e,this.readVarint()+this.pos)},readFixed32:function(){var t=cu(this.buf,this.pos);return this.pos+=4,t},readSFixed32:function(){var t=fu(this.buf,this.pos);return this.pos+=4,t},readFixed64:function(){var t=cu(this.buf,this.pos)+4294967296*cu(this.buf,this.pos+4);return this.pos+=8,t},readSFixed64:function(){var t=cu(this.buf,this.pos)+4294967296*fu(this.buf,this.pos+4);return this.pos+=8,t},readFloat:function(){var t=Js(this.buf,this.pos,!0,23,4);return this.pos+=4,t},readDouble:function(){var t=Js(this.buf,this.pos,!0,52,8);return this.pos+=8,t},readVarint:function(t){var e,r,n=this.buf;return e=127&(r=n[this.pos++]),r<128?e:(e|=(127&(r=n[this.pos++]))<<7,r<128?e:(e|=(127&(r=n[this.pos++]))<<14,r<128?e:(e|=(127&(r=n[this.pos++]))<<21,r<128?e:function(t,e,r){var n,i,a=r.buf;if(n=(112&(i=a[r.pos++]))>>4,i<128)return tu(t,n,e);if(n|=(127&(i=a[r.pos++]))<<3,i<128)return tu(t,n,e);if(n|=(127&(i=a[r.pos++]))<<10,i<128)return tu(t,n,e);if(n|=(127&(i=a[r.pos++]))<<17,i<128)return tu(t,n,e);if(n|=(127&(i=a[r.pos++]))<<24,i<128)return tu(t,n,e);if(n|=(1&(i=a[r.pos++]))<<31,i<128)return tu(t,n,e);throw new Error(\"Expected varint not more than 10 bytes\")}(e|=(15&(r=n[this.pos]))<<28,t,this))))},readVarint64:function(){return this.readVarint(!0)},readSVarint:function(){var t=this.readVarint();return t%2==1?(t+1)/-2:t/2},readBoolean:function(){return Boolean(this.readVarint())},readString:function(){var t=this.readVarint()+this.pos,e=this.pos;return this.pos=t,t-e>=12&&Ws?function(t,e,r){return Ws.decode(t.subarray(e,r))}(this.buf,e,t):function(t,e,r){for(var n=\"\",i=e;i<r;){var a,o,s,u=t[i],l=null,p=u>239?4:u>223?3:u>191?2:1;if(i+p>r)break;1===p?u<128&&(l=u):2===p?128==(192&(a=t[i+1]))&&(l=(31&u)<<6|63&a)<=127&&(l=null):3===p?(o=t[i+2],128==(192&(a=t[i+1]))&&128==(192&o)&&((l=(15&u)<<12|(63&a)<<6|63&o)<=2047||l>=55296&&l<=57343)&&(l=null)):4===p&&(o=t[i+2],s=t[i+3],128==(192&(a=t[i+1]))&&128==(192&o)&&128==(192&s)&&((l=(15&u)<<18|(63&a)<<12|(63&o)<<6|63&s)<=65535||l>=1114112)&&(l=null)),null===l?(l=65533,p=1):l>65535&&(l-=65536,n+=String.fromCharCode(l>>>10&1023|55296),l=56320|1023&l),n+=String.fromCharCode(l),i+=p;}return n}(this.buf,e,t)},readBytes:function(){var t=this.readVarint()+this.pos,e=this.buf.subarray(this.pos,t);return this.pos=t,e},readPackedVarint:function(t,e){if(this.type!==$s.Bytes)return t.push(this.readVarint(e));var r=Qs(this);for(t=t||[];this.pos<r;)t.push(this.readVarint(e));return t},readPackedSVarint:function(t){if(this.type!==$s.Bytes)return t.push(this.readSVarint());var e=Qs(this);for(t=t||[];this.pos<e;)t.push(this.readSVarint());return t},readPackedBoolean:function(t){if(this.type!==$s.Bytes)return t.push(this.readBoolean());var e=Qs(this);for(t=t||[];this.pos<e;)t.push(this.readBoolean());return t},readPackedFloat:function(t){if(this.type!==$s.Bytes)return t.push(this.readFloat());var e=Qs(this);for(t=t||[];this.pos<e;)t.push(this.readFloat());return t},readPackedDouble:function(t){if(this.type!==$s.Bytes)return t.push(this.readDouble());var e=Qs(this);for(t=t||[];this.pos<e;)t.push(this.readDouble());return t},readPackedFixed32:function(t){if(this.type!==$s.Bytes)return t.push(this.readFixed32());var e=Qs(this);for(t=t||[];this.pos<e;)t.push(this.readFixed32());return t},readPackedSFixed32:function(t){if(this.type!==$s.Bytes)return t.push(this.readSFixed32());var e=Qs(this);for(t=t||[];this.pos<e;)t.push(this.readSFixed32());return t},readPackedFixed64:function(t){if(this.type!==$s.Bytes)return t.push(this.readFixed64());var e=Qs(this);for(t=t||[];this.pos<e;)t.push(this.readFixed64());return t},readPackedSFixed64:function(t){if(this.type!==$s.Bytes)return t.push(this.readSFixed64());var e=Qs(this);for(t=t||[];this.pos<e;)t.push(this.readSFixed64());return t},skip:function(t){var e=7&t;if(e===$s.Varint)for(;this.buf[this.pos++]>127;);else if(e===$s.Bytes)this.pos=this.readVarint()+this.pos;else if(e===$s.Fixed32)this.pos+=4;else {if(e!==$s.Fixed64)throw new Error(\"Unimplemented type: \"+e);this.pos+=8;}},writeTag:function(t,e){this.writeVarint(t<<3|e);},realloc:function(t){for(var e=this.length||16;e<this.pos+t;)e*=2;if(e!==this.length){var r=new Uint8Array(e);r.set(this.buf),this.buf=r,this.length=e;}},finish:function(){return this.length=this.pos,this.pos=0,this.buf.subarray(0,this.length)},writeFixed32:function(t){this.realloc(4),hu(this.buf,t,this.pos),this.pos+=4;},writeSFixed32:function(t){this.realloc(4),hu(this.buf,t,this.pos),this.pos+=4;},writeFixed64:function(t){this.realloc(8),hu(this.buf,-1&t,this.pos),hu(this.buf,Math.floor(t*(1/4294967296)),this.pos+4),this.pos+=8;},writeSFixed64:function(t){this.realloc(8),hu(this.buf,-1&t,this.pos),hu(this.buf,Math.floor(t*(1/4294967296)),this.pos+4),this.pos+=8;},writeVarint:function(t){(t=+t||0)>268435455||t<0?function(t,e){var r,n;if(t>=0?(r=t%4294967296|0,n=t/4294967296|0):(n=~(-t/4294967296),4294967295^(r=~(-t%4294967296))?r=r+1|0:(r=0,n=n+1|0)),t>=0x10000000000000000||t<-0x10000000000000000)throw new Error(\"Given varint doesn't fit into 10 bytes\");e.realloc(10),function(t,e,r){r.buf[r.pos++]=127&t|128,t>>>=7,r.buf[r.pos++]=127&t|128,t>>>=7,r.buf[r.pos++]=127&t|128,t>>>=7,r.buf[r.pos++]=127&t|128,r.buf[r.pos]=127&(t>>>=7);}(r,0,e),function(t,e){var r=(7&t)<<4;e.buf[e.pos++]|=r|((t>>>=3)?128:0),t&&(e.buf[e.pos++]=127&t|((t>>>=7)?128:0),t&&(e.buf[e.pos++]=127&t|((t>>>=7)?128:0),t&&(e.buf[e.pos++]=127&t|((t>>>=7)?128:0),t&&(e.buf[e.pos++]=127&t|((t>>>=7)?128:0),t&&(e.buf[e.pos++]=127&t)))));}(n,e);}(t,this):(this.realloc(4),this.buf[this.pos++]=127&t|(t>127?128:0),t<=127||(this.buf[this.pos++]=127&(t>>>=7)|(t>127?128:0),t<=127||(this.buf[this.pos++]=127&(t>>>=7)|(t>127?128:0),t<=127||(this.buf[this.pos++]=t>>>7&127))));},writeSVarint:function(t){this.writeVarint(t<0?2*-t-1:2*t);},writeBoolean:function(t){this.writeVarint(Boolean(t));},writeString:function(t){t=String(t),this.realloc(4*t.length),this.pos++;var e=this.pos;this.pos=function(t,e,r){for(var n,i,a=0;a<e.length;a++){if((n=e.charCodeAt(a))>55295&&n<57344){if(!i){n>56319||a+1===e.length?(t[r++]=239,t[r++]=191,t[r++]=189):i=n;continue}if(n<56320){t[r++]=239,t[r++]=191,t[r++]=189,i=n;continue}n=i-55296<<10|n-56320|65536,i=null;}else i&&(t[r++]=239,t[r++]=191,t[r++]=189,i=null);n<128?t[r++]=n:(n<2048?t[r++]=n>>6|192:(n<65536?t[r++]=n>>12|224:(t[r++]=n>>18|240,t[r++]=n>>12&63|128),t[r++]=n>>6&63|128),t[r++]=63&n|128);}return r}(this.buf,t,this.pos);var r=this.pos-e;r>=128&&eu(e,r,this),this.pos=e-1,this.writeVarint(r),this.pos+=r;},writeFloat:function(t){this.realloc(4),Hs(this.buf,t,this.pos,!0,23,4),this.pos+=4;},writeDouble:function(t){this.realloc(8),Hs(this.buf,t,this.pos,!0,52,8),this.pos+=8;},writeBytes:function(t){var e=t.length;this.writeVarint(e),this.realloc(e);for(var r=0;r<e;r++)this.buf[this.pos++]=t[r];},writeRawMessage:function(t,e){this.pos++;var r=this.pos;t(e,this);var n=this.pos-r;n>=128&&eu(r,n,this),this.pos=r-1,this.writeVarint(n),this.pos+=n;},writeMessage:function(t,e,r){this.writeTag(t,$s.Bytes),this.writeRawMessage(e,r);},writePackedVarint:function(t,e){e.length&&this.writeMessage(t,ru,e);},writePackedSVarint:function(t,e){e.length&&this.writeMessage(t,nu,e);},writePackedBoolean:function(t,e){e.length&&this.writeMessage(t,ou,e);},writePackedFloat:function(t,e){e.length&&this.writeMessage(t,iu,e);},writePackedDouble:function(t,e){e.length&&this.writeMessage(t,au,e);},writePackedFixed32:function(t,e){e.length&&this.writeMessage(t,su,e);},writePackedSFixed32:function(t,e){e.length&&this.writeMessage(t,uu,e);},writePackedFixed64:function(t,e){e.length&&this.writeMessage(t,lu,e);},writePackedSFixed64:function(t,e){e.length&&this.writeMessage(t,pu,e);},writeBytesField:function(t,e){this.writeTag(t,$s.Bytes),this.writeBytes(e);},writeFixed32Field:function(t,e){this.writeTag(t,$s.Fixed32),this.writeFixed32(e);},writeSFixed32Field:function(t,e){this.writeTag(t,$s.Fixed32),this.writeSFixed32(e);},writeFixed64Field:function(t,e){this.writeTag(t,$s.Fixed64),this.writeFixed64(e);},writeSFixed64Field:function(t,e){this.writeTag(t,$s.Fixed64),this.writeSFixed64(e);},writeVarintField:function(t,e){this.writeTag(t,$s.Varint),this.writeVarint(e);},writeSVarintField:function(t,e){this.writeTag(t,$s.Varint),this.writeSVarint(e);},writeStringField:function(t,e){this.writeTag(t,$s.Bytes),this.writeString(e);},writeFloatField:function(t,e){this.writeTag(t,$s.Fixed32),this.writeFloat(e);},writeDoubleField:function(t,e){this.writeTag(t,$s.Fixed64),this.writeDouble(e);},writeBooleanField:function(t,e){this.writeVarintField(t,Boolean(e));}};var gu=function(t,e){var r=e.pixelRatio,n=e.version,i=e.stretchX,a=e.stretchY,o=e.content;this.paddedRect=t,this.pixelRatio=r,this.stretchX=i,this.stretchY=a,this.content=o,this.version=n;},xu={tl:{configurable:!0},br:{configurable:!0},tlbr:{configurable:!0},displaySize:{configurable:!0}};xu.tl.get=function(){return [this.paddedRect.x+1,this.paddedRect.y+1]},xu.br.get=function(){return [this.paddedRect.x+this.paddedRect.w-1,this.paddedRect.y+this.paddedRect.h-1]},xu.tlbr.get=function(){return this.tl.concat(this.br)},xu.displaySize.get=function(){return [(this.paddedRect.w-2)/this.pixelRatio,(this.paddedRect.h-2)/this.pixelRatio]},Object.defineProperties(gu.prototype,xu);var bu=function(t,e){var r={},n={};this.haveRenderCallbacks=[];var i=[];this.addImages(t,r,i),this.addImages(e,n,i);var a=vu(i),o=new xo({width:a.w||1,height:a.h||1});for(var s in t){var u=t[s],l=r[s].paddedRect;xo.copy(u.data,o,{x:0,y:0},{x:l.x+1,y:l.y+1},u.data);}for(var p in e){var c=e[p],h=n[p].paddedRect,f=h.x+1,y=h.y+1,d=c.data.width,m=c.data.height;xo.copy(c.data,o,{x:0,y:0},{x:f,y:y},c.data),xo.copy(c.data,o,{x:0,y:m-1},{x:f,y:y-1},{width:d,height:1}),xo.copy(c.data,o,{x:0,y:0},{x:f,y:y+m},{width:d,height:1}),xo.copy(c.data,o,{x:d-1,y:0},{x:f-1,y:y},{width:1,height:m}),xo.copy(c.data,o,{x:0,y:0},{x:f+d,y:y},{width:1,height:m});}this.image=o,this.iconPositions=r,this.patternPositions=n;};bu.prototype.addImages=function(t,e,r){for(var n in t){var i=t[n],a={x:0,y:0,w:i.data.width+2,h:i.data.height+2};r.push(a),e[n]=new gu(a,i),i.hasRenderCallback&&this.haveRenderCallbacks.push(n);}},bu.prototype.patchUpdatedImages=function(t,e){for(var r in t.dispatchRenderCallbacks(this.haveRenderCallbacks),t.updatedImages)this.patchUpdatedImage(this.iconPositions[r],t.getImage(r),e),this.patchUpdatedImage(this.patternPositions[r],t.getImage(r),e);},bu.prototype.patchUpdatedImage=function(t,e,r){if(t&&e&&t.version!==e.version){t.version=e.version;var n=t.tl;r.update(e.data,void 0,{x:n[0],y:n[1]});}},On(\"ImagePosition\",gu),On(\"ImageAtlas\",bu);var wu={horizontal:1,vertical:2,horizontalOnly:3},_u=function(){this.scale=1,this.fontStack=\"\",this.imageName=null;};_u.forText=function(t,e){var r=new _u;return r.scale=t||1,r.fontStack=e,r},_u.forImage=function(t){var e=new _u;return e.imageName=t,e};var Au=function(){this.text=\"\",this.sectionIndex=[],this.sections=[],this.imageSectionID=null;};function Su(t,e,r,n,i,a,o,s,u,l,p,c,h,f,y,d){var m,v=Au.fromFeature(t,i);c===wu.vertical&&v.verticalizePunctuation();var g=oi.processBidirectionalText,x=oi.processStyledBidirectionalText;if(g&&1===v.sections.length){m=[];for(var b=0,w=g(v.toString(),Mu(v,l,a,e,n,f,y));b<w.length;b+=1){var _=w[b],A=new Au;A.text=_,A.sections=v.sections;for(var S=0;S<_.length;S++)A.sectionIndex.push(0);m.push(A);}}else if(x){m=[];for(var k=0,I=x(v.text,v.sectionIndex,Mu(v,l,a,e,n,f,y));k<I.length;k+=1){var z=I[k],C=new Au;C.text=z[0],C.sectionIndex=z[1],C.sections=v.sections,m.push(C);}}else m=function(t,e){for(var r=[],n=t.text,i=0,a=0,o=e;a<o.length;a+=1){var s=o[a];r.push(t.substring(i,s)),i=s;}return i<n.length&&r.push(t.substring(i,n.length)),r}(v,Mu(v,l,a,e,n,f,y));var E=[],P={positionedLines:E,text:v.toString(),top:p[1],bottom:p[1],left:p[0],right:p[0],writingMode:c,iconsInText:!1,verticalizable:!1};return function(t,e,r,n,i,a,o,s,u,l,p,c){for(var h=0,f=-17,y=0,d=0,m=\"right\"===s?1:\"left\"===s?0:.5,v=0,g=0,x=i;g<x.length;g+=1){var b=x[g];b.trim();var w=b.getMaxScale(),_=24*(w-1),A={positionedGlyphs:[],lineOffset:0};t.positionedLines[v]=A;var S=A.positionedGlyphs,k=0;if(b.length()){for(var I=0;I<b.length();I++){var z=b.getSection(I),C=b.getSectionIndex(I),E=b.getCharCode(I),P=0,M=null,B=null,T=null,V=24,F=!(u===wu.horizontal||!p&&!Xn(E)||p&&(ku[E]||(K=E,Gn.Arabic(K)||Gn[\"Arabic Supplement\"](K)||Gn[\"Arabic Extended-A\"](K)||Gn[\"Arabic Presentation Forms-A\"](K)||Gn[\"Arabic Presentation Forms-B\"](K))));if(z.imageName){var D=n[z.imageName];if(!D)continue;T=z.imageName,t.iconsInText=t.iconsInText||!0,B=D.paddedRect;var L=D.displaySize;z.scale=24*z.scale/c,P=_+(24-L[1]*z.scale),V=(M={width:L[0],height:L[1],left:1,top:-3,advance:F?L[1]:L[0]}).advance;var O=F?L[0]*z.scale-24*w:L[1]*z.scale-24*w;O>0&&O>k&&(k=O);}else {var R=r[z.fontStack],U=R&&R[E];if(U&&U.rect)B=U.rect,M=U.metrics;else {var j=e[z.fontStack],q=j&&j[E];if(!q)continue;M=q.metrics;}P=24*(w-z.scale);}F?(t.verticalizable=!0,S.push({glyph:E,imageName:T,x:h,y:f+P,vertical:F,scale:z.scale,fontStack:z.fontStack,sectionIndex:C,metrics:M,rect:B}),h+=V*z.scale+l):(S.push({glyph:E,imageName:T,x:h,y:f+P,vertical:F,scale:z.scale,fontStack:z.fontStack,sectionIndex:C,metrics:M,rect:B}),h+=M.advance*z.scale+l);}0!==S.length&&(y=Math.max(h-l,y),Tu(S,0,S.length-1,m,k)),h=0;var N=a*w+k;A.lineOffset=Math.max(k,_),f+=N,d=Math.max(N,d),++v;}else f+=a,++v;}var K,G=f- -17,Z=Bu(o),X=Z.horizontalAlign,J=Z.verticalAlign;(function(t,e,r,n,i,a,o,s,u){var l,p=(e-r)*i;l=a!==o?-s*n- -17:(-n*u+.5)*o;for(var c=0,h=t;c<h.length;c+=1)for(var f=0,y=h[c].positionedGlyphs;f<y.length;f+=1){var d=y[f];d.x+=p,d.y+=l;}})(t.positionedLines,m,X,J,y,d,a,G,i.length),t.top+=-J*G,t.bottom=t.top+G,t.left+=-X*y,t.right=t.left+y;}(P,e,r,n,m,o,s,u,c,l,h,d),!function(t){for(var e=0,r=t;e<r.length;e+=1)if(0!==r[e].positionedGlyphs.length)return !1;return !0}(E)&&P}Au.fromFeature=function(t,e){for(var r=new Au,n=0;n<t.sections.length;n++){var i=t.sections[n];i.image?r.addImageSection(i):r.addTextSection(i,e);}return r},Au.prototype.length=function(){return this.text.length},Au.prototype.getSection=function(t){return this.sections[this.sectionIndex[t]]},Au.prototype.getSectionIndex=function(t){return this.sectionIndex[t]},Au.prototype.getCharCode=function(t){return this.text.charCodeAt(t)},Au.prototype.verticalizePunctuation=function(){this.text=function(t){for(var e=\"\",r=0;r<t.length;r++){var n=t.charCodeAt(r+1)||null,i=t.charCodeAt(r-1)||null;e+=n&&Jn(n)&&!Xs[t[r+1]]||i&&Jn(i)&&!Xs[t[r-1]]||!Xs[t[r]]?t[r]:Xs[t[r]];}return e}(this.text);},Au.prototype.trim=function(){for(var t=0,e=0;e<this.text.length&&ku[this.text.charCodeAt(e)];e++)t++;for(var r=this.text.length,n=this.text.length-1;n>=0&&n>=t&&ku[this.text.charCodeAt(n)];n--)r--;this.text=this.text.substring(t,r),this.sectionIndex=this.sectionIndex.slice(t,r);},Au.prototype.substring=function(t,e){var r=new Au;return r.text=this.text.substring(t,e),r.sectionIndex=this.sectionIndex.slice(t,e),r.sections=this.sections,r},Au.prototype.toString=function(){return this.text},Au.prototype.getMaxScale=function(){var t=this;return this.sectionIndex.reduce((function(e,r){return Math.max(e,t.sections[r].scale)}),0)},Au.prototype.addTextSection=function(t,e){this.text+=t.text,this.sections.push(_u.forText(t.scale,t.fontStack||e));for(var r=this.sections.length-1,n=0;n<t.text.length;++n)this.sectionIndex.push(r);},Au.prototype.addImageSection=function(t){var e=t.image?t.image.name:\"\";if(0!==e.length){var r=this.getNextImageSectionCharCode();r?(this.text+=String.fromCharCode(r),this.sections.push(_u.forImage(e)),this.sectionIndex.push(this.sections.length-1)):A(\"Reached maximum number of images 6401\");}else A(\"Can't add FormattedSection with an empty image.\");},Au.prototype.getNextImageSectionCharCode=function(){return this.imageSectionID?this.imageSectionID>=63743?null:++this.imageSectionID:(this.imageSectionID=57344,this.imageSectionID)};var ku={9:!0,10:!0,11:!0,12:!0,13:!0,32:!0},Iu={};function zu(t,e,r,n,i,a){if(e.imageName){var o=n[e.imageName];return o?o.displaySize[0]*e.scale*24/a+i:0}var s=r[e.fontStack],u=s&&s[t];return u?u.metrics.advance*e.scale+i:0}function Cu(t,e,r,n){var i=Math.pow(t-e,2);return n?t<e?i/2:2*i:i+Math.abs(r)*r}function Eu(t,e,r){var n=0;return 10===t&&(n-=1e4),r&&(n+=150),40!==t&&65288!==t||(n+=50),41!==e&&65289!==e||(n+=50),n}function Pu(t,e,r,n,i,a){for(var o=null,s=Cu(e,r,i,a),u=0,l=n;u<l.length;u+=1){var p=l[u],c=Cu(e-p.x,r,i,a)+p.badness;c<=s&&(o=p,s=c);}return {index:t,x:e,priorBreak:o,badness:s}}function Mu(t,e,r,n,i,a,o){if(\"point\"!==a)return [];if(!t)return [];for(var s,u=[],l=function(t,e,r,n,i,a){for(var o=0,s=0;s<t.length();s++){var u=t.getSection(s);o+=zu(t.getCharCode(s),u,n,i,e,a);}return o/Math.max(1,Math.ceil(o/r))}(t,e,r,n,i,o),p=t.text.indexOf(\"​\")>=0,c=0,h=0;h<t.length();h++){var f=t.getSection(h),y=t.getCharCode(h);if(ku[y]||(c+=zu(y,f,n,i,e,o)),h<t.length()-1){var d=!((s=y)<11904||!(Gn[\"Bopomofo Extended\"](s)||Gn.Bopomofo(s)||Gn[\"CJK Compatibility Forms\"](s)||Gn[\"CJK Compatibility Ideographs\"](s)||Gn[\"CJK Compatibility\"](s)||Gn[\"CJK Radicals Supplement\"](s)||Gn[\"CJK Strokes\"](s)||Gn[\"CJK Symbols and Punctuation\"](s)||Gn[\"CJK Unified Ideographs Extension A\"](s)||Gn[\"CJK Unified Ideographs\"](s)||Gn[\"Enclosed CJK Letters and Months\"](s)||Gn[\"Halfwidth and Fullwidth Forms\"](s)||Gn.Hiragana(s)||Gn[\"Ideographic Description Characters\"](s)||Gn[\"Kangxi Radicals\"](s)||Gn[\"Katakana Phonetic Extensions\"](s)||Gn.Katakana(s)||Gn[\"Vertical Forms\"](s)||Gn[\"Yi Radicals\"](s)||Gn[\"Yi Syllables\"](s)));(Iu[y]||d||f.imageName)&&u.push(Pu(h+1,c,l,u,Eu(y,t.getCharCode(h+1),d&&p),!1));}}return function t(e){return e?t(e.priorBreak).concat(e.index):[]}(Pu(t.length(),c,l,u,0,!0))}function Bu(t){var e=.5,r=.5;switch(t){case\"right\":case\"top-right\":case\"bottom-right\":e=1;break;case\"left\":case\"top-left\":case\"bottom-left\":e=0;}switch(t){case\"bottom\":case\"bottom-right\":case\"bottom-left\":r=1;break;case\"top\":case\"top-right\":case\"top-left\":r=0;}return {horizontalAlign:e,verticalAlign:r}}function Tu(t,e,r,n,i){if(n||i)for(var a=t[r],o=(t[r].x+a.metrics.advance*a.scale)*n,s=e;s<=r;s++)t[s].x-=o,t[s].y+=i;}function Vu(t,e,r,n,i,a){var o,s=t.image;if(s.content){var u=s.content,l=s.pixelRatio||1;o=[u[0]/l,u[1]/l,s.displaySize[0]-u[2]/l,s.displaySize[1]-u[3]/l];}var p,c,h,f,y=e.left*a,d=e.right*a;\"width\"===r||\"both\"===r?(f=i[0]+y-n[3],c=i[0]+d+n[1]):c=(f=i[0]+(y+d-s.displaySize[0])/2)+s.displaySize[0];var m=e.top*a,v=e.bottom*a;return \"height\"===r||\"both\"===r?(p=i[1]+m-n[0],h=i[1]+v+n[2]):h=(p=i[1]+(m+v-s.displaySize[1])/2)+s.displaySize[1],{image:s,top:p,right:c,bottom:h,left:f,collisionPadding:o}}Iu[10]=!0,Iu[32]=!0,Iu[38]=!0,Iu[40]=!0,Iu[41]=!0,Iu[43]=!0,Iu[45]=!0,Iu[47]=!0,Iu[173]=!0,Iu[183]=!0,Iu[8203]=!0,Iu[8208]=!0,Iu[8211]=!0,Iu[8231]=!0;var Fu=function(t){function e(e,r,n,i){t.call(this,e,r),this.angle=n,void 0!==i&&(this.segment=i);}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e,e.prototype.clone=function(){return new e(this.x,this.y,this.angle,this.segment)},e}(i);function Du(t,e){var r=e.expression;if(\"constant\"===r.kind)return {kind:\"constant\",layoutSize:r.evaluate(new si(t+1))};if(\"source\"===r.kind)return {kind:\"source\"};for(var n=r.zoomStops,i=r.interpolationType,a=0;a<n.length&&n[a]<=t;)a++;for(var o=a=Math.max(0,a-1);o<n.length&&n[o]<t+1;)o++;o=Math.min(n.length-1,o);var s=n[a],u=n[o];return \"composite\"===r.kind?{kind:\"composite\",minZoom:s,maxZoom:u,interpolationType:i}:{kind:\"camera\",minZoom:s,maxZoom:u,minSize:r.evaluate(new si(s)),maxSize:r.evaluate(new si(u)),interpolationType:i}}function Lu(t,e,r){var n=e.uSize,i=r.lowerSize;return \"source\"===t.kind?i/128:\"composite\"===t.kind?Ke(i/128,r.upperSize/128,e.uSizeT):n}function Ou(t,e){var r=0,n=0;if(\"constant\"===t.kind)n=t.layoutSize;else if(\"source\"!==t.kind){var i=t.interpolationType,a=i?p(ar.interpolationFactor(i,e,t.minZoom,t.maxZoom),0,1):0;\"camera\"===t.kind?n=Ke(t.minSize,t.maxSize,a):r=a;}return {uSizeT:r,uSize:n}}On(\"Anchor\",Fu);var Ru=Object.freeze({__proto__:null,getSizeData:Du,evaluateSizeForFeature:Lu,evaluateSizeForZoom:Ou,SIZE_PACK_FACTOR:128});function Uu(t,e,r,n,i){if(void 0===e.segment)return !0;for(var a=e,o=e.segment+1,s=0;s>-r/2;){if(--o<0)return !1;s-=t[o].dist(a),a=t[o];}s+=t[o].dist(t[o+1]),o++;for(var u=[],l=0;s<r/2;){var p=t[o],c=t[o+1];if(!c)return !1;var h=t[o-1].angleTo(p)-p.angleTo(c);for(h=Math.abs((h+3*Math.PI)%(2*Math.PI)-Math.PI),u.push({distance:s,angleDelta:h}),l+=h;s-u[0].distance>n;)l-=u.shift().angleDelta;if(l>i)return !1;o++,s+=p.dist(c);}return !0}function ju(t){for(var e=0,r=0;r<t.length-1;r++)e+=t[r].dist(t[r+1]);return e}function qu(t,e,r){return t?.6*e*r:0}function Nu(t,e){return Math.max(t?t.right-t.left:0,e?e.right-e.left:0)}function Ku(t,e,r,n,i,a){for(var o=qu(r,i,a),s=Nu(r,n)*a,u=0,l=ju(t)/2,p=0;p<t.length-1;p++){var c=t[p],h=t[p+1],f=c.dist(h);if(u+f>l){var y=(l-u)/f,d=Ke(c.x,h.x,y),m=Ke(c.y,h.y,y),v=new Fu(d,m,h.angleTo(c),p);return v._round(),!o||Uu(t,v,s,o,e)?v:void 0}u+=f;}}function Gu(t,e,r,n,i,a,o,s,u){var l=qu(n,a,o),p=Nu(n,i),c=p*o,h=0===t[0].x||t[0].x===u||0===t[0].y||t[0].y===u;return e-c<e/4&&(e=c+e/4),function t(e,r,n,i,a,o,s,u,l){for(var p=o/2,c=ju(e),h=0,f=r-n,y=[],d=0;d<e.length-1;d++){for(var m=e[d],v=e[d+1],g=m.dist(v),x=v.angleTo(m);f+n<h+g;){var b=((f+=n)-h)/g,w=Ke(m.x,v.x,b),_=Ke(m.y,v.y,b);if(w>=0&&w<l&&_>=0&&_<l&&f-p>=0&&f+p<=c){var A=new Fu(w,_,x,d);A._round(),i&&!Uu(e,A,o,i,a)||y.push(A);}}h+=g;}return u||y.length||s||(y=t(e,h/2,n,i,a,o,s,!0,l)),y}(t,h?e/2*s%e:(p/2+2*a)*o*s%e,e,l,r,c,h,!1,u)}function Zu(t,e,r,n,a){for(var o=[],s=0;s<t.length;s++)for(var u=t[s],l=void 0,p=0;p<u.length-1;p++){var c=u[p],h=u[p+1];c.x<e&&h.x<e||(c.x<e?c=new i(e,c.y+(e-c.x)/(h.x-c.x)*(h.y-c.y))._round():h.x<e&&(h=new i(e,c.y+(e-c.x)/(h.x-c.x)*(h.y-c.y))._round()),c.y<r&&h.y<r||(c.y<r?c=new i(c.x+(r-c.y)/(h.y-c.y)*(h.x-c.x),r)._round():h.y<r&&(h=new i(c.x+(r-c.y)/(h.y-c.y)*(h.x-c.x),r)._round()),c.x>=n&&h.x>=n||(c.x>=n?c=new i(n,c.y+(n-c.x)/(h.x-c.x)*(h.y-c.y))._round():h.x>=n&&(h=new i(n,c.y+(n-c.x)/(h.x-c.x)*(h.y-c.y))._round()),c.y>=a&&h.y>=a||(c.y>=a?c=new i(c.x+(a-c.y)/(h.y-c.y)*(h.x-c.x),a)._round():h.y>=a&&(h=new i(c.x+(a-c.y)/(h.y-c.y)*(h.x-c.x),a)._round()),l&&c.equals(l[l.length-1])||o.push(l=[c]),l.push(h)))));}return o}function Xu(t,e,r,n){var a=[],o=t.image,s=o.pixelRatio,u=o.paddedRect.w-2,l=o.paddedRect.h-2,p=t.right-t.left,c=t.bottom-t.top,h=o.stretchX||[[0,u]],f=o.stretchY||[[0,l]],y=function(t,e){return t+e[1]-e[0]},d=h.reduce(y,0),m=f.reduce(y,0),v=u-d,g=l-m,x=0,b=d,w=0,_=m,A=0,S=v,k=0,I=g;if(o.content&&n){var z=o.content;x=Ju(h,0,z[0]),w=Ju(f,0,z[1]),b=Ju(h,z[0],z[2]),_=Ju(f,z[1],z[3]),A=z[0]-x,k=z[1]-w,S=z[2]-z[0]-b,I=z[3]-z[1]-_;}var C=function(n,a,u,l){var h=Yu(n.stretch-x,b,p,t.left),f=$u(n.fixed-A,S,n.stretch,d),y=Yu(a.stretch-w,_,c,t.top),v=$u(a.fixed-k,I,a.stretch,m),g=Yu(u.stretch-x,b,p,t.left),z=$u(u.fixed-A,S,u.stretch,d),C=Yu(l.stretch-w,_,c,t.top),E=$u(l.fixed-k,I,l.stretch,m),P=new i(h,y),M=new i(g,y),B=new i(g,C),T=new i(h,C),V=new i(f/s,v/s),F=new i(z/s,E/s),D=e*Math.PI/180;if(D){var L=Math.sin(D),O=Math.cos(D),R=[O,-L,L,O];P._matMult(R),M._matMult(R),T._matMult(R),B._matMult(R);}var U=n.stretch+n.fixed,j=a.stretch+a.fixed;return {tl:P,tr:M,bl:T,br:B,tex:{x:o.paddedRect.x+1+U,y:o.paddedRect.y+1+j,w:u.stretch+u.fixed-U,h:l.stretch+l.fixed-j},writingMode:void 0,glyphOffset:[0,0],sectionIndex:0,pixelOffsetTL:V,pixelOffsetBR:F,minFontScaleX:S/s/p,minFontScaleY:I/s/c,isSDF:r}};if(n&&(o.stretchX||o.stretchY))for(var E=Hu(h,v,d),P=Hu(f,g,m),M=0;M<E.length-1;M++)for(var B=E[M],T=E[M+1],V=0;V<P.length-1;V++)a.push(C(B,P[V],T,P[V+1]));else a.push(C({fixed:0,stretch:-1},{fixed:0,stretch:-1},{fixed:0,stretch:u+1},{fixed:0,stretch:l+1}));return a}function Ju(t,e,r){for(var n=0,i=0,a=t;i<a.length;i+=1){var o=a[i];n+=Math.max(e,Math.min(r,o[1]))-Math.max(e,Math.min(r,o[0]));}return n}function Hu(t,e,r){for(var n=[{fixed:-1,stretch:0}],i=0,a=t;i<a.length;i+=1){var o=a[i],s=o[0],u=o[1],l=n[n.length-1];n.push({fixed:s-l.stretch,stretch:l.stretch}),n.push({fixed:s-l.stretch,stretch:l.stretch+(u-s)});}return n.push({fixed:e+1,stretch:r}),n}function Yu(t,e,r,n){return t/e*r+n}function $u(t,e,r,n){return t-e*r/n}var Wu=function(t,e,r,n,a,o,s,u,l,p){if(this.boxStartIndex=t.length,l){var c=o.top,h=o.bottom,f=o.collisionPadding;f&&(c-=f[1],h+=f[3]);var y=h-c;y>0&&(y=Math.max(10,y),this.circleDiameter=y);}else {var d=o.top*s-u,m=o.bottom*s+u,v=o.left*s-u,g=o.right*s+u,x=o.collisionPadding;if(x&&(v-=x[0]*s,d-=x[1]*s,g+=x[2]*s,m+=x[3]*s),p){var b=new i(v,d),w=new i(g,d),_=new i(v,m),A=new i(g,m),S=p*Math.PI/180;b._rotate(S),w._rotate(S),_._rotate(S),A._rotate(S),v=Math.min(b.x,w.x,_.x,A.x),g=Math.max(b.x,w.x,_.x,A.x),d=Math.min(b.y,w.y,_.y,A.y),m=Math.max(b.y,w.y,_.y,A.y);}t.emplaceBack(e.x,e.y,v,d,g,m,r,n,a);}this.boxEndIndex=t.length;},Qu=function(t,e){if(void 0===t&&(t=[]),void 0===e&&(e=tl),this.data=t,this.length=this.data.length,this.compare=e,this.length>0)for(var r=(this.length>>1)-1;r>=0;r--)this._down(r);};function tl(t,e){return t<e?-1:t>e?1:0}function el(t,e,r){void 0===e&&(e=1),void 0===r&&(r=!1);for(var n=1/0,a=1/0,o=-1/0,s=-1/0,u=t[0],l=0;l<u.length;l++){var p=u[l];(!l||p.x<n)&&(n=p.x),(!l||p.y<a)&&(a=p.y),(!l||p.x>o)&&(o=p.x),(!l||p.y>s)&&(s=p.y);}var c=Math.min(o-n,s-a),h=c/2,f=new Qu([],rl);if(0===c)return new i(n,a);for(var y=n;y<o;y+=c)for(var d=a;d<s;d+=c)f.push(new nl(y+h,d+h,h,t));for(var m=function(t){for(var e=0,r=0,n=0,i=t[0],a=0,o=i.length,s=o-1;a<o;s=a++){var u=i[a],l=i[s],p=u.x*l.y-l.x*u.y;r+=(u.x+l.x)*p,n+=(u.y+l.y)*p,e+=3*p;}return new nl(r/e,n/e,0,t)}(t),v=f.length;f.length;){var g=f.pop();(g.d>m.d||!m.d)&&(m=g,r&&console.log(\"found best %d after %d probes\",Math.round(1e4*g.d)/1e4,v)),g.max-m.d<=e||(f.push(new nl(g.p.x-(h=g.h/2),g.p.y-h,h,t)),f.push(new nl(g.p.x+h,g.p.y-h,h,t)),f.push(new nl(g.p.x-h,g.p.y+h,h,t)),f.push(new nl(g.p.x+h,g.p.y+h,h,t)),v+=4);}return r&&(console.log(\"num probes: \"+v),console.log(\"best distance: \"+m.d)),m.p}function rl(t,e){return e.max-t.max}function nl(t,e,r,n){this.p=new i(t,e),this.h=r,this.d=function(t,e){for(var r=!1,n=1/0,i=0;i<e.length;i++)for(var a=e[i],o=0,s=a.length,u=s-1;o<s;u=o++){var l=a[o],p=a[u];l.y>t.y!=p.y>t.y&&t.x<(p.x-l.x)*(t.y-l.y)/(p.y-l.y)+l.x&&(r=!r),n=Math.min(n,Ya(t,l,p));}return (r?1:-1)*Math.sqrt(n)}(this.p,n),this.max=this.d+this.h*Math.SQRT2;}Qu.prototype.push=function(t){this.data.push(t),this.length++,this._up(this.length-1);},Qu.prototype.pop=function(){if(0!==this.length){var t=this.data[0],e=this.data.pop();return this.length--,this.length>0&&(this.data[0]=e,this._down(0)),t}},Qu.prototype.peek=function(){return this.data[0]},Qu.prototype._up=function(t){for(var e=this.data,r=this.compare,n=e[t];t>0;){var i=t-1>>1,a=e[i];if(r(n,a)>=0)break;e[t]=a,t=i;}e[t]=n;},Qu.prototype._down=function(t){for(var e=this.data,r=this.compare,n=this.length>>1,i=e[t];t<n;){var a=1+(t<<1),o=e[a],s=a+1;if(s<this.length&&r(e[s],o)<0&&(a=s,o=e[s]),r(o,i)>=0)break;e[t]=o,t=a;}e[t]=i;};var il=Number.POSITIVE_INFINITY;function al(t,e){return e[1]!==il?function(t,e,r){var n=0,i=0;switch(e=Math.abs(e),r=Math.abs(r),t){case\"top-right\":case\"top-left\":case\"top\":i=r-7;break;case\"bottom-right\":case\"bottom-left\":case\"bottom\":i=7-r;}switch(t){case\"top-right\":case\"bottom-right\":case\"right\":n=-e;break;case\"top-left\":case\"bottom-left\":case\"left\":n=e;}return [n,i]}(t,e[0],e[1]):function(t,e){var r=0,n=0;e<0&&(e=0);var i=e/Math.sqrt(2);switch(t){case\"top-right\":case\"top-left\":n=i-7;break;case\"bottom-right\":case\"bottom-left\":n=7-i;break;case\"bottom\":n=7-e;break;case\"top\":n=e-7;}switch(t){case\"top-right\":case\"bottom-right\":r=-i;break;case\"top-left\":case\"bottom-left\":r=i;break;case\"left\":r=e;break;case\"right\":r=-e;}return [r,n]}(t,e[0])}function ol(t){switch(t){case\"right\":case\"top-right\":case\"bottom-right\":return \"right\";case\"left\":case\"top-left\":case\"bottom-left\":return \"left\"}return \"center\"}function sl(t,e,r,n,a,o,s,u,l,p,c,h,f,y,d){var m=function(t,e,r,n,a,o,s,u){for(var l=n.layout.get(\"text-rotate\").evaluate(o,{})*Math.PI/180,p=[],c=0,h=e.positionedLines;c<h.length;c+=1)for(var f=h[c],y=0,d=f.positionedGlyphs;y<d.length;y+=1){var m=d[y];if(m.rect){var v=m.rect||{},g=4,x=!0,b=1,w=0,_=(a||u)&&m.vertical,A=m.metrics.advance*m.scale/2;if(u&&e.verticalizable&&(w=f.lineOffset/2-(m.imageName?-(24-m.metrics.width*m.scale)/2:24*(m.scale-1))),m.imageName){var S=s[m.imageName];x=S.sdf,g=1/(b=S.pixelRatio);}var k=a?[m.x+A,m.y]:[0,0],I=a?[0,0]:[m.x+A+r[0],m.y+r[1]-w],z=[0,0];_&&(z=I,I=[0,0]);var C=(m.metrics.left-g)*m.scale-A+I[0],E=(-m.metrics.top-g)*m.scale+I[1],P=C+v.w*m.scale/b,M=E+v.h*m.scale/b,B=new i(C,E),T=new i(P,E),V=new i(C,M),F=new i(P,M);if(_){var D=new i(-A,A- -17),L=-Math.PI/2,O=12-A,R=new i(22-O,-(m.imageName?O:0)),U=new(Function.prototype.bind.apply(i,[null].concat(z)));B._rotateAround(L,D)._add(R)._add(U),T._rotateAround(L,D)._add(R)._add(U),V._rotateAround(L,D)._add(R)._add(U),F._rotateAround(L,D)._add(R)._add(U);}if(l){var j=Math.sin(l),q=Math.cos(l),N=[q,-j,j,q];B._matMult(N),T._matMult(N),V._matMult(N),F._matMult(N);}var K=new i(0,0),G=new i(0,0);p.push({tl:B,tr:T,bl:V,br:F,tex:v,writingMode:e.writingMode,glyphOffset:k,sectionIndex:m.sectionIndex,isSDF:x,pixelOffsetTL:K,pixelOffsetBR:G,minFontScaleX:0,minFontScaleY:0});}}return p}(0,r,u,a,o,s,n,t.allowVerticalPlacement),v=t.textSizeData,g=null;\"source\"===v.kind?(g=[128*a.layout.get(\"text-size\").evaluate(s,{})])[0]>32640&&A(t.layerIds[0]+': Value for \"text-size\" is >= 255. Reduce your \"text-size\".'):\"composite\"===v.kind&&((g=[128*y.compositeTextSizes[0].evaluate(s,{},d),128*y.compositeTextSizes[1].evaluate(s,{},d)])[0]>32640||g[1]>32640)&&A(t.layerIds[0]+': Value for \"text-size\" is >= 255. Reduce your \"text-size\".'),t.addSymbols(t.text,m,g,u,o,s,p,e,l.lineStartIndex,l.lineLength,f,d);for(var x=0,b=c;x<b.length;x+=1)h[b[x]]=t.text.placedSymbolArray.length-1;return 4*m.length}function ul(t){for(var e in t)return t[e];return null}function ll(t,e,r,n){var i=t.compareText;if(e in i){for(var a=i[e],o=a.length-1;o>=0;o--)if(n.dist(a[o])<r)return !0}else i[e]=[];return i[e].push(n),!1}var pl=bs.VectorTileFeature.types,cl=[{name:\"a_fade_opacity\",components:1,type:\"Uint8\",offset:0}];function hl(t,e,r,n,i,a,o,s,u,l,p,c,h){var f=s?Math.min(32640,Math.round(s[0])):0,y=s?Math.min(32640,Math.round(s[1])):0;t.emplaceBack(e,r,Math.round(32*n),Math.round(32*i),a,o,(f<<1)+(u?1:0),y,16*l,16*p,256*c,256*h);}function fl(t,e,r){t.emplaceBack(e.x,e.y,r),t.emplaceBack(e.x,e.y,r),t.emplaceBack(e.x,e.y,r),t.emplaceBack(e.x,e.y,r);}function yl(t){for(var e=0,r=t.sections;e<r.length;e+=1)if($n(r[e].text))return !0;return !1}var dl=function(t){this.layoutVertexArray=new Vi,this.indexArray=new ji,this.programConfigurations=t,this.segments=new sa,this.dynamicLayoutVertexArray=new Fi,this.opacityVertexArray=new Di,this.placedSymbolArray=new Qi;};dl.prototype.isEmpty=function(){return 0===this.layoutVertexArray.length&&0===this.indexArray.length&&0===this.dynamicLayoutVertexArray.length&&0===this.opacityVertexArray.length},dl.prototype.upload=function(t,e,r,n){this.isEmpty()||(r&&(this.layoutVertexBuffer=t.createVertexBuffer(this.layoutVertexArray,js.members),this.indexBuffer=t.createIndexBuffer(this.indexArray,e),this.dynamicLayoutVertexBuffer=t.createVertexBuffer(this.dynamicLayoutVertexArray,qs.members,!0),this.opacityVertexBuffer=t.createVertexBuffer(this.opacityVertexArray,cl,!0),this.opacityVertexBuffer.itemSize=1),(r||n)&&this.programConfigurations.upload(t));},dl.prototype.destroy=function(){this.layoutVertexBuffer&&(this.layoutVertexBuffer.destroy(),this.indexBuffer.destroy(),this.programConfigurations.destroy(),this.segments.destroy(),this.dynamicLayoutVertexBuffer.destroy(),this.opacityVertexBuffer.destroy());},On(\"SymbolBuffers\",dl);var ml=function(t,e,r){this.layoutVertexArray=new t,this.layoutAttributes=e,this.indexArray=new r,this.segments=new sa,this.collisionVertexArray=new Ui;};ml.prototype.upload=function(t){this.layoutVertexBuffer=t.createVertexBuffer(this.layoutVertexArray,this.layoutAttributes),this.indexBuffer=t.createIndexBuffer(this.indexArray),this.collisionVertexBuffer=t.createVertexBuffer(this.collisionVertexArray,Ns.members,!0);},ml.prototype.destroy=function(){this.layoutVertexBuffer&&(this.layoutVertexBuffer.destroy(),this.indexBuffer.destroy(),this.segments.destroy(),this.collisionVertexBuffer.destroy());},On(\"CollisionBuffers\",ml);var vl=function(t){this.collisionBoxArray=t.collisionBoxArray,this.zoom=t.zoom,this.overscaling=t.overscaling,this.layers=t.layers,this.layerIds=this.layers.map((function(t){return t.id})),this.index=t.index,this.pixelRatio=t.pixelRatio,this.sourceLayerIndex=t.sourceLayerIndex,this.hasPattern=!1,this.hasRTLText=!1,this.sortKeyRanges=[],this.collisionCircleArray=[],this.placementInvProjMatrix=oo([]),this.placementViewportMatrix=oo([]);var e=this.layers[0]._unevaluatedLayout._values;this.textSizeData=Du(this.zoom,e[\"text-size\"]),this.iconSizeData=Du(this.zoom,e[\"icon-size\"]);var r=this.layers[0].layout,n=r.get(\"symbol-sort-key\"),i=r.get(\"symbol-z-order\");this.canOverlap=r.get(\"text-allow-overlap\")||r.get(\"icon-allow-overlap\")||r.get(\"text-ignore-placement\")||r.get(\"icon-ignore-placement\"),this.sortFeaturesByKey=\"viewport-y\"!==i&&void 0!==n.constantOr(1),this.sortFeaturesByY=(\"viewport-y\"===i||\"auto\"===i&&!this.sortFeaturesByKey)&&this.canOverlap,\"point\"===r.get(\"symbol-placement\")&&(this.writingModes=r.get(\"text-writing-mode\").map((function(t){return wu[t]}))),this.stateDependentLayerIds=this.layers.filter((function(t){return t.isStateDependent()})).map((function(t){return t.id})),this.sourceID=t.sourceID;};vl.prototype.createArrays=function(){this.text=new dl(new Va(this.layers,this.zoom,(function(t){return /^text/.test(t)}))),this.icon=new dl(new Va(this.layers,this.zoom,(function(t){return /^icon/.test(t)}))),this.glyphOffsetArray=new ra,this.lineVertexArray=new na,this.symbolInstances=new ea;},vl.prototype.calculateGlyphDependencies=function(t,e,r,n,i){for(var a=0;a<t.length;a++)if(e[t.charCodeAt(a)]=!0,(r||n)&&i){var o=Xs[t.charAt(a)];o&&(e[o.charCodeAt(0)]=!0);}},vl.prototype.populate=function(t,e,r){var n=this.layers[0],i=n.layout,a=i.get(\"text-font\"),o=i.get(\"text-field\"),s=i.get(\"icon-image\"),u=(\"constant\"!==o.value.kind||o.value.value instanceof ne&&!o.value.value.isEmpty()||o.value.value.toString().length>0)&&(\"constant\"!==a.value.kind||a.value.value.length>0),l=\"constant\"!==s.value.kind||!!s.value.value||Object.keys(s.parameters).length>0,p=i.get(\"symbol-sort-key\");if(this.features=[],u||l){for(var c=e.iconDependencies,h=e.glyphDependencies,f=e.availableImages,y=new si(this.zoom),d=0,m=t;d<m.length;d+=1){var v=m[d],g=v.feature,x=v.id,b=v.index,w=v.sourceLayerIndex,_=n._featureFilter.needGeometry,A=Ua(g,_);if(n._featureFilter.filter(y,A,r)){_||(A.geometry=Ra(g));var S=void 0;if(u){var k=n.getValueAndResolveTokens(\"text-field\",A,r,f),I=ne.factory(k);yl(I)&&(this.hasRTLText=!0),(!this.hasRTLText||\"unavailable\"===ii()||this.hasRTLText&&oi.isParsed())&&(S=Zs(I,n,A));}var z=void 0;if(l){var C=n.getValueAndResolveTokens(\"icon-image\",A,r,f);z=C instanceof ie?C:ie.fromString(C);}if(S||z){var E=this.sortFeaturesByKey?p.evaluate(A,{},r):void 0;if(this.features.push({id:x,text:S,icon:z,index:b,sourceLayerIndex:w,geometry:A.geometry,properties:g.properties,type:pl[g.type],sortKey:E}),z&&(c[z.name]=!0),S){var P=a.evaluate(A,{},r).join(\",\"),M=\"map\"===i.get(\"text-rotation-alignment\")&&\"point\"!==i.get(\"symbol-placement\");this.allowVerticalPlacement=this.writingModes&&this.writingModes.indexOf(wu.vertical)>=0;for(var B=0,T=S.sections;B<T.length;B+=1){var V=T[B];if(V.image)c[V.image.name]=!0;else {var F=Zn(S.toString()),D=V.fontStack||P,L=h[D]=h[D]||{};this.calculateGlyphDependencies(V.text,L,M,this.allowVerticalPlacement,F);}}}}}}\"line\"===i.get(\"symbol-placement\")&&(this.features=function(t){var e={},r={},n=[],i=0;function a(e){n.push(t[e]),i++;}function o(t,e,i){var a=r[t];return delete r[t],r[e]=a,n[a].geometry[0].pop(),n[a].geometry[0]=n[a].geometry[0].concat(i[0]),a}function s(t,r,i){var a=e[r];return delete e[r],e[t]=a,n[a].geometry[0].shift(),n[a].geometry[0]=i[0].concat(n[a].geometry[0]),a}function u(t,e,r){var n=r?e[0][e[0].length-1]:e[0][0];return t+\":\"+n.x+\":\"+n.y}for(var l=0;l<t.length;l++){var p=t[l],c=p.geometry,h=p.text?p.text.toString():null;if(h){var f=u(h,c),y=u(h,c,!0);if(f in r&&y in e&&r[f]!==e[y]){var d=s(f,y,c),m=o(f,y,n[d].geometry);delete e[f],delete r[y],r[u(h,n[m].geometry,!0)]=m,n[d].geometry=null;}else f in r?o(f,y,c):y in e?s(f,y,c):(a(l),e[f]=i-1,r[y]=i-1);}else a(l);}return n.filter((function(t){return t.geometry}))}(this.features)),this.sortFeaturesByKey&&this.features.sort((function(t,e){return t.sortKey-e.sortKey}));}},vl.prototype.update=function(t,e,r){this.stateDependentLayers.length&&(this.text.programConfigurations.updatePaintArrays(t,e,this.layers,r),this.icon.programConfigurations.updatePaintArrays(t,e,this.layers,r));},vl.prototype.isEmpty=function(){return 0===this.symbolInstances.length&&!this.hasRTLText},vl.prototype.uploadPending=function(){return !this.uploaded||this.text.programConfigurations.needsUpload||this.icon.programConfigurations.needsUpload},vl.prototype.upload=function(t){!this.uploaded&&this.hasDebugData()&&(this.textCollisionBox.upload(t),this.iconCollisionBox.upload(t)),this.text.upload(t,this.sortFeaturesByY,!this.uploaded,this.text.programConfigurations.needsUpload),this.icon.upload(t,this.sortFeaturesByY,!this.uploaded,this.icon.programConfigurations.needsUpload),this.uploaded=!0;},vl.prototype.destroyDebugData=function(){this.textCollisionBox.destroy(),this.iconCollisionBox.destroy();},vl.prototype.destroy=function(){this.text.destroy(),this.icon.destroy(),this.hasDebugData()&&this.destroyDebugData();},vl.prototype.addToLineVertexArray=function(t,e){var r=this.lineVertexArray.length;if(void 0!==t.segment){for(var n=t.dist(e[t.segment+1]),i=t.dist(e[t.segment]),a={},o=t.segment+1;o<e.length;o++)a[o]={x:e[o].x,y:e[o].y,tileUnitDistanceFromAnchor:n},o<e.length-1&&(n+=e[o+1].dist(e[o]));for(var s=t.segment||0;s>=0;s--)a[s]={x:e[s].x,y:e[s].y,tileUnitDistanceFromAnchor:i},s>0&&(i+=e[s-1].dist(e[s]));for(var u=0;u<e.length;u++){var l=a[u];this.lineVertexArray.emplaceBack(l.x,l.y,l.tileUnitDistanceFromAnchor);}}return {lineStartIndex:r,lineLength:this.lineVertexArray.length-r}},vl.prototype.addSymbols=function(t,e,r,n,i,a,o,s,u,l,p,c){for(var h=t.indexArray,f=t.layoutVertexArray,y=t.segments.prepareSegment(4*e.length,f,h,this.canOverlap?a.sortKey:void 0),d=this.glyphOffsetArray.length,m=y.vertexLength,v=this.allowVerticalPlacement&&o===wu.vertical?Math.PI/2:0,g=a.text&&a.text.sections,x=0;x<e.length;x++){var b=e[x],w=b.tl,_=b.tr,A=b.bl,S=b.br,k=b.tex,I=b.pixelOffsetTL,z=b.pixelOffsetBR,C=b.minFontScaleX,E=b.minFontScaleY,P=b.glyphOffset,M=b.isSDF,B=b.sectionIndex,T=y.vertexLength,V=P[1];hl(f,s.x,s.y,w.x,V+w.y,k.x,k.y,r,M,I.x,I.y,C,E),hl(f,s.x,s.y,_.x,V+_.y,k.x+k.w,k.y,r,M,z.x,I.y,C,E),hl(f,s.x,s.y,A.x,V+A.y,k.x,k.y+k.h,r,M,I.x,z.y,C,E),hl(f,s.x,s.y,S.x,V+S.y,k.x+k.w,k.y+k.h,r,M,z.x,z.y,C,E),fl(t.dynamicLayoutVertexArray,s,v),h.emplaceBack(T,T+1,T+2),h.emplaceBack(T+1,T+2,T+3),y.vertexLength+=4,y.primitiveLength+=2,this.glyphOffsetArray.emplaceBack(P[0]),x!==e.length-1&&B===e[x+1].sectionIndex||t.programConfigurations.populatePaintArrays(f.length,a,a.index,{},c,g&&g[B]);}t.placedSymbolArray.emplaceBack(s.x,s.y,d,this.glyphOffsetArray.length-d,m,u,l,s.segment,r?r[0]:0,r?r[1]:0,n[0],n[1],o,0,!1,0,p);},vl.prototype._addCollisionDebugVertex=function(t,e,r,n,i,a){return e.emplaceBack(0,0),t.emplaceBack(r.x,r.y,n,i,Math.round(a.x),Math.round(a.y))},vl.prototype.addCollisionDebugVertices=function(t,e,r,n,a,o,s){var u=a.segments.prepareSegment(4,a.layoutVertexArray,a.indexArray),l=u.vertexLength,p=a.layoutVertexArray,c=a.collisionVertexArray,h=s.anchorX,f=s.anchorY;this._addCollisionDebugVertex(p,c,o,h,f,new i(t,e)),this._addCollisionDebugVertex(p,c,o,h,f,new i(r,e)),this._addCollisionDebugVertex(p,c,o,h,f,new i(r,n)),this._addCollisionDebugVertex(p,c,o,h,f,new i(t,n)),u.vertexLength+=4;var y=a.indexArray;y.emplaceBack(l,l+1),y.emplaceBack(l+1,l+2),y.emplaceBack(l+2,l+3),y.emplaceBack(l+3,l),u.primitiveLength+=4;},vl.prototype.addDebugCollisionBoxes=function(t,e,r,n){for(var i=t;i<e;i++){var a=this.collisionBoxArray.get(i);this.addCollisionDebugVertices(a.x1,a.y1,a.x2,a.y2,n?this.textCollisionBox:this.iconCollisionBox,a.anchorPoint,r);}},vl.prototype.generateCollisionDebugBuffers=function(){this.hasDebugData()&&this.destroyDebugData(),this.textCollisionBox=new ml(Oi,Ks.members,Xi),this.iconCollisionBox=new ml(Oi,Ks.members,Xi);for(var t=0;t<this.symbolInstances.length;t++){var e=this.symbolInstances.get(t);this.addDebugCollisionBoxes(e.textBoxStartIndex,e.textBoxEndIndex,e,!0),this.addDebugCollisionBoxes(e.verticalTextBoxStartIndex,e.verticalTextBoxEndIndex,e,!0),this.addDebugCollisionBoxes(e.iconBoxStartIndex,e.iconBoxEndIndex,e,!1),this.addDebugCollisionBoxes(e.verticalIconBoxStartIndex,e.verticalIconBoxEndIndex,e,!1);}},vl.prototype._deserializeCollisionBoxesForSymbol=function(t,e,r,n,i,a,o,s,u){for(var l={},p=e;p<r;p++){var c=t.get(p);l.textBox={x1:c.x1,y1:c.y1,x2:c.x2,y2:c.y2,anchorPointX:c.anchorPointX,anchorPointY:c.anchorPointY},l.textFeatureIndex=c.featureIndex;break}for(var h=n;h<i;h++){var f=t.get(h);l.verticalTextBox={x1:f.x1,y1:f.y1,x2:f.x2,y2:f.y2,anchorPointX:f.anchorPointX,anchorPointY:f.anchorPointY},l.verticalTextFeatureIndex=f.featureIndex;break}for(var y=a;y<o;y++){var d=t.get(y);l.iconBox={x1:d.x1,y1:d.y1,x2:d.x2,y2:d.y2,anchorPointX:d.anchorPointX,anchorPointY:d.anchorPointY},l.iconFeatureIndex=d.featureIndex;break}for(var m=s;m<u;m++){var v=t.get(m);l.verticalIconBox={x1:v.x1,y1:v.y1,x2:v.x2,y2:v.y2,anchorPointX:v.anchorPointX,anchorPointY:v.anchorPointY},l.verticalIconFeatureIndex=v.featureIndex;break}return l},vl.prototype.deserializeCollisionBoxes=function(t){this.collisionArrays=[];for(var e=0;e<this.symbolInstances.length;e++){var r=this.symbolInstances.get(e);this.collisionArrays.push(this._deserializeCollisionBoxesForSymbol(t,r.textBoxStartIndex,r.textBoxEndIndex,r.verticalTextBoxStartIndex,r.verticalTextBoxEndIndex,r.iconBoxStartIndex,r.iconBoxEndIndex,r.verticalIconBoxStartIndex,r.verticalIconBoxEndIndex));}},vl.prototype.hasTextData=function(){return this.text.segments.get().length>0},vl.prototype.hasIconData=function(){return this.icon.segments.get().length>0},vl.prototype.hasDebugData=function(){return this.textCollisionBox&&this.iconCollisionBox},vl.prototype.hasTextCollisionBoxData=function(){return this.hasDebugData()&&this.textCollisionBox.segments.get().length>0},vl.prototype.hasIconCollisionBoxData=function(){return this.hasDebugData()&&this.iconCollisionBox.segments.get().length>0},vl.prototype.addIndicesForPlacedSymbol=function(t,e){for(var r=t.placedSymbolArray.get(e),n=r.vertexStartIndex+4*r.numGlyphs,i=r.vertexStartIndex;i<n;i+=4)t.indexArray.emplaceBack(i,i+1,i+2),t.indexArray.emplaceBack(i+1,i+2,i+3);},vl.prototype.getSortedSymbolIndexes=function(t){if(this.sortedAngle===t&&void 0!==this.symbolInstanceIndexes)return this.symbolInstanceIndexes;for(var e=Math.sin(t),r=Math.cos(t),n=[],i=[],a=[],o=0;o<this.symbolInstances.length;++o){a.push(o);var s=this.symbolInstances.get(o);n.push(0|Math.round(e*s.anchorX+r*s.anchorY)),i.push(s.featureIndex);}return a.sort((function(t,e){return n[t]-n[e]||i[e]-i[t]})),a},vl.prototype.addToSortKeyRanges=function(t,e){var r=this.sortKeyRanges[this.sortKeyRanges.length-1];r&&r.sortKey===e?r.symbolInstanceEnd=t+1:this.sortKeyRanges.push({sortKey:e,symbolInstanceStart:t,symbolInstanceEnd:t+1});},vl.prototype.sortFeatures=function(t){var e=this;if(this.sortFeaturesByY&&this.sortedAngle!==t&&!(this.text.segments.get().length>1||this.icon.segments.get().length>1)){this.symbolInstanceIndexes=this.getSortedSymbolIndexes(t),this.sortedAngle=t,this.text.indexArray.clear(),this.icon.indexArray.clear(),this.featureSortOrder=[];for(var r=0,n=this.symbolInstanceIndexes;r<n.length;r+=1){var i=this.symbolInstances.get(n[r]);this.featureSortOrder.push(i.featureIndex),[i.rightJustifiedTextSymbolIndex,i.centerJustifiedTextSymbolIndex,i.leftJustifiedTextSymbolIndex].forEach((function(t,r,n){t>=0&&n.indexOf(t)===r&&e.addIndicesForPlacedSymbol(e.text,t);})),i.verticalPlacedTextSymbolIndex>=0&&this.addIndicesForPlacedSymbol(this.text,i.verticalPlacedTextSymbolIndex),i.placedIconSymbolIndex>=0&&this.addIndicesForPlacedSymbol(this.icon,i.placedIconSymbolIndex),i.verticalPlacedIconSymbolIndex>=0&&this.addIndicesForPlacedSymbol(this.icon,i.verticalPlacedIconSymbolIndex);}this.text.indexBuffer&&this.text.indexBuffer.updateData(this.text.indexArray),this.icon.indexBuffer&&this.icon.indexBuffer.updateData(this.icon.indexArray);}},On(\"SymbolBucket\",vl,{omit:[\"layers\",\"collisionBoxArray\",\"features\",\"compareText\"]}),vl.MAX_GLYPHS=65535,vl.addDynamicAttributes=fl;var gl=new wi({\"symbol-placement\":new mi(Et.layout_symbol[\"symbol-placement\"]),\"symbol-spacing\":new mi(Et.layout_symbol[\"symbol-spacing\"]),\"symbol-avoid-edges\":new mi(Et.layout_symbol[\"symbol-avoid-edges\"]),\"symbol-sort-key\":new vi(Et.layout_symbol[\"symbol-sort-key\"]),\"symbol-z-order\":new mi(Et.layout_symbol[\"symbol-z-order\"]),\"icon-allow-overlap\":new mi(Et.layout_symbol[\"icon-allow-overlap\"]),\"icon-ignore-placement\":new mi(Et.layout_symbol[\"icon-ignore-placement\"]),\"icon-optional\":new mi(Et.layout_symbol[\"icon-optional\"]),\"icon-rotation-alignment\":new mi(Et.layout_symbol[\"icon-rotation-alignment\"]),\"icon-size\":new vi(Et.layout_symbol[\"icon-size\"]),\"icon-text-fit\":new mi(Et.layout_symbol[\"icon-text-fit\"]),\"icon-text-fit-padding\":new mi(Et.layout_symbol[\"icon-text-fit-padding\"]),\"icon-image\":new vi(Et.layout_symbol[\"icon-image\"]),\"icon-rotate\":new vi(Et.layout_symbol[\"icon-rotate\"]),\"icon-padding\":new mi(Et.layout_symbol[\"icon-padding\"]),\"icon-keep-upright\":new mi(Et.layout_symbol[\"icon-keep-upright\"]),\"icon-offset\":new vi(Et.layout_symbol[\"icon-offset\"]),\"icon-anchor\":new vi(Et.layout_symbol[\"icon-anchor\"]),\"icon-pitch-alignment\":new mi(Et.layout_symbol[\"icon-pitch-alignment\"]),\"text-pitch-alignment\":new mi(Et.layout_symbol[\"text-pitch-alignment\"]),\"text-rotation-alignment\":new mi(Et.layout_symbol[\"text-rotation-alignment\"]),\"text-field\":new vi(Et.layout_symbol[\"text-field\"]),\"text-font\":new vi(Et.layout_symbol[\"text-font\"]),\"text-size\":new vi(Et.layout_symbol[\"text-size\"]),\"text-max-width\":new vi(Et.layout_symbol[\"text-max-width\"]),\"text-line-height\":new mi(Et.layout_symbol[\"text-line-height\"]),\"text-letter-spacing\":new vi(Et.layout_symbol[\"text-letter-spacing\"]),\"text-justify\":new vi(Et.layout_symbol[\"text-justify\"]),\"text-radial-offset\":new vi(Et.layout_symbol[\"text-radial-offset\"]),\"text-variable-anchor\":new mi(Et.layout_symbol[\"text-variable-anchor\"]),\"text-anchor\":new vi(Et.layout_symbol[\"text-anchor\"]),\"text-max-angle\":new mi(Et.layout_symbol[\"text-max-angle\"]),\"text-writing-mode\":new mi(Et.layout_symbol[\"text-writing-mode\"]),\"text-rotate\":new vi(Et.layout_symbol[\"text-rotate\"]),\"text-padding\":new mi(Et.layout_symbol[\"text-padding\"]),\"text-keep-upright\":new mi(Et.layout_symbol[\"text-keep-upright\"]),\"text-transform\":new vi(Et.layout_symbol[\"text-transform\"]),\"text-offset\":new vi(Et.layout_symbol[\"text-offset\"]),\"text-allow-overlap\":new mi(Et.layout_symbol[\"text-allow-overlap\"]),\"text-ignore-placement\":new mi(Et.layout_symbol[\"text-ignore-placement\"]),\"text-optional\":new mi(Et.layout_symbol[\"text-optional\"])}),xl={paint:new wi({\"icon-opacity\":new vi(Et.paint_symbol[\"icon-opacity\"]),\"icon-color\":new vi(Et.paint_symbol[\"icon-color\"]),\"icon-halo-color\":new vi(Et.paint_symbol[\"icon-halo-color\"]),\"icon-halo-width\":new vi(Et.paint_symbol[\"icon-halo-width\"]),\"icon-halo-blur\":new vi(Et.paint_symbol[\"icon-halo-blur\"]),\"icon-translate\":new mi(Et.paint_symbol[\"icon-translate\"]),\"icon-translate-anchor\":new mi(Et.paint_symbol[\"icon-translate-anchor\"]),\"text-opacity\":new vi(Et.paint_symbol[\"text-opacity\"]),\"text-color\":new vi(Et.paint_symbol[\"text-color\"],{runtimeType:jt,getOverride:function(t){return t.textColor},hasOverride:function(t){return !!t.textColor}}),\"text-halo-color\":new vi(Et.paint_symbol[\"text-halo-color\"]),\"text-halo-width\":new vi(Et.paint_symbol[\"text-halo-width\"]),\"text-halo-blur\":new vi(Et.paint_symbol[\"text-halo-blur\"]),\"text-translate\":new mi(Et.paint_symbol[\"text-translate\"]),\"text-translate-anchor\":new mi(Et.paint_symbol[\"text-translate-anchor\"])}),layout:gl},bl=function(t){this.type=t.property.overrides?t.property.overrides.runtimeType:Lt,this.defaultValue=t;};bl.prototype.evaluate=function(t){if(t.formattedSection){var e=this.defaultValue.property.overrides;if(e&&e.hasOverride(t.formattedSection))return e.getOverride(t.formattedSection)}return t.feature&&t.featureState?this.defaultValue.evaluate(t.feature,t.featureState):this.defaultValue.property.specification.default},bl.prototype.eachChild=function(t){this.defaultValue.isConstant()||t(this.defaultValue.value._styleExpression.expression);},bl.prototype.outputDefined=function(){return !1},bl.prototype.serialize=function(){return null},On(\"FormatSectionOverride\",bl,{omit:[\"defaultValue\"]});var wl=function(t){function e(e){t.call(this,e,xl);}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e,e.prototype.recalculate=function(e,r){if(t.prototype.recalculate.call(this,e,r),\"auto\"===this.layout.get(\"icon-rotation-alignment\")&&(this.layout._values[\"icon-rotation-alignment\"]=\"point\"!==this.layout.get(\"symbol-placement\")?\"map\":\"viewport\"),\"auto\"===this.layout.get(\"text-rotation-alignment\")&&(this.layout._values[\"text-rotation-alignment\"]=\"point\"!==this.layout.get(\"symbol-placement\")?\"map\":\"viewport\"),\"auto\"===this.layout.get(\"text-pitch-alignment\")&&(this.layout._values[\"text-pitch-alignment\"]=this.layout.get(\"text-rotation-alignment\")),\"auto\"===this.layout.get(\"icon-pitch-alignment\")&&(this.layout._values[\"icon-pitch-alignment\"]=this.layout.get(\"icon-rotation-alignment\")),\"point\"===this.layout.get(\"symbol-placement\")){var n=this.layout.get(\"text-writing-mode\");if(n){for(var i=[],a=0,o=n;a<o.length;a+=1){var s=o[a];i.indexOf(s)<0&&i.push(s);}this.layout._values[\"text-writing-mode\"]=i;}else this.layout._values[\"text-writing-mode\"]=[\"horizontal\"];}this._setPaintOverrides();},e.prototype.getValueAndResolveTokens=function(t,e,r,n){var i=this.layout.get(t).evaluate(e,{},r,n),a=this._unevaluatedLayout._values[t];return a.isDataDriven()||Gr(a.value)||!i?i:function(t,e){return e.replace(/{([^{}]+)}/g,(function(e,r){return r in t?String(t[r]):\"\"}))}(e.properties,i)},e.prototype.createBucket=function(t){return new vl(t)},e.prototype.queryRadius=function(){return 0},e.prototype.queryIntersectsFeature=function(){return !1},e.prototype._setPaintOverrides=function(){for(var t=0,r=xl.paint.overridableProperties;t<r.length;t+=1){var n=r[t];if(e.hasPaintOverride(this.layout,n)){var i,a=this.paint.get(n),o=new bl(a),s=new Kr(o,a.property.specification);i=\"constant\"===a.value.kind||\"source\"===a.value.kind?new Xr(\"source\",s):new Jr(\"composite\",s,a.value.zoomStops,a.value._interpolationType),this.paint._values[n]=new yi(a.property,i,a.parameters);}}},e.prototype._handleOverridablePaintPropertyUpdate=function(t,r,n){return !(!this.layout||r.isDataDriven()||n.isDataDriven())&&e.hasPaintOverride(this.layout,t)},e.hasPaintOverride=function(t,e){var r=t.get(\"text-field\"),n=xl.paint.properties[e],i=!1,a=function(t){for(var e=0,r=t;e<r.length;e+=1)if(n.overrides&&n.overrides.hasOverride(r[e]))return void(i=!0)};if(\"constant\"===r.value.kind&&r.value.value instanceof ne)a(r.value.value.sections);else if(\"source\"===r.value.kind){var o=function(t){i||(t instanceof le&&se(t.value)===Gt?a(t.value.sections):t instanceof fe?a(t.sections):t.eachChild(o));},s=r.value;s._styleExpression&&o(s._styleExpression.expression);}return i},e}(_i),_l={paint:new wi({\"background-color\":new mi(Et.paint_background[\"background-color\"]),\"background-pattern\":new xi(Et.paint_background[\"background-pattern\"]),\"background-opacity\":new mi(Et.paint_background[\"background-opacity\"])})},Al=function(t){function e(e){t.call(this,e,_l);}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e,e}(_i),Sl={paint:new wi({\"raster-opacity\":new mi(Et.paint_raster[\"raster-opacity\"]),\"raster-hue-rotate\":new mi(Et.paint_raster[\"raster-hue-rotate\"]),\"raster-brightness-min\":new mi(Et.paint_raster[\"raster-brightness-min\"]),\"raster-brightness-max\":new mi(Et.paint_raster[\"raster-brightness-max\"]),\"raster-saturation\":new mi(Et.paint_raster[\"raster-saturation\"]),\"raster-contrast\":new mi(Et.paint_raster[\"raster-contrast\"]),\"raster-resampling\":new mi(Et.paint_raster[\"raster-resampling\"]),\"raster-fade-duration\":new mi(Et.paint_raster[\"raster-fade-duration\"])})},kl=function(t){function e(e){t.call(this,e,Sl);}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e,e}(_i),Il=function(t){function e(e){t.call(this,e,{}),this.implementation=e;}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e,e.prototype.is3D=function(){return \"3d\"===this.implementation.renderingMode},e.prototype.hasOffscreenPass=function(){return void 0!==this.implementation.prerender},e.prototype.recalculate=function(){},e.prototype.updateTransitions=function(){},e.prototype.hasTransition=function(){},e.prototype.serialize=function(){},e.prototype.onAdd=function(t){this.implementation.onAdd&&this.implementation.onAdd(t,t.painter.context.gl);},e.prototype.onRemove=function(t){this.implementation.onRemove&&this.implementation.onRemove(t,t.painter.context.gl);},e}(_i),zl={circle:co,heatmap:_o,hillshade:So,fill:ps,\"fill-extrusion\":zs,line:Rs,symbol:wl,background:Al,raster:kl},Cl=o.HTMLImageElement,El=o.HTMLCanvasElement,Pl=o.HTMLVideoElement,Ml=o.ImageData,Bl=o.ImageBitmap,Tl=function(t,e,r,n){this.context=t,this.format=r,this.texture=t.gl.createTexture(),this.update(e,n);};Tl.prototype.update=function(t,e,r){var n=t.width,i=t.height,a=!(this.size&&this.size[0]===n&&this.size[1]===i||r),o=this.context,s=o.gl;if(this.useMipmap=Boolean(e&&e.useMipmap),s.bindTexture(s.TEXTURE_2D,this.texture),o.pixelStoreUnpackFlipY.set(!1),o.pixelStoreUnpack.set(1),o.pixelStoreUnpackPremultiplyAlpha.set(this.format===s.RGBA&&(!e||!1!==e.premultiply)),a)this.size=[n,i],t instanceof Cl||t instanceof El||t instanceof Pl||t instanceof Ml||Bl&&t instanceof Bl?s.texImage2D(s.TEXTURE_2D,0,this.format,this.format,s.UNSIGNED_BYTE,t):s.texImage2D(s.TEXTURE_2D,0,this.format,n,i,0,this.format,s.UNSIGNED_BYTE,t.data);else {var u=r||{x:0,y:0},l=u.x,p=u.y;t instanceof Cl||t instanceof El||t instanceof Pl||t instanceof Ml||Bl&&t instanceof Bl?s.texSubImage2D(s.TEXTURE_2D,0,l,p,s.RGBA,s.UNSIGNED_BYTE,t):s.texSubImage2D(s.TEXTURE_2D,0,l,p,n,i,s.RGBA,s.UNSIGNED_BYTE,t.data);}this.useMipmap&&this.isSizePowerOfTwo()&&s.generateMipmap(s.TEXTURE_2D);},Tl.prototype.bind=function(t,e,r){var n=this.context.gl;n.bindTexture(n.TEXTURE_2D,this.texture),r!==n.LINEAR_MIPMAP_NEAREST||this.isSizePowerOfTwo()||(r=n.LINEAR),t!==this.filter&&(n.texParameteri(n.TEXTURE_2D,n.TEXTURE_MAG_FILTER,t),n.texParameteri(n.TEXTURE_2D,n.TEXTURE_MIN_FILTER,r||t),this.filter=t),e!==this.wrap&&(n.texParameteri(n.TEXTURE_2D,n.TEXTURE_WRAP_S,e),n.texParameteri(n.TEXTURE_2D,n.TEXTURE_WRAP_T,e),this.wrap=e);},Tl.prototype.isSizePowerOfTwo=function(){return this.size[0]===this.size[1]&&Math.log(this.size[0])/Math.LN2%1==0},Tl.prototype.destroy=function(){this.context.gl.deleteTexture(this.texture),this.texture=null;};var Vl=function(t){var e=this;this._callback=t,this._triggered=!1,\"undefined\"!=typeof MessageChannel&&(this._channel=new MessageChannel,this._channel.port2.onmessage=function(){e._triggered=!1,e._callback();});};Vl.prototype.trigger=function(){var t=this;this._triggered||(this._triggered=!0,this._channel?this._channel.port1.postMessage(!0):setTimeout((function(){t._triggered=!1,t._callback();}),0));},Vl.prototype.remove=function(){delete this._channel,this._callback=function(){};};var Fl=function(t,e,r){this.target=t,this.parent=e,this.mapId=r,this.callbacks={},this.tasks={},this.taskQueue=[],this.cancelCallbacks={},v([\"receive\",\"process\"],this),this.invoker=new Vl(this.process),this.target.addEventListener(\"message\",this.receive,!1),this.globalScope=I()?t:o;};function Dl(t,e,r){var n=2*Math.PI*6378137/256/Math.pow(2,r);return [t*n-2*Math.PI*6378137/2,e*n-2*Math.PI*6378137/2]}Fl.prototype.send=function(t,e,r,n,i){var a=this;void 0===i&&(i=!1);var o=Math.round(1e18*Math.random()).toString(36).substring(0,10);r&&(this.callbacks[o]=r);var s=E(this.globalScope)?void 0:[];return this.target.postMessage({id:o,type:t,hasCallback:!!r,targetMapId:n,mustQueue:i,sourceMapId:this.mapId,data:qn(e,s)},s),{cancel:function(){r&&delete a.callbacks[o],a.target.postMessage({id:o,type:\"<cancel>\",targetMapId:n,sourceMapId:a.mapId});}}},Fl.prototype.receive=function(t){var e=t.data,r=e.id;if(r&&(!e.targetMapId||this.mapId===e.targetMapId))if(\"<cancel>\"===e.type){delete this.tasks[r];var n=this.cancelCallbacks[r];delete this.cancelCallbacks[r],n&&n();}else I()||e.mustQueue?(this.tasks[r]=e,this.taskQueue.push(r),this.invoker.trigger()):this.processTask(r,e);},Fl.prototype.process=function(){if(this.taskQueue.length){var t=this.taskQueue.shift(),e=this.tasks[t];delete this.tasks[t],this.taskQueue.length&&this.invoker.trigger(),e&&this.processTask(t,e);}},Fl.prototype.processTask=function(t,e){var r=this;if(\"<response>\"===e.type){var n=this.callbacks[t];delete this.callbacks[t],n&&(e.error?n(Nn(e.error)):n(null,Nn(e.data)));}else {var i=!1,a=E(this.globalScope)?void 0:[],o=e.hasCallback?function(e,n){i=!0,delete r.cancelCallbacks[t],r.target.postMessage({id:t,type:\"<response>\",sourceMapId:r.mapId,error:e?qn(e):null,data:qn(n,a)},a);}:function(t){i=!0;},s=null,u=Nn(e.data);if(this.parent[e.type])s=this.parent[e.type](e.sourceMapId,u,o);else if(this.parent.getWorkerSource){var l=e.type.split(\".\");s=this.parent.getWorkerSource(e.sourceMapId,l[0],u.source)[l[1]](u,o);}else o(new Error(\"Could not find function \"+e.type));!i&&s&&s.cancel&&(this.cancelCallbacks[t]=s.cancel);}},Fl.prototype.remove=function(){this.invoker.remove(),this.target.removeEventListener(\"message\",this.receive,!1);};var Ll=function(t,e){t&&(e?this.setSouthWest(t).setNorthEast(e):4===t.length?this.setSouthWest([t[0],t[1]]).setNorthEast([t[2],t[3]]):this.setSouthWest(t[0]).setNorthEast(t[1]));};Ll.prototype.setNorthEast=function(t){return this._ne=t instanceof Ol?new Ol(t.lng,t.lat):Ol.convert(t),this},Ll.prototype.setSouthWest=function(t){return this._sw=t instanceof Ol?new Ol(t.lng,t.lat):Ol.convert(t),this},Ll.prototype.extend=function(t){var e,r,n=this._sw,i=this._ne;if(t instanceof Ol)e=t,r=t;else {if(!(t instanceof Ll))return Array.isArray(t)?4===t.length||t.every(Array.isArray)?this.extend(Ll.convert(t)):this.extend(Ol.convert(t)):this;if(r=t._ne,!(e=t._sw)||!r)return this}return n||i?(n.lng=Math.min(e.lng,n.lng),n.lat=Math.min(e.lat,n.lat),i.lng=Math.max(r.lng,i.lng),i.lat=Math.max(r.lat,i.lat)):(this._sw=new Ol(e.lng,e.lat),this._ne=new Ol(r.lng,r.lat)),this},Ll.prototype.getCenter=function(){return new Ol((this._sw.lng+this._ne.lng)/2,(this._sw.lat+this._ne.lat)/2)},Ll.prototype.getSouthWest=function(){return this._sw},Ll.prototype.getNorthEast=function(){return this._ne},Ll.prototype.getNorthWest=function(){return new Ol(this.getWest(),this.getNorth())},Ll.prototype.getSouthEast=function(){return new Ol(this.getEast(),this.getSouth())},Ll.prototype.getWest=function(){return this._sw.lng},Ll.prototype.getSouth=function(){return this._sw.lat},Ll.prototype.getEast=function(){return this._ne.lng},Ll.prototype.getNorth=function(){return this._ne.lat},Ll.prototype.toArray=function(){return [this._sw.toArray(),this._ne.toArray()]},Ll.prototype.toString=function(){return \"LngLatBounds(\"+this._sw.toString()+\", \"+this._ne.toString()+\")\"},Ll.prototype.isEmpty=function(){return !(this._sw&&this._ne)},Ll.prototype.contains=function(t){var e=Ol.convert(t),r=e.lng,n=e.lat,i=this._sw.lng<=r&&r<=this._ne.lng;return this._sw.lng>this._ne.lng&&(i=this._sw.lng>=r&&r>=this._ne.lng),this._sw.lat<=n&&n<=this._ne.lat&&i},Ll.convert=function(t){return !t||t instanceof Ll?t:new Ll(t)};var Ol=function(t,e){if(isNaN(t)||isNaN(e))throw new Error(\"Invalid LngLat object: (\"+t+\", \"+e+\")\");if(this.lng=+t,this.lat=+e,this.lat>90||this.lat<-90)throw new Error(\"Invalid LngLat latitude value: must be between -90 and 90\")};Ol.prototype.wrap=function(){return new Ol(c(this.lng,-180,180),this.lat)},Ol.prototype.toArray=function(){return [this.lng,this.lat]},Ol.prototype.toString=function(){return \"LngLat(\"+this.lng+\", \"+this.lat+\")\"},Ol.prototype.distanceTo=function(t){var e=Math.PI/180,r=this.lat*e,n=t.lat*e,i=Math.sin(r)*Math.sin(n)+Math.cos(r)*Math.cos(n)*Math.cos((t.lng-this.lng)*e);return 6371008.8*Math.acos(Math.min(i,1))},Ol.prototype.toBounds=function(t){void 0===t&&(t=0);var e=360*t/40075017,r=e/Math.cos(Math.PI/180*this.lat);return new Ll(new Ol(this.lng-r,this.lat-e),new Ol(this.lng+r,this.lat+e))},Ol.convert=function(t){if(t instanceof Ol)return t;if(Array.isArray(t)&&(2===t.length||3===t.length))return new Ol(Number(t[0]),Number(t[1]));if(!Array.isArray(t)&&\"object\"==typeof t&&null!==t)return new Ol(Number(\"lng\"in t?t.lng:t.lon),Number(t.lat));throw new Error(\"`LngLatLike` argument must be specified as a LngLat instance, an object {lng: <lng>, lat: <lat>}, an object {lon: <lng>, lat: <lat>}, or an array of [<lng>, <lat>]\")};var Rl=2*Math.PI*6371008.8;function Ul(t){return Rl*Math.cos(t*Math.PI/180)}function jl(t){return (180+t)/360}function ql(t){return (180-180/Math.PI*Math.log(Math.tan(Math.PI/4+t*Math.PI/360)))/360}function Nl(t,e){return t/Ul(e)}function Kl(t){return 360/Math.PI*Math.atan(Math.exp((180-360*t)*Math.PI/180))-90}var Gl=function(t,e,r){void 0===r&&(r=0),this.x=+t,this.y=+e,this.z=+r;};Gl.fromLngLat=function(t,e){void 0===e&&(e=0);var r=Ol.convert(t);return new Gl(jl(r.lng),ql(r.lat),Nl(e,r.lat))},Gl.prototype.toLngLat=function(){return new Ol(360*this.x-180,Kl(this.y))},Gl.prototype.toAltitude=function(){return this.z*Ul(Kl(this.y))},Gl.prototype.meterInMercatorCoordinateUnits=function(){return 1/Rl*(t=Kl(this.y),1/Math.cos(t*Math.PI/180));var t;};var Zl=function(t,e,r){this.z=t,this.x=e,this.y=r,this.key=Hl(0,t,t,e,r);};Zl.prototype.equals=function(t){return this.z===t.z&&this.x===t.x&&this.y===t.y},Zl.prototype.url=function(t,e){var r,n,i,a,o,s=(n=this.y,i=this.z,a=Dl(256*(r=this.x),256*(n=Math.pow(2,i)-n-1),i),o=Dl(256*(r+1),256*(n+1),i),a[0]+\",\"+a[1]+\",\"+o[0]+\",\"+o[1]),u=function(t,e,r){for(var n,i=\"\",a=t;a>0;a--)i+=(e&(n=1<<a-1)?1:0)+(r&n?2:0);return i}(this.z,this.x,this.y);return t[(this.x+this.y)%t.length].replace(\"{prefix}\",(this.x%16).toString(16)+(this.y%16).toString(16)).replace(\"{z}\",String(this.z)).replace(\"{x}\",String(this.x)).replace(\"{y}\",String(\"tms\"===e?Math.pow(2,this.z)-this.y-1:this.y)).replace(\"{quadkey}\",u).replace(\"{bbox-epsg-3857}\",s)},Zl.prototype.getTilePoint=function(t){var e=Math.pow(2,this.z);return new i(8192*(t.x*e-this.x),8192*(t.y*e-this.y))},Zl.prototype.toString=function(){return this.z+\"/\"+this.x+\"/\"+this.y};var Xl=function(t,e){this.wrap=t,this.canonical=e,this.key=Hl(t,e.z,e.z,e.x,e.y);},Jl=function(t,e,r,n,i){this.overscaledZ=t,this.wrap=e,this.canonical=new Zl(r,+n,+i),this.key=Hl(e,t,r,n,i);};function Hl(t,e,r,n,i){(t*=2)<0&&(t=-1*t-1);var a=1<<r;return (a*a*t+a*i+n).toString(36)+r.toString(36)+e.toString(36)}Jl.prototype.equals=function(t){return this.overscaledZ===t.overscaledZ&&this.wrap===t.wrap&&this.canonical.equals(t.canonical)},Jl.prototype.scaledTo=function(t){var e=this.canonical.z-t;return t>this.canonical.z?new Jl(t,this.wrap,this.canonical.z,this.canonical.x,this.canonical.y):new Jl(t,this.wrap,t,this.canonical.x>>e,this.canonical.y>>e)},Jl.prototype.calculateScaledKey=function(t,e){var r=this.canonical.z-t;return t>this.canonical.z?Hl(this.wrap*+e,t,this.canonical.z,this.canonical.x,this.canonical.y):Hl(this.wrap*+e,t,t,this.canonical.x>>r,this.canonical.y>>r)},Jl.prototype.isChildOf=function(t){if(t.wrap!==this.wrap)return !1;var e=this.canonical.z-t.canonical.z;return 0===t.overscaledZ||t.overscaledZ<this.overscaledZ&&t.canonical.x===this.canonical.x>>e&&t.canonical.y===this.canonical.y>>e},Jl.prototype.children=function(t){if(this.overscaledZ>=t)return [new Jl(this.overscaledZ+1,this.wrap,this.canonical.z,this.canonical.x,this.canonical.y)];var e=this.canonical.z+1,r=2*this.canonical.x,n=2*this.canonical.y;return [new Jl(e,this.wrap,e,r,n),new Jl(e,this.wrap,e,r+1,n),new Jl(e,this.wrap,e,r,n+1),new Jl(e,this.wrap,e,r+1,n+1)]},Jl.prototype.isLessThan=function(t){return this.wrap<t.wrap||!(this.wrap>t.wrap)&&(this.overscaledZ<t.overscaledZ||!(this.overscaledZ>t.overscaledZ)&&(this.canonical.x<t.canonical.x||!(this.canonical.x>t.canonical.x)&&this.canonical.y<t.canonical.y))},Jl.prototype.wrapped=function(){return new Jl(this.overscaledZ,0,this.canonical.z,this.canonical.x,this.canonical.y)},Jl.prototype.unwrapTo=function(t){return new Jl(this.overscaledZ,t,this.canonical.z,this.canonical.x,this.canonical.y)},Jl.prototype.overscaleFactor=function(){return Math.pow(2,this.overscaledZ-this.canonical.z)},Jl.prototype.toUnwrapped=function(){return new Xl(this.wrap,this.canonical)},Jl.prototype.toString=function(){return this.overscaledZ+\"/\"+this.canonical.x+\"/\"+this.canonical.y},Jl.prototype.getTilePoint=function(t){return this.canonical.getTilePoint(new Gl(t.x-this.wrap,t.y))},On(\"CanonicalTileID\",Zl),On(\"OverscaledTileID\",Jl,{omit:[\"posMatrix\"]});var Yl=function(t,e,r){if(this.uid=t,e.height!==e.width)throw new RangeError(\"DEM tiles must be square\");if(r&&\"mapbox\"!==r&&\"terrarium\"!==r)return A('\"'+r+'\" is not a valid encoding type. Valid types include \"mapbox\" and \"terrarium\".');this.stride=e.height;var n=this.dim=e.height-2;this.data=new Uint32Array(e.data.buffer),this.encoding=r||\"mapbox\";for(var i=0;i<n;i++)this.data[this._idx(-1,i)]=this.data[this._idx(0,i)],this.data[this._idx(n,i)]=this.data[this._idx(n-1,i)],this.data[this._idx(i,-1)]=this.data[this._idx(i,0)],this.data[this._idx(i,n)]=this.data[this._idx(i,n-1)];this.data[this._idx(-1,-1)]=this.data[this._idx(0,0)],this.data[this._idx(n,-1)]=this.data[this._idx(n-1,0)],this.data[this._idx(-1,n)]=this.data[this._idx(0,n-1)],this.data[this._idx(n,n)]=this.data[this._idx(n-1,n-1)];};Yl.prototype.get=function(t,e){var r=new Uint8Array(this.data.buffer),n=4*this._idx(t,e);return (\"terrarium\"===this.encoding?this._unpackTerrarium:this._unpackMapbox)(r[n],r[n+1],r[n+2])},Yl.prototype.getUnpackVector=function(){return \"terrarium\"===this.encoding?[256,1,1/256,32768]:[6553.6,25.6,.1,1e4]},Yl.prototype._idx=function(t,e){if(t<-1||t>=this.dim+1||e<-1||e>=this.dim+1)throw new RangeError(\"out of range source coordinates for DEM data\");return (e+1)*this.stride+(t+1)},Yl.prototype._unpackMapbox=function(t,e,r){return (256*t*256+256*e+r)/10-1e4},Yl.prototype._unpackTerrarium=function(t,e,r){return 256*t+e+r/256-32768},Yl.prototype.getPixels=function(){return new xo({width:this.stride,height:this.stride},new Uint8Array(this.data.buffer))},Yl.prototype.backfillBorder=function(t,e,r){if(this.dim!==t.dim)throw new Error(\"dem dimension mismatch\");var n=e*this.dim,i=e*this.dim+this.dim,a=r*this.dim,o=r*this.dim+this.dim;switch(e){case-1:n=i-1;break;case 1:i=n+1;}switch(r){case-1:a=o-1;break;case 1:o=a+1;}for(var s=-e*this.dim,u=-r*this.dim,l=a;l<o;l++)for(var p=n;p<i;p++)this.data[this._idx(p,l)]=t.data[this._idx(p+s,l+u)];},On(\"DEMData\",Yl);var $l=function(t){this._stringToNumber={},this._numberToString=[];for(var e=0;e<t.length;e++){var r=t[e];this._stringToNumber[r]=e,this._numberToString[e]=r;}};$l.prototype.encode=function(t){return this._stringToNumber[t]},$l.prototype.decode=function(t){return this._numberToString[t]};var Wl=function(t,e,r,n,i){this.type=\"Feature\",this._vectorTileFeature=t,t._z=e,t._x=r,t._y=n,this.properties=t.properties,this.id=i;},Ql={geometry:{configurable:!0}};Ql.geometry.get=function(){return void 0===this._geometry&&(this._geometry=this._vectorTileFeature.toGeoJSON(this._vectorTileFeature._x,this._vectorTileFeature._y,this._vectorTileFeature._z).geometry),this._geometry},Ql.geometry.set=function(t){this._geometry=t;},Wl.prototype.toJSON=function(){var t={geometry:this.geometry};for(var e in this)\"_geometry\"!==e&&\"_vectorTileFeature\"!==e&&(t[e]=this[e]);return t},Object.defineProperties(Wl.prototype,Ql);var tp=function(){this.state={},this.stateChanges={},this.deletedStates={};};tp.prototype.updateState=function(t,e,r){var n=String(e);if(this.stateChanges[t]=this.stateChanges[t]||{},this.stateChanges[t][n]=this.stateChanges[t][n]||{},h(this.stateChanges[t][n],r),null===this.deletedStates[t])for(var i in this.deletedStates[t]={},this.state[t])i!==n&&(this.deletedStates[t][i]=null);else if(this.deletedStates[t]&&null===this.deletedStates[t][n])for(var a in this.deletedStates[t][n]={},this.state[t][n])r[a]||(this.deletedStates[t][n][a]=null);else for(var o in r)this.deletedStates[t]&&this.deletedStates[t][n]&&null===this.deletedStates[t][n][o]&&delete this.deletedStates[t][n][o];},tp.prototype.removeFeatureState=function(t,e,r){if(null!==this.deletedStates[t]){var n=String(e);if(this.deletedStates[t]=this.deletedStates[t]||{},r&&void 0!==e)null!==this.deletedStates[t][n]&&(this.deletedStates[t][n]=this.deletedStates[t][n]||{},this.deletedStates[t][n][r]=null);else if(void 0!==e)if(this.stateChanges[t]&&this.stateChanges[t][n])for(r in this.deletedStates[t][n]={},this.stateChanges[t][n])this.deletedStates[t][n][r]=null;else this.deletedStates[t][n]=null;else this.deletedStates[t]=null;}},tp.prototype.getState=function(t,e){var r=String(e),n=h({},(this.state[t]||{})[r],(this.stateChanges[t]||{})[r]);if(null===this.deletedStates[t])return {};if(this.deletedStates[t]){var i=this.deletedStates[t][e];if(null===i)return {};for(var a in i)delete n[a];}return n},tp.prototype.initializeTileState=function(t,e){t.setFeatureState(this.state,e);},tp.prototype.coalesceChanges=function(t,e){var r={};for(var n in this.stateChanges){this.state[n]=this.state[n]||{};var i={};for(var a in this.stateChanges[n])this.state[n][a]||(this.state[n][a]={}),h(this.state[n][a],this.stateChanges[n][a]),i[a]=this.state[n][a];r[n]=i;}for(var o in this.deletedStates){this.state[o]=this.state[o]||{};var s={};if(null===this.deletedStates[o])for(var u in this.state[o])s[u]={},this.state[o][u]={};else for(var l in this.deletedStates[o]){if(null===this.deletedStates[o][l])this.state[o][l]={};else for(var p=0,c=Object.keys(this.deletedStates[o][l]);p<c.length;p+=1)delete this.state[o][l][c[p]];s[l]=this.state[o][l];}r[o]=r[o]||{},h(r[o],s);}if(this.stateChanges={},this.deletedStates={},0!==Object.keys(r).length)for(var f in t)t[f].setFeatureState(r,e);};var ep=function(t,e){this.tileID=t,this.x=t.canonical.x,this.y=t.canonical.y,this.z=t.canonical.z,this.grid=new Tn(8192,16,0),this.grid3D=new Tn(8192,16,0),this.featureIndexArray=new aa,this.promoteId=e;};function rp(t,e,r,n,i){return x(t,(function(t,a){var o=e instanceof di?e.get(a):null;return o&&o.evaluate?o.evaluate(r,n,i):o}))}function np(t){for(var e=1/0,r=1/0,n=-1/0,i=-1/0,a=0,o=t;a<o.length;a+=1){var s=o[a];e=Math.min(e,s.x),r=Math.min(r,s.y),n=Math.max(n,s.x),i=Math.max(i,s.y);}return {minX:e,minY:r,maxX:n,maxY:i}}function ip(t,e){return e-t}ep.prototype.insert=function(t,e,r,n,i,a){var o=this.featureIndexArray.length;this.featureIndexArray.emplaceBack(r,n,i);for(var s=a?this.grid3D:this.grid,u=0;u<e.length;u++){for(var l=e[u],p=[1/0,1/0,-1/0,-1/0],c=0;c<l.length;c++){var h=l[c];p[0]=Math.min(p[0],h.x),p[1]=Math.min(p[1],h.y),p[2]=Math.max(p[2],h.x),p[3]=Math.max(p[3],h.y);}p[0]<8192&&p[1]<8192&&p[2]>=0&&p[3]>=0&&s.insert(o,p[0],p[1],p[2],p[3]);}},ep.prototype.loadVTLayers=function(){return this.vtLayers||(this.vtLayers=new bs.VectorTile(new Ys(this.rawTileData)).layers,this.sourceLayerCoder=new $l(this.vtLayers?Object.keys(this.vtLayers).sort():[\"_geojsonTileLayer\"])),this.vtLayers},ep.prototype.query=function(t,e,r,n){var a=this;this.loadVTLayers();for(var o=t.params||{},s=8192/t.tileSize/t.scale,u=on(o.filter),l=t.queryGeometry,p=t.queryPadding*s,c=np(l),h=this.grid.query(c.minX-p,c.minY-p,c.maxX+p,c.maxY+p),f=np(t.cameraQueryGeometry),y=this.grid3D.query(f.minX-p,f.minY-p,f.maxX+p,f.maxY+p,(function(e,r,n,a){return function(t,e,r,n,a){for(var o=0,s=t;o<s.length;o+=1){var u=s[o];if(e<=u.x&&r<=u.y&&n>=u.x&&a>=u.y)return !0}var l=[new i(e,r),new i(e,a),new i(n,a),new i(n,r)];if(t.length>2)for(var p=0,c=l;p<c.length;p+=1)if(Wa(t,c[p]))return !0;for(var h=0;h<t.length-1;h++)if(Qa(t[h],t[h+1],l))return !0;return !1}(t.cameraQueryGeometry,e-p,r-p,n+p,a+p)})),d=0,m=y;d<m.length;d+=1)h.push(m[d]);h.sort(ip);for(var v,g={},x=function(i){var p=h[i];if(p!==v){v=p;var c=a.featureIndexArray.get(p),f=null;a.loadMatchingFeature(g,c.bucketIndex,c.sourceLayerIndex,c.featureIndex,u,o.layers,o.availableImages,e,r,n,(function(e,r,n){return f||(f=Ra(e)),r.queryIntersectsFeature(l,e,n,f,a.z,t.transform,s,t.pixelPosMatrix)}));}},b=0;b<h.length;b++)x(b);return g},ep.prototype.loadMatchingFeature=function(t,e,r,n,i,a,o,s,u,l,p){var c=this.bucketLayerIDs[e];if(!a||function(t,e){for(var r=0;r<t.length;r++)if(e.indexOf(t[r])>=0)return !0;return !1}(a,c)){var f=this.sourceLayerCoder.decode(r),y=this.vtLayers[f].feature(n);if(i.needGeometry){var d=Ua(y,!0);if(!i.filter(new si(this.tileID.overscaledZ),d,this.tileID.canonical))return}else if(!i.filter(new si(this.tileID.overscaledZ),y))return;for(var m=this.getId(y,f),v=0;v<c.length;v++){var g=c[v];if(!(a&&a.indexOf(g)<0)){var x=s[g];if(x){var b={};void 0!==m&&l&&(b=l.getState(x.sourceLayer||\"_geojsonTileLayer\",m));var w=h({},u[g]);w.paint=rp(w.paint,x.paint,y,b,o),w.layout=rp(w.layout,x.layout,y,b,o);var _=!p||p(y,x,b);if(_){var A=new Wl(y,this.z,this.x,this.y,m);A.layer=w;var S=t[g];void 0===S&&(S=t[g]=[]),S.push({featureIndex:n,feature:A,intersectionZ:_});}}}}}},ep.prototype.lookupSymbolFeatures=function(t,e,r,n,i,a,o,s){var u={};this.loadVTLayers();for(var l=on(i),p=0,c=t;p<c.length;p+=1)this.loadMatchingFeature(u,r,n,c[p],l,a,o,s,e);return u},ep.prototype.hasLayer=function(t){for(var e=0,r=this.bucketLayerIDs;e<r.length;e+=1)for(var n=0,i=r[e];n<i.length;n+=1)if(t===i[n])return !0;return !1},ep.prototype.getId=function(t,e){var r=t.id;return this.promoteId&&\"boolean\"==typeof(r=t.properties[\"string\"==typeof this.promoteId?this.promoteId:this.promoteId[e]])&&(r=Number(r)),r},On(\"FeatureIndex\",ep,{omit:[\"rawTileData\",\"sourceLayerCoder\"]});var ap=function(t,e){this.tileID=t,this.uid=y(),this.uses=0,this.tileSize=e,this.buckets={},this.expirationTime=null,this.queryPadding=0,this.hasSymbolBuckets=!1,this.hasRTLText=!1,this.dependencies={},this.expiredRequestCount=0,this.state=\"loading\";};ap.prototype.registerFadeDuration=function(t){var e=t+this.timeAdded;e<O.now()||this.fadeEndTime&&e<this.fadeEndTime||(this.fadeEndTime=e);},ap.prototype.wasRequested=function(){return \"errored\"===this.state||\"loaded\"===this.state||\"reloading\"===this.state},ap.prototype.loadVectorData=function(t,e,r){if(this.hasData()&&this.unloadVectorData(),this.state=\"loaded\",t){for(var n in t.featureIndex&&(this.latestFeatureIndex=t.featureIndex,t.rawTileData?(this.latestRawTileData=t.rawTileData,this.latestFeatureIndex.rawTileData=t.rawTileData):this.latestRawTileData&&(this.latestFeatureIndex.rawTileData=this.latestRawTileData)),this.collisionBoxArray=t.collisionBoxArray,this.buckets=function(t,e){var r={};if(!e)return r;for(var n=function(){var t=a[i],n=t.layerIds.map((function(t){return e.getLayer(t)})).filter(Boolean);if(0!==n.length){t.layers=n,t.stateDependentLayerIds&&(t.stateDependentLayers=t.stateDependentLayerIds.map((function(t){return n.filter((function(e){return e.id===t}))[0]})));for(var o=0,s=n;o<s.length;o+=1)r[s[o].id]=t;}},i=0,a=t;i<a.length;i+=1)n();return r}(t.buckets,e.style),this.hasSymbolBuckets=!1,this.buckets){var i=this.buckets[n];if(i instanceof vl){if(this.hasSymbolBuckets=!0,!r)break;i.justReloaded=!0;}}if(this.hasRTLText=!1,this.hasSymbolBuckets)for(var a in this.buckets){var o=this.buckets[a];if(o instanceof vl&&o.hasRTLText){this.hasRTLText=!0,oi.isLoading()||oi.isLoaded()||\"deferred\"!==ii()||ai();break}}for(var s in this.queryPadding=0,this.buckets){var u=this.buckets[s];this.queryPadding=Math.max(this.queryPadding,e.style.getLayer(s).queryRadius(u));}t.imageAtlas&&(this.imageAtlas=t.imageAtlas),t.glyphAtlasImage&&(this.glyphAtlasImage=t.glyphAtlasImage);}else this.collisionBoxArray=new $i;},ap.prototype.unloadVectorData=function(){for(var t in this.buckets)this.buckets[t].destroy();this.buckets={},this.imageAtlasTexture&&this.imageAtlasTexture.destroy(),this.imageAtlas&&(this.imageAtlas=null),this.glyphAtlasTexture&&this.glyphAtlasTexture.destroy(),this.latestFeatureIndex=null,this.state=\"unloaded\";},ap.prototype.getBucket=function(t){return this.buckets[t.id]},ap.prototype.upload=function(t){for(var e in this.buckets){var r=this.buckets[e];r.uploadPending()&&r.upload(t);}var n=t.gl;this.imageAtlas&&!this.imageAtlas.uploaded&&(this.imageAtlasTexture=new Tl(t,this.imageAtlas.image,n.RGBA),this.imageAtlas.uploaded=!0),this.glyphAtlasImage&&(this.glyphAtlasTexture=new Tl(t,this.glyphAtlasImage,n.ALPHA),this.glyphAtlasImage=null);},ap.prototype.prepare=function(t){this.imageAtlas&&this.imageAtlas.patchUpdatedImages(t,this.imageAtlasTexture);},ap.prototype.queryRenderedFeatures=function(t,e,r,n,i,a,o,s,u,l){return this.latestFeatureIndex&&this.latestFeatureIndex.rawTileData?this.latestFeatureIndex.query({queryGeometry:n,cameraQueryGeometry:i,scale:a,tileSize:this.tileSize,pixelPosMatrix:l,transform:s,params:o,queryPadding:this.queryPadding*u},t,e,r):{}},ap.prototype.querySourceFeatures=function(t,e){var r=this.latestFeatureIndex;if(r&&r.rawTileData){var n=r.loadVTLayers(),i=e?e.sourceLayer:\"\",a=n._geojsonTileLayer||n[i];if(a)for(var o=on(e&&e.filter),s=this.tileID.canonical,u=s.z,l=s.x,p=s.y,c={z:u,x:l,y:p},h=0;h<a.length;h++){var f=a.feature(h);if(o.needGeometry){var y=Ua(f,!0);if(!o.filter(new si(this.tileID.overscaledZ),y,this.tileID.canonical))continue}else if(!o.filter(new si(this.tileID.overscaledZ),f))continue;var d=r.getId(f,i),m=new Wl(f,u,l,p,d);m.tile=c,t.push(m);}}},ap.prototype.hasData=function(){return \"loaded\"===this.state||\"reloading\"===this.state||\"expired\"===this.state},ap.prototype.patternsLoaded=function(){return this.imageAtlas&&!!Object.keys(this.imageAtlas.patternPositions).length},ap.prototype.setExpiryData=function(t){var e=this.expirationTime;if(t.cacheControl){var r=z(t.cacheControl);r[\"max-age\"]&&(this.expirationTime=Date.now()+1e3*r[\"max-age\"]);}else t.expires&&(this.expirationTime=new Date(t.expires).getTime());if(this.expirationTime){var n=Date.now(),i=!1;if(this.expirationTime>n)i=!1;else if(e)if(this.expirationTime<e)i=!0;else {var a=this.expirationTime-e;a?this.expirationTime=n+Math.max(a,3e4):i=!0;}else i=!0;i?(this.expiredRequestCount++,this.state=\"expired\"):this.expiredRequestCount=0;}},ap.prototype.getExpiryTimeout=function(){if(this.expirationTime)return this.expiredRequestCount?1e3*(1<<Math.min(this.expiredRequestCount-1,31)):Math.min(this.expirationTime-(new Date).getTime(),Math.pow(2,31)-1)},ap.prototype.setFeatureState=function(t,e){if(this.latestFeatureIndex&&this.latestFeatureIndex.rawTileData&&0!==Object.keys(t).length){var r=this.latestFeatureIndex.loadVTLayers();for(var n in this.buckets)if(e.style.hasLayer(n)){var i=this.buckets[n],a=i.layers[0].sourceLayer||\"_geojsonTileLayer\",o=r[a],s=t[a];if(o&&s&&0!==Object.keys(s).length){i.update(s,o,this.imageAtlas&&this.imageAtlas.patternPositions||{});var u=e&&e.style&&e.style.getLayer(n);u&&(this.queryPadding=Math.max(this.queryPadding,u.queryRadius(i)));}}}},ap.prototype.holdingForFade=function(){return void 0!==this.symbolFadeHoldUntil},ap.prototype.symbolFadeFinished=function(){return !this.symbolFadeHoldUntil||this.symbolFadeHoldUntil<O.now()},ap.prototype.clearFadeHold=function(){this.symbolFadeHoldUntil=void 0;},ap.prototype.setHoldDuration=function(t){this.symbolFadeHoldUntil=O.now()+t;},ap.prototype.setDependencies=function(t,e){for(var r={},n=0,i=e;n<i.length;n+=1)r[i[n]]=!0;this.dependencies[t]=r;},ap.prototype.hasDependency=function(t,e){for(var r=0,n=t;r<n.length;r+=1){var i=this.dependencies[n[r]];if(i)for(var a=0,o=e;a<o.length;a+=1)if(i[o[a]])return !0}return !1};var op=o.performance,sp=function(t){this._marks={start:[t.url,\"start\"].join(\"#\"),end:[t.url,\"end\"].join(\"#\"),measure:t.url.toString()},op.mark(this._marks.start);};sp.prototype.finish=function(){op.mark(this._marks.end);var t=op.getEntriesByName(this._marks.measure);return 0===t.length&&(op.measure(this._marks.measure,this._marks.start,this._marks.end),t=op.getEntriesByName(this._marks.measure),op.clearMarks(this._marks.start),op.clearMarks(this._marks.end),op.clearMeasures(this._marks.measure)),t},t.Actor=Fl,t.AlphaImage=go,t.CanonicalTileID=Zl,t.CollisionBoxArray=$i,t.Color=te,t.DEMData=Yl,t.DataConstantProperty=mi,t.DictionaryCoder=$l,t.EXTENT=8192,t.ErrorEvent=zt,t.EvaluationParameters=si,t.Event=It,t.Evented=Ct,t.FeatureIndex=ep,t.FillBucket=ss,t.FillExtrusionBucket=Ss,t.ImageAtlas=bu,t.ImagePosition=gu,t.LineBucket=Fs,t.LngLat=Ol,t.LngLatBounds=Ll,t.MercatorCoordinate=Gl,t.ONE_EM=24,t.OverscaledTileID=Jl,t.Point=i,t.Point$1=i,t.Properties=wi,t.Protobuf=Ys,t.RGBAImage=xo,t.RequestManager=G,t.RequestPerformance=sp,t.ResourceType=yt,t.SegmentVector=sa,t.SourceFeatureState=tp,t.StructArrayLayout1ui2=Ji,t.StructArrayLayout2f1f2i16=Ri,t.StructArrayLayout2i4=Ci,t.StructArrayLayout3ui6=ji,t.StructArrayLayout4i8=Ei,t.SymbolBucket=vl,t.Texture=Tl,t.Tile=ap,t.Transitionable=pi,t.Uniform1f=ba,t.Uniform1i=xa,t.Uniform2f=wa,t.Uniform3f=_a,t.Uniform4f=Aa,t.UniformColor=Sa,t.UniformMatrix4f=Ia,t.UnwrappedTileID=Xl,t.ValidationError=Pt,t.WritingMode=wu,t.ZoomHistory=Kn,t.add=function(t,e,r){return t[0]=e[0]+r[0],t[1]=e[1]+r[1],t[2]=e[2]+r[2],t},t.addDynamicAttributes=fl,t.asyncAll=function(t,e,r){if(!t.length)return r(null,[]);var n=t.length,i=new Array(t.length),a=null;t.forEach((function(t,o){e(t,(function(t,e){t&&(a=t),i[o]=e,0==--n&&r(a,i);}));}));},t.bezier=u,t.bindAll=v,t.browser=O,t.cacheEntryPossiblyAdded=function(t){++ht>ut&&(t.getActor().send(\"enforceCacheSizeLimit\",st),ht=0);},t.clamp=p,t.clearTileCache=function(t){var e=o.caches.delete(\"mapbox-tiles\");t&&e.catch(t).then((function(){return t()}));},t.clipLine=Zu,t.clone=function(t){var e=new ao(16);return e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],e[4]=t[4],e[5]=t[5],e[6]=t[6],e[7]=t[7],e[8]=t[8],e[9]=t[9],e[10]=t[10],e[11]=t[11],e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15],e},t.clone$1=w,t.clone$2=function(t){var e=new ao(3);return e[0]=t[0],e[1]=t[1],e[2]=t[2],e},t.collisionCircleLayout=Gs,t.config=R,t.create=function(){var t=new ao(16);return ao!=Float32Array&&(t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[11]=0,t[12]=0,t[13]=0,t[14]=0),t[0]=1,t[5]=1,t[10]=1,t[15]=1,t},t.create$1=function(){var t=new ao(9);return ao!=Float32Array&&(t[1]=0,t[2]=0,t[3]=0,t[5]=0,t[6]=0,t[7]=0),t[0]=1,t[4]=1,t[8]=1,t},t.create$2=function(){var t=new ao(4);return ao!=Float32Array&&(t[1]=0,t[2]=0),t[0]=1,t[3]=1,t},t.createCommonjsModule=e,t.createExpression=Zr,t.createLayout=Ii,t.createStyleLayer=function(t){return \"custom\"===t.type?new Il(t):new zl[t.type](t)},t.cross=function(t,e,r){var n=e[0],i=e[1],a=e[2],o=r[0],s=r[1],u=r[2];return t[0]=i*u-a*s,t[1]=a*o-n*u,t[2]=n*s-i*o,t},t.deepEqual=function t(e,r){if(Array.isArray(e)){if(!Array.isArray(r)||e.length!==r.length)return !1;for(var n=0;n<e.length;n++)if(!t(e[n],r[n]))return !1;return !0}if(\"object\"==typeof e&&null!==e&&null!==r){if(\"object\"!=typeof r)return !1;if(Object.keys(e).length!==Object.keys(r).length)return !1;for(var i in e)if(!t(e[i],r[i]))return !1;return !0}return e===r},t.dot=function(t,e){return t[0]*e[0]+t[1]*e[1]+t[2]*e[2]},t.dot$1=function(t,e){return t[0]*e[0]+t[1]*e[1]+t[2]*e[2]+t[3]*e[3]},t.ease=l,t.emitValidationErrors=Bn,t.endsWith=g,t.enforceCacheSizeLimit=function(t){lt(),tt&&tt.then((function(e){e.keys().then((function(r){for(var n=0;n<r.length-t;n++)e.delete(r[n]);}));}));},t.evaluateSizeForFeature=Lu,t.evaluateSizeForZoom=Ou,t.evaluateVariableOffset=al,t.evented=ni,t.extend=h,t.featureFilter=on,t.filterObject=b,t.fromRotation=function(t,e){var r=Math.sin(e),n=Math.cos(e);return t[0]=n,t[1]=r,t[2]=0,t[3]=-r,t[4]=n,t[5]=0,t[6]=0,t[7]=0,t[8]=1,t},t.getAnchorAlignment=Bu,t.getAnchorJustification=ol,t.getArrayBuffer=bt,t.getImage=At,t.getJSON=function(t,e){return xt(h(t,{type:\"json\"}),e)},t.getRTLTextPluginStatus=ii,t.getReferrer=mt,t.getVideo=function(t,e){var r,n,i=o.document.createElement(\"video\");i.muted=!0,i.onloadstart=function(){e(null,i);};for(var a=0;a<t.length;a++){var s=o.document.createElement(\"source\");r=t[a],n=void 0,(n=o.document.createElement(\"a\")).href=r,(n.protocol!==o.document.location.protocol||n.host!==o.document.location.host)&&(i.crossOrigin=\"Anonymous\"),s.src=t[a],i.appendChild(s);}return {cancel:function(){}}},t.identity=oo,t.invert=function(t,e){var r=e[0],n=e[1],i=e[2],a=e[3],o=e[4],s=e[5],u=e[6],l=e[7],p=e[8],c=e[9],h=e[10],f=e[11],y=e[12],d=e[13],m=e[14],v=e[15],g=r*s-n*o,x=r*u-i*o,b=r*l-a*o,w=n*u-i*s,_=n*l-a*s,A=i*l-a*u,S=p*d-c*y,k=p*m-h*y,I=p*v-f*y,z=c*m-h*d,C=c*v-f*d,E=h*v-f*m,P=g*E-x*C+b*z+w*I-_*k+A*S;return P?(t[0]=(s*E-u*C+l*z)*(P=1/P),t[1]=(i*C-n*E-a*z)*P,t[2]=(d*A-m*_+v*w)*P,t[3]=(h*_-c*A-f*w)*P,t[4]=(u*I-o*E-l*k)*P,t[5]=(r*E-i*I+a*k)*P,t[6]=(m*b-y*A-v*x)*P,t[7]=(p*A-h*b+f*x)*P,t[8]=(o*C-s*I+l*S)*P,t[9]=(n*I-r*C-a*S)*P,t[10]=(y*_-d*b+v*g)*P,t[11]=(c*b-p*_-f*g)*P,t[12]=(s*k-o*z-u*S)*P,t[13]=(r*z-n*k+i*S)*P,t[14]=(d*x-y*w-m*g)*P,t[15]=(p*w-c*x+h*g)*P,t):null},t.isChar=Gn,t.isMapboxURL=Z,t.keysDifference=function(t,e){var r=[];for(var n in t)n in e||r.push(n);return r},t.makeRequest=xt,t.mapObject=x,t.mercatorXfromLng=jl,t.mercatorYfromLat=ql,t.mercatorZfromAltitude=Nl,t.mul=lo,t.multiply=so,t.mvt=bs,t.nextPowerOfTwo=function(t){return t<=1?1:Math.pow(2,Math.ceil(Math.log(t)/Math.LN2))},t.normalize=function(t,e){var r=e[0],n=e[1],i=e[2],a=r*r+n*n+i*i;return a>0&&(a=1/Math.sqrt(a)),t[0]=e[0]*a,t[1]=e[1]*a,t[2]=e[2]*a,t},t.number=Ke,t.offscreenCanvasSupported=ft,t.ortho=function(t,e,r,n,i,a,o){var s=1/(e-r),u=1/(n-i),l=1/(a-o);return t[0]=-2*s,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=-2*u,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=2*l,t[11]=0,t[12]=(e+r)*s,t[13]=(i+n)*u,t[14]=(o+a)*l,t[15]=1,t},t.parseGlyphPBF=function(t){return new Ys(t).readFields(yu,[])},t.pbf=Ys,t.performSymbolLayout=function(t,e,r,n,i,a,o){t.createArrays(),t.tilePixelRatio=8192/(512*t.overscaling),t.compareText={},t.iconsNeedLinear=!1;var s=t.layers[0].layout,u=t.layers[0]._unevaluatedLayout._values,l={};if(\"composite\"===t.textSizeData.kind){var p=t.textSizeData,c=p.maxZoom;l.compositeTextSizes=[u[\"text-size\"].possiblyEvaluate(new si(p.minZoom),o),u[\"text-size\"].possiblyEvaluate(new si(c),o)];}if(\"composite\"===t.iconSizeData.kind){var h=t.iconSizeData,f=h.maxZoom;l.compositeIconSizes=[u[\"icon-size\"].possiblyEvaluate(new si(h.minZoom),o),u[\"icon-size\"].possiblyEvaluate(new si(f),o)];}l.layoutTextSize=u[\"text-size\"].possiblyEvaluate(new si(t.zoom+1),o),l.layoutIconSize=u[\"icon-size\"].possiblyEvaluate(new si(t.zoom+1),o),l.textMaxSize=u[\"text-size\"].possiblyEvaluate(new si(18));for(var y=24*s.get(\"text-line-height\"),d=\"map\"===s.get(\"text-rotation-alignment\")&&\"point\"!==s.get(\"symbol-placement\"),m=s.get(\"text-keep-upright\"),v=s.get(\"text-size\"),g=function(){var a=b[x],u=s.get(\"text-font\").evaluate(a,{},o).join(\",\"),p=v.evaluate(a,{},o),c=l.layoutTextSize.evaluate(a,{},o),h=l.layoutIconSize.evaluate(a,{},o),f={horizontal:{},vertical:void 0},g=a.text,w=[0,0];if(g){var _=g.toString(),S=24*s.get(\"text-letter-spacing\").evaluate(a,{},o),k=function(t){for(var e=0,r=t;e<r.length;e+=1)if(n=r[e].charCodeAt(0),Gn.Arabic(n)||Gn[\"Arabic Supplement\"](n)||Gn[\"Arabic Extended-A\"](n)||Gn[\"Arabic Presentation Forms-A\"](n)||Gn[\"Arabic Presentation Forms-B\"](n))return !1;var n;return !0}(_)?S:0,I=s.get(\"text-anchor\").evaluate(a,{},o),z=s.get(\"text-variable-anchor\");if(!z){var C=s.get(\"text-radial-offset\").evaluate(a,{},o);w=C?al(I,[24*C,il]):s.get(\"text-offset\").evaluate(a,{},o).map((function(t){return 24*t}));}var E=d?\"center\":s.get(\"text-justify\").evaluate(a,{},o),P=s.get(\"symbol-placement\"),M=\"point\"===P?24*s.get(\"text-max-width\").evaluate(a,{},o):0,B=function(){t.allowVerticalPlacement&&Zn(_)&&(f.vertical=Su(g,e,r,i,u,M,y,I,\"left\",k,w,wu.vertical,!0,P,c,p));};if(!d&&z){for(var T=\"auto\"===E?z.map((function(t){return ol(t)})):[E],V=!1,F=0;F<T.length;F++){var D=T[F];if(!f.horizontal[D])if(V)f.horizontal[D]=f.horizontal[0];else {var L=Su(g,e,r,i,u,M,y,\"center\",D,k,w,wu.horizontal,!1,P,c,p);L&&(f.horizontal[D]=L,V=1===L.positionedLines.length);}}B();}else {\"auto\"===E&&(E=ol(I));var O=Su(g,e,r,i,u,M,y,I,E,k,w,wu.horizontal,!1,P,c,p);O&&(f.horizontal[E]=O),B(),Zn(_)&&d&&m&&(f.vertical=Su(g,e,r,i,u,M,y,I,E,k,w,wu.vertical,!1,P,c,p));}}var R=void 0,U=!1;if(a.icon&&a.icon.name){var j=n[a.icon.name];j&&(R=function(t,e,r){var n=Bu(r),i=e[0]-t.displaySize[0]*n.horizontalAlign,a=e[1]-t.displaySize[1]*n.verticalAlign;return {image:t,top:a,bottom:a+t.displaySize[1],left:i,right:i+t.displaySize[0]}}(i[a.icon.name],s.get(\"icon-offset\").evaluate(a,{},o),s.get(\"icon-anchor\").evaluate(a,{},o)),U=j.sdf,void 0===t.sdfIcons?t.sdfIcons=j.sdf:t.sdfIcons!==j.sdf&&A(\"Style sheet warning: Cannot mix SDF and non-SDF icons in one buffer\"),(j.pixelRatio!==t.pixelRatio||0!==s.get(\"icon-rotate\").constantOr(1))&&(t.iconsNeedLinear=!0));}var q=ul(f.horizontal)||f.vertical;t.iconsInText=!!q&&q.iconsInText,(q||R)&&function(t,e,r,n,i,a,o,s,u,l,p){var c=a.textMaxSize.evaluate(e,{});void 0===c&&(c=o);var h,f=t.layers[0].layout,y=f.get(\"icon-offset\").evaluate(e,{},p),d=ul(r.horizontal),m=o/24,v=t.tilePixelRatio*m,g=t.tilePixelRatio*c/24,x=t.tilePixelRatio*s,b=t.tilePixelRatio*f.get(\"symbol-spacing\"),w=f.get(\"text-padding\")*t.tilePixelRatio,_=f.get(\"icon-padding\")*t.tilePixelRatio,S=f.get(\"text-max-angle\")/180*Math.PI,k=\"map\"===f.get(\"text-rotation-alignment\")&&\"point\"!==f.get(\"symbol-placement\"),I=\"map\"===f.get(\"icon-rotation-alignment\")&&\"point\"!==f.get(\"symbol-placement\"),z=f.get(\"symbol-placement\"),C=b/2,E=f.get(\"icon-text-fit\");n&&\"none\"!==E&&(t.allowVerticalPlacement&&r.vertical&&(h=Vu(n,r.vertical,E,f.get(\"icon-text-fit-padding\"),y,m)),d&&(n=Vu(n,d,E,f.get(\"icon-text-fit-padding\"),y,m)));var P=function(s,c){c.x<0||c.x>=8192||c.y<0||c.y>=8192||function(t,e,r,n,i,a,o,s,u,l,p,c,h,f,y,d,m,v,g,x,b,w,_,S,k){var I,z,C,E,P,M=t.addToLineVertexArray(e,r),B=0,T=0,V=0,F=0,D=-1,L=-1,O={},R=ha(\"\"),U=0,j=0;if(void 0===s._unevaluatedLayout.getValue(\"text-radial-offset\")?(U=(I=s.layout.get(\"text-offset\").evaluate(b,{},S).map((function(t){return 24*t})))[0],j=I[1]):(U=24*s.layout.get(\"text-radial-offset\").evaluate(b,{},S),j=il),t.allowVerticalPlacement&&n.vertical){var q=s.layout.get(\"text-rotate\").evaluate(b,{},S)+90;E=new Wu(u,e,l,p,c,n.vertical,h,f,y,q),o&&(P=new Wu(u,e,l,p,c,o,m,v,y,q));}if(i){var N=s.layout.get(\"icon-rotate\").evaluate(b,{}),K=\"none\"!==s.layout.get(\"icon-text-fit\"),G=Xu(i,N,_,K),Z=o?Xu(o,N,_,K):void 0;C=new Wu(u,e,l,p,c,i,m,v,!1,N),B=4*G.length;var X=t.iconSizeData,J=null;\"source\"===X.kind?(J=[128*s.layout.get(\"icon-size\").evaluate(b,{})])[0]>32640&&A(t.layerIds[0]+': Value for \"icon-size\" is >= 255. Reduce your \"icon-size\".'):\"composite\"===X.kind&&((J=[128*w.compositeIconSizes[0].evaluate(b,{},S),128*w.compositeIconSizes[1].evaluate(b,{},S)])[0]>32640||J[1]>32640)&&A(t.layerIds[0]+': Value for \"icon-size\" is >= 255. Reduce your \"icon-size\".'),t.addSymbols(t.icon,G,J,x,g,b,!1,e,M.lineStartIndex,M.lineLength,-1,S),D=t.icon.placedSymbolArray.length-1,Z&&(T=4*Z.length,t.addSymbols(t.icon,Z,J,x,g,b,wu.vertical,e,M.lineStartIndex,M.lineLength,-1,S),L=t.icon.placedSymbolArray.length-1);}for(var H in n.horizontal){var Y=n.horizontal[H];if(!z){R=ha(Y.text);var $=s.layout.get(\"text-rotate\").evaluate(b,{},S);z=new Wu(u,e,l,p,c,Y,h,f,y,$);}var W=1===Y.positionedLines.length;if(V+=sl(t,e,Y,a,s,y,b,d,M,n.vertical?wu.horizontal:wu.horizontalOnly,W?Object.keys(n.horizontal):[H],O,D,w,S),W)break}n.vertical&&(F+=sl(t,e,n.vertical,a,s,y,b,d,M,wu.vertical,[\"vertical\"],O,L,w,S));var Q=z?z.boxStartIndex:t.collisionBoxArray.length,tt=z?z.boxEndIndex:t.collisionBoxArray.length,et=E?E.boxStartIndex:t.collisionBoxArray.length,rt=E?E.boxEndIndex:t.collisionBoxArray.length,nt=C?C.boxStartIndex:t.collisionBoxArray.length,it=C?C.boxEndIndex:t.collisionBoxArray.length,at=P?P.boxStartIndex:t.collisionBoxArray.length,ot=P?P.boxEndIndex:t.collisionBoxArray.length,st=-1,ut=function(t,e){return t&&t.circleDiameter?Math.max(t.circleDiameter,e):e};st=ut(z,st),st=ut(E,st),st=ut(C,st);var lt=(st=ut(P,st))>-1?1:0;lt&&(st*=k/24),t.glyphOffsetArray.length>=vl.MAX_GLYPHS&&A(\"Too many glyphs being rendered in a tile. See https://github.com/mapbox/mapbox-gl-js/issues/2907\"),void 0!==b.sortKey&&t.addToSortKeyRanges(t.symbolInstances.length,b.sortKey),t.symbolInstances.emplaceBack(e.x,e.y,O.right>=0?O.right:-1,O.center>=0?O.center:-1,O.left>=0?O.left:-1,O.vertical||-1,D,L,R,Q,tt,et,rt,nt,it,at,ot,l,V,F,B,T,lt,0,h,U,j,st);}(t,c,s,r,n,i,h,t.layers[0],t.collisionBoxArray,e.index,e.sourceLayerIndex,t.index,v,w,k,u,x,_,I,y,e,a,l,p,o);};if(\"line\"===z)for(var M=0,B=Zu(e.geometry,0,0,8192,8192);M<B.length;M+=1)for(var T=B[M],V=0,F=Gu(T,b,S,r.vertical||d,n,24,g,t.overscaling,8192);V<F.length;V+=1){var D=F[V];d&&ll(t,d.text,C,D)||P(T,D);}else if(\"line-center\"===z)for(var L=0,O=e.geometry;L<O.length;L+=1){var R=O[L];if(R.length>1){var U=Ku(R,S,r.vertical||d,n,24,g);U&&P(R,U);}}else if(\"Polygon\"===e.type)for(var j=0,q=ns(e.geometry,0);j<q.length;j+=1){var N=q[j],K=el(N,16);P(N[0],new Fu(K.x,K.y,0));}else if(\"LineString\"===e.type)for(var G=0,Z=e.geometry;G<Z.length;G+=1){var X=Z[G];P(X,new Fu(X[0].x,X[0].y,0));}else if(\"Point\"===e.type)for(var J=0,H=e.geometry;J<H.length;J+=1)for(var Y=0,$=H[J];Y<$.length;Y+=1){var W=$[Y];P([W],new Fu(W.x,W.y,0));}}(t,a,f,R,n,l,c,h,w,U,o);},x=0,b=t.features;x<b.length;x+=1)g();a&&t.generateCollisionDebugBuffers();},t.perspective=function(t,e,r,n,i){var a,o=1/Math.tan(e/2);return t[0]=o/r,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=o,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[11]=-1,t[12]=0,t[13]=0,t[15]=0,null!=i&&i!==1/0?(t[10]=(i+n)*(a=1/(n-i)),t[14]=2*i*n*a):(t[10]=-1,t[14]=-2*n),t},t.pick=function(t,e){for(var r={},n=0;n<e.length;n++){var i=e[n];i in t&&(r[i]=t[i]);}return r},t.plugin=oi,t.polygonIntersectsPolygon=Na,t.postMapLoadEvent=ot,t.postTurnstileEvent=it,t.potpack=vu,t.refProperties=[\"type\",\"source\",\"source-layer\",\"minzoom\",\"maxzoom\",\"filter\",\"layout\"],t.register=On,t.registerForPluginStateChange=function(t){return t({pluginStatus:Qn,pluginURL:ti}),ni.on(\"pluginStateChange\",t),t},t.renderColorRamp=wo,t.rotate=function(t,e,r){var n=e[0],i=e[1],a=e[2],o=e[3],s=Math.sin(r),u=Math.cos(r);return t[0]=n*u+a*s,t[1]=i*u+o*s,t[2]=n*-s+a*u,t[3]=i*-s+o*u,t},t.rotateX=function(t,e,r){var n=Math.sin(r),i=Math.cos(r),a=e[4],o=e[5],s=e[6],u=e[7],l=e[8],p=e[9],c=e[10],h=e[11];return e!==t&&(t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15]),t[4]=a*i+l*n,t[5]=o*i+p*n,t[6]=s*i+c*n,t[7]=u*i+h*n,t[8]=l*i-a*n,t[9]=p*i-o*n,t[10]=c*i-s*n,t[11]=h*i-u*n,t},t.rotateZ=function(t,e,r){var n=Math.sin(r),i=Math.cos(r),a=e[0],o=e[1],s=e[2],u=e[3],l=e[4],p=e[5],c=e[6],h=e[7];return e!==t&&(t[8]=e[8],t[9]=e[9],t[10]=e[10],t[11]=e[11],t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15]),t[0]=a*i+l*n,t[1]=o*i+p*n,t[2]=s*i+c*n,t[3]=u*i+h*n,t[4]=l*i-a*n,t[5]=p*i-o*n,t[6]=c*i-s*n,t[7]=h*i-u*n,t},t.scale=function(t,e,r){var n=r[0],i=r[1],a=r[2];return t[0]=e[0]*n,t[1]=e[1]*n,t[2]=e[2]*n,t[3]=e[3]*n,t[4]=e[4]*i,t[5]=e[5]*i,t[6]=e[6]*i,t[7]=e[7]*i,t[8]=e[8]*a,t[9]=e[9]*a,t[10]=e[10]*a,t[11]=e[11]*a,t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15],t},t.scale$1=function(t,e,r){return t[0]=e[0]*r,t[1]=e[1]*r,t[2]=e[2]*r,t[3]=e[3]*r,t},t.scale$2=function(t,e,r){return t[0]=e[0]*r,t[1]=e[1]*r,t[2]=e[2]*r,t},t.setCacheLimits=function(t,e){st=t,ut=e;},t.setRTLTextPlugin=function(t,e,r){if(void 0===r&&(r=!1),\"deferred\"===Qn||\"loading\"===Qn||\"loaded\"===Qn)throw new Error(\"setRTLTextPlugin cannot be called multiple times.\");ti=O.resolveURL(t),Qn=\"deferred\",Wn=e,ri(),r||ai();},t.sphericalToCartesian=function(t){var e=t[0],r=t[1],n=t[2];return r+=90,r*=Math.PI/180,n*=Math.PI/180,{x:e*Math.cos(r)*Math.sin(n),y:e*Math.sin(r)*Math.sin(n),z:e*Math.cos(n)}},t.sqrLen=function(t){var e=t[0],r=t[1];return e*e+r*r},t.styleSpec=Et,t.sub=function(t,e,r){return t[0]=e[0]-r[0],t[1]=e[1]-r[1],t[2]=e[2]-r[2],t},t.symbolSize=Ru,t.transformMat3=function(t,e,r){var n=e[0],i=e[1],a=e[2];return t[0]=n*r[0]+i*r[3]+a*r[6],t[1]=n*r[1]+i*r[4]+a*r[7],t[2]=n*r[2]+i*r[5]+a*r[8],t},t.transformMat4=po,t.translate=function(t,e,r){var n,i,a,o,s,u,l,p,c,h,f,y,d=r[0],m=r[1],v=r[2];return e===t?(t[12]=e[0]*d+e[4]*m+e[8]*v+e[12],t[13]=e[1]*d+e[5]*m+e[9]*v+e[13],t[14]=e[2]*d+e[6]*m+e[10]*v+e[14],t[15]=e[3]*d+e[7]*m+e[11]*v+e[15]):(i=e[1],a=e[2],o=e[3],s=e[4],u=e[5],l=e[6],p=e[7],c=e[8],h=e[9],f=e[10],y=e[11],t[0]=n=e[0],t[1]=i,t[2]=a,t[3]=o,t[4]=s,t[5]=u,t[6]=l,t[7]=p,t[8]=c,t[9]=h,t[10]=f,t[11]=y,t[12]=n*d+s*m+c*v+e[12],t[13]=i*d+u*m+h*v+e[13],t[14]=a*d+l*m+f*v+e[14],t[15]=o*d+p*m+y*v+e[15]),t},t.triggerPluginCompletionEvent=ei,t.uniqueId=y,t.validateCustomStyleLayer=function(t){var e=[],r=t.id;return void 0===r&&e.push({message:\"layers.\"+r+': missing required property \"id\"'}),void 0===t.render&&e.push({message:\"layers.\"+r+': missing required method \"render\"'}),t.renderingMode&&\"2d\"!==t.renderingMode&&\"3d\"!==t.renderingMode&&e.push({message:\"layers.\"+r+': property \"renderingMode\" must be either \"2d\" or \"3d\"'}),e},t.validateLight=En,t.validateStyle=Cn,t.values=function(t){var e=[];for(var r in t)e.push(t[r]);return e},t.vectorTile=bs,t.version=\"1.13.3\",t.warnOnce=A,t.webpSupported=U,t.window=o,t.wrap=c;}));\n\ndefine([\"./shared\"],(function(e){\"use strict\";function t(e){var r=typeof e;if(\"number\"===r||\"boolean\"===r||\"string\"===r||null==e)return JSON.stringify(e);if(Array.isArray(e)){for(var i=\"[\",o=0,n=e;o<n.length;o+=1)i+=t(n[o])+\",\";return i+\"]\"}for(var a=Object.keys(e).sort(),s=\"{\",l=0;l<a.length;l++)s+=JSON.stringify(a[l])+\":\"+t(e[a[l]])+\",\";return s+\"}\"}function r(r){for(var i=\"\",o=0,n=e.refProperties;o<n.length;o+=1)i+=\"/\"+t(r[n[o]]);return i}var i=function(e){this.keyCache={},e&&this.replace(e);};i.prototype.replace=function(e){this._layerConfigs={},this._layers={},this.update(e,[]);},i.prototype.update=function(t,i){for(var o=this,n=0,a=t;n<a.length;n+=1){var s=a[n];this._layerConfigs[s.id]=s;var l=this._layers[s.id]=e.createStyleLayer(s);l._featureFilter=e.featureFilter(l.filter),this.keyCache[s.id]&&delete this.keyCache[s.id];}for(var u=0,h=i;u<h.length;u+=1){var c=h[u];delete this.keyCache[c],delete this._layerConfigs[c],delete this._layers[c];}this.familiesBySource={};for(var p=0,f=function(e,t){for(var i={},o=0;o<e.length;o++){var n=t&&t[e[o].id]||r(e[o]);t&&(t[e[o].id]=n);var a=i[n];a||(a=i[n]=[]),a.push(e[o]);}var s=[];for(var l in i)s.push(i[l]);return s}(e.values(this._layerConfigs),this.keyCache);p<f.length;p+=1){var d=f[p].map((function(e){return o._layers[e.id]})),g=d[0];if(\"none\"!==g.visibility){var v=g.source||\"\",m=this.familiesBySource[v];m||(m=this.familiesBySource[v]={});var y=g.sourceLayer||\"_geojsonTileLayer\",x=m[y];x||(x=m[y]=[]),x.push(d);}}};var o=function(t){var r={},i=[];for(var o in t){var n=t[o],a=r[o]={};for(var s in n){var l=n[+s];if(l&&0!==l.bitmap.width&&0!==l.bitmap.height){var u={x:0,y:0,w:l.bitmap.width+2,h:l.bitmap.height+2};i.push(u),a[s]={rect:u,metrics:l.metrics};}}}var h=e.potpack(i),c=new e.AlphaImage({width:h.w||1,height:h.h||1});for(var p in t){var f=t[p];for(var d in f){var g=f[+d];if(g&&0!==g.bitmap.width&&0!==g.bitmap.height){var v=r[p][d].rect;e.AlphaImage.copy(g.bitmap,c,{x:0,y:0},{x:v.x+1,y:v.y+1},g.bitmap);}}}this.image=c,this.positions=r;};e.register(\"GlyphAtlas\",o);var n=function(t){this.tileID=new e.OverscaledTileID(t.tileID.overscaledZ,t.tileID.wrap,t.tileID.canonical.z,t.tileID.canonical.x,t.tileID.canonical.y),this.uid=t.uid,this.zoom=t.zoom,this.pixelRatio=t.pixelRatio,this.tileSize=t.tileSize,this.source=t.source,this.overscaling=this.tileID.overscaleFactor(),this.showCollisionBoxes=t.showCollisionBoxes,this.collectResourceTiming=!!t.collectResourceTiming,this.returnDependencies=!!t.returnDependencies,this.promoteId=t.promoteId;};function a(t,r,i){for(var o=new e.EvaluationParameters(r),n=0,a=t;n<a.length;n+=1)a[n].recalculate(o,i);}function s(t,r){var i=e.getArrayBuffer(t.request,(function(t,i,o,n){t?r(t):i&&r(null,{vectorTile:new e.vectorTile.VectorTile(new e.pbf(i)),rawData:i,cacheControl:o,expires:n});}));return function(){i.cancel(),r();}}n.prototype.parse=function(t,r,i,n,s){var l=this;this.status=\"parsing\",this.data=t,this.collisionBoxArray=new e.CollisionBoxArray;var u=new e.DictionaryCoder(Object.keys(t.layers).sort()),h=new e.FeatureIndex(this.tileID,this.promoteId);h.bucketLayerIDs=[];var c,p,f,d,g={},v={featureIndex:h,iconDependencies:{},patternDependencies:{},glyphDependencies:{},availableImages:i},m=r.familiesBySource[this.source];for(var y in m){var x=t.layers[y];if(x){1===x.version&&e.warnOnce('Vector tile source \"'+this.source+'\" layer \"'+y+'\" does not use vector tile spec v2 and therefore may have some rendering errors.');for(var w=u.encode(y),S=[],I=0;I<x.length;I++){var M=x.feature(I),b=h.getId(M,y);S.push({feature:M,id:b,index:I,sourceLayerIndex:w});}for(var _=0,k=m[y];_<k.length;_+=1){var P=k[_],T=P[0];T.minzoom&&this.zoom<Math.floor(T.minzoom)||T.maxzoom&&this.zoom>=T.maxzoom||\"none\"!==T.visibility&&(a(P,this.zoom,i),(g[T.id]=T.createBucket({index:h.bucketLayerIDs.length,layers:P,zoom:this.zoom,pixelRatio:this.pixelRatio,overscaling:this.overscaling,collisionBoxArray:this.collisionBoxArray,sourceLayerIndex:w,sourceID:this.source})).populate(S,v,this.tileID.canonical),h.bucketLayerIDs.push(P.map((function(e){return e.id}))));}}}var C=e.mapObject(v.glyphDependencies,(function(e){return Object.keys(e).map(Number)}));Object.keys(C).length?n.send(\"getGlyphs\",{uid:this.uid,stacks:C},(function(e,t){c||(c=e,p=t,z.call(l));})):p={};var D=Object.keys(v.iconDependencies);D.length?n.send(\"getImages\",{icons:D,source:this.source,tileID:this.tileID,type:\"icons\"},(function(e,t){c||(c=e,f=t,z.call(l));})):f={};var L=Object.keys(v.patternDependencies);function z(){if(c)return s(c);if(p&&f&&d){var t=new o(p),r=new e.ImageAtlas(f,d);for(var n in g){var l=g[n];l instanceof e.SymbolBucket?(a(l.layers,this.zoom,i),e.performSymbolLayout(l,p,t.positions,f,r.iconPositions,this.showCollisionBoxes,this.tileID.canonical)):l.hasPattern&&(l instanceof e.LineBucket||l instanceof e.FillBucket||l instanceof e.FillExtrusionBucket)&&(a(l.layers,this.zoom,i),l.addFeatures(v,this.tileID.canonical,r.patternPositions));}this.status=\"done\",s(null,{buckets:e.values(g).filter((function(e){return !e.isEmpty()})),featureIndex:h,collisionBoxArray:this.collisionBoxArray,glyphAtlasImage:t.image,imageAtlas:r,glyphMap:this.returnDependencies?p:null,iconMap:this.returnDependencies?f:null,glyphPositions:this.returnDependencies?t.positions:null});}}L.length?n.send(\"getImages\",{icons:L,source:this.source,tileID:this.tileID,type:\"patterns\"},(function(e,t){c||(c=e,d=t,z.call(l));})):d={},z.call(this);};var l=function(e,t,r,i){this.actor=e,this.layerIndex=t,this.availableImages=r,this.loadVectorData=i||s,this.loading={},this.loaded={};};l.prototype.loadTile=function(t,r){var i=this,o=t.uid;this.loading||(this.loading={});var a=!!(t&&t.request&&t.request.collectResourceTiming)&&new e.RequestPerformance(t.request),s=this.loading[o]=new n(t);s.abort=this.loadVectorData(t,(function(t,n){if(delete i.loading[o],t||!n)return s.status=\"done\",i.loaded[o]=s,r(t);var l=n.rawData,u={};n.expires&&(u.expires=n.expires),n.cacheControl&&(u.cacheControl=n.cacheControl);var h={};if(a){var c=a.finish();c&&(h.resourceTiming=JSON.parse(JSON.stringify(c)));}s.vectorTile=n.vectorTile,s.parse(n.vectorTile,i.layerIndex,i.availableImages,i.actor,(function(t,i){if(t||!i)return r(t);r(null,e.extend({rawTileData:l.slice(0)},i,u,h));})),i.loaded=i.loaded||{},i.loaded[o]=s;}));},l.prototype.reloadTile=function(e,t){var r=this,i=this.loaded,o=e.uid,n=this;if(i&&i[o]){var a=i[o];a.showCollisionBoxes=e.showCollisionBoxes;var s=function(e,i){var o=a.reloadCallback;o&&(delete a.reloadCallback,a.parse(a.vectorTile,n.layerIndex,r.availableImages,n.actor,o)),t(e,i);};\"parsing\"===a.status?a.reloadCallback=s:\"done\"===a.status&&(a.vectorTile?a.parse(a.vectorTile,this.layerIndex,this.availableImages,this.actor,s):s());}},l.prototype.abortTile=function(e,t){var r=this.loading,i=e.uid;r&&r[i]&&r[i].abort&&(r[i].abort(),delete r[i]),t();},l.prototype.removeTile=function(e,t){var r=this.loaded,i=e.uid;r&&r[i]&&delete r[i],t();};var u=e.window.ImageBitmap,h=function(){this.loaded={};};function c(e,t){if(0!==e.length){p(e[0],t);for(var r=1;r<e.length;r++)p(e[r],!t);}}function p(e,t){for(var r=0,i=0,o=0,n=e.length,a=n-1;o<n;a=o++){var s=(e[o][0]-e[a][0])*(e[a][1]+e[o][1]),l=r+s;i+=Math.abs(r)>=Math.abs(s)?r-l+s:s-l+r,r=l;}r+i>=0!=!!t&&e.reverse();}h.prototype.loadTile=function(t,r){var i=t.uid,o=t.encoding,n=t.rawImageData,a=u&&n instanceof u?this.getImageData(n):n,s=new e.DEMData(i,a,o);this.loaded=this.loaded||{},this.loaded[i]=s,r(null,s);},h.prototype.getImageData=function(t){this.offscreenCanvas&&this.offscreenCanvasContext||(this.offscreenCanvas=new OffscreenCanvas(t.width,t.height),this.offscreenCanvasContext=this.offscreenCanvas.getContext(\"2d\")),this.offscreenCanvas.width=t.width,this.offscreenCanvas.height=t.height,this.offscreenCanvasContext.drawImage(t,0,0,t.width,t.height);var r=this.offscreenCanvasContext.getImageData(-1,-1,t.width+2,t.height+2);return this.offscreenCanvasContext.clearRect(0,0,this.offscreenCanvas.width,this.offscreenCanvas.height),new e.RGBAImage({width:r.width,height:r.height},r.data)},h.prototype.removeTile=function(e){var t=this.loaded,r=e.uid;t&&t[r]&&delete t[r];};var f=e.vectorTile.VectorTileFeature.prototype.toGeoJSON,d=function(t){this._feature=t,this.extent=e.EXTENT,this.type=t.type,this.properties=t.tags,\"id\"in t&&!isNaN(t.id)&&(this.id=parseInt(t.id,10));};d.prototype.loadGeometry=function(){if(1===this._feature.type){for(var t=[],r=0,i=this._feature.geometry;r<i.length;r+=1){var o=i[r];t.push([new e.Point$1(o[0],o[1])]);}return t}for(var n=[],a=0,s=this._feature.geometry;a<s.length;a+=1){for(var l=[],u=0,h=s[a];u<h.length;u+=1){var c=h[u];l.push(new e.Point$1(c[0],c[1]));}n.push(l);}return n},d.prototype.toGeoJSON=function(e,t,r){return f.call(this,e,t,r)};var g=function(t){this.layers={_geojsonTileLayer:this},this.name=\"_geojsonTileLayer\",this.extent=e.EXTENT,this.length=t.length,this._features=t;};g.prototype.feature=function(e){return new d(this._features[e])};var v=e.vectorTile.VectorTileFeature,m=y;function y(e,t){this.options=t||{},this.features=e,this.length=e.length;}function x(e,t){this.id=\"number\"==typeof e.id?e.id:void 0,this.type=e.type,this.rawGeometry=1===e.type?[e.geometry]:e.geometry,this.properties=e.tags,this.extent=t||4096;}y.prototype.feature=function(e){return new x(this.features[e],this.options.extent)},x.prototype.loadGeometry=function(){var t=this.rawGeometry;this.geometry=[];for(var r=0;r<t.length;r++){for(var i=t[r],o=[],n=0;n<i.length;n++)o.push(new e.Point$1(i[n][0],i[n][1]));this.geometry.push(o);}return this.geometry},x.prototype.bbox=function(){this.geometry||this.loadGeometry();for(var e=this.geometry,t=1/0,r=-1/0,i=1/0,o=-1/0,n=0;n<e.length;n++)for(var a=e[n],s=0;s<a.length;s++){var l=a[s];t=Math.min(t,l.x),r=Math.max(r,l.x),i=Math.min(i,l.y),o=Math.max(o,l.y);}return [t,i,r,o]},x.prototype.toGeoJSON=v.prototype.toGeoJSON;var w=I,S=m;function I(t){var r=new e.pbf;return function(e,t){for(var r in e.layers)t.writeMessage(3,M,e.layers[r]);}(t,r),r.finish()}function M(e,t){var r;t.writeVarintField(15,e.version||1),t.writeStringField(1,e.name||\"\"),t.writeVarintField(5,e.extent||4096);var i={keys:[],values:[],keycache:{},valuecache:{}};for(r=0;r<e.length;r++)i.feature=e.feature(r),t.writeMessage(2,b,i);var o=i.keys;for(r=0;r<o.length;r++)t.writeStringField(3,o[r]);var n=i.values;for(r=0;r<n.length;r++)t.writeMessage(4,C,n[r]);}function b(e,t){var r=e.feature;void 0!==r.id&&t.writeVarintField(1,r.id),t.writeMessage(2,_,e),t.writeVarintField(3,r.type),t.writeMessage(4,T,r);}function _(e,t){var r=e.feature,i=e.keys,o=e.values,n=e.keycache,a=e.valuecache;for(var s in r.properties){var l=n[s];void 0===l&&(i.push(s),n[s]=l=i.length-1),t.writeVarint(l);var u=r.properties[s],h=typeof u;\"string\"!==h&&\"boolean\"!==h&&\"number\"!==h&&(u=JSON.stringify(u));var c=h+\":\"+u,p=a[c];void 0===p&&(o.push(u),a[c]=p=o.length-1),t.writeVarint(p);}}function k(e,t){return (t<<3)+(7&e)}function P(e){return e<<1^e>>31}function T(e,t){for(var r=e.loadGeometry(),i=e.type,o=0,n=0,a=r.length,s=0;s<a;s++){var l=r[s],u=1;1===i&&(u=l.length),t.writeVarint(k(1,u));for(var h=3===i?l.length-1:l.length,c=0;c<h;c++){1===c&&1!==i&&t.writeVarint(k(2,h-1));var p=l[c].x-o,f=l[c].y-n;t.writeVarint(P(p)),t.writeVarint(P(f)),o+=p,n+=f;}3===i&&t.writeVarint(k(7,1));}}function C(e,t){var r=typeof e;\"string\"===r?t.writeStringField(1,e):\"boolean\"===r?t.writeBooleanField(7,e):\"number\"===r&&(e%1!=0?t.writeDoubleField(3,e):e<0?t.writeSVarintField(6,e):t.writeVarintField(5,e));}function D(e,t,r,i){L(e,r,i),L(t,2*r,2*i),L(t,2*r+1,2*i+1);}function L(e,t,r){var i=e[t];e[t]=e[r],e[r]=i;}function z(e,t,r,i){var o=e-r,n=t-i;return o*o+n*n}w.fromVectorTileJs=I,w.fromGeojsonVt=function(e,t){t=t||{};var r={};for(var i in e)r[i]=new m(e[i].features,t),r[i].name=i,r[i].version=t.version,r[i].extent=t.extent;return I({layers:r})},w.GeoJSONWrapper=S;var O=function(e){return e[0]},E=function(e){return e[1]},F=function(e,t,r,i,o){void 0===t&&(t=O),void 0===r&&(r=E),void 0===i&&(i=64),void 0===o&&(o=Float64Array),this.nodeSize=i,this.points=e;for(var n=e.length<65536?Uint16Array:Uint32Array,a=this.ids=new n(e.length),s=this.coords=new o(2*e.length),l=0;l<e.length;l++)a[l]=l,s[2*l]=t(e[l]),s[2*l+1]=r(e[l]);!function e(t,r,i,o,n,a){if(!(n-o<=i)){var s=o+n>>1;!function e(t,r,i,o,n,a){for(;n>o;){if(n-o>600){var s=n-o+1,l=i-o+1,u=Math.log(s),h=.5*Math.exp(2*u/3),c=.5*Math.sqrt(u*h*(s-h)/s)*(l-s/2<0?-1:1);e(t,r,i,Math.max(o,Math.floor(i-l*h/s+c)),Math.min(n,Math.floor(i+(s-l)*h/s+c)),a);}var p=r[2*i+a],f=o,d=n;for(D(t,r,o,i),r[2*n+a]>p&&D(t,r,o,n);f<d;){for(D(t,r,f,d),f++,d--;r[2*f+a]<p;)f++;for(;r[2*d+a]>p;)d--;}r[2*o+a]===p?D(t,r,o,d):D(t,r,++d,n),d<=i&&(o=d+1),i<=d&&(n=d-1);}}(t,r,s,o,n,a%2),e(t,r,i,o,s-1,a+1),e(t,r,i,s+1,n,a+1);}}(a,s,i,0,a.length-1,0);};F.prototype.range=function(e,t,r,i){return function(e,t,r,i,o,n,a){for(var s,l,u=[0,e.length-1,0],h=[];u.length;){var c=u.pop(),p=u.pop(),f=u.pop();if(p-f<=a)for(var d=f;d<=p;d++)l=t[2*d+1],(s=t[2*d])>=r&&s<=o&&l>=i&&l<=n&&h.push(e[d]);else {var g=Math.floor((f+p)/2);l=t[2*g+1],(s=t[2*g])>=r&&s<=o&&l>=i&&l<=n&&h.push(e[g]);var v=(c+1)%2;(0===c?r<=s:i<=l)&&(u.push(f),u.push(g-1),u.push(v)),(0===c?o>=s:n>=l)&&(u.push(g+1),u.push(p),u.push(v));}}return h}(this.ids,this.coords,e,t,r,i,this.nodeSize)},F.prototype.within=function(e,t,r){return function(e,t,r,i,o,n){for(var a=[0,e.length-1,0],s=[],l=o*o;a.length;){var u=a.pop(),h=a.pop(),c=a.pop();if(h-c<=n)for(var p=c;p<=h;p++)z(t[2*p],t[2*p+1],r,i)<=l&&s.push(e[p]);else {var f=Math.floor((c+h)/2),d=t[2*f],g=t[2*f+1];z(d,g,r,i)<=l&&s.push(e[f]);var v=(u+1)%2;(0===u?r-o<=d:i-o<=g)&&(a.push(c),a.push(f-1),a.push(v)),(0===u?r+o>=d:i+o>=g)&&(a.push(f+1),a.push(h),a.push(v));}}return s}(this.ids,this.coords,e,t,r,this.nodeSize)};var N={minZoom:0,maxZoom:16,minPoints:2,radius:40,extent:512,nodeSize:64,log:!1,generateId:!1,reduce:null,map:function(e){return e}},J=function(e){this.options=V(Object.create(N),e),this.trees=new Array(this.options.maxZoom+1);};function Z(e,t,r,i,o){return {x:e,y:t,zoom:1/0,id:r,parentId:-1,numPoints:i,properties:o}}function A(e,t){var r=e.geometry.coordinates,i=r[1];return {x:Y(r[0]),y:j(i),zoom:1/0,index:t,parentId:-1}}function B(e){return {type:\"Feature\",id:e.id,properties:G(e),geometry:{type:\"Point\",coordinates:[(i=e.x,360*(i-.5)),(t=e.y,r=(180-360*t)*Math.PI/180,360*Math.atan(Math.exp(r))/Math.PI-90)]}};var t,r,i;}function G(e){var t=e.numPoints,r=t>=1e4?Math.round(t/1e3)+\"k\":t>=1e3?Math.round(t/100)/10+\"k\":t;return V(V({},e.properties),{cluster:!0,cluster_id:e.id,point_count:t,point_count_abbreviated:r})}function Y(e){return e/360+.5}function j(e){var t=Math.sin(e*Math.PI/180),r=.5-.25*Math.log((1+t)/(1-t))/Math.PI;return r<0?0:r>1?1:r}function V(e,t){for(var r in t)e[r]=t[r];return e}function X(e){return e.x}function W(e){return e.y}function R(e,t,r,i,o,n){var a=o-r,s=n-i;if(0!==a||0!==s){var l=((e-r)*a+(t-i)*s)/(a*a+s*s);l>1?(r=o,i=n):l>0&&(r+=a*l,i+=s*l);}return (a=e-r)*a+(s=t-i)*s}function q(e,t,r,i){var o={id:void 0===e?null:e,type:t,geometry:r,tags:i,minX:1/0,minY:1/0,maxX:-1/0,maxY:-1/0};return function(e){var t=e.geometry,r=e.type;if(\"Point\"===r||\"MultiPoint\"===r||\"LineString\"===r)U(e,t);else if(\"Polygon\"===r||\"MultiLineString\"===r)for(var i=0;i<t.length;i++)U(e,t[i]);else if(\"MultiPolygon\"===r)for(i=0;i<t.length;i++)for(var o=0;o<t[i].length;o++)U(e,t[i][o]);}(o),o}function U(e,t){for(var r=0;r<t.length;r+=3)e.minX=Math.min(e.minX,t[r]),e.minY=Math.min(e.minY,t[r+1]),e.maxX=Math.max(e.maxX,t[r]),e.maxY=Math.max(e.maxY,t[r+1]);}function $(e,t,r,i){if(t.geometry){var o=t.geometry.coordinates,n=t.geometry.type,a=Math.pow(r.tolerance/((1<<r.maxZoom)*r.extent),2),s=[],l=t.id;if(r.promoteId?l=t.properties[r.promoteId]:r.generateId&&(l=i||0),\"Point\"===n)H(o,s);else if(\"MultiPoint\"===n)for(var u=0;u<o.length;u++)H(o[u],s);else if(\"LineString\"===n)K(o,s,a,!1);else if(\"MultiLineString\"===n){if(r.lineMetrics){for(u=0;u<o.length;u++)K(o[u],s=[],a,!1),e.push(q(l,\"LineString\",s,t.properties));return}Q(o,s,a,!1);}else if(\"Polygon\"===n)Q(o,s,a,!0);else {if(\"MultiPolygon\"!==n){if(\"GeometryCollection\"===n){for(u=0;u<t.geometry.geometries.length;u++)$(e,{id:l,geometry:t.geometry.geometries[u],properties:t.properties},r,i);return}throw new Error(\"Input data is not a valid GeoJSON object.\")}for(u=0;u<o.length;u++){var h=[];Q(o[u],h,a,!0),s.push(h);}}e.push(q(l,n,s,t.properties));}}function H(e,t){t.push(ee(e[0])),t.push(te(e[1])),t.push(0);}function K(e,t,r,i){for(var o,n,a=0,s=0;s<e.length;s++){var l=ee(e[s][0]),u=te(e[s][1]);t.push(l),t.push(u),t.push(0),s>0&&(a+=i?(o*u-l*n)/2:Math.sqrt(Math.pow(l-o,2)+Math.pow(u-n,2))),o=l,n=u;}var h=t.length-3;t[2]=1,function e(t,r,i,o){for(var n,a=o,s=i-r>>1,l=i-r,u=t[r],h=t[r+1],c=t[i],p=t[i+1],f=r+3;f<i;f+=3){var d=R(t[f],t[f+1],u,h,c,p);if(d>a)n=f,a=d;else if(d===a){var g=Math.abs(f-s);g<l&&(n=f,l=g);}}a>o&&(n-r>3&&e(t,r,n,o),t[n+2]=a,i-n>3&&e(t,n,i,o));}(t,0,h,r),t[h+2]=1,t.size=Math.abs(a),t.start=0,t.end=t.size;}function Q(e,t,r,i){for(var o=0;o<e.length;o++){var n=[];K(e[o],n,r,i),t.push(n);}}function ee(e){return e/360+.5}function te(e){var t=Math.sin(e*Math.PI/180),r=.5-.25*Math.log((1+t)/(1-t))/Math.PI;return r<0?0:r>1?1:r}function re(e,t,r,i,o,n,a,s){if(i/=t,n>=(r/=t)&&a<i)return e;if(a<r||n>=i)return null;for(var l=[],u=0;u<e.length;u++){var h=e[u],c=h.geometry,p=h.type,f=0===o?h.minX:h.minY,d=0===o?h.maxX:h.maxY;if(f>=r&&d<i)l.push(h);else if(!(d<r||f>=i)){var g=[];if(\"Point\"===p||\"MultiPoint\"===p)ie(c,g,r,i,o);else if(\"LineString\"===p)oe(c,g,r,i,o,!1,s.lineMetrics);else if(\"MultiLineString\"===p)ae(c,g,r,i,o,!1);else if(\"Polygon\"===p)ae(c,g,r,i,o,!0);else if(\"MultiPolygon\"===p)for(var v=0;v<c.length;v++){var m=[];ae(c[v],m,r,i,o,!0),m.length&&g.push(m);}if(g.length){if(s.lineMetrics&&\"LineString\"===p){for(v=0;v<g.length;v++)l.push(q(h.id,p,g[v],h.tags));continue}\"LineString\"!==p&&\"MultiLineString\"!==p||(1===g.length?(p=\"LineString\",g=g[0]):p=\"MultiLineString\"),\"Point\"!==p&&\"MultiPoint\"!==p||(p=3===g.length?\"Point\":\"MultiPoint\"),l.push(q(h.id,p,g,h.tags));}}}return l.length?l:null}function ie(e,t,r,i,o){for(var n=0;n<e.length;n+=3){var a=e[n+o];a>=r&&a<=i&&(t.push(e[n]),t.push(e[n+1]),t.push(e[n+2]));}}function oe(e,t,r,i,o,n,a){for(var s,l,u=ne(e),h=0===o?le:ue,c=e.start,p=0;p<e.length-3;p+=3){var f=e[p],d=e[p+1],g=e[p+2],v=e[p+3],m=e[p+4],y=0===o?f:d,x=0===o?v:m,w=!1;a&&(s=Math.sqrt(Math.pow(f-v,2)+Math.pow(d-m,2))),y<r?x>r&&(l=h(u,f,d,v,m,r),a&&(u.start=c+s*l)):y>i?x<i&&(l=h(u,f,d,v,m,i),a&&(u.start=c+s*l)):se(u,f,d,g),x<r&&y>=r&&(l=h(u,f,d,v,m,r),w=!0),x>i&&y<=i&&(l=h(u,f,d,v,m,i),w=!0),!n&&w&&(a&&(u.end=c+s*l),t.push(u),u=ne(e)),a&&(c+=s);}var S=e.length-3;f=e[S],d=e[S+1],g=e[S+2],(y=0===o?f:d)>=r&&y<=i&&se(u,f,d,g),S=u.length-3,n&&S>=3&&(u[S]!==u[0]||u[S+1]!==u[1])&&se(u,u[0],u[1],u[2]),u.length&&t.push(u);}function ne(e){var t=[];return t.size=e.size,t.start=e.start,t.end=e.end,t}function ae(e,t,r,i,o,n){for(var a=0;a<e.length;a++)oe(e[a],t,r,i,o,n,!1);}function se(e,t,r,i){e.push(t),e.push(r),e.push(i);}function le(e,t,r,i,o,n){var a=(n-t)/(i-t);return e.push(n),e.push(r+(o-r)*a),e.push(1),a}function ue(e,t,r,i,o,n){var a=(n-r)/(o-r);return e.push(t+(i-t)*a),e.push(n),e.push(1),a}function he(e,t){for(var r=[],i=0;i<e.length;i++){var o,n=e[i],a=n.type;if(\"Point\"===a||\"MultiPoint\"===a||\"LineString\"===a)o=ce(n.geometry,t);else if(\"MultiLineString\"===a||\"Polygon\"===a){o=[];for(var s=0;s<n.geometry.length;s++)o.push(ce(n.geometry[s],t));}else if(\"MultiPolygon\"===a)for(o=[],s=0;s<n.geometry.length;s++){for(var l=[],u=0;u<n.geometry[s].length;u++)l.push(ce(n.geometry[s][u],t));o.push(l);}r.push(q(n.id,a,o,n.tags));}return r}function ce(e,t){var r=[];r.size=e.size,void 0!==e.start&&(r.start=e.start,r.end=e.end);for(var i=0;i<e.length;i+=3)r.push(e[i]+t,e[i+1],e[i+2]);return r}function pe(e,t){if(e.transformed)return e;var r,i,o,n=1<<e.z,a=e.x,s=e.y;for(r=0;r<e.features.length;r++){var l=e.features[r],u=l.geometry,h=l.type;if(l.geometry=[],1===h)for(i=0;i<u.length;i+=2)l.geometry.push(fe(u[i],u[i+1],t,n,a,s));else for(i=0;i<u.length;i++){var c=[];for(o=0;o<u[i].length;o+=2)c.push(fe(u[i][o],u[i][o+1],t,n,a,s));l.geometry.push(c);}}return e.transformed=!0,e}function fe(e,t,r,i,o,n){return [Math.round(r*(e*i-o)),Math.round(r*(t*i-n))]}function de(e,t,r,i,o){for(var n=t===o.maxZoom?0:o.tolerance/((1<<t)*o.extent),a={features:[],numPoints:0,numSimplified:0,numFeatures:0,source:null,x:r,y:i,z:t,transformed:!1,minX:2,minY:1,maxX:-1,maxY:0},s=0;s<e.length;s++){a.numFeatures++,ge(a,e[s],n,o);var l=e[s].minX,u=e[s].minY,h=e[s].maxX,c=e[s].maxY;l<a.minX&&(a.minX=l),u<a.minY&&(a.minY=u),h>a.maxX&&(a.maxX=h),c>a.maxY&&(a.maxY=c);}return a}function ge(e,t,r,i){var o=t.geometry,n=t.type,a=[];if(\"Point\"===n||\"MultiPoint\"===n)for(var s=0;s<o.length;s+=3)a.push(o[s]),a.push(o[s+1]),e.numPoints++,e.numSimplified++;else if(\"LineString\"===n)ve(a,o,e,r,!1,!1);else if(\"MultiLineString\"===n||\"Polygon\"===n)for(s=0;s<o.length;s++)ve(a,o[s],e,r,\"Polygon\"===n,0===s);else if(\"MultiPolygon\"===n)for(var l=0;l<o.length;l++){var u=o[l];for(s=0;s<u.length;s++)ve(a,u[s],e,r,!0,0===s);}if(a.length){var h=t.tags||null;if(\"LineString\"===n&&i.lineMetrics){for(var c in h={},t.tags)h[c]=t.tags[c];h.mapbox_clip_start=o.start/o.size,h.mapbox_clip_end=o.end/o.size;}var p={geometry:a,type:\"Polygon\"===n||\"MultiPolygon\"===n?3:\"LineString\"===n||\"MultiLineString\"===n?2:1,tags:h};null!==t.id&&(p.id=t.id),e.features.push(p);}}function ve(e,t,r,i,o,n){var a=i*i;if(i>0&&t.size<(o?a:i))r.numPoints+=t.length/3;else {for(var s=[],l=0;l<t.length;l+=3)(0===i||t[l+2]>a)&&(r.numSimplified++,s.push(t[l]),s.push(t[l+1])),r.numPoints++;o&&function(e,t){for(var r=0,i=0,o=e.length,n=o-2;i<o;n=i,i+=2)r+=(e[i]-e[n])*(e[i+1]+e[n+1]);if(r>0===t)for(i=0,o=e.length;i<o/2;i+=2){var a=e[i],s=e[i+1];e[i]=e[o-2-i],e[i+1]=e[o-1-i],e[o-2-i]=a,e[o-1-i]=s;}}(s,n),e.push(s);}}function me(e,t){var r=(t=this.options=function(e,t){for(var r in t)e[r]=t[r];return e}(Object.create(this.options),t)).debug;if(r&&console.time(\"preprocess data\"),t.maxZoom<0||t.maxZoom>24)throw new Error(\"maxZoom should be in the 0-24 range\");if(t.promoteId&&t.generateId)throw new Error(\"promoteId and generateId cannot be used together.\");var i=function(e,t){var r=[];if(\"FeatureCollection\"===e.type)for(var i=0;i<e.features.length;i++)$(r,e.features[i],t,i);else $(r,\"Feature\"===e.type?e:{geometry:e},t);return r}(e,t);this.tiles={},this.tileCoords=[],r&&(console.timeEnd(\"preprocess data\"),console.log(\"index: maxZoom: %d, maxPoints: %d\",t.indexMaxZoom,t.indexMaxPoints),console.time(\"generate tiles\"),this.stats={},this.total=0),(i=function(e,t){var r=t.buffer/t.extent,i=e,o=re(e,1,-1-r,r,0,-1,2,t),n=re(e,1,1-r,2+r,0,-1,2,t);return (o||n)&&(i=re(e,1,-r,1+r,0,-1,2,t)||[],o&&(i=he(o,1).concat(i)),n&&(i=i.concat(he(n,-1)))),i}(i,t)).length&&this.splitTile(i,0,0,0),r&&(i.length&&console.log(\"features: %d, points: %d\",this.tiles[0].numFeatures,this.tiles[0].numPoints),console.timeEnd(\"generate tiles\"),console.log(\"tiles generated:\",this.total,JSON.stringify(this.stats)));}function ye(e,t,r){return 32*((1<<e)*r+t)+e}function xe(e,t){var r=e.tileID.canonical;if(!this._geoJSONIndex)return t(null,null);var i=this._geoJSONIndex.getTile(r.z,r.x,r.y);if(!i)return t(null,null);var o=new g(i.features),n=w(o);0===n.byteOffset&&n.byteLength===n.buffer.byteLength||(n=new Uint8Array(n)),t(null,{vectorTile:o,rawData:n.buffer});}J.prototype.load=function(e){var t=this.options,r=t.log,i=t.minZoom,o=t.maxZoom,n=t.nodeSize;r&&console.time(\"total time\");var a=\"prepare \"+e.length+\" points\";r&&console.time(a),this.points=e;for(var s=[],l=0;l<e.length;l++)e[l].geometry&&s.push(A(e[l],l));this.trees[o+1]=new F(s,X,W,n,Float32Array),r&&console.timeEnd(a);for(var u=o;u>=i;u--){var h=+Date.now();s=this._cluster(s,u),this.trees[u]=new F(s,X,W,n,Float32Array),r&&console.log(\"z%d: %d clusters in %dms\",u,s.length,+Date.now()-h);}return r&&console.timeEnd(\"total time\"),this},J.prototype.getClusters=function(e,t){var r=((e[0]+180)%360+360)%360-180,i=Math.max(-90,Math.min(90,e[1])),o=180===e[2]?180:((e[2]+180)%360+360)%360-180,n=Math.max(-90,Math.min(90,e[3]));if(e[2]-e[0]>=360)r=-180,o=180;else if(r>o){var a=this.getClusters([r,i,180,n],t),s=this.getClusters([-180,i,o,n],t);return a.concat(s)}for(var l=this.trees[this._limitZoom(t)],u=[],h=0,c=l.range(Y(r),j(n),Y(o),j(i));h<c.length;h+=1){var p=l.points[c[h]];u.push(p.numPoints?B(p):this.points[p.index]);}return u},J.prototype.getChildren=function(e){var t=this._getOriginId(e),r=this._getOriginZoom(e),i=\"No cluster with the specified id.\",o=this.trees[r];if(!o)throw new Error(i);var n=o.points[t];if(!n)throw new Error(i);for(var a=this.options.radius/(this.options.extent*Math.pow(2,r-1)),s=[],l=0,u=o.within(n.x,n.y,a);l<u.length;l+=1){var h=o.points[u[l]];h.parentId===e&&s.push(h.numPoints?B(h):this.points[h.index]);}if(0===s.length)throw new Error(i);return s},J.prototype.getLeaves=function(e,t,r){var i=[];return this._appendLeaves(i,e,t=t||10,r=r||0,0),i},J.prototype.getTile=function(e,t,r){var i=this.trees[this._limitZoom(e)],o=Math.pow(2,e),n=this.options,a=n.radius/n.extent,s=(r-a)/o,l=(r+1+a)/o,u={features:[]};return this._addTileFeatures(i.range((t-a)/o,s,(t+1+a)/o,l),i.points,t,r,o,u),0===t&&this._addTileFeatures(i.range(1-a/o,s,1,l),i.points,o,r,o,u),t===o-1&&this._addTileFeatures(i.range(0,s,a/o,l),i.points,-1,r,o,u),u.features.length?u:null},J.prototype.getClusterExpansionZoom=function(e){for(var t=this._getOriginZoom(e)-1;t<=this.options.maxZoom;){var r=this.getChildren(e);if(t++,1!==r.length)break;e=r[0].properties.cluster_id;}return t},J.prototype._appendLeaves=function(e,t,r,i,o){for(var n=0,a=this.getChildren(t);n<a.length;n+=1){var s=a[n],l=s.properties;if(l&&l.cluster?o+l.point_count<=i?o+=l.point_count:o=this._appendLeaves(e,l.cluster_id,r,i,o):o<i?o++:e.push(s),e.length===r)break}return o},J.prototype._addTileFeatures=function(e,t,r,i,o,n){for(var a=0,s=e;a<s.length;a+=1){var l=t[s[a]],u=l.numPoints,h={type:1,geometry:[[Math.round(this.options.extent*(l.x*o-r)),Math.round(this.options.extent*(l.y*o-i))]],tags:u?G(l):this.points[l.index].properties},c=void 0;u?c=l.id:this.options.generateId?c=l.index:this.points[l.index].id&&(c=this.points[l.index].id),void 0!==c&&(h.id=c),n.features.push(h);}},J.prototype._limitZoom=function(e){return Math.max(this.options.minZoom,Math.min(+e,this.options.maxZoom+1))},J.prototype._cluster=function(e,t){for(var r=[],i=this.options,o=i.reduce,n=i.minPoints,a=i.radius/(i.extent*Math.pow(2,t)),s=0;s<e.length;s++){var l=e[s];if(!(l.zoom<=t)){l.zoom=t;for(var u=this.trees[t+1],h=u.within(l.x,l.y,a),c=l.numPoints||1,p=c,f=0,d=h;f<d.length;f+=1){var g=u.points[d[f]];g.zoom>t&&(p+=g.numPoints||1);}if(p>=n){for(var v=l.x*c,m=l.y*c,y=o&&c>1?this._map(l,!0):null,x=(s<<5)+(t+1)+this.points.length,w=0,S=h;w<S.length;w+=1){var I=u.points[S[w]];if(!(I.zoom<=t)){I.zoom=t;var M=I.numPoints||1;v+=I.x*M,m+=I.y*M,I.parentId=x,o&&(y||(y=this._map(l,!0)),o(y,this._map(I)));}}l.parentId=x,r.push(Z(v/p,m/p,x,p,y));}else if(r.push(l),p>1)for(var b=0,_=h;b<_.length;b+=1){var k=u.points[_[b]];k.zoom<=t||(k.zoom=t,r.push(k));}}}return r},J.prototype._getOriginId=function(e){return e-this.points.length>>5},J.prototype._getOriginZoom=function(e){return (e-this.points.length)%32},J.prototype._map=function(e,t){if(e.numPoints)return t?V({},e.properties):e.properties;var r=this.points[e.index].properties,i=this.options.map(r);return t&&i===r?V({},i):i},me.prototype.options={maxZoom:14,indexMaxZoom:5,indexMaxPoints:1e5,tolerance:3,extent:4096,buffer:64,lineMetrics:!1,promoteId:null,generateId:!1,debug:0},me.prototype.splitTile=function(e,t,r,i,o,n,a){for(var s=[e,t,r,i],l=this.options,u=l.debug;s.length;){i=s.pop(),r=s.pop(),t=s.pop(),e=s.pop();var h=1<<t,c=ye(t,r,i),p=this.tiles[c];if(!p&&(u>1&&console.time(\"creation\"),p=this.tiles[c]=de(e,t,r,i,l),this.tileCoords.push({z:t,x:r,y:i}),u)){u>1&&(console.log(\"tile z%d-%d-%d (features: %d, points: %d, simplified: %d)\",t,r,i,p.numFeatures,p.numPoints,p.numSimplified),console.timeEnd(\"creation\"));var f=\"z\"+t;this.stats[f]=(this.stats[f]||0)+1,this.total++;}if(p.source=e,o){if(t===l.maxZoom||t===o)continue;var d=1<<o-t;if(r!==Math.floor(n/d)||i!==Math.floor(a/d))continue}else if(t===l.indexMaxZoom||p.numPoints<=l.indexMaxPoints)continue;if(p.source=null,0!==e.length){u>1&&console.time(\"clipping\");var g,v,m,y,x,w,S=.5*l.buffer/l.extent,I=.5-S,M=.5+S,b=1+S;g=v=m=y=null,x=re(e,h,r-S,r+M,0,p.minX,p.maxX,l),w=re(e,h,r+I,r+b,0,p.minX,p.maxX,l),e=null,x&&(g=re(x,h,i-S,i+M,1,p.minY,p.maxY,l),v=re(x,h,i+I,i+b,1,p.minY,p.maxY,l),x=null),w&&(m=re(w,h,i-S,i+M,1,p.minY,p.maxY,l),y=re(w,h,i+I,i+b,1,p.minY,p.maxY,l),w=null),u>1&&console.timeEnd(\"clipping\"),s.push(g||[],t+1,2*r,2*i),s.push(v||[],t+1,2*r,2*i+1),s.push(m||[],t+1,2*r+1,2*i),s.push(y||[],t+1,2*r+1,2*i+1);}}},me.prototype.getTile=function(e,t,r){var i=this.options,o=i.extent,n=i.debug;if(e<0||e>24)return null;var a=1<<e,s=ye(e,t=(t%a+a)%a,r);if(this.tiles[s])return pe(this.tiles[s],o);n>1&&console.log(\"drilling down to z%d-%d-%d\",e,t,r);for(var l,u=e,h=t,c=r;!l&&u>0;)u--,h=Math.floor(h/2),c=Math.floor(c/2),l=this.tiles[ye(u,h,c)];return l&&l.source?(n>1&&console.log(\"found parent tile z%d-%d-%d\",u,h,c),n>1&&console.time(\"drilling down\"),this.splitTile(l.source,u,h,c,e,t,r),n>1&&console.timeEnd(\"drilling down\"),this.tiles[s]?pe(this.tiles[s],o):null):null};var we=function(t){function r(e,r,i,o){t.call(this,e,r,i,xe),o&&(this.loadGeoJSON=o);}return t&&(r.__proto__=t),(r.prototype=Object.create(t&&t.prototype)).constructor=r,r.prototype.loadData=function(e,t){this._pendingCallback&&this._pendingCallback(null,{abandoned:!0}),this._pendingCallback=t,this._pendingLoadDataParams=e,this._state&&\"Idle\"!==this._state?this._state=\"NeedsLoadData\":(this._state=\"Coalescing\",this._loadData());},r.prototype._loadData=function(){var t=this;if(this._pendingCallback&&this._pendingLoadDataParams){var r=this._pendingCallback,i=this._pendingLoadDataParams;delete this._pendingCallback,delete this._pendingLoadDataParams;var o=!!(i&&i.request&&i.request.collectResourceTiming)&&new e.RequestPerformance(i.request);this.loadGeoJSON(i,(function(n,a){if(n||!a)return r(n);if(\"object\"!=typeof a)return r(new Error(\"Input data given to '\"+i.source+\"' is not a valid GeoJSON object.\"));!function e(t,r){var i,o=t&&t.type;if(\"FeatureCollection\"===o)for(i=0;i<t.features.length;i++)e(t.features[i],r);else if(\"GeometryCollection\"===o)for(i=0;i<t.geometries.length;i++)e(t.geometries[i],r);else if(\"Feature\"===o)e(t.geometry,r);else if(\"Polygon\"===o)c(t.coordinates,r);else if(\"MultiPolygon\"===o)for(i=0;i<t.coordinates.length;i++)c(t.coordinates[i],r);return t}(a,!0);try{if(i.filter){var s=e.createExpression(i.filter,{type:\"boolean\",\"property-type\":\"data-driven\",overridable:!1,transition:!1});if(\"error\"===s.result)throw new Error(s.value.map((function(e){return e.key+\": \"+e.message})).join(\", \"));var l=a.features.filter((function(e){return s.value.evaluate({zoom:0},e)}));a={type:\"FeatureCollection\",features:l};}t._geoJSONIndex=i.cluster?new J(function(t){var r=t.superclusterOptions,i=t.clusterProperties;if(!i||!r)return r;for(var o={},n={},a={accumulated:null,zoom:0},s={properties:null},l=Object.keys(i),u=0,h=l;u<h.length;u+=1){var c=h[u],p=i[c],f=p[0],d=e.createExpression(p[1]),g=e.createExpression(\"string\"==typeof f?[f,[\"accumulated\"],[\"get\",c]]:f);o[c]=d.value,n[c]=g.value;}return r.map=function(e){s.properties=e;for(var t={},r=0,i=l;r<i.length;r+=1){var n=i[r];t[n]=o[n].evaluate(a,s);}return t},r.reduce=function(e,t){s.properties=t;for(var r=0,i=l;r<i.length;r+=1){var o=i[r];a.accumulated=e[o],e[o]=n[o].evaluate(a,s);}},r}(i)).load(a.features):function(e,t){return new me(e,t)}(a,i.geojsonVtOptions);}catch(n){return r(n)}t.loaded={};var u={};if(o){var h=o.finish();h&&(u.resourceTiming={},u.resourceTiming[i.source]=JSON.parse(JSON.stringify(h)));}r(null,u);}));}},r.prototype.coalesce=function(){\"Coalescing\"===this._state?this._state=\"Idle\":\"NeedsLoadData\"===this._state&&(this._state=\"Coalescing\",this._loadData());},r.prototype.reloadTile=function(e,r){var i=this.loaded;return i&&i[e.uid]?t.prototype.reloadTile.call(this,e,r):this.loadTile(e,r)},r.prototype.loadGeoJSON=function(t,r){if(t.request)e.getJSON(t.request,r);else {if(\"string\"!=typeof t.data)return r(new Error(\"Input data given to '\"+t.source+\"' is not a valid GeoJSON object.\"));try{return r(null,JSON.parse(t.data))}catch(e){return r(new Error(\"Input data given to '\"+t.source+\"' is not a valid GeoJSON object.\"))}}},r.prototype.removeSource=function(e,t){this._pendingCallback&&this._pendingCallback(null,{abandoned:!0}),t();},r.prototype.getClusterExpansionZoom=function(e,t){try{t(null,this._geoJSONIndex.getClusterExpansionZoom(e.clusterId));}catch(e){t(e);}},r.prototype.getClusterChildren=function(e,t){try{t(null,this._geoJSONIndex.getChildren(e.clusterId));}catch(e){t(e);}},r.prototype.getClusterLeaves=function(e,t){try{t(null,this._geoJSONIndex.getLeaves(e.clusterId,e.limit,e.offset));}catch(e){t(e);}},r}(l),Se=function(t){var r=this;this.self=t,this.actor=new e.Actor(t,this),this.layerIndexes={},this.availableImages={},this.workerSourceTypes={vector:l,geojson:we},this.workerSources={},this.demWorkerSources={},this.self.registerWorkerSource=function(e,t){if(r.workerSourceTypes[e])throw new Error('Worker source with name \"'+e+'\" already registered.');r.workerSourceTypes[e]=t;},this.self.registerRTLTextPlugin=function(t){if(e.plugin.isParsed())throw new Error(\"RTL text plugin already registered.\");e.plugin.applyArabicShaping=t.applyArabicShaping,e.plugin.processBidirectionalText=t.processBidirectionalText,e.plugin.processStyledBidirectionalText=t.processStyledBidirectionalText;};};return Se.prototype.setReferrer=function(e,t){this.referrer=t;},Se.prototype.setImages=function(e,t,r){for(var i in this.availableImages[e]=t,this.workerSources[e]){var o=this.workerSources[e][i];for(var n in o)o[n].availableImages=t;}r();},Se.prototype.setLayers=function(e,t,r){this.getLayerIndex(e).replace(t),r();},Se.prototype.updateLayers=function(e,t,r){this.getLayerIndex(e).update(t.layers,t.removedIds),r();},Se.prototype.loadTile=function(e,t,r){this.getWorkerSource(e,t.type,t.source).loadTile(t,r);},Se.prototype.loadDEMTile=function(e,t,r){this.getDEMWorkerSource(e,t.source).loadTile(t,r);},Se.prototype.reloadTile=function(e,t,r){this.getWorkerSource(e,t.type,t.source).reloadTile(t,r);},Se.prototype.abortTile=function(e,t,r){this.getWorkerSource(e,t.type,t.source).abortTile(t,r);},Se.prototype.removeTile=function(e,t,r){this.getWorkerSource(e,t.type,t.source).removeTile(t,r);},Se.prototype.removeDEMTile=function(e,t){this.getDEMWorkerSource(e,t.source).removeTile(t);},Se.prototype.removeSource=function(e,t,r){if(this.workerSources[e]&&this.workerSources[e][t.type]&&this.workerSources[e][t.type][t.source]){var i=this.workerSources[e][t.type][t.source];delete this.workerSources[e][t.type][t.source],void 0!==i.removeSource?i.removeSource(t,r):r();}},Se.prototype.loadWorkerSource=function(e,t,r){try{this.self.importScripts(t.url),r();}catch(e){r(e.toString());}},Se.prototype.syncRTLPluginState=function(t,r,i){try{e.plugin.setState(r);var o=e.plugin.getPluginURL();if(e.plugin.isLoaded()&&!e.plugin.isParsed()&&null!=o){this.self.importScripts(o);var n=e.plugin.isParsed();i(n?void 0:new Error(\"RTL Text Plugin failed to import scripts from \"+o),n);}}catch(e){i(e.toString());}},Se.prototype.getAvailableImages=function(e){var t=this.availableImages[e];return t||(t=[]),t},Se.prototype.getLayerIndex=function(e){var t=this.layerIndexes[e];return t||(t=this.layerIndexes[e]=new i),t},Se.prototype.getWorkerSource=function(e,t,r){var i=this;return this.workerSources[e]||(this.workerSources[e]={}),this.workerSources[e][t]||(this.workerSources[e][t]={}),this.workerSources[e][t][r]||(this.workerSources[e][t][r]=new this.workerSourceTypes[t]({send:function(t,r,o){i.actor.send(t,r,o,e);}},this.getLayerIndex(e),this.getAvailableImages(e))),this.workerSources[e][t][r]},Se.prototype.getDEMWorkerSource=function(e,t){return this.demWorkerSources[e]||(this.demWorkerSources[e]={}),this.demWorkerSources[e][t]||(this.demWorkerSources[e][t]=new h),this.demWorkerSources[e][t]},Se.prototype.enforceCacheSizeLimit=function(t,r){e.enforceCacheSizeLimit(r);},\"undefined\"!=typeof WorkerGlobalScope&&\"undefined\"!=typeof self&&self instanceof WorkerGlobalScope&&(self.worker=new Se(self)),Se}));\n\ndefine([\"./shared\"],(function(t){\"use strict\";var e=t.createCommonjsModule((function(t){function e(t){return !i(t)}function i(t){return \"undefined\"==typeof window||\"undefined\"==typeof document?\"not a browser\":Array.prototype&&Array.prototype.every&&Array.prototype.filter&&Array.prototype.forEach&&Array.prototype.indexOf&&Array.prototype.lastIndexOf&&Array.prototype.map&&Array.prototype.some&&Array.prototype.reduce&&Array.prototype.reduceRight&&Array.isArray?Function.prototype&&Function.prototype.bind?Object.keys&&Object.create&&Object.getPrototypeOf&&Object.getOwnPropertyNames&&Object.isSealed&&Object.isFrozen&&Object.isExtensible&&Object.getOwnPropertyDescriptor&&Object.defineProperty&&Object.defineProperties&&Object.seal&&Object.freeze&&Object.preventExtensions?\"JSON\"in window&&\"parse\"in JSON&&\"stringify\"in JSON?function(){if(!(\"Worker\"in window&&\"Blob\"in window&&\"URL\"in window))return !1;var t,e,i=new Blob([\"\"],{type:\"text/javascript\"}),o=URL.createObjectURL(i);try{e=new Worker(o),t=!0;}catch(e){t=!1;}return e&&e.terminate(),URL.revokeObjectURL(o),t}()?\"Uint8ClampedArray\"in window?ArrayBuffer.isView?function(){var t=document.createElement(\"canvas\");t.width=t.height=1;var e=t.getContext(\"2d\");if(!e)return !1;var i=e.getImageData(0,0,1,1);return i&&i.width===t.width}()?(void 0===o[i=t&&t.failIfMajorPerformanceCaveat]&&(o[i]=function(t){var i=function(t){var i=document.createElement(\"canvas\"),o=Object.create(e.webGLContextAttributes);return o.failIfMajorPerformanceCaveat=t,i.probablySupportsContext?i.probablySupportsContext(\"webgl\",o)||i.probablySupportsContext(\"experimental-webgl\",o):i.supportsContext?i.supportsContext(\"webgl\",o)||i.supportsContext(\"experimental-webgl\",o):i.getContext(\"webgl\",o)||i.getContext(\"experimental-webgl\",o)}(t);if(!i)return !1;var o=i.createShader(i.VERTEX_SHADER);return !(!o||i.isContextLost())&&(i.shaderSource(o,\"void main() {}\"),i.compileShader(o),!0===i.getShaderParameter(o,i.COMPILE_STATUS))}(i)),o[i]?void 0:\"insufficient WebGL support\"):\"insufficient Canvas/getImageData support\":\"insufficient ArrayBuffer support\":\"insufficient Uint8ClampedArray support\":\"insufficient worker support\":\"insufficient JSON support\":\"insufficient Object support\":\"insufficient Function support\":\"insufficent Array support\";var i;}t.exports?t.exports=e:window&&(window.mapboxgl=window.mapboxgl||{},window.mapboxgl.supported=e,window.mapboxgl.notSupportedReason=i);var o={};e.webGLContextAttributes={antialias:!1,alpha:!0,stencil:!0,depth:!0};})),i={create:function(e,i,o){var r=t.window.document.createElement(e);return void 0!==i&&(r.className=i),o&&o.appendChild(r),r},createNS:function(e,i){return t.window.document.createElementNS(e,i)}},o=t.window.document&&t.window.document.documentElement.style;function r(t){if(!o)return t[0];for(var e=0;e<t.length;e++)if(t[e]in o)return t[e];return t[0]}var a,n=r([\"userSelect\",\"MozUserSelect\",\"WebkitUserSelect\",\"msUserSelect\"]);i.disableDrag=function(){o&&n&&(a=o[n],o[n]=\"none\");},i.enableDrag=function(){o&&n&&(o[n]=a);};var s=r([\"transform\",\"WebkitTransform\"]);i.setTransform=function(t,e){t.style[s]=e;};var l=!1;try{var c=Object.defineProperty({},\"passive\",{get:function(){l=!0;}});t.window.addEventListener(\"test\",c,c),t.window.removeEventListener(\"test\",c,c);}catch(t){l=!1;}i.addEventListener=function(t,e,i,o){void 0===o&&(o={}),t.addEventListener(e,i,\"passive\"in o&&l?o:o.capture);},i.removeEventListener=function(t,e,i,o){void 0===o&&(o={}),t.removeEventListener(e,i,\"passive\"in o&&l?o:o.capture);};var u=function(e){e.preventDefault(),e.stopPropagation(),t.window.removeEventListener(\"click\",u,!0);};function h(t){var e=t.userImage;return !!(e&&e.render&&e.render())&&(t.data.replace(new Uint8Array(e.data.buffer)),!0)}i.suppressClick=function(){t.window.addEventListener(\"click\",u,!0),t.window.setTimeout((function(){t.window.removeEventListener(\"click\",u,!0);}),0);},i.mousePos=function(e,i){var o=e.getBoundingClientRect();return new t.Point(i.clientX-o.left-e.clientLeft,i.clientY-o.top-e.clientTop)},i.touchPos=function(e,i){for(var o=e.getBoundingClientRect(),r=[],a=0;a<i.length;a++)r.push(new t.Point(i[a].clientX-o.left-e.clientLeft,i[a].clientY-o.top-e.clientTop));return r},i.mouseButton=function(e){return void 0!==t.window.InstallTrigger&&2===e.button&&e.ctrlKey&&t.window.navigator.platform.toUpperCase().indexOf(\"MAC\")>=0?0:e.button},i.remove=function(t){t.parentNode&&t.parentNode.removeChild(t);};var p=function(e){function i(){e.call(this),this.images={},this.updatedImages={},this.callbackDispatchedThisFrame={},this.loaded=!1,this.requestors=[],this.patterns={},this.atlasImage=new t.RGBAImage({width:1,height:1}),this.dirty=!0;}return e&&(i.__proto__=e),(i.prototype=Object.create(e&&e.prototype)).constructor=i,i.prototype.isLoaded=function(){return this.loaded},i.prototype.setLoaded=function(t){if(this.loaded!==t&&(this.loaded=t,t)){for(var e=0,i=this.requestors;e<i.length;e+=1){var o=i[e];this._notify(o.ids,o.callback);}this.requestors=[];}},i.prototype.getImage=function(t){return this.images[t]},i.prototype.addImage=function(t,e){this._validate(t,e)&&(this.images[t]=e);},i.prototype._validate=function(e,i){var o=!0;return this._validateStretch(i.stretchX,i.data&&i.data.width)||(this.fire(new t.ErrorEvent(new Error('Image \"'+e+'\" has invalid \"stretchX\" value'))),o=!1),this._validateStretch(i.stretchY,i.data&&i.data.height)||(this.fire(new t.ErrorEvent(new Error('Image \"'+e+'\" has invalid \"stretchY\" value'))),o=!1),this._validateContent(i.content,i)||(this.fire(new t.ErrorEvent(new Error('Image \"'+e+'\" has invalid \"content\" value'))),o=!1),o},i.prototype._validateStretch=function(t,e){if(!t)return !0;for(var i=0,o=0,r=t;o<r.length;o+=1){var a=r[o];if(a[0]<i||a[1]<a[0]||e<a[1])return !1;i=a[1];}return !0},i.prototype._validateContent=function(t,e){return !(t&&(4!==t.length||t[0]<0||e.data.width<t[0]||t[1]<0||e.data.height<t[1]||t[2]<0||e.data.width<t[2]||t[3]<0||e.data.height<t[3]||t[2]<t[0]||t[3]<t[1]))},i.prototype.updateImage=function(t,e){e.version=this.images[t].version+1,this.images[t]=e,this.updatedImages[t]=!0;},i.prototype.removeImage=function(t){var e=this.images[t];delete this.images[t],delete this.patterns[t],e.userImage&&e.userImage.onRemove&&e.userImage.onRemove();},i.prototype.listImages=function(){return Object.keys(this.images)},i.prototype.getImages=function(t,e){var i=!0;if(!this.isLoaded())for(var o=0,r=t;o<r.length;o+=1)this.images[r[o]]||(i=!1);this.isLoaded()||i?this._notify(t,e):this.requestors.push({ids:t,callback:e});},i.prototype._notify=function(e,i){for(var o={},r=0,a=e;r<a.length;r+=1){var n=a[r];this.images[n]||this.fire(new t.Event(\"styleimagemissing\",{id:n}));var s=this.images[n];s?o[n]={data:s.data.clone(),pixelRatio:s.pixelRatio,sdf:s.sdf,version:s.version,stretchX:s.stretchX,stretchY:s.stretchY,content:s.content,hasRenderCallback:Boolean(s.userImage&&s.userImage.render)}:t.warnOnce('Image \"'+n+'\" could not be loaded. Please make sure you have added the image with map.addImage() or a \"sprite\" property in your style. You can provide missing images by listening for the \"styleimagemissing\" map event.');}i(null,o);},i.prototype.getPixelSize=function(){var t=this.atlasImage;return {width:t.width,height:t.height}},i.prototype.getPattern=function(e){var i=this.patterns[e],o=this.getImage(e);if(!o)return null;if(i&&i.position.version===o.version)return i.position;if(i)i.position.version=o.version;else {var r={w:o.data.width+2,h:o.data.height+2,x:0,y:0},a=new t.ImagePosition(r,o);this.patterns[e]={bin:r,position:a};}return this._updatePatternAtlas(),this.patterns[e].position},i.prototype.bind=function(e){var i=e.gl;this.atlasTexture?this.dirty&&(this.atlasTexture.update(this.atlasImage),this.dirty=!1):this.atlasTexture=new t.Texture(e,this.atlasImage,i.RGBA),this.atlasTexture.bind(i.LINEAR,i.CLAMP_TO_EDGE);},i.prototype._updatePatternAtlas=function(){var e=[];for(var i in this.patterns)e.push(this.patterns[i].bin);var o=t.potpack(e),r=o.w,a=o.h,n=this.atlasImage;for(var s in n.resize({width:r||1,height:a||1}),this.patterns){var l=this.patterns[s].bin,c=l.x+1,u=l.y+1,h=this.images[s].data,p=h.width,d=h.height;t.RGBAImage.copy(h,n,{x:0,y:0},{x:c,y:u},{width:p,height:d}),t.RGBAImage.copy(h,n,{x:0,y:d-1},{x:c,y:u-1},{width:p,height:1}),t.RGBAImage.copy(h,n,{x:0,y:0},{x:c,y:u+d},{width:p,height:1}),t.RGBAImage.copy(h,n,{x:p-1,y:0},{x:c-1,y:u},{width:1,height:d}),t.RGBAImage.copy(h,n,{x:0,y:0},{x:c+p,y:u},{width:1,height:d});}this.dirty=!0;},i.prototype.beginFrame=function(){this.callbackDispatchedThisFrame={};},i.prototype.dispatchRenderCallbacks=function(t){for(var e=0,i=t;e<i.length;e+=1){var o=i[e];if(!this.callbackDispatchedThisFrame[o]){this.callbackDispatchedThisFrame[o]=!0;var r=this.images[o];h(r)&&this.updateImage(o,r);}}},i}(t.Evented),d=m,_=m,f=1e20;function m(t,e,i,o,r,a){this.fontSize=t||24,this.buffer=void 0===e?3:e,this.cutoff=o||.25,this.fontFamily=r||\"sans-serif\",this.fontWeight=a||\"normal\",this.radius=i||8;var n=this.size=this.fontSize+2*this.buffer;this.canvas=document.createElement(\"canvas\"),this.canvas.width=this.canvas.height=n,this.ctx=this.canvas.getContext(\"2d\"),this.ctx.font=this.fontWeight+\" \"+this.fontSize+\"px \"+this.fontFamily,this.ctx.textBaseline=\"middle\",this.ctx.fillStyle=\"black\",this.gridOuter=new Float64Array(n*n),this.gridInner=new Float64Array(n*n),this.f=new Float64Array(n),this.d=new Float64Array(n),this.z=new Float64Array(n+1),this.v=new Int16Array(n),this.middle=Math.round(n/2*(navigator.userAgent.indexOf(\"Gecko/\")>=0?1.2:1));}function g(t,e,i,o,r,a,n){for(var s=0;s<e;s++){for(var l=0;l<i;l++)o[l]=t[l*e+s];for(v(o,r,a,n,i),l=0;l<i;l++)t[l*e+s]=r[l];}for(l=0;l<i;l++){for(s=0;s<e;s++)o[s]=t[l*e+s];for(v(o,r,a,n,e),s=0;s<e;s++)t[l*e+s]=Math.sqrt(r[s]);}}function v(t,e,i,o,r){i[0]=0,o[0]=-f,o[1]=+f;for(var a=1,n=0;a<r;a++){for(var s=(t[a]+a*a-(t[i[n]]+i[n]*i[n]))/(2*a-2*i[n]);s<=o[n];)n--,s=(t[a]+a*a-(t[i[n]]+i[n]*i[n]))/(2*a-2*i[n]);i[++n]=a,o[n]=s,o[n+1]=+f;}for(a=0,n=0;a<r;a++){for(;o[n+1]<a;)n++;e[a]=(a-i[n])*(a-i[n])+t[i[n]];}}m.prototype.draw=function(t){this.ctx.clearRect(0,0,this.size,this.size),this.ctx.fillText(t,this.buffer,this.middle);for(var e=this.ctx.getImageData(0,0,this.size,this.size),i=new Uint8ClampedArray(this.size*this.size),o=0;o<this.size*this.size;o++){var r=e.data[4*o+3]/255;this.gridOuter[o]=1===r?0:0===r?f:Math.pow(Math.max(0,.5-r),2),this.gridInner[o]=1===r?f:0===r?0:Math.pow(Math.max(0,r-.5),2);}for(g(this.gridOuter,this.size,this.size,this.f,this.d,this.v,this.z),g(this.gridInner,this.size,this.size,this.f,this.d,this.v,this.z),o=0;o<this.size*this.size;o++)i[o]=Math.max(0,Math.min(255,Math.round(255-255*((this.gridOuter[o]-this.gridInner[o])/this.radius+this.cutoff))));return i},d.default=_;var y=function(t,e){this.requestManager=t,this.localIdeographFontFamily=e,this.entries={};};y.prototype.setURL=function(t){this.url=t;},y.prototype.getGlyphs=function(e,i){var o=this,r=[];for(var a in e)for(var n=0,s=e[a];n<s.length;n+=1)r.push({stack:a,id:s[n]});t.asyncAll(r,(function(t,e){var i=t.stack,r=t.id,a=o.entries[i];a||(a=o.entries[i]={glyphs:{},requests:{},ranges:{}});var n=a.glyphs[r];if(void 0===n){if(n=o._tinySDF(a,i,r))return a.glyphs[r]=n,void e(null,{stack:i,id:r,glyph:n});var s=Math.floor(r/256);if(256*s>65535)e(new Error(\"glyphs > 65535 not supported\"));else if(a.ranges[s])e(null,{stack:i,id:r,glyph:n});else {var l=a.requests[s];l||(l=a.requests[s]=[],y.loadGlyphRange(i,s,o.url,o.requestManager,(function(t,e){if(e){for(var i in e)o._doesCharSupportLocalGlyph(+i)||(a.glyphs[+i]=e[+i]);a.ranges[s]=!0;}for(var r=0,n=l;r<n.length;r+=1)(0,n[r])(t,e);delete a.requests[s];}))),l.push((function(t,o){t?e(t):o&&e(null,{stack:i,id:r,glyph:o[r]||null});}));}}else e(null,{stack:i,id:r,glyph:n});}),(function(t,e){if(t)i(t);else if(e){for(var o={},r=0,a=e;r<a.length;r+=1){var n=a[r],s=n.stack,l=n.id,c=n.glyph;(o[s]||(o[s]={}))[l]=c&&{id:c.id,bitmap:c.bitmap.clone(),metrics:c.metrics};}i(null,o);}}));},y.prototype._doesCharSupportLocalGlyph=function(e){return !!this.localIdeographFontFamily&&(t.isChar[\"CJK Unified Ideographs\"](e)||t.isChar[\"Hangul Syllables\"](e)||t.isChar.Hiragana(e)||t.isChar.Katakana(e))},y.prototype._tinySDF=function(e,i,o){var r=this.localIdeographFontFamily;if(r&&this._doesCharSupportLocalGlyph(o)){var a=e.tinySDF;if(!a){var n=\"400\";/bold/i.test(i)?n=\"900\":/medium/i.test(i)?n=\"500\":/light/i.test(i)&&(n=\"200\"),a=e.tinySDF=new y.TinySDF(24,3,8,.25,r,n);}return {id:o,bitmap:new t.AlphaImage({width:30,height:30},a.draw(String.fromCharCode(o))),metrics:{width:24,height:24,left:0,top:-8,advance:24}}}},y.loadGlyphRange=function(e,i,o,r,a){var n=256*i,s=n+255,l=r.transformRequest(r.normalizeGlyphsURL(o).replace(\"{fontstack}\",e).replace(\"{range}\",n+\"-\"+s),t.ResourceType.Glyphs);t.getArrayBuffer(l,(function(e,i){if(e)a(e);else if(i){for(var o={},r=0,n=t.parseGlyphPBF(i);r<n.length;r+=1){var s=n[r];o[s.id]=s;}a(null,o);}}));},y.TinySDF=d;var x=function(){this.specification=t.styleSpec.light.position;};x.prototype.possiblyEvaluate=function(e,i){return t.sphericalToCartesian(e.expression.evaluate(i))},x.prototype.interpolate=function(e,i,o){return {x:t.number(e.x,i.x,o),y:t.number(e.y,i.y,o),z:t.number(e.z,i.z,o)}};var b=new t.Properties({anchor:new t.DataConstantProperty(t.styleSpec.light.anchor),position:new x,color:new t.DataConstantProperty(t.styleSpec.light.color),intensity:new t.DataConstantProperty(t.styleSpec.light.intensity)}),w=function(e){function i(i){e.call(this),this._transitionable=new t.Transitionable(b),this.setLight(i),this._transitioning=this._transitionable.untransitioned();}return e&&(i.__proto__=e),(i.prototype=Object.create(e&&e.prototype)).constructor=i,i.prototype.getLight=function(){return this._transitionable.serialize()},i.prototype.setLight=function(e,i){if(void 0===i&&(i={}),!this._validate(t.validateLight,e,i))for(var o in e){var r=e[o];t.endsWith(o,\"-transition\")?this._transitionable.setTransition(o.slice(0,-\"-transition\".length),r):this._transitionable.setValue(o,r);}},i.prototype.updateTransitions=function(t){this._transitioning=this._transitionable.transitioned(t,this._transitioning);},i.prototype.hasTransition=function(){return this._transitioning.hasTransition()},i.prototype.recalculate=function(t){this.properties=this._transitioning.possiblyEvaluate(t);},i.prototype._validate=function(e,i,o){return (!o||!1!==o.validate)&&t.emitValidationErrors(this,e.call(t.validateStyle,t.extend({value:i,style:{glyphs:!0,sprite:!0},styleSpec:t.styleSpec})))},i}(t.Evented),T=function(t,e){this.width=t,this.height=e,this.nextRow=0,this.data=new Uint8Array(this.width*this.height),this.dashEntry={};};T.prototype.getDash=function(t,e){var i=t.join(\",\")+String(e);return this.dashEntry[i]||(this.dashEntry[i]=this.addDash(t,e)),this.dashEntry[i]},T.prototype.getDashRanges=function(t,e,i){var o=[],r=t.length%2==1?-t[t.length-1]*i:0,a=t[0]*i,n=!0;o.push({left:r,right:a,isDash:n,zeroLength:0===t[0]});for(var s=t[0],l=1;l<t.length;l++){var c=t[l];o.push({left:r=s*i,right:a=(s+=c)*i,isDash:n=!n,zeroLength:0===c});}return o},T.prototype.addRoundDash=function(t,e,i){for(var o=e/2,r=-i;r<=i;r++)for(var a=this.width*(this.nextRow+i+r),n=0,s=t[n],l=0;l<this.width;l++){l/s.right>1&&(s=t[++n]);var c=Math.abs(l-s.left),u=Math.abs(l-s.right),h=Math.min(c,u),p=void 0,d=r/i*(o+1);if(s.isDash){var _=o-Math.abs(d);p=Math.sqrt(h*h+_*_);}else p=o-Math.sqrt(h*h+d*d);this.data[a+l]=Math.max(0,Math.min(255,p+128));}},T.prototype.addRegularDash=function(t){for(var e=t.length-1;e>=0;--e){var i=t[e],o=t[e+1];i.zeroLength?t.splice(e,1):o&&o.isDash===i.isDash&&(o.left=i.left,t.splice(e,1));}var r=t[0],a=t[t.length-1];r.isDash===a.isDash&&(r.left=a.left-this.width,a.right=r.right+this.width);for(var n=this.width*this.nextRow,s=0,l=t[s],c=0;c<this.width;c++){c/l.right>1&&(l=t[++s]);var u=Math.abs(c-l.left),h=Math.abs(c-l.right),p=Math.min(u,h);this.data[n+c]=Math.max(0,Math.min(255,(l.isDash?p:-p)+128));}},T.prototype.addDash=function(e,i){var o=i?7:0,r=2*o+1;if(this.nextRow+r>this.height)return t.warnOnce(\"LineAtlas out of space\"),null;for(var a=0,n=0;n<e.length;n++)a+=e[n];if(0!==a){var s=this.width/a,l=this.getDashRanges(e,this.width,s);i?this.addRoundDash(l,s,o):this.addRegularDash(l);}var c={y:(this.nextRow+o+.5)/this.height,height:2*o/this.height,width:a};return this.nextRow+=r,this.dirty=!0,c},T.prototype.bind=function(t){var e=t.gl;this.texture?(e.bindTexture(e.TEXTURE_2D,this.texture),this.dirty&&(this.dirty=!1,e.texSubImage2D(e.TEXTURE_2D,0,0,0,this.width,this.height,e.ALPHA,e.UNSIGNED_BYTE,this.data))):(this.texture=e.createTexture(),e.bindTexture(e.TEXTURE_2D,this.texture),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.REPEAT),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.REPEAT),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MIN_FILTER,e.LINEAR),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MAG_FILTER,e.LINEAR),e.texImage2D(e.TEXTURE_2D,0,e.ALPHA,this.width,this.height,0,e.ALPHA,e.UNSIGNED_BYTE,this.data));};var E=function e(i,o){this.workerPool=i,this.actors=[],this.currentActor=0,this.id=t.uniqueId();for(var r=this.workerPool.acquire(this.id),a=0;a<r.length;a++){var n=new e.Actor(r[a],o,this.id);n.name=\"Worker \"+a,this.actors.push(n);}};function I(e,i,o){var r=function(r,a){if(r)return o(r);if(a){var n=t.pick(t.extend(a,e),[\"tiles\",\"minzoom\",\"maxzoom\",\"attribution\",\"mapbox_logo\",\"bounds\",\"scheme\",\"tileSize\",\"encoding\"]);a.vector_layers&&(n.vectorLayers=a.vector_layers,n.vectorLayerIds=n.vectorLayers.map((function(t){return t.id}))),n.tiles=i.canonicalizeTileset(n,e.url),o(null,n);}};return e.url?t.getJSON(i.transformRequest(i.normalizeSourceURL(e.url),t.ResourceType.Source),r):t.browser.frame((function(){return r(null,e)}))}E.prototype.broadcast=function(e,i,o){t.asyncAll(this.actors,(function(t,o){t.send(e,i,o);}),o=o||function(){});},E.prototype.getActor=function(){return this.currentActor=(this.currentActor+1)%this.actors.length,this.actors[this.currentActor]},E.prototype.remove=function(){this.actors.forEach((function(t){t.remove();})),this.actors=[],this.workerPool.release(this.id);},E.Actor=t.Actor;var P=function(e,i,o){this.bounds=t.LngLatBounds.convert(this.validateBounds(e)),this.minzoom=i||0,this.maxzoom=o||24;};P.prototype.validateBounds=function(t){return Array.isArray(t)&&4===t.length?[Math.max(-180,t[0]),Math.max(-90,t[1]),Math.min(180,t[2]),Math.min(90,t[3])]:[-180,-90,180,90]},P.prototype.contains=function(e){var i=Math.pow(2,e.z),o=Math.floor(t.mercatorXfromLng(this.bounds.getWest())*i),r=Math.floor(t.mercatorYfromLat(this.bounds.getNorth())*i),a=Math.ceil(t.mercatorXfromLng(this.bounds.getEast())*i),n=Math.ceil(t.mercatorYfromLat(this.bounds.getSouth())*i);return e.x>=o&&e.x<a&&e.y>=r&&e.y<n};var S=function(e){function i(i,o,r,a){if(e.call(this),this.id=i,this.dispatcher=r,this.type=\"vector\",this.minzoom=0,this.maxzoom=22,this.scheme=\"xyz\",this.tileSize=512,this.reparseOverscaled=!0,this.isTileClipped=!0,this._loaded=!1,t.extend(this,t.pick(o,[\"url\",\"scheme\",\"tileSize\",\"promoteId\"])),this._options=t.extend({type:\"vector\"},o),this._collectResourceTiming=o.collectResourceTiming,512!==this.tileSize)throw new Error(\"vector tile sources must have a tileSize of 512\");this.setEventedParent(a);}return e&&(i.__proto__=e),(i.prototype=Object.create(e&&e.prototype)).constructor=i,i.prototype.load=function(){var e=this;this._loaded=!1,this.fire(new t.Event(\"dataloading\",{dataType:\"source\"})),this._tileJSONRequest=I(this._options,this.map._requestManager,(function(i,o){e._tileJSONRequest=null,e._loaded=!0,i?e.fire(new t.ErrorEvent(i)):o&&(t.extend(e,o),o.bounds&&(e.tileBounds=new P(o.bounds,e.minzoom,e.maxzoom)),t.postTurnstileEvent(o.tiles,e.map._requestManager._customAccessToken),t.postMapLoadEvent(o.tiles,e.map._getMapId(),e.map._requestManager._skuToken,e.map._requestManager._customAccessToken),e.fire(new t.Event(\"data\",{dataType:\"source\",sourceDataType:\"metadata\"})),e.fire(new t.Event(\"data\",{dataType:\"source\",sourceDataType:\"content\"})));}));},i.prototype.loaded=function(){return this._loaded},i.prototype.hasTile=function(t){return !this.tileBounds||this.tileBounds.contains(t.canonical)},i.prototype.onAdd=function(t){this.map=t,this.load();},i.prototype.setSourceProperty=function(t){this._tileJSONRequest&&this._tileJSONRequest.cancel(),t(),this.map.style.sourceCaches[this.id].clearTiles(),this.load();},i.prototype.setTiles=function(t){var e=this;return this.setSourceProperty((function(){e._options.tiles=t;})),this},i.prototype.setUrl=function(t){var e=this;return this.setSourceProperty((function(){e.url=t,e._options.url=t;})),this},i.prototype.onRemove=function(){this._tileJSONRequest&&(this._tileJSONRequest.cancel(),this._tileJSONRequest=null);},i.prototype.serialize=function(){return t.extend({},this._options)},i.prototype.loadTile=function(e,i){var o=this.map._requestManager.normalizeTileURL(e.tileID.canonical.url(this.tiles,this.scheme)),r={request:this.map._requestManager.transformRequest(o,t.ResourceType.Tile),uid:e.uid,tileID:e.tileID,zoom:e.tileID.overscaledZ,tileSize:this.tileSize*e.tileID.overscaleFactor(),type:this.type,source:this.id,pixelRatio:t.browser.devicePixelRatio,showCollisionBoxes:this.map.showCollisionBoxes,promoteId:this.promoteId};function a(o,r){return delete e.request,e.aborted?i(null):o&&404!==o.status?i(o):(r&&r.resourceTiming&&(e.resourceTiming=r.resourceTiming),this.map._refreshExpiredTiles&&r&&e.setExpiryData(r),e.loadVectorData(r,this.map.painter),t.cacheEntryPossiblyAdded(this.dispatcher),i(null),void(e.reloadCallback&&(this.loadTile(e,e.reloadCallback),e.reloadCallback=null)))}r.request.collectResourceTiming=this._collectResourceTiming,e.actor&&\"expired\"!==e.state?\"loading\"===e.state?e.reloadCallback=i:e.request=e.actor.send(\"reloadTile\",r,a.bind(this)):(e.actor=this.dispatcher.getActor(),e.request=e.actor.send(\"loadTile\",r,a.bind(this)));},i.prototype.abortTile=function(t){t.request&&(t.request.cancel(),delete t.request),t.actor&&t.actor.send(\"abortTile\",{uid:t.uid,type:this.type,source:this.id},void 0);},i.prototype.unloadTile=function(t){t.unloadVectorData(),t.actor&&t.actor.send(\"removeTile\",{uid:t.uid,type:this.type,source:this.id},void 0);},i.prototype.hasTransition=function(){return !1},i}(t.Evented),C=function(e){function i(i,o,r,a){e.call(this),this.id=i,this.dispatcher=r,this.setEventedParent(a),this.type=\"raster\",this.minzoom=0,this.maxzoom=22,this.roundZoom=!0,this.scheme=\"xyz\",this.tileSize=512,this._loaded=!1,this._options=t.extend({type:\"raster\"},o),t.extend(this,t.pick(o,[\"url\",\"scheme\",\"tileSize\"]));}return e&&(i.__proto__=e),(i.prototype=Object.create(e&&e.prototype)).constructor=i,i.prototype.load=function(){var e=this;this._loaded=!1,this.fire(new t.Event(\"dataloading\",{dataType:\"source\"})),this._tileJSONRequest=I(this._options,this.map._requestManager,(function(i,o){e._tileJSONRequest=null,e._loaded=!0,i?e.fire(new t.ErrorEvent(i)):o&&(t.extend(e,o),o.bounds&&(e.tileBounds=new P(o.bounds,e.minzoom,e.maxzoom)),t.postTurnstileEvent(o.tiles),t.postMapLoadEvent(o.tiles,e.map._getMapId(),e.map._requestManager._skuToken),e.fire(new t.Event(\"data\",{dataType:\"source\",sourceDataType:\"metadata\"})),e.fire(new t.Event(\"data\",{dataType:\"source\",sourceDataType:\"content\"})));}));},i.prototype.loaded=function(){return this._loaded},i.prototype.onAdd=function(t){this.map=t,this.load();},i.prototype.onRemove=function(){this._tileJSONRequest&&(this._tileJSONRequest.cancel(),this._tileJSONRequest=null);},i.prototype.serialize=function(){return t.extend({},this._options)},i.prototype.hasTile=function(t){return !this.tileBounds||this.tileBounds.contains(t.canonical)},i.prototype.loadTile=function(e,i){var o=this,r=this.map._requestManager.normalizeTileURL(e.tileID.canonical.url(this.tiles,this.scheme),this.tileSize);e.request=t.getImage(this.map._requestManager.transformRequest(r,t.ResourceType.Tile),(function(r,a){if(delete e.request,e.aborted)e.state=\"unloaded\",i(null);else if(r)e.state=\"errored\",i(r);else if(a){o.map._refreshExpiredTiles&&e.setExpiryData(a),delete a.cacheControl,delete a.expires;var n=o.map.painter.context,s=n.gl;e.texture=o.map.painter.getTileTexture(a.width),e.texture?e.texture.update(a,{useMipmap:!0}):(e.texture=new t.Texture(n,a,s.RGBA,{useMipmap:!0}),e.texture.bind(s.LINEAR,s.CLAMP_TO_EDGE,s.LINEAR_MIPMAP_NEAREST),n.extTextureFilterAnisotropic&&s.texParameterf(s.TEXTURE_2D,n.extTextureFilterAnisotropic.TEXTURE_MAX_ANISOTROPY_EXT,n.extTextureFilterAnisotropicMax)),e.state=\"loaded\",t.cacheEntryPossiblyAdded(o.dispatcher),i(null);}}));},i.prototype.abortTile=function(t,e){t.request&&(t.request.cancel(),delete t.request),e();},i.prototype.unloadTile=function(t,e){t.texture&&this.map.painter.saveTileTexture(t.texture),e();},i.prototype.hasTransition=function(){return !1},i}(t.Evented),z=function(e){function i(i,o,r,a){e.call(this,i,o,r,a),this.type=\"raster-dem\",this.maxzoom=22,this._options=t.extend({type:\"raster-dem\"},o),this.encoding=o.encoding||\"mapbox\";}return e&&(i.__proto__=e),(i.prototype=Object.create(e&&e.prototype)).constructor=i,i.prototype.serialize=function(){return {type:\"raster-dem\",url:this.url,tileSize:this.tileSize,tiles:this.tiles,bounds:this.bounds,encoding:this.encoding}},i.prototype.loadTile=function(e,i){var o=this.map._requestManager.normalizeTileURL(e.tileID.canonical.url(this.tiles,this.scheme),this.tileSize);function r(t,o){t&&(e.state=\"errored\",i(t)),o&&(e.dem=o,e.needsHillshadePrepare=!0,e.state=\"loaded\",i(null));}e.request=t.getImage(this.map._requestManager.transformRequest(o,t.ResourceType.Tile),function(o,a){if(delete e.request,e.aborted)e.state=\"unloaded\",i(null);else if(o)e.state=\"errored\",i(o);else if(a){this.map._refreshExpiredTiles&&e.setExpiryData(a),delete a.cacheControl,delete a.expires;var n=t.window.ImageBitmap&&a instanceof t.window.ImageBitmap&&t.offscreenCanvasSupported()?a:t.browser.getImageData(a,1),s={uid:e.uid,coord:e.tileID,source:this.id,rawImageData:n,encoding:this.encoding};e.actor&&\"expired\"!==e.state||(e.actor=this.dispatcher.getActor(),e.actor.send(\"loadDEMTile\",s,r.bind(this)));}}.bind(this)),e.neighboringTiles=this._getNeighboringTiles(e.tileID);},i.prototype._getNeighboringTiles=function(e){var i=e.canonical,o=Math.pow(2,i.z),r=(i.x-1+o)%o,a=0===i.x?e.wrap-1:e.wrap,n=(i.x+1+o)%o,s=i.x+1===o?e.wrap+1:e.wrap,l={};return l[new t.OverscaledTileID(e.overscaledZ,a,i.z,r,i.y).key]={backfilled:!1},l[new t.OverscaledTileID(e.overscaledZ,s,i.z,n,i.y).key]={backfilled:!1},i.y>0&&(l[new t.OverscaledTileID(e.overscaledZ,a,i.z,r,i.y-1).key]={backfilled:!1},l[new t.OverscaledTileID(e.overscaledZ,e.wrap,i.z,i.x,i.y-1).key]={backfilled:!1},l[new t.OverscaledTileID(e.overscaledZ,s,i.z,n,i.y-1).key]={backfilled:!1}),i.y+1<o&&(l[new t.OverscaledTileID(e.overscaledZ,a,i.z,r,i.y+1).key]={backfilled:!1},l[new t.OverscaledTileID(e.overscaledZ,e.wrap,i.z,i.x,i.y+1).key]={backfilled:!1},l[new t.OverscaledTileID(e.overscaledZ,s,i.z,n,i.y+1).key]={backfilled:!1}),l},i.prototype.unloadTile=function(t){t.demTexture&&this.map.painter.saveTileTexture(t.demTexture),t.fbo&&(t.fbo.destroy(),delete t.fbo),t.dem&&delete t.dem,delete t.neighboringTiles,t.state=\"unloaded\",t.actor&&t.actor.send(\"removeDEMTile\",{uid:t.uid,source:this.id});},i}(C),D=function(e){function i(i,o,r,a){e.call(this),this.id=i,this.type=\"geojson\",this.minzoom=0,this.maxzoom=18,this.tileSize=512,this.isTileClipped=!0,this.reparseOverscaled=!0,this._removed=!1,this._loaded=!1,this.actor=r.getActor(),this.setEventedParent(a),this._data=o.data,this._options=t.extend({},o),this._collectResourceTiming=o.collectResourceTiming,this._resourceTiming=[],void 0!==o.maxzoom&&(this.maxzoom=o.maxzoom),o.type&&(this.type=o.type),o.attribution&&(this.attribution=o.attribution),this.promoteId=o.promoteId;var n=t.EXTENT/this.tileSize;this.workerOptions=t.extend({source:this.id,cluster:o.cluster||!1,geojsonVtOptions:{buffer:(void 0!==o.buffer?o.buffer:128)*n,tolerance:(void 0!==o.tolerance?o.tolerance:.375)*n,extent:t.EXTENT,maxZoom:this.maxzoom,lineMetrics:o.lineMetrics||!1,generateId:o.generateId||!1},superclusterOptions:{maxZoom:void 0!==o.clusterMaxZoom?Math.min(o.clusterMaxZoom,this.maxzoom-1):this.maxzoom-1,minPoints:Math.max(2,o.clusterMinPoints||2),extent:t.EXTENT,radius:(o.clusterRadius||50)*n,log:!1,generateId:o.generateId||!1},clusterProperties:o.clusterProperties,filter:o.filter},o.workerOptions);}return e&&(i.__proto__=e),(i.prototype=Object.create(e&&e.prototype)).constructor=i,i.prototype.load=function(){var e=this;this.fire(new t.Event(\"dataloading\",{dataType:\"source\"})),this._updateWorkerData((function(i){if(i)e.fire(new t.ErrorEvent(i));else {var o={dataType:\"source\",sourceDataType:\"metadata\"};e._collectResourceTiming&&e._resourceTiming&&e._resourceTiming.length>0&&(o.resourceTiming=e._resourceTiming,e._resourceTiming=[]),e.fire(new t.Event(\"data\",o));}}));},i.prototype.onAdd=function(t){this.map=t,this.load();},i.prototype.setData=function(e){var i=this;return this._data=e,this.fire(new t.Event(\"dataloading\",{dataType:\"source\"})),this._updateWorkerData((function(e){if(e)i.fire(new t.ErrorEvent(e));else {var o={dataType:\"source\",sourceDataType:\"content\"};i._collectResourceTiming&&i._resourceTiming&&i._resourceTiming.length>0&&(o.resourceTiming=i._resourceTiming,i._resourceTiming=[]),i.fire(new t.Event(\"data\",o));}})),this},i.prototype.getClusterExpansionZoom=function(t,e){return this.actor.send(\"geojson.getClusterExpansionZoom\",{clusterId:t,source:this.id},e),this},i.prototype.getClusterChildren=function(t,e){return this.actor.send(\"geojson.getClusterChildren\",{clusterId:t,source:this.id},e),this},i.prototype.getClusterLeaves=function(t,e,i,o){return this.actor.send(\"geojson.getClusterLeaves\",{source:this.id,clusterId:t,limit:e,offset:i},o),this},i.prototype._updateWorkerData=function(e){var i=this;this._loaded=!1;var o=t.extend({},this.workerOptions),r=this._data;\"string\"==typeof r?(o.request=this.map._requestManager.transformRequest(t.browser.resolveURL(r),t.ResourceType.Source),o.request.collectResourceTiming=this._collectResourceTiming):o.data=JSON.stringify(r),this.actor.send(this.type+\".loadData\",o,(function(t,r){i._removed||r&&r.abandoned||(i._loaded=!0,r&&r.resourceTiming&&r.resourceTiming[i.id]&&(i._resourceTiming=r.resourceTiming[i.id].slice(0)),i.actor.send(i.type+\".coalesce\",{source:o.source},null),e(t));}));},i.prototype.loaded=function(){return this._loaded},i.prototype.loadTile=function(e,i){var o=this,r=e.actor?\"reloadTile\":\"loadTile\";e.actor=this.actor,e.request=this.actor.send(r,{type:this.type,uid:e.uid,tileID:e.tileID,zoom:e.tileID.overscaledZ,maxZoom:this.maxzoom,tileSize:this.tileSize,source:this.id,pixelRatio:t.browser.devicePixelRatio,showCollisionBoxes:this.map.showCollisionBoxes,promoteId:this.promoteId},(function(t,a){return delete e.request,e.unloadVectorData(),e.aborted?i(null):t?i(t):(e.loadVectorData(a,o.map.painter,\"reloadTile\"===r),i(null))}));},i.prototype.abortTile=function(t){t.request&&(t.request.cancel(),delete t.request),t.aborted=!0;},i.prototype.unloadTile=function(t){t.unloadVectorData(),this.actor.send(\"removeTile\",{uid:t.uid,type:this.type,source:this.id});},i.prototype.onRemove=function(){this._removed=!0,this.actor.send(\"removeSource\",{type:this.type,source:this.id});},i.prototype.serialize=function(){return t.extend({},this._options,{type:this.type,data:this._data})},i.prototype.hasTransition=function(){return !1},i}(t.Evented),A=t.createLayout([{name:\"a_pos\",type:\"Int16\",components:2},{name:\"a_texture_pos\",type:\"Int16\",components:2}]),M=function(e){function i(t,i,o,r){e.call(this),this.id=t,this.dispatcher=o,this.coordinates=i.coordinates,this.type=\"image\",this.minzoom=0,this.maxzoom=22,this.tileSize=512,this.tiles={},this._loaded=!1,this.setEventedParent(r),this.options=i;}return e&&(i.__proto__=e),(i.prototype=Object.create(e&&e.prototype)).constructor=i,i.prototype.load=function(e,i){var o=this;this._loaded=!1,this.fire(new t.Event(\"dataloading\",{dataType:\"source\"})),this.url=this.options.url,t.getImage(this.map._requestManager.transformRequest(this.url,t.ResourceType.Image),(function(r,a){o._loaded=!0,r?o.fire(new t.ErrorEvent(r)):a&&(o.image=a,e&&(o.coordinates=e),i&&i(),o._finishLoading());}));},i.prototype.loaded=function(){return this._loaded},i.prototype.updateImage=function(t){var e=this;return this.image&&t.url?(this.options.url=t.url,this.load(t.coordinates,(function(){e.texture=null;})),this):this},i.prototype._finishLoading=function(){this.map&&(this.setCoordinates(this.coordinates),this.fire(new t.Event(\"data\",{dataType:\"source\",sourceDataType:\"metadata\"})));},i.prototype.onAdd=function(t){this.map=t,this.load();},i.prototype.setCoordinates=function(e){var i=this;this.coordinates=e;var o=e.map(t.MercatorCoordinate.fromLngLat);this.tileID=function(e){for(var i=1/0,o=1/0,r=-1/0,a=-1/0,n=0,s=e;n<s.length;n+=1){var l=s[n];i=Math.min(i,l.x),o=Math.min(o,l.y),r=Math.max(r,l.x),a=Math.max(a,l.y);}var c=Math.max(r-i,a-o),u=Math.max(0,Math.floor(-Math.log(c)/Math.LN2)),h=Math.pow(2,u);return new t.CanonicalTileID(u,Math.floor((i+r)/2*h),Math.floor((o+a)/2*h))}(o),this.minzoom=this.maxzoom=this.tileID.z;var r=o.map((function(t){return i.tileID.getTilePoint(t)._round()}));return this._boundsArray=new t.StructArrayLayout4i8,this._boundsArray.emplaceBack(r[0].x,r[0].y,0,0),this._boundsArray.emplaceBack(r[1].x,r[1].y,t.EXTENT,0),this._boundsArray.emplaceBack(r[3].x,r[3].y,0,t.EXTENT),this._boundsArray.emplaceBack(r[2].x,r[2].y,t.EXTENT,t.EXTENT),this.boundsBuffer&&(this.boundsBuffer.destroy(),delete this.boundsBuffer),this.fire(new t.Event(\"data\",{dataType:\"source\",sourceDataType:\"content\"})),this},i.prototype.prepare=function(){if(0!==Object.keys(this.tiles).length&&this.image){var e=this.map.painter.context,i=e.gl;for(var o in this.boundsBuffer||(this.boundsBuffer=e.createVertexBuffer(this._boundsArray,A.members)),this.boundsSegments||(this.boundsSegments=t.SegmentVector.simpleSegment(0,0,4,2)),this.texture||(this.texture=new t.Texture(e,this.image,i.RGBA),this.texture.bind(i.LINEAR,i.CLAMP_TO_EDGE)),this.tiles){var r=this.tiles[o];\"loaded\"!==r.state&&(r.state=\"loaded\",r.texture=this.texture);}}},i.prototype.loadTile=function(t,e){this.tileID&&this.tileID.equals(t.tileID.canonical)?(this.tiles[String(t.tileID.wrap)]=t,t.buckets={},e(null)):(t.state=\"errored\",e(null));},i.prototype.serialize=function(){return {type:\"image\",url:this.options.url,coordinates:this.coordinates}},i.prototype.hasTransition=function(){return !1},i}(t.Evented),L=function(e){function i(t,i,o,r){e.call(this,t,i,o,r),this.roundZoom=!0,this.type=\"video\",this.options=i;}return e&&(i.__proto__=e),(i.prototype=Object.create(e&&e.prototype)).constructor=i,i.prototype.load=function(){var e=this;this._loaded=!1;var i=this.options;this.urls=[];for(var o=0,r=i.urls;o<r.length;o+=1)this.urls.push(this.map._requestManager.transformRequest(r[o],t.ResourceType.Source).url);t.getVideo(this.urls,(function(i,o){e._loaded=!0,i?e.fire(new t.ErrorEvent(i)):o&&(e.video=o,e.video.loop=!0,e.video.setAttribute(\"playsinline\",\"\"),e.video.addEventListener(\"playing\",(function(){e.map.triggerRepaint();})),e.map&&e.video.play(),e._finishLoading());}));},i.prototype.pause=function(){this.video&&this.video.pause();},i.prototype.play=function(){this.video&&this.video.play();},i.prototype.seek=function(e){if(this.video){var i=this.video.seekable;e<i.start(0)||e>i.end(0)?this.fire(new t.ErrorEvent(new t.ValidationError(\"sources.\"+this.id,null,\"Playback for this video can be set only between the \"+i.start(0)+\" and \"+i.end(0)+\"-second mark.\"))):this.video.currentTime=e;}},i.prototype.getVideo=function(){return this.video},i.prototype.onAdd=function(t){this.map||(this.map=t,this.load(),this.video&&(this.video.play(),this.setCoordinates(this.coordinates)));},i.prototype.prepare=function(){if(!(0===Object.keys(this.tiles).length||this.video.readyState<2)){var e=this.map.painter.context,i=e.gl;for(var o in this.boundsBuffer||(this.boundsBuffer=e.createVertexBuffer(this._boundsArray,A.members)),this.boundsSegments||(this.boundsSegments=t.SegmentVector.simpleSegment(0,0,4,2)),this.texture?this.video.paused||(this.texture.bind(i.LINEAR,i.CLAMP_TO_EDGE),i.texSubImage2D(i.TEXTURE_2D,0,0,0,i.RGBA,i.UNSIGNED_BYTE,this.video)):(this.texture=new t.Texture(e,this.video,i.RGBA),this.texture.bind(i.LINEAR,i.CLAMP_TO_EDGE)),this.tiles){var r=this.tiles[o];\"loaded\"!==r.state&&(r.state=\"loaded\",r.texture=this.texture);}}},i.prototype.serialize=function(){return {type:\"video\",urls:this.urls,coordinates:this.coordinates}},i.prototype.hasTransition=function(){return this.video&&!this.video.paused},i}(M),R=function(e){function i(i,o,r,a){e.call(this,i,o,r,a),o.coordinates?Array.isArray(o.coordinates)&&4===o.coordinates.length&&!o.coordinates.some((function(t){return !Array.isArray(t)||2!==t.length||t.some((function(t){return \"number\"!=typeof t}))}))||this.fire(new t.ErrorEvent(new t.ValidationError(\"sources.\"+i,null,'\"coordinates\" property must be an array of 4 longitude/latitude array pairs'))):this.fire(new t.ErrorEvent(new t.ValidationError(\"sources.\"+i,null,'missing required property \"coordinates\"'))),o.animate&&\"boolean\"!=typeof o.animate&&this.fire(new t.ErrorEvent(new t.ValidationError(\"sources.\"+i,null,'optional \"animate\" property must be a boolean value'))),o.canvas?\"string\"==typeof o.canvas||o.canvas instanceof t.window.HTMLCanvasElement||this.fire(new t.ErrorEvent(new t.ValidationError(\"sources.\"+i,null,'\"canvas\" must be either a string representing the ID of the canvas element from which to read, or an HTMLCanvasElement instance'))):this.fire(new t.ErrorEvent(new t.ValidationError(\"sources.\"+i,null,'missing required property \"canvas\"'))),this.options=o,this.animate=void 0===o.animate||o.animate;}return e&&(i.__proto__=e),(i.prototype=Object.create(e&&e.prototype)).constructor=i,i.prototype.load=function(){this._loaded=!0,this.canvas||(this.canvas=this.options.canvas instanceof t.window.HTMLCanvasElement?this.options.canvas:t.window.document.getElementById(this.options.canvas)),this.width=this.canvas.width,this.height=this.canvas.height,this._hasInvalidDimensions()?this.fire(new t.ErrorEvent(new Error(\"Canvas dimensions cannot be less than or equal to zero.\"))):(this.play=function(){this._playing=!0,this.map.triggerRepaint();},this.pause=function(){this._playing&&(this.prepare(),this._playing=!1);},this._finishLoading());},i.prototype.getCanvas=function(){return this.canvas},i.prototype.onAdd=function(t){this.map=t,this.load(),this.canvas&&this.animate&&this.play();},i.prototype.onRemove=function(){this.pause();},i.prototype.prepare=function(){var e=!1;if(this.canvas.width!==this.width&&(this.width=this.canvas.width,e=!0),this.canvas.height!==this.height&&(this.height=this.canvas.height,e=!0),!this._hasInvalidDimensions()&&0!==Object.keys(this.tiles).length){var i=this.map.painter.context,o=i.gl;for(var r in this.boundsBuffer||(this.boundsBuffer=i.createVertexBuffer(this._boundsArray,A.members)),this.boundsSegments||(this.boundsSegments=t.SegmentVector.simpleSegment(0,0,4,2)),this.texture?(e||this._playing)&&this.texture.update(this.canvas,{premultiply:!0}):this.texture=new t.Texture(i,this.canvas,o.RGBA,{premultiply:!0}),this.tiles){var a=this.tiles[r];\"loaded\"!==a.state&&(a.state=\"loaded\",a.texture=this.texture);}}},i.prototype.serialize=function(){return {type:\"canvas\",coordinates:this.coordinates}},i.prototype.hasTransition=function(){return this._playing},i.prototype._hasInvalidDimensions=function(){for(var t=0,e=[this.canvas.width,this.canvas.height];t<e.length;t+=1){var i=e[t];if(isNaN(i)||i<=0)return !0}return !1},i}(M),k={vector:S,raster:C,\"raster-dem\":z,geojson:D,video:L,image:M,canvas:R};function B(e,i){var o=t.identity([]);return t.translate(o,o,[1,1,0]),t.scale(o,o,[.5*e.width,.5*e.height,1]),t.multiply(o,o,e.calculatePosMatrix(i.toUnwrapped()))}function O(t,e,i,o,r,a){var n=function(t,e,i){if(t)for(var o=0,r=t;o<r.length;o+=1){var a=e[r[o]];if(a&&a.source===i&&\"fill-extrusion\"===a.type)return !0}else for(var n in e){var s=e[n];if(s.source===i&&\"fill-extrusion\"===s.type)return !0}return !1}(r&&r.layers,e,t.id),s=a.maxPitchScaleFactor(),l=t.tilesIn(o,s,n);l.sort(F);for(var c=[],u=0,h=l;u<h.length;u+=1){var p=h[u];c.push({wrappedTileID:p.tileID.wrapped().key,queryResults:p.tile.queryRenderedFeatures(e,i,t._state,p.queryGeometry,p.cameraQueryGeometry,p.scale,r,a,s,B(t.transform,p.tileID))});}var d=function(t){for(var e={},i={},o=0,r=t;o<r.length;o+=1){var a=r[o],n=a.queryResults,s=a.wrappedTileID,l=i[s]=i[s]||{};for(var c in n)for(var u=n[c],h=l[c]=l[c]||{},p=e[c]=e[c]||[],d=0,_=u;d<_.length;d+=1){var f=_[d];h[f.featureIndex]||(h[f.featureIndex]=!0,p.push(f));}}return e}(c);for(var _ in d)d[_].forEach((function(e){var i=e.feature,o=t.getFeatureState(i.layer[\"source-layer\"],i.id);i.source=i.layer.source,i.layer[\"source-layer\"]&&(i.sourceLayer=i.layer[\"source-layer\"]),i.state=o;}));return d}function F(t,e){var i=t.tileID,o=e.tileID;return i.overscaledZ-o.overscaledZ||i.canonical.y-o.canonical.y||i.wrap-o.wrap||i.canonical.x-o.canonical.x}var U=function(t,e){this.max=t,this.onRemove=e,this.reset();};U.prototype.reset=function(){for(var t in this.data)for(var e=0,i=this.data[t];e<i.length;e+=1){var o=i[e];o.timeout&&clearTimeout(o.timeout),this.onRemove(o.value);}return this.data={},this.order=[],this},U.prototype.add=function(t,e,i){var o=this,r=t.wrapped().key;void 0===this.data[r]&&(this.data[r]=[]);var a={value:e,timeout:void 0};if(void 0!==i&&(a.timeout=setTimeout((function(){o.remove(t,a);}),i)),this.data[r].push(a),this.order.push(r),this.order.length>this.max){var n=this._getAndRemoveByKey(this.order[0]);n&&this.onRemove(n);}return this},U.prototype.has=function(t){return t.wrapped().key in this.data},U.prototype.getAndRemove=function(t){return this.has(t)?this._getAndRemoveByKey(t.wrapped().key):null},U.prototype._getAndRemoveByKey=function(t){var e=this.data[t].shift();return e.timeout&&clearTimeout(e.timeout),0===this.data[t].length&&delete this.data[t],this.order.splice(this.order.indexOf(t),1),e.value},U.prototype.getByKey=function(t){var e=this.data[t];return e?e[0].value:null},U.prototype.get=function(t){return this.has(t)?this.data[t.wrapped().key][0].value:null},U.prototype.remove=function(t,e){if(!this.has(t))return this;var i=t.wrapped().key,o=void 0===e?0:this.data[i].indexOf(e),r=this.data[i][o];return this.data[i].splice(o,1),r.timeout&&clearTimeout(r.timeout),0===this.data[i].length&&delete this.data[i],this.onRemove(r.value),this.order.splice(this.order.indexOf(i),1),this},U.prototype.setMaxSize=function(t){for(this.max=t;this.order.length>this.max;){var e=this._getAndRemoveByKey(this.order[0]);e&&this.onRemove(e);}return this},U.prototype.filter=function(t){var e=[];for(var i in this.data)for(var o=0,r=this.data[i];o<r.length;o+=1){var a=r[o];t(a.value)||e.push(a);}for(var n=0,s=e;n<s.length;n+=1){var l=s[n];this.remove(l.value.tileID,l);}};var N=function(t,e,i){this.context=t;var o=t.gl;this.buffer=o.createBuffer(),this.dynamicDraw=Boolean(i),this.context.unbindVAO(),t.bindElementBuffer.set(this.buffer),o.bufferData(o.ELEMENT_ARRAY_BUFFER,e.arrayBuffer,this.dynamicDraw?o.DYNAMIC_DRAW:o.STATIC_DRAW),this.dynamicDraw||delete e.arrayBuffer;};N.prototype.bind=function(){this.context.bindElementBuffer.set(this.buffer);},N.prototype.updateData=function(t){var e=this.context.gl;this.context.unbindVAO(),this.bind(),e.bufferSubData(e.ELEMENT_ARRAY_BUFFER,0,t.arrayBuffer);},N.prototype.destroy=function(){this.buffer&&(this.context.gl.deleteBuffer(this.buffer),delete this.buffer);};var Z={Int8:\"BYTE\",Uint8:\"UNSIGNED_BYTE\",Int16:\"SHORT\",Uint16:\"UNSIGNED_SHORT\",Int32:\"INT\",Uint32:\"UNSIGNED_INT\",Float32:\"FLOAT\"},q=function(t,e,i,o){this.length=e.length,this.attributes=i,this.itemSize=e.bytesPerElement,this.dynamicDraw=o,this.context=t;var r=t.gl;this.buffer=r.createBuffer(),t.bindVertexBuffer.set(this.buffer),r.bufferData(r.ARRAY_BUFFER,e.arrayBuffer,this.dynamicDraw?r.DYNAMIC_DRAW:r.STATIC_DRAW),this.dynamicDraw||delete e.arrayBuffer;};q.prototype.bind=function(){this.context.bindVertexBuffer.set(this.buffer);},q.prototype.updateData=function(t){var e=this.context.gl;this.bind(),e.bufferSubData(e.ARRAY_BUFFER,0,t.arrayBuffer);},q.prototype.enableAttributes=function(t,e){for(var i=0;i<this.attributes.length;i++){var o=e.attributes[this.attributes[i].name];void 0!==o&&t.enableVertexAttribArray(o);}},q.prototype.setVertexAttribPointers=function(t,e,i){for(var o=0;o<this.attributes.length;o++){var r=this.attributes[o],a=e.attributes[r.name];void 0!==a&&t.vertexAttribPointer(a,r.components,t[Z[r.type]],!1,this.itemSize,r.offset+this.itemSize*(i||0));}},q.prototype.destroy=function(){this.buffer&&(this.context.gl.deleteBuffer(this.buffer),delete this.buffer);};var j=function(t){this.gl=t.gl,this.default=this.getDefault(),this.current=this.default,this.dirty=!1;};j.prototype.get=function(){return this.current},j.prototype.set=function(t){},j.prototype.getDefault=function(){return this.default},j.prototype.setDefault=function(){this.set(this.default);};var V=function(e){function i(){e.apply(this,arguments);}return e&&(i.__proto__=e),(i.prototype=Object.create(e&&e.prototype)).constructor=i,i.prototype.getDefault=function(){return t.Color.transparent},i.prototype.set=function(t){var e=this.current;(t.r!==e.r||t.g!==e.g||t.b!==e.b||t.a!==e.a||this.dirty)&&(this.gl.clearColor(t.r,t.g,t.b,t.a),this.current=t,this.dirty=!1);},i}(j),G=function(t){function e(){t.apply(this,arguments);}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e,e.prototype.getDefault=function(){return 1},e.prototype.set=function(t){(t!==this.current||this.dirty)&&(this.gl.clearDepth(t),this.current=t,this.dirty=!1);},e}(j),W=function(t){function e(){t.apply(this,arguments);}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e,e.prototype.getDefault=function(){return 0},e.prototype.set=function(t){(t!==this.current||this.dirty)&&(this.gl.clearStencil(t),this.current=t,this.dirty=!1);},e}(j),X=function(t){function e(){t.apply(this,arguments);}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e,e.prototype.getDefault=function(){return [!0,!0,!0,!0]},e.prototype.set=function(t){var e=this.current;(t[0]!==e[0]||t[1]!==e[1]||t[2]!==e[2]||t[3]!==e[3]||this.dirty)&&(this.gl.colorMask(t[0],t[1],t[2],t[3]),this.current=t,this.dirty=!1);},e}(j),H=function(t){function e(){t.apply(this,arguments);}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e,e.prototype.getDefault=function(){return !0},e.prototype.set=function(t){(t!==this.current||this.dirty)&&(this.gl.depthMask(t),this.current=t,this.dirty=!1);},e}(j),K=function(t){function e(){t.apply(this,arguments);}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e,e.prototype.getDefault=function(){return 255},e.prototype.set=function(t){(t!==this.current||this.dirty)&&(this.gl.stencilMask(t),this.current=t,this.dirty=!1);},e}(j),Y=function(t){function e(){t.apply(this,arguments);}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e,e.prototype.getDefault=function(){return {func:this.gl.ALWAYS,ref:0,mask:255}},e.prototype.set=function(t){var e=this.current;(t.func!==e.func||t.ref!==e.ref||t.mask!==e.mask||this.dirty)&&(this.gl.stencilFunc(t.func,t.ref,t.mask),this.current=t,this.dirty=!1);},e}(j),J=function(t){function e(){t.apply(this,arguments);}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e,e.prototype.getDefault=function(){var t=this.gl;return [t.KEEP,t.KEEP,t.KEEP]},e.prototype.set=function(t){var e=this.current;(t[0]!==e[0]||t[1]!==e[1]||t[2]!==e[2]||this.dirty)&&(this.gl.stencilOp(t[0],t[1],t[2]),this.current=t,this.dirty=!1);},e}(j),Q=function(t){function e(){t.apply(this,arguments);}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e,e.prototype.getDefault=function(){return !1},e.prototype.set=function(t){if(t!==this.current||this.dirty){var e=this.gl;t?e.enable(e.STENCIL_TEST):e.disable(e.STENCIL_TEST),this.current=t,this.dirty=!1;}},e}(j),$=function(t){function e(){t.apply(this,arguments);}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e,e.prototype.getDefault=function(){return [0,1]},e.prototype.set=function(t){var e=this.current;(t[0]!==e[0]||t[1]!==e[1]||this.dirty)&&(this.gl.depthRange(t[0],t[1]),this.current=t,this.dirty=!1);},e}(j),tt=function(t){function e(){t.apply(this,arguments);}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e,e.prototype.getDefault=function(){return !1},e.prototype.set=function(t){if(t!==this.current||this.dirty){var e=this.gl;t?e.enable(e.DEPTH_TEST):e.disable(e.DEPTH_TEST),this.current=t,this.dirty=!1;}},e}(j),et=function(t){function e(){t.apply(this,arguments);}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e,e.prototype.getDefault=function(){return this.gl.LESS},e.prototype.set=function(t){(t!==this.current||this.dirty)&&(this.gl.depthFunc(t),this.current=t,this.dirty=!1);},e}(j),it=function(t){function e(){t.apply(this,arguments);}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e,e.prototype.getDefault=function(){return !1},e.prototype.set=function(t){if(t!==this.current||this.dirty){var e=this.gl;t?e.enable(e.BLEND):e.disable(e.BLEND),this.current=t,this.dirty=!1;}},e}(j),ot=function(t){function e(){t.apply(this,arguments);}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e,e.prototype.getDefault=function(){var t=this.gl;return [t.ONE,t.ZERO]},e.prototype.set=function(t){var e=this.current;(t[0]!==e[0]||t[1]!==e[1]||this.dirty)&&(this.gl.blendFunc(t[0],t[1]),this.current=t,this.dirty=!1);},e}(j),rt=function(e){function i(){e.apply(this,arguments);}return e&&(i.__proto__=e),(i.prototype=Object.create(e&&e.prototype)).constructor=i,i.prototype.getDefault=function(){return t.Color.transparent},i.prototype.set=function(t){var e=this.current;(t.r!==e.r||t.g!==e.g||t.b!==e.b||t.a!==e.a||this.dirty)&&(this.gl.blendColor(t.r,t.g,t.b,t.a),this.current=t,this.dirty=!1);},i}(j),at=function(t){function e(){t.apply(this,arguments);}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e,e.prototype.getDefault=function(){return this.gl.FUNC_ADD},e.prototype.set=function(t){(t!==this.current||this.dirty)&&(this.gl.blendEquation(t),this.current=t,this.dirty=!1);},e}(j),nt=function(t){function e(){t.apply(this,arguments);}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e,e.prototype.getDefault=function(){return !1},e.prototype.set=function(t){if(t!==this.current||this.dirty){var e=this.gl;t?e.enable(e.CULL_FACE):e.disable(e.CULL_FACE),this.current=t,this.dirty=!1;}},e}(j),st=function(t){function e(){t.apply(this,arguments);}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e,e.prototype.getDefault=function(){return this.gl.BACK},e.prototype.set=function(t){(t!==this.current||this.dirty)&&(this.gl.cullFace(t),this.current=t,this.dirty=!1);},e}(j),lt=function(t){function e(){t.apply(this,arguments);}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e,e.prototype.getDefault=function(){return this.gl.CCW},e.prototype.set=function(t){(t!==this.current||this.dirty)&&(this.gl.frontFace(t),this.current=t,this.dirty=!1);},e}(j),ct=function(t){function e(){t.apply(this,arguments);}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e,e.prototype.getDefault=function(){return null},e.prototype.set=function(t){(t!==this.current||this.dirty)&&(this.gl.useProgram(t),this.current=t,this.dirty=!1);},e}(j),ut=function(t){function e(){t.apply(this,arguments);}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e,e.prototype.getDefault=function(){return this.gl.TEXTURE0},e.prototype.set=function(t){(t!==this.current||this.dirty)&&(this.gl.activeTexture(t),this.current=t,this.dirty=!1);},e}(j),ht=function(t){function e(){t.apply(this,arguments);}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e,e.prototype.getDefault=function(){var t=this.gl;return [0,0,t.drawingBufferWidth,t.drawingBufferHeight]},e.prototype.set=function(t){var e=this.current;(t[0]!==e[0]||t[1]!==e[1]||t[2]!==e[2]||t[3]!==e[3]||this.dirty)&&(this.gl.viewport(t[0],t[1],t[2],t[3]),this.current=t,this.dirty=!1);},e}(j),pt=function(t){function e(){t.apply(this,arguments);}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e,e.prototype.getDefault=function(){return null},e.prototype.set=function(t){if(t!==this.current||this.dirty){var e=this.gl;e.bindFramebuffer(e.FRAMEBUFFER,t),this.current=t,this.dirty=!1;}},e}(j),dt=function(t){function e(){t.apply(this,arguments);}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e,e.prototype.getDefault=function(){return null},e.prototype.set=function(t){if(t!==this.current||this.dirty){var e=this.gl;e.bindRenderbuffer(e.RENDERBUFFER,t),this.current=t,this.dirty=!1;}},e}(j),_t=function(t){function e(){t.apply(this,arguments);}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e,e.prototype.getDefault=function(){return null},e.prototype.set=function(t){if(t!==this.current||this.dirty){var e=this.gl;e.bindTexture(e.TEXTURE_2D,t),this.current=t,this.dirty=!1;}},e}(j),ft=function(t){function e(){t.apply(this,arguments);}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e,e.prototype.getDefault=function(){return null},e.prototype.set=function(t){if(t!==this.current||this.dirty){var e=this.gl;e.bindBuffer(e.ARRAY_BUFFER,t),this.current=t,this.dirty=!1;}},e}(j),mt=function(t){function e(){t.apply(this,arguments);}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e,e.prototype.getDefault=function(){return null},e.prototype.set=function(t){var e=this.gl;e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,t),this.current=t,this.dirty=!1;},e}(j),gt=function(t){function e(e){t.call(this,e),this.vao=e.extVertexArrayObject;}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e,e.prototype.getDefault=function(){return null},e.prototype.set=function(t){this.vao&&(t!==this.current||this.dirty)&&(this.vao.bindVertexArrayOES(t),this.current=t,this.dirty=!1);},e}(j),vt=function(t){function e(){t.apply(this,arguments);}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e,e.prototype.getDefault=function(){return 4},e.prototype.set=function(t){if(t!==this.current||this.dirty){var e=this.gl;e.pixelStorei(e.UNPACK_ALIGNMENT,t),this.current=t,this.dirty=!1;}},e}(j),yt=function(t){function e(){t.apply(this,arguments);}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e,e.prototype.getDefault=function(){return !1},e.prototype.set=function(t){if(t!==this.current||this.dirty){var e=this.gl;e.pixelStorei(e.UNPACK_PREMULTIPLY_ALPHA_WEBGL,t),this.current=t,this.dirty=!1;}},e}(j),xt=function(t){function e(){t.apply(this,arguments);}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e,e.prototype.getDefault=function(){return !1},e.prototype.set=function(t){if(t!==this.current||this.dirty){var e=this.gl;e.pixelStorei(e.UNPACK_FLIP_Y_WEBGL,t),this.current=t,this.dirty=!1;}},e}(j),bt=function(t){function e(e,i){t.call(this,e),this.context=e,this.parent=i;}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e,e.prototype.getDefault=function(){return null},e}(j),wt=function(t){function e(){t.apply(this,arguments);}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e,e.prototype.setDirty=function(){this.dirty=!0;},e.prototype.set=function(t){if(t!==this.current||this.dirty){this.context.bindFramebuffer.set(this.parent);var e=this.gl;e.framebufferTexture2D(e.FRAMEBUFFER,e.COLOR_ATTACHMENT0,e.TEXTURE_2D,t,0),this.current=t,this.dirty=!1;}},e}(bt),Tt=function(t){function e(){t.apply(this,arguments);}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e,e.prototype.set=function(t){if(t!==this.current||this.dirty){this.context.bindFramebuffer.set(this.parent);var e=this.gl;e.framebufferRenderbuffer(e.FRAMEBUFFER,e.DEPTH_ATTACHMENT,e.RENDERBUFFER,t),this.current=t,this.dirty=!1;}},e}(bt),Et=function(t,e,i,o){this.context=t,this.width=e,this.height=i;var r=this.framebuffer=t.gl.createFramebuffer();this.colorAttachment=new wt(t,r),o&&(this.depthAttachment=new Tt(t,r));};Et.prototype.destroy=function(){var t=this.context.gl,e=this.colorAttachment.get();if(e&&t.deleteTexture(e),this.depthAttachment){var i=this.depthAttachment.get();i&&t.deleteRenderbuffer(i);}t.deleteFramebuffer(this.framebuffer);};var It=function(t,e,i){this.func=t,this.mask=e,this.range=i;};It.ReadOnly=!1,It.ReadWrite=!0,It.disabled=new It(519,It.ReadOnly,[0,1]);var Pt=function(t,e,i,o,r,a){this.test=t,this.ref=e,this.mask=i,this.fail=o,this.depthFail=r,this.pass=a;};Pt.disabled=new Pt({func:519,mask:0},0,0,7680,7680,7680);var St=function(t,e,i){this.blendFunction=t,this.blendColor=e,this.mask=i;};St.disabled=new St(St.Replace=[1,0],t.Color.transparent,[!1,!1,!1,!1]),St.unblended=new St(St.Replace,t.Color.transparent,[!0,!0,!0,!0]),St.alphaBlended=new St([1,771],t.Color.transparent,[!0,!0,!0,!0]);var Ct=function(t,e,i){this.enable=t,this.mode=e,this.frontFace=i;};Ct.disabled=new Ct(!1,1029,2305),Ct.backCCW=new Ct(!0,1029,2305);var zt=function(t){this.gl=t,this.extVertexArrayObject=this.gl.getExtension(\"OES_vertex_array_object\"),this.clearColor=new V(this),this.clearDepth=new G(this),this.clearStencil=new W(this),this.colorMask=new X(this),this.depthMask=new H(this),this.stencilMask=new K(this),this.stencilFunc=new Y(this),this.stencilOp=new J(this),this.stencilTest=new Q(this),this.depthRange=new $(this),this.depthTest=new tt(this),this.depthFunc=new et(this),this.blend=new it(this),this.blendFunc=new ot(this),this.blendColor=new rt(this),this.blendEquation=new at(this),this.cullFace=new nt(this),this.cullFaceSide=new st(this),this.frontFace=new lt(this),this.program=new ct(this),this.activeTexture=new ut(this),this.viewport=new ht(this),this.bindFramebuffer=new pt(this),this.bindRenderbuffer=new dt(this),this.bindTexture=new _t(this),this.bindVertexBuffer=new ft(this),this.bindElementBuffer=new mt(this),this.bindVertexArrayOES=this.extVertexArrayObject&&new gt(this),this.pixelStoreUnpack=new vt(this),this.pixelStoreUnpackPremultiplyAlpha=new yt(this),this.pixelStoreUnpackFlipY=new xt(this),this.extTextureFilterAnisotropic=t.getExtension(\"EXT_texture_filter_anisotropic\")||t.getExtension(\"MOZ_EXT_texture_filter_anisotropic\")||t.getExtension(\"WEBKIT_EXT_texture_filter_anisotropic\"),this.extTextureFilterAnisotropic&&(this.extTextureFilterAnisotropicMax=t.getParameter(this.extTextureFilterAnisotropic.MAX_TEXTURE_MAX_ANISOTROPY_EXT)),this.extTextureHalfFloat=t.getExtension(\"OES_texture_half_float\"),this.extTextureHalfFloat&&(t.getExtension(\"OES_texture_half_float_linear\"),this.extRenderToTextureHalfFloat=t.getExtension(\"EXT_color_buffer_half_float\")),this.extTimerQuery=t.getExtension(\"EXT_disjoint_timer_query\"),this.maxTextureSize=t.getParameter(t.MAX_TEXTURE_SIZE);};zt.prototype.setDefault=function(){this.unbindVAO(),this.clearColor.setDefault(),this.clearDepth.setDefault(),this.clearStencil.setDefault(),this.colorMask.setDefault(),this.depthMask.setDefault(),this.stencilMask.setDefault(),this.stencilFunc.setDefault(),this.stencilOp.setDefault(),this.stencilTest.setDefault(),this.depthRange.setDefault(),this.depthTest.setDefault(),this.depthFunc.setDefault(),this.blend.setDefault(),this.blendFunc.setDefault(),this.blendColor.setDefault(),this.blendEquation.setDefault(),this.cullFace.setDefault(),this.cullFaceSide.setDefault(),this.frontFace.setDefault(),this.program.setDefault(),this.activeTexture.setDefault(),this.bindFramebuffer.setDefault(),this.pixelStoreUnpack.setDefault(),this.pixelStoreUnpackPremultiplyAlpha.setDefault(),this.pixelStoreUnpackFlipY.setDefault();},zt.prototype.setDirty=function(){this.clearColor.dirty=!0,this.clearDepth.dirty=!0,this.clearStencil.dirty=!0,this.colorMask.dirty=!0,this.depthMask.dirty=!0,this.stencilMask.dirty=!0,this.stencilFunc.dirty=!0,this.stencilOp.dirty=!0,this.stencilTest.dirty=!0,this.depthRange.dirty=!0,this.depthTest.dirty=!0,this.depthFunc.dirty=!0,this.blend.dirty=!0,this.blendFunc.dirty=!0,this.blendColor.dirty=!0,this.blendEquation.dirty=!0,this.cullFace.dirty=!0,this.cullFaceSide.dirty=!0,this.frontFace.dirty=!0,this.program.dirty=!0,this.activeTexture.dirty=!0,this.viewport.dirty=!0,this.bindFramebuffer.dirty=!0,this.bindRenderbuffer.dirty=!0,this.bindTexture.dirty=!0,this.bindVertexBuffer.dirty=!0,this.bindElementBuffer.dirty=!0,this.extVertexArrayObject&&(this.bindVertexArrayOES.dirty=!0),this.pixelStoreUnpack.dirty=!0,this.pixelStoreUnpackPremultiplyAlpha.dirty=!0,this.pixelStoreUnpackFlipY.dirty=!0;},zt.prototype.createIndexBuffer=function(t,e){return new N(this,t,e)},zt.prototype.createVertexBuffer=function(t,e,i){return new q(this,t,e,i)},zt.prototype.createRenderbuffer=function(t,e,i){var o=this.gl,r=o.createRenderbuffer();return this.bindRenderbuffer.set(r),o.renderbufferStorage(o.RENDERBUFFER,t,e,i),this.bindRenderbuffer.set(null),r},zt.prototype.createFramebuffer=function(t,e,i){return new Et(this,t,e,i)},zt.prototype.clear=function(t){var e=t.color,i=t.depth,o=this.gl,r=0;e&&(r|=o.COLOR_BUFFER_BIT,this.clearColor.set(e),this.colorMask.set([!0,!0,!0,!0])),void 0!==i&&(r|=o.DEPTH_BUFFER_BIT,this.depthRange.set([0,1]),this.clearDepth.set(i),this.depthMask.set(!0)),o.clear(r);},zt.prototype.setCullFace=function(t){!1===t.enable?this.cullFace.set(!1):(this.cullFace.set(!0),this.cullFaceSide.set(t.mode),this.frontFace.set(t.frontFace));},zt.prototype.setDepthMode=function(t){t.func!==this.gl.ALWAYS||t.mask?(this.depthTest.set(!0),this.depthFunc.set(t.func),this.depthMask.set(t.mask),this.depthRange.set(t.range)):this.depthTest.set(!1);},zt.prototype.setStencilMode=function(t){t.test.func!==this.gl.ALWAYS||t.mask?(this.stencilTest.set(!0),this.stencilMask.set(t.mask),this.stencilOp.set([t.fail,t.depthFail,t.pass]),this.stencilFunc.set({func:t.test.func,ref:t.ref,mask:t.test.mask})):this.stencilTest.set(!1);},zt.prototype.setColorMode=function(e){t.deepEqual(e.blendFunction,St.Replace)?this.blend.set(!1):(this.blend.set(!0),this.blendFunc.set(e.blendFunction),this.blendColor.set(e.blendColor)),this.colorMask.set(e.mask);},zt.prototype.unbindVAO=function(){this.extVertexArrayObject&&this.bindVertexArrayOES.set(null);};var Dt=function(e){function i(i,o,r){var a=this;e.call(this),this.id=i,this.dispatcher=r,this.on(\"data\",(function(t){\"source\"===t.dataType&&\"metadata\"===t.sourceDataType&&(a._sourceLoaded=!0),a._sourceLoaded&&!a._paused&&\"source\"===t.dataType&&\"content\"===t.sourceDataType&&(a.reload(),a.transform&&a.update(a.transform));})),this.on(\"error\",(function(){a._sourceErrored=!0;})),this._source=function(e,i,o,r){var a=new k[i.type](e,i,o,r);if(a.id!==e)throw new Error(\"Expected Source id to be \"+e+\" instead of \"+a.id);return t.bindAll([\"load\",\"abort\",\"unload\",\"serialize\",\"prepare\"],a),a}(i,o,r,this),this._tiles={},this._cache=new U(0,this._unloadTile.bind(this)),this._timers={},this._cacheTimers={},this._maxTileCacheSize=null,this._loadedParentTiles={},this._coveredTiles={},this._state=new t.SourceFeatureState;}return e&&(i.__proto__=e),(i.prototype=Object.create(e&&e.prototype)).constructor=i,i.prototype.onAdd=function(t){this.map=t,this._maxTileCacheSize=t?t._maxTileCacheSize:null,this._source&&this._source.onAdd&&this._source.onAdd(t);},i.prototype.onRemove=function(t){this._source&&this._source.onRemove&&this._source.onRemove(t);},i.prototype.loaded=function(){if(this._sourceErrored)return !0;if(!this._sourceLoaded)return !1;if(!this._source.loaded())return !1;for(var t in this._tiles){var e=this._tiles[t];if(\"loaded\"!==e.state&&\"errored\"!==e.state)return !1}return !0},i.prototype.getSource=function(){return this._source},i.prototype.pause=function(){this._paused=!0;},i.prototype.resume=function(){if(this._paused){var t=this._shouldReloadOnResume;this._paused=!1,this._shouldReloadOnResume=!1,t&&this.reload(),this.transform&&this.update(this.transform);}},i.prototype._loadTile=function(t,e){return this._source.loadTile(t,e)},i.prototype._unloadTile=function(t){if(this._source.unloadTile)return this._source.unloadTile(t,(function(){}))},i.prototype._abortTile=function(t){if(this._source.abortTile)return this._source.abortTile(t,(function(){}))},i.prototype.serialize=function(){return this._source.serialize()},i.prototype.prepare=function(t){for(var e in this._source.prepare&&this._source.prepare(),this._state.coalesceChanges(this._tiles,this.map?this.map.painter:null),this._tiles){var i=this._tiles[e];i.upload(t),i.prepare(this.map.style.imageManager);}},i.prototype.getIds=function(){return t.values(this._tiles).map((function(t){return t.tileID})).sort(At).map((function(t){return t.key}))},i.prototype.getRenderableIds=function(e){var i=this,o=[];for(var r in this._tiles)this._isIdRenderable(r,e)&&o.push(this._tiles[r]);return e?o.sort((function(e,o){var r=e.tileID,a=o.tileID,n=new t.Point(r.canonical.x,r.canonical.y)._rotate(i.transform.angle),s=new t.Point(a.canonical.x,a.canonical.y)._rotate(i.transform.angle);return r.overscaledZ-a.overscaledZ||s.y-n.y||s.x-n.x})).map((function(t){return t.tileID.key})):o.map((function(t){return t.tileID})).sort(At).map((function(t){return t.key}))},i.prototype.hasRenderableParent=function(t){var e=this.findLoadedParent(t,0);return !!e&&this._isIdRenderable(e.tileID.key)},i.prototype._isIdRenderable=function(t,e){return this._tiles[t]&&this._tiles[t].hasData()&&!this._coveredTiles[t]&&(e||!this._tiles[t].holdingForFade())},i.prototype.reload=function(){if(this._paused)this._shouldReloadOnResume=!0;else for(var t in this._cache.reset(),this._tiles)\"errored\"!==this._tiles[t].state&&this._reloadTile(t,\"reloading\");},i.prototype._reloadTile=function(t,e){var i=this._tiles[t];i&&(\"loading\"!==i.state&&(i.state=e),this._loadTile(i,this._tileLoaded.bind(this,i,t,e)));},i.prototype._tileLoaded=function(e,i,o,r){if(r)return e.state=\"errored\",void(404!==r.status?this._source.fire(new t.ErrorEvent(r,{tile:e})):this.update(this.transform));e.timeAdded=t.browser.now(),\"expired\"===o&&(e.refreshedUponExpiration=!0),this._setTileReloadTimer(i,e),\"raster-dem\"===this.getSource().type&&e.dem&&this._backfillDEM(e),this._state.initializeTileState(e,this.map?this.map.painter:null),this._source.fire(new t.Event(\"data\",{dataType:\"source\",tile:e,coord:e.tileID}));},i.prototype._backfillDEM=function(t){for(var e=this.getRenderableIds(),i=0;i<e.length;i++){var o=e[i];if(t.neighboringTiles&&t.neighboringTiles[o]){var r=this.getTileByID(o);a(t,r),a(r,t);}}function a(t,e){t.needsHillshadePrepare=!0;var i=e.tileID.canonical.x-t.tileID.canonical.x,o=e.tileID.canonical.y-t.tileID.canonical.y,r=Math.pow(2,t.tileID.canonical.z),a=e.tileID.key;0===i&&0===o||Math.abs(o)>1||(Math.abs(i)>1&&(1===Math.abs(i+r)?i+=r:1===Math.abs(i-r)&&(i-=r)),e.dem&&t.dem&&(t.dem.backfillBorder(e.dem,i,o),t.neighboringTiles&&t.neighboringTiles[a]&&(t.neighboringTiles[a].backfilled=!0)));}},i.prototype.getTile=function(t){return this.getTileByID(t.key)},i.prototype.getTileByID=function(t){return this._tiles[t]},i.prototype._retainLoadedChildren=function(t,e,i,o){for(var r in this._tiles){var a=this._tiles[r];if(!(o[r]||!a.hasData()||a.tileID.overscaledZ<=e||a.tileID.overscaledZ>i)){for(var n=a.tileID;a&&a.tileID.overscaledZ>e+1;){var s=a.tileID.scaledTo(a.tileID.overscaledZ-1);(a=this._tiles[s.key])&&a.hasData()&&(n=s);}for(var l=n;l.overscaledZ>e;)if(t[(l=l.scaledTo(l.overscaledZ-1)).key]){o[n.key]=n;break}}}},i.prototype.findLoadedParent=function(t,e){if(t.key in this._loadedParentTiles){var i=this._loadedParentTiles[t.key];return i&&i.tileID.overscaledZ>=e?i:null}for(var o=t.overscaledZ-1;o>=e;o--){var r=t.scaledTo(o),a=this._getLoadedTile(r);if(a)return a}},i.prototype._getLoadedTile=function(t){var e=this._tiles[t.key];return e&&e.hasData()?e:this._cache.getByKey(t.wrapped().key)},i.prototype.updateCacheSize=function(t){var e=Math.ceil(t.width/this._source.tileSize)+1,i=Math.ceil(t.height/this._source.tileSize)+1,o=Math.floor(e*i*5),r=\"number\"==typeof this._maxTileCacheSize?Math.min(this._maxTileCacheSize,o):o;this._cache.setMaxSize(r);},i.prototype.handleWrapJump=function(t){var e=Math.round((t-(void 0===this._prevLng?t:this._prevLng))/360);if(this._prevLng=t,e){var i={};for(var o in this._tiles){var r=this._tiles[o];r.tileID=r.tileID.unwrapTo(r.tileID.wrap+e),i[r.tileID.key]=r;}for(var a in this._tiles=i,this._timers)clearTimeout(this._timers[a]),delete this._timers[a];for(var n in this._tiles)this._setTileReloadTimer(n,this._tiles[n]);}},i.prototype.update=function(e){var o=this;if(this.transform=e,this._sourceLoaded&&!this._paused){var r;this.updateCacheSize(e),this.handleWrapJump(this.transform.center.lng),this._coveredTiles={},this.used?this._source.tileID?r=e.getVisibleUnwrappedCoordinates(this._source.tileID).map((function(e){return new t.OverscaledTileID(e.canonical.z,e.wrap,e.canonical.z,e.canonical.x,e.canonical.y)})):(r=e.coveringTiles({tileSize:this._source.tileSize,minzoom:this._source.minzoom,maxzoom:this._source.maxzoom,roundZoom:this._source.roundZoom,reparseOverscaled:this._source.reparseOverscaled}),this._source.hasTile&&(r=r.filter((function(t){return o._source.hasTile(t)})))):r=[];var a=e.coveringZoomLevel(this._source),n=Math.max(a-i.maxOverzooming,this._source.minzoom),s=Math.max(a+i.maxUnderzooming,this._source.minzoom),l=this._updateRetainedTiles(r,a);if(Mt(this._source.type)){for(var c={},u={},h=0,p=Object.keys(l);h<p.length;h+=1){var d=p[h],_=l[d],f=this._tiles[d];if(f&&!(f.fadeEndTime&&f.fadeEndTime<=t.browser.now())){var m=this.findLoadedParent(_,n);m&&(this._addTile(m.tileID),c[m.tileID.key]=m.tileID),u[d]=_;}}for(var g in this._retainLoadedChildren(u,a,s,l),c)l[g]||(this._coveredTiles[g]=!0,l[g]=c[g]);}for(var v in l)this._tiles[v].clearFadeHold();for(var y=0,x=t.keysDifference(this._tiles,l);y<x.length;y+=1){var b=x[y],w=this._tiles[b];w.hasSymbolBuckets&&!w.holdingForFade()?w.setHoldDuration(this.map._fadeDuration):w.hasSymbolBuckets&&!w.symbolFadeFinished()||this._removeTile(b);}this._updateLoadedParentTileCache();}},i.prototype.releaseSymbolFadeTiles=function(){for(var t in this._tiles)this._tiles[t].holdingForFade()&&this._removeTile(t);},i.prototype._updateRetainedTiles=function(t,e){for(var o={},r={},a=Math.max(e-i.maxOverzooming,this._source.minzoom),n=Math.max(e+i.maxUnderzooming,this._source.minzoom),s={},l=0,c=t;l<c.length;l+=1){var u=c[l],h=this._addTile(u);o[u.key]=u,h.hasData()||e<this._source.maxzoom&&(s[u.key]=u);}this._retainLoadedChildren(s,e,n,o);for(var p=0,d=t;p<d.length;p+=1){var _=d[p],f=this._tiles[_.key];if(!f.hasData()){if(e+1>this._source.maxzoom){var m=_.children(this._source.maxzoom)[0],g=this.getTile(m);if(g&&g.hasData()){o[m.key]=m;continue}}else {var v=_.children(this._source.maxzoom);if(o[v[0].key]&&o[v[1].key]&&o[v[2].key]&&o[v[3].key])continue}for(var y=f.wasRequested(),x=_.overscaledZ-1;x>=a;--x){var b=_.scaledTo(x);if(r[b.key])break;if(r[b.key]=!0,!(f=this.getTile(b))&&y&&(f=this._addTile(b)),f&&(o[b.key]=b,y=f.wasRequested(),f.hasData()))break}}}return o},i.prototype._updateLoadedParentTileCache=function(){for(var t in this._loadedParentTiles={},this._tiles){for(var e=[],i=void 0,o=this._tiles[t].tileID;o.overscaledZ>0;){if(o.key in this._loadedParentTiles){i=this._loadedParentTiles[o.key];break}e.push(o.key);var r=o.scaledTo(o.overscaledZ-1);if(i=this._getLoadedTile(r))break;o=r;}for(var a=0,n=e;a<n.length;a+=1)this._loadedParentTiles[n[a]]=i;}},i.prototype._addTile=function(e){var i=this._tiles[e.key];if(i)return i;(i=this._cache.getAndRemove(e))&&(this._setTileReloadTimer(e.key,i),i.tileID=e,this._state.initializeTileState(i,this.map?this.map.painter:null),this._cacheTimers[e.key]&&(clearTimeout(this._cacheTimers[e.key]),delete this._cacheTimers[e.key],this._setTileReloadTimer(e.key,i)));var o=Boolean(i);return o||(i=new t.Tile(e,this._source.tileSize*e.overscaleFactor()),this._loadTile(i,this._tileLoaded.bind(this,i,e.key,i.state))),i?(i.uses++,this._tiles[e.key]=i,o||this._source.fire(new t.Event(\"dataloading\",{tile:i,coord:i.tileID,dataType:\"source\"})),i):null},i.prototype._setTileReloadTimer=function(t,e){var i=this;t in this._timers&&(clearTimeout(this._timers[t]),delete this._timers[t]);var o=e.getExpiryTimeout();o&&(this._timers[t]=setTimeout((function(){i._reloadTile(t,\"expired\"),delete i._timers[t];}),o));},i.prototype._removeTile=function(t){var e=this._tiles[t];e&&(e.uses--,delete this._tiles[t],this._timers[t]&&(clearTimeout(this._timers[t]),delete this._timers[t]),e.uses>0||(e.hasData()&&\"reloading\"!==e.state?this._cache.add(e.tileID,e,e.getExpiryTimeout()):(e.aborted=!0,this._abortTile(e),this._unloadTile(e))));},i.prototype.clearTiles=function(){for(var t in this._shouldReloadOnResume=!1,this._paused=!1,this._tiles)this._removeTile(t);this._cache.reset();},i.prototype.tilesIn=function(e,i,o){var r=this,a=[],n=this.transform;if(!n)return a;for(var s=o?n.getCameraQueryGeometry(e):e,l=e.map((function(t){return n.pointCoordinate(t)})),c=s.map((function(t){return n.pointCoordinate(t)})),u=this.getIds(),h=1/0,p=1/0,d=-1/0,_=-1/0,f=0,m=c;f<m.length;f+=1){var g=m[f];h=Math.min(h,g.x),p=Math.min(p,g.y),d=Math.max(d,g.x),_=Math.max(_,g.y);}for(var v=function(e){var o=r._tiles[u[e]];if(!o.holdingForFade()){var s=o.tileID,f=Math.pow(2,n.zoom-o.tileID.overscaledZ),m=i*o.queryPadding*t.EXTENT/o.tileSize/f,g=[s.getTilePoint(new t.MercatorCoordinate(h,p)),s.getTilePoint(new t.MercatorCoordinate(d,_))];if(g[0].x-m<t.EXTENT&&g[0].y-m<t.EXTENT&&g[1].x+m>=0&&g[1].y+m>=0){var v=l.map((function(t){return s.getTilePoint(t)})),y=c.map((function(t){return s.getTilePoint(t)}));a.push({tile:o,tileID:s,queryGeometry:v,cameraQueryGeometry:y,scale:f});}}},y=0;y<u.length;y++)v(y);return a},i.prototype.getVisibleCoordinates=function(t){for(var e=this,i=this.getRenderableIds(t).map((function(t){return e._tiles[t].tileID})),o=0,r=i;o<r.length;o+=1){var a=r[o];a.posMatrix=this.transform.calculatePosMatrix(a.toUnwrapped());}return i},i.prototype.hasTransition=function(){if(this._source.hasTransition())return !0;if(Mt(this._source.type))for(var e in this._tiles){var i=this._tiles[e];if(void 0!==i.fadeEndTime&&i.fadeEndTime>=t.browser.now())return !0}return !1},i.prototype.setFeatureState=function(t,e,i){this._state.updateState(t=t||\"_geojsonTileLayer\",e,i);},i.prototype.removeFeatureState=function(t,e,i){this._state.removeFeatureState(t=t||\"_geojsonTileLayer\",e,i);},i.prototype.getFeatureState=function(t,e){return this._state.getState(t=t||\"_geojsonTileLayer\",e)},i.prototype.setDependencies=function(t,e,i){var o=this._tiles[t];o&&o.setDependencies(e,i);},i.prototype.reloadTilesForDependencies=function(t,e){for(var i in this._tiles)this._tiles[i].hasDependency(t,e)&&this._reloadTile(i,\"reloading\");this._cache.filter((function(i){return !i.hasDependency(t,e)}));},i}(t.Evented);function At(t,e){var i=Math.abs(2*t.wrap)-+(t.wrap<0),o=Math.abs(2*e.wrap)-+(e.wrap<0);return t.overscaledZ-e.overscaledZ||o-i||e.canonical.y-t.canonical.y||e.canonical.x-t.canonical.x}function Mt(t){return \"raster\"===t||\"image\"===t||\"video\"===t}function Lt(){return new t.window.Worker(Kr.workerUrl)}Dt.maxOverzooming=10,Dt.maxUnderzooming=3;var Rt=\"mapboxgl_preloaded_worker_pool\",kt=function(){this.active={};};kt.prototype.acquire=function(t){if(!this.workers)for(this.workers=[];this.workers.length<kt.workerCount;)this.workers.push(new Lt);return this.active[t]=!0,this.workers.slice()},kt.prototype.release=function(t){delete this.active[t],0===this.numActive()&&(this.workers.forEach((function(t){t.terminate();})),this.workers=null);},kt.prototype.isPreloaded=function(){return !!this.active[Rt]},kt.prototype.numActive=function(){return Object.keys(this.active).length};var Bt,Ot=Math.floor(t.browser.hardwareConcurrency/2);function Ft(){return Bt||(Bt=new kt),Bt}function Ut(e,i){var o={};for(var r in e)\"ref\"!==r&&(o[r]=e[r]);return t.refProperties.forEach((function(t){t in i&&(o[t]=i[t]);})),o}function Nt(t){t=t.slice();for(var e=Object.create(null),i=0;i<t.length;i++)e[t[i].id]=t[i];for(var o=0;o<t.length;o++)\"ref\"in t[o]&&(t[o]=Ut(t[o],e[t[o].ref]));return t}kt.workerCount=Math.max(Math.min(Ot,6),1);var Zt={setStyle:\"setStyle\",addLayer:\"addLayer\",removeLayer:\"removeLayer\",setPaintProperty:\"setPaintProperty\",setLayoutProperty:\"setLayoutProperty\",setFilter:\"setFilter\",addSource:\"addSource\",removeSource:\"removeSource\",setGeoJSONSourceData:\"setGeoJSONSourceData\",setLayerZoomRange:\"setLayerZoomRange\",setLayerProperty:\"setLayerProperty\",setCenter:\"setCenter\",setZoom:\"setZoom\",setBearing:\"setBearing\",setPitch:\"setPitch\",setSprite:\"setSprite\",setGlyphs:\"setGlyphs\",setTransition:\"setTransition\",setLight:\"setLight\"};function qt(t,e,i){i.push({command:Zt.addSource,args:[t,e[t]]});}function jt(t,e,i){e.push({command:Zt.removeSource,args:[t]}),i[t]=!0;}function Vt(t,e,i,o){jt(t,i,o),qt(t,e,i);}function Gt(e,i,o){var r;for(r in e[o])if(e[o].hasOwnProperty(r)&&\"data\"!==r&&!t.deepEqual(e[o][r],i[o][r]))return !1;for(r in i[o])if(i[o].hasOwnProperty(r)&&\"data\"!==r&&!t.deepEqual(e[o][r],i[o][r]))return !1;return !0}function Wt(e,i,o,r,a,n){var s;for(s in i=i||{},e=e||{})e.hasOwnProperty(s)&&(t.deepEqual(e[s],i[s])||o.push({command:n,args:[r,s,i[s],a]}));for(s in i)i.hasOwnProperty(s)&&!e.hasOwnProperty(s)&&(t.deepEqual(e[s],i[s])||o.push({command:n,args:[r,s,i[s],a]}));}function Xt(t){return t.id}function Ht(t,e){return t[e.id]=e,t}var Kt=function(t,e){this.reset(t,e);};Kt.prototype.reset=function(t,e){this.points=t||[],this._distances=[0];for(var i=1;i<this.points.length;i++)this._distances[i]=this._distances[i-1]+this.points[i].dist(this.points[i-1]);this.length=this._distances[this._distances.length-1],this.padding=Math.min(e||0,.5*this.length),this.paddedLength=this.length-2*this.padding;},Kt.prototype.lerp=function(e){if(1===this.points.length)return this.points[0];e=t.clamp(e,0,1);for(var i=1,o=this._distances[i],r=e*this.paddedLength+this.padding;o<r&&i<this._distances.length;)o=this._distances[++i];var a=i-1,n=this._distances[a],s=o-n,l=s>0?(r-n)/s:0;return this.points[a].mult(1-l).add(this.points[i].mult(l))};var Yt=function(t,e,i){var o=this.boxCells=[],r=this.circleCells=[];this.xCellCount=Math.ceil(t/i),this.yCellCount=Math.ceil(e/i);for(var a=0;a<this.xCellCount*this.yCellCount;a++)o.push([]),r.push([]);this.circleKeys=[],this.boxKeys=[],this.bboxes=[],this.circles=[],this.width=t,this.height=e,this.xScale=this.xCellCount/t,this.yScale=this.yCellCount/e,this.boxUid=0,this.circleUid=0;};function Jt(e,i,o,r,a){var n=t.create();return i?(t.scale(n,n,[1/a,1/a,1]),o||t.rotateZ(n,n,r.angle)):t.multiply(n,r.labelPlaneMatrix,e),n}function Qt(e,i,o,r,a){if(i){var n=t.clone(e);return t.scale(n,n,[a,a,1]),o||t.rotateZ(n,n,-r.angle),n}return r.glCoordMatrix}function $t(e,i){var o=[e.x,e.y,0,1];ue(o,o,i);var r=o[3];return {point:new t.Point(o[0]/r,o[1]/r),signedDistanceFromCamera:r}}function te(t,e){return .5+t/e*.5}function ee(t,e){var i=t[0]/t[3],o=t[1]/t[3];return i>=-e[0]&&i<=e[0]&&o>=-e[1]&&o<=e[1]}function ie(e,i,o,r,a,n,s,l){var c=r?e.textSizeData:e.iconSizeData,u=t.evaluateSizeForZoom(c,o.transform.zoom),h=[256/o.width*2+1,256/o.height*2+1],p=r?e.text.dynamicLayoutVertexArray:e.icon.dynamicLayoutVertexArray;p.clear();for(var d=e.lineVertexArray,_=r?e.text.placedSymbolArray:e.icon.placedSymbolArray,f=o.transform.width/o.transform.height,m=!1,g=0;g<_.length;g++){var v=_.get(g);if(v.hidden||v.writingMode===t.WritingMode.vertical&&!m)ce(v.numGlyphs,p);else {m=!1;var y=[v.anchorX,v.anchorY,0,1];if(t.transformMat4(y,y,i),ee(y,h)){var x=te(o.transform.cameraToCenterDistance,y[3]),b=t.evaluateSizeForFeature(c,u,v),w=s?b/x:b*x,T=new t.Point(v.anchorX,v.anchorY),E=$t(T,a).point,I={},P=ae(v,w,!1,l,i,a,n,e.glyphOffsetArray,d,p,E,T,I,f);m=P.useVertical,(P.notEnoughRoom||m||P.needsFlipping&&ae(v,w,!0,l,i,a,n,e.glyphOffsetArray,d,p,E,T,I,f).notEnoughRoom)&&ce(v.numGlyphs,p);}else ce(v.numGlyphs,p);}}r?e.text.dynamicLayoutVertexBuffer.updateData(p):e.icon.dynamicLayoutVertexBuffer.updateData(p);}function oe(t,e,i,o,r,a,n,s,l,c,u){var h=s.glyphStartIndex+s.numGlyphs,p=s.lineStartIndex,d=s.lineStartIndex+s.lineLength,_=e.getoffsetX(s.glyphStartIndex),f=e.getoffsetX(h-1),m=se(t*_,i,o,r,a,n,s.segment,p,d,l,c,u);if(!m)return null;var g=se(t*f,i,o,r,a,n,s.segment,p,d,l,c,u);return g?{first:m,last:g}:null}function re(e,i,o,r){return e===t.WritingMode.horizontal&&Math.abs(o.y-i.y)>Math.abs(o.x-i.x)*r?{useVertical:!0}:(e===t.WritingMode.vertical?i.y<o.y:i.x>o.x)?{needsFlipping:!0}:null}function ae(e,i,o,r,a,n,s,l,c,u,h,p,d,_){var f,m=i/24,g=e.lineOffsetX*m,v=e.lineOffsetY*m;if(e.numGlyphs>1){var y=e.glyphStartIndex+e.numGlyphs,x=e.lineStartIndex,b=e.lineStartIndex+e.lineLength,w=oe(m,l,g,v,o,h,p,e,c,n,d);if(!w)return {notEnoughRoom:!0};var T=$t(w.first.point,s).point,E=$t(w.last.point,s).point;if(r&&!o){var I=re(e.writingMode,T,E,_);if(I)return I}f=[w.first];for(var P=e.glyphStartIndex+1;P<y-1;P++)f.push(se(m*l.getoffsetX(P),g,v,o,h,p,e.segment,x,b,c,n,d));f.push(w.last);}else {if(r&&!o){var S=$t(p,a).point,C=e.lineStartIndex+e.segment+1,z=new t.Point(c.getx(C),c.gety(C)),D=$t(z,a),A=D.signedDistanceFromCamera>0?D.point:ne(p,z,S,1,a),M=re(e.writingMode,S,A,_);if(M)return M}var L=se(m*l.getoffsetX(e.glyphStartIndex),g,v,o,h,p,e.segment,e.lineStartIndex,e.lineStartIndex+e.lineLength,c,n,d);if(!L)return {notEnoughRoom:!0};f=[L];}for(var R=0,k=f;R<k.length;R+=1){var B=k[R];t.addDynamicAttributes(u,B.point,B.angle);}return {}}function ne(t,e,i,o,r){var a=$t(t.add(t.sub(e)._unit()),r).point,n=i.sub(a);return i.add(n._mult(o/n.mag()))}function se(e,i,o,r,a,n,s,l,c,u,h,p){var d=r?e-i:e+i,_=d>0?1:-1,f=0;r&&(_*=-1,f=Math.PI),_<0&&(f+=Math.PI);for(var m=_>0?l+s:l+s+1,g=a,v=a,y=0,x=0,b=Math.abs(d),w=[];y+x<=b;){if((m+=_)<l||m>=c)return null;if(v=g,w.push(g),void 0===(g=p[m])){var T=new t.Point(u.getx(m),u.gety(m)),E=$t(T,h);if(E.signedDistanceFromCamera>0)g=p[m]=E.point;else {var I=m-_;g=ne(0===y?n:new t.Point(u.getx(I),u.gety(I)),T,v,b-y+1,h);}}y+=x,x=v.dist(g);}var P=(b-y)/x,S=g.sub(v),C=S.mult(P)._add(v);C._add(S._unit()._perp()._mult(o*_));var z=f+Math.atan2(g.y-v.y,g.x-v.x);return w.push(C),{point:C,angle:z,path:w}}Yt.prototype.keysLength=function(){return this.boxKeys.length+this.circleKeys.length},Yt.prototype.insert=function(t,e,i,o,r){this._forEachCell(e,i,o,r,this._insertBoxCell,this.boxUid++),this.boxKeys.push(t),this.bboxes.push(e),this.bboxes.push(i),this.bboxes.push(o),this.bboxes.push(r);},Yt.prototype.insertCircle=function(t,e,i,o){this._forEachCell(e-o,i-o,e+o,i+o,this._insertCircleCell,this.circleUid++),this.circleKeys.push(t),this.circles.push(e),this.circles.push(i),this.circles.push(o);},Yt.prototype._insertBoxCell=function(t,e,i,o,r,a){this.boxCells[r].push(a);},Yt.prototype._insertCircleCell=function(t,e,i,o,r,a){this.circleCells[r].push(a);},Yt.prototype._query=function(t,e,i,o,r,a){if(i<0||t>this.width||o<0||e>this.height)return !r&&[];var n=[];if(t<=0&&e<=0&&this.width<=i&&this.height<=o){if(r)return !0;for(var s=0;s<this.boxKeys.length;s++)n.push({key:this.boxKeys[s],x1:this.bboxes[4*s],y1:this.bboxes[4*s+1],x2:this.bboxes[4*s+2],y2:this.bboxes[4*s+3]});for(var l=0;l<this.circleKeys.length;l++){var c=this.circles[3*l],u=this.circles[3*l+1],h=this.circles[3*l+2];n.push({key:this.circleKeys[l],x1:c-h,y1:u-h,x2:c+h,y2:u+h});}return a?n.filter(a):n}return this._forEachCell(t,e,i,o,this._queryCell,n,{hitTest:r,seenUids:{box:{},circle:{}}},a),r?n.length>0:n},Yt.prototype._queryCircle=function(t,e,i,o,r){var a=t-i,n=t+i,s=e-i,l=e+i;if(n<0||a>this.width||l<0||s>this.height)return !o&&[];var c=[];return this._forEachCell(a,s,n,l,this._queryCellCircle,c,{hitTest:o,circle:{x:t,y:e,radius:i},seenUids:{box:{},circle:{}}},r),o?c.length>0:c},Yt.prototype.query=function(t,e,i,o,r){return this._query(t,e,i,o,!1,r)},Yt.prototype.hitTest=function(t,e,i,o,r){return this._query(t,e,i,o,!0,r)},Yt.prototype.hitTestCircle=function(t,e,i,o){return this._queryCircle(t,e,i,!0,o)},Yt.prototype._queryCell=function(t,e,i,o,r,a,n,s){var l=n.seenUids,c=this.boxCells[r];if(null!==c)for(var u=this.bboxes,h=0,p=c;h<p.length;h+=1){var d=p[h];if(!l.box[d]){l.box[d]=!0;var _=4*d;if(t<=u[_+2]&&e<=u[_+3]&&i>=u[_+0]&&o>=u[_+1]&&(!s||s(this.boxKeys[d]))){if(n.hitTest)return a.push(!0),!0;a.push({key:this.boxKeys[d],x1:u[_],y1:u[_+1],x2:u[_+2],y2:u[_+3]});}}}var f=this.circleCells[r];if(null!==f)for(var m=this.circles,g=0,v=f;g<v.length;g+=1){var y=v[g];if(!l.circle[y]){l.circle[y]=!0;var x=3*y;if(this._circleAndRectCollide(m[x],m[x+1],m[x+2],t,e,i,o)&&(!s||s(this.circleKeys[y]))){if(n.hitTest)return a.push(!0),!0;var b=m[x],w=m[x+1],T=m[x+2];a.push({key:this.circleKeys[y],x1:b-T,y1:w-T,x2:b+T,y2:w+T});}}}},Yt.prototype._queryCellCircle=function(t,e,i,o,r,a,n,s){var l=n.circle,c=n.seenUids,u=this.boxCells[r];if(null!==u)for(var h=this.bboxes,p=0,d=u;p<d.length;p+=1){var _=d[p];if(!c.box[_]){c.box[_]=!0;var f=4*_;if(this._circleAndRectCollide(l.x,l.y,l.radius,h[f+0],h[f+1],h[f+2],h[f+3])&&(!s||s(this.boxKeys[_])))return a.push(!0),!0}}var m=this.circleCells[r];if(null!==m)for(var g=this.circles,v=0,y=m;v<y.length;v+=1){var x=y[v];if(!c.circle[x]){c.circle[x]=!0;var b=3*x;if(this._circlesCollide(g[b],g[b+1],g[b+2],l.x,l.y,l.radius)&&(!s||s(this.circleKeys[x])))return a.push(!0),!0}}},Yt.prototype._forEachCell=function(t,e,i,o,r,a,n,s){for(var l=this._convertToXCellCoord(t),c=this._convertToYCellCoord(e),u=this._convertToXCellCoord(i),h=this._convertToYCellCoord(o),p=l;p<=u;p++)for(var d=c;d<=h;d++)if(r.call(this,t,e,i,o,this.xCellCount*d+p,a,n,s))return},Yt.prototype._convertToXCellCoord=function(t){return Math.max(0,Math.min(this.xCellCount-1,Math.floor(t*this.xScale)))},Yt.prototype._convertToYCellCoord=function(t){return Math.max(0,Math.min(this.yCellCount-1,Math.floor(t*this.yScale)))},Yt.prototype._circlesCollide=function(t,e,i,o,r,a){var n=o-t,s=r-e,l=i+a;return l*l>n*n+s*s},Yt.prototype._circleAndRectCollide=function(t,e,i,o,r,a,n){var s=(a-o)/2,l=Math.abs(t-(o+s));if(l>s+i)return !1;var c=(n-r)/2,u=Math.abs(e-(r+c));if(u>c+i)return !1;if(l<=s||u<=c)return !0;var h=l-s,p=u-c;return h*h+p*p<=i*i};var le=new Float32Array([-1/0,-1/0,0,-1/0,-1/0,0,-1/0,-1/0,0,-1/0,-1/0,0]);function ce(t,e){for(var i=0;i<t;i++){var o=e.length;e.resize(o+4),e.float32.set(le,3*o);}}function ue(t,e,i){var o=e[0],r=e[1];return t[0]=i[0]*o+i[4]*r+i[12],t[1]=i[1]*o+i[5]*r+i[13],t[3]=i[3]*o+i[7]*r+i[15],t}var he=function(t,e,i){void 0===e&&(e=new Yt(t.width+200,t.height+200,25)),void 0===i&&(i=new Yt(t.width+200,t.height+200,25)),this.transform=t,this.grid=e,this.ignoredGrid=i,this.pitchfactor=Math.cos(t._pitch)*t.cameraToCenterDistance,this.screenRightBoundary=t.width+100,this.screenBottomBoundary=t.height+100,this.gridRightBoundary=t.width+200,this.gridBottomBoundary=t.height+200;};function pe(e,i,o){return i*(t.EXTENT/(e.tileSize*Math.pow(2,o-e.tileID.overscaledZ)))}he.prototype.placeCollisionBox=function(t,e,i,o,r){var a=this.projectAndGetPerspectiveRatio(o,t.anchorPointX,t.anchorPointY),n=i*a.perspectiveRatio,s=t.x1*n+a.point.x,l=t.y1*n+a.point.y,c=t.x2*n+a.point.x,u=t.y2*n+a.point.y;return !this.isInsideGrid(s,l,c,u)||!e&&this.grid.hitTest(s,l,c,u,r)?{box:[],offscreen:!1}:{box:[s,l,c,u],offscreen:this.isOffscreen(s,l,c,u)}},he.prototype.placeCollisionCircles=function(e,i,o,r,a,n,s,l,c,u,h,p,d){var _=[],f=new t.Point(i.anchorX,i.anchorY),m=$t(f,n),g=te(this.transform.cameraToCenterDistance,m.signedDistanceFromCamera),v=(u?a/g:a*g)/t.ONE_EM,y=$t(f,s).point,x=oe(v,r,i.lineOffsetX*v,i.lineOffsetY*v,!1,y,f,i,o,s,{}),b=!1,w=!1,T=!0;if(x){for(var E=.5*p*g+d,I=new t.Point(-100,-100),P=new t.Point(this.screenRightBoundary,this.screenBottomBoundary),S=new Kt,C=x.first,z=x.last,D=[],A=C.path.length-1;A>=1;A--)D.push(C.path[A]);for(var M=1;M<z.path.length;M++)D.push(z.path[M]);var L=2.5*E;if(l){var R=D.map((function(t){return $t(t,l)}));D=R.some((function(t){return t.signedDistanceFromCamera<=0}))?[]:R.map((function(t){return t.point}));}var k=[];if(D.length>0){for(var B=D[0].clone(),O=D[0].clone(),F=1;F<D.length;F++)B.x=Math.min(B.x,D[F].x),B.y=Math.min(B.y,D[F].y),O.x=Math.max(O.x,D[F].x),O.y=Math.max(O.y,D[F].y);k=B.x>=I.x&&O.x<=P.x&&B.y>=I.y&&O.y<=P.y?[D]:O.x<I.x||B.x>P.x||O.y<I.y||B.y>P.y?[]:t.clipLine([D],I.x,I.y,P.x,P.y);}for(var U=0,N=k;U<N.length;U+=1){var Z;S.reset(N[U],.25*E),Z=S.length<=.5*E?1:Math.ceil(S.paddedLength/L)+1;for(var q=0;q<Z;q++){var j=q/Math.max(Z-1,1),V=S.lerp(j),G=V.x+100,W=V.y+100;_.push(G,W,E,0);var X=G-E,H=W-E,K=G+E,Y=W+E;if(T=T&&this.isOffscreen(X,H,K,Y),w=w||this.isInsideGrid(X,H,K,Y),!e&&this.grid.hitTestCircle(G,W,E,h)&&(b=!0,!c))return {circles:[],offscreen:!1,collisionDetected:b}}}}return {circles:!c&&b||!w?[]:_,offscreen:T,collisionDetected:b}},he.prototype.queryRenderedSymbols=function(e){if(0===e.length||0===this.grid.keysLength()&&0===this.ignoredGrid.keysLength())return {};for(var i=[],o=1/0,r=1/0,a=-1/0,n=-1/0,s=0,l=e;s<l.length;s+=1){var c=l[s],u=new t.Point(c.x+100,c.y+100);o=Math.min(o,u.x),r=Math.min(r,u.y),a=Math.max(a,u.x),n=Math.max(n,u.y),i.push(u);}for(var h={},p={},d=0,_=this.grid.query(o,r,a,n).concat(this.ignoredGrid.query(o,r,a,n));d<_.length;d+=1){var f=_[d],m=f.key;if(void 0===h[m.bucketInstanceId]&&(h[m.bucketInstanceId]={}),!h[m.bucketInstanceId][m.featureIndex]){var g=[new t.Point(f.x1,f.y1),new t.Point(f.x2,f.y1),new t.Point(f.x2,f.y2),new t.Point(f.x1,f.y2)];t.polygonIntersectsPolygon(i,g)&&(h[m.bucketInstanceId][m.featureIndex]=!0,void 0===p[m.bucketInstanceId]&&(p[m.bucketInstanceId]=[]),p[m.bucketInstanceId].push(m.featureIndex));}}return p},he.prototype.insertCollisionBox=function(t,e,i,o,r){(e?this.ignoredGrid:this.grid).insert({bucketInstanceId:i,featureIndex:o,collisionGroupID:r},t[0],t[1],t[2],t[3]);},he.prototype.insertCollisionCircles=function(t,e,i,o,r){for(var a=e?this.ignoredGrid:this.grid,n={bucketInstanceId:i,featureIndex:o,collisionGroupID:r},s=0;s<t.length;s+=4)a.insertCircle(n,t[s],t[s+1],t[s+2]);},he.prototype.projectAndGetPerspectiveRatio=function(e,i,o){var r=[i,o,0,1];return ue(r,r,e),{point:new t.Point((r[0]/r[3]+1)/2*this.transform.width+100,(-r[1]/r[3]+1)/2*this.transform.height+100),perspectiveRatio:.5+this.transform.cameraToCenterDistance/r[3]*.5}},he.prototype.isOffscreen=function(t,e,i,o){return i<100||t>=this.screenRightBoundary||o<100||e>this.screenBottomBoundary},he.prototype.isInsideGrid=function(t,e,i,o){return i>=0&&t<this.gridRightBoundary&&o>=0&&e<this.gridBottomBoundary},he.prototype.getViewportMatrix=function(){var e=t.identity([]);return t.translate(e,e,[-100,-100,0]),e};var de=function(t,e,i,o){this.opacity=t?Math.max(0,Math.min(1,t.opacity+(t.placed?e:-e))):o&&i?1:0,this.placed=i;};de.prototype.isHidden=function(){return 0===this.opacity&&!this.placed};var _e=function(t,e,i,o,r){this.text=new de(t?t.text:null,e,i,r),this.icon=new de(t?t.icon:null,e,o,r);};_e.prototype.isHidden=function(){return this.text.isHidden()&&this.icon.isHidden()};var fe=function(t,e,i){this.text=t,this.icon=e,this.skipFade=i;},me=function(){this.invProjMatrix=t.create(),this.viewportMatrix=t.create(),this.circles=[];},ge=function(t,e,i,o,r){this.bucketInstanceId=t,this.featureIndex=e,this.sourceLayerIndex=i,this.bucketIndex=o,this.tileID=r;},ve=function(t){this.crossSourceCollisions=t,this.maxGroupID=0,this.collisionGroups={};};function ye(e,i,o,r,a){var n=t.getAnchorAlignment(e),s=-(n.horizontalAlign-.5)*i,l=-(n.verticalAlign-.5)*o,c=t.evaluateVariableOffset(e,r);return new t.Point(s+c[0]*a,l+c[1]*a)}function xe(e,i,o,r,a,n){var s=e.x1,l=e.x2,c=e.y1,u=e.y2,h=e.anchorPointX,p=e.anchorPointY,d=new t.Point(i,o);return r&&d._rotate(a?n:-n),{x1:s+d.x,y1:c+d.y,x2:l+d.x,y2:u+d.y,anchorPointX:h,anchorPointY:p}}ve.prototype.get=function(t){if(this.crossSourceCollisions)return {ID:0,predicate:null};if(!this.collisionGroups[t]){var e=++this.maxGroupID;this.collisionGroups[t]={ID:e,predicate:function(t){return t.collisionGroupID===e}};}return this.collisionGroups[t]};var be=function(t,e,i,o){this.transform=t.clone(),this.collisionIndex=new he(this.transform),this.placements={},this.opacities={},this.variableOffsets={},this.stale=!1,this.commitTime=0,this.fadeDuration=e,this.retainedQueryData={},this.collisionGroups=new ve(i),this.collisionCircleArrays={},this.prevPlacement=o,o&&(o.prevPlacement=void 0),this.placedOrientations={};};function we(t,e,i,o,r){t.emplaceBack(e?1:0,i?1:0,o||0,r||0),t.emplaceBack(e?1:0,i?1:0,o||0,r||0),t.emplaceBack(e?1:0,i?1:0,o||0,r||0),t.emplaceBack(e?1:0,i?1:0,o||0,r||0);}be.prototype.getBucketParts=function(e,i,o,r){var a=o.getBucket(i),n=o.latestFeatureIndex;if(a&&n&&i.id===a.layerIds[0]){var s=o.collisionBoxArray,l=a.layers[0].layout,c=Math.pow(2,this.transform.zoom-o.tileID.overscaledZ),u=o.tileSize/t.EXTENT,h=this.transform.calculatePosMatrix(o.tileID.toUnwrapped()),p=\"map\"===l.get(\"text-pitch-alignment\"),d=\"map\"===l.get(\"text-rotation-alignment\"),_=pe(o,1,this.transform.zoom),f=Jt(h,p,d,this.transform,_),m=null;if(p){var g=Qt(h,p,d,this.transform,_);m=t.multiply([],this.transform.labelPlaneMatrix,g);}this.retainedQueryData[a.bucketInstanceId]=new ge(a.bucketInstanceId,n,a.sourceLayerIndex,a.index,o.tileID);var v={bucket:a,layout:l,posMatrix:h,textLabelPlaneMatrix:f,labelToScreenMatrix:m,scale:c,textPixelRatio:u,holdingForFade:o.holdingForFade(),collisionBoxArray:s,partiallyEvaluatedTextSize:t.evaluateSizeForZoom(a.textSizeData,this.transform.zoom),collisionGroup:this.collisionGroups.get(a.sourceID)};if(r)for(var y=0,x=a.sortKeyRanges;y<x.length;y+=1){var b=x[y];e.push({sortKey:b.sortKey,symbolInstanceStart:b.symbolInstanceStart,symbolInstanceEnd:b.symbolInstanceEnd,parameters:v});}else e.push({symbolInstanceStart:0,symbolInstanceEnd:a.symbolInstances.length,parameters:v});}},be.prototype.attemptAnchorPlacement=function(t,e,i,o,r,a,n,s,l,c,u,h,p,d,_){var f,m=[h.textOffset0,h.textOffset1],g=ye(t,i,o,m,r),v=this.collisionIndex.placeCollisionBox(xe(e,g.x,g.y,a,n,this.transform.angle),u,s,l,c.predicate);if(!_||0!==this.collisionIndex.placeCollisionBox(xe(_,g.x,g.y,a,n,this.transform.angle),u,s,l,c.predicate).box.length)return v.box.length>0?(this.prevPlacement&&this.prevPlacement.variableOffsets[h.crossTileID]&&this.prevPlacement.placements[h.crossTileID]&&this.prevPlacement.placements[h.crossTileID].text&&(f=this.prevPlacement.variableOffsets[h.crossTileID].anchor),this.variableOffsets[h.crossTileID]={textOffset:m,width:i,height:o,anchor:t,textBoxScale:r,prevAnchor:f},this.markUsedJustification(p,t,h,d),p.allowVerticalPlacement&&(this.markUsedOrientation(p,d,h),this.placedOrientations[h.crossTileID]=d),{shift:g,placedGlyphBoxes:v}):void 0},be.prototype.placeLayerBucketPart=function(e,i,o){var r=this,a=e.parameters,n=a.bucket,s=a.layout,l=a.posMatrix,c=a.textLabelPlaneMatrix,u=a.labelToScreenMatrix,h=a.textPixelRatio,p=a.holdingForFade,d=a.collisionBoxArray,_=a.partiallyEvaluatedTextSize,f=a.collisionGroup,m=s.get(\"text-optional\"),g=s.get(\"icon-optional\"),v=s.get(\"text-allow-overlap\"),y=s.get(\"icon-allow-overlap\"),x=\"map\"===s.get(\"text-rotation-alignment\"),b=\"map\"===s.get(\"text-pitch-alignment\"),w=\"none\"!==s.get(\"icon-text-fit\"),T=\"viewport-y\"===s.get(\"symbol-z-order\"),E=v&&(y||!n.hasIconData()||g),I=y&&(v||!n.hasTextData()||m);!n.collisionArrays&&d&&n.deserializeCollisionBoxes(d);var P=function(e,a){if(!i[e.crossTileID])if(p)r.placements[e.crossTileID]=new fe(!1,!1,!1);else {var d,T=!1,P=!1,S=!0,C=null,z={box:null,offscreen:null},D={box:null,offscreen:null},A=null,M=null,L=0,R=0,k=0;a.textFeatureIndex?L=a.textFeatureIndex:e.useRuntimeCollisionCircles&&(L=e.featureIndex),a.verticalTextFeatureIndex&&(R=a.verticalTextFeatureIndex);var B=a.textBox;if(B){var O=function(i){var o=t.WritingMode.horizontal;if(n.allowVerticalPlacement&&!i&&r.prevPlacement){var a=r.prevPlacement.placedOrientations[e.crossTileID];a&&(r.placedOrientations[e.crossTileID]=a,r.markUsedOrientation(n,o=a,e));}return o},F=function(i,o){if(n.allowVerticalPlacement&&e.numVerticalGlyphVertices>0&&a.verticalTextBox)for(var r=0,s=n.writingModes;r<s.length&&(s[r]===t.WritingMode.vertical?(z=o(),D=z):z=i(),!(z&&z.box&&z.box.length));r+=1);else z=i();};if(s.get(\"text-variable-anchor\")){var U=s.get(\"text-variable-anchor\");if(r.prevPlacement&&r.prevPlacement.variableOffsets[e.crossTileID]){var N=r.prevPlacement.variableOffsets[e.crossTileID];U.indexOf(N.anchor)>0&&(U=U.filter((function(t){return t!==N.anchor}))).unshift(N.anchor);}var Z=function(t,i,o){for(var a=t.x2-t.x1,s=t.y2-t.y1,c=e.textBoxScale,u=w&&!y?i:null,p={box:[],offscreen:!1},d=v?2*U.length:U.length,_=0;_<d;++_){var m=r.attemptAnchorPlacement(U[_%U.length],t,a,s,c,x,b,h,l,f,_>=U.length,e,n,o,u);if(m&&(p=m.placedGlyphBoxes)&&p.box&&p.box.length){T=!0,C=m.shift;break}}return p};F((function(){return Z(B,a.iconBox,t.WritingMode.horizontal)}),(function(){var i=a.verticalTextBox;return n.allowVerticalPlacement&&!(z&&z.box&&z.box.length)&&e.numVerticalGlyphVertices>0&&i?Z(i,a.verticalIconBox,t.WritingMode.vertical):{box:null,offscreen:null}})),z&&(T=z.box,S=z.offscreen);var q=O(z&&z.box);if(!T&&r.prevPlacement){var j=r.prevPlacement.variableOffsets[e.crossTileID];j&&(r.variableOffsets[e.crossTileID]=j,r.markUsedJustification(n,j.anchor,e,q));}}else {var V=function(t,i){var o=r.collisionIndex.placeCollisionBox(t,v,h,l,f.predicate);return o&&o.box&&o.box.length&&(r.markUsedOrientation(n,i,e),r.placedOrientations[e.crossTileID]=i),o};F((function(){return V(B,t.WritingMode.horizontal)}),(function(){var i=a.verticalTextBox;return n.allowVerticalPlacement&&e.numVerticalGlyphVertices>0&&i?V(i,t.WritingMode.vertical):{box:null,offscreen:null}})),O(z&&z.box&&z.box.length);}}if(T=(d=z)&&d.box&&d.box.length>0,S=d&&d.offscreen,e.useRuntimeCollisionCircles){var G=n.text.placedSymbolArray.get(e.centerJustifiedTextSymbolIndex),W=t.evaluateSizeForFeature(n.textSizeData,_,G),X=s.get(\"text-padding\");A=r.collisionIndex.placeCollisionCircles(v,G,n.lineVertexArray,n.glyphOffsetArray,W,l,c,u,o,b,f.predicate,e.collisionCircleDiameter,X),T=v||A.circles.length>0&&!A.collisionDetected,S=S&&A.offscreen;}if(a.iconFeatureIndex&&(k=a.iconFeatureIndex),a.iconBox){var H=function(t){var e=w&&C?xe(t,C.x,C.y,x,b,r.transform.angle):t;return r.collisionIndex.placeCollisionBox(e,y,h,l,f.predicate)};P=D&&D.box&&D.box.length&&a.verticalIconBox?(M=H(a.verticalIconBox)).box.length>0:(M=H(a.iconBox)).box.length>0,S=S&&M.offscreen;}var K=m||0===e.numHorizontalGlyphVertices&&0===e.numVerticalGlyphVertices,Y=g||0===e.numIconVertices;if(K||Y?Y?K||(P=P&&T):T=P&&T:P=T=P&&T,T&&d&&d.box&&r.collisionIndex.insertCollisionBox(d.box,s.get(\"text-ignore-placement\"),n.bucketInstanceId,D&&D.box&&R?R:L,f.ID),P&&M&&r.collisionIndex.insertCollisionBox(M.box,s.get(\"icon-ignore-placement\"),n.bucketInstanceId,k,f.ID),A&&(T&&r.collisionIndex.insertCollisionCircles(A.circles,s.get(\"text-ignore-placement\"),n.bucketInstanceId,L,f.ID),o)){var J=n.bucketInstanceId,Q=r.collisionCircleArrays[J];void 0===Q&&(Q=r.collisionCircleArrays[J]=new me);for(var $=0;$<A.circles.length;$+=4)Q.circles.push(A.circles[$+0]),Q.circles.push(A.circles[$+1]),Q.circles.push(A.circles[$+2]),Q.circles.push(A.collisionDetected?1:0);}r.placements[e.crossTileID]=new fe(T||E,P||I,S||n.justReloaded),i[e.crossTileID]=!0;}};if(T)for(var S=n.getSortedSymbolIndexes(this.transform.angle),C=S.length-1;C>=0;--C){var z=S[C];P(n.symbolInstances.get(z),n.collisionArrays[z]);}else for(var D=e.symbolInstanceStart;D<e.symbolInstanceEnd;D++)P(n.symbolInstances.get(D),n.collisionArrays[D]);if(o&&n.bucketInstanceId in this.collisionCircleArrays){var A=this.collisionCircleArrays[n.bucketInstanceId];t.invert(A.invProjMatrix,l),A.viewportMatrix=this.collisionIndex.getViewportMatrix();}n.justReloaded=!1;},be.prototype.markUsedJustification=function(e,i,o,r){var a;a=r===t.WritingMode.vertical?o.verticalPlacedTextSymbolIndex:{left:o.leftJustifiedTextSymbolIndex,center:o.centerJustifiedTextSymbolIndex,right:o.rightJustifiedTextSymbolIndex}[t.getAnchorJustification(i)];for(var n=0,s=[o.leftJustifiedTextSymbolIndex,o.centerJustifiedTextSymbolIndex,o.rightJustifiedTextSymbolIndex,o.verticalPlacedTextSymbolIndex];n<s.length;n+=1){var l=s[n];l>=0&&(e.text.placedSymbolArray.get(l).crossTileID=a>=0&&l!==a?0:o.crossTileID);}},be.prototype.markUsedOrientation=function(e,i,o){for(var r=i===t.WritingMode.horizontal||i===t.WritingMode.horizontalOnly?i:0,a=i===t.WritingMode.vertical?i:0,n=0,s=[o.leftJustifiedTextSymbolIndex,o.centerJustifiedTextSymbolIndex,o.rightJustifiedTextSymbolIndex];n<s.length;n+=1)e.text.placedSymbolArray.get(s[n]).placedOrientation=r;o.verticalPlacedTextSymbolIndex&&(e.text.placedSymbolArray.get(o.verticalPlacedTextSymbolIndex).placedOrientation=a);},be.prototype.commit=function(t){this.commitTime=t,this.zoomAtLastRecencyCheck=this.transform.zoom;var e=this.prevPlacement,i=!1;this.prevZoomAdjustment=e?e.zoomAdjustment(this.transform.zoom):0;var o=e?e.symbolFadeChange(t):1,r=e?e.opacities:{},a=e?e.variableOffsets:{},n=e?e.placedOrientations:{};for(var s in this.placements){var l=this.placements[s],c=r[s];c?(this.opacities[s]=new _e(c,o,l.text,l.icon),i=i||l.text!==c.text.placed||l.icon!==c.icon.placed):(this.opacities[s]=new _e(null,o,l.text,l.icon,l.skipFade),i=i||l.text||l.icon);}for(var u in r){var h=r[u];if(!this.opacities[u]){var p=new _e(h,o,!1,!1);p.isHidden()||(this.opacities[u]=p,i=i||h.text.placed||h.icon.placed);}}for(var d in a)this.variableOffsets[d]||!this.opacities[d]||this.opacities[d].isHidden()||(this.variableOffsets[d]=a[d]);for(var _ in n)this.placedOrientations[_]||!this.opacities[_]||this.opacities[_].isHidden()||(this.placedOrientations[_]=n[_]);i?this.lastPlacementChangeTime=t:\"number\"!=typeof this.lastPlacementChangeTime&&(this.lastPlacementChangeTime=e?e.lastPlacementChangeTime:t);},be.prototype.updateLayerOpacities=function(t,e){for(var i={},o=0,r=e;o<r.length;o+=1){var a=r[o],n=a.getBucket(t);n&&a.latestFeatureIndex&&t.id===n.layerIds[0]&&this.updateBucketOpacities(n,i,a.collisionBoxArray);}},be.prototype.updateBucketOpacities=function(e,i,o){var r=this;e.hasTextData()&&e.text.opacityVertexArray.clear(),e.hasIconData()&&e.icon.opacityVertexArray.clear(),e.hasIconCollisionBoxData()&&e.iconCollisionBox.collisionVertexArray.clear(),e.hasTextCollisionBoxData()&&e.textCollisionBox.collisionVertexArray.clear();var a=e.layers[0].layout,n=new _e(null,0,!1,!1,!0),s=a.get(\"text-allow-overlap\"),l=a.get(\"icon-allow-overlap\"),c=a.get(\"text-variable-anchor\"),u=\"map\"===a.get(\"text-rotation-alignment\"),h=\"map\"===a.get(\"text-pitch-alignment\"),p=\"none\"!==a.get(\"icon-text-fit\"),d=new _e(null,0,s&&(l||!e.hasIconData()||a.get(\"icon-optional\")),l&&(s||!e.hasTextData()||a.get(\"text-optional\")),!0);!e.collisionArrays&&o&&(e.hasIconCollisionBoxData()||e.hasTextCollisionBoxData())&&e.deserializeCollisionBoxes(o);for(var _=function(t,e,i){for(var o=0;o<e/4;o++)t.opacityVertexArray.emplaceBack(i);},f=function(o){var a=e.symbolInstances.get(o),s=a.numHorizontalGlyphVertices,l=a.numVerticalGlyphVertices,f=a.crossTileID,m=r.opacities[f];i[f]?m=n:m||(r.opacities[f]=m=d),i[f]=!0;var g=a.numIconVertices>0,v=r.placedOrientations[a.crossTileID],y=v===t.WritingMode.vertical,x=v===t.WritingMode.horizontal||v===t.WritingMode.horizontalOnly;if(s>0||l>0){var b=De(m.text);_(e.text,s,y?Ae:b),_(e.text,l,x?Ae:b);var w=m.text.isHidden();[a.rightJustifiedTextSymbolIndex,a.centerJustifiedTextSymbolIndex,a.leftJustifiedTextSymbolIndex].forEach((function(t){t>=0&&(e.text.placedSymbolArray.get(t).hidden=w||y?1:0);})),a.verticalPlacedTextSymbolIndex>=0&&(e.text.placedSymbolArray.get(a.verticalPlacedTextSymbolIndex).hidden=w||x?1:0);var T=r.variableOffsets[a.crossTileID];T&&r.markUsedJustification(e,T.anchor,a,v);var E=r.placedOrientations[a.crossTileID];E&&(r.markUsedJustification(e,\"left\",a,E),r.markUsedOrientation(e,E,a));}if(g){var I=De(m.icon),P=!(p&&a.verticalPlacedIconSymbolIndex&&y);a.placedIconSymbolIndex>=0&&(_(e.icon,a.numIconVertices,P?I:Ae),e.icon.placedSymbolArray.get(a.placedIconSymbolIndex).hidden=m.icon.isHidden()),a.verticalPlacedIconSymbolIndex>=0&&(_(e.icon,a.numVerticalIconVertices,P?Ae:I),e.icon.placedSymbolArray.get(a.verticalPlacedIconSymbolIndex).hidden=m.icon.isHidden());}if(e.hasIconCollisionBoxData()||e.hasTextCollisionBoxData()){var S=e.collisionArrays[o];if(S){var C=new t.Point(0,0);if(S.textBox||S.verticalTextBox){var z=!0;if(c){var D=r.variableOffsets[f];D?(C=ye(D.anchor,D.width,D.height,D.textOffset,D.textBoxScale),u&&C._rotate(h?r.transform.angle:-r.transform.angle)):z=!1;}S.textBox&&we(e.textCollisionBox.collisionVertexArray,m.text.placed,!z||y,C.x,C.y),S.verticalTextBox&&we(e.textCollisionBox.collisionVertexArray,m.text.placed,!z||x,C.x,C.y);}var A=Boolean(!x&&S.verticalIconBox);S.iconBox&&we(e.iconCollisionBox.collisionVertexArray,m.icon.placed,A,p?C.x:0,p?C.y:0),S.verticalIconBox&&we(e.iconCollisionBox.collisionVertexArray,m.icon.placed,!A,p?C.x:0,p?C.y:0);}}},m=0;m<e.symbolInstances.length;m++)f(m);if(e.sortFeatures(this.transform.angle),this.retainedQueryData[e.bucketInstanceId]&&(this.retainedQueryData[e.bucketInstanceId].featureSortOrder=e.featureSortOrder),e.hasTextData()&&e.text.opacityVertexBuffer&&e.text.opacityVertexBuffer.updateData(e.text.opacityVertexArray),e.hasIconData()&&e.icon.opacityVertexBuffer&&e.icon.opacityVertexBuffer.updateData(e.icon.opacityVertexArray),e.hasIconCollisionBoxData()&&e.iconCollisionBox.collisionVertexBuffer&&e.iconCollisionBox.collisionVertexBuffer.updateData(e.iconCollisionBox.collisionVertexArray),e.hasTextCollisionBoxData()&&e.textCollisionBox.collisionVertexBuffer&&e.textCollisionBox.collisionVertexBuffer.updateData(e.textCollisionBox.collisionVertexArray),e.bucketInstanceId in this.collisionCircleArrays){var g=this.collisionCircleArrays[e.bucketInstanceId];e.placementInvProjMatrix=g.invProjMatrix,e.placementViewportMatrix=g.viewportMatrix,e.collisionCircleArray=g.circles,delete this.collisionCircleArrays[e.bucketInstanceId];}},be.prototype.symbolFadeChange=function(t){return 0===this.fadeDuration?1:(t-this.commitTime)/this.fadeDuration+this.prevZoomAdjustment},be.prototype.zoomAdjustment=function(t){return Math.max(0,(this.transform.zoom-t)/1.5)},be.prototype.hasTransitions=function(t){return this.stale||t-this.lastPlacementChangeTime<this.fadeDuration},be.prototype.stillRecent=function(t,e){var i=this.zoomAtLastRecencyCheck===e?1-this.zoomAdjustment(e):1;return this.zoomAtLastRecencyCheck=e,this.commitTime+this.fadeDuration*i>t},be.prototype.setStale=function(){this.stale=!0;};var Te=Math.pow(2,25),Ee=Math.pow(2,24),Ie=Math.pow(2,17),Pe=Math.pow(2,16),Se=Math.pow(2,9),Ce=Math.pow(2,8),ze=Math.pow(2,1);function De(t){if(0===t.opacity&&!t.placed)return 0;if(1===t.opacity&&t.placed)return 4294967295;var e=t.placed?1:0,i=Math.floor(127*t.opacity);return i*Te+e*Ee+i*Ie+e*Pe+i*Se+e*Ce+i*ze+e}var Ae=0,Me=function(t){this._sortAcrossTiles=\"viewport-y\"!==t.layout.get(\"symbol-z-order\")&&void 0!==t.layout.get(\"symbol-sort-key\").constantOr(1),this._currentTileIndex=0,this._currentPartIndex=0,this._seenCrossTileIDs={},this._bucketParts=[];};Me.prototype.continuePlacement=function(t,e,i,o,r){for(var a=this._bucketParts;this._currentTileIndex<t.length;)if(e.getBucketParts(a,o,t[this._currentTileIndex],this._sortAcrossTiles),this._currentTileIndex++,r())return !0;for(this._sortAcrossTiles&&(this._sortAcrossTiles=!1,a.sort((function(t,e){return t.sortKey-e.sortKey})));this._currentPartIndex<a.length;)if(e.placeLayerBucketPart(a[this._currentPartIndex],this._seenCrossTileIDs,i),this._currentPartIndex++,r())return !0;return !1};var Le=function(t,e,i,o,r,a,n){this.placement=new be(t,r,a,n),this._currentPlacementIndex=e.length-1,this._forceFullPlacement=i,this._showCollisionBoxes=o,this._done=!1;};Le.prototype.isDone=function(){return this._done},Le.prototype.continuePlacement=function(e,i,o){for(var r=this,a=t.browser.now(),n=function(){var e=t.browser.now()-a;return !r._forceFullPlacement&&e>2};this._currentPlacementIndex>=0;){var s=i[e[this._currentPlacementIndex]],l=this.placement.collisionIndex.transform.zoom;if(\"symbol\"===s.type&&(!s.minzoom||s.minzoom<=l)&&(!s.maxzoom||s.maxzoom>l)){if(this._inProgressLayer||(this._inProgressLayer=new Me(s)),this._inProgressLayer.continuePlacement(o[s.source],this.placement,this._showCollisionBoxes,s,n))return;delete this._inProgressLayer;}this._currentPlacementIndex--;}this._done=!0;},Le.prototype.commit=function(t){return this.placement.commit(t),this.placement};var Re=512/t.EXTENT/2,ke=function(t,e,i){this.tileID=t,this.indexedSymbolInstances={},this.bucketInstanceId=i;for(var o=0;o<e.length;o++){var r=e.get(o),a=r.key;this.indexedSymbolInstances[a]||(this.indexedSymbolInstances[a]=[]),this.indexedSymbolInstances[a].push({crossTileID:r.crossTileID,coord:this.getScaledCoordinates(r,t)});}};ke.prototype.getScaledCoordinates=function(e,i){var o=Re/Math.pow(2,i.canonical.z-this.tileID.canonical.z);return {x:Math.floor((i.canonical.x*t.EXTENT+e.anchorX)*o),y:Math.floor((i.canonical.y*t.EXTENT+e.anchorY)*o)}},ke.prototype.findMatches=function(t,e,i){for(var o=this.tileID.canonical.z<e.canonical.z?1:Math.pow(2,this.tileID.canonical.z-e.canonical.z),r=0;r<t.length;r++){var a=t.get(r);if(!a.crossTileID){var n=this.indexedSymbolInstances[a.key];if(n)for(var s=this.getScaledCoordinates(a,e),l=0,c=n;l<c.length;l+=1){var u=c[l];if(Math.abs(u.coord.x-s.x)<=o&&Math.abs(u.coord.y-s.y)<=o&&!i[u.crossTileID]){i[u.crossTileID]=!0,a.crossTileID=u.crossTileID;break}}}}};var Be=function(){this.maxCrossTileID=0;};Be.prototype.generate=function(){return ++this.maxCrossTileID};var Oe=function(){this.indexes={},this.usedCrossTileIDs={},this.lng=0;};Oe.prototype.handleWrapJump=function(t){var e=Math.round((t-this.lng)/360);if(0!==e)for(var i in this.indexes){var o=this.indexes[i],r={};for(var a in o){var n=o[a];n.tileID=n.tileID.unwrapTo(n.tileID.wrap+e),r[n.tileID.key]=n;}this.indexes[i]=r;}this.lng=t;},Oe.prototype.addBucket=function(t,e,i){if(this.indexes[t.overscaledZ]&&this.indexes[t.overscaledZ][t.key]){if(this.indexes[t.overscaledZ][t.key].bucketInstanceId===e.bucketInstanceId)return !1;this.removeBucketCrossTileIDs(t.overscaledZ,this.indexes[t.overscaledZ][t.key]);}for(var o=0;o<e.symbolInstances.length;o++)e.symbolInstances.get(o).crossTileID=0;this.usedCrossTileIDs[t.overscaledZ]||(this.usedCrossTileIDs[t.overscaledZ]={});var r=this.usedCrossTileIDs[t.overscaledZ];for(var a in this.indexes){var n=this.indexes[a];if(Number(a)>t.overscaledZ)for(var s in n){var l=n[s];l.tileID.isChildOf(t)&&l.findMatches(e.symbolInstances,t,r);}else {var c=n[t.scaledTo(Number(a)).key];c&&c.findMatches(e.symbolInstances,t,r);}}for(var u=0;u<e.symbolInstances.length;u++){var h=e.symbolInstances.get(u);h.crossTileID||(h.crossTileID=i.generate(),r[h.crossTileID]=!0);}return void 0===this.indexes[t.overscaledZ]&&(this.indexes[t.overscaledZ]={}),this.indexes[t.overscaledZ][t.key]=new ke(t,e.symbolInstances,e.bucketInstanceId),!0},Oe.prototype.removeBucketCrossTileIDs=function(t,e){for(var i in e.indexedSymbolInstances)for(var o=0,r=e.indexedSymbolInstances[i];o<r.length;o+=1)delete this.usedCrossTileIDs[t][r[o].crossTileID];},Oe.prototype.removeStaleBuckets=function(t){var e=!1;for(var i in this.indexes){var o=this.indexes[i];for(var r in o)t[o[r].bucketInstanceId]||(this.removeBucketCrossTileIDs(i,o[r]),delete o[r],e=!0);}return e};var Fe=function(){this.layerIndexes={},this.crossTileIDs=new Be,this.maxBucketInstanceId=0,this.bucketsInCurrentPlacement={};};Fe.prototype.addLayer=function(t,e,i){var o=this.layerIndexes[t.id];void 0===o&&(o=this.layerIndexes[t.id]=new Oe);var r=!1,a={};o.handleWrapJump(i);for(var n=0,s=e;n<s.length;n+=1){var l=s[n],c=l.getBucket(t);c&&t.id===c.layerIds[0]&&(c.bucketInstanceId||(c.bucketInstanceId=++this.maxBucketInstanceId),o.addBucket(l.tileID,c,this.crossTileIDs)&&(r=!0),a[c.bucketInstanceId]=!0);}return o.removeStaleBuckets(a)&&(r=!0),r},Fe.prototype.pruneUnusedLayers=function(t){var e={};for(var i in t.forEach((function(t){e[t]=!0;})),this.layerIndexes)e[i]||delete this.layerIndexes[i];};var Ue=function(e,i){return t.emitValidationErrors(e,i&&i.filter((function(t){return \"source.canvas\"!==t.identifier})))},Ne=t.pick(Zt,[\"addLayer\",\"removeLayer\",\"setPaintProperty\",\"setLayoutProperty\",\"setFilter\",\"addSource\",\"removeSource\",\"setLayerZoomRange\",\"setLight\",\"setTransition\",\"setGeoJSONSourceData\"]),Ze=t.pick(Zt,[\"setCenter\",\"setZoom\",\"setBearing\",\"setPitch\"]),qe=function(){var e={},i=t.styleSpec.$version;for(var o in t.styleSpec.$root){var r,a=t.styleSpec.$root[o];if(a.required)null!=(r=\"version\"===o?i:\"array\"===a.type?[]:{})&&(e[o]=r);}return e}(),je=function(e){function i(o,r){var a=this;void 0===r&&(r={}),e.call(this),this.map=o,this.dispatcher=new E(Ft(),this),this.imageManager=new p,this.imageManager.setEventedParent(this),this.glyphManager=new y(o._requestManager,r.localIdeographFontFamily),this.lineAtlas=new T(256,512),this.crossTileSymbolIndex=new Fe,this._layers={},this._serializedLayers={},this._order=[],this.sourceCaches={},this.zoomHistory=new t.ZoomHistory,this._loaded=!1,this._availableImages=[],this._resetUpdates(),this.dispatcher.broadcast(\"setReferrer\",t.getReferrer());var n=this;this._rtlTextPluginCallback=i.registerForPluginStateChange((function(e){n.dispatcher.broadcast(\"syncRTLPluginState\",{pluginStatus:e.pluginStatus,pluginURL:e.pluginURL},(function(e,i){if(t.triggerPluginCompletionEvent(e),i&&i.every((function(t){return t})))for(var o in n.sourceCaches)n.sourceCaches[o].reload();}));})),this.on(\"data\",(function(t){if(\"source\"===t.dataType&&\"metadata\"===t.sourceDataType){var e=a.sourceCaches[t.sourceId];if(e){var i=e.getSource();if(i&&i.vectorLayerIds)for(var o in a._layers){var r=a._layers[o];r.source===i.id&&a._validateLayer(r);}}}}));}return e&&(i.__proto__=e),(i.prototype=Object.create(e&&e.prototype)).constructor=i,i.prototype.loadURL=function(e,i){var o=this;void 0===i&&(i={}),this.fire(new t.Event(\"dataloading\",{dataType:\"style\"}));var r=\"boolean\"==typeof i.validate?i.validate:!t.isMapboxURL(e);e=this.map._requestManager.normalizeStyleURL(e,i.accessToken);var a=this.map._requestManager.transformRequest(e,t.ResourceType.Style);this._request=t.getJSON(a,(function(e,i){o._request=null,e?o.fire(new t.ErrorEvent(e)):i&&o._load(i,r);}));},i.prototype.loadJSON=function(e,i){var o=this;void 0===i&&(i={}),this.fire(new t.Event(\"dataloading\",{dataType:\"style\"})),this._request=t.browser.frame((function(){o._request=null,o._load(e,!1!==i.validate);}));},i.prototype.loadEmpty=function(){this.fire(new t.Event(\"dataloading\",{dataType:\"style\"})),this._load(qe,!1);},i.prototype._load=function(e,i){if(!i||!Ue(this,t.validateStyle(e))){for(var o in this._loaded=!0,this.stylesheet=e,e.sources)this.addSource(o,e.sources[o],{validate:!1});e.sprite?this._loadSprite(e.sprite):this.imageManager.setLoaded(!0),this.glyphManager.setURL(e.glyphs);var r=Nt(this.stylesheet.layers);this._order=r.map((function(t){return t.id})),this._layers={},this._serializedLayers={};for(var a=0,n=r;a<n.length;a+=1){var s=n[a];(s=t.createStyleLayer(s)).setEventedParent(this,{layer:{id:s.id}}),this._layers[s.id]=s,this._serializedLayers[s.id]=s.serialize();}this.dispatcher.broadcast(\"setLayers\",this._serializeLayers(this._order)),this.light=new w(this.stylesheet.light),this.fire(new t.Event(\"data\",{dataType:\"style\"})),this.fire(new t.Event(\"style.load\"));}},i.prototype._loadSprite=function(e){var i=this;this._spriteRequest=function(e,i,o){var r,a,n,s=t.browser.devicePixelRatio>1?\"@2x\":\"\",l=t.getJSON(i.transformRequest(i.normalizeSpriteURL(e,s,\".json\"),t.ResourceType.SpriteJSON),(function(t,e){l=null,n||(n=t,r=e,u());})),c=t.getImage(i.transformRequest(i.normalizeSpriteURL(e,s,\".png\"),t.ResourceType.SpriteImage),(function(t,e){c=null,n||(n=t,a=e,u());}));function u(){if(n)o(n);else if(r&&a){var e=t.browser.getImageData(a),i={};for(var s in r){var l=r[s],c=l.width,u=l.height,h=l.x,p=l.y,d=l.sdf,_=l.pixelRatio,f=l.stretchX,m=l.stretchY,g=l.content,v=new t.RGBAImage({width:c,height:u});t.RGBAImage.copy(e,v,{x:h,y:p},{x:0,y:0},{width:c,height:u}),i[s]={data:v,pixelRatio:_,sdf:d,stretchX:f,stretchY:m,content:g};}o(null,i);}}return {cancel:function(){l&&(l.cancel(),l=null),c&&(c.cancel(),c=null);}}}(e,this.map._requestManager,(function(e,o){if(i._spriteRequest=null,e)i.fire(new t.ErrorEvent(e));else if(o)for(var r in o)i.imageManager.addImage(r,o[r]);i.imageManager.setLoaded(!0),i._availableImages=i.imageManager.listImages(),i.dispatcher.broadcast(\"setImages\",i._availableImages),i.fire(new t.Event(\"data\",{dataType:\"style\"}));}));},i.prototype._validateLayer=function(e){var i=this.sourceCaches[e.source];if(i){var o=e.sourceLayer;if(o){var r=i.getSource();(\"geojson\"===r.type||r.vectorLayerIds&&-1===r.vectorLayerIds.indexOf(o))&&this.fire(new t.ErrorEvent(new Error('Source layer \"'+o+'\" does not exist on source \"'+r.id+'\" as specified by style layer \"'+e.id+'\"')));}}},i.prototype.loaded=function(){if(!this._loaded)return !1;if(Object.keys(this._updatedSources).length)return !1;for(var t in this.sourceCaches)if(!this.sourceCaches[t].loaded())return !1;return !!this.imageManager.isLoaded()},i.prototype._serializeLayers=function(t){for(var e=[],i=0,o=t;i<o.length;i+=1){var r=this._layers[o[i]];\"custom\"!==r.type&&e.push(r.serialize());}return e},i.prototype.hasTransitions=function(){if(this.light&&this.light.hasTransition())return !0;for(var t in this.sourceCaches)if(this.sourceCaches[t].hasTransition())return !0;for(var e in this._layers)if(this._layers[e].hasTransition())return !0;return !1},i.prototype._checkLoaded=function(){if(!this._loaded)throw new Error(\"Style is not done loading\")},i.prototype.update=function(e){if(this._loaded){var i=this._changed;if(this._changed){var o=Object.keys(this._updatedLayers),r=Object.keys(this._removedLayers);for(var a in (o.length||r.length)&&this._updateWorkerLayers(o,r),this._updatedSources){var n=this._updatedSources[a];\"reload\"===n?this._reloadSource(a):\"clear\"===n&&this._clearSource(a);}for(var s in this._updateTilesForChangedImages(),this._updatedPaintProps)this._layers[s].updateTransitions(e);this.light.updateTransitions(e),this._resetUpdates();}var l={};for(var c in this.sourceCaches){var u=this.sourceCaches[c];l[c]=u.used,u.used=!1;}for(var h=0,p=this._order;h<p.length;h+=1){var d=this._layers[p[h]];d.recalculate(e,this._availableImages),!d.isHidden(e.zoom)&&d.source&&(this.sourceCaches[d.source].used=!0);}for(var _ in l){var f=this.sourceCaches[_];l[_]!==f.used&&f.fire(new t.Event(\"data\",{sourceDataType:\"visibility\",dataType:\"source\",sourceId:_}));}this.light.recalculate(e),this.z=e.zoom,i&&this.fire(new t.Event(\"data\",{dataType:\"style\"}));}},i.prototype._updateTilesForChangedImages=function(){var t=Object.keys(this._changedImages);if(t.length){for(var e in this.sourceCaches)this.sourceCaches[e].reloadTilesForDependencies([\"icons\",\"patterns\"],t);this._changedImages={};}},i.prototype._updateWorkerLayers=function(t,e){this.dispatcher.broadcast(\"updateLayers\",{layers:this._serializeLayers(t),removedIds:e});},i.prototype._resetUpdates=function(){this._changed=!1,this._updatedLayers={},this._removedLayers={},this._updatedSources={},this._updatedPaintProps={},this._changedImages={};},i.prototype.setState=function(e){var i=this;if(this._checkLoaded(),Ue(this,t.validateStyle(e)))return !1;(e=t.clone$1(e)).layers=Nt(e.layers);var o=function(e,i){if(!e)return [{command:Zt.setStyle,args:[i]}];var o=[];try{if(!t.deepEqual(e.version,i.version))return [{command:Zt.setStyle,args:[i]}];t.deepEqual(e.center,i.center)||o.push({command:Zt.setCenter,args:[i.center]}),t.deepEqual(e.zoom,i.zoom)||o.push({command:Zt.setZoom,args:[i.zoom]}),t.deepEqual(e.bearing,i.bearing)||o.push({command:Zt.setBearing,args:[i.bearing]}),t.deepEqual(e.pitch,i.pitch)||o.push({command:Zt.setPitch,args:[i.pitch]}),t.deepEqual(e.sprite,i.sprite)||o.push({command:Zt.setSprite,args:[i.sprite]}),t.deepEqual(e.glyphs,i.glyphs)||o.push({command:Zt.setGlyphs,args:[i.glyphs]}),t.deepEqual(e.transition,i.transition)||o.push({command:Zt.setTransition,args:[i.transition]}),t.deepEqual(e.light,i.light)||o.push({command:Zt.setLight,args:[i.light]});var r={},a=[];!function(e,i,o,r){var a;for(a in i=i||{},e=e||{})e.hasOwnProperty(a)&&(i.hasOwnProperty(a)||jt(a,o,r));for(a in i)i.hasOwnProperty(a)&&(e.hasOwnProperty(a)?t.deepEqual(e[a],i[a])||(\"geojson\"===e[a].type&&\"geojson\"===i[a].type&&Gt(e,i,a)?o.push({command:Zt.setGeoJSONSourceData,args:[a,i[a].data]}):Vt(a,i,o,r)):qt(a,i,o));}(e.sources,i.sources,a,r);var n=[];e.layers&&e.layers.forEach((function(t){r[t.source]?o.push({command:Zt.removeLayer,args:[t.id]}):n.push(t);})),o=o.concat(a),function(e,i,o){i=i||[];var r,a,n,s,l,c,u,h=(e=e||[]).map(Xt),p=i.map(Xt),d=e.reduce(Ht,{}),_=i.reduce(Ht,{}),f=h.slice(),m=Object.create(null);for(r=0,a=0;r<h.length;r++)_.hasOwnProperty(n=h[r])?a++:(o.push({command:Zt.removeLayer,args:[n]}),f.splice(f.indexOf(n,a),1));for(r=0,a=0;r<p.length;r++)f[f.length-1-r]!==(n=p[p.length-1-r])&&(d.hasOwnProperty(n)?(o.push({command:Zt.removeLayer,args:[n]}),f.splice(f.lastIndexOf(n,f.length-a),1)):a++,o.push({command:Zt.addLayer,args:[_[n],c=f[f.length-r]]}),f.splice(f.length-r,0,n),m[n]=!0);for(r=0;r<p.length;r++)if(s=d[n=p[r]],l=_[n],!m[n]&&!t.deepEqual(s,l))if(t.deepEqual(s.source,l.source)&&t.deepEqual(s[\"source-layer\"],l[\"source-layer\"])&&t.deepEqual(s.type,l.type)){for(u in Wt(s.layout,l.layout,o,n,null,Zt.setLayoutProperty),Wt(s.paint,l.paint,o,n,null,Zt.setPaintProperty),t.deepEqual(s.filter,l.filter)||o.push({command:Zt.setFilter,args:[n,l.filter]}),t.deepEqual(s.minzoom,l.minzoom)&&t.deepEqual(s.maxzoom,l.maxzoom)||o.push({command:Zt.setLayerZoomRange,args:[n,l.minzoom,l.maxzoom]}),s)s.hasOwnProperty(u)&&\"layout\"!==u&&\"paint\"!==u&&\"filter\"!==u&&\"metadata\"!==u&&\"minzoom\"!==u&&\"maxzoom\"!==u&&(0===u.indexOf(\"paint.\")?Wt(s[u],l[u],o,n,u.slice(6),Zt.setPaintProperty):t.deepEqual(s[u],l[u])||o.push({command:Zt.setLayerProperty,args:[n,u,l[u]]}));for(u in l)l.hasOwnProperty(u)&&!s.hasOwnProperty(u)&&\"layout\"!==u&&\"paint\"!==u&&\"filter\"!==u&&\"metadata\"!==u&&\"minzoom\"!==u&&\"maxzoom\"!==u&&(0===u.indexOf(\"paint.\")?Wt(s[u],l[u],o,n,u.slice(6),Zt.setPaintProperty):t.deepEqual(s[u],l[u])||o.push({command:Zt.setLayerProperty,args:[n,u,l[u]]}));}else o.push({command:Zt.removeLayer,args:[n]}),c=f[f.lastIndexOf(n)+1],o.push({command:Zt.addLayer,args:[l,c]});}(n,i.layers,o);}catch(t){console.warn(\"Unable to compute style diff:\",t),o=[{command:Zt.setStyle,args:[i]}];}return o}(this.serialize(),e).filter((function(t){return !(t.command in Ze)}));if(0===o.length)return !1;var r=o.filter((function(t){return !(t.command in Ne)}));if(r.length>0)throw new Error(\"Unimplemented: \"+r.map((function(t){return t.command})).join(\", \")+\".\");return o.forEach((function(t){\"setTransition\"!==t.command&&i[t.command].apply(i,t.args);})),this.stylesheet=e,!0},i.prototype.addImage=function(e,i){if(this.getImage(e))return this.fire(new t.ErrorEvent(new Error(\"An image with this name already exists.\")));this.imageManager.addImage(e,i),this._afterImageUpdated(e);},i.prototype.updateImage=function(t,e){this.imageManager.updateImage(t,e);},i.prototype.getImage=function(t){return this.imageManager.getImage(t)},i.prototype.removeImage=function(e){if(!this.getImage(e))return this.fire(new t.ErrorEvent(new Error(\"No image with this name exists.\")));this.imageManager.removeImage(e),this._afterImageUpdated(e);},i.prototype._afterImageUpdated=function(e){this._availableImages=this.imageManager.listImages(),this._changedImages[e]=!0,this._changed=!0,this.dispatcher.broadcast(\"setImages\",this._availableImages),this.fire(new t.Event(\"data\",{dataType:\"style\"}));},i.prototype.listImages=function(){return this._checkLoaded(),this.imageManager.listImages()},i.prototype.addSource=function(e,i,o){var r=this;if(void 0===o&&(o={}),this._checkLoaded(),void 0!==this.sourceCaches[e])throw new Error(\"There is already a source with this ID\");if(!i.type)throw new Error(\"The type property must be defined, but only the following properties were given: \"+Object.keys(i).join(\", \")+\".\");if(!([\"vector\",\"raster\",\"geojson\",\"video\",\"image\"].indexOf(i.type)>=0&&this._validate(t.validateStyle.source,\"sources.\"+e,i,null,o))){this.map&&this.map._collectResourceTiming&&(i.collectResourceTiming=!0);var a=this.sourceCaches[e]=new Dt(e,i,this.dispatcher);a.style=this,a.setEventedParent(this,(function(){return {isSourceLoaded:r.loaded(),source:a.serialize(),sourceId:e}})),a.onAdd(this.map),this._changed=!0;}},i.prototype.removeSource=function(e){if(this._checkLoaded(),void 0===this.sourceCaches[e])throw new Error(\"There is no source with this ID\");for(var i in this._layers)if(this._layers[i].source===e)return this.fire(new t.ErrorEvent(new Error('Source \"'+e+'\" cannot be removed while layer \"'+i+'\" is using it.')));var o=this.sourceCaches[e];delete this.sourceCaches[e],delete this._updatedSources[e],o.fire(new t.Event(\"data\",{sourceDataType:\"metadata\",dataType:\"source\",sourceId:e})),o.setEventedParent(null),o.clearTiles(),o.onRemove&&o.onRemove(this.map),this._changed=!0;},i.prototype.setGeoJSONSourceData=function(t,e){this._checkLoaded(),this.sourceCaches[t].getSource().setData(e),this._changed=!0;},i.prototype.getSource=function(t){return this.sourceCaches[t]&&this.sourceCaches[t].getSource()},i.prototype.addLayer=function(e,i,o){void 0===o&&(o={}),this._checkLoaded();var r=e.id;if(this.getLayer(r))this.fire(new t.ErrorEvent(new Error('Layer with id \"'+r+'\" already exists on this map')));else {var a;if(\"custom\"===e.type){if(Ue(this,t.validateCustomStyleLayer(e)))return;a=t.createStyleLayer(e);}else {if(\"object\"==typeof e.source&&(this.addSource(r,e.source),e=t.clone$1(e),e=t.extend(e,{source:r})),this._validate(t.validateStyle.layer,\"layers.\"+r,e,{arrayIndex:-1},o))return;a=t.createStyleLayer(e),this._validateLayer(a),a.setEventedParent(this,{layer:{id:r}}),this._serializedLayers[a.id]=a.serialize();}var n=i?this._order.indexOf(i):this._order.length;if(i&&-1===n)this.fire(new t.ErrorEvent(new Error('Layer with id \"'+i+'\" does not exist on this map.')));else {if(this._order.splice(n,0,r),this._layerOrderChanged=!0,this._layers[r]=a,this._removedLayers[r]&&a.source&&\"custom\"!==a.type){var s=this._removedLayers[r];delete this._removedLayers[r],s.type!==a.type?this._updatedSources[a.source]=\"clear\":(this._updatedSources[a.source]=\"reload\",this.sourceCaches[a.source].pause());}this._updateLayer(a),a.onAdd&&a.onAdd(this.map);}}},i.prototype.moveLayer=function(e,i){if(this._checkLoaded(),this._changed=!0,this._layers[e]){if(e!==i){var o=this._order.indexOf(e);this._order.splice(o,1);var r=i?this._order.indexOf(i):this._order.length;i&&-1===r?this.fire(new t.ErrorEvent(new Error('Layer with id \"'+i+'\" does not exist on this map.'))):(this._order.splice(r,0,e),this._layerOrderChanged=!0);}}else this.fire(new t.ErrorEvent(new Error(\"The layer '\"+e+\"' does not exist in the map's style and cannot be moved.\")));},i.prototype.removeLayer=function(e){this._checkLoaded();var i=this._layers[e];if(i){i.setEventedParent(null);var o=this._order.indexOf(e);this._order.splice(o,1),this._layerOrderChanged=!0,this._changed=!0,this._removedLayers[e]=i,delete this._layers[e],delete this._serializedLayers[e],delete this._updatedLayers[e],delete this._updatedPaintProps[e],i.onRemove&&i.onRemove(this.map);}else this.fire(new t.ErrorEvent(new Error(\"The layer '\"+e+\"' does not exist in the map's style and cannot be removed.\")));},i.prototype.getLayer=function(t){return this._layers[t]},i.prototype.hasLayer=function(t){return t in this._layers},i.prototype.setLayerZoomRange=function(e,i,o){this._checkLoaded();var r=this.getLayer(e);r?r.minzoom===i&&r.maxzoom===o||(null!=i&&(r.minzoom=i),null!=o&&(r.maxzoom=o),this._updateLayer(r)):this.fire(new t.ErrorEvent(new Error(\"The layer '\"+e+\"' does not exist in the map's style and cannot have zoom extent.\")));},i.prototype.setFilter=function(e,i,o){void 0===o&&(o={}),this._checkLoaded();var r=this.getLayer(e);if(r){if(!t.deepEqual(r.filter,i))return null==i?(r.filter=void 0,void this._updateLayer(r)):void(this._validate(t.validateStyle.filter,\"layers.\"+r.id+\".filter\",i,null,o)||(r.filter=t.clone$1(i),this._updateLayer(r)))}else this.fire(new t.ErrorEvent(new Error(\"The layer '\"+e+\"' does not exist in the map's style and cannot be filtered.\")));},i.prototype.getFilter=function(e){return t.clone$1(this.getLayer(e).filter)},i.prototype.setLayoutProperty=function(e,i,o,r){void 0===r&&(r={}),this._checkLoaded();var a=this.getLayer(e);a?t.deepEqual(a.getLayoutProperty(i),o)||(a.setLayoutProperty(i,o,r),this._updateLayer(a)):this.fire(new t.ErrorEvent(new Error(\"The layer '\"+e+\"' does not exist in the map's style and cannot be styled.\")));},i.prototype.getLayoutProperty=function(e,i){var o=this.getLayer(e);if(o)return o.getLayoutProperty(i);this.fire(new t.ErrorEvent(new Error(\"The layer '\"+e+\"' does not exist in the map's style.\")));},i.prototype.setPaintProperty=function(e,i,o,r){void 0===r&&(r={}),this._checkLoaded();var a=this.getLayer(e);a?t.deepEqual(a.getPaintProperty(i),o)||(a.setPaintProperty(i,o,r)&&this._updateLayer(a),this._changed=!0,this._updatedPaintProps[e]=!0):this.fire(new t.ErrorEvent(new Error(\"The layer '\"+e+\"' does not exist in the map's style and cannot be styled.\")));},i.prototype.getPaintProperty=function(t,e){return this.getLayer(t).getPaintProperty(e)},i.prototype.setFeatureState=function(e,i){this._checkLoaded();var o=e.source,r=e.sourceLayer,a=this.sourceCaches[o];if(void 0!==a){var n=a.getSource().type;\"geojson\"===n&&r?this.fire(new t.ErrorEvent(new Error(\"GeoJSON sources cannot have a sourceLayer parameter.\"))):\"vector\"!==n||r?(void 0===e.id&&this.fire(new t.ErrorEvent(new Error(\"The feature id parameter must be provided.\"))),a.setFeatureState(r,e.id,i)):this.fire(new t.ErrorEvent(new Error(\"The sourceLayer parameter must be provided for vector source types.\")));}else this.fire(new t.ErrorEvent(new Error(\"The source '\"+o+\"' does not exist in the map's style.\")));},i.prototype.removeFeatureState=function(e,i){this._checkLoaded();var o=e.source,r=this.sourceCaches[o];if(void 0!==r){var a=r.getSource().type,n=\"vector\"===a?e.sourceLayer:void 0;\"vector\"!==a||n?i&&\"string\"!=typeof e.id&&\"number\"!=typeof e.id?this.fire(new t.ErrorEvent(new Error(\"A feature id is required to remove its specific state property.\"))):r.removeFeatureState(n,e.id,i):this.fire(new t.ErrorEvent(new Error(\"The sourceLayer parameter must be provided for vector source types.\")));}else this.fire(new t.ErrorEvent(new Error(\"The source '\"+o+\"' does not exist in the map's style.\")));},i.prototype.getFeatureState=function(e){this._checkLoaded();var i=e.source,o=e.sourceLayer,r=this.sourceCaches[i];if(void 0!==r){if(\"vector\"!==r.getSource().type||o)return void 0===e.id&&this.fire(new t.ErrorEvent(new Error(\"The feature id parameter must be provided.\"))),r.getFeatureState(o,e.id);this.fire(new t.ErrorEvent(new Error(\"The sourceLayer parameter must be provided for vector source types.\")));}else this.fire(new t.ErrorEvent(new Error(\"The source '\"+i+\"' does not exist in the map's style.\")));},i.prototype.getTransition=function(){return t.extend({duration:300,delay:0},this.stylesheet&&this.stylesheet.transition)},i.prototype.serialize=function(){return t.filterObject({version:this.stylesheet.version,name:this.stylesheet.name,metadata:this.stylesheet.metadata,light:this.stylesheet.light,center:this.stylesheet.center,zoom:this.stylesheet.zoom,bearing:this.stylesheet.bearing,pitch:this.stylesheet.pitch,sprite:this.stylesheet.sprite,glyphs:this.stylesheet.glyphs,transition:this.stylesheet.transition,sources:t.mapObject(this.sourceCaches,(function(t){return t.serialize()})),layers:this._serializeLayers(this._order)},(function(t){return void 0!==t}))},i.prototype._updateLayer=function(t){this._updatedLayers[t.id]=!0,t.source&&!this._updatedSources[t.source]&&\"raster\"!==this.sourceCaches[t.source].getSource().type&&(this._updatedSources[t.source]=\"reload\",this.sourceCaches[t.source].pause()),this._changed=!0;},i.prototype._flattenAndSortRenderedFeatures=function(t){for(var e=this,i=function(t){return \"fill-extrusion\"===e._layers[t].type},o={},r=[],a=this._order.length-1;a>=0;a--){var n=this._order[a];if(i(n)){o[n]=a;for(var s=0,l=t;s<l.length;s+=1){var c=l[s][n];if(c)for(var u=0,h=c;u<h.length;u+=1)r.push(h[u]);}}}r.sort((function(t,e){return e.intersectionZ-t.intersectionZ}));for(var p=[],d=this._order.length-1;d>=0;d--){var _=this._order[d];if(i(_))for(var f=r.length-1;f>=0;f--){var m=r[f].feature;if(o[m.layer.id]<d)break;p.push(m),r.pop();}else for(var g=0,v=t;g<v.length;g+=1){var y=v[g][_];if(y)for(var x=0,b=y;x<b.length;x+=1)p.push(b[x].feature);}}return p},i.prototype.queryRenderedFeatures=function(e,i,o){i&&i.filter&&this._validate(t.validateStyle.filter,\"queryRenderedFeatures.filter\",i.filter,null,i);var r={};if(i&&i.layers){if(!Array.isArray(i.layers))return this.fire(new t.ErrorEvent(new Error(\"parameters.layers must be an Array.\"))),[];for(var a=0,n=i.layers;a<n.length;a+=1){var s=n[a],l=this._layers[s];if(!l)return this.fire(new t.ErrorEvent(new Error(\"The layer '\"+s+\"' does not exist in the map's style and cannot be queried for features.\"))),[];r[l.source]=!0;}}var c=[];for(var u in i.availableImages=this._availableImages,this.sourceCaches)i.layers&&!r[u]||c.push(O(this.sourceCaches[u],this._layers,this._serializedLayers,e,i,o));return this.placement&&c.push(function(t,e,i,o,r,a,n){for(var s={},l=a.queryRenderedSymbols(o),c=[],u=0,h=Object.keys(l).map(Number);u<h.length;u+=1)c.push(n[h[u]]);c.sort(F);for(var p=function(){var i=_[d],o=i.featureIndex.lookupSymbolFeatures(l[i.bucketInstanceId],e,i.bucketIndex,i.sourceLayerIndex,r.filter,r.layers,r.availableImages,t);for(var a in o){var n=s[a]=s[a]||[],c=o[a];c.sort((function(t,e){var o=i.featureSortOrder;if(o){var r=o.indexOf(t.featureIndex);return o.indexOf(e.featureIndex)-r}return e.featureIndex-t.featureIndex}));for(var u=0,h=c;u<h.length;u+=1)n.push(h[u]);}},d=0,_=c;d<_.length;d+=1)p();var f=function(e){s[e].forEach((function(o){var r=o.feature,a=i[t[e].source].getFeatureState(r.layer[\"source-layer\"],r.id);r.source=r.layer.source,r.layer[\"source-layer\"]&&(r.sourceLayer=r.layer[\"source-layer\"]),r.state=a;}));};for(var m in s)f(m);return s}(this._layers,this._serializedLayers,this.sourceCaches,e,i,this.placement.collisionIndex,this.placement.retainedQueryData)),this._flattenAndSortRenderedFeatures(c)},i.prototype.querySourceFeatures=function(e,i){i&&i.filter&&this._validate(t.validateStyle.filter,\"querySourceFeatures.filter\",i.filter,null,i);var o=this.sourceCaches[e];return o?function(t,e){for(var i=t.getRenderableIds().map((function(e){return t.getTileByID(e)})),o=[],r={},a=0;a<i.length;a++){var n=i[a],s=n.tileID.canonical.key;r[s]||(r[s]=!0,n.querySourceFeatures(o,e));}return o}(o,i):[]},i.prototype.addSourceType=function(t,e,o){return i.getSourceType(t)?o(new Error('A source type called \"'+t+'\" already exists.')):(i.setSourceType(t,e),e.workerSourceURL?void this.dispatcher.broadcast(\"loadWorkerSource\",{name:t,url:e.workerSourceURL},o):o(null,null))},i.prototype.getLight=function(){return this.light.getLight()},i.prototype.setLight=function(e,i){void 0===i&&(i={}),this._checkLoaded();var o=this.light.getLight(),r=!1;for(var a in e)if(!t.deepEqual(e[a],o[a])){r=!0;break}if(r){var n={now:t.browser.now(),transition:t.extend({duration:300,delay:0},this.stylesheet.transition)};this.light.setLight(e,i),this.light.updateTransitions(n);}},i.prototype._validate=function(e,i,o,r,a){return void 0===a&&(a={}),(!a||!1!==a.validate)&&Ue(this,e.call(t.validateStyle,t.extend({key:i,style:this.serialize(),value:o,styleSpec:t.styleSpec},r)))},i.prototype._remove=function(){for(var e in this._request&&(this._request.cancel(),this._request=null),this._spriteRequest&&(this._spriteRequest.cancel(),this._spriteRequest=null),t.evented.off(\"pluginStateChange\",this._rtlTextPluginCallback),this._layers)this._layers[e].setEventedParent(null);for(var i in this.sourceCaches)this.sourceCaches[i].clearTiles(),this.sourceCaches[i].setEventedParent(null);this.imageManager.setEventedParent(null),this.setEventedParent(null),this.dispatcher.remove();},i.prototype._clearSource=function(t){this.sourceCaches[t].clearTiles();},i.prototype._reloadSource=function(t){this.sourceCaches[t].resume(),this.sourceCaches[t].reload();},i.prototype._updateSources=function(t){for(var e in this.sourceCaches)this.sourceCaches[e].update(t);},i.prototype._generateCollisionBoxes=function(){for(var t in this.sourceCaches)this._reloadSource(t);},i.prototype._updatePlacement=function(e,i,o,r,a){void 0===a&&(a=!1);for(var n=!1,s=!1,l={},c=0,u=this._order;c<u.length;c+=1){var h=this._layers[u[c]];if(\"symbol\"===h.type){if(!l[h.source]){var p=this.sourceCaches[h.source];l[h.source]=p.getRenderableIds(!0).map((function(t){return p.getTileByID(t)})).sort((function(t,e){return e.tileID.overscaledZ-t.tileID.overscaledZ||(t.tileID.isLessThan(e.tileID)?-1:1)}));}var d=this.crossTileSymbolIndex.addLayer(h,l[h.source],e.center.lng);n=n||d;}}if(this.crossTileSymbolIndex.pruneUnusedLayers(this._order),((a=a||this._layerOrderChanged||0===o)||!this.pauseablePlacement||this.pauseablePlacement.isDone()&&!this.placement.stillRecent(t.browser.now(),e.zoom))&&(this.pauseablePlacement=new Le(e,this._order,a,i,o,r,this.placement),this._layerOrderChanged=!1),this.pauseablePlacement.isDone()?this.placement.setStale():(this.pauseablePlacement.continuePlacement(this._order,this._layers,l),this.pauseablePlacement.isDone()&&(this.placement=this.pauseablePlacement.commit(t.browser.now()),s=!0),n&&this.pauseablePlacement.placement.setStale()),s||n)for(var _=0,f=this._order;_<f.length;_+=1){var m=this._layers[f[_]];\"symbol\"===m.type&&this.placement.updateLayerOpacities(m,l[m.source]);}return !this.pauseablePlacement.isDone()||this.placement.hasTransitions(t.browser.now())},i.prototype._releaseSymbolFadeTiles=function(){for(var t in this.sourceCaches)this.sourceCaches[t].releaseSymbolFadeTiles();},i.prototype.getImages=function(t,e,i){this.imageManager.getImages(e.icons,i),this._updateTilesForChangedImages();var o=this.sourceCaches[e.source];o&&o.setDependencies(e.tileID.key,e.type,e.icons);},i.prototype.getGlyphs=function(t,e,i){this.glyphManager.getGlyphs(e.stacks,i);},i.prototype.getResource=function(e,i,o){return t.makeRequest(i,o)},i}(t.Evented);je.getSourceType=function(t){return k[t]},je.setSourceType=function(t,e){k[t]=e;},je.registerForPluginStateChange=t.registerForPluginStateChange;var Ve=t.createLayout([{name:\"a_pos\",type:\"Int16\",components:2}]),Ge=gi(\"#ifdef GL_ES\\nprecision mediump float;\\n#else\\n#if !defined(lowp)\\n#define lowp\\n#endif\\n#if !defined(mediump)\\n#define mediump\\n#endif\\n#if !defined(highp)\\n#define highp\\n#endif\\n#endif\",\"#ifdef GL_ES\\nprecision highp float;\\n#else\\n#if !defined(lowp)\\n#define lowp\\n#endif\\n#if !defined(mediump)\\n#define mediump\\n#endif\\n#if !defined(highp)\\n#define highp\\n#endif\\n#endif\\nvec2 unpack_float(const float packedValue) {int packedIntValue=int(packedValue);int v0=packedIntValue/256;return vec2(v0,packedIntValue-v0*256);}vec2 unpack_opacity(const float packedOpacity) {int intOpacity=int(packedOpacity)/2;return vec2(float(intOpacity)/127.0,mod(packedOpacity,2.0));}vec4 decode_color(const vec2 encodedColor) {return vec4(unpack_float(encodedColor[0])/255.0,unpack_float(encodedColor[1])/255.0\\n);}float unpack_mix_vec2(const vec2 packedValue,const float t) {return mix(packedValue[0],packedValue[1],t);}vec4 unpack_mix_color(const vec4 packedColors,const float t) {vec4 minColor=decode_color(vec2(packedColors[0],packedColors[1]));vec4 maxColor=decode_color(vec2(packedColors[2],packedColors[3]));return mix(minColor,maxColor,t);}vec2 get_pattern_pos(const vec2 pixel_coord_upper,const vec2 pixel_coord_lower,const vec2 pattern_size,const float tile_units_to_pixels,const vec2 pos) {vec2 offset=mod(mod(mod(pixel_coord_upper,pattern_size)*256.0,pattern_size)*256.0+pixel_coord_lower,pattern_size);return (tile_units_to_pixels*pos+offset)/pattern_size;}\"),We=gi(\"uniform vec4 u_color;uniform float u_opacity;void main() {gl_FragColor=u_color*u_opacity;\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"attribute vec2 a_pos;uniform mat4 u_matrix;void main() {gl_Position=u_matrix*vec4(a_pos,0,1);}\"),Xe=gi(\"uniform vec2 u_pattern_tl_a;uniform vec2 u_pattern_br_a;uniform vec2 u_pattern_tl_b;uniform vec2 u_pattern_br_b;uniform vec2 u_texsize;uniform float u_mix;uniform float u_opacity;uniform sampler2D u_image;varying vec2 v_pos_a;varying vec2 v_pos_b;void main() {vec2 imagecoord=mod(v_pos_a,1.0);vec2 pos=mix(u_pattern_tl_a/u_texsize,u_pattern_br_a/u_texsize,imagecoord);vec4 color1=texture2D(u_image,pos);vec2 imagecoord_b=mod(v_pos_b,1.0);vec2 pos2=mix(u_pattern_tl_b/u_texsize,u_pattern_br_b/u_texsize,imagecoord_b);vec4 color2=texture2D(u_image,pos2);gl_FragColor=mix(color1,color2,u_mix)*u_opacity;\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"uniform mat4 u_matrix;uniform vec2 u_pattern_size_a;uniform vec2 u_pattern_size_b;uniform vec2 u_pixel_coord_upper;uniform vec2 u_pixel_coord_lower;uniform float u_scale_a;uniform float u_scale_b;uniform float u_tile_units_to_pixels;attribute vec2 a_pos;varying vec2 v_pos_a;varying vec2 v_pos_b;void main() {gl_Position=u_matrix*vec4(a_pos,0,1);v_pos_a=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,u_scale_a*u_pattern_size_a,u_tile_units_to_pixels,a_pos);v_pos_b=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,u_scale_b*u_pattern_size_b,u_tile_units_to_pixels,a_pos);}\"),He=gi(\"varying vec3 v_data;\\n#pragma mapbox: define highp vec4 color\\n#pragma mapbox: define mediump float radius\\n#pragma mapbox: define lowp float blur\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define highp vec4 stroke_color\\n#pragma mapbox: define mediump float stroke_width\\n#pragma mapbox: define lowp float stroke_opacity\\nvoid main() {\\n#pragma mapbox: initialize highp vec4 color\\n#pragma mapbox: initialize mediump float radius\\n#pragma mapbox: initialize lowp float blur\\n#pragma mapbox: initialize lowp float opacity\\n#pragma mapbox: initialize highp vec4 stroke_color\\n#pragma mapbox: initialize mediump float stroke_width\\n#pragma mapbox: initialize lowp float stroke_opacity\\nvec2 extrude=v_data.xy;float extrude_length=length(extrude);lowp float antialiasblur=v_data.z;float antialiased_blur=-max(blur,antialiasblur);float opacity_t=smoothstep(0.0,antialiased_blur,extrude_length-1.0);float color_t=stroke_width < 0.01 ? 0.0 : smoothstep(antialiased_blur,0.0,extrude_length-radius/(radius+stroke_width));gl_FragColor=opacity_t*mix(color*opacity,stroke_color*stroke_opacity,color_t);\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"uniform mat4 u_matrix;uniform bool u_scale_with_map;uniform bool u_pitch_with_map;uniform vec2 u_extrude_scale;uniform lowp float u_device_pixel_ratio;uniform highp float u_camera_to_center_distance;attribute vec2 a_pos;varying vec3 v_data;\\n#pragma mapbox: define highp vec4 color\\n#pragma mapbox: define mediump float radius\\n#pragma mapbox: define lowp float blur\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define highp vec4 stroke_color\\n#pragma mapbox: define mediump float stroke_width\\n#pragma mapbox: define lowp float stroke_opacity\\nvoid main(void) {\\n#pragma mapbox: initialize highp vec4 color\\n#pragma mapbox: initialize mediump float radius\\n#pragma mapbox: initialize lowp float blur\\n#pragma mapbox: initialize lowp float opacity\\n#pragma mapbox: initialize highp vec4 stroke_color\\n#pragma mapbox: initialize mediump float stroke_width\\n#pragma mapbox: initialize lowp float stroke_opacity\\nvec2 extrude=vec2(mod(a_pos,2.0)*2.0-1.0);vec2 circle_center=floor(a_pos*0.5);if (u_pitch_with_map) {vec2 corner_position=circle_center;if (u_scale_with_map) {corner_position+=extrude*(radius+stroke_width)*u_extrude_scale;} else {vec4 projected_center=u_matrix*vec4(circle_center,0,1);corner_position+=extrude*(radius+stroke_width)*u_extrude_scale*(projected_center.w/u_camera_to_center_distance);}gl_Position=u_matrix*vec4(corner_position,0,1);} else {gl_Position=u_matrix*vec4(circle_center,0,1);if (u_scale_with_map) {gl_Position.xy+=extrude*(radius+stroke_width)*u_extrude_scale*u_camera_to_center_distance;} else {gl_Position.xy+=extrude*(radius+stroke_width)*u_extrude_scale*gl_Position.w;}}lowp float antialiasblur=1.0/u_device_pixel_ratio/(radius+stroke_width);v_data=vec3(extrude.x,extrude.y,antialiasblur);}\"),Ke=gi(\"void main() {gl_FragColor=vec4(1.0);}\",\"attribute vec2 a_pos;uniform mat4 u_matrix;void main() {gl_Position=u_matrix*vec4(a_pos,0,1);}\"),Ye=gi(\"uniform highp float u_intensity;varying vec2 v_extrude;\\n#pragma mapbox: define highp float weight\\n#define GAUSS_COEF 0.3989422804014327\\nvoid main() {\\n#pragma mapbox: initialize highp float weight\\nfloat d=-0.5*3.0*3.0*dot(v_extrude,v_extrude);float val=weight*u_intensity*GAUSS_COEF*exp(d);gl_FragColor=vec4(val,1.0,1.0,1.0);\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"uniform mat4 u_matrix;uniform float u_extrude_scale;uniform float u_opacity;uniform float u_intensity;attribute vec2 a_pos;varying vec2 v_extrude;\\n#pragma mapbox: define highp float weight\\n#pragma mapbox: define mediump float radius\\nconst highp float ZERO=1.0/255.0/16.0;\\n#define GAUSS_COEF 0.3989422804014327\\nvoid main(void) {\\n#pragma mapbox: initialize highp float weight\\n#pragma mapbox: initialize mediump float radius\\nvec2 unscaled_extrude=vec2(mod(a_pos,2.0)*2.0-1.0);float S=sqrt(-2.0*log(ZERO/weight/u_intensity/GAUSS_COEF))/3.0;v_extrude=S*unscaled_extrude;vec2 extrude=v_extrude*radius*u_extrude_scale;vec4 pos=vec4(floor(a_pos*0.5)+extrude,0,1);gl_Position=u_matrix*pos;}\"),Je=gi(\"uniform sampler2D u_image;uniform sampler2D u_color_ramp;uniform float u_opacity;varying vec2 v_pos;void main() {float t=texture2D(u_image,v_pos).r;vec4 color=texture2D(u_color_ramp,vec2(t,0.5));gl_FragColor=color*u_opacity;\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(0.0);\\n#endif\\n}\",\"uniform mat4 u_matrix;uniform vec2 u_world;attribute vec2 a_pos;varying vec2 v_pos;void main() {gl_Position=u_matrix*vec4(a_pos*u_world,0,1);v_pos.x=a_pos.x;v_pos.y=1.0-a_pos.y;}\"),Qe=gi(\"varying float v_placed;varying float v_notUsed;void main() {float alpha=0.5;gl_FragColor=vec4(1.0,0.0,0.0,1.0)*alpha;if (v_placed > 0.5) {gl_FragColor=vec4(0.0,0.0,1.0,0.5)*alpha;}if (v_notUsed > 0.5) {gl_FragColor*=.1;}}\",\"attribute vec2 a_pos;attribute vec2 a_anchor_pos;attribute vec2 a_extrude;attribute vec2 a_placed;attribute vec2 a_shift;uniform mat4 u_matrix;uniform vec2 u_extrude_scale;uniform float u_camera_to_center_distance;varying float v_placed;varying float v_notUsed;void main() {vec4 projectedPoint=u_matrix*vec4(a_anchor_pos,0,1);highp float camera_to_anchor_distance=projectedPoint.w;highp float collision_perspective_ratio=clamp(0.5+0.5*(u_camera_to_center_distance/camera_to_anchor_distance),0.0,4.0);gl_Position=u_matrix*vec4(a_pos,0.0,1.0);gl_Position.xy+=(a_extrude+a_shift)*u_extrude_scale*gl_Position.w*collision_perspective_ratio;v_placed=a_placed.x;v_notUsed=a_placed.y;}\"),$e=gi(\"varying float v_radius;varying vec2 v_extrude;varying float v_perspective_ratio;varying float v_collision;void main() {float alpha=0.5*min(v_perspective_ratio,1.0);float stroke_radius=0.9*max(v_perspective_ratio,1.0);float distance_to_center=length(v_extrude);float distance_to_edge=abs(distance_to_center-v_radius);float opacity_t=smoothstep(-stroke_radius,0.0,-distance_to_edge);vec4 color=mix(vec4(0.0,0.0,1.0,0.5),vec4(1.0,0.0,0.0,1.0),v_collision);gl_FragColor=color*alpha*opacity_t;}\",\"attribute vec2 a_pos;attribute float a_radius;attribute vec2 a_flags;uniform mat4 u_matrix;uniform mat4 u_inv_matrix;uniform vec2 u_viewport_size;uniform float u_camera_to_center_distance;varying float v_radius;varying vec2 v_extrude;varying float v_perspective_ratio;varying float v_collision;vec3 toTilePosition(vec2 screenPos) {vec4 rayStart=u_inv_matrix*vec4(screenPos,-1.0,1.0);vec4 rayEnd  =u_inv_matrix*vec4(screenPos, 1.0,1.0);rayStart.xyz/=rayStart.w;rayEnd.xyz  /=rayEnd.w;highp float t=(0.0-rayStart.z)/(rayEnd.z-rayStart.z);return mix(rayStart.xyz,rayEnd.xyz,t);}void main() {vec2 quadCenterPos=a_pos;float radius=a_radius;float collision=a_flags.x;float vertexIdx=a_flags.y;vec2 quadVertexOffset=vec2(mix(-1.0,1.0,float(vertexIdx >=2.0)),mix(-1.0,1.0,float(vertexIdx >=1.0 && vertexIdx <=2.0)));vec2 quadVertexExtent=quadVertexOffset*radius;vec3 tilePos=toTilePosition(quadCenterPos);vec4 clipPos=u_matrix*vec4(tilePos,1.0);highp float camera_to_anchor_distance=clipPos.w;highp float collision_perspective_ratio=clamp(0.5+0.5*(u_camera_to_center_distance/camera_to_anchor_distance),0.0,4.0);float padding_factor=1.2;v_radius=radius;v_extrude=quadVertexExtent*padding_factor;v_perspective_ratio=collision_perspective_ratio;v_collision=collision;gl_Position=vec4(clipPos.xyz/clipPos.w,1.0)+vec4(quadVertexExtent*padding_factor/u_viewport_size*2.0,0.0,0.0);}\"),ti=gi(\"uniform highp vec4 u_color;uniform sampler2D u_overlay;varying vec2 v_uv;void main() {vec4 overlay_color=texture2D(u_overlay,v_uv);gl_FragColor=mix(u_color,overlay_color,overlay_color.a);}\",\"attribute vec2 a_pos;varying vec2 v_uv;uniform mat4 u_matrix;uniform float u_overlay_scale;void main() {v_uv=a_pos/8192.0;gl_Position=u_matrix*vec4(a_pos*u_overlay_scale,0,1);}\"),ei=gi(\"#pragma mapbox: define highp vec4 color\\n#pragma mapbox: define lowp float opacity\\nvoid main() {\\n#pragma mapbox: initialize highp vec4 color\\n#pragma mapbox: initialize lowp float opacity\\ngl_FragColor=color*opacity;\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"attribute vec2 a_pos;uniform mat4 u_matrix;\\n#pragma mapbox: define highp vec4 color\\n#pragma mapbox: define lowp float opacity\\nvoid main() {\\n#pragma mapbox: initialize highp vec4 color\\n#pragma mapbox: initialize lowp float opacity\\ngl_Position=u_matrix*vec4(a_pos,0,1);}\"),ii=gi(\"varying vec2 v_pos;\\n#pragma mapbox: define highp vec4 outline_color\\n#pragma mapbox: define lowp float opacity\\nvoid main() {\\n#pragma mapbox: initialize highp vec4 outline_color\\n#pragma mapbox: initialize lowp float opacity\\nfloat dist=length(v_pos-gl_FragCoord.xy);float alpha=1.0-smoothstep(0.0,1.0,dist);gl_FragColor=outline_color*(alpha*opacity);\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"attribute vec2 a_pos;uniform mat4 u_matrix;uniform vec2 u_world;varying vec2 v_pos;\\n#pragma mapbox: define highp vec4 outline_color\\n#pragma mapbox: define lowp float opacity\\nvoid main() {\\n#pragma mapbox: initialize highp vec4 outline_color\\n#pragma mapbox: initialize lowp float opacity\\ngl_Position=u_matrix*vec4(a_pos,0,1);v_pos=(gl_Position.xy/gl_Position.w+1.0)/2.0*u_world;}\"),oi=gi(\"uniform vec2 u_texsize;uniform sampler2D u_image;uniform float u_fade;varying vec2 v_pos_a;varying vec2 v_pos_b;varying vec2 v_pos;\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define lowp vec4 pattern_from\\n#pragma mapbox: define lowp vec4 pattern_to\\nvoid main() {\\n#pragma mapbox: initialize lowp float opacity\\n#pragma mapbox: initialize mediump vec4 pattern_from\\n#pragma mapbox: initialize mediump vec4 pattern_to\\nvec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;vec2 imagecoord=mod(v_pos_a,1.0);vec2 pos=mix(pattern_tl_a/u_texsize,pattern_br_a/u_texsize,imagecoord);vec4 color1=texture2D(u_image,pos);vec2 imagecoord_b=mod(v_pos_b,1.0);vec2 pos2=mix(pattern_tl_b/u_texsize,pattern_br_b/u_texsize,imagecoord_b);vec4 color2=texture2D(u_image,pos2);float dist=length(v_pos-gl_FragCoord.xy);float alpha=1.0-smoothstep(0.0,1.0,dist);gl_FragColor=mix(color1,color2,u_fade)*alpha*opacity;\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"uniform mat4 u_matrix;uniform vec2 u_world;uniform vec2 u_pixel_coord_upper;uniform vec2 u_pixel_coord_lower;uniform vec3 u_scale;attribute vec2 a_pos;varying vec2 v_pos_a;varying vec2 v_pos_b;varying vec2 v_pos;\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define lowp vec4 pattern_from\\n#pragma mapbox: define lowp vec4 pattern_to\\n#pragma mapbox: define lowp float pixel_ratio_from\\n#pragma mapbox: define lowp float pixel_ratio_to\\nvoid main() {\\n#pragma mapbox: initialize lowp float opacity\\n#pragma mapbox: initialize mediump vec4 pattern_from\\n#pragma mapbox: initialize mediump vec4 pattern_to\\n#pragma mapbox: initialize lowp float pixel_ratio_from\\n#pragma mapbox: initialize lowp float pixel_ratio_to\\nvec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;float tileRatio=u_scale.x;float fromScale=u_scale.y;float toScale=u_scale.z;gl_Position=u_matrix*vec4(a_pos,0,1);vec2 display_size_a=(pattern_br_a-pattern_tl_a)/pixel_ratio_from;vec2 display_size_b=(pattern_br_b-pattern_tl_b)/pixel_ratio_to;v_pos_a=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,fromScale*display_size_a,tileRatio,a_pos);v_pos_b=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,toScale*display_size_b,tileRatio,a_pos);v_pos=(gl_Position.xy/gl_Position.w+1.0)/2.0*u_world;}\"),ri=gi(\"uniform vec2 u_texsize;uniform float u_fade;uniform sampler2D u_image;varying vec2 v_pos_a;varying vec2 v_pos_b;\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define lowp vec4 pattern_from\\n#pragma mapbox: define lowp vec4 pattern_to\\nvoid main() {\\n#pragma mapbox: initialize lowp float opacity\\n#pragma mapbox: initialize mediump vec4 pattern_from\\n#pragma mapbox: initialize mediump vec4 pattern_to\\nvec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;vec2 imagecoord=mod(v_pos_a,1.0);vec2 pos=mix(pattern_tl_a/u_texsize,pattern_br_a/u_texsize,imagecoord);vec4 color1=texture2D(u_image,pos);vec2 imagecoord_b=mod(v_pos_b,1.0);vec2 pos2=mix(pattern_tl_b/u_texsize,pattern_br_b/u_texsize,imagecoord_b);vec4 color2=texture2D(u_image,pos2);gl_FragColor=mix(color1,color2,u_fade)*opacity;\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"uniform mat4 u_matrix;uniform vec2 u_pixel_coord_upper;uniform vec2 u_pixel_coord_lower;uniform vec3 u_scale;attribute vec2 a_pos;varying vec2 v_pos_a;varying vec2 v_pos_b;\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define lowp vec4 pattern_from\\n#pragma mapbox: define lowp vec4 pattern_to\\n#pragma mapbox: define lowp float pixel_ratio_from\\n#pragma mapbox: define lowp float pixel_ratio_to\\nvoid main() {\\n#pragma mapbox: initialize lowp float opacity\\n#pragma mapbox: initialize mediump vec4 pattern_from\\n#pragma mapbox: initialize mediump vec4 pattern_to\\n#pragma mapbox: initialize lowp float pixel_ratio_from\\n#pragma mapbox: initialize lowp float pixel_ratio_to\\nvec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;float tileZoomRatio=u_scale.x;float fromScale=u_scale.y;float toScale=u_scale.z;vec2 display_size_a=(pattern_br_a-pattern_tl_a)/pixel_ratio_from;vec2 display_size_b=(pattern_br_b-pattern_tl_b)/pixel_ratio_to;gl_Position=u_matrix*vec4(a_pos,0,1);v_pos_a=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,fromScale*display_size_a,tileZoomRatio,a_pos);v_pos_b=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,toScale*display_size_b,tileZoomRatio,a_pos);}\"),ai=gi(\"varying vec4 v_color;void main() {gl_FragColor=v_color;\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"uniform mat4 u_matrix;uniform vec3 u_lightcolor;uniform lowp vec3 u_lightpos;uniform lowp float u_lightintensity;uniform float u_vertical_gradient;uniform lowp float u_opacity;attribute vec2 a_pos;attribute vec4 a_normal_ed;varying vec4 v_color;\\n#pragma mapbox: define highp float base\\n#pragma mapbox: define highp float height\\n#pragma mapbox: define highp vec4 color\\nvoid main() {\\n#pragma mapbox: initialize highp float base\\n#pragma mapbox: initialize highp float height\\n#pragma mapbox: initialize highp vec4 color\\nvec3 normal=a_normal_ed.xyz;base=max(0.0,base);height=max(0.0,height);float t=mod(normal.x,2.0);gl_Position=u_matrix*vec4(a_pos,t > 0.0 ? height : base,1);float colorvalue=color.r*0.2126+color.g*0.7152+color.b*0.0722;v_color=vec4(0.0,0.0,0.0,1.0);vec4 ambientlight=vec4(0.03,0.03,0.03,1.0);color+=ambientlight;float directional=clamp(dot(normal/16384.0,u_lightpos),0.0,1.0);directional=mix((1.0-u_lightintensity),max((1.0-colorvalue+u_lightintensity),1.0),directional);if (normal.y !=0.0) {directional*=((1.0-u_vertical_gradient)+(u_vertical_gradient*clamp((t+base)*pow(height/150.0,0.5),mix(0.7,0.98,1.0-u_lightintensity),1.0)));}v_color.r+=clamp(color.r*directional*u_lightcolor.r,mix(0.0,0.3,1.0-u_lightcolor.r),1.0);v_color.g+=clamp(color.g*directional*u_lightcolor.g,mix(0.0,0.3,1.0-u_lightcolor.g),1.0);v_color.b+=clamp(color.b*directional*u_lightcolor.b,mix(0.0,0.3,1.0-u_lightcolor.b),1.0);v_color*=u_opacity;}\"),ni=gi(\"uniform vec2 u_texsize;uniform float u_fade;uniform sampler2D u_image;varying vec2 v_pos_a;varying vec2 v_pos_b;varying vec4 v_lighting;\\n#pragma mapbox: define lowp float base\\n#pragma mapbox: define lowp float height\\n#pragma mapbox: define lowp vec4 pattern_from\\n#pragma mapbox: define lowp vec4 pattern_to\\n#pragma mapbox: define lowp float pixel_ratio_from\\n#pragma mapbox: define lowp float pixel_ratio_to\\nvoid main() {\\n#pragma mapbox: initialize lowp float base\\n#pragma mapbox: initialize lowp float height\\n#pragma mapbox: initialize mediump vec4 pattern_from\\n#pragma mapbox: initialize mediump vec4 pattern_to\\n#pragma mapbox: initialize lowp float pixel_ratio_from\\n#pragma mapbox: initialize lowp float pixel_ratio_to\\nvec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;vec2 imagecoord=mod(v_pos_a,1.0);vec2 pos=mix(pattern_tl_a/u_texsize,pattern_br_a/u_texsize,imagecoord);vec4 color1=texture2D(u_image,pos);vec2 imagecoord_b=mod(v_pos_b,1.0);vec2 pos2=mix(pattern_tl_b/u_texsize,pattern_br_b/u_texsize,imagecoord_b);vec4 color2=texture2D(u_image,pos2);vec4 mixedColor=mix(color1,color2,u_fade);gl_FragColor=mixedColor*v_lighting;\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"uniform mat4 u_matrix;uniform vec2 u_pixel_coord_upper;uniform vec2 u_pixel_coord_lower;uniform float u_height_factor;uniform vec3 u_scale;uniform float u_vertical_gradient;uniform lowp float u_opacity;uniform vec3 u_lightcolor;uniform lowp vec3 u_lightpos;uniform lowp float u_lightintensity;attribute vec2 a_pos;attribute vec4 a_normal_ed;varying vec2 v_pos_a;varying vec2 v_pos_b;varying vec4 v_lighting;\\n#pragma mapbox: define lowp float base\\n#pragma mapbox: define lowp float height\\n#pragma mapbox: define lowp vec4 pattern_from\\n#pragma mapbox: define lowp vec4 pattern_to\\n#pragma mapbox: define lowp float pixel_ratio_from\\n#pragma mapbox: define lowp float pixel_ratio_to\\nvoid main() {\\n#pragma mapbox: initialize lowp float base\\n#pragma mapbox: initialize lowp float height\\n#pragma mapbox: initialize mediump vec4 pattern_from\\n#pragma mapbox: initialize mediump vec4 pattern_to\\n#pragma mapbox: initialize lowp float pixel_ratio_from\\n#pragma mapbox: initialize lowp float pixel_ratio_to\\nvec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;float tileRatio=u_scale.x;float fromScale=u_scale.y;float toScale=u_scale.z;vec3 normal=a_normal_ed.xyz;float edgedistance=a_normal_ed.w;vec2 display_size_a=(pattern_br_a-pattern_tl_a)/pixel_ratio_from;vec2 display_size_b=(pattern_br_b-pattern_tl_b)/pixel_ratio_to;base=max(0.0,base);height=max(0.0,height);float t=mod(normal.x,2.0);float z=t > 0.0 ? height : base;gl_Position=u_matrix*vec4(a_pos,z,1);vec2 pos=normal.x==1.0 && normal.y==0.0 && normal.z==16384.0\\n? a_pos\\n: vec2(edgedistance,z*u_height_factor);v_pos_a=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,fromScale*display_size_a,tileRatio,pos);v_pos_b=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,toScale*display_size_b,tileRatio,pos);v_lighting=vec4(0.0,0.0,0.0,1.0);float directional=clamp(dot(normal/16383.0,u_lightpos),0.0,1.0);directional=mix((1.0-u_lightintensity),max((0.5+u_lightintensity),1.0),directional);if (normal.y !=0.0) {directional*=((1.0-u_vertical_gradient)+(u_vertical_gradient*clamp((t+base)*pow(height/150.0,0.5),mix(0.7,0.98,1.0-u_lightintensity),1.0)));}v_lighting.rgb+=clamp(directional*u_lightcolor,mix(vec3(0.0),vec3(0.3),1.0-u_lightcolor),vec3(1.0));v_lighting*=u_opacity;}\"),si=gi(\"#ifdef GL_ES\\nprecision highp float;\\n#endif\\nuniform sampler2D u_image;varying vec2 v_pos;uniform vec2 u_dimension;uniform float u_zoom;uniform vec4 u_unpack;float getElevation(vec2 coord,float bias) {vec4 data=texture2D(u_image,coord)*255.0;data.a=-1.0;return dot(data,u_unpack)/4.0;}void main() {vec2 epsilon=1.0/u_dimension;float a=getElevation(v_pos+vec2(-epsilon.x,-epsilon.y),0.0);float b=getElevation(v_pos+vec2(0,-epsilon.y),0.0);float c=getElevation(v_pos+vec2(epsilon.x,-epsilon.y),0.0);float d=getElevation(v_pos+vec2(-epsilon.x,0),0.0);float e=getElevation(v_pos,0.0);float f=getElevation(v_pos+vec2(epsilon.x,0),0.0);float g=getElevation(v_pos+vec2(-epsilon.x,epsilon.y),0.0);float h=getElevation(v_pos+vec2(0,epsilon.y),0.0);float i=getElevation(v_pos+vec2(epsilon.x,epsilon.y),0.0);float exaggerationFactor=u_zoom < 2.0 ? 0.4 : u_zoom < 4.5 ? 0.35 : 0.3;float exaggeration=u_zoom < 15.0 ? (u_zoom-15.0)*exaggerationFactor : 0.0;vec2 deriv=vec2((c+f+f+i)-(a+d+d+g),(g+h+h+i)-(a+b+b+c))/pow(2.0,exaggeration+(19.2562-u_zoom));gl_FragColor=clamp(vec4(deriv.x/2.0+0.5,deriv.y/2.0+0.5,1.0,1.0),0.0,1.0);\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"uniform mat4 u_matrix;uniform vec2 u_dimension;attribute vec2 a_pos;attribute vec2 a_texture_pos;varying vec2 v_pos;void main() {gl_Position=u_matrix*vec4(a_pos,0,1);highp vec2 epsilon=1.0/u_dimension;float scale=(u_dimension.x-2.0)/u_dimension.x;v_pos=(a_texture_pos/8192.0)*scale+epsilon;}\"),li=gi(\"uniform sampler2D u_image;varying vec2 v_pos;uniform vec2 u_latrange;uniform vec2 u_light;uniform vec4 u_shadow;uniform vec4 u_highlight;uniform vec4 u_accent;\\n#define PI 3.141592653589793\\nvoid main() {vec4 pixel=texture2D(u_image,v_pos);vec2 deriv=((pixel.rg*2.0)-1.0);float scaleFactor=cos(radians((u_latrange[0]-u_latrange[1])*(1.0-v_pos.y)+u_latrange[1]));float slope=atan(1.25*length(deriv)/scaleFactor);float aspect=deriv.x !=0.0 ? atan(deriv.y,-deriv.x) : PI/2.0*(deriv.y > 0.0 ? 1.0 :-1.0);float intensity=u_light.x;float azimuth=u_light.y+PI;float base=1.875-intensity*1.75;float maxValue=0.5*PI;float scaledSlope=intensity !=0.5 ? ((pow(base,slope)-1.0)/(pow(base,maxValue)-1.0))*maxValue : slope;float accent=cos(scaledSlope);vec4 accent_color=(1.0-accent)*u_accent*clamp(intensity*2.0,0.0,1.0);float shade=abs(mod((aspect+azimuth)/PI+0.5,2.0)-1.0);vec4 shade_color=mix(u_shadow,u_highlight,shade)*sin(scaledSlope)*clamp(intensity*2.0,0.0,1.0);gl_FragColor=accent_color*(1.0-shade_color.a)+shade_color;\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"uniform mat4 u_matrix;attribute vec2 a_pos;attribute vec2 a_texture_pos;varying vec2 v_pos;void main() {gl_Position=u_matrix*vec4(a_pos,0,1);v_pos=a_texture_pos/8192.0;}\"),ci=gi(\"uniform lowp float u_device_pixel_ratio;varying vec2 v_width2;varying vec2 v_normal;varying float v_gamma_scale;\\n#pragma mapbox: define highp vec4 color\\n#pragma mapbox: define lowp float blur\\n#pragma mapbox: define lowp float opacity\\nvoid main() {\\n#pragma mapbox: initialize highp vec4 color\\n#pragma mapbox: initialize lowp float blur\\n#pragma mapbox: initialize lowp float opacity\\nfloat dist=length(v_normal)*v_width2.s;float blur2=(blur+1.0/u_device_pixel_ratio)*v_gamma_scale;float alpha=clamp(min(dist-(v_width2.t-blur2),v_width2.s-dist)/blur2,0.0,1.0);gl_FragColor=color*(alpha*opacity);\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"\\n#define scale 0.015873016\\nattribute vec2 a_pos_normal;attribute vec4 a_data;uniform mat4 u_matrix;uniform mediump float u_ratio;uniform vec2 u_units_to_pixels;uniform lowp float u_device_pixel_ratio;varying vec2 v_normal;varying vec2 v_width2;varying float v_gamma_scale;varying highp float v_linesofar;\\n#pragma mapbox: define highp vec4 color\\n#pragma mapbox: define lowp float blur\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define mediump float gapwidth\\n#pragma mapbox: define lowp float offset\\n#pragma mapbox: define mediump float width\\nvoid main() {\\n#pragma mapbox: initialize highp vec4 color\\n#pragma mapbox: initialize lowp float blur\\n#pragma mapbox: initialize lowp float opacity\\n#pragma mapbox: initialize mediump float gapwidth\\n#pragma mapbox: initialize lowp float offset\\n#pragma mapbox: initialize mediump float width\\nfloat ANTIALIASING=1.0/u_device_pixel_ratio/2.0;vec2 a_extrude=a_data.xy-128.0;float a_direction=mod(a_data.z,4.0)-1.0;v_linesofar=(floor(a_data.z/4.0)+a_data.w*64.0)*2.0;vec2 pos=floor(a_pos_normal*0.5);mediump vec2 normal=a_pos_normal-2.0*pos;normal.y=normal.y*2.0-1.0;v_normal=normal;gapwidth=gapwidth/2.0;float halfwidth=width/2.0;offset=-1.0*offset;float inset=gapwidth+(gapwidth > 0.0 ? ANTIALIASING : 0.0);float outset=gapwidth+halfwidth*(gapwidth > 0.0 ? 2.0 : 1.0)+(halfwidth==0.0 ? 0.0 : ANTIALIASING);mediump vec2 dist=outset*a_extrude*scale;mediump float u=0.5*a_direction;mediump float t=1.0-abs(u);mediump vec2 offset2=offset*a_extrude*scale*normal.y*mat2(t,-u,u,t);vec4 projected_extrude=u_matrix*vec4(dist/u_ratio,0.0,0.0);gl_Position=u_matrix*vec4(pos+offset2/u_ratio,0.0,1.0)+projected_extrude;float extrude_length_without_perspective=length(dist);float extrude_length_with_perspective=length(projected_extrude.xy/gl_Position.w*u_units_to_pixels);v_gamma_scale=extrude_length_without_perspective/extrude_length_with_perspective;v_width2=vec2(outset,inset);}\"),ui=gi(\"uniform lowp float u_device_pixel_ratio;uniform sampler2D u_image;varying vec2 v_width2;varying vec2 v_normal;varying float v_gamma_scale;varying highp vec2 v_uv;\\n#pragma mapbox: define lowp float blur\\n#pragma mapbox: define lowp float opacity\\nvoid main() {\\n#pragma mapbox: initialize lowp float blur\\n#pragma mapbox: initialize lowp float opacity\\nfloat dist=length(v_normal)*v_width2.s;float blur2=(blur+1.0/u_device_pixel_ratio)*v_gamma_scale;float alpha=clamp(min(dist-(v_width2.t-blur2),v_width2.s-dist)/blur2,0.0,1.0);vec4 color=texture2D(u_image,v_uv);gl_FragColor=color*(alpha*opacity);\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"\\n#define scale 0.015873016\\nattribute vec2 a_pos_normal;attribute vec4 a_data;attribute float a_uv_x;attribute float a_split_index;uniform mat4 u_matrix;uniform mediump float u_ratio;uniform lowp float u_device_pixel_ratio;uniform vec2 u_units_to_pixels;uniform float u_image_height;varying vec2 v_normal;varying vec2 v_width2;varying float v_gamma_scale;varying highp vec2 v_uv;\\n#pragma mapbox: define lowp float blur\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define mediump float gapwidth\\n#pragma mapbox: define lowp float offset\\n#pragma mapbox: define mediump float width\\nvoid main() {\\n#pragma mapbox: initialize lowp float blur\\n#pragma mapbox: initialize lowp float opacity\\n#pragma mapbox: initialize mediump float gapwidth\\n#pragma mapbox: initialize lowp float offset\\n#pragma mapbox: initialize mediump float width\\nfloat ANTIALIASING=1.0/u_device_pixel_ratio/2.0;vec2 a_extrude=a_data.xy-128.0;float a_direction=mod(a_data.z,4.0)-1.0;highp float texel_height=1.0/u_image_height;highp float half_texel_height=0.5*texel_height;v_uv=vec2(a_uv_x,a_split_index*texel_height-half_texel_height);vec2 pos=floor(a_pos_normal*0.5);mediump vec2 normal=a_pos_normal-2.0*pos;normal.y=normal.y*2.0-1.0;v_normal=normal;gapwidth=gapwidth/2.0;float halfwidth=width/2.0;offset=-1.0*offset;float inset=gapwidth+(gapwidth > 0.0 ? ANTIALIASING : 0.0);float outset=gapwidth+halfwidth*(gapwidth > 0.0 ? 2.0 : 1.0)+(halfwidth==0.0 ? 0.0 : ANTIALIASING);mediump vec2 dist=outset*a_extrude*scale;mediump float u=0.5*a_direction;mediump float t=1.0-abs(u);mediump vec2 offset2=offset*a_extrude*scale*normal.y*mat2(t,-u,u,t);vec4 projected_extrude=u_matrix*vec4(dist/u_ratio,0.0,0.0);gl_Position=u_matrix*vec4(pos+offset2/u_ratio,0.0,1.0)+projected_extrude;float extrude_length_without_perspective=length(dist);float extrude_length_with_perspective=length(projected_extrude.xy/gl_Position.w*u_units_to_pixels);v_gamma_scale=extrude_length_without_perspective/extrude_length_with_perspective;v_width2=vec2(outset,inset);}\"),hi=gi(\"uniform lowp float u_device_pixel_ratio;uniform vec2 u_texsize;uniform float u_fade;uniform mediump vec3 u_scale;uniform sampler2D u_image;varying vec2 v_normal;varying vec2 v_width2;varying float v_linesofar;varying float v_gamma_scale;varying float v_width;\\n#pragma mapbox: define lowp vec4 pattern_from\\n#pragma mapbox: define lowp vec4 pattern_to\\n#pragma mapbox: define lowp float pixel_ratio_from\\n#pragma mapbox: define lowp float pixel_ratio_to\\n#pragma mapbox: define lowp float blur\\n#pragma mapbox: define lowp float opacity\\nvoid main() {\\n#pragma mapbox: initialize mediump vec4 pattern_from\\n#pragma mapbox: initialize mediump vec4 pattern_to\\n#pragma mapbox: initialize lowp float pixel_ratio_from\\n#pragma mapbox: initialize lowp float pixel_ratio_to\\n#pragma mapbox: initialize lowp float blur\\n#pragma mapbox: initialize lowp float opacity\\nvec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;float tileZoomRatio=u_scale.x;float fromScale=u_scale.y;float toScale=u_scale.z;vec2 display_size_a=(pattern_br_a-pattern_tl_a)/pixel_ratio_from;vec2 display_size_b=(pattern_br_b-pattern_tl_b)/pixel_ratio_to;vec2 pattern_size_a=vec2(display_size_a.x*fromScale/tileZoomRatio,display_size_a.y);vec2 pattern_size_b=vec2(display_size_b.x*toScale/tileZoomRatio,display_size_b.y);float aspect_a=display_size_a.y/v_width;float aspect_b=display_size_b.y/v_width;float dist=length(v_normal)*v_width2.s;float blur2=(blur+1.0/u_device_pixel_ratio)*v_gamma_scale;float alpha=clamp(min(dist-(v_width2.t-blur2),v_width2.s-dist)/blur2,0.0,1.0);float x_a=mod(v_linesofar/pattern_size_a.x*aspect_a,1.0);float x_b=mod(v_linesofar/pattern_size_b.x*aspect_b,1.0);float y=0.5*v_normal.y+0.5;vec2 texel_size=1.0/u_texsize;vec2 pos_a=mix(pattern_tl_a*texel_size-texel_size,pattern_br_a*texel_size+texel_size,vec2(x_a,y));vec2 pos_b=mix(pattern_tl_b*texel_size-texel_size,pattern_br_b*texel_size+texel_size,vec2(x_b,y));vec4 color=mix(texture2D(u_image,pos_a),texture2D(u_image,pos_b),u_fade);gl_FragColor=color*alpha*opacity;\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"\\n#define scale 0.015873016\\n#define LINE_DISTANCE_SCALE 2.0\\nattribute vec2 a_pos_normal;attribute vec4 a_data;uniform mat4 u_matrix;uniform vec2 u_units_to_pixels;uniform mediump float u_ratio;uniform lowp float u_device_pixel_ratio;varying vec2 v_normal;varying vec2 v_width2;varying float v_linesofar;varying float v_gamma_scale;varying float v_width;\\n#pragma mapbox: define lowp float blur\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define lowp float offset\\n#pragma mapbox: define mediump float gapwidth\\n#pragma mapbox: define mediump float width\\n#pragma mapbox: define lowp float floorwidth\\n#pragma mapbox: define lowp vec4 pattern_from\\n#pragma mapbox: define lowp vec4 pattern_to\\n#pragma mapbox: define lowp float pixel_ratio_from\\n#pragma mapbox: define lowp float pixel_ratio_to\\nvoid main() {\\n#pragma mapbox: initialize lowp float blur\\n#pragma mapbox: initialize lowp float opacity\\n#pragma mapbox: initialize lowp float offset\\n#pragma mapbox: initialize mediump float gapwidth\\n#pragma mapbox: initialize mediump float width\\n#pragma mapbox: initialize lowp float floorwidth\\n#pragma mapbox: initialize mediump vec4 pattern_from\\n#pragma mapbox: initialize mediump vec4 pattern_to\\n#pragma mapbox: initialize lowp float pixel_ratio_from\\n#pragma mapbox: initialize lowp float pixel_ratio_to\\nfloat ANTIALIASING=1.0/u_device_pixel_ratio/2.0;vec2 a_extrude=a_data.xy-128.0;float a_direction=mod(a_data.z,4.0)-1.0;float a_linesofar=(floor(a_data.z/4.0)+a_data.w*64.0)*LINE_DISTANCE_SCALE;vec2 pos=floor(a_pos_normal*0.5);mediump vec2 normal=a_pos_normal-2.0*pos;normal.y=normal.y*2.0-1.0;v_normal=normal;gapwidth=gapwidth/2.0;float halfwidth=width/2.0;offset=-1.0*offset;float inset=gapwidth+(gapwidth > 0.0 ? ANTIALIASING : 0.0);float outset=gapwidth+halfwidth*(gapwidth > 0.0 ? 2.0 : 1.0)+(halfwidth==0.0 ? 0.0 : ANTIALIASING);mediump vec2 dist=outset*a_extrude*scale;mediump float u=0.5*a_direction;mediump float t=1.0-abs(u);mediump vec2 offset2=offset*a_extrude*scale*normal.y*mat2(t,-u,u,t);vec4 projected_extrude=u_matrix*vec4(dist/u_ratio,0.0,0.0);gl_Position=u_matrix*vec4(pos+offset2/u_ratio,0.0,1.0)+projected_extrude;float extrude_length_without_perspective=length(dist);float extrude_length_with_perspective=length(projected_extrude.xy/gl_Position.w*u_units_to_pixels);v_gamma_scale=extrude_length_without_perspective/extrude_length_with_perspective;v_linesofar=a_linesofar;v_width2=vec2(outset,inset);v_width=floorwidth;}\"),pi=gi(\"uniform lowp float u_device_pixel_ratio;uniform sampler2D u_image;uniform float u_sdfgamma;uniform float u_mix;varying vec2 v_normal;varying vec2 v_width2;varying vec2 v_tex_a;varying vec2 v_tex_b;varying float v_gamma_scale;\\n#pragma mapbox: define highp vec4 color\\n#pragma mapbox: define lowp float blur\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define mediump float width\\n#pragma mapbox: define lowp float floorwidth\\nvoid main() {\\n#pragma mapbox: initialize highp vec4 color\\n#pragma mapbox: initialize lowp float blur\\n#pragma mapbox: initialize lowp float opacity\\n#pragma mapbox: initialize mediump float width\\n#pragma mapbox: initialize lowp float floorwidth\\nfloat dist=length(v_normal)*v_width2.s;float blur2=(blur+1.0/u_device_pixel_ratio)*v_gamma_scale;float alpha=clamp(min(dist-(v_width2.t-blur2),v_width2.s-dist)/blur2,0.0,1.0);float sdfdist_a=texture2D(u_image,v_tex_a).a;float sdfdist_b=texture2D(u_image,v_tex_b).a;float sdfdist=mix(sdfdist_a,sdfdist_b,u_mix);alpha*=smoothstep(0.5-u_sdfgamma/floorwidth,0.5+u_sdfgamma/floorwidth,sdfdist);gl_FragColor=color*(alpha*opacity);\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"\\n#define scale 0.015873016\\n#define LINE_DISTANCE_SCALE 2.0\\nattribute vec2 a_pos_normal;attribute vec4 a_data;uniform mat4 u_matrix;uniform mediump float u_ratio;uniform lowp float u_device_pixel_ratio;uniform vec2 u_patternscale_a;uniform float u_tex_y_a;uniform vec2 u_patternscale_b;uniform float u_tex_y_b;uniform vec2 u_units_to_pixels;varying vec2 v_normal;varying vec2 v_width2;varying vec2 v_tex_a;varying vec2 v_tex_b;varying float v_gamma_scale;\\n#pragma mapbox: define highp vec4 color\\n#pragma mapbox: define lowp float blur\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define mediump float gapwidth\\n#pragma mapbox: define lowp float offset\\n#pragma mapbox: define mediump float width\\n#pragma mapbox: define lowp float floorwidth\\nvoid main() {\\n#pragma mapbox: initialize highp vec4 color\\n#pragma mapbox: initialize lowp float blur\\n#pragma mapbox: initialize lowp float opacity\\n#pragma mapbox: initialize mediump float gapwidth\\n#pragma mapbox: initialize lowp float offset\\n#pragma mapbox: initialize mediump float width\\n#pragma mapbox: initialize lowp float floorwidth\\nfloat ANTIALIASING=1.0/u_device_pixel_ratio/2.0;vec2 a_extrude=a_data.xy-128.0;float a_direction=mod(a_data.z,4.0)-1.0;float a_linesofar=(floor(a_data.z/4.0)+a_data.w*64.0)*LINE_DISTANCE_SCALE;vec2 pos=floor(a_pos_normal*0.5);mediump vec2 normal=a_pos_normal-2.0*pos;normal.y=normal.y*2.0-1.0;v_normal=normal;gapwidth=gapwidth/2.0;float halfwidth=width/2.0;offset=-1.0*offset;float inset=gapwidth+(gapwidth > 0.0 ? ANTIALIASING : 0.0);float outset=gapwidth+halfwidth*(gapwidth > 0.0 ? 2.0 : 1.0)+(halfwidth==0.0 ? 0.0 : ANTIALIASING);mediump vec2 dist=outset*a_extrude*scale;mediump float u=0.5*a_direction;mediump float t=1.0-abs(u);mediump vec2 offset2=offset*a_extrude*scale*normal.y*mat2(t,-u,u,t);vec4 projected_extrude=u_matrix*vec4(dist/u_ratio,0.0,0.0);gl_Position=u_matrix*vec4(pos+offset2/u_ratio,0.0,1.0)+projected_extrude;float extrude_length_without_perspective=length(dist);float extrude_length_with_perspective=length(projected_extrude.xy/gl_Position.w*u_units_to_pixels);v_gamma_scale=extrude_length_without_perspective/extrude_length_with_perspective;v_tex_a=vec2(a_linesofar*u_patternscale_a.x/floorwidth,normal.y*u_patternscale_a.y+u_tex_y_a);v_tex_b=vec2(a_linesofar*u_patternscale_b.x/floorwidth,normal.y*u_patternscale_b.y+u_tex_y_b);v_width2=vec2(outset,inset);}\"),di=gi(\"uniform float u_fade_t;uniform float u_opacity;uniform sampler2D u_image0;uniform sampler2D u_image1;varying vec2 v_pos0;varying vec2 v_pos1;uniform float u_brightness_low;uniform float u_brightness_high;uniform float u_saturation_factor;uniform float u_contrast_factor;uniform vec3 u_spin_weights;void main() {vec4 color0=texture2D(u_image0,v_pos0);vec4 color1=texture2D(u_image1,v_pos1);if (color0.a > 0.0) {color0.rgb=color0.rgb/color0.a;}if (color1.a > 0.0) {color1.rgb=color1.rgb/color1.a;}vec4 color=mix(color0,color1,u_fade_t);color.a*=u_opacity;vec3 rgb=color.rgb;rgb=vec3(dot(rgb,u_spin_weights.xyz),dot(rgb,u_spin_weights.zxy),dot(rgb,u_spin_weights.yzx));float average=(color.r+color.g+color.b)/3.0;rgb+=(average-rgb)*u_saturation_factor;rgb=(rgb-0.5)*u_contrast_factor+0.5;vec3 u_high_vec=vec3(u_brightness_low,u_brightness_low,u_brightness_low);vec3 u_low_vec=vec3(u_brightness_high,u_brightness_high,u_brightness_high);gl_FragColor=vec4(mix(u_high_vec,u_low_vec,rgb)*color.a,color.a);\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"uniform mat4 u_matrix;uniform vec2 u_tl_parent;uniform float u_scale_parent;uniform float u_buffer_scale;attribute vec2 a_pos;attribute vec2 a_texture_pos;varying vec2 v_pos0;varying vec2 v_pos1;void main() {gl_Position=u_matrix*vec4(a_pos,0,1);v_pos0=(((a_texture_pos/8192.0)-0.5)/u_buffer_scale )+0.5;v_pos1=(v_pos0*u_scale_parent)+u_tl_parent;}\"),_i=gi(\"uniform sampler2D u_texture;varying vec2 v_tex;varying float v_fade_opacity;\\n#pragma mapbox: define lowp float opacity\\nvoid main() {\\n#pragma mapbox: initialize lowp float opacity\\nlowp float alpha=opacity*v_fade_opacity;gl_FragColor=texture2D(u_texture,v_tex)*alpha;\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"const float PI=3.141592653589793;attribute vec4 a_pos_offset;attribute vec4 a_data;attribute vec4 a_pixeloffset;attribute vec3 a_projected_pos;attribute float a_fade_opacity;uniform bool u_is_size_zoom_constant;uniform bool u_is_size_feature_constant;uniform highp float u_size_t;uniform highp float u_size;uniform highp float u_camera_to_center_distance;uniform highp float u_pitch;uniform bool u_rotate_symbol;uniform highp float u_aspect_ratio;uniform float u_fade_change;uniform mat4 u_matrix;uniform mat4 u_label_plane_matrix;uniform mat4 u_coord_matrix;uniform bool u_is_text;uniform bool u_pitch_with_map;uniform vec2 u_texsize;varying vec2 v_tex;varying float v_fade_opacity;\\n#pragma mapbox: define lowp float opacity\\nvoid main() {\\n#pragma mapbox: initialize lowp float opacity\\nvec2 a_pos=a_pos_offset.xy;vec2 a_offset=a_pos_offset.zw;vec2 a_tex=a_data.xy;vec2 a_size=a_data.zw;float a_size_min=floor(a_size[0]*0.5);vec2 a_pxoffset=a_pixeloffset.xy;vec2 a_minFontScale=a_pixeloffset.zw/256.0;highp float segment_angle=-a_projected_pos[2];float size;if (!u_is_size_zoom_constant && !u_is_size_feature_constant) {size=mix(a_size_min,a_size[1],u_size_t)/128.0;} else if (u_is_size_zoom_constant && !u_is_size_feature_constant) {size=a_size_min/128.0;} else {size=u_size;}vec4 projectedPoint=u_matrix*vec4(a_pos,0,1);highp float camera_to_anchor_distance=projectedPoint.w;highp float distance_ratio=u_pitch_with_map ?\\ncamera_to_anchor_distance/u_camera_to_center_distance :\\nu_camera_to_center_distance/camera_to_anchor_distance;highp float perspective_ratio=clamp(0.5+0.5*distance_ratio,0.0,4.0);size*=perspective_ratio;float fontScale=u_is_text ? size/24.0 : size;highp float symbol_rotation=0.0;if (u_rotate_symbol) {vec4 offsetProjectedPoint=u_matrix*vec4(a_pos+vec2(1,0),0,1);vec2 a=projectedPoint.xy/projectedPoint.w;vec2 b=offsetProjectedPoint.xy/offsetProjectedPoint.w;symbol_rotation=atan((b.y-a.y)/u_aspect_ratio,b.x-a.x);}highp float angle_sin=sin(segment_angle+symbol_rotation);highp float angle_cos=cos(segment_angle+symbol_rotation);mat2 rotation_matrix=mat2(angle_cos,-1.0*angle_sin,angle_sin,angle_cos);vec4 projected_pos=u_label_plane_matrix*vec4(a_projected_pos.xy,0.0,1.0);gl_Position=u_coord_matrix*vec4(projected_pos.xy/projected_pos.w+rotation_matrix*(a_offset/32.0*max(a_minFontScale,fontScale)+a_pxoffset/16.0),0.0,1.0);v_tex=a_tex/u_texsize;vec2 fade_opacity=unpack_opacity(a_fade_opacity);float fade_change=fade_opacity[1] > 0.5 ? u_fade_change :-u_fade_change;v_fade_opacity=max(0.0,min(1.0,fade_opacity[0]+fade_change));}\"),fi=gi(\"#define SDF_PX 8.0\\nuniform bool u_is_halo;uniform sampler2D u_texture;uniform highp float u_gamma_scale;uniform lowp float u_device_pixel_ratio;uniform bool u_is_text;varying vec2 v_data0;varying vec3 v_data1;\\n#pragma mapbox: define highp vec4 fill_color\\n#pragma mapbox: define highp vec4 halo_color\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define lowp float halo_width\\n#pragma mapbox: define lowp float halo_blur\\nvoid main() {\\n#pragma mapbox: initialize highp vec4 fill_color\\n#pragma mapbox: initialize highp vec4 halo_color\\n#pragma mapbox: initialize lowp float opacity\\n#pragma mapbox: initialize lowp float halo_width\\n#pragma mapbox: initialize lowp float halo_blur\\nfloat EDGE_GAMMA=0.105/u_device_pixel_ratio;vec2 tex=v_data0.xy;float gamma_scale=v_data1.x;float size=v_data1.y;float fade_opacity=v_data1[2];float fontScale=u_is_text ? size/24.0 : size;lowp vec4 color=fill_color;highp float gamma=EDGE_GAMMA/(fontScale*u_gamma_scale);lowp float buff=(256.0-64.0)/256.0;if (u_is_halo) {color=halo_color;gamma=(halo_blur*1.19/SDF_PX+EDGE_GAMMA)/(fontScale*u_gamma_scale);buff=(6.0-halo_width/fontScale)/SDF_PX;}lowp float dist=texture2D(u_texture,tex).a;highp float gamma_scaled=gamma*gamma_scale;highp float alpha=smoothstep(buff-gamma_scaled,buff+gamma_scaled,dist);gl_FragColor=color*(alpha*opacity*fade_opacity);\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"const float PI=3.141592653589793;attribute vec4 a_pos_offset;attribute vec4 a_data;attribute vec4 a_pixeloffset;attribute vec3 a_projected_pos;attribute float a_fade_opacity;uniform bool u_is_size_zoom_constant;uniform bool u_is_size_feature_constant;uniform highp float u_size_t;uniform highp float u_size;uniform mat4 u_matrix;uniform mat4 u_label_plane_matrix;uniform mat4 u_coord_matrix;uniform bool u_is_text;uniform bool u_pitch_with_map;uniform highp float u_pitch;uniform bool u_rotate_symbol;uniform highp float u_aspect_ratio;uniform highp float u_camera_to_center_distance;uniform float u_fade_change;uniform vec2 u_texsize;varying vec2 v_data0;varying vec3 v_data1;\\n#pragma mapbox: define highp vec4 fill_color\\n#pragma mapbox: define highp vec4 halo_color\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define lowp float halo_width\\n#pragma mapbox: define lowp float halo_blur\\nvoid main() {\\n#pragma mapbox: initialize highp vec4 fill_color\\n#pragma mapbox: initialize highp vec4 halo_color\\n#pragma mapbox: initialize lowp float opacity\\n#pragma mapbox: initialize lowp float halo_width\\n#pragma mapbox: initialize lowp float halo_blur\\nvec2 a_pos=a_pos_offset.xy;vec2 a_offset=a_pos_offset.zw;vec2 a_tex=a_data.xy;vec2 a_size=a_data.zw;float a_size_min=floor(a_size[0]*0.5);vec2 a_pxoffset=a_pixeloffset.xy;highp float segment_angle=-a_projected_pos[2];float size;if (!u_is_size_zoom_constant && !u_is_size_feature_constant) {size=mix(a_size_min,a_size[1],u_size_t)/128.0;} else if (u_is_size_zoom_constant && !u_is_size_feature_constant) {size=a_size_min/128.0;} else {size=u_size;}vec4 projectedPoint=u_matrix*vec4(a_pos,0,1);highp float camera_to_anchor_distance=projectedPoint.w;highp float distance_ratio=u_pitch_with_map ?\\ncamera_to_anchor_distance/u_camera_to_center_distance :\\nu_camera_to_center_distance/camera_to_anchor_distance;highp float perspective_ratio=clamp(0.5+0.5*distance_ratio,0.0,4.0);size*=perspective_ratio;float fontScale=u_is_text ? size/24.0 : size;highp float symbol_rotation=0.0;if (u_rotate_symbol) {vec4 offsetProjectedPoint=u_matrix*vec4(a_pos+vec2(1,0),0,1);vec2 a=projectedPoint.xy/projectedPoint.w;vec2 b=offsetProjectedPoint.xy/offsetProjectedPoint.w;symbol_rotation=atan((b.y-a.y)/u_aspect_ratio,b.x-a.x);}highp float angle_sin=sin(segment_angle+symbol_rotation);highp float angle_cos=cos(segment_angle+symbol_rotation);mat2 rotation_matrix=mat2(angle_cos,-1.0*angle_sin,angle_sin,angle_cos);vec4 projected_pos=u_label_plane_matrix*vec4(a_projected_pos.xy,0.0,1.0);gl_Position=u_coord_matrix*vec4(projected_pos.xy/projected_pos.w+rotation_matrix*(a_offset/32.0*fontScale+a_pxoffset),0.0,1.0);float gamma_scale=gl_Position.w;vec2 fade_opacity=unpack_opacity(a_fade_opacity);float fade_change=fade_opacity[1] > 0.5 ? u_fade_change :-u_fade_change;float interpolated_fade_opacity=max(0.0,min(1.0,fade_opacity[0]+fade_change));v_data0=a_tex/u_texsize;v_data1=vec3(gamma_scale,size,interpolated_fade_opacity);}\"),mi=gi(\"#define SDF_PX 8.0\\n#define SDF 1.0\\n#define ICON 0.0\\nuniform bool u_is_halo;uniform sampler2D u_texture;uniform sampler2D u_texture_icon;uniform highp float u_gamma_scale;uniform lowp float u_device_pixel_ratio;varying vec4 v_data0;varying vec4 v_data1;\\n#pragma mapbox: define highp vec4 fill_color\\n#pragma mapbox: define highp vec4 halo_color\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define lowp float halo_width\\n#pragma mapbox: define lowp float halo_blur\\nvoid main() {\\n#pragma mapbox: initialize highp vec4 fill_color\\n#pragma mapbox: initialize highp vec4 halo_color\\n#pragma mapbox: initialize lowp float opacity\\n#pragma mapbox: initialize lowp float halo_width\\n#pragma mapbox: initialize lowp float halo_blur\\nfloat fade_opacity=v_data1[2];if (v_data1.w==ICON) {vec2 tex_icon=v_data0.zw;lowp float alpha=opacity*fade_opacity;gl_FragColor=texture2D(u_texture_icon,tex_icon)*alpha;\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\nreturn;}vec2 tex=v_data0.xy;float EDGE_GAMMA=0.105/u_device_pixel_ratio;float gamma_scale=v_data1.x;float size=v_data1.y;float fontScale=size/24.0;lowp vec4 color=fill_color;highp float gamma=EDGE_GAMMA/(fontScale*u_gamma_scale);lowp float buff=(256.0-64.0)/256.0;if (u_is_halo) {color=halo_color;gamma=(halo_blur*1.19/SDF_PX+EDGE_GAMMA)/(fontScale*u_gamma_scale);buff=(6.0-halo_width/fontScale)/SDF_PX;}lowp float dist=texture2D(u_texture,tex).a;highp float gamma_scaled=gamma*gamma_scale;highp float alpha=smoothstep(buff-gamma_scaled,buff+gamma_scaled,dist);gl_FragColor=color*(alpha*opacity*fade_opacity);\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"const float PI=3.141592653589793;attribute vec4 a_pos_offset;attribute vec4 a_data;attribute vec3 a_projected_pos;attribute float a_fade_opacity;uniform bool u_is_size_zoom_constant;uniform bool u_is_size_feature_constant;uniform highp float u_size_t;uniform highp float u_size;uniform mat4 u_matrix;uniform mat4 u_label_plane_matrix;uniform mat4 u_coord_matrix;uniform bool u_is_text;uniform bool u_pitch_with_map;uniform highp float u_pitch;uniform bool u_rotate_symbol;uniform highp float u_aspect_ratio;uniform highp float u_camera_to_center_distance;uniform float u_fade_change;uniform vec2 u_texsize;uniform vec2 u_texsize_icon;varying vec4 v_data0;varying vec4 v_data1;\\n#pragma mapbox: define highp vec4 fill_color\\n#pragma mapbox: define highp vec4 halo_color\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define lowp float halo_width\\n#pragma mapbox: define lowp float halo_blur\\nvoid main() {\\n#pragma mapbox: initialize highp vec4 fill_color\\n#pragma mapbox: initialize highp vec4 halo_color\\n#pragma mapbox: initialize lowp float opacity\\n#pragma mapbox: initialize lowp float halo_width\\n#pragma mapbox: initialize lowp float halo_blur\\nvec2 a_pos=a_pos_offset.xy;vec2 a_offset=a_pos_offset.zw;vec2 a_tex=a_data.xy;vec2 a_size=a_data.zw;float a_size_min=floor(a_size[0]*0.5);float is_sdf=a_size[0]-2.0*a_size_min;highp float segment_angle=-a_projected_pos[2];float size;if (!u_is_size_zoom_constant && !u_is_size_feature_constant) {size=mix(a_size_min,a_size[1],u_size_t)/128.0;} else if (u_is_size_zoom_constant && !u_is_size_feature_constant) {size=a_size_min/128.0;} else {size=u_size;}vec4 projectedPoint=u_matrix*vec4(a_pos,0,1);highp float camera_to_anchor_distance=projectedPoint.w;highp float distance_ratio=u_pitch_with_map ?\\ncamera_to_anchor_distance/u_camera_to_center_distance :\\nu_camera_to_center_distance/camera_to_anchor_distance;highp float perspective_ratio=clamp(0.5+0.5*distance_ratio,0.0,4.0);size*=perspective_ratio;float fontScale=size/24.0;highp float symbol_rotation=0.0;if (u_rotate_symbol) {vec4 offsetProjectedPoint=u_matrix*vec4(a_pos+vec2(1,0),0,1);vec2 a=projectedPoint.xy/projectedPoint.w;vec2 b=offsetProjectedPoint.xy/offsetProjectedPoint.w;symbol_rotation=atan((b.y-a.y)/u_aspect_ratio,b.x-a.x);}highp float angle_sin=sin(segment_angle+symbol_rotation);highp float angle_cos=cos(segment_angle+symbol_rotation);mat2 rotation_matrix=mat2(angle_cos,-1.0*angle_sin,angle_sin,angle_cos);vec4 projected_pos=u_label_plane_matrix*vec4(a_projected_pos.xy,0.0,1.0);gl_Position=u_coord_matrix*vec4(projected_pos.xy/projected_pos.w+rotation_matrix*(a_offset/32.0*fontScale),0.0,1.0);float gamma_scale=gl_Position.w;vec2 fade_opacity=unpack_opacity(a_fade_opacity);float fade_change=fade_opacity[1] > 0.5 ? u_fade_change :-u_fade_change;float interpolated_fade_opacity=max(0.0,min(1.0,fade_opacity[0]+fade_change));v_data0.xy=a_tex/u_texsize;v_data0.zw=a_tex/u_texsize_icon;v_data1=vec4(gamma_scale,size,interpolated_fade_opacity,is_sdf);}\");function gi(t,e){var i=/#pragma mapbox: ([\\w]+) ([\\w]+) ([\\w]+) ([\\w]+)/g,o=e.match(/attribute ([\\w]+) ([\\w]+)/g),r=t.match(/uniform ([\\w]+) ([\\w]+)([\\s]*)([\\w]*)/g),a=e.match(/uniform ([\\w]+) ([\\w]+)([\\s]*)([\\w]*)/g),n=a?a.concat(r):r,s={};return {fragmentSource:t=t.replace(i,(function(t,e,i,o,r){return s[r]=!0,\"define\"===e?\"\\n#ifndef HAS_UNIFORM_u_\"+r+\"\\nvarying \"+i+\" \"+o+\" \"+r+\";\\n#else\\nuniform \"+i+\" \"+o+\" u_\"+r+\";\\n#endif\\n\":\"\\n#ifdef HAS_UNIFORM_u_\"+r+\"\\n    \"+i+\" \"+o+\" \"+r+\" = u_\"+r+\";\\n#endif\\n\"})),vertexSource:e=e.replace(i,(function(t,e,i,o,r){var a=\"float\"===o?\"vec2\":\"vec4\",n=r.match(/color/)?\"color\":a;return s[r]?\"define\"===e?\"\\n#ifndef HAS_UNIFORM_u_\"+r+\"\\nuniform lowp float u_\"+r+\"_t;\\nattribute \"+i+\" \"+a+\" a_\"+r+\";\\nvarying \"+i+\" \"+o+\" \"+r+\";\\n#else\\nuniform \"+i+\" \"+o+\" u_\"+r+\";\\n#endif\\n\":\"vec4\"===n?\"\\n#ifndef HAS_UNIFORM_u_\"+r+\"\\n    \"+r+\" = a_\"+r+\";\\n#else\\n    \"+i+\" \"+o+\" \"+r+\" = u_\"+r+\";\\n#endif\\n\":\"\\n#ifndef HAS_UNIFORM_u_\"+r+\"\\n    \"+r+\" = unpack_mix_\"+n+\"(a_\"+r+\", u_\"+r+\"_t);\\n#else\\n    \"+i+\" \"+o+\" \"+r+\" = u_\"+r+\";\\n#endif\\n\":\"define\"===e?\"\\n#ifndef HAS_UNIFORM_u_\"+r+\"\\nuniform lowp float u_\"+r+\"_t;\\nattribute \"+i+\" \"+a+\" a_\"+r+\";\\n#else\\nuniform \"+i+\" \"+o+\" u_\"+r+\";\\n#endif\\n\":\"vec4\"===n?\"\\n#ifndef HAS_UNIFORM_u_\"+r+\"\\n    \"+i+\" \"+o+\" \"+r+\" = a_\"+r+\";\\n#else\\n    \"+i+\" \"+o+\" \"+r+\" = u_\"+r+\";\\n#endif\\n\":\"\\n#ifndef HAS_UNIFORM_u_\"+r+\"\\n    \"+i+\" \"+o+\" \"+r+\" = unpack_mix_\"+n+\"(a_\"+r+\", u_\"+r+\"_t);\\n#else\\n    \"+i+\" \"+o+\" \"+r+\" = u_\"+r+\";\\n#endif\\n\"})),staticAttributes:o,staticUniforms:n}}var vi=Object.freeze({__proto__:null,prelude:Ge,background:We,backgroundPattern:Xe,circle:He,clippingMask:Ke,heatmap:Ye,heatmapTexture:Je,collisionBox:Qe,collisionCircle:$e,debug:ti,fill:ei,fillOutline:ii,fillOutlinePattern:oi,fillPattern:ri,fillExtrusion:ai,fillExtrusionPattern:ni,hillshadePrepare:si,hillshade:li,line:ci,lineGradient:ui,linePattern:hi,lineSDF:pi,raster:di,symbolIcon:_i,symbolSDF:fi,symbolTextAndIcon:mi}),yi=function(){this.boundProgram=null,this.boundLayoutVertexBuffer=null,this.boundPaintVertexBuffers=[],this.boundIndexBuffer=null,this.boundVertexOffset=null,this.boundDynamicVertexBuffer=null,this.vao=null;};function xi(t){for(var e=[],i=0;i<t.length;i++)if(null!==t[i]){var o=t[i].split(\" \");e.push(o.pop());}return e}yi.prototype.bind=function(t,e,i,o,r,a,n,s){this.context=t;for(var l=this.boundPaintVertexBuffers.length!==o.length,c=0;!l&&c<o.length;c++)this.boundPaintVertexBuffers[c]!==o[c]&&(l=!0);t.extVertexArrayObject&&this.vao&&this.boundProgram===e&&this.boundLayoutVertexBuffer===i&&!l&&this.boundIndexBuffer===r&&this.boundVertexOffset===a&&this.boundDynamicVertexBuffer===n&&this.boundDynamicVertexBuffer2===s?(t.bindVertexArrayOES.set(this.vao),n&&n.bind(),r&&r.dynamicDraw&&r.bind(),s&&s.bind()):this.freshBind(e,i,o,r,a,n,s);},yi.prototype.freshBind=function(t,e,i,o,r,a,n){var s,l=t.numAttributes,c=this.context,u=c.gl;if(c.extVertexArrayObject)this.vao&&this.destroy(),this.vao=c.extVertexArrayObject.createVertexArrayOES(),c.bindVertexArrayOES.set(this.vao),s=0,this.boundProgram=t,this.boundLayoutVertexBuffer=e,this.boundPaintVertexBuffers=i,this.boundIndexBuffer=o,this.boundVertexOffset=r,this.boundDynamicVertexBuffer=a,this.boundDynamicVertexBuffer2=n;else {s=c.currentNumAttributes||0;for(var h=l;h<s;h++)u.disableVertexAttribArray(h);}e.enableAttributes(u,t);for(var p=0,d=i;p<d.length;p+=1)d[p].enableAttributes(u,t);a&&a.enableAttributes(u,t),n&&n.enableAttributes(u,t),e.bind(),e.setVertexAttribPointers(u,t,r);for(var _=0,f=i;_<f.length;_+=1){var m=f[_];m.bind(),m.setVertexAttribPointers(u,t,r);}a&&(a.bind(),a.setVertexAttribPointers(u,t,r)),o&&o.bind(),n&&(n.bind(),n.setVertexAttribPointers(u,t,r)),c.currentNumAttributes=l;},yi.prototype.destroy=function(){this.vao&&(this.context.extVertexArrayObject.deleteVertexArrayOES(this.vao),this.vao=null);};var bi=function(t,e,i,o,r,a){var n=t.gl;this.program=n.createProgram();for(var s=xi(i.staticAttributes),l=o?o.getBinderAttributes():[],c=s.concat(l),u=i.staticUniforms?xi(i.staticUniforms):[],h=o?o.getBinderUniforms():[],p=[],d=0,_=u.concat(h);d<_.length;d+=1){var f=_[d];p.indexOf(f)<0&&p.push(f);}var m=o?o.defines():[];a&&m.push(\"#define OVERDRAW_INSPECTOR;\");var g=m.concat(Ge.fragmentSource,i.fragmentSource).join(\"\\n\"),v=m.concat(Ge.vertexSource,i.vertexSource).join(\"\\n\"),y=n.createShader(n.FRAGMENT_SHADER);if(n.isContextLost())this.failedToCreate=!0;else {n.shaderSource(y,g),n.compileShader(y),n.attachShader(this.program,y);var x=n.createShader(n.VERTEX_SHADER);if(n.isContextLost())this.failedToCreate=!0;else {n.shaderSource(x,v),n.compileShader(x),n.attachShader(this.program,x),this.attributes={};var b={};this.numAttributes=c.length;for(var w=0;w<this.numAttributes;w++)c[w]&&(n.bindAttribLocation(this.program,w,c[w]),this.attributes[c[w]]=w);n.linkProgram(this.program),n.deleteShader(x),n.deleteShader(y);for(var T=0;T<p.length;T++){var E=p[T];if(E&&!b[E]){var I=n.getUniformLocation(this.program,E);I&&(b[E]=I);}}this.fixedUniforms=r(t,b),this.binderUniforms=o?o.getUniforms(t,b):[];}}};function wi(t,e,i){var o=1/pe(i,1,e.transform.tileZoom),r=Math.pow(2,i.tileID.overscaledZ),a=i.tileSize*Math.pow(2,e.transform.tileZoom)/r,n=a*(i.tileID.canonical.x+i.tileID.wrap*r),s=a*i.tileID.canonical.y;return {u_image:0,u_texsize:i.imageAtlasTexture.size,u_scale:[o,t.fromScale,t.toScale],u_fade:t.t,u_pixel_coord_upper:[n>>16,s>>16],u_pixel_coord_lower:[65535&n,65535&s]}}bi.prototype.draw=function(t,e,i,o,r,a,n,s,l,c,u,h,p,d,_,f){var m,g=t.gl;if(!this.failedToCreate){for(var v in t.program.set(this.program),t.setDepthMode(i),t.setStencilMode(o),t.setColorMode(r),t.setCullFace(a),this.fixedUniforms)this.fixedUniforms[v].set(n[v]);d&&d.setUniforms(t,this.binderUniforms,h,{zoom:p});for(var y=(m={},m[g.LINES]=2,m[g.TRIANGLES]=3,m[g.LINE_STRIP]=1,m)[e],x=0,b=u.get();x<b.length;x+=1){var w=b[x],T=w.vaos||(w.vaos={});(T[s]||(T[s]=new yi)).bind(t,this,l,d?d.getPaintVertexBuffers():[],c,w.vertexOffset,_,f),g.drawElements(e,w.primitiveLength*y,g.UNSIGNED_SHORT,w.primitiveOffset*y*2);}}};var Ti=function(e,i,o,r){var a=i.style.light,n=a.properties.get(\"position\"),s=[n.x,n.y,n.z],l=t.create$1();\"viewport\"===a.properties.get(\"anchor\")&&t.fromRotation(l,-i.transform.angle),t.transformMat3(s,s,l);var c=a.properties.get(\"color\");return {u_matrix:e,u_lightpos:s,u_lightintensity:a.properties.get(\"intensity\"),u_lightcolor:[c.r,c.g,c.b],u_vertical_gradient:+o,u_opacity:r}},Ei=function(e,i,o,r,a,n,s){return t.extend(Ti(e,i,o,r),wi(n,i,s),{u_height_factor:-Math.pow(2,a.overscaledZ)/s.tileSize/8})},Ii=function(t){return {u_matrix:t}},Pi=function(e,i,o,r){return t.extend(Ii(e),wi(o,i,r))},Si=function(t,e){return {u_matrix:t,u_world:e}},Ci=function(e,i,o,r,a){return t.extend(Pi(e,i,o,r),{u_world:a})},zi=function(e,i,o,r){var a,n,s=e.transform;if(\"map\"===r.paint.get(\"circle-pitch-alignment\")){var l=pe(o,1,s.zoom);a=!0,n=[l,l];}else a=!1,n=s.pixelsToGLUnits;return {u_camera_to_center_distance:s.cameraToCenterDistance,u_scale_with_map:+(\"map\"===r.paint.get(\"circle-pitch-scale\")),u_matrix:e.translatePosMatrix(i.posMatrix,o,r.paint.get(\"circle-translate\"),r.paint.get(\"circle-translate-anchor\")),u_pitch_with_map:+a,u_device_pixel_ratio:t.browser.devicePixelRatio,u_extrude_scale:n}},Di=function(t,e,i){var o=pe(i,1,e.zoom),r=Math.pow(2,e.zoom-i.tileID.overscaledZ),a=i.tileID.overscaleFactor();return {u_matrix:t,u_camera_to_center_distance:e.cameraToCenterDistance,u_pixels_to_tile_units:o,u_extrude_scale:[e.pixelsToGLUnits[0]/(o*r),e.pixelsToGLUnits[1]/(o*r)],u_overscale_factor:a}},Ai=function(t,e,i){return {u_matrix:t,u_inv_matrix:e,u_camera_to_center_distance:i.cameraToCenterDistance,u_viewport_size:[i.width,i.height]}},Mi=function(t,e,i){return void 0===i&&(i=1),{u_matrix:t,u_color:e,u_overlay:0,u_overlay_scale:i}},Li=function(t){return {u_matrix:t}},Ri=function(t,e,i,o){return {u_matrix:t,u_extrude_scale:pe(e,1,i),u_intensity:o}},ki=function(e,i,o){var r=e.transform;return {u_matrix:Ni(e,i,o),u_ratio:1/pe(i,1,r.zoom),u_device_pixel_ratio:t.browser.devicePixelRatio,u_units_to_pixels:[1/r.pixelsToGLUnits[0],1/r.pixelsToGLUnits[1]]}},Bi=function(e,i,o,r){return t.extend(ki(e,i,o),{u_image:0,u_image_height:r})},Oi=function(e,i,o,r){var a=e.transform,n=Ui(i,a);return {u_matrix:Ni(e,i,o),u_texsize:i.imageAtlasTexture.size,u_ratio:1/pe(i,1,a.zoom),u_device_pixel_ratio:t.browser.devicePixelRatio,u_image:0,u_scale:[n,r.fromScale,r.toScale],u_fade:r.t,u_units_to_pixels:[1/a.pixelsToGLUnits[0],1/a.pixelsToGLUnits[1]]}},Fi=function(e,i,o,r,a){var n=e.lineAtlas,s=Ui(i,e.transform),l=\"round\"===o.layout.get(\"line-cap\"),c=n.getDash(r.from,l),u=n.getDash(r.to,l),h=c.width*a.fromScale,p=u.width*a.toScale;return t.extend(ki(e,i,o),{u_patternscale_a:[s/h,-c.height/2],u_patternscale_b:[s/p,-u.height/2],u_sdfgamma:n.width/(256*Math.min(h,p)*t.browser.devicePixelRatio)/2,u_image:0,u_tex_y_a:c.y,u_tex_y_b:u.y,u_mix:a.t})};function Ui(t,e){return 1/pe(t,1,e.tileZoom)}function Ni(t,e,i){return t.translatePosMatrix(e.tileID.posMatrix,e,i.paint.get(\"line-translate\"),i.paint.get(\"line-translate-anchor\"))}var Zi=function(t,e,i,o,r){return {u_matrix:t,u_tl_parent:e,u_scale_parent:i,u_buffer_scale:1,u_fade_t:o.mix,u_opacity:o.opacity*r.paint.get(\"raster-opacity\"),u_image0:0,u_image1:1,u_brightness_low:r.paint.get(\"raster-brightness-min\"),u_brightness_high:r.paint.get(\"raster-brightness-max\"),u_saturation_factor:(n=r.paint.get(\"raster-saturation\"),n>0?1-1/(1.001-n):-n),u_contrast_factor:(a=r.paint.get(\"raster-contrast\"),a>0?1/(1-a):1+a),u_spin_weights:qi(r.paint.get(\"raster-hue-rotate\"))};var a,n;};function qi(t){t*=Math.PI/180;var e=Math.sin(t),i=Math.cos(t);return [(2*i+1)/3,(-Math.sqrt(3)*e-i+1)/3,(Math.sqrt(3)*e-i+1)/3]}var ji,Vi=function(t,e,i,o,r,a,n,s,l,c){var u=r.transform;return {u_is_size_zoom_constant:+(\"constant\"===t||\"source\"===t),u_is_size_feature_constant:+(\"constant\"===t||\"camera\"===t),u_size_t:e?e.uSizeT:0,u_size:e?e.uSize:0,u_camera_to_center_distance:u.cameraToCenterDistance,u_pitch:u.pitch/360*2*Math.PI,u_rotate_symbol:+i,u_aspect_ratio:u.width/u.height,u_fade_change:r.options.fadeDuration?r.symbolFadeChange:1,u_matrix:a,u_label_plane_matrix:n,u_coord_matrix:s,u_is_text:+l,u_pitch_with_map:+o,u_texsize:c,u_texture:0}},Gi=function(e,i,o,r,a,n,s,l,c,u,h){var p=a.transform;return t.extend(Vi(e,i,o,r,a,n,s,l,c,u),{u_gamma_scale:r?Math.cos(p._pitch)*p.cameraToCenterDistance:1,u_device_pixel_ratio:t.browser.devicePixelRatio,u_is_halo:+h})},Wi=function(e,i,o,r,a,n,s,l,c,u){return t.extend(Gi(e,i,o,r,a,n,s,l,!0,c,!0),{u_texsize_icon:u,u_texture_icon:1})},Xi=function(t,e,i){return {u_matrix:t,u_opacity:e,u_color:i}},Hi=function(e,i,o,r,a,n){return t.extend(function(t,e,i,o){var r=i.imageManager.getPattern(t.from.toString()),a=i.imageManager.getPattern(t.to.toString()),n=i.imageManager.getPixelSize(),s=n.width,l=n.height,c=Math.pow(2,o.tileID.overscaledZ),u=o.tileSize*Math.pow(2,i.transform.tileZoom)/c,h=u*(o.tileID.canonical.x+o.tileID.wrap*c),p=u*o.tileID.canonical.y;return {u_image:0,u_pattern_tl_a:r.tl,u_pattern_br_a:r.br,u_pattern_tl_b:a.tl,u_pattern_br_b:a.br,u_texsize:[s,l],u_mix:e.t,u_pattern_size_a:r.displaySize,u_pattern_size_b:a.displaySize,u_scale_a:e.fromScale,u_scale_b:e.toScale,u_tile_units_to_pixels:1/pe(o,1,i.transform.tileZoom),u_pixel_coord_upper:[h>>16,p>>16],u_pixel_coord_lower:[65535&h,65535&p]}}(r,n,o,a),{u_matrix:e,u_opacity:i})},Ki={fillExtrusion:function(e,i){return {u_matrix:new t.UniformMatrix4f(e,i.u_matrix),u_lightpos:new t.Uniform3f(e,i.u_lightpos),u_lightintensity:new t.Uniform1f(e,i.u_lightintensity),u_lightcolor:new t.Uniform3f(e,i.u_lightcolor),u_vertical_gradient:new t.Uniform1f(e,i.u_vertical_gradient),u_opacity:new t.Uniform1f(e,i.u_opacity)}},fillExtrusionPattern:function(e,i){return {u_matrix:new t.UniformMatrix4f(e,i.u_matrix),u_lightpos:new t.Uniform3f(e,i.u_lightpos),u_lightintensity:new t.Uniform1f(e,i.u_lightintensity),u_lightcolor:new t.Uniform3f(e,i.u_lightcolor),u_vertical_gradient:new t.Uniform1f(e,i.u_vertical_gradient),u_height_factor:new t.Uniform1f(e,i.u_height_factor),u_image:new t.Uniform1i(e,i.u_image),u_texsize:new t.Uniform2f(e,i.u_texsize),u_pixel_coord_upper:new t.Uniform2f(e,i.u_pixel_coord_upper),u_pixel_coord_lower:new t.Uniform2f(e,i.u_pixel_coord_lower),u_scale:new t.Uniform3f(e,i.u_scale),u_fade:new t.Uniform1f(e,i.u_fade),u_opacity:new t.Uniform1f(e,i.u_opacity)}},fill:function(e,i){return {u_matrix:new t.UniformMatrix4f(e,i.u_matrix)}},fillPattern:function(e,i){return {u_matrix:new t.UniformMatrix4f(e,i.u_matrix),u_image:new t.Uniform1i(e,i.u_image),u_texsize:new t.Uniform2f(e,i.u_texsize),u_pixel_coord_upper:new t.Uniform2f(e,i.u_pixel_coord_upper),u_pixel_coord_lower:new t.Uniform2f(e,i.u_pixel_coord_lower),u_scale:new t.Uniform3f(e,i.u_scale),u_fade:new t.Uniform1f(e,i.u_fade)}},fillOutline:function(e,i){return {u_matrix:new t.UniformMatrix4f(e,i.u_matrix),u_world:new t.Uniform2f(e,i.u_world)}},fillOutlinePattern:function(e,i){return {u_matrix:new t.UniformMatrix4f(e,i.u_matrix),u_world:new t.Uniform2f(e,i.u_world),u_image:new t.Uniform1i(e,i.u_image),u_texsize:new t.Uniform2f(e,i.u_texsize),u_pixel_coord_upper:new t.Uniform2f(e,i.u_pixel_coord_upper),u_pixel_coord_lower:new t.Uniform2f(e,i.u_pixel_coord_lower),u_scale:new t.Uniform3f(e,i.u_scale),u_fade:new t.Uniform1f(e,i.u_fade)}},circle:function(e,i){return {u_camera_to_center_distance:new t.Uniform1f(e,i.u_camera_to_center_distance),u_scale_with_map:new t.Uniform1i(e,i.u_scale_with_map),u_pitch_with_map:new t.Uniform1i(e,i.u_pitch_with_map),u_extrude_scale:new t.Uniform2f(e,i.u_extrude_scale),u_device_pixel_ratio:new t.Uniform1f(e,i.u_device_pixel_ratio),u_matrix:new t.UniformMatrix4f(e,i.u_matrix)}},collisionBox:function(e,i){return {u_matrix:new t.UniformMatrix4f(e,i.u_matrix),u_camera_to_center_distance:new t.Uniform1f(e,i.u_camera_to_center_distance),u_pixels_to_tile_units:new t.Uniform1f(e,i.u_pixels_to_tile_units),u_extrude_scale:new t.Uniform2f(e,i.u_extrude_scale),u_overscale_factor:new t.Uniform1f(e,i.u_overscale_factor)}},collisionCircle:function(e,i){return {u_matrix:new t.UniformMatrix4f(e,i.u_matrix),u_inv_matrix:new t.UniformMatrix4f(e,i.u_inv_matrix),u_camera_to_center_distance:new t.Uniform1f(e,i.u_camera_to_center_distance),u_viewport_size:new t.Uniform2f(e,i.u_viewport_size)}},debug:function(e,i){return {u_color:new t.UniformColor(e,i.u_color),u_matrix:new t.UniformMatrix4f(e,i.u_matrix),u_overlay:new t.Uniform1i(e,i.u_overlay),u_overlay_scale:new t.Uniform1f(e,i.u_overlay_scale)}},clippingMask:function(e,i){return {u_matrix:new t.UniformMatrix4f(e,i.u_matrix)}},heatmap:function(e,i){return {u_extrude_scale:new t.Uniform1f(e,i.u_extrude_scale),u_intensity:new t.Uniform1f(e,i.u_intensity),u_matrix:new t.UniformMatrix4f(e,i.u_matrix)}},heatmapTexture:function(e,i){return {u_matrix:new t.UniformMatrix4f(e,i.u_matrix),u_world:new t.Uniform2f(e,i.u_world),u_image:new t.Uniform1i(e,i.u_image),u_color_ramp:new t.Uniform1i(e,i.u_color_ramp),u_opacity:new t.Uniform1f(e,i.u_opacity)}},hillshade:function(e,i){return {u_matrix:new t.UniformMatrix4f(e,i.u_matrix),u_image:new t.Uniform1i(e,i.u_image),u_latrange:new t.Uniform2f(e,i.u_latrange),u_light:new t.Uniform2f(e,i.u_light),u_shadow:new t.UniformColor(e,i.u_shadow),u_highlight:new t.UniformColor(e,i.u_highlight),u_accent:new t.UniformColor(e,i.u_accent)}},hillshadePrepare:function(e,i){return {u_matrix:new t.UniformMatrix4f(e,i.u_matrix),u_image:new t.Uniform1i(e,i.u_image),u_dimension:new t.Uniform2f(e,i.u_dimension),u_zoom:new t.Uniform1f(e,i.u_zoom),u_unpack:new t.Uniform4f(e,i.u_unpack)}},line:function(e,i){return {u_matrix:new t.UniformMatrix4f(e,i.u_matrix),u_ratio:new t.Uniform1f(e,i.u_ratio),u_device_pixel_ratio:new t.Uniform1f(e,i.u_device_pixel_ratio),u_units_to_pixels:new t.Uniform2f(e,i.u_units_to_pixels)}},lineGradient:function(e,i){return {u_matrix:new t.UniformMatrix4f(e,i.u_matrix),u_ratio:new t.Uniform1f(e,i.u_ratio),u_device_pixel_ratio:new t.Uniform1f(e,i.u_device_pixel_ratio),u_units_to_pixels:new t.Uniform2f(e,i.u_units_to_pixels),u_image:new t.Uniform1i(e,i.u_image),u_image_height:new t.Uniform1f(e,i.u_image_height)}},linePattern:function(e,i){return {u_matrix:new t.UniformMatrix4f(e,i.u_matrix),u_texsize:new t.Uniform2f(e,i.u_texsize),u_ratio:new t.Uniform1f(e,i.u_ratio),u_device_pixel_ratio:new t.Uniform1f(e,i.u_device_pixel_ratio),u_image:new t.Uniform1i(e,i.u_image),u_units_to_pixels:new t.Uniform2f(e,i.u_units_to_pixels),u_scale:new t.Uniform3f(e,i.u_scale),u_fade:new t.Uniform1f(e,i.u_fade)}},lineSDF:function(e,i){return {u_matrix:new t.UniformMatrix4f(e,i.u_matrix),u_ratio:new t.Uniform1f(e,i.u_ratio),u_device_pixel_ratio:new t.Uniform1f(e,i.u_device_pixel_ratio),u_units_to_pixels:new t.Uniform2f(e,i.u_units_to_pixels),u_patternscale_a:new t.Uniform2f(e,i.u_patternscale_a),u_patternscale_b:new t.Uniform2f(e,i.u_patternscale_b),u_sdfgamma:new t.Uniform1f(e,i.u_sdfgamma),u_image:new t.Uniform1i(e,i.u_image),u_tex_y_a:new t.Uniform1f(e,i.u_tex_y_a),u_tex_y_b:new t.Uniform1f(e,i.u_tex_y_b),u_mix:new t.Uniform1f(e,i.u_mix)}},raster:function(e,i){return {u_matrix:new t.UniformMatrix4f(e,i.u_matrix),u_tl_parent:new t.Uniform2f(e,i.u_tl_parent),u_scale_parent:new t.Uniform1f(e,i.u_scale_parent),u_buffer_scale:new t.Uniform1f(e,i.u_buffer_scale),u_fade_t:new t.Uniform1f(e,i.u_fade_t),u_opacity:new t.Uniform1f(e,i.u_opacity),u_image0:new t.Uniform1i(e,i.u_image0),u_image1:new t.Uniform1i(e,i.u_image1),u_brightness_low:new t.Uniform1f(e,i.u_brightness_low),u_brightness_high:new t.Uniform1f(e,i.u_brightness_high),u_saturation_factor:new t.Uniform1f(e,i.u_saturation_factor),u_contrast_factor:new t.Uniform1f(e,i.u_contrast_factor),u_spin_weights:new t.Uniform3f(e,i.u_spin_weights)}},symbolIcon:function(e,i){return {u_is_size_zoom_constant:new t.Uniform1i(e,i.u_is_size_zoom_constant),u_is_size_feature_constant:new t.Uniform1i(e,i.u_is_size_feature_constant),u_size_t:new t.Uniform1f(e,i.u_size_t),u_size:new t.Uniform1f(e,i.u_size),u_camera_to_center_distance:new t.Uniform1f(e,i.u_camera_to_center_distance),u_pitch:new t.Uniform1f(e,i.u_pitch),u_rotate_symbol:new t.Uniform1i(e,i.u_rotate_symbol),u_aspect_ratio:new t.Uniform1f(e,i.u_aspect_ratio),u_fade_change:new t.Uniform1f(e,i.u_fade_change),u_matrix:new t.UniformMatrix4f(e,i.u_matrix),u_label_plane_matrix:new t.UniformMatrix4f(e,i.u_label_plane_matrix),u_coord_matrix:new t.UniformMatrix4f(e,i.u_coord_matrix),u_is_text:new t.Uniform1i(e,i.u_is_text),u_pitch_with_map:new t.Uniform1i(e,i.u_pitch_with_map),u_texsize:new t.Uniform2f(e,i.u_texsize),u_texture:new t.Uniform1i(e,i.u_texture)}},symbolSDF:function(e,i){return {u_is_size_zoom_constant:new t.Uniform1i(e,i.u_is_size_zoom_constant),u_is_size_feature_constant:new t.Uniform1i(e,i.u_is_size_feature_constant),u_size_t:new t.Uniform1f(e,i.u_size_t),u_size:new t.Uniform1f(e,i.u_size),u_camera_to_center_distance:new t.Uniform1f(e,i.u_camera_to_center_distance),u_pitch:new t.Uniform1f(e,i.u_pitch),u_rotate_symbol:new t.Uniform1i(e,i.u_rotate_symbol),u_aspect_ratio:new t.Uniform1f(e,i.u_aspect_ratio),u_fade_change:new t.Uniform1f(e,i.u_fade_change),u_matrix:new t.UniformMatrix4f(e,i.u_matrix),u_label_plane_matrix:new t.UniformMatrix4f(e,i.u_label_plane_matrix),u_coord_matrix:new t.UniformMatrix4f(e,i.u_coord_matrix),u_is_text:new t.Uniform1i(e,i.u_is_text),u_pitch_with_map:new t.Uniform1i(e,i.u_pitch_with_map),u_texsize:new t.Uniform2f(e,i.u_texsize),u_texture:new t.Uniform1i(e,i.u_texture),u_gamma_scale:new t.Uniform1f(e,i.u_gamma_scale),u_device_pixel_ratio:new t.Uniform1f(e,i.u_device_pixel_ratio),u_is_halo:new t.Uniform1i(e,i.u_is_halo)}},symbolTextAndIcon:function(e,i){return {u_is_size_zoom_constant:new t.Uniform1i(e,i.u_is_size_zoom_constant),u_is_size_feature_constant:new t.Uniform1i(e,i.u_is_size_feature_constant),u_size_t:new t.Uniform1f(e,i.u_size_t),u_size:new t.Uniform1f(e,i.u_size),u_camera_to_center_distance:new t.Uniform1f(e,i.u_camera_to_center_distance),u_pitch:new t.Uniform1f(e,i.u_pitch),u_rotate_symbol:new t.Uniform1i(e,i.u_rotate_symbol),u_aspect_ratio:new t.Uniform1f(e,i.u_aspect_ratio),u_fade_change:new t.Uniform1f(e,i.u_fade_change),u_matrix:new t.UniformMatrix4f(e,i.u_matrix),u_label_plane_matrix:new t.UniformMatrix4f(e,i.u_label_plane_matrix),u_coord_matrix:new t.UniformMatrix4f(e,i.u_coord_matrix),u_is_text:new t.Uniform1i(e,i.u_is_text),u_pitch_with_map:new t.Uniform1i(e,i.u_pitch_with_map),u_texsize:new t.Uniform2f(e,i.u_texsize),u_texsize_icon:new t.Uniform2f(e,i.u_texsize_icon),u_texture:new t.Uniform1i(e,i.u_texture),u_texture_icon:new t.Uniform1i(e,i.u_texture_icon),u_gamma_scale:new t.Uniform1f(e,i.u_gamma_scale),u_device_pixel_ratio:new t.Uniform1f(e,i.u_device_pixel_ratio),u_is_halo:new t.Uniform1i(e,i.u_is_halo)}},background:function(e,i){return {u_matrix:new t.UniformMatrix4f(e,i.u_matrix),u_opacity:new t.Uniform1f(e,i.u_opacity),u_color:new t.UniformColor(e,i.u_color)}},backgroundPattern:function(e,i){return {u_matrix:new t.UniformMatrix4f(e,i.u_matrix),u_opacity:new t.Uniform1f(e,i.u_opacity),u_image:new t.Uniform1i(e,i.u_image),u_pattern_tl_a:new t.Uniform2f(e,i.u_pattern_tl_a),u_pattern_br_a:new t.Uniform2f(e,i.u_pattern_br_a),u_pattern_tl_b:new t.Uniform2f(e,i.u_pattern_tl_b),u_pattern_br_b:new t.Uniform2f(e,i.u_pattern_br_b),u_texsize:new t.Uniform2f(e,i.u_texsize),u_mix:new t.Uniform1f(e,i.u_mix),u_pattern_size_a:new t.Uniform2f(e,i.u_pattern_size_a),u_pattern_size_b:new t.Uniform2f(e,i.u_pattern_size_b),u_scale_a:new t.Uniform1f(e,i.u_scale_a),u_scale_b:new t.Uniform1f(e,i.u_scale_b),u_pixel_coord_upper:new t.Uniform2f(e,i.u_pixel_coord_upper),u_pixel_coord_lower:new t.Uniform2f(e,i.u_pixel_coord_lower),u_tile_units_to_pixels:new t.Uniform1f(e,i.u_tile_units_to_pixels)}}};function Yi(e,i,o,r,a,n,s){for(var l=e.context,c=l.gl,u=e.useProgram(\"collisionBox\"),h=[],p=0,d=0,_=0;_<r.length;_++){var f=r[_],m=i.getTile(f),g=m.getBucket(o);if(g){var v=f.posMatrix;0===a[0]&&0===a[1]||(v=e.translatePosMatrix(f.posMatrix,m,a,n));var y=s?g.textCollisionBox:g.iconCollisionBox,x=g.collisionCircleArray;if(x.length>0){var b=t.create(),w=v;t.mul(b,g.placementInvProjMatrix,e.transform.glCoordMatrix),t.mul(b,b,g.placementViewportMatrix),h.push({circleArray:x,circleOffset:d,transform:w,invTransform:b}),d=p+=x.length/4;}y&&u.draw(l,c.LINES,It.disabled,Pt.disabled,e.colorModeForRenderPass(),Ct.disabled,Di(v,e.transform,m),o.id,y.layoutVertexBuffer,y.indexBuffer,y.segments,null,e.transform.zoom,null,null,y.collisionVertexBuffer);}}if(s&&h.length){var T=e.useProgram(\"collisionCircle\"),E=new t.StructArrayLayout2f1f2i16;E.resize(4*p),E._trim();for(var I=0,P=0,S=h;P<S.length;P+=1)for(var C=S[P],z=0;z<C.circleArray.length/4;z++){var D=4*z,A=C.circleArray[D+0],M=C.circleArray[D+1],L=C.circleArray[D+2],R=C.circleArray[D+3];E.emplace(I++,A,M,L,R,0),E.emplace(I++,A,M,L,R,1),E.emplace(I++,A,M,L,R,2),E.emplace(I++,A,M,L,R,3);}(!ji||ji.length<2*p)&&(ji=function(e){var i=2*e,o=new t.StructArrayLayout3ui6;o.resize(i),o._trim();for(var r=0;r<i;r++){var a=6*r;o.uint16[a+0]=4*r+0,o.uint16[a+1]=4*r+1,o.uint16[a+2]=4*r+2,o.uint16[a+3]=4*r+2,o.uint16[a+4]=4*r+3,o.uint16[a+5]=4*r+0;}return o}(p));for(var k=l.createIndexBuffer(ji,!0),B=l.createVertexBuffer(E,t.collisionCircleLayout.members,!0),O=0,F=h;O<F.length;O+=1){var U=F[O],N=Ai(U.transform,U.invTransform,e.transform);T.draw(l,c.TRIANGLES,It.disabled,Pt.disabled,e.colorModeForRenderPass(),Ct.disabled,N,o.id,B,k,t.SegmentVector.simpleSegment(0,2*U.circleOffset,U.circleArray.length,U.circleArray.length/2),null,e.transform.zoom,null,null,null);}B.destroy(),k.destroy();}}var Ji=t.identity(new Float32Array(16));function Qi(e,i,o,r,a,n){var s=t.getAnchorAlignment(e),l=-(s.horizontalAlign-.5)*i,c=-(s.verticalAlign-.5)*o,u=t.evaluateVariableOffset(e,r);return new t.Point((l/a+u[0])*n,(c/a+u[1])*n)}function $i(e,i,o,r,a,n,s,l,c,u,h){var p=e.text.placedSymbolArray,d=e.text.dynamicLayoutVertexArray,_=e.icon.dynamicLayoutVertexArray,f={};d.clear();for(var m=0;m<p.length;m++){var g=p.get(m),v=g.hidden||!g.crossTileID||e.allowVerticalPlacement&&!g.placedOrientation?null:r[g.crossTileID];if(v){var y=new t.Point(g.anchorX,g.anchorY),x=$t(y,o?l:s),b=te(n.cameraToCenterDistance,x.signedDistanceFromCamera),w=a.evaluateSizeForFeature(e.textSizeData,u,g)*b/t.ONE_EM;o&&(w*=e.tilePixelRatio/c);for(var T=Qi(v.anchor,v.width,v.height,v.textOffset,v.textBoxScale,w),E=o?$t(y.add(T),s).point:x.point.add(i?T.rotate(-n.angle):T),I=e.allowVerticalPlacement&&g.placedOrientation===t.WritingMode.vertical?Math.PI/2:0,P=0;P<g.numGlyphs;P++)t.addDynamicAttributes(d,E,I);h&&g.associatedIconIndex>=0&&(f[g.associatedIconIndex]={shiftedAnchor:E,angle:I});}else ce(g.numGlyphs,d);}if(h){_.clear();for(var S=e.icon.placedSymbolArray,C=0;C<S.length;C++){var z=S.get(C);if(z.hidden)ce(z.numGlyphs,_);else {var D=f[C];if(D)for(var A=0;A<z.numGlyphs;A++)t.addDynamicAttributes(_,D.shiftedAnchor,D.angle);else ce(z.numGlyphs,_);}}e.icon.dynamicLayoutVertexBuffer.updateData(_);}e.text.dynamicLayoutVertexBuffer.updateData(d);}function to(t,e,i){return i.iconsInText&&e?\"symbolTextAndIcon\":t?\"symbolSDF\":\"symbolIcon\"}function eo(e,i,o,r,a,n,s,l,c,u,h,p){for(var d=e.context,_=d.gl,f=e.transform,m=\"map\"===l,g=\"map\"===c,v=m&&\"point\"!==o.layout.get(\"symbol-placement\"),y=m&&!g&&!v,x=void 0!==o.layout.get(\"symbol-sort-key\").constantOr(1),b=!1,w=e.depthModeForSublayer(0,It.ReadOnly),T=o.layout.get(\"text-variable-anchor\"),E=[],I=0,P=r;I<P.length;I+=1){var S=P[I],C=i.getTile(S),z=C.getBucket(o);if(z){var D=a?z.text:z.icon;if(D&&D.segments.get().length){var A=D.programConfigurations.get(o.id),M=a||z.sdfIcons,L=a?z.textSizeData:z.iconSizeData,R=g||0!==f.pitch,k=e.useProgram(to(M,a,z),A),B=t.evaluateSizeForZoom(L,f.zoom),O=void 0,F=[0,0],U=void 0,N=void 0,Z=null,q=void 0;if(a)U=C.glyphAtlasTexture,N=_.LINEAR,O=C.glyphAtlasTexture.size,z.iconsInText&&(F=C.imageAtlasTexture.size,Z=C.imageAtlasTexture,q=R||e.options.rotating||e.options.zooming||\"composite\"===L.kind||\"camera\"===L.kind?_.LINEAR:_.NEAREST);else {var j=1!==o.layout.get(\"icon-size\").constantOr(0)||z.iconsNeedLinear;U=C.imageAtlasTexture,N=M||e.options.rotating||e.options.zooming||j||R?_.LINEAR:_.NEAREST,O=C.imageAtlasTexture.size;}var V=pe(C,1,e.transform.zoom),G=Jt(S.posMatrix,g,m,e.transform,V),W=Qt(S.posMatrix,g,m,e.transform,V),X=T&&z.hasTextData(),H=\"none\"!==o.layout.get(\"icon-text-fit\")&&X&&z.hasIconData();v&&ie(z,S.posMatrix,e,a,G,W,g,u);var K=e.translatePosMatrix(S.posMatrix,C,n,s),Y=v||a&&T||H?Ji:G,J=e.translatePosMatrix(W,C,n,s,!0),Q=M&&0!==o.paint.get(a?\"text-halo-width\":\"icon-halo-width\").constantOr(1),$={program:k,buffers:D,uniformValues:M?z.iconsInText?Wi(L.kind,B,y,g,e,K,Y,J,O,F):Gi(L.kind,B,y,g,e,K,Y,J,a,O,!0):Vi(L.kind,B,y,g,e,K,Y,J,a,O),atlasTexture:U,atlasTextureIcon:Z,atlasInterpolation:N,atlasInterpolationIcon:q,isSDF:M,hasHalo:Q};if(x&&z.canOverlap){b=!0;for(var tt=0,et=D.segments.get();tt<et.length;tt+=1){var it=et[tt];E.push({segments:new t.SegmentVector([it]),sortKey:it.sortKey,state:$});}}else E.push({segments:D.segments,sortKey:0,state:$});}}}b&&E.sort((function(t,e){return t.sortKey-e.sortKey}));for(var ot=0,rt=E;ot<rt.length;ot+=1){var at=rt[ot],nt=at.state;if(d.activeTexture.set(_.TEXTURE0),nt.atlasTexture.bind(nt.atlasInterpolation,_.CLAMP_TO_EDGE),nt.atlasTextureIcon&&(d.activeTexture.set(_.TEXTURE1),nt.atlasTextureIcon&&nt.atlasTextureIcon.bind(nt.atlasInterpolationIcon,_.CLAMP_TO_EDGE)),nt.isSDF){var st=nt.uniformValues;nt.hasHalo&&(st.u_is_halo=1,io(nt.buffers,at.segments,o,e,nt.program,w,h,p,st)),st.u_is_halo=0;}io(nt.buffers,at.segments,o,e,nt.program,w,h,p,nt.uniformValues);}}function io(t,e,i,o,r,a,n,s,l){var c=o.context;r.draw(c,c.gl.TRIANGLES,a,n,s,Ct.disabled,l,i.id,t.layoutVertexBuffer,t.indexBuffer,e,i.paint,o.transform.zoom,t.programConfigurations.get(i.id),t.dynamicLayoutVertexBuffer,t.opacityVertexBuffer);}function oo(t,e,i,o,r,a,n){var s,l,c,u,h,p=t.context.gl,d=i.paint.get(\"fill-pattern\"),_=d&&d.constantOr(1),f=i.getCrossfadeParameters();n?(l=_&&!i.getPaintProperty(\"fill-outline-color\")?\"fillOutlinePattern\":\"fillOutline\",s=p.LINES):(l=_?\"fillPattern\":\"fill\",s=p.TRIANGLES);for(var m=0,g=o;m<g.length;m+=1){var v=g[m],y=e.getTile(v);if(!_||y.patternsLoaded()){var x=y.getBucket(i);if(x){var b=x.programConfigurations.get(i.id),w=t.useProgram(l,b);_&&(t.context.activeTexture.set(p.TEXTURE0),y.imageAtlasTexture.bind(p.LINEAR,p.CLAMP_TO_EDGE),b.updatePaintBuffers(f));var T=d.constantOr(null);if(T&&y.imageAtlas){var E=y.imageAtlas,I=E.patternPositions[T.to.toString()],P=E.patternPositions[T.from.toString()];I&&P&&b.setConstantPatternPositions(I,P);}var S=t.translatePosMatrix(v.posMatrix,y,i.paint.get(\"fill-translate\"),i.paint.get(\"fill-translate-anchor\"));if(n){u=x.indexBuffer2,h=x.segments2;var C=[p.drawingBufferWidth,p.drawingBufferHeight];c=\"fillOutlinePattern\"===l&&_?Ci(S,t,f,y,C):Si(S,C);}else u=x.indexBuffer,h=x.segments,c=_?Pi(S,t,f,y):Ii(S);w.draw(t.context,s,r,t.stencilModeForClipping(v),a,Ct.disabled,c,i.id,x.layoutVertexBuffer,u,h,i.paint,t.transform.zoom,b);}}}}function ro(t,e,i,o,r,a,n){for(var s=t.context,l=s.gl,c=i.paint.get(\"fill-extrusion-pattern\"),u=c.constantOr(1),h=i.getCrossfadeParameters(),p=i.paint.get(\"fill-extrusion-opacity\"),d=0,_=o;d<_.length;d+=1){var f=_[d],m=e.getTile(f),g=m.getBucket(i);if(g){var v=g.programConfigurations.get(i.id),y=t.useProgram(u?\"fillExtrusionPattern\":\"fillExtrusion\",v);u&&(t.context.activeTexture.set(l.TEXTURE0),m.imageAtlasTexture.bind(l.LINEAR,l.CLAMP_TO_EDGE),v.updatePaintBuffers(h));var x=c.constantOr(null);if(x&&m.imageAtlas){var b=m.imageAtlas,w=b.patternPositions[x.to.toString()],T=b.patternPositions[x.from.toString()];w&&T&&v.setConstantPatternPositions(w,T);}var E=t.translatePosMatrix(f.posMatrix,m,i.paint.get(\"fill-extrusion-translate\"),i.paint.get(\"fill-extrusion-translate-anchor\")),I=i.paint.get(\"fill-extrusion-vertical-gradient\"),P=u?Ei(E,t,I,p,f,h,m):Ti(E,t,I,p);y.draw(s,s.gl.TRIANGLES,r,a,n,Ct.backCCW,P,i.id,g.layoutVertexBuffer,g.indexBuffer,g.segments,i.paint,t.transform.zoom,v);}}}function ao(e,i,o,r,a,n){var s=e.context,l=s.gl,c=i.fbo;if(c){var u=e.useProgram(\"hillshade\");s.activeTexture.set(l.TEXTURE0),l.bindTexture(l.TEXTURE_2D,c.colorAttachment.get());var h=function(e,i,o){var r=o.paint.get(\"hillshade-shadow-color\"),a=o.paint.get(\"hillshade-highlight-color\"),n=o.paint.get(\"hillshade-accent-color\"),s=o.paint.get(\"hillshade-illumination-direction\")*(Math.PI/180);\"viewport\"===o.paint.get(\"hillshade-illumination-anchor\")&&(s-=e.transform.angle);var l,c,u,h=!e.options.moving;return {u_matrix:e.transform.calculatePosMatrix(i.tileID.toUnwrapped(),h),u_image:0,u_latrange:(l=i.tileID,c=Math.pow(2,l.canonical.z),u=l.canonical.y,[new t.MercatorCoordinate(0,u/c).toLngLat().lat,new t.MercatorCoordinate(0,(u+1)/c).toLngLat().lat]),u_light:[o.paint.get(\"hillshade-exaggeration\"),s],u_shadow:r,u_highlight:a,u_accent:n}}(e,i,o);u.draw(s,l.TRIANGLES,r,a,n,Ct.disabled,h,o.id,e.rasterBoundsBuffer,e.quadTriangleIndexBuffer,e.rasterBoundsSegments);}}function no(e,i,o,r,a,n){var s=e.context,l=s.gl,c=i.dem;if(c&&c.data){var u=c.dim,h=c.stride,p=c.getPixels();if(s.activeTexture.set(l.TEXTURE1),s.pixelStoreUnpackPremultiplyAlpha.set(!1),i.demTexture=i.demTexture||e.getTileTexture(h),i.demTexture){var d=i.demTexture;d.update(p,{premultiply:!1}),d.bind(l.NEAREST,l.CLAMP_TO_EDGE);}else i.demTexture=new t.Texture(s,p,l.RGBA,{premultiply:!1}),i.demTexture.bind(l.NEAREST,l.CLAMP_TO_EDGE);s.activeTexture.set(l.TEXTURE0);var _=i.fbo;if(!_){var f=new t.Texture(s,{width:u,height:u,data:null},l.RGBA);f.bind(l.LINEAR,l.CLAMP_TO_EDGE),(_=i.fbo=s.createFramebuffer(u,u,!0)).colorAttachment.set(f.texture);}s.bindFramebuffer.set(_.framebuffer),s.viewport.set([0,0,u,u]),e.useProgram(\"hillshadePrepare\").draw(s,l.TRIANGLES,r,a,n,Ct.disabled,function(e,i){var o=i.stride,r=t.create();return t.ortho(r,0,t.EXTENT,-t.EXTENT,0,0,1),t.translate(r,r,[0,-t.EXTENT,0]),{u_matrix:r,u_image:1,u_dimension:[o,o],u_zoom:e.overscaledZ,u_unpack:i.getUnpackVector()}}(i.tileID,c),o.id,e.rasterBoundsBuffer,e.quadTriangleIndexBuffer,e.rasterBoundsSegments),i.needsHillshadePrepare=!1;}}function so(e,i,o,r,a){var n=r.paint.get(\"raster-fade-duration\");if(n>0){var s=t.browser.now(),l=(s-e.timeAdded)/n,c=i?(s-i.timeAdded)/n:-1,u=o.getSource(),h=a.coveringZoomLevel({tileSize:u.tileSize,roundZoom:u.roundZoom}),p=!i||Math.abs(i.tileID.overscaledZ-h)>Math.abs(e.tileID.overscaledZ-h),d=p&&e.refreshedUponExpiration?1:t.clamp(p?l:1-c,0,1);return e.refreshedUponExpiration&&l>=1&&(e.refreshedUponExpiration=!1),i?{opacity:1,mix:1-d}:{opacity:d,mix:0}}return {opacity:1,mix:0}}var lo=new t.Color(1,0,0,1),co=new t.Color(0,1,0,1),uo=new t.Color(0,0,1,1),ho=new t.Color(1,0,1,1),po=new t.Color(0,1,1,1);function _o(t,e,i,o){mo(t,0,e+i/2,t.transform.width,i,o);}function fo(t,e,i,o){mo(t,e-i/2,0,i,t.transform.height,o);}function mo(e,i,o,r,a,n){var s=e.context,l=s.gl;l.enable(l.SCISSOR_TEST),l.scissor(i*t.browser.devicePixelRatio,o*t.browser.devicePixelRatio,r*t.browser.devicePixelRatio,a*t.browser.devicePixelRatio),s.clear({color:n}),l.disable(l.SCISSOR_TEST);}function go(e,i,o){var r=e.context,a=r.gl,n=o.posMatrix,s=e.useProgram(\"debug\"),l=It.disabled,c=Pt.disabled,u=e.colorModeForRenderPass();r.activeTexture.set(a.TEXTURE0),e.emptyTexture.bind(a.LINEAR,a.CLAMP_TO_EDGE),s.draw(r,a.LINE_STRIP,l,c,u,Ct.disabled,Mi(n,t.Color.red),\"$debug\",e.debugBuffer,e.tileBorderIndexBuffer,e.debugSegments);var h=i.getTileByID(o.key).latestRawTileData,p=Math.floor((h&&h.byteLength||0)/1024),d=i.getTile(o).tileSize,_=512/Math.min(d,512)*(o.overscaledZ/e.transform.zoom)*.5,f=o.canonical.toString();o.overscaledZ!==o.canonical.z&&(f+=\" => \"+o.overscaledZ),function(t,e){t.initDebugOverlayCanvas();var i=t.debugOverlayCanvas,o=t.context.gl,r=t.debugOverlayCanvas.getContext(\"2d\");r.clearRect(0,0,i.width,i.height),r.shadowColor=\"white\",r.shadowBlur=2,r.lineWidth=1.5,r.strokeStyle=\"white\",r.textBaseline=\"top\",r.font=\"bold 36px Open Sans, sans-serif\",r.fillText(e,5,5),r.strokeText(e,5,5),t.debugOverlayTexture.update(i),t.debugOverlayTexture.bind(o.LINEAR,o.CLAMP_TO_EDGE);}(e,f+\" \"+p+\"kb\"),s.draw(r,a.TRIANGLES,l,c,St.alphaBlended,Ct.disabled,Mi(n,t.Color.transparent,_),\"$debug\",e.debugBuffer,e.quadTriangleIndexBuffer,e.debugSegments);}var vo={symbol:function(e,i,o,r,a){if(\"translucent\"===e.renderPass){var n=Pt.disabled,s=e.colorModeForRenderPass();o.layout.get(\"text-variable-anchor\")&&function(e,i,o,r,a,n,s){for(var l=i.transform,c=\"map\"===a,u=\"map\"===n,h=0,p=e;h<p.length;h+=1){var d=p[h],_=r.getTile(d),f=_.getBucket(o);if(f&&f.text&&f.text.segments.get().length){var m=t.evaluateSizeForZoom(f.textSizeData,l.zoom),g=pe(_,1,i.transform.zoom),v=Jt(d.posMatrix,u,c,i.transform,g),y=\"none\"!==o.layout.get(\"icon-text-fit\")&&f.hasIconData();if(m){var x=Math.pow(2,l.zoom-_.tileID.overscaledZ);$i(f,c,u,s,t.symbolSize,l,v,d.posMatrix,x,m,y);}}}}(r,e,o,i,o.layout.get(\"text-rotation-alignment\"),o.layout.get(\"text-pitch-alignment\"),a),0!==o.paint.get(\"icon-opacity\").constantOr(1)&&eo(e,i,o,r,!1,o.paint.get(\"icon-translate\"),o.paint.get(\"icon-translate-anchor\"),o.layout.get(\"icon-rotation-alignment\"),o.layout.get(\"icon-pitch-alignment\"),o.layout.get(\"icon-keep-upright\"),n,s),0!==o.paint.get(\"text-opacity\").constantOr(1)&&eo(e,i,o,r,!0,o.paint.get(\"text-translate\"),o.paint.get(\"text-translate-anchor\"),o.layout.get(\"text-rotation-alignment\"),o.layout.get(\"text-pitch-alignment\"),o.layout.get(\"text-keep-upright\"),n,s),i.map.showCollisionBoxes&&(Yi(e,i,o,r,o.paint.get(\"text-translate\"),o.paint.get(\"text-translate-anchor\"),!0),Yi(e,i,o,r,o.paint.get(\"icon-translate\"),o.paint.get(\"icon-translate-anchor\"),!1));}},circle:function(e,i,o,r){if(\"translucent\"===e.renderPass){var a=o.paint.get(\"circle-opacity\"),n=o.paint.get(\"circle-stroke-width\"),s=o.paint.get(\"circle-stroke-opacity\"),l=void 0!==o.layout.get(\"circle-sort-key\").constantOr(1);if(0!==a.constantOr(1)||0!==n.constantOr(1)&&0!==s.constantOr(1)){for(var c=e.context,u=c.gl,h=e.depthModeForSublayer(0,It.ReadOnly),p=Pt.disabled,d=e.colorModeForRenderPass(),_=[],f=0;f<r.length;f++){var m=r[f],g=i.getTile(m),v=g.getBucket(o);if(v){var y=v.programConfigurations.get(o.id),x={programConfiguration:y,program:e.useProgram(\"circle\",y),layoutVertexBuffer:v.layoutVertexBuffer,indexBuffer:v.indexBuffer,uniformValues:zi(e,m,g,o)};if(l)for(var b=0,w=v.segments.get();b<w.length;b+=1){var T=w[b];_.push({segments:new t.SegmentVector([T]),sortKey:T.sortKey,state:x});}else _.push({segments:v.segments,sortKey:0,state:x});}}l&&_.sort((function(t,e){return t.sortKey-e.sortKey}));for(var E=0,I=_;E<I.length;E+=1){var P=I[E],S=P.state;S.program.draw(c,u.TRIANGLES,h,p,d,Ct.disabled,S.uniformValues,o.id,S.layoutVertexBuffer,S.indexBuffer,P.segments,o.paint,e.transform.zoom,S.programConfiguration);}}}},heatmap:function(e,i,o,r){if(0!==o.paint.get(\"heatmap-opacity\"))if(\"offscreen\"===e.renderPass){var a=e.context,n=a.gl,s=Pt.disabled,l=new St([n.ONE,n.ONE],t.Color.transparent,[!0,!0,!0,!0]);!function(t,e,i){var o=t.gl;t.activeTexture.set(o.TEXTURE1),t.viewport.set([0,0,e.width/4,e.height/4]);var r=i.heatmapFbo;if(r)o.bindTexture(o.TEXTURE_2D,r.colorAttachment.get()),t.bindFramebuffer.set(r.framebuffer);else {var a=o.createTexture();o.bindTexture(o.TEXTURE_2D,a),o.texParameteri(o.TEXTURE_2D,o.TEXTURE_WRAP_S,o.CLAMP_TO_EDGE),o.texParameteri(o.TEXTURE_2D,o.TEXTURE_WRAP_T,o.CLAMP_TO_EDGE),o.texParameteri(o.TEXTURE_2D,o.TEXTURE_MIN_FILTER,o.LINEAR),o.texParameteri(o.TEXTURE_2D,o.TEXTURE_MAG_FILTER,o.LINEAR),r=i.heatmapFbo=t.createFramebuffer(e.width/4,e.height/4,!1),function(t,e,i,o){var r=t.gl;r.texImage2D(r.TEXTURE_2D,0,r.RGBA,e.width/4,e.height/4,0,r.RGBA,t.extRenderToTextureHalfFloat?t.extTextureHalfFloat.HALF_FLOAT_OES:r.UNSIGNED_BYTE,null),o.colorAttachment.set(i);}(t,e,a,r);}}(a,e,o),a.clear({color:t.Color.transparent});for(var c=0;c<r.length;c++){var u=r[c];if(!i.hasRenderableParent(u)){var h=i.getTile(u),p=h.getBucket(o);if(p){var d=p.programConfigurations.get(o.id);e.useProgram(\"heatmap\",d).draw(a,n.TRIANGLES,It.disabled,s,l,Ct.disabled,Ri(u.posMatrix,h,e.transform.zoom,o.paint.get(\"heatmap-intensity\")),o.id,p.layoutVertexBuffer,p.indexBuffer,p.segments,o.paint,e.transform.zoom,d);}}}a.viewport.set([0,0,e.width,e.height]);}else \"translucent\"===e.renderPass&&(e.context.setColorMode(e.colorModeForRenderPass()),function(e,i){var o=e.context,r=o.gl,a=i.heatmapFbo;if(a){o.activeTexture.set(r.TEXTURE0),r.bindTexture(r.TEXTURE_2D,a.colorAttachment.get()),o.activeTexture.set(r.TEXTURE1);var n=i.colorRampTexture;n||(n=i.colorRampTexture=new t.Texture(o,i.colorRamp,r.RGBA)),n.bind(r.LINEAR,r.CLAMP_TO_EDGE),e.useProgram(\"heatmapTexture\").draw(o,r.TRIANGLES,It.disabled,Pt.disabled,e.colorModeForRenderPass(),Ct.disabled,function(e,i,o,r){var a=t.create();t.ortho(a,0,e.width,e.height,0,0,1);var n=e.context.gl;return {u_matrix:a,u_world:[n.drawingBufferWidth,n.drawingBufferHeight],u_image:0,u_color_ramp:1,u_opacity:i.paint.get(\"heatmap-opacity\")}}(e,i),i.id,e.viewportBuffer,e.quadTriangleIndexBuffer,e.viewportSegments,i.paint,e.transform.zoom);}}(e,o));},line:function(e,i,o,r){if(\"translucent\"===e.renderPass){var a=o.paint.get(\"line-opacity\"),n=o.paint.get(\"line-width\");if(0!==a.constantOr(1)&&0!==n.constantOr(1))for(var s=e.depthModeForSublayer(0,It.ReadOnly),l=e.colorModeForRenderPass(),c=o.paint.get(\"line-dasharray\"),u=o.paint.get(\"line-pattern\"),h=u.constantOr(1),p=o.paint.get(\"line-gradient\"),d=o.getCrossfadeParameters(),_=h?\"linePattern\":c?\"lineSDF\":p?\"lineGradient\":\"line\",f=e.context,m=f.gl,g=!0,v=0,y=r;v<y.length;v+=1){var x=y[v],b=i.getTile(x);if(!h||b.patternsLoaded()){var w=b.getBucket(o);if(w){var T=w.programConfigurations.get(o.id),E=e.context.program.get(),I=e.useProgram(_,T),P=g||I.program!==E,S=u.constantOr(null);if(S&&b.imageAtlas){var C=b.imageAtlas,z=C.patternPositions[S.to.toString()],D=C.patternPositions[S.from.toString()];z&&D&&T.setConstantPatternPositions(z,D);}var A=h?Oi(e,b,o,d):c?Fi(e,b,o,c,d):p?Bi(e,b,o,w.lineClipsArray.length):ki(e,b,o);if(h)f.activeTexture.set(m.TEXTURE0),b.imageAtlasTexture.bind(m.LINEAR,m.CLAMP_TO_EDGE),T.updatePaintBuffers(d);else if(c&&(P||e.lineAtlas.dirty))f.activeTexture.set(m.TEXTURE0),e.lineAtlas.bind(f);else if(p){var M=w.gradients[o.id],L=M.texture;if(o.gradientVersion!==M.version){var R=256;if(o.stepInterpolant){var k=i.getSource().maxzoom,B=x.canonical.z===k?Math.ceil(1<<e.transform.maxZoom-x.canonical.z):1;R=t.clamp(t.nextPowerOfTwo(w.maxLineLength/t.EXTENT*1024*B),256,f.maxTextureSize);}M.gradient=t.renderColorRamp({expression:o.gradientExpression(),evaluationKey:\"lineProgress\",resolution:R,image:M.gradient||void 0,clips:w.lineClipsArray}),M.texture?M.texture.update(M.gradient):M.texture=new t.Texture(f,M.gradient,m.RGBA),M.version=o.gradientVersion,L=M.texture;}f.activeTexture.set(m.TEXTURE0),L.bind(o.stepInterpolant?m.NEAREST:m.LINEAR,m.CLAMP_TO_EDGE);}I.draw(f,m.TRIANGLES,s,e.stencilModeForClipping(x),l,Ct.disabled,A,o.id,w.layoutVertexBuffer,w.indexBuffer,w.segments,o.paint,e.transform.zoom,T,w.layoutVertexBuffer2),g=!1;}}}}},fill:function(e,i,o,r){var a=o.paint.get(\"fill-color\"),n=o.paint.get(\"fill-opacity\");if(0!==n.constantOr(1)){var s=e.colorModeForRenderPass(),l=o.paint.get(\"fill-pattern\"),c=e.opaquePassEnabledForLayer()&&!l.constantOr(1)&&1===a.constantOr(t.Color.transparent).a&&1===n.constantOr(0)?\"opaque\":\"translucent\";if(e.renderPass===c){var u=e.depthModeForSublayer(1,\"opaque\"===e.renderPass?It.ReadWrite:It.ReadOnly);oo(e,i,o,r,u,s,!1);}if(\"translucent\"===e.renderPass&&o.paint.get(\"fill-antialias\")){var h=e.depthModeForSublayer(o.getPaintProperty(\"fill-outline-color\")?2:0,It.ReadOnly);oo(e,i,o,r,h,s,!0);}}},\"fill-extrusion\":function(t,e,i,o){var r=i.paint.get(\"fill-extrusion-opacity\");if(0!==r&&\"translucent\"===t.renderPass){var a=new It(t.context.gl.LEQUAL,It.ReadWrite,t.depthRangeFor3D);if(1!==r||i.paint.get(\"fill-extrusion-pattern\").constantOr(1))ro(t,e,i,o,a,Pt.disabled,St.disabled),ro(t,e,i,o,a,t.stencilModeFor3D(),t.colorModeForRenderPass());else {var n=t.colorModeForRenderPass();ro(t,e,i,o,a,Pt.disabled,n);}}},hillshade:function(t,e,i,o){if(\"offscreen\"===t.renderPass||\"translucent\"===t.renderPass){for(var r=t.context,a=t.depthModeForSublayer(0,It.ReadOnly),n=t.colorModeForRenderPass(),s=\"translucent\"===t.renderPass?t.stencilConfigForOverlap(o):[{},o],l=s[0],c=0,u=s[1];c<u.length;c+=1){var h=u[c],p=e.getTile(h);p.needsHillshadePrepare&&\"offscreen\"===t.renderPass?no(t,p,i,a,Pt.disabled,n):\"translucent\"===t.renderPass&&ao(t,p,i,a,l[h.overscaledZ],n);}r.viewport.set([0,0,t.width,t.height]);}},raster:function(t,e,i,o){if(\"translucent\"===t.renderPass&&0!==i.paint.get(\"raster-opacity\")&&o.length)for(var r=t.context,a=r.gl,n=e.getSource(),s=t.useProgram(\"raster\"),l=t.colorModeForRenderPass(),c=n instanceof M?[{},o]:t.stencilConfigForOverlap(o),u=c[0],h=c[1],p=h[h.length-1].overscaledZ,d=!t.options.moving,_=0,f=h;_<f.length;_+=1){var m=f[_],g=t.depthModeForSublayer(m.overscaledZ-p,1===i.paint.get(\"raster-opacity\")?It.ReadWrite:It.ReadOnly,a.LESS),v=e.getTile(m),y=t.transform.calculatePosMatrix(m.toUnwrapped(),d);v.registerFadeDuration(i.paint.get(\"raster-fade-duration\"));var x=e.findLoadedParent(m,0),b=so(v,x,e,i,t.transform),w=void 0,T=void 0,E=\"nearest\"===i.paint.get(\"raster-resampling\")?a.NEAREST:a.LINEAR;r.activeTexture.set(a.TEXTURE0),v.texture.bind(E,a.CLAMP_TO_EDGE,a.LINEAR_MIPMAP_NEAREST),r.activeTexture.set(a.TEXTURE1),x?(x.texture.bind(E,a.CLAMP_TO_EDGE,a.LINEAR_MIPMAP_NEAREST),w=Math.pow(2,x.tileID.overscaledZ-v.tileID.overscaledZ),T=[v.tileID.canonical.x*w%1,v.tileID.canonical.y*w%1]):v.texture.bind(E,a.CLAMP_TO_EDGE,a.LINEAR_MIPMAP_NEAREST);var I=Zi(y,T||[0,0],w||1,b,i);n instanceof M?s.draw(r,a.TRIANGLES,g,Pt.disabled,l,Ct.disabled,I,i.id,n.boundsBuffer,t.quadTriangleIndexBuffer,n.boundsSegments):s.draw(r,a.TRIANGLES,g,u[m.overscaledZ],l,Ct.disabled,I,i.id,t.rasterBoundsBuffer,t.quadTriangleIndexBuffer,t.rasterBoundsSegments);}},background:function(t,e,i){var o=i.paint.get(\"background-color\"),r=i.paint.get(\"background-opacity\");if(0!==r){var a=t.context,n=a.gl,s=t.transform,l=s.tileSize,c=i.paint.get(\"background-pattern\");if(!t.isPatternMissing(c)){var u=!c&&1===o.a&&1===r&&t.opaquePassEnabledForLayer()?\"opaque\":\"translucent\";if(t.renderPass===u){var h=Pt.disabled,p=t.depthModeForSublayer(0,\"opaque\"===u?It.ReadWrite:It.ReadOnly),d=t.colorModeForRenderPass(),_=t.useProgram(c?\"backgroundPattern\":\"background\"),f=s.coveringTiles({tileSize:l});c&&(a.activeTexture.set(n.TEXTURE0),t.imageManager.bind(t.context));for(var m=i.getCrossfadeParameters(),g=0,v=f;g<v.length;g+=1){var y=v[g],x=t.transform.calculatePosMatrix(y.toUnwrapped()),b=c?Hi(x,r,t,c,{tileID:y,tileSize:l},m):Xi(x,r,o);_.draw(a,n.TRIANGLES,p,h,d,Ct.disabled,b,i.id,t.tileExtentBuffer,t.quadTriangleIndexBuffer,t.tileExtentSegments);}}}}},debug:function(t,e,i){for(var o=0;o<i.length;o++)go(t,e,i[o]);},custom:function(t,e,i){var o=t.context,r=i.implementation;if(\"offscreen\"===t.renderPass){var a=r.prerender;a&&(t.setCustomLayerDefaults(),o.setColorMode(t.colorModeForRenderPass()),a.call(r,o.gl,t.transform.customLayerMatrix()),o.setDirty(),t.setBaseState());}else if(\"translucent\"===t.renderPass){t.setCustomLayerDefaults(),o.setColorMode(t.colorModeForRenderPass()),o.setStencilMode(Pt.disabled);var n=\"3d\"===r.renderingMode?new It(t.context.gl.LEQUAL,It.ReadWrite,t.depthRangeFor3D):t.depthModeForSublayer(0,It.ReadOnly);o.setDepthMode(n),r.render(o.gl,t.transform.customLayerMatrix()),o.setDirty(),t.setBaseState(),o.bindFramebuffer.set(null);}}},yo=function(t,e){this.context=new zt(t),this.transform=e,this._tileTextures={},this.setup(),this.numSublayers=Dt.maxUnderzooming+Dt.maxOverzooming+1,this.depthEpsilon=1/Math.pow(2,16),this.crossTileSymbolIndex=new Fe,this.gpuTimers={};};yo.prototype.resize=function(e,i){if(this.width=e*t.browser.devicePixelRatio,this.height=i*t.browser.devicePixelRatio,this.context.viewport.set([0,0,this.width,this.height]),this.style)for(var o=0,r=this.style._order;o<r.length;o+=1)this.style._layers[r[o]].resize();},yo.prototype.setup=function(){var e=this.context,i=new t.StructArrayLayout2i4;i.emplaceBack(0,0),i.emplaceBack(t.EXTENT,0),i.emplaceBack(0,t.EXTENT),i.emplaceBack(t.EXTENT,t.EXTENT),this.tileExtentBuffer=e.createVertexBuffer(i,Ve.members),this.tileExtentSegments=t.SegmentVector.simpleSegment(0,0,4,2);var o=new t.StructArrayLayout2i4;o.emplaceBack(0,0),o.emplaceBack(t.EXTENT,0),o.emplaceBack(0,t.EXTENT),o.emplaceBack(t.EXTENT,t.EXTENT),this.debugBuffer=e.createVertexBuffer(o,Ve.members),this.debugSegments=t.SegmentVector.simpleSegment(0,0,4,5);var r=new t.StructArrayLayout4i8;r.emplaceBack(0,0,0,0),r.emplaceBack(t.EXTENT,0,t.EXTENT,0),r.emplaceBack(0,t.EXTENT,0,t.EXTENT),r.emplaceBack(t.EXTENT,t.EXTENT,t.EXTENT,t.EXTENT),this.rasterBoundsBuffer=e.createVertexBuffer(r,A.members),this.rasterBoundsSegments=t.SegmentVector.simpleSegment(0,0,4,2);var a=new t.StructArrayLayout2i4;a.emplaceBack(0,0),a.emplaceBack(1,0),a.emplaceBack(0,1),a.emplaceBack(1,1),this.viewportBuffer=e.createVertexBuffer(a,Ve.members),this.viewportSegments=t.SegmentVector.simpleSegment(0,0,4,2);var n=new t.StructArrayLayout1ui2;n.emplaceBack(0),n.emplaceBack(1),n.emplaceBack(3),n.emplaceBack(2),n.emplaceBack(0),this.tileBorderIndexBuffer=e.createIndexBuffer(n);var s=new t.StructArrayLayout3ui6;s.emplaceBack(0,1,2),s.emplaceBack(2,1,3),this.quadTriangleIndexBuffer=e.createIndexBuffer(s),this.emptyTexture=new t.Texture(e,{width:1,height:1,data:new Uint8Array([0,0,0,0])},e.gl.RGBA);var l=this.context.gl;this.stencilClearMode=new Pt({func:l.ALWAYS,mask:0},0,255,l.ZERO,l.ZERO,l.ZERO);},yo.prototype.clearStencil=function(){var e=this.context,i=e.gl;this.nextStencilID=1,this.currentStencilSource=void 0;var o=t.create();t.ortho(o,0,this.width,this.height,0,0,1),t.scale(o,o,[i.drawingBufferWidth,i.drawingBufferHeight,0]),this.useProgram(\"clippingMask\").draw(e,i.TRIANGLES,It.disabled,this.stencilClearMode,St.disabled,Ct.disabled,Li(o),\"$clipping\",this.viewportBuffer,this.quadTriangleIndexBuffer,this.viewportSegments);},yo.prototype._renderTileClippingMasks=function(t,e){if(this.currentStencilSource!==t.source&&t.isTileClipped()&&e&&e.length){this.currentStencilSource=t.source;var i=this.context,o=i.gl;this.nextStencilID+e.length>256&&this.clearStencil(),i.setColorMode(St.disabled),i.setDepthMode(It.disabled);var r=this.useProgram(\"clippingMask\");this._tileClippingMaskIDs={};for(var a=0,n=e;a<n.length;a+=1){var s=n[a],l=this._tileClippingMaskIDs[s.key]=this.nextStencilID++;r.draw(i,o.TRIANGLES,It.disabled,new Pt({func:o.ALWAYS,mask:0},l,255,o.KEEP,o.KEEP,o.REPLACE),St.disabled,Ct.disabled,Li(s.posMatrix),\"$clipping\",this.tileExtentBuffer,this.quadTriangleIndexBuffer,this.tileExtentSegments);}}},yo.prototype.stencilModeFor3D=function(){this.currentStencilSource=void 0,this.nextStencilID+1>256&&this.clearStencil();var t=this.nextStencilID++,e=this.context.gl;return new Pt({func:e.NOTEQUAL,mask:255},t,255,e.KEEP,e.KEEP,e.REPLACE)},yo.prototype.stencilModeForClipping=function(t){var e=this.context.gl;return new Pt({func:e.EQUAL,mask:255},this._tileClippingMaskIDs[t.key],0,e.KEEP,e.KEEP,e.REPLACE)},yo.prototype.stencilConfigForOverlap=function(t){var e,i=this.context.gl,o=t.sort((function(t,e){return e.overscaledZ-t.overscaledZ})),r=o[o.length-1].overscaledZ,a=o[0].overscaledZ-r+1;if(a>1){this.currentStencilSource=void 0,this.nextStencilID+a>256&&this.clearStencil();for(var n={},s=0;s<a;s++)n[s+r]=new Pt({func:i.GEQUAL,mask:255},s+this.nextStencilID,255,i.KEEP,i.KEEP,i.REPLACE);return this.nextStencilID+=a,[n,o]}return [(e={},e[r]=Pt.disabled,e),o]},yo.prototype.colorModeForRenderPass=function(){var e=this.context.gl;return this._showOverdrawInspector?new St([e.CONSTANT_COLOR,e.ONE],new t.Color(1/8,1/8,1/8,0),[!0,!0,!0,!0]):\"opaque\"===this.renderPass?St.unblended:St.alphaBlended},yo.prototype.depthModeForSublayer=function(t,e,i){if(!this.opaquePassEnabledForLayer())return It.disabled;var o=1-((1+this.currentLayer)*this.numSublayers+t)*this.depthEpsilon;return new It(i||this.context.gl.LEQUAL,e,[o,o])},yo.prototype.opaquePassEnabledForLayer=function(){return this.currentLayer<this.opaquePassCutoff},yo.prototype.render=function(e,i){var o=this;this.style=e,this.options=i,this.lineAtlas=e.lineAtlas,this.imageManager=e.imageManager,this.glyphManager=e.glyphManager,this.symbolFadeChange=e.placement.symbolFadeChange(t.browser.now()),this.imageManager.beginFrame();var r=this.style._order,a=this.style.sourceCaches;for(var n in a){var s=a[n];s.used&&s.prepare(this.context);}var l,c,u={},h={},p={};for(var d in a){var _=a[d];u[d]=_.getVisibleCoordinates(),h[d]=u[d].slice().reverse(),p[d]=_.getVisibleCoordinates(!0).reverse();}this.opaquePassCutoff=1/0;for(var f=0;f<r.length;f++)if(this.style._layers[r[f]].is3D()){this.opaquePassCutoff=f;break}this.renderPass=\"offscreen\";for(var m=0,g=r;m<g.length;m+=1){var v=this.style._layers[g[m]];if(v.hasOffscreenPass()&&!v.isHidden(this.transform.zoom)){var y=h[v.source];(\"custom\"===v.type||y.length)&&this.renderLayer(this,a[v.source],v,y);}}for(this.context.bindFramebuffer.set(null),this.context.clear({color:i.showOverdrawInspector?t.Color.black:t.Color.transparent,depth:1}),this.clearStencil(),this._showOverdrawInspector=i.showOverdrawInspector,this.depthRangeFor3D=[0,1-(e._order.length+2)*this.numSublayers*this.depthEpsilon],this.renderPass=\"opaque\",this.currentLayer=r.length-1;this.currentLayer>=0;this.currentLayer--){var x=this.style._layers[r[this.currentLayer]],b=a[x.source],w=u[x.source];this._renderTileClippingMasks(x,w),this.renderLayer(this,b,x,w);}for(this.renderPass=\"translucent\",this.currentLayer=0;this.currentLayer<r.length;this.currentLayer++){var T=this.style._layers[r[this.currentLayer]],E=a[T.source],I=(\"symbol\"===T.type?p:h)[T.source];this._renderTileClippingMasks(T,u[T.source]),this.renderLayer(this,E,T,I);}this.options.showTileBoundaries&&(t.values(this.style._layers).forEach((function(t){t.source&&!t.isHidden(o.transform.zoom)&&(t.source!==(c&&c.id)&&(c=o.style.sourceCaches[t.source]),(!l||l.getSource().maxzoom<c.getSource().maxzoom)&&(l=c));})),l&&vo.debug(this,l,l.getVisibleCoordinates())),this.options.showPadding&&function(t){var e=t.transform.padding;_o(t,t.transform.height-(e.top||0),3,lo),_o(t,e.bottom||0,3,co),fo(t,e.left||0,3,uo),fo(t,t.transform.width-(e.right||0),3,ho);var i=t.transform.centerPoint;!function(t,e,i,o){mo(t,e-1,i-10,2,20,o),mo(t,e-10,i-1,20,2,o);}(t,i.x,t.transform.height-i.y,po);}(this),this.context.setDefault();},yo.prototype.renderLayer=function(t,e,i,o){i.isHidden(this.transform.zoom)||(\"background\"===i.type||\"custom\"===i.type||o.length)&&(this.id=i.id,this.gpuTimingStart(i),vo[i.type](t,e,i,o,this.style.placement.variableOffsets),this.gpuTimingEnd());},yo.prototype.gpuTimingStart=function(t){if(this.options.gpuTiming){var e=this.context.extTimerQuery,i=this.gpuTimers[t.id];i||(i=this.gpuTimers[t.id]={calls:0,cpuTime:0,query:e.createQueryEXT()}),i.calls++,e.beginQueryEXT(e.TIME_ELAPSED_EXT,i.query);}},yo.prototype.gpuTimingEnd=function(){if(this.options.gpuTiming){var t=this.context.extTimerQuery;t.endQueryEXT(t.TIME_ELAPSED_EXT);}},yo.prototype.collectGpuTimers=function(){var t=this.gpuTimers;return this.gpuTimers={},t},yo.prototype.queryGpuTimers=function(t){var e={};for(var i in t){var o=t[i],r=this.context.extTimerQuery,a=r.getQueryObjectEXT(o.query,r.QUERY_RESULT_EXT)/1e6;r.deleteQueryEXT(o.query),e[i]=a;}return e},yo.prototype.translatePosMatrix=function(e,i,o,r,a){if(!o[0]&&!o[1])return e;var n=a?\"map\"===r?this.transform.angle:0:\"viewport\"===r?-this.transform.angle:0;if(n){var s=Math.sin(n),l=Math.cos(n);o=[o[0]*l-o[1]*s,o[0]*s+o[1]*l];}var c=[a?o[0]:pe(i,o[0],this.transform.zoom),a?o[1]:pe(i,o[1],this.transform.zoom),0],u=new Float32Array(16);return t.translate(u,e,c),u},yo.prototype.saveTileTexture=function(t){var e=this._tileTextures[t.size[0]];e?e.push(t):this._tileTextures[t.size[0]]=[t];},yo.prototype.getTileTexture=function(t){var e=this._tileTextures[t];return e&&e.length>0?e.pop():null},yo.prototype.isPatternMissing=function(t){if(!t)return !1;if(!t.from||!t.to)return !0;var e=this.imageManager.getPattern(t.from.toString()),i=this.imageManager.getPattern(t.to.toString());return !e||!i},yo.prototype.useProgram=function(t,e){this.cache=this.cache||{};var i=\"\"+t+(e?e.cacheKey:\"\")+(this._showOverdrawInspector?\"/overdraw\":\"\");return this.cache[i]||(this.cache[i]=new bi(this.context,t,vi[t],e,Ki[t],this._showOverdrawInspector)),this.cache[i]},yo.prototype.setCustomLayerDefaults=function(){this.context.unbindVAO(),this.context.cullFace.setDefault(),this.context.activeTexture.setDefault(),this.context.pixelStoreUnpack.setDefault(),this.context.pixelStoreUnpackPremultiplyAlpha.setDefault(),this.context.pixelStoreUnpackFlipY.setDefault();},yo.prototype.setBaseState=function(){var t=this.context.gl;this.context.cullFace.set(!1),this.context.viewport.set([0,0,this.width,this.height]),this.context.blendEquation.set(t.FUNC_ADD);},yo.prototype.initDebugOverlayCanvas=function(){null==this.debugOverlayCanvas&&(this.debugOverlayCanvas=t.window.document.createElement(\"canvas\"),this.debugOverlayCanvas.width=512,this.debugOverlayCanvas.height=512,this.debugOverlayTexture=new t.Texture(this.context,this.debugOverlayCanvas,this.context.gl.RGBA));},yo.prototype.destroy=function(){this.emptyTexture.destroy(),this.debugOverlayTexture&&this.debugOverlayTexture.destroy();};var xo=function(t,e){this.points=t,this.planes=e;};xo.fromInvProjectionMatrix=function(e,i,o){var r=Math.pow(2,o),a=[[-1,1,-1,1],[1,1,-1,1],[1,-1,-1,1],[-1,-1,-1,1],[-1,1,1,1],[1,1,1,1],[1,-1,1,1],[-1,-1,1,1]].map((function(i){return t.transformMat4([],i,e)})).map((function(e){return t.scale$1([],e,1/e[3]/i*r)})),n=[[0,1,2],[6,5,4],[0,3,7],[2,1,5],[3,2,6],[0,4,5]].map((function(e){var i=t.sub([],a[e[0]],a[e[1]]),o=t.sub([],a[e[2]],a[e[1]]),r=t.normalize([],t.cross([],i,o)),n=-t.dot(r,a[e[1]]);return r.concat(n)}));return new xo(a,n)};var bo=function(e,i){this.min=e,this.max=i,this.center=t.scale$2([],t.add([],this.min,this.max),.5);};bo.prototype.quadrant=function(e){for(var i=[e%2==0,e<2],o=t.clone$2(this.min),r=t.clone$2(this.max),a=0;a<i.length;a++)o[a]=i[a]?this.min[a]:this.center[a],r[a]=i[a]?this.center[a]:this.max[a];return r[2]=this.max[2],new bo(o,r)},bo.prototype.distanceX=function(t){return Math.max(Math.min(this.max[0],t[0]),this.min[0])-t[0]},bo.prototype.distanceY=function(t){return Math.max(Math.min(this.max[1],t[1]),this.min[1])-t[1]},bo.prototype.intersects=function(e){for(var i=[[this.min[0],this.min[1],0,1],[this.max[0],this.min[1],0,1],[this.max[0],this.max[1],0,1],[this.min[0],this.max[1],0,1]],o=!0,r=0;r<e.planes.length;r++){for(var a=e.planes[r],n=0,s=0;s<i.length;s++)n+=t.dot$1(a,i[s])>=0;if(0===n)return 0;n!==i.length&&(o=!1);}if(o)return 2;for(var l=0;l<3;l++){for(var c=Number.MAX_VALUE,u=-Number.MAX_VALUE,h=0;h<e.points.length;h++){var p=e.points[h][l]-this.min[l];c=Math.min(c,p),u=Math.max(u,p);}if(u<0||c>this.max[l]-this.min[l])return 0}return 1};var wo=function(t,e,i,o){if(void 0===t&&(t=0),void 0===e&&(e=0),void 0===i&&(i=0),void 0===o&&(o=0),isNaN(t)||t<0||isNaN(e)||e<0||isNaN(i)||i<0||isNaN(o)||o<0)throw new Error(\"Invalid value for edge-insets, top, bottom, left and right must all be numbers\");this.top=t,this.bottom=e,this.left=i,this.right=o;};wo.prototype.interpolate=function(e,i,o){return null!=i.top&&null!=e.top&&(this.top=t.number(e.top,i.top,o)),null!=i.bottom&&null!=e.bottom&&(this.bottom=t.number(e.bottom,i.bottom,o)),null!=i.left&&null!=e.left&&(this.left=t.number(e.left,i.left,o)),null!=i.right&&null!=e.right&&(this.right=t.number(e.right,i.right,o)),this},wo.prototype.getCenter=function(e,i){var o=t.clamp((this.left+e-this.right)/2,0,e),r=t.clamp((this.top+i-this.bottom)/2,0,i);return new t.Point(o,r)},wo.prototype.equals=function(t){return this.top===t.top&&this.bottom===t.bottom&&this.left===t.left&&this.right===t.right},wo.prototype.clone=function(){return new wo(this.top,this.bottom,this.left,this.right)},wo.prototype.toJSON=function(){return {top:this.top,bottom:this.bottom,left:this.left,right:this.right}};var To=function(e,i,o,r,a){this.tileSize=512,this.maxValidLatitude=85.051129,this._renderWorldCopies=void 0===a||a,this._minZoom=e||0,this._maxZoom=i||22,this._minPitch=null==o?0:o,this._maxPitch=null==r?60:r,this.setMaxBounds(),this.width=0,this.height=0,this._center=new t.LngLat(0,0),this.zoom=0,this.angle=0,this._fov=.6435011087932844,this._pitch=0,this._unmodified=!0,this._edgeInsets=new wo,this._posMatrixCache={},this._alignedPosMatrixCache={};},Eo={minZoom:{configurable:!0},maxZoom:{configurable:!0},minPitch:{configurable:!0},maxPitch:{configurable:!0},renderWorldCopies:{configurable:!0},worldSize:{configurable:!0},centerOffset:{configurable:!0},size:{configurable:!0},bearing:{configurable:!0},pitch:{configurable:!0},fov:{configurable:!0},zoom:{configurable:!0},center:{configurable:!0},padding:{configurable:!0},centerPoint:{configurable:!0},unmodified:{configurable:!0},point:{configurable:!0}};To.prototype.clone=function(){var t=new To(this._minZoom,this._maxZoom,this._minPitch,this.maxPitch,this._renderWorldCopies);return t.tileSize=this.tileSize,t.latRange=this.latRange,t.width=this.width,t.height=this.height,t._center=this._center,t.zoom=this.zoom,t.angle=this.angle,t._fov=this._fov,t._pitch=this._pitch,t._unmodified=this._unmodified,t._edgeInsets=this._edgeInsets.clone(),t._calcMatrices(),t},Eo.minZoom.get=function(){return this._minZoom},Eo.minZoom.set=function(t){this._minZoom!==t&&(this._minZoom=t,this.zoom=Math.max(this.zoom,t));},Eo.maxZoom.get=function(){return this._maxZoom},Eo.maxZoom.set=function(t){this._maxZoom!==t&&(this._maxZoom=t,this.zoom=Math.min(this.zoom,t));},Eo.minPitch.get=function(){return this._minPitch},Eo.minPitch.set=function(t){this._minPitch!==t&&(this._minPitch=t,this.pitch=Math.max(this.pitch,t));},Eo.maxPitch.get=function(){return this._maxPitch},Eo.maxPitch.set=function(t){this._maxPitch!==t&&(this._maxPitch=t,this.pitch=Math.min(this.pitch,t));},Eo.renderWorldCopies.get=function(){return this._renderWorldCopies},Eo.renderWorldCopies.set=function(t){void 0===t?t=!0:null===t&&(t=!1),this._renderWorldCopies=t;},Eo.worldSize.get=function(){return this.tileSize*this.scale},Eo.centerOffset.get=function(){return this.centerPoint._sub(this.size._div(2))},Eo.size.get=function(){return new t.Point(this.width,this.height)},Eo.bearing.get=function(){return -this.angle/Math.PI*180},Eo.bearing.set=function(e){var i=-t.wrap(e,-180,180)*Math.PI/180;this.angle!==i&&(this._unmodified=!1,this.angle=i,this._calcMatrices(),this.rotationMatrix=t.create$2(),t.rotate(this.rotationMatrix,this.rotationMatrix,this.angle));},Eo.pitch.get=function(){return this._pitch/Math.PI*180},Eo.pitch.set=function(e){var i=t.clamp(e,this.minPitch,this.maxPitch)/180*Math.PI;this._pitch!==i&&(this._unmodified=!1,this._pitch=i,this._calcMatrices());},Eo.fov.get=function(){return this._fov/Math.PI*180},Eo.fov.set=function(t){t=Math.max(.01,Math.min(60,t)),this._fov!==t&&(this._unmodified=!1,this._fov=t/180*Math.PI,this._calcMatrices());},Eo.zoom.get=function(){return this._zoom},Eo.zoom.set=function(t){var e=Math.min(Math.max(t,this.minZoom),this.maxZoom);this._zoom!==e&&(this._unmodified=!1,this._zoom=e,this.scale=this.zoomScale(e),this.tileZoom=Math.floor(e),this.zoomFraction=e-this.tileZoom,this._constrain(),this._calcMatrices());},Eo.center.get=function(){return this._center},Eo.center.set=function(t){t.lat===this._center.lat&&t.lng===this._center.lng||(this._unmodified=!1,this._center=t,this._constrain(),this._calcMatrices());},Eo.padding.get=function(){return this._edgeInsets.toJSON()},Eo.padding.set=function(t){this._edgeInsets.equals(t)||(this._unmodified=!1,this._edgeInsets.interpolate(this._edgeInsets,t,1),this._calcMatrices());},Eo.centerPoint.get=function(){return this._edgeInsets.getCenter(this.width,this.height)},To.prototype.isPaddingEqual=function(t){return this._edgeInsets.equals(t)},To.prototype.interpolatePadding=function(t,e,i){this._unmodified=!1,this._edgeInsets.interpolate(t,e,i),this._constrain(),this._calcMatrices();},To.prototype.coveringZoomLevel=function(t){var e=(t.roundZoom?Math.round:Math.floor)(this.zoom+this.scaleZoom(this.tileSize/t.tileSize));return Math.max(0,e)},To.prototype.getVisibleUnwrappedCoordinates=function(e){var i=[new t.UnwrappedTileID(0,e)];if(this._renderWorldCopies)for(var o=this.pointCoordinate(new t.Point(0,0)),r=this.pointCoordinate(new t.Point(this.width,0)),a=this.pointCoordinate(new t.Point(this.width,this.height)),n=this.pointCoordinate(new t.Point(0,this.height)),s=Math.floor(Math.min(o.x,r.x,a.x,n.x)),l=Math.floor(Math.max(o.x,r.x,a.x,n.x)),c=s-1;c<=l+1;c++)0!==c&&i.push(new t.UnwrappedTileID(c,e));return i},To.prototype.coveringTiles=function(e){var i=this.coveringZoomLevel(e),o=i;if(void 0!==e.minzoom&&i<e.minzoom)return [];void 0!==e.maxzoom&&i>e.maxzoom&&(i=e.maxzoom);var r=t.MercatorCoordinate.fromLngLat(this.center),a=Math.pow(2,i),n=[a*r.x,a*r.y,0],s=xo.fromInvProjectionMatrix(this.invProjMatrix,this.worldSize,i),l=e.minzoom||0;this.pitch<=60&&this._edgeInsets.top<.1&&(l=i);var c=function(t){return {aabb:new bo([t*a,0,0],[(t+1)*a,a,0]),zoom:0,x:0,y:0,wrap:t,fullyVisible:!1}},u=[],h=[],p=i,d=e.reparseOverscaled?o:i;if(this._renderWorldCopies)for(var _=1;_<=3;_++)u.push(c(-_)),u.push(c(_));for(u.push(c(0));u.length>0;){var f=u.pop(),m=f.x,g=f.y,v=f.fullyVisible;if(!v){var y=f.aabb.intersects(s);if(0===y)continue;v=2===y;}var x=f.aabb.distanceX(n),b=f.aabb.distanceY(n),w=Math.max(Math.abs(x),Math.abs(b));if(f.zoom===p||w>3+(1<<p-f.zoom)-2&&f.zoom>=l)h.push({tileID:new t.OverscaledTileID(f.zoom===p?d:f.zoom,f.wrap,f.zoom,m,g),distanceSq:t.sqrLen([n[0]-.5-m,n[1]-.5-g])});else for(var T=0;T<4;T++){var E=(m<<1)+T%2,I=(g<<1)+(T>>1);u.push({aabb:f.aabb.quadrant(T),zoom:f.zoom+1,x:E,y:I,wrap:f.wrap,fullyVisible:v});}}return h.sort((function(t,e){return t.distanceSq-e.distanceSq})).map((function(t){return t.tileID}))},To.prototype.resize=function(t,e){this.width=t,this.height=e,this.pixelsToGLUnits=[2/t,-2/e],this._constrain(),this._calcMatrices();},Eo.unmodified.get=function(){return this._unmodified},To.prototype.zoomScale=function(t){return Math.pow(2,t)},To.prototype.scaleZoom=function(t){return Math.log(t)/Math.LN2},To.prototype.project=function(e){var i=t.clamp(e.lat,-this.maxValidLatitude,this.maxValidLatitude);return new t.Point(t.mercatorXfromLng(e.lng)*this.worldSize,t.mercatorYfromLat(i)*this.worldSize)},To.prototype.unproject=function(e){return new t.MercatorCoordinate(e.x/this.worldSize,e.y/this.worldSize).toLngLat()},Eo.point.get=function(){return this.project(this.center)},To.prototype.setLocationAtPoint=function(e,i){var o=this.pointCoordinate(i),r=this.pointCoordinate(this.centerPoint),a=this.locationCoordinate(e),n=new t.MercatorCoordinate(a.x-(o.x-r.x),a.y-(o.y-r.y));this.center=this.coordinateLocation(n),this._renderWorldCopies&&(this.center=this.center.wrap());},To.prototype.locationPoint=function(t){return this.coordinatePoint(this.locationCoordinate(t))},To.prototype.pointLocation=function(t){return this.coordinateLocation(this.pointCoordinate(t))},To.prototype.locationCoordinate=function(e){return t.MercatorCoordinate.fromLngLat(e)},To.prototype.coordinateLocation=function(t){return t.toLngLat()},To.prototype.pointCoordinate=function(e){var i=[e.x,e.y,0,1],o=[e.x,e.y,1,1];t.transformMat4(i,i,this.pixelMatrixInverse),t.transformMat4(o,o,this.pixelMatrixInverse);var r=i[3],a=o[3],n=i[1]/r,s=o[1]/a,l=i[2]/r,c=o[2]/a,u=l===c?0:(0-l)/(c-l);return new t.MercatorCoordinate(t.number(i[0]/r,o[0]/a,u)/this.worldSize,t.number(n,s,u)/this.worldSize)},To.prototype.coordinatePoint=function(e){var i=[e.x*this.worldSize,e.y*this.worldSize,0,1];return t.transformMat4(i,i,this.pixelMatrix),new t.Point(i[0]/i[3],i[1]/i[3])},To.prototype.getBounds=function(){return (new t.LngLatBounds).extend(this.pointLocation(new t.Point(0,0))).extend(this.pointLocation(new t.Point(this.width,0))).extend(this.pointLocation(new t.Point(this.width,this.height))).extend(this.pointLocation(new t.Point(0,this.height)))},To.prototype.getMaxBounds=function(){return this.latRange&&2===this.latRange.length&&this.lngRange&&2===this.lngRange.length?new t.LngLatBounds([this.lngRange[0],this.latRange[0]],[this.lngRange[1],this.latRange[1]]):null},To.prototype.setMaxBounds=function(t){t?(this.lngRange=[t.getWest(),t.getEast()],this.latRange=[t.getSouth(),t.getNorth()],this._constrain()):(this.lngRange=null,this.latRange=[-this.maxValidLatitude,this.maxValidLatitude]);},To.prototype.calculatePosMatrix=function(e,i){void 0===i&&(i=!1);var o=e.key,r=i?this._alignedPosMatrixCache:this._posMatrixCache;if(r[o])return r[o];var a=e.canonical,n=this.worldSize/this.zoomScale(a.z),s=a.x+Math.pow(2,a.z)*e.wrap,l=t.identity(new Float64Array(16));return t.translate(l,l,[s*n,a.y*n,0]),t.scale(l,l,[n/t.EXTENT,n/t.EXTENT,1]),t.multiply(l,i?this.alignedProjMatrix:this.projMatrix,l),r[o]=new Float32Array(l),r[o]},To.prototype.customLayerMatrix=function(){return this.mercatorMatrix.slice()},To.prototype._constrain=function(){if(this.center&&this.width&&this.height&&!this._constraining){this._constraining=!0;var e,i,o,r,a=-90,n=90,s=-180,l=180,c=this.size,u=this._unmodified;if(this.latRange){var h=this.latRange;a=t.mercatorYfromLat(h[1])*this.worldSize,e=(n=t.mercatorYfromLat(h[0])*this.worldSize)-a<c.y?c.y/(n-a):0;}if(this.lngRange){var p=this.lngRange;s=t.mercatorXfromLng(p[0])*this.worldSize,i=(l=t.mercatorXfromLng(p[1])*this.worldSize)-s<c.x?c.x/(l-s):0;}var d=this.point,_=Math.max(i||0,e||0);if(_)return this.center=this.unproject(new t.Point(i?(l+s)/2:d.x,e?(n+a)/2:d.y)),this.zoom+=this.scaleZoom(_),this._unmodified=u,void(this._constraining=!1);if(this.latRange){var f=d.y,m=c.y/2;f-m<a&&(r=a+m),f+m>n&&(r=n-m);}if(this.lngRange){var g=d.x,v=c.x/2;g-v<s&&(o=s+v),g+v>l&&(o=l-v);}void 0===o&&void 0===r||(this.center=this.unproject(new t.Point(void 0!==o?o:d.x,void 0!==r?r:d.y))),this._unmodified=u,this._constraining=!1;}},To.prototype._calcMatrices=function(){if(this.height){var e=this.centerOffset;this.cameraToCenterDistance=.5/Math.tan(this._fov/2)*this.height;var i=Math.PI/2+this._pitch,o=this._fov*(.5+e.y/this.height),r=Math.sin(o)*this.cameraToCenterDistance/Math.sin(t.clamp(Math.PI-i-o,.01,Math.PI-.01)),a=this.point,n=a.x,s=a.y,l=1.01*(Math.cos(Math.PI/2-this._pitch)*r+this.cameraToCenterDistance),c=this.height/50,u=new Float64Array(16);t.perspective(u,this._fov,this.width/this.height,c,l),u[8]=2*-e.x/this.width,u[9]=2*e.y/this.height,t.scale(u,u,[1,-1,1]),t.translate(u,u,[0,0,-this.cameraToCenterDistance]),t.rotateX(u,u,this._pitch),t.rotateZ(u,u,this.angle),t.translate(u,u,[-n,-s,0]),this.mercatorMatrix=t.scale([],u,[this.worldSize,this.worldSize,this.worldSize]),t.scale(u,u,[1,1,t.mercatorZfromAltitude(1,this.center.lat)*this.worldSize,1]),this.projMatrix=u,this.invProjMatrix=t.invert([],this.projMatrix);var h=this.width%2/2,p=this.height%2/2,d=Math.cos(this.angle),_=Math.sin(this.angle),f=n-Math.round(n)+d*h+_*p,m=s-Math.round(s)+d*p+_*h,g=new Float64Array(u);if(t.translate(g,g,[f>.5?f-1:f,m>.5?m-1:m,0]),this.alignedProjMatrix=g,u=t.create(),t.scale(u,u,[this.width/2,-this.height/2,1]),t.translate(u,u,[1,-1,0]),this.labelPlaneMatrix=u,u=t.create(),t.scale(u,u,[1,-1,1]),t.translate(u,u,[-1,-1,0]),t.scale(u,u,[2/this.width,2/this.height,1]),this.glCoordMatrix=u,this.pixelMatrix=t.multiply(new Float64Array(16),this.labelPlaneMatrix,this.projMatrix),!(u=t.invert(new Float64Array(16),this.pixelMatrix)))throw new Error(\"failed to invert matrix\");this.pixelMatrixInverse=u,this._posMatrixCache={},this._alignedPosMatrixCache={};}},To.prototype.maxPitchScaleFactor=function(){if(!this.pixelMatrixInverse)return 1;var e=this.pointCoordinate(new t.Point(0,0)),i=[e.x*this.worldSize,e.y*this.worldSize,0,1];return t.transformMat4(i,i,this.pixelMatrix)[3]/this.cameraToCenterDistance},To.prototype.getCameraPoint=function(){var e=Math.tan(this._pitch)*(this.cameraToCenterDistance||1);return this.centerPoint.add(new t.Point(0,e))},To.prototype.getCameraQueryGeometry=function(e){var i=this.getCameraPoint();if(1===e.length)return [e[0],i];for(var o=i.x,r=i.y,a=i.x,n=i.y,s=0,l=e;s<l.length;s+=1){var c=l[s];o=Math.min(o,c.x),r=Math.min(r,c.y),a=Math.max(a,c.x),n=Math.max(n,c.y);}return [new t.Point(o,r),new t.Point(a,r),new t.Point(a,n),new t.Point(o,n),new t.Point(o,r)]},Object.defineProperties(To.prototype,Eo);var Io=function(e){var i,o,r,a;this._hashName=e&&encodeURIComponent(e),t.bindAll([\"_getCurrentHash\",\"_onHashChange\",\"_updateHash\"],this),this._updateHash=(i=this._updateHashUnthrottled.bind(this),o=!1,r=null,a=function(){r=null,o&&(i(),r=setTimeout(a,300),o=!1);},function(){return o=!0,r||a(),r});};Io.prototype.addTo=function(e){return this._map=e,t.window.addEventListener(\"hashchange\",this._onHashChange,!1),this._map.on(\"moveend\",this._updateHash),this},Io.prototype.remove=function(){return t.window.removeEventListener(\"hashchange\",this._onHashChange,!1),this._map.off(\"moveend\",this._updateHash),clearTimeout(this._updateHash()),delete this._map,this},Io.prototype.getHashString=function(e){var i=this._map.getCenter(),o=Math.round(100*this._map.getZoom())/100,r=Math.ceil((o*Math.LN2+Math.log(512/360/.5))/Math.LN10),a=Math.pow(10,r),n=Math.round(i.lng*a)/a,s=Math.round(i.lat*a)/a,l=this._map.getBearing(),c=this._map.getPitch(),u=\"\";if(u+=e?\"/\"+n+\"/\"+s+\"/\"+o:o+\"/\"+s+\"/\"+n,(l||c)&&(u+=\"/\"+Math.round(10*l)/10),c&&(u+=\"/\"+Math.round(c)),this._hashName){var h=this._hashName,p=!1,d=t.window.location.hash.slice(1).split(\"&\").map((function(t){var e=t.split(\"=\")[0];return e===h?(p=!0,e+\"=\"+u):t})).filter((function(t){return t}));return p||d.push(h+\"=\"+u),\"#\"+d.join(\"&\")}return \"#\"+u},Io.prototype._getCurrentHash=function(){var e,i=this,o=t.window.location.hash.replace(\"#\",\"\");return this._hashName?(o.split(\"&\").map((function(t){return t.split(\"=\")})).forEach((function(t){t[0]===i._hashName&&(e=t);})),(e&&e[1]||\"\").split(\"/\")):o.split(\"/\")},Io.prototype._onHashChange=function(){var t=this._getCurrentHash();if(t.length>=3&&!t.some((function(t){return isNaN(t)}))){var e=this._map.dragRotate.isEnabled()&&this._map.touchZoomRotate.isEnabled()?+(t[3]||0):this._map.getBearing();return this._map.jumpTo({center:[+t[2],+t[1]],zoom:+t[0],bearing:e,pitch:+(t[4]||0)}),!0}return !1},Io.prototype._updateHashUnthrottled=function(){var e=t.window.location.href.replace(/(#.+)?$/,this.getHashString());try{t.window.history.replaceState(t.window.history.state,null,e);}catch(t){}};var Po={linearity:.3,easing:t.bezier(0,0,.3,1)},So=t.extend({deceleration:2500,maxSpeed:1400},Po),Co=t.extend({deceleration:20,maxSpeed:1400},Po),zo=t.extend({deceleration:1e3,maxSpeed:360},Po),Do=t.extend({deceleration:1e3,maxSpeed:90},Po),Ao=function(t){this._map=t,this.clear();};function Mo(t,e){(!t.duration||t.duration<e.duration)&&(t.duration=e.duration,t.easing=e.easing);}function Lo(e,i,o){var r=o.maxSpeed,a=o.linearity,n=o.deceleration,s=t.clamp(e*a/(i/1e3),-r,r),l=Math.abs(s)/(n*a);return {easing:o.easing,duration:1e3*l,amount:s*(l/2)}}Ao.prototype.clear=function(){this._inertiaBuffer=[];},Ao.prototype.record=function(e){this._drainInertiaBuffer(),this._inertiaBuffer.push({time:t.browser.now(),settings:e});},Ao.prototype._drainInertiaBuffer=function(){for(var e=this._inertiaBuffer,i=t.browser.now();e.length>0&&i-e[0].time>160;)e.shift();},Ao.prototype._onMoveEnd=function(e){if(this._drainInertiaBuffer(),!(this._inertiaBuffer.length<2)){for(var i={zoom:0,bearing:0,pitch:0,pan:new t.Point(0,0),pinchAround:void 0,around:void 0},o=0,r=this._inertiaBuffer;o<r.length;o+=1){var a=r[o].settings;i.zoom+=a.zoomDelta||0,i.bearing+=a.bearingDelta||0,i.pitch+=a.pitchDelta||0,a.panDelta&&i.pan._add(a.panDelta),a.around&&(i.around=a.around),a.pinchAround&&(i.pinchAround=a.pinchAround);}var n=this._inertiaBuffer[this._inertiaBuffer.length-1].time-this._inertiaBuffer[0].time,s={};if(i.pan.mag()){var l=Lo(i.pan.mag(),n,t.extend({},So,e||{}));s.offset=i.pan.mult(l.amount/i.pan.mag()),s.center=this._map.transform.center,Mo(s,l);}if(i.zoom){var c=Lo(i.zoom,n,Co);s.zoom=this._map.transform.zoom+c.amount,Mo(s,c);}if(i.bearing){var u=Lo(i.bearing,n,zo);s.bearing=this._map.transform.bearing+t.clamp(u.amount,-179,179),Mo(s,u);}if(i.pitch){var h=Lo(i.pitch,n,Do);s.pitch=this._map.transform.pitch+h.amount,Mo(s,h);}if(s.zoom||s.bearing){var p=void 0===i.pinchAround?i.around:i.pinchAround;s.around=p?this._map.unproject(p):this._map.getCenter();}return this.clear(),t.extend(s,{noMoveStart:!0})}};var Ro=function(e){function o(o,r,a,n){void 0===n&&(n={});var s=i.mousePos(r.getCanvasContainer(),a),l=r.unproject(s);e.call(this,o,t.extend({point:s,lngLat:l,originalEvent:a},n)),this._defaultPrevented=!1,this.target=r;}e&&(o.__proto__=e),(o.prototype=Object.create(e&&e.prototype)).constructor=o;var r={defaultPrevented:{configurable:!0}};return o.prototype.preventDefault=function(){this._defaultPrevented=!0;},r.defaultPrevented.get=function(){return this._defaultPrevented},Object.defineProperties(o.prototype,r),o}(t.Event),ko=function(e){function o(o,r,a){var n=\"touchend\"===o?a.changedTouches:a.touches,s=i.touchPos(r.getCanvasContainer(),n),l=s.map((function(t){return r.unproject(t)})),c=s.reduce((function(t,e,i,o){return t.add(e.div(o.length))}),new t.Point(0,0)),u=r.unproject(c);e.call(this,o,{points:s,point:c,lngLats:l,lngLat:u,originalEvent:a}),this._defaultPrevented=!1;}e&&(o.__proto__=e),(o.prototype=Object.create(e&&e.prototype)).constructor=o;var r={defaultPrevented:{configurable:!0}};return o.prototype.preventDefault=function(){this._defaultPrevented=!0;},r.defaultPrevented.get=function(){return this._defaultPrevented},Object.defineProperties(o.prototype,r),o}(t.Event),Bo=function(t){function e(e,i,o){t.call(this,e,{originalEvent:o}),this._defaultPrevented=!1;}t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e;var i={defaultPrevented:{configurable:!0}};return e.prototype.preventDefault=function(){this._defaultPrevented=!0;},i.defaultPrevented.get=function(){return this._defaultPrevented},Object.defineProperties(e.prototype,i),e}(t.Event),Oo=function(t,e){this._map=t,this._clickTolerance=e.clickTolerance;};Oo.prototype.reset=function(){delete this._mousedownPos;},Oo.prototype.wheel=function(t){return this._firePreventable(new Bo(t.type,this._map,t))},Oo.prototype.mousedown=function(t,e){return this._mousedownPos=e,this._firePreventable(new Ro(t.type,this._map,t))},Oo.prototype.mouseup=function(t){this._map.fire(new Ro(t.type,this._map,t));},Oo.prototype.click=function(t,e){this._mousedownPos&&this._mousedownPos.dist(e)>=this._clickTolerance||this._map.fire(new Ro(t.type,this._map,t));},Oo.prototype.dblclick=function(t){return this._firePreventable(new Ro(t.type,this._map,t))},Oo.prototype.mouseover=function(t){this._map.fire(new Ro(t.type,this._map,t));},Oo.prototype.mouseout=function(t){this._map.fire(new Ro(t.type,this._map,t));},Oo.prototype.touchstart=function(t){return this._firePreventable(new ko(t.type,this._map,t))},Oo.prototype.touchmove=function(t){this._map.fire(new ko(t.type,this._map,t));},Oo.prototype.touchend=function(t){this._map.fire(new ko(t.type,this._map,t));},Oo.prototype.touchcancel=function(t){this._map.fire(new ko(t.type,this._map,t));},Oo.prototype._firePreventable=function(t){if(this._map.fire(t),t.defaultPrevented)return {}},Oo.prototype.isEnabled=function(){return !0},Oo.prototype.isActive=function(){return !1},Oo.prototype.enable=function(){},Oo.prototype.disable=function(){};var Fo=function(t){this._map=t;};Fo.prototype.reset=function(){this._delayContextMenu=!1,delete this._contextMenuEvent;},Fo.prototype.mousemove=function(t){this._map.fire(new Ro(t.type,this._map,t));},Fo.prototype.mousedown=function(){this._delayContextMenu=!0;},Fo.prototype.mouseup=function(){this._delayContextMenu=!1,this._contextMenuEvent&&(this._map.fire(new Ro(\"contextmenu\",this._map,this._contextMenuEvent)),delete this._contextMenuEvent);},Fo.prototype.contextmenu=function(t){this._delayContextMenu?this._contextMenuEvent=t:this._map.fire(new Ro(t.type,this._map,t)),this._map.listens(\"contextmenu\")&&t.preventDefault();},Fo.prototype.isEnabled=function(){return !0},Fo.prototype.isActive=function(){return !1},Fo.prototype.enable=function(){},Fo.prototype.disable=function(){};var Uo=function(t,e){this._map=t,this._el=t.getCanvasContainer(),this._container=t.getContainer(),this._clickTolerance=e.clickTolerance||1;};function No(t,e){for(var i={},o=0;o<t.length;o++)i[t[o].identifier]=e[o];return i}Uo.prototype.isEnabled=function(){return !!this._enabled},Uo.prototype.isActive=function(){return !!this._active},Uo.prototype.enable=function(){this.isEnabled()||(this._enabled=!0);},Uo.prototype.disable=function(){this.isEnabled()&&(this._enabled=!1);},Uo.prototype.mousedown=function(t,e){this.isEnabled()&&t.shiftKey&&0===t.button&&(i.disableDrag(),this._startPos=this._lastPos=e,this._active=!0);},Uo.prototype.mousemoveWindow=function(t,e){if(this._active){var o=e;if(!(this._lastPos.equals(o)||!this._box&&o.dist(this._startPos)<this._clickTolerance)){var r=this._startPos;this._lastPos=o,this._box||(this._box=i.create(\"div\",\"mapboxgl-boxzoom\",this._container),this._container.classList.add(\"mapboxgl-crosshair\"),this._fireEvent(\"boxzoomstart\",t));var a=Math.min(r.x,o.x),n=Math.max(r.x,o.x),s=Math.min(r.y,o.y),l=Math.max(r.y,o.y);i.setTransform(this._box,\"translate(\"+a+\"px,\"+s+\"px)\"),this._box.style.width=n-a+\"px\",this._box.style.height=l-s+\"px\";}}},Uo.prototype.mouseupWindow=function(e,o){var r=this;if(this._active&&0===e.button){var a=this._startPos,n=o;if(this.reset(),i.suppressClick(),a.x!==n.x||a.y!==n.y)return this._map.fire(new t.Event(\"boxzoomend\",{originalEvent:e})),{cameraAnimation:function(t){return t.fitScreenCoordinates(a,n,r._map.getBearing(),{linear:!0})}};this._fireEvent(\"boxzoomcancel\",e);}},Uo.prototype.keydown=function(t){this._active&&27===t.keyCode&&(this.reset(),this._fireEvent(\"boxzoomcancel\",t));},Uo.prototype.blur=function(){this.reset();},Uo.prototype.reset=function(){this._active=!1,this._container.classList.remove(\"mapboxgl-crosshair\"),this._box&&(i.remove(this._box),this._box=null),i.enableDrag(),delete this._startPos,delete this._lastPos;},Uo.prototype._fireEvent=function(e,i){return this._map.fire(new t.Event(e,{originalEvent:i}))};var Zo=function(t){this.reset(),this.numTouches=t.numTouches;};Zo.prototype.reset=function(){delete this.centroid,delete this.startTime,delete this.touches,this.aborted=!1;},Zo.prototype.touchstart=function(e,i,o){(this.centroid||o.length>this.numTouches)&&(this.aborted=!0),this.aborted||(void 0===this.startTime&&(this.startTime=e.timeStamp),o.length===this.numTouches&&(this.centroid=function(e){for(var i=new t.Point(0,0),o=0,r=e;o<r.length;o+=1)i._add(r[o]);return i.div(e.length)}(i),this.touches=No(o,i)));},Zo.prototype.touchmove=function(t,e,i){if(!this.aborted&&this.centroid){var o=No(i,e);for(var r in this.touches){var a=o[r];(!a||a.dist(this.touches[r])>30)&&(this.aborted=!0);}}},Zo.prototype.touchend=function(t,e,i){if((!this.centroid||t.timeStamp-this.startTime>500)&&(this.aborted=!0),0===i.length){var o=!this.aborted&&this.centroid;if(this.reset(),o)return o}};var qo=function(t){this.singleTap=new Zo(t),this.numTaps=t.numTaps,this.reset();};qo.prototype.reset=function(){this.lastTime=1/0,delete this.lastTap,this.count=0,this.singleTap.reset();},qo.prototype.touchstart=function(t,e,i){this.singleTap.touchstart(t,e,i);},qo.prototype.touchmove=function(t,e,i){this.singleTap.touchmove(t,e,i);},qo.prototype.touchend=function(t,e,i){var o=this.singleTap.touchend(t,e,i);if(o){var r=t.timeStamp-this.lastTime<500,a=!this.lastTap||this.lastTap.dist(o)<30;if(r&&a||this.reset(),this.count++,this.lastTime=t.timeStamp,this.lastTap=o,this.count===this.numTaps)return this.reset(),o}};var jo=function(){this._zoomIn=new qo({numTouches:1,numTaps:2}),this._zoomOut=new qo({numTouches:2,numTaps:1}),this.reset();};jo.prototype.reset=function(){this._active=!1,this._zoomIn.reset(),this._zoomOut.reset();},jo.prototype.touchstart=function(t,e,i){this._zoomIn.touchstart(t,e,i),this._zoomOut.touchstart(t,e,i);},jo.prototype.touchmove=function(t,e,i){this._zoomIn.touchmove(t,e,i),this._zoomOut.touchmove(t,e,i);},jo.prototype.touchend=function(t,e,i){var o=this,r=this._zoomIn.touchend(t,e,i),a=this._zoomOut.touchend(t,e,i);return r?(this._active=!0,t.preventDefault(),setTimeout((function(){return o.reset()}),0),{cameraAnimation:function(e){return e.easeTo({duration:300,zoom:e.getZoom()+1,around:e.unproject(r)},{originalEvent:t})}}):a?(this._active=!0,t.preventDefault(),setTimeout((function(){return o.reset()}),0),{cameraAnimation:function(e){return e.easeTo({duration:300,zoom:e.getZoom()-1,around:e.unproject(a)},{originalEvent:t})}}):void 0},jo.prototype.touchcancel=function(){this.reset();},jo.prototype.enable=function(){this._enabled=!0;},jo.prototype.disable=function(){this._enabled=!1,this.reset();},jo.prototype.isEnabled=function(){return this._enabled},jo.prototype.isActive=function(){return this._active};var Vo={0:1,2:2},Go=function(t){this.reset(),this._clickTolerance=t.clickTolerance||1;};Go.prototype.blur=function(){this.reset();},Go.prototype.reset=function(){this._active=!1,this._moved=!1,delete this._lastPoint,delete this._eventButton;},Go.prototype._correctButton=function(t,e){return !1},Go.prototype._move=function(t,e){return {}},Go.prototype.mousedown=function(t,e){if(!this._lastPoint){var o=i.mouseButton(t);this._correctButton(t,o)&&(this._lastPoint=e,this._eventButton=o);}},Go.prototype.mousemoveWindow=function(t,e){var i=this._lastPoint;if(i)if(t.preventDefault(),function(t,e){var i=Vo[e];return void 0===t.buttons||(t.buttons&i)!==i}(t,this._eventButton))this.reset();else if(this._moved||!(e.dist(i)<this._clickTolerance))return this._moved=!0,this._lastPoint=e,this._move(i,e)},Go.prototype.mouseupWindow=function(t){this._lastPoint&&i.mouseButton(t)===this._eventButton&&(this._moved&&i.suppressClick(),this.reset());},Go.prototype.enable=function(){this._enabled=!0;},Go.prototype.disable=function(){this._enabled=!1,this.reset();},Go.prototype.isEnabled=function(){return this._enabled},Go.prototype.isActive=function(){return this._active};var Wo=function(t){function e(){t.apply(this,arguments);}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e,e.prototype.mousedown=function(e,i){t.prototype.mousedown.call(this,e,i),this._lastPoint&&(this._active=!0);},e.prototype._correctButton=function(t,e){return 0===e&&!t.ctrlKey},e.prototype._move=function(t,e){return {around:e,panDelta:e.sub(t)}},e}(Go),Xo=function(t){function e(){t.apply(this,arguments);}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e,e.prototype._correctButton=function(t,e){return 0===e&&t.ctrlKey||2===e},e.prototype._move=function(t,e){var i=.8*(e.x-t.x);if(i)return this._active=!0,{bearingDelta:i}},e.prototype.contextmenu=function(t){t.preventDefault();},e}(Go),Ho=function(t){function e(){t.apply(this,arguments);}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e,e.prototype._correctButton=function(t,e){return 0===e&&t.ctrlKey||2===e},e.prototype._move=function(t,e){var i=-.5*(e.y-t.y);if(i)return this._active=!0,{pitchDelta:i}},e.prototype.contextmenu=function(t){t.preventDefault();},e}(Go),Ko=function(t){this._minTouches=1,this._clickTolerance=t.clickTolerance||1,this.reset();};Ko.prototype.reset=function(){this._active=!1,this._touches={},this._sum=new t.Point(0,0);},Ko.prototype.touchstart=function(t,e,i){return this._calculateTransform(t,e,i)},Ko.prototype.touchmove=function(t,e,i){if(this._active&&!(i.length<this._minTouches))return t.preventDefault(),this._calculateTransform(t,e,i)},Ko.prototype.touchend=function(t,e,i){this._calculateTransform(t,e,i),this._active&&i.length<this._minTouches&&this.reset();},Ko.prototype.touchcancel=function(){this.reset();},Ko.prototype._calculateTransform=function(e,i,o){o.length>0&&(this._active=!0);var r=No(o,i),a=new t.Point(0,0),n=new t.Point(0,0),s=0;for(var l in r){var c=r[l],u=this._touches[l];u&&(a._add(c),n._add(c.sub(u)),s++,r[l]=c);}if(this._touches=r,!(s<this._minTouches)&&n.mag()){var h=n.div(s);if(this._sum._add(h),!(this._sum.mag()<this._clickTolerance))return {around:a.div(s),panDelta:h}}},Ko.prototype.enable=function(){this._enabled=!0;},Ko.prototype.disable=function(){this._enabled=!1,this.reset();},Ko.prototype.isEnabled=function(){return this._enabled},Ko.prototype.isActive=function(){return this._active};var Yo=function(){this.reset();};function Jo(t,e,i){for(var o=0;o<t.length;o++)if(t[o].identifier===i)return e[o]}function Qo(t,e){return Math.log(t/e)/Math.LN2}Yo.prototype.reset=function(){this._active=!1,delete this._firstTwoTouches;},Yo.prototype._start=function(t){},Yo.prototype._move=function(t,e,i){return {}},Yo.prototype.touchstart=function(t,e,i){this._firstTwoTouches||i.length<2||(this._firstTwoTouches=[i[0].identifier,i[1].identifier],this._start([e[0],e[1]]));},Yo.prototype.touchmove=function(t,e,i){if(this._firstTwoTouches){t.preventDefault();var o=this._firstTwoTouches,r=o[1],a=Jo(i,e,o[0]),n=Jo(i,e,r);if(a&&n){var s=this._aroundCenter?null:a.add(n).div(2);return this._move([a,n],s,t)}}},Yo.prototype.touchend=function(t,e,o){if(this._firstTwoTouches){var r=this._firstTwoTouches,a=r[1],n=Jo(o,e,r[0]),s=Jo(o,e,a);n&&s||(this._active&&i.suppressClick(),this.reset());}},Yo.prototype.touchcancel=function(){this.reset();},Yo.prototype.enable=function(t){this._enabled=!0,this._aroundCenter=!!t&&\"center\"===t.around;},Yo.prototype.disable=function(){this._enabled=!1,this.reset();},Yo.prototype.isEnabled=function(){return this._enabled},Yo.prototype.isActive=function(){return this._active};var $o=function(t){function e(){t.apply(this,arguments);}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e,e.prototype.reset=function(){t.prototype.reset.call(this),delete this._distance,delete this._startDistance;},e.prototype._start=function(t){this._startDistance=this._distance=t[0].dist(t[1]);},e.prototype._move=function(t,e){var i=this._distance;if(this._distance=t[0].dist(t[1]),this._active||!(Math.abs(Qo(this._distance,this._startDistance))<.1))return this._active=!0,{zoomDelta:Qo(this._distance,i),pinchAround:e}},e}(Yo);function tr(t,e){return 180*t.angleWith(e)/Math.PI}var er=function(t){function e(){t.apply(this,arguments);}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e,e.prototype.reset=function(){t.prototype.reset.call(this),delete this._minDiameter,delete this._startVector,delete this._vector;},e.prototype._start=function(t){this._startVector=this._vector=t[0].sub(t[1]),this._minDiameter=t[0].dist(t[1]);},e.prototype._move=function(t,e){var i=this._vector;if(this._vector=t[0].sub(t[1]),this._active||!this._isBelowThreshold(this._vector))return this._active=!0,{bearingDelta:tr(this._vector,i),pinchAround:e}},e.prototype._isBelowThreshold=function(t){this._minDiameter=Math.min(this._minDiameter,t.mag());var e=25/(Math.PI*this._minDiameter)*360,i=tr(t,this._startVector);return Math.abs(i)<e},e}(Yo);function ir(t){return Math.abs(t.y)>Math.abs(t.x)}var or=function(t){function e(){t.apply(this,arguments);}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e,e.prototype.reset=function(){t.prototype.reset.call(this),this._valid=void 0,delete this._firstMove,delete this._lastPoints;},e.prototype._start=function(t){this._lastPoints=t,ir(t[0].sub(t[1]))&&(this._valid=!1);},e.prototype._move=function(t,e,i){var o=t[0].sub(this._lastPoints[0]),r=t[1].sub(this._lastPoints[1]);if(this._valid=this.gestureBeginsVertically(o,r,i.timeStamp),this._valid)return this._lastPoints=t,this._active=!0,{pitchDelta:(o.y+r.y)/2*-.5}},e.prototype.gestureBeginsVertically=function(t,e,i){if(void 0!==this._valid)return this._valid;var o=t.mag()>=2,r=e.mag()>=2;if(o||r){if(!o||!r)return void 0===this._firstMove&&(this._firstMove=i),i-this._firstMove<100&&void 0;var a=t.y>0==e.y>0;return ir(t)&&ir(e)&&a}},e}(Yo),rr={panStep:100,bearingStep:15,pitchStep:10},ar=function(){var t=rr;this._panStep=t.panStep,this._bearingStep=t.bearingStep,this._pitchStep=t.pitchStep,this._rotationDisabled=!1;};function nr(t){return t*(2-t)}ar.prototype.blur=function(){this.reset();},ar.prototype.reset=function(){this._active=!1;},ar.prototype.keydown=function(t){var e=this;if(!(t.altKey||t.ctrlKey||t.metaKey)){var i=0,o=0,r=0,a=0,n=0;switch(t.keyCode){case 61:case 107:case 171:case 187:i=1;break;case 189:case 109:case 173:i=-1;break;case 37:t.shiftKey?o=-1:(t.preventDefault(),a=-1);break;case 39:t.shiftKey?o=1:(t.preventDefault(),a=1);break;case 38:t.shiftKey?r=1:(t.preventDefault(),n=-1);break;case 40:t.shiftKey?r=-1:(t.preventDefault(),n=1);break;default:return}return this._rotationDisabled&&(o=0,r=0),{cameraAnimation:function(s){var l=s.getZoom();s.easeTo({duration:300,easeId:\"keyboardHandler\",easing:nr,zoom:i?Math.round(l)+i*(t.shiftKey?2:1):l,bearing:s.getBearing()+o*e._bearingStep,pitch:s.getPitch()+r*e._pitchStep,offset:[-a*e._panStep,-n*e._panStep],center:s.getCenter()},{originalEvent:t});}}}},ar.prototype.enable=function(){this._enabled=!0;},ar.prototype.disable=function(){this._enabled=!1,this.reset();},ar.prototype.isEnabled=function(){return this._enabled},ar.prototype.isActive=function(){return this._active},ar.prototype.disableRotation=function(){this._rotationDisabled=!0;},ar.prototype.enableRotation=function(){this._rotationDisabled=!1;};var sr=function(e,i){this._map=e,this._el=e.getCanvasContainer(),this._handler=i,this._delta=0,this._defaultZoomRate=.01,this._wheelZoomRate=1/450,t.bindAll([\"_onTimeout\"],this);};sr.prototype.setZoomRate=function(t){this._defaultZoomRate=t;},sr.prototype.setWheelZoomRate=function(t){this._wheelZoomRate=t;},sr.prototype.isEnabled=function(){return !!this._enabled},sr.prototype.isActive=function(){return !!this._active||void 0!==this._finishTimeout},sr.prototype.isZooming=function(){return !!this._zooming},sr.prototype.enable=function(t){this.isEnabled()||(this._enabled=!0,this._aroundCenter=t&&\"center\"===t.around);},sr.prototype.disable=function(){this.isEnabled()&&(this._enabled=!1);},sr.prototype.wheel=function(e){if(this.isEnabled()){var i=e.deltaMode===t.window.WheelEvent.DOM_DELTA_LINE?40*e.deltaY:e.deltaY,o=t.browser.now(),r=o-(this._lastWheelEventTime||0);this._lastWheelEventTime=o,0!==i&&i%4.000244140625==0?this._type=\"wheel\":0!==i&&Math.abs(i)<4?this._type=\"trackpad\":r>400?(this._type=null,this._lastValue=i,this._timeout=setTimeout(this._onTimeout,40,e)):this._type||(this._type=Math.abs(r*i)<200?\"trackpad\":\"wheel\",this._timeout&&(clearTimeout(this._timeout),this._timeout=null,i+=this._lastValue)),e.shiftKey&&i&&(i/=4),this._type&&(this._lastWheelEvent=e,this._delta-=i,this._active||this._start(e)),e.preventDefault();}},sr.prototype._onTimeout=function(t){this._type=\"wheel\",this._delta-=this._lastValue,this._active||this._start(t);},sr.prototype._start=function(e){if(this._delta){this._frameId&&(this._frameId=null),this._active=!0,this.isZooming()||(this._zooming=!0),this._finishTimeout&&(clearTimeout(this._finishTimeout),delete this._finishTimeout);var o=i.mousePos(this._el,e);this._around=t.LngLat.convert(this._aroundCenter?this._map.getCenter():this._map.unproject(o)),this._aroundPoint=this._map.transform.locationPoint(this._around),this._frameId||(this._frameId=!0,this._handler._triggerRenderFrame());}},sr.prototype.renderFrame=function(){var e=this;if(this._frameId&&(this._frameId=null,this.isActive())){var i=this._map.transform;if(0!==this._delta){var o=\"wheel\"===this._type&&Math.abs(this._delta)>4.000244140625?this._wheelZoomRate:this._defaultZoomRate,r=2/(1+Math.exp(-Math.abs(this._delta*o)));this._delta<0&&0!==r&&(r=1/r);var a=\"number\"==typeof this._targetZoom?i.zoomScale(this._targetZoom):i.scale;this._targetZoom=Math.min(i.maxZoom,Math.max(i.minZoom,i.scaleZoom(a*r))),\"wheel\"===this._type&&(this._startZoom=i.zoom,this._easing=this._smoothOutEasing(200)),this._delta=0;}var n,s=\"number\"==typeof this._targetZoom?this._targetZoom:i.zoom,l=this._startZoom,c=this._easing,u=!1;if(\"wheel\"===this._type&&l&&c){var h=Math.min((t.browser.now()-this._lastWheelEventTime)/200,1),p=c(h);n=t.number(l,s,p),h<1?this._frameId||(this._frameId=!0):u=!0;}else n=s,u=!0;return this._active=!0,u&&(this._active=!1,this._finishTimeout=setTimeout((function(){e._zooming=!1,e._handler._triggerRenderFrame(),delete e._targetZoom,delete e._finishTimeout;}),200)),{noInertia:!0,needsRenderFrame:!u,zoomDelta:n-i.zoom,around:this._aroundPoint,originalEvent:this._lastWheelEvent}}},sr.prototype._smoothOutEasing=function(e){var i=t.ease;if(this._prevEase){var o=this._prevEase,r=(t.browser.now()-o.start)/o.duration,a=o.easing(r+.01)-o.easing(r),n=.27/Math.sqrt(a*a+1e-4)*.01,s=Math.sqrt(.0729-n*n);i=t.bezier(n,s,.25,1);}return this._prevEase={start:t.browser.now(),duration:e,easing:i},i},sr.prototype.blur=function(){this.reset();},sr.prototype.reset=function(){this._active=!1;};var lr=function(t,e){this._clickZoom=t,this._tapZoom=e;};lr.prototype.enable=function(){this._clickZoom.enable(),this._tapZoom.enable();},lr.prototype.disable=function(){this._clickZoom.disable(),this._tapZoom.disable();},lr.prototype.isEnabled=function(){return this._clickZoom.isEnabled()&&this._tapZoom.isEnabled()},lr.prototype.isActive=function(){return this._clickZoom.isActive()||this._tapZoom.isActive()};var cr=function(){this.reset();};cr.prototype.reset=function(){this._active=!1;},cr.prototype.blur=function(){this.reset();},cr.prototype.dblclick=function(t,e){return t.preventDefault(),{cameraAnimation:function(i){i.easeTo({duration:300,zoom:i.getZoom()+(t.shiftKey?-1:1),around:i.unproject(e)},{originalEvent:t});}}},cr.prototype.enable=function(){this._enabled=!0;},cr.prototype.disable=function(){this._enabled=!1,this.reset();},cr.prototype.isEnabled=function(){return this._enabled},cr.prototype.isActive=function(){return this._active};var ur=function(){this._tap=new qo({numTouches:1,numTaps:1}),this.reset();};ur.prototype.reset=function(){this._active=!1,delete this._swipePoint,delete this._swipeTouch,delete this._tapTime,this._tap.reset();},ur.prototype.touchstart=function(t,e,i){this._swipePoint||(this._tapTime&&t.timeStamp-this._tapTime>500&&this.reset(),this._tapTime?i.length>0&&(this._swipePoint=e[0],this._swipeTouch=i[0].identifier):this._tap.touchstart(t,e,i));},ur.prototype.touchmove=function(t,e,i){if(this._tapTime){if(this._swipePoint){if(i[0].identifier!==this._swipeTouch)return;var o=e[0],r=o.y-this._swipePoint.y;return this._swipePoint=o,t.preventDefault(),this._active=!0,{zoomDelta:r/128}}}else this._tap.touchmove(t,e,i);},ur.prototype.touchend=function(t,e,i){this._tapTime?this._swipePoint&&0===i.length&&this.reset():this._tap.touchend(t,e,i)&&(this._tapTime=t.timeStamp);},ur.prototype.touchcancel=function(){this.reset();},ur.prototype.enable=function(){this._enabled=!0;},ur.prototype.disable=function(){this._enabled=!1,this.reset();},ur.prototype.isEnabled=function(){return this._enabled},ur.prototype.isActive=function(){return this._active};var hr=function(t,e,i){this._el=t,this._mousePan=e,this._touchPan=i;};hr.prototype.enable=function(t){this._inertiaOptions=t||{},this._mousePan.enable(),this._touchPan.enable(),this._el.classList.add(\"mapboxgl-touch-drag-pan\");},hr.prototype.disable=function(){this._mousePan.disable(),this._touchPan.disable(),this._el.classList.remove(\"mapboxgl-touch-drag-pan\");},hr.prototype.isEnabled=function(){return this._mousePan.isEnabled()&&this._touchPan.isEnabled()},hr.prototype.isActive=function(){return this._mousePan.isActive()||this._touchPan.isActive()};var pr=function(t,e,i){this._pitchWithRotate=t.pitchWithRotate,this._mouseRotate=e,this._mousePitch=i;};pr.prototype.enable=function(){this._mouseRotate.enable(),this._pitchWithRotate&&this._mousePitch.enable();},pr.prototype.disable=function(){this._mouseRotate.disable(),this._mousePitch.disable();},pr.prototype.isEnabled=function(){return this._mouseRotate.isEnabled()&&(!this._pitchWithRotate||this._mousePitch.isEnabled())},pr.prototype.isActive=function(){return this._mouseRotate.isActive()||this._mousePitch.isActive()};var dr=function(t,e,i,o){this._el=t,this._touchZoom=e,this._touchRotate=i,this._tapDragZoom=o,this._rotationDisabled=!1,this._enabled=!0;};dr.prototype.enable=function(t){this._touchZoom.enable(t),this._rotationDisabled||this._touchRotate.enable(t),this._tapDragZoom.enable(),this._el.classList.add(\"mapboxgl-touch-zoom-rotate\");},dr.prototype.disable=function(){this._touchZoom.disable(),this._touchRotate.disable(),this._tapDragZoom.disable(),this._el.classList.remove(\"mapboxgl-touch-zoom-rotate\");},dr.prototype.isEnabled=function(){return this._touchZoom.isEnabled()&&(this._rotationDisabled||this._touchRotate.isEnabled())&&this._tapDragZoom.isEnabled()},dr.prototype.isActive=function(){return this._touchZoom.isActive()||this._touchRotate.isActive()||this._tapDragZoom.isActive()},dr.prototype.disableRotation=function(){this._rotationDisabled=!0,this._touchRotate.disable();},dr.prototype.enableRotation=function(){this._rotationDisabled=!1,this._touchZoom.isEnabled()&&this._touchRotate.enable();};var _r=function(t){return t.zoom||t.drag||t.pitch||t.rotate},fr=function(t){function e(){t.apply(this,arguments);}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e,e}(t.Event);function mr(t){return t.panDelta&&t.panDelta.mag()||t.zoomDelta||t.bearingDelta||t.pitchDelta}var gr=function(e,o){this._map=e,this._el=this._map.getCanvasContainer(),this._handlers=[],this._handlersById={},this._changes=[],this._inertia=new Ao(e),this._bearingSnap=o.bearingSnap,this._previousActiveHandlers={},this._eventsInProgress={},this._addDefaultHandlers(o),t.bindAll([\"handleEvent\",\"handleWindowEvent\"],this);var r=this._el;this._listeners=[[r,\"touchstart\",{passive:!0}],[r,\"touchmove\",{passive:!1}],[r,\"touchend\",void 0],[r,\"touchcancel\",void 0],[r,\"mousedown\",void 0],[r,\"mousemove\",void 0],[r,\"mouseup\",void 0],[t.window.document,\"mousemove\",{capture:!0}],[t.window.document,\"mouseup\",void 0],[r,\"mouseover\",void 0],[r,\"mouseout\",void 0],[r,\"dblclick\",void 0],[r,\"click\",void 0],[r,\"keydown\",{capture:!1}],[r,\"keyup\",void 0],[r,\"wheel\",{passive:!1}],[r,\"contextmenu\",void 0],[t.window,\"blur\",void 0]];for(var a=0,n=this._listeners;a<n.length;a+=1){var s=n[a],l=s[0];i.addEventListener(l,s[1],l===t.window.document?this.handleWindowEvent:this.handleEvent,s[2]);}};gr.prototype.destroy=function(){for(var e=0,o=this._listeners;e<o.length;e+=1){var r=o[e],a=r[0];i.removeEventListener(a,r[1],a===t.window.document?this.handleWindowEvent:this.handleEvent,r[2]);}},gr.prototype._addDefaultHandlers=function(t){var e=this._map,i=e.getCanvasContainer();this._add(\"mapEvent\",new Oo(e,t));var o=e.boxZoom=new Uo(e,t);this._add(\"boxZoom\",o);var r=new jo,a=new cr;e.doubleClickZoom=new lr(a,r),this._add(\"tapZoom\",r),this._add(\"clickZoom\",a);var n=new ur;this._add(\"tapDragZoom\",n);var s=e.touchPitch=new or;this._add(\"touchPitch\",s);var l=new Xo(t),c=new Ho(t);e.dragRotate=new pr(t,l,c),this._add(\"mouseRotate\",l,[\"mousePitch\"]),this._add(\"mousePitch\",c,[\"mouseRotate\"]);var u=new Wo(t),h=new Ko(t);e.dragPan=new hr(i,u,h),this._add(\"mousePan\",u),this._add(\"touchPan\",h,[\"touchZoom\",\"touchRotate\"]);var p=new er,d=new $o;e.touchZoomRotate=new dr(i,d,p,n),this._add(\"touchRotate\",p,[\"touchPan\",\"touchZoom\"]),this._add(\"touchZoom\",d,[\"touchPan\",\"touchRotate\"]);var _=e.scrollZoom=new sr(e,this);this._add(\"scrollZoom\",_,[\"mousePan\"]);var f=e.keyboard=new ar;this._add(\"keyboard\",f),this._add(\"blockableMapEvent\",new Fo(e));for(var m=0,g=[\"boxZoom\",\"doubleClickZoom\",\"tapDragZoom\",\"touchPitch\",\"dragRotate\",\"dragPan\",\"touchZoomRotate\",\"scrollZoom\",\"keyboard\"];m<g.length;m+=1){var v=g[m];t.interactive&&t[v]&&e[v].enable(t[v]);}},gr.prototype._add=function(t,e,i){this._handlers.push({handlerName:t,handler:e,allowed:i}),this._handlersById[t]=e;},gr.prototype.stop=function(t){if(!this._updatingCamera){for(var e=0,i=this._handlers;e<i.length;e+=1)i[e].handler.reset();this._inertia.clear(),this._fireEvents({},{},t),this._changes=[];}},gr.prototype.isActive=function(){for(var t=0,e=this._handlers;t<e.length;t+=1)if(e[t].handler.isActive())return !0;return !1},gr.prototype.isZooming=function(){return !!this._eventsInProgress.zoom||this._map.scrollZoom.isZooming()},gr.prototype.isRotating=function(){return !!this._eventsInProgress.rotate},gr.prototype.isMoving=function(){return Boolean(_r(this._eventsInProgress))||this.isZooming()},gr.prototype._blockedByActive=function(t,e,i){for(var o in t)if(o!==i&&(!e||e.indexOf(o)<0))return !0;return !1},gr.prototype.handleWindowEvent=function(t){this.handleEvent(t,t.type+\"Window\");},gr.prototype._getMapTouches=function(t){for(var e=[],i=0,o=t;i<o.length;i+=1){var r=o[i];this._el.contains(r.target)&&e.push(r);}return e},gr.prototype.handleEvent=function(t,e){this._updatingCamera=!0;for(var o=\"renderFrame\"===t.type?void 0:t,r={needsRenderFrame:!1},a={},n={},s=t.touches?this._getMapTouches(t.touches):void 0,l=s?i.touchPos(this._el,s):i.mousePos(this._el,t),c=0,u=this._handlers;c<u.length;c+=1){var h=u[c],p=h.handlerName,d=h.handler,_=h.allowed;if(d.isEnabled()){var f=void 0;this._blockedByActive(n,_,p)?d.reset():d[e||t.type]&&(f=d[e||t.type](t,l,s),this.mergeHandlerResult(r,a,f,p,o),f&&f.needsRenderFrame&&this._triggerRenderFrame()),(f||d.isActive())&&(n[p]=d);}}var m={};for(var g in this._previousActiveHandlers)n[g]||(m[g]=o);this._previousActiveHandlers=n,(Object.keys(m).length||mr(r))&&(this._changes.push([r,a,m]),this._triggerRenderFrame()),(Object.keys(n).length||mr(r))&&this._map._stop(!0),this._updatingCamera=!1;var v=r.cameraAnimation;v&&(this._inertia.clear(),this._fireEvents({},{},!0),this._changes=[],v(this._map));},gr.prototype.mergeHandlerResult=function(e,i,o,r,a){if(o){t.extend(e,o);var n={handlerName:r,originalEvent:o.originalEvent||a};void 0!==o.zoomDelta&&(i.zoom=n),void 0!==o.panDelta&&(i.drag=n),void 0!==o.pitchDelta&&(i.pitch=n),void 0!==o.bearingDelta&&(i.rotate=n);}},gr.prototype._applyChanges=function(){for(var e={},i={},o={},r=0,a=this._changes;r<a.length;r+=1){var n=a[r],s=n[0],l=n[1],c=n[2];s.panDelta&&(e.panDelta=(e.panDelta||new t.Point(0,0))._add(s.panDelta)),s.zoomDelta&&(e.zoomDelta=(e.zoomDelta||0)+s.zoomDelta),s.bearingDelta&&(e.bearingDelta=(e.bearingDelta||0)+s.bearingDelta),s.pitchDelta&&(e.pitchDelta=(e.pitchDelta||0)+s.pitchDelta),void 0!==s.around&&(e.around=s.around),void 0!==s.pinchAround&&(e.pinchAround=s.pinchAround),s.noInertia&&(e.noInertia=s.noInertia),t.extend(i,l),t.extend(o,c);}this._updateMapTransform(e,i,o),this._changes=[];},gr.prototype._updateMapTransform=function(t,e,i){var o=this._map,r=o.transform;if(!mr(t))return this._fireEvents(e,i,!0);var a=t.panDelta,n=t.zoomDelta,s=t.bearingDelta,l=t.pitchDelta,c=t.around,u=t.pinchAround;void 0!==u&&(c=u),o._stop(!0),c=c||o.transform.centerPoint;var h=r.pointLocation(a?c.sub(a):c);s&&(r.bearing+=s),l&&(r.pitch+=l),n&&(r.zoom+=n),r.setLocationAtPoint(h,c),this._map._update(),t.noInertia||this._inertia.record(t),this._fireEvents(e,i,!0);},gr.prototype._fireEvents=function(e,i,o){var r=this,a=_r(this._eventsInProgress),n=_r(e),s={};for(var l in e)this._eventsInProgress[l]||(s[l+\"start\"]=e[l].originalEvent),this._eventsInProgress[l]=e[l];for(var c in !a&&n&&this._fireEvent(\"movestart\",n.originalEvent),s)this._fireEvent(c,s[c]);for(var u in n&&this._fireEvent(\"move\",n.originalEvent),e)this._fireEvent(u,e[u].originalEvent);var h,p={};for(var d in this._eventsInProgress){var _=this._eventsInProgress[d],f=_.handlerName,m=_.originalEvent;this._handlersById[f].isActive()||(delete this._eventsInProgress[d],p[d+\"end\"]=h=i[f]||m);}for(var g in p)this._fireEvent(g,p[g]);var v=_r(this._eventsInProgress);if(o&&(a||n)&&!v){this._updatingCamera=!0;var y=this._inertia._onMoveEnd(this._map.dragPan._inertiaOptions),x=function(t){return 0!==t&&-r._bearingSnap<t&&t<r._bearingSnap};y?(x(y.bearing||this._map.getBearing())&&(y.bearing=0),this._map.easeTo(y,{originalEvent:h})):(this._map.fire(new t.Event(\"moveend\",{originalEvent:h})),x(this._map.getBearing())&&this._map.resetNorth()),this._updatingCamera=!1;}},gr.prototype._fireEvent=function(e,i){this._map.fire(new t.Event(e,i?{originalEvent:i}:{}));},gr.prototype._requestFrame=function(){var t=this;return this._map.triggerRepaint(),this._map._renderTaskQueue.add((function(e){delete t._frameId,t.handleEvent(new fr(\"renderFrame\",{timeStamp:e})),t._applyChanges();}))},gr.prototype._triggerRenderFrame=function(){void 0===this._frameId&&(this._frameId=this._requestFrame());};var vr=function(e){function i(i,o){e.call(this),this._moving=!1,this._zooming=!1,this.transform=i,this._bearingSnap=o.bearingSnap,t.bindAll([\"_renderFrameCallback\"],this);}return e&&(i.__proto__=e),(i.prototype=Object.create(e&&e.prototype)).constructor=i,i.prototype.getCenter=function(){return new t.LngLat(this.transform.center.lng,this.transform.center.lat)},i.prototype.setCenter=function(t,e){return this.jumpTo({center:t},e)},i.prototype.panBy=function(e,i,o){return e=t.Point.convert(e).mult(-1),this.panTo(this.transform.center,t.extend({offset:e},i),o)},i.prototype.panTo=function(e,i,o){return this.easeTo(t.extend({center:e},i),o)},i.prototype.getZoom=function(){return this.transform.zoom},i.prototype.setZoom=function(t,e){return this.jumpTo({zoom:t},e),this},i.prototype.zoomTo=function(e,i,o){return this.easeTo(t.extend({zoom:e},i),o)},i.prototype.zoomIn=function(t,e){return this.zoomTo(this.getZoom()+1,t,e),this},i.prototype.zoomOut=function(t,e){return this.zoomTo(this.getZoom()-1,t,e),this},i.prototype.getBearing=function(){return this.transform.bearing},i.prototype.setBearing=function(t,e){return this.jumpTo({bearing:t},e),this},i.prototype.getPadding=function(){return this.transform.padding},i.prototype.setPadding=function(t,e){return this.jumpTo({padding:t},e),this},i.prototype.rotateTo=function(e,i,o){return this.easeTo(t.extend({bearing:e},i),o)},i.prototype.resetNorth=function(e,i){return this.rotateTo(0,t.extend({duration:1e3},e),i),this},i.prototype.resetNorthPitch=function(e,i){return this.easeTo(t.extend({bearing:0,pitch:0,duration:1e3},e),i),this},i.prototype.snapToNorth=function(t,e){return Math.abs(this.getBearing())<this._bearingSnap?this.resetNorth(t,e):this},i.prototype.getPitch=function(){return this.transform.pitch},i.prototype.setPitch=function(t,e){return this.jumpTo({pitch:t},e),this},i.prototype.cameraForBounds=function(e,i){e=t.LngLatBounds.convert(e);var o=i&&i.bearing||0;return this._cameraForBoxAndBearing(e.getNorthWest(),e.getSouthEast(),o,i)},i.prototype._cameraForBoxAndBearing=function(e,i,o,r){var a={top:0,bottom:0,right:0,left:0};if(\"number\"==typeof(r=t.extend({padding:a,offset:[0,0],maxZoom:this.transform.maxZoom},r)).padding){var n=r.padding;r.padding={top:n,bottom:n,right:n,left:n};}r.padding=t.extend(a,r.padding);var s=this.transform,l=s.padding,c=s.project(t.LngLat.convert(e)),u=s.project(t.LngLat.convert(i)),h=c.rotate(-o*Math.PI/180),p=u.rotate(-o*Math.PI/180),d=new t.Point(Math.max(h.x,p.x),Math.max(h.y,p.y)),_=new t.Point(Math.min(h.x,p.x),Math.min(h.y,p.y)),f=d.sub(_),m=(s.width-(l.left+l.right+r.padding.left+r.padding.right))/f.x,g=(s.height-(l.top+l.bottom+r.padding.top+r.padding.bottom))/f.y;if(!(g<0||m<0)){var v=Math.min(s.scaleZoom(s.scale*Math.min(m,g)),r.maxZoom),y=\"number\"==typeof r.offset.x?new t.Point(r.offset.x,r.offset.y):t.Point.convert(r.offset),x=new t.Point((r.padding.left-r.padding.right)/2,(r.padding.top-r.padding.bottom)/2).rotate(o*Math.PI/180),b=y.add(x).mult(s.scale/s.zoomScale(v));return {center:s.unproject(c.add(u).div(2).sub(b)),zoom:v,bearing:o}}t.warnOnce(\"Map cannot fit within canvas with the given bounds, padding, and/or offset.\");},i.prototype.fitBounds=function(t,e,i){return this._fitInternal(this.cameraForBounds(t,e),e,i)},i.prototype.fitScreenCoordinates=function(e,i,o,r,a){return this._fitInternal(this._cameraForBoxAndBearing(this.transform.pointLocation(t.Point.convert(e)),this.transform.pointLocation(t.Point.convert(i)),o,r),r,a)},i.prototype._fitInternal=function(e,i,o){return e?(delete(i=t.extend(e,i)).padding,i.linear?this.easeTo(i,o):this.flyTo(i,o)):this},i.prototype.jumpTo=function(e,i){this.stop();var o=this.transform,r=!1,a=!1,n=!1;return \"zoom\"in e&&o.zoom!==+e.zoom&&(r=!0,o.zoom=+e.zoom),void 0!==e.center&&(o.center=t.LngLat.convert(e.center)),\"bearing\"in e&&o.bearing!==+e.bearing&&(a=!0,o.bearing=+e.bearing),\"pitch\"in e&&o.pitch!==+e.pitch&&(n=!0,o.pitch=+e.pitch),null==e.padding||o.isPaddingEqual(e.padding)||(o.padding=e.padding),this.fire(new t.Event(\"movestart\",i)).fire(new t.Event(\"move\",i)),r&&this.fire(new t.Event(\"zoomstart\",i)).fire(new t.Event(\"zoom\",i)).fire(new t.Event(\"zoomend\",i)),a&&this.fire(new t.Event(\"rotatestart\",i)).fire(new t.Event(\"rotate\",i)).fire(new t.Event(\"rotateend\",i)),n&&this.fire(new t.Event(\"pitchstart\",i)).fire(new t.Event(\"pitch\",i)).fire(new t.Event(\"pitchend\",i)),this.fire(new t.Event(\"moveend\",i))},i.prototype.easeTo=function(e,i){var o=this;this._stop(!1,e.easeId),(!1===(e=t.extend({offset:[0,0],duration:500,easing:t.ease},e)).animate||!e.essential&&t.browser.prefersReducedMotion)&&(e.duration=0);var r=this.transform,a=this.getZoom(),n=this.getBearing(),s=this.getPitch(),l=this.getPadding(),c=\"zoom\"in e?+e.zoom:a,u=\"bearing\"in e?this._normalizeBearing(e.bearing,n):n,h=\"pitch\"in e?+e.pitch:s,p=\"padding\"in e?e.padding:r.padding,d=t.Point.convert(e.offset),_=r.centerPoint.add(d),f=r.pointLocation(_),m=t.LngLat.convert(e.center||f);this._normalizeCenter(m);var g,v,y=r.project(f),x=r.project(m).sub(y),b=r.zoomScale(c-a);e.around&&(g=t.LngLat.convert(e.around),v=r.locationPoint(g));var w={moving:this._moving,zooming:this._zooming,rotating:this._rotating,pitching:this._pitching};return this._zooming=this._zooming||c!==a,this._rotating=this._rotating||n!==u,this._pitching=this._pitching||h!==s,this._padding=!r.isPaddingEqual(p),this._easeId=e.easeId,this._prepareEase(i,e.noMoveStart,w),this._ease((function(e){if(o._zooming&&(r.zoom=t.number(a,c,e)),o._rotating&&(r.bearing=t.number(n,u,e)),o._pitching&&(r.pitch=t.number(s,h,e)),o._padding&&(r.interpolatePadding(l,p,e),_=r.centerPoint.add(d)),g)r.setLocationAtPoint(g,v);else {var f=r.zoomScale(r.zoom-a),m=c>a?Math.min(2,b):Math.max(.5,b),w=Math.pow(m,1-e),T=r.unproject(y.add(x.mult(e*w)).mult(f));r.setLocationAtPoint(r.renderWorldCopies?T.wrap():T,_);}o._fireMoveEvents(i);}),(function(t){o._afterEase(i,t);}),e),this},i.prototype._prepareEase=function(e,i,o){void 0===o&&(o={}),this._moving=!0,i||o.moving||this.fire(new t.Event(\"movestart\",e)),this._zooming&&!o.zooming&&this.fire(new t.Event(\"zoomstart\",e)),this._rotating&&!o.rotating&&this.fire(new t.Event(\"rotatestart\",e)),this._pitching&&!o.pitching&&this.fire(new t.Event(\"pitchstart\",e));},i.prototype._fireMoveEvents=function(e){this.fire(new t.Event(\"move\",e)),this._zooming&&this.fire(new t.Event(\"zoom\",e)),this._rotating&&this.fire(new t.Event(\"rotate\",e)),this._pitching&&this.fire(new t.Event(\"pitch\",e));},i.prototype._afterEase=function(e,i){if(!this._easeId||!i||this._easeId!==i){delete this._easeId;var o=this._zooming,r=this._rotating,a=this._pitching;this._moving=!1,this._zooming=!1,this._rotating=!1,this._pitching=!1,this._padding=!1,o&&this.fire(new t.Event(\"zoomend\",e)),r&&this.fire(new t.Event(\"rotateend\",e)),a&&this.fire(new t.Event(\"pitchend\",e)),this.fire(new t.Event(\"moveend\",e));}},i.prototype.flyTo=function(e,i){var o=this;if(!e.essential&&t.browser.prefersReducedMotion){var r=t.pick(e,[\"center\",\"zoom\",\"bearing\",\"pitch\",\"around\"]);return this.jumpTo(r,i)}this.stop(),e=t.extend({offset:[0,0],speed:1.2,curve:1.42,easing:t.ease},e);var a=this.transform,n=this.getZoom(),s=this.getBearing(),l=this.getPitch(),c=this.getPadding(),u=\"zoom\"in e?t.clamp(+e.zoom,a.minZoom,a.maxZoom):n,h=\"bearing\"in e?this._normalizeBearing(e.bearing,s):s,p=\"pitch\"in e?+e.pitch:l,d=\"padding\"in e?e.padding:a.padding,_=a.zoomScale(u-n),f=t.Point.convert(e.offset),m=a.centerPoint.add(f),g=a.pointLocation(m),v=t.LngLat.convert(e.center||g);this._normalizeCenter(v);var y=a.project(g),x=a.project(v).sub(y),b=e.curve,w=Math.max(a.width,a.height),T=w/_,E=x.mag();if(\"minZoom\"in e){var I=t.clamp(Math.min(e.minZoom,n,u),a.minZoom,a.maxZoom),P=w/a.zoomScale(I-n);b=Math.sqrt(P/E*2);}var S=b*b;function C(t){var e=(T*T-w*w+(t?-1:1)*S*S*E*E)/(2*(t?T:w)*S*E);return Math.log(Math.sqrt(e*e+1)-e)}function z(t){return (Math.exp(t)-Math.exp(-t))/2}function D(t){return (Math.exp(t)+Math.exp(-t))/2}var A=C(0),M=function(t){return D(A)/D(A+b*t)},L=function(t){return w*((D(A)*(z(e=A+b*t)/D(e))-z(A))/S)/E;var e;},R=(C(1)-A)/b;if(Math.abs(E)<1e-6||!isFinite(R)){if(Math.abs(w-T)<1e-6)return this.easeTo(e,i);var k=T<w?-1:1;R=Math.abs(Math.log(T/w))/b,L=function(){return 0},M=function(t){return Math.exp(k*b*t)};}return e.duration=\"duration\"in e?+e.duration:1e3*R/(\"screenSpeed\"in e?+e.screenSpeed/b:+e.speed),e.maxDuration&&e.duration>e.maxDuration&&(e.duration=0),this._zooming=!0,this._rotating=s!==h,this._pitching=p!==l,this._padding=!a.isPaddingEqual(d),this._prepareEase(i,!1),this._ease((function(e){var r=e*R,_=1/M(r);a.zoom=1===e?u:n+a.scaleZoom(_),o._rotating&&(a.bearing=t.number(s,h,e)),o._pitching&&(a.pitch=t.number(l,p,e)),o._padding&&(a.interpolatePadding(c,d,e),m=a.centerPoint.add(f));var g=1===e?v:a.unproject(y.add(x.mult(L(r))).mult(_));a.setLocationAtPoint(a.renderWorldCopies?g.wrap():g,m),o._fireMoveEvents(i);}),(function(){return o._afterEase(i)}),e),this},i.prototype.isEasing=function(){return !!this._easeFrameId},i.prototype.stop=function(){return this._stop()},i.prototype._stop=function(t,e){if(this._easeFrameId&&(this._cancelRenderFrame(this._easeFrameId),delete this._easeFrameId,delete this._onEaseFrame),this._onEaseEnd){var i=this._onEaseEnd;delete this._onEaseEnd,i.call(this,e);}if(!t){var o=this.handlers;o&&o.stop(!1);}return this},i.prototype._ease=function(e,i,o){!1===o.animate||0===o.duration?(e(1),i()):(this._easeStart=t.browser.now(),this._easeOptions=o,this._onEaseFrame=e,this._onEaseEnd=i,this._easeFrameId=this._requestRenderFrame(this._renderFrameCallback));},i.prototype._renderFrameCallback=function(){var e=Math.min((t.browser.now()-this._easeStart)/this._easeOptions.duration,1);this._onEaseFrame(this._easeOptions.easing(e)),e<1?this._easeFrameId=this._requestRenderFrame(this._renderFrameCallback):this.stop();},i.prototype._normalizeBearing=function(e,i){e=t.wrap(e,-180,180);var o=Math.abs(e-i);return Math.abs(e-360-i)<o&&(e-=360),Math.abs(e+360-i)<o&&(e+=360),e},i.prototype._normalizeCenter=function(t){var e=this.transform;if(e.renderWorldCopies&&!e.lngRange){var i=t.lng-e.center.lng;t.lng+=i>180?-360:i<-180?360:0;}},i}(t.Evented),yr=function(e){void 0===e&&(e={}),this.options=e,t.bindAll([\"_toggleAttribution\",\"_updateEditLink\",\"_updateData\",\"_updateCompact\"],this);};yr.prototype.getDefaultPosition=function(){return \"bottom-right\"},yr.prototype.onAdd=function(t){var e=this.options&&this.options.compact;return this._map=t,this._container=i.create(\"div\",\"mapboxgl-ctrl mapboxgl-ctrl-attrib\"),this._compactButton=i.create(\"button\",\"mapboxgl-ctrl-attrib-button\",this._container),this._compactButton.addEventListener(\"click\",this._toggleAttribution),this._setElementTitle(this._compactButton,\"ToggleAttribution\"),this._innerContainer=i.create(\"div\",\"mapboxgl-ctrl-attrib-inner\",this._container),this._innerContainer.setAttribute(\"role\",\"list\"),e&&this._container.classList.add(\"mapboxgl-compact\"),this._updateAttributions(),this._updateEditLink(),this._map.on(\"styledata\",this._updateData),this._map.on(\"sourcedata\",this._updateData),this._map.on(\"moveend\",this._updateEditLink),void 0===e&&(this._map.on(\"resize\",this._updateCompact),this._updateCompact()),this._container},yr.prototype.onRemove=function(){i.remove(this._container),this._map.off(\"styledata\",this._updateData),this._map.off(\"sourcedata\",this._updateData),this._map.off(\"moveend\",this._updateEditLink),this._map.off(\"resize\",this._updateCompact),this._map=void 0,this._attribHTML=void 0;},yr.prototype._setElementTitle=function(t,e){var i=this._map._getUIString(\"AttributionControl.\"+e);t.title=i,t.setAttribute(\"aria-label\",i);},yr.prototype._toggleAttribution=function(){this._container.classList.contains(\"mapboxgl-compact-show\")?(this._container.classList.remove(\"mapboxgl-compact-show\"),this._compactButton.setAttribute(\"aria-pressed\",\"false\")):(this._container.classList.add(\"mapboxgl-compact-show\"),this._compactButton.setAttribute(\"aria-pressed\",\"true\"));},yr.prototype._updateEditLink=function(){var e=this._editLink;e||(e=this._editLink=this._container.querySelector(\".mapbox-improve-map\"));var i=[{key:\"owner\",value:this.styleOwner},{key:\"id\",value:this.styleId},{key:\"access_token\",value:this._map._requestManager._customAccessToken||t.config.ACCESS_TOKEN}];if(e){var o=i.reduce((function(t,e,o){return e.value&&(t+=e.key+\"=\"+e.value+(o<i.length-1?\"&\":\"\")),t}),\"?\");e.href=t.config.FEEDBACK_URL+\"/\"+o+(this._map._hash?this._map._hash.getHashString(!0):\"\"),e.rel=\"noopener nofollow\",this._setElementTitle(e,\"MapFeedback\");}},yr.prototype._updateData=function(t){!t||\"metadata\"!==t.sourceDataType&&\"visibility\"!==t.sourceDataType&&\"style\"!==t.dataType||(this._updateAttributions(),this._updateEditLink());},yr.prototype._updateAttributions=function(){if(this._map.style){var t=[];if(this.options.customAttribution&&(Array.isArray(this.options.customAttribution)?t=t.concat(this.options.customAttribution.map((function(t){return \"string\"!=typeof t?\"\":t}))):\"string\"==typeof this.options.customAttribution&&t.push(this.options.customAttribution)),this._map.style.stylesheet){var e=this._map.style.stylesheet;this.styleOwner=e.owner,this.styleId=e.id;}var i=this._map.style.sourceCaches;for(var o in i){var r=i[o];if(r.used){var a=r.getSource();a.attribution&&t.indexOf(a.attribution)<0&&t.push(a.attribution);}}t.sort((function(t,e){return t.length-e.length}));var n=(t=t.filter((function(e,i){for(var o=i+1;o<t.length;o++)if(t[o].indexOf(e)>=0)return !1;return !0}))).join(\" | \");n!==this._attribHTML&&(this._attribHTML=n,t.length?(this._innerContainer.innerHTML=n,this._container.classList.remove(\"mapboxgl-attrib-empty\")):this._container.classList.add(\"mapboxgl-attrib-empty\"),this._editLink=null);}},yr.prototype._updateCompact=function(){this._map.getCanvasContainer().offsetWidth<=640?this._container.classList.add(\"mapboxgl-compact\"):this._container.classList.remove(\"mapboxgl-compact\",\"mapboxgl-compact-show\");};var xr=function(){t.bindAll([\"_updateLogo\"],this),t.bindAll([\"_updateCompact\"],this);};xr.prototype.onAdd=function(t){this._map=t,this._container=i.create(\"div\",\"mapboxgl-ctrl\");var e=i.create(\"a\",\"mapboxgl-ctrl-logo\");return e.target=\"_blank\",e.rel=\"noopener nofollow\",e.href=\"https://www.mapbox.com/\",e.setAttribute(\"aria-label\",this._map._getUIString(\"LogoControl.Title\")),e.setAttribute(\"rel\",\"noopener nofollow\"),this._container.appendChild(e),this._container.style.display=\"none\",this._map.on(\"sourcedata\",this._updateLogo),this._updateLogo(),this._map.on(\"resize\",this._updateCompact),this._updateCompact(),this._container},xr.prototype.onRemove=function(){i.remove(this._container),this._map.off(\"sourcedata\",this._updateLogo),this._map.off(\"resize\",this._updateCompact);},xr.prototype.getDefaultPosition=function(){return \"bottom-left\"},xr.prototype._updateLogo=function(t){t&&\"metadata\"!==t.sourceDataType||(this._container.style.display=this._logoRequired()?\"block\":\"none\");},xr.prototype._logoRequired=function(){if(this._map.style){var t=this._map.style.sourceCaches;for(var e in t)if(t[e].getSource().mapbox_logo)return !0;return !1}},xr.prototype._updateCompact=function(){var t=this._container.children;if(t.length){var e=t[0];this._map.getCanvasContainer().offsetWidth<250?e.classList.add(\"mapboxgl-compact\"):e.classList.remove(\"mapboxgl-compact\");}};var br=function(){this._queue=[],this._id=0,this._cleared=!1,this._currentlyRunning=!1;};br.prototype.add=function(t){var e=++this._id;return this._queue.push({callback:t,id:e,cancelled:!1}),e},br.prototype.remove=function(t){for(var e=this._currentlyRunning,i=0,o=e?this._queue.concat(e):this._queue;i<o.length;i+=1){var r=o[i];if(r.id===t)return void(r.cancelled=!0)}},br.prototype.run=function(t){void 0===t&&(t=0);var e=this._currentlyRunning=this._queue;this._queue=[];for(var i=0,o=e;i<o.length;i+=1){var r=o[i];if(!r.cancelled&&(r.callback(t),this._cleared))break}this._cleared=!1,this._currentlyRunning=!1;},br.prototype.clear=function(){this._currentlyRunning&&(this._cleared=!0),this._queue=[];};var wr={\"AttributionControl.ToggleAttribution\":\"Toggle attribution\",\"AttributionControl.MapFeedback\":\"Map feedback\",\"FullscreenControl.Enter\":\"Enter fullscreen\",\"FullscreenControl.Exit\":\"Exit fullscreen\",\"GeolocateControl.FindMyLocation\":\"Find my location\",\"GeolocateControl.LocationNotAvailable\":\"Location not available\",\"LogoControl.Title\":\"Mapbox logo\",\"NavigationControl.ResetBearing\":\"Reset bearing to north\",\"NavigationControl.ZoomIn\":\"Zoom in\",\"NavigationControl.ZoomOut\":\"Zoom out\",\"ScaleControl.Feet\":\"ft\",\"ScaleControl.Meters\":\"m\",\"ScaleControl.Kilometers\":\"km\",\"ScaleControl.Miles\":\"mi\",\"ScaleControl.NauticalMiles\":\"nm\"},Tr=t.window.HTMLImageElement,Er=t.window.HTMLElement,Ir=t.window.ImageBitmap,Pr={center:[0,0],zoom:0,bearing:0,pitch:0,minZoom:-2,maxZoom:22,minPitch:0,maxPitch:60,interactive:!0,scrollZoom:!0,boxZoom:!0,dragRotate:!0,dragPan:!0,keyboard:!0,doubleClickZoom:!0,touchZoomRotate:!0,touchPitch:!0,bearingSnap:7,clickTolerance:3,pitchWithRotate:!0,hash:!1,attributionControl:!0,failIfMajorPerformanceCaveat:!1,preserveDrawingBuffer:!1,trackResize:!0,renderWorldCopies:!0,refreshExpiredTiles:!0,maxTileCacheSize:null,localIdeographFontFamily:\"sans-serif\",transformRequest:null,accessToken:null,fadeDuration:300,crossSourceCollisions:!0},Sr=function(o){function r(e){var i=this;if(null!=(e=t.extend({},Pr,e)).minZoom&&null!=e.maxZoom&&e.minZoom>e.maxZoom)throw new Error(\"maxZoom must be greater than or equal to minZoom\");if(null!=e.minPitch&&null!=e.maxPitch&&e.minPitch>e.maxPitch)throw new Error(\"maxPitch must be greater than or equal to minPitch\");if(null!=e.minPitch&&e.minPitch<0)throw new Error(\"minPitch must be greater than or equal to 0\");if(null!=e.maxPitch&&e.maxPitch>60)throw new Error(\"maxPitch must be less than or equal to 60\");var r=new To(e.minZoom,e.maxZoom,e.minPitch,e.maxPitch,e.renderWorldCopies);if(o.call(this,r,e),this._interactive=e.interactive,this._maxTileCacheSize=e.maxTileCacheSize,this._failIfMajorPerformanceCaveat=e.failIfMajorPerformanceCaveat,this._preserveDrawingBuffer=e.preserveDrawingBuffer,this._antialias=e.antialias,this._trackResize=e.trackResize,this._bearingSnap=e.bearingSnap,this._refreshExpiredTiles=e.refreshExpiredTiles,this._fadeDuration=e.fadeDuration,this._crossSourceCollisions=e.crossSourceCollisions,this._crossFadingFactor=1,this._collectResourceTiming=e.collectResourceTiming,this._renderTaskQueue=new br,this._controls=[],this._mapId=t.uniqueId(),this._locale=t.extend({},wr,e.locale),this._clickTolerance=e.clickTolerance,this._requestManager=new t.RequestManager(e.transformRequest,e.accessToken),\"string\"==typeof e.container){if(this._container=t.window.document.getElementById(e.container),!this._container)throw new Error(\"Container '\"+e.container+\"' not found.\")}else {if(!(e.container instanceof Er))throw new Error(\"Invalid type: 'container' must be a String or HTMLElement.\");this._container=e.container;}if(e.maxBounds&&this.setMaxBounds(e.maxBounds),t.bindAll([\"_onWindowOnline\",\"_onWindowResize\",\"_onMapScroll\",\"_contextLost\",\"_contextRestored\"],this),this._setupContainer(),this._setupPainter(),void 0===this.painter)throw new Error(\"Failed to initialize WebGL.\");this.on(\"move\",(function(){return i._update(!1)})),this.on(\"moveend\",(function(){return i._update(!1)})),this.on(\"zoom\",(function(){return i._update(!0)})),void 0!==t.window&&(t.window.addEventListener(\"online\",this._onWindowOnline,!1),t.window.addEventListener(\"resize\",this._onWindowResize,!1),t.window.addEventListener(\"orientationchange\",this._onWindowResize,!1)),this.handlers=new gr(this,e),this._hash=e.hash&&new Io(\"string\"==typeof e.hash&&e.hash||void 0).addTo(this),this._hash&&this._hash._onHashChange()||(this.jumpTo({center:e.center,zoom:e.zoom,bearing:e.bearing,pitch:e.pitch}),e.bounds&&(this.resize(),this.fitBounds(e.bounds,t.extend({},e.fitBoundsOptions,{duration:0})))),this.resize(),this._localIdeographFontFamily=e.localIdeographFontFamily,e.style&&this.setStyle(e.style,{localIdeographFontFamily:e.localIdeographFontFamily}),e.attributionControl&&this.addControl(new yr({customAttribution:e.customAttribution})),this.addControl(new xr,e.logoPosition),this.on(\"style.load\",(function(){i.transform.unmodified&&i.jumpTo(i.style.stylesheet);})),this.on(\"data\",(function(e){i._update(\"style\"===e.dataType),i.fire(new t.Event(e.dataType+\"data\",e));})),this.on(\"dataloading\",(function(e){i.fire(new t.Event(e.dataType+\"dataloading\",e));}));}o&&(r.__proto__=o),(r.prototype=Object.create(o&&o.prototype)).constructor=r;var a={showTileBoundaries:{configurable:!0},showPadding:{configurable:!0},showCollisionBoxes:{configurable:!0},showOverdrawInspector:{configurable:!0},repaint:{configurable:!0},vertices:{configurable:!0},version:{configurable:!0}};return r.prototype._getMapId=function(){return this._mapId},r.prototype.addControl=function(e,i){if(void 0===i&&(i=e.getDefaultPosition?e.getDefaultPosition():\"top-right\"),!e||!e.onAdd)return this.fire(new t.ErrorEvent(new Error(\"Invalid argument to map.addControl(). Argument must be a control with onAdd and onRemove methods.\")));var o=e.onAdd(this);this._controls.push(e);var r=this._controlPositions[i];return -1!==i.indexOf(\"bottom\")?r.insertBefore(o,r.firstChild):r.appendChild(o),this},r.prototype.removeControl=function(e){if(!e||!e.onRemove)return this.fire(new t.ErrorEvent(new Error(\"Invalid argument to map.removeControl(). Argument must be a control with onAdd and onRemove methods.\")));var i=this._controls.indexOf(e);return i>-1&&this._controls.splice(i,1),e.onRemove(this),this},r.prototype.hasControl=function(t){return this._controls.indexOf(t)>-1},r.prototype.resize=function(e){var i=this._containerDimensions(),o=i[0],r=i[1];if(o===this.transform.width&&r===this.transform.height)return this;this._resizeCanvas(o,r),this.transform.resize(o,r),this.painter.resize(o,r);var a=!this._moving;return a&&this.fire(new t.Event(\"movestart\",e)).fire(new t.Event(\"move\",e)),this.fire(new t.Event(\"resize\",e)),a&&this.fire(new t.Event(\"moveend\",e)),this},r.prototype.getBounds=function(){return this.transform.getBounds()},r.prototype.getMaxBounds=function(){return this.transform.getMaxBounds()},r.prototype.setMaxBounds=function(e){return this.transform.setMaxBounds(t.LngLatBounds.convert(e)),this._update()},r.prototype.setMinZoom=function(t){if((t=null==t?-2:t)>=-2&&t<=this.transform.maxZoom)return this.transform.minZoom=t,this._update(),this.getZoom()<t&&this.setZoom(t),this;throw new Error(\"minZoom must be between -2 and the current maxZoom, inclusive\")},r.prototype.getMinZoom=function(){return this.transform.minZoom},r.prototype.setMaxZoom=function(t){if((t=null==t?22:t)>=this.transform.minZoom)return this.transform.maxZoom=t,this._update(),this.getZoom()>t&&this.setZoom(t),this;throw new Error(\"maxZoom must be greater than the current minZoom\")},r.prototype.getMaxZoom=function(){return this.transform.maxZoom},r.prototype.setMinPitch=function(t){if((t=null==t?0:t)<0)throw new Error(\"minPitch must be greater than or equal to 0\");if(t>=0&&t<=this.transform.maxPitch)return this.transform.minPitch=t,this._update(),this.getPitch()<t&&this.setPitch(t),this;throw new Error(\"minPitch must be between 0 and the current maxPitch, inclusive\")},r.prototype.getMinPitch=function(){return this.transform.minPitch},r.prototype.setMaxPitch=function(t){if((t=null==t?60:t)>60)throw new Error(\"maxPitch must be less than or equal to 60\");if(t>=this.transform.minPitch)return this.transform.maxPitch=t,this._update(),this.getPitch()>t&&this.setPitch(t),this;throw new Error(\"maxPitch must be greater than the current minPitch\")},r.prototype.getMaxPitch=function(){return this.transform.maxPitch},r.prototype.getRenderWorldCopies=function(){return this.transform.renderWorldCopies},r.prototype.setRenderWorldCopies=function(t){return this.transform.renderWorldCopies=t,this._update()},r.prototype.project=function(e){return this.transform.locationPoint(t.LngLat.convert(e))},r.prototype.unproject=function(e){return this.transform.pointLocation(t.Point.convert(e))},r.prototype.isMoving=function(){return this._moving||this.handlers.isMoving()},r.prototype.isZooming=function(){return this._zooming||this.handlers.isZooming()},r.prototype.isRotating=function(){return this._rotating||this.handlers.isRotating()},r.prototype._createDelegatedListener=function(t,e,i){var o,r=this;if(\"mouseenter\"===t||\"mouseover\"===t){var a=!1;return {layer:e,listener:i,delegates:{mousemove:function(o){var n=r.getLayer(e)?r.queryRenderedFeatures(o.point,{layers:[e]}):[];n.length?a||(a=!0,i.call(r,new Ro(t,r,o.originalEvent,{features:n}))):a=!1;},mouseout:function(){a=!1;}}}}if(\"mouseleave\"===t||\"mouseout\"===t){var n=!1;return {layer:e,listener:i,delegates:{mousemove:function(o){(r.getLayer(e)?r.queryRenderedFeatures(o.point,{layers:[e]}):[]).length?n=!0:n&&(n=!1,i.call(r,new Ro(t,r,o.originalEvent)));},mouseout:function(e){n&&(n=!1,i.call(r,new Ro(t,r,e.originalEvent)));}}}}return {layer:e,listener:i,delegates:(o={},o[t]=function(t){var o=r.getLayer(e)?r.queryRenderedFeatures(t.point,{layers:[e]}):[];o.length&&(t.features=o,i.call(r,t),delete t.features);},o)}},r.prototype.on=function(t,e,i){if(void 0===i)return o.prototype.on.call(this,t,e);var r=this._createDelegatedListener(t,e,i);for(var a in this._delegatedListeners=this._delegatedListeners||{},this._delegatedListeners[t]=this._delegatedListeners[t]||[],this._delegatedListeners[t].push(r),r.delegates)this.on(a,r.delegates[a]);return this},r.prototype.once=function(t,e,i){if(void 0===i)return o.prototype.once.call(this,t,e);var r=this._createDelegatedListener(t,e,i);for(var a in r.delegates)this.once(a,r.delegates[a]);return this},r.prototype.off=function(t,e,i){var r=this;return void 0===i?o.prototype.off.call(this,t,e):(this._delegatedListeners&&this._delegatedListeners[t]&&function(o){for(var a=o[t],n=0;n<a.length;n++){var s=a[n];if(s.layer===e&&s.listener===i){for(var l in s.delegates)r.off(l,s.delegates[l]);return a.splice(n,1),r}}}(this._delegatedListeners),this)},r.prototype.queryRenderedFeatures=function(e,i){if(!this.style)return [];var o;if(void 0!==i||void 0===e||e instanceof t.Point||Array.isArray(e)||(i=e,e=void 0),i=i||{},(e=e||[[0,0],[this.transform.width,this.transform.height]])instanceof t.Point||\"number\"==typeof e[0])o=[t.Point.convert(e)];else {var r=t.Point.convert(e[0]),a=t.Point.convert(e[1]);o=[r,new t.Point(a.x,r.y),a,new t.Point(r.x,a.y),r];}return this.style.queryRenderedFeatures(o,i,this.transform)},r.prototype.querySourceFeatures=function(t,e){return this.style.querySourceFeatures(t,e)},r.prototype.setStyle=function(e,i){return !1!==(i=t.extend({},{localIdeographFontFamily:this._localIdeographFontFamily},i)).diff&&i.localIdeographFontFamily===this._localIdeographFontFamily&&this.style&&e?(this._diffStyle(e,i),this):(this._localIdeographFontFamily=i.localIdeographFontFamily,this._updateStyle(e,i))},r.prototype._getUIString=function(t){var e=this._locale[t];if(null==e)throw new Error(\"Missing UI string '\"+t+\"'\");return e},r.prototype._updateStyle=function(t,e){return this.style&&(this.style.setEventedParent(null),this.style._remove()),t?(this.style=new je(this,e||{}),this.style.setEventedParent(this,{style:this.style}),\"string\"==typeof t?this.style.loadURL(t):this.style.loadJSON(t),this):(delete this.style,this)},r.prototype._lazyInitEmptyStyle=function(){this.style||(this.style=new je(this,{}),this.style.setEventedParent(this,{style:this.style}),this.style.loadEmpty());},r.prototype._diffStyle=function(e,i){var o=this;if(\"string\"==typeof e){var r=this._requestManager.normalizeStyleURL(e),a=this._requestManager.transformRequest(r,t.ResourceType.Style);t.getJSON(a,(function(e,r){e?o.fire(new t.ErrorEvent(e)):r&&o._updateDiff(r,i);}));}else \"object\"==typeof e&&this._updateDiff(e,i);},r.prototype._updateDiff=function(e,i){try{this.style.setState(e)&&this._update(!0);}catch(o){t.warnOnce(\"Unable to perform style diff: \"+(o.message||o.error||o)+\".  Rebuilding the style from scratch.\"),this._updateStyle(e,i);}},r.prototype.getStyle=function(){if(this.style)return this.style.serialize()},r.prototype.isStyleLoaded=function(){return this.style?this.style.loaded():t.warnOnce(\"There is no style added to the map.\")},r.prototype.addSource=function(t,e){return this._lazyInitEmptyStyle(),this.style.addSource(t,e),this._update(!0)},r.prototype.isSourceLoaded=function(e){var i=this.style&&this.style.sourceCaches[e];if(void 0!==i)return i.loaded();this.fire(new t.ErrorEvent(new Error(\"There is no source with ID '\"+e+\"'\")));},r.prototype.areTilesLoaded=function(){var t=this.style&&this.style.sourceCaches;for(var e in t){var i=t[e]._tiles;for(var o in i){var r=i[o];if(\"loaded\"!==r.state&&\"errored\"!==r.state)return !1}}return !0},r.prototype.addSourceType=function(t,e,i){return this._lazyInitEmptyStyle(),this.style.addSourceType(t,e,i)},r.prototype.removeSource=function(t){return this.style.removeSource(t),this._update(!0)},r.prototype.getSource=function(t){return this.style.getSource(t)},r.prototype.addImage=function(e,i,o){void 0===o&&(o={});var r=o.pixelRatio;void 0===r&&(r=1);var a=o.sdf;void 0===a&&(a=!1);var n=o.stretchX,s=o.stretchY,l=o.content;if(this._lazyInitEmptyStyle(),i instanceof Tr||Ir&&i instanceof Ir){var c=t.browser.getImageData(i);this.style.addImage(e,{data:new t.RGBAImage({width:c.width,height:c.height},c.data),pixelRatio:r,stretchX:n,stretchY:s,content:l,sdf:a,version:0});}else {if(void 0===i.width||void 0===i.height)return this.fire(new t.ErrorEvent(new Error(\"Invalid arguments to map.addImage(). The second argument must be an `HTMLImageElement`, `ImageData`, `ImageBitmap`, or object with `width`, `height`, and `data` properties with the same format as `ImageData`\")));var u=i;this.style.addImage(e,{data:new t.RGBAImage({width:i.width,height:i.height},new Uint8Array(i.data)),pixelRatio:r,stretchX:n,stretchY:s,content:l,sdf:a,version:0,userImage:u}),u.onAdd&&u.onAdd(this,e);}},r.prototype.updateImage=function(e,i){var o=this.style.getImage(e);if(!o)return this.fire(new t.ErrorEvent(new Error(\"The map has no image with that id. If you are adding a new image use `map.addImage(...)` instead.\")));var r=i instanceof Tr||Ir&&i instanceof Ir?t.browser.getImageData(i):i,a=r.width,n=r.height,s=r.data;return void 0===a||void 0===n?this.fire(new t.ErrorEvent(new Error(\"Invalid arguments to map.updateImage(). The second argument must be an `HTMLImageElement`, `ImageData`, `ImageBitmap`, or object with `width`, `height`, and `data` properties with the same format as `ImageData`\"))):a!==o.data.width||n!==o.data.height?this.fire(new t.ErrorEvent(new Error(\"The width and height of the updated image must be that same as the previous version of the image\"))):(o.data.replace(s,!(i instanceof Tr||Ir&&i instanceof Ir)),void this.style.updateImage(e,o))},r.prototype.hasImage=function(e){return e?!!this.style.getImage(e):(this.fire(new t.ErrorEvent(new Error(\"Missing required image id\"))),!1)},r.prototype.removeImage=function(t){this.style.removeImage(t);},r.prototype.loadImage=function(e,i){t.getImage(this._requestManager.transformRequest(e,t.ResourceType.Image),i);},r.prototype.listImages=function(){return this.style.listImages()},r.prototype.addLayer=function(t,e){return this._lazyInitEmptyStyle(),this.style.addLayer(t,e),this._update(!0)},r.prototype.moveLayer=function(t,e){return this.style.moveLayer(t,e),this._update(!0)},r.prototype.removeLayer=function(t){return this.style.removeLayer(t),this._update(!0)},r.prototype.getLayer=function(t){return this.style.getLayer(t)},r.prototype.setLayerZoomRange=function(t,e,i){return this.style.setLayerZoomRange(t,e,i),this._update(!0)},r.prototype.setFilter=function(t,e,i){return void 0===i&&(i={}),this.style.setFilter(t,e,i),this._update(!0)},r.prototype.getFilter=function(t){return this.style.getFilter(t)},r.prototype.setPaintProperty=function(t,e,i,o){return void 0===o&&(o={}),this.style.setPaintProperty(t,e,i,o),this._update(!0)},r.prototype.getPaintProperty=function(t,e){return this.style.getPaintProperty(t,e)},r.prototype.setLayoutProperty=function(t,e,i,o){return void 0===o&&(o={}),this.style.setLayoutProperty(t,e,i,o),this._update(!0)},r.prototype.getLayoutProperty=function(t,e){return this.style.getLayoutProperty(t,e)},r.prototype.setLight=function(t,e){return void 0===e&&(e={}),this._lazyInitEmptyStyle(),this.style.setLight(t,e),this._update(!0)},r.prototype.getLight=function(){return this.style.getLight()},r.prototype.setFeatureState=function(t,e){return this.style.setFeatureState(t,e),this._update()},r.prototype.removeFeatureState=function(t,e){return this.style.removeFeatureState(t,e),this._update()},r.prototype.getFeatureState=function(t){return this.style.getFeatureState(t)},r.prototype.getContainer=function(){return this._container},r.prototype.getCanvasContainer=function(){return this._canvasContainer},r.prototype.getCanvas=function(){return this._canvas},r.prototype._containerDimensions=function(){var t=0,e=0;return this._container&&(t=this._container.clientWidth||400,e=this._container.clientHeight||300),[t,e]},r.prototype._detectMissingCSS=function(){\"rgb(250, 128, 114)\"!==t.window.getComputedStyle(this._missingCSSCanary).getPropertyValue(\"background-color\")&&t.warnOnce(\"This page appears to be missing CSS declarations for Mapbox GL JS, which may cause the map to display incorrectly. Please ensure your page includes mapbox-gl.css, as described in https://www.mapbox.com/mapbox-gl-js/api/.\");},r.prototype._setupContainer=function(){var t=this._container;t.classList.add(\"mapboxgl-map\"),(this._missingCSSCanary=i.create(\"div\",\"mapboxgl-canary\",t)).style.visibility=\"hidden\",this._detectMissingCSS();var e=this._canvasContainer=i.create(\"div\",\"mapboxgl-canvas-container\",t);this._interactive&&e.classList.add(\"mapboxgl-interactive\"),this._canvas=i.create(\"canvas\",\"mapboxgl-canvas\",e),this._canvas.addEventListener(\"webglcontextlost\",this._contextLost,!1),this._canvas.addEventListener(\"webglcontextrestored\",this._contextRestored,!1),this._canvas.setAttribute(\"tabindex\",\"0\"),this._canvas.setAttribute(\"aria-label\",\"Map\"),this._canvas.setAttribute(\"role\",\"region\");var o=this._containerDimensions();this._resizeCanvas(o[0],o[1]);var r=this._controlContainer=i.create(\"div\",\"mapboxgl-control-container\",t),a=this._controlPositions={};[\"top-left\",\"top-right\",\"bottom-left\",\"bottom-right\"].forEach((function(t){a[t]=i.create(\"div\",\"mapboxgl-ctrl-\"+t,r);})),this._container.addEventListener(\"scroll\",this._onMapScroll,!1);},r.prototype._resizeCanvas=function(e,i){var o=t.browser.devicePixelRatio||1;this._canvas.width=o*e,this._canvas.height=o*i,this._canvas.style.width=e+\"px\",this._canvas.style.height=i+\"px\";},r.prototype._setupPainter=function(){var i=t.extend({},e.webGLContextAttributes,{failIfMajorPerformanceCaveat:this._failIfMajorPerformanceCaveat,preserveDrawingBuffer:this._preserveDrawingBuffer,antialias:this._antialias||!1}),o=this._canvas.getContext(\"webgl\",i)||this._canvas.getContext(\"experimental-webgl\",i);o?(this.painter=new yo(o,this.transform),t.webpSupported.testSupport(o)):this.fire(new t.ErrorEvent(new Error(\"Failed to initialize WebGL\")));},r.prototype._contextLost=function(e){e.preventDefault(),this._frame&&(this._frame.cancel(),this._frame=null),this.fire(new t.Event(\"webglcontextlost\",{originalEvent:e}));},r.prototype._contextRestored=function(e){this._setupPainter(),this.resize(),this._update(),this.fire(new t.Event(\"webglcontextrestored\",{originalEvent:e}));},r.prototype._onMapScroll=function(t){if(t.target===this._container)return this._container.scrollTop=0,this._container.scrollLeft=0,!1},r.prototype.loaded=function(){return !this._styleDirty&&!this._sourcesDirty&&!!this.style&&this.style.loaded()},r.prototype._update=function(t){return this.style?(this._styleDirty=this._styleDirty||t,this._sourcesDirty=!0,this.triggerRepaint(),this):this},r.prototype._requestRenderFrame=function(t){return this._update(),this._renderTaskQueue.add(t)},r.prototype._cancelRenderFrame=function(t){this._renderTaskQueue.remove(t);},r.prototype._render=function(e){var i,o=this,r=0,a=this.painter.context.extTimerQuery;if(this.listens(\"gpu-timing-frame\")&&(i=a.createQueryEXT(),a.beginQueryEXT(a.TIME_ELAPSED_EXT,i),r=t.browser.now()),this.painter.context.setDirty(),this.painter.setBaseState(),this._renderTaskQueue.run(e),!this._removed){var n=!1;if(this.style&&this._styleDirty){this._styleDirty=!1;var s=this.transform.zoom,l=t.browser.now();this.style.zoomHistory.update(s,l);var c=new t.EvaluationParameters(s,{now:l,fadeDuration:this._fadeDuration,zoomHistory:this.style.zoomHistory,transition:this.style.getTransition()}),u=c.crossFadingFactor();1===u&&u===this._crossFadingFactor||(n=!0,this._crossFadingFactor=u),this.style.update(c);}if(this.style&&this._sourcesDirty&&(this._sourcesDirty=!1,this.style._updateSources(this.transform)),this._placementDirty=this.style&&this.style._updatePlacement(this.painter.transform,this.showCollisionBoxes,this._fadeDuration,this._crossSourceCollisions),this.painter.render(this.style,{showTileBoundaries:this.showTileBoundaries,showOverdrawInspector:this._showOverdrawInspector,rotating:this.isRotating(),zooming:this.isZooming(),moving:this.isMoving(),fadeDuration:this._fadeDuration,showPadding:this.showPadding,gpuTiming:!!this.listens(\"gpu-timing-layer\")}),this.fire(new t.Event(\"render\")),this.loaded()&&!this._loaded&&(this._loaded=!0,this.fire(new t.Event(\"load\"))),this.style&&(this.style.hasTransitions()||n)&&(this._styleDirty=!0),this.style&&!this._placementDirty&&this.style._releaseSymbolFadeTiles(),this.listens(\"gpu-timing-frame\")){var h=t.browser.now()-r;a.endQueryEXT(a.TIME_ELAPSED_EXT,i),setTimeout((function(){var e=a.getQueryObjectEXT(i,a.QUERY_RESULT_EXT)/1e6;a.deleteQueryEXT(i),o.fire(new t.Event(\"gpu-timing-frame\",{cpuTime:h,gpuTime:e}));}),50);}if(this.listens(\"gpu-timing-layer\")){var p=this.painter.collectGpuTimers();setTimeout((function(){var e=o.painter.queryGpuTimers(p);o.fire(new t.Event(\"gpu-timing-layer\",{layerTimes:e}));}),50);}var d=this._sourcesDirty||this._styleDirty||this._placementDirty;return d||this._repaint?this.triggerRepaint():!this.isMoving()&&this.loaded()&&this.fire(new t.Event(\"idle\")),!this._loaded||this._fullyLoaded||d||(this._fullyLoaded=!0),this}},r.prototype.remove=function(){this._hash&&this._hash.remove();for(var e=0,i=this._controls;e<i.length;e+=1)i[e].onRemove(this);this._controls=[],this._frame&&(this._frame.cancel(),this._frame=null),this._renderTaskQueue.clear(),this.painter.destroy(),this.handlers.destroy(),delete this.handlers,this.setStyle(null),void 0!==t.window&&(t.window.removeEventListener(\"resize\",this._onWindowResize,!1),t.window.removeEventListener(\"orientationchange\",this._onWindowResize,!1),t.window.removeEventListener(\"online\",this._onWindowOnline,!1));var o=this.painter.context.gl.getExtension(\"WEBGL_lose_context\");o&&o.loseContext(),Cr(this._canvasContainer),Cr(this._controlContainer),Cr(this._missingCSSCanary),this._container.classList.remove(\"mapboxgl-map\"),this._removed=!0,this.fire(new t.Event(\"remove\"));},r.prototype.triggerRepaint=function(){var e=this;this.style&&!this._frame&&(this._frame=t.browser.frame((function(t){e._frame=null,e._render(t);})));},r.prototype._onWindowOnline=function(){this._update();},r.prototype._onWindowResize=function(t){this._trackResize&&this.resize({originalEvent:t})._update();},a.showTileBoundaries.get=function(){return !!this._showTileBoundaries},a.showTileBoundaries.set=function(t){this._showTileBoundaries!==t&&(this._showTileBoundaries=t,this._update());},a.showPadding.get=function(){return !!this._showPadding},a.showPadding.set=function(t){this._showPadding!==t&&(this._showPadding=t,this._update());},a.showCollisionBoxes.get=function(){return !!this._showCollisionBoxes},a.showCollisionBoxes.set=function(t){this._showCollisionBoxes!==t&&(this._showCollisionBoxes=t,t?this.style._generateCollisionBoxes():this._update());},a.showOverdrawInspector.get=function(){return !!this._showOverdrawInspector},a.showOverdrawInspector.set=function(t){this._showOverdrawInspector!==t&&(this._showOverdrawInspector=t,this._update());},a.repaint.get=function(){return !!this._repaint},a.repaint.set=function(t){this._repaint!==t&&(this._repaint=t,this.triggerRepaint());},a.vertices.get=function(){return !!this._vertices},a.vertices.set=function(t){this._vertices=t,this._update();},r.prototype._setCacheLimits=function(e,i){t.setCacheLimits(e,i);},a.version.get=function(){return t.version},Object.defineProperties(r.prototype,a),r}(vr);function Cr(t){t.parentNode&&t.parentNode.removeChild(t);}var zr={showCompass:!0,showZoom:!0,visualizePitch:!1},Dr=function(e){var o=this;this.options=t.extend({},zr,e),this._container=i.create(\"div\",\"mapboxgl-ctrl mapboxgl-ctrl-group\"),this._container.addEventListener(\"contextmenu\",(function(t){return t.preventDefault()})),this.options.showZoom&&(t.bindAll([\"_setButtonTitle\",\"_updateZoomButtons\"],this),this._zoomInButton=this._createButton(\"mapboxgl-ctrl-zoom-in\",(function(t){return o._map.zoomIn({},{originalEvent:t})})),i.create(\"span\",\"mapboxgl-ctrl-icon\",this._zoomInButton).setAttribute(\"aria-hidden\",!0),this._zoomOutButton=this._createButton(\"mapboxgl-ctrl-zoom-out\",(function(t){return o._map.zoomOut({},{originalEvent:t})})),i.create(\"span\",\"mapboxgl-ctrl-icon\",this._zoomOutButton).setAttribute(\"aria-hidden\",!0)),this.options.showCompass&&(t.bindAll([\"_rotateCompassArrow\"],this),this._compass=this._createButton(\"mapboxgl-ctrl-compass\",(function(t){o.options.visualizePitch?o._map.resetNorthPitch({},{originalEvent:t}):o._map.resetNorth({},{originalEvent:t});})),this._compassIcon=i.create(\"span\",\"mapboxgl-ctrl-icon\",this._compass),this._compassIcon.setAttribute(\"aria-hidden\",!0));};Dr.prototype._updateZoomButtons=function(){var t=this._map.getZoom(),e=t===this._map.getMaxZoom(),i=t===this._map.getMinZoom();this._zoomInButton.disabled=e,this._zoomOutButton.disabled=i,this._zoomInButton.setAttribute(\"aria-disabled\",e.toString()),this._zoomOutButton.setAttribute(\"aria-disabled\",i.toString());},Dr.prototype._rotateCompassArrow=function(){var t=this.options.visualizePitch?\"scale(\"+1/Math.pow(Math.cos(this._map.transform.pitch*(Math.PI/180)),.5)+\") rotateX(\"+this._map.transform.pitch+\"deg) rotateZ(\"+this._map.transform.angle*(180/Math.PI)+\"deg)\":\"rotate(\"+this._map.transform.angle*(180/Math.PI)+\"deg)\";this._compassIcon.style.transform=t;},Dr.prototype.onAdd=function(t){return this._map=t,this.options.showZoom&&(this._setButtonTitle(this._zoomInButton,\"ZoomIn\"),this._setButtonTitle(this._zoomOutButton,\"ZoomOut\"),this._map.on(\"zoom\",this._updateZoomButtons),this._updateZoomButtons()),this.options.showCompass&&(this._setButtonTitle(this._compass,\"ResetBearing\"),this.options.visualizePitch&&this._map.on(\"pitch\",this._rotateCompassArrow),this._map.on(\"rotate\",this._rotateCompassArrow),this._rotateCompassArrow(),this._handler=new Ar(this._map,this._compass,this.options.visualizePitch)),this._container},Dr.prototype.onRemove=function(){i.remove(this._container),this.options.showZoom&&this._map.off(\"zoom\",this._updateZoomButtons),this.options.showCompass&&(this.options.visualizePitch&&this._map.off(\"pitch\",this._rotateCompassArrow),this._map.off(\"rotate\",this._rotateCompassArrow),this._handler.off(),delete this._handler),delete this._map;},Dr.prototype._createButton=function(t,e){var o=i.create(\"button\",t,this._container);return o.type=\"button\",o.addEventListener(\"click\",e),o},Dr.prototype._setButtonTitle=function(t,e){var i=this._map._getUIString(\"NavigationControl.\"+e);t.title=i,t.setAttribute(\"aria-label\",i);};var Ar=function(e,o,r){void 0===r&&(r=!1),this._clickTolerance=10,this.element=o,this.mouseRotate=new Xo({clickTolerance:e.dragRotate._mouseRotate._clickTolerance}),this.map=e,r&&(this.mousePitch=new Ho({clickTolerance:e.dragRotate._mousePitch._clickTolerance})),t.bindAll([\"mousedown\",\"mousemove\",\"mouseup\",\"touchstart\",\"touchmove\",\"touchend\",\"reset\"],this),i.addEventListener(o,\"mousedown\",this.mousedown),i.addEventListener(o,\"touchstart\",this.touchstart,{passive:!1}),i.addEventListener(o,\"touchmove\",this.touchmove),i.addEventListener(o,\"touchend\",this.touchend),i.addEventListener(o,\"touchcancel\",this.reset);};function Mr(e,i,o){if(e=new t.LngLat(e.lng,e.lat),i){var r=new t.LngLat(e.lng-360,e.lat),a=new t.LngLat(e.lng+360,e.lat),n=o.locationPoint(e).distSqr(i);o.locationPoint(r).distSqr(i)<n?e=r:o.locationPoint(a).distSqr(i)<n&&(e=a);}for(;Math.abs(e.lng-o.center.lng)>180;){var s=o.locationPoint(e);if(s.x>=0&&s.y>=0&&s.x<=o.width&&s.y<=o.height)break;e.lng>o.center.lng?e.lng-=360:e.lng+=360;}return e}Ar.prototype.down=function(t,e){this.mouseRotate.mousedown(t,e),this.mousePitch&&this.mousePitch.mousedown(t,e),i.disableDrag();},Ar.prototype.move=function(t,e){var i=this.map,o=this.mouseRotate.mousemoveWindow(t,e);if(o&&o.bearingDelta&&i.setBearing(i.getBearing()+o.bearingDelta),this.mousePitch){var r=this.mousePitch.mousemoveWindow(t,e);r&&r.pitchDelta&&i.setPitch(i.getPitch()+r.pitchDelta);}},Ar.prototype.off=function(){var t=this.element;i.removeEventListener(t,\"mousedown\",this.mousedown),i.removeEventListener(t,\"touchstart\",this.touchstart,{passive:!1}),i.removeEventListener(t,\"touchmove\",this.touchmove),i.removeEventListener(t,\"touchend\",this.touchend),i.removeEventListener(t,\"touchcancel\",this.reset),this.offTemp();},Ar.prototype.offTemp=function(){i.enableDrag(),i.removeEventListener(t.window,\"mousemove\",this.mousemove),i.removeEventListener(t.window,\"mouseup\",this.mouseup);},Ar.prototype.mousedown=function(e){this.down(t.extend({},e,{ctrlKey:!0,preventDefault:function(){return e.preventDefault()}}),i.mousePos(this.element,e)),i.addEventListener(t.window,\"mousemove\",this.mousemove),i.addEventListener(t.window,\"mouseup\",this.mouseup);},Ar.prototype.mousemove=function(t){this.move(t,i.mousePos(this.element,t));},Ar.prototype.mouseup=function(t){this.mouseRotate.mouseupWindow(t),this.mousePitch&&this.mousePitch.mouseupWindow(t),this.offTemp();},Ar.prototype.touchstart=function(t){1!==t.targetTouches.length?this.reset():(this._startPos=this._lastPos=i.touchPos(this.element,t.targetTouches)[0],this.down({type:\"mousedown\",button:0,ctrlKey:!0,preventDefault:function(){return t.preventDefault()}},this._startPos));},Ar.prototype.touchmove=function(t){1!==t.targetTouches.length?this.reset():(this._lastPos=i.touchPos(this.element,t.targetTouches)[0],this.move({preventDefault:function(){return t.preventDefault()}},this._lastPos));},Ar.prototype.touchend=function(t){0===t.targetTouches.length&&this._startPos&&this._lastPos&&this._startPos.dist(this._lastPos)<this._clickTolerance&&this.element.click(),this.reset();},Ar.prototype.reset=function(){this.mouseRotate.reset(),this.mousePitch&&this.mousePitch.reset(),delete this._startPos,delete this._lastPos,this.offTemp();};var Lr={center:\"translate(-50%,-50%)\",top:\"translate(-50%,0)\",\"top-left\":\"translate(0,0)\",\"top-right\":\"translate(-100%,0)\",bottom:\"translate(-50%,-100%)\",\"bottom-left\":\"translate(0,-100%)\",\"bottom-right\":\"translate(-100%,-100%)\",left:\"translate(0,-50%)\",right:\"translate(-100%,-50%)\"};function Rr(t,e,i){var o=t.classList;for(var r in Lr)o.remove(\"mapboxgl-\"+i+\"-anchor-\"+r);o.add(\"mapboxgl-\"+i+\"-anchor-\"+e);}var kr,Br=function(e){function o(o,r){if(e.call(this),(o instanceof t.window.HTMLElement||r)&&(o=t.extend({element:o},r)),t.bindAll([\"_update\",\"_onMove\",\"_onUp\",\"_addDragHandler\",\"_onMapClick\",\"_onKeyPress\"],this),this._anchor=o&&o.anchor||\"center\",this._color=o&&o.color||\"#3FB1CE\",this._scale=o&&o.scale||1,this._draggable=o&&o.draggable||!1,this._clickTolerance=o&&o.clickTolerance||0,this._isDragging=!1,this._state=\"inactive\",this._rotation=o&&o.rotation||0,this._rotationAlignment=o&&o.rotationAlignment||\"auto\",this._pitchAlignment=o&&o.pitchAlignment&&\"auto\"!==o.pitchAlignment?o.pitchAlignment:this._rotationAlignment,o&&o.element)this._element=o.element,this._offset=t.Point.convert(o&&o.offset||[0,0]);else {this._defaultMarker=!0,this._element=i.create(\"div\"),this._element.setAttribute(\"aria-label\",\"Map marker\");var a=i.createNS(\"http://www.w3.org/2000/svg\",\"svg\");a.setAttributeNS(null,\"display\",\"block\"),a.setAttributeNS(null,\"height\",\"41px\"),a.setAttributeNS(null,\"width\",\"27px\"),a.setAttributeNS(null,\"viewBox\",\"0 0 27 41\");var n=i.createNS(\"http://www.w3.org/2000/svg\",\"g\");n.setAttributeNS(null,\"stroke\",\"none\"),n.setAttributeNS(null,\"stroke-width\",\"1\"),n.setAttributeNS(null,\"fill\",\"none\"),n.setAttributeNS(null,\"fill-rule\",\"evenodd\");var s=i.createNS(\"http://www.w3.org/2000/svg\",\"g\");s.setAttributeNS(null,\"fill-rule\",\"nonzero\");var l=i.createNS(\"http://www.w3.org/2000/svg\",\"g\");l.setAttributeNS(null,\"transform\",\"translate(3.0, 29.0)\"),l.setAttributeNS(null,\"fill\",\"#000000\");for(var c=0,u=[{rx:\"10.5\",ry:\"5.25002273\"},{rx:\"10.5\",ry:\"5.25002273\"},{rx:\"9.5\",ry:\"4.77275007\"},{rx:\"8.5\",ry:\"4.29549936\"},{rx:\"7.5\",ry:\"3.81822308\"},{rx:\"6.5\",ry:\"3.34094679\"},{rx:\"5.5\",ry:\"2.86367051\"},{rx:\"4.5\",ry:\"2.38636864\"}];c<u.length;c+=1){var h=u[c],p=i.createNS(\"http://www.w3.org/2000/svg\",\"ellipse\");p.setAttributeNS(null,\"opacity\",\"0.04\"),p.setAttributeNS(null,\"cx\",\"10.5\"),p.setAttributeNS(null,\"cy\",\"5.80029008\"),p.setAttributeNS(null,\"rx\",h.rx),p.setAttributeNS(null,\"ry\",h.ry),l.appendChild(p);}var d=i.createNS(\"http://www.w3.org/2000/svg\",\"g\");d.setAttributeNS(null,\"fill\",this._color);var _=i.createNS(\"http://www.w3.org/2000/svg\",\"path\");_.setAttributeNS(null,\"d\",\"M27,13.5 C27,19.074644 20.250001,27.000002 14.75,34.500002 C14.016665,35.500004 12.983335,35.500004 12.25,34.500002 C6.7499993,27.000002 0,19.222562 0,13.5 C0,6.0441559 6.0441559,0 13.5,0 C20.955844,0 27,6.0441559 27,13.5 Z\"),d.appendChild(_);var f=i.createNS(\"http://www.w3.org/2000/svg\",\"g\");f.setAttributeNS(null,\"opacity\",\"0.25\"),f.setAttributeNS(null,\"fill\",\"#000000\");var m=i.createNS(\"http://www.w3.org/2000/svg\",\"path\");m.setAttributeNS(null,\"d\",\"M13.5,0 C6.0441559,0 0,6.0441559 0,13.5 C0,19.222562 6.7499993,27 12.25,34.5 C13,35.522727 14.016664,35.500004 14.75,34.5 C20.250001,27 27,19.074644 27,13.5 C27,6.0441559 20.955844,0 13.5,0 Z M13.5,1 C20.415404,1 26,6.584596 26,13.5 C26,15.898657 24.495584,19.181431 22.220703,22.738281 C19.945823,26.295132 16.705119,30.142167 13.943359,33.908203 C13.743445,34.180814 13.612715,34.322738 13.5,34.441406 C13.387285,34.322738 13.256555,34.180814 13.056641,33.908203 C10.284481,30.127985 7.4148684,26.314159 5.015625,22.773438 C2.6163816,19.232715 1,15.953538 1,13.5 C1,6.584596 6.584596,1 13.5,1 Z\"),f.appendChild(m);var g=i.createNS(\"http://www.w3.org/2000/svg\",\"g\");g.setAttributeNS(null,\"transform\",\"translate(6.0, 7.0)\"),g.setAttributeNS(null,\"fill\",\"#FFFFFF\");var v=i.createNS(\"http://www.w3.org/2000/svg\",\"g\");v.setAttributeNS(null,\"transform\",\"translate(8.0, 8.0)\");var y=i.createNS(\"http://www.w3.org/2000/svg\",\"circle\");y.setAttributeNS(null,\"fill\",\"#000000\"),y.setAttributeNS(null,\"opacity\",\"0.25\"),y.setAttributeNS(null,\"cx\",\"5.5\"),y.setAttributeNS(null,\"cy\",\"5.5\"),y.setAttributeNS(null,\"r\",\"5.4999962\");var x=i.createNS(\"http://www.w3.org/2000/svg\",\"circle\");x.setAttributeNS(null,\"fill\",\"#FFFFFF\"),x.setAttributeNS(null,\"cx\",\"5.5\"),x.setAttributeNS(null,\"cy\",\"5.5\"),x.setAttributeNS(null,\"r\",\"5.4999962\"),v.appendChild(y),v.appendChild(x),s.appendChild(l),s.appendChild(d),s.appendChild(f),s.appendChild(g),s.appendChild(v),a.appendChild(s),a.setAttributeNS(null,\"height\",41*this._scale+\"px\"),a.setAttributeNS(null,\"width\",27*this._scale+\"px\"),this._element.appendChild(a),this._offset=t.Point.convert(o&&o.offset||[0,-14]);}this._element.classList.add(\"mapboxgl-marker\"),this._element.addEventListener(\"dragstart\",(function(t){t.preventDefault();})),this._element.addEventListener(\"mousedown\",(function(t){t.preventDefault();})),Rr(this._element,this._anchor,\"marker\"),this._popup=null;}return e&&(o.__proto__=e),(o.prototype=Object.create(e&&e.prototype)).constructor=o,o.prototype.addTo=function(t){return this.remove(),this._map=t,t.getCanvasContainer().appendChild(this._element),t.on(\"move\",this._update),t.on(\"moveend\",this._update),this.setDraggable(this._draggable),this._update(),this._map.on(\"click\",this._onMapClick),this},o.prototype.remove=function(){return this._map&&(this._map.off(\"click\",this._onMapClick),this._map.off(\"move\",this._update),this._map.off(\"moveend\",this._update),this._map.off(\"mousedown\",this._addDragHandler),this._map.off(\"touchstart\",this._addDragHandler),this._map.off(\"mouseup\",this._onUp),this._map.off(\"touchend\",this._onUp),this._map.off(\"mousemove\",this._onMove),this._map.off(\"touchmove\",this._onMove),delete this._map),i.remove(this._element),this._popup&&this._popup.remove(),this},o.prototype.getLngLat=function(){return this._lngLat},o.prototype.setLngLat=function(e){return this._lngLat=t.LngLat.convert(e),this._pos=null,this._popup&&this._popup.setLngLat(this._lngLat),this._update(),this},o.prototype.getElement=function(){return this._element},o.prototype.setPopup=function(t){if(this._popup&&(this._popup.remove(),this._popup=null,this._element.removeEventListener(\"keypress\",this._onKeyPress),this._originalTabIndex||this._element.removeAttribute(\"tabindex\")),t){if(!(\"offset\"in t.options)){var e=Math.sqrt(Math.pow(13.5,2)/2);t.options.offset=this._defaultMarker?{top:[0,0],\"top-left\":[0,0],\"top-right\":[0,0],bottom:[0,-38.1],\"bottom-left\":[e,-1*(24.6+e)],\"bottom-right\":[-e,-1*(24.6+e)],left:[13.5,-24.6],right:[-13.5,-24.6]}:this._offset;}this._popup=t,this._lngLat&&this._popup.setLngLat(this._lngLat),this._originalTabIndex=this._element.getAttribute(\"tabindex\"),this._originalTabIndex||this._element.setAttribute(\"tabindex\",\"0\"),this._element.addEventListener(\"keypress\",this._onKeyPress);}return this},o.prototype._onKeyPress=function(t){var e=t.code,i=t.charCode||t.keyCode;\"Space\"!==e&&\"Enter\"!==e&&32!==i&&13!==i||this.togglePopup();},o.prototype._onMapClick=function(t){var e=t.originalEvent.target,i=this._element;this._popup&&(e===i||i.contains(e))&&this.togglePopup();},o.prototype.getPopup=function(){return this._popup},o.prototype.togglePopup=function(){var t=this._popup;return t?(t.isOpen()?t.remove():t.addTo(this._map),this):this},o.prototype._update=function(t){if(this._map){this._map.transform.renderWorldCopies&&(this._lngLat=Mr(this._lngLat,this._pos,this._map.transform)),this._pos=this._map.project(this._lngLat)._add(this._offset);var e=\"\";\"viewport\"===this._rotationAlignment||\"auto\"===this._rotationAlignment?e=\"rotateZ(\"+this._rotation+\"deg)\":\"map\"===this._rotationAlignment&&(e=\"rotateZ(\"+(this._rotation-this._map.getBearing())+\"deg)\");var o=\"\";\"viewport\"===this._pitchAlignment||\"auto\"===this._pitchAlignment?o=\"rotateX(0deg)\":\"map\"===this._pitchAlignment&&(o=\"rotateX(\"+this._map.getPitch()+\"deg)\"),t&&\"moveend\"!==t.type||(this._pos=this._pos.round()),i.setTransform(this._element,Lr[this._anchor]+\" translate(\"+this._pos.x+\"px, \"+this._pos.y+\"px) \"+o+\" \"+e);}},o.prototype.getOffset=function(){return this._offset},o.prototype.setOffset=function(e){return this._offset=t.Point.convert(e),this._update(),this},o.prototype._onMove=function(e){if(!this._isDragging){var i=this._clickTolerance||this._map._clickTolerance;this._isDragging=e.point.dist(this._pointerdownPos)>=i;}this._isDragging&&(this._pos=e.point.sub(this._positionDelta),this._lngLat=this._map.unproject(this._pos),this.setLngLat(this._lngLat),this._element.style.pointerEvents=\"none\",\"pending\"===this._state&&(this._state=\"active\",this.fire(new t.Event(\"dragstart\"))),this.fire(new t.Event(\"drag\")));},o.prototype._onUp=function(){this._element.style.pointerEvents=\"auto\",this._positionDelta=null,this._pointerdownPos=null,this._isDragging=!1,this._map.off(\"mousemove\",this._onMove),this._map.off(\"touchmove\",this._onMove),\"active\"===this._state&&this.fire(new t.Event(\"dragend\")),this._state=\"inactive\";},o.prototype._addDragHandler=function(t){this._element.contains(t.originalEvent.target)&&(t.preventDefault(),this._positionDelta=t.point.sub(this._pos).add(this._offset),this._pointerdownPos=t.point,this._state=\"pending\",this._map.on(\"mousemove\",this._onMove),this._map.on(\"touchmove\",this._onMove),this._map.once(\"mouseup\",this._onUp),this._map.once(\"touchend\",this._onUp));},o.prototype.setDraggable=function(t){return this._draggable=!!t,this._map&&(t?(this._map.on(\"mousedown\",this._addDragHandler),this._map.on(\"touchstart\",this._addDragHandler)):(this._map.off(\"mousedown\",this._addDragHandler),this._map.off(\"touchstart\",this._addDragHandler))),this},o.prototype.isDraggable=function(){return this._draggable},o.prototype.setRotation=function(t){return this._rotation=t||0,this._update(),this},o.prototype.getRotation=function(){return this._rotation},o.prototype.setRotationAlignment=function(t){return this._rotationAlignment=t||\"auto\",this._update(),this},o.prototype.getRotationAlignment=function(){return this._rotationAlignment},o.prototype.setPitchAlignment=function(t){return this._pitchAlignment=t&&\"auto\"!==t?t:this._rotationAlignment,this._update(),this},o.prototype.getPitchAlignment=function(){return this._pitchAlignment},o}(t.Evented),Or={positionOptions:{enableHighAccuracy:!1,maximumAge:0,timeout:6e3},fitBoundsOptions:{maxZoom:15},trackUserLocation:!1,showAccuracyCircle:!0,showUserLocation:!0},Fr=0,Ur=!1,Nr=function(e){function o(i){e.call(this),this.options=t.extend({},Or,i),t.bindAll([\"_onSuccess\",\"_onError\",\"_onZoom\",\"_finish\",\"_setupUI\",\"_updateCamera\",\"_updateMarker\"],this);}return e&&(o.__proto__=e),(o.prototype=Object.create(e&&e.prototype)).constructor=o,o.prototype.onAdd=function(e){var o;return this._map=e,this._container=i.create(\"div\",\"mapboxgl-ctrl mapboxgl-ctrl-group\"),o=this._setupUI,void 0!==kr?o(kr):void 0!==t.window.navigator.permissions?t.window.navigator.permissions.query({name:\"geolocation\"}).then((function(t){o(kr=\"denied\"!==t.state);})):o(kr=!!t.window.navigator.geolocation),this._container},o.prototype.onRemove=function(){void 0!==this._geolocationWatchID&&(t.window.navigator.geolocation.clearWatch(this._geolocationWatchID),this._geolocationWatchID=void 0),this.options.showUserLocation&&this._userLocationDotMarker&&this._userLocationDotMarker.remove(),this.options.showAccuracyCircle&&this._accuracyCircleMarker&&this._accuracyCircleMarker.remove(),i.remove(this._container),this._map.off(\"zoom\",this._onZoom),this._map=void 0,Fr=0,Ur=!1;},o.prototype._isOutOfMapMaxBounds=function(t){var e=this._map.getMaxBounds(),i=t.coords;return e&&(i.longitude<e.getWest()||i.longitude>e.getEast()||i.latitude<e.getSouth()||i.latitude>e.getNorth())},o.prototype._setErrorState=function(){switch(this._watchState){case\"WAITING_ACTIVE\":this._watchState=\"ACTIVE_ERROR\",this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-active\"),this._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-active-error\");break;case\"ACTIVE_LOCK\":this._watchState=\"ACTIVE_ERROR\",this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-active\"),this._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-active-error\"),this._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-waiting\");break;case\"BACKGROUND\":this._watchState=\"BACKGROUND_ERROR\",this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-background\"),this._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-background-error\"),this._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-waiting\");}},o.prototype._onSuccess=function(e){if(this._map){if(this._isOutOfMapMaxBounds(e))return this._setErrorState(),this.fire(new t.Event(\"outofmaxbounds\",e)),this._updateMarker(),void this._finish();if(this.options.trackUserLocation)switch(this._lastKnownPosition=e,this._watchState){case\"WAITING_ACTIVE\":case\"ACTIVE_LOCK\":case\"ACTIVE_ERROR\":this._watchState=\"ACTIVE_LOCK\",this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-waiting\"),this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-active-error\"),this._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-active\");break;case\"BACKGROUND\":case\"BACKGROUND_ERROR\":this._watchState=\"BACKGROUND\",this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-waiting\"),this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-background-error\"),this._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-background\");}this.options.showUserLocation&&\"OFF\"!==this._watchState&&this._updateMarker(e),this.options.trackUserLocation&&\"ACTIVE_LOCK\"!==this._watchState||this._updateCamera(e),this.options.showUserLocation&&this._dotElement.classList.remove(\"mapboxgl-user-location-dot-stale\"),this.fire(new t.Event(\"geolocate\",e)),this._finish();}},o.prototype._updateCamera=function(e){var i=new t.LngLat(e.coords.longitude,e.coords.latitude),o=e.coords.accuracy,r=this._map.getBearing(),a=t.extend({bearing:r},this.options.fitBoundsOptions);this._map.fitBounds(i.toBounds(o),a,{geolocateSource:!0});},o.prototype._updateMarker=function(e){if(e){var i=new t.LngLat(e.coords.longitude,e.coords.latitude);this._accuracyCircleMarker.setLngLat(i).addTo(this._map),this._userLocationDotMarker.setLngLat(i).addTo(this._map),this._accuracy=e.coords.accuracy,this.options.showUserLocation&&this.options.showAccuracyCircle&&this._updateCircleRadius();}else this._userLocationDotMarker.remove(),this._accuracyCircleMarker.remove();},o.prototype._updateCircleRadius=function(){var t=this._map._container.clientHeight/2,e=this._map.unproject([0,t]),i=this._map.unproject([1,t]),o=e.distanceTo(i),r=Math.ceil(2*this._accuracy/o);this._circleElement.style.width=r+\"px\",this._circleElement.style.height=r+\"px\";},o.prototype._onZoom=function(){this.options.showUserLocation&&this.options.showAccuracyCircle&&this._updateCircleRadius();},o.prototype._onError=function(e){if(this._map){if(this.options.trackUserLocation)if(1===e.code){this._watchState=\"OFF\",this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-waiting\"),this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-active\"),this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-active-error\"),this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-background\"),this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-background-error\"),this._geolocateButton.disabled=!0;var i=this._map._getUIString(\"GeolocateControl.LocationNotAvailable\");this._geolocateButton.title=i,this._geolocateButton.setAttribute(\"aria-label\",i),void 0!==this._geolocationWatchID&&this._clearWatch();}else {if(3===e.code&&Ur)return;this._setErrorState();}\"OFF\"!==this._watchState&&this.options.showUserLocation&&this._dotElement.classList.add(\"mapboxgl-user-location-dot-stale\"),this.fire(new t.Event(\"error\",e)),this._finish();}},o.prototype._finish=function(){this._timeoutId&&clearTimeout(this._timeoutId),this._timeoutId=void 0;},o.prototype._setupUI=function(e){var o=this;if(this._container.addEventListener(\"contextmenu\",(function(t){return t.preventDefault()})),this._geolocateButton=i.create(\"button\",\"mapboxgl-ctrl-geolocate\",this._container),i.create(\"span\",\"mapboxgl-ctrl-icon\",this._geolocateButton).setAttribute(\"aria-hidden\",!0),this._geolocateButton.type=\"button\",!1===e){t.warnOnce(\"Geolocation support is not available so the GeolocateControl will be disabled.\");var r=this._map._getUIString(\"GeolocateControl.LocationNotAvailable\");this._geolocateButton.disabled=!0,this._geolocateButton.title=r,this._geolocateButton.setAttribute(\"aria-label\",r);}else {var a=this._map._getUIString(\"GeolocateControl.FindMyLocation\");this._geolocateButton.title=a,this._geolocateButton.setAttribute(\"aria-label\",a);}this.options.trackUserLocation&&(this._geolocateButton.setAttribute(\"aria-pressed\",\"false\"),this._watchState=\"OFF\"),this.options.showUserLocation&&(this._dotElement=i.create(\"div\",\"mapboxgl-user-location-dot\"),this._userLocationDotMarker=new Br(this._dotElement),this._circleElement=i.create(\"div\",\"mapboxgl-user-location-accuracy-circle\"),this._accuracyCircleMarker=new Br({element:this._circleElement,pitchAlignment:\"map\"}),this.options.trackUserLocation&&(this._watchState=\"OFF\"),this._map.on(\"zoom\",this._onZoom)),this._geolocateButton.addEventListener(\"click\",this.trigger.bind(this)),this._setup=!0,this.options.trackUserLocation&&this._map.on(\"movestart\",(function(e){e.geolocateSource||\"ACTIVE_LOCK\"!==o._watchState||e.originalEvent&&\"resize\"===e.originalEvent.type||(o._watchState=\"BACKGROUND\",o._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-background\"),o._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-active\"),o.fire(new t.Event(\"trackuserlocationend\")));}));},o.prototype.trigger=function(){if(!this._setup)return t.warnOnce(\"Geolocate control triggered before added to a map\"),!1;if(this.options.trackUserLocation){switch(this._watchState){case\"OFF\":this._watchState=\"WAITING_ACTIVE\",this.fire(new t.Event(\"trackuserlocationstart\"));break;case\"WAITING_ACTIVE\":case\"ACTIVE_LOCK\":case\"ACTIVE_ERROR\":case\"BACKGROUND_ERROR\":Fr--,Ur=!1,this._watchState=\"OFF\",this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-waiting\"),this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-active\"),this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-active-error\"),this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-background\"),this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-background-error\"),this.fire(new t.Event(\"trackuserlocationend\"));break;case\"BACKGROUND\":this._watchState=\"ACTIVE_LOCK\",this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-background\"),this._lastKnownPosition&&this._updateCamera(this._lastKnownPosition),this.fire(new t.Event(\"trackuserlocationstart\"));}switch(this._watchState){case\"WAITING_ACTIVE\":this._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-waiting\"),this._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-active\");break;case\"ACTIVE_LOCK\":this._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-active\");break;case\"ACTIVE_ERROR\":this._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-waiting\"),this._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-active-error\");break;case\"BACKGROUND\":this._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-background\");break;case\"BACKGROUND_ERROR\":this._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-waiting\"),this._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-background-error\");}if(\"OFF\"===this._watchState&&void 0!==this._geolocationWatchID)this._clearWatch();else if(void 0===this._geolocationWatchID){var e;this._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-waiting\"),this._geolocateButton.setAttribute(\"aria-pressed\",\"true\"),++Fr>1?(e={maximumAge:6e5,timeout:0},Ur=!0):(e=this.options.positionOptions,Ur=!1),this._geolocationWatchID=t.window.navigator.geolocation.watchPosition(this._onSuccess,this._onError,e);}}else t.window.navigator.geolocation.getCurrentPosition(this._onSuccess,this._onError,this.options.positionOptions),this._timeoutId=setTimeout(this._finish,1e4);return !0},o.prototype._clearWatch=function(){t.window.navigator.geolocation.clearWatch(this._geolocationWatchID),this._geolocationWatchID=void 0,this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-waiting\"),this._geolocateButton.setAttribute(\"aria-pressed\",\"false\"),this.options.showUserLocation&&this._updateMarker(null);},o}(t.Evented),Zr={maxWidth:100,unit:\"metric\"},qr=function(e){this.options=t.extend({},Zr,e),t.bindAll([\"_onMove\",\"setUnit\"],this);};function jr(t,e,i){var o=i&&i.maxWidth||100,r=t._container.clientHeight/2,a=t.unproject([0,r]),n=t.unproject([o,r]),s=a.distanceTo(n);if(i&&\"imperial\"===i.unit){var l=3.2808*s;l>5280?Vr(e,o,l/5280,t._getUIString(\"ScaleControl.Miles\")):Vr(e,o,l,t._getUIString(\"ScaleControl.Feet\"));}else i&&\"nautical\"===i.unit?Vr(e,o,s/1852,t._getUIString(\"ScaleControl.NauticalMiles\")):s>=1e3?Vr(e,o,s/1e3,t._getUIString(\"ScaleControl.Kilometers\")):Vr(e,o,s,t._getUIString(\"ScaleControl.Meters\"));}function Vr(t,e,i,o){var r,a,n,s=(r=i,(a=Math.pow(10,(\"\"+Math.floor(r)).length-1))*(n=(n=r/a)>=10?10:n>=5?5:n>=3?3:n>=2?2:n>=1?1:function(t){var e=Math.pow(10,Math.ceil(-Math.log(t)/Math.LN10));return Math.round(t*e)/e}(n)));t.style.width=e*(s/i)+\"px\",t.innerHTML=s+\"&nbsp;\"+o;}qr.prototype.getDefaultPosition=function(){return \"bottom-left\"},qr.prototype._onMove=function(){jr(this._map,this._container,this.options);},qr.prototype.onAdd=function(t){return this._map=t,this._container=i.create(\"div\",\"mapboxgl-ctrl mapboxgl-ctrl-scale\",t.getContainer()),this._map.on(\"move\",this._onMove),this._onMove(),this._container},qr.prototype.onRemove=function(){i.remove(this._container),this._map.off(\"move\",this._onMove),this._map=void 0;},qr.prototype.setUnit=function(t){this.options.unit=t,jr(this._map,this._container,this.options);};var Gr=function(e){this._fullscreen=!1,e&&e.container&&(e.container instanceof t.window.HTMLElement?this._container=e.container:t.warnOnce(\"Full screen control 'container' must be a DOM element.\")),t.bindAll([\"_onClickFullscreen\",\"_changeIcon\"],this),\"onfullscreenchange\"in t.window.document?this._fullscreenchange=\"fullscreenchange\":\"onmozfullscreenchange\"in t.window.document?this._fullscreenchange=\"mozfullscreenchange\":\"onwebkitfullscreenchange\"in t.window.document?this._fullscreenchange=\"webkitfullscreenchange\":\"onmsfullscreenchange\"in t.window.document&&(this._fullscreenchange=\"MSFullscreenChange\");};Gr.prototype.onAdd=function(e){return this._map=e,this._container||(this._container=this._map.getContainer()),this._controlContainer=i.create(\"div\",\"mapboxgl-ctrl mapboxgl-ctrl-group\"),this._checkFullscreenSupport()?this._setupUI():(this._controlContainer.style.display=\"none\",t.warnOnce(\"This device does not support fullscreen mode.\")),this._controlContainer},Gr.prototype.onRemove=function(){i.remove(this._controlContainer),this._map=null,t.window.document.removeEventListener(this._fullscreenchange,this._changeIcon);},Gr.prototype._checkFullscreenSupport=function(){return !!(t.window.document.fullscreenEnabled||t.window.document.mozFullScreenEnabled||t.window.document.msFullscreenEnabled||t.window.document.webkitFullscreenEnabled)},Gr.prototype._setupUI=function(){var e=this._fullscreenButton=i.create(\"button\",\"mapboxgl-ctrl-fullscreen\",this._controlContainer);i.create(\"span\",\"mapboxgl-ctrl-icon\",e).setAttribute(\"aria-hidden\",!0),e.type=\"button\",this._updateTitle(),this._fullscreenButton.addEventListener(\"click\",this._onClickFullscreen),t.window.document.addEventListener(this._fullscreenchange,this._changeIcon);},Gr.prototype._updateTitle=function(){var t=this._getTitle();this._fullscreenButton.setAttribute(\"aria-label\",t),this._fullscreenButton.title=t;},Gr.prototype._getTitle=function(){return this._map._getUIString(this._isFullscreen()?\"FullscreenControl.Exit\":\"FullscreenControl.Enter\")},Gr.prototype._isFullscreen=function(){return this._fullscreen},Gr.prototype._changeIcon=function(){(t.window.document.fullscreenElement||t.window.document.mozFullScreenElement||t.window.document.webkitFullscreenElement||t.window.document.msFullscreenElement)===this._container!==this._fullscreen&&(this._fullscreen=!this._fullscreen,this._fullscreenButton.classList.toggle(\"mapboxgl-ctrl-shrink\"),this._fullscreenButton.classList.toggle(\"mapboxgl-ctrl-fullscreen\"),this._updateTitle());},Gr.prototype._onClickFullscreen=function(){this._isFullscreen()?t.window.document.exitFullscreen?t.window.document.exitFullscreen():t.window.document.mozCancelFullScreen?t.window.document.mozCancelFullScreen():t.window.document.msExitFullscreen?t.window.document.msExitFullscreen():t.window.document.webkitCancelFullScreen&&t.window.document.webkitCancelFullScreen():this._container.requestFullscreen?this._container.requestFullscreen():this._container.mozRequestFullScreen?this._container.mozRequestFullScreen():this._container.msRequestFullscreen?this._container.msRequestFullscreen():this._container.webkitRequestFullscreen&&this._container.webkitRequestFullscreen();};var Wr={closeButton:!0,closeOnClick:!0,focusAfterOpen:!0,className:\"\",maxWidth:\"240px\"},Xr=[\"a[href]\",\"[tabindex]:not([tabindex='-1'])\",\"[contenteditable]:not([contenteditable='false'])\",\"button:not([disabled])\",\"input:not([disabled])\",\"select:not([disabled])\",\"textarea:not([disabled])\"].join(\", \"),Hr=function(e){function o(i){e.call(this),this.options=t.extend(Object.create(Wr),i),t.bindAll([\"_update\",\"_onClose\",\"remove\",\"_onMouseMove\",\"_onMouseUp\",\"_onDrag\"],this);}return e&&(o.__proto__=e),(o.prototype=Object.create(e&&e.prototype)).constructor=o,o.prototype.addTo=function(e){return this._map&&this.remove(),this._map=e,this.options.closeOnClick&&this._map.on(\"click\",this._onClose),this.options.closeOnMove&&this._map.on(\"move\",this._onClose),this._map.on(\"remove\",this.remove),this._update(),this._focusFirstElement(),this._trackPointer?(this._map.on(\"mousemove\",this._onMouseMove),this._map.on(\"mouseup\",this._onMouseUp),this._container&&this._container.classList.add(\"mapboxgl-popup-track-pointer\"),this._map._canvasContainer.classList.add(\"mapboxgl-track-pointer\")):this._map.on(\"move\",this._update),this.fire(new t.Event(\"open\")),this},o.prototype.isOpen=function(){return !!this._map},o.prototype.remove=function(){return this._content&&i.remove(this._content),this._container&&(i.remove(this._container),delete this._container),this._map&&(this._map.off(\"move\",this._update),this._map.off(\"move\",this._onClose),this._map.off(\"click\",this._onClose),this._map.off(\"remove\",this.remove),this._map.off(\"mousemove\",this._onMouseMove),this._map.off(\"mouseup\",this._onMouseUp),this._map.off(\"drag\",this._onDrag),delete this._map),this.fire(new t.Event(\"close\")),this},o.prototype.getLngLat=function(){return this._lngLat},o.prototype.setLngLat=function(e){return this._lngLat=t.LngLat.convert(e),this._pos=null,this._trackPointer=!1,this._update(),this._map&&(this._map.on(\"move\",this._update),this._map.off(\"mousemove\",this._onMouseMove),this._container&&this._container.classList.remove(\"mapboxgl-popup-track-pointer\"),this._map._canvasContainer.classList.remove(\"mapboxgl-track-pointer\")),this},o.prototype.trackPointer=function(){return this._trackPointer=!0,this._pos=null,this._update(),this._map&&(this._map.off(\"move\",this._update),this._map.on(\"mousemove\",this._onMouseMove),this._map.on(\"drag\",this._onDrag),this._container&&this._container.classList.add(\"mapboxgl-popup-track-pointer\"),this._map._canvasContainer.classList.add(\"mapboxgl-track-pointer\")),this},o.prototype.getElement=function(){return this._container},o.prototype.setText=function(e){return this.setDOMContent(t.window.document.createTextNode(e))},o.prototype.setHTML=function(e){var i,o=t.window.document.createDocumentFragment(),r=t.window.document.createElement(\"body\");for(r.innerHTML=e;i=r.firstChild;)o.appendChild(i);return this.setDOMContent(o)},o.prototype.getMaxWidth=function(){return this._container&&this._container.style.maxWidth},o.prototype.setMaxWidth=function(t){return this.options.maxWidth=t,this._update(),this},o.prototype.setDOMContent=function(t){if(this._content)for(;this._content.hasChildNodes();)this._content.firstChild&&this._content.removeChild(this._content.firstChild);else this._content=i.create(\"div\",\"mapboxgl-popup-content\",this._container);return this._content.appendChild(t),this._createCloseButton(),this._update(),this._focusFirstElement(),this},o.prototype.addClassName=function(t){this._container&&this._container.classList.add(t);},o.prototype.removeClassName=function(t){this._container&&this._container.classList.remove(t);},o.prototype.setOffset=function(t){return this.options.offset=t,this._update(),this},o.prototype.toggleClassName=function(t){if(this._container)return this._container.classList.toggle(t)},o.prototype._createCloseButton=function(){this.options.closeButton&&(this._closeButton=i.create(\"button\",\"mapboxgl-popup-close-button\",this._content),this._closeButton.type=\"button\",this._closeButton.setAttribute(\"aria-label\",\"Close popup\"),this._closeButton.innerHTML=\"&#215;\",this._closeButton.addEventListener(\"click\",this._onClose));},o.prototype._onMouseUp=function(t){this._update(t.point);},o.prototype._onMouseMove=function(t){this._update(t.point);},o.prototype._onDrag=function(t){this._update(t.point);},o.prototype._update=function(e){var o=this;if(this._map&&(this._lngLat||this._trackPointer)&&this._content&&(this._container||(this._container=i.create(\"div\",\"mapboxgl-popup\",this._map.getContainer()),this._tip=i.create(\"div\",\"mapboxgl-popup-tip\",this._container),this._container.appendChild(this._content),this.options.className&&this.options.className.split(\" \").forEach((function(t){return o._container.classList.add(t)})),this._trackPointer&&this._container.classList.add(\"mapboxgl-popup-track-pointer\")),this.options.maxWidth&&this._container.style.maxWidth!==this.options.maxWidth&&(this._container.style.maxWidth=this.options.maxWidth),this._map.transform.renderWorldCopies&&!this._trackPointer&&(this._lngLat=Mr(this._lngLat,this._pos,this._map.transform)),!this._trackPointer||e)){var r=this._pos=this._trackPointer&&e?e:this._map.project(this._lngLat),a=this.options.anchor,n=function e(i){if(i){if(\"number\"==typeof i){var o=Math.round(Math.sqrt(.5*Math.pow(i,2)));return {center:new t.Point(0,0),top:new t.Point(0,i),\"top-left\":new t.Point(o,o),\"top-right\":new t.Point(-o,o),bottom:new t.Point(0,-i),\"bottom-left\":new t.Point(o,-o),\"bottom-right\":new t.Point(-o,-o),left:new t.Point(i,0),right:new t.Point(-i,0)}}if(i instanceof t.Point||Array.isArray(i)){var r=t.Point.convert(i);return {center:r,top:r,\"top-left\":r,\"top-right\":r,bottom:r,\"bottom-left\":r,\"bottom-right\":r,left:r,right:r}}return {center:t.Point.convert(i.center||[0,0]),top:t.Point.convert(i.top||[0,0]),\"top-left\":t.Point.convert(i[\"top-left\"]||[0,0]),\"top-right\":t.Point.convert(i[\"top-right\"]||[0,0]),bottom:t.Point.convert(i.bottom||[0,0]),\"bottom-left\":t.Point.convert(i[\"bottom-left\"]||[0,0]),\"bottom-right\":t.Point.convert(i[\"bottom-right\"]||[0,0]),left:t.Point.convert(i.left||[0,0]),right:t.Point.convert(i.right||[0,0])}}return e(new t.Point(0,0))}(this.options.offset);if(!a){var s,l=this._container.offsetWidth,c=this._container.offsetHeight;s=r.y+n.bottom.y<c?[\"top\"]:r.y>this._map.transform.height-c?[\"bottom\"]:[],r.x<l/2?s.push(\"left\"):r.x>this._map.transform.width-l/2&&s.push(\"right\"),a=0===s.length?\"bottom\":s.join(\"-\");}var u=r.add(n[a]).round();i.setTransform(this._container,Lr[a]+\" translate(\"+u.x+\"px,\"+u.y+\"px)\"),Rr(this._container,a,\"popup\");}},o.prototype._focusFirstElement=function(){if(this.options.focusAfterOpen&&this._container){var t=this._container.querySelector(Xr);t&&t.focus();}},o.prototype._onClose=function(){this.remove();},o}(t.Evented),Kr={version:t.version,supported:e,setRTLTextPlugin:t.setRTLTextPlugin,getRTLTextPluginStatus:t.getRTLTextPluginStatus,Map:Sr,NavigationControl:Dr,GeolocateControl:Nr,AttributionControl:yr,ScaleControl:qr,FullscreenControl:Gr,Popup:Hr,Marker:Br,Style:je,LngLat:t.LngLat,LngLatBounds:t.LngLatBounds,Point:t.Point,MercatorCoordinate:t.MercatorCoordinate,Evented:t.Evented,config:t.config,prewarm:function(){Ft().acquire(Rt);},clearPrewarmedResources:function(){var t=Bt;t&&(t.isPreloaded()&&1===t.numActive()?(t.release(Rt),Bt=null):console.warn(\"Could not clear WebWorkers since there are active Map instances that still reference it. The pre-warmed WebWorker pool can only be cleared when all map instances have been removed with map.remove()\"));},get accessToken(){return t.config.ACCESS_TOKEN},set accessToken(e){t.config.ACCESS_TOKEN=e;},get baseApiUrl(){return t.config.API_URL},set baseApiUrl(e){t.config.API_URL=e;},get workerCount(){return kt.workerCount},set workerCount(t){kt.workerCount=t;},get maxParallelImageRequests(){return t.config.MAX_PARALLEL_IMAGE_REQUESTS},set maxParallelImageRequests(e){t.config.MAX_PARALLEL_IMAGE_REQUESTS=e;},clearStorage:function(e){t.clearTileCache(e);},workerUrl:\"\"};return Kr}));\n\n//\n\nreturn mapboxgl;\n\n})));\n//# sourceMappingURL=mapbox-gl.js.map\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.bodyOpenClassName = exports.portalClassName = undefined;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _react = require(\"react\");\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactDom = require(\"react-dom\");\n\nvar _reactDom2 = _interopRequireDefault(_reactDom);\n\nvar _propTypes = require(\"prop-types\");\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _ModalPortal = require(\"./ModalPortal\");\n\nvar _ModalPortal2 = _interopRequireDefault(_ModalPortal);\n\nvar _ariaAppHider = require(\"../helpers/ariaAppHider\");\n\nvar ariaAppHider = _interopRequireWildcard(_ariaAppHider);\n\nvar _safeHTMLElement = require(\"../helpers/safeHTMLElement\");\n\nvar _safeHTMLElement2 = _interopRequireDefault(_safeHTMLElement);\n\nvar _reactLifecyclesCompat = require(\"react-lifecycles-compat\");\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar portalClassName = exports.portalClassName = \"ReactModalPortal\";\nvar bodyOpenClassName = exports.bodyOpenClassName = \"ReactModal__Body--open\";\n\nvar isReact16 = _safeHTMLElement.canUseDOM && _reactDom2.default.createPortal !== undefined;\n\nvar createHTMLElement = function createHTMLElement(name) {\n  return document.createElement(name);\n};\n\nvar getCreatePortal = function getCreatePortal() {\n  return isReact16 ? _reactDom2.default.createPortal : _reactDom2.default.unstable_renderSubtreeIntoContainer;\n};\n\nfunction getParentElement(parentSelector) {\n  return parentSelector();\n}\n\nvar Modal = function (_Component) {\n  _inherits(Modal, _Component);\n\n  function Modal() {\n    var _ref;\n\n    var _temp, _this, _ret;\n\n    _classCallCheck(this, Modal);\n\n    for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref = Modal.__proto__ || Object.getPrototypeOf(Modal)).call.apply(_ref, [this].concat(args))), _this), _this.removePortal = function () {\n      !isReact16 && _reactDom2.default.unmountComponentAtNode(_this.node);\n      var parent = getParentElement(_this.props.parentSelector);\n      if (parent && parent.contains(_this.node)) {\n        parent.removeChild(_this.node);\n      } else {\n        // eslint-disable-next-line no-console\n        console.warn('React-Modal: \"parentSelector\" prop did not returned any DOM ' + \"element. Make sure that the parent element is unmounted to \" + \"avoid any memory leaks.\");\n      }\n    }, _this.portalRef = function (ref) {\n      _this.portal = ref;\n    }, _this.renderPortal = function (props) {\n      var createPortal = getCreatePortal();\n      var portal = createPortal(_this, _react2.default.createElement(_ModalPortal2.default, _extends({ defaultStyles: Modal.defaultStyles }, props)), _this.node);\n      _this.portalRef(portal);\n    }, _temp), _possibleConstructorReturn(_this, _ret);\n  }\n\n  _createClass(Modal, [{\n    key: \"componentDidMount\",\n    value: function componentDidMount() {\n      if (!_safeHTMLElement.canUseDOM) return;\n\n      if (!isReact16) {\n        this.node = createHTMLElement(\"div\");\n      }\n      this.node.className = this.props.portalClassName;\n\n      var parent = getParentElement(this.props.parentSelector);\n      parent.appendChild(this.node);\n\n      !isReact16 && this.renderPortal(this.props);\n    }\n  }, {\n    key: \"getSnapshotBeforeUpdate\",\n    value: function getSnapshotBeforeUpdate(prevProps) {\n      var prevParent = getParentElement(prevProps.parentSelector);\n      var nextParent = getParentElement(this.props.parentSelector);\n      return { prevParent: prevParent, nextParent: nextParent };\n    }\n  }, {\n    key: \"componentDidUpdate\",\n    value: function componentDidUpdate(prevProps, _, snapshot) {\n      if (!_safeHTMLElement.canUseDOM) return;\n      var _props = this.props,\n          isOpen = _props.isOpen,\n          portalClassName = _props.portalClassName;\n\n\n      if (prevProps.portalClassName !== portalClassName) {\n        this.node.className = portalClassName;\n      }\n\n      var prevParent = snapshot.prevParent,\n          nextParent = snapshot.nextParent;\n\n      if (nextParent !== prevParent) {\n        prevParent.removeChild(this.node);\n        nextParent.appendChild(this.node);\n      }\n\n      // Stop unnecessary renders if modal is remaining closed\n      if (!prevProps.isOpen && !isOpen) return;\n\n      !isReact16 && this.renderPortal(this.props);\n    }\n  }, {\n    key: \"componentWillUnmount\",\n    value: function componentWillUnmount() {\n      if (!_safeHTMLElement.canUseDOM || !this.node || !this.portal) return;\n\n      var state = this.portal.state;\n      var now = Date.now();\n      var closesAt = state.isOpen && this.props.closeTimeoutMS && (state.closesAt || now + this.props.closeTimeoutMS);\n\n      if (closesAt) {\n        if (!state.beforeClose) {\n          this.portal.closeWithTimeout();\n        }\n\n        setTimeout(this.removePortal, closesAt - now);\n      } else {\n        this.removePortal();\n      }\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      if (!_safeHTMLElement.canUseDOM || !isReact16) {\n        return null;\n      }\n\n      if (!this.node && isReact16) {\n        this.node = createHTMLElement(\"div\");\n      }\n\n      var createPortal = getCreatePortal();\n      return createPortal(_react2.default.createElement(_ModalPortal2.default, _extends({\n        ref: this.portalRef,\n        defaultStyles: Modal.defaultStyles\n      }, this.props)), this.node);\n    }\n  }], [{\n    key: \"setAppElement\",\n    value: function setAppElement(element) {\n      ariaAppHider.setElement(element);\n    }\n\n    /* eslint-disable react/no-unused-prop-types */\n\n    /* eslint-enable react/no-unused-prop-types */\n\n  }]);\n\n  return Modal;\n}(_react.Component);\n\nModal.propTypes = {\n  isOpen: _propTypes2.default.bool.isRequired,\n  style: _propTypes2.default.shape({\n    content: _propTypes2.default.object,\n    overlay: _propTypes2.default.object\n  }),\n  portalClassName: _propTypes2.default.string,\n  bodyOpenClassName: _propTypes2.default.string,\n  htmlOpenClassName: _propTypes2.default.string,\n  className: _propTypes2.default.oneOfType([_propTypes2.default.string, _propTypes2.default.shape({\n    base: _propTypes2.default.string.isRequired,\n    afterOpen: _propTypes2.default.string.isRequired,\n    beforeClose: _propTypes2.default.string.isRequired\n  })]),\n  overlayClassName: _propTypes2.default.oneOfType([_propTypes2.default.string, _propTypes2.default.shape({\n    base: _propTypes2.default.string.isRequired,\n    afterOpen: _propTypes2.default.string.isRequired,\n    beforeClose: _propTypes2.default.string.isRequired\n  })]),\n  appElement: _propTypes2.default.oneOfType([_propTypes2.default.instanceOf(_safeHTMLElement2.default), _propTypes2.default.instanceOf(_safeHTMLElement.SafeHTMLCollection), _propTypes2.default.instanceOf(_safeHTMLElement.SafeNodeList), _propTypes2.default.arrayOf(_propTypes2.default.instanceOf(_safeHTMLElement2.default))]),\n  onAfterOpen: _propTypes2.default.func,\n  onRequestClose: _propTypes2.default.func,\n  closeTimeoutMS: _propTypes2.default.number,\n  ariaHideApp: _propTypes2.default.bool,\n  shouldFocusAfterRender: _propTypes2.default.bool,\n  shouldCloseOnOverlayClick: _propTypes2.default.bool,\n  shouldReturnFocusAfterClose: _propTypes2.default.bool,\n  preventScroll: _propTypes2.default.bool,\n  parentSelector: _propTypes2.default.func,\n  aria: _propTypes2.default.object,\n  data: _propTypes2.default.object,\n  role: _propTypes2.default.string,\n  contentLabel: _propTypes2.default.string,\n  shouldCloseOnEsc: _propTypes2.default.bool,\n  overlayRef: _propTypes2.default.func,\n  contentRef: _propTypes2.default.func,\n  id: _propTypes2.default.string,\n  overlayElement: _propTypes2.default.func,\n  contentElement: _propTypes2.default.func\n};\nModal.defaultProps = {\n  isOpen: false,\n  portalClassName: portalClassName,\n  bodyOpenClassName: bodyOpenClassName,\n  role: \"dialog\",\n  ariaHideApp: true,\n  closeTimeoutMS: 0,\n  shouldFocusAfterRender: true,\n  shouldCloseOnEsc: true,\n  shouldCloseOnOverlayClick: true,\n  shouldReturnFocusAfterClose: true,\n  preventScroll: false,\n  parentSelector: function parentSelector() {\n    return document.body;\n  },\n  overlayElement: function overlayElement(props, contentEl) {\n    return _react2.default.createElement(\n      \"div\",\n      props,\n      contentEl\n    );\n  },\n  contentElement: function contentElement(props, children) {\n    return _react2.default.createElement(\n      \"div\",\n      props,\n      children\n    );\n  }\n};\nModal.defaultStyles = {\n  overlay: {\n    position: \"fixed\",\n    top: 0,\n    left: 0,\n    right: 0,\n    bottom: 0,\n    backgroundColor: \"rgba(255, 255, 255, 0.75)\"\n  },\n  content: {\n    position: \"absolute\",\n    top: \"40px\",\n    left: \"40px\",\n    right: \"40px\",\n    bottom: \"40px\",\n    border: \"1px solid #ccc\",\n    background: \"#fff\",\n    overflow: \"auto\",\n    WebkitOverflowScrolling: \"touch\",\n    borderRadius: \"4px\",\n    outline: \"none\",\n    padding: \"20px\"\n  }\n};\n\n\n(0, _reactLifecyclesCompat.polyfill)(Modal);\n\nif (process.env.NODE_ENV !== \"production\") {\n  Modal.setCreateHTMLElement = function (fn) {\n    return createHTMLElement = fn;\n  };\n}\n\nexports.default = Modal;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _react = require(\"react\");\n\nvar _propTypes = require(\"prop-types\");\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _focusManager = require(\"../helpers/focusManager\");\n\nvar focusManager = _interopRequireWildcard(_focusManager);\n\nvar _scopeTab = require(\"../helpers/scopeTab\");\n\nvar _scopeTab2 = _interopRequireDefault(_scopeTab);\n\nvar _ariaAppHider = require(\"../helpers/ariaAppHider\");\n\nvar ariaAppHider = _interopRequireWildcard(_ariaAppHider);\n\nvar _classList = require(\"../helpers/classList\");\n\nvar classList = _interopRequireWildcard(_classList);\n\nvar _safeHTMLElement = require(\"../helpers/safeHTMLElement\");\n\nvar _safeHTMLElement2 = _interopRequireDefault(_safeHTMLElement);\n\nvar _portalOpenInstances = require(\"../helpers/portalOpenInstances\");\n\nvar _portalOpenInstances2 = _interopRequireDefault(_portalOpenInstances);\n\nrequire(\"../helpers/bodyTrap\");\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n// so that our CSS is statically analyzable\nvar CLASS_NAMES = {\n  overlay: \"ReactModal__Overlay\",\n  content: \"ReactModal__Content\"\n};\n\n/**\n * We need to support the deprecated `KeyboardEvent.keyCode` in addition to\n * `KeyboardEvent.code` for apps that still support IE11. Can be removed when\n * `react-modal` only supports React >18 (which dropped IE support).\n */\nvar isTabKey = function isTabKey(event) {\n  return event.code === \"Tab\" || event.keyCode === 9;\n};\nvar isEscKey = function isEscKey(event) {\n  return event.code === \"Escape\" || event.keyCode === 27;\n};\n\nvar ariaHiddenInstances = 0;\n\nvar ModalPortal = function (_Component) {\n  _inherits(ModalPortal, _Component);\n\n  function ModalPortal(props) {\n    _classCallCheck(this, ModalPortal);\n\n    var _this = _possibleConstructorReturn(this, (ModalPortal.__proto__ || Object.getPrototypeOf(ModalPortal)).call(this, props));\n\n    _this.setOverlayRef = function (overlay) {\n      _this.overlay = overlay;\n      _this.props.overlayRef && _this.props.overlayRef(overlay);\n    };\n\n    _this.setContentRef = function (content) {\n      _this.content = content;\n      _this.props.contentRef && _this.props.contentRef(content);\n    };\n\n    _this.afterClose = function () {\n      var _this$props = _this.props,\n          appElement = _this$props.appElement,\n          ariaHideApp = _this$props.ariaHideApp,\n          htmlOpenClassName = _this$props.htmlOpenClassName,\n          bodyOpenClassName = _this$props.bodyOpenClassName,\n          parentSelector = _this$props.parentSelector;\n\n\n      var parentDocument = parentSelector && parentSelector().ownerDocument || document;\n\n      // Remove classes.\n      bodyOpenClassName && classList.remove(parentDocument.body, bodyOpenClassName);\n\n      htmlOpenClassName && classList.remove(parentDocument.getElementsByTagName(\"html\")[0], htmlOpenClassName);\n\n      // Reset aria-hidden attribute if all modals have been removed\n      if (ariaHideApp && ariaHiddenInstances > 0) {\n        ariaHiddenInstances -= 1;\n\n        if (ariaHiddenInstances === 0) {\n          ariaAppHider.show(appElement);\n        }\n      }\n\n      if (_this.props.shouldFocusAfterRender) {\n        if (_this.props.shouldReturnFocusAfterClose) {\n          focusManager.returnFocus(_this.props.preventScroll);\n          focusManager.teardownScopedFocus();\n        } else {\n          focusManager.popWithoutFocus();\n        }\n      }\n\n      if (_this.props.onAfterClose) {\n        _this.props.onAfterClose();\n      }\n\n      _portalOpenInstances2.default.deregister(_this);\n    };\n\n    _this.open = function () {\n      _this.beforeOpen();\n      if (_this.state.afterOpen && _this.state.beforeClose) {\n        clearTimeout(_this.closeTimer);\n        _this.setState({ beforeClose: false });\n      } else {\n        if (_this.props.shouldFocusAfterRender) {\n          focusManager.setupScopedFocus(_this.node);\n          focusManager.markForFocusLater();\n        }\n\n        _this.setState({ isOpen: true }, function () {\n          _this.openAnimationFrame = requestAnimationFrame(function () {\n            _this.setState({ afterOpen: true });\n\n            if (_this.props.isOpen && _this.props.onAfterOpen) {\n              _this.props.onAfterOpen({\n                overlayEl: _this.overlay,\n                contentEl: _this.content\n              });\n            }\n          });\n        });\n      }\n    };\n\n    _this.close = function () {\n      if (_this.props.closeTimeoutMS > 0) {\n        _this.closeWithTimeout();\n      } else {\n        _this.closeWithoutTimeout();\n      }\n    };\n\n    _this.focusContent = function () {\n      return _this.content && !_this.contentHasFocus() && _this.content.focus({ preventScroll: true });\n    };\n\n    _this.closeWithTimeout = function () {\n      var closesAt = Date.now() + _this.props.closeTimeoutMS;\n      _this.setState({ beforeClose: true, closesAt: closesAt }, function () {\n        _this.closeTimer = setTimeout(_this.closeWithoutTimeout, _this.state.closesAt - Date.now());\n      });\n    };\n\n    _this.closeWithoutTimeout = function () {\n      _this.setState({\n        beforeClose: false,\n        isOpen: false,\n        afterOpen: false,\n        closesAt: null\n      }, _this.afterClose);\n    };\n\n    _this.handleKeyDown = function (event) {\n      if (isTabKey(event)) {\n        (0, _scopeTab2.default)(_this.content, event);\n      }\n\n      if (_this.props.shouldCloseOnEsc && isEscKey(event)) {\n        event.stopPropagation();\n        _this.requestClose(event);\n      }\n    };\n\n    _this.handleOverlayOnClick = function (event) {\n      if (_this.shouldClose === null) {\n        _this.shouldClose = true;\n      }\n\n      if (_this.shouldClose && _this.props.shouldCloseOnOverlayClick) {\n        if (_this.ownerHandlesClose()) {\n          _this.requestClose(event);\n        } else {\n          _this.focusContent();\n        }\n      }\n      _this.shouldClose = null;\n    };\n\n    _this.handleContentOnMouseUp = function () {\n      _this.shouldClose = false;\n    };\n\n    _this.handleOverlayOnMouseDown = function (event) {\n      if (!_this.props.shouldCloseOnOverlayClick && event.target == _this.overlay) {\n        event.preventDefault();\n      }\n    };\n\n    _this.handleContentOnClick = function () {\n      _this.shouldClose = false;\n    };\n\n    _this.handleContentOnMouseDown = function () {\n      _this.shouldClose = false;\n    };\n\n    _this.requestClose = function (event) {\n      return _this.ownerHandlesClose() && _this.props.onRequestClose(event);\n    };\n\n    _this.ownerHandlesClose = function () {\n      return _this.props.onRequestClose;\n    };\n\n    _this.shouldBeClosed = function () {\n      return !_this.state.isOpen && !_this.state.beforeClose;\n    };\n\n    _this.contentHasFocus = function () {\n      return document.activeElement === _this.content || _this.content.contains(document.activeElement);\n    };\n\n    _this.buildClassName = function (which, additional) {\n      var classNames = (typeof additional === \"undefined\" ? \"undefined\" : _typeof(additional)) === \"object\" ? additional : {\n        base: CLASS_NAMES[which],\n        afterOpen: CLASS_NAMES[which] + \"--after-open\",\n        beforeClose: CLASS_NAMES[which] + \"--before-close\"\n      };\n      var className = classNames.base;\n      if (_this.state.afterOpen) {\n        className = className + \" \" + classNames.afterOpen;\n      }\n      if (_this.state.beforeClose) {\n        className = className + \" \" + classNames.beforeClose;\n      }\n      return typeof additional === \"string\" && additional ? className + \" \" + additional : className;\n    };\n\n    _this.attributesFromObject = function (prefix, items) {\n      return Object.keys(items).reduce(function (acc, name) {\n        acc[prefix + \"-\" + name] = items[name];\n        return acc;\n      }, {});\n    };\n\n    _this.state = {\n      afterOpen: false,\n      beforeClose: false\n    };\n\n    _this.shouldClose = null;\n    _this.moveFromContentToOverlay = null;\n    return _this;\n  }\n\n  _createClass(ModalPortal, [{\n    key: \"componentDidMount\",\n    value: function componentDidMount() {\n      if (this.props.isOpen) {\n        this.open();\n      }\n    }\n  }, {\n    key: \"componentDidUpdate\",\n    value: function componentDidUpdate(prevProps, prevState) {\n      if (process.env.NODE_ENV !== \"production\") {\n        if (prevProps.bodyOpenClassName !== this.props.bodyOpenClassName) {\n          // eslint-disable-next-line no-console\n          console.warn('React-Modal: \"bodyOpenClassName\" prop has been modified. ' + \"This may cause unexpected behavior when multiple modals are open.\");\n        }\n        if (prevProps.htmlOpenClassName !== this.props.htmlOpenClassName) {\n          // eslint-disable-next-line no-console\n          console.warn('React-Modal: \"htmlOpenClassName\" prop has been modified. ' + \"This may cause unexpected behavior when multiple modals are open.\");\n        }\n      }\n\n      if (this.props.isOpen && !prevProps.isOpen) {\n        this.open();\n      } else if (!this.props.isOpen && prevProps.isOpen) {\n        this.close();\n      }\n\n      // Focus only needs to be set once when the modal is being opened\n      if (this.props.shouldFocusAfterRender && this.state.isOpen && !prevState.isOpen) {\n        this.focusContent();\n      }\n    }\n  }, {\n    key: \"componentWillUnmount\",\n    value: function componentWillUnmount() {\n      if (this.state.isOpen) {\n        this.afterClose();\n      }\n      clearTimeout(this.closeTimer);\n      cancelAnimationFrame(this.openAnimationFrame);\n    }\n  }, {\n    key: \"beforeOpen\",\n    value: function beforeOpen() {\n      var _props = this.props,\n          appElement = _props.appElement,\n          ariaHideApp = _props.ariaHideApp,\n          htmlOpenClassName = _props.htmlOpenClassName,\n          bodyOpenClassName = _props.bodyOpenClassName,\n          parentSelector = _props.parentSelector;\n\n\n      var parentDocument = parentSelector && parentSelector().ownerDocument || document;\n\n      // Add classes.\n      bodyOpenClassName && classList.add(parentDocument.body, bodyOpenClassName);\n\n      htmlOpenClassName && classList.add(parentDocument.getElementsByTagName(\"html\")[0], htmlOpenClassName);\n\n      if (ariaHideApp) {\n        ariaHiddenInstances += 1;\n        ariaAppHider.hide(appElement);\n      }\n\n      _portalOpenInstances2.default.register(this);\n    }\n\n    // Don't steal focus from inner elements\n\n  }, {\n    key: \"render\",\n    value: function render() {\n      var _props2 = this.props,\n          id = _props2.id,\n          className = _props2.className,\n          overlayClassName = _props2.overlayClassName,\n          defaultStyles = _props2.defaultStyles,\n          children = _props2.children;\n\n      var contentStyles = className ? {} : defaultStyles.content;\n      var overlayStyles = overlayClassName ? {} : defaultStyles.overlay;\n\n      if (this.shouldBeClosed()) {\n        return null;\n      }\n\n      var overlayProps = {\n        ref: this.setOverlayRef,\n        className: this.buildClassName(\"overlay\", overlayClassName),\n        style: _extends({}, overlayStyles, this.props.style.overlay),\n        onClick: this.handleOverlayOnClick,\n        onMouseDown: this.handleOverlayOnMouseDown\n      };\n\n      var contentProps = _extends({\n        id: id,\n        ref: this.setContentRef,\n        style: _extends({}, contentStyles, this.props.style.content),\n        className: this.buildClassName(\"content\", className),\n        tabIndex: \"-1\",\n        onKeyDown: this.handleKeyDown,\n        onMouseDown: this.handleContentOnMouseDown,\n        onMouseUp: this.handleContentOnMouseUp,\n        onClick: this.handleContentOnClick,\n        role: this.props.role,\n        \"aria-label\": this.props.contentLabel\n      }, this.attributesFromObject(\"aria\", _extends({ modal: true }, this.props.aria)), this.attributesFromObject(\"data\", this.props.data || {}), {\n        \"data-testid\": this.props.testId\n      });\n\n      var contentElement = this.props.contentElement(contentProps, children);\n      return this.props.overlayElement(overlayProps, contentElement);\n    }\n  }]);\n\n  return ModalPortal;\n}(_react.Component);\n\nModalPortal.defaultProps = {\n  style: {\n    overlay: {},\n    content: {}\n  },\n  defaultStyles: {}\n};\nModalPortal.propTypes = {\n  isOpen: _propTypes2.default.bool.isRequired,\n  defaultStyles: _propTypes2.default.shape({\n    content: _propTypes2.default.object,\n    overlay: _propTypes2.default.object\n  }),\n  style: _propTypes2.default.shape({\n    content: _propTypes2.default.object,\n    overlay: _propTypes2.default.object\n  }),\n  className: _propTypes2.default.oneOfType([_propTypes2.default.string, _propTypes2.default.object]),\n  overlayClassName: _propTypes2.default.oneOfType([_propTypes2.default.string, _propTypes2.default.object]),\n  parentSelector: _propTypes2.default.func,\n  bodyOpenClassName: _propTypes2.default.string,\n  htmlOpenClassName: _propTypes2.default.string,\n  ariaHideApp: _propTypes2.default.bool,\n  appElement: _propTypes2.default.oneOfType([_propTypes2.default.instanceOf(_safeHTMLElement2.default), _propTypes2.default.instanceOf(_safeHTMLElement.SafeHTMLCollection), _propTypes2.default.instanceOf(_safeHTMLElement.SafeNodeList), _propTypes2.default.arrayOf(_propTypes2.default.instanceOf(_safeHTMLElement2.default))]),\n  onAfterOpen: _propTypes2.default.func,\n  onAfterClose: _propTypes2.default.func,\n  onRequestClose: _propTypes2.default.func,\n  closeTimeoutMS: _propTypes2.default.number,\n  shouldFocusAfterRender: _propTypes2.default.bool,\n  shouldCloseOnOverlayClick: _propTypes2.default.bool,\n  shouldReturnFocusAfterClose: _propTypes2.default.bool,\n  preventScroll: _propTypes2.default.bool,\n  role: _propTypes2.default.string,\n  contentLabel: _propTypes2.default.string,\n  aria: _propTypes2.default.object,\n  data: _propTypes2.default.object,\n  children: _propTypes2.default.node,\n  shouldCloseOnEsc: _propTypes2.default.bool,\n  overlayRef: _propTypes2.default.func,\n  contentRef: _propTypes2.default.func,\n  id: _propTypes2.default.string,\n  overlayElement: _propTypes2.default.func,\n  contentElement: _propTypes2.default.func,\n  testId: _propTypes2.default.string\n};\nexports.default = ModalPortal;\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.resetState = resetState;\nexports.log = log;\nexports.assertNodeList = assertNodeList;\nexports.setElement = setElement;\nexports.validateElement = validateElement;\nexports.hide = hide;\nexports.show = show;\nexports.documentNotReadyOrSSRTesting = documentNotReadyOrSSRTesting;\n\nvar _warning = require(\"warning\");\n\nvar _warning2 = _interopRequireDefault(_warning);\n\nvar _safeHTMLElement = require(\"./safeHTMLElement\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar globalElement = null;\n\n/* eslint-disable no-console */\n/* istanbul ignore next */\nfunction resetState() {\n  if (globalElement) {\n    if (globalElement.removeAttribute) {\n      globalElement.removeAttribute(\"aria-hidden\");\n    } else if (globalElement.length != null) {\n      globalElement.forEach(function (element) {\n        return element.removeAttribute(\"aria-hidden\");\n      });\n    } else {\n      document.querySelectorAll(globalElement).forEach(function (element) {\n        return element.removeAttribute(\"aria-hidden\");\n      });\n    }\n  }\n  globalElement = null;\n}\n\n/* istanbul ignore next */\nfunction log() {\n  if (process.env.NODE_ENV !== \"production\") {\n    var check = globalElement || {};\n    console.log(\"ariaAppHider ----------\");\n    console.log(check.nodeName, check.className, check.id);\n    console.log(\"end ariaAppHider ----------\");\n  }\n}\n/* eslint-enable no-console */\n\nfunction assertNodeList(nodeList, selector) {\n  if (!nodeList || !nodeList.length) {\n    throw new Error(\"react-modal: No elements were found for selector \" + selector + \".\");\n  }\n}\n\nfunction setElement(element) {\n  var useElement = element;\n  if (typeof useElement === \"string\" && _safeHTMLElement.canUseDOM) {\n    var el = document.querySelectorAll(useElement);\n    assertNodeList(el, useElement);\n    useElement = el;\n  }\n  globalElement = useElement || globalElement;\n  return globalElement;\n}\n\nfunction validateElement(appElement) {\n  var el = appElement || globalElement;\n  if (el) {\n    return Array.isArray(el) || el instanceof HTMLCollection || el instanceof NodeList ? el : [el];\n  } else {\n    (0, _warning2.default)(false, [\"react-modal: App element is not defined.\", \"Please use `Modal.setAppElement(el)` or set `appElement={el}`.\", \"This is needed so screen readers don't see main content\", \"when modal is opened. It is not recommended, but you can opt-out\", \"by setting `ariaHideApp={false}`.\"].join(\" \"));\n\n    return [];\n  }\n}\n\nfunction hide(appElement) {\n  var _iteratorNormalCompletion = true;\n  var _didIteratorError = false;\n  var _iteratorError = undefined;\n\n  try {\n    for (var _iterator = validateElement(appElement)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n      var el = _step.value;\n\n      el.setAttribute(\"aria-hidden\", \"true\");\n    }\n  } catch (err) {\n    _didIteratorError = true;\n    _iteratorError = err;\n  } finally {\n    try {\n      if (!_iteratorNormalCompletion && _iterator.return) {\n        _iterator.return();\n      }\n    } finally {\n      if (_didIteratorError) {\n        throw _iteratorError;\n      }\n    }\n  }\n}\n\nfunction show(appElement) {\n  var _iteratorNormalCompletion2 = true;\n  var _didIteratorError2 = false;\n  var _iteratorError2 = undefined;\n\n  try {\n    for (var _iterator2 = validateElement(appElement)[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n      var el = _step2.value;\n\n      el.removeAttribute(\"aria-hidden\");\n    }\n  } catch (err) {\n    _didIteratorError2 = true;\n    _iteratorError2 = err;\n  } finally {\n    try {\n      if (!_iteratorNormalCompletion2 && _iterator2.return) {\n        _iterator2.return();\n      }\n    } finally {\n      if (_didIteratorError2) {\n        throw _iteratorError2;\n      }\n    }\n  }\n}\n\nfunction documentNotReadyOrSSRTesting() {\n  globalElement = null;\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.resetState = resetState;\nexports.log = log;\n\nvar _portalOpenInstances = require(\"./portalOpenInstances\");\n\nvar _portalOpenInstances2 = _interopRequireDefault(_portalOpenInstances);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// Body focus trap see Issue #742\n\nvar before = void 0,\n    after = void 0,\n    instances = [];\n\n/* eslint-disable no-console */\n/* istanbul ignore next */\nfunction resetState() {\n  var _arr = [before, after];\n\n  for (var _i = 0; _i < _arr.length; _i++) {\n    var item = _arr[_i];\n    if (!item) continue;\n    item.parentNode && item.parentNode.removeChild(item);\n  }\n  before = after = null;\n  instances = [];\n}\n\n/* istanbul ignore next */\nfunction log() {\n  console.log(\"bodyTrap ----------\");\n  console.log(instances.length);\n  var _arr2 = [before, after];\n  for (var _i2 = 0; _i2 < _arr2.length; _i2++) {\n    var item = _arr2[_i2];\n    var check = item || {};\n    console.log(check.nodeName, check.className, check.id);\n  }\n  console.log(\"edn bodyTrap ----------\");\n}\n/* eslint-enable no-console */\n\nfunction focusContent() {\n  if (instances.length === 0) {\n    if (process.env.NODE_ENV !== \"production\") {\n      // eslint-disable-next-line no-console\n      console.warn(\"React-Modal: Open instances > 0 expected\");\n    }\n    return;\n  }\n  instances[instances.length - 1].focusContent();\n}\n\nfunction bodyTrap(eventType, openInstances) {\n  if (!before && !after) {\n    before = document.createElement(\"div\");\n    before.setAttribute(\"data-react-modal-body-trap\", \"\");\n    before.style.position = \"absolute\";\n    before.style.opacity = \"0\";\n    before.setAttribute(\"tabindex\", \"0\");\n    before.addEventListener(\"focus\", focusContent);\n    after = before.cloneNode();\n    after.addEventListener(\"focus\", focusContent);\n  }\n\n  instances = openInstances;\n\n  if (instances.length > 0) {\n    // Add focus trap\n    if (document.body.firstChild !== before) {\n      document.body.insertBefore(before, document.body.firstChild);\n    }\n    if (document.body.lastChild !== after) {\n      document.body.appendChild(after);\n    }\n  } else {\n    // Remove focus trap\n    if (before.parentElement) {\n      before.parentElement.removeChild(before);\n    }\n    if (after.parentElement) {\n      after.parentElement.removeChild(after);\n    }\n  }\n}\n\n_portalOpenInstances2.default.subscribe(bodyTrap);","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.resetState = resetState;\nexports.log = log;\nvar htmlClassList = {};\nvar docBodyClassList = {};\n\n/* eslint-disable no-console */\n/* istanbul ignore next */\nfunction removeClass(at, cls) {\n  at.classList.remove(cls);\n}\n\n/* istanbul ignore next */\nfunction resetState() {\n  var htmlElement = document.getElementsByTagName(\"html\")[0];\n  for (var cls in htmlClassList) {\n    removeClass(htmlElement, htmlClassList[cls]);\n  }\n\n  var body = document.body;\n  for (var _cls in docBodyClassList) {\n    removeClass(body, docBodyClassList[_cls]);\n  }\n\n  htmlClassList = {};\n  docBodyClassList = {};\n}\n\n/* istanbul ignore next */\nfunction log() {\n  if (process.env.NODE_ENV !== \"production\") {\n    var classes = document.getElementsByTagName(\"html\")[0].className;\n    var buffer = \"Show tracked classes:\\n\\n\";\n\n    buffer += \"<html /> (\" + classes + \"):\\n  \";\n    for (var x in htmlClassList) {\n      buffer += \"  \" + x + \" \" + htmlClassList[x] + \"\\n  \";\n    }\n\n    classes = document.body.className;\n\n    buffer += \"\\n\\ndoc.body (\" + classes + \"):\\n  \";\n    for (var _x in docBodyClassList) {\n      buffer += \"  \" + _x + \" \" + docBodyClassList[_x] + \"\\n  \";\n    }\n\n    buffer += \"\\n\";\n\n    console.log(buffer);\n  }\n}\n/* eslint-enable no-console */\n\n/**\n * Track the number of reference of a class.\n * @param {object} poll The poll to receive the reference.\n * @param {string} className The class name.\n * @return {string}\n */\nvar incrementReference = function incrementReference(poll, className) {\n  if (!poll[className]) {\n    poll[className] = 0;\n  }\n  poll[className] += 1;\n  return className;\n};\n\n/**\n * Drop the reference of a class.\n * @param {object} poll The poll to receive the reference.\n * @param {string} className The class name.\n * @return {string}\n */\nvar decrementReference = function decrementReference(poll, className) {\n  if (poll[className]) {\n    poll[className] -= 1;\n  }\n  return className;\n};\n\n/**\n * Track a class and add to the given class list.\n * @param {Object} classListRef A class list of an element.\n * @param {Object} poll         The poll to be used.\n * @param {Array}  classes      The list of classes to be tracked.\n */\nvar trackClass = function trackClass(classListRef, poll, classes) {\n  classes.forEach(function (className) {\n    incrementReference(poll, className);\n    classListRef.add(className);\n  });\n};\n\n/**\n * Untrack a class and remove from the given class list if the reference\n * reaches 0.\n * @param {Object} classListRef A class list of an element.\n * @param {Object} poll         The poll to be used.\n * @param {Array}  classes      The list of classes to be untracked.\n */\nvar untrackClass = function untrackClass(classListRef, poll, classes) {\n  classes.forEach(function (className) {\n    decrementReference(poll, className);\n    poll[className] === 0 && classListRef.remove(className);\n  });\n};\n\n/**\n * Public inferface to add classes to the document.body.\n * @param {string} bodyClass The class string to be added.\n *                           It may contain more then one class\n *                           with ' ' as separator.\n */\nvar add = exports.add = function add(element, classString) {\n  return trackClass(element.classList, element.nodeName.toLowerCase() == \"html\" ? htmlClassList : docBodyClassList, classString.split(\" \"));\n};\n\n/**\n * Public inferface to remove classes from the document.body.\n * @param {string} bodyClass The class string to be added.\n *                           It may contain more then one class\n *                           with ' ' as separator.\n */\nvar remove = exports.remove = function remove(element, classString) {\n  return untrackClass(element.classList, element.nodeName.toLowerCase() == \"html\" ? htmlClassList : docBodyClassList, classString.split(\" \"));\n};","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.resetState = resetState;\nexports.log = log;\nexports.handleBlur = handleBlur;\nexports.handleFocus = handleFocus;\nexports.markForFocusLater = markForFocusLater;\nexports.returnFocus = returnFocus;\nexports.popWithoutFocus = popWithoutFocus;\nexports.setupScopedFocus = setupScopedFocus;\nexports.teardownScopedFocus = teardownScopedFocus;\n\nvar _tabbable = require(\"../helpers/tabbable\");\n\nvar _tabbable2 = _interopRequireDefault(_tabbable);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar focusLaterElements = [];\nvar modalElement = null;\nvar needToFocus = false;\n\n/* eslint-disable no-console */\n/* istanbul ignore next */\nfunction resetState() {\n  focusLaterElements = [];\n}\n\n/* istanbul ignore next */\nfunction log() {\n  if (process.env.NODE_ENV !== \"production\") {\n    console.log(\"focusManager ----------\");\n    focusLaterElements.forEach(function (f) {\n      var check = f || {};\n      console.log(check.nodeName, check.className, check.id);\n    });\n    console.log(\"end focusManager ----------\");\n  }\n}\n/* eslint-enable no-console */\n\nfunction handleBlur() {\n  needToFocus = true;\n}\n\nfunction handleFocus() {\n  if (needToFocus) {\n    needToFocus = false;\n    if (!modalElement) {\n      return;\n    }\n    // need to see how jQuery shims document.on('focusin') so we don't need the\n    // setTimeout, firefox doesn't support focusin, if it did, we could focus\n    // the element outside of a setTimeout. Side-effect of this implementation\n    // is that the document.body gets focus, and then we focus our element right\n    // after, seems fine.\n    setTimeout(function () {\n      if (modalElement.contains(document.activeElement)) {\n        return;\n      }\n      var el = (0, _tabbable2.default)(modalElement)[0] || modalElement;\n      el.focus();\n    }, 0);\n  }\n}\n\nfunction markForFocusLater() {\n  focusLaterElements.push(document.activeElement);\n}\n\n/* eslint-disable no-console */\nfunction returnFocus() {\n  var preventScroll = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n\n  var toFocus = null;\n  try {\n    if (focusLaterElements.length !== 0) {\n      toFocus = focusLaterElements.pop();\n      toFocus.focus({ preventScroll: preventScroll });\n    }\n    return;\n  } catch (e) {\n    console.warn([\"You tried to return focus to\", toFocus, \"but it is not in the DOM anymore\"].join(\" \"));\n  }\n}\n/* eslint-enable no-console */\n\nfunction popWithoutFocus() {\n  focusLaterElements.length > 0 && focusLaterElements.pop();\n}\n\nfunction setupScopedFocus(element) {\n  modalElement = element;\n\n  if (window.addEventListener) {\n    window.addEventListener(\"blur\", handleBlur, false);\n    document.addEventListener(\"focus\", handleFocus, true);\n  } else {\n    window.attachEvent(\"onBlur\", handleBlur);\n    document.attachEvent(\"onFocus\", handleFocus);\n  }\n}\n\nfunction teardownScopedFocus() {\n  modalElement = null;\n\n  if (window.addEventListener) {\n    window.removeEventListener(\"blur\", handleBlur);\n    document.removeEventListener(\"focus\", handleFocus);\n  } else {\n    window.detachEvent(\"onBlur\", handleBlur);\n    document.detachEvent(\"onFocus\", handleFocus);\n  }\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.log = log;\nexports.resetState = resetState;\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n// Tracks portals that are open and emits events to subscribers\n\nvar PortalOpenInstances = function PortalOpenInstances() {\n  var _this = this;\n\n  _classCallCheck(this, PortalOpenInstances);\n\n  this.register = function (openInstance) {\n    if (_this.openInstances.indexOf(openInstance) !== -1) {\n      if (process.env.NODE_ENV !== \"production\") {\n        // eslint-disable-next-line no-console\n        console.warn(\"React-Modal: Cannot register modal instance that's already open\");\n      }\n      return;\n    }\n    _this.openInstances.push(openInstance);\n    _this.emit(\"register\");\n  };\n\n  this.deregister = function (openInstance) {\n    var index = _this.openInstances.indexOf(openInstance);\n    if (index === -1) {\n      if (process.env.NODE_ENV !== \"production\") {\n        // eslint-disable-next-line no-console\n        console.warn(\"React-Modal: Unable to deregister \" + openInstance + \" as \" + \"it was never registered\");\n      }\n      return;\n    }\n    _this.openInstances.splice(index, 1);\n    _this.emit(\"deregister\");\n  };\n\n  this.subscribe = function (callback) {\n    _this.subscribers.push(callback);\n  };\n\n  this.emit = function (eventType) {\n    _this.subscribers.forEach(function (subscriber) {\n      return subscriber(eventType,\n      // shallow copy to avoid accidental mutation\n      _this.openInstances.slice());\n    });\n  };\n\n  this.openInstances = [];\n  this.subscribers = [];\n};\n\nvar portalOpenInstances = new PortalOpenInstances();\n\n/* eslint-disable no-console */\n/* istanbul ignore next */\nfunction log() {\n  console.log(\"portalOpenInstances ----------\");\n  console.log(portalOpenInstances.openInstances.length);\n  portalOpenInstances.openInstances.forEach(function (p) {\n    return console.log(p);\n  });\n  console.log(\"end portalOpenInstances ----------\");\n}\n\n/* istanbul ignore next */\nfunction resetState() {\n  portalOpenInstances = new PortalOpenInstances();\n}\n/* eslint-enable no-console */\n\nexports.default = portalOpenInstances;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.canUseDOM = exports.SafeNodeList = exports.SafeHTMLCollection = undefined;\n\nvar _exenv = require(\"exenv\");\n\nvar _exenv2 = _interopRequireDefault(_exenv);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar EE = _exenv2.default;\n\nvar SafeHTMLElement = EE.canUseDOM ? window.HTMLElement : {};\n\nvar SafeHTMLCollection = exports.SafeHTMLCollection = EE.canUseDOM ? window.HTMLCollection : {};\n\nvar SafeNodeList = exports.SafeNodeList = EE.canUseDOM ? window.NodeList : {};\n\nvar canUseDOM = exports.canUseDOM = EE.canUseDOM;\n\nexports.default = SafeHTMLElement;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = scopeTab;\n\nvar _tabbable = require(\"./tabbable\");\n\nvar _tabbable2 = _interopRequireDefault(_tabbable);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction getActiveElement() {\n  var el = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : document;\n\n  return el.activeElement.shadowRoot ? getActiveElement(el.activeElement.shadowRoot) : el.activeElement;\n}\n\nfunction scopeTab(node, event) {\n  var tabbable = (0, _tabbable2.default)(node);\n\n  if (!tabbable.length) {\n    // Do nothing, since there are no elements that can receive focus.\n    event.preventDefault();\n    return;\n  }\n\n  var target = void 0;\n\n  var shiftKey = event.shiftKey;\n  var head = tabbable[0];\n  var tail = tabbable[tabbable.length - 1];\n  var activeElement = getActiveElement();\n\n  // proceed with default browser behavior on tab.\n  // Focus on last element on shift + tab.\n  if (node === activeElement) {\n    if (!shiftKey) return;\n    target = tail;\n  }\n\n  if (tail === activeElement && !shiftKey) {\n    target = head;\n  }\n\n  if (head === activeElement && shiftKey) {\n    target = tail;\n  }\n\n  if (target) {\n    event.preventDefault();\n    target.focus();\n    return;\n  }\n\n  // Safari radio issue.\n  //\n  // Safari does not move the focus to the radio button,\n  // so we need to force it to really walk through all elements.\n  //\n  // This is very error prone, since we are trying to guess\n  // if it is a safari browser from the first occurence between\n  // chrome or safari.\n  //\n  // The chrome user agent contains the first ocurrence\n  // as the 'chrome/version' and later the 'safari/version'.\n  var checkSafari = /(\\bChrome\\b|\\bSafari\\b)\\//.exec(navigator.userAgent);\n  var isSafariDesktop = checkSafari != null && checkSafari[1] != \"Chrome\" && /\\biPod\\b|\\biPad\\b/g.exec(navigator.userAgent) == null;\n\n  // If we are not in safari desktop, let the browser control\n  // the focus\n  if (!isSafariDesktop) return;\n\n  var x = tabbable.indexOf(activeElement);\n\n  if (x > -1) {\n    x += shiftKey ? -1 : 1;\n  }\n\n  target = tabbable[x];\n\n  // If the tabbable element does not exist,\n  // focus head/tail based on shiftKey\n  if (typeof target === \"undefined\") {\n    event.preventDefault();\n    target = shiftKey ? tail : head;\n    target.focus();\n    return;\n  }\n\n  event.preventDefault();\n\n  target.focus();\n}\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = findTabbableDescendants;\n/*!\n * Adapted from jQuery UI core\n *\n * http://jqueryui.com\n *\n * Copyright 2014 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://api.jqueryui.com/category/ui-core/\n */\n\nvar DISPLAY_NONE = \"none\";\nvar DISPLAY_CONTENTS = \"contents\";\n\n// match the whole word to prevent fuzzy searching\nvar tabbableNode = /^(input|select|textarea|button|object|iframe)$/;\n\nfunction isNotOverflowing(element, style) {\n  return style.getPropertyValue(\"overflow\") !== \"visible\" ||\n  // if 'overflow: visible' set, check if there is actually any overflow\n  element.scrollWidth <= 0 && element.scrollHeight <= 0;\n}\n\nfunction hidesContents(element) {\n  var zeroSize = element.offsetWidth <= 0 && element.offsetHeight <= 0;\n\n  // If the node is empty, this is good enough\n  if (zeroSize && !element.innerHTML) return true;\n\n  try {\n    // Otherwise we need to check some styles\n    var style = window.getComputedStyle(element);\n    var displayValue = style.getPropertyValue(\"display\");\n    return zeroSize ? displayValue !== DISPLAY_CONTENTS && isNotOverflowing(element, style) : displayValue === DISPLAY_NONE;\n  } catch (exception) {\n    // eslint-disable-next-line no-console\n    console.warn(\"Failed to inspect element style\");\n    return false;\n  }\n}\n\nfunction visible(element) {\n  var parentElement = element;\n  var rootNode = element.getRootNode && element.getRootNode();\n  while (parentElement) {\n    if (parentElement === document.body) break;\n\n    // if we are not hidden yet, skip to checking outside the Web Component\n    if (rootNode && parentElement === rootNode) parentElement = rootNode.host.parentNode;\n\n    if (hidesContents(parentElement)) return false;\n    parentElement = parentElement.parentNode;\n  }\n  return true;\n}\n\nfunction focusable(element, isTabIndexNotNaN) {\n  var nodeName = element.nodeName.toLowerCase();\n  var res = tabbableNode.test(nodeName) && !element.disabled || (nodeName === \"a\" ? element.href || isTabIndexNotNaN : isTabIndexNotNaN);\n  return res && visible(element);\n}\n\nfunction tabbable(element) {\n  var tabIndex = element.getAttribute(\"tabindex\");\n  if (tabIndex === null) tabIndex = undefined;\n  var isTabIndexNaN = isNaN(tabIndex);\n  return (isTabIndexNaN || tabIndex >= 0) && focusable(element, !isTabIndexNaN);\n}\n\nfunction findTabbableDescendants(element) {\n  var descendants = [].slice.call(element.querySelectorAll(\"*\"), 0).reduce(function (finished, el) {\n    return finished.concat(!el.shadowRoot ? [el] : findTabbableDescendants(el.shadowRoot));\n  }, []);\n  return descendants.filter(tabbable);\n}\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _Modal = require(\"./components/Modal\");\n\nvar _Modal2 = _interopRequireDefault(_Modal);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = _Modal2.default;\nmodule.exports = exports[\"default\"];","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\n/**\n * Similar to invariant but only logs a warning if the condition is not met.\n * This can be used to log issues in development environments in critical\n * paths. Removing the logging code for production environments will keep the\n * same logic and follow the same code paths.\n */\n\nvar __DEV__ = process.env.NODE_ENV !== 'production';\n\nvar warning = function() {};\n\nif (__DEV__) {\n  var printWarning = function printWarning(format, args) {\n    var len = arguments.length;\n    args = new Array(len > 1 ? len - 1 : 0);\n    for (var key = 1; key < len; key++) {\n      args[key - 1] = arguments[key];\n    }\n    var argIndex = 0;\n    var message = 'Warning: ' +\n      format.replace(/%s/g, function() {\n        return args[argIndex++];\n      });\n    if (typeof console !== 'undefined') {\n      console.error(message);\n    }\n    try {\n      // --- Welcome to debugging React ---\n      // This error was thrown as a convenience so that you can use this stack\n      // to find the callsite that caused this warning to fire.\n      throw new Error(message);\n    } catch (x) {}\n  }\n\n  warning = function(condition, format, args) {\n    var len = arguments.length;\n    args = new Array(len > 2 ? len - 2 : 0);\n    for (var key = 2; key < len; key++) {\n      args[key - 2] = arguments[key];\n    }\n    if (format === undefined) {\n      throw new Error(\n          '`warning(condition, format, ...args)` requires a warning ' +\n          'message argument'\n      );\n    }\n    if (!condition) {\n      printWarning.apply(null, [format].concat(args));\n    }\n  };\n}\n\nmodule.exports = warning;\n","import React from 'react';\nexport var ReactReduxContext = /*#__PURE__*/React.createContext(null);\n\nif (process.env.NODE_ENV !== 'production') {\n  ReactReduxContext.displayName = 'ReactRedux';\n}\n\nexport default ReactReduxContext;","// Default to a dummy \"batch\" implementation that just runs the callback\nfunction defaultNoopBatch(callback) {\n  callback();\n}\n\nvar batch = defaultNoopBatch; // Allow injecting another batching function later\n\nexport var setBatch = function setBatch(newBatch) {\n  return batch = newBatch;\n}; // Supply a getter just to skip dealing with ESM bindings\n\nexport var getBatch = function getBatch() {\n  return batch;\n};","import { getBatch } from './batch'; // encapsulates the subscription logic for connecting a component to the redux store, as\n// well as nesting subscriptions of descendant components, so that we can ensure the\n// ancestor components re-render before descendants\n\nfunction createListenerCollection() {\n  var batch = getBatch();\n  var first = null;\n  var last = null;\n  return {\n    clear: function clear() {\n      first = null;\n      last = null;\n    },\n    notify: function notify() {\n      batch(function () {\n        var listener = first;\n\n        while (listener) {\n          listener.callback();\n          listener = listener.next;\n        }\n      });\n    },\n    get: function get() {\n      var listeners = [];\n      var listener = first;\n\n      while (listener) {\n        listeners.push(listener);\n        listener = listener.next;\n      }\n\n      return listeners;\n    },\n    subscribe: function subscribe(callback) {\n      var isSubscribed = true;\n      var listener = last = {\n        callback: callback,\n        next: null,\n        prev: last\n      };\n\n      if (listener.prev) {\n        listener.prev.next = listener;\n      } else {\n        first = listener;\n      }\n\n      return function unsubscribe() {\n        if (!isSubscribed || first === null) return;\n        isSubscribed = false;\n\n        if (listener.next) {\n          listener.next.prev = listener.prev;\n        } else {\n          last = listener.prev;\n        }\n\n        if (listener.prev) {\n          listener.prev.next = listener.next;\n        } else {\n          first = listener.next;\n        }\n      };\n    }\n  };\n}\n\nvar nullListeners = {\n  notify: function notify() {},\n  get: function get() {\n    return [];\n  }\n};\nexport function createSubscription(store, parentSub) {\n  var unsubscribe;\n  var listeners = nullListeners;\n\n  function addNestedSub(listener) {\n    trySubscribe();\n    return listeners.subscribe(listener);\n  }\n\n  function notifyNestedSubs() {\n    listeners.notify();\n  }\n\n  function handleChangeWrapper() {\n    if (subscription.onStateChange) {\n      subscription.onStateChange();\n    }\n  }\n\n  function isSubscribed() {\n    return Boolean(unsubscribe);\n  }\n\n  function trySubscribe() {\n    if (!unsubscribe) {\n      unsubscribe = parentSub ? parentSub.addNestedSub(handleChangeWrapper) : store.subscribe(handleChangeWrapper);\n      listeners = createListenerCollection();\n    }\n  }\n\n  function tryUnsubscribe() {\n    if (unsubscribe) {\n      unsubscribe();\n      unsubscribe = undefined;\n      listeners.clear();\n      listeners = nullListeners;\n    }\n  }\n\n  var subscription = {\n    addNestedSub: addNestedSub,\n    notifyNestedSubs: notifyNestedSubs,\n    handleChangeWrapper: handleChangeWrapper,\n    isSubscribed: isSubscribed,\n    trySubscribe: trySubscribe,\n    tryUnsubscribe: tryUnsubscribe,\n    getListeners: function getListeners() {\n      return listeners;\n    }\n  };\n  return subscription;\n}","import { useEffect, useLayoutEffect } from 'react'; // React currently throws a warning when using useLayoutEffect on the server.\n// To get around it, we can conditionally useEffect on the server (no-op) and\n// useLayoutEffect in the browser. We need useLayoutEffect to ensure the store\n// subscription callback always has the selector from the latest render commit\n// available, otherwise a store update may happen between render and the effect,\n// which may cause missed updates; we also must ensure the store subscription\n// is created synchronously, otherwise a store update may occur before the\n// subscription is created and an inconsistent state may be observed\n\nexport var useIsomorphicLayoutEffect = typeof window !== 'undefined' && typeof window.document !== 'undefined' && typeof window.document.createElement !== 'undefined' ? useLayoutEffect : useEffect;","import React, { useMemo } from 'react';\nimport PropTypes from 'prop-types';\nimport { ReactReduxContext } from './Context';\nimport { createSubscription } from '../utils/Subscription';\nimport { useIsomorphicLayoutEffect } from '../utils/useIsomorphicLayoutEffect';\n\nfunction Provider(_ref) {\n  var store = _ref.store,\n      context = _ref.context,\n      children = _ref.children;\n  var contextValue = useMemo(function () {\n    var subscription = createSubscription(store);\n    return {\n      store: store,\n      subscription: subscription\n    };\n  }, [store]);\n  var previousState = useMemo(function () {\n    return store.getState();\n  }, [store]);\n  useIsomorphicLayoutEffect(function () {\n    var subscription = contextValue.subscription;\n    subscription.onStateChange = subscription.notifyNestedSubs;\n    subscription.trySubscribe();\n\n    if (previousState !== store.getState()) {\n      subscription.notifyNestedSubs();\n    }\n\n    return function () {\n      subscription.tryUnsubscribe();\n      subscription.onStateChange = null;\n    };\n  }, [contextValue, previousState]);\n  var Context = context || ReactReduxContext;\n  return /*#__PURE__*/React.createElement(Context.Provider, {\n    value: contextValue\n  }, children);\n}\n\nif (process.env.NODE_ENV !== 'production') {\n  Provider.propTypes = {\n    store: PropTypes.shape({\n      subscribe: PropTypes.func.isRequired,\n      dispatch: PropTypes.func.isRequired,\n      getState: PropTypes.func.isRequired\n    }),\n    context: PropTypes.object,\n    children: PropTypes.any\n  };\n}\n\nexport default Provider;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"getDisplayName\", \"methodName\", \"renderCountProp\", \"shouldHandleStateChanges\", \"storeKey\", \"withRef\", \"forwardRef\", \"context\"],\n    _excluded2 = [\"reactReduxForwardedRef\"];\nimport hoistStatics from 'hoist-non-react-statics';\nimport React, { useContext, useMemo, useRef, useReducer } from 'react';\nimport { isValidElementType, isContextConsumer } from 'react-is';\nimport { createSubscription } from '../utils/Subscription';\nimport { useIsomorphicLayoutEffect } from '../utils/useIsomorphicLayoutEffect';\nimport { ReactReduxContext } from './Context'; // Define some constant arrays just to avoid re-creating these\n\nvar EMPTY_ARRAY = [];\nvar NO_SUBSCRIPTION_ARRAY = [null, null];\n\nvar stringifyComponent = function stringifyComponent(Comp) {\n  try {\n    return JSON.stringify(Comp);\n  } catch (err) {\n    return String(Comp);\n  }\n};\n\nfunction storeStateUpdatesReducer(state, action) {\n  var updateCount = state[1];\n  return [action.payload, updateCount + 1];\n}\n\nfunction useIsomorphicLayoutEffectWithArgs(effectFunc, effectArgs, dependencies) {\n  useIsomorphicLayoutEffect(function () {\n    return effectFunc.apply(void 0, effectArgs);\n  }, dependencies);\n}\n\nfunction captureWrapperProps(lastWrapperProps, lastChildProps, renderIsScheduled, wrapperProps, actualChildProps, childPropsFromStoreUpdate, notifyNestedSubs) {\n  // We want to capture the wrapper props and child props we used for later comparisons\n  lastWrapperProps.current = wrapperProps;\n  lastChildProps.current = actualChildProps;\n  renderIsScheduled.current = false; // If the render was from a store update, clear out that reference and cascade the subscriber update\n\n  if (childPropsFromStoreUpdate.current) {\n    childPropsFromStoreUpdate.current = null;\n    notifyNestedSubs();\n  }\n}\n\nfunction subscribeUpdates(shouldHandleStateChanges, store, subscription, childPropsSelector, lastWrapperProps, lastChildProps, renderIsScheduled, childPropsFromStoreUpdate, notifyNestedSubs, forceComponentUpdateDispatch) {\n  // If we're not subscribed to the store, nothing to do here\n  if (!shouldHandleStateChanges) return; // Capture values for checking if and when this component unmounts\n\n  var didUnsubscribe = false;\n  var lastThrownError = null; // We'll run this callback every time a store subscription update propagates to this component\n\n  var checkForUpdates = function checkForUpdates() {\n    if (didUnsubscribe) {\n      // Don't run stale listeners.\n      // Redux doesn't guarantee unsubscriptions happen until next dispatch.\n      return;\n    }\n\n    var latestStoreState = store.getState();\n    var newChildProps, error;\n\n    try {\n      // Actually run the selector with the most recent store state and wrapper props\n      // to determine what the child props should be\n      newChildProps = childPropsSelector(latestStoreState, lastWrapperProps.current);\n    } catch (e) {\n      error = e;\n      lastThrownError = e;\n    }\n\n    if (!error) {\n      lastThrownError = null;\n    } // If the child props haven't changed, nothing to do here - cascade the subscription update\n\n\n    if (newChildProps === lastChildProps.current) {\n      if (!renderIsScheduled.current) {\n        notifyNestedSubs();\n      }\n    } else {\n      // Save references to the new child props.  Note that we track the \"child props from store update\"\n      // as a ref instead of a useState/useReducer because we need a way to determine if that value has\n      // been processed.  If this went into useState/useReducer, we couldn't clear out the value without\n      // forcing another re-render, which we don't want.\n      lastChildProps.current = newChildProps;\n      childPropsFromStoreUpdate.current = newChildProps;\n      renderIsScheduled.current = true; // If the child props _did_ change (or we caught an error), this wrapper component needs to re-render\n\n      forceComponentUpdateDispatch({\n        type: 'STORE_UPDATED',\n        payload: {\n          error: error\n        }\n      });\n    }\n  }; // Actually subscribe to the nearest connected ancestor (or store)\n\n\n  subscription.onStateChange = checkForUpdates;\n  subscription.trySubscribe(); // Pull data from the store after first render in case the store has\n  // changed since we began.\n\n  checkForUpdates();\n\n  var unsubscribeWrapper = function unsubscribeWrapper() {\n    didUnsubscribe = true;\n    subscription.tryUnsubscribe();\n    subscription.onStateChange = null;\n\n    if (lastThrownError) {\n      // It's possible that we caught an error due to a bad mapState function, but the\n      // parent re-rendered without this component and we're about to unmount.\n      // This shouldn't happen as long as we do top-down subscriptions correctly, but\n      // if we ever do those wrong, this throw will surface the error in our tests.\n      // In that case, throw the error from here so it doesn't get lost.\n      throw lastThrownError;\n    }\n  };\n\n  return unsubscribeWrapper;\n}\n\nvar initStateUpdates = function initStateUpdates() {\n  return [null, 0];\n};\n\nexport default function connectAdvanced(\n/*\r\n  selectorFactory is a func that is responsible for returning the selector function used to\r\n  compute new props from state, props, and dispatch. For example:\r\n      export default connectAdvanced((dispatch, options) => (state, props) => ({\r\n      thing: state.things[props.thingId],\r\n      saveThing: fields => dispatch(actionCreators.saveThing(props.thingId, fields)),\r\n    }))(YourComponent)\r\n    Access to dispatch is provided to the factory so selectorFactories can bind actionCreators\r\n  outside of their selector as an optimization. Options passed to connectAdvanced are passed to\r\n  the selectorFactory, along with displayName and WrappedComponent, as the second argument.\r\n    Note that selectorFactory is responsible for all caching/memoization of inbound and outbound\r\n  props. Do not use connectAdvanced directly without memoizing results between calls to your\r\n  selector, otherwise the Connect component will re-render on every state or props change.\r\n*/\nselectorFactory, // options object:\n_ref) {\n  if (_ref === void 0) {\n    _ref = {};\n  }\n\n  var _ref2 = _ref,\n      _ref2$getDisplayName = _ref2.getDisplayName,\n      getDisplayName = _ref2$getDisplayName === void 0 ? function (name) {\n    return \"ConnectAdvanced(\" + name + \")\";\n  } : _ref2$getDisplayName,\n      _ref2$methodName = _ref2.methodName,\n      methodName = _ref2$methodName === void 0 ? 'connectAdvanced' : _ref2$methodName,\n      _ref2$renderCountProp = _ref2.renderCountProp,\n      renderCountProp = _ref2$renderCountProp === void 0 ? undefined : _ref2$renderCountProp,\n      _ref2$shouldHandleSta = _ref2.shouldHandleStateChanges,\n      shouldHandleStateChanges = _ref2$shouldHandleSta === void 0 ? true : _ref2$shouldHandleSta,\n      _ref2$storeKey = _ref2.storeKey,\n      storeKey = _ref2$storeKey === void 0 ? 'store' : _ref2$storeKey,\n      _ref2$withRef = _ref2.withRef,\n      withRef = _ref2$withRef === void 0 ? false : _ref2$withRef,\n      _ref2$forwardRef = _ref2.forwardRef,\n      forwardRef = _ref2$forwardRef === void 0 ? false : _ref2$forwardRef,\n      _ref2$context = _ref2.context,\n      context = _ref2$context === void 0 ? ReactReduxContext : _ref2$context,\n      connectOptions = _objectWithoutPropertiesLoose(_ref2, _excluded);\n\n  if (process.env.NODE_ENV !== 'production') {\n    if (renderCountProp !== undefined) {\n      throw new Error(\"renderCountProp is removed. render counting is built into the latest React Dev Tools profiling extension\");\n    }\n\n    if (withRef) {\n      throw new Error('withRef is removed. To access the wrapped instance, use a ref on the connected component');\n    }\n\n    var customStoreWarningMessage = 'To use a custom Redux store for specific components, create a custom React context with ' + \"React.createContext(), and pass the context object to React Redux's Provider and specific components\" + ' like: <Provider context={MyContext}><ConnectedComponent context={MyContext} /></Provider>. ' + 'You may also pass a {context : MyContext} option to connect';\n\n    if (storeKey !== 'store') {\n      throw new Error('storeKey has been removed and does not do anything. ' + customStoreWarningMessage);\n    }\n  }\n\n  var Context = context;\n  return function wrapWithConnect(WrappedComponent) {\n    if (process.env.NODE_ENV !== 'production' && !isValidElementType(WrappedComponent)) {\n      throw new Error(\"You must pass a component to the function returned by \" + (methodName + \". Instead received \" + stringifyComponent(WrappedComponent)));\n    }\n\n    var wrappedComponentName = WrappedComponent.displayName || WrappedComponent.name || 'Component';\n    var displayName = getDisplayName(wrappedComponentName);\n\n    var selectorFactoryOptions = _extends({}, connectOptions, {\n      getDisplayName: getDisplayName,\n      methodName: methodName,\n      renderCountProp: renderCountProp,\n      shouldHandleStateChanges: shouldHandleStateChanges,\n      storeKey: storeKey,\n      displayName: displayName,\n      wrappedComponentName: wrappedComponentName,\n      WrappedComponent: WrappedComponent\n    });\n\n    var pure = connectOptions.pure;\n\n    function createChildSelector(store) {\n      return selectorFactory(store.dispatch, selectorFactoryOptions);\n    } // If we aren't running in \"pure\" mode, we don't want to memoize values.\n    // To avoid conditionally calling hooks, we fall back to a tiny wrapper\n    // that just executes the given callback immediately.\n\n\n    var usePureOnlyMemo = pure ? useMemo : function (callback) {\n      return callback();\n    };\n\n    function ConnectFunction(props) {\n      var _useMemo = useMemo(function () {\n        // Distinguish between actual \"data\" props that were passed to the wrapper component,\n        // and values needed to control behavior (forwarded refs, alternate context instances).\n        // To maintain the wrapperProps object reference, memoize this destructuring.\n        var reactReduxForwardedRef = props.reactReduxForwardedRef,\n            wrapperProps = _objectWithoutPropertiesLoose(props, _excluded2);\n\n        return [props.context, reactReduxForwardedRef, wrapperProps];\n      }, [props]),\n          propsContext = _useMemo[0],\n          reactReduxForwardedRef = _useMemo[1],\n          wrapperProps = _useMemo[2];\n\n      var ContextToUse = useMemo(function () {\n        // Users may optionally pass in a custom context instance to use instead of our ReactReduxContext.\n        // Memoize the check that determines which context instance we should use.\n        return propsContext && propsContext.Consumer && isContextConsumer( /*#__PURE__*/React.createElement(propsContext.Consumer, null)) ? propsContext : Context;\n      }, [propsContext, Context]); // Retrieve the store and ancestor subscription via context, if available\n\n      var contextValue = useContext(ContextToUse); // The store _must_ exist as either a prop or in context.\n      // We'll check to see if it _looks_ like a Redux store first.\n      // This allows us to pass through a `store` prop that is just a plain value.\n\n      var didStoreComeFromProps = Boolean(props.store) && Boolean(props.store.getState) && Boolean(props.store.dispatch);\n      var didStoreComeFromContext = Boolean(contextValue) && Boolean(contextValue.store);\n\n      if (process.env.NODE_ENV !== 'production' && !didStoreComeFromProps && !didStoreComeFromContext) {\n        throw new Error(\"Could not find \\\"store\\\" in the context of \" + (\"\\\"\" + displayName + \"\\\". Either wrap the root component in a <Provider>, \") + \"or pass a custom React context provider to <Provider> and the corresponding \" + (\"React context consumer to \" + displayName + \" in connect options.\"));\n      } // Based on the previous check, one of these must be true\n\n\n      var store = didStoreComeFromProps ? props.store : contextValue.store;\n      var childPropsSelector = useMemo(function () {\n        // The child props selector needs the store reference as an input.\n        // Re-create this selector whenever the store changes.\n        return createChildSelector(store);\n      }, [store]);\n\n      var _useMemo2 = useMemo(function () {\n        if (!shouldHandleStateChanges) return NO_SUBSCRIPTION_ARRAY; // This Subscription's source should match where store came from: props vs. context. A component\n        // connected to the store via props shouldn't use subscription from context, or vice versa.\n\n        // This Subscription's source should match where store came from: props vs. context. A component\n        // connected to the store via props shouldn't use subscription from context, or vice versa.\n        var subscription = createSubscription(store, didStoreComeFromProps ? null : contextValue.subscription); // `notifyNestedSubs` is duplicated to handle the case where the component is unmounted in\n        // the middle of the notification loop, where `subscription` will then be null. This can\n        // probably be avoided if Subscription's listeners logic is changed to not call listeners\n        // that have been unsubscribed in the  middle of the notification loop.\n\n        // `notifyNestedSubs` is duplicated to handle the case where the component is unmounted in\n        // the middle of the notification loop, where `subscription` will then be null. This can\n        // probably be avoided if Subscription's listeners logic is changed to not call listeners\n        // that have been unsubscribed in the  middle of the notification loop.\n        var notifyNestedSubs = subscription.notifyNestedSubs.bind(subscription);\n        return [subscription, notifyNestedSubs];\n      }, [store, didStoreComeFromProps, contextValue]),\n          subscription = _useMemo2[0],\n          notifyNestedSubs = _useMemo2[1]; // Determine what {store, subscription} value should be put into nested context, if necessary,\n      // and memoize that value to avoid unnecessary context updates.\n\n\n      var overriddenContextValue = useMemo(function () {\n        if (didStoreComeFromProps) {\n          // This component is directly subscribed to a store from props.\n          // We don't want descendants reading from this store - pass down whatever\n          // the existing context value is from the nearest connected ancestor.\n          return contextValue;\n        } // Otherwise, put this component's subscription instance into context, so that\n        // connected descendants won't update until after this component is done\n\n\n        return _extends({}, contextValue, {\n          subscription: subscription\n        });\n      }, [didStoreComeFromProps, contextValue, subscription]); // We need to force this wrapper component to re-render whenever a Redux store update\n      // causes a change to the calculated child component props (or we caught an error in mapState)\n\n      var _useReducer = useReducer(storeStateUpdatesReducer, EMPTY_ARRAY, initStateUpdates),\n          _useReducer$ = _useReducer[0],\n          previousStateUpdateResult = _useReducer$[0],\n          forceComponentUpdateDispatch = _useReducer[1]; // Propagate any mapState/mapDispatch errors upwards\n\n\n      if (previousStateUpdateResult && previousStateUpdateResult.error) {\n        throw previousStateUpdateResult.error;\n      } // Set up refs to coordinate values between the subscription effect and the render logic\n\n\n      var lastChildProps = useRef();\n      var lastWrapperProps = useRef(wrapperProps);\n      var childPropsFromStoreUpdate = useRef();\n      var renderIsScheduled = useRef(false);\n      var actualChildProps = usePureOnlyMemo(function () {\n        // Tricky logic here:\n        // - This render may have been triggered by a Redux store update that produced new child props\n        // - However, we may have gotten new wrapper props after that\n        // If we have new child props, and the same wrapper props, we know we should use the new child props as-is.\n        // But, if we have new wrapper props, those might change the child props, so we have to recalculate things.\n        // So, we'll use the child props from store update only if the wrapper props are the same as last time.\n        if (childPropsFromStoreUpdate.current && wrapperProps === lastWrapperProps.current) {\n          return childPropsFromStoreUpdate.current;\n        } // TODO We're reading the store directly in render() here. Bad idea?\n        // This will likely cause Bad Things (TM) to happen in Concurrent Mode.\n        // Note that we do this because on renders _not_ caused by store updates, we need the latest store state\n        // to determine what the child props should be.\n\n\n        return childPropsSelector(store.getState(), wrapperProps);\n      }, [store, previousStateUpdateResult, wrapperProps]); // We need this to execute synchronously every time we re-render. However, React warns\n      // about useLayoutEffect in SSR, so we try to detect environment and fall back to\n      // just useEffect instead to avoid the warning, since neither will run anyway.\n\n      useIsomorphicLayoutEffectWithArgs(captureWrapperProps, [lastWrapperProps, lastChildProps, renderIsScheduled, wrapperProps, actualChildProps, childPropsFromStoreUpdate, notifyNestedSubs]); // Our re-subscribe logic only runs when the store/subscription setup changes\n\n      useIsomorphicLayoutEffectWithArgs(subscribeUpdates, [shouldHandleStateChanges, store, subscription, childPropsSelector, lastWrapperProps, lastChildProps, renderIsScheduled, childPropsFromStoreUpdate, notifyNestedSubs, forceComponentUpdateDispatch], [store, subscription, childPropsSelector]); // Now that all that's done, we can finally try to actually render the child component.\n      // We memoize the elements for the rendered child component as an optimization.\n\n      var renderedWrappedComponent = useMemo(function () {\n        return /*#__PURE__*/React.createElement(WrappedComponent, _extends({}, actualChildProps, {\n          ref: reactReduxForwardedRef\n        }));\n      }, [reactReduxForwardedRef, WrappedComponent, actualChildProps]); // If React sees the exact same element reference as last time, it bails out of re-rendering\n      // that child, same as if it was wrapped in React.memo() or returned false from shouldComponentUpdate.\n\n      var renderedChild = useMemo(function () {\n        if (shouldHandleStateChanges) {\n          // If this component is subscribed to store updates, we need to pass its own\n          // subscription instance down to our descendants. That means rendering the same\n          // Context instance, and putting a different value into the context.\n          return /*#__PURE__*/React.createElement(ContextToUse.Provider, {\n            value: overriddenContextValue\n          }, renderedWrappedComponent);\n        }\n\n        return renderedWrappedComponent;\n      }, [ContextToUse, renderedWrappedComponent, overriddenContextValue]);\n      return renderedChild;\n    } // If we're in \"pure\" mode, ensure our wrapper component only re-renders when incoming props have changed.\n\n\n    var Connect = pure ? React.memo(ConnectFunction) : ConnectFunction;\n    Connect.WrappedComponent = WrappedComponent;\n    Connect.displayName = ConnectFunction.displayName = displayName;\n\n    if (forwardRef) {\n      var forwarded = React.forwardRef(function forwardConnectRef(props, ref) {\n        return /*#__PURE__*/React.createElement(Connect, _extends({}, props, {\n          reactReduxForwardedRef: ref\n        }));\n      });\n      forwarded.displayName = displayName;\n      forwarded.WrappedComponent = WrappedComponent;\n      return hoistStatics(forwarded, WrappedComponent);\n    }\n\n    return hoistStatics(Connect, WrappedComponent);\n  };\n}","function is(x, y) {\n  if (x === y) {\n    return x !== 0 || y !== 0 || 1 / x === 1 / y;\n  } else {\n    return x !== x && y !== y;\n  }\n}\n\nexport default function shallowEqual(objA, objB) {\n  if (is(objA, objB)) return true;\n\n  if (typeof objA !== 'object' || objA === null || typeof objB !== 'object' || objB === null) {\n    return false;\n  }\n\n  var keysA = Object.keys(objA);\n  var keysB = Object.keys(objB);\n  if (keysA.length !== keysB.length) return false;\n\n  for (var i = 0; i < keysA.length; i++) {\n    if (!Object.prototype.hasOwnProperty.call(objB, keysA[i]) || !is(objA[keysA[i]], objB[keysA[i]])) {\n      return false;\n    }\n  }\n\n  return true;\n}","import verifyPlainObject from '../utils/verifyPlainObject';\nexport function wrapMapToPropsConstant(getConstant) {\n  return function initConstantSelector(dispatch, options) {\n    var constant = getConstant(dispatch, options);\n\n    function constantSelector() {\n      return constant;\n    }\n\n    constantSelector.dependsOnOwnProps = false;\n    return constantSelector;\n  };\n} // dependsOnOwnProps is used by createMapToPropsProxy to determine whether to pass props as args\n// to the mapToProps function being wrapped. It is also used by makePurePropsSelector to determine\n// whether mapToProps needs to be invoked when props have changed.\n//\n// A length of one signals that mapToProps does not depend on props from the parent component.\n// A length of zero is assumed to mean mapToProps is getting args via arguments or ...args and\n// therefore not reporting its length accurately..\n\nexport function getDependsOnOwnProps(mapToProps) {\n  return mapToProps.dependsOnOwnProps !== null && mapToProps.dependsOnOwnProps !== undefined ? Boolean(mapToProps.dependsOnOwnProps) : mapToProps.length !== 1;\n} // Used by whenMapStateToPropsIsFunction and whenMapDispatchToPropsIsFunction,\n// this function wraps mapToProps in a proxy function which does several things:\n//\n//  * Detects whether the mapToProps function being called depends on props, which\n//    is used by selectorFactory to decide if it should reinvoke on props changes.\n//\n//  * On first call, handles mapToProps if returns another function, and treats that\n//    new function as the true mapToProps for subsequent calls.\n//\n//  * On first call, verifies the first result is a plain object, in order to warn\n//    the developer that their mapToProps function is not returning a valid result.\n//\n\nexport function wrapMapToPropsFunc(mapToProps, methodName) {\n  return function initProxySelector(dispatch, _ref) {\n    var displayName = _ref.displayName;\n\n    var proxy = function mapToPropsProxy(stateOrDispatch, ownProps) {\n      return proxy.dependsOnOwnProps ? proxy.mapToProps(stateOrDispatch, ownProps) : proxy.mapToProps(stateOrDispatch);\n    }; // allow detectFactoryAndVerify to get ownProps\n\n\n    proxy.dependsOnOwnProps = true;\n\n    proxy.mapToProps = function detectFactoryAndVerify(stateOrDispatch, ownProps) {\n      proxy.mapToProps = mapToProps;\n      proxy.dependsOnOwnProps = getDependsOnOwnProps(mapToProps);\n      var props = proxy(stateOrDispatch, ownProps);\n\n      if (typeof props === 'function') {\n        proxy.mapToProps = props;\n        proxy.dependsOnOwnProps = getDependsOnOwnProps(props);\n        props = proxy(stateOrDispatch, ownProps);\n      }\n\n      if (process.env.NODE_ENV !== 'production') verifyPlainObject(props, displayName, methodName);\n      return props;\n    };\n\n    return proxy;\n  };\n}","import bindActionCreators from '../utils/bindActionCreators';\nimport { wrapMapToPropsConstant, wrapMapToPropsFunc } from './wrapMapToProps';\nexport function whenMapDispatchToPropsIsFunction(mapDispatchToProps) {\n  return typeof mapDispatchToProps === 'function' ? wrapMapToPropsFunc(mapDispatchToProps, 'mapDispatchToProps') : undefined;\n}\nexport function whenMapDispatchToPropsIsMissing(mapDispatchToProps) {\n  return !mapDispatchToProps ? wrapMapToPropsConstant(function (dispatch) {\n    return {\n      dispatch: dispatch\n    };\n  }) : undefined;\n}\nexport function whenMapDispatchToPropsIsObject(mapDispatchToProps) {\n  return mapDispatchToProps && typeof mapDispatchToProps === 'object' ? wrapMapToPropsConstant(function (dispatch) {\n    return bindActionCreators(mapDispatchToProps, dispatch);\n  }) : undefined;\n}\nexport default [whenMapDispatchToPropsIsFunction, whenMapDispatchToPropsIsMissing, whenMapDispatchToPropsIsObject];","export default function bindActionCreators(actionCreators, dispatch) {\n  var boundActionCreators = {};\n\n  var _loop = function _loop(key) {\n    var actionCreator = actionCreators[key];\n\n    if (typeof actionCreator === 'function') {\n      boundActionCreators[key] = function () {\n        return dispatch(actionCreator.apply(void 0, arguments));\n      };\n    }\n  };\n\n  for (var key in actionCreators) {\n    _loop(key);\n  }\n\n  return boundActionCreators;\n}","import { wrapMapToPropsConstant, wrapMapToPropsFunc } from './wrapMapToProps';\nexport function whenMapStateToPropsIsFunction(mapStateToProps) {\n  return typeof mapStateToProps === 'function' ? wrapMapToPropsFunc(mapStateToProps, 'mapStateToProps') : undefined;\n}\nexport function whenMapStateToPropsIsMissing(mapStateToProps) {\n  return !mapStateToProps ? wrapMapToPropsConstant(function () {\n    return {};\n  }) : undefined;\n}\nexport default [whenMapStateToPropsIsFunction, whenMapStateToPropsIsMissing];","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport verifyPlainObject from '../utils/verifyPlainObject';\nexport function defaultMergeProps(stateProps, dispatchProps, ownProps) {\n  return _extends({}, ownProps, stateProps, dispatchProps);\n}\nexport function wrapMergePropsFunc(mergeProps) {\n  return function initMergePropsProxy(dispatch, _ref) {\n    var displayName = _ref.displayName,\n        pure = _ref.pure,\n        areMergedPropsEqual = _ref.areMergedPropsEqual;\n    var hasRunOnce = false;\n    var mergedProps;\n    return function mergePropsProxy(stateProps, dispatchProps, ownProps) {\n      var nextMergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n\n      if (hasRunOnce) {\n        if (!pure || !areMergedPropsEqual(nextMergedProps, mergedProps)) mergedProps = nextMergedProps;\n      } else {\n        hasRunOnce = true;\n        mergedProps = nextMergedProps;\n        if (process.env.NODE_ENV !== 'production') verifyPlainObject(mergedProps, displayName, 'mergeProps');\n      }\n\n      return mergedProps;\n    };\n  };\n}\nexport function whenMergePropsIsFunction(mergeProps) {\n  return typeof mergeProps === 'function' ? wrapMergePropsFunc(mergeProps) : undefined;\n}\nexport function whenMergePropsIsOmitted(mergeProps) {\n  return !mergeProps ? function () {\n    return defaultMergeProps;\n  } : undefined;\n}\nexport default [whenMergePropsIsFunction, whenMergePropsIsOmitted];","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"initMapStateToProps\", \"initMapDispatchToProps\", \"initMergeProps\"];\nimport verifySubselectors from './verifySubselectors';\nexport function impureFinalPropsSelectorFactory(mapStateToProps, mapDispatchToProps, mergeProps, dispatch) {\n  return function impureFinalPropsSelector(state, ownProps) {\n    return mergeProps(mapStateToProps(state, ownProps), mapDispatchToProps(dispatch, ownProps), ownProps);\n  };\n}\nexport function pureFinalPropsSelectorFactory(mapStateToProps, mapDispatchToProps, mergeProps, dispatch, _ref) {\n  var areStatesEqual = _ref.areStatesEqual,\n      areOwnPropsEqual = _ref.areOwnPropsEqual,\n      areStatePropsEqual = _ref.areStatePropsEqual;\n  var hasRunAtLeastOnce = false;\n  var state;\n  var ownProps;\n  var stateProps;\n  var dispatchProps;\n  var mergedProps;\n\n  function handleFirstCall(firstState, firstOwnProps) {\n    state = firstState;\n    ownProps = firstOwnProps;\n    stateProps = mapStateToProps(state, ownProps);\n    dispatchProps = mapDispatchToProps(dispatch, ownProps);\n    mergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n    hasRunAtLeastOnce = true;\n    return mergedProps;\n  }\n\n  function handleNewPropsAndNewState() {\n    stateProps = mapStateToProps(state, ownProps);\n    if (mapDispatchToProps.dependsOnOwnProps) dispatchProps = mapDispatchToProps(dispatch, ownProps);\n    mergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n    return mergedProps;\n  }\n\n  function handleNewProps() {\n    if (mapStateToProps.dependsOnOwnProps) stateProps = mapStateToProps(state, ownProps);\n    if (mapDispatchToProps.dependsOnOwnProps) dispatchProps = mapDispatchToProps(dispatch, ownProps);\n    mergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n    return mergedProps;\n  }\n\n  function handleNewState() {\n    var nextStateProps = mapStateToProps(state, ownProps);\n    var statePropsChanged = !areStatePropsEqual(nextStateProps, stateProps);\n    stateProps = nextStateProps;\n    if (statePropsChanged) mergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n    return mergedProps;\n  }\n\n  function handleSubsequentCalls(nextState, nextOwnProps) {\n    var propsChanged = !areOwnPropsEqual(nextOwnProps, ownProps);\n    var stateChanged = !areStatesEqual(nextState, state);\n    state = nextState;\n    ownProps = nextOwnProps;\n    if (propsChanged && stateChanged) return handleNewPropsAndNewState();\n    if (propsChanged) return handleNewProps();\n    if (stateChanged) return handleNewState();\n    return mergedProps;\n  }\n\n  return function pureFinalPropsSelector(nextState, nextOwnProps) {\n    return hasRunAtLeastOnce ? handleSubsequentCalls(nextState, nextOwnProps) : handleFirstCall(nextState, nextOwnProps);\n  };\n} // TODO: Add more comments\n// If pure is true, the selector returned by selectorFactory will memoize its results,\n// allowing connectAdvanced's shouldComponentUpdate to return false if final\n// props have not changed. If false, the selector will always return a new\n// object and shouldComponentUpdate will always return true.\n\nexport default function finalPropsSelectorFactory(dispatch, _ref2) {\n  var initMapStateToProps = _ref2.initMapStateToProps,\n      initMapDispatchToProps = _ref2.initMapDispatchToProps,\n      initMergeProps = _ref2.initMergeProps,\n      options = _objectWithoutPropertiesLoose(_ref2, _excluded);\n\n  var mapStateToProps = initMapStateToProps(dispatch, options);\n  var mapDispatchToProps = initMapDispatchToProps(dispatch, options);\n  var mergeProps = initMergeProps(dispatch, options);\n\n  if (process.env.NODE_ENV !== 'production') {\n    verifySubselectors(mapStateToProps, mapDispatchToProps, mergeProps, options.displayName);\n  }\n\n  var selectorFactory = options.pure ? pureFinalPropsSelectorFactory : impureFinalPropsSelectorFactory;\n  return selectorFactory(mapStateToProps, mapDispatchToProps, mergeProps, dispatch, options);\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"pure\", \"areStatesEqual\", \"areOwnPropsEqual\", \"areStatePropsEqual\", \"areMergedPropsEqual\"];\nimport connectAdvanced from '../components/connectAdvanced';\nimport shallowEqual from '../utils/shallowEqual';\nimport defaultMapDispatchToPropsFactories from './mapDispatchToProps';\nimport defaultMapStateToPropsFactories from './mapStateToProps';\nimport defaultMergePropsFactories from './mergeProps';\nimport defaultSelectorFactory from './selectorFactory';\n/*\r\n  connect is a facade over connectAdvanced. It turns its args into a compatible\r\n  selectorFactory, which has the signature:\r\n\r\n    (dispatch, options) => (nextState, nextOwnProps) => nextFinalProps\r\n  \r\n  connect passes its args to connectAdvanced as options, which will in turn pass them to\r\n  selectorFactory each time a Connect component instance is instantiated or hot reloaded.\r\n\r\n  selectorFactory returns a final props selector from its mapStateToProps,\r\n  mapStateToPropsFactories, mapDispatchToProps, mapDispatchToPropsFactories, mergeProps,\r\n  mergePropsFactories, and pure args.\r\n\r\n  The resulting final props selector is called by the Connect component instance whenever\r\n  it receives new props or store state.\r\n */\n\nfunction match(arg, factories, name) {\n  for (var i = factories.length - 1; i >= 0; i--) {\n    var result = factories[i](arg);\n    if (result) return result;\n  }\n\n  return function (dispatch, options) {\n    throw new Error(\"Invalid value of type \" + typeof arg + \" for \" + name + \" argument when connecting component \" + options.wrappedComponentName + \".\");\n  };\n}\n\nfunction strictEqual(a, b) {\n  return a === b;\n} // createConnect with default args builds the 'official' connect behavior. Calling it with\n// different options opens up some testing and extensibility scenarios\n\n\nexport function createConnect(_temp) {\n  var _ref = _temp === void 0 ? {} : _temp,\n      _ref$connectHOC = _ref.connectHOC,\n      connectHOC = _ref$connectHOC === void 0 ? connectAdvanced : _ref$connectHOC,\n      _ref$mapStateToPropsF = _ref.mapStateToPropsFactories,\n      mapStateToPropsFactories = _ref$mapStateToPropsF === void 0 ? defaultMapStateToPropsFactories : _ref$mapStateToPropsF,\n      _ref$mapDispatchToPro = _ref.mapDispatchToPropsFactories,\n      mapDispatchToPropsFactories = _ref$mapDispatchToPro === void 0 ? defaultMapDispatchToPropsFactories : _ref$mapDispatchToPro,\n      _ref$mergePropsFactor = _ref.mergePropsFactories,\n      mergePropsFactories = _ref$mergePropsFactor === void 0 ? defaultMergePropsFactories : _ref$mergePropsFactor,\n      _ref$selectorFactory = _ref.selectorFactory,\n      selectorFactory = _ref$selectorFactory === void 0 ? defaultSelectorFactory : _ref$selectorFactory;\n\n  return function connect(mapStateToProps, mapDispatchToProps, mergeProps, _ref2) {\n    if (_ref2 === void 0) {\n      _ref2 = {};\n    }\n\n    var _ref3 = _ref2,\n        _ref3$pure = _ref3.pure,\n        pure = _ref3$pure === void 0 ? true : _ref3$pure,\n        _ref3$areStatesEqual = _ref3.areStatesEqual,\n        areStatesEqual = _ref3$areStatesEqual === void 0 ? strictEqual : _ref3$areStatesEqual,\n        _ref3$areOwnPropsEqua = _ref3.areOwnPropsEqual,\n        areOwnPropsEqual = _ref3$areOwnPropsEqua === void 0 ? shallowEqual : _ref3$areOwnPropsEqua,\n        _ref3$areStatePropsEq = _ref3.areStatePropsEqual,\n        areStatePropsEqual = _ref3$areStatePropsEq === void 0 ? shallowEqual : _ref3$areStatePropsEq,\n        _ref3$areMergedPropsE = _ref3.areMergedPropsEqual,\n        areMergedPropsEqual = _ref3$areMergedPropsE === void 0 ? shallowEqual : _ref3$areMergedPropsE,\n        extraOptions = _objectWithoutPropertiesLoose(_ref3, _excluded);\n\n    var initMapStateToProps = match(mapStateToProps, mapStateToPropsFactories, 'mapStateToProps');\n    var initMapDispatchToProps = match(mapDispatchToProps, mapDispatchToPropsFactories, 'mapDispatchToProps');\n    var initMergeProps = match(mergeProps, mergePropsFactories, 'mergeProps');\n    return connectHOC(selectorFactory, _extends({\n      // used in error messages\n      methodName: 'connect',\n      // used to compute Connect's displayName from the wrapped component's displayName.\n      getDisplayName: function getDisplayName(name) {\n        return \"Connect(\" + name + \")\";\n      },\n      // if mapStateToProps is falsy, the Connect component doesn't subscribe to store state changes\n      shouldHandleStateChanges: Boolean(mapStateToProps),\n      // passed through to selectorFactory\n      initMapStateToProps: initMapStateToProps,\n      initMapDispatchToProps: initMapDispatchToProps,\n      initMergeProps: initMergeProps,\n      pure: pure,\n      areStatesEqual: areStatesEqual,\n      areOwnPropsEqual: areOwnPropsEqual,\n      areStatePropsEqual: areStatePropsEqual,\n      areMergedPropsEqual: areMergedPropsEqual\n    }, extraOptions));\n  };\n}\nexport default /*#__PURE__*/createConnect();","import { useContext } from 'react';\nimport { ReactReduxContext } from '../components/Context';\n/**\r\n * A hook to access the value of the `ReactReduxContext`. This is a low-level\r\n * hook that you should usually not need to call directly.\r\n *\r\n * @returns {any} the value of the `ReactReduxContext`\r\n *\r\n * @example\r\n *\r\n * import React from 'react'\r\n * import { useReduxContext } from 'react-redux'\r\n *\r\n * export const CounterComponent = ({ value }) => {\r\n *   const { store } = useReduxContext()\r\n *   return <div>{store.getState()}</div>\r\n * }\r\n */\n\nexport function useReduxContext() {\n  var contextValue = useContext(ReactReduxContext);\n\n  if (process.env.NODE_ENV !== 'production' && !contextValue) {\n    throw new Error('could not find react-redux context value; please ensure the component is wrapped in a <Provider>');\n  }\n\n  return contextValue;\n}","import { useContext } from 'react';\nimport { ReactReduxContext } from '../components/Context';\nimport { useReduxContext as useDefaultReduxContext } from './useReduxContext';\n/**\r\n * Hook factory, which creates a `useStore` hook bound to a given context.\r\n *\r\n * @param {React.Context} [context=ReactReduxContext] Context passed to your `<Provider>`.\r\n * @returns {Function} A `useStore` hook bound to the specified context.\r\n */\n\nexport function createStoreHook(context) {\n  if (context === void 0) {\n    context = ReactReduxContext;\n  }\n\n  var useReduxContext = context === ReactReduxContext ? useDefaultReduxContext : function () {\n    return useContext(context);\n  };\n  return function useStore() {\n    var _useReduxContext = useReduxContext(),\n        store = _useReduxContext.store;\n\n    return store;\n  };\n}\n/**\r\n * A hook to access the redux store.\r\n *\r\n * @returns {any} the redux store\r\n *\r\n * @example\r\n *\r\n * import React from 'react'\r\n * import { useStore } from 'react-redux'\r\n *\r\n * export const ExampleComponent = () => {\r\n *   const store = useStore()\r\n *   return <div>{store.getState()}</div>\r\n * }\r\n */\n\nexport var useStore = /*#__PURE__*/createStoreHook();","import { ReactReduxContext } from '../components/Context';\nimport { useStore as useDefaultStore, createStoreHook } from './useStore';\n/**\r\n * Hook factory, which creates a `useDispatch` hook bound to a given context.\r\n *\r\n * @param {React.Context} [context=ReactReduxContext] Context passed to your `<Provider>`.\r\n * @returns {Function} A `useDispatch` hook bound to the specified context.\r\n */\n\nexport function createDispatchHook(context) {\n  if (context === void 0) {\n    context = ReactReduxContext;\n  }\n\n  var useStore = context === ReactReduxContext ? useDefaultStore : createStoreHook(context);\n  return function useDispatch() {\n    var store = useStore();\n    return store.dispatch;\n  };\n}\n/**\r\n * A hook to access the redux `dispatch` function.\r\n *\r\n * @returns {any|function} redux store's `dispatch` function\r\n *\r\n * @example\r\n *\r\n * import React, { useCallback } from 'react'\r\n * import { useDispatch } from 'react-redux'\r\n *\r\n * export const CounterComponent = ({ value }) => {\r\n *   const dispatch = useDispatch()\r\n *   const increaseCounter = useCallback(() => dispatch({ type: 'increase-counter' }), [])\r\n *   return (\r\n *     <div>\r\n *       <span>{value}</span>\r\n *       <button onClick={increaseCounter}>Increase counter</button>\r\n *     </div>\r\n *   )\r\n * }\r\n */\n\nexport var useDispatch = /*#__PURE__*/createDispatchHook();","import { useReducer, useRef, useMemo, useContext, useDebugValue } from 'react';\nimport { useReduxContext as useDefaultReduxContext } from './useReduxContext';\nimport { createSubscription } from '../utils/Subscription';\nimport { useIsomorphicLayoutEffect } from '../utils/useIsomorphicLayoutEffect';\nimport { ReactReduxContext } from '../components/Context';\n\nvar refEquality = function refEquality(a, b) {\n  return a === b;\n};\n\nfunction useSelectorWithStoreAndSubscription(selector, equalityFn, store, contextSub) {\n  var _useReducer = useReducer(function (s) {\n    return s + 1;\n  }, 0),\n      forceRender = _useReducer[1];\n\n  var subscription = useMemo(function () {\n    return createSubscription(store, contextSub);\n  }, [store, contextSub]);\n  var latestSubscriptionCallbackError = useRef();\n  var latestSelector = useRef();\n  var latestStoreState = useRef();\n  var latestSelectedState = useRef();\n  var storeState = store.getState();\n  var selectedState;\n\n  try {\n    if (selector !== latestSelector.current || storeState !== latestStoreState.current || latestSubscriptionCallbackError.current) {\n      var newSelectedState = selector(storeState); // ensure latest selected state is reused so that a custom equality function can result in identical references\n\n      if (latestSelectedState.current === undefined || !equalityFn(newSelectedState, latestSelectedState.current)) {\n        selectedState = newSelectedState;\n      } else {\n        selectedState = latestSelectedState.current;\n      }\n    } else {\n      selectedState = latestSelectedState.current;\n    }\n  } catch (err) {\n    if (latestSubscriptionCallbackError.current) {\n      err.message += \"\\nThe error may be correlated with this previous error:\\n\" + latestSubscriptionCallbackError.current.stack + \"\\n\\n\";\n    }\n\n    throw err;\n  }\n\n  useIsomorphicLayoutEffect(function () {\n    latestSelector.current = selector;\n    latestStoreState.current = storeState;\n    latestSelectedState.current = selectedState;\n    latestSubscriptionCallbackError.current = undefined;\n  });\n  useIsomorphicLayoutEffect(function () {\n    function checkForUpdates() {\n      try {\n        var newStoreState = store.getState(); // Avoid calling selector multiple times if the store's state has not changed\n\n        if (newStoreState === latestStoreState.current) {\n          return;\n        }\n\n        var _newSelectedState = latestSelector.current(newStoreState);\n\n        if (equalityFn(_newSelectedState, latestSelectedState.current)) {\n          return;\n        }\n\n        latestSelectedState.current = _newSelectedState;\n        latestStoreState.current = newStoreState;\n      } catch (err) {\n        // we ignore all errors here, since when the component\n        // is re-rendered, the selectors are called again, and\n        // will throw again, if neither props nor store state\n        // changed\n        latestSubscriptionCallbackError.current = err;\n      }\n\n      forceRender();\n    }\n\n    subscription.onStateChange = checkForUpdates;\n    subscription.trySubscribe();\n    checkForUpdates();\n    return function () {\n      return subscription.tryUnsubscribe();\n    };\n  }, [store, subscription]);\n  return selectedState;\n}\n/**\r\n * Hook factory, which creates a `useSelector` hook bound to a given context.\r\n *\r\n * @param {React.Context} [context=ReactReduxContext] Context passed to your `<Provider>`.\r\n * @returns {Function} A `useSelector` hook bound to the specified context.\r\n */\n\n\nexport function createSelectorHook(context) {\n  if (context === void 0) {\n    context = ReactReduxContext;\n  }\n\n  var useReduxContext = context === ReactReduxContext ? useDefaultReduxContext : function () {\n    return useContext(context);\n  };\n  return function useSelector(selector, equalityFn) {\n    if (equalityFn === void 0) {\n      equalityFn = refEquality;\n    }\n\n    if (process.env.NODE_ENV !== 'production') {\n      if (!selector) {\n        throw new Error(\"You must pass a selector to useSelector\");\n      }\n\n      if (typeof selector !== 'function') {\n        throw new Error(\"You must pass a function as a selector to useSelector\");\n      }\n\n      if (typeof equalityFn !== 'function') {\n        throw new Error(\"You must pass a function as an equality function to useSelector\");\n      }\n    }\n\n    var _useReduxContext = useReduxContext(),\n        store = _useReduxContext.store,\n        contextSub = _useReduxContext.subscription;\n\n    var selectedState = useSelectorWithStoreAndSubscription(selector, equalityFn, store, contextSub);\n    useDebugValue(selectedState);\n    return selectedState;\n  };\n}\n/**\r\n * A hook to access the redux store's state. This hook takes a selector function\r\n * as an argument. The selector is called with the store state.\r\n *\r\n * This hook takes an optional equality comparison function as the second parameter\r\n * that allows you to customize the way the selected state is compared to determine\r\n * whether the component needs to be re-rendered.\r\n *\r\n * @param {Function} selector the selector function\r\n * @param {Function=} equalityFn the function that will be used to determine equality\r\n *\r\n * @returns {any} the selected state\r\n *\r\n * @example\r\n *\r\n * import React from 'react'\r\n * import { useSelector } from 'react-redux'\r\n *\r\n * export const CounterComponent = () => {\r\n *   const counter = useSelector(state => state.counter)\r\n *   return <div>{counter}</div>\r\n * }\r\n */\n\nexport var useSelector = /*#__PURE__*/createSelectorHook();","export * from './exports';\nimport { unstable_batchedUpdates as batch } from './utils/reactBatchedUpdates';\nimport { setBatch } from './utils/batch'; // Enable batched updates in our subscriptions for use\n// with standard React renderers (ReactDOM, React Native)\n\nsetBatch(batch);\nexport { batch };","/** @license React v17.0.2\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var b=60103,c=60106,d=60107,e=60108,f=60114,g=60109,h=60110,k=60112,l=60113,m=60120,n=60115,p=60116,q=60121,r=60122,u=60117,v=60129,w=60131;\nif(\"function\"===typeof Symbol&&Symbol.for){var x=Symbol.for;b=x(\"react.element\");c=x(\"react.portal\");d=x(\"react.fragment\");e=x(\"react.strict_mode\");f=x(\"react.profiler\");g=x(\"react.provider\");h=x(\"react.context\");k=x(\"react.forward_ref\");l=x(\"react.suspense\");m=x(\"react.suspense_list\");n=x(\"react.memo\");p=x(\"react.lazy\");q=x(\"react.block\");r=x(\"react.server.block\");u=x(\"react.fundamental\");v=x(\"react.debug_trace_mode\");w=x(\"react.legacy_hidden\")}\nfunction y(a){if(\"object\"===typeof a&&null!==a){var t=a.$$typeof;switch(t){case b:switch(a=a.type,a){case d:case f:case e:case l:case m:return a;default:switch(a=a&&a.$$typeof,a){case h:case k:case p:case n:case g:return a;default:return t}}case c:return t}}}var z=g,A=b,B=k,C=d,D=p,E=n,F=c,G=f,H=e,I=l;exports.ContextConsumer=h;exports.ContextProvider=z;exports.Element=A;exports.ForwardRef=B;exports.Fragment=C;exports.Lazy=D;exports.Memo=E;exports.Portal=F;exports.Profiler=G;exports.StrictMode=H;\nexports.Suspense=I;exports.isAsyncMode=function(){return!1};exports.isConcurrentMode=function(){return!1};exports.isContextConsumer=function(a){return y(a)===h};exports.isContextProvider=function(a){return y(a)===g};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===b};exports.isForwardRef=function(a){return y(a)===k};exports.isFragment=function(a){return y(a)===d};exports.isLazy=function(a){return y(a)===p};exports.isMemo=function(a){return y(a)===n};\nexports.isPortal=function(a){return y(a)===c};exports.isProfiler=function(a){return y(a)===f};exports.isStrictMode=function(a){return y(a)===e};exports.isSuspense=function(a){return y(a)===l};exports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===d||a===f||a===v||a===e||a===l||a===m||a===w||\"object\"===typeof a&&null!==a&&(a.$$typeof===p||a.$$typeof===n||a.$$typeof===g||a.$$typeof===h||a.$$typeof===k||a.$$typeof===u||a.$$typeof===q||a[0]===r)?!0:!1};\nexports.typeOf=y;\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n  module.exports = require('./cjs/react-is.production.min.js');\n} else {\n  module.exports = require('./cjs/react-is.development.js');\n}\n","/**\n * React Router DOM v6.4.5\n *\n * Copyright (c) Remix Software Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE.md file in the root directory of this source tree.\n *\n * @license MIT\n */\nimport * as React from 'react';\nimport { UNSAFE_enhanceManualRouteObjects, Router, useHref, useResolvedPath, useLocation, UNSAFE_DataRouterStateContext, UNSAFE_NavigationContext, useNavigate, createPath, UNSAFE_RouteContext, useMatches, useNavigation, UNSAFE_DataRouterContext } from 'react-router';\nexport { AbortedDeferredError, Await, MemoryRouter, Navigate, NavigationType, Outlet, Route, Router, RouterProvider, Routes, UNSAFE_DataRouterContext, UNSAFE_DataRouterStateContext, UNSAFE_DataStaticRouterContext, UNSAFE_LocationContext, UNSAFE_NavigationContext, UNSAFE_RouteContext, UNSAFE_enhanceManualRouteObjects, createMemoryRouter, createPath, createRoutesFromChildren, createRoutesFromElements, defer, generatePath, isRouteErrorResponse, json, matchPath, matchRoutes, parsePath, redirect, renderMatches, resolvePath, useActionData, useAsyncError, useAsyncValue, useHref, useInRouterContext, useLoaderData, useLocation, useMatch, useMatches, useNavigate, useNavigation, useNavigationType, useOutlet, useOutletContext, useParams, useResolvedPath, useRevalidator, useRouteError, useRouteLoaderData, useRoutes } from 'react-router';\nimport { createRouter, createBrowserHistory, createHashHistory, ErrorResponse, invariant, joinPaths } from '@remix-run/router';\n\nfunction _extends() {\n  _extends = Object.assign ? Object.assign.bind() : function (target) {\n    for (var i = 1; i < arguments.length; i++) {\n      var source = arguments[i];\n\n      for (var key in source) {\n        if (Object.prototype.hasOwnProperty.call(source, key)) {\n          target[key] = source[key];\n        }\n      }\n    }\n\n    return target;\n  };\n  return _extends.apply(this, arguments);\n}\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n  if (source == null) return {};\n  var target = {};\n  var sourceKeys = Object.keys(source);\n  var key, i;\n\n  for (i = 0; i < sourceKeys.length; i++) {\n    key = sourceKeys[i];\n    if (excluded.indexOf(key) >= 0) continue;\n    target[key] = source[key];\n  }\n\n  return target;\n}\n\nconst defaultMethod = \"get\";\nconst defaultEncType = \"application/x-www-form-urlencoded\";\nfunction isHtmlElement(object) {\n  return object != null && typeof object.tagName === \"string\";\n}\nfunction isButtonElement(object) {\n  return isHtmlElement(object) && object.tagName.toLowerCase() === \"button\";\n}\nfunction isFormElement(object) {\n  return isHtmlElement(object) && object.tagName.toLowerCase() === \"form\";\n}\nfunction isInputElement(object) {\n  return isHtmlElement(object) && object.tagName.toLowerCase() === \"input\";\n}\n\nfunction isModifiedEvent(event) {\n  return !!(event.metaKey || event.altKey || event.ctrlKey || event.shiftKey);\n}\n\nfunction shouldProcessLinkClick(event, target) {\n  return event.button === 0 && ( // Ignore everything but left clicks\n  !target || target === \"_self\") && // Let browser handle \"target=_blank\" etc.\n  !isModifiedEvent(event) // Ignore clicks with modifier keys\n  ;\n}\n/**\n * Creates a URLSearchParams object using the given initializer.\n *\n * This is identical to `new URLSearchParams(init)` except it also\n * supports arrays as values in the object form of the initializer\n * instead of just strings. This is convenient when you need multiple\n * values for a given key, but don't want to use an array initializer.\n *\n * For example, instead of:\n *\n *   let searchParams = new URLSearchParams([\n *     ['sort', 'name'],\n *     ['sort', 'price']\n *   ]);\n *\n * you can do:\n *\n *   let searchParams = createSearchParams({\n *     sort: ['name', 'price']\n *   });\n */\n\nfunction createSearchParams(init) {\n  if (init === void 0) {\n    init = \"\";\n  }\n\n  return new URLSearchParams(typeof init === \"string\" || Array.isArray(init) || init instanceof URLSearchParams ? init : Object.keys(init).reduce((memo, key) => {\n    let value = init[key];\n    return memo.concat(Array.isArray(value) ? value.map(v => [key, v]) : [[key, value]]);\n  }, []));\n}\nfunction getSearchParamsForLocation(locationSearch, defaultSearchParams) {\n  let searchParams = createSearchParams(locationSearch);\n\n  for (let key of defaultSearchParams.keys()) {\n    if (!searchParams.has(key)) {\n      defaultSearchParams.getAll(key).forEach(value => {\n        searchParams.append(key, value);\n      });\n    }\n  }\n\n  return searchParams;\n}\nfunction getFormSubmissionInfo(target, defaultAction, options) {\n  let method;\n  let action;\n  let encType;\n  let formData;\n\n  if (isFormElement(target)) {\n    let submissionTrigger = options.submissionTrigger;\n    method = options.method || target.getAttribute(\"method\") || defaultMethod;\n    action = options.action || target.getAttribute(\"action\") || defaultAction;\n    encType = options.encType || target.getAttribute(\"enctype\") || defaultEncType;\n    formData = new FormData(target);\n\n    if (submissionTrigger && submissionTrigger.name) {\n      formData.append(submissionTrigger.name, submissionTrigger.value);\n    }\n  } else if (isButtonElement(target) || isInputElement(target) && (target.type === \"submit\" || target.type === \"image\")) {\n    let form = target.form;\n\n    if (form == null) {\n      throw new Error(\"Cannot submit a <button> or <input type=\\\"submit\\\"> without a <form>\");\n    } // <button>/<input type=\"submit\"> may override attributes of <form>\n\n\n    method = options.method || target.getAttribute(\"formmethod\") || form.getAttribute(\"method\") || defaultMethod;\n    action = options.action || target.getAttribute(\"formaction\") || form.getAttribute(\"action\") || defaultAction;\n    encType = options.encType || target.getAttribute(\"formenctype\") || form.getAttribute(\"enctype\") || defaultEncType;\n    formData = new FormData(form); // Include name + value from a <button>, appending in case the button name\n    // matches an existing input name\n\n    if (target.name) {\n      formData.append(target.name, target.value);\n    }\n  } else if (isHtmlElement(target)) {\n    throw new Error(\"Cannot submit element that is not <form>, <button>, or \" + \"<input type=\\\"submit|image\\\">\");\n  } else {\n    method = options.method || defaultMethod;\n    action = options.action || defaultAction;\n    encType = options.encType || defaultEncType;\n\n    if (target instanceof FormData) {\n      formData = target;\n    } else {\n      formData = new FormData();\n\n      if (target instanceof URLSearchParams) {\n        for (let [name, value] of target) {\n          formData.append(name, value);\n        }\n      } else if (target != null) {\n        for (let name of Object.keys(target)) {\n          formData.append(name, target[name]);\n        }\n      }\n    }\n  }\n\n  let {\n    protocol,\n    host\n  } = window.location;\n  let url = new URL(action, protocol + \"//\" + host);\n  return {\n    url,\n    method,\n    encType,\n    formData\n  };\n}\n\nconst _excluded = [\"onClick\", \"relative\", \"reloadDocument\", \"replace\", \"state\", \"target\", \"to\", \"preventScrollReset\"],\n      _excluded2 = [\"aria-current\", \"caseSensitive\", \"className\", \"end\", \"style\", \"to\", \"children\"],\n      _excluded3 = [\"reloadDocument\", \"replace\", \"method\", \"action\", \"onSubmit\", \"fetcherKey\", \"routeId\", \"relative\"];\n//#region Routers\n////////////////////////////////////////////////////////////////////////////////\n\nfunction createBrowserRouter(routes, opts) {\n  return createRouter({\n    basename: opts == null ? void 0 : opts.basename,\n    history: createBrowserHistory({\n      window: opts == null ? void 0 : opts.window\n    }),\n    hydrationData: (opts == null ? void 0 : opts.hydrationData) || parseHydrationData(),\n    routes: UNSAFE_enhanceManualRouteObjects(routes)\n  }).initialize();\n}\nfunction createHashRouter(routes, opts) {\n  return createRouter({\n    basename: opts == null ? void 0 : opts.basename,\n    history: createHashHistory({\n      window: opts == null ? void 0 : opts.window\n    }),\n    hydrationData: (opts == null ? void 0 : opts.hydrationData) || parseHydrationData(),\n    routes: UNSAFE_enhanceManualRouteObjects(routes)\n  }).initialize();\n}\n\nfunction parseHydrationData() {\n  var _window;\n\n  let state = (_window = window) == null ? void 0 : _window.__staticRouterHydrationData;\n\n  if (state && state.errors) {\n    state = _extends({}, state, {\n      errors: deserializeErrors(state.errors)\n    });\n  }\n\n  return state;\n}\n\nfunction deserializeErrors(errors) {\n  if (!errors) return null;\n  let entries = Object.entries(errors);\n  let serialized = {};\n\n  for (let [key, val] of entries) {\n    // Hey you!  If you change this, please change the corresponding logic in\n    // serializeErrors in react-router-dom/server.tsx :)\n    if (val && val.__type === \"RouteErrorResponse\") {\n      serialized[key] = new ErrorResponse(val.status, val.statusText, val.data, val.internal === true);\n    } else {\n      serialized[key] = val;\n    }\n  }\n\n  return serialized;\n}\n/**\n * A `<Router>` for use in web browsers. Provides the cleanest URLs.\n */\n\n\nfunction BrowserRouter(_ref) {\n  let {\n    basename,\n    children,\n    window\n  } = _ref;\n  let historyRef = React.useRef();\n\n  if (historyRef.current == null) {\n    historyRef.current = createBrowserHistory({\n      window,\n      v5Compat: true\n    });\n  }\n\n  let history = historyRef.current;\n  let [state, setState] = React.useState({\n    action: history.action,\n    location: history.location\n  });\n  React.useLayoutEffect(() => history.listen(setState), [history]);\n  return /*#__PURE__*/React.createElement(Router, {\n    basename: basename,\n    children: children,\n    location: state.location,\n    navigationType: state.action,\n    navigator: history\n  });\n}\n/**\n * A `<Router>` for use in web browsers. Stores the location in the hash\n * portion of the URL so it is not sent to the server.\n */\n\nfunction HashRouter(_ref2) {\n  let {\n    basename,\n    children,\n    window\n  } = _ref2;\n  let historyRef = React.useRef();\n\n  if (historyRef.current == null) {\n    historyRef.current = createHashHistory({\n      window,\n      v5Compat: true\n    });\n  }\n\n  let history = historyRef.current;\n  let [state, setState] = React.useState({\n    action: history.action,\n    location: history.location\n  });\n  React.useLayoutEffect(() => history.listen(setState), [history]);\n  return /*#__PURE__*/React.createElement(Router, {\n    basename: basename,\n    children: children,\n    location: state.location,\n    navigationType: state.action,\n    navigator: history\n  });\n}\n/**\n * A `<Router>` that accepts a pre-instantiated history object. It's important\n * to note that using your own history object is highly discouraged and may add\n * two versions of the history library to your bundles unless you use the same\n * version of the history library that React Router uses internally.\n */\n\nfunction HistoryRouter(_ref3) {\n  let {\n    basename,\n    children,\n    history\n  } = _ref3;\n  const [state, setState] = React.useState({\n    action: history.action,\n    location: history.location\n  });\n  React.useLayoutEffect(() => history.listen(setState), [history]);\n  return /*#__PURE__*/React.createElement(Router, {\n    basename: basename,\n    children: children,\n    location: state.location,\n    navigationType: state.action,\n    navigator: history\n  });\n}\n\nif (process.env.NODE_ENV !== \"production\") {\n  HistoryRouter.displayName = \"unstable_HistoryRouter\";\n}\n/**\n * The public API for rendering a history-aware <a>.\n */\n\nconst Link = /*#__PURE__*/React.forwardRef(function LinkWithRef(_ref4, ref) {\n  let {\n    onClick,\n    relative,\n    reloadDocument,\n    replace,\n    state,\n    target,\n    to,\n    preventScrollReset\n  } = _ref4,\n      rest = _objectWithoutPropertiesLoose(_ref4, _excluded);\n\n  let href = useHref(to, {\n    relative\n  });\n  let internalOnClick = useLinkClickHandler(to, {\n    replace,\n    state,\n    target,\n    preventScrollReset,\n    relative\n  });\n\n  function handleClick(event) {\n    if (onClick) onClick(event);\n\n    if (!event.defaultPrevented) {\n      internalOnClick(event);\n    }\n  }\n\n  return (\n    /*#__PURE__*/\n    // eslint-disable-next-line jsx-a11y/anchor-has-content\n    React.createElement(\"a\", _extends({}, rest, {\n      href: href,\n      onClick: reloadDocument ? onClick : handleClick,\n      ref: ref,\n      target: target\n    }))\n  );\n});\n\nif (process.env.NODE_ENV !== \"production\") {\n  Link.displayName = \"Link\";\n}\n/**\n * A <Link> wrapper that knows if it's \"active\" or not.\n */\n\n\nconst NavLink = /*#__PURE__*/React.forwardRef(function NavLinkWithRef(_ref5, ref) {\n  let {\n    \"aria-current\": ariaCurrentProp = \"page\",\n    caseSensitive = false,\n    className: classNameProp = \"\",\n    end = false,\n    style: styleProp,\n    to,\n    children\n  } = _ref5,\n      rest = _objectWithoutPropertiesLoose(_ref5, _excluded2);\n\n  let path = useResolvedPath(to, {\n    relative: rest.relative\n  });\n  let location = useLocation();\n  let routerState = React.useContext(UNSAFE_DataRouterStateContext);\n  let {\n    navigator\n  } = React.useContext(UNSAFE_NavigationContext);\n  let toPathname = navigator.encodeLocation ? navigator.encodeLocation(path).pathname : path.pathname;\n  let locationPathname = location.pathname;\n  let nextLocationPathname = routerState && routerState.navigation && routerState.navigation.location ? routerState.navigation.location.pathname : null;\n\n  if (!caseSensitive) {\n    locationPathname = locationPathname.toLowerCase();\n    nextLocationPathname = nextLocationPathname ? nextLocationPathname.toLowerCase() : null;\n    toPathname = toPathname.toLowerCase();\n  }\n\n  let isActive = locationPathname === toPathname || !end && locationPathname.startsWith(toPathname) && locationPathname.charAt(toPathname.length) === \"/\";\n  let isPending = nextLocationPathname != null && (nextLocationPathname === toPathname || !end && nextLocationPathname.startsWith(toPathname) && nextLocationPathname.charAt(toPathname.length) === \"/\");\n  let ariaCurrent = isActive ? ariaCurrentProp : undefined;\n  let className;\n\n  if (typeof classNameProp === \"function\") {\n    className = classNameProp({\n      isActive,\n      isPending\n    });\n  } else {\n    // If the className prop is not a function, we use a default `active`\n    // class for <NavLink />s that are active. In v5 `active` was the default\n    // value for `activeClassName`, but we are removing that API and can still\n    // use the old default behavior for a cleaner upgrade path and keep the\n    // simple styling rules working as they currently do.\n    className = [classNameProp, isActive ? \"active\" : null, isPending ? \"pending\" : null].filter(Boolean).join(\" \");\n  }\n\n  let style = typeof styleProp === \"function\" ? styleProp({\n    isActive,\n    isPending\n  }) : styleProp;\n  return /*#__PURE__*/React.createElement(Link, _extends({}, rest, {\n    \"aria-current\": ariaCurrent,\n    className: className,\n    ref: ref,\n    style: style,\n    to: to\n  }), typeof children === \"function\" ? children({\n    isActive,\n    isPending\n  }) : children);\n});\n\nif (process.env.NODE_ENV !== \"production\") {\n  NavLink.displayName = \"NavLink\";\n}\n/**\n * A `@remix-run/router`-aware `<form>`. It behaves like a normal form except\n * that the interaction with the server is with `fetch` instead of new document\n * requests, allowing components to add nicer UX to the page as the form is\n * submitted and returns with data.\n */\n\n\nconst Form = /*#__PURE__*/React.forwardRef((props, ref) => {\n  return /*#__PURE__*/React.createElement(FormImpl, _extends({}, props, {\n    ref: ref\n  }));\n});\n\nif (process.env.NODE_ENV !== \"production\") {\n  Form.displayName = \"Form\";\n}\n\nconst FormImpl = /*#__PURE__*/React.forwardRef((_ref6, forwardedRef) => {\n  let {\n    reloadDocument,\n    replace,\n    method = defaultMethod,\n    action,\n    onSubmit,\n    fetcherKey,\n    routeId,\n    relative\n  } = _ref6,\n      props = _objectWithoutPropertiesLoose(_ref6, _excluded3);\n\n  let submit = useSubmitImpl(fetcherKey, routeId);\n  let formMethod = method.toLowerCase() === \"get\" ? \"get\" : \"post\";\n  let formAction = useFormAction(action, {\n    relative\n  });\n\n  let submitHandler = event => {\n    onSubmit && onSubmit(event);\n    if (event.defaultPrevented) return;\n    event.preventDefault();\n    let submitter = event.nativeEvent.submitter;\n    submit(submitter || event.currentTarget, {\n      method,\n      replace,\n      relative\n    });\n  };\n\n  return /*#__PURE__*/React.createElement(\"form\", _extends({\n    ref: forwardedRef,\n    method: formMethod,\n    action: formAction,\n    onSubmit: reloadDocument ? onSubmit : submitHandler\n  }, props));\n});\n\nif (process.env.NODE_ENV !== \"production\") {\n  FormImpl.displayName = \"FormImpl\";\n}\n/**\n * This component will emulate the browser's scroll restoration on location\n * changes.\n */\n\n\nfunction ScrollRestoration(_ref7) {\n  let {\n    getKey,\n    storageKey\n  } = _ref7;\n  useScrollRestoration({\n    getKey,\n    storageKey\n  });\n  return null;\n}\n\nif (process.env.NODE_ENV !== \"production\") {\n  ScrollRestoration.displayName = \"ScrollRestoration\";\n} //#endregion\n////////////////////////////////////////////////////////////////////////////////\n//#region Hooks\n////////////////////////////////////////////////////////////////////////////////\n\n\nvar DataRouterHook;\n\n(function (DataRouterHook) {\n  DataRouterHook[\"UseScrollRestoration\"] = \"useScrollRestoration\";\n  DataRouterHook[\"UseSubmitImpl\"] = \"useSubmitImpl\";\n  DataRouterHook[\"UseFetcher\"] = \"useFetcher\";\n})(DataRouterHook || (DataRouterHook = {}));\n\nvar DataRouterStateHook;\n\n(function (DataRouterStateHook) {\n  DataRouterStateHook[\"UseFetchers\"] = \"useFetchers\";\n  DataRouterStateHook[\"UseScrollRestoration\"] = \"useScrollRestoration\";\n})(DataRouterStateHook || (DataRouterStateHook = {}));\n\nfunction getDataRouterConsoleError(hookName) {\n  return hookName + \" must be used within a data router.  See https://reactrouter.com/routers/picking-a-router.\";\n}\n\nfunction useDataRouterContext(hookName) {\n  let ctx = React.useContext(UNSAFE_DataRouterContext);\n  !ctx ? process.env.NODE_ENV !== \"production\" ? invariant(false, getDataRouterConsoleError(hookName)) : invariant(false) : void 0;\n  return ctx;\n}\n\nfunction useDataRouterState(hookName) {\n  let state = React.useContext(UNSAFE_DataRouterStateContext);\n  !state ? process.env.NODE_ENV !== \"production\" ? invariant(false, getDataRouterConsoleError(hookName)) : invariant(false) : void 0;\n  return state;\n}\n/**\n * Handles the click behavior for router `<Link>` components. This is useful if\n * you need to create custom `<Link>` components with the same click behavior we\n * use in our exported `<Link>`.\n */\n\n\nfunction useLinkClickHandler(to, _temp) {\n  let {\n    target,\n    replace: replaceProp,\n    state,\n    preventScrollReset,\n    relative\n  } = _temp === void 0 ? {} : _temp;\n  let navigate = useNavigate();\n  let location = useLocation();\n  let path = useResolvedPath(to, {\n    relative\n  });\n  return React.useCallback(event => {\n    if (shouldProcessLinkClick(event, target)) {\n      event.preventDefault(); // If the URL hasn't changed, a regular <a> will do a replace instead of\n      // a push, so do the same here unless the replace prop is explicitly set\n\n      let replace = replaceProp !== undefined ? replaceProp : createPath(location) === createPath(path);\n      navigate(to, {\n        replace,\n        state,\n        preventScrollReset,\n        relative\n      });\n    }\n  }, [location, navigate, path, replaceProp, state, target, to, preventScrollReset, relative]);\n}\n/**\n * A convenient wrapper for reading and writing search parameters via the\n * URLSearchParams interface.\n */\n\nfunction useSearchParams(defaultInit) {\n  process.env.NODE_ENV !== \"production\" ? warning(typeof URLSearchParams !== \"undefined\", \"You cannot use the `useSearchParams` hook in a browser that does not \" + \"support the URLSearchParams API. If you need to support Internet \" + \"Explorer 11, we recommend you load a polyfill such as \" + \"https://github.com/ungap/url-search-params\\n\\n\" + \"If you're unsure how to load polyfills, we recommend you check out \" + \"https://polyfill.io/v3/ which provides some recommendations about how \" + \"to load polyfills only for users that need them, instead of for every \" + \"user.\") : void 0;\n  let defaultSearchParamsRef = React.useRef(createSearchParams(defaultInit));\n  let location = useLocation();\n  let searchParams = React.useMemo(() => getSearchParamsForLocation(location.search, defaultSearchParamsRef.current), [location.search]);\n  let navigate = useNavigate();\n  let setSearchParams = React.useCallback((nextInit, navigateOptions) => {\n    const newSearchParams = createSearchParams(typeof nextInit === \"function\" ? nextInit(searchParams) : nextInit);\n    navigate(\"?\" + newSearchParams, navigateOptions);\n  }, [navigate, searchParams]);\n  return [searchParams, setSearchParams];\n}\n/**\n * Returns a function that may be used to programmatically submit a form (or\n * some arbitrary data) to the server.\n */\n\nfunction useSubmit() {\n  return useSubmitImpl();\n}\n\nfunction useSubmitImpl(fetcherKey, routeId) {\n  let {\n    router\n  } = useDataRouterContext(DataRouterHook.UseSubmitImpl);\n  let defaultAction = useFormAction();\n  return React.useCallback(function (target, options) {\n    if (options === void 0) {\n      options = {};\n    }\n\n    if (typeof document === \"undefined\") {\n      throw new Error(\"You are calling submit during the server render. \" + \"Try calling submit within a `useEffect` or callback instead.\");\n    }\n\n    let {\n      method,\n      encType,\n      formData,\n      url\n    } = getFormSubmissionInfo(target, defaultAction, options);\n    let href = url.pathname + url.search;\n    let opts = {\n      replace: options.replace,\n      formData,\n      formMethod: method,\n      formEncType: encType\n    };\n\n    if (fetcherKey) {\n      !(routeId != null) ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"No routeId available for useFetcher()\") : invariant(false) : void 0;\n      router.fetch(fetcherKey, routeId, href, opts);\n    } else {\n      router.navigate(href, opts);\n    }\n  }, [defaultAction, router, fetcherKey, routeId]);\n}\n\nfunction useFormAction(action, _temp2) {\n  let {\n    relative\n  } = _temp2 === void 0 ? {} : _temp2;\n  let {\n    basename\n  } = React.useContext(UNSAFE_NavigationContext);\n  let routeContext = React.useContext(UNSAFE_RouteContext);\n  !routeContext ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"useFormAction must be used inside a RouteContext\") : invariant(false) : void 0;\n  let [match] = routeContext.matches.slice(-1);\n  let resolvedAction = action != null ? action : \".\"; // Shallow clone path so we can modify it below, otherwise we modify the\n  // object referenced by useMemo inside useResolvedPath\n\n  let path = _extends({}, useResolvedPath(resolvedAction, {\n    relative\n  })); // Previously we set the default action to \".\". The problem with this is that\n  // `useResolvedPath(\".\")` excludes search params and the hash of the resolved\n  // URL. This is the intended behavior of when \".\" is specifically provided as\n  // the form action, but inconsistent w/ browsers when the action is omitted.\n  // https://github.com/remix-run/remix/issues/927\n\n\n  let location = useLocation();\n\n  if (action == null) {\n    // Safe to write to these directly here since if action was undefined, we\n    // would have called useResolvedPath(\".\") which will never include a search\n    // or hash\n    path.search = location.search;\n    path.hash = location.hash; // When grabbing search params from the URL, remove the automatically\n    // inserted ?index param so we match the useResolvedPath search behavior\n    // which would not include ?index\n\n    if (match.route.index) {\n      let params = new URLSearchParams(path.search);\n      params.delete(\"index\");\n      path.search = params.toString() ? \"?\" + params.toString() : \"\";\n    }\n  }\n\n  if ((!action || action === \".\") && match.route.index) {\n    path.search = path.search ? path.search.replace(/^\\?/, \"?index&\") : \"?index\";\n  } // If we're operating within a basename, prepend it to the pathname prior\n  // to creating the form action.  If this is a root navigation, then just use\n  // the raw basename which allows the basename to have full control over the\n  // presence of a trailing slash on root actions\n\n\n  if (basename !== \"/\") {\n    path.pathname = path.pathname === \"/\" ? basename : joinPaths([basename, path.pathname]);\n  }\n\n  return createPath(path);\n}\n\nfunction createFetcherForm(fetcherKey, routeId) {\n  let FetcherForm = /*#__PURE__*/React.forwardRef((props, ref) => {\n    return /*#__PURE__*/React.createElement(FormImpl, _extends({}, props, {\n      ref: ref,\n      fetcherKey: fetcherKey,\n      routeId: routeId\n    }));\n  });\n\n  if (process.env.NODE_ENV !== \"production\") {\n    FetcherForm.displayName = \"fetcher.Form\";\n  }\n\n  return FetcherForm;\n}\n\nlet fetcherId = 0;\n/**\n * Interacts with route loaders and actions without causing a navigation. Great\n * for any interaction that stays on the same page.\n */\n\nfunction useFetcher() {\n  var _route$matches;\n\n  let {\n    router\n  } = useDataRouterContext(DataRouterHook.UseFetcher);\n  let route = React.useContext(UNSAFE_RouteContext);\n  !route ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"useFetcher must be used inside a RouteContext\") : invariant(false) : void 0;\n  let routeId = (_route$matches = route.matches[route.matches.length - 1]) == null ? void 0 : _route$matches.route.id;\n  !(routeId != null) ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"useFetcher can only be used on routes that contain a unique \\\"id\\\"\") : invariant(false) : void 0;\n  let [fetcherKey] = React.useState(() => String(++fetcherId));\n  let [Form] = React.useState(() => {\n    !routeId ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"No routeId available for fetcher.Form()\") : invariant(false) : void 0;\n    return createFetcherForm(fetcherKey, routeId);\n  });\n  let [load] = React.useState(() => href => {\n    !router ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"No router available for fetcher.load()\") : invariant(false) : void 0;\n    !routeId ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"No routeId available for fetcher.load()\") : invariant(false) : void 0;\n    router.fetch(fetcherKey, routeId, href);\n  });\n  let submit = useSubmitImpl(fetcherKey, routeId);\n  let fetcher = router.getFetcher(fetcherKey);\n  let fetcherWithComponents = React.useMemo(() => _extends({\n    Form,\n    submit,\n    load\n  }, fetcher), [fetcher, Form, submit, load]);\n  React.useEffect(() => {\n    // Is this busted when the React team gets real weird and calls effects\n    // twice on mount?  We really just need to garbage collect here when this\n    // fetcher is no longer around.\n    return () => {\n      if (!router) {\n        console.warn(\"No fetcher available to clean up from useFetcher()\");\n        return;\n      }\n\n      router.deleteFetcher(fetcherKey);\n    };\n  }, [router, fetcherKey]);\n  return fetcherWithComponents;\n}\n/**\n * Provides all fetchers currently on the page. Useful for layouts and parent\n * routes that need to provide pending/optimistic UI regarding the fetch.\n */\n\nfunction useFetchers() {\n  let state = useDataRouterState(DataRouterStateHook.UseFetchers);\n  return [...state.fetchers.values()];\n}\nconst SCROLL_RESTORATION_STORAGE_KEY = \"react-router-scroll-positions\";\nlet savedScrollPositions = {};\n/**\n * When rendered inside a RouterProvider, will restore scroll positions on navigations\n */\n\nfunction useScrollRestoration(_temp3) {\n  let {\n    getKey,\n    storageKey\n  } = _temp3 === void 0 ? {} : _temp3;\n  let {\n    router\n  } = useDataRouterContext(DataRouterHook.UseScrollRestoration);\n  let {\n    restoreScrollPosition,\n    preventScrollReset\n  } = useDataRouterState(DataRouterStateHook.UseScrollRestoration);\n  let location = useLocation();\n  let matches = useMatches();\n  let navigation = useNavigation(); // Trigger manual scroll restoration while we're active\n\n  React.useEffect(() => {\n    window.history.scrollRestoration = \"manual\";\n    return () => {\n      window.history.scrollRestoration = \"auto\";\n    };\n  }, []); // Save positions on unload\n\n  useBeforeUnload(React.useCallback(() => {\n    if (navigation.state === \"idle\") {\n      let key = (getKey ? getKey(location, matches) : null) || location.key;\n      savedScrollPositions[key] = window.scrollY;\n    }\n\n    sessionStorage.setItem(storageKey || SCROLL_RESTORATION_STORAGE_KEY, JSON.stringify(savedScrollPositions));\n    window.history.scrollRestoration = \"auto\";\n  }, [storageKey, getKey, navigation.state, location, matches])); // Read in any saved scroll locations\n\n  React.useLayoutEffect(() => {\n    try {\n      let sessionPositions = sessionStorage.getItem(storageKey || SCROLL_RESTORATION_STORAGE_KEY);\n\n      if (sessionPositions) {\n        savedScrollPositions = JSON.parse(sessionPositions);\n      }\n    } catch (e) {// no-op, use default empty object\n    }\n  }, [storageKey]); // Enable scroll restoration in the router\n\n  React.useLayoutEffect(() => {\n    let disableScrollRestoration = router == null ? void 0 : router.enableScrollRestoration(savedScrollPositions, () => window.scrollY, getKey);\n    return () => disableScrollRestoration && disableScrollRestoration();\n  }, [router, getKey]); // Restore scrolling when state.restoreScrollPosition changes\n\n  React.useLayoutEffect(() => {\n    // Explicit false means don't do anything (used for submissions)\n    if (restoreScrollPosition === false) {\n      return;\n    } // been here before, scroll to it\n\n\n    if (typeof restoreScrollPosition === \"number\") {\n      window.scrollTo(0, restoreScrollPosition);\n      return;\n    } // try to scroll to the hash\n\n\n    if (location.hash) {\n      let el = document.getElementById(location.hash.slice(1));\n\n      if (el) {\n        el.scrollIntoView();\n        return;\n      }\n    } // Opt out of scroll reset if this link requested it\n\n\n    if (preventScrollReset === true) {\n      return;\n    } // otherwise go to the top on new locations\n\n\n    window.scrollTo(0, 0);\n  }, [location, restoreScrollPosition, preventScrollReset]);\n}\n\nfunction useBeforeUnload(callback) {\n  React.useEffect(() => {\n    window.addEventListener(\"beforeunload\", callback);\n    return () => {\n      window.removeEventListener(\"beforeunload\", callback);\n    };\n  }, [callback]);\n} //#endregion\n////////////////////////////////////////////////////////////////////////////////\n//#region Utils\n////////////////////////////////////////////////////////////////////////////////\n\n\nfunction warning(cond, message) {\n  if (!cond) {\n    // eslint-disable-next-line no-console\n    if (typeof console !== \"undefined\") console.warn(message);\n\n    try {\n      // Welcome to debugging React Router!\n      //\n      // This error is thrown as a convenience so you can more easily\n      // find the source for a warning that appears in the console by\n      // enabling \"pause on exceptions\" in your JavaScript debugger.\n      throw new Error(message); // eslint-disable-next-line no-empty\n    } catch (e) {}\n  }\n} //#endregion\n\nexport { BrowserRouter, Form, HashRouter, Link, NavLink, ScrollRestoration, createBrowserRouter, createHashRouter, createSearchParams, HistoryRouter as unstable_HistoryRouter, useFetcher, useFetchers, useFormAction, useLinkClickHandler, useSearchParams, useSubmit };\n//# sourceMappingURL=index.js.map\n","/**\n * React Router v6.4.5\n *\n * Copyright (c) Remix Software Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE.md file in the root directory of this source tree.\n *\n * @license MIT\n */\nimport { invariant, joinPaths, matchPath, UNSAFE_getPathContributingMatches, warning, resolveTo, parsePath, matchRoutes, Action, isRouteErrorResponse, createMemoryHistory, stripBasename, AbortedDeferredError, createRouter } from '@remix-run/router';\nexport { AbortedDeferredError, Action as NavigationType, createPath, defer, generatePath, isRouteErrorResponse, json, matchPath, matchRoutes, parsePath, redirect, resolvePath } from '@remix-run/router';\nimport * as React from 'react';\n\nfunction _extends() {\n  _extends = Object.assign ? Object.assign.bind() : function (target) {\n    for (var i = 1; i < arguments.length; i++) {\n      var source = arguments[i];\n\n      for (var key in source) {\n        if (Object.prototype.hasOwnProperty.call(source, key)) {\n          target[key] = source[key];\n        }\n      }\n    }\n\n    return target;\n  };\n  return _extends.apply(this, arguments);\n}\n\n/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n/**\n * inlined Object.is polyfill to avoid requiring consumers ship their own\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\n */\n\nfunction isPolyfill(x, y) {\n  return x === y && (x !== 0 || 1 / x === 1 / y) || x !== x && y !== y // eslint-disable-line no-self-compare\n  ;\n}\n\nconst is = typeof Object.is === \"function\" ? Object.is : isPolyfill; // Intentionally not using named imports because Rollup uses dynamic\n// dispatch for CommonJS interop named imports.\n\nconst {\n  useState,\n  useEffect,\n  useLayoutEffect,\n  useDebugValue\n} = React;\nlet didWarnOld18Alpha = false;\nlet didWarnUncachedGetSnapshot = false; // Disclaimer: This shim breaks many of the rules of React, and only works\n// because of a very particular set of implementation details and assumptions\n// -- change any one of them and it will break. The most important assumption\n// is that updates are always synchronous, because concurrent rendering is\n// only available in versions of React that also have a built-in\n// useSyncExternalStore API. And we only use this shim when the built-in API\n// does not exist.\n//\n// Do not assume that the clever hacks used by this hook also work in general.\n// The point of this shim is to replace the need for hacks by other libraries.\n\nfunction useSyncExternalStore$2(subscribe, getSnapshot, // Note: The shim does not use getServerSnapshot, because pre-18 versions of\n// React do not expose a way to check if we're hydrating. So users of the shim\n// will need to track that themselves and return the correct value\n// from `getSnapshot`.\ngetServerSnapshot) {\n  if (process.env.NODE_ENV !== \"production\") {\n    if (!didWarnOld18Alpha) {\n      if (\"startTransition\" in React) {\n        didWarnOld18Alpha = true;\n        console.error(\"You are using an outdated, pre-release alpha of React 18 that \" + \"does not support useSyncExternalStore. The \" + \"use-sync-external-store shim will not work correctly. Upgrade \" + \"to a newer pre-release.\");\n      }\n    }\n  } // Read the current snapshot from the store on every render. Again, this\n  // breaks the rules of React, and only works here because of specific\n  // implementation details, most importantly that updates are\n  // always synchronous.\n\n\n  const value = getSnapshot();\n\n  if (process.env.NODE_ENV !== \"production\") {\n    if (!didWarnUncachedGetSnapshot) {\n      const cachedValue = getSnapshot();\n\n      if (!is(value, cachedValue)) {\n        console.error(\"The result of getSnapshot should be cached to avoid an infinite loop\");\n        didWarnUncachedGetSnapshot = true;\n      }\n    }\n  } // Because updates are synchronous, we don't queue them. Instead we force a\n  // re-render whenever the subscribed state changes by updating an some\n  // arbitrary useState hook. Then, during render, we call getSnapshot to read\n  // the current value.\n  //\n  // Because we don't actually use the state returned by the useState hook, we\n  // can save a bit of memory by storing other stuff in that slot.\n  //\n  // To implement the early bailout, we need to track some things on a mutable\n  // object. Usually, we would put that in a useRef hook, but we can stash it in\n  // our useState hook instead.\n  //\n  // To force a re-render, we call forceUpdate({inst}). That works because the\n  // new object always fails an equality check.\n\n\n  const [{\n    inst\n  }, forceUpdate] = useState({\n    inst: {\n      value,\n      getSnapshot\n    }\n  }); // Track the latest getSnapshot function with a ref. This needs to be updated\n  // in the layout phase so we can access it during the tearing check that\n  // happens on subscribe.\n\n  useLayoutEffect(() => {\n    inst.value = value;\n    inst.getSnapshot = getSnapshot; // Whenever getSnapshot or subscribe changes, we need to check in the\n    // commit phase if there was an interleaved mutation. In concurrent mode\n    // this can happen all the time, but even in synchronous mode, an earlier\n    // effect may have mutated the store.\n\n    if (checkIfSnapshotChanged(inst)) {\n      // Force a re-render.\n      forceUpdate({\n        inst\n      });\n    } // eslint-disable-next-line react-hooks/exhaustive-deps\n\n  }, [subscribe, value, getSnapshot]);\n  useEffect(() => {\n    // Check for changes right before subscribing. Subsequent changes will be\n    // detected in the subscription handler.\n    if (checkIfSnapshotChanged(inst)) {\n      // Force a re-render.\n      forceUpdate({\n        inst\n      });\n    }\n\n    const handleStoreChange = () => {\n      // TODO: Because there is no cross-renderer API for batching updates, it's\n      // up to the consumer of this library to wrap their subscription event\n      // with unstable_batchedUpdates. Should we try to detect when this isn't\n      // the case and print a warning in development?\n      // The store changed. Check if the snapshot changed since the last time we\n      // read from the store.\n      if (checkIfSnapshotChanged(inst)) {\n        // Force a re-render.\n        forceUpdate({\n          inst\n        });\n      }\n    }; // Subscribe to the store and return a clean-up function.\n\n\n    return subscribe(handleStoreChange); // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, [subscribe]);\n  useDebugValue(value);\n  return value;\n}\n\nfunction checkIfSnapshotChanged(inst) {\n  const latestGetSnapshot = inst.getSnapshot;\n  const prevValue = inst.value;\n\n  try {\n    const nextValue = latestGetSnapshot();\n    return !is(prevValue, nextValue);\n  } catch (error) {\n    return true;\n  }\n}\n\n/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @flow\n */\nfunction useSyncExternalStore$1(subscribe, getSnapshot, getServerSnapshot) {\n  // Note: The shim does not use getServerSnapshot, because pre-18 versions of\n  // React do not expose a way to check if we're hydrating. So users of the shim\n  // will need to track that themselves and return the correct value\n  // from `getSnapshot`.\n  return getSnapshot();\n}\n\n/**\n * Inlined into the react-router repo since use-sync-external-store does not\n * provide a UMD-compatible package, so we need this to be able to distribute\n * UMD react-router bundles\n */\nconst canUseDOM = !!(typeof window !== \"undefined\" && typeof window.document !== \"undefined\" && typeof window.document.createElement !== \"undefined\");\nconst isServerEnvironment = !canUseDOM;\nconst shim = isServerEnvironment ? useSyncExternalStore$1 : useSyncExternalStore$2;\nconst useSyncExternalStore = \"useSyncExternalStore\" in React ? (module => module.useSyncExternalStore)(React) : shim;\n\n// Contexts for data routers\nconst DataStaticRouterContext = /*#__PURE__*/React.createContext(null);\n\nif (process.env.NODE_ENV !== \"production\") {\n  DataStaticRouterContext.displayName = \"DataStaticRouterContext\";\n}\n\nconst DataRouterContext = /*#__PURE__*/React.createContext(null);\n\nif (process.env.NODE_ENV !== \"production\") {\n  DataRouterContext.displayName = \"DataRouter\";\n}\n\nconst DataRouterStateContext = /*#__PURE__*/React.createContext(null);\n\nif (process.env.NODE_ENV !== \"production\") {\n  DataRouterStateContext.displayName = \"DataRouterState\";\n}\n\nconst AwaitContext = /*#__PURE__*/React.createContext(null);\n\nif (process.env.NODE_ENV !== \"production\") {\n  AwaitContext.displayName = \"Await\";\n}\n\nconst NavigationContext = /*#__PURE__*/React.createContext(null);\n\nif (process.env.NODE_ENV !== \"production\") {\n  NavigationContext.displayName = \"Navigation\";\n}\n\nconst LocationContext = /*#__PURE__*/React.createContext(null);\n\nif (process.env.NODE_ENV !== \"production\") {\n  LocationContext.displayName = \"Location\";\n}\n\nconst RouteContext = /*#__PURE__*/React.createContext({\n  outlet: null,\n  matches: []\n});\n\nif (process.env.NODE_ENV !== \"production\") {\n  RouteContext.displayName = \"Route\";\n}\n\nconst RouteErrorContext = /*#__PURE__*/React.createContext(null);\n\nif (process.env.NODE_ENV !== \"production\") {\n  RouteErrorContext.displayName = \"RouteError\";\n}\n\n/**\n * Returns the full href for the given \"to\" value. This is useful for building\n * custom links that are also accessible and preserve right-click behavior.\n *\n * @see https://reactrouter.com/hooks/use-href\n */\n\nfunction useHref(to, _temp) {\n  let {\n    relative\n  } = _temp === void 0 ? {} : _temp;\n  !useInRouterContext() ? process.env.NODE_ENV !== \"production\" ? invariant(false, // TODO: This error is probably because they somehow have 2 versions of the\n  // router loaded. We can help them understand how to avoid that.\n  \"useHref() may be used only in the context of a <Router> component.\") : invariant(false) : void 0;\n  let {\n    basename,\n    navigator\n  } = React.useContext(NavigationContext);\n  let {\n    hash,\n    pathname,\n    search\n  } = useResolvedPath(to, {\n    relative\n  });\n  let joinedPathname = pathname; // If we're operating within a basename, prepend it to the pathname prior\n  // to creating the href.  If this is a root navigation, then just use the raw\n  // basename which allows the basename to have full control over the presence\n  // of a trailing slash on root links\n\n  if (basename !== \"/\") {\n    joinedPathname = pathname === \"/\" ? basename : joinPaths([basename, pathname]);\n  }\n\n  return navigator.createHref({\n    pathname: joinedPathname,\n    search,\n    hash\n  });\n}\n/**\n * Returns true if this component is a descendant of a <Router>.\n *\n * @see https://reactrouter.com/hooks/use-in-router-context\n */\n\nfunction useInRouterContext() {\n  return React.useContext(LocationContext) != null;\n}\n/**\n * Returns the current location object, which represents the current URL in web\n * browsers.\n *\n * Note: If you're using this it may mean you're doing some of your own\n * \"routing\" in your app, and we'd like to know what your use case is. We may\n * be able to provide something higher-level to better suit your needs.\n *\n * @see https://reactrouter.com/hooks/use-location\n */\n\nfunction useLocation() {\n  !useInRouterContext() ? process.env.NODE_ENV !== \"production\" ? invariant(false, // TODO: This error is probably because they somehow have 2 versions of the\n  // router loaded. We can help them understand how to avoid that.\n  \"useLocation() may be used only in the context of a <Router> component.\") : invariant(false) : void 0;\n  return React.useContext(LocationContext).location;\n}\n/**\n * Returns the current navigation action which describes how the router came to\n * the current location, either by a pop, push, or replace on the history stack.\n *\n * @see https://reactrouter.com/hooks/use-navigation-type\n */\n\nfunction useNavigationType() {\n  return React.useContext(LocationContext).navigationType;\n}\n/**\n * Returns a PathMatch object if the given pattern matches the current URL.\n * This is useful for components that need to know \"active\" state, e.g.\n * <NavLink>.\n *\n * @see https://reactrouter.com/hooks/use-match\n */\n\nfunction useMatch(pattern) {\n  !useInRouterContext() ? process.env.NODE_ENV !== \"production\" ? invariant(false, // TODO: This error is probably because they somehow have 2 versions of the\n  // router loaded. We can help them understand how to avoid that.\n  \"useMatch() may be used only in the context of a <Router> component.\") : invariant(false) : void 0;\n  let {\n    pathname\n  } = useLocation();\n  return React.useMemo(() => matchPath(pattern, pathname), [pathname, pattern]);\n}\n/**\n * The interface for the navigate() function returned from useNavigate().\n */\n\n/**\n * Returns an imperative method for changing the location. Used by <Link>s, but\n * may also be used by other elements to change the location.\n *\n * @see https://reactrouter.com/hooks/use-navigate\n */\nfunction useNavigate() {\n  !useInRouterContext() ? process.env.NODE_ENV !== \"production\" ? invariant(false, // TODO: This error is probably because they somehow have 2 versions of the\n  // router loaded. We can help them understand how to avoid that.\n  \"useNavigate() may be used only in the context of a <Router> component.\") : invariant(false) : void 0;\n  let {\n    basename,\n    navigator\n  } = React.useContext(NavigationContext);\n  let {\n    matches\n  } = React.useContext(RouteContext);\n  let {\n    pathname: locationPathname\n  } = useLocation();\n  let routePathnamesJson = JSON.stringify(UNSAFE_getPathContributingMatches(matches).map(match => match.pathnameBase));\n  let activeRef = React.useRef(false);\n  React.useEffect(() => {\n    activeRef.current = true;\n  });\n  let navigate = React.useCallback(function (to, options) {\n    if (options === void 0) {\n      options = {};\n    }\n\n    process.env.NODE_ENV !== \"production\" ? warning(activeRef.current, \"You should call navigate() in a React.useEffect(), not when \" + \"your component is first rendered.\") : void 0;\n    if (!activeRef.current) return;\n\n    if (typeof to === \"number\") {\n      navigator.go(to);\n      return;\n    }\n\n    let path = resolveTo(to, JSON.parse(routePathnamesJson), locationPathname, options.relative === \"path\"); // If we're operating within a basename, prepend it to the pathname prior\n    // to handing off to history.  If this is a root navigation, then we\n    // navigate to the raw basename which allows the basename to have full\n    // control over the presence of a trailing slash on root links\n\n    if (basename !== \"/\") {\n      path.pathname = path.pathname === \"/\" ? basename : joinPaths([basename, path.pathname]);\n    }\n\n    (!!options.replace ? navigator.replace : navigator.push)(path, options.state, options);\n  }, [basename, navigator, routePathnamesJson, locationPathname]);\n  return navigate;\n}\nconst OutletContext = /*#__PURE__*/React.createContext(null);\n/**\n * Returns the context (if provided) for the child route at this level of the route\n * hierarchy.\n * @see https://reactrouter.com/hooks/use-outlet-context\n */\n\nfunction useOutletContext() {\n  return React.useContext(OutletContext);\n}\n/**\n * Returns the element for the child route at this level of the route\n * hierarchy. Used internally by <Outlet> to render child routes.\n *\n * @see https://reactrouter.com/hooks/use-outlet\n */\n\nfunction useOutlet(context) {\n  let outlet = React.useContext(RouteContext).outlet;\n\n  if (outlet) {\n    return /*#__PURE__*/React.createElement(OutletContext.Provider, {\n      value: context\n    }, outlet);\n  }\n\n  return outlet;\n}\n/**\n * Returns an object of key/value pairs of the dynamic params from the current\n * URL that were matched by the route path.\n *\n * @see https://reactrouter.com/hooks/use-params\n */\n\nfunction useParams() {\n  let {\n    matches\n  } = React.useContext(RouteContext);\n  let routeMatch = matches[matches.length - 1];\n  return routeMatch ? routeMatch.params : {};\n}\n/**\n * Resolves the pathname of the given `to` value against the current location.\n *\n * @see https://reactrouter.com/hooks/use-resolved-path\n */\n\nfunction useResolvedPath(to, _temp2) {\n  let {\n    relative\n  } = _temp2 === void 0 ? {} : _temp2;\n  let {\n    matches\n  } = React.useContext(RouteContext);\n  let {\n    pathname: locationPathname\n  } = useLocation();\n  let routePathnamesJson = JSON.stringify(UNSAFE_getPathContributingMatches(matches).map(match => match.pathnameBase));\n  return React.useMemo(() => resolveTo(to, JSON.parse(routePathnamesJson), locationPathname, relative === \"path\"), [to, routePathnamesJson, locationPathname, relative]);\n}\n/**\n * Returns the element of the route that matched the current location, prepared\n * with the correct context to render the remainder of the route tree. Route\n * elements in the tree must render an <Outlet> to render their child route's\n * element.\n *\n * @see https://reactrouter.com/hooks/use-routes\n */\n\nfunction useRoutes(routes, locationArg) {\n  !useInRouterContext() ? process.env.NODE_ENV !== \"production\" ? invariant(false, // TODO: This error is probably because they somehow have 2 versions of the\n  // router loaded. We can help them understand how to avoid that.\n  \"useRoutes() may be used only in the context of a <Router> component.\") : invariant(false) : void 0;\n  let {\n    navigator\n  } = React.useContext(NavigationContext);\n  let dataRouterStateContext = React.useContext(DataRouterStateContext);\n  let {\n    matches: parentMatches\n  } = React.useContext(RouteContext);\n  let routeMatch = parentMatches[parentMatches.length - 1];\n  let parentParams = routeMatch ? routeMatch.params : {};\n  let parentPathname = routeMatch ? routeMatch.pathname : \"/\";\n  let parentPathnameBase = routeMatch ? routeMatch.pathnameBase : \"/\";\n  let parentRoute = routeMatch && routeMatch.route;\n\n  if (process.env.NODE_ENV !== \"production\") {\n    // You won't get a warning about 2 different <Routes> under a <Route>\n    // without a trailing *, but this is a best-effort warning anyway since we\n    // cannot even give the warning unless they land at the parent route.\n    //\n    // Example:\n    //\n    // <Routes>\n    //   {/* This route path MUST end with /* because otherwise\n    //       it will never match /blog/post/123 */}\n    //   <Route path=\"blog\" element={<Blog />} />\n    //   <Route path=\"blog/feed\" element={<BlogFeed />} />\n    // </Routes>\n    //\n    // function Blog() {\n    //   return (\n    //     <Routes>\n    //       <Route path=\"post/:id\" element={<Post />} />\n    //     </Routes>\n    //   );\n    // }\n    let parentPath = parentRoute && parentRoute.path || \"\";\n    warningOnce(parentPathname, !parentRoute || parentPath.endsWith(\"*\"), \"You rendered descendant <Routes> (or called `useRoutes()`) at \" + (\"\\\"\" + parentPathname + \"\\\" (under <Route path=\\\"\" + parentPath + \"\\\">) but the \") + \"parent route path has no trailing \\\"*\\\". This means if you navigate \" + \"deeper, the parent won't match anymore and therefore the child \" + \"routes will never render.\\n\\n\" + (\"Please change the parent <Route path=\\\"\" + parentPath + \"\\\"> to <Route \") + (\"path=\\\"\" + (parentPath === \"/\" ? \"*\" : parentPath + \"/*\") + \"\\\">.\"));\n  }\n\n  let locationFromContext = useLocation();\n  let location;\n\n  if (locationArg) {\n    var _parsedLocationArg$pa;\n\n    let parsedLocationArg = typeof locationArg === \"string\" ? parsePath(locationArg) : locationArg;\n    !(parentPathnameBase === \"/\" || ((_parsedLocationArg$pa = parsedLocationArg.pathname) == null ? void 0 : _parsedLocationArg$pa.startsWith(parentPathnameBase))) ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"When overriding the location using `<Routes location>` or `useRoutes(routes, location)`, \" + \"the location pathname must begin with the portion of the URL pathname that was \" + (\"matched by all parent routes. The current pathname base is \\\"\" + parentPathnameBase + \"\\\" \") + (\"but pathname \\\"\" + parsedLocationArg.pathname + \"\\\" was given in the `location` prop.\")) : invariant(false) : void 0;\n    location = parsedLocationArg;\n  } else {\n    location = locationFromContext;\n  }\n\n  let pathname = location.pathname || \"/\";\n  let remainingPathname = parentPathnameBase === \"/\" ? pathname : pathname.slice(parentPathnameBase.length) || \"/\";\n  let matches = matchRoutes(routes, {\n    pathname: remainingPathname\n  });\n\n  if (process.env.NODE_ENV !== \"production\") {\n    process.env.NODE_ENV !== \"production\" ? warning(parentRoute || matches != null, \"No routes matched location \\\"\" + location.pathname + location.search + location.hash + \"\\\" \") : void 0;\n    process.env.NODE_ENV !== \"production\" ? warning(matches == null || matches[matches.length - 1].route.element !== undefined, \"Matched leaf route at location \\\"\" + location.pathname + location.search + location.hash + \"\\\" does not have an element. \" + \"This means it will render an <Outlet /> with a null value by default resulting in an \\\"empty\\\" page.\") : void 0;\n  }\n\n  let renderedMatches = _renderMatches(matches && matches.map(match => Object.assign({}, match, {\n    params: Object.assign({}, parentParams, match.params),\n    pathname: joinPaths([parentPathnameBase, // Re-encode pathnames that were decoded inside matchRoutes\n    navigator.encodeLocation ? navigator.encodeLocation(match.pathname).pathname : match.pathname]),\n    pathnameBase: match.pathnameBase === \"/\" ? parentPathnameBase : joinPaths([parentPathnameBase, // Re-encode pathnames that were decoded inside matchRoutes\n    navigator.encodeLocation ? navigator.encodeLocation(match.pathnameBase).pathname : match.pathnameBase])\n  })), parentMatches, dataRouterStateContext || undefined); // When a user passes in a `locationArg`, the associated routes need to\n  // be wrapped in a new `LocationContext.Provider` in order for `useLocation`\n  // to use the scoped location instead of the global location.\n\n\n  if (locationArg && renderedMatches) {\n    return /*#__PURE__*/React.createElement(LocationContext.Provider, {\n      value: {\n        location: _extends({\n          pathname: \"/\",\n          search: \"\",\n          hash: \"\",\n          state: null,\n          key: \"default\"\n        }, location),\n        navigationType: Action.Pop\n      }\n    }, renderedMatches);\n  }\n\n  return renderedMatches;\n}\n\nfunction DefaultErrorElement() {\n  let error = useRouteError();\n  let message = isRouteErrorResponse(error) ? error.status + \" \" + error.statusText : error instanceof Error ? error.message : JSON.stringify(error);\n  let stack = error instanceof Error ? error.stack : null;\n  let lightgrey = \"rgba(200,200,200, 0.5)\";\n  let preStyles = {\n    padding: \"0.5rem\",\n    backgroundColor: lightgrey\n  };\n  let codeStyles = {\n    padding: \"2px 4px\",\n    backgroundColor: lightgrey\n  };\n  return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(\"h2\", null, \"Unhandled Thrown Error!\"), /*#__PURE__*/React.createElement(\"h3\", {\n    style: {\n      fontStyle: \"italic\"\n    }\n  }, message), stack ? /*#__PURE__*/React.createElement(\"pre\", {\n    style: preStyles\n  }, stack) : null, /*#__PURE__*/React.createElement(\"p\", null, \"\\uD83D\\uDCBF Hey developer \\uD83D\\uDC4B\"), /*#__PURE__*/React.createElement(\"p\", null, \"You can provide a way better UX than this when your app throws errors by providing your own\\xA0\", /*#__PURE__*/React.createElement(\"code\", {\n    style: codeStyles\n  }, \"errorElement\"), \" props on\\xA0\", /*#__PURE__*/React.createElement(\"code\", {\n    style: codeStyles\n  }, \"<Route>\")));\n}\n\nclass RenderErrorBoundary extends React.Component {\n  constructor(props) {\n    super(props);\n    this.state = {\n      location: props.location,\n      error: props.error\n    };\n  }\n\n  static getDerivedStateFromError(error) {\n    return {\n      error: error\n    };\n  }\n\n  static getDerivedStateFromProps(props, state) {\n    // When we get into an error state, the user will likely click \"back\" to the\n    // previous page that didn't have an error. Because this wraps the entire\n    // application, that will have no effect--the error page continues to display.\n    // This gives us a mechanism to recover from the error when the location changes.\n    //\n    // Whether we're in an error state or not, we update the location in state\n    // so that when we are in an error state, it gets reset when a new location\n    // comes in and the user recovers from the error.\n    if (state.location !== props.location) {\n      return {\n        error: props.error,\n        location: props.location\n      };\n    } // If we're not changing locations, preserve the location but still surface\n    // any new errors that may come through. We retain the existing error, we do\n    // this because the error provided from the app state may be cleared without\n    // the location changing.\n\n\n    return {\n      error: props.error || state.error,\n      location: state.location\n    };\n  }\n\n  componentDidCatch(error, errorInfo) {\n    console.error(\"React Router caught the following error during render\", error, errorInfo);\n  }\n\n  render() {\n    return this.state.error ? /*#__PURE__*/React.createElement(RouteErrorContext.Provider, {\n      value: this.state.error,\n      children: this.props.component\n    }) : this.props.children;\n  }\n\n}\n\nfunction RenderedRoute(_ref) {\n  let {\n    routeContext,\n    match,\n    children\n  } = _ref;\n  let dataStaticRouterContext = React.useContext(DataStaticRouterContext); // Track how deep we got in our render pass to emulate SSR componentDidCatch\n  // in a DataStaticRouter\n\n  if (dataStaticRouterContext && match.route.errorElement) {\n    dataStaticRouterContext._deepestRenderedBoundaryId = match.route.id;\n  }\n\n  return /*#__PURE__*/React.createElement(RouteContext.Provider, {\n    value: routeContext\n  }, children);\n}\n\nfunction _renderMatches(matches, parentMatches, dataRouterState) {\n  if (parentMatches === void 0) {\n    parentMatches = [];\n  }\n\n  if (matches == null) {\n    if (dataRouterState != null && dataRouterState.errors) {\n      // Don't bail if we have data router errors so we can render them in the\n      // boundary.  Use the pre-matched (or shimmed) matches\n      matches = dataRouterState.matches;\n    } else {\n      return null;\n    }\n  }\n\n  let renderedMatches = matches; // If we have data errors, trim matches to the highest error boundary\n\n  let errors = dataRouterState == null ? void 0 : dataRouterState.errors;\n\n  if (errors != null) {\n    let errorIndex = renderedMatches.findIndex(m => m.route.id && (errors == null ? void 0 : errors[m.route.id]));\n    !(errorIndex >= 0) ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"Could not find a matching route for the current errors: \" + errors) : invariant(false) : void 0;\n    renderedMatches = renderedMatches.slice(0, Math.min(renderedMatches.length, errorIndex + 1));\n  }\n\n  return renderedMatches.reduceRight((outlet, match, index) => {\n    let error = match.route.id ? errors == null ? void 0 : errors[match.route.id] : null; // Only data routers handle errors\n\n    let errorElement = dataRouterState ? match.route.errorElement || /*#__PURE__*/React.createElement(DefaultErrorElement, null) : null;\n\n    let getChildren = () => /*#__PURE__*/React.createElement(RenderedRoute, {\n      match: match,\n      routeContext: {\n        outlet,\n        matches: parentMatches.concat(renderedMatches.slice(0, index + 1))\n      }\n    }, error ? errorElement : match.route.element !== undefined ? match.route.element : outlet); // Only wrap in an error boundary within data router usages when we have an\n    // errorElement on this route.  Otherwise let it bubble up to an ancestor\n    // errorElement\n\n\n    return dataRouterState && (match.route.errorElement || index === 0) ? /*#__PURE__*/React.createElement(RenderErrorBoundary, {\n      location: dataRouterState.location,\n      component: errorElement,\n      error: error,\n      children: getChildren()\n    }) : getChildren();\n  }, null);\n}\nvar DataRouterHook;\n\n(function (DataRouterHook) {\n  DataRouterHook[\"UseRevalidator\"] = \"useRevalidator\";\n})(DataRouterHook || (DataRouterHook = {}));\n\nvar DataRouterStateHook;\n\n(function (DataRouterStateHook) {\n  DataRouterStateHook[\"UseLoaderData\"] = \"useLoaderData\";\n  DataRouterStateHook[\"UseActionData\"] = \"useActionData\";\n  DataRouterStateHook[\"UseRouteError\"] = \"useRouteError\";\n  DataRouterStateHook[\"UseNavigation\"] = \"useNavigation\";\n  DataRouterStateHook[\"UseRouteLoaderData\"] = \"useRouteLoaderData\";\n  DataRouterStateHook[\"UseMatches\"] = \"useMatches\";\n  DataRouterStateHook[\"UseRevalidator\"] = \"useRevalidator\";\n})(DataRouterStateHook || (DataRouterStateHook = {}));\n\nfunction getDataRouterConsoleError(hookName) {\n  return hookName + \" must be used within a data router.  See https://reactrouter.com/routers/picking-a-router.\";\n}\n\nfunction useDataRouterContext(hookName) {\n  let ctx = React.useContext(DataRouterContext);\n  !ctx ? process.env.NODE_ENV !== \"production\" ? invariant(false, getDataRouterConsoleError(hookName)) : invariant(false) : void 0;\n  return ctx;\n}\n\nfunction useDataRouterState(hookName) {\n  let state = React.useContext(DataRouterStateContext);\n  !state ? process.env.NODE_ENV !== \"production\" ? invariant(false, getDataRouterConsoleError(hookName)) : invariant(false) : void 0;\n  return state;\n}\n/**\n * Returns the current navigation, defaulting to an \"idle\" navigation when\n * no navigation is in progress\n */\n\n\nfunction useNavigation() {\n  let state = useDataRouterState(DataRouterStateHook.UseNavigation);\n  return state.navigation;\n}\n/**\n * Returns a revalidate function for manually triggering revalidation, as well\n * as the current state of any manual revalidations\n */\n\nfunction useRevalidator() {\n  let dataRouterContext = useDataRouterContext(DataRouterHook.UseRevalidator);\n  let state = useDataRouterState(DataRouterStateHook.UseRevalidator);\n  return {\n    revalidate: dataRouterContext.router.revalidate,\n    state: state.revalidation\n  };\n}\n/**\n * Returns the active route matches, useful for accessing loaderData for\n * parent/child routes or the route \"handle\" property\n */\n\nfunction useMatches() {\n  let {\n    matches,\n    loaderData\n  } = useDataRouterState(DataRouterStateHook.UseMatches);\n  return React.useMemo(() => matches.map(match => {\n    let {\n      pathname,\n      params\n    } = match; // Note: This structure matches that created by createUseMatchesMatch\n    // in the @remix-run/router , so if you change this please also change\n    // that :)  Eventually we'll DRY this up\n\n    return {\n      id: match.route.id,\n      pathname,\n      params,\n      data: loaderData[match.route.id],\n      handle: match.route.handle\n    };\n  }), [matches, loaderData]);\n}\n/**\n * Returns the loader data for the nearest ancestor Route loader\n */\n\nfunction useLoaderData() {\n  let state = useDataRouterState(DataRouterStateHook.UseLoaderData);\n  let route = React.useContext(RouteContext);\n  !route ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"useLoaderData must be used inside a RouteContext\") : invariant(false) : void 0;\n  let thisRoute = route.matches[route.matches.length - 1];\n  !thisRoute.route.id ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"useLoaderData can only be used on routes that contain a unique \\\"id\\\"\") : invariant(false) : void 0;\n  return state.loaderData[thisRoute.route.id];\n}\n/**\n * Returns the loaderData for the given routeId\n */\n\nfunction useRouteLoaderData(routeId) {\n  let state = useDataRouterState(DataRouterStateHook.UseRouteLoaderData);\n  return state.loaderData[routeId];\n}\n/**\n * Returns the action data for the nearest ancestor Route action\n */\n\nfunction useActionData() {\n  let state = useDataRouterState(DataRouterStateHook.UseActionData);\n  let route = React.useContext(RouteContext);\n  !route ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"useActionData must be used inside a RouteContext\") : invariant(false) : void 0;\n  return Object.values((state == null ? void 0 : state.actionData) || {})[0];\n}\n/**\n * Returns the nearest ancestor Route error, which could be a loader/action\n * error or a render error.  This is intended to be called from your\n * errorElement to display a proper error message.\n */\n\nfunction useRouteError() {\n  var _state$errors;\n\n  let error = React.useContext(RouteErrorContext);\n  let state = useDataRouterState(DataRouterStateHook.UseRouteError);\n  let route = React.useContext(RouteContext);\n  let thisRoute = route.matches[route.matches.length - 1]; // If this was a render error, we put it in a RouteError context inside\n  // of RenderErrorBoundary\n\n  if (error) {\n    return error;\n  }\n\n  !route ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"useRouteError must be used inside a RouteContext\") : invariant(false) : void 0;\n  !thisRoute.route.id ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"useRouteError can only be used on routes that contain a unique \\\"id\\\"\") : invariant(false) : void 0; // Otherwise look for errors from our data router state\n\n  return (_state$errors = state.errors) == null ? void 0 : _state$errors[thisRoute.route.id];\n}\n/**\n * Returns the happy-path data from the nearest ancestor <Await /> value\n */\n\nfunction useAsyncValue() {\n  let value = React.useContext(AwaitContext);\n  return value == null ? void 0 : value._data;\n}\n/**\n * Returns the error from the nearest ancestor <Await /> value\n */\n\nfunction useAsyncError() {\n  let value = React.useContext(AwaitContext);\n  return value == null ? void 0 : value._error;\n}\nconst alreadyWarned = {};\n\nfunction warningOnce(key, cond, message) {\n  if (!cond && !alreadyWarned[key]) {\n    alreadyWarned[key] = true;\n    process.env.NODE_ENV !== \"production\" ? warning(false, message) : void 0;\n  }\n}\n\n/**\n * Given a Remix Router instance, render the appropriate UI\n */\nfunction RouterProvider(_ref) {\n  let {\n    fallbackElement,\n    router\n  } = _ref;\n  // Sync router state to our component state to force re-renders\n  let state = useSyncExternalStore(router.subscribe, () => router.state, // We have to provide this so React@18 doesn't complain during hydration,\n  // but we pass our serialized hydration data into the router so state here\n  // is already synced with what the server saw\n  () => router.state);\n  let navigator = React.useMemo(() => {\n    return {\n      createHref: router.createHref,\n      encodeLocation: router.encodeLocation,\n      go: n => router.navigate(n),\n      push: (to, state, opts) => router.navigate(to, {\n        state,\n        preventScrollReset: opts == null ? void 0 : opts.preventScrollReset\n      }),\n      replace: (to, state, opts) => router.navigate(to, {\n        replace: true,\n        state,\n        preventScrollReset: opts == null ? void 0 : opts.preventScrollReset\n      })\n    };\n  }, [router]);\n  let basename = router.basename || \"/\";\n  return /*#__PURE__*/React.createElement(DataRouterContext.Provider, {\n    value: {\n      router,\n      navigator,\n      static: false,\n      // Do we need this?\n      basename\n    }\n  }, /*#__PURE__*/React.createElement(DataRouterStateContext.Provider, {\n    value: state\n  }, /*#__PURE__*/React.createElement(Router, {\n    basename: router.basename,\n    location: router.state.location,\n    navigationType: router.state.historyAction,\n    navigator: navigator\n  }, router.state.initialized ? /*#__PURE__*/React.createElement(Routes, null) : fallbackElement)));\n}\n\n/**\n * A <Router> that stores all entries in memory.\n *\n * @see https://reactrouter.com/router-components/memory-router\n */\nfunction MemoryRouter(_ref2) {\n  let {\n    basename,\n    children,\n    initialEntries,\n    initialIndex\n  } = _ref2;\n  let historyRef = React.useRef();\n\n  if (historyRef.current == null) {\n    historyRef.current = createMemoryHistory({\n      initialEntries,\n      initialIndex,\n      v5Compat: true\n    });\n  }\n\n  let history = historyRef.current;\n  let [state, setState] = React.useState({\n    action: history.action,\n    location: history.location\n  });\n  React.useLayoutEffect(() => history.listen(setState), [history]);\n  return /*#__PURE__*/React.createElement(Router, {\n    basename: basename,\n    children: children,\n    location: state.location,\n    navigationType: state.action,\n    navigator: history\n  });\n}\n\n/**\n * Changes the current location.\n *\n * Note: This API is mostly useful in React.Component subclasses that are not\n * able to use hooks. In functional components, we recommend you use the\n * `useNavigate` hook instead.\n *\n * @see https://reactrouter.com/components/navigate\n */\nfunction Navigate(_ref3) {\n  let {\n    to,\n    replace,\n    state,\n    relative\n  } = _ref3;\n  !useInRouterContext() ? process.env.NODE_ENV !== \"production\" ? invariant(false, // TODO: This error is probably because they somehow have 2 versions of\n  // the router loaded. We can help them understand how to avoid that.\n  \"<Navigate> may be used only in the context of a <Router> component.\") : invariant(false) : void 0;\n  process.env.NODE_ENV !== \"production\" ? warning(!React.useContext(NavigationContext).static, \"<Navigate> must not be used on the initial render in a <StaticRouter>. \" + \"This is a no-op, but you should modify your code so the <Navigate> is \" + \"only ever rendered in response to some user interaction or state change.\") : void 0;\n  let dataRouterState = React.useContext(DataRouterStateContext);\n  let navigate = useNavigate();\n  React.useEffect(() => {\n    // Avoid kicking off multiple navigations if we're in the middle of a\n    // data-router navigation, since components get re-rendered when we enter\n    // a submitting/loading state\n    if (dataRouterState && dataRouterState.navigation.state !== \"idle\") {\n      return;\n    }\n\n    navigate(to, {\n      replace,\n      state,\n      relative\n    });\n  });\n  return null;\n}\n\n/**\n * Renders the child route's element, if there is one.\n *\n * @see https://reactrouter.com/components/outlet\n */\nfunction Outlet(props) {\n  return useOutlet(props.context);\n}\n\n/**\n * Declares an element that should be rendered at a certain URL path.\n *\n * @see https://reactrouter.com/components/route\n */\nfunction Route(_props) {\n  process.env.NODE_ENV !== \"production\" ? invariant(false, \"A <Route> is only ever to be used as the child of <Routes> element, \" + \"never rendered directly. Please wrap your <Route> in a <Routes>.\") : invariant(false) ;\n}\n\n/**\n * Provides location context for the rest of the app.\n *\n * Note: You usually won't render a <Router> directly. Instead, you'll render a\n * router that is more specific to your environment such as a <BrowserRouter>\n * in web browsers or a <StaticRouter> for server rendering.\n *\n * @see https://reactrouter.com/router-components/router\n */\nfunction Router(_ref4) {\n  let {\n    basename: basenameProp = \"/\",\n    children = null,\n    location: locationProp,\n    navigationType = Action.Pop,\n    navigator,\n    static: staticProp = false\n  } = _ref4;\n  !!useInRouterContext() ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"You cannot render a <Router> inside another <Router>.\" + \" You should never have more than one in your app.\") : invariant(false) : void 0; // Preserve trailing slashes on basename, so we can let the user control\n  // the enforcement of trailing slashes throughout the app\n\n  let basename = basenameProp.replace(/^\\/*/, \"/\");\n  let navigationContext = React.useMemo(() => ({\n    basename,\n    navigator,\n    static: staticProp\n  }), [basename, navigator, staticProp]);\n\n  if (typeof locationProp === \"string\") {\n    locationProp = parsePath(locationProp);\n  }\n\n  let {\n    pathname = \"/\",\n    search = \"\",\n    hash = \"\",\n    state = null,\n    key = \"default\"\n  } = locationProp;\n  let location = React.useMemo(() => {\n    let trailingPathname = stripBasename(pathname, basename);\n\n    if (trailingPathname == null) {\n      return null;\n    }\n\n    return {\n      pathname: trailingPathname,\n      search,\n      hash,\n      state,\n      key\n    };\n  }, [basename, pathname, search, hash, state, key]);\n  process.env.NODE_ENV !== \"production\" ? warning(location != null, \"<Router basename=\\\"\" + basename + \"\\\"> is not able to match the URL \" + (\"\\\"\" + pathname + search + hash + \"\\\" because it does not start with the \") + \"basename, so the <Router> won't render anything.\") : void 0;\n\n  if (location == null) {\n    return null;\n  }\n\n  return /*#__PURE__*/React.createElement(NavigationContext.Provider, {\n    value: navigationContext\n  }, /*#__PURE__*/React.createElement(LocationContext.Provider, {\n    children: children,\n    value: {\n      location,\n      navigationType\n    }\n  }));\n}\n\n/**\n * A container for a nested tree of <Route> elements that renders the branch\n * that best matches the current location.\n *\n * @see https://reactrouter.com/components/routes\n */\nfunction Routes(_ref5) {\n  let {\n    children,\n    location\n  } = _ref5;\n  let dataRouterContext = React.useContext(DataRouterContext); // When in a DataRouterContext _without_ children, we use the router routes\n  // directly.  If we have children, then we're in a descendant tree and we\n  // need to use child routes.\n\n  let routes = dataRouterContext && !children ? dataRouterContext.router.routes : createRoutesFromChildren(children);\n  return useRoutes(routes, location);\n}\n\n/**\n * Component to use for rendering lazily loaded data from returning defer()\n * in a loader function\n */\nfunction Await(_ref6) {\n  let {\n    children,\n    errorElement,\n    resolve\n  } = _ref6;\n  return /*#__PURE__*/React.createElement(AwaitErrorBoundary, {\n    resolve: resolve,\n    errorElement: errorElement\n  }, /*#__PURE__*/React.createElement(ResolveAwait, null, children));\n}\nvar AwaitRenderStatus;\n\n(function (AwaitRenderStatus) {\n  AwaitRenderStatus[AwaitRenderStatus[\"pending\"] = 0] = \"pending\";\n  AwaitRenderStatus[AwaitRenderStatus[\"success\"] = 1] = \"success\";\n  AwaitRenderStatus[AwaitRenderStatus[\"error\"] = 2] = \"error\";\n})(AwaitRenderStatus || (AwaitRenderStatus = {}));\n\nconst neverSettledPromise = new Promise(() => {});\n\nclass AwaitErrorBoundary extends React.Component {\n  constructor(props) {\n    super(props);\n    this.state = {\n      error: null\n    };\n  }\n\n  static getDerivedStateFromError(error) {\n    return {\n      error\n    };\n  }\n\n  componentDidCatch(error, errorInfo) {\n    console.error(\"<Await> caught the following error during render\", error, errorInfo);\n  }\n\n  render() {\n    let {\n      children,\n      errorElement,\n      resolve\n    } = this.props;\n    let promise = null;\n    let status = AwaitRenderStatus.pending;\n\n    if (!(resolve instanceof Promise)) {\n      // Didn't get a promise - provide as a resolved promise\n      status = AwaitRenderStatus.success;\n      promise = Promise.resolve();\n      Object.defineProperty(promise, \"_tracked\", {\n        get: () => true\n      });\n      Object.defineProperty(promise, \"_data\", {\n        get: () => resolve\n      });\n    } else if (this.state.error) {\n      // Caught a render error, provide it as a rejected promise\n      status = AwaitRenderStatus.error;\n      let renderError = this.state.error;\n      promise = Promise.reject().catch(() => {}); // Avoid unhandled rejection warnings\n\n      Object.defineProperty(promise, \"_tracked\", {\n        get: () => true\n      });\n      Object.defineProperty(promise, \"_error\", {\n        get: () => renderError\n      });\n    } else if (resolve._tracked) {\n      // Already tracked promise - check contents\n      promise = resolve;\n      status = promise._error !== undefined ? AwaitRenderStatus.error : promise._data !== undefined ? AwaitRenderStatus.success : AwaitRenderStatus.pending;\n    } else {\n      // Raw (untracked) promise - track it\n      status = AwaitRenderStatus.pending;\n      Object.defineProperty(resolve, \"_tracked\", {\n        get: () => true\n      });\n      promise = resolve.then(data => Object.defineProperty(resolve, \"_data\", {\n        get: () => data\n      }), error => Object.defineProperty(resolve, \"_error\", {\n        get: () => error\n      }));\n    }\n\n    if (status === AwaitRenderStatus.error && promise._error instanceof AbortedDeferredError) {\n      // Freeze the UI by throwing a never resolved promise\n      throw neverSettledPromise;\n    }\n\n    if (status === AwaitRenderStatus.error && !errorElement) {\n      // No errorElement, throw to the nearest route-level error boundary\n      throw promise._error;\n    }\n\n    if (status === AwaitRenderStatus.error) {\n      // Render via our errorElement\n      return /*#__PURE__*/React.createElement(AwaitContext.Provider, {\n        value: promise,\n        children: errorElement\n      });\n    }\n\n    if (status === AwaitRenderStatus.success) {\n      // Render children with resolved value\n      return /*#__PURE__*/React.createElement(AwaitContext.Provider, {\n        value: promise,\n        children: children\n      });\n    } // Throw to the suspense boundary\n\n\n    throw promise;\n  }\n\n}\n/**\n * @private\n * Indirection to leverage useAsyncValue for a render-prop API on <Await>\n */\n\n\nfunction ResolveAwait(_ref7) {\n  let {\n    children\n  } = _ref7;\n  let data = useAsyncValue();\n\n  if (typeof children === \"function\") {\n    return children(data);\n  }\n\n  return /*#__PURE__*/React.createElement(React.Fragment, null, children);\n} ///////////////////////////////////////////////////////////////////////////////\n// UTILS\n///////////////////////////////////////////////////////////////////////////////\n\n/**\n * Creates a route config from a React \"children\" object, which is usually\n * either a `<Route>` element or an array of them. Used internally by\n * `<Routes>` to create a route config from its children.\n *\n * @see https://reactrouter.com/utils/create-routes-from-children\n */\n\n\nfunction createRoutesFromChildren(children, parentPath) {\n  if (parentPath === void 0) {\n    parentPath = [];\n  }\n\n  let routes = [];\n  React.Children.forEach(children, (element, index) => {\n    if (! /*#__PURE__*/React.isValidElement(element)) {\n      // Ignore non-elements. This allows people to more easily inline\n      // conditionals in their route config.\n      return;\n    }\n\n    if (element.type === React.Fragment) {\n      // Transparently support React.Fragment and its children.\n      routes.push.apply(routes, createRoutesFromChildren(element.props.children, parentPath));\n      return;\n    }\n\n    !(element.type === Route) ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"[\" + (typeof element.type === \"string\" ? element.type : element.type.name) + \"] is not a <Route> component. All component children of <Routes> must be a <Route> or <React.Fragment>\") : invariant(false) : void 0;\n    !(!element.props.index || !element.props.children) ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"An index route cannot have child routes.\") : invariant(false) : void 0;\n    let treePath = [...parentPath, index];\n    let route = {\n      id: element.props.id || treePath.join(\"-\"),\n      caseSensitive: element.props.caseSensitive,\n      element: element.props.element,\n      index: element.props.index,\n      path: element.props.path,\n      loader: element.props.loader,\n      action: element.props.action,\n      errorElement: element.props.errorElement,\n      hasErrorBoundary: element.props.errorElement != null,\n      shouldRevalidate: element.props.shouldRevalidate,\n      handle: element.props.handle\n    };\n\n    if (element.props.children) {\n      route.children = createRoutesFromChildren(element.props.children, treePath);\n    }\n\n    routes.push(route);\n  });\n  return routes;\n}\n/**\n * Renders the result of `matchRoutes()` into a React element.\n */\n\nfunction renderMatches(matches) {\n  return _renderMatches(matches);\n}\n/**\n * @private\n * Walk the route tree and add hasErrorBoundary if it's not provided, so that\n * users providing manual route arrays can just specify errorElement\n */\n\nfunction enhanceManualRouteObjects(routes) {\n  return routes.map(route => {\n    let routeClone = _extends({}, route);\n\n    if (routeClone.hasErrorBoundary == null) {\n      routeClone.hasErrorBoundary = routeClone.errorElement != null;\n    }\n\n    if (routeClone.children) {\n      routeClone.children = enhanceManualRouteObjects(routeClone.children);\n    }\n\n    return routeClone;\n  });\n}\n\nfunction createMemoryRouter(routes, opts) {\n  return createRouter({\n    basename: opts == null ? void 0 : opts.basename,\n    history: createMemoryHistory({\n      initialEntries: opts == null ? void 0 : opts.initialEntries,\n      initialIndex: opts == null ? void 0 : opts.initialIndex\n    }),\n    hydrationData: opts == null ? void 0 : opts.hydrationData,\n    routes: enhanceManualRouteObjects(routes)\n  }).initialize();\n} ///////////////////////////////////////////////////////////////////////////////\n\nexport { Await, MemoryRouter, Navigate, Outlet, Route, Router, RouterProvider, Routes, DataRouterContext as UNSAFE_DataRouterContext, DataRouterStateContext as UNSAFE_DataRouterStateContext, DataStaticRouterContext as UNSAFE_DataStaticRouterContext, LocationContext as UNSAFE_LocationContext, NavigationContext as UNSAFE_NavigationContext, RouteContext as UNSAFE_RouteContext, enhanceManualRouteObjects as UNSAFE_enhanceManualRouteObjects, createMemoryRouter, createRoutesFromChildren, createRoutesFromChildren as createRoutesFromElements, renderMatches, useActionData, useAsyncError, useAsyncValue, useHref, useInRouterContext, useLoaderData, useLocation, useMatch, useMatches, useNavigate, useNavigation, useNavigationType, useOutlet, useOutletContext, useParams, useResolvedPath, useRevalidator, useRouteError, useRouteLoaderData, useRoutes };\n//# sourceMappingURL=index.js.map\n","import _defineProperty from '@babel/runtime/helpers/esm/defineProperty';\nimport { N as handleInputChange, a as _objectSpread2 } from './index-a7690a33.esm.js';\nimport _slicedToArray from '@babel/runtime/helpers/esm/slicedToArray';\nimport _objectWithoutProperties from '@babel/runtime/helpers/esm/objectWithoutProperties';\nimport { useRef, useState, useEffect, useCallback } from 'react';\n\nvar _excluded = [\"defaultOptions\", \"cacheOptions\", \"loadOptions\", \"options\", \"isLoading\", \"onInputChange\", \"filterOption\"];\nfunction useAsync(_ref) {\n  var _ref$defaultOptions = _ref.defaultOptions,\n      propsDefaultOptions = _ref$defaultOptions === void 0 ? false : _ref$defaultOptions,\n      _ref$cacheOptions = _ref.cacheOptions,\n      cacheOptions = _ref$cacheOptions === void 0 ? false : _ref$cacheOptions,\n      propsLoadOptions = _ref.loadOptions;\n      _ref.options;\n      var _ref$isLoading = _ref.isLoading,\n      propsIsLoading = _ref$isLoading === void 0 ? false : _ref$isLoading,\n      propsOnInputChange = _ref.onInputChange,\n      _ref$filterOption = _ref.filterOption,\n      filterOption = _ref$filterOption === void 0 ? null : _ref$filterOption,\n      restSelectProps = _objectWithoutProperties(_ref, _excluded);\n\n  var propsInputValue = restSelectProps.inputValue;\n  var lastRequest = useRef(undefined);\n  var mounted = useRef(false);\n\n  var _useState = useState(Array.isArray(propsDefaultOptions) ? propsDefaultOptions : undefined),\n      _useState2 = _slicedToArray(_useState, 2),\n      defaultOptions = _useState2[0],\n      setDefaultOptions = _useState2[1];\n\n  var _useState3 = useState(typeof propsInputValue !== 'undefined' ? propsInputValue : ''),\n      _useState4 = _slicedToArray(_useState3, 2),\n      stateInputValue = _useState4[0],\n      setStateInputValue = _useState4[1];\n\n  var _useState5 = useState(propsDefaultOptions === true),\n      _useState6 = _slicedToArray(_useState5, 2),\n      isLoading = _useState6[0],\n      setIsLoading = _useState6[1];\n\n  var _useState7 = useState(undefined),\n      _useState8 = _slicedToArray(_useState7, 2),\n      loadedInputValue = _useState8[0],\n      setLoadedInputValue = _useState8[1];\n\n  var _useState9 = useState([]),\n      _useState10 = _slicedToArray(_useState9, 2),\n      loadedOptions = _useState10[0],\n      setLoadedOptions = _useState10[1];\n\n  var _useState11 = useState(false),\n      _useState12 = _slicedToArray(_useState11, 2),\n      passEmptyOptions = _useState12[0],\n      setPassEmptyOptions = _useState12[1];\n\n  var _useState13 = useState({}),\n      _useState14 = _slicedToArray(_useState13, 2),\n      optionsCache = _useState14[0],\n      setOptionsCache = _useState14[1];\n\n  var _useState15 = useState(undefined),\n      _useState16 = _slicedToArray(_useState15, 2),\n      prevDefaultOptions = _useState16[0],\n      setPrevDefaultOptions = _useState16[1];\n\n  var _useState17 = useState(undefined),\n      _useState18 = _slicedToArray(_useState17, 2),\n      prevCacheOptions = _useState18[0],\n      setPrevCacheOptions = _useState18[1];\n\n  if (cacheOptions !== prevCacheOptions) {\n    setOptionsCache({});\n    setPrevCacheOptions(cacheOptions);\n  }\n\n  if (propsDefaultOptions !== prevDefaultOptions) {\n    setDefaultOptions(Array.isArray(propsDefaultOptions) ? propsDefaultOptions : undefined);\n    setPrevDefaultOptions(propsDefaultOptions);\n  }\n\n  useEffect(function () {\n    mounted.current = true;\n    return function () {\n      mounted.current = false;\n    };\n  }, []);\n  var loadOptions = useCallback(function (inputValue, callback) {\n    if (!propsLoadOptions) return callback();\n    var loader = propsLoadOptions(inputValue, callback);\n\n    if (loader && typeof loader.then === 'function') {\n      loader.then(callback, function () {\n        return callback();\n      });\n    }\n  }, [propsLoadOptions]);\n  useEffect(function () {\n    if (propsDefaultOptions === true) {\n      loadOptions(stateInputValue, function (options) {\n        if (!mounted.current) return;\n        setDefaultOptions(options || []);\n        setIsLoading(!!lastRequest.current);\n      });\n    } // NOTE: this effect is designed to only run when the component mounts,\n    // so we don't want to include any hook dependencies\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n\n  }, []);\n  var onInputChange = useCallback(function (newValue, actionMeta) {\n    var inputValue = handleInputChange(newValue, actionMeta, propsOnInputChange);\n\n    if (!inputValue) {\n      lastRequest.current = undefined;\n      setStateInputValue('');\n      setLoadedInputValue('');\n      setLoadedOptions([]);\n      setIsLoading(false);\n      setPassEmptyOptions(false);\n      return;\n    }\n\n    if (cacheOptions && optionsCache[inputValue]) {\n      setStateInputValue(inputValue);\n      setLoadedInputValue(inputValue);\n      setLoadedOptions(optionsCache[inputValue]);\n      setIsLoading(false);\n      setPassEmptyOptions(false);\n    } else {\n      var request = lastRequest.current = {};\n      setStateInputValue(inputValue);\n      setIsLoading(true);\n      setPassEmptyOptions(!loadedInputValue);\n      loadOptions(inputValue, function (options) {\n        if (!mounted) return;\n        if (request !== lastRequest.current) return;\n        lastRequest.current = undefined;\n        setIsLoading(false);\n        setLoadedInputValue(inputValue);\n        setLoadedOptions(options || []);\n        setPassEmptyOptions(false);\n        setOptionsCache(options ? _objectSpread2(_objectSpread2({}, optionsCache), {}, _defineProperty({}, inputValue, options)) : optionsCache);\n      });\n    }\n  }, [cacheOptions, loadOptions, loadedInputValue, optionsCache, propsOnInputChange]);\n  var options = passEmptyOptions ? [] : stateInputValue && loadedInputValue ? loadedOptions : defaultOptions || [];\n  return _objectSpread2(_objectSpread2({}, restSelectProps), {}, {\n    options: options,\n    isLoading: isLoading || propsIsLoading,\n    onInputChange: onInputChange,\n    filterOption: filterOption\n  });\n}\n\nexport { useAsync as u };\n","import _extends from '@babel/runtime/helpers/esm/extends';\nimport * as React from 'react';\nimport { forwardRef } from 'react';\nimport { S as Select } from '../../dist/Select-54ac8379.esm.js';\nimport { u as useStateManager } from '../../dist/useStateManager-68425271.esm.js';\nimport { u as useAsync } from '../../dist/useAsync-9deee0fa.esm.js';\nexport { u as useAsync } from '../../dist/useAsync-9deee0fa.esm.js';\nimport '../../dist/index-a7690a33.esm.js';\nimport '@emotion/react';\nimport '@babel/runtime/helpers/taggedTemplateLiteral';\nimport '@babel/runtime/helpers/objectWithoutProperties';\nimport '@babel/runtime/helpers/slicedToArray';\nimport '@babel/runtime/helpers/typeof';\nimport '@babel/runtime/helpers/classCallCheck';\nimport '@babel/runtime/helpers/createClass';\nimport '@babel/runtime/helpers/inherits';\nimport '@babel/runtime/helpers/defineProperty';\nimport 'react-dom';\nimport '@babel/runtime/helpers/toConsumableArray';\nimport 'memoize-one';\n\nvar AsyncSelect = /*#__PURE__*/forwardRef(function (props, ref) {\n  var stateManagedProps = useAsync(props);\n  var selectProps = useStateManager(stateManagedProps);\n  return /*#__PURE__*/React.createElement(Select, _extends({\n    ref: ref\n  }, selectProps));\n});\n\nexport default AsyncSelect;\n","import _extends from '@babel/runtime/helpers/esm/extends';\nimport { a as _objectSpread2, r as removeProps, s as supportsPassiveEvents, b as clearIndicatorCSS, d as containerCSS, e as css$1, f as dropdownIndicatorCSS, g as groupCSS, h as groupHeadingCSS, i as indicatorsContainerCSS, j as indicatorSeparatorCSS, k as inputCSS, l as loadingIndicatorCSS, m as loadingMessageCSS, n as menuCSS, o as menuListCSS, p as menuPortalCSS, q as multiValueCSS, t as multiValueLabelCSS, u as multiValueRemoveCSS, v as noOptionsMessageCSS, w as optionCSS, x as placeholderCSS, y as css$2, z as valueContainerCSS, A as isTouchCapable, B as isMobileDevice, _ as _createSuper, C as multiValueAsValue, D as singleValueAsValue, E as valueTernary, F as classNames, G as defaultComponents, H as notNullish, I as isDocumentElement, J as cleanValue, K as scrollIntoView, L as noop, M as MenuPlacer } from './index-a7690a33.esm.js';\nimport _classCallCheck from '@babel/runtime/helpers/esm/classCallCheck';\nimport _createClass from '@babel/runtime/helpers/esm/createClass';\nimport _inherits from '@babel/runtime/helpers/esm/inherits';\nimport _toConsumableArray from '@babel/runtime/helpers/esm/toConsumableArray';\nimport * as React from 'react';\nimport { useMemo, Fragment, useRef, useCallback, useEffect, Component } from 'react';\nimport { jsx, css } from '@emotion/react';\nimport memoizeOne from 'memoize-one';\nimport _objectWithoutProperties from '@babel/runtime/helpers/esm/objectWithoutProperties';\n\nfunction _EMOTION_STRINGIFIED_CSS_ERROR__$1() { return \"You have tried to stringify object returned from `css` function. It isn't supposed to be used directly (e.g. as value of the `className` prop), but rather handed to emotion so it can handle it (e.g. as value of `css` prop).\"; }\n\nvar _ref = process.env.NODE_ENV === \"production\" ? {\n  name: \"7pg0cj-a11yText\",\n  styles: \"label:a11yText;z-index:9999;border:0;clip:rect(1px, 1px, 1px, 1px);height:1px;width:1px;position:absolute;overflow:hidden;padding:0;white-space:nowrap\"\n} : {\n  name: \"1f43avz-a11yText-A11yText\",\n  styles: \"label:a11yText;z-index:9999;border:0;clip:rect(1px, 1px, 1px, 1px);height:1px;width:1px;position:absolute;overflow:hidden;padding:0;white-space:nowrap;label:A11yText;\",\n  map: \"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkExMXlUZXh0LnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFNSSIsImZpbGUiOiJBMTF5VGV4dC50c3giLCJzb3VyY2VzQ29udGVudCI6WyIvKiogQGpzeCBqc3ggKi9cbmltcG9ydCB7IGpzeCB9IGZyb20gJ0BlbW90aW9uL3JlYWN0JztcblxuLy8gQXNzaXN0aXZlIHRleHQgdG8gZGVzY3JpYmUgdmlzdWFsIGVsZW1lbnRzLiBIaWRkZW4gZm9yIHNpZ2h0ZWQgdXNlcnMuXG5jb25zdCBBMTF5VGV4dCA9IChwcm9wczogSlNYLkludHJpbnNpY0VsZW1lbnRzWydzcGFuJ10pID0+IChcbiAgPHNwYW5cbiAgICBjc3M9e3tcbiAgICAgIGxhYmVsOiAnYTExeVRleHQnLFxuICAgICAgekluZGV4OiA5OTk5LFxuICAgICAgYm9yZGVyOiAwLFxuICAgICAgY2xpcDogJ3JlY3QoMXB4LCAxcHgsIDFweCwgMXB4KScsXG4gICAgICBoZWlnaHQ6IDEsXG4gICAgICB3aWR0aDogMSxcbiAgICAgIHBvc2l0aW9uOiAnYWJzb2x1dGUnLFxuICAgICAgb3ZlcmZsb3c6ICdoaWRkZW4nLFxuICAgICAgcGFkZGluZzogMCxcbiAgICAgIHdoaXRlU3BhY2U6ICdub3dyYXAnLFxuICAgIH19XG4gICAgey4uLnByb3BzfVxuICAvPlxuKTtcblxuZXhwb3J0IGRlZmF1bHQgQTExeVRleHQ7XG4iXX0= */\",\n  toString: _EMOTION_STRINGIFIED_CSS_ERROR__$1\n};\n\nvar A11yText = function A11yText(props) {\n  return jsx(\"span\", _extends({\n    css: _ref\n  }, props));\n};\n\nvar defaultAriaLiveMessages = {\n  guidance: function guidance(props) {\n    var isSearchable = props.isSearchable,\n        isMulti = props.isMulti,\n        isDisabled = props.isDisabled,\n        tabSelectsValue = props.tabSelectsValue,\n        context = props.context;\n\n    switch (context) {\n      case 'menu':\n        return \"Use Up and Down to choose options\".concat(isDisabled ? '' : ', press Enter to select the currently focused option', \", press Escape to exit the menu\").concat(tabSelectsValue ? ', press Tab to select the option and exit the menu' : '', \".\");\n\n      case 'input':\n        return \"\".concat(props['aria-label'] || 'Select', \" is focused \").concat(isSearchable ? ',type to refine list' : '', \", press Down to open the menu, \").concat(isMulti ? ' press left to focus selected values' : '');\n\n      case 'value':\n        return 'Use left and right to toggle between focused values, press Backspace to remove the currently focused value';\n\n      default:\n        return '';\n    }\n  },\n  onChange: function onChange(props) {\n    var action = props.action,\n        _props$label = props.label,\n        label = _props$label === void 0 ? '' : _props$label,\n        labels = props.labels,\n        isDisabled = props.isDisabled;\n\n    switch (action) {\n      case 'deselect-option':\n      case 'pop-value':\n      case 'remove-value':\n        return \"option \".concat(label, \", deselected.\");\n\n      case 'clear':\n        return 'All selected options have been cleared.';\n\n      case 'initial-input-focus':\n        return \"option\".concat(labels.length > 1 ? 's' : '', \" \").concat(labels.join(','), \", selected.\");\n\n      case 'select-option':\n        return isDisabled ? \"option \".concat(label, \" is disabled. Select another option.\") : \"option \".concat(label, \", selected.\");\n\n      default:\n        return '';\n    }\n  },\n  onFocus: function onFocus(props) {\n    var context = props.context,\n        focused = props.focused,\n        options = props.options,\n        _props$label2 = props.label,\n        label = _props$label2 === void 0 ? '' : _props$label2,\n        selectValue = props.selectValue,\n        isDisabled = props.isDisabled,\n        isSelected = props.isSelected;\n\n    var getArrayIndex = function getArrayIndex(arr, item) {\n      return arr && arr.length ? \"\".concat(arr.indexOf(item) + 1, \" of \").concat(arr.length) : '';\n    };\n\n    if (context === 'value' && selectValue) {\n      return \"value \".concat(label, \" focused, \").concat(getArrayIndex(selectValue, focused), \".\");\n    }\n\n    if (context === 'menu') {\n      var disabled = isDisabled ? ' disabled' : '';\n      var status = \"\".concat(isSelected ? 'selected' : 'focused').concat(disabled);\n      return \"option \".concat(label, \" \").concat(status, \", \").concat(getArrayIndex(options, focused), \".\");\n    }\n\n    return '';\n  },\n  onFilter: function onFilter(props) {\n    var inputValue = props.inputValue,\n        resultsMessage = props.resultsMessage;\n    return \"\".concat(resultsMessage).concat(inputValue ? ' for search term ' + inputValue : '', \".\");\n  }\n};\n\nvar LiveRegion = function LiveRegion(props) {\n  var ariaSelection = props.ariaSelection,\n      focusedOption = props.focusedOption,\n      focusedValue = props.focusedValue,\n      focusableOptions = props.focusableOptions,\n      isFocused = props.isFocused,\n      selectValue = props.selectValue,\n      selectProps = props.selectProps,\n      id = props.id;\n  var ariaLiveMessages = selectProps.ariaLiveMessages,\n      getOptionLabel = selectProps.getOptionLabel,\n      inputValue = selectProps.inputValue,\n      isMulti = selectProps.isMulti,\n      isOptionDisabled = selectProps.isOptionDisabled,\n      isSearchable = selectProps.isSearchable,\n      menuIsOpen = selectProps.menuIsOpen,\n      options = selectProps.options,\n      screenReaderStatus = selectProps.screenReaderStatus,\n      tabSelectsValue = selectProps.tabSelectsValue;\n  var ariaLabel = selectProps['aria-label'];\n  var ariaLive = selectProps['aria-live']; // Update aria live message configuration when prop changes\n\n  var messages = useMemo(function () {\n    return _objectSpread2(_objectSpread2({}, defaultAriaLiveMessages), ariaLiveMessages || {});\n  }, [ariaLiveMessages]); // Update aria live selected option when prop changes\n\n  var ariaSelected = useMemo(function () {\n    var message = '';\n\n    if (ariaSelection && messages.onChange) {\n      var option = ariaSelection.option,\n          selectedOptions = ariaSelection.options,\n          removedValue = ariaSelection.removedValue,\n          removedValues = ariaSelection.removedValues,\n          value = ariaSelection.value; // select-option when !isMulti does not return option so we assume selected option is value\n\n      var asOption = function asOption(val) {\n        return !Array.isArray(val) ? val : null;\n      }; // If there is just one item from the action then get its label\n\n\n      var selected = removedValue || option || asOption(value);\n      var label = selected ? getOptionLabel(selected) : ''; // If there are multiple items from the action then return an array of labels\n\n      var multiSelected = selectedOptions || removedValues || undefined;\n      var labels = multiSelected ? multiSelected.map(getOptionLabel) : [];\n\n      var onChangeProps = _objectSpread2({\n        // multiSelected items are usually items that have already been selected\n        // or set by the user as a default value so we assume they are not disabled\n        isDisabled: selected && isOptionDisabled(selected, selectValue),\n        label: label,\n        labels: labels\n      }, ariaSelection);\n\n      message = messages.onChange(onChangeProps);\n    }\n\n    return message;\n  }, [ariaSelection, messages, isOptionDisabled, selectValue, getOptionLabel]);\n  var ariaFocused = useMemo(function () {\n    var focusMsg = '';\n    var focused = focusedOption || focusedValue;\n    var isSelected = !!(focusedOption && selectValue && selectValue.includes(focusedOption));\n\n    if (focused && messages.onFocus) {\n      var onFocusProps = {\n        focused: focused,\n        label: getOptionLabel(focused),\n        isDisabled: isOptionDisabled(focused, selectValue),\n        isSelected: isSelected,\n        options: options,\n        context: focused === focusedOption ? 'menu' : 'value',\n        selectValue: selectValue\n      };\n      focusMsg = messages.onFocus(onFocusProps);\n    }\n\n    return focusMsg;\n  }, [focusedOption, focusedValue, getOptionLabel, isOptionDisabled, messages, options, selectValue]);\n  var ariaResults = useMemo(function () {\n    var resultsMsg = '';\n\n    if (menuIsOpen && options.length && messages.onFilter) {\n      var resultsMessage = screenReaderStatus({\n        count: focusableOptions.length\n      });\n      resultsMsg = messages.onFilter({\n        inputValue: inputValue,\n        resultsMessage: resultsMessage\n      });\n    }\n\n    return resultsMsg;\n  }, [focusableOptions, inputValue, menuIsOpen, messages, options, screenReaderStatus]);\n  var ariaGuidance = useMemo(function () {\n    var guidanceMsg = '';\n\n    if (messages.guidance) {\n      var context = focusedValue ? 'value' : menuIsOpen ? 'menu' : 'input';\n      guidanceMsg = messages.guidance({\n        'aria-label': ariaLabel,\n        context: context,\n        isDisabled: focusedOption && isOptionDisabled(focusedOption, selectValue),\n        isMulti: isMulti,\n        isSearchable: isSearchable,\n        tabSelectsValue: tabSelectsValue\n      });\n    }\n\n    return guidanceMsg;\n  }, [ariaLabel, focusedOption, focusedValue, isMulti, isOptionDisabled, isSearchable, menuIsOpen, messages, selectValue, tabSelectsValue]);\n  var ariaContext = \"\".concat(ariaFocused, \" \").concat(ariaResults, \" \").concat(ariaGuidance);\n  var ScreenReaderText = jsx(Fragment, null, jsx(\"span\", {\n    id: \"aria-selection\"\n  }, ariaSelected), jsx(\"span\", {\n    id: \"aria-context\"\n  }, ariaContext));\n  var isInitialFocus = (ariaSelection === null || ariaSelection === void 0 ? void 0 : ariaSelection.action) === 'initial-input-focus';\n  return jsx(Fragment, null, jsx(A11yText, {\n    id: id\n  }, isInitialFocus && ScreenReaderText), jsx(A11yText, {\n    \"aria-live\": ariaLive,\n    \"aria-atomic\": \"false\",\n    \"aria-relevant\": \"additions text\"\n  }, isFocused && !isInitialFocus && ScreenReaderText));\n};\n\nvar diacritics = [{\n  base: 'A',\n  letters: \"A\\u24B6\\uFF21\\xC0\\xC1\\xC2\\u1EA6\\u1EA4\\u1EAA\\u1EA8\\xC3\\u0100\\u0102\\u1EB0\\u1EAE\\u1EB4\\u1EB2\\u0226\\u01E0\\xC4\\u01DE\\u1EA2\\xC5\\u01FA\\u01CD\\u0200\\u0202\\u1EA0\\u1EAC\\u1EB6\\u1E00\\u0104\\u023A\\u2C6F\"\n}, {\n  base: 'AA',\n  letters: \"\\uA732\"\n}, {\n  base: 'AE',\n  letters: \"\\xC6\\u01FC\\u01E2\"\n}, {\n  base: 'AO',\n  letters: \"\\uA734\"\n}, {\n  base: 'AU',\n  letters: \"\\uA736\"\n}, {\n  base: 'AV',\n  letters: \"\\uA738\\uA73A\"\n}, {\n  base: 'AY',\n  letters: \"\\uA73C\"\n}, {\n  base: 'B',\n  letters: \"B\\u24B7\\uFF22\\u1E02\\u1E04\\u1E06\\u0243\\u0182\\u0181\"\n}, {\n  base: 'C',\n  letters: \"C\\u24B8\\uFF23\\u0106\\u0108\\u010A\\u010C\\xC7\\u1E08\\u0187\\u023B\\uA73E\"\n}, {\n  base: 'D',\n  letters: \"D\\u24B9\\uFF24\\u1E0A\\u010E\\u1E0C\\u1E10\\u1E12\\u1E0E\\u0110\\u018B\\u018A\\u0189\\uA779\"\n}, {\n  base: 'DZ',\n  letters: \"\\u01F1\\u01C4\"\n}, {\n  base: 'Dz',\n  letters: \"\\u01F2\\u01C5\"\n}, {\n  base: 'E',\n  letters: \"E\\u24BA\\uFF25\\xC8\\xC9\\xCA\\u1EC0\\u1EBE\\u1EC4\\u1EC2\\u1EBC\\u0112\\u1E14\\u1E16\\u0114\\u0116\\xCB\\u1EBA\\u011A\\u0204\\u0206\\u1EB8\\u1EC6\\u0228\\u1E1C\\u0118\\u1E18\\u1E1A\\u0190\\u018E\"\n}, {\n  base: 'F',\n  letters: \"F\\u24BB\\uFF26\\u1E1E\\u0191\\uA77B\"\n}, {\n  base: 'G',\n  letters: \"G\\u24BC\\uFF27\\u01F4\\u011C\\u1E20\\u011E\\u0120\\u01E6\\u0122\\u01E4\\u0193\\uA7A0\\uA77D\\uA77E\"\n}, {\n  base: 'H',\n  letters: \"H\\u24BD\\uFF28\\u0124\\u1E22\\u1E26\\u021E\\u1E24\\u1E28\\u1E2A\\u0126\\u2C67\\u2C75\\uA78D\"\n}, {\n  base: 'I',\n  letters: \"I\\u24BE\\uFF29\\xCC\\xCD\\xCE\\u0128\\u012A\\u012C\\u0130\\xCF\\u1E2E\\u1EC8\\u01CF\\u0208\\u020A\\u1ECA\\u012E\\u1E2C\\u0197\"\n}, {\n  base: 'J',\n  letters: \"J\\u24BF\\uFF2A\\u0134\\u0248\"\n}, {\n  base: 'K',\n  letters: \"K\\u24C0\\uFF2B\\u1E30\\u01E8\\u1E32\\u0136\\u1E34\\u0198\\u2C69\\uA740\\uA742\\uA744\\uA7A2\"\n}, {\n  base: 'L',\n  letters: \"L\\u24C1\\uFF2C\\u013F\\u0139\\u013D\\u1E36\\u1E38\\u013B\\u1E3C\\u1E3A\\u0141\\u023D\\u2C62\\u2C60\\uA748\\uA746\\uA780\"\n}, {\n  base: 'LJ',\n  letters: \"\\u01C7\"\n}, {\n  base: 'Lj',\n  letters: \"\\u01C8\"\n}, {\n  base: 'M',\n  letters: \"M\\u24C2\\uFF2D\\u1E3E\\u1E40\\u1E42\\u2C6E\\u019C\"\n}, {\n  base: 'N',\n  letters: \"N\\u24C3\\uFF2E\\u01F8\\u0143\\xD1\\u1E44\\u0147\\u1E46\\u0145\\u1E4A\\u1E48\\u0220\\u019D\\uA790\\uA7A4\"\n}, {\n  base: 'NJ',\n  letters: \"\\u01CA\"\n}, {\n  base: 'Nj',\n  letters: \"\\u01CB\"\n}, {\n  base: 'O',\n  letters: \"O\\u24C4\\uFF2F\\xD2\\xD3\\xD4\\u1ED2\\u1ED0\\u1ED6\\u1ED4\\xD5\\u1E4C\\u022C\\u1E4E\\u014C\\u1E50\\u1E52\\u014E\\u022E\\u0230\\xD6\\u022A\\u1ECE\\u0150\\u01D1\\u020C\\u020E\\u01A0\\u1EDC\\u1EDA\\u1EE0\\u1EDE\\u1EE2\\u1ECC\\u1ED8\\u01EA\\u01EC\\xD8\\u01FE\\u0186\\u019F\\uA74A\\uA74C\"\n}, {\n  base: 'OI',\n  letters: \"\\u01A2\"\n}, {\n  base: 'OO',\n  letters: \"\\uA74E\"\n}, {\n  base: 'OU',\n  letters: \"\\u0222\"\n}, {\n  base: 'P',\n  letters: \"P\\u24C5\\uFF30\\u1E54\\u1E56\\u01A4\\u2C63\\uA750\\uA752\\uA754\"\n}, {\n  base: 'Q',\n  letters: \"Q\\u24C6\\uFF31\\uA756\\uA758\\u024A\"\n}, {\n  base: 'R',\n  letters: \"R\\u24C7\\uFF32\\u0154\\u1E58\\u0158\\u0210\\u0212\\u1E5A\\u1E5C\\u0156\\u1E5E\\u024C\\u2C64\\uA75A\\uA7A6\\uA782\"\n}, {\n  base: 'S',\n  letters: \"S\\u24C8\\uFF33\\u1E9E\\u015A\\u1E64\\u015C\\u1E60\\u0160\\u1E66\\u1E62\\u1E68\\u0218\\u015E\\u2C7E\\uA7A8\\uA784\"\n}, {\n  base: 'T',\n  letters: \"T\\u24C9\\uFF34\\u1E6A\\u0164\\u1E6C\\u021A\\u0162\\u1E70\\u1E6E\\u0166\\u01AC\\u01AE\\u023E\\uA786\"\n}, {\n  base: 'TZ',\n  letters: \"\\uA728\"\n}, {\n  base: 'U',\n  letters: \"U\\u24CA\\uFF35\\xD9\\xDA\\xDB\\u0168\\u1E78\\u016A\\u1E7A\\u016C\\xDC\\u01DB\\u01D7\\u01D5\\u01D9\\u1EE6\\u016E\\u0170\\u01D3\\u0214\\u0216\\u01AF\\u1EEA\\u1EE8\\u1EEE\\u1EEC\\u1EF0\\u1EE4\\u1E72\\u0172\\u1E76\\u1E74\\u0244\"\n}, {\n  base: 'V',\n  letters: \"V\\u24CB\\uFF36\\u1E7C\\u1E7E\\u01B2\\uA75E\\u0245\"\n}, {\n  base: 'VY',\n  letters: \"\\uA760\"\n}, {\n  base: 'W',\n  letters: \"W\\u24CC\\uFF37\\u1E80\\u1E82\\u0174\\u1E86\\u1E84\\u1E88\\u2C72\"\n}, {\n  base: 'X',\n  letters: \"X\\u24CD\\uFF38\\u1E8A\\u1E8C\"\n}, {\n  base: 'Y',\n  letters: \"Y\\u24CE\\uFF39\\u1EF2\\xDD\\u0176\\u1EF8\\u0232\\u1E8E\\u0178\\u1EF6\\u1EF4\\u01B3\\u024E\\u1EFE\"\n}, {\n  base: 'Z',\n  letters: \"Z\\u24CF\\uFF3A\\u0179\\u1E90\\u017B\\u017D\\u1E92\\u1E94\\u01B5\\u0224\\u2C7F\\u2C6B\\uA762\"\n}, {\n  base: 'a',\n  letters: \"a\\u24D0\\uFF41\\u1E9A\\xE0\\xE1\\xE2\\u1EA7\\u1EA5\\u1EAB\\u1EA9\\xE3\\u0101\\u0103\\u1EB1\\u1EAF\\u1EB5\\u1EB3\\u0227\\u01E1\\xE4\\u01DF\\u1EA3\\xE5\\u01FB\\u01CE\\u0201\\u0203\\u1EA1\\u1EAD\\u1EB7\\u1E01\\u0105\\u2C65\\u0250\"\n}, {\n  base: 'aa',\n  letters: \"\\uA733\"\n}, {\n  base: 'ae',\n  letters: \"\\xE6\\u01FD\\u01E3\"\n}, {\n  base: 'ao',\n  letters: \"\\uA735\"\n}, {\n  base: 'au',\n  letters: \"\\uA737\"\n}, {\n  base: 'av',\n  letters: \"\\uA739\\uA73B\"\n}, {\n  base: 'ay',\n  letters: \"\\uA73D\"\n}, {\n  base: 'b',\n  letters: \"b\\u24D1\\uFF42\\u1E03\\u1E05\\u1E07\\u0180\\u0183\\u0253\"\n}, {\n  base: 'c',\n  letters: \"c\\u24D2\\uFF43\\u0107\\u0109\\u010B\\u010D\\xE7\\u1E09\\u0188\\u023C\\uA73F\\u2184\"\n}, {\n  base: 'd',\n  letters: \"d\\u24D3\\uFF44\\u1E0B\\u010F\\u1E0D\\u1E11\\u1E13\\u1E0F\\u0111\\u018C\\u0256\\u0257\\uA77A\"\n}, {\n  base: 'dz',\n  letters: \"\\u01F3\\u01C6\"\n}, {\n  base: 'e',\n  letters: \"e\\u24D4\\uFF45\\xE8\\xE9\\xEA\\u1EC1\\u1EBF\\u1EC5\\u1EC3\\u1EBD\\u0113\\u1E15\\u1E17\\u0115\\u0117\\xEB\\u1EBB\\u011B\\u0205\\u0207\\u1EB9\\u1EC7\\u0229\\u1E1D\\u0119\\u1E19\\u1E1B\\u0247\\u025B\\u01DD\"\n}, {\n  base: 'f',\n  letters: \"f\\u24D5\\uFF46\\u1E1F\\u0192\\uA77C\"\n}, {\n  base: 'g',\n  letters: \"g\\u24D6\\uFF47\\u01F5\\u011D\\u1E21\\u011F\\u0121\\u01E7\\u0123\\u01E5\\u0260\\uA7A1\\u1D79\\uA77F\"\n}, {\n  base: 'h',\n  letters: \"h\\u24D7\\uFF48\\u0125\\u1E23\\u1E27\\u021F\\u1E25\\u1E29\\u1E2B\\u1E96\\u0127\\u2C68\\u2C76\\u0265\"\n}, {\n  base: 'hv',\n  letters: \"\\u0195\"\n}, {\n  base: 'i',\n  letters: \"i\\u24D8\\uFF49\\xEC\\xED\\xEE\\u0129\\u012B\\u012D\\xEF\\u1E2F\\u1EC9\\u01D0\\u0209\\u020B\\u1ECB\\u012F\\u1E2D\\u0268\\u0131\"\n}, {\n  base: 'j',\n  letters: \"j\\u24D9\\uFF4A\\u0135\\u01F0\\u0249\"\n}, {\n  base: 'k',\n  letters: \"k\\u24DA\\uFF4B\\u1E31\\u01E9\\u1E33\\u0137\\u1E35\\u0199\\u2C6A\\uA741\\uA743\\uA745\\uA7A3\"\n}, {\n  base: 'l',\n  letters: \"l\\u24DB\\uFF4C\\u0140\\u013A\\u013E\\u1E37\\u1E39\\u013C\\u1E3D\\u1E3B\\u017F\\u0142\\u019A\\u026B\\u2C61\\uA749\\uA781\\uA747\"\n}, {\n  base: 'lj',\n  letters: \"\\u01C9\"\n}, {\n  base: 'm',\n  letters: \"m\\u24DC\\uFF4D\\u1E3F\\u1E41\\u1E43\\u0271\\u026F\"\n}, {\n  base: 'n',\n  letters: \"n\\u24DD\\uFF4E\\u01F9\\u0144\\xF1\\u1E45\\u0148\\u1E47\\u0146\\u1E4B\\u1E49\\u019E\\u0272\\u0149\\uA791\\uA7A5\"\n}, {\n  base: 'nj',\n  letters: \"\\u01CC\"\n}, {\n  base: 'o',\n  letters: \"o\\u24DE\\uFF4F\\xF2\\xF3\\xF4\\u1ED3\\u1ED1\\u1ED7\\u1ED5\\xF5\\u1E4D\\u022D\\u1E4F\\u014D\\u1E51\\u1E53\\u014F\\u022F\\u0231\\xF6\\u022B\\u1ECF\\u0151\\u01D2\\u020D\\u020F\\u01A1\\u1EDD\\u1EDB\\u1EE1\\u1EDF\\u1EE3\\u1ECD\\u1ED9\\u01EB\\u01ED\\xF8\\u01FF\\u0254\\uA74B\\uA74D\\u0275\"\n}, {\n  base: 'oi',\n  letters: \"\\u01A3\"\n}, {\n  base: 'ou',\n  letters: \"\\u0223\"\n}, {\n  base: 'oo',\n  letters: \"\\uA74F\"\n}, {\n  base: 'p',\n  letters: \"p\\u24DF\\uFF50\\u1E55\\u1E57\\u01A5\\u1D7D\\uA751\\uA753\\uA755\"\n}, {\n  base: 'q',\n  letters: \"q\\u24E0\\uFF51\\u024B\\uA757\\uA759\"\n}, {\n  base: 'r',\n  letters: \"r\\u24E1\\uFF52\\u0155\\u1E59\\u0159\\u0211\\u0213\\u1E5B\\u1E5D\\u0157\\u1E5F\\u024D\\u027D\\uA75B\\uA7A7\\uA783\"\n}, {\n  base: 's',\n  letters: \"s\\u24E2\\uFF53\\xDF\\u015B\\u1E65\\u015D\\u1E61\\u0161\\u1E67\\u1E63\\u1E69\\u0219\\u015F\\u023F\\uA7A9\\uA785\\u1E9B\"\n}, {\n  base: 't',\n  letters: \"t\\u24E3\\uFF54\\u1E6B\\u1E97\\u0165\\u1E6D\\u021B\\u0163\\u1E71\\u1E6F\\u0167\\u01AD\\u0288\\u2C66\\uA787\"\n}, {\n  base: 'tz',\n  letters: \"\\uA729\"\n}, {\n  base: 'u',\n  letters: \"u\\u24E4\\uFF55\\xF9\\xFA\\xFB\\u0169\\u1E79\\u016B\\u1E7B\\u016D\\xFC\\u01DC\\u01D8\\u01D6\\u01DA\\u1EE7\\u016F\\u0171\\u01D4\\u0215\\u0217\\u01B0\\u1EEB\\u1EE9\\u1EEF\\u1EED\\u1EF1\\u1EE5\\u1E73\\u0173\\u1E77\\u1E75\\u0289\"\n}, {\n  base: 'v',\n  letters: \"v\\u24E5\\uFF56\\u1E7D\\u1E7F\\u028B\\uA75F\\u028C\"\n}, {\n  base: 'vy',\n  letters: \"\\uA761\"\n}, {\n  base: 'w',\n  letters: \"w\\u24E6\\uFF57\\u1E81\\u1E83\\u0175\\u1E87\\u1E85\\u1E98\\u1E89\\u2C73\"\n}, {\n  base: 'x',\n  letters: \"x\\u24E7\\uFF58\\u1E8B\\u1E8D\"\n}, {\n  base: 'y',\n  letters: \"y\\u24E8\\uFF59\\u1EF3\\xFD\\u0177\\u1EF9\\u0233\\u1E8F\\xFF\\u1EF7\\u1E99\\u1EF5\\u01B4\\u024F\\u1EFF\"\n}, {\n  base: 'z',\n  letters: \"z\\u24E9\\uFF5A\\u017A\\u1E91\\u017C\\u017E\\u1E93\\u1E95\\u01B6\\u0225\\u0240\\u2C6C\\uA763\"\n}];\nvar anyDiacritic = new RegExp('[' + diacritics.map(function (d) {\n  return d.letters;\n}).join('') + ']', 'g');\nvar diacriticToBase = {};\n\nfor (var i = 0; i < diacritics.length; i++) {\n  var diacritic = diacritics[i];\n\n  for (var j = 0; j < diacritic.letters.length; j++) {\n    diacriticToBase[diacritic.letters[j]] = diacritic.base;\n  }\n}\n\nvar stripDiacritics = function stripDiacritics(str) {\n  return str.replace(anyDiacritic, function (match) {\n    return diacriticToBase[match];\n  });\n};\n\nvar memoizedStripDiacriticsForInput = memoizeOne(stripDiacritics);\n\nvar trimString = function trimString(str) {\n  return str.replace(/^\\s+|\\s+$/g, '');\n};\n\nvar defaultStringify = function defaultStringify(option) {\n  return \"\".concat(option.label, \" \").concat(option.value);\n};\n\nvar createFilter = function createFilter(config) {\n  return function (option, rawInput) {\n    // eslint-disable-next-line no-underscore-dangle\n    if (option.data.__isNew__) return true;\n\n    var _ignoreCase$ignoreAcc = _objectSpread2({\n      ignoreCase: true,\n      ignoreAccents: true,\n      stringify: defaultStringify,\n      trim: true,\n      matchFrom: 'any'\n    }, config),\n        ignoreCase = _ignoreCase$ignoreAcc.ignoreCase,\n        ignoreAccents = _ignoreCase$ignoreAcc.ignoreAccents,\n        stringify = _ignoreCase$ignoreAcc.stringify,\n        trim = _ignoreCase$ignoreAcc.trim,\n        matchFrom = _ignoreCase$ignoreAcc.matchFrom;\n\n    var input = trim ? trimString(rawInput) : rawInput;\n    var candidate = trim ? trimString(stringify(option)) : stringify(option);\n\n    if (ignoreCase) {\n      input = input.toLowerCase();\n      candidate = candidate.toLowerCase();\n    }\n\n    if (ignoreAccents) {\n      input = memoizedStripDiacriticsForInput(input);\n      candidate = stripDiacritics(candidate);\n    }\n\n    return matchFrom === 'start' ? candidate.substr(0, input.length) === input : candidate.indexOf(input) > -1;\n  };\n};\n\nvar _excluded = [\"innerRef\"];\nfunction DummyInput(_ref) {\n  var innerRef = _ref.innerRef,\n      props = _objectWithoutProperties(_ref, _excluded);\n\n  // Remove animation props not meant for HTML elements\n  var filteredProps = removeProps(props, 'onExited', 'in', 'enter', 'exit', 'appear');\n  return jsx(\"input\", _extends({\n    ref: innerRef\n  }, filteredProps, {\n    css: /*#__PURE__*/css({\n      label: 'dummyInput',\n      // get rid of any default styles\n      background: 0,\n      border: 0,\n      // important! this hides the flashing cursor\n      caretColor: 'transparent',\n      fontSize: 'inherit',\n      gridArea: '1 / 1 / 2 / 3',\n      outline: 0,\n      padding: 0,\n      // important! without `width` browsers won't allow focus\n      width: 1,\n      // remove cursor on desktop\n      color: 'transparent',\n      // remove cursor on mobile whilst maintaining \"scroll into view\" behaviour\n      left: -100,\n      opacity: 0,\n      position: 'relative',\n      transform: 'scale(.01)'\n    }, process.env.NODE_ENV === \"production\" ? \"\" : \";label:DummyInput;\", process.env.NODE_ENV === \"production\" ? \"\" : \"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkR1bW15SW5wdXQudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQXlCTSIsImZpbGUiOiJEdW1teUlucHV0LnRzeCIsInNvdXJjZXNDb250ZW50IjpbIi8qKiBAanN4IGpzeCAqL1xuaW1wb3J0IHsgUmVmIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsganN4IH0gZnJvbSAnQGVtb3Rpb24vcmVhY3QnO1xuaW1wb3J0IHsgcmVtb3ZlUHJvcHMgfSBmcm9tICcuLi91dGlscyc7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIER1bW15SW5wdXQoe1xuICBpbm5lclJlZixcbiAgLi4ucHJvcHNcbn06IEpTWC5JbnRyaW5zaWNFbGVtZW50c1snaW5wdXQnXSAmIHtcbiAgcmVhZG9ubHkgaW5uZXJSZWY6IFJlZjxIVE1MSW5wdXRFbGVtZW50Pjtcbn0pIHtcbiAgLy8gUmVtb3ZlIGFuaW1hdGlvbiBwcm9wcyBub3QgbWVhbnQgZm9yIEhUTUwgZWxlbWVudHNcbiAgY29uc3QgZmlsdGVyZWRQcm9wcyA9IHJlbW92ZVByb3BzKFxuICAgIHByb3BzLFxuICAgICdvbkV4aXRlZCcsXG4gICAgJ2luJyxcbiAgICAnZW50ZXInLFxuICAgICdleGl0JyxcbiAgICAnYXBwZWFyJ1xuICApO1xuXG4gIHJldHVybiAoXG4gICAgPGlucHV0XG4gICAgICByZWY9e2lubmVyUmVmfVxuICAgICAgey4uLmZpbHRlcmVkUHJvcHN9XG4gICAgICBjc3M9e3tcbiAgICAgICAgbGFiZWw6ICdkdW1teUlucHV0JyxcbiAgICAgICAgLy8gZ2V0IHJpZCBvZiBhbnkgZGVmYXVsdCBzdHlsZXNcbiAgICAgICAgYmFja2dyb3VuZDogMCxcbiAgICAgICAgYm9yZGVyOiAwLFxuICAgICAgICAvLyBpbXBvcnRhbnQhIHRoaXMgaGlkZXMgdGhlIGZsYXNoaW5nIGN1cnNvclxuICAgICAgICBjYXJldENvbG9yOiAndHJhbnNwYXJlbnQnLFxuICAgICAgICBmb250U2l6ZTogJ2luaGVyaXQnLFxuICAgICAgICBncmlkQXJlYTogJzEgLyAxIC8gMiAvIDMnLFxuICAgICAgICBvdXRsaW5lOiAwLFxuICAgICAgICBwYWRkaW5nOiAwLFxuICAgICAgICAvLyBpbXBvcnRhbnQhIHdpdGhvdXQgYHdpZHRoYCBicm93c2VycyB3b24ndCBhbGxvdyBmb2N1c1xuICAgICAgICB3aWR0aDogMSxcblxuICAgICAgICAvLyByZW1vdmUgY3Vyc29yIG9uIGRlc2t0b3BcbiAgICAgICAgY29sb3I6ICd0cmFuc3BhcmVudCcsXG5cbiAgICAgICAgLy8gcmVtb3ZlIGN1cnNvciBvbiBtb2JpbGUgd2hpbHN0IG1haW50YWluaW5nIFwic2Nyb2xsIGludG8gdmlld1wiIGJlaGF2aW91clxuICAgICAgICBsZWZ0OiAtMTAwLFxuICAgICAgICBvcGFjaXR5OiAwLFxuICAgICAgICBwb3NpdGlvbjogJ3JlbGF0aXZlJyxcbiAgICAgICAgdHJhbnNmb3JtOiAnc2NhbGUoLjAxKScsXG4gICAgICB9fVxuICAgIC8+XG4gICk7XG59XG4iXX0= */\")\n  }));\n}\n\nvar cancelScroll = function cancelScroll(event) {\n  event.preventDefault();\n  event.stopPropagation();\n};\n\nfunction useScrollCapture(_ref) {\n  var isEnabled = _ref.isEnabled,\n      onBottomArrive = _ref.onBottomArrive,\n      onBottomLeave = _ref.onBottomLeave,\n      onTopArrive = _ref.onTopArrive,\n      onTopLeave = _ref.onTopLeave;\n  var isBottom = useRef(false);\n  var isTop = useRef(false);\n  var touchStart = useRef(0);\n  var scrollTarget = useRef(null);\n  var handleEventDelta = useCallback(function (event, delta) {\n    if (scrollTarget.current === null) return;\n    var _scrollTarget$current = scrollTarget.current,\n        scrollTop = _scrollTarget$current.scrollTop,\n        scrollHeight = _scrollTarget$current.scrollHeight,\n        clientHeight = _scrollTarget$current.clientHeight;\n    var target = scrollTarget.current;\n    var isDeltaPositive = delta > 0;\n    var availableScroll = scrollHeight - clientHeight - scrollTop;\n    var shouldCancelScroll = false; // reset bottom/top flags\n\n    if (availableScroll > delta && isBottom.current) {\n      if (onBottomLeave) onBottomLeave(event);\n      isBottom.current = false;\n    }\n\n    if (isDeltaPositive && isTop.current) {\n      if (onTopLeave) onTopLeave(event);\n      isTop.current = false;\n    } // bottom limit\n\n\n    if (isDeltaPositive && delta > availableScroll) {\n      if (onBottomArrive && !isBottom.current) {\n        onBottomArrive(event);\n      }\n\n      target.scrollTop = scrollHeight;\n      shouldCancelScroll = true;\n      isBottom.current = true; // top limit\n    } else if (!isDeltaPositive && -delta > scrollTop) {\n      if (onTopArrive && !isTop.current) {\n        onTopArrive(event);\n      }\n\n      target.scrollTop = 0;\n      shouldCancelScroll = true;\n      isTop.current = true;\n    } // cancel scroll\n\n\n    if (shouldCancelScroll) {\n      cancelScroll(event);\n    }\n  }, [onBottomArrive, onBottomLeave, onTopArrive, onTopLeave]);\n  var onWheel = useCallback(function (event) {\n    handleEventDelta(event, event.deltaY);\n  }, [handleEventDelta]);\n  var onTouchStart = useCallback(function (event) {\n    // set touch start so we can calculate touchmove delta\n    touchStart.current = event.changedTouches[0].clientY;\n  }, []);\n  var onTouchMove = useCallback(function (event) {\n    var deltaY = touchStart.current - event.changedTouches[0].clientY;\n    handleEventDelta(event, deltaY);\n  }, [handleEventDelta]);\n  var startListening = useCallback(function (el) {\n    // bail early if no element is available to attach to\n    if (!el) return;\n    var notPassive = supportsPassiveEvents ? {\n      passive: false\n    } : false;\n    el.addEventListener('wheel', onWheel, notPassive);\n    el.addEventListener('touchstart', onTouchStart, notPassive);\n    el.addEventListener('touchmove', onTouchMove, notPassive);\n  }, [onTouchMove, onTouchStart, onWheel]);\n  var stopListening = useCallback(function (el) {\n    // bail early if no element is available to detach from\n    if (!el) return;\n    el.removeEventListener('wheel', onWheel, false);\n    el.removeEventListener('touchstart', onTouchStart, false);\n    el.removeEventListener('touchmove', onTouchMove, false);\n  }, [onTouchMove, onTouchStart, onWheel]);\n  useEffect(function () {\n    if (!isEnabled) return;\n    var element = scrollTarget.current;\n    startListening(element);\n    return function () {\n      stopListening(element);\n    };\n  }, [isEnabled, startListening, stopListening]);\n  return function (element) {\n    scrollTarget.current = element;\n  };\n}\n\nvar STYLE_KEYS = ['boxSizing', 'height', 'overflow', 'paddingRight', 'position'];\nvar LOCK_STYLES = {\n  boxSizing: 'border-box',\n  // account for possible declaration `width: 100%;` on body\n  overflow: 'hidden',\n  position: 'relative',\n  height: '100%'\n};\n\nfunction preventTouchMove(e) {\n  e.preventDefault();\n}\n\nfunction allowTouchMove(e) {\n  e.stopPropagation();\n}\n\nfunction preventInertiaScroll() {\n  var top = this.scrollTop;\n  var totalScroll = this.scrollHeight;\n  var currentScroll = top + this.offsetHeight;\n\n  if (top === 0) {\n    this.scrollTop = 1;\n  } else if (currentScroll === totalScroll) {\n    this.scrollTop = top - 1;\n  }\n} // `ontouchstart` check works on most browsers\n// `maxTouchPoints` works on IE10/11 and Surface\n\n\nfunction isTouchDevice() {\n  return 'ontouchstart' in window || navigator.maxTouchPoints;\n}\n\nvar canUseDOM = !!(typeof window !== 'undefined' && window.document && window.document.createElement);\nvar activeScrollLocks = 0;\nvar listenerOptions = {\n  capture: false,\n  passive: false\n};\nfunction useScrollLock(_ref) {\n  var isEnabled = _ref.isEnabled,\n      _ref$accountForScroll = _ref.accountForScrollbars,\n      accountForScrollbars = _ref$accountForScroll === void 0 ? true : _ref$accountForScroll;\n  var originalStyles = useRef({});\n  var scrollTarget = useRef(null);\n  var addScrollLock = useCallback(function (touchScrollTarget) {\n    if (!canUseDOM) return;\n    var target = document.body;\n    var targetStyle = target && target.style;\n\n    if (accountForScrollbars) {\n      // store any styles already applied to the body\n      STYLE_KEYS.forEach(function (key) {\n        var val = targetStyle && targetStyle[key];\n        originalStyles.current[key] = val;\n      });\n    } // apply the lock styles and padding if this is the first scroll lock\n\n\n    if (accountForScrollbars && activeScrollLocks < 1) {\n      var currentPadding = parseInt(originalStyles.current.paddingRight, 10) || 0;\n      var clientWidth = document.body ? document.body.clientWidth : 0;\n      var adjustedPadding = window.innerWidth - clientWidth + currentPadding || 0;\n      Object.keys(LOCK_STYLES).forEach(function (key) {\n        var val = LOCK_STYLES[key];\n\n        if (targetStyle) {\n          targetStyle[key] = val;\n        }\n      });\n\n      if (targetStyle) {\n        targetStyle.paddingRight = \"\".concat(adjustedPadding, \"px\");\n      }\n    } // account for touch devices\n\n\n    if (target && isTouchDevice()) {\n      // Mobile Safari ignores { overflow: hidden } declaration on the body.\n      target.addEventListener('touchmove', preventTouchMove, listenerOptions); // Allow scroll on provided target\n\n      if (touchScrollTarget) {\n        touchScrollTarget.addEventListener('touchstart', preventInertiaScroll, listenerOptions);\n        touchScrollTarget.addEventListener('touchmove', allowTouchMove, listenerOptions);\n      }\n    } // increment active scroll locks\n\n\n    activeScrollLocks += 1;\n  }, [accountForScrollbars]);\n  var removeScrollLock = useCallback(function (touchScrollTarget) {\n    if (!canUseDOM) return;\n    var target = document.body;\n    var targetStyle = target && target.style; // safely decrement active scroll locks\n\n    activeScrollLocks = Math.max(activeScrollLocks - 1, 0); // reapply original body styles, if any\n\n    if (accountForScrollbars && activeScrollLocks < 1) {\n      STYLE_KEYS.forEach(function (key) {\n        var val = originalStyles.current[key];\n\n        if (targetStyle) {\n          targetStyle[key] = val;\n        }\n      });\n    } // remove touch listeners\n\n\n    if (target && isTouchDevice()) {\n      target.removeEventListener('touchmove', preventTouchMove, listenerOptions);\n\n      if (touchScrollTarget) {\n        touchScrollTarget.removeEventListener('touchstart', preventInertiaScroll, listenerOptions);\n        touchScrollTarget.removeEventListener('touchmove', allowTouchMove, listenerOptions);\n      }\n    }\n  }, [accountForScrollbars]);\n  useEffect(function () {\n    if (!isEnabled) return;\n    var element = scrollTarget.current;\n    addScrollLock(element);\n    return function () {\n      removeScrollLock(element);\n    };\n  }, [isEnabled, addScrollLock, removeScrollLock]);\n  return function (element) {\n    scrollTarget.current = element;\n  };\n}\n\nfunction _EMOTION_STRINGIFIED_CSS_ERROR__() { return \"You have tried to stringify object returned from `css` function. It isn't supposed to be used directly (e.g. as value of the `className` prop), but rather handed to emotion so it can handle it (e.g. as value of `css` prop).\"; }\n\nvar blurSelectInput = function blurSelectInput() {\n  return document.activeElement && document.activeElement.blur();\n};\n\nvar _ref2 = process.env.NODE_ENV === \"production\" ? {\n  name: \"1kfdb0e\",\n  styles: \"position:fixed;left:0;bottom:0;right:0;top:0\"\n} : {\n  name: \"bp8cua-ScrollManager\",\n  styles: \"position:fixed;left:0;bottom:0;right:0;top:0;label:ScrollManager;\",\n  map: \"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlNjcm9sbE1hbmFnZXIudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQStDVSIsImZpbGUiOiJTY3JvbGxNYW5hZ2VyLnRzeCIsInNvdXJjZXNDb250ZW50IjpbIi8qKiBAanN4IGpzeCAqL1xuaW1wb3J0IHsganN4IH0gZnJvbSAnQGVtb3Rpb24vcmVhY3QnO1xuaW1wb3J0IHsgRnJhZ21lbnQsIFJlYWN0RWxlbWVudCwgUmVmQ2FsbGJhY2sgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgdXNlU2Nyb2xsQ2FwdHVyZSBmcm9tICcuL3VzZVNjcm9sbENhcHR1cmUnO1xuaW1wb3J0IHVzZVNjcm9sbExvY2sgZnJvbSAnLi91c2VTY3JvbGxMb2NrJztcblxuaW50ZXJmYWNlIFByb3BzIHtcbiAgcmVhZG9ubHkgY2hpbGRyZW46IChyZWY6IFJlZkNhbGxiYWNrPEhUTUxFbGVtZW50PikgPT4gUmVhY3RFbGVtZW50O1xuICByZWFkb25seSBsb2NrRW5hYmxlZDogYm9vbGVhbjtcbiAgcmVhZG9ubHkgY2FwdHVyZUVuYWJsZWQ6IGJvb2xlYW47XG4gIHJlYWRvbmx5IG9uQm90dG9tQXJyaXZlPzogKGV2ZW50OiBXaGVlbEV2ZW50IHwgVG91Y2hFdmVudCkgPT4gdm9pZDtcbiAgcmVhZG9ubHkgb25Cb3R0b21MZWF2ZT86IChldmVudDogV2hlZWxFdmVudCB8IFRvdWNoRXZlbnQpID0+IHZvaWQ7XG4gIHJlYWRvbmx5IG9uVG9wQXJyaXZlPzogKGV2ZW50OiBXaGVlbEV2ZW50IHwgVG91Y2hFdmVudCkgPT4gdm9pZDtcbiAgcmVhZG9ubHkgb25Ub3BMZWF2ZT86IChldmVudDogV2hlZWxFdmVudCB8IFRvdWNoRXZlbnQpID0+IHZvaWQ7XG59XG5cbmNvbnN0IGJsdXJTZWxlY3RJbnB1dCA9ICgpID0+XG4gIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgJiYgKGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgYXMgSFRNTEVsZW1lbnQpLmJsdXIoKTtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gU2Nyb2xsTWFuYWdlcih7XG4gIGNoaWxkcmVuLFxuICBsb2NrRW5hYmxlZCxcbiAgY2FwdHVyZUVuYWJsZWQgPSB0cnVlLFxuICBvbkJvdHRvbUFycml2ZSxcbiAgb25Cb3R0b21MZWF2ZSxcbiAgb25Ub3BBcnJpdmUsXG4gIG9uVG9wTGVhdmUsXG59OiBQcm9wcykge1xuICBjb25zdCBzZXRTY3JvbGxDYXB0dXJlVGFyZ2V0ID0gdXNlU2Nyb2xsQ2FwdHVyZSh7XG4gICAgaXNFbmFibGVkOiBjYXB0dXJlRW5hYmxlZCxcbiAgICBvbkJvdHRvbUFycml2ZSxcbiAgICBvbkJvdHRvbUxlYXZlLFxuICAgIG9uVG9wQXJyaXZlLFxuICAgIG9uVG9wTGVhdmUsXG4gIH0pO1xuICBjb25zdCBzZXRTY3JvbGxMb2NrVGFyZ2V0ID0gdXNlU2Nyb2xsTG9jayh7IGlzRW5hYmxlZDogbG9ja0VuYWJsZWQgfSk7XG5cbiAgY29uc3QgdGFyZ2V0UmVmOiBSZWZDYWxsYmFjazxIVE1MRWxlbWVudD4gPSAoZWxlbWVudCkgPT4ge1xuICAgIHNldFNjcm9sbENhcHR1cmVUYXJnZXQoZWxlbWVudCk7XG4gICAgc2V0U2Nyb2xsTG9ja1RhcmdldChlbGVtZW50KTtcbiAgfTtcblxuICByZXR1cm4gKFxuICAgIDxGcmFnbWVudD5cbiAgICAgIHtsb2NrRW5hYmxlZCAmJiAoXG4gICAgICAgIDxkaXZcbiAgICAgICAgICBvbkNsaWNrPXtibHVyU2VsZWN0SW5wdXR9XG4gICAgICAgICAgY3NzPXt7IHBvc2l0aW9uOiAnZml4ZWQnLCBsZWZ0OiAwLCBib3R0b206IDAsIHJpZ2h0OiAwLCB0b3A6IDAgfX1cbiAgICAgICAgLz5cbiAgICAgICl9XG4gICAgICB7Y2hpbGRyZW4odGFyZ2V0UmVmKX1cbiAgICA8L0ZyYWdtZW50PlxuICApO1xufVxuIl19 */\",\n  toString: _EMOTION_STRINGIFIED_CSS_ERROR__\n};\n\nfunction ScrollManager(_ref) {\n  var children = _ref.children,\n      lockEnabled = _ref.lockEnabled,\n      _ref$captureEnabled = _ref.captureEnabled,\n      captureEnabled = _ref$captureEnabled === void 0 ? true : _ref$captureEnabled,\n      onBottomArrive = _ref.onBottomArrive,\n      onBottomLeave = _ref.onBottomLeave,\n      onTopArrive = _ref.onTopArrive,\n      onTopLeave = _ref.onTopLeave;\n  var setScrollCaptureTarget = useScrollCapture({\n    isEnabled: captureEnabled,\n    onBottomArrive: onBottomArrive,\n    onBottomLeave: onBottomLeave,\n    onTopArrive: onTopArrive,\n    onTopLeave: onTopLeave\n  });\n  var setScrollLockTarget = useScrollLock({\n    isEnabled: lockEnabled\n  });\n\n  var targetRef = function targetRef(element) {\n    setScrollCaptureTarget(element);\n    setScrollLockTarget(element);\n  };\n\n  return jsx(Fragment, null, lockEnabled && jsx(\"div\", {\n    onClick: blurSelectInput,\n    css: _ref2\n  }), children(targetRef));\n}\n\nvar formatGroupLabel = function formatGroupLabel(group) {\n  return group.label;\n};\nvar getOptionLabel$1 = function getOptionLabel(option) {\n  return option.label;\n};\nvar getOptionValue$1 = function getOptionValue(option) {\n  return option.value;\n};\nvar isOptionDisabled = function isOptionDisabled(option) {\n  return !!option.isDisabled;\n};\n\nvar defaultStyles = {\n  clearIndicator: clearIndicatorCSS,\n  container: containerCSS,\n  control: css$1,\n  dropdownIndicator: dropdownIndicatorCSS,\n  group: groupCSS,\n  groupHeading: groupHeadingCSS,\n  indicatorsContainer: indicatorsContainerCSS,\n  indicatorSeparator: indicatorSeparatorCSS,\n  input: inputCSS,\n  loadingIndicator: loadingIndicatorCSS,\n  loadingMessage: loadingMessageCSS,\n  menu: menuCSS,\n  menuList: menuListCSS,\n  menuPortal: menuPortalCSS,\n  multiValue: multiValueCSS,\n  multiValueLabel: multiValueLabelCSS,\n  multiValueRemove: multiValueRemoveCSS,\n  noOptionsMessage: noOptionsMessageCSS,\n  option: optionCSS,\n  placeholder: placeholderCSS,\n  singleValue: css$2,\n  valueContainer: valueContainerCSS\n}; // Merge Utility\n// Allows consumers to extend a base Select with additional styles\n\nfunction mergeStyles(source) {\n  var target = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n  // initialize with source styles\n  var styles = _objectSpread2({}, source); // massage in target styles\n\n\n  Object.keys(target).forEach(function (keyAsString) {\n    var key = keyAsString;\n\n    if (source[key]) {\n      styles[key] = function (rsCss, props) {\n        return target[key](source[key](rsCss, props), props);\n      };\n    } else {\n      styles[key] = target[key];\n    }\n  });\n  return styles;\n}\n\nvar colors = {\n  primary: '#2684FF',\n  primary75: '#4C9AFF',\n  primary50: '#B2D4FF',\n  primary25: '#DEEBFF',\n  danger: '#DE350B',\n  dangerLight: '#FFBDAD',\n  neutral0: 'hsl(0, 0%, 100%)',\n  neutral5: 'hsl(0, 0%, 95%)',\n  neutral10: 'hsl(0, 0%, 90%)',\n  neutral20: 'hsl(0, 0%, 80%)',\n  neutral30: 'hsl(0, 0%, 70%)',\n  neutral40: 'hsl(0, 0%, 60%)',\n  neutral50: 'hsl(0, 0%, 50%)',\n  neutral60: 'hsl(0, 0%, 40%)',\n  neutral70: 'hsl(0, 0%, 30%)',\n  neutral80: 'hsl(0, 0%, 20%)',\n  neutral90: 'hsl(0, 0%, 10%)'\n};\nvar borderRadius = 4; // Used to calculate consistent margin/padding on elements\n\nvar baseUnit = 4; // The minimum height of the control\n\nvar controlHeight = 38; // The amount of space between the control and menu */\n\nvar menuGutter = baseUnit * 2;\nvar spacing = {\n  baseUnit: baseUnit,\n  controlHeight: controlHeight,\n  menuGutter: menuGutter\n};\nvar defaultTheme = {\n  borderRadius: borderRadius,\n  colors: colors,\n  spacing: spacing\n};\n\nvar defaultProps = {\n  'aria-live': 'polite',\n  backspaceRemovesValue: true,\n  blurInputOnSelect: isTouchCapable(),\n  captureMenuScroll: !isTouchCapable(),\n  closeMenuOnSelect: true,\n  closeMenuOnScroll: false,\n  components: {},\n  controlShouldRenderValue: true,\n  escapeClearsValue: false,\n  filterOption: createFilter(),\n  formatGroupLabel: formatGroupLabel,\n  getOptionLabel: getOptionLabel$1,\n  getOptionValue: getOptionValue$1,\n  isDisabled: false,\n  isLoading: false,\n  isMulti: false,\n  isRtl: false,\n  isSearchable: true,\n  isOptionDisabled: isOptionDisabled,\n  loadingMessage: function loadingMessage() {\n    return 'Loading...';\n  },\n  maxMenuHeight: 300,\n  minMenuHeight: 140,\n  menuIsOpen: false,\n  menuPlacement: 'bottom',\n  menuPosition: 'absolute',\n  menuShouldBlockScroll: false,\n  menuShouldScrollIntoView: !isMobileDevice(),\n  noOptionsMessage: function noOptionsMessage() {\n    return 'No options';\n  },\n  openMenuOnFocus: false,\n  openMenuOnClick: true,\n  options: [],\n  pageSize: 5,\n  placeholder: 'Select...',\n  screenReaderStatus: function screenReaderStatus(_ref) {\n    var count = _ref.count;\n    return \"\".concat(count, \" result\").concat(count !== 1 ? 's' : '', \" available\");\n  },\n  styles: {},\n  tabIndex: 0,\n  tabSelectsValue: true\n};\n\nfunction toCategorizedOption(props, option, selectValue, index) {\n  var isDisabled = _isOptionDisabled(props, option, selectValue);\n\n  var isSelected = _isOptionSelected(props, option, selectValue);\n\n  var label = getOptionLabel(props, option);\n  var value = getOptionValue(props, option);\n  return {\n    type: 'option',\n    data: option,\n    isDisabled: isDisabled,\n    isSelected: isSelected,\n    label: label,\n    value: value,\n    index: index\n  };\n}\n\nfunction buildCategorizedOptions(props, selectValue) {\n  return props.options.map(function (groupOrOption, groupOrOptionIndex) {\n    if ('options' in groupOrOption) {\n      var categorizedOptions = groupOrOption.options.map(function (option, optionIndex) {\n        return toCategorizedOption(props, option, selectValue, optionIndex);\n      }).filter(function (categorizedOption) {\n        return isFocusable(props, categorizedOption);\n      });\n      return categorizedOptions.length > 0 ? {\n        type: 'group',\n        data: groupOrOption,\n        options: categorizedOptions,\n        index: groupOrOptionIndex\n      } : undefined;\n    }\n\n    var categorizedOption = toCategorizedOption(props, groupOrOption, selectValue, groupOrOptionIndex);\n    return isFocusable(props, categorizedOption) ? categorizedOption : undefined;\n  }).filter(notNullish);\n}\n\nfunction buildFocusableOptionsFromCategorizedOptions(categorizedOptions) {\n  return categorizedOptions.reduce(function (optionsAccumulator, categorizedOption) {\n    if (categorizedOption.type === 'group') {\n      optionsAccumulator.push.apply(optionsAccumulator, _toConsumableArray(categorizedOption.options.map(function (option) {\n        return option.data;\n      })));\n    } else {\n      optionsAccumulator.push(categorizedOption.data);\n    }\n\n    return optionsAccumulator;\n  }, []);\n}\n\nfunction buildFocusableOptions(props, selectValue) {\n  return buildFocusableOptionsFromCategorizedOptions(buildCategorizedOptions(props, selectValue));\n}\n\nfunction isFocusable(props, categorizedOption) {\n  var _props$inputValue = props.inputValue,\n      inputValue = _props$inputValue === void 0 ? '' : _props$inputValue;\n  var data = categorizedOption.data,\n      isSelected = categorizedOption.isSelected,\n      label = categorizedOption.label,\n      value = categorizedOption.value;\n  return (!shouldHideSelectedOptions(props) || !isSelected) && _filterOption(props, {\n    label: label,\n    value: value,\n    data: data\n  }, inputValue);\n}\n\nfunction getNextFocusedValue(state, nextSelectValue) {\n  var focusedValue = state.focusedValue,\n      lastSelectValue = state.selectValue;\n  var lastFocusedIndex = lastSelectValue.indexOf(focusedValue);\n\n  if (lastFocusedIndex > -1) {\n    var nextFocusedIndex = nextSelectValue.indexOf(focusedValue);\n\n    if (nextFocusedIndex > -1) {\n      // the focused value is still in the selectValue, return it\n      return focusedValue;\n    } else if (lastFocusedIndex < nextSelectValue.length) {\n      // the focusedValue is not present in the next selectValue array by\n      // reference, so return the new value at the same index\n      return nextSelectValue[lastFocusedIndex];\n    }\n  }\n\n  return null;\n}\n\nfunction getNextFocusedOption(state, options) {\n  var lastFocusedOption = state.focusedOption;\n  return lastFocusedOption && options.indexOf(lastFocusedOption) > -1 ? lastFocusedOption : options[0];\n}\n\nvar getOptionLabel = function getOptionLabel(props, data) {\n  return props.getOptionLabel(data);\n};\n\nvar getOptionValue = function getOptionValue(props, data) {\n  return props.getOptionValue(data);\n};\n\nfunction _isOptionDisabled(props, option, selectValue) {\n  return typeof props.isOptionDisabled === 'function' ? props.isOptionDisabled(option, selectValue) : false;\n}\n\nfunction _isOptionSelected(props, option, selectValue) {\n  if (selectValue.indexOf(option) > -1) return true;\n\n  if (typeof props.isOptionSelected === 'function') {\n    return props.isOptionSelected(option, selectValue);\n  }\n\n  var candidate = getOptionValue(props, option);\n  return selectValue.some(function (i) {\n    return getOptionValue(props, i) === candidate;\n  });\n}\n\nfunction _filterOption(props, option, inputValue) {\n  return props.filterOption ? props.filterOption(option, inputValue) : true;\n}\n\nvar shouldHideSelectedOptions = function shouldHideSelectedOptions(props) {\n  var hideSelectedOptions = props.hideSelectedOptions,\n      isMulti = props.isMulti;\n  if (hideSelectedOptions === undefined) return isMulti;\n  return hideSelectedOptions;\n};\n\nvar instanceId = 1;\n\nvar Select = /*#__PURE__*/function (_Component) {\n  _inherits(Select, _Component);\n\n  var _super = _createSuper(Select);\n\n  // Misc. Instance Properties\n  // ------------------------------\n  // TODO\n  // Refs\n  // ------------------------------\n  // Lifecycle\n  // ------------------------------\n  function Select(_props) {\n    var _this;\n\n    _classCallCheck(this, Select);\n\n    _this = _super.call(this, _props);\n    _this.state = {\n      ariaSelection: null,\n      focusedOption: null,\n      focusedValue: null,\n      inputIsHidden: false,\n      isFocused: false,\n      selectValue: [],\n      clearFocusValueOnUpdate: false,\n      prevWasFocused: false,\n      inputIsHiddenAfterUpdate: undefined,\n      prevProps: undefined\n    };\n    _this.blockOptionHover = false;\n    _this.isComposing = false;\n    _this.commonProps = void 0;\n    _this.initialTouchX = 0;\n    _this.initialTouchY = 0;\n    _this.instancePrefix = '';\n    _this.openAfterFocus = false;\n    _this.scrollToFocusedOptionOnUpdate = false;\n    _this.userIsDragging = void 0;\n    _this.controlRef = null;\n\n    _this.getControlRef = function (ref) {\n      _this.controlRef = ref;\n    };\n\n    _this.focusedOptionRef = null;\n\n    _this.getFocusedOptionRef = function (ref) {\n      _this.focusedOptionRef = ref;\n    };\n\n    _this.menuListRef = null;\n\n    _this.getMenuListRef = function (ref) {\n      _this.menuListRef = ref;\n    };\n\n    _this.inputRef = null;\n\n    _this.getInputRef = function (ref) {\n      _this.inputRef = ref;\n    };\n\n    _this.focus = _this.focusInput;\n    _this.blur = _this.blurInput;\n\n    _this.onChange = function (newValue, actionMeta) {\n      var _this$props = _this.props,\n          onChange = _this$props.onChange,\n          name = _this$props.name;\n      actionMeta.name = name;\n\n      _this.ariaOnChange(newValue, actionMeta);\n\n      onChange(newValue, actionMeta);\n    };\n\n    _this.setValue = function (newValue, action, option) {\n      var _this$props2 = _this.props,\n          closeMenuOnSelect = _this$props2.closeMenuOnSelect,\n          isMulti = _this$props2.isMulti,\n          inputValue = _this$props2.inputValue;\n\n      _this.onInputChange('', {\n        action: 'set-value',\n        prevInputValue: inputValue\n      });\n\n      if (closeMenuOnSelect) {\n        _this.setState({\n          inputIsHiddenAfterUpdate: !isMulti\n        });\n\n        _this.onMenuClose();\n      } // when the select value should change, we should reset focusedValue\n\n\n      _this.setState({\n        clearFocusValueOnUpdate: true\n      });\n\n      _this.onChange(newValue, {\n        action: action,\n        option: option\n      });\n    };\n\n    _this.selectOption = function (newValue) {\n      var _this$props3 = _this.props,\n          blurInputOnSelect = _this$props3.blurInputOnSelect,\n          isMulti = _this$props3.isMulti,\n          name = _this$props3.name;\n      var selectValue = _this.state.selectValue;\n\n      var deselected = isMulti && _this.isOptionSelected(newValue, selectValue);\n\n      var isDisabled = _this.isOptionDisabled(newValue, selectValue);\n\n      if (deselected) {\n        var candidate = _this.getOptionValue(newValue);\n\n        _this.setValue(multiValueAsValue(selectValue.filter(function (i) {\n          return _this.getOptionValue(i) !== candidate;\n        })), 'deselect-option', newValue);\n      } else if (!isDisabled) {\n        // Select option if option is not disabled\n        if (isMulti) {\n          _this.setValue(multiValueAsValue([].concat(_toConsumableArray(selectValue), [newValue])), 'select-option', newValue);\n        } else {\n          _this.setValue(singleValueAsValue(newValue), 'select-option');\n        }\n      } else {\n        _this.ariaOnChange(singleValueAsValue(newValue), {\n          action: 'select-option',\n          option: newValue,\n          name: name\n        });\n\n        return;\n      }\n\n      if (blurInputOnSelect) {\n        _this.blurInput();\n      }\n    };\n\n    _this.removeValue = function (removedValue) {\n      var isMulti = _this.props.isMulti;\n      var selectValue = _this.state.selectValue;\n\n      var candidate = _this.getOptionValue(removedValue);\n\n      var newValueArray = selectValue.filter(function (i) {\n        return _this.getOptionValue(i) !== candidate;\n      });\n      var newValue = valueTernary(isMulti, newValueArray, newValueArray[0] || null);\n\n      _this.onChange(newValue, {\n        action: 'remove-value',\n        removedValue: removedValue\n      });\n\n      _this.focusInput();\n    };\n\n    _this.clearValue = function () {\n      var selectValue = _this.state.selectValue;\n\n      _this.onChange(valueTernary(_this.props.isMulti, [], null), {\n        action: 'clear',\n        removedValues: selectValue\n      });\n    };\n\n    _this.popValue = function () {\n      var isMulti = _this.props.isMulti;\n      var selectValue = _this.state.selectValue;\n      var lastSelectedValue = selectValue[selectValue.length - 1];\n      var newValueArray = selectValue.slice(0, selectValue.length - 1);\n      var newValue = valueTernary(isMulti, newValueArray, newValueArray[0] || null);\n\n      _this.onChange(newValue, {\n        action: 'pop-value',\n        removedValue: lastSelectedValue\n      });\n    };\n\n    _this.getValue = function () {\n      return _this.state.selectValue;\n    };\n\n    _this.cx = function () {\n      for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n        args[_key] = arguments[_key];\n      }\n\n      return classNames.apply(void 0, [_this.props.classNamePrefix].concat(args));\n    };\n\n    _this.getOptionLabel = function (data) {\n      return getOptionLabel(_this.props, data);\n    };\n\n    _this.getOptionValue = function (data) {\n      return getOptionValue(_this.props, data);\n    };\n\n    _this.getStyles = function (key, props) {\n      var base = defaultStyles[key](props);\n      base.boxSizing = 'border-box';\n      var custom = _this.props.styles[key];\n      return custom ? custom(base, props) : base;\n    };\n\n    _this.getElementId = function (element) {\n      return \"\".concat(_this.instancePrefix, \"-\").concat(element);\n    };\n\n    _this.getComponents = function () {\n      return defaultComponents(_this.props);\n    };\n\n    _this.buildCategorizedOptions = function () {\n      return buildCategorizedOptions(_this.props, _this.state.selectValue);\n    };\n\n    _this.getCategorizedOptions = function () {\n      return _this.props.menuIsOpen ? _this.buildCategorizedOptions() : [];\n    };\n\n    _this.buildFocusableOptions = function () {\n      return buildFocusableOptionsFromCategorizedOptions(_this.buildCategorizedOptions());\n    };\n\n    _this.getFocusableOptions = function () {\n      return _this.props.menuIsOpen ? _this.buildFocusableOptions() : [];\n    };\n\n    _this.ariaOnChange = function (value, actionMeta) {\n      _this.setState({\n        ariaSelection: _objectSpread2({\n          value: value\n        }, actionMeta)\n      });\n    };\n\n    _this.onMenuMouseDown = function (event) {\n      if (event.button !== 0) {\n        return;\n      }\n\n      event.stopPropagation();\n      event.preventDefault();\n\n      _this.focusInput();\n    };\n\n    _this.onMenuMouseMove = function (event) {\n      _this.blockOptionHover = false;\n    };\n\n    _this.onControlMouseDown = function (event) {\n      // Event captured by dropdown indicator\n      if (event.defaultPrevented) {\n        return;\n      }\n\n      var openMenuOnClick = _this.props.openMenuOnClick;\n\n      if (!_this.state.isFocused) {\n        if (openMenuOnClick) {\n          _this.openAfterFocus = true;\n        }\n\n        _this.focusInput();\n      } else if (!_this.props.menuIsOpen) {\n        if (openMenuOnClick) {\n          _this.openMenu('first');\n        }\n      } else {\n        if (event.target.tagName !== 'INPUT' && event.target.tagName !== 'TEXTAREA') {\n          _this.onMenuClose();\n        }\n      }\n\n      if (event.target.tagName !== 'INPUT' && event.target.tagName !== 'TEXTAREA') {\n        event.preventDefault();\n      }\n    };\n\n    _this.onDropdownIndicatorMouseDown = function (event) {\n      // ignore mouse events that weren't triggered by the primary button\n      if (event && event.type === 'mousedown' && event.button !== 0) {\n        return;\n      }\n\n      if (_this.props.isDisabled) return;\n      var _this$props4 = _this.props,\n          isMulti = _this$props4.isMulti,\n          menuIsOpen = _this$props4.menuIsOpen;\n\n      _this.focusInput();\n\n      if (menuIsOpen) {\n        _this.setState({\n          inputIsHiddenAfterUpdate: !isMulti\n        });\n\n        _this.onMenuClose();\n      } else {\n        _this.openMenu('first');\n      }\n\n      event.preventDefault();\n    };\n\n    _this.onClearIndicatorMouseDown = function (event) {\n      // ignore mouse events that weren't triggered by the primary button\n      if (event && event.type === 'mousedown' && event.button !== 0) {\n        return;\n      }\n\n      _this.clearValue();\n\n      event.preventDefault();\n      _this.openAfterFocus = false;\n\n      if (event.type === 'touchend') {\n        _this.focusInput();\n      } else {\n        setTimeout(function () {\n          return _this.focusInput();\n        });\n      }\n    };\n\n    _this.onScroll = function (event) {\n      if (typeof _this.props.closeMenuOnScroll === 'boolean') {\n        if (event.target instanceof HTMLElement && isDocumentElement(event.target)) {\n          _this.props.onMenuClose();\n        }\n      } else if (typeof _this.props.closeMenuOnScroll === 'function') {\n        if (_this.props.closeMenuOnScroll(event)) {\n          _this.props.onMenuClose();\n        }\n      }\n    };\n\n    _this.onCompositionStart = function () {\n      _this.isComposing = true;\n    };\n\n    _this.onCompositionEnd = function () {\n      _this.isComposing = false;\n    };\n\n    _this.onTouchStart = function (_ref2) {\n      var touches = _ref2.touches;\n      var touch = touches && touches.item(0);\n\n      if (!touch) {\n        return;\n      }\n\n      _this.initialTouchX = touch.clientX;\n      _this.initialTouchY = touch.clientY;\n      _this.userIsDragging = false;\n    };\n\n    _this.onTouchMove = function (_ref3) {\n      var touches = _ref3.touches;\n      var touch = touches && touches.item(0);\n\n      if (!touch) {\n        return;\n      }\n\n      var deltaX = Math.abs(touch.clientX - _this.initialTouchX);\n      var deltaY = Math.abs(touch.clientY - _this.initialTouchY);\n      var moveThreshold = 5;\n      _this.userIsDragging = deltaX > moveThreshold || deltaY > moveThreshold;\n    };\n\n    _this.onTouchEnd = function (event) {\n      if (_this.userIsDragging) return; // close the menu if the user taps outside\n      // we're checking on event.target here instead of event.currentTarget, because we want to assert information\n      // on events on child elements, not the document (which we've attached this handler to).\n\n      if (_this.controlRef && !_this.controlRef.contains(event.target) && _this.menuListRef && !_this.menuListRef.contains(event.target)) {\n        _this.blurInput();\n      } // reset move vars\n\n\n      _this.initialTouchX = 0;\n      _this.initialTouchY = 0;\n    };\n\n    _this.onControlTouchEnd = function (event) {\n      if (_this.userIsDragging) return;\n\n      _this.onControlMouseDown(event);\n    };\n\n    _this.onClearIndicatorTouchEnd = function (event) {\n      if (_this.userIsDragging) return;\n\n      _this.onClearIndicatorMouseDown(event);\n    };\n\n    _this.onDropdownIndicatorTouchEnd = function (event) {\n      if (_this.userIsDragging) return;\n\n      _this.onDropdownIndicatorMouseDown(event);\n    };\n\n    _this.handleInputChange = function (event) {\n      var prevInputValue = _this.props.inputValue;\n      var inputValue = event.currentTarget.value;\n\n      _this.setState({\n        inputIsHiddenAfterUpdate: false\n      });\n\n      _this.onInputChange(inputValue, {\n        action: 'input-change',\n        prevInputValue: prevInputValue\n      });\n\n      if (!_this.props.menuIsOpen) {\n        _this.onMenuOpen();\n      }\n    };\n\n    _this.onInputFocus = function (event) {\n      if (_this.props.onFocus) {\n        _this.props.onFocus(event);\n      }\n\n      _this.setState({\n        inputIsHiddenAfterUpdate: false,\n        isFocused: true\n      });\n\n      if (_this.openAfterFocus || _this.props.openMenuOnFocus) {\n        _this.openMenu('first');\n      }\n\n      _this.openAfterFocus = false;\n    };\n\n    _this.onInputBlur = function (event) {\n      var prevInputValue = _this.props.inputValue;\n\n      if (_this.menuListRef && _this.menuListRef.contains(document.activeElement)) {\n        _this.inputRef.focus();\n\n        return;\n      }\n\n      if (_this.props.onBlur) {\n        _this.props.onBlur(event);\n      }\n\n      _this.onInputChange('', {\n        action: 'input-blur',\n        prevInputValue: prevInputValue\n      });\n\n      _this.onMenuClose();\n\n      _this.setState({\n        focusedValue: null,\n        isFocused: false\n      });\n    };\n\n    _this.onOptionHover = function (focusedOption) {\n      if (_this.blockOptionHover || _this.state.focusedOption === focusedOption) {\n        return;\n      }\n\n      _this.setState({\n        focusedOption: focusedOption\n      });\n    };\n\n    _this.shouldHideSelectedOptions = function () {\n      return shouldHideSelectedOptions(_this.props);\n    };\n\n    _this.onKeyDown = function (event) {\n      var _this$props5 = _this.props,\n          isMulti = _this$props5.isMulti,\n          backspaceRemovesValue = _this$props5.backspaceRemovesValue,\n          escapeClearsValue = _this$props5.escapeClearsValue,\n          inputValue = _this$props5.inputValue,\n          isClearable = _this$props5.isClearable,\n          isDisabled = _this$props5.isDisabled,\n          menuIsOpen = _this$props5.menuIsOpen,\n          onKeyDown = _this$props5.onKeyDown,\n          tabSelectsValue = _this$props5.tabSelectsValue,\n          openMenuOnFocus = _this$props5.openMenuOnFocus;\n      var _this$state = _this.state,\n          focusedOption = _this$state.focusedOption,\n          focusedValue = _this$state.focusedValue,\n          selectValue = _this$state.selectValue;\n      if (isDisabled) return;\n\n      if (typeof onKeyDown === 'function') {\n        onKeyDown(event);\n\n        if (event.defaultPrevented) {\n          return;\n        }\n      } // Block option hover events when the user has just pressed a key\n\n\n      _this.blockOptionHover = true;\n\n      switch (event.key) {\n        case 'ArrowLeft':\n          if (!isMulti || inputValue) return;\n\n          _this.focusValue('previous');\n\n          break;\n\n        case 'ArrowRight':\n          if (!isMulti || inputValue) return;\n\n          _this.focusValue('next');\n\n          break;\n\n        case 'Delete':\n        case 'Backspace':\n          if (inputValue) return;\n\n          if (focusedValue) {\n            _this.removeValue(focusedValue);\n          } else {\n            if (!backspaceRemovesValue) return;\n\n            if (isMulti) {\n              _this.popValue();\n            } else if (isClearable) {\n              _this.clearValue();\n            }\n          }\n\n          break;\n\n        case 'Tab':\n          if (_this.isComposing) return;\n\n          if (event.shiftKey || !menuIsOpen || !tabSelectsValue || !focusedOption || // don't capture the event if the menu opens on focus and the focused\n          // option is already selected; it breaks the flow of navigation\n          openMenuOnFocus && _this.isOptionSelected(focusedOption, selectValue)) {\n            return;\n          }\n\n          _this.selectOption(focusedOption);\n\n          break;\n\n        case 'Enter':\n          if (event.keyCode === 229) {\n            // ignore the keydown event from an Input Method Editor(IME)\n            // ref. https://www.w3.org/TR/uievents/#determine-keydown-keyup-keyCode\n            break;\n          }\n\n          if (menuIsOpen) {\n            if (!focusedOption) return;\n            if (_this.isComposing) return;\n\n            _this.selectOption(focusedOption);\n\n            break;\n          }\n\n          return;\n\n        case 'Escape':\n          if (menuIsOpen) {\n            _this.setState({\n              inputIsHiddenAfterUpdate: false\n            });\n\n            _this.onInputChange('', {\n              action: 'menu-close',\n              prevInputValue: inputValue\n            });\n\n            _this.onMenuClose();\n          } else if (isClearable && escapeClearsValue) {\n            _this.clearValue();\n          }\n\n          break;\n\n        case ' ':\n          // space\n          if (inputValue) {\n            return;\n          }\n\n          if (!menuIsOpen) {\n            _this.openMenu('first');\n\n            break;\n          }\n\n          if (!focusedOption) return;\n\n          _this.selectOption(focusedOption);\n\n          break;\n\n        case 'ArrowUp':\n          if (menuIsOpen) {\n            _this.focusOption('up');\n          } else {\n            _this.openMenu('last');\n          }\n\n          break;\n\n        case 'ArrowDown':\n          if (menuIsOpen) {\n            _this.focusOption('down');\n          } else {\n            _this.openMenu('first');\n          }\n\n          break;\n\n        case 'PageUp':\n          if (!menuIsOpen) return;\n\n          _this.focusOption('pageup');\n\n          break;\n\n        case 'PageDown':\n          if (!menuIsOpen) return;\n\n          _this.focusOption('pagedown');\n\n          break;\n\n        case 'Home':\n          if (!menuIsOpen) return;\n\n          _this.focusOption('first');\n\n          break;\n\n        case 'End':\n          if (!menuIsOpen) return;\n\n          _this.focusOption('last');\n\n          break;\n\n        default:\n          return;\n      }\n\n      event.preventDefault();\n    };\n\n    _this.instancePrefix = 'react-select-' + (_this.props.instanceId || ++instanceId);\n    _this.state.selectValue = cleanValue(_props.value);\n    return _this;\n  }\n\n  _createClass(Select, [{\n    key: \"componentDidMount\",\n    value: function componentDidMount() {\n      this.startListeningComposition();\n      this.startListeningToTouch();\n\n      if (this.props.closeMenuOnScroll && document && document.addEventListener) {\n        // Listen to all scroll events, and filter them out inside of 'onScroll'\n        document.addEventListener('scroll', this.onScroll, true);\n      }\n\n      if (this.props.autoFocus) {\n        this.focusInput();\n      }\n    }\n  }, {\n    key: \"componentDidUpdate\",\n    value: function componentDidUpdate(prevProps) {\n      var _this$props6 = this.props,\n          isDisabled = _this$props6.isDisabled,\n          menuIsOpen = _this$props6.menuIsOpen;\n      var isFocused = this.state.isFocused;\n\n      if ( // ensure focus is restored correctly when the control becomes enabled\n      isFocused && !isDisabled && prevProps.isDisabled || // ensure focus is on the Input when the menu opens\n      isFocused && menuIsOpen && !prevProps.menuIsOpen) {\n        this.focusInput();\n      }\n\n      if (isFocused && isDisabled && !prevProps.isDisabled) {\n        // ensure select state gets blurred in case Select is programmatically disabled while focused\n        // eslint-disable-next-line react/no-did-update-set-state\n        this.setState({\n          isFocused: false\n        }, this.onMenuClose);\n      } // scroll the focused option into view if necessary\n\n\n      if (this.menuListRef && this.focusedOptionRef && this.scrollToFocusedOptionOnUpdate) {\n        scrollIntoView(this.menuListRef, this.focusedOptionRef);\n        this.scrollToFocusedOptionOnUpdate = false;\n      }\n    }\n  }, {\n    key: \"componentWillUnmount\",\n    value: function componentWillUnmount() {\n      this.stopListeningComposition();\n      this.stopListeningToTouch();\n      document.removeEventListener('scroll', this.onScroll, true);\n    } // ==============================\n    // Consumer Handlers\n    // ==============================\n\n  }, {\n    key: \"onMenuOpen\",\n    value: function onMenuOpen() {\n      this.props.onMenuOpen();\n    }\n  }, {\n    key: \"onMenuClose\",\n    value: function onMenuClose() {\n      this.onInputChange('', {\n        action: 'menu-close',\n        prevInputValue: this.props.inputValue\n      });\n      this.props.onMenuClose();\n    }\n  }, {\n    key: \"onInputChange\",\n    value: function onInputChange(newValue, actionMeta) {\n      this.props.onInputChange(newValue, actionMeta);\n    } // ==============================\n    // Methods\n    // ==============================\n\n  }, {\n    key: \"focusInput\",\n    value: function focusInput() {\n      if (!this.inputRef) return;\n      this.inputRef.focus();\n    }\n  }, {\n    key: \"blurInput\",\n    value: function blurInput() {\n      if (!this.inputRef) return;\n      this.inputRef.blur();\n    } // aliased for consumers\n\n  }, {\n    key: \"openMenu\",\n    value: function openMenu(focusOption) {\n      var _this2 = this;\n\n      var _this$state2 = this.state,\n          selectValue = _this$state2.selectValue,\n          isFocused = _this$state2.isFocused;\n      var focusableOptions = this.buildFocusableOptions();\n      var openAtIndex = focusOption === 'first' ? 0 : focusableOptions.length - 1;\n\n      if (!this.props.isMulti) {\n        var selectedIndex = focusableOptions.indexOf(selectValue[0]);\n\n        if (selectedIndex > -1) {\n          openAtIndex = selectedIndex;\n        }\n      } // only scroll if the menu isn't already open\n\n\n      this.scrollToFocusedOptionOnUpdate = !(isFocused && this.menuListRef);\n      this.setState({\n        inputIsHiddenAfterUpdate: false,\n        focusedValue: null,\n        focusedOption: focusableOptions[openAtIndex]\n      }, function () {\n        return _this2.onMenuOpen();\n      });\n    }\n  }, {\n    key: \"focusValue\",\n    value: function focusValue(direction) {\n      var _this$state3 = this.state,\n          selectValue = _this$state3.selectValue,\n          focusedValue = _this$state3.focusedValue; // Only multiselects support value focusing\n\n      if (!this.props.isMulti) return;\n      this.setState({\n        focusedOption: null\n      });\n      var focusedIndex = selectValue.indexOf(focusedValue);\n\n      if (!focusedValue) {\n        focusedIndex = -1;\n      }\n\n      var lastIndex = selectValue.length - 1;\n      var nextFocus = -1;\n      if (!selectValue.length) return;\n\n      switch (direction) {\n        case 'previous':\n          if (focusedIndex === 0) {\n            // don't cycle from the start to the end\n            nextFocus = 0;\n          } else if (focusedIndex === -1) {\n            // if nothing is focused, focus the last value first\n            nextFocus = lastIndex;\n          } else {\n            nextFocus = focusedIndex - 1;\n          }\n\n          break;\n\n        case 'next':\n          if (focusedIndex > -1 && focusedIndex < lastIndex) {\n            nextFocus = focusedIndex + 1;\n          }\n\n          break;\n      }\n\n      this.setState({\n        inputIsHidden: nextFocus !== -1,\n        focusedValue: selectValue[nextFocus]\n      });\n    }\n  }, {\n    key: \"focusOption\",\n    value: function focusOption() {\n      var direction = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'first';\n      var pageSize = this.props.pageSize;\n      var focusedOption = this.state.focusedOption;\n      var options = this.getFocusableOptions();\n      if (!options.length) return;\n      var nextFocus = 0; // handles 'first'\n\n      var focusedIndex = options.indexOf(focusedOption);\n\n      if (!focusedOption) {\n        focusedIndex = -1;\n      }\n\n      if (direction === 'up') {\n        nextFocus = focusedIndex > 0 ? focusedIndex - 1 : options.length - 1;\n      } else if (direction === 'down') {\n        nextFocus = (focusedIndex + 1) % options.length;\n      } else if (direction === 'pageup') {\n        nextFocus = focusedIndex - pageSize;\n        if (nextFocus < 0) nextFocus = 0;\n      } else if (direction === 'pagedown') {\n        nextFocus = focusedIndex + pageSize;\n        if (nextFocus > options.length - 1) nextFocus = options.length - 1;\n      } else if (direction === 'last') {\n        nextFocus = options.length - 1;\n      }\n\n      this.scrollToFocusedOptionOnUpdate = true;\n      this.setState({\n        focusedOption: options[nextFocus],\n        focusedValue: null\n      });\n    }\n  }, {\n    key: \"getTheme\",\n    value: // ==============================\n    // Getters\n    // ==============================\n    function getTheme() {\n      // Use the default theme if there are no customizations.\n      if (!this.props.theme) {\n        return defaultTheme;\n      } // If the theme prop is a function, assume the function\n      // knows how to merge the passed-in default theme with\n      // its own modifications.\n\n\n      if (typeof this.props.theme === 'function') {\n        return this.props.theme(defaultTheme);\n      } // Otherwise, if a plain theme object was passed in,\n      // overlay it with the default theme.\n\n\n      return _objectSpread2(_objectSpread2({}, defaultTheme), this.props.theme);\n    }\n  }, {\n    key: \"getCommonProps\",\n    value: function getCommonProps() {\n      var clearValue = this.clearValue,\n          cx = this.cx,\n          getStyles = this.getStyles,\n          getValue = this.getValue,\n          selectOption = this.selectOption,\n          setValue = this.setValue,\n          props = this.props;\n      var isMulti = props.isMulti,\n          isRtl = props.isRtl,\n          options = props.options;\n      var hasValue = this.hasValue();\n      return {\n        clearValue: clearValue,\n        cx: cx,\n        getStyles: getStyles,\n        getValue: getValue,\n        hasValue: hasValue,\n        isMulti: isMulti,\n        isRtl: isRtl,\n        options: options,\n        selectOption: selectOption,\n        selectProps: props,\n        setValue: setValue,\n        theme: this.getTheme()\n      };\n    }\n  }, {\n    key: \"hasValue\",\n    value: function hasValue() {\n      var selectValue = this.state.selectValue;\n      return selectValue.length > 0;\n    }\n  }, {\n    key: \"hasOptions\",\n    value: function hasOptions() {\n      return !!this.getFocusableOptions().length;\n    }\n  }, {\n    key: \"isClearable\",\n    value: function isClearable() {\n      var _this$props7 = this.props,\n          isClearable = _this$props7.isClearable,\n          isMulti = _this$props7.isMulti; // single select, by default, IS NOT clearable\n      // multi select, by default, IS clearable\n\n      if (isClearable === undefined) return isMulti;\n      return isClearable;\n    }\n  }, {\n    key: \"isOptionDisabled\",\n    value: function isOptionDisabled(option, selectValue) {\n      return _isOptionDisabled(this.props, option, selectValue);\n    }\n  }, {\n    key: \"isOptionSelected\",\n    value: function isOptionSelected(option, selectValue) {\n      return _isOptionSelected(this.props, option, selectValue);\n    }\n  }, {\n    key: \"filterOption\",\n    value: function filterOption(option, inputValue) {\n      return _filterOption(this.props, option, inputValue);\n    }\n  }, {\n    key: \"formatOptionLabel\",\n    value: function formatOptionLabel(data, context) {\n      if (typeof this.props.formatOptionLabel === 'function') {\n        var _inputValue = this.props.inputValue;\n        var _selectValue = this.state.selectValue;\n        return this.props.formatOptionLabel(data, {\n          context: context,\n          inputValue: _inputValue,\n          selectValue: _selectValue\n        });\n      } else {\n        return this.getOptionLabel(data);\n      }\n    }\n  }, {\n    key: \"formatGroupLabel\",\n    value: function formatGroupLabel(data) {\n      return this.props.formatGroupLabel(data);\n    } // ==============================\n    // Mouse Handlers\n    // ==============================\n\n  }, {\n    key: \"startListeningComposition\",\n    value: // ==============================\n    // Composition Handlers\n    // ==============================\n    function startListeningComposition() {\n      if (document && document.addEventListener) {\n        document.addEventListener('compositionstart', this.onCompositionStart, false);\n        document.addEventListener('compositionend', this.onCompositionEnd, false);\n      }\n    }\n  }, {\n    key: \"stopListeningComposition\",\n    value: function stopListeningComposition() {\n      if (document && document.removeEventListener) {\n        document.removeEventListener('compositionstart', this.onCompositionStart);\n        document.removeEventListener('compositionend', this.onCompositionEnd);\n      }\n    }\n  }, {\n    key: \"startListeningToTouch\",\n    value: // ==============================\n    // Touch Handlers\n    // ==============================\n    function startListeningToTouch() {\n      if (document && document.addEventListener) {\n        document.addEventListener('touchstart', this.onTouchStart, false);\n        document.addEventListener('touchmove', this.onTouchMove, false);\n        document.addEventListener('touchend', this.onTouchEnd, false);\n      }\n    }\n  }, {\n    key: \"stopListeningToTouch\",\n    value: function stopListeningToTouch() {\n      if (document && document.removeEventListener) {\n        document.removeEventListener('touchstart', this.onTouchStart);\n        document.removeEventListener('touchmove', this.onTouchMove);\n        document.removeEventListener('touchend', this.onTouchEnd);\n      }\n    }\n  }, {\n    key: \"renderInput\",\n    value: // ==============================\n    // Renderers\n    // ==============================\n    function renderInput() {\n      var _this$props8 = this.props,\n          isDisabled = _this$props8.isDisabled,\n          isSearchable = _this$props8.isSearchable,\n          inputId = _this$props8.inputId,\n          inputValue = _this$props8.inputValue,\n          tabIndex = _this$props8.tabIndex,\n          form = _this$props8.form,\n          menuIsOpen = _this$props8.menuIsOpen;\n\n      var _this$getComponents = this.getComponents(),\n          Input = _this$getComponents.Input;\n\n      var _this$state4 = this.state,\n          inputIsHidden = _this$state4.inputIsHidden,\n          ariaSelection = _this$state4.ariaSelection;\n      var commonProps = this.commonProps;\n      var id = inputId || this.getElementId('input'); // aria attributes makes the JSX \"noisy\", separated for clarity\n\n      var ariaAttributes = _objectSpread2(_objectSpread2(_objectSpread2({\n        'aria-autocomplete': 'list',\n        'aria-expanded': menuIsOpen,\n        'aria-haspopup': true,\n        'aria-errormessage': this.props['aria-errormessage'],\n        'aria-invalid': this.props['aria-invalid'],\n        'aria-label': this.props['aria-label'],\n        'aria-labelledby': this.props['aria-labelledby'],\n        role: 'combobox'\n      }, menuIsOpen && {\n        'aria-controls': this.getElementId('listbox'),\n        'aria-owns': this.getElementId('listbox')\n      }), !isSearchable && {\n        'aria-readonly': true\n      }), this.hasValue() ? (ariaSelection === null || ariaSelection === void 0 ? void 0 : ariaSelection.action) === 'initial-input-focus' && {\n        'aria-describedby': this.getElementId('live-region')\n      } : {\n        'aria-describedby': this.getElementId('placeholder')\n      });\n\n      if (!isSearchable) {\n        // use a dummy input to maintain focus/blur functionality\n        return /*#__PURE__*/React.createElement(DummyInput, _extends({\n          id: id,\n          innerRef: this.getInputRef,\n          onBlur: this.onInputBlur,\n          onChange: noop,\n          onFocus: this.onInputFocus,\n          disabled: isDisabled,\n          tabIndex: tabIndex,\n          inputMode: \"none\",\n          form: form,\n          value: \"\"\n        }, ariaAttributes));\n      }\n\n      return /*#__PURE__*/React.createElement(Input, _extends({}, commonProps, {\n        autoCapitalize: \"none\",\n        autoComplete: \"off\",\n        autoCorrect: \"off\",\n        id: id,\n        innerRef: this.getInputRef,\n        isDisabled: isDisabled,\n        isHidden: inputIsHidden,\n        onBlur: this.onInputBlur,\n        onChange: this.handleInputChange,\n        onFocus: this.onInputFocus,\n        spellCheck: \"false\",\n        tabIndex: tabIndex,\n        form: form,\n        type: \"text\",\n        value: inputValue\n      }, ariaAttributes));\n    }\n  }, {\n    key: \"renderPlaceholderOrValue\",\n    value: function renderPlaceholderOrValue() {\n      var _this3 = this;\n\n      var _this$getComponents2 = this.getComponents(),\n          MultiValue = _this$getComponents2.MultiValue,\n          MultiValueContainer = _this$getComponents2.MultiValueContainer,\n          MultiValueLabel = _this$getComponents2.MultiValueLabel,\n          MultiValueRemove = _this$getComponents2.MultiValueRemove,\n          SingleValue = _this$getComponents2.SingleValue,\n          Placeholder = _this$getComponents2.Placeholder;\n\n      var commonProps = this.commonProps;\n      var _this$props9 = this.props,\n          controlShouldRenderValue = _this$props9.controlShouldRenderValue,\n          isDisabled = _this$props9.isDisabled,\n          isMulti = _this$props9.isMulti,\n          inputValue = _this$props9.inputValue,\n          placeholder = _this$props9.placeholder;\n      var _this$state5 = this.state,\n          selectValue = _this$state5.selectValue,\n          focusedValue = _this$state5.focusedValue,\n          isFocused = _this$state5.isFocused;\n\n      if (!this.hasValue() || !controlShouldRenderValue) {\n        return inputValue ? null : /*#__PURE__*/React.createElement(Placeholder, _extends({}, commonProps, {\n          key: \"placeholder\",\n          isDisabled: isDisabled,\n          isFocused: isFocused,\n          innerProps: {\n            id: this.getElementId('placeholder')\n          }\n        }), placeholder);\n      }\n\n      if (isMulti) {\n        return selectValue.map(function (opt, index) {\n          var isOptionFocused = opt === focusedValue;\n          var key = \"\".concat(_this3.getOptionLabel(opt), \"-\").concat(_this3.getOptionValue(opt));\n          return /*#__PURE__*/React.createElement(MultiValue, _extends({}, commonProps, {\n            components: {\n              Container: MultiValueContainer,\n              Label: MultiValueLabel,\n              Remove: MultiValueRemove\n            },\n            isFocused: isOptionFocused,\n            isDisabled: isDisabled,\n            key: key,\n            index: index,\n            removeProps: {\n              onClick: function onClick() {\n                return _this3.removeValue(opt);\n              },\n              onTouchEnd: function onTouchEnd() {\n                return _this3.removeValue(opt);\n              },\n              onMouseDown: function onMouseDown(e) {\n                e.preventDefault();\n              }\n            },\n            data: opt\n          }), _this3.formatOptionLabel(opt, 'value'));\n        });\n      }\n\n      if (inputValue) {\n        return null;\n      }\n\n      var singleValue = selectValue[0];\n      return /*#__PURE__*/React.createElement(SingleValue, _extends({}, commonProps, {\n        data: singleValue,\n        isDisabled: isDisabled\n      }), this.formatOptionLabel(singleValue, 'value'));\n    }\n  }, {\n    key: \"renderClearIndicator\",\n    value: function renderClearIndicator() {\n      var _this$getComponents3 = this.getComponents(),\n          ClearIndicator = _this$getComponents3.ClearIndicator;\n\n      var commonProps = this.commonProps;\n      var _this$props10 = this.props,\n          isDisabled = _this$props10.isDisabled,\n          isLoading = _this$props10.isLoading;\n      var isFocused = this.state.isFocused;\n\n      if (!this.isClearable() || !ClearIndicator || isDisabled || !this.hasValue() || isLoading) {\n        return null;\n      }\n\n      var innerProps = {\n        onMouseDown: this.onClearIndicatorMouseDown,\n        onTouchEnd: this.onClearIndicatorTouchEnd,\n        'aria-hidden': 'true'\n      };\n      return /*#__PURE__*/React.createElement(ClearIndicator, _extends({}, commonProps, {\n        innerProps: innerProps,\n        isFocused: isFocused\n      }));\n    }\n  }, {\n    key: \"renderLoadingIndicator\",\n    value: function renderLoadingIndicator() {\n      var _this$getComponents4 = this.getComponents(),\n          LoadingIndicator = _this$getComponents4.LoadingIndicator;\n\n      var commonProps = this.commonProps;\n      var _this$props11 = this.props,\n          isDisabled = _this$props11.isDisabled,\n          isLoading = _this$props11.isLoading;\n      var isFocused = this.state.isFocused;\n      if (!LoadingIndicator || !isLoading) return null;\n      var innerProps = {\n        'aria-hidden': 'true'\n      };\n      return /*#__PURE__*/React.createElement(LoadingIndicator, _extends({}, commonProps, {\n        innerProps: innerProps,\n        isDisabled: isDisabled,\n        isFocused: isFocused\n      }));\n    }\n  }, {\n    key: \"renderIndicatorSeparator\",\n    value: function renderIndicatorSeparator() {\n      var _this$getComponents5 = this.getComponents(),\n          DropdownIndicator = _this$getComponents5.DropdownIndicator,\n          IndicatorSeparator = _this$getComponents5.IndicatorSeparator; // separator doesn't make sense without the dropdown indicator\n\n\n      if (!DropdownIndicator || !IndicatorSeparator) return null;\n      var commonProps = this.commonProps;\n      var isDisabled = this.props.isDisabled;\n      var isFocused = this.state.isFocused;\n      return /*#__PURE__*/React.createElement(IndicatorSeparator, _extends({}, commonProps, {\n        isDisabled: isDisabled,\n        isFocused: isFocused\n      }));\n    }\n  }, {\n    key: \"renderDropdownIndicator\",\n    value: function renderDropdownIndicator() {\n      var _this$getComponents6 = this.getComponents(),\n          DropdownIndicator = _this$getComponents6.DropdownIndicator;\n\n      if (!DropdownIndicator) return null;\n      var commonProps = this.commonProps;\n      var isDisabled = this.props.isDisabled;\n      var isFocused = this.state.isFocused;\n      var innerProps = {\n        onMouseDown: this.onDropdownIndicatorMouseDown,\n        onTouchEnd: this.onDropdownIndicatorTouchEnd,\n        'aria-hidden': 'true'\n      };\n      return /*#__PURE__*/React.createElement(DropdownIndicator, _extends({}, commonProps, {\n        innerProps: innerProps,\n        isDisabled: isDisabled,\n        isFocused: isFocused\n      }));\n    }\n  }, {\n    key: \"renderMenu\",\n    value: function renderMenu() {\n      var _this4 = this;\n\n      var _this$getComponents7 = this.getComponents(),\n          Group = _this$getComponents7.Group,\n          GroupHeading = _this$getComponents7.GroupHeading,\n          Menu = _this$getComponents7.Menu,\n          MenuList = _this$getComponents7.MenuList,\n          MenuPortal = _this$getComponents7.MenuPortal,\n          LoadingMessage = _this$getComponents7.LoadingMessage,\n          NoOptionsMessage = _this$getComponents7.NoOptionsMessage,\n          Option = _this$getComponents7.Option;\n\n      var commonProps = this.commonProps;\n      var focusedOption = this.state.focusedOption;\n      var _this$props12 = this.props,\n          captureMenuScroll = _this$props12.captureMenuScroll,\n          inputValue = _this$props12.inputValue,\n          isLoading = _this$props12.isLoading,\n          loadingMessage = _this$props12.loadingMessage,\n          minMenuHeight = _this$props12.minMenuHeight,\n          maxMenuHeight = _this$props12.maxMenuHeight,\n          menuIsOpen = _this$props12.menuIsOpen,\n          menuPlacement = _this$props12.menuPlacement,\n          menuPosition = _this$props12.menuPosition,\n          menuPortalTarget = _this$props12.menuPortalTarget,\n          menuShouldBlockScroll = _this$props12.menuShouldBlockScroll,\n          menuShouldScrollIntoView = _this$props12.menuShouldScrollIntoView,\n          noOptionsMessage = _this$props12.noOptionsMessage,\n          onMenuScrollToTop = _this$props12.onMenuScrollToTop,\n          onMenuScrollToBottom = _this$props12.onMenuScrollToBottom;\n      if (!menuIsOpen) return null; // TODO: Internal Option Type here\n\n      var render = function render(props, id) {\n        var type = props.type,\n            data = props.data,\n            isDisabled = props.isDisabled,\n            isSelected = props.isSelected,\n            label = props.label,\n            value = props.value;\n        var isFocused = focusedOption === data;\n        var onHover = isDisabled ? undefined : function () {\n          return _this4.onOptionHover(data);\n        };\n        var onSelect = isDisabled ? undefined : function () {\n          return _this4.selectOption(data);\n        };\n        var optionId = \"\".concat(_this4.getElementId('option'), \"-\").concat(id);\n        var innerProps = {\n          id: optionId,\n          onClick: onSelect,\n          onMouseMove: onHover,\n          onMouseOver: onHover,\n          tabIndex: -1\n        };\n        return /*#__PURE__*/React.createElement(Option, _extends({}, commonProps, {\n          innerProps: innerProps,\n          data: data,\n          isDisabled: isDisabled,\n          isSelected: isSelected,\n          key: optionId,\n          label: label,\n          type: type,\n          value: value,\n          isFocused: isFocused,\n          innerRef: isFocused ? _this4.getFocusedOptionRef : undefined\n        }), _this4.formatOptionLabel(props.data, 'menu'));\n      };\n\n      var menuUI;\n\n      if (this.hasOptions()) {\n        menuUI = this.getCategorizedOptions().map(function (item) {\n          if (item.type === 'group') {\n            var _data = item.data,\n                options = item.options,\n                groupIndex = item.index;\n            var groupId = \"\".concat(_this4.getElementId('group'), \"-\").concat(groupIndex);\n            var headingId = \"\".concat(groupId, \"-heading\");\n            return /*#__PURE__*/React.createElement(Group, _extends({}, commonProps, {\n              key: groupId,\n              data: _data,\n              options: options,\n              Heading: GroupHeading,\n              headingProps: {\n                id: headingId,\n                data: item.data\n              },\n              label: _this4.formatGroupLabel(item.data)\n            }), item.options.map(function (option) {\n              return render(option, \"\".concat(groupIndex, \"-\").concat(option.index));\n            }));\n          } else if (item.type === 'option') {\n            return render(item, \"\".concat(item.index));\n          }\n        });\n      } else if (isLoading) {\n        var message = loadingMessage({\n          inputValue: inputValue\n        });\n        if (message === null) return null;\n        menuUI = /*#__PURE__*/React.createElement(LoadingMessage, commonProps, message);\n      } else {\n        var _message = noOptionsMessage({\n          inputValue: inputValue\n        });\n\n        if (_message === null) return null;\n        menuUI = /*#__PURE__*/React.createElement(NoOptionsMessage, commonProps, _message);\n      }\n\n      var menuPlacementProps = {\n        minMenuHeight: minMenuHeight,\n        maxMenuHeight: maxMenuHeight,\n        menuPlacement: menuPlacement,\n        menuPosition: menuPosition,\n        menuShouldScrollIntoView: menuShouldScrollIntoView\n      };\n      var menuElement = /*#__PURE__*/React.createElement(MenuPlacer, _extends({}, commonProps, menuPlacementProps), function (_ref4) {\n        var ref = _ref4.ref,\n            _ref4$placerProps = _ref4.placerProps,\n            placement = _ref4$placerProps.placement,\n            maxHeight = _ref4$placerProps.maxHeight;\n        return /*#__PURE__*/React.createElement(Menu, _extends({}, commonProps, menuPlacementProps, {\n          innerRef: ref,\n          innerProps: {\n            onMouseDown: _this4.onMenuMouseDown,\n            onMouseMove: _this4.onMenuMouseMove,\n            id: _this4.getElementId('listbox')\n          },\n          isLoading: isLoading,\n          placement: placement\n        }), /*#__PURE__*/React.createElement(ScrollManager, {\n          captureEnabled: captureMenuScroll,\n          onTopArrive: onMenuScrollToTop,\n          onBottomArrive: onMenuScrollToBottom,\n          lockEnabled: menuShouldBlockScroll\n        }, function (scrollTargetRef) {\n          return /*#__PURE__*/React.createElement(MenuList, _extends({}, commonProps, {\n            innerRef: function innerRef(instance) {\n              _this4.getMenuListRef(instance);\n\n              scrollTargetRef(instance);\n            },\n            isLoading: isLoading,\n            maxHeight: maxHeight,\n            focusedOption: focusedOption\n          }), menuUI);\n        }));\n      }); // positioning behaviour is almost identical for portalled and fixed,\n      // so we use the same component. the actual portalling logic is forked\n      // within the component based on `menuPosition`\n\n      return menuPortalTarget || menuPosition === 'fixed' ? /*#__PURE__*/React.createElement(MenuPortal, _extends({}, commonProps, {\n        appendTo: menuPortalTarget,\n        controlElement: this.controlRef,\n        menuPlacement: menuPlacement,\n        menuPosition: menuPosition\n      }), menuElement) : menuElement;\n    }\n  }, {\n    key: \"renderFormField\",\n    value: function renderFormField() {\n      var _this5 = this;\n\n      var _this$props13 = this.props,\n          delimiter = _this$props13.delimiter,\n          isDisabled = _this$props13.isDisabled,\n          isMulti = _this$props13.isMulti,\n          name = _this$props13.name;\n      var selectValue = this.state.selectValue;\n      if (!name || isDisabled) return;\n\n      if (isMulti) {\n        if (delimiter) {\n          var value = selectValue.map(function (opt) {\n            return _this5.getOptionValue(opt);\n          }).join(delimiter);\n          return /*#__PURE__*/React.createElement(\"input\", {\n            name: name,\n            type: \"hidden\",\n            value: value\n          });\n        } else {\n          var input = selectValue.length > 0 ? selectValue.map(function (opt, i) {\n            return /*#__PURE__*/React.createElement(\"input\", {\n              key: \"i-\".concat(i),\n              name: name,\n              type: \"hidden\",\n              value: _this5.getOptionValue(opt)\n            });\n          }) : /*#__PURE__*/React.createElement(\"input\", {\n            name: name,\n            type: \"hidden\"\n          });\n          return /*#__PURE__*/React.createElement(\"div\", null, input);\n        }\n      } else {\n        var _value = selectValue[0] ? this.getOptionValue(selectValue[0]) : '';\n\n        return /*#__PURE__*/React.createElement(\"input\", {\n          name: name,\n          type: \"hidden\",\n          value: _value\n        });\n      }\n    }\n  }, {\n    key: \"renderLiveRegion\",\n    value: function renderLiveRegion() {\n      var commonProps = this.commonProps;\n      var _this$state6 = this.state,\n          ariaSelection = _this$state6.ariaSelection,\n          focusedOption = _this$state6.focusedOption,\n          focusedValue = _this$state6.focusedValue,\n          isFocused = _this$state6.isFocused,\n          selectValue = _this$state6.selectValue;\n      var focusableOptions = this.getFocusableOptions();\n      return /*#__PURE__*/React.createElement(LiveRegion, _extends({}, commonProps, {\n        id: this.getElementId('live-region'),\n        ariaSelection: ariaSelection,\n        focusedOption: focusedOption,\n        focusedValue: focusedValue,\n        isFocused: isFocused,\n        selectValue: selectValue,\n        focusableOptions: focusableOptions\n      }));\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      var _this$getComponents8 = this.getComponents(),\n          Control = _this$getComponents8.Control,\n          IndicatorsContainer = _this$getComponents8.IndicatorsContainer,\n          SelectContainer = _this$getComponents8.SelectContainer,\n          ValueContainer = _this$getComponents8.ValueContainer;\n\n      var _this$props14 = this.props,\n          className = _this$props14.className,\n          id = _this$props14.id,\n          isDisabled = _this$props14.isDisabled,\n          menuIsOpen = _this$props14.menuIsOpen;\n      var isFocused = this.state.isFocused;\n      var commonProps = this.commonProps = this.getCommonProps();\n      return /*#__PURE__*/React.createElement(SelectContainer, _extends({}, commonProps, {\n        className: className,\n        innerProps: {\n          id: id,\n          onKeyDown: this.onKeyDown\n        },\n        isDisabled: isDisabled,\n        isFocused: isFocused\n      }), this.renderLiveRegion(), /*#__PURE__*/React.createElement(Control, _extends({}, commonProps, {\n        innerRef: this.getControlRef,\n        innerProps: {\n          onMouseDown: this.onControlMouseDown,\n          onTouchEnd: this.onControlTouchEnd\n        },\n        isDisabled: isDisabled,\n        isFocused: isFocused,\n        menuIsOpen: menuIsOpen\n      }), /*#__PURE__*/React.createElement(ValueContainer, _extends({}, commonProps, {\n        isDisabled: isDisabled\n      }), this.renderPlaceholderOrValue(), this.renderInput()), /*#__PURE__*/React.createElement(IndicatorsContainer, _extends({}, commonProps, {\n        isDisabled: isDisabled\n      }), this.renderClearIndicator(), this.renderLoadingIndicator(), this.renderIndicatorSeparator(), this.renderDropdownIndicator())), this.renderMenu(), this.renderFormField());\n    }\n  }], [{\n    key: \"getDerivedStateFromProps\",\n    value: function getDerivedStateFromProps(props, state) {\n      var prevProps = state.prevProps,\n          clearFocusValueOnUpdate = state.clearFocusValueOnUpdate,\n          inputIsHiddenAfterUpdate = state.inputIsHiddenAfterUpdate,\n          ariaSelection = state.ariaSelection,\n          isFocused = state.isFocused,\n          prevWasFocused = state.prevWasFocused;\n      var options = props.options,\n          value = props.value,\n          menuIsOpen = props.menuIsOpen,\n          inputValue = props.inputValue,\n          isMulti = props.isMulti;\n      var selectValue = cleanValue(value);\n      var newMenuOptionsState = {};\n\n      if (prevProps && (value !== prevProps.value || options !== prevProps.options || menuIsOpen !== prevProps.menuIsOpen || inputValue !== prevProps.inputValue)) {\n        var focusableOptions = menuIsOpen ? buildFocusableOptions(props, selectValue) : [];\n        var focusedValue = clearFocusValueOnUpdate ? getNextFocusedValue(state, selectValue) : null;\n        var focusedOption = getNextFocusedOption(state, focusableOptions);\n        newMenuOptionsState = {\n          selectValue: selectValue,\n          focusedOption: focusedOption,\n          focusedValue: focusedValue,\n          clearFocusValueOnUpdate: false\n        };\n      } // some updates should toggle the state of the input visibility\n\n\n      var newInputIsHiddenState = inputIsHiddenAfterUpdate != null && props !== prevProps ? {\n        inputIsHidden: inputIsHiddenAfterUpdate,\n        inputIsHiddenAfterUpdate: undefined\n      } : {};\n      var newAriaSelection = ariaSelection;\n      var hasKeptFocus = isFocused && prevWasFocused;\n\n      if (isFocused && !hasKeptFocus) {\n        // If `value` or `defaultValue` props are not empty then announce them\n        // when the Select is initially focused\n        newAriaSelection = {\n          value: valueTernary(isMulti, selectValue, selectValue[0] || null),\n          options: selectValue,\n          action: 'initial-input-focus'\n        };\n        hasKeptFocus = !prevWasFocused;\n      } // If the 'initial-input-focus' action has been set already\n      // then reset the ariaSelection to null\n\n\n      if ((ariaSelection === null || ariaSelection === void 0 ? void 0 : ariaSelection.action) === 'initial-input-focus') {\n        newAriaSelection = null;\n      }\n\n      return _objectSpread2(_objectSpread2(_objectSpread2({}, newMenuOptionsState), newInputIsHiddenState), {}, {\n        prevProps: props,\n        ariaSelection: newAriaSelection,\n        prevWasFocused: hasKeptFocus\n      });\n    }\n  }]);\n\n  return Select;\n}(Component);\n\nSelect.defaultProps = defaultProps;\n\nexport { Select as S, getOptionLabel$1 as a, defaultProps as b, createFilter as c, defaultTheme as d, getOptionValue$1 as g, mergeStyles as m };\n","import _extends from '@babel/runtime/helpers/esm/extends';\nimport { jsx, keyframes, css as css$2, ClassNames } from '@emotion/react';\nimport _taggedTemplateLiteral from '@babel/runtime/helpers/esm/taggedTemplateLiteral';\nimport _objectWithoutProperties from '@babel/runtime/helpers/esm/objectWithoutProperties';\nimport _slicedToArray from '@babel/runtime/helpers/esm/slicedToArray';\nimport _typeof from '@babel/runtime/helpers/esm/typeof';\nimport _classCallCheck from '@babel/runtime/helpers/esm/classCallCheck';\nimport _createClass from '@babel/runtime/helpers/esm/createClass';\nimport _inherits from '@babel/runtime/helpers/esm/inherits';\nimport _defineProperty$1 from '@babel/runtime/helpers/esm/defineProperty';\nimport { Component, createContext } from 'react';\nimport { createPortal } from 'react-dom';\n\nfunction _defineProperty(obj, key, value) {\n  if (key in obj) {\n    Object.defineProperty(obj, key, {\n      value: value,\n      enumerable: true,\n      configurable: true,\n      writable: true\n    });\n  } else {\n    obj[key] = value;\n  }\n\n  return obj;\n}\n\nfunction ownKeys(object, enumerableOnly) {\n  var keys = Object.keys(object);\n\n  if (Object.getOwnPropertySymbols) {\n    var symbols = Object.getOwnPropertySymbols(object);\n\n    if (enumerableOnly) {\n      symbols = symbols.filter(function (sym) {\n        return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n      });\n    }\n\n    keys.push.apply(keys, symbols);\n  }\n\n  return keys;\n}\n\nfunction _objectSpread2(target) {\n  for (var i = 1; i < arguments.length; i++) {\n    var source = arguments[i] != null ? arguments[i] : {};\n\n    if (i % 2) {\n      ownKeys(Object(source), true).forEach(function (key) {\n        _defineProperty(target, key, source[key]);\n      });\n    } else if (Object.getOwnPropertyDescriptors) {\n      Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n    } else {\n      ownKeys(Object(source)).forEach(function (key) {\n        Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n      });\n    }\n  }\n\n  return target;\n}\n\nfunction _getPrototypeOf(o) {\n  _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n    return o.__proto__ || Object.getPrototypeOf(o);\n  };\n  return _getPrototypeOf(o);\n}\n\nfunction _isNativeReflectConstruct() {\n  if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n  if (Reflect.construct.sham) return false;\n  if (typeof Proxy === \"function\") return true;\n\n  try {\n    Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));\n    return true;\n  } catch (e) {\n    return false;\n  }\n}\n\nfunction _assertThisInitialized(self) {\n  if (self === void 0) {\n    throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n  }\n\n  return self;\n}\n\nfunction _possibleConstructorReturn(self, call) {\n  if (call && (typeof call === \"object\" || typeof call === \"function\")) {\n    return call;\n  }\n\n  return _assertThisInitialized(self);\n}\n\nfunction _createSuper(Derived) {\n  var hasNativeReflectConstruct = _isNativeReflectConstruct();\n  return function _createSuperInternal() {\n    var Super = _getPrototypeOf(Derived),\n        result;\n\n    if (hasNativeReflectConstruct) {\n      var NewTarget = _getPrototypeOf(this).constructor;\n      result = Reflect.construct(Super, arguments, NewTarget);\n    } else {\n      result = Super.apply(this, arguments);\n    }\n\n    return _possibleConstructorReturn(this, result);\n  };\n}\n\nvar _excluded$3 = [\"className\", \"clearValue\", \"cx\", \"getStyles\", \"getValue\", \"hasValue\", \"isMulti\", \"isRtl\", \"options\", \"selectOption\", \"selectProps\", \"setValue\", \"theme\"];\n// ==============================\n// NO OP\n// ==============================\nvar noop = function noop() {};\n// Class Name Prefixer\n// ==============================\n\n/**\n String representation of component state for styling with class names.\n\n Expects an array of strings OR a string/object pair:\n - className(['comp', 'comp-arg', 'comp-arg-2'])\n   @returns 'react-select__comp react-select__comp-arg react-select__comp-arg-2'\n - className('comp', { some: true, state: false })\n   @returns 'react-select__comp react-select__comp--some'\n*/\n\nfunction applyPrefixToName(prefix, name) {\n  if (!name) {\n    return prefix;\n  } else if (name[0] === '-') {\n    return prefix + name;\n  } else {\n    return prefix + '__' + name;\n  }\n}\n\nfunction classNames(prefix, state, className) {\n  var arr = [className];\n\n  if (state && prefix) {\n    for (var key in state) {\n      if (state.hasOwnProperty(key) && state[key]) {\n        arr.push(\"\".concat(applyPrefixToName(prefix, key)));\n      }\n    }\n  }\n\n  return arr.filter(function (i) {\n    return i;\n  }).map(function (i) {\n    return String(i).trim();\n  }).join(' ');\n} // ==============================\n// Clean Value\n// ==============================\n\nvar cleanValue = function cleanValue(value) {\n  if (isArray(value)) return value.filter(Boolean);\n  if (_typeof(value) === 'object' && value !== null) return [value];\n  return [];\n}; // ==============================\n// Clean Common Props\n// ==============================\n\nvar cleanCommonProps = function cleanCommonProps(props) {\n  //className\n  props.className;\n      props.clearValue;\n      props.cx;\n      props.getStyles;\n      props.getValue;\n      props.hasValue;\n      props.isMulti;\n      props.isRtl;\n      props.options;\n      props.selectOption;\n      props.selectProps;\n      props.setValue;\n      props.theme;\n      var innerProps = _objectWithoutProperties(props, _excluded$3);\n\n  return _objectSpread2({}, innerProps);\n}; // ==============================\n// Handle Input Change\n// ==============================\n\nfunction handleInputChange(inputValue, actionMeta, onInputChange) {\n  if (onInputChange) {\n    var _newValue = onInputChange(inputValue, actionMeta);\n\n    if (typeof _newValue === 'string') return _newValue;\n  }\n\n  return inputValue;\n} // ==============================\n// Scroll Helpers\n// ==============================\n\nfunction isDocumentElement(el) {\n  return [document.documentElement, document.body, window].indexOf(el) > -1;\n} // Normalized Scroll Top\n// ------------------------------\n\nfunction normalizedHeight(el) {\n  if (isDocumentElement(el)) {\n    return window.innerHeight;\n  }\n\n  return el.clientHeight;\n} // Normalized scrollTo & scrollTop\n// ------------------------------\n\nfunction getScrollTop(el) {\n  if (isDocumentElement(el)) {\n    return window.pageYOffset;\n  }\n\n  return el.scrollTop;\n}\nfunction scrollTo(el, top) {\n  // with a scroll distance, we perform scroll on the element\n  if (isDocumentElement(el)) {\n    window.scrollTo(0, top);\n    return;\n  }\n\n  el.scrollTop = top;\n} // Get Scroll Parent\n// ------------------------------\n\nfunction getScrollParent(element) {\n  var style = getComputedStyle(element);\n  var excludeStaticParent = style.position === 'absolute';\n  var overflowRx = /(auto|scroll)/;\n  if (style.position === 'fixed') return document.documentElement;\n\n  for (var parent = element; parent = parent.parentElement;) {\n    style = getComputedStyle(parent);\n\n    if (excludeStaticParent && style.position === 'static') {\n      continue;\n    }\n\n    if (overflowRx.test(style.overflow + style.overflowY + style.overflowX)) {\n      return parent;\n    }\n  }\n\n  return document.documentElement;\n} // Animated Scroll To\n// ------------------------------\n\n/**\n  @param t: time (elapsed)\n  @param b: initial value\n  @param c: amount of change\n  @param d: duration\n*/\n\nfunction easeOutCubic(t, b, c, d) {\n  return c * ((t = t / d - 1) * t * t + 1) + b;\n}\n\nfunction animatedScrollTo(element, to) {\n  var duration = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 200;\n  var callback = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : noop;\n  var start = getScrollTop(element);\n  var change = to - start;\n  var increment = 10;\n  var currentTime = 0;\n\n  function animateScroll() {\n    currentTime += increment;\n    var val = easeOutCubic(currentTime, start, change, duration);\n    scrollTo(element, val);\n\n    if (currentTime < duration) {\n      window.requestAnimationFrame(animateScroll);\n    } else {\n      callback(element);\n    }\n  }\n\n  animateScroll();\n} // Scroll Into View\n// ------------------------------\n\nfunction scrollIntoView(menuEl, focusedEl) {\n  var menuRect = menuEl.getBoundingClientRect();\n  var focusedRect = focusedEl.getBoundingClientRect();\n  var overScroll = focusedEl.offsetHeight / 3;\n\n  if (focusedRect.bottom + overScroll > menuRect.bottom) {\n    scrollTo(menuEl, Math.min(focusedEl.offsetTop + focusedEl.clientHeight - menuEl.offsetHeight + overScroll, menuEl.scrollHeight));\n  } else if (focusedRect.top - overScroll < menuRect.top) {\n    scrollTo(menuEl, Math.max(focusedEl.offsetTop - overScroll, 0));\n  }\n} // ==============================\n// Get bounding client object\n// ==============================\n// cannot get keys using array notation with DOMRect\n\nfunction getBoundingClientObj(element) {\n  var rect = element.getBoundingClientRect();\n  return {\n    bottom: rect.bottom,\n    height: rect.height,\n    left: rect.left,\n    right: rect.right,\n    top: rect.top,\n    width: rect.width\n  };\n}\n// Touch Capability Detector\n// ==============================\n\nfunction isTouchCapable() {\n  try {\n    document.createEvent('TouchEvent');\n    return true;\n  } catch (e) {\n    return false;\n  }\n} // ==============================\n// Mobile Device Detector\n// ==============================\n\nfunction isMobileDevice() {\n  try {\n    return /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);\n  } catch (e) {\n    return false;\n  }\n} // ==============================\n// Passive Event Detector\n// ==============================\n// https://github.com/rafgraph/detect-it/blob/main/src/index.ts#L19-L36\n\nvar passiveOptionAccessed = false;\nvar options = {\n  get passive() {\n    return passiveOptionAccessed = true;\n  }\n\n}; // check for SSR\n\nvar w = typeof window !== 'undefined' ? window : {};\n\nif (w.addEventListener && w.removeEventListener) {\n  w.addEventListener('p', noop, options);\n  w.removeEventListener('p', noop, false);\n}\n\nvar supportsPassiveEvents = passiveOptionAccessed;\nfunction notNullish(item) {\n  return item != null;\n}\nfunction isArray(arg) {\n  return Array.isArray(arg);\n}\nfunction valueTernary(isMulti, multiValue, singleValue) {\n  return isMulti ? multiValue : singleValue;\n}\nfunction singleValueAsValue(singleValue) {\n  return singleValue;\n}\nfunction multiValueAsValue(multiValue) {\n  return multiValue;\n}\nvar removeProps = function removeProps(propsObj) {\n  for (var _len = arguments.length, properties = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n    properties[_key - 1] = arguments[_key];\n  }\n\n  var propsMap = Object.entries(propsObj).filter(function (_ref) {\n    var _ref2 = _slicedToArray(_ref, 1),\n        key = _ref2[0];\n\n    return !properties.includes(key);\n  });\n  return propsMap.reduce(function (newProps, _ref3) {\n    var _ref4 = _slicedToArray(_ref3, 2),\n        key = _ref4[0],\n        val = _ref4[1];\n\n    newProps[key] = val;\n    return newProps;\n  }, {});\n};\n\nfunction getMenuPlacement(_ref) {\n  var maxHeight = _ref.maxHeight,\n      menuEl = _ref.menuEl,\n      minHeight = _ref.minHeight,\n      placement = _ref.placement,\n      shouldScroll = _ref.shouldScroll,\n      isFixedPosition = _ref.isFixedPosition,\n      theme = _ref.theme;\n  var spacing = theme.spacing;\n  var scrollParent = getScrollParent(menuEl);\n  var defaultState = {\n    placement: 'bottom',\n    maxHeight: maxHeight\n  }; // something went wrong, return default state\n\n  if (!menuEl || !menuEl.offsetParent) return defaultState; // we can't trust `scrollParent.scrollHeight` --> it may increase when\n  // the menu is rendered\n\n  var _scrollParent$getBoun = scrollParent.getBoundingClientRect(),\n      scrollHeight = _scrollParent$getBoun.height;\n\n  var _menuEl$getBoundingCl = menuEl.getBoundingClientRect(),\n      menuBottom = _menuEl$getBoundingCl.bottom,\n      menuHeight = _menuEl$getBoundingCl.height,\n      menuTop = _menuEl$getBoundingCl.top;\n\n  var _menuEl$offsetParent$ = menuEl.offsetParent.getBoundingClientRect(),\n      containerTop = _menuEl$offsetParent$.top;\n\n  var viewHeight = isFixedPosition ? window.innerHeight : normalizedHeight(scrollParent);\n  var scrollTop = getScrollTop(scrollParent);\n  var marginBottom = parseInt(getComputedStyle(menuEl).marginBottom, 10);\n  var marginTop = parseInt(getComputedStyle(menuEl).marginTop, 10);\n  var viewSpaceAbove = containerTop - marginTop;\n  var viewSpaceBelow = viewHeight - menuTop;\n  var scrollSpaceAbove = viewSpaceAbove + scrollTop;\n  var scrollSpaceBelow = scrollHeight - scrollTop - menuTop;\n  var scrollDown = menuBottom - viewHeight + scrollTop + marginBottom;\n  var scrollUp = scrollTop + menuTop - marginTop;\n  var scrollDuration = 160;\n\n  switch (placement) {\n    case 'auto':\n    case 'bottom':\n      // 1: the menu will fit, do nothing\n      if (viewSpaceBelow >= menuHeight) {\n        return {\n          placement: 'bottom',\n          maxHeight: maxHeight\n        };\n      } // 2: the menu will fit, if scrolled\n\n\n      if (scrollSpaceBelow >= menuHeight && !isFixedPosition) {\n        if (shouldScroll) {\n          animatedScrollTo(scrollParent, scrollDown, scrollDuration);\n        }\n\n        return {\n          placement: 'bottom',\n          maxHeight: maxHeight\n        };\n      } // 3: the menu will fit, if constrained\n\n\n      if (!isFixedPosition && scrollSpaceBelow >= minHeight || isFixedPosition && viewSpaceBelow >= minHeight) {\n        if (shouldScroll) {\n          animatedScrollTo(scrollParent, scrollDown, scrollDuration);\n        } // we want to provide as much of the menu as possible to the user,\n        // so give them whatever is available below rather than the minHeight.\n\n\n        var constrainedHeight = isFixedPosition ? viewSpaceBelow - marginBottom : scrollSpaceBelow - marginBottom;\n        return {\n          placement: 'bottom',\n          maxHeight: constrainedHeight\n        };\n      } // 4. Forked beviour when there isn't enough space below\n      // AUTO: flip the menu, render above\n\n\n      if (placement === 'auto' || isFixedPosition) {\n        // may need to be constrained after flipping\n        var _constrainedHeight = maxHeight;\n        var spaceAbove = isFixedPosition ? viewSpaceAbove : scrollSpaceAbove;\n\n        if (spaceAbove >= minHeight) {\n          _constrainedHeight = Math.min(spaceAbove - marginBottom - spacing.controlHeight, maxHeight);\n        }\n\n        return {\n          placement: 'top',\n          maxHeight: _constrainedHeight\n        };\n      } // BOTTOM: allow browser to increase scrollable area and immediately set scroll\n\n\n      if (placement === 'bottom') {\n        if (shouldScroll) {\n          scrollTo(scrollParent, scrollDown);\n        }\n\n        return {\n          placement: 'bottom',\n          maxHeight: maxHeight\n        };\n      }\n\n      break;\n\n    case 'top':\n      // 1: the menu will fit, do nothing\n      if (viewSpaceAbove >= menuHeight) {\n        return {\n          placement: 'top',\n          maxHeight: maxHeight\n        };\n      } // 2: the menu will fit, if scrolled\n\n\n      if (scrollSpaceAbove >= menuHeight && !isFixedPosition) {\n        if (shouldScroll) {\n          animatedScrollTo(scrollParent, scrollUp, scrollDuration);\n        }\n\n        return {\n          placement: 'top',\n          maxHeight: maxHeight\n        };\n      } // 3: the menu will fit, if constrained\n\n\n      if (!isFixedPosition && scrollSpaceAbove >= minHeight || isFixedPosition && viewSpaceAbove >= minHeight) {\n        var _constrainedHeight2 = maxHeight; // we want to provide as much of the menu as possible to the user,\n        // so give them whatever is available below rather than the minHeight.\n\n        if (!isFixedPosition && scrollSpaceAbove >= minHeight || isFixedPosition && viewSpaceAbove >= minHeight) {\n          _constrainedHeight2 = isFixedPosition ? viewSpaceAbove - marginTop : scrollSpaceAbove - marginTop;\n        }\n\n        if (shouldScroll) {\n          animatedScrollTo(scrollParent, scrollUp, scrollDuration);\n        }\n\n        return {\n          placement: 'top',\n          maxHeight: _constrainedHeight2\n        };\n      } // 4. not enough space, the browser WILL NOT increase scrollable area when\n      // absolutely positioned element rendered above the viewport (only below).\n      // Flip the menu, render below\n\n\n      return {\n        placement: 'bottom',\n        maxHeight: maxHeight\n      };\n\n    default:\n      throw new Error(\"Invalid placement provided \\\"\".concat(placement, \"\\\".\"));\n  }\n\n  return defaultState;\n} // Menu Component\n// ------------------------------\n\nfunction alignToControl(placement) {\n  var placementToCSSProp = {\n    bottom: 'top',\n    top: 'bottom'\n  };\n  return placement ? placementToCSSProp[placement] : 'bottom';\n}\n\nvar coercePlacement = function coercePlacement(p) {\n  return p === 'auto' ? 'bottom' : p;\n};\n\nvar menuCSS = function menuCSS(_ref2) {\n  var _ref3;\n\n  var placement = _ref2.placement,\n      _ref2$theme = _ref2.theme,\n      borderRadius = _ref2$theme.borderRadius,\n      spacing = _ref2$theme.spacing,\n      colors = _ref2$theme.colors;\n  return _ref3 = {\n    label: 'menu'\n  }, _defineProperty$1(_ref3, alignToControl(placement), '100%'), _defineProperty$1(_ref3, \"backgroundColor\", colors.neutral0), _defineProperty$1(_ref3, \"borderRadius\", borderRadius), _defineProperty$1(_ref3, \"boxShadow\", '0 0 0 1px hsla(0, 0%, 0%, 0.1), 0 4px 11px hsla(0, 0%, 0%, 0.1)'), _defineProperty$1(_ref3, \"marginBottom\", spacing.menuGutter), _defineProperty$1(_ref3, \"marginTop\", spacing.menuGutter), _defineProperty$1(_ref3, \"position\", 'absolute'), _defineProperty$1(_ref3, \"width\", '100%'), _defineProperty$1(_ref3, \"zIndex\", 1), _ref3;\n};\nvar PortalPlacementContext = /*#__PURE__*/createContext({\n  getPortalPlacement: null\n}); // NOTE: internal only\n\nvar MenuPlacer = /*#__PURE__*/function (_Component) {\n  _inherits(MenuPlacer, _Component);\n\n  var _super = _createSuper(MenuPlacer);\n\n  function MenuPlacer() {\n    var _this;\n\n    _classCallCheck(this, MenuPlacer);\n\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    _this = _super.call.apply(_super, [this].concat(args));\n    _this.state = {\n      maxHeight: _this.props.maxMenuHeight,\n      placement: null\n    };\n    _this.context = void 0;\n\n    _this.getPlacement = function (ref) {\n      var _this$props = _this.props,\n          minMenuHeight = _this$props.minMenuHeight,\n          maxMenuHeight = _this$props.maxMenuHeight,\n          menuPlacement = _this$props.menuPlacement,\n          menuPosition = _this$props.menuPosition,\n          menuShouldScrollIntoView = _this$props.menuShouldScrollIntoView,\n          theme = _this$props.theme;\n      if (!ref) return; // DO NOT scroll if position is fixed\n\n      var isFixedPosition = menuPosition === 'fixed';\n      var shouldScroll = menuShouldScrollIntoView && !isFixedPosition;\n      var state = getMenuPlacement({\n        maxHeight: maxMenuHeight,\n        menuEl: ref,\n        minHeight: minMenuHeight,\n        placement: menuPlacement,\n        shouldScroll: shouldScroll,\n        isFixedPosition: isFixedPosition,\n        theme: theme\n      });\n      var getPortalPlacement = _this.context.getPortalPlacement;\n      if (getPortalPlacement) getPortalPlacement(state);\n\n      _this.setState(state);\n    };\n\n    _this.getUpdatedProps = function () {\n      var menuPlacement = _this.props.menuPlacement;\n      var placement = _this.state.placement || coercePlacement(menuPlacement);\n      return _objectSpread2(_objectSpread2({}, _this.props), {}, {\n        placement: placement,\n        maxHeight: _this.state.maxHeight\n      });\n    };\n\n    return _this;\n  }\n\n  _createClass(MenuPlacer, [{\n    key: \"render\",\n    value: function render() {\n      var children = this.props.children;\n      return children({\n        ref: this.getPlacement,\n        placerProps: this.getUpdatedProps()\n      });\n    }\n  }]);\n\n  return MenuPlacer;\n}(Component);\nMenuPlacer.contextType = PortalPlacementContext;\n\nvar Menu = function Menu(props) {\n  var children = props.children,\n      className = props.className,\n      cx = props.cx,\n      getStyles = props.getStyles,\n      innerRef = props.innerRef,\n      innerProps = props.innerProps;\n  return jsx(\"div\", _extends({\n    css: getStyles('menu', props),\n    className: cx({\n      menu: true\n    }, className),\n    ref: innerRef\n  }, innerProps), children);\n};\n// Menu List\n// ==============================\n\nvar menuListCSS = function menuListCSS(_ref4) {\n  var maxHeight = _ref4.maxHeight,\n      baseUnit = _ref4.theme.spacing.baseUnit;\n  return {\n    maxHeight: maxHeight,\n    overflowY: 'auto',\n    paddingBottom: baseUnit,\n    paddingTop: baseUnit,\n    position: 'relative',\n    // required for offset[Height, Top] > keyboard scroll\n    WebkitOverflowScrolling: 'touch'\n  };\n};\nvar MenuList = function MenuList(props) {\n  var children = props.children,\n      className = props.className,\n      cx = props.cx,\n      getStyles = props.getStyles,\n      innerProps = props.innerProps,\n      innerRef = props.innerRef,\n      isMulti = props.isMulti;\n  return jsx(\"div\", _extends({\n    css: getStyles('menuList', props),\n    className: cx({\n      'menu-list': true,\n      'menu-list--is-multi': isMulti\n    }, className),\n    ref: innerRef\n  }, innerProps), children);\n}; // ==============================\n// Menu Notices\n// ==============================\n\nvar noticeCSS = function noticeCSS(_ref5) {\n  var _ref5$theme = _ref5.theme,\n      baseUnit = _ref5$theme.spacing.baseUnit,\n      colors = _ref5$theme.colors;\n  return {\n    color: colors.neutral40,\n    padding: \"\".concat(baseUnit * 2, \"px \").concat(baseUnit * 3, \"px\"),\n    textAlign: 'center'\n  };\n};\n\nvar noOptionsMessageCSS = noticeCSS;\nvar loadingMessageCSS = noticeCSS;\nvar NoOptionsMessage = function NoOptionsMessage(props) {\n  var children = props.children,\n      className = props.className,\n      cx = props.cx,\n      getStyles = props.getStyles,\n      innerProps = props.innerProps;\n  return jsx(\"div\", _extends({\n    css: getStyles('noOptionsMessage', props),\n    className: cx({\n      'menu-notice': true,\n      'menu-notice--no-options': true\n    }, className)\n  }, innerProps), children);\n};\nNoOptionsMessage.defaultProps = {\n  children: 'No options'\n};\nvar LoadingMessage = function LoadingMessage(props) {\n  var children = props.children,\n      className = props.className,\n      cx = props.cx,\n      getStyles = props.getStyles,\n      innerProps = props.innerProps;\n  return jsx(\"div\", _extends({\n    css: getStyles('loadingMessage', props),\n    className: cx({\n      'menu-notice': true,\n      'menu-notice--loading': true\n    }, className)\n  }, innerProps), children);\n};\nLoadingMessage.defaultProps = {\n  children: 'Loading...'\n}; // ==============================\n// Menu Portal\n// ==============================\n\nvar menuPortalCSS = function menuPortalCSS(_ref6) {\n  var rect = _ref6.rect,\n      offset = _ref6.offset,\n      position = _ref6.position;\n  return {\n    left: rect.left,\n    position: position,\n    top: offset,\n    width: rect.width,\n    zIndex: 1\n  };\n};\nvar MenuPortal = /*#__PURE__*/function (_Component2) {\n  _inherits(MenuPortal, _Component2);\n\n  var _super2 = _createSuper(MenuPortal);\n\n  function MenuPortal() {\n    var _this2;\n\n    _classCallCheck(this, MenuPortal);\n\n    for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n      args[_key2] = arguments[_key2];\n    }\n\n    _this2 = _super2.call.apply(_super2, [this].concat(args));\n    _this2.state = {\n      placement: null\n    };\n\n    _this2.getPortalPlacement = function (_ref7) {\n      var placement = _ref7.placement;\n      var initialPlacement = coercePlacement(_this2.props.menuPlacement); // avoid re-renders if the placement has not changed\n\n      if (placement !== initialPlacement) {\n        _this2.setState({\n          placement: placement\n        });\n      }\n    };\n\n    return _this2;\n  }\n\n  _createClass(MenuPortal, [{\n    key: \"render\",\n    value: function render() {\n      var _this$props2 = this.props,\n          appendTo = _this$props2.appendTo,\n          children = _this$props2.children,\n          className = _this$props2.className,\n          controlElement = _this$props2.controlElement,\n          cx = _this$props2.cx,\n          innerProps = _this$props2.innerProps,\n          menuPlacement = _this$props2.menuPlacement,\n          position = _this$props2.menuPosition,\n          getStyles = _this$props2.getStyles;\n      var isFixed = position === 'fixed'; // bail early if required elements aren't present\n\n      if (!appendTo && !isFixed || !controlElement) {\n        return null;\n      }\n\n      var placement = this.state.placement || coercePlacement(menuPlacement);\n      var rect = getBoundingClientObj(controlElement);\n      var scrollDistance = isFixed ? 0 : window.pageYOffset;\n      var offset = rect[placement] + scrollDistance;\n      var state = {\n        offset: offset,\n        position: position,\n        rect: rect\n      }; // same wrapper element whether fixed or portalled\n\n      var menuWrapper = jsx(\"div\", _extends({\n        css: getStyles('menuPortal', state),\n        className: cx({\n          'menu-portal': true\n        }, className)\n      }, innerProps), children);\n      return jsx(PortalPlacementContext.Provider, {\n        value: {\n          getPortalPlacement: this.getPortalPlacement\n        }\n      }, appendTo ? /*#__PURE__*/createPortal(menuWrapper, appendTo) : menuWrapper);\n    }\n  }]);\n\n  return MenuPortal;\n}(Component);\n\nvar containerCSS = function containerCSS(_ref) {\n  var isDisabled = _ref.isDisabled,\n      isRtl = _ref.isRtl;\n  return {\n    label: 'container',\n    direction: isRtl ? 'rtl' : undefined,\n    pointerEvents: isDisabled ? 'none' : undefined,\n    // cancel mouse events when disabled\n    position: 'relative'\n  };\n};\nvar SelectContainer = function SelectContainer(props) {\n  var children = props.children,\n      className = props.className,\n      cx = props.cx,\n      getStyles = props.getStyles,\n      innerProps = props.innerProps,\n      isDisabled = props.isDisabled,\n      isRtl = props.isRtl;\n  return jsx(\"div\", _extends({\n    css: getStyles('container', props),\n    className: cx({\n      '--is-disabled': isDisabled,\n      '--is-rtl': isRtl\n    }, className)\n  }, innerProps), children);\n}; // ==============================\n// Value Container\n// ==============================\n\nvar valueContainerCSS = function valueContainerCSS(_ref2) {\n  var spacing = _ref2.theme.spacing,\n      isMulti = _ref2.isMulti,\n      hasValue = _ref2.hasValue,\n      controlShouldRenderValue = _ref2.selectProps.controlShouldRenderValue;\n  return {\n    alignItems: 'center',\n    display: isMulti && hasValue && controlShouldRenderValue ? 'flex' : 'grid',\n    flex: 1,\n    flexWrap: 'wrap',\n    padding: \"\".concat(spacing.baseUnit / 2, \"px \").concat(spacing.baseUnit * 2, \"px\"),\n    WebkitOverflowScrolling: 'touch',\n    position: 'relative',\n    overflow: 'hidden'\n  };\n};\nvar ValueContainer = function ValueContainer(props) {\n  var children = props.children,\n      className = props.className,\n      cx = props.cx,\n      innerProps = props.innerProps,\n      isMulti = props.isMulti,\n      getStyles = props.getStyles,\n      hasValue = props.hasValue;\n  return jsx(\"div\", _extends({\n    css: getStyles('valueContainer', props),\n    className: cx({\n      'value-container': true,\n      'value-container--is-multi': isMulti,\n      'value-container--has-value': hasValue\n    }, className)\n  }, innerProps), children);\n}; // ==============================\n// Indicator Container\n// ==============================\n\nvar indicatorsContainerCSS = function indicatorsContainerCSS() {\n  return {\n    alignItems: 'center',\n    alignSelf: 'stretch',\n    display: 'flex',\n    flexShrink: 0\n  };\n};\nvar IndicatorsContainer = function IndicatorsContainer(props) {\n  var children = props.children,\n      className = props.className,\n      cx = props.cx,\n      innerProps = props.innerProps,\n      getStyles = props.getStyles;\n  return jsx(\"div\", _extends({\n    css: getStyles('indicatorsContainer', props),\n    className: cx({\n      indicators: true\n    }, className)\n  }, innerProps), children);\n};\n\nvar _templateObject;\n\nvar _excluded$2 = [\"size\"];\n\nfunction _EMOTION_STRINGIFIED_CSS_ERROR__() { return \"You have tried to stringify object returned from `css` function. It isn't supposed to be used directly (e.g. as value of the `className` prop), but rather handed to emotion so it can handle it (e.g. as value of `css` prop).\"; }\n\nvar _ref2 = process.env.NODE_ENV === \"production\" ? {\n  name: \"8mmkcg\",\n  styles: \"display:inline-block;fill:currentColor;line-height:1;stroke:currentColor;stroke-width:0\"\n} : {\n  name: \"tj5bde-Svg\",\n  styles: \"display:inline-block;fill:currentColor;line-height:1;stroke:currentColor;stroke-width:0;label:Svg;\",\n  map: \"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImluZGljYXRvcnMudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQXdCSSIsImZpbGUiOiJpbmRpY2F0b3JzLnRzeCIsInNvdXJjZXNDb250ZW50IjpbIi8qKiBAanN4IGpzeCAqL1xuaW1wb3J0IHsgUmVhY3ROb2RlIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsganN4LCBrZXlmcmFtZXMgfSBmcm9tICdAZW1vdGlvbi9yZWFjdCc7XG5cbmltcG9ydCB7XG4gIENvbW1vblByb3BzQW5kQ2xhc3NOYW1lLFxuICBDU1NPYmplY3RXaXRoTGFiZWwsXG4gIEdyb3VwQmFzZSxcbn0gZnJvbSAnLi4vdHlwZXMnO1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIERyb3Bkb3duICYgQ2xlYXIgSWNvbnNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5jb25zdCBTdmcgPSAoe1xuICBzaXplLFxuICAuLi5wcm9wc1xufTogSlNYLkludHJpbnNpY0VsZW1lbnRzWydzdmcnXSAmIHsgc2l6ZTogbnVtYmVyIH0pID0+IChcbiAgPHN2Z1xuICAgIGhlaWdodD17c2l6ZX1cbiAgICB3aWR0aD17c2l6ZX1cbiAgICB2aWV3Qm94PVwiMCAwIDIwIDIwXCJcbiAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgIGZvY3VzYWJsZT1cImZhbHNlXCJcbiAgICBjc3M9e3tcbiAgICAgIGRpc3BsYXk6ICdpbmxpbmUtYmxvY2snLFxuICAgICAgZmlsbDogJ2N1cnJlbnRDb2xvcicsXG4gICAgICBsaW5lSGVpZ2h0OiAxLFxuICAgICAgc3Ryb2tlOiAnY3VycmVudENvbG9yJyxcbiAgICAgIHN0cm9rZVdpZHRoOiAwLFxuICAgIH19XG4gICAgey4uLnByb3BzfVxuICAvPlxuKTtcblxuZXhwb3J0IHR5cGUgQ3Jvc3NJY29uUHJvcHMgPSBKU1guSW50cmluc2ljRWxlbWVudHNbJ3N2ZyddICYgeyBzaXplPzogbnVtYmVyIH07XG5leHBvcnQgY29uc3QgQ3Jvc3NJY29uID0gKHByb3BzOiBDcm9zc0ljb25Qcm9wcykgPT4gKFxuICA8U3ZnIHNpemU9ezIwfSB7Li4ucHJvcHN9PlxuICAgIDxwYXRoIGQ9XCJNMTQuMzQ4IDE0Ljg0OWMtMC40NjkgMC40NjktMS4yMjkgMC40NjktMS42OTcgMGwtMi42NTEtMy4wMzAtMi42NTEgMy4wMjljLTAuNDY5IDAuNDY5LTEuMjI5IDAuNDY5LTEuNjk3IDAtMC40NjktMC40NjktMC40NjktMS4yMjkgMC0xLjY5N2wyLjc1OC0zLjE1LTIuNzU5LTMuMTUyYy0wLjQ2OS0wLjQ2OS0wLjQ2OS0xLjIyOCAwLTEuNjk3czEuMjI4LTAuNDY5IDEuNjk3IDBsMi42NTIgMy4wMzEgMi42NTEtMy4wMzFjMC40NjktMC40NjkgMS4yMjgtMC40NjkgMS42OTcgMHMwLjQ2OSAxLjIyOSAwIDEuNjk3bC0yLjc1OCAzLjE1MiAyLjc1OCAzLjE1YzAuNDY5IDAuNDY5IDAuNDY5IDEuMjI5IDAgMS42OTh6XCIgLz5cbiAgPC9Tdmc+XG4pO1xuZXhwb3J0IHR5cGUgRG93bkNoZXZyb25Qcm9wcyA9IEpTWC5JbnRyaW5zaWNFbGVtZW50c1snc3ZnJ10gJiB7IHNpemU/OiBudW1iZXIgfTtcbmV4cG9ydCBjb25zdCBEb3duQ2hldnJvbiA9IChwcm9wczogRG93bkNoZXZyb25Qcm9wcykgPT4gKFxuICA8U3ZnIHNpemU9ezIwfSB7Li4ucHJvcHN9PlxuICAgIDxwYXRoIGQ9XCJNNC41MTYgNy41NDhjMC40MzYtMC40NDYgMS4wNDMtMC40ODEgMS41NzYgMGwzLjkwOCAzLjc0NyAzLjkwOC0zLjc0N2MwLjUzMy0wLjQ4MSAxLjE0MS0wLjQ0NiAxLjU3NCAwIDAuNDM2IDAuNDQ1IDAuNDA4IDEuMTk3IDAgMS42MTUtMC40MDYgMC40MTgtNC42OTUgNC41MDItNC42OTUgNC41MDItMC4yMTcgMC4yMjMtMC41MDIgMC4zMzUtMC43ODcgMC4zMzVzLTAuNTctMC4xMTItMC43ODktMC4zMzVjMCAwLTQuMjg3LTQuMDg0LTQuNjk1LTQuNTAycy0wLjQzNi0xLjE3IDAtMS42MTV6XCIgLz5cbiAgPC9Tdmc+XG4pO1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIERyb3Bkb3duICYgQ2xlYXIgQnV0dG9uc1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbmV4cG9ydCBpbnRlcmZhY2UgRHJvcGRvd25JbmRpY2F0b3JQcm9wczxcbiAgT3B0aW9uID0gdW5rbm93bixcbiAgSXNNdWx0aSBleHRlbmRzIGJvb2xlYW4gPSBib29sZWFuLFxuICBHcm91cCBleHRlbmRzIEdyb3VwQmFzZTxPcHRpb24+ID0gR3JvdXBCYXNlPE9wdGlvbj5cbj4gZXh0ZW5kcyBDb21tb25Qcm9wc0FuZENsYXNzTmFtZTxPcHRpb24sIElzTXVsdGksIEdyb3VwPiB7XG4gIC8qKiBUaGUgY2hpbGRyZW4gdG8gYmUgcmVuZGVyZWQgaW5zaWRlIHRoZSBpbmRpY2F0b3IuICovXG4gIGNoaWxkcmVuPzogUmVhY3ROb2RlO1xuICAvKiogUHJvcHMgdGhhdCB3aWxsIGJlIHBhc3NlZCBvbiB0byB0aGUgY2hpbGRyZW4uICovXG4gIGlubmVyUHJvcHM6IEpTWC5JbnRyaW5zaWNFbGVtZW50c1snZGl2J107XG4gIC8qKiBUaGUgZm9jdXNlZCBzdGF0ZSBvZiB0aGUgc2VsZWN0LiAqL1xuICBpc0ZvY3VzZWQ6IGJvb2xlYW47XG4gIGlzRGlzYWJsZWQ6IGJvb2xlYW47XG59XG5cbmNvbnN0IGJhc2VDU1MgPSA8XG4gIE9wdGlvbixcbiAgSXNNdWx0aSBleHRlbmRzIGJvb2xlYW4sXG4gIEdyb3VwIGV4dGVuZHMgR3JvdXBCYXNlPE9wdGlvbj5cbj4oe1xuICBpc0ZvY3VzZWQsXG4gIHRoZW1lOiB7XG4gICAgc3BhY2luZzogeyBiYXNlVW5pdCB9LFxuICAgIGNvbG9ycyxcbiAgfSxcbn06XG4gIHwgRHJvcGRvd25JbmRpY2F0b3JQcm9wczxPcHRpb24sIElzTXVsdGksIEdyb3VwPlxuICB8IENsZWFySW5kaWNhdG9yUHJvcHM8T3B0aW9uLCBJc011bHRpLCBHcm91cD4pOiBDU1NPYmplY3RXaXRoTGFiZWwgPT4gKHtcbiAgbGFiZWw6ICdpbmRpY2F0b3JDb250YWluZXInLFxuICBjb2xvcjogaXNGb2N1c2VkID8gY29sb3JzLm5ldXRyYWw2MCA6IGNvbG9ycy5uZXV0cmFsMjAsXG4gIGRpc3BsYXk6ICdmbGV4JyxcbiAgcGFkZGluZzogYmFzZVVuaXQgKiAyLFxuICB0cmFuc2l0aW9uOiAnY29sb3IgMTUwbXMnLFxuXG4gICc6aG92ZXInOiB7XG4gICAgY29sb3I6IGlzRm9jdXNlZCA/IGNvbG9ycy5uZXV0cmFsODAgOiBjb2xvcnMubmV1dHJhbDQwLFxuICB9LFxufSk7XG5cbmV4cG9ydCBjb25zdCBkcm9wZG93bkluZGljYXRvckNTUyA9IGJhc2VDU1M7XG5leHBvcnQgY29uc3QgRHJvcGRvd25JbmRpY2F0b3IgPSA8XG4gIE9wdGlvbixcbiAgSXNNdWx0aSBleHRlbmRzIGJvb2xlYW4sXG4gIEdyb3VwIGV4dGVuZHMgR3JvdXBCYXNlPE9wdGlvbj5cbj4oXG4gIHByb3BzOiBEcm9wZG93bkluZGljYXRvclByb3BzPE9wdGlvbiwgSXNNdWx0aSwgR3JvdXA+XG4pID0+IHtcbiAgY29uc3QgeyBjaGlsZHJlbiwgY2xhc3NOYW1lLCBjeCwgZ2V0U3R5bGVzLCBpbm5lclByb3BzIH0gPSBwcm9wcztcbiAgcmV0dXJuIChcbiAgICA8ZGl2XG4gICAgICBjc3M9e2dldFN0eWxlcygnZHJvcGRvd25JbmRpY2F0b3InLCBwcm9wcyl9XG4gICAgICBjbGFzc05hbWU9e2N4KFxuICAgICAgICB7XG4gICAgICAgICAgaW5kaWNhdG9yOiB0cnVlLFxuICAgICAgICAgICdkcm9wZG93bi1pbmRpY2F0b3InOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBjbGFzc05hbWVcbiAgICAgICl9XG4gICAgICB7Li4uaW5uZXJQcm9wc31cbiAgICA+XG4gICAgICB7Y2hpbGRyZW4gfHwgPERvd25DaGV2cm9uIC8+fVxuICAgIDwvZGl2PlxuICApO1xufTtcblxuZXhwb3J0IGludGVyZmFjZSBDbGVhckluZGljYXRvclByb3BzPFxuICBPcHRpb24gPSB1bmtub3duLFxuICBJc011bHRpIGV4dGVuZHMgYm9vbGVhbiA9IGJvb2xlYW4sXG4gIEdyb3VwIGV4dGVuZHMgR3JvdXBCYXNlPE9wdGlvbj4gPSBHcm91cEJhc2U8T3B0aW9uPlxuPiBleHRlbmRzIENvbW1vblByb3BzQW5kQ2xhc3NOYW1lPE9wdGlvbiwgSXNNdWx0aSwgR3JvdXA+IHtcbiAgLyoqIFRoZSBjaGlsZHJlbiB0byBiZSByZW5kZXJlZCBpbnNpZGUgdGhlIGluZGljYXRvci4gKi9cbiAgY2hpbGRyZW4/OiBSZWFjdE5vZGU7XG4gIC8qKiBQcm9wcyB0aGF0IHdpbGwgYmUgcGFzc2VkIG9uIHRvIHRoZSBjaGlsZHJlbi4gKi9cbiAgaW5uZXJQcm9wczogSlNYLkludHJpbnNpY0VsZW1lbnRzWydkaXYnXTtcbiAgLyoqIFRoZSBmb2N1c2VkIHN0YXRlIG9mIHRoZSBzZWxlY3QuICovXG4gIGlzRm9jdXNlZDogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGNvbnN0IGNsZWFySW5kaWNhdG9yQ1NTID0gYmFzZUNTUztcbmV4cG9ydCBjb25zdCBDbGVhckluZGljYXRvciA9IDxcbiAgT3B0aW9uLFxuICBJc011bHRpIGV4dGVuZHMgYm9vbGVhbixcbiAgR3JvdXAgZXh0ZW5kcyBHcm91cEJhc2U8T3B0aW9uPlxuPihcbiAgcHJvcHM6IENsZWFySW5kaWNhdG9yUHJvcHM8T3B0aW9uLCBJc011bHRpLCBHcm91cD5cbikgPT4ge1xuICBjb25zdCB7IGNoaWxkcmVuLCBjbGFzc05hbWUsIGN4LCBnZXRTdHlsZXMsIGlubmVyUHJvcHMgfSA9IHByb3BzO1xuICByZXR1cm4gKFxuICAgIDxkaXZcbiAgICAgIGNzcz17Z2V0U3R5bGVzKCdjbGVhckluZGljYXRvcicsIHByb3BzKX1cbiAgICAgIGNsYXNzTmFtZT17Y3goXG4gICAgICAgIHtcbiAgICAgICAgICBpbmRpY2F0b3I6IHRydWUsXG4gICAgICAgICAgJ2NsZWFyLWluZGljYXRvcic6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIGNsYXNzTmFtZVxuICAgICAgKX1cbiAgICAgIHsuLi5pbm5lclByb3BzfVxuICAgID5cbiAgICAgIHtjaGlsZHJlbiB8fCA8Q3Jvc3NJY29uIC8+fVxuICAgIDwvZGl2PlxuICApO1xufTtcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBTZXBhcmF0b3Jcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5leHBvcnQgaW50ZXJmYWNlIEluZGljYXRvclNlcGFyYXRvclByb3BzPFxuICBPcHRpb24gPSB1bmtub3duLFxuICBJc011bHRpIGV4dGVuZHMgYm9vbGVhbiA9IGJvb2xlYW4sXG4gIEdyb3VwIGV4dGVuZHMgR3JvdXBCYXNlPE9wdGlvbj4gPSBHcm91cEJhc2U8T3B0aW9uPlxuPiBleHRlbmRzIENvbW1vblByb3BzQW5kQ2xhc3NOYW1lPE9wdGlvbiwgSXNNdWx0aSwgR3JvdXA+IHtcbiAgaXNEaXNhYmxlZDogYm9vbGVhbjtcbiAgaXNGb2N1c2VkOiBib29sZWFuO1xuICBpbm5lclByb3BzPzogSlNYLkludHJpbnNpY0VsZW1lbnRzWydzcGFuJ107XG59XG5cbmV4cG9ydCBjb25zdCBpbmRpY2F0b3JTZXBhcmF0b3JDU1MgPSA8XG4gIE9wdGlvbixcbiAgSXNNdWx0aSBleHRlbmRzIGJvb2xlYW4sXG4gIEdyb3VwIGV4dGVuZHMgR3JvdXBCYXNlPE9wdGlvbj5cbj4oe1xuICBpc0Rpc2FibGVkLFxuICB0aGVtZToge1xuICAgIHNwYWNpbmc6IHsgYmFzZVVuaXQgfSxcbiAgICBjb2xvcnMsXG4gIH0sXG59OiBJbmRpY2F0b3JTZXBhcmF0b3JQcm9wczxPcHRpb24sIElzTXVsdGksIEdyb3VwPik6IENTU09iamVjdFdpdGhMYWJlbCA9PiAoe1xuICBsYWJlbDogJ2luZGljYXRvclNlcGFyYXRvcicsXG4gIGFsaWduU2VsZjogJ3N0cmV0Y2gnLFxuICBiYWNrZ3JvdW5kQ29sb3I6IGlzRGlzYWJsZWQgPyBjb2xvcnMubmV1dHJhbDEwIDogY29sb3JzLm5ldXRyYWwyMCxcbiAgbWFyZ2luQm90dG9tOiBiYXNlVW5pdCAqIDIsXG4gIG1hcmdpblRvcDogYmFzZVVuaXQgKiAyLFxuICB3aWR0aDogMSxcbn0pO1xuXG5leHBvcnQgY29uc3QgSW5kaWNhdG9yU2VwYXJhdG9yID0gPFxuICBPcHRpb24sXG4gIElzTXVsdGkgZXh0ZW5kcyBib29sZWFuLFxuICBHcm91cCBleHRlbmRzIEdyb3VwQmFzZTxPcHRpb24+XG4+KFxuICBwcm9wczogSW5kaWNhdG9yU2VwYXJhdG9yUHJvcHM8T3B0aW9uLCBJc011bHRpLCBHcm91cD5cbikgPT4ge1xuICBjb25zdCB7IGNsYXNzTmFtZSwgY3gsIGdldFN0eWxlcywgaW5uZXJQcm9wcyB9ID0gcHJvcHM7XG4gIHJldHVybiAoXG4gICAgPHNwYW5cbiAgICAgIHsuLi5pbm5lclByb3BzfVxuICAgICAgY3NzPXtnZXRTdHlsZXMoJ2luZGljYXRvclNlcGFyYXRvcicsIHByb3BzKX1cbiAgICAgIGNsYXNzTmFtZT17Y3goeyAnaW5kaWNhdG9yLXNlcGFyYXRvcic6IHRydWUgfSwgY2xhc3NOYW1lKX1cbiAgICAvPlxuICApO1xufTtcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBMb2FkaW5nXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuY29uc3QgbG9hZGluZ0RvdEFuaW1hdGlvbnMgPSBrZXlmcmFtZXNgXG4gIDAlLCA4MCUsIDEwMCUgeyBvcGFjaXR5OiAwOyB9XG4gIDQwJSB7IG9wYWNpdHk6IDE7IH1cbmA7XG5cbmV4cG9ydCBjb25zdCBsb2FkaW5nSW5kaWNhdG9yQ1NTID0gPFxuICBPcHRpb24sXG4gIElzTXVsdGkgZXh0ZW5kcyBib29sZWFuLFxuICBHcm91cCBleHRlbmRzIEdyb3VwQmFzZTxPcHRpb24+XG4+KHtcbiAgaXNGb2N1c2VkLFxuICBzaXplLFxuICB0aGVtZToge1xuICAgIGNvbG9ycyxcbiAgICBzcGFjaW5nOiB7IGJhc2VVbml0IH0sXG4gIH0sXG59OiBMb2FkaW5nSW5kaWNhdG9yUHJvcHM8T3B0aW9uLCBJc011bHRpLCBHcm91cD4pOiBDU1NPYmplY3RXaXRoTGFiZWwgPT4gKHtcbiAgbGFiZWw6ICdsb2FkaW5nSW5kaWNhdG9yJyxcbiAgY29sb3I6IGlzRm9jdXNlZCA/IGNvbG9ycy5uZXV0cmFsNjAgOiBjb2xvcnMubmV1dHJhbDIwLFxuICBkaXNwbGF5OiAnZmxleCcsXG4gIHBhZGRpbmc6IGJhc2VVbml0ICogMixcbiAgdHJhbnNpdGlvbjogJ2NvbG9yIDE1MG1zJyxcbiAgYWxpZ25TZWxmOiAnY2VudGVyJyxcbiAgZm9udFNpemU6IHNpemUsXG4gIGxpbmVIZWlnaHQ6IDEsXG4gIG1hcmdpblJpZ2h0OiBzaXplLFxuICB0ZXh0QWxpZ246ICdjZW50ZXInLFxuICB2ZXJ0aWNhbEFsaWduOiAnbWlkZGxlJyxcbn0pO1xuXG5pbnRlcmZhY2UgTG9hZGluZ0RvdFByb3BzIHtcbiAgZGVsYXk6IG51bWJlcjtcbiAgb2Zmc2V0OiBib29sZWFuO1xufVxuY29uc3QgTG9hZGluZ0RvdCA9ICh7IGRlbGF5LCBvZmZzZXQgfTogTG9hZGluZ0RvdFByb3BzKSA9PiAoXG4gIDxzcGFuXG4gICAgY3NzPXt7XG4gICAgICBhbmltYXRpb246IGAke2xvYWRpbmdEb3RBbmltYXRpb25zfSAxcyBlYXNlLWluLW91dCAke2RlbGF5fW1zIGluZmluaXRlO2AsXG4gICAgICBiYWNrZ3JvdW5kQ29sb3I6ICdjdXJyZW50Q29sb3InLFxuICAgICAgYm9yZGVyUmFkaXVzOiAnMWVtJyxcbiAgICAgIGRpc3BsYXk6ICdpbmxpbmUtYmxvY2snLFxuICAgICAgbWFyZ2luTGVmdDogb2Zmc2V0ID8gJzFlbScgOiB1bmRlZmluZWQsXG4gICAgICBoZWlnaHQ6ICcxZW0nLFxuICAgICAgdmVydGljYWxBbGlnbjogJ3RvcCcsXG4gICAgICB3aWR0aDogJzFlbScsXG4gICAgfX1cbiAgLz5cbik7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTG9hZGluZ0luZGljYXRvclByb3BzPFxuICBPcHRpb24gPSB1bmtub3duLFxuICBJc011bHRpIGV4dGVuZHMgYm9vbGVhbiA9IGJvb2xlYW4sXG4gIEdyb3VwIGV4dGVuZHMgR3JvdXBCYXNlPE9wdGlvbj4gPSBHcm91cEJhc2U8T3B0aW9uPlxuPiBleHRlbmRzIENvbW1vblByb3BzQW5kQ2xhc3NOYW1lPE9wdGlvbiwgSXNNdWx0aSwgR3JvdXA+IHtcbiAgLyoqIFByb3BzIHRoYXQgd2lsbCBiZSBwYXNzZWQgb24gdG8gdGhlIGNoaWxkcmVuLiAqL1xuICBpbm5lclByb3BzOiBKU1guSW50cmluc2ljRWxlbWVudHNbJ2RpdiddO1xuICAvKiogVGhlIGZvY3VzZWQgc3RhdGUgb2YgdGhlIHNlbGVjdC4gKi9cbiAgaXNGb2N1c2VkOiBib29sZWFuO1xuICBpc0Rpc2FibGVkOiBib29sZWFuO1xuICAvKiogU2V0IHNpemUgb2YgdGhlIGNvbnRhaW5lci4gKi9cbiAgc2l6ZTogbnVtYmVyO1xufVxuZXhwb3J0IGNvbnN0IExvYWRpbmdJbmRpY2F0b3IgPSA8XG4gIE9wdGlvbixcbiAgSXNNdWx0aSBleHRlbmRzIGJvb2xlYW4sXG4gIEdyb3VwIGV4dGVuZHMgR3JvdXBCYXNlPE9wdGlvbj5cbj4oXG4gIHByb3BzOiBMb2FkaW5nSW5kaWNhdG9yUHJvcHM8T3B0aW9uLCBJc011bHRpLCBHcm91cD5cbikgPT4ge1xuICBjb25zdCB7IGNsYXNzTmFtZSwgY3gsIGdldFN0eWxlcywgaW5uZXJQcm9wcywgaXNSdGwgfSA9IHByb3BzO1xuXG4gIHJldHVybiAoXG4gICAgPGRpdlxuICAgICAgY3NzPXtnZXRTdHlsZXMoJ2xvYWRpbmdJbmRpY2F0b3InLCBwcm9wcyl9XG4gICAgICBjbGFzc05hbWU9e2N4KFxuICAgICAgICB7XG4gICAgICAgICAgaW5kaWNhdG9yOiB0cnVlLFxuICAgICAgICAgICdsb2FkaW5nLWluZGljYXRvcic6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIGNsYXNzTmFtZVxuICAgICAgKX1cbiAgICAgIHsuLi5pbm5lclByb3BzfVxuICAgID5cbiAgICAgIDxMb2FkaW5nRG90IGRlbGF5PXswfSBvZmZzZXQ9e2lzUnRsfSAvPlxuICAgICAgPExvYWRpbmdEb3QgZGVsYXk9ezE2MH0gb2Zmc2V0IC8+XG4gICAgICA8TG9hZGluZ0RvdCBkZWxheT17MzIwfSBvZmZzZXQ9eyFpc1J0bH0gLz5cbiAgICA8L2Rpdj5cbiAgKTtcbn07XG5Mb2FkaW5nSW5kaWNhdG9yLmRlZmF1bHRQcm9wcyA9IHsgc2l6ZTogNCB9O1xuIl19 */\",\n  toString: _EMOTION_STRINGIFIED_CSS_ERROR__\n};\n\n// ==============================\n// Dropdown & Clear Icons\n// ==============================\nvar Svg = function Svg(_ref) {\n  var size = _ref.size,\n      props = _objectWithoutProperties(_ref, _excluded$2);\n\n  return jsx(\"svg\", _extends({\n    height: size,\n    width: size,\n    viewBox: \"0 0 20 20\",\n    \"aria-hidden\": \"true\",\n    focusable: \"false\",\n    css: _ref2\n  }, props));\n};\n\nvar CrossIcon = function CrossIcon(props) {\n  return jsx(Svg, _extends({\n    size: 20\n  }, props), jsx(\"path\", {\n    d: \"M14.348 14.849c-0.469 0.469-1.229 0.469-1.697 0l-2.651-3.030-2.651 3.029c-0.469 0.469-1.229 0.469-1.697 0-0.469-0.469-0.469-1.229 0-1.697l2.758-3.15-2.759-3.152c-0.469-0.469-0.469-1.228 0-1.697s1.228-0.469 1.697 0l2.652 3.031 2.651-3.031c0.469-0.469 1.228-0.469 1.697 0s0.469 1.229 0 1.697l-2.758 3.152 2.758 3.15c0.469 0.469 0.469 1.229 0 1.698z\"\n  }));\n};\nvar DownChevron = function DownChevron(props) {\n  return jsx(Svg, _extends({\n    size: 20\n  }, props), jsx(\"path\", {\n    d: \"M4.516 7.548c0.436-0.446 1.043-0.481 1.576 0l3.908 3.747 3.908-3.747c0.533-0.481 1.141-0.446 1.574 0 0.436 0.445 0.408 1.197 0 1.615-0.406 0.418-4.695 4.502-4.695 4.502-0.217 0.223-0.502 0.335-0.787 0.335s-0.57-0.112-0.789-0.335c0 0-4.287-4.084-4.695-4.502s-0.436-1.17 0-1.615z\"\n  }));\n}; // ==============================\n// Dropdown & Clear Buttons\n// ==============================\n\nvar baseCSS = function baseCSS(_ref3) {\n  var isFocused = _ref3.isFocused,\n      _ref3$theme = _ref3.theme,\n      baseUnit = _ref3$theme.spacing.baseUnit,\n      colors = _ref3$theme.colors;\n  return {\n    label: 'indicatorContainer',\n    color: isFocused ? colors.neutral60 : colors.neutral20,\n    display: 'flex',\n    padding: baseUnit * 2,\n    transition: 'color 150ms',\n    ':hover': {\n      color: isFocused ? colors.neutral80 : colors.neutral40\n    }\n  };\n};\n\nvar dropdownIndicatorCSS = baseCSS;\nvar DropdownIndicator = function DropdownIndicator(props) {\n  var children = props.children,\n      className = props.className,\n      cx = props.cx,\n      getStyles = props.getStyles,\n      innerProps = props.innerProps;\n  return jsx(\"div\", _extends({\n    css: getStyles('dropdownIndicator', props),\n    className: cx({\n      indicator: true,\n      'dropdown-indicator': true\n    }, className)\n  }, innerProps), children || jsx(DownChevron, null));\n};\nvar clearIndicatorCSS = baseCSS;\nvar ClearIndicator = function ClearIndicator(props) {\n  var children = props.children,\n      className = props.className,\n      cx = props.cx,\n      getStyles = props.getStyles,\n      innerProps = props.innerProps;\n  return jsx(\"div\", _extends({\n    css: getStyles('clearIndicator', props),\n    className: cx({\n      indicator: true,\n      'clear-indicator': true\n    }, className)\n  }, innerProps), children || jsx(CrossIcon, null));\n}; // ==============================\n// Separator\n// ==============================\n\nvar indicatorSeparatorCSS = function indicatorSeparatorCSS(_ref4) {\n  var isDisabled = _ref4.isDisabled,\n      _ref4$theme = _ref4.theme,\n      baseUnit = _ref4$theme.spacing.baseUnit,\n      colors = _ref4$theme.colors;\n  return {\n    label: 'indicatorSeparator',\n    alignSelf: 'stretch',\n    backgroundColor: isDisabled ? colors.neutral10 : colors.neutral20,\n    marginBottom: baseUnit * 2,\n    marginTop: baseUnit * 2,\n    width: 1\n  };\n};\nvar IndicatorSeparator = function IndicatorSeparator(props) {\n  var className = props.className,\n      cx = props.cx,\n      getStyles = props.getStyles,\n      innerProps = props.innerProps;\n  return jsx(\"span\", _extends({}, innerProps, {\n    css: getStyles('indicatorSeparator', props),\n    className: cx({\n      'indicator-separator': true\n    }, className)\n  }));\n}; // ==============================\n// Loading\n// ==============================\n\nvar loadingDotAnimations = keyframes(_templateObject || (_templateObject = _taggedTemplateLiteral([\"\\n  0%, 80%, 100% { opacity: 0; }\\n  40% { opacity: 1; }\\n\"])));\nvar loadingIndicatorCSS = function loadingIndicatorCSS(_ref5) {\n  var isFocused = _ref5.isFocused,\n      size = _ref5.size,\n      _ref5$theme = _ref5.theme,\n      colors = _ref5$theme.colors,\n      baseUnit = _ref5$theme.spacing.baseUnit;\n  return {\n    label: 'loadingIndicator',\n    color: isFocused ? colors.neutral60 : colors.neutral20,\n    display: 'flex',\n    padding: baseUnit * 2,\n    transition: 'color 150ms',\n    alignSelf: 'center',\n    fontSize: size,\n    lineHeight: 1,\n    marginRight: size,\n    textAlign: 'center',\n    verticalAlign: 'middle'\n  };\n};\n\nvar LoadingDot = function LoadingDot(_ref6) {\n  var delay = _ref6.delay,\n      offset = _ref6.offset;\n  return jsx(\"span\", {\n    css: /*#__PURE__*/css$2({\n      animation: \"\".concat(loadingDotAnimations, \" 1s ease-in-out \").concat(delay, \"ms infinite;\"),\n      backgroundColor: 'currentColor',\n      borderRadius: '1em',\n      display: 'inline-block',\n      marginLeft: offset ? '1em' : undefined,\n      height: '1em',\n      verticalAlign: 'top',\n      width: '1em'\n    }, process.env.NODE_ENV === \"production\" ? \"\" : \";label:LoadingDot;\", process.env.NODE_ENV === \"production\" ? \"\" : \"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImluZGljYXRvcnMudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQXFQSSIsImZpbGUiOiJpbmRpY2F0b3JzLnRzeCIsInNvdXJjZXNDb250ZW50IjpbIi8qKiBAanN4IGpzeCAqL1xuaW1wb3J0IHsgUmVhY3ROb2RlIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsganN4LCBrZXlmcmFtZXMgfSBmcm9tICdAZW1vdGlvbi9yZWFjdCc7XG5cbmltcG9ydCB7XG4gIENvbW1vblByb3BzQW5kQ2xhc3NOYW1lLFxuICBDU1NPYmplY3RXaXRoTGFiZWwsXG4gIEdyb3VwQmFzZSxcbn0gZnJvbSAnLi4vdHlwZXMnO1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIERyb3Bkb3duICYgQ2xlYXIgSWNvbnNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5jb25zdCBTdmcgPSAoe1xuICBzaXplLFxuICAuLi5wcm9wc1xufTogSlNYLkludHJpbnNpY0VsZW1lbnRzWydzdmcnXSAmIHsgc2l6ZTogbnVtYmVyIH0pID0+IChcbiAgPHN2Z1xuICAgIGhlaWdodD17c2l6ZX1cbiAgICB3aWR0aD17c2l6ZX1cbiAgICB2aWV3Qm94PVwiMCAwIDIwIDIwXCJcbiAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgIGZvY3VzYWJsZT1cImZhbHNlXCJcbiAgICBjc3M9e3tcbiAgICAgIGRpc3BsYXk6ICdpbmxpbmUtYmxvY2snLFxuICAgICAgZmlsbDogJ2N1cnJlbnRDb2xvcicsXG4gICAgICBsaW5lSGVpZ2h0OiAxLFxuICAgICAgc3Ryb2tlOiAnY3VycmVudENvbG9yJyxcbiAgICAgIHN0cm9rZVdpZHRoOiAwLFxuICAgIH19XG4gICAgey4uLnByb3BzfVxuICAvPlxuKTtcblxuZXhwb3J0IHR5cGUgQ3Jvc3NJY29uUHJvcHMgPSBKU1guSW50cmluc2ljRWxlbWVudHNbJ3N2ZyddICYgeyBzaXplPzogbnVtYmVyIH07XG5leHBvcnQgY29uc3QgQ3Jvc3NJY29uID0gKHByb3BzOiBDcm9zc0ljb25Qcm9wcykgPT4gKFxuICA8U3ZnIHNpemU9ezIwfSB7Li4ucHJvcHN9PlxuICAgIDxwYXRoIGQ9XCJNMTQuMzQ4IDE0Ljg0OWMtMC40NjkgMC40NjktMS4yMjkgMC40NjktMS42OTcgMGwtMi42NTEtMy4wMzAtMi42NTEgMy4wMjljLTAuNDY5IDAuNDY5LTEuMjI5IDAuNDY5LTEuNjk3IDAtMC40NjktMC40NjktMC40NjktMS4yMjkgMC0xLjY5N2wyLjc1OC0zLjE1LTIuNzU5LTMuMTUyYy0wLjQ2OS0wLjQ2OS0wLjQ2OS0xLjIyOCAwLTEuNjk3czEuMjI4LTAuNDY5IDEuNjk3IDBsMi42NTIgMy4wMzEgMi42NTEtMy4wMzFjMC40NjktMC40NjkgMS4yMjgtMC40NjkgMS42OTcgMHMwLjQ2OSAxLjIyOSAwIDEuNjk3bC0yLjc1OCAzLjE1MiAyLjc1OCAzLjE1YzAuNDY5IDAuNDY5IDAuNDY5IDEuMjI5IDAgMS42OTh6XCIgLz5cbiAgPC9Tdmc+XG4pO1xuZXhwb3J0IHR5cGUgRG93bkNoZXZyb25Qcm9wcyA9IEpTWC5JbnRyaW5zaWNFbGVtZW50c1snc3ZnJ10gJiB7IHNpemU/OiBudW1iZXIgfTtcbmV4cG9ydCBjb25zdCBEb3duQ2hldnJvbiA9IChwcm9wczogRG93bkNoZXZyb25Qcm9wcykgPT4gKFxuICA8U3ZnIHNpemU9ezIwfSB7Li4ucHJvcHN9PlxuICAgIDxwYXRoIGQ9XCJNNC41MTYgNy41NDhjMC40MzYtMC40NDYgMS4wNDMtMC40ODEgMS41NzYgMGwzLjkwOCAzLjc0NyAzLjkwOC0zLjc0N2MwLjUzMy0wLjQ4MSAxLjE0MS0wLjQ0NiAxLjU3NCAwIDAuNDM2IDAuNDQ1IDAuNDA4IDEuMTk3IDAgMS42MTUtMC40MDYgMC40MTgtNC42OTUgNC41MDItNC42OTUgNC41MDItMC4yMTcgMC4yMjMtMC41MDIgMC4zMzUtMC43ODcgMC4zMzVzLTAuNTctMC4xMTItMC43ODktMC4zMzVjMCAwLTQuMjg3LTQuMDg0LTQuNjk1LTQuNTAycy0wLjQzNi0xLjE3IDAtMS42MTV6XCIgLz5cbiAgPC9Tdmc+XG4pO1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIERyb3Bkb3duICYgQ2xlYXIgQnV0dG9uc1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbmV4cG9ydCBpbnRlcmZhY2UgRHJvcGRvd25JbmRpY2F0b3JQcm9wczxcbiAgT3B0aW9uID0gdW5rbm93bixcbiAgSXNNdWx0aSBleHRlbmRzIGJvb2xlYW4gPSBib29sZWFuLFxuICBHcm91cCBleHRlbmRzIEdyb3VwQmFzZTxPcHRpb24+ID0gR3JvdXBCYXNlPE9wdGlvbj5cbj4gZXh0ZW5kcyBDb21tb25Qcm9wc0FuZENsYXNzTmFtZTxPcHRpb24sIElzTXVsdGksIEdyb3VwPiB7XG4gIC8qKiBUaGUgY2hpbGRyZW4gdG8gYmUgcmVuZGVyZWQgaW5zaWRlIHRoZSBpbmRpY2F0b3IuICovXG4gIGNoaWxkcmVuPzogUmVhY3ROb2RlO1xuICAvKiogUHJvcHMgdGhhdCB3aWxsIGJlIHBhc3NlZCBvbiB0byB0aGUgY2hpbGRyZW4uICovXG4gIGlubmVyUHJvcHM6IEpTWC5JbnRyaW5zaWNFbGVtZW50c1snZGl2J107XG4gIC8qKiBUaGUgZm9jdXNlZCBzdGF0ZSBvZiB0aGUgc2VsZWN0LiAqL1xuICBpc0ZvY3VzZWQ6IGJvb2xlYW47XG4gIGlzRGlzYWJsZWQ6IGJvb2xlYW47XG59XG5cbmNvbnN0IGJhc2VDU1MgPSA8XG4gIE9wdGlvbixcbiAgSXNNdWx0aSBleHRlbmRzIGJvb2xlYW4sXG4gIEdyb3VwIGV4dGVuZHMgR3JvdXBCYXNlPE9wdGlvbj5cbj4oe1xuICBpc0ZvY3VzZWQsXG4gIHRoZW1lOiB7XG4gICAgc3BhY2luZzogeyBiYXNlVW5pdCB9LFxuICAgIGNvbG9ycyxcbiAgfSxcbn06XG4gIHwgRHJvcGRvd25JbmRpY2F0b3JQcm9wczxPcHRpb24sIElzTXVsdGksIEdyb3VwPlxuICB8IENsZWFySW5kaWNhdG9yUHJvcHM8T3B0aW9uLCBJc011bHRpLCBHcm91cD4pOiBDU1NPYmplY3RXaXRoTGFiZWwgPT4gKHtcbiAgbGFiZWw6ICdpbmRpY2F0b3JDb250YWluZXInLFxuICBjb2xvcjogaXNGb2N1c2VkID8gY29sb3JzLm5ldXRyYWw2MCA6IGNvbG9ycy5uZXV0cmFsMjAsXG4gIGRpc3BsYXk6ICdmbGV4JyxcbiAgcGFkZGluZzogYmFzZVVuaXQgKiAyLFxuICB0cmFuc2l0aW9uOiAnY29sb3IgMTUwbXMnLFxuXG4gICc6aG92ZXInOiB7XG4gICAgY29sb3I6IGlzRm9jdXNlZCA/IGNvbG9ycy5uZXV0cmFsODAgOiBjb2xvcnMubmV1dHJhbDQwLFxuICB9LFxufSk7XG5cbmV4cG9ydCBjb25zdCBkcm9wZG93bkluZGljYXRvckNTUyA9IGJhc2VDU1M7XG5leHBvcnQgY29uc3QgRHJvcGRvd25JbmRpY2F0b3IgPSA8XG4gIE9wdGlvbixcbiAgSXNNdWx0aSBleHRlbmRzIGJvb2xlYW4sXG4gIEdyb3VwIGV4dGVuZHMgR3JvdXBCYXNlPE9wdGlvbj5cbj4oXG4gIHByb3BzOiBEcm9wZG93bkluZGljYXRvclByb3BzPE9wdGlvbiwgSXNNdWx0aSwgR3JvdXA+XG4pID0+IHtcbiAgY29uc3QgeyBjaGlsZHJlbiwgY2xhc3NOYW1lLCBjeCwgZ2V0U3R5bGVzLCBpbm5lclByb3BzIH0gPSBwcm9wcztcbiAgcmV0dXJuIChcbiAgICA8ZGl2XG4gICAgICBjc3M9e2dldFN0eWxlcygnZHJvcGRvd25JbmRpY2F0b3InLCBwcm9wcyl9XG4gICAgICBjbGFzc05hbWU9e2N4KFxuICAgICAgICB7XG4gICAgICAgICAgaW5kaWNhdG9yOiB0cnVlLFxuICAgICAgICAgICdkcm9wZG93bi1pbmRpY2F0b3InOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBjbGFzc05hbWVcbiAgICAgICl9XG4gICAgICB7Li4uaW5uZXJQcm9wc31cbiAgICA+XG4gICAgICB7Y2hpbGRyZW4gfHwgPERvd25DaGV2cm9uIC8+fVxuICAgIDwvZGl2PlxuICApO1xufTtcblxuZXhwb3J0IGludGVyZmFjZSBDbGVhckluZGljYXRvclByb3BzPFxuICBPcHRpb24gPSB1bmtub3duLFxuICBJc011bHRpIGV4dGVuZHMgYm9vbGVhbiA9IGJvb2xlYW4sXG4gIEdyb3VwIGV4dGVuZHMgR3JvdXBCYXNlPE9wdGlvbj4gPSBHcm91cEJhc2U8T3B0aW9uPlxuPiBleHRlbmRzIENvbW1vblByb3BzQW5kQ2xhc3NOYW1lPE9wdGlvbiwgSXNNdWx0aSwgR3JvdXA+IHtcbiAgLyoqIFRoZSBjaGlsZHJlbiB0byBiZSByZW5kZXJlZCBpbnNpZGUgdGhlIGluZGljYXRvci4gKi9cbiAgY2hpbGRyZW4/OiBSZWFjdE5vZGU7XG4gIC8qKiBQcm9wcyB0aGF0IHdpbGwgYmUgcGFzc2VkIG9uIHRvIHRoZSBjaGlsZHJlbi4gKi9cbiAgaW5uZXJQcm9wczogSlNYLkludHJpbnNpY0VsZW1lbnRzWydkaXYnXTtcbiAgLyoqIFRoZSBmb2N1c2VkIHN0YXRlIG9mIHRoZSBzZWxlY3QuICovXG4gIGlzRm9jdXNlZDogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGNvbnN0IGNsZWFySW5kaWNhdG9yQ1NTID0gYmFzZUNTUztcbmV4cG9ydCBjb25zdCBDbGVhckluZGljYXRvciA9IDxcbiAgT3B0aW9uLFxuICBJc011bHRpIGV4dGVuZHMgYm9vbGVhbixcbiAgR3JvdXAgZXh0ZW5kcyBHcm91cEJhc2U8T3B0aW9uPlxuPihcbiAgcHJvcHM6IENsZWFySW5kaWNhdG9yUHJvcHM8T3B0aW9uLCBJc011bHRpLCBHcm91cD5cbikgPT4ge1xuICBjb25zdCB7IGNoaWxkcmVuLCBjbGFzc05hbWUsIGN4LCBnZXRTdHlsZXMsIGlubmVyUHJvcHMgfSA9IHByb3BzO1xuICByZXR1cm4gKFxuICAgIDxkaXZcbiAgICAgIGNzcz17Z2V0U3R5bGVzKCdjbGVhckluZGljYXRvcicsIHByb3BzKX1cbiAgICAgIGNsYXNzTmFtZT17Y3goXG4gICAgICAgIHtcbiAgICAgICAgICBpbmRpY2F0b3I6IHRydWUsXG4gICAgICAgICAgJ2NsZWFyLWluZGljYXRvcic6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIGNsYXNzTmFtZVxuICAgICAgKX1cbiAgICAgIHsuLi5pbm5lclByb3BzfVxuICAgID5cbiAgICAgIHtjaGlsZHJlbiB8fCA8Q3Jvc3NJY29uIC8+fVxuICAgIDwvZGl2PlxuICApO1xufTtcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBTZXBhcmF0b3Jcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5leHBvcnQgaW50ZXJmYWNlIEluZGljYXRvclNlcGFyYXRvclByb3BzPFxuICBPcHRpb24gPSB1bmtub3duLFxuICBJc011bHRpIGV4dGVuZHMgYm9vbGVhbiA9IGJvb2xlYW4sXG4gIEdyb3VwIGV4dGVuZHMgR3JvdXBCYXNlPE9wdGlvbj4gPSBHcm91cEJhc2U8T3B0aW9uPlxuPiBleHRlbmRzIENvbW1vblByb3BzQW5kQ2xhc3NOYW1lPE9wdGlvbiwgSXNNdWx0aSwgR3JvdXA+IHtcbiAgaXNEaXNhYmxlZDogYm9vbGVhbjtcbiAgaXNGb2N1c2VkOiBib29sZWFuO1xuICBpbm5lclByb3BzPzogSlNYLkludHJpbnNpY0VsZW1lbnRzWydzcGFuJ107XG59XG5cbmV4cG9ydCBjb25zdCBpbmRpY2F0b3JTZXBhcmF0b3JDU1MgPSA8XG4gIE9wdGlvbixcbiAgSXNNdWx0aSBleHRlbmRzIGJvb2xlYW4sXG4gIEdyb3VwIGV4dGVuZHMgR3JvdXBCYXNlPE9wdGlvbj5cbj4oe1xuICBpc0Rpc2FibGVkLFxuICB0aGVtZToge1xuICAgIHNwYWNpbmc6IHsgYmFzZVVuaXQgfSxcbiAgICBjb2xvcnMsXG4gIH0sXG59OiBJbmRpY2F0b3JTZXBhcmF0b3JQcm9wczxPcHRpb24sIElzTXVsdGksIEdyb3VwPik6IENTU09iamVjdFdpdGhMYWJlbCA9PiAoe1xuICBsYWJlbDogJ2luZGljYXRvclNlcGFyYXRvcicsXG4gIGFsaWduU2VsZjogJ3N0cmV0Y2gnLFxuICBiYWNrZ3JvdW5kQ29sb3I6IGlzRGlzYWJsZWQgPyBjb2xvcnMubmV1dHJhbDEwIDogY29sb3JzLm5ldXRyYWwyMCxcbiAgbWFyZ2luQm90dG9tOiBiYXNlVW5pdCAqIDIsXG4gIG1hcmdpblRvcDogYmFzZVVuaXQgKiAyLFxuICB3aWR0aDogMSxcbn0pO1xuXG5leHBvcnQgY29uc3QgSW5kaWNhdG9yU2VwYXJhdG9yID0gPFxuICBPcHRpb24sXG4gIElzTXVsdGkgZXh0ZW5kcyBib29sZWFuLFxuICBHcm91cCBleHRlbmRzIEdyb3VwQmFzZTxPcHRpb24+XG4+KFxuICBwcm9wczogSW5kaWNhdG9yU2VwYXJhdG9yUHJvcHM8T3B0aW9uLCBJc011bHRpLCBHcm91cD5cbikgPT4ge1xuICBjb25zdCB7IGNsYXNzTmFtZSwgY3gsIGdldFN0eWxlcywgaW5uZXJQcm9wcyB9ID0gcHJvcHM7XG4gIHJldHVybiAoXG4gICAgPHNwYW5cbiAgICAgIHsuLi5pbm5lclByb3BzfVxuICAgICAgY3NzPXtnZXRTdHlsZXMoJ2luZGljYXRvclNlcGFyYXRvcicsIHByb3BzKX1cbiAgICAgIGNsYXNzTmFtZT17Y3goeyAnaW5kaWNhdG9yLXNlcGFyYXRvcic6IHRydWUgfSwgY2xhc3NOYW1lKX1cbiAgICAvPlxuICApO1xufTtcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBMb2FkaW5nXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuY29uc3QgbG9hZGluZ0RvdEFuaW1hdGlvbnMgPSBrZXlmcmFtZXNgXG4gIDAlLCA4MCUsIDEwMCUgeyBvcGFjaXR5OiAwOyB9XG4gIDQwJSB7IG9wYWNpdHk6IDE7IH1cbmA7XG5cbmV4cG9ydCBjb25zdCBsb2FkaW5nSW5kaWNhdG9yQ1NTID0gPFxuICBPcHRpb24sXG4gIElzTXVsdGkgZXh0ZW5kcyBib29sZWFuLFxuICBHcm91cCBleHRlbmRzIEdyb3VwQmFzZTxPcHRpb24+XG4+KHtcbiAgaXNGb2N1c2VkLFxuICBzaXplLFxuICB0aGVtZToge1xuICAgIGNvbG9ycyxcbiAgICBzcGFjaW5nOiB7IGJhc2VVbml0IH0sXG4gIH0sXG59OiBMb2FkaW5nSW5kaWNhdG9yUHJvcHM8T3B0aW9uLCBJc011bHRpLCBHcm91cD4pOiBDU1NPYmplY3RXaXRoTGFiZWwgPT4gKHtcbiAgbGFiZWw6ICdsb2FkaW5nSW5kaWNhdG9yJyxcbiAgY29sb3I6IGlzRm9jdXNlZCA/IGNvbG9ycy5uZXV0cmFsNjAgOiBjb2xvcnMubmV1dHJhbDIwLFxuICBkaXNwbGF5OiAnZmxleCcsXG4gIHBhZGRpbmc6IGJhc2VVbml0ICogMixcbiAgdHJhbnNpdGlvbjogJ2NvbG9yIDE1MG1zJyxcbiAgYWxpZ25TZWxmOiAnY2VudGVyJyxcbiAgZm9udFNpemU6IHNpemUsXG4gIGxpbmVIZWlnaHQ6IDEsXG4gIG1hcmdpblJpZ2h0OiBzaXplLFxuICB0ZXh0QWxpZ246ICdjZW50ZXInLFxuICB2ZXJ0aWNhbEFsaWduOiAnbWlkZGxlJyxcbn0pO1xuXG5pbnRlcmZhY2UgTG9hZGluZ0RvdFByb3BzIHtcbiAgZGVsYXk6IG51bWJlcjtcbiAgb2Zmc2V0OiBib29sZWFuO1xufVxuY29uc3QgTG9hZGluZ0RvdCA9ICh7IGRlbGF5LCBvZmZzZXQgfTogTG9hZGluZ0RvdFByb3BzKSA9PiAoXG4gIDxzcGFuXG4gICAgY3NzPXt7XG4gICAgICBhbmltYXRpb246IGAke2xvYWRpbmdEb3RBbmltYXRpb25zfSAxcyBlYXNlLWluLW91dCAke2RlbGF5fW1zIGluZmluaXRlO2AsXG4gICAgICBiYWNrZ3JvdW5kQ29sb3I6ICdjdXJyZW50Q29sb3InLFxuICAgICAgYm9yZGVyUmFkaXVzOiAnMWVtJyxcbiAgICAgIGRpc3BsYXk6ICdpbmxpbmUtYmxvY2snLFxuICAgICAgbWFyZ2luTGVmdDogb2Zmc2V0ID8gJzFlbScgOiB1bmRlZmluZWQsXG4gICAgICBoZWlnaHQ6ICcxZW0nLFxuICAgICAgdmVydGljYWxBbGlnbjogJ3RvcCcsXG4gICAgICB3aWR0aDogJzFlbScsXG4gICAgfX1cbiAgLz5cbik7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTG9hZGluZ0luZGljYXRvclByb3BzPFxuICBPcHRpb24gPSB1bmtub3duLFxuICBJc011bHRpIGV4dGVuZHMgYm9vbGVhbiA9IGJvb2xlYW4sXG4gIEdyb3VwIGV4dGVuZHMgR3JvdXBCYXNlPE9wdGlvbj4gPSBHcm91cEJhc2U8T3B0aW9uPlxuPiBleHRlbmRzIENvbW1vblByb3BzQW5kQ2xhc3NOYW1lPE9wdGlvbiwgSXNNdWx0aSwgR3JvdXA+IHtcbiAgLyoqIFByb3BzIHRoYXQgd2lsbCBiZSBwYXNzZWQgb24gdG8gdGhlIGNoaWxkcmVuLiAqL1xuICBpbm5lclByb3BzOiBKU1guSW50cmluc2ljRWxlbWVudHNbJ2RpdiddO1xuICAvKiogVGhlIGZvY3VzZWQgc3RhdGUgb2YgdGhlIHNlbGVjdC4gKi9cbiAgaXNGb2N1c2VkOiBib29sZWFuO1xuICBpc0Rpc2FibGVkOiBib29sZWFuO1xuICAvKiogU2V0IHNpemUgb2YgdGhlIGNvbnRhaW5lci4gKi9cbiAgc2l6ZTogbnVtYmVyO1xufVxuZXhwb3J0IGNvbnN0IExvYWRpbmdJbmRpY2F0b3IgPSA8XG4gIE9wdGlvbixcbiAgSXNNdWx0aSBleHRlbmRzIGJvb2xlYW4sXG4gIEdyb3VwIGV4dGVuZHMgR3JvdXBCYXNlPE9wdGlvbj5cbj4oXG4gIHByb3BzOiBMb2FkaW5nSW5kaWNhdG9yUHJvcHM8T3B0aW9uLCBJc011bHRpLCBHcm91cD5cbikgPT4ge1xuICBjb25zdCB7IGNsYXNzTmFtZSwgY3gsIGdldFN0eWxlcywgaW5uZXJQcm9wcywgaXNSdGwgfSA9IHByb3BzO1xuXG4gIHJldHVybiAoXG4gICAgPGRpdlxuICAgICAgY3NzPXtnZXRTdHlsZXMoJ2xvYWRpbmdJbmRpY2F0b3InLCBwcm9wcyl9XG4gICAgICBjbGFzc05hbWU9e2N4KFxuICAgICAgICB7XG4gICAgICAgICAgaW5kaWNhdG9yOiB0cnVlLFxuICAgICAgICAgICdsb2FkaW5nLWluZGljYXRvcic6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIGNsYXNzTmFtZVxuICAgICAgKX1cbiAgICAgIHsuLi5pbm5lclByb3BzfVxuICAgID5cbiAgICAgIDxMb2FkaW5nRG90IGRlbGF5PXswfSBvZmZzZXQ9e2lzUnRsfSAvPlxuICAgICAgPExvYWRpbmdEb3QgZGVsYXk9ezE2MH0gb2Zmc2V0IC8+XG4gICAgICA8TG9hZGluZ0RvdCBkZWxheT17MzIwfSBvZmZzZXQ9eyFpc1J0bH0gLz5cbiAgICA8L2Rpdj5cbiAgKTtcbn07XG5Mb2FkaW5nSW5kaWNhdG9yLmRlZmF1bHRQcm9wcyA9IHsgc2l6ZTogNCB9O1xuIl19 */\")\n  });\n};\n\nvar LoadingIndicator = function LoadingIndicator(props) {\n  var className = props.className,\n      cx = props.cx,\n      getStyles = props.getStyles,\n      innerProps = props.innerProps,\n      isRtl = props.isRtl;\n  return jsx(\"div\", _extends({\n    css: getStyles('loadingIndicator', props),\n    className: cx({\n      indicator: true,\n      'loading-indicator': true\n    }, className)\n  }, innerProps), jsx(LoadingDot, {\n    delay: 0,\n    offset: isRtl\n  }), jsx(LoadingDot, {\n    delay: 160,\n    offset: true\n  }), jsx(LoadingDot, {\n    delay: 320,\n    offset: !isRtl\n  }));\n};\nLoadingIndicator.defaultProps = {\n  size: 4\n};\n\nvar css$1 = function css(_ref) {\n  var isDisabled = _ref.isDisabled,\n      isFocused = _ref.isFocused,\n      _ref$theme = _ref.theme,\n      colors = _ref$theme.colors,\n      borderRadius = _ref$theme.borderRadius,\n      spacing = _ref$theme.spacing;\n  return {\n    label: 'control',\n    alignItems: 'center',\n    backgroundColor: isDisabled ? colors.neutral5 : colors.neutral0,\n    borderColor: isDisabled ? colors.neutral10 : isFocused ? colors.primary : colors.neutral20,\n    borderRadius: borderRadius,\n    borderStyle: 'solid',\n    borderWidth: 1,\n    boxShadow: isFocused ? \"0 0 0 1px \".concat(colors.primary) : undefined,\n    cursor: 'default',\n    display: 'flex',\n    flexWrap: 'wrap',\n    justifyContent: 'space-between',\n    minHeight: spacing.controlHeight,\n    outline: '0 !important',\n    position: 'relative',\n    transition: 'all 100ms',\n    '&:hover': {\n      borderColor: isFocused ? colors.primary : colors.neutral30\n    }\n  };\n};\n\nvar Control = function Control(props) {\n  var children = props.children,\n      cx = props.cx,\n      getStyles = props.getStyles,\n      className = props.className,\n      isDisabled = props.isDisabled,\n      isFocused = props.isFocused,\n      innerRef = props.innerRef,\n      innerProps = props.innerProps,\n      menuIsOpen = props.menuIsOpen;\n  return jsx(\"div\", _extends({\n    ref: innerRef,\n    css: getStyles('control', props),\n    className: cx({\n      control: true,\n      'control--is-disabled': isDisabled,\n      'control--is-focused': isFocused,\n      'control--menu-is-open': menuIsOpen\n    }, className)\n  }, innerProps), children);\n};\n\nvar _excluded$1 = [\"data\"];\nvar groupCSS = function groupCSS(_ref) {\n  var spacing = _ref.theme.spacing;\n  return {\n    paddingBottom: spacing.baseUnit * 2,\n    paddingTop: spacing.baseUnit * 2\n  };\n};\n\nvar Group = function Group(props) {\n  var children = props.children,\n      className = props.className,\n      cx = props.cx,\n      getStyles = props.getStyles,\n      Heading = props.Heading,\n      headingProps = props.headingProps,\n      innerProps = props.innerProps,\n      label = props.label,\n      theme = props.theme,\n      selectProps = props.selectProps;\n  return jsx(\"div\", _extends({\n    css: getStyles('group', props),\n    className: cx({\n      group: true\n    }, className)\n  }, innerProps), jsx(Heading, _extends({}, headingProps, {\n    selectProps: selectProps,\n    theme: theme,\n    getStyles: getStyles,\n    cx: cx\n  }), label), jsx(\"div\", null, children));\n};\n\nvar groupHeadingCSS = function groupHeadingCSS(_ref2) {\n  var spacing = _ref2.theme.spacing;\n  return {\n    label: 'group',\n    color: '#999',\n    cursor: 'default',\n    display: 'block',\n    fontSize: '75%',\n    fontWeight: 500,\n    marginBottom: '0.25em',\n    paddingLeft: spacing.baseUnit * 3,\n    paddingRight: spacing.baseUnit * 3,\n    textTransform: 'uppercase'\n  };\n};\nvar GroupHeading = function GroupHeading(props) {\n  var getStyles = props.getStyles,\n      cx = props.cx,\n      className = props.className;\n\n  var _cleanCommonProps = cleanCommonProps(props);\n      _cleanCommonProps.data;\n      var innerProps = _objectWithoutProperties(_cleanCommonProps, _excluded$1);\n\n  return jsx(\"div\", _extends({\n    css: getStyles('groupHeading', props),\n    className: cx({\n      'group-heading': true\n    }, className)\n  }, innerProps));\n};\n\nvar _excluded = [\"innerRef\", \"isDisabled\", \"isHidden\", \"inputClassName\"];\nvar inputCSS = function inputCSS(_ref) {\n  var isDisabled = _ref.isDisabled,\n      value = _ref.value,\n      _ref$theme = _ref.theme,\n      spacing = _ref$theme.spacing,\n      colors = _ref$theme.colors;\n  return _objectSpread2({\n    margin: spacing.baseUnit / 2,\n    paddingBottom: spacing.baseUnit / 2,\n    paddingTop: spacing.baseUnit / 2,\n    visibility: isDisabled ? 'hidden' : 'visible',\n    color: colors.neutral80,\n    // force css to recompute when value change due to @emotion bug.\n    // We can remove it whenever the bug is fixed.\n    transform: value ? 'translateZ(0)' : ''\n  }, containerStyle);\n};\nvar spacingStyle = {\n  gridArea: '1 / 2',\n  font: 'inherit',\n  minWidth: '2px',\n  border: 0,\n  margin: 0,\n  outline: 0,\n  padding: 0\n};\nvar containerStyle = {\n  flex: '1 1 auto',\n  display: 'inline-grid',\n  gridArea: '1 / 1 / 2 / 3',\n  gridTemplateColumns: '0 min-content',\n  '&:after': _objectSpread2({\n    content: 'attr(data-value) \" \"',\n    visibility: 'hidden',\n    whiteSpace: 'pre'\n  }, spacingStyle)\n};\n\nvar inputStyle = function inputStyle(isHidden) {\n  return _objectSpread2({\n    label: 'input',\n    color: 'inherit',\n    background: 0,\n    opacity: isHidden ? 0 : 1,\n    width: '100%'\n  }, spacingStyle);\n};\n\nvar Input = function Input(props) {\n  var className = props.className,\n      cx = props.cx,\n      getStyles = props.getStyles,\n      value = props.value;\n\n  var _cleanCommonProps = cleanCommonProps(props),\n      innerRef = _cleanCommonProps.innerRef,\n      isDisabled = _cleanCommonProps.isDisabled,\n      isHidden = _cleanCommonProps.isHidden,\n      inputClassName = _cleanCommonProps.inputClassName,\n      innerProps = _objectWithoutProperties(_cleanCommonProps, _excluded);\n\n  return jsx(\"div\", {\n    className: cx({\n      'input-container': true\n    }, className),\n    css: getStyles('input', props),\n    \"data-value\": value || ''\n  }, jsx(\"input\", _extends({\n    className: cx({\n      input: true\n    }, inputClassName),\n    ref: innerRef,\n    style: inputStyle(isHidden),\n    disabled: isDisabled\n  }, innerProps)));\n};\n\nvar multiValueCSS = function multiValueCSS(_ref) {\n  var _ref$theme = _ref.theme,\n      spacing = _ref$theme.spacing,\n      borderRadius = _ref$theme.borderRadius,\n      colors = _ref$theme.colors;\n  return {\n    label: 'multiValue',\n    backgroundColor: colors.neutral10,\n    borderRadius: borderRadius / 2,\n    display: 'flex',\n    margin: spacing.baseUnit / 2,\n    minWidth: 0 // resolves flex/text-overflow bug\n\n  };\n};\nvar multiValueLabelCSS = function multiValueLabelCSS(_ref2) {\n  var _ref2$theme = _ref2.theme,\n      borderRadius = _ref2$theme.borderRadius,\n      colors = _ref2$theme.colors,\n      cropWithEllipsis = _ref2.cropWithEllipsis;\n  return {\n    borderRadius: borderRadius / 2,\n    color: colors.neutral80,\n    fontSize: '85%',\n    overflow: 'hidden',\n    padding: 3,\n    paddingLeft: 6,\n    textOverflow: cropWithEllipsis || cropWithEllipsis === undefined ? 'ellipsis' : undefined,\n    whiteSpace: 'nowrap'\n  };\n};\nvar multiValueRemoveCSS = function multiValueRemoveCSS(_ref3) {\n  var _ref3$theme = _ref3.theme,\n      spacing = _ref3$theme.spacing,\n      borderRadius = _ref3$theme.borderRadius,\n      colors = _ref3$theme.colors,\n      isFocused = _ref3.isFocused;\n  return {\n    alignItems: 'center',\n    borderRadius: borderRadius / 2,\n    backgroundColor: isFocused ? colors.dangerLight : undefined,\n    display: 'flex',\n    paddingLeft: spacing.baseUnit,\n    paddingRight: spacing.baseUnit,\n    ':hover': {\n      backgroundColor: colors.dangerLight,\n      color: colors.danger\n    }\n  };\n};\nvar MultiValueGeneric = function MultiValueGeneric(_ref4) {\n  var children = _ref4.children,\n      innerProps = _ref4.innerProps;\n  return jsx(\"div\", innerProps, children);\n};\nvar MultiValueContainer = MultiValueGeneric;\nvar MultiValueLabel = MultiValueGeneric;\nfunction MultiValueRemove(_ref5) {\n  var children = _ref5.children,\n      innerProps = _ref5.innerProps;\n  return jsx(\"div\", _extends({\n    role: \"button\"\n  }, innerProps), children || jsx(CrossIcon, {\n    size: 14\n  }));\n}\n\nvar MultiValue = function MultiValue(props) {\n  var children = props.children,\n      className = props.className,\n      components = props.components,\n      cx = props.cx,\n      data = props.data,\n      getStyles = props.getStyles,\n      innerProps = props.innerProps,\n      isDisabled = props.isDisabled,\n      removeProps = props.removeProps,\n      selectProps = props.selectProps;\n  var Container = components.Container,\n      Label = components.Label,\n      Remove = components.Remove;\n  return jsx(ClassNames, null, function (_ref6) {\n    var css = _ref6.css,\n        emotionCx = _ref6.cx;\n    return jsx(Container, {\n      data: data,\n      innerProps: _objectSpread2({\n        className: emotionCx(css(getStyles('multiValue', props)), cx({\n          'multi-value': true,\n          'multi-value--is-disabled': isDisabled\n        }, className))\n      }, innerProps),\n      selectProps: selectProps\n    }, jsx(Label, {\n      data: data,\n      innerProps: {\n        className: emotionCx(css(getStyles('multiValueLabel', props)), cx({\n          'multi-value__label': true\n        }, className))\n      },\n      selectProps: selectProps\n    }, children), jsx(Remove, {\n      data: data,\n      innerProps: _objectSpread2({\n        className: emotionCx(css(getStyles('multiValueRemove', props)), cx({\n          'multi-value__remove': true\n        }, className)),\n        'aria-label': \"Remove \".concat(children || 'option')\n      }, removeProps),\n      selectProps: selectProps\n    }));\n  });\n};\n\nvar optionCSS = function optionCSS(_ref) {\n  var isDisabled = _ref.isDisabled,\n      isFocused = _ref.isFocused,\n      isSelected = _ref.isSelected,\n      _ref$theme = _ref.theme,\n      spacing = _ref$theme.spacing,\n      colors = _ref$theme.colors;\n  return {\n    label: 'option',\n    backgroundColor: isSelected ? colors.primary : isFocused ? colors.primary25 : 'transparent',\n    color: isDisabled ? colors.neutral20 : isSelected ? colors.neutral0 : 'inherit',\n    cursor: 'default',\n    display: 'block',\n    fontSize: 'inherit',\n    padding: \"\".concat(spacing.baseUnit * 2, \"px \").concat(spacing.baseUnit * 3, \"px\"),\n    width: '100%',\n    userSelect: 'none',\n    WebkitTapHighlightColor: 'rgba(0, 0, 0, 0)',\n    // provide some affordance on touch devices\n    ':active': {\n      backgroundColor: !isDisabled ? isSelected ? colors.primary : colors.primary50 : undefined\n    }\n  };\n};\n\nvar Option = function Option(props) {\n  var children = props.children,\n      className = props.className,\n      cx = props.cx,\n      getStyles = props.getStyles,\n      isDisabled = props.isDisabled,\n      isFocused = props.isFocused,\n      isSelected = props.isSelected,\n      innerRef = props.innerRef,\n      innerProps = props.innerProps;\n  return jsx(\"div\", _extends({\n    css: getStyles('option', props),\n    className: cx({\n      option: true,\n      'option--is-disabled': isDisabled,\n      'option--is-focused': isFocused,\n      'option--is-selected': isSelected\n    }, className),\n    ref: innerRef,\n    \"aria-disabled\": isDisabled\n  }, innerProps), children);\n};\n\nvar placeholderCSS = function placeholderCSS(_ref) {\n  var _ref$theme = _ref.theme,\n      spacing = _ref$theme.spacing,\n      colors = _ref$theme.colors;\n  return {\n    label: 'placeholder',\n    color: colors.neutral50,\n    gridArea: '1 / 1 / 2 / 3',\n    marginLeft: spacing.baseUnit / 2,\n    marginRight: spacing.baseUnit / 2\n  };\n};\n\nvar Placeholder = function Placeholder(props) {\n  var children = props.children,\n      className = props.className,\n      cx = props.cx,\n      getStyles = props.getStyles,\n      innerProps = props.innerProps;\n  return jsx(\"div\", _extends({\n    css: getStyles('placeholder', props),\n    className: cx({\n      placeholder: true\n    }, className)\n  }, innerProps), children);\n};\n\nvar css = function css(_ref) {\n  var isDisabled = _ref.isDisabled,\n      _ref$theme = _ref.theme,\n      spacing = _ref$theme.spacing,\n      colors = _ref$theme.colors;\n  return {\n    label: 'singleValue',\n    color: isDisabled ? colors.neutral40 : colors.neutral80,\n    gridArea: '1 / 1 / 2 / 3',\n    marginLeft: spacing.baseUnit / 2,\n    marginRight: spacing.baseUnit / 2,\n    maxWidth: '100%',\n    overflow: 'hidden',\n    textOverflow: 'ellipsis',\n    whiteSpace: 'nowrap'\n  };\n};\n\nvar SingleValue = function SingleValue(props) {\n  var children = props.children,\n      className = props.className,\n      cx = props.cx,\n      getStyles = props.getStyles,\n      isDisabled = props.isDisabled,\n      innerProps = props.innerProps;\n  return jsx(\"div\", _extends({\n    css: getStyles('singleValue', props),\n    className: cx({\n      'single-value': true,\n      'single-value--is-disabled': isDisabled\n    }, className)\n  }, innerProps), children);\n};\n\nvar components = {\n  ClearIndicator: ClearIndicator,\n  Control: Control,\n  DropdownIndicator: DropdownIndicator,\n  DownChevron: DownChevron,\n  CrossIcon: CrossIcon,\n  Group: Group,\n  GroupHeading: GroupHeading,\n  IndicatorsContainer: IndicatorsContainer,\n  IndicatorSeparator: IndicatorSeparator,\n  Input: Input,\n  LoadingIndicator: LoadingIndicator,\n  Menu: Menu,\n  MenuList: MenuList,\n  MenuPortal: MenuPortal,\n  LoadingMessage: LoadingMessage,\n  NoOptionsMessage: NoOptionsMessage,\n  MultiValue: MultiValue,\n  MultiValueContainer: MultiValueContainer,\n  MultiValueLabel: MultiValueLabel,\n  MultiValueRemove: MultiValueRemove,\n  Option: Option,\n  Placeholder: Placeholder,\n  SelectContainer: SelectContainer,\n  SingleValue: SingleValue,\n  ValueContainer: ValueContainer\n};\nvar defaultComponents = function defaultComponents(props) {\n  return _objectSpread2(_objectSpread2({}, components), props.components);\n};\n\nexport { isTouchCapable as A, isMobileDevice as B, multiValueAsValue as C, singleValueAsValue as D, valueTernary as E, classNames as F, defaultComponents as G, notNullish as H, isDocumentElement as I, cleanValue as J, scrollIntoView as K, noop as L, MenuPlacer as M, handleInputChange as N, _createSuper as _, _objectSpread2 as a, clearIndicatorCSS as b, components as c, containerCSS as d, css$1 as e, dropdownIndicatorCSS as f, groupCSS as g, groupHeadingCSS as h, indicatorsContainerCSS as i, indicatorSeparatorCSS as j, inputCSS as k, loadingIndicatorCSS as l, loadingMessageCSS as m, menuCSS as n, menuListCSS as o, menuPortalCSS as p, multiValueCSS as q, removeProps as r, supportsPassiveEvents as s, multiValueLabelCSS as t, multiValueRemoveCSS as u, noOptionsMessageCSS as v, optionCSS as w, placeholderCSS as x, css as y, valueContainerCSS as z };\n","function _taggedTemplateLiteral(e, t) {\n  return t || (t = e.slice(0)), Object.freeze(Object.defineProperties(e, {\n    raw: {\n      value: Object.freeze(t)\n    }\n  }));\n}\nexport { _taggedTemplateLiteral as default };","import { u as useStateManager } from './useStateManager-68425271.esm.js';\nexport { u as useStateManager } from './useStateManager-68425271.esm.js';\nimport _extends from '@babel/runtime/helpers/esm/extends';\nimport * as React from 'react';\nimport { forwardRef, Component } from 'react';\nimport { S as Select } from './Select-54ac8379.esm.js';\nexport { c as createFilter, d as defaultTheme, m as mergeStyles } from './Select-54ac8379.esm.js';\nimport _classCallCheck from '@babel/runtime/helpers/esm/classCallCheck';\nimport _createClass from '@babel/runtime/helpers/esm/createClass';\nimport _inherits from '@babel/runtime/helpers/esm/inherits';\nimport { _ as _createSuper } from './index-a7690a33.esm.js';\nexport { c as components } from './index-a7690a33.esm.js';\nimport { CacheProvider } from '@emotion/react';\nimport createCache from '@emotion/cache';\nimport memoizeOne from 'memoize-one';\nimport '@babel/runtime/helpers/slicedToArray';\nimport '@babel/runtime/helpers/objectWithoutProperties';\nimport '@babel/runtime/helpers/toConsumableArray';\nimport '@babel/runtime/helpers/taggedTemplateLiteral';\nimport '@babel/runtime/helpers/typeof';\nimport '@babel/runtime/helpers/defineProperty';\nimport 'react-dom';\n\nvar StateManagedSelect = /*#__PURE__*/forwardRef(function (props, ref) {\n  var baseSelectProps = useStateManager(props);\n  return /*#__PURE__*/React.createElement(Select, _extends({\n    ref: ref\n  }, baseSelectProps));\n});\n\nvar NonceProvider = /*#__PURE__*/function (_Component) {\n  _inherits(NonceProvider, _Component);\n\n  var _super = _createSuper(NonceProvider);\n\n  function NonceProvider(props) {\n    var _this;\n\n    _classCallCheck(this, NonceProvider);\n\n    _this = _super.call(this, props);\n\n    _this.createEmotionCache = function (nonce, key) {\n      return createCache({\n        nonce: nonce,\n        key: key\n      });\n    };\n\n    _this.createEmotionCache = memoizeOne(_this.createEmotionCache);\n    return _this;\n  }\n\n  _createClass(NonceProvider, [{\n    key: \"render\",\n    value: function render() {\n      var emotionCache = this.createEmotionCache(this.props.nonce, this.props.cacheKey);\n      return /*#__PURE__*/React.createElement(CacheProvider, {\n        value: emotionCache\n      }, this.props.children);\n    }\n  }]);\n\n  return NonceProvider;\n}(Component);\n\nexport default StateManagedSelect;\nexport { NonceProvider };\n","import { a as _objectSpread2 } from './index-a7690a33.esm.js';\nimport _slicedToArray from '@babel/runtime/helpers/esm/slicedToArray';\nimport _objectWithoutProperties from '@babel/runtime/helpers/esm/objectWithoutProperties';\nimport { useState, useCallback } from 'react';\n\nvar _excluded = [\"defaultInputValue\", \"defaultMenuIsOpen\", \"defaultValue\", \"inputValue\", \"menuIsOpen\", \"onChange\", \"onInputChange\", \"onMenuClose\", \"onMenuOpen\", \"value\"];\nfunction useStateManager(_ref) {\n  var _ref$defaultInputValu = _ref.defaultInputValue,\n      defaultInputValue = _ref$defaultInputValu === void 0 ? '' : _ref$defaultInputValu,\n      _ref$defaultMenuIsOpe = _ref.defaultMenuIsOpen,\n      defaultMenuIsOpen = _ref$defaultMenuIsOpe === void 0 ? false : _ref$defaultMenuIsOpe,\n      _ref$defaultValue = _ref.defaultValue,\n      defaultValue = _ref$defaultValue === void 0 ? null : _ref$defaultValue,\n      propsInputValue = _ref.inputValue,\n      propsMenuIsOpen = _ref.menuIsOpen,\n      propsOnChange = _ref.onChange,\n      propsOnInputChange = _ref.onInputChange,\n      propsOnMenuClose = _ref.onMenuClose,\n      propsOnMenuOpen = _ref.onMenuOpen,\n      propsValue = _ref.value,\n      restSelectProps = _objectWithoutProperties(_ref, _excluded);\n\n  var _useState = useState(propsInputValue !== undefined ? propsInputValue : defaultInputValue),\n      _useState2 = _slicedToArray(_useState, 2),\n      stateInputValue = _useState2[0],\n      setStateInputValue = _useState2[1];\n\n  var _useState3 = useState(propsMenuIsOpen !== undefined ? propsMenuIsOpen : defaultMenuIsOpen),\n      _useState4 = _slicedToArray(_useState3, 2),\n      stateMenuIsOpen = _useState4[0],\n      setStateMenuIsOpen = _useState4[1];\n\n  var _useState5 = useState(propsValue !== undefined ? propsValue : defaultValue),\n      _useState6 = _slicedToArray(_useState5, 2),\n      stateValue = _useState6[0],\n      setStateValue = _useState6[1];\n\n  var onChange = useCallback(function (value, actionMeta) {\n    if (typeof propsOnChange === 'function') {\n      propsOnChange(value, actionMeta);\n    }\n\n    setStateValue(value);\n  }, [propsOnChange]);\n  var onInputChange = useCallback(function (value, actionMeta) {\n    var newValue;\n\n    if (typeof propsOnInputChange === 'function') {\n      newValue = propsOnInputChange(value, actionMeta);\n    }\n\n    setStateInputValue(newValue !== undefined ? newValue : value);\n  }, [propsOnInputChange]);\n  var onMenuOpen = useCallback(function () {\n    if (typeof propsOnMenuOpen === 'function') {\n      propsOnMenuOpen();\n    }\n\n    setStateMenuIsOpen(true);\n  }, [propsOnMenuOpen]);\n  var onMenuClose = useCallback(function () {\n    if (typeof propsOnMenuClose === 'function') {\n      propsOnMenuClose();\n    }\n\n    setStateMenuIsOpen(false);\n  }, [propsOnMenuClose]);\n  var inputValue = propsInputValue !== undefined ? propsInputValue : stateInputValue;\n  var menuIsOpen = propsMenuIsOpen !== undefined ? propsMenuIsOpen : stateMenuIsOpen;\n  var value = propsValue !== undefined ? propsValue : stateValue;\n  return _objectSpread2(_objectSpread2({}, restSelectProps), {}, {\n    inputValue: inputValue,\n    menuIsOpen: menuIsOpen,\n    onChange: onChange,\n    onInputChange: onInputChange,\n    onMenuClose: onMenuClose,\n    onMenuOpen: onMenuOpen,\n    value: value\n  });\n}\n\nexport { useStateManager as u };\n","\"use strict\";\nvar __assign = (this && this.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ArrowContainer = void 0;\nvar jsx_runtime_1 = require(\"react/jsx-runtime\");\nvar react_1 = require(\"react\");\nvar useArrowContainer_1 = require(\"./useArrowContainer\");\nvar ArrowContainer = function (_a) {\n    var childRect = _a.childRect, popoverRect = _a.popoverRect, position = _a.position, arrowColor = _a.arrowColor, arrowSize = _a.arrowSize, arrowClassName = _a.arrowClassName, externalArrowStyle = _a.arrowStyle, className = _a.className, children = _a.children, externalArrowContainerStyle = _a.style;\n    var _b = (0, useArrowContainer_1.useArrowContainer)({\n        childRect: childRect,\n        popoverRect: popoverRect,\n        position: position,\n        arrowColor: arrowColor,\n        arrowSize: arrowSize,\n    }), arrowContainerStyle = _b.arrowContainerStyle, arrowStyle = _b.arrowStyle;\n    var mergedContainerStyle = (0, react_1.useMemo)(function () { return (__assign(__assign({}, arrowContainerStyle), externalArrowContainerStyle)); }, [arrowContainerStyle, externalArrowContainerStyle]);\n    var mergedArrowStyle = (0, react_1.useMemo)(function () { return (__assign(__assign({}, arrowStyle), externalArrowStyle)); }, [arrowStyle, externalArrowStyle]);\n    return ((0, jsx_runtime_1.jsxs)(\"div\", { className: className, style: mergedContainerStyle, children: [(0, jsx_runtime_1.jsx)(\"div\", { style: mergedArrowStyle, className: arrowClassName }), children] }));\n};\nexports.ArrowContainer = ArrowContainer;\n//# sourceMappingURL=ArrowContainer.js.map","\"use strict\";\nvar __assign = (this && this.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Popover = exports.usePopover = exports.ArrowContainer = exports.useArrowContainer = void 0;\nvar jsx_runtime_1 = require(\"react/jsx-runtime\");\nvar react_1 = require(\"react\");\nvar PopoverPortal_1 = require(\"./PopoverPortal\");\nvar util_1 = require(\"./util\");\nvar usePopover_1 = require(\"./usePopover\");\nObject.defineProperty(exports, \"usePopover\", { enumerable: true, get: function () { return usePopover_1.usePopover; } });\nvar useMemoizedArray_1 = require(\"./useMemoizedArray\");\nvar useHandlePrevValues_1 = require(\"./useHandlePrevValues\");\nvar useArrowContainer_1 = require(\"./useArrowContainer\");\nObject.defineProperty(exports, \"useArrowContainer\", { enumerable: true, get: function () { return useArrowContainer_1.useArrowContainer; } });\nvar ArrowContainer_1 = require(\"./ArrowContainer\");\nObject.defineProperty(exports, \"ArrowContainer\", { enumerable: true, get: function () { return ArrowContainer_1.ArrowContainer; } });\nvar DEFAULT_POSITIONS = ['top', 'left', 'right', 'bottom'];\nvar PopoverInternal = (0, react_1.forwardRef)(function (_a, externalRef) {\n    var isOpen = _a.isOpen, children = _a.children, content = _a.content, _b = _a.positions, externalPositions = _b === void 0 ? DEFAULT_POSITIONS : _b, _c = _a.align, align = _c === void 0 ? 'center' : _c, _d = _a.padding, padding = _d === void 0 ? 0 : _d, _e = _a.reposition, reposition = _e === void 0 ? true : _e, _f = _a.parentElement, parentElement = _f === void 0 ? window.document.body : _f, _g = _a.boundaryElement, boundaryElement = _g === void 0 ? parentElement : _g, containerClassName = _a.containerClassName, containerStyle = _a.containerStyle, transform = _a.transform, _h = _a.transformMode, transformMode = _h === void 0 ? 'absolute' : _h, _j = _a.boundaryInset, boundaryInset = _j === void 0 ? 0 : _j, onClickOutside = _a.onClickOutside, _k = _a.clickOutsideCapture, clickOutsideCapture = _k === void 0 ? false : _k;\n    var positions = (0, useMemoizedArray_1.useMemoizedArray)(Array.isArray(externalPositions) ? externalPositions : [externalPositions]);\n    var _l = (0, useHandlePrevValues_1.useHandlePrevValues)({\n        positions: positions,\n        reposition: reposition,\n        transformMode: transformMode,\n        transform: transform,\n        boundaryElement: boundaryElement,\n        boundaryInset: boundaryInset,\n    }), prev = _l.prev, updatePrevValues = _l.updatePrevValues;\n    var childRef = (0, react_1.useRef)();\n    var _m = (0, react_1.useState)({\n        align: align,\n        nudgedLeft: 0,\n        nudgedTop: 0,\n        position: positions[0],\n        padding: padding,\n        childRect: util_1.EMPTY_RECT,\n        popoverRect: util_1.EMPTY_RECT,\n        parentRect: util_1.EMPTY_RECT,\n        boundaryRect: util_1.EMPTY_RECT,\n        boundaryInset: boundaryInset,\n        violations: util_1.EMPTY_RECT,\n        hasViolations: false,\n    }), popoverState = _m[0], setPopoverState = _m[1];\n    var onPositionPopover = (0, react_1.useCallback)(function (popoverState) { return setPopoverState(popoverState); }, []);\n    var _o = (0, usePopover_1.usePopover)({\n        isOpen: isOpen,\n        childRef: childRef,\n        containerClassName: containerClassName,\n        parentElement: parentElement,\n        boundaryElement: boundaryElement,\n        transform: transform,\n        transformMode: transformMode,\n        positions: positions,\n        align: align,\n        padding: padding,\n        boundaryInset: boundaryInset,\n        reposition: reposition,\n        onPositionPopover: onPositionPopover,\n    }), positionPopover = _o.positionPopover, popoverRef = _o.popoverRef, scoutRef = _o.scoutRef;\n    (0, react_1.useLayoutEffect)(function () {\n        var shouldUpdate = true;\n        var updatePopover = function () {\n            var _a, _b;\n            if (isOpen && shouldUpdate) {\n                var childRect = (_a = childRef === null || childRef === void 0 ? void 0 : childRef.current) === null || _a === void 0 ? void 0 : _a.getBoundingClientRect();\n                var popoverRect = (_b = popoverRef === null || popoverRef === void 0 ? void 0 : popoverRef.current) === null || _b === void 0 ? void 0 : _b.getBoundingClientRect();\n                if (childRect != null &&\n                    popoverRect != null &&\n                    (!(0, util_1.rectsAreEqual)(childRect, popoverState.childRect) ||\n                        popoverRect.width !== popoverState.popoverRect.width ||\n                        popoverRect.height !== popoverState.popoverRect.height ||\n                        popoverState.padding !== padding ||\n                        popoverState.align !== align ||\n                        positions !== prev.positions ||\n                        reposition !== prev.reposition ||\n                        transformMode !== prev.transformMode ||\n                        transform !== prev.transform ||\n                        boundaryElement !== prev.boundaryElement ||\n                        boundaryInset !== prev.boundaryInset)) {\n                    positionPopover();\n                }\n                updatePrevValues();\n                if (shouldUpdate) {\n                    window.requestAnimationFrame(updatePopover);\n                }\n            }\n        };\n        updatePopover();\n        return function () {\n            shouldUpdate = false;\n        };\n    }, [\n        align,\n        boundaryElement,\n        boundaryInset,\n        isOpen,\n        padding,\n        popoverRef,\n        popoverState.align,\n        popoverState.childRect,\n        popoverState.padding,\n        popoverState.popoverRect.height,\n        popoverState.popoverRect.width,\n        positionPopover,\n        positions,\n        prev.boundaryElement,\n        prev.boundaryInset,\n        prev.positions,\n        prev.reposition,\n        prev.transform,\n        prev.transformMode,\n        reposition,\n        transform,\n        transformMode,\n        updatePrevValues,\n    ]);\n    (0, react_1.useEffect)(function () {\n        var popoverElement = popoverRef.current;\n        Object.assign(popoverElement.style, containerStyle);\n        return function () {\n            Object.keys(containerStyle !== null && containerStyle !== void 0 ? containerStyle : {}).forEach(function (key) {\n                return delete popoverElement.style[key];\n            });\n        };\n    }, [containerStyle, isOpen, popoverRef]);\n    var handleOnClickOutside = (0, react_1.useCallback)(function (e) {\n        var _a, _b;\n        if (isOpen &&\n            !((_a = popoverRef.current) === null || _a === void 0 ? void 0 : _a.contains(e.target)) &&\n            !((_b = childRef.current) === null || _b === void 0 ? void 0 : _b.contains(e.target))) {\n            onClickOutside === null || onClickOutside === void 0 ? void 0 : onClickOutside(e);\n        }\n    }, [isOpen, onClickOutside, popoverRef]);\n    var handleWindowResize = (0, react_1.useCallback)(function () {\n        if (childRef.current && isOpen) {\n            window.requestAnimationFrame(function () { return positionPopover(); });\n        }\n    }, [positionPopover, isOpen]);\n    (0, react_1.useEffect)(function () {\n        var body = parentElement.ownerDocument.body;\n        body.addEventListener('click', handleOnClickOutside, clickOutsideCapture);\n        body.addEventListener('contextmenu', handleOnClickOutside, clickOutsideCapture);\n        window.addEventListener('resize', handleWindowResize);\n        return function () {\n            body.removeEventListener('click', handleOnClickOutside, clickOutsideCapture);\n            body.removeEventListener('contextmenu', handleOnClickOutside, clickOutsideCapture);\n            window.removeEventListener('resize', handleWindowResize);\n        };\n    }, [clickOutsideCapture, handleOnClickOutside, handleWindowResize, parentElement]);\n    var handleRef = (0, react_1.useCallback)(function (node) {\n        childRef.current = node;\n        if (externalRef != null) {\n            if (typeof externalRef === 'object') {\n                externalRef.current = node;\n            }\n            else if (typeof externalRef === 'function') {\n                externalRef(node);\n            }\n        }\n    }, [externalRef]);\n    var renderChild = function () { return (0, react_1.cloneElement)(children, { ref: handleRef }); };\n    var renderPopover = function () {\n        if (!isOpen)\n            return null;\n        return ((0, jsx_runtime_1.jsx)(PopoverPortal_1.PopoverPortal, { element: popoverRef.current, scoutElement: scoutRef.current, container: parentElement, children: typeof content === 'function' ? content(popoverState) : content }));\n    };\n    return ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [renderChild(), renderPopover()] }));\n});\nexports.Popover = (0, react_1.forwardRef)(function (props, ref) {\n    if (typeof window === 'undefined')\n        return props.children;\n    return (0, jsx_runtime_1.jsx)(PopoverInternal, __assign({}, props, { ref: ref }));\n});\n//# sourceMappingURL=Popover.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.PopoverPortal = void 0;\nvar react_1 = require(\"react\");\nvar react_dom_1 = require(\"react-dom\");\nvar PopoverPortal = function (_a) {\n    var container = _a.container, element = _a.element, scoutElement = _a.scoutElement, children = _a.children;\n    (0, react_1.useLayoutEffect)(function () {\n        container.appendChild(element);\n        container.appendChild(scoutElement);\n        return function () {\n            container.removeChild(element);\n            container.removeChild(scoutElement);\n        };\n    }, [container, element, scoutElement]);\n    return (0, react_dom_1.createPortal)(children, element);\n};\nexports.PopoverPortal = PopoverPortal;\n//# sourceMappingURL=PopoverPortal.js.map","\"use strict\";\nvar __assign = (this && this.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.useArrowContainer = void 0;\nvar react_1 = require(\"react\");\nvar useArrowContainer = function (_a) {\n    var childRect = _a.childRect, popoverRect = _a.popoverRect, position = _a.position, arrowSize = _a.arrowSize, arrowColor = _a.arrowColor;\n    var arrowContainerStyle = (0, react_1.useMemo)(function () {\n        return ({\n            padding: arrowSize,\n        });\n    }, [arrowSize]);\n    var arrowStyle = (0, react_1.useMemo)(function () {\n        return (__assign({ position: 'absolute' }, (function () {\n            var arrowWidth = arrowSize * 2;\n            var top = childRect.top - popoverRect.top + childRect.height / 2 - arrowWidth / 2;\n            var left = childRect.left - popoverRect.left + childRect.width / 2 - arrowWidth / 2;\n            var lowerBound = arrowSize;\n            var leftUpperBound = popoverRect.width - arrowSize;\n            var topUpperBound = popoverRect.height - arrowSize;\n            left = left < lowerBound ? lowerBound : left;\n            left = left + arrowWidth > leftUpperBound ? leftUpperBound - arrowWidth : left;\n            top = top < lowerBound ? lowerBound : top;\n            top = top + arrowWidth > topUpperBound ? topUpperBound - arrowWidth : top;\n            top = Number.isNaN(top) ? 0 : top;\n            left = Number.isNaN(left) ? 0 : left;\n            switch (position) {\n                case 'right':\n                    return {\n                        borderTop: \"\".concat(arrowSize, \"px solid transparent\"),\n                        borderBottom: \"\".concat(arrowSize, \"px solid transparent\"),\n                        borderRight: \"\".concat(arrowSize, \"px solid \").concat(arrowColor),\n                        left: 0,\n                        top: top,\n                    };\n                case 'left':\n                    return {\n                        borderTop: \"\".concat(arrowSize, \"px solid transparent\"),\n                        borderBottom: \"\".concat(arrowSize, \"px solid transparent\"),\n                        borderLeft: \"\".concat(arrowSize, \"px solid \").concat(arrowColor),\n                        right: 0,\n                        top: top,\n                    };\n                case 'bottom':\n                    return {\n                        borderLeft: \"\".concat(arrowSize, \"px solid transparent\"),\n                        borderRight: \"\".concat(arrowSize, \"px solid transparent\"),\n                        borderBottom: \"\".concat(arrowSize, \"px solid \").concat(arrowColor),\n                        top: 0,\n                        left: left,\n                    };\n                case 'top':\n                    return {\n                        borderLeft: \"\".concat(arrowSize, \"px solid transparent\"),\n                        borderRight: \"\".concat(arrowSize, \"px solid transparent\"),\n                        borderTop: \"\".concat(arrowSize, \"px solid \").concat(arrowColor),\n                        bottom: 0,\n                        left: left,\n                    };\n                default:\n                    return {\n                        display: 'hidden',\n                    };\n            }\n        })()));\n    }, [\n        arrowColor,\n        arrowSize,\n        childRect.height,\n        childRect.left,\n        childRect.top,\n        childRect.width,\n        popoverRect.height,\n        popoverRect.left,\n        popoverRect.top,\n        popoverRect.width,\n        position,\n    ]);\n    return {\n        arrowContainerStyle: arrowContainerStyle,\n        arrowStyle: arrowStyle,\n    };\n};\nexports.useArrowContainer = useArrowContainer;\n//# sourceMappingURL=useArrowContainer.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.useElementRef = void 0;\nvar react_1 = require(\"react\");\nvar util_1 = require(\"./util\");\nvar useElementRef = function (_a) {\n    var containerClassName = _a.containerClassName, containerStyle = _a.containerStyle;\n    var ref = (0, react_1.useRef)();\n    var element = (0, react_1.useState)(function () {\n        return (0, util_1.createContainer)({ containerStyle: containerStyle, containerClassName: containerClassName });\n    })[0];\n    (0, react_1.useLayoutEffect)(function () {\n        element.className = containerClassName;\n    }, [containerClassName, element]);\n    (0, react_1.useLayoutEffect)(function () {\n        Object.assign(element.style, containerStyle);\n    }, [containerStyle, element]);\n    ref.current = element;\n    return ref;\n};\nexports.useElementRef = useElementRef;\n//# sourceMappingURL=useElementRef.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.useHandlePrevValues = void 0;\nvar react_1 = require(\"react\");\nvar useHandlePrevValues = function (props) {\n    var prevPositions = (0, react_1.useRef)(props.positions);\n    var prevReposition = (0, react_1.useRef)(props.reposition);\n    var prevTransformMode = (0, react_1.useRef)(props.transformMode);\n    var prevTransform = (0, react_1.useRef)(props.transform);\n    var prevBoundaryElement = (0, react_1.useRef)(props.boundaryElement);\n    var prevBoundaryInset = (0, react_1.useRef)(props.boundaryInset);\n    var updatePrevValues = (0, react_1.useCallback)(function () {\n        prevPositions.current = props.positions;\n        prevReposition.current = props.reposition;\n        prevTransformMode.current = props.transformMode;\n        prevTransform.current = props.transform;\n        prevBoundaryElement.current = props.boundaryElement;\n        prevBoundaryInset.current = props.boundaryInset;\n    }, [\n        props.boundaryElement,\n        props.boundaryInset,\n        props.positions,\n        props.reposition,\n        props.transform,\n        props.transformMode,\n    ]);\n    return {\n        prev: {\n            positions: prevPositions.current,\n            reposition: prevReposition.current,\n            transformMode: prevTransformMode.current,\n            transform: prevTransform.current,\n            boundaryElement: prevBoundaryElement.current,\n            boundaryInset: prevBoundaryInset.current,\n        },\n        updatePrevValues: updatePrevValues,\n    };\n};\nexports.useHandlePrevValues = useHandlePrevValues;\n//# sourceMappingURL=useHandlePrevValues.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.useMemoizedArray = void 0;\nvar react_1 = require(\"react\");\nvar useMemoizedArray = function (externalArray) {\n    var prevArrayRef = (0, react_1.useRef)(externalArray);\n    var array = (0, react_1.useMemo)(function () {\n        if (prevArrayRef.current === externalArray)\n            return prevArrayRef.current;\n        if (prevArrayRef.current.length !== externalArray.length) {\n            prevArrayRef.current = externalArray;\n            return externalArray;\n        }\n        for (var i = 0; i < externalArray.length; i += 1) {\n            if (externalArray[i] !== prevArrayRef.current[i]) {\n                prevArrayRef.current = externalArray;\n                return externalArray;\n            }\n        }\n        return prevArrayRef.current;\n    }, [externalArray]);\n    return array;\n};\nexports.useMemoizedArray = useMemoizedArray;\n//# sourceMappingURL=useMemoizedArray.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.usePopover = void 0;\nvar react_1 = require(\"react\");\nvar util_1 = require(\"./util\");\nvar useElementRef_1 = require(\"./useElementRef\");\nvar POPOVER_STYLE = {\n    position: 'fixed',\n    overflow: 'visible',\n    top: '0px',\n    left: '0px',\n};\nvar SCOUT_STYLE = {\n    position: 'fixed',\n    top: '0px',\n    left: '0px',\n    width: '0px',\n    height: '0px',\n    visibility: 'hidden',\n};\nvar usePopover = function (_a) {\n    var isOpen = _a.isOpen, childRef = _a.childRef, positions = _a.positions, containerClassName = _a.containerClassName, parentElement = _a.parentElement, transform = _a.transform, transformMode = _a.transformMode, align = _a.align, padding = _a.padding, reposition = _a.reposition, boundaryInset = _a.boundaryInset, boundaryElement = _a.boundaryElement, onPositionPopover = _a.onPositionPopover;\n    var scoutRef = (0, useElementRef_1.useElementRef)({\n        containerClassName: 'react-tiny-popover-scout',\n        containerStyle: SCOUT_STYLE,\n    });\n    var popoverRef = (0, useElementRef_1.useElementRef)({\n        containerClassName: containerClassName != null &&\n            containerClassName.length > 0 &&\n            containerClassName !== 'react-tiny-popover-container'\n            ? \"react-tiny-popover-container \".concat(containerClassName)\n            : 'react-tiny-popover-container',\n        containerStyle: POPOVER_STYLE,\n    });\n    var positionPopover = (0, react_1.useCallback)(function (_a) {\n        var _b, _c;\n        var _d = _a === void 0 ? {} : _a, _e = _d.positionIndex, positionIndex = _e === void 0 ? 0 : _e, _f = _d.parentRect, parentRect = _f === void 0 ? parentElement.getBoundingClientRect() : _f, _g = _d.childRect, childRect = _g === void 0 ? (_b = childRef === null || childRef === void 0 ? void 0 : childRef.current) === null || _b === void 0 ? void 0 : _b.getBoundingClientRect() : _g, _h = _d.scoutRect, scoutRect = _h === void 0 ? (_c = scoutRef === null || scoutRef === void 0 ? void 0 : scoutRef.current) === null || _c === void 0 ? void 0 : _c.getBoundingClientRect() : _h, _j = _d.popoverRect, popoverRect = _j === void 0 ? popoverRef.current.getBoundingClientRect() : _j, _k = _d.boundaryRect, boundaryRect = _k === void 0 ? boundaryElement === parentElement\n            ? parentRect\n            : boundaryElement.getBoundingClientRect() : _k;\n        if (!childRect || !parentRect || !isOpen) {\n            return;\n        }\n        if (transform && transformMode === 'absolute') {\n            var _l = typeof transform === 'function'\n                ? transform({\n                    childRect: childRect,\n                    popoverRect: popoverRect,\n                    parentRect: parentRect,\n                    boundaryRect: boundaryRect,\n                    padding: padding,\n                    align: align,\n                    nudgedTop: 0,\n                    nudgedLeft: 0,\n                    boundaryInset: boundaryInset,\n                    violations: util_1.EMPTY_RECT,\n                    hasViolations: false,\n                })\n                : transform, inputTop = _l.top, inputLeft = _l.left;\n            var finalLeft_1 = Math.round(parentRect.left + inputLeft - scoutRect.left);\n            var finalTop_1 = Math.round(parentRect.top + inputTop - scoutRect.top);\n            popoverRef.current.style.transform = \"translate(\".concat(finalLeft_1, \"px, \").concat(finalTop_1, \"px)\");\n            onPositionPopover({\n                childRect: childRect,\n                popoverRect: (0, util_1.createRect)({\n                    left: finalLeft_1,\n                    top: finalTop_1,\n                    width: popoverRect.width,\n                    height: popoverRect.height,\n                }),\n                parentRect: parentRect,\n                boundaryRect: boundaryRect,\n                padding: padding,\n                align: align,\n                transform: { top: inputTop, left: inputLeft },\n                nudgedTop: 0,\n                nudgedLeft: 0,\n                boundaryInset: boundaryInset,\n                violations: util_1.EMPTY_RECT,\n                hasViolations: false,\n            });\n            return;\n        }\n        var isExhausted = positionIndex === positions.length;\n        var position = isExhausted ? positions[0] : positions[positionIndex];\n        var _m = (0, util_1.getNewPopoverRect)({\n            childRect: childRect,\n            popoverRect: popoverRect,\n            boundaryRect: boundaryRect,\n            position: position,\n            align: align,\n            padding: padding,\n            reposition: reposition,\n        }, boundaryInset), rect = _m.rect, boundaryViolation = _m.boundaryViolation;\n        if (boundaryViolation && reposition && !isExhausted) {\n            positionPopover({\n                positionIndex: positionIndex + 1,\n                childRect: childRect,\n                popoverRect: popoverRect,\n                parentRect: parentRect,\n                boundaryRect: boundaryRect,\n            });\n            return;\n        }\n        var top = rect.top, left = rect.left, width = rect.width, height = rect.height;\n        var shouldNudge = reposition && !isExhausted;\n        var _o = (0, util_1.getNudgedPopoverRect)(rect, boundaryRect, boundaryInset), nudgedLeft = _o.left, nudgedTop = _o.top;\n        var finalTop = top;\n        var finalLeft = left;\n        if (shouldNudge) {\n            finalTop = nudgedTop;\n            finalLeft = nudgedLeft;\n        }\n        finalTop = Math.round(finalTop - scoutRect.top);\n        finalLeft = Math.round(finalLeft - scoutRect.left);\n        popoverRef.current.style.transform = \"translate(\".concat(finalLeft, \"px, \").concat(finalTop, \"px)\");\n        var potentialViolations = {\n            top: boundaryRect.top + boundaryInset - finalTop,\n            left: boundaryRect.left + boundaryInset - finalLeft,\n            right: finalLeft + width - boundaryRect.right + boundaryInset,\n            bottom: finalTop + height - boundaryRect.bottom + boundaryInset,\n        };\n        var popoverState = {\n            childRect: childRect,\n            popoverRect: (0, util_1.createRect)({ left: finalLeft, top: finalTop, width: width, height: height }),\n            parentRect: parentRect,\n            boundaryRect: boundaryRect,\n            position: position,\n            align: align,\n            padding: padding,\n            nudgedTop: nudgedTop - top,\n            nudgedLeft: nudgedLeft - left,\n            boundaryInset: boundaryInset,\n            violations: {\n                top: potentialViolations.top <= 0 ? 0 : potentialViolations.top,\n                left: potentialViolations.left <= 0 ? 0 : potentialViolations.left,\n                right: potentialViolations.right <= 0 ? 0 : potentialViolations.right,\n                bottom: potentialViolations.bottom <= 0 ? 0 : potentialViolations.bottom,\n            },\n            hasViolations: potentialViolations.top > 0 ||\n                potentialViolations.left > 0 ||\n                potentialViolations.right > 0 ||\n                potentialViolations.bottom > 0,\n        };\n        if (transform) {\n            onPositionPopover(popoverState);\n            var _p = typeof transform === 'function' ? transform(popoverState) : transform, transformTop = _p.top, transformLeft = _p.left;\n            popoverRef.current.style.transform = \"translate(\".concat(Math.round(finalLeft + (transformLeft !== null && transformLeft !== void 0 ? transformLeft : 0)), \"px, \").concat(Math.round(finalTop + (transformTop !== null && transformTop !== void 0 ? transformTop : 0)), \"px)\");\n            popoverState.nudgedLeft += transformLeft !== null && transformLeft !== void 0 ? transformLeft : 0;\n            popoverState.nudgedTop += transformTop !== null && transformTop !== void 0 ? transformTop : 0;\n            popoverState.transform = { top: transformTop, left: transformLeft };\n        }\n        onPositionPopover(popoverState);\n    }, [\n        parentElement,\n        childRef,\n        scoutRef,\n        popoverRef,\n        boundaryElement,\n        isOpen,\n        transform,\n        transformMode,\n        positions,\n        align,\n        padding,\n        reposition,\n        boundaryInset,\n        onPositionPopover,\n    ]);\n    return { positionPopover: positionPopover, popoverRef: popoverRef, scoutRef: scoutRef };\n};\nexports.usePopover = usePopover;\n//# sourceMappingURL=usePopover.js.map","\"use strict\";\nvar __assign = (this && this.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getNudgedPopoverRect = exports.getNewPopoverRect = exports.popoverRectForPosition = exports.createContainer = exports.rectsAreEqual = exports.createRect = exports.EMPTY_RECT = void 0;\nexports.EMPTY_RECT = {\n    top: 0,\n    left: 0,\n    right: 0,\n    bottom: 0,\n    width: 0,\n    height: 0,\n};\nvar createRect = function (_a) {\n    var top = _a.top, left = _a.left, width = _a.width, height = _a.height;\n    return ({\n        top: top,\n        left: left,\n        width: width,\n        height: height,\n        right: left + width,\n        bottom: top + height,\n    });\n};\nexports.createRect = createRect;\nvar rectsAreEqual = function (rectA, rectB) {\n    return rectA === rectB ||\n        ((rectA === null || rectA === void 0 ? void 0 : rectA.bottom) === (rectB === null || rectB === void 0 ? void 0 : rectB.bottom) &&\n            (rectA === null || rectA === void 0 ? void 0 : rectA.height) === (rectB === null || rectB === void 0 ? void 0 : rectB.height) &&\n            (rectA === null || rectA === void 0 ? void 0 : rectA.left) === (rectB === null || rectB === void 0 ? void 0 : rectB.left) &&\n            (rectA === null || rectA === void 0 ? void 0 : rectA.right) === (rectB === null || rectB === void 0 ? void 0 : rectB.right) &&\n            (rectA === null || rectA === void 0 ? void 0 : rectA.top) === (rectB === null || rectB === void 0 ? void 0 : rectB.top) &&\n            (rectA === null || rectA === void 0 ? void 0 : rectA.width) === (rectB === null || rectB === void 0 ? void 0 : rectB.width));\n};\nexports.rectsAreEqual = rectsAreEqual;\nvar createContainer = function (_a) {\n    var containerStyle = _a.containerStyle, containerClassName = _a.containerClassName;\n    var container = window.document.createElement('div');\n    if (containerClassName)\n        container.className = containerClassName;\n    Object.assign(container.style, containerStyle);\n    return container;\n};\nexports.createContainer = createContainer;\nvar popoverRectForPosition = function (position, childRect, popoverRect, padding, align) {\n    var targetMidX = childRect.left + childRect.width / 2;\n    var targetMidY = childRect.top + childRect.height / 2;\n    var width = popoverRect.width, height = popoverRect.height;\n    var top;\n    var left;\n    switch (position) {\n        case 'left':\n            top = targetMidY - height / 2;\n            left = childRect.left - padding - width;\n            if (align === 'start') {\n                top = childRect.top;\n            }\n            if (align === 'end') {\n                top = childRect.bottom - height;\n            }\n            break;\n        case 'bottom':\n            top = childRect.bottom + padding;\n            left = targetMidX - width / 2;\n            if (align === 'start') {\n                left = childRect.left;\n            }\n            if (align === 'end') {\n                left = childRect.right - width;\n            }\n            break;\n        case 'right':\n            top = targetMidY - height / 2;\n            left = childRect.right + padding;\n            if (align === 'start') {\n                top = childRect.top;\n            }\n            if (align === 'end') {\n                top = childRect.bottom - height;\n            }\n            break;\n        default:\n            top = childRect.top - height - padding;\n            left = targetMidX - width / 2;\n            if (align === 'start') {\n                left = childRect.left;\n            }\n            if (align === 'end') {\n                left = childRect.right - width;\n            }\n            break;\n    }\n    return (0, exports.createRect)({ left: left, top: top, width: width, height: height });\n};\nexports.popoverRectForPosition = popoverRectForPosition;\nvar getNewPopoverRect = function (_a, boundaryInset) {\n    var position = _a.position, align = _a.align, childRect = _a.childRect, popoverRect = _a.popoverRect, boundaryRect = _a.boundaryRect, padding = _a.padding, reposition = _a.reposition;\n    var rect = (0, exports.popoverRectForPosition)(position, childRect, popoverRect, padding, align);\n    var boundaryViolation = reposition &&\n        ((position === 'top' && rect.top < boundaryRect.top + boundaryInset) ||\n            (position === 'left' && rect.left < boundaryRect.left + boundaryInset) ||\n            (position === 'right' && rect.right > boundaryRect.right - boundaryInset) ||\n            (position === 'bottom' && rect.bottom > boundaryRect.bottom - boundaryInset));\n    return {\n        rect: rect,\n        boundaryViolation: boundaryViolation,\n    };\n};\nexports.getNewPopoverRect = getNewPopoverRect;\nvar getNudgedPopoverRect = function (popoverRect, boundaryRect, boundaryInset) {\n    var topBoundary = boundaryRect.top + boundaryInset;\n    var leftBoundary = boundaryRect.left + boundaryInset;\n    var rightBoundary = boundaryRect.right - boundaryInset;\n    var bottomBoundary = boundaryRect.bottom - boundaryInset;\n    var top = popoverRect.top < topBoundary ? topBoundary : popoverRect.top;\n    top = top + popoverRect.height > bottomBoundary ? bottomBoundary - popoverRect.height : top;\n    var left = popoverRect.left < leftBoundary ? leftBoundary : popoverRect.left;\n    left = left + popoverRect.width > rightBoundary ? rightBoundary - popoverRect.width : left;\n    return (0, exports.createRect)(__assign(__assign({}, popoverRect), { top: top, left: left }));\n};\nexports.getNudgedPopoverRect = getNudgedPopoverRect;\n//# sourceMappingURL=util.js.map","import { Component, createElement } from 'react';\n\n/**\n * Detect Element Resize.\n * https://github.com/sdecima/javascript-detect-element-resize\n * Sebastian Decima\n *\n * Forked from version 0.5.3; includes the following modifications:\n * 1) Guard against unsafe 'window' and 'document' references (to support SSR).\n * 2) Defer initialization code via a top-level function wrapper (to support SSR).\n * 3) Avoid unnecessary reflows by not measuring size for scroll events bubbling from children.\n * 4) Add nonce for style element.\n * 5) Use 'export' statement over 'module.exports' assignment\n **/\n\n// Check `document` and `window` in case of server-side rendering\nlet windowObject;\nif (typeof window !== \"undefined\") {\n  windowObject = window;\n\n  // eslint-disable-next-line no-restricted-globals\n} else if (typeof self !== \"undefined\") {\n  // eslint-disable-next-line no-restricted-globals\n  windowObject = self;\n} else {\n  windowObject = global;\n}\nlet cancelFrame = null;\nlet requestFrame = null;\nconst TIMEOUT_DURATION = 20;\nconst clearTimeoutFn = windowObject.clearTimeout;\nconst setTimeoutFn = windowObject.setTimeout;\nconst cancelAnimationFrameFn = windowObject.cancelAnimationFrame || windowObject.mozCancelAnimationFrame || windowObject.webkitCancelAnimationFrame;\nconst requestAnimationFrameFn = windowObject.requestAnimationFrame || windowObject.mozRequestAnimationFrame || windowObject.webkitRequestAnimationFrame;\nif (cancelAnimationFrameFn == null || requestAnimationFrameFn == null) {\n  // For environments that don't support animation frame,\n  // fallback to a setTimeout based approach.\n  cancelFrame = clearTimeoutFn;\n  requestFrame = function requestAnimationFrameViaSetTimeout(callback) {\n    return setTimeoutFn(callback, TIMEOUT_DURATION);\n  };\n} else {\n  // Counter intuitively, environments that support animation frames can be trickier.\n  // Chrome's \"Throttle non-visible cross-origin iframes\" flag can prevent rAFs from being called.\n  // In this case, we should fallback to a setTimeout() implementation.\n  cancelFrame = function cancelFrame([animationFrameID, timeoutID]) {\n    cancelAnimationFrameFn(animationFrameID);\n    clearTimeoutFn(timeoutID);\n  };\n  requestFrame = function requestAnimationFrameWithSetTimeoutFallback(callback) {\n    const animationFrameID = requestAnimationFrameFn(function animationFrameCallback() {\n      clearTimeoutFn(timeoutID);\n      callback();\n    });\n    const timeoutID = setTimeoutFn(function timeoutCallback() {\n      cancelAnimationFrameFn(animationFrameID);\n      callback();\n    }, TIMEOUT_DURATION);\n    return [animationFrameID, timeoutID];\n  };\n}\nfunction createDetectElementResize(nonce) {\n  let animationKeyframes;\n  let animationName;\n  let animationStartEvent;\n  let animationStyle;\n  let checkTriggers;\n  let resetTriggers;\n  let scrollListener;\n  const attachEvent = typeof document !== \"undefined\" && document.attachEvent;\n  if (!attachEvent) {\n    resetTriggers = function (element) {\n      const triggers = element.__resizeTriggers__,\n        expand = triggers.firstElementChild,\n        contract = triggers.lastElementChild,\n        expandChild = expand.firstElementChild;\n      contract.scrollLeft = contract.scrollWidth;\n      contract.scrollTop = contract.scrollHeight;\n      expandChild.style.width = expand.offsetWidth + 1 + \"px\";\n      expandChild.style.height = expand.offsetHeight + 1 + \"px\";\n      expand.scrollLeft = expand.scrollWidth;\n      expand.scrollTop = expand.scrollHeight;\n    };\n    checkTriggers = function (element) {\n      return element.offsetWidth !== element.__resizeLast__.width || element.offsetHeight !== element.__resizeLast__.height;\n    };\n    scrollListener = function (e) {\n      // Don't measure (which forces) reflow for scrolls that happen inside of children!\n      if (e.target.className && typeof e.target.className.indexOf === \"function\" && e.target.className.indexOf(\"contract-trigger\") < 0 && e.target.className.indexOf(\"expand-trigger\") < 0) {\n        return;\n      }\n      const element = this;\n      resetTriggers(this);\n      if (this.__resizeRAF__) {\n        cancelFrame(this.__resizeRAF__);\n      }\n      this.__resizeRAF__ = requestFrame(function animationFrame() {\n        if (checkTriggers(element)) {\n          element.__resizeLast__.width = element.offsetWidth;\n          element.__resizeLast__.height = element.offsetHeight;\n          element.__resizeListeners__.forEach(function forEachResizeListener(fn) {\n            fn.call(element, e);\n          });\n        }\n      });\n    };\n\n    /* Detect CSS Animations support to detect element display/re-attach */\n    let animation = false;\n    let keyframeprefix = \"\";\n    animationStartEvent = \"animationstart\";\n    const domPrefixes = \"Webkit Moz O ms\".split(\" \");\n    let startEvents = \"webkitAnimationStart animationstart oAnimationStart MSAnimationStart\".split(\" \");\n    let pfx = \"\";\n    {\n      const elm = document.createElement(\"fakeelement\");\n      if (elm.style.animationName !== undefined) {\n        animation = true;\n      }\n      if (animation === false) {\n        for (let i = 0; i < domPrefixes.length; i++) {\n          if (elm.style[domPrefixes[i] + \"AnimationName\"] !== undefined) {\n            pfx = domPrefixes[i];\n            keyframeprefix = \"-\" + pfx.toLowerCase() + \"-\";\n            animationStartEvent = startEvents[i];\n            animation = true;\n            break;\n          }\n        }\n      }\n    }\n    animationName = \"resizeanim\";\n    animationKeyframes = \"@\" + keyframeprefix + \"keyframes \" + animationName + \" { from { opacity: 0; } to { opacity: 0; } } \";\n    animationStyle = keyframeprefix + \"animation: 1ms \" + animationName + \"; \";\n  }\n  const createStyles = function (doc) {\n    if (!doc.getElementById(\"detectElementResize\")) {\n      //opacity:0 works around a chrome bug https://code.google.com/p/chromium/issues/detail?id=286360\n      const css = (animationKeyframes ? animationKeyframes : \"\") + \".resize-triggers { \" + (animationStyle ? animationStyle : \"\") + \"visibility: hidden; opacity: 0; } \" + '.resize-triggers, .resize-triggers > div, .contract-trigger:before { content: \" \"; display: block; position: absolute; top: 0; left: 0; height: 100%; width: 100%; overflow: hidden; z-index: -1; } .resize-triggers > div { background: #eee; overflow: auto; } .contract-trigger:before { width: 200%; height: 200%; }',\n        head = doc.head || doc.getElementsByTagName(\"head\")[0],\n        style = doc.createElement(\"style\");\n      style.id = \"detectElementResize\";\n      style.type = \"text/css\";\n      if (nonce != null) {\n        style.setAttribute(\"nonce\", nonce);\n      }\n      if (style.styleSheet) {\n        style.styleSheet.cssText = css;\n      } else {\n        style.appendChild(doc.createTextNode(css));\n      }\n      head.appendChild(style);\n    }\n  };\n  const addResizeListener = function (element, fn) {\n    if (attachEvent) {\n      element.attachEvent(\"onresize\", fn);\n    } else {\n      if (!element.__resizeTriggers__) {\n        const doc = element.ownerDocument;\n        const elementStyle = windowObject.getComputedStyle(element);\n        if (elementStyle && elementStyle.position === \"static\") {\n          element.style.position = \"relative\";\n        }\n        createStyles(doc);\n        element.__resizeLast__ = {};\n        element.__resizeListeners__ = [];\n        (element.__resizeTriggers__ = doc.createElement(\"div\")).className = \"resize-triggers\";\n        const expandTrigger = doc.createElement(\"div\");\n        expandTrigger.className = \"expand-trigger\";\n        expandTrigger.appendChild(doc.createElement(\"div\"));\n        const contractTrigger = doc.createElement(\"div\");\n        contractTrigger.className = \"contract-trigger\";\n        element.__resizeTriggers__.appendChild(expandTrigger);\n        element.__resizeTriggers__.appendChild(contractTrigger);\n        element.appendChild(element.__resizeTriggers__);\n        resetTriggers(element);\n        element.addEventListener(\"scroll\", scrollListener, true);\n\n        /* Listen for a css animation to detect element display/re-attach */\n        if (animationStartEvent) {\n          element.__resizeTriggers__.__animationListener__ = function animationListener(e) {\n            if (e.animationName === animationName) {\n              resetTriggers(element);\n            }\n          };\n          element.__resizeTriggers__.addEventListener(animationStartEvent, element.__resizeTriggers__.__animationListener__);\n        }\n      }\n      element.__resizeListeners__.push(fn);\n    }\n  };\n  const removeResizeListener = function (element, fn) {\n    if (attachEvent) {\n      element.detachEvent(\"onresize\", fn);\n    } else {\n      element.__resizeListeners__.splice(element.__resizeListeners__.indexOf(fn), 1);\n      if (!element.__resizeListeners__.length) {\n        element.removeEventListener(\"scroll\", scrollListener, true);\n        if (element.__resizeTriggers__.__animationListener__) {\n          element.__resizeTriggers__.removeEventListener(animationStartEvent, element.__resizeTriggers__.__animationListener__);\n          element.__resizeTriggers__.__animationListener__ = null;\n        }\n        try {\n          element.__resizeTriggers__ = !element.removeChild(element.__resizeTriggers__);\n        } catch (e) {\n          // Preact compat; see developit/preact-compat/issues/228\n        }\n      }\n    }\n  };\n  return {\n    addResizeListener,\n    removeResizeListener\n  };\n}\n\nclass AutoSizer extends Component {\n  constructor(...args) {\n    super(...args);\n    this.state = {\n      height: this.props.defaultHeight || 0,\n      scaledHeight: this.props.defaultHeight || 0,\n      scaledWidth: this.props.defaultWidth || 0,\n      width: this.props.defaultWidth || 0\n    };\n    this._autoSizer = null;\n    this._detectElementResize = null;\n    this._parentNode = null;\n    this._resizeObserver = null;\n    this._timeoutId = null;\n    this._onResize = () => {\n      this._timeoutId = null;\n      const {\n        disableHeight,\n        disableWidth,\n        onResize\n      } = this.props;\n      if (this._parentNode) {\n        // Guard against AutoSizer component being removed from the DOM immediately after being added.\n        // This can result in invalid style values which can result in NaN values if we don't handle them.\n        // See issue #150 for more context.\n\n        const style = window.getComputedStyle(this._parentNode) || {};\n        const paddingLeft = parseFloat(style.paddingLeft || \"0\");\n        const paddingRight = parseFloat(style.paddingRight || \"0\");\n        const paddingTop = parseFloat(style.paddingTop || \"0\");\n        const paddingBottom = parseFloat(style.paddingBottom || \"0\");\n        const rect = this._parentNode.getBoundingClientRect();\n        const scaledHeight = rect.height - paddingTop - paddingBottom;\n        const scaledWidth = rect.width - paddingLeft - paddingRight;\n        const height = this._parentNode.offsetHeight - paddingTop - paddingBottom;\n        const width = this._parentNode.offsetWidth - paddingLeft - paddingRight;\n        if (!disableHeight && (this.state.height !== height || this.state.scaledHeight !== scaledHeight) || !disableWidth && (this.state.width !== width || this.state.scaledWidth !== scaledWidth)) {\n          this.setState({\n            height,\n            width,\n            scaledHeight,\n            scaledWidth\n          });\n          if (typeof onResize === \"function\") {\n            onResize({\n              height,\n              scaledHeight,\n              scaledWidth,\n              width\n            });\n          }\n        }\n      }\n    };\n    this._setRef = autoSizer => {\n      this._autoSizer = autoSizer;\n    };\n  }\n  componentDidMount() {\n    const {\n      nonce\n    } = this.props;\n    const parentNode = this._autoSizer ? this._autoSizer.parentNode : null;\n    if (parentNode != null && parentNode.ownerDocument && parentNode.ownerDocument.defaultView && parentNode instanceof parentNode.ownerDocument.defaultView.HTMLElement) {\n      // Delay access of parentNode until mount.\n      // This handles edge-cases where the component has already been unmounted before its ref has been set,\n      // As well as libraries like react-lite which have a slightly different lifecycle.\n      this._parentNode = parentNode;\n\n      // Use ResizeObserver from the same context where parentNode (which we will observe) was defined\n      // Using just global can result into onResize events not being emitted in cases with multiple realms\n      const ResizeObserverInstance = parentNode.ownerDocument.defaultView.ResizeObserver;\n      if (ResizeObserverInstance != null) {\n        this._resizeObserver = new ResizeObserverInstance(() => {\n          // Guard against \"ResizeObserver loop limit exceeded\" error;\n          // could be triggered if the state update causes the ResizeObserver handler to run long.\n          // See https://github.com/bvaughn/react-virtualized-auto-sizer/issues/55\n          this._timeoutId = setTimeout(this._onResize, 0);\n        });\n        this._resizeObserver.observe(parentNode);\n      } else {\n        // Defer requiring resize handler in order to support server-side rendering.\n        // See issue #41\n        this._detectElementResize = createDetectElementResize(nonce);\n        this._detectElementResize.addResizeListener(parentNode, this._onResize);\n      }\n      this._onResize();\n    }\n  }\n  componentWillUnmount() {\n    if (this._parentNode) {\n      if (this._detectElementResize) {\n        this._detectElementResize.removeResizeListener(this._parentNode, this._onResize);\n      }\n      if (this._timeoutId !== null) {\n        clearTimeout(this._timeoutId);\n      }\n      if (this._resizeObserver) {\n        this._resizeObserver.disconnect();\n      }\n    }\n  }\n  render() {\n    const {\n      children,\n      defaultHeight,\n      defaultWidth,\n      disableHeight = false,\n      disableWidth = false,\n      doNotBailOutOnEmptyChildren = false,\n      nonce,\n      onResize,\n      style = {},\n      tagName = \"div\",\n      ...rest\n    } = this.props;\n    const {\n      height,\n      scaledHeight,\n      scaledWidth,\n      width\n    } = this.state;\n\n    // Outer div should not force width/height since that may prevent containers from shrinking.\n    // Inner component should overflow and use calculated width/height.\n    // See issue #68 for more information.\n    const outerStyle = {\n      overflow: \"visible\"\n    };\n    const childParams = {};\n\n    // Avoid rendering children before the initial measurements have been collected.\n    // At best this would just be wasting cycles.\n    let bailoutOnChildren = false;\n    if (!disableHeight) {\n      if (height === 0) {\n        bailoutOnChildren = true;\n      }\n      outerStyle.height = 0;\n      childParams.height = height;\n      childParams.scaledHeight = scaledHeight;\n    }\n    if (!disableWidth) {\n      if (width === 0) {\n        bailoutOnChildren = true;\n      }\n      outerStyle.width = 0;\n      childParams.width = width;\n      childParams.scaledWidth = scaledWidth;\n    }\n    if (doNotBailOutOnEmptyChildren) {\n      bailoutOnChildren = false;\n    }\n    return createElement(tagName, {\n      ref: this._setRef,\n      style: {\n        ...outerStyle,\n        ...style\n      },\n      ...rest\n    }, !bailoutOnChildren && children(childParams));\n  }\n}\n\nfunction isHeightAndWidthProps(props) {\n  return props && props.disableHeight !== true && props.disableWidth !== true;\n}\nfunction isHeightOnlyProps(props) {\n  return props && props.disableHeight !== true && props.disableWidth === true;\n}\nfunction isWidthOnlyProps(props) {\n  return props && props.disableHeight === true && props.disableWidth !== true;\n}\n\nexport { AutoSizer as default, isHeightAndWidthProps, isHeightOnlyProps, isWidthOnlyProps };\n","import _extends from '@babel/runtime/helpers/esm/extends';\nimport _assertThisInitialized from '@babel/runtime/helpers/esm/assertThisInitialized';\nimport _inheritsLoose from '@babel/runtime/helpers/esm/inheritsLoose';\nimport memoizeOne from 'memoize-one';\nimport { createElement, PureComponent } from 'react';\nimport _objectWithoutPropertiesLoose from '@babel/runtime/helpers/esm/objectWithoutPropertiesLoose';\n\n// Animation frame based implementation of setTimeout.\n// Inspired by Joe Lambert, https://gist.github.com/joelambert/1002116#file-requesttimeout-js\nvar hasNativePerformanceNow = typeof performance === 'object' && typeof performance.now === 'function';\nvar now = hasNativePerformanceNow ? function () {\n  return performance.now();\n} : function () {\n  return Date.now();\n};\nfunction cancelTimeout(timeoutID) {\n  cancelAnimationFrame(timeoutID.id);\n}\nfunction requestTimeout(callback, delay) {\n  var start = now();\n\n  function tick() {\n    if (now() - start >= delay) {\n      callback.call(null);\n    } else {\n      timeoutID.id = requestAnimationFrame(tick);\n    }\n  }\n\n  var timeoutID = {\n    id: requestAnimationFrame(tick)\n  };\n  return timeoutID;\n}\n\nvar size = -1; // This utility copied from \"dom-helpers\" package.\n\nfunction getScrollbarSize(recalculate) {\n  if (recalculate === void 0) {\n    recalculate = false;\n  }\n\n  if (size === -1 || recalculate) {\n    var div = document.createElement('div');\n    var style = div.style;\n    style.width = '50px';\n    style.height = '50px';\n    style.overflow = 'scroll';\n    document.body.appendChild(div);\n    size = div.offsetWidth - div.clientWidth;\n    document.body.removeChild(div);\n  }\n\n  return size;\n}\nvar cachedRTLResult = null; // TRICKY According to the spec, scrollLeft should be negative for RTL aligned elements.\n// Chrome does not seem to adhere; its scrollLeft values are positive (measured relative to the left).\n// Safari's elastic bounce makes detecting this even more complicated wrt potential false positives.\n// The safest way to check this is to intentionally set a negative offset,\n// and then verify that the subsequent \"scroll\" event matches the negative offset.\n// If it does not match, then we can assume a non-standard RTL scroll implementation.\n\nfunction getRTLOffsetType(recalculate) {\n  if (recalculate === void 0) {\n    recalculate = false;\n  }\n\n  if (cachedRTLResult === null || recalculate) {\n    var outerDiv = document.createElement('div');\n    var outerStyle = outerDiv.style;\n    outerStyle.width = '50px';\n    outerStyle.height = '50px';\n    outerStyle.overflow = 'scroll';\n    outerStyle.direction = 'rtl';\n    var innerDiv = document.createElement('div');\n    var innerStyle = innerDiv.style;\n    innerStyle.width = '100px';\n    innerStyle.height = '100px';\n    outerDiv.appendChild(innerDiv);\n    document.body.appendChild(outerDiv);\n\n    if (outerDiv.scrollLeft > 0) {\n      cachedRTLResult = 'positive-descending';\n    } else {\n      outerDiv.scrollLeft = 1;\n\n      if (outerDiv.scrollLeft === 0) {\n        cachedRTLResult = 'negative';\n      } else {\n        cachedRTLResult = 'positive-ascending';\n      }\n    }\n\n    document.body.removeChild(outerDiv);\n    return cachedRTLResult;\n  }\n\n  return cachedRTLResult;\n}\n\nvar IS_SCROLLING_DEBOUNCE_INTERVAL = 150;\n\nvar defaultItemKey = function defaultItemKey(_ref) {\n  var columnIndex = _ref.columnIndex,\n      data = _ref.data,\n      rowIndex = _ref.rowIndex;\n  return rowIndex + \":\" + columnIndex;\n}; // In DEV mode, this Set helps us only log a warning once per component instance.\n// This avoids spamming the console every time a render happens.\n\n\nvar devWarningsOverscanCount = null;\nvar devWarningsOverscanRowsColumnsCount = null;\nvar devWarningsTagName = null;\n\nif (process.env.NODE_ENV !== 'production') {\n  if (typeof window !== 'undefined' && typeof window.WeakSet !== 'undefined') {\n    devWarningsOverscanCount = /*#__PURE__*/new WeakSet();\n    devWarningsOverscanRowsColumnsCount = /*#__PURE__*/new WeakSet();\n    devWarningsTagName = /*#__PURE__*/new WeakSet();\n  }\n}\n\nfunction createGridComponent(_ref2) {\n  var _class;\n\n  var getColumnOffset = _ref2.getColumnOffset,\n      getColumnStartIndexForOffset = _ref2.getColumnStartIndexForOffset,\n      getColumnStopIndexForStartIndex = _ref2.getColumnStopIndexForStartIndex,\n      getColumnWidth = _ref2.getColumnWidth,\n      getEstimatedTotalHeight = _ref2.getEstimatedTotalHeight,\n      getEstimatedTotalWidth = _ref2.getEstimatedTotalWidth,\n      getOffsetForColumnAndAlignment = _ref2.getOffsetForColumnAndAlignment,\n      getOffsetForRowAndAlignment = _ref2.getOffsetForRowAndAlignment,\n      getRowHeight = _ref2.getRowHeight,\n      getRowOffset = _ref2.getRowOffset,\n      getRowStartIndexForOffset = _ref2.getRowStartIndexForOffset,\n      getRowStopIndexForStartIndex = _ref2.getRowStopIndexForStartIndex,\n      initInstanceProps = _ref2.initInstanceProps,\n      shouldResetStyleCacheOnItemSizeChange = _ref2.shouldResetStyleCacheOnItemSizeChange,\n      validateProps = _ref2.validateProps;\n  return _class = /*#__PURE__*/function (_PureComponent) {\n    _inheritsLoose(Grid, _PureComponent);\n\n    // Always use explicit constructor for React components.\n    // It produces less code after transpilation. (#26)\n    // eslint-disable-next-line no-useless-constructor\n    function Grid(props) {\n      var _this;\n\n      _this = _PureComponent.call(this, props) || this;\n      _this._instanceProps = initInstanceProps(_this.props, _assertThisInitialized(_this));\n      _this._resetIsScrollingTimeoutId = null;\n      _this._outerRef = void 0;\n      _this.state = {\n        instance: _assertThisInitialized(_this),\n        isScrolling: false,\n        horizontalScrollDirection: 'forward',\n        scrollLeft: typeof _this.props.initialScrollLeft === 'number' ? _this.props.initialScrollLeft : 0,\n        scrollTop: typeof _this.props.initialScrollTop === 'number' ? _this.props.initialScrollTop : 0,\n        scrollUpdateWasRequested: false,\n        verticalScrollDirection: 'forward'\n      };\n      _this._callOnItemsRendered = void 0;\n      _this._callOnItemsRendered = memoizeOne(function (overscanColumnStartIndex, overscanColumnStopIndex, overscanRowStartIndex, overscanRowStopIndex, visibleColumnStartIndex, visibleColumnStopIndex, visibleRowStartIndex, visibleRowStopIndex) {\n        return _this.props.onItemsRendered({\n          overscanColumnStartIndex: overscanColumnStartIndex,\n          overscanColumnStopIndex: overscanColumnStopIndex,\n          overscanRowStartIndex: overscanRowStartIndex,\n          overscanRowStopIndex: overscanRowStopIndex,\n          visibleColumnStartIndex: visibleColumnStartIndex,\n          visibleColumnStopIndex: visibleColumnStopIndex,\n          visibleRowStartIndex: visibleRowStartIndex,\n          visibleRowStopIndex: visibleRowStopIndex\n        });\n      });\n      _this._callOnScroll = void 0;\n      _this._callOnScroll = memoizeOne(function (scrollLeft, scrollTop, horizontalScrollDirection, verticalScrollDirection, scrollUpdateWasRequested) {\n        return _this.props.onScroll({\n          horizontalScrollDirection: horizontalScrollDirection,\n          scrollLeft: scrollLeft,\n          scrollTop: scrollTop,\n          verticalScrollDirection: verticalScrollDirection,\n          scrollUpdateWasRequested: scrollUpdateWasRequested\n        });\n      });\n      _this._getItemStyle = void 0;\n\n      _this._getItemStyle = function (rowIndex, columnIndex) {\n        var _this$props = _this.props,\n            columnWidth = _this$props.columnWidth,\n            direction = _this$props.direction,\n            rowHeight = _this$props.rowHeight;\n\n        var itemStyleCache = _this._getItemStyleCache(shouldResetStyleCacheOnItemSizeChange && columnWidth, shouldResetStyleCacheOnItemSizeChange && direction, shouldResetStyleCacheOnItemSizeChange && rowHeight);\n\n        var key = rowIndex + \":\" + columnIndex;\n        var style;\n\n        if (itemStyleCache.hasOwnProperty(key)) {\n          style = itemStyleCache[key];\n        } else {\n          var _offset = getColumnOffset(_this.props, columnIndex, _this._instanceProps);\n\n          var isRtl = direction === 'rtl';\n          itemStyleCache[key] = style = {\n            position: 'absolute',\n            left: isRtl ? undefined : _offset,\n            right: isRtl ? _offset : undefined,\n            top: getRowOffset(_this.props, rowIndex, _this._instanceProps),\n            height: getRowHeight(_this.props, rowIndex, _this._instanceProps),\n            width: getColumnWidth(_this.props, columnIndex, _this._instanceProps)\n          };\n        }\n\n        return style;\n      };\n\n      _this._getItemStyleCache = void 0;\n      _this._getItemStyleCache = memoizeOne(function (_, __, ___) {\n        return {};\n      });\n\n      _this._onScroll = function (event) {\n        var _event$currentTarget = event.currentTarget,\n            clientHeight = _event$currentTarget.clientHeight,\n            clientWidth = _event$currentTarget.clientWidth,\n            scrollLeft = _event$currentTarget.scrollLeft,\n            scrollTop = _event$currentTarget.scrollTop,\n            scrollHeight = _event$currentTarget.scrollHeight,\n            scrollWidth = _event$currentTarget.scrollWidth;\n\n        _this.setState(function (prevState) {\n          if (prevState.scrollLeft === scrollLeft && prevState.scrollTop === scrollTop) {\n            // Scroll position may have been updated by cDM/cDU,\n            // In which case we don't need to trigger another render,\n            // And we don't want to update state.isScrolling.\n            return null;\n          }\n\n          var direction = _this.props.direction; // TRICKY According to the spec, scrollLeft should be negative for RTL aligned elements.\n          // This is not the case for all browsers though (e.g. Chrome reports values as positive, measured relative to the left).\n          // It's also easier for this component if we convert offsets to the same format as they would be in for ltr.\n          // So the simplest solution is to determine which browser behavior we're dealing with, and convert based on it.\n\n          var calculatedScrollLeft = scrollLeft;\n\n          if (direction === 'rtl') {\n            switch (getRTLOffsetType()) {\n              case 'negative':\n                calculatedScrollLeft = -scrollLeft;\n                break;\n\n              case 'positive-descending':\n                calculatedScrollLeft = scrollWidth - clientWidth - scrollLeft;\n                break;\n            }\n          } // Prevent Safari's elastic scrolling from causing visual shaking when scrolling past bounds.\n\n\n          calculatedScrollLeft = Math.max(0, Math.min(calculatedScrollLeft, scrollWidth - clientWidth));\n          var calculatedScrollTop = Math.max(0, Math.min(scrollTop, scrollHeight - clientHeight));\n          return {\n            isScrolling: true,\n            horizontalScrollDirection: prevState.scrollLeft < scrollLeft ? 'forward' : 'backward',\n            scrollLeft: calculatedScrollLeft,\n            scrollTop: calculatedScrollTop,\n            verticalScrollDirection: prevState.scrollTop < scrollTop ? 'forward' : 'backward',\n            scrollUpdateWasRequested: false\n          };\n        }, _this._resetIsScrollingDebounced);\n      };\n\n      _this._outerRefSetter = function (ref) {\n        var outerRef = _this.props.outerRef;\n        _this._outerRef = ref;\n\n        if (typeof outerRef === 'function') {\n          outerRef(ref);\n        } else if (outerRef != null && typeof outerRef === 'object' && outerRef.hasOwnProperty('current')) {\n          outerRef.current = ref;\n        }\n      };\n\n      _this._resetIsScrollingDebounced = function () {\n        if (_this._resetIsScrollingTimeoutId !== null) {\n          cancelTimeout(_this._resetIsScrollingTimeoutId);\n        }\n\n        _this._resetIsScrollingTimeoutId = requestTimeout(_this._resetIsScrolling, IS_SCROLLING_DEBOUNCE_INTERVAL);\n      };\n\n      _this._resetIsScrolling = function () {\n        _this._resetIsScrollingTimeoutId = null;\n\n        _this.setState({\n          isScrolling: false\n        }, function () {\n          // Clear style cache after state update has been committed.\n          // This way we don't break pure sCU for items that don't use isScrolling param.\n          _this._getItemStyleCache(-1);\n        });\n      };\n\n      return _this;\n    }\n\n    Grid.getDerivedStateFromProps = function getDerivedStateFromProps(nextProps, prevState) {\n      validateSharedProps(nextProps, prevState);\n      validateProps(nextProps);\n      return null;\n    };\n\n    var _proto = Grid.prototype;\n\n    _proto.scrollTo = function scrollTo(_ref3) {\n      var scrollLeft = _ref3.scrollLeft,\n          scrollTop = _ref3.scrollTop;\n\n      if (scrollLeft !== undefined) {\n        scrollLeft = Math.max(0, scrollLeft);\n      }\n\n      if (scrollTop !== undefined) {\n        scrollTop = Math.max(0, scrollTop);\n      }\n\n      this.setState(function (prevState) {\n        if (scrollLeft === undefined) {\n          scrollLeft = prevState.scrollLeft;\n        }\n\n        if (scrollTop === undefined) {\n          scrollTop = prevState.scrollTop;\n        }\n\n        if (prevState.scrollLeft === scrollLeft && prevState.scrollTop === scrollTop) {\n          return null;\n        }\n\n        return {\n          horizontalScrollDirection: prevState.scrollLeft < scrollLeft ? 'forward' : 'backward',\n          scrollLeft: scrollLeft,\n          scrollTop: scrollTop,\n          scrollUpdateWasRequested: true,\n          verticalScrollDirection: prevState.scrollTop < scrollTop ? 'forward' : 'backward'\n        };\n      }, this._resetIsScrollingDebounced);\n    };\n\n    _proto.scrollToItem = function scrollToItem(_ref4) {\n      var _ref4$align = _ref4.align,\n          align = _ref4$align === void 0 ? 'auto' : _ref4$align,\n          columnIndex = _ref4.columnIndex,\n          rowIndex = _ref4.rowIndex;\n      var _this$props2 = this.props,\n          columnCount = _this$props2.columnCount,\n          height = _this$props2.height,\n          rowCount = _this$props2.rowCount,\n          width = _this$props2.width;\n      var _this$state = this.state,\n          scrollLeft = _this$state.scrollLeft,\n          scrollTop = _this$state.scrollTop;\n      var scrollbarSize = getScrollbarSize();\n\n      if (columnIndex !== undefined) {\n        columnIndex = Math.max(0, Math.min(columnIndex, columnCount - 1));\n      }\n\n      if (rowIndex !== undefined) {\n        rowIndex = Math.max(0, Math.min(rowIndex, rowCount - 1));\n      }\n\n      var estimatedTotalHeight = getEstimatedTotalHeight(this.props, this._instanceProps);\n      var estimatedTotalWidth = getEstimatedTotalWidth(this.props, this._instanceProps); // The scrollbar size should be considered when scrolling an item into view,\n      // to ensure it's fully visible.\n      // But we only need to account for its size when it's actually visible.\n\n      var horizontalScrollbarSize = estimatedTotalWidth > width ? scrollbarSize : 0;\n      var verticalScrollbarSize = estimatedTotalHeight > height ? scrollbarSize : 0;\n      this.scrollTo({\n        scrollLeft: columnIndex !== undefined ? getOffsetForColumnAndAlignment(this.props, columnIndex, align, scrollLeft, this._instanceProps, verticalScrollbarSize) : scrollLeft,\n        scrollTop: rowIndex !== undefined ? getOffsetForRowAndAlignment(this.props, rowIndex, align, scrollTop, this._instanceProps, horizontalScrollbarSize) : scrollTop\n      });\n    };\n\n    _proto.componentDidMount = function componentDidMount() {\n      var _this$props3 = this.props,\n          initialScrollLeft = _this$props3.initialScrollLeft,\n          initialScrollTop = _this$props3.initialScrollTop;\n\n      if (this._outerRef != null) {\n        var outerRef = this._outerRef;\n\n        if (typeof initialScrollLeft === 'number') {\n          outerRef.scrollLeft = initialScrollLeft;\n        }\n\n        if (typeof initialScrollTop === 'number') {\n          outerRef.scrollTop = initialScrollTop;\n        }\n      }\n\n      this._callPropsCallbacks();\n    };\n\n    _proto.componentDidUpdate = function componentDidUpdate() {\n      var direction = this.props.direction;\n      var _this$state2 = this.state,\n          scrollLeft = _this$state2.scrollLeft,\n          scrollTop = _this$state2.scrollTop,\n          scrollUpdateWasRequested = _this$state2.scrollUpdateWasRequested;\n\n      if (scrollUpdateWasRequested && this._outerRef != null) {\n        // TRICKY According to the spec, scrollLeft should be negative for RTL aligned elements.\n        // This is not the case for all browsers though (e.g. Chrome reports values as positive, measured relative to the left).\n        // So we need to determine which browser behavior we're dealing with, and mimic it.\n        var outerRef = this._outerRef;\n\n        if (direction === 'rtl') {\n          switch (getRTLOffsetType()) {\n            case 'negative':\n              outerRef.scrollLeft = -scrollLeft;\n              break;\n\n            case 'positive-ascending':\n              outerRef.scrollLeft = scrollLeft;\n              break;\n\n            default:\n              var clientWidth = outerRef.clientWidth,\n                  scrollWidth = outerRef.scrollWidth;\n              outerRef.scrollLeft = scrollWidth - clientWidth - scrollLeft;\n              break;\n          }\n        } else {\n          outerRef.scrollLeft = Math.max(0, scrollLeft);\n        }\n\n        outerRef.scrollTop = Math.max(0, scrollTop);\n      }\n\n      this._callPropsCallbacks();\n    };\n\n    _proto.componentWillUnmount = function componentWillUnmount() {\n      if (this._resetIsScrollingTimeoutId !== null) {\n        cancelTimeout(this._resetIsScrollingTimeoutId);\n      }\n    };\n\n    _proto.render = function render() {\n      var _this$props4 = this.props,\n          children = _this$props4.children,\n          className = _this$props4.className,\n          columnCount = _this$props4.columnCount,\n          direction = _this$props4.direction,\n          height = _this$props4.height,\n          innerRef = _this$props4.innerRef,\n          innerElementType = _this$props4.innerElementType,\n          innerTagName = _this$props4.innerTagName,\n          itemData = _this$props4.itemData,\n          _this$props4$itemKey = _this$props4.itemKey,\n          itemKey = _this$props4$itemKey === void 0 ? defaultItemKey : _this$props4$itemKey,\n          outerElementType = _this$props4.outerElementType,\n          outerTagName = _this$props4.outerTagName,\n          rowCount = _this$props4.rowCount,\n          style = _this$props4.style,\n          useIsScrolling = _this$props4.useIsScrolling,\n          width = _this$props4.width;\n      var isScrolling = this.state.isScrolling;\n\n      var _this$_getHorizontalR = this._getHorizontalRangeToRender(),\n          columnStartIndex = _this$_getHorizontalR[0],\n          columnStopIndex = _this$_getHorizontalR[1];\n\n      var _this$_getVerticalRan = this._getVerticalRangeToRender(),\n          rowStartIndex = _this$_getVerticalRan[0],\n          rowStopIndex = _this$_getVerticalRan[1];\n\n      var items = [];\n\n      if (columnCount > 0 && rowCount) {\n        for (var _rowIndex = rowStartIndex; _rowIndex <= rowStopIndex; _rowIndex++) {\n          for (var _columnIndex = columnStartIndex; _columnIndex <= columnStopIndex; _columnIndex++) {\n            items.push(createElement(children, {\n              columnIndex: _columnIndex,\n              data: itemData,\n              isScrolling: useIsScrolling ? isScrolling : undefined,\n              key: itemKey({\n                columnIndex: _columnIndex,\n                data: itemData,\n                rowIndex: _rowIndex\n              }),\n              rowIndex: _rowIndex,\n              style: this._getItemStyle(_rowIndex, _columnIndex)\n            }));\n          }\n        }\n      } // Read this value AFTER items have been created,\n      // So their actual sizes (if variable) are taken into consideration.\n\n\n      var estimatedTotalHeight = getEstimatedTotalHeight(this.props, this._instanceProps);\n      var estimatedTotalWidth = getEstimatedTotalWidth(this.props, this._instanceProps);\n      return createElement(outerElementType || outerTagName || 'div', {\n        className: className,\n        onScroll: this._onScroll,\n        ref: this._outerRefSetter,\n        style: _extends({\n          position: 'relative',\n          height: height,\n          width: width,\n          overflow: 'auto',\n          WebkitOverflowScrolling: 'touch',\n          willChange: 'transform',\n          direction: direction\n        }, style)\n      }, createElement(innerElementType || innerTagName || 'div', {\n        children: items,\n        ref: innerRef,\n        style: {\n          height: estimatedTotalHeight,\n          pointerEvents: isScrolling ? 'none' : undefined,\n          width: estimatedTotalWidth\n        }\n      }));\n    };\n\n    _proto._callPropsCallbacks = function _callPropsCallbacks() {\n      var _this$props5 = this.props,\n          columnCount = _this$props5.columnCount,\n          onItemsRendered = _this$props5.onItemsRendered,\n          onScroll = _this$props5.onScroll,\n          rowCount = _this$props5.rowCount;\n\n      if (typeof onItemsRendered === 'function') {\n        if (columnCount > 0 && rowCount > 0) {\n          var _this$_getHorizontalR2 = this._getHorizontalRangeToRender(),\n              _overscanColumnStartIndex = _this$_getHorizontalR2[0],\n              _overscanColumnStopIndex = _this$_getHorizontalR2[1],\n              _visibleColumnStartIndex = _this$_getHorizontalR2[2],\n              _visibleColumnStopIndex = _this$_getHorizontalR2[3];\n\n          var _this$_getVerticalRan2 = this._getVerticalRangeToRender(),\n              _overscanRowStartIndex = _this$_getVerticalRan2[0],\n              _overscanRowStopIndex = _this$_getVerticalRan2[1],\n              _visibleRowStartIndex = _this$_getVerticalRan2[2],\n              _visibleRowStopIndex = _this$_getVerticalRan2[3];\n\n          this._callOnItemsRendered(_overscanColumnStartIndex, _overscanColumnStopIndex, _overscanRowStartIndex, _overscanRowStopIndex, _visibleColumnStartIndex, _visibleColumnStopIndex, _visibleRowStartIndex, _visibleRowStopIndex);\n        }\n      }\n\n      if (typeof onScroll === 'function') {\n        var _this$state3 = this.state,\n            _horizontalScrollDirection = _this$state3.horizontalScrollDirection,\n            _scrollLeft = _this$state3.scrollLeft,\n            _scrollTop = _this$state3.scrollTop,\n            _scrollUpdateWasRequested = _this$state3.scrollUpdateWasRequested,\n            _verticalScrollDirection = _this$state3.verticalScrollDirection;\n\n        this._callOnScroll(_scrollLeft, _scrollTop, _horizontalScrollDirection, _verticalScrollDirection, _scrollUpdateWasRequested);\n      }\n    } // Lazily create and cache item styles while scrolling,\n    // So that pure component sCU will prevent re-renders.\n    // We maintain this cache, and pass a style prop rather than index,\n    // So that List can clear cached styles and force item re-render if necessary.\n    ;\n\n    _proto._getHorizontalRangeToRender = function _getHorizontalRangeToRender() {\n      var _this$props6 = this.props,\n          columnCount = _this$props6.columnCount,\n          overscanColumnCount = _this$props6.overscanColumnCount,\n          overscanColumnsCount = _this$props6.overscanColumnsCount,\n          overscanCount = _this$props6.overscanCount,\n          rowCount = _this$props6.rowCount;\n      var _this$state4 = this.state,\n          horizontalScrollDirection = _this$state4.horizontalScrollDirection,\n          isScrolling = _this$state4.isScrolling,\n          scrollLeft = _this$state4.scrollLeft;\n      var overscanCountResolved = overscanColumnCount || overscanColumnsCount || overscanCount || 1;\n\n      if (columnCount === 0 || rowCount === 0) {\n        return [0, 0, 0, 0];\n      }\n\n      var startIndex = getColumnStartIndexForOffset(this.props, scrollLeft, this._instanceProps);\n      var stopIndex = getColumnStopIndexForStartIndex(this.props, startIndex, scrollLeft, this._instanceProps); // Overscan by one item in each direction so that tab/focus works.\n      // If there isn't at least one extra item, tab loops back around.\n\n      var overscanBackward = !isScrolling || horizontalScrollDirection === 'backward' ? Math.max(1, overscanCountResolved) : 1;\n      var overscanForward = !isScrolling || horizontalScrollDirection === 'forward' ? Math.max(1, overscanCountResolved) : 1;\n      return [Math.max(0, startIndex - overscanBackward), Math.max(0, Math.min(columnCount - 1, stopIndex + overscanForward)), startIndex, stopIndex];\n    };\n\n    _proto._getVerticalRangeToRender = function _getVerticalRangeToRender() {\n      var _this$props7 = this.props,\n          columnCount = _this$props7.columnCount,\n          overscanCount = _this$props7.overscanCount,\n          overscanRowCount = _this$props7.overscanRowCount,\n          overscanRowsCount = _this$props7.overscanRowsCount,\n          rowCount = _this$props7.rowCount;\n      var _this$state5 = this.state,\n          isScrolling = _this$state5.isScrolling,\n          verticalScrollDirection = _this$state5.verticalScrollDirection,\n          scrollTop = _this$state5.scrollTop;\n      var overscanCountResolved = overscanRowCount || overscanRowsCount || overscanCount || 1;\n\n      if (columnCount === 0 || rowCount === 0) {\n        return [0, 0, 0, 0];\n      }\n\n      var startIndex = getRowStartIndexForOffset(this.props, scrollTop, this._instanceProps);\n      var stopIndex = getRowStopIndexForStartIndex(this.props, startIndex, scrollTop, this._instanceProps); // Overscan by one item in each direction so that tab/focus works.\n      // If there isn't at least one extra item, tab loops back around.\n\n      var overscanBackward = !isScrolling || verticalScrollDirection === 'backward' ? Math.max(1, overscanCountResolved) : 1;\n      var overscanForward = !isScrolling || verticalScrollDirection === 'forward' ? Math.max(1, overscanCountResolved) : 1;\n      return [Math.max(0, startIndex - overscanBackward), Math.max(0, Math.min(rowCount - 1, stopIndex + overscanForward)), startIndex, stopIndex];\n    };\n\n    return Grid;\n  }(PureComponent), _class.defaultProps = {\n    direction: 'ltr',\n    itemData: undefined,\n    useIsScrolling: false\n  }, _class;\n}\n\nvar validateSharedProps = function validateSharedProps(_ref5, _ref6) {\n  var children = _ref5.children,\n      direction = _ref5.direction,\n      height = _ref5.height,\n      innerTagName = _ref5.innerTagName,\n      outerTagName = _ref5.outerTagName,\n      overscanColumnsCount = _ref5.overscanColumnsCount,\n      overscanCount = _ref5.overscanCount,\n      overscanRowsCount = _ref5.overscanRowsCount,\n      width = _ref5.width;\n  var instance = _ref6.instance;\n\n  if (process.env.NODE_ENV !== 'production') {\n    if (typeof overscanCount === 'number') {\n      if (devWarningsOverscanCount && !devWarningsOverscanCount.has(instance)) {\n        devWarningsOverscanCount.add(instance);\n        console.warn('The overscanCount prop has been deprecated. ' + 'Please use the overscanColumnCount and overscanRowCount props instead.');\n      }\n    }\n\n    if (typeof overscanColumnsCount === 'number' || typeof overscanRowsCount === 'number') {\n      if (devWarningsOverscanRowsColumnsCount && !devWarningsOverscanRowsColumnsCount.has(instance)) {\n        devWarningsOverscanRowsColumnsCount.add(instance);\n        console.warn('The overscanColumnsCount and overscanRowsCount props have been deprecated. ' + 'Please use the overscanColumnCount and overscanRowCount props instead.');\n      }\n    }\n\n    if (innerTagName != null || outerTagName != null) {\n      if (devWarningsTagName && !devWarningsTagName.has(instance)) {\n        devWarningsTagName.add(instance);\n        console.warn('The innerTagName and outerTagName props have been deprecated. ' + 'Please use the innerElementType and outerElementType props instead.');\n      }\n    }\n\n    if (children == null) {\n      throw Error('An invalid \"children\" prop has been specified. ' + 'Value should be a React component. ' + (\"\\\"\" + (children === null ? 'null' : typeof children) + \"\\\" was specified.\"));\n    }\n\n    switch (direction) {\n      case 'ltr':\n      case 'rtl':\n        // Valid values\n        break;\n\n      default:\n        throw Error('An invalid \"direction\" prop has been specified. ' + 'Value should be either \"ltr\" or \"rtl\". ' + (\"\\\"\" + direction + \"\\\" was specified.\"));\n    }\n\n    if (typeof width !== 'number') {\n      throw Error('An invalid \"width\" prop has been specified. ' + 'Grids must specify a number for width. ' + (\"\\\"\" + (width === null ? 'null' : typeof width) + \"\\\" was specified.\"));\n    }\n\n    if (typeof height !== 'number') {\n      throw Error('An invalid \"height\" prop has been specified. ' + 'Grids must specify a number for height. ' + (\"\\\"\" + (height === null ? 'null' : typeof height) + \"\\\" was specified.\"));\n    }\n  }\n};\n\nvar DEFAULT_ESTIMATED_ITEM_SIZE = 50;\n\nvar getEstimatedTotalHeight = function getEstimatedTotalHeight(_ref, _ref2) {\n  var rowCount = _ref.rowCount;\n  var rowMetadataMap = _ref2.rowMetadataMap,\n      estimatedRowHeight = _ref2.estimatedRowHeight,\n      lastMeasuredRowIndex = _ref2.lastMeasuredRowIndex;\n  var totalSizeOfMeasuredRows = 0; // Edge case check for when the number of items decreases while a scroll is in progress.\n  // https://github.com/bvaughn/react-window/pull/138\n\n  if (lastMeasuredRowIndex >= rowCount) {\n    lastMeasuredRowIndex = rowCount - 1;\n  }\n\n  if (lastMeasuredRowIndex >= 0) {\n    var itemMetadata = rowMetadataMap[lastMeasuredRowIndex];\n    totalSizeOfMeasuredRows = itemMetadata.offset + itemMetadata.size;\n  }\n\n  var numUnmeasuredItems = rowCount - lastMeasuredRowIndex - 1;\n  var totalSizeOfUnmeasuredItems = numUnmeasuredItems * estimatedRowHeight;\n  return totalSizeOfMeasuredRows + totalSizeOfUnmeasuredItems;\n};\n\nvar getEstimatedTotalWidth = function getEstimatedTotalWidth(_ref3, _ref4) {\n  var columnCount = _ref3.columnCount;\n  var columnMetadataMap = _ref4.columnMetadataMap,\n      estimatedColumnWidth = _ref4.estimatedColumnWidth,\n      lastMeasuredColumnIndex = _ref4.lastMeasuredColumnIndex;\n  var totalSizeOfMeasuredRows = 0; // Edge case check for when the number of items decreases while a scroll is in progress.\n  // https://github.com/bvaughn/react-window/pull/138\n\n  if (lastMeasuredColumnIndex >= columnCount) {\n    lastMeasuredColumnIndex = columnCount - 1;\n  }\n\n  if (lastMeasuredColumnIndex >= 0) {\n    var itemMetadata = columnMetadataMap[lastMeasuredColumnIndex];\n    totalSizeOfMeasuredRows = itemMetadata.offset + itemMetadata.size;\n  }\n\n  var numUnmeasuredItems = columnCount - lastMeasuredColumnIndex - 1;\n  var totalSizeOfUnmeasuredItems = numUnmeasuredItems * estimatedColumnWidth;\n  return totalSizeOfMeasuredRows + totalSizeOfUnmeasuredItems;\n};\n\nvar getItemMetadata = function getItemMetadata(itemType, props, index, instanceProps) {\n  var itemMetadataMap, itemSize, lastMeasuredIndex;\n\n  if (itemType === 'column') {\n    itemMetadataMap = instanceProps.columnMetadataMap;\n    itemSize = props.columnWidth;\n    lastMeasuredIndex = instanceProps.lastMeasuredColumnIndex;\n  } else {\n    itemMetadataMap = instanceProps.rowMetadataMap;\n    itemSize = props.rowHeight;\n    lastMeasuredIndex = instanceProps.lastMeasuredRowIndex;\n  }\n\n  if (index > lastMeasuredIndex) {\n    var offset = 0;\n\n    if (lastMeasuredIndex >= 0) {\n      var itemMetadata = itemMetadataMap[lastMeasuredIndex];\n      offset = itemMetadata.offset + itemMetadata.size;\n    }\n\n    for (var i = lastMeasuredIndex + 1; i <= index; i++) {\n      var size = itemSize(i);\n      itemMetadataMap[i] = {\n        offset: offset,\n        size: size\n      };\n      offset += size;\n    }\n\n    if (itemType === 'column') {\n      instanceProps.lastMeasuredColumnIndex = index;\n    } else {\n      instanceProps.lastMeasuredRowIndex = index;\n    }\n  }\n\n  return itemMetadataMap[index];\n};\n\nvar findNearestItem = function findNearestItem(itemType, props, instanceProps, offset) {\n  var itemMetadataMap, lastMeasuredIndex;\n\n  if (itemType === 'column') {\n    itemMetadataMap = instanceProps.columnMetadataMap;\n    lastMeasuredIndex = instanceProps.lastMeasuredColumnIndex;\n  } else {\n    itemMetadataMap = instanceProps.rowMetadataMap;\n    lastMeasuredIndex = instanceProps.lastMeasuredRowIndex;\n  }\n\n  var lastMeasuredItemOffset = lastMeasuredIndex > 0 ? itemMetadataMap[lastMeasuredIndex].offset : 0;\n\n  if (lastMeasuredItemOffset >= offset) {\n    // If we've already measured items within this range just use a binary search as it's faster.\n    return findNearestItemBinarySearch(itemType, props, instanceProps, lastMeasuredIndex, 0, offset);\n  } else {\n    // If we haven't yet measured this high, fallback to an exponential search with an inner binary search.\n    // The exponential search avoids pre-computing sizes for the full set of items as a binary search would.\n    // The overall complexity for this approach is O(log n).\n    return findNearestItemExponentialSearch(itemType, props, instanceProps, Math.max(0, lastMeasuredIndex), offset);\n  }\n};\n\nvar findNearestItemBinarySearch = function findNearestItemBinarySearch(itemType, props, instanceProps, high, low, offset) {\n  while (low <= high) {\n    var middle = low + Math.floor((high - low) / 2);\n    var currentOffset = getItemMetadata(itemType, props, middle, instanceProps).offset;\n\n    if (currentOffset === offset) {\n      return middle;\n    } else if (currentOffset < offset) {\n      low = middle + 1;\n    } else if (currentOffset > offset) {\n      high = middle - 1;\n    }\n  }\n\n  if (low > 0) {\n    return low - 1;\n  } else {\n    return 0;\n  }\n};\n\nvar findNearestItemExponentialSearch = function findNearestItemExponentialSearch(itemType, props, instanceProps, index, offset) {\n  var itemCount = itemType === 'column' ? props.columnCount : props.rowCount;\n  var interval = 1;\n\n  while (index < itemCount && getItemMetadata(itemType, props, index, instanceProps).offset < offset) {\n    index += interval;\n    interval *= 2;\n  }\n\n  return findNearestItemBinarySearch(itemType, props, instanceProps, Math.min(index, itemCount - 1), Math.floor(index / 2), offset);\n};\n\nvar getOffsetForIndexAndAlignment = function getOffsetForIndexAndAlignment(itemType, props, index, align, scrollOffset, instanceProps, scrollbarSize) {\n  var size = itemType === 'column' ? props.width : props.height;\n  var itemMetadata = getItemMetadata(itemType, props, index, instanceProps); // Get estimated total size after ItemMetadata is computed,\n  // To ensure it reflects actual measurements instead of just estimates.\n\n  var estimatedTotalSize = itemType === 'column' ? getEstimatedTotalWidth(props, instanceProps) : getEstimatedTotalHeight(props, instanceProps);\n  var maxOffset = Math.max(0, Math.min(estimatedTotalSize - size, itemMetadata.offset));\n  var minOffset = Math.max(0, itemMetadata.offset - size + scrollbarSize + itemMetadata.size);\n\n  if (align === 'smart') {\n    if (scrollOffset >= minOffset - size && scrollOffset <= maxOffset + size) {\n      align = 'auto';\n    } else {\n      align = 'center';\n    }\n  }\n\n  switch (align) {\n    case 'start':\n      return maxOffset;\n\n    case 'end':\n      return minOffset;\n\n    case 'center':\n      return Math.round(minOffset + (maxOffset - minOffset) / 2);\n\n    case 'auto':\n    default:\n      if (scrollOffset >= minOffset && scrollOffset <= maxOffset) {\n        return scrollOffset;\n      } else if (minOffset > maxOffset) {\n        // Because we only take into account the scrollbar size when calculating minOffset\n        // this value can be larger than maxOffset when at the end of the list\n        return minOffset;\n      } else if (scrollOffset < minOffset) {\n        return minOffset;\n      } else {\n        return maxOffset;\n      }\n\n  }\n};\n\nvar VariableSizeGrid = /*#__PURE__*/createGridComponent({\n  getColumnOffset: function getColumnOffset(props, index, instanceProps) {\n    return getItemMetadata('column', props, index, instanceProps).offset;\n  },\n  getColumnStartIndexForOffset: function getColumnStartIndexForOffset(props, scrollLeft, instanceProps) {\n    return findNearestItem('column', props, instanceProps, scrollLeft);\n  },\n  getColumnStopIndexForStartIndex: function getColumnStopIndexForStartIndex(props, startIndex, scrollLeft, instanceProps) {\n    var columnCount = props.columnCount,\n        width = props.width;\n    var itemMetadata = getItemMetadata('column', props, startIndex, instanceProps);\n    var maxOffset = scrollLeft + width;\n    var offset = itemMetadata.offset + itemMetadata.size;\n    var stopIndex = startIndex;\n\n    while (stopIndex < columnCount - 1 && offset < maxOffset) {\n      stopIndex++;\n      offset += getItemMetadata('column', props, stopIndex, instanceProps).size;\n    }\n\n    return stopIndex;\n  },\n  getColumnWidth: function getColumnWidth(props, index, instanceProps) {\n    return instanceProps.columnMetadataMap[index].size;\n  },\n  getEstimatedTotalHeight: getEstimatedTotalHeight,\n  getEstimatedTotalWidth: getEstimatedTotalWidth,\n  getOffsetForColumnAndAlignment: function getOffsetForColumnAndAlignment(props, index, align, scrollOffset, instanceProps, scrollbarSize) {\n    return getOffsetForIndexAndAlignment('column', props, index, align, scrollOffset, instanceProps, scrollbarSize);\n  },\n  getOffsetForRowAndAlignment: function getOffsetForRowAndAlignment(props, index, align, scrollOffset, instanceProps, scrollbarSize) {\n    return getOffsetForIndexAndAlignment('row', props, index, align, scrollOffset, instanceProps, scrollbarSize);\n  },\n  getRowOffset: function getRowOffset(props, index, instanceProps) {\n    return getItemMetadata('row', props, index, instanceProps).offset;\n  },\n  getRowHeight: function getRowHeight(props, index, instanceProps) {\n    return instanceProps.rowMetadataMap[index].size;\n  },\n  getRowStartIndexForOffset: function getRowStartIndexForOffset(props, scrollTop, instanceProps) {\n    return findNearestItem('row', props, instanceProps, scrollTop);\n  },\n  getRowStopIndexForStartIndex: function getRowStopIndexForStartIndex(props, startIndex, scrollTop, instanceProps) {\n    var rowCount = props.rowCount,\n        height = props.height;\n    var itemMetadata = getItemMetadata('row', props, startIndex, instanceProps);\n    var maxOffset = scrollTop + height;\n    var offset = itemMetadata.offset + itemMetadata.size;\n    var stopIndex = startIndex;\n\n    while (stopIndex < rowCount - 1 && offset < maxOffset) {\n      stopIndex++;\n      offset += getItemMetadata('row', props, stopIndex, instanceProps).size;\n    }\n\n    return stopIndex;\n  },\n  initInstanceProps: function initInstanceProps(props, instance) {\n    var _ref5 = props,\n        estimatedColumnWidth = _ref5.estimatedColumnWidth,\n        estimatedRowHeight = _ref5.estimatedRowHeight;\n    var instanceProps = {\n      columnMetadataMap: {},\n      estimatedColumnWidth: estimatedColumnWidth || DEFAULT_ESTIMATED_ITEM_SIZE,\n      estimatedRowHeight: estimatedRowHeight || DEFAULT_ESTIMATED_ITEM_SIZE,\n      lastMeasuredColumnIndex: -1,\n      lastMeasuredRowIndex: -1,\n      rowMetadataMap: {}\n    };\n\n    instance.resetAfterColumnIndex = function (columnIndex, shouldForceUpdate) {\n      if (shouldForceUpdate === void 0) {\n        shouldForceUpdate = true;\n      }\n\n      instance.resetAfterIndices({\n        columnIndex: columnIndex,\n        shouldForceUpdate: shouldForceUpdate\n      });\n    };\n\n    instance.resetAfterRowIndex = function (rowIndex, shouldForceUpdate) {\n      if (shouldForceUpdate === void 0) {\n        shouldForceUpdate = true;\n      }\n\n      instance.resetAfterIndices({\n        rowIndex: rowIndex,\n        shouldForceUpdate: shouldForceUpdate\n      });\n    };\n\n    instance.resetAfterIndices = function (_ref6) {\n      var columnIndex = _ref6.columnIndex,\n          rowIndex = _ref6.rowIndex,\n          _ref6$shouldForceUpda = _ref6.shouldForceUpdate,\n          shouldForceUpdate = _ref6$shouldForceUpda === void 0 ? true : _ref6$shouldForceUpda;\n\n      if (typeof columnIndex === 'number') {\n        instanceProps.lastMeasuredColumnIndex = Math.min(instanceProps.lastMeasuredColumnIndex, columnIndex - 1);\n      }\n\n      if (typeof rowIndex === 'number') {\n        instanceProps.lastMeasuredRowIndex = Math.min(instanceProps.lastMeasuredRowIndex, rowIndex - 1);\n      } // We could potentially optimize further by only evicting styles after this index,\n      // But since styles are only cached while scrolling is in progress-\n      // It seems an unnecessary optimization.\n      // It's unlikely that resetAfterIndex() will be called while a user is scrolling.\n\n\n      instance._getItemStyleCache(-1);\n\n      if (shouldForceUpdate) {\n        instance.forceUpdate();\n      }\n    };\n\n    return instanceProps;\n  },\n  shouldResetStyleCacheOnItemSizeChange: false,\n  validateProps: function validateProps(_ref7) {\n    var columnWidth = _ref7.columnWidth,\n        rowHeight = _ref7.rowHeight;\n\n    if (process.env.NODE_ENV !== 'production') {\n      if (typeof columnWidth !== 'function') {\n        throw Error('An invalid \"columnWidth\" prop has been specified. ' + 'Value should be a function. ' + (\"\\\"\" + (columnWidth === null ? 'null' : typeof columnWidth) + \"\\\" was specified.\"));\n      } else if (typeof rowHeight !== 'function') {\n        throw Error('An invalid \"rowHeight\" prop has been specified. ' + 'Value should be a function. ' + (\"\\\"\" + (rowHeight === null ? 'null' : typeof rowHeight) + \"\\\" was specified.\"));\n      }\n    }\n  }\n});\n\nvar IS_SCROLLING_DEBOUNCE_INTERVAL$1 = 150;\n\nvar defaultItemKey$1 = function defaultItemKey(index, data) {\n  return index;\n}; // In DEV mode, this Set helps us only log a warning once per component instance.\n// This avoids spamming the console every time a render happens.\n\n\nvar devWarningsDirection = null;\nvar devWarningsTagName$1 = null;\n\nif (process.env.NODE_ENV !== 'production') {\n  if (typeof window !== 'undefined' && typeof window.WeakSet !== 'undefined') {\n    devWarningsDirection = /*#__PURE__*/new WeakSet();\n    devWarningsTagName$1 = /*#__PURE__*/new WeakSet();\n  }\n}\n\nfunction createListComponent(_ref) {\n  var _class;\n\n  var getItemOffset = _ref.getItemOffset,\n      getEstimatedTotalSize = _ref.getEstimatedTotalSize,\n      getItemSize = _ref.getItemSize,\n      getOffsetForIndexAndAlignment = _ref.getOffsetForIndexAndAlignment,\n      getStartIndexForOffset = _ref.getStartIndexForOffset,\n      getStopIndexForStartIndex = _ref.getStopIndexForStartIndex,\n      initInstanceProps = _ref.initInstanceProps,\n      shouldResetStyleCacheOnItemSizeChange = _ref.shouldResetStyleCacheOnItemSizeChange,\n      validateProps = _ref.validateProps;\n  return _class = /*#__PURE__*/function (_PureComponent) {\n    _inheritsLoose(List, _PureComponent);\n\n    // Always use explicit constructor for React components.\n    // It produces less code after transpilation. (#26)\n    // eslint-disable-next-line no-useless-constructor\n    function List(props) {\n      var _this;\n\n      _this = _PureComponent.call(this, props) || this;\n      _this._instanceProps = initInstanceProps(_this.props, _assertThisInitialized(_this));\n      _this._outerRef = void 0;\n      _this._resetIsScrollingTimeoutId = null;\n      _this.state = {\n        instance: _assertThisInitialized(_this),\n        isScrolling: false,\n        scrollDirection: 'forward',\n        scrollOffset: typeof _this.props.initialScrollOffset === 'number' ? _this.props.initialScrollOffset : 0,\n        scrollUpdateWasRequested: false\n      };\n      _this._callOnItemsRendered = void 0;\n      _this._callOnItemsRendered = memoizeOne(function (overscanStartIndex, overscanStopIndex, visibleStartIndex, visibleStopIndex) {\n        return _this.props.onItemsRendered({\n          overscanStartIndex: overscanStartIndex,\n          overscanStopIndex: overscanStopIndex,\n          visibleStartIndex: visibleStartIndex,\n          visibleStopIndex: visibleStopIndex\n        });\n      });\n      _this._callOnScroll = void 0;\n      _this._callOnScroll = memoizeOne(function (scrollDirection, scrollOffset, scrollUpdateWasRequested) {\n        return _this.props.onScroll({\n          scrollDirection: scrollDirection,\n          scrollOffset: scrollOffset,\n          scrollUpdateWasRequested: scrollUpdateWasRequested\n        });\n      });\n      _this._getItemStyle = void 0;\n\n      _this._getItemStyle = function (index) {\n        var _this$props = _this.props,\n            direction = _this$props.direction,\n            itemSize = _this$props.itemSize,\n            layout = _this$props.layout;\n\n        var itemStyleCache = _this._getItemStyleCache(shouldResetStyleCacheOnItemSizeChange && itemSize, shouldResetStyleCacheOnItemSizeChange && layout, shouldResetStyleCacheOnItemSizeChange && direction);\n\n        var style;\n\n        if (itemStyleCache.hasOwnProperty(index)) {\n          style = itemStyleCache[index];\n        } else {\n          var _offset = getItemOffset(_this.props, index, _this._instanceProps);\n\n          var size = getItemSize(_this.props, index, _this._instanceProps); // TODO Deprecate direction \"horizontal\"\n\n          var isHorizontal = direction === 'horizontal' || layout === 'horizontal';\n          var isRtl = direction === 'rtl';\n          var offsetHorizontal = isHorizontal ? _offset : 0;\n          itemStyleCache[index] = style = {\n            position: 'absolute',\n            left: isRtl ? undefined : offsetHorizontal,\n            right: isRtl ? offsetHorizontal : undefined,\n            top: !isHorizontal ? _offset : 0,\n            height: !isHorizontal ? size : '100%',\n            width: isHorizontal ? size : '100%'\n          };\n        }\n\n        return style;\n      };\n\n      _this._getItemStyleCache = void 0;\n      _this._getItemStyleCache = memoizeOne(function (_, __, ___) {\n        return {};\n      });\n\n      _this._onScrollHorizontal = function (event) {\n        var _event$currentTarget = event.currentTarget,\n            clientWidth = _event$currentTarget.clientWidth,\n            scrollLeft = _event$currentTarget.scrollLeft,\n            scrollWidth = _event$currentTarget.scrollWidth;\n\n        _this.setState(function (prevState) {\n          if (prevState.scrollOffset === scrollLeft) {\n            // Scroll position may have been updated by cDM/cDU,\n            // In which case we don't need to trigger another render,\n            // And we don't want to update state.isScrolling.\n            return null;\n          }\n\n          var direction = _this.props.direction;\n          var scrollOffset = scrollLeft;\n\n          if (direction === 'rtl') {\n            // TRICKY According to the spec, scrollLeft should be negative for RTL aligned elements.\n            // This is not the case for all browsers though (e.g. Chrome reports values as positive, measured relative to the left).\n            // It's also easier for this component if we convert offsets to the same format as they would be in for ltr.\n            // So the simplest solution is to determine which browser behavior we're dealing with, and convert based on it.\n            switch (getRTLOffsetType()) {\n              case 'negative':\n                scrollOffset = -scrollLeft;\n                break;\n\n              case 'positive-descending':\n                scrollOffset = scrollWidth - clientWidth - scrollLeft;\n                break;\n            }\n          } // Prevent Safari's elastic scrolling from causing visual shaking when scrolling past bounds.\n\n\n          scrollOffset = Math.max(0, Math.min(scrollOffset, scrollWidth - clientWidth));\n          return {\n            isScrolling: true,\n            scrollDirection: prevState.scrollOffset < scrollOffset ? 'forward' : 'backward',\n            scrollOffset: scrollOffset,\n            scrollUpdateWasRequested: false\n          };\n        }, _this._resetIsScrollingDebounced);\n      };\n\n      _this._onScrollVertical = function (event) {\n        var _event$currentTarget2 = event.currentTarget,\n            clientHeight = _event$currentTarget2.clientHeight,\n            scrollHeight = _event$currentTarget2.scrollHeight,\n            scrollTop = _event$currentTarget2.scrollTop;\n\n        _this.setState(function (prevState) {\n          if (prevState.scrollOffset === scrollTop) {\n            // Scroll position may have been updated by cDM/cDU,\n            // In which case we don't need to trigger another render,\n            // And we don't want to update state.isScrolling.\n            return null;\n          } // Prevent Safari's elastic scrolling from causing visual shaking when scrolling past bounds.\n\n\n          var scrollOffset = Math.max(0, Math.min(scrollTop, scrollHeight - clientHeight));\n          return {\n            isScrolling: true,\n            scrollDirection: prevState.scrollOffset < scrollOffset ? 'forward' : 'backward',\n            scrollOffset: scrollOffset,\n            scrollUpdateWasRequested: false\n          };\n        }, _this._resetIsScrollingDebounced);\n      };\n\n      _this._outerRefSetter = function (ref) {\n        var outerRef = _this.props.outerRef;\n        _this._outerRef = ref;\n\n        if (typeof outerRef === 'function') {\n          outerRef(ref);\n        } else if (outerRef != null && typeof outerRef === 'object' && outerRef.hasOwnProperty('current')) {\n          outerRef.current = ref;\n        }\n      };\n\n      _this._resetIsScrollingDebounced = function () {\n        if (_this._resetIsScrollingTimeoutId !== null) {\n          cancelTimeout(_this._resetIsScrollingTimeoutId);\n        }\n\n        _this._resetIsScrollingTimeoutId = requestTimeout(_this._resetIsScrolling, IS_SCROLLING_DEBOUNCE_INTERVAL$1);\n      };\n\n      _this._resetIsScrolling = function () {\n        _this._resetIsScrollingTimeoutId = null;\n\n        _this.setState({\n          isScrolling: false\n        }, function () {\n          // Clear style cache after state update has been committed.\n          // This way we don't break pure sCU for items that don't use isScrolling param.\n          _this._getItemStyleCache(-1, null);\n        });\n      };\n\n      return _this;\n    }\n\n    List.getDerivedStateFromProps = function getDerivedStateFromProps(nextProps, prevState) {\n      validateSharedProps$1(nextProps, prevState);\n      validateProps(nextProps);\n      return null;\n    };\n\n    var _proto = List.prototype;\n\n    _proto.scrollTo = function scrollTo(scrollOffset) {\n      scrollOffset = Math.max(0, scrollOffset);\n      this.setState(function (prevState) {\n        if (prevState.scrollOffset === scrollOffset) {\n          return null;\n        }\n\n        return {\n          scrollDirection: prevState.scrollOffset < scrollOffset ? 'forward' : 'backward',\n          scrollOffset: scrollOffset,\n          scrollUpdateWasRequested: true\n        };\n      }, this._resetIsScrollingDebounced);\n    };\n\n    _proto.scrollToItem = function scrollToItem(index, align) {\n      if (align === void 0) {\n        align = 'auto';\n      }\n\n      var _this$props2 = this.props,\n          itemCount = _this$props2.itemCount,\n          layout = _this$props2.layout;\n      var scrollOffset = this.state.scrollOffset;\n      index = Math.max(0, Math.min(index, itemCount - 1)); // The scrollbar size should be considered when scrolling an item into view, to ensure it's fully visible.\n      // But we only need to account for its size when it's actually visible.\n      // This is an edge case for lists; normally they only scroll in the dominant direction.\n\n      var scrollbarSize = 0;\n\n      if (this._outerRef) {\n        var outerRef = this._outerRef;\n\n        if (layout === 'vertical') {\n          scrollbarSize = outerRef.scrollWidth > outerRef.clientWidth ? getScrollbarSize() : 0;\n        } else {\n          scrollbarSize = outerRef.scrollHeight > outerRef.clientHeight ? getScrollbarSize() : 0;\n        }\n      }\n\n      this.scrollTo(getOffsetForIndexAndAlignment(this.props, index, align, scrollOffset, this._instanceProps, scrollbarSize));\n    };\n\n    _proto.componentDidMount = function componentDidMount() {\n      var _this$props3 = this.props,\n          direction = _this$props3.direction,\n          initialScrollOffset = _this$props3.initialScrollOffset,\n          layout = _this$props3.layout;\n\n      if (typeof initialScrollOffset === 'number' && this._outerRef != null) {\n        var outerRef = this._outerRef; // TODO Deprecate direction \"horizontal\"\n\n        if (direction === 'horizontal' || layout === 'horizontal') {\n          outerRef.scrollLeft = initialScrollOffset;\n        } else {\n          outerRef.scrollTop = initialScrollOffset;\n        }\n      }\n\n      this._callPropsCallbacks();\n    };\n\n    _proto.componentDidUpdate = function componentDidUpdate() {\n      var _this$props4 = this.props,\n          direction = _this$props4.direction,\n          layout = _this$props4.layout;\n      var _this$state = this.state,\n          scrollOffset = _this$state.scrollOffset,\n          scrollUpdateWasRequested = _this$state.scrollUpdateWasRequested;\n\n      if (scrollUpdateWasRequested && this._outerRef != null) {\n        var outerRef = this._outerRef; // TODO Deprecate direction \"horizontal\"\n\n        if (direction === 'horizontal' || layout === 'horizontal') {\n          if (direction === 'rtl') {\n            // TRICKY According to the spec, scrollLeft should be negative for RTL aligned elements.\n            // This is not the case for all browsers though (e.g. Chrome reports values as positive, measured relative to the left).\n            // So we need to determine which browser behavior we're dealing with, and mimic it.\n            switch (getRTLOffsetType()) {\n              case 'negative':\n                outerRef.scrollLeft = -scrollOffset;\n                break;\n\n              case 'positive-ascending':\n                outerRef.scrollLeft = scrollOffset;\n                break;\n\n              default:\n                var clientWidth = outerRef.clientWidth,\n                    scrollWidth = outerRef.scrollWidth;\n                outerRef.scrollLeft = scrollWidth - clientWidth - scrollOffset;\n                break;\n            }\n          } else {\n            outerRef.scrollLeft = scrollOffset;\n          }\n        } else {\n          outerRef.scrollTop = scrollOffset;\n        }\n      }\n\n      this._callPropsCallbacks();\n    };\n\n    _proto.componentWillUnmount = function componentWillUnmount() {\n      if (this._resetIsScrollingTimeoutId !== null) {\n        cancelTimeout(this._resetIsScrollingTimeoutId);\n      }\n    };\n\n    _proto.render = function render() {\n      var _this$props5 = this.props,\n          children = _this$props5.children,\n          className = _this$props5.className,\n          direction = _this$props5.direction,\n          height = _this$props5.height,\n          innerRef = _this$props5.innerRef,\n          innerElementType = _this$props5.innerElementType,\n          innerTagName = _this$props5.innerTagName,\n          itemCount = _this$props5.itemCount,\n          itemData = _this$props5.itemData,\n          _this$props5$itemKey = _this$props5.itemKey,\n          itemKey = _this$props5$itemKey === void 0 ? defaultItemKey$1 : _this$props5$itemKey,\n          layout = _this$props5.layout,\n          outerElementType = _this$props5.outerElementType,\n          outerTagName = _this$props5.outerTagName,\n          style = _this$props5.style,\n          useIsScrolling = _this$props5.useIsScrolling,\n          width = _this$props5.width;\n      var isScrolling = this.state.isScrolling; // TODO Deprecate direction \"horizontal\"\n\n      var isHorizontal = direction === 'horizontal' || layout === 'horizontal';\n      var onScroll = isHorizontal ? this._onScrollHorizontal : this._onScrollVertical;\n\n      var _this$_getRangeToRend = this._getRangeToRender(),\n          startIndex = _this$_getRangeToRend[0],\n          stopIndex = _this$_getRangeToRend[1];\n\n      var items = [];\n\n      if (itemCount > 0) {\n        for (var _index = startIndex; _index <= stopIndex; _index++) {\n          items.push(createElement(children, {\n            data: itemData,\n            key: itemKey(_index, itemData),\n            index: _index,\n            isScrolling: useIsScrolling ? isScrolling : undefined,\n            style: this._getItemStyle(_index)\n          }));\n        }\n      } // Read this value AFTER items have been created,\n      // So their actual sizes (if variable) are taken into consideration.\n\n\n      var estimatedTotalSize = getEstimatedTotalSize(this.props, this._instanceProps);\n      return createElement(outerElementType || outerTagName || 'div', {\n        className: className,\n        onScroll: onScroll,\n        ref: this._outerRefSetter,\n        style: _extends({\n          position: 'relative',\n          height: height,\n          width: width,\n          overflow: 'auto',\n          WebkitOverflowScrolling: 'touch',\n          willChange: 'transform',\n          direction: direction\n        }, style)\n      }, createElement(innerElementType || innerTagName || 'div', {\n        children: items,\n        ref: innerRef,\n        style: {\n          height: isHorizontal ? '100%' : estimatedTotalSize,\n          pointerEvents: isScrolling ? 'none' : undefined,\n          width: isHorizontal ? estimatedTotalSize : '100%'\n        }\n      }));\n    };\n\n    _proto._callPropsCallbacks = function _callPropsCallbacks() {\n      if (typeof this.props.onItemsRendered === 'function') {\n        var itemCount = this.props.itemCount;\n\n        if (itemCount > 0) {\n          var _this$_getRangeToRend2 = this._getRangeToRender(),\n              _overscanStartIndex = _this$_getRangeToRend2[0],\n              _overscanStopIndex = _this$_getRangeToRend2[1],\n              _visibleStartIndex = _this$_getRangeToRend2[2],\n              _visibleStopIndex = _this$_getRangeToRend2[3];\n\n          this._callOnItemsRendered(_overscanStartIndex, _overscanStopIndex, _visibleStartIndex, _visibleStopIndex);\n        }\n      }\n\n      if (typeof this.props.onScroll === 'function') {\n        var _this$state2 = this.state,\n            _scrollDirection = _this$state2.scrollDirection,\n            _scrollOffset = _this$state2.scrollOffset,\n            _scrollUpdateWasRequested = _this$state2.scrollUpdateWasRequested;\n\n        this._callOnScroll(_scrollDirection, _scrollOffset, _scrollUpdateWasRequested);\n      }\n    } // Lazily create and cache item styles while scrolling,\n    // So that pure component sCU will prevent re-renders.\n    // We maintain this cache, and pass a style prop rather than index,\n    // So that List can clear cached styles and force item re-render if necessary.\n    ;\n\n    _proto._getRangeToRender = function _getRangeToRender() {\n      var _this$props6 = this.props,\n          itemCount = _this$props6.itemCount,\n          overscanCount = _this$props6.overscanCount;\n      var _this$state3 = this.state,\n          isScrolling = _this$state3.isScrolling,\n          scrollDirection = _this$state3.scrollDirection,\n          scrollOffset = _this$state3.scrollOffset;\n\n      if (itemCount === 0) {\n        return [0, 0, 0, 0];\n      }\n\n      var startIndex = getStartIndexForOffset(this.props, scrollOffset, this._instanceProps);\n      var stopIndex = getStopIndexForStartIndex(this.props, startIndex, scrollOffset, this._instanceProps); // Overscan by one item in each direction so that tab/focus works.\n      // If there isn't at least one extra item, tab loops back around.\n\n      var overscanBackward = !isScrolling || scrollDirection === 'backward' ? Math.max(1, overscanCount) : 1;\n      var overscanForward = !isScrolling || scrollDirection === 'forward' ? Math.max(1, overscanCount) : 1;\n      return [Math.max(0, startIndex - overscanBackward), Math.max(0, Math.min(itemCount - 1, stopIndex + overscanForward)), startIndex, stopIndex];\n    };\n\n    return List;\n  }(PureComponent), _class.defaultProps = {\n    direction: 'ltr',\n    itemData: undefined,\n    layout: 'vertical',\n    overscanCount: 2,\n    useIsScrolling: false\n  }, _class;\n} // NOTE: I considered further wrapping individual items with a pure ListItem component.\n// This would avoid ever calling the render function for the same index more than once,\n// But it would also add the overhead of a lot of components/fibers.\n// I assume people already do this (render function returning a class component),\n// So my doing it would just unnecessarily double the wrappers.\n\nvar validateSharedProps$1 = function validateSharedProps(_ref2, _ref3) {\n  var children = _ref2.children,\n      direction = _ref2.direction,\n      height = _ref2.height,\n      layout = _ref2.layout,\n      innerTagName = _ref2.innerTagName,\n      outerTagName = _ref2.outerTagName,\n      width = _ref2.width;\n  var instance = _ref3.instance;\n\n  if (process.env.NODE_ENV !== 'production') {\n    if (innerTagName != null || outerTagName != null) {\n      if (devWarningsTagName$1 && !devWarningsTagName$1.has(instance)) {\n        devWarningsTagName$1.add(instance);\n        console.warn('The innerTagName and outerTagName props have been deprecated. ' + 'Please use the innerElementType and outerElementType props instead.');\n      }\n    } // TODO Deprecate direction \"horizontal\"\n\n\n    var isHorizontal = direction === 'horizontal' || layout === 'horizontal';\n\n    switch (direction) {\n      case 'horizontal':\n      case 'vertical':\n        if (devWarningsDirection && !devWarningsDirection.has(instance)) {\n          devWarningsDirection.add(instance);\n          console.warn('The direction prop should be either \"ltr\" (default) or \"rtl\". ' + 'Please use the layout prop to specify \"vertical\" (default) or \"horizontal\" orientation.');\n        }\n\n        break;\n\n      case 'ltr':\n      case 'rtl':\n        // Valid values\n        break;\n\n      default:\n        throw Error('An invalid \"direction\" prop has been specified. ' + 'Value should be either \"ltr\" or \"rtl\". ' + (\"\\\"\" + direction + \"\\\" was specified.\"));\n    }\n\n    switch (layout) {\n      case 'horizontal':\n      case 'vertical':\n        // Valid values\n        break;\n\n      default:\n        throw Error('An invalid \"layout\" prop has been specified. ' + 'Value should be either \"horizontal\" or \"vertical\". ' + (\"\\\"\" + layout + \"\\\" was specified.\"));\n    }\n\n    if (children == null) {\n      throw Error('An invalid \"children\" prop has been specified. ' + 'Value should be a React component. ' + (\"\\\"\" + (children === null ? 'null' : typeof children) + \"\\\" was specified.\"));\n    }\n\n    if (isHorizontal && typeof width !== 'number') {\n      throw Error('An invalid \"width\" prop has been specified. ' + 'Horizontal lists must specify a number for width. ' + (\"\\\"\" + (width === null ? 'null' : typeof width) + \"\\\" was specified.\"));\n    } else if (!isHorizontal && typeof height !== 'number') {\n      throw Error('An invalid \"height\" prop has been specified. ' + 'Vertical lists must specify a number for height. ' + (\"\\\"\" + (height === null ? 'null' : typeof height) + \"\\\" was specified.\"));\n    }\n  }\n};\n\nvar DEFAULT_ESTIMATED_ITEM_SIZE$1 = 50;\n\nvar getItemMetadata$1 = function getItemMetadata(props, index, instanceProps) {\n  var _ref = props,\n      itemSize = _ref.itemSize;\n  var itemMetadataMap = instanceProps.itemMetadataMap,\n      lastMeasuredIndex = instanceProps.lastMeasuredIndex;\n\n  if (index > lastMeasuredIndex) {\n    var offset = 0;\n\n    if (lastMeasuredIndex >= 0) {\n      var itemMetadata = itemMetadataMap[lastMeasuredIndex];\n      offset = itemMetadata.offset + itemMetadata.size;\n    }\n\n    for (var i = lastMeasuredIndex + 1; i <= index; i++) {\n      var size = itemSize(i);\n      itemMetadataMap[i] = {\n        offset: offset,\n        size: size\n      };\n      offset += size;\n    }\n\n    instanceProps.lastMeasuredIndex = index;\n  }\n\n  return itemMetadataMap[index];\n};\n\nvar findNearestItem$1 = function findNearestItem(props, instanceProps, offset) {\n  var itemMetadataMap = instanceProps.itemMetadataMap,\n      lastMeasuredIndex = instanceProps.lastMeasuredIndex;\n  var lastMeasuredItemOffset = lastMeasuredIndex > 0 ? itemMetadataMap[lastMeasuredIndex].offset : 0;\n\n  if (lastMeasuredItemOffset >= offset) {\n    // If we've already measured items within this range just use a binary search as it's faster.\n    return findNearestItemBinarySearch$1(props, instanceProps, lastMeasuredIndex, 0, offset);\n  } else {\n    // If we haven't yet measured this high, fallback to an exponential search with an inner binary search.\n    // The exponential search avoids pre-computing sizes for the full set of items as a binary search would.\n    // The overall complexity for this approach is O(log n).\n    return findNearestItemExponentialSearch$1(props, instanceProps, Math.max(0, lastMeasuredIndex), offset);\n  }\n};\n\nvar findNearestItemBinarySearch$1 = function findNearestItemBinarySearch(props, instanceProps, high, low, offset) {\n  while (low <= high) {\n    var middle = low + Math.floor((high - low) / 2);\n    var currentOffset = getItemMetadata$1(props, middle, instanceProps).offset;\n\n    if (currentOffset === offset) {\n      return middle;\n    } else if (currentOffset < offset) {\n      low = middle + 1;\n    } else if (currentOffset > offset) {\n      high = middle - 1;\n    }\n  }\n\n  if (low > 0) {\n    return low - 1;\n  } else {\n    return 0;\n  }\n};\n\nvar findNearestItemExponentialSearch$1 = function findNearestItemExponentialSearch(props, instanceProps, index, offset) {\n  var itemCount = props.itemCount;\n  var interval = 1;\n\n  while (index < itemCount && getItemMetadata$1(props, index, instanceProps).offset < offset) {\n    index += interval;\n    interval *= 2;\n  }\n\n  return findNearestItemBinarySearch$1(props, instanceProps, Math.min(index, itemCount - 1), Math.floor(index / 2), offset);\n};\n\nvar getEstimatedTotalSize = function getEstimatedTotalSize(_ref2, _ref3) {\n  var itemCount = _ref2.itemCount;\n  var itemMetadataMap = _ref3.itemMetadataMap,\n      estimatedItemSize = _ref3.estimatedItemSize,\n      lastMeasuredIndex = _ref3.lastMeasuredIndex;\n  var totalSizeOfMeasuredItems = 0; // Edge case check for when the number of items decreases while a scroll is in progress.\n  // https://github.com/bvaughn/react-window/pull/138\n\n  if (lastMeasuredIndex >= itemCount) {\n    lastMeasuredIndex = itemCount - 1;\n  }\n\n  if (lastMeasuredIndex >= 0) {\n    var itemMetadata = itemMetadataMap[lastMeasuredIndex];\n    totalSizeOfMeasuredItems = itemMetadata.offset + itemMetadata.size;\n  }\n\n  var numUnmeasuredItems = itemCount - lastMeasuredIndex - 1;\n  var totalSizeOfUnmeasuredItems = numUnmeasuredItems * estimatedItemSize;\n  return totalSizeOfMeasuredItems + totalSizeOfUnmeasuredItems;\n};\n\nvar VariableSizeList = /*#__PURE__*/createListComponent({\n  getItemOffset: function getItemOffset(props, index, instanceProps) {\n    return getItemMetadata$1(props, index, instanceProps).offset;\n  },\n  getItemSize: function getItemSize(props, index, instanceProps) {\n    return instanceProps.itemMetadataMap[index].size;\n  },\n  getEstimatedTotalSize: getEstimatedTotalSize,\n  getOffsetForIndexAndAlignment: function getOffsetForIndexAndAlignment(props, index, align, scrollOffset, instanceProps, scrollbarSize) {\n    var direction = props.direction,\n        height = props.height,\n        layout = props.layout,\n        width = props.width; // TODO Deprecate direction \"horizontal\"\n\n    var isHorizontal = direction === 'horizontal' || layout === 'horizontal';\n    var size = isHorizontal ? width : height;\n    var itemMetadata = getItemMetadata$1(props, index, instanceProps); // Get estimated total size after ItemMetadata is computed,\n    // To ensure it reflects actual measurements instead of just estimates.\n\n    var estimatedTotalSize = getEstimatedTotalSize(props, instanceProps);\n    var maxOffset = Math.max(0, Math.min(estimatedTotalSize - size, itemMetadata.offset));\n    var minOffset = Math.max(0, itemMetadata.offset - size + itemMetadata.size + scrollbarSize);\n\n    if (align === 'smart') {\n      if (scrollOffset >= minOffset - size && scrollOffset <= maxOffset + size) {\n        align = 'auto';\n      } else {\n        align = 'center';\n      }\n    }\n\n    switch (align) {\n      case 'start':\n        return maxOffset;\n\n      case 'end':\n        return minOffset;\n\n      case 'center':\n        return Math.round(minOffset + (maxOffset - minOffset) / 2);\n\n      case 'auto':\n      default:\n        if (scrollOffset >= minOffset && scrollOffset <= maxOffset) {\n          return scrollOffset;\n        } else if (scrollOffset < minOffset) {\n          return minOffset;\n        } else {\n          return maxOffset;\n        }\n\n    }\n  },\n  getStartIndexForOffset: function getStartIndexForOffset(props, offset, instanceProps) {\n    return findNearestItem$1(props, instanceProps, offset);\n  },\n  getStopIndexForStartIndex: function getStopIndexForStartIndex(props, startIndex, scrollOffset, instanceProps) {\n    var direction = props.direction,\n        height = props.height,\n        itemCount = props.itemCount,\n        layout = props.layout,\n        width = props.width; // TODO Deprecate direction \"horizontal\"\n\n    var isHorizontal = direction === 'horizontal' || layout === 'horizontal';\n    var size = isHorizontal ? width : height;\n    var itemMetadata = getItemMetadata$1(props, startIndex, instanceProps);\n    var maxOffset = scrollOffset + size;\n    var offset = itemMetadata.offset + itemMetadata.size;\n    var stopIndex = startIndex;\n\n    while (stopIndex < itemCount - 1 && offset < maxOffset) {\n      stopIndex++;\n      offset += getItemMetadata$1(props, stopIndex, instanceProps).size;\n    }\n\n    return stopIndex;\n  },\n  initInstanceProps: function initInstanceProps(props, instance) {\n    var _ref4 = props,\n        estimatedItemSize = _ref4.estimatedItemSize;\n    var instanceProps = {\n      itemMetadataMap: {},\n      estimatedItemSize: estimatedItemSize || DEFAULT_ESTIMATED_ITEM_SIZE$1,\n      lastMeasuredIndex: -1\n    };\n\n    instance.resetAfterIndex = function (index, shouldForceUpdate) {\n      if (shouldForceUpdate === void 0) {\n        shouldForceUpdate = true;\n      }\n\n      instanceProps.lastMeasuredIndex = Math.min(instanceProps.lastMeasuredIndex, index - 1); // We could potentially optimize further by only evicting styles after this index,\n      // But since styles are only cached while scrolling is in progress-\n      // It seems an unnecessary optimization.\n      // It's unlikely that resetAfterIndex() will be called while a user is scrolling.\n\n      instance._getItemStyleCache(-1);\n\n      if (shouldForceUpdate) {\n        instance.forceUpdate();\n      }\n    };\n\n    return instanceProps;\n  },\n  shouldResetStyleCacheOnItemSizeChange: false,\n  validateProps: function validateProps(_ref5) {\n    var itemSize = _ref5.itemSize;\n\n    if (process.env.NODE_ENV !== 'production') {\n      if (typeof itemSize !== 'function') {\n        throw Error('An invalid \"itemSize\" prop has been specified. ' + 'Value should be a function. ' + (\"\\\"\" + (itemSize === null ? 'null' : typeof itemSize) + \"\\\" was specified.\"));\n      }\n    }\n  }\n});\n\nvar FixedSizeGrid = /*#__PURE__*/createGridComponent({\n  getColumnOffset: function getColumnOffset(_ref, index) {\n    var columnWidth = _ref.columnWidth;\n    return index * columnWidth;\n  },\n  getColumnWidth: function getColumnWidth(_ref2, index) {\n    var columnWidth = _ref2.columnWidth;\n    return columnWidth;\n  },\n  getRowOffset: function getRowOffset(_ref3, index) {\n    var rowHeight = _ref3.rowHeight;\n    return index * rowHeight;\n  },\n  getRowHeight: function getRowHeight(_ref4, index) {\n    var rowHeight = _ref4.rowHeight;\n    return rowHeight;\n  },\n  getEstimatedTotalHeight: function getEstimatedTotalHeight(_ref5) {\n    var rowCount = _ref5.rowCount,\n        rowHeight = _ref5.rowHeight;\n    return rowHeight * rowCount;\n  },\n  getEstimatedTotalWidth: function getEstimatedTotalWidth(_ref6) {\n    var columnCount = _ref6.columnCount,\n        columnWidth = _ref6.columnWidth;\n    return columnWidth * columnCount;\n  },\n  getOffsetForColumnAndAlignment: function getOffsetForColumnAndAlignment(_ref7, columnIndex, align, scrollLeft, instanceProps, scrollbarSize) {\n    var columnCount = _ref7.columnCount,\n        columnWidth = _ref7.columnWidth,\n        width = _ref7.width;\n    var lastColumnOffset = Math.max(0, columnCount * columnWidth - width);\n    var maxOffset = Math.min(lastColumnOffset, columnIndex * columnWidth);\n    var minOffset = Math.max(0, columnIndex * columnWidth - width + scrollbarSize + columnWidth);\n\n    if (align === 'smart') {\n      if (scrollLeft >= minOffset - width && scrollLeft <= maxOffset + width) {\n        align = 'auto';\n      } else {\n        align = 'center';\n      }\n    }\n\n    switch (align) {\n      case 'start':\n        return maxOffset;\n\n      case 'end':\n        return minOffset;\n\n      case 'center':\n        // \"Centered\" offset is usually the average of the min and max.\n        // But near the edges of the list, this doesn't hold true.\n        var middleOffset = Math.round(minOffset + (maxOffset - minOffset) / 2);\n\n        if (middleOffset < Math.ceil(width / 2)) {\n          return 0; // near the beginning\n        } else if (middleOffset > lastColumnOffset + Math.floor(width / 2)) {\n          return lastColumnOffset; // near the end\n        } else {\n          return middleOffset;\n        }\n\n      case 'auto':\n      default:\n        if (scrollLeft >= minOffset && scrollLeft <= maxOffset) {\n          return scrollLeft;\n        } else if (minOffset > maxOffset) {\n          // Because we only take into account the scrollbar size when calculating minOffset\n          // this value can be larger than maxOffset when at the end of the list\n          return minOffset;\n        } else if (scrollLeft < minOffset) {\n          return minOffset;\n        } else {\n          return maxOffset;\n        }\n\n    }\n  },\n  getOffsetForRowAndAlignment: function getOffsetForRowAndAlignment(_ref8, rowIndex, align, scrollTop, instanceProps, scrollbarSize) {\n    var rowHeight = _ref8.rowHeight,\n        height = _ref8.height,\n        rowCount = _ref8.rowCount;\n    var lastRowOffset = Math.max(0, rowCount * rowHeight - height);\n    var maxOffset = Math.min(lastRowOffset, rowIndex * rowHeight);\n    var minOffset = Math.max(0, rowIndex * rowHeight - height + scrollbarSize + rowHeight);\n\n    if (align === 'smart') {\n      if (scrollTop >= minOffset - height && scrollTop <= maxOffset + height) {\n        align = 'auto';\n      } else {\n        align = 'center';\n      }\n    }\n\n    switch (align) {\n      case 'start':\n        return maxOffset;\n\n      case 'end':\n        return minOffset;\n\n      case 'center':\n        // \"Centered\" offset is usually the average of the min and max.\n        // But near the edges of the list, this doesn't hold true.\n        var middleOffset = Math.round(minOffset + (maxOffset - minOffset) / 2);\n\n        if (middleOffset < Math.ceil(height / 2)) {\n          return 0; // near the beginning\n        } else if (middleOffset > lastRowOffset + Math.floor(height / 2)) {\n          return lastRowOffset; // near the end\n        } else {\n          return middleOffset;\n        }\n\n      case 'auto':\n      default:\n        if (scrollTop >= minOffset && scrollTop <= maxOffset) {\n          return scrollTop;\n        } else if (minOffset > maxOffset) {\n          // Because we only take into account the scrollbar size when calculating minOffset\n          // this value can be larger than maxOffset when at the end of the list\n          return minOffset;\n        } else if (scrollTop < minOffset) {\n          return minOffset;\n        } else {\n          return maxOffset;\n        }\n\n    }\n  },\n  getColumnStartIndexForOffset: function getColumnStartIndexForOffset(_ref9, scrollLeft) {\n    var columnWidth = _ref9.columnWidth,\n        columnCount = _ref9.columnCount;\n    return Math.max(0, Math.min(columnCount - 1, Math.floor(scrollLeft / columnWidth)));\n  },\n  getColumnStopIndexForStartIndex: function getColumnStopIndexForStartIndex(_ref10, startIndex, scrollLeft) {\n    var columnWidth = _ref10.columnWidth,\n        columnCount = _ref10.columnCount,\n        width = _ref10.width;\n    var left = startIndex * columnWidth;\n    var numVisibleColumns = Math.ceil((width + scrollLeft - left) / columnWidth);\n    return Math.max(0, Math.min(columnCount - 1, startIndex + numVisibleColumns - 1 // -1 is because stop index is inclusive\n    ));\n  },\n  getRowStartIndexForOffset: function getRowStartIndexForOffset(_ref11, scrollTop) {\n    var rowHeight = _ref11.rowHeight,\n        rowCount = _ref11.rowCount;\n    return Math.max(0, Math.min(rowCount - 1, Math.floor(scrollTop / rowHeight)));\n  },\n  getRowStopIndexForStartIndex: function getRowStopIndexForStartIndex(_ref12, startIndex, scrollTop) {\n    var rowHeight = _ref12.rowHeight,\n        rowCount = _ref12.rowCount,\n        height = _ref12.height;\n    var top = startIndex * rowHeight;\n    var numVisibleRows = Math.ceil((height + scrollTop - top) / rowHeight);\n    return Math.max(0, Math.min(rowCount - 1, startIndex + numVisibleRows - 1 // -1 is because stop index is inclusive\n    ));\n  },\n  initInstanceProps: function initInstanceProps(props) {// Noop\n  },\n  shouldResetStyleCacheOnItemSizeChange: true,\n  validateProps: function validateProps(_ref13) {\n    var columnWidth = _ref13.columnWidth,\n        rowHeight = _ref13.rowHeight;\n\n    if (process.env.NODE_ENV !== 'production') {\n      if (typeof columnWidth !== 'number') {\n        throw Error('An invalid \"columnWidth\" prop has been specified. ' + 'Value should be a number. ' + (\"\\\"\" + (columnWidth === null ? 'null' : typeof columnWidth) + \"\\\" was specified.\"));\n      }\n\n      if (typeof rowHeight !== 'number') {\n        throw Error('An invalid \"rowHeight\" prop has been specified. ' + 'Value should be a number. ' + (\"\\\"\" + (rowHeight === null ? 'null' : typeof rowHeight) + \"\\\" was specified.\"));\n      }\n    }\n  }\n});\n\nvar FixedSizeList = /*#__PURE__*/createListComponent({\n  getItemOffset: function getItemOffset(_ref, index) {\n    var itemSize = _ref.itemSize;\n    return index * itemSize;\n  },\n  getItemSize: function getItemSize(_ref2, index) {\n    var itemSize = _ref2.itemSize;\n    return itemSize;\n  },\n  getEstimatedTotalSize: function getEstimatedTotalSize(_ref3) {\n    var itemCount = _ref3.itemCount,\n        itemSize = _ref3.itemSize;\n    return itemSize * itemCount;\n  },\n  getOffsetForIndexAndAlignment: function getOffsetForIndexAndAlignment(_ref4, index, align, scrollOffset, instanceProps, scrollbarSize) {\n    var direction = _ref4.direction,\n        height = _ref4.height,\n        itemCount = _ref4.itemCount,\n        itemSize = _ref4.itemSize,\n        layout = _ref4.layout,\n        width = _ref4.width;\n    // TODO Deprecate direction \"horizontal\"\n    var isHorizontal = direction === 'horizontal' || layout === 'horizontal';\n    var size = isHorizontal ? width : height;\n    var lastItemOffset = Math.max(0, itemCount * itemSize - size);\n    var maxOffset = Math.min(lastItemOffset, index * itemSize);\n    var minOffset = Math.max(0, index * itemSize - size + itemSize + scrollbarSize);\n\n    if (align === 'smart') {\n      if (scrollOffset >= minOffset - size && scrollOffset <= maxOffset + size) {\n        align = 'auto';\n      } else {\n        align = 'center';\n      }\n    }\n\n    switch (align) {\n      case 'start':\n        return maxOffset;\n\n      case 'end':\n        return minOffset;\n\n      case 'center':\n        {\n          // \"Centered\" offset is usually the average of the min and max.\n          // But near the edges of the list, this doesn't hold true.\n          var middleOffset = Math.round(minOffset + (maxOffset - minOffset) / 2);\n\n          if (middleOffset < Math.ceil(size / 2)) {\n            return 0; // near the beginning\n          } else if (middleOffset > lastItemOffset + Math.floor(size / 2)) {\n            return lastItemOffset; // near the end\n          } else {\n            return middleOffset;\n          }\n        }\n\n      case 'auto':\n      default:\n        if (scrollOffset >= minOffset && scrollOffset <= maxOffset) {\n          return scrollOffset;\n        } else if (scrollOffset < minOffset) {\n          return minOffset;\n        } else {\n          return maxOffset;\n        }\n\n    }\n  },\n  getStartIndexForOffset: function getStartIndexForOffset(_ref5, offset) {\n    var itemCount = _ref5.itemCount,\n        itemSize = _ref5.itemSize;\n    return Math.max(0, Math.min(itemCount - 1, Math.floor(offset / itemSize)));\n  },\n  getStopIndexForStartIndex: function getStopIndexForStartIndex(_ref6, startIndex, scrollOffset) {\n    var direction = _ref6.direction,\n        height = _ref6.height,\n        itemCount = _ref6.itemCount,\n        itemSize = _ref6.itemSize,\n        layout = _ref6.layout,\n        width = _ref6.width;\n    // TODO Deprecate direction \"horizontal\"\n    var isHorizontal = direction === 'horizontal' || layout === 'horizontal';\n    var offset = startIndex * itemSize;\n    var size = isHorizontal ? width : height;\n    var numVisibleItems = Math.ceil((size + scrollOffset - offset) / itemSize);\n    return Math.max(0, Math.min(itemCount - 1, startIndex + numVisibleItems - 1 // -1 is because stop index is inclusive\n    ));\n  },\n  initInstanceProps: function initInstanceProps(props) {// Noop\n  },\n  shouldResetStyleCacheOnItemSizeChange: true,\n  validateProps: function validateProps(_ref7) {\n    var itemSize = _ref7.itemSize;\n\n    if (process.env.NODE_ENV !== 'production') {\n      if (typeof itemSize !== 'number') {\n        throw Error('An invalid \"itemSize\" prop has been specified. ' + 'Value should be a number. ' + (\"\\\"\" + (itemSize === null ? 'null' : typeof itemSize) + \"\\\" was specified.\"));\n      }\n    }\n  }\n});\n\n// Pulled from react-compat\n// https://github.com/developit/preact-compat/blob/7c5de00e7c85e2ffd011bf3af02899b63f699d3a/src/index.js#L349\nfunction shallowDiffers(prev, next) {\n  for (var attribute in prev) {\n    if (!(attribute in next)) {\n      return true;\n    }\n  }\n\n  for (var _attribute in next) {\n    if (prev[_attribute] !== next[_attribute]) {\n      return true;\n    }\n  }\n\n  return false;\n}\n\nvar _excluded = [\"style\"],\n    _excluded2 = [\"style\"];\n// It knows to compare individual style props and ignore the wrapper object.\n// See https://reactjs.org/docs/react-api.html#reactmemo\n\nfunction areEqual(prevProps, nextProps) {\n  var prevStyle = prevProps.style,\n      prevRest = _objectWithoutPropertiesLoose(prevProps, _excluded);\n\n  var nextStyle = nextProps.style,\n      nextRest = _objectWithoutPropertiesLoose(nextProps, _excluded2);\n\n  return !shallowDiffers(prevStyle, nextStyle) && !shallowDiffers(prevRest, nextRest);\n}\n\n// It knows to compare individual style props and ignore the wrapper object.\n// See https://reactjs.org/docs/react-component.html#shouldcomponentupdate\n\nfunction shouldComponentUpdate(nextProps, nextState) {\n  return !areEqual(this.props, nextProps) || shallowDiffers(this.state, nextState);\n}\n\nexport { FixedSizeGrid, FixedSizeList, VariableSizeGrid, VariableSizeList, areEqual, shouldComponentUpdate };\n//# sourceMappingURL=index.esm.js.map\n","/**\n * @license React\n * react-jsx-runtime.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var f=require(\"react\"),k=Symbol.for(\"react.element\"),l=Symbol.for(\"react.fragment\"),m=Object.prototype.hasOwnProperty,n=f.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,p={key:!0,ref:!0,__self:!0,__source:!0};\nfunction q(c,a,g){var b,d={},e=null,h=null;void 0!==g&&(e=\"\"+g);void 0!==a.key&&(e=\"\"+a.key);void 0!==a.ref&&(h=a.ref);for(b in a)m.call(a,b)&&!p.hasOwnProperty(b)&&(d[b]=a[b]);if(c&&c.defaultProps)for(b in a=c.defaultProps,a)void 0===d[b]&&(d[b]=a[b]);return{$$typeof:k,type:c,key:e,ref:h,props:d,_owner:n.current}}exports.Fragment=l;exports.jsx=q;exports.jsxs=q;\n","/**\n * @license React\n * react.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var l=Symbol.for(\"react.element\"),n=Symbol.for(\"react.portal\"),p=Symbol.for(\"react.fragment\"),q=Symbol.for(\"react.strict_mode\"),r=Symbol.for(\"react.profiler\"),t=Symbol.for(\"react.provider\"),u=Symbol.for(\"react.context\"),v=Symbol.for(\"react.forward_ref\"),w=Symbol.for(\"react.suspense\"),x=Symbol.for(\"react.memo\"),y=Symbol.for(\"react.lazy\"),z=Symbol.iterator;function A(a){if(null===a||\"object\"!==typeof a)return null;a=z&&a[z]||a[\"@@iterator\"];return\"function\"===typeof a?a:null}\nvar B={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},C=Object.assign,D={};function E(a,b,e){this.props=a;this.context=b;this.refs=D;this.updater=e||B}E.prototype.isReactComponent={};\nE.prototype.setState=function(a,b){if(\"object\"!==typeof a&&\"function\"!==typeof a&&null!=a)throw Error(\"setState(...): takes an object of state variables to update or a function which returns an object of state variables.\");this.updater.enqueueSetState(this,a,b,\"setState\")};E.prototype.forceUpdate=function(a){this.updater.enqueueForceUpdate(this,a,\"forceUpdate\")};function F(){}F.prototype=E.prototype;function G(a,b,e){this.props=a;this.context=b;this.refs=D;this.updater=e||B}var H=G.prototype=new F;\nH.constructor=G;C(H,E.prototype);H.isPureReactComponent=!0;var I=Array.isArray,J=Object.prototype.hasOwnProperty,K={current:null},L={key:!0,ref:!0,__self:!0,__source:!0};\nfunction M(a,b,e){var d,c={},k=null,h=null;if(null!=b)for(d in void 0!==b.ref&&(h=b.ref),void 0!==b.key&&(k=\"\"+b.key),b)J.call(b,d)&&!L.hasOwnProperty(d)&&(c[d]=b[d]);var g=arguments.length-2;if(1===g)c.children=e;else if(1<g){for(var f=Array(g),m=0;m<g;m++)f[m]=arguments[m+2];c.children=f}if(a&&a.defaultProps)for(d in g=a.defaultProps,g)void 0===c[d]&&(c[d]=g[d]);return{$$typeof:l,type:a,key:k,ref:h,props:c,_owner:K.current}}\nfunction N(a,b){return{$$typeof:l,type:a.type,key:b,ref:a.ref,props:a.props,_owner:a._owner}}function O(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===l}function escape(a){var b={\"=\":\"=0\",\":\":\"=2\"};return\"$\"+a.replace(/[=:]/g,function(a){return b[a]})}var P=/\\/+/g;function Q(a,b){return\"object\"===typeof a&&null!==a&&null!=a.key?escape(\"\"+a.key):b.toString(36)}\nfunction R(a,b,e,d,c){var k=typeof a;if(\"undefined\"===k||\"boolean\"===k)a=null;var h=!1;if(null===a)h=!0;else switch(k){case \"string\":case \"number\":h=!0;break;case \"object\":switch(a.$$typeof){case l:case n:h=!0}}if(h)return h=a,c=c(h),a=\"\"===d?\".\"+Q(h,0):d,I(c)?(e=\"\",null!=a&&(e=a.replace(P,\"$&/\")+\"/\"),R(c,b,e,\"\",function(a){return a})):null!=c&&(O(c)&&(c=N(c,e+(!c.key||h&&h.key===c.key?\"\":(\"\"+c.key).replace(P,\"$&/\")+\"/\")+a)),b.push(c)),1;h=0;d=\"\"===d?\".\":d+\":\";if(I(a))for(var g=0;g<a.length;g++){k=\na[g];var f=d+Q(k,g);h+=R(k,b,e,f,c)}else if(f=A(a),\"function\"===typeof f)for(a=f.call(a),g=0;!(k=a.next()).done;)k=k.value,f=d+Q(k,g++),h+=R(k,b,e,f,c);else if(\"object\"===k)throw b=String(a),Error(\"Objects are not valid as a React child (found: \"+(\"[object Object]\"===b?\"object with keys {\"+Object.keys(a).join(\", \")+\"}\":b)+\"). If you meant to render a collection of children, use an array instead.\");return h}\nfunction S(a,b,e){if(null==a)return a;var d=[],c=0;R(a,d,\"\",\"\",function(a){return b.call(e,a,c++)});return d}function T(a){if(-1===a._status){var b=a._result;b=b();b.then(function(b){if(0===a._status||-1===a._status)a._status=1,a._result=b},function(b){if(0===a._status||-1===a._status)a._status=2,a._result=b});-1===a._status&&(a._status=0,a._result=b)}if(1===a._status)return a._result.default;throw a._result;}\nvar U={current:null},V={transition:null},W={ReactCurrentDispatcher:U,ReactCurrentBatchConfig:V,ReactCurrentOwner:K};function X(){throw Error(\"act(...) is not supported in production builds of React.\");}\nexports.Children={map:S,forEach:function(a,b,e){S(a,function(){b.apply(this,arguments)},e)},count:function(a){var b=0;S(a,function(){b++});return b},toArray:function(a){return S(a,function(a){return a})||[]},only:function(a){if(!O(a))throw Error(\"React.Children.only expected to receive a single React element child.\");return a}};exports.Component=E;exports.Fragment=p;exports.Profiler=r;exports.PureComponent=G;exports.StrictMode=q;exports.Suspense=w;\nexports.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=W;exports.act=X;\nexports.cloneElement=function(a,b,e){if(null===a||void 0===a)throw Error(\"React.cloneElement(...): The argument must be a React element, but you passed \"+a+\".\");var d=C({},a.props),c=a.key,k=a.ref,h=a._owner;if(null!=b){void 0!==b.ref&&(k=b.ref,h=K.current);void 0!==b.key&&(c=\"\"+b.key);if(a.type&&a.type.defaultProps)var g=a.type.defaultProps;for(f in b)J.call(b,f)&&!L.hasOwnProperty(f)&&(d[f]=void 0===b[f]&&void 0!==g?g[f]:b[f])}var f=arguments.length-2;if(1===f)d.children=e;else if(1<f){g=Array(f);\nfor(var m=0;m<f;m++)g[m]=arguments[m+2];d.children=g}return{$$typeof:l,type:a.type,key:c,ref:k,props:d,_owner:h}};exports.createContext=function(a){a={$$typeof:u,_currentValue:a,_currentValue2:a,_threadCount:0,Provider:null,Consumer:null,_defaultValue:null,_globalName:null};a.Provider={$$typeof:t,_context:a};return a.Consumer=a};exports.createElement=M;exports.createFactory=function(a){var b=M.bind(null,a);b.type=a;return b};exports.createRef=function(){return{current:null}};\nexports.forwardRef=function(a){return{$$typeof:v,render:a}};exports.isValidElement=O;exports.lazy=function(a){return{$$typeof:y,_payload:{_status:-1,_result:a},_init:T}};exports.memo=function(a,b){return{$$typeof:x,type:a,compare:void 0===b?null:b}};exports.startTransition=function(a){var b=V.transition;V.transition={};try{a()}finally{V.transition=b}};exports.unstable_act=X;exports.useCallback=function(a,b){return U.current.useCallback(a,b)};exports.useContext=function(a){return U.current.useContext(a)};\nexports.useDebugValue=function(){};exports.useDeferredValue=function(a){return U.current.useDeferredValue(a)};exports.useEffect=function(a,b){return U.current.useEffect(a,b)};exports.useId=function(){return U.current.useId()};exports.useImperativeHandle=function(a,b,e){return U.current.useImperativeHandle(a,b,e)};exports.useInsertionEffect=function(a,b){return U.current.useInsertionEffect(a,b)};exports.useLayoutEffect=function(a,b){return U.current.useLayoutEffect(a,b)};\nexports.useMemo=function(a,b){return U.current.useMemo(a,b)};exports.useReducer=function(a,b,e){return U.current.useReducer(a,b,e)};exports.useRef=function(a){return U.current.useRef(a)};exports.useState=function(a){return U.current.useState(a)};exports.useSyncExternalStore=function(a,b,e){return U.current.useSyncExternalStore(a,b,e)};exports.useTransition=function(){return U.current.useTransition()};exports.version=\"18.3.1\";\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n  module.exports = require('./cjs/react.production.min.js');\n} else {\n  module.exports = require('./cjs/react.development.js');\n}\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n  module.exports = require('./cjs/react-jsx-runtime.production.min.js');\n} else {\n  module.exports = require('./cjs/react-jsx-runtime.development.js');\n}\n","import _objectSpread from '@babel/runtime/helpers/esm/objectSpread2';\n\n/**\n * Adapted from React: https://github.com/facebook/react/blob/master/packages/shared/formatProdErrorMessage.js\n *\n * Do not require this module directly! Use normal throw error calls. These messages will be replaced with error codes\n * during build.\n * @param {number} code\n */\nfunction formatProdErrorMessage(code) {\n  return \"Minified Redux error #\" + code + \"; visit https://redux.js.org/Errors?code=\" + code + \" for the full message or \" + 'use the non-minified dev environment for full errors. ';\n}\n\n// Inlined version of the `symbol-observable` polyfill\nvar $$observable = (function () {\n  return typeof Symbol === 'function' && Symbol.observable || '@@observable';\n})();\n\n/**\n * These are private action types reserved by Redux.\n * For any unknown actions, you must return the current state.\n * If the current state is undefined, you must return the initial state.\n * Do not reference these action types directly in your code.\n */\nvar randomString = function randomString() {\n  return Math.random().toString(36).substring(7).split('').join('.');\n};\n\nvar ActionTypes = {\n  INIT: \"@@redux/INIT\" + randomString(),\n  REPLACE: \"@@redux/REPLACE\" + randomString(),\n  PROBE_UNKNOWN_ACTION: function PROBE_UNKNOWN_ACTION() {\n    return \"@@redux/PROBE_UNKNOWN_ACTION\" + randomString();\n  }\n};\n\n/**\n * @param {any} obj The object to inspect.\n * @returns {boolean} True if the argument appears to be a plain object.\n */\nfunction isPlainObject(obj) {\n  if (typeof obj !== 'object' || obj === null) return false;\n  var proto = obj;\n\n  while (Object.getPrototypeOf(proto) !== null) {\n    proto = Object.getPrototypeOf(proto);\n  }\n\n  return Object.getPrototypeOf(obj) === proto;\n}\n\n// Inlined / shortened version of `kindOf` from https://github.com/jonschlinkert/kind-of\nfunction miniKindOf(val) {\n  if (val === void 0) return 'undefined';\n  if (val === null) return 'null';\n  var type = typeof val;\n\n  switch (type) {\n    case 'boolean':\n    case 'string':\n    case 'number':\n    case 'symbol':\n    case 'function':\n      {\n        return type;\n      }\n  }\n\n  if (Array.isArray(val)) return 'array';\n  if (isDate(val)) return 'date';\n  if (isError(val)) return 'error';\n  var constructorName = ctorName(val);\n\n  switch (constructorName) {\n    case 'Symbol':\n    case 'Promise':\n    case 'WeakMap':\n    case 'WeakSet':\n    case 'Map':\n    case 'Set':\n      return constructorName;\n  } // other\n\n\n  return type.slice(8, -1).toLowerCase().replace(/\\s/g, '');\n}\n\nfunction ctorName(val) {\n  return typeof val.constructor === 'function' ? val.constructor.name : null;\n}\n\nfunction isError(val) {\n  return val instanceof Error || typeof val.message === 'string' && val.constructor && typeof val.constructor.stackTraceLimit === 'number';\n}\n\nfunction isDate(val) {\n  if (val instanceof Date) return true;\n  return typeof val.toDateString === 'function' && typeof val.getDate === 'function' && typeof val.setDate === 'function';\n}\n\nfunction kindOf(val) {\n  var typeOfVal = typeof val;\n\n  if (process.env.NODE_ENV !== 'production') {\n    typeOfVal = miniKindOf(val);\n  }\n\n  return typeOfVal;\n}\n\n/**\n * @deprecated\n *\n * **We recommend using the `configureStore` method\n * of the `@reduxjs/toolkit` package**, which replaces `createStore`.\n *\n * Redux Toolkit is our recommended approach for writing Redux logic today,\n * including store setup, reducers, data fetching, and more.\n *\n * **For more details, please read this Redux docs page:**\n * **https://redux.js.org/introduction/why-rtk-is-redux-today**\n *\n * `configureStore` from Redux Toolkit is an improved version of `createStore` that\n * simplifies setup and helps avoid common bugs.\n *\n * You should not be using the `redux` core package by itself today, except for learning purposes.\n * The `createStore` method from the core `redux` package will not be removed, but we encourage\n * all users to migrate to using Redux Toolkit for all Redux code.\n *\n * If you want to use `createStore` without this visual deprecation warning, use\n * the `legacy_createStore` import instead:\n *\n * `import { legacy_createStore as createStore} from 'redux'`\n *\n */\n\nfunction createStore(reducer, preloadedState, enhancer) {\n  var _ref2;\n\n  if (typeof preloadedState === 'function' && typeof enhancer === 'function' || typeof enhancer === 'function' && typeof arguments[3] === 'function') {\n    throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(0) : 'It looks like you are passing several store enhancers to ' + 'createStore(). This is not supported. Instead, compose them ' + 'together to a single function. See https://redux.js.org/tutorials/fundamentals/part-4-store#creating-a-store-with-enhancers for an example.');\n  }\n\n  if (typeof preloadedState === 'function' && typeof enhancer === 'undefined') {\n    enhancer = preloadedState;\n    preloadedState = undefined;\n  }\n\n  if (typeof enhancer !== 'undefined') {\n    if (typeof enhancer !== 'function') {\n      throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(1) : \"Expected the enhancer to be a function. Instead, received: '\" + kindOf(enhancer) + \"'\");\n    }\n\n    return enhancer(createStore)(reducer, preloadedState);\n  }\n\n  if (typeof reducer !== 'function') {\n    throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(2) : \"Expected the root reducer to be a function. Instead, received: '\" + kindOf(reducer) + \"'\");\n  }\n\n  var currentReducer = reducer;\n  var currentState = preloadedState;\n  var currentListeners = [];\n  var nextListeners = currentListeners;\n  var isDispatching = false;\n  /**\n   * This makes a shallow copy of currentListeners so we can use\n   * nextListeners as a temporary list while dispatching.\n   *\n   * This prevents any bugs around consumers calling\n   * subscribe/unsubscribe in the middle of a dispatch.\n   */\n\n  function ensureCanMutateNextListeners() {\n    if (nextListeners === currentListeners) {\n      nextListeners = currentListeners.slice();\n    }\n  }\n  /**\n   * Reads the state tree managed by the store.\n   *\n   * @returns {any} The current state tree of your application.\n   */\n\n\n  function getState() {\n    if (isDispatching) {\n      throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(3) : 'You may not call store.getState() while the reducer is executing. ' + 'The reducer has already received the state as an argument. ' + 'Pass it down from the top reducer instead of reading it from the store.');\n    }\n\n    return currentState;\n  }\n  /**\n   * Adds a change listener. It will be called any time an action is dispatched,\n   * and some part of the state tree may potentially have changed. You may then\n   * call `getState()` to read the current state tree inside the callback.\n   *\n   * You may call `dispatch()` from a change listener, with the following\n   * caveats:\n   *\n   * 1. The subscriptions are snapshotted just before every `dispatch()` call.\n   * If you subscribe or unsubscribe while the listeners are being invoked, this\n   * will not have any effect on the `dispatch()` that is currently in progress.\n   * However, the next `dispatch()` call, whether nested or not, will use a more\n   * recent snapshot of the subscription list.\n   *\n   * 2. The listener should not expect to see all state changes, as the state\n   * might have been updated multiple times during a nested `dispatch()` before\n   * the listener is called. It is, however, guaranteed that all subscribers\n   * registered before the `dispatch()` started will be called with the latest\n   * state by the time it exits.\n   *\n   * @param {Function} listener A callback to be invoked on every dispatch.\n   * @returns {Function} A function to remove this change listener.\n   */\n\n\n  function subscribe(listener) {\n    if (typeof listener !== 'function') {\n      throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(4) : \"Expected the listener to be a function. Instead, received: '\" + kindOf(listener) + \"'\");\n    }\n\n    if (isDispatching) {\n      throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(5) : 'You may not call store.subscribe() while the reducer is executing. ' + 'If you would like to be notified after the store has been updated, subscribe from a ' + 'component and invoke store.getState() in the callback to access the latest state. ' + 'See https://redux.js.org/api/store#subscribelistener for more details.');\n    }\n\n    var isSubscribed = true;\n    ensureCanMutateNextListeners();\n    nextListeners.push(listener);\n    return function unsubscribe() {\n      if (!isSubscribed) {\n        return;\n      }\n\n      if (isDispatching) {\n        throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(6) : 'You may not unsubscribe from a store listener while the reducer is executing. ' + 'See https://redux.js.org/api/store#subscribelistener for more details.');\n      }\n\n      isSubscribed = false;\n      ensureCanMutateNextListeners();\n      var index = nextListeners.indexOf(listener);\n      nextListeners.splice(index, 1);\n      currentListeners = null;\n    };\n  }\n  /**\n   * Dispatches an action. It is the only way to trigger a state change.\n   *\n   * The `reducer` function, used to create the store, will be called with the\n   * current state tree and the given `action`. Its return value will\n   * be considered the **next** state of the tree, and the change listeners\n   * will be notified.\n   *\n   * The base implementation only supports plain object actions. If you want to\n   * dispatch a Promise, an Observable, a thunk, or something else, you need to\n   * wrap your store creating function into the corresponding middleware. For\n   * example, see the documentation for the `redux-thunk` package. Even the\n   * middleware will eventually dispatch plain object actions using this method.\n   *\n   * @param {Object} action A plain object representing “what changed”. It is\n   * a good idea to keep actions serializable so you can record and replay user\n   * sessions, or use the time travelling `redux-devtools`. An action must have\n   * a `type` property which may not be `undefined`. It is a good idea to use\n   * string constants for action types.\n   *\n   * @returns {Object} For convenience, the same action object you dispatched.\n   *\n   * Note that, if you use a custom middleware, it may wrap `dispatch()` to\n   * return something else (for example, a Promise you can await).\n   */\n\n\n  function dispatch(action) {\n    if (!isPlainObject(action)) {\n      throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(7) : \"Actions must be plain objects. Instead, the actual type was: '\" + kindOf(action) + \"'. You may need to add middleware to your store setup to handle dispatching other values, such as 'redux-thunk' to handle dispatching functions. See https://redux.js.org/tutorials/fundamentals/part-4-store#middleware and https://redux.js.org/tutorials/fundamentals/part-6-async-logic#using-the-redux-thunk-middleware for examples.\");\n    }\n\n    if (typeof action.type === 'undefined') {\n      throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(8) : 'Actions may not have an undefined \"type\" property. You may have misspelled an action type string constant.');\n    }\n\n    if (isDispatching) {\n      throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(9) : 'Reducers may not dispatch actions.');\n    }\n\n    try {\n      isDispatching = true;\n      currentState = currentReducer(currentState, action);\n    } finally {\n      isDispatching = false;\n    }\n\n    var listeners = currentListeners = nextListeners;\n\n    for (var i = 0; i < listeners.length; i++) {\n      var listener = listeners[i];\n      listener();\n    }\n\n    return action;\n  }\n  /**\n   * Replaces the reducer currently used by the store to calculate the state.\n   *\n   * You might need this if your app implements code splitting and you want to\n   * load some of the reducers dynamically. You might also need this if you\n   * implement a hot reloading mechanism for Redux.\n   *\n   * @param {Function} nextReducer The reducer for the store to use instead.\n   * @returns {void}\n   */\n\n\n  function replaceReducer(nextReducer) {\n    if (typeof nextReducer !== 'function') {\n      throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(10) : \"Expected the nextReducer to be a function. Instead, received: '\" + kindOf(nextReducer));\n    }\n\n    currentReducer = nextReducer; // This action has a similiar effect to ActionTypes.INIT.\n    // Any reducers that existed in both the new and old rootReducer\n    // will receive the previous state. This effectively populates\n    // the new state tree with any relevant data from the old one.\n\n    dispatch({\n      type: ActionTypes.REPLACE\n    });\n  }\n  /**\n   * Interoperability point for observable/reactive libraries.\n   * @returns {observable} A minimal observable of state changes.\n   * For more information, see the observable proposal:\n   * https://github.com/tc39/proposal-observable\n   */\n\n\n  function observable() {\n    var _ref;\n\n    var outerSubscribe = subscribe;\n    return _ref = {\n      /**\n       * The minimal observable subscription method.\n       * @param {Object} observer Any object that can be used as an observer.\n       * The observer object should have a `next` method.\n       * @returns {subscription} An object with an `unsubscribe` method that can\n       * be used to unsubscribe the observable from the store, and prevent further\n       * emission of values from the observable.\n       */\n      subscribe: function subscribe(observer) {\n        if (typeof observer !== 'object' || observer === null) {\n          throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(11) : \"Expected the observer to be an object. Instead, received: '\" + kindOf(observer) + \"'\");\n        }\n\n        function observeState() {\n          if (observer.next) {\n            observer.next(getState());\n          }\n        }\n\n        observeState();\n        var unsubscribe = outerSubscribe(observeState);\n        return {\n          unsubscribe: unsubscribe\n        };\n      }\n    }, _ref[$$observable] = function () {\n      return this;\n    }, _ref;\n  } // When a store is created, an \"INIT\" action is dispatched so that every\n  // reducer returns their initial state. This effectively populates\n  // the initial state tree.\n\n\n  dispatch({\n    type: ActionTypes.INIT\n  });\n  return _ref2 = {\n    dispatch: dispatch,\n    subscribe: subscribe,\n    getState: getState,\n    replaceReducer: replaceReducer\n  }, _ref2[$$observable] = observable, _ref2;\n}\n/**\n * Creates a Redux store that holds the state tree.\n *\n * **We recommend using `configureStore` from the\n * `@reduxjs/toolkit` package**, which replaces `createStore`:\n * **https://redux.js.org/introduction/why-rtk-is-redux-today**\n *\n * The only way to change the data in the store is to call `dispatch()` on it.\n *\n * There should only be a single store in your app. To specify how different\n * parts of the state tree respond to actions, you may combine several reducers\n * into a single reducer function by using `combineReducers`.\n *\n * @param {Function} reducer A function that returns the next state tree, given\n * the current state tree and the action to handle.\n *\n * @param {any} [preloadedState] The initial state. You may optionally specify it\n * to hydrate the state from the server in universal apps, or to restore a\n * previously serialized user session.\n * If you use `combineReducers` to produce the root reducer function, this must be\n * an object with the same shape as `combineReducers` keys.\n *\n * @param {Function} [enhancer] The store enhancer. You may optionally specify it\n * to enhance the store with third-party capabilities such as middleware,\n * time travel, persistence, etc. The only store enhancer that ships with Redux\n * is `applyMiddleware()`.\n *\n * @returns {Store} A Redux store that lets you read the state, dispatch actions\n * and subscribe to changes.\n */\n\nvar legacy_createStore = createStore;\n\n/**\n * Prints a warning in the console if it exists.\n *\n * @param {String} message The warning message.\n * @returns {void}\n */\nfunction warning(message) {\n  /* eslint-disable no-console */\n  if (typeof console !== 'undefined' && typeof console.error === 'function') {\n    console.error(message);\n  }\n  /* eslint-enable no-console */\n\n\n  try {\n    // This error was thrown as a convenience so that if you enable\n    // \"break on all exceptions\" in your console,\n    // it would pause the execution at this line.\n    throw new Error(message);\n  } catch (e) {} // eslint-disable-line no-empty\n\n}\n\nfunction getUnexpectedStateShapeWarningMessage(inputState, reducers, action, unexpectedKeyCache) {\n  var reducerKeys = Object.keys(reducers);\n  var argumentName = action && action.type === ActionTypes.INIT ? 'preloadedState argument passed to createStore' : 'previous state received by the reducer';\n\n  if (reducerKeys.length === 0) {\n    return 'Store does not have a valid reducer. Make sure the argument passed ' + 'to combineReducers is an object whose values are reducers.';\n  }\n\n  if (!isPlainObject(inputState)) {\n    return \"The \" + argumentName + \" has unexpected type of \\\"\" + kindOf(inputState) + \"\\\". Expected argument to be an object with the following \" + (\"keys: \\\"\" + reducerKeys.join('\", \"') + \"\\\"\");\n  }\n\n  var unexpectedKeys = Object.keys(inputState).filter(function (key) {\n    return !reducers.hasOwnProperty(key) && !unexpectedKeyCache[key];\n  });\n  unexpectedKeys.forEach(function (key) {\n    unexpectedKeyCache[key] = true;\n  });\n  if (action && action.type === ActionTypes.REPLACE) return;\n\n  if (unexpectedKeys.length > 0) {\n    return \"Unexpected \" + (unexpectedKeys.length > 1 ? 'keys' : 'key') + \" \" + (\"\\\"\" + unexpectedKeys.join('\", \"') + \"\\\" found in \" + argumentName + \". \") + \"Expected to find one of the known reducer keys instead: \" + (\"\\\"\" + reducerKeys.join('\", \"') + \"\\\". Unexpected keys will be ignored.\");\n  }\n}\n\nfunction assertReducerShape(reducers) {\n  Object.keys(reducers).forEach(function (key) {\n    var reducer = reducers[key];\n    var initialState = reducer(undefined, {\n      type: ActionTypes.INIT\n    });\n\n    if (typeof initialState === 'undefined') {\n      throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(12) : \"The slice reducer for key \\\"\" + key + \"\\\" returned undefined during initialization. \" + \"If the state passed to the reducer is undefined, you must \" + \"explicitly return the initial state. The initial state may \" + \"not be undefined. If you don't want to set a value for this reducer, \" + \"you can use null instead of undefined.\");\n    }\n\n    if (typeof reducer(undefined, {\n      type: ActionTypes.PROBE_UNKNOWN_ACTION()\n    }) === 'undefined') {\n      throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(13) : \"The slice reducer for key \\\"\" + key + \"\\\" returned undefined when probed with a random type. \" + (\"Don't try to handle '\" + ActionTypes.INIT + \"' or other actions in \\\"redux/*\\\" \") + \"namespace. They are considered private. Instead, you must return the \" + \"current state for any unknown actions, unless it is undefined, \" + \"in which case you must return the initial state, regardless of the \" + \"action type. The initial state may not be undefined, but can be null.\");\n    }\n  });\n}\n/**\n * Turns an object whose values are different reducer functions, into a single\n * reducer function. It will call every child reducer, and gather their results\n * into a single state object, whose keys correspond to the keys of the passed\n * reducer functions.\n *\n * @param {Object} reducers An object whose values correspond to different\n * reducer functions that need to be combined into one. One handy way to obtain\n * it is to use ES6 `import * as reducers` syntax. The reducers may never return\n * undefined for any action. Instead, they should return their initial state\n * if the state passed to them was undefined, and the current state for any\n * unrecognized action.\n *\n * @returns {Function} A reducer function that invokes every reducer inside the\n * passed object, and builds a state object with the same shape.\n */\n\n\nfunction combineReducers(reducers) {\n  var reducerKeys = Object.keys(reducers);\n  var finalReducers = {};\n\n  for (var i = 0; i < reducerKeys.length; i++) {\n    var key = reducerKeys[i];\n\n    if (process.env.NODE_ENV !== 'production') {\n      if (typeof reducers[key] === 'undefined') {\n        warning(\"No reducer provided for key \\\"\" + key + \"\\\"\");\n      }\n    }\n\n    if (typeof reducers[key] === 'function') {\n      finalReducers[key] = reducers[key];\n    }\n  }\n\n  var finalReducerKeys = Object.keys(finalReducers); // This is used to make sure we don't warn about the same\n  // keys multiple times.\n\n  var unexpectedKeyCache;\n\n  if (process.env.NODE_ENV !== 'production') {\n    unexpectedKeyCache = {};\n  }\n\n  var shapeAssertionError;\n\n  try {\n    assertReducerShape(finalReducers);\n  } catch (e) {\n    shapeAssertionError = e;\n  }\n\n  return function combination(state, action) {\n    if (state === void 0) {\n      state = {};\n    }\n\n    if (shapeAssertionError) {\n      throw shapeAssertionError;\n    }\n\n    if (process.env.NODE_ENV !== 'production') {\n      var warningMessage = getUnexpectedStateShapeWarningMessage(state, finalReducers, action, unexpectedKeyCache);\n\n      if (warningMessage) {\n        warning(warningMessage);\n      }\n    }\n\n    var hasChanged = false;\n    var nextState = {};\n\n    for (var _i = 0; _i < finalReducerKeys.length; _i++) {\n      var _key = finalReducerKeys[_i];\n      var reducer = finalReducers[_key];\n      var previousStateForKey = state[_key];\n      var nextStateForKey = reducer(previousStateForKey, action);\n\n      if (typeof nextStateForKey === 'undefined') {\n        var actionType = action && action.type;\n        throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(14) : \"When called with an action of type \" + (actionType ? \"\\\"\" + String(actionType) + \"\\\"\" : '(unknown type)') + \", the slice reducer for key \\\"\" + _key + \"\\\" returned undefined. \" + \"To ignore an action, you must explicitly return the previous state. \" + \"If you want this reducer to hold no value, you can return null instead of undefined.\");\n      }\n\n      nextState[_key] = nextStateForKey;\n      hasChanged = hasChanged || nextStateForKey !== previousStateForKey;\n    }\n\n    hasChanged = hasChanged || finalReducerKeys.length !== Object.keys(state).length;\n    return hasChanged ? nextState : state;\n  };\n}\n\nfunction bindActionCreator(actionCreator, dispatch) {\n  return function () {\n    return dispatch(actionCreator.apply(this, arguments));\n  };\n}\n/**\n * Turns an object whose values are action creators, into an object with the\n * same keys, but with every function wrapped into a `dispatch` call so they\n * may be invoked directly. This is just a convenience method, as you can call\n * `store.dispatch(MyActionCreators.doSomething())` yourself just fine.\n *\n * For convenience, you can also pass an action creator as the first argument,\n * and get a dispatch wrapped function in return.\n *\n * @param {Function|Object} actionCreators An object whose values are action\n * creator functions. One handy way to obtain it is to use ES6 `import * as`\n * syntax. You may also pass a single function.\n *\n * @param {Function} dispatch The `dispatch` function available on your Redux\n * store.\n *\n * @returns {Function|Object} The object mimicking the original object, but with\n * every action creator wrapped into the `dispatch` call. If you passed a\n * function as `actionCreators`, the return value will also be a single\n * function.\n */\n\n\nfunction bindActionCreators(actionCreators, dispatch) {\n  if (typeof actionCreators === 'function') {\n    return bindActionCreator(actionCreators, dispatch);\n  }\n\n  if (typeof actionCreators !== 'object' || actionCreators === null) {\n    throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(16) : \"bindActionCreators expected an object or a function, but instead received: '\" + kindOf(actionCreators) + \"'. \" + \"Did you write \\\"import ActionCreators from\\\" instead of \\\"import * as ActionCreators from\\\"?\");\n  }\n\n  var boundActionCreators = {};\n\n  for (var key in actionCreators) {\n    var actionCreator = actionCreators[key];\n\n    if (typeof actionCreator === 'function') {\n      boundActionCreators[key] = bindActionCreator(actionCreator, dispatch);\n    }\n  }\n\n  return boundActionCreators;\n}\n\n/**\n * Composes single-argument functions from right to left. The rightmost\n * function can take multiple arguments as it provides the signature for\n * the resulting composite function.\n *\n * @param {...Function} funcs The functions to compose.\n * @returns {Function} A function obtained by composing the argument functions\n * from right to left. For example, compose(f, g, h) is identical to doing\n * (...args) => f(g(h(...args))).\n */\nfunction compose() {\n  for (var _len = arguments.length, funcs = new Array(_len), _key = 0; _key < _len; _key++) {\n    funcs[_key] = arguments[_key];\n  }\n\n  if (funcs.length === 0) {\n    return function (arg) {\n      return arg;\n    };\n  }\n\n  if (funcs.length === 1) {\n    return funcs[0];\n  }\n\n  return funcs.reduce(function (a, b) {\n    return function () {\n      return a(b.apply(void 0, arguments));\n    };\n  });\n}\n\n/**\n * Creates a store enhancer that applies middleware to the dispatch method\n * of the Redux store. This is handy for a variety of tasks, such as expressing\n * asynchronous actions in a concise manner, or logging every action payload.\n *\n * See `redux-thunk` package as an example of the Redux middleware.\n *\n * Because middleware is potentially asynchronous, this should be the first\n * store enhancer in the composition chain.\n *\n * Note that each middleware will be given the `dispatch` and `getState` functions\n * as named arguments.\n *\n * @param {...Function} middlewares The middleware chain to be applied.\n * @returns {Function} A store enhancer applying the middleware.\n */\n\nfunction applyMiddleware() {\n  for (var _len = arguments.length, middlewares = new Array(_len), _key = 0; _key < _len; _key++) {\n    middlewares[_key] = arguments[_key];\n  }\n\n  return function (createStore) {\n    return function () {\n      var store = createStore.apply(void 0, arguments);\n\n      var _dispatch = function dispatch() {\n        throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(15) : 'Dispatching while constructing your middleware is not allowed. ' + 'Other middleware would not be applied to this dispatch.');\n      };\n\n      var middlewareAPI = {\n        getState: store.getState,\n        dispatch: function dispatch() {\n          return _dispatch.apply(void 0, arguments);\n        }\n      };\n      var chain = middlewares.map(function (middleware) {\n        return middleware(middlewareAPI);\n      });\n      _dispatch = compose.apply(void 0, chain)(store.dispatch);\n      return _objectSpread(_objectSpread({}, store), {}, {\n        dispatch: _dispatch\n      });\n    };\n  };\n}\n\n/*\n * This is a dummy function to check if the function name has been altered by minification.\n * If the function has been minified and NODE_ENV !== 'production', warn the user.\n */\n\nfunction isCrushed() {}\n\nif (process.env.NODE_ENV !== 'production' && typeof isCrushed.name === 'string' && isCrushed.name !== 'isCrushed') {\n  warning('You are currently using minified code outside of NODE_ENV === \"production\". ' + 'This means that you are running a slower development build of Redux. ' + 'You can use loose-envify (https://github.com/zertosh/loose-envify) for browserify ' + 'or setting mode to production in webpack (https://webpack.js.org/concepts/mode/) ' + 'to ensure you have the correct code for your production build.');\n}\n\nexport { ActionTypes as __DO_NOT_USE__ActionTypes, applyMiddleware, bindActionCreators, combineReducers, compose, createStore, legacy_createStore };\n","// Cache implementation based on Erik Rasmussen's `lru-memoize`:\n// https://github.com/erikras/lru-memoize\nvar NOT_FOUND = 'NOT_FOUND';\n\nfunction createSingletonCache(equals) {\n  var entry;\n  return {\n    get: function get(key) {\n      if (entry && equals(entry.key, key)) {\n        return entry.value;\n      }\n\n      return NOT_FOUND;\n    },\n    put: function put(key, value) {\n      entry = {\n        key: key,\n        value: value\n      };\n    },\n    getEntries: function getEntries() {\n      return entry ? [entry] : [];\n    },\n    clear: function clear() {\n      entry = undefined;\n    }\n  };\n}\n\nfunction createLruCache(maxSize, equals) {\n  var entries = [];\n\n  function get(key) {\n    var cacheIndex = entries.findIndex(function (entry) {\n      return equals(key, entry.key);\n    }); // We found a cached entry\n\n    if (cacheIndex > -1) {\n      var entry = entries[cacheIndex]; // Cached entry not at top of cache, move it to the top\n\n      if (cacheIndex > 0) {\n        entries.splice(cacheIndex, 1);\n        entries.unshift(entry);\n      }\n\n      return entry.value;\n    } // No entry found in cache, return sentinel\n\n\n    return NOT_FOUND;\n  }\n\n  function put(key, value) {\n    if (get(key) === NOT_FOUND) {\n      // TODO Is unshift slow?\n      entries.unshift({\n        key: key,\n        value: value\n      });\n\n      if (entries.length > maxSize) {\n        entries.pop();\n      }\n    }\n  }\n\n  function getEntries() {\n    return entries;\n  }\n\n  function clear() {\n    entries = [];\n  }\n\n  return {\n    get: get,\n    put: put,\n    getEntries: getEntries,\n    clear: clear\n  };\n}\n\nexport var defaultEqualityCheck = function defaultEqualityCheck(a, b) {\n  return a === b;\n};\nexport function createCacheKeyComparator(equalityCheck) {\n  return function areArgumentsShallowlyEqual(prev, next) {\n    if (prev === null || next === null || prev.length !== next.length) {\n      return false;\n    } // Do this in a for loop (and not a `forEach` or an `every`) so we can determine equality as fast as possible.\n\n\n    var length = prev.length;\n\n    for (var i = 0; i < length; i++) {\n      if (!equalityCheck(prev[i], next[i])) {\n        return false;\n      }\n    }\n\n    return true;\n  };\n}\n// defaultMemoize now supports a configurable cache size with LRU behavior,\n// and optional comparison of the result value with existing values\nexport function defaultMemoize(func, equalityCheckOrOptions) {\n  var providedOptions = typeof equalityCheckOrOptions === 'object' ? equalityCheckOrOptions : {\n    equalityCheck: equalityCheckOrOptions\n  };\n  var _providedOptions$equa = providedOptions.equalityCheck,\n      equalityCheck = _providedOptions$equa === void 0 ? defaultEqualityCheck : _providedOptions$equa,\n      _providedOptions$maxS = providedOptions.maxSize,\n      maxSize = _providedOptions$maxS === void 0 ? 1 : _providedOptions$maxS,\n      resultEqualityCheck = providedOptions.resultEqualityCheck;\n  var comparator = createCacheKeyComparator(equalityCheck);\n  var cache = maxSize === 1 ? createSingletonCache(comparator) : createLruCache(maxSize, comparator); // we reference arguments instead of spreading them for performance reasons\n\n  function memoized() {\n    var value = cache.get(arguments);\n\n    if (value === NOT_FOUND) {\n      // @ts-ignore\n      value = func.apply(null, arguments);\n\n      if (resultEqualityCheck) {\n        var entries = cache.getEntries();\n        var matchingEntry = entries.find(function (entry) {\n          return resultEqualityCheck(entry.value, value);\n        });\n\n        if (matchingEntry) {\n          value = matchingEntry.value;\n        }\n      }\n\n      cache.put(arguments, value);\n    }\n\n    return value;\n  }\n\n  memoized.clearCache = function () {\n    return cache.clear();\n  };\n\n  return memoized;\n}","import { defaultMemoize, defaultEqualityCheck } from './defaultMemoize';\nexport { defaultMemoize, defaultEqualityCheck };\n\nfunction getDependencies(funcs) {\n  var dependencies = Array.isArray(funcs[0]) ? funcs[0] : funcs;\n\n  if (!dependencies.every(function (dep) {\n    return typeof dep === 'function';\n  })) {\n    var dependencyTypes = dependencies.map(function (dep) {\n      return typeof dep === 'function' ? \"function \" + (dep.name || 'unnamed') + \"()\" : typeof dep;\n    }).join(', ');\n    throw new Error(\"createSelector expects all input-selectors to be functions, but received the following types: [\" + dependencyTypes + \"]\");\n  }\n\n  return dependencies;\n}\n\nexport function createSelectorCreator(memoize) {\n  for (var _len = arguments.length, memoizeOptionsFromArgs = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n    memoizeOptionsFromArgs[_key - 1] = arguments[_key];\n  }\n\n  var createSelector = function createSelector() {\n    for (var _len2 = arguments.length, funcs = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n      funcs[_key2] = arguments[_key2];\n    }\n\n    var _recomputations = 0;\n\n    var _lastResult; // Due to the intricacies of rest params, we can't do an optional arg after `...funcs`.\n    // So, start by declaring the default value here.\n    // (And yes, the words 'memoize' and 'options' appear too many times in this next sequence.)\n\n\n    var directlyPassedOptions = {\n      memoizeOptions: undefined\n    }; // Normally, the result func or \"output selector\" is the last arg\n\n    var resultFunc = funcs.pop(); // If the result func is actually an _object_, assume it's our options object\n\n    if (typeof resultFunc === 'object') {\n      directlyPassedOptions = resultFunc; // and pop the real result func off\n\n      resultFunc = funcs.pop();\n    }\n\n    if (typeof resultFunc !== 'function') {\n      throw new Error(\"createSelector expects an output function after the inputs, but received: [\" + typeof resultFunc + \"]\");\n    } // Determine which set of options we're using. Prefer options passed directly,\n    // but fall back to options given to createSelectorCreator.\n\n\n    var _directlyPassedOption = directlyPassedOptions,\n        _directlyPassedOption2 = _directlyPassedOption.memoizeOptions,\n        memoizeOptions = _directlyPassedOption2 === void 0 ? memoizeOptionsFromArgs : _directlyPassedOption2; // Simplifying assumption: it's unlikely that the first options arg of the provided memoizer\n    // is an array. In most libs I've looked at, it's an equality function or options object.\n    // Based on that, if `memoizeOptions` _is_ an array, we assume it's a full\n    // user-provided array of options. Otherwise, it must be just the _first_ arg, and so\n    // we wrap it in an array so we can apply it.\n\n    var finalMemoizeOptions = Array.isArray(memoizeOptions) ? memoizeOptions : [memoizeOptions];\n    var dependencies = getDependencies(funcs);\n    var memoizedResultFunc = memoize.apply(void 0, [function recomputationWrapper() {\n      _recomputations++; // apply arguments instead of spreading for performance.\n\n      return resultFunc.apply(null, arguments);\n    }].concat(finalMemoizeOptions)); // If a selector is called with the exact same arguments we don't need to traverse our dependencies again.\n\n    var selector = memoize(function dependenciesChecker() {\n      var params = [];\n      var length = dependencies.length;\n\n      for (var i = 0; i < length; i++) {\n        // apply arguments instead of spreading and mutate a local list of params for performance.\n        // @ts-ignore\n        params.push(dependencies[i].apply(null, arguments));\n      } // apply arguments instead of spreading for performance.\n\n\n      _lastResult = memoizedResultFunc.apply(null, params);\n      return _lastResult;\n    });\n    Object.assign(selector, {\n      resultFunc: resultFunc,\n      memoizedResultFunc: memoizedResultFunc,\n      dependencies: dependencies,\n      lastResult: function lastResult() {\n        return _lastResult;\n      },\n      recomputations: function recomputations() {\n        return _recomputations;\n      },\n      resetRecomputations: function resetRecomputations() {\n        return _recomputations = 0;\n      }\n    });\n    return selector;\n  }; // @ts-ignore\n\n\n  return createSelector;\n}\nexport var createSelector = /* #__PURE__ */createSelectorCreator(defaultMemoize);\n// Manual definition of state and output arguments\nexport var createStructuredSelector = function createStructuredSelector(selectors, selectorCreator) {\n  if (selectorCreator === void 0) {\n    selectorCreator = createSelector;\n  }\n\n  if (typeof selectors !== 'object') {\n    throw new Error('createStructuredSelector expects first argument to be an object ' + (\"where each property is a selector, instead received a \" + typeof selectors));\n  }\n\n  var objectKeys = Object.keys(selectors);\n  var resultSelector = selectorCreator( // @ts-ignore\n  objectKeys.map(function (key) {\n    return selectors[key];\n  }), function () {\n    for (var _len3 = arguments.length, values = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n      values[_key3] = arguments[_key3];\n    }\n\n    return values.reduce(function (composition, value, index) {\n      composition[objectKeys[index]] = value;\n      return composition;\n    }, {});\n  });\n  return resultSelector;\n};","/**\r\n * A collection of shims that provide minimal functionality of the ES6 collections.\r\n *\r\n * These implementations are not meant to be used outside of the ResizeObserver\r\n * modules as they cover only a limited range of use cases.\r\n */\r\n/* eslint-disable require-jsdoc, valid-jsdoc */\r\nvar MapShim = (function () {\r\n    if (typeof Map !== 'undefined') {\r\n        return Map;\r\n    }\r\n    /**\r\n     * Returns index in provided array that matches the specified key.\r\n     *\r\n     * @param {Array<Array>} arr\r\n     * @param {*} key\r\n     * @returns {number}\r\n     */\r\n    function getIndex(arr, key) {\r\n        var result = -1;\r\n        arr.some(function (entry, index) {\r\n            if (entry[0] === key) {\r\n                result = index;\r\n                return true;\r\n            }\r\n            return false;\r\n        });\r\n        return result;\r\n    }\r\n    return /** @class */ (function () {\r\n        function class_1() {\r\n            this.__entries__ = [];\r\n        }\r\n        Object.defineProperty(class_1.prototype, \"size\", {\r\n            /**\r\n             * @returns {boolean}\r\n             */\r\n            get: function () {\r\n                return this.__entries__.length;\r\n            },\r\n            enumerable: true,\r\n            configurable: true\r\n        });\r\n        /**\r\n         * @param {*} key\r\n         * @returns {*}\r\n         */\r\n        class_1.prototype.get = function (key) {\r\n            var index = getIndex(this.__entries__, key);\r\n            var entry = this.__entries__[index];\r\n            return entry && entry[1];\r\n        };\r\n        /**\r\n         * @param {*} key\r\n         * @param {*} value\r\n         * @returns {void}\r\n         */\r\n        class_1.prototype.set = function (key, value) {\r\n            var index = getIndex(this.__entries__, key);\r\n            if (~index) {\r\n                this.__entries__[index][1] = value;\r\n            }\r\n            else {\r\n                this.__entries__.push([key, value]);\r\n            }\r\n        };\r\n        /**\r\n         * @param {*} key\r\n         * @returns {void}\r\n         */\r\n        class_1.prototype.delete = function (key) {\r\n            var entries = this.__entries__;\r\n            var index = getIndex(entries, key);\r\n            if (~index) {\r\n                entries.splice(index, 1);\r\n            }\r\n        };\r\n        /**\r\n         * @param {*} key\r\n         * @returns {void}\r\n         */\r\n        class_1.prototype.has = function (key) {\r\n            return !!~getIndex(this.__entries__, key);\r\n        };\r\n        /**\r\n         * @returns {void}\r\n         */\r\n        class_1.prototype.clear = function () {\r\n            this.__entries__.splice(0);\r\n        };\r\n        /**\r\n         * @param {Function} callback\r\n         * @param {*} [ctx=null]\r\n         * @returns {void}\r\n         */\r\n        class_1.prototype.forEach = function (callback, ctx) {\r\n            if (ctx === void 0) { ctx = null; }\r\n            for (var _i = 0, _a = this.__entries__; _i < _a.length; _i++) {\r\n                var entry = _a[_i];\r\n                callback.call(ctx, entry[1], entry[0]);\r\n            }\r\n        };\r\n        return class_1;\r\n    }());\r\n})();\n\n/**\r\n * Detects whether window and document objects are available in current environment.\r\n */\r\nvar isBrowser = typeof window !== 'undefined' && typeof document !== 'undefined' && window.document === document;\n\n// Returns global object of a current environment.\r\nvar global$1 = (function () {\r\n    if (typeof global !== 'undefined' && global.Math === Math) {\r\n        return global;\r\n    }\r\n    if (typeof self !== 'undefined' && self.Math === Math) {\r\n        return self;\r\n    }\r\n    if (typeof window !== 'undefined' && window.Math === Math) {\r\n        return window;\r\n    }\r\n    // eslint-disable-next-line no-new-func\r\n    return Function('return this')();\r\n})();\n\n/**\r\n * A shim for the requestAnimationFrame which falls back to the setTimeout if\r\n * first one is not supported.\r\n *\r\n * @returns {number} Requests' identifier.\r\n */\r\nvar requestAnimationFrame$1 = (function () {\r\n    if (typeof requestAnimationFrame === 'function') {\r\n        // It's required to use a bounded function because IE sometimes throws\r\n        // an \"Invalid calling object\" error if rAF is invoked without the global\r\n        // object on the left hand side.\r\n        return requestAnimationFrame.bind(global$1);\r\n    }\r\n    return function (callback) { return setTimeout(function () { return callback(Date.now()); }, 1000 / 60); };\r\n})();\n\n// Defines minimum timeout before adding a trailing call.\r\nvar trailingTimeout = 2;\r\n/**\r\n * Creates a wrapper function which ensures that provided callback will be\r\n * invoked only once during the specified delay period.\r\n *\r\n * @param {Function} callback - Function to be invoked after the delay period.\r\n * @param {number} delay - Delay after which to invoke callback.\r\n * @returns {Function}\r\n */\r\nfunction throttle (callback, delay) {\r\n    var leadingCall = false, trailingCall = false, lastCallTime = 0;\r\n    /**\r\n     * Invokes the original callback function and schedules new invocation if\r\n     * the \"proxy\" was called during current request.\r\n     *\r\n     * @returns {void}\r\n     */\r\n    function resolvePending() {\r\n        if (leadingCall) {\r\n            leadingCall = false;\r\n            callback();\r\n        }\r\n        if (trailingCall) {\r\n            proxy();\r\n        }\r\n    }\r\n    /**\r\n     * Callback invoked after the specified delay. It will further postpone\r\n     * invocation of the original function delegating it to the\r\n     * requestAnimationFrame.\r\n     *\r\n     * @returns {void}\r\n     */\r\n    function timeoutCallback() {\r\n        requestAnimationFrame$1(resolvePending);\r\n    }\r\n    /**\r\n     * Schedules invocation of the original function.\r\n     *\r\n     * @returns {void}\r\n     */\r\n    function proxy() {\r\n        var timeStamp = Date.now();\r\n        if (leadingCall) {\r\n            // Reject immediately following calls.\r\n            if (timeStamp - lastCallTime < trailingTimeout) {\r\n                return;\r\n            }\r\n            // Schedule new call to be in invoked when the pending one is resolved.\r\n            // This is important for \"transitions\" which never actually start\r\n            // immediately so there is a chance that we might miss one if change\r\n            // happens amids the pending invocation.\r\n            trailingCall = true;\r\n        }\r\n        else {\r\n            leadingCall = true;\r\n            trailingCall = false;\r\n            setTimeout(timeoutCallback, delay);\r\n        }\r\n        lastCallTime = timeStamp;\r\n    }\r\n    return proxy;\r\n}\n\n// Minimum delay before invoking the update of observers.\r\nvar REFRESH_DELAY = 20;\r\n// A list of substrings of CSS properties used to find transition events that\r\n// might affect dimensions of observed elements.\r\nvar transitionKeys = ['top', 'right', 'bottom', 'left', 'width', 'height', 'size', 'weight'];\r\n// Check if MutationObserver is available.\r\nvar mutationObserverSupported = typeof MutationObserver !== 'undefined';\r\n/**\r\n * Singleton controller class which handles updates of ResizeObserver instances.\r\n */\r\nvar ResizeObserverController = /** @class */ (function () {\r\n    /**\r\n     * Creates a new instance of ResizeObserverController.\r\n     *\r\n     * @private\r\n     */\r\n    function ResizeObserverController() {\r\n        /**\r\n         * Indicates whether DOM listeners have been added.\r\n         *\r\n         * @private {boolean}\r\n         */\r\n        this.connected_ = false;\r\n        /**\r\n         * Tells that controller has subscribed for Mutation Events.\r\n         *\r\n         * @private {boolean}\r\n         */\r\n        this.mutationEventsAdded_ = false;\r\n        /**\r\n         * Keeps reference to the instance of MutationObserver.\r\n         *\r\n         * @private {MutationObserver}\r\n         */\r\n        this.mutationsObserver_ = null;\r\n        /**\r\n         * A list of connected observers.\r\n         *\r\n         * @private {Array<ResizeObserverSPI>}\r\n         */\r\n        this.observers_ = [];\r\n        this.onTransitionEnd_ = this.onTransitionEnd_.bind(this);\r\n        this.refresh = throttle(this.refresh.bind(this), REFRESH_DELAY);\r\n    }\r\n    /**\r\n     * Adds observer to observers list.\r\n     *\r\n     * @param {ResizeObserverSPI} observer - Observer to be added.\r\n     * @returns {void}\r\n     */\r\n    ResizeObserverController.prototype.addObserver = function (observer) {\r\n        if (!~this.observers_.indexOf(observer)) {\r\n            this.observers_.push(observer);\r\n        }\r\n        // Add listeners if they haven't been added yet.\r\n        if (!this.connected_) {\r\n            this.connect_();\r\n        }\r\n    };\r\n    /**\r\n     * Removes observer from observers list.\r\n     *\r\n     * @param {ResizeObserverSPI} observer - Observer to be removed.\r\n     * @returns {void}\r\n     */\r\n    ResizeObserverController.prototype.removeObserver = function (observer) {\r\n        var observers = this.observers_;\r\n        var index = observers.indexOf(observer);\r\n        // Remove observer if it's present in registry.\r\n        if (~index) {\r\n            observers.splice(index, 1);\r\n        }\r\n        // Remove listeners if controller has no connected observers.\r\n        if (!observers.length && this.connected_) {\r\n            this.disconnect_();\r\n        }\r\n    };\r\n    /**\r\n     * Invokes the update of observers. It will continue running updates insofar\r\n     * it detects changes.\r\n     *\r\n     * @returns {void}\r\n     */\r\n    ResizeObserverController.prototype.refresh = function () {\r\n        var changesDetected = this.updateObservers_();\r\n        // Continue running updates if changes have been detected as there might\r\n        // be future ones caused by CSS transitions.\r\n        if (changesDetected) {\r\n            this.refresh();\r\n        }\r\n    };\r\n    /**\r\n     * Updates every observer from observers list and notifies them of queued\r\n     * entries.\r\n     *\r\n     * @private\r\n     * @returns {boolean} Returns \"true\" if any observer has detected changes in\r\n     *      dimensions of it's elements.\r\n     */\r\n    ResizeObserverController.prototype.updateObservers_ = function () {\r\n        // Collect observers that have active observations.\r\n        var activeObservers = this.observers_.filter(function (observer) {\r\n            return observer.gatherActive(), observer.hasActive();\r\n        });\r\n        // Deliver notifications in a separate cycle in order to avoid any\r\n        // collisions between observers, e.g. when multiple instances of\r\n        // ResizeObserver are tracking the same element and the callback of one\r\n        // of them changes content dimensions of the observed target. Sometimes\r\n        // this may result in notifications being blocked for the rest of observers.\r\n        activeObservers.forEach(function (observer) { return observer.broadcastActive(); });\r\n        return activeObservers.length > 0;\r\n    };\r\n    /**\r\n     * Initializes DOM listeners.\r\n     *\r\n     * @private\r\n     * @returns {void}\r\n     */\r\n    ResizeObserverController.prototype.connect_ = function () {\r\n        // Do nothing if running in a non-browser environment or if listeners\r\n        // have been already added.\r\n        if (!isBrowser || this.connected_) {\r\n            return;\r\n        }\r\n        // Subscription to the \"Transitionend\" event is used as a workaround for\r\n        // delayed transitions. This way it's possible to capture at least the\r\n        // final state of an element.\r\n        document.addEventListener('transitionend', this.onTransitionEnd_);\r\n        window.addEventListener('resize', this.refresh);\r\n        if (mutationObserverSupported) {\r\n            this.mutationsObserver_ = new MutationObserver(this.refresh);\r\n            this.mutationsObserver_.observe(document, {\r\n                attributes: true,\r\n                childList: true,\r\n                characterData: true,\r\n                subtree: true\r\n            });\r\n        }\r\n        else {\r\n            document.addEventListener('DOMSubtreeModified', this.refresh);\r\n            this.mutationEventsAdded_ = true;\r\n        }\r\n        this.connected_ = true;\r\n    };\r\n    /**\r\n     * Removes DOM listeners.\r\n     *\r\n     * @private\r\n     * @returns {void}\r\n     */\r\n    ResizeObserverController.prototype.disconnect_ = function () {\r\n        // Do nothing if running in a non-browser environment or if listeners\r\n        // have been already removed.\r\n        if (!isBrowser || !this.connected_) {\r\n            return;\r\n        }\r\n        document.removeEventListener('transitionend', this.onTransitionEnd_);\r\n        window.removeEventListener('resize', this.refresh);\r\n        if (this.mutationsObserver_) {\r\n            this.mutationsObserver_.disconnect();\r\n        }\r\n        if (this.mutationEventsAdded_) {\r\n            document.removeEventListener('DOMSubtreeModified', this.refresh);\r\n        }\r\n        this.mutationsObserver_ = null;\r\n        this.mutationEventsAdded_ = false;\r\n        this.connected_ = false;\r\n    };\r\n    /**\r\n     * \"Transitionend\" event handler.\r\n     *\r\n     * @private\r\n     * @param {TransitionEvent} event\r\n     * @returns {void}\r\n     */\r\n    ResizeObserverController.prototype.onTransitionEnd_ = function (_a) {\r\n        var _b = _a.propertyName, propertyName = _b === void 0 ? '' : _b;\r\n        // Detect whether transition may affect dimensions of an element.\r\n        var isReflowProperty = transitionKeys.some(function (key) {\r\n            return !!~propertyName.indexOf(key);\r\n        });\r\n        if (isReflowProperty) {\r\n            this.refresh();\r\n        }\r\n    };\r\n    /**\r\n     * Returns instance of the ResizeObserverController.\r\n     *\r\n     * @returns {ResizeObserverController}\r\n     */\r\n    ResizeObserverController.getInstance = function () {\r\n        if (!this.instance_) {\r\n            this.instance_ = new ResizeObserverController();\r\n        }\r\n        return this.instance_;\r\n    };\r\n    /**\r\n     * Holds reference to the controller's instance.\r\n     *\r\n     * @private {ResizeObserverController}\r\n     */\r\n    ResizeObserverController.instance_ = null;\r\n    return ResizeObserverController;\r\n}());\n\n/**\r\n * Defines non-writable/enumerable properties of the provided target object.\r\n *\r\n * @param {Object} target - Object for which to define properties.\r\n * @param {Object} props - Properties to be defined.\r\n * @returns {Object} Target object.\r\n */\r\nvar defineConfigurable = (function (target, props) {\r\n    for (var _i = 0, _a = Object.keys(props); _i < _a.length; _i++) {\r\n        var key = _a[_i];\r\n        Object.defineProperty(target, key, {\r\n            value: props[key],\r\n            enumerable: false,\r\n            writable: false,\r\n            configurable: true\r\n        });\r\n    }\r\n    return target;\r\n});\n\n/**\r\n * Returns the global object associated with provided element.\r\n *\r\n * @param {Object} target\r\n * @returns {Object}\r\n */\r\nvar getWindowOf = (function (target) {\r\n    // Assume that the element is an instance of Node, which means that it\r\n    // has the \"ownerDocument\" property from which we can retrieve a\r\n    // corresponding global object.\r\n    var ownerGlobal = target && target.ownerDocument && target.ownerDocument.defaultView;\r\n    // Return the local global object if it's not possible extract one from\r\n    // provided element.\r\n    return ownerGlobal || global$1;\r\n});\n\n// Placeholder of an empty content rectangle.\r\nvar emptyRect = createRectInit(0, 0, 0, 0);\r\n/**\r\n * Converts provided string to a number.\r\n *\r\n * @param {number|string} value\r\n * @returns {number}\r\n */\r\nfunction toFloat(value) {\r\n    return parseFloat(value) || 0;\r\n}\r\n/**\r\n * Extracts borders size from provided styles.\r\n *\r\n * @param {CSSStyleDeclaration} styles\r\n * @param {...string} positions - Borders positions (top, right, ...)\r\n * @returns {number}\r\n */\r\nfunction getBordersSize(styles) {\r\n    var positions = [];\r\n    for (var _i = 1; _i < arguments.length; _i++) {\r\n        positions[_i - 1] = arguments[_i];\r\n    }\r\n    return positions.reduce(function (size, position) {\r\n        var value = styles['border-' + position + '-width'];\r\n        return size + toFloat(value);\r\n    }, 0);\r\n}\r\n/**\r\n * Extracts paddings sizes from provided styles.\r\n *\r\n * @param {CSSStyleDeclaration} styles\r\n * @returns {Object} Paddings box.\r\n */\r\nfunction getPaddings(styles) {\r\n    var positions = ['top', 'right', 'bottom', 'left'];\r\n    var paddings = {};\r\n    for (var _i = 0, positions_1 = positions; _i < positions_1.length; _i++) {\r\n        var position = positions_1[_i];\r\n        var value = styles['padding-' + position];\r\n        paddings[position] = toFloat(value);\r\n    }\r\n    return paddings;\r\n}\r\n/**\r\n * Calculates content rectangle of provided SVG element.\r\n *\r\n * @param {SVGGraphicsElement} target - Element content rectangle of which needs\r\n *      to be calculated.\r\n * @returns {DOMRectInit}\r\n */\r\nfunction getSVGContentRect(target) {\r\n    var bbox = target.getBBox();\r\n    return createRectInit(0, 0, bbox.width, bbox.height);\r\n}\r\n/**\r\n * Calculates content rectangle of provided HTMLElement.\r\n *\r\n * @param {HTMLElement} target - Element for which to calculate the content rectangle.\r\n * @returns {DOMRectInit}\r\n */\r\nfunction getHTMLElementContentRect(target) {\r\n    // Client width & height properties can't be\r\n    // used exclusively as they provide rounded values.\r\n    var clientWidth = target.clientWidth, clientHeight = target.clientHeight;\r\n    // By this condition we can catch all non-replaced inline, hidden and\r\n    // detached elements. Though elements with width & height properties less\r\n    // than 0.5 will be discarded as well.\r\n    //\r\n    // Without it we would need to implement separate methods for each of\r\n    // those cases and it's not possible to perform a precise and performance\r\n    // effective test for hidden elements. E.g. even jQuery's ':visible' filter\r\n    // gives wrong results for elements with width & height less than 0.5.\r\n    if (!clientWidth && !clientHeight) {\r\n        return emptyRect;\r\n    }\r\n    var styles = getWindowOf(target).getComputedStyle(target);\r\n    var paddings = getPaddings(styles);\r\n    var horizPad = paddings.left + paddings.right;\r\n    var vertPad = paddings.top + paddings.bottom;\r\n    // Computed styles of width & height are being used because they are the\r\n    // only dimensions available to JS that contain non-rounded values. It could\r\n    // be possible to utilize the getBoundingClientRect if only it's data wasn't\r\n    // affected by CSS transformations let alone paddings, borders and scroll bars.\r\n    var width = toFloat(styles.width), height = toFloat(styles.height);\r\n    // Width & height include paddings and borders when the 'border-box' box\r\n    // model is applied (except for IE).\r\n    if (styles.boxSizing === 'border-box') {\r\n        // Following conditions are required to handle Internet Explorer which\r\n        // doesn't include paddings and borders to computed CSS dimensions.\r\n        //\r\n        // We can say that if CSS dimensions + paddings are equal to the \"client\"\r\n        // properties then it's either IE, and thus we don't need to subtract\r\n        // anything, or an element merely doesn't have paddings/borders styles.\r\n        if (Math.round(width + horizPad) !== clientWidth) {\r\n            width -= getBordersSize(styles, 'left', 'right') + horizPad;\r\n        }\r\n        if (Math.round(height + vertPad) !== clientHeight) {\r\n            height -= getBordersSize(styles, 'top', 'bottom') + vertPad;\r\n        }\r\n    }\r\n    // Following steps can't be applied to the document's root element as its\r\n    // client[Width/Height] properties represent viewport area of the window.\r\n    // Besides, it's as well not necessary as the <html> itself neither has\r\n    // rendered scroll bars nor it can be clipped.\r\n    if (!isDocumentElement(target)) {\r\n        // In some browsers (only in Firefox, actually) CSS width & height\r\n        // include scroll bars size which can be removed at this step as scroll\r\n        // bars are the only difference between rounded dimensions + paddings\r\n        // and \"client\" properties, though that is not always true in Chrome.\r\n        var vertScrollbar = Math.round(width + horizPad) - clientWidth;\r\n        var horizScrollbar = Math.round(height + vertPad) - clientHeight;\r\n        // Chrome has a rather weird rounding of \"client\" properties.\r\n        // E.g. for an element with content width of 314.2px it sometimes gives\r\n        // the client width of 315px and for the width of 314.7px it may give\r\n        // 314px. And it doesn't happen all the time. So just ignore this delta\r\n        // as a non-relevant.\r\n        if (Math.abs(vertScrollbar) !== 1) {\r\n            width -= vertScrollbar;\r\n        }\r\n        if (Math.abs(horizScrollbar) !== 1) {\r\n            height -= horizScrollbar;\r\n        }\r\n    }\r\n    return createRectInit(paddings.left, paddings.top, width, height);\r\n}\r\n/**\r\n * Checks whether provided element is an instance of the SVGGraphicsElement.\r\n *\r\n * @param {Element} target - Element to be checked.\r\n * @returns {boolean}\r\n */\r\nvar isSVGGraphicsElement = (function () {\r\n    // Some browsers, namely IE and Edge, don't have the SVGGraphicsElement\r\n    // interface.\r\n    if (typeof SVGGraphicsElement !== 'undefined') {\r\n        return function (target) { return target instanceof getWindowOf(target).SVGGraphicsElement; };\r\n    }\r\n    // If it's so, then check that element is at least an instance of the\r\n    // SVGElement and that it has the \"getBBox\" method.\r\n    // eslint-disable-next-line no-extra-parens\r\n    return function (target) { return (target instanceof getWindowOf(target).SVGElement &&\r\n        typeof target.getBBox === 'function'); };\r\n})();\r\n/**\r\n * Checks whether provided element is a document element (<html>).\r\n *\r\n * @param {Element} target - Element to be checked.\r\n * @returns {boolean}\r\n */\r\nfunction isDocumentElement(target) {\r\n    return target === getWindowOf(target).document.documentElement;\r\n}\r\n/**\r\n * Calculates an appropriate content rectangle for provided html or svg element.\r\n *\r\n * @param {Element} target - Element content rectangle of which needs to be calculated.\r\n * @returns {DOMRectInit}\r\n */\r\nfunction getContentRect(target) {\r\n    if (!isBrowser) {\r\n        return emptyRect;\r\n    }\r\n    if (isSVGGraphicsElement(target)) {\r\n        return getSVGContentRect(target);\r\n    }\r\n    return getHTMLElementContentRect(target);\r\n}\r\n/**\r\n * Creates rectangle with an interface of the DOMRectReadOnly.\r\n * Spec: https://drafts.fxtf.org/geometry/#domrectreadonly\r\n *\r\n * @param {DOMRectInit} rectInit - Object with rectangle's x/y coordinates and dimensions.\r\n * @returns {DOMRectReadOnly}\r\n */\r\nfunction createReadOnlyRect(_a) {\r\n    var x = _a.x, y = _a.y, width = _a.width, height = _a.height;\r\n    // If DOMRectReadOnly is available use it as a prototype for the rectangle.\r\n    var Constr = typeof DOMRectReadOnly !== 'undefined' ? DOMRectReadOnly : Object;\r\n    var rect = Object.create(Constr.prototype);\r\n    // Rectangle's properties are not writable and non-enumerable.\r\n    defineConfigurable(rect, {\r\n        x: x, y: y, width: width, height: height,\r\n        top: y,\r\n        right: x + width,\r\n        bottom: height + y,\r\n        left: x\r\n    });\r\n    return rect;\r\n}\r\n/**\r\n * Creates DOMRectInit object based on the provided dimensions and the x/y coordinates.\r\n * Spec: https://drafts.fxtf.org/geometry/#dictdef-domrectinit\r\n *\r\n * @param {number} x - X coordinate.\r\n * @param {number} y - Y coordinate.\r\n * @param {number} width - Rectangle's width.\r\n * @param {number} height - Rectangle's height.\r\n * @returns {DOMRectInit}\r\n */\r\nfunction createRectInit(x, y, width, height) {\r\n    return { x: x, y: y, width: width, height: height };\r\n}\n\n/**\r\n * Class that is responsible for computations of the content rectangle of\r\n * provided DOM element and for keeping track of it's changes.\r\n */\r\nvar ResizeObservation = /** @class */ (function () {\r\n    /**\r\n     * Creates an instance of ResizeObservation.\r\n     *\r\n     * @param {Element} target - Element to be observed.\r\n     */\r\n    function ResizeObservation(target) {\r\n        /**\r\n         * Broadcasted width of content rectangle.\r\n         *\r\n         * @type {number}\r\n         */\r\n        this.broadcastWidth = 0;\r\n        /**\r\n         * Broadcasted height of content rectangle.\r\n         *\r\n         * @type {number}\r\n         */\r\n        this.broadcastHeight = 0;\r\n        /**\r\n         * Reference to the last observed content rectangle.\r\n         *\r\n         * @private {DOMRectInit}\r\n         */\r\n        this.contentRect_ = createRectInit(0, 0, 0, 0);\r\n        this.target = target;\r\n    }\r\n    /**\r\n     * Updates content rectangle and tells whether it's width or height properties\r\n     * have changed since the last broadcast.\r\n     *\r\n     * @returns {boolean}\r\n     */\r\n    ResizeObservation.prototype.isActive = function () {\r\n        var rect = getContentRect(this.target);\r\n        this.contentRect_ = rect;\r\n        return (rect.width !== this.broadcastWidth ||\r\n            rect.height !== this.broadcastHeight);\r\n    };\r\n    /**\r\n     * Updates 'broadcastWidth' and 'broadcastHeight' properties with a data\r\n     * from the corresponding properties of the last observed content rectangle.\r\n     *\r\n     * @returns {DOMRectInit} Last observed content rectangle.\r\n     */\r\n    ResizeObservation.prototype.broadcastRect = function () {\r\n        var rect = this.contentRect_;\r\n        this.broadcastWidth = rect.width;\r\n        this.broadcastHeight = rect.height;\r\n        return rect;\r\n    };\r\n    return ResizeObservation;\r\n}());\n\nvar ResizeObserverEntry = /** @class */ (function () {\r\n    /**\r\n     * Creates an instance of ResizeObserverEntry.\r\n     *\r\n     * @param {Element} target - Element that is being observed.\r\n     * @param {DOMRectInit} rectInit - Data of the element's content rectangle.\r\n     */\r\n    function ResizeObserverEntry(target, rectInit) {\r\n        var contentRect = createReadOnlyRect(rectInit);\r\n        // According to the specification following properties are not writable\r\n        // and are also not enumerable in the native implementation.\r\n        //\r\n        // Property accessors are not being used as they'd require to define a\r\n        // private WeakMap storage which may cause memory leaks in browsers that\r\n        // don't support this type of collections.\r\n        defineConfigurable(this, { target: target, contentRect: contentRect });\r\n    }\r\n    return ResizeObserverEntry;\r\n}());\n\nvar ResizeObserverSPI = /** @class */ (function () {\r\n    /**\r\n     * Creates a new instance of ResizeObserver.\r\n     *\r\n     * @param {ResizeObserverCallback} callback - Callback function that is invoked\r\n     *      when one of the observed elements changes it's content dimensions.\r\n     * @param {ResizeObserverController} controller - Controller instance which\r\n     *      is responsible for the updates of observer.\r\n     * @param {ResizeObserver} callbackCtx - Reference to the public\r\n     *      ResizeObserver instance which will be passed to callback function.\r\n     */\r\n    function ResizeObserverSPI(callback, controller, callbackCtx) {\r\n        /**\r\n         * Collection of resize observations that have detected changes in dimensions\r\n         * of elements.\r\n         *\r\n         * @private {Array<ResizeObservation>}\r\n         */\r\n        this.activeObservations_ = [];\r\n        /**\r\n         * Registry of the ResizeObservation instances.\r\n         *\r\n         * @private {Map<Element, ResizeObservation>}\r\n         */\r\n        this.observations_ = new MapShim();\r\n        if (typeof callback !== 'function') {\r\n            throw new TypeError('The callback provided as parameter 1 is not a function.');\r\n        }\r\n        this.callback_ = callback;\r\n        this.controller_ = controller;\r\n        this.callbackCtx_ = callbackCtx;\r\n    }\r\n    /**\r\n     * Starts observing provided element.\r\n     *\r\n     * @param {Element} target - Element to be observed.\r\n     * @returns {void}\r\n     */\r\n    ResizeObserverSPI.prototype.observe = function (target) {\r\n        if (!arguments.length) {\r\n            throw new TypeError('1 argument required, but only 0 present.');\r\n        }\r\n        // Do nothing if current environment doesn't have the Element interface.\r\n        if (typeof Element === 'undefined' || !(Element instanceof Object)) {\r\n            return;\r\n        }\r\n        if (!(target instanceof getWindowOf(target).Element)) {\r\n            throw new TypeError('parameter 1 is not of type \"Element\".');\r\n        }\r\n        var observations = this.observations_;\r\n        // Do nothing if element is already being observed.\r\n        if (observations.has(target)) {\r\n            return;\r\n        }\r\n        observations.set(target, new ResizeObservation(target));\r\n        this.controller_.addObserver(this);\r\n        // Force the update of observations.\r\n        this.controller_.refresh();\r\n    };\r\n    /**\r\n     * Stops observing provided element.\r\n     *\r\n     * @param {Element} target - Element to stop observing.\r\n     * @returns {void}\r\n     */\r\n    ResizeObserverSPI.prototype.unobserve = function (target) {\r\n        if (!arguments.length) {\r\n            throw new TypeError('1 argument required, but only 0 present.');\r\n        }\r\n        // Do nothing if current environment doesn't have the Element interface.\r\n        if (typeof Element === 'undefined' || !(Element instanceof Object)) {\r\n            return;\r\n        }\r\n        if (!(target instanceof getWindowOf(target).Element)) {\r\n            throw new TypeError('parameter 1 is not of type \"Element\".');\r\n        }\r\n        var observations = this.observations_;\r\n        // Do nothing if element is not being observed.\r\n        if (!observations.has(target)) {\r\n            return;\r\n        }\r\n        observations.delete(target);\r\n        if (!observations.size) {\r\n            this.controller_.removeObserver(this);\r\n        }\r\n    };\r\n    /**\r\n     * Stops observing all elements.\r\n     *\r\n     * @returns {void}\r\n     */\r\n    ResizeObserverSPI.prototype.disconnect = function () {\r\n        this.clearActive();\r\n        this.observations_.clear();\r\n        this.controller_.removeObserver(this);\r\n    };\r\n    /**\r\n     * Collects observation instances the associated element of which has changed\r\n     * it's content rectangle.\r\n     *\r\n     * @returns {void}\r\n     */\r\n    ResizeObserverSPI.prototype.gatherActive = function () {\r\n        var _this = this;\r\n        this.clearActive();\r\n        this.observations_.forEach(function (observation) {\r\n            if (observation.isActive()) {\r\n                _this.activeObservations_.push(observation);\r\n            }\r\n        });\r\n    };\r\n    /**\r\n     * Invokes initial callback function with a list of ResizeObserverEntry\r\n     * instances collected from active resize observations.\r\n     *\r\n     * @returns {void}\r\n     */\r\n    ResizeObserverSPI.prototype.broadcastActive = function () {\r\n        // Do nothing if observer doesn't have active observations.\r\n        if (!this.hasActive()) {\r\n            return;\r\n        }\r\n        var ctx = this.callbackCtx_;\r\n        // Create ResizeObserverEntry instance for every active observation.\r\n        var entries = this.activeObservations_.map(function (observation) {\r\n            return new ResizeObserverEntry(observation.target, observation.broadcastRect());\r\n        });\r\n        this.callback_.call(ctx, entries, ctx);\r\n        this.clearActive();\r\n    };\r\n    /**\r\n     * Clears the collection of active observations.\r\n     *\r\n     * @returns {void}\r\n     */\r\n    ResizeObserverSPI.prototype.clearActive = function () {\r\n        this.activeObservations_.splice(0);\r\n    };\r\n    /**\r\n     * Tells whether observer has active observations.\r\n     *\r\n     * @returns {boolean}\r\n     */\r\n    ResizeObserverSPI.prototype.hasActive = function () {\r\n        return this.activeObservations_.length > 0;\r\n    };\r\n    return ResizeObserverSPI;\r\n}());\n\n// Registry of internal observers. If WeakMap is not available use current shim\r\n// for the Map collection as it has all required methods and because WeakMap\r\n// can't be fully polyfilled anyway.\r\nvar observers = typeof WeakMap !== 'undefined' ? new WeakMap() : new MapShim();\r\n/**\r\n * ResizeObserver API. Encapsulates the ResizeObserver SPI implementation\r\n * exposing only those methods and properties that are defined in the spec.\r\n */\r\nvar ResizeObserver = /** @class */ (function () {\r\n    /**\r\n     * Creates a new instance of ResizeObserver.\r\n     *\r\n     * @param {ResizeObserverCallback} callback - Callback that is invoked when\r\n     *      dimensions of the observed elements change.\r\n     */\r\n    function ResizeObserver(callback) {\r\n        if (!(this instanceof ResizeObserver)) {\r\n            throw new TypeError('Cannot call a class as a function.');\r\n        }\r\n        if (!arguments.length) {\r\n            throw new TypeError('1 argument required, but only 0 present.');\r\n        }\r\n        var controller = ResizeObserverController.getInstance();\r\n        var observer = new ResizeObserverSPI(callback, controller, this);\r\n        observers.set(this, observer);\r\n    }\r\n    return ResizeObserver;\r\n}());\r\n// Expose public methods of ResizeObserver.\r\n[\r\n    'observe',\r\n    'unobserve',\r\n    'disconnect'\r\n].forEach(function (method) {\r\n    ResizeObserver.prototype[method] = function () {\r\n        var _a;\r\n        return (_a = observers.get(this))[method].apply(_a, arguments);\r\n    };\r\n});\n\nvar index = (function () {\r\n    // Export existing implementation if available.\r\n    if (typeof global$1.ResizeObserver !== 'undefined') {\r\n        return global$1.ResizeObserver;\r\n    }\r\n    return ResizeObserver;\r\n})();\n\nexport default index;\n","/**\n * @license React\n * scheduler.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';function f(a,b){var c=a.length;a.push(b);a:for(;0<c;){var d=c-1>>>1,e=a[d];if(0<g(e,b))a[d]=b,a[c]=e,c=d;else break a}}function h(a){return 0===a.length?null:a[0]}function k(a){if(0===a.length)return null;var b=a[0],c=a.pop();if(c!==b){a[0]=c;a:for(var d=0,e=a.length,w=e>>>1;d<w;){var m=2*(d+1)-1,C=a[m],n=m+1,x=a[n];if(0>g(C,c))n<e&&0>g(x,C)?(a[d]=x,a[n]=c,d=n):(a[d]=C,a[m]=c,d=m);else if(n<e&&0>g(x,c))a[d]=x,a[n]=c,d=n;else break a}}return b}\nfunction g(a,b){var c=a.sortIndex-b.sortIndex;return 0!==c?c:a.id-b.id}if(\"object\"===typeof performance&&\"function\"===typeof performance.now){var l=performance;exports.unstable_now=function(){return l.now()}}else{var p=Date,q=p.now();exports.unstable_now=function(){return p.now()-q}}var r=[],t=[],u=1,v=null,y=3,z=!1,A=!1,B=!1,D=\"function\"===typeof setTimeout?setTimeout:null,E=\"function\"===typeof clearTimeout?clearTimeout:null,F=\"undefined\"!==typeof setImmediate?setImmediate:null;\n\"undefined\"!==typeof navigator&&void 0!==navigator.scheduling&&void 0!==navigator.scheduling.isInputPending&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function G(a){for(var b=h(t);null!==b;){if(null===b.callback)k(t);else if(b.startTime<=a)k(t),b.sortIndex=b.expirationTime,f(r,b);else break;b=h(t)}}function H(a){B=!1;G(a);if(!A)if(null!==h(r))A=!0,I(J);else{var b=h(t);null!==b&&K(H,b.startTime-a)}}\nfunction J(a,b){A=!1;B&&(B=!1,E(L),L=-1);z=!0;var c=y;try{G(b);for(v=h(r);null!==v&&(!(v.expirationTime>b)||a&&!M());){var d=v.callback;if(\"function\"===typeof d){v.callback=null;y=v.priorityLevel;var e=d(v.expirationTime<=b);b=exports.unstable_now();\"function\"===typeof e?v.callback=e:v===h(r)&&k(r);G(b)}else k(r);v=h(r)}if(null!==v)var w=!0;else{var m=h(t);null!==m&&K(H,m.startTime-b);w=!1}return w}finally{v=null,y=c,z=!1}}var N=!1,O=null,L=-1,P=5,Q=-1;\nfunction M(){return exports.unstable_now()-Q<P?!1:!0}function R(){if(null!==O){var a=exports.unstable_now();Q=a;var b=!0;try{b=O(!0,a)}finally{b?S():(N=!1,O=null)}}else N=!1}var S;if(\"function\"===typeof F)S=function(){F(R)};else if(\"undefined\"!==typeof MessageChannel){var T=new MessageChannel,U=T.port2;T.port1.onmessage=R;S=function(){U.postMessage(null)}}else S=function(){D(R,0)};function I(a){O=a;N||(N=!0,S())}function K(a,b){L=D(function(){a(exports.unstable_now())},b)}\nexports.unstable_IdlePriority=5;exports.unstable_ImmediatePriority=1;exports.unstable_LowPriority=4;exports.unstable_NormalPriority=3;exports.unstable_Profiling=null;exports.unstable_UserBlockingPriority=2;exports.unstable_cancelCallback=function(a){a.callback=null};exports.unstable_continueExecution=function(){A||z||(A=!0,I(J))};\nexports.unstable_forceFrameRate=function(a){0>a||125<a?console.error(\"forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported\"):P=0<a?Math.floor(1E3/a):5};exports.unstable_getCurrentPriorityLevel=function(){return y};exports.unstable_getFirstCallbackNode=function(){return h(r)};exports.unstable_next=function(a){switch(y){case 1:case 2:case 3:var b=3;break;default:b=y}var c=y;y=b;try{return a()}finally{y=c}};exports.unstable_pauseExecution=function(){};\nexports.unstable_requestPaint=function(){};exports.unstable_runWithPriority=function(a,b){switch(a){case 1:case 2:case 3:case 4:case 5:break;default:a=3}var c=y;y=a;try{return b()}finally{y=c}};\nexports.unstable_scheduleCallback=function(a,b,c){var d=exports.unstable_now();\"object\"===typeof c&&null!==c?(c=c.delay,c=\"number\"===typeof c&&0<c?d+c:d):c=d;switch(a){case 1:var e=-1;break;case 2:e=250;break;case 5:e=1073741823;break;case 4:e=1E4;break;default:e=5E3}e=c+e;a={id:u++,callback:b,priorityLevel:a,startTime:c,expirationTime:e,sortIndex:-1};c>d?(a.sortIndex=c,f(t,a),null===h(r)&&a===h(t)&&(B?(E(L),L=-1):B=!0,K(H,c-d))):(a.sortIndex=e,f(r,a),A||z||(A=!0,I(J)));return a};\nexports.unstable_shouldYield=M;exports.unstable_wrapCallback=function(a){var b=y;return function(){var c=y;y=b;try{return a.apply(this,arguments)}finally{y=c}}};\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n  module.exports = require('./cjs/scheduler.production.min.js');\n} else {\n  module.exports = require('./cjs/scheduler.development.js');\n}\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.SizeSensorId = exports.SensorTabIndex = exports.SensorClassName = void 0;\n/**\n * Created by hustcc on 18/6/9.\n * Contract: i@hust.cc\n */\n\nvar SizeSensorId = 'size-sensor-id';\nexports.SizeSensorId = SizeSensorId;\nvar SensorClassName = 'size-sensor-object';\nexports.SensorClassName = SensorClassName;\nvar SensorTabIndex = '-1';\nexports.SensorTabIndex = SensorTabIndex;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports[\"default\"] = void 0;\n/**\n * Created by hustcc on 18/6/9.\n * Contract: i@hust.cc\n */\nvar _default = function _default(fn) {\n  var delay = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 60;\n  var timer = null;\n  return function () {\n    var _this = this;\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n    clearTimeout(timer);\n    timer = setTimeout(function () {\n      fn.apply(_this, args);\n    }, delay);\n  };\n};\nexports[\"default\"] = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports[\"default\"] = void 0;\n/**\n * Created by hustcc on 18/6/9.\n * Contract: i@hust.cc\n */\n\nvar id = 1;\n\n/**\n * generate unique id in application\n * @return {string}\n */\nvar _default = function _default() {\n  return \"\".concat(id++);\n};\nexports[\"default\"] = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.ver = exports.clear = exports.bind = void 0;\nvar _sensorPool = require(\"./sensorPool\");\n/**\n * Created by hustcc on 18/6/9.[高考时间]\n * Contract: i@hust.cc\n */\n\n/**\n * bind an element with resize callback function\n * @param {*} element\n * @param {*} cb\n */\nvar bind = function bind(element, cb) {\n  var sensor = (0, _sensorPool.getSensor)(element);\n\n  // listen with callback\n  sensor.bind(cb);\n\n  // return unbind function\n  return function () {\n    sensor.unbind(cb);\n  };\n};\n\n/**\n * clear all the listener and sensor of an element\n * @param element\n */\nexports.bind = bind;\nvar clear = function clear(element) {\n  var sensor = (0, _sensorPool.getSensor)(element);\n  (0, _sensorPool.removeSensor)(sensor);\n};\nexports.clear = clear;\nvar ver = \"1.0.2\";\nexports.ver = ver;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.removeSensor = exports.getSensor = exports.Sensors = void 0;\nvar _id = _interopRequireDefault(require(\"./id\"));\nvar _sensors = require(\"./sensors\");\nvar _constant = require(\"./constant\");\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n/**\n * Created by hustcc on 18/6/9.\n * Contract: i@hust.cc\n */\n\n/**\n * all the sensor objects.\n * sensor pool\n */\nvar Sensors = {};\n\n/**\n * When destroy the sensor, remove it from the pool\n */\nexports.Sensors = Sensors;\nfunction clean(sensorId) {\n  // exist, then remove from pool\n  if (sensorId && Sensors[sensorId]) {\n    delete Sensors[sensorId];\n  }\n}\n\n/**\n * get one sensor\n * @param element\n * @returns {*}\n */\nvar getSensor = function getSensor(element) {\n  var sensorId = element.getAttribute(_constant.SizeSensorId);\n\n  // 1. if the sensor exists, then use it\n  if (sensorId && Sensors[sensorId]) {\n    return Sensors[sensorId];\n  }\n\n  // 2. not exist, then create one\n  var newId = (0, _id[\"default\"])();\n  element.setAttribute(_constant.SizeSensorId, newId);\n  var sensor = (0, _sensors.createSensor)(element, function () {\n    return clean(newId);\n  });\n  // add sensor into pool\n  Sensors[newId] = sensor;\n  return sensor;\n};\n\n/**\n * 移除 sensor\n * @param sensor\n */\nexports.getSensor = getSensor;\nvar removeSensor = function removeSensor(sensor) {\n  var sensorId = sensor.element.getAttribute(_constant.SizeSensorId);\n  // remove event, dom of the sensor used\n  sensor.destroy();\n  clean(sensorId);\n};\nexports.removeSensor = removeSensor;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.createSensor = void 0;\nvar _object = require(\"./object\");\nvar _resizeObserver = require(\"./resizeObserver\");\n/**\n * Created by hustcc on 18/7/5.\n * Contract: i@hust.cc\n */\n\n/**\n * sensor strategies\n */\n// export const createSensor = createObjectSensor;\nvar createSensor = typeof ResizeObserver !== 'undefined' ? _resizeObserver.createSensor : _object.createSensor;\nexports.createSensor = createSensor;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.createSensor = void 0;\nvar _debounce = _interopRequireDefault(require(\"../debounce\"));\nvar _constant = require(\"../constant\");\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n/**\n * Created by hustcc on 18/6/9.\n * Contract: i@hust.cc\n */\n\nvar createSensor = function createSensor(element, whenDestroy) {\n  var sensor = undefined;\n  // callback\n  var listeners = [];\n\n  /**\n   * create object DOM of sensor\n   * @returns {HTMLObjectElement}\n   */\n  var newSensor = function newSensor() {\n    // adjust style\n    if (getComputedStyle(element).position === 'static') {\n      element.style.position = 'relative';\n    }\n    var obj = document.createElement('object');\n    obj.onload = function () {\n      obj.contentDocument.defaultView.addEventListener('resize', resizeListener);\n      // 直接触发一次 resize\n      resizeListener();\n    };\n    obj.style.display = 'block';\n    obj.style.position = 'absolute';\n    obj.style.top = '0';\n    obj.style.left = '0';\n    obj.style.height = '100%';\n    obj.style.width = '100%';\n    obj.style.overflow = 'hidden';\n    obj.style.pointerEvents = 'none';\n    obj.style.zIndex = '-1';\n    obj.style.opacity = '0';\n    obj.setAttribute('class', _constant.SensorClassName);\n    obj.setAttribute('tabindex', _constant.SensorTabIndex);\n    obj.type = 'text/html';\n\n    // append into dom\n    element.appendChild(obj);\n    // for ie, should set data attribute delay, or will be white screen\n    obj.data = 'about:blank';\n    return obj;\n  };\n\n  /**\n   * trigger listeners\n   */\n  var resizeListener = (0, _debounce[\"default\"])(function () {\n    // trigger all listener\n    listeners.forEach(function (listener) {\n      listener(element);\n    });\n  });\n\n  /**\n   * listen with one callback function\n   * @param cb\n   */\n  var bind = function bind(cb) {\n    // if not exist sensor, then create one\n    if (!sensor) {\n      sensor = newSensor();\n    }\n    if (listeners.indexOf(cb) === -1) {\n      listeners.push(cb);\n    }\n  };\n\n  /**\n   * destroy all\n   */\n  var destroy = function destroy() {\n    if (sensor && sensor.parentNode) {\n      if (sensor.contentDocument) {\n        // remote event\n        sensor.contentDocument.defaultView.removeEventListener('resize', resizeListener);\n      }\n      // remove dom\n      sensor.parentNode.removeChild(sensor);\n      // initial variable\n      element.removeAttribute(_constant.SizeSensorId);\n      sensor = undefined;\n      listeners = [];\n      whenDestroy && whenDestroy();\n    }\n  };\n\n  /**\n   * cancel listener bind\n   * @param cb\n   */\n  var unbind = function unbind(cb) {\n    var idx = listeners.indexOf(cb);\n    if (idx !== -1) {\n      listeners.splice(idx, 1);\n    }\n\n    // no listener, and sensor is exist\n    // then destroy the sensor\n    if (listeners.length === 0 && sensor) {\n      destroy();\n    }\n  };\n  return {\n    element: element,\n    bind: bind,\n    destroy: destroy,\n    unbind: unbind\n  };\n};\nexports.createSensor = createSensor;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.createSensor = void 0;\nvar _constant = require(\"../constant\");\nvar _debounce = _interopRequireDefault(require(\"../debounce\"));\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n/**\n * Created by hustcc on 18/7/5.\n * Contract: i@hust.cc\n */\n\nvar createSensor = function createSensor(element, whenDestroy) {\n  var sensor = undefined;\n  // callback\n  var listeners = [];\n\n  /**\n   * trigger listeners\n   */\n  var resizeListener = (0, _debounce[\"default\"])(function () {\n    // trigger all\n    listeners.forEach(function (listener) {\n      listener(element);\n    });\n  });\n\n  /**\n   * create ResizeObserver sensor\n   * @returns\n   */\n  var newSensor = function newSensor() {\n    var s = new ResizeObserver(resizeListener);\n    // listen element\n    s.observe(element);\n\n    // trigger once\n    resizeListener();\n    return s;\n  };\n\n  /**\n   * listen with callback\n   * @param cb\n   */\n  var bind = function bind(cb) {\n    if (!sensor) {\n      sensor = newSensor();\n    }\n    if (listeners.indexOf(cb) === -1) {\n      listeners.push(cb);\n    }\n  };\n\n  /**\n   * destroy\n   */\n  var destroy = function destroy() {\n    sensor.disconnect();\n    listeners = [];\n    sensor = undefined;\n    element.removeAttribute(_constant.SizeSensorId);\n    whenDestroy && whenDestroy();\n  };\n\n  /**\n   * cancel bind\n   * @param cb\n   */\n  var unbind = function unbind(cb) {\n    var idx = listeners.indexOf(cb);\n    if (idx !== -1) {\n      listeners.splice(idx, 1);\n    }\n\n    // no listener, and sensor is exist\n    // then destroy the sensor\n    if (listeners.length === 0 && sensor) {\n      destroy();\n    }\n  };\n  return {\n    element: element,\n    bind: bind,\n    destroy: destroy,\n    unbind: unbind\n  };\n};\nexports.createSensor = createSensor;","'use strict';\n\nmodule.exports = (string, separator) => {\n\tif (!(typeof string === 'string' && typeof separator === 'string')) {\n\t\tthrow new TypeError('Expected the arguments to be of type `string`');\n\t}\n\n\tif (separator === '') {\n\t\treturn [string];\n\t}\n\n\tconst separatorIndex = string.indexOf(separator);\n\n\tif (separatorIndex === -1) {\n\t\treturn [string];\n\t}\n\n\treturn [\n\t\tstring.slice(0, separatorIndex),\n\t\tstring.slice(separatorIndex + separator.length)\n\t];\n};\n","'use strict';\nmodule.exports = str => encodeURIComponent(str).replace(/[!'()*]/g, x => `%${x.charCodeAt(0).toString(16).toUpperCase()}`);\n","const hexRegex = /^[-+]?0x[a-fA-F0-9]+$/;\nconst numRegex = /^([\\-\\+])?(0*)(\\.[0-9]+([eE]\\-?[0-9]+)?|[0-9]+(\\.[0-9]+([eE]\\-?[0-9]+)?)?)$/;\n// const octRegex = /0x[a-z0-9]+/;\n// const binRegex = /0x[a-z0-9]+/;\n\n\n//polyfill\nif (!Number.parseInt && window.parseInt) {\n    Number.parseInt = window.parseInt;\n}\nif (!Number.parseFloat && window.parseFloat) {\n    Number.parseFloat = window.parseFloat;\n}\n\n  \nconst consider = {\n    hex :  true,\n    leadingZeros: true,\n    decimalPoint: \"\\.\",\n    eNotation: true\n    //skipLike: /regex/\n};\n\nfunction toNumber(str, options = {}){\n    // const options = Object.assign({}, consider);\n    // if(opt.leadingZeros === false){\n    //     options.leadingZeros = false;\n    // }else if(opt.hex === false){\n    //     options.hex = false;\n    // }\n\n    options = Object.assign({}, consider, options );\n    if(!str || typeof str !== \"string\" ) return str;\n    \n    let trimmedStr  = str.trim();\n    // if(trimmedStr === \"0.0\") return 0;\n    // else if(trimmedStr === \"+0.0\") return 0;\n    // else if(trimmedStr === \"-0.0\") return -0;\n\n    if(options.skipLike !== undefined && options.skipLike.test(trimmedStr)) return str;\n    else if (options.hex && hexRegex.test(trimmedStr)) {\n        return Number.parseInt(trimmedStr, 16);\n    // } else if (options.parseOct && octRegex.test(str)) {\n    //     return Number.parseInt(val, 8);\n    // }else if (options.parseBin && binRegex.test(str)) {\n    //     return Number.parseInt(val, 2);\n    }else{\n        //separate negative sign, leading zeros, and rest number\n        const match = numRegex.exec(trimmedStr);\n        if(match){\n            const sign = match[1];\n            const leadingZeros = match[2];\n            let numTrimmedByZeros = trimZeros(match[3]); //complete num without leading zeros\n            //trim ending zeros for floating number\n            \n            const eNotation = match[4] || match[6];\n            if(!options.leadingZeros && leadingZeros.length > 0 && sign && trimmedStr[2] !== \".\") return str; //-0123\n            else if(!options.leadingZeros && leadingZeros.length > 0 && !sign && trimmedStr[1] !== \".\") return str; //0123\n            else{//no leading zeros or leading zeros are allowed\n                const num = Number(trimmedStr);\n                const numStr = \"\" + num;\n                if(numStr.search(/[eE]/) !== -1){ //given number is long and parsed to eNotation\n                    if(options.eNotation) return num;\n                    else return str;\n                }else if(eNotation){ //given number has enotation\n                    if(options.eNotation) return num;\n                    else return str;\n                }else if(trimmedStr.indexOf(\".\") !== -1){ //floating number\n                    // const decimalPart = match[5].substr(1);\n                    // const intPart = trimmedStr.substr(0,trimmedStr.indexOf(\".\"));\n\n                    \n                    // const p = numStr.indexOf(\".\");\n                    // const givenIntPart = numStr.substr(0,p);\n                    // const givenDecPart = numStr.substr(p+1);\n                    if(numStr === \"0\" && (numTrimmedByZeros === \"\") ) return num; //0.0\n                    else if(numStr === numTrimmedByZeros) return num; //0.456. 0.79000\n                    else if( sign && numStr === \"-\"+numTrimmedByZeros) return num;\n                    else return str;\n                }\n                \n                if(leadingZeros){\n                    // if(numTrimmedByZeros === numStr){\n                    //     if(options.leadingZeros) return num;\n                    //     else return str;\n                    // }else return str;\n                    if(numTrimmedByZeros === numStr) return num;\n                    else if(sign+numTrimmedByZeros === numStr) return num;\n                    else return str;\n                }\n\n                if(trimmedStr === numStr) return num;\n                else if(trimmedStr === sign+numStr) return num;\n                // else{\n                //     //number with +/- sign\n                //     trimmedStr.test(/[-+][0-9]);\n\n                // }\n                return str;\n            }\n            // else if(!eNotation && trimmedStr && trimmedStr !== Number(trimmedStr) ) return str;\n            \n        }else{ //non-numeric string\n            return str;\n        }\n    }\n}\n\n/**\n * \n * @param {string} numStr without leading zeros\n * @returns \n */\nfunction trimZeros(numStr){\n    if(numStr && numStr.indexOf(\".\") !== -1){//float\n        numStr = numStr.replace(/0+$/, \"\"); //remove ending zeros\n        if(numStr === \".\")  numStr = \"0\";\n        else if(numStr[0] === \".\")  numStr = \"0\"+numStr;\n        else if(numStr[numStr.length-1] === \".\")  numStr = numStr.substr(0,numStr.length-1);\n        return numStr;\n    }\n    return numStr;\n}\nmodule.exports = toNumber\n","import api from \"!../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n            import content from \"!!../css-loader/dist/cjs.js!./normalize.css\";\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\nif (module.hot) {\n  if (!content.locals || module.hot.invalidate) {\n    var isEqualLocals = function isEqualLocals(a, b, isNamedExport) {\n  if (!a && b || a && !b) {\n    return false;\n  }\n\n  var p;\n\n  for (p in a) {\n    if (isNamedExport && p === 'default') {\n      // eslint-disable-next-line no-continue\n      continue;\n    }\n\n    if (a[p] !== b[p]) {\n      return false;\n    }\n  }\n\n  for (p in b) {\n    if (isNamedExport && p === 'default') {\n      // eslint-disable-next-line no-continue\n      continue;\n    }\n\n    if (!a[p]) {\n      return false;\n    }\n  }\n\n  return true;\n};\n    var oldLocals = content.locals;\n\n    module.hot.accept(\n      \"!!../css-loader/dist/cjs.js!./normalize.css\",\n      function () {\n        if (!isEqualLocals(oldLocals, content.locals, undefined)) {\n                module.hot.invalidate();\n\n                return;\n              }\n\n              oldLocals = content.locals;\n\n              update(content);\n      }\n    )\n  }\n\n  module.hot.dispose(function() {\n    update();\n  });\n}\n\nexport default content.locals || {};","\"use strict\";\n\nvar isOldIE = function isOldIE() {\n  var memo;\n  return function memorize() {\n    if (typeof memo === 'undefined') {\n      // Test for IE <= 9 as proposed by Browserhacks\n      // @see http://browserhacks.com/#hack-e71d8692f65334173fee715c222cb805\n      // Tests for existence of standard globals is to allow style-loader\n      // to operate correctly into non-standard environments\n      // @see https://github.com/webpack-contrib/style-loader/issues/177\n      memo = Boolean(window && document && document.all && !window.atob);\n    }\n\n    return memo;\n  };\n}();\n\nvar getTarget = function getTarget() {\n  var memo = {};\n  return function memorize(target) {\n    if (typeof memo[target] === 'undefined') {\n      var styleTarget = document.querySelector(target); // Special case to return head of iframe instead of iframe itself\n\n      if (window.HTMLIFrameElement && styleTarget instanceof window.HTMLIFrameElement) {\n        try {\n          // This will throw an exception if access to iframe is blocked\n          // due to cross-origin restrictions\n          styleTarget = styleTarget.contentDocument.head;\n        } catch (e) {\n          // istanbul ignore next\n          styleTarget = null;\n        }\n      }\n\n      memo[target] = styleTarget;\n    }\n\n    return memo[target];\n  };\n}();\n\nvar stylesInDom = [];\n\nfunction getIndexByIdentifier(identifier) {\n  var result = -1;\n\n  for (var i = 0; i < stylesInDom.length; i++) {\n    if (stylesInDom[i].identifier === identifier) {\n      result = i;\n      break;\n    }\n  }\n\n  return result;\n}\n\nfunction modulesToDom(list, options) {\n  var idCountMap = {};\n  var identifiers = [];\n\n  for (var i = 0; i < list.length; i++) {\n    var item = list[i];\n    var id = options.base ? item[0] + options.base : item[0];\n    var count = idCountMap[id] || 0;\n    var identifier = \"\".concat(id, \" \").concat(count);\n    idCountMap[id] = count + 1;\n    var index = getIndexByIdentifier(identifier);\n    var obj = {\n      css: item[1],\n      media: item[2],\n      sourceMap: item[3]\n    };\n\n    if (index !== -1) {\n      stylesInDom[index].references++;\n      stylesInDom[index].updater(obj);\n    } else {\n      stylesInDom.push({\n        identifier: identifier,\n        updater: addStyle(obj, options),\n        references: 1\n      });\n    }\n\n    identifiers.push(identifier);\n  }\n\n  return identifiers;\n}\n\nfunction insertStyleElement(options) {\n  var style = document.createElement('style');\n  var attributes = options.attributes || {};\n\n  if (typeof attributes.nonce === 'undefined') {\n    var nonce = typeof __webpack_nonce__ !== 'undefined' ? __webpack_nonce__ : null;\n\n    if (nonce) {\n      attributes.nonce = nonce;\n    }\n  }\n\n  Object.keys(attributes).forEach(function (key) {\n    style.setAttribute(key, attributes[key]);\n  });\n\n  if (typeof options.insert === 'function') {\n    options.insert(style);\n  } else {\n    var target = getTarget(options.insert || 'head');\n\n    if (!target) {\n      throw new Error(\"Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.\");\n    }\n\n    target.appendChild(style);\n  }\n\n  return style;\n}\n\nfunction removeStyleElement(style) {\n  // istanbul ignore if\n  if (style.parentNode === null) {\n    return false;\n  }\n\n  style.parentNode.removeChild(style);\n}\n/* istanbul ignore next  */\n\n\nvar replaceText = function replaceText() {\n  var textStore = [];\n  return function replace(index, replacement) {\n    textStore[index] = replacement;\n    return textStore.filter(Boolean).join('\\n');\n  };\n}();\n\nfunction applyToSingletonTag(style, index, remove, obj) {\n  var css = remove ? '' : obj.media ? \"@media \".concat(obj.media, \" {\").concat(obj.css, \"}\") : obj.css; // For old IE\n\n  /* istanbul ignore if  */\n\n  if (style.styleSheet) {\n    style.styleSheet.cssText = replaceText(index, css);\n  } else {\n    var cssNode = document.createTextNode(css);\n    var childNodes = style.childNodes;\n\n    if (childNodes[index]) {\n      style.removeChild(childNodes[index]);\n    }\n\n    if (childNodes.length) {\n      style.insertBefore(cssNode, childNodes[index]);\n    } else {\n      style.appendChild(cssNode);\n    }\n  }\n}\n\nfunction applyToTag(style, options, obj) {\n  var css = obj.css;\n  var media = obj.media;\n  var sourceMap = obj.sourceMap;\n\n  if (media) {\n    style.setAttribute('media', media);\n  } else {\n    style.removeAttribute('media');\n  }\n\n  if (sourceMap && typeof btoa !== 'undefined') {\n    css += \"\\n/*# sourceMappingURL=data:application/json;base64,\".concat(btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))), \" */\");\n  } // For old IE\n\n  /* istanbul ignore if  */\n\n\n  if (style.styleSheet) {\n    style.styleSheet.cssText = css;\n  } else {\n    while (style.firstChild) {\n      style.removeChild(style.firstChild);\n    }\n\n    style.appendChild(document.createTextNode(css));\n  }\n}\n\nvar singleton = null;\nvar singletonCounter = 0;\n\nfunction addStyle(obj, options) {\n  var style;\n  var update;\n  var remove;\n\n  if (options.singleton) {\n    var styleIndex = singletonCounter++;\n    style = singleton || (singleton = insertStyleElement(options));\n    update = applyToSingletonTag.bind(null, style, styleIndex, false);\n    remove = applyToSingletonTag.bind(null, style, styleIndex, true);\n  } else {\n    style = insertStyleElement(options);\n    update = applyToTag.bind(null, style, options);\n\n    remove = function remove() {\n      removeStyleElement(style);\n    };\n  }\n\n  update(obj);\n  return function updateStyle(newObj) {\n    if (newObj) {\n      if (newObj.css === obj.css && newObj.media === obj.media && newObj.sourceMap === obj.sourceMap) {\n        return;\n      }\n\n      update(obj = newObj);\n    } else {\n      remove();\n    }\n  };\n}\n\nmodule.exports = function (list, options) {\n  options = options || {}; // Force single-tag solution on IE6-9, which has a hard limit on the # of <style>\n  // tags it will allow on a page\n\n  if (!options.singleton && typeof options.singleton !== 'boolean') {\n    options.singleton = isOldIE();\n  }\n\n  list = list || [];\n  var lastIdentifiers = modulesToDom(list, options);\n  return function update(newList) {\n    newList = newList || [];\n\n    if (Object.prototype.toString.call(newList) !== '[object Array]') {\n      return;\n    }\n\n    for (var i = 0; i < lastIdentifiers.length; i++) {\n      var identifier = lastIdentifiers[i];\n      var index = getIndexByIdentifier(identifier);\n      stylesInDom[index].references--;\n    }\n\n    var newLastIdentifiers = modulesToDom(newList, options);\n\n    for (var _i = 0; _i < lastIdentifiers.length; _i++) {\n      var _identifier = lastIdentifiers[_i];\n\n      var _index = getIndexByIdentifier(_identifier);\n\n      if (stylesInDom[_index].references === 0) {\n        stylesInDom[_index].updater();\n\n        stylesInDom.splice(_index, 1);\n      }\n    }\n\n    lastIdentifiers = newLastIdentifiers;\n  };\n};","// a tile is an array [x,y,z]\nvar d2r = Math.PI / 180,\n    r2d = 180 / Math.PI;\n\nfunction tileToBBOX (tile) {\n    var e = tile2lon(tile[0]+1,tile[2]);\n    var w = tile2lon(tile[0],tile[2]);\n    var s = tile2lat(tile[1]+1,tile[2]);\n    var n = tile2lat(tile[1],tile[2]);\n    return [w,s,e,n];\n}\n\nfunction tileToGeoJSON (tile) {\n    var bbox = tileToBBOX(tile);\n    var poly = {\n        type: 'Polygon',\n        coordinates:\n            [\n                [\n                    [bbox[0],bbox[1]],\n                    [bbox[0], bbox[3]],\n                    [bbox[2], bbox[3]],\n                    [bbox[2], bbox[1]],\n                    [bbox[0], bbox[1]]\n                ]\n            ]\n    };\n    return poly;\n}\n\nfunction tile2lon(x, z) {\n    return (x/Math.pow(2,z)*360-180);\n}\n\nfunction tile2lat(y, z) {\n    var n=Math.PI-2*Math.PI*y/Math.pow(2,z);\n    return (r2d*Math.atan(0.5*(Math.exp(n)-Math.exp(-n))));\n}\n\nfunction pointToTile(lon, lat, z) {\n    var tile = pointToTileFraction(lon, lat, z);\n    tile[0] = Math.floor(tile[0]);\n    tile[1] = Math.floor(tile[1]);\n    return tile;\n}\n\nfunction getChildren (tile) {\n    return [\n        [tile[0]*2, tile[1]*2, tile[2]+1],\n        [tile[0]*2+1, tile[1]*2, tile[2 ]+1],\n        [tile[0]*2+1, tile[1]*2+1, tile[2]+1],\n        [tile[0]*2, tile[1]*2+1, tile[2]+1],\n    ];\n}\n\nfunction getParent (tile) {\n    // top left\n    if(tile[0]%2===0 && tile[1]%2===0) {\n        return [tile[0]/2, tile[1]/2, tile[2]-1];\n    }\n    // bottom left\n    else if((tile[0]%2===0) && (!tile[1]%2===0)) {\n        return [tile[0]/2, (tile[1]-1)/2, tile[2]-1];\n    }\n    // top right\n    else if((!tile[0]%2===0) && (tile[1]%2===0)) {\n        return [(tile[0]-1)/2, (tile[1])/2, tile[2]-1];\n    }\n    // bottom right\n    else {\n        return [(tile[0]-1)/2, (tile[1]-1)/2, tile[2]-1];\n    }\n}\n\nfunction getSiblings (tile) {\n    return getChildren(getParent(tile));\n}\n\nfunction hasSiblings(tile, tiles) {\n    var siblings = getSiblings(tile);\n    for (var i = 0; i < siblings.length; i++) {\n        if (!hasTile(tiles, siblings[i])) return false;\n    }\n    return true;\n}\n\nfunction hasTile(tiles, tile) {\n    for (var i = 0; i < tiles.length; i++) {\n        if (tilesEqual(tiles[i], tile)) return true;\n    }\n    return false;\n}\n\nfunction tilesEqual(tile1, tile2) {\n    return (\n        tile1[0] === tile2[0] &&\n        tile1[1] === tile2[1] &&\n        tile1[2] === tile2[2]\n    );\n}\n\nfunction tileToQuadkey(tile) {\n  var index = '';\n  for (var z = tile[2]; z > 0; z--) {\n      var b = 0;\n      var mask = 1 << (z - 1);\n      if ((tile[0] & mask) !== 0) b++;\n      if ((tile[1] & mask) !== 0) b += 2;\n      index += b.toString();\n  }\n  return index;\n}\n\nfunction quadkeyToTile(quadkey) {\n    var x = 0;\n    var y = 0;\n    var z = quadkey.length;\n\n    for (var i = z; i > 0; i--) {\n        var mask = 1 << (i - 1);\n        switch (quadkey[z - i]) {\n            case '0':\n                break;\n\n            case '1':\n                x |= mask;\n                break;\n\n            case '2':\n                y |= mask;\n                break;\n\n            case '3':\n                x |= mask;\n                y |= mask;\n                break;\n        }\n    }\n    return [x,y,z];\n}\n\nfunction bboxToTile(bboxCoords) {\n    var min = pointToTile(bboxCoords[0], bboxCoords[1], 32);\n    var max = pointToTile(bboxCoords[2], bboxCoords[3], 32);\n    var bbox = [min[0], min[1], max[0], max[1]];\n\n    var z = getBboxZoom(bbox);\n    if (z === 0) return [0,0,0];\n    var x = bbox[0] >>> (32 - z);\n    var y = bbox[1] >>> (32 - z);\n    return [x,y,z];\n}\n\nfunction getBboxZoom(bbox) {\n    var MAX_ZOOM = 28;\n    for (var z = 0; z < MAX_ZOOM; z++) {\n        var mask = 1 << (32 - (z + 1));\n        if (((bbox[0] & mask) != (bbox[2] & mask)) ||\n            ((bbox[1] & mask) != (bbox[3] & mask))) {\n            return z;\n        }\n    }\n\n    return MAX_ZOOM;\n}\n\nfunction pointToTileFraction(lon, lat, z) {\n    var sin = Math.sin(lat * d2r),\n        z2 = Math.pow(2, z),\n        x = z2 * (lon / 360 + 0.5),\n        y = z2 * (0.5 - 0.25 * Math.log((1 + sin) / (1 - sin)) / Math.PI);\n    return [x, y, z];\n}\n\nmodule.exports = {\n    tileToGeoJSON: tileToGeoJSON,\n    tileToBBOX: tileToBBOX,\n    getChildren: getChildren,\n    getParent: getParent,\n    getSiblings: getSiblings,\n    hasTile: hasTile,\n    hasSiblings: hasSiblings,\n    tilesEqual: tilesEqual,\n    tileToQuadkey: tileToQuadkey,\n    quadkeyToTile: quadkeyToTile,\n    pointToTile: pointToTile,\n    bboxToTile: bboxToTile,\n    pointToTileFraction: pointToTileFraction\n};\n","!function(t,e){\"object\"==typeof exports&&\"undefined\"!=typeof module?e(exports):\"function\"==typeof define&&define.amd?define([\"exports\"],e):e(t.jsts={})}(this,function(t){\"use strict\";function e(){}function n(t){this.message=t||\"\"}function i(t){this.message=t||\"\"}function r(t){this.message=t||\"\"}function o(){}function s(t){return null===t?Mt:t.color}function a(t){return null===t?null:t.parent}function u(t,e){null!==t&&(t.color=e)}function l(t){return null===t?null:t.left}function c(t){return null===t?null:t.right}function p(){this.root_=null,this.size_=0}function h(){}function f(){this.array_=[],arguments[0]instanceof It&&this.addAll(arguments[0])}function g(){}function d(t){this.message=t||\"\"}function y(){this.array_=[]}\"fill\"in Array.prototype||Object.defineProperty(Array.prototype,\"fill\",{configurable:!0,value:function(t){if(void 0===this||null===this)throw new TypeError(this+\" is not an object\");var e=Object(this),n=Math.max(Math.min(e.length,9007199254740991),0)||0,i=1 in arguments?parseInt(Number(arguments[1]),10)||0:0;i=i<0?Math.max(n+i,0):Math.min(i,n);var r=2 in arguments&&void 0!==arguments[2]?parseInt(Number(arguments[2]),10)||0:n;for(r=r<0?Math.max(n+arguments[2],0):Math.min(r,n);i<r;)e[i]=t,++i;return e},writable:!0}),Number.isFinite=Number.isFinite||function(t){return\"number\"==typeof t&&isFinite(t)},Number.isInteger=Number.isInteger||function(t){return\"number\"==typeof t&&isFinite(t)&&Math.floor(t)===t},Number.parseFloat=Number.parseFloat||parseFloat,Number.isNaN=Number.isNaN||function(t){return t!=t},Math.trunc=Math.trunc||function(t){return t<0?Math.ceil(t):Math.floor(t)};var _=function(){};_.prototype.interfaces_=function(){return[]},_.prototype.getClass=function(){return _},_.prototype.equalsWithTolerance=function(t,e,n){return Math.abs(t-e)<=n};var m=function(t){function e(e){t.call(this,e),this.name=\"IllegalArgumentException\",this.message=e,this.stack=(new t).stack}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e}(Error),v=function(){},I={MAX_VALUE:{configurable:!0}};v.isNaN=function(t){return Number.isNaN(t)},v.doubleToLongBits=function(t){return t},v.longBitsToDouble=function(t){return t},v.isInfinite=function(t){return!Number.isFinite(t)},I.MAX_VALUE.get=function(){return Number.MAX_VALUE},Object.defineProperties(v,I);var E=function(){},x=function(){},N=function(){},C=function t(){if(this.x=null,this.y=null,this.z=null,0===arguments.length)this.x=0,this.y=0,this.z=t.NULL_ORDINATE;else if(1===arguments.length){var e=arguments[0];this.x=e.x,this.y=e.y,this.z=e.z}else 2===arguments.length?(this.x=arguments[0],this.y=arguments[1],this.z=t.NULL_ORDINATE):3===arguments.length&&(this.x=arguments[0],this.y=arguments[1],this.z=arguments[2])},S={DimensionalComparator:{configurable:!0},serialVersionUID:{configurable:!0},NULL_ORDINATE:{configurable:!0},X:{configurable:!0},Y:{configurable:!0},Z:{configurable:!0}};C.prototype.setOrdinate=function(t,e){switch(t){case C.X:this.x=e;break;case C.Y:this.y=e;break;case C.Z:this.z=e;break;default:throw new m(\"Invalid ordinate index: \"+t)}},C.prototype.equals2D=function(){if(1===arguments.length){var t=arguments[0];return this.x===t.x&&this.y===t.y}if(2===arguments.length){var e=arguments[0],n=arguments[1];return!!_.equalsWithTolerance(this.x,e.x,n)&&!!_.equalsWithTolerance(this.y,e.y,n)}},C.prototype.getOrdinate=function(t){switch(t){case C.X:return this.x;case C.Y:return this.y;case C.Z:return this.z}throw new m(\"Invalid ordinate index: \"+t)},C.prototype.equals3D=function(t){return this.x===t.x&&this.y===t.y&&(this.z===t.z||v.isNaN(this.z))&&v.isNaN(t.z)},C.prototype.equals=function(t){return t instanceof C&&this.equals2D(t)},C.prototype.equalInZ=function(t,e){return _.equalsWithTolerance(this.z,t.z,e)},C.prototype.compareTo=function(t){var e=t;return this.x<e.x?-1:this.x>e.x?1:this.y<e.y?-1:this.y>e.y?1:0},C.prototype.clone=function(){},C.prototype.copy=function(){return new C(this)},C.prototype.toString=function(){return\"(\"+this.x+\", \"+this.y+\", \"+this.z+\")\"},C.prototype.distance3D=function(t){var e=this.x-t.x,n=this.y-t.y,i=this.z-t.z;return Math.sqrt(e*e+n*n+i*i)},C.prototype.distance=function(t){var e=this.x-t.x,n=this.y-t.y;return Math.sqrt(e*e+n*n)},C.prototype.hashCode=function(){var t=17;return t=37*t+C.hashCode(this.x),t=37*t+C.hashCode(this.y)},C.prototype.setCoordinate=function(t){this.x=t.x,this.y=t.y,this.z=t.z},C.prototype.interfaces_=function(){return[E,x,e]},C.prototype.getClass=function(){return C},C.hashCode=function(){if(1===arguments.length){var t=arguments[0],e=v.doubleToLongBits(t);return Math.trunc((e^e)>>>32)}},S.DimensionalComparator.get=function(){return L},S.serialVersionUID.get=function(){return 0x5cbf2c235c7e5800},S.NULL_ORDINATE.get=function(){return v.NaN},S.X.get=function(){return 0},S.Y.get=function(){return 1},S.Z.get=function(){return 2},Object.defineProperties(C,S);var L=function(t){if(this._dimensionsToTest=2,0===arguments.length);else if(1===arguments.length){var e=arguments[0];if(2!==e&&3!==e)throw new m(\"only 2 or 3 dimensions may be specified\");this._dimensionsToTest=e}};L.prototype.compare=function(t,e){var n=t,i=e,r=L.compare(n.x,i.x);if(0!==r)return r;var o=L.compare(n.y,i.y);if(0!==o)return o;if(this._dimensionsToTest<=2)return 0;return L.compare(n.z,i.z)},L.prototype.interfaces_=function(){return[N]},L.prototype.getClass=function(){return L},L.compare=function(t,e){return t<e?-1:t>e?1:v.isNaN(t)?v.isNaN(e)?0:-1:v.isNaN(e)?1:0};var b=function(){};b.prototype.create=function(){},b.prototype.interfaces_=function(){return[]},b.prototype.getClass=function(){return b};var w=function(){},O={INTERIOR:{configurable:!0},BOUNDARY:{configurable:!0},EXTERIOR:{configurable:!0},NONE:{configurable:!0}};w.prototype.interfaces_=function(){return[]},w.prototype.getClass=function(){return w},w.toLocationSymbol=function(t){switch(t){case w.EXTERIOR:return\"e\";case w.BOUNDARY:return\"b\";case w.INTERIOR:return\"i\";case w.NONE:return\"-\"}throw new m(\"Unknown location value: \"+t)},O.INTERIOR.get=function(){return 0},O.BOUNDARY.get=function(){return 1},O.EXTERIOR.get=function(){return 2},O.NONE.get=function(){return-1},Object.defineProperties(w,O);var T=function(t,e){return t.interfaces_&&t.interfaces_().indexOf(e)>-1},R=function(){},P={LOG_10:{configurable:!0}};R.prototype.interfaces_=function(){return[]},R.prototype.getClass=function(){return R},R.log10=function(t){var e=Math.log(t);return v.isInfinite(e)?e:v.isNaN(e)?e:e/R.LOG_10},R.min=function(t,e,n,i){var r=t;return e<r&&(r=e),n<r&&(r=n),i<r&&(r=i),r},R.clamp=function(){if(\"number\"==typeof arguments[2]&&\"number\"==typeof arguments[0]&&\"number\"==typeof arguments[1]){var t=arguments[0],e=arguments[1],n=arguments[2];return t<e?e:t>n?n:t}if(Number.isInteger(arguments[2])&&Number.isInteger(arguments[0])&&Number.isInteger(arguments[1])){var i=arguments[0],r=arguments[1],o=arguments[2];return i<r?r:i>o?o:i}},R.wrap=function(t,e){return t<0?e- -t%e:t%e},R.max=function(){if(3===arguments.length){var t=arguments[0],e=arguments[1],n=arguments[2],i=t;return e>i&&(i=e),n>i&&(i=n),i}if(4===arguments.length){var r=arguments[0],o=arguments[1],s=arguments[2],a=arguments[3],u=r;return o>u&&(u=o),s>u&&(u=s),a>u&&(u=a),u}},R.average=function(t,e){return(t+e)/2},P.LOG_10.get=function(){return Math.log(10)},Object.defineProperties(R,P);var D=function(t){this.str=t};D.prototype.append=function(t){this.str+=t},D.prototype.setCharAt=function(t,e){this.str=this.str.substr(0,t)+e+this.str.substr(t+1)},D.prototype.toString=function(t){return this.str};var M=function(t){this.value=t};M.prototype.intValue=function(){return this.value},M.prototype.compareTo=function(t){return this.value<t?-1:this.value>t?1:0},M.isNaN=function(t){return Number.isNaN(t)};var A=function(){};A.isWhitespace=function(t){return t<=32&&t>=0||127===t},A.toUpperCase=function(t){return t.toUpperCase()};var F=function t(){if(this._hi=0,this._lo=0,0===arguments.length)this.init(0);else if(1===arguments.length){if(\"number\"==typeof arguments[0]){var e=arguments[0];this.init(e)}else if(arguments[0]instanceof t){var n=arguments[0];this.init(n)}else if(\"string\"==typeof arguments[0]){var i=arguments[0];t.call(this,t.parse(i))}}else if(2===arguments.length){var r=arguments[0],o=arguments[1];this.init(r,o)}},G={PI:{configurable:!0},TWO_PI:{configurable:!0},PI_2:{configurable:!0},E:{configurable:!0},NaN:{configurable:!0},EPS:{configurable:!0},SPLIT:{configurable:!0},MAX_PRINT_DIGITS:{configurable:!0},TEN:{configurable:!0},ONE:{configurable:!0},SCI_NOT_EXPONENT_CHAR:{configurable:!0},SCI_NOT_ZERO:{configurable:!0}};F.prototype.le=function(t){return(this._hi<t._hi||this._hi===t._hi)&&this._lo<=t._lo},F.prototype.extractSignificantDigits=function(t,e){var n=this.abs(),i=F.magnitude(n._hi),r=F.TEN.pow(i);(n=n.divide(r)).gt(F.TEN)?(n=n.divide(F.TEN),i+=1):n.lt(F.ONE)&&(n=n.multiply(F.TEN),i-=1);for(var o=i+1,s=new D,a=F.MAX_PRINT_DIGITS-1,u=0;u<=a;u++){t&&u===o&&s.append(\".\");var l=Math.trunc(n._hi);if(l<0)break;var c=!1,p=0;l>9?(c=!0,p=\"9\"):p=\"0\"+l,s.append(p),n=n.subtract(F.valueOf(l)).multiply(F.TEN),c&&n.selfAdd(F.TEN);var h=!0,f=F.magnitude(n._hi);if(f<0&&Math.abs(f)>=a-u&&(h=!1),!h)break}return e[0]=i,s.toString()},F.prototype.sqr=function(){return this.multiply(this)},F.prototype.doubleValue=function(){return this._hi+this._lo},F.prototype.subtract=function(){if(arguments[0]instanceof F){var t=arguments[0];return this.add(t.negate())}if(\"number\"==typeof arguments[0]){var e=arguments[0];return this.add(-e)}},F.prototype.equals=function(){if(1===arguments.length){var t=arguments[0];return this._hi===t._hi&&this._lo===t._lo}},F.prototype.isZero=function(){return 0===this._hi&&0===this._lo},F.prototype.selfSubtract=function(){if(arguments[0]instanceof F){var t=arguments[0];return this.isNaN()?this:this.selfAdd(-t._hi,-t._lo)}if(\"number\"==typeof arguments[0]){var e=arguments[0];return this.isNaN()?this:this.selfAdd(-e,0)}},F.prototype.getSpecialNumberString=function(){return this.isZero()?\"0.0\":this.isNaN()?\"NaN \":null},F.prototype.min=function(t){return this.le(t)?this:t},F.prototype.selfDivide=function(){if(1===arguments.length){if(arguments[0]instanceof F){var t=arguments[0];return this.selfDivide(t._hi,t._lo)}if(\"number\"==typeof arguments[0]){var e=arguments[0];return this.selfDivide(e,0)}}else if(2===arguments.length){var n=arguments[0],i=arguments[1],r=null,o=null,s=null,a=null,u=null,l=null,c=null,p=null;return u=this._hi/n,l=F.SPLIT*u,r=l-u,p=F.SPLIT*n,r=l-r,o=u-r,s=p-n,c=u*n,s=p-s,a=n-s,p=r*s-c+r*a+o*s+o*a,l=(this._hi-c-p+this._lo-u*i)/n,p=u+l,this._hi=p,this._lo=u-p+l,this}},F.prototype.dump=function(){return\"DD<\"+this._hi+\", \"+this._lo+\">\"},F.prototype.divide=function(){if(arguments[0]instanceof F){var t=arguments[0],e=null,n=null,i=null,r=null,o=null,s=null,a=null,u=null;n=(o=this._hi/t._hi)-(e=(s=F.SPLIT*o)-(e=s-o)),u=e*(i=(u=F.SPLIT*t._hi)-(i=u-t._hi))-(a=o*t._hi)+e*(r=t._hi-i)+n*i+n*r,s=(this._hi-a-u+this._lo-o*t._lo)/t._hi;return new F(u=o+s,o-u+s)}if(\"number\"==typeof arguments[0]){var l=arguments[0];return v.isNaN(l)?F.createNaN():F.copy(this).selfDivide(l,0)}},F.prototype.ge=function(t){return(this._hi>t._hi||this._hi===t._hi)&&this._lo>=t._lo},F.prototype.pow=function(t){if(0===t)return F.valueOf(1);var e=new F(this),n=F.valueOf(1),i=Math.abs(t);if(i>1)for(;i>0;)i%2==1&&n.selfMultiply(e),(i/=2)>0&&(e=e.sqr());else n=e;return t<0?n.reciprocal():n},F.prototype.ceil=function(){if(this.isNaN())return F.NaN;var t=Math.ceil(this._hi),e=0;return t===this._hi&&(e=Math.ceil(this._lo)),new F(t,e)},F.prototype.compareTo=function(t){var e=t;return this._hi<e._hi?-1:this._hi>e._hi?1:this._lo<e._lo?-1:this._lo>e._lo?1:0},F.prototype.rint=function(){if(this.isNaN())return this;return this.add(.5).floor()},F.prototype.setValue=function(){if(arguments[0]instanceof F){var t=arguments[0];return this.init(t),this}if(\"number\"==typeof arguments[0]){var e=arguments[0];return this.init(e),this}},F.prototype.max=function(t){return this.ge(t)?this:t},F.prototype.sqrt=function(){if(this.isZero())return F.valueOf(0);if(this.isNegative())return F.NaN;var t=1/Math.sqrt(this._hi),e=this._hi*t,n=F.valueOf(e),i=this.subtract(n.sqr())._hi*(.5*t);return n.add(i)},F.prototype.selfAdd=function(){if(1===arguments.length){if(arguments[0]instanceof F){var t=arguments[0];return this.selfAdd(t._hi,t._lo)}if(\"number\"==typeof arguments[0]){var e=arguments[0],n=null,i=null,r=null,o=null,s=null,a=null;return r=this._hi+e,s=r-this._hi,o=r-s,o=e-s+(this._hi-o),a=o+this._lo,n=r+a,i=a+(r-n),this._hi=n+i,this._lo=i+(n-this._hi),this}}else if(2===arguments.length){var u=arguments[0],l=arguments[1],c=null,p=null,h=null,f=null,g=null,d=null,y=null;f=this._hi+u,p=this._lo+l,g=f-(d=f-this._hi),h=p-(y=p-this._lo);var _=(c=f+(d=(g=u-d+(this._hi-g))+p))+(d=(h=l-y+(this._lo-h))+(d+(f-c))),m=d+(c-_);return this._hi=_,this._lo=m,this}},F.prototype.selfMultiply=function(){if(1===arguments.length){if(arguments[0]instanceof F){var t=arguments[0];return this.selfMultiply(t._hi,t._lo)}if(\"number\"==typeof arguments[0]){var e=arguments[0];return this.selfMultiply(e,0)}}else if(2===arguments.length){var n=arguments[0],i=arguments[1],r=null,o=null,s=null,a=null,u=null,l=null;r=(u=F.SPLIT*this._hi)-this._hi,l=F.SPLIT*n,r=u-r,o=this._hi-r,s=l-n;var c=(u=this._hi*n)+(l=r*(s=l-s)-u+r*(a=n-s)+o*s+o*a+(this._hi*i+this._lo*n)),p=l+(r=u-c);return this._hi=c,this._lo=p,this}},F.prototype.selfSqr=function(){return this.selfMultiply(this)},F.prototype.floor=function(){if(this.isNaN())return F.NaN;var t=Math.floor(this._hi),e=0;return t===this._hi&&(e=Math.floor(this._lo)),new F(t,e)},F.prototype.negate=function(){return this.isNaN()?this:new F(-this._hi,-this._lo)},F.prototype.clone=function(){},F.prototype.multiply=function(){if(arguments[0]instanceof F){var t=arguments[0];return t.isNaN()?F.createNaN():F.copy(this).selfMultiply(t)}if(\"number\"==typeof arguments[0]){var e=arguments[0];return v.isNaN(e)?F.createNaN():F.copy(this).selfMultiply(e,0)}},F.prototype.isNaN=function(){return v.isNaN(this._hi)},F.prototype.intValue=function(){return Math.trunc(this._hi)},F.prototype.toString=function(){var t=F.magnitude(this._hi);return t>=-3&&t<=20?this.toStandardNotation():this.toSciNotation()},F.prototype.toStandardNotation=function(){var t=this.getSpecialNumberString();if(null!==t)return t;var e=new Array(1).fill(null),n=this.extractSignificantDigits(!0,e),i=e[0]+1,r=n;if(\".\"===n.charAt(0))r=\"0\"+n;else if(i<0)r=\"0.\"+F.stringOfChar(\"0\",-i)+n;else if(-1===n.indexOf(\".\")){var o=i-n.length;r=n+F.stringOfChar(\"0\",o)+\".0\"}return this.isNegative()?\"-\"+r:r},F.prototype.reciprocal=function(){var t=null,e=null,n=null,i=null,r=null,o=null,s=null,a=null;e=(r=1/this._hi)-(t=(o=F.SPLIT*r)-(t=o-r)),n=(a=F.SPLIT*this._hi)-this._hi;var u=r+(o=(1-(s=r*this._hi)-(a=t*(n=a-n)-s+t*(i=this._hi-n)+e*n+e*i)-r*this._lo)/this._hi);return new F(u,r-u+o)},F.prototype.toSciNotation=function(){if(this.isZero())return F.SCI_NOT_ZERO;var t=this.getSpecialNumberString();if(null!==t)return t;var e=new Array(1).fill(null),n=this.extractSignificantDigits(!1,e),i=F.SCI_NOT_EXPONENT_CHAR+e[0];if(\"0\"===n.charAt(0))throw new Error(\"Found leading zero: \"+n);var r=\"\";n.length>1&&(r=n.substring(1));var o=n.charAt(0)+\".\"+r;return this.isNegative()?\"-\"+o+i:o+i},F.prototype.abs=function(){return this.isNaN()?F.NaN:this.isNegative()?this.negate():new F(this)},F.prototype.isPositive=function(){return(this._hi>0||0===this._hi)&&this._lo>0},F.prototype.lt=function(t){return(this._hi<t._hi||this._hi===t._hi)&&this._lo<t._lo},F.prototype.add=function(){if(arguments[0]instanceof F){var t=arguments[0];return F.copy(this).selfAdd(t)}if(\"number\"==typeof arguments[0]){var e=arguments[0];return F.copy(this).selfAdd(e)}},F.prototype.init=function(){if(1===arguments.length){if(\"number\"==typeof arguments[0]){var t=arguments[0];this._hi=t,this._lo=0}else if(arguments[0]instanceof F){var e=arguments[0];this._hi=e._hi,this._lo=e._lo}}else if(2===arguments.length){var n=arguments[0],i=arguments[1];this._hi=n,this._lo=i}},F.prototype.gt=function(t){return(this._hi>t._hi||this._hi===t._hi)&&this._lo>t._lo},F.prototype.isNegative=function(){return(this._hi<0||0===this._hi)&&this._lo<0},F.prototype.trunc=function(){return this.isNaN()?F.NaN:this.isPositive()?this.floor():this.ceil()},F.prototype.signum=function(){return this._hi>0?1:this._hi<0?-1:this._lo>0?1:this._lo<0?-1:0},F.prototype.interfaces_=function(){return[e,E,x]},F.prototype.getClass=function(){return F},F.sqr=function(t){return F.valueOf(t).selfMultiply(t)},F.valueOf=function(){if(\"string\"==typeof arguments[0]){var t=arguments[0];return F.parse(t)}if(\"number\"==typeof arguments[0]){var e=arguments[0];return new F(e)}},F.sqrt=function(t){return F.valueOf(t).sqrt()},F.parse=function(t){for(var e=0,n=t.length;A.isWhitespace(t.charAt(e));)e++;var i=!1;if(e<n){var r=t.charAt(e);\"-\"!==r&&\"+\"!==r||(e++,\"-\"===r&&(i=!0))}for(var o=new F,s=0,a=0,u=0;!(e>=n);){var l=t.charAt(e);if(e++,A.isDigit(l)){var c=l-\"0\";o.selfMultiply(F.TEN),o.selfAdd(c),s++}else{if(\".\"!==l){if(\"e\"===l||\"E\"===l){var p=t.substring(e);try{u=M.parseInt(p)}catch(e){throw e instanceof Error?new Error(\"Invalid exponent \"+p+\" in string \"+t):e}break}throw new Error(\"Unexpected character '\"+l+\"' at position \"+e+\" in string \"+t)}a=s}}var h=o,f=s-a-u;if(0===f)h=o;else if(f>0){var g=F.TEN.pow(f);h=o.divide(g)}else if(f<0){var d=F.TEN.pow(-f);h=o.multiply(d)}return i?h.negate():h},F.createNaN=function(){return new F(v.NaN,v.NaN)},F.copy=function(t){return new F(t)},F.magnitude=function(t){var e=Math.abs(t),n=Math.log(e)/Math.log(10),i=Math.trunc(Math.floor(n));return 10*Math.pow(10,i)<=e&&(i+=1),i},F.stringOfChar=function(t,e){for(var n=new D,i=0;i<e;i++)n.append(t);return n.toString()},G.PI.get=function(){return new F(3.141592653589793,1.2246467991473532e-16)},G.TWO_PI.get=function(){return new F(6.283185307179586,2.4492935982947064e-16)},G.PI_2.get=function(){return new F(1.5707963267948966,6.123233995736766e-17)},G.E.get=function(){return new F(2.718281828459045,1.4456468917292502e-16)},G.NaN.get=function(){return new F(v.NaN,v.NaN)},G.EPS.get=function(){return 1.23259516440783e-32},G.SPLIT.get=function(){return 134217729},G.MAX_PRINT_DIGITS.get=function(){return 32},G.TEN.get=function(){return F.valueOf(10)},G.ONE.get=function(){return F.valueOf(1)},G.SCI_NOT_EXPONENT_CHAR.get=function(){return\"E\"},G.SCI_NOT_ZERO.get=function(){return\"0.0E0\"},Object.defineProperties(F,G);var q=function(){},B={DP_SAFE_EPSILON:{configurable:!0}};q.prototype.interfaces_=function(){return[]},q.prototype.getClass=function(){return q},q.orientationIndex=function(t,e,n){var i=q.orientationIndexFilter(t,e,n);if(i<=1)return i;var r=F.valueOf(e.x).selfAdd(-t.x),o=F.valueOf(e.y).selfAdd(-t.y),s=F.valueOf(n.x).selfAdd(-e.x),a=F.valueOf(n.y).selfAdd(-e.y);return r.selfMultiply(a).selfSubtract(o.selfMultiply(s)).signum()},q.signOfDet2x2=function(t,e,n,i){return t.multiply(i).selfSubtract(e.multiply(n)).signum()},q.intersection=function(t,e,n,i){var r=F.valueOf(i.y).selfSubtract(n.y).selfMultiply(F.valueOf(e.x).selfSubtract(t.x)),o=F.valueOf(i.x).selfSubtract(n.x).selfMultiply(F.valueOf(e.y).selfSubtract(t.y)),s=r.subtract(o),a=F.valueOf(i.x).selfSubtract(n.x).selfMultiply(F.valueOf(t.y).selfSubtract(n.y)),u=F.valueOf(i.y).selfSubtract(n.y).selfMultiply(F.valueOf(t.x).selfSubtract(n.x)),l=a.subtract(u).selfDivide(s).doubleValue(),c=F.valueOf(t.x).selfAdd(F.valueOf(e.x).selfSubtract(t.x).selfMultiply(l)).doubleValue(),p=F.valueOf(e.x).selfSubtract(t.x).selfMultiply(F.valueOf(t.y).selfSubtract(n.y)),h=F.valueOf(e.y).selfSubtract(t.y).selfMultiply(F.valueOf(t.x).selfSubtract(n.x)),f=p.subtract(h).selfDivide(s).doubleValue(),g=F.valueOf(n.y).selfAdd(F.valueOf(i.y).selfSubtract(n.y).selfMultiply(f)).doubleValue();return new C(c,g)},q.orientationIndexFilter=function(t,e,n){var i=null,r=(t.x-n.x)*(e.y-n.y),o=(t.y-n.y)*(e.x-n.x),s=r-o;if(r>0){if(o<=0)return q.signum(s);i=r+o}else{if(!(r<0))return q.signum(s);if(o>=0)return q.signum(s);i=-r-o}var a=q.DP_SAFE_EPSILON*i;return s>=a||-s>=a?q.signum(s):2},q.signum=function(t){return t>0?1:t<0?-1:0},B.DP_SAFE_EPSILON.get=function(){return 1e-15},Object.defineProperties(q,B);var V=function(){},U={X:{configurable:!0},Y:{configurable:!0},Z:{configurable:!0},M:{configurable:!0}};U.X.get=function(){return 0},U.Y.get=function(){return 1},U.Z.get=function(){return 2},U.M.get=function(){return 3},V.prototype.setOrdinate=function(t,e,n){},V.prototype.size=function(){},V.prototype.getOrdinate=function(t,e){},V.prototype.getCoordinate=function(){},V.prototype.getCoordinateCopy=function(t){},V.prototype.getDimension=function(){},V.prototype.getX=function(t){},V.prototype.clone=function(){},V.prototype.expandEnvelope=function(t){},V.prototype.copy=function(){},V.prototype.getY=function(t){},V.prototype.toCoordinateArray=function(){},V.prototype.interfaces_=function(){return[x]},V.prototype.getClass=function(){return V},Object.defineProperties(V,U);var z=function(){},X=function(t){function e(){t.call(this,\"Projective point not representable on the Cartesian plane.\")}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.interfaces_=function(){return[]},e.prototype.getClass=function(){return e},e}(z),Y=function(){};Y.arraycopy=function(t,e,n,i,r){for(var o=0,s=e;s<e+r;s++)n[i+o]=t[s],o++},Y.getProperty=function(t){return{\"line.separator\":\"\\n\"}[t]};var k=function t(){if(this.x=null,this.y=null,this.w=null,0===arguments.length)this.x=0,this.y=0,this.w=1;else if(1===arguments.length){var e=arguments[0];this.x=e.x,this.y=e.y,this.w=1}else if(2===arguments.length){if(\"number\"==typeof arguments[0]&&\"number\"==typeof arguments[1]){var n=arguments[0],i=arguments[1];this.x=n,this.y=i,this.w=1}else if(arguments[0]instanceof t&&arguments[1]instanceof t){var r=arguments[0],o=arguments[1];this.x=r.y*o.w-o.y*r.w,this.y=o.x*r.w-r.x*o.w,this.w=r.x*o.y-o.x*r.y}else if(arguments[0]instanceof C&&arguments[1]instanceof C){var s=arguments[0],a=arguments[1];this.x=s.y-a.y,this.y=a.x-s.x,this.w=s.x*a.y-a.x*s.y}}else if(3===arguments.length){var u=arguments[0],l=arguments[1],c=arguments[2];this.x=u,this.y=l,this.w=c}else if(4===arguments.length){var p=arguments[0],h=arguments[1],f=arguments[2],g=arguments[3],d=p.y-h.y,y=h.x-p.x,_=p.x*h.y-h.x*p.y,m=f.y-g.y,v=g.x-f.x,I=f.x*g.y-g.x*f.y;this.x=y*I-v*_,this.y=m*_-d*I,this.w=d*v-m*y}};k.prototype.getY=function(){var t=this.y/this.w;if(v.isNaN(t)||v.isInfinite(t))throw new X;return t},k.prototype.getX=function(){var t=this.x/this.w;if(v.isNaN(t)||v.isInfinite(t))throw new X;return t},k.prototype.getCoordinate=function(){var t=new C;return t.x=this.getX(),t.y=this.getY(),t},k.prototype.interfaces_=function(){return[]},k.prototype.getClass=function(){return k},k.intersection=function(t,e,n,i){var r=t.y-e.y,o=e.x-t.x,s=t.x*e.y-e.x*t.y,a=n.y-i.y,u=i.x-n.x,l=n.x*i.y-i.x*n.y,c=r*u-a*o,p=(o*l-u*s)/c,h=(a*s-r*l)/c;if(v.isNaN(p)||v.isInfinite(p)||v.isNaN(h)||v.isInfinite(h))throw new X;return new C(p,h)};var j=function t(){if(this._minx=null,this._maxx=null,this._miny=null,this._maxy=null,0===arguments.length)this.init();else if(1===arguments.length){if(arguments[0]instanceof C){var e=arguments[0];this.init(e.x,e.x,e.y,e.y)}else if(arguments[0]instanceof t){var n=arguments[0];this.init(n)}}else if(2===arguments.length){var i=arguments[0],r=arguments[1];this.init(i.x,r.x,i.y,r.y)}else if(4===arguments.length){var o=arguments[0],s=arguments[1],a=arguments[2],u=arguments[3];this.init(o,s,a,u)}},H={serialVersionUID:{configurable:!0}};j.prototype.getArea=function(){return this.getWidth()*this.getHeight()},j.prototype.equals=function(t){if(!(t instanceof j))return!1;var e=t;return this.isNull()?e.isNull():this._maxx===e.getMaxX()&&this._maxy===e.getMaxY()&&this._minx===e.getMinX()&&this._miny===e.getMinY()},j.prototype.intersection=function(t){if(this.isNull()||t.isNull()||!this.intersects(t))return new j;var e=this._minx>t._minx?this._minx:t._minx,n=this._miny>t._miny?this._miny:t._miny,i=this._maxx<t._maxx?this._maxx:t._maxx,r=this._maxy<t._maxy?this._maxy:t._maxy;return new j(e,i,n,r)},j.prototype.isNull=function(){return this._maxx<this._minx},j.prototype.getMaxX=function(){return this._maxx},j.prototype.covers=function(){if(1===arguments.length){if(arguments[0]instanceof C){var t=arguments[0];return this.covers(t.x,t.y)}if(arguments[0]instanceof j){var e=arguments[0];return!this.isNull()&&!e.isNull()&&(e.getMinX()>=this._minx&&e.getMaxX()<=this._maxx&&e.getMinY()>=this._miny&&e.getMaxY()<=this._maxy)}}else if(2===arguments.length){var n=arguments[0],i=arguments[1];return!this.isNull()&&(n>=this._minx&&n<=this._maxx&&i>=this._miny&&i<=this._maxy)}},j.prototype.intersects=function(){if(1===arguments.length){if(arguments[0]instanceof j){var t=arguments[0];return!this.isNull()&&!t.isNull()&&!(t._minx>this._maxx||t._maxx<this._minx||t._miny>this._maxy||t._maxy<this._miny)}if(arguments[0]instanceof C){var e=arguments[0];return this.intersects(e.x,e.y)}}else if(2===arguments.length){var n=arguments[0],i=arguments[1];return!this.isNull()&&!(n>this._maxx||n<this._minx||i>this._maxy||i<this._miny)}},j.prototype.getMinY=function(){return this._miny},j.prototype.getMinX=function(){return this._minx},j.prototype.expandToInclude=function(){if(1===arguments.length){if(arguments[0]instanceof C){var t=arguments[0];this.expandToInclude(t.x,t.y)}else if(arguments[0]instanceof j){var e=arguments[0];if(e.isNull())return null;this.isNull()?(this._minx=e.getMinX(),this._maxx=e.getMaxX(),this._miny=e.getMinY(),this._maxy=e.getMaxY()):(e._minx<this._minx&&(this._minx=e._minx),e._maxx>this._maxx&&(this._maxx=e._maxx),e._miny<this._miny&&(this._miny=e._miny),e._maxy>this._maxy&&(this._maxy=e._maxy))}}else if(2===arguments.length){var n=arguments[0],i=arguments[1];this.isNull()?(this._minx=n,this._maxx=n,this._miny=i,this._maxy=i):(n<this._minx&&(this._minx=n),n>this._maxx&&(this._maxx=n),i<this._miny&&(this._miny=i),i>this._maxy&&(this._maxy=i))}},j.prototype.minExtent=function(){if(this.isNull())return 0;var t=this.getWidth(),e=this.getHeight();return t<e?t:e},j.prototype.getWidth=function(){return this.isNull()?0:this._maxx-this._minx},j.prototype.compareTo=function(t){var e=t;return this.isNull()?e.isNull()?0:-1:e.isNull()?1:this._minx<e._minx?-1:this._minx>e._minx?1:this._miny<e._miny?-1:this._miny>e._miny?1:this._maxx<e._maxx?-1:this._maxx>e._maxx?1:this._maxy<e._maxy?-1:this._maxy>e._maxy?1:0},j.prototype.translate=function(t,e){if(this.isNull())return null;this.init(this.getMinX()+t,this.getMaxX()+t,this.getMinY()+e,this.getMaxY()+e)},j.prototype.toString=function(){return\"Env[\"+this._minx+\" : \"+this._maxx+\", \"+this._miny+\" : \"+this._maxy+\"]\"},j.prototype.setToNull=function(){this._minx=0,this._maxx=-1,this._miny=0,this._maxy=-1},j.prototype.getHeight=function(){return this.isNull()?0:this._maxy-this._miny},j.prototype.maxExtent=function(){if(this.isNull())return 0;var t=this.getWidth(),e=this.getHeight();return t>e?t:e},j.prototype.expandBy=function(){if(1===arguments.length){var t=arguments[0];this.expandBy(t,t)}else if(2===arguments.length){var e=arguments[0],n=arguments[1];if(this.isNull())return null;this._minx-=e,this._maxx+=e,this._miny-=n,this._maxy+=n,(this._minx>this._maxx||this._miny>this._maxy)&&this.setToNull()}},j.prototype.contains=function(){if(1===arguments.length){if(arguments[0]instanceof j){var t=arguments[0];return this.covers(t)}if(arguments[0]instanceof C){var e=arguments[0];return this.covers(e)}}else if(2===arguments.length){var n=arguments[0],i=arguments[1];return this.covers(n,i)}},j.prototype.centre=function(){return this.isNull()?null:new C((this.getMinX()+this.getMaxX())/2,(this.getMinY()+this.getMaxY())/2)},j.prototype.init=function(){if(0===arguments.length)this.setToNull();else if(1===arguments.length){if(arguments[0]instanceof C){var t=arguments[0];this.init(t.x,t.x,t.y,t.y)}else if(arguments[0]instanceof j){var e=arguments[0];this._minx=e._minx,this._maxx=e._maxx,this._miny=e._miny,this._maxy=e._maxy}}else if(2===arguments.length){var n=arguments[0],i=arguments[1];this.init(n.x,i.x,n.y,i.y)}else if(4===arguments.length){var r=arguments[0],o=arguments[1],s=arguments[2],a=arguments[3];r<o?(this._minx=r,this._maxx=o):(this._minx=o,this._maxx=r),s<a?(this._miny=s,this._maxy=a):(this._miny=a,this._maxy=s)}},j.prototype.getMaxY=function(){return this._maxy},j.prototype.distance=function(t){if(this.intersects(t))return 0;var e=0;this._maxx<t._minx?e=t._minx-this._maxx:this._minx>t._maxx&&(e=this._minx-t._maxx);var n=0;return this._maxy<t._miny?n=t._miny-this._maxy:this._miny>t._maxy&&(n=this._miny-t._maxy),0===e?n:0===n?e:Math.sqrt(e*e+n*n)},j.prototype.hashCode=function(){var t=17;return t=37*t+C.hashCode(this._minx),t=37*t+C.hashCode(this._maxx),t=37*t+C.hashCode(this._miny),t=37*t+C.hashCode(this._maxy)},j.prototype.interfaces_=function(){return[E,e]},j.prototype.getClass=function(){return j},j.intersects=function(){if(3===arguments.length){var t=arguments[0],e=arguments[1],n=arguments[2];return n.x>=(t.x<e.x?t.x:e.x)&&n.x<=(t.x>e.x?t.x:e.x)&&n.y>=(t.y<e.y?t.y:e.y)&&n.y<=(t.y>e.y?t.y:e.y)}if(4===arguments.length){var i=arguments[0],r=arguments[1],o=arguments[2],s=arguments[3],a=Math.min(o.x,s.x),u=Math.max(o.x,s.x),l=Math.min(i.x,r.x),c=Math.max(i.x,r.x);return!(l>u)&&(!(c<a)&&(a=Math.min(o.y,s.y),u=Math.max(o.y,s.y),l=Math.min(i.y,r.y),c=Math.max(i.y,r.y),!(l>u)&&!(c<a)))}},H.serialVersionUID.get=function(){return 0x51845cd552189800},Object.defineProperties(j,H);var W={typeStr:/^\\s*(\\w+)\\s*\\(\\s*(.*)\\s*\\)\\s*$/,emptyTypeStr:/^\\s*(\\w+)\\s*EMPTY\\s*$/,spaces:/\\s+/,parenComma:/\\)\\s*,\\s*\\(/,doubleParenComma:/\\)\\s*\\)\\s*,\\s*\\(\\s*\\(/,trimParens:/^\\s*\\(?(.*?)\\)?\\s*$/},K=function(t){this.geometryFactory=t||new _e};K.prototype.read=function(t){var e,n,i;t=t.replace(/[\\n\\r]/g,\" \");var r=W.typeStr.exec(t);if(-1!==t.search(\"EMPTY\")&&((r=W.emptyTypeStr.exec(t))[2]=void 0),r&&(n=r[1].toLowerCase(),i=r[2],Q[n]&&(e=Q[n].apply(this,[i]))),void 0===e)throw new Error(\"Could not parse WKT \"+t);return e},K.prototype.write=function(t){return this.extractGeometry(t)},K.prototype.extractGeometry=function(t){var e=t.getGeometryType().toLowerCase();if(!J[e])return null;var n=e.toUpperCase();return t.isEmpty()?n+\" EMPTY\":n+\"(\"+J[e].apply(this,[t])+\")\"};var J={coordinate:function(t){return t.x+\" \"+t.y},point:function(t){return J.coordinate.call(this,t._coordinates._coordinates[0])},multipoint:function(t){for(var e=[],n=0,i=t._geometries.length;n<i;++n)e.push(\"(\"+J.point.apply(this,[t._geometries[n]])+\")\");return e.join(\",\")},linestring:function(t){for(var e=[],n=0,i=t._points._coordinates.length;n<i;++n)e.push(J.coordinate.apply(this,[t._points._coordinates[n]]));return e.join(\",\")},linearring:function(t){for(var e=[],n=0,i=t._points._coordinates.length;n<i;++n)e.push(J.coordinate.apply(this,[t._points._coordinates[n]]));return e.join(\",\")},multilinestring:function(t){for(var e=[],n=0,i=t._geometries.length;n<i;++n)e.push(\"(\"+J.linestring.apply(this,[t._geometries[n]])+\")\");return e.join(\",\")},polygon:function(t){var e=[];e.push(\"(\"+J.linestring.apply(this,[t._shell])+\")\");for(var n=0,i=t._holes.length;n<i;++n)e.push(\"(\"+J.linestring.apply(this,[t._holes[n]])+\")\");return e.join(\",\")},multipolygon:function(t){for(var e=[],n=0,i=t._geometries.length;n<i;++n)e.push(\"(\"+J.polygon.apply(this,[t._geometries[n]])+\")\");return e.join(\",\")},geometrycollection:function(t){for(var e=[],n=0,i=t._geometries.length;n<i;++n)e.push(this.extractGeometry(t._geometries[n]));return e.join(\",\")}},Q={point:function(t){if(void 0===t)return this.geometryFactory.createPoint();var e=t.trim().split(W.spaces);return this.geometryFactory.createPoint(new C(Number.parseFloat(e[0]),Number.parseFloat(e[1])))},multipoint:function(t){if(void 0===t)return this.geometryFactory.createMultiPoint();for(var e,n=t.trim().split(\",\"),i=[],r=0,o=n.length;r<o;++r)e=n[r].replace(W.trimParens,\"$1\"),i.push(Q.point.apply(this,[e]));return this.geometryFactory.createMultiPoint(i)},linestring:function(t){if(void 0===t)return this.geometryFactory.createLineString();for(var e,n=t.trim().split(\",\"),i=[],r=0,o=n.length;r<o;++r)e=n[r].trim().split(W.spaces),i.push(new C(Number.parseFloat(e[0]),Number.parseFloat(e[1])));return this.geometryFactory.createLineString(i)},linearring:function(t){if(void 0===t)return this.geometryFactory.createLinearRing();for(var e,n=t.trim().split(\",\"),i=[],r=0,o=n.length;r<o;++r)e=n[r].trim().split(W.spaces),i.push(new C(Number.parseFloat(e[0]),Number.parseFloat(e[1])));return this.geometryFactory.createLinearRing(i)},multilinestring:function(t){if(void 0===t)return this.geometryFactory.createMultiLineString();for(var e,n=t.trim().split(W.parenComma),i=[],r=0,o=n.length;r<o;++r)e=n[r].replace(W.trimParens,\"$1\"),i.push(Q.linestring.apply(this,[e]));return this.geometryFactory.createMultiLineString(i)},polygon:function(t){if(void 0===t)return this.geometryFactory.createPolygon();for(var e,n,i,r,o=t.trim().split(W.parenComma),s=[],a=0,u=o.length;a<u;++a)e=o[a].replace(W.trimParens,\"$1\"),n=Q.linestring.apply(this,[e]),i=this.geometryFactory.createLinearRing(n._points),0===a?r=i:s.push(i);return this.geometryFactory.createPolygon(r,s)},multipolygon:function(t){if(void 0===t)return this.geometryFactory.createMultiPolygon();for(var e,n=t.trim().split(W.doubleParenComma),i=[],r=0,o=n.length;r<o;++r)e=n[r].replace(W.trimParens,\"$1\"),i.push(Q.polygon.apply(this,[e]));return this.geometryFactory.createMultiPolygon(i)},geometrycollection:function(t){if(void 0===t)return this.geometryFactory.createGeometryCollection();for(var e=(t=t.replace(/,\\s*([A-Za-z])/g,\"|$1\")).trim().split(\"|\"),n=[],i=0,r=e.length;i<r;++i)n.push(this.read(e[i]));return this.geometryFactory.createGeometryCollection(n)}},Z=function(t){this.parser=new K(t)};Z.prototype.write=function(t){return this.parser.write(t)},Z.toLineString=function(t,e){if(2!==arguments.length)throw new Error(\"Not implemented\");return\"LINESTRING ( \"+t.x+\" \"+t.y+\", \"+e.x+\" \"+e.y+\" )\"};var $=function(t){function e(e){t.call(this,e),this.name=\"RuntimeException\",this.message=e,this.stack=(new t).stack}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e}(Error),tt=function(t){function e(){if(t.call(this),0===arguments.length)t.call(this);else if(1===arguments.length){var e=arguments[0];t.call(this,e)}}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.interfaces_=function(){return[]},e.prototype.getClass=function(){return e},e}($),et=function(){};et.prototype.interfaces_=function(){return[]},et.prototype.getClass=function(){return et},et.shouldNeverReachHere=function(){if(0===arguments.length)et.shouldNeverReachHere(null);else if(1===arguments.length){var t=arguments[0];throw new tt(\"Should never reach here\"+(null!==t?\": \"+t:\"\"))}},et.isTrue=function(){var t,e;if(1===arguments.length)t=arguments[0],et.isTrue(t,null);else if(2===arguments.length&&(t=arguments[0],e=arguments[1],!t))throw null===e?new tt:new tt(e)},et.equals=function(){var t,e,n;if(2===arguments.length)t=arguments[0],e=arguments[1],et.equals(t,e,null);else if(3===arguments.length&&(t=arguments[0],e=arguments[1],n=arguments[2],!e.equals(t)))throw new tt(\"Expected \"+t+\" but encountered \"+e+(null!==n?\": \"+n:\"\"))};var nt=function(){this._result=null,this._inputLines=Array(2).fill().map(function(){return Array(2)}),this._intPt=new Array(2).fill(null),this._intLineIndex=null,this._isProper=null,this._pa=null,this._pb=null,this._precisionModel=null,this._intPt[0]=new C,this._intPt[1]=new C,this._pa=this._intPt[0],this._pb=this._intPt[1],this._result=0},it={DONT_INTERSECT:{configurable:!0},DO_INTERSECT:{configurable:!0},COLLINEAR:{configurable:!0},NO_INTERSECTION:{configurable:!0},POINT_INTERSECTION:{configurable:!0},COLLINEAR_INTERSECTION:{configurable:!0}};nt.prototype.getIndexAlongSegment=function(t,e){return this.computeIntLineIndex(),this._intLineIndex[t][e]},nt.prototype.getTopologySummary=function(){var t=new D;return this.isEndPoint()&&t.append(\" endpoint\"),this._isProper&&t.append(\" proper\"),this.isCollinear()&&t.append(\" collinear\"),t.toString()},nt.prototype.computeIntersection=function(t,e,n,i){this._inputLines[0][0]=t,this._inputLines[0][1]=e,this._inputLines[1][0]=n,this._inputLines[1][1]=i,this._result=this.computeIntersect(t,e,n,i)},nt.prototype.getIntersectionNum=function(){return this._result},nt.prototype.computeIntLineIndex=function(){if(0===arguments.length)null===this._intLineIndex&&(this._intLineIndex=Array(2).fill().map(function(){return Array(2)}),this.computeIntLineIndex(0),this.computeIntLineIndex(1));else if(1===arguments.length){var t=arguments[0];this.getEdgeDistance(t,0)>this.getEdgeDistance(t,1)?(this._intLineIndex[t][0]=0,this._intLineIndex[t][1]=1):(this._intLineIndex[t][0]=1,this._intLineIndex[t][1]=0)}},nt.prototype.isProper=function(){return this.hasIntersection()&&this._isProper},nt.prototype.setPrecisionModel=function(t){this._precisionModel=t},nt.prototype.isInteriorIntersection=function(){if(0===arguments.length)return!!this.isInteriorIntersection(0)||!!this.isInteriorIntersection(1);if(1===arguments.length){for(var t=arguments[0],e=0;e<this._result;e++)if(!this._intPt[e].equals2D(this._inputLines[t][0])&&!this._intPt[e].equals2D(this._inputLines[t][1]))return!0;return!1}},nt.prototype.getIntersection=function(t){return this._intPt[t]},nt.prototype.isEndPoint=function(){return this.hasIntersection()&&!this._isProper},nt.prototype.hasIntersection=function(){return this._result!==nt.NO_INTERSECTION},nt.prototype.getEdgeDistance=function(t,e){return nt.computeEdgeDistance(this._intPt[e],this._inputLines[t][0],this._inputLines[t][1])},nt.prototype.isCollinear=function(){return this._result===nt.COLLINEAR_INTERSECTION},nt.prototype.toString=function(){return Z.toLineString(this._inputLines[0][0],this._inputLines[0][1])+\" - \"+Z.toLineString(this._inputLines[1][0],this._inputLines[1][1])+this.getTopologySummary()},nt.prototype.getEndpoint=function(t,e){return this._inputLines[t][e]},nt.prototype.isIntersection=function(t){for(var e=0;e<this._result;e++)if(this._intPt[e].equals2D(t))return!0;return!1},nt.prototype.getIntersectionAlongSegment=function(t,e){return this.computeIntLineIndex(),this._intPt[this._intLineIndex[t][e]]},nt.prototype.interfaces_=function(){return[]},nt.prototype.getClass=function(){return nt},nt.computeEdgeDistance=function(t,e,n){var i=Math.abs(n.x-e.x),r=Math.abs(n.y-e.y),o=-1;if(t.equals(e))o=0;else if(t.equals(n))o=i>r?i:r;else{var s=Math.abs(t.x-e.x),a=Math.abs(t.y-e.y);0!==(o=i>r?s:a)||t.equals(e)||(o=Math.max(s,a))}return et.isTrue(!(0===o&&!t.equals(e)),\"Bad distance calculation\"),o},nt.nonRobustComputeEdgeDistance=function(t,e,n){var i=t.x-e.x,r=t.y-e.y,o=Math.sqrt(i*i+r*r);return et.isTrue(!(0===o&&!t.equals(e)),\"Invalid distance calculation\"),o},it.DONT_INTERSECT.get=function(){return 0},it.DO_INTERSECT.get=function(){return 1},it.COLLINEAR.get=function(){return 2},it.NO_INTERSECTION.get=function(){return 0},it.POINT_INTERSECTION.get=function(){return 1},it.COLLINEAR_INTERSECTION.get=function(){return 2},Object.defineProperties(nt,it);var rt=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.isInSegmentEnvelopes=function(t){var e=new j(this._inputLines[0][0],this._inputLines[0][1]),n=new j(this._inputLines[1][0],this._inputLines[1][1]);return e.contains(t)&&n.contains(t)},e.prototype.computeIntersection=function(){if(3!==arguments.length)return t.prototype.computeIntersection.apply(this,arguments);var e=arguments[0],n=arguments[1],i=arguments[2];if(this._isProper=!1,j.intersects(n,i,e)&&0===at.orientationIndex(n,i,e)&&0===at.orientationIndex(i,n,e))return this._isProper=!0,(e.equals(n)||e.equals(i))&&(this._isProper=!1),this._result=t.POINT_INTERSECTION,null;this._result=t.NO_INTERSECTION},e.prototype.normalizeToMinimum=function(t,e,n,i,r){r.x=this.smallestInAbsValue(t.x,e.x,n.x,i.x),r.y=this.smallestInAbsValue(t.y,e.y,n.y,i.y),t.x-=r.x,t.y-=r.y,e.x-=r.x,e.y-=r.y,n.x-=r.x,n.y-=r.y,i.x-=r.x,i.y-=r.y},e.prototype.safeHCoordinateIntersection=function(t,n,i,r){var o=null;try{o=k.intersection(t,n,i,r)}catch(s){if(!(s instanceof X))throw s;o=e.nearestEndpoint(t,n,i,r)}return o},e.prototype.intersection=function(t,n,i,r){var o=this.intersectionWithNormalization(t,n,i,r);return this.isInSegmentEnvelopes(o)||(o=new C(e.nearestEndpoint(t,n,i,r))),null!==this._precisionModel&&this._precisionModel.makePrecise(o),o},e.prototype.smallestInAbsValue=function(t,e,n,i){var r=t,o=Math.abs(r);return Math.abs(e)<o&&(r=e,o=Math.abs(e)),Math.abs(n)<o&&(r=n,o=Math.abs(n)),Math.abs(i)<o&&(r=i),r},e.prototype.checkDD=function(t,e,n,i,r){var o=q.intersection(t,e,n,i),s=this.isInSegmentEnvelopes(o);Y.out.println(\"DD in env = \"+s+\"  --------------------- \"+o),r.distance(o)>1e-4&&Y.out.println(\"Distance = \"+r.distance(o))},e.prototype.intersectionWithNormalization=function(t,e,n,i){var r=new C(t),o=new C(e),s=new C(n),a=new C(i),u=new C;this.normalizeToEnvCentre(r,o,s,a,u);var l=this.safeHCoordinateIntersection(r,o,s,a);return l.x+=u.x,l.y+=u.y,l},e.prototype.computeCollinearIntersection=function(e,n,i,r){var o=j.intersects(e,n,i),s=j.intersects(e,n,r),a=j.intersects(i,r,e),u=j.intersects(i,r,n);return o&&s?(this._intPt[0]=i,this._intPt[1]=r,t.COLLINEAR_INTERSECTION):a&&u?(this._intPt[0]=e,this._intPt[1]=n,t.COLLINEAR_INTERSECTION):o&&a?(this._intPt[0]=i,this._intPt[1]=e,!i.equals(e)||s||u?t.COLLINEAR_INTERSECTION:t.POINT_INTERSECTION):o&&u?(this._intPt[0]=i,this._intPt[1]=n,!i.equals(n)||s||a?t.COLLINEAR_INTERSECTION:t.POINT_INTERSECTION):s&&a?(this._intPt[0]=r,this._intPt[1]=e,!r.equals(e)||o||u?t.COLLINEAR_INTERSECTION:t.POINT_INTERSECTION):s&&u?(this._intPt[0]=r,this._intPt[1]=n,!r.equals(n)||o||a?t.COLLINEAR_INTERSECTION:t.POINT_INTERSECTION):t.NO_INTERSECTION},e.prototype.normalizeToEnvCentre=function(t,e,n,i,r){var o=t.x<e.x?t.x:e.x,s=t.y<e.y?t.y:e.y,a=t.x>e.x?t.x:e.x,u=t.y>e.y?t.y:e.y,l=n.x<i.x?n.x:i.x,c=n.y<i.y?n.y:i.y,p=n.x>i.x?n.x:i.x,h=n.y>i.y?n.y:i.y,f=((o>l?o:l)+(a<p?a:p))/2,g=((s>c?s:c)+(u<h?u:h))/2;r.x=f,r.y=g,t.x-=r.x,t.y-=r.y,e.x-=r.x,e.y-=r.y,n.x-=r.x,n.y-=r.y,i.x-=r.x,i.y-=r.y},e.prototype.computeIntersect=function(e,n,i,r){if(this._isProper=!1,!j.intersects(e,n,i,r))return t.NO_INTERSECTION;var o=at.orientationIndex(e,n,i),s=at.orientationIndex(e,n,r);if(o>0&&s>0||o<0&&s<0)return t.NO_INTERSECTION;var a=at.orientationIndex(i,r,e),u=at.orientationIndex(i,r,n);if(a>0&&u>0||a<0&&u<0)return t.NO_INTERSECTION;return 0===o&&0===s&&0===a&&0===u?this.computeCollinearIntersection(e,n,i,r):(0===o||0===s||0===a||0===u?(this._isProper=!1,e.equals2D(i)||e.equals2D(r)?this._intPt[0]=e:n.equals2D(i)||n.equals2D(r)?this._intPt[0]=n:0===o?this._intPt[0]=new C(i):0===s?this._intPt[0]=new C(r):0===a?this._intPt[0]=new C(e):0===u&&(this._intPt[0]=new C(n))):(this._isProper=!0,this._intPt[0]=this.intersection(e,n,i,r)),t.POINT_INTERSECTION)},e.prototype.interfaces_=function(){return[]},e.prototype.getClass=function(){return e},e.nearestEndpoint=function(t,e,n,i){var r=t,o=at.distancePointLine(t,n,i),s=at.distancePointLine(e,n,i);return s<o&&(o=s,r=e),(s=at.distancePointLine(n,t,e))<o&&(o=s,r=n),(s=at.distancePointLine(i,t,e))<o&&(o=s,r=i),r},e}(nt),ot=function(){};ot.prototype.interfaces_=function(){return[]},ot.prototype.getClass=function(){return ot},ot.orientationIndex=function(t,e,n){var i=e.x-t.x,r=e.y-t.y,o=n.x-e.x,s=n.y-e.y;return ot.signOfDet2x2(i,r,o,s)},ot.signOfDet2x2=function(t,e,n,i){var r=null,o=null,s=null;if(r=1,0===t||0===i)return 0===e||0===n?0:e>0?n>0?-r:r:n>0?r:-r;if(0===e||0===n)return i>0?t>0?r:-r:t>0?-r:r;if(e>0?i>0?e<=i||(r=-r,o=t,t=n,n=o,o=e,e=i,i=o):e<=-i?(r=-r,n=-n,i=-i):(o=t,t=-n,n=o,o=e,e=-i,i=o):i>0?-e<=i?(r=-r,t=-t,e=-e):(o=-t,t=n,n=o,o=-e,e=i,i=o):e>=i?(t=-t,e=-e,n=-n,i=-i):(r=-r,o=-t,t=-n,n=o,o=-e,e=-i,i=o),t>0){if(!(n>0))return r;if(!(t<=n))return r}else{if(n>0)return-r;if(!(t>=n))return-r;r=-r,t=-t,n=-n}for(;;){if(s=Math.floor(n/t),n-=s*t,(i-=s*e)<0)return-r;if(i>e)return r;if(t>n+n){if(e<i+i)return r}else{if(e>i+i)return-r;n=t-n,i=e-i,r=-r}if(0===i)return 0===n?0:-r;if(0===n)return r;if(s=Math.floor(t/n),t-=s*n,(e-=s*i)<0)return r;if(e>i)return-r;if(n>t+t){if(i<e+e)return-r}else{if(i>e+e)return r;t=n-t,e=i-e,r=-r}if(0===e)return 0===t?0:r;if(0===t)return-r}};var st=function(){this._p=null,this._crossingCount=0,this._isPointOnSegment=!1;var t=arguments[0];this._p=t};st.prototype.countSegment=function(t,e){if(t.x<this._p.x&&e.x<this._p.x)return null;if(this._p.x===e.x&&this._p.y===e.y)return this._isPointOnSegment=!0,null;if(t.y===this._p.y&&e.y===this._p.y){var n=t.x,i=e.x;return n>i&&(n=e.x,i=t.x),this._p.x>=n&&this._p.x<=i&&(this._isPointOnSegment=!0),null}if(t.y>this._p.y&&e.y<=this._p.y||e.y>this._p.y&&t.y<=this._p.y){var r=t.x-this._p.x,o=t.y-this._p.y,s=e.x-this._p.x,a=e.y-this._p.y,u=ot.signOfDet2x2(r,o,s,a);if(0===u)return this._isPointOnSegment=!0,null;a<o&&(u=-u),u>0&&this._crossingCount++}},st.prototype.isPointInPolygon=function(){return this.getLocation()!==w.EXTERIOR},st.prototype.getLocation=function(){return this._isPointOnSegment?w.BOUNDARY:this._crossingCount%2==1?w.INTERIOR:w.EXTERIOR},st.prototype.isOnSegment=function(){return this._isPointOnSegment},st.prototype.interfaces_=function(){return[]},st.prototype.getClass=function(){return st},st.locatePointInRing=function(){if(arguments[0]instanceof C&&T(arguments[1],V)){for(var t=arguments[0],e=arguments[1],n=new st(t),i=new C,r=new C,o=1;o<e.size();o++)if(e.getCoordinate(o,i),e.getCoordinate(o-1,r),n.countSegment(i,r),n.isOnSegment())return n.getLocation();return n.getLocation()}if(arguments[0]instanceof C&&arguments[1]instanceof Array){for(var s=arguments[0],a=arguments[1],u=new st(s),l=1;l<a.length;l++){var c=a[l],p=a[l-1];if(u.countSegment(c,p),u.isOnSegment())return u.getLocation()}return u.getLocation()}};var at=function(){},ut={CLOCKWISE:{configurable:!0},RIGHT:{configurable:!0},COUNTERCLOCKWISE:{configurable:!0},LEFT:{configurable:!0},COLLINEAR:{configurable:!0},STRAIGHT:{configurable:!0}};at.prototype.interfaces_=function(){return[]},at.prototype.getClass=function(){return at},at.orientationIndex=function(t,e,n){return q.orientationIndex(t,e,n)},at.signedArea=function(){if(arguments[0]instanceof Array){var t=arguments[0];if(t.length<3)return 0;for(var e=0,n=t[0].x,i=1;i<t.length-1;i++){var r=t[i].x-n,o=t[i+1].y;e+=r*(t[i-1].y-o)}return e/2}if(T(arguments[0],V)){var s=arguments[0],a=s.size();if(a<3)return 0;var u=new C,l=new C,c=new C;s.getCoordinate(0,l),s.getCoordinate(1,c);var p=l.x;c.x-=p;for(var h=0,f=1;f<a-1;f++)u.y=l.y,l.x=c.x,l.y=c.y,s.getCoordinate(f+1,c),c.x-=p,h+=l.x*(u.y-c.y);return h/2}},at.distanceLineLine=function(t,e,n,i){if(t.equals(e))return at.distancePointLine(t,n,i);if(n.equals(i))return at.distancePointLine(i,t,e);var r=!1;if(j.intersects(t,e,n,i)){var o=(e.x-t.x)*(i.y-n.y)-(e.y-t.y)*(i.x-n.x);if(0===o)r=!0;else{var s=(t.y-n.y)*(i.x-n.x)-(t.x-n.x)*(i.y-n.y),a=((t.y-n.y)*(e.x-t.x)-(t.x-n.x)*(e.y-t.y))/o,u=s/o;(u<0||u>1||a<0||a>1)&&(r=!0)}}else r=!0;return r?R.min(at.distancePointLine(t,n,i),at.distancePointLine(e,n,i),at.distancePointLine(n,t,e),at.distancePointLine(i,t,e)):0},at.isPointInRing=function(t,e){return at.locatePointInRing(t,e)!==w.EXTERIOR},at.computeLength=function(t){var e=t.size();if(e<=1)return 0;var n=0,i=new C;t.getCoordinate(0,i);for(var r=i.x,o=i.y,s=1;s<e;s++){t.getCoordinate(s,i);var a=i.x,u=i.y,l=a-r,c=u-o;n+=Math.sqrt(l*l+c*c),r=a,o=u}return n},at.isCCW=function(t){var e=t.length-1;if(e<3)throw new m(\"Ring has fewer than 4 points, so orientation cannot be determined\");for(var n=t[0],i=0,r=1;r<=e;r++){var o=t[r];o.y>n.y&&(n=o,i=r)}var s=i;do{(s-=1)<0&&(s=e)}while(t[s].equals2D(n)&&s!==i);var a=i;do{a=(a+1)%e}while(t[a].equals2D(n)&&a!==i);var u=t[s],l=t[a];if(u.equals2D(n)||l.equals2D(n)||u.equals2D(l))return!1;var c=at.computeOrientation(u,n,l),p=!1;return p=0===c?u.x>l.x:c>0,p},at.locatePointInRing=function(t,e){return st.locatePointInRing(t,e)},at.distancePointLinePerpendicular=function(t,e,n){var i=(n.x-e.x)*(n.x-e.x)+(n.y-e.y)*(n.y-e.y),r=((e.y-t.y)*(n.x-e.x)-(e.x-t.x)*(n.y-e.y))/i;return Math.abs(r)*Math.sqrt(i)},at.computeOrientation=function(t,e,n){return at.orientationIndex(t,e,n)},at.distancePointLine=function(){if(2===arguments.length){var t=arguments[0],e=arguments[1];if(0===e.length)throw new m(\"Line array must contain at least one vertex\");for(var n=t.distance(e[0]),i=0;i<e.length-1;i++){var r=at.distancePointLine(t,e[i],e[i+1]);r<n&&(n=r)}return n}if(3===arguments.length){var o=arguments[0],s=arguments[1],a=arguments[2];if(s.x===a.x&&s.y===a.y)return o.distance(s);var u=(a.x-s.x)*(a.x-s.x)+(a.y-s.y)*(a.y-s.y),l=((o.x-s.x)*(a.x-s.x)+(o.y-s.y)*(a.y-s.y))/u;if(l<=0)return o.distance(s);if(l>=1)return o.distance(a);var c=((s.y-o.y)*(a.x-s.x)-(s.x-o.x)*(a.y-s.y))/u;return Math.abs(c)*Math.sqrt(u)}},at.isOnLine=function(t,e){for(var n=new rt,i=1;i<e.length;i++){var r=e[i-1],o=e[i];if(n.computeIntersection(t,r,o),n.hasIntersection())return!0}return!1},ut.CLOCKWISE.get=function(){return-1},ut.RIGHT.get=function(){return at.CLOCKWISE},ut.COUNTERCLOCKWISE.get=function(){return 1},ut.LEFT.get=function(){return at.COUNTERCLOCKWISE},ut.COLLINEAR.get=function(){return 0},ut.STRAIGHT.get=function(){return at.COLLINEAR},Object.defineProperties(at,ut);var lt=function(){};lt.prototype.filter=function(t){},lt.prototype.interfaces_=function(){return[]},lt.prototype.getClass=function(){return lt};var ct=function(){var t=arguments[0];this._envelope=null,this._factory=null,this._SRID=null,this._userData=null,this._factory=t,this._SRID=t.getSRID()},pt={serialVersionUID:{configurable:!0},SORTINDEX_POINT:{configurable:!0},SORTINDEX_MULTIPOINT:{configurable:!0},SORTINDEX_LINESTRING:{configurable:!0},SORTINDEX_LINEARRING:{configurable:!0},SORTINDEX_MULTILINESTRING:{configurable:!0},SORTINDEX_POLYGON:{configurable:!0},SORTINDEX_MULTIPOLYGON:{configurable:!0},SORTINDEX_GEOMETRYCOLLECTION:{configurable:!0},geometryChangedFilter:{configurable:!0}};ct.prototype.isGeometryCollection=function(){return this.getSortIndex()===ct.SORTINDEX_GEOMETRYCOLLECTION},ct.prototype.getFactory=function(){return this._factory},ct.prototype.getGeometryN=function(t){return this},ct.prototype.getArea=function(){return 0},ct.prototype.isRectangle=function(){return!1},ct.prototype.equals=function(){if(arguments[0]instanceof ct){var t=arguments[0];return null!==t&&this.equalsTopo(t)}if(arguments[0]instanceof Object){var e=arguments[0];if(!(e instanceof ct))return!1;var n=e;return this.equalsExact(n)}},ct.prototype.equalsExact=function(t){return this===t||this.equalsExact(t,0)},ct.prototype.geometryChanged=function(){this.apply(ct.geometryChangedFilter)},ct.prototype.geometryChangedAction=function(){this._envelope=null},ct.prototype.equalsNorm=function(t){return null!==t&&this.norm().equalsExact(t.norm())},ct.prototype.getLength=function(){return 0},ct.prototype.getNumGeometries=function(){return 1},ct.prototype.compareTo=function(){if(1===arguments.length){var t=arguments[0],e=t;return this.getSortIndex()!==e.getSortIndex()?this.getSortIndex()-e.getSortIndex():this.isEmpty()&&e.isEmpty()?0:this.isEmpty()?-1:e.isEmpty()?1:this.compareToSameClass(t)}if(2===arguments.length){var n=arguments[0],i=arguments[1];return this.getSortIndex()!==n.getSortIndex()?this.getSortIndex()-n.getSortIndex():this.isEmpty()&&n.isEmpty()?0:this.isEmpty()?-1:n.isEmpty()?1:this.compareToSameClass(n,i)}},ct.prototype.getUserData=function(){return this._userData},ct.prototype.getSRID=function(){return this._SRID},ct.prototype.getEnvelope=function(){return this.getFactory().toGeometry(this.getEnvelopeInternal())},ct.prototype.checkNotGeometryCollection=function(t){if(t.getSortIndex()===ct.SORTINDEX_GEOMETRYCOLLECTION)throw new m(\"This method does not support GeometryCollection arguments\")},ct.prototype.equal=function(t,e,n){return 0===n?t.equals(e):t.distance(e)<=n},ct.prototype.norm=function(){var t=this.copy();return t.normalize(),t},ct.prototype.getPrecisionModel=function(){return this._factory.getPrecisionModel()},ct.prototype.getEnvelopeInternal=function(){return null===this._envelope&&(this._envelope=this.computeEnvelopeInternal()),new j(this._envelope)},ct.prototype.setSRID=function(t){this._SRID=t},ct.prototype.setUserData=function(t){this._userData=t},ct.prototype.compare=function(t,e){for(var n=t.iterator(),i=e.iterator();n.hasNext()&&i.hasNext();){var r=n.next(),o=i.next(),s=r.compareTo(o);if(0!==s)return s}return n.hasNext()?1:i.hasNext()?-1:0},ct.prototype.hashCode=function(){return this.getEnvelopeInternal().hashCode()},ct.prototype.isGeometryCollectionOrDerived=function(){return this.getSortIndex()===ct.SORTINDEX_GEOMETRYCOLLECTION||this.getSortIndex()===ct.SORTINDEX_MULTIPOINT||this.getSortIndex()===ct.SORTINDEX_MULTILINESTRING||this.getSortIndex()===ct.SORTINDEX_MULTIPOLYGON},ct.prototype.interfaces_=function(){return[x,E,e]},ct.prototype.getClass=function(){return ct},ct.hasNonEmptyElements=function(t){for(var e=0;e<t.length;e++)if(!t[e].isEmpty())return!0;return!1},ct.hasNullElements=function(t){for(var e=0;e<t.length;e++)if(null===t[e])return!0;return!1},pt.serialVersionUID.get=function(){return 0x799ea46522854c00},pt.SORTINDEX_POINT.get=function(){return 0},pt.SORTINDEX_MULTIPOINT.get=function(){return 1},pt.SORTINDEX_LINESTRING.get=function(){return 2},pt.SORTINDEX_LINEARRING.get=function(){return 3},pt.SORTINDEX_MULTILINESTRING.get=function(){return 4},pt.SORTINDEX_POLYGON.get=function(){return 5},pt.SORTINDEX_MULTIPOLYGON.get=function(){return 6},pt.SORTINDEX_GEOMETRYCOLLECTION.get=function(){return 7},pt.geometryChangedFilter.get=function(){return ht},Object.defineProperties(ct,pt);var ht=function(){};ht.interfaces_=function(){return[lt]},ht.filter=function(t){t.geometryChangedAction()};var ft=function(){};ft.prototype.filter=function(t){},ft.prototype.interfaces_=function(){return[]},ft.prototype.getClass=function(){return ft};var gt=function(){},dt={Mod2BoundaryNodeRule:{configurable:!0},EndPointBoundaryNodeRule:{configurable:!0},MultiValentEndPointBoundaryNodeRule:{configurable:!0},MonoValentEndPointBoundaryNodeRule:{configurable:!0},MOD2_BOUNDARY_RULE:{configurable:!0},ENDPOINT_BOUNDARY_RULE:{configurable:!0},MULTIVALENT_ENDPOINT_BOUNDARY_RULE:{configurable:!0},MONOVALENT_ENDPOINT_BOUNDARY_RULE:{configurable:!0},OGC_SFS_BOUNDARY_RULE:{configurable:!0}};gt.prototype.isInBoundary=function(t){},gt.prototype.interfaces_=function(){return[]},gt.prototype.getClass=function(){return gt},dt.Mod2BoundaryNodeRule.get=function(){return yt},dt.EndPointBoundaryNodeRule.get=function(){return _t},dt.MultiValentEndPointBoundaryNodeRule.get=function(){return mt},dt.MonoValentEndPointBoundaryNodeRule.get=function(){return vt},dt.MOD2_BOUNDARY_RULE.get=function(){return new yt},dt.ENDPOINT_BOUNDARY_RULE.get=function(){return new _t},dt.MULTIVALENT_ENDPOINT_BOUNDARY_RULE.get=function(){return new mt},dt.MONOVALENT_ENDPOINT_BOUNDARY_RULE.get=function(){return new vt},dt.OGC_SFS_BOUNDARY_RULE.get=function(){return gt.MOD2_BOUNDARY_RULE},Object.defineProperties(gt,dt);var yt=function(){};yt.prototype.isInBoundary=function(t){return t%2==1},yt.prototype.interfaces_=function(){return[gt]},yt.prototype.getClass=function(){return yt};var _t=function(){};_t.prototype.isInBoundary=function(t){return t>0},_t.prototype.interfaces_=function(){return[gt]},_t.prototype.getClass=function(){return _t};var mt=function(){};mt.prototype.isInBoundary=function(t){return t>1},mt.prototype.interfaces_=function(){return[gt]},mt.prototype.getClass=function(){return mt};var vt=function(){};vt.prototype.isInBoundary=function(t){return 1===t},vt.prototype.interfaces_=function(){return[gt]},vt.prototype.getClass=function(){return vt};var It=function(){};It.prototype.add=function(){},It.prototype.addAll=function(){},It.prototype.isEmpty=function(){},It.prototype.iterator=function(){},It.prototype.size=function(){},It.prototype.toArray=function(){},It.prototype.remove=function(){},(n.prototype=new Error).name=\"IndexOutOfBoundsException\";var Et=function(){};Et.prototype.hasNext=function(){},Et.prototype.next=function(){},Et.prototype.remove=function(){};var xt=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.get=function(){},e.prototype.set=function(){},e.prototype.isEmpty=function(){},e}(It);(i.prototype=new Error).name=\"NoSuchElementException\";var Nt=function(t){function e(){t.call(this),this.array_=[],arguments[0]instanceof It&&this.addAll(arguments[0])}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.ensureCapacity=function(){},e.prototype.interfaces_=function(){return[t,It]},e.prototype.add=function(t){return 1===arguments.length?this.array_.push(t):this.array_.splice(arguments[0],arguments[1]),!0},e.prototype.clear=function(){this.array_=[]},e.prototype.addAll=function(t){for(var e=t.iterator();e.hasNext();)this.add(e.next());return!0},e.prototype.set=function(t,e){var n=this.array_[t];return this.array_[t]=e,n},e.prototype.iterator=function(){return new Ct(this)},e.prototype.get=function(t){if(t<0||t>=this.size())throw new n;return this.array_[t]},e.prototype.isEmpty=function(){return 0===this.array_.length},e.prototype.size=function(){return this.array_.length},e.prototype.toArray=function(){for(var t=[],e=0,n=this.array_.length;e<n;e++)t.push(this.array_[e]);return t},e.prototype.remove=function(t){for(var e=!1,n=0,i=this.array_.length;n<i;n++)if(this.array_[n]===t){this.array_.splice(n,1),e=!0;break}return e},e}(xt),Ct=function(t){function e(e){t.call(this),this.arrayList_=e,this.position_=0}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.next=function(){if(this.position_===this.arrayList_.size())throw new i;return this.arrayList_.get(this.position_++)},e.prototype.hasNext=function(){return this.position_<this.arrayList_.size()},e.prototype.set=function(t){return this.arrayList_.set(this.position_-1,t)},e.prototype.remove=function(){this.arrayList_.remove(this.arrayList_.get(this.position_))},e}(Et),St=function(t){function e(){if(t.call(this),0===arguments.length);else if(1===arguments.length){var e=arguments[0];this.ensureCapacity(e.length),this.add(e,!0)}else if(2===arguments.length){var n=arguments[0],i=arguments[1];this.ensureCapacity(n.length),this.add(n,i)}}t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e;var n={coordArrayType:{configurable:!0}};return n.coordArrayType.get=function(){return new Array(0).fill(null)},e.prototype.getCoordinate=function(t){return this.get(t)},e.prototype.addAll=function(){if(2===arguments.length){for(var e=arguments[0],n=arguments[1],i=!1,r=e.iterator();r.hasNext();)this.add(r.next(),n),i=!0;return i}return t.prototype.addAll.apply(this,arguments)},e.prototype.clone=function(){for(var e=t.prototype.clone.call(this),n=0;n<this.size();n++)e.add(n,this.get(n).copy());return e},e.prototype.toCoordinateArray=function(){return this.toArray(e.coordArrayType)},e.prototype.add=function(){if(1===arguments.length){var e=arguments[0];t.prototype.add.call(this,e)}else if(2===arguments.length){if(arguments[0]instanceof Array&&\"boolean\"==typeof arguments[1]){var n=arguments[0],i=arguments[1];return this.add(n,i,!0),!0}if(arguments[0]instanceof C&&\"boolean\"==typeof arguments[1]){var r=arguments[0];if(!arguments[1]&&this.size()>=1){if(this.get(this.size()-1).equals2D(r))return null}t.prototype.add.call(this,r)}else if(arguments[0]instanceof Object&&\"boolean\"==typeof arguments[1]){var o=arguments[0],s=arguments[1];return this.add(o,s),!0}}else if(3===arguments.length){if(\"boolean\"==typeof arguments[2]&&arguments[0]instanceof Array&&\"boolean\"==typeof arguments[1]){var a=arguments[0],u=arguments[1];if(arguments[2])for(var l=0;l<a.length;l++)this.add(a[l],u);else for(var c=a.length-1;c>=0;c--)this.add(a[c],u);return!0}if(\"boolean\"==typeof arguments[2]&&Number.isInteger(arguments[0])&&arguments[1]instanceof C){var p=arguments[0],h=arguments[1];if(!arguments[2]){var f=this.size();if(f>0){if(p>0){if(this.get(p-1).equals2D(h))return null}if(p<f){if(this.get(p).equals2D(h))return null}}}t.prototype.add.call(this,p,h)}}else if(4===arguments.length){var g=arguments[0],d=arguments[1],y=arguments[2],_=arguments[3],m=1;y>_&&(m=-1);for(var v=y;v!==_;v+=m)this.add(g[v],d);return!0}},e.prototype.closeRing=function(){this.size()>0&&this.add(new C(this.get(0)),!1)},e.prototype.interfaces_=function(){return[]},e.prototype.getClass=function(){return e},Object.defineProperties(e,n),e}(Nt),Lt=function(){},bt={ForwardComparator:{configurable:!0},BidirectionalComparator:{configurable:!0},coordArrayType:{configurable:!0}};bt.ForwardComparator.get=function(){return wt},bt.BidirectionalComparator.get=function(){return Ot},bt.coordArrayType.get=function(){return new Array(0).fill(null)},Lt.prototype.interfaces_=function(){return[]},Lt.prototype.getClass=function(){return Lt},Lt.isRing=function(t){return!(t.length<4)&&!!t[0].equals2D(t[t.length-1])},Lt.ptNotInList=function(t,e){for(var n=0;n<t.length;n++){var i=t[n];if(Lt.indexOf(i,e)<0)return i}return null},Lt.scroll=function(t,e){var n=Lt.indexOf(e,t);if(n<0)return null;var i=new Array(t.length).fill(null);Y.arraycopy(t,n,i,0,t.length-n),Y.arraycopy(t,0,i,t.length-n,n),Y.arraycopy(i,0,t,0,t.length)},Lt.equals=function(){if(2===arguments.length){var t=arguments[0],e=arguments[1];if(t===e)return!0;if(null===t||null===e)return!1;if(t.length!==e.length)return!1;for(var n=0;n<t.length;n++)if(!t[n].equals(e[n]))return!1;return!0}if(3===arguments.length){var i=arguments[0],r=arguments[1],o=arguments[2];if(i===r)return!0;if(null===i||null===r)return!1;if(i.length!==r.length)return!1;for(var s=0;s<i.length;s++)if(0!==o.compare(i[s],r[s]))return!1;return!0}},Lt.intersection=function(t,e){for(var n=new St,i=0;i<t.length;i++)e.intersects(t[i])&&n.add(t[i],!0);return n.toCoordinateArray()},Lt.hasRepeatedPoints=function(t){for(var e=1;e<t.length;e++)if(t[e-1].equals(t[e]))return!0;return!1},Lt.removeRepeatedPoints=function(t){if(!Lt.hasRepeatedPoints(t))return t;return new St(t,!1).toCoordinateArray()},Lt.reverse=function(t){for(var e=t.length-1,n=Math.trunc(e/2),i=0;i<=n;i++){var r=t[i];t[i]=t[e-i],t[e-i]=r}},Lt.removeNull=function(t){for(var e=0,n=0;n<t.length;n++)null!==t[n]&&e++;var i=new Array(e).fill(null);if(0===e)return i;for(var r=0,o=0;o<t.length;o++)null!==t[o]&&(i[r++]=t[o]);return i},Lt.copyDeep=function(){if(1===arguments.length){for(var t=arguments[0],e=new Array(t.length).fill(null),n=0;n<t.length;n++)e[n]=new C(t[n]);return e}if(5===arguments.length)for(var i=arguments[0],r=arguments[1],o=arguments[2],s=arguments[3],a=arguments[4],u=0;u<a;u++)o[s+u]=new C(i[r+u])},Lt.isEqualReversed=function(t,e){for(var n=0;n<t.length;n++){var i=t[n],r=e[t.length-n-1];if(0!==i.compareTo(r))return!1}return!0},Lt.envelope=function(t){for(var e=new j,n=0;n<t.length;n++)e.expandToInclude(t[n]);return e},Lt.toCoordinateArray=function(t){return t.toArray(Lt.coordArrayType)},Lt.atLeastNCoordinatesOrNothing=function(t,e){return e.length>=t?e:[]},Lt.indexOf=function(t,e){for(var n=0;n<e.length;n++)if(t.equals(e[n]))return n;return-1},Lt.increasingDirection=function(t){for(var e=0;e<Math.trunc(t.length/2);e++){var n=t.length-1-e,i=t[e].compareTo(t[n]);if(0!==i)return i}return 1},Lt.compare=function(t,e){for(var n=0;n<t.length&&n<e.length;){var i=t[n].compareTo(e[n]);if(0!==i)return i;n++}return n<e.length?-1:n<t.length?1:0},Lt.minCoordinate=function(t){for(var e=null,n=0;n<t.length;n++)(null===e||e.compareTo(t[n])>0)&&(e=t[n]);return e},Lt.extract=function(t,e,n){e=R.clamp(e,0,t.length);var i=(n=R.clamp(n,-1,t.length))-e+1;n<0&&(i=0),e>=t.length&&(i=0),n<e&&(i=0);var r=new Array(i).fill(null);if(0===i)return r;for(var o=0,s=e;s<=n;s++)r[o++]=t[s];return r},Object.defineProperties(Lt,bt);var wt=function(){};wt.prototype.compare=function(t,e){return Lt.compare(t,e)},wt.prototype.interfaces_=function(){return[N]},wt.prototype.getClass=function(){return wt};var Ot=function(){};Ot.prototype.compare=function(t,e){var n=t,i=e;if(n.length<i.length)return-1;if(n.length>i.length)return 1;if(0===n.length)return 0;var r=Lt.compare(n,i);return Lt.isEqualReversed(n,i)?0:r},Ot.prototype.OLDcompare=function(t,e){var n=t,i=e;if(n.length<i.length)return-1;if(n.length>i.length)return 1;if(0===n.length)return 0;for(var r=Lt.increasingDirection(n),o=Lt.increasingDirection(i),s=r>0?0:n.length-1,a=o>0?0:n.length-1,u=0;u<n.length;u++){var l=n[s].compareTo(i[a]);if(0!==l)return l;s+=r,a+=o}return 0},Ot.prototype.interfaces_=function(){return[N]},Ot.prototype.getClass=function(){return Ot};var Tt=function(){};Tt.prototype.get=function(){},Tt.prototype.put=function(){},Tt.prototype.size=function(){},Tt.prototype.values=function(){},Tt.prototype.entrySet=function(){};var Rt=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e}(Tt);(r.prototype=new Error).name=\"OperationNotSupported\",(o.prototype=new It).contains=function(){};var Pt=function(t){function e(){t.call(this),this.array_=[],arguments[0]instanceof It&&this.addAll(arguments[0])}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.contains=function(t){for(var e=0,n=this.array_.length;e<n;e++){if(this.array_[e]===t)return!0}return!1},e.prototype.add=function(t){return!this.contains(t)&&(this.array_.push(t),!0)},e.prototype.addAll=function(t){for(var e=t.iterator();e.hasNext();)this.add(e.next());return!0},e.prototype.remove=function(t){throw new Error},e.prototype.size=function(){return this.array_.length},e.prototype.isEmpty=function(){return 0===this.array_.length},e.prototype.toArray=function(){for(var t=[],e=0,n=this.array_.length;e<n;e++)t.push(this.array_[e]);return t},e.prototype.iterator=function(){return new Dt(this)},e}(o),Dt=function(t){function e(e){t.call(this),this.hashSet_=e,this.position_=0}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.next=function(){if(this.position_===this.hashSet_.size())throw new i;return this.hashSet_.array_[this.position_++]},e.prototype.hasNext=function(){return this.position_<this.hashSet_.size()},e.prototype.remove=function(){throw new r},e}(Et),Mt=0;(p.prototype=new Rt).get=function(t){for(var e=this.root_;null!==e;){var n=t.compareTo(e.key);if(n<0)e=e.left;else{if(!(n>0))return e.value;e=e.right}}return null},p.prototype.put=function(t,e){if(null===this.root_)return this.root_={key:t,value:e,left:null,right:null,parent:null,color:Mt,getValue:function(){return this.value},getKey:function(){return this.key}},this.size_=1,null;var n,i,r=this.root_;do{if(n=r,(i=t.compareTo(r.key))<0)r=r.left;else{if(!(i>0)){var o=r.value;return r.value=e,o}r=r.right}}while(null!==r);var s={key:t,left:null,right:null,value:e,parent:n,color:Mt,getValue:function(){return this.value},getKey:function(){return this.key}};return i<0?n.left=s:n.right=s,this.fixAfterInsertion(s),this.size_++,null},p.prototype.fixAfterInsertion=function(t){for(t.color=1;null!=t&&t!==this.root_&&1===t.parent.color;)if(a(t)===l(a(a(t)))){var e=c(a(a(t)));1===s(e)?(u(a(t),Mt),u(e,Mt),u(a(a(t)),1),t=a(a(t))):(t===c(a(t))&&(t=a(t),this.rotateLeft(t)),u(a(t),Mt),u(a(a(t)),1),this.rotateRight(a(a(t))))}else{var n=l(a(a(t)));1===s(n)?(u(a(t),Mt),u(n,Mt),u(a(a(t)),1),t=a(a(t))):(t===l(a(t))&&(t=a(t),this.rotateRight(t)),u(a(t),Mt),u(a(a(t)),1),this.rotateLeft(a(a(t))))}this.root_.color=Mt},p.prototype.values=function(){var t=new Nt,e=this.getFirstEntry();if(null!==e)for(t.add(e.value);null!==(e=p.successor(e));)t.add(e.value);return t},p.prototype.entrySet=function(){var t=new Pt,e=this.getFirstEntry();if(null!==e)for(t.add(e);null!==(e=p.successor(e));)t.add(e);return t},p.prototype.rotateLeft=function(t){if(null!=t){var e=t.right;t.right=e.left,null!=e.left&&(e.left.parent=t),e.parent=t.parent,null===t.parent?this.root_=e:t.parent.left===t?t.parent.left=e:t.parent.right=e,e.left=t,t.parent=e}},p.prototype.rotateRight=function(t){if(null!=t){var e=t.left;t.left=e.right,null!=e.right&&(e.right.parent=t),e.parent=t.parent,null===t.parent?this.root_=e:t.parent.right===t?t.parent.right=e:t.parent.left=e,e.right=t,t.parent=e}},p.prototype.getFirstEntry=function(){var t=this.root_;if(null!=t)for(;null!=t.left;)t=t.left;return t},p.successor=function(t){if(null===t)return null;if(null!==t.right){for(var e=t.right;null!==e.left;)e=e.left;return e}for(var n=t.parent,i=t;null!==n&&i===n.right;)i=n,n=n.parent;return n},p.prototype.size=function(){return this.size_};var At=function(){};At.prototype.interfaces_=function(){return[]},At.prototype.getClass=function(){return At},h.prototype=new o,(f.prototype=new h).contains=function(t){for(var e=0,n=this.array_.length;e<n;e++){if(0===this.array_[e].compareTo(t))return!0}return!1},f.prototype.add=function(t){if(this.contains(t))return!1;for(var e=0,n=this.array_.length;e<n;e++){if(1===this.array_[e].compareTo(t))return this.array_.splice(e,0,t),!0}return this.array_.push(t),!0},f.prototype.addAll=function(t){for(var e=t.iterator();e.hasNext();)this.add(e.next());return!0},f.prototype.remove=function(t){throw new r},f.prototype.size=function(){return this.array_.length},f.prototype.isEmpty=function(){return 0===this.array_.length},f.prototype.toArray=function(){for(var t=[],e=0,n=this.array_.length;e<n;e++)t.push(this.array_[e]);return t},f.prototype.iterator=function(){return new Ft(this)};var Ft=function(t){this.treeSet_=t,this.position_=0};Ft.prototype.next=function(){if(this.position_===this.treeSet_.size())throw new i;return this.treeSet_.array_[this.position_++]},Ft.prototype.hasNext=function(){return this.position_<this.treeSet_.size()},Ft.prototype.remove=function(){throw new r};var Gt=function(){};Gt.sort=function(){var t,e,n,i,r=arguments[0];if(1===arguments.length)i=function(t,e){return t.compareTo(e)},r.sort(i);else if(2===arguments.length)n=arguments[1],i=function(t,e){return n.compare(t,e)},r.sort(i);else if(3===arguments.length){(e=r.slice(arguments[1],arguments[2])).sort();var o=r.slice(0,arguments[1]).concat(e,r.slice(arguments[2],r.length));for(r.splice(0,r.length),t=0;t<o.length;t++)r.push(o[t])}else if(4===arguments.length)for(e=r.slice(arguments[1],arguments[2]),n=arguments[3],i=function(t,e){return n.compare(t,e)},e.sort(i),o=r.slice(0,arguments[1]).concat(e,r.slice(arguments[2],r.length)),r.splice(0,r.length),t=0;t<o.length;t++)r.push(o[t])},Gt.asList=function(t){for(var e=new Nt,n=0,i=t.length;n<i;n++)e.add(t[n]);return e};var qt=function(){},Bt={P:{configurable:!0},L:{configurable:!0},A:{configurable:!0},FALSE:{configurable:!0},TRUE:{configurable:!0},DONTCARE:{configurable:!0},SYM_FALSE:{configurable:!0},SYM_TRUE:{configurable:!0},SYM_DONTCARE:{configurable:!0},SYM_P:{configurable:!0},SYM_L:{configurable:!0},SYM_A:{configurable:!0}};Bt.P.get=function(){return 0},Bt.L.get=function(){return 1},Bt.A.get=function(){return 2},Bt.FALSE.get=function(){return-1},Bt.TRUE.get=function(){return-2},Bt.DONTCARE.get=function(){return-3},Bt.SYM_FALSE.get=function(){return\"F\"},Bt.SYM_TRUE.get=function(){return\"T\"},Bt.SYM_DONTCARE.get=function(){return\"*\"},Bt.SYM_P.get=function(){return\"0\"},Bt.SYM_L.get=function(){return\"1\"},Bt.SYM_A.get=function(){return\"2\"},qt.prototype.interfaces_=function(){return[]},qt.prototype.getClass=function(){return qt},qt.toDimensionSymbol=function(t){switch(t){case qt.FALSE:return qt.SYM_FALSE;case qt.TRUE:return qt.SYM_TRUE;case qt.DONTCARE:return qt.SYM_DONTCARE;case qt.P:return qt.SYM_P;case qt.L:return qt.SYM_L;case qt.A:return qt.SYM_A}throw new m(\"Unknown dimension value: \"+t)},qt.toDimensionValue=function(t){switch(A.toUpperCase(t)){case qt.SYM_FALSE:return qt.FALSE;case qt.SYM_TRUE:return qt.TRUE;case qt.SYM_DONTCARE:return qt.DONTCARE;case qt.SYM_P:return qt.P;case qt.SYM_L:return qt.L;case qt.SYM_A:return qt.A}throw new m(\"Unknown dimension symbol: \"+t)},Object.defineProperties(qt,Bt);var Vt=function(){};Vt.prototype.filter=function(t){},Vt.prototype.interfaces_=function(){return[]},Vt.prototype.getClass=function(){return Vt};var Ut=function(){};Ut.prototype.filter=function(t,e){},Ut.prototype.isDone=function(){},Ut.prototype.isGeometryChanged=function(){},Ut.prototype.interfaces_=function(){return[]},Ut.prototype.getClass=function(){return Ut};var zt=function(t){function e(e,n){if(t.call(this,n),this._geometries=e||[],t.hasNullElements(this._geometries))throw new m(\"geometries must not contain null elements\")}t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e;var n={serialVersionUID:{configurable:!0}};return e.prototype.computeEnvelopeInternal=function(){for(var t=new j,e=0;e<this._geometries.length;e++)t.expandToInclude(this._geometries[e].getEnvelopeInternal());return t},e.prototype.getGeometryN=function(t){return this._geometries[t]},e.prototype.getSortIndex=function(){return t.SORTINDEX_GEOMETRYCOLLECTION},e.prototype.getCoordinates=function(){for(var t=new Array(this.getNumPoints()).fill(null),e=-1,n=0;n<this._geometries.length;n++)for(var i=this._geometries[n].getCoordinates(),r=0;r<i.length;r++)t[++e]=i[r];return t},e.prototype.getArea=function(){for(var t=0,e=0;e<this._geometries.length;e++)t+=this._geometries[e].getArea();return t},e.prototype.equalsExact=function(){if(2===arguments.length){var e=arguments[0],n=arguments[1];if(!this.isEquivalentClass(e))return!1;var i=e;if(this._geometries.length!==i._geometries.length)return!1;for(var r=0;r<this._geometries.length;r++)if(!this._geometries[r].equalsExact(i._geometries[r],n))return!1;return!0}return t.prototype.equalsExact.apply(this,arguments)},e.prototype.normalize=function(){for(var t=0;t<this._geometries.length;t++)this._geometries[t].normalize();Gt.sort(this._geometries)},e.prototype.getCoordinate=function(){return this.isEmpty()?null:this._geometries[0].getCoordinate()},e.prototype.getBoundaryDimension=function(){for(var t=qt.FALSE,e=0;e<this._geometries.length;e++)t=Math.max(t,this._geometries[e].getBoundaryDimension());return t},e.prototype.getDimension=function(){for(var t=qt.FALSE,e=0;e<this._geometries.length;e++)t=Math.max(t,this._geometries[e].getDimension());return t},e.prototype.getLength=function(){for(var t=0,e=0;e<this._geometries.length;e++)t+=this._geometries[e].getLength();return t},e.prototype.getNumPoints=function(){for(var t=0,e=0;e<this._geometries.length;e++)t+=this._geometries[e].getNumPoints();return t},e.prototype.getNumGeometries=function(){return this._geometries.length},e.prototype.reverse=function(){for(var t=this._geometries.length,e=new Array(t).fill(null),n=0;n<this._geometries.length;n++)e[n]=this._geometries[n].reverse();return this.getFactory().createGeometryCollection(e)},e.prototype.compareToSameClass=function(){if(1===arguments.length){var t=arguments[0],e=new f(Gt.asList(this._geometries)),n=new f(Gt.asList(t._geometries));return this.compare(e,n)}if(2===arguments.length){for(var i=arguments[0],r=arguments[1],o=i,s=this.getNumGeometries(),a=o.getNumGeometries(),u=0;u<s&&u<a;){var l=this.getGeometryN(u),c=o.getGeometryN(u),p=l.compareToSameClass(c,r);if(0!==p)return p;u++}return u<s?1:u<a?-1:0}},e.prototype.apply=function(){if(T(arguments[0],ft))for(var t=arguments[0],e=0;e<this._geometries.length;e++)this._geometries[e].apply(t);else if(T(arguments[0],Ut)){var n=arguments[0];if(0===this._geometries.length)return null;for(var i=0;i<this._geometries.length&&(this._geometries[i].apply(n),!n.isDone());i++);n.isGeometryChanged()&&this.geometryChanged()}else if(T(arguments[0],Vt)){var r=arguments[0];r.filter(this);for(var o=0;o<this._geometries.length;o++)this._geometries[o].apply(r)}else if(T(arguments[0],lt)){var s=arguments[0];s.filter(this);for(var a=0;a<this._geometries.length;a++)this._geometries[a].apply(s)}},e.prototype.getBoundary=function(){return this.checkNotGeometryCollection(this),et.shouldNeverReachHere(),null},e.prototype.clone=function(){var e=t.prototype.clone.call(this);e._geometries=new Array(this._geometries.length).fill(null);for(var n=0;n<this._geometries.length;n++)e._geometries[n]=this._geometries[n].clone();return e},e.prototype.getGeometryType=function(){return\"GeometryCollection\"},e.prototype.copy=function(){for(var t=new Array(this._geometries.length).fill(null),n=0;n<t.length;n++)t[n]=this._geometries[n].copy();return new e(t,this._factory)},e.prototype.isEmpty=function(){for(var t=0;t<this._geometries.length;t++)if(!this._geometries[t].isEmpty())return!1;return!0},e.prototype.interfaces_=function(){return[]},e.prototype.getClass=function(){return e},n.serialVersionUID.get=function(){return-0x4f07bcb1f857d800},Object.defineProperties(e,n),e}(ct),Xt=function(t){function e(){t.apply(this,arguments)}t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e;var n={serialVersionUID:{configurable:!0}};return e.prototype.getSortIndex=function(){return ct.SORTINDEX_MULTILINESTRING},e.prototype.equalsExact=function(){if(2===arguments.length){var e=arguments[0],n=arguments[1];return!!this.isEquivalentClass(e)&&t.prototype.equalsExact.call(this,e,n)}return t.prototype.equalsExact.apply(this,arguments)},e.prototype.getBoundaryDimension=function(){return this.isClosed()?qt.FALSE:0},e.prototype.isClosed=function(){if(this.isEmpty())return!1;for(var t=0;t<this._geometries.length;t++)if(!this._geometries[t].isClosed())return!1;return!0},e.prototype.getDimension=function(){return 1},e.prototype.reverse=function(){for(var t=this._geometries.length,e=new Array(t).fill(null),n=0;n<this._geometries.length;n++)e[t-1-n]=this._geometries[n].reverse();return this.getFactory().createMultiLineString(e)},e.prototype.getBoundary=function(){return new Yt(this).getBoundary()},e.prototype.getGeometryType=function(){return\"MultiLineString\"},e.prototype.copy=function(){for(var t=new Array(this._geometries.length).fill(null),n=0;n<t.length;n++)t[n]=this._geometries[n].copy();return new e(t,this._factory)},e.prototype.interfaces_=function(){return[At]},e.prototype.getClass=function(){return e},n.serialVersionUID.get=function(){return 0x7155d2ab4afa8000},Object.defineProperties(e,n),e}(zt),Yt=function(){if(this._geom=null,this._geomFact=null,this._bnRule=null,this._endpointMap=null,1===arguments.length){var t=arguments[0],e=gt.MOD2_BOUNDARY_RULE;this._geom=t,this._geomFact=t.getFactory(),this._bnRule=e}else if(2===arguments.length){var n=arguments[0],i=arguments[1];this._geom=n,this._geomFact=n.getFactory(),this._bnRule=i}};Yt.prototype.boundaryMultiLineString=function(t){if(this._geom.isEmpty())return this.getEmptyMultiPoint();var e=this.computeBoundaryCoordinates(t);return 1===e.length?this._geomFact.createPoint(e[0]):this._geomFact.createMultiPointFromCoords(e)},Yt.prototype.getBoundary=function(){return this._geom instanceof Kt?this.boundaryLineString(this._geom):this._geom instanceof Xt?this.boundaryMultiLineString(this._geom):this._geom.getBoundary()},Yt.prototype.boundaryLineString=function(t){if(this._geom.isEmpty())return this.getEmptyMultiPoint();if(t.isClosed()){return this._bnRule.isInBoundary(2)?t.getStartPoint():this._geomFact.createMultiPoint()}return this._geomFact.createMultiPoint([t.getStartPoint(),t.getEndPoint()])},Yt.prototype.getEmptyMultiPoint=function(){return this._geomFact.createMultiPoint()},Yt.prototype.computeBoundaryCoordinates=function(t){var e=new Nt;this._endpointMap=new p;for(var n=0;n<t.getNumGeometries();n++){var i=t.getGeometryN(n);0!==i.getNumPoints()&&(this.addEndpoint(i.getCoordinateN(0)),this.addEndpoint(i.getCoordinateN(i.getNumPoints()-1)))}for(var r=this._endpointMap.entrySet().iterator();r.hasNext();){var o=r.next(),s=o.getValue().count;this._bnRule.isInBoundary(s)&&e.add(o.getKey())}return Lt.toCoordinateArray(e)},Yt.prototype.addEndpoint=function(t){var e=this._endpointMap.get(t);null===e&&(e=new kt,this._endpointMap.put(t,e)),e.count++},Yt.prototype.interfaces_=function(){return[]},Yt.prototype.getClass=function(){return Yt},Yt.getBoundary=function(){if(1===arguments.length){var t=arguments[0];return new Yt(t).getBoundary()}if(2===arguments.length){var e=arguments[0],n=arguments[1];return new Yt(e,n).getBoundary()}};var kt=function(){this.count=null};kt.prototype.interfaces_=function(){return[]},kt.prototype.getClass=function(){return kt};var jt=function(){},Ht={NEWLINE:{configurable:!0},SIMPLE_ORDINATE_FORMAT:{configurable:!0}};jt.prototype.interfaces_=function(){return[]},jt.prototype.getClass=function(){return jt},jt.chars=function(t,e){for(var n=new Array(e).fill(null),i=0;i<e;i++)n[i]=t;return String(n)},jt.getStackTrace=function(){if(1===arguments.length){var t=arguments[0],e=new function(){},n=new function(){}(e);return t.printStackTrace(n),e.toString()}if(2===arguments.length){for(var i=arguments[0],r=arguments[1],o=\"\",s=new function(){}(new function(){}(jt.getStackTrace(i))),a=0;a<r;a++)try{o+=s.readLine()+jt.NEWLINE}catch(t){if(!(t instanceof g))throw t;et.shouldNeverReachHere()}return o}},jt.split=function(t,e){for(var n=e.length,i=new Nt,r=\"\"+t,o=r.indexOf(e);o>=0;){var s=r.substring(0,o);i.add(s),o=(r=r.substring(o+n)).indexOf(e)}r.length>0&&i.add(r);for(var a=new Array(i.size()).fill(null),u=0;u<a.length;u++)a[u]=i.get(u);return a},jt.toString=function(){if(1===arguments.length){var t=arguments[0];return jt.SIMPLE_ORDINATE_FORMAT.format(t)}},jt.spaces=function(t){return jt.chars(\" \",t)},Ht.NEWLINE.get=function(){return Y.getProperty(\"line.separator\")},Ht.SIMPLE_ORDINATE_FORMAT.get=function(){return new function(){}(\"0.#\")},Object.defineProperties(jt,Ht);var Wt=function(){};Wt.prototype.interfaces_=function(){return[]},Wt.prototype.getClass=function(){return Wt},Wt.copyCoord=function(t,e,n,i){for(var r=Math.min(t.getDimension(),n.getDimension()),o=0;o<r;o++)n.setOrdinate(i,o,t.getOrdinate(e,o))},Wt.isRing=function(t){var e=t.size();return 0===e||!(e<=3)&&(t.getOrdinate(0,V.X)===t.getOrdinate(e-1,V.X)&&t.getOrdinate(0,V.Y)===t.getOrdinate(e-1,V.Y))},Wt.isEqual=function(t,e){var n=t.size();if(n!==e.size())return!1;for(var i=Math.min(t.getDimension(),e.getDimension()),r=0;r<n;r++)for(var o=0;o<i;o++){var s=t.getOrdinate(r,o),a=e.getOrdinate(r,o);if(t.getOrdinate(r,o)!==e.getOrdinate(r,o)&&(!v.isNaN(s)||!v.isNaN(a)))return!1}return!0},Wt.extend=function(t,e,n){var i=t.create(n,e.getDimension()),r=e.size();if(Wt.copy(e,0,i,0,r),r>0)for(var o=r;o<n;o++)Wt.copy(e,r-1,i,o,1);return i},Wt.reverse=function(t){for(var e=t.size()-1,n=Math.trunc(e/2),i=0;i<=n;i++)Wt.swap(t,i,e-i)},Wt.swap=function(t,e,n){if(e===n)return null;for(var i=0;i<t.getDimension();i++){var r=t.getOrdinate(e,i);t.setOrdinate(e,i,t.getOrdinate(n,i)),t.setOrdinate(n,i,r)}},Wt.copy=function(t,e,n,i,r){for(var o=0;o<r;o++)Wt.copyCoord(t,e+o,n,i+o)},Wt.toString=function(){if(1===arguments.length){var t=arguments[0],e=t.size();if(0===e)return\"()\";var n=t.getDimension(),i=new D;i.append(\"(\");for(var r=0;r<e;r++){r>0&&i.append(\" \");for(var o=0;o<n;o++)o>0&&i.append(\",\"),i.append(jt.toString(t.getOrdinate(r,o)))}return i.append(\")\"),i.toString()}},Wt.ensureValidRing=function(t,e){var n=e.size();if(0===n)return e;if(n<=3)return Wt.createClosedRing(t,e,4);return e.getOrdinate(0,V.X)===e.getOrdinate(n-1,V.X)&&e.getOrdinate(0,V.Y)===e.getOrdinate(n-1,V.Y)?e:Wt.createClosedRing(t,e,n+1)},Wt.createClosedRing=function(t,e,n){var i=t.create(n,e.getDimension()),r=e.size();Wt.copy(e,0,i,0,r);for(var o=r;o<n;o++)Wt.copy(e,0,i,o,1);return i};var Kt=function(t){function e(e,n){t.call(this,n),this._points=null,this.init(e)}t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e;var n={serialVersionUID:{configurable:!0}};return e.prototype.computeEnvelopeInternal=function(){return this.isEmpty()?new j:this._points.expandEnvelope(new j)},e.prototype.isRing=function(){return this.isClosed()&&this.isSimple()},e.prototype.getSortIndex=function(){return t.SORTINDEX_LINESTRING},e.prototype.getCoordinates=function(){return this._points.toCoordinateArray()},e.prototype.equalsExact=function(){if(2===arguments.length){var e=arguments[0],n=arguments[1];if(!this.isEquivalentClass(e))return!1;var i=e;if(this._points.size()!==i._points.size())return!1;for(var r=0;r<this._points.size();r++)if(!this.equal(this._points.getCoordinate(r),i._points.getCoordinate(r),n))return!1;return!0}return t.prototype.equalsExact.apply(this,arguments)},e.prototype.normalize=function(){for(var t=0;t<Math.trunc(this._points.size()/2);t++){var e=this._points.size()-1-t;if(!this._points.getCoordinate(t).equals(this._points.getCoordinate(e)))return this._points.getCoordinate(t).compareTo(this._points.getCoordinate(e))>0&&Wt.reverse(this._points),null}},e.prototype.getCoordinate=function(){return this.isEmpty()?null:this._points.getCoordinate(0)},e.prototype.getBoundaryDimension=function(){return this.isClosed()?qt.FALSE:0},e.prototype.isClosed=function(){return!this.isEmpty()&&this.getCoordinateN(0).equals2D(this.getCoordinateN(this.getNumPoints()-1))},e.prototype.getEndPoint=function(){return this.isEmpty()?null:this.getPointN(this.getNumPoints()-1)},e.prototype.getDimension=function(){return 1},e.prototype.getLength=function(){return at.computeLength(this._points)},e.prototype.getNumPoints=function(){return this._points.size()},e.prototype.reverse=function(){var t=this._points.copy();Wt.reverse(t);return this.getFactory().createLineString(t)},e.prototype.compareToSameClass=function(){if(1===arguments.length){for(var t=arguments[0],e=0,n=0;e<this._points.size()&&n<t._points.size();){var i=this._points.getCoordinate(e).compareTo(t._points.getCoordinate(n));if(0!==i)return i;e++,n++}return e<this._points.size()?1:n<t._points.size()?-1:0}if(2===arguments.length){var r=arguments[0];return arguments[1].compare(this._points,r._points)}},e.prototype.apply=function(){if(T(arguments[0],ft))for(var t=arguments[0],e=0;e<this._points.size();e++)t.filter(this._points.getCoordinate(e));else if(T(arguments[0],Ut)){var n=arguments[0];if(0===this._points.size())return null;for(var i=0;i<this._points.size()&&(n.filter(this._points,i),!n.isDone());i++);n.isGeometryChanged()&&this.geometryChanged()}else if(T(arguments[0],Vt)){arguments[0].filter(this)}else if(T(arguments[0],lt)){arguments[0].filter(this)}},e.prototype.getBoundary=function(){return new Yt(this).getBoundary()},e.prototype.isEquivalentClass=function(t){return t instanceof e},e.prototype.clone=function(){var e=t.prototype.clone.call(this);return e._points=this._points.clone(),e},e.prototype.getCoordinateN=function(t){return this._points.getCoordinate(t)},e.prototype.getGeometryType=function(){return\"LineString\"},e.prototype.copy=function(){return new e(this._points.copy(),this._factory)},e.prototype.getCoordinateSequence=function(){return this._points},e.prototype.isEmpty=function(){return 0===this._points.size()},e.prototype.init=function(t){if(null===t&&(t=this.getFactory().getCoordinateSequenceFactory().create([])),1===t.size())throw new m(\"Invalid number of points in LineString (found \"+t.size()+\" - must be 0 or >= 2)\");this._points=t},e.prototype.isCoordinate=function(t){for(var e=0;e<this._points.size();e++)if(this._points.getCoordinate(e).equals(t))return!0;return!1},e.prototype.getStartPoint=function(){return this.isEmpty()?null:this.getPointN(0)},e.prototype.getPointN=function(t){return this.getFactory().createPoint(this._points.getCoordinate(t))},e.prototype.interfaces_=function(){return[At]},e.prototype.getClass=function(){return e},n.serialVersionUID.get=function(){return 0x2b2b51ba435c8e00},Object.defineProperties(e,n),e}(ct),Jt=function(){};Jt.prototype.interfaces_=function(){return[]},Jt.prototype.getClass=function(){return Jt};var Qt=function(t){function e(e,n){t.call(this,n),this._coordinates=e||null,this.init(this._coordinates)}t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e;var n={serialVersionUID:{configurable:!0}};return e.prototype.computeEnvelopeInternal=function(){if(this.isEmpty())return new j;var t=new j;return t.expandToInclude(this._coordinates.getX(0),this._coordinates.getY(0)),t},e.prototype.getSortIndex=function(){return t.SORTINDEX_POINT},e.prototype.getCoordinates=function(){return this.isEmpty()?[]:[this.getCoordinate()]},e.prototype.equalsExact=function(){if(2===arguments.length){var e=arguments[0],n=arguments[1];return!!this.isEquivalentClass(e)&&(!(!this.isEmpty()||!e.isEmpty())||this.isEmpty()===e.isEmpty()&&this.equal(e.getCoordinate(),this.getCoordinate(),n))}return t.prototype.equalsExact.apply(this,arguments)},e.prototype.normalize=function(){},e.prototype.getCoordinate=function(){return 0!==this._coordinates.size()?this._coordinates.getCoordinate(0):null},e.prototype.getBoundaryDimension=function(){return qt.FALSE},e.prototype.getDimension=function(){return 0},e.prototype.getNumPoints=function(){return this.isEmpty()?0:1},e.prototype.reverse=function(){return this.copy()},e.prototype.getX=function(){if(null===this.getCoordinate())throw new Error(\"getX called on empty Point\");return this.getCoordinate().x},e.prototype.compareToSameClass=function(){if(1===arguments.length){var t=arguments[0];return this.getCoordinate().compareTo(t.getCoordinate())}if(2===arguments.length){var e=arguments[0];return arguments[1].compare(this._coordinates,e._coordinates)}},e.prototype.apply=function(){if(T(arguments[0],ft)){var t=arguments[0];if(this.isEmpty())return null;t.filter(this.getCoordinate())}else if(T(arguments[0],Ut)){var e=arguments[0];if(this.isEmpty())return null;e.filter(this._coordinates,0),e.isGeometryChanged()&&this.geometryChanged()}else if(T(arguments[0],Vt)){arguments[0].filter(this)}else if(T(arguments[0],lt)){arguments[0].filter(this)}},e.prototype.getBoundary=function(){return this.getFactory().createGeometryCollection(null)},e.prototype.clone=function(){var e=t.prototype.clone.call(this);return e._coordinates=this._coordinates.clone(),e},e.prototype.getGeometryType=function(){return\"Point\"},e.prototype.copy=function(){return new e(this._coordinates.copy(),this._factory)},e.prototype.getCoordinateSequence=function(){return this._coordinates},e.prototype.getY=function(){if(null===this.getCoordinate())throw new Error(\"getY called on empty Point\");return this.getCoordinate().y},e.prototype.isEmpty=function(){return 0===this._coordinates.size()},e.prototype.init=function(t){null===t&&(t=this.getFactory().getCoordinateSequenceFactory().create([])),et.isTrue(t.size()<=1),this._coordinates=t},e.prototype.isSimple=function(){return!0},e.prototype.interfaces_=function(){return[Jt]},e.prototype.getClass=function(){return e},n.serialVersionUID.get=function(){return 0x44077bad161cbc00},Object.defineProperties(e,n),e}(ct),Zt=function(){};Zt.prototype.interfaces_=function(){return[]},Zt.prototype.getClass=function(){return Zt};var $t=function(t){function e(e,n,i){if(t.call(this,i),this._shell=null,this._holes=null,null===e&&(e=this.getFactory().createLinearRing()),null===n&&(n=[]),t.hasNullElements(n))throw new m(\"holes must not contain null elements\");if(e.isEmpty()&&t.hasNonEmptyElements(n))throw new m(\"shell is empty but holes are not\");this._shell=e,this._holes=n}t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e;var n={serialVersionUID:{configurable:!0}};return e.prototype.computeEnvelopeInternal=function(){return this._shell.getEnvelopeInternal()},e.prototype.getSortIndex=function(){return t.SORTINDEX_POLYGON},e.prototype.getCoordinates=function(){if(this.isEmpty())return[];for(var t=new Array(this.getNumPoints()).fill(null),e=-1,n=this._shell.getCoordinates(),i=0;i<n.length;i++)t[++e]=n[i];for(var r=0;r<this._holes.length;r++)for(var o=this._holes[r].getCoordinates(),s=0;s<o.length;s++)t[++e]=o[s];return t},e.prototype.getArea=function(){var t=0;t+=Math.abs(at.signedArea(this._shell.getCoordinateSequence()));for(var e=0;e<this._holes.length;e++)t-=Math.abs(at.signedArea(this._holes[e].getCoordinateSequence()));return t},e.prototype.isRectangle=function(){if(0!==this.getNumInteriorRing())return!1;if(null===this._shell)return!1;if(5!==this._shell.getNumPoints())return!1;for(var t=this._shell.getCoordinateSequence(),e=this.getEnvelopeInternal(),n=0;n<5;n++){var i=t.getX(n);if(i!==e.getMinX()&&i!==e.getMaxX())return!1;var r=t.getY(n);if(r!==e.getMinY()&&r!==e.getMaxY())return!1}for(var o=t.getX(0),s=t.getY(0),a=1;a<=4;a++){var u=t.getX(a),l=t.getY(a);if(u!==o===(l!==s))return!1;o=u,s=l}return!0},e.prototype.equalsExact=function(){if(2===arguments.length){var e=arguments[0],n=arguments[1];if(!this.isEquivalentClass(e))return!1;var i=e,r=this._shell,o=i._shell;if(!r.equalsExact(o,n))return!1;if(this._holes.length!==i._holes.length)return!1;for(var s=0;s<this._holes.length;s++)if(!this._holes[s].equalsExact(i._holes[s],n))return!1;return!0}return t.prototype.equalsExact.apply(this,arguments)},e.prototype.normalize=function(){if(0===arguments.length){this.normalize(this._shell,!0);for(var t=0;t<this._holes.length;t++)this.normalize(this._holes[t],!1);Gt.sort(this._holes)}else if(2===arguments.length){var e=arguments[0],n=arguments[1];if(e.isEmpty())return null;var i=new Array(e.getCoordinates().length-1).fill(null);Y.arraycopy(e.getCoordinates(),0,i,0,i.length);var r=Lt.minCoordinate(e.getCoordinates());Lt.scroll(i,r),Y.arraycopy(i,0,e.getCoordinates(),0,i.length),e.getCoordinates()[i.length]=i[0],at.isCCW(e.getCoordinates())===n&&Lt.reverse(e.getCoordinates())}},e.prototype.getCoordinate=function(){return this._shell.getCoordinate()},e.prototype.getNumInteriorRing=function(){return this._holes.length},e.prototype.getBoundaryDimension=function(){return 1},e.prototype.getDimension=function(){return 2},e.prototype.getLength=function(){var t=0;t+=this._shell.getLength();for(var e=0;e<this._holes.length;e++)t+=this._holes[e].getLength();return t},e.prototype.getNumPoints=function(){for(var t=this._shell.getNumPoints(),e=0;e<this._holes.length;e++)t+=this._holes[e].getNumPoints();return t},e.prototype.reverse=function(){var t=this.copy();t._shell=this._shell.copy().reverse(),t._holes=new Array(this._holes.length).fill(null);for(var e=0;e<this._holes.length;e++)t._holes[e]=this._holes[e].copy().reverse();return t},e.prototype.convexHull=function(){return this.getExteriorRing().convexHull()},e.prototype.compareToSameClass=function(){if(1===arguments.length){var t=arguments[0],e=this._shell,n=t._shell;return e.compareToSameClass(n)}if(2===arguments.length){var i=arguments[0],r=arguments[1],o=i,s=this._shell,a=o._shell,u=s.compareToSameClass(a,r);if(0!==u)return u;for(var l=this.getNumInteriorRing(),c=o.getNumInteriorRing(),p=0;p<l&&p<c;){var h=this.getInteriorRingN(p),f=o.getInteriorRingN(p),g=h.compareToSameClass(f,r);if(0!==g)return g;p++}return p<l?1:p<c?-1:0}},e.prototype.apply=function(t){if(T(t,ft)){this._shell.apply(t);for(var e=0;e<this._holes.length;e++)this._holes[e].apply(t)}else if(T(t,Ut)){if(this._shell.apply(t),!t.isDone())for(var n=0;n<this._holes.length&&(this._holes[n].apply(t),!t.isDone());n++);t.isGeometryChanged()&&this.geometryChanged()}else if(T(t,Vt))t.filter(this);else if(T(t,lt)){t.filter(this),this._shell.apply(t);for(var i=0;i<this._holes.length;i++)this._holes[i].apply(t)}},e.prototype.getBoundary=function(){if(this.isEmpty())return this.getFactory().createMultiLineString();var t=new Array(this._holes.length+1).fill(null);t[0]=this._shell;for(var e=0;e<this._holes.length;e++)t[e+1]=this._holes[e];return t.length<=1?this.getFactory().createLinearRing(t[0].getCoordinateSequence()):this.getFactory().createMultiLineString(t)},e.prototype.clone=function(){var e=t.prototype.clone.call(this);e._shell=this._shell.clone(),e._holes=new Array(this._holes.length).fill(null);for(var n=0;n<this._holes.length;n++)e._holes[n]=this._holes[n].clone();return e},e.prototype.getGeometryType=function(){return\"Polygon\"},e.prototype.copy=function(){for(var t=this._shell.copy(),n=new Array(this._holes.length).fill(null),i=0;i<n.length;i++)n[i]=this._holes[i].copy();return new e(t,n,this._factory)},e.prototype.getExteriorRing=function(){return this._shell},e.prototype.isEmpty=function(){return this._shell.isEmpty()},e.prototype.getInteriorRingN=function(t){return this._holes[t]},e.prototype.interfaces_=function(){return[Zt]},e.prototype.getClass=function(){return e},n.serialVersionUID.get=function(){return-0x307ffefd8dc97200},Object.defineProperties(e,n),e}(ct),te=function(t){function e(){t.apply(this,arguments)}t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e;var n={serialVersionUID:{configurable:!0}};return e.prototype.getSortIndex=function(){return ct.SORTINDEX_MULTIPOINT},e.prototype.isValid=function(){return!0},e.prototype.equalsExact=function(){if(2===arguments.length){var e=arguments[0],n=arguments[1];return!!this.isEquivalentClass(e)&&t.prototype.equalsExact.call(this,e,n)}return t.prototype.equalsExact.apply(this,arguments)},e.prototype.getCoordinate=function(){if(1===arguments.length){var e=arguments[0];return this._geometries[e].getCoordinate()}return t.prototype.getCoordinate.apply(this,arguments)},e.prototype.getBoundaryDimension=function(){return qt.FALSE},e.prototype.getDimension=function(){return 0},e.prototype.getBoundary=function(){return this.getFactory().createGeometryCollection(null)},e.prototype.getGeometryType=function(){return\"MultiPoint\"},e.prototype.copy=function(){for(var t=new Array(this._geometries.length).fill(null),n=0;n<t.length;n++)t[n]=this._geometries[n].copy();return new e(t,this._factory)},e.prototype.interfaces_=function(){return[Jt]},e.prototype.getClass=function(){return e},n.serialVersionUID.get=function(){return-0x6fb1ed4162e0fc00},Object.defineProperties(e,n),e}(zt),ee=function(t){function e(e,n){e instanceof C&&n instanceof _e&&(e=n.getCoordinateSequenceFactory().create(e)),t.call(this,e,n),this.validateConstruction()}t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e;var n={MINIMUM_VALID_SIZE:{configurable:!0},serialVersionUID:{configurable:!0}};return e.prototype.getSortIndex=function(){return ct.SORTINDEX_LINEARRING},e.prototype.getBoundaryDimension=function(){return qt.FALSE},e.prototype.isClosed=function(){return!!this.isEmpty()||t.prototype.isClosed.call(this)},e.prototype.reverse=function(){var t=this._points.copy();Wt.reverse(t);return this.getFactory().createLinearRing(t)},e.prototype.validateConstruction=function(){if(!this.isEmpty()&&!t.prototype.isClosed.call(this))throw new m(\"Points of LinearRing do not form a closed linestring\");if(this.getCoordinateSequence().size()>=1&&this.getCoordinateSequence().size()<e.MINIMUM_VALID_SIZE)throw new m(\"Invalid number of points in LinearRing (found \"+this.getCoordinateSequence().size()+\" - must be 0 or >= 4)\")},e.prototype.getGeometryType=function(){return\"LinearRing\"},e.prototype.copy=function(){return new e(this._points.copy(),this._factory)},e.prototype.interfaces_=function(){return[]},e.prototype.getClass=function(){return e},n.MINIMUM_VALID_SIZE.get=function(){return 4},n.serialVersionUID.get=function(){return-0x3b229e262367a600},Object.defineProperties(e,n),e}(Kt),ne=function(t){function e(){t.apply(this,arguments)}t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e;var n={serialVersionUID:{configurable:!0}};return e.prototype.getSortIndex=function(){return ct.SORTINDEX_MULTIPOLYGON},e.prototype.equalsExact=function(){if(2===arguments.length){var e=arguments[0],n=arguments[1];return!!this.isEquivalentClass(e)&&t.prototype.equalsExact.call(this,e,n)}return t.prototype.equalsExact.apply(this,arguments)},e.prototype.getBoundaryDimension=function(){return 1},e.prototype.getDimension=function(){return 2},e.prototype.reverse=function(){for(var t=this._geometries.length,e=new Array(t).fill(null),n=0;n<this._geometries.length;n++)e[n]=this._geometries[n].reverse();return this.getFactory().createMultiPolygon(e)},e.prototype.getBoundary=function(){if(this.isEmpty())return this.getFactory().createMultiLineString();for(var t=new Nt,e=0;e<this._geometries.length;e++)for(var n=this._geometries[e].getBoundary(),i=0;i<n.getNumGeometries();i++)t.add(n.getGeometryN(i));var r=new Array(t.size()).fill(null);return this.getFactory().createMultiLineString(t.toArray(r))},e.prototype.getGeometryType=function(){return\"MultiPolygon\"},e.prototype.copy=function(){for(var t=new Array(this._geometries.length).fill(null),n=0;n<t.length;n++)t[n]=this._geometries[n].copy();return new e(t,this._factory)},e.prototype.interfaces_=function(){return[Zt]},e.prototype.getClass=function(){return e},n.serialVersionUID.get=function(){return-0x7a5aa1369171980},Object.defineProperties(e,n),e}(zt),ie=function(t){this._factory=t||null,this._isUserDataCopied=!1},re={NoOpGeometryOperation:{configurable:!0},CoordinateOperation:{configurable:!0},CoordinateSequenceOperation:{configurable:!0}};ie.prototype.setCopyUserData=function(t){this._isUserDataCopied=t},ie.prototype.edit=function(t,e){if(null===t)return null;var n=this.editInternal(t,e);return this._isUserDataCopied&&n.setUserData(t.getUserData()),n},ie.prototype.editInternal=function(t,e){return null===this._factory&&(this._factory=t.getFactory()),t instanceof zt?this.editGeometryCollection(t,e):t instanceof $t?this.editPolygon(t,e):t instanceof Qt?e.edit(t,this._factory):t instanceof Kt?e.edit(t,this._factory):(et.shouldNeverReachHere(\"Unsupported Geometry class: \"+t.getClass().getName()),null)},ie.prototype.editGeometryCollection=function(t,e){for(var n=e.edit(t,this._factory),i=new Nt,r=0;r<n.getNumGeometries();r++){var o=this.edit(n.getGeometryN(r),e);null===o||o.isEmpty()||i.add(o)}return n.getClass()===te?this._factory.createMultiPoint(i.toArray([])):n.getClass()===Xt?this._factory.createMultiLineString(i.toArray([])):n.getClass()===ne?this._factory.createMultiPolygon(i.toArray([])):this._factory.createGeometryCollection(i.toArray([]))},ie.prototype.editPolygon=function(t,e){var n=e.edit(t,this._factory);if(null===n&&(n=this._factory.createPolygon(null)),n.isEmpty())return n;var i=this.edit(n.getExteriorRing(),e);if(null===i||i.isEmpty())return this._factory.createPolygon();for(var r=new Nt,o=0;o<n.getNumInteriorRing();o++){var s=this.edit(n.getInteriorRingN(o),e);null===s||s.isEmpty()||r.add(s)}return this._factory.createPolygon(i,r.toArray([]))},ie.prototype.interfaces_=function(){return[]},ie.prototype.getClass=function(){return ie},ie.GeometryEditorOperation=function(){},re.NoOpGeometryOperation.get=function(){return oe},re.CoordinateOperation.get=function(){return se},re.CoordinateSequenceOperation.get=function(){return ae},Object.defineProperties(ie,re);var oe=function(){};oe.prototype.edit=function(t,e){return t},oe.prototype.interfaces_=function(){return[ie.GeometryEditorOperation]},oe.prototype.getClass=function(){return oe};var se=function(){};se.prototype.edit=function(t,e){var n=this.editCoordinates(t.getCoordinates(),t);return null===n?t:t instanceof ee?e.createLinearRing(n):t instanceof Kt?e.createLineString(n):t instanceof Qt?n.length>0?e.createPoint(n[0]):e.createPoint():t},se.prototype.interfaces_=function(){return[ie.GeometryEditorOperation]},se.prototype.getClass=function(){return se};var ae=function(){};ae.prototype.edit=function(t,e){return t instanceof ee?e.createLinearRing(this.edit(t.getCoordinateSequence(),t)):t instanceof Kt?e.createLineString(this.edit(t.getCoordinateSequence(),t)):t instanceof Qt?e.createPoint(this.edit(t.getCoordinateSequence(),t)):t},ae.prototype.interfaces_=function(){return[ie.GeometryEditorOperation]},ae.prototype.getClass=function(){return ae};var ue=function(){if(this._dimension=3,this._coordinates=null,1===arguments.length){if(arguments[0]instanceof Array)this._coordinates=arguments[0],this._dimension=3;else if(Number.isInteger(arguments[0])){var t=arguments[0];this._coordinates=new Array(t).fill(null);for(var e=0;e<t;e++)this._coordinates[e]=new C}else if(T(arguments[0],V)){var n=arguments[0];if(null===n)return this._coordinates=new Array(0).fill(null),null;this._dimension=n.getDimension(),this._coordinates=new Array(n.size()).fill(null);for(var i=0;i<this._coordinates.length;i++)this._coordinates[i]=n.getCoordinateCopy(i)}}else if(2===arguments.length)if(arguments[0]instanceof Array&&Number.isInteger(arguments[1])){var r=arguments[0],o=arguments[1];this._coordinates=r,this._dimension=o,null===r&&(this._coordinates=new Array(0).fill(null))}else if(Number.isInteger(arguments[0])&&Number.isInteger(arguments[1])){var s=arguments[0],a=arguments[1];this._coordinates=new Array(s).fill(null),this._dimension=a;for(var u=0;u<s;u++)this._coordinates[u]=new C}},le={serialVersionUID:{configurable:!0}};ue.prototype.setOrdinate=function(t,e,n){switch(e){case V.X:this._coordinates[t].x=n;break;case V.Y:this._coordinates[t].y=n;break;case V.Z:this._coordinates[t].z=n;break;default:throw new m(\"invalid ordinateIndex\")}},ue.prototype.size=function(){return this._coordinates.length},ue.prototype.getOrdinate=function(t,e){switch(e){case V.X:return this._coordinates[t].x;case V.Y:return this._coordinates[t].y;case V.Z:return this._coordinates[t].z}return v.NaN},ue.prototype.getCoordinate=function(){if(1===arguments.length){var t=arguments[0];return this._coordinates[t]}if(2===arguments.length){var e=arguments[0],n=arguments[1];n.x=this._coordinates[e].x,n.y=this._coordinates[e].y,n.z=this._coordinates[e].z}},ue.prototype.getCoordinateCopy=function(t){return new C(this._coordinates[t])},ue.prototype.getDimension=function(){return this._dimension},ue.prototype.getX=function(t){return this._coordinates[t].x},ue.prototype.clone=function(){for(var t=new Array(this.size()).fill(null),e=0;e<this._coordinates.length;e++)t[e]=this._coordinates[e].clone();return new ue(t,this._dimension)},ue.prototype.expandEnvelope=function(t){for(var e=0;e<this._coordinates.length;e++)t.expandToInclude(this._coordinates[e]);return t},ue.prototype.copy=function(){for(var t=new Array(this.size()).fill(null),e=0;e<this._coordinates.length;e++)t[e]=this._coordinates[e].copy();return new ue(t,this._dimension)},ue.prototype.toString=function(){if(this._coordinates.length>0){var t=new D(17*this._coordinates.length);t.append(\"(\"),t.append(this._coordinates[0]);for(var e=1;e<this._coordinates.length;e++)t.append(\", \"),t.append(this._coordinates[e]);return t.append(\")\"),t.toString()}return\"()\"},ue.prototype.getY=function(t){return this._coordinates[t].y},ue.prototype.toCoordinateArray=function(){return this._coordinates},ue.prototype.interfaces_=function(){return[V,e]},ue.prototype.getClass=function(){return ue},le.serialVersionUID.get=function(){return-0xcb44a778db18e00},Object.defineProperties(ue,le);var ce=function(){},pe={serialVersionUID:{configurable:!0},instanceObject:{configurable:!0}};ce.prototype.readResolve=function(){return ce.instance()},ce.prototype.create=function(){if(1===arguments.length){if(arguments[0]instanceof Array){var t=arguments[0];return new ue(t)}if(T(arguments[0],V)){var e=arguments[0];return new ue(e)}}else if(2===arguments.length){var n=arguments[0],i=arguments[1];return i>3&&(i=3),i<2?new ue(n):new ue(n,i)}},ce.prototype.interfaces_=function(){return[b,e]},ce.prototype.getClass=function(){return ce},ce.instance=function(){return ce.instanceObject},pe.serialVersionUID.get=function(){return-0x38e49fa6cf6f2e00},pe.instanceObject.get=function(){return new ce},Object.defineProperties(ce,pe);var he=function(t){function e(){t.call(this),this.map_=new Map}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.get=function(t){return this.map_.get(t)||null},e.prototype.put=function(t,e){return this.map_.set(t,e),e},e.prototype.values=function(){for(var t=new Nt,e=this.map_.values(),n=e.next();!n.done;)t.add(n.value),n=e.next();return t},e.prototype.entrySet=function(){var t=new Pt;return this.map_.entries().forEach(function(e){return t.add(e)}),t},e.prototype.size=function(){return this.map_.size()},e}(Tt),fe=function t(){if(this._modelType=null,this._scale=null,0===arguments.length)this._modelType=t.FLOATING;else if(1===arguments.length)if(arguments[0]instanceof de){var e=arguments[0];this._modelType=e,e===t.FIXED&&this.setScale(1)}else if(\"number\"==typeof arguments[0]){var n=arguments[0];this._modelType=t.FIXED,this.setScale(n)}else if(arguments[0]instanceof t){var i=arguments[0];this._modelType=i._modelType,this._scale=i._scale}},ge={serialVersionUID:{configurable:!0},maximumPreciseValue:{configurable:!0}};fe.prototype.equals=function(t){if(!(t instanceof fe))return!1;var e=t;return this._modelType===e._modelType&&this._scale===e._scale},fe.prototype.compareTo=function(t){var e=t,n=this.getMaximumSignificantDigits(),i=e.getMaximumSignificantDigits();return new M(n).compareTo(new M(i))},fe.prototype.getScale=function(){return this._scale},fe.prototype.isFloating=function(){return this._modelType===fe.FLOATING||this._modelType===fe.FLOATING_SINGLE},fe.prototype.getType=function(){return this._modelType},fe.prototype.toString=function(){var t=\"UNKNOWN\";return this._modelType===fe.FLOATING?t=\"Floating\":this._modelType===fe.FLOATING_SINGLE?t=\"Floating-Single\":this._modelType===fe.FIXED&&(t=\"Fixed (Scale=\"+this.getScale()+\")\"),t},fe.prototype.makePrecise=function(){if(\"number\"==typeof arguments[0]){var t=arguments[0];if(v.isNaN(t))return t;if(this._modelType===fe.FLOATING_SINGLE){return t}return this._modelType===fe.FIXED?Math.round(t*this._scale)/this._scale:t}if(arguments[0]instanceof C){var e=arguments[0];if(this._modelType===fe.FLOATING)return null;e.x=this.makePrecise(e.x),e.y=this.makePrecise(e.y)}},fe.prototype.getMaximumSignificantDigits=function(){var t=16;return this._modelType===fe.FLOATING?t=16:this._modelType===fe.FLOATING_SINGLE?t=6:this._modelType===fe.FIXED&&(t=1+Math.trunc(Math.ceil(Math.log(this.getScale())/Math.log(10)))),t},fe.prototype.setScale=function(t){this._scale=Math.abs(t)},fe.prototype.interfaces_=function(){return[e,E]},fe.prototype.getClass=function(){return fe},fe.mostPrecise=function(t,e){return t.compareTo(e)>=0?t:e},ge.serialVersionUID.get=function(){return 0x6bee6404e9a25c00},ge.maximumPreciseValue.get=function(){return 9007199254740992},Object.defineProperties(fe,ge);var de=function t(e){this._name=e||null,t.nameToTypeMap.put(e,this)},ye={serialVersionUID:{configurable:!0},nameToTypeMap:{configurable:!0}};de.prototype.readResolve=function(){return de.nameToTypeMap.get(this._name)},de.prototype.toString=function(){return this._name},de.prototype.interfaces_=function(){return[e]},de.prototype.getClass=function(){return de},ye.serialVersionUID.get=function(){return-552860263173159e4},ye.nameToTypeMap.get=function(){return new he},Object.defineProperties(de,ye),fe.Type=de,fe.FIXED=new de(\"FIXED\"),fe.FLOATING=new de(\"FLOATING\"),fe.FLOATING_SINGLE=new de(\"FLOATING SINGLE\");var _e=function t(){this._precisionModel=new fe,this._SRID=0,this._coordinateSequenceFactory=t.getDefaultCoordinateSequenceFactory(),0===arguments.length||(1===arguments.length?T(arguments[0],b)?this._coordinateSequenceFactory=arguments[0]:arguments[0]instanceof fe&&(this._precisionModel=arguments[0]):2===arguments.length?(this._precisionModel=arguments[0],this._SRID=arguments[1]):3===arguments.length&&(this._precisionModel=arguments[0],this._SRID=arguments[1],this._coordinateSequenceFactory=arguments[2]))},me={serialVersionUID:{configurable:!0}};_e.prototype.toGeometry=function(t){return t.isNull()?this.createPoint(null):t.getMinX()===t.getMaxX()&&t.getMinY()===t.getMaxY()?this.createPoint(new C(t.getMinX(),t.getMinY())):t.getMinX()===t.getMaxX()||t.getMinY()===t.getMaxY()?this.createLineString([new C(t.getMinX(),t.getMinY()),new C(t.getMaxX(),t.getMaxY())]):this.createPolygon(this.createLinearRing([new C(t.getMinX(),t.getMinY()),new C(t.getMinX(),t.getMaxY()),new C(t.getMaxX(),t.getMaxY()),new C(t.getMaxX(),t.getMinY()),new C(t.getMinX(),t.getMinY())]),null)},_e.prototype.createLineString=function(t){return t?t instanceof Array?new Kt(this.getCoordinateSequenceFactory().create(t),this):T(t,V)?new Kt(t,this):void 0:new Kt(this.getCoordinateSequenceFactory().create([]),this)},_e.prototype.createMultiLineString=function(){if(0===arguments.length)return new Xt(null,this);if(1===arguments.length){var t=arguments[0];return new Xt(t,this)}},_e.prototype.buildGeometry=function(t){for(var e=null,n=!1,i=!1,r=t.iterator();r.hasNext();){var o=r.next(),s=o.getClass();null===e&&(e=s),s!==e&&(n=!0),o.isGeometryCollectionOrDerived()&&(i=!0)}if(null===e)return this.createGeometryCollection();if(n||i)return this.createGeometryCollection(_e.toGeometryArray(t));var a=t.iterator().next();if(t.size()>1){if(a instanceof $t)return this.createMultiPolygon(_e.toPolygonArray(t));if(a instanceof Kt)return this.createMultiLineString(_e.toLineStringArray(t));if(a instanceof Qt)return this.createMultiPoint(_e.toPointArray(t));et.shouldNeverReachHere(\"Unhandled class: \"+a.getClass().getName())}return a},_e.prototype.createMultiPointFromCoords=function(t){return this.createMultiPoint(null!==t?this.getCoordinateSequenceFactory().create(t):null)},_e.prototype.createPoint=function(){if(0===arguments.length)return this.createPoint(this.getCoordinateSequenceFactory().create([]));if(1===arguments.length){if(arguments[0]instanceof C){var t=arguments[0];return this.createPoint(null!==t?this.getCoordinateSequenceFactory().create([t]):null)}if(T(arguments[0],V)){var e=arguments[0];return new Qt(e,this)}}},_e.prototype.getCoordinateSequenceFactory=function(){return this._coordinateSequenceFactory},_e.prototype.createPolygon=function(){if(0===arguments.length)return new $t(null,null,this);if(1===arguments.length){if(T(arguments[0],V)){var t=arguments[0];return this.createPolygon(this.createLinearRing(t))}if(arguments[0]instanceof Array){var e=arguments[0];return this.createPolygon(this.createLinearRing(e))}if(arguments[0]instanceof ee){var n=arguments[0];return this.createPolygon(n,null)}}else if(2===arguments.length){var i=arguments[0],r=arguments[1];return new $t(i,r,this)}},_e.prototype.getSRID=function(){return this._SRID},_e.prototype.createGeometryCollection=function(){if(0===arguments.length)return new zt(null,this);if(1===arguments.length){var t=arguments[0];return new zt(t,this)}},_e.prototype.createGeometry=function(t){return new ie(this).edit(t,{edit:function(){if(2===arguments.length){var t=arguments[0];return this._coordinateSequenceFactory.create(t)}}})},_e.prototype.getPrecisionModel=function(){return this._precisionModel},_e.prototype.createLinearRing=function(){if(0===arguments.length)return this.createLinearRing(this.getCoordinateSequenceFactory().create([]));if(1===arguments.length){if(arguments[0]instanceof Array){var t=arguments[0];return this.createLinearRing(null!==t?this.getCoordinateSequenceFactory().create(t):null)}if(T(arguments[0],V)){var e=arguments[0];return new ee(e,this)}}},_e.prototype.createMultiPolygon=function(){if(0===arguments.length)return new ne(null,this);if(1===arguments.length){var t=arguments[0];return new ne(t,this)}},_e.prototype.createMultiPoint=function(){if(0===arguments.length)return new te(null,this);if(1===arguments.length){if(arguments[0]instanceof Array){var t=arguments[0];return new te(t,this)}if(arguments[0]instanceof Array){var e=arguments[0];return this.createMultiPoint(null!==e?this.getCoordinateSequenceFactory().create(e):null)}if(T(arguments[0],V)){var n=arguments[0];if(null===n)return this.createMultiPoint(new Array(0).fill(null));for(var i=new Array(n.size()).fill(null),r=0;r<n.size();r++){var o=this.getCoordinateSequenceFactory().create(1,n.getDimension());Wt.copy(n,r,o,0,1),i[r]=this.createPoint(o)}return this.createMultiPoint(i)}}},_e.prototype.interfaces_=function(){return[e]},_e.prototype.getClass=function(){return _e},_e.toMultiPolygonArray=function(t){var e=new Array(t.size()).fill(null);return t.toArray(e)},_e.toGeometryArray=function(t){if(null===t)return null;var e=new Array(t.size()).fill(null);return t.toArray(e)},_e.getDefaultCoordinateSequenceFactory=function(){return ce.instance()},_e.toMultiLineStringArray=function(t){var e=new Array(t.size()).fill(null);return t.toArray(e)},_e.toLineStringArray=function(t){var e=new Array(t.size()).fill(null);return t.toArray(e)},_e.toMultiPointArray=function(t){var e=new Array(t.size()).fill(null);return t.toArray(e)},_e.toLinearRingArray=function(t){var e=new Array(t.size()).fill(null);return t.toArray(e)},_e.toPointArray=function(t){var e=new Array(t.size()).fill(null);return t.toArray(e)},_e.toPolygonArray=function(t){var e=new Array(t.size()).fill(null);return t.toArray(e)},_e.createPointFromInternalCoord=function(t,e){return e.getPrecisionModel().makePrecise(t),e.getFactory().createPoint(t)},me.serialVersionUID.get=function(){return-0x5ea75f2051eeb400},Object.defineProperties(_e,me);var ve=[\"Point\",\"MultiPoint\",\"LineString\",\"MultiLineString\",\"Polygon\",\"MultiPolygon\"],Ie=function(t){this.geometryFactory=t||new _e};Ie.prototype.read=function(t){var e,n=(e=\"string\"==typeof t?JSON.parse(t):t).type;if(!Ee[n])throw new Error(\"Unknown GeoJSON type: \"+e.type);return-1!==ve.indexOf(n)?Ee[n].apply(this,[e.coordinates]):\"GeometryCollection\"===n?Ee[n].apply(this,[e.geometries]):Ee[n].apply(this,[e])},Ie.prototype.write=function(t){var e=t.getGeometryType();if(!xe[e])throw new Error(\"Geometry is not supported\");return xe[e].apply(this,[t])};var Ee={Feature:function(t){var e={};for(var n in t)e[n]=t[n];if(t.geometry){var i=t.geometry.type;if(!Ee[i])throw new Error(\"Unknown GeoJSON type: \"+t.type);e.geometry=this.read(t.geometry)}return t.bbox&&(e.bbox=Ee.bbox.apply(this,[t.bbox])),e},FeatureCollection:function(t){var e={};if(t.features){e.features=[];for(var n=0;n<t.features.length;++n)e.features.push(this.read(t.features[n]))}return t.bbox&&(e.bbox=this.parse.bbox.apply(this,[t.bbox])),e},coordinates:function(t){for(var e=[],n=0;n<t.length;++n){var i=t[n];e.push(new C(i[0],i[1]))}return e},bbox:function(t){return this.geometryFactory.createLinearRing([new C(t[0],t[1]),new C(t[2],t[1]),new C(t[2],t[3]),new C(t[0],t[3]),new C(t[0],t[1])])},Point:function(t){var e=new C(t[0],t[1]);return this.geometryFactory.createPoint(e)},MultiPoint:function(t){for(var e=[],n=0;n<t.length;++n)e.push(Ee.Point.apply(this,[t[n]]));return this.geometryFactory.createMultiPoint(e)},LineString:function(t){var e=Ee.coordinates.apply(this,[t]);return this.geometryFactory.createLineString(e)},MultiLineString:function(t){for(var e=[],n=0;n<t.length;++n)e.push(Ee.LineString.apply(this,[t[n]]));return this.geometryFactory.createMultiLineString(e)},Polygon:function(t){for(var e=Ee.coordinates.apply(this,[t[0]]),n=this.geometryFactory.createLinearRing(e),i=[],r=1;r<t.length;++r){var o=t[r],s=Ee.coordinates.apply(this,[o]),a=this.geometryFactory.createLinearRing(s);i.push(a)}return this.geometryFactory.createPolygon(n,i)},MultiPolygon:function(t){for(var e=[],n=0;n<t.length;++n){var i=t[n];e.push(Ee.Polygon.apply(this,[i]))}return this.geometryFactory.createMultiPolygon(e)},GeometryCollection:function(t){for(var e=[],n=0;n<t.length;++n){var i=t[n];e.push(this.read(i))}return this.geometryFactory.createGeometryCollection(e)}},xe={coordinate:function(t){return[t.x,t.y]},Point:function(t){return{type:\"Point\",coordinates:xe.coordinate.apply(this,[t.getCoordinate()])}},MultiPoint:function(t){for(var e=[],n=0;n<t._geometries.length;++n){var i=t._geometries[n],r=xe.Point.apply(this,[i]);e.push(r.coordinates)}return{type:\"MultiPoint\",coordinates:e}},LineString:function(t){for(var e=[],n=t.getCoordinates(),i=0;i<n.length;++i){var r=n[i];e.push(xe.coordinate.apply(this,[r]))}return{type:\"LineString\",coordinates:e}},MultiLineString:function(t){for(var e=[],n=0;n<t._geometries.length;++n){var i=t._geometries[n],r=xe.LineString.apply(this,[i]);e.push(r.coordinates)}return{type:\"MultiLineString\",coordinates:e}},Polygon:function(t){var e=[],n=xe.LineString.apply(this,[t._shell]);e.push(n.coordinates);for(var i=0;i<t._holes.length;++i){var r=t._holes[i],o=xe.LineString.apply(this,[r]);e.push(o.coordinates)}return{type:\"Polygon\",coordinates:e}},MultiPolygon:function(t){for(var e=[],n=0;n<t._geometries.length;++n){var i=t._geometries[n],r=xe.Polygon.apply(this,[i]);e.push(r.coordinates)}return{type:\"MultiPolygon\",coordinates:e}},GeometryCollection:function(t){for(var e=[],n=0;n<t._geometries.length;++n){var i=t._geometries[n],r=i.getGeometryType();e.push(xe[r].apply(this,[i]))}return{type:\"GeometryCollection\",geometries:e}}},Ne=function(t){this.geometryFactory=t||new _e,this.precisionModel=this.geometryFactory.getPrecisionModel(),this.parser=new Ie(this.geometryFactory)};Ne.prototype.read=function(t){var e=this.parser.read(t);return this.precisionModel.getType()===fe.FIXED&&this.reducePrecision(e),e},Ne.prototype.reducePrecision=function(t){var e,n;if(t.coordinate)this.precisionModel.makePrecise(t.coordinate);else if(t.points)for(e=0,n=t.points.length;e<n;e++)this.precisionModel.makePrecise(t.points[e]);else if(t.geometries)for(e=0,n=t.geometries.length;e<n;e++)this.reducePrecision(t.geometries[e])};var Ce=function(){this.parser=new Ie(this.geometryFactory)};Ce.prototype.write=function(t){return this.parser.write(t)};var Se=function(){},Le={ON:{configurable:!0},LEFT:{configurable:!0},RIGHT:{configurable:!0}};Se.prototype.interfaces_=function(){return[]},Se.prototype.getClass=function(){return Se},Se.opposite=function(t){return t===Se.LEFT?Se.RIGHT:t===Se.RIGHT?Se.LEFT:t},Le.ON.get=function(){return 0},Le.LEFT.get=function(){return 1},Le.RIGHT.get=function(){return 2},Object.defineProperties(Se,Le),(d.prototype=new Error).name=\"EmptyStackException\",(y.prototype=new xt).add=function(t){return this.array_.push(t),!0},y.prototype.get=function(t){if(t<0||t>=this.size())throw new Error;return this.array_[t]},y.prototype.push=function(t){return this.array_.push(t),t},y.prototype.pop=function(t){if(0===this.array_.length)throw new d;return this.array_.pop()},y.prototype.peek=function(){if(0===this.array_.length)throw new d;return this.array_[this.array_.length-1]},y.prototype.empty=function(){return 0===this.array_.length},y.prototype.isEmpty=function(){return this.empty()},y.prototype.search=function(t){return this.array_.indexOf(t)},y.prototype.size=function(){return this.array_.length},y.prototype.toArray=function(){for(var t=[],e=0,n=this.array_.length;e<n;e++)t.push(this.array_[e]);return t};var be=function(){this._minIndex=-1,this._minCoord=null,this._minDe=null,this._orientedDe=null};be.prototype.getCoordinate=function(){return this._minCoord},be.prototype.getRightmostSide=function(t,e){var n=this.getRightmostSideOfSegment(t,e);return n<0&&(n=this.getRightmostSideOfSegment(t,e-1)),n<0&&(this._minCoord=null,this.checkForRightmostCoordinate(t)),n},be.prototype.findRightmostEdgeAtVertex=function(){var t=this._minDe.getEdge().getCoordinates();et.isTrue(this._minIndex>0&&this._minIndex<t.length,\"rightmost point expected to be interior vertex of edge\");var e=t[this._minIndex-1],n=t[this._minIndex+1],i=at.computeOrientation(this._minCoord,n,e),r=!1;e.y<this._minCoord.y&&n.y<this._minCoord.y&&i===at.COUNTERCLOCKWISE?r=!0:e.y>this._minCoord.y&&n.y>this._minCoord.y&&i===at.CLOCKWISE&&(r=!0),r&&(this._minIndex=this._minIndex-1)},be.prototype.getRightmostSideOfSegment=function(t,e){var n=t.getEdge().getCoordinates();if(e<0||e+1>=n.length)return-1;if(n[e].y===n[e+1].y)return-1;var i=Se.LEFT;return n[e].y<n[e+1].y&&(i=Se.RIGHT),i},be.prototype.getEdge=function(){return this._orientedDe},be.prototype.checkForRightmostCoordinate=function(t){for(var e=t.getEdge().getCoordinates(),n=0;n<e.length-1;n++)(null===this._minCoord||e[n].x>this._minCoord.x)&&(this._minDe=t,this._minIndex=n,this._minCoord=e[n])},be.prototype.findRightmostEdgeAtNode=function(){var t=this._minDe.getNode().getEdges();this._minDe=t.getRightmostEdge(),this._minDe.isForward()||(this._minDe=this._minDe.getSym(),this._minIndex=this._minDe.getEdge().getCoordinates().length-1)},be.prototype.findEdge=function(t){for(var e=t.iterator();e.hasNext();){var n=e.next();n.isForward()&&this.checkForRightmostCoordinate(n)}et.isTrue(0!==this._minIndex||this._minCoord.equals(this._minDe.getCoordinate()),\"inconsistency in rightmost processing\"),0===this._minIndex?this.findRightmostEdgeAtNode():this.findRightmostEdgeAtVertex(),this._orientedDe=this._minDe;this.getRightmostSide(this._minDe,this._minIndex)===Se.LEFT&&(this._orientedDe=this._minDe.getSym())},be.prototype.interfaces_=function(){return[]},be.prototype.getClass=function(){return be};var we=function(t){function e(n,i){t.call(this,e.msgWithCoord(n,i)),this.pt=i?new C(i):null,this.name=\"TopologyException\"}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.getCoordinate=function(){return this.pt},e.prototype.interfaces_=function(){return[]},e.prototype.getClass=function(){return e},e.msgWithCoord=function(t,e){return e?t:t+\" [ \"+e+\" ]\"},e}($),Oe=function(){this.array_=[]};Oe.prototype.addLast=function(t){this.array_.push(t)},Oe.prototype.removeFirst=function(){return this.array_.shift()},Oe.prototype.isEmpty=function(){return 0===this.array_.length};var Te=function(){this._finder=null,this._dirEdgeList=new Nt,this._nodes=new Nt,this._rightMostCoord=null,this._env=null,this._finder=new be};Te.prototype.clearVisitedEdges=function(){for(var t=this._dirEdgeList.iterator();t.hasNext();){t.next().setVisited(!1)}},Te.prototype.getRightmostCoordinate=function(){return this._rightMostCoord},Te.prototype.computeNodeDepth=function(t){for(var e=null,n=t.getEdges().iterator();n.hasNext();){var i=n.next();if(i.isVisited()||i.getSym().isVisited()){e=i;break}}if(null===e)throw new we(\"unable to find edge to compute depths at \"+t.getCoordinate());t.getEdges().computeDepths(e);for(var r=t.getEdges().iterator();r.hasNext();){var o=r.next();o.setVisited(!0),this.copySymDepths(o)}},Te.prototype.computeDepth=function(t){this.clearVisitedEdges();var e=this._finder.getEdge();e.setEdgeDepths(Se.RIGHT,t),this.copySymDepths(e),this.computeDepths(e)},Te.prototype.create=function(t){this.addReachable(t),this._finder.findEdge(this._dirEdgeList),this._rightMostCoord=this._finder.getCoordinate()},Te.prototype.findResultEdges=function(){for(var t=this._dirEdgeList.iterator();t.hasNext();){var e=t.next();e.getDepth(Se.RIGHT)>=1&&e.getDepth(Se.LEFT)<=0&&!e.isInteriorAreaEdge()&&e.setInResult(!0)}},Te.prototype.computeDepths=function(t){var e=new Pt,n=new Oe,i=t.getNode();for(n.addLast(i),e.add(i),t.setVisited(!0);!n.isEmpty();){var r=n.removeFirst();e.add(r),this.computeNodeDepth(r);for(var o=r.getEdges().iterator();o.hasNext();){var s=o.next().getSym();if(!s.isVisited()){var a=s.getNode();e.contains(a)||(n.addLast(a),e.add(a))}}}},Te.prototype.compareTo=function(t){var e=t;return this._rightMostCoord.x<e._rightMostCoord.x?-1:this._rightMostCoord.x>e._rightMostCoord.x?1:0},Te.prototype.getEnvelope=function(){if(null===this._env){for(var t=new j,e=this._dirEdgeList.iterator();e.hasNext();)for(var n=e.next().getEdge().getCoordinates(),i=0;i<n.length-1;i++)t.expandToInclude(n[i]);this._env=t}return this._env},Te.prototype.addReachable=function(t){var e=new y;for(e.add(t);!e.empty();){var n=e.pop();this.add(n,e)}},Te.prototype.copySymDepths=function(t){var e=t.getSym();e.setDepth(Se.LEFT,t.getDepth(Se.RIGHT)),e.setDepth(Se.RIGHT,t.getDepth(Se.LEFT))},Te.prototype.add=function(t,e){t.setVisited(!0),this._nodes.add(t);for(var n=t.getEdges().iterator();n.hasNext();){var i=n.next();this._dirEdgeList.add(i);var r=i.getSym().getNode();r.isVisited()||e.push(r)}},Te.prototype.getNodes=function(){return this._nodes},Te.prototype.getDirectedEdges=function(){return this._dirEdgeList},Te.prototype.interfaces_=function(){return[E]},Te.prototype.getClass=function(){return Te};var Re=function t(){if(this.location=null,1===arguments.length){if(arguments[0]instanceof Array){var e=arguments[0];this.init(e.length)}else if(Number.isInteger(arguments[0])){var n=arguments[0];this.init(1),this.location[Se.ON]=n}else if(arguments[0]instanceof t){var i=arguments[0];if(this.init(i.location.length),null!==i)for(var r=0;r<this.location.length;r++)this.location[r]=i.location[r]}}else if(3===arguments.length){var o=arguments[0],s=arguments[1],a=arguments[2];this.init(3),this.location[Se.ON]=o,this.location[Se.LEFT]=s,this.location[Se.RIGHT]=a}};Re.prototype.setAllLocations=function(t){for(var e=0;e<this.location.length;e++)this.location[e]=t},Re.prototype.isNull=function(){for(var t=0;t<this.location.length;t++)if(this.location[t]!==w.NONE)return!1;return!0},Re.prototype.setAllLocationsIfNull=function(t){for(var e=0;e<this.location.length;e++)this.location[e]===w.NONE&&(this.location[e]=t)},Re.prototype.isLine=function(){return 1===this.location.length},Re.prototype.merge=function(t){if(t.location.length>this.location.length){var e=new Array(3).fill(null);e[Se.ON]=this.location[Se.ON],e[Se.LEFT]=w.NONE,e[Se.RIGHT]=w.NONE,this.location=e}for(var n=0;n<this.location.length;n++)this.location[n]===w.NONE&&n<t.location.length&&(this.location[n]=t.location[n])},Re.prototype.getLocations=function(){return this.location},Re.prototype.flip=function(){if(this.location.length<=1)return null;var t=this.location[Se.LEFT];this.location[Se.LEFT]=this.location[Se.RIGHT],this.location[Se.RIGHT]=t},Re.prototype.toString=function(){var t=new D;return this.location.length>1&&t.append(w.toLocationSymbol(this.location[Se.LEFT])),t.append(w.toLocationSymbol(this.location[Se.ON])),this.location.length>1&&t.append(w.toLocationSymbol(this.location[Se.RIGHT])),t.toString()},Re.prototype.setLocations=function(t,e,n){this.location[Se.ON]=t,this.location[Se.LEFT]=e,this.location[Se.RIGHT]=n},Re.prototype.get=function(t){return t<this.location.length?this.location[t]:w.NONE},Re.prototype.isArea=function(){return this.location.length>1},Re.prototype.isAnyNull=function(){for(var t=0;t<this.location.length;t++)if(this.location[t]===w.NONE)return!0;return!1},Re.prototype.setLocation=function(){if(1===arguments.length){var t=arguments[0];this.setLocation(Se.ON,t)}else if(2===arguments.length){var e=arguments[0],n=arguments[1];this.location[e]=n}},Re.prototype.init=function(t){this.location=new Array(t).fill(null),this.setAllLocations(w.NONE)},Re.prototype.isEqualOnSide=function(t,e){return this.location[e]===t.location[e]},Re.prototype.allPositionsEqual=function(t){for(var e=0;e<this.location.length;e++)if(this.location[e]!==t)return!1;return!0},Re.prototype.interfaces_=function(){return[]},Re.prototype.getClass=function(){return Re};var Pe=function t(){if(this.elt=new Array(2).fill(null),1===arguments.length){if(Number.isInteger(arguments[0])){var e=arguments[0];this.elt[0]=new Re(e),this.elt[1]=new Re(e)}else if(arguments[0]instanceof t){var n=arguments[0];this.elt[0]=new Re(n.elt[0]),this.elt[1]=new Re(n.elt[1])}}else if(2===arguments.length){var i=arguments[0],r=arguments[1];this.elt[0]=new Re(w.NONE),this.elt[1]=new Re(w.NONE),this.elt[i].setLocation(r)}else if(3===arguments.length){var o=arguments[0],s=arguments[1],a=arguments[2];this.elt[0]=new Re(o,s,a),this.elt[1]=new Re(o,s,a)}else if(4===arguments.length){var u=arguments[0],l=arguments[1],c=arguments[2],p=arguments[3];this.elt[0]=new Re(w.NONE,w.NONE,w.NONE),this.elt[1]=new Re(w.NONE,w.NONE,w.NONE),this.elt[u].setLocations(l,c,p)}};Pe.prototype.getGeometryCount=function(){var t=0;return this.elt[0].isNull()||t++,this.elt[1].isNull()||t++,t},Pe.prototype.setAllLocations=function(t,e){this.elt[t].setAllLocations(e)},Pe.prototype.isNull=function(t){return this.elt[t].isNull()},Pe.prototype.setAllLocationsIfNull=function(){if(1===arguments.length){var t=arguments[0];this.setAllLocationsIfNull(0,t),this.setAllLocationsIfNull(1,t)}else if(2===arguments.length){var e=arguments[0],n=arguments[1];this.elt[e].setAllLocationsIfNull(n)}},Pe.prototype.isLine=function(t){return this.elt[t].isLine()},Pe.prototype.merge=function(t){for(var e=0;e<2;e++)null===this.elt[e]&&null!==t.elt[e]?this.elt[e]=new Re(t.elt[e]):this.elt[e].merge(t.elt[e])},Pe.prototype.flip=function(){this.elt[0].flip(),this.elt[1].flip()},Pe.prototype.getLocation=function(){if(1===arguments.length){var t=arguments[0];return this.elt[t].get(Se.ON)}if(2===arguments.length){var e=arguments[0],n=arguments[1];return this.elt[e].get(n)}},Pe.prototype.toString=function(){var t=new D;return null!==this.elt[0]&&(t.append(\"A:\"),t.append(this.elt[0].toString())),null!==this.elt[1]&&(t.append(\" B:\"),t.append(this.elt[1].toString())),t.toString()},Pe.prototype.isArea=function(){if(0===arguments.length)return this.elt[0].isArea()||this.elt[1].isArea();if(1===arguments.length){var t=arguments[0];return this.elt[t].isArea()}},Pe.prototype.isAnyNull=function(t){return this.elt[t].isAnyNull()},Pe.prototype.setLocation=function(){if(2===arguments.length){var t=arguments[0],e=arguments[1];this.elt[t].setLocation(Se.ON,e)}else if(3===arguments.length){var n=arguments[0],i=arguments[1],r=arguments[2];this.elt[n].setLocation(i,r)}},Pe.prototype.isEqualOnSide=function(t,e){return this.elt[0].isEqualOnSide(t.elt[0],e)&&this.elt[1].isEqualOnSide(t.elt[1],e)},Pe.prototype.allPositionsEqual=function(t,e){return this.elt[t].allPositionsEqual(e)},Pe.prototype.toLine=function(t){this.elt[t].isArea()&&(this.elt[t]=new Re(this.elt[t].location[0]))},Pe.prototype.interfaces_=function(){return[]},Pe.prototype.getClass=function(){return Pe},Pe.toLineLabel=function(t){for(var e=new Pe(w.NONE),n=0;n<2;n++)e.setLocation(n,t.getLocation(n));return e};var De=function(){this._startDe=null,this._maxNodeDegree=-1,this._edges=new Nt,this._pts=new Nt,this._label=new Pe(w.NONE),this._ring=null,this._isHole=null,this._shell=null,this._holes=new Nt,this._geometryFactory=null;var t=arguments[0],e=arguments[1];this._geometryFactory=e,this.computePoints(t),this.computeRing()};De.prototype.computeRing=function(){if(null!==this._ring)return null;for(var t=new Array(this._pts.size()).fill(null),e=0;e<this._pts.size();e++)t[e]=this._pts.get(e);this._ring=this._geometryFactory.createLinearRing(t),this._isHole=at.isCCW(this._ring.getCoordinates())},De.prototype.isIsolated=function(){return 1===this._label.getGeometryCount()},De.prototype.computePoints=function(t){this._startDe=t;var e=t,n=!0;do{if(null===e)throw new we(\"Found null DirectedEdge\");if(e.getEdgeRing()===this)throw new we(\"Directed Edge visited twice during ring-building at \"+e.getCoordinate());this._edges.add(e);var i=e.getLabel();et.isTrue(i.isArea()),this.mergeLabel(i),this.addPoints(e.getEdge(),e.isForward(),n),n=!1,this.setEdgeRing(e,this),e=this.getNext(e)}while(e!==this._startDe)},De.prototype.getLinearRing=function(){return this._ring},De.prototype.getCoordinate=function(t){return this._pts.get(t)},De.prototype.computeMaxNodeDegree=function(){this._maxNodeDegree=0;var t=this._startDe;do{var e=t.getNode().getEdges().getOutgoingDegree(this);e>this._maxNodeDegree&&(this._maxNodeDegree=e),t=this.getNext(t)}while(t!==this._startDe);this._maxNodeDegree*=2},De.prototype.addPoints=function(t,e,n){var i=t.getCoordinates();if(e){var r=1;n&&(r=0);for(var o=r;o<i.length;o++)this._pts.add(i[o])}else{var s=i.length-2;n&&(s=i.length-1);for(var a=s;a>=0;a--)this._pts.add(i[a])}},De.prototype.isHole=function(){return this._isHole},De.prototype.setInResult=function(){var t=this._startDe;do{t.getEdge().setInResult(!0),t=t.getNext()}while(t!==this._startDe)},De.prototype.containsPoint=function(t){var e=this.getLinearRing();if(!e.getEnvelopeInternal().contains(t))return!1;if(!at.isPointInRing(t,e.getCoordinates()))return!1;for(var n=this._holes.iterator();n.hasNext();){if(n.next().containsPoint(t))return!1}return!0},De.prototype.addHole=function(t){this._holes.add(t)},De.prototype.isShell=function(){return null===this._shell},De.prototype.getLabel=function(){return this._label},De.prototype.getEdges=function(){return this._edges},De.prototype.getMaxNodeDegree=function(){return this._maxNodeDegree<0&&this.computeMaxNodeDegree(),this._maxNodeDegree},De.prototype.getShell=function(){return this._shell},De.prototype.mergeLabel=function(){if(1===arguments.length){var t=arguments[0];this.mergeLabel(t,0),this.mergeLabel(t,1)}else if(2===arguments.length){var e=arguments[0],n=arguments[1],i=e.getLocation(n,Se.RIGHT);if(i===w.NONE)return null;if(this._label.getLocation(n)===w.NONE)return this._label.setLocation(n,i),null}},De.prototype.setShell=function(t){this._shell=t,null!==t&&t.addHole(this)},De.prototype.toPolygon=function(t){for(var e=new Array(this._holes.size()).fill(null),n=0;n<this._holes.size();n++)e[n]=this._holes.get(n).getLinearRing();return t.createPolygon(this.getLinearRing(),e)},De.prototype.interfaces_=function(){return[]},De.prototype.getClass=function(){return De};var Me=function(t){function e(){var e=arguments[0],n=arguments[1];t.call(this,e,n)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.setEdgeRing=function(t,e){t.setMinEdgeRing(e)},e.prototype.getNext=function(t){return t.getNextMin()},e.prototype.interfaces_=function(){return[]},e.prototype.getClass=function(){return e},e}(De),Ae=function(t){function e(){var e=arguments[0],n=arguments[1];t.call(this,e,n)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.buildMinimalRings=function(){var t=new Nt,e=this._startDe;do{if(null===e.getMinEdgeRing()){var n=new Me(e,this._geometryFactory);t.add(n)}e=e.getNext()}while(e!==this._startDe);return t},e.prototype.setEdgeRing=function(t,e){t.setEdgeRing(e)},e.prototype.linkDirectedEdgesForMinimalEdgeRings=function(){var t=this._startDe;do{t.getNode().getEdges().linkMinimalDirectedEdges(this),t=t.getNext()}while(t!==this._startDe)},e.prototype.getNext=function(t){return t.getNext()},e.prototype.interfaces_=function(){return[]},e.prototype.getClass=function(){return e},e}(De),Fe=function(){if(this._label=null,this._isInResult=!1,this._isCovered=!1,this._isCoveredSet=!1,this._isVisited=!1,0===arguments.length);else if(1===arguments.length){var t=arguments[0];this._label=t}};Fe.prototype.setVisited=function(t){this._isVisited=t},Fe.prototype.setInResult=function(t){this._isInResult=t},Fe.prototype.isCovered=function(){return this._isCovered},Fe.prototype.isCoveredSet=function(){return this._isCoveredSet},Fe.prototype.setLabel=function(t){this._label=t},Fe.prototype.getLabel=function(){return this._label},Fe.prototype.setCovered=function(t){this._isCovered=t,this._isCoveredSet=!0},Fe.prototype.updateIM=function(t){et.isTrue(this._label.getGeometryCount()>=2,\"found partial label\"),this.computeIM(t)},Fe.prototype.isInResult=function(){return this._isInResult},Fe.prototype.isVisited=function(){return this._isVisited},Fe.prototype.interfaces_=function(){return[]},Fe.prototype.getClass=function(){return Fe};var Ge=function(t){function e(){t.call(this),this._coord=null,this._edges=null;var e=arguments[0],n=arguments[1];this._coord=e,this._edges=n,this._label=new Pe(0,w.NONE)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.isIncidentEdgeInResult=function(){for(var t=this.getEdges().getEdges().iterator();t.hasNext();){if(t.next().getEdge().isInResult())return!0}return!1},e.prototype.isIsolated=function(){return 1===this._label.getGeometryCount()},e.prototype.getCoordinate=function(){return this._coord},e.prototype.print=function(t){t.println(\"node \"+this._coord+\" lbl: \"+this._label)},e.prototype.computeIM=function(t){},e.prototype.computeMergedLocation=function(t,e){var n=w.NONE;if(n=this._label.getLocation(e),!t.isNull(e)){var i=t.getLocation(e);n!==w.BOUNDARY&&(n=i)}return n},e.prototype.setLabel=function(){if(2!==arguments.length)return t.prototype.setLabel.apply(this,arguments);var e=arguments[0],n=arguments[1];null===this._label?this._label=new Pe(e,n):this._label.setLocation(e,n)},e.prototype.getEdges=function(){return this._edges},e.prototype.mergeLabel=function(){if(arguments[0]instanceof e){var t=arguments[0];this.mergeLabel(t._label)}else if(arguments[0]instanceof Pe)for(var n=arguments[0],i=0;i<2;i++){var r=this.computeMergedLocation(n,i);this._label.getLocation(i)===w.NONE&&this._label.setLocation(i,r)}},e.prototype.add=function(t){this._edges.insert(t),t.setNode(this)},e.prototype.setLabelBoundary=function(t){if(null===this._label)return null;var e=w.NONE;null!==this._label&&(e=this._label.getLocation(t));var n=null;switch(e){case w.BOUNDARY:n=w.INTERIOR;break;case w.INTERIOR:default:n=w.BOUNDARY}this._label.setLocation(t,n)},e.prototype.interfaces_=function(){return[]},e.prototype.getClass=function(){return e},e}(Fe),qe=function(){this.nodeMap=new p,this.nodeFact=null;var t=arguments[0];this.nodeFact=t};qe.prototype.find=function(t){return this.nodeMap.get(t)},qe.prototype.addNode=function(){if(arguments[0]instanceof C){var t=arguments[0],e=this.nodeMap.get(t);return null===e&&(e=this.nodeFact.createNode(t),this.nodeMap.put(t,e)),e}if(arguments[0]instanceof Ge){var n=arguments[0],i=this.nodeMap.get(n.getCoordinate());return null===i?(this.nodeMap.put(n.getCoordinate(),n),n):(i.mergeLabel(n),i)}},qe.prototype.print=function(t){for(var e=this.iterator();e.hasNext();){e.next().print(t)}},qe.prototype.iterator=function(){return this.nodeMap.values().iterator()},qe.prototype.values=function(){return this.nodeMap.values()},qe.prototype.getBoundaryNodes=function(t){for(var e=new Nt,n=this.iterator();n.hasNext();){var i=n.next();i.getLabel().getLocation(t)===w.BOUNDARY&&e.add(i)}return e},qe.prototype.add=function(t){var e=t.getCoordinate();this.addNode(e).add(t)},qe.prototype.interfaces_=function(){return[]},qe.prototype.getClass=function(){return qe};var Be=function(){},Ve={NE:{configurable:!0},NW:{configurable:!0},SW:{configurable:!0},SE:{configurable:!0}};Be.prototype.interfaces_=function(){return[]},Be.prototype.getClass=function(){return Be},Be.isNorthern=function(t){return t===Be.NE||t===Be.NW},Be.isOpposite=function(t,e){if(t===e)return!1;return 2===(t-e+4)%4},Be.commonHalfPlane=function(t,e){if(t===e)return t;if(2===(t-e+4)%4)return-1;var n=t<e?t:e;return 0===n&&3===(t>e?t:e)?3:n},Be.isInHalfPlane=function(t,e){return e===Be.SE?t===Be.SE||t===Be.SW:t===e||t===e+1},Be.quadrant=function(){if(\"number\"==typeof arguments[0]&&\"number\"==typeof arguments[1]){var t=arguments[0],e=arguments[1];if(0===t&&0===e)throw new m(\"Cannot compute the quadrant for point ( \"+t+\", \"+e+\" )\");return t>=0?e>=0?Be.NE:Be.SE:e>=0?Be.NW:Be.SW}if(arguments[0]instanceof C&&arguments[1]instanceof C){var n=arguments[0],i=arguments[1];if(i.x===n.x&&i.y===n.y)throw new m(\"Cannot compute the quadrant for two identical points \"+n);return i.x>=n.x?i.y>=n.y?Be.NE:Be.SE:i.y>=n.y?Be.NW:Be.SW}},Ve.NE.get=function(){return 0},Ve.NW.get=function(){return 1},Ve.SW.get=function(){return 2},Ve.SE.get=function(){return 3},Object.defineProperties(Be,Ve);var Ue=function(){if(this._edge=null,this._label=null,this._node=null,this._p0=null,this._p1=null,this._dx=null,this._dy=null,this._quadrant=null,1===arguments.length){var t=arguments[0];this._edge=t}else if(3===arguments.length){var e=arguments[0],n=arguments[1],i=arguments[2];this._edge=e,this.init(n,i),this._label=null}else if(4===arguments.length){var r=arguments[0],o=arguments[1],s=arguments[2],a=arguments[3];this._edge=r,this.init(o,s),this._label=a}};Ue.prototype.compareDirection=function(t){return this._dx===t._dx&&this._dy===t._dy?0:this._quadrant>t._quadrant?1:this._quadrant<t._quadrant?-1:at.computeOrientation(t._p0,t._p1,this._p1)},Ue.prototype.getDy=function(){return this._dy},Ue.prototype.getCoordinate=function(){return this._p0},Ue.prototype.setNode=function(t){this._node=t},Ue.prototype.print=function(t){var e=Math.atan2(this._dy,this._dx),n=this.getClass().getName(),i=n.lastIndexOf(\".\"),r=n.substring(i+1);t.print(\"  \"+r+\": \"+this._p0+\" - \"+this._p1+\" \"+this._quadrant+\":\"+e+\"   \"+this._label)},Ue.prototype.compareTo=function(t){var e=t;return this.compareDirection(e)},Ue.prototype.getDirectedCoordinate=function(){return this._p1},Ue.prototype.getDx=function(){return this._dx},Ue.prototype.getLabel=function(){return this._label},Ue.prototype.getEdge=function(){return this._edge},Ue.prototype.getQuadrant=function(){return this._quadrant},Ue.prototype.getNode=function(){return this._node},Ue.prototype.toString=function(){var t=Math.atan2(this._dy,this._dx),e=this.getClass().getName(),n=e.lastIndexOf(\".\");return\"  \"+e.substring(n+1)+\": \"+this._p0+\" - \"+this._p1+\" \"+this._quadrant+\":\"+t+\"   \"+this._label},Ue.prototype.computeLabel=function(t){},Ue.prototype.init=function(t,e){this._p0=t,this._p1=e,this._dx=e.x-t.x,this._dy=e.y-t.y,this._quadrant=Be.quadrant(this._dx,this._dy),et.isTrue(!(0===this._dx&&0===this._dy),\"EdgeEnd with identical endpoints found\")},Ue.prototype.interfaces_=function(){return[E]},Ue.prototype.getClass=function(){return Ue};var ze=function(t){function e(){var e=arguments[0],n=arguments[1];if(t.call(this,e),this._isForward=null,this._isInResult=!1,this._isVisited=!1,this._sym=null,this._next=null,this._nextMin=null,this._edgeRing=null,this._minEdgeRing=null,this._depth=[0,-999,-999],this._isForward=n,n)this.init(e.getCoordinate(0),e.getCoordinate(1));else{var i=e.getNumPoints()-1;this.init(e.getCoordinate(i),e.getCoordinate(i-1))}this.computeDirectedLabel()}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.getNextMin=function(){return this._nextMin},e.prototype.getDepth=function(t){return this._depth[t]},e.prototype.setVisited=function(t){this._isVisited=t},e.prototype.computeDirectedLabel=function(){this._label=new Pe(this._edge.getLabel()),this._isForward||this._label.flip()},e.prototype.getNext=function(){return this._next},e.prototype.setDepth=function(t,e){if(-999!==this._depth[t]&&this._depth[t]!==e)throw new we(\"assigned depths do not match\",this.getCoordinate());this._depth[t]=e},e.prototype.isInteriorAreaEdge=function(){for(var t=!0,e=0;e<2;e++)this._label.isArea(e)&&this._label.getLocation(e,Se.LEFT)===w.INTERIOR&&this._label.getLocation(e,Se.RIGHT)===w.INTERIOR||(t=!1);return t},e.prototype.setNextMin=function(t){this._nextMin=t},e.prototype.print=function(e){t.prototype.print.call(this,e),e.print(\" \"+this._depth[Se.LEFT]+\"/\"+this._depth[Se.RIGHT]),e.print(\" (\"+this.getDepthDelta()+\")\"),this._isInResult&&e.print(\" inResult\")},e.prototype.setMinEdgeRing=function(t){this._minEdgeRing=t},e.prototype.isLineEdge=function(){var t=this._label.isLine(0)||this._label.isLine(1),e=!this._label.isArea(0)||this._label.allPositionsEqual(0,w.EXTERIOR),n=!this._label.isArea(1)||this._label.allPositionsEqual(1,w.EXTERIOR);return t&&e&&n},e.prototype.setEdgeRing=function(t){this._edgeRing=t},e.prototype.getMinEdgeRing=function(){return this._minEdgeRing},e.prototype.getDepthDelta=function(){var t=this._edge.getDepthDelta();return this._isForward||(t=-t),t},e.prototype.setInResult=function(t){this._isInResult=t},e.prototype.getSym=function(){return this._sym},e.prototype.isForward=function(){return this._isForward},e.prototype.getEdge=function(){return this._edge},e.prototype.printEdge=function(t){this.print(t),t.print(\" \"),this._isForward?this._edge.print(t):this._edge.printReverse(t)},e.prototype.setSym=function(t){this._sym=t},e.prototype.setVisitedEdge=function(t){this.setVisited(t),this._sym.setVisited(t)},e.prototype.setEdgeDepths=function(t,e){var n=this.getEdge().getDepthDelta();this._isForward||(n=-n);var i=1;t===Se.LEFT&&(i=-1);var r=Se.opposite(t),o=e+n*i;this.setDepth(t,e),this.setDepth(r,o)},e.prototype.getEdgeRing=function(){return this._edgeRing},e.prototype.isInResult=function(){return this._isInResult},e.prototype.setNext=function(t){this._next=t},e.prototype.isVisited=function(){return this._isVisited},e.prototype.interfaces_=function(){return[]},e.prototype.getClass=function(){return e},e.depthFactor=function(t,e){return t===w.EXTERIOR&&e===w.INTERIOR?1:t===w.INTERIOR&&e===w.EXTERIOR?-1:0},e}(Ue),Xe=function(){};Xe.prototype.createNode=function(t){return new Ge(t,null)},Xe.prototype.interfaces_=function(){return[]},Xe.prototype.getClass=function(){return Xe};var Ye=function(){if(this._edges=new Nt,this._nodes=null,this._edgeEndList=new Nt,0===arguments.length)this._nodes=new qe(new Xe);else if(1===arguments.length){var t=arguments[0];this._nodes=new qe(t)}};Ye.prototype.printEdges=function(t){t.println(\"Edges:\");for(var e=0;e<this._edges.size();e++){t.println(\"edge \"+e+\":\");var n=this._edges.get(e);n.print(t),n.eiList.print(t)}},Ye.prototype.find=function(t){return this._nodes.find(t)},Ye.prototype.addNode=function(){if(arguments[0]instanceof Ge){var t=arguments[0];return this._nodes.addNode(t)}if(arguments[0]instanceof C){var e=arguments[0];return this._nodes.addNode(e)}},Ye.prototype.getNodeIterator=function(){return this._nodes.iterator()},Ye.prototype.linkResultDirectedEdges=function(){for(var t=this._nodes.iterator();t.hasNext();){t.next().getEdges().linkResultDirectedEdges()}},Ye.prototype.debugPrintln=function(t){Y.out.println(t)},Ye.prototype.isBoundaryNode=function(t,e){var n=this._nodes.find(e);if(null===n)return!1;var i=n.getLabel();return null!==i&&i.getLocation(t)===w.BOUNDARY},Ye.prototype.linkAllDirectedEdges=function(){for(var t=this._nodes.iterator();t.hasNext();){t.next().getEdges().linkAllDirectedEdges()}},Ye.prototype.matchInSameDirection=function(t,e,n,i){return!!t.equals(n)&&(at.computeOrientation(t,e,i)===at.COLLINEAR&&Be.quadrant(t,e)===Be.quadrant(n,i))},Ye.prototype.getEdgeEnds=function(){return this._edgeEndList},Ye.prototype.debugPrint=function(t){Y.out.print(t)},Ye.prototype.getEdgeIterator=function(){return this._edges.iterator()},Ye.prototype.findEdgeInSameDirection=function(t,e){for(var n=0;n<this._edges.size();n++){var i=this._edges.get(n),r=i.getCoordinates();if(this.matchInSameDirection(t,e,r[0],r[1]))return i;if(this.matchInSameDirection(t,e,r[r.length-1],r[r.length-2]))return i}return null},Ye.prototype.insertEdge=function(t){this._edges.add(t)},Ye.prototype.findEdgeEnd=function(t){for(var e=this.getEdgeEnds().iterator();e.hasNext();){var n=e.next();if(n.getEdge()===t)return n}return null},Ye.prototype.addEdges=function(t){for(var e=t.iterator();e.hasNext();){var n=e.next();this._edges.add(n);var i=new ze(n,!0),r=new ze(n,!1);i.setSym(r),r.setSym(i),this.add(i),this.add(r)}},Ye.prototype.add=function(t){this._nodes.add(t),this._edgeEndList.add(t)},Ye.prototype.getNodes=function(){return this._nodes.values()},Ye.prototype.findEdge=function(t,e){for(var n=0;n<this._edges.size();n++){var i=this._edges.get(n),r=i.getCoordinates();if(t.equals(r[0])&&e.equals(r[1]))return i}return null},Ye.prototype.interfaces_=function(){return[]},Ye.prototype.getClass=function(){return Ye},Ye.linkResultDirectedEdges=function(t){for(var e=t.iterator();e.hasNext();){e.next().getEdges().linkResultDirectedEdges()}};var ke=function(){this._geometryFactory=null,this._shellList=new Nt;var t=arguments[0];this._geometryFactory=t};ke.prototype.sortShellsAndHoles=function(t,e,n){for(var i=t.iterator();i.hasNext();){var r=i.next();r.isHole()?n.add(r):e.add(r)}},ke.prototype.computePolygons=function(t){for(var e=new Nt,n=t.iterator();n.hasNext();){var i=n.next().toPolygon(this._geometryFactory);e.add(i)}return e},ke.prototype.placeFreeHoles=function(t,e){for(var n=e.iterator();n.hasNext();){var i=n.next();if(null===i.getShell()){var r=this.findEdgeRingContaining(i,t);if(null===r)throw new we(\"unable to assign hole to a shell\",i.getCoordinate(0));i.setShell(r)}}},ke.prototype.buildMinimalEdgeRings=function(t,e,n){for(var i=new Nt,r=t.iterator();r.hasNext();){var o=r.next();if(o.getMaxNodeDegree()>2){o.linkDirectedEdgesForMinimalEdgeRings();var s=o.buildMinimalRings(),a=this.findShell(s);null!==a?(this.placePolygonHoles(a,s),e.add(a)):n.addAll(s)}else i.add(o)}return i},ke.prototype.containsPoint=function(t){for(var e=this._shellList.iterator();e.hasNext();){if(e.next().containsPoint(t))return!0}return!1},ke.prototype.buildMaximalEdgeRings=function(t){for(var e=new Nt,n=t.iterator();n.hasNext();){var i=n.next();if(i.isInResult()&&i.getLabel().isArea()&&null===i.getEdgeRing()){var r=new Ae(i,this._geometryFactory);e.add(r),r.setInResult()}}return e},ke.prototype.placePolygonHoles=function(t,e){for(var n=e.iterator();n.hasNext();){var i=n.next();i.isHole()&&i.setShell(t)}},ke.prototype.getPolygons=function(){return this.computePolygons(this._shellList)},ke.prototype.findEdgeRingContaining=function(t,e){for(var n=t.getLinearRing(),i=n.getEnvelopeInternal(),r=n.getCoordinateN(0),o=null,s=null,a=e.iterator();a.hasNext();){var u=a.next(),l=u.getLinearRing(),c=l.getEnvelopeInternal();null!==o&&(s=o.getLinearRing().getEnvelopeInternal());var p=!1;c.contains(i)&&at.isPointInRing(r,l.getCoordinates())&&(p=!0),p&&(null===o||s.contains(c))&&(o=u)}return o},ke.prototype.findShell=function(t){for(var e=0,n=null,i=t.iterator();i.hasNext();){var r=i.next();r.isHole()||(n=r,e++)}return et.isTrue(e<=1,\"found two shells in MinimalEdgeRing list\"),n},ke.prototype.add=function(){if(1===arguments.length){var t=arguments[0];this.add(t.getEdgeEnds(),t.getNodes())}else if(2===arguments.length){var e=arguments[0],n=arguments[1];Ye.linkResultDirectedEdges(n);var i=this.buildMaximalEdgeRings(e),r=new Nt,o=this.buildMinimalEdgeRings(i,this._shellList,r);this.sortShellsAndHoles(o,this._shellList,r),this.placeFreeHoles(this._shellList,r)}},ke.prototype.interfaces_=function(){return[]},ke.prototype.getClass=function(){return ke};var je=function(){};je.prototype.getBounds=function(){},je.prototype.interfaces_=function(){return[]},je.prototype.getClass=function(){return je};var He=function(){this._bounds=null,this._item=null;var t=arguments[0],e=arguments[1];this._bounds=t,this._item=e};He.prototype.getItem=function(){return this._item},He.prototype.getBounds=function(){return this._bounds},He.prototype.interfaces_=function(){return[je,e]},He.prototype.getClass=function(){return He};var We=function(){this._size=null,this._items=null,this._size=0,this._items=new Nt,this._items.add(null)};We.prototype.poll=function(){if(this.isEmpty())return null;var t=this._items.get(1);return this._items.set(1,this._items.get(this._size)),this._size-=1,this.reorder(1),t},We.prototype.size=function(){return this._size},We.prototype.reorder=function(t){for(var e=null,n=this._items.get(t);2*t<=this._size&&((e=2*t)!==this._size&&this._items.get(e+1).compareTo(this._items.get(e))<0&&e++,this._items.get(e).compareTo(n)<0);t=e)this._items.set(t,this._items.get(e));this._items.set(t,n)},We.prototype.clear=function(){this._size=0,this._items.clear()},We.prototype.isEmpty=function(){return 0===this._size},We.prototype.add=function(t){this._items.add(null),this._size+=1;var e=this._size;for(this._items.set(0,t);t.compareTo(this._items.get(Math.trunc(e/2)))<0;e/=2)this._items.set(e,this._items.get(Math.trunc(e/2)));this._items.set(e,t)},We.prototype.interfaces_=function(){return[]},We.prototype.getClass=function(){return We};var Ke=function(){};Ke.prototype.visitItem=function(t){},Ke.prototype.interfaces_=function(){return[]},Ke.prototype.getClass=function(){return Ke};var Je=function(){};Je.prototype.insert=function(t,e){},Je.prototype.remove=function(t,e){},Je.prototype.query=function(){},Je.prototype.interfaces_=function(){return[]},Je.prototype.getClass=function(){return Je};var Qe=function(){if(this._childBoundables=new Nt,this._bounds=null,this._level=null,0===arguments.length);else if(1===arguments.length){var t=arguments[0];this._level=t}},Ze={serialVersionUID:{configurable:!0}};Qe.prototype.getLevel=function(){return this._level},Qe.prototype.size=function(){return this._childBoundables.size()},Qe.prototype.getChildBoundables=function(){return this._childBoundables},Qe.prototype.addChildBoundable=function(t){et.isTrue(null===this._bounds),this._childBoundables.add(t)},Qe.prototype.isEmpty=function(){return this._childBoundables.isEmpty()},Qe.prototype.getBounds=function(){return null===this._bounds&&(this._bounds=this.computeBounds()),this._bounds},Qe.prototype.interfaces_=function(){return[je,e]},Qe.prototype.getClass=function(){return Qe},Ze.serialVersionUID.get=function(){return 0x5a1e55ec41369800},Object.defineProperties(Qe,Ze);var $e=function(){};$e.reverseOrder=function(){return{compare:function(t,e){return e.compareTo(t)}}},$e.min=function(t){return $e.sort(t),t.get(0)},$e.sort=function(t,e){var n=t.toArray();e?Gt.sort(n,e):Gt.sort(n);for(var i=t.iterator(),r=0,o=n.length;r<o;r++)i.next(),i.set(n[r])},$e.singletonList=function(t){var e=new Nt;return e.add(t),e};var tn=function(){this._boundable1=null,this._boundable2=null,this._distance=null,this._itemDistance=null;var t=arguments[0],e=arguments[1],n=arguments[2];this._boundable1=t,this._boundable2=e,this._itemDistance=n,this._distance=this.distance()};tn.prototype.expandToQueue=function(t,e){var n=tn.isComposite(this._boundable1),i=tn.isComposite(this._boundable2);if(n&&i)return tn.area(this._boundable1)>tn.area(this._boundable2)?(this.expand(this._boundable1,this._boundable2,t,e),null):(this.expand(this._boundable2,this._boundable1,t,e),null);if(n)return this.expand(this._boundable1,this._boundable2,t,e),null;if(i)return this.expand(this._boundable2,this._boundable1,t,e),null;throw new m(\"neither boundable is composite\")},tn.prototype.isLeaves=function(){return!(tn.isComposite(this._boundable1)||tn.isComposite(this._boundable2))},tn.prototype.compareTo=function(t){var e=t;return this._distance<e._distance?-1:this._distance>e._distance?1:0},tn.prototype.expand=function(t,e,n,i){for(var r=t.getChildBoundables().iterator();r.hasNext();){var o=r.next(),s=new tn(o,e,this._itemDistance);s.getDistance()<i&&n.add(s)}},tn.prototype.getBoundable=function(t){return 0===t?this._boundable1:this._boundable2},tn.prototype.getDistance=function(){return this._distance},tn.prototype.distance=function(){return this.isLeaves()?this._itemDistance.distance(this._boundable1,this._boundable2):this._boundable1.getBounds().distance(this._boundable2.getBounds())},tn.prototype.interfaces_=function(){return[E]},tn.prototype.getClass=function(){return tn},tn.area=function(t){return t.getBounds().getArea()},tn.isComposite=function(t){return t instanceof Qe};var en=function t(){if(this._root=null,this._built=!1,this._itemBoundables=new Nt,this._nodeCapacity=null,0===arguments.length){var e=t.DEFAULT_NODE_CAPACITY;this._nodeCapacity=e}else if(1===arguments.length){var n=arguments[0];et.isTrue(n>1,\"Node capacity must be greater than 1\"),this._nodeCapacity=n}},nn={IntersectsOp:{configurable:!0},serialVersionUID:{configurable:!0},DEFAULT_NODE_CAPACITY:{configurable:!0}};en.prototype.getNodeCapacity=function(){return this._nodeCapacity},en.prototype.lastNode=function(t){return t.get(t.size()-1)},en.prototype.size=function(){if(0===arguments.length)return this.isEmpty()?0:(this.build(),this.size(this._root));if(1===arguments.length){for(var t=0,e=arguments[0].getChildBoundables().iterator();e.hasNext();){var n=e.next();n instanceof Qe?t+=this.size(n):n instanceof He&&(t+=1)}return t}},en.prototype.removeItem=function(t,e){for(var n=null,i=t.getChildBoundables().iterator();i.hasNext();){var r=i.next();r instanceof He&&r.getItem()===e&&(n=r)}return null!==n&&(t.getChildBoundables().remove(n),!0)},en.prototype.itemsTree=function(){if(0===arguments.length){this.build();var t=this.itemsTree(this._root);return null===t?new Nt:t}if(1===arguments.length){for(var e=arguments[0],n=new Nt,i=e.getChildBoundables().iterator();i.hasNext();){var r=i.next();if(r instanceof Qe){var o=this.itemsTree(r);null!==o&&n.add(o)}else r instanceof He?n.add(r.getItem()):et.shouldNeverReachHere()}return n.size()<=0?null:n}},en.prototype.insert=function(t,e){et.isTrue(!this._built,\"Cannot insert items into an STR packed R-tree after it has been built.\"),this._itemBoundables.add(new He(t,e))},en.prototype.boundablesAtLevel=function(){if(1===arguments.length){var t=arguments[0],e=new Nt;return this.boundablesAtLevel(t,this._root,e),e}if(3===arguments.length){var n=arguments[0],i=arguments[1],r=arguments[2];if(et.isTrue(n>-2),i.getLevel()===n)return r.add(i),null;for(var o=i.getChildBoundables().iterator();o.hasNext();){var s=o.next();s instanceof Qe?this.boundablesAtLevel(n,s,r):(et.isTrue(s instanceof He),-1===n&&r.add(s))}return null}},en.prototype.query=function(){if(1===arguments.length){var t=arguments[0];this.build();var e=new Nt;return this.isEmpty()?e:(this.getIntersectsOp().intersects(this._root.getBounds(),t)&&this.query(t,this._root,e),e)}if(2===arguments.length){var n=arguments[0],i=arguments[1];if(this.build(),this.isEmpty())return null;this.getIntersectsOp().intersects(this._root.getBounds(),n)&&this.query(n,this._root,i)}else if(3===arguments.length)if(T(arguments[2],Ke)&&arguments[0]instanceof Object&&arguments[1]instanceof Qe)for(var r=arguments[0],o=arguments[1],s=arguments[2],a=o.getChildBoundables(),u=0;u<a.size();u++){var l=a.get(u);this.getIntersectsOp().intersects(l.getBounds(),r)&&(l instanceof Qe?this.query(r,l,s):l instanceof He?s.visitItem(l.getItem()):et.shouldNeverReachHere())}else if(T(arguments[2],xt)&&arguments[0]instanceof Object&&arguments[1]instanceof Qe)for(var c=arguments[0],p=arguments[1],h=arguments[2],f=p.getChildBoundables(),g=0;g<f.size();g++){var d=f.get(g);this.getIntersectsOp().intersects(d.getBounds(),c)&&(d instanceof Qe?this.query(c,d,h):d instanceof He?h.add(d.getItem()):et.shouldNeverReachHere())}},en.prototype.build=function(){if(this._built)return null;this._root=this._itemBoundables.isEmpty()?this.createNode(0):this.createHigherLevels(this._itemBoundables,-1),this._itemBoundables=null,this._built=!0},en.prototype.getRoot=function(){return this.build(),this._root},en.prototype.remove=function(){if(2===arguments.length){var t=arguments[0],e=arguments[1];return this.build(),!!this.getIntersectsOp().intersects(this._root.getBounds(),t)&&this.remove(t,this._root,e)}if(3===arguments.length){var n=arguments[0],i=arguments[1],r=arguments[2],o=this.removeItem(i,r);if(o)return!0;for(var s=null,a=i.getChildBoundables().iterator();a.hasNext();){var u=a.next();if(this.getIntersectsOp().intersects(u.getBounds(),n)&&(u instanceof Qe&&(o=this.remove(n,u,r)))){s=u;break}}return null!==s&&s.getChildBoundables().isEmpty()&&i.getChildBoundables().remove(s),o}},en.prototype.createHigherLevels=function(t,e){et.isTrue(!t.isEmpty());var n=this.createParentBoundables(t,e+1);return 1===n.size()?n.get(0):this.createHigherLevels(n,e+1)},en.prototype.depth=function(){if(0===arguments.length)return this.isEmpty()?0:(this.build(),this.depth(this._root));if(1===arguments.length){for(var t=0,e=arguments[0].getChildBoundables().iterator();e.hasNext();){var n=e.next();if(n instanceof Qe){var i=this.depth(n);i>t&&(t=i)}}return t+1}},en.prototype.createParentBoundables=function(t,e){et.isTrue(!t.isEmpty());var n=new Nt;n.add(this.createNode(e));var i=new Nt(t);$e.sort(i,this.getComparator());for(var r=i.iterator();r.hasNext();){var o=r.next();this.lastNode(n).getChildBoundables().size()===this.getNodeCapacity()&&n.add(this.createNode(e)),this.lastNode(n).addChildBoundable(o)}return n},en.prototype.isEmpty=function(){return this._built?this._root.isEmpty():this._itemBoundables.isEmpty()},en.prototype.interfaces_=function(){return[e]},en.prototype.getClass=function(){return en},en.compareDoubles=function(t,e){return t>e?1:t<e?-1:0},nn.IntersectsOp.get=function(){return rn},nn.serialVersionUID.get=function(){return-0x35ef64c82d4c5400},nn.DEFAULT_NODE_CAPACITY.get=function(){return 10},Object.defineProperties(en,nn);var rn=function(){},on=function(){};on.prototype.distance=function(t,e){},on.prototype.interfaces_=function(){return[]},on.prototype.getClass=function(){return on};var sn=function(t){function n(e){e=e||n.DEFAULT_NODE_CAPACITY,t.call(this,e)}t&&(n.__proto__=t),(n.prototype=Object.create(t&&t.prototype)).constructor=n;var i={STRtreeNode:{configurable:!0},serialVersionUID:{configurable:!0},xComparator:{configurable:!0},yComparator:{configurable:!0},intersectsOp:{configurable:!0},DEFAULT_NODE_CAPACITY:{configurable:!0}};return n.prototype.createParentBoundablesFromVerticalSlices=function(t,e){et.isTrue(t.length>0);for(var n=new Nt,i=0;i<t.length;i++)n.addAll(this.createParentBoundablesFromVerticalSlice(t[i],e));return n},n.prototype.createNode=function(t){return new an(t)},n.prototype.size=function(){return 0===arguments.length?t.prototype.size.call(this):t.prototype.size.apply(this,arguments)},n.prototype.insert=function(){if(2!==arguments.length)return t.prototype.insert.apply(this,arguments);var e=arguments[0],n=arguments[1];if(e.isNull())return null;t.prototype.insert.call(this,e,n)},n.prototype.getIntersectsOp=function(){return n.intersectsOp},n.prototype.verticalSlices=function(t,e){for(var n=Math.trunc(Math.ceil(t.size()/e)),i=new Array(e).fill(null),r=t.iterator(),o=0;o<e;o++){i[o]=new Nt;for(var s=0;r.hasNext()&&s<n;){var a=r.next();i[o].add(a),s++}}return i},n.prototype.query=function(){if(1===arguments.length){var e=arguments[0];return t.prototype.query.call(this,e)}if(2===arguments.length){var n=arguments[0],i=arguments[1];t.prototype.query.call(this,n,i)}else if(3===arguments.length)if(T(arguments[2],Ke)&&arguments[0]instanceof Object&&arguments[1]instanceof Qe){var r=arguments[0],o=arguments[1],s=arguments[2];t.prototype.query.call(this,r,o,s)}else if(T(arguments[2],xt)&&arguments[0]instanceof Object&&arguments[1]instanceof Qe){var a=arguments[0],u=arguments[1],l=arguments[2];t.prototype.query.call(this,a,u,l)}},n.prototype.getComparator=function(){return n.yComparator},n.prototype.createParentBoundablesFromVerticalSlice=function(e,n){return t.prototype.createParentBoundables.call(this,e,n)},n.prototype.remove=function(){if(2===arguments.length){var e=arguments[0],n=arguments[1];return t.prototype.remove.call(this,e,n)}return t.prototype.remove.apply(this,arguments)},n.prototype.depth=function(){return 0===arguments.length?t.prototype.depth.call(this):t.prototype.depth.apply(this,arguments)},n.prototype.createParentBoundables=function(t,e){et.isTrue(!t.isEmpty());var i=Math.trunc(Math.ceil(t.size()/this.getNodeCapacity())),r=new Nt(t);$e.sort(r,n.xComparator);var o=this.verticalSlices(r,Math.trunc(Math.ceil(Math.sqrt(i))));return this.createParentBoundablesFromVerticalSlices(o,e)},n.prototype.nearestNeighbour=function(){if(1===arguments.length){if(T(arguments[0],on)){var t=arguments[0],e=new tn(this.getRoot(),this.getRoot(),t);return this.nearestNeighbour(e)}if(arguments[0]instanceof tn){var i=arguments[0];return this.nearestNeighbour(i,v.POSITIVE_INFINITY)}}else if(2===arguments.length){if(arguments[0]instanceof n&&T(arguments[1],on)){var r=arguments[0],o=arguments[1],s=new tn(this.getRoot(),r.getRoot(),o);return this.nearestNeighbour(s)}if(arguments[0]instanceof tn&&\"number\"==typeof arguments[1]){var a=arguments[0],u=arguments[1],l=null,c=new We;for(c.add(a);!c.isEmpty()&&u>0;){var p=c.poll(),h=p.getDistance();if(h>=u)break;p.isLeaves()?(u=h,l=p):p.expandToQueue(c,u)}return[l.getBoundable(0).getItem(),l.getBoundable(1).getItem()]}}else if(3===arguments.length){var f=arguments[0],g=arguments[1],d=arguments[2],y=new He(f,g),_=new tn(this.getRoot(),y,d);return this.nearestNeighbour(_)[0]}},n.prototype.interfaces_=function(){return[Je,e]},n.prototype.getClass=function(){return n},n.centreX=function(t){return n.avg(t.getMinX(),t.getMaxX())},n.avg=function(t,e){return(t+e)/2},n.centreY=function(t){return n.avg(t.getMinY(),t.getMaxY())},i.STRtreeNode.get=function(){return an},i.serialVersionUID.get=function(){return 0x39920f7d5f261e0},i.xComparator.get=function(){return{interfaces_:function(){return[N]},compare:function(e,i){return t.compareDoubles(n.centreX(e.getBounds()),n.centreX(i.getBounds()))}}},i.yComparator.get=function(){return{interfaces_:function(){return[N]},compare:function(e,i){return t.compareDoubles(n.centreY(e.getBounds()),n.centreY(i.getBounds()))}}},i.intersectsOp.get=function(){return{interfaces_:function(){return[t.IntersectsOp]},intersects:function(t,e){return t.intersects(e)}}},i.DEFAULT_NODE_CAPACITY.get=function(){return 10},Object.defineProperties(n,i),n}(en),an=function(t){function e(){var e=arguments[0];t.call(this,e)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.computeBounds=function(){for(var t=null,e=this.getChildBoundables().iterator();e.hasNext();){var n=e.next();null===t?t=new j(n.getBounds()):t.expandToInclude(n.getBounds())}return t},e.prototype.interfaces_=function(){return[]},e.prototype.getClass=function(){return e},e}(Qe),un=function(){};un.prototype.interfaces_=function(){return[]},un.prototype.getClass=function(){return un},un.relativeSign=function(t,e){return t<e?-1:t>e?1:0},un.compare=function(t,e,n){if(e.equals2D(n))return 0;var i=un.relativeSign(e.x,n.x),r=un.relativeSign(e.y,n.y);switch(t){case 0:return un.compareValue(i,r);case 1:return un.compareValue(r,i);case 2:return un.compareValue(r,-i);case 3:return un.compareValue(-i,r);case 4:return un.compareValue(-i,-r);case 5:return un.compareValue(-r,-i);case 6:return un.compareValue(-r,i);case 7:return un.compareValue(i,-r)}return et.shouldNeverReachHere(\"invalid octant value\"),0},un.compareValue=function(t,e){return t<0?-1:t>0?1:e<0?-1:e>0?1:0};var ln=function(){this._segString=null,this.coord=null,this.segmentIndex=null,this._segmentOctant=null,this._isInterior=null;var t=arguments[0],e=arguments[1],n=arguments[2],i=arguments[3];this._segString=t,this.coord=new C(e),this.segmentIndex=n,this._segmentOctant=i,this._isInterior=!e.equals2D(t.getCoordinate(n))};ln.prototype.getCoordinate=function(){return this.coord},ln.prototype.print=function(t){t.print(this.coord),t.print(\" seg # = \"+this.segmentIndex)},ln.prototype.compareTo=function(t){var e=t;return this.segmentIndex<e.segmentIndex?-1:this.segmentIndex>e.segmentIndex?1:this.coord.equals2D(e.coord)?0:un.compare(this._segmentOctant,this.coord,e.coord)},ln.prototype.isEndPoint=function(t){return 0===this.segmentIndex&&!this._isInterior||this.segmentIndex===t},ln.prototype.isInterior=function(){return this._isInterior},ln.prototype.interfaces_=function(){return[E]},ln.prototype.getClass=function(){return ln};var cn=function(){this._nodeMap=new p,this._edge=null;var t=arguments[0];this._edge=t};cn.prototype.getSplitCoordinates=function(){var t=new St;this.addEndpoints();for(var e=this.iterator(),n=e.next();e.hasNext();){var i=e.next();this.addEdgeCoordinates(n,i,t),n=i}return t.toCoordinateArray()},cn.prototype.addCollapsedNodes=function(){var t=new Nt;this.findCollapsesFromInsertedNodes(t),this.findCollapsesFromExistingVertices(t);for(var e=t.iterator();e.hasNext();){var n=e.next().intValue();this.add(this._edge.getCoordinate(n),n)}},cn.prototype.print=function(t){t.println(\"Intersections:\");for(var e=this.iterator();e.hasNext();){e.next().print(t)}},cn.prototype.findCollapsesFromExistingVertices=function(t){for(var e=0;e<this._edge.size()-2;e++){var n=this._edge.getCoordinate(e),i=this._edge.getCoordinate(e+2);n.equals2D(i)&&t.add(new M(e+1))}},cn.prototype.addEdgeCoordinates=function(t,e,n){var i=this._edge.getCoordinate(e.segmentIndex),r=e.isInterior()||!e.coord.equals2D(i);n.add(new C(t.coord),!1);for(var o=t.segmentIndex+1;o<=e.segmentIndex;o++)n.add(this._edge.getCoordinate(o));r&&n.add(new C(e.coord))},cn.prototype.iterator=function(){return this._nodeMap.values().iterator()},cn.prototype.addSplitEdges=function(t){this.addEndpoints(),this.addCollapsedNodes();for(var e=this.iterator(),n=e.next();e.hasNext();){var i=e.next(),r=this.createSplitEdge(n,i);t.add(r),n=i}},cn.prototype.findCollapseIndex=function(t,e,n){if(!t.coord.equals2D(e.coord))return!1;var i=e.segmentIndex-t.segmentIndex;return e.isInterior()||i--,1===i&&(n[0]=t.segmentIndex+1,!0)},cn.prototype.findCollapsesFromInsertedNodes=function(t){for(var e=new Array(1).fill(null),n=this.iterator(),i=n.next();n.hasNext();){var r=n.next();this.findCollapseIndex(i,r,e)&&t.add(new M(e[0])),i=r}},cn.prototype.getEdge=function(){return this._edge},cn.prototype.addEndpoints=function(){var t=this._edge.size()-1;this.add(this._edge.getCoordinate(0),0),this.add(this._edge.getCoordinate(t),t)},cn.prototype.createSplitEdge=function(t,e){var n=e.segmentIndex-t.segmentIndex+2,i=this._edge.getCoordinate(e.segmentIndex),r=e.isInterior()||!e.coord.equals2D(i);r||n--;var o=new Array(n).fill(null),s=0;o[s++]=new C(t.coord);for(var a=t.segmentIndex+1;a<=e.segmentIndex;a++)o[s++]=this._edge.getCoordinate(a);return r&&(o[s]=new C(e.coord)),new gn(o,this._edge.getData())},cn.prototype.add=function(t,e){var n=new ln(this._edge,t,e,this._edge.getSegmentOctant(e)),i=this._nodeMap.get(n);return null!==i?(et.isTrue(i.coord.equals2D(t),\"Found equal nodes with different coordinates\"),i):(this._nodeMap.put(n,n),n)},cn.prototype.checkSplitEdgesCorrectness=function(t){var e=this._edge.getCoordinates(),n=t.get(0).getCoordinate(0);if(!n.equals2D(e[0]))throw new $(\"bad split edge start point at \"+n);var i=t.get(t.size()-1).getCoordinates(),r=i[i.length-1];if(!r.equals2D(e[e.length-1]))throw new $(\"bad split edge end point at \"+r)},cn.prototype.interfaces_=function(){return[]},cn.prototype.getClass=function(){return cn};var pn=function(){};pn.prototype.interfaces_=function(){return[]},pn.prototype.getClass=function(){return pn},pn.octant=function(){if(\"number\"==typeof arguments[0]&&\"number\"==typeof arguments[1]){var t=arguments[0],e=arguments[1];if(0===t&&0===e)throw new m(\"Cannot compute the octant for point ( \"+t+\", \"+e+\" )\");var n=Math.abs(t),i=Math.abs(e);return t>=0?e>=0?n>=i?0:1:n>=i?7:6:e>=0?n>=i?3:2:n>=i?4:5}if(arguments[0]instanceof C&&arguments[1]instanceof C){var r=arguments[0],o=arguments[1],s=o.x-r.x,a=o.y-r.y;if(0===s&&0===a)throw new m(\"Cannot compute the octant for two identical points \"+r);return pn.octant(s,a)}};var hn=function(){};hn.prototype.getCoordinates=function(){},hn.prototype.size=function(){},hn.prototype.getCoordinate=function(t){},hn.prototype.isClosed=function(){},hn.prototype.setData=function(t){},hn.prototype.getData=function(){},hn.prototype.interfaces_=function(){return[]},hn.prototype.getClass=function(){return hn};var fn=function(){};fn.prototype.addIntersection=function(t,e){},fn.prototype.interfaces_=function(){return[hn]},fn.prototype.getClass=function(){return fn};var gn=function(){this._nodeList=new cn(this),this._pts=null,this._data=null;var t=arguments[0],e=arguments[1];this._pts=t,this._data=e};gn.prototype.getCoordinates=function(){return this._pts},gn.prototype.size=function(){return this._pts.length},gn.prototype.getCoordinate=function(t){return this._pts[t]},gn.prototype.isClosed=function(){return this._pts[0].equals(this._pts[this._pts.length-1])},gn.prototype.getSegmentOctant=function(t){return t===this._pts.length-1?-1:this.safeOctant(this.getCoordinate(t),this.getCoordinate(t+1))},gn.prototype.setData=function(t){this._data=t},gn.prototype.safeOctant=function(t,e){return t.equals2D(e)?0:pn.octant(t,e)},gn.prototype.getData=function(){return this._data},gn.prototype.addIntersection=function(){if(2===arguments.length){var t=arguments[0],e=arguments[1];this.addIntersectionNode(t,e)}else if(4===arguments.length){var n=arguments[0],i=arguments[1],r=arguments[3],o=new C(n.getIntersection(r));this.addIntersection(o,i)}},gn.prototype.toString=function(){return Z.toLineString(new ue(this._pts))},gn.prototype.getNodeList=function(){return this._nodeList},gn.prototype.addIntersectionNode=function(t,e){var n=e,i=n+1;if(i<this._pts.length){var r=this._pts[i];t.equals2D(r)&&(n=i)}return this._nodeList.add(t,n)},gn.prototype.addIntersections=function(t,e,n){for(var i=0;i<t.getIntersectionNum();i++)this.addIntersection(t,e,n,i)},gn.prototype.interfaces_=function(){return[fn]},gn.prototype.getClass=function(){return gn},gn.getNodedSubstrings=function(){if(1===arguments.length){var t=arguments[0],e=new Nt;return gn.getNodedSubstrings(t,e),e}if(2===arguments.length)for(var n=arguments[0],i=arguments[1],r=n.iterator();r.hasNext();){r.next().getNodeList().addSplitEdges(i)}};var dn=function(){if(this.p0=null,this.p1=null,0===arguments.length)this.p0=new C,this.p1=new C;else if(1===arguments.length){var t=arguments[0];this.p0=new C(t.p0),this.p1=new C(t.p1)}else if(2===arguments.length)this.p0=arguments[0],this.p1=arguments[1];else if(4===arguments.length){var e=arguments[0],n=arguments[1],i=arguments[2],r=arguments[3];this.p0=new C(e,n),this.p1=new C(i,r)}},yn={serialVersionUID:{configurable:!0}};dn.prototype.minX=function(){return Math.min(this.p0.x,this.p1.x)},dn.prototype.orientationIndex=function(){if(arguments[0]instanceof dn){var t=arguments[0],e=at.orientationIndex(this.p0,this.p1,t.p0),n=at.orientationIndex(this.p0,this.p1,t.p1);return e>=0&&n>=0?Math.max(e,n):e<=0&&n<=0?Math.max(e,n):0}if(arguments[0]instanceof C){var i=arguments[0];return at.orientationIndex(this.p0,this.p1,i)}},dn.prototype.toGeometry=function(t){return t.createLineString([this.p0,this.p1])},dn.prototype.isVertical=function(){return this.p0.x===this.p1.x},dn.prototype.equals=function(t){if(!(t instanceof dn))return!1;var e=t;return this.p0.equals(e.p0)&&this.p1.equals(e.p1)},dn.prototype.intersection=function(t){var e=new rt;return e.computeIntersection(this.p0,this.p1,t.p0,t.p1),e.hasIntersection()?e.getIntersection(0):null},dn.prototype.project=function(){if(arguments[0]instanceof C){var t=arguments[0];if(t.equals(this.p0)||t.equals(this.p1))return new C(t);var e=this.projectionFactor(t),n=new C;return n.x=this.p0.x+e*(this.p1.x-this.p0.x),n.y=this.p0.y+e*(this.p1.y-this.p0.y),n}if(arguments[0]instanceof dn){var i=arguments[0],r=this.projectionFactor(i.p0),o=this.projectionFactor(i.p1);if(r>=1&&o>=1)return null;if(r<=0&&o<=0)return null;var s=this.project(i.p0);r<0&&(s=this.p0),r>1&&(s=this.p1);var a=this.project(i.p1);return o<0&&(a=this.p0),o>1&&(a=this.p1),new dn(s,a)}},dn.prototype.normalize=function(){this.p1.compareTo(this.p0)<0&&this.reverse()},dn.prototype.angle=function(){return Math.atan2(this.p1.y-this.p0.y,this.p1.x-this.p0.x)},dn.prototype.getCoordinate=function(t){return 0===t?this.p0:this.p1},dn.prototype.distancePerpendicular=function(t){return at.distancePointLinePerpendicular(t,this.p0,this.p1)},dn.prototype.minY=function(){return Math.min(this.p0.y,this.p1.y)},dn.prototype.midPoint=function(){return dn.midPoint(this.p0,this.p1)},dn.prototype.projectionFactor=function(t){if(t.equals(this.p0))return 0;if(t.equals(this.p1))return 1;var e=this.p1.x-this.p0.x,n=this.p1.y-this.p0.y,i=e*e+n*n;if(i<=0)return v.NaN;return((t.x-this.p0.x)*e+(t.y-this.p0.y)*n)/i},dn.prototype.closestPoints=function(t){var e=this.intersection(t);if(null!==e)return[e,e];var n=new Array(2).fill(null),i=v.MAX_VALUE,r=null,o=this.closestPoint(t.p0);i=o.distance(t.p0),n[0]=o,n[1]=t.p0;var s=this.closestPoint(t.p1);(r=s.distance(t.p1))<i&&(i=r,n[0]=s,n[1]=t.p1);var a=t.closestPoint(this.p0);(r=a.distance(this.p0))<i&&(i=r,n[0]=this.p0,n[1]=a);var u=t.closestPoint(this.p1);return(r=u.distance(this.p1))<i&&(i=r,n[0]=this.p1,n[1]=u),n},dn.prototype.closestPoint=function(t){var e=this.projectionFactor(t);if(e>0&&e<1)return this.project(t);return this.p0.distance(t)<this.p1.distance(t)?this.p0:this.p1},dn.prototype.maxX=function(){return Math.max(this.p0.x,this.p1.x)},dn.prototype.getLength=function(){return this.p0.distance(this.p1)},dn.prototype.compareTo=function(t){var e=t,n=this.p0.compareTo(e.p0);return 0!==n?n:this.p1.compareTo(e.p1)},dn.prototype.reverse=function(){var t=this.p0;this.p0=this.p1,this.p1=t},dn.prototype.equalsTopo=function(t){return this.p0.equals(t.p0)&&(this.p1.equals(t.p1)||this.p0.equals(t.p1))&&this.p1.equals(t.p0)},dn.prototype.lineIntersection=function(t){try{return k.intersection(this.p0,this.p1,t.p0,t.p1)}catch(t){if(!(t instanceof X))throw t}return null},dn.prototype.maxY=function(){return Math.max(this.p0.y,this.p1.y)},dn.prototype.pointAlongOffset=function(t,e){var n=this.p0.x+t*(this.p1.x-this.p0.x),i=this.p0.y+t*(this.p1.y-this.p0.y),r=this.p1.x-this.p0.x,o=this.p1.y-this.p0.y,s=Math.sqrt(r*r+o*o),a=0,u=0;if(0!==e){if(s<=0)throw new Error(\"Cannot compute offset from zero-length line segment\");a=e*r/s,u=e*o/s}return new C(n-u,i+a)},dn.prototype.setCoordinates=function(){if(1===arguments.length){var t=arguments[0];this.setCoordinates(t.p0,t.p1)}else if(2===arguments.length){var e=arguments[0],n=arguments[1];this.p0.x=e.x,this.p0.y=e.y,this.p1.x=n.x,this.p1.y=n.y}},dn.prototype.segmentFraction=function(t){var e=this.projectionFactor(t);return e<0?e=0:(e>1||v.isNaN(e))&&(e=1),e},dn.prototype.toString=function(){return\"LINESTRING( \"+this.p0.x+\" \"+this.p0.y+\", \"+this.p1.x+\" \"+this.p1.y+\")\"},dn.prototype.isHorizontal=function(){return this.p0.y===this.p1.y},dn.prototype.distance=function(){if(arguments[0]instanceof dn){var t=arguments[0];return at.distanceLineLine(this.p0,this.p1,t.p0,t.p1)}if(arguments[0]instanceof C){var e=arguments[0];return at.distancePointLine(e,this.p0,this.p1)}},dn.prototype.pointAlong=function(t){var e=new C;return e.x=this.p0.x+t*(this.p1.x-this.p0.x),e.y=this.p0.y+t*(this.p1.y-this.p0.y),e},dn.prototype.hashCode=function(){var t=v.doubleToLongBits(this.p0.x);t^=31*v.doubleToLongBits(this.p0.y);var e=Math.trunc(t)^Math.trunc(t>>32),n=v.doubleToLongBits(this.p1.x);n^=31*v.doubleToLongBits(this.p1.y);return e^(Math.trunc(n)^Math.trunc(n>>32))},dn.prototype.interfaces_=function(){return[E,e]},dn.prototype.getClass=function(){return dn},dn.midPoint=function(t,e){return new C((t.x+e.x)/2,(t.y+e.y)/2)},yn.serialVersionUID.get=function(){return 0x2d2172135f411c00},Object.defineProperties(dn,yn);var _n=function(){this.tempEnv1=new j,this.tempEnv2=new j,this._overlapSeg1=new dn,this._overlapSeg2=new dn};_n.prototype.overlap=function(){if(2===arguments.length);else if(4===arguments.length){var t=arguments[0],e=arguments[1],n=arguments[2],i=arguments[3];t.getLineSegment(e,this._overlapSeg1),n.getLineSegment(i,this._overlapSeg2),this.overlap(this._overlapSeg1,this._overlapSeg2)}},_n.prototype.interfaces_=function(){return[]},_n.prototype.getClass=function(){return _n};var mn=function(){this._pts=null,this._start=null,this._end=null,this._env=null,this._context=null,this._id=null;var t=arguments[0],e=arguments[1],n=arguments[2],i=arguments[3];this._pts=t,this._start=e,this._end=n,this._context=i};mn.prototype.getLineSegment=function(t,e){e.p0=this._pts[t],e.p1=this._pts[t+1]},mn.prototype.computeSelect=function(t,e,n,i){var r=this._pts[e],o=this._pts[n];if(i.tempEnv1.init(r,o),n-e==1)return i.select(this,e),null;if(!t.intersects(i.tempEnv1))return null;var s=Math.trunc((e+n)/2);e<s&&this.computeSelect(t,e,s,i),s<n&&this.computeSelect(t,s,n,i)},mn.prototype.getCoordinates=function(){for(var t=new Array(this._end-this._start+1).fill(null),e=0,n=this._start;n<=this._end;n++)t[e++]=this._pts[n];return t},mn.prototype.computeOverlaps=function(t,e){this.computeOverlapsInternal(this._start,this._end,t,t._start,t._end,e)},mn.prototype.setId=function(t){this._id=t},mn.prototype.select=function(t,e){this.computeSelect(t,this._start,this._end,e)},mn.prototype.getEnvelope=function(){if(null===this._env){var t=this._pts[this._start],e=this._pts[this._end];this._env=new j(t,e)}return this._env},mn.prototype.getEndIndex=function(){return this._end},mn.prototype.getStartIndex=function(){return this._start},mn.prototype.getContext=function(){return this._context},mn.prototype.getId=function(){return this._id},mn.prototype.computeOverlapsInternal=function(t,e,n,i,r,o){var s=this._pts[t],a=this._pts[e],u=n._pts[i],l=n._pts[r];if(e-t==1&&r-i==1)return o.overlap(this,t,n,i),null;if(o.tempEnv1.init(s,a),o.tempEnv2.init(u,l),!o.tempEnv1.intersects(o.tempEnv2))return null;var c=Math.trunc((t+e)/2),p=Math.trunc((i+r)/2);t<c&&(i<p&&this.computeOverlapsInternal(t,c,n,i,p,o),p<r&&this.computeOverlapsInternal(t,c,n,p,r,o)),c<e&&(i<p&&this.computeOverlapsInternal(c,e,n,i,p,o),p<r&&this.computeOverlapsInternal(c,e,n,p,r,o))},mn.prototype.interfaces_=function(){return[]},mn.prototype.getClass=function(){return mn};var vn=function(){};vn.prototype.interfaces_=function(){return[]},vn.prototype.getClass=function(){return vn},vn.getChainStartIndices=function(t){var e=0,n=new Nt;n.add(new M(e));do{var i=vn.findChainEnd(t,e);n.add(new M(i)),e=i}while(e<t.length-1);return vn.toIntArray(n)},vn.findChainEnd=function(t,e){for(var n=e;n<t.length-1&&t[n].equals2D(t[n+1]);)n++;if(n>=t.length-1)return t.length-1;for(var i=Be.quadrant(t[n],t[n+1]),r=e+1;r<t.length;){if(!t[r-1].equals2D(t[r])){if(Be.quadrant(t[r-1],t[r])!==i)break}r++}return r-1},vn.getChains=function(){if(1===arguments.length){var t=arguments[0];return vn.getChains(t,null)}if(2===arguments.length){for(var e=arguments[0],n=arguments[1],i=new Nt,r=vn.getChainStartIndices(e),o=0;o<r.length-1;o++){var s=new mn(e,r[o],r[o+1],n);i.add(s)}return i}},vn.toIntArray=function(t){for(var e=new Array(t.size()).fill(null),n=0;n<e.length;n++)e[n]=t.get(n).intValue();return e};var In=function(){};In.prototype.computeNodes=function(t){},In.prototype.getNodedSubstrings=function(){},In.prototype.interfaces_=function(){return[]},In.prototype.getClass=function(){return In};var En=function(){if(this._segInt=null,0===arguments.length);else if(1===arguments.length){var t=arguments[0];this.setSegmentIntersector(t)}};En.prototype.setSegmentIntersector=function(t){this._segInt=t},En.prototype.interfaces_=function(){return[In]},En.prototype.getClass=function(){return En};var xn=function(t){function e(e){e?t.call(this,e):t.call(this),this._monoChains=new Nt,this._index=new sn,this._idCounter=0,this._nodedSegStrings=null,this._nOverlaps=0}t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e;var n={SegmentOverlapAction:{configurable:!0}};return e.prototype.getMonotoneChains=function(){return this._monoChains},e.prototype.getNodedSubstrings=function(){return gn.getNodedSubstrings(this._nodedSegStrings)},e.prototype.getIndex=function(){return this._index},e.prototype.add=function(t){for(var e=vn.getChains(t.getCoordinates(),t).iterator();e.hasNext();){var n=e.next();n.setId(this._idCounter++),this._index.insert(n.getEnvelope(),n),this._monoChains.add(n)}},e.prototype.computeNodes=function(t){this._nodedSegStrings=t;for(var e=t.iterator();e.hasNext();)this.add(e.next());this.intersectChains()},e.prototype.intersectChains=function(){for(var t=new Nn(this._segInt),e=this._monoChains.iterator();e.hasNext();)for(var n=e.next(),i=this._index.query(n.getEnvelope()).iterator();i.hasNext();){var r=i.next();if(r.getId()>n.getId()&&(n.computeOverlaps(r,t),this._nOverlaps++),this._segInt.isDone())return null}},e.prototype.interfaces_=function(){return[]},e.prototype.getClass=function(){return e},n.SegmentOverlapAction.get=function(){return Nn},Object.defineProperties(e,n),e}(En),Nn=function(t){function e(){t.call(this),this._si=null;var e=arguments[0];this._si=e}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.overlap=function(){if(4!==arguments.length)return t.prototype.overlap.apply(this,arguments);var e=arguments[0],n=arguments[1],i=arguments[2],r=arguments[3],o=e.getContext(),s=i.getContext();this._si.processIntersections(o,n,s,r)},e.prototype.interfaces_=function(){return[]},e.prototype.getClass=function(){return e},e}(_n),Cn=function t(){if(this._quadrantSegments=t.DEFAULT_QUADRANT_SEGMENTS,this._endCapStyle=t.CAP_ROUND,this._joinStyle=t.JOIN_ROUND,this._mitreLimit=t.DEFAULT_MITRE_LIMIT,this._isSingleSided=!1,this._simplifyFactor=t.DEFAULT_SIMPLIFY_FACTOR,0===arguments.length);else if(1===arguments.length){var e=arguments[0];this.setQuadrantSegments(e)}else if(2===arguments.length){var n=arguments[0],i=arguments[1];this.setQuadrantSegments(n),this.setEndCapStyle(i)}else if(4===arguments.length){var r=arguments[0],o=arguments[1],s=arguments[2],a=arguments[3];this.setQuadrantSegments(r),this.setEndCapStyle(o),this.setJoinStyle(s),this.setMitreLimit(a)}},Sn={CAP_ROUND:{configurable:!0},CAP_FLAT:{configurable:!0},CAP_SQUARE:{configurable:!0},JOIN_ROUND:{configurable:!0},JOIN_MITRE:{configurable:!0},JOIN_BEVEL:{configurable:!0},DEFAULT_QUADRANT_SEGMENTS:{configurable:!0},DEFAULT_MITRE_LIMIT:{configurable:!0},DEFAULT_SIMPLIFY_FACTOR:{configurable:!0}};Cn.prototype.getEndCapStyle=function(){return this._endCapStyle},Cn.prototype.isSingleSided=function(){return this._isSingleSided},Cn.prototype.setQuadrantSegments=function(t){this._quadrantSegments=t,0===this._quadrantSegments&&(this._joinStyle=Cn.JOIN_BEVEL),this._quadrantSegments<0&&(this._joinStyle=Cn.JOIN_MITRE,this._mitreLimit=Math.abs(this._quadrantSegments)),t<=0&&(this._quadrantSegments=1),this._joinStyle!==Cn.JOIN_ROUND&&(this._quadrantSegments=Cn.DEFAULT_QUADRANT_SEGMENTS)},Cn.prototype.getJoinStyle=function(){return this._joinStyle},Cn.prototype.setJoinStyle=function(t){this._joinStyle=t},Cn.prototype.setSimplifyFactor=function(t){this._simplifyFactor=t<0?0:t},Cn.prototype.getSimplifyFactor=function(){return this._simplifyFactor},Cn.prototype.getQuadrantSegments=function(){return this._quadrantSegments},Cn.prototype.setEndCapStyle=function(t){this._endCapStyle=t},Cn.prototype.getMitreLimit=function(){return this._mitreLimit},Cn.prototype.setMitreLimit=function(t){this._mitreLimit=t},Cn.prototype.setSingleSided=function(t){this._isSingleSided=t},Cn.prototype.interfaces_=function(){return[]},Cn.prototype.getClass=function(){return Cn},Cn.bufferDistanceError=function(t){var e=Math.PI/2/t;return 1-Math.cos(e/2)},Sn.CAP_ROUND.get=function(){return 1},Sn.CAP_FLAT.get=function(){return 2},Sn.CAP_SQUARE.get=function(){return 3},Sn.JOIN_ROUND.get=function(){return 1},Sn.JOIN_MITRE.get=function(){return 2},Sn.JOIN_BEVEL.get=function(){return 3},Sn.DEFAULT_QUADRANT_SEGMENTS.get=function(){return 8},Sn.DEFAULT_MITRE_LIMIT.get=function(){return 5},Sn.DEFAULT_SIMPLIFY_FACTOR.get=function(){return.01},Object.defineProperties(Cn,Sn);var Ln=function(t){this._distanceTol=null,this._isDeleted=null,this._angleOrientation=at.COUNTERCLOCKWISE,this._inputLine=t||null},bn={INIT:{configurable:!0},DELETE:{configurable:!0},KEEP:{configurable:!0},NUM_PTS_TO_CHECK:{configurable:!0}};Ln.prototype.isDeletable=function(t,e,n,i){var r=this._inputLine[t],o=this._inputLine[e],s=this._inputLine[n];return!!this.isConcave(r,o,s)&&(!!this.isShallow(r,o,s,i)&&this.isShallowSampled(r,o,t,n,i))},Ln.prototype.deleteShallowConcavities=function(){for(var t=1,e=this.findNextNonDeletedIndex(t),n=this.findNextNonDeletedIndex(e),i=!1;n<this._inputLine.length;){var r=!1;this.isDeletable(t,e,n,this._distanceTol)&&(this._isDeleted[e]=Ln.DELETE,r=!0,i=!0),t=r?n:e,e=this.findNextNonDeletedIndex(t),n=this.findNextNonDeletedIndex(e)}return i},Ln.prototype.isShallowConcavity=function(t,e,n,i){if(!(at.computeOrientation(t,e,n)===this._angleOrientation))return!1;return at.distancePointLine(e,t,n)<i},Ln.prototype.isShallowSampled=function(t,e,n,i,r){var o=Math.trunc((i-n)/Ln.NUM_PTS_TO_CHECK);o<=0&&(o=1);for(var s=n;s<i;s+=o)if(!this.isShallow(t,e,this._inputLine[s],r))return!1;return!0},Ln.prototype.isConcave=function(t,e,n){var i=at.computeOrientation(t,e,n)===this._angleOrientation;return i},Ln.prototype.simplify=function(t){this._distanceTol=Math.abs(t),t<0&&(this._angleOrientation=at.CLOCKWISE),this._isDeleted=new Array(this._inputLine.length).fill(null);var e=!1;do{e=this.deleteShallowConcavities()}while(e);return this.collapseLine()},Ln.prototype.findNextNonDeletedIndex=function(t){for(var e=t+1;e<this._inputLine.length&&this._isDeleted[e]===Ln.DELETE;)e++;return e},Ln.prototype.isShallow=function(t,e,n,i){return at.distancePointLine(e,t,n)<i},Ln.prototype.collapseLine=function(){for(var t=new St,e=0;e<this._inputLine.length;e++)this._isDeleted[e]!==Ln.DELETE&&t.add(this._inputLine[e]);return t.toCoordinateArray()},Ln.prototype.interfaces_=function(){return[]},Ln.prototype.getClass=function(){return Ln},Ln.simplify=function(t,e){return new Ln(t).simplify(e)},bn.INIT.get=function(){return 0},bn.DELETE.get=function(){return 1},bn.KEEP.get=function(){return 1},bn.NUM_PTS_TO_CHECK.get=function(){return 10},Object.defineProperties(Ln,bn);var wn=function(){this._ptList=null,this._precisionModel=null,this._minimimVertexDistance=0,this._ptList=new Nt},On={COORDINATE_ARRAY_TYPE:{configurable:!0}};wn.prototype.getCoordinates=function(){return this._ptList.toArray(wn.COORDINATE_ARRAY_TYPE)},wn.prototype.setPrecisionModel=function(t){this._precisionModel=t},wn.prototype.addPt=function(t){var e=new C(t);if(this._precisionModel.makePrecise(e),this.isRedundant(e))return null;this._ptList.add(e)},wn.prototype.revere=function(){},wn.prototype.addPts=function(t,e){if(e)for(var n=0;n<t.length;n++)this.addPt(t[n]);else for(var i=t.length-1;i>=0;i--)this.addPt(t[i])},wn.prototype.isRedundant=function(t){if(this._ptList.size()<1)return!1;var e=this._ptList.get(this._ptList.size()-1);return t.distance(e)<this._minimimVertexDistance},wn.prototype.toString=function(){return(new _e).createLineString(this.getCoordinates()).toString()},wn.prototype.closeRing=function(){if(this._ptList.size()<1)return null;var t=new C(this._ptList.get(0)),e=this._ptList.get(this._ptList.size()-1);if(t.equals(e))return null;this._ptList.add(t)},wn.prototype.setMinimumVertexDistance=function(t){this._minimimVertexDistance=t},wn.prototype.interfaces_=function(){return[]},wn.prototype.getClass=function(){return wn},On.COORDINATE_ARRAY_TYPE.get=function(){return new Array(0).fill(null)},Object.defineProperties(wn,On);var Tn=function(){},Rn={PI_TIMES_2:{configurable:!0},PI_OVER_2:{configurable:!0},PI_OVER_4:{configurable:!0},COUNTERCLOCKWISE:{configurable:!0},CLOCKWISE:{configurable:!0},NONE:{configurable:!0}};Tn.prototype.interfaces_=function(){return[]},Tn.prototype.getClass=function(){return Tn},Tn.toDegrees=function(t){return 180*t/Math.PI},Tn.normalize=function(t){for(;t>Math.PI;)t-=Tn.PI_TIMES_2;for(;t<=-Math.PI;)t+=Tn.PI_TIMES_2;return t},Tn.angle=function(){if(1===arguments.length){var t=arguments[0];return Math.atan2(t.y,t.x)}if(2===arguments.length){var e=arguments[0],n=arguments[1],i=n.x-e.x,r=n.y-e.y;return Math.atan2(r,i)}},Tn.isAcute=function(t,e,n){var i=t.x-e.x,r=t.y-e.y;return i*(n.x-e.x)+r*(n.y-e.y)>0},Tn.isObtuse=function(t,e,n){var i=t.x-e.x,r=t.y-e.y;return i*(n.x-e.x)+r*(n.y-e.y)<0},Tn.interiorAngle=function(t,e,n){var i=Tn.angle(e,t),r=Tn.angle(e,n);return Math.abs(r-i)},Tn.normalizePositive=function(t){if(t<0){for(;t<0;)t+=Tn.PI_TIMES_2;t>=Tn.PI_TIMES_2&&(t=0)}else{for(;t>=Tn.PI_TIMES_2;)t-=Tn.PI_TIMES_2;t<0&&(t=0)}return t},Tn.angleBetween=function(t,e,n){var i=Tn.angle(e,t),r=Tn.angle(e,n);return Tn.diff(i,r)},Tn.diff=function(t,e){var n=null;return(n=t<e?e-t:t-e)>Math.PI&&(n=2*Math.PI-n),n},Tn.toRadians=function(t){return t*Math.PI/180},Tn.getTurn=function(t,e){var n=Math.sin(e-t);return n>0?Tn.COUNTERCLOCKWISE:n<0?Tn.CLOCKWISE:Tn.NONE},Tn.angleBetweenOriented=function(t,e,n){var i=Tn.angle(e,t),r=Tn.angle(e,n)-i;return r<=-Math.PI?r+Tn.PI_TIMES_2:r>Math.PI?r-Tn.PI_TIMES_2:r},Rn.PI_TIMES_2.get=function(){return 2*Math.PI},Rn.PI_OVER_2.get=function(){return Math.PI/2},Rn.PI_OVER_4.get=function(){return Math.PI/4},Rn.COUNTERCLOCKWISE.get=function(){return at.COUNTERCLOCKWISE},Rn.CLOCKWISE.get=function(){return at.CLOCKWISE},Rn.NONE.get=function(){return at.COLLINEAR},Object.defineProperties(Tn,Rn);var Pn=function t(){this._maxCurveSegmentError=0,this._filletAngleQuantum=null,this._closingSegLengthFactor=1,this._segList=null,this._distance=0,this._precisionModel=null,this._bufParams=null,this._li=null,this._s0=null,this._s1=null,this._s2=null,this._seg0=new dn,this._seg1=new dn,this._offset0=new dn,this._offset1=new dn,this._side=0,this._hasNarrowConcaveAngle=!1;var e=arguments[0],n=arguments[1],i=arguments[2];this._precisionModel=e,this._bufParams=n,this._li=new rt,this._filletAngleQuantum=Math.PI/2/n.getQuadrantSegments(),n.getQuadrantSegments()>=8&&n.getJoinStyle()===Cn.JOIN_ROUND&&(this._closingSegLengthFactor=t.MAX_CLOSING_SEG_LEN_FACTOR),this.init(i)},Dn={OFFSET_SEGMENT_SEPARATION_FACTOR:{configurable:!0},INSIDE_TURN_VERTEX_SNAP_DISTANCE_FACTOR:{configurable:!0},CURVE_VERTEX_SNAP_DISTANCE_FACTOR:{configurable:!0},MAX_CLOSING_SEG_LEN_FACTOR:{configurable:!0}};Pn.prototype.addNextSegment=function(t,e){if(this._s0=this._s1,this._s1=this._s2,this._s2=t,this._seg0.setCoordinates(this._s0,this._s1),this.computeOffsetSegment(this._seg0,this._side,this._distance,this._offset0),this._seg1.setCoordinates(this._s1,this._s2),this.computeOffsetSegment(this._seg1,this._side,this._distance,this._offset1),this._s1.equals(this._s2))return null;var n=at.computeOrientation(this._s0,this._s1,this._s2),i=n===at.CLOCKWISE&&this._side===Se.LEFT||n===at.COUNTERCLOCKWISE&&this._side===Se.RIGHT;0===n?this.addCollinear(e):i?this.addOutsideTurn(n,e):this.addInsideTurn(n,e)},Pn.prototype.addLineEndCap=function(t,e){var n=new dn(t,e),i=new dn;this.computeOffsetSegment(n,Se.LEFT,this._distance,i);var r=new dn;this.computeOffsetSegment(n,Se.RIGHT,this._distance,r);var o=e.x-t.x,s=e.y-t.y,a=Math.atan2(s,o);switch(this._bufParams.getEndCapStyle()){case Cn.CAP_ROUND:this._segList.addPt(i.p1),this.addFilletArc(e,a+Math.PI/2,a-Math.PI/2,at.CLOCKWISE,this._distance),this._segList.addPt(r.p1);break;case Cn.CAP_FLAT:this._segList.addPt(i.p1),this._segList.addPt(r.p1);break;case Cn.CAP_SQUARE:var u=new C;u.x=Math.abs(this._distance)*Math.cos(a),u.y=Math.abs(this._distance)*Math.sin(a);var l=new C(i.p1.x+u.x,i.p1.y+u.y),c=new C(r.p1.x+u.x,r.p1.y+u.y);this._segList.addPt(l),this._segList.addPt(c)}},Pn.prototype.getCoordinates=function(){return this._segList.getCoordinates()},Pn.prototype.addMitreJoin=function(t,e,n,i){var r=!0,o=null;try{o=k.intersection(e.p0,e.p1,n.p0,n.p1);(i<=0?1:o.distance(t)/Math.abs(i))>this._bufParams.getMitreLimit()&&(r=!1)}catch(t){if(!(t instanceof X))throw t;o=new C(0,0),r=!1}r?this._segList.addPt(o):this.addLimitedMitreJoin(e,n,i,this._bufParams.getMitreLimit())},Pn.prototype.addFilletCorner=function(t,e,n,i,r){var o=e.x-t.x,s=e.y-t.y,a=Math.atan2(s,o),u=n.x-t.x,l=n.y-t.y,c=Math.atan2(l,u);i===at.CLOCKWISE?a<=c&&(a+=2*Math.PI):a>=c&&(a-=2*Math.PI),this._segList.addPt(e),this.addFilletArc(t,a,c,i,r),this._segList.addPt(n)},Pn.prototype.addOutsideTurn=function(t,e){if(this._offset0.p1.distance(this._offset1.p0)<this._distance*Pn.OFFSET_SEGMENT_SEPARATION_FACTOR)return this._segList.addPt(this._offset0.p1),null;this._bufParams.getJoinStyle()===Cn.JOIN_MITRE?this.addMitreJoin(this._s1,this._offset0,this._offset1,this._distance):this._bufParams.getJoinStyle()===Cn.JOIN_BEVEL?this.addBevelJoin(this._offset0,this._offset1):(e&&this._segList.addPt(this._offset0.p1),this.addFilletCorner(this._s1,this._offset0.p1,this._offset1.p0,t,this._distance),this._segList.addPt(this._offset1.p0))},Pn.prototype.createSquare=function(t){this._segList.addPt(new C(t.x+this._distance,t.y+this._distance)),this._segList.addPt(new C(t.x+this._distance,t.y-this._distance)),this._segList.addPt(new C(t.x-this._distance,t.y-this._distance)),this._segList.addPt(new C(t.x-this._distance,t.y+this._distance)),this._segList.closeRing()},Pn.prototype.addSegments=function(t,e){this._segList.addPts(t,e)},Pn.prototype.addFirstSegment=function(){this._segList.addPt(this._offset1.p0)},Pn.prototype.addLastSegment=function(){this._segList.addPt(this._offset1.p1)},Pn.prototype.initSideSegments=function(t,e,n){this._s1=t,this._s2=e,this._side=n,this._seg1.setCoordinates(t,e),this.computeOffsetSegment(this._seg1,n,this._distance,this._offset1)},Pn.prototype.addLimitedMitreJoin=function(t,e,n,i){var r=this._seg0.p1,o=Tn.angle(r,this._seg0.p0),s=Tn.angleBetweenOriented(this._seg0.p0,r,this._seg1.p1)/2,a=Tn.normalize(o+s),u=Tn.normalize(a+Math.PI),l=i*n,c=n-l*Math.abs(Math.sin(s)),p=r.x+l*Math.cos(u),h=r.y+l*Math.sin(u),f=new C(p,h),g=new dn(r,f),d=g.pointAlongOffset(1,c),y=g.pointAlongOffset(1,-c);this._side===Se.LEFT?(this._segList.addPt(d),this._segList.addPt(y)):(this._segList.addPt(y),this._segList.addPt(d))},Pn.prototype.computeOffsetSegment=function(t,e,n,i){var r=e===Se.LEFT?1:-1,o=t.p1.x-t.p0.x,s=t.p1.y-t.p0.y,a=Math.sqrt(o*o+s*s),u=r*n*o/a,l=r*n*s/a;i.p0.x=t.p0.x-l,i.p0.y=t.p0.y+u,i.p1.x=t.p1.x-l,i.p1.y=t.p1.y+u},Pn.prototype.addFilletArc=function(t,e,n,i,r){var o=i===at.CLOCKWISE?-1:1,s=Math.abs(e-n),a=Math.trunc(s/this._filletAngleQuantum+.5);if(a<1)return null;for(var u=s/a,l=0,c=new C;l<s;){var p=e+o*l;c.x=t.x+r*Math.cos(p),c.y=t.y+r*Math.sin(p),this._segList.addPt(c),l+=u}},Pn.prototype.addInsideTurn=function(t,e){if(this._li.computeIntersection(this._offset0.p0,this._offset0.p1,this._offset1.p0,this._offset1.p1),this._li.hasIntersection())this._segList.addPt(this._li.getIntersection(0));else if(this._hasNarrowConcaveAngle=!0,this._offset0.p1.distance(this._offset1.p0)<this._distance*Pn.INSIDE_TURN_VERTEX_SNAP_DISTANCE_FACTOR)this._segList.addPt(this._offset0.p1);else{if(this._segList.addPt(this._offset0.p1),this._closingSegLengthFactor>0){var n=new C((this._closingSegLengthFactor*this._offset0.p1.x+this._s1.x)/(this._closingSegLengthFactor+1),(this._closingSegLengthFactor*this._offset0.p1.y+this._s1.y)/(this._closingSegLengthFactor+1));this._segList.addPt(n);var i=new C((this._closingSegLengthFactor*this._offset1.p0.x+this._s1.x)/(this._closingSegLengthFactor+1),(this._closingSegLengthFactor*this._offset1.p0.y+this._s1.y)/(this._closingSegLengthFactor+1));this._segList.addPt(i)}else this._segList.addPt(this._s1);this._segList.addPt(this._offset1.p0)}},Pn.prototype.createCircle=function(t){var e=new C(t.x+this._distance,t.y);this._segList.addPt(e),this.addFilletArc(t,0,2*Math.PI,-1,this._distance),this._segList.closeRing()},Pn.prototype.addBevelJoin=function(t,e){this._segList.addPt(t.p1),this._segList.addPt(e.p0)},Pn.prototype.init=function(t){this._distance=t,this._maxCurveSegmentError=t*(1-Math.cos(this._filletAngleQuantum/2)),this._segList=new wn,this._segList.setPrecisionModel(this._precisionModel),this._segList.setMinimumVertexDistance(t*Pn.CURVE_VERTEX_SNAP_DISTANCE_FACTOR)},Pn.prototype.addCollinear=function(t){this._li.computeIntersection(this._s0,this._s1,this._s1,this._s2);this._li.getIntersectionNum()>=2&&(this._bufParams.getJoinStyle()===Cn.JOIN_BEVEL||this._bufParams.getJoinStyle()===Cn.JOIN_MITRE?(t&&this._segList.addPt(this._offset0.p1),this._segList.addPt(this._offset1.p0)):this.addFilletCorner(this._s1,this._offset0.p1,this._offset1.p0,at.CLOCKWISE,this._distance))},Pn.prototype.closeRing=function(){this._segList.closeRing()},Pn.prototype.hasNarrowConcaveAngle=function(){return this._hasNarrowConcaveAngle},Pn.prototype.interfaces_=function(){return[]},Pn.prototype.getClass=function(){return Pn},Dn.OFFSET_SEGMENT_SEPARATION_FACTOR.get=function(){return.001},Dn.INSIDE_TURN_VERTEX_SNAP_DISTANCE_FACTOR.get=function(){return.001},Dn.CURVE_VERTEX_SNAP_DISTANCE_FACTOR.get=function(){return 1e-6},Dn.MAX_CLOSING_SEG_LEN_FACTOR.get=function(){return 80},Object.defineProperties(Pn,Dn);var Mn=function(){this._distance=0,this._precisionModel=null,this._bufParams=null;var t=arguments[0],e=arguments[1];this._precisionModel=t,this._bufParams=e};Mn.prototype.getOffsetCurve=function(t,e){if(this._distance=e,0===e)return null;var n=e<0,i=Math.abs(e),r=this.getSegGen(i);t.length<=1?this.computePointCurve(t[0],r):this.computeOffsetCurve(t,n,r);var o=r.getCoordinates();return n&&Lt.reverse(o),o},Mn.prototype.computeSingleSidedBufferCurve=function(t,e,n){var i=this.simplifyTolerance(this._distance);if(e){n.addSegments(t,!0);var r=Ln.simplify(t,-i),o=r.length-1;n.initSideSegments(r[o],r[o-1],Se.LEFT),n.addFirstSegment();for(var s=o-2;s>=0;s--)n.addNextSegment(r[s],!0)}else{n.addSegments(t,!1);var a=Ln.simplify(t,i),u=a.length-1;n.initSideSegments(a[0],a[1],Se.LEFT),n.addFirstSegment();for(var l=2;l<=u;l++)n.addNextSegment(a[l],!0)}n.addLastSegment(),n.closeRing()},Mn.prototype.computeRingBufferCurve=function(t,e,n){var i=this.simplifyTolerance(this._distance);e===Se.RIGHT&&(i=-i);var r=Ln.simplify(t,i),o=r.length-1;n.initSideSegments(r[o-1],r[0],e);for(var s=1;s<=o;s++){var a=1!==s;n.addNextSegment(r[s],a)}n.closeRing()},Mn.prototype.computeLineBufferCurve=function(t,e){var n=this.simplifyTolerance(this._distance),i=Ln.simplify(t,n),r=i.length-1;e.initSideSegments(i[0],i[1],Se.LEFT);for(var o=2;o<=r;o++)e.addNextSegment(i[o],!0);e.addLastSegment(),e.addLineEndCap(i[r-1],i[r]);var s=Ln.simplify(t,-n),a=s.length-1;e.initSideSegments(s[a],s[a-1],Se.LEFT);for(var u=a-2;u>=0;u--)e.addNextSegment(s[u],!0);e.addLastSegment(),e.addLineEndCap(s[1],s[0]),e.closeRing()},Mn.prototype.computePointCurve=function(t,e){switch(this._bufParams.getEndCapStyle()){case Cn.CAP_ROUND:e.createCircle(t);break;case Cn.CAP_SQUARE:e.createSquare(t)}},Mn.prototype.getLineCurve=function(t,e){if(this._distance=e,e<0&&!this._bufParams.isSingleSided())return null;if(0===e)return null;var n=Math.abs(e),i=this.getSegGen(n);if(t.length<=1)this.computePointCurve(t[0],i);else if(this._bufParams.isSingleSided()){var r=e<0;this.computeSingleSidedBufferCurve(t,r,i)}else this.computeLineBufferCurve(t,i);return i.getCoordinates()},Mn.prototype.getBufferParameters=function(){return this._bufParams},Mn.prototype.simplifyTolerance=function(t){return t*this._bufParams.getSimplifyFactor()},Mn.prototype.getRingCurve=function(t,e,n){if(this._distance=n,t.length<=2)return this.getLineCurve(t,n);if(0===n)return Mn.copyCoordinates(t);var i=this.getSegGen(n);return this.computeRingBufferCurve(t,e,i),i.getCoordinates()},Mn.prototype.computeOffsetCurve=function(t,e,n){var i=this.simplifyTolerance(this._distance);if(e){var r=Ln.simplify(t,-i),o=r.length-1;n.initSideSegments(r[o],r[o-1],Se.LEFT),n.addFirstSegment();for(var s=o-2;s>=0;s--)n.addNextSegment(r[s],!0)}else{var a=Ln.simplify(t,i),u=a.length-1;n.initSideSegments(a[0],a[1],Se.LEFT),n.addFirstSegment();for(var l=2;l<=u;l++)n.addNextSegment(a[l],!0)}n.addLastSegment()},Mn.prototype.getSegGen=function(t){return new Pn(this._precisionModel,this._bufParams,t)},Mn.prototype.interfaces_=function(){return[]},Mn.prototype.getClass=function(){return Mn},Mn.copyCoordinates=function(t){for(var e=new Array(t.length).fill(null),n=0;n<e.length;n++)e[n]=new C(t[n]);return e};var An=function(){this._subgraphs=null,this._seg=new dn,this._cga=new at;var t=arguments[0];this._subgraphs=t},Fn={DepthSegment:{configurable:!0}};An.prototype.findStabbedSegments=function(){if(1===arguments.length){for(var t=arguments[0],e=new Nt,n=this._subgraphs.iterator();n.hasNext();){var i=n.next(),r=i.getEnvelope();t.y<r.getMinY()||t.y>r.getMaxY()||this.findStabbedSegments(t,i.getDirectedEdges(),e)}return e}if(3===arguments.length)if(T(arguments[2],xt)&&arguments[0]instanceof C&&arguments[1]instanceof ze)for(var o=arguments[0],s=arguments[1],a=arguments[2],u=s.getEdge().getCoordinates(),l=0;l<u.length-1;l++){this._seg.p0=u[l],this._seg.p1=u[l+1],this._seg.p0.y>this._seg.p1.y&&this._seg.reverse();if(!(Math.max(this._seg.p0.x,this._seg.p1.x)<o.x)&&!(this._seg.isHorizontal()||o.y<this._seg.p0.y||o.y>this._seg.p1.y||at.computeOrientation(this._seg.p0,this._seg.p1,o)===at.RIGHT)){var c=s.getDepth(Se.LEFT);this._seg.p0.equals(u[l])||(c=s.getDepth(Se.RIGHT));var p=new Gn(this._seg,c);a.add(p)}}else if(T(arguments[2],xt)&&arguments[0]instanceof C&&T(arguments[1],xt))for(var h=arguments[0],f=arguments[1],g=arguments[2],d=f.iterator();d.hasNext();){var y=d.next();y.isForward()&&this.findStabbedSegments(h,y,g)}},An.prototype.getDepth=function(t){var e=this.findStabbedSegments(t);if(0===e.size())return 0;return $e.min(e)._leftDepth},An.prototype.interfaces_=function(){return[]},An.prototype.getClass=function(){return An},Fn.DepthSegment.get=function(){return Gn},Object.defineProperties(An,Fn);var Gn=function(){this._upwardSeg=null,this._leftDepth=null;var t=arguments[0],e=arguments[1];this._upwardSeg=new dn(t),this._leftDepth=e};Gn.prototype.compareTo=function(t){var e=t;if(this._upwardSeg.minX()>=e._upwardSeg.maxX())return 1;if(this._upwardSeg.maxX()<=e._upwardSeg.minX())return-1;var n=this._upwardSeg.orientationIndex(e._upwardSeg);return 0!==n?n:0!=(n=-1*e._upwardSeg.orientationIndex(this._upwardSeg))?n:this._upwardSeg.compareTo(e._upwardSeg)},Gn.prototype.compareX=function(t,e){var n=t.p0.compareTo(e.p0);return 0!==n?n:t.p1.compareTo(e.p1)},Gn.prototype.toString=function(){return this._upwardSeg.toString()},Gn.prototype.interfaces_=function(){return[E]},Gn.prototype.getClass=function(){return Gn};var qn=function(t,e,n){this.p0=t||null,this.p1=e||null,this.p2=n||null};qn.prototype.area=function(){return qn.area(this.p0,this.p1,this.p2)},qn.prototype.signedArea=function(){return qn.signedArea(this.p0,this.p1,this.p2)},qn.prototype.interpolateZ=function(t){if(null===t)throw new m(\"Supplied point is null.\");return qn.interpolateZ(t,this.p0,this.p1,this.p2)},qn.prototype.longestSideLength=function(){return qn.longestSideLength(this.p0,this.p1,this.p2)},qn.prototype.isAcute=function(){return qn.isAcute(this.p0,this.p1,this.p2)},qn.prototype.circumcentre=function(){return qn.circumcentre(this.p0,this.p1,this.p2)},qn.prototype.area3D=function(){return qn.area3D(this.p0,this.p1,this.p2)},qn.prototype.centroid=function(){return qn.centroid(this.p0,this.p1,this.p2)},qn.prototype.inCentre=function(){return qn.inCentre(this.p0,this.p1,this.p2)},qn.prototype.interfaces_=function(){return[]},qn.prototype.getClass=function(){return qn},qn.area=function(t,e,n){return Math.abs(((n.x-t.x)*(e.y-t.y)-(e.x-t.x)*(n.y-t.y))/2)},qn.signedArea=function(t,e,n){return((n.x-t.x)*(e.y-t.y)-(e.x-t.x)*(n.y-t.y))/2},qn.det=function(t,e,n,i){return t*i-e*n},qn.interpolateZ=function(t,e,n,i){var r=e.x,o=e.y,s=n.x-r,a=i.x-r,u=n.y-o,l=i.y-o,c=s*l-a*u,p=t.x-r,h=t.y-o,f=(l*p-a*h)/c,g=(-u*p+s*h)/c;return e.z+f*(n.z-e.z)+g*(i.z-e.z)},qn.longestSideLength=function(t,e,n){var i=t.distance(e),r=e.distance(n),o=n.distance(t),s=i;return r>s&&(s=r),o>s&&(s=o),s},qn.isAcute=function(t,e,n){return!!Tn.isAcute(t,e,n)&&(!!Tn.isAcute(e,n,t)&&!!Tn.isAcute(n,t,e))},qn.circumcentre=function(t,e,n){var i=n.x,r=n.y,o=t.x-i,s=t.y-r,a=e.x-i,u=e.y-r,l=2*qn.det(o,s,a,u),c=qn.det(s,o*o+s*s,u,a*a+u*u),p=qn.det(o,o*o+s*s,a,a*a+u*u);return new C(i-c/l,r+p/l)},qn.perpendicularBisector=function(t,e){var n=e.x-t.x,i=e.y-t.y,r=new k(t.x+n/2,t.y+i/2,1),o=new k(t.x-i+n/2,t.y+n+i/2,1);return new k(r,o)},qn.angleBisector=function(t,e,n){var i=e.distance(t),r=i/(i+e.distance(n)),o=n.x-t.x,s=n.y-t.y;return new C(t.x+r*o,t.y+r*s)},qn.area3D=function(t,e,n){var i=e.x-t.x,r=e.y-t.y,o=e.z-t.z,s=n.x-t.x,a=n.y-t.y,u=n.z-t.z,l=r*u-o*a,c=o*s-i*u,p=i*a-r*s,h=l*l+c*c+p*p,f=Math.sqrt(h)/2;return f},qn.centroid=function(t,e,n){var i=(t.x+e.x+n.x)/3,r=(t.y+e.y+n.y)/3;return new C(i,r)},qn.inCentre=function(t,e,n){var i=e.distance(n),r=t.distance(n),o=t.distance(e),s=i+r+o,a=(i*t.x+r*e.x+o*n.x)/s,u=(i*t.y+r*e.y+o*n.y)/s;return new C(a,u)};var Bn=function(){this._inputGeom=null,this._distance=null,this._curveBuilder=null,this._curveList=new Nt;var t=arguments[0],e=arguments[1],n=arguments[2];this._inputGeom=t,this._distance=e,this._curveBuilder=n};Bn.prototype.addPoint=function(t){if(this._distance<=0)return null;var e=t.getCoordinates(),n=this._curveBuilder.getLineCurve(e,this._distance);this.addCurve(n,w.EXTERIOR,w.INTERIOR)},Bn.prototype.addPolygon=function(t){var e=this._distance,n=Se.LEFT;this._distance<0&&(e=-this._distance,n=Se.RIGHT);var i=t.getExteriorRing(),r=Lt.removeRepeatedPoints(i.getCoordinates());if(this._distance<0&&this.isErodedCompletely(i,this._distance))return null;if(this._distance<=0&&r.length<3)return null;this.addPolygonRing(r,e,n,w.EXTERIOR,w.INTERIOR);for(var o=0;o<t.getNumInteriorRing();o++){var s=t.getInteriorRingN(o),a=Lt.removeRepeatedPoints(s.getCoordinates());this._distance>0&&this.isErodedCompletely(s,-this._distance)||this.addPolygonRing(a,e,Se.opposite(n),w.INTERIOR,w.EXTERIOR)}},Bn.prototype.isTriangleErodedCompletely=function(t,e){var n=new qn(t[0],t[1],t[2]),i=n.inCentre();return at.distancePointLine(i,n.p0,n.p1)<Math.abs(e)},Bn.prototype.addLineString=function(t){if(this._distance<=0&&!this._curveBuilder.getBufferParameters().isSingleSided())return null;var e=Lt.removeRepeatedPoints(t.getCoordinates()),n=this._curveBuilder.getLineCurve(e,this._distance);this.addCurve(n,w.EXTERIOR,w.INTERIOR)},Bn.prototype.addCurve=function(t,e,n){if(null===t||t.length<2)return null;var i=new gn(t,new Pe(0,w.BOUNDARY,e,n));this._curveList.add(i)},Bn.prototype.getCurves=function(){return this.add(this._inputGeom),this._curveList},Bn.prototype.addPolygonRing=function(t,e,n,i,r){if(0===e&&t.length<ee.MINIMUM_VALID_SIZE)return null;var o=i,s=r;t.length>=ee.MINIMUM_VALID_SIZE&&at.isCCW(t)&&(o=r,s=i,n=Se.opposite(n));var a=this._curveBuilder.getRingCurve(t,n,e);this.addCurve(a,o,s)},Bn.prototype.add=function(t){if(t.isEmpty())return null;t instanceof $t?this.addPolygon(t):t instanceof Kt?this.addLineString(t):t instanceof Qt?this.addPoint(t):t instanceof te?this.addCollection(t):t instanceof Xt?this.addCollection(t):t instanceof ne?this.addCollection(t):t instanceof zt&&this.addCollection(t)},Bn.prototype.isErodedCompletely=function(t,e){var n=t.getCoordinates();if(n.length<4)return e<0;if(4===n.length)return this.isTriangleErodedCompletely(n,e);var i=t.getEnvelopeInternal(),r=Math.min(i.getHeight(),i.getWidth());return e<0&&2*Math.abs(e)>r},Bn.prototype.addCollection=function(t){for(var e=0;e<t.getNumGeometries();e++){var n=t.getGeometryN(e);this.add(n)}},Bn.prototype.interfaces_=function(){return[]},Bn.prototype.getClass=function(){return Bn};var Vn=function(){};Vn.prototype.locate=function(t){},Vn.prototype.interfaces_=function(){return[]},Vn.prototype.getClass=function(){return Vn};var Un=function(){this._parent=null,this._atStart=null,this._max=null,this._index=null,this._subcollectionIterator=null;var t=arguments[0];this._parent=t,this._atStart=!0,this._index=0,this._max=t.getNumGeometries()};Un.prototype.next=function(){if(this._atStart)return this._atStart=!1,Un.isAtomic(this._parent)&&this._index++,this._parent;if(null!==this._subcollectionIterator){if(this._subcollectionIterator.hasNext())return this._subcollectionIterator.next();this._subcollectionIterator=null}if(this._index>=this._max)throw new i;var t=this._parent.getGeometryN(this._index++);return t instanceof zt?(this._subcollectionIterator=new Un(t),this._subcollectionIterator.next()):t},Un.prototype.remove=function(){throw new Error(this.getClass().getName())},Un.prototype.hasNext=function(){if(this._atStart)return!0;if(null!==this._subcollectionIterator){if(this._subcollectionIterator.hasNext())return!0;this._subcollectionIterator=null}return!(this._index>=this._max)},Un.prototype.interfaces_=function(){return[Et]},Un.prototype.getClass=function(){return Un},Un.isAtomic=function(t){return!(t instanceof zt)};var zn=function(){this._geom=null;var t=arguments[0];this._geom=t};zn.prototype.locate=function(t){return zn.locate(t,this._geom)},zn.prototype.interfaces_=function(){return[Vn]},zn.prototype.getClass=function(){return zn},zn.isPointInRing=function(t,e){return!!e.getEnvelopeInternal().intersects(t)&&at.isPointInRing(t,e.getCoordinates())},zn.containsPointInPolygon=function(t,e){if(e.isEmpty())return!1;var n=e.getExteriorRing();if(!zn.isPointInRing(t,n))return!1;for(var i=0;i<e.getNumInteriorRing();i++){var r=e.getInteriorRingN(i);if(zn.isPointInRing(t,r))return!1}return!0},zn.containsPoint=function(t,e){if(e instanceof $t)return zn.containsPointInPolygon(t,e);if(e instanceof zt)for(var n=new Un(e);n.hasNext();){var i=n.next();if(i!==e&&zn.containsPoint(t,i))return!0}return!1},zn.locate=function(t,e){return e.isEmpty()?w.EXTERIOR:zn.containsPoint(t,e)?w.INTERIOR:w.EXTERIOR};var Xn=function(){this._edgeMap=new p,this._edgeList=null,this._ptInAreaLocation=[w.NONE,w.NONE]};Xn.prototype.getNextCW=function(t){this.getEdges();var e=this._edgeList.indexOf(t),n=e-1;return 0===e&&(n=this._edgeList.size()-1),this._edgeList.get(n)},Xn.prototype.propagateSideLabels=function(t){for(var e=w.NONE,n=this.iterator();n.hasNext();){var i=n.next().getLabel();i.isArea(t)&&i.getLocation(t,Se.LEFT)!==w.NONE&&(e=i.getLocation(t,Se.LEFT))}if(e===w.NONE)return null;for(var r=e,o=this.iterator();o.hasNext();){var s=o.next(),a=s.getLabel();if(a.getLocation(t,Se.ON)===w.NONE&&a.setLocation(t,Se.ON,r),a.isArea(t)){var u=a.getLocation(t,Se.LEFT),l=a.getLocation(t,Se.RIGHT);if(l!==w.NONE){if(l!==r)throw new we(\"side location conflict\",s.getCoordinate());u===w.NONE&&et.shouldNeverReachHere(\"found single null side (at \"+s.getCoordinate()+\")\"),r=u}else et.isTrue(a.getLocation(t,Se.LEFT)===w.NONE,\"found single null side\"),a.setLocation(t,Se.RIGHT,r),a.setLocation(t,Se.LEFT,r)}}},Xn.prototype.getCoordinate=function(){var t=this.iterator();if(!t.hasNext())return null;return t.next().getCoordinate()},Xn.prototype.print=function(t){Y.out.println(\"EdgeEndStar:   \"+this.getCoordinate());for(var e=this.iterator();e.hasNext();){e.next().print(t)}},Xn.prototype.isAreaLabelsConsistent=function(t){return this.computeEdgeEndLabels(t.getBoundaryNodeRule()),this.checkAreaLabelsConsistent(0)},Xn.prototype.checkAreaLabelsConsistent=function(t){var e=this.getEdges();if(e.size()<=0)return!0;var n=e.size()-1,i=e.get(n).getLabel().getLocation(t,Se.LEFT);et.isTrue(i!==w.NONE,\"Found unlabelled area edge\");for(var r=i,o=this.iterator();o.hasNext();){var s=o.next().getLabel();et.isTrue(s.isArea(t),\"Found non-area edge\");var a=s.getLocation(t,Se.LEFT),u=s.getLocation(t,Se.RIGHT);if(a===u)return!1;if(u!==r)return!1;r=a}return!0},Xn.prototype.findIndex=function(t){this.iterator();for(var e=0;e<this._edgeList.size();e++){if(this._edgeList.get(e)===t)return e}return-1},Xn.prototype.iterator=function(){return this.getEdges().iterator()},Xn.prototype.getEdges=function(){return null===this._edgeList&&(this._edgeList=new Nt(this._edgeMap.values())),this._edgeList},Xn.prototype.getLocation=function(t,e,n){return this._ptInAreaLocation[t]===w.NONE&&(this._ptInAreaLocation[t]=zn.locate(e,n[t].getGeometry())),this._ptInAreaLocation[t]},Xn.prototype.toString=function(){var t=new D;t.append(\"EdgeEndStar:   \"+this.getCoordinate()),t.append(\"\\n\");for(var e=this.iterator();e.hasNext();){var n=e.next();t.append(n),t.append(\"\\n\")}return t.toString()},Xn.prototype.computeEdgeEndLabels=function(t){for(var e=this.iterator();e.hasNext();){e.next().computeLabel(t)}},Xn.prototype.computeLabelling=function(t){this.computeEdgeEndLabels(t[0].getBoundaryNodeRule()),this.propagateSideLabels(0),this.propagateSideLabels(1);for(var e=[!1,!1],n=this.iterator();n.hasNext();)for(var i=n.next().getLabel(),r=0;r<2;r++)i.isLine(r)&&i.getLocation(r)===w.BOUNDARY&&(e[r]=!0);for(var o=this.iterator();o.hasNext();)for(var s=o.next(),a=s.getLabel(),u=0;u<2;u++)if(a.isAnyNull(u)){var l=w.NONE;if(e[u])l=w.EXTERIOR;else{var c=s.getCoordinate();l=this.getLocation(u,c,t)}a.setAllLocationsIfNull(u,l)}},Xn.prototype.getDegree=function(){return this._edgeMap.size()},Xn.prototype.insertEdgeEnd=function(t,e){this._edgeMap.put(t,e),this._edgeList=null},Xn.prototype.interfaces_=function(){return[]},Xn.prototype.getClass=function(){return Xn};var Yn=function(t){function e(){t.call(this),this._resultAreaEdgeList=null,this._label=null,this._SCANNING_FOR_INCOMING=1,this._LINKING_TO_OUTGOING=2}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.linkResultDirectedEdges=function(){this.getResultAreaEdges();for(var t=null,e=null,n=this._SCANNING_FOR_INCOMING,i=0;i<this._resultAreaEdgeList.size();i++){var r=this._resultAreaEdgeList.get(i),o=r.getSym();if(r.getLabel().isArea())switch(null===t&&r.isInResult()&&(t=r),n){case this._SCANNING_FOR_INCOMING:if(!o.isInResult())continue;e=o,n=this._LINKING_TO_OUTGOING;break;case this._LINKING_TO_OUTGOING:if(!r.isInResult())continue;e.setNext(r),n=this._SCANNING_FOR_INCOMING}}if(n===this._LINKING_TO_OUTGOING){if(null===t)throw new we(\"no outgoing dirEdge found\",this.getCoordinate());et.isTrue(t.isInResult(),\"unable to link last incoming dirEdge\"),e.setNext(t)}},e.prototype.insert=function(t){var e=t;this.insertEdgeEnd(e,e)},e.prototype.getRightmostEdge=function(){var t=this.getEdges(),e=t.size();if(e<1)return null;var n=t.get(0);if(1===e)return n;var i=t.get(e-1),r=n.getQuadrant(),o=i.getQuadrant();return Be.isNorthern(r)&&Be.isNorthern(o)?n:Be.isNorthern(r)||Be.isNorthern(o)?0!==n.getDy()?n:0!==i.getDy()?i:(et.shouldNeverReachHere(\"found two horizontal edges incident on node\"),null):i},e.prototype.print=function(t){Y.out.println(\"DirectedEdgeStar: \"+this.getCoordinate());for(var e=this.iterator();e.hasNext();){var n=e.next();t.print(\"out \"),n.print(t),t.println(),t.print(\"in \"),n.getSym().print(t),t.println()}},e.prototype.getResultAreaEdges=function(){if(null!==this._resultAreaEdgeList)return this._resultAreaEdgeList;this._resultAreaEdgeList=new Nt;for(var t=this.iterator();t.hasNext();){var e=t.next();(e.isInResult()||e.getSym().isInResult())&&this._resultAreaEdgeList.add(e)}return this._resultAreaEdgeList},e.prototype.updateLabelling=function(t){for(var e=this.iterator();e.hasNext();){var n=e.next().getLabel();n.setAllLocationsIfNull(0,t.getLocation(0)),n.setAllLocationsIfNull(1,t.getLocation(1))}},e.prototype.linkAllDirectedEdges=function(){this.getEdges();for(var t=null,e=null,n=this._edgeList.size()-1;n>=0;n--){var i=this._edgeList.get(n),r=i.getSym();null===e&&(e=r),null!==t&&r.setNext(t),t=i}e.setNext(t)},e.prototype.computeDepths=function(){if(1===arguments.length){var t=arguments[0],e=this.findIndex(t),n=t.getDepth(Se.LEFT),i=t.getDepth(Se.RIGHT),r=this.computeDepths(e+1,this._edgeList.size(),n);if(this.computeDepths(0,e,r)!==i)throw new we(\"depth mismatch at \"+t.getCoordinate())}else if(3===arguments.length){for(var o=arguments[0],s=arguments[1],a=arguments[2],u=o;u<s;u++){var l=this._edgeList.get(u);l.setEdgeDepths(Se.RIGHT,a),a=l.getDepth(Se.LEFT)}return a}},e.prototype.mergeSymLabels=function(){for(var t=this.iterator();t.hasNext();){var e=t.next();e.getLabel().merge(e.getSym().getLabel())}},e.prototype.linkMinimalDirectedEdges=function(t){for(var e=null,n=null,i=this._SCANNING_FOR_INCOMING,r=this._resultAreaEdgeList.size()-1;r>=0;r--){var o=this._resultAreaEdgeList.get(r),s=o.getSym();switch(null===e&&o.getEdgeRing()===t&&(e=o),i){case this._SCANNING_FOR_INCOMING:if(s.getEdgeRing()!==t)continue;n=s,i=this._LINKING_TO_OUTGOING;break;case this._LINKING_TO_OUTGOING:if(o.getEdgeRing()!==t)continue;n.setNextMin(o),i=this._SCANNING_FOR_INCOMING}}i===this._LINKING_TO_OUTGOING&&(et.isTrue(null!==e,\"found null for first outgoing dirEdge\"),et.isTrue(e.getEdgeRing()===t,\"unable to link last incoming dirEdge\"),n.setNextMin(e))},e.prototype.getOutgoingDegree=function(){if(0===arguments.length){for(var t=0,e=this.iterator();e.hasNext();){e.next().isInResult()&&t++}return t}if(1===arguments.length){for(var n=arguments[0],i=0,r=this.iterator();r.hasNext();){r.next().getEdgeRing()===n&&i++}return i}},e.prototype.getLabel=function(){return this._label},e.prototype.findCoveredLineEdges=function(){for(var t=w.NONE,e=this.iterator();e.hasNext();){var n=e.next(),i=n.getSym();if(!n.isLineEdge()){if(n.isInResult()){t=w.INTERIOR;break}if(i.isInResult()){t=w.EXTERIOR;break}}}if(t===w.NONE)return null;for(var r=t,o=this.iterator();o.hasNext();){var s=o.next(),a=s.getSym();s.isLineEdge()?s.getEdge().setCovered(r===w.INTERIOR):(s.isInResult()&&(r=w.EXTERIOR),a.isInResult()&&(r=w.INTERIOR))}},e.prototype.computeLabelling=function(e){t.prototype.computeLabelling.call(this,e),this._label=new Pe(w.NONE);for(var n=this.iterator();n.hasNext();)for(var i=n.next().getEdge().getLabel(),r=0;r<2;r++){var o=i.getLocation(r);o!==w.INTERIOR&&o!==w.BOUNDARY||this._label.setLocation(r,w.INTERIOR)}},e.prototype.interfaces_=function(){return[]},e.prototype.getClass=function(){return e},e}(Xn),kn=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.createNode=function(t){return new Ge(t,new Yn)},e.prototype.interfaces_=function(){return[]},e.prototype.getClass=function(){return e},e}(Xe),jn=function t(){this._pts=null,this._orientation=null;var e=arguments[0];this._pts=e,this._orientation=t.orientation(e)};jn.prototype.compareTo=function(t){var e=t;return jn.compareOriented(this._pts,this._orientation,e._pts,e._orientation)},jn.prototype.interfaces_=function(){return[E]},jn.prototype.getClass=function(){return jn},jn.orientation=function(t){return 1===Lt.increasingDirection(t)},jn.compareOriented=function(t,e,n,i){for(var r=e?1:-1,o=i?1:-1,s=e?t.length:-1,a=i?n.length:-1,u=e?0:t.length-1,l=i?0:n.length-1;;){var c=t[u].compareTo(n[l]);if(0!==c)return c;var p=(u+=r)===s,h=(l+=o)===a;if(p&&!h)return-1;if(!p&&h)return 1;if(p&&h)return 0}};var Hn=function(){this._edges=new Nt,this._ocaMap=new p};Hn.prototype.print=function(t){t.print(\"MULTILINESTRING ( \");for(var e=0;e<this._edges.size();e++){var n=this._edges.get(e);e>0&&t.print(\",\"),t.print(\"(\");for(var i=n.getCoordinates(),r=0;r<i.length;r++)r>0&&t.print(\",\"),t.print(i[r].x+\" \"+i[r].y);t.println(\")\")}t.print(\")  \")},Hn.prototype.addAll=function(t){for(var e=t.iterator();e.hasNext();)this.add(e.next())},Hn.prototype.findEdgeIndex=function(t){for(var e=0;e<this._edges.size();e++)if(this._edges.get(e).equals(t))return e;return-1},Hn.prototype.iterator=function(){return this._edges.iterator()},Hn.prototype.getEdges=function(){return this._edges},Hn.prototype.get=function(t){return this._edges.get(t)},Hn.prototype.findEqualEdge=function(t){var e=new jn(t.getCoordinates());return this._ocaMap.get(e)},Hn.prototype.add=function(t){this._edges.add(t);var e=new jn(t.getCoordinates());this._ocaMap.put(e,t)},Hn.prototype.interfaces_=function(){return[]},Hn.prototype.getClass=function(){return Hn};var Wn=function(){};Wn.prototype.processIntersections=function(t,e,n,i){},Wn.prototype.isDone=function(){},Wn.prototype.interfaces_=function(){return[]},Wn.prototype.getClass=function(){return Wn};var Kn=function(){this._hasIntersection=!1,this._hasProper=!1,this._hasProperInterior=!1,this._hasInterior=!1,this._properIntersectionPoint=null,this._li=null,this._isSelfIntersection=null,this.numIntersections=0,this.numInteriorIntersections=0,this.numProperIntersections=0,this.numTests=0;var t=arguments[0];this._li=t};Kn.prototype.isTrivialIntersection=function(t,e,n,i){if(t===n&&1===this._li.getIntersectionNum()){if(Kn.isAdjacentSegments(e,i))return!0;if(t.isClosed()){var r=t.size()-1;if(0===e&&i===r||0===i&&e===r)return!0}}return!1},Kn.prototype.getProperIntersectionPoint=function(){return this._properIntersectionPoint},Kn.prototype.hasProperInteriorIntersection=function(){return this._hasProperInterior},Kn.prototype.getLineIntersector=function(){return this._li},Kn.prototype.hasProperIntersection=function(){return this._hasProper},Kn.prototype.processIntersections=function(t,e,n,i){if(t===n&&e===i)return null;this.numTests++;var r=t.getCoordinates()[e],o=t.getCoordinates()[e+1],s=n.getCoordinates()[i],a=n.getCoordinates()[i+1];this._li.computeIntersection(r,o,s,a),this._li.hasIntersection()&&(this.numIntersections++,this._li.isInteriorIntersection()&&(this.numInteriorIntersections++,this._hasInterior=!0),this.isTrivialIntersection(t,e,n,i)||(this._hasIntersection=!0,t.addIntersections(this._li,e,0),n.addIntersections(this._li,i,1),this._li.isProper()&&(this.numProperIntersections++,this._hasProper=!0,this._hasProperInterior=!0)))},Kn.prototype.hasIntersection=function(){return this._hasIntersection},Kn.prototype.isDone=function(){return!1},Kn.prototype.hasInteriorIntersection=function(){return this._hasInterior},Kn.prototype.interfaces_=function(){return[Wn]},Kn.prototype.getClass=function(){return Kn},Kn.isAdjacentSegments=function(t,e){return 1===Math.abs(t-e)};var Jn=function(){this.coord=null,this.segmentIndex=null,this.dist=null;var t=arguments[0],e=arguments[1],n=arguments[2];this.coord=new C(t),this.segmentIndex=e,this.dist=n};Jn.prototype.getSegmentIndex=function(){return this.segmentIndex},Jn.prototype.getCoordinate=function(){return this.coord},Jn.prototype.print=function(t){t.print(this.coord),t.print(\" seg # = \"+this.segmentIndex),t.println(\" dist = \"+this.dist)},Jn.prototype.compareTo=function(t){var e=t;return this.compare(e.segmentIndex,e.dist)},Jn.prototype.isEndPoint=function(t){return 0===this.segmentIndex&&0===this.dist||this.segmentIndex===t},Jn.prototype.toString=function(){return this.coord+\" seg # = \"+this.segmentIndex+\" dist = \"+this.dist},Jn.prototype.getDistance=function(){return this.dist},Jn.prototype.compare=function(t,e){return this.segmentIndex<t?-1:this.segmentIndex>t?1:this.dist<e?-1:this.dist>e?1:0},Jn.prototype.interfaces_=function(){return[E]},Jn.prototype.getClass=function(){return Jn};var Qn=function(){this._nodeMap=new p,this.edge=null;var t=arguments[0];this.edge=t};Qn.prototype.print=function(t){t.println(\"Intersections:\");for(var e=this.iterator();e.hasNext();){e.next().print(t)}},Qn.prototype.iterator=function(){return this._nodeMap.values().iterator()},Qn.prototype.addSplitEdges=function(t){this.addEndpoints();for(var e=this.iterator(),n=e.next();e.hasNext();){var i=e.next(),r=this.createSplitEdge(n,i);t.add(r),n=i}},Qn.prototype.addEndpoints=function(){var t=this.edge.pts.length-1;this.add(this.edge.pts[0],0,0),this.add(this.edge.pts[t],t,0)},Qn.prototype.createSplitEdge=function(t,e){var n=e.segmentIndex-t.segmentIndex+2,i=this.edge.pts[e.segmentIndex],r=e.dist>0||!e.coord.equals2D(i);r||n--;var o=new Array(n).fill(null),s=0;o[s++]=new C(t.coord);for(var a=t.segmentIndex+1;a<=e.segmentIndex;a++)o[s++]=this.edge.pts[a];return r&&(o[s]=e.coord),new ni(o,new Pe(this.edge._label))},Qn.prototype.add=function(t,e,n){var i=new Jn(t,e,n),r=this._nodeMap.get(i);return null!==r?r:(this._nodeMap.put(i,i),i)},Qn.prototype.isIntersection=function(t){for(var e=this.iterator();e.hasNext();){if(e.next().coord.equals(t))return!0}return!1},Qn.prototype.interfaces_=function(){return[]},Qn.prototype.getClass=function(){return Qn};var Zn=function(){};Zn.prototype.getChainStartIndices=function(t){var e=0,n=new Nt;n.add(new M(e));do{var i=this.findChainEnd(t,e);n.add(new M(i)),e=i}while(e<t.length-1);return Zn.toIntArray(n)},Zn.prototype.findChainEnd=function(t,e){for(var n=Be.quadrant(t[e],t[e+1]),i=e+1;i<t.length;){if(Be.quadrant(t[i-1],t[i])!==n)break;i++}return i-1},Zn.prototype.interfaces_=function(){return[]},Zn.prototype.getClass=function(){return Zn},Zn.toIntArray=function(t){for(var e=new Array(t.size()).fill(null),n=0;n<e.length;n++)e[n]=t.get(n).intValue();return e};var $n=function(){this.e=null,this.pts=null,this.startIndex=null,this.env1=new j,this.env2=new j;var t=arguments[0];this.e=t,this.pts=t.getCoordinates();var e=new Zn;this.startIndex=e.getChainStartIndices(this.pts)};$n.prototype.getCoordinates=function(){return this.pts},$n.prototype.getMaxX=function(t){var e=this.pts[this.startIndex[t]].x,n=this.pts[this.startIndex[t+1]].x;return e>n?e:n},$n.prototype.getMinX=function(t){var e=this.pts[this.startIndex[t]].x,n=this.pts[this.startIndex[t+1]].x;return e<n?e:n},$n.prototype.computeIntersectsForChain=function(){if(4===arguments.length){var t=arguments[0],e=arguments[1],n=arguments[2],i=arguments[3];this.computeIntersectsForChain(this.startIndex[t],this.startIndex[t+1],e,e.startIndex[n],e.startIndex[n+1],i)}else if(6===arguments.length){var r=arguments[0],o=arguments[1],s=arguments[2],a=arguments[3],u=arguments[4],l=arguments[5],c=this.pts[r],p=this.pts[o],h=s.pts[a],f=s.pts[u];if(o-r==1&&u-a==1)return l.addIntersections(this.e,r,s.e,a),null;if(this.env1.init(c,p),this.env2.init(h,f),!this.env1.intersects(this.env2))return null;var g=Math.trunc((r+o)/2),d=Math.trunc((a+u)/2);r<g&&(a<d&&this.computeIntersectsForChain(r,g,s,a,d,l),d<u&&this.computeIntersectsForChain(r,g,s,d,u,l)),g<o&&(a<d&&this.computeIntersectsForChain(g,o,s,a,d,l),d<u&&this.computeIntersectsForChain(g,o,s,d,u,l))}},$n.prototype.getStartIndexes=function(){return this.startIndex},$n.prototype.computeIntersects=function(t,e){for(var n=0;n<this.startIndex.length-1;n++)for(var i=0;i<t.startIndex.length-1;i++)this.computeIntersectsForChain(n,t,i,e)},$n.prototype.interfaces_=function(){return[]},$n.prototype.getClass=function(){return $n};var ti=function t(){this._depth=Array(2).fill().map(function(){return Array(3)});for(var e=0;e<2;e++)for(var n=0;n<3;n++)this._depth[e][n]=t.NULL_VALUE},ei={NULL_VALUE:{configurable:!0}};ti.prototype.getDepth=function(t,e){return this._depth[t][e]},ti.prototype.setDepth=function(t,e,n){this._depth[t][e]=n},ti.prototype.isNull=function(){if(0===arguments.length){for(var t=0;t<2;t++)for(var e=0;e<3;e++)if(this._depth[t][e]!==ti.NULL_VALUE)return!1;return!0}if(1===arguments.length){var n=arguments[0];return this._depth[n][1]===ti.NULL_VALUE}if(2===arguments.length){var i=arguments[0],r=arguments[1];return this._depth[i][r]===ti.NULL_VALUE}},ti.prototype.normalize=function(){for(var t=0;t<2;t++)if(!this.isNull(t)){var e=this._depth[t][1];this._depth[t][2]<e&&(e=this._depth[t][2]),e<0&&(e=0);for(var n=1;n<3;n++){var i=0;this._depth[t][n]>e&&(i=1),this._depth[t][n]=i}}},ti.prototype.getDelta=function(t){return this._depth[t][Se.RIGHT]-this._depth[t][Se.LEFT]},ti.prototype.getLocation=function(t,e){return this._depth[t][e]<=0?w.EXTERIOR:w.INTERIOR},ti.prototype.toString=function(){return\"A: \"+this._depth[0][1]+\",\"+this._depth[0][2]+\" B: \"+this._depth[1][1]+\",\"+this._depth[1][2]},ti.prototype.add=function(){if(1===arguments.length)for(var t=arguments[0],e=0;e<2;e++)for(var n=1;n<3;n++){var i=t.getLocation(e,n);i!==w.EXTERIOR&&i!==w.INTERIOR||(this.isNull(e,n)?this._depth[e][n]=ti.depthAtLocation(i):this._depth[e][n]+=ti.depthAtLocation(i))}else if(3===arguments.length){var r=arguments[0],o=arguments[1];arguments[2]===w.INTERIOR&&this._depth[r][o]++}},ti.prototype.interfaces_=function(){return[]},ti.prototype.getClass=function(){return ti},ti.depthAtLocation=function(t){return t===w.EXTERIOR?0:t===w.INTERIOR?1:ti.NULL_VALUE},ei.NULL_VALUE.get=function(){return-1},Object.defineProperties(ti,ei);var ni=function(t){function e(){if(t.call(this),this.pts=null,this._env=null,this.eiList=new Qn(this),this._name=null,this._mce=null,this._isIsolated=!0,this._depth=new ti,this._depthDelta=0,1===arguments.length){var n=arguments[0];e.call(this,n,null)}else if(2===arguments.length){var i=arguments[0],r=arguments[1];this.pts=i,this._label=r}}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.getDepth=function(){return this._depth},e.prototype.getCollapsedEdge=function(){var t=new Array(2).fill(null);t[0]=this.pts[0],t[1]=this.pts[1];return new e(t,Pe.toLineLabel(this._label))},e.prototype.isIsolated=function(){return this._isIsolated},e.prototype.getCoordinates=function(){return this.pts},e.prototype.setIsolated=function(t){this._isIsolated=t},e.prototype.setName=function(t){this._name=t},e.prototype.equals=function(t){if(!(t instanceof e))return!1;var n=t;if(this.pts.length!==n.pts.length)return!1;for(var i=!0,r=!0,o=this.pts.length,s=0;s<this.pts.length;s++)if(this.pts[s].equals2D(n.pts[s])||(i=!1),this.pts[s].equals2D(n.pts[--o])||(r=!1),!i&&!r)return!1;return!0},e.prototype.getCoordinate=function(){if(0===arguments.length)return this.pts.length>0?this.pts[0]:null;if(1===arguments.length){var t=arguments[0];return this.pts[t]}},e.prototype.print=function(t){t.print(\"edge \"+this._name+\": \"),t.print(\"LINESTRING (\");for(var e=0;e<this.pts.length;e++)e>0&&t.print(\",\"),t.print(this.pts[e].x+\" \"+this.pts[e].y);t.print(\")  \"+this._label+\" \"+this._depthDelta)},e.prototype.computeIM=function(t){e.updateIM(this._label,t)},e.prototype.isCollapsed=function(){return!!this._label.isArea()&&(3===this.pts.length&&!!this.pts[0].equals(this.pts[2]))},e.prototype.isClosed=function(){return this.pts[0].equals(this.pts[this.pts.length-1])},e.prototype.getMaximumSegmentIndex=function(){return this.pts.length-1},e.prototype.getDepthDelta=function(){return this._depthDelta},e.prototype.getNumPoints=function(){return this.pts.length},e.prototype.printReverse=function(t){t.print(\"edge \"+this._name+\": \");for(var e=this.pts.length-1;e>=0;e--)t.print(this.pts[e]+\" \");t.println(\"\")},e.prototype.getMonotoneChainEdge=function(){return null===this._mce&&(this._mce=new $n(this)),this._mce},e.prototype.getEnvelope=function(){if(null===this._env){this._env=new j;for(var t=0;t<this.pts.length;t++)this._env.expandToInclude(this.pts[t])}return this._env},e.prototype.addIntersection=function(t,e,n,i){var r=new C(t.getIntersection(i)),o=e,s=t.getEdgeDistance(n,i),a=o+1;if(a<this.pts.length){var u=this.pts[a];r.equals2D(u)&&(o=a,s=0)}this.eiList.add(r,o,s)},e.prototype.toString=function(){var t=new D;t.append(\"edge \"+this._name+\": \"),t.append(\"LINESTRING (\");for(var e=0;e<this.pts.length;e++)e>0&&t.append(\",\"),t.append(this.pts[e].x+\" \"+this.pts[e].y);return t.append(\")  \"+this._label+\" \"+this._depthDelta),t.toString()},e.prototype.isPointwiseEqual=function(t){if(this.pts.length!==t.pts.length)return!1;for(var e=0;e<this.pts.length;e++)if(!this.pts[e].equals2D(t.pts[e]))return!1;return!0},e.prototype.setDepthDelta=function(t){this._depthDelta=t},e.prototype.getEdgeIntersectionList=function(){return this.eiList},e.prototype.addIntersections=function(t,e,n){for(var i=0;i<t.getIntersectionNum();i++)this.addIntersection(t,e,n,i)},e.prototype.interfaces_=function(){return[]},e.prototype.getClass=function(){return e},e.updateIM=function(){if(2!==arguments.length)return t.prototype.updateIM.apply(this,arguments);var e=arguments[0],n=arguments[1];n.setAtLeastIfValid(e.getLocation(0,Se.ON),e.getLocation(1,Se.ON),1),e.isArea()&&(n.setAtLeastIfValid(e.getLocation(0,Se.LEFT),e.getLocation(1,Se.LEFT),2),n.setAtLeastIfValid(e.getLocation(0,Se.RIGHT),e.getLocation(1,Se.RIGHT),2))},e}(Fe),ii=function(t){this._workingPrecisionModel=null,this._workingNoder=null,this._geomFact=null,this._graph=null,this._edgeList=new Hn,this._bufParams=t||null};ii.prototype.setWorkingPrecisionModel=function(t){this._workingPrecisionModel=t},ii.prototype.insertUniqueEdge=function(t){var e=this._edgeList.findEqualEdge(t);if(null!==e){var n=e.getLabel(),i=t.getLabel();e.isPointwiseEqual(t)||(i=new Pe(t.getLabel())).flip(),n.merge(i);var r=ii.depthDelta(i),o=e.getDepthDelta()+r;e.setDepthDelta(o)}else this._edgeList.add(t),t.setDepthDelta(ii.depthDelta(t.getLabel()))},ii.prototype.buildSubgraphs=function(t,e){for(var n=new Nt,i=t.iterator();i.hasNext();){var r=i.next(),o=r.getRightmostCoordinate(),s=new An(n).getDepth(o);r.computeDepth(s),r.findResultEdges(),n.add(r),e.add(r.getDirectedEdges(),r.getNodes())}},ii.prototype.createSubgraphs=function(t){for(var e=new Nt,n=t.getNodes().iterator();n.hasNext();){var i=n.next();if(!i.isVisited()){var r=new Te;r.create(i),e.add(r)}}return $e.sort(e,$e.reverseOrder()),e},ii.prototype.createEmptyResultGeometry=function(){return this._geomFact.createPolygon()},ii.prototype.getNoder=function(t){if(null!==this._workingNoder)return this._workingNoder;var e=new xn,n=new rt;return n.setPrecisionModel(t),e.setSegmentIntersector(new Kn(n)),e},ii.prototype.buffer=function(t,e){var n=this._workingPrecisionModel;null===n&&(n=t.getPrecisionModel()),this._geomFact=t.getFactory();var i=new Mn(n,this._bufParams),r=new Bn(t,e,i).getCurves();if(r.size()<=0)return this.createEmptyResultGeometry();this.computeNodedEdges(r,n),this._graph=new Ye(new kn),this._graph.addEdges(this._edgeList.getEdges());var o=this.createSubgraphs(this._graph),s=new ke(this._geomFact);this.buildSubgraphs(o,s);var a=s.getPolygons();if(a.size()<=0)return this.createEmptyResultGeometry();return this._geomFact.buildGeometry(a)},ii.prototype.computeNodedEdges=function(t,e){var n=this.getNoder(e);n.computeNodes(t);for(var i=n.getNodedSubstrings().iterator();i.hasNext();){var r=i.next(),o=r.getCoordinates();if(2!==o.length||!o[0].equals2D(o[1])){var s=r.getData(),a=new ni(r.getCoordinates(),new Pe(s));this.insertUniqueEdge(a)}}},ii.prototype.setNoder=function(t){this._workingNoder=t},ii.prototype.interfaces_=function(){return[]},ii.prototype.getClass=function(){return ii},ii.depthDelta=function(t){var e=t.getLocation(0,Se.LEFT),n=t.getLocation(0,Se.RIGHT);return e===w.INTERIOR&&n===w.EXTERIOR?1:e===w.EXTERIOR&&n===w.INTERIOR?-1:0},ii.convertSegStrings=function(t){for(var e=new _e,n=new Nt;t.hasNext();){var i=t.next(),r=e.createLineString(i.getCoordinates());n.add(r)}return e.buildGeometry(n)};var ri=function(){if(this._noder=null,this._scaleFactor=null,this._offsetX=null,this._offsetY=null,this._isScaled=!1,2===arguments.length){var t=arguments[0],e=arguments[1];this._noder=t,this._scaleFactor=e,this._offsetX=0,this._offsetY=0,this._isScaled=!this.isIntegerPrecision()}else if(4===arguments.length){var n=arguments[0],i=arguments[1],r=arguments[2],o=arguments[3];this._noder=n,this._scaleFactor=i,this._offsetX=r,this._offsetY=o,this._isScaled=!this.isIntegerPrecision()}};ri.prototype.rescale=function(){if(T(arguments[0],It))for(var t=arguments[0].iterator();t.hasNext();){var e=t.next();this.rescale(e.getCoordinates())}else if(arguments[0]instanceof Array){for(var n=arguments[0],i=0;i<n.length;i++)n[i].x=n[i].x/this._scaleFactor+this._offsetX,n[i].y=n[i].y/this._scaleFactor+this._offsetY;2===n.length&&n[0].equals2D(n[1])&&Y.out.println(n)}},ri.prototype.scale=function(){if(T(arguments[0],It)){for(var t=arguments[0],e=new Nt,n=t.iterator();n.hasNext();){var i=n.next();e.add(new gn(this.scale(i.getCoordinates()),i.getData()))}return e}if(arguments[0]instanceof Array){for(var r=arguments[0],o=new Array(r.length).fill(null),s=0;s<r.length;s++)o[s]=new C(Math.round((r[s].x-this._offsetX)*this._scaleFactor),Math.round((r[s].y-this._offsetY)*this._scaleFactor),r[s].z);return Lt.removeRepeatedPoints(o)}},ri.prototype.isIntegerPrecision=function(){return 1===this._scaleFactor},ri.prototype.getNodedSubstrings=function(){var t=this._noder.getNodedSubstrings();return this._isScaled&&this.rescale(t),t},ri.prototype.computeNodes=function(t){var e=t;this._isScaled&&(e=this.scale(t)),this._noder.computeNodes(e)},ri.prototype.interfaces_=function(){return[In]},ri.prototype.getClass=function(){return ri};var oi=function(){this._li=new rt,this._segStrings=null;var t=arguments[0];this._segStrings=t},si={fact:{configurable:!0}};oi.prototype.checkEndPtVertexIntersections=function(){if(0===arguments.length)for(var t=this._segStrings.iterator();t.hasNext();){var e=t.next().getCoordinates();this.checkEndPtVertexIntersections(e[0],this._segStrings),this.checkEndPtVertexIntersections(e[e.length-1],this._segStrings)}else if(2===arguments.length)for(var n=arguments[0],i=arguments[1].iterator();i.hasNext();)for(var r=i.next().getCoordinates(),o=1;o<r.length-1;o++)if(r[o].equals(n))throw new $(\"found endpt/interior pt intersection at index \"+o+\" :pt \"+n)},oi.prototype.checkInteriorIntersections=function(){if(0===arguments.length)for(var t=this._segStrings.iterator();t.hasNext();)for(var e=t.next(),n=this._segStrings.iterator();n.hasNext();){var i=n.next();this.checkInteriorIntersections(e,i)}else if(2===arguments.length)for(var r=arguments[0],o=arguments[1],s=r.getCoordinates(),a=o.getCoordinates(),u=0;u<s.length-1;u++)for(var l=0;l<a.length-1;l++)this.checkInteriorIntersections(r,u,o,l);else if(4===arguments.length){var c=arguments[0],p=arguments[1],h=arguments[2],f=arguments[3];if(c===h&&p===f)return null;var g=c.getCoordinates()[p],d=c.getCoordinates()[p+1],y=h.getCoordinates()[f],_=h.getCoordinates()[f+1];if(this._li.computeIntersection(g,d,y,_),this._li.hasIntersection()&&(this._li.isProper()||this.hasInteriorIntersection(this._li,g,d)||this.hasInteriorIntersection(this._li,y,_)))throw new $(\"found non-noded intersection at \"+g+\"-\"+d+\" and \"+y+\"-\"+_)}},oi.prototype.checkValid=function(){this.checkEndPtVertexIntersections(),this.checkInteriorIntersections(),this.checkCollapses()},oi.prototype.checkCollapses=function(){if(0===arguments.length)for(var t=this._segStrings.iterator();t.hasNext();){var e=t.next();this.checkCollapses(e)}else if(1===arguments.length)for(var n=arguments[0].getCoordinates(),i=0;i<n.length-2;i++)this.checkCollapse(n[i],n[i+1],n[i+2])},oi.prototype.hasInteriorIntersection=function(t,e,n){for(var i=0;i<t.getIntersectionNum();i++){var r=t.getIntersection(i);if(!r.equals(e)&&!r.equals(n))return!0}return!1},oi.prototype.checkCollapse=function(t,e,n){if(t.equals(n))throw new $(\"found non-noded collapse at \"+oi.fact.createLineString([t,e,n]))},oi.prototype.interfaces_=function(){return[]},oi.prototype.getClass=function(){return oi},si.fact.get=function(){return new _e},Object.defineProperties(oi,si);var ai=function(){this._li=null,this._pt=null,this._originalPt=null,this._ptScaled=null,this._p0Scaled=null,this._p1Scaled=null,this._scaleFactor=null,this._minx=null,this._maxx=null,this._miny=null,this._maxy=null,this._corner=new Array(4).fill(null),this._safeEnv=null;var t=arguments[0],e=arguments[1],n=arguments[2];if(this._originalPt=t,this._pt=t,this._scaleFactor=e,this._li=n,e<=0)throw new m(\"Scale factor must be non-zero\");1!==e&&(this._pt=new C(this.scale(t.x),this.scale(t.y)),this._p0Scaled=new C,this._p1Scaled=new C),this.initCorners(this._pt)},ui={SAFE_ENV_EXPANSION_FACTOR:{configurable:!0}};ai.prototype.intersectsScaled=function(t,e){var n=Math.min(t.x,e.x),i=Math.max(t.x,e.x),r=Math.min(t.y,e.y),o=Math.max(t.y,e.y),s=this._maxx<n||this._minx>i||this._maxy<r||this._miny>o;if(s)return!1;var a=this.intersectsToleranceSquare(t,e);return et.isTrue(!(s&&a),\"Found bad envelope test\"),a},ai.prototype.initCorners=function(t){this._minx=t.x-.5,this._maxx=t.x+.5,this._miny=t.y-.5,this._maxy=t.y+.5,this._corner[0]=new C(this._maxx,this._maxy),this._corner[1]=new C(this._minx,this._maxy),this._corner[2]=new C(this._minx,this._miny),this._corner[3]=new C(this._maxx,this._miny)},ai.prototype.intersects=function(t,e){return 1===this._scaleFactor?this.intersectsScaled(t,e):(this.copyScaled(t,this._p0Scaled),this.copyScaled(e,this._p1Scaled),this.intersectsScaled(this._p0Scaled,this._p1Scaled))},ai.prototype.scale=function(t){return Math.round(t*this._scaleFactor)},ai.prototype.getCoordinate=function(){return this._originalPt},ai.prototype.copyScaled=function(t,e){e.x=this.scale(t.x),e.y=this.scale(t.y)},ai.prototype.getSafeEnvelope=function(){if(null===this._safeEnv){var t=ai.SAFE_ENV_EXPANSION_FACTOR/this._scaleFactor;this._safeEnv=new j(this._originalPt.x-t,this._originalPt.x+t,this._originalPt.y-t,this._originalPt.y+t)}return this._safeEnv},ai.prototype.intersectsPixelClosure=function(t,e){return this._li.computeIntersection(t,e,this._corner[0],this._corner[1]),!!this._li.hasIntersection()||(this._li.computeIntersection(t,e,this._corner[1],this._corner[2]),!!this._li.hasIntersection()||(this._li.computeIntersection(t,e,this._corner[2],this._corner[3]),!!this._li.hasIntersection()||(this._li.computeIntersection(t,e,this._corner[3],this._corner[0]),!!this._li.hasIntersection())))},ai.prototype.intersectsToleranceSquare=function(t,e){var n=!1,i=!1;return this._li.computeIntersection(t,e,this._corner[0],this._corner[1]),!!this._li.isProper()||(this._li.computeIntersection(t,e,this._corner[1],this._corner[2]),!!this._li.isProper()||(this._li.hasIntersection()&&(n=!0),this._li.computeIntersection(t,e,this._corner[2],this._corner[3]),!!this._li.isProper()||(this._li.hasIntersection()&&(i=!0),this._li.computeIntersection(t,e,this._corner[3],this._corner[0]),!!this._li.isProper()||(!(!n||!i)||(!!t.equals(this._pt)||!!e.equals(this._pt))))))},ai.prototype.addSnappedNode=function(t,e){var n=t.getCoordinate(e),i=t.getCoordinate(e+1);return!!this.intersects(n,i)&&(t.addIntersection(this.getCoordinate(),e),!0)},ai.prototype.interfaces_=function(){return[]},ai.prototype.getClass=function(){return ai},ui.SAFE_ENV_EXPANSION_FACTOR.get=function(){return.75},Object.defineProperties(ai,ui);var li=function(){this.tempEnv1=new j,this.selectedSegment=new dn};li.prototype.select=function(){if(1===arguments.length);else if(2===arguments.length){var t=arguments[0],e=arguments[1];t.getLineSegment(e,this.selectedSegment),this.select(this.selectedSegment)}},li.prototype.interfaces_=function(){return[]},li.prototype.getClass=function(){return li};var ci=function(){this._index=null;var t=arguments[0];this._index=t},pi={HotPixelSnapAction:{configurable:!0}};ci.prototype.snap=function(){if(1===arguments.length){var t=arguments[0];return this.snap(t,null,-1)}if(3===arguments.length){var e=arguments[0],n=arguments[1],i=arguments[2],r=e.getSafeEnvelope(),o=new hi(e,n,i);return this._index.query(r,{interfaces_:function(){return[Ke]},visitItem:function(t){t.select(r,o)}}),o.isNodeAdded()}},ci.prototype.interfaces_=function(){return[]},ci.prototype.getClass=function(){return ci},pi.HotPixelSnapAction.get=function(){return hi},Object.defineProperties(ci,pi);var hi=function(t){function e(){t.call(this),this._hotPixel=null,this._parentEdge=null,this._hotPixelVertexIndex=null,this._isNodeAdded=!1;var e=arguments[0],n=arguments[1],i=arguments[2];this._hotPixel=e,this._parentEdge=n,this._hotPixelVertexIndex=i}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.isNodeAdded=function(){return this._isNodeAdded},e.prototype.select=function(){if(2!==arguments.length)return t.prototype.select.apply(this,arguments);var e=arguments[0],n=arguments[1],i=e.getContext();if(null!==this._parentEdge&&i===this._parentEdge&&n===this._hotPixelVertexIndex)return null;this._isNodeAdded=this._hotPixel.addSnappedNode(i,n)},e.prototype.interfaces_=function(){return[]},e.prototype.getClass=function(){return e},e}(li),fi=function(){this._li=null,this._interiorIntersections=null;var t=arguments[0];this._li=t,this._interiorIntersections=new Nt};fi.prototype.processIntersections=function(t,e,n,i){if(t===n&&e===i)return null;var r=t.getCoordinates()[e],o=t.getCoordinates()[e+1],s=n.getCoordinates()[i],a=n.getCoordinates()[i+1];if(this._li.computeIntersection(r,o,s,a),this._li.hasIntersection()&&this._li.isInteriorIntersection()){for(var u=0;u<this._li.getIntersectionNum();u++)this._interiorIntersections.add(this._li.getIntersection(u));t.addIntersections(this._li,e,0),n.addIntersections(this._li,i,1)}},fi.prototype.isDone=function(){return!1},fi.prototype.getInteriorIntersections=function(){return this._interiorIntersections},fi.prototype.interfaces_=function(){return[Wn]},fi.prototype.getClass=function(){return fi};var gi=function(){this._pm=null,this._li=null,this._scaleFactor=null,this._noder=null,this._pointSnapper=null,this._nodedSegStrings=null;var t=arguments[0];this._pm=t,this._li=new rt,this._li.setPrecisionModel(t),this._scaleFactor=t.getScale()};gi.prototype.checkCorrectness=function(t){var e=gn.getNodedSubstrings(t),n=new oi(e);try{n.checkValid()}catch(t){if(!(t instanceof z))throw t;t.printStackTrace()}},gi.prototype.getNodedSubstrings=function(){return gn.getNodedSubstrings(this._nodedSegStrings)},gi.prototype.snapRound=function(t,e){var n=this.findInteriorIntersections(t,e);this.computeIntersectionSnaps(n),this.computeVertexSnaps(t)},gi.prototype.findInteriorIntersections=function(t,e){var n=new fi(e);return this._noder.setSegmentIntersector(n),this._noder.computeNodes(t),n.getInteriorIntersections()},gi.prototype.computeVertexSnaps=function(){if(T(arguments[0],It))for(var t=arguments[0].iterator();t.hasNext();){var e=t.next();this.computeVertexSnaps(e)}else if(arguments[0]instanceof gn)for(var n=arguments[0],i=n.getCoordinates(),r=0;r<i.length;r++){var o=new ai(i[r],this._scaleFactor,this._li);this._pointSnapper.snap(o,n,r)&&n.addIntersection(i[r],r)}},gi.prototype.computeNodes=function(t){this._nodedSegStrings=t,this._noder=new xn,this._pointSnapper=new ci(this._noder.getIndex()),this.snapRound(t,this._li)},gi.prototype.computeIntersectionSnaps=function(t){for(var e=t.iterator();e.hasNext();){var n=e.next(),i=new ai(n,this._scaleFactor,this._li);this._pointSnapper.snap(i)}},gi.prototype.interfaces_=function(){return[In]},gi.prototype.getClass=function(){return gi};var di=function(){if(this._argGeom=null,this._distance=null,this._bufParams=new Cn,this._resultGeometry=null,this._saveException=null,1===arguments.length){var t=arguments[0];this._argGeom=t}else if(2===arguments.length){var e=arguments[0],n=arguments[1];this._argGeom=e,this._bufParams=n}},yi={CAP_ROUND:{configurable:!0},CAP_BUTT:{configurable:!0},CAP_FLAT:{configurable:!0},CAP_SQUARE:{configurable:!0},MAX_PRECISION_DIGITS:{configurable:!0}};di.prototype.bufferFixedPrecision=function(t){var e=new ri(new gi(new fe(1)),t.getScale()),n=new ii(this._bufParams);n.setWorkingPrecisionModel(t),n.setNoder(e),this._resultGeometry=n.buffer(this._argGeom,this._distance)},di.prototype.bufferReducedPrecision=function(){var t=this;if(0===arguments.length){for(var e=di.MAX_PRECISION_DIGITS;e>=0;e--){try{t.bufferReducedPrecision(e)}catch(e){if(!(e instanceof we))throw e;t._saveException=e}if(null!==t._resultGeometry)return null}throw this._saveException}if(1===arguments.length){var n=arguments[0],i=di.precisionScaleFactor(this._argGeom,this._distance,n),r=new fe(i);this.bufferFixedPrecision(r)}},di.prototype.computeGeometry=function(){if(this.bufferOriginalPrecision(),null!==this._resultGeometry)return null;var t=this._argGeom.getFactory().getPrecisionModel();t.getType()===fe.FIXED?this.bufferFixedPrecision(t):this.bufferReducedPrecision()},di.prototype.setQuadrantSegments=function(t){this._bufParams.setQuadrantSegments(t)},di.prototype.bufferOriginalPrecision=function(){try{var t=new ii(this._bufParams);this._resultGeometry=t.buffer(this._argGeom,this._distance)}catch(t){if(!(t instanceof $))throw t;this._saveException=t}},di.prototype.getResultGeometry=function(t){return this._distance=t,this.computeGeometry(),this._resultGeometry},di.prototype.setEndCapStyle=function(t){this._bufParams.setEndCapStyle(t)},di.prototype.interfaces_=function(){return[]},di.prototype.getClass=function(){return di},di.bufferOp=function(){if(2===arguments.length){var t=arguments[0],e=arguments[1];return new di(t).getResultGeometry(e)}if(3===arguments.length){if(Number.isInteger(arguments[2])&&arguments[0]instanceof ct&&\"number\"==typeof arguments[1]){var n=arguments[0],i=arguments[1],r=arguments[2],o=new di(n);o.setQuadrantSegments(r);return o.getResultGeometry(i)}if(arguments[2]instanceof Cn&&arguments[0]instanceof ct&&\"number\"==typeof arguments[1]){var s=arguments[0],a=arguments[1],u=arguments[2];return new di(s,u).getResultGeometry(a)}}else if(4===arguments.length){var l=arguments[0],c=arguments[1],p=arguments[2],h=arguments[3],f=new di(l);f.setQuadrantSegments(p),f.setEndCapStyle(h);return f.getResultGeometry(c)}},di.precisionScaleFactor=function(t,e,n){var i=t.getEnvelopeInternal(),r=R.max(Math.abs(i.getMaxX()),Math.abs(i.getMaxY()),Math.abs(i.getMinX()),Math.abs(i.getMinY()))+2*(e>0?e:0),o=n-Math.trunc(Math.log(r)/Math.log(10)+1);return Math.pow(10,o)},yi.CAP_ROUND.get=function(){return Cn.CAP_ROUND},yi.CAP_BUTT.get=function(){return Cn.CAP_FLAT},yi.CAP_FLAT.get=function(){return Cn.CAP_FLAT},yi.CAP_SQUARE.get=function(){return Cn.CAP_SQUARE},yi.MAX_PRECISION_DIGITS.get=function(){return 12},Object.defineProperties(di,yi);var _i=function(){this._pt=[new C,new C],this._distance=v.NaN,this._isNull=!0};_i.prototype.getCoordinates=function(){return this._pt},_i.prototype.getCoordinate=function(t){return this._pt[t]},_i.prototype.setMinimum=function(){if(1===arguments.length){var t=arguments[0];this.setMinimum(t._pt[0],t._pt[1])}else if(2===arguments.length){var e=arguments[0],n=arguments[1];if(this._isNull)return this.initialize(e,n),null;var i=e.distance(n);i<this._distance&&this.initialize(e,n,i)}},_i.prototype.initialize=function(){if(0===arguments.length)this._isNull=!0;else if(2===arguments.length){var t=arguments[0],e=arguments[1];this._pt[0].setCoordinate(t),this._pt[1].setCoordinate(e),this._distance=t.distance(e),this._isNull=!1}else if(3===arguments.length){var n=arguments[0],i=arguments[1],r=arguments[2];this._pt[0].setCoordinate(n),this._pt[1].setCoordinate(i),this._distance=r,this._isNull=!1}},_i.prototype.getDistance=function(){return this._distance},_i.prototype.setMaximum=function(){if(1===arguments.length){var t=arguments[0];this.setMaximum(t._pt[0],t._pt[1])}else if(2===arguments.length){var e=arguments[0],n=arguments[1];if(this._isNull)return this.initialize(e,n),null;var i=e.distance(n);i>this._distance&&this.initialize(e,n,i)}},_i.prototype.interfaces_=function(){return[]},_i.prototype.getClass=function(){return _i};var mi=function(){};mi.prototype.interfaces_=function(){return[]},mi.prototype.getClass=function(){return mi},mi.computeDistance=function(){if(arguments[2]instanceof _i&&arguments[0]instanceof Kt&&arguments[1]instanceof C)for(var t=arguments[0],e=arguments[1],n=arguments[2],i=t.getCoordinates(),r=new dn,o=0;o<i.length-1;o++){r.setCoordinates(i[o],i[o+1]);var s=r.closestPoint(e);n.setMinimum(s,e)}else if(arguments[2]instanceof _i&&arguments[0]instanceof $t&&arguments[1]instanceof C){var a=arguments[0],u=arguments[1],l=arguments[2];mi.computeDistance(a.getExteriorRing(),u,l);for(var c=0;c<a.getNumInteriorRing();c++)mi.computeDistance(a.getInteriorRingN(c),u,l)}else if(arguments[2]instanceof _i&&arguments[0]instanceof ct&&arguments[1]instanceof C){var p=arguments[0],h=arguments[1],f=arguments[2];if(p instanceof Kt)mi.computeDistance(p,h,f);else if(p instanceof $t)mi.computeDistance(p,h,f);else if(p instanceof zt)for(var g=p,d=0;d<g.getNumGeometries();d++){var y=g.getGeometryN(d);mi.computeDistance(y,h,f)}else f.setMinimum(p.getCoordinate(),h)}else if(arguments[2]instanceof _i&&arguments[0]instanceof dn&&arguments[1]instanceof C){var _=arguments[0],m=arguments[1],v=arguments[2],I=_.closestPoint(m);v.setMinimum(I,m)}};var vi=function(t){this._maxPtDist=new _i,this._inputGeom=t||null},Ii={MaxPointDistanceFilter:{configurable:!0},MaxMidpointDistanceFilter:{configurable:!0}};vi.prototype.computeMaxMidpointDistance=function(t){var e=new xi(this._inputGeom);t.apply(e),this._maxPtDist.setMaximum(e.getMaxPointDistance())},vi.prototype.computeMaxVertexDistance=function(t){var e=new Ei(this._inputGeom);t.apply(e),this._maxPtDist.setMaximum(e.getMaxPointDistance())},vi.prototype.findDistance=function(t){return this.computeMaxVertexDistance(t),this.computeMaxMidpointDistance(t),this._maxPtDist.getDistance()},vi.prototype.getDistancePoints=function(){return this._maxPtDist},vi.prototype.interfaces_=function(){return[]},vi.prototype.getClass=function(){return vi},Ii.MaxPointDistanceFilter.get=function(){return Ei},Ii.MaxMidpointDistanceFilter.get=function(){return xi},Object.defineProperties(vi,Ii);var Ei=function(t){this._maxPtDist=new _i,this._minPtDist=new _i,this._geom=t||null};Ei.prototype.filter=function(t){this._minPtDist.initialize(),mi.computeDistance(this._geom,t,this._minPtDist),this._maxPtDist.setMaximum(this._minPtDist)},Ei.prototype.getMaxPointDistance=function(){return this._maxPtDist},Ei.prototype.interfaces_=function(){return[ft]},Ei.prototype.getClass=function(){return Ei};var xi=function(t){this._maxPtDist=new _i,this._minPtDist=new _i,this._geom=t||null};xi.prototype.filter=function(t,e){if(0===e)return null;var n=t.getCoordinate(e-1),i=t.getCoordinate(e),r=new C((n.x+i.x)/2,(n.y+i.y)/2);this._minPtDist.initialize(),mi.computeDistance(this._geom,r,this._minPtDist),this._maxPtDist.setMaximum(this._minPtDist)},xi.prototype.isDone=function(){return!1},xi.prototype.isGeometryChanged=function(){return!1},xi.prototype.getMaxPointDistance=function(){return this._maxPtDist},xi.prototype.interfaces_=function(){return[Ut]},xi.prototype.getClass=function(){return xi};var Ni=function(t){this._comps=t||null};Ni.prototype.filter=function(t){t instanceof $t&&this._comps.add(t)},Ni.prototype.interfaces_=function(){return[Vt]},Ni.prototype.getClass=function(){return Ni},Ni.getPolygons=function(){if(1===arguments.length){var t=arguments[0];return Ni.getPolygons(t,new Nt)}if(2===arguments.length){var e=arguments[0],n=arguments[1];return e instanceof $t?n.add(e):e instanceof zt&&e.apply(new Ni(n)),n}};var Ci=function(){if(this._lines=null,this._isForcedToLineString=!1,1===arguments.length){var t=arguments[0];this._lines=t}else if(2===arguments.length){var e=arguments[0],n=arguments[1];this._lines=e,this._isForcedToLineString=n}};Ci.prototype.filter=function(t){if(this._isForcedToLineString&&t instanceof ee){var e=t.getFactory().createLineString(t.getCoordinateSequence());return this._lines.add(e),null}t instanceof Kt&&this._lines.add(t)},Ci.prototype.setForceToLineString=function(t){this._isForcedToLineString=t},Ci.prototype.interfaces_=function(){return[lt]},Ci.prototype.getClass=function(){return Ci},Ci.getGeometry=function(){if(1===arguments.length){var t=arguments[0];return t.getFactory().buildGeometry(Ci.getLines(t))}if(2===arguments.length){var e=arguments[0],n=arguments[1];return e.getFactory().buildGeometry(Ci.getLines(e,n))}},Ci.getLines=function(){if(1===arguments.length){var t=arguments[0];return Ci.getLines(t,!1)}if(2===arguments.length){if(T(arguments[0],It)&&T(arguments[1],It)){for(var e=arguments[0],n=arguments[1],i=e.iterator();i.hasNext();){var r=i.next();Ci.getLines(r,n)}return n}if(arguments[0]instanceof ct&&\"boolean\"==typeof arguments[1]){var o=arguments[0],s=arguments[1],a=new Nt;return o.apply(new Ci(a,s)),a}if(arguments[0]instanceof ct&&T(arguments[1],It)){var u=arguments[0],l=arguments[1];return u instanceof Kt?l.add(u):u.apply(new Ci(l)),l}}else if(3===arguments.length){if(\"boolean\"==typeof arguments[2]&&T(arguments[0],It)&&T(arguments[1],It)){for(var c=arguments[0],p=arguments[1],h=arguments[2],f=c.iterator();f.hasNext();){var g=f.next();Ci.getLines(g,p,h)}return p}if(\"boolean\"==typeof arguments[2]&&arguments[0]instanceof ct&&T(arguments[1],It)){var d=arguments[0],y=arguments[1],_=arguments[2];return d.apply(new Ci(y,_)),y}}};var Si=function(){if(this._boundaryRule=gt.OGC_SFS_BOUNDARY_RULE,this._isIn=null,this._numBoundaries=null,0===arguments.length);else if(1===arguments.length){var t=arguments[0];if(null===t)throw new m(\"Rule must be non-null\");this._boundaryRule=t}};Si.prototype.locateInternal=function(){if(arguments[0]instanceof C&&arguments[1]instanceof $t){var t=arguments[0],e=arguments[1];if(e.isEmpty())return w.EXTERIOR;var n=e.getExteriorRing(),i=this.locateInPolygonRing(t,n);if(i===w.EXTERIOR)return w.EXTERIOR;if(i===w.BOUNDARY)return w.BOUNDARY;for(var r=0;r<e.getNumInteriorRing();r++){var o=e.getInteriorRingN(r),s=this.locateInPolygonRing(t,o);if(s===w.INTERIOR)return w.EXTERIOR;if(s===w.BOUNDARY)return w.BOUNDARY}return w.INTERIOR}if(arguments[0]instanceof C&&arguments[1]instanceof Kt){var a=arguments[0],u=arguments[1];if(!u.getEnvelopeInternal().intersects(a))return w.EXTERIOR;var l=u.getCoordinates();return u.isClosed()||!a.equals(l[0])&&!a.equals(l[l.length-1])?at.isOnLine(a,l)?w.INTERIOR:w.EXTERIOR:w.BOUNDARY}if(arguments[0]instanceof C&&arguments[1]instanceof Qt){var c=arguments[0];return arguments[1].getCoordinate().equals2D(c)?w.INTERIOR:w.EXTERIOR}},Si.prototype.locateInPolygonRing=function(t,e){return e.getEnvelopeInternal().intersects(t)?at.locatePointInRing(t,e.getCoordinates()):w.EXTERIOR},Si.prototype.intersects=function(t,e){return this.locate(t,e)!==w.EXTERIOR},Si.prototype.updateLocationInfo=function(t){t===w.INTERIOR&&(this._isIn=!0),t===w.BOUNDARY&&this._numBoundaries++},Si.prototype.computeLocation=function(t,e){if(e instanceof Qt&&this.updateLocationInfo(this.locateInternal(t,e)),e instanceof Kt)this.updateLocationInfo(this.locateInternal(t,e));else if(e instanceof $t)this.updateLocationInfo(this.locateInternal(t,e));else if(e instanceof Xt)for(var n=e,i=0;i<n.getNumGeometries();i++){var r=n.getGeometryN(i);this.updateLocationInfo(this.locateInternal(t,r))}else if(e instanceof ne)for(var o=e,s=0;s<o.getNumGeometries();s++){var a=o.getGeometryN(s);this.updateLocationInfo(this.locateInternal(t,a))}else if(e instanceof zt)for(var u=new Un(e);u.hasNext();){var l=u.next();l!==e&&this.computeLocation(t,l)}},Si.prototype.locate=function(t,e){return e.isEmpty()?w.EXTERIOR:e instanceof Kt?this.locateInternal(t,e):e instanceof $t?this.locateInternal(t,e):(this._isIn=!1,this._numBoundaries=0,this.computeLocation(t,e),this._boundaryRule.isInBoundary(this._numBoundaries)?w.BOUNDARY:this._numBoundaries>0||this._isIn?w.INTERIOR:w.EXTERIOR)},Si.prototype.interfaces_=function(){return[]},Si.prototype.getClass=function(){return Si};var Li=function t(){if(this._component=null,this._segIndex=null,this._pt=null,2===arguments.length){var e=arguments[0],n=arguments[1];t.call(this,e,t.INSIDE_AREA,n)}else if(3===arguments.length){var i=arguments[0],r=arguments[1],o=arguments[2];this._component=i,this._segIndex=r,this._pt=o}},bi={INSIDE_AREA:{configurable:!0}};Li.prototype.isInsideArea=function(){return this._segIndex===Li.INSIDE_AREA},Li.prototype.getCoordinate=function(){return this._pt},Li.prototype.getGeometryComponent=function(){return this._component},Li.prototype.getSegmentIndex=function(){return this._segIndex},Li.prototype.interfaces_=function(){return[]},Li.prototype.getClass=function(){return Li},bi.INSIDE_AREA.get=function(){return-1},Object.defineProperties(Li,bi);var wi=function(t){this._pts=t||null};wi.prototype.filter=function(t){t instanceof Qt&&this._pts.add(t)},wi.prototype.interfaces_=function(){return[Vt]},wi.prototype.getClass=function(){return wi},wi.getPoints=function(){if(1===arguments.length){var t=arguments[0];return t instanceof Qt?$e.singletonList(t):wi.getPoints(t,new Nt)}if(2===arguments.length){var e=arguments[0],n=arguments[1];return e instanceof Qt?n.add(e):e instanceof zt&&e.apply(new wi(n)),n}};var Oi=function(){this._locations=null;var t=arguments[0];this._locations=t};Oi.prototype.filter=function(t){(t instanceof Qt||t instanceof Kt||t instanceof $t)&&this._locations.add(new Li(t,0,t.getCoordinate()))},Oi.prototype.interfaces_=function(){return[Vt]},Oi.prototype.getClass=function(){return Oi},Oi.getLocations=function(t){var e=new Nt;return t.apply(new Oi(e)),e};var Ti=function(){if(this._geom=null,this._terminateDistance=0,this._ptLocator=new Si,this._minDistanceLocation=null,this._minDistance=v.MAX_VALUE,2===arguments.length){var t=arguments[0],e=arguments[1];this._geom=[t,e],this._terminateDistance=0}else if(3===arguments.length){var n=arguments[0],i=arguments[1],r=arguments[2];this._geom=new Array(2).fill(null),this._geom[0]=n,this._geom[1]=i,this._terminateDistance=r}};Ti.prototype.computeContainmentDistance=function(){if(0===arguments.length){var t=new Array(2).fill(null);if(this.computeContainmentDistance(0,t),this._minDistance<=this._terminateDistance)return null;this.computeContainmentDistance(1,t)}else if(2===arguments.length){var e=arguments[0],n=arguments[1],i=1-e,r=Ni.getPolygons(this._geom[e]);if(r.size()>0){var o=Oi.getLocations(this._geom[i]);if(this.computeContainmentDistance(o,r,n),this._minDistance<=this._terminateDistance)return this._minDistanceLocation[i]=n[0],this._minDistanceLocation[e]=n[1],null}}else if(3===arguments.length)if(arguments[2]instanceof Array&&T(arguments[0],xt)&&T(arguments[1],xt)){for(var s=arguments[0],a=arguments[1],u=arguments[2],l=0;l<s.size();l++)for(var c=s.get(l),p=0;p<a.size();p++)if(this.computeContainmentDistance(c,a.get(p),u),this._minDistance<=this._terminateDistance)return null}else if(arguments[2]instanceof Array&&arguments[0]instanceof Li&&arguments[1]instanceof $t){var h=arguments[0],f=arguments[1],g=arguments[2],d=h.getCoordinate();if(w.EXTERIOR!==this._ptLocator.locate(d,f))return this._minDistance=0,g[0]=h,g[1]=new Li(f,d),null}},Ti.prototype.computeMinDistanceLinesPoints=function(t,e,n){for(var i=0;i<t.size();i++)for(var r=t.get(i),o=0;o<e.size();o++){var s=e.get(o);if(this.computeMinDistance(r,s,n),this._minDistance<=this._terminateDistance)return null}},Ti.prototype.computeFacetDistance=function(){var t=new Array(2).fill(null),e=Ci.getLines(this._geom[0]),n=Ci.getLines(this._geom[1]),i=wi.getPoints(this._geom[0]),r=wi.getPoints(this._geom[1]);return this.computeMinDistanceLines(e,n,t),this.updateMinDistance(t,!1),this._minDistance<=this._terminateDistance?null:(t[0]=null,t[1]=null,this.computeMinDistanceLinesPoints(e,r,t),this.updateMinDistance(t,!1),this._minDistance<=this._terminateDistance?null:(t[0]=null,t[1]=null,this.computeMinDistanceLinesPoints(n,i,t),this.updateMinDistance(t,!0),this._minDistance<=this._terminateDistance?null:(t[0]=null,t[1]=null,this.computeMinDistancePoints(i,r,t),void this.updateMinDistance(t,!1))))},Ti.prototype.nearestLocations=function(){return this.computeMinDistance(),this._minDistanceLocation},Ti.prototype.updateMinDistance=function(t,e){if(null===t[0])return null;e?(this._minDistanceLocation[0]=t[1],this._minDistanceLocation[1]=t[0]):(this._minDistanceLocation[0]=t[0],this._minDistanceLocation[1]=t[1])},Ti.prototype.nearestPoints=function(){this.computeMinDistance();return[this._minDistanceLocation[0].getCoordinate(),this._minDistanceLocation[1].getCoordinate()]},Ti.prototype.computeMinDistance=function(){if(0===arguments.length){if(null!==this._minDistanceLocation)return null;if(this._minDistanceLocation=new Array(2).fill(null),this.computeContainmentDistance(),this._minDistance<=this._terminateDistance)return null;this.computeFacetDistance()}else if(3===arguments.length)if(arguments[2]instanceof Array&&arguments[0]instanceof Kt&&arguments[1]instanceof Qt){var t=arguments[0],e=arguments[1],n=arguments[2];if(t.getEnvelopeInternal().distance(e.getEnvelopeInternal())>this._minDistance)return null;for(var i=t.getCoordinates(),r=e.getCoordinate(),o=0;o<i.length-1;o++){var s=at.distancePointLine(r,i[o],i[o+1]);if(s<this._minDistance){this._minDistance=s;var a=new dn(i[o],i[o+1]).closestPoint(r);n[0]=new Li(t,o,a),n[1]=new Li(e,0,r)}if(this._minDistance<=this._terminateDistance)return null}}else if(arguments[2]instanceof Array&&arguments[0]instanceof Kt&&arguments[1]instanceof Kt){var u=arguments[0],l=arguments[1],c=arguments[2];if(u.getEnvelopeInternal().distance(l.getEnvelopeInternal())>this._minDistance)return null;for(var p=u.getCoordinates(),h=l.getCoordinates(),f=0;f<p.length-1;f++)for(var g=0;g<h.length-1;g++){var d=at.distanceLineLine(p[f],p[f+1],h[g],h[g+1]);if(d<this._minDistance){this._minDistance=d;var y=new dn(p[f],p[f+1]),_=new dn(h[g],h[g+1]),m=y.closestPoints(_);c[0]=new Li(u,f,m[0]),c[1]=new Li(l,g,m[1])}if(this._minDistance<=this._terminateDistance)return null}}},Ti.prototype.computeMinDistancePoints=function(t,e,n){for(var i=0;i<t.size();i++)for(var r=t.get(i),o=0;o<e.size();o++){var s=e.get(o),a=r.getCoordinate().distance(s.getCoordinate());if(a<this._minDistance&&(this._minDistance=a,n[0]=new Li(r,0,r.getCoordinate()),n[1]=new Li(s,0,s.getCoordinate())),this._minDistance<=this._terminateDistance)return null}},Ti.prototype.distance=function(){if(null===this._geom[0]||null===this._geom[1])throw new m(\"null geometries are not supported\");return this._geom[0].isEmpty()||this._geom[1].isEmpty()?0:(this.computeMinDistance(),this._minDistance)},Ti.prototype.computeMinDistanceLines=function(t,e,n){for(var i=0;i<t.size();i++)for(var r=t.get(i),o=0;o<e.size();o++){var s=e.get(o);if(this.computeMinDistance(r,s,n),this._minDistance<=this._terminateDistance)return null}},Ti.prototype.interfaces_=function(){return[]},Ti.prototype.getClass=function(){return Ti},Ti.distance=function(t,e){return new Ti(t,e).distance()},Ti.isWithinDistance=function(t,e,n){return new Ti(t,e,n).distance()<=n},Ti.nearestPoints=function(t,e){return new Ti(t,e).nearestPoints()};var Ri=function(){this._pt=[new C,new C],this._distance=v.NaN,this._isNull=!0};Ri.prototype.getCoordinates=function(){return this._pt},Ri.prototype.getCoordinate=function(t){return this._pt[t]},Ri.prototype.setMinimum=function(){if(1===arguments.length){var t=arguments[0];this.setMinimum(t._pt[0],t._pt[1])}else if(2===arguments.length){var e=arguments[0],n=arguments[1];if(this._isNull)return this.initialize(e,n),null;var i=e.distance(n);i<this._distance&&this.initialize(e,n,i)}},Ri.prototype.initialize=function(){if(0===arguments.length)this._isNull=!0;else if(2===arguments.length){var t=arguments[0],e=arguments[1];this._pt[0].setCoordinate(t),this._pt[1].setCoordinate(e),this._distance=t.distance(e),this._isNull=!1}else if(3===arguments.length){var n=arguments[0],i=arguments[1],r=arguments[2];this._pt[0].setCoordinate(n),this._pt[1].setCoordinate(i),this._distance=r,this._isNull=!1}},Ri.prototype.toString=function(){return Z.toLineString(this._pt[0],this._pt[1])},Ri.prototype.getDistance=function(){return this._distance},Ri.prototype.setMaximum=function(){if(1===arguments.length){var t=arguments[0];this.setMaximum(t._pt[0],t._pt[1])}else if(2===arguments.length){var e=arguments[0],n=arguments[1];if(this._isNull)return this.initialize(e,n),null;var i=e.distance(n);i>this._distance&&this.initialize(e,n,i)}},Ri.prototype.interfaces_=function(){return[]},Ri.prototype.getClass=function(){return Ri};var Pi=function(){};Pi.prototype.interfaces_=function(){return[]},Pi.prototype.getClass=function(){return Pi},Pi.computeDistance=function(){if(arguments[2]instanceof Ri&&arguments[0]instanceof Kt&&arguments[1]instanceof C)for(var t=arguments[0],e=arguments[1],n=arguments[2],i=new dn,r=t.getCoordinates(),o=0;o<r.length-1;o++){i.setCoordinates(r[o],r[o+1]);var s=i.closestPoint(e);n.setMinimum(s,e)}else if(arguments[2]instanceof Ri&&arguments[0]instanceof $t&&arguments[1]instanceof C){var a=arguments[0],u=arguments[1],l=arguments[2];Pi.computeDistance(a.getExteriorRing(),u,l);for(var c=0;c<a.getNumInteriorRing();c++)Pi.computeDistance(a.getInteriorRingN(c),u,l)}else if(arguments[2]instanceof Ri&&arguments[0]instanceof ct&&arguments[1]instanceof C){var p=arguments[0],h=arguments[1],f=arguments[2];if(p instanceof Kt)Pi.computeDistance(p,h,f);else if(p instanceof $t)Pi.computeDistance(p,h,f);else if(p instanceof zt)for(var g=p,d=0;d<g.getNumGeometries();d++){var y=g.getGeometryN(d);Pi.computeDistance(y,h,f)}else f.setMinimum(p.getCoordinate(),h)}else if(arguments[2]instanceof Ri&&arguments[0]instanceof dn&&arguments[1]instanceof C){var _=arguments[0],m=arguments[1],v=arguments[2],I=_.closestPoint(m);v.setMinimum(I,m)}};var Di=function(){this._g0=null,this._g1=null,this._ptDist=new Ri,this._densifyFrac=0;var t=arguments[0],e=arguments[1];this._g0=t,this._g1=e},Mi={MaxPointDistanceFilter:{configurable:!0},MaxDensifiedByFractionDistanceFilter:{configurable:!0}};Di.prototype.getCoordinates=function(){return this._ptDist.getCoordinates()},Di.prototype.setDensifyFraction=function(t){if(t>1||t<=0)throw new m(\"Fraction is not in range (0.0 - 1.0]\");this._densifyFrac=t},Di.prototype.compute=function(t,e){this.computeOrientedDistance(t,e,this._ptDist),this.computeOrientedDistance(e,t,this._ptDist)},Di.prototype.distance=function(){return this.compute(this._g0,this._g1),this._ptDist.getDistance()},Di.prototype.computeOrientedDistance=function(t,e,n){var i=new Ai(e);if(t.apply(i),n.setMaximum(i.getMaxPointDistance()),this._densifyFrac>0){var r=new Fi(e,this._densifyFrac);t.apply(r),n.setMaximum(r.getMaxPointDistance())}},Di.prototype.orientedDistance=function(){return this.computeOrientedDistance(this._g0,this._g1,this._ptDist),this._ptDist.getDistance()},Di.prototype.interfaces_=function(){return[]},Di.prototype.getClass=function(){return Di},Di.distance=function(){if(2===arguments.length){var t=arguments[0],e=arguments[1];return new Di(t,e).distance()}if(3===arguments.length){var n=arguments[0],i=arguments[1],r=arguments[2],o=new Di(n,i);return o.setDensifyFraction(r),o.distance()}},Mi.MaxPointDistanceFilter.get=function(){return Ai},Mi.MaxDensifiedByFractionDistanceFilter.get=function(){return Fi},Object.defineProperties(Di,Mi);var Ai=function(){this._maxPtDist=new Ri,this._minPtDist=new Ri,this._euclideanDist=new Pi,this._geom=null;var t=arguments[0];this._geom=t};Ai.prototype.filter=function(t){this._minPtDist.initialize(),Pi.computeDistance(this._geom,t,this._minPtDist),this._maxPtDist.setMaximum(this._minPtDist)},Ai.prototype.getMaxPointDistance=function(){return this._maxPtDist},Ai.prototype.interfaces_=function(){return[ft]},Ai.prototype.getClass=function(){return Ai};var Fi=function(){this._maxPtDist=new Ri,this._minPtDist=new Ri,this._geom=null,this._numSubSegs=0;var t=arguments[0],e=arguments[1];this._geom=t,this._numSubSegs=Math.trunc(Math.round(1/e))};Fi.prototype.filter=function(t,e){if(0===e)return null;for(var n=t.getCoordinate(e-1),i=t.getCoordinate(e),r=(i.x-n.x)/this._numSubSegs,o=(i.y-n.y)/this._numSubSegs,s=0;s<this._numSubSegs;s++){var a=n.x+s*r,u=n.y+s*o,l=new C(a,u);this._minPtDist.initialize(),Pi.computeDistance(this._geom,l,this._minPtDist),this._maxPtDist.setMaximum(this._minPtDist)}},Fi.prototype.isDone=function(){return!1},Fi.prototype.isGeometryChanged=function(){return!1},Fi.prototype.getMaxPointDistance=function(){return this._maxPtDist},Fi.prototype.interfaces_=function(){return[Ut]},Fi.prototype.getClass=function(){return Fi};var Gi=function(t,e,n){this._minValidDistance=null,this._maxValidDistance=null,this._minDistanceFound=null,this._maxDistanceFound=null,this._isValid=!0,this._errMsg=null,this._errorLocation=null,this._errorIndicator=null,this._input=t||null,this._bufDistance=e||null,this._result=n||null},qi={VERBOSE:{configurable:!0},MAX_DISTANCE_DIFF_FRAC:{configurable:!0}};Gi.prototype.checkMaximumDistance=function(t,e,n){var i=new Di(e,t);if(i.setDensifyFraction(.25),this._maxDistanceFound=i.orientedDistance(),this._maxDistanceFound>n){this._isValid=!1;var r=i.getCoordinates();this._errorLocation=r[1],this._errorIndicator=t.getFactory().createLineString(r),this._errMsg=\"Distance between buffer curve and input is too large (\"+this._maxDistanceFound+\" at \"+Z.toLineString(r[0],r[1])+\")\"}},Gi.prototype.isValid=function(){var t=Math.abs(this._bufDistance),e=Gi.MAX_DISTANCE_DIFF_FRAC*t;return this._minValidDistance=t-e,this._maxValidDistance=t+e,!(!this._input.isEmpty()&&!this._result.isEmpty())||(this._bufDistance>0?this.checkPositiveValid():this.checkNegativeValid(),Gi.VERBOSE&&Y.out.println(\"Min Dist= \"+this._minDistanceFound+\"  err= \"+(1-this._minDistanceFound/this._bufDistance)+\"  Max Dist= \"+this._maxDistanceFound+\"  err= \"+(this._maxDistanceFound/this._bufDistance-1)),this._isValid)},Gi.prototype.checkNegativeValid=function(){if(!(this._input instanceof $t||this._input instanceof ne||this._input instanceof zt))return null;var t=this.getPolygonLines(this._input);if(this.checkMinimumDistance(t,this._result,this._minValidDistance),!this._isValid)return null;this.checkMaximumDistance(t,this._result,this._maxValidDistance)},Gi.prototype.getErrorIndicator=function(){return this._errorIndicator},Gi.prototype.checkMinimumDistance=function(t,e,n){var i=new Ti(t,e,n);if(this._minDistanceFound=i.distance(),this._minDistanceFound<n){this._isValid=!1;var r=i.nearestPoints();this._errorLocation=i.nearestPoints()[1],this._errorIndicator=t.getFactory().createLineString(r),this._errMsg=\"Distance between buffer curve and input is too small (\"+this._minDistanceFound+\" at \"+Z.toLineString(r[0],r[1])+\" )\"}},Gi.prototype.checkPositiveValid=function(){var t=this._result.getBoundary();if(this.checkMinimumDistance(this._input,t,this._minValidDistance),!this._isValid)return null;this.checkMaximumDistance(this._input,t,this._maxValidDistance)},Gi.prototype.getErrorLocation=function(){return this._errorLocation},Gi.prototype.getPolygonLines=function(t){for(var e=new Nt,n=new Ci(e),i=Ni.getPolygons(t).iterator();i.hasNext();){i.next().apply(n)}return t.getFactory().buildGeometry(e)},Gi.prototype.getErrorMessage=function(){return this._errMsg},Gi.prototype.interfaces_=function(){return[]},Gi.prototype.getClass=function(){return Gi},qi.VERBOSE.get=function(){return!1},qi.MAX_DISTANCE_DIFF_FRAC.get=function(){return.012},Object.defineProperties(Gi,qi);var Bi=function(t,e,n){this._isValid=!0,this._errorMsg=null,this._errorLocation=null,this._errorIndicator=null,this._input=t||null,this._distance=e||null,this._result=n||null},Vi={VERBOSE:{configurable:!0},MAX_ENV_DIFF_FRAC:{configurable:!0}};Bi.prototype.isValid=function(){return this.checkPolygonal(),this._isValid?(this.checkExpectedEmpty(),this._isValid?(this.checkEnvelope(),this._isValid?(this.checkArea(),this._isValid?(this.checkDistance(),this._isValid):this._isValid):this._isValid):this._isValid):this._isValid},Bi.prototype.checkEnvelope=function(){if(this._distance<0)return null;var t=this._distance*Bi.MAX_ENV_DIFF_FRAC;0===t&&(t=.001);var e=new j(this._input.getEnvelopeInternal());e.expandBy(this._distance);var n=new j(this._result.getEnvelopeInternal());n.expandBy(t),n.contains(e)||(this._isValid=!1,this._errorMsg=\"Buffer envelope is incorrect\",this._errorIndicator=this._input.getFactory().toGeometry(n)),this.report(\"Envelope\")},Bi.prototype.checkDistance=function(){var t=new Gi(this._input,this._distance,this._result);t.isValid()||(this._isValid=!1,this._errorMsg=t.getErrorMessage(),this._errorLocation=t.getErrorLocation(),this._errorIndicator=t.getErrorIndicator()),this.report(\"Distance\")},Bi.prototype.checkArea=function(){var t=this._input.getArea(),e=this._result.getArea();this._distance>0&&t>e&&(this._isValid=!1,this._errorMsg=\"Area of positive buffer is smaller than input\",this._errorIndicator=this._result),this._distance<0&&t<e&&(this._isValid=!1,this._errorMsg=\"Area of negative buffer is larger than input\",this._errorIndicator=this._result),this.report(\"Area\")},Bi.prototype.checkPolygonal=function(){this._result instanceof $t||this._result instanceof ne||(this._isValid=!1),this._errorMsg=\"Result is not polygonal\",this._errorIndicator=this._result,this.report(\"Polygonal\")},Bi.prototype.getErrorIndicator=function(){return this._errorIndicator},Bi.prototype.getErrorLocation=function(){return this._errorLocation},Bi.prototype.checkExpectedEmpty=function(){return this._input.getDimension()>=2?null:this._distance>0?null:(this._result.isEmpty()||(this._isValid=!1,this._errorMsg=\"Result is non-empty\",this._errorIndicator=this._result),void this.report(\"ExpectedEmpty\"))},Bi.prototype.report=function(t){if(!Bi.VERBOSE)return null;Y.out.println(\"Check \"+t+\": \"+(this._isValid?\"passed\":\"FAILED\"))},Bi.prototype.getErrorMessage=function(){return this._errorMsg},Bi.prototype.interfaces_=function(){return[]},Bi.prototype.getClass=function(){return Bi},Bi.isValidMsg=function(t,e,n){var i=new Bi(t,e,n);return i.isValid()?null:i.getErrorMessage()},Bi.isValid=function(t,e,n){return!!new Bi(t,e,n).isValid()},Vi.VERBOSE.get=function(){return!1},Vi.MAX_ENV_DIFF_FRAC.get=function(){return.012},Object.defineProperties(Bi,Vi);var Ui=function(){this._pts=null,this._data=null;var t=arguments[0],e=arguments[1];this._pts=t,this._data=e};Ui.prototype.getCoordinates=function(){return this._pts},Ui.prototype.size=function(){return this._pts.length},Ui.prototype.getCoordinate=function(t){return this._pts[t]},Ui.prototype.isClosed=function(){return this._pts[0].equals(this._pts[this._pts.length-1])},Ui.prototype.getSegmentOctant=function(t){return t===this._pts.length-1?-1:pn.octant(this.getCoordinate(t),this.getCoordinate(t+1))},Ui.prototype.setData=function(t){this._data=t},Ui.prototype.getData=function(){return this._data},Ui.prototype.toString=function(){return Z.toLineString(new ue(this._pts))},Ui.prototype.interfaces_=function(){return[hn]},Ui.prototype.getClass=function(){return Ui};var zi=function(){this._findAllIntersections=!1,this._isCheckEndSegmentsOnly=!1,this._li=null,this._interiorIntersection=null,this._intSegments=null,this._intersections=new Nt,this._intersectionCount=0,this._keepIntersections=!0;var t=arguments[0];this._li=t,this._interiorIntersection=null};zi.prototype.getInteriorIntersection=function(){return this._interiorIntersection},zi.prototype.setCheckEndSegmentsOnly=function(t){this._isCheckEndSegmentsOnly=t},zi.prototype.getIntersectionSegments=function(){return this._intSegments},zi.prototype.count=function(){return this._intersectionCount},zi.prototype.getIntersections=function(){return this._intersections},zi.prototype.setFindAllIntersections=function(t){this._findAllIntersections=t},zi.prototype.setKeepIntersections=function(t){this._keepIntersections=t},zi.prototype.processIntersections=function(t,e,n,i){if(!this._findAllIntersections&&this.hasIntersection())return null;if(t===n&&e===i)return null;if(this._isCheckEndSegmentsOnly){if(!(this.isEndSegment(t,e)||this.isEndSegment(n,i)))return null}var r=t.getCoordinates()[e],o=t.getCoordinates()[e+1],s=n.getCoordinates()[i],a=n.getCoordinates()[i+1];this._li.computeIntersection(r,o,s,a),this._li.hasIntersection()&&this._li.isInteriorIntersection()&&(this._intSegments=new Array(4).fill(null),this._intSegments[0]=r,this._intSegments[1]=o,this._intSegments[2]=s,this._intSegments[3]=a,this._interiorIntersection=this._li.getIntersection(0),this._keepIntersections&&this._intersections.add(this._interiorIntersection),this._intersectionCount++)},zi.prototype.isEndSegment=function(t,e){return 0===e||e>=t.size()-2},zi.prototype.hasIntersection=function(){return null!==this._interiorIntersection},zi.prototype.isDone=function(){return!this._findAllIntersections&&null!==this._interiorIntersection},zi.prototype.interfaces_=function(){return[Wn]},zi.prototype.getClass=function(){return zi},zi.createAllIntersectionsFinder=function(t){var e=new zi(t);return e.setFindAllIntersections(!0),e},zi.createAnyIntersectionFinder=function(t){return new zi(t)},zi.createIntersectionCounter=function(t){var e=new zi(t);return e.setFindAllIntersections(!0),e.setKeepIntersections(!1),e};var Xi=function(){this._li=new rt,this._segStrings=null,this._findAllIntersections=!1,this._segInt=null,this._isValid=!0;var t=arguments[0];this._segStrings=t};Xi.prototype.execute=function(){if(null!==this._segInt)return null;this.checkInteriorIntersections()},Xi.prototype.getIntersections=function(){return this._segInt.getIntersections()},Xi.prototype.isValid=function(){return this.execute(),this._isValid},Xi.prototype.setFindAllIntersections=function(t){this._findAllIntersections=t},Xi.prototype.checkInteriorIntersections=function(){this._isValid=!0,this._segInt=new zi(this._li),this._segInt.setFindAllIntersections(this._findAllIntersections);var t=new xn;if(t.setSegmentIntersector(this._segInt),t.computeNodes(this._segStrings),this._segInt.hasIntersection())return this._isValid=!1,null},Xi.prototype.checkValid=function(){if(this.execute(),!this._isValid)throw new we(this.getErrorMessage(),this._segInt.getInteriorIntersection())},Xi.prototype.getErrorMessage=function(){if(this._isValid)return\"no intersections found\";var t=this._segInt.getIntersectionSegments();return\"found non-noded intersection between \"+Z.toLineString(t[0],t[1])+\" and \"+Z.toLineString(t[2],t[3])},Xi.prototype.interfaces_=function(){return[]},Xi.prototype.getClass=function(){return Xi},Xi.computeIntersections=function(t){var e=new Xi(t);return e.setFindAllIntersections(!0),e.isValid(),e.getIntersections()};var Yi=function t(){this._nv=null;var e=arguments[0];this._nv=new Xi(t.toSegmentStrings(e))};Yi.prototype.checkValid=function(){this._nv.checkValid()},Yi.prototype.interfaces_=function(){return[]},Yi.prototype.getClass=function(){return Yi},Yi.toSegmentStrings=function(t){for(var e=new Nt,n=t.iterator();n.hasNext();){var i=n.next();e.add(new Ui(i.getCoordinates(),i))}return e},Yi.checkValid=function(t){new Yi(t).checkValid()};var ki=function(t){this._mapOp=t};ki.prototype.map=function(t){for(var e=new Nt,n=0;n<t.getNumGeometries();n++){var i=this._mapOp.map(t.getGeometryN(n));i.isEmpty()||e.add(i)}return t.getFactory().createGeometryCollection(_e.toGeometryArray(e))},ki.prototype.interfaces_=function(){return[]},ki.prototype.getClass=function(){return ki},ki.map=function(t,e){return new ki(e).map(t)};var ji=function(){this._op=null,this._geometryFactory=null,this._ptLocator=null,this._lineEdgesList=new Nt,this._resultLineList=new Nt;var t=arguments[0],e=arguments[1],n=arguments[2];this._op=t,this._geometryFactory=e,this._ptLocator=n};ji.prototype.collectLines=function(t){for(var e=this._op.getGraph().getEdgeEnds().iterator();e.hasNext();){var n=e.next();this.collectLineEdge(n,t,this._lineEdgesList),this.collectBoundaryTouchEdge(n,t,this._lineEdgesList)}},ji.prototype.labelIsolatedLine=function(t,e){var n=this._ptLocator.locate(t.getCoordinate(),this._op.getArgGeometry(e));t.getLabel().setLocation(e,n)},ji.prototype.build=function(t){return this.findCoveredLineEdges(),this.collectLines(t),this.buildLines(t),this._resultLineList},ji.prototype.collectLineEdge=function(t,e,n){var i=t.getLabel(),r=t.getEdge();t.isLineEdge()&&(t.isVisited()||!Lr.isResultOfOp(i,e)||r.isCovered()||(n.add(r),t.setVisitedEdge(!0)))},ji.prototype.findCoveredLineEdges=function(){for(var t=this._op.getGraph().getNodes().iterator();t.hasNext();){t.next().getEdges().findCoveredLineEdges()}for(var e=this._op.getGraph().getEdgeEnds().iterator();e.hasNext();){var n=e.next(),i=n.getEdge();if(n.isLineEdge()&&!i.isCoveredSet()){var r=this._op.isCoveredByA(n.getCoordinate());i.setCovered(r)}}},ji.prototype.labelIsolatedLines=function(t){for(var e=t.iterator();e.hasNext();){var n=e.next(),i=n.getLabel();n.isIsolated()&&(i.isNull(0)?this.labelIsolatedLine(n,0):this.labelIsolatedLine(n,1))}},ji.prototype.buildLines=function(t){for(var e=this._lineEdgesList.iterator();e.hasNext();){var n=e.next(),i=this._geometryFactory.createLineString(n.getCoordinates());this._resultLineList.add(i),n.setInResult(!0)}},ji.prototype.collectBoundaryTouchEdge=function(t,e,n){var i=t.getLabel();return t.isLineEdge()?null:t.isVisited()?null:t.isInteriorAreaEdge()?null:t.getEdge().isInResult()?null:(et.isTrue(!(t.isInResult()||t.getSym().isInResult())||!t.getEdge().isInResult()),void(Lr.isResultOfOp(i,e)&&e===Lr.INTERSECTION&&(n.add(t.getEdge()),t.setVisitedEdge(!0))))},ji.prototype.interfaces_=function(){return[]},ji.prototype.getClass=function(){return ji};var Hi=function(){this._op=null,this._geometryFactory=null,this._resultPointList=new Nt;var t=arguments[0],e=arguments[1];this._op=t,this._geometryFactory=e};Hi.prototype.filterCoveredNodeToPoint=function(t){var e=t.getCoordinate();if(!this._op.isCoveredByLA(e)){var n=this._geometryFactory.createPoint(e);this._resultPointList.add(n)}},Hi.prototype.extractNonCoveredResultNodes=function(t){for(var e=this._op.getGraph().getNodes().iterator();e.hasNext();){var n=e.next();if(!n.isInResult()&&(!n.isIncidentEdgeInResult()&&(0===n.getEdges().getDegree()||t===Lr.INTERSECTION))){var i=n.getLabel();Lr.isResultOfOp(i,t)&&this.filterCoveredNodeToPoint(n)}}},Hi.prototype.build=function(t){return this.extractNonCoveredResultNodes(t),this._resultPointList},Hi.prototype.interfaces_=function(){return[]},Hi.prototype.getClass=function(){return Hi};var Wi=function(){this._inputGeom=null,this._factory=null,this._pruneEmptyGeometry=!0,this._preserveGeometryCollectionType=!0,this._preserveCollections=!1,this._preserveType=!1};Wi.prototype.transformPoint=function(t,e){return this._factory.createPoint(this.transformCoordinates(t.getCoordinateSequence(),t))},Wi.prototype.transformPolygon=function(t,e){var n=!0,i=this.transformLinearRing(t.getExteriorRing(),t);null!==i&&i instanceof ee&&!i.isEmpty()||(n=!1);for(var r=new Nt,o=0;o<t.getNumInteriorRing();o++){var s=this.transformLinearRing(t.getInteriorRingN(o),t);null===s||s.isEmpty()||(s instanceof ee||(n=!1),r.add(s))}if(n)return this._factory.createPolygon(i,r.toArray([]));var a=new Nt;return null!==i&&a.add(i),a.addAll(r),this._factory.buildGeometry(a)},Wi.prototype.createCoordinateSequence=function(t){return this._factory.getCoordinateSequenceFactory().create(t)},Wi.prototype.getInputGeometry=function(){return this._inputGeom},Wi.prototype.transformMultiLineString=function(t,e){for(var n=new Nt,i=0;i<t.getNumGeometries();i++){var r=this.transformLineString(t.getGeometryN(i),t);null!==r&&(r.isEmpty()||n.add(r))}return this._factory.buildGeometry(n)},Wi.prototype.transformCoordinates=function(t,e){return this.copy(t)},Wi.prototype.transformLineString=function(t,e){return this._factory.createLineString(this.transformCoordinates(t.getCoordinateSequence(),t))},Wi.prototype.transformMultiPoint=function(t,e){for(var n=new Nt,i=0;i<t.getNumGeometries();i++){var r=this.transformPoint(t.getGeometryN(i),t);null!==r&&(r.isEmpty()||n.add(r))}return this._factory.buildGeometry(n)},Wi.prototype.transformMultiPolygon=function(t,e){for(var n=new Nt,i=0;i<t.getNumGeometries();i++){var r=this.transformPolygon(t.getGeometryN(i),t);null!==r&&(r.isEmpty()||n.add(r))}return this._factory.buildGeometry(n)},Wi.prototype.copy=function(t){return t.copy()},Wi.prototype.transformGeometryCollection=function(t,e){for(var n=new Nt,i=0;i<t.getNumGeometries();i++){var r=this.transform(t.getGeometryN(i));null!==r&&(this._pruneEmptyGeometry&&r.isEmpty()||n.add(r))}return this._preserveGeometryCollectionType?this._factory.createGeometryCollection(_e.toGeometryArray(n)):this._factory.buildGeometry(n)},Wi.prototype.transform=function(t){if(this._inputGeom=t,this._factory=t.getFactory(),t instanceof Qt)return this.transformPoint(t,null);if(t instanceof te)return this.transformMultiPoint(t,null);if(t instanceof ee)return this.transformLinearRing(t,null);if(t instanceof Kt)return this.transformLineString(t,null);if(t instanceof Xt)return this.transformMultiLineString(t,null);if(t instanceof $t)return this.transformPolygon(t,null);if(t instanceof ne)return this.transformMultiPolygon(t,null);if(t instanceof zt)return this.transformGeometryCollection(t,null);throw new m(\"Unknown Geometry subtype: \"+t.getClass().getName())},Wi.prototype.transformLinearRing=function(t,e){var n=this.transformCoordinates(t.getCoordinateSequence(),t);if(null===n)return this._factory.createLinearRing(null);var i=n.size();return i>0&&i<4&&!this._preserveType?this._factory.createLineString(n):this._factory.createLinearRing(n)},Wi.prototype.interfaces_=function(){return[]},Wi.prototype.getClass=function(){return Wi};var Ki=function t(){if(this._snapTolerance=0,this._srcPts=null,this._seg=new dn,this._allowSnappingToSourceVertices=!1,this._isClosed=!1,arguments[0]instanceof Kt&&\"number\"==typeof arguments[1]){var e=arguments[0],n=arguments[1];t.call(this,e.getCoordinates(),n)}else if(arguments[0]instanceof Array&&\"number\"==typeof arguments[1]){var i=arguments[0],r=arguments[1];this._srcPts=i,this._isClosed=t.isClosed(i),this._snapTolerance=r}};Ki.prototype.snapVertices=function(t,e){for(var n=this._isClosed?t.size()-1:t.size(),i=0;i<n;i++){var r=t.get(i),o=this.findSnapForVertex(r,e);null!==o&&(t.set(i,new C(o)),0===i&&this._isClosed&&t.set(t.size()-1,new C(o)))}},Ki.prototype.findSnapForVertex=function(t,e){for(var n=0;n<e.length;n++){if(t.equals2D(e[n]))return null;if(t.distance(e[n])<this._snapTolerance)return e[n]}return null},Ki.prototype.snapTo=function(t){var e=new St(this._srcPts);this.snapVertices(e,t),this.snapSegments(e,t);return e.toCoordinateArray()},Ki.prototype.snapSegments=function(t,e){if(0===e.length)return null;var n=e.length;e[0].equals2D(e[e.length-1])&&(n=e.length-1);for(var i=0;i<n;i++){var r=e[i],o=this.findSegmentIndexToSnap(r,t);o>=0&&t.add(o+1,new C(r),!1)}},Ki.prototype.findSegmentIndexToSnap=function(t,e){for(var n=v.MAX_VALUE,i=-1,r=0;r<e.size()-1;r++){if(this._seg.p0=e.get(r),this._seg.p1=e.get(r+1),this._seg.p0.equals2D(t)||this._seg.p1.equals2D(t)){if(this._allowSnappingToSourceVertices)continue;return-1}var o=this._seg.distance(t);o<this._snapTolerance&&o<n&&(n=o,i=r)}return i},Ki.prototype.setAllowSnappingToSourceVertices=function(t){this._allowSnappingToSourceVertices=t},Ki.prototype.interfaces_=function(){return[]},Ki.prototype.getClass=function(){return Ki},Ki.isClosed=function(t){return!(t.length<=1)&&t[0].equals2D(t[t.length-1])};var Ji=function(t){this._srcGeom=t||null},Qi={SNAP_PRECISION_FACTOR:{configurable:!0}};Ji.prototype.snapTo=function(t,e){var n=this.extractTargetCoordinates(t);return new Zi(e,n).transform(this._srcGeom)},Ji.prototype.snapToSelf=function(t,e){var n=this.extractTargetCoordinates(this._srcGeom),i=new Zi(t,n,!0).transform(this._srcGeom),r=i;return e&&T(r,Zt)&&(r=i.buffer(0)),r},Ji.prototype.computeSnapTolerance=function(t){return this.computeMinimumSegmentLength(t)/10},Ji.prototype.extractTargetCoordinates=function(t){for(var e=new f,n=t.getCoordinates(),i=0;i<n.length;i++)e.add(n[i]);return e.toArray(new Array(0).fill(null))},Ji.prototype.computeMinimumSegmentLength=function(t){for(var e=v.MAX_VALUE,n=0;n<t.length-1;n++){var i=t[n].distance(t[n+1]);i<e&&(e=i)}return e},Ji.prototype.interfaces_=function(){return[]},Ji.prototype.getClass=function(){return Ji},Ji.snap=function(t,e,n){var i=new Array(2).fill(null),r=new Ji(t);i[0]=r.snapTo(e,n);var o=new Ji(e);return i[1]=o.snapTo(i[0],n),i},Ji.computeOverlaySnapTolerance=function(){if(1===arguments.length){var t=arguments[0],e=Ji.computeSizeBasedSnapTolerance(t),n=t.getPrecisionModel();if(n.getType()===fe.FIXED){var i=1/n.getScale()*2/1.415;i>e&&(e=i)}return e}if(2===arguments.length){var r=arguments[0],o=arguments[1];return Math.min(Ji.computeOverlaySnapTolerance(r),Ji.computeOverlaySnapTolerance(o))}},Ji.computeSizeBasedSnapTolerance=function(t){var e=t.getEnvelopeInternal();return Math.min(e.getHeight(),e.getWidth())*Ji.SNAP_PRECISION_FACTOR},Ji.snapToSelf=function(t,e,n){return new Ji(t).snapToSelf(e,n)},Qi.SNAP_PRECISION_FACTOR.get=function(){return 1e-9},Object.defineProperties(Ji,Qi);var Zi=function(t){function e(e,n,i){t.call(this),this._snapTolerance=e||null,this._snapPts=n||null,this._isSelfSnap=void 0!==i&&i}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.snapLine=function(t,e){var n=new Ki(t,this._snapTolerance);return n.setAllowSnappingToSourceVertices(this._isSelfSnap),n.snapTo(e)},e.prototype.transformCoordinates=function(t,e){var n=t.toCoordinateArray(),i=this.snapLine(n,this._snapPts);return this._factory.getCoordinateSequenceFactory().create(i)},e.prototype.interfaces_=function(){return[]},e.prototype.getClass=function(){return e},e}(Wi),$i=function(){this._isFirst=!0,this._commonMantissaBitsCount=53,this._commonBits=0,this._commonSignExp=null};$i.prototype.getCommon=function(){return v.longBitsToDouble(this._commonBits)},$i.prototype.add=function(t){var e=v.doubleToLongBits(t);if(this._isFirst)return this._commonBits=e,this._commonSignExp=$i.signExpBits(this._commonBits),this._isFirst=!1,null;if($i.signExpBits(e)!==this._commonSignExp)return this._commonBits=0,null;this._commonMantissaBitsCount=$i.numCommonMostSigMantissaBits(this._commonBits,e),this._commonBits=$i.zeroLowerBits(this._commonBits,64-(12+this._commonMantissaBitsCount))},$i.prototype.toString=function(){if(1===arguments.length){var t=arguments[0],e=v.longBitsToDouble(t),n=\"0000000000000000000000000000000000000000000000000000000000000000\"+v.toBinaryString(t),i=n.substring(n.length-64);return i.substring(0,1)+\"  \"+i.substring(1,12)+\"(exp) \"+i.substring(12)+\" [ \"+e+\" ]\"}},$i.prototype.interfaces_=function(){return[]},$i.prototype.getClass=function(){return $i},$i.getBit=function(t,e){return 0!=(t&1<<e)?1:0},$i.signExpBits=function(t){return t>>52},$i.zeroLowerBits=function(t,e){return t&~((1<<e)-1)},$i.numCommonMostSigMantissaBits=function(t,e){for(var n=0,i=52;i>=0;i--){if($i.getBit(t,i)!==$i.getBit(e,i))return n;n++}return 52};var tr=function(){this._commonCoord=null,this._ccFilter=new nr},er={CommonCoordinateFilter:{configurable:!0},Translater:{configurable:!0}};tr.prototype.addCommonBits=function(t){var e=new ir(this._commonCoord);t.apply(e),t.geometryChanged()},tr.prototype.removeCommonBits=function(t){if(0===this._commonCoord.x&&0===this._commonCoord.y)return t;var e=new C(this._commonCoord);e.x=-e.x,e.y=-e.y;var n=new ir(e);return t.apply(n),t.geometryChanged(),t},tr.prototype.getCommonCoordinate=function(){return this._commonCoord},tr.prototype.add=function(t){t.apply(this._ccFilter),this._commonCoord=this._ccFilter.getCommonCoordinate()},tr.prototype.interfaces_=function(){return[]},tr.prototype.getClass=function(){return tr},er.CommonCoordinateFilter.get=function(){return nr},er.Translater.get=function(){return ir},Object.defineProperties(tr,er);var nr=function(){this._commonBitsX=new $i,this._commonBitsY=new $i};nr.prototype.filter=function(t){this._commonBitsX.add(t.x),this._commonBitsY.add(t.y)},nr.prototype.getCommonCoordinate=function(){return new C(this._commonBitsX.getCommon(),this._commonBitsY.getCommon())},nr.prototype.interfaces_=function(){return[ft]},nr.prototype.getClass=function(){return nr};var ir=function(){this.trans=null;var t=arguments[0];this.trans=t};ir.prototype.filter=function(t,e){var n=t.getOrdinate(e,0)+this.trans.x,i=t.getOrdinate(e,1)+this.trans.y;t.setOrdinate(e,0,n),t.setOrdinate(e,1,i)},ir.prototype.isDone=function(){return!1},ir.prototype.isGeometryChanged=function(){return!0},ir.prototype.interfaces_=function(){return[Ut]},ir.prototype.getClass=function(){return ir};var rr=function(t,e){this._geom=new Array(2).fill(null),this._snapTolerance=null,this._cbr=null,this._geom[0]=t,this._geom[1]=e,this.computeSnapTolerance()};rr.prototype.selfSnap=function(t){return new Ji(t).snapTo(t,this._snapTolerance)},rr.prototype.removeCommonBits=function(t){this._cbr=new tr,this._cbr.add(t[0]),this._cbr.add(t[1]);var e=new Array(2).fill(null);return e[0]=this._cbr.removeCommonBits(t[0].copy()),e[1]=this._cbr.removeCommonBits(t[1].copy()),e},rr.prototype.prepareResult=function(t){return this._cbr.addCommonBits(t),t},rr.prototype.getResultGeometry=function(t){var e=this.snap(this._geom),n=Lr.overlayOp(e[0],e[1],t);return this.prepareResult(n)},rr.prototype.checkValid=function(t){t.isValid()||Y.out.println(\"Snapped geometry is invalid\")},rr.prototype.computeSnapTolerance=function(){this._snapTolerance=Ji.computeOverlaySnapTolerance(this._geom[0],this._geom[1])},rr.prototype.snap=function(t){var e=this.removeCommonBits(t);return Ji.snap(e[0],e[1],this._snapTolerance)},rr.prototype.interfaces_=function(){return[]},rr.prototype.getClass=function(){return rr},rr.overlayOp=function(t,e,n){return new rr(t,e).getResultGeometry(n)},rr.union=function(t,e){return rr.overlayOp(t,e,Lr.UNION)},rr.intersection=function(t,e){return rr.overlayOp(t,e,Lr.INTERSECTION)},rr.symDifference=function(t,e){return rr.overlayOp(t,e,Lr.SYMDIFFERENCE)},rr.difference=function(t,e){return rr.overlayOp(t,e,Lr.DIFFERENCE)};var or=function(t,e){this._geom=new Array(2).fill(null),this._geom[0]=t,this._geom[1]=e};or.prototype.getResultGeometry=function(t){var e=null,n=!1,i=null;try{e=Lr.overlayOp(this._geom[0],this._geom[1],t);n=!0}catch(t){if(!(t instanceof $))throw t;i=t}if(!n)try{e=rr.overlayOp(this._geom[0],this._geom[1],t)}catch(t){throw t instanceof $?i:t}return e},or.prototype.interfaces_=function(){return[]},or.prototype.getClass=function(){return or},or.overlayOp=function(t,e,n){return new or(t,e).getResultGeometry(n)},or.union=function(t,e){return or.overlayOp(t,e,Lr.UNION)},or.intersection=function(t,e){return or.overlayOp(t,e,Lr.INTERSECTION)},or.symDifference=function(t,e){return or.overlayOp(t,e,Lr.SYMDIFFERENCE)},or.difference=function(t,e){return or.overlayOp(t,e,Lr.DIFFERENCE)};var sr=function(){this.mce=null,this.chainIndex=null;var t=arguments[0],e=arguments[1];this.mce=t,this.chainIndex=e};sr.prototype.computeIntersections=function(t,e){this.mce.computeIntersectsForChain(this.chainIndex,t.mce,t.chainIndex,e)},sr.prototype.interfaces_=function(){return[]},sr.prototype.getClass=function(){return sr};var ar=function t(){if(this._label=null,this._xValue=null,this._eventType=null,this._insertEvent=null,this._deleteEventIndex=null,this._obj=null,2===arguments.length){var e=arguments[0],n=arguments[1];this._eventType=t.DELETE,this._xValue=e,this._insertEvent=n}else if(3===arguments.length){var i=arguments[0],r=arguments[1],o=arguments[2];this._eventType=t.INSERT,this._label=i,this._xValue=r,this._obj=o}},ur={INSERT:{configurable:!0},DELETE:{configurable:!0}};ar.prototype.isDelete=function(){return this._eventType===ar.DELETE},ar.prototype.setDeleteEventIndex=function(t){this._deleteEventIndex=t},ar.prototype.getObject=function(){return this._obj},ar.prototype.compareTo=function(t){var e=t;return this._xValue<e._xValue?-1:this._xValue>e._xValue?1:this._eventType<e._eventType?-1:this._eventType>e._eventType?1:0},ar.prototype.getInsertEvent=function(){return this._insertEvent},ar.prototype.isInsert=function(){return this._eventType===ar.INSERT},ar.prototype.isSameLabel=function(t){return null!==this._label&&this._label===t._label},ar.prototype.getDeleteEventIndex=function(){return this._deleteEventIndex},ar.prototype.interfaces_=function(){return[E]},ar.prototype.getClass=function(){return ar},ur.INSERT.get=function(){return 1},ur.DELETE.get=function(){return 2},Object.defineProperties(ar,ur);var lr=function(){};lr.prototype.interfaces_=function(){return[]},lr.prototype.getClass=function(){return lr};var cr=function(){this._hasIntersection=!1,this._hasProper=!1,this._hasProperInterior=!1,this._properIntersectionPoint=null,this._li=null,this._includeProper=null,this._recordIsolated=null,this._isSelfIntersection=null,this._numIntersections=0,this.numTests=0,this._bdyNodes=null,this._isDone=!1,this._isDoneWhenProperInt=!1;var t=arguments[0],e=arguments[1],n=arguments[2];this._li=t,this._includeProper=e,this._recordIsolated=n};cr.prototype.isTrivialIntersection=function(t,e,n,i){if(t===n&&1===this._li.getIntersectionNum()){if(cr.isAdjacentSegments(e,i))return!0;if(t.isClosed()){var r=t.getNumPoints()-1;if(0===e&&i===r||0===i&&e===r)return!0}}return!1},cr.prototype.getProperIntersectionPoint=function(){return this._properIntersectionPoint},cr.prototype.setIsDoneIfProperInt=function(t){this._isDoneWhenProperInt=t},cr.prototype.hasProperInteriorIntersection=function(){return this._hasProperInterior},cr.prototype.isBoundaryPointInternal=function(t,e){for(var n=e.iterator();n.hasNext();){var i=n.next().getCoordinate();if(t.isIntersection(i))return!0}return!1},cr.prototype.hasProperIntersection=function(){return this._hasProper},cr.prototype.hasIntersection=function(){return this._hasIntersection},cr.prototype.isDone=function(){return this._isDone},cr.prototype.isBoundaryPoint=function(t,e){return null!==e&&(!!this.isBoundaryPointInternal(t,e[0])||!!this.isBoundaryPointInternal(t,e[1]))},cr.prototype.setBoundaryNodes=function(t,e){this._bdyNodes=new Array(2).fill(null),this._bdyNodes[0]=t,this._bdyNodes[1]=e},cr.prototype.addIntersections=function(t,e,n,i){if(t===n&&e===i)return null;this.numTests++;var r=t.getCoordinates()[e],o=t.getCoordinates()[e+1],s=n.getCoordinates()[i],a=n.getCoordinates()[i+1];this._li.computeIntersection(r,o,s,a),this._li.hasIntersection()&&(this._recordIsolated&&(t.setIsolated(!1),n.setIsolated(!1)),this._numIntersections++,this.isTrivialIntersection(t,e,n,i)||(this._hasIntersection=!0,!this._includeProper&&this._li.isProper()||(t.addIntersections(this._li,e,0),n.addIntersections(this._li,i,1)),this._li.isProper()&&(this._properIntersectionPoint=this._li.getIntersection(0).copy(),this._hasProper=!0,this._isDoneWhenProperInt&&(this._isDone=!0),this.isBoundaryPoint(this._li,this._bdyNodes)||(this._hasProperInterior=!0))))},cr.prototype.interfaces_=function(){return[]},cr.prototype.getClass=function(){return cr},cr.isAdjacentSegments=function(t,e){return 1===Math.abs(t-e)};var pr=function(t){function e(){t.call(this),this.events=new Nt,this.nOverlaps=null}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.prepareEvents=function(){$e.sort(this.events);for(var t=0;t<this.events.size();t++){var e=this.events.get(t);e.isDelete()&&e.getInsertEvent().setDeleteEventIndex(t)}},e.prototype.computeIntersections=function(){if(1===arguments.length){var t=arguments[0];this.nOverlaps=0,this.prepareEvents();for(var e=0;e<this.events.size();e++){var n=this.events.get(e);if(n.isInsert()&&this.processOverlaps(e,n.getDeleteEventIndex(),n,t),t.isDone())break}}else if(3===arguments.length)if(arguments[2]instanceof cr&&T(arguments[0],xt)&&T(arguments[1],xt)){var i=arguments[0],r=arguments[1],o=arguments[2];this.addEdges(i,i),this.addEdges(r,r),this.computeIntersections(o)}else if(\"boolean\"==typeof arguments[2]&&T(arguments[0],xt)&&arguments[1]instanceof cr){var s=arguments[0],a=arguments[1];arguments[2]?this.addEdges(s,null):this.addEdges(s),this.computeIntersections(a)}},e.prototype.addEdge=function(t,e){for(var n=t.getMonotoneChainEdge(),i=n.getStartIndexes(),r=0;r<i.length-1;r++){var o=new sr(n,r),s=new ar(e,n.getMinX(r),o);this.events.add(s),this.events.add(new ar(n.getMaxX(r),s))}},e.prototype.processOverlaps=function(t,e,n,i){for(var r=n.getObject(),o=t;o<e;o++){var s=this.events.get(o);if(s.isInsert()){var a=s.getObject();n.isSameLabel(s)||(r.computeIntersections(a,i),this.nOverlaps++)}}},e.prototype.addEdges=function(){if(1===arguments.length)for(var t=arguments[0].iterator();t.hasNext();){var e=t.next();this.addEdge(e,e)}else if(2===arguments.length)for(var n=arguments[0],i=arguments[1],r=n.iterator();r.hasNext();){var o=r.next();this.addEdge(o,i)}},e.prototype.interfaces_=function(){return[]},e.prototype.getClass=function(){return e},e}(lr),hr=function(){this._min=v.POSITIVE_INFINITY,this._max=v.NEGATIVE_INFINITY},fr={NodeComparator:{configurable:!0}};hr.prototype.getMin=function(){return this._min},hr.prototype.intersects=function(t,e){return!(this._min>e||this._max<t)},hr.prototype.getMax=function(){return this._max},hr.prototype.toString=function(){return Z.toLineString(new C(this._min,0),new C(this._max,0))},hr.prototype.interfaces_=function(){return[]},hr.prototype.getClass=function(){return hr},fr.NodeComparator.get=function(){return gr},Object.defineProperties(hr,fr);var gr=function(){};gr.prototype.compare=function(t,e){var n=t,i=e,r=(n._min+n._max)/2,o=(i._min+i._max)/2;return r<o?-1:r>o?1:0},gr.prototype.interfaces_=function(){return[N]},gr.prototype.getClass=function(){return gr};var dr=function(t){function e(){t.call(this),this._item=null;var e=arguments[0],n=arguments[1],i=arguments[2];this._min=e,this._max=n,this._item=i}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.query=function(t,e,n){if(!this.intersects(t,e))return null;n.visitItem(this._item)},e.prototype.interfaces_=function(){return[]},e.prototype.getClass=function(){return e},e}(hr),yr=function(t){function e(){t.call(this),this._node1=null,this._node2=null;var e=arguments[0],n=arguments[1];this._node1=e,this._node2=n,this.buildExtent(this._node1,this._node2)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.buildExtent=function(t,e){this._min=Math.min(t._min,e._min),this._max=Math.max(t._max,e._max)},e.prototype.query=function(t,e,n){if(!this.intersects(t,e))return null;null!==this._node1&&this._node1.query(t,e,n),null!==this._node2&&this._node2.query(t,e,n)},e.prototype.interfaces_=function(){return[]},e.prototype.getClass=function(){return e},e}(hr),_r=function(){this._leaves=new Nt,this._root=null,this._level=0};_r.prototype.buildTree=function(){$e.sort(this._leaves,new hr.NodeComparator);for(var t=this._leaves,e=null,n=new Nt;;){if(this.buildLevel(t,n),1===n.size())return n.get(0);e=t,t=n,n=e}},_r.prototype.insert=function(t,e,n){if(null!==this._root)throw new Error(\"Index cannot be added to once it has been queried\");this._leaves.add(new dr(t,e,n))},_r.prototype.query=function(t,e,n){this.init(),this._root.query(t,e,n)},_r.prototype.buildRoot=function(){if(null!==this._root)return null;this._root=this.buildTree()},_r.prototype.printNode=function(t){Y.out.println(Z.toLineString(new C(t._min,this._level),new C(t._max,this._level)))},_r.prototype.init=function(){if(null!==this._root)return null;this.buildRoot()},_r.prototype.buildLevel=function(t,e){this._level++,e.clear();for(var n=0;n<t.size();n+=2){var i=t.get(n);if(null===(n+1<t.size()?t.get(n):null))e.add(i);else{var r=new yr(t.get(n),t.get(n+1));e.add(r)}}},_r.prototype.interfaces_=function(){return[]},_r.prototype.getClass=function(){return _r};var mr=function(){this._items=new Nt};mr.prototype.visitItem=function(t){this._items.add(t)},mr.prototype.getItems=function(){return this._items},mr.prototype.interfaces_=function(){return[Ke]},mr.prototype.getClass=function(){return mr};var vr=function(){this._index=null;var t=arguments[0];if(!T(t,Zt))throw new m(\"Argument must be Polygonal\");this._index=new xr(t)},Ir={SegmentVisitor:{configurable:!0},IntervalIndexedGeometry:{configurable:!0}};vr.prototype.locate=function(t){var e=new st(t),n=new Er(e);return this._index.query(t.y,t.y,n),e.getLocation()},vr.prototype.interfaces_=function(){return[Vn]},vr.prototype.getClass=function(){return vr},Ir.SegmentVisitor.get=function(){return Er},Ir.IntervalIndexedGeometry.get=function(){return xr},Object.defineProperties(vr,Ir);var Er=function(){this._counter=null;var t=arguments[0];this._counter=t};Er.prototype.visitItem=function(t){var e=t;this._counter.countSegment(e.getCoordinate(0),e.getCoordinate(1))},Er.prototype.interfaces_=function(){return[Ke]},Er.prototype.getClass=function(){return Er};var xr=function(){this._index=new _r;var t=arguments[0];this.init(t)};xr.prototype.init=function(t){for(var e=Ci.getLines(t).iterator();e.hasNext();){var n=e.next().getCoordinates();this.addLine(n)}},xr.prototype.addLine=function(t){for(var e=1;e<t.length;e++){var n=new dn(t[e-1],t[e]),i=Math.min(n.p0.y,n.p1.y),r=Math.max(n.p0.y,n.p1.y);this._index.insert(i,r,n)}},xr.prototype.query=function(){if(2===arguments.length){var t=arguments[0],e=arguments[1],n=new mr;return this._index.query(t,e,n),n.getItems()}if(3===arguments.length){var i=arguments[0],r=arguments[1],o=arguments[2];this._index.query(i,r,o)}},xr.prototype.interfaces_=function(){return[]},xr.prototype.getClass=function(){return xr};var Nr=function(t){function e(){if(t.call(this),this._parentGeom=null,this._lineEdgeMap=new he,this._boundaryNodeRule=null,this._useBoundaryDeterminationRule=!0,this._argIndex=null,this._boundaryNodes=null,this._hasTooFewPoints=!1,this._invalidPoint=null,this._areaPtLocator=null,this._ptLocator=new Si,2===arguments.length){var e=arguments[0],n=arguments[1],i=gt.OGC_SFS_BOUNDARY_RULE;this._argIndex=e,this._parentGeom=n,this._boundaryNodeRule=i,null!==n&&this.add(n)}else if(3===arguments.length){var r=arguments[0],o=arguments[1],s=arguments[2];this._argIndex=r,this._parentGeom=o,this._boundaryNodeRule=s,null!==o&&this.add(o)}}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.insertBoundaryPoint=function(t,n){var i=this._nodes.addNode(n).getLabel(),r=1;w.NONE;i.getLocation(t,Se.ON)===w.BOUNDARY&&r++;var o=e.determineBoundary(this._boundaryNodeRule,r);i.setLocation(t,o)},e.prototype.computeSelfNodes=function(){if(2===arguments.length){var t=arguments[0],e=arguments[1];return this.computeSelfNodes(t,e,!1)}if(3===arguments.length){var n=arguments[0],i=arguments[1],r=arguments[2],o=new cr(n,!0,!1);o.setIsDoneIfProperInt(r);var s=this.createEdgeSetIntersector(),a=this._parentGeom instanceof ee||this._parentGeom instanceof $t||this._parentGeom instanceof ne,u=i||!a;return s.computeIntersections(this._edges,o,u),this.addSelfIntersectionNodes(this._argIndex),o}},e.prototype.computeSplitEdges=function(t){for(var e=this._edges.iterator();e.hasNext();){e.next().eiList.addSplitEdges(t)}},e.prototype.computeEdgeIntersections=function(t,e,n){var i=new cr(e,n,!0);i.setBoundaryNodes(this.getBoundaryNodes(),t.getBoundaryNodes());return this.createEdgeSetIntersector().computeIntersections(this._edges,t._edges,i),i},e.prototype.getGeometry=function(){return this._parentGeom},e.prototype.getBoundaryNodeRule=function(){return this._boundaryNodeRule},e.prototype.hasTooFewPoints=function(){return this._hasTooFewPoints},e.prototype.addPoint=function(){if(arguments[0]instanceof Qt){var t=arguments[0].getCoordinate();this.insertPoint(this._argIndex,t,w.INTERIOR)}else if(arguments[0]instanceof C){var e=arguments[0];this.insertPoint(this._argIndex,e,w.INTERIOR)}},e.prototype.addPolygon=function(t){this.addPolygonRing(t.getExteriorRing(),w.EXTERIOR,w.INTERIOR);for(var e=0;e<t.getNumInteriorRing();e++){var n=t.getInteriorRingN(e);this.addPolygonRing(n,w.INTERIOR,w.EXTERIOR)}},e.prototype.addEdge=function(t){this.insertEdge(t);var e=t.getCoordinates();this.insertPoint(this._argIndex,e[0],w.BOUNDARY),this.insertPoint(this._argIndex,e[e.length-1],w.BOUNDARY)},e.prototype.addLineString=function(t){var e=Lt.removeRepeatedPoints(t.getCoordinates());if(e.length<2)return this._hasTooFewPoints=!0,this._invalidPoint=e[0],null;var n=new ni(e,new Pe(this._argIndex,w.INTERIOR));this._lineEdgeMap.put(t,n),this.insertEdge(n),et.isTrue(e.length>=2,\"found LineString with single point\"),this.insertBoundaryPoint(this._argIndex,e[0]),this.insertBoundaryPoint(this._argIndex,e[e.length-1])},e.prototype.getInvalidPoint=function(){return this._invalidPoint},e.prototype.getBoundaryPoints=function(){for(var t=this.getBoundaryNodes(),e=new Array(t.size()).fill(null),n=0,i=t.iterator();i.hasNext();){var r=i.next();e[n++]=r.getCoordinate().copy()}return e},e.prototype.getBoundaryNodes=function(){return null===this._boundaryNodes&&(this._boundaryNodes=this._nodes.getBoundaryNodes(this._argIndex)),this._boundaryNodes},e.prototype.addSelfIntersectionNode=function(t,e,n){if(this.isBoundaryNode(t,e))return null;n===w.BOUNDARY&&this._useBoundaryDeterminationRule?this.insertBoundaryPoint(t,e):this.insertPoint(t,e,n)},e.prototype.addPolygonRing=function(t,e,n){if(t.isEmpty())return null;var i=Lt.removeRepeatedPoints(t.getCoordinates());if(i.length<4)return this._hasTooFewPoints=!0,this._invalidPoint=i[0],null;var r=e,o=n;at.isCCW(i)&&(r=n,o=e);var s=new ni(i,new Pe(this._argIndex,w.BOUNDARY,r,o));this._lineEdgeMap.put(t,s),this.insertEdge(s),this.insertPoint(this._argIndex,i[0],w.BOUNDARY)},e.prototype.insertPoint=function(t,e,n){var i=this._nodes.addNode(e),r=i.getLabel();null===r?i._label=new Pe(t,n):r.setLocation(t,n)},e.prototype.createEdgeSetIntersector=function(){return new pr},e.prototype.addSelfIntersectionNodes=function(t){for(var e=this._edges.iterator();e.hasNext();)for(var n=e.next(),i=n.getLabel().getLocation(t),r=n.eiList.iterator();r.hasNext();){var o=r.next();this.addSelfIntersectionNode(t,o.coord,i)}},e.prototype.add=function(){if(1!==arguments.length)return t.prototype.add.apply(this,arguments);var e=arguments[0];if(e.isEmpty())return null;if(e instanceof ne&&(this._useBoundaryDeterminationRule=!1),e instanceof $t)this.addPolygon(e);else if(e instanceof Kt)this.addLineString(e);else if(e instanceof Qt)this.addPoint(e);else if(e instanceof te)this.addCollection(e);else if(e instanceof Xt)this.addCollection(e);else if(e instanceof ne)this.addCollection(e);else{if(!(e instanceof zt))throw new Error(e.getClass().getName());this.addCollection(e)}},e.prototype.addCollection=function(t){for(var e=0;e<t.getNumGeometries();e++){var n=t.getGeometryN(e);this.add(n)}},e.prototype.locate=function(t){return T(this._parentGeom,Zt)&&this._parentGeom.getNumGeometries()>50?(null===this._areaPtLocator&&(this._areaPtLocator=new vr(this._parentGeom)),this._areaPtLocator.locate(t)):this._ptLocator.locate(t,this._parentGeom)},e.prototype.findEdge=function(){if(1===arguments.length){var e=arguments[0];return this._lineEdgeMap.get(e)}return t.prototype.findEdge.apply(this,arguments)},e.prototype.interfaces_=function(){return[]},e.prototype.getClass=function(){return e},e.determineBoundary=function(t,e){return t.isInBoundary(e)?w.BOUNDARY:w.INTERIOR},e}(Ye),Cr=function(){if(this._li=new rt,this._resultPrecisionModel=null,this._arg=null,1===arguments.length){var t=arguments[0];this.setComputationPrecision(t.getPrecisionModel()),this._arg=new Array(1).fill(null),this._arg[0]=new Nr(0,t)}else if(2===arguments.length){var e=arguments[0],n=arguments[1],i=gt.OGC_SFS_BOUNDARY_RULE;e.getPrecisionModel().compareTo(n.getPrecisionModel())>=0?this.setComputationPrecision(e.getPrecisionModel()):this.setComputationPrecision(n.getPrecisionModel()),this._arg=new Array(2).fill(null),this._arg[0]=new Nr(0,e,i),this._arg[1]=new Nr(1,n,i)}else if(3===arguments.length){var r=arguments[0],o=arguments[1],s=arguments[2];r.getPrecisionModel().compareTo(o.getPrecisionModel())>=0?this.setComputationPrecision(r.getPrecisionModel()):this.setComputationPrecision(o.getPrecisionModel()),this._arg=new Array(2).fill(null),this._arg[0]=new Nr(0,r,s),this._arg[1]=new Nr(1,o,s)}};Cr.prototype.getArgGeometry=function(t){return this._arg[t].getGeometry()},Cr.prototype.setComputationPrecision=function(t){this._resultPrecisionModel=t,this._li.setPrecisionModel(this._resultPrecisionModel)},Cr.prototype.interfaces_=function(){return[]},Cr.prototype.getClass=function(){return Cr};var Sr=function(){};Sr.prototype.interfaces_=function(){return[]},Sr.prototype.getClass=function(){return Sr},Sr.map=function(){if(arguments[0]instanceof ct&&T(arguments[1],Sr.MapOp)){for(var t=arguments[0],e=arguments[1],n=new Nt,i=0;i<t.getNumGeometries();i++){var r=e.map(t.getGeometryN(i));null!==r&&n.add(r)}return t.getFactory().buildGeometry(n)}if(T(arguments[0],It)&&T(arguments[1],Sr.MapOp)){for(var o=arguments[0],s=arguments[1],a=new Nt,u=o.iterator();u.hasNext();){var l=u.next(),c=s.map(l);null!==c&&a.add(c)}return a}},Sr.MapOp=function(){};var Lr=function(t){function e(){var e=arguments[0],n=arguments[1];t.call(this,e,n),this._ptLocator=new Si,this._geomFact=null,this._resultGeom=null,this._graph=null,this._edgeList=new Hn,this._resultPolyList=new Nt,this._resultLineList=new Nt,this._resultPointList=new Nt,this._graph=new Ye(new kn),this._geomFact=e.getFactory()}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.insertUniqueEdge=function(t){var e=this._edgeList.findEqualEdge(t);if(null!==e){var n=e.getLabel(),i=t.getLabel();e.isPointwiseEqual(t)||(i=new Pe(t.getLabel())).flip();var r=e.getDepth();r.isNull()&&r.add(n),r.add(i),n.merge(i)}else this._edgeList.add(t)},e.prototype.getGraph=function(){return this._graph},e.prototype.cancelDuplicateResultEdges=function(){for(var t=this._graph.getEdgeEnds().iterator();t.hasNext();){var e=t.next(),n=e.getSym();e.isInResult()&&n.isInResult()&&(e.setInResult(!1),n.setInResult(!1))}},e.prototype.isCoveredByLA=function(t){return!!this.isCovered(t,this._resultLineList)||!!this.isCovered(t,this._resultPolyList)},e.prototype.computeGeometry=function(t,n,i,r){var o=new Nt;return o.addAll(t),o.addAll(n),o.addAll(i),o.isEmpty()?e.createEmptyResult(r,this._arg[0].getGeometry(),this._arg[1].getGeometry(),this._geomFact):this._geomFact.buildGeometry(o)},e.prototype.mergeSymLabels=function(){for(var t=this._graph.getNodes().iterator();t.hasNext();){t.next().getEdges().mergeSymLabels()}},e.prototype.isCovered=function(t,e){for(var n=e.iterator();n.hasNext();){var i=n.next();if(this._ptLocator.locate(t,i)!==w.EXTERIOR)return!0}return!1},e.prototype.replaceCollapsedEdges=function(){for(var t=new Nt,e=this._edgeList.iterator();e.hasNext();){var n=e.next();n.isCollapsed()&&(e.remove(),t.add(n.getCollapsedEdge()))}this._edgeList.addAll(t)},e.prototype.updateNodeLabelling=function(){for(var t=this._graph.getNodes().iterator();t.hasNext();){var e=t.next(),n=e.getEdges().getLabel();e.getLabel().merge(n)}},e.prototype.getResultGeometry=function(t){return this.computeOverlay(t),this._resultGeom},e.prototype.insertUniqueEdges=function(t){for(var e=t.iterator();e.hasNext();){var n=e.next();this.insertUniqueEdge(n)}},e.prototype.computeOverlay=function(t){this.copyPoints(0),this.copyPoints(1),this._arg[0].computeSelfNodes(this._li,!1),this._arg[1].computeSelfNodes(this._li,!1),this._arg[0].computeEdgeIntersections(this._arg[1],this._li,!0);var e=new Nt;this._arg[0].computeSplitEdges(e),this._arg[1].computeSplitEdges(e),this.insertUniqueEdges(e),this.computeLabelsFromDepths(),this.replaceCollapsedEdges(),Yi.checkValid(this._edgeList.getEdges()),this._graph.addEdges(this._edgeList.getEdges()),this.computeLabelling(),this.labelIncompleteNodes(),this.findResultAreaEdges(t),this.cancelDuplicateResultEdges();var n=new ke(this._geomFact);n.add(this._graph),this._resultPolyList=n.getPolygons();var i=new ji(this,this._geomFact,this._ptLocator);this._resultLineList=i.build(t);var r=new Hi(this,this._geomFact,this._ptLocator);this._resultPointList=r.build(t),this._resultGeom=this.computeGeometry(this._resultPointList,this._resultLineList,this._resultPolyList,t)},e.prototype.labelIncompleteNode=function(t,e){var n=this._ptLocator.locate(t.getCoordinate(),this._arg[e].getGeometry());t.getLabel().setLocation(e,n)},e.prototype.copyPoints=function(t){for(var e=this._arg[t].getNodeIterator();e.hasNext();){var n=e.next();this._graph.addNode(n.getCoordinate()).setLabel(t,n.getLabel().getLocation(t))}},e.prototype.findResultAreaEdges=function(t){for(var n=this._graph.getEdgeEnds().iterator();n.hasNext();){var i=n.next(),r=i.getLabel();r.isArea()&&!i.isInteriorAreaEdge()&&e.isResultOfOp(r.getLocation(0,Se.RIGHT),r.getLocation(1,Se.RIGHT),t)&&i.setInResult(!0)}},e.prototype.computeLabelsFromDepths=function(){for(var t=this._edgeList.iterator();t.hasNext();){var e=t.next(),n=e.getLabel(),i=e.getDepth();if(!i.isNull()){i.normalize();for(var r=0;r<2;r++)n.isNull(r)||!n.isArea()||i.isNull(r)||(0===i.getDelta(r)?n.toLine(r):(et.isTrue(!i.isNull(r,Se.LEFT),\"depth of LEFT side has not been initialized\"),n.setLocation(r,Se.LEFT,i.getLocation(r,Se.LEFT)),et.isTrue(!i.isNull(r,Se.RIGHT),\"depth of RIGHT side has not been initialized\"),n.setLocation(r,Se.RIGHT,i.getLocation(r,Se.RIGHT))))}}},e.prototype.computeLabelling=function(){for(var t=this._graph.getNodes().iterator();t.hasNext();){t.next().getEdges().computeLabelling(this._arg)}this.mergeSymLabels(),this.updateNodeLabelling()},e.prototype.labelIncompleteNodes=function(){for(var t=this._graph.getNodes().iterator();t.hasNext();){var e=t.next(),n=e.getLabel();e.isIsolated()&&(n.isNull(0)?this.labelIncompleteNode(e,0):this.labelIncompleteNode(e,1)),e.getEdges().updateLabelling(n)}},e.prototype.isCoveredByA=function(t){return!!this.isCovered(t,this._resultPolyList)},e.prototype.interfaces_=function(){return[]},e.prototype.getClass=function(){return e},e}(Cr);Lr.overlayOp=function(t,e,n){return new Lr(t,e).getResultGeometry(n)},Lr.intersection=function(t,e){if(t.isEmpty()||e.isEmpty())return Lr.createEmptyResult(Lr.INTERSECTION,t,e,t.getFactory());if(t.isGeometryCollection()){var n=e;return ki.map(t,{interfaces_:function(){return[Sr.MapOp]},map:function(t){return t.intersection(n)}})}return t.checkNotGeometryCollection(t),t.checkNotGeometryCollection(e),or.overlayOp(t,e,Lr.INTERSECTION)},Lr.symDifference=function(t,e){if(t.isEmpty()||e.isEmpty()){if(t.isEmpty()&&e.isEmpty())return Lr.createEmptyResult(Lr.SYMDIFFERENCE,t,e,t.getFactory());if(t.isEmpty())return e.copy();if(e.isEmpty())return t.copy()}return t.checkNotGeometryCollection(t),t.checkNotGeometryCollection(e),or.overlayOp(t,e,Lr.SYMDIFFERENCE)},Lr.resultDimension=function(t,e,n){var i=e.getDimension(),r=n.getDimension(),o=-1;switch(t){case Lr.INTERSECTION:o=Math.min(i,r);break;case Lr.UNION:o=Math.max(i,r);break;case Lr.DIFFERENCE:o=i;break;case Lr.SYMDIFFERENCE:o=Math.max(i,r)}return o},Lr.createEmptyResult=function(t,e,n,i){var r=null;switch(Lr.resultDimension(t,e,n)){case-1:r=i.createGeometryCollection(new Array(0).fill(null));break;case 0:r=i.createPoint();break;case 1:r=i.createLineString();break;case 2:r=i.createPolygon()}return r},Lr.difference=function(t,e){return t.isEmpty()?Lr.createEmptyResult(Lr.DIFFERENCE,t,e,t.getFactory()):e.isEmpty()?t.copy():(t.checkNotGeometryCollection(t),t.checkNotGeometryCollection(e),or.overlayOp(t,e,Lr.DIFFERENCE))},Lr.isResultOfOp=function(){if(2===arguments.length){var t=arguments[0],e=arguments[1],n=t.getLocation(0),i=t.getLocation(1);return Lr.isResultOfOp(n,i,e)}if(3===arguments.length){var r=arguments[0],o=arguments[1],s=arguments[2];switch(r===w.BOUNDARY&&(r=w.INTERIOR),o===w.BOUNDARY&&(o=w.INTERIOR),s){case Lr.INTERSECTION:return r===w.INTERIOR&&o===w.INTERIOR;case Lr.UNION:return r===w.INTERIOR||o===w.INTERIOR;case Lr.DIFFERENCE:return r===w.INTERIOR&&o!==w.INTERIOR;case Lr.SYMDIFFERENCE:return r===w.INTERIOR&&o!==w.INTERIOR||r!==w.INTERIOR&&o===w.INTERIOR}return!1}},Lr.INTERSECTION=1,Lr.UNION=2,Lr.DIFFERENCE=3,Lr.SYMDIFFERENCE=4;var br=function(){this._g=null,this._boundaryDistanceTolerance=null,this._linework=null,this._ptLocator=new Si,this._seg=new dn;var t=arguments[0],e=arguments[1];this._g=t,this._boundaryDistanceTolerance=e,this._linework=this.extractLinework(t)};br.prototype.isWithinToleranceOfBoundary=function(t){for(var e=0;e<this._linework.getNumGeometries();e++)for(var n=this._linework.getGeometryN(e).getCoordinateSequence(),i=0;i<n.size()-1;i++){n.getCoordinate(i,this._seg.p0),n.getCoordinate(i+1,this._seg.p1);if(this._seg.distance(t)<=this._boundaryDistanceTolerance)return!0}return!1},br.prototype.getLocation=function(t){return this.isWithinToleranceOfBoundary(t)?w.BOUNDARY:this._ptLocator.locate(t,this._g)},br.prototype.extractLinework=function(t){var e=new wr;t.apply(e);var n=e.getLinework(),i=_e.toLineStringArray(n);return t.getFactory().createMultiLineString(i)},br.prototype.interfaces_=function(){return[]},br.prototype.getClass=function(){return br};var wr=function(){this._linework=null,this._linework=new Nt};wr.prototype.getLinework=function(){return this._linework},wr.prototype.filter=function(t){if(t instanceof $t){var e=t;this._linework.add(e.getExteriorRing());for(var n=0;n<e.getNumInteriorRing();n++)this._linework.add(e.getInteriorRingN(n))}},wr.prototype.interfaces_=function(){return[Vt]},wr.prototype.getClass=function(){return wr};var Or=function(){this._g=null,this._doLeft=!0,this._doRight=!0;var t=arguments[0];this._g=t};Or.prototype.extractPoints=function(t,e,n){for(var i=t.getCoordinates(),r=0;r<i.length-1;r++)this.computeOffsetPoints(i[r],i[r+1],e,n)},Or.prototype.setSidesToGenerate=function(t,e){this._doLeft=t,this._doRight=e},Or.prototype.getPoints=function(t){for(var e=new Nt,n=Ci.getLines(this._g).iterator();n.hasNext();){var i=n.next();this.extractPoints(i,t,e)}return e},Or.prototype.computeOffsetPoints=function(t,e,n,i){var r=e.x-t.x,o=e.y-t.y,s=Math.sqrt(r*r+o*o),a=n*r/s,u=n*o/s,l=(e.x+t.x)/2,c=(e.y+t.y)/2;if(this._doLeft){var p=new C(l-u,c+a);i.add(p)}if(this._doRight){var h=new C(l+u,c-a);i.add(h)}},Or.prototype.interfaces_=function(){return[]},Or.prototype.getClass=function(){return Or};var Tr=function t(){this._geom=null,this._locFinder=null,this._location=new Array(3).fill(null),this._invalidLocation=null,this._boundaryDistanceTolerance=t.TOLERANCE,this._testCoords=new Nt;var e=arguments[0],n=arguments[1],i=arguments[2];this._boundaryDistanceTolerance=t.computeBoundaryDistanceTolerance(e,n),this._geom=[e,n,i],this._locFinder=[new br(this._geom[0],this._boundaryDistanceTolerance),new br(this._geom[1],this._boundaryDistanceTolerance),new br(this._geom[2],this._boundaryDistanceTolerance)]},Rr={TOLERANCE:{configurable:!0}};Tr.prototype.reportResult=function(t,e,n){Y.out.println(\"Overlay result invalid - A:\"+w.toLocationSymbol(e[0])+\" B:\"+w.toLocationSymbol(e[1])+\" expected:\"+(n?\"i\":\"e\")+\" actual:\"+w.toLocationSymbol(e[2]))},Tr.prototype.isValid=function(t){this.addTestPts(this._geom[0]),this.addTestPts(this._geom[1]);var e=this.checkValid(t);return e},Tr.prototype.checkValid=function(){if(1===arguments.length){for(var t=arguments[0],e=0;e<this._testCoords.size();e++){var n=this._testCoords.get(e);if(!this.checkValid(t,n))return this._invalidLocation=n,!1}return!0}if(2===arguments.length){var i=arguments[0],r=arguments[1];return this._location[0]=this._locFinder[0].getLocation(r),this._location[1]=this._locFinder[1].getLocation(r),this._location[2]=this._locFinder[2].getLocation(r),!!Tr.hasLocation(this._location,w.BOUNDARY)||this.isValidResult(i,this._location)}},Tr.prototype.addTestPts=function(t){var e=new Or(t);this._testCoords.addAll(e.getPoints(5*this._boundaryDistanceTolerance))},Tr.prototype.isValidResult=function(t,e){var n=Lr.isResultOfOp(e[0],e[1],t),i=!(n^e[2]===w.INTERIOR);return i||this.reportResult(t,e,n),i},Tr.prototype.getInvalidLocation=function(){return this._invalidLocation},Tr.prototype.interfaces_=function(){return[]},Tr.prototype.getClass=function(){return Tr},Tr.hasLocation=function(t,e){for(var n=0;n<3;n++)if(t[n]===e)return!0;return!1},Tr.computeBoundaryDistanceTolerance=function(t,e){return Math.min(Ji.computeSizeBasedSnapTolerance(t),Ji.computeSizeBasedSnapTolerance(e))},Tr.isValid=function(t,e,n,i){return new Tr(t,e,i).isValid(n)},Rr.TOLERANCE.get=function(){return 1e-6},Object.defineProperties(Tr,Rr);var Pr=function t(e){this._geomFactory=null,this._skipEmpty=!1,this._inputGeoms=null,this._geomFactory=t.extractFactory(e),this._inputGeoms=e};Pr.prototype.extractElements=function(t,e){if(null===t)return null;for(var n=0;n<t.getNumGeometries();n++){var i=t.getGeometryN(n);this._skipEmpty&&i.isEmpty()||e.add(i)}},Pr.prototype.combine=function(){for(var t=new Nt,e=this._inputGeoms.iterator();e.hasNext();){var n=e.next();this.extractElements(n,t)}return 0===t.size()?null!==this._geomFactory?this._geomFactory.createGeometryCollection(null):null:this._geomFactory.buildGeometry(t)},Pr.prototype.interfaces_=function(){return[]},Pr.prototype.getClass=function(){return Pr},Pr.combine=function(){if(1===arguments.length){var t=arguments[0];return new Pr(t).combine()}if(2===arguments.length){var e=arguments[0],n=arguments[1];return new Pr(Pr.createList(e,n)).combine()}if(3===arguments.length){var i=arguments[0],r=arguments[1],o=arguments[2];return new Pr(Pr.createList(i,r,o)).combine()}},Pr.extractFactory=function(t){return t.isEmpty()?null:t.iterator().next().getFactory()},Pr.createList=function(){if(2===arguments.length){var t=arguments[0],e=arguments[1],n=new Nt;return n.add(t),n.add(e),n}if(3===arguments.length){var i=arguments[0],r=arguments[1],o=arguments[2],s=new Nt;return s.add(i),s.add(r),s.add(o),s}};var Dr=function(){this._inputPolys=null,this._geomFactory=null;var t=arguments[0];this._inputPolys=t,null===this._inputPolys&&(this._inputPolys=new Nt)},Mr={STRTREE_NODE_CAPACITY:{configurable:!0}};Dr.prototype.reduceToGeometries=function(t){for(var e=new Nt,n=t.iterator();n.hasNext();){var i=n.next(),r=null;T(i,xt)?r=this.unionTree(i):i instanceof ct&&(r=i),e.add(r)}return e},Dr.prototype.extractByEnvelope=function(t,e,n){for(var i=new Nt,r=0;r<e.getNumGeometries();r++){var o=e.getGeometryN(r);o.getEnvelopeInternal().intersects(t)?i.add(o):n.add(o)}return this._geomFactory.buildGeometry(i)},Dr.prototype.unionOptimized=function(t,e){var n=t.getEnvelopeInternal(),i=e.getEnvelopeInternal();if(!n.intersects(i)){return Pr.combine(t,e)}if(t.getNumGeometries()<=1&&e.getNumGeometries()<=1)return this.unionActual(t,e);var r=n.intersection(i);return this.unionUsingEnvelopeIntersection(t,e,r)},Dr.prototype.union=function(){if(null===this._inputPolys)throw new Error(\"union() method cannot be called twice\");if(this._inputPolys.isEmpty())return null;this._geomFactory=this._inputPolys.iterator().next().getFactory();for(var t=new sn(Dr.STRTREE_NODE_CAPACITY),e=this._inputPolys.iterator();e.hasNext();){var n=e.next();t.insert(n.getEnvelopeInternal(),n)}this._inputPolys=null;var i=t.itemsTree();return this.unionTree(i)},Dr.prototype.binaryUnion=function(){if(1===arguments.length){var t=arguments[0];return this.binaryUnion(t,0,t.size())}if(3===arguments.length){var e=arguments[0],n=arguments[1],i=arguments[2];if(i-n<=1){var r=Dr.getGeometry(e,n);return this.unionSafe(r,null)}if(i-n==2)return this.unionSafe(Dr.getGeometry(e,n),Dr.getGeometry(e,n+1));var o=Math.trunc((i+n)/2),s=this.binaryUnion(e,n,o),a=this.binaryUnion(e,o,i);return this.unionSafe(s,a)}},Dr.prototype.repeatedUnion=function(t){for(var e=null,n=t.iterator();n.hasNext();){var i=n.next();e=null===e?i.copy():e.union(i)}return e},Dr.prototype.unionSafe=function(t,e){return null===t&&null===e?null:null===t?e.copy():null===e?t.copy():this.unionOptimized(t,e)},Dr.prototype.unionActual=function(t,e){return Dr.restrictToPolygons(t.union(e))},Dr.prototype.unionTree=function(t){var e=this.reduceToGeometries(t);return this.binaryUnion(e)},Dr.prototype.unionUsingEnvelopeIntersection=function(t,e,n){var i=new Nt,r=this.extractByEnvelope(n,t,i),o=this.extractByEnvelope(n,e,i),s=this.unionActual(r,o);i.add(s);return Pr.combine(i)},Dr.prototype.bufferUnion=function(){if(1===arguments.length){var t=arguments[0];return t.get(0).getFactory().buildGeometry(t).buffer(0)}if(2===arguments.length){var e=arguments[0],n=arguments[1];return e.getFactory().createGeometryCollection([e,n]).buffer(0)}},Dr.prototype.interfaces_=function(){return[]},Dr.prototype.getClass=function(){return Dr},Dr.restrictToPolygons=function(t){if(T(t,Zt))return t;var e=Ni.getPolygons(t);return 1===e.size()?e.get(0):t.getFactory().createMultiPolygon(_e.toPolygonArray(e))},Dr.getGeometry=function(t,e){return e>=t.size()?null:t.get(e)},Dr.union=function(t){return new Dr(t).union()},Mr.STRTREE_NODE_CAPACITY.get=function(){return 4},Object.defineProperties(Dr,Mr);var Ar=function(){};Ar.prototype.interfaces_=function(){return[]},Ar.prototype.getClass=function(){return Ar},Ar.union=function(t,e){if(t.isEmpty()||e.isEmpty()){if(t.isEmpty()&&e.isEmpty())return Lr.createEmptyResult(Lr.UNION,t,e,t.getFactory());if(t.isEmpty())return e.copy();if(e.isEmpty())return t.copy()}return t.checkNotGeometryCollection(t),t.checkNotGeometryCollection(e),or.overlayOp(t,e,Lr.UNION)},t.GeoJSONReader=Ne,t.GeoJSONWriter=Ce,t.OverlayOp=Lr,t.UnionOp=Ar,t.BufferOp=di,Object.defineProperty(t,\"__esModule\",{value:!0})});\n","import { useRef, useEffect, useCallback, useState, useMemo } from 'react';\n\n// This could've been more streamlined with internal state instead of abusing\n// refs to such extent, but then composing hooks and components could not opt out of unnecessary renders.\nfunction useResolvedElement(subscriber, refOrElement) {\n  var lastReportRef = useRef(null);\n  var refOrElementRef = useRef(null);\n  refOrElementRef.current = refOrElement;\n  var cbElementRef = useRef(null); // Calling re-evaluation after each render without using a dep array,\n  // as the ref object's current value could've changed since the last render.\n\n  useEffect(function () {\n    evaluateSubscription();\n  });\n  var evaluateSubscription = useCallback(function () {\n    var cbElement = cbElementRef.current;\n    var refOrElement = refOrElementRef.current; // Ugly ternary. But smaller than an if-else block.\n\n    var element = cbElement ? cbElement : refOrElement ? refOrElement instanceof Element ? refOrElement : refOrElement.current : null;\n\n    if (lastReportRef.current && lastReportRef.current.element === element && lastReportRef.current.subscriber === subscriber) {\n      return;\n    }\n\n    if (lastReportRef.current && lastReportRef.current.cleanup) {\n      lastReportRef.current.cleanup();\n    }\n\n    lastReportRef.current = {\n      element: element,\n      subscriber: subscriber,\n      // Only calling the subscriber, if there's an actual element to report.\n      // Setting cleanup to undefined unless a subscriber returns one, as an existing cleanup function would've been just called.\n      cleanup: element ? subscriber(element) : undefined\n    };\n  }, [subscriber]); // making sure we call the cleanup function on unmount\n\n  useEffect(function () {\n    return function () {\n      if (lastReportRef.current && lastReportRef.current.cleanup) {\n        lastReportRef.current.cleanup();\n        lastReportRef.current = null;\n      }\n    };\n  }, []);\n  return useCallback(function (element) {\n    cbElementRef.current = element;\n    evaluateSubscription();\n  }, [evaluateSubscription]);\n}\n\n// We're only using the first element of the size sequences, until future versions of the spec solidify on how\n// exactly it'll be used for fragments in multi-column scenarios:\n// From the spec:\n// > The box size properties are exposed as FrozenArray in order to support elements that have multiple fragments,\n// > which occur in multi-column scenarios. However the current definitions of content rect and border box do not\n// > mention how those boxes are affected by multi-column layout. In this spec, there will only be a single\n// > ResizeObserverSize returned in the FrozenArray, which will correspond to the dimensions of the first column.\n// > A future version of this spec will extend the returned FrozenArray to contain the per-fragment size information.\n// (https://drafts.csswg.org/resize-observer/#resize-observer-entry-interface)\n//\n// Also, testing these new box options revealed that in both Chrome and FF everything is returned in the callback,\n// regardless of the \"box\" option.\n// The spec states the following on this:\n// > This does not have any impact on which box dimensions are returned to the defined callback when the event\n// > is fired, it solely defines which box the author wishes to observe layout changes on.\n// (https://drafts.csswg.org/resize-observer/#resize-observer-interface)\n// I'm not exactly clear on what this means, especially when you consider a later section stating the following:\n// > This section is non-normative. An author may desire to observe more than one CSS box.\n// > In this case, author will need to use multiple ResizeObservers.\n// (https://drafts.csswg.org/resize-observer/#resize-observer-interface)\n// Which is clearly not how current browser implementations behave, and seems to contradict the previous quote.\n// For this reason I decided to only return the requested size,\n// even though it seems we have access to results for all box types.\n// This also means that we get to keep the current api, being able to return a simple { width, height } pair,\n// regardless of box option.\nfunction extractSize(entry, boxProp, sizeType) {\n  if (!entry[boxProp]) {\n    if (boxProp === \"contentBoxSize\") {\n      // The dimensions in `contentBoxSize` and `contentRect` are equivalent according to the spec.\n      // See the 6th step in the description for the RO algorithm:\n      // https://drafts.csswg.org/resize-observer/#create-and-populate-resizeobserverentry-h\n      // > Set this.contentRect to logical this.contentBoxSize given target and observedBox of \"content-box\".\n      // In real browser implementations of course these objects differ, but the width/height values should be equivalent.\n      return entry.contentRect[sizeType === \"inlineSize\" ? \"width\" : \"height\"];\n    }\n\n    return undefined;\n  } // A couple bytes smaller than calling Array.isArray() and just as effective here.\n\n\n  return entry[boxProp][0] ? entry[boxProp][0][sizeType] : // TS complains about this, because the RO entry type follows the spec and does not reflect Firefox's current\n  // behaviour of returning objects instead of arrays for `borderBoxSize` and `contentBoxSize`.\n  // @ts-ignore\n  entry[boxProp][sizeType];\n}\n\nfunction useResizeObserver(opts) {\n  if (opts === void 0) {\n    opts = {};\n  }\n\n  // Saving the callback as a ref. With this, I don't need to put onResize in the\n  // effect dep array, and just passing in an anonymous function without memoising\n  // will not reinstantiate the hook's ResizeObserver.\n  var onResize = opts.onResize;\n  var onResizeRef = useRef(undefined);\n  onResizeRef.current = onResize;\n  var round = opts.round || Math.round; // Using a single instance throughout the hook's lifetime\n\n  var resizeObserverRef = useRef();\n\n  var _useState = useState({\n    width: undefined,\n    height: undefined\n  }),\n      size = _useState[0],\n      setSize = _useState[1]; // In certain edge cases the RO might want to report a size change just after\n  // the component unmounted.\n\n\n  var didUnmount = useRef(false);\n  useEffect(function () {\n    didUnmount.current = false;\n    return function () {\n      didUnmount.current = true;\n    };\n  }, []); // Using a ref to track the previous width / height to avoid unnecessary renders.\n\n  var previous = useRef({\n    width: undefined,\n    height: undefined\n  }); // This block is kinda like a useEffect, only it's called whenever a new\n  // element could be resolved based on the ref option. It also has a cleanup\n  // function.\n\n  var refCallback = useResolvedElement(useCallback(function (element) {\n    // We only use a single Resize Observer instance, and we're instantiating it on demand, only once there's something to observe.\n    // This instance is also recreated when the `box` option changes, so that a new observation is fired if there was a previously observed element with a different box option.\n    if (!resizeObserverRef.current || resizeObserverRef.current.box !== opts.box || resizeObserverRef.current.round !== round) {\n      resizeObserverRef.current = {\n        box: opts.box,\n        round: round,\n        instance: new ResizeObserver(function (entries) {\n          var entry = entries[0];\n          var boxProp = opts.box === \"border-box\" ? \"borderBoxSize\" : opts.box === \"device-pixel-content-box\" ? \"devicePixelContentBoxSize\" : \"contentBoxSize\";\n          var reportedWidth = extractSize(entry, boxProp, \"inlineSize\");\n          var reportedHeight = extractSize(entry, boxProp, \"blockSize\");\n          var newWidth = reportedWidth ? round(reportedWidth) : undefined;\n          var newHeight = reportedHeight ? round(reportedHeight) : undefined;\n\n          if (previous.current.width !== newWidth || previous.current.height !== newHeight) {\n            var newSize = {\n              width: newWidth,\n              height: newHeight\n            };\n            previous.current.width = newWidth;\n            previous.current.height = newHeight;\n\n            if (onResizeRef.current) {\n              onResizeRef.current(newSize);\n            } else {\n              if (!didUnmount.current) {\n                setSize(newSize);\n              }\n            }\n          }\n        })\n      };\n    }\n\n    resizeObserverRef.current.instance.observe(element, {\n      box: opts.box\n    });\n    return function () {\n      if (resizeObserverRef.current) {\n        resizeObserverRef.current.instance.unobserve(element);\n      }\n    };\n  }, [opts.box, round]), opts.ref);\n  return useMemo(function () {\n    return {\n      ref: refCallback,\n      width: size.width,\n      height: size.height\n    };\n  }, [refCallback, size.width, size.height]);\n}\n\nexport { useResizeObserver as default };\n","const randomUUID = typeof crypto !== 'undefined' && crypto.randomUUID && crypto.randomUUID.bind(crypto);\nexport default {\n  randomUUID\n};","// Unique ID creation requires a high quality random # generator. In the browser we therefore\n// require the crypto API and do not support built-in fallback to lower quality random number\n// generators (like Math.random()).\nlet getRandomValues;\nconst rnds8 = new Uint8Array(16);\nexport default function rng() {\n  // lazy load so that environments that need to polyfill have a chance to do so\n  if (!getRandomValues) {\n    // getRandomValues needs to be invoked in a context where \"this\" is a Crypto implementation.\n    getRandomValues = typeof crypto !== 'undefined' && crypto.getRandomValues && crypto.getRandomValues.bind(crypto);\n\n    if (!getRandomValues) {\n      throw new Error('crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported');\n    }\n  }\n\n  return getRandomValues(rnds8);\n}","import validate from './validate.js';\n/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\n\nconst byteToHex = [];\n\nfor (let i = 0; i < 256; ++i) {\n  byteToHex.push((i + 0x100).toString(16).slice(1));\n}\n\nexport function unsafeStringify(arr, offset = 0) {\n  // Note: Be careful editing this code!  It's been tuned for performance\n  // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434\n  return byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]];\n}\n\nfunction stringify(arr, offset = 0) {\n  const uuid = unsafeStringify(arr, offset); // Consistency check for valid UUID.  If this throws, it's likely due to one\n  // of the following:\n  // - One or more input array values don't map to a hex octet (leading to\n  // \"undefined\" in the uuid)\n  // - Invalid input values for the RFC `version` or `variant` fields\n\n  if (!validate(uuid)) {\n    throw TypeError('Stringified UUID is invalid');\n  }\n\n  return uuid;\n}\n\nexport default stringify;","import native from './native.js';\nimport rng from './rng.js';\nimport { unsafeStringify } from './stringify.js';\n\nfunction v4(options, buf, offset) {\n  if (native.randomUUID && !buf && !options) {\n    return native.randomUUID();\n  }\n\n  options = options || {};\n  const rnds = options.random || (options.rng || rng)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`\n\n  rnds[6] = rnds[6] & 0x0f | 0x40;\n  rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided\n\n  if (buf) {\n    offset = offset || 0;\n\n    for (let i = 0; i < 16; ++i) {\n      buf[offset + i] = rnds[i];\n    }\n\n    return buf;\n  }\n\n  return unsafeStringify(rnds);\n}\n\nexport default v4;","function _interopRequireDefault(e) {\n  return e && e.__esModule ? e : {\n    \"default\": e\n  };\n}\nmodule.exports = _interopRequireDefault, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _typeof(o) {\n  \"@babel/helpers - typeof\";\n\n  return module.exports = _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) {\n    return typeof o;\n  } : function (o) {\n    return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n  }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports, _typeof(o);\n}\nmodule.exports = _typeof, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","'use strict';\nvar isCallable = require('../internals/is-callable');\nvar tryToString = require('../internals/try-to-string');\n\nvar $TypeError = TypeError;\n\n// `Assert: IsCallable(argument) is true`\nmodule.exports = function (argument) {\n  if (isCallable(argument)) return argument;\n  throw new $TypeError(tryToString(argument) + ' is not a function');\n};\n","'use strict';\nvar isObject = require('../internals/is-object');\n\nvar $String = String;\nvar $TypeError = TypeError;\n\n// `Assert: Type(argument) is Object`\nmodule.exports = function (argument) {\n  if (isObject(argument)) return argument;\n  throw new $TypeError($String(argument) + ' is not an object');\n};\n","'use strict';\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\n\n// `Array.prototype.{ indexOf, includes }` methods implementation\nvar createMethod = function (IS_INCLUDES) {\n  return function ($this, el, fromIndex) {\n    var O = toIndexedObject($this);\n    var length = lengthOfArrayLike(O);\n    if (length === 0) return !IS_INCLUDES && -1;\n    var index = toAbsoluteIndex(fromIndex, length);\n    var value;\n    // Array#includes uses SameValueZero equality algorithm\n    // eslint-disable-next-line no-self-compare -- NaN check\n    if (IS_INCLUDES && el !== el) while (length > index) {\n      value = O[index++];\n      // eslint-disable-next-line no-self-compare -- NaN check\n      if (value !== value) return true;\n    // Array#indexOf ignores holes, Array#includes - not\n    } else for (;length > index; index++) {\n      if ((IS_INCLUDES || index in O) && O[index] === el) return IS_INCLUDES || index || 0;\n    } return !IS_INCLUDES && -1;\n  };\n};\n\nmodule.exports = {\n  // `Array.prototype.includes` method\n  // https://tc39.es/ecma262/#sec-array.prototype.includes\n  includes: createMethod(true),\n  // `Array.prototype.indexOf` method\n  // https://tc39.es/ecma262/#sec-array.prototype.indexof\n  indexOf: createMethod(false)\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nmodule.exports = uncurryThis([].slice);\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nvar toString = uncurryThis({}.toString);\nvar stringSlice = uncurryThis(''.slice);\n\nmodule.exports = function (it) {\n  return stringSlice(toString(it), 8, -1);\n};\n","'use strict';\nvar hasOwn = require('../internals/has-own-property');\nvar ownKeys = require('../internals/own-keys');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar definePropertyModule = require('../internals/object-define-property');\n\nmodule.exports = function (target, source, exceptions) {\n  var keys = ownKeys(source);\n  var defineProperty = definePropertyModule.f;\n  var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\n  for (var i = 0; i < keys.length; i++) {\n    var key = keys[i];\n    if (!hasOwn(target, key) && !(exceptions && hasOwn(exceptions, key))) {\n      defineProperty(target, key, getOwnPropertyDescriptor(source, key));\n    }\n  }\n};\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar definePropertyModule = require('../internals/object-define-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = DESCRIPTORS ? function (object, key, value) {\n  return definePropertyModule.f(object, key, createPropertyDescriptor(1, value));\n} : function (object, key, value) {\n  object[key] = value;\n  return object;\n};\n","'use strict';\nmodule.exports = function (bitmap, value) {\n  return {\n    enumerable: !(bitmap & 1),\n    configurable: !(bitmap & 2),\n    writable: !(bitmap & 4),\n    value: value\n  };\n};\n","'use strict';\nvar makeBuiltIn = require('../internals/make-built-in');\nvar defineProperty = require('../internals/object-define-property');\n\nmodule.exports = function (target, name, descriptor) {\n  if (descriptor.get) makeBuiltIn(descriptor.get, name, { getter: true });\n  if (descriptor.set) makeBuiltIn(descriptor.set, name, { setter: true });\n  return defineProperty.f(target, name, descriptor);\n};\n","'use strict';\nvar isCallable = require('../internals/is-callable');\nvar definePropertyModule = require('../internals/object-define-property');\nvar makeBuiltIn = require('../internals/make-built-in');\nvar defineGlobalProperty = require('../internals/define-global-property');\n\nmodule.exports = function (O, key, value, options) {\n  if (!options) options = {};\n  var simple = options.enumerable;\n  var name = options.name !== undefined ? options.name : key;\n  if (isCallable(value)) makeBuiltIn(value, name, options);\n  if (options.global) {\n    if (simple) O[key] = value;\n    else defineGlobalProperty(key, value);\n  } else {\n    try {\n      if (!options.unsafe) delete O[key];\n      else if (O[key]) simple = true;\n    } catch (error) { /* empty */ }\n    if (simple) O[key] = value;\n    else definePropertyModule.f(O, key, {\n      value: value,\n      enumerable: false,\n      configurable: !options.nonConfigurable,\n      writable: !options.nonWritable\n    });\n  } return O;\n};\n","'use strict';\nvar globalThis = require('../internals/global-this');\n\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar defineProperty = Object.defineProperty;\n\nmodule.exports = function (key, value) {\n  try {\n    defineProperty(globalThis, key, { value: value, configurable: true, writable: true });\n  } catch (error) {\n    globalThis[key] = value;\n  } return value;\n};\n","'use strict';\nvar fails = require('../internals/fails');\n\n// Detect IE8's incomplete defineProperty implementation\nmodule.exports = !fails(function () {\n  // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n  return Object.defineProperty({}, 1, { get: function () { return 7; } })[1] !== 7;\n});\n","'use strict';\nvar globalThis = require('../internals/global-this');\nvar isObject = require('../internals/is-object');\n\nvar document = globalThis.document;\n// typeof document.createElement is 'object' in old IE\nvar EXISTS = isObject(document) && isObject(document.createElement);\n\nmodule.exports = function (it) {\n  return EXISTS ? document.createElement(it) : {};\n};\n","'use strict';\n// IE8- don't enum bug keys\nmodule.exports = [\n  'constructor',\n  'hasOwnProperty',\n  'isPrototypeOf',\n  'propertyIsEnumerable',\n  'toLocaleString',\n  'toString',\n  'valueOf'\n];\n","'use strict';\nvar userAgent = require('../internals/environment-user-agent');\n\n// eslint-disable-next-line redos/no-vulnerable -- safe\nmodule.exports = /(?:ipad|iphone|ipod).*applewebkit/i.test(userAgent);\n","'use strict';\nvar ENVIRONMENT = require('../internals/environment');\n\nmodule.exports = ENVIRONMENT === 'NODE';\n","'use strict';\nvar globalThis = require('../internals/global-this');\n\nvar navigator = globalThis.navigator;\nvar userAgent = navigator && navigator.userAgent;\n\nmodule.exports = userAgent ? String(userAgent) : '';\n","'use strict';\nvar globalThis = require('../internals/global-this');\nvar userAgent = require('../internals/environment-user-agent');\n\nvar process = globalThis.process;\nvar Deno = globalThis.Deno;\nvar versions = process && process.versions || Deno && Deno.version;\nvar v8 = versions && versions.v8;\nvar match, version;\n\nif (v8) {\n  match = v8.split('.');\n  // in old Chrome, versions of V8 isn't V8 = Chrome / 10\n  // but their correct versions are not interesting for us\n  version = match[0] > 0 && match[0] < 4 ? 1 : +(match[0] + match[1]);\n}\n\n// BrowserFS NodeJS `process` polyfill incorrectly set `.v8` to `0.0`\n// so check `userAgent` even if `.v8` exists, but 0\nif (!version && userAgent) {\n  match = userAgent.match(/Edge\\/(\\d+)/);\n  if (!match || match[1] >= 74) {\n    match = userAgent.match(/Chrome\\/(\\d+)/);\n    if (match) version = +match[1];\n  }\n}\n\nmodule.exports = version;\n","'use strict';\n/* global Bun, Deno -- detection */\nvar globalThis = require('../internals/global-this');\nvar userAgent = require('../internals/environment-user-agent');\nvar classof = require('../internals/classof-raw');\n\nvar userAgentStartsWith = function (string) {\n  return userAgent.slice(0, string.length) === string;\n};\n\nmodule.exports = (function () {\n  if (userAgentStartsWith('Bun/')) return 'BUN';\n  if (userAgentStartsWith('Cloudflare-Workers')) return 'CLOUDFLARE';\n  if (userAgentStartsWith('Deno/')) return 'DENO';\n  if (userAgentStartsWith('Node.js/')) return 'NODE';\n  if (globalThis.Bun && typeof Bun.version == 'string') return 'BUN';\n  if (globalThis.Deno && typeof Deno.version == 'object') return 'DENO';\n  if (classof(globalThis.process) === 'process') return 'NODE';\n  if (globalThis.window && globalThis.document) return 'BROWSER';\n  return 'REST';\n})();\n","'use strict';\nvar globalThis = require('../internals/global-this');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar defineGlobalProperty = require('../internals/define-global-property');\nvar copyConstructorProperties = require('../internals/copy-constructor-properties');\nvar isForced = require('../internals/is-forced');\n\n/*\n  options.target         - name of the target object\n  options.global         - target is the global object\n  options.stat           - export as static methods of target\n  options.proto          - export as prototype methods of target\n  options.real           - real prototype method for the `pure` version\n  options.forced         - export even if the native feature is available\n  options.bind           - bind methods to the target, required for the `pure` version\n  options.wrap           - wrap constructors to preventing global pollution, required for the `pure` version\n  options.unsafe         - use the simple assignment of property instead of delete + defineProperty\n  options.sham           - add a flag to not completely full polyfills\n  options.enumerable     - export as enumerable property\n  options.dontCallGetSet - prevent calling a getter on target\n  options.name           - the .name of the function if it does not match the key\n*/\nmodule.exports = function (options, source) {\n  var TARGET = options.target;\n  var GLOBAL = options.global;\n  var STATIC = options.stat;\n  var FORCED, target, key, targetProperty, sourceProperty, descriptor;\n  if (GLOBAL) {\n    target = globalThis;\n  } else if (STATIC) {\n    target = globalThis[TARGET] || defineGlobalProperty(TARGET, {});\n  } else {\n    target = globalThis[TARGET] && globalThis[TARGET].prototype;\n  }\n  if (target) for (key in source) {\n    sourceProperty = source[key];\n    if (options.dontCallGetSet) {\n      descriptor = getOwnPropertyDescriptor(target, key);\n      targetProperty = descriptor && descriptor.value;\n    } else targetProperty = target[key];\n    FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced);\n    // contained in target\n    if (!FORCED && targetProperty !== undefined) {\n      if (typeof sourceProperty == typeof targetProperty) continue;\n      copyConstructorProperties(sourceProperty, targetProperty);\n    }\n    // add a flag to not completely full polyfills\n    if (options.sham || (targetProperty && targetProperty.sham)) {\n      createNonEnumerableProperty(sourceProperty, 'sham', true);\n    }\n    defineBuiltIn(target, key, sourceProperty, options);\n  }\n};\n","'use strict';\nmodule.exports = function (exec) {\n  try {\n    return !!exec();\n  } catch (error) {\n    return true;\n  }\n};\n","'use strict';\nvar NATIVE_BIND = require('../internals/function-bind-native');\n\nvar FunctionPrototype = Function.prototype;\nvar apply = FunctionPrototype.apply;\nvar call = FunctionPrototype.call;\n\n// eslint-disable-next-line es/no-reflect -- safe\nmodule.exports = typeof Reflect == 'object' && Reflect.apply || (NATIVE_BIND ? call.bind(apply) : function () {\n  return call.apply(apply, arguments);\n});\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this-clause');\nvar aCallable = require('../internals/a-callable');\nvar NATIVE_BIND = require('../internals/function-bind-native');\n\nvar bind = uncurryThis(uncurryThis.bind);\n\n// optional / simple context binding\nmodule.exports = function (fn, that) {\n  aCallable(fn);\n  return that === undefined ? fn : NATIVE_BIND ? bind(fn, that) : function (/* ...args */) {\n    return fn.apply(that, arguments);\n  };\n};\n","'use strict';\nvar fails = require('../internals/fails');\n\nmodule.exports = !fails(function () {\n  // eslint-disable-next-line es/no-function-prototype-bind -- safe\n  var test = (function () { /* empty */ }).bind();\n  // eslint-disable-next-line no-prototype-builtins -- safe\n  return typeof test != 'function' || test.hasOwnProperty('prototype');\n});\n","'use strict';\nvar NATIVE_BIND = require('../internals/function-bind-native');\n\nvar call = Function.prototype.call;\n\nmodule.exports = NATIVE_BIND ? call.bind(call) : function () {\n  return call.apply(call, arguments);\n};\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar hasOwn = require('../internals/has-own-property');\n\nvar FunctionPrototype = Function.prototype;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar getDescriptor = DESCRIPTORS && Object.getOwnPropertyDescriptor;\n\nvar EXISTS = hasOwn(FunctionPrototype, 'name');\n// additional protection from minified / mangled / dropped function names\nvar PROPER = EXISTS && (function something() { /* empty */ }).name === 'something';\nvar CONFIGURABLE = EXISTS && (!DESCRIPTORS || (DESCRIPTORS && getDescriptor(FunctionPrototype, 'name').configurable));\n\nmodule.exports = {\n  EXISTS: EXISTS,\n  PROPER: PROPER,\n  CONFIGURABLE: CONFIGURABLE\n};\n","'use strict';\nvar classofRaw = require('../internals/classof-raw');\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nmodule.exports = function (fn) {\n  // Nashorn bug:\n  //   https://github.com/zloirock/core-js/issues/1128\n  //   https://github.com/zloirock/core-js/issues/1130\n  if (classofRaw(fn) === 'Function') return uncurryThis(fn);\n};\n","'use strict';\nvar NATIVE_BIND = require('../internals/function-bind-native');\n\nvar FunctionPrototype = Function.prototype;\nvar call = FunctionPrototype.call;\nvar uncurryThisWithBind = NATIVE_BIND && FunctionPrototype.bind.bind(call, call);\n\nmodule.exports = NATIVE_BIND ? uncurryThisWithBind : function (fn) {\n  return function () {\n    return call.apply(fn, arguments);\n  };\n};\n","'use strict';\nvar globalThis = require('../internals/global-this');\nvar isCallable = require('../internals/is-callable');\n\nvar aFunction = function (argument) {\n  return isCallable(argument) ? argument : undefined;\n};\n\nmodule.exports = function (namespace, method) {\n  return arguments.length < 2 ? aFunction(globalThis[namespace]) : globalThis[namespace] && globalThis[namespace][method];\n};\n","'use strict';\nvar aCallable = require('../internals/a-callable');\nvar isNullOrUndefined = require('../internals/is-null-or-undefined');\n\n// `GetMethod` abstract operation\n// https://tc39.es/ecma262/#sec-getmethod\nmodule.exports = function (V, P) {\n  var func = V[P];\n  return isNullOrUndefined(func) ? undefined : aCallable(func);\n};\n","'use strict';\nvar check = function (it) {\n  return it && it.Math === Math && it;\n};\n\n// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nmodule.exports =\n  // eslint-disable-next-line es/no-global-this -- safe\n  check(typeof globalThis == 'object' && globalThis) ||\n  check(typeof window == 'object' && window) ||\n  // eslint-disable-next-line no-restricted-globals -- safe\n  check(typeof self == 'object' && self) ||\n  check(typeof global == 'object' && global) ||\n  check(typeof this == 'object' && this) ||\n  // eslint-disable-next-line no-new-func -- fallback\n  (function () { return this; })() || Function('return this')();\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar toObject = require('../internals/to-object');\n\nvar hasOwnProperty = uncurryThis({}.hasOwnProperty);\n\n// `HasOwnProperty` abstract operation\n// https://tc39.es/ecma262/#sec-hasownproperty\n// eslint-disable-next-line es/no-object-hasown -- safe\nmodule.exports = Object.hasOwn || function hasOwn(it, key) {\n  return hasOwnProperty(toObject(it), key);\n};\n","'use strict';\nmodule.exports = {};\n","'use strict';\nvar getBuiltIn = require('../internals/get-built-in');\n\nmodule.exports = getBuiltIn('document', 'documentElement');\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\nvar createElement = require('../internals/document-create-element');\n\n// Thanks to IE8 for its funny defineProperty\nmodule.exports = !DESCRIPTORS && !fails(function () {\n  // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n  return Object.defineProperty(createElement('div'), 'a', {\n    get: function () { return 7; }\n  }).a !== 7;\n});\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar fails = require('../internals/fails');\nvar classof = require('../internals/classof-raw');\n\nvar $Object = Object;\nvar split = uncurryThis(''.split);\n\n// fallback for non-array-like ES3 and non-enumerable old V8 strings\nmodule.exports = fails(function () {\n  // throws an error in rhino, see https://github.com/mozilla/rhino/issues/346\n  // eslint-disable-next-line no-prototype-builtins -- safe\n  return !$Object('z').propertyIsEnumerable(0);\n}) ? function (it) {\n  return classof(it) === 'String' ? split(it, '') : $Object(it);\n} : $Object;\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar isCallable = require('../internals/is-callable');\nvar store = require('../internals/shared-store');\n\nvar functionToString = uncurryThis(Function.toString);\n\n// this helper broken in `core-js@3.4.1-3.4.4`, so we can't use `shared` helper\nif (!isCallable(store.inspectSource)) {\n  store.inspectSource = function (it) {\n    return functionToString(it);\n  };\n}\n\nmodule.exports = store.inspectSource;\n","'use strict';\nvar NATIVE_WEAK_MAP = require('../internals/weak-map-basic-detection');\nvar globalThis = require('../internals/global-this');\nvar isObject = require('../internals/is-object');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar hasOwn = require('../internals/has-own-property');\nvar shared = require('../internals/shared-store');\nvar sharedKey = require('../internals/shared-key');\nvar hiddenKeys = require('../internals/hidden-keys');\n\nvar OBJECT_ALREADY_INITIALIZED = 'Object already initialized';\nvar TypeError = globalThis.TypeError;\nvar WeakMap = globalThis.WeakMap;\nvar set, get, has;\n\nvar enforce = function (it) {\n  return has(it) ? get(it) : set(it, {});\n};\n\nvar getterFor = function (TYPE) {\n  return function (it) {\n    var state;\n    if (!isObject(it) || (state = get(it)).type !== TYPE) {\n      throw new TypeError('Incompatible receiver, ' + TYPE + ' required');\n    } return state;\n  };\n};\n\nif (NATIVE_WEAK_MAP || shared.state) {\n  var store = shared.state || (shared.state = new WeakMap());\n  /* eslint-disable no-self-assign -- prototype methods protection */\n  store.get = store.get;\n  store.has = store.has;\n  store.set = store.set;\n  /* eslint-enable no-self-assign -- prototype methods protection */\n  set = function (it, metadata) {\n    if (store.has(it)) throw new TypeError(OBJECT_ALREADY_INITIALIZED);\n    metadata.facade = it;\n    store.set(it, metadata);\n    return metadata;\n  };\n  get = function (it) {\n    return store.get(it) || {};\n  };\n  has = function (it) {\n    return store.has(it);\n  };\n} else {\n  var STATE = sharedKey('state');\n  hiddenKeys[STATE] = true;\n  set = function (it, metadata) {\n    if (hasOwn(it, STATE)) throw new TypeError(OBJECT_ALREADY_INITIALIZED);\n    metadata.facade = it;\n    createNonEnumerableProperty(it, STATE, metadata);\n    return metadata;\n  };\n  get = function (it) {\n    return hasOwn(it, STATE) ? it[STATE] : {};\n  };\n  has = function (it) {\n    return hasOwn(it, STATE);\n  };\n}\n\nmodule.exports = {\n  set: set,\n  get: get,\n  has: has,\n  enforce: enforce,\n  getterFor: getterFor\n};\n","'use strict';\n// https://tc39.es/ecma262/#sec-IsHTMLDDA-internal-slot\nvar documentAll = typeof document == 'object' && document.all;\n\n// `IsCallable` abstract operation\n// https://tc39.es/ecma262/#sec-iscallable\n// eslint-disable-next-line unicorn/no-typeof-undefined -- required for testing\nmodule.exports = typeof documentAll == 'undefined' && documentAll !== undefined ? function (argument) {\n  return typeof argument == 'function' || argument === documentAll;\n} : function (argument) {\n  return typeof argument == 'function';\n};\n","'use strict';\nvar fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\n\nvar replacement = /#|\\.prototype\\./;\n\nvar isForced = function (feature, detection) {\n  var value = data[normalize(feature)];\n  return value === POLYFILL ? true\n    : value === NATIVE ? false\n    : isCallable(detection) ? fails(detection)\n    : !!detection;\n};\n\nvar normalize = isForced.normalize = function (string) {\n  return String(string).replace(replacement, '.').toLowerCase();\n};\n\nvar data = isForced.data = {};\nvar NATIVE = isForced.NATIVE = 'N';\nvar POLYFILL = isForced.POLYFILL = 'P';\n\nmodule.exports = isForced;\n","'use strict';\n// we can't use just `it == null` since of `document.all` special case\n// https://tc39.es/ecma262/#sec-IsHTMLDDA-internal-slot-aec\nmodule.exports = function (it) {\n  return it === null || it === undefined;\n};\n","'use strict';\nvar isCallable = require('../internals/is-callable');\n\nmodule.exports = function (it) {\n  return typeof it == 'object' ? it !== null : isCallable(it);\n};\n","'use strict';\nmodule.exports = false;\n","'use strict';\nvar getBuiltIn = require('../internals/get-built-in');\nvar isCallable = require('../internals/is-callable');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\n\nvar $Object = Object;\n\nmodule.exports = USE_SYMBOL_AS_UID ? function (it) {\n  return typeof it == 'symbol';\n} : function (it) {\n  var $Symbol = getBuiltIn('Symbol');\n  return isCallable($Symbol) && isPrototypeOf($Symbol.prototype, $Object(it));\n};\n","'use strict';\nvar toLength = require('../internals/to-length');\n\n// `LengthOfArrayLike` abstract operation\n// https://tc39.es/ecma262/#sec-lengthofarraylike\nmodule.exports = function (obj) {\n  return toLength(obj.length);\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\nvar hasOwn = require('../internals/has-own-property');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar CONFIGURABLE_FUNCTION_NAME = require('../internals/function-name').CONFIGURABLE;\nvar inspectSource = require('../internals/inspect-source');\nvar InternalStateModule = require('../internals/internal-state');\n\nvar enforceInternalState = InternalStateModule.enforce;\nvar getInternalState = InternalStateModule.get;\nvar $String = String;\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar defineProperty = Object.defineProperty;\nvar stringSlice = uncurryThis(''.slice);\nvar replace = uncurryThis(''.replace);\nvar join = uncurryThis([].join);\n\nvar CONFIGURABLE_LENGTH = DESCRIPTORS && !fails(function () {\n  return defineProperty(function () { /* empty */ }, 'length', { value: 8 }).length !== 8;\n});\n\nvar TEMPLATE = String(String).split('String');\n\nvar makeBuiltIn = module.exports = function (value, name, options) {\n  if (stringSlice($String(name), 0, 7) === 'Symbol(') {\n    name = '[' + replace($String(name), /^Symbol\\(([^)]*)\\).*$/, '$1') + ']';\n  }\n  if (options && options.getter) name = 'get ' + name;\n  if (options && options.setter) name = 'set ' + name;\n  if (!hasOwn(value, 'name') || (CONFIGURABLE_FUNCTION_NAME && value.name !== name)) {\n    if (DESCRIPTORS) defineProperty(value, 'name', { value: name, configurable: true });\n    else value.name = name;\n  }\n  if (CONFIGURABLE_LENGTH && options && hasOwn(options, 'arity') && value.length !== options.arity) {\n    defineProperty(value, 'length', { value: options.arity });\n  }\n  try {\n    if (options && hasOwn(options, 'constructor') && options.constructor) {\n      if (DESCRIPTORS) defineProperty(value, 'prototype', { writable: false });\n    // in V8 ~ Chrome 53, prototypes of some methods, like `Array.prototype.values`, are non-writable\n    } else if (value.prototype) value.prototype = undefined;\n  } catch (error) { /* empty */ }\n  var state = enforceInternalState(value);\n  if (!hasOwn(state, 'source')) {\n    state.source = join(TEMPLATE, typeof name == 'string' ? name : '');\n  } return value;\n};\n\n// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n// eslint-disable-next-line no-extend-native -- required\nFunction.prototype.toString = makeBuiltIn(function toString() {\n  return isCallable(this) && getInternalState(this).source || inspectSource(this);\n}, 'toString');\n","'use strict';\nvar ceil = Math.ceil;\nvar floor = Math.floor;\n\n// `Math.trunc` method\n// https://tc39.es/ecma262/#sec-math.trunc\n// eslint-disable-next-line es/no-math-trunc -- safe\nmodule.exports = Math.trunc || function trunc(x) {\n  var n = +x;\n  return (n > 0 ? floor : ceil)(n);\n};\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\nvar V8_PROTOTYPE_DEFINE_BUG = require('../internals/v8-prototype-define-bug');\nvar anObject = require('../internals/an-object');\nvar toPropertyKey = require('../internals/to-property-key');\n\nvar $TypeError = TypeError;\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar $defineProperty = Object.defineProperty;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar ENUMERABLE = 'enumerable';\nvar CONFIGURABLE = 'configurable';\nvar WRITABLE = 'writable';\n\n// `Object.defineProperty` method\n// https://tc39.es/ecma262/#sec-object.defineproperty\nexports.f = DESCRIPTORS ? V8_PROTOTYPE_DEFINE_BUG ? function defineProperty(O, P, Attributes) {\n  anObject(O);\n  P = toPropertyKey(P);\n  anObject(Attributes);\n  if (typeof O === 'function' && P === 'prototype' && 'value' in Attributes && WRITABLE in Attributes && !Attributes[WRITABLE]) {\n    var current = $getOwnPropertyDescriptor(O, P);\n    if (current && current[WRITABLE]) {\n      O[P] = Attributes.value;\n      Attributes = {\n        configurable: CONFIGURABLE in Attributes ? Attributes[CONFIGURABLE] : current[CONFIGURABLE],\n        enumerable: ENUMERABLE in Attributes ? Attributes[ENUMERABLE] : current[ENUMERABLE],\n        writable: false\n      };\n    }\n  } return $defineProperty(O, P, Attributes);\n} : $defineProperty : function defineProperty(O, P, Attributes) {\n  anObject(O);\n  P = toPropertyKey(P);\n  anObject(Attributes);\n  if (IE8_DOM_DEFINE) try {\n    return $defineProperty(O, P, Attributes);\n  } catch (error) { /* empty */ }\n  if ('get' in Attributes || 'set' in Attributes) throw new $TypeError('Accessors not supported');\n  if ('value' in Attributes) O[P] = Attributes.value;\n  return O;\n};\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar call = require('../internals/function-call');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toPropertyKey = require('../internals/to-property-key');\nvar hasOwn = require('../internals/has-own-property');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\n\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// `Object.getOwnPropertyDescriptor` method\n// https://tc39.es/ecma262/#sec-object.getownpropertydescriptor\nexports.f = DESCRIPTORS ? $getOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) {\n  O = toIndexedObject(O);\n  P = toPropertyKey(P);\n  if (IE8_DOM_DEFINE) try {\n    return $getOwnPropertyDescriptor(O, P);\n  } catch (error) { /* empty */ }\n  if (hasOwn(O, P)) return createPropertyDescriptor(!call(propertyIsEnumerableModule.f, O, P), O[P]);\n};\n","'use strict';\nvar internalObjectKeys = require('../internals/object-keys-internal');\nvar enumBugKeys = require('../internals/enum-bug-keys');\n\nvar hiddenKeys = enumBugKeys.concat('length', 'prototype');\n\n// `Object.getOwnPropertyNames` method\n// https://tc39.es/ecma262/#sec-object.getownpropertynames\n// eslint-disable-next-line es/no-object-getownpropertynames -- safe\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n  return internalObjectKeys(O, hiddenKeys);\n};\n","'use strict';\n// eslint-disable-next-line es/no-object-getownpropertysymbols -- safe\nexports.f = Object.getOwnPropertySymbols;\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nmodule.exports = uncurryThis({}.isPrototypeOf);\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar hasOwn = require('../internals/has-own-property');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar indexOf = require('../internals/array-includes').indexOf;\nvar hiddenKeys = require('../internals/hidden-keys');\n\nvar push = uncurryThis([].push);\n\nmodule.exports = function (object, names) {\n  var O = toIndexedObject(object);\n  var i = 0;\n  var result = [];\n  var key;\n  for (key in O) !hasOwn(hiddenKeys, key) && hasOwn(O, key) && push(result, key);\n  // Don't enum bug & hidden keys\n  while (names.length > i) if (hasOwn(O, key = names[i++])) {\n    ~indexOf(result, key) || push(result, key);\n  }\n  return result;\n};\n","'use strict';\nvar $propertyIsEnumerable = {}.propertyIsEnumerable;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// Nashorn ~ JDK8 bug\nvar NASHORN_BUG = getOwnPropertyDescriptor && !$propertyIsEnumerable.call({ 1: 2 }, 1);\n\n// `Object.prototype.propertyIsEnumerable` method implementation\n// https://tc39.es/ecma262/#sec-object.prototype.propertyisenumerable\nexports.f = NASHORN_BUG ? function propertyIsEnumerable(V) {\n  var descriptor = getOwnPropertyDescriptor(this, V);\n  return !!descriptor && descriptor.enumerable;\n} : $propertyIsEnumerable;\n","'use strict';\nvar call = require('../internals/function-call');\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\n\nvar $TypeError = TypeError;\n\n// `OrdinaryToPrimitive` abstract operation\n// https://tc39.es/ecma262/#sec-ordinarytoprimitive\nmodule.exports = function (input, pref) {\n  var fn, val;\n  if (pref === 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val;\n  if (isCallable(fn = input.valueOf) && !isObject(val = call(fn, input))) return val;\n  if (pref !== 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val;\n  throw new $TypeError(\"Can't convert object to primitive value\");\n};\n","'use strict';\nvar getBuiltIn = require('../internals/get-built-in');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar getOwnPropertyNamesModule = require('../internals/object-get-own-property-names');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar anObject = require('../internals/an-object');\n\nvar concat = uncurryThis([].concat);\n\n// all object keys, includes non-enumerable and symbols\nmodule.exports = getBuiltIn('Reflect', 'ownKeys') || function ownKeys(it) {\n  var keys = getOwnPropertyNamesModule.f(anObject(it));\n  var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n  return getOwnPropertySymbols ? concat(keys, getOwnPropertySymbols(it)) : keys;\n};\n","'use strict';\nvar anObject = require('../internals/an-object');\n\n// `RegExp.prototype.flags` getter implementation\n// https://tc39.es/ecma262/#sec-get-regexp.prototype.flags\nmodule.exports = function () {\n  var that = anObject(this);\n  var result = '';\n  if (that.hasIndices) result += 'd';\n  if (that.global) result += 'g';\n  if (that.ignoreCase) result += 'i';\n  if (that.multiline) result += 'm';\n  if (that.dotAll) result += 's';\n  if (that.unicode) result += 'u';\n  if (that.unicodeSets) result += 'v';\n  if (that.sticky) result += 'y';\n  return result;\n};\n","'use strict';\nvar isNullOrUndefined = require('../internals/is-null-or-undefined');\n\nvar $TypeError = TypeError;\n\n// `RequireObjectCoercible` abstract operation\n// https://tc39.es/ecma262/#sec-requireobjectcoercible\nmodule.exports = function (it) {\n  if (isNullOrUndefined(it)) throw new $TypeError(\"Can't call method on \" + it);\n  return it;\n};\n","'use strict';\nvar globalThis = require('../internals/global-this');\nvar apply = require('../internals/function-apply');\nvar isCallable = require('../internals/is-callable');\nvar ENVIRONMENT = require('../internals/environment');\nvar USER_AGENT = require('../internals/environment-user-agent');\nvar arraySlice = require('../internals/array-slice');\nvar validateArgumentsLength = require('../internals/validate-arguments-length');\n\nvar Function = globalThis.Function;\n// dirty IE9- and Bun 0.3.0- checks\nvar WRAP = /MSIE .\\./.test(USER_AGENT) || ENVIRONMENT === 'BUN' && (function () {\n  var version = globalThis.Bun.version.split('.');\n  return version.length < 3 || version[0] === '0' && (version[1] < 3 || version[1] === '3' && version[2] === '0');\n})();\n\n// IE9- / Bun 0.3.0- setTimeout / setInterval / setImmediate additional parameters fix\n// https://html.spec.whatwg.org/multipage/timers-and-user-prompts.html#timers\n// https://github.com/oven-sh/bun/issues/1633\nmodule.exports = function (scheduler, hasTimeArg) {\n  var firstParamIndex = hasTimeArg ? 2 : 1;\n  return WRAP ? function (handler, timeout /* , ...arguments */) {\n    var boundArgs = validateArgumentsLength(arguments.length, 1) > firstParamIndex;\n    var fn = isCallable(handler) ? handler : Function(handler);\n    var params = boundArgs ? arraySlice(arguments, firstParamIndex) : [];\n    var callback = boundArgs ? function () {\n      apply(fn, this, params);\n    } : fn;\n    return hasTimeArg ? scheduler(callback, timeout) : scheduler(callback);\n  } : scheduler;\n};\n","'use strict';\nvar shared = require('../internals/shared');\nvar uid = require('../internals/uid');\n\nvar keys = shared('keys');\n\nmodule.exports = function (key) {\n  return keys[key] || (keys[key] = uid(key));\n};\n","'use strict';\nvar IS_PURE = require('../internals/is-pure');\nvar globalThis = require('../internals/global-this');\nvar defineGlobalProperty = require('../internals/define-global-property');\n\nvar SHARED = '__core-js_shared__';\nvar store = module.exports = globalThis[SHARED] || defineGlobalProperty(SHARED, {});\n\n(store.versions || (store.versions = [])).push({\n  version: '3.39.0',\n  mode: IS_PURE ? 'pure' : 'global',\n  copyright: '© 2014-2024 Denis Pushkarev (zloirock.ru)',\n  license: 'https://github.com/zloirock/core-js/blob/v3.39.0/LICENSE',\n  source: 'https://github.com/zloirock/core-js'\n});\n","'use strict';\nvar store = require('../internals/shared-store');\n\nmodule.exports = function (key, value) {\n  return store[key] || (store[key] = value || {});\n};\n","'use strict';\n/* eslint-disable es/no-symbol -- required for testing */\nvar V8_VERSION = require('../internals/environment-v8-version');\nvar fails = require('../internals/fails');\nvar globalThis = require('../internals/global-this');\n\nvar $String = globalThis.String;\n\n// eslint-disable-next-line es/no-object-getownpropertysymbols -- required for testing\nmodule.exports = !!Object.getOwnPropertySymbols && !fails(function () {\n  var symbol = Symbol('symbol detection');\n  // Chrome 38 Symbol has incorrect toString conversion\n  // `get-own-property-symbols` polyfill symbols converted to object are not Symbol instances\n  // nb: Do not call `String` directly to avoid this being optimized out to `symbol+''` which will,\n  // of course, fail.\n  return !$String(symbol) || !(Object(symbol) instanceof Symbol) ||\n    // Chrome 38-40 symbols are not inherited from DOM collections prototypes to instances\n    !Symbol.sham && V8_VERSION && V8_VERSION < 41;\n});\n","'use strict';\nvar globalThis = require('../internals/global-this');\nvar apply = require('../internals/function-apply');\nvar bind = require('../internals/function-bind-context');\nvar isCallable = require('../internals/is-callable');\nvar hasOwn = require('../internals/has-own-property');\nvar fails = require('../internals/fails');\nvar html = require('../internals/html');\nvar arraySlice = require('../internals/array-slice');\nvar createElement = require('../internals/document-create-element');\nvar validateArgumentsLength = require('../internals/validate-arguments-length');\nvar IS_IOS = require('../internals/environment-is-ios');\nvar IS_NODE = require('../internals/environment-is-node');\n\nvar set = globalThis.setImmediate;\nvar clear = globalThis.clearImmediate;\nvar process = globalThis.process;\nvar Dispatch = globalThis.Dispatch;\nvar Function = globalThis.Function;\nvar MessageChannel = globalThis.MessageChannel;\nvar String = globalThis.String;\nvar counter = 0;\nvar queue = {};\nvar ONREADYSTATECHANGE = 'onreadystatechange';\nvar $location, defer, channel, port;\n\nfails(function () {\n  // Deno throws a ReferenceError on `location` access without `--location` flag\n  $location = globalThis.location;\n});\n\nvar run = function (id) {\n  if (hasOwn(queue, id)) {\n    var fn = queue[id];\n    delete queue[id];\n    fn();\n  }\n};\n\nvar runner = function (id) {\n  return function () {\n    run(id);\n  };\n};\n\nvar eventListener = function (event) {\n  run(event.data);\n};\n\nvar globalPostMessageDefer = function (id) {\n  // old engines have not location.origin\n  globalThis.postMessage(String(id), $location.protocol + '//' + $location.host);\n};\n\n// Node.js 0.9+ & IE10+ has setImmediate, otherwise:\nif (!set || !clear) {\n  set = function setImmediate(handler) {\n    validateArgumentsLength(arguments.length, 1);\n    var fn = isCallable(handler) ? handler : Function(handler);\n    var args = arraySlice(arguments, 1);\n    queue[++counter] = function () {\n      apply(fn, undefined, args);\n    };\n    defer(counter);\n    return counter;\n  };\n  clear = function clearImmediate(id) {\n    delete queue[id];\n  };\n  // Node.js 0.8-\n  if (IS_NODE) {\n    defer = function (id) {\n      process.nextTick(runner(id));\n    };\n  // Sphere (JS game engine) Dispatch API\n  } else if (Dispatch && Dispatch.now) {\n    defer = function (id) {\n      Dispatch.now(runner(id));\n    };\n  // Browsers with MessageChannel, includes WebWorkers\n  // except iOS - https://github.com/zloirock/core-js/issues/624\n  } else if (MessageChannel && !IS_IOS) {\n    channel = new MessageChannel();\n    port = channel.port2;\n    channel.port1.onmessage = eventListener;\n    defer = bind(port.postMessage, port);\n  // Browsers with postMessage, skip WebWorkers\n  // IE8 has postMessage, but it's sync & typeof its postMessage is 'object'\n  } else if (\n    globalThis.addEventListener &&\n    isCallable(globalThis.postMessage) &&\n    !globalThis.importScripts &&\n    $location && $location.protocol !== 'file:' &&\n    !fails(globalPostMessageDefer)\n  ) {\n    defer = globalPostMessageDefer;\n    globalThis.addEventListener('message', eventListener, false);\n  // IE8-\n  } else if (ONREADYSTATECHANGE in createElement('script')) {\n    defer = function (id) {\n      html.appendChild(createElement('script'))[ONREADYSTATECHANGE] = function () {\n        html.removeChild(this);\n        run(id);\n      };\n    };\n  // Rest old browsers\n  } else {\n    defer = function (id) {\n      setTimeout(runner(id), 0);\n    };\n  }\n}\n\nmodule.exports = {\n  set: set,\n  clear: clear\n};\n","'use strict';\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\n\nvar max = Math.max;\nvar min = Math.min;\n\n// Helper for a popular repeating case of the spec:\n// Let integer be ? ToInteger(index).\n// If integer < 0, let result be max((length + integer), 0); else let result be min(integer, length).\nmodule.exports = function (index, length) {\n  var integer = toIntegerOrInfinity(index);\n  return integer < 0 ? max(integer + length, 0) : min(integer, length);\n};\n","'use strict';\n// toObject with fallback for non-array-like ES3 strings\nvar IndexedObject = require('../internals/indexed-object');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nmodule.exports = function (it) {\n  return IndexedObject(requireObjectCoercible(it));\n};\n","'use strict';\nvar trunc = require('../internals/math-trunc');\n\n// `ToIntegerOrInfinity` abstract operation\n// https://tc39.es/ecma262/#sec-tointegerorinfinity\nmodule.exports = function (argument) {\n  var number = +argument;\n  // eslint-disable-next-line no-self-compare -- NaN check\n  return number !== number || number === 0 ? 0 : trunc(number);\n};\n","'use strict';\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\n\nvar min = Math.min;\n\n// `ToLength` abstract operation\n// https://tc39.es/ecma262/#sec-tolength\nmodule.exports = function (argument) {\n  var len = toIntegerOrInfinity(argument);\n  return len > 0 ? min(len, 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991\n};\n","'use strict';\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nvar $Object = Object;\n\n// `ToObject` abstract operation\n// https://tc39.es/ecma262/#sec-toobject\nmodule.exports = function (argument) {\n  return $Object(requireObjectCoercible(argument));\n};\n","'use strict';\nvar call = require('../internals/function-call');\nvar isObject = require('../internals/is-object');\nvar isSymbol = require('../internals/is-symbol');\nvar getMethod = require('../internals/get-method');\nvar ordinaryToPrimitive = require('../internals/ordinary-to-primitive');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar $TypeError = TypeError;\nvar TO_PRIMITIVE = wellKnownSymbol('toPrimitive');\n\n// `ToPrimitive` abstract operation\n// https://tc39.es/ecma262/#sec-toprimitive\nmodule.exports = function (input, pref) {\n  if (!isObject(input) || isSymbol(input)) return input;\n  var exoticToPrim = getMethod(input, TO_PRIMITIVE);\n  var result;\n  if (exoticToPrim) {\n    if (pref === undefined) pref = 'default';\n    result = call(exoticToPrim, input, pref);\n    if (!isObject(result) || isSymbol(result)) return result;\n    throw new $TypeError(\"Can't convert object to primitive value\");\n  }\n  if (pref === undefined) pref = 'number';\n  return ordinaryToPrimitive(input, pref);\n};\n","'use strict';\nvar toPrimitive = require('../internals/to-primitive');\nvar isSymbol = require('../internals/is-symbol');\n\n// `ToPropertyKey` abstract operation\n// https://tc39.es/ecma262/#sec-topropertykey\nmodule.exports = function (argument) {\n  var key = toPrimitive(argument, 'string');\n  return isSymbol(key) ? key : key + '';\n};\n","'use strict';\nvar $String = String;\n\nmodule.exports = function (argument) {\n  try {\n    return $String(argument);\n  } catch (error) {\n    return 'Object';\n  }\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nvar id = 0;\nvar postfix = Math.random();\nvar toString = uncurryThis(1.0.toString);\n\nmodule.exports = function (key) {\n  return 'Symbol(' + (key === undefined ? '' : key) + ')_' + toString(++id + postfix, 36);\n};\n","'use strict';\n/* eslint-disable es/no-symbol -- required for testing */\nvar NATIVE_SYMBOL = require('../internals/symbol-constructor-detection');\n\nmodule.exports = NATIVE_SYMBOL &&\n  !Symbol.sham &&\n  typeof Symbol.iterator == 'symbol';\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\n\n// V8 ~ Chrome 36-\n// https://bugs.chromium.org/p/v8/issues/detail?id=3334\nmodule.exports = DESCRIPTORS && fails(function () {\n  // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n  return Object.defineProperty(function () { /* empty */ }, 'prototype', {\n    value: 42,\n    writable: false\n  }).prototype !== 42;\n});\n","'use strict';\nvar $TypeError = TypeError;\n\nmodule.exports = function (passed, required) {\n  if (passed < required) throw new $TypeError('Not enough arguments');\n  return passed;\n};\n","'use strict';\nvar globalThis = require('../internals/global-this');\nvar isCallable = require('../internals/is-callable');\n\nvar WeakMap = globalThis.WeakMap;\n\nmodule.exports = isCallable(WeakMap) && /native code/.test(String(WeakMap));\n","'use strict';\nvar globalThis = require('../internals/global-this');\nvar shared = require('../internals/shared');\nvar hasOwn = require('../internals/has-own-property');\nvar uid = require('../internals/uid');\nvar NATIVE_SYMBOL = require('../internals/symbol-constructor-detection');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\n\nvar Symbol = globalThis.Symbol;\nvar WellKnownSymbolsStore = shared('wks');\nvar createWellKnownSymbol = USE_SYMBOL_AS_UID ? Symbol['for'] || Symbol : Symbol && Symbol.withoutSetter || uid;\n\nmodule.exports = function (name) {\n  if (!hasOwn(WellKnownSymbolsStore, name)) {\n    WellKnownSymbolsStore[name] = NATIVE_SYMBOL && hasOwn(Symbol, name)\n      ? Symbol[name]\n      : createWellKnownSymbol('Symbol.' + name);\n  } return WellKnownSymbolsStore[name];\n};\n","'use strict';\nvar globalThis = require('../internals/global-this');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar defineBuiltInAccessor = require('../internals/define-built-in-accessor');\nvar regExpFlags = require('../internals/regexp-flags');\nvar fails = require('../internals/fails');\n\n// babel-minify and Closure Compiler transpiles RegExp('.', 'd') -> /./d and it causes SyntaxError\nvar RegExp = globalThis.RegExp;\nvar RegExpPrototype = RegExp.prototype;\n\nvar FORCED = DESCRIPTORS && fails(function () {\n  var INDICES_SUPPORT = true;\n  try {\n    RegExp('.', 'd');\n  } catch (error) {\n    INDICES_SUPPORT = false;\n  }\n\n  var O = {};\n  // modern V8 bug\n  var calls = '';\n  var expected = INDICES_SUPPORT ? 'dgimsy' : 'gimsy';\n\n  var addGetter = function (key, chr) {\n    // eslint-disable-next-line es/no-object-defineproperty -- safe\n    Object.defineProperty(O, key, { get: function () {\n      calls += chr;\n      return true;\n    } });\n  };\n\n  var pairs = {\n    dotAll: 's',\n    global: 'g',\n    ignoreCase: 'i',\n    multiline: 'm',\n    sticky: 'y'\n  };\n\n  if (INDICES_SUPPORT) pairs.hasIndices = 'd';\n\n  for (var key in pairs) addGetter(key, pairs[key]);\n\n  // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\n  var result = Object.getOwnPropertyDescriptor(RegExpPrototype, 'flags').get.call(O);\n\n  return result !== expected || calls !== expected;\n});\n\n// `RegExp.prototype.flags` getter\n// https://tc39.es/ecma262/#sec-get-regexp.prototype.flags\nif (FORCED) defineBuiltInAccessor(RegExpPrototype, 'flags', {\n  configurable: true,\n  get: regExpFlags\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar globalThis = require('../internals/global-this');\nvar clearImmediate = require('../internals/task').clear;\n\n// `clearImmediate` method\n// http://w3c.github.io/setImmediate/#si-clearImmediate\n$({ global: true, bind: true, enumerable: true, forced: globalThis.clearImmediate !== clearImmediate }, {\n  clearImmediate: clearImmediate\n});\n","'use strict';\n// TODO: Remove this module from `core-js@4` since it's split to modules listed below\nrequire('../modules/web.clear-immediate');\nrequire('../modules/web.set-immediate');\n","'use strict';\nvar $ = require('../internals/export');\nvar globalThis = require('../internals/global-this');\nvar setTask = require('../internals/task').set;\nvar schedulersFix = require('../internals/schedulers-fix');\n\n// https://github.com/oven-sh/bun/issues/1633\nvar setImmediate = globalThis.setImmediate ? schedulersFix(setTask, false) : setTask;\n\n// `setImmediate` method\n// http://w3c.github.io/setImmediate/#si-setImmediate\n$({ global: true, bind: true, enumerable: true, forced: globalThis.setImmediate !== setImmediate }, {\n  setImmediate: setImmediate\n});\n","\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:true});exports.libraryName=exports.xlsx=exports.getWorksheetColumnWidths=exports.getJsonSheetRow=exports.getContentProperty=exports.utils=void 0;const xlsx_1=require(\"xlsx\");Object.defineProperty(exports,\"utils\",{enumerable:true,get:function(){return xlsx_1.utils}});const getContentProperty=(content,property)=>{const accessContentProperties=(content,properties)=>{const value=content[properties[0]];if(properties.length===1){return value!==null&&value!==void 0?value:\"\"}if(value===undefined||value===null||typeof value===\"string\"||typeof value===\"boolean\"||typeof value===\"number\"||value instanceof Date){return\"\"}return accessContentProperties(value,properties.slice(1))};const properties=property.split(\".\");return accessContentProperties(content,properties)};exports.getContentProperty=getContentProperty;const getJsonSheetRow=(content,columns)=>{const jsonSheetRow={};columns.forEach(column=>{if(typeof column.value===\"function\"){jsonSheetRow[column.label]=column.value(content)}else{jsonSheetRow[column.label]=(0,exports.getContentProperty)(content,column.value)}});return jsonSheetRow};exports.getJsonSheetRow=getJsonSheetRow;const applyColumnFormat=(worksheet,columnIds,columnFormats)=>{var _a;for(let i=0;i<columnIds.length;i+=1){const columnFormat=columnFormats[i];if(!columnFormat){continue}const column=xlsx_1.utils.decode_col(columnIds[i]);const range=xlsx_1.utils.decode_range((_a=worksheet[\"!ref\"])!==null&&_a!==void 0?_a:\"\");for(let row=range.s.r+1;row<=range.e.r;++row){const ref=xlsx_1.utils.encode_cell({r:row,c:column});if(worksheet[ref]){worksheet[ref].z=columnFormat}}}};const getWorksheetColumnIds=worksheet=>{var _a;const columnRange=xlsx_1.utils.decode_range((_a=worksheet[\"!ref\"])!==null&&_a!==void 0?_a:\"\");const columnIds=[];for(let C=columnRange.s.c;C<=columnRange.e.c;C++){const address=xlsx_1.utils.encode_col(C);columnIds.push(address)}return columnIds};const getObjectLength=object=>{if(typeof object===\"string\"){return object.length}if(typeof object===\"number\"){return object.toString().length}if(typeof object===\"boolean\"){return object?\"true\".length:\"false\".length}if(object instanceof Date){return object.toString().length}return 0};const getWorksheetColumnWidths=(worksheet,extraLength=1)=>{const columnLetters=getWorksheetColumnIds(worksheet);return columnLetters.map(column=>{const columnCells=Object.keys(worksheet).filter(cell=>{return cell.replace(/[0-9]/g,\"\")===column});const maxWidthCell=columnCells.reduce((maxWidth,cellId)=>{const cell=worksheet[cellId];const cellContentLength=getObjectLength(cell.v);if(!cell.z){return Math.max(maxWidth,cellContentLength)}const cellFormatLength=cell.z.length;const largestWidth=Math.max(cellContentLength,cellFormatLength);return Math.max(maxWidth,largestWidth)},0);return{width:maxWidthCell+extraLength}})};exports.getWorksheetColumnWidths=getWorksheetColumnWidths;const getWorksheet=(jsonSheet,settings)=>{let jsonSheetRows;if(jsonSheet.content.length>0){jsonSheetRows=jsonSheet.content.map(contentItem=>{return(0,exports.getJsonSheetRow)(contentItem,jsonSheet.columns)})}else{jsonSheetRows=jsonSheet.columns.map(column=>({[column.label]:\"\"}))}const worksheet=xlsx_1.utils.json_to_sheet(jsonSheetRows);const worksheetColumnIds=getWorksheetColumnIds(worksheet);const worksheetColumnFormats=jsonSheet.columns.map(jsonSheetColumn=>{var _a;return(_a=jsonSheetColumn.format)!==null&&_a!==void 0?_a:null});applyColumnFormat(worksheet,worksheetColumnIds,worksheetColumnFormats);worksheet[\"!cols\"]=(0,exports.getWorksheetColumnWidths)(worksheet,settings.extraLength);return worksheet};const writeWorkbook=(workbook,settings={})=>{var _a,_b,_c,_d;var _e;const RTL=Boolean(settings.RTL);(_a=workbook.Workbook)!==null&&_a!==void 0?_a:workbook.Workbook={};(_b=(_e=workbook.Workbook).Views)!==null&&_b!==void 0?_b:_e.Views=[{}];workbook.Workbook.Views.forEach(view=>{view.RTL=RTL});const filename=`${(_c=settings.fileName)!==null&&_c!==void 0?_c:\"Spreadsheet\"}.xlsx`;const writeOptions=(_d=settings.writeOptions)!==null&&_d!==void 0?_d:{};if(settings.writeMode===\"write\"){return(0,xlsx_1.write)(workbook,writeOptions)}else if(settings.writeMode===\"writeFile\"){return(0,xlsx_1.writeFile)(workbook,filename,writeOptions)}else{return writeOptions.type===\"buffer\"?(0,xlsx_1.write)(workbook,writeOptions):(0,xlsx_1.writeFile)(workbook,filename,writeOptions)}};const xlsx=(jsonSheets,settings={},workbookCallback=()=>{})=>{if(jsonSheets.length===0)return;const workbook=xlsx_1.utils.book_new();jsonSheets.forEach((actualSheet,actualIndex)=>{var _a;const worksheet=getWorksheet(actualSheet,settings);const worksheetName=(_a=actualSheet.sheet)!==null&&_a!==void 0?_a:`Sheet ${actualIndex+1}`;xlsx_1.utils.book_append_sheet(workbook,worksheet,worksheetName)});workbookCallback(workbook);return writeWorkbook(workbook,settings)};exports.xlsx=xlsx;exports.default=exports.xlsx;exports.libraryName=\"json-as-xlsx\";module.exports=exports.xlsx;module.exports.getContentProperty=exports.getContentProperty;module.exports.getJsonSheetRow=exports.getJsonSheetRow;module.exports.getWorksheetColumnWidths=exports.getWorksheetColumnWidths;module.exports.utils=xlsx_1.utils;","function _arrayLikeToArray(r, a) {\n  (null == a || a > r.length) && (a = r.length);\n  for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e];\n  return n;\n}\nexport { _arrayLikeToArray as default };","function _assertThisInitialized(e) {\n  if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n  return e;\n}\nexport { _assertThisInitialized as default };","function _classCallCheck(a, n) {\n  if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\");\n}\nexport { _classCallCheck as default };","import toPropertyKey from \"./toPropertyKey.js\";\nfunction _defineProperties(e, r) {\n  for (var t = 0; t < r.length; t++) {\n    var o = r[t];\n    o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, toPropertyKey(o.key), o);\n  }\n}\nfunction _createClass(e, r, t) {\n  return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", {\n    writable: !1\n  }), e;\n}\nexport { _createClass as default };","import toPropertyKey from \"./toPropertyKey.js\";\nfunction _defineProperty(e, r, t) {\n  return (r = toPropertyKey(r)) in e ? Object.defineProperty(e, r, {\n    value: t,\n    enumerable: !0,\n    configurable: !0,\n    writable: !0\n  }) : e[r] = t, e;\n}\nexport { _defineProperty as default };","function _extends() {\n  return _extends = Object.assign ? Object.assign.bind() : function (n) {\n    for (var e = 1; e < arguments.length; e++) {\n      var t = arguments[e];\n      for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]);\n    }\n    return n;\n  }, _extends.apply(null, arguments);\n}\nexport { _extends as default };","import setPrototypeOf from \"./setPrototypeOf.js\";\nfunction _inherits(t, e) {\n  if (\"function\" != typeof e && null !== e) throw new TypeError(\"Super expression must either be null or a function\");\n  t.prototype = Object.create(e && e.prototype, {\n    constructor: {\n      value: t,\n      writable: !0,\n      configurable: !0\n    }\n  }), Object.defineProperty(t, \"prototype\", {\n    writable: !1\n  }), e && setPrototypeOf(t, e);\n}\nexport { _inherits as default };","import setPrototypeOf from \"./setPrototypeOf.js\";\nfunction _inheritsLoose(t, o) {\n  t.prototype = Object.create(o.prototype), t.prototype.constructor = t, setPrototypeOf(t, o);\n}\nexport { _inheritsLoose as default };","import defineProperty from \"./defineProperty.js\";\nfunction ownKeys(e, r) {\n  var t = Object.keys(e);\n  if (Object.getOwnPropertySymbols) {\n    var o = Object.getOwnPropertySymbols(e);\n    r && (o = o.filter(function (r) {\n      return Object.getOwnPropertyDescriptor(e, r).enumerable;\n    })), t.push.apply(t, o);\n  }\n  return t;\n}\nfunction _objectSpread2(e) {\n  for (var r = 1; r < arguments.length; r++) {\n    var t = null != arguments[r] ? arguments[r] : {};\n    r % 2 ? ownKeys(Object(t), !0).forEach(function (r) {\n      defineProperty(e, r, t[r]);\n    }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) {\n      Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n    });\n  }\n  return e;\n}\nexport { _objectSpread2 as default };","import objectWithoutPropertiesLoose from \"./objectWithoutPropertiesLoose.js\";\nfunction _objectWithoutProperties(e, t) {\n  if (null == e) return {};\n  var o,\n    r,\n    i = objectWithoutPropertiesLoose(e, t);\n  if (Object.getOwnPropertySymbols) {\n    var s = Object.getOwnPropertySymbols(e);\n    for (r = 0; r < s.length; r++) o = s[r], t.includes(o) || {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]);\n  }\n  return i;\n}\nexport { _objectWithoutProperties as default };","function _objectWithoutPropertiesLoose(r, e) {\n  if (null == r) return {};\n  var t = {};\n  for (var n in r) if ({}.hasOwnProperty.call(r, n)) {\n    if (e.includes(n)) continue;\n    t[n] = r[n];\n  }\n  return t;\n}\nexport { _objectWithoutPropertiesLoose as default };","function _setPrototypeOf(t, e) {\n  return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) {\n    return t.__proto__ = e, t;\n  }, _setPrototypeOf(t, e);\n}\nexport { _setPrototypeOf as default };","import arrayWithHoles from \"./arrayWithHoles.js\";\nimport iterableToArrayLimit from \"./iterableToArrayLimit.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableRest from \"./nonIterableRest.js\";\nfunction _slicedToArray(r, e) {\n  return arrayWithHoles(r) || iterableToArrayLimit(r, e) || unsupportedIterableToArray(r, e) || nonIterableRest();\n}\nexport { _slicedToArray as default };","function _arrayWithHoles(r) {\n  if (Array.isArray(r)) return r;\n}\nexport { _arrayWithHoles as default };","function _iterableToArrayLimit(r, l) {\n  var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"];\n  if (null != t) {\n    var e,\n      n,\n      i,\n      u,\n      a = [],\n      f = !0,\n      o = !1;\n    try {\n      if (i = (t = t.call(r)).next, 0 === l) {\n        if (Object(t) !== t) return;\n        f = !1;\n      } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0);\n    } catch (r) {\n      o = !0, n = r;\n    } finally {\n      try {\n        if (!f && null != t[\"return\"] && (u = t[\"return\"](), Object(u) !== u)) return;\n      } finally {\n        if (o) throw n;\n      }\n    }\n    return a;\n  }\n}\nexport { _iterableToArrayLimit as default };","function _nonIterableRest() {\n  throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nexport { _nonIterableRest as default };","import arrayWithoutHoles from \"./arrayWithoutHoles.js\";\nimport iterableToArray from \"./iterableToArray.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableSpread from \"./nonIterableSpread.js\";\nfunction _toConsumableArray(r) {\n  return arrayWithoutHoles(r) || iterableToArray(r) || unsupportedIterableToArray(r) || nonIterableSpread();\n}\nexport { _toConsumableArray as default };","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nfunction _arrayWithoutHoles(r) {\n  if (Array.isArray(r)) return arrayLikeToArray(r);\n}\nexport { _arrayWithoutHoles as default };","function _iterableToArray(r) {\n  if (\"undefined\" != typeof Symbol && null != r[Symbol.iterator] || null != r[\"@@iterator\"]) return Array.from(r);\n}\nexport { _iterableToArray as default };","function _nonIterableSpread() {\n  throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nexport { _nonIterableSpread as default };","import _typeof from \"./typeof.js\";\nimport toPrimitive from \"./toPrimitive.js\";\nfunction toPropertyKey(t) {\n  var i = toPrimitive(t, \"string\");\n  return \"symbol\" == _typeof(i) ? i : i + \"\";\n}\nexport { toPropertyKey as default };","import _typeof from \"./typeof.js\";\nfunction toPrimitive(t, r) {\n  if (\"object\" != _typeof(t) || !t) return t;\n  var e = t[Symbol.toPrimitive];\n  if (void 0 !== e) {\n    var i = e.call(t, r || \"default\");\n    if (\"object\" != _typeof(i)) return i;\n    throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n  }\n  return (\"string\" === r ? String : Number)(t);\n}\nexport { toPrimitive as default };","function _typeof(o) {\n  \"@babel/helpers - typeof\";\n\n  return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) {\n    return typeof o;\n  } : function (o) {\n    return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n  }, _typeof(o);\n}\nexport { _typeof as default };","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nfunction _unsupportedIterableToArray(r, a) {\n  if (r) {\n    if (\"string\" == typeof r) return arrayLikeToArray(r, a);\n    var t = {}.toString.call(r).slice(8, -1);\n    return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? arrayLikeToArray(r, a) : void 0;\n  }\n}\nexport { _unsupportedIterableToArray as default };","const { getOwnPropertyNames, getOwnPropertySymbols } = Object;\n// eslint-disable-next-line @typescript-eslint/unbound-method\nconst { hasOwnProperty } = Object.prototype;\n/**\n * Combine two comparators into a single comparators.\n */\nfunction combineComparators(comparatorA, comparatorB) {\n    return function isEqual(a, b, state) {\n        return comparatorA(a, b, state) && comparatorB(a, b, state);\n    };\n}\n/**\n * Wrap the provided `areItemsEqual` method to manage the circular state, allowing\n * for circular references to be safely included in the comparison without creating\n * stack overflows.\n */\nfunction createIsCircular(areItemsEqual) {\n    return function isCircular(a, b, state) {\n        if (!a || !b || typeof a !== 'object' || typeof b !== 'object') {\n            return areItemsEqual(a, b, state);\n        }\n        const { cache } = state;\n        const cachedA = cache.get(a);\n        const cachedB = cache.get(b);\n        if (cachedA && cachedB) {\n            return cachedA === b && cachedB === a;\n        }\n        cache.set(a, b);\n        cache.set(b, a);\n        const result = areItemsEqual(a, b, state);\n        cache.delete(a);\n        cache.delete(b);\n        return result;\n    };\n}\n/**\n * Get the `@@toStringTag` of the value, if it exists.\n */\nfunction getShortTag(value) {\n    return value != null ? value[Symbol.toStringTag] : undefined;\n}\n/**\n * Get the properties to strictly examine, which include both own properties that are\n * not enumerable and symbol properties.\n */\nfunction getStrictProperties(object) {\n    return getOwnPropertyNames(object).concat(getOwnPropertySymbols(object));\n}\n/**\n * Whether the object contains the property passed as an own property.\n */\nconst hasOwn = \n// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\nObject.hasOwn || ((object, property) => hasOwnProperty.call(object, property));\n/**\n * Whether the values passed are strictly equal or both NaN.\n */\nfunction sameValueZeroEqual(a, b) {\n    return a === b || (!a && !b && a !== a && b !== b);\n}\n\nconst PREACT_VNODE = '__v';\nconst PREACT_OWNER = '__o';\nconst REACT_OWNER = '_owner';\nconst { getOwnPropertyDescriptor, keys } = Object;\n/**\n * Whether the array buffers are equal in value.\n */\nfunction areArrayBuffersEqual(a, b) {\n    return a.byteLength === b.byteLength && areTypedArraysEqual(new Uint8Array(a), new Uint8Array(b));\n}\n/**\n * Whether the arrays are equal in value.\n */\nfunction areArraysEqual(a, b, state) {\n    let index = a.length;\n    if (b.length !== index) {\n        return false;\n    }\n    while (index-- > 0) {\n        if (!state.equals(a[index], b[index], index, index, a, b, state)) {\n            return false;\n        }\n    }\n    return true;\n}\n/**\n * Whether the dataviews are equal in value.\n */\nfunction areDataViewsEqual(a, b) {\n    return (a.byteLength === b.byteLength\n        && areTypedArraysEqual(new Uint8Array(a.buffer, a.byteOffset, a.byteLength), new Uint8Array(b.buffer, b.byteOffset, b.byteLength)));\n}\n/**\n * Whether the dates passed are equal in value.\n */\nfunction areDatesEqual(a, b) {\n    return sameValueZeroEqual(a.getTime(), b.getTime());\n}\n/**\n * Whether the errors passed are equal in value.\n */\nfunction areErrorsEqual(a, b) {\n    return a.name === b.name && a.message === b.message && a.cause === b.cause && a.stack === b.stack;\n}\n/**\n * Whether the functions passed are equal in value.\n */\nfunction areFunctionsEqual(a, b) {\n    return a === b;\n}\n/**\n * Whether the `Map`s are equal in value.\n */\nfunction areMapsEqual(a, b, state) {\n    const size = a.size;\n    if (size !== b.size) {\n        return false;\n    }\n    if (!size) {\n        return true;\n    }\n    const matchedIndices = new Array(size);\n    const aIterable = a.entries();\n    let aResult;\n    let bResult;\n    let index = 0;\n    // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n    while ((aResult = aIterable.next())) {\n        if (aResult.done) {\n            break;\n        }\n        const bIterable = b.entries();\n        let hasMatch = false;\n        let matchIndex = 0;\n        // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n        while ((bResult = bIterable.next())) {\n            if (bResult.done) {\n                break;\n            }\n            if (matchedIndices[matchIndex]) {\n                matchIndex++;\n                continue;\n            }\n            const aEntry = aResult.value;\n            const bEntry = bResult.value;\n            if (state.equals(aEntry[0], bEntry[0], index, matchIndex, a, b, state)\n                && state.equals(aEntry[1], bEntry[1], aEntry[0], bEntry[0], a, b, state)) {\n                hasMatch = matchedIndices[matchIndex] = true;\n                break;\n            }\n            matchIndex++;\n        }\n        if (!hasMatch) {\n            return false;\n        }\n        index++;\n    }\n    return true;\n}\n/**\n * Whether the numbers are equal in value.\n */\nconst areNumbersEqual = sameValueZeroEqual;\n/**\n * Whether the objects are equal in value.\n */\nfunction areObjectsEqual(a, b, state) {\n    const properties = keys(a);\n    let index = properties.length;\n    if (keys(b).length !== index) {\n        return false;\n    }\n    // Decrementing `while` showed faster results than either incrementing or\n    // decrementing `for` loop and than an incrementing `while` loop. Declarative\n    // methods like `some` / `every` were not used to avoid incurring the garbage\n    // cost of anonymous callbacks.\n    while (index-- > 0) {\n        if (!isPropertyEqual(a, b, state, properties[index])) {\n            return false;\n        }\n    }\n    return true;\n}\n/**\n * Whether the objects are equal in value with strict property checking.\n */\nfunction areObjectsEqualStrict(a, b, state) {\n    const properties = getStrictProperties(a);\n    let index = properties.length;\n    if (getStrictProperties(b).length !== index) {\n        return false;\n    }\n    let property;\n    let descriptorA;\n    let descriptorB;\n    // Decrementing `while` showed faster results than either incrementing or\n    // decrementing `for` loop and than an incrementing `while` loop. Declarative\n    // methods like `some` / `every` were not used to avoid incurring the garbage\n    // cost of anonymous callbacks.\n    while (index-- > 0) {\n        property = properties[index];\n        if (!isPropertyEqual(a, b, state, property)) {\n            return false;\n        }\n        descriptorA = getOwnPropertyDescriptor(a, property);\n        descriptorB = getOwnPropertyDescriptor(b, property);\n        if ((descriptorA || descriptorB)\n            && (!descriptorA\n                || !descriptorB\n                || descriptorA.configurable !== descriptorB.configurable\n                || descriptorA.enumerable !== descriptorB.enumerable\n                || descriptorA.writable !== descriptorB.writable)) {\n            return false;\n        }\n    }\n    return true;\n}\n/**\n * Whether the primitive wrappers passed are equal in value.\n */\nfunction arePrimitiveWrappersEqual(a, b) {\n    return sameValueZeroEqual(a.valueOf(), b.valueOf());\n}\n/**\n * Whether the regexps passed are equal in value.\n */\nfunction areRegExpsEqual(a, b) {\n    return a.source === b.source && a.flags === b.flags;\n}\n/**\n * Whether the `Set`s are equal in value.\n */\nfunction areSetsEqual(a, b, state) {\n    const size = a.size;\n    if (size !== b.size) {\n        return false;\n    }\n    if (!size) {\n        return true;\n    }\n    const matchedIndices = new Array(size);\n    const aIterable = a.values();\n    let aResult;\n    let bResult;\n    // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n    while ((aResult = aIterable.next())) {\n        if (aResult.done) {\n            break;\n        }\n        const bIterable = b.values();\n        let hasMatch = false;\n        let matchIndex = 0;\n        // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n        while ((bResult = bIterable.next())) {\n            if (bResult.done) {\n                break;\n            }\n            if (!matchedIndices[matchIndex]\n                && state.equals(aResult.value, bResult.value, aResult.value, bResult.value, a, b, state)) {\n                hasMatch = matchedIndices[matchIndex] = true;\n                break;\n            }\n            matchIndex++;\n        }\n        if (!hasMatch) {\n            return false;\n        }\n    }\n    return true;\n}\n/**\n * Whether the TypedArray instances are equal in value.\n */\nfunction areTypedArraysEqual(a, b) {\n    let index = a.byteLength;\n    if (b.byteLength !== index || a.byteOffset !== b.byteOffset) {\n        return false;\n    }\n    while (index-- > 0) {\n        if (a[index] !== b[index]) {\n            return false;\n        }\n    }\n    return true;\n}\n/**\n * Whether the URL instances are equal in value.\n */\nfunction areUrlsEqual(a, b) {\n    return (a.hostname === b.hostname\n        && a.pathname === b.pathname\n        && a.protocol === b.protocol\n        && a.port === b.port\n        && a.hash === b.hash\n        && a.username === b.username\n        && a.password === b.password);\n}\nfunction isPropertyEqual(a, b, state, property) {\n    if ((property === REACT_OWNER || property === PREACT_OWNER || property === PREACT_VNODE)\n        && (a.$$typeof || b.$$typeof)) {\n        return true;\n    }\n    return hasOwn(b, property) && state.equals(a[property], b[property], property, property, a, b, state);\n}\n\nconst ARRAY_BUFFER_TAG = '[object ArrayBuffer]';\nconst ARGUMENTS_TAG = '[object Arguments]';\nconst BOOLEAN_TAG = '[object Boolean]';\nconst DATA_VIEW_TAG = '[object DataView]';\nconst DATE_TAG = '[object Date]';\nconst ERROR_TAG = '[object Error]';\nconst MAP_TAG = '[object Map]';\nconst NUMBER_TAG = '[object Number]';\nconst OBJECT_TAG = '[object Object]';\nconst REG_EXP_TAG = '[object RegExp]';\nconst SET_TAG = '[object Set]';\nconst STRING_TAG = '[object String]';\nconst TYPED_ARRAY_TAGS = {\n    '[object Int8Array]': true,\n    '[object Uint8Array]': true,\n    '[object Uint8ClampedArray]': true,\n    '[object Int16Array]': true,\n    '[object Uint16Array]': true,\n    '[object Int32Array]': true,\n    '[object Uint32Array]': true,\n    '[object Float16Array]': true,\n    '[object Float32Array]': true,\n    '[object Float64Array]': true,\n    '[object BigInt64Array]': true,\n    '[object BigUint64Array]': true,\n};\nconst URL_TAG = '[object URL]';\n// eslint-disable-next-line @typescript-eslint/unbound-method\nconst toString = Object.prototype.toString;\n/**\n * Create a comparator method based on the type-specific equality comparators passed.\n */\nfunction createEqualityComparator({ areArrayBuffersEqual, areArraysEqual, areDataViewsEqual, areDatesEqual, areErrorsEqual, areFunctionsEqual, areMapsEqual, areNumbersEqual, areObjectsEqual, arePrimitiveWrappersEqual, areRegExpsEqual, areSetsEqual, areTypedArraysEqual, areUrlsEqual, unknownTagComparators, }) {\n    /**\n     * compare the value of the two objects and return true if they are equivalent in values\n     */\n    return function comparator(a, b, state) {\n        // If the items are strictly equal, no need to do a value comparison.\n        if (a === b) {\n            return true;\n        }\n        // If either of the items are nullish and fail the strictly equal check\n        // above, then they must be unequal.\n        if (a == null || b == null) {\n            return false;\n        }\n        const type = typeof a;\n        if (type !== typeof b) {\n            return false;\n        }\n        if (type !== 'object') {\n            if (type === 'number') {\n                return areNumbersEqual(a, b, state);\n            }\n            if (type === 'function') {\n                return areFunctionsEqual(a, b, state);\n            }\n            // If a primitive value that is not strictly equal, it must be unequal.\n            return false;\n        }\n        const constructor = a.constructor;\n        // Checks are listed in order of commonality of use-case:\n        //   1. Common complex object types (plain object, array)\n        //   2. Common data values (date, regexp)\n        //   3. Less-common complex object types (map, set)\n        //   4. Less-common data values (promise, primitive wrappers)\n        // Inherently this is both subjective and assumptive, however\n        // when reviewing comparable libraries in the wild this order\n        // appears to be generally consistent.\n        // Constructors should match, otherwise there is potential for false positives\n        // between class and subclass or custom object and POJO.\n        if (constructor !== b.constructor) {\n            return false;\n        }\n        // `isPlainObject` only checks against the object's own realm. Cross-realm\n        // comparisons are rare, and will be handled in the ultimate fallback, so\n        // we can avoid capturing the string tag.\n        if (constructor === Object) {\n            return areObjectsEqual(a, b, state);\n        }\n        // `isArray()` works on subclasses and is cross-realm, so we can avoid capturing\n        // the string tag or doing an `instanceof` check.\n        if (Array.isArray(a)) {\n            return areArraysEqual(a, b, state);\n        }\n        // Try to fast-path equality checks for other complex object types in the\n        // same realm to avoid capturing the string tag. Strict equality is used\n        // instead of `instanceof` because it is more performant for the common\n        // use-case. If someone is subclassing a native class, it will be handled\n        // with the string tag comparison.\n        if (constructor === Date) {\n            return areDatesEqual(a, b, state);\n        }\n        if (constructor === RegExp) {\n            return areRegExpsEqual(a, b, state);\n        }\n        if (constructor === Map) {\n            return areMapsEqual(a, b, state);\n        }\n        if (constructor === Set) {\n            return areSetsEqual(a, b, state);\n        }\n        // Since this is a custom object, capture the string tag to determing its type.\n        // This is reasonably performant in modern environments like v8 and SpiderMonkey.\n        const tag = toString.call(a);\n        if (tag === DATE_TAG) {\n            return areDatesEqual(a, b, state);\n        }\n        // For RegExp, the properties are not enumerable, and therefore will give false positives if\n        // tested like a standard object.\n        if (tag === REG_EXP_TAG) {\n            return areRegExpsEqual(a, b, state);\n        }\n        if (tag === MAP_TAG) {\n            return areMapsEqual(a, b, state);\n        }\n        if (tag === SET_TAG) {\n            return areSetsEqual(a, b, state);\n        }\n        if (tag === OBJECT_TAG) {\n            // The exception for value comparison is custom `Promise`-like class instances. These should\n            // be treated the same as standard `Promise` objects, which means strict equality, and if\n            // it reaches this point then that strict equality comparison has already failed.\n            return typeof a.then !== 'function' && typeof b.then !== 'function' && areObjectsEqual(a, b, state);\n        }\n        // If a URL tag, it should be tested explicitly. Like RegExp, the properties are not\n        // enumerable, and therefore will give false positives if tested like a standard object.\n        if (tag === URL_TAG) {\n            return areUrlsEqual(a, b, state);\n        }\n        // If an error tag, it should be tested explicitly. Like RegExp, the properties are not\n        // enumerable, and therefore will give false positives if tested like a standard object.\n        if (tag === ERROR_TAG) {\n            return areErrorsEqual(a, b, state);\n        }\n        // If an arguments tag, it should be treated as a standard object.\n        if (tag === ARGUMENTS_TAG) {\n            return areObjectsEqual(a, b, state);\n        }\n        if (TYPED_ARRAY_TAGS[tag]) {\n            return areTypedArraysEqual(a, b, state);\n        }\n        if (tag === ARRAY_BUFFER_TAG) {\n            return areArrayBuffersEqual(a, b, state);\n        }\n        if (tag === DATA_VIEW_TAG) {\n            return areDataViewsEqual(a, b, state);\n        }\n        // As the penultimate fallback, check if the values passed are primitive wrappers. This\n        // is very rare in modern JS, which is why it is deprioritized compared to all other object\n        // types.\n        if (tag === BOOLEAN_TAG || tag === NUMBER_TAG || tag === STRING_TAG) {\n            return arePrimitiveWrappersEqual(a, b, state);\n        }\n        if (unknownTagComparators) {\n            let unknownTagComparator = unknownTagComparators[tag];\n            if (!unknownTagComparator) {\n                const shortTag = getShortTag(a);\n                if (shortTag) {\n                    unknownTagComparator = unknownTagComparators[shortTag];\n                }\n            }\n            // If the custom config has an unknown tag comparator that matches the captured tag or the\n            // @@toStringTag, it is the source of truth for whether the values are equal.\n            if (unknownTagComparator) {\n                return unknownTagComparator(a, b, state);\n            }\n        }\n        // If not matching any tags that require a specific type of comparison, then we hard-code false because\n        // the only thing remaining is strict equality, which has already been compared. This is for a few reasons:\n        //   - Certain types that cannot be introspected (e.g., `WeakMap`). For these types, this is the only\n        //     comparison that can be made.\n        //   - For types that can be introspected, but rarely have requirements to be compared\n        //     (`ArrayBuffer`, `DataView`, etc.), the cost is avoided to prioritize the common\n        //     use-cases (may be included in a future release, if requested enough).\n        //   - For types that can be introspected but do not have an objective definition of what\n        //     equality is (`Error`, etc.), the subjective decision is to be conservative and strictly compare.\n        // In all cases, these decisions should be reevaluated based on changes to the language and\n        // common development practices.\n        return false;\n    };\n}\n/**\n * Create the configuration object used for building comparators.\n */\nfunction createEqualityComparatorConfig({ circular, createCustomConfig, strict, }) {\n    let config = {\n        areArrayBuffersEqual,\n        areArraysEqual: strict ? areObjectsEqualStrict : areArraysEqual,\n        areDataViewsEqual,\n        areDatesEqual: areDatesEqual,\n        areErrorsEqual: areErrorsEqual,\n        areFunctionsEqual: areFunctionsEqual,\n        areMapsEqual: strict ? combineComparators(areMapsEqual, areObjectsEqualStrict) : areMapsEqual,\n        areNumbersEqual: areNumbersEqual,\n        areObjectsEqual: strict ? areObjectsEqualStrict : areObjectsEqual,\n        arePrimitiveWrappersEqual: arePrimitiveWrappersEqual,\n        areRegExpsEqual: areRegExpsEqual,\n        areSetsEqual: strict ? combineComparators(areSetsEqual, areObjectsEqualStrict) : areSetsEqual,\n        areTypedArraysEqual: strict\n            ? combineComparators(areTypedArraysEqual, areObjectsEqualStrict)\n            : areTypedArraysEqual,\n        areUrlsEqual: areUrlsEqual,\n        unknownTagComparators: undefined,\n    };\n    if (createCustomConfig) {\n        config = Object.assign({}, config, createCustomConfig(config));\n    }\n    if (circular) {\n        const areArraysEqual = createIsCircular(config.areArraysEqual);\n        const areMapsEqual = createIsCircular(config.areMapsEqual);\n        const areObjectsEqual = createIsCircular(config.areObjectsEqual);\n        const areSetsEqual = createIsCircular(config.areSetsEqual);\n        config = Object.assign({}, config, {\n            areArraysEqual,\n            areMapsEqual,\n            areObjectsEqual,\n            areSetsEqual,\n        });\n    }\n    return config;\n}\n/**\n * Default equality comparator pass-through, used as the standard `isEqual` creator for\n * use inside the built comparator.\n */\nfunction createInternalEqualityComparator(compare) {\n    return function (a, b, _indexOrKeyA, _indexOrKeyB, _parentA, _parentB, state) {\n        return compare(a, b, state);\n    };\n}\n/**\n * Create the `isEqual` function used by the consuming application.\n */\nfunction createIsEqual({ circular, comparator, createState, equals, strict }) {\n    if (createState) {\n        return function isEqual(a, b) {\n            const { cache = circular ? new WeakMap() : undefined, meta } = createState();\n            return comparator(a, b, {\n                cache,\n                equals,\n                meta,\n                strict,\n            });\n        };\n    }\n    if (circular) {\n        return function isEqual(a, b) {\n            return comparator(a, b, {\n                cache: new WeakMap(),\n                equals,\n                meta: undefined,\n                strict,\n            });\n        };\n    }\n    const state = {\n        cache: undefined,\n        equals,\n        meta: undefined,\n        strict,\n    };\n    return function isEqual(a, b) {\n        return comparator(a, b, state);\n    };\n}\n\n/**\n * Whether the items passed are deeply-equal in value.\n */\nconst deepEqual = createCustomEqual();\n/**\n * Whether the items passed are deeply-equal in value based on strict comparison.\n */\nconst strictDeepEqual = createCustomEqual({ strict: true });\n/**\n * Whether the items passed are deeply-equal in value, including circular references.\n */\nconst circularDeepEqual = createCustomEqual({ circular: true });\n/**\n * Whether the items passed are deeply-equal in value, including circular references,\n * based on strict comparison.\n */\nconst strictCircularDeepEqual = createCustomEqual({\n    circular: true,\n    strict: true,\n});\n/**\n * Whether the items passed are shallowly-equal in value.\n */\nconst shallowEqual = createCustomEqual({\n    createInternalComparator: () => sameValueZeroEqual,\n});\n/**\n * Whether the items passed are shallowly-equal in value based on strict comparison\n */\nconst strictShallowEqual = createCustomEqual({\n    strict: true,\n    createInternalComparator: () => sameValueZeroEqual,\n});\n/**\n * Whether the items passed are shallowly-equal in value, including circular references.\n */\nconst circularShallowEqual = createCustomEqual({\n    circular: true,\n    createInternalComparator: () => sameValueZeroEqual,\n});\n/**\n * Whether the items passed are shallowly-equal in value, including circular references,\n * based on strict comparison.\n */\nconst strictCircularShallowEqual = createCustomEqual({\n    circular: true,\n    createInternalComparator: () => sameValueZeroEqual,\n    strict: true,\n});\n/**\n * Create a custom equality comparison method.\n *\n * This can be done to create very targeted comparisons in extreme hot-path scenarios\n * where the standard methods are not performant enough, but can also be used to provide\n * support for legacy environments that do not support expected features like\n * `RegExp.prototype.flags` out of the box.\n */\nfunction createCustomEqual(options = {}) {\n    const { circular = false, createInternalComparator: createCustomInternalComparator, createState, strict = false, } = options;\n    const config = createEqualityComparatorConfig(options);\n    const comparator = createEqualityComparator(config);\n    const equals = createCustomInternalComparator\n        ? createCustomInternalComparator(comparator)\n        : createInternalEqualityComparator(comparator);\n    return createIsEqual({ circular, comparator, createState, equals, strict });\n}\n\nexport { circularDeepEqual, circularShallowEqual, createCustomEqual, deepEqual, sameValueZeroEqual, shallowEqual, strictCircularDeepEqual, strictCircularShallowEqual, strictDeepEqual, strictShallowEqual };\n//# sourceMappingURL=index.mjs.map\n","import { deepEqual } from 'fast-equals';\nimport SuperCluster from 'supercluster';\n\n/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\r\n\r\n\r\nfunction __rest(s, e) {\r\n    var t = {};\r\n    for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n        t[p] = s[p];\r\n    if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n        for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n            if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n                t[p[i]] = s[p[i]];\r\n        }\r\n    return t;\r\n}\r\n\r\ntypeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\r\n    var e = new Error(message);\r\n    return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\r\n};\n\n/**\n * Copyright 2023 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * util class that creates a common set of convenience functions to wrap\n * shared behavior of Advanced Markers and Markers.\n */\nclass MarkerUtils {\n    static isAdvancedMarkerAvailable(map) {\n        return (google.maps.marker &&\n            map.getMapCapabilities().isAdvancedMarkersAvailable === true);\n    }\n    static isAdvancedMarker(marker) {\n        return (google.maps.marker &&\n            marker instanceof google.maps.marker.AdvancedMarkerElement);\n    }\n    static setMap(marker, map) {\n        if (this.isAdvancedMarker(marker)) {\n            marker.map = map;\n        }\n        else {\n            marker.setMap(map);\n        }\n    }\n    static getPosition(marker) {\n        // SuperClusterAlgorithm.calculate expects a LatLng instance so we fake it for Adv Markers\n        if (this.isAdvancedMarker(marker)) {\n            if (marker.position) {\n                if (marker.position instanceof google.maps.LatLng) {\n                    return marker.position;\n                }\n                // since we can't cast to LatLngLiteral for reasons =(\n                if (Number.isFinite(marker.position.lat) &&\n                    Number.isFinite(marker.position.lng)) {\n                    return new google.maps.LatLng(marker.position.lat, marker.position.lng);\n                }\n            }\n            // @ts-ignore\n            return new google.maps.LatLng(null);\n        }\n        return marker.getPosition();\n    }\n    static getVisible(marker) {\n        if (this.isAdvancedMarker(marker)) {\n            /**\n             * Always return true for Advanced Markers because the clusterer\n             * uses getVisible as a way to count legacy markers not as an actual\n             * indicator of visibility for some reason. Even when markers are hidden\n             * Marker.getVisible returns `true` and this is used to set the marker count\n             * on the cluster. See the behavior of Cluster.count\n             */\n            return true;\n        }\n        return marker.getVisible();\n    }\n}\n\n/**\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nclass Cluster {\n    constructor({ markers, position }) {\n        this.markers = [];\n        if (markers)\n            this.markers = markers;\n        if (position) {\n            if (position instanceof google.maps.LatLng) {\n                this._position = position;\n            }\n            else {\n                this._position = new google.maps.LatLng(position);\n            }\n        }\n    }\n    get bounds() {\n        if (this.markers.length === 0 && !this._position) {\n            return;\n        }\n        const bounds = new google.maps.LatLngBounds(this._position, this._position);\n        for (const marker of this.markers) {\n            bounds.extend(MarkerUtils.getPosition(marker));\n        }\n        return bounds;\n    }\n    get position() {\n        // @ts-ignore\n        return this._position || this.bounds.getCenter();\n    }\n    /**\n     * Get the count of **visible** markers.\n     */\n    get count() {\n        return this.markers.filter((m) => MarkerUtils.getVisible(m)).length;\n    }\n    /**\n     * Add a marker to the cluster.\n     */\n    push(marker) {\n        this.markers.push(marker);\n    }\n    /**\n     * Cleanup references and remove marker from map.\n     */\n    delete() {\n        if (this.marker) {\n            MarkerUtils.setMap(this.marker, null);\n            this.marker = undefined;\n        }\n        this.markers.length = 0;\n    }\n}\n\n/**\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * A typescript assertion function used in cases where typescript has to be\n * convinced that the object in question can not be null.\n *\n * @param value\n * @param message\n */\nfunction assertNotNull(value, message = \"assertion failed\") {\n    if (value === null || value === undefined) {\n        throw Error(message);\n    }\n}\n\n/**\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Returns the markers visible in a padded map viewport\n *\n * @param map\n * @param mapCanvasProjection\n * @param markers The list of marker to filter\n * @param viewportPaddingPixels The padding in pixel\n * @returns The list of markers in the padded viewport\n */\nconst filterMarkersToPaddedViewport = (map, mapCanvasProjection, markers, viewportPaddingPixels) => {\n    const bounds = map.getBounds();\n    assertNotNull(bounds);\n    const extendedMapBounds = extendBoundsToPaddedViewport(bounds, mapCanvasProjection, viewportPaddingPixels);\n    return markers.filter((marker) => extendedMapBounds.contains(MarkerUtils.getPosition(marker)));\n};\n/**\n * Extends bounds by a number of pixels in each direction\n */\nconst extendBoundsToPaddedViewport = (bounds, projection, numPixels) => {\n    const { northEast, southWest } = latLngBoundsToPixelBounds(bounds, projection);\n    const extendedPixelBounds = extendPixelBounds({ northEast, southWest }, numPixels);\n    return pixelBoundsToLatLngBounds(extendedPixelBounds, projection);\n};\n/**\n * Gets the extended bounds as a bbox [westLng, southLat, eastLng, northLat]\n */\nconst getPaddedViewport = (bounds, projection, pixels) => {\n    const extended = extendBoundsToPaddedViewport(bounds, projection, pixels);\n    const ne = extended.getNorthEast();\n    const sw = extended.getSouthWest();\n    return [sw.lng(), sw.lat(), ne.lng(), ne.lat()];\n};\n/**\n * Returns the distance between 2 positions.\n *\n * @hidden\n */\nconst distanceBetweenPoints = (p1, p2) => {\n    const R = 6371; // Radius of the Earth in km\n    const dLat = ((p2.lat - p1.lat) * Math.PI) / 180;\n    const dLon = ((p2.lng - p1.lng) * Math.PI) / 180;\n    const sinDLat = Math.sin(dLat / 2);\n    const sinDLon = Math.sin(dLon / 2);\n    const a = sinDLat * sinDLat +\n        Math.cos((p1.lat * Math.PI) / 180) *\n            Math.cos((p2.lat * Math.PI) / 180) *\n            sinDLon *\n            sinDLon;\n    const c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));\n    return R * c;\n};\n/**\n * Converts a LatLng bound to pixels.\n *\n * @hidden\n */\nconst latLngBoundsToPixelBounds = (bounds, projection) => {\n    const northEast = projection.fromLatLngToDivPixel(bounds.getNorthEast());\n    const southWest = projection.fromLatLngToDivPixel(bounds.getSouthWest());\n    assertNotNull(northEast);\n    assertNotNull(southWest);\n    return { northEast, southWest };\n};\n/**\n * Extends a pixel bounds by numPixels in all directions.\n *\n * @hidden\n */\nconst extendPixelBounds = ({ northEast, southWest }, numPixels) => {\n    northEast.x += numPixels;\n    northEast.y -= numPixels;\n    southWest.x -= numPixels;\n    southWest.y += numPixels;\n    return { northEast, southWest };\n};\n/**\n * @hidden\n */\nconst pixelBoundsToLatLngBounds = ({ northEast, southWest }, projection) => {\n    const sw = projection.fromDivPixelToLatLng(southWest);\n    const ne = projection.fromDivPixelToLatLng(northEast);\n    return new google.maps.LatLngBounds(sw, ne);\n};\n\n/**\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * @hidden\n */\nclass AbstractAlgorithm {\n    constructor({ maxZoom = 16 }) {\n        this.maxZoom = maxZoom;\n    }\n    /**\n     * Helper function to bypass clustering based upon some map state such as\n     * zoom, number of markers, etc.\n     *\n     * ```typescript\n     *  cluster({markers, map}: AlgorithmInput): Cluster[] {\n     *    if (shouldBypassClustering(map)) {\n     *      return this.noop({markers})\n     *    }\n     * }\n     * ```\n     */\n    noop({ markers, }) {\n        return noop(markers);\n    }\n}\n/**\n * Abstract viewport algorithm proves a class to filter markers by a padded\n * viewport. This is a common optimization.\n *\n * @hidden\n */\nclass AbstractViewportAlgorithm extends AbstractAlgorithm {\n    constructor(_a) {\n        var { viewportPadding = 60 } = _a, options = __rest(_a, [\"viewportPadding\"]);\n        super(options);\n        this.viewportPadding = 60;\n        this.viewportPadding = viewportPadding;\n    }\n    calculate({ markers, map, mapCanvasProjection, }) {\n        const zoom = map.getZoom();\n        assertNotNull(zoom);\n        if (zoom >= this.maxZoom) {\n            return {\n                clusters: this.noop({\n                    markers,\n                }),\n                changed: false,\n            };\n        }\n        return {\n            clusters: this.cluster({\n                markers: filterMarkersToPaddedViewport(map, mapCanvasProjection, markers, this.viewportPadding),\n                map,\n                mapCanvasProjection,\n            }),\n        };\n    }\n}\n/**\n * @hidden\n */\nconst noop = (markers) => {\n    const clusters = markers.map((marker) => new Cluster({\n        position: MarkerUtils.getPosition(marker),\n        markers: [marker],\n    }));\n    return clusters;\n};\n\n/**\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * The default Grid algorithm historically used in Google Maps marker\n * clustering.\n *\n * The Grid algorithm does not implement caching and markers may flash as the\n * viewport changes. Instead use {@link SuperClusterAlgorithm}.\n */\nclass GridAlgorithm extends AbstractViewportAlgorithm {\n    constructor(_a) {\n        var { maxDistance = 40000, gridSize = 40 } = _a, options = __rest(_a, [\"maxDistance\", \"gridSize\"]);\n        super(options);\n        this.clusters = [];\n        this.state = { zoom: -1 };\n        this.maxDistance = maxDistance;\n        this.gridSize = gridSize;\n    }\n    calculate({ markers, map, mapCanvasProjection, }) {\n        const zoom = map.getZoom();\n        assertNotNull(zoom);\n        const newState = { zoom };\n        let changed = false;\n        if (this.state.zoom >= this.maxZoom && newState.zoom >= this.maxZoom) ;\n        else {\n            changed = !deepEqual(this.state, newState);\n        }\n        this.state = newState;\n        if (zoom >= this.maxZoom) {\n            return {\n                clusters: this.noop({ markers }),\n                changed,\n            };\n        }\n        return {\n            clusters: this.cluster({\n                markers: filterMarkersToPaddedViewport(map, mapCanvasProjection, markers, this.viewportPadding),\n                map,\n                mapCanvasProjection,\n            }),\n        };\n    }\n    cluster({ markers, map, mapCanvasProjection, }) {\n        this.clusters = [];\n        markers.forEach((marker) => {\n            this.addToClosestCluster(marker, map, mapCanvasProjection);\n        });\n        return this.clusters;\n    }\n    addToClosestCluster(marker, map, projection) {\n        let maxDistance = this.maxDistance; // Some large number\n        let cluster = null;\n        for (let i = 0; i < this.clusters.length; i++) {\n            const candidate = this.clusters[i];\n            assertNotNull(candidate.bounds);\n            const distance = distanceBetweenPoints(candidate.bounds.getCenter().toJSON(), MarkerUtils.getPosition(marker).toJSON());\n            if (distance < maxDistance) {\n                maxDistance = distance;\n                cluster = candidate;\n            }\n        }\n        if (cluster) {\n            assertNotNull(cluster.bounds);\n            if (extendBoundsToPaddedViewport(cluster.bounds, projection, this.gridSize).contains(MarkerUtils.getPosition(marker))) {\n                cluster.push(marker);\n            }\n            else {\n                const cluster = new Cluster({ markers: [marker] });\n                this.clusters.push(cluster);\n            }\n        }\n        else {\n            const cluster = new Cluster({ markers: [marker] });\n            this.clusters.push(cluster);\n        }\n    }\n}\n\n/**\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Noop algorithm does not generate any clusters or filter markers by the an extended viewport.\n */\nclass NoopAlgorithm extends AbstractAlgorithm {\n    constructor(_a) {\n        var options = __rest(_a, []);\n        super(options);\n    }\n    calculate({ markers, map, mapCanvasProjection, }) {\n        return {\n            clusters: this.cluster({ markers, map, mapCanvasProjection }),\n            changed: false,\n        };\n    }\n    cluster(input) {\n        return this.noop(input);\n    }\n}\n\n/**\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * A very fast JavaScript algorithm for geospatial point clustering using KD trees.\n *\n * @see https://www.npmjs.com/package/supercluster for more information on options.\n */\nclass SuperClusterAlgorithm extends AbstractAlgorithm {\n    constructor(_a) {\n        var { maxZoom, radius = 60 } = _a, options = __rest(_a, [\"maxZoom\", \"radius\"]);\n        super({ maxZoom });\n        this.markers = [];\n        this.clusters = [];\n        this.state = { zoom: -1 };\n        this.superCluster = new SuperCluster(Object.assign({ maxZoom: this.maxZoom, radius }, options));\n    }\n    calculate(input) {\n        let changed = false;\n        let zoom = input.map.getZoom();\n        assertNotNull(zoom);\n        zoom = Math.round(zoom);\n        const state = { zoom: zoom };\n        if (!deepEqual(input.markers, this.markers)) {\n            changed = true;\n            // TODO use proxy to avoid copy?\n            this.markers = [...input.markers];\n            const points = this.markers.map((marker) => {\n                const position = MarkerUtils.getPosition(marker);\n                const coordinates = [position.lng(), position.lat()];\n                return {\n                    type: \"Feature\",\n                    geometry: { type: \"Point\", coordinates },\n                    properties: { marker },\n                };\n            });\n            this.superCluster.load(points);\n        }\n        if (!changed) {\n            if (this.state.zoom <= this.maxZoom || state.zoom <= this.maxZoom) {\n                changed = !deepEqual(this.state, state);\n            }\n        }\n        this.state = state;\n        // when input is empty, return right away\n        if (input.markers.length === 0) {\n            this.clusters = [];\n            return { clusters: this.clusters, changed };\n        }\n        if (changed) {\n            this.clusters = this.cluster(input);\n        }\n        return { clusters: this.clusters, changed };\n    }\n    cluster({ map }) {\n        const zoom = map.getZoom();\n        assertNotNull(zoom);\n        return this.superCluster\n            .getClusters([-180, -90, 180, 90], Math.round(zoom))\n            .map((feature) => this.transformCluster(feature));\n    }\n    transformCluster({ geometry: { coordinates: [lng, lat], }, properties, }) {\n        if (properties.cluster) {\n            return new Cluster({\n                markers: this.superCluster\n                    .getLeaves(properties.cluster_id, Infinity)\n                    .map((leaf) => leaf.properties.marker),\n                position: { lat, lng },\n            });\n        }\n        const marker = properties.marker;\n        return new Cluster({\n            markers: [marker],\n            position: MarkerUtils.getPosition(marker),\n        });\n    }\n}\n\n/**\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * A very fast JavaScript algorithm for geospatial point clustering using KD trees.\n *\n * @see https://www.npmjs.com/package/supercluster for more information on options.\n */\nclass SuperClusterViewportAlgorithm extends AbstractViewportAlgorithm {\n    constructor(_a) {\n        var { maxZoom, radius = 60, viewportPadding = 60 } = _a, options = __rest(_a, [\"maxZoom\", \"radius\", \"viewportPadding\"]);\n        super({ maxZoom, viewportPadding });\n        this.markers = [];\n        this.clusters = [];\n        this.superCluster = new SuperCluster(Object.assign({ maxZoom: this.maxZoom, radius }, options));\n        this.state = { zoom: -1, view: [0, 0, 0, 0] };\n    }\n    calculate(input) {\n        const state = this.getViewportState(input);\n        let changed = !deepEqual(this.state, state);\n        if (!deepEqual(input.markers, this.markers)) {\n            changed = true;\n            // TODO use proxy to avoid copy?\n            this.markers = [...input.markers];\n            const points = this.markers.map((marker) => {\n                const position = MarkerUtils.getPosition(marker);\n                const coordinates = [position.lng(), position.lat()];\n                return {\n                    type: \"Feature\",\n                    geometry: {\n                        type: \"Point\",\n                        coordinates,\n                    },\n                    properties: { marker },\n                };\n            });\n            this.superCluster.load(points);\n        }\n        if (changed) {\n            this.clusters = this.cluster(input);\n            this.state = state;\n        }\n        return { clusters: this.clusters, changed };\n    }\n    cluster(input) {\n        /* recalculate new state because we can't use the cached version. */\n        const state = this.getViewportState(input);\n        return this.superCluster\n            .getClusters(state.view, state.zoom)\n            .map((feature) => this.transformCluster(feature));\n    }\n    transformCluster({ geometry: { coordinates: [lng, lat], }, properties, }) {\n        if (properties.cluster) {\n            return new Cluster({\n                markers: this.superCluster\n                    .getLeaves(properties.cluster_id, Infinity)\n                    .map((leaf) => leaf.properties.marker),\n                position: { lat, lng },\n            });\n        }\n        const marker = properties.marker;\n        return new Cluster({\n            markers: [marker],\n            position: MarkerUtils.getPosition(marker),\n        });\n    }\n    getViewportState(input) {\n        const mapZoom = input.map.getZoom();\n        const mapBounds = input.map.getBounds();\n        assertNotNull(mapZoom);\n        assertNotNull(mapBounds);\n        return {\n            zoom: Math.round(mapZoom),\n            view: getPaddedViewport(mapBounds, input.mapCanvasProjection, this.viewportPadding),\n        };\n    }\n}\n\n/**\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Provides statistics on all clusters in the current render cycle for use in {@link Renderer.render}.\n */\nclass ClusterStats {\n    constructor(markers, clusters) {\n        this.markers = { sum: markers.length };\n        const clusterMarkerCounts = clusters.map((a) => a.count);\n        const clusterMarkerSum = clusterMarkerCounts.reduce((a, b) => a + b, 0);\n        this.clusters = {\n            count: clusters.length,\n            markers: {\n                mean: clusterMarkerSum / clusters.length,\n                sum: clusterMarkerSum,\n                min: Math.min(...clusterMarkerCounts),\n                max: Math.max(...clusterMarkerCounts),\n            },\n        };\n    }\n}\nclass DefaultRenderer {\n    /**\n     * The default render function for the library used by {@link MarkerClusterer}.\n     *\n     * Currently set to use the following:\n     *\n     * ```typescript\n     * // change color if this cluster has more markers than the mean cluster\n     * const color =\n     *   count > Math.max(10, stats.clusters.markers.mean)\n     *     ? \"#ff0000\"\n     *     : \"#0000ff\";\n     *\n     * // create svg url with fill color\n     * const svg = window.btoa(`\n     * <svg fill=\"${color}\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 240 240\">\n     *   <circle cx=\"120\" cy=\"120\" opacity=\".6\" r=\"70\" />\n     *   <circle cx=\"120\" cy=\"120\" opacity=\".3\" r=\"90\" />\n     *   <circle cx=\"120\" cy=\"120\" opacity=\".2\" r=\"110\" />\n     *   <circle cx=\"120\" cy=\"120\" opacity=\".1\" r=\"130\" />\n     * </svg>`);\n     *\n     * // create marker using svg icon\n     * return new google.maps.Marker({\n     *   position,\n     *   icon: {\n     *     url: `data:image/svg+xml;base64,${svg}`,\n     *     scaledSize: new google.maps.Size(45, 45),\n     *   },\n     *   label: {\n     *     text: String(count),\n     *     color: \"rgba(255,255,255,0.9)\",\n     *     fontSize: \"12px\",\n     *   },\n     *   // adjust zIndex to be above other markers\n     *   zIndex: 1000 + count,\n     * });\n     * ```\n     */\n    render({ count, position }, stats, map) {\n        // change color if this cluster has more markers than the mean cluster\n        const color = count > Math.max(10, stats.clusters.markers.mean) ? \"#ff0000\" : \"#0000ff\";\n        // create svg literal with fill color\n        const svg = `<svg fill=\"${color}\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 240 240\" width=\"50\" height=\"50\">\n<circle cx=\"120\" cy=\"120\" opacity=\".6\" r=\"70\" />\n<circle cx=\"120\" cy=\"120\" opacity=\".3\" r=\"90\" />\n<circle cx=\"120\" cy=\"120\" opacity=\".2\" r=\"110\" />\n<text x=\"50%\" y=\"50%\" style=\"fill:#fff\" text-anchor=\"middle\" font-size=\"50\" dominant-baseline=\"middle\" font-family=\"roboto,arial,sans-serif\">${count}</text>\n</svg>`;\n        const title = `Cluster of ${count} markers`, \n        // adjust zIndex to be above other markers\n        zIndex = Number(google.maps.Marker.MAX_ZINDEX) + count;\n        if (MarkerUtils.isAdvancedMarkerAvailable(map)) {\n            // create cluster SVG element\n            const parser = new DOMParser();\n            const svgEl = parser.parseFromString(svg, \"image/svg+xml\").documentElement;\n            svgEl.setAttribute(\"transform\", \"translate(0 25)\");\n            const clusterOptions = {\n                map,\n                position,\n                zIndex,\n                title,\n                content: svgEl,\n            };\n            return new google.maps.marker.AdvancedMarkerElement(clusterOptions);\n        }\n        const clusterOptions = {\n            position,\n            zIndex,\n            title,\n            icon: {\n                url: `data:image/svg+xml;base64,${btoa(svg)}`,\n                anchor: new google.maps.Point(25, 25),\n            },\n        };\n        return new google.maps.Marker(clusterOptions);\n    }\n}\n\n/**\n * Copyright 2019 Google LLC. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Extends an object's prototype by another's.\n *\n * @param type1 The Type to be extended.\n * @param type2 The Type to extend with.\n * @ignore\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction extend(type1, type2) {\n    /* istanbul ignore next */\n    // eslint-disable-next-line prefer-const\n    for (let property in type2.prototype) {\n        type1.prototype[property] = type2.prototype[property];\n    }\n}\n/**\n * @ignore\n */\n// eslint-disable-next-line @typescript-eslint/no-unsafe-declaration-merging\nclass OverlayViewSafe {\n    constructor() {\n        // MarkerClusterer implements google.maps.OverlayView interface. We use the\n        // extend function to extend MarkerClusterer with google.maps.OverlayView\n        // because it might not always be available when the code is defined so we\n        // look for it at the last possible moment. If it doesn't exist now then\n        // there is no point going ahead :)\n        extend(OverlayViewSafe, google.maps.OverlayView);\n    }\n}\n\n/**\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nvar MarkerClustererEvents;\n(function (MarkerClustererEvents) {\n    MarkerClustererEvents[\"CLUSTERING_BEGIN\"] = \"clusteringbegin\";\n    MarkerClustererEvents[\"CLUSTERING_END\"] = \"clusteringend\";\n    MarkerClustererEvents[\"CLUSTER_CLICK\"] = \"click\";\n    MarkerClustererEvents[\"GMP_CLICK\"] = \"gmp-click\";\n})(MarkerClustererEvents || (MarkerClustererEvents = {}));\nconst defaultOnClusterClickHandler = (_, cluster, map) => {\n    if (cluster.bounds)\n        map.fitBounds(cluster.bounds);\n};\n/**\n * MarkerClusterer creates and manages per-zoom-level clusters for large amounts\n * of markers. See {@link MarkerClustererOptions} for more details.\n *\n */\nclass MarkerClusterer extends OverlayViewSafe {\n    constructor({ map, markers = [], algorithmOptions = {}, algorithm = new SuperClusterAlgorithm(algorithmOptions), renderer = new DefaultRenderer(), onClusterClick = defaultOnClusterClickHandler, }) {\n        super();\n        /** @see {@link MarkerClustererOptions.map} */\n        this.map = null;\n        this.idleListener = null;\n        this.markers = [...markers];\n        this.clusters = [];\n        this.algorithm = algorithm;\n        this.renderer = renderer;\n        this.onClusterClick = onClusterClick;\n        if (map) {\n            this.setMap(map);\n        }\n    }\n    addMarker(marker, noDraw) {\n        if (this.markers.includes(marker)) {\n            return;\n        }\n        this.markers.push(marker);\n        if (!noDraw) {\n            this.render();\n        }\n    }\n    addMarkers(markers, noDraw) {\n        markers.forEach((marker) => {\n            this.addMarker(marker, true);\n        });\n        if (!noDraw) {\n            this.render();\n        }\n    }\n    removeMarker(marker, noDraw) {\n        const index = this.markers.indexOf(marker);\n        if (index === -1) {\n            // Marker is not in our list of markers, so do nothing:\n            return false;\n        }\n        MarkerUtils.setMap(marker, null);\n        this.markers.splice(index, 1); // Remove the marker from the list of managed markers\n        if (!noDraw) {\n            this.render();\n        }\n        return true;\n    }\n    removeMarkers(markers, noDraw) {\n        let removed = false;\n        markers.forEach((marker) => {\n            removed = this.removeMarker(marker, true) || removed;\n        });\n        if (removed && !noDraw) {\n            this.render();\n        }\n        return removed;\n    }\n    clearMarkers(noDraw) {\n        this.markers.length = 0;\n        if (!noDraw) {\n            this.render();\n        }\n    }\n    /**\n     * Recalculates and draws all the marker clusters.\n     */\n    render() {\n        const map = this.getMap();\n        if (map instanceof google.maps.Map && map.getProjection()) {\n            google.maps.event.trigger(this, MarkerClustererEvents.CLUSTERING_BEGIN, this);\n            const { clusters, changed } = this.algorithm.calculate({\n                markers: this.markers,\n                map,\n                mapCanvasProjection: this.getProjection(),\n            });\n            // Allow algorithms to return flag on whether the clusters/markers have changed.\n            if (changed || changed == undefined) {\n                // Accumulate the markers of the clusters composed of a single marker.\n                // Those clusters directly use the marker.\n                // Clusters with more than one markers use a group marker generated by a renderer.\n                const singleMarker = new Set();\n                for (const cluster of clusters) {\n                    if (cluster.markers.length == 1) {\n                        singleMarker.add(cluster.markers[0]);\n                    }\n                }\n                const groupMarkers = [];\n                // Iterate the clusters that are currently rendered.\n                for (const cluster of this.clusters) {\n                    if (cluster.marker == null) {\n                        continue;\n                    }\n                    if (cluster.markers.length == 1) {\n                        if (!singleMarker.has(cluster.marker)) {\n                            // The marker:\n                            // - was previously rendered because it is from a cluster with 1 marker,\n                            // - should no more be rendered as it is not in singleMarker.\n                            MarkerUtils.setMap(cluster.marker, null);\n                        }\n                    }\n                    else {\n                        // Delay the removal of old group markers to avoid flickering.\n                        groupMarkers.push(cluster.marker);\n                    }\n                }\n                this.clusters = clusters;\n                this.renderClusters();\n                // Delayed removal of the markers of the former groups.\n                requestAnimationFrame(() => groupMarkers.forEach((marker) => MarkerUtils.setMap(marker, null)));\n            }\n            google.maps.event.trigger(this, MarkerClustererEvents.CLUSTERING_END, this);\n        }\n    }\n    onAdd() {\n        const map = this.getMap();\n        assertNotNull(map);\n        this.idleListener = map.addListener(\"idle\", this.render.bind(this));\n        this.render();\n    }\n    onRemove() {\n        if (this.idleListener)\n            google.maps.event.removeListener(this.idleListener);\n        this.reset();\n    }\n    reset() {\n        this.markers.forEach((marker) => MarkerUtils.setMap(marker, null));\n        this.clusters.forEach((cluster) => cluster.delete());\n        this.clusters = [];\n    }\n    renderClusters() {\n        // Generate stats to pass to renderers.\n        const stats = new ClusterStats(this.markers, this.clusters);\n        const map = this.getMap();\n        this.clusters.forEach((cluster) => {\n            if (cluster.markers.length === 1) {\n                cluster.marker = cluster.markers[0];\n            }\n            else {\n                // Generate the marker to represent the group.\n                cluster.marker = this.renderer.render(cluster, stats, map);\n                // Make sure all individual markers are removed from the map.\n                cluster.markers.forEach((marker) => MarkerUtils.setMap(marker, null));\n                if (this.onClusterClick) {\n                    // legacy Marker uses 'click' events, whereas AdvancedMarkerElement uses 'gmp-click'\n                    const markerClickEventName = MarkerUtils.isAdvancedMarker(cluster.marker)\n                        ? MarkerClustererEvents.GMP_CLICK\n                        : MarkerClustererEvents.CLUSTER_CLICK;\n                    cluster.marker.addListener(markerClickEventName, \n                    /* istanbul ignore next */\n                    (event) => {\n                        google.maps.event.trigger(this, MarkerClustererEvents.CLUSTER_CLICK, cluster);\n                        this.onClusterClick(event, cluster, map);\n                    });\n                }\n            }\n            MarkerUtils.setMap(cluster.marker, map);\n        });\n    }\n}\n\nexport { AbstractAlgorithm, AbstractViewportAlgorithm, Cluster, ClusterStats, DefaultRenderer, GridAlgorithm, MarkerClusterer, MarkerClustererEvents, MarkerUtils, NoopAlgorithm, SuperClusterAlgorithm, SuperClusterViewportAlgorithm, defaultOnClusterClickHandler, distanceBetweenPoints, extendBoundsToPaddedViewport, extendPixelBounds, filterMarkersToPaddedViewport, getPaddedViewport, noop, pixelBoundsToLatLngBounds };\n//# sourceMappingURL=index.esm.mjs.map\n","import axios from './lib/axios.js';\n\n// This module is intended to unwrap Axios default export as named.\n// Keep top-level export same with static properties\n// so that it can keep same with es module or cjs\nconst {\n  Axios,\n  AxiosError,\n  CanceledError,\n  isCancel,\n  CancelToken,\n  VERSION,\n  all,\n  Cancel,\n  isAxiosError,\n  spread,\n  toFormData,\n  AxiosHeaders,\n  HttpStatusCode,\n  formToJSON,\n  getAdapter,\n  mergeConfig\n} = axios;\n\nexport {\n  axios as default,\n  Axios,\n  AxiosError,\n  CanceledError,\n  isCancel,\n  CancelToken,\n  VERSION,\n  all,\n  Cancel,\n  isAxiosError,\n  spread,\n  toFormData,\n  AxiosHeaders,\n  HttpStatusCode,\n  formToJSON,\n  getAdapter,\n  mergeConfig\n}\n","'use strict';\n\nexport default function bind(fn, thisArg) {\n  return function wrap() {\n    return fn.apply(thisArg, arguments);\n  };\n}\n","'use strict';\n\nimport bind from './helpers/bind.js';\n\n// utils is a library of generic helper functions non-specific to axios\n\nconst {toString} = Object.prototype;\nconst {getPrototypeOf} = Object;\nconst {iterator, toStringTag} = Symbol;\n\nconst kindOf = (cache => thing => {\n    const str = toString.call(thing);\n    return cache[str] || (cache[str] = str.slice(8, -1).toLowerCase());\n})(Object.create(null));\n\nconst kindOfTest = (type) => {\n  type = type.toLowerCase();\n  return (thing) => kindOf(thing) === type\n}\n\nconst typeOfTest = type => thing => typeof thing === type;\n\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n *\n * @returns {boolean} True if value is an Array, otherwise false\n */\nconst {isArray} = Array;\n\n/**\n * Determine if a value is undefined\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nconst isUndefined = typeOfTest('undefined');\n\n/**\n * Determine if a value is a Buffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Buffer, otherwise false\n */\nfunction isBuffer(val) {\n  return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor)\n    && isFunction(val.constructor.isBuffer) && val.constructor.isBuffer(val);\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nconst isArrayBuffer = kindOfTest('ArrayBuffer');\n\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n  let result;\n  if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {\n    result = ArrayBuffer.isView(val);\n  } else {\n    result = (val) && (val.buffer) && (isArrayBuffer(val.buffer));\n  }\n  return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a String, otherwise false\n */\nconst isString = typeOfTest('string');\n\n/**\n * Determine if a value is a Function\n *\n * @param {*} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nconst isFunction = typeOfTest('function');\n\n/**\n * Determine if a value is a Number\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Number, otherwise false\n */\nconst isNumber = typeOfTest('number');\n\n/**\n * Determine if a value is an Object\n *\n * @param {*} thing The value to test\n *\n * @returns {boolean} True if value is an Object, otherwise false\n */\nconst isObject = (thing) => thing !== null && typeof thing === 'object';\n\n/**\n * Determine if a value is a Boolean\n *\n * @param {*} thing The value to test\n * @returns {boolean} True if value is a Boolean, otherwise false\n */\nconst isBoolean = thing => thing === true || thing === false;\n\n/**\n * Determine if a value is a plain Object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a plain Object, otherwise false\n */\nconst isPlainObject = (val) => {\n  if (kindOf(val) !== 'object') {\n    return false;\n  }\n\n  const prototype = getPrototypeOf(val);\n  return (prototype === null || prototype === Object.prototype || Object.getPrototypeOf(prototype) === null) && !(toStringTag in val) && !(iterator in val);\n}\n\n/**\n * Determine if a value is a Date\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Date, otherwise false\n */\nconst isDate = kindOfTest('Date');\n\n/**\n * Determine if a value is a File\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a File, otherwise false\n */\nconst isFile = kindOfTest('File');\n\n/**\n * Determine if a value is a Blob\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nconst isBlob = kindOfTest('Blob');\n\n/**\n * Determine if a value is a FileList\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a File, otherwise false\n */\nconst isFileList = kindOfTest('FileList');\n\n/**\n * Determine if a value is a Stream\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nconst isStream = (val) => isObject(val) && isFunction(val.pipe);\n\n/**\n * Determine if a value is a FormData\n *\n * @param {*} thing The value to test\n *\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nconst isFormData = (thing) => {\n  let kind;\n  return thing && (\n    (typeof FormData === 'function' && thing instanceof FormData) || (\n      isFunction(thing.append) && (\n        (kind = kindOf(thing)) === 'formdata' ||\n        // detect form-data instance\n        (kind === 'object' && isFunction(thing.toString) && thing.toString() === '[object FormData]')\n      )\n    )\n  )\n}\n\n/**\n * Determine if a value is a URLSearchParams object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nconst isURLSearchParams = kindOfTest('URLSearchParams');\n\nconst [isReadableStream, isRequest, isResponse, isHeaders] = ['ReadableStream', 'Request', 'Response', 'Headers'].map(kindOfTest);\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n *\n * @returns {String} The String freed of excess whitespace\n */\nconst trim = (str) => str.trim ?\n  str.trim() : str.replace(/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g, '');\n\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n *\n * @param {Boolean} [allOwnKeys = false]\n * @returns {any}\n */\nfunction forEach(obj, fn, {allOwnKeys = false} = {}) {\n  // Don't bother if no value provided\n  if (obj === null || typeof obj === 'undefined') {\n    return;\n  }\n\n  let i;\n  let l;\n\n  // Force an array if not already something iterable\n  if (typeof obj !== 'object') {\n    /*eslint no-param-reassign:0*/\n    obj = [obj];\n  }\n\n  if (isArray(obj)) {\n    // Iterate over array values\n    for (i = 0, l = obj.length; i < l; i++) {\n      fn.call(null, obj[i], i, obj);\n    }\n  } else {\n    // Iterate over object keys\n    const keys = allOwnKeys ? Object.getOwnPropertyNames(obj) : Object.keys(obj);\n    const len = keys.length;\n    let key;\n\n    for (i = 0; i < len; i++) {\n      key = keys[i];\n      fn.call(null, obj[key], key, obj);\n    }\n  }\n}\n\nfunction findKey(obj, key) {\n  key = key.toLowerCase();\n  const keys = Object.keys(obj);\n  let i = keys.length;\n  let _key;\n  while (i-- > 0) {\n    _key = keys[i];\n    if (key === _key.toLowerCase()) {\n      return _key;\n    }\n  }\n  return null;\n}\n\nconst _global = (() => {\n  /*eslint no-undef:0*/\n  if (typeof globalThis !== \"undefined\") return globalThis;\n  return typeof self !== \"undefined\" ? self : (typeof window !== 'undefined' ? window : global)\n})();\n\nconst isContextDefined = (context) => !isUndefined(context) && context !== _global;\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * var result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n *\n * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n  const {caseless} = isContextDefined(this) && this || {};\n  const result = {};\n  const assignValue = (val, key) => {\n    const targetKey = caseless && findKey(result, key) || key;\n    if (isPlainObject(result[targetKey]) && isPlainObject(val)) {\n      result[targetKey] = merge(result[targetKey], val);\n    } else if (isPlainObject(val)) {\n      result[targetKey] = merge({}, val);\n    } else if (isArray(val)) {\n      result[targetKey] = val.slice();\n    } else {\n      result[targetKey] = val;\n    }\n  }\n\n  for (let i = 0, l = arguments.length; i < l; i++) {\n    arguments[i] && forEach(arguments[i], assignValue);\n  }\n  return result;\n}\n\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n *\n * @param {Boolean} [allOwnKeys]\n * @returns {Object} The resulting value of object a\n */\nconst extend = (a, b, thisArg, {allOwnKeys}= {}) => {\n  forEach(b, (val, key) => {\n    if (thisArg && isFunction(val)) {\n      a[key] = bind(val, thisArg);\n    } else {\n      a[key] = val;\n    }\n  }, {allOwnKeys});\n  return a;\n}\n\n/**\n * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM)\n *\n * @param {string} content with BOM\n *\n * @returns {string} content value without BOM\n */\nconst stripBOM = (content) => {\n  if (content.charCodeAt(0) === 0xFEFF) {\n    content = content.slice(1);\n  }\n  return content;\n}\n\n/**\n * Inherit the prototype methods from one constructor into another\n * @param {function} constructor\n * @param {function} superConstructor\n * @param {object} [props]\n * @param {object} [descriptors]\n *\n * @returns {void}\n */\nconst inherits = (constructor, superConstructor, props, descriptors) => {\n  constructor.prototype = Object.create(superConstructor.prototype, descriptors);\n  constructor.prototype.constructor = constructor;\n  Object.defineProperty(constructor, 'super', {\n    value: superConstructor.prototype\n  });\n  props && Object.assign(constructor.prototype, props);\n}\n\n/**\n * Resolve object with deep prototype chain to a flat object\n * @param {Object} sourceObj source object\n * @param {Object} [destObj]\n * @param {Function|Boolean} [filter]\n * @param {Function} [propFilter]\n *\n * @returns {Object}\n */\nconst toFlatObject = (sourceObj, destObj, filter, propFilter) => {\n  let props;\n  let i;\n  let prop;\n  const merged = {};\n\n  destObj = destObj || {};\n  // eslint-disable-next-line no-eq-null,eqeqeq\n  if (sourceObj == null) return destObj;\n\n  do {\n    props = Object.getOwnPropertyNames(sourceObj);\n    i = props.length;\n    while (i-- > 0) {\n      prop = props[i];\n      if ((!propFilter || propFilter(prop, sourceObj, destObj)) && !merged[prop]) {\n        destObj[prop] = sourceObj[prop];\n        merged[prop] = true;\n      }\n    }\n    sourceObj = filter !== false && getPrototypeOf(sourceObj);\n  } while (sourceObj && (!filter || filter(sourceObj, destObj)) && sourceObj !== Object.prototype);\n\n  return destObj;\n}\n\n/**\n * Determines whether a string ends with the characters of a specified string\n *\n * @param {String} str\n * @param {String} searchString\n * @param {Number} [position= 0]\n *\n * @returns {boolean}\n */\nconst endsWith = (str, searchString, position) => {\n  str = String(str);\n  if (position === undefined || position > str.length) {\n    position = str.length;\n  }\n  position -= searchString.length;\n  const lastIndex = str.indexOf(searchString, position);\n  return lastIndex !== -1 && lastIndex === position;\n}\n\n\n/**\n * Returns new array from array like object or null if failed\n *\n * @param {*} [thing]\n *\n * @returns {?Array}\n */\nconst toArray = (thing) => {\n  if (!thing) return null;\n  if (isArray(thing)) return thing;\n  let i = thing.length;\n  if (!isNumber(i)) return null;\n  const arr = new Array(i);\n  while (i-- > 0) {\n    arr[i] = thing[i];\n  }\n  return arr;\n}\n\n/**\n * Checking if the Uint8Array exists and if it does, it returns a function that checks if the\n * thing passed in is an instance of Uint8Array\n *\n * @param {TypedArray}\n *\n * @returns {Array}\n */\n// eslint-disable-next-line func-names\nconst isTypedArray = (TypedArray => {\n  // eslint-disable-next-line func-names\n  return thing => {\n    return TypedArray && thing instanceof TypedArray;\n  };\n})(typeof Uint8Array !== 'undefined' && getPrototypeOf(Uint8Array));\n\n/**\n * For each entry in the object, call the function with the key and value.\n *\n * @param {Object<any, any>} obj - The object to iterate over.\n * @param {Function} fn - The function to call for each entry.\n *\n * @returns {void}\n */\nconst forEachEntry = (obj, fn) => {\n  const generator = obj && obj[iterator];\n\n  const _iterator = generator.call(obj);\n\n  let result;\n\n  while ((result = _iterator.next()) && !result.done) {\n    const pair = result.value;\n    fn.call(obj, pair[0], pair[1]);\n  }\n}\n\n/**\n * It takes a regular expression and a string, and returns an array of all the matches\n *\n * @param {string} regExp - The regular expression to match against.\n * @param {string} str - The string to search.\n *\n * @returns {Array<boolean>}\n */\nconst matchAll = (regExp, str) => {\n  let matches;\n  const arr = [];\n\n  while ((matches = regExp.exec(str)) !== null) {\n    arr.push(matches);\n  }\n\n  return arr;\n}\n\n/* Checking if the kindOfTest function returns true when passed an HTMLFormElement. */\nconst isHTMLForm = kindOfTest('HTMLFormElement');\n\nconst toCamelCase = str => {\n  return str.toLowerCase().replace(/[-_\\s]([a-z\\d])(\\w*)/g,\n    function replacer(m, p1, p2) {\n      return p1.toUpperCase() + p2;\n    }\n  );\n};\n\n/* Creating a function that will check if an object has a property. */\nconst hasOwnProperty = (({hasOwnProperty}) => (obj, prop) => hasOwnProperty.call(obj, prop))(Object.prototype);\n\n/**\n * Determine if a value is a RegExp object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a RegExp object, otherwise false\n */\nconst isRegExp = kindOfTest('RegExp');\n\nconst reduceDescriptors = (obj, reducer) => {\n  const descriptors = Object.getOwnPropertyDescriptors(obj);\n  const reducedDescriptors = {};\n\n  forEach(descriptors, (descriptor, name) => {\n    let ret;\n    if ((ret = reducer(descriptor, name, obj)) !== false) {\n      reducedDescriptors[name] = ret || descriptor;\n    }\n  });\n\n  Object.defineProperties(obj, reducedDescriptors);\n}\n\n/**\n * Makes all methods read-only\n * @param {Object} obj\n */\n\nconst freezeMethods = (obj) => {\n  reduceDescriptors(obj, (descriptor, name) => {\n    // skip restricted props in strict mode\n    if (isFunction(obj) && ['arguments', 'caller', 'callee'].indexOf(name) !== -1) {\n      return false;\n    }\n\n    const value = obj[name];\n\n    if (!isFunction(value)) return;\n\n    descriptor.enumerable = false;\n\n    if ('writable' in descriptor) {\n      descriptor.writable = false;\n      return;\n    }\n\n    if (!descriptor.set) {\n      descriptor.set = () => {\n        throw Error('Can not rewrite read-only method \\'' + name + '\\'');\n      };\n    }\n  });\n}\n\nconst toObjectSet = (arrayOrString, delimiter) => {\n  const obj = {};\n\n  const define = (arr) => {\n    arr.forEach(value => {\n      obj[value] = true;\n    });\n  }\n\n  isArray(arrayOrString) ? define(arrayOrString) : define(String(arrayOrString).split(delimiter));\n\n  return obj;\n}\n\nconst noop = () => {}\n\nconst toFiniteNumber = (value, defaultValue) => {\n  return value != null && Number.isFinite(value = +value) ? value : defaultValue;\n}\n\n/**\n * If the thing is a FormData object, return true, otherwise return false.\n *\n * @param {unknown} thing - The thing to check.\n *\n * @returns {boolean}\n */\nfunction isSpecCompliantForm(thing) {\n  return !!(thing && isFunction(thing.append) && thing[toStringTag] === 'FormData' && thing[iterator]);\n}\n\nconst toJSONObject = (obj) => {\n  const stack = new Array(10);\n\n  const visit = (source, i) => {\n\n    if (isObject(source)) {\n      if (stack.indexOf(source) >= 0) {\n        return;\n      }\n\n      if(!('toJSON' in source)) {\n        stack[i] = source;\n        const target = isArray(source) ? [] : {};\n\n        forEach(source, (value, key) => {\n          const reducedValue = visit(value, i + 1);\n          !isUndefined(reducedValue) && (target[key] = reducedValue);\n        });\n\n        stack[i] = undefined;\n\n        return target;\n      }\n    }\n\n    return source;\n  }\n\n  return visit(obj, 0);\n}\n\nconst isAsyncFn = kindOfTest('AsyncFunction');\n\nconst isThenable = (thing) =>\n  thing && (isObject(thing) || isFunction(thing)) && isFunction(thing.then) && isFunction(thing.catch);\n\n// original code\n// https://github.com/DigitalBrainJS/AxiosPromise/blob/16deab13710ec09779922131f3fa5954320f83ab/lib/utils.js#L11-L34\n\nconst _setImmediate = ((setImmediateSupported, postMessageSupported) => {\n  if (setImmediateSupported) {\n    return setImmediate;\n  }\n\n  return postMessageSupported ? ((token, callbacks) => {\n    _global.addEventListener(\"message\", ({source, data}) => {\n      if (source === _global && data === token) {\n        callbacks.length && callbacks.shift()();\n      }\n    }, false);\n\n    return (cb) => {\n      callbacks.push(cb);\n      _global.postMessage(token, \"*\");\n    }\n  })(`axios@${Math.random()}`, []) : (cb) => setTimeout(cb);\n})(\n  typeof setImmediate === 'function',\n  isFunction(_global.postMessage)\n);\n\nconst asap = typeof queueMicrotask !== 'undefined' ?\n  queueMicrotask.bind(_global) : ( typeof process !== 'undefined' && process.nextTick || _setImmediate);\n\n// *********************\n\n\nconst isIterable = (thing) => thing != null && isFunction(thing[iterator]);\n\n\nexport default {\n  isArray,\n  isArrayBuffer,\n  isBuffer,\n  isFormData,\n  isArrayBufferView,\n  isString,\n  isNumber,\n  isBoolean,\n  isObject,\n  isPlainObject,\n  isReadableStream,\n  isRequest,\n  isResponse,\n  isHeaders,\n  isUndefined,\n  isDate,\n  isFile,\n  isBlob,\n  isRegExp,\n  isFunction,\n  isStream,\n  isURLSearchParams,\n  isTypedArray,\n  isFileList,\n  forEach,\n  merge,\n  extend,\n  trim,\n  stripBOM,\n  inherits,\n  toFlatObject,\n  kindOf,\n  kindOfTest,\n  endsWith,\n  toArray,\n  forEachEntry,\n  matchAll,\n  isHTMLForm,\n  hasOwnProperty,\n  hasOwnProp: hasOwnProperty, // an alias to avoid ESLint no-prototype-builtins detection\n  reduceDescriptors,\n  freezeMethods,\n  toObjectSet,\n  toCamelCase,\n  noop,\n  toFiniteNumber,\n  findKey,\n  global: _global,\n  isContextDefined,\n  isSpecCompliantForm,\n  toJSONObject,\n  isAsyncFn,\n  isThenable,\n  setImmediate: _setImmediate,\n  asap,\n  isIterable\n};\n","'use strict';\n\nimport utils from '../utils.js';\n\n/**\n * Create an Error with the specified message, config, error code, request and response.\n *\n * @param {string} message The error message.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [config] The config.\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n *\n * @returns {Error} The created error.\n */\nfunction AxiosError(message, code, config, request, response) {\n  Error.call(this);\n\n  if (Error.captureStackTrace) {\n    Error.captureStackTrace(this, this.constructor);\n  } else {\n    this.stack = (new Error()).stack;\n  }\n\n  this.message = message;\n  this.name = 'AxiosError';\n  code && (this.code = code);\n  config && (this.config = config);\n  request && (this.request = request);\n  if (response) {\n    this.response = response;\n    this.status = response.status ? response.status : null;\n  }\n}\n\nutils.inherits(AxiosError, Error, {\n  toJSON: function toJSON() {\n    return {\n      // Standard\n      message: this.message,\n      name: this.name,\n      // Microsoft\n      description: this.description,\n      number: this.number,\n      // Mozilla\n      fileName: this.fileName,\n      lineNumber: this.lineNumber,\n      columnNumber: this.columnNumber,\n      stack: this.stack,\n      // Axios\n      config: utils.toJSONObject(this.config),\n      code: this.code,\n      status: this.status\n    };\n  }\n});\n\nconst prototype = AxiosError.prototype;\nconst descriptors = {};\n\n[\n  'ERR_BAD_OPTION_VALUE',\n  'ERR_BAD_OPTION',\n  'ECONNABORTED',\n  'ETIMEDOUT',\n  'ERR_NETWORK',\n  'ERR_FR_TOO_MANY_REDIRECTS',\n  'ERR_DEPRECATED',\n  'ERR_BAD_RESPONSE',\n  'ERR_BAD_REQUEST',\n  'ERR_CANCELED',\n  'ERR_NOT_SUPPORT',\n  'ERR_INVALID_URL'\n// eslint-disable-next-line func-names\n].forEach(code => {\n  descriptors[code] = {value: code};\n});\n\nObject.defineProperties(AxiosError, descriptors);\nObject.defineProperty(prototype, 'isAxiosError', {value: true});\n\n// eslint-disable-next-line func-names\nAxiosError.from = (error, code, config, request, response, customProps) => {\n  const axiosError = Object.create(prototype);\n\n  utils.toFlatObject(error, axiosError, function filter(obj) {\n    return obj !== Error.prototype;\n  }, prop => {\n    return prop !== 'isAxiosError';\n  });\n\n  AxiosError.call(axiosError, error.message, code, config, request, response);\n\n  axiosError.cause = error;\n\n  axiosError.name = error.name;\n\n  customProps && Object.assign(axiosError, customProps);\n\n  return axiosError;\n};\n\nexport default AxiosError;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosError from '../core/AxiosError.js';\n// temporary hotfix to avoid circular references until AxiosURLSearchParams is refactored\nimport PlatformFormData from '../platform/node/classes/FormData.js';\n\n/**\n * Determines if the given thing is a array or js object.\n *\n * @param {string} thing - The object or array to be visited.\n *\n * @returns {boolean}\n */\nfunction isVisitable(thing) {\n  return utils.isPlainObject(thing) || utils.isArray(thing);\n}\n\n/**\n * It removes the brackets from the end of a string\n *\n * @param {string} key - The key of the parameter.\n *\n * @returns {string} the key without the brackets.\n */\nfunction removeBrackets(key) {\n  return utils.endsWith(key, '[]') ? key.slice(0, -2) : key;\n}\n\n/**\n * It takes a path, a key, and a boolean, and returns a string\n *\n * @param {string} path - The path to the current key.\n * @param {string} key - The key of the current object being iterated over.\n * @param {string} dots - If true, the key will be rendered with dots instead of brackets.\n *\n * @returns {string} The path to the current key.\n */\nfunction renderKey(path, key, dots) {\n  if (!path) return key;\n  return path.concat(key).map(function each(token, i) {\n    // eslint-disable-next-line no-param-reassign\n    token = removeBrackets(token);\n    return !dots && i ? '[' + token + ']' : token;\n  }).join(dots ? '.' : '');\n}\n\n/**\n * If the array is an array and none of its elements are visitable, then it's a flat array.\n *\n * @param {Array<any>} arr - The array to check\n *\n * @returns {boolean}\n */\nfunction isFlatArray(arr) {\n  return utils.isArray(arr) && !arr.some(isVisitable);\n}\n\nconst predicates = utils.toFlatObject(utils, {}, null, function filter(prop) {\n  return /^is[A-Z]/.test(prop);\n});\n\n/**\n * Convert a data object to FormData\n *\n * @param {Object} obj\n * @param {?Object} [formData]\n * @param {?Object} [options]\n * @param {Function} [options.visitor]\n * @param {Boolean} [options.metaTokens = true]\n * @param {Boolean} [options.dots = false]\n * @param {?Boolean} [options.indexes = false]\n *\n * @returns {Object}\n **/\n\n/**\n * It converts an object into a FormData object\n *\n * @param {Object<any, any>} obj - The object to convert to form data.\n * @param {string} formData - The FormData object to append to.\n * @param {Object<string, any>} options\n *\n * @returns\n */\nfunction toFormData(obj, formData, options) {\n  if (!utils.isObject(obj)) {\n    throw new TypeError('target must be an object');\n  }\n\n  // eslint-disable-next-line no-param-reassign\n  formData = formData || new (PlatformFormData || FormData)();\n\n  // eslint-disable-next-line no-param-reassign\n  options = utils.toFlatObject(options, {\n    metaTokens: true,\n    dots: false,\n    indexes: false\n  }, false, function defined(option, source) {\n    // eslint-disable-next-line no-eq-null,eqeqeq\n    return !utils.isUndefined(source[option]);\n  });\n\n  const metaTokens = options.metaTokens;\n  // eslint-disable-next-line no-use-before-define\n  const visitor = options.visitor || defaultVisitor;\n  const dots = options.dots;\n  const indexes = options.indexes;\n  const _Blob = options.Blob || typeof Blob !== 'undefined' && Blob;\n  const useBlob = _Blob && utils.isSpecCompliantForm(formData);\n\n  if (!utils.isFunction(visitor)) {\n    throw new TypeError('visitor must be a function');\n  }\n\n  function convertValue(value) {\n    if (value === null) return '';\n\n    if (utils.isDate(value)) {\n      return value.toISOString();\n    }\n\n    if (utils.isBoolean(value)) {\n      return value.toString();\n    }\n\n    if (!useBlob && utils.isBlob(value)) {\n      throw new AxiosError('Blob is not supported. Use a Buffer instead.');\n    }\n\n    if (utils.isArrayBuffer(value) || utils.isTypedArray(value)) {\n      return useBlob && typeof Blob === 'function' ? new Blob([value]) : Buffer.from(value);\n    }\n\n    return value;\n  }\n\n  /**\n   * Default visitor.\n   *\n   * @param {*} value\n   * @param {String|Number} key\n   * @param {Array<String|Number>} path\n   * @this {FormData}\n   *\n   * @returns {boolean} return true to visit the each prop of the value recursively\n   */\n  function defaultVisitor(value, key, path) {\n    let arr = value;\n\n    if (value && !path && typeof value === 'object') {\n      if (utils.endsWith(key, '{}')) {\n        // eslint-disable-next-line no-param-reassign\n        key = metaTokens ? key : key.slice(0, -2);\n        // eslint-disable-next-line no-param-reassign\n        value = JSON.stringify(value);\n      } else if (\n        (utils.isArray(value) && isFlatArray(value)) ||\n        ((utils.isFileList(value) || utils.endsWith(key, '[]')) && (arr = utils.toArray(value))\n        )) {\n        // eslint-disable-next-line no-param-reassign\n        key = removeBrackets(key);\n\n        arr.forEach(function each(el, index) {\n          !(utils.isUndefined(el) || el === null) && formData.append(\n            // eslint-disable-next-line no-nested-ternary\n            indexes === true ? renderKey([key], index, dots) : (indexes === null ? key : key + '[]'),\n            convertValue(el)\n          );\n        });\n        return false;\n      }\n    }\n\n    if (isVisitable(value)) {\n      return true;\n    }\n\n    formData.append(renderKey(path, key, dots), convertValue(value));\n\n    return false;\n  }\n\n  const stack = [];\n\n  const exposedHelpers = Object.assign(predicates, {\n    defaultVisitor,\n    convertValue,\n    isVisitable\n  });\n\n  function build(value, path) {\n    if (utils.isUndefined(value)) return;\n\n    if (stack.indexOf(value) !== -1) {\n      throw Error('Circular reference detected in ' + path.join('.'));\n    }\n\n    stack.push(value);\n\n    utils.forEach(value, function each(el, key) {\n      const result = !(utils.isUndefined(el) || el === null) && visitor.call(\n        formData, el, utils.isString(key) ? key.trim() : key, path, exposedHelpers\n      );\n\n      if (result === true) {\n        build(el, path ? path.concat(key) : [key]);\n      }\n    });\n\n    stack.pop();\n  }\n\n  if (!utils.isObject(obj)) {\n    throw new TypeError('data must be an object');\n  }\n\n  build(obj);\n\n  return formData;\n}\n\nexport default toFormData;\n","'use strict';\n\nimport toFormData from './toFormData.js';\n\n/**\n * It encodes a string by replacing all characters that are not in the unreserved set with\n * their percent-encoded equivalents\n *\n * @param {string} str - The string to encode.\n *\n * @returns {string} The encoded string.\n */\nfunction encode(str) {\n  const charMap = {\n    '!': '%21',\n    \"'\": '%27',\n    '(': '%28',\n    ')': '%29',\n    '~': '%7E',\n    '%20': '+',\n    '%00': '\\x00'\n  };\n  return encodeURIComponent(str).replace(/[!'()~]|%20|%00/g, function replacer(match) {\n    return charMap[match];\n  });\n}\n\n/**\n * It takes a params object and converts it to a FormData object\n *\n * @param {Object<string, any>} params - The parameters to be converted to a FormData object.\n * @param {Object<string, any>} options - The options object passed to the Axios constructor.\n *\n * @returns {void}\n */\nfunction AxiosURLSearchParams(params, options) {\n  this._pairs = [];\n\n  params && toFormData(params, this, options);\n}\n\nconst prototype = AxiosURLSearchParams.prototype;\n\nprototype.append = function append(name, value) {\n  this._pairs.push([name, value]);\n};\n\nprototype.toString = function toString(encoder) {\n  const _encode = encoder ? function(value) {\n    return encoder.call(this, value, encode);\n  } : encode;\n\n  return this._pairs.map(function each(pair) {\n    return _encode(pair[0]) + '=' + _encode(pair[1]);\n  }, '').join('&');\n};\n\nexport default AxiosURLSearchParams;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosURLSearchParams from '../helpers/AxiosURLSearchParams.js';\n\n/**\n * It replaces all instances of the characters `:`, `$`, `,`, `+`, `[`, and `]` with their\n * URI encoded counterparts\n *\n * @param {string} val The value to be encoded.\n *\n * @returns {string} The encoded value.\n */\nfunction encode(val) {\n  return encodeURIComponent(val).\n    replace(/%3A/gi, ':').\n    replace(/%24/g, '$').\n    replace(/%2C/gi, ',').\n    replace(/%20/g, '+').\n    replace(/%5B/gi, '[').\n    replace(/%5D/gi, ']');\n}\n\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @param {?(object|Function)} options\n *\n * @returns {string} The formatted url\n */\nexport default function buildURL(url, params, options) {\n  /*eslint no-param-reassign:0*/\n  if (!params) {\n    return url;\n  }\n  \n  const _encode = options && options.encode || encode;\n\n  if (utils.isFunction(options)) {\n    options = {\n      serialize: options\n    };\n  } \n\n  const serializeFn = options && options.serialize;\n\n  let serializedParams;\n\n  if (serializeFn) {\n    serializedParams = serializeFn(params, options);\n  } else {\n    serializedParams = utils.isURLSearchParams(params) ?\n      params.toString() :\n      new AxiosURLSearchParams(params, options).toString(_encode);\n  }\n\n  if (serializedParams) {\n    const hashmarkIndex = url.indexOf(\"#\");\n\n    if (hashmarkIndex !== -1) {\n      url = url.slice(0, hashmarkIndex);\n    }\n    url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n  }\n\n  return url;\n}\n","'use strict';\n\nimport utils from './../utils.js';\n\nclass InterceptorManager {\n  constructor() {\n    this.handlers = [];\n  }\n\n  /**\n   * Add a new interceptor to the stack\n   *\n   * @param {Function} fulfilled The function to handle `then` for a `Promise`\n   * @param {Function} rejected The function to handle `reject` for a `Promise`\n   *\n   * @return {Number} An ID used to remove interceptor later\n   */\n  use(fulfilled, rejected, options) {\n    this.handlers.push({\n      fulfilled,\n      rejected,\n      synchronous: options ? options.synchronous : false,\n      runWhen: options ? options.runWhen : null\n    });\n    return this.handlers.length - 1;\n  }\n\n  /**\n   * Remove an interceptor from the stack\n   *\n   * @param {Number} id The ID that was returned by `use`\n   *\n   * @returns {Boolean} `true` if the interceptor was removed, `false` otherwise\n   */\n  eject(id) {\n    if (this.handlers[id]) {\n      this.handlers[id] = null;\n    }\n  }\n\n  /**\n   * Clear all interceptors from the stack\n   *\n   * @returns {void}\n   */\n  clear() {\n    if (this.handlers) {\n      this.handlers = [];\n    }\n  }\n\n  /**\n   * Iterate over all the registered interceptors\n   *\n   * This method is particularly useful for skipping over any\n   * interceptors that may have become `null` calling `eject`.\n   *\n   * @param {Function} fn The function to call for each interceptor\n   *\n   * @returns {void}\n   */\n  forEach(fn) {\n    utils.forEach(this.handlers, function forEachHandler(h) {\n      if (h !== null) {\n        fn(h);\n      }\n    });\n  }\n}\n\nexport default InterceptorManager;\n","'use strict';\n\nexport default {\n  silentJSONParsing: true,\n  forcedJSONParsing: true,\n  clarifyTimeoutError: false\n};\n","import URLSearchParams from './classes/URLSearchParams.js'\nimport FormData from './classes/FormData.js'\nimport Blob from './classes/Blob.js'\n\nexport default {\n  isBrowser: true,\n  classes: {\n    URLSearchParams,\n    FormData,\n    Blob\n  },\n  protocols: ['http', 'https', 'file', 'blob', 'url', 'data']\n};\n","'use strict';\n\nimport AxiosURLSearchParams from '../../../helpers/AxiosURLSearchParams.js';\nexport default typeof URLSearchParams !== 'undefined' ? URLSearchParams : AxiosURLSearchParams;\n","'use strict';\n\nexport default typeof FormData !== 'undefined' ? FormData : null;\n","'use strict'\n\nexport default typeof Blob !== 'undefined' ? Blob : null\n","const hasBrowserEnv = typeof window !== 'undefined' && typeof document !== 'undefined';\n\nconst _navigator = typeof navigator === 'object' && navigator || undefined;\n\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n *  typeof window -> undefined\n *  typeof document -> undefined\n *\n * react-native:\n *  navigator.product -> 'ReactNative'\n * nativescript\n *  navigator.product -> 'NativeScript' or 'NS'\n *\n * @returns {boolean}\n */\nconst hasStandardBrowserEnv = hasBrowserEnv &&\n  (!_navigator || ['ReactNative', 'NativeScript', 'NS'].indexOf(_navigator.product) < 0);\n\n/**\n * Determine if we're running in a standard browser webWorker environment\n *\n * Although the `isStandardBrowserEnv` method indicates that\n * `allows axios to run in a web worker`, the WebWorker will still be\n * filtered out due to its judgment standard\n * `typeof window !== 'undefined' && typeof document !== 'undefined'`.\n * This leads to a problem when axios post `FormData` in webWorker\n */\nconst hasStandardBrowserWebWorkerEnv = (() => {\n  return (\n    typeof WorkerGlobalScope !== 'undefined' &&\n    // eslint-disable-next-line no-undef\n    self instanceof WorkerGlobalScope &&\n    typeof self.importScripts === 'function'\n  );\n})();\n\nconst origin = hasBrowserEnv && window.location.href || 'http://localhost';\n\nexport {\n  hasBrowserEnv,\n  hasStandardBrowserWebWorkerEnv,\n  hasStandardBrowserEnv,\n  _navigator as navigator,\n  origin\n}\n","import platform from './node/index.js';\nimport * as utils from './common/utils.js';\n\nexport default {\n  ...utils,\n  ...platform\n}\n","'use strict';\n\nimport utils from '../utils.js';\n\n/**\n * It takes a string like `foo[x][y][z]` and returns an array like `['foo', 'x', 'y', 'z']\n *\n * @param {string} name - The name of the property to get.\n *\n * @returns An array of strings.\n */\nfunction parsePropPath(name) {\n  // foo[x][y][z]\n  // foo.x.y.z\n  // foo-x-y-z\n  // foo x y z\n  return utils.matchAll(/\\w+|\\[(\\w*)]/g, name).map(match => {\n    return match[0] === '[]' ? '' : match[1] || match[0];\n  });\n}\n\n/**\n * Convert an array to an object.\n *\n * @param {Array<any>} arr - The array to convert to an object.\n *\n * @returns An object with the same keys and values as the array.\n */\nfunction arrayToObject(arr) {\n  const obj = {};\n  const keys = Object.keys(arr);\n  let i;\n  const len = keys.length;\n  let key;\n  for (i = 0; i < len; i++) {\n    key = keys[i];\n    obj[key] = arr[key];\n  }\n  return obj;\n}\n\n/**\n * It takes a FormData object and returns a JavaScript object\n *\n * @param {string} formData The FormData object to convert to JSON.\n *\n * @returns {Object<string, any> | null} The converted object.\n */\nfunction formDataToJSON(formData) {\n  function buildPath(path, value, target, index) {\n    let name = path[index++];\n\n    if (name === '__proto__') return true;\n\n    const isNumericKey = Number.isFinite(+name);\n    const isLast = index >= path.length;\n    name = !name && utils.isArray(target) ? target.length : name;\n\n    if (isLast) {\n      if (utils.hasOwnProp(target, name)) {\n        target[name] = [target[name], value];\n      } else {\n        target[name] = value;\n      }\n\n      return !isNumericKey;\n    }\n\n    if (!target[name] || !utils.isObject(target[name])) {\n      target[name] = [];\n    }\n\n    const result = buildPath(path, value, target[name], index);\n\n    if (result && utils.isArray(target[name])) {\n      target[name] = arrayToObject(target[name]);\n    }\n\n    return !isNumericKey;\n  }\n\n  if (utils.isFormData(formData) && utils.isFunction(formData.entries)) {\n    const obj = {};\n\n    utils.forEachEntry(formData, (name, value) => {\n      buildPath(parsePropPath(name), value, obj, 0);\n    });\n\n    return obj;\n  }\n\n  return null;\n}\n\nexport default formDataToJSON;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosError from '../core/AxiosError.js';\nimport transitionalDefaults from './transitional.js';\nimport toFormData from '../helpers/toFormData.js';\nimport toURLEncodedForm from '../helpers/toURLEncodedForm.js';\nimport platform from '../platform/index.js';\nimport formDataToJSON from '../helpers/formDataToJSON.js';\n\n/**\n * It takes a string, tries to parse it, and if it fails, it returns the stringified version\n * of the input\n *\n * @param {any} rawValue - The value to be stringified.\n * @param {Function} parser - A function that parses a string into a JavaScript object.\n * @param {Function} encoder - A function that takes a value and returns a string.\n *\n * @returns {string} A stringified version of the rawValue.\n */\nfunction stringifySafely(rawValue, parser, encoder) {\n  if (utils.isString(rawValue)) {\n    try {\n      (parser || JSON.parse)(rawValue);\n      return utils.trim(rawValue);\n    } catch (e) {\n      if (e.name !== 'SyntaxError') {\n        throw e;\n      }\n    }\n  }\n\n  return (encoder || JSON.stringify)(rawValue);\n}\n\nconst defaults = {\n\n  transitional: transitionalDefaults,\n\n  adapter: ['xhr', 'http', 'fetch'],\n\n  transformRequest: [function transformRequest(data, headers) {\n    const contentType = headers.getContentType() || '';\n    const hasJSONContentType = contentType.indexOf('application/json') > -1;\n    const isObjectPayload = utils.isObject(data);\n\n    if (isObjectPayload && utils.isHTMLForm(data)) {\n      data = new FormData(data);\n    }\n\n    const isFormData = utils.isFormData(data);\n\n    if (isFormData) {\n      return hasJSONContentType ? JSON.stringify(formDataToJSON(data)) : data;\n    }\n\n    if (utils.isArrayBuffer(data) ||\n      utils.isBuffer(data) ||\n      utils.isStream(data) ||\n      utils.isFile(data) ||\n      utils.isBlob(data) ||\n      utils.isReadableStream(data)\n    ) {\n      return data;\n    }\n    if (utils.isArrayBufferView(data)) {\n      return data.buffer;\n    }\n    if (utils.isURLSearchParams(data)) {\n      headers.setContentType('application/x-www-form-urlencoded;charset=utf-8', false);\n      return data.toString();\n    }\n\n    let isFileList;\n\n    if (isObjectPayload) {\n      if (contentType.indexOf('application/x-www-form-urlencoded') > -1) {\n        return toURLEncodedForm(data, this.formSerializer).toString();\n      }\n\n      if ((isFileList = utils.isFileList(data)) || contentType.indexOf('multipart/form-data') > -1) {\n        const _FormData = this.env && this.env.FormData;\n\n        return toFormData(\n          isFileList ? {'files[]': data} : data,\n          _FormData && new _FormData(),\n          this.formSerializer\n        );\n      }\n    }\n\n    if (isObjectPayload || hasJSONContentType ) {\n      headers.setContentType('application/json', false);\n      return stringifySafely(data);\n    }\n\n    return data;\n  }],\n\n  transformResponse: [function transformResponse(data) {\n    const transitional = this.transitional || defaults.transitional;\n    const forcedJSONParsing = transitional && transitional.forcedJSONParsing;\n    const JSONRequested = this.responseType === 'json';\n\n    if (utils.isResponse(data) || utils.isReadableStream(data)) {\n      return data;\n    }\n\n    if (data && utils.isString(data) && ((forcedJSONParsing && !this.responseType) || JSONRequested)) {\n      const silentJSONParsing = transitional && transitional.silentJSONParsing;\n      const strictJSONParsing = !silentJSONParsing && JSONRequested;\n\n      try {\n        return JSON.parse(data);\n      } catch (e) {\n        if (strictJSONParsing) {\n          if (e.name === 'SyntaxError') {\n            throw AxiosError.from(e, AxiosError.ERR_BAD_RESPONSE, this, null, this.response);\n          }\n          throw e;\n        }\n      }\n    }\n\n    return data;\n  }],\n\n  /**\n   * A timeout in milliseconds to abort a request. If set to 0 (default) a\n   * timeout is not created.\n   */\n  timeout: 0,\n\n  xsrfCookieName: 'XSRF-TOKEN',\n  xsrfHeaderName: 'X-XSRF-TOKEN',\n\n  maxContentLength: -1,\n  maxBodyLength: -1,\n\n  env: {\n    FormData: platform.classes.FormData,\n    Blob: platform.classes.Blob\n  },\n\n  validateStatus: function validateStatus(status) {\n    return status >= 200 && status < 300;\n  },\n\n  headers: {\n    common: {\n      'Accept': 'application/json, text/plain, */*',\n      'Content-Type': undefined\n    }\n  }\n};\n\nutils.forEach(['delete', 'get', 'head', 'post', 'put', 'patch'], (method) => {\n  defaults.headers[method] = {};\n});\n\nexport default defaults;\n","'use strict';\n\nimport utils from '../utils.js';\nimport toFormData from './toFormData.js';\nimport platform from '../platform/index.js';\n\nexport default function toURLEncodedForm(data, options) {\n  return toFormData(data, new platform.classes.URLSearchParams(), Object.assign({\n    visitor: function(value, key, path, helpers) {\n      if (platform.isNode && utils.isBuffer(value)) {\n        this.append(key, value.toString('base64'));\n        return false;\n      }\n\n      return helpers.defaultVisitor.apply(this, arguments);\n    }\n  }, options));\n}\n","'use strict';\n\nimport utils from './../utils.js';\n\n// RawAxiosHeaders whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nconst ignoreDuplicateOf = utils.toObjectSet([\n  'age', 'authorization', 'content-length', 'content-type', 'etag',\n  'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since',\n  'last-modified', 'location', 'max-forwards', 'proxy-authorization',\n  'referer', 'retry-after', 'user-agent'\n]);\n\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} rawHeaders Headers needing to be parsed\n *\n * @returns {Object} Headers parsed into an object\n */\nexport default rawHeaders => {\n  const parsed = {};\n  let key;\n  let val;\n  let i;\n\n  rawHeaders && rawHeaders.split('\\n').forEach(function parser(line) {\n    i = line.indexOf(':');\n    key = line.substring(0, i).trim().toLowerCase();\n    val = line.substring(i + 1).trim();\n\n    if (!key || (parsed[key] && ignoreDuplicateOf[key])) {\n      return;\n    }\n\n    if (key === 'set-cookie') {\n      if (parsed[key]) {\n        parsed[key].push(val);\n      } else {\n        parsed[key] = [val];\n      }\n    } else {\n      parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n    }\n  });\n\n  return parsed;\n};\n","'use strict';\n\nimport utils from '../utils.js';\nimport parseHeaders from '../helpers/parseHeaders.js';\n\nconst $internals = Symbol('internals');\n\nfunction normalizeHeader(header) {\n  return header && String(header).trim().toLowerCase();\n}\n\nfunction normalizeValue(value) {\n  if (value === false || value == null) {\n    return value;\n  }\n\n  return utils.isArray(value) ? value.map(normalizeValue) : String(value);\n}\n\nfunction parseTokens(str) {\n  const tokens = Object.create(null);\n  const tokensRE = /([^\\s,;=]+)\\s*(?:=\\s*([^,;]+))?/g;\n  let match;\n\n  while ((match = tokensRE.exec(str))) {\n    tokens[match[1]] = match[2];\n  }\n\n  return tokens;\n}\n\nconst isValidHeaderName = (str) => /^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(str.trim());\n\nfunction matchHeaderValue(context, value, header, filter, isHeaderNameFilter) {\n  if (utils.isFunction(filter)) {\n    return filter.call(this, value, header);\n  }\n\n  if (isHeaderNameFilter) {\n    value = header;\n  }\n\n  if (!utils.isString(value)) return;\n\n  if (utils.isString(filter)) {\n    return value.indexOf(filter) !== -1;\n  }\n\n  if (utils.isRegExp(filter)) {\n    return filter.test(value);\n  }\n}\n\nfunction formatHeader(header) {\n  return header.trim()\n    .toLowerCase().replace(/([a-z\\d])(\\w*)/g, (w, char, str) => {\n      return char.toUpperCase() + str;\n    });\n}\n\nfunction buildAccessors(obj, header) {\n  const accessorName = utils.toCamelCase(' ' + header);\n\n  ['get', 'set', 'has'].forEach(methodName => {\n    Object.defineProperty(obj, methodName + accessorName, {\n      value: function(arg1, arg2, arg3) {\n        return this[methodName].call(this, header, arg1, arg2, arg3);\n      },\n      configurable: true\n    });\n  });\n}\n\nclass AxiosHeaders {\n  constructor(headers) {\n    headers && this.set(headers);\n  }\n\n  set(header, valueOrRewrite, rewrite) {\n    const self = this;\n\n    function setHeader(_value, _header, _rewrite) {\n      const lHeader = normalizeHeader(_header);\n\n      if (!lHeader) {\n        throw new Error('header name must be a non-empty string');\n      }\n\n      const key = utils.findKey(self, lHeader);\n\n      if(!key || self[key] === undefined || _rewrite === true || (_rewrite === undefined && self[key] !== false)) {\n        self[key || _header] = normalizeValue(_value);\n      }\n    }\n\n    const setHeaders = (headers, _rewrite) =>\n      utils.forEach(headers, (_value, _header) => setHeader(_value, _header, _rewrite));\n\n    if (utils.isPlainObject(header) || header instanceof this.constructor) {\n      setHeaders(header, valueOrRewrite)\n    } else if(utils.isString(header) && (header = header.trim()) && !isValidHeaderName(header)) {\n      setHeaders(parseHeaders(header), valueOrRewrite);\n    } else if (utils.isObject(header) && utils.isIterable(header)) {\n      let obj = {}, dest, key;\n      for (const entry of header) {\n        if (!utils.isArray(entry)) {\n          throw TypeError('Object iterator must return a key-value pair');\n        }\n\n        obj[key = entry[0]] = (dest = obj[key]) ?\n          (utils.isArray(dest) ? [...dest, entry[1]] : [dest, entry[1]]) : entry[1];\n      }\n\n      setHeaders(obj, valueOrRewrite)\n    } else {\n      header != null && setHeader(valueOrRewrite, header, rewrite);\n    }\n\n    return this;\n  }\n\n  get(header, parser) {\n    header = normalizeHeader(header);\n\n    if (header) {\n      const key = utils.findKey(this, header);\n\n      if (key) {\n        const value = this[key];\n\n        if (!parser) {\n          return value;\n        }\n\n        if (parser === true) {\n          return parseTokens(value);\n        }\n\n        if (utils.isFunction(parser)) {\n          return parser.call(this, value, key);\n        }\n\n        if (utils.isRegExp(parser)) {\n          return parser.exec(value);\n        }\n\n        throw new TypeError('parser must be boolean|regexp|function');\n      }\n    }\n  }\n\n  has(header, matcher) {\n    header = normalizeHeader(header);\n\n    if (header) {\n      const key = utils.findKey(this, header);\n\n      return !!(key && this[key] !== undefined && (!matcher || matchHeaderValue(this, this[key], key, matcher)));\n    }\n\n    return false;\n  }\n\n  delete(header, matcher) {\n    const self = this;\n    let deleted = false;\n\n    function deleteHeader(_header) {\n      _header = normalizeHeader(_header);\n\n      if (_header) {\n        const key = utils.findKey(self, _header);\n\n        if (key && (!matcher || matchHeaderValue(self, self[key], key, matcher))) {\n          delete self[key];\n\n          deleted = true;\n        }\n      }\n    }\n\n    if (utils.isArray(header)) {\n      header.forEach(deleteHeader);\n    } else {\n      deleteHeader(header);\n    }\n\n    return deleted;\n  }\n\n  clear(matcher) {\n    const keys = Object.keys(this);\n    let i = keys.length;\n    let deleted = false;\n\n    while (i--) {\n      const key = keys[i];\n      if(!matcher || matchHeaderValue(this, this[key], key, matcher, true)) {\n        delete this[key];\n        deleted = true;\n      }\n    }\n\n    return deleted;\n  }\n\n  normalize(format) {\n    const self = this;\n    const headers = {};\n\n    utils.forEach(this, (value, header) => {\n      const key = utils.findKey(headers, header);\n\n      if (key) {\n        self[key] = normalizeValue(value);\n        delete self[header];\n        return;\n      }\n\n      const normalized = format ? formatHeader(header) : String(header).trim();\n\n      if (normalized !== header) {\n        delete self[header];\n      }\n\n      self[normalized] = normalizeValue(value);\n\n      headers[normalized] = true;\n    });\n\n    return this;\n  }\n\n  concat(...targets) {\n    return this.constructor.concat(this, ...targets);\n  }\n\n  toJSON(asStrings) {\n    const obj = Object.create(null);\n\n    utils.forEach(this, (value, header) => {\n      value != null && value !== false && (obj[header] = asStrings && utils.isArray(value) ? value.join(', ') : value);\n    });\n\n    return obj;\n  }\n\n  [Symbol.iterator]() {\n    return Object.entries(this.toJSON())[Symbol.iterator]();\n  }\n\n  toString() {\n    return Object.entries(this.toJSON()).map(([header, value]) => header + ': ' + value).join('\\n');\n  }\n\n  getSetCookie() {\n    return this.get(\"set-cookie\") || [];\n  }\n\n  get [Symbol.toStringTag]() {\n    return 'AxiosHeaders';\n  }\n\n  static from(thing) {\n    return thing instanceof this ? thing : new this(thing);\n  }\n\n  static concat(first, ...targets) {\n    const computed = new this(first);\n\n    targets.forEach((target) => computed.set(target));\n\n    return computed;\n  }\n\n  static accessor(header) {\n    const internals = this[$internals] = (this[$internals] = {\n      accessors: {}\n    });\n\n    const accessors = internals.accessors;\n    const prototype = this.prototype;\n\n    function defineAccessor(_header) {\n      const lHeader = normalizeHeader(_header);\n\n      if (!accessors[lHeader]) {\n        buildAccessors(prototype, _header);\n        accessors[lHeader] = true;\n      }\n    }\n\n    utils.isArray(header) ? header.forEach(defineAccessor) : defineAccessor(header);\n\n    return this;\n  }\n}\n\nAxiosHeaders.accessor(['Content-Type', 'Content-Length', 'Accept', 'Accept-Encoding', 'User-Agent', 'Authorization']);\n\n// reserved names hotfix\nutils.reduceDescriptors(AxiosHeaders.prototype, ({value}, key) => {\n  let mapped = key[0].toUpperCase() + key.slice(1); // map `set` => `Set`\n  return {\n    get: () => value,\n    set(headerValue) {\n      this[mapped] = headerValue;\n    }\n  }\n});\n\nutils.freezeMethods(AxiosHeaders);\n\nexport default AxiosHeaders;\n","'use strict';\n\nimport utils from './../utils.js';\nimport defaults from '../defaults/index.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Array|Function} fns A single function or Array of functions\n * @param {?Object} response The response object\n *\n * @returns {*} The resulting transformed data\n */\nexport default function transformData(fns, response) {\n  const config = this || defaults;\n  const context = response || config;\n  const headers = AxiosHeaders.from(context.headers);\n  let data = context.data;\n\n  utils.forEach(fns, function transform(fn) {\n    data = fn.call(config, data, headers.normalize(), response ? response.status : undefined);\n  });\n\n  headers.normalize();\n\n  return data;\n}\n","'use strict';\n\nexport default function isCancel(value) {\n  return !!(value && value.__CANCEL__);\n}\n","'use strict';\n\nimport AxiosError from '../core/AxiosError.js';\nimport utils from '../utils.js';\n\n/**\n * A `CanceledError` is an object that is thrown when an operation is canceled.\n *\n * @param {string=} message The message.\n * @param {Object=} config The config.\n * @param {Object=} request The request.\n *\n * @returns {CanceledError} The created error.\n */\nfunction CanceledError(message, config, request) {\n  // eslint-disable-next-line no-eq-null,eqeqeq\n  AxiosError.call(this, message == null ? 'canceled' : message, AxiosError.ERR_CANCELED, config, request);\n  this.name = 'CanceledError';\n}\n\nutils.inherits(CanceledError, AxiosError, {\n  __CANCEL__: true\n});\n\nexport default CanceledError;\n","'use strict';\n\nimport AxiosError from './AxiosError.js';\n\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n *\n * @returns {object} The response.\n */\nexport default function settle(resolve, reject, response) {\n  const validateStatus = response.config.validateStatus;\n  if (!response.status || !validateStatus || validateStatus(response.status)) {\n    resolve(response);\n  } else {\n    reject(new AxiosError(\n      'Request failed with status code ' + response.status,\n      [AxiosError.ERR_BAD_REQUEST, AxiosError.ERR_BAD_RESPONSE][Math.floor(response.status / 100) - 4],\n      response.config,\n      response.request,\n      response\n    ));\n  }\n}\n","'use strict';\n\n/**\n * Calculate data maxRate\n * @param {Number} [samplesCount= 10]\n * @param {Number} [min= 1000]\n * @returns {Function}\n */\nfunction speedometer(samplesCount, min) {\n  samplesCount = samplesCount || 10;\n  const bytes = new Array(samplesCount);\n  const timestamps = new Array(samplesCount);\n  let head = 0;\n  let tail = 0;\n  let firstSampleTS;\n\n  min = min !== undefined ? min : 1000;\n\n  return function push(chunkLength) {\n    const now = Date.now();\n\n    const startedAt = timestamps[tail];\n\n    if (!firstSampleTS) {\n      firstSampleTS = now;\n    }\n\n    bytes[head] = chunkLength;\n    timestamps[head] = now;\n\n    let i = tail;\n    let bytesCount = 0;\n\n    while (i !== head) {\n      bytesCount += bytes[i++];\n      i = i % samplesCount;\n    }\n\n    head = (head + 1) % samplesCount;\n\n    if (head === tail) {\n      tail = (tail + 1) % samplesCount;\n    }\n\n    if (now - firstSampleTS < min) {\n      return;\n    }\n\n    const passed = startedAt && now - startedAt;\n\n    return passed ? Math.round(bytesCount * 1000 / passed) : undefined;\n  };\n}\n\nexport default speedometer;\n","import speedometer from \"./speedometer.js\";\nimport throttle from \"./throttle.js\";\nimport utils from \"../utils.js\";\n\nexport const progressEventReducer = (listener, isDownloadStream, freq = 3) => {\n  let bytesNotified = 0;\n  const _speedometer = speedometer(50, 250);\n\n  return throttle(e => {\n    const loaded = e.loaded;\n    const total = e.lengthComputable ? e.total : undefined;\n    const progressBytes = loaded - bytesNotified;\n    const rate = _speedometer(progressBytes);\n    const inRange = loaded <= total;\n\n    bytesNotified = loaded;\n\n    const data = {\n      loaded,\n      total,\n      progress: total ? (loaded / total) : undefined,\n      bytes: progressBytes,\n      rate: rate ? rate : undefined,\n      estimated: rate && total && inRange ? (total - loaded) / rate : undefined,\n      event: e,\n      lengthComputable: total != null,\n      [isDownloadStream ? 'download' : 'upload']: true\n    };\n\n    listener(data);\n  }, freq);\n}\n\nexport const progressEventDecorator = (total, throttled) => {\n  const lengthComputable = total != null;\n\n  return [(loaded) => throttled[0]({\n    lengthComputable,\n    total,\n    loaded\n  }), throttled[1]];\n}\n\nexport const asyncDecorator = (fn) => (...args) => utils.asap(() => fn(...args));\n","/**\n * Throttle decorator\n * @param {Function} fn\n * @param {Number} freq\n * @return {Function}\n */\nfunction throttle(fn, freq) {\n  let timestamp = 0;\n  let threshold = 1000 / freq;\n  let lastArgs;\n  let timer;\n\n  const invoke = (args, now = Date.now()) => {\n    timestamp = now;\n    lastArgs = null;\n    if (timer) {\n      clearTimeout(timer);\n      timer = null;\n    }\n    fn.apply(null, args);\n  }\n\n  const throttled = (...args) => {\n    const now = Date.now();\n    const passed = now - timestamp;\n    if ( passed >= threshold) {\n      invoke(args, now);\n    } else {\n      lastArgs = args;\n      if (!timer) {\n        timer = setTimeout(() => {\n          timer = null;\n          invoke(lastArgs)\n        }, threshold - passed);\n      }\n    }\n  }\n\n  const flush = () => lastArgs && invoke(lastArgs);\n\n  return [throttled, flush];\n}\n\nexport default throttle;\n","import platform from '../platform/index.js';\n\nexport default platform.hasStandardBrowserEnv ? ((origin, isMSIE) => (url) => {\n  url = new URL(url, platform.origin);\n\n  return (\n    origin.protocol === url.protocol &&\n    origin.host === url.host &&\n    (isMSIE || origin.port === url.port)\n  );\n})(\n  new URL(platform.origin),\n  platform.navigator && /(msie|trident)/i.test(platform.navigator.userAgent)\n) : () => true;\n","import utils from './../utils.js';\nimport platform from '../platform/index.js';\n\nexport default platform.hasStandardBrowserEnv ?\n\n  // Standard browser envs support document.cookie\n  {\n    write(name, value, expires, path, domain, secure) {\n      const cookie = [name + '=' + encodeURIComponent(value)];\n\n      utils.isNumber(expires) && cookie.push('expires=' + new Date(expires).toGMTString());\n\n      utils.isString(path) && cookie.push('path=' + path);\n\n      utils.isString(domain) && cookie.push('domain=' + domain);\n\n      secure === true && cookie.push('secure');\n\n      document.cookie = cookie.join('; ');\n    },\n\n    read(name) {\n      const match = document.cookie.match(new RegExp('(^|;\\\\s*)(' + name + ')=([^;]*)'));\n      return (match ? decodeURIComponent(match[3]) : null);\n    },\n\n    remove(name) {\n      this.write(name, '', Date.now() - 86400000);\n    }\n  }\n\n  :\n\n  // Non-standard browser env (web workers, react-native) lack needed support.\n  {\n    write() {},\n    read() {\n      return null;\n    },\n    remove() {}\n  };\n\n","'use strict';\n\nimport isAbsoluteURL from '../helpers/isAbsoluteURL.js';\nimport combineURLs from '../helpers/combineURLs.js';\n\n/**\n * Creates a new URL by combining the baseURL with the requestedURL,\n * only when the requestedURL is not already an absolute URL.\n * If the requestURL is absolute, this function returns the requestedURL untouched.\n *\n * @param {string} baseURL The base URL\n * @param {string} requestedURL Absolute or relative URL to combine\n *\n * @returns {string} The combined full path\n */\nexport default function buildFullPath(baseURL, requestedURL, allowAbsoluteUrls) {\n  let isRelativeUrl = !isAbsoluteURL(requestedURL);\n  if (baseURL && (isRelativeUrl || allowAbsoluteUrls == false)) {\n    return combineURLs(baseURL, requestedURL);\n  }\n  return requestedURL;\n}\n","'use strict';\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n *\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nexport default function isAbsoluteURL(url) {\n  // A URL is considered absolute if it begins with \"<scheme>://\" or \"//\" (protocol-relative URL).\n  // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n  // by any combination of letters, digits, plus, period, or hyphen.\n  return /^([a-z][a-z\\d+\\-.]*:)?\\/\\//i.test(url);\n}\n","'use strict';\n\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n *\n * @returns {string} The combined URL\n */\nexport default function combineURLs(baseURL, relativeURL) {\n  return relativeURL\n    ? baseURL.replace(/\\/?\\/$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n    : baseURL;\n}\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosHeaders from \"./AxiosHeaders.js\";\n\nconst headersToObject = (thing) => thing instanceof AxiosHeaders ? { ...thing } : thing;\n\n/**\n * Config-specific merge-function which creates a new config-object\n * by merging two configuration objects together.\n *\n * @param {Object} config1\n * @param {Object} config2\n *\n * @returns {Object} New object resulting from merging config2 to config1\n */\nexport default function mergeConfig(config1, config2) {\n  // eslint-disable-next-line no-param-reassign\n  config2 = config2 || {};\n  const config = {};\n\n  function getMergedValue(target, source, prop, caseless) {\n    if (utils.isPlainObject(target) && utils.isPlainObject(source)) {\n      return utils.merge.call({caseless}, target, source);\n    } else if (utils.isPlainObject(source)) {\n      return utils.merge({}, source);\n    } else if (utils.isArray(source)) {\n      return source.slice();\n    }\n    return source;\n  }\n\n  // eslint-disable-next-line consistent-return\n  function mergeDeepProperties(a, b, prop , caseless) {\n    if (!utils.isUndefined(b)) {\n      return getMergedValue(a, b, prop , caseless);\n    } else if (!utils.isUndefined(a)) {\n      return getMergedValue(undefined, a, prop , caseless);\n    }\n  }\n\n  // eslint-disable-next-line consistent-return\n  function valueFromConfig2(a, b) {\n    if (!utils.isUndefined(b)) {\n      return getMergedValue(undefined, b);\n    }\n  }\n\n  // eslint-disable-next-line consistent-return\n  function defaultToConfig2(a, b) {\n    if (!utils.isUndefined(b)) {\n      return getMergedValue(undefined, b);\n    } else if (!utils.isUndefined(a)) {\n      return getMergedValue(undefined, a);\n    }\n  }\n\n  // eslint-disable-next-line consistent-return\n  function mergeDirectKeys(a, b, prop) {\n    if (prop in config2) {\n      return getMergedValue(a, b);\n    } else if (prop in config1) {\n      return getMergedValue(undefined, a);\n    }\n  }\n\n  const mergeMap = {\n    url: valueFromConfig2,\n    method: valueFromConfig2,\n    data: valueFromConfig2,\n    baseURL: defaultToConfig2,\n    transformRequest: defaultToConfig2,\n    transformResponse: defaultToConfig2,\n    paramsSerializer: defaultToConfig2,\n    timeout: defaultToConfig2,\n    timeoutMessage: defaultToConfig2,\n    withCredentials: defaultToConfig2,\n    withXSRFToken: defaultToConfig2,\n    adapter: defaultToConfig2,\n    responseType: defaultToConfig2,\n    xsrfCookieName: defaultToConfig2,\n    xsrfHeaderName: defaultToConfig2,\n    onUploadProgress: defaultToConfig2,\n    onDownloadProgress: defaultToConfig2,\n    decompress: defaultToConfig2,\n    maxContentLength: defaultToConfig2,\n    maxBodyLength: defaultToConfig2,\n    beforeRedirect: defaultToConfig2,\n    transport: defaultToConfig2,\n    httpAgent: defaultToConfig2,\n    httpsAgent: defaultToConfig2,\n    cancelToken: defaultToConfig2,\n    socketPath: defaultToConfig2,\n    responseEncoding: defaultToConfig2,\n    validateStatus: mergeDirectKeys,\n    headers: (a, b , prop) => mergeDeepProperties(headersToObject(a), headersToObject(b),prop, true)\n  };\n\n  utils.forEach(Object.keys(Object.assign({}, config1, config2)), function computeConfigValue(prop) {\n    const merge = mergeMap[prop] || mergeDeepProperties;\n    const configValue = merge(config1[prop], config2[prop], prop);\n    (utils.isUndefined(configValue) && merge !== mergeDirectKeys) || (config[prop] = configValue);\n  });\n\n  return config;\n}\n","import platform from \"../platform/index.js\";\nimport utils from \"../utils.js\";\nimport isURLSameOrigin from \"./isURLSameOrigin.js\";\nimport cookies from \"./cookies.js\";\nimport buildFullPath from \"../core/buildFullPath.js\";\nimport mergeConfig from \"../core/mergeConfig.js\";\nimport AxiosHeaders from \"../core/AxiosHeaders.js\";\nimport buildURL from \"./buildURL.js\";\n\nexport default (config) => {\n  const newConfig = mergeConfig({}, config);\n\n  let {data, withXSRFToken, xsrfHeaderName, xsrfCookieName, headers, auth} = newConfig;\n\n  newConfig.headers = headers = AxiosHeaders.from(headers);\n\n  newConfig.url = buildURL(buildFullPath(newConfig.baseURL, newConfig.url, newConfig.allowAbsoluteUrls), config.params, config.paramsSerializer);\n\n  // HTTP basic authentication\n  if (auth) {\n    headers.set('Authorization', 'Basic ' +\n      btoa((auth.username || '') + ':' + (auth.password ? unescape(encodeURIComponent(auth.password)) : ''))\n    );\n  }\n\n  let contentType;\n\n  if (utils.isFormData(data)) {\n    if (platform.hasStandardBrowserEnv || platform.hasStandardBrowserWebWorkerEnv) {\n      headers.setContentType(undefined); // Let the browser set it\n    } else if ((contentType = headers.getContentType()) !== false) {\n      // fix semicolon duplication issue for ReactNative FormData implementation\n      const [type, ...tokens] = contentType ? contentType.split(';').map(token => token.trim()).filter(Boolean) : [];\n      headers.setContentType([type || 'multipart/form-data', ...tokens].join('; '));\n    }\n  }\n\n  // Add xsrf header\n  // This is only done if running in a standard browser environment.\n  // Specifically not if we're in a web worker, or react-native.\n\n  if (platform.hasStandardBrowserEnv) {\n    withXSRFToken && utils.isFunction(withXSRFToken) && (withXSRFToken = withXSRFToken(newConfig));\n\n    if (withXSRFToken || (withXSRFToken !== false && isURLSameOrigin(newConfig.url))) {\n      // Add xsrf header\n      const xsrfValue = xsrfHeaderName && xsrfCookieName && cookies.read(xsrfCookieName);\n\n      if (xsrfValue) {\n        headers.set(xsrfHeaderName, xsrfValue);\n      }\n    }\n  }\n\n  return newConfig;\n}\n\n","import utils from './../utils.js';\nimport settle from './../core/settle.js';\nimport transitionalDefaults from '../defaults/transitional.js';\nimport AxiosError from '../core/AxiosError.js';\nimport CanceledError from '../cancel/CanceledError.js';\nimport parseProtocol from '../helpers/parseProtocol.js';\nimport platform from '../platform/index.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\nimport {progressEventReducer} from '../helpers/progressEventReducer.js';\nimport resolveConfig from \"../helpers/resolveConfig.js\";\n\nconst isXHRAdapterSupported = typeof XMLHttpRequest !== 'undefined';\n\nexport default isXHRAdapterSupported && function (config) {\n  return new Promise(function dispatchXhrRequest(resolve, reject) {\n    const _config = resolveConfig(config);\n    let requestData = _config.data;\n    const requestHeaders = AxiosHeaders.from(_config.headers).normalize();\n    let {responseType, onUploadProgress, onDownloadProgress} = _config;\n    let onCanceled;\n    let uploadThrottled, downloadThrottled;\n    let flushUpload, flushDownload;\n\n    function done() {\n      flushUpload && flushUpload(); // flush events\n      flushDownload && flushDownload(); // flush events\n\n      _config.cancelToken && _config.cancelToken.unsubscribe(onCanceled);\n\n      _config.signal && _config.signal.removeEventListener('abort', onCanceled);\n    }\n\n    let request = new XMLHttpRequest();\n\n    request.open(_config.method.toUpperCase(), _config.url, true);\n\n    // Set the request timeout in MS\n    request.timeout = _config.timeout;\n\n    function onloadend() {\n      if (!request) {\n        return;\n      }\n      // Prepare the response\n      const responseHeaders = AxiosHeaders.from(\n        'getAllResponseHeaders' in request && request.getAllResponseHeaders()\n      );\n      const responseData = !responseType || responseType === 'text' || responseType === 'json' ?\n        request.responseText : request.response;\n      const response = {\n        data: responseData,\n        status: request.status,\n        statusText: request.statusText,\n        headers: responseHeaders,\n        config,\n        request\n      };\n\n      settle(function _resolve(value) {\n        resolve(value);\n        done();\n      }, function _reject(err) {\n        reject(err);\n        done();\n      }, response);\n\n      // Clean up request\n      request = null;\n    }\n\n    if ('onloadend' in request) {\n      // Use onloadend if available\n      request.onloadend = onloadend;\n    } else {\n      // Listen for ready state to emulate onloadend\n      request.onreadystatechange = function handleLoad() {\n        if (!request || request.readyState !== 4) {\n          return;\n        }\n\n        // The request errored out and we didn't get a response, this will be\n        // handled by onerror instead\n        // With one exception: request that using file: protocol, most browsers\n        // will return status as 0 even though it's a successful request\n        if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {\n          return;\n        }\n        // readystate handler is calling before onerror or ontimeout handlers,\n        // so we should call onloadend on the next 'tick'\n        setTimeout(onloadend);\n      };\n    }\n\n    // Handle browser request cancellation (as opposed to a manual cancellation)\n    request.onabort = function handleAbort() {\n      if (!request) {\n        return;\n      }\n\n      reject(new AxiosError('Request aborted', AxiosError.ECONNABORTED, config, request));\n\n      // Clean up request\n      request = null;\n    };\n\n    // Handle low level network errors\n    request.onerror = function handleError() {\n      // Real errors are hidden from us by the browser\n      // onerror should only fire if it's a network error\n      reject(new AxiosError('Network Error', AxiosError.ERR_NETWORK, config, request));\n\n      // Clean up request\n      request = null;\n    };\n\n    // Handle timeout\n    request.ontimeout = function handleTimeout() {\n      let timeoutErrorMessage = _config.timeout ? 'timeout of ' + _config.timeout + 'ms exceeded' : 'timeout exceeded';\n      const transitional = _config.transitional || transitionalDefaults;\n      if (_config.timeoutErrorMessage) {\n        timeoutErrorMessage = _config.timeoutErrorMessage;\n      }\n      reject(new AxiosError(\n        timeoutErrorMessage,\n        transitional.clarifyTimeoutError ? AxiosError.ETIMEDOUT : AxiosError.ECONNABORTED,\n        config,\n        request));\n\n      // Clean up request\n      request = null;\n    };\n\n    // Remove Content-Type if data is undefined\n    requestData === undefined && requestHeaders.setContentType(null);\n\n    // Add headers to the request\n    if ('setRequestHeader' in request) {\n      utils.forEach(requestHeaders.toJSON(), function setRequestHeader(val, key) {\n        request.setRequestHeader(key, val);\n      });\n    }\n\n    // Add withCredentials to request if needed\n    if (!utils.isUndefined(_config.withCredentials)) {\n      request.withCredentials = !!_config.withCredentials;\n    }\n\n    // Add responseType to request if needed\n    if (responseType && responseType !== 'json') {\n      request.responseType = _config.responseType;\n    }\n\n    // Handle progress if needed\n    if (onDownloadProgress) {\n      ([downloadThrottled, flushDownload] = progressEventReducer(onDownloadProgress, true));\n      request.addEventListener('progress', downloadThrottled);\n    }\n\n    // Not all browsers support upload events\n    if (onUploadProgress && request.upload) {\n      ([uploadThrottled, flushUpload] = progressEventReducer(onUploadProgress));\n\n      request.upload.addEventListener('progress', uploadThrottled);\n\n      request.upload.addEventListener('loadend', flushUpload);\n    }\n\n    if (_config.cancelToken || _config.signal) {\n      // Handle cancellation\n      // eslint-disable-next-line func-names\n      onCanceled = cancel => {\n        if (!request) {\n          return;\n        }\n        reject(!cancel || cancel.type ? new CanceledError(null, config, request) : cancel);\n        request.abort();\n        request = null;\n      };\n\n      _config.cancelToken && _config.cancelToken.subscribe(onCanceled);\n      if (_config.signal) {\n        _config.signal.aborted ? onCanceled() : _config.signal.addEventListener('abort', onCanceled);\n      }\n    }\n\n    const protocol = parseProtocol(_config.url);\n\n    if (protocol && platform.protocols.indexOf(protocol) === -1) {\n      reject(new AxiosError('Unsupported protocol ' + protocol + ':', AxiosError.ERR_BAD_REQUEST, config));\n      return;\n    }\n\n\n    // Send the request\n    request.send(requestData || null);\n  });\n}\n","'use strict';\n\nexport default function parseProtocol(url) {\n  const match = /^([-+\\w]{1,25})(:?\\/\\/|:)/.exec(url);\n  return match && match[1] || '';\n}\n","import CanceledError from \"../cancel/CanceledError.js\";\nimport AxiosError from \"../core/AxiosError.js\";\nimport utils from '../utils.js';\n\nconst composeSignals = (signals, timeout) => {\n  const {length} = (signals = signals ? signals.filter(Boolean) : []);\n\n  if (timeout || length) {\n    let controller = new AbortController();\n\n    let aborted;\n\n    const onabort = function (reason) {\n      if (!aborted) {\n        aborted = true;\n        unsubscribe();\n        const err = reason instanceof Error ? reason : this.reason;\n        controller.abort(err instanceof AxiosError ? err : new CanceledError(err instanceof Error ? err.message : err));\n      }\n    }\n\n    let timer = timeout && setTimeout(() => {\n      timer = null;\n      onabort(new AxiosError(`timeout ${timeout} of ms exceeded`, AxiosError.ETIMEDOUT))\n    }, timeout)\n\n    const unsubscribe = () => {\n      if (signals) {\n        timer && clearTimeout(timer);\n        timer = null;\n        signals.forEach(signal => {\n          signal.unsubscribe ? signal.unsubscribe(onabort) : signal.removeEventListener('abort', onabort);\n        });\n        signals = null;\n      }\n    }\n\n    signals.forEach((signal) => signal.addEventListener('abort', onabort));\n\n    const {signal} = controller;\n\n    signal.unsubscribe = () => utils.asap(unsubscribe);\n\n    return signal;\n  }\n}\n\nexport default composeSignals;\n","\nexport const streamChunk = function* (chunk, chunkSize) {\n  let len = chunk.byteLength;\n\n  if (!chunkSize || len < chunkSize) {\n    yield chunk;\n    return;\n  }\n\n  let pos = 0;\n  let end;\n\n  while (pos < len) {\n    end = pos + chunkSize;\n    yield chunk.slice(pos, end);\n    pos = end;\n  }\n}\n\nexport const readBytes = async function* (iterable, chunkSize) {\n  for await (const chunk of readStream(iterable)) {\n    yield* streamChunk(chunk, chunkSize);\n  }\n}\n\nconst readStream = async function* (stream) {\n  if (stream[Symbol.asyncIterator]) {\n    yield* stream;\n    return;\n  }\n\n  const reader = stream.getReader();\n  try {\n    for (;;) {\n      const {done, value} = await reader.read();\n      if (done) {\n        break;\n      }\n      yield value;\n    }\n  } finally {\n    await reader.cancel();\n  }\n}\n\nexport const trackStream = (stream, chunkSize, onProgress, onFinish) => {\n  const iterator = readBytes(stream, chunkSize);\n\n  let bytes = 0;\n  let done;\n  let _onFinish = (e) => {\n    if (!done) {\n      done = true;\n      onFinish && onFinish(e);\n    }\n  }\n\n  return new ReadableStream({\n    async pull(controller) {\n      try {\n        const {done, value} = await iterator.next();\n\n        if (done) {\n         _onFinish();\n          controller.close();\n          return;\n        }\n\n        let len = value.byteLength;\n        if (onProgress) {\n          let loadedBytes = bytes += len;\n          onProgress(loadedBytes);\n        }\n        controller.enqueue(new Uint8Array(value));\n      } catch (err) {\n        _onFinish(err);\n        throw err;\n      }\n    },\n    cancel(reason) {\n      _onFinish(reason);\n      return iterator.return();\n    }\n  }, {\n    highWaterMark: 2\n  })\n}\n","import platform from \"../platform/index.js\";\nimport utils from \"../utils.js\";\nimport AxiosError from \"../core/AxiosError.js\";\nimport composeSignals from \"../helpers/composeSignals.js\";\nimport {trackStream} from \"../helpers/trackStream.js\";\nimport AxiosHeaders from \"../core/AxiosHeaders.js\";\nimport {progressEventReducer, progressEventDecorator, asyncDecorator} from \"../helpers/progressEventReducer.js\";\nimport resolveConfig from \"../helpers/resolveConfig.js\";\nimport settle from \"../core/settle.js\";\n\nconst isFetchSupported = typeof fetch === 'function' && typeof Request === 'function' && typeof Response === 'function';\nconst isReadableStreamSupported = isFetchSupported && typeof ReadableStream === 'function';\n\n// used only inside the fetch adapter\nconst encodeText = isFetchSupported && (typeof TextEncoder === 'function' ?\n    ((encoder) => (str) => encoder.encode(str))(new TextEncoder()) :\n    async (str) => new Uint8Array(await new Response(str).arrayBuffer())\n);\n\nconst test = (fn, ...args) => {\n  try {\n    return !!fn(...args);\n  } catch (e) {\n    return false\n  }\n}\n\nconst supportsRequestStream = isReadableStreamSupported && test(() => {\n  let duplexAccessed = false;\n\n  const hasContentType = new Request(platform.origin, {\n    body: new ReadableStream(),\n    method: 'POST',\n    get duplex() {\n      duplexAccessed = true;\n      return 'half';\n    },\n  }).headers.has('Content-Type');\n\n  return duplexAccessed && !hasContentType;\n});\n\nconst DEFAULT_CHUNK_SIZE = 64 * 1024;\n\nconst supportsResponseStream = isReadableStreamSupported &&\n  test(() => utils.isReadableStream(new Response('').body));\n\n\nconst resolvers = {\n  stream: supportsResponseStream && ((res) => res.body)\n};\n\nisFetchSupported && (((res) => {\n  ['text', 'arrayBuffer', 'blob', 'formData', 'stream'].forEach(type => {\n    !resolvers[type] && (resolvers[type] = utils.isFunction(res[type]) ? (res) => res[type]() :\n      (_, config) => {\n        throw new AxiosError(`Response type '${type}' is not supported`, AxiosError.ERR_NOT_SUPPORT, config);\n      })\n  });\n})(new Response));\n\nconst getBodyLength = async (body) => {\n  if (body == null) {\n    return 0;\n  }\n\n  if(utils.isBlob(body)) {\n    return body.size;\n  }\n\n  if(utils.isSpecCompliantForm(body)) {\n    const _request = new Request(platform.origin, {\n      method: 'POST',\n      body,\n    });\n    return (await _request.arrayBuffer()).byteLength;\n  }\n\n  if(utils.isArrayBufferView(body) || utils.isArrayBuffer(body)) {\n    return body.byteLength;\n  }\n\n  if(utils.isURLSearchParams(body)) {\n    body = body + '';\n  }\n\n  if(utils.isString(body)) {\n    return (await encodeText(body)).byteLength;\n  }\n}\n\nconst resolveBodyLength = async (headers, body) => {\n  const length = utils.toFiniteNumber(headers.getContentLength());\n\n  return length == null ? getBodyLength(body) : length;\n}\n\nexport default isFetchSupported && (async (config) => {\n  let {\n    url,\n    method,\n    data,\n    signal,\n    cancelToken,\n    timeout,\n    onDownloadProgress,\n    onUploadProgress,\n    responseType,\n    headers,\n    withCredentials = 'same-origin',\n    fetchOptions\n  } = resolveConfig(config);\n\n  responseType = responseType ? (responseType + '').toLowerCase() : 'text';\n\n  let composedSignal = composeSignals([signal, cancelToken && cancelToken.toAbortSignal()], timeout);\n\n  let request;\n\n  const unsubscribe = composedSignal && composedSignal.unsubscribe && (() => {\n      composedSignal.unsubscribe();\n  });\n\n  let requestContentLength;\n\n  try {\n    if (\n      onUploadProgress && supportsRequestStream && method !== 'get' && method !== 'head' &&\n      (requestContentLength = await resolveBodyLength(headers, data)) !== 0\n    ) {\n      let _request = new Request(url, {\n        method: 'POST',\n        body: data,\n        duplex: \"half\"\n      });\n\n      let contentTypeHeader;\n\n      if (utils.isFormData(data) && (contentTypeHeader = _request.headers.get('content-type'))) {\n        headers.setContentType(contentTypeHeader)\n      }\n\n      if (_request.body) {\n        const [onProgress, flush] = progressEventDecorator(\n          requestContentLength,\n          progressEventReducer(asyncDecorator(onUploadProgress))\n        );\n\n        data = trackStream(_request.body, DEFAULT_CHUNK_SIZE, onProgress, flush);\n      }\n    }\n\n    if (!utils.isString(withCredentials)) {\n      withCredentials = withCredentials ? 'include' : 'omit';\n    }\n\n    // Cloudflare Workers throws when credentials are defined\n    // see https://github.com/cloudflare/workerd/issues/902\n    const isCredentialsSupported = \"credentials\" in Request.prototype;\n    request = new Request(url, {\n      ...fetchOptions,\n      signal: composedSignal,\n      method: method.toUpperCase(),\n      headers: headers.normalize().toJSON(),\n      body: data,\n      duplex: \"half\",\n      credentials: isCredentialsSupported ? withCredentials : undefined\n    });\n\n    let response = await fetch(request, fetchOptions);\n\n    const isStreamResponse = supportsResponseStream && (responseType === 'stream' || responseType === 'response');\n\n    if (supportsResponseStream && (onDownloadProgress || (isStreamResponse && unsubscribe))) {\n      const options = {};\n\n      ['status', 'statusText', 'headers'].forEach(prop => {\n        options[prop] = response[prop];\n      });\n\n      const responseContentLength = utils.toFiniteNumber(response.headers.get('content-length'));\n\n      const [onProgress, flush] = onDownloadProgress && progressEventDecorator(\n        responseContentLength,\n        progressEventReducer(asyncDecorator(onDownloadProgress), true)\n      ) || [];\n\n      response = new Response(\n        trackStream(response.body, DEFAULT_CHUNK_SIZE, onProgress, () => {\n          flush && flush();\n          unsubscribe && unsubscribe();\n        }),\n        options\n      );\n    }\n\n    responseType = responseType || 'text';\n\n    let responseData = await resolvers[utils.findKey(resolvers, responseType) || 'text'](response, config);\n\n    !isStreamResponse && unsubscribe && unsubscribe();\n\n    return await new Promise((resolve, reject) => {\n      settle(resolve, reject, {\n        data: responseData,\n        headers: AxiosHeaders.from(response.headers),\n        status: response.status,\n        statusText: response.statusText,\n        config,\n        request\n      })\n    })\n  } catch (err) {\n    unsubscribe && unsubscribe();\n\n    if (err && err.name === 'TypeError' && /Load failed|fetch/i.test(err.message)) {\n      throw Object.assign(\n        new AxiosError('Network Error', AxiosError.ERR_NETWORK, config, request),\n        {\n          cause: err.cause || err\n        }\n      )\n    }\n\n    throw AxiosError.from(err, err && err.code, config, request);\n  }\n});\n\n\n","import utils from '../utils.js';\nimport httpAdapter from './http.js';\nimport xhrAdapter from './xhr.js';\nimport fetchAdapter from './fetch.js';\nimport AxiosError from \"../core/AxiosError.js\";\n\nconst knownAdapters = {\n  http: httpAdapter,\n  xhr: xhrAdapter,\n  fetch: fetchAdapter\n}\n\nutils.forEach(knownAdapters, (fn, value) => {\n  if (fn) {\n    try {\n      Object.defineProperty(fn, 'name', {value});\n    } catch (e) {\n      // eslint-disable-next-line no-empty\n    }\n    Object.defineProperty(fn, 'adapterName', {value});\n  }\n});\n\nconst renderReason = (reason) => `- ${reason}`;\n\nconst isResolvedHandle = (adapter) => utils.isFunction(adapter) || adapter === null || adapter === false;\n\nexport default {\n  getAdapter: (adapters) => {\n    adapters = utils.isArray(adapters) ? adapters : [adapters];\n\n    const {length} = adapters;\n    let nameOrAdapter;\n    let adapter;\n\n    const rejectedReasons = {};\n\n    for (let i = 0; i < length; i++) {\n      nameOrAdapter = adapters[i];\n      let id;\n\n      adapter = nameOrAdapter;\n\n      if (!isResolvedHandle(nameOrAdapter)) {\n        adapter = knownAdapters[(id = String(nameOrAdapter)).toLowerCase()];\n\n        if (adapter === undefined) {\n          throw new AxiosError(`Unknown adapter '${id}'`);\n        }\n      }\n\n      if (adapter) {\n        break;\n      }\n\n      rejectedReasons[id || '#' + i] = adapter;\n    }\n\n    if (!adapter) {\n\n      const reasons = Object.entries(rejectedReasons)\n        .map(([id, state]) => `adapter ${id} ` +\n          (state === false ? 'is not supported by the environment' : 'is not available in the build')\n        );\n\n      let s = length ?\n        (reasons.length > 1 ? 'since :\\n' + reasons.map(renderReason).join('\\n') : ' ' + renderReason(reasons[0])) :\n        'as no adapter specified';\n\n      throw new AxiosError(\n        `There is no suitable adapter to dispatch the request ` + s,\n        'ERR_NOT_SUPPORT'\n      );\n    }\n\n    return adapter;\n  },\n  adapters: knownAdapters\n}\n","// eslint-disable-next-line strict\nexport default null;\n","'use strict';\n\nimport transformData from './transformData.js';\nimport isCancel from '../cancel/isCancel.js';\nimport defaults from '../defaults/index.js';\nimport CanceledError from '../cancel/CanceledError.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\nimport adapters from \"../adapters/adapters.js\";\n\n/**\n * Throws a `CanceledError` if cancellation has been requested.\n *\n * @param {Object} config The config that is to be used for the request\n *\n * @returns {void}\n */\nfunction throwIfCancellationRequested(config) {\n  if (config.cancelToken) {\n    config.cancelToken.throwIfRequested();\n  }\n\n  if (config.signal && config.signal.aborted) {\n    throw new CanceledError(null, config);\n  }\n}\n\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n *\n * @returns {Promise} The Promise to be fulfilled\n */\nexport default function dispatchRequest(config) {\n  throwIfCancellationRequested(config);\n\n  config.headers = AxiosHeaders.from(config.headers);\n\n  // Transform request data\n  config.data = transformData.call(\n    config,\n    config.transformRequest\n  );\n\n  if (['post', 'put', 'patch'].indexOf(config.method) !== -1) {\n    config.headers.setContentType('application/x-www-form-urlencoded', false);\n  }\n\n  const adapter = adapters.getAdapter(config.adapter || defaults.adapter);\n\n  return adapter(config).then(function onAdapterResolution(response) {\n    throwIfCancellationRequested(config);\n\n    // Transform response data\n    response.data = transformData.call(\n      config,\n      config.transformResponse,\n      response\n    );\n\n    response.headers = AxiosHeaders.from(response.headers);\n\n    return response;\n  }, function onAdapterRejection(reason) {\n    if (!isCancel(reason)) {\n      throwIfCancellationRequested(config);\n\n      // Transform response data\n      if (reason && reason.response) {\n        reason.response.data = transformData.call(\n          config,\n          config.transformResponse,\n          reason.response\n        );\n        reason.response.headers = AxiosHeaders.from(reason.response.headers);\n      }\n    }\n\n    return Promise.reject(reason);\n  });\n}\n","export const VERSION = \"1.10.0\";","'use strict';\n\nimport {VERSION} from '../env/data.js';\nimport AxiosError from '../core/AxiosError.js';\n\nconst validators = {};\n\n// eslint-disable-next-line func-names\n['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach((type, i) => {\n  validators[type] = function validator(thing) {\n    return typeof thing === type || 'a' + (i < 1 ? 'n ' : ' ') + type;\n  };\n});\n\nconst deprecatedWarnings = {};\n\n/**\n * Transitional option validator\n *\n * @param {function|boolean?} validator - set to false if the transitional option has been removed\n * @param {string?} version - deprecated version / removed since version\n * @param {string?} message - some message with additional info\n *\n * @returns {function}\n */\nvalidators.transitional = function transitional(validator, version, message) {\n  function formatMessage(opt, desc) {\n    return '[Axios v' + VERSION + '] Transitional option \\'' + opt + '\\'' + desc + (message ? '. ' + message : '');\n  }\n\n  // eslint-disable-next-line func-names\n  return (value, opt, opts) => {\n    if (validator === false) {\n      throw new AxiosError(\n        formatMessage(opt, ' has been removed' + (version ? ' in ' + version : '')),\n        AxiosError.ERR_DEPRECATED\n      );\n    }\n\n    if (version && !deprecatedWarnings[opt]) {\n      deprecatedWarnings[opt] = true;\n      // eslint-disable-next-line no-console\n      console.warn(\n        formatMessage(\n          opt,\n          ' has been deprecated since v' + version + ' and will be removed in the near future'\n        )\n      );\n    }\n\n    return validator ? validator(value, opt, opts) : true;\n  };\n};\n\nvalidators.spelling = function spelling(correctSpelling) {\n  return (value, opt) => {\n    // eslint-disable-next-line no-console\n    console.warn(`${opt} is likely a misspelling of ${correctSpelling}`);\n    return true;\n  }\n};\n\n/**\n * Assert object's properties type\n *\n * @param {object} options\n * @param {object} schema\n * @param {boolean?} allowUnknown\n *\n * @returns {object}\n */\n\nfunction assertOptions(options, schema, allowUnknown) {\n  if (typeof options !== 'object') {\n    throw new AxiosError('options must be an object', AxiosError.ERR_BAD_OPTION_VALUE);\n  }\n  const keys = Object.keys(options);\n  let i = keys.length;\n  while (i-- > 0) {\n    const opt = keys[i];\n    const validator = schema[opt];\n    if (validator) {\n      const value = options[opt];\n      const result = value === undefined || validator(value, opt, options);\n      if (result !== true) {\n        throw new AxiosError('option ' + opt + ' must be ' + result, AxiosError.ERR_BAD_OPTION_VALUE);\n      }\n      continue;\n    }\n    if (allowUnknown !== true) {\n      throw new AxiosError('Unknown option ' + opt, AxiosError.ERR_BAD_OPTION);\n    }\n  }\n}\n\nexport default {\n  assertOptions,\n  validators\n};\n","'use strict';\n\nimport utils from './../utils.js';\nimport buildURL from '../helpers/buildURL.js';\nimport InterceptorManager from './InterceptorManager.js';\nimport dispatchRequest from './dispatchRequest.js';\nimport mergeConfig from './mergeConfig.js';\nimport buildFullPath from './buildFullPath.js';\nimport validator from '../helpers/validator.js';\nimport AxiosHeaders from './AxiosHeaders.js';\n\nconst validators = validator.validators;\n\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n *\n * @return {Axios} A new instance of Axios\n */\nclass Axios {\n  constructor(instanceConfig) {\n    this.defaults = instanceConfig || {};\n    this.interceptors = {\n      request: new InterceptorManager(),\n      response: new InterceptorManager()\n    };\n  }\n\n  /**\n   * Dispatch a request\n   *\n   * @param {String|Object} configOrUrl The config specific for this request (merged with this.defaults)\n   * @param {?Object} config\n   *\n   * @returns {Promise} The Promise to be fulfilled\n   */\n  async request(configOrUrl, config) {\n    try {\n      return await this._request(configOrUrl, config);\n    } catch (err) {\n      if (err instanceof Error) {\n        let dummy = {};\n\n        Error.captureStackTrace ? Error.captureStackTrace(dummy) : (dummy = new Error());\n\n        // slice off the Error: ... line\n        const stack = dummy.stack ? dummy.stack.replace(/^.+\\n/, '') : '';\n        try {\n          if (!err.stack) {\n            err.stack = stack;\n            // match without the 2 top stack lines\n          } else if (stack && !String(err.stack).endsWith(stack.replace(/^.+\\n.+\\n/, ''))) {\n            err.stack += '\\n' + stack\n          }\n        } catch (e) {\n          // ignore the case where \"stack\" is an un-writable property\n        }\n      }\n\n      throw err;\n    }\n  }\n\n  _request(configOrUrl, config) {\n    /*eslint no-param-reassign:0*/\n    // Allow for axios('example/url'[, config]) a la fetch API\n    if (typeof configOrUrl === 'string') {\n      config = config || {};\n      config.url = configOrUrl;\n    } else {\n      config = configOrUrl || {};\n    }\n\n    config = mergeConfig(this.defaults, config);\n\n    const {transitional, paramsSerializer, headers} = config;\n\n    if (transitional !== undefined) {\n      validator.assertOptions(transitional, {\n        silentJSONParsing: validators.transitional(validators.boolean),\n        forcedJSONParsing: validators.transitional(validators.boolean),\n        clarifyTimeoutError: validators.transitional(validators.boolean)\n      }, false);\n    }\n\n    if (paramsSerializer != null) {\n      if (utils.isFunction(paramsSerializer)) {\n        config.paramsSerializer = {\n          serialize: paramsSerializer\n        }\n      } else {\n        validator.assertOptions(paramsSerializer, {\n          encode: validators.function,\n          serialize: validators.function\n        }, true);\n      }\n    }\n\n    // Set config.allowAbsoluteUrls\n    if (config.allowAbsoluteUrls !== undefined) {\n      // do nothing\n    } else if (this.defaults.allowAbsoluteUrls !== undefined) {\n      config.allowAbsoluteUrls = this.defaults.allowAbsoluteUrls;\n    } else {\n      config.allowAbsoluteUrls = true;\n    }\n\n    validator.assertOptions(config, {\n      baseUrl: validators.spelling('baseURL'),\n      withXsrfToken: validators.spelling('withXSRFToken')\n    }, true);\n\n    // Set config.method\n    config.method = (config.method || this.defaults.method || 'get').toLowerCase();\n\n    // Flatten headers\n    let contextHeaders = headers && utils.merge(\n      headers.common,\n      headers[config.method]\n    );\n\n    headers && utils.forEach(\n      ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],\n      (method) => {\n        delete headers[method];\n      }\n    );\n\n    config.headers = AxiosHeaders.concat(contextHeaders, headers);\n\n    // filter out skipped interceptors\n    const requestInterceptorChain = [];\n    let synchronousRequestInterceptors = true;\n    this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n      if (typeof interceptor.runWhen === 'function' && interceptor.runWhen(config) === false) {\n        return;\n      }\n\n      synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous;\n\n      requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected);\n    });\n\n    const responseInterceptorChain = [];\n    this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n      responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected);\n    });\n\n    let promise;\n    let i = 0;\n    let len;\n\n    if (!synchronousRequestInterceptors) {\n      const chain = [dispatchRequest.bind(this), undefined];\n      chain.unshift.apply(chain, requestInterceptorChain);\n      chain.push.apply(chain, responseInterceptorChain);\n      len = chain.length;\n\n      promise = Promise.resolve(config);\n\n      while (i < len) {\n        promise = promise.then(chain[i++], chain[i++]);\n      }\n\n      return promise;\n    }\n\n    len = requestInterceptorChain.length;\n\n    let newConfig = config;\n\n    i = 0;\n\n    while (i < len) {\n      const onFulfilled = requestInterceptorChain[i++];\n      const onRejected = requestInterceptorChain[i++];\n      try {\n        newConfig = onFulfilled(newConfig);\n      } catch (error) {\n        onRejected.call(this, error);\n        break;\n      }\n    }\n\n    try {\n      promise = dispatchRequest.call(this, newConfig);\n    } catch (error) {\n      return Promise.reject(error);\n    }\n\n    i = 0;\n    len = responseInterceptorChain.length;\n\n    while (i < len) {\n      promise = promise.then(responseInterceptorChain[i++], responseInterceptorChain[i++]);\n    }\n\n    return promise;\n  }\n\n  getUri(config) {\n    config = mergeConfig(this.defaults, config);\n    const fullPath = buildFullPath(config.baseURL, config.url, config.allowAbsoluteUrls);\n    return buildURL(fullPath, config.params, config.paramsSerializer);\n  }\n}\n\n// Provide aliases for supported request methods\nutils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n  /*eslint func-names:0*/\n  Axios.prototype[method] = function(url, config) {\n    return this.request(mergeConfig(config || {}, {\n      method,\n      url,\n      data: (config || {}).data\n    }));\n  };\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n  /*eslint func-names:0*/\n\n  function generateHTTPMethod(isForm) {\n    return function httpMethod(url, data, config) {\n      return this.request(mergeConfig(config || {}, {\n        method,\n        headers: isForm ? {\n          'Content-Type': 'multipart/form-data'\n        } : {},\n        url,\n        data\n      }));\n    };\n  }\n\n  Axios.prototype[method] = generateHTTPMethod();\n\n  Axios.prototype[method + 'Form'] = generateHTTPMethod(true);\n});\n\nexport default Axios;\n","'use strict';\n\nimport CanceledError from './CanceledError.js';\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @param {Function} executor The executor function.\n *\n * @returns {CancelToken}\n */\nclass CancelToken {\n  constructor(executor) {\n    if (typeof executor !== 'function') {\n      throw new TypeError('executor must be a function.');\n    }\n\n    let resolvePromise;\n\n    this.promise = new Promise(function promiseExecutor(resolve) {\n      resolvePromise = resolve;\n    });\n\n    const token = this;\n\n    // eslint-disable-next-line func-names\n    this.promise.then(cancel => {\n      if (!token._listeners) return;\n\n      let i = token._listeners.length;\n\n      while (i-- > 0) {\n        token._listeners[i](cancel);\n      }\n      token._listeners = null;\n    });\n\n    // eslint-disable-next-line func-names\n    this.promise.then = onfulfilled => {\n      let _resolve;\n      // eslint-disable-next-line func-names\n      const promise = new Promise(resolve => {\n        token.subscribe(resolve);\n        _resolve = resolve;\n      }).then(onfulfilled);\n\n      promise.cancel = function reject() {\n        token.unsubscribe(_resolve);\n      };\n\n      return promise;\n    };\n\n    executor(function cancel(message, config, request) {\n      if (token.reason) {\n        // Cancellation has already been requested\n        return;\n      }\n\n      token.reason = new CanceledError(message, config, request);\n      resolvePromise(token.reason);\n    });\n  }\n\n  /**\n   * Throws a `CanceledError` if cancellation has been requested.\n   */\n  throwIfRequested() {\n    if (this.reason) {\n      throw this.reason;\n    }\n  }\n\n  /**\n   * Subscribe to the cancel signal\n   */\n\n  subscribe(listener) {\n    if (this.reason) {\n      listener(this.reason);\n      return;\n    }\n\n    if (this._listeners) {\n      this._listeners.push(listener);\n    } else {\n      this._listeners = [listener];\n    }\n  }\n\n  /**\n   * Unsubscribe from the cancel signal\n   */\n\n  unsubscribe(listener) {\n    if (!this._listeners) {\n      return;\n    }\n    const index = this._listeners.indexOf(listener);\n    if (index !== -1) {\n      this._listeners.splice(index, 1);\n    }\n  }\n\n  toAbortSignal() {\n    const controller = new AbortController();\n\n    const abort = (err) => {\n      controller.abort(err);\n    };\n\n    this.subscribe(abort);\n\n    controller.signal.unsubscribe = () => this.unsubscribe(abort);\n\n    return controller.signal;\n  }\n\n  /**\n   * Returns an object that contains a new `CancelToken` and a function that, when called,\n   * cancels the `CancelToken`.\n   */\n  static source() {\n    let cancel;\n    const token = new CancelToken(function executor(c) {\n      cancel = c;\n    });\n    return {\n      token,\n      cancel\n    };\n  }\n}\n\nexport default CancelToken;\n","const HttpStatusCode = {\n  Continue: 100,\n  SwitchingProtocols: 101,\n  Processing: 102,\n  EarlyHints: 103,\n  Ok: 200,\n  Created: 201,\n  Accepted: 202,\n  NonAuthoritativeInformation: 203,\n  NoContent: 204,\n  ResetContent: 205,\n  PartialContent: 206,\n  MultiStatus: 207,\n  AlreadyReported: 208,\n  ImUsed: 226,\n  MultipleChoices: 300,\n  MovedPermanently: 301,\n  Found: 302,\n  SeeOther: 303,\n  NotModified: 304,\n  UseProxy: 305,\n  Unused: 306,\n  TemporaryRedirect: 307,\n  PermanentRedirect: 308,\n  BadRequest: 400,\n  Unauthorized: 401,\n  PaymentRequired: 402,\n  Forbidden: 403,\n  NotFound: 404,\n  MethodNotAllowed: 405,\n  NotAcceptable: 406,\n  ProxyAuthenticationRequired: 407,\n  RequestTimeout: 408,\n  Conflict: 409,\n  Gone: 410,\n  LengthRequired: 411,\n  PreconditionFailed: 412,\n  PayloadTooLarge: 413,\n  UriTooLong: 414,\n  UnsupportedMediaType: 415,\n  RangeNotSatisfiable: 416,\n  ExpectationFailed: 417,\n  ImATeapot: 418,\n  MisdirectedRequest: 421,\n  UnprocessableEntity: 422,\n  Locked: 423,\n  FailedDependency: 424,\n  TooEarly: 425,\n  UpgradeRequired: 426,\n  PreconditionRequired: 428,\n  TooManyRequests: 429,\n  RequestHeaderFieldsTooLarge: 431,\n  UnavailableForLegalReasons: 451,\n  InternalServerError: 500,\n  NotImplemented: 501,\n  BadGateway: 502,\n  ServiceUnavailable: 503,\n  GatewayTimeout: 504,\n  HttpVersionNotSupported: 505,\n  VariantAlsoNegotiates: 506,\n  InsufficientStorage: 507,\n  LoopDetected: 508,\n  NotExtended: 510,\n  NetworkAuthenticationRequired: 511,\n};\n\nObject.entries(HttpStatusCode).forEach(([key, value]) => {\n  HttpStatusCode[value] = key;\n});\n\nexport default HttpStatusCode;\n","'use strict';\n\nimport utils from './utils.js';\nimport bind from './helpers/bind.js';\nimport Axios from './core/Axios.js';\nimport mergeConfig from './core/mergeConfig.js';\nimport defaults from './defaults/index.js';\nimport formDataToJSON from './helpers/formDataToJSON.js';\nimport CanceledError from './cancel/CanceledError.js';\nimport CancelToken from './cancel/CancelToken.js';\nimport isCancel from './cancel/isCancel.js';\nimport {VERSION} from './env/data.js';\nimport toFormData from './helpers/toFormData.js';\nimport AxiosError from './core/AxiosError.js';\nimport spread from './helpers/spread.js';\nimport isAxiosError from './helpers/isAxiosError.js';\nimport AxiosHeaders from \"./core/AxiosHeaders.js\";\nimport adapters from './adapters/adapters.js';\nimport HttpStatusCode from './helpers/HttpStatusCode.js';\n\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n *\n * @returns {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n  const context = new Axios(defaultConfig);\n  const instance = bind(Axios.prototype.request, context);\n\n  // Copy axios.prototype to instance\n  utils.extend(instance, Axios.prototype, context, {allOwnKeys: true});\n\n  // Copy context to instance\n  utils.extend(instance, context, null, {allOwnKeys: true});\n\n  // Factory for creating new instances\n  instance.create = function create(instanceConfig) {\n    return createInstance(mergeConfig(defaultConfig, instanceConfig));\n  };\n\n  return instance;\n}\n\n// Create the default instance to be exported\nconst axios = createInstance(defaults);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios;\n\n// Expose Cancel & CancelToken\naxios.CanceledError = CanceledError;\naxios.CancelToken = CancelToken;\naxios.isCancel = isCancel;\naxios.VERSION = VERSION;\naxios.toFormData = toFormData;\n\n// Expose AxiosError class\naxios.AxiosError = AxiosError;\n\n// alias for CanceledError for backward compatibility\naxios.Cancel = axios.CanceledError;\n\n// Expose all/spread\naxios.all = function all(promises) {\n  return Promise.all(promises);\n};\n\naxios.spread = spread;\n\n// Expose isAxiosError\naxios.isAxiosError = isAxiosError;\n\n// Expose mergeConfig\naxios.mergeConfig = mergeConfig;\n\naxios.AxiosHeaders = AxiosHeaders;\n\naxios.formToJSON = thing => formDataToJSON(utils.isHTMLForm(thing) ? new FormData(thing) : thing);\n\naxios.getAdapter = adapters.getAdapter;\n\naxios.HttpStatusCode = HttpStatusCode;\n\naxios.default = axios;\n\n// this module should only have a default export\nexport default axios\n","'use strict';\n\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n *  ```js\n *  function f(x, y, z) {}\n *  var args = [1, 2, 3];\n *  f.apply(null, args);\n *  ```\n *\n * With `spread` this example can be re-written.\n *\n *  ```js\n *  spread(function(x, y, z) {})([1, 2, 3]);\n *  ```\n *\n * @param {Function} callback\n *\n * @returns {Function}\n */\nexport default function spread(callback) {\n  return function wrap(arr) {\n    return callback.apply(null, arr);\n  };\n}\n","'use strict';\n\nimport utils from './../utils.js';\n\n/**\n * Determines whether the payload is an error thrown by Axios\n *\n * @param {*} payload The value to test\n *\n * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false\n */\nexport default function isAxiosError(payload) {\n  return utils.isObject(payload) && (payload.isAxiosError === true);\n}\n","/**\n * Use instead of `new Date(Date.UTC(...))` to support years below 100 which doesn't work\n * otherwise due to the nature of the\n * [`Date` constructor](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date#interpretation_of_two-digit_years.\n *\n * For `Date.UTC(...)`, use `newDateUTC(...).getTime()`.\n */\nexport default function newDateUTC(fullYear, month, day, hour, minute, second, millisecond) {\n  var utcDate = new Date(0)\n  utcDate.setUTCFullYear(fullYear, month, day)\n  utcDate.setUTCHours(hour, minute, second, millisecond)\n  return utcDate\n}\n","/**\r\n * Returns the [year, month, day, hour, minute, seconds] tokens of the provided\r\n * `date` as it will be rendered in the `timeZone`.\r\n */\r\nexport default function tzTokenizeDate(date, timeZone) {\r\n  var dtf = getDateTimeFormat(timeZone)\r\n  return dtf.formatToParts ? partsOffset(dtf, date) : hackyOffset(dtf, date)\r\n}\r\n\r\nvar typeToPos = {\r\n  year: 0,\r\n  month: 1,\r\n  day: 2,\r\n  hour: 3,\r\n  minute: 4,\r\n  second: 5,\r\n}\r\n\r\nfunction partsOffset(dtf, date) {\r\n  try {\r\n    var formatted = dtf.formatToParts(date)\r\n    var filled = []\r\n    for (var i = 0; i < formatted.length; i++) {\r\n      var pos = typeToPos[formatted[i].type]\r\n\r\n      if (pos >= 0) {\r\n        filled[pos] = parseInt(formatted[i].value, 10)\r\n      }\r\n    }\r\n    return filled\r\n  } catch (error) {\r\n    if (error instanceof RangeError) {\r\n      return [NaN]\r\n    }\r\n    throw error\r\n  }\r\n}\r\n\r\nfunction hackyOffset(dtf, date) {\r\n  var formatted = dtf.format(date)\r\n  var parsed = /(\\d+)\\/(\\d+)\\/(\\d+),? (\\d+):(\\d+):(\\d+)/.exec(formatted)\r\n  // var [, fMonth, fDay, fYear, fHour, fMinute, fSecond] = parsed\r\n  // return [fYear, fMonth, fDay, fHour, fMinute, fSecond]\r\n  return [parsed[3], parsed[1], parsed[2], parsed[4], parsed[5], parsed[6]]\r\n}\r\n\r\n// Get a cached Intl.DateTimeFormat instance for the IANA `timeZone`. This can be used\r\n// to get deterministic local date/time output according to the `en-US` locale which\r\n// can be used to extract local time parts as necessary.\r\nvar dtfCache = {}\r\nfunction getDateTimeFormat(timeZone) {\r\n  if (!dtfCache[timeZone]) {\r\n    // New browsers use `hourCycle`, IE and Chrome <73 does not support it and uses `hour12`\r\n    var testDateFormatted = new Intl.DateTimeFormat('en-US', {\r\n      hourCycle: 'h23',\r\n      timeZone: 'America/New_York',\r\n      year: 'numeric',\r\n      month: '2-digit',\r\n      day: '2-digit',\r\n      hour: '2-digit',\r\n      minute: '2-digit',\r\n      second: '2-digit',\r\n    }).format(new Date('2014-06-25T04:00:00.123Z'))\r\n    var hourCycleSupported =\r\n      testDateFormatted === '06/25/2014, 00:00:00' ||\r\n      testDateFormatted === '‎06‎/‎25‎/‎2014‎ ‎00‎:‎00‎:‎00'\r\n\r\n    dtfCache[timeZone] = hourCycleSupported\r\n      ? new Intl.DateTimeFormat('en-US', {\r\n          hourCycle: 'h23',\r\n          timeZone: timeZone,\r\n          year: 'numeric',\r\n          month: 'numeric',\r\n          day: '2-digit',\r\n          hour: '2-digit',\r\n          minute: '2-digit',\r\n          second: '2-digit',\r\n        })\r\n      : new Intl.DateTimeFormat('en-US', {\r\n          hour12: false,\r\n          timeZone: timeZone,\r\n          year: 'numeric',\r\n          month: 'numeric',\r\n          day: '2-digit',\r\n          hour: '2-digit',\r\n          minute: '2-digit',\r\n          second: '2-digit',\r\n        })\r\n  }\r\n  return dtfCache[timeZone]\r\n}\r\n","import tzTokenizeDate from '../tzTokenizeDate/index.js'\r\nimport newDateUTC from '../newDateUTC/index.js'\r\n\r\nvar MILLISECONDS_IN_HOUR = 3600000\r\nvar MILLISECONDS_IN_MINUTE = 60000\r\n\r\nvar patterns = {\r\n  timezone: /([Z+-].*)$/,\r\n  timezoneZ: /^(Z)$/,\r\n  timezoneHH: /^([+-]\\d{2})$/,\r\n  timezoneHHMM: /^([+-])(\\d{2}):?(\\d{2})$/,\r\n}\r\n\r\n// Parse various time zone offset formats to an offset in milliseconds\r\nexport default function tzParseTimezone(timezoneString, date, isUtcDate) {\r\n  var token\r\n  var absoluteOffset\r\n\r\n  // Empty string\r\n  if (!timezoneString) {\r\n    return 0\r\n  }\r\n\r\n  // Z\r\n  token = patterns.timezoneZ.exec(timezoneString)\r\n  if (token) {\r\n    return 0\r\n  }\r\n\r\n  var hours\r\n\r\n  // ±hh\r\n  token = patterns.timezoneHH.exec(timezoneString)\r\n  if (token) {\r\n    hours = parseInt(token[1], 10)\r\n\r\n    if (!validateTimezone(hours)) {\r\n      return NaN\r\n    }\r\n\r\n    return -(hours * MILLISECONDS_IN_HOUR)\r\n  }\r\n\r\n  // ±hh:mm or ±hhmm\r\n  token = patterns.timezoneHHMM.exec(timezoneString)\r\n  if (token) {\r\n    hours = parseInt(token[2], 10)\r\n    var minutes = parseInt(token[3], 10)\r\n\r\n    if (!validateTimezone(hours, minutes)) {\r\n      return NaN\r\n    }\r\n\r\n    absoluteOffset = Math.abs(hours) * MILLISECONDS_IN_HOUR + minutes * MILLISECONDS_IN_MINUTE\r\n    return token[1] === '+' ? -absoluteOffset : absoluteOffset\r\n  }\r\n\r\n  // IANA time zone\r\n  if (isValidTimezoneIANAString(timezoneString)) {\r\n    date = new Date(date || Date.now())\r\n    var utcDate = isUtcDate ? date : toUtcDate(date)\r\n\r\n    var offset = calcOffset(utcDate, timezoneString)\r\n\r\n    var fixedOffset = isUtcDate ? offset : fixOffset(date, offset, timezoneString)\r\n\r\n    return -fixedOffset\r\n  }\r\n\r\n  return NaN\r\n}\r\n\r\nfunction toUtcDate(date) {\r\n  return newDateUTC(\r\n    date.getFullYear(),\r\n    date.getMonth(),\r\n    date.getDate(),\r\n    date.getHours(),\r\n    date.getMinutes(),\r\n    date.getSeconds(),\r\n    date.getMilliseconds()\r\n  )\r\n}\r\n\r\nfunction calcOffset(date, timezoneString) {\r\n  var tokens = tzTokenizeDate(date, timezoneString)\r\n\r\n  // ms dropped because it's not provided by tzTokenizeDate\r\n  var asUTC = newDateUTC(\r\n    tokens[0],\r\n    tokens[1] - 1,\r\n    tokens[2],\r\n    tokens[3] % 24,\r\n    tokens[4],\r\n    tokens[5],\r\n    0\r\n  ).getTime()\r\n\r\n  var asTS = date.getTime()\r\n  var over = asTS % 1000\r\n  asTS -= over >= 0 ? over : 1000 + over\r\n  return asUTC - asTS\r\n}\r\n\r\nfunction fixOffset(date, offset, timezoneString) {\r\n  var localTS = date.getTime()\r\n\r\n  // Our UTC time is just a guess because our offset is just a guess\r\n  var utcGuess = localTS - offset\r\n\r\n  // Test whether the zone matches the offset for this ts\r\n  var o2 = calcOffset(new Date(utcGuess), timezoneString)\r\n\r\n  // If so, offset didn't change, and we're done\r\n  if (offset === o2) {\r\n    return offset\r\n  }\r\n\r\n  // If not, change the ts by the difference in the offset\r\n  utcGuess -= o2 - offset\r\n\r\n  // If that gives us the local time we want, we're done\r\n  var o3 = calcOffset(new Date(utcGuess), timezoneString)\r\n  if (o2 === o3) {\r\n    return o2\r\n  }\r\n\r\n  // If it's different, we're in a hole time. The offset has changed, but we don't adjust the time\r\n  return Math.max(o2, o3)\r\n}\r\n\r\nfunction validateTimezone(hours, minutes) {\r\n  return -23 <= hours && hours <= 23 && (minutes == null || (0 <= minutes && minutes <= 59))\r\n}\r\n\r\nvar validIANATimezoneCache = {}\r\nfunction isValidTimezoneIANAString(timeZoneString) {\r\n  if (validIANATimezoneCache[timeZoneString]) return true\r\n  try {\r\n    new Intl.DateTimeFormat(undefined, { timeZone: timeZoneString })\r\n    validIANATimezoneCache[timeZoneString] = true\r\n    return true\r\n  } catch (error) {\r\n    return false\r\n  }\r\n}\r\n","/** Regex to identify the presence of a time zone specifier in a date string */\nvar tzPattern = /(Z|[+-]\\d{2}(?::?\\d{2})?| UTC| [a-zA-Z]+\\/[a-zA-Z_]+(?:\\/[a-zA-Z_]+)?)$/\n\nexport default tzPattern\n","/**\n * Returns the formatted time zone name of the provided `timeZone` or the current\n * system time zone if omitted, accounting for DST according to the UTC value of\n * the date.\n */\nexport default function tzIntlTimeZoneName(length, date, options) {\n  var dtf = getDTF(length, options.timeZone, options.locale)\n  return dtf.formatToParts ? partsTimeZone(dtf, date) : hackyTimeZone(dtf, date)\n}\n\nfunction partsTimeZone(dtf, date) {\n  var formatted = dtf.formatToParts(date)\n\n  for (var i = formatted.length - 1; i >= 0; --i) {\n    if (formatted[i].type === 'timeZoneName') {\n      return formatted[i].value\n    }\n  }\n}\n\nfunction hackyTimeZone(dtf, date) {\n  var formatted = dtf.format(date).replace(/\\u200E/g, '')\n  var tzNameMatch = / [\\w-+ ]+$/.exec(formatted)\n  return tzNameMatch ? tzNameMatch[0].substr(1) : ''\n}\n\n// If a locale has been provided `en-US` is used as a fallback in case it is an\n// invalid locale, otherwise the locale is left undefined to use the system locale.\nfunction getDTF(length, timeZone, locale) {\n  if (locale && !locale.code) {\n    throw new Error(\n      \"date-fns-tz error: Please set a language code on the locale object imported from date-fns, e.g. `locale.code = 'en-US'`\"\n    )\n  }\n  return new Intl.DateTimeFormat(locale ? [locale.code, 'en-US'] : undefined, {\n    timeZone: timeZone,\n    timeZoneName: length,\n  })\n}\n","import tzIntlTimeZoneName from '../../_lib/tzIntlTimeZoneName/index.js'\nimport tzParseTimezone from '../../_lib/tzParseTimezone/index.js'\n\nvar MILLISECONDS_IN_MINUTE = 60 * 1000\n\nvar formatters = {\n  // Timezone (ISO-8601. If offset is 0, output is always `'Z'`)\n  X: function (date, token, localize, options) {\n    var timezoneOffset = getTimeZoneOffset(options.timeZone, date)\n\n    if (timezoneOffset === 0) {\n      return 'Z'\n    }\n\n    switch (token) {\n      // Hours and optional minutes\n      case 'X':\n        return formatTimezoneWithOptionalMinutes(timezoneOffset)\n\n      // Hours, minutes and optional seconds without `:` delimeter\n      // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n      // so this token always has the same output as `XX`\n      case 'XXXX':\n      case 'XX': // Hours and minutes without `:` delimeter\n        return formatTimezone(timezoneOffset)\n\n      // Hours, minutes and optional seconds with `:` delimeter\n      // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n      // so this token always has the same output as `XXX`\n      case 'XXXXX':\n      case 'XXX': // Hours and minutes with `:` delimeter\n      default:\n        return formatTimezone(timezoneOffset, ':')\n    }\n  },\n\n  // Timezone (ISO-8601. If offset is 0, output is `'+00:00'` or equivalent)\n  x: function (date, token, localize, options) {\n    var timezoneOffset = getTimeZoneOffset(options.timeZone, date)\n\n    switch (token) {\n      // Hours and optional minutes\n      case 'x':\n        return formatTimezoneWithOptionalMinutes(timezoneOffset)\n\n      // Hours, minutes and optional seconds without `:` delimeter\n      // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n      // so this token always has the same output as `xx`\n      case 'xxxx':\n      case 'xx': // Hours and minutes without `:` delimeter\n        return formatTimezone(timezoneOffset)\n\n      // Hours, minutes and optional seconds with `:` delimeter\n      // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n      // so this token always has the same output as `xxx`\n      case 'xxxxx':\n      case 'xxx': // Hours and minutes with `:` delimeter\n      default:\n        return formatTimezone(timezoneOffset, ':')\n    }\n  },\n\n  // Timezone (GMT)\n  O: function (date, token, localize, options) {\n    var timezoneOffset = getTimeZoneOffset(options.timeZone, date)\n\n    switch (token) {\n      // Short\n      case 'O':\n      case 'OO':\n      case 'OOO':\n        return 'GMT' + formatTimezoneShort(timezoneOffset, ':')\n      // Long\n      case 'OOOO':\n      default:\n        return 'GMT' + formatTimezone(timezoneOffset, ':')\n    }\n  },\n\n  // Timezone (specific non-location)\n  z: function (date, token, localize, options) {\n    switch (token) {\n      // Short\n      case 'z':\n      case 'zz':\n      case 'zzz':\n        return tzIntlTimeZoneName('short', date, options)\n      // Long\n      case 'zzzz':\n      default:\n        return tzIntlTimeZoneName('long', date, options)\n    }\n  },\n}\n\nfunction getTimeZoneOffset(timeZone, originalDate) {\n  var timeZoneOffset = timeZone\n    ? tzParseTimezone(timeZone, originalDate, true) / MILLISECONDS_IN_MINUTE\n    : originalDate.getTimezoneOffset()\n  if (Number.isNaN(timeZoneOffset)) {\n    throw new RangeError('Invalid time zone specified: ' + timeZone)\n  }\n  return timeZoneOffset\n}\n\nfunction addLeadingZeros(number, targetLength) {\n  var sign = number < 0 ? '-' : ''\n  var output = Math.abs(number).toString()\n  while (output.length < targetLength) {\n    output = '0' + output\n  }\n  return sign + output\n}\n\nfunction formatTimezone(offset, dirtyDelimeter) {\n  var delimeter = dirtyDelimeter || ''\n  var sign = offset > 0 ? '-' : '+'\n  var absOffset = Math.abs(offset)\n  var hours = addLeadingZeros(Math.floor(absOffset / 60), 2)\n  var minutes = addLeadingZeros(Math.floor(absOffset % 60), 2)\n  return sign + hours + delimeter + minutes\n}\n\nfunction formatTimezoneWithOptionalMinutes(offset, dirtyDelimeter) {\n  if (offset % 60 === 0) {\n    var sign = offset > 0 ? '-' : '+'\n    return sign + addLeadingZeros(Math.abs(offset) / 60, 2)\n  }\n  return formatTimezone(offset, dirtyDelimeter)\n}\n\nfunction formatTimezoneShort(offset, dirtyDelimiter) {\n  var sign = offset > 0 ? '-' : '+'\n  var absOffset = Math.abs(offset)\n  var hours = Math.floor(absOffset / 60)\n  var minutes = absOffset % 60\n  if (minutes === 0) {\n    return sign + String(hours)\n  }\n  var delimiter = dirtyDelimiter || ''\n  return sign + String(hours) + delimiter + addLeadingZeros(minutes, 2)\n}\n\nexport default formatters\n","import dateFnsFormat from 'date-fns/format/index.js'\nimport formatters from './formatters/index.js'\nimport toDate from '../toDate/index.js'\n\nvar tzFormattingTokensRegExp = /([xXOz]+)|''|'(''|[^'])+('|$)/g\n\n/**\n * @name format\n * @category Common Helpers\n * @summary Format the date.\n *\n * @description\n * Return the formatted date string in the given format. The result may vary by locale.\n *\n * > ⚠️ Please note that the `format` tokens differ from Moment.js and other libraries.\n * > See: https://git.io/fxCyr\n *\n * The characters wrapped between two single quotes characters (') are escaped.\n * Two single quotes in a row, whether inside or outside a quoted sequence, represent a 'real' single quote.\n * (see the last example)\n *\n * Format of the string is based on Unicode Technical Standard #35:\n * https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n * with a few additions (see note 7 below the table).\n *\n * Accepted patterns:\n * | Unit                            | Pattern | Result examples                   | Notes |\n * |---------------------------------|---------|-----------------------------------|-------|\n * | Era                             | G..GGG  | AD, BC                            |       |\n * |                                 | GGGG    | Anno Domini, Before Christ        | 2     |\n * |                                 | GGGGG   | A, B                              |       |\n * | Calendar year                   | y       | 44, 1, 1900, 2017                 | 5     |\n * |                                 | yo      | 44th, 1st, 0th, 17th              | 5,7   |\n * |                                 | yy      | 44, 01, 00, 17                    | 5     |\n * |                                 | yyy     | 044, 001, 1900, 2017              | 5     |\n * |                                 | yyyy    | 0044, 0001, 1900, 2017            | 5     |\n * |                                 | yyyyy   | ...                               | 3,5   |\n * | Local week-numbering year       | Y       | 44, 1, 1900, 2017                 | 5     |\n * |                                 | Yo      | 44th, 1st, 1900th, 2017th         | 5,7   |\n * |                                 | YY      | 44, 01, 00, 17                    | 5,8   |\n * |                                 | YYY     | 044, 001, 1900, 2017              | 5     |\n * |                                 | YYYY    | 0044, 0001, 1900, 2017            | 5,8   |\n * |                                 | YYYYY   | ...                               | 3,5   |\n * | ISO week-numbering year         | R       | -43, 0, 1, 1900, 2017             | 5,7   |\n * |                                 | RR      | -43, 00, 01, 1900, 2017           | 5,7   |\n * |                                 | RRR     | -043, 000, 001, 1900, 2017        | 5,7   |\n * |                                 | RRRR    | -0043, 0000, 0001, 1900, 2017     | 5,7   |\n * |                                 | RRRRR   | ...                               | 3,5,7 |\n * | Extended year                   | u       | -43, 0, 1, 1900, 2017             | 5     |\n * |                                 | uu      | -43, 01, 1900, 2017               | 5     |\n * |                                 | uuu     | -043, 001, 1900, 2017             | 5     |\n * |                                 | uuuu    | -0043, 0001, 1900, 2017           | 5     |\n * |                                 | uuuuu   | ...                               | 3,5   |\n * | Quarter (formatting)            | Q       | 1, 2, 3, 4                        |       |\n * |                                 | Qo      | 1st, 2nd, 3rd, 4th                | 7     |\n * |                                 | QQ      | 01, 02, 03, 04                    |       |\n * |                                 | QQQ     | Q1, Q2, Q3, Q4                    |       |\n * |                                 | QQQQ    | 1st quarter, 2nd quarter, ...     | 2     |\n * |                                 | QQQQQ   | 1, 2, 3, 4                        | 4     |\n * | Quarter (stand-alone)           | q       | 1, 2, 3, 4                        |       |\n * |                                 | qo      | 1st, 2nd, 3rd, 4th                | 7     |\n * |                                 | qq      | 01, 02, 03, 04                    |       |\n * |                                 | qqq     | Q1, Q2, Q3, Q4                    |       |\n * |                                 | qqqq    | 1st quarter, 2nd quarter, ...     | 2     |\n * |                                 | qqqqq   | 1, 2, 3, 4                        | 4     |\n * | Month (formatting)              | M       | 1, 2, ..., 12                     |       |\n * |                                 | Mo      | 1st, 2nd, ..., 12th               | 7     |\n * |                                 | MM      | 01, 02, ..., 12                   |       |\n * |                                 | MMM     | Jan, Feb, ..., Dec                |       |\n * |                                 | MMMM    | January, February, ..., December  | 2     |\n * |                                 | MMMMM   | J, F, ..., D                      |       |\n * | Month (stand-alone)             | L       | 1, 2, ..., 12                     |       |\n * |                                 | Lo      | 1st, 2nd, ..., 12th               | 7     |\n * |                                 | LL      | 01, 02, ..., 12                   |       |\n * |                                 | LLL     | Jan, Feb, ..., Dec                |       |\n * |                                 | LLLL    | January, February, ..., December  | 2     |\n * |                                 | LLLLL   | J, F, ..., D                      |       |\n * | Local week of year              | w       | 1, 2, ..., 53                     |       |\n * |                                 | wo      | 1st, 2nd, ..., 53th               | 7     |\n * |                                 | ww      | 01, 02, ..., 53                   |       |\n * | ISO week of year                | I       | 1, 2, ..., 53                     | 7     |\n * |                                 | Io      | 1st, 2nd, ..., 53th               | 7     |\n * |                                 | II      | 01, 02, ..., 53                   | 7     |\n * | Day of month                    | d       | 1, 2, ..., 31                     |       |\n * |                                 | do      | 1st, 2nd, ..., 31st               | 7     |\n * |                                 | dd      | 01, 02, ..., 31                   |       |\n * | Day of year                     | D       | 1, 2, ..., 365, 366               | 8     |\n * |                                 | Do      | 1st, 2nd, ..., 365th, 366th       | 7     |\n * |                                 | DD      | 01, 02, ..., 365, 366             | 8     |\n * |                                 | DDD     | 001, 002, ..., 365, 366           |       |\n * |                                 | DDDD    | ...                               | 3     |\n * | Day of week (formatting)        | E..EEE  | Mon, Tue, Wed, ..., Su            |       |\n * |                                 | EEEE    | Monday, Tuesday, ..., Sunday      | 2     |\n * |                                 | EEEEE   | M, T, W, T, F, S, S               |       |\n * |                                 | EEEEEE  | Mo, Tu, We, Th, Fr, Su, Sa        |       |\n * | ISO day of week (formatting)    | i       | 1, 2, 3, ..., 7                   | 7     |\n * |                                 | io      | 1st, 2nd, ..., 7th                | 7     |\n * |                                 | ii      | 01, 02, ..., 07                   | 7     |\n * |                                 | iii     | Mon, Tue, Wed, ..., Su            | 7     |\n * |                                 | iiii    | Monday, Tuesday, ..., Sunday      | 2,7   |\n * |                                 | iiiii   | M, T, W, T, F, S, S               | 7     |\n * |                                 | iiiiii  | Mo, Tu, We, Th, Fr, Su, Sa        | 7     |\n * | Local day of week (formatting)  | e       | 2, 3, 4, ..., 1                   |       |\n * |                                 | eo      | 2nd, 3rd, ..., 1st                | 7     |\n * |                                 | ee      | 02, 03, ..., 01                   |       |\n * |                                 | eee     | Mon, Tue, Wed, ..., Su            |       |\n * |                                 | eeee    | Monday, Tuesday, ..., Sunday      | 2     |\n * |                                 | eeeee   | M, T, W, T, F, S, S               |       |\n * |                                 | eeeeee  | Mo, Tu, We, Th, Fr, Su, Sa        |       |\n * | Local day of week (stand-alone) | c       | 2, 3, 4, ..., 1                   |       |\n * |                                 | co      | 2nd, 3rd, ..., 1st                | 7     |\n * |                                 | cc      | 02, 03, ..., 01                   |       |\n * |                                 | ccc     | Mon, Tue, Wed, ..., Su            |       |\n * |                                 | cccc    | Monday, Tuesday, ..., Sunday      | 2     |\n * |                                 | ccccc   | M, T, W, T, F, S, S               |       |\n * |                                 | cccccc  | Mo, Tu, We, Th, Fr, Su, Sa        |       |\n * | AM, PM                          | a..aaa  | AM, PM                            |       |\n * |                                 | aaaa    | a.m., p.m.                        | 2     |\n * |                                 | aaaaa   | a, p                              |       |\n * | AM, PM, noon, midnight          | b..bbb  | AM, PM, noon, midnight            |       |\n * |                                 | bbbb    | a.m., p.m., noon, midnight        | 2     |\n * |                                 | bbbbb   | a, p, n, mi                       |       |\n * | Flexible day period             | B..BBB  | at night, in the morning, ...     |       |\n * |                                 | BBBB    | at night, in the morning, ...     | 2     |\n * |                                 | BBBBB   | at night, in the morning, ...     |       |\n * | Hour [1-12]                     | h       | 1, 2, ..., 11, 12                 |       |\n * |                                 | ho      | 1st, 2nd, ..., 11th, 12th         | 7     |\n * |                                 | hh      | 01, 02, ..., 11, 12               |       |\n * | Hour [0-23]                     | H       | 0, 1, 2, ..., 23                  |       |\n * |                                 | Ho      | 0th, 1st, 2nd, ..., 23rd          | 7     |\n * |                                 | HH      | 00, 01, 02, ..., 23               |       |\n * | Hour [0-11]                     | K       | 1, 2, ..., 11, 0                  |       |\n * |                                 | Ko      | 1st, 2nd, ..., 11th, 0th          | 7     |\n * |                                 | KK      | 1, 2, ..., 11, 0                  |       |\n * | Hour [1-24]                     | k       | 24, 1, 2, ..., 23                 |       |\n * |                                 | ko      | 24th, 1st, 2nd, ..., 23rd         | 7     |\n * |                                 | kk      | 24, 01, 02, ..., 23               |       |\n * | Minute                          | m       | 0, 1, ..., 59                     |       |\n * |                                 | mo      | 0th, 1st, ..., 59th               | 7     |\n * |                                 | mm      | 00, 01, ..., 59                   |       |\n * | Second                          | s       | 0, 1, ..., 59                     |       |\n * |                                 | so      | 0th, 1st, ..., 59th               | 7     |\n * |                                 | ss      | 00, 01, ..., 59                   |       |\n * | Fraction of second              | S       | 0, 1, ..., 9                      |       |\n * |                                 | SS      | 00, 01, ..., 99                   |       |\n * |                                 | SSS     | 000, 0001, ..., 999               |       |\n * |                                 | SSSS    | ...                               | 3     |\n * | Timezone (ISO-8601 w/ Z)        | X       | -08, +0530, Z                     |       |\n * |                                 | XX      | -0800, +0530, Z                   |       |\n * |                                 | XXX     | -08:00, +05:30, Z                 |       |\n * |                                 | XXXX    | -0800, +0530, Z, +123456          | 2     |\n * |                                 | XXXXX   | -08:00, +05:30, Z, +12:34:56      |       |\n * | Timezone (ISO-8601 w/o Z)       | x       | -08, +0530, +00                   |       |\n * |                                 | xx      | -0800, +0530, +0000               |       |\n * |                                 | xxx     | -08:00, +05:30, +00:00            | 2     |\n * |                                 | xxxx    | -0800, +0530, +0000, +123456      |       |\n * |                                 | xxxxx   | -08:00, +05:30, +00:00, +12:34:56 |       |\n * | Timezone (GMT)                  | O...OOO | GMT-8, GMT+5:30, GMT+0            |       |\n * |                                 | OOOO    | GMT-08:00, GMT+05:30, GMT+00:00   | 2     |\n * | Timezone (specific non-locat.)  | z...zzz | PDT, EST, CEST                    | 6     |\n * |                                 | zzzz    | Pacific Daylight Time             | 2,6   |\n * | Seconds timestamp               | t       | 512969520                         | 7     |\n * |                                 | tt      | ...                               | 3,7   |\n * | Milliseconds timestamp          | T       | 512969520900                      | 7     |\n * |                                 | TT      | ...                               | 3,7   |\n * | Long localized date             | P       | 05/29/1453                        | 7     |\n * |                                 | PP      | May 29, 1453                      | 7     |\n * |                                 | PPP     | May 29th, 1453                    | 7     |\n * |                                 | PPPP    | Sunday, May 29th, 1453            | 2,7   |\n * | Long localized time             | p       | 12:00 AM                          | 7     |\n * |                                 | pp      | 12:00:00 AM                       | 7     |\n * |                                 | ppp     | 12:00:00 AM GMT+2                 | 7     |\n * |                                 | pppp    | 12:00:00 AM GMT+02:00             | 2,7   |\n * | Combination of date and time    | Pp      | 05/29/1453, 12:00 AM              | 7     |\n * |                                 | PPpp    | May 29, 1453, 12:00:00 AM         | 7     |\n * |                                 | PPPppp  | May 29th, 1453 at ...             | 7     |\n * |                                 | PPPPpppp| Sunday, May 29th, 1453 at ...     | 2,7   |\n * Notes:\n * 1. \"Formatting\" units (e.g. formatting quarter) in the default en-US locale\n *    are the same as \"stand-alone\" units, but are different in some languages.\n *    \"Formatting\" units are declined according to the rules of the language\n *    in the context of a date. \"Stand-alone\" units are always nominative singular:\n *\n *    `format(new Date(2017, 10, 6), 'do LLLL', {locale: cs}) //=> '6. listopad'`\n *\n *    `format(new Date(2017, 10, 6), 'do MMMM', {locale: cs}) //=> '6. listopadu'`\n *\n * 2. Any sequence of the identical letters is a pattern, unless it is escaped by\n *    the single quote characters (see below).\n *    If the sequence is longer than listed in table (e.g. `EEEEEEEEEEE`)\n *    the output will be the same as default pattern for this unit, usually\n *    the longest one (in case of ISO weekdays, `EEEE`). Default patterns for units\n *    are marked with \"2\" in the last column of the table.\n *\n *    `format(new Date(2017, 10, 6), 'MMM') //=> 'Nov'`\n *\n *    `format(new Date(2017, 10, 6), 'MMMM') //=> 'November'`\n *\n *    `format(new Date(2017, 10, 6), 'MMMMM') //=> 'N'`\n *\n *    `format(new Date(2017, 10, 6), 'MMMMMM') //=> 'November'`\n *\n *    `format(new Date(2017, 10, 6), 'MMMMMMM') //=> 'November'`\n *\n * 3. Some patterns could be unlimited length (such as `yyyyyyyy`).\n *    The output will be padded with zeros to match the length of the pattern.\n *\n *    `format(new Date(2017, 10, 6), 'yyyyyyyy') //=> '00002017'`\n *\n * 4. `QQQQQ` and `qqqqq` could be not strictly numerical in some locales.\n *    These tokens represent the shortest form of the quarter.\n *\n * 5. The main difference between `y` and `u` patterns are B.C. years:\n *\n *    | Year | `y` | `u` |\n *    |------|-----|-----|\n *    | AC 1 |   1 |   1 |\n *    | BC 1 |   1 |   0 |\n *    | BC 2 |   2 |  -1 |\n *\n *    Also `yy` always returns the last two digits of a year,\n *    while `uu` pads single digit years to 2 characters and returns other years unchanged:\n *\n *    | Year | `yy` | `uu` |\n *    |------|------|------|\n *    | 1    |   01 |   01 |\n *    | 14   |   14 |   14 |\n *    | 376  |   76 |  376 |\n *    | 1453 |   53 | 1453 |\n *\n *    The same difference is true for local and ISO week-numbering years (`Y` and `R`),\n *    except local week-numbering years are dependent on `options.weekStartsOn`\n *    and `options.firstWeekContainsDate` (compare [getISOWeekYear]{@link https://date-fns.org/docs/getISOWeekYear}\n *    and [getWeekYear]{@link https://date-fns.org/docs/getWeekYear}).\n *\n * 6. Specific non-location timezones are created using the Intl browser API. The output is determined by the\n *    preferred standard of the current locale (en-US by default) which may not always give the expected result.\n *    For this reason it is recommended to supply a `locale` in the format options when formatting a time zone name.\n *\n * 7. These patterns are not in the Unicode Technical Standard #35:\n *    - `i`: ISO day of week\n *    - `I`: ISO week of year\n *    - `R`: ISO week-numbering year\n *    - `t`: seconds timestamp\n *    - `T`: milliseconds timestamp\n *    - `o`: ordinal number modifier\n *    - `P`: long localized date\n *    - `p`: long localized time\n *\n * 8. These tokens are often confused with others. See: https://git.io/fxCyr\n *\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole\n *   library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * - The second argument is now required for the sake of explicitness.\n *\n *   ```javascript\n *   // Before v2.0.0\n *   format(new Date(2016, 0, 1))\n *\n *   // v2.0.0 onward\n *   format(new Date(2016, 0, 1), \"yyyy-MM-dd'T'HH:mm:ss.SSSxxx\")\n *   ```\n *\n * - New format string API for `format` function\n *   which is based on [Unicode Technical Standard\n *   #35](https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table). See [this\n *   post](https://blog.date-fns.org/post/unicode-tokens-in-date-fns-v2-sreatyki91jg) for more details.\n *\n * - Characters are now escaped using single quote symbols (`'`) instead of square brackets.\n *\n * @param {Date|Number} date - the original date\n * @param {String} format - the string of tokens\n * @param {OptionsWithTZ} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link\n *   https://date-fns.org/docs/toDate}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @param {Number} [options.firstWeekContainsDate=1] - the day of January, which is\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See\n *   [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {Boolean} [options.awareOfUnicodeTokens=false] - if true, allows usage of Unicode tokens causes confusion:\n *   - Some of the day of year tokens (`D`, `DD`) that are confused with the day of month tokens (`d`, `dd`).\n *   - Some of the local week-numbering year tokens (`YY`, `YYYY`) that are confused with the calendar year tokens\n *   (`yy`, `yyyy`). See: https://git.io/fxCyr\n * @param {String} [options.timeZone=''] - used to specify the IANA time zone offset of a date String.\n * @param {Date|Number} [options.originalDate] - can be used to pass the original unmodified date to `format` to\n *   improve correctness of the replaced timezone token close to the DST threshold.\n * @returns {String} the formatted date string\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n * @throws {RangeError} `options.locale` must contain `localize` property\n * @throws {RangeError} `options.locale` must contain `formatLong` property\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n * @throws {RangeError} `options.firstWeekContainsDate` must be between 1 and 7\n * @throws {RangeError} `options.awareOfUnicodeTokens` must be set to `true` to use `XX` token; see:\n *   https://git.io/fxCyr\n *\n * @example\n * // Represent 11 February 2014 in middle-endian format:\n * var result = format(new Date(2014, 1, 11), 'MM/dd/yyyy')\n * //=> '02/11/2014'\n *\n * @example\n * // Represent 2 July 2014 in Esperanto:\n * import { eoLocale } from 'date-fns/locale/eo'\n * var result = format(new Date(2014, 6, 2), \"do 'de' MMMM yyyy\", {\n *   locale: eoLocale\n * })\n * //=> '2-a de julio 2014'\n *\n * @example\n * // Escape string by single quote characters:\n * var result = format(new Date(2014, 6, 2, 15), \"h 'o''clock'\")\n * //=> \"3 o'clock\"\n */\nexport default function format(dirtyDate, dirtyFormatStr, dirtyOptions) {\n  var formatStr = String(dirtyFormatStr)\n  var options = dirtyOptions || {}\n\n  var matches = formatStr.match(tzFormattingTokensRegExp)\n  if (matches) {\n    var date = toDate(options.originalDate || dirtyDate, options)\n    // Work through each match and replace the tz token in the format string with the quoted\n    // formatted time zone so the remaining tokens can be filled in by date-fns#format.\n    formatStr = matches.reduce(function (result, token) {\n      if (token[0] === \"'\") {\n        return result // This is a quoted portion, matched only to ensure we don't match inside it\n      }\n      var pos = result.indexOf(token)\n      var precededByQuotedSection = result[pos - 1] === \"'\"\n      var replaced = result.replace(\n        token,\n        \"'\" + formatters[token[0]](date, token, null, options) + \"'\"\n      )\n      // If the replacement results in two adjoining quoted strings, the back to back quotes\n      // are removed, so it doesn't look like an escaped quote.\n      return precededByQuotedSection\n        ? replaced.substring(0, pos - 1) + replaced.substring(pos + 1)\n        : replaced\n    }, formatStr)\n  }\n\n  return dateFnsFormat(dirtyDate, formatStr, options)\n}\n","import toInteger from 'date-fns/_lib/toInteger/index.js'\nimport getTimezoneOffsetInMilliseconds from 'date-fns/_lib/getTimezoneOffsetInMilliseconds/index.js'\nimport tzParseTimezone from '../_lib/tzParseTimezone/index.js'\nimport tzPattern from '../_lib/tzPattern/index.js'\n\nvar MILLISECONDS_IN_HOUR = 3600000\nvar MILLISECONDS_IN_MINUTE = 60000\nvar DEFAULT_ADDITIONAL_DIGITS = 2\n\nvar patterns = {\n  dateTimePattern: /^([0-9W+-]+)(T| )(.*)/,\n  datePattern: /^([0-9W+-]+)(.*)/,\n  plainTime: /:/,\n\n  // year tokens\n  YY: /^(\\d{2})$/,\n  YYY: [\n    /^([+-]\\d{2})$/, // 0 additional digits\n    /^([+-]\\d{3})$/, // 1 additional digit\n    /^([+-]\\d{4})$/, // 2 additional digits\n  ],\n  YYYY: /^(\\d{4})/,\n  YYYYY: [\n    /^([+-]\\d{4})/, // 0 additional digits\n    /^([+-]\\d{5})/, // 1 additional digit\n    /^([+-]\\d{6})/, // 2 additional digits\n  ],\n\n  // date tokens\n  MM: /^-(\\d{2})$/,\n  DDD: /^-?(\\d{3})$/,\n  MMDD: /^-?(\\d{2})-?(\\d{2})$/,\n  Www: /^-?W(\\d{2})$/,\n  WwwD: /^-?W(\\d{2})-?(\\d{1})$/,\n\n  HH: /^(\\d{2}([.,]\\d*)?)$/,\n  HHMM: /^(\\d{2}):?(\\d{2}([.,]\\d*)?)$/,\n  HHMMSS: /^(\\d{2}):?(\\d{2}):?(\\d{2}([.,]\\d*)?)$/,\n\n  // time zone tokens (to identify the presence of a tz)\n  timeZone: tzPattern,\n}\n\n/**\n * @name toDate\n * @category Common Helpers\n * @summary Convert the given argument to an instance of Date.\n *\n * @description\n * Convert the given argument to an instance of Date.\n *\n * If the argument is an instance of Date, the function returns its clone.\n *\n * If the argument is a number, it is treated as a timestamp.\n *\n * If an argument is a string, the function tries to parse it.\n * Function accepts complete ISO 8601 formats as well as partial implementations.\n * ISO 8601: http://en.wikipedia.org/wiki/ISO_8601\n * If the function cannot parse the string or the values are invalid, it returns Invalid Date.\n *\n * If the argument is none of the above, the function returns Invalid Date.\n *\n * **Note**: *all* Date arguments passed to any *date-fns* function is processed by `toDate`.\n * All *date-fns* functions will throw `RangeError` if `options.additionalDigits` is not 0, 1, 2 or undefined.\n *\n * @param {Date|String|Number} argument - the value to convert\n * @param {OptionsWithTZ} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - the additional number of digits in the extended year format\n * @param {String} [options.timeZone=''] - used to specify the IANA time zone offset of a date String.\n * @returns {Date} the parsed date in the local time zone\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Convert string '2014-02-11T11:30:30' to date:\n * var result = toDate('2014-02-11T11:30:30')\n * //=> Tue Feb 11 2014 11:30:30\n *\n * @example\n * // Convert string '+02014101' to date,\n * // if the additional number of digits in the extended year format is 1:\n * var result = toDate('+02014101', {additionalDigits: 1})\n * //=> Fri Apr 11 2014 00:00:00\n */\nexport default function toDate(argument, dirtyOptions) {\n  if (arguments.length < 1) {\n    throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n  }\n\n  if (argument === null) {\n    return new Date(NaN)\n  }\n\n  var options = dirtyOptions || {}\n\n  var additionalDigits =\n    options.additionalDigits == null\n      ? DEFAULT_ADDITIONAL_DIGITS\n      : toInteger(options.additionalDigits)\n  if (additionalDigits !== 2 && additionalDigits !== 1 && additionalDigits !== 0) {\n    throw new RangeError('additionalDigits must be 0, 1 or 2')\n  }\n\n  // Clone the date\n  if (\n    argument instanceof Date ||\n    (typeof argument === 'object' && Object.prototype.toString.call(argument) === '[object Date]')\n  ) {\n    // Prevent the date to lose the milliseconds when passed to new Date() in IE10\n    return new Date(argument.getTime())\n  } else if (\n    typeof argument === 'number' ||\n    Object.prototype.toString.call(argument) === '[object Number]'\n  ) {\n    return new Date(argument)\n  } else if (\n    !(\n      typeof argument === 'string' || Object.prototype.toString.call(argument) === '[object String]'\n    )\n  ) {\n    return new Date(NaN)\n  }\n\n  var dateStrings = splitDateString(argument)\n\n  var parseYearResult = parseYear(dateStrings.date, additionalDigits)\n  var year = parseYearResult.year\n  var restDateString = parseYearResult.restDateString\n\n  var date = parseDate(restDateString, year)\n\n  if (isNaN(date)) {\n    return new Date(NaN)\n  }\n\n  if (date) {\n    var timestamp = date.getTime()\n    var time = 0\n    var offset\n\n    if (dateStrings.time) {\n      time = parseTime(dateStrings.time)\n\n      if (isNaN(time)) {\n        return new Date(NaN)\n      }\n    }\n\n    if (dateStrings.timeZone || options.timeZone) {\n      offset = tzParseTimezone(dateStrings.timeZone || options.timeZone, new Date(timestamp + time))\n      if (isNaN(offset)) {\n        return new Date(NaN)\n      }\n    } else {\n      // get offset accurate to hour in time zones that change offset\n      offset = getTimezoneOffsetInMilliseconds(new Date(timestamp + time))\n      offset = getTimezoneOffsetInMilliseconds(new Date(timestamp + time + offset))\n    }\n\n    return new Date(timestamp + time + offset)\n  } else {\n    return new Date(NaN)\n  }\n}\n\nfunction splitDateString(dateString) {\n  var dateStrings = {}\n  var parts = patterns.dateTimePattern.exec(dateString)\n  var timeString\n\n  if (!parts) {\n    parts = patterns.datePattern.exec(dateString)\n    if (parts) {\n      dateStrings.date = parts[1]\n      timeString = parts[2]\n    } else {\n      dateStrings.date = null\n      timeString = dateString\n    }\n  } else {\n    dateStrings.date = parts[1]\n    timeString = parts[3]\n  }\n\n  if (timeString) {\n    var token = patterns.timeZone.exec(timeString)\n    if (token) {\n      dateStrings.time = timeString.replace(token[1], '')\n      dateStrings.timeZone = token[1].trim()\n    } else {\n      dateStrings.time = timeString\n    }\n  }\n\n  return dateStrings\n}\n\nfunction parseYear(dateString, additionalDigits) {\n  var patternYYY = patterns.YYY[additionalDigits]\n  var patternYYYYY = patterns.YYYYY[additionalDigits]\n\n  var token\n\n  // YYYY or ±YYYYY\n  token = patterns.YYYY.exec(dateString) || patternYYYYY.exec(dateString)\n  if (token) {\n    var yearString = token[1]\n    return {\n      year: parseInt(yearString, 10),\n      restDateString: dateString.slice(yearString.length),\n    }\n  }\n\n  // YY or ±YYY\n  token = patterns.YY.exec(dateString) || patternYYY.exec(dateString)\n  if (token) {\n    var centuryString = token[1]\n    return {\n      year: parseInt(centuryString, 10) * 100,\n      restDateString: dateString.slice(centuryString.length),\n    }\n  }\n\n  // Invalid ISO-formatted year\n  return {\n    year: null,\n  }\n}\n\nfunction parseDate(dateString, year) {\n  // Invalid ISO-formatted year\n  if (year === null) {\n    return null\n  }\n\n  var token\n  var date\n  var month\n  var week\n\n  // YYYY\n  if (dateString.length === 0) {\n    date = new Date(0)\n    date.setUTCFullYear(year)\n    return date\n  }\n\n  // YYYY-MM\n  token = patterns.MM.exec(dateString)\n  if (token) {\n    date = new Date(0)\n    month = parseInt(token[1], 10) - 1\n\n    if (!validateDate(year, month)) {\n      return new Date(NaN)\n    }\n\n    date.setUTCFullYear(year, month)\n    return date\n  }\n\n  // YYYY-DDD or YYYYDDD\n  token = patterns.DDD.exec(dateString)\n  if (token) {\n    date = new Date(0)\n    var dayOfYear = parseInt(token[1], 10)\n\n    if (!validateDayOfYearDate(year, dayOfYear)) {\n      return new Date(NaN)\n    }\n\n    date.setUTCFullYear(year, 0, dayOfYear)\n    return date\n  }\n\n  // yyyy-MM-dd or YYYYMMDD\n  token = patterns.MMDD.exec(dateString)\n  if (token) {\n    date = new Date(0)\n    month = parseInt(token[1], 10) - 1\n    var day = parseInt(token[2], 10)\n\n    if (!validateDate(year, month, day)) {\n      return new Date(NaN)\n    }\n\n    date.setUTCFullYear(year, month, day)\n    return date\n  }\n\n  // YYYY-Www or YYYYWww\n  token = patterns.Www.exec(dateString)\n  if (token) {\n    week = parseInt(token[1], 10) - 1\n\n    if (!validateWeekDate(year, week)) {\n      return new Date(NaN)\n    }\n\n    return dayOfISOWeekYear(year, week)\n  }\n\n  // YYYY-Www-D or YYYYWwwD\n  token = patterns.WwwD.exec(dateString)\n  if (token) {\n    week = parseInt(token[1], 10) - 1\n    var dayOfWeek = parseInt(token[2], 10) - 1\n\n    if (!validateWeekDate(year, week, dayOfWeek)) {\n      return new Date(NaN)\n    }\n\n    return dayOfISOWeekYear(year, week, dayOfWeek)\n  }\n\n  // Invalid ISO-formatted date\n  return null\n}\n\nfunction parseTime(timeString) {\n  var token\n  var hours\n  var minutes\n\n  // hh\n  token = patterns.HH.exec(timeString)\n  if (token) {\n    hours = parseFloat(token[1].replace(',', '.'))\n\n    if (!validateTime(hours)) {\n      return NaN\n    }\n\n    return (hours % 24) * MILLISECONDS_IN_HOUR\n  }\n\n  // hh:mm or hhmm\n  token = patterns.HHMM.exec(timeString)\n  if (token) {\n    hours = parseInt(token[1], 10)\n    minutes = parseFloat(token[2].replace(',', '.'))\n\n    if (!validateTime(hours, minutes)) {\n      return NaN\n    }\n\n    return (hours % 24) * MILLISECONDS_IN_HOUR + minutes * MILLISECONDS_IN_MINUTE\n  }\n\n  // hh:mm:ss or hhmmss\n  token = patterns.HHMMSS.exec(timeString)\n  if (token) {\n    hours = parseInt(token[1], 10)\n    minutes = parseInt(token[2], 10)\n    var seconds = parseFloat(token[3].replace(',', '.'))\n\n    if (!validateTime(hours, minutes, seconds)) {\n      return NaN\n    }\n\n    return (hours % 24) * MILLISECONDS_IN_HOUR + minutes * MILLISECONDS_IN_MINUTE + seconds * 1000\n  }\n\n  // Invalid ISO-formatted time\n  return null\n}\n\nfunction dayOfISOWeekYear(isoWeekYear, week, day) {\n  week = week || 0\n  day = day || 0\n  var date = new Date(0)\n  date.setUTCFullYear(isoWeekYear, 0, 4)\n  var fourthOfJanuaryDay = date.getUTCDay() || 7\n  var diff = week * 7 + day + 1 - fourthOfJanuaryDay\n  date.setUTCDate(date.getUTCDate() + diff)\n  return date\n}\n\n// Validation functions\n\nvar DAYS_IN_MONTH = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]\nvar DAYS_IN_MONTH_LEAP_YEAR = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]\n\nfunction isLeapYearIndex(year) {\n  return year % 400 === 0 || (year % 4 === 0 && year % 100 !== 0)\n}\n\nfunction validateDate(year, month, date) {\n  if (month < 0 || month > 11) {\n    return false\n  }\n\n  if (date != null) {\n    if (date < 1) {\n      return false\n    }\n\n    var isLeapYear = isLeapYearIndex(year)\n    if (isLeapYear && date > DAYS_IN_MONTH_LEAP_YEAR[month]) {\n      return false\n    }\n    if (!isLeapYear && date > DAYS_IN_MONTH[month]) {\n      return false\n    }\n  }\n\n  return true\n}\n\nfunction validateDayOfYearDate(year, dayOfYear) {\n  if (dayOfYear < 1) {\n    return false\n  }\n\n  var isLeapYear = isLeapYearIndex(year)\n  if (isLeapYear && dayOfYear > 366) {\n    return false\n  }\n  if (!isLeapYear && dayOfYear > 365) {\n    return false\n  }\n\n  return true\n}\n\nfunction validateWeekDate(year, week, day) {\n  if (week < 0 || week > 52) {\n    return false\n  }\n\n  if (day != null && (day < 0 || day > 6)) {\n    return false\n  }\n\n  return true\n}\n\nfunction validateTime(hours, minutes, seconds) {\n  if (hours != null && (hours < 0 || hours >= 25)) {\n    return false\n  }\n\n  if (minutes != null && (minutes < 0 || minutes >= 60)) {\n    return false\n  }\n\n  if (seconds != null && (seconds < 0 || seconds >= 60)) {\n    return false\n  }\n\n  return true\n}\n","import tzParseTimezone from '../_lib/tzParseTimezone/index.js'\nimport toDate from '../toDate/index.js'\n\n/**\n * @name utcToZonedTime\n * @category Time Zone Helpers\n * @summary Get a date/time representing local time in a given time zone from the UTC date\n *\n * @description\n * Returns a date instance with values representing the local time in the time zone\n * specified of the UTC time from the date provided. In other words, when the new date\n * is formatted it will show the equivalent hours in the target time zone regardless\n * of the current system time zone.\n *\n * @param {Date|String|Number} date - the date with the relevant UTC time\n * @param {String} timeZone - the time zone to get local time for, can be an offset or IANA time zone\n * @param {OptionsWithTZ} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date} the new date with the equivalent time in the time zone\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // In June 10am UTC is 6am in New York (-04:00)\n * const result = utcToZonedTime('2014-06-25T10:00:00.000Z', 'America/New_York')\n * //=> Jun 25 2014 06:00:00\n */\nexport default function utcToZonedTime(dirtyDate, timeZone, options) {\n  var date = toDate(dirtyDate, options)\n\n  var offsetMilliseconds = tzParseTimezone(timeZone, date, true)\n\n  var d = new Date(date.getTime() - offsetMilliseconds)\n\n  var resultDate = new Date(0)\n\n  resultDate.setFullYear(d.getUTCFullYear(), d.getUTCMonth(), d.getUTCDate())\n\n  resultDate.setHours(d.getUTCHours(), d.getUTCMinutes(), d.getUTCSeconds(), d.getUTCMilliseconds())\n\n  return resultDate\n}\n","import cloneObject from 'date-fns/_lib/cloneObject/index.js'\nimport toDate from '../toDate/index.js'\nimport tzPattern from '../_lib/tzPattern/index.js'\nimport tzParseTimezone from '../_lib/tzParseTimezone/index.js'\nimport newDateUTC from '../_lib/newDateUTC/index.js'\n\n/**\n * @name zonedTimeToUtc\n * @category Time Zone Helpers\n * @summary Get the UTC date/time from a date representing local time in a given time zone\n *\n * @description\n * Returns a date instance with the UTC time of the provided date of which the values\n * represented the local time in the time zone specified. In other words, if the input\n * date represented local time in time time zone, the timestamp of the output date will\n * give the equivalent UTC of that local time regardless of the current system time zone.\n *\n * @param {Date|String|Number} date - the date with values representing the local time\n * @param {String} timeZone - the time zone of this local time, can be an offset or IANA time zone\n * @param {OptionsWithTZ} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date} the new date with the equivalent time in the time zone\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // In June 10am in Los Angeles is 5pm UTC\n * const result = zonedTimeToUtc(new Date(2014, 5, 25, 10, 0, 0), 'America/Los_Angeles')\n * //=> 2014-06-25T17:00:00.000Z\n */\nexport default function zonedTimeToUtc(date, timeZone, options) {\n  if (typeof date === 'string' && !date.match(tzPattern)) {\n    var extendedOptions = cloneObject(options)\n    extendedOptions.timeZone = timeZone\n    return toDate(date, extendedOptions)\n  }\n\n  var d = toDate(date, options)\n\n  var utc = newDateUTC(\n    d.getFullYear(),\n    d.getMonth(),\n    d.getDate(),\n    d.getHours(),\n    d.getMinutes(),\n    d.getSeconds(),\n    d.getMilliseconds()\n  ).getTime()\n\n  var offsetMilliseconds = tzParseTimezone(timeZone, new Date(utc))\n\n  return new Date(utc + offsetMilliseconds)\n}\n","function n(n){for(var r=arguments.length,t=Array(r>1?r-1:0),e=1;e<r;e++)t[e-1]=arguments[e];if(\"production\"!==process.env.NODE_ENV){var i=Y[n],o=i?\"function\"==typeof i?i.apply(null,t):i:\"unknown error nr: \"+n;throw Error(\"[Immer] \"+o)}throw Error(\"[Immer] minified error nr: \"+n+(t.length?\" \"+t.map((function(n){return\"'\"+n+\"'\"})).join(\",\"):\"\")+\". Find the full error at: https://bit.ly/3cXEKWf\")}function r(n){return!!n&&!!n[Q]}function t(n){var r;return!!n&&(function(n){if(!n||\"object\"!=typeof n)return!1;var r=Object.getPrototypeOf(n);if(null===r)return!0;var t=Object.hasOwnProperty.call(r,\"constructor\")&&r.constructor;return t===Object||\"function\"==typeof t&&Function.toString.call(t)===Z}(n)||Array.isArray(n)||!!n[L]||!!(null===(r=n.constructor)||void 0===r?void 0:r[L])||s(n)||v(n))}function e(t){return r(t)||n(23,t),t[Q].t}function i(n,r,t){void 0===t&&(t=!1),0===o(n)?(t?Object.keys:nn)(n).forEach((function(e){t&&\"symbol\"==typeof e||r(e,n[e],n)})):n.forEach((function(t,e){return r(e,t,n)}))}function o(n){var r=n[Q];return r?r.i>3?r.i-4:r.i:Array.isArray(n)?1:s(n)?2:v(n)?3:0}function u(n,r){return 2===o(n)?n.has(r):Object.prototype.hasOwnProperty.call(n,r)}function a(n,r){return 2===o(n)?n.get(r):n[r]}function f(n,r,t){var e=o(n);2===e?n.set(r,t):3===e?n.add(t):n[r]=t}function c(n,r){return n===r?0!==n||1/n==1/r:n!=n&&r!=r}function s(n){return X&&n instanceof Map}function v(n){return q&&n instanceof Set}function p(n){return n.o||n.t}function l(n){if(Array.isArray(n))return Array.prototype.slice.call(n);var r=rn(n);delete r[Q];for(var t=nn(r),e=0;e<t.length;e++){var i=t[e],o=r[i];!1===o.writable&&(o.writable=!0,o.configurable=!0),(o.get||o.set)&&(r[i]={configurable:!0,writable:!0,enumerable:o.enumerable,value:n[i]})}return Object.create(Object.getPrototypeOf(n),r)}function d(n,e){return void 0===e&&(e=!1),y(n)||r(n)||!t(n)||(o(n)>1&&(n.set=n.add=n.clear=n.delete=h),Object.freeze(n),e&&i(n,(function(n,r){return d(r,!0)}),!0)),n}function h(){n(2)}function y(n){return null==n||\"object\"!=typeof n||Object.isFrozen(n)}function b(r){var t=tn[r];return t||n(18,r),t}function m(n,r){tn[n]||(tn[n]=r)}function _(){return\"production\"===process.env.NODE_ENV||U||n(0),U}function j(n,r){r&&(b(\"Patches\"),n.u=[],n.s=[],n.v=r)}function O(n){g(n),n.p.forEach(S),n.p=null}function g(n){n===U&&(U=n.l)}function w(n){return U={p:[],l:U,h:n,m:!0,_:0}}function S(n){var r=n[Q];0===r.i||1===r.i?r.j():r.O=!0}function P(r,e){e._=e.p.length;var i=e.p[0],o=void 0!==r&&r!==i;return e.h.g||b(\"ES5\").S(e,r,o),o?(i[Q].P&&(O(e),n(4)),t(r)&&(r=M(e,r),e.l||x(e,r)),e.u&&b(\"Patches\").M(i[Q].t,r,e.u,e.s)):r=M(e,i,[]),O(e),e.u&&e.v(e.u,e.s),r!==H?r:void 0}function M(n,r,t){if(y(r))return r;var e=r[Q];if(!e)return i(r,(function(i,o){return A(n,e,r,i,o,t)}),!0),r;if(e.A!==n)return r;if(!e.P)return x(n,e.t,!0),e.t;if(!e.I){e.I=!0,e.A._--;var o=4===e.i||5===e.i?e.o=l(e.k):e.o,u=o,a=!1;3===e.i&&(u=new Set(o),o.clear(),a=!0),i(u,(function(r,i){return A(n,e,o,r,i,t,a)})),x(n,o,!1),t&&n.u&&b(\"Patches\").N(e,t,n.u,n.s)}return e.o}function A(e,i,o,a,c,s,v){if(\"production\"!==process.env.NODE_ENV&&c===o&&n(5),r(c)){var p=M(e,c,s&&i&&3!==i.i&&!u(i.R,a)?s.concat(a):void 0);if(f(o,a,p),!r(p))return;e.m=!1}else v&&o.add(c);if(t(c)&&!y(c)){if(!e.h.D&&e._<1)return;M(e,c),i&&i.A.l||x(e,c)}}function x(n,r,t){void 0===t&&(t=!1),!n.l&&n.h.D&&n.m&&d(r,t)}function z(n,r){var t=n[Q];return(t?p(t):n)[r]}function I(n,r){if(r in n)for(var t=Object.getPrototypeOf(n);t;){var e=Object.getOwnPropertyDescriptor(t,r);if(e)return e;t=Object.getPrototypeOf(t)}}function k(n){n.P||(n.P=!0,n.l&&k(n.l))}function E(n){n.o||(n.o=l(n.t))}function N(n,r,t){var e=s(r)?b(\"MapSet\").F(r,t):v(r)?b(\"MapSet\").T(r,t):n.g?function(n,r){var t=Array.isArray(n),e={i:t?1:0,A:r?r.A:_(),P:!1,I:!1,R:{},l:r,t:n,k:null,o:null,j:null,C:!1},i=e,o=en;t&&(i=[e],o=on);var u=Proxy.revocable(i,o),a=u.revoke,f=u.proxy;return e.k=f,e.j=a,f}(r,t):b(\"ES5\").J(r,t);return(t?t.A:_()).p.push(e),e}function R(e){return r(e)||n(22,e),function n(r){if(!t(r))return r;var e,u=r[Q],c=o(r);if(u){if(!u.P&&(u.i<4||!b(\"ES5\").K(u)))return u.t;u.I=!0,e=D(r,c),u.I=!1}else e=D(r,c);return i(e,(function(r,t){u&&a(u.t,r)===t||f(e,r,n(t))})),3===c?new Set(e):e}(e)}function D(n,r){switch(r){case 2:return new Map(n);case 3:return Array.from(n)}return l(n)}function F(){function t(n,r){var t=s[n];return t?t.enumerable=r:s[n]=t={configurable:!0,enumerable:r,get:function(){var r=this[Q];return\"production\"!==process.env.NODE_ENV&&f(r),en.get(r,n)},set:function(r){var t=this[Q];\"production\"!==process.env.NODE_ENV&&f(t),en.set(t,n,r)}},t}function e(n){for(var r=n.length-1;r>=0;r--){var t=n[r][Q];if(!t.P)switch(t.i){case 5:a(t)&&k(t);break;case 4:o(t)&&k(t)}}}function o(n){for(var r=n.t,t=n.k,e=nn(t),i=e.length-1;i>=0;i--){var o=e[i];if(o!==Q){var a=r[o];if(void 0===a&&!u(r,o))return!0;var f=t[o],s=f&&f[Q];if(s?s.t!==a:!c(f,a))return!0}}var v=!!r[Q];return e.length!==nn(r).length+(v?0:1)}function a(n){var r=n.k;if(r.length!==n.t.length)return!0;var t=Object.getOwnPropertyDescriptor(r,r.length-1);if(t&&!t.get)return!0;for(var e=0;e<r.length;e++)if(!r.hasOwnProperty(e))return!0;return!1}function f(r){r.O&&n(3,JSON.stringify(p(r)))}var s={};m(\"ES5\",{J:function(n,r){var e=Array.isArray(n),i=function(n,r){if(n){for(var e=Array(r.length),i=0;i<r.length;i++)Object.defineProperty(e,\"\"+i,t(i,!0));return e}var o=rn(r);delete o[Q];for(var u=nn(o),a=0;a<u.length;a++){var f=u[a];o[f]=t(f,n||!!o[f].enumerable)}return Object.create(Object.getPrototypeOf(r),o)}(e,n),o={i:e?5:4,A:r?r.A:_(),P:!1,I:!1,R:{},l:r,t:n,k:i,o:null,O:!1,C:!1};return Object.defineProperty(i,Q,{value:o,writable:!0}),i},S:function(n,t,o){o?r(t)&&t[Q].A===n&&e(n.p):(n.u&&function n(r){if(r&&\"object\"==typeof r){var t=r[Q];if(t){var e=t.t,o=t.k,f=t.R,c=t.i;if(4===c)i(o,(function(r){r!==Q&&(void 0!==e[r]||u(e,r)?f[r]||n(o[r]):(f[r]=!0,k(t)))})),i(e,(function(n){void 0!==o[n]||u(o,n)||(f[n]=!1,k(t))}));else if(5===c){if(a(t)&&(k(t),f.length=!0),o.length<e.length)for(var s=o.length;s<e.length;s++)f[s]=!1;else for(var v=e.length;v<o.length;v++)f[v]=!0;for(var p=Math.min(o.length,e.length),l=0;l<p;l++)o.hasOwnProperty(l)||(f[l]=!0),void 0===f[l]&&n(o[l])}}}}(n.p[0]),e(n.p))},K:function(n){return 4===n.i?o(n):a(n)}})}function T(){function e(n){if(!t(n))return n;if(Array.isArray(n))return n.map(e);if(s(n))return new Map(Array.from(n.entries()).map((function(n){return[n[0],e(n[1])]})));if(v(n))return new Set(Array.from(n).map(e));var r=Object.create(Object.getPrototypeOf(n));for(var i in n)r[i]=e(n[i]);return u(n,L)&&(r[L]=n[L]),r}function f(n){return r(n)?e(n):n}var c=\"add\";m(\"Patches\",{$:function(r,t){return t.forEach((function(t){for(var i=t.path,u=t.op,f=r,s=0;s<i.length-1;s++){var v=o(f),p=\"\"+i[s];0!==v&&1!==v||\"__proto__\"!==p&&\"constructor\"!==p||n(24),\"function\"==typeof f&&\"prototype\"===p&&n(24),\"object\"!=typeof(f=a(f,p))&&n(15,i.join(\"/\"))}var l=o(f),d=e(t.value),h=i[i.length-1];switch(u){case\"replace\":switch(l){case 2:return f.set(h,d);case 3:n(16);default:return f[h]=d}case c:switch(l){case 1:return\"-\"===h?f.push(d):f.splice(h,0,d);case 2:return f.set(h,d);case 3:return f.add(d);default:return f[h]=d}case\"remove\":switch(l){case 1:return f.splice(h,1);case 2:return f.delete(h);case 3:return f.delete(t.value);default:return delete f[h]}default:n(17,u)}})),r},N:function(n,r,t,e){switch(n.i){case 0:case 4:case 2:return function(n,r,t,e){var o=n.t,s=n.o;i(n.R,(function(n,i){var v=a(o,n),p=a(s,n),l=i?u(o,n)?\"replace\":c:\"remove\";if(v!==p||\"replace\"!==l){var d=r.concat(n);t.push(\"remove\"===l?{op:l,path:d}:{op:l,path:d,value:p}),e.push(l===c?{op:\"remove\",path:d}:\"remove\"===l?{op:c,path:d,value:f(v)}:{op:\"replace\",path:d,value:f(v)})}}))}(n,r,t,e);case 5:case 1:return function(n,r,t,e){var i=n.t,o=n.R,u=n.o;if(u.length<i.length){var a=[u,i];i=a[0],u=a[1];var s=[e,t];t=s[0],e=s[1]}for(var v=0;v<i.length;v++)if(o[v]&&u[v]!==i[v]){var p=r.concat([v]);t.push({op:\"replace\",path:p,value:f(u[v])}),e.push({op:\"replace\",path:p,value:f(i[v])})}for(var l=i.length;l<u.length;l++){var d=r.concat([l]);t.push({op:c,path:d,value:f(u[l])})}i.length<u.length&&e.push({op:\"replace\",path:r.concat([\"length\"]),value:i.length})}(n,r,t,e);case 3:return function(n,r,t,e){var i=n.t,o=n.o,u=0;i.forEach((function(n){if(!o.has(n)){var i=r.concat([u]);t.push({op:\"remove\",path:i,value:n}),e.unshift({op:c,path:i,value:n})}u++})),u=0,o.forEach((function(n){if(!i.has(n)){var o=r.concat([u]);t.push({op:c,path:o,value:n}),e.unshift({op:\"remove\",path:o,value:n})}u++}))}(n,r,t,e)}},M:function(n,r,t,e){t.push({op:\"replace\",path:[],value:r===H?void 0:r}),e.push({op:\"replace\",path:[],value:n})}})}function C(){function r(n,r){function t(){this.constructor=n}a(n,r),n.prototype=(t.prototype=r.prototype,new t)}function e(n){n.o||(n.R=new Map,n.o=new Map(n.t))}function o(n){n.o||(n.o=new Set,n.t.forEach((function(r){if(t(r)){var e=N(n.A.h,r,n);n.p.set(r,e),n.o.add(e)}else n.o.add(r)})))}function u(r){r.O&&n(3,JSON.stringify(p(r)))}var a=function(n,r){return(a=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,r){n.__proto__=r}||function(n,r){for(var t in r)r.hasOwnProperty(t)&&(n[t]=r[t])})(n,r)},f=function(){function n(n,r){return this[Q]={i:2,l:r,A:r?r.A:_(),P:!1,I:!1,o:void 0,R:void 0,t:n,k:this,C:!1,O:!1},this}r(n,Map);var o=n.prototype;return Object.defineProperty(o,\"size\",{get:function(){return p(this[Q]).size}}),o.has=function(n){return p(this[Q]).has(n)},o.set=function(n,r){var t=this[Q];return u(t),p(t).has(n)&&p(t).get(n)===r||(e(t),k(t),t.R.set(n,!0),t.o.set(n,r),t.R.set(n,!0)),this},o.delete=function(n){if(!this.has(n))return!1;var r=this[Q];return u(r),e(r),k(r),r.t.has(n)?r.R.set(n,!1):r.R.delete(n),r.o.delete(n),!0},o.clear=function(){var n=this[Q];u(n),p(n).size&&(e(n),k(n),n.R=new Map,i(n.t,(function(r){n.R.set(r,!1)})),n.o.clear())},o.forEach=function(n,r){var t=this;p(this[Q]).forEach((function(e,i){n.call(r,t.get(i),i,t)}))},o.get=function(n){var r=this[Q];u(r);var i=p(r).get(n);if(r.I||!t(i))return i;if(i!==r.t.get(n))return i;var o=N(r.A.h,i,r);return e(r),r.o.set(n,o),o},o.keys=function(){return p(this[Q]).keys()},o.values=function(){var n,r=this,t=this.keys();return(n={})[V]=function(){return r.values()},n.next=function(){var n=t.next();return n.done?n:{done:!1,value:r.get(n.value)}},n},o.entries=function(){var n,r=this,t=this.keys();return(n={})[V]=function(){return r.entries()},n.next=function(){var n=t.next();if(n.done)return n;var e=r.get(n.value);return{done:!1,value:[n.value,e]}},n},o[V]=function(){return this.entries()},n}(),c=function(){function n(n,r){return this[Q]={i:3,l:r,A:r?r.A:_(),P:!1,I:!1,o:void 0,t:n,k:this,p:new Map,O:!1,C:!1},this}r(n,Set);var t=n.prototype;return Object.defineProperty(t,\"size\",{get:function(){return p(this[Q]).size}}),t.has=function(n){var r=this[Q];return u(r),r.o?!!r.o.has(n)||!(!r.p.has(n)||!r.o.has(r.p.get(n))):r.t.has(n)},t.add=function(n){var r=this[Q];return u(r),this.has(n)||(o(r),k(r),r.o.add(n)),this},t.delete=function(n){if(!this.has(n))return!1;var r=this[Q];return u(r),o(r),k(r),r.o.delete(n)||!!r.p.has(n)&&r.o.delete(r.p.get(n))},t.clear=function(){var n=this[Q];u(n),p(n).size&&(o(n),k(n),n.o.clear())},t.values=function(){var n=this[Q];return u(n),o(n),n.o.values()},t.entries=function(){var n=this[Q];return u(n),o(n),n.o.entries()},t.keys=function(){return this.values()},t[V]=function(){return this.values()},t.forEach=function(n,r){for(var t=this.values(),e=t.next();!e.done;)n.call(r,e.value,e.value,this),e=t.next()},n}();m(\"MapSet\",{F:function(n,r){return new f(n,r)},T:function(n,r){return new c(n,r)}})}function J(){F(),C(),T()}function K(n){return n}function $(n){return n}var G,U,W=\"undefined\"!=typeof Symbol&&\"symbol\"==typeof Symbol(\"x\"),X=\"undefined\"!=typeof Map,q=\"undefined\"!=typeof Set,B=\"undefined\"!=typeof Proxy&&void 0!==Proxy.revocable&&\"undefined\"!=typeof Reflect,H=W?Symbol.for(\"immer-nothing\"):((G={})[\"immer-nothing\"]=!0,G),L=W?Symbol.for(\"immer-draftable\"):\"__$immer_draftable\",Q=W?Symbol.for(\"immer-state\"):\"__$immer_state\",V=\"undefined\"!=typeof Symbol&&Symbol.iterator||\"@@iterator\",Y={0:\"Illegal state\",1:\"Immer drafts cannot have computed properties\",2:\"This object has been frozen and should not be mutated\",3:function(n){return\"Cannot use a proxy that has been revoked. Did you pass an object from inside an immer function to an async process? \"+n},4:\"An immer producer returned a new value *and* modified its draft. Either return a new value *or* modify the draft.\",5:\"Immer forbids circular references\",6:\"The first or second argument to `produce` must be a function\",7:\"The third argument to `produce` must be a function or undefined\",8:\"First argument to `createDraft` must be a plain object, an array, or an immerable object\",9:\"First argument to `finishDraft` must be a draft returned by `createDraft`\",10:\"The given draft is already finalized\",11:\"Object.defineProperty() cannot be used on an Immer draft\",12:\"Object.setPrototypeOf() cannot be used on an Immer draft\",13:\"Immer only supports deleting array indices\",14:\"Immer only supports setting array indices and the 'length' property\",15:function(n){return\"Cannot apply patch, path doesn't resolve: \"+n},16:'Sets cannot have \"replace\" patches.',17:function(n){return\"Unsupported patch operation: \"+n},18:function(n){return\"The plugin for '\"+n+\"' has not been loaded into Immer. To enable the plugin, import and call `enable\"+n+\"()` when initializing your application.\"},20:\"Cannot use proxies if Proxy, Proxy.revocable or Reflect are not available\",21:function(n){return\"produce can only be called on things that are draftable: plain objects, arrays, Map, Set or classes that are marked with '[immerable]: true'. Got '\"+n+\"'\"},22:function(n){return\"'current' expects a draft, got: \"+n},23:function(n){return\"'original' expects a draft, got: \"+n},24:\"Patching reserved attributes like __proto__, prototype and constructor is not allowed\"},Z=\"\"+Object.prototype.constructor,nn=\"undefined\"!=typeof Reflect&&Reflect.ownKeys?Reflect.ownKeys:void 0!==Object.getOwnPropertySymbols?function(n){return Object.getOwnPropertyNames(n).concat(Object.getOwnPropertySymbols(n))}:Object.getOwnPropertyNames,rn=Object.getOwnPropertyDescriptors||function(n){var r={};return nn(n).forEach((function(t){r[t]=Object.getOwnPropertyDescriptor(n,t)})),r},tn={},en={get:function(n,r){if(r===Q)return n;var e=p(n);if(!u(e,r))return function(n,r,t){var e,i=I(r,t);return i?\"value\"in i?i.value:null===(e=i.get)||void 0===e?void 0:e.call(n.k):void 0}(n,e,r);var i=e[r];return n.I||!t(i)?i:i===z(n.t,r)?(E(n),n.o[r]=N(n.A.h,i,n)):i},has:function(n,r){return r in p(n)},ownKeys:function(n){return Reflect.ownKeys(p(n))},set:function(n,r,t){var e=I(p(n),r);if(null==e?void 0:e.set)return e.set.call(n.k,t),!0;if(!n.P){var i=z(p(n),r),o=null==i?void 0:i[Q];if(o&&o.t===t)return n.o[r]=t,n.R[r]=!1,!0;if(c(t,i)&&(void 0!==t||u(n.t,r)))return!0;E(n),k(n)}return n.o[r]===t&&(void 0!==t||r in n.o)||Number.isNaN(t)&&Number.isNaN(n.o[r])||(n.o[r]=t,n.R[r]=!0),!0},deleteProperty:function(n,r){return void 0!==z(n.t,r)||r in n.t?(n.R[r]=!1,E(n),k(n)):delete n.R[r],n.o&&delete n.o[r],!0},getOwnPropertyDescriptor:function(n,r){var t=p(n),e=Reflect.getOwnPropertyDescriptor(t,r);return e?{writable:!0,configurable:1!==n.i||\"length\"!==r,enumerable:e.enumerable,value:t[r]}:e},defineProperty:function(){n(11)},getPrototypeOf:function(n){return Object.getPrototypeOf(n.t)},setPrototypeOf:function(){n(12)}},on={};i(en,(function(n,r){on[n]=function(){return arguments[0]=arguments[0][0],r.apply(this,arguments)}})),on.deleteProperty=function(r,t){return\"production\"!==process.env.NODE_ENV&&isNaN(parseInt(t))&&n(13),on.set.call(this,r,t,void 0)},on.set=function(r,t,e){return\"production\"!==process.env.NODE_ENV&&\"length\"!==t&&isNaN(parseInt(t))&&n(14),en.set.call(this,r[0],t,e,r[0])};var un=function(){function e(r){var e=this;this.g=B,this.D=!0,this.produce=function(r,i,o){if(\"function\"==typeof r&&\"function\"!=typeof i){var u=i;i=r;var a=e;return function(n){var r=this;void 0===n&&(n=u);for(var t=arguments.length,e=Array(t>1?t-1:0),o=1;o<t;o++)e[o-1]=arguments[o];return a.produce(n,(function(n){var t;return(t=i).call.apply(t,[r,n].concat(e))}))}}var f;if(\"function\"!=typeof i&&n(6),void 0!==o&&\"function\"!=typeof o&&n(7),t(r)){var c=w(e),s=N(e,r,void 0),v=!0;try{f=i(s),v=!1}finally{v?O(c):g(c)}return\"undefined\"!=typeof Promise&&f instanceof Promise?f.then((function(n){return j(c,o),P(n,c)}),(function(n){throw O(c),n})):(j(c,o),P(f,c))}if(!r||\"object\"!=typeof r){if(void 0===(f=i(r))&&(f=r),f===H&&(f=void 0),e.D&&d(f,!0),o){var p=[],l=[];b(\"Patches\").M(r,f,p,l),o(p,l)}return f}n(21,r)},this.produceWithPatches=function(n,r){if(\"function\"==typeof n)return function(r){for(var t=arguments.length,i=Array(t>1?t-1:0),o=1;o<t;o++)i[o-1]=arguments[o];return e.produceWithPatches(r,(function(r){return n.apply(void 0,[r].concat(i))}))};var t,i,o=e.produce(n,r,(function(n,r){t=n,i=r}));return\"undefined\"!=typeof Promise&&o instanceof Promise?o.then((function(n){return[n,t,i]})):[o,t,i]},\"boolean\"==typeof(null==r?void 0:r.useProxies)&&this.setUseProxies(r.useProxies),\"boolean\"==typeof(null==r?void 0:r.autoFreeze)&&this.setAutoFreeze(r.autoFreeze)}var i=e.prototype;return i.createDraft=function(e){t(e)||n(8),r(e)&&(e=R(e));var i=w(this),o=N(this,e,void 0);return o[Q].C=!0,g(i),o},i.finishDraft=function(r,t){var e=r&&r[Q];\"production\"!==process.env.NODE_ENV&&(e&&e.C||n(9),e.I&&n(10));var i=e.A;return j(i,t),P(void 0,i)},i.setAutoFreeze=function(n){this.D=n},i.setUseProxies=function(r){r&&!B&&n(20),this.g=r},i.applyPatches=function(n,t){var e;for(e=t.length-1;e>=0;e--){var i=t[e];if(0===i.path.length&&\"replace\"===i.op){n=i.value;break}}e>-1&&(t=t.slice(e+1));var o=b(\"Patches\").$;return r(n)?o(n,t):this.produce(n,(function(n){return o(n,t)}))},e}(),an=new un,fn=an.produce,cn=an.produceWithPatches.bind(an),sn=an.setAutoFreeze.bind(an),vn=an.setUseProxies.bind(an),pn=an.applyPatches.bind(an),ln=an.createDraft.bind(an),dn=an.finishDraft.bind(an);export default fn;export{un as Immer,pn as applyPatches,K as castDraft,$ as castImmutable,ln as createDraft,R as current,J as enableAllPlugins,F as enableES5,C as enableMapSet,T as enablePatches,dn as finishDraft,d as freeze,L as immerable,r as isDraft,t as isDraftable,H as nothing,e as original,fn as produce,cn as produceWithPatches,sn as setAutoFreeze,vn as setUseProxies};\n//# sourceMappingURL=immer.esm.js.map\n","\nconst ARRAY_TYPES = [\n    Int8Array, Uint8Array, Uint8ClampedArray, Int16Array, Uint16Array,\n    Int32Array, Uint32Array, Float32Array, Float64Array\n];\n\n/** @typedef {Int8ArrayConstructor | Uint8ArrayConstructor | Uint8ClampedArrayConstructor | Int16ArrayConstructor | Uint16ArrayConstructor | Int32ArrayConstructor | Uint32ArrayConstructor | Float32ArrayConstructor | Float64ArrayConstructor} TypedArrayConstructor */\n\nconst VERSION = 1; // serialized format version\nconst HEADER_SIZE = 8;\n\nexport default class KDBush {\n\n    /**\n     * Creates an index from raw `ArrayBuffer` data.\n     * @param {ArrayBuffer} data\n     */\n    static from(data) {\n        if (!(data instanceof ArrayBuffer)) {\n            throw new Error('Data must be an instance of ArrayBuffer.');\n        }\n        const [magic, versionAndType] = new Uint8Array(data, 0, 2);\n        if (magic !== 0xdb) {\n            throw new Error('Data does not appear to be in a KDBush format.');\n        }\n        const version = versionAndType >> 4;\n        if (version !== VERSION) {\n            throw new Error(`Got v${version} data when expected v${VERSION}.`);\n        }\n        const ArrayType = ARRAY_TYPES[versionAndType & 0x0f];\n        if (!ArrayType) {\n            throw new Error('Unrecognized array type.');\n        }\n        const [nodeSize] = new Uint16Array(data, 2, 1);\n        const [numItems] = new Uint32Array(data, 4, 1);\n\n        return new KDBush(numItems, nodeSize, ArrayType, data);\n    }\n\n    /**\n     * Creates an index that will hold a given number of items.\n     * @param {number} numItems\n     * @param {number} [nodeSize=64] Size of the KD-tree node (64 by default).\n     * @param {TypedArrayConstructor} [ArrayType=Float64Array] The array type used for coordinates storage (`Float64Array` by default).\n     * @param {ArrayBuffer} [data] (For internal use only)\n     */\n    constructor(numItems, nodeSize = 64, ArrayType = Float64Array, data) {\n        if (isNaN(numItems) || numItems < 0) throw new Error(`Unpexpected numItems value: ${numItems}.`);\n\n        this.numItems = +numItems;\n        this.nodeSize = Math.min(Math.max(+nodeSize, 2), 65535);\n        this.ArrayType = ArrayType;\n        this.IndexArrayType = numItems < 65536 ? Uint16Array : Uint32Array;\n\n        const arrayTypeIndex = ARRAY_TYPES.indexOf(this.ArrayType);\n        const coordsByteSize = numItems * 2 * this.ArrayType.BYTES_PER_ELEMENT;\n        const idsByteSize = numItems * this.IndexArrayType.BYTES_PER_ELEMENT;\n        const padCoords = (8 - idsByteSize % 8) % 8;\n\n        if (arrayTypeIndex < 0) {\n            throw new Error(`Unexpected typed array class: ${ArrayType}.`);\n        }\n\n        if (data && (data instanceof ArrayBuffer)) { // reconstruct an index from a buffer\n            this.data = data;\n            this.ids = new this.IndexArrayType(this.data, HEADER_SIZE, numItems);\n            this.coords = new this.ArrayType(this.data, HEADER_SIZE + idsByteSize + padCoords, numItems * 2);\n            this._pos = numItems * 2;\n            this._finished = true;\n        } else { // initialize a new index\n            this.data = new ArrayBuffer(HEADER_SIZE + coordsByteSize + idsByteSize + padCoords);\n            this.ids = new this.IndexArrayType(this.data, HEADER_SIZE, numItems);\n            this.coords = new this.ArrayType(this.data, HEADER_SIZE + idsByteSize + padCoords, numItems * 2);\n            this._pos = 0;\n            this._finished = false;\n\n            // set header\n            new Uint8Array(this.data, 0, 2).set([0xdb, (VERSION << 4) + arrayTypeIndex]);\n            new Uint16Array(this.data, 2, 1)[0] = nodeSize;\n            new Uint32Array(this.data, 4, 1)[0] = numItems;\n        }\n    }\n\n    /**\n     * Add a point to the index.\n     * @param {number} x\n     * @param {number} y\n     * @returns {number} An incremental index associated with the added item (starting from `0`).\n     */\n    add(x, y) {\n        const index = this._pos >> 1;\n        this.ids[index] = index;\n        this.coords[this._pos++] = x;\n        this.coords[this._pos++] = y;\n        return index;\n    }\n\n    /**\n     * Perform indexing of the added points.\n     */\n    finish() {\n        const numAdded = this._pos >> 1;\n        if (numAdded !== this.numItems) {\n            throw new Error(`Added ${numAdded} items when expected ${this.numItems}.`);\n        }\n        // kd-sort both arrays for efficient search\n        sort(this.ids, this.coords, this.nodeSize, 0, this.numItems - 1, 0);\n\n        this._finished = true;\n        return this;\n    }\n\n    /**\n     * Search the index for items within a given bounding box.\n     * @param {number} minX\n     * @param {number} minY\n     * @param {number} maxX\n     * @param {number} maxY\n     * @returns {number[]} An array of indices correponding to the found items.\n     */\n    range(minX, minY, maxX, maxY) {\n        if (!this._finished) throw new Error('Data not yet indexed - call index.finish().');\n\n        const {ids, coords, nodeSize} = this;\n        const stack = [0, ids.length - 1, 0];\n        const result = [];\n\n        // recursively search for items in range in the kd-sorted arrays\n        while (stack.length) {\n            const axis = stack.pop() || 0;\n            const right = stack.pop() || 0;\n            const left = stack.pop() || 0;\n\n            // if we reached \"tree node\", search linearly\n            if (right - left <= nodeSize) {\n                for (let i = left; i <= right; i++) {\n                    const x = coords[2 * i];\n                    const y = coords[2 * i + 1];\n                    if (x >= minX && x <= maxX && y >= minY && y <= maxY) result.push(ids[i]);\n                }\n                continue;\n            }\n\n            // otherwise find the middle index\n            const m = (left + right) >> 1;\n\n            // include the middle item if it's in range\n            const x = coords[2 * m];\n            const y = coords[2 * m + 1];\n            if (x >= minX && x <= maxX && y >= minY && y <= maxY) result.push(ids[m]);\n\n            // queue search in halves that intersect the query\n            if (axis === 0 ? minX <= x : minY <= y) {\n                stack.push(left);\n                stack.push(m - 1);\n                stack.push(1 - axis);\n            }\n            if (axis === 0 ? maxX >= x : maxY >= y) {\n                stack.push(m + 1);\n                stack.push(right);\n                stack.push(1 - axis);\n            }\n        }\n\n        return result;\n    }\n\n    /**\n     * Search the index for items within a given radius.\n     * @param {number} qx\n     * @param {number} qy\n     * @param {number} r Query radius.\n     * @returns {number[]} An array of indices correponding to the found items.\n     */\n    within(qx, qy, r) {\n        if (!this._finished) throw new Error('Data not yet indexed - call index.finish().');\n\n        const {ids, coords, nodeSize} = this;\n        const stack = [0, ids.length - 1, 0];\n        const result = [];\n        const r2 = r * r;\n\n        // recursively search for items within radius in the kd-sorted arrays\n        while (stack.length) {\n            const axis = stack.pop() || 0;\n            const right = stack.pop() || 0;\n            const left = stack.pop() || 0;\n\n            // if we reached \"tree node\", search linearly\n            if (right - left <= nodeSize) {\n                for (let i = left; i <= right; i++) {\n                    if (sqDist(coords[2 * i], coords[2 * i + 1], qx, qy) <= r2) result.push(ids[i]);\n                }\n                continue;\n            }\n\n            // otherwise find the middle index\n            const m = (left + right) >> 1;\n\n            // include the middle item if it's in range\n            const x = coords[2 * m];\n            const y = coords[2 * m + 1];\n            if (sqDist(x, y, qx, qy) <= r2) result.push(ids[m]);\n\n            // queue search in halves that intersect the query\n            if (axis === 0 ? qx - r <= x : qy - r <= y) {\n                stack.push(left);\n                stack.push(m - 1);\n                stack.push(1 - axis);\n            }\n            if (axis === 0 ? qx + r >= x : qy + r >= y) {\n                stack.push(m + 1);\n                stack.push(right);\n                stack.push(1 - axis);\n            }\n        }\n\n        return result;\n    }\n}\n\n/**\n * @param {Uint16Array | Uint32Array} ids\n * @param {InstanceType<TypedArrayConstructor>} coords\n * @param {number} nodeSize\n * @param {number} left\n * @param {number} right\n * @param {number} axis\n */\nfunction sort(ids, coords, nodeSize, left, right, axis) {\n    if (right - left <= nodeSize) return;\n\n    const m = (left + right) >> 1; // middle index\n\n    // sort ids and coords around the middle index so that the halves lie\n    // either left/right or top/bottom correspondingly (taking turns)\n    select(ids, coords, m, left, right, axis);\n\n    // recursively kd-sort first half and second half on the opposite axis\n    sort(ids, coords, nodeSize, left, m - 1, 1 - axis);\n    sort(ids, coords, nodeSize, m + 1, right, 1 - axis);\n}\n\n/**\n * Custom Floyd-Rivest selection algorithm: sort ids and coords so that\n * [left..k-1] items are smaller than k-th item (on either x or y axis)\n * @param {Uint16Array | Uint32Array} ids\n * @param {InstanceType<TypedArrayConstructor>} coords\n * @param {number} k\n * @param {number} left\n * @param {number} right\n * @param {number} axis\n */\nfunction select(ids, coords, k, left, right, axis) {\n\n    while (right > left) {\n        if (right - left > 600) {\n            const n = right - left + 1;\n            const m = k - left + 1;\n            const z = Math.log(n);\n            const s = 0.5 * Math.exp(2 * z / 3);\n            const sd = 0.5 * Math.sqrt(z * s * (n - s) / n) * (m - n / 2 < 0 ? -1 : 1);\n            const newLeft = Math.max(left, Math.floor(k - m * s / n + sd));\n            const newRight = Math.min(right, Math.floor(k + (n - m) * s / n + sd));\n            select(ids, coords, k, newLeft, newRight, axis);\n        }\n\n        const t = coords[2 * k + axis];\n        let i = left;\n        let j = right;\n\n        swapItem(ids, coords, left, k);\n        if (coords[2 * right + axis] > t) swapItem(ids, coords, left, right);\n\n        while (i < j) {\n            swapItem(ids, coords, i, j);\n            i++;\n            j--;\n            while (coords[2 * i + axis] < t) i++;\n            while (coords[2 * j + axis] > t) j--;\n        }\n\n        if (coords[2 * left + axis] === t) swapItem(ids, coords, left, j);\n        else {\n            j++;\n            swapItem(ids, coords, j, right);\n        }\n\n        if (j <= k) left = j + 1;\n        if (k <= j) right = j - 1;\n    }\n}\n\n/**\n * @param {Uint16Array | Uint32Array} ids\n * @param {InstanceType<TypedArrayConstructor>} coords\n * @param {number} i\n * @param {number} j\n */\nfunction swapItem(ids, coords, i, j) {\n    swap(ids, i, j);\n    swap(coords, 2 * i, 2 * j);\n    swap(coords, 2 * i + 1, 2 * j + 1);\n}\n\n/**\n * @param {InstanceType<TypedArrayConstructor>} arr\n * @param {number} i\n * @param {number} j\n */\nfunction swap(arr, i, j) {\n    const tmp = arr[i];\n    arr[i] = arr[j];\n    arr[j] = tmp;\n}\n\n/**\n * @param {number} ax\n * @param {number} ay\n * @param {number} bx\n * @param {number} by\n */\nfunction sqDist(ax, ay, bx, by) {\n    const dx = ax - bx;\n    const dy = ay - by;\n    return dx * dx + dy * dy;\n}\n","/*\n * Copyright 2016 Red Hat, Inc. and/or its affiliates\n * and other contributors as indicated by the @author tags.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nfunction Keycloak (config) {\n    if (!(this instanceof Keycloak)) {\n        throw new Error(\"The 'Keycloak' constructor must be invoked with 'new'.\")\n    }\n\n    if (typeof config !== 'string' && !isObject(config)) {\n        throw new Error(\"The 'Keycloak' constructor must be provided with a configuration object, or a URL to a JSON configuration file.\");\n    }\n\n    if (isObject(config)) {\n        const requiredProperties = 'oidcProvider' in config\n            ? ['clientId']\n            : ['url', 'realm', 'clientId'];\n\n        for (const property of requiredProperties) {\n            if (!config[property]) {\n                throw new Error(`The configuration object is missing the required '${property}' property.`);\n            }\n        }\n    }\n\n    var kc = this;\n    var adapter;\n    var refreshQueue = [];\n    var callbackStorage;\n\n    var loginIframe = {\n        enable: true,\n        callbackList: [],\n        interval: 5\n    };\n\n    kc.didInitialize = false;\n\n    var useNonce = true;\n    var logInfo = createLogger(console.info);\n    var logWarn = createLogger(console.warn);\n\n    if (!globalThis.isSecureContext) {\n        logWarn(\n            \"[KEYCLOAK] Keycloak JS must be used in a 'secure context' to function properly as it relies on browser APIs that are otherwise not available.\\n\" +\n            \"Continuing to run your application insecurely will lead to unexpected behavior and breakage.\\n\\n\" +\n            \"For more information see: https://developer.mozilla.org/en-US/docs/Web/Security/Secure_Contexts\"\n        );\n    }\n\n    kc.init = function (initOptions = {}) {\n        if (kc.didInitialize) {\n            throw new Error(\"A 'Keycloak' instance can only be initialized once.\");\n        }\n\n        kc.didInitialize = true;\n\n        kc.authenticated = false;\n\n        callbackStorage = createCallbackStorage();\n        var adapters = ['default', 'cordova', 'cordova-native'];\n\n        if (adapters.indexOf(initOptions.adapter) > -1) {\n            adapter = loadAdapter(initOptions.adapter);\n        } else if (typeof initOptions.adapter === \"object\") {\n            adapter = initOptions.adapter;\n        } else {\n            if (window.Cordova || window.cordova) {\n                adapter = loadAdapter('cordova');\n            } else {\n                adapter = loadAdapter();\n            }\n        }\n\n        if (typeof initOptions.useNonce !== 'undefined') {\n            useNonce = initOptions.useNonce;\n        }\n\n        if (typeof initOptions.checkLoginIframe !== 'undefined') {\n            loginIframe.enable = initOptions.checkLoginIframe;\n        }\n\n        if (initOptions.checkLoginIframeInterval) {\n            loginIframe.interval = initOptions.checkLoginIframeInterval;\n        }\n\n        if (initOptions.onLoad === 'login-required') {\n            kc.loginRequired = true;\n        }\n\n        if (initOptions.responseMode) {\n            if (initOptions.responseMode === 'query' || initOptions.responseMode === 'fragment') {\n                kc.responseMode = initOptions.responseMode;\n            } else {\n                throw 'Invalid value for responseMode';\n            }\n        }\n\n        if (initOptions.flow) {\n            switch (initOptions.flow) {\n                case 'standard':\n                    kc.responseType = 'code';\n                    break;\n                case 'implicit':\n                    kc.responseType = 'id_token token';\n                    break;\n                case 'hybrid':\n                    kc.responseType = 'code id_token token';\n                    break;\n                default:\n                    throw 'Invalid value for flow';\n            }\n            kc.flow = initOptions.flow;\n        }\n\n        if (initOptions.timeSkew != null) {\n            kc.timeSkew = initOptions.timeSkew;\n        }\n\n        if(initOptions.redirectUri) {\n            kc.redirectUri = initOptions.redirectUri;\n        }\n\n        if (initOptions.silentCheckSsoRedirectUri) {\n            kc.silentCheckSsoRedirectUri = initOptions.silentCheckSsoRedirectUri;\n        }\n\n        if (typeof initOptions.silentCheckSsoFallback === 'boolean') {\n            kc.silentCheckSsoFallback = initOptions.silentCheckSsoFallback;\n        } else {\n            kc.silentCheckSsoFallback = true;\n        }\n\n        if (typeof initOptions.pkceMethod !== \"undefined\") {\n            if (initOptions.pkceMethod !== \"S256\" && initOptions.pkceMethod !== false) {\n                throw new TypeError(`Invalid value for pkceMethod', expected 'S256' or false but got ${initOptions.pkceMethod}.`);\n            }\n\n            kc.pkceMethod = initOptions.pkceMethod;\n        } else {\n            kc.pkceMethod = \"S256\";\n        }\n\n        if (typeof initOptions.enableLogging === 'boolean') {\n            kc.enableLogging = initOptions.enableLogging;\n        } else {\n            kc.enableLogging = false;\n        }\n\n        if (initOptions.logoutMethod === 'POST') {\n            kc.logoutMethod = 'POST';\n        } else {\n            kc.logoutMethod = 'GET';\n        }\n\n        if (typeof initOptions.scope === 'string') {\n            kc.scope = initOptions.scope;\n        }\n\n        if (typeof initOptions.acrValues === 'string') {\n            kc.acrValues = initOptions.acrValues;\n        }\n\n        if (typeof initOptions.messageReceiveTimeout === 'number' && initOptions.messageReceiveTimeout > 0) {\n            kc.messageReceiveTimeout = initOptions.messageReceiveTimeout;\n        } else {\n            kc.messageReceiveTimeout = 10000;\n        }\n\n        if (!kc.responseMode) {\n            kc.responseMode = 'fragment';\n        }\n        if (!kc.responseType) {\n            kc.responseType = 'code';\n            kc.flow = 'standard';\n        }\n\n        var promise = createPromise();\n\n        var initPromise = createPromise();\n        initPromise.promise.then(function() {\n            kc.onReady && kc.onReady(kc.authenticated);\n            promise.setSuccess(kc.authenticated);\n        }).catch(function(error) {\n            promise.setError(error);\n        });\n\n        var configPromise = loadConfig();\n\n        function onLoad() {\n            var doLogin = function(prompt) {\n                if (!prompt) {\n                    options.prompt = 'none';\n                }\n\n                if (initOptions.locale) {\n                    options.locale = initOptions.locale;\n                }\n                kc.login(options).then(function () {\n                    initPromise.setSuccess();\n                }).catch(function (error) {\n                    initPromise.setError(error);\n                });\n            }\n\n            var checkSsoSilently = async function() {\n                var ifrm = document.createElement(\"iframe\");\n                var src = await kc.createLoginUrl({prompt: 'none', redirectUri: kc.silentCheckSsoRedirectUri});\n                ifrm.setAttribute(\"src\", src);\n                ifrm.setAttribute(\"sandbox\", \"allow-storage-access-by-user-activation allow-scripts allow-same-origin\");\n                ifrm.setAttribute(\"title\", \"keycloak-silent-check-sso\");\n                ifrm.style.display = \"none\";\n                document.body.appendChild(ifrm);\n\n                var messageCallback = function(event) {\n                    if (event.origin !== window.location.origin || ifrm.contentWindow !== event.source) {\n                        return;\n                    }\n\n                    var oauth = parseCallback(event.data);\n                    processCallback(oauth, initPromise);\n\n                    document.body.removeChild(ifrm);\n                    window.removeEventListener(\"message\", messageCallback);\n                };\n\n                window.addEventListener(\"message\", messageCallback);\n            };\n\n            var options = {};\n            switch (initOptions.onLoad) {\n                case 'check-sso':\n                    if (loginIframe.enable) {\n                        setupCheckLoginIframe().then(function() {\n                            checkLoginIframe().then(function (unchanged) {\n                                if (!unchanged) {\n                                    kc.silentCheckSsoRedirectUri ? checkSsoSilently() : doLogin(false);\n                                } else {\n                                    initPromise.setSuccess();\n                                }\n                            }).catch(function (error) {\n                                initPromise.setError(error);\n                            });\n                        });\n                    } else {\n                        kc.silentCheckSsoRedirectUri ? checkSsoSilently() : doLogin(false);\n                    }\n                    break;\n                case 'login-required':\n                    doLogin(true);\n                    break;\n                default:\n                    throw 'Invalid value for onLoad';\n            }\n        }\n\n        function processInit() {\n            var callback = parseCallback(window.location.href);\n\n            if (callback) {\n                window.history.replaceState(window.history.state, null, callback.newUrl);\n            }\n\n            if (callback && callback.valid) {\n                return setupCheckLoginIframe().then(function() {\n                    processCallback(callback, initPromise);\n                }).catch(function (error) {\n                    initPromise.setError(error);\n                });\n            }\n\n            if (initOptions.token && initOptions.refreshToken) {\n                setToken(initOptions.token, initOptions.refreshToken, initOptions.idToken);\n\n                if (loginIframe.enable) {\n                    setupCheckLoginIframe().then(function() {\n                        checkLoginIframe().then(function (unchanged) {\n                            if (unchanged) {\n                                kc.onAuthSuccess && kc.onAuthSuccess();\n                                initPromise.setSuccess();\n                                scheduleCheckIframe();\n                            } else {\n                                initPromise.setSuccess();\n                            }\n                        }).catch(function (error) {\n                            initPromise.setError(error);\n                        });\n                    });\n                } else {\n                    kc.updateToken(-1).then(function() {\n                        kc.onAuthSuccess && kc.onAuthSuccess();\n                        initPromise.setSuccess();\n                    }).catch(function(error) {\n                        kc.onAuthError && kc.onAuthError();\n                        if (initOptions.onLoad) {\n                            onLoad();\n                        } else {\n                            initPromise.setError(error);\n                        }\n                    });\n                }\n            } else if (initOptions.onLoad) {\n                onLoad();\n            } else {\n                initPromise.setSuccess();\n            }\n        }\n\n        configPromise.then(function () {\n            check3pCookiesSupported()\n                .then(processInit)\n                .catch(function (error) {\n                    promise.setError(error);\n                });\n        });\n        configPromise.catch(function (error) {\n            promise.setError(error);\n        });\n\n        return promise.promise;\n    }\n\n    kc.login = function (options) {\n        return adapter.login(options);\n    }\n\n    function generateRandomData(len) {\n        if (typeof crypto === \"undefined\" || typeof crypto.getRandomValues === \"undefined\") {\n            throw new Error(\"Web Crypto API is not available.\");\n        }\n\n        return crypto.getRandomValues(new Uint8Array(len));\n    }\n\n    function generateCodeVerifier(len) {\n        return generateRandomString(len, 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789');\n    }\n\n    function generateRandomString(len, alphabet){\n        var randomData = generateRandomData(len);\n        var chars = new Array(len);\n        for (var i = 0; i < len; i++) {\n            chars[i] = alphabet.charCodeAt(randomData[i] % alphabet.length);\n        }\n        return String.fromCharCode.apply(null, chars);\n    }\n\n    async function generatePkceChallenge(pkceMethod, codeVerifier) {\n        if (pkceMethod !== \"S256\") {\n            throw new TypeError(`Invalid value for 'pkceMethod', expected 'S256' but got '${pkceMethod}'.`);\n        }\n\n        // hash codeVerifier, then encode as url-safe base64 without padding\n        const hashBytes = new Uint8Array(await sha256Digest(codeVerifier));\n        const encodedHash = bytesToBase64(hashBytes)\n            .replace(/\\+/g, '-')\n            .replace(/\\//g, '_')\n            .replace(/\\=/g, '');\n\n        return encodedHash;\n    }\n\n    function buildClaimsParameter(requestedAcr){\n        var claims = {\n            id_token: {\n                acr: requestedAcr\n            }\n        }\n        return JSON.stringify(claims);\n    }\n\n    kc.createLoginUrl = async function(options) {\n        var state = createUUID();\n        var nonce = createUUID();\n\n        var redirectUri = adapter.redirectUri(options);\n\n        var callbackState = {\n            state: state,\n            nonce: nonce,\n            redirectUri: encodeURIComponent(redirectUri),\n            loginOptions: options\n        };\n\n        if (options && options.prompt) {\n            callbackState.prompt = options.prompt;\n        }\n\n        var baseUrl;\n        if (options && options.action == 'register') {\n            baseUrl = kc.endpoints.register();\n        } else {\n            baseUrl = kc.endpoints.authorize();\n        }\n\n        var scope = options && options.scope || kc.scope;\n        if (!scope) {\n            // if scope is not set, default to \"openid\"\n            scope = \"openid\";\n        } else if (scope.indexOf(\"openid\") === -1) {\n            // if openid scope is missing, prefix the given scopes with it\n            scope = \"openid \" + scope;\n        }\n\n        var url = baseUrl\n            + '?client_id=' + encodeURIComponent(kc.clientId)\n            + '&redirect_uri=' + encodeURIComponent(redirectUri)\n            + '&state=' + encodeURIComponent(state)\n            + '&response_mode=' + encodeURIComponent(kc.responseMode)\n            + '&response_type=' + encodeURIComponent(kc.responseType)\n            + '&scope=' + encodeURIComponent(scope);\n        if (useNonce) {\n            url = url + '&nonce=' + encodeURIComponent(nonce);\n        }\n\n        if (options && options.prompt) {\n            url += '&prompt=' + encodeURIComponent(options.prompt);\n        }\n\n        if (options && typeof options.maxAge === 'number') {\n            url += '&max_age=' + encodeURIComponent(options.maxAge);\n        }\n\n        if (options && options.loginHint) {\n            url += '&login_hint=' + encodeURIComponent(options.loginHint);\n        }\n\n        if (options && options.idpHint) {\n            url += '&kc_idp_hint=' + encodeURIComponent(options.idpHint);\n        }\n\n        if (options && options.action && options.action != 'register') {\n            url += '&kc_action=' + encodeURIComponent(options.action);\n        }\n\n        if (options && options.locale) {\n            url += '&ui_locales=' + encodeURIComponent(options.locale);\n        }\n\n        if (options && options.acr) {\n            var claimsParameter = buildClaimsParameter(options.acr);\n            url += '&claims=' + encodeURIComponent(claimsParameter);\n        }\n\n        if ((options && options.acrValues) || kc.acrValues) {\n            url += '&acr_values=' + encodeURIComponent(options.acrValues || kc.acrValues);\n        }\n\n        if (kc.pkceMethod) {\n            try {\n                const codeVerifier = generateCodeVerifier(96);\n                const pkceChallenge = await generatePkceChallenge(kc.pkceMethod, codeVerifier);\n\n                callbackState.pkceCodeVerifier = codeVerifier;\n\n                url += '&code_challenge=' + pkceChallenge;\n                url += '&code_challenge_method=' + kc.pkceMethod;\n            } catch (error) {\n                throw new Error(\"Failed to generate PKCE challenge.\", { cause: error });\n            }\n        }\n\n        callbackStorage.add(callbackState);\n\n        return url;\n    }\n\n    kc.logout = function(options) {\n        return adapter.logout(options);\n    }\n\n    kc.createLogoutUrl = function(options) {\n\n        const logoutMethod = options?.logoutMethod ?? kc.logoutMethod;\n        if (logoutMethod === 'POST') {\n            return kc.endpoints.logout();\n        }\n\n        var url = kc.endpoints.logout()\n            + '?client_id=' + encodeURIComponent(kc.clientId)\n            + '&post_logout_redirect_uri=' + encodeURIComponent(adapter.redirectUri(options, false));\n\n        if (kc.idToken) {\n            url += '&id_token_hint=' + encodeURIComponent(kc.idToken);\n        }\n\n        return url;\n    }\n\n    kc.register = function (options) {\n        return adapter.register(options);\n    }\n\n    kc.createRegisterUrl = async function(options) {\n        if (!options) {\n            options = {};\n        }\n        options.action = 'register';\n        return await kc.createLoginUrl(options);\n    }\n\n    kc.createAccountUrl = function(options) {\n        var realm = getRealmUrl();\n        var url = undefined;\n        if (typeof realm !== 'undefined') {\n            url = realm\n            + '/account'\n            + '?referrer=' + encodeURIComponent(kc.clientId)\n            + '&referrer_uri=' + encodeURIComponent(adapter.redirectUri(options));\n        }\n        return url;\n    }\n\n    kc.accountManagement = function() {\n        return adapter.accountManagement();\n    }\n\n    kc.hasRealmRole = function (role) {\n        var access = kc.realmAccess;\n        return !!access && access.roles.indexOf(role) >= 0;\n    }\n\n    kc.hasResourceRole = function(role, resource) {\n        if (!kc.resourceAccess) {\n            return false;\n        }\n\n        var access = kc.resourceAccess[resource || kc.clientId];\n        return !!access && access.roles.indexOf(role) >= 0;\n    }\n\n    kc.loadUserProfile = function() {\n        var url = getRealmUrl() + '/account';\n        var req = new XMLHttpRequest();\n        req.open('GET', url, true);\n        req.setRequestHeader('Accept', 'application/json');\n        req.setRequestHeader('Authorization', 'bearer ' + kc.token);\n\n        var promise = createPromise();\n\n        req.onreadystatechange = function () {\n            if (req.readyState == 4) {\n                if (req.status == 200) {\n                    kc.profile = JSON.parse(req.responseText);\n                    promise.setSuccess(kc.profile);\n                } else {\n                    promise.setError();\n                }\n            }\n        }\n\n        req.send();\n\n        return promise.promise;\n    }\n\n    kc.loadUserInfo = function() {\n        var url = kc.endpoints.userinfo();\n        var req = new XMLHttpRequest();\n        req.open('GET', url, true);\n        req.setRequestHeader('Accept', 'application/json');\n        req.setRequestHeader('Authorization', 'bearer ' + kc.token);\n\n        var promise = createPromise();\n\n        req.onreadystatechange = function () {\n            if (req.readyState == 4) {\n                if (req.status == 200) {\n                    kc.userInfo = JSON.parse(req.responseText);\n                    promise.setSuccess(kc.userInfo);\n                } else {\n                    promise.setError();\n                }\n            }\n        }\n\n        req.send();\n\n        return promise.promise;\n    }\n\n    kc.isTokenExpired = function(minValidity) {\n        if (!kc.tokenParsed || (!kc.refreshToken && kc.flow != 'implicit' )) {\n            throw 'Not authenticated';\n        }\n\n        if (kc.timeSkew == null) {\n            logInfo('[KEYCLOAK] Unable to determine if token is expired as timeskew is not set');\n            return true;\n        }\n\n        var expiresIn = kc.tokenParsed['exp'] - Math.ceil(new Date().getTime() / 1000) + kc.timeSkew;\n        if (minValidity) {\n            if (isNaN(minValidity)) {\n                throw 'Invalid minValidity';\n            }\n            expiresIn -= minValidity;\n        }\n        return expiresIn < 0;\n    }\n\n    kc.updateToken = function(minValidity) {\n        var promise = createPromise();\n\n        if (!kc.refreshToken) {\n            promise.setError();\n            return promise.promise;\n        }\n\n        minValidity = minValidity || 5;\n\n        var exec = function() {\n            var refreshToken = false;\n            if (minValidity == -1) {\n                refreshToken = true;\n                logInfo('[KEYCLOAK] Refreshing token: forced refresh');\n            } else if (!kc.tokenParsed || kc.isTokenExpired(minValidity)) {\n                refreshToken = true;\n                logInfo('[KEYCLOAK] Refreshing token: token expired');\n            }\n\n            if (!refreshToken) {\n                promise.setSuccess(false);\n            } else {\n                var params = 'grant_type=refresh_token&' + 'refresh_token=' + kc.refreshToken;\n                var url = kc.endpoints.token();\n\n                refreshQueue.push(promise);\n\n                if (refreshQueue.length == 1) {\n                    var req = new XMLHttpRequest();\n                    req.open('POST', url, true);\n                    req.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');\n                    req.withCredentials = true;\n\n                    params += '&client_id=' + encodeURIComponent(kc.clientId);\n\n                    var timeLocal = new Date().getTime();\n\n                    req.onreadystatechange = function () {\n                        if (req.readyState == 4) {\n                            if (req.status == 200) {\n                                logInfo('[KEYCLOAK] Token refreshed');\n\n                                timeLocal = (timeLocal + new Date().getTime()) / 2;\n\n                                var tokenResponse = JSON.parse(req.responseText);\n\n                                setToken(tokenResponse['access_token'], tokenResponse['refresh_token'], tokenResponse['id_token'], timeLocal);\n\n                                kc.onAuthRefreshSuccess && kc.onAuthRefreshSuccess();\n                                for (var p = refreshQueue.pop(); p != null; p = refreshQueue.pop()) {\n                                    p.setSuccess(true);\n                                }\n                            } else {\n                                logWarn('[KEYCLOAK] Failed to refresh token');\n\n                                if (req.status == 400) {\n                                    kc.clearToken();\n                                }\n\n                                kc.onAuthRefreshError && kc.onAuthRefreshError();\n                                for (var p = refreshQueue.pop(); p != null; p = refreshQueue.pop()) {\n                                    p.setError(\"Failed to refresh token: An unexpected HTTP error occurred while attempting to refresh the token.\");\n                                }\n                            }\n                        }\n                    };\n\n                    req.send(params);\n                }\n            }\n        }\n\n        if (loginIframe.enable) {\n            var iframePromise = checkLoginIframe();\n            iframePromise.then(function() {\n                exec();\n            }).catch(function(error) {\n                promise.setError(error);\n            });\n        } else {\n            exec();\n        }\n\n        return promise.promise;\n    }\n\n    kc.clearToken = function() {\n        if (kc.token) {\n            setToken(null, null, null);\n            kc.onAuthLogout && kc.onAuthLogout();\n            if (kc.loginRequired) {\n                kc.login();\n            }\n        }\n    }\n\n    function getRealmUrl() {\n        if (typeof kc.authServerUrl !== 'undefined') {\n            if (kc.authServerUrl.charAt(kc.authServerUrl.length - 1) == '/') {\n                return kc.authServerUrl + 'realms/' + encodeURIComponent(kc.realm);\n            } else {\n                return kc.authServerUrl + '/realms/' + encodeURIComponent(kc.realm);\n            }\n        } else {\n            return undefined;\n        }\n    }\n\n    function getOrigin() {\n        if (!window.location.origin) {\n            return window.location.protocol + \"//\" + window.location.hostname + (window.location.port ? ':' + window.location.port: '');\n        } else {\n            return window.location.origin;\n        }\n    }\n\n    function processCallback(oauth, promise) {\n        var code = oauth.code;\n        var error = oauth.error;\n        var prompt = oauth.prompt;\n\n        var timeLocal = new Date().getTime();\n\n        if (oauth['kc_action_status']) {\n            kc.onActionUpdate && kc.onActionUpdate(oauth['kc_action_status'], oauth['kc_action']);\n        }\n\n        if (error) {\n            if (prompt != 'none') {\n                if (oauth.error_description && oauth.error_description === \"authentication_expired\") {\n                    kc.login(oauth.loginOptions);\n                } else {\n                    var errorData = { error: error, error_description: oauth.error_description };\n                    kc.onAuthError && kc.onAuthError(errorData);\n                    promise && promise.setError(errorData);\n                }\n            } else {\n                promise && promise.setSuccess();\n            }\n            return;\n        } else if ((kc.flow != 'standard') && (oauth.access_token || oauth.id_token)) {\n            authSuccess(oauth.access_token, null, oauth.id_token, true);\n        }\n\n        if ((kc.flow != 'implicit') && code) {\n            var params = 'code=' + code + '&grant_type=authorization_code';\n            var url = kc.endpoints.token();\n\n            var req = new XMLHttpRequest();\n            req.open('POST', url, true);\n            req.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');\n\n            params += '&client_id=' + encodeURIComponent(kc.clientId);\n            params += '&redirect_uri=' + oauth.redirectUri;\n\n            if (oauth.pkceCodeVerifier) {\n                params += '&code_verifier=' + oauth.pkceCodeVerifier;\n            }\n\n            req.withCredentials = true;\n\n            req.onreadystatechange = function() {\n                if (req.readyState == 4) {\n                    if (req.status == 200) {\n\n                        var tokenResponse = JSON.parse(req.responseText);\n                        authSuccess(tokenResponse['access_token'], tokenResponse['refresh_token'], tokenResponse['id_token'], kc.flow === 'standard');\n                        scheduleCheckIframe();\n                    } else {\n                        kc.onAuthError && kc.onAuthError();\n                        promise && promise.setError();\n                    }\n                }\n            };\n\n            req.send(params);\n        }\n\n        function authSuccess(accessToken, refreshToken, idToken, fulfillPromise) {\n            timeLocal = (timeLocal + new Date().getTime()) / 2;\n\n            setToken(accessToken, refreshToken, idToken, timeLocal);\n\n            if (useNonce && (kc.idTokenParsed && kc.idTokenParsed.nonce != oauth.storedNonce)) {\n                logInfo('[KEYCLOAK] Invalid nonce, clearing token');\n                kc.clearToken();\n                promise && promise.setError();\n            } else {\n                if (fulfillPromise) {\n                    kc.onAuthSuccess && kc.onAuthSuccess();\n                    promise && promise.setSuccess();\n                }\n            }\n        }\n\n    }\n\n    function loadConfig() {\n        var promise = createPromise();\n        var configUrl;\n\n        if (typeof config === 'string') {\n            configUrl = config;\n        }\n\n        function setupOidcEndoints(oidcConfiguration) {\n            if (! oidcConfiguration) {\n                kc.endpoints = {\n                    authorize: function() {\n                        return getRealmUrl() + '/protocol/openid-connect/auth';\n                    },\n                    token: function() {\n                        return getRealmUrl() + '/protocol/openid-connect/token';\n                    },\n                    logout: function() {\n                        return getRealmUrl() + '/protocol/openid-connect/logout';\n                    },\n                    checkSessionIframe: function() {\n                        return getRealmUrl() + '/protocol/openid-connect/login-status-iframe.html';\n                    },\n                    thirdPartyCookiesIframe: function() {\n                        return getRealmUrl() + '/protocol/openid-connect/3p-cookies/step1.html';\n                    },\n                    register: function() {\n                        return getRealmUrl() + '/protocol/openid-connect/registrations';\n                    },\n                    userinfo: function() {\n                        return getRealmUrl() + '/protocol/openid-connect/userinfo';\n                    }\n                };\n            } else {\n                kc.endpoints = {\n                    authorize: function() {\n                        return oidcConfiguration.authorization_endpoint;\n                    },\n                    token: function() {\n                        return oidcConfiguration.token_endpoint;\n                    },\n                    logout: function() {\n                        if (!oidcConfiguration.end_session_endpoint) {\n                            throw \"Not supported by the OIDC server\";\n                        }\n                        return oidcConfiguration.end_session_endpoint;\n                    },\n                    checkSessionIframe: function() {\n                        if (!oidcConfiguration.check_session_iframe) {\n                            throw \"Not supported by the OIDC server\";\n                        }\n                        return oidcConfiguration.check_session_iframe;\n                    },\n                    register: function() {\n                        throw 'Redirection to \"Register user\" page not supported in standard OIDC mode';\n                    },\n                    userinfo: function() {\n                        if (!oidcConfiguration.userinfo_endpoint) {\n                            throw \"Not supported by the OIDC server\";\n                        }\n                        return oidcConfiguration.userinfo_endpoint;\n                    }\n                }\n            }\n        }\n\n        if (configUrl) {\n            var req = new XMLHttpRequest();\n            req.open('GET', configUrl, true);\n            req.setRequestHeader('Accept', 'application/json');\n\n            req.onreadystatechange = function () {\n                if (req.readyState == 4) {\n                    if (req.status == 200 || fileLoaded(req)) {\n                        var config = JSON.parse(req.responseText);\n\n                        kc.authServerUrl = config['auth-server-url'];\n                        kc.realm = config['realm'];\n                        kc.clientId = config['resource'];\n                        setupOidcEndoints(null);\n                        promise.setSuccess();\n                    } else {\n                        promise.setError();\n                    }\n                }\n            };\n\n            req.send();\n        } else {\n            kc.clientId = config.clientId;\n\n            var oidcProvider = config['oidcProvider'];\n            if (!oidcProvider) {\n                kc.authServerUrl = config.url;\n                kc.realm = config.realm;\n                setupOidcEndoints(null);\n                promise.setSuccess();\n            } else {\n                if (typeof oidcProvider === 'string') {\n                    var oidcProviderConfigUrl;\n                    if (oidcProvider.charAt(oidcProvider.length - 1) == '/') {\n                        oidcProviderConfigUrl = oidcProvider + '.well-known/openid-configuration';\n                    } else {\n                        oidcProviderConfigUrl = oidcProvider + '/.well-known/openid-configuration';\n                    }\n                    var req = new XMLHttpRequest();\n                    req.open('GET', oidcProviderConfigUrl, true);\n                    req.setRequestHeader('Accept', 'application/json');\n\n                    req.onreadystatechange = function () {\n                        if (req.readyState == 4) {\n                            if (req.status == 200 || fileLoaded(req)) {\n                                var oidcProviderConfig = JSON.parse(req.responseText);\n                                setupOidcEndoints(oidcProviderConfig);\n                                promise.setSuccess();\n                            } else {\n                                promise.setError();\n                            }\n                        }\n                    };\n\n                    req.send();\n                } else {\n                    setupOidcEndoints(oidcProvider);\n                    promise.setSuccess();\n                }\n            }\n        }\n\n        return promise.promise;\n    }\n\n    function fileLoaded(xhr) {\n        return xhr.status == 0 && xhr.responseText && xhr.responseURL.startsWith('file:');\n    }\n\n    function setToken(token, refreshToken, idToken, timeLocal) {\n        if (kc.tokenTimeoutHandle) {\n            clearTimeout(kc.tokenTimeoutHandle);\n            kc.tokenTimeoutHandle = null;\n        }\n\n        if (refreshToken) {\n            kc.refreshToken = refreshToken;\n            kc.refreshTokenParsed = decodeToken(refreshToken);\n        } else {\n            delete kc.refreshToken;\n            delete kc.refreshTokenParsed;\n        }\n\n        if (idToken) {\n            kc.idToken = idToken;\n            kc.idTokenParsed = decodeToken(idToken);\n        } else {\n            delete kc.idToken;\n            delete kc.idTokenParsed;\n        }\n\n        if (token) {\n            kc.token = token;\n            kc.tokenParsed = decodeToken(token);\n            kc.sessionId = kc.tokenParsed.sid;\n            kc.authenticated = true;\n            kc.subject = kc.tokenParsed.sub;\n            kc.realmAccess = kc.tokenParsed.realm_access;\n            kc.resourceAccess = kc.tokenParsed.resource_access;\n\n            if (timeLocal) {\n                kc.timeSkew = Math.floor(timeLocal / 1000) - kc.tokenParsed.iat;\n            }\n\n            if (kc.timeSkew != null) {\n                logInfo('[KEYCLOAK] Estimated time difference between browser and server is ' + kc.timeSkew + ' seconds');\n\n                if (kc.onTokenExpired) {\n                    var expiresIn = (kc.tokenParsed['exp'] - (new Date().getTime() / 1000) + kc.timeSkew) * 1000;\n                    logInfo('[KEYCLOAK] Token expires in ' + Math.round(expiresIn / 1000) + ' s');\n                    if (expiresIn <= 0) {\n                        kc.onTokenExpired();\n                    } else {\n                        kc.tokenTimeoutHandle = setTimeout(kc.onTokenExpired, expiresIn);\n                    }\n                }\n            }\n        } else {\n            delete kc.token;\n            delete kc.tokenParsed;\n            delete kc.subject;\n            delete kc.realmAccess;\n            delete kc.resourceAccess;\n\n            kc.authenticated = false;\n        }\n    }\n\n    function createUUID() {\n        if (typeof crypto === \"undefined\" || typeof crypto.randomUUID === \"undefined\") {\n            throw new Error(\"Web Crypto API is not available.\");\n        }\n\n        return crypto.randomUUID();\n    }\n\n    function parseCallback(url) {\n        var oauth = parseCallbackUrl(url);\n        if (!oauth) {\n            return;\n        }\n\n        var oauthState = callbackStorage.get(oauth.state);\n\n        if (oauthState) {\n            oauth.valid = true;\n            oauth.redirectUri = oauthState.redirectUri;\n            oauth.storedNonce = oauthState.nonce;\n            oauth.prompt = oauthState.prompt;\n            oauth.pkceCodeVerifier = oauthState.pkceCodeVerifier;\n            oauth.loginOptions = oauthState.loginOptions;\n        }\n\n        return oauth;\n    }\n\n    function parseCallbackUrl(url) {\n        var supportedParams;\n        switch (kc.flow) {\n            case 'standard':\n                supportedParams = ['code', 'state', 'session_state', 'kc_action_status', 'kc_action', 'iss'];\n                break;\n            case 'implicit':\n                supportedParams = ['access_token', 'token_type', 'id_token', 'state', 'session_state', 'expires_in', 'kc_action_status', 'kc_action', 'iss'];\n                break;\n            case 'hybrid':\n                supportedParams = ['access_token', 'token_type', 'id_token', 'code', 'state', 'session_state', 'expires_in', 'kc_action_status', 'kc_action', 'iss'];\n                break;\n        }\n\n        supportedParams.push('error');\n        supportedParams.push('error_description');\n        supportedParams.push('error_uri');\n\n        var queryIndex = url.indexOf('?');\n        var fragmentIndex = url.indexOf('#');\n\n        var newUrl;\n        var parsed;\n\n        if (kc.responseMode === 'query' && queryIndex !== -1) {\n            newUrl = url.substring(0, queryIndex);\n            parsed = parseCallbackParams(url.substring(queryIndex + 1, fragmentIndex !== -1 ? fragmentIndex : url.length), supportedParams);\n            if (parsed.paramsString !== '') {\n                newUrl += '?' + parsed.paramsString;\n            }\n            if (fragmentIndex !== -1) {\n                newUrl += url.substring(fragmentIndex);\n            }\n        } else if (kc.responseMode === 'fragment' && fragmentIndex !== -1) {\n            newUrl = url.substring(0, fragmentIndex);\n            parsed = parseCallbackParams(url.substring(fragmentIndex + 1), supportedParams);\n            if (parsed.paramsString !== '') {\n                newUrl += '#' + parsed.paramsString;\n            }\n        }\n\n        if (parsed && parsed.oauthParams) {\n            if (kc.flow === 'standard' || kc.flow === 'hybrid') {\n                if ((parsed.oauthParams.code || parsed.oauthParams.error) && parsed.oauthParams.state) {\n                    parsed.oauthParams.newUrl = newUrl;\n                    return parsed.oauthParams;\n                }\n            } else if (kc.flow === 'implicit') {\n                if ((parsed.oauthParams.access_token || parsed.oauthParams.error) && parsed.oauthParams.state) {\n                    parsed.oauthParams.newUrl = newUrl;\n                    return parsed.oauthParams;\n                }\n            }\n        }\n    }\n\n    function parseCallbackParams(paramsString, supportedParams) {\n        var p = paramsString.split('&');\n        var result = {\n            paramsString: '',\n            oauthParams: {}\n        }\n        for (var i = 0; i < p.length; i++) {\n            var split = p[i].indexOf(\"=\");\n            var key = p[i].slice(0, split);\n            if (supportedParams.indexOf(key) !== -1) {\n                result.oauthParams[key] = p[i].slice(split + 1);\n            } else {\n                if (result.paramsString !== '') {\n                    result.paramsString += '&';\n                }\n                result.paramsString += p[i];\n            }\n        }\n        return result;\n    }\n\n    function createPromise() {\n        // Need to create a native Promise which also preserves the\n        // interface of the custom promise type previously used by the API\n        var p = {\n            setSuccess: function(result) {\n                p.resolve(result);\n            },\n\n            setError: function(result) {\n                p.reject(result);\n            }\n        };\n        p.promise = new Promise(function(resolve, reject) {\n            p.resolve = resolve;\n            p.reject = reject;\n        });\n\n        return p;\n    }\n\n    // Function to extend existing native Promise with timeout\n    function applyTimeoutToPromise(promise, timeout, errorMessage) {\n        var timeoutHandle = null;\n        var timeoutPromise = new Promise(function (resolve, reject) {\n            timeoutHandle = setTimeout(function () {\n                reject({ \"error\": errorMessage || \"Promise is not settled within timeout of \" + timeout + \"ms\" });\n            }, timeout);\n        });\n\n        return Promise.race([promise, timeoutPromise]).finally(function () {\n            clearTimeout(timeoutHandle);\n        });\n    }\n\n    function setupCheckLoginIframe() {\n        var promise = createPromise();\n\n        if (!loginIframe.enable) {\n            promise.setSuccess();\n            return promise.promise;\n        }\n\n        if (loginIframe.iframe) {\n            promise.setSuccess();\n            return promise.promise;\n        }\n\n        var iframe = document.createElement('iframe');\n        loginIframe.iframe = iframe;\n\n        iframe.onload = function() {\n            var authUrl = kc.endpoints.authorize();\n            if (authUrl.charAt(0) === '/') {\n                loginIframe.iframeOrigin = getOrigin();\n            } else {\n                loginIframe.iframeOrigin = authUrl.substring(0, authUrl.indexOf('/', 8));\n            }\n            promise.setSuccess();\n        }\n\n        var src = kc.endpoints.checkSessionIframe();\n        iframe.setAttribute('src', src );\n        iframe.setAttribute('sandbox', 'allow-storage-access-by-user-activation allow-scripts allow-same-origin');\n        iframe.setAttribute('title', 'keycloak-session-iframe' );\n        iframe.style.display = 'none';\n        document.body.appendChild(iframe);\n\n        var messageCallback = function(event) {\n            if ((event.origin !== loginIframe.iframeOrigin) || (loginIframe.iframe.contentWindow !== event.source)) {\n                return;\n            }\n\n            if (!(event.data == 'unchanged' || event.data == 'changed' || event.data == 'error')) {\n                return;\n            }\n\n\n            if (event.data != 'unchanged') {\n                kc.clearToken();\n            }\n\n            var callbacks = loginIframe.callbackList.splice(0, loginIframe.callbackList.length);\n\n            for (var i = callbacks.length - 1; i >= 0; --i) {\n                var promise = callbacks[i];\n                if (event.data == 'error') {\n                    promise.setError();\n                } else {\n                    promise.setSuccess(event.data == 'unchanged');\n                }\n            }\n        };\n\n        window.addEventListener('message', messageCallback, false);\n\n        return promise.promise;\n    }\n\n    function scheduleCheckIframe() {\n        if (loginIframe.enable) {\n            if (kc.token) {\n                setTimeout(function() {\n                    checkLoginIframe().then(function(unchanged) {\n                        if (unchanged) {\n                            scheduleCheckIframe();\n                        }\n                    });\n                }, loginIframe.interval * 1000);\n            }\n        }\n    }\n\n    function checkLoginIframe() {\n        var promise = createPromise();\n\n        if (loginIframe.iframe && loginIframe.iframeOrigin ) {\n            var msg = kc.clientId + ' ' + (kc.sessionId ? kc.sessionId : '');\n            loginIframe.callbackList.push(promise);\n            var origin = loginIframe.iframeOrigin;\n            if (loginIframe.callbackList.length == 1) {\n                loginIframe.iframe.contentWindow.postMessage(msg, origin);\n            }\n        } else {\n            promise.setSuccess();\n        }\n\n        return promise.promise;\n    }\n\n    function check3pCookiesSupported() {\n        var promise = createPromise();\n\n        if ((loginIframe.enable || kc.silentCheckSsoRedirectUri) && typeof kc.endpoints.thirdPartyCookiesIframe === 'function') {\n            var iframe = document.createElement('iframe');\n            iframe.setAttribute('src', kc.endpoints.thirdPartyCookiesIframe());\n            iframe.setAttribute('sandbox', 'allow-storage-access-by-user-activation allow-scripts allow-same-origin');\n            iframe.setAttribute('title', 'keycloak-3p-check-iframe' );\n            iframe.style.display = 'none';\n            document.body.appendChild(iframe);\n\n            var messageCallback = function(event) {\n                if (iframe.contentWindow !== event.source) {\n                    return;\n                }\n\n                if (event.data !== \"supported\" && event.data !== \"unsupported\") {\n                    return;\n                } else if (event.data === \"unsupported\") {\n                    logWarn(\n                        \"[KEYCLOAK] Your browser is blocking access to 3rd-party cookies, this means:\\n\\n\" +\n                        \" - It is not possible to retrieve tokens without redirecting to the Keycloak server (a.k.a. no support for silent authentication).\\n\" +\n                        \" - It is not possible to automatically detect changes to the session status (such as the user logging out in another tab).\\n\\n\" +\n                        \"For more information see: https://www.keycloak.org/securing-apps/javascript-adapter#_modern_browsers\"\n                    );\n\n                    loginIframe.enable = false;\n                    if (kc.silentCheckSsoFallback) {\n                        kc.silentCheckSsoRedirectUri = false;\n                    }\n                }\n\n                document.body.removeChild(iframe);\n                window.removeEventListener(\"message\", messageCallback);\n                promise.setSuccess();\n            };\n\n            window.addEventListener('message', messageCallback, false);\n        } else {\n            promise.setSuccess();\n        }\n\n        return applyTimeoutToPromise(promise.promise, kc.messageReceiveTimeout, \"Timeout when waiting for 3rd party check iframe message.\");\n    }\n\n    function loadAdapter(type) {\n        if (!type || type == 'default') {\n            return {\n                login: async function(options) {\n                    window.location.assign(await kc.createLoginUrl(options));\n                    return createPromise().promise;\n                },\n\n                logout: async function(options) {\n\n                    const logoutMethod = options?.logoutMethod ?? kc.logoutMethod;\n                    if (logoutMethod === \"GET\") {\n                        window.location.replace(kc.createLogoutUrl(options));\n                        return;\n                    }\n\n                    // Create form to send POST request.\n                    const form = document.createElement(\"form\");\n\n                    form.setAttribute(\"method\", \"POST\");\n                    form.setAttribute(\"action\", kc.createLogoutUrl(options));\n                    form.style.display = \"none\";\n\n                    // Add data to form as hidden input fields.\n                    const data = {\n                        id_token_hint: kc.idToken,\n                        client_id: kc.clientId,\n                        post_logout_redirect_uri: adapter.redirectUri(options, false)\n                    };\n\n                    for (const [name, value] of Object.entries(data)) {\n                        const input = document.createElement(\"input\");\n\n                        input.setAttribute(\"type\", \"hidden\");\n                        input.setAttribute(\"name\", name);\n                        input.setAttribute(\"value\", value);\n\n                        form.appendChild(input);\n                    }\n\n                    // Append form to page and submit it to perform logout and redirect.\n                    document.body.appendChild(form);\n                    form.submit();\n                },\n\n                register: async function(options) {\n                    window.location.assign(await kc.createRegisterUrl(options));\n                    return createPromise().promise;\n                },\n\n                accountManagement : function() {\n                    var accountUrl = kc.createAccountUrl();\n                    if (typeof accountUrl !== 'undefined') {\n                        window.location.href = accountUrl;\n                    } else {\n                        throw \"Not supported by the OIDC server\";\n                    }\n                    return createPromise().promise;\n                },\n\n                redirectUri: function(options, encodeHash) {\n                    if (arguments.length == 1) {\n                        encodeHash = true;\n                    }\n\n                    if (options && options.redirectUri) {\n                        return options.redirectUri;\n                    } else if (kc.redirectUri) {\n                        return kc.redirectUri;\n                    } else {\n                        return location.href;\n                    }\n                }\n            };\n        }\n\n        if (type == 'cordova') {\n            loginIframe.enable = false;\n            var cordovaOpenWindowWrapper = function(loginUrl, target, options) {\n                if (window.cordova && window.cordova.InAppBrowser) {\n                    // Use inappbrowser for IOS and Android if available\n                    return window.cordova.InAppBrowser.open(loginUrl, target, options);\n                } else {\n                    return window.open(loginUrl, target, options);\n                }\n            };\n\n            var shallowCloneCordovaOptions = function (userOptions) {\n                if (userOptions && userOptions.cordovaOptions) {\n                    return Object.keys(userOptions.cordovaOptions).reduce(function (options, optionName) {\n                        options[optionName] = userOptions.cordovaOptions[optionName];\n                        return options;\n                    }, {});\n                } else {\n                    return {};\n                }\n            };\n\n            var formatCordovaOptions = function (cordovaOptions) {\n                return Object.keys(cordovaOptions).reduce(function (options, optionName) {\n                    options.push(optionName+\"=\"+cordovaOptions[optionName]);\n                    return options;\n                }, []).join(\",\");\n            };\n\n            var createCordovaOptions = function (userOptions) {\n                var cordovaOptions = shallowCloneCordovaOptions(userOptions);\n                cordovaOptions.location = 'no';\n                if (userOptions && userOptions.prompt == 'none') {\n                    cordovaOptions.hidden = 'yes';\n                }\n                return formatCordovaOptions(cordovaOptions);\n            };\n\n            var getCordovaRedirectUri = function() {\n                return kc.redirectUri || 'http://localhost';\n            }\n\n            return {\n                login: async function(options) {\n                    var promise = createPromise();\n\n                    var cordovaOptions = createCordovaOptions(options);\n                    var loginUrl = await kc.createLoginUrl(options);\n                    var ref = cordovaOpenWindowWrapper(loginUrl, '_blank', cordovaOptions);\n                    var completed = false;\n\n                    var closed = false;\n                    var closeBrowser = function() {\n                        closed = true;\n                        ref.close();\n                    };\n\n                    ref.addEventListener('loadstart', function(event) {\n                        if (event.url.indexOf(getCordovaRedirectUri()) == 0) {\n                            var callback = parseCallback(event.url);\n                            processCallback(callback, promise);\n                            closeBrowser();\n                            completed = true;\n                        }\n                    });\n\n                    ref.addEventListener('loaderror', function(event) {\n                        if (!completed) {\n                            if (event.url.indexOf(getCordovaRedirectUri()) == 0) {\n                                var callback = parseCallback(event.url);\n                                processCallback(callback, promise);\n                                closeBrowser();\n                                completed = true;\n                            } else {\n                                promise.setError();\n                                closeBrowser();\n                            }\n                        }\n                    });\n\n                    ref.addEventListener('exit', function(event) {\n                        if (!closed) {\n                            promise.setError({\n                                reason: \"closed_by_user\"\n                            });\n                        }\n                    });\n\n                    return promise.promise;\n                },\n\n                logout: function(options) {\n                    var promise = createPromise();\n\n                    var logoutUrl = kc.createLogoutUrl(options);\n                    var ref = cordovaOpenWindowWrapper(logoutUrl, '_blank', 'location=no,hidden=yes,clearcache=yes');\n\n                    var error;\n\n                    ref.addEventListener('loadstart', function(event) {\n                        if (event.url.indexOf(getCordovaRedirectUri()) == 0) {\n                            ref.close();\n                        }\n                    });\n\n                    ref.addEventListener('loaderror', function(event) {\n                        if (event.url.indexOf(getCordovaRedirectUri()) == 0) {\n                            ref.close();\n                        } else {\n                            error = true;\n                            ref.close();\n                        }\n                    });\n\n                    ref.addEventListener('exit', function(event) {\n                        if (error) {\n                            promise.setError();\n                        } else {\n                            kc.clearToken();\n                            promise.setSuccess();\n                        }\n                    });\n\n                    return promise.promise;\n                },\n\n                register : async function(options) {\n                    var promise = createPromise();\n                    var registerUrl = await kc.createRegisterUrl();\n                    var cordovaOptions = createCordovaOptions(options);\n                    var ref = cordovaOpenWindowWrapper(registerUrl, '_blank', cordovaOptions);\n                    ref.addEventListener('loadstart', function(event) {\n                        if (event.url.indexOf(getCordovaRedirectUri()) == 0) {\n                            ref.close();\n                            var oauth = parseCallback(event.url);\n                            processCallback(oauth, promise);\n                        }\n                    });\n                    return promise.promise;\n                },\n\n                accountManagement : function() {\n                    var accountUrl = kc.createAccountUrl();\n                    if (typeof accountUrl !== 'undefined') {\n                        var ref = cordovaOpenWindowWrapper(accountUrl, '_blank', 'location=no');\n                        ref.addEventListener('loadstart', function(event) {\n                            if (event.url.indexOf(getCordovaRedirectUri()) == 0) {\n                                ref.close();\n                            }\n                        });\n                    } else {\n                        throw \"Not supported by the OIDC server\";\n                    }\n                },\n\n                redirectUri: function(options) {\n                    return getCordovaRedirectUri();\n                }\n            }\n        }\n\n        if (type == 'cordova-native') {\n            loginIframe.enable = false;\n\n            return {\n                login: async function(options) {\n                    var promise = createPromise();\n                    var loginUrl = await kc.createLoginUrl(options);\n\n                    universalLinks.subscribe('keycloak', function(event) {\n                        universalLinks.unsubscribe('keycloak');\n                        window.cordova.plugins.browsertab.close();\n                        var oauth = parseCallback(event.url);\n                        processCallback(oauth, promise);\n                    });\n\n                    window.cordova.plugins.browsertab.openUrl(loginUrl);\n                    return promise.promise;\n                },\n\n                logout: function(options) {\n                    var promise = createPromise();\n                    var logoutUrl = kc.createLogoutUrl(options);\n\n                    universalLinks.subscribe('keycloak', function(event) {\n                        universalLinks.unsubscribe('keycloak');\n                        window.cordova.plugins.browsertab.close();\n                        kc.clearToken();\n                        promise.setSuccess();\n                    });\n\n                    window.cordova.plugins.browsertab.openUrl(logoutUrl);\n                    return promise.promise;\n                },\n\n                register : async function(options) {\n                    var promise = createPromise();\n                    var registerUrl = await kc.createRegisterUrl(options);\n                    universalLinks.subscribe('keycloak' , function(event) {\n                        universalLinks.unsubscribe('keycloak');\n                        window.cordova.plugins.browsertab.close();\n                        var oauth = parseCallback(event.url);\n                        processCallback(oauth, promise);\n                    });\n                    window.cordova.plugins.browsertab.openUrl(registerUrl);\n                    return promise.promise;\n\n                },\n\n                accountManagement : function() {\n                    var accountUrl = kc.createAccountUrl();\n                    if (typeof accountUrl !== 'undefined') {\n                        window.cordova.plugins.browsertab.openUrl(accountUrl);\n                    } else {\n                        throw \"Not supported by the OIDC server\";\n                    }\n                },\n\n                redirectUri: function(options) {\n                    if (options && options.redirectUri) {\n                        return options.redirectUri;\n                    } else if (kc.redirectUri) {\n                        return kc.redirectUri;\n                    } else {\n                        return \"http://localhost\";\n                    }\n                }\n            }\n        }\n\n        throw 'invalid adapter type: ' + type;\n    }\n\n    const STORAGE_KEY_PREFIX = 'kc-callback-';\n\n    var LocalStorage = function() {\n        if (!(this instanceof LocalStorage)) {\n            return new LocalStorage();\n        }\n\n        localStorage.setItem('kc-test', 'test');\n        localStorage.removeItem('kc-test');\n\n        var cs = this;\n\n        /**\n         * Clears all values from local storage that are no longer valid.\n         */\n        function clearInvalidValues() {\n            const currentTime = Date.now();\n\n            for (const [key, value] of getStoredEntries()) {\n                // Attempt to parse the expiry time from the value.\n                const expiry = parseExpiry(value);\n\n                // Discard the value if it is malformed or expired.\n                if (expiry === null || expiry < currentTime) {\n                    localStorage.removeItem(key);\n                }\n            }\n        }\n\n        /**\n         * Clears all known values from local storage.\n         */\n        function clearAllValues() {\n            for (const [key] of getStoredEntries()) {\n                localStorage.removeItem(key);\n            }\n        }\n\n        /**\n         * Gets all entries stored in local storage that are known to be managed by this class.\n         * @returns {Array<[string, unknown]>} An array of key-value pairs.\n         */\n        function getStoredEntries() {\n            return Object.entries(localStorage).filter(([key]) => key.startsWith(STORAGE_KEY_PREFIX));\n        }\n\n        /**\n         * Parses the expiry time from a value stored in local storage.\n         * @param {unknown} value\n         * @returns {number | null} The expiry time in milliseconds, or `null` if the value is malformed.\n         */\n        function parseExpiry(value) {\n            let parsedValue;\n\n            // Attempt to parse the value as JSON.\n            try {\n                parsedValue = JSON.parse(value);\n            } catch (error) {\n                return null;\n            }\n\n            // Attempt to extract the 'expires' property.\n            if (isObject(parsedValue) && 'expires' in parsedValue && typeof parsedValue.expires === 'number') {\n                return parsedValue.expires;\n            }\n\n            return null;\n        }\n\n        cs.get = function(state) {\n            if (!state) {\n                return;\n            }\n\n            var key = STORAGE_KEY_PREFIX + state;\n            var value = localStorage.getItem(key);\n            if (value) {\n                localStorage.removeItem(key);\n                value = JSON.parse(value);\n            }\n\n            clearInvalidValues();\n            return value;\n        };\n\n        cs.add = function(state) {\n            clearInvalidValues();\n\n            const key = STORAGE_KEY_PREFIX + state.state;\n            const value = JSON.stringify({\n                ...state,\n                // Set the expiry time to 1 hour from now.\n                expires: Date.now() + (60 * 60 * 1000)\n            });\n\n            try {\n                localStorage.setItem(key, value);\n            } catch (error) {\n                // If the storage is full, clear all known values and try again.\n                clearAllValues();\n                localStorage.setItem(key, value);\n            }\n        };\n    };\n\n    var CookieStorage = function() {\n        if (!(this instanceof CookieStorage)) {\n            return new CookieStorage();\n        }\n\n        var cs = this;\n\n        cs.get = function(state) {\n            if (!state) {\n                return;\n            }\n\n            var value = getCookie(STORAGE_KEY_PREFIX + state);\n            setCookie(STORAGE_KEY_PREFIX + state, '', cookieExpiration(-100));\n            if (value) {\n                return JSON.parse(value);\n            }\n        };\n\n        cs.add = function(state) {\n            setCookie(STORAGE_KEY_PREFIX + state.state, JSON.stringify(state), cookieExpiration(60));\n        };\n\n        cs.removeItem = function(key) {\n            setCookie(key, '', cookieExpiration(-100));\n        };\n\n        var cookieExpiration = function (minutes) {\n            var exp = new Date();\n            exp.setTime(exp.getTime() + (minutes*60*1000));\n            return exp;\n        };\n\n        var getCookie = function (key) {\n            var name = key + '=';\n            var ca = document.cookie.split(';');\n            for (var i = 0; i < ca.length; i++) {\n                var c = ca[i];\n                while (c.charAt(0) == ' ') {\n                    c = c.substring(1);\n                }\n                if (c.indexOf(name) == 0) {\n                    return c.substring(name.length, c.length);\n                }\n            }\n            return '';\n        };\n\n        var setCookie = function (key, value, expirationDate) {\n            var cookie = key + '=' + value + '; '\n                + 'expires=' + expirationDate.toUTCString() + '; ';\n            document.cookie = cookie;\n        }\n    };\n\n    function createCallbackStorage() {\n        try {\n            return new LocalStorage();\n        } catch (err) {\n        }\n\n        return new CookieStorage();\n    }\n\n    function createLogger(fn) {\n        return function() {\n            if (kc.enableLogging) {\n                fn.apply(console, Array.prototype.slice.call(arguments));\n            }\n        };\n    }\n}\n\nexport default Keycloak;\n\n/**\n * @param {ArrayBuffer} bytes\n * @see https://developer.mozilla.org/en-US/docs/Glossary/Base64#the_unicode_problem\n */\nfunction bytesToBase64(bytes) {\n    const binString = String.fromCodePoint(...bytes);\n    return btoa(binString);\n}\n\n/**\n * @param {string} message\n * @see https://developer.mozilla.org/en-US/docs/Web/API/SubtleCrypto/digest#basic_example\n */\nasync function sha256Digest(message) {\n    const encoder = new TextEncoder();\n    const data = encoder.encode(message);\n\n    if (typeof crypto === \"undefined\" || typeof crypto.subtle === \"undefined\") {\n        throw new Error(\"Web Crypto API is not available.\");\n    }\n\n    return await crypto.subtle.digest(\"SHA-256\", data);\n}\n\n/**\n * @param {string} token\n */\nfunction decodeToken(token) {\n    const [header, payload] = token.split(\".\");\n\n    if (typeof payload !== \"string\") {\n        throw new Error(\"Unable to decode token, payload not found.\");\n    }\n\n    let decoded;\n\n    try {\n        decoded = base64UrlDecode(payload);\n    } catch (error) {\n        throw new Error(\"Unable to decode token, payload is not a valid Base64URL value.\", { cause: error });\n    }\n\n    try {\n        return JSON.parse(decoded);\n    } catch (error) {\n        throw new Error(\"Unable to decode token, payload is not a valid JSON value.\", { cause: error });\n    }\n}\n\n/**\n * @param {string} input\n */\nfunction base64UrlDecode(input) {\n    let output = input\n        .replaceAll(\"-\", \"+\")\n        .replaceAll(\"_\", \"/\");\n\n    switch (output.length % 4) {\n        case 0:\n            break;\n        case 2:\n            output += \"==\";\n            break;\n        case 3:\n            output += \"=\";\n            break;\n        default:\n            throw new Error(\"Input is not of the correct length.\");\n    }\n\n    try {\n        return b64DecodeUnicode(output);\n    } catch (error) {\n        return atob(output);\n    }\n}\n\n/**\n * @param {string} input\n */\nfunction b64DecodeUnicode(input) {\n    return decodeURIComponent(atob(input).replace(/(.)/g, (m, p) => {\n        let code = p.charCodeAt(0).toString(16).toUpperCase();\n\n        if (code.length < 2) {\n            code = \"0\" + code;\n        }\n\n        return \"%\" + code;\n    }));\n}\n\n/**\n * Check if the input is an object that can be operated on.\n * @param {unknown} input\n */\nfunction isObject(input) {\n    return typeof input === 'object' && input !== null;\n}\n","const MSEC_IN_HOUR = 60 * 60 * 1000\n\n//convert our local date syntax a javascript UTC date\nconst toUtc = (dstChange, offset, year) => {\n  const [month, rest] = dstChange.split('/')\n  const [day, hour] = rest.split(':')\n  return Date.UTC(year, month - 1, day, hour) - offset * MSEC_IN_HOUR\n}\n\n// compare epoch with dst change events (in utc)\nconst inSummerTime = (epoch, start, end, summerOffset, winterOffset) => {\n  const year = new Date(epoch).getUTCFullYear()\n  const startUtc = toUtc(start, winterOffset, year)\n  const endUtc = toUtc(end, summerOffset, year)\n  // simple number comparison now\n  return epoch >= startUtc && epoch < endUtc\n}\n\nexport default inSummerTime\n","export default {\n  \"9|s\": \"2/dili,2/jayapura\",\n  \"9|n\": \"2/chita,2/khandyga,2/pyongyang,2/seoul,2/tokyo,2/yakutsk,11/palau,japan,rok\",\n  \"9.5|s|04/02:03->10/01:02\": \"4/adelaide,4/broken_hill,4/south,4/yancowinna\",\n  \"9.5|s\": \"4/darwin,4/north\",\n  \"8|s|03/13:01->10/02:00\": \"12/casey\",\n  \"8|s\": \"2/kuala_lumpur,2/makassar,2/singapore,4/perth,2/ujung_pandang,4/west,singapore\",\n  \"8|n\": \"2/brunei,2/choibalsan,2/hong_kong,2/irkutsk,2/kuching,2/macau,2/manila,2/shanghai,2/taipei,2/ulaanbaatar,2/chongqing,2/chungking,2/harbin,2/macao,2/ulan_bator,hongkong,prc,roc\",\n  \"8.75|s\": \"4/eucla\",\n  \"7|s\": \"12/davis,2/jakarta,9/christmas\",\n  \"7|n\": \"2/bangkok,2/barnaul,2/hovd,2/krasnoyarsk,2/novokuznetsk,2/novosibirsk,2/phnom_penh,2/pontianak,2/ho_chi_minh,2/tomsk,2/vientiane,2/saigon\",\n  \"6|s\": \"12/vostok\",\n  \"6|n\": \"2/almaty,2/bishkek,2/dhaka,2/omsk,2/qyzylorda,2/qostanay,2/thimphu,2/urumqi,9/chagos,2/dacca,2/kashgar,2/thimbu\",\n  \"6.5|n\": \"2/yangon,9/cocos,2/rangoon\",\n  \"5|s\": \"12/mawson,9/kerguelen\",\n  \"5|n\": \"2/aqtau,2/aqtobe,2/ashgabat,2/atyrau,2/dushanbe,2/karachi,2/oral,2/samarkand,2/tashkent,2/yekaterinburg,9/maldives,2/ashkhabad\",\n  \"5.75|n\": \"2/kathmandu,2/katmandu\",\n  \"5.5|n\": \"2/kolkata,2/colombo,2/calcutta\",\n  \"4|s\": \"9/reunion\",\n  \"4|n\": \"2/baku,2/dubai,2/muscat,2/tbilisi,2/yerevan,8/astrakhan,8/samara,8/saratov,8/ulyanovsk,8/volgograd,9/mahe,9/mauritius,2/volgograd\",\n  \"4.5|n\": \"2/kabul\",\n  \"3|s\": \"12/syowa,9/antananarivo\",\n  \"3|n|04/29:02->10/28:02\": \"2/gaza,2/hebron\",\n  \"3|n|03/26:03->10/29:04\": \"2/famagusta,2/nicosia,8/athens,8/bucharest,8/helsinki,8/kyiv,8/mariehamn,8/riga,8/sofia,8/tallinn,8/uzhgorod,8/vilnius,8/zaporozhye,8/nicosia,8/kiev,eet\",\n  \"3|n|03/26:02->10/29:03\": \"8/chisinau,8/tiraspol\",\n  \"3|n|03/26:00->10/28:24\": \"2/beirut\",\n  \"3|n|03/24:02->10/29:02\": \"2/jerusalem,2/tel_aviv,israel\",\n  \"3|n\": \"0/addis_ababa,0/asmara,0/asmera,0/dar_es_salaam,0/djibouti,0/juba,0/kampala,0/mogadishu,0/nairobi,2/aden,2/amman,2/baghdad,2/bahrain,2/damascus,2/kuwait,2/qatar,2/riyadh,8/istanbul,8/kirov,8/minsk,8/moscow,8/simferopol,9/comoro,9/mayotte,2/istanbul,turkey,w-su\",\n  \"3.5|n\": \"2/tehran,iran\",\n  \"2|s|03/26:02->10/29:02\": \"12/troll\",\n  \"2|s\": \"0/gaborone,0/harare,0/johannesburg,0/lubumbashi,0/lusaka,0/maputo,0/maseru,0/mbabane\",\n  \"2|n|04/28:00->10/26:24\": \"0/cairo,egypt\",\n  \"2|n|03/26:02->10/29:03\": \"0/ceuta,arctic/longyearbyen,8/amsterdam,8/andorra,8/belgrade,8/berlin,8/bratislava,8/brussels,8/budapest,8/busingen,8/copenhagen,8/gibraltar,8/ljubljana,8/luxembourg,8/madrid,8/malta,8/monaco,8/oslo,8/paris,8/podgorica,8/prague,8/rome,8/san_marino,8/sarajevo,8/skopje,8/stockholm,8/tirane,8/vaduz,8/vatican,8/vienna,8/warsaw,8/zagreb,8/zurich,3/jan_mayen,poland,cet,met\",\n  \"2|n\": \"0/blantyre,0/bujumbura,0/khartoum,0/kigali,0/tripoli,8/kaliningrad,libya\",\n  \"1|s\": \"0/brazzaville,0/kinshasa,0/luanda,0/windhoek\",\n  \"1|n|03/26:01->10/29:02\": \"3/canary,3/faroe,3/madeira,8/dublin,8/guernsey,8/isle_of_man,8/jersey,8/lisbon,8/london,3/faeroe,eire,8/belfast,gb-eire,gb,portugal,wet\",\n  \"1|n|03/19:03->04/23:02\": \"0/casablanca,0/el_aaiun\",\n  \"1|n\": \"0/algiers,0/bangui,0/douala,0/lagos,0/libreville,0/malabo,0/ndjamena,0/niamey,0/porto-novo,0/tunis\",\n  \"14|n\": \"11/kiritimati\",\n  \"13|s\": \"11/apia,11/tongatapu\",\n  \"13|n\": \"11/enderbury,11/kanton,11/fakaofo\",\n  \"12|s|04/02:03->09/24:02\": \"12/mcmurdo,11/auckland,12/south_pole,nz\",\n  \"12|s\": \"11/fiji\",\n  \"12|n\": \"2/anadyr,2/kamchatka,2/srednekolymsk,11/funafuti,11/kwajalein,11/majuro,11/nauru,11/tarawa,11/wake,11/wallis,kwajalein\",\n  \"12.75|s|04/02:03->04/02:02\": \"11/chatham,nz-chat\",\n  \"11|s|04/02:03->10/01:02\": \"12/macquarie\",\n  \"11|s\": \"11/bougainville\",\n  \"11|n\": \"2/magadan,2/sakhalin,11/efate,11/guadalcanal,11/kosrae,11/noumea,11/pohnpei,11/ponape\",\n  \"11.5|n|04/02:03->10/01:02\": \"11/norfolk\",\n  \"10|s|04/02:03->10/01:02\": \"4/currie,4/hobart,4/melbourne,4/sydney,4/act,4/canberra,4/nsw,4/tasmania,4/victoria\",\n  \"10|s\": \"12/dumontdurville,4/brisbane,4/lindeman,11/port_moresby,4/queensland\",\n  \"10|n\": \"2/ust-nera,2/vladivostok,11/guam,11/saipan,11/chuuk,11/truk,11/yap\",\n  \"10.5|s|04/02:01->10/01:02\": \"4/lord_howe,4/lhi\",\n  \"0|n|03/26:00->10/29:01\": \"1/scoresbysund,3/azores\",\n  \"0|n\": \"0/abidjan,0/accra,0/bamako,0/banjul,0/bissau,0/conakry,0/dakar,0/freetown,0/lome,0/monrovia,0/nouakchott,0/ouagadougou,0/sao_tome,1/danmarkshavn,3/reykjavik,3/st_helena,13/gmt,13/utc,0/timbuktu,13/greenwich,13/uct,13/universal,13/zulu,gmt-0,gmt+0,gmt0,greenwich,iceland,uct,universal,utc,zulu,13/unknown,factory\",\n  \"-9|n|03/12:02->11/05:02\": \"1/adak,1/atka,us/aleutian\",\n  \"-9|n\": \"11/gambier\",\n  \"-9.5|n\": \"11/marquesas\",\n  \"-8|n|03/12:02->11/05:02\": \"1/anchorage,1/juneau,1/metlakatla,1/nome,1/sitka,1/yakutat,us/alaska\",\n  \"-8|n\": \"11/pitcairn\",\n  \"-7|n|03/12:02->11/05:02\": \"1/los_angeles,1/santa_isabel,1/tijuana,1/vancouver,1/ensenada,6/pacific,10/bajanorte,us/pacific-new,us/pacific\",\n  \"-7|n\": \"1/creston,1/dawson,1/dawson_creek,1/fort_nelson,1/hermosillo,1/mazatlan,1/phoenix,1/whitehorse,6/yukon,10/bajasur,us/arizona,mst\",\n  \"-6|s|04/01:22->09/02:22\": \"11/easter,7/easterisland\",\n  \"-6|n|03/12:02->11/05:02\": \"1/boise,1/cambridge_bay,1/denver,1/edmonton,1/inuvik,1/north_dakota,1/ojinaga,1/ciudad_juarez,1/yellowknife,1/shiprock,6/mountain,navajo,us/mountain\",\n  \"-6|n\": \"1/bahia_banderas,1/belize,1/chihuahua,1/costa_rica,1/el_salvador,1/guatemala,1/managua,1/merida,1/mexico_city,1/monterrey,1/regina,1/swift_current,1/tegucigalpa,11/galapagos,6/east-saskatchewan,6/saskatchewan,10/general\",\n  \"-5|s\": \"1/lima,1/rio_branco,1/porto_acre,5/acre\",\n  \"-5|n|03/12:02->11/05:02\": \"1/chicago,1/matamoros,1/menominee,1/rainy_river,1/rankin_inlet,1/resolute,1/winnipeg,1/indiana/knox,1/indiana/tell_city,1/north_dakota/beulah,1/north_dakota/center,1/north_dakota/new_salem,1/knox_in,6/central,us/central,us/indiana-starke\",\n  \"-5|n\": \"1/bogota,1/cancun,1/cayman,1/coral_harbour,1/eirunepe,1/guayaquil,1/jamaica,1/panama,1/atikokan,jamaica,est\",\n  \"-4|s|04/01:24->09/03:00\": \"1/santiago,7/continental\",\n  \"-4|s|03/25:24->10/01:00\": \"1/asuncion\",\n  \"-4|s\": \"1/campo_grande,1/cuiaba,1/la_paz,1/manaus,5/west\",\n  \"-4|n|03/12:02->11/05:02\": \"1/detroit,1/grand_turk,1/indiana,1/indianapolis,1/iqaluit,1/kentucky,1/louisville,1/montreal,1/nassau,1/new_york,1/nipigon,1/pangnirtung,1/port-au-prince,1/thunder_bay,1/toronto,1/indiana/marengo,1/indiana/petersburg,1/indiana/vevay,1/indiana/vincennes,1/indiana/winamac,1/kentucky/monticello,1/fort_wayne,1/indiana/indianapolis,1/kentucky/louisville,6/eastern,us/east-indiana,us/eastern,us/michigan\",\n  \"-4|n|03/12:00->11/05:01\": \"1/havana,cuba\",\n  \"-4|n\": \"1/anguilla,1/antigua,1/aruba,1/barbados,1/blanc-sablon,1/boa_vista,1/caracas,1/curacao,1/dominica,1/grenada,1/guadeloupe,1/guyana,1/kralendijk,1/lower_princes,1/marigot,1/martinique,1/montserrat,1/port_of_spain,1/porto_velho,1/puerto_rico,1/santo_domingo,1/st_barthelemy,1/st_kitts,1/st_lucia,1/st_thomas,1/st_vincent,1/tortola,1/virgin\",\n  \"-3|s\": \"1/argentina,1/buenos_aires,1/catamarca,1/cordoba,1/fortaleza,1/jujuy,1/mendoza,1/montevideo,1/punta_arenas,1/sao_paulo,12/palmer,12/rothera,3/stanley,1/argentina/la_rioja,1/argentina/rio_gallegos,1/argentina/salta,1/argentina/san_juan,1/argentina/san_luis,1/argentina/tucuman,1/argentina/ushuaia,1/argentina/comodrivadavia,1/argentina/buenos_aires,1/argentina/catamarca,1/argentina/cordoba,1/argentina/jujuy,1/argentina/mendoza,1/argentina/rosario,1/rosario,5/east\",\n  \"-3|n|03/12:02->11/05:02\": \"1/glace_bay,1/goose_bay,1/halifax,1/moncton,1/thule,3/bermuda,6/atlantic\",\n  \"-3|n\": \"1/araguaina,1/bahia,1/belem,1/cayenne,1/maceio,1/paramaribo,1/recife,1/santarem\",\n  \"-2|n|03/25:22->10/28:24\": \"1/nuuk,1/godthab\",\n  \"-2|n|03/12:02->11/05:02\": \"1/miquelon\",\n  \"-2|n\": \"1/noronha,3/south_georgia,5/denoronha\",\n  \"-2.5|n|03/12:02->11/05:02\": \"1/st_johns,6/newfoundland\",\n  \"-1|n\": \"3/cape_verde\",\n  \"-11|n\": \"11/midway,11/niue,11/pago_pago,11/samoa,us/samoa\",\n  \"-10|n\": \"11/honolulu,11/johnston,11/rarotonga,11/tahiti,us/hawaii,hst\"\n}","//prefixes for iana names..\nexport default [\n  'africa',\n  'america',\n  'asia',\n  'atlantic',\n  'australia',\n  'brazil',\n  'canada',\n  'chile',\n  'europe',\n  'indian',\n  'mexico',\n  'pacific',\n  'antarctica',\n  'etc'\n]\n","import data from './_build.js'\nimport prefixes from './_prefixes.js'\n\nlet all = {}\nObject.keys(data).forEach((k) => {\n  let split = k.split('|')\n  let obj = {\n    offset: Number(split[0]),\n    hem: split[1]\n  }\n  if (split[2]) {\n    obj.dst = split[2]\n  }\n  let names = data[k].split(',')\n  names.forEach((str) => {\n    str = str.replace(/(^[0-9]+)\\//, (before, num) => {\n      num = Number(num)\n      return prefixes[num] + '/'\n    })\n    all[str] = obj\n  })\n})\n\nall.utc = {\n  offset: 0,\n  hem: 'n' //default to northern hemisphere - (sorry!)\n}\n\n//add etc/gmt+n\nfor (let i = -14; i <= 14; i += 0.5) {\n  let num = i\n  if (num > 0) {\n    num = '+' + num\n  }\n  let name = 'etc/gmt' + num\n  all[name] = {\n    offset: i * -1, //they're negative!\n    hem: 'n' //(sorry)\n  }\n  name = 'utc/gmt' + num //this one too, why not.\n  all[name] = {\n    offset: i * -1,\n    hem: 'n'\n  }\n}\n\nexport default all\n","const isOffset = /(\\-?[0-9]+)h(rs)?/i\nconst isNumber = /(\\-?[0-9]+)/\nconst utcOffset = /utc([\\-+]?[0-9]+)/i\nconst gmtOffset = /gmt([\\-+]?[0-9]+)/i\n\nconst toIana = function (num) {\n  num = Number(num)\n  if (num >= -13 && num <= 13) {\n    num = num * -1 //it's opposite!\n    num = (num > 0 ? '+' : '') + num //add plus sign\n    return 'etc/gmt' + num\n  }\n  return null\n}\n\nconst parseOffset = function (tz) {\n  // '+5hrs'\n  let m = tz.match(isOffset)\n  if (m !== null) {\n    return toIana(m[1])\n  }\n  // 'utc+5'\n  m = tz.match(utcOffset)\n  if (m !== null) {\n    return toIana(m[1])\n  }\n  // 'GMT-5' (not opposite)\n  m = tz.match(gmtOffset)\n  if (m !== null) {\n    let num = Number(m[1]) * -1\n    return toIana(num)\n  }\n  // '+5'\n  m = tz.match(isNumber)\n  if (m !== null) {\n    return toIana(m[1])\n  }\n  return null\n}\nexport default parseOffset\n","import tzs from '../../zonefile/unpack.js'\nimport guessTz from './guessTz.js'\nimport parseOffset from './parseOffset.js'\n\nlet local = guessTz()\n\n//add all the city names by themselves\nconst cities = Object.keys(tzs).reduce((h, k) => {\n  let city = k.split('/')[1] || ''\n  city = city.replace(/_/g, ' ')\n  h[city] = k\n  return h\n}, {})\n\n//try to match these against iana form\nconst normalize = (tz) => {\n  tz = tz.replace(/ time/g, '')\n  tz = tz.replace(/ (standard|daylight|summer)/g, '')\n  tz = tz.replace(/\\b(east|west|north|south)ern/g, '$1')\n  tz = tz.replace(/\\b(africa|america|australia)n/g, '$1')\n  tz = tz.replace(/\\beuropean/g, 'europe')\n  tz = tz.replace(/\\islands/g, 'island')\n  return tz\n}\n\n// try our best to reconcile the timzone to this given string\nconst lookupTz = (str, zones) => {\n  if (!str) {\n    // guard if Intl response is unsupported (#397)\n    if (!zones.hasOwnProperty(local)) {\n      console.warn(`Unrecognized IANA id '${local}'. Setting fallback tz to UTC.`)\n      local = 'utc'\n    }\n    return local\n  }\n  if (typeof str !== 'string') {\n    console.error(\"Timezone must be a string - recieved: '\", str, \"'\\n\")\n  }\n  let tz = str.trim()\n  // let split = str.split('/')\n  //support long timezones like 'America/Argentina/Rio_Gallegos'\n  // if (split.length > 2 && zones.hasOwnProperty(tz) === false) {\n  //   tz = split[0] + '/' + split[1]\n  // }\n  tz = tz.toLowerCase()\n  if (zones.hasOwnProperty(tz) === true) {\n    return tz\n  }\n  //lookup more loosely..\n  tz = normalize(tz)\n  if (zones.hasOwnProperty(tz) === true) {\n    return tz\n  }\n  //try city-names\n  if (cities.hasOwnProperty(tz) === true) {\n    return cities[tz]\n  }\n  // //try to parse '-5h'\n  if (/[0-9]/.test(tz) === true) {\n    let id = parseOffset(tz)\n    if (id) {\n      return id\n    }\n  }\n\n  throw new Error(\n    \"Spacetime: Cannot find timezone named: '\" + str + \"'. Please enter an IANA timezone id.\"\n  )\n}\nexport default lookupTz\n","//find the implicit iana code for this machine.\n//safely query the Intl object\n//based on - https://bitbucket.org/pellepim/jstimezonedetect/src\nconst fallbackTZ = 'utc' //\n\n//this Intl object is not supported often, yet\nconst safeIntl = () => {\n  if (typeof Intl === 'undefined' || typeof Intl.DateTimeFormat === 'undefined') {\n    return null\n  }\n  let format = Intl.DateTimeFormat()\n  if (typeof format === 'undefined' || typeof format.resolvedOptions === 'undefined') {\n    return null\n  }\n  let timezone = format.resolvedOptions().timeZone\n  if (!timezone) {\n    return null\n  }\n  return timezone.toLowerCase()\n}\n\nconst guessTz = () => {\n  let timezone = safeIntl()\n  if (timezone === null) {\n    return fallbackTZ\n  }\n  return timezone\n}\n//do it once per computer\nexport default guessTz\n","//git:blame @JuliasCaesar https://www.timeanddate.com/date/leapyear.html\nexport function isLeapYear(year) { return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0 }\n// unsurprisingly-nasty `typeof date` call\nexport function isDate(d) { return Object.prototype.toString.call(d) === '[object Date]' && !isNaN(d.valueOf()) }\nexport function isArray(input) { return Object.prototype.toString.call(input) === '[object Array]' }\nexport function isObject(input) { return Object.prototype.toString.call(input) === '[object Object]' }\nexport function isBoolean(input) { return Object.prototype.toString.call(input) === '[object Boolean]' }\n\nexport function zeroPad(str, len = 2) {\n  let pad = '0'\n  str = str + ''\n  return str.length >= len ? str : new Array(len - str.length + 1).join(pad) + str\n}\n\nexport function titleCase(str) {\n  if (!str) {\n    return ''\n  }\n  return str[0].toUpperCase() + str.substr(1)\n}\n\nexport function ordinal(i) {\n  let j = i % 10\n  let k = i % 100\n  if (j === 1 && k !== 11) {\n    return i + 'st'\n  }\n  if (j === 2 && k !== 12) {\n    return i + 'nd'\n  }\n  if (j === 3 && k !== 13) {\n    return i + 'rd'\n  }\n  return i + 'th'\n}\n\n//strip 'st' off '1st'..\nexport function toCardinal(str) {\n  str = String(str)\n  str = str.replace(/([0-9])(st|nd|rd|th)$/i, '$1')\n  return parseInt(str, 10)\n}\n\n//used mostly for cleanup of unit names, like 'months'\nexport function normalize(str = '') {\n  str = str.toLowerCase().trim()\n  str = str.replace(/ies$/, 'y') //'centuries'\n  str = str.replace(/s$/, '')\n  str = str.replace(/-/g, '')\n  if (str === 'day' || str === 'days') {\n    return 'date'\n  }\n  if (str === 'min' || str === 'mins') {\n    return 'minute'\n  }\n  return str\n}\n\nexport function getEpoch(tmp) {\n  //support epoch\n  if (typeof tmp === 'number') {\n    return tmp\n  }\n  //suport date objects\n  if (isDate(tmp)) {\n    return tmp.getTime()\n  }\n  if (tmp.epoch) {\n    return tmp.epoch\n  }\n  return null\n}\n\n//make sure this input is a spacetime obj\nexport function beADate(d, s) {\n  if (isObject(d) === false) {\n    return s.clone().set(d)\n  }\n  return d\n}\n\nexport function formatTimezone(offset, delimiter = '') {\n  const sign = offset > 0 ? '+' : '-'\n  const absOffset = Math.abs(offset)\n  const hours = zeroPad(parseInt('' + absOffset, 10))\n  const minutes = zeroPad((absOffset % 1) * 60)\n  return `${sign}${hours}${delimiter}${minutes}`\n}\n","const defaults = {\n  year: new Date().getFullYear(),\n  month: 0,\n  date: 1\n}\n\n//support [2016, 03, 01] format\nconst parseArray = (s, arr, today) => {\n  if (arr.length === 0) {\n    return s\n  }\n  let order = ['year', 'month', 'date', 'hour', 'minute', 'second', 'millisecond']\n  for (let i = 0; i < order.length; i++) {\n    let num = arr[i] || today[order[i]] || defaults[order[i]] || 0\n    s = s[order[i]](num)\n  }\n  return s\n}\n\n//support {year:2016, month:3} format\nconst parseObject = (s, obj, today) => {\n  // if obj is empty, do nothing\n  if (Object.keys(obj).length === 0) {\n    return s\n  }\n  obj = Object.assign({}, defaults, today, obj)\n  let keys = Object.keys(obj)\n  for (let i = 0; i < keys.length; i++) {\n    let unit = keys[i]\n    //make sure we have this method\n    if (s[unit] === undefined || typeof s[unit] !== 'function') {\n      continue\n    }\n    //make sure the value is a number\n    if (obj[unit] === null || obj[unit] === undefined || obj[unit] === '') {\n      continue\n    }\n    let num = obj[unit] || today[unit] || defaults[unit] || 0\n    s = s[unit](num)\n  }\n  return s\n}\n\n// this may seem like an arbitrary number, but it's 'within jan 1970'\n// this is only really ambiguous until 2054 or so\nconst parseNumber = function (s, input) {\n  const minimumEpoch = 2500000000\n  // if the given epoch is really small, they've probably given seconds and not milliseconds\n  // anything below this number is likely (but not necessarily) a mistaken input.\n  if (input > 0 && input < minimumEpoch && s.silent === false) {\n    console.warn('  - Warning: You are setting the date to January 1970.')\n    console.warn('       -   did input seconds instead of milliseconds?')\n  }\n  s.epoch = input\n  return s\n}\n\nexport default {\n  parseArray,\n  parseObject,\n  parseNumber\n}\n","// pull in 'today' data for the baseline moment\nconst getNow = function (s) {\n  s.epoch = Date.now()\n  Object.keys(s._today || {}).forEach((k) => {\n    if (typeof s[k] === 'function') {\n      s = s[k](s._today[k])\n    }\n  })\n  return s\n}\n\nconst dates = {\n  now: (s) => {\n    return getNow(s)\n  },\n  today: (s) => {\n    return getNow(s)\n  },\n  tonight: (s) => {\n    s = getNow(s)\n    s = s.hour(18) //6pm\n    return s\n  },\n  tomorrow: (s) => {\n    s = getNow(s)\n    s = s.add(1, 'day')\n    s = s.startOf('day')\n    return s\n  },\n  yesterday: (s) => {\n    s = getNow(s)\n    s = s.subtract(1, 'day')\n    s = s.startOf('day')\n    return s\n  },\n  christmas: (s) => {\n    let year = getNow(s).year()\n    s = s.set([year, 11, 25, 18, 0, 0]) // Dec 25\n    return s\n  },\n  'new years': (s) => {\n    let year = getNow(s).year()\n    s = s.set([year, 11, 31, 18, 0, 0]) // Dec 31\n    return s\n  }\n}\ndates['new years eve'] = dates['new years']\nexport default dates\n","let o = {\n  millisecond: 1\n}\no.second = 1000\no.minute = 60000\no.hour = 3.6e6 // dst is supported post-hoc\no.day = 8.64e7 //\no.date = o.day\no.month = 8.64e7 * 29.5 //(average)\no.week = 6.048e8\no.year = 3.154e10 // leap-years are supported post-hoc\n//add plurals\nObject.keys(o).forEach(k => {\n  o[k + 's'] = o[k]\n})\nexport default o\n","import ms from '../../data/milliseconds.js'\n\n//basically, step-forward/backward until js Date object says we're there.\nconst walk = (s, n, fn, unit, previous) => {\n  let current = s.d[fn]()\n  if (current === n) {\n    return //already there\n  }\n  let startUnit = previous === null ? null : s.d[previous]()\n  let original = s.epoch\n  //try to get it as close as we can\n  let diff = n - current\n  s.epoch += ms[unit] * diff\n  //DST edge-case: if we are going many days, be a little conservative\n  // console.log(unit, diff)\n  if (unit === 'day') {\n    // s.epoch -= ms.minute\n    //but don't push it over a month\n    if (Math.abs(diff) > 28 && n < 28) {\n      s.epoch += ms.hour\n    }\n  }\n  // 1st time: oops, did we change previous unit? revert it.\n  if (previous !== null && startUnit !== s.d[previous]()) {\n    // console.warn('spacetime warning: missed setting ' + unit)\n    s.epoch = original\n    // s.epoch += ms[unit] * diff * 0.89 // maybe try and make it close...?\n  }\n  //repair it if we've gone too far or something\n  //(go by half-steps, just in case)\n  const halfStep = ms[unit] / 2\n  while (s.d[fn]() < n) {\n    s.epoch += halfStep\n  }\n\n  while (s.d[fn]() > n) {\n    s.epoch -= halfStep\n  }\n  // 2nd time: did we change previous unit? revert it.\n  if (previous !== null && startUnit !== s.d[previous]()) {\n    // console.warn('spacetime warning: missed setting ' + unit)\n    s.epoch = original\n  }\n}\n//find the desired date by a increment/check while loop\nconst units = {\n  year: {\n    valid: (n) => n > -4000 && n < 4000,\n    walkTo: (s, n) => walk(s, n, 'getFullYear', 'year', null)\n  },\n  month: {\n    valid: (n) => n >= 0 && n <= 11,\n    walkTo: (s, n) => {\n      let d = s.d\n      let current = d.getMonth()\n      let original = s.epoch\n      let startUnit = d.getFullYear()\n      if (current === n) {\n        return\n      }\n      //try to get it as close as we can..\n      let diff = n - current\n      s.epoch += ms.day * (diff * 28) //special case\n      //oops, did we change the year? revert it.\n      if (startUnit !== s.d.getFullYear()) {\n        s.epoch = original\n      }\n      //increment by day\n      while (s.d.getMonth() < n) {\n        s.epoch += ms.day\n      }\n      while (s.d.getMonth() > n) {\n        s.epoch -= ms.day\n      }\n    }\n  },\n  date: {\n    valid: (n) => n > 0 && n <= 31,\n    walkTo: (s, n) => walk(s, n, 'getDate', 'day', 'getMonth')\n  },\n  hour: {\n    valid: (n) => n >= 0 && n < 24,\n    walkTo: (s, n) => walk(s, n, 'getHours', 'hour', 'getDate')\n  },\n  minute: {\n    valid: (n) => n >= 0 && n < 60,\n    walkTo: (s, n) => walk(s, n, 'getMinutes', 'minute', 'getHours')\n  },\n  second: {\n    valid: (n) => n >= 0 && n < 60,\n    walkTo: (s, n) => {\n      //do this one directly\n      s.epoch = s.seconds(n).epoch\n    }\n  },\n  millisecond: {\n    valid: (n) => n >= 0 && n < 1000,\n    walkTo: (s, n) => {\n      //do this one directly\n      s.epoch = s.milliseconds(n).epoch\n    }\n  }\n}\n\nconst walkTo = (s, wants) => {\n  let keys = Object.keys(units)\n  let old = s.clone()\n  for (let i = 0; i < keys.length; i++) {\n    let k = keys[i]\n    let n = wants[k]\n    if (n === undefined) {\n      n = old[k]()\n    }\n    if (typeof n === 'string') {\n      n = parseInt(n, 10)\n    }\n    //make-sure it's valid\n    if (!units[k].valid(n)) {\n      s.epoch = null\n      if (s.silent === false) {\n        console.warn('invalid ' + k + ': ' + n)\n      }\n      return\n    }\n    units[k].walkTo(s, n)\n  }\n  return\n}\n\nexport default walkTo\n","const monthLengths = [\n  31, // January - 31 days\n  28, // February - 28 days in a common year and 29 days in leap years\n  31, // March - 31 days\n  30, // April - 30 days\n  31, // May - 31 days\n  30, // June - 30 days\n  31, // July - 31 days\n  31, // August - 31 days\n  30, // September - 30 days\n  31, // October - 31 days\n  30, // November - 30 days\n  31 // December - 31 days\n]\nexport default monthLengths\n\n// 28 - feb\n// 30 - april, june, sept, nov\n// 31 - jan, march, may, july, aug, oct, dec\n","let shortMonths = [\n  'jan',\n  'feb',\n  'mar',\n  'apr',\n  'may',\n  'jun',\n  'jul',\n  'aug',\n  'sep',\n  'oct',\n  'nov',\n  'dec'\n]\nlet longMonths = [\n  'january',\n  'february',\n  'march',\n  'april',\n  'may',\n  'june',\n  'july',\n  'august',\n  'september',\n  'october',\n  'november',\n  'december'\n]\n\nfunction buildMapping() {\n  const obj = {\n    sep: 8 //support this format\n  }\n  for (let i = 0; i < shortMonths.length; i++) {\n    obj[shortMonths[i]] = i\n  }\n  for (let i = 0; i < longMonths.length; i++) {\n    obj[longMonths[i]] = i\n  }\n  return obj\n}\n\nexport function short() { return shortMonths }\nexport function long() { return longMonths }\nexport function mapping() { return buildMapping() }\nexport function set(i18n) {\n  shortMonths = i18n.short || shortMonths\n  longMonths = i18n.long || longMonths\n}\n","import monthLengths from '../../data/monthLengths.js'\nimport { isLeapYear } from '../../fns.js'\nimport { mapping } from '../../data/months.js'\nlet months = mapping()\n\nimport parseOffset from './parseOffset.js'\nimport parseTime from './parseTime.js'\n\n//given a month, return whether day number exists in it\nconst validate = (obj) => {\n  //invalid values\n  if (monthLengths.hasOwnProperty(obj.month) !== true) {\n    return false\n  }\n  //support leap-year in february\n  if (obj.month === 1) {\n    if (isLeapYear(obj.year) && obj.date <= 29) {\n      return true\n    } else {\n      return obj.date <= 28\n    }\n  }\n  //is this date too-big for this month?\n  let max = monthLengths[obj.month] || 0\n  if (obj.date <= max) {\n    return true\n  }\n  return false\n}\n\nconst parseYear = (str = '', today) => {\n  str = str.trim()\n  // parse '86 shorthand\n  if (/^'[0-9][0-9]$/.test(str) === true) {\n    let num = Number(str.replace(/'/, ''))\n    if (num > 50) {\n      return 1900 + num\n    }\n    return 2000 + num\n  }\n  let year = parseInt(str, 10)\n  // use a given year from options.today\n  if (!year && today) {\n    year = today.year\n  }\n  // fallback to this year\n  year = year || new Date().getFullYear()\n  return year\n}\n\nconst parseMonth = function (str) {\n  str = str.toLowerCase().trim()\n  if (str === 'sept') {\n    return months.sep\n  }\n  return months[str]\n}\n\nexport {\n  parseOffset,\n  parseTime,\n  parseYear,\n  parseMonth,\n  validate\n}","// truncate any sub-millisecond values\nconst parseMs = function (str = '') {\n  str = String(str)\n  //js does not support sub-millisecond values \n  // so truncate these - 2021-11-02T19:55:30.087772\n  if (str.length > 3) {\n    str = str.substr(0, 3)\n  } else if (str.length === 1) {\n    // assume ms are zero-padded on the left\n    // but maybe not on the right.\n    // turn '.10' into '.100'\n    str = str + '00'\n  } else if (str.length === 2) {\n    str = str + '0'\n  }\n  return Number(str) || 0\n}\n\nconst parseTime = (s, str = '') => {\n  // remove all whitespace\n  str = str.replace(/^\\s+/, '').toLowerCase()\n  //formal time format - 04:30.23\n  let arr = str.match(/([0-9]{1,2}):([0-9]{1,2}):?([0-9]{1,2})?[:\\.]?([0-9]{1,4})?/)\n  if (arr !== null) {\n    //validate it a little\n    let h = Number(arr[1])\n    if (h < 0 || h > 24) {\n      return s.startOf('day')\n    }\n    let m = Number(arr[2]) //don't accept '5:3pm'\n    if (arr[2].length < 2 || m < 0 || m > 59) {\n      return s.startOf('day')\n    }\n    s = s.hour(h)\n    s = s.minute(m)\n    s = s.seconds(arr[3] || 0)\n    s = s.millisecond(parseMs(arr[4]))\n    //parse-out am/pm\n    let ampm = str.match(/[\\b0-9] ?(am|pm)\\b/)\n    if (ampm !== null && ampm[1]) {\n      s = s.ampm(ampm[1])\n    }\n    return s\n  }\n\n  //try an informal form - 5pm (no minutes)\n  arr = str.match(/([0-9]+) ?(am|pm)/)\n  if (arr !== null && arr[1]) {\n    let h = Number(arr[1])\n    //validate it a little..\n    if (h > 12 || h < 1) {\n      return s.startOf('day')\n    }\n    s = s.hour(arr[1] || 0)\n    s = s.ampm(arr[2])\n    s = s.startOf('hour')\n    return s\n  }\n\n  //no time info found, use start-of-day\n  s = s.startOf('day')\n  return s\n}\nexport default parseTime\n","import ymd from './01-ymd.js'\nimport mdy from './02-mdy.js'\nimport dmy from './03-dmy.js'\nimport misc from './04-misc.js'\n\nexport default [].concat(ymd, mdy, dmy, misc)\n","import walkTo from '../../methods/set/walk.js'\nimport { toCardinal } from '../../fns.js'\nimport { validate, parseTime, parseYear, parseMonth, parseOffset } from './_parsers.js'\n\nexport default [\n  // =====\n  //  y-m-d\n  // =====\n  //iso-this 1998-05-30T22:00:00:000Z, iso-that 2017-04-03T08:00:00-0700\n  {\n    reg: /^(\\-?0?0?[0-9]{3,4})-([0-9]{1,2})-([0-9]{1,2})[T| ]([0-9.:]+)(Z|[0-9\\-\\+:]+)?$/i,\n    parse: (s, m) => {\n      let obj = {\n        year: m[1],\n        month: parseInt(m[2], 10) - 1,\n        date: m[3]\n      }\n      if (validate(obj) === false) {\n        s.epoch = null\n        return s\n      }\n      parseOffset(s, m[5])\n      walkTo(s, obj)\n      s = parseTime(s, m[4])\n      return s\n    }\n  },\n  //short-iso \"2015-03-25\" or \"2015/03/25\" or \"2015/03/25 12:26:14 PM\"\n  {\n    reg: /^([0-9]{4})[\\-\\/\\. ]([0-9]{1,2})[\\-\\/\\. ]([0-9]{1,2})( [0-9]{1,2}(:[0-9]{0,2})?(:[0-9]{0,3})? ?(am|pm)?)?$/i,\n    parse: (s, m) => {\n      let obj = {\n        year: m[1],\n        month: parseInt(m[2], 10) - 1,\n        date: parseInt(m[3], 10)\n      }\n      if (obj.month >= 12) {\n        //support yyyy/dd/mm (weird, but ok)\n        obj.date = parseInt(m[2], 10)\n        obj.month = parseInt(m[3], 10) - 1\n      }\n      if (validate(obj) === false) {\n        s.epoch = null\n        return s\n      }\n      walkTo(s, obj)\n      s = parseTime(s, m[4])\n      return s\n    }\n  },\n\n  //text-month \"2015-feb-25\"\n  {\n    reg: /^([0-9]{4})[\\-\\/\\. ]([a-z]+)[\\-\\/\\. ]([0-9]{1,2})( [0-9]{1,2}(:[0-9]{0,2})?(:[0-9]{0,3})? ?(am|pm)?)?$/i,\n    parse: (s, m) => {\n      let obj = {\n        year: parseYear(m[1], s._today),\n        month: parseMonth(m[2]),\n        date: toCardinal(m[3] || '')\n      }\n      if (validate(obj) === false) {\n        s.epoch = null\n        return s\n      }\n      walkTo(s, obj)\n      s = parseTime(s, m[4])\n      return s\n    }\n  }\n]\n","//pull-apart ISO offsets, like \"+0100\"\nconst parseOffset = (s, offset) => {\n  if (!offset) {\n    return s\n  }\n\n  // according to ISO8601, tz could be hh:mm, hhmm or hh\n  // so need few more steps before the calculation.\n  let num = 0\n\n  // for (+-)hh:mm\n  if (/^[\\+-]?[0-9]{2}:[0-9]{2}$/.test(offset)) {\n    //support \"+01:00\"\n    if (/:00/.test(offset) === true) {\n      offset = offset.replace(/:00/, '')\n    }\n    //support \"+01:30\"\n    if (/:30/.test(offset) === true) {\n      offset = offset.replace(/:30/, '.5')\n    }\n  }\n\n  // for (+-)hhmm\n  if (/^[\\+-]?[0-9]{4}$/.test(offset)) {\n    offset = offset.replace(/30$/, '.5')\n  }\n  num = parseFloat(offset)\n\n  //divide by 100 or 10 - , \"+0100\", \"+01\"\n  if (Math.abs(num) > 100) {\n    num = num / 100\n  }\n  //this is a fancy-move\n  if (num === 0 || offset === 'Z' || offset === 'z') {\n    s.tz = 'etc/gmt'\n    return s\n  }\n  //okay, try to match it to a utc timezone\n  //remember - this is opposite! a -5 offset maps to Etc/GMT+5  ¯\\_(:/)_/¯\n  //https://askubuntu.com/questions/519550/why-is-the-8-timezone-called-gmt-8-in-the-filesystem\n  num *= -1\n\n  if (num >= 0) {\n    num = '+' + num\n  }\n  let tz = 'etc/gmt' + num\n  let zones = s.timezones\n\n  if (zones[tz]) {\n    // log a warning if we're over-writing a given timezone?\n    // console.log('changing timezone to: ' + tz)\n    s.tz = tz\n  }\n  return s\n}\nexport default parseOffset\n","import walkTo from '../../methods/set/walk.js'\nimport { toCardinal } from '../../fns.js'\nimport { validate, parseTime, parseYear, parseMonth } from './_parsers.js'\n\nexport default [\n  // =====\n  //  m-d-y\n  // =====\n  //mm/dd/yyyy - uk/canada \"6/28/2019, 12:26:14 PM\"\n  {\n    reg: /^([0-9]{1,2})[\\-\\/.]([0-9]{1,2})[\\-\\/.]?([0-9]{4})?( [0-9]{1,2}:[0-9]{2}:?[0-9]{0,2}? ?(am|pm|gmt))?$/i,\n    parse: (s, arr) => {\n      let month = parseInt(arr[1], 10) - 1\n      let date = parseInt(arr[2], 10)\n      //support dd/mm/yyy\n      if (s.british || month >= 12) {\n        date = parseInt(arr[1], 10)\n        month = parseInt(arr[2], 10) - 1\n      }\n      let obj = {\n        date,\n        month,\n        year: parseYear(arr[3], s._today) || new Date().getFullYear()\n      }\n      if (validate(obj) === false) {\n        s.epoch = null\n        return s\n      }\n      walkTo(s, obj)\n      s = parseTime(s, arr[4])\n      return s\n    }\n  },\n  //alt short format - \"feb-25-2015\"\n  {\n    reg: /^([a-z]+)[\\-\\/\\. ]([0-9]{1,2})[\\-\\/\\. ]?([0-9]{4}|'[0-9]{2})?( [0-9]{1,2}(:[0-9]{0,2})?(:[0-9]{0,3})? ?(am|pm)?)?$/i,\n    parse: (s, arr) => {\n      let obj = {\n        year: parseYear(arr[3], s._today),\n        month: parseMonth(arr[1]),\n        date: toCardinal(arr[2] || '')\n      }\n      if (validate(obj) === false) {\n        s.epoch = null\n        return s\n      }\n      walkTo(s, obj)\n      s = parseTime(s, arr[4])\n      return s\n    }\n  },\n\n  //Long \"Mar 25 2015\"\n  //February 22, 2017 15:30:00\n  {\n    reg: /^([a-z]+) ([0-9]{1,2})( [0-9]{4})?( ([0-9:]+( ?am| ?pm| ?gmt)?))?$/i,\n    parse: (s, arr) => {\n      let obj = {\n        year: parseYear(arr[3], s._today),\n        month: parseMonth(arr[1]),\n        date: toCardinal(arr[2] || '')\n      }\n      if (validate(obj) === false) {\n        s.epoch = null\n        return s\n      }\n      walkTo(s, obj)\n      s = parseTime(s, arr[4])\n      return s\n    }\n  },\n  // 'Sun Mar 14 15:09:48 +0000 2021'\n  {\n    reg: /^([a-z]+) ([0-9]{1,2})( [0-9:]+)?( \\+[0-9]{4})?( [0-9]{4})?$/i,\n    parse: (s, arr) => {\n      let obj = {\n        year: parseYear(arr[5], s._today),\n        month: parseMonth(arr[1]),\n        date: toCardinal(arr[2] || '')\n      }\n      if (validate(obj) === false) {\n        s.epoch = null\n        return s\n      }\n      walkTo(s, obj)\n      s = parseTime(s, arr[3])\n      return s\n    }\n  }\n]\n","import walkTo from '../../methods/set/walk.js'\nimport { toCardinal } from '../../fns.js'\nimport { validate, parseTime, parseYear, parseMonth } from './_parsers.js'\n\nexport default [\n  // =====\n  //  d-m-y\n  // =====\n  //common british format - \"25-feb-2015\"\n  {\n    reg: /^([0-9]{1,2})[\\-\\/]([a-z]+)[\\-\\/]?([0-9]{4})?$/i,\n    parse: (s, m) => {\n      let obj = {\n        year: parseYear(m[3], s._today),\n        month: parseMonth(m[2]),\n        date: toCardinal(m[1] || '')\n      }\n      if (validate(obj) === false) {\n        s.epoch = null\n        return s\n      }\n      walkTo(s, obj)\n      s = parseTime(s, m[4])\n      return s\n    }\n  },\n  // \"25 Mar 2015\"\n  {\n    reg: /^([0-9]{1,2})( [a-z]+)( [0-9]{4}| '[0-9]{2})? ?([0-9]{1,2}:[0-9]{2}:?[0-9]{0,2}? ?(am|pm|gmt))?$/i,\n    parse: (s, m) => {\n      let obj = {\n        year: parseYear(m[3], s._today),\n        month: parseMonth(m[2]),\n        date: toCardinal(m[1])\n      }\n      if (!obj.month || validate(obj) === false) {\n        s.epoch = null\n        return s\n      }\n      walkTo(s, obj)\n      s = parseTime(s, m[4])\n      return s\n    }\n  },\n  // 01-jan-2020\n  {\n    reg: /^([0-9]{1,2})[\\. -/]([a-z]+)[\\. -/]([0-9]{4})?( [0-9]{1,2}(:[0-9]{0,2})?(:[0-9]{0,3})? ?(am|pm)?)?$/i,\n    parse: (s, m) => {\n      let obj = {\n        date: Number(m[1]),\n        month: parseMonth(m[2]),\n        year: Number(m[3])\n      }\n      if (validate(obj) === false) {\n        s.epoch = null\n        return s\n      }\n      walkTo(s, obj)\n      s = s.startOf('day')\n      s = parseTime(s, m[4])\n      return s\n    }\n  }\n]\n","import walkTo from '../../methods/set/walk.js'\nimport { validate, parseTime, parseYear, parseMonth } from './_parsers.js'\n\nexport default [\n  // =====\n  // no dates\n  // =====\n\n  // '2012-06' month-only\n  {\n    reg: /^([0-9]{4})[\\-\\/]([0-9]{2})$/i,\n    parse: (s, m) => {\n      let obj = {\n        year: m[1],\n        month: parseInt(m[2], 10) - 1,\n        date: 1\n      }\n      if (validate(obj) === false) {\n        s.epoch = null\n        return s\n      }\n      walkTo(s, obj)\n      s = parseTime(s, m[4])\n      return s\n    }\n  },\n\n  //February 2017 (implied date)\n  {\n    reg: /^([a-z]+) ([0-9]{4})$/i,\n    parse: (s, arr) => {\n      let obj = {\n        year: parseYear(arr[2], s._today),\n        month: parseMonth(arr[1]),\n        date: s._today.date || 1\n      }\n      if (validate(obj) === false) {\n        s.epoch = null\n        return s\n      }\n      walkTo(s, obj)\n      s = parseTime(s, arr[4])\n      return s\n    }\n  },\n\n  {\n    // 'q2 2002'\n    reg: /^(q[0-9])( of)?( [0-9]{4})?/i,\n    parse: (s, arr) => {\n      let quarter = arr[1] || ''\n      s = s.quarter(quarter)\n      let year = arr[3] || ''\n      if (year) {\n        year = year.trim()\n        s = s.year(year)\n      }\n      return s\n    }\n  },\n  {\n    // 'summer 2002'\n    reg: /^(spring|summer|winter|fall|autumn)( of)?( [0-9]{4})?/i,\n    parse: (s, arr) => {\n      let season = arr[1] || ''\n      s = s.season(season)\n      let year = arr[3] || ''\n      if (year) {\n        year = year.trim()\n        s = s.year(year)\n      }\n      return s\n    }\n  },\n  {\n    // '200bc'\n    reg: /^[0-9,]+ ?b\\.?c\\.?$/i,\n    parse: (s, arr) => {\n      let str = arr[0] || ''\n      //make year-negative\n      str = str.replace(/^([0-9,]+) ?b\\.?c\\.?$/i, '-$1')\n      let d = new Date()\n      let obj = {\n        year: parseInt(str.trim(), 10),\n        month: d.getMonth(),\n        date: d.getDate()\n      }\n      if (validate(obj) === false) {\n        s.epoch = null\n        return s\n      }\n      walkTo(s, obj)\n      s = parseTime(s)\n      return s\n    }\n  },\n  {\n    // '200ad'\n    reg: /^[0-9,]+ ?(a\\.?d\\.?|c\\.?e\\.?)$/i,\n    parse: (s, arr) => {\n      let str = arr[0] || ''\n      //remove commas\n      str = str.replace(/,/g, '')\n      let d = new Date()\n      let obj = {\n        year: parseInt(str.trim(), 10),\n        month: d.getMonth(),\n        date: d.getDate()\n      }\n      if (validate(obj) === false) {\n        s.epoch = null\n        return s\n      }\n      walkTo(s, obj)\n      s = parseTime(s)\n      return s\n    }\n  },\n  {\n    // '1992'\n    reg: /^[0-9]{4}( ?a\\.?d\\.?)?$/i,\n    parse: (s, arr) => {\n      let today = s._today\n      // using today's date, but a new month is awkward.\n      if (today.month && !today.date) {\n        today.date = 1\n      }\n      let d = new Date()\n      let obj = {\n        year: parseYear(arr[0], today),\n        month: today.month || d.getMonth(),\n        date: today.date || d.getDate()\n      }\n      if (validate(obj) === false) {\n        s.epoch = null\n        return s\n      }\n      walkTo(s, obj)\n      s = parseTime(s)\n      return s\n    }\n  }\n]\n","import { isObject, isDate, isArray } from '../fns.js'\nimport fns from './helpers.js'\nconst { parseArray, parseObject, parseNumber } = fns\nimport namedDates from './named-dates.js'\nimport normalize from './normalize.js'\nimport parseString from './parse.js'\n//we have to actually parse these inputs ourselves\n//  -  can't use built-in js parser ;(\n//=========================================\n// ISO Date\t  \"2015-03-25\"\n// Short Date\t\"03/25/2015\" or \"2015/03/25\"\n// Long Date\t\"Mar 25 2015\" or \"25 Mar 2015\"\n// Full Date\t\"Wednesday March 25 2015\"\n//=========================================\n\nconst defaults = {\n  year: new Date().getFullYear(),\n  month: 0,\n  date: 1\n}\n\n//find the epoch from different input styles\nconst parseInput = (s, input) => {\n  let today = s._today || defaults\n  //if we've been given a epoch number, it's easy\n  if (typeof input === 'number') {\n    return parseNumber(s, input)\n  }\n  //set tmp time\n  s.epoch = Date.now()\n  // overwrite tmp time with 'today' value, if exists\n  if (s._today && isObject(s._today) && Object.keys(s._today).length > 0) {\n    let res = parseObject(s, today, defaults)\n    if (res.isValid()) {\n      s.epoch = res.epoch\n    }\n  }\n  // null input means 'now'\n  if (input === null || input === undefined || input === '') {\n    return s //k, we're good.\n  }\n  //support input of Date() object\n  if (isDate(input) === true) {\n    s.epoch = input.getTime()\n    return s\n  }\n  //support [2016, 03, 01] format\n  if (isArray(input) === true) {\n    s = parseArray(s, input, today)\n    return s\n  }\n  //support {year:2016, month:3} format\n  if (isObject(input) === true) {\n    //support spacetime object as input\n    if (input.epoch) {\n      s.epoch = input.epoch\n      s.tz = input.tz\n      return s\n    }\n    s = parseObject(s, input, today)\n    return s\n  }\n  //input as a string..\n  if (typeof input !== 'string') {\n    return s\n  }\n  //little cleanup..\n  input = normalize(input)\n  //try some known-words, like 'now'\n  if (namedDates.hasOwnProperty(input) === true) {\n    s = namedDates[input](s)\n    return s\n  }\n  //try each text-parse template, use the first good result\n  return parseString(s, input)\n}\nexport default parseInput\n","//little cleanup..\nconst normalize = function (str) {\n  // remove all day-names\n  str = str.replace(/\\b(mon|tues?|wed|wednes|thur?s?|fri|sat|satur|sun)(day)?\\b/i, '')\n  //remove ordinal ending\n  str = str.replace(/([0-9])(th|rd|st|nd)/, '$1')\n  str = str.replace(/,/g, '')\n  str = str.replace(/ +/g, ' ').trim()\n  return str\n}\n\nexport default normalize\n","import parsers from './formats/index.js'\n\nconst parseString = function (s, input, givenTz) {\n  // let parsers = s.parsers || []\n  //try each text-parse template, use the first good result\n  for (let i = 0; i < parsers.length; i++) {\n    let m = input.match(parsers[i].reg)\n    if (m) {\n      // console.log(parsers[i].reg)\n      let res = parsers[i].parse(s, m, givenTz)\n      if (res !== null && res.isValid()) {\n        return res\n      }\n    }\n  }\n  if (s.silent === false) {\n    console.warn(\"Warning: couldn't parse date-string: '\" + input + \"'\")\n  }\n  s.epoch = null\n  return s\n}\nexport default parseString\n","let shortDays = ['sun', 'mon', 'tue', 'wed', 'thu', 'fri', 'sat']\nlet longDays = ['sunday', 'monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saturday']\n\nexport function short() { return shortDays }\nexport function long() { return longDays }\nexport function set(i18n) {\n  shortDays = i18n.short || shortDays\n  longDays = i18n.long || longDays\n}\nexport const aliases = {\n  mo: 1,\n  tu: 2,\n  we: 3,\n  th: 4,\n  fr: 5,\n  sa: 6,\n  su: 7,\n  tues: 2,\n  weds: 3,\n  wedn: 3,\n  thur: 4,\n  thurs: 4\n}\n","let titleCaseEnabled = true\n\nexport function useTitleCase() {\n  return titleCaseEnabled\n}\n\nexport function set(val) {\n  titleCaseEnabled = val\n}\n","import { formatTimezone } from '../../fns.js'\n\n// create the timezone offset part of an iso timestamp\n// it's kind of nuts how involved this is\n// \"+01:00\", \"+0100\", or simply \"+01\"\nconst isoOffset = s => {\n  let offset = s.timezone().current.offset\n  return !offset ? 'Z' : formatTimezone(offset, ':')\n}\n\nexport default isoOffset\n","import { titleCase, zeroPad, ordinal } from '../../fns.js'\nimport { short } from '../../data/months.js'\nimport { short as _short } from '../../data/days.js'\nimport { useTitleCase } from '../../data/caseFormat.js'\nimport isoOffset from './_offset.js'\n\nconst applyCaseFormat = (str) => {\n  if (useTitleCase()) {\n    return titleCase(str)\n  }\n  return str\n}\n\n// iso-year padding\nconst padYear = (num) => {\n  if (num >= 0) {\n    return zeroPad(num, 4)\n  } else {\n    num = Math.abs(num)\n    return '-' + zeroPad(num, 4)\n  }\n}\n\nconst format = {\n  day: (s) => applyCaseFormat(s.dayName()),\n  'day-short': (s) => applyCaseFormat(_short()[s.day()]),\n  'day-number': (s) => s.day(),\n  'day-ordinal': (s) => ordinal(s.day()),\n  'day-pad': (s) => zeroPad(s.day()),\n\n  date: (s) => s.date(),\n  'date-ordinal': (s) => ordinal(s.date()),\n  'date-pad': (s) => zeroPad(s.date()),\n\n  month: (s) => applyCaseFormat(s.monthName()),\n  'month-short': (s) => applyCaseFormat(short()[s.month()]),\n  'month-number': (s) => s.month(),\n  'month-ordinal': (s) => ordinal(s.month()),\n  'month-pad': (s) => zeroPad(s.month()),\n  'iso-month': (s) => zeroPad(s.month() + 1), //1-based months\n\n  year: (s) => {\n    let year = s.year()\n    if (year > 0) {\n      return year\n    }\n    year = Math.abs(year)\n    return year + ' BC'\n  },\n  'year-short': (s) => {\n    let year = s.year()\n    if (year > 0) {\n      return `'${String(s.year()).substr(2, 4)}`\n    }\n    year = Math.abs(year)\n    return year + ' BC'\n  },\n  'iso-year': (s) => {\n    let year = s.year()\n    let isNegative = year < 0\n    let str = zeroPad(Math.abs(year), 4) //0-padded\n    if (isNegative) {\n      //negative years are for some reason 6-digits ('-00008')\n      str = zeroPad(str, 6)\n      str = '-' + str\n    }\n    return str\n  },\n\n  time: (s) => s.time(),\n  'time-24': (s) => `${s.hour24()}:${zeroPad(s.minute())}`,\n\n  hour: (s) => s.hour12(),\n  'hour-pad': (s) => zeroPad(s.hour12()),\n  'hour-24': (s) => s.hour24(),\n  'hour-24-pad': (s) => zeroPad(s.hour24()),\n\n  minute: (s) => s.minute(),\n  'minute-pad': (s) => zeroPad(s.minute()),\n  second: (s) => s.second(),\n  'second-pad': (s) => zeroPad(s.second()),\n  millisecond: (s) => s.millisecond(),\n  'millisecond-pad': (s) => zeroPad(s.millisecond(), 3),\n\n  ampm: (s) => s.ampm(),\n  AMPM: (s) => s.ampm().toUpperCase(),\n  quarter: (s) => 'Q' + s.quarter(),\n  season: (s) => s.season(),\n  era: (s) => s.era(),\n  json: (s) => s.json(),\n  timezone: (s) => s.timezone().name,\n  offset: (s) => isoOffset(s),\n\n  numeric: (s) => `${s.year()}/${zeroPad(s.month() + 1)}/${zeroPad(s.date())}`, // yyyy/mm/dd\n  'numeric-us': (s) => `${zeroPad(s.month() + 1)}/${zeroPad(s.date())}/${s.year()}`, // mm/dd/yyyy\n  'numeric-uk': (s) => `${zeroPad(s.date())}/${zeroPad(s.month() + 1)}/${s.year()}`, //dd/mm/yyyy\n  'mm/dd': (s) => `${zeroPad(s.month() + 1)}/${zeroPad(s.date())}`, //mm/dd\n\n  // ... https://en.wikipedia.org/wiki/ISO_8601 ;(((\n  iso: (s) => {\n    let year = s.format('iso-year')\n    let month = zeroPad(s.month() + 1) //1-based months\n    let date = zeroPad(s.date())\n    let hour = zeroPad(s.h24())\n    let minute = zeroPad(s.minute())\n    let second = zeroPad(s.second())\n    let ms = zeroPad(s.millisecond(), 3)\n    let offset = isoOffset(s)\n    return `${year}-${month}-${date}T${hour}:${minute}:${second}.${ms}${offset}` //2018-03-09T08:50:00.000-05:00\n  },\n  'iso-short': (s) => {\n    let month = zeroPad(s.month() + 1) //1-based months\n    let date = zeroPad(s.date())\n    let year = padYear(s.year())\n    return `${year}-${month}-${date}` //2017-02-15\n  },\n  'iso-utc': (s) => {\n    return new Date(s.epoch).toISOString() //2017-03-08T19:45:28.367Z\n  },\n\n  //i made these up\n  nice: (s) => `${short()[s.month()]} ${ordinal(s.date())}, ${s.time()}`,\n  'nice-24': (s) =>\n    `${short()[s.month()]} ${ordinal(s.date())}, ${s.hour24()}:${zeroPad(\n      s.minute()\n    )}`,\n  'nice-year': (s) => `${short()[s.month()]} ${ordinal(s.date())}, ${s.year()}`,\n  'nice-day': (s) =>\n    `${_short()[s.day()]} ${applyCaseFormat(short()[s.month()])} ${ordinal(\n      s.date()\n    )}`,\n  'nice-full': (s) =>\n    `${s.dayName()} ${applyCaseFormat(s.monthName())} ${ordinal(s.date())}, ${s.time()}`,\n  'nice-full-24': (s) =>\n    `${s.dayName()} ${applyCaseFormat(s.monthName())} ${ordinal(\n      s.date()\n    )}, ${s.hour24()}:${zeroPad(s.minute())}`\n}\n//aliases\nconst aliases = {\n  'day-name': 'day',\n  'month-name': 'month',\n  'iso 8601': 'iso',\n  'time-h24': 'time-24',\n  'time-12': 'time',\n  'time-h12': 'time',\n  tz: 'timezone',\n  'day-num': 'day-number',\n  'month-num': 'month-number',\n  'month-iso': 'iso-month',\n  'year-iso': 'iso-year',\n  'nice-short': 'nice',\n  'nice-short-24': 'nice-24',\n  mdy: 'numeric-us',\n  dmy: 'numeric-uk',\n  ymd: 'numeric',\n  'yyyy/mm/dd': 'numeric',\n  'mm/dd/yyyy': 'numeric-us',\n  'dd/mm/yyyy': 'numeric-us',\n  'little-endian': 'numeric-uk',\n  'big-endian': 'numeric',\n  'day-nice': 'nice-day'\n}\nObject.keys(aliases).forEach((k) => (format[k] = format[aliases[k]]))\n\nconst printFormat = (s, str = '') => {\n  //don't print anything if it's an invalid date\n  if (s.isValid() !== true) {\n    return ''\n  }\n  //support .format('month')\n  if (format.hasOwnProperty(str)) {\n    let out = format[str](s) || ''\n    if (str !== 'json') {\n      out = String(out)\n      if (str.toLowerCase() !== 'ampm') {\n        out = applyCaseFormat(out)\n      }\n    }\n    return out\n  }\n  //support '{hour}:{minute}' notation\n  if (str.indexOf('{') !== -1) {\n    let sections = /\\{(.+?)\\}/g\n    str = str.replace(sections, (_, fmt) => {\n      fmt = fmt.toLowerCase().trim()\n      if (format.hasOwnProperty(fmt)) {\n        let out = String(format[fmt](s))\n        if (fmt.toLowerCase() !== 'ampm') {\n          return applyCaseFormat(out)\n        }\n        return out\n      }\n      return ''\n    })\n    return str\n  }\n\n  return s.format('iso-short')\n}\nexport default printFormat\n","import { zeroPad as pad } from '../../fns.js'\nimport { formatTimezone } from '../../fns.js'\n//parse this insane unix-time-templating thing, from the 19th century\n//http://unicode.org/reports/tr35/tr35-25.html#Date_Format_Patterns\n\n//time-symbols we support\nconst mapping = {\n  G: (s) => s.era(),\n  GG: (s) => s.era(),\n  GGG: (s) => s.era(),\n  GGGG: (s) => (s.era() === 'AD' ? 'Anno Domini' : 'Before Christ'),\n  //year\n  y: (s) => s.year(),\n  yy: (s) => {\n    //last two chars\n    return pad(Number(String(s.year()).substr(2, 4)))\n  },\n  yyy: (s) => s.year(),\n  yyyy: (s) => s.year(),\n  yyyyy: (s) => '0' + s.year(),\n  // u: (s) => {},//extended non-gregorian years\n\n  //quarter\n  Q: (s) => s.quarter(),\n  QQ: (s) => s.quarter(),\n  QQQ: (s) => s.quarter(),\n  QQQQ: (s) => s.quarter(),\n\n  //month\n  M: (s) => s.month() + 1,\n  MM: (s) => pad(s.month() + 1),\n  MMM: (s) => s.format('month-short'),\n  MMMM: (s) => s.format('month'),\n\n  //week\n  w: (s) => s.week(),\n  ww: (s) => pad(s.week()),\n  //week of month\n  // W: (s) => s.week(),\n\n  //date of month\n  d: (s) => s.date(),\n  dd: (s) => pad(s.date()),\n  //date of year\n  D: (s) => s.dayOfYear(),\n  DD: (s) => pad(s.dayOfYear()),\n  DDD: (s) => pad(s.dayOfYear(), 3),\n\n  // F: (s) => {},//date of week in month\n  // g: (s) => {},//modified julian day\n\n  //day\n  E: (s) => s.format('day-short'),\n  EE: (s) => s.format('day-short'),\n  EEE: (s) => s.format('day-short'),\n  EEEE: (s) => s.format('day'),\n  EEEEE: (s) => s.format('day')[0],\n  e: (s) => s.day(),\n  ee: (s) => s.day(),\n  eee: (s) => s.format('day-short'),\n  eeee: (s) => s.format('day'),\n  eeeee: (s) => s.format('day')[0],\n\n  //am/pm\n  a: (s) => s.ampm().toUpperCase(),\n  aa: (s) => s.ampm().toUpperCase(),\n  aaa: (s) => s.ampm().toUpperCase(),\n  aaaa: (s) => s.ampm().toUpperCase(),\n\n  //hour\n  h: (s) => s.h12(),\n  hh: (s) => pad(s.h12()),\n  H: (s) => s.hour(),\n  HH: (s) => pad(s.hour()),\n  // j: (s) => {},//weird hour format\n\n  m: (s) => s.minute(),\n  mm: (s) => pad(s.minute()),\n  s: (s) => s.second(),\n  ss: (s) => pad(s.second()),\n\n  //milliseconds\n  SSS: (s) => pad(s.millisecond(), 3),\n  //milliseconds in the day\n  A: (s) => s.epoch - s.startOf('day').epoch,\n  //timezone\n  z: (s) => s.timezone().name,\n  zz: (s) => s.timezone().name,\n  zzz: (s) => s.timezone().name,\n  zzzz: (s) => s.timezone().name,\n  Z: (s) => formatTimezone(s.timezone().current.offset),\n  ZZ: (s) => formatTimezone(s.timezone().current.offset),\n  ZZZ: (s) => formatTimezone(s.timezone().current.offset),\n  ZZZZ: (s) => formatTimezone(s.timezone().current.offset, ':')\n}\n\nconst addAlias = (char, to, n) => {\n  let name = char\n  let toName = to\n  for (let i = 0; i < n; i += 1) {\n    mapping[name] = mapping[toName]\n    name += char\n    toName += to\n  }\n}\naddAlias('q', 'Q', 4)\naddAlias('L', 'M', 4)\naddAlias('Y', 'y', 4)\naddAlias('c', 'e', 4)\naddAlias('k', 'H', 2)\naddAlias('K', 'h', 2)\naddAlias('S', 's', 2)\naddAlias('v', 'z', 4)\naddAlias('V', 'Z', 4)\n\n// support unix-style escaping with ' character\nconst escapeChars = function (arr) {\n  for (let i = 0; i < arr.length; i += 1) {\n    if (arr[i] === `'`) {\n      // greedy-search for next apostrophe\n      for (let o = i + 1; o < arr.length; o += 1) {\n        if (arr[o]) {\n          arr[i] += arr[o]\n        }\n        if (arr[o] === `'`) {\n          arr[o] = null\n          break\n        }\n        arr[o] = null\n      }\n    }\n  }\n  return arr.filter((ch) => ch)\n}\n\n//combine consecutive chars, like 'yyyy' as one.\nconst combineRepeated = function (arr) {\n  for (let i = 0; i < arr.length; i += 1) {\n    let c = arr[i]\n    // greedy-forward\n    for (let o = i + 1; o < arr.length; o += 1) {\n      if (arr[o] === c) {\n        arr[i] += arr[o]\n        arr[o] = null\n      } else {\n        break\n      }\n    }\n  }\n  // '' means one apostrophe\n  arr = arr.filter((ch) => ch)\n  arr = arr.map((str) => {\n    if (str === `''`) {\n      str = `'`\n    }\n    return str\n  })\n  return arr\n}\n\nconst unixFmt = (s, str) => {\n  let arr = str.split('')\n  // support character escaping\n  arr = escapeChars(arr)\n  //combine 'yyyy' as string.\n  arr = combineRepeated(arr)\n  return arr.reduce((txt, c) => {\n    if (mapping[c] !== undefined) {\n      txt += mapping[c](s) || ''\n    } else {\n      // 'unescape'\n      if (/^'.{1,}'$/.test(c)) {\n        c = c.replace(/'/g, '')\n      }\n      txt += c\n    }\n    return txt\n  }, '')\n}\nexport default unixFmt\n","import { normalize } from '../fns.js'\nconst units = ['year', 'season', 'quarter', 'month', 'week', 'day', 'quarterHour', 'hour', 'minute']\n\nconst doUnit = function (s, k) {\n  let start = s.clone().startOf(k)\n  let end = s.clone().endOf(k)\n  let duration = end.epoch - start.epoch\n  let percent = (s.epoch - start.epoch) / duration\n  return parseFloat(percent.toFixed(2))\n}\n\n//how far it is along, from 0-1\nconst progress = (s, unit) => {\n  if (unit) {\n    unit = normalize(unit)\n    return doUnit(s, unit)\n  }\n  let obj = {}\n  units.forEach(k => {\n    obj[k] = doUnit(s, k)\n  })\n  return obj\n}\n\nexport default progress\n","//increment until dates are the same\nconst climb = (a, b, unit) => {\n  let i = 0\n  a = a.clone()\n  while (a.isBefore(b)) {\n    //do proper, expensive increment to catch all-the-tricks\n    a = a.add(1, unit)\n    i += 1\n  }\n  //oops, we went too-far..\n  if (a.isAfter(b, unit)) {\n    i -= 1\n  }\n  return i\n}\n\n// do a thurough +=1 on the unit, until they match\n// for speed-reasons, only used on day, month, week.\nconst diffOne = (a, b, unit) => {\n  if (a.isBefore(b)) {\n    return climb(a, b, unit)\n  } else {\n    return climb(b, a, unit) * -1 //reverse it\n  }\n}\n\nexport default diffOne\n","import { beADate, normalize } from '../../fns.js'\nimport waterfall from './waterfall.js'\n\nconst reverseDiff = function (obj) {\n  Object.keys(obj).forEach((k) => {\n    obj[k] *= -1\n  })\n  return obj\n}\n\n// this method counts a total # of each unit, between a, b.\n// '1 month' means 28 days in february\n// '1 year' means 366 days in a leap year\nconst main = function (a, b, unit) {\n  b = beADate(b, a)\n  //reverse values, if necessary\n  let reversed = false\n  if (a.isAfter(b)) {\n    let tmp = a\n    a = b\n    b = tmp\n    reversed = true\n  }\n  //compute them all (i know!)\n  let obj = waterfall(a, b)\n  if (reversed) {\n    obj = reverseDiff(obj)\n  }\n  //return just the requested unit\n  if (unit) {\n    //make sure it's plural-form\n    unit = normalize(unit)\n    if (/s$/.test(unit) !== true) {\n      unit += 's'\n    }\n    if (unit === 'dates') {\n      unit = 'days'\n    }\n    return obj[unit]\n  }\n  return obj\n}\n\nexport default main\n","import diffOne from './one.js'\n\n// don't do anything too fancy here.\n// 2020 - 2019 may be 1 year, or 0 years\n// - '1 year difference' means 366 days during a leap year\nconst fastYear = (a, b) => {\n  let years = b.year() - a.year()\n  // should we decrement it by 1?\n  a = a.year(b.year())\n  if (a.isAfter(b)) {\n    years -= 1\n  }\n  return years\n}\n\n// use a waterfall-method for computing a diff of any 'pre-knowable' units\n// compute years, then compute months, etc..\n// ... then ms-math for any very-small units\nconst diff = function (a, b) {\n  // an hour is always the same # of milliseconds\n  // so these units can be 'pre-calculated'\n  let msDiff = b.epoch - a.epoch\n  let obj = {\n    milliseconds: msDiff,\n    seconds: parseInt(msDiff / 1000, 10)\n  }\n  obj.minutes = parseInt(obj.seconds / 60, 10)\n  obj.hours = parseInt(obj.minutes / 60, 10)\n\n  //do the year\n  let tmp = a.clone()\n  obj.years = fastYear(tmp, b)\n  tmp = a.add(obj.years, 'year')\n\n  //there's always 12 months in a year...\n  obj.months = obj.years * 12\n  tmp = a.add(obj.months, 'month')\n  obj.months += diffOne(tmp, b, 'month')\n\n  // there's always 4 quarters in a year...\n  obj.quarters = obj.years * 4\n  obj.quarters += parseInt((obj.months % 12) / 3, 10)\n\n  // there's always atleast 52 weeks in a year..\n  // (month * 4) isn't as close\n  obj.weeks = obj.years * 52\n  tmp = a.add(obj.weeks, 'week')\n  obj.weeks += diffOne(tmp, b, 'week')\n\n  // there's always atleast 7 days in a week\n  obj.days = obj.weeks * 7\n  tmp = a.add(obj.days, 'day')\n  obj.days += diffOne(tmp, b, 'day')\n\n  return obj\n}\nexport default diff\n","/*\nISO 8601 duration format\n// https://en.wikipedia.org/wiki/ISO_8601#Durations\n\"P3Y6M4DT12H30M5S\"\nP the start of the duration representation.\nY the number of years.\nM the number of months.\nW the number of weeks.\nD the number of days.\nT of the representation.\nH the number of hours.\nM the number of minutes.\nS the number of seconds.\n*/\n\nconst fmt = (n) => Math.abs(n) || 0\n\nconst toISO = function (diff) {\n  let iso = 'P'\n  iso += fmt(diff.years) + 'Y'\n  iso += fmt(diff.months) + 'M'\n  iso += fmt(diff.days) + 'DT'\n  iso += fmt(diff.hours) + 'H'\n  iso += fmt(diff.minutes) + 'M'\n  iso += fmt(diff.seconds) + 'S'\n  return iso\n}\nexport default toISO","//our conceptual 'break-points' for each unit\nconst qualifiers = {\n  months: {\n    almost: 10,\n    over: 4\n  },\n  days: {\n    almost: 25,\n    over: 10\n  },\n  hours: {\n    almost: 20,\n    over: 8\n  },\n  minutes: {\n    almost: 50,\n    over: 20\n  },\n  seconds: {\n    almost: 50,\n    over: 20\n  }\n}\n\n// Expects a plural unit arg\nfunction pluralize(value, unit) {\n  if (value === 1) {\n    unit = unit.slice(0, -1)\n  }\n  return value + ' ' + unit\n}\n\nconst toSoft = function (diff) {\n  let rounded = null\n  let qualified = null\n  let abbreviated = []\n  let englishValues = []\n  //go through each value and create its text-representation\n  Object.keys(diff).forEach((unit, i, units) => {\n    const value = Math.abs(diff[unit])\n    if (value === 0) {\n      return\n    }\n    abbreviated.push(value + unit[0])\n    const englishValue = pluralize(value, unit)\n    englishValues.push(englishValue)\n    if (!rounded) {\n      rounded = qualified = englishValue\n      if (i > 4) {\n        return\n      }\n      //is it a 'almost' something, etc?\n      const nextUnit = units[i + 1]\n      const nextValue = Math.abs(diff[nextUnit])\n      if (nextValue > qualifiers[nextUnit].almost) {\n        rounded = pluralize(value + 1, unit)\n        qualified = 'almost ' + rounded\n      } else if (nextValue > qualifiers[nextUnit].over) {\n        qualified = 'over ' + englishValue\n      }\n    }\n  })\n  return { qualified, rounded, abbreviated, englishValues }\n}\nexport default toSoft","import { beADate } from '../../fns.js'\nimport toISO from './_iso.js'\nimport getDiff from './getDiff.js'\nimport soften from './soften.js'\n//by spencermountain + Shaun Grady\n\n//create the human-readable diff between the two dates\nconst since = (start, end) => {\n  end = beADate(end, start)\n  const diff = getDiff(start, end)\n  const isNow = Object.keys(diff).every((u) => !diff[u])\n  if (isNow === true) {\n    return {\n      diff,\n      rounded: 'now',\n      qualified: 'now',\n      precise: 'now',\n      abbreviated: [],\n      iso: 'P0Y0M0DT0H0M0S',\n      direction: 'present',\n    }\n  }\n  let precise\n  let direction = 'future'\n\n  let { rounded, qualified, englishValues, abbreviated } = soften(diff)\n\n  //make them into a string\n  precise = englishValues.splice(0, 2).join(', ')\n  //handle before/after logic\n  if (start.isAfter(end) === true) {\n    rounded += ' ago'\n    qualified += ' ago'\n    precise += ' ago'\n    direction = 'past'\n  } else {\n    rounded = 'in ' + rounded\n    qualified = 'in ' + qualified\n    precise = 'in ' + precise\n  }\n  // https://en.wikipedia.org/wiki/ISO_8601#Durations\n  // P[n]Y[n]M[n]DT[n]H[n]M[n]S \n  let iso = toISO(diff)\n  return {\n    diff,\n    rounded,\n    qualified,\n    precise,\n    abbreviated,\n    iso,\n    direction,\n  }\n}\n\nexport default since\n","\n//get number of hours/minutes... between the two dates\nfunction getDiff(a, b) {\n  const isBefore = a.isBefore(b)\n  const later = isBefore ? b : a\n  let earlier = isBefore ? a : b\n  earlier = earlier.clone()\n  const diff = {\n    years: 0,\n    months: 0,\n    days: 0,\n    hours: 0,\n    minutes: 0,\n    seconds: 0\n  }\n  Object.keys(diff).forEach((unit) => {\n    if (earlier.isSame(later, unit)) {\n      return\n    }\n    let max = earlier.diff(later, unit)\n    earlier = earlier.add(max, unit)\n    diff[unit] = max\n  })\n  //reverse it, if necessary\n  if (isBefore) {\n    Object.keys(diff).forEach((u) => {\n      if (diff[u] !== 0) {\n        diff[u] *= -1\n      }\n    })\n  }\n  return diff\n}\nexport default getDiff","//https://www.timeanddate.com/calendar/aboutseasons.html\n// Spring - from March 1 to May 31;\n// Summer - from June 1 to August 31;\n// Fall (autumn) - from September 1 to November 30; and,\n// Winter - from December 1 to February 28 (February 29 in a leap year).\nconst north = [\n  ['spring', 2, 1],\n  ['summer', 5, 1],\n  ['fall', 8, 1],\n  ['autumn', 8, 1],\n  ['winter', 11, 1] //dec 1\n];\nconst south = [\n  ['fall', 2, 1],\n  ['autumn', 2, 1],\n  ['winter', 5, 1],\n  ['spring', 8, 1],\n  ['summer', 11, 1] //dec 1\n];\n\nexport default { north, south }","export default [\n  null,\n  [0, 1], //jan 1\n  [3, 1], //apr 1\n  [6, 1], //july 1\n  [9, 1] //oct 1\n]\n","import seasons from '../data/seasons.js'\nimport quarters from '../data/quarters.js'\nimport walkTo from './set/walk.js'\nimport { normalize } from '../fns.js'\n\nconst units = {\n  second: (s) => {\n    walkTo(s, {\n      millisecond: 0\n    })\n    return s\n  },\n  minute: (s) => {\n    walkTo(s, {\n      second: 0,\n      millisecond: 0\n    })\n    return s\n  },\n  quarterhour: (s) => {\n    let minute = s.minutes()\n    if (minute >= 45) {\n      s = s.minutes(45)\n    } else if (minute >= 30) {\n      s = s.minutes(30)\n    } else if (minute >= 15) {\n      s = s.minutes(15)\n    } else {\n      s = s.minutes(0)\n    }\n    walkTo(s, {\n      second: 0,\n      millisecond: 0\n    })\n    return s\n  },\n  hour: (s) => {\n    walkTo(s, {\n      minute: 0,\n      second: 0,\n      millisecond: 0\n    })\n    return s\n  },\n  day: (s) => {\n    walkTo(s, {\n      hour: 0,\n      minute: 0,\n      second: 0,\n      millisecond: 0\n    })\n    return s\n  },\n  week: (s) => {\n    let original = s.clone()\n    s = s.day(s._weekStart) //monday\n    if (s.isAfter(original)) {\n      s = s.subtract(1, 'week')\n    }\n    walkTo(s, {\n      hour: 0,\n      minute: 0,\n      second: 0,\n      millisecond: 0\n    })\n    return s\n  },\n  month: (s) => {\n    walkTo(s, {\n      date: 1,\n      hour: 0,\n      minute: 0,\n      second: 0,\n      millisecond: 0\n    })\n    return s\n  },\n  quarter: (s) => {\n    let q = s.quarter()\n    if (quarters[q]) {\n      walkTo(s, {\n        month: quarters[q][0],\n        date: quarters[q][1],\n        hour: 0,\n        minute: 0,\n        second: 0,\n        millisecond: 0\n      })\n    }\n    return s\n  },\n  season: (s) => {\n    let current = s.season()\n    let hem = 'north'\n    if (s.hemisphere() === 'South') {\n      hem = 'south'\n    }\n    for (let i = 0; i < seasons[hem].length; i++) {\n      if (seasons[hem][i][0] === current) {\n        //winter goes between years\n        let year = s.year()\n        if (current === 'winter' && s.month() < 3) {\n          year -= 1\n        }\n        walkTo(s, {\n          year,\n          month: seasons[hem][i][1],\n          date: seasons[hem][i][2],\n          hour: 0,\n          minute: 0,\n          second: 0,\n          millisecond: 0\n        })\n        return s\n      }\n    }\n    return s\n  },\n  year: (s) => {\n    walkTo(s, {\n      month: 0,\n      date: 1,\n      hour: 0,\n      minute: 0,\n      second: 0,\n      millisecond: 0\n    })\n    return s\n  },\n  decade: (s) => {\n    s = s.startOf('year')\n    let year = s.year()\n    let decade = parseInt(year / 10, 10) * 10\n    s = s.year(decade)\n    return s\n  },\n  century: (s) => {\n    s = s.startOf('year')\n    let year = s.year()\n    // near 0AD goes '-1 | +1'\n    let decade = parseInt(year / 100, 10) * 100\n    s = s.year(decade)\n    return s\n  }\n}\nunits.date = units.day\n\nconst startOf = (a, unit) => {\n  let s = a.clone()\n  unit = normalize(unit)\n  if (units[unit]) {\n    return units[unit](s)\n  }\n  if (unit === 'summer' || unit === 'winter') {\n    s = s.season(unit)\n    return units.season(s)\n  }\n  return s\n}\n\n//piggy-backs off startOf\nconst endOf = (a, unit) => {\n  let s = a.clone()\n  unit = normalize(unit)\n  if (units[unit]) {\n    // go to beginning, go to next one, step back 1ms\n    s = units[unit](s) // startof\n    s = s.add(1, unit)\n    s = s.subtract(1, 'millisecond')\n    return s\n  }\n  return s\n}\nexport {\n  startOf,\n  endOf\n}\n","import findTz from './find.js'\nimport inSummerTime from './summerTime.js'\n\nconst parseDst = dst => {\n  if (!dst) {\n    return []\n  }\n  return dst.split('->')\n}\n\n//iana codes are case-sensitive, technically\nconst titleCase = str => {\n  str = str[0].toUpperCase() + str.substr(1)\n  str = str.replace(/[\\/_-]([a-z])/gi, s => {\n    return s.toUpperCase()\n  })\n  str = str.replace(/_(of|es)_/i, (s) => s.toLowerCase())\n  str = str.replace(/\\/gmt/i, '/GMT')\n  str = str.replace(/\\/Dumontdurville$/i, '/DumontDUrville')\n  str = str.replace(/\\/Mcmurdo$/i, '/McMurdo')\n  str = str.replace(/\\/Port-au-prince$/i, '/Port-au-Prince')\n  return str\n}\n\n//get metadata about this timezone\nconst timezone = s => {\n  let zones = s.timezones\n  let tz = s.tz\n  if (zones.hasOwnProperty(tz) === false) {\n    tz = findTz(s.tz, zones)\n  }\n  if (tz === null) {\n    if (s.silent === false) {\n      console.warn(\"Warn: could not find given or local timezone - '\" + s.tz + \"'\")\n    }\n    return {\n      current: {\n        epochShift: 0\n      }\n    }\n  }\n  let found = zones[tz]\n  let result = {\n    name: titleCase(tz),\n    hasDst: Boolean(found.dst),\n    default_offset: found.offset,\n    //do north-hemisphere version as default (sorry!)\n    hemisphere: found.hem === 's' ? 'South' : 'North',\n    current: {}\n  }\n\n  if (result.hasDst) {\n    let arr = parseDst(found.dst)\n    result.change = {\n      start: arr[0],\n      back: arr[1]\n    }\n  }\n  //find the offsets for summer/winter times\n  //(these variable names are north-centric)\n  let summer = found.offset // (july)\n  let winter = summer // (january) assume it's the same for now\n  if (result.hasDst === true) {\n    if (result.hemisphere === 'North') {\n      winter = summer - 1\n    } else {\n      //southern hemisphere\n      winter = found.offset + 1\n    }\n  }\n\n  //find out which offset to use right now\n  //use 'summer' time july-time\n  if (result.hasDst === false) {\n    result.current.offset = summer\n    result.current.isDST = false\n  } else if (inSummerTime(s.epoch, result.change.start, result.change.back, summer, winter) === true) {\n    result.current.offset = summer\n    result.current.isDST = result.hemisphere === 'North' //dst 'on' in winter in north\n  } else {\n    //use 'winter' january-time\n    result.current.offset = winter\n    result.current.isDST = result.hemisphere === 'South' //dst 'on' in summer in south\n  }\n  return result\n}\nexport default timezone\n","import format from './methods/format/index.js'\nimport unixFmt from './methods/format/unixFmt.js'\nimport progress from './methods/progress.js'\nimport nearest from './methods/nearest.js'\nimport diff from './methods/diff/index.js'\nimport since from './methods/since/index.js'\nimport { startOf as _startOf, endOf as _endOf } from './methods/startOf.js'\nimport every from './methods/every.js'\nimport timezone from './timezone/index.js'\nimport findTz from './timezone/find.js'\nimport handleInput from './input/index.js'\nimport { isLeapYear } from './fns.js'\nimport { short, long } from './data/days.js'\nconst units = [\n  'century',\n  'decade',\n  'year',\n  'month',\n  'date',\n  'day',\n  'hour',\n  'minute',\n  'second',\n  'millisecond'\n]\n\n//the spacetime instance methods (also, the API)\nconst methods = {\n  set: function (input, tz) {\n    let s = this.clone()\n    s = handleInput(s, input, null)\n    if (tz) {\n      this.tz = findTz(tz)\n    }\n    return s\n  },\n  timezone: function () {\n    return timezone(this)\n  },\n  isDST: function () {\n    return timezone(this).current.isDST\n  },\n  hasDST: function () {\n    return timezone(this).hasDst\n  },\n  offset: function () {\n    return timezone(this).current.offset * 60\n  },\n  hemisphere: function () {\n    return timezone(this).hemisphere\n  },\n  format: function (fmt) {\n    return format(this, fmt)\n  },\n  unixFmt: function (fmt) {\n    return unixFmt(this, fmt)\n  },\n  startOf: function (unit) {\n    return _startOf(this, unit)\n  },\n  endOf: function (unit) {\n    return _endOf(this, unit)\n  },\n  leapYear: function () {\n    let year = this.year()\n    return isLeapYear(year)\n  },\n  progress: function (unit) {\n    return progress(this, unit)\n  },\n  nearest: function (unit) {\n    return nearest(this, unit)\n  },\n  diff: function (d, unit) {\n    return diff(this, d, unit)\n  },\n  since: function (d) {\n    if (!d) {\n      d = this.clone().set()\n    }\n    return since(this, d)\n  },\n  next: function (unit) {\n    let s = this.add(1, unit)\n    return s.startOf(unit)\n  },\n  //the start of the previous year/week/century\n  last: function (unit) {\n    let s = this.subtract(1, unit)\n    return s.startOf(unit)\n  },\n  isValid: function () {\n    //null/undefined epochs\n    if (!this.epoch && this.epoch !== 0) {\n      return false\n    }\n    return !isNaN(this.d.getTime())\n  },\n  //travel to this timezone\n  goto: function (tz) {\n    let s = this.clone()\n    s.tz = findTz(tz, s.timezones) //science!\n    return s\n  },\n  //get each week/month/day between a -> b\n  every: function (unit, to) {\n    // allow swapping these params:\n    if (typeof unit === 'object' && typeof to === 'string') {\n      let tmp = to\n      to = unit\n      unit = tmp\n    }\n    return every(this, unit, to)\n  },\n  isAwake: function () {\n    let hour = this.hour()\n    //10pm -> 8am\n    if (hour < 8 || hour > 22) {\n      return false\n    }\n    return true\n  },\n  isAsleep: function () {\n    return !this.isAwake()\n  },\n  daysInMonth: function () {\n    switch (this.month()) {\n      case 0:\n        return 31\n      case 1:\n        return this.leapYear() ? 29 : 28\n      case 2:\n        return 31\n      case 3:\n        return 30\n      case 4:\n        return 31\n      case 5:\n        return 30\n      case 6:\n        return 31\n      case 7:\n        return 31\n      case 8:\n        return 30\n      case 9:\n        return 31\n      case 10:\n        return 30\n      case 11:\n        return 31\n      default:\n        throw new Error('Invalid Month state.')\n    }\n  },\n  //pretty-printing\n  log: function () {\n    console.log('')\n    console.log(format(this, 'nice-short'))\n    return this\n  },\n  logYear: function () {\n    console.log('')\n    console.log(format(this, 'full-short'))\n    return this\n  },\n  json: function () {\n    return units.reduce((h, unit) => {\n      h[unit] = this[unit]()\n      return h\n    }, {})\n  },\n  debug: function () {\n    let tz = this.timezone()\n    let date = this.format('MM') + ' ' + this.format('date-ordinal') + ' ' + this.year()\n    date += '\\n     - ' + this.format('time')\n    console.log('\\n\\n', date + '\\n     - ' + tz.name + ' (' + tz.current.offset + ')')\n    return this\n  },\n  //alias of 'since' but opposite - like moment.js\n  from: function (d) {\n    d = this.clone().set(d)\n    return d.since(this)\n  },\n  fromNow: function () {\n    let d = this.clone().set(Date.now())\n    return d.since(this)\n  },\n  weekStart: function (input) {\n    //accept a number directly\n    if (typeof input === 'number') {\n      this._weekStart = input\n      return this\n    }\n    if (typeof input === 'string') {\n      // accept 'wednesday'\n      input = input.toLowerCase().trim()\n      let num = short().indexOf(input)\n      if (num === -1) {\n        num = long().indexOf(input)\n      }\n      if (num === -1) {\n        num = 1 //go back to default\n      }\n      this._weekStart = num\n    } else {\n      console.warn('Spacetime Error: Cannot understand .weekStart() input:', input)\n    }\n    return this\n  }\n}\n// aliases\nmethods.inDST = methods.isDST\nmethods.round = methods.nearest\nmethods.each = methods.every\nexport default methods\n","import { normalize } from '../fns.js'\n\n//round to either current, or +1 of this unit\nconst nearest = (s, unit) => {\n  //how far have we gone?\n  let prog = s.progress()\n  unit = normalize(unit)\n  //fix camel-case for this one\n  if (unit === 'quarterhour') {\n    unit = 'quarterHour'\n  }\n  if (prog[unit] !== undefined) {\n    // go forward one?\n    if (prog[unit] > 0.5) {\n      s = s.add(1, unit)\n    }\n    // go to start\n    s = s.startOf(unit)\n  } else if (s.silent === false) {\n    console.warn(\"no known unit '\" + unit + \"'\")\n  }\n  return s\n}\nexport default nearest\n","import { normalize } from '../fns.js'\nimport { short, long } from '../data/days.js'\n\n//is it 'wednesday'?\nconst isDay = function (unit) {\n  if (short().find((s) => s === unit)) {\n    return true\n  }\n  if (long().find((s) => s === unit)) {\n    return true\n  }\n  return false\n}\n\n// return a list of the weeks/months/days between a -> b\n// returns spacetime objects in the timezone of the input\nconst every = function (start, unit, end) {\n  if (!unit || !end) {\n    return []\n  }\n  //cleanup unit param\n  unit = normalize(unit)\n  //cleanup to param\n  end = start.clone().set(end)\n  //swap them, if they're backwards\n  if (start.isAfter(end)) {\n    let tmp = start\n    start = end\n    end = tmp\n  }\n\n  //support 'every wednesday'\n  let d = start.clone()\n  if (isDay(unit)) {\n    d = d.next(unit)\n    unit = 'week'\n  } else {\n    let first = d.startOf(unit)\n    if (first.isBefore(start)) {\n      d = d.next(unit)\n    }\n  }\n  //okay, actually start doing it\n  let result = []\n  while (d.isBefore(end)) {\n    result.push(d)\n    d = d.add(1, unit)\n  }\n  return result\n}\nexport default every\n","// javascript setX methods like setDate() can't be used because of the local bias\n//these methods wrap around them.\nimport ms from '../../data/milliseconds.js'\nimport { mapping } from '../../data/months.js'\nimport monthLength from '../../data/monthLengths.js'\nimport walkTo from './walk.js'\nimport { isLeapYear } from '../../fns.js'\n\nconst validate = (n) => {\n  //handle number as a string\n  if (typeof n === 'string') {\n    n = parseInt(n, 10)\n  }\n  return n\n}\n\nconst order = ['year', 'month', 'date', 'hour', 'minute', 'second', 'millisecond']\n\n//reduce hostile micro-changes when moving dates by millisecond\nconst confirm = (s, tmp, unit) => {\n  let n = order.indexOf(unit)\n  let arr = order.slice(n, order.length)\n  for (let i = 0; i < arr.length; i++) {\n    let want = tmp[arr[i]]()\n    s[arr[i]](want)\n  }\n  return s\n}\n\n// allow specifying setter direction\nconst fwdBkwd = function (s, old, goFwd, unit) {\n  if (goFwd === true && s.isBefore(old)) {\n    s = s.add(1, unit)\n  } else if (goFwd === false && s.isAfter(old)) {\n    s = s.minus(1, unit)\n  }\n  return s\n}\n\nconst milliseconds = function (s, n) {\n  n = validate(n)\n  let current = s.millisecond()\n  let diff = current - n //milliseconds to shift by\n  return s.epoch - diff\n}\n\nconst seconds = function (s, n, goFwd) {\n  n = validate(n)\n  let old = s.clone()\n  let diff = s.second() - n\n  let shift = diff * ms.second\n  s.epoch = s.epoch - shift\n  s = fwdBkwd(s, old, goFwd, 'minute') // specify direction\n  return s.epoch\n}\n\nconst minutes = function (s, n, goFwd) {\n  n = validate(n)\n  let old = s.clone()\n  let diff = s.minute() - n\n  let shift = diff * ms.minute\n  s.epoch -= shift\n  confirm(s, old, 'second')\n  s = fwdBkwd(s, old, goFwd, 'hour') // specify direction\n  return s.epoch\n}\n\nconst hours = function (s, n, goFwd) {\n  n = validate(n)\n  if (n >= 24) {\n    n = 24\n  } else if (n < 0) {\n    n = 0\n  }\n  let old = s.clone()\n  let diff = s.hour() - n\n  let shift = diff * ms.hour\n  s.epoch -= shift\n  // oops, did we change the day?\n  if (s.date() !== old.date()) {\n    s = old.clone()\n    if (diff > 1) {\n      diff -= 1\n    }\n    if (diff < 1) {\n      diff += 1\n    }\n    shift = diff * ms.hour\n    s.epoch -= shift\n  }\n  walkTo(s, {\n    hour: n\n  })\n  confirm(s, old, 'minute')\n  s = fwdBkwd(s, old, goFwd, 'day') // specify direction\n  return s.epoch\n}\n\nconst time = function (s, str, goFwd) {\n  let m = str.match(/([0-9]{1,2})[:h]([0-9]{1,2})(:[0-9]{1,2})? ?(am|pm)?/)\n  if (!m) {\n    //fallback to support just '2am'\n    m = str.match(/([0-9]{1,2}) ?(am|pm)/)\n    if (!m) {\n      return s.epoch\n    }\n    m.splice(2, 0, '0') //add implicit 0 minutes\n    m.splice(3, 0, '') //add implicit seconds\n  }\n  let h24 = false\n  let hour = parseInt(m[1], 10)\n  let minute = parseInt(m[2], 10)\n  if (minute >= 60) {\n    minute = 59\n  }\n  if (hour > 12) {\n    h24 = true\n  }\n  //make the hour into proper 24h time\n  if (h24 === false) {\n    if (m[4] === 'am' && hour === 12) {\n      //12am is midnight\n      hour = 0\n    }\n    if (m[4] === 'pm' && hour < 12) {\n      //12pm is noon\n      hour += 12\n    }\n  }\n  // handle seconds\n  m[3] = m[3] || ''\n  m[3] = m[3].replace(/:/, '')\n  let sec = parseInt(m[3], 10) || 0\n  let old = s.clone()\n  s = s.hour(hour)\n  s = s.minute(minute)\n  s = s.second(sec)\n  s = s.millisecond(0)\n  s = fwdBkwd(s, old, goFwd, 'day') // specify direction\n  return s.epoch\n}\n\nconst date = function (s, n, goFwd) {\n  n = validate(n)\n  //avoid setting february 31st\n  if (n > 28) {\n    let month = s.month()\n    let max = monthLength[month]\n    // support leap day in february\n    if (month === 1 && n === 29 && isLeapYear(s.year())) {\n      max = 29\n    }\n    if (n > max) {\n      n = max\n    }\n  }\n  //avoid setting < 0\n  if (n <= 0) {\n    n = 1\n  }\n  let old = s.clone()\n  walkTo(s, {\n    date: n\n  })\n  s = fwdBkwd(s, old, goFwd, 'month') // specify direction\n  return s.epoch\n}\n\nconst month = function (s, n, goFwd) {\n  if (typeof n === 'string') {\n    if (n === 'sept') {\n      n = 'sep'\n    }\n    n = mapping()[n.toLowerCase()]\n  }\n  n = validate(n)\n  //don't go past december\n  if (n >= 12) {\n    n = 11\n  }\n  if (n <= 0) {\n    n = 0\n  }\n\n  let d = s.date()\n  //there's no 30th of february, etc.\n  if (d > monthLength[n]) {\n    //make it as close as we can..\n    d = monthLength[n]\n  }\n  let old = s.clone()\n  walkTo(s, {\n    month: n,\n    d\n  })\n  s = fwdBkwd(s, old, goFwd, 'year') // specify direction\n  return s.epoch\n}\n\nconst year = function (s, n) {\n  // support '97\n  if (typeof n === 'string' && /^'[0-9]{2}$/.test(n)) {\n    n = n.replace(/'/, '').trim()\n    n = Number(n)\n    // '89 is 1989\n    if (n > 30) {\n      //change this in 10y\n      n = 1900 + n\n    } else {\n      // '12 is 2012\n      n = 2000 + n\n    }\n  }\n  n = validate(n)\n  walkTo(s, {\n    year: n\n  })\n  return s.epoch\n}\n\nconst week = function (s, n, goFwd) {\n  let old = s.clone()\n  n = validate(n)\n  s = s.month(0)\n  s = s.date(1)\n  s = s.day('monday')\n  //first week starts first Thurs in Jan\n  // so mon dec 28th is 1st week\n  // so mon dec 29th is not the week\n  if (s.monthName() === 'december' && s.date() >= 28) {\n    s = s.add(1, 'week')\n  }\n  n -= 1 //1-based\n  s = s.add(n, 'weeks')\n  s = fwdBkwd(s, old, goFwd, 'year') // specify direction\n  return s.epoch\n}\n\nconst dayOfYear = function (s, n, goFwd) {\n  n = validate(n)\n  let old = s.clone()\n  n -= 1 //days are 1-based\n  if (n <= 0) {\n    n = 0\n  } else if (n >= 365) {\n    if (isLeapYear(s.year())) {\n      n = 365\n    } else {\n      n = 364\n    }\n  }\n  s = s.startOf('year')\n  s = s.add(n, 'day')\n  confirm(s, old, 'hour')\n  s = fwdBkwd(s, old, goFwd, 'year') // specify direction\n  return s.epoch\n}\n\nexport {\n  milliseconds,\n  seconds,\n  minutes,\n  hours,\n  time,\n  date,\n  month,\n  year,\n  week,\n  dayOfYear,\n}\n","let morning = 'am'\nlet evening = 'pm'\n\nexport function am() { return morning }\nexport function pm() { return evening }\nexport function set(i18n) {\n    morning = i18n.am || morning\n    evening = i18n.pm || evening\n}","import { milliseconds, seconds, minutes, hours, time as _time } from '../set/set.js'\nimport { am, pm } from '../../data/ampm.js'\nimport { zeroPad } from '../../fns.js'\n\nconst methods = {\n  millisecond: function (num) {\n    if (num !== undefined) {\n      let s = this.clone()\n      s.epoch = milliseconds(s, num)\n      return s\n    }\n    return this.d.getMilliseconds()\n  },\n  second: function (num, goFwd) {\n    if (num !== undefined) {\n      let s = this.clone()\n      s.epoch = seconds(s, num, goFwd)\n      return s\n    }\n    return this.d.getSeconds()\n  },\n  minute: function (num, goFwd) {\n    if (num !== undefined) {\n      let s = this.clone()\n      s.epoch = minutes(s, num, goFwd)\n      return s\n    }\n    return this.d.getMinutes()\n  },\n  hour: function (num, goFwd) {\n    let d = this.d\n    if (num !== undefined) {\n      let s = this.clone()\n      s.epoch = hours(s, num, goFwd)\n      return s\n    }\n    return d.getHours()\n  },\n\n  //'3:30' is 3.5\n  hourFloat: function (num, goFwd) {\n    if (num !== undefined) {\n      let s = this.clone()\n      let minute = num % 1\n      minute = minute * 60\n      let hour = parseInt(num, 10)\n      s.epoch = hours(s, hour, goFwd)\n      s.epoch = minutes(s, minute, goFwd)\n      return s\n    }\n    let d = this.d\n    let hour = d.getHours()\n    let minute = d.getMinutes()\n    minute = minute / 60\n    return hour + minute\n  },\n\n  // hour in 12h format\n  hour12: function (str, goFwd) {\n    let d = this.d\n    if (str !== undefined) {\n      let s = this.clone()\n      str = '' + str\n      let m = str.match(/^([0-9]+)(am|pm)$/)\n      if (m) {\n        let hour = parseInt(m[1], 10)\n        if (m[2] === 'pm') {\n          hour += 12\n        }\n        s.epoch = hours(s, hour, goFwd)\n      }\n      return s\n    }\n    //get the hour\n    let hour12 = d.getHours()\n    if (hour12 > 12) {\n      hour12 = hour12 - 12\n    }\n    if (hour12 === 0) {\n      hour12 = 12\n    }\n    return hour12\n  },\n\n  //some ambiguity here with 12/24h\n  time: function (str, goFwd) {\n    if (str !== undefined) {\n      let s = this.clone()\n      str = str.toLowerCase().trim()\n      s.epoch = _time(s, str, goFwd)\n      return s\n    }\n    return `${this.h12()}:${zeroPad(this.minute())}${this.ampm()}`\n  },\n\n  // either 'am' or 'pm'\n  ampm: function (input, goFwd) {\n    // let which = 'am'\n    let which = am()\n    let hour = this.hour()\n    if (hour >= 12) {\n      // which = 'pm'\n      which = pm()\n    }\n    if (typeof input !== 'string') {\n      return which\n    }\n    //okay, we're doing a setter\n    let s = this.clone()\n    input = input.toLowerCase().trim()\n    //ampm should never change the day\n    // - so use `.hour(n)` instead of `.minus(12,'hour')`\n    if (hour >= 12 && input === 'am') {\n      //noon is 12pm\n      hour -= 12\n      return s.hour(hour, goFwd)\n    }\n    if (hour < 12 && input === 'pm') {\n      hour += 12\n      return s.hour(hour, goFwd)\n    }\n    return s\n  },\n\n  //some hard-coded times of day, like 'noon'\n  dayTime: function (str, goFwd) {\n    if (str !== undefined) {\n      const times = {\n        morning: '7:00',\n        breakfast: '7:00',\n        noon: '12:00',\n        lunch: '12:00',\n        afternoon: '14:00',\n        evening: '18:00',\n        dinner: '18:00',\n        night: '23:00',\n        midnight: '00:00'\n      }\n      let s = this.clone()\n      str = str || ''\n      str = str.toLowerCase()\n      if (times.hasOwnProperty(str) === true) {\n        s = s.time(times[str], goFwd)\n      }\n      return s\n    }\n    let h = this.hour()\n    if (h < 6) {\n      return 'night'\n    }\n    if (h < 12) {\n      //until noon\n      return 'morning'\n    }\n    if (h < 17) {\n      //until 5pm\n      return 'afternoon'\n    }\n    if (h < 22) {\n      //until 10pm\n      return 'evening'\n    }\n    return 'night'\n  },\n\n  //parse a proper iso string\n  iso: function (num) {\n    if (num !== undefined) {\n      return this.set(num)\n    }\n    return this.format('iso')\n  }\n}\nexport default methods\n","import { date as _date } from '../set/set.js'\nimport { aliases, short, long } from '../../data/days.js'\nimport walkTo from '../set/walk.js'\n\nconst methods = {\n  // # day in the month\n  date: function (num, goFwd) {\n    if (num !== undefined) {\n      let s = this.clone()\n      num = parseInt(num, 10)\n      if (num) {\n        s.epoch = _date(s, num, goFwd)\n      }\n      return s\n    }\n    return this.d.getDate()\n  },\n\n  //like 'wednesday' (hard!)\n  day: function (input, goFwd) {\n    if (input === undefined) {\n      return this.d.getDay()\n    }\n    let original = this.clone()\n    let want = input\n    // accept 'wednesday'\n    if (typeof input === 'string') {\n      input = input.toLowerCase()\n      if (aliases.hasOwnProperty(input)) {\n        want = aliases[input]\n      } else {\n        want = short().indexOf(input)\n        if (want === -1) {\n          want = long().indexOf(input)\n        }\n      }\n    }\n    //move approx\n    let day = this.d.getDay()\n    let diff = day - want\n    if (goFwd === true && diff > 0) {\n      diff = diff - 7\n    }\n    if (goFwd === false && diff < 0) {\n      diff = diff + 7\n    }\n    let s = this.subtract(diff, 'days')\n    //tighten it back up\n    walkTo(s, {\n      hour: original.hour(),\n      minute: original.minute(),\n      second: original.second()\n    })\n    return s\n  },\n\n  //these are helpful name-wrappers\n  dayName: function (input, goFwd) {\n    if (input === undefined) {\n      return long()[this.day()]\n    }\n    let s = this.clone()\n    s = s.day(input, goFwd)\n    return s\n  }\n}\nexport default methods\n","import { dayOfYear as _dayOfYear, week as _week, month as _month, year as _year } from '../set/set.js'\nimport { long } from '../../data/months.js'\nimport quarters from '../../data/quarters.js'\nimport seasons from '../../data/seasons.js'\nimport ms from '../../data/milliseconds.js'\n\nconst clearMinutes = (s) => {\n  s = s.minute(0)\n  s = s.second(0)\n  s = s.millisecond(1)\n  return s\n}\n\nconst methods = {\n  // day 0-366\n  dayOfYear: function (num, goFwd) {\n    if (num !== undefined) {\n      let s = this.clone()\n      s.epoch = _dayOfYear(s, num, goFwd)\n      return s\n    }\n    //days since newyears - jan 1st is 1, jan 2nd is 2...\n    let sum = 0\n    let month = this.d.getMonth()\n    let tmp\n    //count the num days in each month\n    for (let i = 1; i <= month; i++) {\n      tmp = new Date()\n      tmp.setDate(1)\n      tmp.setFullYear(this.d.getFullYear()) //the year matters, because leap-years\n      tmp.setHours(1)\n      tmp.setMinutes(1)\n      tmp.setMonth(i)\n      tmp.setHours(-2) //the last day of the month\n      sum += tmp.getDate()\n    }\n    return sum + this.d.getDate()\n  },\n\n  //since the start of the year\n  week: function (num, goFwd) {\n    // week-setter\n    if (num !== undefined) {\n      let s = this.clone()\n      s.epoch = _week(this, num, goFwd)\n      s = clearMinutes(s)\n      return s\n    }\n    //find-out which week it is\n    let tmp = this.clone()\n    tmp = tmp.month(0)\n    tmp = tmp.date(1)\n    tmp = clearMinutes(tmp)\n    tmp = tmp.day('monday')\n    //don't go into last-year\n    if (tmp.month() === 11 && tmp.date() >= 25) {\n      tmp = tmp.add(1, 'week')\n    }\n\n    // is first monday the 1st?\n    let toAdd = 1\n    if (tmp.date() === 1) {\n      toAdd = 0\n    }\n    tmp = tmp.minus(1, 'second')\n    const thisOne = this.epoch\n    //if the week technically hasn't started yet\n    if (tmp.epoch > thisOne) {\n      return 1\n    }\n    //speed it up, if we can\n    let i = 0\n    let skipWeeks = this.month() * 4\n    // console.log(ms.week+ \" \"+ skipWeeks);\n    tmp.epoch += ms.week * skipWeeks\n    i += skipWeeks\n    for (; i <= 52; i++) {\n      if (tmp.epoch > thisOne) {\n        return i + toAdd\n      }\n      tmp = tmp.add(1, 'week')\n    }\n    return 52\n  },\n  //either name or number\n  month: function (input, goFwd) {\n    if (input !== undefined) {\n      let s = this.clone()\n      s.epoch = _month(s, input, goFwd)\n      return s\n    }\n    return this.d.getMonth()\n  },\n  //'january'\n  monthName: function (input, goFwd) {\n    if (input !== undefined) {\n      let s = this.clone()\n      s = s.month(input, goFwd)\n      return s\n    }\n    return long()[this.month()]\n  },\n\n  //q1, q2, q3, q4\n  quarter: function (num, goFwd) {\n    if (num !== undefined) {\n      if (typeof num === 'string') {\n        num = num.replace(/^q/i, '')\n        num = parseInt(num, 10)\n      }\n      if (quarters[num]) {\n        let s = this.clone()\n        let month = quarters[num][0]\n        s = s.month(month, goFwd)\n        s = s.date(1, goFwd)\n        s = s.startOf('day')\n        return s\n      }\n    }\n    let month = this.d.getMonth()\n    for (let i = 1; i < quarters.length; i++) {\n      if (month < quarters[i][0]) {\n        return i - 1\n      }\n    }\n    return 4\n  },\n\n  //spring, summer, winter, fall\n  season: function (input, goFwd) {\n    let hem = 'north'\n    if (this.hemisphere() === 'South') {\n      hem = 'south'\n    }\n    if (input !== undefined) {    // setter\n      let s = this.clone()\n      for (let i = 0; i < seasons[hem].length; i++) {\n        if (input === seasons[hem][i][0]) {\n          s = s.month(seasons[hem][i][1], goFwd)\n          s = s.date(1)\n          s = s.startOf('day')\n        }\n      }\n      return s\n    }\n    let month = this.d.getMonth()\n    for (let i = 0; i < seasons[hem].length - 1; i++) {\n      if (month >= seasons[hem][i][1] && month < seasons[hem][i + 1][1]) {\n        return seasons[hem][i][0]\n      }\n    }\n    return hem === 'north' ? 'winter' : 'summer'\n  },\n\n  //the year number\n  year: function (num) {\n    if (num !== undefined) {\n      let s = this.clone()\n      s.epoch = _year(s, num)\n      return s\n    }\n    return this.d.getFullYear()\n  },\n\n  //bc/ad years\n  era: function (str) {\n    if (str !== undefined) {\n      let s = this.clone()\n      str = str.toLowerCase()\n      //TODO: there is no year-0AD i think. may have off-by-1 error here\n      let year = s.d.getFullYear()\n      //make '1992' into 1992bc..\n      if (str === 'bc' && year > 0) {\n        s.epoch = _year(s, year * -1)\n      }\n      //make '1992bc' into '1992'\n      if (str === 'ad' && year < 0) {\n        s.epoch = _year(s, year * -1)\n      }\n      return s\n    }\n    if (this.d.getFullYear() < 0) {\n      return 'BC'\n    }\n    return 'AD'\n  },\n\n  // 2019 -> 2010\n  decade: function (input) {\n    if (input !== undefined) {\n      input = String(input)\n      input = input.replace(/([0-9])'?s$/, '$1') //1950's\n      input = input.replace(/([0-9])(th|rd|st|nd)/, '$1') //fix ordinals\n      if (!input) {\n        console.warn('Spacetime: Invalid decade input')\n        return this\n      }\n      // assume 20th century?? for '70s'.\n      if (input.length === 2 && /[0-9][0-9]/.test(input)) {\n        input = '19' + input\n      }\n      let year = Number(input)\n      if (isNaN(year)) {\n        return this\n      }\n      // round it down to the decade\n      year = Math.floor(year / 10) * 10\n      return this.year(year) //.startOf('decade')\n    }\n    return this.startOf('decade').year()\n  },\n  // 1950 -> 19+1\n  century: function (input) {\n    if (input !== undefined) {\n      if (typeof input === 'string') {\n        input = input.replace(/([0-9])(th|rd|st|nd)/, '$1') //fix ordinals\n        input = input.replace(/([0-9]+) ?(b\\.?c\\.?|a\\.?d\\.?)/i, (a, b, c) => {\n          if (c.match(/b\\.?c\\.?/i)) {\n            b = '-' + b\n          }\n          return b\n        })\n        input = input.replace(/c$/, '') //20thC\n      }\n      let year = Number(input)\n      if (isNaN(input)) {\n        console.warn('Spacetime: Invalid century input')\n        return this\n      }\n      // there is no century 0\n      if (year === 0) {\n        year = 1\n      }\n      if (year >= 0) {\n        year = (year - 1) * 100\n      } else {\n        year = (year + 1) * 100\n      }\n      return this.year(year)\n    }\n    // century getter\n    let num = this.startOf('century').year()\n    num = Math.floor(num / 100)\n    if (num < 0) {\n      return num - 1\n    }\n    return num + 1\n  },\n  // 2019 -> 2+1\n  millenium: function (input) {\n    if (input !== undefined) {\n      if (typeof input === 'string') {\n        input = input.replace(/([0-9])(th|rd|st|nd)/, '$1') //fix ordinals\n        input = Number(input)\n        if (isNaN(input)) {\n          console.warn('Spacetime: Invalid millenium input')\n          return this\n        }\n      }\n      if (input > 0) {\n        input -= 1\n      }\n      let year = input * 1000\n      // there is no year 0\n      if (year === 0) {\n        year = 1\n      }\n      return this.year(year)\n    }\n    // get the current millenium\n    let num = Math.floor(this.year() / 1000)\n    if (num >= 0) {\n      num += 1\n    }\n    return num\n  }\n}\nexport default methods\n","import timeFns from './01-time.js'\nimport dateFns from './02-date.js'\nimport yearFns from './03-year.js'\n\nconst methods = Object.assign({}, timeFns, dateFns, yearFns)\n\n//aliases\nmethods.milliseconds = methods.millisecond\nmethods.seconds = methods.second\nmethods.minutes = methods.minute\nmethods.hours = methods.hour\nmethods.hour24 = methods.hour\nmethods.h12 = methods.hour12\nmethods.h24 = methods.hour24\nmethods.days = methods.day\n\nconst addMethods = Space => {\n  //hook the methods into prototype\n  Object.keys(methods).forEach(k => {\n    Space.prototype[k] = methods[k]\n  })\n}\n\nexport default addMethods\n","import monthLength from '../../data/monthLengths.js'\nimport { isLeapYear } from '../../fns.js'\n\nconst getMonthLength = function (month, year) {\n  if (month === 1 && isLeapYear(year)) {\n    return 29\n  }\n  return monthLength[month]\n}\n\n//month is the one thing we 'model/compute'\n//- because ms-shifting can be off by enough\nconst rollMonth = (want, old) => {\n  //increment year\n  if (want.month > 0) {\n    let years = parseInt(want.month / 12, 10)\n    want.year = old.year() + years\n    want.month = want.month % 12\n  } else if (want.month < 0) {\n    let m = Math.abs(want.month)\n    let years = parseInt(m / 12, 10)\n    if (m % 12 !== 0) {\n      years += 1\n    }\n    want.year = old.year() - years\n    //ignore extras\n    want.month = want.month % 12\n    want.month = want.month + 12\n    if (want.month === 12) {\n      want.month = 0\n    }\n  }\n  return want\n}\n\n// briefly support day=-2 (this does not need to be perfect.)\nconst rollDaysDown = (want, old, sum) => {\n  want.year = old.year()\n  want.month = old.month()\n  let date = old.date()\n  want.date = date - Math.abs(sum)\n  while (want.date < 1) {\n    want.month -= 1\n    if (want.month < 0) {\n      want.month = 11\n      want.year -= 1\n    }\n    let max = getMonthLength(want.month, want.year)\n    want.date += max\n  }\n  return want\n}\n\n// briefly support day=33 (this does not need to be perfect.)\nconst rollDaysUp = (want, old, sum) => {\n  let year = old.year()\n  let month = old.month()\n  let max = getMonthLength(month, year)\n  while (sum > max) {\n    sum -= max\n    month += 1\n    if (month >= 12) {\n      month -= 12\n      year += 1\n    }\n    max = getMonthLength(month, year)\n  }\n  want.month = month\n  want.date = sum\n  return want\n}\n\nexport const months = rollMonth\nexport const days = rollDaysUp\nexport const daysBack = rollDaysDown\n","import walkTo from './set/walk.js'\nimport ms from '../data/milliseconds.js'\nimport monthLength from '../data/monthLengths.js'\nimport { months, daysBack, days } from './set/_model.js'\nimport { normalize } from '../fns.js'\n// this logic is a bit of a mess,\n// but briefly:\n// millisecond-math, and some post-processing covers most-things\n// we 'model' the calendar here only a little bit\n// and that usually works-out...\n\nconst order = ['millisecond', 'second', 'minute', 'hour', 'date', 'month']\nlet keep = {\n  second: order.slice(0, 1),\n  minute: order.slice(0, 2),\n  quarterhour: order.slice(0, 2),\n  hour: order.slice(0, 3),\n  date: order.slice(0, 4),\n  month: order.slice(0, 4),\n  quarter: order.slice(0, 4),\n  season: order.slice(0, 4),\n  year: order,\n  decade: order,\n  century: order\n}\nkeep.week = keep.hour\nkeep.season = keep.date\nkeep.quarter = keep.date\n\n// Units need to be dst adjuested\nconst dstAwareUnits = {\n  year: true,\n  quarter: true,\n  season: true,\n  month: true,\n  week: true,\n  date: true\n}\n\nconst keepDate = {\n  month: true,\n  quarter: true,\n  season: true,\n  year: true\n}\n\nconst addMethods = (SpaceTime) => {\n  SpaceTime.prototype.add = function (num, unit) {\n    let s = this.clone()\n\n    if (!unit || num === 0) {\n      return s //don't bother\n    }\n    let old = this.clone()\n    unit = normalize(unit)\n    if (unit === 'millisecond') {\n      s.epoch += num\n      return s\n    }\n    // support 'fortnight' alias\n    if (unit === 'fortnight') {\n      num *= 2\n      unit = 'week'\n    }\n    //move forward by the estimated milliseconds (rough)\n    if (ms[unit]) {\n      s.epoch += ms[unit] * num\n    } else if (unit === 'week' || unit === 'weekend') {\n      s.epoch += ms.day * (num * 7)\n    } else if (unit === 'quarter' || unit === 'season') {\n      s.epoch += ms.month * (num * 3)\n    } else if (unit === 'quarterhour') {\n      s.epoch += ms.minute * 15 * num\n    }\n    //now ensure our milliseconds/etc are in-line\n    let want = {}\n    if (keep[unit]) {\n      keep[unit].forEach((u) => {\n        want[u] = old[u]()\n      })\n    }\n\n    if (dstAwareUnits[unit]) {\n      const diff = old.timezone().current.offset - s.timezone().current.offset\n      s.epoch += diff * 3600 * 1000\n    }\n\n    //ensure month/year has ticked-over\n    if (unit === 'month') {\n      want.month = old.month() + num\n      //month is the one unit we 'model' directly\n      want = months(want, old)\n    }\n    //support coercing a week, too\n    if (unit === 'week') {\n      let sum = old.date() + num * 7\n      if (sum <= 28 && sum > 1) {\n        want.date = sum\n      }\n    }\n    if (unit === 'weekend' && s.dayName() !== 'saturday') {\n      s = s.day('saturday', true) //ensure it's saturday\n    }\n    //support 25-hour day-changes on dst-changes\n    else if (unit === 'date') {\n      if (num < 0) {\n        want = daysBack(want, old, num)\n      } else {\n        //specify a naive date number, if it's easy to do...\n        let sum = old.date() + num\n        // ok, model this one too\n        want = days(want, old, sum)\n      }\n      //manually punt it if we haven't moved at all..\n      if (num !== 0 && old.isSame(s, 'day')) {\n        want.date = old.date() + num\n      }\n    }\n    // ensure a quarter is 3 months over\n    else if (unit === 'quarter') {\n      want.month = old.month() + num * 3\n      want.year = old.year()\n      // handle rollover\n      if (want.month < 0) {\n        let years = Math.floor(want.month / 12)\n        let remainder = want.month + Math.abs(years) * 12\n        want.month = remainder\n        want.year += years\n      } else if (want.month >= 12) {\n        let years = Math.floor(want.month / 12)\n        want.month = want.month % 12\n        want.year += years\n      }\n      want.date = old.date()\n    }\n    //ensure year has changed (leap-years)\n    else if (unit === 'year') {\n      let wantYear = old.year() + num\n      let haveYear = s.year()\n      if (haveYear < wantYear) {\n        let toAdd = Math.floor(num / 4) || 1 //approx num of leap-days\n        s.epoch += Math.abs(ms.day * toAdd)\n      } else if (haveYear > wantYear) {\n        let toAdd = Math.floor(num / 4) || 1 //approx num of leap-days\n        s.epoch += ms.day * toAdd\n      }\n    }\n    //these are easier\n    else if (unit === 'decade') {\n      want.year = s.year() + 10\n    } else if (unit === 'century') {\n      want.year = s.year() + 100\n    }\n    //keep current date, unless the month doesn't have it.\n    if (keepDate[unit]) {\n      let max = monthLength[want.month]\n      want.date = old.date()\n      if (want.date > max) {\n        want.date = max\n      }\n    }\n    if (Object.keys(want).length > 1) {\n      walkTo(s, want)\n    }\n    return s\n  }\n\n  //subtract is only add *-1\n  SpaceTime.prototype.subtract = function (num, unit) {\n    let s = this.clone()\n    return s.add(num * -1, unit)\n  }\n  //add aliases\n  SpaceTime.prototype.minus = SpaceTime.prototype.subtract\n  SpaceTime.prototype.plus = SpaceTime.prototype.add\n}\n\nexport default addMethods\n","//make a string, for easy comparison between dates\nconst print = {\n  millisecond: (s) => {\n    return s.epoch\n  },\n  second: (s) => {\n    return [s.year(), s.month(), s.date(), s.hour(), s.minute(), s.second()].join('-')\n  },\n  minute: (s) => {\n    return [s.year(), s.month(), s.date(), s.hour(), s.minute()].join('-')\n  },\n  hour: (s) => {\n    return [s.year(), s.month(), s.date(), s.hour()].join('-')\n  },\n  day: (s) => {\n    return [s.year(), s.month(), s.date()].join('-')\n  },\n  week: (s) => {\n    return [s.year(), s.week()].join('-')\n  },\n  month: (s) => {\n    return [s.year(), s.month()].join('-')\n  },\n  quarter: (s) => {\n    return [s.year(), s.quarter()].join('-')\n  },\n  year: (s) => {\n    return s.year()\n  }\n}\nprint.date = print.day\n\nconst addMethods = (SpaceTime) => {\n  SpaceTime.prototype.isSame = function (b, unit, tzAware = true) {\n    let a = this\n    if (!unit) {\n      return null\n    }\n    // support swapped params\n    if (typeof b === 'string' && typeof unit === 'object') {\n      let tmp = b\n      b = unit\n      unit = tmp\n    }\n    if (typeof b === 'string' || typeof b === 'number') {\n      b = new SpaceTime(b, this.timezone.name)\n    }\n    //support 'seconds' aswell as 'second'\n    unit = unit.replace(/s$/, '')\n\n    // make them the same timezone for proper comparison\n    if (tzAware === true && a.tz !== b.tz) {\n      b = b.clone()\n      b.tz = a.tz\n    }\n    if (print[unit]) {\n      return print[unit](a) === print[unit](b)\n    }\n    return null\n  }\n}\n\nexport default addMethods\n","import quickOffset from './timezone/quick.js'\nimport findTz from './timezone/find.js'\nimport handleInput from './input/index.js'\nimport methods from './methods.js'\nimport zones from '../zonefile/unpack.js'\nimport queryFns from './methods/query/index.js'\nimport addFns from './methods/add.js'\nimport sameFns from './methods/same.js'\nimport compareFns from './methods/compare.js'\nimport i18nFns from './methods/i18n.js'\n\nlet timezones = zones\n// fake timezone-support, for fakers (es5 class)\nconst SpaceTime = function (input, tz, options = {}) {\n  // the holy moment\n  this.epoch = null\n  // the shift for the given timezone\n  this.tz = findTz(tz, timezones)\n  // whether to output warnings to console\n  this.silent = typeof options.silent !== 'undefined' ? options.silent : true\n  // favour british interpretation of 02/02/2018, etc\n  this.british = options.dmy || options.british\n\n  // does the week start on sunday, or monday:\n  this._weekStart = 1 // default to monday\n  if (options.weekStart !== undefined) {\n    this._weekStart = options.weekStart\n  }\n  // the reference today date object, (for testing)\n  this._today = {}\n  if (options.today !== undefined) {\n    this._today = options.today\n  }\n  // dunno if this is a good idea, or not\n  // Object.defineProperty(this, 'parsers', {\n  //   enumerable: false,\n  //   writable: true,\n  //   value: parsers\n  // })\n  // add getter/setters\n  Object.defineProperty(this, 'd', {\n    // return a js date object\n    get: function () {\n      let offset = quickOffset(this)\n      // every computer is somewhere- get this computer's built-in offset\n      let bias = new Date(this.epoch).getTimezoneOffset() || 0\n      // movement\n      let shift = bias + offset * 60 //in minutes\n      shift = shift * 60 * 1000 //in ms\n      // remove this computer's offset\n      let epoch = this.epoch + shift\n      let d = new Date(epoch)\n      return d\n    }\n  })\n  // add this data on the object, to allow adding new timezones\n  Object.defineProperty(this, 'timezones', {\n    get: () => timezones,\n    set: (obj) => {\n      timezones = obj\n      return obj\n    }\n  })\n  // parse the various formats\n  let tmp = handleInput(this, input)\n  this.epoch = tmp.epoch\n}\n\n// (add instance methods to prototype)\nObject.keys(methods).forEach((k) => {\n  SpaceTime.prototype[k] = methods[k]\n})\n\n// ¯\\_(ツ)_/¯\nSpaceTime.prototype.clone = function () {\n  return new SpaceTime(this.epoch, this.tz, {\n    silent: this.silent,\n    weekStart: this._weekStart,\n    today: this._today,\n    parsers: this.parsers\n  })\n}\n\n/**\n * @deprecated use toNativeDate()\n * @returns native date object at the same epoch\n */\nSpaceTime.prototype.toLocalDate = function () {\n  return this.toNativeDate()\n}\n\n/**\n * @returns native date object at the same epoch\n */\nSpaceTime.prototype.toNativeDate = function () {\n  return new Date(this.epoch)\n}\n\n// append more methods\nqueryFns(SpaceTime)\naddFns(SpaceTime)\nsameFns(SpaceTime)\ncompareFns(SpaceTime)\ni18nFns(SpaceTime)\n\nexport default SpaceTime\n","import isSummer from './summerTime.js'\n\n// this method avoids having to do a full dst-calculation on every operation\n// it reproduces some things in ./index.js, but speeds up spacetime considerably\nconst quickOffset = s => {\n  let zones = s.timezones\n  let obj = zones[s.tz]\n  if (obj === undefined) {\n    console.warn(\"Warning: couldn't find timezone \" + s.tz)\n    return 0\n  }\n  if (obj.dst === undefined) {\n    return obj.offset\n  }\n\n  //get our two possible offsets\n  let jul = obj.offset\n  let dec = obj.offset + 1 // assume it's the same for now\n  if (obj.hem === 'n') {\n    dec = jul - 1\n  }\n  let split = obj.dst.split('->')\n  let inSummer = isSummer(s.epoch, split[0], split[1], jul, dec)\n  if (inSummer === true) {\n    return jul\n  }\n  return dec\n}\nexport default quickOffset\n","import { beADate, getEpoch } from '../fns.js'\n\nconst addMethods = SpaceTime => {\n  const methods = {\n    isAfter: function (d) {\n      d = beADate(d, this)\n      let epoch = getEpoch(d)\n      if (epoch === null) {\n        return null\n      }\n      return this.epoch > epoch\n    },\n    isBefore: function (d) {\n      d = beADate(d, this)\n      let epoch = getEpoch(d)\n      if (epoch === null) {\n        return null\n      }\n      return this.epoch < epoch\n    },\n    isEqual: function (d) {\n      d = beADate(d, this)\n      let epoch = getEpoch(d)\n      if (epoch === null) {\n        return null\n      }\n      return this.epoch === epoch\n    },\n    isBetween: function (start, end, isInclusive = false) {\n      start = beADate(start, this)\n      end = beADate(end, this)\n      let startEpoch = getEpoch(start)\n      if (startEpoch === null) {\n        return null\n      }\n      let endEpoch = getEpoch(end)\n      if (endEpoch === null) {\n        return null\n      }\n      if (isInclusive) {\n        return this.isBetween(start, end) || this.isEqual(start) || this.isEqual(end);\n      }\n      return startEpoch < this.epoch && this.epoch < endEpoch\n    }\n  }\n\n  //hook them into proto\n  Object.keys(methods).forEach(k => {\n    SpaceTime.prototype[k] = methods[k]\n  })\n}\n\nexport default addMethods\n","import { isObject, isBoolean } from '../fns.js'\nimport { set as setD } from '../data/days.js'\nimport { set as setM } from '../data/months.js'\nimport { set as setTcf } from '../data/caseFormat.js'\nimport { set as setAmpm } from '../data/ampm.js'\n\n\nconst addMethods = SpaceTime => {\n  const methods = {\n    i18n: function (data) {\n      //change the day names\n      if (isObject(data.days)) {\n        setD(data.days)\n      }\n      //change the month names\n      if (isObject(data.months)) {\n        setM(data.months)\n      }\n\n      // change the the display style of the month / day names\n      if (isBoolean(data.useTitleCase)) {\n        setTcf(data.useTitleCase)\n      }\n\n      //change am and pm strings\n      if (isObject(data.ampm)) {\n        setAmpm(data.ampm)\n      }\n      return this\n    }\n  }\n\n  //hook them into proto\n  Object.keys(methods).forEach(k => {\n    SpaceTime.prototype[k] = methods[k]\n  })\n}\n\nexport default addMethods\n","import Spacetime from './spacetime.js'\nimport whereIts from './whereIts.js'\nimport version from './_version.js'\n\nconst main = (input, tz, options) => new Spacetime(input, tz, options)\n\n// set all properties of a given 'today' object\nconst setToday = function (s) {\n  let today = s._today || {}\n  Object.keys(today).forEach((k) => {\n    s = s[k](today[k])\n  })\n  return s\n}\n\n//some helper functions on the main method\nmain.now = (tz, options) => {\n  let s = new Spacetime(new Date().getTime(), tz, options)\n  s = setToday(s)\n  return s\n}\nmain.today = (tz, options) => {\n  let s = new Spacetime(new Date().getTime(), tz, options)\n  s = setToday(s)\n  return s.startOf('day')\n}\nmain.tomorrow = (tz, options) => {\n  let s = new Spacetime(new Date().getTime(), tz, options)\n  s = setToday(s)\n  return s.add(1, 'day').startOf('day')\n}\nmain.yesterday = (tz, options) => {\n  let s = new Spacetime(new Date().getTime(), tz, options)\n  s = setToday(s)\n  return s.subtract(1, 'day').startOf('day')\n}\nmain.extend = function (obj = {}) {\n  Object.keys(obj).forEach((k) => {\n    Spacetime.prototype[k] = obj[k]\n  })\n  return this\n}\nmain.timezones = function () {\n  let s = new Spacetime()\n  return s.timezones\n}\nmain.max = function (tz, options) {\n  let s = new Spacetime(null, tz, options)\n  s.epoch = 8640000000000000\n  return s\n}\nmain.min = function (tz, options) {\n  let s = new Spacetime(null, tz, options)\n  s.epoch = -8640000000000000\n  return s\n}\n\n//find tz by time\nmain.whereIts = whereIts\nmain.version = version\n\n//aliases:\nmain.plugin = main.extend\nexport default main\n","import Spacetime from './spacetime.js'\n// const timezones = require('../data');\n\nconst whereIts = (a, b) => {\n  let start = new Spacetime(null)\n  let end = new Spacetime(null)\n  start = start.time(a)\n  //if b is undefined, use as 'within one hour'\n  if (b) {\n    end = end.time(b)\n  } else {\n    end = start.add(59, 'minutes')\n  }\n\n  let startHour = start.hour()\n  let endHour = end.hour()\n  let tzs = Object.keys(start.timezones).filter((tz) => {\n    if (tz.indexOf('/') === -1) {\n      return false\n    }\n    let m = new Spacetime(null, tz)\n    let hour = m.hour()\n    //do 'calendar-compare' not real-time-compare\n    if (hour >= startHour && hour <= endHour) {\n      //test minutes too, if applicable\n      if (hour === startHour && m.minute() < start.minute()) {\n        return false\n      }\n      if (hour === endHour && m.minute() > end.minute()) {\n        return false\n      }\n      return true\n    }\n    return false\n  })\n  return tzs\n}\nexport default whereIts\n","export default '7.4.7'","\nimport KDBush from 'kdbush';\n\nconst defaultOptions = {\n    minZoom: 0,   // min zoom to generate clusters on\n    maxZoom: 16,  // max zoom level to cluster the points on\n    minPoints: 2, // minimum points to form a cluster\n    radius: 40,   // cluster radius in pixels\n    extent: 512,  // tile extent (radius is calculated relative to it)\n    nodeSize: 64, // size of the KD-tree leaf node, affects performance\n    log: false,   // whether to log timing info\n\n    // whether to generate numeric ids for input features (in vector tiles)\n    generateId: false,\n\n    // a reduce function for calculating custom cluster properties\n    reduce: null, // (accumulated, props) => { accumulated.sum += props.sum; }\n\n    // properties to use for individual points when running the reducer\n    map: props => props // props => ({sum: props.my_value})\n};\n\nconst fround = Math.fround || (tmp => ((x) => { tmp[0] = +x; return tmp[0]; }))(new Float32Array(1));\n\nconst OFFSET_ZOOM = 2;\nconst OFFSET_ID = 3;\nconst OFFSET_PARENT = 4;\nconst OFFSET_NUM = 5;\nconst OFFSET_PROP = 6;\n\nexport default class Supercluster {\n    constructor(options) {\n        this.options = Object.assign(Object.create(defaultOptions), options);\n        this.trees = new Array(this.options.maxZoom + 1);\n        this.stride = this.options.reduce ? 7 : 6;\n        this.clusterProps = [];\n    }\n\n    load(points) {\n        const {log, minZoom, maxZoom} = this.options;\n\n        if (log) console.time('total time');\n\n        const timerId = `prepare ${  points.length  } points`;\n        if (log) console.time(timerId);\n\n        this.points = points;\n\n        // generate a cluster object for each point and index input points into a KD-tree\n        const data = [];\n\n        for (let i = 0; i < points.length; i++) {\n            const p = points[i];\n            if (!p.geometry) continue;\n\n            const [lng, lat] = p.geometry.coordinates;\n            const x = fround(lngX(lng));\n            const y = fround(latY(lat));\n            // store internal point/cluster data in flat numeric arrays for performance\n            data.push(\n                x, y, // projected point coordinates\n                Infinity, // the last zoom the point was processed at\n                i, // index of the source feature in the original input array\n                -1, // parent cluster id\n                1 // number of points in a cluster\n            );\n            if (this.options.reduce) data.push(0); // noop\n        }\n        let tree = this.trees[maxZoom + 1] = this._createTree(data);\n\n        if (log) console.timeEnd(timerId);\n\n        // cluster points on max zoom, then cluster the results on previous zoom, etc.;\n        // results in a cluster hierarchy across zoom levels\n        for (let z = maxZoom; z >= minZoom; z--) {\n            const now = +Date.now();\n\n            // create a new set of clusters for the zoom and index them with a KD-tree\n            tree = this.trees[z] = this._createTree(this._cluster(tree, z));\n\n            if (log) console.log('z%d: %d clusters in %dms', z, tree.numItems, +Date.now() - now);\n        }\n\n        if (log) console.timeEnd('total time');\n\n        return this;\n    }\n\n    getClusters(bbox, zoom) {\n        let minLng = ((bbox[0] + 180) % 360 + 360) % 360 - 180;\n        const minLat = Math.max(-90, Math.min(90, bbox[1]));\n        let maxLng = bbox[2] === 180 ? 180 : ((bbox[2] + 180) % 360 + 360) % 360 - 180;\n        const maxLat = Math.max(-90, Math.min(90, bbox[3]));\n\n        if (bbox[2] - bbox[0] >= 360) {\n            minLng = -180;\n            maxLng = 180;\n        } else if (minLng > maxLng) {\n            const easternHem = this.getClusters([minLng, minLat, 180, maxLat], zoom);\n            const westernHem = this.getClusters([-180, minLat, maxLng, maxLat], zoom);\n            return easternHem.concat(westernHem);\n        }\n\n        const tree = this.trees[this._limitZoom(zoom)];\n        const ids = tree.range(lngX(minLng), latY(maxLat), lngX(maxLng), latY(minLat));\n        const data = tree.data;\n        const clusters = [];\n        for (const id of ids) {\n            const k = this.stride * id;\n            clusters.push(data[k + OFFSET_NUM] > 1 ? getClusterJSON(data, k, this.clusterProps) : this.points[data[k + OFFSET_ID]]);\n        }\n        return clusters;\n    }\n\n    getChildren(clusterId) {\n        const originId = this._getOriginId(clusterId);\n        const originZoom = this._getOriginZoom(clusterId);\n        const errorMsg = 'No cluster with the specified id.';\n\n        const tree = this.trees[originZoom];\n        if (!tree) throw new Error(errorMsg);\n\n        const data = tree.data;\n        if (originId * this.stride >= data.length) throw new Error(errorMsg);\n\n        const r = this.options.radius / (this.options.extent * Math.pow(2, originZoom - 1));\n        const x = data[originId * this.stride];\n        const y = data[originId * this.stride + 1];\n        const ids = tree.within(x, y, r);\n        const children = [];\n        for (const id of ids) {\n            const k = id * this.stride;\n            if (data[k + OFFSET_PARENT] === clusterId) {\n                children.push(data[k + OFFSET_NUM] > 1 ? getClusterJSON(data, k, this.clusterProps) : this.points[data[k + OFFSET_ID]]);\n            }\n        }\n\n        if (children.length === 0) throw new Error(errorMsg);\n\n        return children;\n    }\n\n    getLeaves(clusterId, limit, offset) {\n        limit = limit || 10;\n        offset = offset || 0;\n\n        const leaves = [];\n        this._appendLeaves(leaves, clusterId, limit, offset, 0);\n\n        return leaves;\n    }\n\n    getTile(z, x, y) {\n        const tree = this.trees[this._limitZoom(z)];\n        const z2 = Math.pow(2, z);\n        const {extent, radius} = this.options;\n        const p = radius / extent;\n        const top = (y - p) / z2;\n        const bottom = (y + 1 + p) / z2;\n\n        const tile = {\n            features: []\n        };\n\n        this._addTileFeatures(\n            tree.range((x - p) / z2, top, (x + 1 + p) / z2, bottom),\n            tree.data, x, y, z2, tile);\n\n        if (x === 0) {\n            this._addTileFeatures(\n                tree.range(1 - p / z2, top, 1, bottom),\n                tree.data, z2, y, z2, tile);\n        }\n        if (x === z2 - 1) {\n            this._addTileFeatures(\n                tree.range(0, top, p / z2, bottom),\n                tree.data, -1, y, z2, tile);\n        }\n\n        return tile.features.length ? tile : null;\n    }\n\n    getClusterExpansionZoom(clusterId) {\n        let expansionZoom = this._getOriginZoom(clusterId) - 1;\n        while (expansionZoom <= this.options.maxZoom) {\n            const children = this.getChildren(clusterId);\n            expansionZoom++;\n            if (children.length !== 1) break;\n            clusterId = children[0].properties.cluster_id;\n        }\n        return expansionZoom;\n    }\n\n    _appendLeaves(result, clusterId, limit, offset, skipped) {\n        const children = this.getChildren(clusterId);\n\n        for (const child of children) {\n            const props = child.properties;\n\n            if (props && props.cluster) {\n                if (skipped + props.point_count <= offset) {\n                    // skip the whole cluster\n                    skipped += props.point_count;\n                } else {\n                    // enter the cluster\n                    skipped = this._appendLeaves(result, props.cluster_id, limit, offset, skipped);\n                    // exit the cluster\n                }\n            } else if (skipped < offset) {\n                // skip a single point\n                skipped++;\n            } else {\n                // add a single point\n                result.push(child);\n            }\n            if (result.length === limit) break;\n        }\n\n        return skipped;\n    }\n\n    _createTree(data) {\n        const tree = new KDBush(data.length / this.stride | 0, this.options.nodeSize, Float32Array);\n        for (let i = 0; i < data.length; i += this.stride) tree.add(data[i], data[i + 1]);\n        tree.finish();\n        tree.data = data;\n        return tree;\n    }\n\n    _addTileFeatures(ids, data, x, y, z2, tile) {\n        for (const i of ids) {\n            const k = i * this.stride;\n            const isCluster = data[k + OFFSET_NUM] > 1;\n\n            let tags, px, py;\n            if (isCluster) {\n                tags = getClusterProperties(data, k, this.clusterProps);\n                px = data[k];\n                py = data[k + 1];\n            } else {\n                const p = this.points[data[k + OFFSET_ID]];\n                tags = p.properties;\n                const [lng, lat] = p.geometry.coordinates;\n                px = lngX(lng);\n                py = latY(lat);\n            }\n\n            const f = {\n                type: 1,\n                geometry: [[\n                    Math.round(this.options.extent * (px * z2 - x)),\n                    Math.round(this.options.extent * (py * z2 - y))\n                ]],\n                tags\n            };\n\n            // assign id\n            let id;\n            if (isCluster || this.options.generateId) {\n                // optionally generate id for points\n                id = data[k + OFFSET_ID];\n            } else {\n                // keep id if already assigned\n                id = this.points[data[k + OFFSET_ID]].id;\n            }\n\n            if (id !== undefined) f.id = id;\n\n            tile.features.push(f);\n        }\n    }\n\n    _limitZoom(z) {\n        return Math.max(this.options.minZoom, Math.min(Math.floor(+z), this.options.maxZoom + 1));\n    }\n\n    _cluster(tree, zoom) {\n        const {radius, extent, reduce, minPoints} = this.options;\n        const r = radius / (extent * Math.pow(2, zoom));\n        const data = tree.data;\n        const nextData = [];\n        const stride = this.stride;\n\n        // loop through each point\n        for (let i = 0; i < data.length; i += stride) {\n            // if we've already visited the point at this zoom level, skip it\n            if (data[i + OFFSET_ZOOM] <= zoom) continue;\n            data[i + OFFSET_ZOOM] = zoom;\n\n            // find all nearby points\n            const x = data[i];\n            const y = data[i + 1];\n            const neighborIds = tree.within(data[i], data[i + 1], r);\n\n            const numPointsOrigin = data[i + OFFSET_NUM];\n            let numPoints = numPointsOrigin;\n\n            // count the number of points in a potential cluster\n            for (const neighborId of neighborIds) {\n                const k = neighborId * stride;\n                // filter out neighbors that are already processed\n                if (data[k + OFFSET_ZOOM] > zoom) numPoints += data[k + OFFSET_NUM];\n            }\n\n            // if there were neighbors to merge, and there are enough points to form a cluster\n            if (numPoints > numPointsOrigin && numPoints >= minPoints) {\n                let wx = x * numPointsOrigin;\n                let wy = y * numPointsOrigin;\n\n                let clusterProperties;\n                let clusterPropIndex = -1;\n\n                // encode both zoom and point index on which the cluster originated -- offset by total length of features\n                const id = ((i / stride | 0) << 5) + (zoom + 1) + this.points.length;\n\n                for (const neighborId of neighborIds) {\n                    const k = neighborId * stride;\n\n                    if (data[k + OFFSET_ZOOM] <= zoom) continue;\n                    data[k + OFFSET_ZOOM] = zoom; // save the zoom (so it doesn't get processed twice)\n\n                    const numPoints2 = data[k + OFFSET_NUM];\n                    wx += data[k] * numPoints2; // accumulate coordinates for calculating weighted center\n                    wy += data[k + 1] * numPoints2;\n\n                    data[k + OFFSET_PARENT] = id;\n\n                    if (reduce) {\n                        if (!clusterProperties) {\n                            clusterProperties = this._map(data, i, true);\n                            clusterPropIndex = this.clusterProps.length;\n                            this.clusterProps.push(clusterProperties);\n                        }\n                        reduce(clusterProperties, this._map(data, k));\n                    }\n                }\n\n                data[i + OFFSET_PARENT] = id;\n                nextData.push(wx / numPoints, wy / numPoints, Infinity, id, -1, numPoints);\n                if (reduce) nextData.push(clusterPropIndex);\n\n            } else { // left points as unclustered\n                for (let j = 0; j < stride; j++) nextData.push(data[i + j]);\n\n                if (numPoints > 1) {\n                    for (const neighborId of neighborIds) {\n                        const k = neighborId * stride;\n                        if (data[k + OFFSET_ZOOM] <= zoom) continue;\n                        data[k + OFFSET_ZOOM] = zoom;\n                        for (let j = 0; j < stride; j++) nextData.push(data[k + j]);\n                    }\n                }\n            }\n        }\n\n        return nextData;\n    }\n\n    // get index of the point from which the cluster originated\n    _getOriginId(clusterId) {\n        return (clusterId - this.points.length) >> 5;\n    }\n\n    // get zoom of the point from which the cluster originated\n    _getOriginZoom(clusterId) {\n        return (clusterId - this.points.length) % 32;\n    }\n\n    _map(data, i, clone) {\n        if (data[i + OFFSET_NUM] > 1) {\n            const props = this.clusterProps[data[i + OFFSET_PROP]];\n            return clone ? Object.assign({}, props) : props;\n        }\n        const original = this.points[data[i + OFFSET_ID]].properties;\n        const result = this.options.map(original);\n        return clone && result === original ? Object.assign({}, result) : result;\n    }\n}\n\nfunction getClusterJSON(data, i, clusterProps) {\n    return {\n        type: 'Feature',\n        id: data[i + OFFSET_ID],\n        properties: getClusterProperties(data, i, clusterProps),\n        geometry: {\n            type: 'Point',\n            coordinates: [xLng(data[i]), yLat(data[i + 1])]\n        }\n    };\n}\n\nfunction getClusterProperties(data, i, clusterProps) {\n    const count = data[i + OFFSET_NUM];\n    const abbrev =\n        count >= 10000 ? `${Math.round(count / 1000)  }k` :\n        count >= 1000 ? `${Math.round(count / 100) / 10  }k` : count;\n    const propIndex = data[i + OFFSET_PROP];\n    const properties = propIndex === -1 ? {} : Object.assign({}, clusterProps[propIndex]);\n    return Object.assign(properties, {\n        cluster: true,\n        cluster_id: data[i + OFFSET_ID],\n        point_count: count,\n        point_count_abbreviated: abbrev\n    });\n}\n\n// longitude/latitude to spherical mercator in [0..1] range\nfunction lngX(lng) {\n    return lng / 360 + 0.5;\n}\nfunction latY(lat) {\n    const sin = Math.sin(lat * Math.PI / 180);\n    const y = (0.5 - 0.25 * Math.log((1 + sin) / (1 - sin)) / Math.PI);\n    return y < 0 ? 0 : y > 1 ? 1 : y;\n}\n\n// spherical mercator to longitude/latitude\nfunction xLng(x) {\n    return (x - 0.5) * 360;\n}\nfunction yLat(y) {\n    const y2 = (180 - y * 360) * Math.PI / 180;\n    return 360 * Math.atan(Math.exp(y2)) / Math.PI - 90;\n}\n","/*! xlsx.js (C) 2013-present SheetJS -- http://sheetjs.com */\n/* vim: set ts=2: */\n/*exported XLSX */\n/*global process:false, Buffer:false, ArrayBuffer:false, DataView:false, Deno:false */\nvar XLSX = {};\nXLSX.version = '0.18.5';\nvar current_codepage = 1200, current_ansi = 1252;\n\nvar VALID_ANSI = [ 874, 932, 936, 949, 950, 1250, 1251, 1252, 1253, 1254, 1255, 1256, 1257, 1258, 10000 ];\n/* ECMA-376 Part I 18.4.1 charset to codepage mapping */\nvar CS2CP = ({\n\t/*::[*/0/*::]*/:    1252, /* ANSI */\n\t/*::[*/1/*::]*/:   65001, /* DEFAULT */\n\t/*::[*/2/*::]*/:   65001, /* SYMBOL */\n\t/*::[*/77/*::]*/:  10000, /* MAC */\n\t/*::[*/128/*::]*/:   932, /* SHIFTJIS */\n\t/*::[*/129/*::]*/:   949, /* HANGUL */\n\t/*::[*/130/*::]*/:  1361, /* JOHAB */\n\t/*::[*/134/*::]*/:   936, /* GB2312 */\n\t/*::[*/136/*::]*/:   950, /* CHINESEBIG5 */\n\t/*::[*/161/*::]*/:  1253, /* GREEK */\n\t/*::[*/162/*::]*/:  1254, /* TURKISH */\n\t/*::[*/163/*::]*/:  1258, /* VIETNAMESE */\n\t/*::[*/177/*::]*/:  1255, /* HEBREW */\n\t/*::[*/178/*::]*/:  1256, /* ARABIC */\n\t/*::[*/186/*::]*/:  1257, /* BALTIC */\n\t/*::[*/204/*::]*/:  1251, /* RUSSIAN */\n\t/*::[*/222/*::]*/:   874, /* THAI */\n\t/*::[*/238/*::]*/:  1250, /* EASTEUROPE */\n\t/*::[*/255/*::]*/:  1252, /* OEM */\n\t/*::[*/69/*::]*/:   6969  /* MISC */\n}/*:any*/);\n\nvar set_ansi = function(cp/*:number*/) { if(VALID_ANSI.indexOf(cp) == -1) return; current_ansi = CS2CP[0] = cp; };\nfunction reset_ansi() { set_ansi(1252); }\n\nvar set_cp = function(cp/*:number*/) { current_codepage = cp; set_ansi(cp); };\nfunction reset_cp() { set_cp(1200); reset_ansi(); }\n\nfunction char_codes(data/*:string*/)/*:Array<number>*/ { var o/*:Array<number>*/ = []; for(var i = 0, len = data.length; i < len; ++i) o[i] = data.charCodeAt(i); return o; }\n\nfunction utf16leread(data/*:string*/)/*:string*/ {\n\tvar o/*:Array<string>*/ = [];\n\tfor(var i = 0; i < (data.length>>1); ++i) o[i] = String.fromCharCode(data.charCodeAt(2*i) + (data.charCodeAt(2*i+1)<<8));\n\treturn o.join(\"\");\n}\nfunction utf16beread(data/*:string*/)/*:string*/ {\n\tvar o/*:Array<string>*/ = [];\n\tfor(var i = 0; i < (data.length>>1); ++i) o[i] = String.fromCharCode(data.charCodeAt(2*i+1) + (data.charCodeAt(2*i)<<8));\n\treturn o.join(\"\");\n}\n\nvar debom = function(data/*:string*/)/*:string*/ {\n\tvar c1 = data.charCodeAt(0), c2 = data.charCodeAt(1);\n\tif(c1 == 0xFF && c2 == 0xFE) return utf16leread(data.slice(2));\n\tif(c1 == 0xFE && c2 == 0xFF) return utf16beread(data.slice(2));\n\tif(c1 == 0xFEFF) return data.slice(1);\n\treturn data;\n};\n\nvar _getchar = function _gc1(x/*:number*/)/*:string*/ { return String.fromCharCode(x); };\nvar _getansi = function _ga1(x/*:number*/)/*:string*/ { return String.fromCharCode(x); };\n\nvar $cptable;\nfunction set_cptable(cptable) {\n\t$cptable = cptable;\n\tset_cp = function(cp/*:number*/) { current_codepage = cp; set_ansi(cp); };\n\tdebom = function(data/*:string*/) {\n\t\tif(data.charCodeAt(0) === 0xFF && data.charCodeAt(1) === 0xFE) { return $cptable.utils.decode(1200, char_codes(data.slice(2))); }\n\t\treturn data;\n\t};\n\t_getchar = function _gc2(x/*:number*/)/*:string*/ {\n\t\tif(current_codepage === 1200) return String.fromCharCode(x);\n\t\treturn $cptable.utils.decode(current_codepage, [x&255,x>>8])[0];\n\t};\n\t_getansi = function _ga2(x/*:number*/)/*:string*/ {\n\t\treturn $cptable.utils.decode(current_ansi, [x])[0];\n\t};\n\tcpdoit();\n}\nexport { set_cptable };\nvar DENSE = null;\nvar DIF_XL = true;\nvar Base64_map = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";\nfunction Base64_encode(input) {\n  var o = \"\";\n  var c1 = 0, c2 = 0, c3 = 0, e1 = 0, e2 = 0, e3 = 0, e4 = 0;\n  for (var i = 0; i < input.length; ) {\n    c1 = input.charCodeAt(i++);\n    e1 = c1 >> 2;\n    c2 = input.charCodeAt(i++);\n    e2 = (c1 & 3) << 4 | c2 >> 4;\n    c3 = input.charCodeAt(i++);\n    e3 = (c2 & 15) << 2 | c3 >> 6;\n    e4 = c3 & 63;\n    if (isNaN(c2)) {\n      e3 = e4 = 64;\n    } else if (isNaN(c3)) {\n      e4 = 64;\n    }\n    o += Base64_map.charAt(e1) + Base64_map.charAt(e2) + Base64_map.charAt(e3) + Base64_map.charAt(e4);\n  }\n  return o;\n}\nfunction Base64_decode(input) {\n  var o = \"\";\n  var c1 = 0, c2 = 0, c3 = 0, e1 = 0, e2 = 0, e3 = 0, e4 = 0;\n  input = input.replace(/[^\\w\\+\\/\\=]/g, \"\");\n  for (var i = 0; i < input.length; ) {\n    e1 = Base64_map.indexOf(input.charAt(i++));\n    e2 = Base64_map.indexOf(input.charAt(i++));\n    c1 = e1 << 2 | e2 >> 4;\n    o += String.fromCharCode(c1);\n    e3 = Base64_map.indexOf(input.charAt(i++));\n    c2 = (e2 & 15) << 4 | e3 >> 2;\n    if (e3 !== 64) {\n      o += String.fromCharCode(c2);\n    }\n    e4 = Base64_map.indexOf(input.charAt(i++));\n    c3 = (e3 & 3) << 6 | e4;\n    if (e4 !== 64) {\n      o += String.fromCharCode(c3);\n    }\n  }\n  return o;\n}\nvar has_buf = /*#__PURE__*/(function() { return typeof Buffer !== 'undefined' && typeof process !== 'undefined' && typeof process.versions !== 'undefined' && !!process.versions.node; })();\n\nvar Buffer_from = /*#__PURE__*/(function() {\n\tif(typeof Buffer !== 'undefined') {\n\t\tvar nbfs = !Buffer.from;\n\t\tif(!nbfs) try { Buffer.from(\"foo\", \"utf8\"); } catch(e) { nbfs = true; }\n\t\treturn nbfs ? function(buf, enc) { return (enc) ? new Buffer(buf, enc) : new Buffer(buf); } : Buffer.from.bind(Buffer);\n\t}\n\treturn function() {};\n})();\n\n\nfunction new_raw_buf(len/*:number*/) {\n\t/* jshint -W056 */\n\tif(has_buf) return Buffer.alloc ? Buffer.alloc(len) : new Buffer(len);\n\treturn typeof Uint8Array != \"undefined\" ? new Uint8Array(len) : new Array(len);\n\t/* jshint +W056 */\n}\n\nfunction new_unsafe_buf(len/*:number*/) {\n\t/* jshint -W056 */\n\tif(has_buf) return Buffer.allocUnsafe ? Buffer.allocUnsafe(len) : new Buffer(len);\n\treturn typeof Uint8Array != \"undefined\" ? new Uint8Array(len) : new Array(len);\n\t/* jshint +W056 */\n}\n\nvar s2a = function s2a(s/*:string*/)/*:any*/ {\n\tif(has_buf) return Buffer_from(s, \"binary\");\n\treturn s.split(\"\").map(function(x/*:string*/)/*:number*/{ return x.charCodeAt(0) & 0xff; });\n};\n\nfunction s2ab(s/*:string*/)/*:any*/ {\n\tif(typeof ArrayBuffer === 'undefined') return s2a(s);\n\tvar buf = new ArrayBuffer(s.length), view = new Uint8Array(buf);\n\tfor (var i=0; i!=s.length; ++i) view[i] = s.charCodeAt(i) & 0xFF;\n\treturn buf;\n}\n\nfunction a2s(data/*:any*/)/*:string*/ {\n\tif(Array.isArray(data)) return data.map(function(c) { return String.fromCharCode(c); }).join(\"\");\n\tvar o/*:Array<string>*/ = []; for(var i = 0; i < data.length; ++i) o[i] = String.fromCharCode(data[i]); return o.join(\"\");\n}\n\nfunction a2u(data/*:Array<number>*/)/*:Uint8Array*/ {\n\tif(typeof Uint8Array === 'undefined') throw new Error(\"Unsupported\");\n\treturn new Uint8Array(data);\n}\n\nfunction ab2a(data/*:ArrayBuffer|Uint8Array*/)/*:Array<number>*/ {\n\tif(typeof ArrayBuffer == 'undefined') throw new Error(\"Unsupported\");\n\tif(data instanceof ArrayBuffer) return ab2a(new Uint8Array(data));\n\t/*:: if(data instanceof ArrayBuffer) throw new Error(\"unreachable\"); */\n\tvar o = new Array(data.length);\n\tfor(var i = 0; i < data.length; ++i) o[i] = data[i];\n\treturn o;\n}\n\nvar bconcat = has_buf ? function(bufs) { return Buffer.concat(bufs.map(function(buf) { return Buffer.isBuffer(buf) ? buf : Buffer_from(buf); })); } : function(bufs) {\n\tif(typeof Uint8Array !== \"undefined\") {\n\t\tvar i = 0, maxlen = 0;\n\t\tfor(i = 0; i < bufs.length; ++i) maxlen += bufs[i].length;\n\t\tvar o = new Uint8Array(maxlen);\n\t\tvar len = 0;\n\t\tfor(i = 0, maxlen = 0; i < bufs.length; maxlen += len, ++i) {\n\t\t\tlen = bufs[i].length;\n\t\t\tif(bufs[i] instanceof Uint8Array) o.set(bufs[i], maxlen);\n\t\t\telse if(typeof bufs[i] == \"string\") { throw \"wtf\"; }\n\t\t\telse o.set(new Uint8Array(bufs[i]), maxlen);\n\t\t}\n\t\treturn o;\n\t}\n\treturn [].concat.apply([], bufs.map(function(buf) { return Array.isArray(buf) ? buf : [].slice.call(buf); }));\n};\n\nfunction utf8decode(content/*:string*/) {\n\tvar out = [], widx = 0, L = content.length + 250;\n\tvar o = new_raw_buf(content.length + 255);\n\tfor(var ridx = 0; ridx < content.length; ++ridx) {\n\t\tvar c = content.charCodeAt(ridx);\n\t\tif(c < 0x80) o[widx++] = c;\n\t\telse if(c < 0x800) {\n\t\t\to[widx++] = (192|((c>>6)&31));\n\t\t\to[widx++] = (128|(c&63));\n\t\t} else if(c >= 0xD800 && c < 0xE000) {\n\t\t\tc = (c&1023)+64;\n\t\t\tvar d = content.charCodeAt(++ridx)&1023;\n\t\t\to[widx++] = (240|((c>>8)&7));\n\t\t\to[widx++] = (128|((c>>2)&63));\n\t\t\to[widx++] = (128|((d>>6)&15)|((c&3)<<4));\n\t\t\to[widx++] = (128|(d&63));\n\t\t} else {\n\t\t\to[widx++] = (224|((c>>12)&15));\n\t\t\to[widx++] = (128|((c>>6)&63));\n\t\t\to[widx++] = (128|(c&63));\n\t\t}\n\t\tif(widx > L) {\n\t\t\tout.push(o.slice(0, widx));\n\t\t\twidx = 0;\n\t\t\to = new_raw_buf(65535);\n\t\t\tL = 65530;\n\t\t}\n\t}\n\tout.push(o.slice(0, widx));\n\treturn bconcat(out);\n}\n\nvar chr0 = /\\u0000/g, chr1 = /[\\u0001-\\u0006]/g;\n/*::\ndeclare type Block = any;\ndeclare type BufArray = {\n\tnewblk(sz:number):Block;\n\tnext(sz:number):Block;\n\tend():any;\n\tpush(buf:Block):void;\n};\n\ntype RecordHopperCB = {(d:any, Rn:string, RT:number):?boolean;};\n\ntype EvertType = {[string]:string};\ntype EvertNumType = {[string]:number};\ntype EvertArrType = {[string]:Array<string>};\n\ntype StringConv = {(string):string};\n\n*/\n/* ssf.js (C) 2013-present SheetJS -- http://sheetjs.com */\n/*jshint -W041 */\nfunction _strrev(x/*:string*/)/*:string*/ { var o = \"\", i = x.length-1; while(i>=0) o += x.charAt(i--); return o; }\nfunction pad0(v/*:any*/,d/*:number*/)/*:string*/{var t=\"\"+v; return t.length>=d?t:fill('0',d-t.length)+t;}\nfunction pad_(v/*:any*/,d/*:number*/)/*:string*/{var t=\"\"+v;return t.length>=d?t:fill(' ',d-t.length)+t;}\nfunction rpad_(v/*:any*/,d/*:number*/)/*:string*/{var t=\"\"+v; return t.length>=d?t:t+fill(' ',d-t.length);}\nfunction pad0r1(v/*:any*/,d/*:number*/)/*:string*/{var t=\"\"+Math.round(v); return t.length>=d?t:fill('0',d-t.length)+t;}\nfunction pad0r2(v/*:any*/,d/*:number*/)/*:string*/{var t=\"\"+v; return t.length>=d?t:fill('0',d-t.length)+t;}\nvar p2_32 = /*#__PURE__*/Math.pow(2,32);\nfunction pad0r(v/*:any*/,d/*:number*/)/*:string*/{if(v>p2_32||v<-p2_32) return pad0r1(v,d); var i = Math.round(v); return pad0r2(i,d); }\n/* yes, in 2022 this is still faster than string compare */\nfunction SSF_isgeneral(s/*:string*/, i/*:?number*/)/*:boolean*/ { i = i || 0; return s.length >= 7 + i && (s.charCodeAt(i)|32) === 103 && (s.charCodeAt(i+1)|32) === 101 && (s.charCodeAt(i+2)|32) === 110 && (s.charCodeAt(i+3)|32) === 101 && (s.charCodeAt(i+4)|32) === 114 && (s.charCodeAt(i+5)|32) === 97 && (s.charCodeAt(i+6)|32) === 108; }\nvar days/*:Array<Array<string> >*/ = [\n\t['Sun', 'Sunday'],\n\t['Mon', 'Monday'],\n\t['Tue', 'Tuesday'],\n\t['Wed', 'Wednesday'],\n\t['Thu', 'Thursday'],\n\t['Fri', 'Friday'],\n\t['Sat', 'Saturday']\n];\nvar months/*:Array<Array<string> >*/ = [\n\t['J', 'Jan', 'January'],\n\t['F', 'Feb', 'February'],\n\t['M', 'Mar', 'March'],\n\t['A', 'Apr', 'April'],\n\t['M', 'May', 'May'],\n\t['J', 'Jun', 'June'],\n\t['J', 'Jul', 'July'],\n\t['A', 'Aug', 'August'],\n\t['S', 'Sep', 'September'],\n\t['O', 'Oct', 'October'],\n\t['N', 'Nov', 'November'],\n\t['D', 'Dec', 'December']\n];\nfunction SSF_init_table(t/*:any*/) {\n\tif(!t) t = {};\n\tt[0]=  'General';\n\tt[1]=  '0';\n\tt[2]=  '0.00';\n\tt[3]=  '#,##0';\n\tt[4]=  '#,##0.00';\n\tt[9]=  '0%';\n\tt[10]= '0.00%';\n\tt[11]= '0.00E+00';\n\tt[12]= '# ?/?';\n\tt[13]= '# ??/??';\n\tt[14]= 'm/d/yy';\n\tt[15]= 'd-mmm-yy';\n\tt[16]= 'd-mmm';\n\tt[17]= 'mmm-yy';\n\tt[18]= 'h:mm AM/PM';\n\tt[19]= 'h:mm:ss AM/PM';\n\tt[20]= 'h:mm';\n\tt[21]= 'h:mm:ss';\n\tt[22]= 'm/d/yy h:mm';\n\tt[37]= '#,##0 ;(#,##0)';\n\tt[38]= '#,##0 ;[Red](#,##0)';\n\tt[39]= '#,##0.00;(#,##0.00)';\n\tt[40]= '#,##0.00;[Red](#,##0.00)';\n\tt[45]= 'mm:ss';\n\tt[46]= '[h]:mm:ss';\n\tt[47]= 'mmss.0';\n\tt[48]= '##0.0E+0';\n\tt[49]= '@';\n\tt[56]= '\"上午/下午 \"hh\"時\"mm\"分\"ss\"秒 \"';\n\treturn t;\n}\n/* repeated to satiate webpack */\nvar table_fmt = {\n\t0:  'General',\n\t1:  '0',\n\t2:  '0.00',\n\t3:  '#,##0',\n\t4:  '#,##0.00',\n\t9:  '0%',\n\t10: '0.00%',\n\t11: '0.00E+00',\n\t12: '# ?/?',\n\t13: '# ??/??',\n\t14: 'm/d/yy',\n\t15: 'd-mmm-yy',\n\t16: 'd-mmm',\n\t17: 'mmm-yy',\n\t18: 'h:mm AM/PM',\n\t19: 'h:mm:ss AM/PM',\n\t20: 'h:mm',\n\t21: 'h:mm:ss',\n\t22: 'm/d/yy h:mm',\n\t37: '#,##0 ;(#,##0)',\n\t38: '#,##0 ;[Red](#,##0)',\n\t39: '#,##0.00;(#,##0.00)',\n\t40: '#,##0.00;[Red](#,##0.00)',\n\t45: 'mm:ss',\n\t46: '[h]:mm:ss',\n\t47: 'mmss.0',\n\t48: '##0.0E+0',\n\t49: '@',\n\t56: '\"上午/下午 \"hh\"時\"mm\"分\"ss\"秒 \"'\n};\n\n/* Defaults determined by systematically testing in Excel 2019 */\n\n/* These formats appear to default to other formats in the table */\nvar SSF_default_map = {\n\t5:  37, 6:  38, 7:  39, 8:  40,         //  5 -> 37 ...  8 -> 40\n\n\t23:  0, 24:  0, 25:  0, 26:  0,         // 23 ->  0 ... 26 ->  0\n\n\t27: 14, 28: 14, 29: 14, 30: 14, 31: 14, // 27 -> 14 ... 31 -> 14\n\n\t50: 14, 51: 14, 52: 14, 53: 14, 54: 14, // 50 -> 14 ... 58 -> 14\n\t55: 14, 56: 14, 57: 14, 58: 14,\n\t59:  1, 60:  2, 61:  3, 62:  4,         // 59 ->  1 ... 62 ->  4\n\n\t67:  9, 68: 10,                         // 67 ->  9 ... 68 -> 10\n\t69: 12, 70: 13, 71: 14,                 // 69 -> 12 ... 71 -> 14\n\t72: 14, 73: 15, 74: 16, 75: 17,         // 72 -> 14 ... 75 -> 17\n\t76: 20, 77: 21, 78: 22,                 // 76 -> 20 ... 78 -> 22\n\t79: 45, 80: 46, 81: 47,                 // 79 -> 45 ... 81 -> 47\n\t82: 0                                   // 82 ->  0 ... 65536 -> 0 (omitted)\n};\n\n\n/* These formats technically refer to Accounting formats with no equivalent */\nvar SSF_default_str = {\n\t//  5 -- Currency,   0 decimal, black negative\n\t5:  '\"$\"#,##0_);\\\\(\"$\"#,##0\\\\)',\n\t63: '\"$\"#,##0_);\\\\(\"$\"#,##0\\\\)',\n\n\t//  6 -- Currency,   0 decimal, red   negative\n\t6:  '\"$\"#,##0_);[Red]\\\\(\"$\"#,##0\\\\)',\n\t64: '\"$\"#,##0_);[Red]\\\\(\"$\"#,##0\\\\)',\n\n\t//  7 -- Currency,   2 decimal, black negative\n\t7:  '\"$\"#,##0.00_);\\\\(\"$\"#,##0.00\\\\)',\n\t65: '\"$\"#,##0.00_);\\\\(\"$\"#,##0.00\\\\)',\n\n\t//  8 -- Currency,   2 decimal, red   negative\n\t8:  '\"$\"#,##0.00_);[Red]\\\\(\"$\"#,##0.00\\\\)',\n\t66: '\"$\"#,##0.00_);[Red]\\\\(\"$\"#,##0.00\\\\)',\n\n\t// 41 -- Accounting, 0 decimal, No Symbol\n\t41: '_(* #,##0_);_(* \\\\(#,##0\\\\);_(* \"-\"_);_(@_)',\n\n\t// 42 -- Accounting, 0 decimal, $  Symbol\n\t42: '_(\"$\"* #,##0_);_(\"$\"* \\\\(#,##0\\\\);_(\"$\"* \"-\"_);_(@_)',\n\n\t// 43 -- Accounting, 2 decimal, No Symbol\n\t43: '_(* #,##0.00_);_(* \\\\(#,##0.00\\\\);_(* \"-\"??_);_(@_)',\n\n\t// 44 -- Accounting, 2 decimal, $  Symbol\n\t44: '_(\"$\"* #,##0.00_);_(\"$\"* \\\\(#,##0.00\\\\);_(\"$\"* \"-\"??_);_(@_)'\n};\n\nfunction SSF_frac(x/*:number*/, D/*:number*/, mixed/*:?boolean*/)/*:Array<number>*/ {\n\tvar sgn = x < 0 ? -1 : 1;\n\tvar B = x * sgn;\n\tvar P_2 = 0, P_1 = 1, P = 0;\n\tvar Q_2 = 1, Q_1 = 0, Q = 0;\n\tvar A = Math.floor(B);\n\twhile(Q_1 < D) {\n\t\tA = Math.floor(B);\n\t\tP = A * P_1 + P_2;\n\t\tQ = A * Q_1 + Q_2;\n\t\tif((B - A) < 0.00000005) break;\n\t\tB = 1 / (B - A);\n\t\tP_2 = P_1; P_1 = P;\n\t\tQ_2 = Q_1; Q_1 = Q;\n\t}\n\tif(Q > D) { if(Q_1 > D) { Q = Q_2; P = P_2; } else { Q = Q_1; P = P_1; } }\n\tif(!mixed) return [0, sgn * P, Q];\n\tvar q = Math.floor(sgn * P/Q);\n\treturn [q, sgn*P - q*Q, Q];\n}\nfunction SSF_parse_date_code(v/*:number*/,opts/*:?any*/,b2/*:?boolean*/) {\n\tif(v > 2958465 || v < 0) return null;\n\tvar date = (v|0), time = Math.floor(86400 * (v - date)), dow=0;\n\tvar dout=[];\n\tvar out={D:date, T:time, u:86400*(v-date)-time,y:0,m:0,d:0,H:0,M:0,S:0,q:0};\n\tif(Math.abs(out.u) < 1e-6) out.u = 0;\n\tif(opts && opts.date1904) date += 1462;\n\tif(out.u > 0.9999) {\n\t\tout.u = 0;\n\t\tif(++time == 86400) { out.T = time = 0; ++date; ++out.D; }\n\t}\n\tif(date === 60) {dout = b2 ? [1317,10,29] : [1900,2,29]; dow=3;}\n\telse if(date === 0) {dout = b2 ? [1317,8,29] : [1900,1,0]; dow=6;}\n\telse {\n\t\tif(date > 60) --date;\n\t\t/* 1 = Jan 1 1900 in Gregorian */\n\t\tvar d = new Date(1900, 0, 1);\n\t\td.setDate(d.getDate() + date - 1);\n\t\tdout = [d.getFullYear(), d.getMonth()+1,d.getDate()];\n\t\tdow = d.getDay();\n\t\tif(date < 60) dow = (dow + 6) % 7;\n\t\tif(b2) dow = SSF_fix_hijri(d, dout);\n\t}\n\tout.y = dout[0]; out.m = dout[1]; out.d = dout[2];\n\tout.S = time % 60; time = Math.floor(time / 60);\n\tout.M = time % 60; time = Math.floor(time / 60);\n\tout.H = time;\n\tout.q = dow;\n\treturn out;\n}\nvar SSFbasedate = /*#__PURE__*/new Date(1899, 11, 31, 0, 0, 0);\nvar SSFdnthresh = /*#__PURE__*/SSFbasedate.getTime();\nvar SSFbase1904 = /*#__PURE__*/new Date(1900, 2, 1, 0, 0, 0);\nfunction datenum_local(v/*:Date*/, date1904/*:?boolean*/)/*:number*/ {\n\tvar epoch = /*#__PURE__*/v.getTime();\n\tif(date1904) epoch -= 1461*24*60*60*1000;\n\telse if(v >= SSFbase1904) epoch += 24*60*60*1000;\n\treturn (epoch - (SSFdnthresh + (/*#__PURE__*/v.getTimezoneOffset() - /*#__PURE__*/SSFbasedate.getTimezoneOffset()) * 60000)) / (24 * 60 * 60 * 1000);\n}\n/* ECMA-376 18.8.30 numFmt*/\n/* Note: `toPrecision` uses standard form when prec > E and E >= -6 */\n/* exponent >= -9 and <= 9 */\nfunction SSF_strip_decimal(o/*:string*/)/*:string*/ {\n\treturn (o.indexOf(\".\") == -1) ? o : o.replace(/(?:\\.0*|(\\.\\d*[1-9])0+)$/, \"$1\");\n}\n\n/* General Exponential always shows 2 digits exp and trims the mantissa */\nfunction SSF_normalize_exp(o/*:string*/)/*:string*/ {\n\tif(o.indexOf(\"E\") == -1) return o;\n\treturn o.replace(/(?:\\.0*|(\\.\\d*[1-9])0+)[Ee]/,\"$1E\").replace(/(E[+-])(\\d)$/,\"$10$2\");\n}\n\n/* exponent >= -9 and <= 9 */\nfunction SSF_small_exp(v/*:number*/)/*:string*/ {\n\tvar w = (v<0?12:11);\n\tvar o = SSF_strip_decimal(v.toFixed(12)); if(o.length <= w) return o;\n\to = v.toPrecision(10); if(o.length <= w) return o;\n\treturn v.toExponential(5);\n}\n\n/* exponent >= 11 or <= -10 likely exponential */\nfunction SSF_large_exp(v/*:number*/)/*:string*/ {\n\tvar o = SSF_strip_decimal(v.toFixed(11));\n\treturn (o.length > (v<0?12:11) || o === \"0\" || o === \"-0\") ? v.toPrecision(6) : o;\n}\n\nfunction SSF_general_num(v/*:number*/)/*:string*/ {\n\tvar V = Math.floor(Math.log(Math.abs(v))*Math.LOG10E), o;\n\n\tif(V >= -4 && V <= -1) o = v.toPrecision(10+V);\n\telse if(Math.abs(V) <= 9) o = SSF_small_exp(v);\n\telse if(V === 10) o = v.toFixed(10).substr(0,12);\n\telse o = SSF_large_exp(v);\n\n\treturn SSF_strip_decimal(SSF_normalize_exp(o.toUpperCase()));\n}\n\n\n/*\n\t\"General\" rules:\n\t- text is passed through (\"@\")\n\t- booleans are rendered as TRUE/FALSE\n\t- \"up to 11 characters\" displayed for numbers\n\t- Default date format (code 14) used for Dates\n\n\tThe longest 32-bit integer text is \"-2147483648\", exactly 11 chars\n\tTODO: technically the display depends on the width of the cell\n*/\nfunction SSF_general(v/*:any*/, opts/*:any*/) {\n\tswitch(typeof v) {\n\t\tcase 'string': return v;\n\t\tcase 'boolean': return v ? \"TRUE\" : \"FALSE\";\n\t\tcase 'number': return (v|0) === v ? v.toString(10) : SSF_general_num(v);\n\t\tcase 'undefined': return \"\";\n\t\tcase 'object':\n\t\t\tif(v == null) return \"\";\n\t\t\tif(v instanceof Date) return SSF_format(14, datenum_local(v, opts && opts.date1904), opts);\n\t}\n\tthrow new Error(\"unsupported value in General format: \" + v);\n}\n\nfunction SSF_fix_hijri(date/*:Date*/, o/*:[number, number, number]*/) {\n  /* TODO: properly adjust y/m/d and  */\n  o[0] -= 581;\n  var dow = date.getDay();\n  if(date < 60) dow = (dow + 6) % 7;\n  return dow;\n}\n//var THAI_DIGITS = \"\\u0E50\\u0E51\\u0E52\\u0E53\\u0E54\\u0E55\\u0E56\\u0E57\\u0E58\\u0E59\".split(\"\");\nfunction SSF_write_date(type/*:number*/, fmt/*:string*/, val, ss0/*:?number*/)/*:string*/ {\n\tvar o=\"\", ss=0, tt=0, y = val.y, out, outl = 0;\n\tswitch(type) {\n\t\tcase 98: /* 'b' buddhist year */\n\t\t\ty = val.y + 543;\n\t\t\t/* falls through */\n\t\tcase 121: /* 'y' year */\n\t\tswitch(fmt.length) {\n\t\t\tcase 1: case 2: out = y % 100; outl = 2; break;\n\t\t\tdefault: out = y % 10000; outl = 4; break;\n\t\t} break;\n\t\tcase 109: /* 'm' month */\n\t\tswitch(fmt.length) {\n\t\t\tcase 1: case 2: out = val.m; outl = fmt.length; break;\n\t\t\tcase 3: return months[val.m-1][1];\n\t\t\tcase 5: return months[val.m-1][0];\n\t\t\tdefault: return months[val.m-1][2];\n\t\t} break;\n\t\tcase 100: /* 'd' day */\n\t\tswitch(fmt.length) {\n\t\t\tcase 1: case 2: out = val.d; outl = fmt.length; break;\n\t\t\tcase 3: return days[val.q][0];\n\t\t\tdefault: return days[val.q][1];\n\t\t} break;\n\t\tcase 104: /* 'h' 12-hour */\n\t\tswitch(fmt.length) {\n\t\t\tcase 1: case 2: out = 1+(val.H+11)%12; outl = fmt.length; break;\n\t\t\tdefault: throw 'bad hour format: ' + fmt;\n\t\t} break;\n\t\tcase 72: /* 'H' 24-hour */\n\t\tswitch(fmt.length) {\n\t\t\tcase 1: case 2: out = val.H; outl = fmt.length; break;\n\t\t\tdefault: throw 'bad hour format: ' + fmt;\n\t\t} break;\n\t\tcase 77: /* 'M' minutes */\n\t\tswitch(fmt.length) {\n\t\t\tcase 1: case 2: out = val.M; outl = fmt.length; break;\n\t\t\tdefault: throw 'bad minute format: ' + fmt;\n\t\t} break;\n\t\tcase 115: /* 's' seconds */\n\t\t\tif(fmt != 's' && fmt != 'ss' && fmt != '.0' && fmt != '.00' && fmt != '.000') throw 'bad second format: ' + fmt;\n\t\t\tif(val.u === 0 && (fmt == \"s\" || fmt == \"ss\")) return pad0(val.S, fmt.length);\n\t\t\t/*::if(!ss0) ss0 = 0; */\n\t\t\tif(ss0 >= 2) tt = ss0 === 3 ? 1000 : 100;\n\t\t\telse tt = ss0 === 1 ? 10 : 1;\n\t\t\tss = Math.round((tt)*(val.S + val.u));\n\t\t\tif(ss >= 60*tt) ss = 0;\n\t\t\tif(fmt === 's') return ss === 0 ? \"0\" : \"\"+ss/tt;\n\t\t\to = pad0(ss,2 + ss0);\n\t\t\tif(fmt === 'ss') return o.substr(0,2);\n\t\t\treturn \".\" + o.substr(2,fmt.length-1);\n\t\tcase 90: /* 'Z' absolute time */\n\t\tswitch(fmt) {\n\t\t\tcase '[h]': case '[hh]': out = val.D*24+val.H; break;\n\t\t\tcase '[m]': case '[mm]': out = (val.D*24+val.H)*60+val.M; break;\n\t\t\tcase '[s]': case '[ss]': out = ((val.D*24+val.H)*60+val.M)*60+Math.round(val.S+val.u); break;\n\t\t\tdefault: throw 'bad abstime format: ' + fmt;\n\t\t} outl = fmt.length === 3 ? 1 : 2; break;\n\t\tcase 101: /* 'e' era */\n\t\t\tout = y; outl = 1; break;\n\t}\n\tvar outstr = outl > 0 ? pad0(out, outl) : \"\";\n\treturn outstr;\n}\n\n\n/*jshint -W086 */\n/*jshint +W086 */\nfunction commaify(s/*:string*/)/*:string*/ {\n\tvar w = 3;\n\tif(s.length <= w) return s;\n\tvar j = (s.length % w), o = s.substr(0,j);\n\tfor(; j!=s.length; j+=w) o+=(o.length > 0 ? \",\" : \"\") + s.substr(j,w);\n\treturn o;\n}\nvar pct1 = /%/g;\nfunction write_num_pct(type/*:string*/, fmt/*:string*/, val/*:number*/)/*:string*/{\n\tvar sfmt = fmt.replace(pct1,\"\"), mul = fmt.length - sfmt.length;\n\treturn write_num(type, sfmt, val * Math.pow(10,2*mul)) + fill(\"%\",mul);\n}\n\nfunction write_num_cm(type/*:string*/, fmt/*:string*/, val/*:number*/)/*:string*/{\n\tvar idx = fmt.length - 1;\n\twhile(fmt.charCodeAt(idx-1) === 44) --idx;\n\treturn write_num(type, fmt.substr(0,idx), val / Math.pow(10,3*(fmt.length-idx)));\n}\n\nfunction write_num_exp(fmt/*:string*/, val/*:number*/)/*:string*/{\n\tvar o/*:string*/;\n\tvar idx = fmt.indexOf(\"E\") - fmt.indexOf(\".\") - 1;\n\tif(fmt.match(/^#+0.0E\\+0$/)) {\n\t\tif(val == 0) return \"0.0E+0\";\n\t\telse if(val < 0) return \"-\" + write_num_exp(fmt, -val);\n\t\tvar period = fmt.indexOf(\".\"); if(period === -1) period=fmt.indexOf('E');\n\t\tvar ee = Math.floor(Math.log(val)*Math.LOG10E)%period;\n\t\tif(ee < 0) ee += period;\n\t\to = (val/Math.pow(10,ee)).toPrecision(idx+1+(period+ee)%period);\n\t\tif(o.indexOf(\"e\") === -1) {\n\t\t\tvar fakee = Math.floor(Math.log(val)*Math.LOG10E);\n\t\t\tif(o.indexOf(\".\") === -1) o = o.charAt(0) + \".\" + o.substr(1) + \"E+\" + (fakee - o.length+ee);\n\t\t\telse o += \"E+\" + (fakee - ee);\n\t\t\twhile(o.substr(0,2) === \"0.\") {\n\t\t\t\to = o.charAt(0) + o.substr(2,period) + \".\" + o.substr(2+period);\n\t\t\t\to = o.replace(/^0+([1-9])/,\"$1\").replace(/^0+\\./,\"0.\");\n\t\t\t}\n\t\t\to = o.replace(/\\+-/,\"-\");\n\t\t}\n\t\to = o.replace(/^([+-]?)(\\d*)\\.(\\d*)[Ee]/,function($$,$1,$2,$3) { return $1 + $2 + $3.substr(0,(period+ee)%period) + \".\" + $3.substr(ee) + \"E\"; });\n\t} else o = val.toExponential(idx);\n\tif(fmt.match(/E\\+00$/) && o.match(/e[+-]\\d$/)) o = o.substr(0,o.length-1) + \"0\" + o.charAt(o.length-1);\n\tif(fmt.match(/E\\-/) && o.match(/e\\+/)) o = o.replace(/e\\+/,\"e\");\n\treturn o.replace(\"e\",\"E\");\n}\nvar frac1 = /# (\\?+)( ?)\\/( ?)(\\d+)/;\nfunction write_num_f1(r/*:Array<string>*/, aval/*:number*/, sign/*:string*/)/*:string*/ {\n\tvar den = parseInt(r[4],10), rr = Math.round(aval * den), base = Math.floor(rr/den);\n\tvar myn = (rr - base*den), myd = den;\n\treturn sign + (base === 0 ? \"\" : \"\"+base) + \" \" + (myn === 0 ? fill(\" \", r[1].length + 1 + r[4].length) : pad_(myn,r[1].length) + r[2] + \"/\" + r[3] + pad0(myd,r[4].length));\n}\nfunction write_num_f2(r/*:Array<string>*/, aval/*:number*/, sign/*:string*/)/*:string*/ {\n\treturn sign + (aval === 0 ? \"\" : \"\"+aval) + fill(\" \", r[1].length + 2 + r[4].length);\n}\nvar dec1 = /^#*0*\\.([0#]+)/;\nvar closeparen = /\\).*[0#]/;\nvar phone = /\\(###\\) ###\\\\?-####/;\nfunction hashq(str/*:string*/)/*:string*/ {\n\tvar o = \"\", cc;\n\tfor(var i = 0; i != str.length; ++i) switch((cc=str.charCodeAt(i))) {\n\t\tcase 35: break;\n\t\tcase 63: o+= \" \"; break;\n\t\tcase 48: o+= \"0\"; break;\n\t\tdefault: o+= String.fromCharCode(cc);\n\t}\n\treturn o;\n}\nfunction rnd(val/*:number*/, d/*:number*/)/*:string*/ { var dd = Math.pow(10,d); return \"\"+(Math.round(val * dd)/dd); }\nfunction dec(val/*:number*/, d/*:number*/)/*:number*/ {\n\tvar _frac = val - Math.floor(val), dd = Math.pow(10,d);\n\tif (d < ('' + Math.round(_frac * dd)).length) return 0;\n\treturn Math.round(_frac * dd);\n}\nfunction carry(val/*:number*/, d/*:number*/)/*:number*/ {\n\tif (d < ('' + Math.round((val-Math.floor(val))*Math.pow(10,d))).length) {\n\t\treturn 1;\n\t}\n\treturn 0;\n}\nfunction flr(val/*:number*/)/*:string*/ {\n\tif(val < 2147483647 && val > -2147483648) return \"\"+(val >= 0 ? (val|0) : (val-1|0));\n\treturn \"\"+Math.floor(val);\n}\nfunction write_num_flt(type/*:string*/, fmt/*:string*/, val/*:number*/)/*:string*/ {\n\tif(type.charCodeAt(0) === 40 && !fmt.match(closeparen)) {\n\t\tvar ffmt = fmt.replace(/\\( */,\"\").replace(/ \\)/,\"\").replace(/\\)/,\"\");\n\t\tif(val >= 0) return write_num_flt('n', ffmt, val);\n\t\treturn '(' + write_num_flt('n', ffmt, -val) + ')';\n\t}\n\tif(fmt.charCodeAt(fmt.length - 1) === 44) return write_num_cm(type, fmt, val);\n\tif(fmt.indexOf('%') !== -1) return write_num_pct(type, fmt, val);\n\tif(fmt.indexOf('E') !== -1) return write_num_exp(fmt, val);\n\tif(fmt.charCodeAt(0) === 36) return \"$\"+write_num_flt(type,fmt.substr(fmt.charAt(1)==' '?2:1),val);\n\tvar o;\n\tvar r/*:?Array<string>*/, ri, ff, aval = Math.abs(val), sign = val < 0 ? \"-\" : \"\";\n\tif(fmt.match(/^00+$/)) return sign + pad0r(aval,fmt.length);\n\tif(fmt.match(/^[#?]+$/)) {\n\t\to = pad0r(val,0); if(o === \"0\") o = \"\";\n\t\treturn o.length > fmt.length ? o : hashq(fmt.substr(0,fmt.length-o.length)) + o;\n\t}\n\tif((r = fmt.match(frac1))) return write_num_f1(r, aval, sign);\n\tif(fmt.match(/^#+0+$/)) return sign + pad0r(aval,fmt.length - fmt.indexOf(\"0\"));\n\tif((r = fmt.match(dec1))) {\n\t\to = rnd(val, r[1].length).replace(/^([^\\.]+)$/,\"$1.\"+hashq(r[1])).replace(/\\.$/,\".\"+hashq(r[1])).replace(/\\.(\\d*)$/,function($$, $1) { return \".\" + $1 + fill(\"0\", hashq(/*::(*/r/*::||[\"\"])*/[1]).length-$1.length); });\n\t\treturn fmt.indexOf(\"0.\") !== -1 ? o : o.replace(/^0\\./,\".\");\n\t}\n\tfmt = fmt.replace(/^#+([0.])/, \"$1\");\n\tif((r = fmt.match(/^(0*)\\.(#*)$/))) {\n\t\treturn sign + rnd(aval, r[2].length).replace(/\\.(\\d*[1-9])0*$/,\".$1\").replace(/^(-?\\d*)$/,\"$1.\").replace(/^0\\./,r[1].length?\"0.\":\".\");\n\t}\n\tif((r = fmt.match(/^#{1,3},##0(\\.?)$/))) return sign + commaify(pad0r(aval,0));\n\tif((r = fmt.match(/^#,##0\\.([#0]*0)$/))) {\n\t\treturn val < 0 ? \"-\" + write_num_flt(type, fmt, -val) : commaify(\"\"+(Math.floor(val) + carry(val, r[1].length))) + \".\" + pad0(dec(val, r[1].length),r[1].length);\n\t}\n\tif((r = fmt.match(/^#,#*,#0/))) return write_num_flt(type,fmt.replace(/^#,#*,/,\"\"),val);\n\tif((r = fmt.match(/^([0#]+)(\\\\?-([0#]+))+$/))) {\n\t\to = _strrev(write_num_flt(type, fmt.replace(/[\\\\-]/g,\"\"), val));\n\t\tri = 0;\n\t\treturn _strrev(_strrev(fmt.replace(/\\\\/g,\"\")).replace(/[0#]/g,function(x){return ri<o.length?o.charAt(ri++):x==='0'?'0':\"\";}));\n\t}\n\tif(fmt.match(phone)) {\n\t\to = write_num_flt(type, \"##########\", val);\n\t\treturn \"(\" + o.substr(0,3) + \") \" + o.substr(3, 3) + \"-\" + o.substr(6);\n\t}\n\tvar oa = \"\";\n\tif((r = fmt.match(/^([#0?]+)( ?)\\/( ?)([#0?]+)/))) {\n\t\tri = Math.min(/*::String(*/r[4]/*::)*/.length,7);\n\t\tff = SSF_frac(aval, Math.pow(10,ri)-1, false);\n\t\to = \"\" + sign;\n\t\toa = write_num(\"n\", /*::String(*/r[1]/*::)*/, ff[1]);\n\t\tif(oa.charAt(oa.length-1) == \" \") oa = oa.substr(0,oa.length-1) + \"0\";\n\t\to += oa + /*::String(*/r[2]/*::)*/ + \"/\" + /*::String(*/r[3]/*::)*/;\n\t\toa = rpad_(ff[2],ri);\n\t\tif(oa.length < r[4].length) oa = hashq(r[4].substr(r[4].length-oa.length)) + oa;\n\t\to += oa;\n\t\treturn o;\n\t}\n\tif((r = fmt.match(/^# ([#0?]+)( ?)\\/( ?)([#0?]+)/))) {\n\t\tri = Math.min(Math.max(r[1].length, r[4].length),7);\n\t\tff = SSF_frac(aval, Math.pow(10,ri)-1, true);\n\t\treturn sign + (ff[0]||(ff[1] ? \"\" : \"0\")) + \" \" + (ff[1] ? pad_(ff[1],ri) + r[2] + \"/\" + r[3] + rpad_(ff[2],ri): fill(\" \", 2*ri+1 + r[2].length + r[3].length));\n\t}\n\tif((r = fmt.match(/^[#0?]+$/))) {\n\t\to = pad0r(val, 0);\n\t\tif(fmt.length <= o.length) return o;\n\t\treturn hashq(fmt.substr(0,fmt.length-o.length)) + o;\n\t}\n\tif((r = fmt.match(/^([#0?]+)\\.([#0]+)$/))) {\n\t\to = \"\" + val.toFixed(Math.min(r[2].length,10)).replace(/([^0])0+$/,\"$1\");\n\t\tri = o.indexOf(\".\");\n\t\tvar lres = fmt.indexOf(\".\") - ri, rres = fmt.length - o.length - lres;\n\t\treturn hashq(fmt.substr(0,lres) + o + fmt.substr(fmt.length-rres));\n\t}\n\tif((r = fmt.match(/^00,000\\.([#0]*0)$/))) {\n\t\tri = dec(val, r[1].length);\n\t\treturn val < 0 ? \"-\" + write_num_flt(type, fmt, -val) : commaify(flr(val)).replace(/^\\d,\\d{3}$/,\"0$&\").replace(/^\\d*$/,function($$) { return \"00,\" + ($$.length < 3 ? pad0(0,3-$$.length) : \"\") + $$; }) + \".\" + pad0(ri,r[1].length);\n\t}\n\tswitch(fmt) {\n\t\tcase \"###,##0.00\": return write_num_flt(type, \"#,##0.00\", val);\n\t\tcase \"###,###\":\n\t\tcase \"##,###\":\n\t\tcase \"#,###\": var x = commaify(pad0r(aval,0)); return x !== \"0\" ? sign + x : \"\";\n\t\tcase \"###,###.00\": return write_num_flt(type, \"###,##0.00\",val).replace(/^0\\./,\".\");\n\t\tcase \"#,###.00\": return write_num_flt(type, \"#,##0.00\",val).replace(/^0\\./,\".\");\n\t\tdefault:\n\t}\n\tthrow new Error(\"unsupported format |\" + fmt + \"|\");\n}\nfunction write_num_cm2(type/*:string*/, fmt/*:string*/, val/*:number*/)/*:string*/{\n\tvar idx = fmt.length - 1;\n\twhile(fmt.charCodeAt(idx-1) === 44) --idx;\n\treturn write_num(type, fmt.substr(0,idx), val / Math.pow(10,3*(fmt.length-idx)));\n}\nfunction write_num_pct2(type/*:string*/, fmt/*:string*/, val/*:number*/)/*:string*/{\n\tvar sfmt = fmt.replace(pct1,\"\"), mul = fmt.length - sfmt.length;\n\treturn write_num(type, sfmt, val * Math.pow(10,2*mul)) + fill(\"%\",mul);\n}\nfunction write_num_exp2(fmt/*:string*/, val/*:number*/)/*:string*/{\n\tvar o/*:string*/;\n\tvar idx = fmt.indexOf(\"E\") - fmt.indexOf(\".\") - 1;\n\tif(fmt.match(/^#+0.0E\\+0$/)) {\n\t\tif(val == 0) return \"0.0E+0\";\n\t\telse if(val < 0) return \"-\" + write_num_exp2(fmt, -val);\n\t\tvar period = fmt.indexOf(\".\"); if(period === -1) period=fmt.indexOf('E');\n\t\tvar ee = Math.floor(Math.log(val)*Math.LOG10E)%period;\n\t\tif(ee < 0) ee += period;\n\t\to = (val/Math.pow(10,ee)).toPrecision(idx+1+(period+ee)%period);\n\t\tif(!o.match(/[Ee]/)) {\n\t\t\tvar fakee = Math.floor(Math.log(val)*Math.LOG10E);\n\t\t\tif(o.indexOf(\".\") === -1) o = o.charAt(0) + \".\" + o.substr(1) + \"E+\" + (fakee - o.length+ee);\n\t\t\telse o += \"E+\" + (fakee - ee);\n\t\t\to = o.replace(/\\+-/,\"-\");\n\t\t}\n\t\to = o.replace(/^([+-]?)(\\d*)\\.(\\d*)[Ee]/,function($$,$1,$2,$3) { return $1 + $2 + $3.substr(0,(period+ee)%period) + \".\" + $3.substr(ee) + \"E\"; });\n\t} else o = val.toExponential(idx);\n\tif(fmt.match(/E\\+00$/) && o.match(/e[+-]\\d$/)) o = o.substr(0,o.length-1) + \"0\" + o.charAt(o.length-1);\n\tif(fmt.match(/E\\-/) && o.match(/e\\+/)) o = o.replace(/e\\+/,\"e\");\n\treturn o.replace(\"e\",\"E\");\n}\nfunction write_num_int(type/*:string*/, fmt/*:string*/, val/*:number*/)/*:string*/ {\n\tif(type.charCodeAt(0) === 40 && !fmt.match(closeparen)) {\n\t\tvar ffmt = fmt.replace(/\\( */,\"\").replace(/ \\)/,\"\").replace(/\\)/,\"\");\n\t\tif(val >= 0) return write_num_int('n', ffmt, val);\n\t\treturn '(' + write_num_int('n', ffmt, -val) + ')';\n\t}\n\tif(fmt.charCodeAt(fmt.length - 1) === 44) return write_num_cm2(type, fmt, val);\n\tif(fmt.indexOf('%') !== -1) return write_num_pct2(type, fmt, val);\n\tif(fmt.indexOf('E') !== -1) return write_num_exp2(fmt, val);\n\tif(fmt.charCodeAt(0) === 36) return \"$\"+write_num_int(type,fmt.substr(fmt.charAt(1)==' '?2:1),val);\n\tvar o;\n\tvar r/*:?Array<string>*/, ri, ff, aval = Math.abs(val), sign = val < 0 ? \"-\" : \"\";\n\tif(fmt.match(/^00+$/)) return sign + pad0(aval,fmt.length);\n\tif(fmt.match(/^[#?]+$/)) {\n\t\to = (\"\"+val); if(val === 0) o = \"\";\n\t\treturn o.length > fmt.length ? o : hashq(fmt.substr(0,fmt.length-o.length)) + o;\n\t}\n\tif((r = fmt.match(frac1))) return write_num_f2(r, aval, sign);\n\tif(fmt.match(/^#+0+$/)) return sign + pad0(aval,fmt.length - fmt.indexOf(\"0\"));\n\tif((r = fmt.match(dec1))) {\n\t\t/*:: if(!Array.isArray(r)) throw new Error(\"unreachable\"); */\n\t\to = (\"\"+val).replace(/^([^\\.]+)$/,\"$1.\"+hashq(r[1])).replace(/\\.$/,\".\"+hashq(r[1]));\n\t\to = o.replace(/\\.(\\d*)$/,function($$, $1) {\n\t\t/*:: if(!Array.isArray(r)) throw new Error(\"unreachable\"); */\n\t\t\treturn \".\" + $1 + fill(\"0\", hashq(r[1]).length-$1.length); });\n\t\treturn fmt.indexOf(\"0.\") !== -1 ? o : o.replace(/^0\\./,\".\");\n\t}\n\tfmt = fmt.replace(/^#+([0.])/, \"$1\");\n\tif((r = fmt.match(/^(0*)\\.(#*)$/))) {\n\t\treturn sign + (\"\"+aval).replace(/\\.(\\d*[1-9])0*$/,\".$1\").replace(/^(-?\\d*)$/,\"$1.\").replace(/^0\\./,r[1].length?\"0.\":\".\");\n\t}\n\tif((r = fmt.match(/^#{1,3},##0(\\.?)$/))) return sign + commaify((\"\"+aval));\n\tif((r = fmt.match(/^#,##0\\.([#0]*0)$/))) {\n\t\treturn val < 0 ? \"-\" + write_num_int(type, fmt, -val) : commaify((\"\"+val)) + \".\" + fill('0',r[1].length);\n\t}\n\tif((r = fmt.match(/^#,#*,#0/))) return write_num_int(type,fmt.replace(/^#,#*,/,\"\"),val);\n\tif((r = fmt.match(/^([0#]+)(\\\\?-([0#]+))+$/))) {\n\t\to = _strrev(write_num_int(type, fmt.replace(/[\\\\-]/g,\"\"), val));\n\t\tri = 0;\n\t\treturn _strrev(_strrev(fmt.replace(/\\\\/g,\"\")).replace(/[0#]/g,function(x){return ri<o.length?o.charAt(ri++):x==='0'?'0':\"\";}));\n\t}\n\tif(fmt.match(phone)) {\n\t\to = write_num_int(type, \"##########\", val);\n\t\treturn \"(\" + o.substr(0,3) + \") \" + o.substr(3, 3) + \"-\" + o.substr(6);\n\t}\n\tvar oa = \"\";\n\tif((r = fmt.match(/^([#0?]+)( ?)\\/( ?)([#0?]+)/))) {\n\t\tri = Math.min(/*::String(*/r[4]/*::)*/.length,7);\n\t\tff = SSF_frac(aval, Math.pow(10,ri)-1, false);\n\t\to = \"\" + sign;\n\t\toa = write_num(\"n\", /*::String(*/r[1]/*::)*/, ff[1]);\n\t\tif(oa.charAt(oa.length-1) == \" \") oa = oa.substr(0,oa.length-1) + \"0\";\n\t\to += oa + /*::String(*/r[2]/*::)*/ + \"/\" + /*::String(*/r[3]/*::)*/;\n\t\toa = rpad_(ff[2],ri);\n\t\tif(oa.length < r[4].length) oa = hashq(r[4].substr(r[4].length-oa.length)) + oa;\n\t\to += oa;\n\t\treturn o;\n\t}\n\tif((r = fmt.match(/^# ([#0?]+)( ?)\\/( ?)([#0?]+)/))) {\n\t\tri = Math.min(Math.max(r[1].length, r[4].length),7);\n\t\tff = SSF_frac(aval, Math.pow(10,ri)-1, true);\n\t\treturn sign + (ff[0]||(ff[1] ? \"\" : \"0\")) + \" \" + (ff[1] ? pad_(ff[1],ri) + r[2] + \"/\" + r[3] + rpad_(ff[2],ri): fill(\" \", 2*ri+1 + r[2].length + r[3].length));\n\t}\n\tif((r = fmt.match(/^[#0?]+$/))) {\n\t\to = \"\" + val;\n\t\tif(fmt.length <= o.length) return o;\n\t\treturn hashq(fmt.substr(0,fmt.length-o.length)) + o;\n\t}\n\tif((r = fmt.match(/^([#0]+)\\.([#0]+)$/))) {\n\t\to = \"\" + val.toFixed(Math.min(r[2].length,10)).replace(/([^0])0+$/,\"$1\");\n\t\tri = o.indexOf(\".\");\n\t\tvar lres = fmt.indexOf(\".\") - ri, rres = fmt.length - o.length - lres;\n\t\treturn hashq(fmt.substr(0,lres) + o + fmt.substr(fmt.length-rres));\n\t}\n\tif((r = fmt.match(/^00,000\\.([#0]*0)$/))) {\n\t\treturn val < 0 ? \"-\" + write_num_int(type, fmt, -val) : commaify(\"\"+val).replace(/^\\d,\\d{3}$/,\"0$&\").replace(/^\\d*$/,function($$) { return \"00,\" + ($$.length < 3 ? pad0(0,3-$$.length) : \"\") + $$; }) + \".\" + pad0(0,r[1].length);\n\t}\n\tswitch(fmt) {\n\t\tcase \"###,###\":\n\t\tcase \"##,###\":\n\t\tcase \"#,###\": var x = commaify(\"\"+aval); return x !== \"0\" ? sign + x : \"\";\n\t\tdefault:\n\t\t\tif(fmt.match(/\\.[0#?]*$/)) return write_num_int(type, fmt.slice(0,fmt.lastIndexOf(\".\")), val) + hashq(fmt.slice(fmt.lastIndexOf(\".\")));\n\t}\n\tthrow new Error(\"unsupported format |\" + fmt + \"|\");\n}\nfunction write_num(type/*:string*/, fmt/*:string*/, val/*:number*/)/*:string*/ {\n\treturn (val|0) === val ? write_num_int(type, fmt, val) : write_num_flt(type, fmt, val);\n}\nfunction SSF_split_fmt(fmt/*:string*/)/*:Array<string>*/ {\n\tvar out/*:Array<string>*/ = [];\n\tvar in_str = false/*, cc*/;\n\tfor(var i = 0, j = 0; i < fmt.length; ++i) switch((/*cc=*/fmt.charCodeAt(i))) {\n\t\tcase 34: /* '\"' */\n\t\t\tin_str = !in_str; break;\n\t\tcase 95: case 42: case 92: /* '_' '*' '\\\\' */\n\t\t\t++i; break;\n\t\tcase 59: /* ';' */\n\t\t\tout[out.length] = fmt.substr(j,i-j);\n\t\t\tj = i+1;\n\t}\n\tout[out.length] = fmt.substr(j);\n\tif(in_str === true) throw new Error(\"Format |\" + fmt + \"| unterminated string \");\n\treturn out;\n}\n\nvar SSF_abstime = /\\[[HhMmSs\\u0E0A\\u0E19\\u0E17]*\\]/;\nfunction fmt_is_date(fmt/*:string*/)/*:boolean*/ {\n\tvar i = 0, /*cc = 0,*/ c = \"\", o = \"\";\n\twhile(i < fmt.length) {\n\t\tswitch((c = fmt.charAt(i))) {\n\t\t\tcase 'G': if(SSF_isgeneral(fmt, i)) i+= 6; i++; break;\n\t\t\tcase '\"': for(;(/*cc=*/fmt.charCodeAt(++i)) !== 34 && i < fmt.length;){/*empty*/} ++i; break;\n\t\t\tcase '\\\\': i+=2; break;\n\t\t\tcase '_': i+=2; break;\n\t\t\tcase '@': ++i; break;\n\t\t\tcase 'B': case 'b':\n\t\t\t\tif(fmt.charAt(i+1) === \"1\" || fmt.charAt(i+1) === \"2\") return true;\n\t\t\t\t/* falls through */\n\t\t\tcase 'M': case 'D': case 'Y': case 'H': case 'S': case 'E':\n\t\t\t\t/* falls through */\n\t\t\tcase 'm': case 'd': case 'y': case 'h': case 's': case 'e': case 'g': return true;\n\t\t\tcase 'A': case 'a': case '上':\n\t\t\t\tif(fmt.substr(i, 3).toUpperCase() === \"A/P\") return true;\n\t\t\t\tif(fmt.substr(i, 5).toUpperCase() === \"AM/PM\") return true;\n\t\t\t\tif(fmt.substr(i, 5).toUpperCase() === \"上午/下午\") return true;\n\t\t\t\t++i; break;\n\t\t\tcase '[':\n\t\t\t\to = c;\n\t\t\t\twhile(fmt.charAt(i++) !== ']' && i < fmt.length) o += fmt.charAt(i);\n\t\t\t\tif(o.match(SSF_abstime)) return true;\n\t\t\t\tbreak;\n\t\t\tcase '.':\n\t\t\t\t/* falls through */\n\t\t\tcase '0': case '#':\n\t\t\t\twhile(i < fmt.length && (\"0#?.,E+-%\".indexOf(c=fmt.charAt(++i)) > -1 || (c=='\\\\' && fmt.charAt(i+1) == \"-\" && \"0#\".indexOf(fmt.charAt(i+2))>-1))){/* empty */}\n\t\t\t\tbreak;\n\t\t\tcase '?': while(fmt.charAt(++i) === c){/* empty */} break;\n\t\t\tcase '*': ++i; if(fmt.charAt(i) == ' ' || fmt.charAt(i) == '*') ++i; break;\n\t\t\tcase '(': case ')': ++i; break;\n\t\t\tcase '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9':\n\t\t\t\twhile(i < fmt.length && \"0123456789\".indexOf(fmt.charAt(++i)) > -1){/* empty */} break;\n\t\t\tcase ' ': ++i; break;\n\t\t\tdefault: ++i; break;\n\t\t}\n\t}\n\treturn false;\n}\n\nfunction eval_fmt(fmt/*:string*/, v/*:any*/, opts/*:any*/, flen/*:number*/) {\n\tvar out = [], o = \"\", i = 0, c = \"\", lst='t', dt, j, cc;\n\tvar hr='H';\n\t/* Tokenize */\n\twhile(i < fmt.length) {\n\t\tswitch((c = fmt.charAt(i))) {\n\t\t\tcase 'G': /* General */\n\t\t\t\tif(!SSF_isgeneral(fmt, i)) throw new Error('unrecognized character ' + c + ' in ' +fmt);\n\t\t\t\tout[out.length] = {t:'G', v:'General'}; i+=7; break;\n\t\t\tcase '\"': /* Literal text */\n\t\t\t\tfor(o=\"\";(cc=fmt.charCodeAt(++i)) !== 34 && i < fmt.length;) o += String.fromCharCode(cc);\n\t\t\t\tout[out.length] = {t:'t', v:o}; ++i; break;\n\t\t\tcase '\\\\': var w = fmt.charAt(++i), t = (w === \"(\" || w === \")\") ? w : 't';\n\t\t\t\tout[out.length] = {t:t, v:w}; ++i; break;\n\t\t\tcase '_': out[out.length] = {t:'t', v:\" \"}; i+=2; break;\n\t\t\tcase '@': /* Text Placeholder */\n\t\t\t\tout[out.length] = {t:'T', v:v}; ++i; break;\n\t\t\tcase 'B': case 'b':\n\t\t\t\tif(fmt.charAt(i+1) === \"1\" || fmt.charAt(i+1) === \"2\") {\n\t\t\t\t\tif(dt==null) { dt=SSF_parse_date_code(v, opts, fmt.charAt(i+1) === \"2\"); if(dt==null) return \"\"; }\n\t\t\t\t\tout[out.length] = {t:'X', v:fmt.substr(i,2)}; lst = c; i+=2; break;\n\t\t\t\t}\n\t\t\t\t/* falls through */\n\t\t\tcase 'M': case 'D': case 'Y': case 'H': case 'S': case 'E':\n\t\t\t\tc = c.toLowerCase();\n\t\t\t\t/* falls through */\n\t\t\tcase 'm': case 'd': case 'y': case 'h': case 's': case 'e': case 'g':\n\t\t\t\tif(v < 0) return \"\";\n\t\t\t\tif(dt==null) { dt=SSF_parse_date_code(v, opts); if(dt==null) return \"\"; }\n\t\t\t\to = c; while(++i < fmt.length && fmt.charAt(i).toLowerCase() === c) o+=c;\n\t\t\t\tif(c === 'm' && lst.toLowerCase() === 'h') c = 'M';\n\t\t\t\tif(c === 'h') c = hr;\n\t\t\t\tout[out.length] = {t:c, v:o}; lst = c; break;\n\t\t\tcase 'A': case 'a': case '上':\n\t\t\t\tvar q={t:c, v:c};\n\t\t\t\tif(dt==null) dt=SSF_parse_date_code(v, opts);\n\t\t\t\tif(fmt.substr(i, 3).toUpperCase() === \"A/P\") { if(dt!=null) q.v = dt.H >= 12 ? \"P\" : \"A\"; q.t = 'T'; hr='h';i+=3;}\n\t\t\t\telse if(fmt.substr(i,5).toUpperCase() === \"AM/PM\") { if(dt!=null) q.v = dt.H >= 12 ? \"PM\" : \"AM\"; q.t = 'T'; i+=5; hr='h'; }\n\t\t\t\telse if(fmt.substr(i,5).toUpperCase() === \"上午/下午\") { if(dt!=null) q.v = dt.H >= 12 ? \"下午\" : \"上午\"; q.t = 'T'; i+=5; hr='h'; }\n\t\t\t\telse { q.t = \"t\"; ++i; }\n\t\t\t\tif(dt==null && q.t === 'T') return \"\";\n\t\t\t\tout[out.length] = q; lst = c; break;\n\t\t\tcase '[':\n\t\t\t\to = c;\n\t\t\t\twhile(fmt.charAt(i++) !== ']' && i < fmt.length) o += fmt.charAt(i);\n\t\t\t\tif(o.slice(-1) !== ']') throw 'unterminated \"[\" block: |' + o + '|';\n\t\t\t\tif(o.match(SSF_abstime)) {\n\t\t\t\t\tif(dt==null) { dt=SSF_parse_date_code(v, opts); if(dt==null) return \"\"; }\n\t\t\t\t\tout[out.length] = {t:'Z', v:o.toLowerCase()};\n\t\t\t\t\tlst = o.charAt(1);\n\t\t\t\t} else if(o.indexOf(\"$\") > -1) {\n\t\t\t\t\to = (o.match(/\\$([^-\\[\\]]*)/)||[])[1]||\"$\";\n\t\t\t\t\tif(!fmt_is_date(fmt)) out[out.length] = {t:'t',v:o};\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t/* Numbers */\n\t\t\tcase '.':\n\t\t\t\tif(dt != null) {\n\t\t\t\t\to = c; while(++i < fmt.length && (c=fmt.charAt(i)) === \"0\") o += c;\n\t\t\t\t\tout[out.length] = {t:'s', v:o}; break;\n\t\t\t\t}\n\t\t\t\t/* falls through */\n\t\t\tcase '0': case '#':\n\t\t\t\to = c; while(++i < fmt.length && \"0#?.,E+-%\".indexOf(c=fmt.charAt(i)) > -1) o += c;\n\t\t\t\tout[out.length] = {t:'n', v:o}; break;\n\t\t\tcase '?':\n\t\t\t\to = c; while(fmt.charAt(++i) === c) o+=c;\n\t\t\t\tout[out.length] = {t:c, v:o}; lst = c; break;\n\t\t\tcase '*': ++i; if(fmt.charAt(i) == ' ' || fmt.charAt(i) == '*') ++i; break; // **\n\t\t\tcase '(': case ')': out[out.length] = {t:(flen===1?'t':c), v:c}; ++i; break;\n\t\t\tcase '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9':\n\t\t\t\to = c; while(i < fmt.length && \"0123456789\".indexOf(fmt.charAt(++i)) > -1) o+=fmt.charAt(i);\n\t\t\t\tout[out.length] = {t:'D', v:o}; break;\n\t\t\tcase ' ': out[out.length] = {t:c, v:c}; ++i; break;\n\t\t\tcase '$': out[out.length] = {t:'t', v:'$'}; ++i; break;\n\t\t\tdefault:\n\t\t\t\tif(\",$-+/():!^&'~{}<>=€acfijklopqrtuvwxzP\".indexOf(c) === -1) throw new Error('unrecognized character ' + c + ' in ' + fmt);\n\t\t\t\tout[out.length] = {t:'t', v:c}; ++i; break;\n\t\t}\n\t}\n\n\t/* Scan for date/time parts */\n\tvar bt = 0, ss0 = 0, ssm;\n\tfor(i=out.length-1, lst='t'; i >= 0; --i) {\n\t\tswitch(out[i].t) {\n\t\t\tcase 'h': case 'H': out[i].t = hr; lst='h'; if(bt < 1) bt = 1; break;\n\t\t\tcase 's':\n\t\t\t\tif((ssm=out[i].v.match(/\\.0+$/))) ss0=Math.max(ss0,ssm[0].length-1);\n\t\t\t\tif(bt < 3) bt = 3;\n\t\t\t/* falls through */\n\t\t\tcase 'd': case 'y': case 'M': case 'e': lst=out[i].t; break;\n\t\t\tcase 'm': if(lst === 's') { out[i].t = 'M'; if(bt < 2) bt = 2; } break;\n\t\t\tcase 'X': /*if(out[i].v === \"B2\");*/\n\t\t\t\tbreak;\n\t\t\tcase 'Z':\n\t\t\t\tif(bt < 1 && out[i].v.match(/[Hh]/)) bt = 1;\n\t\t\t\tif(bt < 2 && out[i].v.match(/[Mm]/)) bt = 2;\n\t\t\t\tif(bt < 3 && out[i].v.match(/[Ss]/)) bt = 3;\n\t\t}\n\t}\n\t/* time rounding depends on presence of minute / second / usec fields */\n\tswitch(bt) {\n\t\tcase 0: break;\n\t\tcase 1:\n\t\t\t/*::if(!dt) break;*/\n\t\t\tif(dt.u >= 0.5) { dt.u = 0; ++dt.S; }\n\t\t\tif(dt.S >=  60) { dt.S = 0; ++dt.M; }\n\t\t\tif(dt.M >=  60) { dt.M = 0; ++dt.H; }\n\t\t\tbreak;\n\t\tcase 2:\n\t\t\t/*::if(!dt) break;*/\n\t\t\tif(dt.u >= 0.5) { dt.u = 0; ++dt.S; }\n\t\t\tif(dt.S >=  60) { dt.S = 0; ++dt.M; }\n\t\t\tbreak;\n\t}\n\n\t/* replace fields */\n\tvar nstr = \"\", jj;\n\tfor(i=0; i < out.length; ++i) {\n\t\tswitch(out[i].t) {\n\t\t\tcase 't': case 'T': case ' ': case 'D': break;\n\t\t\tcase 'X': out[i].v = \"\"; out[i].t = \";\"; break;\n\t\t\tcase 'd': case 'm': case 'y': case 'h': case 'H': case 'M': case 's': case 'e': case 'b': case 'Z':\n\t\t\t\t/*::if(!dt) throw \"unreachable\"; */\n\t\t\t\tout[i].v = SSF_write_date(out[i].t.charCodeAt(0), out[i].v, dt, ss0);\n\t\t\t\tout[i].t = 't'; break;\n\t\t\tcase 'n': case '?':\n\t\t\t\tjj = i+1;\n\t\t\t\twhile(out[jj] != null && (\n\t\t\t\t\t(c=out[jj].t) === \"?\" || c === \"D\" ||\n\t\t\t\t\t((c === \" \" || c === \"t\") && out[jj+1] != null && (out[jj+1].t === '?' || out[jj+1].t === \"t\" && out[jj+1].v === '/')) ||\n\t\t\t\t\t(out[i].t === '(' && (c === ' ' || c === 'n' || c === ')')) ||\n\t\t\t\t\t(c === 't' && (out[jj].v === '/' || out[jj].v === ' ' && out[jj+1] != null && out[jj+1].t == '?'))\n\t\t\t\t)) {\n\t\t\t\t\tout[i].v += out[jj].v;\n\t\t\t\t\tout[jj] = {v:\"\", t:\";\"}; ++jj;\n\t\t\t\t}\n\t\t\t\tnstr += out[i].v;\n\t\t\t\ti = jj-1; break;\n\t\t\tcase 'G': out[i].t = 't'; out[i].v = SSF_general(v,opts); break;\n\t\t}\n\t}\n\tvar vv = \"\", myv, ostr;\n\tif(nstr.length > 0) {\n\t\tif(nstr.charCodeAt(0) == 40) /* '(' */ {\n\t\t\tmyv = (v<0&&nstr.charCodeAt(0) === 45 ? -v : v);\n\t\t\tostr = write_num('n', nstr, myv);\n\t\t} else {\n\t\t\tmyv = (v<0 && flen > 1 ? -v : v);\n\t\t\tostr = write_num('n', nstr, myv);\n\t\t\tif(myv < 0 && out[0] && out[0].t == 't') {\n\t\t\t\tostr = ostr.substr(1);\n\t\t\t\tout[0].v = \"-\" + out[0].v;\n\t\t\t}\n\t\t}\n\t\tjj=ostr.length-1;\n\t\tvar decpt = out.length;\n\t\tfor(i=0; i < out.length; ++i) if(out[i] != null && out[i].t != 't' && out[i].v.indexOf(\".\") > -1) { decpt = i; break; }\n\t\tvar lasti=out.length;\n\t\tif(decpt === out.length && ostr.indexOf(\"E\") === -1) {\n\t\t\tfor(i=out.length-1; i>= 0;--i) {\n\t\t\t\tif(out[i] == null || 'n?'.indexOf(out[i].t) === -1) continue;\n\t\t\t\tif(jj>=out[i].v.length-1) { jj -= out[i].v.length; out[i].v = ostr.substr(jj+1, out[i].v.length); }\n\t\t\t\telse if(jj < 0) out[i].v = \"\";\n\t\t\t\telse { out[i].v = ostr.substr(0, jj+1); jj = -1; }\n\t\t\t\tout[i].t = 't';\n\t\t\t\tlasti = i;\n\t\t\t}\n\t\t\tif(jj>=0 && lasti<out.length) out[lasti].v = ostr.substr(0,jj+1) + out[lasti].v;\n\t\t}\n\t\telse if(decpt !== out.length && ostr.indexOf(\"E\") === -1) {\n\t\t\tjj = ostr.indexOf(\".\")-1;\n\t\t\tfor(i=decpt; i>= 0; --i) {\n\t\t\t\tif(out[i] == null || 'n?'.indexOf(out[i].t) === -1) continue;\n\t\t\t\tj=out[i].v.indexOf(\".\")>-1&&i===decpt?out[i].v.indexOf(\".\")-1:out[i].v.length-1;\n\t\t\t\tvv = out[i].v.substr(j+1);\n\t\t\t\tfor(; j>=0; --j) {\n\t\t\t\t\tif(jj>=0 && (out[i].v.charAt(j) === \"0\" || out[i].v.charAt(j) === \"#\")) vv = ostr.charAt(jj--) + vv;\n\t\t\t\t}\n\t\t\t\tout[i].v = vv;\n\t\t\t\tout[i].t = 't';\n\t\t\t\tlasti = i;\n\t\t\t}\n\t\t\tif(jj>=0 && lasti<out.length) out[lasti].v = ostr.substr(0,jj+1) + out[lasti].v;\n\t\t\tjj = ostr.indexOf(\".\")+1;\n\t\t\tfor(i=decpt; i<out.length; ++i) {\n\t\t\t\tif(out[i] == null || ('n?('.indexOf(out[i].t) === -1 && i !== decpt)) continue;\n\t\t\t\tj=out[i].v.indexOf(\".\")>-1&&i===decpt?out[i].v.indexOf(\".\")+1:0;\n\t\t\t\tvv = out[i].v.substr(0,j);\n\t\t\t\tfor(; j<out[i].v.length; ++j) {\n\t\t\t\t\tif(jj<ostr.length) vv += ostr.charAt(jj++);\n\t\t\t\t}\n\t\t\t\tout[i].v = vv;\n\t\t\t\tout[i].t = 't';\n\t\t\t\tlasti = i;\n\t\t\t}\n\t\t}\n\t}\n\tfor(i=0; i<out.length; ++i) if(out[i] != null && 'n?'.indexOf(out[i].t)>-1) {\n\t\tmyv = (flen >1 && v < 0 && i>0 && out[i-1].v === \"-\" ? -v:v);\n\t\tout[i].v = write_num(out[i].t, out[i].v, myv);\n\t\tout[i].t = 't';\n\t}\n\tvar retval = \"\";\n\tfor(i=0; i !== out.length; ++i) if(out[i] != null) retval += out[i].v;\n\treturn retval;\n}\n\nvar cfregex2 = /\\[(=|>[=]?|<[>=]?)(-?\\d+(?:\\.\\d*)?)\\]/;\nfunction chkcond(v, rr) {\n\tif(rr == null) return false;\n\tvar thresh = parseFloat(rr[2]);\n\tswitch(rr[1]) {\n\t\tcase \"=\":  if(v == thresh) return true; break;\n\t\tcase \">\":  if(v >  thresh) return true; break;\n\t\tcase \"<\":  if(v <  thresh) return true; break;\n\t\tcase \"<>\": if(v != thresh) return true; break;\n\t\tcase \">=\": if(v >= thresh) return true; break;\n\t\tcase \"<=\": if(v <= thresh) return true; break;\n\t}\n\treturn false;\n}\nfunction choose_fmt(f/*:string*/, v/*:any*/) {\n\tvar fmt = SSF_split_fmt(f);\n\tvar l = fmt.length, lat = fmt[l-1].indexOf(\"@\");\n\tif(l<4 && lat>-1) --l;\n\tif(fmt.length > 4) throw new Error(\"cannot find right format for |\" + fmt.join(\"|\") + \"|\");\n\tif(typeof v !== \"number\") return [4, fmt.length === 4 || lat>-1?fmt[fmt.length-1]:\"@\"];\n\tswitch(fmt.length) {\n\t\tcase 1: fmt = lat>-1 ? [\"General\", \"General\", \"General\", fmt[0]] : [fmt[0], fmt[0], fmt[0], \"@\"]; break;\n\t\tcase 2: fmt = lat>-1 ? [fmt[0], fmt[0], fmt[0], fmt[1]] : [fmt[0], fmt[1], fmt[0], \"@\"]; break;\n\t\tcase 3: fmt = lat>-1 ? [fmt[0], fmt[1], fmt[0], fmt[2]] : [fmt[0], fmt[1], fmt[2], \"@\"]; break;\n\t\tcase 4: break;\n\t}\n\tvar ff = v > 0 ? fmt[0] : v < 0 ? fmt[1] : fmt[2];\n\tif(fmt[0].indexOf(\"[\") === -1 && fmt[1].indexOf(\"[\") === -1) return [l, ff];\n\tif(fmt[0].match(/\\[[=<>]/) != null || fmt[1].match(/\\[[=<>]/) != null) {\n\t\tvar m1 = fmt[0].match(cfregex2);\n\t\tvar m2 = fmt[1].match(cfregex2);\n\t\treturn chkcond(v, m1) ? [l, fmt[0]] : chkcond(v, m2) ? [l, fmt[1]] : [l, fmt[m1 != null && m2 != null ? 2 : 1]];\n\t}\n\treturn [l, ff];\n}\nfunction SSF_format(fmt/*:string|number*/,v/*:any*/,o/*:?any*/) {\n\tif(o == null) o = {};\n\tvar sfmt = \"\";\n\tswitch(typeof fmt) {\n\t\tcase \"string\":\n\t\t\tif(fmt == \"m/d/yy\" && o.dateNF) sfmt = o.dateNF;\n\t\t\telse sfmt = fmt;\n\t\t\tbreak;\n\t\tcase \"number\":\n\t\t\tif(fmt == 14 && o.dateNF) sfmt = o.dateNF;\n\t\t\telse sfmt = (o.table != null ? (o.table/*:any*/) : table_fmt)[fmt];\n\t\t\tif(sfmt == null) sfmt = (o.table && o.table[SSF_default_map[fmt]]) || table_fmt[SSF_default_map[fmt]];\n\t\t\tif(sfmt == null) sfmt = SSF_default_str[fmt] || \"General\";\n\t\t\tbreak;\n\t}\n\tif(SSF_isgeneral(sfmt,0)) return SSF_general(v, o);\n\tif(v instanceof Date) v = datenum_local(v, o.date1904);\n\tvar f = choose_fmt(sfmt, v);\n\tif(SSF_isgeneral(f[1])) return SSF_general(v, o);\n\tif(v === true) v = \"TRUE\"; else if(v === false) v = \"FALSE\";\n\telse if(v === \"\" || v == null) return \"\";\n\treturn eval_fmt(f[1], v, o, f[0]);\n}\nfunction SSF_load(fmt/*:string*/, idx/*:?number*/)/*:number*/ {\n\tif(typeof idx != 'number') {\n\t\tidx = +idx || -1;\n/*::if(typeof idx != 'number') return 0x188; */\n\t\tfor(var i = 0; i < 0x0188; ++i) {\n/*::if(typeof idx != 'number') return 0x188; */\n\t\t\tif(table_fmt[i] == undefined) { if(idx < 0) idx = i; continue; }\n\t\t\tif(table_fmt[i] == fmt) { idx = i; break; }\n\t\t}\n/*::if(typeof idx != 'number') return 0x188; */\n\t\tif(idx < 0) idx = 0x187;\n\t}\n/*::if(typeof idx != 'number') return 0x188; */\n\ttable_fmt[idx] = fmt;\n\treturn idx;\n}\nfunction SSF_load_table(tbl/*:SSFTable*/)/*:void*/ {\n\tfor(var i=0; i!=0x0188; ++i)\n\t\tif(tbl[i] !== undefined) SSF_load(tbl[i], i);\n}\n\nfunction make_ssf() {\n\ttable_fmt = SSF_init_table();\n}\n\nvar SSF = {\n\tformat: SSF_format,\n\tload: SSF_load,\n\t_table: table_fmt,\n\tload_table: SSF_load_table,\n\tparse_date_code: SSF_parse_date_code,\n\tis_date: fmt_is_date,\n\tget_table: function get_table() { return SSF._table = table_fmt; }\n};\n\nvar SSFImplicit/*{[number]:string}*/ = ({\n\t\"5\": '\"$\"#,##0_);\\\\(\"$\"#,##0\\\\)',\n\t\"6\": '\"$\"#,##0_);[Red]\\\\(\"$\"#,##0\\\\)',\n\t\"7\": '\"$\"#,##0.00_);\\\\(\"$\"#,##0.00\\\\)',\n\t\"8\": '\"$\"#,##0.00_);[Red]\\\\(\"$\"#,##0.00\\\\)',\n\t\"23\": 'General', \"24\": 'General', \"25\": 'General', \"26\": 'General',\n\t\"27\": 'm/d/yy', \"28\": 'm/d/yy', \"29\": 'm/d/yy', \"30\": 'm/d/yy', \"31\": 'm/d/yy',\n\t\"32\": 'h:mm:ss', \"33\": 'h:mm:ss', \"34\": 'h:mm:ss', \"35\": 'h:mm:ss',\n\t\"36\": 'm/d/yy',\n\t\"41\": '_(* #,##0_);_(* \\(#,##0\\);_(* \"-\"_);_(@_)',\n\t\"42\": '_(\"$\"* #,##0_);_(\"$\"* \\(#,##0\\);_(\"$\"* \"-\"_);_(@_)',\n\t\"43\": '_(* #,##0.00_);_(* \\(#,##0.00\\);_(* \"-\"??_);_(@_)',\n\t\"44\": '_(\"$\"* #,##0.00_);_(\"$\"* \\(#,##0.00\\);_(\"$\"* \"-\"??_);_(@_)',\n\t\"50\": 'm/d/yy', \"51\": 'm/d/yy', \"52\": 'm/d/yy', \"53\": 'm/d/yy', \"54\": 'm/d/yy',\n\t\"55\": 'm/d/yy', \"56\": 'm/d/yy', \"57\": 'm/d/yy', \"58\": 'm/d/yy',\n\t\"59\": '0',\n\t\"60\": '0.00',\n\t\"61\": '#,##0',\n\t\"62\": '#,##0.00',\n\t\"63\": '\"$\"#,##0_);\\\\(\"$\"#,##0\\\\)',\n\t\"64\": '\"$\"#,##0_);[Red]\\\\(\"$\"#,##0\\\\)',\n\t\"65\": '\"$\"#,##0.00_);\\\\(\"$\"#,##0.00\\\\)',\n\t\"66\": '\"$\"#,##0.00_);[Red]\\\\(\"$\"#,##0.00\\\\)',\n\t\"67\": '0%',\n\t\"68\": '0.00%',\n\t\"69\": '# ?/?',\n\t\"70\": '# ??/??',\n\t\"71\": 'm/d/yy',\n\t\"72\": 'm/d/yy',\n\t\"73\": 'd-mmm-yy',\n\t\"74\": 'd-mmm',\n\t\"75\": 'mmm-yy',\n\t\"76\": 'h:mm',\n\t\"77\": 'h:mm:ss',\n\t\"78\": 'm/d/yy h:mm',\n\t\"79\": 'mm:ss',\n\t\"80\": '[h]:mm:ss',\n\t\"81\": 'mmss.0'\n}/*:any*/);\n\n/* dateNF parse TODO: move to SSF */\nvar dateNFregex = /[dD]+|[mM]+|[yYeE]+|[Hh]+|[Ss]+/g;\nfunction dateNF_regex(dateNF/*:string|number*/)/*:RegExp*/ {\n\tvar fmt = typeof dateNF == \"number\" ? table_fmt[dateNF] : dateNF;\n\tfmt = fmt.replace(dateNFregex, \"(\\\\d+)\");\n\treturn new RegExp(\"^\" + fmt + \"$\");\n}\nfunction dateNF_fix(str/*:string*/, dateNF/*:string*/, match/*:Array<string>*/)/*:string*/ {\n\tvar Y = -1, m = -1, d = -1, H = -1, M = -1, S = -1;\n\t(dateNF.match(dateNFregex)||[]).forEach(function(n, i) {\n\t\tvar v = parseInt(match[i+1], 10);\n\t\tswitch(n.toLowerCase().charAt(0)) {\n\t\t\tcase 'y': Y = v; break; case 'd': d = v; break;\n\t\t\tcase 'h': H = v; break; case 's': S = v; break;\n\t\t\tcase 'm': if(H >= 0) M = v; else m = v; break;\n\t\t}\n\t});\n\tif(S >= 0 && M == -1 && m >= 0) { M = m; m = -1; }\n\tvar datestr = ((\"\" + (Y>=0?Y: new Date().getFullYear())).slice(-4) + \"-\" + (\"00\" + (m>=1?m:1)).slice(-2) + \"-\" + (\"00\" + (d>=1?d:1)).slice(-2));\n\tif(datestr.length == 7) datestr = \"0\" + datestr;\n\tif(datestr.length == 8) datestr = \"20\" + datestr;\n\tvar timestr = ((\"00\" + (H>=0?H:0)).slice(-2) + \":\" + (\"00\" + (M>=0?M:0)).slice(-2) + \":\" + (\"00\" + (S>=0?S:0)).slice(-2));\n\tif(H == -1 && M == -1 && S == -1) return datestr;\n\tif(Y == -1 && m == -1 && d == -1) return timestr;\n\treturn datestr + \"T\" + timestr;\n}\n\n/*::\ndeclare var ReadShift:any;\ndeclare var CheckField:any;\ndeclare var prep_blob:any;\ndeclare var __readUInt32LE:any;\ndeclare var __readInt32LE:any;\ndeclare var __toBuffer:any;\ndeclare var __utf16le:any;\ndeclare var bconcat:any;\ndeclare var s2a:any;\ndeclare var chr0:any;\ndeclare var chr1:any;\ndeclare var has_buf:boolean;\ndeclare var new_buf:any;\ndeclare var new_raw_buf:any;\ndeclare var new_unsafe_buf:any;\ndeclare var Buffer_from:any;\n*/\n/* cfb.js (C) 2013-present SheetJS -- http://sheetjs.com */\n/* vim: set ts=2: */\n/*jshint eqnull:true */\n/*exported CFB */\n/*global Uint8Array:false, Uint16Array:false */\n\n/*::\ntype SectorEntry = {\n\tname?:string;\n\tnodes?:Array<number>;\n\tdata:RawBytes;\n};\ntype SectorList = {\n\t[k:string|number]:SectorEntry;\n\tname:?string;\n\tfat_addrs:Array<number>;\n\tssz:number;\n}\ntype CFBFiles = {[n:string]:CFBEntry};\n*/\n/* crc32.js (C) 2014-present SheetJS -- http://sheetjs.com */\n/* vim: set ts=2: */\n/*exported CRC32 */\nvar CRC32 = /*#__PURE__*/(function() {\nvar CRC32 = {};\nCRC32.version = '1.2.0';\n/* see perf/crc32table.js */\n/*global Int32Array */\nfunction signed_crc_table()/*:any*/ {\n\tvar c = 0, table/*:Array<number>*/ = new Array(256);\n\n\tfor(var n =0; n != 256; ++n){\n\t\tc = n;\n\t\tc = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1));\n\t\tc = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1));\n\t\tc = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1));\n\t\tc = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1));\n\t\tc = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1));\n\t\tc = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1));\n\t\tc = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1));\n\t\tc = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1));\n\t\ttable[n] = c;\n\t}\n\n\treturn typeof Int32Array !== 'undefined' ? new Int32Array(table) : table;\n}\n\nvar T0 = signed_crc_table();\nfunction slice_by_16_tables(T) {\n\tvar c = 0, v = 0, n = 0, table/*:Array<number>*/ = typeof Int32Array !== 'undefined' ? new Int32Array(4096) : new Array(4096) ;\n\n\tfor(n = 0; n != 256; ++n) table[n] = T[n];\n\tfor(n = 0; n != 256; ++n) {\n\t\tv = T[n];\n\t\tfor(c = 256 + n; c < 4096; c += 256) v = table[c] = (v >>> 8) ^ T[v & 0xFF];\n\t}\n\tvar out = [];\n\tfor(n = 1; n != 16; ++n) out[n - 1] = typeof Int32Array !== 'undefined' ? table.subarray(n * 256, n * 256 + 256) : table.slice(n * 256, n * 256 + 256);\n\treturn out;\n}\nvar TT = slice_by_16_tables(T0);\nvar T1 = TT[0],  T2 = TT[1],  T3 = TT[2],  T4 = TT[3],  T5 = TT[4];\nvar T6 = TT[5],  T7 = TT[6],  T8 = TT[7],  T9 = TT[8],  Ta = TT[9];\nvar Tb = TT[10], Tc = TT[11], Td = TT[12], Te = TT[13], Tf = TT[14];\nfunction crc32_bstr(bstr/*:string*/, seed/*:number*/)/*:number*/ {\n\tvar C = seed/*:: ? 0 : 0 */ ^ -1;\n\tfor(var i = 0, L = bstr.length; i < L;) C = (C>>>8) ^ T0[(C^bstr.charCodeAt(i++))&0xFF];\n\treturn ~C;\n}\n\nfunction crc32_buf(B/*:Uint8Array|Array<number>*/, seed/*:number*/)/*:number*/ {\n\tvar C = seed/*:: ? 0 : 0 */ ^ -1, L = B.length - 15, i = 0;\n\tfor(; i < L;) C =\n\t\tTf[B[i++] ^ (C & 255)] ^\n\t\tTe[B[i++] ^ ((C >> 8) & 255)] ^\n\t\tTd[B[i++] ^ ((C >> 16) & 255)] ^\n\t\tTc[B[i++] ^ (C >>> 24)] ^\n\t\tTb[B[i++]] ^ Ta[B[i++]] ^ T9[B[i++]] ^ T8[B[i++]] ^\n\t\tT7[B[i++]] ^ T6[B[i++]] ^ T5[B[i++]] ^ T4[B[i++]] ^\n\t\tT3[B[i++]] ^ T2[B[i++]] ^ T1[B[i++]] ^ T0[B[i++]];\n\tL += 15;\n\twhile(i < L) C = (C>>>8) ^ T0[(C^B[i++])&0xFF];\n\treturn ~C;\n}\n\nfunction crc32_str(str/*:string*/, seed/*:number*/)/*:number*/ {\n\tvar C = seed ^ -1;\n\tfor(var i = 0, L = str.length, c = 0, d = 0; i < L;) {\n\t\tc = str.charCodeAt(i++);\n\t\tif(c < 0x80) {\n\t\t\tC = (C>>>8) ^ T0[(C^c)&0xFF];\n\t\t} else if(c < 0x800) {\n\t\t\tC = (C>>>8) ^ T0[(C ^ (192|((c>>6)&31)))&0xFF];\n\t\t\tC = (C>>>8) ^ T0[(C ^ (128|(c&63)))&0xFF];\n\t\t} else if(c >= 0xD800 && c < 0xE000) {\n\t\t\tc = (c&1023)+64; d = str.charCodeAt(i++)&1023;\n\t\t\tC = (C>>>8) ^ T0[(C ^ (240|((c>>8)&7)))&0xFF];\n\t\t\tC = (C>>>8) ^ T0[(C ^ (128|((c>>2)&63)))&0xFF];\n\t\t\tC = (C>>>8) ^ T0[(C ^ (128|((d>>6)&15)|((c&3)<<4)))&0xFF];\n\t\t\tC = (C>>>8) ^ T0[(C ^ (128|(d&63)))&0xFF];\n\t\t} else {\n\t\t\tC = (C>>>8) ^ T0[(C ^ (224|((c>>12)&15)))&0xFF];\n\t\t\tC = (C>>>8) ^ T0[(C ^ (128|((c>>6)&63)))&0xFF];\n\t\t\tC = (C>>>8) ^ T0[(C ^ (128|(c&63)))&0xFF];\n\t\t}\n\t}\n\treturn ~C;\n}\nCRC32.table = T0;\nCRC32.bstr = crc32_bstr;\nCRC32.buf = crc32_buf;\nCRC32.str = crc32_str;\nreturn CRC32;\n})();\n/* [MS-CFB] v20171201 */\nvar CFB = /*#__PURE__*/(function _CFB(){\nvar exports = {};\nexports.version = '1.2.1';\n/* [MS-CFB] 2.6.4 */\nfunction namecmp(l/*:string*/, r/*:string*/)/*:number*/ {\n\tvar L = l.split(\"/\"), R = r.split(\"/\");\n\tfor(var i = 0, c = 0, Z = Math.min(L.length, R.length); i < Z; ++i) {\n\t\tif((c = L[i].length - R[i].length)) return c;\n\t\tif(L[i] != R[i]) return L[i] < R[i] ? -1 : 1;\n\t}\n\treturn L.length - R.length;\n}\nfunction dirname(p/*:string*/)/*:string*/ {\n\tif(p.charAt(p.length - 1) == \"/\") return (p.slice(0,-1).indexOf(\"/\") === -1) ? p : dirname(p.slice(0, -1));\n\tvar c = p.lastIndexOf(\"/\");\n\treturn (c === -1) ? p : p.slice(0, c+1);\n}\n\nfunction filename(p/*:string*/)/*:string*/ {\n\tif(p.charAt(p.length - 1) == \"/\") return filename(p.slice(0, -1));\n\tvar c = p.lastIndexOf(\"/\");\n\treturn (c === -1) ? p : p.slice(c+1);\n}\n/* -------------------------------------------------------------------------- */\n/* DOS Date format:\n   high|YYYYYYYm.mmmddddd.HHHHHMMM.MMMSSSSS|low\n   add 1980 to stored year\n   stored second should be doubled\n*/\n\n/* write JS date to buf as a DOS date */\nfunction write_dos_date(buf/*:CFBlob*/, date/*:Date|string*/) {\n\tif(typeof date === \"string\") date = new Date(date);\n\tvar hms/*:number*/ = date.getHours();\n\thms = hms << 6 | date.getMinutes();\n\thms = hms << 5 | (date.getSeconds()>>>1);\n\tbuf.write_shift(2, hms);\n\tvar ymd/*:number*/ = (date.getFullYear() - 1980);\n\tymd = ymd << 4 | (date.getMonth()+1);\n\tymd = ymd << 5 | date.getDate();\n\tbuf.write_shift(2, ymd);\n}\n\n/* read four bytes from buf and interpret as a DOS date */\nfunction parse_dos_date(buf/*:CFBlob*/)/*:Date*/ {\n\tvar hms = buf.read_shift(2) & 0xFFFF;\n\tvar ymd = buf.read_shift(2) & 0xFFFF;\n\tvar val = new Date();\n\tvar d = ymd & 0x1F; ymd >>>= 5;\n\tvar m = ymd & 0x0F; ymd >>>= 4;\n\tval.setMilliseconds(0);\n\tval.setFullYear(ymd + 1980);\n\tval.setMonth(m-1);\n\tval.setDate(d);\n\tvar S = hms & 0x1F; hms >>>= 5;\n\tvar M = hms & 0x3F; hms >>>= 6;\n\tval.setHours(hms);\n\tval.setMinutes(M);\n\tval.setSeconds(S<<1);\n\treturn val;\n}\nfunction parse_extra_field(blob/*:CFBlob*/)/*:any*/ {\n\tprep_blob(blob, 0);\n\tvar o = /*::(*/{}/*:: :any)*/;\n\tvar flags = 0;\n\twhile(blob.l <= blob.length - 4) {\n\t\tvar type = blob.read_shift(2);\n\t\tvar sz = blob.read_shift(2), tgt = blob.l + sz;\n\t\tvar p = {};\n\t\tswitch(type) {\n\t\t\t/* UNIX-style Timestamps */\n\t\t\tcase 0x5455: {\n\t\t\t\tflags = blob.read_shift(1);\n\t\t\t\tif(flags & 1) p.mtime = blob.read_shift(4);\n\t\t\t\t/* for some reason, CD flag corresponds to LFH */\n\t\t\t\tif(sz > 5) {\n\t\t\t\t\tif(flags & 2) p.atime = blob.read_shift(4);\n\t\t\t\t\tif(flags & 4) p.ctime = blob.read_shift(4);\n\t\t\t\t}\n\t\t\t\tif(p.mtime) p.mt = new Date(p.mtime*1000);\n\t\t\t}\n\t\t\tbreak;\n\t\t}\n\t\tblob.l = tgt;\n\t\to[type] = p;\n\t}\n\treturn o;\n}\nvar fs/*:: = require('fs'); */;\nfunction get_fs() { return fs || (fs = {}); }\nfunction parse(file/*:RawBytes*/, options/*:CFBReadOpts*/)/*:CFBContainer*/ {\nif(file[0] == 0x50 && file[1] == 0x4b) return parse_zip(file, options);\nif((file[0] | 0x20) == 0x6d && (file[1]|0x20) == 0x69) return parse_mad(file, options);\nif(file.length < 512) throw new Error(\"CFB file size \" + file.length + \" < 512\");\nvar mver = 3;\nvar ssz = 512;\nvar nmfs = 0; // number of mini FAT sectors\nvar difat_sec_cnt = 0;\nvar dir_start = 0;\nvar minifat_start = 0;\nvar difat_start = 0;\n\nvar fat_addrs/*:Array<number>*/ = []; // locations of FAT sectors\n\n/* [MS-CFB] 2.2 Compound File Header */\nvar blob/*:CFBlob*/ = /*::(*/file.slice(0,512)/*:: :any)*/;\nprep_blob(blob, 0);\n\n/* major version */\nvar mv = check_get_mver(blob);\nmver = mv[0];\nswitch(mver) {\n\tcase 3: ssz = 512; break; case 4: ssz = 4096; break;\n\tcase 0: if(mv[1] == 0) return parse_zip(file, options);\n\t/* falls through */\n\tdefault: throw new Error(\"Major Version: Expected 3 or 4 saw \" + mver);\n}\n\n/* reprocess header */\nif(ssz !== 512) { blob = /*::(*/file.slice(0,ssz)/*:: :any)*/; prep_blob(blob, 28 /* blob.l */); }\n/* Save header for final object */\nvar header/*:RawBytes*/ = file.slice(0,ssz);\n\ncheck_shifts(blob, mver);\n\n// Number of Directory Sectors\nvar dir_cnt/*:number*/ = blob.read_shift(4, 'i');\nif(mver === 3 && dir_cnt !== 0) throw new Error('# Directory Sectors: Expected 0 saw ' + dir_cnt);\n\n// Number of FAT Sectors\nblob.l += 4;\n\n// First Directory Sector Location\ndir_start = blob.read_shift(4, 'i');\n\n// Transaction Signature\nblob.l += 4;\n\n// Mini Stream Cutoff Size\nblob.chk('00100000', 'Mini Stream Cutoff Size: ');\n\n// First Mini FAT Sector Location\nminifat_start = blob.read_shift(4, 'i');\n\n// Number of Mini FAT Sectors\nnmfs = blob.read_shift(4, 'i');\n\n// First DIFAT sector location\ndifat_start = blob.read_shift(4, 'i');\n\n// Number of DIFAT Sectors\ndifat_sec_cnt = blob.read_shift(4, 'i');\n\n// Grab FAT Sector Locations\nfor(var q = -1, j = 0; j < 109; ++j) { /* 109 = (512 - blob.l)>>>2; */\n\tq = blob.read_shift(4, 'i');\n\tif(q<0) break;\n\tfat_addrs[j] = q;\n}\n\n/** Break the file up into sectors */\nvar sectors/*:Array<RawBytes>*/ = sectorify(file, ssz);\n\nsleuth_fat(difat_start, difat_sec_cnt, sectors, ssz, fat_addrs);\n\n/** Chains */\nvar sector_list/*:SectorList*/ = make_sector_list(sectors, dir_start, fat_addrs, ssz);\n\nsector_list[dir_start].name = \"!Directory\";\nif(nmfs > 0 && minifat_start !== ENDOFCHAIN) sector_list[minifat_start].name = \"!MiniFAT\";\nsector_list[fat_addrs[0]].name = \"!FAT\";\nsector_list.fat_addrs = fat_addrs;\nsector_list.ssz = ssz;\n\n/* [MS-CFB] 2.6.1 Compound File Directory Entry */\nvar files/*:CFBFiles*/ = {}, Paths/*:Array<string>*/ = [], FileIndex/*:CFBFileIndex*/ = [], FullPaths/*:Array<string>*/ = [];\nread_directory(dir_start, sector_list, sectors, Paths, nmfs, files, FileIndex, minifat_start);\n\nbuild_full_paths(FileIndex, FullPaths, Paths);\nPaths.shift();\n\nvar o = {\n\tFileIndex: FileIndex,\n\tFullPaths: FullPaths\n};\n\n// $FlowIgnore\nif(options && options.raw) o.raw = {header: header, sectors: sectors};\nreturn o;\n} // parse\n\n/* [MS-CFB] 2.2 Compound File Header -- read up to major version */\nfunction check_get_mver(blob/*:CFBlob*/)/*:[number, number]*/ {\n\tif(blob[blob.l] == 0x50 && blob[blob.l + 1] == 0x4b) return [0, 0];\n\t// header signature 8\n\tblob.chk(HEADER_SIGNATURE, 'Header Signature: ');\n\n\t// clsid 16\n\t//blob.chk(HEADER_CLSID, 'CLSID: ');\n\tblob.l += 16;\n\n\t// minor version 2\n\tvar mver/*:number*/ = blob.read_shift(2, 'u');\n\n\treturn [blob.read_shift(2,'u'), mver];\n}\nfunction check_shifts(blob/*:CFBlob*/, mver/*:number*/)/*:void*/ {\n\tvar shift = 0x09;\n\n\t// Byte Order\n\t//blob.chk('feff', 'Byte Order: '); // note: some writers put 0xffff\n\tblob.l += 2;\n\n\t// Sector Shift\n\tswitch((shift = blob.read_shift(2))) {\n\t\tcase 0x09: if(mver != 3) throw new Error('Sector Shift: Expected 9 saw ' + shift); break;\n\t\tcase 0x0c: if(mver != 4) throw new Error('Sector Shift: Expected 12 saw ' + shift); break;\n\t\tdefault: throw new Error('Sector Shift: Expected 9 or 12 saw ' + shift);\n\t}\n\n\t// Mini Sector Shift\n\tblob.chk('0600', 'Mini Sector Shift: ');\n\n\t// Reserved\n\tblob.chk('000000000000', 'Reserved: ');\n}\n\n/** Break the file up into sectors */\nfunction sectorify(file/*:RawBytes*/, ssz/*:number*/)/*:Array<RawBytes>*/ {\n\tvar nsectors = Math.ceil(file.length/ssz)-1;\n\tvar sectors/*:Array<RawBytes>*/ = [];\n\tfor(var i=1; i < nsectors; ++i) sectors[i-1] = file.slice(i*ssz,(i+1)*ssz);\n\tsectors[nsectors-1] = file.slice(nsectors*ssz);\n\treturn sectors;\n}\n\n/* [MS-CFB] 2.6.4 Red-Black Tree */\nfunction build_full_paths(FI/*:CFBFileIndex*/, FP/*:Array<string>*/, Paths/*:Array<string>*/)/*:void*/ {\n\tvar i = 0, L = 0, R = 0, C = 0, j = 0, pl = Paths.length;\n\tvar dad/*:Array<number>*/ = [], q/*:Array<number>*/ = [];\n\n\tfor(; i < pl; ++i) { dad[i]=q[i]=i; FP[i]=Paths[i]; }\n\n\tfor(; j < q.length; ++j) {\n\t\ti = q[j];\n\t\tL = FI[i].L; R = FI[i].R; C = FI[i].C;\n\t\tif(dad[i] === i) {\n\t\t\tif(L !== -1 /*NOSTREAM*/ && dad[L] !== L) dad[i] = dad[L];\n\t\t\tif(R !== -1 && dad[R] !== R) dad[i] = dad[R];\n\t\t}\n\t\tif(C !== -1 /*NOSTREAM*/) dad[C] = i;\n\t\tif(L !== -1 && i != dad[i]) { dad[L] = dad[i]; if(q.lastIndexOf(L) < j) q.push(L); }\n\t\tif(R !== -1 && i != dad[i]) { dad[R] = dad[i]; if(q.lastIndexOf(R) < j) q.push(R); }\n\t}\n\tfor(i=1; i < pl; ++i) if(dad[i] === i) {\n\t\tif(R !== -1 /*NOSTREAM*/ && dad[R] !== R) dad[i] = dad[R];\n\t\telse if(L !== -1 && dad[L] !== L) dad[i] = dad[L];\n\t}\n\n\tfor(i=1; i < pl; ++i) {\n\t\tif(FI[i].type === 0 /* unknown */) continue;\n\t\tj = i;\n\t\tif(j != dad[j]) do {\n\t\t\tj = dad[j];\n\t\t\tFP[i] = FP[j] + \"/\" + FP[i];\n\t\t} while (j !== 0 && -1 !== dad[j] && j != dad[j]);\n\t\tdad[i] = -1;\n\t}\n\n\tFP[0] += \"/\";\n\tfor(i=1; i < pl; ++i) {\n\t\tif(FI[i].type !== 2 /* stream */) FP[i] += \"/\";\n\t}\n}\n\nfunction get_mfat_entry(entry/*:CFBEntry*/, payload/*:RawBytes*/, mini/*:?RawBytes*/)/*:CFBlob*/ {\n\tvar start = entry.start, size = entry.size;\n\t//return (payload.slice(start*MSSZ, start*MSSZ + size)/*:any*/);\n\tvar o = [];\n\tvar idx = start;\n\twhile(mini && size > 0 && idx >= 0) {\n\t\to.push(payload.slice(idx * MSSZ, idx * MSSZ + MSSZ));\n\t\tsize -= MSSZ;\n\t\tidx = __readInt32LE(mini, idx * 4);\n\t}\n\tif(o.length === 0) return (new_buf(0)/*:any*/);\n\treturn (bconcat(o).slice(0, entry.size)/*:any*/);\n}\n\n/** Chase down the rest of the DIFAT chain to build a comprehensive list\n    DIFAT chains by storing the next sector number as the last 32 bits */\nfunction sleuth_fat(idx/*:number*/, cnt/*:number*/, sectors/*:Array<RawBytes>*/, ssz/*:number*/, fat_addrs)/*:void*/ {\n\tvar q/*:number*/ = ENDOFCHAIN;\n\tif(idx === ENDOFCHAIN) {\n\t\tif(cnt !== 0) throw new Error(\"DIFAT chain shorter than expected\");\n\t} else if(idx !== -1 /*FREESECT*/) {\n\t\tvar sector = sectors[idx], m = (ssz>>>2)-1;\n\t\tif(!sector) return;\n\t\tfor(var i = 0; i < m; ++i) {\n\t\t\tif((q = __readInt32LE(sector,i*4)) === ENDOFCHAIN) break;\n\t\t\tfat_addrs.push(q);\n\t\t}\n\t\tsleuth_fat(__readInt32LE(sector,ssz-4),cnt - 1, sectors, ssz, fat_addrs);\n\t}\n}\n\n/** Follow the linked list of sectors for a given starting point */\nfunction get_sector_list(sectors/*:Array<RawBytes>*/, start/*:number*/, fat_addrs/*:Array<number>*/, ssz/*:number*/, chkd/*:?Array<boolean>*/)/*:SectorEntry*/ {\n\tvar buf/*:Array<number>*/ = [], buf_chain/*:Array<any>*/ = [];\n\tif(!chkd) chkd = [];\n\tvar modulus = ssz - 1, j = 0, jj = 0;\n\tfor(j=start; j>=0;) {\n\t\tchkd[j] = true;\n\t\tbuf[buf.length] = j;\n\t\tbuf_chain.push(sectors[j]);\n\t\tvar addr = fat_addrs[Math.floor(j*4/ssz)];\n\t\tjj = ((j*4) & modulus);\n\t\tif(ssz < 4 + jj) throw new Error(\"FAT boundary crossed: \" + j + \" 4 \"+ssz);\n\t\tif(!sectors[addr]) break;\n\t\tj = __readInt32LE(sectors[addr], jj);\n\t}\n\treturn {nodes: buf, data:__toBuffer([buf_chain])};\n}\n\n/** Chase down the sector linked lists */\nfunction make_sector_list(sectors/*:Array<RawBytes>*/, dir_start/*:number*/, fat_addrs/*:Array<number>*/, ssz/*:number*/)/*:SectorList*/ {\n\tvar sl = sectors.length, sector_list/*:SectorList*/ = ([]/*:any*/);\n\tvar chkd/*:Array<boolean>*/ = [], buf/*:Array<number>*/ = [], buf_chain/*:Array<RawBytes>*/ = [];\n\tvar modulus = ssz - 1, i=0, j=0, k=0, jj=0;\n\tfor(i=0; i < sl; ++i) {\n\t\tbuf = ([]/*:Array<number>*/);\n\t\tk = (i + dir_start); if(k >= sl) k-=sl;\n\t\tif(chkd[k]) continue;\n\t\tbuf_chain = [];\n\t\tvar seen = [];\n\t\tfor(j=k; j>=0;) {\n\t\t\tseen[j] = true;\n\t\t\tchkd[j] = true;\n\t\t\tbuf[buf.length] = j;\n\t\t\tbuf_chain.push(sectors[j]);\n\t\t\tvar addr/*:number*/ = fat_addrs[Math.floor(j*4/ssz)];\n\t\t\tjj = ((j*4) & modulus);\n\t\t\tif(ssz < 4 + jj) throw new Error(\"FAT boundary crossed: \" + j + \" 4 \"+ssz);\n\t\t\tif(!sectors[addr]) break;\n\t\t\tj = __readInt32LE(sectors[addr], jj);\n\t\t\tif(seen[j]) break;\n\t\t}\n\t\tsector_list[k] = ({nodes: buf, data:__toBuffer([buf_chain])}/*:SectorEntry*/);\n\t}\n\treturn sector_list;\n}\n\n/* [MS-CFB] 2.6.1 Compound File Directory Entry */\nfunction read_directory(dir_start/*:number*/, sector_list/*:SectorList*/, sectors/*:Array<RawBytes>*/, Paths/*:Array<string>*/, nmfs, files, FileIndex, mini) {\n\tvar minifat_store = 0, pl = (Paths.length?2:0);\n\tvar sector = sector_list[dir_start].data;\n\tvar i = 0, namelen = 0, name;\n\tfor(; i < sector.length; i+= 128) {\n\t\tvar blob/*:CFBlob*/ = /*::(*/sector.slice(i, i+128)/*:: :any)*/;\n\t\tprep_blob(blob, 64);\n\t\tnamelen = blob.read_shift(2);\n\t\tname = __utf16le(blob,0,namelen-pl);\n\t\tPaths.push(name);\n\t\tvar o/*:CFBEntry*/ = ({\n\t\t\tname:  name,\n\t\t\ttype:  blob.read_shift(1),\n\t\t\tcolor: blob.read_shift(1),\n\t\t\tL:     blob.read_shift(4, 'i'),\n\t\t\tR:     blob.read_shift(4, 'i'),\n\t\t\tC:     blob.read_shift(4, 'i'),\n\t\t\tclsid: blob.read_shift(16),\n\t\t\tstate: blob.read_shift(4, 'i'),\n\t\t\tstart: 0,\n\t\t\tsize: 0\n\t\t});\n\t\tvar ctime/*:number*/ = blob.read_shift(2) + blob.read_shift(2) + blob.read_shift(2) + blob.read_shift(2);\n\t\tif(ctime !== 0) o.ct = read_date(blob, blob.l-8);\n\t\tvar mtime/*:number*/ = blob.read_shift(2) + blob.read_shift(2) + blob.read_shift(2) + blob.read_shift(2);\n\t\tif(mtime !== 0) o.mt = read_date(blob, blob.l-8);\n\t\to.start = blob.read_shift(4, 'i');\n\t\to.size = blob.read_shift(4, 'i');\n\t\tif(o.size < 0 && o.start < 0) { o.size = o.type = 0; o.start = ENDOFCHAIN; o.name = \"\"; }\n\t\tif(o.type === 5) { /* root */\n\t\t\tminifat_store = o.start;\n\t\t\tif(nmfs > 0 && minifat_store !== ENDOFCHAIN) sector_list[minifat_store].name = \"!StreamData\";\n\t\t\t/*minifat_size = o.size;*/\n\t\t} else if(o.size >= 4096 /* MSCSZ */) {\n\t\t\to.storage = 'fat';\n\t\t\tif(sector_list[o.start] === undefined) sector_list[o.start] = get_sector_list(sectors, o.start, sector_list.fat_addrs, sector_list.ssz);\n\t\t\tsector_list[o.start].name = o.name;\n\t\t\to.content = (sector_list[o.start].data.slice(0,o.size)/*:any*/);\n\t\t} else {\n\t\t\to.storage = 'minifat';\n\t\t\tif(o.size < 0) o.size = 0;\n\t\t\telse if(minifat_store !== ENDOFCHAIN && o.start !== ENDOFCHAIN && sector_list[minifat_store]) {\n\t\t\t\to.content = get_mfat_entry(o, sector_list[minifat_store].data, (sector_list[mini]||{}).data);\n\t\t\t}\n\t\t}\n\t\tif(o.content) prep_blob(o.content, 0);\n\t\tfiles[name] = o;\n\t\tFileIndex.push(o);\n\t}\n}\n\nfunction read_date(blob/*:RawBytes|CFBlob*/, offset/*:number*/)/*:Date*/ {\n\treturn new Date(( ( (__readUInt32LE(blob,offset+4)/1e7)*Math.pow(2,32)+__readUInt32LE(blob,offset)/1e7 ) - 11644473600)*1000);\n}\n\nfunction read_file(filename/*:string*/, options/*:CFBReadOpts*/) {\n\tget_fs();\n\treturn parse(fs.readFileSync(filename), options);\n}\n\nfunction read(blob/*:RawBytes|string*/, options/*:CFBReadOpts*/) {\n\tvar type = options && options.type;\n\tif(!type) {\n\t\tif(has_buf && Buffer.isBuffer(blob)) type = \"buffer\";\n\t}\n\tswitch(type || \"base64\") {\n\t\tcase \"file\": /*:: if(typeof blob !== 'string') throw \"Must pass a filename when type='file'\"; */return read_file(blob, options);\n\t\tcase \"base64\": /*:: if(typeof blob !== 'string') throw \"Must pass a base64-encoded binary string when type='file'\"; */return parse(s2a(Base64_decode(blob)), options);\n\t\tcase \"binary\": /*:: if(typeof blob !== 'string') throw \"Must pass a binary string when type='file'\"; */return parse(s2a(blob), options);\n\t}\n\treturn parse(/*::typeof blob == 'string' ? new Buffer(blob, 'utf-8') : */blob, options);\n}\n\nfunction init_cfb(cfb/*:CFBContainer*/, opts/*:?any*/)/*:void*/ {\n\tvar o = opts || {}, root = o.root || \"Root Entry\";\n\tif(!cfb.FullPaths) cfb.FullPaths = [];\n\tif(!cfb.FileIndex) cfb.FileIndex = [];\n\tif(cfb.FullPaths.length !== cfb.FileIndex.length) throw new Error(\"inconsistent CFB structure\");\n\tif(cfb.FullPaths.length === 0) {\n\t\tcfb.FullPaths[0] = root + \"/\";\n\t\tcfb.FileIndex[0] = ({ name: root, type: 5 }/*:any*/);\n\t}\n\tif(o.CLSID) cfb.FileIndex[0].clsid = o.CLSID;\n\tseed_cfb(cfb);\n}\nfunction seed_cfb(cfb/*:CFBContainer*/)/*:void*/ {\n\tvar nm = \"\\u0001Sh33tJ5\";\n\tif(CFB.find(cfb, \"/\" + nm)) return;\n\tvar p = new_buf(4); p[0] = 55; p[1] = p[3] = 50; p[2] = 54;\n\tcfb.FileIndex.push(({ name: nm, type: 2, content:p, size:4, L:69, R:69, C:69 }/*:any*/));\n\tcfb.FullPaths.push(cfb.FullPaths[0] + nm);\n\trebuild_cfb(cfb);\n}\nfunction rebuild_cfb(cfb/*:CFBContainer*/, f/*:?boolean*/)/*:void*/ {\n\tinit_cfb(cfb);\n\tvar gc = false, s = false;\n\tfor(var i = cfb.FullPaths.length - 1; i >= 0; --i) {\n\t\tvar _file = cfb.FileIndex[i];\n\t\tswitch(_file.type) {\n\t\t\tcase 0:\n\t\t\t\tif(s) gc = true;\n\t\t\t\telse { cfb.FileIndex.pop(); cfb.FullPaths.pop(); }\n\t\t\t\tbreak;\n\t\t\tcase 1: case 2: case 5:\n\t\t\t\ts = true;\n\t\t\t\tif(isNaN(_file.R * _file.L * _file.C)) gc = true;\n\t\t\t\tif(_file.R > -1 && _file.L > -1 && _file.R == _file.L) gc = true;\n\t\t\t\tbreak;\n\t\t\tdefault: gc = true; break;\n\t\t}\n\t}\n\tif(!gc && !f) return;\n\n\tvar now = new Date(1987, 1, 19), j = 0;\n\t// Track which names exist\n\tvar fullPaths = Object.create ? Object.create(null) : {};\n\tvar data/*:Array<[string, CFBEntry]>*/ = [];\n\tfor(i = 0; i < cfb.FullPaths.length; ++i) {\n\t\tfullPaths[cfb.FullPaths[i]] = true;\n\t\tif(cfb.FileIndex[i].type === 0) continue;\n\t\tdata.push([cfb.FullPaths[i], cfb.FileIndex[i]]);\n\t}\n\tfor(i = 0; i < data.length; ++i) {\n\t\tvar dad = dirname(data[i][0]);\n\t\ts = fullPaths[dad];\n\t\tif(!s) {\n\t\t\tdata.push([dad, ({\n\t\t\t\tname: filename(dad).replace(\"/\",\"\"),\n\t\t\t\ttype: 1,\n\t\t\t\tclsid: HEADER_CLSID,\n\t\t\t\tct: now, mt: now,\n\t\t\t\tcontent: null\n\t\t\t}/*:any*/)]);\n\t\t\t// Add name to set\n\t\t\tfullPaths[dad] = true;\n\t\t}\n\t}\n\n\tdata.sort(function(x,y) { return namecmp(x[0], y[0]); });\n\tcfb.FullPaths = []; cfb.FileIndex = [];\n\tfor(i = 0; i < data.length; ++i) { cfb.FullPaths[i] = data[i][0]; cfb.FileIndex[i] = data[i][1]; }\n\tfor(i = 0; i < data.length; ++i) {\n\t\tvar elt = cfb.FileIndex[i];\n\t\tvar nm = cfb.FullPaths[i];\n\n\t\telt.name =  filename(nm).replace(\"/\",\"\");\n\t\telt.L = elt.R = elt.C = -(elt.color = 1);\n\t\telt.size = elt.content ? elt.content.length : 0;\n\t\telt.start = 0;\n\t\telt.clsid = (elt.clsid || HEADER_CLSID);\n\t\tif(i === 0) {\n\t\t\telt.C = data.length > 1 ? 1 : -1;\n\t\t\telt.size = 0;\n\t\t\telt.type = 5;\n\t\t} else if(nm.slice(-1) == \"/\") {\n\t\t\tfor(j=i+1;j < data.length; ++j) if(dirname(cfb.FullPaths[j])==nm) break;\n\t\t\telt.C = j >= data.length ? -1 : j;\n\t\t\tfor(j=i+1;j < data.length; ++j) if(dirname(cfb.FullPaths[j])==dirname(nm)) break;\n\t\t\telt.R = j >= data.length ? -1 : j;\n\t\t\telt.type = 1;\n\t\t} else {\n\t\t\tif(dirname(cfb.FullPaths[i+1]||\"\") == dirname(nm)) elt.R = i + 1;\n\t\t\telt.type = 2;\n\t\t}\n\t}\n\n}\n\nfunction _write(cfb/*:CFBContainer*/, options/*:CFBWriteOpts*/)/*:RawBytes|string*/ {\n\tvar _opts = options || {};\n\t/* MAD is order-sensitive, skip rebuild and sort */\n\tif(_opts.fileType == 'mad') return write_mad(cfb, _opts);\n\trebuild_cfb(cfb);\n\tswitch(_opts.fileType) {\n\t\tcase 'zip': return write_zip(cfb, _opts);\n\t\t//case 'mad': return write_mad(cfb, _opts);\n\t}\n\tvar L = (function(cfb/*:CFBContainer*/)/*:Array<number>*/{\n\t\tvar mini_size = 0, fat_size = 0;\n\t\tfor(var i = 0; i < cfb.FileIndex.length; ++i) {\n\t\t\tvar file = cfb.FileIndex[i];\n\t\t\tif(!file.content) continue;\n\t\t\t/*:: if(file.content == null) throw new Error(\"unreachable\"); */\n\t\t\tvar flen = file.content.length;\n\t\t\tif(flen > 0){\n\t\t\t\tif(flen < 0x1000) mini_size += (flen + 0x3F) >> 6;\n\t\t\t\telse fat_size += (flen + 0x01FF) >> 9;\n\t\t\t}\n\t\t}\n\t\tvar dir_cnt = (cfb.FullPaths.length +3) >> 2;\n\t\tvar mini_cnt = (mini_size + 7) >> 3;\n\t\tvar mfat_cnt = (mini_size + 0x7F) >> 7;\n\t\tvar fat_base = mini_cnt + fat_size + dir_cnt + mfat_cnt;\n\t\tvar fat_cnt = (fat_base + 0x7F) >> 7;\n\t\tvar difat_cnt = fat_cnt <= 109 ? 0 : Math.ceil((fat_cnt-109)/0x7F);\n\t\twhile(((fat_base + fat_cnt + difat_cnt + 0x7F) >> 7) > fat_cnt) difat_cnt = ++fat_cnt <= 109 ? 0 : Math.ceil((fat_cnt-109)/0x7F);\n\t\tvar L =  [1, difat_cnt, fat_cnt, mfat_cnt, dir_cnt, fat_size, mini_size, 0];\n\t\tcfb.FileIndex[0].size = mini_size << 6;\n\t\tL[7] = (cfb.FileIndex[0].start=L[0]+L[1]+L[2]+L[3]+L[4]+L[5])+((L[6]+7) >> 3);\n\t\treturn L;\n\t})(cfb);\n\tvar o = new_buf(L[7] << 9);\n\tvar i = 0, T = 0;\n\t{\n\t\tfor(i = 0; i < 8; ++i) o.write_shift(1, HEADER_SIG[i]);\n\t\tfor(i = 0; i < 8; ++i) o.write_shift(2, 0);\n\t\to.write_shift(2, 0x003E);\n\t\to.write_shift(2, 0x0003);\n\t\to.write_shift(2, 0xFFFE);\n\t\to.write_shift(2, 0x0009);\n\t\to.write_shift(2, 0x0006);\n\t\tfor(i = 0; i < 3; ++i) o.write_shift(2, 0);\n\t\to.write_shift(4, 0);\n\t\to.write_shift(4, L[2]);\n\t\to.write_shift(4, L[0] + L[1] + L[2] + L[3] - 1);\n\t\to.write_shift(4, 0);\n\t\to.write_shift(4, 1<<12);\n\t\to.write_shift(4, L[3] ? L[0] + L[1] + L[2] - 1: ENDOFCHAIN);\n\t\to.write_shift(4, L[3]);\n\t\to.write_shift(-4, L[1] ? L[0] - 1: ENDOFCHAIN);\n\t\to.write_shift(4, L[1]);\n\t\tfor(i = 0; i < 109; ++i) o.write_shift(-4, i < L[2] ? L[1] + i : -1);\n\t}\n\tif(L[1]) {\n\t\tfor(T = 0; T < L[1]; ++T) {\n\t\t\tfor(; i < 236 + T * 127; ++i) o.write_shift(-4, i < L[2] ? L[1] + i : -1);\n\t\t\to.write_shift(-4, T === L[1] - 1 ? ENDOFCHAIN : T + 1);\n\t\t}\n\t}\n\tvar chainit = function(w/*:number*/)/*:void*/ {\n\t\tfor(T += w; i<T-1; ++i) o.write_shift(-4, i+1);\n\t\tif(w) { ++i; o.write_shift(-4, ENDOFCHAIN); }\n\t};\n\tT = i = 0;\n\tfor(T+=L[1]; i<T; ++i) o.write_shift(-4, consts.DIFSECT);\n\tfor(T+=L[2]; i<T; ++i) o.write_shift(-4, consts.FATSECT);\n\tchainit(L[3]);\n\tchainit(L[4]);\n\tvar j/*:number*/ = 0, flen/*:number*/ = 0;\n\tvar file/*:CFBEntry*/ = cfb.FileIndex[0];\n\tfor(; j < cfb.FileIndex.length; ++j) {\n\t\tfile = cfb.FileIndex[j];\n\t\tif(!file.content) continue;\n\t\t/*:: if(file.content == null) throw new Error(\"unreachable\"); */\n\t\tflen = file.content.length;\n\t\tif(flen < 0x1000) continue;\n\t\tfile.start = T;\n\t\tchainit((flen + 0x01FF) >> 9);\n\t}\n\tchainit((L[6] + 7) >> 3);\n\twhile(o.l & 0x1FF) o.write_shift(-4, consts.ENDOFCHAIN);\n\tT = i = 0;\n\tfor(j = 0; j < cfb.FileIndex.length; ++j) {\n\t\tfile = cfb.FileIndex[j];\n\t\tif(!file.content) continue;\n\t\t/*:: if(file.content == null) throw new Error(\"unreachable\"); */\n\t\tflen = file.content.length;\n\t\tif(!flen || flen >= 0x1000) continue;\n\t\tfile.start = T;\n\t\tchainit((flen + 0x3F) >> 6);\n\t}\n\twhile(o.l & 0x1FF) o.write_shift(-4, consts.ENDOFCHAIN);\n\tfor(i = 0; i < L[4]<<2; ++i) {\n\t\tvar nm = cfb.FullPaths[i];\n\t\tif(!nm || nm.length === 0) {\n\t\t\tfor(j = 0; j < 17; ++j) o.write_shift(4, 0);\n\t\t\tfor(j = 0; j < 3; ++j) o.write_shift(4, -1);\n\t\t\tfor(j = 0; j < 12; ++j) o.write_shift(4, 0);\n\t\t\tcontinue;\n\t\t}\n\t\tfile = cfb.FileIndex[i];\n\t\tif(i === 0) file.start = file.size ? file.start - 1 : ENDOFCHAIN;\n\t\tvar _nm/*:string*/ = (i === 0 && _opts.root) || file.name;\n\t\tflen = 2*(_nm.length+1);\n\t\to.write_shift(64, _nm, \"utf16le\");\n\t\to.write_shift(2, flen);\n\t\to.write_shift(1, file.type);\n\t\to.write_shift(1, file.color);\n\t\to.write_shift(-4, file.L);\n\t\to.write_shift(-4, file.R);\n\t\to.write_shift(-4, file.C);\n\t\tif(!file.clsid) for(j = 0; j < 4; ++j) o.write_shift(4, 0);\n\t\telse o.write_shift(16, file.clsid, \"hex\");\n\t\to.write_shift(4, file.state || 0);\n\t\to.write_shift(4, 0); o.write_shift(4, 0);\n\t\to.write_shift(4, 0); o.write_shift(4, 0);\n\t\to.write_shift(4, file.start);\n\t\to.write_shift(4, file.size); o.write_shift(4, 0);\n\t}\n\tfor(i = 1; i < cfb.FileIndex.length; ++i) {\n\t\tfile = cfb.FileIndex[i];\n\t\t/*:: if(!file.content) throw new Error(\"unreachable\"); */\n\t\tif(file.size >= 0x1000) {\n\t\t\to.l = (file.start+1) << 9;\n\t\t\tif (has_buf && Buffer.isBuffer(file.content)) {\n\t\t\t\tfile.content.copy(o, o.l, 0, file.size);\n\t\t\t\t// o is a 0-filled Buffer so just set next offset\n\t\t\t\to.l += (file.size + 511) & -512;\n\t\t\t} else {\n\t\t\t\tfor(j = 0; j < file.size; ++j) o.write_shift(1, file.content[j]);\n\t\t\t\tfor(; j & 0x1FF; ++j) o.write_shift(1, 0);\n\t\t\t}\n\t\t}\n\t}\n\tfor(i = 1; i < cfb.FileIndex.length; ++i) {\n\t\tfile = cfb.FileIndex[i];\n\t\t/*:: if(!file.content) throw new Error(\"unreachable\"); */\n\t\tif(file.size > 0 && file.size < 0x1000) {\n\t\t\tif (has_buf && Buffer.isBuffer(file.content)) {\n\t\t\t\tfile.content.copy(o, o.l, 0, file.size);\n\t\t\t\t// o is a 0-filled Buffer so just set next offset\n\t\t\t\to.l += (file.size + 63) & -64;\n\t\t\t} else {\n\t\t\t\tfor(j = 0; j < file.size; ++j) o.write_shift(1, file.content[j]);\n\t\t\t\tfor(; j & 0x3F; ++j) o.write_shift(1, 0);\n\t\t\t}\n\t\t}\n\t}\n\tif (has_buf) {\n\t\to.l = o.length;\n\t} else {\n\t\t// When using Buffer, already 0-filled\n\t\twhile(o.l < o.length) o.write_shift(1, 0);\n\t}\n\treturn o;\n}\n/* [MS-CFB] 2.6.4 (Unicode 3.0.1 case conversion) */\nfunction find(cfb/*:CFBContainer*/, path/*:string*/)/*:?CFBEntry*/ {\n\tvar UCFullPaths/*:Array<string>*/ = cfb.FullPaths.map(function(x) { return x.toUpperCase(); });\n\tvar UCPaths/*:Array<string>*/ = UCFullPaths.map(function(x) { var y = x.split(\"/\"); return y[y.length - (x.slice(-1) == \"/\" ? 2 : 1)]; });\n\tvar k/*:boolean*/ = false;\n\tif(path.charCodeAt(0) === 47 /* \"/\" */) { k = true; path = UCFullPaths[0].slice(0, -1) + path; }\n\telse k = path.indexOf(\"/\") !== -1;\n\tvar UCPath/*:string*/ = path.toUpperCase();\n\tvar w/*:number*/ = k === true ? UCFullPaths.indexOf(UCPath) : UCPaths.indexOf(UCPath);\n\tif(w !== -1) return cfb.FileIndex[w];\n\n\tvar m = !UCPath.match(chr1);\n\tUCPath = UCPath.replace(chr0,'');\n\tif(m) UCPath = UCPath.replace(chr1,'!');\n\tfor(w = 0; w < UCFullPaths.length; ++w) {\n\t\tif((m ? UCFullPaths[w].replace(chr1,'!') : UCFullPaths[w]).replace(chr0,'') == UCPath) return cfb.FileIndex[w];\n\t\tif((m ? UCPaths[w].replace(chr1,'!') : UCPaths[w]).replace(chr0,'') == UCPath) return cfb.FileIndex[w];\n\t}\n\treturn null;\n}\n/** CFB Constants */\nvar MSSZ = 64; /* Mini Sector Size = 1<<6 */\n//var MSCSZ = 4096; /* Mini Stream Cutoff Size */\n/* 2.1 Compound File Sector Numbers and Types */\nvar ENDOFCHAIN = -2;\n/* 2.2 Compound File Header */\nvar HEADER_SIGNATURE = 'd0cf11e0a1b11ae1';\nvar HEADER_SIG = [0xD0, 0xCF, 0x11, 0xE0, 0xA1, 0xB1, 0x1A, 0xE1];\nvar HEADER_CLSID = '00000000000000000000000000000000';\nvar consts = {\n\t/* 2.1 Compund File Sector Numbers and Types */\n\tMAXREGSECT: -6,\n\tDIFSECT: -4,\n\tFATSECT: -3,\n\tENDOFCHAIN: ENDOFCHAIN,\n\tFREESECT: -1,\n\t/* 2.2 Compound File Header */\n\tHEADER_SIGNATURE: HEADER_SIGNATURE,\n\tHEADER_MINOR_VERSION: '3e00',\n\tMAXREGSID: -6,\n\tNOSTREAM: -1,\n\tHEADER_CLSID: HEADER_CLSID,\n\t/* 2.6.1 Compound File Directory Entry */\n\tEntryTypes: ['unknown','storage','stream','lockbytes','property','root']\n};\n\nfunction write_file(cfb/*:CFBContainer*/, filename/*:string*/, options/*:CFBWriteOpts*/)/*:void*/ {\n\tget_fs();\n\tvar o = _write(cfb, options);\n\t/*:: if(typeof Buffer == 'undefined' || !Buffer.isBuffer(o) || !(o instanceof Buffer)) throw new Error(\"unreachable\"); */\n\tfs.writeFileSync(filename, o);\n}\n\nfunction a2s(o/*:RawBytes*/)/*:string*/ {\n\tvar out = new Array(o.length);\n\tfor(var i = 0; i < o.length; ++i) out[i] = String.fromCharCode(o[i]);\n\treturn out.join(\"\");\n}\n\nfunction write(cfb/*:CFBContainer*/, options/*:CFBWriteOpts*/)/*:RawBytes|string*/ {\n\tvar o = _write(cfb, options);\n\tswitch(options && options.type || \"buffer\") {\n\t\tcase \"file\": get_fs(); fs.writeFileSync(options.filename, (o/*:any*/)); return o;\n\t\tcase \"binary\": return typeof o == \"string\" ? o : a2s(o);\n\t\tcase \"base64\": return Base64_encode(typeof o == \"string\" ? o : a2s(o));\n\t\tcase \"buffer\": if(has_buf) return Buffer.isBuffer(o) ? o : Buffer_from(o);\n\t\t\t/* falls through */\n\t\tcase \"array\": return typeof o == \"string\" ? s2a(o) : o;\n\t}\n\treturn o;\n}\n/* node < 8.1 zlib does not expose bytesRead, so default to pure JS */\nvar _zlib;\nfunction use_zlib(zlib) { try {\n\tvar InflateRaw = zlib.InflateRaw;\n\tvar InflRaw = new InflateRaw();\n\tInflRaw._processChunk(new Uint8Array([3, 0]), InflRaw._finishFlushFlag);\n\tif(InflRaw.bytesRead) _zlib = zlib;\n\telse throw new Error(\"zlib does not expose bytesRead\");\n} catch(e) {console.error(\"cannot use native zlib: \" + (e.message || e)); } }\n\nfunction _inflateRawSync(payload, usz) {\n\tif(!_zlib) return _inflate(payload, usz);\n\tvar InflateRaw = _zlib.InflateRaw;\n\tvar InflRaw = new InflateRaw();\n\tvar out = InflRaw._processChunk(payload.slice(payload.l), InflRaw._finishFlushFlag);\n\tpayload.l += InflRaw.bytesRead;\n\treturn out;\n}\n\nfunction _deflateRawSync(payload) {\n\treturn _zlib ? _zlib.deflateRawSync(payload) : _deflate(payload);\n}\nvar CLEN_ORDER = [ 16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15 ];\n\n/*  LEN_ID = [ 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285 ]; */\nvar LEN_LN = [   3,   4,   5,   6,   7,   8,   9,  10,  11,  13 , 15,  17,  19,  23,  27,  31,  35,  43,  51,  59,  67,  83,  99, 115, 131, 163, 195, 227, 258 ];\n\n/*  DST_ID = [  0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13,  14,  15,  16,  17,  18,  19,   20,   21,   22,   23,   24,   25,   26,    27,    28,    29 ]; */\nvar DST_LN = [  1,  2,  3,  4,  5,  7,  9, 13, 17, 25, 33, 49, 65, 97, 129, 193, 257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145, 8193, 12289, 16385, 24577 ];\n\nfunction bit_swap_8(n) { var t = (((((n<<1)|(n<<11)) & 0x22110) | (((n<<5)|(n<<15)) & 0x88440))); return ((t>>16) | (t>>8) |t)&0xFF; }\n\nvar use_typed_arrays = typeof Uint8Array !== 'undefined';\n\nvar bitswap8 = use_typed_arrays ? new Uint8Array(1<<8) : [];\nfor(var q = 0; q < (1<<8); ++q) bitswap8[q] = bit_swap_8(q);\n\nfunction bit_swap_n(n, b) {\n\tvar rev = bitswap8[n & 0xFF];\n\tif(b <= 8) return rev >>> (8-b);\n\trev = (rev << 8) | bitswap8[(n>>8)&0xFF];\n\tif(b <= 16) return rev >>> (16-b);\n\trev = (rev << 8) | bitswap8[(n>>16)&0xFF];\n\treturn rev >>> (24-b);\n}\n\n/* helpers for unaligned bit reads */\nfunction read_bits_2(buf, bl) { var w = (bl&7), h = (bl>>>3); return ((buf[h]|(w <= 6 ? 0 : buf[h+1]<<8))>>>w)& 0x03; }\nfunction read_bits_3(buf, bl) { var w = (bl&7), h = (bl>>>3); return ((buf[h]|(w <= 5 ? 0 : buf[h+1]<<8))>>>w)& 0x07; }\nfunction read_bits_4(buf, bl) { var w = (bl&7), h = (bl>>>3); return ((buf[h]|(w <= 4 ? 0 : buf[h+1]<<8))>>>w)& 0x0F; }\nfunction read_bits_5(buf, bl) { var w = (bl&7), h = (bl>>>3); return ((buf[h]|(w <= 3 ? 0 : buf[h+1]<<8))>>>w)& 0x1F; }\nfunction read_bits_7(buf, bl) { var w = (bl&7), h = (bl>>>3); return ((buf[h]|(w <= 1 ? 0 : buf[h+1]<<8))>>>w)& 0x7F; }\n\n/* works up to n = 3 * 8 + 1 = 25 */\nfunction read_bits_n(buf, bl, n) {\n\tvar w = (bl&7), h = (bl>>>3), f = ((1<<n)-1);\n\tvar v = buf[h] >>> w;\n\tif(n < 8 - w) return v & f;\n\tv |= buf[h+1]<<(8-w);\n\tif(n < 16 - w) return v & f;\n\tv |= buf[h+2]<<(16-w);\n\tif(n < 24 - w) return v & f;\n\tv |= buf[h+3]<<(24-w);\n\treturn v & f;\n}\n\n/* helpers for unaligned bit writes */\nfunction write_bits_3(buf, bl, v) { var w = bl & 7, h = bl >>> 3;\n\tif(w <= 5) buf[h] |= (v & 7) << w;\n\telse {\n\t\tbuf[h] |= (v << w) & 0xFF;\n\t\tbuf[h+1] = (v&7) >> (8-w);\n\t}\n\treturn bl + 3;\n}\n\nfunction write_bits_1(buf, bl, v) {\n\tvar w = bl & 7, h = bl >>> 3;\n\tv = (v&1) << w;\n\tbuf[h] |= v;\n\treturn bl + 1;\n}\nfunction write_bits_8(buf, bl, v) {\n\tvar w = bl & 7, h = bl >>> 3;\n\tv <<= w;\n\tbuf[h] |=  v & 0xFF; v >>>= 8;\n\tbuf[h+1] = v;\n\treturn bl + 8;\n}\nfunction write_bits_16(buf, bl, v) {\n\tvar w = bl & 7, h = bl >>> 3;\n\tv <<= w;\n\tbuf[h] |=  v & 0xFF; v >>>= 8;\n\tbuf[h+1] = v & 0xFF;\n\tbuf[h+2] = v >>> 8;\n\treturn bl + 16;\n}\n\n/* until ArrayBuffer#realloc is a thing, fake a realloc */\nfunction realloc(b, sz/*:number*/) {\n\tvar L = b.length, M = 2*L > sz ? 2*L : sz + 5, i = 0;\n\tif(L >= sz) return b;\n\tif(has_buf) {\n\t\tvar o = new_unsafe_buf(M);\n\t\t// $FlowIgnore\n\t\tif(b.copy) b.copy(o);\n\t\telse for(; i < b.length; ++i) o[i] = b[i];\n\t\treturn o;\n\t} else if(use_typed_arrays) {\n\t\tvar a = new Uint8Array(M);\n\t\tif(a.set) a.set(b);\n\t\telse for(; i < L; ++i) a[i] = b[i];\n\t\treturn a;\n\t}\n\tb.length = M;\n\treturn b;\n}\n\n/* zero-filled arrays for older browsers */\nfunction zero_fill_array(n) {\n\tvar o = new Array(n);\n\tfor(var i = 0; i < n; ++i) o[i] = 0;\n\treturn o;\n}\n\n/* build tree (used for literals and lengths) */\nfunction build_tree(clens, cmap, MAX/*:number*/)/*:number*/ {\n\tvar maxlen = 1, w = 0, i = 0, j = 0, ccode = 0, L = clens.length;\n\n\tvar bl_count  = use_typed_arrays ? new Uint16Array(32) : zero_fill_array(32);\n\tfor(i = 0; i < 32; ++i) bl_count[i] = 0;\n\n\tfor(i = L; i < MAX; ++i) clens[i] = 0;\n\tL = clens.length;\n\n\tvar ctree = use_typed_arrays ? new Uint16Array(L) : zero_fill_array(L); // []\n\n\t/* build code tree */\n\tfor(i = 0; i < L; ++i) {\n\t\tbl_count[(w = clens[i])]++;\n\t\tif(maxlen < w) maxlen = w;\n\t\tctree[i] = 0;\n\t}\n\tbl_count[0] = 0;\n\tfor(i = 1; i <= maxlen; ++i) bl_count[i+16] = (ccode = (ccode + bl_count[i-1])<<1);\n\tfor(i = 0; i < L; ++i) {\n\t\tccode = clens[i];\n\t\tif(ccode != 0) ctree[i] = bl_count[ccode+16]++;\n\t}\n\n\t/* cmap[maxlen + 4 bits] = (off&15) + (lit<<4) reverse mapping */\n\tvar cleni = 0;\n\tfor(i = 0; i < L; ++i) {\n\t\tcleni = clens[i];\n\t\tif(cleni != 0) {\n\t\t\tccode = bit_swap_n(ctree[i], maxlen)>>(maxlen-cleni);\n\t\t\tfor(j = (1<<(maxlen + 4 - cleni)) - 1; j>=0; --j)\n\t\t\t\tcmap[ccode|(j<<cleni)] = (cleni&15) | (i<<4);\n\t\t}\n\t}\n\treturn maxlen;\n}\n\n/* Fixed Huffman */\nvar fix_lmap = use_typed_arrays ? new Uint16Array(512) : zero_fill_array(512);\nvar fix_dmap = use_typed_arrays ? new Uint16Array(32)  : zero_fill_array(32);\nif(!use_typed_arrays) {\n\tfor(var i = 0; i < 512; ++i) fix_lmap[i] = 0;\n\tfor(i = 0; i < 32; ++i) fix_dmap[i] = 0;\n}\n(function() {\n\tvar dlens/*:Array<number>*/ = [];\n\tvar i = 0;\n\tfor(;i<32; i++) dlens.push(5);\n\tbuild_tree(dlens, fix_dmap, 32);\n\n\tvar clens/*:Array<number>*/ = [];\n\ti = 0;\n\tfor(; i<=143; i++) clens.push(8);\n\tfor(; i<=255; i++) clens.push(9);\n\tfor(; i<=279; i++) clens.push(7);\n\tfor(; i<=287; i++) clens.push(8);\n\tbuild_tree(clens, fix_lmap, 288);\n})();var _deflateRaw = /*#__PURE__*/(function _deflateRawIIFE() {\n\tvar DST_LN_RE = use_typed_arrays ? new Uint8Array(0x8000) : [];\n\tvar j = 0, k = 0;\n\tfor(; j < DST_LN.length - 1; ++j) {\n\t\tfor(; k < DST_LN[j+1]; ++k) DST_LN_RE[k] = j;\n\t}\n\tfor(;k < 32768; ++k) DST_LN_RE[k] = 29;\n\n\tvar LEN_LN_RE = use_typed_arrays ? new Uint8Array(0x103) : [];\n\tfor(j = 0, k = 0; j < LEN_LN.length - 1; ++j) {\n\t\tfor(; k < LEN_LN[j+1]; ++k) LEN_LN_RE[k] = j;\n\t}\n\n\tfunction write_stored(data, out) {\n\t\tvar boff = 0;\n\t\twhile(boff < data.length) {\n\t\t\tvar L = Math.min(0xFFFF, data.length - boff);\n\t\t\tvar h = boff + L == data.length;\n\t\t\tout.write_shift(1, +h);\n\t\t\tout.write_shift(2, L);\n\t\t\tout.write_shift(2, (~L) & 0xFFFF);\n\t\t\twhile(L-- > 0) out[out.l++] = data[boff++];\n\t\t}\n\t\treturn out.l;\n\t}\n\n\t/* Fixed Huffman */\n\tfunction write_huff_fixed(data, out) {\n\t\tvar bl = 0;\n\t\tvar boff = 0;\n\t\tvar addrs = use_typed_arrays ? new Uint16Array(0x8000) : [];\n\t\twhile(boff < data.length) {\n\t\t\tvar L = /* data.length - boff; */ Math.min(0xFFFF, data.length - boff);\n\n\t\t\t/* write a stored block for short data */\n\t\t\tif(L < 10) {\n\t\t\t\tbl = write_bits_3(out, bl, +!!(boff + L == data.length)); // jshint ignore:line\n\t\t\t\tif(bl & 7) bl += 8 - (bl & 7);\n\t\t\t\tout.l = (bl / 8) | 0;\n\t\t\t\tout.write_shift(2, L);\n\t\t\t\tout.write_shift(2, (~L) & 0xFFFF);\n\t\t\t\twhile(L-- > 0) out[out.l++] = data[boff++];\n\t\t\t\tbl = out.l * 8;\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tbl = write_bits_3(out, bl, +!!(boff + L == data.length) + 2); // jshint ignore:line\n\t\t\tvar hash = 0;\n\t\t\twhile(L-- > 0) {\n\t\t\t\tvar d = data[boff];\n\t\t\t\thash = ((hash << 5) ^ d) & 0x7FFF;\n\n\t\t\t\tvar match = -1, mlen = 0;\n\n\t\t\t\tif((match = addrs[hash])) {\n\t\t\t\t\tmatch |= boff & ~0x7FFF;\n\t\t\t\t\tif(match > boff) match -= 0x8000;\n\t\t\t\t\tif(match < boff) while(data[match + mlen] == data[boff + mlen] && mlen < 250) ++mlen;\n\t\t\t\t}\n\n\t\t\t\tif(mlen > 2) {\n\t\t\t\t\t/* Copy Token  */\n\t\t\t\t\td = LEN_LN_RE[mlen];\n\t\t\t\t\tif(d <= 22) bl = write_bits_8(out, bl, bitswap8[d+1]>>1) - 1;\n\t\t\t\t\telse {\n\t\t\t\t\t\twrite_bits_8(out, bl, 3);\n\t\t\t\t\t\tbl += 5;\n\t\t\t\t\t\twrite_bits_8(out, bl, bitswap8[d-23]>>5);\n\t\t\t\t\t\tbl += 3;\n\t\t\t\t\t}\n\t\t\t\t\tvar len_eb = (d < 8) ? 0 : ((d - 4)>>2);\n\t\t\t\t\tif(len_eb > 0) {\n\t\t\t\t\t\twrite_bits_16(out, bl, mlen - LEN_LN[d]);\n\t\t\t\t\t\tbl += len_eb;\n\t\t\t\t\t}\n\n\t\t\t\t\td = DST_LN_RE[boff - match];\n\t\t\t\t\tbl = write_bits_8(out, bl, bitswap8[d]>>3);\n\t\t\t\t\tbl -= 3;\n\n\t\t\t\t\tvar dst_eb = d < 4 ? 0 : (d-2)>>1;\n\t\t\t\t\tif(dst_eb > 0) {\n\t\t\t\t\t\twrite_bits_16(out, bl, boff - match - DST_LN[d]);\n\t\t\t\t\t\tbl += dst_eb;\n\t\t\t\t\t}\n\t\t\t\t\tfor(var q = 0; q < mlen; ++q) {\n\t\t\t\t\t\taddrs[hash] = boff & 0x7FFF;\n\t\t\t\t\t\thash = ((hash << 5) ^ data[boff]) & 0x7FFF;\n\t\t\t\t\t\t++boff;\n\t\t\t\t\t}\n\t\t\t\t\tL-= mlen - 1;\n\t\t\t\t} else {\n\t\t\t\t\t/* Literal Token */\n\t\t\t\t\tif(d <= 143) d = d + 48;\n\t\t\t\t\telse bl = write_bits_1(out, bl, 1);\n\t\t\t\t\tbl = write_bits_8(out, bl, bitswap8[d]);\n\t\t\t\t\taddrs[hash] = boff & 0x7FFF;\n\t\t\t\t\t++boff;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tbl = write_bits_8(out, bl, 0) - 1;\n\t\t}\n\t\tout.l = ((bl + 7)/8)|0;\n\t\treturn out.l;\n\t}\n\treturn function _deflateRaw(data, out) {\n\t\tif(data.length < 8) return write_stored(data, out);\n\t\treturn write_huff_fixed(data, out);\n\t};\n})();\n\nfunction _deflate(data) {\n\tvar buf = new_buf(50+Math.floor(data.length*1.1));\n\tvar off = _deflateRaw(data, buf);\n\treturn buf.slice(0, off);\n}\n/* modified inflate function also moves original read head */\n\nvar dyn_lmap = use_typed_arrays ? new Uint16Array(32768) : zero_fill_array(32768);\nvar dyn_dmap = use_typed_arrays ? new Uint16Array(32768) : zero_fill_array(32768);\nvar dyn_cmap = use_typed_arrays ? new Uint16Array(128)   : zero_fill_array(128);\nvar dyn_len_1 = 1, dyn_len_2 = 1;\n\n/* 5.5.3 Expanding Huffman Codes */\nfunction dyn(data, boff/*:number*/) {\n\t/* nomenclature from RFC1951 refers to bit values; these are offset by the implicit constant */\n\tvar _HLIT = read_bits_5(data, boff) + 257; boff += 5;\n\tvar _HDIST = read_bits_5(data, boff) + 1; boff += 5;\n\tvar _HCLEN = read_bits_4(data, boff) + 4; boff += 4;\n\tvar w = 0;\n\n\t/* grab and store code lengths */\n\tvar clens = use_typed_arrays ? new Uint8Array(19) : zero_fill_array(19);\n\tvar ctree = [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ];\n\tvar maxlen = 1;\n\tvar bl_count =  use_typed_arrays ? new Uint8Array(8) : zero_fill_array(8);\n\tvar next_code = use_typed_arrays ? new Uint8Array(8) : zero_fill_array(8);\n\tvar L = clens.length; /* 19 */\n\tfor(var i = 0; i < _HCLEN; ++i) {\n\t\tclens[CLEN_ORDER[i]] = w = read_bits_3(data, boff);\n\t\tif(maxlen < w) maxlen = w;\n\t\tbl_count[w]++;\n\t\tboff += 3;\n\t}\n\n\t/* build code tree */\n\tvar ccode = 0;\n\tbl_count[0] = 0;\n\tfor(i = 1; i <= maxlen; ++i) next_code[i] = ccode = (ccode + bl_count[i-1])<<1;\n\tfor(i = 0; i < L; ++i) if((ccode = clens[i]) != 0) ctree[i] = next_code[ccode]++;\n\t/* cmap[7 bits from stream] = (off&7) + (lit<<3) */\n\tvar cleni = 0;\n\tfor(i = 0; i < L; ++i) {\n\t\tcleni = clens[i];\n\t\tif(cleni != 0) {\n\t\t\tccode = bitswap8[ctree[i]]>>(8-cleni);\n\t\t\tfor(var j = (1<<(7-cleni))-1; j>=0; --j) dyn_cmap[ccode|(j<<cleni)] = (cleni&7) | (i<<3);\n\t\t}\n\t}\n\n\t/* read literal and dist codes at once */\n\tvar hcodes/*:Array<number>*/ = [];\n\tmaxlen = 1;\n\tfor(; hcodes.length < _HLIT + _HDIST;) {\n\t\tccode = dyn_cmap[read_bits_7(data, boff)];\n\t\tboff += ccode & 7;\n\t\tswitch((ccode >>>= 3)) {\n\t\t\tcase 16:\n\t\t\t\tw = 3 + read_bits_2(data, boff); boff += 2;\n\t\t\t\tccode = hcodes[hcodes.length - 1];\n\t\t\t\twhile(w-- > 0) hcodes.push(ccode);\n\t\t\t\tbreak;\n\t\t\tcase 17:\n\t\t\t\tw = 3 + read_bits_3(data, boff); boff += 3;\n\t\t\t\twhile(w-- > 0) hcodes.push(0);\n\t\t\t\tbreak;\n\t\t\tcase 18:\n\t\t\t\tw = 11 + read_bits_7(data, boff); boff += 7;\n\t\t\t\twhile(w -- > 0) hcodes.push(0);\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\thcodes.push(ccode);\n\t\t\t\tif(maxlen < ccode) maxlen = ccode;\n\t\t\t\tbreak;\n\t\t}\n\t}\n\n\t/* build literal / length trees */\n\tvar h1 = hcodes.slice(0, _HLIT), h2 = hcodes.slice(_HLIT);\n\tfor(i = _HLIT; i < 286; ++i) h1[i] = 0;\n\tfor(i = _HDIST; i < 30; ++i) h2[i] = 0;\n\tdyn_len_1 = build_tree(h1, dyn_lmap, 286);\n\tdyn_len_2 = build_tree(h2, dyn_dmap, 30);\n\treturn boff;\n}\n\n/* return [ data, bytesRead ] */\nfunction inflate(data, usz/*:number*/) {\n\t/* shortcircuit for empty buffer [0x03, 0x00] */\n\tif(data[0] == 3 && !(data[1] & 0x3)) { return [new_raw_buf(usz), 2]; }\n\n\t/* bit offset */\n\tvar boff = 0;\n\n\t/* header includes final bit and type bits */\n\tvar header = 0;\n\n\tvar outbuf = new_unsafe_buf(usz ? usz : (1<<18));\n\tvar woff = 0;\n\tvar OL = outbuf.length>>>0;\n\tvar max_len_1 = 0, max_len_2 = 0;\n\n\twhile((header&1) == 0) {\n\t\theader = read_bits_3(data, boff); boff += 3;\n\t\tif((header >>> 1) == 0) {\n\t\t\t/* Stored block */\n\t\t\tif(boff & 7) boff += 8 - (boff&7);\n\t\t\t/* 2 bytes sz, 2 bytes bit inverse */\n\t\t\tvar sz = data[boff>>>3] | data[(boff>>>3)+1]<<8;\n\t\t\tboff += 32;\n\t\t\t/* push sz bytes */\n\t\t\tif(sz > 0) {\n\t\t\t\tif(!usz && OL < woff + sz) { outbuf = realloc(outbuf, woff + sz); OL = outbuf.length; }\n\t\t\t\twhile(sz-- > 0) { outbuf[woff++] = data[boff>>>3]; boff += 8; }\n\t\t\t}\n\t\t\tcontinue;\n\t\t} else if((header >> 1) == 1) {\n\t\t\t/* Fixed Huffman */\n\t\t\tmax_len_1 = 9; max_len_2 = 5;\n\t\t} else {\n\t\t\t/* Dynamic Huffman */\n\t\t\tboff = dyn(data, boff);\n\t\t\tmax_len_1 = dyn_len_1; max_len_2 = dyn_len_2;\n\t\t}\n\t\tfor(;;) { // while(true) is apparently out of vogue in modern JS circles\n\t\t\tif(!usz && (OL < woff + 32767)) { outbuf = realloc(outbuf, woff + 32767); OL = outbuf.length; }\n\t\t\t/* ingest code and move read head */\n\t\t\tvar bits = read_bits_n(data, boff, max_len_1);\n\t\t\tvar code = (header>>>1) == 1 ? fix_lmap[bits] : dyn_lmap[bits];\n\t\t\tboff += code & 15; code >>>= 4;\n\t\t\t/* 0-255 are literals, 256 is end of block token, 257+ are copy tokens */\n\t\t\tif(((code>>>8)&0xFF) === 0) outbuf[woff++] = code;\n\t\t\telse if(code == 256) break;\n\t\t\telse {\n\t\t\t\tcode -= 257;\n\t\t\t\tvar len_eb = (code < 8) ? 0 : ((code-4)>>2); if(len_eb > 5) len_eb = 0;\n\t\t\t\tvar tgt = woff + LEN_LN[code];\n\t\t\t\t/* length extra bits */\n\t\t\t\tif(len_eb > 0) {\n\t\t\t\t\ttgt += read_bits_n(data, boff, len_eb);\n\t\t\t\t\tboff += len_eb;\n\t\t\t\t}\n\n\t\t\t\t/* dist code */\n\t\t\t\tbits = read_bits_n(data, boff, max_len_2);\n\t\t\t\tcode = (header>>>1) == 1 ? fix_dmap[bits] : dyn_dmap[bits];\n\t\t\t\tboff += code & 15; code >>>= 4;\n\t\t\t\tvar dst_eb = (code < 4 ? 0 : (code-2)>>1);\n\t\t\t\tvar dst = DST_LN[code];\n\t\t\t\t/* dist extra bits */\n\t\t\t\tif(dst_eb > 0) {\n\t\t\t\t\tdst += read_bits_n(data, boff, dst_eb);\n\t\t\t\t\tboff += dst_eb;\n\t\t\t\t}\n\n\t\t\t\t/* in the common case, manual byte copy is faster than TA set / Buffer copy */\n\t\t\t\tif(!usz && OL < tgt) { outbuf = realloc(outbuf, tgt + 100); OL = outbuf.length; }\n\t\t\t\twhile(woff < tgt) { outbuf[woff] = outbuf[woff - dst]; ++woff; }\n\t\t\t}\n\t\t}\n\t}\n\tif(usz) return [outbuf, (boff+7)>>>3];\n\treturn [outbuf.slice(0, woff), (boff+7)>>>3];\n}\n\nfunction _inflate(payload, usz) {\n\tvar data = payload.slice(payload.l||0);\n\tvar out = inflate(data, usz);\n\tpayload.l += out[1];\n\treturn out[0];\n}\n\nfunction warn_or_throw(wrn, msg) {\n\tif(wrn) { if(typeof console !== 'undefined') console.error(msg); }\n\telse throw new Error(msg);\n}\n\nfunction parse_zip(file/*:RawBytes*/, options/*:CFBReadOpts*/)/*:CFBContainer*/ {\n\tvar blob/*:CFBlob*/ = /*::(*/file/*:: :any)*/;\n\tprep_blob(blob, 0);\n\n\tvar FileIndex/*:CFBFileIndex*/ = [], FullPaths/*:Array<string>*/ = [];\n\tvar o = {\n\t\tFileIndex: FileIndex,\n\t\tFullPaths: FullPaths\n\t};\n\tinit_cfb(o, { root: options.root });\n\n\t/* find end of central directory, start just after signature */\n\tvar i = blob.length - 4;\n\twhile((blob[i] != 0x50 || blob[i+1] != 0x4b || blob[i+2] != 0x05 || blob[i+3] != 0x06) && i >= 0) --i;\n\tblob.l = i + 4;\n\n\t/* parse end of central directory */\n\tblob.l += 4;\n\tvar fcnt = blob.read_shift(2);\n\tblob.l += 6;\n\tvar start_cd = blob.read_shift(4);\n\n\t/* parse central directory */\n\tblob.l = start_cd;\n\n\tfor(i = 0; i < fcnt; ++i) {\n\t\t/* trust local file header instead of CD entry */\n\t\tblob.l += 20;\n\t\tvar csz = blob.read_shift(4);\n\t\tvar usz = blob.read_shift(4);\n\t\tvar namelen = blob.read_shift(2);\n\t\tvar efsz = blob.read_shift(2);\n\t\tvar fcsz = blob.read_shift(2);\n\t\tblob.l += 8;\n\t\tvar offset = blob.read_shift(4);\n\t\tvar EF = parse_extra_field(/*::(*/blob.slice(blob.l+namelen, blob.l+namelen+efsz)/*:: :any)*/);\n\t\tblob.l += namelen + efsz + fcsz;\n\n\t\tvar L = blob.l;\n\t\tblob.l = offset + 4;\n\t\tparse_local_file(blob, csz, usz, o, EF);\n\t\tblob.l = L;\n\t}\n\treturn o;\n}\n\n\n/* head starts just after local file header signature */\nfunction parse_local_file(blob/*:CFBlob*/, csz/*:number*/, usz/*:number*/, o/*:CFBContainer*/, EF) {\n\t/* [local file header] */\n\tblob.l += 2;\n\tvar flags = blob.read_shift(2);\n\tvar meth = blob.read_shift(2);\n\tvar date = parse_dos_date(blob);\n\n\tif(flags & 0x2041) throw new Error(\"Unsupported ZIP encryption\");\n\tvar crc32 = blob.read_shift(4);\n\tvar _csz = blob.read_shift(4);\n\tvar _usz = blob.read_shift(4);\n\n\tvar namelen = blob.read_shift(2);\n\tvar efsz = blob.read_shift(2);\n\n\t// TODO: flags & (1<<11) // UTF8\n\tvar name = \"\"; for(var i = 0; i < namelen; ++i) name += String.fromCharCode(blob[blob.l++]);\n\tif(efsz) {\n\t\tvar ef = parse_extra_field(/*::(*/blob.slice(blob.l, blob.l + efsz)/*:: :any)*/);\n\t\tif((ef[0x5455]||{}).mt) date = ef[0x5455].mt;\n\t\tif(((EF||{})[0x5455]||{}).mt) date = EF[0x5455].mt;\n\t}\n\tblob.l += efsz;\n\n\t/* [encryption header] */\n\n\t/* [file data] */\n\tvar data = blob.slice(blob.l, blob.l + _csz);\n\tswitch(meth) {\n\t\tcase 8: data = _inflateRawSync(blob, _usz); break;\n\t\tcase 0: break; // TODO: scan for magic number\n\t\tdefault: throw new Error(\"Unsupported ZIP Compression method \" + meth);\n\t}\n\n\t/* [data descriptor] */\n\tvar wrn = false;\n\tif(flags & 8) {\n\t\tcrc32 = blob.read_shift(4);\n\t\tif(crc32 == 0x08074b50) { crc32 = blob.read_shift(4); wrn = true; }\n\t\t_csz = blob.read_shift(4);\n\t\t_usz = blob.read_shift(4);\n\t}\n\n\tif(_csz != csz) warn_or_throw(wrn, \"Bad compressed size: \" + csz + \" != \" + _csz);\n\tif(_usz != usz) warn_or_throw(wrn, \"Bad uncompressed size: \" + usz + \" != \" + _usz);\n\t//var _crc32 = CRC32.buf(data, 0);\n\t//if((crc32>>0) != (_crc32>>0)) warn_or_throw(wrn, \"Bad CRC32 checksum: \" + crc32 + \" != \" + _crc32);\n\tcfb_add(o, name, data, {unsafe: true, mt: date});\n}\nfunction write_zip(cfb/*:CFBContainer*/, options/*:CFBWriteOpts*/)/*:RawBytes*/ {\n\tvar _opts = options || {};\n\tvar out = [], cdirs = [];\n\tvar o/*:CFBlob*/ = new_buf(1);\n\tvar method = (_opts.compression ? 8 : 0), flags = 0;\n\tvar desc = false;\n\tif(desc) flags |= 8;\n\tvar i = 0, j = 0;\n\n\tvar start_cd = 0, fcnt = 0;\n\tvar root = cfb.FullPaths[0], fp = root, fi = cfb.FileIndex[0];\n\tvar crcs = [];\n\tvar sz_cd = 0;\n\n\tfor(i = 1; i < cfb.FullPaths.length; ++i) {\n\t\tfp = cfb.FullPaths[i].slice(root.length); fi = cfb.FileIndex[i];\n\t\tif(!fi.size || !fi.content || fp == \"\\u0001Sh33tJ5\") continue;\n\t\tvar start = start_cd;\n\n\t\t/* TODO: CP437 filename */\n\t\tvar namebuf = new_buf(fp.length);\n\t\tfor(j = 0; j < fp.length; ++j) namebuf.write_shift(1, fp.charCodeAt(j) & 0x7F);\n\t\tnamebuf = namebuf.slice(0, namebuf.l);\n\t\tcrcs[fcnt] = CRC32.buf(/*::((*/fi.content/*::||[]):any)*/, 0);\n\n\t\tvar outbuf = fi.content/*::||[]*/;\n\t\tif(method == 8) outbuf = _deflateRawSync(outbuf);\n\n\t\t/* local file header */\n\t\to = new_buf(30);\n\t\to.write_shift(4, 0x04034b50);\n\t\to.write_shift(2, 20);\n\t\to.write_shift(2, flags);\n\t\to.write_shift(2, method);\n\t\t/* TODO: last mod file time/date */\n\t\tif(fi.mt) write_dos_date(o, fi.mt);\n\t\telse o.write_shift(4, 0);\n\t\to.write_shift(-4, (flags & 8) ? 0 : crcs[fcnt]);\n\t\to.write_shift(4,  (flags & 8) ? 0 : outbuf.length);\n\t\to.write_shift(4,  (flags & 8) ? 0 : /*::(*/fi.content/*::||[])*/.length);\n\t\to.write_shift(2, namebuf.length);\n\t\to.write_shift(2, 0);\n\n\t\tstart_cd += o.length;\n\t\tout.push(o);\n\t\tstart_cd += namebuf.length;\n\t\tout.push(namebuf);\n\n\t\t/* TODO: extra fields? */\n\n\t\t/* TODO: encryption header ? */\n\n\t\tstart_cd += outbuf.length;\n\t\tout.push(outbuf);\n\n\t\t/* data descriptor */\n\t\tif(flags & 8) {\n\t\t\to = new_buf(12);\n\t\t\to.write_shift(-4, crcs[fcnt]);\n\t\t\to.write_shift(4, outbuf.length);\n\t\t\to.write_shift(4, /*::(*/fi.content/*::||[])*/.length);\n\t\t\tstart_cd += o.l;\n\t\t\tout.push(o);\n\t\t}\n\n\t\t/* central directory */\n\t\to = new_buf(46);\n\t\to.write_shift(4, 0x02014b50);\n\t\to.write_shift(2, 0);\n\t\to.write_shift(2, 20);\n\t\to.write_shift(2, flags);\n\t\to.write_shift(2, method);\n\t\to.write_shift(4, 0); /* TODO: last mod file time/date */\n\t\to.write_shift(-4, crcs[fcnt]);\n\n\t\to.write_shift(4, outbuf.length);\n\t\to.write_shift(4, /*::(*/fi.content/*::||[])*/.length);\n\t\to.write_shift(2, namebuf.length);\n\t\to.write_shift(2, 0);\n\t\to.write_shift(2, 0);\n\t\to.write_shift(2, 0);\n\t\to.write_shift(2, 0);\n\t\to.write_shift(4, 0);\n\t\to.write_shift(4, start);\n\n\t\tsz_cd += o.l;\n\t\tcdirs.push(o);\n\t\tsz_cd += namebuf.length;\n\t\tcdirs.push(namebuf);\n\t\t++fcnt;\n\t}\n\n\t/* end of central directory */\n\to = new_buf(22);\n\to.write_shift(4, 0x06054b50);\n\to.write_shift(2, 0);\n\to.write_shift(2, 0);\n\to.write_shift(2, fcnt);\n\to.write_shift(2, fcnt);\n\to.write_shift(4, sz_cd);\n\to.write_shift(4, start_cd);\n\to.write_shift(2, 0);\n\n\treturn bconcat(([bconcat((out/*:any*/)), bconcat(cdirs), o]/*:any*/));\n}\nvar ContentTypeMap = ({\n\t\"htm\": \"text/html\",\n\t\"xml\": \"text/xml\",\n\n\t\"gif\": \"image/gif\",\n\t\"jpg\": \"image/jpeg\",\n\t\"png\": \"image/png\",\n\n\t\"mso\": \"application/x-mso\",\n\t\"thmx\": \"application/vnd.ms-officetheme\",\n\t\"sh33tj5\": \"application/octet-stream\"\n}/*:any*/);\n\nfunction get_content_type(fi/*:CFBEntry*/, fp/*:string*/)/*:string*/ {\n\tif(fi.ctype) return fi.ctype;\n\n\tvar ext = fi.name || \"\", m = ext.match(/\\.([^\\.]+)$/);\n\tif(m && ContentTypeMap[m[1]]) return ContentTypeMap[m[1]];\n\n\tif(fp) {\n\t\tm = (ext = fp).match(/[\\.\\\\]([^\\.\\\\])+$/);\n\t\tif(m && ContentTypeMap[m[1]]) return ContentTypeMap[m[1]];\n\t}\n\n\treturn \"application/octet-stream\";\n}\n\n/* 76 character chunks TODO: intertwine encoding */\nfunction write_base64_76(bstr/*:string*/)/*:string*/ {\n\tvar data = Base64_encode(bstr);\n\tvar o = [];\n\tfor(var i = 0; i < data.length; i+= 76) o.push(data.slice(i, i+76));\n\treturn o.join(\"\\r\\n\") + \"\\r\\n\";\n}\n\n/*\nRules for QP:\n\t- escape =## applies for all non-display characters and literal \"=\"\n\t- space or tab at end of line must be encoded\n\t- \\r\\n newlines can be preserved, but bare \\r and \\n must be escaped\n\t- lines must not exceed 76 characters, use soft breaks =\\r\\n\n\nTODO: Some files from word appear to write line extensions with bare equals:\n\n```\n<table class=3DMsoTableGrid border=3D1 cellspacing=3D0 cellpadding=3D0 width=\n=\"70%\"\n```\n*/\nfunction write_quoted_printable(text/*:string*/)/*:string*/ {\n\tvar encoded = text.replace(/[\\x00-\\x08\\x0B\\x0C\\x0E-\\x1F\\x7E-\\xFF=]/g, function(c) {\n\t\tvar w = c.charCodeAt(0).toString(16).toUpperCase();\n\t\treturn \"=\" + (w.length == 1 ? \"0\" + w : w);\n\t});\n\n\tencoded = encoded.replace(/ $/mg, \"=20\").replace(/\\t$/mg, \"=09\");\n\n\tif(encoded.charAt(0) == \"\\n\") encoded = \"=0D\" + encoded.slice(1);\n\tencoded = encoded.replace(/\\r(?!\\n)/mg, \"=0D\").replace(/\\n\\n/mg, \"\\n=0A\").replace(/([^\\r\\n])\\n/mg, \"$1=0A\");\n\n\tvar o/*:Array<string>*/ = [], split = encoded.split(\"\\r\\n\");\n\tfor(var si = 0; si < split.length; ++si) {\n\t\tvar str = split[si];\n\t\tif(str.length == 0) { o.push(\"\"); continue; }\n\t\tfor(var i = 0; i < str.length;) {\n\t\t\tvar end = 76;\n\t\t\tvar tmp = str.slice(i, i + end);\n\t\t\tif(tmp.charAt(end - 1) == \"=\") end --;\n\t\t\telse if(tmp.charAt(end - 2) == \"=\") end -= 2;\n\t\t\telse if(tmp.charAt(end - 3) == \"=\") end -= 3;\n\t\t\ttmp = str.slice(i, i + end);\n\t\t\ti += end;\n\t\t\tif(i < str.length) tmp += \"=\";\n\t\t\to.push(tmp);\n\t\t}\n\t}\n\n\treturn o.join(\"\\r\\n\");\n}\nfunction parse_quoted_printable(data/*:Array<string>*/)/*:RawBytes*/ {\n\tvar o = [];\n\n\t/* unify long lines */\n\tfor(var di = 0; di < data.length; ++di) {\n\t\tvar line = data[di];\n\t\twhile(di <= data.length && line.charAt(line.length - 1) == \"=\") line = line.slice(0, line.length - 1) + data[++di];\n\t\to.push(line);\n\t}\n\n\t/* decode */\n\tfor(var oi = 0; oi < o.length; ++oi) o[oi] = o[oi].replace(/[=][0-9A-Fa-f]{2}/g, function($$) { return String.fromCharCode(parseInt($$.slice(1), 16)); });\n\treturn s2a(o.join(\"\\r\\n\"));\n}\n\n\nfunction parse_mime(cfb/*:CFBContainer*/, data/*:Array<string>*/, root/*:string*/)/*:void*/ {\n\tvar fname = \"\", cte = \"\", ctype = \"\", fdata;\n\tvar di = 0;\n\tfor(;di < 10; ++di) {\n\t\tvar line = data[di];\n\t\tif(!line || line.match(/^\\s*$/)) break;\n\t\tvar m = line.match(/^(.*?):\\s*([^\\s].*)$/);\n\t\tif(m) switch(m[1].toLowerCase()) {\n\t\t\tcase \"content-location\": fname = m[2].trim(); break;\n\t\t\tcase \"content-type\": ctype = m[2].trim(); break;\n\t\t\tcase \"content-transfer-encoding\": cte = m[2].trim(); break;\n\t\t}\n\t}\n\t++di;\n\tswitch(cte.toLowerCase()) {\n\t\tcase 'base64': fdata = s2a(Base64_decode(data.slice(di).join(\"\"))); break;\n\t\tcase 'quoted-printable': fdata = parse_quoted_printable(data.slice(di)); break;\n\t\tdefault: throw new Error(\"Unsupported Content-Transfer-Encoding \" + cte);\n\t}\n\tvar file = cfb_add(cfb, fname.slice(root.length), fdata, {unsafe: true});\n\tif(ctype) file.ctype = ctype;\n}\n\nfunction parse_mad(file/*:RawBytes*/, options/*:CFBReadOpts*/)/*:CFBContainer*/ {\n\tif(a2s(file.slice(0,13)).toLowerCase() != \"mime-version:\") throw new Error(\"Unsupported MAD header\");\n\tvar root = (options && options.root || \"\");\n\t// $FlowIgnore\n\tvar data = (has_buf && Buffer.isBuffer(file) ? file.toString(\"binary\") : a2s(file)).split(\"\\r\\n\");\n\tvar di = 0, row = \"\";\n\n\t/* if root is not specified, scan for the common prefix */\n\tfor(di = 0; di < data.length; ++di) {\n\t\trow = data[di];\n\t\tif(!/^Content-Location:/i.test(row)) continue;\n\t\trow = row.slice(row.indexOf(\"file\"));\n\t\tif(!root) root = row.slice(0, row.lastIndexOf(\"/\") + 1);\n\t\tif(row.slice(0, root.length) == root) continue;\n\t\twhile(root.length > 0) {\n\t\t\troot = root.slice(0, root.length - 1);\n\t\t\troot = root.slice(0, root.lastIndexOf(\"/\") + 1);\n\t\t\tif(row.slice(0,root.length) == root) break;\n\t\t}\n\t}\n\n\tvar mboundary = (data[1] || \"\").match(/boundary=\"(.*?)\"/);\n\tif(!mboundary) throw new Error(\"MAD cannot find boundary\");\n\tvar boundary = \"--\" + (mboundary[1] || \"\");\n\n\tvar FileIndex/*:CFBFileIndex*/ = [], FullPaths/*:Array<string>*/ = [];\n\tvar o = {\n\t\tFileIndex: FileIndex,\n\t\tFullPaths: FullPaths\n\t};\n\tinit_cfb(o);\n\tvar start_di, fcnt = 0;\n\tfor(di = 0; di < data.length; ++di) {\n\t\tvar line = data[di];\n\t\tif(line !== boundary && line !== boundary + \"--\") continue;\n\t\tif(fcnt++) parse_mime(o, data.slice(start_di, di), root);\n\t\tstart_di = di;\n\t}\n\treturn o;\n}\n\nfunction write_mad(cfb/*:CFBContainer*/, options/*:CFBWriteOpts*/)/*:string*/ {\n\tvar opts = options || {};\n\tvar boundary = opts.boundary || \"SheetJS\";\n\tboundary = '------=' + boundary;\n\n\tvar out = [\n\t\t'MIME-Version: 1.0',\n\t\t'Content-Type: multipart/related; boundary=\"' + boundary.slice(2) + '\"',\n\t\t'',\n\t\t'',\n\t\t''\n\t];\n\n\tvar root = cfb.FullPaths[0], fp = root, fi = cfb.FileIndex[0];\n\tfor(var i = 1; i < cfb.FullPaths.length; ++i) {\n\t\tfp = cfb.FullPaths[i].slice(root.length);\n\t\tfi = cfb.FileIndex[i];\n\t\tif(!fi.size || !fi.content || fp == \"\\u0001Sh33tJ5\") continue;\n\n\t\t/* Normalize filename */\n\t\tfp = fp.replace(/[\\x00-\\x08\\x0B\\x0C\\x0E-\\x1F\\x7E-\\xFF]/g, function(c) {\n\t\t\treturn \"_x\" + c.charCodeAt(0).toString(16) + \"_\";\n\t\t}).replace(/[\\u0080-\\uFFFF]/g, function(u) {\n\t\t\treturn \"_u\" + u.charCodeAt(0).toString(16) + \"_\";\n\t\t});\n\n\t\t/* Extract content as binary string */\n\t\tvar ca = fi.content;\n\t\t// $FlowIgnore\n\t\tvar cstr = has_buf && Buffer.isBuffer(ca) ? ca.toString(\"binary\") : a2s(ca);\n\n\t\t/* 4/5 of first 1024 chars ascii -> quoted printable, else base64 */\n\t\tvar dispcnt = 0, L = Math.min(1024, cstr.length), cc = 0;\n\t\tfor(var csl = 0; csl <= L; ++csl) if((cc=cstr.charCodeAt(csl)) >= 0x20 && cc < 0x80) ++dispcnt;\n\t\tvar qp = dispcnt >= L * 4 / 5;\n\n\t\tout.push(boundary);\n\t\tout.push('Content-Location: ' + (opts.root || 'file:///C:/SheetJS/') + fp);\n\t\tout.push('Content-Transfer-Encoding: ' + (qp ? 'quoted-printable' : 'base64'));\n\t\tout.push('Content-Type: ' + get_content_type(fi, fp));\n\t\tout.push('');\n\n\t\tout.push(qp ? write_quoted_printable(cstr) : write_base64_76(cstr));\n\t}\n\tout.push(boundary + '--\\r\\n');\n\treturn out.join(\"\\r\\n\");\n}\nfunction cfb_new(opts/*:?any*/)/*:CFBContainer*/ {\n\tvar o/*:CFBContainer*/ = ({}/*:any*/);\n\tinit_cfb(o, opts);\n\treturn o;\n}\n\nfunction cfb_add(cfb/*:CFBContainer*/, name/*:string*/, content/*:?RawBytes*/, opts/*:?any*/)/*:CFBEntry*/ {\n\tvar unsafe = opts && opts.unsafe;\n\tif(!unsafe) init_cfb(cfb);\n\tvar file = !unsafe && CFB.find(cfb, name);\n\tif(!file) {\n\t\tvar fpath/*:string*/ = cfb.FullPaths[0];\n\t\tif(name.slice(0, fpath.length) == fpath) fpath = name;\n\t\telse {\n\t\t\tif(fpath.slice(-1) != \"/\") fpath += \"/\";\n\t\t\tfpath = (fpath + name).replace(\"//\",\"/\");\n\t\t}\n\t\tfile = ({name: filename(name), type: 2}/*:any*/);\n\t\tcfb.FileIndex.push(file);\n\t\tcfb.FullPaths.push(fpath);\n\t\tif(!unsafe) CFB.utils.cfb_gc(cfb);\n\t}\n\t/*:: if(!file) throw new Error(\"unreachable\"); */\n\tfile.content = (content/*:any*/);\n\tfile.size = content ? content.length : 0;\n\tif(opts) {\n\t\tif(opts.CLSID) file.clsid = opts.CLSID;\n\t\tif(opts.mt) file.mt = opts.mt;\n\t\tif(opts.ct) file.ct = opts.ct;\n\t}\n\treturn file;\n}\n\nfunction cfb_del(cfb/*:CFBContainer*/, name/*:string*/)/*:boolean*/ {\n\tinit_cfb(cfb);\n\tvar file = CFB.find(cfb, name);\n\tif(file) for(var j = 0; j < cfb.FileIndex.length; ++j) if(cfb.FileIndex[j] == file) {\n\t\tcfb.FileIndex.splice(j, 1);\n\t\tcfb.FullPaths.splice(j, 1);\n\t\treturn true;\n\t}\n\treturn false;\n}\n\nfunction cfb_mov(cfb/*:CFBContainer*/, old_name/*:string*/, new_name/*:string*/)/*:boolean*/ {\n\tinit_cfb(cfb);\n\tvar file = CFB.find(cfb, old_name);\n\tif(file) for(var j = 0; j < cfb.FileIndex.length; ++j) if(cfb.FileIndex[j] == file) {\n\t\tcfb.FileIndex[j].name = filename(new_name);\n\t\tcfb.FullPaths[j] = new_name;\n\t\treturn true;\n\t}\n\treturn false;\n}\n\nfunction cfb_gc(cfb/*:CFBContainer*/)/*:void*/ { rebuild_cfb(cfb, true); }\n\nexports.find = find;\nexports.read = read;\nexports.parse = parse;\nexports.write = write;\nexports.writeFile = write_file;\nexports.utils = {\n\tcfb_new: cfb_new,\n\tcfb_add: cfb_add,\n\tcfb_del: cfb_del,\n\tcfb_mov: cfb_mov,\n\tcfb_gc: cfb_gc,\n\tReadShift: ReadShift,\n\tCheckField: CheckField,\n\tprep_blob: prep_blob,\n\tbconcat: bconcat,\n\tuse_zlib: use_zlib,\n\t_deflateRaw: _deflate,\n\t_inflateRaw: _inflate,\n\tconsts: consts\n};\n\nreturn exports;\n})();\n\nlet _fs = void 0;\nfunction set_fs(fs) { _fs = fs; }\nexport { set_fs };\n\n/* normalize data for blob ctor */\nfunction blobify(data) {\n\tif(typeof data === \"string\") return s2ab(data);\n\tif(Array.isArray(data)) return a2u(data);\n\treturn data;\n}\n/* write or download file */\nfunction write_dl(fname/*:string*/, payload/*:any*/, enc/*:?string*/) {\n\t/*global IE_SaveFile, Blob, navigator, saveAs, document, File, chrome */\n\tif(typeof _fs !== 'undefined' && _fs.writeFileSync) return enc ? _fs.writeFileSync(fname, payload, enc) : _fs.writeFileSync(fname, payload);\n\tif(typeof Deno !== 'undefined') {\n\t\t/* in this spot, it's safe to assume typed arrays and TextEncoder/TextDecoder exist */\n\t\tif(enc && typeof payload == \"string\") switch(enc) {\n\t\t\tcase \"utf8\": payload = new TextEncoder(enc).encode(payload); break;\n\t\t\tcase \"binary\": payload = s2ab(payload); break;\n\t\t\t/* TODO: binary equivalent */\n\t\t\tdefault: throw new Error(\"Unsupported encoding \" + enc);\n\t\t}\n\t\treturn Deno.writeFileSync(fname, payload);\n\t}\n\tvar data = (enc == \"utf8\") ? utf8write(payload) : payload;\n\t/*:: declare var IE_SaveFile: any; */\n\tif(typeof IE_SaveFile !== 'undefined') return IE_SaveFile(data, fname);\n\tif(typeof Blob !== 'undefined') {\n\t\tvar blob = new Blob([blobify(data)], {type:\"application/octet-stream\"});\n\t\t/*:: declare var navigator: any; */\n\t\tif(typeof navigator !== 'undefined' && navigator.msSaveBlob) return navigator.msSaveBlob(blob, fname);\n\t\t/*:: declare var saveAs: any; */\n\t\tif(typeof saveAs !== 'undefined') return saveAs(blob, fname);\n\t\tif(typeof URL !== 'undefined' && typeof document !== 'undefined' && document.createElement && URL.createObjectURL) {\n\t\t\tvar url = URL.createObjectURL(blob);\n\t\t\t/*:: declare var chrome: any; */\n\t\t\tif(typeof chrome === 'object' && typeof (chrome.downloads||{}).download == \"function\") {\n\t\t\t\tif(URL.revokeObjectURL && typeof setTimeout !== 'undefined') setTimeout(function() { URL.revokeObjectURL(url); }, 60000);\n\t\t\t\treturn chrome.downloads.download({ url: url, filename: fname, saveAs: true});\n\t\t\t}\n\t\t\tvar a = document.createElement(\"a\");\n\t\t\tif(a.download != null) {\n\t\t\t\t/*:: if(document.body == null) throw new Error(\"unreachable\"); */\n\t\t\t\ta.download = fname; a.href = url; document.body.appendChild(a); a.click();\n\t\t\t\t/*:: if(document.body == null) throw new Error(\"unreachable\"); */ document.body.removeChild(a);\n\t\t\t\tif(URL.revokeObjectURL && typeof setTimeout !== 'undefined') setTimeout(function() { URL.revokeObjectURL(url); }, 60000);\n\t\t\t\treturn url;\n\t\t\t}\n\t\t}\n\t}\n\t// $FlowIgnore\n\tif(typeof $ !== 'undefined' && typeof File !== 'undefined' && typeof Folder !== 'undefined') try { // extendscript\n\t\t// $FlowIgnore\n\t\tvar out = File(fname); out.open(\"w\"); out.encoding = \"binary\";\n\t\tif(Array.isArray(payload)) payload = a2s(payload);\n\t\tout.write(payload); out.close(); return payload;\n\t} catch(e) { if(!e.message || !e.message.match(/onstruct/)) throw e; }\n\tthrow new Error(\"cannot save file \" + fname);\n}\n\n/* read binary data from file */\nfunction read_binary(path/*:string*/) {\n\tif(typeof _fs !== 'undefined') return _fs.readFileSync(path);\n\tif(typeof Deno !== 'undefined') return Deno.readFileSync(path);\n\t// $FlowIgnore\n\tif(typeof $ !== 'undefined' && typeof File !== 'undefined' && typeof Folder !== 'undefined') try { // extendscript\n\t\t// $FlowIgnore\n\t\tvar infile = File(path); infile.open(\"r\"); infile.encoding = \"binary\";\n\t\tvar data = infile.read(); infile.close();\n\t\treturn data;\n\t} catch(e) { if(!e.message || !e.message.match(/onstruct/)) throw e; }\n\tthrow new Error(\"Cannot access file \" + path);\n}\nfunction keys(o/*:any*/)/*:Array<any>*/ {\n\tvar ks = Object.keys(o), o2 = [];\n\tfor(var i = 0; i < ks.length; ++i) if(Object.prototype.hasOwnProperty.call(o, ks[i])) o2.push(ks[i]);\n\treturn o2;\n}\n\nfunction evert_key(obj/*:any*/, key/*:string*/)/*:EvertType*/ {\n\tvar o = ([]/*:any*/), K = keys(obj);\n\tfor(var i = 0; i !== K.length; ++i) if(o[obj[K[i]][key]] == null) o[obj[K[i]][key]] = K[i];\n\treturn o;\n}\n\nfunction evert(obj/*:any*/)/*:EvertType*/ {\n\tvar o = ([]/*:any*/), K = keys(obj);\n\tfor(var i = 0; i !== K.length; ++i) o[obj[K[i]]] = K[i];\n\treturn o;\n}\n\nfunction evert_num(obj/*:any*/)/*:EvertNumType*/ {\n\tvar o = ([]/*:any*/), K = keys(obj);\n\tfor(var i = 0; i !== K.length; ++i) o[obj[K[i]]] = parseInt(K[i],10);\n\treturn o;\n}\n\nfunction evert_arr(obj/*:any*/)/*:EvertArrType*/ {\n\tvar o/*:EvertArrType*/ = ([]/*:any*/), K = keys(obj);\n\tfor(var i = 0; i !== K.length; ++i) {\n\t\tif(o[obj[K[i]]] == null) o[obj[K[i]]] = [];\n\t\to[obj[K[i]]].push(K[i]);\n\t}\n\treturn o;\n}\n\nvar basedate = /*#__PURE__*/new Date(1899, 11, 30, 0, 0, 0); // 2209161600000\nfunction datenum(v/*:Date*/, date1904/*:?boolean*/)/*:number*/ {\n\tvar epoch = /*#__PURE__*/v.getTime();\n\tif(date1904) epoch -= 1462*24*60*60*1000;\n\tvar dnthresh = /*#__PURE__*/basedate.getTime() + (/*#__PURE__*/v.getTimezoneOffset() - /*#__PURE__*/basedate.getTimezoneOffset()) * 60000;\n\treturn (epoch - dnthresh) / (24 * 60 * 60 * 1000);\n}\nvar refdate = /*#__PURE__*/new Date();\nvar dnthresh = /*#__PURE__*/basedate.getTime() + (/*#__PURE__*/refdate.getTimezoneOffset() - /*#__PURE__*/basedate.getTimezoneOffset()) * 60000;\nvar refoffset = /*#__PURE__*/refdate.getTimezoneOffset();\nfunction numdate(v/*:number*/)/*:Date*/ {\n\tvar out = new Date();\n\tout.setTime(v * 24 * 60 * 60 * 1000 + dnthresh);\n\tif (out.getTimezoneOffset() !== refoffset) {\n\t\tout.setTime(out.getTime() + (out.getTimezoneOffset() - refoffset) * 60000);\n\t}\n\treturn out;\n}\n\n/* ISO 8601 Duration */\nfunction parse_isodur(s) {\n\tvar sec = 0, mt = 0, time = false;\n\tvar m = s.match(/P([0-9\\.]+Y)?([0-9\\.]+M)?([0-9\\.]+D)?T([0-9\\.]+H)?([0-9\\.]+M)?([0-9\\.]+S)?/);\n\tif(!m) throw new Error(\"|\" + s + \"| is not an ISO8601 Duration\");\n\tfor(var i = 1; i != m.length; ++i) {\n\t\tif(!m[i]) continue;\n\t\tmt = 1;\n\t\tif(i > 3) time = true;\n\t\tswitch(m[i].slice(m[i].length-1)) {\n\t\t\tcase 'Y':\n\t\t\t\tthrow new Error(\"Unsupported ISO Duration Field: \" + m[i].slice(m[i].length-1));\n\t\t\tcase 'D': mt *= 24;\n\t\t\t\t/* falls through */\n\t\t\tcase 'H': mt *= 60;\n\t\t\t\t/* falls through */\n\t\t\tcase 'M':\n\t\t\t\tif(!time) throw new Error(\"Unsupported ISO Duration Field: M\");\n\t\t\t\telse mt *= 60;\n\t\t\t\t/* falls through */\n\t\t\tcase 'S': break;\n\t\t}\n\t\tsec += mt * parseInt(m[i], 10);\n\t}\n\treturn sec;\n}\n\nvar good_pd_date_1 = /*#__PURE__*/new Date('2017-02-19T19:06:09.000Z');\nvar good_pd_date = /*#__PURE__*/isNaN(/*#__PURE__*/good_pd_date_1.getFullYear()) ? /*#__PURE__*/new Date('2/19/17') : good_pd_date_1;\nvar good_pd = /*#__PURE__*/good_pd_date.getFullYear() == 2017;\n/* parses a date as a local date */\nfunction parseDate(str/*:string|Date*/, fixdate/*:?number*/)/*:Date*/ {\n\tvar d = new Date(str);\n\tif(good_pd) {\n\t\t/*:: if(fixdate == null) fixdate = 0; */\n\t\tif(fixdate > 0) d.setTime(d.getTime() + d.getTimezoneOffset() * 60 * 1000);\n\t\telse if(fixdate < 0) d.setTime(d.getTime() - d.getTimezoneOffset() * 60 * 1000);\n\t\treturn d;\n\t}\n\tif(str instanceof Date) return str;\n\tif(good_pd_date.getFullYear() == 1917 && !isNaN(d.getFullYear())) {\n\t\tvar s = d.getFullYear();\n\t\tif(str.indexOf(\"\" + s) > -1) return d;\n\t\td.setFullYear(d.getFullYear() + 100); return d;\n\t}\n\tvar n = str.match(/\\d+/g)||[\"2017\",\"2\",\"19\",\"0\",\"0\",\"0\"];\n\tvar out = new Date(+n[0], +n[1] - 1, +n[2], (+n[3]||0), (+n[4]||0), (+n[5]||0));\n\tif(str.indexOf(\"Z\") > -1) out = new Date(out.getTime() - out.getTimezoneOffset() * 60 * 1000);\n\treturn out;\n}\n\nfunction cc2str(arr/*:Array<number>*/, debomit)/*:string*/ {\n\tif(has_buf && Buffer.isBuffer(arr)) {\n\t\tif(debomit) {\n\t\t\tif(arr[0] == 0xFF && arr[1] == 0xFE) return utf8write(arr.slice(2).toString(\"utf16le\"));\n\t\t\tif(arr[1] == 0xFE && arr[2] == 0xFF) return utf8write(utf16beread(arr.slice(2).toString(\"binary\")));\n\t\t}\n\t\treturn arr.toString(\"binary\");\n\t}\n\n\tif(typeof TextDecoder !== \"undefined\") try {\n\t\tif(debomit) {\n\t\t\tif(arr[0] == 0xFF && arr[1] == 0xFE) return utf8write(new TextDecoder(\"utf-16le\").decode(arr.slice(2)));\n\t\t\tif(arr[0] == 0xFE && arr[1] == 0xFF) return utf8write(new TextDecoder(\"utf-16be\").decode(arr.slice(2)));\n\t\t}\n\t\tvar rev = {\n\t\t\t\"\\u20ac\": \"\\x80\", \"\\u201a\": \"\\x82\", \"\\u0192\": \"\\x83\", \"\\u201e\": \"\\x84\",\n\t\t\t\"\\u2026\": \"\\x85\", \"\\u2020\": \"\\x86\", \"\\u2021\": \"\\x87\", \"\\u02c6\": \"\\x88\",\n\t\t\t\"\\u2030\": \"\\x89\", \"\\u0160\": \"\\x8a\", \"\\u2039\": \"\\x8b\", \"\\u0152\": \"\\x8c\",\n\t\t\t\"\\u017d\": \"\\x8e\", \"\\u2018\": \"\\x91\", \"\\u2019\": \"\\x92\", \"\\u201c\": \"\\x93\",\n\t\t\t\"\\u201d\": \"\\x94\", \"\\u2022\": \"\\x95\", \"\\u2013\": \"\\x96\", \"\\u2014\": \"\\x97\",\n\t\t\t\"\\u02dc\": \"\\x98\", \"\\u2122\": \"\\x99\", \"\\u0161\": \"\\x9a\", \"\\u203a\": \"\\x9b\",\n\t\t\t\"\\u0153\": \"\\x9c\", \"\\u017e\": \"\\x9e\", \"\\u0178\": \"\\x9f\"\n\t\t};\n\t\tif(Array.isArray(arr)) arr = new Uint8Array(arr);\n\t\treturn new TextDecoder(\"latin1\").decode(arr).replace(/[€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ]/g, function(c) { return rev[c] || c; });\n\t} catch(e) {}\n\n\tvar o = [];\n\tfor(var i = 0; i != arr.length; ++i) o.push(String.fromCharCode(arr[i]));\n\treturn o.join(\"\");\n}\n\nfunction dup(o/*:any*/)/*:any*/ {\n\tif(typeof JSON != 'undefined' && !Array.isArray(o)) return JSON.parse(JSON.stringify(o));\n\tif(typeof o != 'object' || o == null) return o;\n\tif(o instanceof Date) return new Date(o.getTime());\n\tvar out = {};\n\tfor(var k in o) if(Object.prototype.hasOwnProperty.call(o, k)) out[k] = dup(o[k]);\n\treturn out;\n}\n\nfunction fill(c/*:string*/,l/*:number*/)/*:string*/ { var o = \"\"; while(o.length < l) o+=c; return o; }\n\n/* TODO: stress test */\nfunction fuzzynum(s/*:string*/)/*:number*/ {\n\tvar v/*:number*/ = Number(s);\n\tif(!isNaN(v)) return isFinite(v) ? v : NaN;\n\tif(!/\\d/.test(s)) return v;\n\tvar wt = 1;\n\tvar ss = s.replace(/([\\d]),([\\d])/g,\"$1$2\").replace(/[$]/g,\"\").replace(/[%]/g, function() { wt *= 100; return \"\";});\n\tif(!isNaN(v = Number(ss))) return v / wt;\n\tss = ss.replace(/[(](.*)[)]/,function($$, $1) { wt = -wt; return $1;});\n\tif(!isNaN(v = Number(ss))) return v / wt;\n\treturn v;\n}\nvar lower_months = ['january', 'february', 'march', 'april', 'may', 'june', 'july', 'august', 'september', 'october', 'november', 'december'];\nfunction fuzzydate(s/*:string*/)/*:Date*/ {\n\tvar o = new Date(s), n = new Date(NaN);\n\tvar y = o.getYear(), m = o.getMonth(), d = o.getDate();\n\tif(isNaN(d)) return n;\n\tvar lower = s.toLowerCase();\n\tif(lower.match(/jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec/)) {\n\t\tlower = lower.replace(/[^a-z]/g,\"\").replace(/([^a-z]|^)[ap]m?([^a-z]|$)/,\"\");\n\t\tif(lower.length > 3 && lower_months.indexOf(lower) == -1) return n;\n\t} else if(lower.match(/[a-z]/)) return n;\n\tif(y < 0 || y > 8099) return n;\n\tif((m > 0 || d > 1) && y != 101) return o;\n\tif(s.match(/[^-0-9:,\\/\\\\]/)) return n;\n\treturn o;\n}\n\nvar split_regex = /*#__PURE__*/(function() {\n\tvar safe_split_regex = \"abacaba\".split(/(:?b)/i).length == 5;\n\treturn function split_regex(str/*:string*/, re, def/*:string*/)/*:Array<string>*/ {\n\t\tif(safe_split_regex || typeof re == \"string\") return str.split(re);\n\t\tvar p = str.split(re), o = [p[0]];\n\t\tfor(var i = 1; i < p.length; ++i) { o.push(def); o.push(p[i]); }\n\t\treturn o;\n\t};\n})();\nfunction getdatastr(data)/*:?string*/ {\n\tif(!data) return null;\n\tif(data.content && data.type) return cc2str(data.content, true);\n\tif(data.data) return debom(data.data);\n\tif(data.asNodeBuffer && has_buf) return debom(data.asNodeBuffer().toString('binary'));\n\tif(data.asBinary) return debom(data.asBinary());\n\tif(data._data && data._data.getContent) return debom(cc2str(Array.prototype.slice.call(data._data.getContent(),0)));\n\treturn null;\n}\n\nfunction getdatabin(data) {\n\tif(!data) return null;\n\tif(data.data) return char_codes(data.data);\n\tif(data.asNodeBuffer && has_buf) return data.asNodeBuffer();\n\tif(data._data && data._data.getContent) {\n\t\tvar o = data._data.getContent();\n\t\tif(typeof o == \"string\") return char_codes(o);\n\t\treturn Array.prototype.slice.call(o);\n\t}\n\tif(data.content && data.type) return data.content;\n\treturn null;\n}\n\nfunction getdata(data) { return (data && data.name.slice(-4) === \".bin\") ? getdatabin(data) : getdatastr(data); }\n\n/* Part 2 Section 10.1.2 \"Mapping Content Types\" Names are case-insensitive */\n/* OASIS does not comment on filename case sensitivity */\nfunction safegetzipfile(zip, file/*:string*/) {\n\tvar k = zip.FullPaths || keys(zip.files);\n\tvar f = file.toLowerCase().replace(/[\\/]/g, '\\\\'), g = f.replace(/\\\\/g,'\\/');\n\tfor(var i=0; i<k.length; ++i) {\n\t\tvar n = k[i].replace(/^Root Entry[\\/]/,\"\").toLowerCase();\n\t\tif(f == n || g == n) return zip.files ? zip.files[k[i]] : zip.FileIndex[i];\n\t}\n\treturn null;\n}\n\nfunction getzipfile(zip, file/*:string*/) {\n\tvar o = safegetzipfile(zip, file);\n\tif(o == null) throw new Error(\"Cannot find file \" + file + \" in zip\");\n\treturn o;\n}\n\nfunction getzipdata(zip, file/*:string*/, safe/*:?boolean*/)/*:any*/ {\n\tif(!safe) return getdata(getzipfile(zip, file));\n\tif(!file) return null;\n\ttry { return getzipdata(zip, file); } catch(e) { return null; }\n}\n\nfunction getzipstr(zip, file/*:string*/, safe/*:?boolean*/)/*:?string*/ {\n\tif(!safe) return getdatastr(getzipfile(zip, file));\n\tif(!file) return null;\n\ttry { return getzipstr(zip, file); } catch(e) { return null; }\n}\n\nfunction getzipbin(zip, file/*:string*/, safe/*:?boolean*/)/*:any*/ {\n\tif(!safe) return getdatabin(getzipfile(zip, file));\n\tif(!file) return null;\n\ttry { return getzipbin(zip, file); } catch(e) { return null; }\n}\n\nfunction zipentries(zip) {\n\tvar k = zip.FullPaths || keys(zip.files), o = [];\n\tfor(var i = 0; i < k.length; ++i) if(k[i].slice(-1) != '/') o.push(k[i].replace(/^Root Entry[\\/]/, \"\"));\n\treturn o.sort();\n}\n\nfunction zip_add_file(zip, path, content) {\n\tif(zip.FullPaths) {\n\t\tif(typeof content == \"string\") {\n\t\t\tvar res;\n\t\t\tif(has_buf) res = Buffer_from(content);\n\t\t\t/* TODO: investigate performance in Edge 13 */\n\t\t\t//else if(typeof TextEncoder !== \"undefined\") res = new TextEncoder().encode(content);\n\t\t\telse res = utf8decode(content);\n\t\t\treturn CFB.utils.cfb_add(zip, path, res);\n\t\t}\n\t\tCFB.utils.cfb_add(zip, path, content);\n\t}\n\telse zip.file(path, content);\n}\n\nfunction zip_new() { return CFB.utils.cfb_new(); }\n\nfunction zip_read(d, o) {\n\tswitch(o.type) {\n\t\tcase \"base64\": return CFB.read(d, { type: \"base64\" });\n\t\tcase \"binary\": return CFB.read(d, { type: \"binary\" });\n\t\tcase \"buffer\": case \"array\": return CFB.read(d, { type: \"buffer\" });\n\t}\n\tthrow new Error(\"Unrecognized type \" + o.type);\n}\n\nfunction resolve_path(path/*:string*/, base/*:string*/)/*:string*/ {\n\tif(path.charAt(0) == \"/\") return path.slice(1);\n\tvar result = base.split('/');\n\tif(base.slice(-1) != \"/\") result.pop(); // folder path\n\tvar target = path.split('/');\n\twhile (target.length !== 0) {\n\t\tvar step = target.shift();\n\t\tif (step === '..') result.pop();\n\t\telse if (step !== '.') result.push(step);\n\t}\n\treturn result.join('/');\n}\nvar XML_HEADER = '<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\\r\\n';\nvar attregexg=/([^\"\\s?>\\/]+)\\s*=\\s*((?:\")([^\"]*)(?:\")|(?:')([^']*)(?:')|([^'\">\\s]+))/g;\nvar tagregex1=/<[\\/\\?]?[a-zA-Z0-9:_-]+(?:\\s+[^\"\\s?>\\/]+\\s*=\\s*(?:\"[^\"]*\"|'[^']*'|[^'\">\\s=]+))*\\s*[\\/\\?]?>/mg, tagregex2 = /<[^>]*>/g;\nvar tagregex = /*#__PURE__*/XML_HEADER.match(tagregex1) ? tagregex1 : tagregex2;\nvar nsregex=/<\\w*:/, nsregex2 = /<(\\/?)\\w+:/;\nfunction parsexmltag(tag/*:string*/, skip_root/*:?boolean*/, skip_LC/*:?boolean*/)/*:any*/ {\n\tvar z = ({}/*:any*/);\n\tvar eq = 0, c = 0;\n\tfor(; eq !== tag.length; ++eq) if((c = tag.charCodeAt(eq)) === 32 || c === 10 || c === 13) break;\n\tif(!skip_root) z[0] = tag.slice(0, eq);\n\tif(eq === tag.length) return z;\n\tvar m = tag.match(attregexg), j=0, v=\"\", i=0, q=\"\", cc=\"\", quot = 1;\n\tif(m) for(i = 0; i != m.length; ++i) {\n\t\tcc = m[i];\n\t\tfor(c=0; c != cc.length; ++c) if(cc.charCodeAt(c) === 61) break;\n\t\tq = cc.slice(0,c).trim();\n\t\twhile(cc.charCodeAt(c+1) == 32) ++c;\n\t\tquot = ((eq=cc.charCodeAt(c+1)) == 34 || eq == 39) ? 1 : 0;\n\t\tv = cc.slice(c+1+quot, cc.length-quot);\n\t\tfor(j=0;j!=q.length;++j) if(q.charCodeAt(j) === 58) break;\n\t\tif(j===q.length) {\n\t\t\tif(q.indexOf(\"_\") > 0) q = q.slice(0, q.indexOf(\"_\")); // from ods\n\t\t\tz[q] = v;\n\t\t\tif(!skip_LC) z[q.toLowerCase()] = v;\n\t\t}\n\t\telse {\n\t\t\tvar k = (j===5 && q.slice(0,5)===\"xmlns\"?\"xmlns\":\"\")+q.slice(j+1);\n\t\t\tif(z[k] && q.slice(j-3,j) == \"ext\") continue; // from ods\n\t\t\tz[k] = v;\n\t\t\tif(!skip_LC) z[k.toLowerCase()] = v;\n\t\t}\n\t}\n\treturn z;\n}\nfunction strip_ns(x/*:string*/)/*:string*/ { return x.replace(nsregex2, \"<$1\"); }\n\nvar encodings = {\n\t'&quot;': '\"',\n\t'&apos;': \"'\",\n\t'&gt;': '>',\n\t'&lt;': '<',\n\t'&amp;': '&'\n};\nvar rencoding = /*#__PURE__*/evert(encodings);\n//var rencstr = \"&<>'\\\"\".split(\"\");\n\n// TODO: CP remap (need to read file version to determine OS)\nvar unescapexml/*:StringConv*/ = /*#__PURE__*/(function() {\n\t/* 22.4.2.4 bstr (Basic String) */\n\tvar encregex = /&(?:quot|apos|gt|lt|amp|#x?([\\da-fA-F]+));/ig, coderegex = /_x([\\da-fA-F]{4})_/ig;\n\treturn function unescapexml(text/*:string*/)/*:string*/ {\n\t\tvar s = text + '', i = s.indexOf(\"<![CDATA[\");\n\t\tif(i == -1) return s.replace(encregex, function($$, $1) { return encodings[$$]||String.fromCharCode(parseInt($1,$$.indexOf(\"x\")>-1?16:10))||$$; }).replace(coderegex,function(m,c) {return String.fromCharCode(parseInt(c,16));});\n\t\tvar j = s.indexOf(\"]]>\");\n\t\treturn unescapexml(s.slice(0, i)) + s.slice(i+9,j) + unescapexml(s.slice(j+3));\n\t};\n})();\n\nvar decregex=/[&<>'\"]/g, charegex = /[\\u0000-\\u0008\\u000b-\\u001f]/g;\nfunction escapexml(text/*:string*/)/*:string*/{\n\tvar s = text + '';\n\treturn s.replace(decregex, function(y) { return rencoding[y]; }).replace(charegex,function(s) { return \"_x\" + (\"000\"+s.charCodeAt(0).toString(16)).slice(-4) + \"_\";});\n}\nfunction escapexmltag(text/*:string*/)/*:string*/{ return escapexml(text).replace(/ /g,\"_x0020_\"); }\n\nvar htmlcharegex = /[\\u0000-\\u001f]/g;\nfunction escapehtml(text/*:string*/)/*:string*/{\n\tvar s = text + '';\n\treturn s.replace(decregex, function(y) { return rencoding[y]; }).replace(/\\n/g, \"<br/>\").replace(htmlcharegex,function(s) { return \"&#x\" + (\"000\"+s.charCodeAt(0).toString(16)).slice(-4) + \";\"; });\n}\n\nfunction escapexlml(text/*:string*/)/*:string*/{\n\tvar s = text + '';\n\treturn s.replace(decregex, function(y) { return rencoding[y]; }).replace(htmlcharegex,function(s) { return \"&#x\" + (s.charCodeAt(0).toString(16)).toUpperCase() + \";\"; });\n}\n\n/* TODO: handle codepages */\nvar xlml_fixstr/*:StringConv*/ = /*#__PURE__*/(function() {\n\tvar entregex = /&#(\\d+);/g;\n\tfunction entrepl($$/*:string*/,$1/*:string*/)/*:string*/ { return String.fromCharCode(parseInt($1,10)); }\n\treturn function xlml_fixstr(str/*:string*/)/*:string*/ { return str.replace(entregex,entrepl); };\n})();\nfunction xlml_unfixstr(str/*:string*/)/*:string*/ { return str.replace(/(\\r\\n|[\\r\\n])/g,\"\\&#10;\"); }\n\nfunction parsexmlbool(value/*:any*/)/*:boolean*/ {\n\tswitch(value) {\n\t\tcase 1: case true: case '1': case 'true': case 'TRUE': return true;\n\t\t/* case '0': case 'false': case 'FALSE':*/\n\t\tdefault: return false;\n\t}\n}\n\nfunction utf8reada(orig/*:string*/)/*:string*/ {\n\tvar out = \"\", i = 0, c = 0, d = 0, e = 0, f = 0, w = 0;\n\twhile (i < orig.length) {\n\t\tc = orig.charCodeAt(i++);\n\t\tif (c < 128) { out += String.fromCharCode(c); continue; }\n\t\td = orig.charCodeAt(i++);\n\t\tif (c>191 && c<224) { f = ((c & 31) << 6); f |= (d & 63); out += String.fromCharCode(f); continue; }\n\t\te = orig.charCodeAt(i++);\n\t\tif (c < 240) { out += String.fromCharCode(((c & 15) << 12) | ((d & 63) << 6) | (e & 63)); continue; }\n\t\tf = orig.charCodeAt(i++);\n\t\tw = (((c & 7) << 18) | ((d & 63) << 12) | ((e & 63) << 6) | (f & 63))-65536;\n\t\tout += String.fromCharCode(0xD800 + ((w>>>10)&1023));\n\t\tout += String.fromCharCode(0xDC00 + (w&1023));\n\t}\n\treturn out;\n}\n\nfunction utf8readb(data) {\n\tvar out = new_raw_buf(2*data.length), w, i, j = 1, k = 0, ww=0, c;\n\tfor(i = 0; i < data.length; i+=j) {\n\t\tj = 1;\n\t\tif((c=data.charCodeAt(i)) < 128) w = c;\n\t\telse if(c < 224) { w = (c&31)*64+(data.charCodeAt(i+1)&63); j=2; }\n\t\telse if(c < 240) { w=(c&15)*4096+(data.charCodeAt(i+1)&63)*64+(data.charCodeAt(i+2)&63); j=3; }\n\t\telse { j = 4;\n\t\t\tw = (c & 7)*262144+(data.charCodeAt(i+1)&63)*4096+(data.charCodeAt(i+2)&63)*64+(data.charCodeAt(i+3)&63);\n\t\t\tw -= 65536; ww = 0xD800 + ((w>>>10)&1023); w = 0xDC00 + (w&1023);\n\t\t}\n\t\tif(ww !== 0) { out[k++] = ww&255; out[k++] = ww>>>8; ww = 0; }\n\t\tout[k++] = w%256; out[k++] = w>>>8;\n\t}\n\treturn out.slice(0,k).toString('ucs2');\n}\n\nfunction utf8readc(data) { return Buffer_from(data, 'binary').toString('utf8'); }\n\nvar utf8corpus = \"foo bar baz\\u00e2\\u0098\\u0083\\u00f0\\u009f\\u008d\\u00a3\";\nvar utf8read = has_buf && (/*#__PURE__*/utf8readc(utf8corpus) == /*#__PURE__*/utf8reada(utf8corpus) && utf8readc || /*#__PURE__*/utf8readb(utf8corpus) == /*#__PURE__*/utf8reada(utf8corpus) && utf8readb) || utf8reada;\n\nvar utf8write/*:StringConv*/ = has_buf ? function(data) { return Buffer_from(data, 'utf8').toString(\"binary\"); } : function(orig/*:string*/)/*:string*/ {\n\tvar out/*:Array<string>*/ = [], i = 0, c = 0, d = 0;\n\twhile(i < orig.length) {\n\t\tc = orig.charCodeAt(i++);\n\t\tswitch(true) {\n\t\t\tcase c < 128: out.push(String.fromCharCode(c)); break;\n\t\t\tcase c < 2048:\n\t\t\t\tout.push(String.fromCharCode(192 + (c >> 6)));\n\t\t\t\tout.push(String.fromCharCode(128 + (c & 63)));\n\t\t\t\tbreak;\n\t\t\tcase c >= 55296 && c < 57344:\n\t\t\t\tc -= 55296; d = orig.charCodeAt(i++) - 56320 + (c<<10);\n\t\t\t\tout.push(String.fromCharCode(240 + ((d >>18) & 7)));\n\t\t\t\tout.push(String.fromCharCode(144 + ((d >>12) & 63)));\n\t\t\t\tout.push(String.fromCharCode(128 + ((d >> 6) & 63)));\n\t\t\t\tout.push(String.fromCharCode(128 + (d & 63)));\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tout.push(String.fromCharCode(224 + (c >> 12)));\n\t\t\t\tout.push(String.fromCharCode(128 + ((c >> 6) & 63)));\n\t\t\t\tout.push(String.fromCharCode(128 + (c & 63)));\n\t\t}\n\t}\n\treturn out.join(\"\");\n};\n\n// matches <foo>...</foo> extracts content\nvar matchtag = /*#__PURE__*/(function() {\n\tvar mtcache/*:{[k:string]:RegExp}*/ = ({}/*:any*/);\n\treturn function matchtag(f/*:string*/,g/*:?string*/)/*:RegExp*/ {\n\t\tvar t = f+\"|\"+(g||\"\");\n\t\tif(mtcache[t]) return mtcache[t];\n\t\treturn (mtcache[t] = new RegExp('<(?:\\\\w+:)?'+f+'(?: xml:space=\"preserve\")?(?:[^>]*)>([\\\\s\\\\S]*?)</(?:\\\\w+:)?'+f+'>',((g||\"\")/*:any*/)));\n\t};\n})();\n\nvar htmldecode/*:{(s:string):string}*/ = /*#__PURE__*/(function() {\n\tvar entities/*:Array<[RegExp, string]>*/ = [\n\t\t['nbsp', ' '], ['middot', '·'],\n\t\t['quot', '\"'], ['apos', \"'\"], ['gt',   '>'], ['lt',   '<'], ['amp',  '&']\n\t].map(function(x/*:[string, string]*/) { return [new RegExp('&' + x[0] + ';', \"ig\"), x[1]]; });\n\treturn function htmldecode(str/*:string*/)/*:string*/ {\n\t\tvar o = str\n\t\t\t\t// Remove new lines and spaces from start of content\n\t\t\t\t.replace(/^[\\t\\n\\r ]+/, \"\")\n\t\t\t\t// Remove new lines and spaces from end of content\n\t\t\t\t.replace(/[\\t\\n\\r ]+$/,\"\")\n\t\t\t\t// Added line which removes any white space characters after and before html tags\n\t\t\t\t.replace(/>\\s+/g,\">\").replace(/\\s+</g,\"<\")\n\t\t\t\t// Replace remaining new lines and spaces with space\n\t\t\t\t.replace(/[\\t\\n\\r ]+/g, \" \")\n\t\t\t\t// Replace <br> tags with new lines\n\t\t\t\t.replace(/<\\s*[bB][rR]\\s*\\/?>/g,\"\\n\")\n\t\t\t\t// Strip HTML elements\n\t\t\t\t.replace(/<[^>]*>/g,\"\");\n\t\tfor(var i = 0; i < entities.length; ++i) o = o.replace(entities[i][0], entities[i][1]);\n\t\treturn o;\n\t};\n})();\n\nvar vtregex = /*#__PURE__*/(function(){ var vt_cache = {};\n\treturn function vt_regex(bt) {\n\t\tif(vt_cache[bt] !== undefined) return vt_cache[bt];\n\t\treturn (vt_cache[bt] = new RegExp(\"<(?:vt:)?\" + bt + \">([\\\\s\\\\S]*?)</(?:vt:)?\" + bt + \">\", 'g') );\n};})();\nvar vtvregex = /<\\/?(?:vt:)?variant>/g, vtmregex = /<(?:vt:)([^>]*)>([\\s\\S]*)</;\nfunction parseVector(data/*:string*/, opts)/*:Array<{v:string,t:string}>*/ {\n\tvar h = parsexmltag(data);\n\n\tvar matches/*:Array<string>*/ = data.match(vtregex(h.baseType))||[];\n\tvar res/*:Array<any>*/ = [];\n\tif(matches.length != h.size) {\n\t\tif(opts.WTF) throw new Error(\"unexpected vector length \" + matches.length + \" != \" + h.size);\n\t\treturn res;\n\t}\n\tmatches.forEach(function(x/*:string*/) {\n\t\tvar v = x.replace(vtvregex,\"\").match(vtmregex);\n\t\tif(v) res.push({v:utf8read(v[2]), t:v[1]});\n\t});\n\treturn res;\n}\n\nvar wtregex = /(^\\s|\\s$|\\n)/;\nfunction writetag(f/*:string*/,g/*:string*/)/*:string*/ { return '<' + f + (g.match(wtregex)?' xml:space=\"preserve\"' : \"\") + '>' + g + '</' + f + '>'; }\n\nfunction wxt_helper(h)/*:string*/ { return keys(h).map(function(k) { return \" \" + k + '=\"' + h[k] + '\"';}).join(\"\"); }\nfunction writextag(f/*:string*/,g/*:?string*/,h) { return '<' + f + ((h != null) ? wxt_helper(h) : \"\") + ((g != null) ? (g.match(wtregex)?' xml:space=\"preserve\"' : \"\") + '>' + g + '</' + f : \"/\") + '>';}\n\nfunction write_w3cdtf(d/*:Date*/, t/*:?boolean*/)/*:string*/ { try { return d.toISOString().replace(/\\.\\d*/,\"\"); } catch(e) { if(t) throw e; } return \"\"; }\n\nfunction write_vt(s, xlsx/*:?boolean*/)/*:string*/ {\n\tswitch(typeof s) {\n\t\tcase 'string':\n\t\t\tvar o = writextag('vt:lpwstr', escapexml(s));\n\t\t\tif(xlsx) o = o.replace(/&quot;/g, \"_x0022_\");\n\t\t\treturn o;\n\t\tcase 'number': return writextag((s|0)==s?'vt:i4':'vt:r8', escapexml(String(s)));\n\t\tcase 'boolean': return writextag('vt:bool',s?'true':'false');\n\t}\n\tif(s instanceof Date) return writextag('vt:filetime', write_w3cdtf(s));\n\tthrow new Error(\"Unable to serialize \" + s);\n}\n\nfunction xlml_normalize(d)/*:string*/ {\n\tif(has_buf &&/*::typeof Buffer !== \"undefined\" && d != null && d instanceof Buffer &&*/ Buffer.isBuffer(d)) return d.toString('utf8');\n\tif(typeof d === 'string') return d;\n\t/* duktape */\n\tif(typeof Uint8Array !== 'undefined' && d instanceof Uint8Array) return utf8read(a2s(ab2a(d)));\n\tthrow new Error(\"Bad input format: expected Buffer or string\");\n}\n/* UOS uses CJK in tags */\nvar xlmlregex = /<(\\/?)([^\\s?><!\\/:]*:|)([^\\s?<>:\\/]+)(?:[\\s?:\\/][^>]*)?>/mg;\n//var xlmlregex = /<(\\/?)([a-z0-9]*:|)(\\w+)[^>]*>/mg;\n\nvar XMLNS = ({\n\tCORE_PROPS: 'http://schemas.openxmlformats.org/package/2006/metadata/core-properties',\n\tCUST_PROPS: \"http://schemas.openxmlformats.org/officeDocument/2006/custom-properties\",\n\tEXT_PROPS: \"http://schemas.openxmlformats.org/officeDocument/2006/extended-properties\",\n\tCT: 'http://schemas.openxmlformats.org/package/2006/content-types',\n\tRELS: 'http://schemas.openxmlformats.org/package/2006/relationships',\n\tTCMNT: 'http://schemas.microsoft.com/office/spreadsheetml/2018/threadedcomments',\n\t'dc': 'http://purl.org/dc/elements/1.1/',\n\t'dcterms': 'http://purl.org/dc/terms/',\n\t'dcmitype': 'http://purl.org/dc/dcmitype/',\n\t'mx': 'http://schemas.microsoft.com/office/mac/excel/2008/main',\n\t'r': 'http://schemas.openxmlformats.org/officeDocument/2006/relationships',\n\t'sjs': 'http://schemas.openxmlformats.org/package/2006/sheetjs/core-properties',\n\t'vt': 'http://schemas.openxmlformats.org/officeDocument/2006/docPropsVTypes',\n\t'xsi': 'http://www.w3.org/2001/XMLSchema-instance',\n\t'xsd': 'http://www.w3.org/2001/XMLSchema'\n}/*:any*/);\n\nvar XMLNS_main = [\n\t'http://schemas.openxmlformats.org/spreadsheetml/2006/main',\n\t'http://purl.oclc.org/ooxml/spreadsheetml/main',\n\t'http://schemas.microsoft.com/office/excel/2006/main',\n\t'http://schemas.microsoft.com/office/excel/2006/2'\n];\n\nvar XLMLNS = ({\n\t'o':    'urn:schemas-microsoft-com:office:office',\n\t'x':    'urn:schemas-microsoft-com:office:excel',\n\t'ss':   'urn:schemas-microsoft-com:office:spreadsheet',\n\t'dt':   'uuid:C2F41010-65B3-11d1-A29F-00AA00C14882',\n\t'mv':   'http://macVmlSchemaUri',\n\t'v':    'urn:schemas-microsoft-com:vml',\n\t'html': 'http://www.w3.org/TR/REC-html40'\n}/*:any*/);\nfunction read_double_le(b/*:RawBytes|CFBlob*/, idx/*:number*/)/*:number*/ {\n\tvar s = 1 - 2 * (b[idx + 7] >>> 7);\n\tvar e = ((b[idx + 7] & 0x7f) << 4) + ((b[idx + 6] >>> 4) & 0x0f);\n\tvar m = (b[idx+6]&0x0f);\n\tfor(var i = 5; i >= 0; --i) m = m * 256 + b[idx + i];\n\tif(e == 0x7ff) return m == 0 ? (s * Infinity) : NaN;\n\tif(e == 0) e = -1022;\n\telse { e -= 1023; m += Math.pow(2,52); }\n\treturn s * Math.pow(2, e - 52) * m;\n}\n\nfunction write_double_le(b/*:RawBytes|CFBlob*/, v/*:number*/, idx/*:number*/) {\n\tvar bs = ((((v < 0) || (1/v == -Infinity)) ? 1 : 0) << 7), e = 0, m = 0;\n\tvar av = bs ? (-v) : v;\n\tif(!isFinite(av)) { e = 0x7ff; m = isNaN(v) ? 0x6969 : 0; }\n\telse if(av == 0) e = m = 0;\n\telse {\n\t\te = Math.floor(Math.log(av) / Math.LN2);\n\t\tm = av * Math.pow(2, 52 - e);\n\t\tif((e <= -1023) && (!isFinite(m) || (m < Math.pow(2,52)))) { e = -1022; }\n\t\telse { m -= Math.pow(2,52); e+=1023; }\n\t}\n\tfor(var i = 0; i <= 5; ++i, m/=256) b[idx + i] = m & 0xff;\n\tb[idx + 6] = ((e & 0x0f) << 4) | (m & 0xf);\n\tb[idx + 7] = (e >> 4) | bs;\n}\n\nvar ___toBuffer = function(bufs/*:Array<Array<RawBytes> >*/)/*:RawBytes*/ { var x=[],w=10240; for(var i=0;i<bufs[0].length;++i) if(bufs[0][i]) for(var j=0,L=bufs[0][i].length;j<L;j+=w) x.push.apply(x, bufs[0][i].slice(j,j+w)); return x; };\nvar __toBuffer = has_buf ? function(bufs) { return (bufs[0].length > 0 && Buffer.isBuffer(bufs[0][0])) ? Buffer.concat(bufs[0].map(function(x) { return Buffer.isBuffer(x) ? x : Buffer_from(x); })) : ___toBuffer(bufs);} : ___toBuffer;\n\nvar ___utf16le = function(b/*:RawBytes|CFBlob*/,s/*:number*/,e/*:number*/)/*:string*/ { var ss/*:Array<string>*/=[]; for(var i=s; i<e; i+=2) ss.push(String.fromCharCode(__readUInt16LE(b,i))); return ss.join(\"\").replace(chr0,''); };\nvar __utf16le = has_buf ? function(b/*:RawBytes|CFBlob*/,s/*:number*/,e/*:number*/)/*:string*/ { if(!Buffer.isBuffer(b)/*:: || !(b instanceof Buffer)*/) return ___utf16le(b,s,e); return b.toString('utf16le',s,e).replace(chr0,'')/*.replace(chr1,'!')*/; } : ___utf16le;\n\nvar ___hexlify = function(b/*:RawBytes|CFBlob*/,s/*:number*/,l/*:number*/)/*:string*/ { var ss/*:Array<string>*/=[]; for(var i=s; i<s+l; ++i) ss.push((\"0\" + b[i].toString(16)).slice(-2)); return ss.join(\"\"); };\nvar __hexlify = has_buf ? function(b/*:RawBytes|CFBlob*/,s/*:number*/,l/*:number*/)/*:string*/ { return Buffer.isBuffer(b)/*:: && b instanceof Buffer*/ ? b.toString('hex',s,s+l) : ___hexlify(b,s,l); } : ___hexlify;\n\nvar ___utf8 = function(b/*:RawBytes|CFBlob*/,s/*:number*/,e/*:number*/) { var ss=[]; for(var i=s; i<e; i++) ss.push(String.fromCharCode(__readUInt8(b,i))); return ss.join(\"\"); };\nvar __utf8 = has_buf ? function utf8_b(b/*:RawBytes|CFBlob*/, s/*:number*/, e/*:number*/) { return (Buffer.isBuffer(b)/*:: && (b instanceof Buffer)*/) ? b.toString('utf8',s,e) : ___utf8(b,s,e); } : ___utf8;\n\nvar ___lpstr = function(b/*:RawBytes|CFBlob*/,i/*:number*/) { var len = __readUInt32LE(b,i); return len > 0 ? __utf8(b, i+4,i+4+len-1) : \"\";};\nvar __lpstr = ___lpstr;\n\nvar ___cpstr = function(b/*:RawBytes|CFBlob*/,i/*:number*/) { var len = __readUInt32LE(b,i); return len > 0 ? __utf8(b, i+4,i+4+len-1) : \"\";};\nvar __cpstr = ___cpstr;\n\nvar ___lpwstr = function(b/*:RawBytes|CFBlob*/,i/*:number*/) { var len = 2*__readUInt32LE(b,i); return len > 0 ? __utf8(b, i+4,i+4+len-1) : \"\";};\nvar __lpwstr = ___lpwstr;\n\nvar ___lpp4 = function lpp4_(b/*:RawBytes|CFBlob*/,i/*:number*/) { var len = __readUInt32LE(b,i); return len > 0 ? __utf16le(b, i+4,i+4+len) : \"\";};\nvar __lpp4 = ___lpp4;\n\nvar ___8lpp4 = function(b/*:RawBytes|CFBlob*/,i/*:number*/) { var len = __readUInt32LE(b,i); return len > 0 ? __utf8(b, i+4,i+4+len) : \"\";};\nvar __8lpp4 = ___8lpp4;\n\nvar ___double = function(b/*:RawBytes|CFBlob*/, idx/*:number*/) { return read_double_le(b, idx);};\nvar __double = ___double;\n\nvar is_buf = function is_buf_a(a) { return Array.isArray(a) || (typeof Uint8Array !== \"undefined\" && a instanceof Uint8Array); };\n\nif(has_buf/*:: && typeof Buffer !== 'undefined'*/) {\n\t__lpstr = function lpstr_b(b/*:RawBytes|CFBlob*/, i/*:number*/) { if(!Buffer.isBuffer(b)/*:: || !(b instanceof Buffer)*/) return ___lpstr(b, i); var len = b.readUInt32LE(i); return len > 0 ? b.toString('utf8',i+4,i+4+len-1) : \"\";};\n\t__cpstr = function cpstr_b(b/*:RawBytes|CFBlob*/, i/*:number*/) { if(!Buffer.isBuffer(b)/*:: || !(b instanceof Buffer)*/) return ___cpstr(b, i); var len = b.readUInt32LE(i); return len > 0 ? b.toString('utf8',i+4,i+4+len-1) : \"\";};\n\t__lpwstr = function lpwstr_b(b/*:RawBytes|CFBlob*/, i/*:number*/) { if(!Buffer.isBuffer(b)/*:: || !(b instanceof Buffer)*/) return ___lpwstr(b, i); var len = 2*b.readUInt32LE(i); return b.toString('utf16le',i+4,i+4+len-1);};\n\t__lpp4 = function lpp4_b(b/*:RawBytes|CFBlob*/, i/*:number*/) { if(!Buffer.isBuffer(b)/*:: || !(b instanceof Buffer)*/) return ___lpp4(b, i); var len = b.readUInt32LE(i); return b.toString('utf16le',i+4,i+4+len);};\n\t__8lpp4 = function lpp4_8b(b/*:RawBytes|CFBlob*/, i/*:number*/) { if(!Buffer.isBuffer(b)/*:: || !(b instanceof Buffer)*/) return ___8lpp4(b, i); var len = b.readUInt32LE(i); return b.toString('utf8',i+4,i+4+len);};\n\t__double = function double_(b/*:RawBytes|CFBlob*/, i/*:number*/) { if(Buffer.isBuffer(b)/*::&& b instanceof Buffer*/) return b.readDoubleLE(i); return ___double(b,i); };\n\tis_buf = function is_buf_b(a) { return Buffer.isBuffer(a) || Array.isArray(a) || (typeof Uint8Array !== \"undefined\" && a instanceof Uint8Array); };\n}\n\n/* from js-xls */\nfunction cpdoit() {\n\t__utf16le = function(b/*:RawBytes|CFBlob*/,s/*:number*/,e/*:number*/) { return $cptable.utils.decode(1200, b.slice(s,e)).replace(chr0, ''); };\n\t__utf8 = function(b/*:RawBytes|CFBlob*/,s/*:number*/,e/*:number*/) { return $cptable.utils.decode(65001, b.slice(s,e)); };\n\t__lpstr = function(b/*:RawBytes|CFBlob*/,i/*:number*/) { var len = __readUInt32LE(b,i); return len > 0 ? $cptable.utils.decode(current_ansi, b.slice(i+4, i+4+len-1)) : \"\";};\n\t__cpstr = function(b/*:RawBytes|CFBlob*/,i/*:number*/) { var len = __readUInt32LE(b,i); return len > 0 ? $cptable.utils.decode(current_codepage, b.slice(i+4, i+4+len-1)) : \"\";};\n\t__lpwstr = function(b/*:RawBytes|CFBlob*/,i/*:number*/) { var len = 2*__readUInt32LE(b,i); return len > 0 ? $cptable.utils.decode(1200, b.slice(i+4,i+4+len-1)) : \"\";};\n\t__lpp4 = function(b/*:RawBytes|CFBlob*/,i/*:number*/) { var len = __readUInt32LE(b,i); return len > 0 ? $cptable.utils.decode(1200, b.slice(i+4,i+4+len)) : \"\";};\n\t__8lpp4 = function(b/*:RawBytes|CFBlob*/,i/*:number*/) { var len = __readUInt32LE(b,i); return len > 0 ? $cptable.utils.decode(65001, b.slice(i+4,i+4+len)) : \"\";};\n}\nif(typeof $cptable !== 'undefined') cpdoit();\n\nvar __readUInt8 = function(b/*:RawBytes|CFBlob*/, idx/*:number*/)/*:number*/ { return b[idx]; };\nvar __readUInt16LE = function(b/*:RawBytes|CFBlob*/, idx/*:number*/)/*:number*/ { return (b[idx+1]*(1<<8))+b[idx]; };\nvar __readInt16LE = function(b/*:RawBytes|CFBlob*/, idx/*:number*/)/*:number*/ { var u = (b[idx+1]*(1<<8))+b[idx]; return (u < 0x8000) ? u : ((0xffff - u + 1) * -1); };\nvar __readUInt32LE = function(b/*:RawBytes|CFBlob*/, idx/*:number*/)/*:number*/ { return b[idx+3]*(1<<24)+(b[idx+2]<<16)+(b[idx+1]<<8)+b[idx]; };\nvar __readInt32LE = function(b/*:RawBytes|CFBlob*/, idx/*:number*/)/*:number*/ { return (b[idx+3]<<24)|(b[idx+2]<<16)|(b[idx+1]<<8)|b[idx]; };\nvar __readInt32BE = function(b/*:RawBytes|CFBlob*/, idx/*:number*/)/*:number*/ { return (b[idx]<<24)|(b[idx+1]<<16)|(b[idx+2]<<8)|b[idx+3]; };\n\nfunction ReadShift(size/*:number*/, t/*:?string*/)/*:number|string*/ {\n\tvar o=\"\", oI/*:: :number = 0*/, oR, oo=[], w, vv, i, loc;\n\tswitch(t) {\n\t\tcase 'dbcs':\n\t\t\tloc = this.l;\n\t\t\tif(has_buf && Buffer.isBuffer(this)) o = this.slice(this.l, this.l+2*size).toString(\"utf16le\");\n\t\t\telse for(i = 0; i < size; ++i) { o+=String.fromCharCode(__readUInt16LE(this, loc)); loc+=2; }\n\t\t\tsize *= 2;\n\t\t\tbreak;\n\n\t\tcase 'utf8': o = __utf8(this, this.l, this.l + size); break;\n\t\tcase 'utf16le': size *= 2; o = __utf16le(this, this.l, this.l + size); break;\n\n\t\tcase 'wstr':\n\t\t\tif(typeof $cptable !== 'undefined') o = $cptable.utils.decode(current_codepage, this.slice(this.l, this.l+2*size));\n\t\t\telse return ReadShift.call(this, size, 'dbcs');\n\t\t\tsize = 2 * size; break;\n\n\t\t/* [MS-OLEDS] 2.1.4 LengthPrefixedAnsiString */\n\t\tcase 'lpstr-ansi': o = __lpstr(this, this.l); size = 4 + __readUInt32LE(this, this.l); break;\n\t\tcase 'lpstr-cp': o = __cpstr(this, this.l); size = 4 + __readUInt32LE(this, this.l); break;\n\t\t/* [MS-OLEDS] 2.1.5 LengthPrefixedUnicodeString */\n\t\tcase 'lpwstr': o = __lpwstr(this, this.l); size = 4 + 2 * __readUInt32LE(this, this.l); break;\n\t\t/* [MS-OFFCRYPTO] 2.1.2 Length-Prefixed Padded Unicode String (UNICODE-LP-P4) */\n\t\tcase 'lpp4': size = 4 +  __readUInt32LE(this, this.l); o = __lpp4(this, this.l); if(size & 0x02) size += 2; break;\n\t\t/* [MS-OFFCRYPTO] 2.1.3 Length-Prefixed UTF-8 String (UTF-8-LP-P4) */\n\t\tcase '8lpp4': size = 4 +  __readUInt32LE(this, this.l); o = __8lpp4(this, this.l); if(size & 0x03) size += 4 - (size & 0x03); break;\n\n\t\tcase 'cstr': size = 0; o = \"\";\n\t\t\twhile((w=__readUInt8(this, this.l + size++))!==0) oo.push(_getchar(w));\n\t\t\to = oo.join(\"\"); break;\n\t\tcase '_wstr': size = 0; o = \"\";\n\t\t\twhile((w=__readUInt16LE(this,this.l +size))!==0){oo.push(_getchar(w));size+=2;}\n\t\t\tsize+=2; o = oo.join(\"\"); break;\n\n\t\t/* sbcs and dbcs support continue records in the SST way TODO codepages */\n\t\tcase 'dbcs-cont': o = \"\"; loc = this.l;\n\t\t\tfor(i = 0; i < size; ++i) {\n\t\t\t\tif(this.lens && this.lens.indexOf(loc) !== -1) {\n\t\t\t\t\tw = __readUInt8(this, loc);\n\t\t\t\t\tthis.l = loc + 1;\n\t\t\t\t\tvv = ReadShift.call(this, size-i, w ? 'dbcs-cont' : 'sbcs-cont');\n\t\t\t\t\treturn oo.join(\"\") + vv;\n\t\t\t\t}\n\t\t\t\too.push(_getchar(__readUInt16LE(this, loc)));\n\t\t\t\tloc+=2;\n\t\t\t} o = oo.join(\"\"); size *= 2; break;\n\n\t\tcase 'cpstr':\n\t\t\tif(typeof $cptable !== 'undefined') {\n\t\t\t\to = $cptable.utils.decode(current_codepage, this.slice(this.l, this.l + size));\n\t\t\t\tbreak;\n\t\t\t}\n\t\t/* falls through */\n\t\tcase 'sbcs-cont': o = \"\"; loc = this.l;\n\t\t\tfor(i = 0; i != size; ++i) {\n\t\t\t\tif(this.lens && this.lens.indexOf(loc) !== -1) {\n\t\t\t\t\tw = __readUInt8(this, loc);\n\t\t\t\t\tthis.l = loc + 1;\n\t\t\t\t\tvv = ReadShift.call(this, size-i, w ? 'dbcs-cont' : 'sbcs-cont');\n\t\t\t\t\treturn oo.join(\"\") + vv;\n\t\t\t\t}\n\t\t\t\too.push(_getchar(__readUInt8(this, loc)));\n\t\t\t\tloc+=1;\n\t\t\t} o = oo.join(\"\"); break;\n\n\t\tdefault:\n\tswitch(size) {\n\t\tcase 1: oI = __readUInt8(this, this.l); this.l++; return oI;\n\t\tcase 2: oI = (t === 'i' ? __readInt16LE : __readUInt16LE)(this, this.l); this.l += 2; return oI;\n\t\tcase 4: case -4:\n\t\t\tif(t === 'i' || ((this[this.l+3] & 0x80)===0)) { oI = ((size > 0) ? __readInt32LE : __readInt32BE)(this, this.l); this.l += 4; return oI; }\n\t\t\telse { oR = __readUInt32LE(this, this.l); this.l += 4; } return oR;\n\t\tcase 8: case -8:\n\t\t\tif(t === 'f') {\n\t\t\t\tif(size == 8) oR = __double(this, this.l);\n\t\t\t\telse oR = __double([this[this.l+7],this[this.l+6],this[this.l+5],this[this.l+4],this[this.l+3],this[this.l+2],this[this.l+1],this[this.l+0]], 0);\n\t\t\t\tthis.l += 8; return oR;\n\t\t\t} else size = 8;\n\t\t/* falls through */\n\t\tcase 16: o = __hexlify(this, this.l, size); break;\n\t}}\n\tthis.l+=size; return o;\n}\n\nvar __writeUInt32LE = function(b/*:RawBytes|CFBlob*/, val/*:number*/, idx/*:number*/)/*:void*/ { b[idx] = (val & 0xFF); b[idx+1] = ((val >>> 8) & 0xFF); b[idx+2] = ((val >>> 16) & 0xFF); b[idx+3] = ((val >>> 24) & 0xFF); };\nvar __writeInt32LE  = function(b/*:RawBytes|CFBlob*/, val/*:number*/, idx/*:number*/)/*:void*/ { b[idx] = (val & 0xFF); b[idx+1] = ((val >> 8) & 0xFF); b[idx+2] = ((val >> 16) & 0xFF); b[idx+3] = ((val >> 24) & 0xFF); };\nvar __writeUInt16LE = function(b/*:RawBytes|CFBlob*/, val/*:number*/, idx/*:number*/)/*:void*/ { b[idx] = (val & 0xFF); b[idx+1] = ((val >>> 8) & 0xFF); };\n\nfunction WriteShift(t/*:number*/, val/*:string|number*/, f/*:?string*/)/*:any*/ {\n\tvar size = 0, i = 0;\n\tif(f === 'dbcs') {\n\t\t/*:: if(typeof val !== 'string') throw new Error(\"unreachable\"); */\n\t\tfor(i = 0; i != val.length; ++i) __writeUInt16LE(this, val.charCodeAt(i), this.l + 2 * i);\n\t\tsize = 2 * val.length;\n\t} else if(f === 'sbcs') {\n\t\tif(typeof $cptable !== 'undefined' && current_ansi == 874) {\n\t\t\t/* TODO: use tables directly, don't encode */\n\t\t\t/*:: if(typeof val !== \"string\") throw new Error(\"unreachable\"); */\n\t\t\tfor(i = 0; i != val.length; ++i) {\n\t\t\t\tvar cppayload = $cptable.utils.encode(current_ansi, val.charAt(i));\n\t\t\t\tthis[this.l + i] = cppayload[0];\n\t\t\t}\n\t\t} else {\n\t\t\t/*:: if(typeof val !== 'string') throw new Error(\"unreachable\"); */\n\t\t\tval = val.replace(/[^\\x00-\\x7F]/g, \"_\");\n\t\t\t/*:: if(typeof val !== 'string') throw new Error(\"unreachable\"); */\n\t\t\tfor(i = 0; i != val.length; ++i) this[this.l + i] = (val.charCodeAt(i) & 0xFF);\n\t\t}\n\t\tsize = val.length;\n\t} else if(f === 'hex') {\n\t\tfor(; i < t; ++i) {\n\t\t\t/*:: if(typeof val !== \"string\") throw new Error(\"unreachable\"); */\n\t\t\tthis[this.l++] = (parseInt(val.slice(2*i, 2*i+2), 16)||0);\n\t\t} return this;\n\t} else if(f === 'utf16le') {\n\t\t\t/*:: if(typeof val !== \"string\") throw new Error(\"unreachable\"); */\n\t\t\tvar end/*:number*/ = Math.min(this.l + t, this.length);\n\t\t\tfor(i = 0; i < Math.min(val.length, t); ++i) {\n\t\t\t\tvar cc = val.charCodeAt(i);\n\t\t\t\tthis[this.l++] = (cc & 0xff);\n\t\t\t\tthis[this.l++] = (cc >> 8);\n\t\t\t}\n\t\t\twhile(this.l < end) this[this.l++] = 0;\n\t\t\treturn this;\n\t} else /*:: if(typeof val === 'number') */ switch(t) {\n\t\tcase  1: size = 1; this[this.l] = val&0xFF; break;\n\t\tcase  2: size = 2; this[this.l] = val&0xFF; val >>>= 8; this[this.l+1] = val&0xFF; break;\n\t\tcase  3: size = 3; this[this.l] = val&0xFF; val >>>= 8; this[this.l+1] = val&0xFF; val >>>= 8; this[this.l+2] = val&0xFF; break;\n\t\tcase  4: size = 4; __writeUInt32LE(this, val, this.l); break;\n\t\tcase  8: size = 8; if(f === 'f') { write_double_le(this, val, this.l); break; }\n\t\t/* falls through */\n\t\tcase 16: break;\n\t\tcase -4: size = 4; __writeInt32LE(this, val, this.l); break;\n\t}\n\tthis.l += size; return this;\n}\n\nfunction CheckField(hexstr/*:string*/, fld/*:string*/)/*:void*/ {\n\tvar m = __hexlify(this,this.l,hexstr.length>>1);\n\tif(m !== hexstr) throw new Error(fld + 'Expected ' + hexstr + ' saw ' + m);\n\tthis.l += hexstr.length>>1;\n}\n\nfunction prep_blob(blob, pos/*:number*/)/*:void*/ {\n\tblob.l = pos;\n\tblob.read_shift = /*::(*/ReadShift/*:: :any)*/;\n\tblob.chk = CheckField;\n\tblob.write_shift = WriteShift;\n}\n\nfunction parsenoop(blob, length/*:: :number, opts?:any */) { blob.l += length; }\n\nfunction new_buf(sz/*:number*/)/*:Block*/ {\n\tvar o = new_raw_buf(sz);\n\tprep_blob(o, 0);\n\treturn o;\n}\n\n/* [MS-XLSB] 2.1.4 Record */\nfunction recordhopper(data, cb/*:RecordHopperCB*/, opts/*:?any*/) {\n\tif(!data) return;\n\tvar tmpbyte, cntbyte, length;\n\tprep_blob(data, data.l || 0);\n\tvar L = data.length, RT = 0, tgt = 0;\n\twhile(data.l < L) {\n\t\tRT = data.read_shift(1);\n\t\tif(RT & 0x80) RT = (RT & 0x7F) + ((data.read_shift(1) & 0x7F)<<7);\n\t\tvar R = XLSBRecordEnum[RT] || XLSBRecordEnum[0xFFFF];\n\t\ttmpbyte = data.read_shift(1);\n\t\tlength = tmpbyte & 0x7F;\n\t\tfor(cntbyte = 1; cntbyte <4 && (tmpbyte & 0x80); ++cntbyte) length += ((tmpbyte = data.read_shift(1)) & 0x7F)<<(7*cntbyte);\n\t\ttgt = data.l + length;\n\t\tvar d = R.f && R.f(data, length, opts);\n\t\tdata.l = tgt;\n\t\tif(cb(d, R, RT)) return;\n\t}\n}\n\n/* control buffer usage for fixed-length buffers */\nfunction buf_array()/*:BufArray*/ {\n\tvar bufs/*:Array<Block>*/ = [], blksz = has_buf ? 256 : 2048;\n\tvar newblk = function ba_newblk(sz/*:number*/)/*:Block*/ {\n\t\tvar o/*:Block*/ = (new_buf(sz)/*:any*/);\n\t\tprep_blob(o, 0);\n\t\treturn o;\n\t};\n\n\tvar curbuf/*:Block*/ = newblk(blksz);\n\n\tvar endbuf = function ba_endbuf() {\n\t\tif(!curbuf) return;\n\t\tif(curbuf.length > curbuf.l) { curbuf = curbuf.slice(0, curbuf.l); curbuf.l = curbuf.length; }\n\t\tif(curbuf.length > 0) bufs.push(curbuf);\n\t\tcurbuf = null;\n\t};\n\n\tvar next = function ba_next(sz/*:number*/)/*:Block*/ {\n\t\tif(curbuf && (sz < (curbuf.length - curbuf.l))) return curbuf;\n\t\tendbuf();\n\t\treturn (curbuf = newblk(Math.max(sz+1, blksz)));\n\t};\n\n\tvar end = function ba_end() {\n\t\tendbuf();\n\t\treturn bconcat(bufs);\n\t};\n\n\tvar push = function ba_push(buf) { endbuf(); curbuf = buf; if(curbuf.l == null) curbuf.l = curbuf.length; next(blksz); };\n\n\treturn ({ next:next, push:push, end:end, _bufs:bufs }/*:any*/);\n}\n\nfunction write_record(ba/*:BufArray*/, type/*:number*/, payload, length/*:?number*/) {\n\tvar t/*:number*/ = +type, l;\n\tif(isNaN(t)) return; // TODO: throw something here?\n\tif(!length) length = XLSBRecordEnum[t].p || (payload||[]).length || 0;\n\tl = 1 + (t >= 0x80 ? 1 : 0) + 1/* + length*/;\n\tif(length >= 0x80) ++l; if(length >= 0x4000) ++l; if(length >= 0x200000) ++l;\n\tvar o = ba.next(l);\n\tif(t <= 0x7F) o.write_shift(1, t);\n\telse {\n\t\to.write_shift(1, (t & 0x7F) + 0x80);\n\t\to.write_shift(1, (t >> 7));\n\t}\n\tfor(var i = 0; i != 4; ++i) {\n\t\tif(length >= 0x80) { o.write_shift(1, (length & 0x7F)+0x80); length >>= 7; }\n\t\telse { o.write_shift(1, length); break; }\n\t}\n\tif(/*:: length != null &&*/length > 0 && is_buf(payload)) ba.push(payload);\n}\n/* XLS ranges enforced */\nfunction shift_cell_xls(cell/*:CellAddress*/, tgt/*:any*/, opts/*:?any*/)/*:CellAddress*/ {\n\tvar out = dup(cell);\n\tif(tgt.s) {\n\t\tif(out.cRel) out.c += tgt.s.c;\n\t\tif(out.rRel) out.r += tgt.s.r;\n\t} else {\n\t\tif(out.cRel) out.c += tgt.c;\n\t\tif(out.rRel) out.r += tgt.r;\n\t}\n\tif(!opts || opts.biff < 12) {\n\t\twhile(out.c >= 0x100) out.c -= 0x100;\n\t\twhile(out.r >= 0x10000) out.r -= 0x10000;\n\t}\n\treturn out;\n}\n\nfunction shift_range_xls(cell, range, opts) {\n\tvar out = dup(cell);\n\tout.s = shift_cell_xls(out.s, range.s, opts);\n\tout.e = shift_cell_xls(out.e, range.s, opts);\n\treturn out;\n}\n\nfunction encode_cell_xls(c/*:CellAddress*/, biff/*:number*/)/*:string*/ {\n\tif(c.cRel && c.c < 0) { c = dup(c); while(c.c < 0) c.c += (biff > 8) ? 0x4000 : 0x100; }\n\tif(c.rRel && c.r < 0) { c = dup(c); while(c.r < 0) c.r += (biff > 8) ? 0x100000 : ((biff > 5) ? 0x10000 : 0x4000); }\n\tvar s = encode_cell(c);\n\tif(!c.cRel && c.cRel != null) s = fix_col(s);\n\tif(!c.rRel && c.rRel != null) s = fix_row(s);\n\treturn s;\n}\n\nfunction encode_range_xls(r, opts)/*:string*/ {\n\tif(r.s.r == 0 && !r.s.rRel) {\n\t\tif(r.e.r == (opts.biff >= 12 ? 0xFFFFF : (opts.biff >= 8 ? 0x10000 : 0x4000)) && !r.e.rRel) {\n\t\t\treturn (r.s.cRel ? \"\" : \"$\") + encode_col(r.s.c) + \":\" + (r.e.cRel ? \"\" : \"$\") + encode_col(r.e.c);\n\t\t}\n\t}\n\tif(r.s.c == 0 && !r.s.cRel) {\n\t\tif(r.e.c == (opts.biff >= 12 ? 0x3FFF : 0xFF) && !r.e.cRel) {\n\t\t\treturn (r.s.rRel ? \"\" : \"$\") + encode_row(r.s.r) + \":\" + (r.e.rRel ? \"\" : \"$\") + encode_row(r.e.r);\n\t\t}\n\t}\n\treturn encode_cell_xls(r.s, opts.biff) + \":\" + encode_cell_xls(r.e, opts.biff);\n}\nfunction decode_row(rowstr/*:string*/)/*:number*/ { return parseInt(unfix_row(rowstr),10) - 1; }\nfunction encode_row(row/*:number*/)/*:string*/ { return \"\" + (row + 1); }\nfunction fix_row(cstr/*:string*/)/*:string*/ { return cstr.replace(/([A-Z]|^)(\\d+)$/,\"$1$$$2\"); }\nfunction unfix_row(cstr/*:string*/)/*:string*/ { return cstr.replace(/\\$(\\d+)$/,\"$1\"); }\n\nfunction decode_col(colstr/*:string*/)/*:number*/ { var c = unfix_col(colstr), d = 0, i = 0; for(; i !== c.length; ++i) d = 26*d + c.charCodeAt(i) - 64; return d - 1; }\nfunction encode_col(col/*:number*/)/*:string*/ { if(col < 0) throw new Error(\"invalid column \" + col); var s=\"\"; for(++col; col; col=Math.floor((col-1)/26)) s = String.fromCharCode(((col-1)%26) + 65) + s; return s; }\nfunction fix_col(cstr/*:string*/)/*:string*/ { return cstr.replace(/^([A-Z])/,\"$$$1\"); }\nfunction unfix_col(cstr/*:string*/)/*:string*/ { return cstr.replace(/^\\$([A-Z])/,\"$1\"); }\n\nfunction split_cell(cstr/*:string*/)/*:Array<string>*/ { return cstr.replace(/(\\$?[A-Z]*)(\\$?\\d*)/,\"$1,$2\").split(\",\"); }\n//function decode_cell(cstr/*:string*/)/*:CellAddress*/ { var splt = split_cell(cstr); return { c:decode_col(splt[0]), r:decode_row(splt[1]) }; }\nfunction decode_cell(cstr/*:string*/)/*:CellAddress*/ {\n\tvar R = 0, C = 0;\n\tfor(var i = 0; i < cstr.length; ++i) {\n\t\tvar cc = cstr.charCodeAt(i);\n\t\tif(cc >= 48 && cc <= 57) R = 10 * R + (cc - 48);\n\t\telse if(cc >= 65 && cc <= 90) C = 26 * C + (cc - 64);\n\t}\n\treturn { c: C - 1, r:R - 1 };\n}\n//function encode_cell(cell/*:CellAddress*/)/*:string*/ { return encode_col(cell.c) + encode_row(cell.r); }\nfunction encode_cell(cell/*:CellAddress*/)/*:string*/ {\n\tvar col = cell.c + 1;\n\tvar s=\"\";\n\tfor(; col; col=((col-1)/26)|0) s = String.fromCharCode(((col-1)%26) + 65) + s;\n\treturn s + (cell.r + 1);\n}\nfunction decode_range(range/*:string*/)/*:Range*/ {\n\tvar idx = range.indexOf(\":\");\n\tif(idx == -1) return { s: decode_cell(range), e: decode_cell(range) };\n\treturn { s: decode_cell(range.slice(0, idx)), e: decode_cell(range.slice(idx + 1)) };\n}\n/*# if only one arg, it is assumed to be a Range.  If 2 args, both are cell addresses */\nfunction encode_range(cs/*:CellAddrSpec|Range*/,ce/*:?CellAddrSpec*/)/*:string*/ {\n\tif(typeof ce === 'undefined' || typeof ce === 'number') {\n/*:: if(!(cs instanceof Range)) throw \"unreachable\"; */\n\t\treturn encode_range(cs.s, cs.e);\n\t}\n/*:: if((cs instanceof Range)) throw \"unreachable\"; */\n\tif(typeof cs !== 'string') cs = encode_cell((cs/*:any*/));\n\tif(typeof ce !== 'string') ce = encode_cell((ce/*:any*/));\n/*:: if(typeof cs !== 'string') throw \"unreachable\"; */\n/*:: if(typeof ce !== 'string') throw \"unreachable\"; */\n\treturn cs == ce ? cs : cs + \":\" + ce;\n}\n\nfunction safe_decode_range(range/*:string*/)/*:Range*/ {\n\tvar o = {s:{c:0,r:0},e:{c:0,r:0}};\n\tvar idx = 0, i = 0, cc = 0;\n\tvar len = range.length;\n\tfor(idx = 0; i < len; ++i) {\n\t\tif((cc=range.charCodeAt(i)-64) < 1 || cc > 26) break;\n\t\tidx = 26*idx + cc;\n\t}\n\to.s.c = --idx;\n\n\tfor(idx = 0; i < len; ++i) {\n\t\tif((cc=range.charCodeAt(i)-48) < 0 || cc > 9) break;\n\t\tidx = 10*idx + cc;\n\t}\n\to.s.r = --idx;\n\n\tif(i === len || cc != 10) { o.e.c=o.s.c; o.e.r=o.s.r; return o; }\n\t++i;\n\n\tfor(idx = 0; i != len; ++i) {\n\t\tif((cc=range.charCodeAt(i)-64) < 1 || cc > 26) break;\n\t\tidx = 26*idx + cc;\n\t}\n\to.e.c = --idx;\n\n\tfor(idx = 0; i != len; ++i) {\n\t\tif((cc=range.charCodeAt(i)-48) < 0 || cc > 9) break;\n\t\tidx = 10*idx + cc;\n\t}\n\to.e.r = --idx;\n\treturn o;\n}\n\nfunction safe_format_cell(cell/*:Cell*/, v/*:any*/) {\n\tvar q = (cell.t == 'd' && v instanceof Date);\n\tif(cell.z != null) try { return (cell.w = SSF_format(cell.z, q ? datenum(v) : v)); } catch(e) { }\n\ttry { return (cell.w = SSF_format((cell.XF||{}).numFmtId||(q ? 14 : 0),  q ? datenum(v) : v)); } catch(e) { return ''+v; }\n}\n\nfunction format_cell(cell/*:Cell*/, v/*:any*/, o/*:any*/) {\n\tif(cell == null || cell.t == null || cell.t == 'z') return \"\";\n\tif(cell.w !== undefined) return cell.w;\n\tif(cell.t == 'd' && !cell.z && o && o.dateNF) cell.z = o.dateNF;\n\tif(cell.t == \"e\") return BErr[cell.v] || cell.v;\n\tif(v == undefined) return safe_format_cell(cell, cell.v);\n\treturn safe_format_cell(cell, v);\n}\n\nfunction sheet_to_workbook(sheet/*:Worksheet*/, opts)/*:Workbook*/ {\n\tvar n = opts && opts.sheet ? opts.sheet : \"Sheet1\";\n\tvar sheets = {}; sheets[n] = sheet;\n\treturn { SheetNames: [n], Sheets: sheets };\n}\n\nfunction sheet_add_aoa(_ws/*:?Worksheet*/, data/*:AOA*/, opts/*:?any*/)/*:Worksheet*/ {\n\tvar o = opts || {};\n\tvar dense = _ws ? Array.isArray(_ws) : o.dense;\n\tif(DENSE != null && dense == null) dense = DENSE;\n\tvar ws/*:Worksheet*/ = _ws || (dense ? ([]/*:any*/) : ({}/*:any*/));\n\tvar _R = 0, _C = 0;\n\tif(ws && o.origin != null) {\n\t\tif(typeof o.origin == 'number') _R = o.origin;\n\t\telse {\n\t\t\tvar _origin/*:CellAddress*/ = typeof o.origin == \"string\" ? decode_cell(o.origin) : o.origin;\n\t\t\t_R = _origin.r; _C = _origin.c;\n\t\t}\n\t\tif(!ws[\"!ref\"]) ws[\"!ref\"] = \"A1:A1\";\n\t}\n\tvar range/*:Range*/ = ({s: {c:10000000, r:10000000}, e: {c:0, r:0}}/*:any*/);\n\tif(ws['!ref']) {\n\t\tvar _range = safe_decode_range(ws['!ref']);\n\t\trange.s.c = _range.s.c;\n\t\trange.s.r = _range.s.r;\n\t\trange.e.c = Math.max(range.e.c, _range.e.c);\n\t\trange.e.r = Math.max(range.e.r, _range.e.r);\n\t\tif(_R == -1) range.e.r = _R = _range.e.r + 1;\n\t}\n\tfor(var R = 0; R != data.length; ++R) {\n\t\tif(!data[R]) continue;\n\t\tif(!Array.isArray(data[R])) throw new Error(\"aoa_to_sheet expects an array of arrays\");\n\t\tfor(var C = 0; C != data[R].length; ++C) {\n\t\t\tif(typeof data[R][C] === 'undefined') continue;\n\t\t\tvar cell/*:Cell*/ = ({v: data[R][C] }/*:any*/);\n\t\t\tvar __R = _R + R, __C = _C + C;\n\t\t\tif(range.s.r > __R) range.s.r = __R;\n\t\t\tif(range.s.c > __C) range.s.c = __C;\n\t\t\tif(range.e.r < __R) range.e.r = __R;\n\t\t\tif(range.e.c < __C) range.e.c = __C;\n\t\t\tif(data[R][C] && typeof data[R][C] === 'object' && !Array.isArray(data[R][C]) && !(data[R][C] instanceof Date)) cell = data[R][C];\n\t\t\telse {\n\t\t\t\tif(Array.isArray(cell.v)) { cell.f = data[R][C][1]; cell.v = cell.v[0]; }\n\t\t\t\tif(cell.v === null) {\n\t\t\t\t\tif(cell.f) cell.t = 'n';\n\t\t\t\t\telse if(o.nullError) { cell.t = 'e'; cell.v = 0; }\n\t\t\t\t\telse if(!o.sheetStubs) continue;\n\t\t\t\t\telse cell.t = 'z';\n\t\t\t\t}\n\t\t\t\telse if(typeof cell.v === 'number') cell.t = 'n';\n\t\t\t\telse if(typeof cell.v === 'boolean') cell.t = 'b';\n\t\t\t\telse if(cell.v instanceof Date) {\n\t\t\t\t\tcell.z = o.dateNF || table_fmt[14];\n\t\t\t\t\tif(o.cellDates) { cell.t = 'd'; cell.w = SSF_format(cell.z, datenum(cell.v)); }\n\t\t\t\t\telse { cell.t = 'n'; cell.v = datenum(cell.v); cell.w = SSF_format(cell.z, cell.v); }\n\t\t\t\t}\n\t\t\t\telse cell.t = 's';\n\t\t\t}\n\t\t\tif(dense) {\n\t\t\t\tif(!ws[__R]) ws[__R] = [];\n\t\t\t\tif(ws[__R][__C] && ws[__R][__C].z) cell.z = ws[__R][__C].z;\n\t\t\t\tws[__R][__C] = cell;\n\t\t\t} else {\n\t\t\t\tvar cell_ref = encode_cell(({c:__C,r:__R}/*:any*/));\n\t\t\t\tif(ws[cell_ref] && ws[cell_ref].z) cell.z = ws[cell_ref].z;\n\t\t\t\tws[cell_ref] = cell;\n\t\t\t}\n\t\t}\n\t}\n\tif(range.s.c < 10000000) ws['!ref'] = encode_range(range);\n\treturn ws;\n}\nfunction aoa_to_sheet(data/*:AOA*/, opts/*:?any*/)/*:Worksheet*/ { return sheet_add_aoa(null, data, opts); }\n\nfunction parse_Int32LE(data) {\n\treturn data.read_shift(4, 'i');\n}\nfunction write_UInt32LE(x/*:number*/, o) {\n\tif (!o) o = new_buf(4);\n\to.write_shift(4, x);\n\treturn o;\n}\n\n/* [MS-XLSB] 2.5.168 */\nfunction parse_XLWideString(data/*::, length*/)/*:string*/ {\n\tvar cchCharacters = data.read_shift(4);\n\treturn cchCharacters === 0 ? \"\" : data.read_shift(cchCharacters, 'dbcs');\n}\nfunction write_XLWideString(data/*:string*/, o) {\n\tvar _null = false; if (o == null) { _null = true; o = new_buf(4 + 2 * data.length); }\n\to.write_shift(4, data.length);\n\tif (data.length > 0) o.write_shift(0, data, 'dbcs');\n\treturn _null ? o.slice(0, o.l) : o;\n}\n\n/* [MS-XLSB] 2.5.91 */\n//function parse_LPWideString(data/*::, length*/)/*:string*/ {\n//\tvar cchCharacters = data.read_shift(2);\n//\treturn cchCharacters === 0 ? \"\" : data.read_shift(cchCharacters, \"utf16le\");\n//}\n\n/* [MS-XLSB] 2.5.143 */\nfunction parse_StrRun(data) {\n\treturn { ich: data.read_shift(2), ifnt: data.read_shift(2) };\n}\nfunction write_StrRun(run, o) {\n\tif (!o) o = new_buf(4);\n\to.write_shift(2, run.ich || 0);\n\to.write_shift(2, run.ifnt || 0);\n\treturn o;\n}\n\n/* [MS-XLSB] 2.5.121 */\nfunction parse_RichStr(data, length/*:number*/)/*:XLString*/ {\n\tvar start = data.l;\n\tvar flags = data.read_shift(1);\n\tvar str = parse_XLWideString(data);\n\tvar rgsStrRun = [];\n\tvar z = ({ t: str, h: str }/*:any*/);\n\tif ((flags & 1) !== 0) { /* fRichStr */\n\t\t/* TODO: formatted string */\n\t\tvar dwSizeStrRun = data.read_shift(4);\n\t\tfor (var i = 0; i != dwSizeStrRun; ++i) rgsStrRun.push(parse_StrRun(data));\n\t\tz.r = rgsStrRun;\n\t}\n\telse z.r = [{ ich: 0, ifnt: 0 }];\n\t//if((flags & 2) !== 0) { /* fExtStr */\n\t//\t/* TODO: phonetic string */\n\t//}\n\tdata.l = start + length;\n\treturn z;\n}\nfunction write_RichStr(str/*:XLString*/, o/*:?Block*/)/*:Block*/ {\n\t/* TODO: formatted string */\n\tvar _null = false; if (o == null) { _null = true; o = new_buf(15 + 4 * str.t.length); }\n\to.write_shift(1, 0);\n\twrite_XLWideString(str.t, o);\n\treturn _null ? o.slice(0, o.l) : o;\n}\n/* [MS-XLSB] 2.4.328 BrtCommentText (RichStr w/1 run) */\nvar parse_BrtCommentText = parse_RichStr;\nfunction write_BrtCommentText(str/*:XLString*/, o/*:?Block*/)/*:Block*/ {\n\t/* TODO: formatted string */\n\tvar _null = false; if (o == null) { _null = true; o = new_buf(23 + 4 * str.t.length); }\n\to.write_shift(1, 1);\n\twrite_XLWideString(str.t, o);\n\to.write_shift(4, 1);\n\twrite_StrRun({ ich: 0, ifnt: 0 }, o);\n\treturn _null ? o.slice(0, o.l) : o;\n}\n\n/* [MS-XLSB] 2.5.9 */\nfunction parse_XLSBCell(data)/*:any*/ {\n\tvar col = data.read_shift(4);\n\tvar iStyleRef = data.read_shift(2);\n\tiStyleRef += data.read_shift(1) << 16;\n\tdata.l++; //var fPhShow = data.read_shift(1);\n\treturn { c: col, iStyleRef: iStyleRef };\n}\nfunction write_XLSBCell(cell/*:any*/, o/*:?Block*/) {\n\tif (o == null) o = new_buf(8);\n\to.write_shift(-4, cell.c);\n\to.write_shift(3, cell.iStyleRef || cell.s);\n\to.write_shift(1, 0); /* fPhShow */\n\treturn o;\n}\n\n/* Short XLSB Cell does not include column */\nfunction parse_XLSBShortCell(data)/*:any*/ {\n\tvar iStyleRef = data.read_shift(2);\n\tiStyleRef += data.read_shift(1) <<16;\n\tdata.l++; //var fPhShow = data.read_shift(1);\n\treturn { c:-1, iStyleRef: iStyleRef };\n}\nfunction write_XLSBShortCell(cell/*:any*/, o/*:?Block*/) {\n\tif(o == null) o = new_buf(4);\n\to.write_shift(3, cell.iStyleRef || cell.s);\n\to.write_shift(1, 0); /* fPhShow */\n\treturn o;\n}\n\n/* [MS-XLSB] 2.5.21 */\nvar parse_XLSBCodeName = parse_XLWideString;\nvar write_XLSBCodeName = write_XLWideString;\n\n/* [MS-XLSB] 2.5.166 */\nfunction parse_XLNullableWideString(data/*::, length*/)/*:string*/ {\n\tvar cchCharacters = data.read_shift(4);\n\treturn cchCharacters === 0 || cchCharacters === 0xFFFFFFFF ? \"\" : data.read_shift(cchCharacters, 'dbcs');\n}\nfunction write_XLNullableWideString(data/*:string*/, o) {\n\tvar _null = false; if (o == null) { _null = true; o = new_buf(127); }\n\to.write_shift(4, data.length > 0 ? data.length : 0xFFFFFFFF);\n\tif (data.length > 0) o.write_shift(0, data, 'dbcs');\n\treturn _null ? o.slice(0, o.l) : o;\n}\n\n/* [MS-XLSB] 2.5.165 */\nvar parse_XLNameWideString = parse_XLWideString;\n//var write_XLNameWideString = write_XLWideString;\n\n/* [MS-XLSB] 2.5.114 */\nvar parse_RelID = parse_XLNullableWideString;\nvar write_RelID = write_XLNullableWideString;\n\n\n/* [MS-XLS] 2.5.217 ; [MS-XLSB] 2.5.122 */\nfunction parse_RkNumber(data)/*:number*/ {\n\tvar b = data.slice(data.l, data.l + 4);\n\tvar fX100 = (b[0] & 1), fInt = (b[0] & 2);\n\tdata.l += 4;\n\tvar RK = fInt === 0 ? __double([0, 0, 0, 0, (b[0] & 0xFC), b[1], b[2], b[3]], 0) : __readInt32LE(b, 0) >> 2;\n\treturn fX100 ? (RK / 100) : RK;\n}\nfunction write_RkNumber(data/*:number*/, o) {\n\tif (o == null) o = new_buf(4);\n\tvar fX100 = 0, fInt = 0, d100 = data * 100;\n\tif ((data == (data | 0)) && (data >= -(1 << 29)) && (data < (1 << 29))) { fInt = 1; }\n\telse if ((d100 == (d100 | 0)) && (d100 >= -(1 << 29)) && (d100 < (1 << 29))) { fInt = 1; fX100 = 1; }\n\tif (fInt) o.write_shift(-4, ((fX100 ? d100 : data) << 2) + (fX100 + 2));\n\telse throw new Error(\"unsupported RkNumber \" + data); // TODO\n}\n\n\n/* [MS-XLSB] 2.5.117 RfX */\nfunction parse_RfX(data /*::, length*/)/*:Range*/ {\n\tvar cell/*:Range*/ = ({ s: {}, e: {} }/*:any*/);\n\tcell.s.r = data.read_shift(4);\n\tcell.e.r = data.read_shift(4);\n\tcell.s.c = data.read_shift(4);\n\tcell.e.c = data.read_shift(4);\n\treturn cell;\n}\nfunction write_RfX(r/*:Range*/, o) {\n\tif (!o) o = new_buf(16);\n\to.write_shift(4, r.s.r);\n\to.write_shift(4, r.e.r);\n\to.write_shift(4, r.s.c);\n\to.write_shift(4, r.e.c);\n\treturn o;\n}\n\n/* [MS-XLSB] 2.5.153 UncheckedRfX */\nvar parse_UncheckedRfX = parse_RfX;\nvar write_UncheckedRfX = write_RfX;\n\n/* [MS-XLSB] 2.5.155 UncheckedSqRfX */\n//function parse_UncheckedSqRfX(data) {\n//\tvar cnt = data.read_shift(4);\n//\tvar out = [];\n//\tfor(var i = 0; i < cnt; ++i) {\n//\t\tvar rng = parse_UncheckedRfX(data);\n//\t\tout.push(encode_range(rng));\n//\t}\n//\treturn out.join(\",\");\n//}\n//function write_UncheckedSqRfX(sqrfx/*:string*/) {\n//\tvar parts = sqrfx.split(/\\s*,\\s*/);\n//\tvar o = new_buf(4); o.write_shift(4, parts.length);\n//\tvar out = [o];\n//\tparts.forEach(function(rng) {\n//\t\tout.push(write_UncheckedRfX(safe_decode_range(rng)));\n//\t});\n//\treturn bconcat(out);\n//}\n\n/* [MS-XLS] 2.5.342 ; [MS-XLSB] 2.5.171 */\n/* TODO: error checking, NaN and Infinity values are not valid Xnum */\nfunction parse_Xnum(data/*::, length*/) {\n\tif(data.length - data.l < 8) throw \"XLS Xnum Buffer underflow\";\n\treturn data.read_shift(8, 'f');\n}\nfunction write_Xnum(data, o) { return (o || new_buf(8)).write_shift(8, data, 'f'); }\n\n/* [MS-XLSB] 2.4.324 BrtColor */\nfunction parse_BrtColor(data/*::, length*/) {\n\tvar out = {};\n\tvar d = data.read_shift(1);\n\n\t//var fValidRGB = d & 1;\n\tvar xColorType = d >>> 1;\n\n\tvar index = data.read_shift(1);\n\tvar nTS = data.read_shift(2, 'i');\n\tvar bR = data.read_shift(1);\n\tvar bG = data.read_shift(1);\n\tvar bB = data.read_shift(1);\n\tdata.l++; //var bAlpha = data.read_shift(1);\n\n\tswitch (xColorType) {\n\t\tcase 0: out.auto = 1; break;\n\t\tcase 1:\n\t\t\tout.index = index;\n\t\t\tvar icv = XLSIcv[index];\n\t\t\t/* automatic pseudo index 81 */\n\t\t\tif (icv) out.rgb = rgb2Hex(icv);\n\t\t\tbreak;\n\t\tcase 2:\n\t\t\t/* if(!fValidRGB) throw new Error(\"invalid\"); */\n\t\t\tout.rgb = rgb2Hex([bR, bG, bB]);\n\t\t\tbreak;\n\t\tcase 3: out.theme = index; break;\n\t}\n\tif (nTS != 0) out.tint = nTS > 0 ? nTS / 32767 : nTS / 32768;\n\n\treturn out;\n}\nfunction write_BrtColor(color, o) {\n\tif (!o) o = new_buf(8);\n\tif (!color || color.auto) { o.write_shift(4, 0); o.write_shift(4, 0); return o; }\n\tif (color.index != null) {\n\t\to.write_shift(1, 0x02);\n\t\to.write_shift(1, color.index);\n\t} else if (color.theme != null) {\n\t\to.write_shift(1, 0x06);\n\t\to.write_shift(1, color.theme);\n\t} else {\n\t\to.write_shift(1, 0x05);\n\t\to.write_shift(1, 0);\n\t}\n\tvar nTS = color.tint || 0;\n\tif (nTS > 0) nTS *= 32767;\n\telse if (nTS < 0) nTS *= 32768;\n\to.write_shift(2, nTS);\n\tif (!color.rgb || color.theme != null) {\n\t\to.write_shift(2, 0);\n\t\to.write_shift(1, 0);\n\t\to.write_shift(1, 0);\n\t} else {\n\t\tvar rgb = (color.rgb || 'FFFFFF');\n\t\tif (typeof rgb == 'number') rgb = (\"000000\" + rgb.toString(16)).slice(-6);\n\t\to.write_shift(1, parseInt(rgb.slice(0, 2), 16));\n\t\to.write_shift(1, parseInt(rgb.slice(2, 4), 16));\n\t\to.write_shift(1, parseInt(rgb.slice(4, 6), 16));\n\t\to.write_shift(1, 0xFF);\n\t}\n\treturn o;\n}\n\n/* [MS-XLSB] 2.5.52 */\nfunction parse_FontFlags(data/*::, length, opts*/) {\n\tvar d = data.read_shift(1);\n\tdata.l++;\n\tvar out = {\n\t\tfBold: d & 0x01,\n\t\tfItalic: d & 0x02,\n\t\tfUnderline: d & 0x04,\n\t\tfStrikeout: d & 0x08,\n\t\tfOutline: d & 0x10,\n\t\tfShadow: d & 0x20,\n\t\tfCondense: d & 0x40,\n\t\tfExtend: d & 0x80\n\t};\n\treturn out;\n}\nfunction write_FontFlags(font, o) {\n\tif (!o) o = new_buf(2);\n\tvar grbit =\n\t\t(font.italic ? 0x02 : 0) |\n\t\t(font.strike ? 0x08 : 0) |\n\t\t(font.outline ? 0x10 : 0) |\n\t\t(font.shadow ? 0x20 : 0) |\n\t\t(font.condense ? 0x40 : 0) |\n\t\t(font.extend ? 0x80 : 0);\n\to.write_shift(1, grbit);\n\to.write_shift(1, 0);\n\treturn o;\n}\n\n/* [MS-OLEDS] 2.3.1 and 2.3.2 */\nfunction parse_ClipboardFormatOrString(o, w/*:number*/)/*:string*/ {\n\t// $FlowIgnore\n\tvar ClipFmt = { 2: \"BITMAP\", 3: \"METAFILEPICT\", 8: \"DIB\", 14: \"ENHMETAFILE\" };\n\tvar m/*:number*/ = o.read_shift(4);\n\tswitch (m) {\n\t\tcase 0x00000000: return \"\";\n\t\tcase 0xffffffff: case 0xfffffffe: return ClipFmt[o.read_shift(4)] || \"\";\n\t}\n\tif (m > 0x190) throw new Error(\"Unsupported Clipboard: \" + m.toString(16));\n\to.l -= 4;\n\treturn o.read_shift(0, w == 1 ? \"lpstr\" : \"lpwstr\");\n}\nfunction parse_ClipboardFormatOrAnsiString(o) { return parse_ClipboardFormatOrString(o, 1); }\nfunction parse_ClipboardFormatOrUnicodeString(o) { return parse_ClipboardFormatOrString(o, 2); }\n\n/* [MS-OLEPS] 2.2 PropertyType */\n// Note: some tree shakers cannot handle VT_VECTOR | $CONST, hence extra vars\n//var VT_EMPTY    = 0x0000;\n//var VT_NULL     = 0x0001;\nvar VT_I2       = 0x0002;\nvar VT_I4       = 0x0003;\n//var VT_R4       = 0x0004;\n//var VT_R8       = 0x0005;\n//var VT_CY       = 0x0006;\n//var VT_DATE     = 0x0007;\n//var VT_BSTR     = 0x0008;\n//var VT_ERROR    = 0x000A;\nvar VT_BOOL     = 0x000B;\nvar VT_VARIANT  = 0x000C;\n//var VT_DECIMAL  = 0x000E;\n//var VT_I1       = 0x0010;\n//var VT_UI1      = 0x0011;\n//var VT_UI2      = 0x0012;\nvar VT_UI4      = 0x0013;\n//var VT_I8       = 0x0014;\n//var VT_UI8      = 0x0015;\n//var VT_INT      = 0x0016;\n//var VT_UINT     = 0x0017;\nvar VT_LPSTR    = 0x001E;\n//var VT_LPWSTR   = 0x001F;\nvar VT_FILETIME = 0x0040;\nvar VT_BLOB     = 0x0041;\n//var VT_STREAM   = 0x0042;\n//var VT_STORAGE  = 0x0043;\n//var VT_STREAMED_Object  = 0x0044;\n//var VT_STORED_Object    = 0x0045;\n//var VT_BLOB_Object      = 0x0046;\nvar VT_CF       = 0x0047;\n//var VT_CLSID    = 0x0048;\n//var VT_VERSIONED_STREAM = 0x0049;\nvar VT_VECTOR   = 0x1000;\nvar VT_VECTOR_VARIANT = 0x100C;\nvar VT_VECTOR_LPSTR   = 0x101E;\n//var VT_ARRAY    = 0x2000;\n\nvar VT_STRING   = 0x0050; // 2.3.3.1.11 VtString\nvar VT_USTR     = 0x0051; // 2.3.3.1.12 VtUnalignedString\nvar VT_CUSTOM   = [VT_STRING, VT_USTR];\n\n/* [MS-OSHARED] 2.3.3.2.2.1 Document Summary Information PIDDSI */\nvar DocSummaryPIDDSI = {\n\t/*::[*/0x01/*::]*/: { n: 'CodePage', t: VT_I2 },\n\t/*::[*/0x02/*::]*/: { n: 'Category', t: VT_STRING },\n\t/*::[*/0x03/*::]*/: { n: 'PresentationFormat', t: VT_STRING },\n\t/*::[*/0x04/*::]*/: { n: 'ByteCount', t: VT_I4 },\n\t/*::[*/0x05/*::]*/: { n: 'LineCount', t: VT_I4 },\n\t/*::[*/0x06/*::]*/: { n: 'ParagraphCount', t: VT_I4 },\n\t/*::[*/0x07/*::]*/: { n: 'SlideCount', t: VT_I4 },\n\t/*::[*/0x08/*::]*/: { n: 'NoteCount', t: VT_I4 },\n\t/*::[*/0x09/*::]*/: { n: 'HiddenCount', t: VT_I4 },\n\t/*::[*/0x0a/*::]*/: { n: 'MultimediaClipCount', t: VT_I4 },\n\t/*::[*/0x0b/*::]*/: { n: 'ScaleCrop', t: VT_BOOL },\n\t/*::[*/0x0c/*::]*/: { n: 'HeadingPairs', t: VT_VECTOR_VARIANT /* VT_VECTOR | VT_VARIANT */ },\n\t/*::[*/0x0d/*::]*/: { n: 'TitlesOfParts', t: VT_VECTOR_LPSTR /* VT_VECTOR | VT_LPSTR */ },\n\t/*::[*/0x0e/*::]*/: { n: 'Manager', t: VT_STRING },\n\t/*::[*/0x0f/*::]*/: { n: 'Company', t: VT_STRING },\n\t/*::[*/0x10/*::]*/: { n: 'LinksUpToDate', t: VT_BOOL },\n\t/*::[*/0x11/*::]*/: { n: 'CharacterCount', t: VT_I4 },\n\t/*::[*/0x13/*::]*/: { n: 'SharedDoc', t: VT_BOOL },\n\t/*::[*/0x16/*::]*/: { n: 'HyperlinksChanged', t: VT_BOOL },\n\t/*::[*/0x17/*::]*/: { n: 'AppVersion', t: VT_I4, p: 'version' },\n\t/*::[*/0x18/*::]*/: { n: 'DigSig', t: VT_BLOB },\n\t/*::[*/0x1A/*::]*/: { n: 'ContentType', t: VT_STRING },\n\t/*::[*/0x1B/*::]*/: { n: 'ContentStatus', t: VT_STRING },\n\t/*::[*/0x1C/*::]*/: { n: 'Language', t: VT_STRING },\n\t/*::[*/0x1D/*::]*/: { n: 'Version', t: VT_STRING },\n\t/*::[*/0xFF/*::]*/: {},\n\t/* [MS-OLEPS] 2.18 */\n\t/*::[*/0x80000000/*::]*/: { n: 'Locale', t: VT_UI4 },\n\t/*::[*/0x80000003/*::]*/: { n: 'Behavior', t: VT_UI4 },\n\t/*::[*/0x72627262/*::]*/: {}\n};\n\n/* [MS-OSHARED] 2.3.3.2.1.1 Summary Information Property Set PIDSI */\nvar SummaryPIDSI = {\n\t/*::[*/0x01/*::]*/: { n: 'CodePage', t: VT_I2 },\n\t/*::[*/0x02/*::]*/: { n: 'Title', t: VT_STRING },\n\t/*::[*/0x03/*::]*/: { n: 'Subject', t: VT_STRING },\n\t/*::[*/0x04/*::]*/: { n: 'Author', t: VT_STRING },\n\t/*::[*/0x05/*::]*/: { n: 'Keywords', t: VT_STRING },\n\t/*::[*/0x06/*::]*/: { n: 'Comments', t: VT_STRING },\n\t/*::[*/0x07/*::]*/: { n: 'Template', t: VT_STRING },\n\t/*::[*/0x08/*::]*/: { n: 'LastAuthor', t: VT_STRING },\n\t/*::[*/0x09/*::]*/: { n: 'RevNumber', t: VT_STRING },\n\t/*::[*/0x0A/*::]*/: { n: 'EditTime', t: VT_FILETIME },\n\t/*::[*/0x0B/*::]*/: { n: 'LastPrinted', t: VT_FILETIME },\n\t/*::[*/0x0C/*::]*/: { n: 'CreatedDate', t: VT_FILETIME },\n\t/*::[*/0x0D/*::]*/: { n: 'ModifiedDate', t: VT_FILETIME },\n\t/*::[*/0x0E/*::]*/: { n: 'PageCount', t: VT_I4 },\n\t/*::[*/0x0F/*::]*/: { n: 'WordCount', t: VT_I4 },\n\t/*::[*/0x10/*::]*/: { n: 'CharCount', t: VT_I4 },\n\t/*::[*/0x11/*::]*/: { n: 'Thumbnail', t: VT_CF },\n\t/*::[*/0x12/*::]*/: { n: 'Application', t: VT_STRING },\n\t/*::[*/0x13/*::]*/: { n: 'DocSecurity', t: VT_I4 },\n\t/*::[*/0xFF/*::]*/: {},\n\t/* [MS-OLEPS] 2.18 */\n\t/*::[*/0x80000000/*::]*/: { n: 'Locale', t: VT_UI4 },\n\t/*::[*/0x80000003/*::]*/: { n: 'Behavior', t: VT_UI4 },\n\t/*::[*/0x72627262/*::]*/: {}\n};\n\n/* [MS-XLS] 2.4.63 Country/Region codes */\nvar CountryEnum = {\n\t/*::[*/0x0001/*::]*/: \"US\", // United States\n\t/*::[*/0x0002/*::]*/: \"CA\", // Canada\n\t/*::[*/0x0003/*::]*/: \"\", // Latin America (except Brazil)\n\t/*::[*/0x0007/*::]*/: \"RU\", // Russia\n\t/*::[*/0x0014/*::]*/: \"EG\", // Egypt\n\t/*::[*/0x001E/*::]*/: \"GR\", // Greece\n\t/*::[*/0x001F/*::]*/: \"NL\", // Netherlands\n\t/*::[*/0x0020/*::]*/: \"BE\", // Belgium\n\t/*::[*/0x0021/*::]*/: \"FR\", // France\n\t/*::[*/0x0022/*::]*/: \"ES\", // Spain\n\t/*::[*/0x0024/*::]*/: \"HU\", // Hungary\n\t/*::[*/0x0027/*::]*/: \"IT\", // Italy\n\t/*::[*/0x0029/*::]*/: \"CH\", // Switzerland\n\t/*::[*/0x002B/*::]*/: \"AT\", // Austria\n\t/*::[*/0x002C/*::]*/: \"GB\", // United Kingdom\n\t/*::[*/0x002D/*::]*/: \"DK\", // Denmark\n\t/*::[*/0x002E/*::]*/: \"SE\", // Sweden\n\t/*::[*/0x002F/*::]*/: \"NO\", // Norway\n\t/*::[*/0x0030/*::]*/: \"PL\", // Poland\n\t/*::[*/0x0031/*::]*/: \"DE\", // Germany\n\t/*::[*/0x0034/*::]*/: \"MX\", // Mexico\n\t/*::[*/0x0037/*::]*/: \"BR\", // Brazil\n\t/*::[*/0x003d/*::]*/: \"AU\", // Australia\n\t/*::[*/0x0040/*::]*/: \"NZ\", // New Zealand\n\t/*::[*/0x0042/*::]*/: \"TH\", // Thailand\n\t/*::[*/0x0051/*::]*/: \"JP\", // Japan\n\t/*::[*/0x0052/*::]*/: \"KR\", // Korea\n\t/*::[*/0x0054/*::]*/: \"VN\", // Viet Nam\n\t/*::[*/0x0056/*::]*/: \"CN\", // China\n\t/*::[*/0x005A/*::]*/: \"TR\", // Turkey\n\t/*::[*/0x0069/*::]*/: \"JS\", // Ramastan\n\t/*::[*/0x00D5/*::]*/: \"DZ\", // Algeria\n\t/*::[*/0x00D8/*::]*/: \"MA\", // Morocco\n\t/*::[*/0x00DA/*::]*/: \"LY\", // Libya\n\t/*::[*/0x015F/*::]*/: \"PT\", // Portugal\n\t/*::[*/0x0162/*::]*/: \"IS\", // Iceland\n\t/*::[*/0x0166/*::]*/: \"FI\", // Finland\n\t/*::[*/0x01A4/*::]*/: \"CZ\", // Czech Republic\n\t/*::[*/0x0376/*::]*/: \"TW\", // Taiwan\n\t/*::[*/0x03C1/*::]*/: \"LB\", // Lebanon\n\t/*::[*/0x03C2/*::]*/: \"JO\", // Jordan\n\t/*::[*/0x03C3/*::]*/: \"SY\", // Syria\n\t/*::[*/0x03C4/*::]*/: \"IQ\", // Iraq\n\t/*::[*/0x03C5/*::]*/: \"KW\", // Kuwait\n\t/*::[*/0x03C6/*::]*/: \"SA\", // Saudi Arabia\n\t/*::[*/0x03CB/*::]*/: \"AE\", // United Arab Emirates\n\t/*::[*/0x03CC/*::]*/: \"IL\", // Israel\n\t/*::[*/0x03CE/*::]*/: \"QA\", // Qatar\n\t/*::[*/0x03D5/*::]*/: \"IR\", // Iran\n\t/*::[*/0xFFFF/*::]*/: \"US\"  // United States\n};\n\n/* [MS-XLS] 2.5.127 */\nvar XLSFillPattern = [\n\tnull,\n\t'solid',\n\t'mediumGray',\n\t'darkGray',\n\t'lightGray',\n\t'darkHorizontal',\n\t'darkVertical',\n\t'darkDown',\n\t'darkUp',\n\t'darkGrid',\n\t'darkTrellis',\n\t'lightHorizontal',\n\t'lightVertical',\n\t'lightDown',\n\t'lightUp',\n\t'lightGrid',\n\t'lightTrellis',\n\t'gray125',\n\t'gray0625'\n];\n\nfunction rgbify(arr/*:Array<number>*/)/*:Array<[number, number, number]>*/ { return arr.map(function(x) { return [(x>>16)&255,(x>>8)&255,x&255]; }); }\n\n/* [MS-XLS] 2.5.161 */\n/* [MS-XLSB] 2.5.75 Icv */\nvar _XLSIcv = /*#__PURE__*/ rgbify([\n\t/* Color Constants */\n\t0x000000,\n\t0xFFFFFF,\n\t0xFF0000,\n\t0x00FF00,\n\t0x0000FF,\n\t0xFFFF00,\n\t0xFF00FF,\n\t0x00FFFF,\n\n\t/* Overridable Defaults */\n\t0x000000,\n\t0xFFFFFF,\n\t0xFF0000,\n\t0x00FF00,\n\t0x0000FF,\n\t0xFFFF00,\n\t0xFF00FF,\n\t0x00FFFF,\n\n\t0x800000,\n\t0x008000,\n\t0x000080,\n\t0x808000,\n\t0x800080,\n\t0x008080,\n\t0xC0C0C0,\n\t0x808080,\n\t0x9999FF,\n\t0x993366,\n\t0xFFFFCC,\n\t0xCCFFFF,\n\t0x660066,\n\t0xFF8080,\n\t0x0066CC,\n\t0xCCCCFF,\n\n\t0x000080,\n\t0xFF00FF,\n\t0xFFFF00,\n\t0x00FFFF,\n\t0x800080,\n\t0x800000,\n\t0x008080,\n\t0x0000FF,\n\t0x00CCFF,\n\t0xCCFFFF,\n\t0xCCFFCC,\n\t0xFFFF99,\n\t0x99CCFF,\n\t0xFF99CC,\n\t0xCC99FF,\n\t0xFFCC99,\n\n\t0x3366FF,\n\t0x33CCCC,\n\t0x99CC00,\n\t0xFFCC00,\n\t0xFF9900,\n\t0xFF6600,\n\t0x666699,\n\t0x969696,\n\t0x003366,\n\t0x339966,\n\t0x003300,\n\t0x333300,\n\t0x993300,\n\t0x993366,\n\t0x333399,\n\t0x333333,\n\n\t/* Other entries to appease BIFF8/12 */\n\t0xFFFFFF, /* 0x40 icvForeground ?? */\n\t0x000000, /* 0x41 icvBackground ?? */\n\t0x000000, /* 0x42 icvFrame ?? */\n\t0x000000, /* 0x43 icv3D ?? */\n\t0x000000, /* 0x44 icv3DText ?? */\n\t0x000000, /* 0x45 icv3DHilite ?? */\n\t0x000000, /* 0x46 icv3DShadow ?? */\n\t0x000000, /* 0x47 icvHilite ?? */\n\t0x000000, /* 0x48 icvCtlText ?? */\n\t0x000000, /* 0x49 icvCtlScrl ?? */\n\t0x000000, /* 0x4A icvCtlInv ?? */\n\t0x000000, /* 0x4B icvCtlBody ?? */\n\t0x000000, /* 0x4C icvCtlFrame ?? */\n\t0x000000, /* 0x4D icvCtlFore ?? */\n\t0x000000, /* 0x4E icvCtlBack ?? */\n\t0x000000, /* 0x4F icvCtlNeutral */\n\t0x000000, /* 0x50 icvInfoBk ?? */\n\t0x000000 /* 0x51 icvInfoText ?? */\n]);\nvar XLSIcv = /*#__PURE__*/dup(_XLSIcv);\n\n/* [MS-XLSB] 2.5.97.2 */\nvar BErr = {\n\t/*::[*/0x00/*::]*/: \"#NULL!\",\n\t/*::[*/0x07/*::]*/: \"#DIV/0!\",\n\t/*::[*/0x0F/*::]*/: \"#VALUE!\",\n\t/*::[*/0x17/*::]*/: \"#REF!\",\n\t/*::[*/0x1D/*::]*/: \"#NAME?\",\n\t/*::[*/0x24/*::]*/: \"#NUM!\",\n\t/*::[*/0x2A/*::]*/: \"#N/A\",\n\t/*::[*/0x2B/*::]*/: \"#GETTING_DATA\",\n\t/*::[*/0xFF/*::]*/: \"#WTF?\"\n};\n//var RBErr = evert_num(BErr);\nvar RBErr = {\n\t\"#NULL!\":        0x00,\n\t\"#DIV/0!\":       0x07,\n\t\"#VALUE!\":       0x0F,\n\t\"#REF!\":         0x17,\n\t\"#NAME?\":        0x1D,\n\t\"#NUM!\":         0x24,\n\t\"#N/A\":          0x2A,\n\t\"#GETTING_DATA\": 0x2B,\n\t\"#WTF?\":         0xFF\n};\n\n/* Parts enumerated in OPC spec, MS-XLSB and MS-XLSX */\n/* 12.3 Part Summary <SpreadsheetML> */\n/* 14.2 Part Summary <DrawingML> */\n/* [MS-XLSX] 2.1 Part Enumerations ; [MS-XLSB] 2.1.7 Part Enumeration */\nvar ct2type/*{[string]:string}*/ = ({\n\t/* Workbook */\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml\": \"workbooks\",\n\t\"application/vnd.ms-excel.sheet.macroEnabled.main+xml\": \"workbooks\",\n\t\"application/vnd.ms-excel.sheet.binary.macroEnabled.main\": \"workbooks\",\n\t\"application/vnd.ms-excel.addin.macroEnabled.main+xml\": \"workbooks\",\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.template.main+xml\": \"workbooks\",\n\n\t/* Worksheet */\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml\": \"sheets\",\n\t\"application/vnd.ms-excel.worksheet\": \"sheets\",\n\t\"application/vnd.ms-excel.binIndexWs\": \"TODO\", /* Binary Index */\n\n\t/* Chartsheet */\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.chartsheet+xml\": \"charts\",\n\t\"application/vnd.ms-excel.chartsheet\": \"charts\",\n\n\t/* Macrosheet */\n\t\"application/vnd.ms-excel.macrosheet+xml\": \"macros\",\n\t\"application/vnd.ms-excel.macrosheet\": \"macros\",\n\t\"application/vnd.ms-excel.intlmacrosheet\": \"TODO\",\n\t\"application/vnd.ms-excel.binIndexMs\": \"TODO\", /* Binary Index */\n\n\t/* Dialogsheet */\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.dialogsheet+xml\": \"dialogs\",\n\t\"application/vnd.ms-excel.dialogsheet\": \"dialogs\",\n\n\t/* Shared Strings */\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.sharedStrings+xml\": \"strs\",\n\t\"application/vnd.ms-excel.sharedStrings\": \"strs\",\n\n\t/* Styles */\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml\": \"styles\",\n\t\"application/vnd.ms-excel.styles\": \"styles\",\n\n\t/* File Properties */\n\t\"application/vnd.openxmlformats-package.core-properties+xml\": \"coreprops\",\n\t\"application/vnd.openxmlformats-officedocument.custom-properties+xml\": \"custprops\",\n\t\"application/vnd.openxmlformats-officedocument.extended-properties+xml\": \"extprops\",\n\n\t/* Custom Data Properties */\n\t\"application/vnd.openxmlformats-officedocument.customXmlProperties+xml\": \"TODO\",\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.customProperty\": \"TODO\",\n\n\t/* Comments */\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.comments+xml\": \"comments\",\n\t\"application/vnd.ms-excel.comments\": \"comments\",\n\t\"application/vnd.ms-excel.threadedcomments+xml\": \"threadedcomments\",\n\t\"application/vnd.ms-excel.person+xml\": \"people\",\n\n\t/* Metadata (Stock/Geography and Dynamic Array) */\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.sheetMetadata+xml\": \"metadata\",\n\t\"application/vnd.ms-excel.sheetMetadata\": \"metadata\",\n\n\t/* PivotTable */\n\t\"application/vnd.ms-excel.pivotTable\": \"TODO\",\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.pivotTable+xml\": \"TODO\",\n\n\t/* Chart Objects */\n\t\"application/vnd.openxmlformats-officedocument.drawingml.chart+xml\": \"TODO\",\n\n\t/* Chart Colors */\n\t\"application/vnd.ms-office.chartcolorstyle+xml\": \"TODO\",\n\n\t/* Chart Style */\n\t\"application/vnd.ms-office.chartstyle+xml\": \"TODO\",\n\n\t/* Chart Advanced */\n\t\"application/vnd.ms-office.chartex+xml\": \"TODO\",\n\n\t/* Calculation Chain */\n\t\"application/vnd.ms-excel.calcChain\": \"calcchains\",\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.calcChain+xml\": \"calcchains\",\n\n\t/* Printer Settings */\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.printerSettings\": \"TODO\",\n\n\t/* ActiveX */\n\t\"application/vnd.ms-office.activeX\": \"TODO\",\n\t\"application/vnd.ms-office.activeX+xml\": \"TODO\",\n\n\t/* Custom Toolbars */\n\t\"application/vnd.ms-excel.attachedToolbars\": \"TODO\",\n\n\t/* External Data Connections */\n\t\"application/vnd.ms-excel.connections\": \"TODO\",\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.connections+xml\": \"TODO\",\n\n\t/* External Links */\n\t\"application/vnd.ms-excel.externalLink\": \"links\",\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.externalLink+xml\": \"links\",\n\n\t/* PivotCache */\n\t\"application/vnd.ms-excel.pivotCacheDefinition\": \"TODO\",\n\t\"application/vnd.ms-excel.pivotCacheRecords\": \"TODO\",\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.pivotCacheDefinition+xml\": \"TODO\",\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.pivotCacheRecords+xml\": \"TODO\",\n\n\t/* Query Table */\n\t\"application/vnd.ms-excel.queryTable\": \"TODO\",\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.queryTable+xml\": \"TODO\",\n\n\t/* Shared Workbook */\n\t\"application/vnd.ms-excel.userNames\": \"TODO\",\n\t\"application/vnd.ms-excel.revisionHeaders\": \"TODO\",\n\t\"application/vnd.ms-excel.revisionLog\": \"TODO\",\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.revisionHeaders+xml\": \"TODO\",\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.revisionLog+xml\": \"TODO\",\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.userNames+xml\": \"TODO\",\n\n\t/* Single Cell Table */\n\t\"application/vnd.ms-excel.tableSingleCells\": \"TODO\",\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.tableSingleCells+xml\": \"TODO\",\n\n\t/* Slicer */\n\t\"application/vnd.ms-excel.slicer\": \"TODO\",\n\t\"application/vnd.ms-excel.slicerCache\": \"TODO\",\n\t\"application/vnd.ms-excel.slicer+xml\": \"TODO\",\n\t\"application/vnd.ms-excel.slicerCache+xml\": \"TODO\",\n\n\t/* Sort Map */\n\t\"application/vnd.ms-excel.wsSortMap\": \"TODO\",\n\n\t/* Table */\n\t\"application/vnd.ms-excel.table\": \"TODO\",\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.table+xml\": \"TODO\",\n\n\t/* Themes */\n\t\"application/vnd.openxmlformats-officedocument.theme+xml\": \"themes\",\n\n\t/* Theme Override */\n\t\"application/vnd.openxmlformats-officedocument.themeOverride+xml\": \"TODO\",\n\n\t/* Timeline */\n\t\"application/vnd.ms-excel.Timeline+xml\": \"TODO\", /* verify */\n\t\"application/vnd.ms-excel.TimelineCache+xml\": \"TODO\", /* verify */\n\n\t/* VBA */\n\t\"application/vnd.ms-office.vbaProject\": \"vba\",\n\t\"application/vnd.ms-office.vbaProjectSignature\": \"TODO\",\n\n\t/* Volatile Dependencies */\n\t\"application/vnd.ms-office.volatileDependencies\": \"TODO\",\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.volatileDependencies+xml\": \"TODO\",\n\n\t/* Control Properties */\n\t\"application/vnd.ms-excel.controlproperties+xml\": \"TODO\",\n\n\t/* Data Model */\n\t\"application/vnd.openxmlformats-officedocument.model+data\": \"TODO\",\n\n\t/* Survey */\n\t\"application/vnd.ms-excel.Survey+xml\": \"TODO\",\n\n\t/* Drawing */\n\t\"application/vnd.openxmlformats-officedocument.drawing+xml\": \"drawings\",\n\t\"application/vnd.openxmlformats-officedocument.drawingml.chartshapes+xml\": \"TODO\",\n\t\"application/vnd.openxmlformats-officedocument.drawingml.diagramColors+xml\": \"TODO\",\n\t\"application/vnd.openxmlformats-officedocument.drawingml.diagramData+xml\": \"TODO\",\n\t\"application/vnd.openxmlformats-officedocument.drawingml.diagramLayout+xml\": \"TODO\",\n\t\"application/vnd.openxmlformats-officedocument.drawingml.diagramStyle+xml\": \"TODO\",\n\n\t/* VML */\n\t\"application/vnd.openxmlformats-officedocument.vmlDrawing\": \"TODO\",\n\n\t\"application/vnd.openxmlformats-package.relationships+xml\": \"rels\",\n\t\"application/vnd.openxmlformats-officedocument.oleObject\": \"TODO\",\n\n\t/* Image */\n\t\"image/png\": \"TODO\",\n\n\t\"sheet\": \"js\"\n}/*:any*/);\n\nvar CT_LIST = {\n\t\tworkbooks: {\n\t\t\txlsx: \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml\",\n\t\t\txlsm: \"application/vnd.ms-excel.sheet.macroEnabled.main+xml\",\n\t\t\txlsb: \"application/vnd.ms-excel.sheet.binary.macroEnabled.main\",\n\t\t\txlam: \"application/vnd.ms-excel.addin.macroEnabled.main+xml\",\n\t\t\txltx: \"application/vnd.openxmlformats-officedocument.spreadsheetml.template.main+xml\"\n\t\t},\n\t\tstrs: { /* Shared Strings */\n\t\t\txlsx: \"application/vnd.openxmlformats-officedocument.spreadsheetml.sharedStrings+xml\",\n\t\t\txlsb: \"application/vnd.ms-excel.sharedStrings\"\n\t\t},\n\t\tcomments: { /* Comments */\n\t\t\txlsx: \"application/vnd.openxmlformats-officedocument.spreadsheetml.comments+xml\",\n\t\t\txlsb: \"application/vnd.ms-excel.comments\"\n\t\t},\n\t\tsheets: { /* Worksheet */\n\t\t\txlsx: \"application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml\",\n\t\t\txlsb: \"application/vnd.ms-excel.worksheet\"\n\t\t},\n\t\tcharts: { /* Chartsheet */\n\t\t\txlsx: \"application/vnd.openxmlformats-officedocument.spreadsheetml.chartsheet+xml\",\n\t\t\txlsb: \"application/vnd.ms-excel.chartsheet\"\n\t\t},\n\t\tdialogs: { /* Dialogsheet */\n\t\t\txlsx: \"application/vnd.openxmlformats-officedocument.spreadsheetml.dialogsheet+xml\",\n\t\t\txlsb: \"application/vnd.ms-excel.dialogsheet\"\n\t\t},\n\t\tmacros: { /* Macrosheet (Excel 4.0 Macros) */\n\t\t\txlsx: \"application/vnd.ms-excel.macrosheet+xml\",\n\t\t\txlsb: \"application/vnd.ms-excel.macrosheet\"\n\t\t},\n\t\tmetadata: { /* Metadata (Stock/Geography and Dynamic Array) */\n\t\t\txlsx: \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheetMetadata+xml\",\n\t\t\txlsb: \"application/vnd.ms-excel.sheetMetadata\"\n\t\t},\n\t\tstyles: { /* Styles */\n\t\t\txlsx: \"application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml\",\n\t\t\txlsb: \"application/vnd.ms-excel.styles\"\n\t\t}\n};\n\nfunction new_ct()/*:any*/ {\n\treturn ({\n\t\tworkbooks:[], sheets:[], charts:[], dialogs:[], macros:[],\n\t\trels:[], strs:[], comments:[], threadedcomments:[], links:[],\n\t\tcoreprops:[], extprops:[], custprops:[], themes:[], styles:[],\n\t\tcalcchains:[], vba: [], drawings: [], metadata: [], people:[],\n\t\tTODO:[], xmlns: \"\" }/*:any*/);\n}\n\nfunction parse_ct(data/*:?string*/) {\n\tvar ct = new_ct();\n\tif(!data || !data.match) return ct;\n\tvar ctext = {};\n\t(data.match(tagregex)||[]).forEach(function(x) {\n\t\tvar y = parsexmltag(x);\n\t\tswitch(y[0].replace(nsregex,\"<\")) {\n\t\t\tcase '<?xml': break;\n\t\t\tcase '<Types': ct.xmlns = y['xmlns' + (y[0].match(/<(\\w+):/)||[\"\",\"\"])[1] ]; break;\n\t\t\tcase '<Default': ctext[y.Extension] = y.ContentType; break;\n\t\t\tcase '<Override':\n\t\t\t\tif(ct[ct2type[y.ContentType]] !== undefined) ct[ct2type[y.ContentType]].push(y.PartName);\n\t\t\t\tbreak;\n\t\t}\n\t});\n\tif(ct.xmlns !== XMLNS.CT) throw new Error(\"Unknown Namespace: \" + ct.xmlns);\n\tct.calcchain = ct.calcchains.length > 0 ? ct.calcchains[0] : \"\";\n\tct.sst = ct.strs.length > 0 ? ct.strs[0] : \"\";\n\tct.style = ct.styles.length > 0 ? ct.styles[0] : \"\";\n\tct.defaults = ctext;\n\tdelete ct.calcchains;\n\treturn ct;\n}\n\nfunction write_ct(ct, opts)/*:string*/ {\n\tvar type2ct/*{[string]:Array<string>}*/ = evert_arr(ct2type);\n\n\tvar o/*:Array<string>*/ = [], v;\n\to[o.length] = (XML_HEADER);\n\to[o.length] = writextag('Types', null, {\n\t\t'xmlns': XMLNS.CT,\n\t\t'xmlns:xsd': XMLNS.xsd,\n\t\t'xmlns:xsi': XMLNS.xsi\n\t});\n\n\to = o.concat([\n\t\t['xml', 'application/xml'],\n\t\t['bin', 'application/vnd.ms-excel.sheet.binary.macroEnabled.main'],\n\t\t['vml', 'application/vnd.openxmlformats-officedocument.vmlDrawing'],\n\t\t['data', 'application/vnd.openxmlformats-officedocument.model+data'],\n\t\t/* from test files */\n\t\t['bmp', 'image/bmp'],\n\t\t['png', 'image/png'],\n\t\t['gif', 'image/gif'],\n\t\t['emf', 'image/x-emf'],\n\t\t['wmf', 'image/x-wmf'],\n\t\t['jpg', 'image/jpeg'], ['jpeg', 'image/jpeg'],\n\t\t['tif', 'image/tiff'], ['tiff', 'image/tiff'],\n\t\t['pdf', 'application/pdf'],\n\t\t['rels', 'application/vnd.openxmlformats-package.relationships+xml']\n\t].map(function(x) {\n\t\treturn writextag('Default', null, {'Extension':x[0], 'ContentType': x[1]});\n\t}));\n\n\t/* only write first instance */\n\tvar f1 = function(w) {\n\t\tif(ct[w] && ct[w].length > 0) {\n\t\t\tv = ct[w][0];\n\t\t\to[o.length] = (writextag('Override', null, {\n\t\t\t\t'PartName': (v[0] == '/' ? \"\":\"/\") + v,\n\t\t\t\t'ContentType': CT_LIST[w][opts.bookType] || CT_LIST[w]['xlsx']\n\t\t\t}));\n\t\t}\n\t};\n\n\t/* book type-specific */\n\tvar f2 = function(w) {\n\t\t(ct[w]||[]).forEach(function(v) {\n\t\t\to[o.length] = (writextag('Override', null, {\n\t\t\t\t'PartName': (v[0] == '/' ? \"\":\"/\") + v,\n\t\t\t\t'ContentType': CT_LIST[w][opts.bookType] || CT_LIST[w]['xlsx']\n\t\t\t}));\n\t\t});\n\t};\n\n\t/* standard type */\n\tvar f3 = function(t) {\n\t\t(ct[t]||[]).forEach(function(v) {\n\t\t\to[o.length] = (writextag('Override', null, {\n\t\t\t\t'PartName': (v[0] == '/' ? \"\":\"/\") + v,\n\t\t\t\t'ContentType': type2ct[t][0]\n\t\t\t}));\n\t\t});\n\t};\n\n\tf1('workbooks');\n\tf2('sheets');\n\tf2('charts');\n\tf3('themes');\n\t['strs', 'styles'].forEach(f1);\n\t['coreprops', 'extprops', 'custprops'].forEach(f3);\n\tf3('vba');\n\tf3('comments');\n\tf3('threadedcomments');\n\tf3('drawings');\n\tf2('metadata');\n\tf3('people');\n\tif(o.length>2){ o[o.length] = ('</Types>'); o[1]=o[1].replace(\"/>\",\">\"); }\n\treturn o.join(\"\");\n}\n/* 9.3 Relationships */\nvar RELS = ({\n\tWB: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument\",\n\tSHEET: \"http://sheetjs.openxmlformats.org/officeDocument/2006/relationships/officeDocument\",\n\tHLINK: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/hyperlink\",\n\tVML: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/vmlDrawing\",\n\tXPATH: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/externalLinkPath\",\n\tXMISS: \"http://schemas.microsoft.com/office/2006/relationships/xlExternalLinkPath/xlPathMissing\",\n\tXLINK: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/externalLink\",\n\tCXML: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/customXml\",\n\tCXMLP: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/customXmlProps\",\n\tCMNT: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/comments\",\n\tCORE_PROPS: \"http://schemas.openxmlformats.org/package/2006/relationships/metadata/core-properties\",\n\tEXT_PROPS: 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/extended-properties',\n\tCUST_PROPS: 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/custom-properties',\n\tSST: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/sharedStrings\",\n\tSTY: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/styles\",\n\tTHEME: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/theme\",\n\tCHART: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/chart\",\n\tCHARTEX: \"http://schemas.microsoft.com/office/2014/relationships/chartEx\",\n\tCS: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/chartsheet\",\n\tWS: [\n\t\t\"http://schemas.openxmlformats.org/officeDocument/2006/relationships/worksheet\",\n\t\t\"http://purl.oclc.org/ooxml/officeDocument/relationships/worksheet\"\n\t],\n\tDS: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/dialogsheet\",\n\tMS: \"http://schemas.microsoft.com/office/2006/relationships/xlMacrosheet\",\n\tIMG: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/image\",\n\tDRAW: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/drawing\",\n\tXLMETA: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/sheetMetadata\",\n\tTCMNT: \"http://schemas.microsoft.com/office/2017/10/relationships/threadedComment\",\n\tPEOPLE: \"http://schemas.microsoft.com/office/2017/10/relationships/person\",\n\tVBA: \"http://schemas.microsoft.com/office/2006/relationships/vbaProject\"\n}/*:any*/);\n\n\n/* 9.3.3 Representing Relationships */\nfunction get_rels_path(file/*:string*/)/*:string*/ {\n\tvar n = file.lastIndexOf(\"/\");\n\treturn file.slice(0,n+1) + '_rels/' + file.slice(n+1) + \".rels\";\n}\n\nfunction parse_rels(data/*:?string*/, currentFilePath/*:string*/) {\n\tvar rels = {\"!id\":{}};\n\tif (!data) return rels;\n\tif (currentFilePath.charAt(0) !== '/') {\n\t\tcurrentFilePath = '/'+currentFilePath;\n\t}\n\tvar hash = {};\n\n\t(data.match(tagregex)||[]).forEach(function(x) {\n\t\tvar y = parsexmltag(x);\n\t\t/* 9.3.2.2 OPC_Relationships */\n\t\tif (y[0] === '<Relationship') {\n\t\t\tvar rel = {}; rel.Type = y.Type; rel.Target = y.Target; rel.Id = y.Id; if(y.TargetMode) rel.TargetMode = y.TargetMode;\n\t\t\tvar canonictarget = y.TargetMode === 'External' ? y.Target : resolve_path(y.Target, currentFilePath);\n\t\t\trels[canonictarget] = rel;\n\t\t\thash[y.Id] = rel;\n\t\t}\n\t});\n\trels[\"!id\"] = hash;\n\treturn rels;\n}\n\n\n/* TODO */\nfunction write_rels(rels)/*:string*/ {\n\tvar o = [XML_HEADER, writextag('Relationships', null, {\n\t\t//'xmlns:ns0': XMLNS.RELS,\n\t\t'xmlns': XMLNS.RELS\n\t})];\n\tkeys(rels['!id']).forEach(function(rid) {\n\t\to[o.length] = (writextag('Relationship', null, rels['!id'][rid]));\n\t});\n\tif(o.length>2){ o[o.length] = ('</Relationships>'); o[1]=o[1].replace(\"/>\",\">\"); }\n\treturn o.join(\"\");\n}\n\nfunction add_rels(rels, rId/*:number*/, f, type, relobj, targetmode/*:?string*/)/*:number*/ {\n\tif(!relobj) relobj = {};\n\tif(!rels['!id']) rels['!id'] = {};\n\tif(!rels['!idx']) rels['!idx'] = 1;\n\tif(rId < 0) for(rId = rels['!idx']; rels['!id']['rId' + rId]; ++rId){/* empty */}\n\trels['!idx'] = rId + 1;\n\trelobj.Id = 'rId' + rId;\n\trelobj.Type = type;\n\trelobj.Target = f;\n\tif(targetmode) relobj.TargetMode = targetmode;\n\telse if([RELS.HLINK, RELS.XPATH, RELS.XMISS].indexOf(relobj.Type) > -1) relobj.TargetMode = \"External\";\n\tif(rels['!id'][relobj.Id]) throw new Error(\"Cannot rewrite rId \" + rId);\n\trels['!id'][relobj.Id] = relobj;\n\trels[('/' + relobj.Target).replace(\"//\",\"/\")] = relobj;\n\treturn rId;\n}\n/* Open Document Format for Office Applications (OpenDocument) Version 1.2 */\n/* Part 3 Section 4 Manifest File */\nvar CT_ODS = \"application/vnd.oasis.opendocument.spreadsheet\";\nfunction parse_manifest(d, opts) {\n\tvar str = xlml_normalize(d);\n\tvar Rn;\n\tvar FEtag;\n\twhile((Rn = xlmlregex.exec(str))) switch(Rn[3]) {\n\t\tcase 'manifest': break; // 4.2 <manifest:manifest>\n\t\tcase 'file-entry': // 4.3 <manifest:file-entry>\n\t\t\tFEtag = parsexmltag(Rn[0], false);\n\t\t\tif(FEtag.path == '/' && FEtag.type !== CT_ODS) throw new Error(\"This OpenDocument is not a spreadsheet\");\n\t\t\tbreak;\n\t\tcase 'encryption-data': // 4.4 <manifest:encryption-data>\n\t\tcase 'algorithm': // 4.5 <manifest:algorithm>\n\t\tcase 'start-key-generation': // 4.6 <manifest:start-key-generation>\n\t\tcase 'key-derivation': // 4.7 <manifest:key-derivation>\n\t\t\tthrow new Error(\"Unsupported ODS Encryption\");\n\t\tdefault: if(opts && opts.WTF) throw Rn;\n\t}\n}\n\nfunction write_manifest(manifest/*:Array<Array<string> >*/)/*:string*/ {\n\tvar o = [XML_HEADER];\n\to.push('<manifest:manifest xmlns:manifest=\"urn:oasis:names:tc:opendocument:xmlns:manifest:1.0\" manifest:version=\"1.2\">\\n');\n\to.push('  <manifest:file-entry manifest:full-path=\"/\" manifest:version=\"1.2\" manifest:media-type=\"application/vnd.oasis.opendocument.spreadsheet\"/>\\n');\n\tfor(var i = 0; i < manifest.length; ++i) o.push('  <manifest:file-entry manifest:full-path=\"' + manifest[i][0] + '\" manifest:media-type=\"' + manifest[i][1] + '\"/>\\n');\n\to.push('</manifest:manifest>');\n\treturn o.join(\"\");\n}\n\n/* Part 3 Section 6 Metadata Manifest File */\nfunction write_rdf_type(file/*:string*/, res/*:string*/, tag/*:?string*/) {\n\treturn [\n\t\t'  <rdf:Description rdf:about=\"' + file + '\">\\n',\n\t\t'    <rdf:type rdf:resource=\"http://docs.oasis-open.org/ns/office/1.2/meta/' + (tag || \"odf\") + '#' + res + '\"/>\\n',\n\t\t'  </rdf:Description>\\n'\n\t].join(\"\");\n}\nfunction write_rdf_has(base/*:string*/, file/*:string*/) {\n\treturn [\n\t\t'  <rdf:Description rdf:about=\"' + base + '\">\\n',\n\t\t'    <ns0:hasPart xmlns:ns0=\"http://docs.oasis-open.org/ns/office/1.2/meta/pkg#\" rdf:resource=\"' + file + '\"/>\\n',\n\t\t'  </rdf:Description>\\n'\n\t].join(\"\");\n}\nfunction write_rdf(rdf) {\n\tvar o = [XML_HEADER];\n\to.push('<rdf:RDF xmlns:rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\">\\n');\n\tfor(var i = 0; i != rdf.length; ++i) {\n\t\to.push(write_rdf_type(rdf[i][0], rdf[i][1]));\n\t\to.push(write_rdf_has(\"\",rdf[i][0]));\n\t}\n\to.push(write_rdf_type(\"\",\"Document\", \"pkg\"));\n\to.push('</rdf:RDF>');\n\treturn o.join(\"\");\n}\n/* TODO: pull properties */\nfunction write_meta_ods(/*:: wb: Workbook, opts: any*/)/*:string*/ {\n\treturn '<office:document-meta xmlns:office=\"urn:oasis:names:tc:opendocument:xmlns:office:1.0\" xmlns:meta=\"urn:oasis:names:tc:opendocument:xmlns:meta:1.0\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" office:version=\"1.2\"><office:meta><meta:generator>Sheet' + 'JS ' + XLSX.version + '</meta:generator></office:meta></office:document-meta>';\n}\n\n/* ECMA-376 Part II 11.1 Core Properties Part */\n/* [MS-OSHARED] 2.3.3.2.[1-2].1 (PIDSI/PIDDSI) */\nvar CORE_PROPS/*:Array<Array<string> >*/ = [\n\t[\"cp:category\", \"Category\"],\n\t[\"cp:contentStatus\", \"ContentStatus\"],\n\t[\"cp:keywords\", \"Keywords\"],\n\t[\"cp:lastModifiedBy\", \"LastAuthor\"],\n\t[\"cp:lastPrinted\", \"LastPrinted\"],\n\t[\"cp:revision\", \"RevNumber\"],\n\t[\"cp:version\", \"Version\"],\n\t[\"dc:creator\", \"Author\"],\n\t[\"dc:description\", \"Comments\"],\n\t[\"dc:identifier\", \"Identifier\"],\n\t[\"dc:language\", \"Language\"],\n\t[\"dc:subject\", \"Subject\"],\n\t[\"dc:title\", \"Title\"],\n\t[\"dcterms:created\", \"CreatedDate\", 'date'],\n\t[\"dcterms:modified\", \"ModifiedDate\", 'date']\n];\n\nvar CORE_PROPS_REGEX/*:Array<RegExp>*/ = /*#__PURE__*/(function() {\n\tvar r = new Array(CORE_PROPS.length);\n\tfor(var i = 0; i < CORE_PROPS.length; ++i) {\n\t\tvar f = CORE_PROPS[i];\n\t\tvar g = \"(?:\"+ f[0].slice(0,f[0].indexOf(\":\")) +\":)\"+ f[0].slice(f[0].indexOf(\":\")+1);\n\t\tr[i] = new RegExp(\"<\" + g + \"[^>]*>([\\\\s\\\\S]*?)<\\/\" + g + \">\");\n\t}\n\treturn r;\n})();\n\nfunction parse_core_props(data) {\n\tvar p = {};\n\tdata = utf8read(data);\n\n\tfor(var i = 0; i < CORE_PROPS.length; ++i) {\n\t\tvar f = CORE_PROPS[i], cur = data.match(CORE_PROPS_REGEX[i]);\n\t\tif(cur != null && cur.length > 0) p[f[1]] = unescapexml(cur[1]);\n\t\tif(f[2] === 'date' && p[f[1]]) p[f[1]] = parseDate(p[f[1]]);\n\t}\n\n\treturn p;\n}\n\nfunction cp_doit(f, g, h, o, p) {\n\tif(p[f] != null || g == null || g === \"\") return;\n\tp[f] = g;\n\tg = escapexml(g);\n\to[o.length] = (h ? writextag(f,g,h) : writetag(f,g));\n}\n\nfunction write_core_props(cp, _opts) {\n\tvar opts = _opts || {};\n\tvar o = [XML_HEADER, writextag('cp:coreProperties', null, {\n\t\t//'xmlns': XMLNS.CORE_PROPS,\n\t\t'xmlns:cp': XMLNS.CORE_PROPS,\n\t\t'xmlns:dc': XMLNS.dc,\n\t\t'xmlns:dcterms': XMLNS.dcterms,\n\t\t'xmlns:dcmitype': XMLNS.dcmitype,\n\t\t'xmlns:xsi': XMLNS.xsi\n\t})], p = {};\n\tif(!cp && !opts.Props) return o.join(\"\");\n\n\tif(cp) {\n\t\tif(cp.CreatedDate != null) cp_doit(\"dcterms:created\", typeof cp.CreatedDate === \"string\" ? cp.CreatedDate : write_w3cdtf(cp.CreatedDate, opts.WTF), {\"xsi:type\":\"dcterms:W3CDTF\"}, o, p);\n\t\tif(cp.ModifiedDate != null) cp_doit(\"dcterms:modified\", typeof cp.ModifiedDate === \"string\" ? cp.ModifiedDate : write_w3cdtf(cp.ModifiedDate, opts.WTF), {\"xsi:type\":\"dcterms:W3CDTF\"}, o, p);\n\t}\n\n\tfor(var i = 0; i != CORE_PROPS.length; ++i) {\n\t\tvar f = CORE_PROPS[i];\n\t\tvar v = opts.Props && opts.Props[f[1]] != null ? opts.Props[f[1]] : cp ? cp[f[1]] : null;\n\t\tif(v === true) v = \"1\";\n\t\telse if(v === false) v = \"0\";\n\t\telse if(typeof v == \"number\") v = String(v);\n\t\tif(v != null) cp_doit(f[0], v, null, o, p);\n\t}\n\tif(o.length>2){ o[o.length] = ('</cp:coreProperties>'); o[1]=o[1].replace(\"/>\",\">\"); }\n\treturn o.join(\"\");\n}\n/* 15.2.12.3 Extended File Properties Part */\n/* [MS-OSHARED] 2.3.3.2.[1-2].1 (PIDSI/PIDDSI) */\nvar EXT_PROPS/*:Array<Array<string> >*/ = [\n\t[\"Application\", \"Application\", \"string\"],\n\t[\"AppVersion\", \"AppVersion\", \"string\"],\n\t[\"Company\", \"Company\", \"string\"],\n\t[\"DocSecurity\", \"DocSecurity\", \"string\"],\n\t[\"Manager\", \"Manager\", \"string\"],\n\t[\"HyperlinksChanged\", \"HyperlinksChanged\", \"bool\"],\n\t[\"SharedDoc\", \"SharedDoc\", \"bool\"],\n\t[\"LinksUpToDate\", \"LinksUpToDate\", \"bool\"],\n\t[\"ScaleCrop\", \"ScaleCrop\", \"bool\"],\n\t[\"HeadingPairs\", \"HeadingPairs\", \"raw\"],\n\t[\"TitlesOfParts\", \"TitlesOfParts\", \"raw\"]\n];\n\nvar PseudoPropsPairs = [\n\t\"Worksheets\",  \"SheetNames\",\n\t\"NamedRanges\", \"DefinedNames\",\n\t\"Chartsheets\", \"ChartNames\"\n];\nfunction load_props_pairs(HP/*:string|Array<Array<any>>*/, TOP, props, opts) {\n\tvar v = [];\n\tif(typeof HP == \"string\") v = parseVector(HP, opts);\n\telse for(var j = 0; j < HP.length; ++j) v = v.concat(HP[j].map(function(hp) { return {v:hp}; }));\n\tvar parts = (typeof TOP == \"string\") ? parseVector(TOP, opts).map(function (x) { return x.v; }) : TOP;\n\tvar idx = 0, len = 0;\n\tif(parts.length > 0) for(var i = 0; i !== v.length; i += 2) {\n\t\tlen = +(v[i+1].v);\n\t\tswitch(v[i].v) {\n\t\t\tcase \"Worksheets\":\n\t\t\tcase \"工作表\":\n\t\t\tcase \"Листы\":\n\t\t\tcase \"أوراق العمل\":\n\t\t\tcase \"ワークシート\":\n\t\t\tcase \"גליונות עבודה\":\n\t\t\tcase \"Arbeitsblätter\":\n\t\t\tcase \"Çalışma Sayfaları\":\n\t\t\tcase \"Feuilles de calcul\":\n\t\t\tcase \"Fogli di lavoro\":\n\t\t\tcase \"Folhas de cálculo\":\n\t\t\tcase \"Planilhas\":\n\t\t\tcase \"Regneark\":\n\t\t\tcase \"Hojas de cálculo\":\n\t\t\tcase \"Werkbladen\":\n\t\t\t\tprops.Worksheets = len;\n\t\t\t\tprops.SheetNames = parts.slice(idx, idx + len);\n\t\t\t\tbreak;\n\n\t\t\tcase \"Named Ranges\":\n\t\t\tcase \"Rangos con nombre\":\n\t\t\tcase \"名前付き一覧\":\n\t\t\tcase \"Benannte Bereiche\":\n\t\t\tcase \"Navngivne områder\":\n\t\t\t\tprops.NamedRanges = len;\n\t\t\t\tprops.DefinedNames = parts.slice(idx, idx + len);\n\t\t\t\tbreak;\n\n\t\t\tcase \"Charts\":\n\t\t\tcase \"Diagramme\":\n\t\t\t\tprops.Chartsheets = len;\n\t\t\t\tprops.ChartNames = parts.slice(idx, idx + len);\n\t\t\t\tbreak;\n\t\t}\n\t\tidx += len;\n\t}\n}\n\nfunction parse_ext_props(data, p, opts) {\n\tvar q = {}; if(!p) p = {};\n\tdata = utf8read(data);\n\n\tEXT_PROPS.forEach(function(f) {\n\t\tvar xml = (data.match(matchtag(f[0]))||[])[1];\n\t\tswitch(f[2]) {\n\t\t\tcase \"string\": if(xml) p[f[1]] = unescapexml(xml); break;\n\t\t\tcase \"bool\": p[f[1]] = xml === \"true\"; break;\n\t\t\tcase \"raw\":\n\t\t\t\tvar cur = data.match(new RegExp(\"<\" + f[0] + \"[^>]*>([\\\\s\\\\S]*?)<\\/\" + f[0] + \">\"));\n\t\t\t\tif(cur && cur.length > 0) q[f[1]] = cur[1];\n\t\t\t\tbreak;\n\t\t}\n\t});\n\n\tif(q.HeadingPairs && q.TitlesOfParts) load_props_pairs(q.HeadingPairs, q.TitlesOfParts, p, opts);\n\n\treturn p;\n}\n\nfunction write_ext_props(cp/*::, opts*/)/*:string*/ {\n\tvar o/*:Array<string>*/ = [], W = writextag;\n\tif(!cp) cp = {};\n\tcp.Application = \"SheetJS\";\n\to[o.length] = (XML_HEADER);\n\to[o.length] = (writextag('Properties', null, {\n\t\t'xmlns': XMLNS.EXT_PROPS,\n\t\t'xmlns:vt': XMLNS.vt\n\t}));\n\n\tEXT_PROPS.forEach(function(f) {\n\t\tif(cp[f[1]] === undefined) return;\n\t\tvar v;\n\t\tswitch(f[2]) {\n\t\t\tcase 'string': v = escapexml(String(cp[f[1]])); break;\n\t\t\tcase 'bool': v = cp[f[1]] ? 'true' : 'false'; break;\n\t\t}\n\t\tif(v !== undefined) o[o.length] = (W(f[0], v));\n\t});\n\n\t/* TODO: HeadingPairs, TitlesOfParts */\n\to[o.length] = (W('HeadingPairs', W('vt:vector', W('vt:variant', '<vt:lpstr>Worksheets</vt:lpstr>')+W('vt:variant', W('vt:i4', String(cp.Worksheets))), {size:2, baseType:\"variant\"})));\n\to[o.length] = (W('TitlesOfParts', W('vt:vector', cp.SheetNames.map(function(s) { return \"<vt:lpstr>\" + escapexml(s) + \"</vt:lpstr>\"; }).join(\"\"), {size: cp.Worksheets, baseType:\"lpstr\"})));\n\tif(o.length>2){ o[o.length] = ('</Properties>'); o[1]=o[1].replace(\"/>\",\">\"); }\n\treturn o.join(\"\");\n}\n/* 15.2.12.2 Custom File Properties Part */\nvar custregex = /<[^>]+>[^<]*/g;\nfunction parse_cust_props(data/*:string*/, opts) {\n\tvar p = {}, name = \"\";\n\tvar m = data.match(custregex);\n\tif(m) for(var i = 0; i != m.length; ++i) {\n\t\tvar x = m[i], y = parsexmltag(x);\n\t\tswitch(y[0]) {\n\t\t\tcase '<?xml': break;\n\t\t\tcase '<Properties': break;\n\t\t\tcase '<property': name = unescapexml(y.name); break;\n\t\t\tcase '</property>': name = null; break;\n\t\t\tdefault: if (x.indexOf('<vt:') === 0) {\n\t\t\t\tvar toks = x.split('>');\n\t\t\t\tvar type = toks[0].slice(4), text = toks[1];\n\t\t\t\t/* 22.4.2.32 (CT_Variant). Omit the binary types from 22.4 (Variant Types) */\n\t\t\t\tswitch(type) {\n\t\t\t\t\tcase 'lpstr': case 'bstr': case 'lpwstr':\n\t\t\t\t\t\tp[name] = unescapexml(text);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'bool':\n\t\t\t\t\t\tp[name] = parsexmlbool(text);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'i1': case 'i2': case 'i4': case 'i8': case 'int': case 'uint':\n\t\t\t\t\t\tp[name] = parseInt(text, 10);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'r4': case 'r8': case 'decimal':\n\t\t\t\t\t\tp[name] = parseFloat(text);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'filetime': case 'date':\n\t\t\t\t\t\tp[name] = parseDate(text);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'cy': case 'error':\n\t\t\t\t\t\tp[name] = unescapexml(text);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tif(type.slice(-1) == '/') break;\n\t\t\t\t\t\tif(opts.WTF && typeof console !== 'undefined') console.warn('Unexpected', x, type, toks);\n\t\t\t\t}\n\t\t\t} else if(x.slice(0,2) === \"</\") {/* empty */\n\t\t\t} else if(opts.WTF) throw new Error(x);\n\t\t}\n\t}\n\treturn p;\n}\n\nfunction write_cust_props(cp/*::, opts*/)/*:string*/ {\n\tvar o = [XML_HEADER, writextag('Properties', null, {\n\t\t'xmlns': XMLNS.CUST_PROPS,\n\t\t'xmlns:vt': XMLNS.vt\n\t})];\n\tif(!cp) return o.join(\"\");\n\tvar pid = 1;\n\tkeys(cp).forEach(function custprop(k) { ++pid;\n\t\to[o.length] = (writextag('property', write_vt(cp[k], true), {\n\t\t\t'fmtid': '{D5CDD505-2E9C-101B-9397-08002B2CF9AE}',\n\t\t\t'pid': pid,\n\t\t\t'name': escapexml(k)\n\t\t}));\n\t});\n\tif(o.length>2){ o[o.length] = '</Properties>'; o[1]=o[1].replace(\"/>\",\">\"); }\n\treturn o.join(\"\");\n}\n/* Common Name -> XLML Name */\nvar XLMLDocPropsMap = {\n\tTitle: 'Title',\n\tSubject: 'Subject',\n\tAuthor: 'Author',\n\tKeywords: 'Keywords',\n\tComments: 'Description',\n\tLastAuthor: 'LastAuthor',\n\tRevNumber: 'Revision',\n\tApplication: 'AppName',\n\t/* TotalTime: 'TotalTime', */\n\tLastPrinted: 'LastPrinted',\n\tCreatedDate: 'Created',\n\tModifiedDate: 'LastSaved',\n\t/* Pages */\n\t/* Words */\n\t/* Characters */\n\tCategory: 'Category',\n\t/* PresentationFormat */\n\tManager: 'Manager',\n\tCompany: 'Company',\n\t/* Guid */\n\t/* HyperlinkBase */\n\t/* Bytes */\n\t/* Lines */\n\t/* Paragraphs */\n\t/* CharactersWithSpaces */\n\tAppVersion: 'Version',\n\n\tContentStatus: 'ContentStatus', /* NOTE: missing from schema */\n\tIdentifier: 'Identifier', /* NOTE: missing from schema */\n\tLanguage: 'Language' /* NOTE: missing from schema */\n};\nvar evert_XLMLDPM;\n\nfunction xlml_set_prop(Props, tag/*:string*/, val) {\n\tif(!evert_XLMLDPM) evert_XLMLDPM = evert(XLMLDocPropsMap);\n\ttag = evert_XLMLDPM[tag] || tag;\n\tProps[tag] = val;\n}\n\nfunction xlml_write_docprops(Props, opts) {\n\tvar o/*:Array<string>*/ = [];\n\tkeys(XLMLDocPropsMap).map(function(m) {\n\t\tfor(var i = 0; i < CORE_PROPS.length; ++i) if(CORE_PROPS[i][1] == m) return CORE_PROPS[i];\n\t\tfor(i = 0; i < EXT_PROPS.length; ++i) if(EXT_PROPS[i][1] == m) return EXT_PROPS[i];\n\t\tthrow m;\n\t}).forEach(function(p) {\n\t\tif(Props[p[1]] == null) return;\n\t\tvar m = opts && opts.Props && opts.Props[p[1]] != null ? opts.Props[p[1]] : Props[p[1]];\n\t\tswitch(p[2]) {\n\t\t\tcase 'date': m = new Date(m).toISOString().replace(/\\.\\d*Z/,\"Z\"); break;\n\t\t}\n\t\tif(typeof m == 'number') m = String(m);\n\t\telse if(m === true || m === false) { m = m ? \"1\" : \"0\"; }\n\t\telse if(m instanceof Date) m = new Date(m).toISOString().replace(/\\.\\d*Z/,\"\");\n\t\to.push(writetag(XLMLDocPropsMap[p[1]] || p[1], m));\n\t});\n\treturn writextag('DocumentProperties', o.join(\"\"), {xmlns:XLMLNS.o });\n}\nfunction xlml_write_custprops(Props, Custprops/*::, opts*/) {\n\tvar BLACKLIST = [\"Worksheets\",\"SheetNames\"];\n\tvar T = 'CustomDocumentProperties';\n\tvar o/*:Array<string>*/ = [];\n\tif(Props) keys(Props).forEach(function(k) {\n\t\t/*:: if(!Props) return; */\n\t\tif(!Object.prototype.hasOwnProperty.call(Props, k)) return;\n\t\tfor(var i = 0; i < CORE_PROPS.length; ++i) if(k == CORE_PROPS[i][1]) return;\n\t\tfor(i = 0; i < EXT_PROPS.length; ++i) if(k == EXT_PROPS[i][1]) return;\n\t\tfor(i = 0; i < BLACKLIST.length; ++i) if(k == BLACKLIST[i]) return;\n\n\t\tvar m = Props[k];\n\t\tvar t = \"string\";\n\t\tif(typeof m == 'number') { t = \"float\"; m = String(m); }\n\t\telse if(m === true || m === false) { t = \"boolean\"; m = m ? \"1\" : \"0\"; }\n\t\telse m = String(m);\n\t\to.push(writextag(escapexmltag(k), m, {\"dt:dt\":t}));\n\t});\n\tif(Custprops) keys(Custprops).forEach(function(k) {\n\t\t/*:: if(!Custprops) return; */\n\t\tif(!Object.prototype.hasOwnProperty.call(Custprops, k)) return;\n\t\tif(Props && Object.prototype.hasOwnProperty.call(Props, k)) return;\n\t\tvar m = Custprops[k];\n\t\tvar t = \"string\";\n\t\tif(typeof m == 'number') { t = \"float\"; m = String(m); }\n\t\telse if(m === true || m === false) { t = \"boolean\"; m = m ? \"1\" : \"0\"; }\n\t\telse if(m instanceof Date) { t = \"dateTime.tz\"; m = m.toISOString(); }\n\t\telse m = String(m);\n\t\to.push(writextag(escapexmltag(k), m, {\"dt:dt\":t}));\n\t});\n\treturn '<' + T + ' xmlns=\"' + XLMLNS.o + '\">' + o.join(\"\") + '</' + T + '>';\n}\n/* [MS-DTYP] 2.3.3 FILETIME */\n/* [MS-OLEDS] 2.1.3 FILETIME (Packet Version) */\n/* [MS-OLEPS] 2.8 FILETIME (Packet Version) */\nfunction parse_FILETIME(blob) {\n\tvar dwLowDateTime = blob.read_shift(4), dwHighDateTime = blob.read_shift(4);\n\treturn new Date(((dwHighDateTime/1e7*Math.pow(2,32) + dwLowDateTime/1e7) - 11644473600)*1000).toISOString().replace(/\\.000/,\"\");\n}\nfunction write_FILETIME(time/*:string|Date*/) {\n\tvar date = (typeof time == \"string\") ? new Date(Date.parse(time)) : time;\n\tvar t = date.getTime() / 1000 + 11644473600;\n\tvar l = t % Math.pow(2,32), h = (t - l) / Math.pow(2,32);\n\tl *= 1e7; h *= 1e7;\n\tvar w = (l / Math.pow(2,32)) | 0;\n\tif(w > 0) { l = l % Math.pow(2,32); h += w; }\n\tvar o = new_buf(8); o.write_shift(4, l); o.write_shift(4, h); return o;\n}\n\n/* [MS-OSHARED] 2.3.3.1.4 Lpstr */\nfunction parse_lpstr(blob, type, pad/*:?number*/) {\n\tvar start = blob.l;\n\tvar str = blob.read_shift(0, 'lpstr-cp');\n\tif(pad) while((blob.l - start) & 3) ++blob.l;\n\treturn str;\n}\n\n/* [MS-OSHARED] 2.3.3.1.6 Lpwstr */\nfunction parse_lpwstr(blob, type, pad) {\n\tvar str = blob.read_shift(0, 'lpwstr');\n\tif(pad) blob.l += (4 - ((str.length+1) & 3)) & 3;\n\treturn str;\n}\n\n\n/* [MS-OSHARED] 2.3.3.1.11 VtString */\n/* [MS-OSHARED] 2.3.3.1.12 VtUnalignedString */\nfunction parse_VtStringBase(blob, stringType, pad) {\n\tif(stringType === 0x1F /*VT_LPWSTR*/) return parse_lpwstr(blob);\n\treturn parse_lpstr(blob, stringType, pad);\n}\n\nfunction parse_VtString(blob, t/*:number*/, pad/*:?boolean*/) { return parse_VtStringBase(blob, t, pad === false ? 0: 4); }\nfunction parse_VtUnalignedString(blob, t/*:number*/) { if(!t) throw new Error(\"VtUnalignedString must have positive length\"); return parse_VtStringBase(blob, t, 0); }\n\n/* [MS-OSHARED] 2.3.3.1.7 VtVecLpwstrValue */\nfunction parse_VtVecLpwstrValue(blob)/*:Array<string>*/ {\n\tvar length = blob.read_shift(4);\n\tvar ret/*:Array<string>*/ = [];\n\tfor(var i = 0; i != length; ++i) {\n\t\tvar start = blob.l;\n\t\tret[i] = blob.read_shift(0, 'lpwstr').replace(chr0,'');\n\t\tif((blob.l - start) & 0x02) blob.l += 2;\n\t}\n\treturn ret;\n}\n\n/* [MS-OSHARED] 2.3.3.1.9 VtVecUnalignedLpstrValue */\nfunction parse_VtVecUnalignedLpstrValue(blob)/*:Array<string>*/ {\n\tvar length = blob.read_shift(4);\n\tvar ret/*:Array<string>*/ = [];\n\tfor(var i = 0; i != length; ++i) ret[i] = blob.read_shift(0, 'lpstr-cp').replace(chr0,'');\n\treturn ret;\n}\n\n\n/* [MS-OSHARED] 2.3.3.1.13 VtHeadingPair */\nfunction parse_VtHeadingPair(blob) {\n\tvar start = blob.l;\n\tvar headingString = parse_TypedPropertyValue(blob, VT_USTR);\n\tif(blob[blob.l] == 0x00 && blob[blob.l+1] == 0x00 && ((blob.l - start) & 0x02)) blob.l += 2;\n\tvar headerParts = parse_TypedPropertyValue(blob, VT_I4);\n\treturn [headingString, headerParts];\n}\n\n/* [MS-OSHARED] 2.3.3.1.14 VtVecHeadingPairValue */\nfunction parse_VtVecHeadingPairValue(blob) {\n\tvar cElements = blob.read_shift(4);\n\tvar out = [];\n\tfor(var i = 0; i < cElements / 2; ++i) out.push(parse_VtHeadingPair(blob));\n\treturn out;\n}\n\n/* [MS-OLEPS] 2.18.1 Dictionary (uses 2.17, 2.16) */\nfunction parse_dictionary(blob,CodePage) {\n\tvar cnt = blob.read_shift(4);\n\tvar dict/*:{[number]:string}*/ = ({}/*:any*/);\n\tfor(var j = 0; j != cnt; ++j) {\n\t\tvar pid = blob.read_shift(4);\n\t\tvar len = blob.read_shift(4);\n\t\tdict[pid] = blob.read_shift(len, (CodePage === 0x4B0 ?'utf16le':'utf8')).replace(chr0,'').replace(chr1,'!');\n\t\tif(CodePage === 0x4B0 && (len % 2)) blob.l += 2;\n\t}\n\tif(blob.l & 3) blob.l = (blob.l>>2+1)<<2;\n\treturn dict;\n}\n\n/* [MS-OLEPS] 2.9 BLOB */\nfunction parse_BLOB(blob) {\n\tvar size = blob.read_shift(4);\n\tvar bytes = blob.slice(blob.l,blob.l+size);\n\tblob.l += size;\n\tif((size & 3) > 0) blob.l += (4 - (size & 3)) & 3;\n\treturn bytes;\n}\n\n/* [MS-OLEPS] 2.11 ClipboardData */\nfunction parse_ClipboardData(blob) {\n\t// TODO\n\tvar o = {};\n\to.Size = blob.read_shift(4);\n\t//o.Format = blob.read_shift(4);\n\tblob.l += o.Size + 3 - (o.Size - 1) % 4;\n\treturn o;\n}\n\n/* [MS-OLEPS] 2.15 TypedPropertyValue */\nfunction parse_TypedPropertyValue(blob, type/*:number*/, _opts)/*:any*/ {\n\tvar t = blob.read_shift(2), ret, opts = _opts||{};\n\tblob.l += 2;\n\tif(type !== VT_VARIANT)\n\tif(t !== type && VT_CUSTOM.indexOf(type)===-1 && !((type & 0xFFFE) == 0x101E && (t & 0xFFFE) == 0x101E)) throw new Error('Expected type ' + type + ' saw ' + t);\n\tswitch(type === VT_VARIANT ? t : type) {\n\t\tcase 0x02 /*VT_I2*/: ret = blob.read_shift(2, 'i'); if(!opts.raw) blob.l += 2; return ret;\n\t\tcase 0x03 /*VT_I4*/: ret = blob.read_shift(4, 'i'); return ret;\n\t\tcase 0x0B /*VT_BOOL*/: return blob.read_shift(4) !== 0x0;\n\t\tcase 0x13 /*VT_UI4*/: ret = blob.read_shift(4); return ret;\n\t\tcase 0x1E /*VT_LPSTR*/: return parse_lpstr(blob, t, 4).replace(chr0,'');\n\t\tcase 0x1F /*VT_LPWSTR*/: return parse_lpwstr(blob);\n\t\tcase 0x40 /*VT_FILETIME*/: return parse_FILETIME(blob);\n\t\tcase 0x41 /*VT_BLOB*/: return parse_BLOB(blob);\n\t\tcase 0x47 /*VT_CF*/: return parse_ClipboardData(blob);\n\t\tcase 0x50 /*VT_STRING*/: return parse_VtString(blob, t, !opts.raw).replace(chr0,'');\n\t\tcase 0x51 /*VT_USTR*/: return parse_VtUnalignedString(blob, t/*, 4*/).replace(chr0,'');\n\t\tcase 0x100C /*VT_VECTOR|VT_VARIANT*/: return parse_VtVecHeadingPairValue(blob);\n\t\tcase 0x101E /*VT_VECTOR|VT_LPSTR*/:\n\t\tcase 0x101F /*VT_VECTOR|VT_LPWSTR*/:\n\t\t\treturn t == 0x101F ? parse_VtVecLpwstrValue(blob) : parse_VtVecUnalignedLpstrValue(blob);\n\t\tdefault: throw new Error(\"TypedPropertyValue unrecognized type \" + type + \" \" + t);\n\t}\n}\nfunction write_TypedPropertyValue(type/*:number*/, value) {\n\tvar o = new_buf(4), p = new_buf(4);\n\to.write_shift(4, type == 0x50 ? 0x1F : type);\n\tswitch(type) {\n\t\tcase 0x03 /*VT_I4*/: p.write_shift(-4, value); break;\n\t\tcase 0x05 /*VT_I4*/: p = new_buf(8); p.write_shift(8, value, 'f'); break;\n\t\tcase 0x0B /*VT_BOOL*/: p.write_shift(4, value ? 0x01 : 0x00); break;\n\t\tcase 0x40 /*VT_FILETIME*/: /*:: if(typeof value !== \"string\" && !(value instanceof Date)) throw \"unreachable\"; */ p = write_FILETIME(value); break;\n\t\tcase 0x1F /*VT_LPWSTR*/:\n\t\tcase 0x50 /*VT_STRING*/:\n\t\t\t/*:: if(typeof value !== \"string\") throw \"unreachable\"; */\n\t\t\tp = new_buf(4 + 2 * (value.length + 1) + (value.length % 2 ? 0 : 2));\n\t\t\tp.write_shift(4, value.length + 1);\n\t\t\tp.write_shift(0, value, \"dbcs\");\n\t\t\twhile(p.l != p.length) p.write_shift(1, 0);\n\t\t\tbreak;\n\t\tdefault: throw new Error(\"TypedPropertyValue unrecognized type \" + type + \" \" + value);\n\t}\n\treturn bconcat([o, p]);\n}\n\n/* [MS-OLEPS] 2.20 PropertySet */\nfunction parse_PropertySet(blob, PIDSI) {\n\tvar start_addr = blob.l;\n\tvar size = blob.read_shift(4);\n\tvar NumProps = blob.read_shift(4);\n\tvar Props = [], i = 0;\n\tvar CodePage = 0;\n\tvar Dictionary = -1, DictObj/*:{[number]:string}*/ = ({}/*:any*/);\n\tfor(i = 0; i != NumProps; ++i) {\n\t\tvar PropID = blob.read_shift(4);\n\t\tvar Offset = blob.read_shift(4);\n\t\tProps[i] = [PropID, Offset + start_addr];\n\t}\n\tProps.sort(function(x,y) { return x[1] - y[1]; });\n\tvar PropH = {};\n\tfor(i = 0; i != NumProps; ++i) {\n\t\tif(blob.l !== Props[i][1]) {\n\t\t\tvar fail = true;\n\t\t\tif(i>0 && PIDSI) switch(PIDSI[Props[i-1][0]].t) {\n\t\t\t\tcase 0x02 /*VT_I2*/: if(blob.l+2 === Props[i][1]) { blob.l+=2; fail = false; } break;\n\t\t\t\tcase 0x50 /*VT_STRING*/: if(blob.l <= Props[i][1]) { blob.l=Props[i][1]; fail = false; } break;\n\t\t\t\tcase 0x100C /*VT_VECTOR|VT_VARIANT*/: if(blob.l <= Props[i][1]) { blob.l=Props[i][1]; fail = false; } break;\n\t\t\t}\n\t\t\tif((!PIDSI||i==0) && blob.l <= Props[i][1]) { fail=false; blob.l = Props[i][1]; }\n\t\t\tif(fail) throw new Error(\"Read Error: Expected address \" + Props[i][1] + ' at ' + blob.l + ' :' + i);\n\t\t}\n\t\tif(PIDSI) {\n\t\t\tvar piddsi = PIDSI[Props[i][0]];\n\t\t\tPropH[piddsi.n] = parse_TypedPropertyValue(blob, piddsi.t, {raw:true});\n\t\t\tif(piddsi.p === 'version') PropH[piddsi.n] = String(PropH[piddsi.n] >> 16) + \".\" + (\"0000\" + String(PropH[piddsi.n] & 0xFFFF)).slice(-4);\n\t\t\tif(piddsi.n == \"CodePage\") switch(PropH[piddsi.n]) {\n\t\t\t\tcase 0: PropH[piddsi.n] = 1252;\n\t\t\t\t\t/* falls through */\n\t\t\t\tcase 874:\n\t\t\t\tcase 932:\n\t\t\t\tcase 936:\n\t\t\t\tcase 949:\n\t\t\t\tcase 950:\n\t\t\t\tcase 1250:\n\t\t\t\tcase 1251:\n\t\t\t\tcase 1253:\n\t\t\t\tcase 1254:\n\t\t\t\tcase 1255:\n\t\t\t\tcase 1256:\n\t\t\t\tcase 1257:\n\t\t\t\tcase 1258:\n\t\t\t\tcase 10000:\n\t\t\t\tcase 1200:\n\t\t\t\tcase 1201:\n\t\t\t\tcase 1252:\n\t\t\t\tcase 65000: case -536:\n\t\t\t\tcase 65001: case -535:\n\t\t\t\t\tset_cp(CodePage = (PropH[piddsi.n]>>>0) & 0xFFFF); break;\n\t\t\t\tdefault: throw new Error(\"Unsupported CodePage: \" + PropH[piddsi.n]);\n\t\t\t}\n\t\t} else {\n\t\t\tif(Props[i][0] === 0x1) {\n\t\t\t\tCodePage = PropH.CodePage = (parse_TypedPropertyValue(blob, VT_I2)/*:number*/);\n\t\t\t\tset_cp(CodePage);\n\t\t\t\tif(Dictionary !== -1) {\n\t\t\t\t\tvar oldpos = blob.l;\n\t\t\t\t\tblob.l = Props[Dictionary][1];\n\t\t\t\t\tDictObj = parse_dictionary(blob,CodePage);\n\t\t\t\t\tblob.l = oldpos;\n\t\t\t\t}\n\t\t\t} else if(Props[i][0] === 0) {\n\t\t\t\tif(CodePage === 0) { Dictionary = i; blob.l = Props[i+1][1]; continue; }\n\t\t\t\tDictObj = parse_dictionary(blob,CodePage);\n\t\t\t} else {\n\t\t\t\tvar name = DictObj[Props[i][0]];\n\t\t\t\tvar val;\n\t\t\t\t/* [MS-OSHARED] 2.3.3.2.3.1.2 + PROPVARIANT */\n\t\t\t\tswitch(blob[blob.l]) {\n\t\t\t\t\tcase 0x41 /*VT_BLOB*/: blob.l += 4; val = parse_BLOB(blob); break;\n\t\t\t\t\tcase 0x1E /*VT_LPSTR*/: blob.l += 4; val = parse_VtString(blob, blob[blob.l-4]).replace(/\\u0000+$/,\"\"); break;\n\t\t\t\t\tcase 0x1F /*VT_LPWSTR*/: blob.l += 4; val = parse_VtString(blob, blob[blob.l-4]).replace(/\\u0000+$/,\"\"); break;\n\t\t\t\t\tcase 0x03 /*VT_I4*/: blob.l += 4; val = blob.read_shift(4, 'i'); break;\n\t\t\t\t\tcase 0x13 /*VT_UI4*/: blob.l += 4; val = blob.read_shift(4); break;\n\t\t\t\t\tcase 0x05 /*VT_R8*/: blob.l += 4; val = blob.read_shift(8, 'f'); break;\n\t\t\t\t\tcase 0x0B /*VT_BOOL*/: blob.l += 4; val = parsebool(blob, 4); break;\n\t\t\t\t\tcase 0x40 /*VT_FILETIME*/: blob.l += 4; val = parseDate(parse_FILETIME(blob)); break;\n\t\t\t\t\tdefault: throw new Error(\"unparsed value: \" + blob[blob.l]);\n\t\t\t\t}\n\t\t\t\tPropH[name] = val;\n\t\t\t}\n\t\t}\n\t}\n\tblob.l = start_addr + size; /* step ahead to skip padding */\n\treturn PropH;\n}\nvar XLSPSSkip = [ \"CodePage\", \"Thumbnail\", \"_PID_LINKBASE\", \"_PID_HLINKS\", \"SystemIdentifier\", \"FMTID\" ]; //.concat(PseudoPropsPairs);\nfunction guess_property_type(val/*:any*/)/*:number*/ {\n\tswitch(typeof val) {\n\t\tcase \"boolean\": return 0x0B;\n\t\tcase \"number\": return ((val|0)==val) ? 0x03 : 0x05;\n\t\tcase \"string\": return 0x1F;\n\t\tcase \"object\": if(val instanceof Date) return 0x40; break;\n\t}\n\treturn -1;\n}\nfunction write_PropertySet(entries, RE, PIDSI) {\n\tvar hdr = new_buf(8), piao = [], prop = [];\n\tvar sz = 8, i = 0;\n\n\tvar pr = new_buf(8), pio = new_buf(8);\n\tpr.write_shift(4, 0x0002);\n\tpr.write_shift(4, 0x04B0);\n\tpio.write_shift(4, 0x0001);\n\tprop.push(pr); piao.push(pio);\n\tsz += 8 + pr.length;\n\n\tif(!RE) {\n\t\tpio = new_buf(8);\n\t\tpio.write_shift(4, 0);\n\t\tpiao.unshift(pio);\n\n\t\tvar bufs = [new_buf(4)];\n\t\tbufs[0].write_shift(4, entries.length);\n\t\tfor(i = 0; i < entries.length; ++i) {\n\t\t\tvar value = entries[i][0];\n\t\t\tpr = new_buf(4 + 4 + 2 * (value.length + 1) + (value.length % 2 ? 0 : 2));\n\t\t\tpr.write_shift(4, i+2);\n\t\t\tpr.write_shift(4, value.length + 1);\n\t\t\tpr.write_shift(0, value, \"dbcs\");\n\t\t\twhile(pr.l != pr.length) pr.write_shift(1, 0);\n\t\t\tbufs.push(pr);\n\t\t}\n\t\tpr = bconcat(bufs);\n\t\tprop.unshift(pr);\n\t\tsz += 8 + pr.length;\n\t}\n\n\tfor(i = 0; i < entries.length; ++i) {\n\t\tif(RE && !RE[entries[i][0]]) continue;\n\t\tif(XLSPSSkip.indexOf(entries[i][0]) > -1 || PseudoPropsPairs.indexOf(entries[i][0]) > -1) continue;\n\t\tif(entries[i][1] == null) continue;\n\n\t\tvar val = entries[i][1], idx = 0;\n\t\tif(RE) {\n\t\t\tidx = +RE[entries[i][0]];\n\t\t\tvar pinfo = (PIDSI/*:: || {}*/)[idx]/*:: || {} */;\n\t\t\tif(pinfo.p == \"version\" && typeof val == \"string\") {\n\t\t\t\t/*:: if(typeof val !== \"string\") throw \"unreachable\"; */\n\t\t\t\tvar arr = val.split(\".\");\n\t\t\t\tval = ((+arr[0])<<16) + ((+arr[1])||0);\n\t\t\t}\n\t\t\tpr = write_TypedPropertyValue(pinfo.t, val);\n\t\t} else {\n\t\t\tvar T = guess_property_type(val);\n\t\t\tif(T == -1) { T = 0x1F; val = String(val); }\n\t\t\tpr = write_TypedPropertyValue(T, val);\n\t\t}\n\t\tprop.push(pr);\n\n\t\tpio = new_buf(8);\n\t\tpio.write_shift(4, !RE ? 2+i : idx);\n\t\tpiao.push(pio);\n\n\t\tsz += 8 + pr.length;\n\t}\n\n\tvar w = 8 * (prop.length + 1);\n\tfor(i = 0; i < prop.length; ++i) { piao[i].write_shift(4, w); w += prop[i].length; }\n\thdr.write_shift(4, sz);\n\thdr.write_shift(4, prop.length);\n\treturn bconcat([hdr].concat(piao).concat(prop));\n}\n\n/* [MS-OLEPS] 2.21 PropertySetStream */\nfunction parse_PropertySetStream(file, PIDSI, clsid) {\n\tvar blob = file.content;\n\tif(!blob) return ({}/*:any*/);\n\tprep_blob(blob, 0);\n\n\tvar NumSets, FMTID0, FMTID1, Offset0, Offset1 = 0;\n\tblob.chk('feff', 'Byte Order: ');\n\n\t/*var vers = */blob.read_shift(2); // TODO: check version\n\tvar SystemIdentifier = blob.read_shift(4);\n\tvar CLSID = blob.read_shift(16);\n\tif(CLSID !== CFB.utils.consts.HEADER_CLSID && CLSID !== clsid) throw new Error(\"Bad PropertySet CLSID \" + CLSID);\n\tNumSets = blob.read_shift(4);\n\tif(NumSets !== 1 && NumSets !== 2) throw new Error(\"Unrecognized #Sets: \" + NumSets);\n\tFMTID0 = blob.read_shift(16); Offset0 = blob.read_shift(4);\n\n\tif(NumSets === 1 && Offset0 !== blob.l) throw new Error(\"Length mismatch: \" + Offset0 + \" !== \" + blob.l);\n\telse if(NumSets === 2) { FMTID1 = blob.read_shift(16); Offset1 = blob.read_shift(4); }\n\tvar PSet0 = parse_PropertySet(blob, PIDSI);\n\n\tvar rval = ({ SystemIdentifier: SystemIdentifier }/*:any*/);\n\tfor(var y in PSet0) rval[y] = PSet0[y];\n\t//rval.blob = blob;\n\trval.FMTID = FMTID0;\n\t//rval.PSet0 = PSet0;\n\tif(NumSets === 1) return rval;\n\tif(Offset1 - blob.l == 2) blob.l += 2;\n\tif(blob.l !== Offset1) throw new Error(\"Length mismatch 2: \" + blob.l + \" !== \" + Offset1);\n\tvar PSet1;\n\ttry { PSet1 = parse_PropertySet(blob, null); } catch(e) {/* empty */}\n\tfor(y in PSet1) rval[y] = PSet1[y];\n\trval.FMTID = [FMTID0, FMTID1]; // TODO: verify FMTID0/1\n\treturn rval;\n}\nfunction write_PropertySetStream(entries, clsid, RE, PIDSI/*:{[key:string|number]:any}*/, entries2/*:?any*/, clsid2/*:?any*/) {\n\tvar hdr = new_buf(entries2 ? 68 : 48);\n\tvar bufs = [hdr];\n\thdr.write_shift(2, 0xFFFE);\n\thdr.write_shift(2, 0x0000); /* TODO: type 1 props */\n\thdr.write_shift(4, 0x32363237);\n\thdr.write_shift(16, CFB.utils.consts.HEADER_CLSID, \"hex\");\n\thdr.write_shift(4, (entries2 ? 2 : 1));\n\thdr.write_shift(16, clsid, \"hex\");\n\thdr.write_shift(4, (entries2 ? 68 : 48));\n\tvar ps0 = write_PropertySet(entries, RE, PIDSI);\n\tbufs.push(ps0);\n\n\tif(entries2) {\n\t\tvar ps1 = write_PropertySet(entries2, null, null);\n\t\thdr.write_shift(16, clsid2, \"hex\");\n\t\thdr.write_shift(4, 68 + ps0.length);\n\t\tbufs.push(ps1);\n\t}\n\treturn bconcat(bufs);\n}\n\nfunction parsenoop2(blob, length) { blob.read_shift(length); return null; }\nfunction writezeroes(n, o) { if(!o) o=new_buf(n); for(var j=0; j<n; ++j) o.write_shift(1, 0); return o; }\n\nfunction parslurp(blob, length, cb) {\n\tvar arr = [], target = blob.l + length;\n\twhile(blob.l < target) arr.push(cb(blob, target - blob.l));\n\tif(target !== blob.l) throw new Error(\"Slurp error\");\n\treturn arr;\n}\n\nfunction parsebool(blob, length/*:number*/) { return blob.read_shift(length) === 0x1; }\nfunction writebool(v/*:any*/, o) { if(!o) o=new_buf(2); o.write_shift(2, +!!v); return o; }\n\nfunction parseuint16(blob/*::, length:?number, opts:?any*/) { return blob.read_shift(2, 'u'); }\nfunction writeuint16(v/*:number*/, o) { if(!o) o=new_buf(2); o.write_shift(2, v); return o; }\nfunction parseuint16a(blob, length/*:: :?number, opts:?any*/) { return parslurp(blob,length,parseuint16);}\n\n/* --- 2.5 Structures --- */\n\n/* [MS-XLS] 2.5.10 Bes (boolean or error) */\nfunction parse_Bes(blob/*::, length*/) {\n\tvar v = blob.read_shift(1), t = blob.read_shift(1);\n\treturn t === 0x01 ? v : v === 0x01;\n}\nfunction write_Bes(v, t/*:string*/, o) {\n\tif(!o) o = new_buf(2);\n\to.write_shift(1, ((t == 'e') ? +v : +!!v));\n\to.write_shift(1, ((t == 'e') ? 1 : 0));\n\treturn o;\n}\n\n/* [MS-XLS] 2.5.240 ShortXLUnicodeString */\nfunction parse_ShortXLUnicodeString(blob, length, opts) {\n\tvar cch = blob.read_shift(opts && opts.biff >= 12 ? 2 : 1);\n\tvar encoding = 'sbcs-cont';\n\tvar cp = current_codepage;\n\tif(opts && opts.biff >= 8) current_codepage = 1200;\n\tif(!opts || opts.biff == 8 ) {\n\t\tvar fHighByte = blob.read_shift(1);\n\t\tif(fHighByte) { encoding = 'dbcs-cont'; }\n\t} else if(opts.biff == 12) {\n\t\tencoding = 'wstr';\n\t}\n\tif(opts.biff >= 2 && opts.biff <= 5) encoding = 'cpstr';\n\tvar o = cch ? blob.read_shift(cch, encoding) : \"\";\n\tcurrent_codepage = cp;\n\treturn o;\n}\n\n/* 2.5.293 XLUnicodeRichExtendedString */\nfunction parse_XLUnicodeRichExtendedString(blob) {\n\tvar cp = current_codepage;\n\tcurrent_codepage = 1200;\n\tvar cch = blob.read_shift(2), flags = blob.read_shift(1);\n\tvar /*fHighByte = flags & 0x1,*/ fExtSt = flags & 0x4, fRichSt = flags & 0x8;\n\tvar width = 1 + (flags & 0x1); // 0x0 -> utf8, 0x1 -> dbcs\n\tvar cRun = 0, cbExtRst;\n\tvar z = {};\n\tif(fRichSt) cRun = blob.read_shift(2);\n\tif(fExtSt) cbExtRst = blob.read_shift(4);\n\tvar encoding = width == 2 ? 'dbcs-cont' : 'sbcs-cont';\n\tvar msg = cch === 0 ? \"\" : blob.read_shift(cch, encoding);\n\tif(fRichSt) blob.l += 4 * cRun; //TODO: parse this\n\tif(fExtSt) blob.l += cbExtRst; //TODO: parse this\n\tz.t = msg;\n\tif(!fRichSt) { z.raw = \"<t>\" + z.t + \"</t>\"; z.r = z.t; }\n\tcurrent_codepage = cp;\n\treturn z;\n}\nfunction write_XLUnicodeRichExtendedString(xlstr/*:: :XLString, opts*/) {\n\tvar str = (xlstr.t||\"\"), nfmts = 1;\n\n\tvar hdr = new_buf(3 + (nfmts > 1 ? 2 : 0));\n\thdr.write_shift(2, str.length);\n\thdr.write_shift(1, (nfmts > 1 ? 0x08 : 0x00) | 0x01);\n\tif(nfmts > 1) hdr.write_shift(2, nfmts);\n\n\tvar otext = new_buf(2 * str.length);\n\totext.write_shift(2 * str.length, str, 'utf16le');\n\n\tvar out = [hdr, otext];\n\n\treturn bconcat(out);\n}\n\n/* 2.5.296 XLUnicodeStringNoCch */\nfunction parse_XLUnicodeStringNoCch(blob, cch, opts) {\n\tvar retval;\n\tif(opts) {\n\t\tif(opts.biff >= 2 && opts.biff <= 5) return blob.read_shift(cch, 'cpstr');\n\t\tif(opts.biff >= 12) return blob.read_shift(cch, 'dbcs-cont');\n\t}\n\tvar fHighByte = blob.read_shift(1);\n\tif(fHighByte===0) { retval = blob.read_shift(cch, 'sbcs-cont'); }\n\telse { retval = blob.read_shift(cch, 'dbcs-cont'); }\n\treturn retval;\n}\n\n/* 2.5.294 XLUnicodeString */\nfunction parse_XLUnicodeString(blob, length, opts) {\n\tvar cch = blob.read_shift(opts && opts.biff == 2 ? 1 : 2);\n\tif(cch === 0) { blob.l++; return \"\"; }\n\treturn parse_XLUnicodeStringNoCch(blob, cch, opts);\n}\n/* BIFF5 override */\nfunction parse_XLUnicodeString2(blob, length, opts) {\n\tif(opts.biff > 5) return parse_XLUnicodeString(blob, length, opts);\n\tvar cch = blob.read_shift(1);\n\tif(cch === 0) { blob.l++; return \"\"; }\n\treturn blob.read_shift(cch, (opts.biff <= 4 || !blob.lens ) ? 'cpstr' : 'sbcs-cont');\n}\n/* TODO: BIFF5 and lower, codepage awareness */\nfunction write_XLUnicodeString(str, opts, o) {\n\tif(!o) o = new_buf(3 + 2 * str.length);\n\to.write_shift(2, str.length);\n\to.write_shift(1, 1);\n\to.write_shift(31, str, 'utf16le');\n\treturn o;\n}\n\n/* [MS-XLS] 2.5.61 ControlInfo */\nfunction parse_ControlInfo(blob/*::, length, opts*/) {\n\tvar flags = blob.read_shift(1);\n\tblob.l++;\n\tvar accel = blob.read_shift(2);\n\tblob.l += 2;\n\treturn [flags, accel];\n}\n\n/* [MS-OSHARED] 2.3.7.6 URLMoniker TODO: flags */\nfunction parse_URLMoniker(blob/*::, length, opts*/) {\n\tvar len = blob.read_shift(4), start = blob.l;\n\tvar extra = false;\n\tif(len > 24) {\n\t\t/* look ahead */\n\t\tblob.l += len - 24;\n\t\tif(blob.read_shift(16) === \"795881f43b1d7f48af2c825dc4852763\") extra = true;\n\t\tblob.l = start;\n\t}\n\tvar url = blob.read_shift((extra?len-24:len)>>1, 'utf16le').replace(chr0,\"\");\n\tif(extra) blob.l += 24;\n\treturn url;\n}\n\n/* [MS-OSHARED] 2.3.7.8 FileMoniker TODO: all fields */\nfunction parse_FileMoniker(blob/*::, length*/) {\n\tvar cAnti = blob.read_shift(2);\n\tvar preamble = \"\"; while(cAnti-- > 0) preamble += \"../\";\n\tvar ansiPath = blob.read_shift(0, 'lpstr-ansi');\n\tblob.l += 2; //var endServer = blob.read_shift(2);\n\tif(blob.read_shift(2) != 0xDEAD) throw new Error(\"Bad FileMoniker\");\n\tvar sz = blob.read_shift(4);\n\tif(sz === 0) return preamble + ansiPath.replace(/\\\\/g,\"/\");\n\tvar bytes = blob.read_shift(4);\n\tif(blob.read_shift(2) != 3) throw new Error(\"Bad FileMoniker\");\n\tvar unicodePath = blob.read_shift(bytes>>1, 'utf16le').replace(chr0,\"\");\n\treturn preamble + unicodePath;\n}\n\n/* [MS-OSHARED] 2.3.7.2 HyperlinkMoniker TODO: all the monikers */\nfunction parse_HyperlinkMoniker(blob, length) {\n\tvar clsid = blob.read_shift(16); length -= 16;\n\tswitch(clsid) {\n\t\tcase \"e0c9ea79f9bace118c8200aa004ba90b\": return parse_URLMoniker(blob, length);\n\t\tcase \"0303000000000000c000000000000046\": return parse_FileMoniker(blob, length);\n\t\tdefault: throw new Error(\"Unsupported Moniker \" + clsid);\n\t}\n}\n\n/* [MS-OSHARED] 2.3.7.9 HyperlinkString */\nfunction parse_HyperlinkString(blob/*::, length*/) {\n\tvar len = blob.read_shift(4);\n\tvar o = len > 0 ? blob.read_shift(len, 'utf16le').replace(chr0, \"\") : \"\";\n\treturn o;\n}\nfunction write_HyperlinkString(str/*:string*/, o) {\n\tif(!o) o = new_buf(6 + str.length * 2);\n\to.write_shift(4, 1 + str.length);\n\tfor(var i = 0; i < str.length; ++i) o.write_shift(2, str.charCodeAt(i));\n\to.write_shift(2, 0);\n\treturn o;\n}\n\n/* [MS-OSHARED] 2.3.7.1 Hyperlink Object */\nfunction parse_Hyperlink(blob, length)/*:Hyperlink*/ {\n\tvar end = blob.l + length;\n\tvar sVer = blob.read_shift(4);\n\tif(sVer !== 2) throw new Error(\"Unrecognized streamVersion: \" + sVer);\n\tvar flags = blob.read_shift(2);\n\tblob.l += 2;\n\tvar displayName, targetFrameName, moniker, oleMoniker, Loc=\"\", guid, fileTime;\n\tif(flags & 0x0010) displayName = parse_HyperlinkString(blob, end - blob.l);\n\tif(flags & 0x0080) targetFrameName = parse_HyperlinkString(blob, end - blob.l);\n\tif((flags & 0x0101) === 0x0101) moniker = parse_HyperlinkString(blob, end - blob.l);\n\tif((flags & 0x0101) === 0x0001) oleMoniker = parse_HyperlinkMoniker(blob, end - blob.l);\n\tif(flags & 0x0008) Loc = parse_HyperlinkString(blob, end - blob.l);\n\tif(flags & 0x0020) guid = blob.read_shift(16);\n\tif(flags & 0x0040) fileTime = parse_FILETIME(blob/*, 8*/);\n\tblob.l = end;\n\tvar target = targetFrameName||moniker||oleMoniker||\"\";\n\tif(target && Loc) target+=\"#\"+Loc;\n\tif(!target) target = \"#\" + Loc;\n\tif((flags & 0x0002) && target.charAt(0) == \"/\" && target.charAt(1) != \"/\") target = \"file://\" + target;\n\tvar out = ({Target:target}/*:any*/);\n\tif(guid) out.guid = guid;\n\tif(fileTime) out.time = fileTime;\n\tif(displayName) out.Tooltip = displayName;\n\treturn out;\n}\nfunction write_Hyperlink(hl) {\n\tvar out = new_buf(512), i = 0;\n\tvar Target = hl.Target;\n\tif(Target.slice(0,7) == \"file://\") Target = Target.slice(7);\n\tvar hashidx = Target.indexOf(\"#\");\n\tvar F = hashidx > -1 ? 0x1f : 0x17;\n\tswitch(Target.charAt(0)) { case \"#\": F=0x1c; break; case \".\": F&=~2; break; }\n\tout.write_shift(4,2); out.write_shift(4, F);\n\tvar data = [8,6815827,6619237,4849780,83]; for(i = 0; i < data.length; ++i) out.write_shift(4, data[i]);\n\tif(F == 0x1C) {\n\t\tTarget = Target.slice(1);\n\t\twrite_HyperlinkString(Target, out);\n\t} else if(F & 0x02) {\n\t\tdata = \"e0 c9 ea 79 f9 ba ce 11 8c 82 00 aa 00 4b a9 0b\".split(\" \");\n\t\tfor(i = 0; i < data.length; ++i) out.write_shift(1, parseInt(data[i], 16));\n\t\tvar Pretarget = hashidx > -1 ? Target.slice(0, hashidx) : Target;\n\t\tout.write_shift(4, 2*(Pretarget.length + 1));\n\t\tfor(i = 0; i < Pretarget.length; ++i) out.write_shift(2, Pretarget.charCodeAt(i));\n\t\tout.write_shift(2, 0);\n\t\tif(F & 0x08) write_HyperlinkString(hashidx > -1 ? Target.slice(hashidx+1): \"\", out);\n\t} else {\n\t\tdata = \"03 03 00 00 00 00 00 00 c0 00 00 00 00 00 00 46\".split(\" \");\n\t\tfor(i = 0; i < data.length; ++i) out.write_shift(1, parseInt(data[i], 16));\n\t\tvar P = 0;\n\t\twhile(Target.slice(P*3,P*3+3)==\"../\"||Target.slice(P*3,P*3+3)==\"..\\\\\") ++P;\n\t\tout.write_shift(2, P);\n\t\tout.write_shift(4, Target.length - 3 * P + 1);\n\t\tfor(i = 0; i < Target.length - 3 * P; ++i) out.write_shift(1, Target.charCodeAt(i + 3 * P) & 0xFF);\n\t\tout.write_shift(1, 0);\n\t\tout.write_shift(2, 0xFFFF);\n\t\tout.write_shift(2, 0xDEAD);\n\t\tfor(i = 0; i < 6; ++i) out.write_shift(4, 0);\n\t}\n\treturn out.slice(0, out.l);\n}\n\n/* 2.5.178 LongRGBA */\nfunction parse_LongRGBA(blob/*::, length*/) { var r = blob.read_shift(1), g = blob.read_shift(1), b = blob.read_shift(1), a = blob.read_shift(1); return [r,g,b,a]; }\n\n/* 2.5.177 LongRGB */\nfunction parse_LongRGB(blob, length) { var x = parse_LongRGBA(blob, length); x[3] = 0; return x; }\n\n\n/* [MS-XLS] 2.5.19 */\nfunction parse_XLSCell(blob/*::, length*/)/*:Cell*/ {\n\tvar rw = blob.read_shift(2); // 0-indexed\n\tvar col = blob.read_shift(2);\n\tvar ixfe = blob.read_shift(2);\n\treturn ({r:rw, c:col, ixfe:ixfe}/*:any*/);\n}\nfunction write_XLSCell(R/*:number*/, C/*:number*/, ixfe/*:?number*/, o) {\n\tif(!o) o = new_buf(6);\n\to.write_shift(2, R);\n\to.write_shift(2, C);\n\to.write_shift(2, ixfe||0);\n\treturn o;\n}\n\n/* [MS-XLS] 2.5.134 */\nfunction parse_frtHeader(blob) {\n\tvar rt = blob.read_shift(2);\n\tvar flags = blob.read_shift(2); // TODO: parse these flags\n\tblob.l += 8;\n\treturn {type: rt, flags: flags};\n}\n\n\n\nfunction parse_OptXLUnicodeString(blob, length, opts) { return length === 0 ? \"\" : parse_XLUnicodeString2(blob, length, opts); }\n\n/* [MS-XLS] 2.5.344 */\nfunction parse_XTI(blob, length, opts) {\n\tvar w = opts.biff > 8 ? 4 : 2;\n\tvar iSupBook = blob.read_shift(w), itabFirst = blob.read_shift(w,'i'), itabLast = blob.read_shift(w,'i');\n\treturn [iSupBook, itabFirst, itabLast];\n}\n\n/* [MS-XLS] 2.5.218 */\nfunction parse_RkRec(blob) {\n\tvar ixfe = blob.read_shift(2);\n\tvar RK = parse_RkNumber(blob);\n\treturn [ixfe, RK];\n}\n\n/* [MS-XLS] 2.5.1 */\nfunction parse_AddinUdf(blob, length, opts) {\n\tblob.l += 4; length -= 4;\n\tvar l = blob.l + length;\n\tvar udfName = parse_ShortXLUnicodeString(blob, length, opts);\n\tvar cb = blob.read_shift(2);\n\tl -= blob.l;\n\tif(cb !== l) throw new Error(\"Malformed AddinUdf: padding = \" + l + \" != \" + cb);\n\tblob.l += cb;\n\treturn udfName;\n}\n\n/* [MS-XLS] 2.5.209 TODO: Check sizes */\nfunction parse_Ref8U(blob/*::, length*/) {\n\tvar rwFirst = blob.read_shift(2);\n\tvar rwLast = blob.read_shift(2);\n\tvar colFirst = blob.read_shift(2);\n\tvar colLast = blob.read_shift(2);\n\treturn {s:{c:colFirst, r:rwFirst}, e:{c:colLast,r:rwLast}};\n}\nfunction write_Ref8U(r/*:Range*/, o) {\n\tif(!o) o = new_buf(8);\n\to.write_shift(2, r.s.r);\n\to.write_shift(2, r.e.r);\n\to.write_shift(2, r.s.c);\n\to.write_shift(2, r.e.c);\n\treturn o;\n}\n\n/* [MS-XLS] 2.5.211 */\nfunction parse_RefU(blob/*::, length*/) {\n\tvar rwFirst = blob.read_shift(2);\n\tvar rwLast = blob.read_shift(2);\n\tvar colFirst = blob.read_shift(1);\n\tvar colLast = blob.read_shift(1);\n\treturn {s:{c:colFirst, r:rwFirst}, e:{c:colLast,r:rwLast}};\n}\n\n/* [MS-XLS] 2.5.207 */\nvar parse_Ref = parse_RefU;\n\n/* [MS-XLS] 2.5.143 */\nfunction parse_FtCmo(blob/*::, length*/) {\n\tblob.l += 4;\n\tvar ot = blob.read_shift(2);\n\tvar id = blob.read_shift(2);\n\tvar flags = blob.read_shift(2);\n\tblob.l+=12;\n\treturn [id, ot, flags];\n}\n\n/* [MS-XLS] 2.5.149 */\nfunction parse_FtNts(blob) {\n\tvar out = {};\n\tblob.l += 4;\n\tblob.l += 16; // GUID TODO\n\tout.fSharedNote = blob.read_shift(2);\n\tblob.l += 4;\n\treturn out;\n}\n\n/* [MS-XLS] 2.5.142 */\nfunction parse_FtCf(blob) {\n\tvar out = {};\n\tblob.l += 4;\n\tblob.cf = blob.read_shift(2);\n\treturn out;\n}\n\n/* [MS-XLS] 2.5.140 - 2.5.154 and friends */\nfunction parse_FtSkip(blob) { blob.l += 2; blob.l += blob.read_shift(2); }\nvar FtTab = {\n\t/*::[*/0x00/*::]*/: parse_FtSkip,      /* FtEnd */\n\t/*::[*/0x04/*::]*/: parse_FtSkip,      /* FtMacro */\n\t/*::[*/0x05/*::]*/: parse_FtSkip,      /* FtButton */\n\t/*::[*/0x06/*::]*/: parse_FtSkip,      /* FtGmo */\n\t/*::[*/0x07/*::]*/: parse_FtCf,        /* FtCf */\n\t/*::[*/0x08/*::]*/: parse_FtSkip,      /* FtPioGrbit */\n\t/*::[*/0x09/*::]*/: parse_FtSkip,      /* FtPictFmla */\n\t/*::[*/0x0A/*::]*/: parse_FtSkip,      /* FtCbls */\n\t/*::[*/0x0B/*::]*/: parse_FtSkip,      /* FtRbo */\n\t/*::[*/0x0C/*::]*/: parse_FtSkip,      /* FtSbs */\n\t/*::[*/0x0D/*::]*/: parse_FtNts,       /* FtNts */\n\t/*::[*/0x0E/*::]*/: parse_FtSkip,      /* FtSbsFmla */\n\t/*::[*/0x0F/*::]*/: parse_FtSkip,      /* FtGboData */\n\t/*::[*/0x10/*::]*/: parse_FtSkip,      /* FtEdoData */\n\t/*::[*/0x11/*::]*/: parse_FtSkip,      /* FtRboData */\n\t/*::[*/0x12/*::]*/: parse_FtSkip,      /* FtCblsData */\n\t/*::[*/0x13/*::]*/: parse_FtSkip,      /* FtLbsData */\n\t/*::[*/0x14/*::]*/: parse_FtSkip,      /* FtCblsFmla */\n\t/*::[*/0x15/*::]*/: parse_FtCmo\n};\nfunction parse_FtArray(blob, length/*::, ot*/) {\n\tvar tgt = blob.l + length;\n\tvar fts = [];\n\twhile(blob.l < tgt) {\n\t\tvar ft = blob.read_shift(2);\n\t\tblob.l-=2;\n\t\ttry {\n\t\t\tfts.push(FtTab[ft](blob, tgt - blob.l));\n\t\t} catch(e) { blob.l = tgt; return fts; }\n\t}\n\tif(blob.l != tgt) blob.l = tgt; //throw new Error(\"bad Object Ft-sequence\");\n\treturn fts;\n}\n\n/* --- 2.4 Records --- */\n\n/* [MS-XLS] 2.4.21 */\nfunction parse_BOF(blob, length) {\n\tvar o = {BIFFVer:0, dt:0};\n\to.BIFFVer = blob.read_shift(2); length -= 2;\n\tif(length >= 2) { o.dt = blob.read_shift(2); blob.l -= 2; }\n\tswitch(o.BIFFVer) {\n\t\tcase 0x0600: /* BIFF8 */\n\t\tcase 0x0500: /* BIFF5 */\n\t\tcase 0x0400: /* BIFF4 */\n\t\tcase 0x0300: /* BIFF3 */\n\t\tcase 0x0200: /* BIFF2 */\n\t\tcase 0x0002: case 0x0007: /* BIFF2 */\n\t\t\tbreak;\n\t\tdefault: if(length > 6) throw new Error(\"Unexpected BIFF Ver \" + o.BIFFVer);\n\t}\n\n\tblob.read_shift(length);\n\treturn o;\n}\nfunction write_BOF(wb/*:Workbook*/, t/*:number*/, o) {\n\tvar h = 0x0600, w = 16;\n\tswitch(o.bookType) {\n\t\tcase 'biff8': break;\n\t\tcase 'biff5': h = 0x0500; w = 8; break;\n\t\tcase 'biff4': h = 0x0004; w = 6; break;\n\t\tcase 'biff3': h = 0x0003; w = 6; break;\n\t\tcase 'biff2': h = 0x0002; w = 4; break;\n\t\tcase 'xla': break;\n\t\tdefault: throw new Error(\"unsupported BIFF version\");\n\t}\n\tvar out = new_buf(w);\n\tout.write_shift(2, h);\n\tout.write_shift(2, t);\n\tif(w > 4) out.write_shift(2, 0x7262);\n\tif(w > 6) out.write_shift(2, 0x07CD);\n\tif(w > 8) {\n\t\tout.write_shift(2, 0xC009);\n\t\tout.write_shift(2, 0x0001);\n\t\tout.write_shift(2, 0x0706);\n\t\tout.write_shift(2, 0x0000);\n\t}\n\treturn out;\n}\n\n\n/* [MS-XLS] 2.4.146 */\nfunction parse_InterfaceHdr(blob, length) {\n\tif(length === 0) return 0x04b0;\n\tif((blob.read_shift(2))!==0x04b0){/* empty */}\n\treturn 0x04b0;\n}\n\n\n/* [MS-XLS] 2.4.349 */\nfunction parse_WriteAccess(blob, length, opts) {\n\tif(opts.enc) { blob.l += length; return \"\"; }\n\tvar l = blob.l;\n\t// TODO: make sure XLUnicodeString doesnt overrun\n\tvar UserName = parse_XLUnicodeString2(blob, 0, opts);\n\tblob.read_shift(length + l - blob.l);\n\treturn UserName;\n}\nfunction write_WriteAccess(s/*:string*/, opts) {\n\tvar b8 = !opts || opts.biff == 8;\n\tvar o = new_buf(b8 ? 112 : 54);\n\to.write_shift(opts.biff == 8 ? 2 : 1, 7);\n\tif(b8) o.write_shift(1, 0);\n\to.write_shift(4, 0x33336853);\n\to.write_shift(4, (0x00534A74 | (b8 ? 0 : 0x20000000)));\n\twhile(o.l < o.length) o.write_shift(1, (b8 ? 0 : 32));\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.351 */\nfunction parse_WsBool(blob, length, opts) {\n\tvar flags = opts && opts.biff == 8 || length == 2 ? blob.read_shift(2) : (blob.l += length, 0);\n\treturn { fDialog: flags & 0x10, fBelow: flags & 0x40, fRight: flags & 0x80 };\n}\n\n/* [MS-XLS] 2.4.28 */\nfunction parse_BoundSheet8(blob, length, opts) {\n\tvar pos = blob.read_shift(4);\n\tvar hidden = blob.read_shift(1) & 0x03;\n\tvar dt = blob.read_shift(1);\n\tswitch(dt) {\n\t\tcase 0: dt = 'Worksheet'; break;\n\t\tcase 1: dt = 'Macrosheet'; break;\n\t\tcase 2: dt = 'Chartsheet'; break;\n\t\tcase 6: dt = 'VBAModule'; break;\n\t}\n\tvar name = parse_ShortXLUnicodeString(blob, 0, opts);\n\tif(name.length === 0) name = \"Sheet1\";\n\treturn { pos:pos, hs:hidden, dt:dt, name:name };\n}\nfunction write_BoundSheet8(data, opts) {\n\tvar w = (!opts || opts.biff >= 8 ? 2 : 1);\n\tvar o = new_buf(8 + w * data.name.length);\n\to.write_shift(4, data.pos);\n\to.write_shift(1, data.hs || 0);\n\to.write_shift(1, data.dt);\n\to.write_shift(1, data.name.length);\n\tif(opts.biff >= 8) o.write_shift(1, 1);\n\to.write_shift(w * data.name.length, data.name, opts.biff < 8 ? 'sbcs' : 'utf16le');\n\tvar out = o.slice(0, o.l);\n\tout.l = o.l; return out;\n}\n\n/* [MS-XLS] 2.4.265 TODO */\nfunction parse_SST(blob, length)/*:SST*/ {\n\tvar end = blob.l + length;\n\tvar cnt = blob.read_shift(4);\n\tvar ucnt = blob.read_shift(4);\n\tvar strs/*:SST*/ = ([]/*:any*/);\n\tfor(var i = 0; i != ucnt && blob.l < end; ++i) {\n\t\tstrs.push(parse_XLUnicodeRichExtendedString(blob));\n\t}\n\tstrs.Count = cnt; strs.Unique = ucnt;\n\treturn strs;\n}\nfunction write_SST(sst, opts) {\n\tvar header = new_buf(8);\n\theader.write_shift(4, sst.Count);\n\theader.write_shift(4, sst.Unique);\n\tvar strs = [];\n\tfor(var j = 0; j < sst.length; ++j) strs[j] = write_XLUnicodeRichExtendedString(sst[j], opts);\n\tvar o = bconcat([header].concat(strs));\n\t/*::(*/o/*:: :any)*/.parts = [header.length].concat(strs.map(function(str) { return str.length; }));\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.107 */\nfunction parse_ExtSST(blob, length) {\n\tvar extsst = {};\n\textsst.dsst = blob.read_shift(2);\n\tblob.l += length-2;\n\treturn extsst;\n}\n\n\n/* [MS-XLS] 2.4.221 TODO: check BIFF2-4 */\nfunction parse_Row(blob) {\n\tvar z = ({}/*:any*/);\n\tz.r = blob.read_shift(2);\n\tz.c = blob.read_shift(2);\n\tz.cnt = blob.read_shift(2) - z.c;\n\tvar miyRw = blob.read_shift(2);\n\tblob.l += 4; // reserved(2), unused(2)\n\tvar flags = blob.read_shift(1); // various flags\n\tblob.l += 3; // reserved(8), ixfe(12), flags(4)\n\tif(flags & 0x07) z.level = flags & 0x07;\n\t// collapsed: flags & 0x10\n\tif(flags & 0x20) z.hidden = true;\n\tif(flags & 0x40) z.hpt = miyRw / 20;\n\treturn z;\n}\n\n\n/* [MS-XLS] 2.4.125 */\nfunction parse_ForceFullCalculation(blob) {\n\tvar header = parse_frtHeader(blob);\n\tif(header.type != 0x08A3) throw new Error(\"Invalid Future Record \" + header.type);\n\tvar fullcalc = blob.read_shift(4);\n\treturn fullcalc !== 0x0;\n}\n\n\n\n\n\n/* [MS-XLS] 2.4.215 rt */\nfunction parse_RecalcId(blob) {\n\tblob.read_shift(2);\n\treturn blob.read_shift(4);\n}\n\n/* [MS-XLS] 2.4.87 */\nfunction parse_DefaultRowHeight(blob, length, opts) {\n\tvar f = 0;\n\tif(!(opts && opts.biff == 2)) {\n\t\tf = blob.read_shift(2);\n\t}\n\tvar miyRw = blob.read_shift(2);\n\tif((opts && opts.biff == 2)) {\n\t\tf = 1 - (miyRw >> 15); miyRw &= 0x7fff;\n\t}\n\tvar fl = {Unsynced:f&1,DyZero:(f&2)>>1,ExAsc:(f&4)>>2,ExDsc:(f&8)>>3};\n\treturn [fl, miyRw];\n}\n\n/* [MS-XLS] 2.4.345 TODO */\nfunction parse_Window1(blob) {\n\tvar xWn = blob.read_shift(2), yWn = blob.read_shift(2), dxWn = blob.read_shift(2), dyWn = blob.read_shift(2);\n\tvar flags = blob.read_shift(2), iTabCur = blob.read_shift(2), iTabFirst = blob.read_shift(2);\n\tvar ctabSel = blob.read_shift(2), wTabRatio = blob.read_shift(2);\n\treturn { Pos: [xWn, yWn], Dim: [dxWn, dyWn], Flags: flags, CurTab: iTabCur,\n\t\tFirstTab: iTabFirst, Selected: ctabSel, TabRatio: wTabRatio };\n}\nfunction write_Window1(/*::opts*/) {\n\tvar o = new_buf(18);\n\to.write_shift(2, 0);\n\to.write_shift(2, 0);\n\to.write_shift(2, 0x7260);\n\to.write_shift(2, 0x44c0);\n\to.write_shift(2, 0x38);\n\to.write_shift(2, 0);\n\to.write_shift(2, 0);\n\to.write_shift(2, 1);\n\to.write_shift(2, 0x01f4);\n\treturn o;\n}\n/* [MS-XLS] 2.4.346 TODO */\nfunction parse_Window2(blob, length, opts) {\n\tif(opts && opts.biff >= 2 && opts.biff < 5) return {};\n\tvar f = blob.read_shift(2);\n\treturn { RTL: f & 0x40 };\n}\nfunction write_Window2(view) {\n\tvar o = new_buf(18), f = 0x6b6;\n\tif(view && view.RTL) f |= 0x40;\n\to.write_shift(2, f);\n\to.write_shift(4, 0);\n\to.write_shift(4, 64);\n\to.write_shift(4, 0);\n\to.write_shift(4, 0);\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.189 TODO */\nfunction parse_Pane(/*blob, length, opts*/) {\n}\n\n/* [MS-XLS] 2.4.122 TODO */\nfunction parse_Font(blob, length, opts) {\n\tvar o/*:any*/ = {\n\t\tdyHeight: blob.read_shift(2),\n\t\tfl: blob.read_shift(2)\n\t};\n\tswitch((opts && opts.biff) || 8) {\n\t\tcase 2: break;\n\t\tcase 3: case 4: blob.l += 2; break;\n\t\tdefault: blob.l += 10; break;\n\t}\n\to.name = parse_ShortXLUnicodeString(blob, 0, opts);\n\treturn o;\n}\nfunction write_Font(data, opts) {\n\tvar name = data.name || \"Arial\";\n\tvar b5 = (opts && (opts.biff == 5)), w = (b5 ? (15 + name.length) : (16 + 2 * name.length));\n\tvar o = new_buf(w);\n\to.write_shift(2, (data.sz || 12) * 20);\n\to.write_shift(4, 0);\n\to.write_shift(2, 400);\n\to.write_shift(4, 0);\n\to.write_shift(2, 0);\n\to.write_shift(1, name.length);\n\tif(!b5) o.write_shift(1, 1);\n\to.write_shift((b5 ? 1 : 2) * name.length, name, (b5 ? \"sbcs\" : \"utf16le\"));\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.149 */\nfunction parse_LabelSst(blob) {\n\tvar cell = parse_XLSCell(blob);\n\tcell.isst = blob.read_shift(4);\n\treturn cell;\n}\nfunction write_LabelSst(R/*:number*/, C/*:number*/, v/*:number*/, os/*:number*/ /*::, opts*/) {\n\tvar o = new_buf(10);\n\twrite_XLSCell(R, C, os, o);\n\to.write_shift(4, v);\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.148 */\nfunction parse_Label(blob, length, opts) {\n\tif(opts.biffguess && opts.biff == 2) opts.biff = 5;\n\tvar target = blob.l + length;\n\tvar cell = parse_XLSCell(blob, 6);\n\tif(opts.biff == 2) blob.l++;\n\tvar str = parse_XLUnicodeString(blob, target - blob.l, opts);\n\tcell.val = str;\n\treturn cell;\n}\nfunction write_Label(R/*:number*/, C/*:number*/, v/*:string*/, os/*:number*/, opts) {\n\tvar b8 = !opts || opts.biff == 8;\n\tvar o = new_buf(6 + 2 + (+b8) + (1 + b8) * v.length);\n\twrite_XLSCell(R, C, os, o);\n\to.write_shift(2, v.length);\n\tif(b8) o.write_shift(1, 1);\n\to.write_shift((1 + b8) * v.length, v, b8 ? 'utf16le' : 'sbcs');\n\treturn o;\n}\n\n\n/* [MS-XLS] 2.4.126 Number Formats */\nfunction parse_Format(blob, length, opts) {\n\tvar numFmtId = blob.read_shift(2);\n\tvar fmtstr = parse_XLUnicodeString2(blob, 0, opts);\n\treturn [numFmtId, fmtstr];\n}\nfunction write_Format(i/*:number*/, f/*:string*/, opts, o) {\n\tvar b5 = (opts && (opts.biff == 5));\n\tif(!o) o = new_buf(b5 ? (3 + f.length) : (5 + 2 * f.length));\n\to.write_shift(2, i);\n\to.write_shift((b5 ? 1 : 2), f.length);\n\tif(!b5) o.write_shift(1, 1);\n\to.write_shift((b5 ? 1 : 2) * f.length, f, (b5 ? 'sbcs' : 'utf16le'));\n\tvar out = (o.length > o.l) ? o.slice(0, o.l) : o;\n\tif(out.l == null) out.l = out.length;\n\treturn out;\n}\nvar parse_BIFF2Format = parse_XLUnicodeString2;\n\n/* [MS-XLS] 2.4.90 */\nfunction parse_Dimensions(blob, length, opts) {\n\tvar end = blob.l + length;\n\tvar w = opts.biff == 8 || !opts.biff ? 4 : 2;\n\tvar r = blob.read_shift(w), R = blob.read_shift(w);\n\tvar c = blob.read_shift(2), C = blob.read_shift(2);\n\tblob.l = end;\n\treturn {s: {r:r, c:c}, e: {r:R, c:C}};\n}\nfunction write_Dimensions(range, opts) {\n\tvar w = opts.biff == 8 || !opts.biff ? 4 : 2;\n\tvar o = new_buf(2*w + 6);\n\to.write_shift(w, range.s.r);\n\to.write_shift(w, range.e.r + 1);\n\to.write_shift(2, range.s.c);\n\to.write_shift(2, range.e.c + 1);\n\to.write_shift(2, 0);\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.220 */\nfunction parse_RK(blob) {\n\tvar rw = blob.read_shift(2), col = blob.read_shift(2);\n\tvar rkrec = parse_RkRec(blob);\n\treturn {r:rw, c:col, ixfe:rkrec[0], rknum:rkrec[1]};\n}\n\n/* [MS-XLS] 2.4.175 */\nfunction parse_MulRk(blob, length) {\n\tvar target = blob.l + length - 2;\n\tvar rw = blob.read_shift(2), col = blob.read_shift(2);\n\tvar rkrecs = [];\n\twhile(blob.l < target) rkrecs.push(parse_RkRec(blob));\n\tif(blob.l !== target) throw new Error(\"MulRK read error\");\n\tvar lastcol = blob.read_shift(2);\n\tif(rkrecs.length != lastcol - col + 1) throw new Error(\"MulRK length mismatch\");\n\treturn {r:rw, c:col, C:lastcol, rkrec:rkrecs};\n}\n/* [MS-XLS] 2.4.174 */\nfunction parse_MulBlank(blob, length) {\n\tvar target = blob.l + length - 2;\n\tvar rw = blob.read_shift(2), col = blob.read_shift(2);\n\tvar ixfes = [];\n\twhile(blob.l < target) ixfes.push(blob.read_shift(2));\n\tif(blob.l !== target) throw new Error(\"MulBlank read error\");\n\tvar lastcol = blob.read_shift(2);\n\tif(ixfes.length != lastcol - col + 1) throw new Error(\"MulBlank length mismatch\");\n\treturn {r:rw, c:col, C:lastcol, ixfe:ixfes};\n}\n\n/* [MS-XLS] 2.5.20 2.5.249 TODO: interpret values here */\nfunction parse_CellStyleXF(blob, length, style, opts) {\n\tvar o = {};\n\tvar a = blob.read_shift(4), b = blob.read_shift(4);\n\tvar c = blob.read_shift(4), d = blob.read_shift(2);\n\to.patternType = XLSFillPattern[c >> 26];\n\n\tif(!opts.cellStyles) return o;\n\to.alc = a & 0x07;\n\to.fWrap = (a >> 3) & 0x01;\n\to.alcV = (a >> 4) & 0x07;\n\to.fJustLast = (a >> 7) & 0x01;\n\to.trot = (a >> 8) & 0xFF;\n\to.cIndent = (a >> 16) & 0x0F;\n\to.fShrinkToFit = (a >> 20) & 0x01;\n\to.iReadOrder = (a >> 22) & 0x02;\n\to.fAtrNum = (a >> 26) & 0x01;\n\to.fAtrFnt = (a >> 27) & 0x01;\n\to.fAtrAlc = (a >> 28) & 0x01;\n\to.fAtrBdr = (a >> 29) & 0x01;\n\to.fAtrPat = (a >> 30) & 0x01;\n\to.fAtrProt = (a >> 31) & 0x01;\n\n\to.dgLeft = b & 0x0F;\n\to.dgRight = (b >> 4) & 0x0F;\n\to.dgTop = (b >> 8) & 0x0F;\n\to.dgBottom = (b >> 12) & 0x0F;\n\to.icvLeft = (b >> 16) & 0x7F;\n\to.icvRight = (b >> 23) & 0x7F;\n\to.grbitDiag = (b >> 30) & 0x03;\n\n\to.icvTop = c & 0x7F;\n\to.icvBottom = (c >> 7) & 0x7F;\n\to.icvDiag = (c >> 14) & 0x7F;\n\to.dgDiag = (c >> 21) & 0x0F;\n\n\to.icvFore = d & 0x7F;\n\to.icvBack = (d >> 7) & 0x7F;\n\to.fsxButton = (d >> 14) & 0x01;\n\treturn o;\n}\n//function parse_CellXF(blob, length, opts) {return parse_CellStyleXF(blob,length,0, opts);}\n//function parse_StyleXF(blob, length, opts) {return parse_CellStyleXF(blob,length,1, opts);}\n\n/* [MS-XLS] 2.4.353 TODO: actually do this right */\nfunction parse_XF(blob, length, opts) {\n\tvar o = {};\n\to.ifnt = blob.read_shift(2); o.numFmtId = blob.read_shift(2); o.flags = blob.read_shift(2);\n\to.fStyle = (o.flags >> 2) & 0x01;\n\tlength -= 6;\n\to.data = parse_CellStyleXF(blob, length, o.fStyle, opts);\n\treturn o;\n}\nfunction write_XF(data, ixfeP, opts, o) {\n\tvar b5 = (opts && (opts.biff == 5));\n\tif(!o) o = new_buf(b5 ? 16 : 20);\n\to.write_shift(2, 0);\n\tif(data.style) {\n\t\to.write_shift(2, (data.numFmtId||0));\n\t\to.write_shift(2, 0xFFF4);\n\t} else {\n\t\to.write_shift(2, (data.numFmtId||0));\n\t\to.write_shift(2, (ixfeP<<4));\n\t}\n\tvar f = 0;\n\tif(data.numFmtId > 0 && b5) f |= 0x0400;\n\to.write_shift(4, f);\n\to.write_shift(4, 0);\n\tif(!b5) o.write_shift(4, 0);\n\to.write_shift(2, 0);\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.134 */\nfunction parse_Guts(blob) {\n\tblob.l += 4;\n\tvar out = [blob.read_shift(2), blob.read_shift(2)];\n\tif(out[0] !== 0) out[0]--;\n\tif(out[1] !== 0) out[1]--;\n\tif(out[0] > 7 || out[1] > 7) throw new Error(\"Bad Gutters: \" + out.join(\"|\"));\n\treturn out;\n}\nfunction write_Guts(guts/*:Array<number>*/) {\n\tvar o = new_buf(8);\n\to.write_shift(4, 0);\n\to.write_shift(2, guts[0] ? guts[0] + 1 : 0);\n\to.write_shift(2, guts[1] ? guts[1] + 1 : 0);\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.24 */\nfunction parse_BoolErr(blob, length, opts) {\n\tvar cell = parse_XLSCell(blob, 6);\n\tif(opts.biff == 2 || length == 9) ++blob.l;\n\tvar val = parse_Bes(blob, 2);\n\tcell.val = val;\n\tcell.t = (val === true || val === false) ? 'b' : 'e';\n\treturn cell;\n}\nfunction write_BoolErr(R/*:number*/, C/*:number*/, v, os/*:number*/, opts, t/*:string*/) {\n\tvar o = new_buf(8);\n\twrite_XLSCell(R, C, os, o);\n\twrite_Bes(v, t, o);\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.180 Number */\nfunction parse_Number(blob, length, opts) {\n\tif(opts.biffguess && opts.biff == 2) opts.biff = 5;\n\tvar cell = parse_XLSCell(blob, 6);\n\tvar xnum = parse_Xnum(blob, 8);\n\tcell.val = xnum;\n\treturn cell;\n}\nfunction write_Number(R/*:number*/, C/*:number*/, v, os/*:: :number, opts*/) {\n\tvar o = new_buf(14);\n\twrite_XLSCell(R, C, os, o);\n\twrite_Xnum(v, o);\n\treturn o;\n}\n\nvar parse_XLHeaderFooter = parse_OptXLUnicodeString; // TODO: parse 2.4.136\n\n/* [MS-XLS] 2.4.271 */\nfunction parse_SupBook(blob, length, opts) {\n\tvar end = blob.l + length;\n\tvar ctab = blob.read_shift(2);\n\tvar cch = blob.read_shift(2);\n\topts.sbcch = cch;\n\tif(cch == 0x0401 || cch == 0x3A01) return [cch, ctab];\n\tif(cch < 0x01 || cch >0xff) throw new Error(\"Unexpected SupBook type: \"+cch);\n\tvar virtPath = parse_XLUnicodeStringNoCch(blob, cch);\n\t/* TODO: 2.5.277 Virtual Path */\n\tvar rgst = [];\n\twhile(end > blob.l) rgst.push(parse_XLUnicodeString(blob));\n\treturn [cch, ctab, virtPath, rgst];\n}\n\n/* [MS-XLS] 2.4.105 TODO */\nfunction parse_ExternName(blob, length, opts) {\n\tvar flags = blob.read_shift(2);\n\tvar body;\n\tvar o = ({\n\t\tfBuiltIn: flags & 0x01,\n\t\tfWantAdvise: (flags >>> 1) & 0x01,\n\t\tfWantPict: (flags >>> 2) & 0x01,\n\t\tfOle: (flags >>> 3) & 0x01,\n\t\tfOleLink: (flags >>> 4) & 0x01,\n\t\tcf: (flags >>> 5) & 0x3FF,\n\t\tfIcon: flags >>> 15 & 0x01\n\t}/*:any*/);\n\tif(opts.sbcch === 0x3A01) body = parse_AddinUdf(blob, length-2, opts);\n\t//else throw new Error(\"unsupported SupBook cch: \" + opts.sbcch);\n\to.body = body || blob.read_shift(length-2);\n\tif(typeof body === \"string\") o.Name = body;\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.150 TODO */\nvar XLSLblBuiltIn = [\n\t\"_xlnm.Consolidate_Area\",\n\t\"_xlnm.Auto_Open\",\n\t\"_xlnm.Auto_Close\",\n\t\"_xlnm.Extract\",\n\t\"_xlnm.Database\",\n\t\"_xlnm.Criteria\",\n\t\"_xlnm.Print_Area\",\n\t\"_xlnm.Print_Titles\",\n\t\"_xlnm.Recorder\",\n\t\"_xlnm.Data_Form\",\n\t\"_xlnm.Auto_Activate\",\n\t\"_xlnm.Auto_Deactivate\",\n\t\"_xlnm.Sheet_Title\",\n\t\"_xlnm._FilterDatabase\"\n];\nfunction parse_Lbl(blob, length, opts) {\n\tvar target = blob.l + length;\n\tvar flags = blob.read_shift(2);\n\tvar chKey = blob.read_shift(1);\n\tvar cch = blob.read_shift(1);\n\tvar cce = blob.read_shift(opts && opts.biff == 2 ? 1 : 2);\n\tvar itab = 0;\n\tif(!opts || opts.biff >= 5) {\n\t\tif(opts.biff != 5) blob.l += 2;\n\t\titab = blob.read_shift(2);\n\t\tif(opts.biff == 5) blob.l += 2;\n\t\tblob.l += 4;\n\t}\n\tvar name = parse_XLUnicodeStringNoCch(blob, cch, opts);\n\tif(flags & 0x20) name = XLSLblBuiltIn[name.charCodeAt(0)];\n\tvar npflen = target - blob.l; if(opts && opts.biff == 2) --npflen;\n\t/*jshint -W018 */\n\tvar rgce = (target == blob.l || cce === 0 || !(npflen > 0)) ? [] : parse_NameParsedFormula(blob, npflen, opts, cce);\n\t/*jshint +W018 */\n\treturn {\n\t\tchKey: chKey,\n\t\tName: name,\n\t\titab: itab,\n\t\trgce: rgce\n\t};\n}\n\n/* [MS-XLS] 2.4.106 TODO: verify filename encoding */\nfunction parse_ExternSheet(blob, length, opts) {\n\tif(opts.biff < 8) return parse_BIFF5ExternSheet(blob, length, opts);\n\tvar o = [], target = blob.l + length, len = blob.read_shift(opts.biff > 8 ? 4 : 2);\n\twhile(len-- !== 0) o.push(parse_XTI(blob, opts.biff > 8 ? 12 : 6, opts));\n\t\t// [iSupBook, itabFirst, itabLast];\n\tif(blob.l != target) throw new Error(\"Bad ExternSheet: \" + blob.l + \" != \" + target);\n\treturn o;\n}\nfunction parse_BIFF5ExternSheet(blob, length, opts) {\n\tif(blob[blob.l + 1] == 0x03) blob[blob.l]++;\n\tvar o = parse_ShortXLUnicodeString(blob, length, opts);\n\treturn o.charCodeAt(0) == 0x03 ? o.slice(1) : o;\n}\n\n/* [MS-XLS] 2.4.176 TODO: check older biff */\nfunction parse_NameCmt(blob, length, opts) {\n\tif(opts.biff < 8) { blob.l += length; return; }\n\tvar cchName = blob.read_shift(2);\n\tvar cchComment = blob.read_shift(2);\n\tvar name = parse_XLUnicodeStringNoCch(blob, cchName, opts);\n\tvar comment = parse_XLUnicodeStringNoCch(blob, cchComment, opts);\n\treturn [name, comment];\n}\n\n/* [MS-XLS] 2.4.260 */\nfunction parse_ShrFmla(blob, length, opts) {\n\tvar ref = parse_RefU(blob, 6);\n\tblob.l++;\n\tvar cUse = blob.read_shift(1);\n\tlength -= 8;\n\treturn [parse_SharedParsedFormula(blob, length, opts), cUse, ref];\n}\n\n/* [MS-XLS] 2.4.4 TODO */\nfunction parse_Array(blob, length, opts) {\n\tvar ref = parse_Ref(blob, 6);\n\t/* TODO: fAlwaysCalc */\n\tswitch(opts.biff) {\n\t\tcase 2: blob.l ++; length -= 7; break;\n\t\tcase 3: case 4: blob.l += 2; length -= 8; break;\n\t\tdefault: blob.l += 6; length -= 12;\n\t}\n\treturn [ref, parse_ArrayParsedFormula(blob, length, opts, ref)];\n}\n\n/* [MS-XLS] 2.4.173 */\nfunction parse_MTRSettings(blob) {\n\tvar fMTREnabled = blob.read_shift(4) !== 0x00;\n\tvar fUserSetThreadCount = blob.read_shift(4) !== 0x00;\n\tvar cUserThreadCount = blob.read_shift(4);\n\treturn [fMTREnabled, fUserSetThreadCount, cUserThreadCount];\n}\n\n/* [MS-XLS] 2.5.186 TODO: BIFF5 */\nfunction parse_NoteSh(blob, length, opts) {\n\tif(opts.biff < 8) return;\n\tvar row = blob.read_shift(2), col = blob.read_shift(2);\n\tvar flags = blob.read_shift(2), idObj = blob.read_shift(2);\n\tvar stAuthor = parse_XLUnicodeString2(blob, 0, opts);\n\tif(opts.biff < 8) blob.read_shift(1);\n\treturn [{r:row,c:col}, stAuthor, idObj, flags];\n}\n\n/* [MS-XLS] 2.4.179 */\nfunction parse_Note(blob, length, opts) {\n\t/* TODO: Support revisions */\n\treturn parse_NoteSh(blob, length, opts);\n}\n\n/* [MS-XLS] 2.4.168 */\nfunction parse_MergeCells(blob, length)/*:Array<Range>*/ {\n\tvar merges/*:Array<Range>*/ = [];\n\tvar cmcs = blob.read_shift(2);\n\twhile (cmcs--) merges.push(parse_Ref8U(blob,length));\n\treturn merges;\n}\nfunction write_MergeCells(merges/*:Array<Range>*/) {\n\tvar o = new_buf(2 + merges.length * 8);\n\to.write_shift(2, merges.length);\n\tfor(var i = 0; i < merges.length; ++i) write_Ref8U(merges[i], o);\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.181 TODO: parse all the things! */\nfunction parse_Obj(blob, length, opts) {\n\tif(opts && opts.biff < 8) return parse_BIFF5Obj(blob, length, opts);\n\tvar cmo = parse_FtCmo(blob, 22); // id, ot, flags\n\tvar fts = parse_FtArray(blob, length-22, cmo[1]);\n\treturn { cmo: cmo, ft:fts };\n}\n/* from older spec */\nvar parse_BIFF5OT = {\n0x08: function(blob, length) {\n\tvar tgt = blob.l + length;\n\tblob.l += 10; // todo\n\tvar cf = blob.read_shift(2);\n\tblob.l += 4;\n\tblob.l += 2; //var cbPictFmla = blob.read_shift(2);\n\tblob.l += 2;\n\tblob.l += 2; //var grbit = blob.read_shift(2);\n\tblob.l += 4;\n\tvar cchName = blob.read_shift(1);\n\tblob.l += cchName; // TODO: stName\n\tblob.l = tgt; // TODO: fmla\n\treturn { fmt:cf };\n}\n};\n\nfunction parse_BIFF5Obj(blob, length, opts) {\n\tblob.l += 4; //var cnt = blob.read_shift(4);\n\tvar ot = blob.read_shift(2);\n\tvar id = blob.read_shift(2);\n\tvar grbit = blob.read_shift(2);\n\tblob.l += 2; //var colL = blob.read_shift(2);\n\tblob.l += 2; //var dxL = blob.read_shift(2);\n\tblob.l += 2; //var rwT = blob.read_shift(2);\n\tblob.l += 2; //var dyT = blob.read_shift(2);\n\tblob.l += 2; //var colR = blob.read_shift(2);\n\tblob.l += 2; //var dxR = blob.read_shift(2);\n\tblob.l += 2; //var rwB = blob.read_shift(2);\n\tblob.l += 2; //var dyB = blob.read_shift(2);\n\tblob.l += 2; //var cbMacro = blob.read_shift(2);\n\tblob.l += 6;\n\tlength -= 36;\n\tvar fts = [];\n\tfts.push((parse_BIFF5OT[ot]||parsenoop)(blob, length, opts));\n\treturn { cmo: [id, ot, grbit], ft:fts };\n}\n\n/* [MS-XLS] 2.4.329 TODO: parse properly */\nfunction parse_TxO(blob, length, opts) {\n\tvar s = blob.l;\n\tvar texts = \"\";\ntry {\n\tblob.l += 4;\n\tvar ot = (opts.lastobj||{cmo:[0,0]}).cmo[1];\n\tvar controlInfo; // eslint-disable-line no-unused-vars\n\tif([0,5,7,11,12,14].indexOf(ot) == -1) blob.l += 6;\n\telse controlInfo = parse_ControlInfo(blob, 6, opts); // eslint-disable-line no-unused-vars\n\tvar cchText = blob.read_shift(2);\n\t/*var cbRuns = */blob.read_shift(2);\n\t/*var ifntEmpty = */parseuint16(blob, 2);\n\tvar len = blob.read_shift(2);\n\tblob.l += len;\n\t//var fmla = parse_ObjFmla(blob, s + length - blob.l);\n\n\tfor(var i = 1; i < blob.lens.length-1; ++i) {\n\t\tif(blob.l-s != blob.lens[i]) throw new Error(\"TxO: bad continue record\");\n\t\tvar hdr = blob[blob.l];\n\t\tvar t = parse_XLUnicodeStringNoCch(blob, blob.lens[i+1]-blob.lens[i]-1);\n\t\ttexts += t;\n\t\tif(texts.length >= (hdr ? cchText : 2*cchText)) break;\n\t}\n\tif(texts.length !== cchText && texts.length !== cchText*2) {\n\t\tthrow new Error(\"cchText: \" + cchText + \" != \" + texts.length);\n\t}\n\n\tblob.l = s + length;\n\t/* [MS-XLS] 2.5.272 TxORuns */\n//\tvar rgTxoRuns = [];\n//\tfor(var j = 0; j != cbRuns/8-1; ++j) blob.l += 8;\n//\tvar cchText2 = blob.read_shift(2);\n//\tif(cchText2 !== cchText) throw new Error(\"TxOLastRun mismatch: \" + cchText2 + \" \" + cchText);\n//\tblob.l += 6;\n//\tif(s + length != blob.l) throw new Error(\"TxO \" + (s + length) + \", at \" + blob.l);\n\treturn { t: texts };\n} catch(e) { blob.l = s + length; return { t: texts }; }\n}\n\n/* [MS-XLS] 2.4.140 */\nfunction parse_HLink(blob, length) {\n\tvar ref = parse_Ref8U(blob, 8);\n\tblob.l += 16; /* CLSID */\n\tvar hlink = parse_Hyperlink(blob, length-24);\n\treturn [ref, hlink];\n}\nfunction write_HLink(hl) {\n\tvar O = new_buf(24);\n\tvar ref = decode_cell(hl[0]);\n\tO.write_shift(2, ref.r); O.write_shift(2, ref.r);\n\tO.write_shift(2, ref.c); O.write_shift(2, ref.c);\n\tvar clsid = \"d0 c9 ea 79 f9 ba ce 11 8c 82 00 aa 00 4b a9 0b\".split(\" \");\n\tfor(var i = 0; i < 16; ++i) O.write_shift(1, parseInt(clsid[i], 16));\n\treturn bconcat([O, write_Hyperlink(hl[1])]);\n}\n\n\n/* [MS-XLS] 2.4.141 */\nfunction parse_HLinkTooltip(blob, length) {\n\tblob.read_shift(2);\n\tvar ref = parse_Ref8U(blob, 8);\n\tvar wzTooltip = blob.read_shift((length-10)/2, 'dbcs-cont');\n\twzTooltip = wzTooltip.replace(chr0,\"\");\n\treturn [ref, wzTooltip];\n}\nfunction write_HLinkTooltip(hl) {\n\tvar TT = hl[1].Tooltip;\n\tvar O = new_buf(10 + 2 * (TT.length + 1));\n\tO.write_shift(2, 0x0800);\n\tvar ref = decode_cell(hl[0]);\n\tO.write_shift(2, ref.r); O.write_shift(2, ref.r);\n\tO.write_shift(2, ref.c); O.write_shift(2, ref.c);\n\tfor(var i = 0; i < TT.length; ++i) O.write_shift(2, TT.charCodeAt(i));\n\tO.write_shift(2, 0);\n\treturn O;\n}\n\n/* [MS-XLS] 2.4.63 */\nfunction parse_Country(blob)/*:[string|number, string|number]*/ {\n\tvar o = [0,0], d;\n\td = blob.read_shift(2); o[0] = CountryEnum[d] || d;\n\td = blob.read_shift(2); o[1] = CountryEnum[d] || d;\n\treturn o;\n}\nfunction write_Country(o) {\n\tif(!o) o = new_buf(4);\n\to.write_shift(2, 0x01);\n\to.write_shift(2, 0x01);\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.50 ClrtClient */\nfunction parse_ClrtClient(blob) {\n\tvar ccv = blob.read_shift(2);\n\tvar o = [];\n\twhile(ccv-->0) o.push(parse_LongRGB(blob, 8));\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.188 */\nfunction parse_Palette(blob) {\n\tvar ccv = blob.read_shift(2);\n\tvar o = [];\n\twhile(ccv-->0) o.push(parse_LongRGB(blob, 8));\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.354 */\nfunction parse_XFCRC(blob) {\n\tblob.l += 2;\n\tvar o = {cxfs:0, crc:0};\n\to.cxfs = blob.read_shift(2);\n\to.crc = blob.read_shift(4);\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.53 TODO: parse flags */\n/* [MS-XLSB] 2.4.323 TODO: parse flags */\nfunction parse_ColInfo(blob, length, opts) {\n\tif(!opts.cellStyles) return parsenoop(blob, length);\n\tvar w = opts && opts.biff >= 12 ? 4 : 2;\n\tvar colFirst = blob.read_shift(w);\n\tvar colLast = blob.read_shift(w);\n\tvar coldx = blob.read_shift(w);\n\tvar ixfe = blob.read_shift(w);\n\tvar flags = blob.read_shift(2);\n\tif(w == 2) blob.l += 2;\n\tvar o = ({s:colFirst, e:colLast, w:coldx, ixfe:ixfe, flags:flags}/*:any*/);\n\tif(opts.biff >= 5 || !opts.biff) o.level = (flags >> 8) & 0x7;\n\treturn o;\n}\nfunction write_ColInfo(col, idx) {\n\tvar o = new_buf(12);\n\to.write_shift(2, idx);\n\to.write_shift(2, idx);\n\to.write_shift(2, col.width * 256);\n\to.write_shift(2, 0);\n\tvar f = 0;\n\tif(col.hidden) f |= 1;\n\to.write_shift(1, f);\n\tf = col.level || 0;\n\to.write_shift(1, f);\n\to.write_shift(2, 0);\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.257 */\nfunction parse_Setup(blob, length) {\n\tvar o = {};\n\tif(length < 32) return o;\n\tblob.l += 16;\n\to.header = parse_Xnum(blob, 8);\n\to.footer = parse_Xnum(blob, 8);\n\tblob.l += 2;\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.261 */\nfunction parse_ShtProps(blob, length, opts) {\n\tvar def = {area:false};\n\tif(opts.biff != 5) { blob.l += length; return def; }\n\tvar d = blob.read_shift(1); blob.l += 3;\n\tif((d & 0x10)) def.area = true;\n\treturn def;\n}\n\n/* [MS-XLS] 2.4.241 */\nfunction write_RRTabId(n/*:number*/) {\n\tvar out = new_buf(2 * n);\n\tfor(var i = 0; i < n; ++i) out.write_shift(2, i+1);\n\treturn out;\n}\n\nvar parse_Blank = parse_XLSCell; /* [MS-XLS] 2.4.20 Just the cell */\nvar parse_Scl = parseuint16a; /* [MS-XLS] 2.4.247 num, den */\nvar parse_String = parse_XLUnicodeString; /* [MS-XLS] 2.4.268 */\n\n/* --- Specific to versions before BIFF8 --- */\nfunction parse_ImData(blob) {\n\tvar cf = blob.read_shift(2);\n\tvar env = blob.read_shift(2);\n\tvar lcb = blob.read_shift(4);\n\tvar o = {fmt:cf, env:env, len:lcb, data:blob.slice(blob.l,blob.l+lcb)};\n\tblob.l += lcb;\n\treturn o;\n}\n\n/* BIFF2_??? where ??? is the name from [XLS] */\nfunction parse_BIFF2STR(blob, length, opts) {\n\tif(opts.biffguess && opts.biff == 5) opts.biff = 2;\n\tvar cell = parse_XLSCell(blob, 6);\n\t++blob.l;\n\tvar str = parse_XLUnicodeString2(blob, length-7, opts);\n\tcell.t = 'str';\n\tcell.val = str;\n\treturn cell;\n}\n\nfunction parse_BIFF2NUM(blob/*::, length*/) {\n\tvar cell = parse_XLSCell(blob, 6);\n\t++blob.l;\n\tvar num = parse_Xnum(blob, 8);\n\tcell.t = 'n';\n\tcell.val = num;\n\treturn cell;\n}\nfunction write_BIFF2NUM(r/*:number*/, c/*:number*/, val/*:number*/) {\n\tvar out = new_buf(15);\n\twrite_BIFF2Cell(out, r, c);\n\tout.write_shift(8, val, 'f');\n\treturn out;\n}\n\nfunction parse_BIFF2INT(blob) {\n\tvar cell = parse_XLSCell(blob, 6);\n\t++blob.l;\n\tvar num = blob.read_shift(2);\n\tcell.t = 'n';\n\tcell.val = num;\n\treturn cell;\n}\nfunction write_BIFF2INT(r/*:number*/, c/*:number*/, val/*:number*/) {\n\tvar out = new_buf(9);\n\twrite_BIFF2Cell(out, r, c);\n\tout.write_shift(2, val);\n\treturn out;\n}\n\nfunction parse_BIFF2STRING(blob) {\n\tvar cch = blob.read_shift(1);\n\tif(cch === 0) { blob.l++; return \"\"; }\n\treturn blob.read_shift(cch, 'sbcs-cont');\n}\n\n/* TODO: convert to BIFF8 font struct */\nfunction parse_BIFF2FONTXTRA(blob, length) {\n\tblob.l += 6; // unknown\n\tblob.l += 2; // font weight \"bls\"\n\tblob.l += 1; // charset\n\tblob.l += 3; // unknown\n\tblob.l += 1; // font family\n\tblob.l += length - 13;\n}\n\n/* TODO: parse rich text runs */\nfunction parse_RString(blob, length, opts) {\n\tvar end = blob.l + length;\n\tvar cell = parse_XLSCell(blob, 6);\n\tvar cch = blob.read_shift(2);\n\tvar str = parse_XLUnicodeStringNoCch(blob, cch, opts);\n\tblob.l = end;\n\tcell.t = 'str';\n\tcell.val = str;\n\treturn cell;\n}\n/* from js-harb (C) 2014-present  SheetJS */\nvar DBF_SUPPORTED_VERSIONS = [0x02, 0x03, 0x30, 0x31, 0x83, 0x8B, 0x8C, 0xF5];\nvar DBF = /*#__PURE__*/(function() {\nvar dbf_codepage_map = {\n\t/* Code Pages Supported by Visual FoxPro */\n\t/*::[*/0x01/*::]*/:   437,           /*::[*/0x02/*::]*/:   850,\n\t/*::[*/0x03/*::]*/:  1252,           /*::[*/0x04/*::]*/: 10000,\n\t/*::[*/0x64/*::]*/:   852,           /*::[*/0x65/*::]*/:   866,\n\t/*::[*/0x66/*::]*/:   865,           /*::[*/0x67/*::]*/:   861,\n\t/*::[*/0x68/*::]*/:   895,           /*::[*/0x69/*::]*/:   620,\n\t/*::[*/0x6A/*::]*/:   737,           /*::[*/0x6B/*::]*/:   857,\n\t/*::[*/0x78/*::]*/:   950,           /*::[*/0x79/*::]*/:   949,\n\t/*::[*/0x7A/*::]*/:   936,           /*::[*/0x7B/*::]*/:   932,\n\t/*::[*/0x7C/*::]*/:   874,           /*::[*/0x7D/*::]*/:  1255,\n\t/*::[*/0x7E/*::]*/:  1256,           /*::[*/0x96/*::]*/: 10007,\n\t/*::[*/0x97/*::]*/: 10029,           /*::[*/0x98/*::]*/: 10006,\n\t/*::[*/0xC8/*::]*/:  1250,           /*::[*/0xC9/*::]*/:  1251,\n\t/*::[*/0xCA/*::]*/:  1254,           /*::[*/0xCB/*::]*/:  1253,\n\n\t/* shapefile DBF extension */\n\t/*::[*/0x00/*::]*/: 20127,           /*::[*/0x08/*::]*/:   865,\n\t/*::[*/0x09/*::]*/:   437,           /*::[*/0x0A/*::]*/:   850,\n\t/*::[*/0x0B/*::]*/:   437,           /*::[*/0x0D/*::]*/:   437,\n\t/*::[*/0x0E/*::]*/:   850,           /*::[*/0x0F/*::]*/:   437,\n\t/*::[*/0x10/*::]*/:   850,           /*::[*/0x11/*::]*/:   437,\n\t/*::[*/0x12/*::]*/:   850,           /*::[*/0x13/*::]*/:   932,\n\t/*::[*/0x14/*::]*/:   850,           /*::[*/0x15/*::]*/:   437,\n\t/*::[*/0x16/*::]*/:   850,           /*::[*/0x17/*::]*/:   865,\n\t/*::[*/0x18/*::]*/:   437,           /*::[*/0x19/*::]*/:   437,\n\t/*::[*/0x1A/*::]*/:   850,           /*::[*/0x1B/*::]*/:   437,\n\t/*::[*/0x1C/*::]*/:   863,           /*::[*/0x1D/*::]*/:   850,\n\t/*::[*/0x1F/*::]*/:   852,           /*::[*/0x22/*::]*/:   852,\n\t/*::[*/0x23/*::]*/:   852,           /*::[*/0x24/*::]*/:   860,\n\t/*::[*/0x25/*::]*/:   850,           /*::[*/0x26/*::]*/:   866,\n\t/*::[*/0x37/*::]*/:   850,           /*::[*/0x40/*::]*/:   852,\n\t/*::[*/0x4D/*::]*/:   936,           /*::[*/0x4E/*::]*/:   949,\n\t/*::[*/0x4F/*::]*/:   950,           /*::[*/0x50/*::]*/:   874,\n\t/*::[*/0x57/*::]*/:  1252,           /*::[*/0x58/*::]*/:  1252,\n\t/*::[*/0x59/*::]*/:  1252,           /*::[*/0x6C/*::]*/:   863,\n\t/*::[*/0x86/*::]*/:   737,           /*::[*/0x87/*::]*/:   852,\n\t/*::[*/0x88/*::]*/:   857,           /*::[*/0xCC/*::]*/:  1257,\n\n\t/*::[*/0xFF/*::]*/: 16969\n};\nvar dbf_reverse_map = evert({\n\t/*::[*/0x01/*::]*/:   437,           /*::[*/0x02/*::]*/:   850,\n\t/*::[*/0x03/*::]*/:  1252,           /*::[*/0x04/*::]*/: 10000,\n\t/*::[*/0x64/*::]*/:   852,           /*::[*/0x65/*::]*/:   866,\n\t/*::[*/0x66/*::]*/:   865,           /*::[*/0x67/*::]*/:   861,\n\t/*::[*/0x68/*::]*/:   895,           /*::[*/0x69/*::]*/:   620,\n\t/*::[*/0x6A/*::]*/:   737,           /*::[*/0x6B/*::]*/:   857,\n\t/*::[*/0x78/*::]*/:   950,           /*::[*/0x79/*::]*/:   949,\n\t/*::[*/0x7A/*::]*/:   936,           /*::[*/0x7B/*::]*/:   932,\n\t/*::[*/0x7C/*::]*/:   874,           /*::[*/0x7D/*::]*/:  1255,\n\t/*::[*/0x7E/*::]*/:  1256,           /*::[*/0x96/*::]*/: 10007,\n\t/*::[*/0x97/*::]*/: 10029,           /*::[*/0x98/*::]*/: 10006,\n\t/*::[*/0xC8/*::]*/:  1250,           /*::[*/0xC9/*::]*/:  1251,\n\t/*::[*/0xCA/*::]*/:  1254,           /*::[*/0xCB/*::]*/:  1253,\n\t/*::[*/0x00/*::]*/: 20127\n});\n/* TODO: find an actual specification */\nfunction dbf_to_aoa(buf, opts)/*:AOA*/ {\n\tvar out/*:AOA*/ = [];\n\tvar d/*:Block*/ = (new_raw_buf(1)/*:any*/);\n\tswitch(opts.type) {\n\t\tcase 'base64': d = s2a(Base64_decode(buf)); break;\n\t\tcase 'binary': d = s2a(buf); break;\n\t\tcase 'buffer':\n\t\tcase 'array': d = buf; break;\n\t}\n\tprep_blob(d, 0);\n\n\t/* header */\n\tvar ft = d.read_shift(1);\n\tvar memo = !!(ft & 0x88);\n\tvar vfp = false, l7 = false;\n\tswitch(ft) {\n\t\tcase 0x02: break; // dBASE II\n\t\tcase 0x03: break; // dBASE III\n\t\tcase 0x30: vfp = true; memo = true; break; // VFP\n\t\tcase 0x31: vfp = true; memo = true; break; // VFP with autoincrement\n\t\t// 0x43 dBASE IV SQL table files\n\t\t// 0x63 dBASE IV SQL system files\n\t\tcase 0x83: break; // dBASE III with memo\n\t\tcase 0x8B: break; // dBASE IV with memo\n\t\tcase 0x8C: l7 = true; break; // dBASE Level 7 with memo\n\t\t// case 0xCB dBASE IV SQL table files with memo\n\t\tcase 0xF5: break; // FoxPro 2.x with memo\n\t\t// case 0xFB FoxBASE\n\t\tdefault: throw new Error(\"DBF Unsupported Version: \" + ft.toString(16));\n\t}\n\n\tvar nrow = 0, fpos = 0x0209;\n\tif(ft == 0x02) nrow = d.read_shift(2);\n\td.l += 3; // dBASE II stores DDMMYY date, others use YYMMDD\n\tif(ft != 0x02) nrow = d.read_shift(4);\n\tif(nrow > 1048576) nrow = 1e6;\n\n\tif(ft != 0x02) fpos = d.read_shift(2); // header length\n\tvar rlen = d.read_shift(2); // record length\n\n\tvar /*flags = 0,*/ current_cp = opts.codepage || 1252;\n\tif(ft != 0x02) { // 20 reserved bytes\n\t\td.l+=16;\n\t\t/*flags = */d.read_shift(1);\n\t\t//if(memo && ((flags & 0x02) === 0)) throw new Error(\"DBF Flags \" + flags.toString(16) + \" ft \" + ft.toString(16));\n\n\t\t/* codepage present in FoxPro and dBASE Level 7 */\n\t\tif(d[d.l] !== 0) current_cp = dbf_codepage_map[d[d.l]];\n\t\td.l+=1;\n\n\t\td.l+=2;\n\t}\n\tif(l7) d.l += 36; // Level 7: 32 byte \"Language driver name\", 4 byte reserved\n\n/*:: type DBFField = { name:string; len:number; type:string; } */\n\tvar fields/*:Array<DBFField>*/ = [], field/*:DBFField*/ = ({}/*:any*/);\n\tvar hend = Math.min(d.length, (ft == 0x02 ? 0x209 : (fpos - 10 - (vfp ? 264 : 0))));\n\tvar ww = l7 ? 32 : 11;\n\twhile(d.l < hend && d[d.l] != 0x0d) {\n\t\tfield = ({}/*:any*/);\n\t\tfield.name = $cptable.utils.decode(current_cp, d.slice(d.l, d.l+ww)).replace(/[\\u0000\\r\\n].*$/g,\"\");\n\t\td.l += ww;\n\t\tfield.type = String.fromCharCode(d.read_shift(1));\n\t\tif(ft != 0x02 && !l7) field.offset = d.read_shift(4);\n\t\tfield.len = d.read_shift(1);\n\t\tif(ft == 0x02) field.offset = d.read_shift(2);\n\t\tfield.dec = d.read_shift(1);\n\t\tif(field.name.length) fields.push(field);\n\t\tif(ft != 0x02) d.l += l7 ? 13 : 14;\n\t\tswitch(field.type) {\n\t\t\tcase 'B': // Double (VFP) / Binary (dBASE L7)\n\t\t\t\tif((!vfp || field.len != 8) && opts.WTF) console.log('Skipping ' + field.name + ':' + field.type);\n\t\t\t\tbreak;\n\t\t\tcase 'G': // General (FoxPro and dBASE L7)\n\t\t\tcase 'P': // Picture (FoxPro and dBASE L7)\n\t\t\t\tif(opts.WTF) console.log('Skipping ' + field.name + ':' + field.type);\n\t\t\t\tbreak;\n\t\t\tcase '+': // Autoincrement (dBASE L7 only)\n\t\t\tcase '0': // _NullFlags (VFP only)\n\t\t\tcase '@': // Timestamp (dBASE L7 only)\n\t\t\tcase 'C': // Character (dBASE II)\n\t\t\tcase 'D': // Date (dBASE III)\n\t\t\tcase 'F': // Float (dBASE IV)\n\t\t\tcase 'I': // Long (VFP and dBASE L7)\n\t\t\tcase 'L': // Logical (dBASE II)\n\t\t\tcase 'M': // Memo (dBASE III)\n\t\t\tcase 'N': // Number (dBASE II)\n\t\t\tcase 'O': // Double (dBASE L7 only)\n\t\t\tcase 'T': // Datetime (VFP only)\n\t\t\tcase 'Y': // Currency (VFP only)\n\t\t\t\tbreak;\n\t\t\tdefault: throw new Error('Unknown Field Type: ' + field.type);\n\t\t}\n\t}\n\n\tif(d[d.l] !== 0x0D) d.l = fpos-1;\n\tif(d.read_shift(1) !== 0x0D) throw new Error(\"DBF Terminator not found \" + d.l + \" \" + d[d.l]);\n\td.l = fpos;\n\n\t/* data */\n\tvar R = 0, C = 0;\n\tout[0] = [];\n\tfor(C = 0; C != fields.length; ++C) out[0][C] = fields[C].name;\n\twhile(nrow-- > 0) {\n\t\tif(d[d.l] === 0x2A) {\n\t\t\t// TODO: record marked as deleted -- create a hidden row?\n\t\t\td.l+=rlen;\n\t\t\tcontinue;\n\t\t}\n\t\t++d.l;\n\t\tout[++R] = []; C = 0;\n\t\tfor(C = 0; C != fields.length; ++C) {\n\t\t\tvar dd = d.slice(d.l, d.l+fields[C].len); d.l+=fields[C].len;\n\t\t\tprep_blob(dd, 0);\n\t\t\tvar s = $cptable.utils.decode(current_cp, dd);\n\t\t\tswitch(fields[C].type) {\n\t\t\t\tcase 'C':\n\t\t\t\t\t// NOTE: it is conventional to write '  /  /  ' for empty dates\n\t\t\t\t\tif(s.trim().length) out[R][C] = s.replace(/\\s+$/,\"\");\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'D':\n\t\t\t\t\tif(s.length === 8) out[R][C] = new Date(+s.slice(0,4), +s.slice(4,6)-1, +s.slice(6,8));\n\t\t\t\t\telse out[R][C] = s;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'F': out[R][C] = parseFloat(s.trim()); break;\n\t\t\t\tcase '+': case 'I': out[R][C] = l7 ? dd.read_shift(-4, 'i') ^ 0x80000000 : dd.read_shift(4, 'i'); break;\n\t\t\t\tcase 'L': switch(s.trim().toUpperCase()) {\n\t\t\t\t\tcase 'Y': case 'T': out[R][C] = true; break;\n\t\t\t\t\tcase 'N': case 'F': out[R][C] = false; break;\n\t\t\t\t\tcase '': case '?': break;\n\t\t\t\t\tdefault: throw new Error(\"DBF Unrecognized L:|\" + s + \"|\");\n\t\t\t\t\t} break;\n\t\t\t\tcase 'M': /* TODO: handle memo files */\n\t\t\t\t\tif(!memo) throw new Error(\"DBF Unexpected MEMO for type \" + ft.toString(16));\n\t\t\t\t\tout[R][C] = \"##MEMO##\" + (l7 ? parseInt(s.trim(), 10): dd.read_shift(4));\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'N':\n\t\t\t\t\ts = s.replace(/\\u0000/g,\"\").trim();\n\t\t\t\t\t// NOTE: dBASE II interprets \"  .  \" as 0\n\t\t\t\t\tif(s && s != \".\") out[R][C] = +s || 0; break;\n\t\t\t\tcase '@':\n\t\t\t\t\t// NOTE: dBASE specs appear to be incorrect\n\t\t\t\t\tout[R][C] = new Date(dd.read_shift(-8, 'f') - 0x388317533400);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'T': out[R][C] = new Date((dd.read_shift(4) - 0x253D8C) * 0x5265C00 + dd.read_shift(4)); break;\n\t\t\t\tcase 'Y': out[R][C] = dd.read_shift(4,'i')/1e4 + (dd.read_shift(4, 'i')/1e4)*Math.pow(2,32); break;\n\t\t\t\tcase 'O': out[R][C] = -dd.read_shift(-8, 'f'); break;\n\t\t\t\tcase 'B': if(vfp && fields[C].len == 8) { out[R][C] = dd.read_shift(8,'f'); break; }\n\t\t\t\t\t/* falls through */\n\t\t\t\tcase 'G': case 'P': dd.l += fields[C].len; break;\n\t\t\t\tcase '0':\n\t\t\t\t\tif(fields[C].name === '_NullFlags') break;\n\t\t\t\t\t/* falls through */\n\t\t\t\tdefault: throw new Error(\"DBF Unsupported data type \" + fields[C].type);\n\t\t\t}\n\t\t}\n\t}\n\tif(ft != 0x02) if(d.l < d.length && d[d.l++] != 0x1A) throw new Error(\"DBF EOF Marker missing \" + (d.l-1) + \" of \" + d.length + \" \" + d[d.l-1].toString(16));\n\tif(opts && opts.sheetRows) out = out.slice(0, opts.sheetRows);\n\topts.DBF = fields;\n\treturn out;\n}\n\nfunction dbf_to_sheet(buf, opts)/*:Worksheet*/ {\n\tvar o = opts || {};\n\tif(!o.dateNF) o.dateNF = \"yyyymmdd\";\n\tvar ws = aoa_to_sheet(dbf_to_aoa(buf, o), o);\n\tws[\"!cols\"] = o.DBF.map(function(field) { return {\n\t\twch: field.len,\n\t\tDBF: field\n\t};});\n\tdelete o.DBF;\n\treturn ws;\n}\n\nfunction dbf_to_workbook(buf, opts)/*:Workbook*/ {\n\ttry { return sheet_to_workbook(dbf_to_sheet(buf, opts), opts); }\n\tcatch(e) { if(opts && opts.WTF) throw e; }\n\treturn ({SheetNames:[],Sheets:{}});\n}\n\nvar _RLEN = { 'B': 8, 'C': 250, 'L': 1, 'D': 8, '?': 0, '': 0 };\nfunction sheet_to_dbf(ws/*:Worksheet*/, opts/*:WriteOpts*/) {\n\tvar o = opts || {};\n\tif(+o.codepage >= 0) set_cp(+o.codepage);\n\tif(o.type == \"string\") throw new Error(\"Cannot write DBF to JS string\");\n\tvar ba = buf_array();\n\tvar aoa/*:AOA*/ = sheet_to_json(ws, {header:1, raw:true, cellDates:true});\n\tvar headers = aoa[0], data = aoa.slice(1), cols = ws[\"!cols\"] || [];\n\tvar i = 0, j = 0, hcnt = 0, rlen = 1;\n\tfor(i = 0; i < headers.length; ++i) {\n\t\tif(((cols[i]||{}).DBF||{}).name) { headers[i] = cols[i].DBF.name; ++hcnt; continue; }\n\t\tif(headers[i] == null) continue;\n\t\t++hcnt;\n\t\tif(typeof headers[i] === 'number') headers[i] = headers[i].toString(10);\n\t\tif(typeof headers[i] !== 'string') throw new Error(\"DBF Invalid column name \" + headers[i] + \" |\" + (typeof headers[i]) + \"|\");\n\t\tif(headers.indexOf(headers[i]) !== i) for(j=0; j<1024;++j)\n\t\t\tif(headers.indexOf(headers[i] + \"_\" + j) == -1) { headers[i] += \"_\" + j; break; }\n\t}\n\tvar range = safe_decode_range(ws['!ref']);\n\tvar coltypes/*:Array<string>*/ = [];\n\tvar colwidths/*:Array<number>*/ = [];\n\tvar coldecimals/*:Array<number>*/ = [];\n\tfor(i = 0; i <= range.e.c - range.s.c; ++i) {\n\t\tvar guess = '', _guess = '', maxlen = 0;\n\t\tvar col/*:Array<any>*/ = [];\n\t\tfor(j=0; j < data.length; ++j) {\n\t\t\tif(data[j][i] != null) col.push(data[j][i]);\n\t\t}\n\t\tif(col.length == 0 || headers[i] == null) { coltypes[i] = '?'; continue; }\n\t\tfor(j = 0; j < col.length; ++j) {\n\t\t\tswitch(typeof col[j]) {\n\t\t\t\t/* TODO: check if L2 compat is desired */\n\t\t\t\tcase 'number': _guess = 'B'; break;\n\t\t\t\tcase 'string': _guess = 'C'; break;\n\t\t\t\tcase 'boolean': _guess = 'L'; break;\n\t\t\t\tcase 'object': _guess = col[j] instanceof Date ? 'D' : 'C'; break;\n\t\t\t\tdefault: _guess = 'C';\n\t\t\t}\n\t\t\tmaxlen = Math.max(maxlen, String(col[j]).length);\n\t\t\tguess = guess && guess != _guess ? 'C' : _guess;\n\t\t\t//if(guess == 'C') break;\n\t\t}\n\t\tif(maxlen > 250) maxlen = 250;\n\t\t_guess = ((cols[i]||{}).DBF||{}).type;\n\t\t/* TODO: more fine grained control over DBF type resolution */\n\t\tif(_guess == 'C') {\n\t\t\tif(cols[i].DBF.len > maxlen) maxlen = cols[i].DBF.len;\n\t\t}\n\t\tif(guess == 'B' && _guess == 'N') {\n\t\t\tguess = 'N';\n\t\t\tcoldecimals[i] = cols[i].DBF.dec;\n\t\t\tmaxlen = cols[i].DBF.len;\n\t\t}\n\t\tcolwidths[i] = guess == 'C' || _guess == 'N' ? maxlen : (_RLEN[guess] || 0);\n\t\trlen += colwidths[i];\n\t\tcoltypes[i] = guess;\n\t}\n\n\tvar h = ba.next(32);\n\th.write_shift(4, 0x13021130);\n\th.write_shift(4, data.length);\n\th.write_shift(2, 296 + 32 * hcnt);\n\th.write_shift(2, rlen);\n\tfor(i=0; i < 4; ++i) h.write_shift(4, 0);\n\th.write_shift(4, 0x00000000 | ((+dbf_reverse_map[/*::String(*/current_ansi/*::)*/] || 0x03)<<8));\n\n\tfor(i = 0, j = 0; i < headers.length; ++i) {\n\t\tif(headers[i] == null) continue;\n\t\tvar hf = ba.next(32);\n\t\tvar _f = (headers[i].slice(-10) + \"\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\").slice(0, 11);\n\t\thf.write_shift(1, _f, \"sbcs\");\n\t\thf.write_shift(1, coltypes[i] == '?' ? 'C' : coltypes[i], \"sbcs\");\n\t\thf.write_shift(4, j);\n\t\thf.write_shift(1, colwidths[i] || _RLEN[coltypes[i]] || 0);\n\t\thf.write_shift(1, coldecimals[i] || 0);\n\t\thf.write_shift(1, 0x02);\n\t\thf.write_shift(4, 0);\n\t\thf.write_shift(1, 0);\n\t\thf.write_shift(4, 0);\n\t\thf.write_shift(4, 0);\n\t\tj += (colwidths[i] || _RLEN[coltypes[i]] || 0);\n\t}\n\n\tvar hb = ba.next(264);\n\thb.write_shift(4, 0x0000000D);\n\tfor(i=0; i < 65;++i) hb.write_shift(4, 0x00000000);\n\tfor(i=0; i < data.length; ++i) {\n\t\tvar rout = ba.next(rlen);\n\t\trout.write_shift(1, 0);\n\t\tfor(j=0; j<headers.length; ++j) {\n\t\t\tif(headers[j] == null) continue;\n\t\t\tswitch(coltypes[j]) {\n\t\t\t\tcase 'L': rout.write_shift(1, data[i][j] == null ? 0x3F : data[i][j] ? 0x54 : 0x46); break;\n\t\t\t\tcase 'B': rout.write_shift(8, data[i][j]||0, 'f'); break;\n\t\t\t\tcase 'N':\n\t\t\t\t\tvar _n = \"0\";\n\t\t\t\t\tif(typeof data[i][j] == \"number\") _n = data[i][j].toFixed(coldecimals[j]||0);\n\t\t\t\t\tfor(hcnt=0; hcnt < colwidths[j]-_n.length; ++hcnt) rout.write_shift(1, 0x20);\n\t\t\t\t\trout.write_shift(1, _n, \"sbcs\");\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'D':\n\t\t\t\t\tif(!data[i][j]) rout.write_shift(8, \"00000000\", \"sbcs\");\n\t\t\t\t\telse {\n\t\t\t\t\t\trout.write_shift(4, (\"0000\"+data[i][j].getFullYear()).slice(-4), \"sbcs\");\n\t\t\t\t\t\trout.write_shift(2, (\"00\"+(data[i][j].getMonth()+1)).slice(-2), \"sbcs\");\n\t\t\t\t\t\trout.write_shift(2, (\"00\"+data[i][j].getDate()).slice(-2), \"sbcs\");\n\t\t\t\t\t} break;\n\t\t\t\tcase 'C':\n\t\t\t\t\tvar _s = String(data[i][j] != null ? data[i][j] : \"\").slice(0, colwidths[j]);\n\t\t\t\t\trout.write_shift(1, _s, \"sbcs\");\n\t\t\t\t\tfor(hcnt=0; hcnt < colwidths[j]-_s.length; ++hcnt) rout.write_shift(1, 0x20); break;\n\t\t\t}\n\t\t}\n\t\t// data\n\t}\n\tba.next(1).write_shift(1, 0x1A);\n\treturn ba.end();\n}\n\treturn {\n\t\tto_workbook: dbf_to_workbook,\n\t\tto_sheet: dbf_to_sheet,\n\t\tfrom_sheet: sheet_to_dbf\n\t};\n})();\n\nvar SYLK = /*#__PURE__*/(function() {\n\t/* TODO: stress test sequences */\n\tvar sylk_escapes = ({\n\t\tAA:'À', BA:'Á', CA:'Â', DA:195, HA:'Ä', JA:197,\n\t\tAE:'È', BE:'É', CE:'Ê',         HE:'Ë',\n\t\tAI:'Ì', BI:'Í', CI:'Î',         HI:'Ï',\n\t\tAO:'Ò', BO:'Ó', CO:'Ô', DO:213, HO:'Ö',\n\t\tAU:'Ù', BU:'Ú', CU:'Û',         HU:'Ü',\n\t\tAa:'à', Ba:'á', Ca:'â', Da:227, Ha:'ä', Ja:229,\n\t\tAe:'è', Be:'é', Ce:'ê',         He:'ë',\n\t\tAi:'ì', Bi:'í', Ci:'î',         Hi:'ï',\n\t\tAo:'ò', Bo:'ó', Co:'ô', Do:245, Ho:'ö',\n\t\tAu:'ù', Bu:'ú', Cu:'û',         Hu:'ü',\n\t\tKC:'Ç', Kc:'ç', q:'æ',  z:'œ',  a:'Æ',  j:'Œ',\n\t\tDN:209, Dn:241, Hy:255,\n\t\tS:169,  c:170,  R:174,  \"B \":180,\n\t\t/*::[*/0/*::]*/:176,    /*::[*/1/*::]*/:177,  /*::[*/2/*::]*/:178,\n\t\t/*::[*/3/*::]*/:179,    /*::[*/5/*::]*/:181,  /*::[*/6/*::]*/:182,\n\t\t/*::[*/7/*::]*/:183,    Q:185,  k:186,  b:208,  i:216,  l:222,  s:240,  y:248,\n\t\t\"!\":161, '\"':162, \"#\":163, \"(\":164, \"%\":165, \"'\":167, \"H \":168,\n\t\t\"+\":171, \";\":187, \"<\":188, \"=\":189, \">\":190, \"?\":191, \"{\":223\n\t}/*:any*/);\n\tvar sylk_char_regex = new RegExp(\"\\u001BN(\" + keys(sylk_escapes).join(\"|\").replace(/\\|\\|\\|/, \"|\\\\||\").replace(/([?()+])/g,\"\\\\$1\") + \"|\\\\|)\", \"gm\");\n\tvar sylk_char_fn = function(_, $1){ var o = sylk_escapes[$1]; return typeof o == \"number\" ? _getansi(o) : o; };\n\tvar decode_sylk_char = function($$, $1, $2) { var newcc = (($1.charCodeAt(0) - 0x20)<<4) | ($2.charCodeAt(0) - 0x30); return newcc == 59 ? $$ : _getansi(newcc); };\n\tsylk_escapes[\"|\"] = 254;\n\t/* TODO: find an actual specification */\n\tfunction sylk_to_aoa(d/*:RawData*/, opts)/*:[AOA, Worksheet]*/ {\n\t\tswitch(opts.type) {\n\t\t\tcase 'base64': return sylk_to_aoa_str(Base64_decode(d), opts);\n\t\t\tcase 'binary': return sylk_to_aoa_str(d, opts);\n\t\t\tcase 'buffer': return sylk_to_aoa_str(has_buf && Buffer.isBuffer(d) ? d.toString('binary') : a2s(d), opts);\n\t\t\tcase 'array': return sylk_to_aoa_str(cc2str(d), opts);\n\t\t}\n\t\tthrow new Error(\"Unrecognized type \" + opts.type);\n\t}\n\tfunction sylk_to_aoa_str(str/*:string*/, opts)/*:[AOA, Worksheet]*/ {\n\t\tvar records = str.split(/[\\n\\r]+/), R = -1, C = -1, ri = 0, rj = 0, arr/*:AOA*/ = [];\n\t\tvar formats/*:Array<string>*/ = [];\n\t\tvar next_cell_format/*:string|null*/ = null;\n\t\tvar sht = {}, rowinfo/*:Array<RowInfo>*/ = [], colinfo/*:Array<ColInfo>*/ = [], cw/*:Array<string>*/ = [];\n\t\tvar Mval = 0, j;\n\t\tif(+opts.codepage >= 0) set_cp(+opts.codepage);\n\t\tfor (; ri !== records.length; ++ri) {\n\t\t\tMval = 0;\n\t\t\tvar rstr=records[ri].trim().replace(/\\x1B([\\x20-\\x2F])([\\x30-\\x3F])/g, decode_sylk_char).replace(sylk_char_regex, sylk_char_fn);\n\t\t\tvar record=rstr.replace(/;;/g, \"\\u0000\").split(\";\").map(function(x) { return x.replace(/\\u0000/g, \";\"); });\n\t\t\tvar RT=record[0], val;\n\t\t\tif(rstr.length > 0) switch(RT) {\n\t\t\tcase 'ID': break; /* header */\n\t\t\tcase 'E': break; /* EOF */\n\t\t\tcase 'B': break; /* dimensions */\n\t\t\tcase 'O': break; /* options? */\n\t\t\tcase 'W': break; /* window? */\n\t\t\tcase 'P':\n\t\t\t\tif(record[1].charAt(0) == 'P')\n\t\t\t\t\tformats.push(rstr.slice(3).replace(/;;/g, \";\"));\n\t\t\t\tbreak;\n\t\t\tcase 'C':\n\t\t\tvar C_seen_K = false, C_seen_X = false, C_seen_S = false, C_seen_E = false, _R = -1, _C = -1;\n\t\t\tfor(rj=1; rj<record.length; ++rj) switch(record[rj].charAt(0)) {\n\t\t\t\tcase 'A': break; // TODO: comment\n\t\t\t\tcase 'X': C = parseInt(record[rj].slice(1))-1; C_seen_X = true; break;\n\t\t\t\tcase 'Y':\n\t\t\t\t\tR = parseInt(record[rj].slice(1))-1; if(!C_seen_X) C = 0;\n\t\t\t\t\tfor(j = arr.length; j <= R; ++j) arr[j] = [];\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'K':\n\t\t\t\t\tval = record[rj].slice(1);\n\t\t\t\t\tif(val.charAt(0) === '\"') val = val.slice(1,val.length - 1);\n\t\t\t\t\telse if(val === 'TRUE') val = true;\n\t\t\t\t\telse if(val === 'FALSE') val = false;\n\t\t\t\t\telse if(!isNaN(fuzzynum(val))) {\n\t\t\t\t\t\tval = fuzzynum(val);\n\t\t\t\t\t\tif(next_cell_format !== null && fmt_is_date(next_cell_format)) val = numdate(val);\n\t\t\t\t\t} else if(!isNaN(fuzzydate(val).getDate())) {\n\t\t\t\t\t\tval = parseDate(val);\n\t\t\t\t\t}\n\t\t\t\t\tif(typeof $cptable !== 'undefined' && typeof val == \"string\" && ((opts||{}).type != \"string\") && (opts||{}).codepage) val = $cptable.utils.decode(opts.codepage, val);\n\t\t\t\t\tC_seen_K = true;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'E':\n\t\t\t\t\tC_seen_E = true;\n\t\t\t\t\tvar formula = rc_to_a1(record[rj].slice(1), {r:R,c:C});\n\t\t\t\t\tarr[R][C] = [arr[R][C], formula];\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'S':\n\t\t\t\t\tC_seen_S = true;\n\t\t\t\t\tarr[R][C] = [arr[R][C], \"S5S\"];\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'G': break; // unknown\n\t\t\t\tcase 'R': _R = parseInt(record[rj].slice(1))-1; break;\n\t\t\t\tcase 'C': _C = parseInt(record[rj].slice(1))-1; break;\n\t\t\t\tdefault: if(opts && opts.WTF) throw new Error(\"SYLK bad record \" + rstr);\n\t\t\t}\n\t\t\tif(C_seen_K) {\n\t\t\t\tif(arr[R][C] && arr[R][C].length == 2) arr[R][C][0] = val;\n\t\t\t\telse arr[R][C] = val;\n\t\t\t\tnext_cell_format = null;\n\t\t\t}\n\t\t\tif(C_seen_S) {\n\t\t\t\tif(C_seen_E) throw new Error(\"SYLK shared formula cannot have own formula\");\n\t\t\t\tvar shrbase = _R > -1 && arr[_R][_C];\n\t\t\t\tif(!shrbase || !shrbase[1]) throw new Error(\"SYLK shared formula cannot find base\");\n\t\t\t\tarr[R][C][1] = shift_formula_str(shrbase[1], {r: R - _R, c: C - _C});\n\t\t\t}\n\t\t\tbreak;\n\t\t\tcase 'F':\n\t\t\tvar F_seen = 0;\n\t\t\tfor(rj=1; rj<record.length; ++rj) switch(record[rj].charAt(0)) {\n\t\t\t\tcase 'X': C = parseInt(record[rj].slice(1))-1; ++F_seen; break;\n\t\t\t\tcase 'Y':\n\t\t\t\t\tR = parseInt(record[rj].slice(1))-1; /*C = 0;*/\n\t\t\t\t\tfor(j = arr.length; j <= R; ++j) arr[j] = [];\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'M': Mval = parseInt(record[rj].slice(1)) / 20; break;\n\t\t\t\tcase 'F': break; /* ??? */\n\t\t\t\tcase 'G': break; /* hide grid */\n\t\t\t\tcase 'P':\n\t\t\t\t\tnext_cell_format = formats[parseInt(record[rj].slice(1))];\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'S': break; /* cell style */\n\t\t\t\tcase 'D': break; /* column */\n\t\t\t\tcase 'N': break; /* font */\n\t\t\t\tcase 'W':\n\t\t\t\t\tcw = record[rj].slice(1).split(\" \");\n\t\t\t\t\tfor(j = parseInt(cw[0], 10); j <= parseInt(cw[1], 10); ++j) {\n\t\t\t\t\t\tMval = parseInt(cw[2], 10);\n\t\t\t\t\t\tcolinfo[j-1] = Mval === 0 ? {hidden:true}: {wch:Mval}; process_col(colinfo[j-1]);\n\t\t\t\t\t} break;\n\t\t\t\tcase 'C': /* default column format */\n\t\t\t\t\tC = parseInt(record[rj].slice(1))-1;\n\t\t\t\t\tif(!colinfo[C]) colinfo[C] = {};\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'R': /* row properties */\n\t\t\t\t\tR = parseInt(record[rj].slice(1))-1;\n\t\t\t\t\tif(!rowinfo[R]) rowinfo[R] = {};\n\t\t\t\t\tif(Mval > 0) { rowinfo[R].hpt = Mval; rowinfo[R].hpx = pt2px(Mval); }\n\t\t\t\t\telse if(Mval === 0) rowinfo[R].hidden = true;\n\t\t\t\t\tbreak;\n\t\t\t\tdefault: if(opts && opts.WTF) throw new Error(\"SYLK bad record \" + rstr);\n\t\t\t}\n\t\t\tif(F_seen < 1) next_cell_format = null; break;\n\t\t\tdefault: if(opts && opts.WTF) throw new Error(\"SYLK bad record \" + rstr);\n\t\t\t}\n\t\t}\n\t\tif(rowinfo.length > 0) sht['!rows'] = rowinfo;\n\t\tif(colinfo.length > 0) sht['!cols'] = colinfo;\n\t\tif(opts && opts.sheetRows) arr = arr.slice(0, opts.sheetRows);\n\t\treturn [arr, sht];\n\t}\n\n\tfunction sylk_to_sheet(d/*:RawData*/, opts)/*:Worksheet*/ {\n\t\tvar aoasht = sylk_to_aoa(d, opts);\n\t\tvar aoa = aoasht[0], ws = aoasht[1];\n\t\tvar o = aoa_to_sheet(aoa, opts);\n\t\tkeys(ws).forEach(function(k) { o[k] = ws[k]; });\n\t\treturn o;\n\t}\n\n\tfunction sylk_to_workbook(d/*:RawData*/, opts)/*:Workbook*/ { return sheet_to_workbook(sylk_to_sheet(d, opts), opts); }\n\n\tfunction write_ws_cell_sylk(cell/*:Cell*/, ws/*:Worksheet*/, R/*:number*/, C/*:number*//*::, opts*/)/*:string*/ {\n\t\tvar o = \"C;Y\" + (R+1) + \";X\" + (C+1) + \";K\";\n\t\tswitch(cell.t) {\n\t\t\tcase 'n':\n\t\t\t\to += (cell.v||0);\n\t\t\t\tif(cell.f && !cell.F) o += \";E\" + a1_to_rc(cell.f, {r:R, c:C}); break;\n\t\t\tcase 'b': o += cell.v ? \"TRUE\" : \"FALSE\"; break;\n\t\t\tcase 'e': o += cell.w || cell.v; break;\n\t\t\tcase 'd': o += '\"' + (cell.w || cell.v) + '\"'; break;\n\t\t\tcase 's': o += '\"' + cell.v.replace(/\"/g,\"\").replace(/;/g, \";;\") + '\"'; break;\n\t\t}\n\t\treturn o;\n\t}\n\n\tfunction write_ws_cols_sylk(out, cols) {\n\t\tcols.forEach(function(col, i) {\n\t\t\tvar rec = \"F;W\" + (i+1) + \" \" + (i+1) + \" \";\n\t\t\tif(col.hidden) rec += \"0\";\n\t\t\telse {\n\t\t\t\tif(typeof col.width == 'number' && !col.wpx) col.wpx = width2px(col.width);\n\t\t\t\tif(typeof col.wpx == 'number' && !col.wch) col.wch = px2char(col.wpx);\n\t\t\t\tif(typeof col.wch == 'number') rec += Math.round(col.wch);\n\t\t\t}\n\t\t\tif(rec.charAt(rec.length - 1) != \" \") out.push(rec);\n\t\t});\n\t}\n\n\tfunction write_ws_rows_sylk(out/*:Array<string>*/, rows/*:Array<RowInfo>*/) {\n\t\trows.forEach(function(row, i) {\n\t\t\tvar rec = \"F;\";\n\t\t\tif(row.hidden) rec += \"M0;\";\n\t\t\telse if(row.hpt) rec += \"M\" + 20 * row.hpt + \";\";\n\t\t\telse if(row.hpx) rec += \"M\" + 20 * px2pt(row.hpx) + \";\";\n\t\t\tif(rec.length > 2) out.push(rec + \"R\" + (i+1));\n\t\t});\n\t}\n\n\tfunction sheet_to_sylk(ws/*:Worksheet*/, opts/*:?any*/)/*:string*/ {\n\t\tvar preamble/*:Array<string>*/ = [\"ID;PWXL;N;E\"], o/*:Array<string>*/ = [];\n\t\tvar r = safe_decode_range(ws['!ref']), cell/*:Cell*/;\n\t\tvar dense = Array.isArray(ws);\n\t\tvar RS = \"\\r\\n\";\n\n\t\tpreamble.push(\"P;PGeneral\");\n\t\tpreamble.push(\"F;P0;DG0G8;M255\");\n\t\tif(ws['!cols']) write_ws_cols_sylk(preamble, ws['!cols']);\n\t\tif(ws['!rows']) write_ws_rows_sylk(preamble, ws['!rows']);\n\n\t\tpreamble.push(\"B;Y\" + (r.e.r - r.s.r + 1) + \";X\" + (r.e.c - r.s.c + 1) + \";D\" + [r.s.c,r.s.r,r.e.c,r.e.r].join(\" \"));\n\t\tfor(var R = r.s.r; R <= r.e.r; ++R) {\n\t\t\tfor(var C = r.s.c; C <= r.e.c; ++C) {\n\t\t\t\tvar coord = encode_cell({r:R,c:C});\n\t\t\t\tcell = dense ? (ws[R]||[])[C]: ws[coord];\n\t\t\t\tif(!cell || (cell.v == null && (!cell.f || cell.F))) continue;\n\t\t\t\to.push(write_ws_cell_sylk(cell, ws, R, C, opts));\n\t\t\t}\n\t\t}\n\t\treturn preamble.join(RS) + RS + o.join(RS) + RS + \"E\" + RS;\n\t}\n\n\treturn {\n\t\tto_workbook: sylk_to_workbook,\n\t\tto_sheet: sylk_to_sheet,\n\t\tfrom_sheet: sheet_to_sylk\n\t};\n})();\n\nvar DIF = /*#__PURE__*/(function() {\n\tfunction dif_to_aoa(d/*:RawData*/, opts)/*:AOA*/ {\n\t\tswitch(opts.type) {\n\t\t\tcase 'base64': return dif_to_aoa_str(Base64_decode(d), opts);\n\t\t\tcase 'binary': return dif_to_aoa_str(d, opts);\n\t\t\tcase 'buffer': return dif_to_aoa_str(has_buf && Buffer.isBuffer(d) ? d.toString('binary') : a2s(d), opts);\n\t\t\tcase 'array': return dif_to_aoa_str(cc2str(d), opts);\n\t\t}\n\t\tthrow new Error(\"Unrecognized type \" + opts.type);\n\t}\n\tfunction dif_to_aoa_str(str/*:string*/, opts)/*:AOA*/ {\n\t\tvar records = str.split('\\n'), R = -1, C = -1, ri = 0, arr/*:AOA*/ = [];\n\t\tfor (; ri !== records.length; ++ri) {\n\t\t\tif (records[ri].trim() === 'BOT') { arr[++R] = []; C = 0; continue; }\n\t\t\tif (R < 0) continue;\n\t\t\tvar metadata = records[ri].trim().split(\",\");\n\t\t\tvar type = metadata[0], value = metadata[1];\n\t\t\t++ri;\n\t\t\tvar data = records[ri] || \"\";\n\t\t\twhile(((data.match(/[\"]/g)||[]).length & 1) && ri < records.length - 1) data += \"\\n\" + records[++ri];\n\t\t\tdata = data.trim();\n\t\t\tswitch (+type) {\n\t\t\t\tcase -1:\n\t\t\t\t\tif (data === 'BOT') { arr[++R] = []; C = 0; continue; }\n\t\t\t\t\telse if (data !== 'EOD') throw new Error(\"Unrecognized DIF special command \" + data);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0:\n\t\t\t\t\tif(data === 'TRUE') arr[R][C] = true;\n\t\t\t\t\telse if(data === 'FALSE') arr[R][C] = false;\n\t\t\t\t\telse if(!isNaN(fuzzynum(value))) arr[R][C] = fuzzynum(value);\n\t\t\t\t\telse if(!isNaN(fuzzydate(value).getDate())) arr[R][C] = parseDate(value);\n\t\t\t\t\telse arr[R][C] = value;\n\t\t\t\t\t++C; break;\n\t\t\t\tcase 1:\n\t\t\t\t\tdata = data.slice(1,data.length-1);\n\t\t\t\t\tdata = data.replace(/\"\"/g, '\"');\n\t\t\t\t\tif(DIF_XL && data && data.match(/^=\".*\"$/)) data = data.slice(2, -1);\n\t\t\t\t\tarr[R][C++] = data !== '' ? data : null;\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif (data === 'EOD') break;\n\t\t}\n\t\tif(opts && opts.sheetRows) arr = arr.slice(0, opts.sheetRows);\n\t\treturn arr;\n\t}\n\n\tfunction dif_to_sheet(str/*:string*/, opts)/*:Worksheet*/ { return aoa_to_sheet(dif_to_aoa(str, opts), opts); }\n\tfunction dif_to_workbook(str/*:string*/, opts)/*:Workbook*/ { return sheet_to_workbook(dif_to_sheet(str, opts), opts); }\n\n\tvar sheet_to_dif = /*#__PURE__*/(function() {\n\t\tvar push_field = function pf(o/*:Array<string>*/, topic/*:string*/, v/*:number*/, n/*:number*/, s/*:string*/) {\n\t\t\to.push(topic);\n\t\t\to.push(v + \",\" + n);\n\t\t\to.push('\"' + s.replace(/\"/g,'\"\"') + '\"');\n\t\t};\n\t\tvar push_value = function po(o/*:Array<string>*/, type/*:number*/, v/*:any*/, s/*:string*/) {\n\t\t\to.push(type + \",\" + v);\n\t\t\to.push(type == 1 ? '\"' + s.replace(/\"/g,'\"\"') + '\"' : s);\n\t\t};\n\t\treturn function sheet_to_dif(ws/*:Worksheet*//*::, opts:?any*/)/*:string*/ {\n\t\t\tvar o/*:Array<string>*/ = [];\n\t\t\tvar r = safe_decode_range(ws['!ref']), cell/*:Cell*/;\n\t\t\tvar dense = Array.isArray(ws);\n\t\t\tpush_field(o, \"TABLE\", 0, 1, \"sheetjs\");\n\t\t\tpush_field(o, \"VECTORS\", 0, r.e.r - r.s.r + 1,\"\");\n\t\t\tpush_field(o, \"TUPLES\", 0, r.e.c - r.s.c + 1,\"\");\n\t\t\tpush_field(o, \"DATA\", 0, 0,\"\");\n\t\t\tfor(var R = r.s.r; R <= r.e.r; ++R) {\n\t\t\t\tpush_value(o, -1, 0, \"BOT\");\n\t\t\t\tfor(var C = r.s.c; C <= r.e.c; ++C) {\n\t\t\t\t\tvar coord = encode_cell({r:R,c:C});\n\t\t\t\t\tcell = dense ? (ws[R]||[])[C] : ws[coord];\n\t\t\t\t\tif(!cell) { push_value(o, 1, 0, \"\"); continue;}\n\t\t\t\t\tswitch(cell.t) {\n\t\t\t\t\t\tcase 'n':\n\t\t\t\t\t\t\tvar val = DIF_XL ? cell.w : cell.v;\n\t\t\t\t\t\t\tif(!val && cell.v != null) val = cell.v;\n\t\t\t\t\t\t\tif(val == null) {\n\t\t\t\t\t\t\t\tif(DIF_XL && cell.f && !cell.F) push_value(o, 1, 0, \"=\" + cell.f);\n\t\t\t\t\t\t\t\telse push_value(o, 1, 0, \"\");\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse push_value(o, 0, val, \"V\");\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'b':\n\t\t\t\t\t\t\tpush_value(o, 0, cell.v ? 1 : 0, cell.v ? \"TRUE\" : \"FALSE\");\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 's':\n\t\t\t\t\t\t\tpush_value(o, 1, 0, (!DIF_XL || isNaN(cell.v)) ? cell.v : '=\"' + cell.v + '\"');\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'd':\n\t\t\t\t\t\t\tif(!cell.w) cell.w = SSF_format(cell.z || table_fmt[14], datenum(parseDate(cell.v)));\n\t\t\t\t\t\t\tif(DIF_XL) push_value(o, 0, cell.w, \"V\");\n\t\t\t\t\t\t\telse push_value(o, 1, 0, cell.w);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tdefault: push_value(o, 1, 0, \"\");\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tpush_value(o, -1, 0, \"EOD\");\n\t\t\tvar RS = \"\\r\\n\";\n\t\t\tvar oo = o.join(RS);\n\t\t\t//while((oo.length & 0x7F) != 0) oo += \"\\0\";\n\t\t\treturn oo;\n\t\t};\n\t})();\n\treturn {\n\t\tto_workbook: dif_to_workbook,\n\t\tto_sheet: dif_to_sheet,\n\t\tfrom_sheet: sheet_to_dif\n\t};\n})();\n\nvar ETH = /*#__PURE__*/(function() {\n\tfunction decode(s/*:string*/)/*:string*/ { return s.replace(/\\\\b/g,\"\\\\\").replace(/\\\\c/g,\":\").replace(/\\\\n/g,\"\\n\"); }\n\tfunction encode(s/*:string*/)/*:string*/ { return s.replace(/\\\\/g, \"\\\\b\").replace(/:/g, \"\\\\c\").replace(/\\n/g,\"\\\\n\"); }\n\n\tfunction eth_to_aoa(str/*:string*/, opts)/*:AOA*/ {\n\t\tvar records = str.split('\\n'), R = -1, C = -1, ri = 0, arr/*:AOA*/ = [];\n\t\tfor (; ri !== records.length; ++ri) {\n\t\t\tvar record = records[ri].trim().split(\":\");\n\t\t\tif(record[0] !== 'cell') continue;\n\t\t\tvar addr = decode_cell(record[1]);\n\t\t\tif(arr.length <= addr.r) for(R = arr.length; R <= addr.r; ++R) if(!arr[R]) arr[R] = [];\n\t\t\tR = addr.r; C = addr.c;\n\t\t\tswitch(record[2]) {\n\t\t\t\tcase 't': arr[R][C] = decode(record[3]); break;\n\t\t\t\tcase 'v': arr[R][C] = +record[3]; break;\n\t\t\t\tcase 'vtf': var _f = record[record.length - 1];\n\t\t\t\t\t/* falls through */\n\t\t\t\tcase 'vtc':\n\t\t\t\t\tswitch(record[3]) {\n\t\t\t\t\t\tcase 'nl': arr[R][C] = +record[4] ? true : false; break;\n\t\t\t\t\t\tdefault: arr[R][C] = +record[4]; break;\n\t\t\t\t\t}\n\t\t\t\t\tif(record[2] == 'vtf') arr[R][C] = [arr[R][C], _f];\n\t\t\t}\n\t\t}\n\t\tif(opts && opts.sheetRows) arr = arr.slice(0, opts.sheetRows);\n\t\treturn arr;\n\t}\n\n\tfunction eth_to_sheet(d/*:string*/, opts)/*:Worksheet*/ { return aoa_to_sheet(eth_to_aoa(d, opts), opts); }\n\tfunction eth_to_workbook(d/*:string*/, opts)/*:Workbook*/ { return sheet_to_workbook(eth_to_sheet(d, opts), opts); }\n\n\tvar header = [\n\t\t\"socialcalc:version:1.5\",\n\t\t\"MIME-Version: 1.0\",\n\t\t\"Content-Type: multipart/mixed; boundary=SocialCalcSpreadsheetControlSave\"\n\t].join(\"\\n\");\n\n\tvar sep = [\n\t\t\"--SocialCalcSpreadsheetControlSave\",\n\t\t\"Content-type: text/plain; charset=UTF-8\"\n\t].join(\"\\n\") + \"\\n\";\n\n\t/* TODO: the other parts */\n\tvar meta = [\n\t\t\"# SocialCalc Spreadsheet Control Save\",\n\t\t\"part:sheet\"\n\t].join(\"\\n\");\n\n\tvar end = \"--SocialCalcSpreadsheetControlSave--\";\n\n\tfunction sheet_to_eth_data(ws/*:Worksheet*/)/*:string*/ {\n\t\tif(!ws || !ws['!ref']) return \"\";\n\t\tvar o/*:Array<string>*/ = [], oo/*:Array<string>*/ = [], cell, coord = \"\";\n\t\tvar r = decode_range(ws['!ref']);\n\t\tvar dense = Array.isArray(ws);\n\t\tfor(var R = r.s.r; R <= r.e.r; ++R) {\n\t\t\tfor(var C = r.s.c; C <= r.e.c; ++C) {\n\t\t\t\tcoord = encode_cell({r:R,c:C});\n\t\t\t\tcell = dense ? (ws[R]||[])[C] : ws[coord];\n\t\t\t\tif(!cell || cell.v == null || cell.t === 'z') continue;\n\t\t\t\too = [\"cell\", coord, 't'];\n\t\t\t\tswitch(cell.t) {\n\t\t\t\t\tcase 's': case 'str': oo.push(encode(cell.v)); break;\n\t\t\t\t\tcase 'n':\n\t\t\t\t\t\tif(!cell.f) { oo[2]='v'; oo[3]=cell.v; }\n\t\t\t\t\t\telse { oo[2]='vtf'; oo[3]='n'; oo[4]=cell.v; oo[5]=encode(cell.f); }\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'b':\n\t\t\t\t\t\too[2] = 'vt'+(cell.f?'f':'c'); oo[3]='nl'; oo[4]=cell.v?\"1\":\"0\";\n\t\t\t\t\t\too[5] = encode(cell.f||(cell.v?'TRUE':'FALSE'));\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'd':\n\t\t\t\t\t\tvar t = datenum(parseDate(cell.v));\n\t\t\t\t\t\too[2] = 'vtc'; oo[3] = 'nd'; oo[4] = \"\"+t;\n\t\t\t\t\t\too[5] = cell.w || SSF_format(cell.z || table_fmt[14], t);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'e': continue;\n\t\t\t\t}\n\t\t\t\to.push(oo.join(\":\"));\n\t\t\t}\n\t\t}\n\t\to.push(\"sheet:c:\" + (r.e.c-r.s.c+1) + \":r:\" + (r.e.r-r.s.r+1) + \":tvf:1\");\n\t\to.push(\"valueformat:1:text-wiki\");\n\t\t//o.push(\"copiedfrom:\" + ws['!ref']); // clipboard only\n\t\treturn o.join(\"\\n\");\n\t}\n\n\tfunction sheet_to_eth(ws/*:Worksheet*//*::, opts:?any*/)/*:string*/ {\n\t\treturn [header, sep, meta, sep, sheet_to_eth_data(ws), end].join(\"\\n\");\n\t\t// return [\"version:1.5\", sheet_to_eth_data(ws)].join(\"\\n\"); // clipboard form\n\t}\n\n\treturn {\n\t\tto_workbook: eth_to_workbook,\n\t\tto_sheet: eth_to_sheet,\n\t\tfrom_sheet: sheet_to_eth\n\t};\n})();\n\nvar PRN = /*#__PURE__*/(function() {\n\tfunction set_text_arr(data/*:string*/, arr/*:AOA*/, R/*:number*/, C/*:number*/, o/*:any*/) {\n\t\tif(o.raw) arr[R][C] = data;\n\t\telse if(data === \"\"){/* empty */}\n\t\telse if(data === 'TRUE') arr[R][C] = true;\n\t\telse if(data === 'FALSE') arr[R][C] = false;\n\t\telse if(!isNaN(fuzzynum(data))) arr[R][C] = fuzzynum(data);\n\t\telse if(!isNaN(fuzzydate(data).getDate())) arr[R][C] = parseDate(data);\n\t\telse arr[R][C] = data;\n\t}\n\n\tfunction prn_to_aoa_str(f/*:string*/, opts)/*:AOA*/ {\n\t\tvar o = opts || {};\n\t\tvar arr/*:AOA*/ = ([]/*:any*/);\n\t\tif(!f || f.length === 0) return arr;\n\t\tvar lines = f.split(/[\\r\\n]/);\n\t\tvar L = lines.length - 1;\n\t\twhile(L >= 0 && lines[L].length === 0) --L;\n\t\tvar start = 10, idx = 0;\n\t\tvar R = 0;\n\t\tfor(; R <= L; ++R) {\n\t\t\tidx = lines[R].indexOf(\" \");\n\t\t\tif(idx == -1) idx = lines[R].length; else idx++;\n\t\t\tstart = Math.max(start, idx);\n\t\t}\n\t\tfor(R = 0; R <= L; ++R) {\n\t\t\tarr[R] = [];\n\t\t\t/* TODO: confirm that widths are always 10 */\n\t\t\tvar C = 0;\n\t\t\tset_text_arr(lines[R].slice(0, start).trim(), arr, R, C, o);\n\t\t\tfor(C = 1; C <= (lines[R].length - start)/10 + 1; ++C)\n\t\t\t\tset_text_arr(lines[R].slice(start+(C-1)*10,start+C*10).trim(),arr,R,C,o);\n\t\t}\n\t\tif(o.sheetRows) arr = arr.slice(0, o.sheetRows);\n\t\treturn arr;\n\t}\n\n\t// List of accepted CSV separators\n\tvar guess_seps = {\n\t\t/*::[*/0x2C/*::]*/: ',',\n\t\t/*::[*/0x09/*::]*/: \"\\t\",\n\t\t/*::[*/0x3B/*::]*/: ';',\n\t\t/*::[*/0x7C/*::]*/: '|'\n\t};\n\n\t// CSV separator weights to be used in case of equal numbers\n\tvar guess_sep_weights = {\n\t\t/*::[*/0x2C/*::]*/: 3,\n\t\t/*::[*/0x09/*::]*/: 2,\n\t\t/*::[*/0x3B/*::]*/: 1,\n\t\t/*::[*/0x7C/*::]*/: 0\n\t};\n\n\tfunction guess_sep(str) {\n\t\tvar cnt = {}, instr = false, end = 0, cc = 0;\n\t\tfor(;end < str.length;++end) {\n\t\t\tif((cc=str.charCodeAt(end)) == 0x22) instr = !instr;\n\t\t\telse if(!instr && cc in guess_seps) cnt[cc] = (cnt[cc]||0)+1;\n\t\t}\n\n\t\tcc = [];\n\t\tfor(end in cnt) if ( Object.prototype.hasOwnProperty.call(cnt, end) ) {\n\t\t\tcc.push([ cnt[end], end ]);\n\t\t}\n\n\t\tif ( !cc.length ) {\n\t\t\tcnt = guess_sep_weights;\n\t\t\tfor(end in cnt) if ( Object.prototype.hasOwnProperty.call(cnt, end) ) {\n\t\t\t\tcc.push([ cnt[end], end ]);\n\t\t\t}\n\t\t}\n\n\t\tcc.sort(function(a, b) { return a[0] - b[0] || guess_sep_weights[a[1]] - guess_sep_weights[b[1]]; });\n\n\t\treturn guess_seps[cc.pop()[1]] || 0x2C;\n\t}\n\n\tfunction dsv_to_sheet_str(str/*:string*/, opts)/*:Worksheet*/ {\n\t\tvar o = opts || {};\n\t\tvar sep = \"\";\n\t\tif(DENSE != null && o.dense == null) o.dense = DENSE;\n\t\tvar ws/*:Worksheet*/ = o.dense ? ([]/*:any*/) : ({}/*:any*/);\n\t\tvar range/*:Range*/ = ({s: {c:0, r:0}, e: {c:0, r:0}}/*:any*/);\n\n\t\tif(str.slice(0,4) == \"sep=\") {\n\t\t\t// If the line ends in \\r\\n\n\t\t\tif(str.charCodeAt(5) == 13 && str.charCodeAt(6) == 10 ) {\n\t\t\t\tsep = str.charAt(4); str = str.slice(7);\n\t\t\t}\n\t\t\t// If line ends in \\r OR \\n\n\t\t\telse if(str.charCodeAt(5) == 13 || str.charCodeAt(5) == 10 ) {\n\t\t\t\tsep = str.charAt(4); str = str.slice(6);\n\t\t\t}\n\t\t\telse sep = guess_sep(str.slice(0,1024));\n\t\t}\n\t\telse if(o && o.FS) sep = o.FS;\n\t\telse sep = guess_sep(str.slice(0,1024));\n\t\tvar R = 0, C = 0, v = 0;\n\t\tvar start = 0, end = 0, sepcc = sep.charCodeAt(0), instr = false, cc=0, startcc=str.charCodeAt(0);\n\t\tstr = str.replace(/\\r\\n/mg, \"\\n\");\n\t\tvar _re/*:?RegExp*/ = o.dateNF != null ? dateNF_regex(o.dateNF) : null;\n\t\tfunction finish_cell() {\n\t\t\tvar s = str.slice(start, end);\n\t\t\tvar cell = ({}/*:any*/);\n\t\t\tif(s.charAt(0) == '\"' && s.charAt(s.length - 1) == '\"') s = s.slice(1,-1).replace(/\"\"/g,'\"');\n\t\t\tif(s.length === 0) cell.t = 'z';\n\t\t\telse if(o.raw) { cell.t = 's'; cell.v = s; }\n\t\t\telse if(s.trim().length === 0) { cell.t = 's'; cell.v = s; }\n\t\t\telse if(s.charCodeAt(0) == 0x3D) {\n\t\t\t\tif(s.charCodeAt(1) == 0x22 && s.charCodeAt(s.length - 1) == 0x22) { cell.t = 's'; cell.v = s.slice(2,-1).replace(/\"\"/g,'\"'); }\n\t\t\t\telse if(fuzzyfmla(s)) { cell.t = 'n'; cell.f = s.slice(1); }\n\t\t\t\telse { cell.t = 's'; cell.v = s; } }\n\t\t\telse if(s == \"TRUE\") { cell.t = 'b'; cell.v = true; }\n\t\t\telse if(s == \"FALSE\") { cell.t = 'b'; cell.v = false; }\n\t\t\telse if(!isNaN(v = fuzzynum(s))) { cell.t = 'n'; if(o.cellText !== false) cell.w = s; cell.v = v; }\n\t\t\telse if(!isNaN(fuzzydate(s).getDate()) || _re && s.match(_re)) {\n\t\t\t\tcell.z = o.dateNF || table_fmt[14];\n\t\t\t\tvar k = 0;\n\t\t\t\tif(_re && s.match(_re)){ s=dateNF_fix(s, o.dateNF, (s.match(_re)||[])); k=1; }\n\t\t\t\tif(o.cellDates) { cell.t = 'd'; cell.v = parseDate(s, k); }\n\t\t\t\telse { cell.t = 'n'; cell.v = datenum(parseDate(s, k)); }\n\t\t\t\tif(o.cellText !== false) cell.w = SSF_format(cell.z, cell.v instanceof Date ? datenum(cell.v):cell.v);\n\t\t\t\tif(!o.cellNF) delete cell.z;\n\t\t\t} else {\n\t\t\t\tcell.t = 's';\n\t\t\t\tcell.v = s;\n\t\t\t}\n\t\t\tif(cell.t == 'z'){}\n\t\t\telse if(o.dense) { if(!ws[R]) ws[R] = []; ws[R][C] = cell; }\n\t\t\telse ws[encode_cell({c:C,r:R})] = cell;\n\t\t\tstart = end+1; startcc = str.charCodeAt(start);\n\t\t\tif(range.e.c < C) range.e.c = C;\n\t\t\tif(range.e.r < R) range.e.r = R;\n\t\t\tif(cc == sepcc) ++C; else { C = 0; ++R; if(o.sheetRows && o.sheetRows <= R) return true; }\n\t\t}\n\t\touter: for(;end < str.length;++end) switch((cc=str.charCodeAt(end))) {\n\t\t\tcase 0x22: if(startcc === 0x22) instr = !instr; break;\n\t\t\tcase sepcc: case 0x0a: case 0x0d: if(!instr && finish_cell()) break outer; break;\n\t\t\tdefault: break;\n\t\t}\n\t\tif(end - start > 0) finish_cell();\n\n\t\tws['!ref'] = encode_range(range);\n\t\treturn ws;\n\t}\n\n\tfunction prn_to_sheet_str(str/*:string*/, opts)/*:Worksheet*/ {\n\t\tif(!(opts && opts.PRN)) return dsv_to_sheet_str(str, opts);\n\t\tif(opts.FS) return dsv_to_sheet_str(str, opts);\n\t\tif(str.slice(0,4) == \"sep=\") return dsv_to_sheet_str(str, opts);\n\t\tif(str.indexOf(\"\\t\") >= 0 || str.indexOf(\",\") >= 0 || str.indexOf(\";\") >= 0) return dsv_to_sheet_str(str, opts);\n\t\treturn aoa_to_sheet(prn_to_aoa_str(str, opts), opts);\n\t}\n\n\tfunction prn_to_sheet(d/*:RawData*/, opts)/*:Worksheet*/ {\n\t\tvar str = \"\", bytes = opts.type == 'string' ? [0,0,0,0] : firstbyte(d, opts);\n\t\tswitch(opts.type) {\n\t\t\tcase 'base64': str = Base64_decode(d); break;\n\t\t\tcase 'binary': str = d; break;\n\t\t\tcase 'buffer':\n\t\t\t\tif(opts.codepage == 65001) str = d.toString('utf8'); // TODO: test if buf\n\t\t\t\telse if(opts.codepage && typeof $cptable !== 'undefined') str = $cptable.utils.decode(opts.codepage, d);\n\t\t\t\telse str = has_buf && Buffer.isBuffer(d) ? d.toString('binary') : a2s(d);\n\t\t\t\tbreak;\n\t\t\tcase 'array': str = cc2str(d); break;\n\t\t\tcase 'string': str = d; break;\n\t\t\tdefault: throw new Error(\"Unrecognized type \" + opts.type);\n\t\t}\n\t\tif(bytes[0] == 0xEF && bytes[1] == 0xBB && bytes[2] == 0xBF) str = utf8read(str.slice(3));\n\t\telse if(opts.type != 'string' && opts.type != 'buffer' && opts.codepage == 65001) str = utf8read(str);\n\t\telse if((opts.type == 'binary') && typeof $cptable !== 'undefined' && opts.codepage)  str = $cptable.utils.decode(opts.codepage, $cptable.utils.encode(28591,str));\n\t\tif(str.slice(0,19) == \"socialcalc:version:\") return ETH.to_sheet(opts.type == 'string' ? str : utf8read(str), opts);\n\t\treturn prn_to_sheet_str(str, opts);\n\t}\n\n\tfunction prn_to_workbook(d/*:RawData*/, opts)/*:Workbook*/ { return sheet_to_workbook(prn_to_sheet(d, opts), opts); }\n\n\tfunction sheet_to_prn(ws/*:Worksheet*//*::, opts:?any*/)/*:string*/ {\n\t\tvar o/*:Array<string>*/ = [];\n\t\tvar r = safe_decode_range(ws['!ref']), cell/*:Cell*/;\n\t\tvar dense = Array.isArray(ws);\n\t\tfor(var R = r.s.r; R <= r.e.r; ++R) {\n\t\t\tvar oo/*:Array<string>*/ = [];\n\t\t\tfor(var C = r.s.c; C <= r.e.c; ++C) {\n\t\t\t\tvar coord = encode_cell({r:R,c:C});\n\t\t\t\tcell = dense ? (ws[R]||[])[C] : ws[coord];\n\t\t\t\tif(!cell || cell.v == null) { oo.push(\"          \"); continue; }\n\t\t\t\tvar w = (cell.w || (format_cell(cell), cell.w) || \"\").slice(0,10);\n\t\t\t\twhile(w.length < 10) w += \" \";\n\t\t\t\too.push(w + (C === 0 ? \" \" : \"\"));\n\t\t\t}\n\t\t\to.push(oo.join(\"\"));\n\t\t}\n\t\treturn o.join(\"\\n\");\n\t}\n\n\treturn {\n\t\tto_workbook: prn_to_workbook,\n\t\tto_sheet: prn_to_sheet,\n\t\tfrom_sheet: sheet_to_prn\n\t};\n})();\n\n/* Excel defaults to SYLK but warns if data is not valid */\nfunction read_wb_ID(d, opts) {\n\tvar o = opts || {}, OLD_WTF = !!o.WTF; o.WTF = true;\n\ttry {\n\t\tvar out = SYLK.to_workbook(d, o);\n\t\to.WTF = OLD_WTF;\n\t\treturn out;\n\t} catch(e) {\n\t\to.WTF = OLD_WTF;\n\t\tif(!e.message.match(/SYLK bad record ID/) && OLD_WTF) throw e;\n\t\treturn PRN.to_workbook(d, opts);\n\t}\n}\n\nvar WK_ = /*#__PURE__*/(function() {\n\tfunction lotushopper(data, cb/*:RecordHopperCB*/, opts/*:any*/) {\n\t\tif(!data) return;\n\t\tprep_blob(data, data.l || 0);\n\t\tvar Enum = opts.Enum || WK1Enum;\n\t\twhile(data.l < data.length) {\n\t\t\tvar RT = data.read_shift(2);\n\t\t\tvar R = Enum[RT] || Enum[0xFFFF];\n\t\t\tvar length = data.read_shift(2);\n\t\t\tvar tgt = data.l + length;\n\t\t\tvar d = R.f && R.f(data, length, opts);\n\t\t\tdata.l = tgt;\n\t\t\tif(cb(d, R, RT)) return;\n\t\t}\n\t}\n\n\tfunction lotus_to_workbook(d/*:RawData*/, opts) {\n\t\tswitch(opts.type) {\n\t\t\tcase 'base64': return lotus_to_workbook_buf(s2a(Base64_decode(d)), opts);\n\t\t\tcase 'binary': return lotus_to_workbook_buf(s2a(d), opts);\n\t\t\tcase 'buffer':\n\t\t\tcase 'array': return lotus_to_workbook_buf(d, opts);\n\t\t}\n\t\tthrow \"Unsupported type \" + opts.type;\n\t}\n\n\tfunction lotus_to_workbook_buf(d, opts)/*:Workbook*/ {\n\t\tif(!d) return d;\n\t\tvar o = opts || {};\n\t\tif(DENSE != null && o.dense == null) o.dense = DENSE;\n\t\tvar s/*:Worksheet*/ = ((o.dense ? [] : {})/*:any*/), n = \"Sheet1\", next_n = \"\", sidx = 0;\n\t\tvar sheets = {}, snames = [], realnames = [];\n\n\t\tvar refguess = {s: {r:0, c:0}, e: {r:0, c:0} };\n\t\tvar sheetRows = o.sheetRows || 0;\n\n\t\tif(d[2] == 0x00) {\n\t\t\tif(d[3] == 0x08 || d[3] == 0x09) {\n\t\t\t\tif(d.length >= 16 && d[14] == 0x05 && d[15] === 0x6c) throw new Error(\"Unsupported Works 3 for Mac file\");\n\t\t\t}\n\t\t}\n\n\t\tif(d[2] == 0x02) {\n\t\t\to.Enum = WK1Enum;\n\t\t\tlotushopper(d, function(val, R, RT) { switch(RT) {\n\t\t\t\tcase 0x00: /* BOF */\n\t\t\t\t\to.vers = val;\n\t\t\t\t\tif(val >= 0x1000) o.qpro = true;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0x06: refguess = val; break; /* RANGE */\n\t\t\t\tcase 0xCC: if(val) next_n = val; break; /* SHEETNAMECS */\n\t\t\t\tcase 0xDE: next_n = val; break; /* SHEETNAMELP */\n\t\t\t\tcase 0x0F: /* LABEL */\n\t\t\t\tcase 0x33: /* STRING */\n\t\t\t\t\tif(!o.qpro) val[1].v = val[1].v.slice(1);\n\t\t\t\t\t/* falls through */\n\t\t\t\tcase 0x0D: /* INTEGER */\n\t\t\t\tcase 0x0E: /* NUMBER */\n\t\t\t\tcase 0x10: /* FORMULA */\n\t\t\t\t\t/* TODO: actual translation of the format code */\n\t\t\t\t\tif(RT == 0x0E && (val[2] & 0x70) == 0x70 && (val[2] & 0x0F) > 1 && (val[2] & 0x0F) < 15) {\n\t\t\t\t\t\tval[1].z = o.dateNF || table_fmt[14];\n\t\t\t\t\t\tif(o.cellDates) { val[1].t = 'd'; val[1].v = numdate(val[1].v); }\n\t\t\t\t\t}\n\n\t\t\t\t\tif(o.qpro) {\n\t\t\t\t\t\tif(val[3] > sidx) {\n\t\t\t\t\t\t\ts[\"!ref\"] = encode_range(refguess);\n\t\t\t\t\t\t\tsheets[n] = s;\n\t\t\t\t\t\t\tsnames.push(n);\n\t\t\t\t\t\t\ts = (o.dense ? [] : {});\n\t\t\t\t\t\t\trefguess = {s: {r:0, c:0}, e: {r:0, c:0} };\n\t\t\t\t\t\t\tsidx = val[3]; n = next_n || \"Sheet\" + (sidx + 1); next_n = \"\";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tvar tmpcell = o.dense ? (s[val[0].r]||[])[val[0].c] : s[encode_cell(val[0])];\n\t\t\t\t\tif(tmpcell) {\n\t\t\t\t\t\ttmpcell.t = val[1].t; tmpcell.v = val[1].v;\n\t\t\t\t\t\tif(val[1].z != null) tmpcell.z = val[1].z;\n\t\t\t\t\t\tif(val[1].f != null) tmpcell.f = val[1].f;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tif(o.dense) {\n\t\t\t\t\t\tif(!s[val[0].r]) s[val[0].r] = [];\n\t\t\t\t\t\ts[val[0].r][val[0].c] = val[1];\n\t\t\t\t\t} else s[encode_cell(val[0])] = val[1];\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t}}, o);\n\t\t} else if(d[2] == 0x1A || d[2] == 0x0E) {\n\t\t\to.Enum = WK3Enum;\n\t\t\tif(d[2] == 0x0E) { o.qpro = true; d.l = 0; }\n\t\t\tlotushopper(d, function(val, R, RT) { switch(RT) {\n\t\t\t\tcase 0xCC: n = val; break; /* SHEETNAMECS */\n\t\t\t\tcase 0x16: /* LABEL16 */\n\t\t\t\t\tval[1].v = val[1].v.slice(1);\n\t\t\t\t\t/* falls through */\n\t\t\t\tcase 0x17: /* NUMBER17 */\n\t\t\t\tcase 0x18: /* NUMBER18 */\n\t\t\t\tcase 0x19: /* FORMULA19 */\n\t\t\t\tcase 0x25: /* NUMBER25 */\n\t\t\t\tcase 0x27: /* NUMBER27 */\n\t\t\t\tcase 0x28: /* FORMULA28 */\n\t\t\t\t\tif(val[3] > sidx) {\n\t\t\t\t\t\ts[\"!ref\"] = encode_range(refguess);\n\t\t\t\t\t\tsheets[n] = s;\n\t\t\t\t\t\tsnames.push(n);\n\t\t\t\t\t\ts = (o.dense ? [] : {});\n\t\t\t\t\t\trefguess = {s: {r:0, c:0}, e: {r:0, c:0} };\n\t\t\t\t\t\tsidx = val[3]; n = \"Sheet\" + (sidx + 1);\n\t\t\t\t\t}\n\t\t\t\t\tif(sheetRows > 0 && val[0].r >= sheetRows) break;\n\t\t\t\t\tif(o.dense) {\n\t\t\t\t\t\tif(!s[val[0].r]) s[val[0].r] = [];\n\t\t\t\t\t\ts[val[0].r][val[0].c] = val[1];\n\t\t\t\t\t} else s[encode_cell(val[0])] = val[1];\n\t\t\t\t\tif(refguess.e.c < val[0].c) refguess.e.c = val[0].c;\n\t\t\t\t\tif(refguess.e.r < val[0].r) refguess.e.r = val[0].r;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0x1B: /* XFORMAT */\n\t\t\t\t\tif(val[0x36b0]) realnames[val[0x36b0][0]] = val[0x36b0][1];\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0x0601: /* SHEETINFOQP */\n\t\t\t\t\trealnames[val[0]] = val[1]; if(val[0] == sidx) n = val[1]; break;\n\t\t\t\tdefault: break;\n\t\t\t}}, o);\n\t\t} else throw new Error(\"Unrecognized LOTUS BOF \" + d[2]);\n\t\ts[\"!ref\"] = encode_range(refguess);\n\t\tsheets[next_n || n] = s;\n\t\tsnames.push(next_n || n);\n\t\tif(!realnames.length) return { SheetNames: snames, Sheets: sheets };\n\t\tvar osheets = {}, rnames = [];\n\t\t/* TODO: verify no collisions */\n\t\tfor(var i = 0; i < realnames.length; ++i) if(sheets[snames[i]]) {\n\t\t\trnames.push(realnames[i] || snames[i]);\n\t\t\tosheets[realnames[i]] = sheets[realnames[i]] || sheets[snames[i]];\n\t\t} else {\n\t\t\trnames.push(realnames[i]);\n\t\t\tosheets[realnames[i]] = ({ \"!ref\": \"A1\" });\n\t\t}\n\t\treturn { SheetNames: rnames, Sheets: osheets };\n\t}\n\n\tfunction sheet_to_wk1(ws/*:Worksheet*/, opts/*:WriteOpts*/) {\n\t\tvar o = opts || {};\n\t\tif(+o.codepage >= 0) set_cp(+o.codepage);\n\t\tif(o.type == \"string\") throw new Error(\"Cannot write WK1 to JS string\");\n\t\tvar ba = buf_array();\n\t\tvar range = safe_decode_range(ws[\"!ref\"]);\n\t\tvar dense = Array.isArray(ws);\n\t\tvar cols = [];\n\n\t\twrite_biff_rec(ba, 0x00, write_BOF_WK1(0x0406));\n\t\twrite_biff_rec(ba, 0x06, write_RANGE(range));\n\t\tvar max_R = Math.min(range.e.r, 8191);\n\t\tfor(var R = range.s.r; R <= max_R; ++R) {\n\t\t\tvar rr = encode_row(R);\n\t\t\tfor(var C = range.s.c; C <= range.e.c; ++C) {\n\t\t\t\tif(R === range.s.r) cols[C] = encode_col(C);\n\t\t\t\tvar ref = cols[C] + rr;\n\t\t\t\tvar cell = dense ? (ws[R]||[])[C] : ws[ref];\n\t\t\t\tif(!cell || cell.t == \"z\") continue;\n\t\t\t\t/* TODO: formula records */\n\t\t\t\tif(cell.t == \"n\") {\n\t\t\t\t\tif((cell.v|0)==cell.v && cell.v >= -32768 && cell.v <= 32767) write_biff_rec(ba, 0x0d, write_INTEGER(R, C, cell.v));\n\t\t\t\t\telse write_biff_rec(ba, 0x0e, write_NUMBER(R, C, cell.v));\n\t\t\t\t} else {\n\t\t\t\t\tvar str = format_cell(cell);\n\t\t\t\t\twrite_biff_rec(ba, 0x0F, write_LABEL(R, C, str.slice(0, 239)));\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\twrite_biff_rec(ba, 0x01);\n\t\treturn ba.end();\n\t}\n\n\tfunction book_to_wk3(wb/*:Workbook*/, opts/*:WriteOpts*/) {\n\t\tvar o = opts || {};\n\t\tif(+o.codepage >= 0) set_cp(+o.codepage);\n\t\tif(o.type == \"string\") throw new Error(\"Cannot write WK3 to JS string\");\n\t\tvar ba = buf_array();\n\n\t\twrite_biff_rec(ba, 0x00, write_BOF_WK3(wb));\n\n\t\tfor(var i = 0, cnt = 0; i < wb.SheetNames.length; ++i) if((wb.Sheets[wb.SheetNames[i]] || {})[\"!ref\"]) write_biff_rec(ba, 0x1b, write_XFORMAT_SHEETNAME(wb.SheetNames[i], cnt++));\n\n\t\tvar wsidx = 0;\n\t\tfor(i = 0; i < wb.SheetNames.length; ++i) {\n\t\t\tvar ws = wb.Sheets[wb.SheetNames[i]];\n\t\t\tif(!ws || !ws[\"!ref\"]) continue;\n\t\t\tvar range = safe_decode_range(ws[\"!ref\"]);\n\t\t\tvar dense = Array.isArray(ws);\n\t\t\tvar cols = [];\n\t\t\tvar max_R = Math.min(range.e.r, 8191);\n\t\t\tfor(var R = range.s.r; R <= max_R; ++R) {\n\t\t\t\tvar rr = encode_row(R);\n\t\t\t\tfor(var C = range.s.c; C <= range.e.c; ++C) {\n\t\t\t\t\tif(R === range.s.r) cols[C] = encode_col(C);\n\t\t\t\t\tvar ref = cols[C] + rr;\n\t\t\t\t\tvar cell = dense ? (ws[R]||[])[C] : ws[ref];\n\t\t\t\t\tif(!cell || cell.t == \"z\") continue;\n\t\t\t\t\t/* TODO: FORMULA19 NUMBER18 records */\n\t\t\t\t\tif(cell.t == \"n\") {\n\t\t\t\t\t\twrite_biff_rec(ba, 0x17, write_NUMBER_17(R, C, wsidx, cell.v));\n\t\t\t\t\t} else {\n\t\t\t\t\t\tvar str = format_cell(cell);\n\t\t\t\t\t\t/* TODO: max len? */\n\t\t\t\t\t\twrite_biff_rec(ba, 0x16, write_LABEL_16(R, C, wsidx, str.slice(0, 239)));\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\t++wsidx;\n\t\t}\n\n\t\twrite_biff_rec(ba, 0x01);\n\t\treturn ba.end();\n\t}\n\n\n\tfunction write_BOF_WK1(v/*:number*/) {\n\t\tvar out = new_buf(2);\n\t\tout.write_shift(2, v);\n\t\treturn out;\n\t}\n\n\tfunction write_BOF_WK3(wb/*:Workbook*/) {\n\t\tvar out = new_buf(26);\n\t\tout.write_shift(2, 0x1000);\n\t\tout.write_shift(2, 0x0004);\n\t\tout.write_shift(4, 0x0000);\n\t\tvar rows = 0, cols = 0, wscnt = 0;\n\t\tfor(var i = 0; i < wb.SheetNames.length; ++i) {\n\t\t\tvar name = wb.SheetNames[i];\n\t\t\tvar ws = wb.Sheets[name];\n\t\t\tif(!ws || !ws[\"!ref\"]) continue;\n\t\t\t++wscnt;\n\t\t\tvar range = decode_range(ws[\"!ref\"]);\n\t\t\tif(rows < range.e.r) rows = range.e.r;\n\t\t\tif(cols < range.e.c) cols = range.e.c;\n\t\t}\n\t\tif(rows > 8191) rows = 8191;\n\t\tout.write_shift(2, rows);\n\t\tout.write_shift(1, wscnt);\n\t\tout.write_shift(1, cols);\n\t\tout.write_shift(2, 0x00);\n\t\tout.write_shift(2, 0x00);\n\t\tout.write_shift(1, 0x01);\n\t\tout.write_shift(1, 0x02);\n\t\tout.write_shift(4, 0);\n\t\tout.write_shift(4, 0);\n\t\treturn out;\n\t}\n\n\tfunction parse_RANGE(blob, length, opts) {\n\t\tvar o = {s:{c:0,r:0},e:{c:0,r:0}};\n\t\tif(length == 8 && opts.qpro) {\n\t\t\to.s.c = blob.read_shift(1);\n\t\t\tblob.l++;\n\t\t\to.s.r = blob.read_shift(2);\n\t\t\to.e.c = blob.read_shift(1);\n\t\t\tblob.l++;\n\t\t\to.e.r = blob.read_shift(2);\n\t\t\treturn o;\n\t\t}\n\t\to.s.c = blob.read_shift(2);\n\t\to.s.r = blob.read_shift(2);\n\t\tif(length == 12 && opts.qpro) blob.l += 2;\n\t\to.e.c = blob.read_shift(2);\n\t\to.e.r = blob.read_shift(2);\n\t\tif(length == 12 && opts.qpro) blob.l += 2;\n\t\tif(o.s.c == 0xFFFF) o.s.c = o.e.c = o.s.r = o.e.r = 0;\n\t\treturn o;\n\t}\n\tfunction write_RANGE(range) {\n\t\tvar out = new_buf(8);\n\t\tout.write_shift(2, range.s.c);\n\t\tout.write_shift(2, range.s.r);\n\t\tout.write_shift(2, range.e.c);\n\t\tout.write_shift(2, range.e.r);\n\t\treturn out;\n\t}\n\n\tfunction parse_cell(blob, length, opts) {\n\t\tvar o = [{c:0,r:0}, {t:'n',v:0}, 0, 0];\n\t\tif(opts.qpro && opts.vers != 0x5120) {\n\t\t\to[0].c = blob.read_shift(1);\n\t\t\to[3] = blob.read_shift(1);\n\t\t\to[0].r = blob.read_shift(2);\n\t\t\tblob.l+=2;\n\t\t} else {\n\t\t\to[2] = blob.read_shift(1);\n\t\t\to[0].c = blob.read_shift(2); o[0].r = blob.read_shift(2);\n\t\t}\n\t\treturn o;\n\t}\n\n\tfunction parse_LABEL(blob, length, opts) {\n\t\tvar tgt = blob.l + length;\n\t\tvar o = parse_cell(blob, length, opts);\n\t\to[1].t = 's';\n\t\tif(opts.vers == 0x5120) {\n\t\t\tblob.l++;\n\t\t\tvar len = blob.read_shift(1);\n\t\t\to[1].v = blob.read_shift(len, 'utf8');\n\t\t\treturn o;\n\t\t}\n\t\tif(opts.qpro) blob.l++;\n\t\to[1].v = blob.read_shift(tgt - blob.l, 'cstr');\n\t\treturn o;\n\t}\n\tfunction write_LABEL(R, C, s) {\n\t\t/* TODO: encoding */\n\t\tvar o = new_buf(7 + s.length);\n\t\to.write_shift(1, 0xFF);\n\t\to.write_shift(2, C);\n\t\to.write_shift(2, R);\n\t\to.write_shift(1, 0x27); // ??\n\t\tfor(var i = 0; i < o.length; ++i) {\n\t\t\tvar cc = s.charCodeAt(i);\n\t\t\to.write_shift(1, cc >= 0x80 ? 0x5F : cc);\n\t\t}\n\t\to.write_shift(1, 0);\n\t\treturn o;\n\t}\n\n\tfunction parse_INTEGER(blob, length, opts) {\n\t\tvar o = parse_cell(blob, length, opts);\n\t\to[1].v = blob.read_shift(2, 'i');\n\t\treturn o;\n\t}\n\tfunction write_INTEGER(R, C, v) {\n\t\tvar o = new_buf(7);\n\t\to.write_shift(1, 0xFF);\n\t\to.write_shift(2, C);\n\t\to.write_shift(2, R);\n\t\to.write_shift(2, v, 'i');\n\t\treturn o;\n\t}\n\n\tfunction parse_NUMBER(blob, length, opts) {\n\t\tvar o = parse_cell(blob, length, opts);\n\t\to[1].v = blob.read_shift(8, 'f');\n\t\treturn o;\n\t}\n\tfunction write_NUMBER(R, C, v) {\n\t\tvar o = new_buf(13);\n\t\to.write_shift(1, 0xFF);\n\t\to.write_shift(2, C);\n\t\to.write_shift(2, R);\n\t\to.write_shift(8, v, 'f');\n\t\treturn o;\n\t}\n\n\tfunction parse_FORMULA(blob, length, opts) {\n\t\tvar tgt = blob.l + length;\n\t\tvar o = parse_cell(blob, length, opts);\n\t\t/* TODO: formula */\n\t\to[1].v = blob.read_shift(8, 'f');\n\t\tif(opts.qpro) blob.l = tgt;\n\t\telse {\n\t\t\tvar flen = blob.read_shift(2);\n\t\t\twk1_fmla_to_csf(blob.slice(blob.l, blob.l + flen), o);\n\t\t\tblob.l += flen;\n\t\t}\n\t\treturn o;\n\t}\n\n\tfunction wk1_parse_rc(B, V, col) {\n\t\tvar rel = V & 0x8000;\n\t\tV &= ~0x8000;\n\t\tV = (rel ? B : 0) + ((V >= 0x2000) ? V - 0x4000 : V);\n\t\treturn (rel ? \"\" : \"$\") + (col ? encode_col(V) : encode_row(V));\n\t}\n\t/* var oprec = [\n\t\t8, 8, 8, 8, 8, 8, 8, 8, 6, 4, 4, 5, 5, 7, 3, 3,\n\t\t3, 3, 3, 3, 1, 1, 2, 6, 8, 8, 8, 8, 8, 8, 8, 8\n\t]; */\n\t/* TODO: flesh out */\n\tvar FuncTab = {\n\t\t0x33: [\"FALSE\", 0],\n\t\t0x34: [\"TRUE\", 0],\n\t\t0x46: [\"LEN\", 1],\n\t\t0x50: [\"SUM\", 69],\n\t\t0x51: [\"AVERAGEA\", 69],\n\t\t0x52: [\"COUNTA\", 69],\n\t\t0x53: [\"MINA\", 69],\n\t\t0x54: [\"MAXA\", 69],\n\t\t0x6F: [\"T\", 1]\n\t};\n\tvar BinOpTab = [\n\t\t  \"\",   \"\",   \"\",   \"\",   \"\",   \"\",   \"\",   \"\", // eslint-disable-line no-mixed-spaces-and-tabs\n\t\t  \"\",  \"+\",  \"-\",  \"*\",  \"/\",  \"^\",  \"=\", \"<>\", // eslint-disable-line no-mixed-spaces-and-tabs\n\t\t\"<=\", \">=\",  \"<\",  \">\",   \"\",   \"\",   \"\",   \"\", // eslint-disable-line no-mixed-spaces-and-tabs\n\t\t \"&\",   \"\",   \"\",   \"\",   \"\",   \"\",   \"\",   \"\"  // eslint-disable-line no-mixed-spaces-and-tabs\n\t];\n\n\tfunction wk1_fmla_to_csf(blob, o) {\n\t\tprep_blob(blob, 0);\n\t\tvar out = [], argc = 0, R = \"\", C = \"\", argL = \"\", argR = \"\";\n\t\twhile(blob.l < blob.length) {\n\t\t\tvar cc = blob[blob.l++];\n\t\t\tswitch(cc) {\n\t\t\t\tcase 0x00: out.push(blob.read_shift(8, 'f')); break;\n\t\t\t\tcase 0x01: {\n\t\t\t\t\tC = wk1_parse_rc(o[0].c, blob.read_shift(2), true);\n\t\t\t\t\tR = wk1_parse_rc(o[0].r, blob.read_shift(2), false);\n\t\t\t\t\tout.push(C + R);\n\t\t\t\t} break;\n\t\t\t\tcase 0x02: {\n\t\t\t\t\tvar c = wk1_parse_rc(o[0].c, blob.read_shift(2), true);\n\t\t\t\t\tvar r = wk1_parse_rc(o[0].r, blob.read_shift(2), false);\n\t\t\t\t\tC = wk1_parse_rc(o[0].c, blob.read_shift(2), true);\n\t\t\t\t\tR = wk1_parse_rc(o[0].r, blob.read_shift(2), false);\n\t\t\t\t\tout.push(c + r + \":\" + C + R);\n\t\t\t\t} break;\n\t\t\t\tcase 0x03:\n\t\t\t\t\tif(blob.l < blob.length) { console.error(\"WK1 premature formula end\"); return; }\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0x04: out.push(\"(\" + out.pop() + \")\"); break;\n\t\t\t\tcase 0x05: out.push(blob.read_shift(2)); break;\n\t\t\t\tcase 0x06: {\n\t\t\t\t\t/* TODO: text encoding */\n\t\t\t\t\tvar Z = \"\"; while((cc = blob[blob.l++])) Z += String.fromCharCode(cc);\n\t\t\t\t\tout.push('\"' + Z.replace(/\"/g, '\"\"') + '\"');\n\t\t\t\t} break;\n\n\t\t\t\tcase 0x08: out.push(\"-\" + out.pop()); break;\n\t\t\t\tcase 0x17: out.push(\"+\" + out.pop()); break;\n\t\t\t\tcase 0x16: out.push(\"NOT(\" + out.pop() + \")\"); break;\n\n\t\t\t\tcase 0x14: case 0x15: {\n\t\t\t\t\targR = out.pop(); argL = out.pop();\n\t\t\t\t\tout.push([\"AND\", \"OR\"][cc - 0x14] + \"(\" + argL + \",\" + argR + \")\");\n\t\t\t\t} break;\n\n\t\t\t\tdefault:\n\t\t\t\t\tif(cc < 0x20 && BinOpTab[cc]) {\n\t\t\t\t\t\targR = out.pop(); argL = out.pop();\n\t\t\t\t\t\tout.push(argL + BinOpTab[cc] + argR);\n\t\t\t\t\t} else if(FuncTab[cc]) {\n\t\t\t\t\t\targc = FuncTab[cc][1];\n\t\t\t\t\t\tif(argc == 69) argc = blob[blob.l++];\n\t\t\t\t\t\tif(argc > out.length) { console.error(\"WK1 bad formula parse 0x\" + cc.toString(16) + \":|\" + out.join(\"|\") + \"|\"); return; }\n\t\t\t\t\t\tvar args = out.slice(-argc);\n\t\t\t\t\t\tout.length -= argc;\n\t\t\t\t\t\tout.push(FuncTab[cc][0] + \"(\" + args.join(\",\") + \")\");\n\t\t\t\t\t}\n\t\t\t\t\telse if(cc <= 0x07) return console.error(\"WK1 invalid opcode \" + cc.toString(16));\n\t\t\t\t\telse if(cc <= 0x18) return console.error(\"WK1 unsupported op \" + cc.toString(16));\n\t\t\t\t\telse if(cc <= 0x1E) return console.error(\"WK1 invalid opcode \" + cc.toString(16));\n\t\t\t\t\telse if(cc <= 0x73) return console.error(\"WK1 unsupported function opcode \" + cc.toString(16));\n\t\t\t\t\t// possible future functions ??\n\t\t\t\t\telse return console.error(\"WK1 unrecognized opcode \" + cc.toString(16));\n\t\t\t}\n\t\t}\n\t\tif(out.length == 1) o[1].f = \"\" + out[0];\n\t\telse console.error(\"WK1 bad formula parse |\" + out.join(\"|\") + \"|\");\n\t}\n\n\n\tfunction parse_cell_3(blob/*::, length*/) {\n\t\tvar o = [{c:0,r:0}, {t:'n',v:0}, 0];\n\t\to[0].r = blob.read_shift(2); o[3] = blob[blob.l++]; o[0].c = blob[blob.l++];\n\t\treturn o;\n\t}\n\n\tfunction parse_LABEL_16(blob, length) {\n\t\tvar o = parse_cell_3(blob, length);\n\t\to[1].t = 's';\n\t\to[1].v = blob.read_shift(length - 4, 'cstr');\n\t\treturn o;\n\t}\n\tfunction write_LABEL_16(R, C, wsidx, s) {\n\t\t/* TODO: encoding */\n\t\tvar o = new_buf(6 + s.length);\n\t\to.write_shift(2, R);\n\t\to.write_shift(1, wsidx);\n\t\to.write_shift(1, C);\n\t\to.write_shift(1, 0x27);\n\t\tfor(var i = 0; i < s.length; ++i) {\n\t\t\tvar cc = s.charCodeAt(i);\n\t\t\to.write_shift(1, cc >= 0x80 ? 0x5F : cc);\n\t\t}\n\t\to.write_shift(1, 0);\n\t\treturn o;\n\t}\n\n\tfunction parse_NUMBER_18(blob, length) {\n\t\tvar o = parse_cell_3(blob, length);\n\t\to[1].v = blob.read_shift(2);\n\t\tvar v = o[1].v >> 1;\n\t\tif(o[1].v & 0x1) {\n\t\t\tswitch(v & 0x07) {\n\t\t\t\tcase 0: v = (v >> 3) * 5000; break;\n\t\t\t\tcase 1: v = (v >> 3) * 500; break;\n\t\t\t\tcase 2: v = (v >> 3) / 20; break;\n\t\t\t\tcase 3: v = (v >> 3) / 200; break;\n\t\t\t\tcase 4: v = (v >> 3) / 2000; break;\n\t\t\t\tcase 5: v = (v >> 3) / 20000; break;\n\t\t\t\tcase 6: v = (v >> 3) / 16; break;\n\t\t\t\tcase 7: v = (v >> 3) / 64; break;\n\t\t\t}\n\t\t}\n\t\to[1].v = v;\n\t\treturn o;\n\t}\n\n\tfunction parse_NUMBER_17(blob, length) {\n\t\tvar o = parse_cell_3(blob, length);\n\t\tvar v1 = blob.read_shift(4);\n\t\tvar v2 = blob.read_shift(4);\n\t\tvar e = blob.read_shift(2);\n\t\tif(e == 0xFFFF) {\n\t\t\tif(v1 === 0 && v2 === 0xC0000000) { o[1].t = \"e\"; o[1].v = 0x0F; } // ERR -> #VALUE!\n\t\t\telse if(v1 === 0 && v2 === 0xD0000000) { o[1].t = \"e\"; o[1].v = 0x2A; } // NA -> #N/A\n\t\t\telse o[1].v = 0;\n\t\t\treturn o;\n\t\t}\n\t\tvar s = e & 0x8000; e = (e&0x7FFF) - 16446;\n\t\to[1].v = (1 - s*2) * (v2 * Math.pow(2, e+32) + v1 * Math.pow(2, e));\n\t\treturn o;\n\t}\n\tfunction write_NUMBER_17(R, C, wsidx, v) {\n\t\tvar o = new_buf(14);\n\t\to.write_shift(2, R);\n\t\to.write_shift(1, wsidx);\n\t\to.write_shift(1, C);\n\t\tif(v == 0) {\n\t\t\to.write_shift(4, 0);\n\t\t\to.write_shift(4, 0);\n\t\t\to.write_shift(2, 0xFFFF);\n\t\t\treturn o;\n\t\t}\n\t\tvar s = 0, e = 0, v1 = 0, v2 = 0;\n\t\tif(v < 0) { s = 1; v = -v; }\n\t\te = Math.log2(v) | 0;\n\t\tv /= Math.pow(2, e-31);\n\t\tv2 = (v)>>>0;\n\t\tif((v2&0x80000000) == 0) { v/=2; ++e; v2 = v >>> 0; }\n\t\tv -= v2;\n\t\tv2 |= 0x80000000;\n\t\tv2 >>>= 0;\n\t\tv *= Math.pow(2, 32);\n\t\tv1 = v>>>0;\n\t\to.write_shift(4, v1);\n\t\to.write_shift(4, v2);\n\t\te += 0x3FFF + (s ? 0x8000 : 0);\n\t\to.write_shift(2, e);\n\t\treturn o;\n\t}\n\n\tfunction parse_FORMULA_19(blob, length) {\n\t\tvar o = parse_NUMBER_17(blob, 14);\n\t\tblob.l += length - 14; /* TODO: WK3 formula */\n\t\treturn o;\n\t}\n\n\tfunction parse_NUMBER_25(blob, length) {\n\t\tvar o = parse_cell_3(blob, length);\n\t\tvar v1 = blob.read_shift(4);\n\t\to[1].v = v1 >> 6;\n\t\treturn o;\n\t}\n\n\tfunction parse_NUMBER_27(blob, length) {\n\t\tvar o = parse_cell_3(blob, length);\n\t\tvar v1 = blob.read_shift(8,'f');\n\t\to[1].v = v1;\n\t\treturn o;\n\t}\n\n\tfunction parse_FORMULA_28(blob, length) {\n\t\tvar o = parse_NUMBER_27(blob, 14);\n\t\tblob.l += length - 10; /* TODO: formula */\n\t\treturn o;\n\t}\n\n\tfunction parse_SHEETNAMECS(blob, length) {\n\t\treturn blob[blob.l + length - 1] == 0 ? blob.read_shift(length, 'cstr') : \"\";\n\t}\n\n\tfunction parse_SHEETNAMELP(blob, length) {\n\t\tvar len = blob[blob.l++];\n\t\tif(len > length - 1) len = length - 1;\n\t\tvar o = \"\"; while(o.length < len) o += String.fromCharCode(blob[blob.l++]);\n\t\treturn o;\n\t}\n\n\tfunction parse_SHEETINFOQP(blob, length, opts) {\n\t\tif(!opts.qpro || length < 21) return;\n\t\tvar id = blob.read_shift(1);\n\t\tblob.l += 17;\n\t\tblob.l += 1; //var len = blob.read_shift(1);\n\t\tblob.l += 2;\n\t\tvar nm = blob.read_shift(length - 21, 'cstr');\n\t\treturn [id, nm];\n\t}\n\n\tfunction parse_XFORMAT(blob, length) {\n\t\tvar o = {}, tgt = blob.l + length;\n\t\twhile(blob.l < tgt) {\n\t\t\tvar dt = blob.read_shift(2);\n\t\t\tif(dt == 0x36b0) {\n\t\t\t\to[dt] = [0, \"\"];\n\t\t\t\to[dt][0] = blob.read_shift(2);\n\t\t\t\twhile(blob[blob.l]) { o[dt][1] += String.fromCharCode(blob[blob.l]); blob.l++; } blob.l++;\n\t\t\t}\n\t\t\t// TODO: 0x3a99 ??\n\t\t}\n\t\treturn o;\n\t}\n\tfunction write_XFORMAT_SHEETNAME(name, wsidx) {\n\t\tvar out = new_buf(5 + name.length);\n\t\tout.write_shift(2, 0x36b0);\n\t\tout.write_shift(2, wsidx);\n\t\tfor(var i = 0; i < name.length; ++i) {\n\t\t\tvar cc = name.charCodeAt(i);\n\t\t\tout[out.l++] = cc > 0x7F ? 0x5F : cc;\n\t\t}\n\t\tout[out.l++] = 0;\n\t\treturn out;\n\t}\n\n\tvar WK1Enum = {\n\t\t/*::[*/0x0000/*::]*/: { n:\"BOF\", f:parseuint16 },\n\t\t/*::[*/0x0001/*::]*/: { n:\"EOF\" },\n\t\t/*::[*/0x0002/*::]*/: { n:\"CALCMODE\" },\n\t\t/*::[*/0x0003/*::]*/: { n:\"CALCORDER\" },\n\t\t/*::[*/0x0004/*::]*/: { n:\"SPLIT\" },\n\t\t/*::[*/0x0005/*::]*/: { n:\"SYNC\" },\n\t\t/*::[*/0x0006/*::]*/: { n:\"RANGE\", f:parse_RANGE },\n\t\t/*::[*/0x0007/*::]*/: { n:\"WINDOW1\" },\n\t\t/*::[*/0x0008/*::]*/: { n:\"COLW1\" },\n\t\t/*::[*/0x0009/*::]*/: { n:\"WINTWO\" },\n\t\t/*::[*/0x000A/*::]*/: { n:\"COLW2\" },\n\t\t/*::[*/0x000B/*::]*/: { n:\"NAME\" },\n\t\t/*::[*/0x000C/*::]*/: { n:\"BLANK\" },\n\t\t/*::[*/0x000D/*::]*/: { n:\"INTEGER\", f:parse_INTEGER },\n\t\t/*::[*/0x000E/*::]*/: { n:\"NUMBER\", f:parse_NUMBER },\n\t\t/*::[*/0x000F/*::]*/: { n:\"LABEL\", f:parse_LABEL },\n\t\t/*::[*/0x0010/*::]*/: { n:\"FORMULA\", f:parse_FORMULA },\n\t\t/*::[*/0x0018/*::]*/: { n:\"TABLE\" },\n\t\t/*::[*/0x0019/*::]*/: { n:\"ORANGE\" },\n\t\t/*::[*/0x001A/*::]*/: { n:\"PRANGE\" },\n\t\t/*::[*/0x001B/*::]*/: { n:\"SRANGE\" },\n\t\t/*::[*/0x001C/*::]*/: { n:\"FRANGE\" },\n\t\t/*::[*/0x001D/*::]*/: { n:\"KRANGE1\" },\n\t\t/*::[*/0x0020/*::]*/: { n:\"HRANGE\" },\n\t\t/*::[*/0x0023/*::]*/: { n:\"KRANGE2\" },\n\t\t/*::[*/0x0024/*::]*/: { n:\"PROTEC\" },\n\t\t/*::[*/0x0025/*::]*/: { n:\"FOOTER\" },\n\t\t/*::[*/0x0026/*::]*/: { n:\"HEADER\" },\n\t\t/*::[*/0x0027/*::]*/: { n:\"SETUP\" },\n\t\t/*::[*/0x0028/*::]*/: { n:\"MARGINS\" },\n\t\t/*::[*/0x0029/*::]*/: { n:\"LABELFMT\" },\n\t\t/*::[*/0x002A/*::]*/: { n:\"TITLES\" },\n\t\t/*::[*/0x002B/*::]*/: { n:\"SHEETJS\" },\n\t\t/*::[*/0x002D/*::]*/: { n:\"GRAPH\" },\n\t\t/*::[*/0x002E/*::]*/: { n:\"NGRAPH\" },\n\t\t/*::[*/0x002F/*::]*/: { n:\"CALCCOUNT\" },\n\t\t/*::[*/0x0030/*::]*/: { n:\"UNFORMATTED\" },\n\t\t/*::[*/0x0031/*::]*/: { n:\"CURSORW12\" },\n\t\t/*::[*/0x0032/*::]*/: { n:\"WINDOW\" },\n\t\t/*::[*/0x0033/*::]*/: { n:\"STRING\", f:parse_LABEL },\n\t\t/*::[*/0x0037/*::]*/: { n:\"PASSWORD\" },\n\t\t/*::[*/0x0038/*::]*/: { n:\"LOCKED\" },\n\t\t/*::[*/0x003C/*::]*/: { n:\"QUERY\" },\n\t\t/*::[*/0x003D/*::]*/: { n:\"QUERYNAME\" },\n\t\t/*::[*/0x003E/*::]*/: { n:\"PRINT\" },\n\t\t/*::[*/0x003F/*::]*/: { n:\"PRINTNAME\" },\n\t\t/*::[*/0x0040/*::]*/: { n:\"GRAPH2\" },\n\t\t/*::[*/0x0041/*::]*/: { n:\"GRAPHNAME\" },\n\t\t/*::[*/0x0042/*::]*/: { n:\"ZOOM\" },\n\t\t/*::[*/0x0043/*::]*/: { n:\"SYMSPLIT\" },\n\t\t/*::[*/0x0044/*::]*/: { n:\"NSROWS\" },\n\t\t/*::[*/0x0045/*::]*/: { n:\"NSCOLS\" },\n\t\t/*::[*/0x0046/*::]*/: { n:\"RULER\" },\n\t\t/*::[*/0x0047/*::]*/: { n:\"NNAME\" },\n\t\t/*::[*/0x0048/*::]*/: { n:\"ACOMM\" },\n\t\t/*::[*/0x0049/*::]*/: { n:\"AMACRO\" },\n\t\t/*::[*/0x004A/*::]*/: { n:\"PARSE\" },\n\t\t/*::[*/0x0066/*::]*/: { n:\"PRANGES??\" },\n\t\t/*::[*/0x0067/*::]*/: { n:\"RRANGES??\" },\n\t\t/*::[*/0x0068/*::]*/: { n:\"FNAME??\" },\n\t\t/*::[*/0x0069/*::]*/: { n:\"MRANGES??\" },\n\t\t/*::[*/0x00CC/*::]*/: { n:\"SHEETNAMECS\", f:parse_SHEETNAMECS },\n\t\t/*::[*/0x00DE/*::]*/: { n:\"SHEETNAMELP\", f:parse_SHEETNAMELP },\n\t\t/*::[*/0xFFFF/*::]*/: { n:\"\" }\n\t};\n\n\tvar WK3Enum = {\n\t\t/*::[*/0x0000/*::]*/: { n:\"BOF\" },\n\t\t/*::[*/0x0001/*::]*/: { n:\"EOF\" },\n\t\t/*::[*/0x0002/*::]*/: { n:\"PASSWORD\" },\n\t\t/*::[*/0x0003/*::]*/: { n:\"CALCSET\" },\n\t\t/*::[*/0x0004/*::]*/: { n:\"WINDOWSET\" },\n\t\t/*::[*/0x0005/*::]*/: { n:\"SHEETCELLPTR\" },\n\t\t/*::[*/0x0006/*::]*/: { n:\"SHEETLAYOUT\" },\n\t\t/*::[*/0x0007/*::]*/: { n:\"COLUMNWIDTH\" },\n\t\t/*::[*/0x0008/*::]*/: { n:\"HIDDENCOLUMN\" },\n\t\t/*::[*/0x0009/*::]*/: { n:\"USERRANGE\" },\n\t\t/*::[*/0x000A/*::]*/: { n:\"SYSTEMRANGE\" },\n\t\t/*::[*/0x000B/*::]*/: { n:\"ZEROFORCE\" },\n\t\t/*::[*/0x000C/*::]*/: { n:\"SORTKEYDIR\" },\n\t\t/*::[*/0x000D/*::]*/: { n:\"FILESEAL\" },\n\t\t/*::[*/0x000E/*::]*/: { n:\"DATAFILLNUMS\" },\n\t\t/*::[*/0x000F/*::]*/: { n:\"PRINTMAIN\" },\n\t\t/*::[*/0x0010/*::]*/: { n:\"PRINTSTRING\" },\n\t\t/*::[*/0x0011/*::]*/: { n:\"GRAPHMAIN\" },\n\t\t/*::[*/0x0012/*::]*/: { n:\"GRAPHSTRING\" },\n\t\t/*::[*/0x0013/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0014/*::]*/: { n:\"ERRCELL\" },\n\t\t/*::[*/0x0015/*::]*/: { n:\"NACELL\" },\n\t\t/*::[*/0x0016/*::]*/: { n:\"LABEL16\", f:parse_LABEL_16},\n\t\t/*::[*/0x0017/*::]*/: { n:\"NUMBER17\", f:parse_NUMBER_17 },\n\t\t/*::[*/0x0018/*::]*/: { n:\"NUMBER18\", f:parse_NUMBER_18 },\n\t\t/*::[*/0x0019/*::]*/: { n:\"FORMULA19\", f:parse_FORMULA_19},\n\t\t/*::[*/0x001A/*::]*/: { n:\"FORMULA1A\" },\n\t\t/*::[*/0x001B/*::]*/: { n:\"XFORMAT\", f:parse_XFORMAT },\n\t\t/*::[*/0x001C/*::]*/: { n:\"DTLABELMISC\" },\n\t\t/*::[*/0x001D/*::]*/: { n:\"DTLABELCELL\" },\n\t\t/*::[*/0x001E/*::]*/: { n:\"GRAPHWINDOW\" },\n\t\t/*::[*/0x001F/*::]*/: { n:\"CPA\" },\n\t\t/*::[*/0x0020/*::]*/: { n:\"LPLAUTO\" },\n\t\t/*::[*/0x0021/*::]*/: { n:\"QUERY\" },\n\t\t/*::[*/0x0022/*::]*/: { n:\"HIDDENSHEET\" },\n\t\t/*::[*/0x0023/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0025/*::]*/: { n:\"NUMBER25\", f:parse_NUMBER_25 },\n\t\t/*::[*/0x0026/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0027/*::]*/: { n:\"NUMBER27\", f:parse_NUMBER_27 },\n\t\t/*::[*/0x0028/*::]*/: { n:\"FORMULA28\", f:parse_FORMULA_28 },\n\t\t/*::[*/0x008E/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0093/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0096/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0097/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0098/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0099/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x009A/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x009B/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x009C/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x00A3/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x00AE/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x00AF/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x00B0/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x00B1/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x00B8/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x00B9/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x00BA/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x00BB/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x00BC/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x00C3/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x00C9/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x00CC/*::]*/: { n:\"SHEETNAMECS\", f:parse_SHEETNAMECS },\n\t\t/*::[*/0x00CD/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x00CE/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x00CF/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x00D0/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0100/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0103/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0104/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0105/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0106/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0107/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0109/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x010A/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x010B/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x010C/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x010E/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x010F/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0180/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0185/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0186/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0189/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x018C/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0200/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0202/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0201/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0204/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0205/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0280/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0281/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0282/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0283/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0284/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0285/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0286/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0287/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0288/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0292/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0293/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0294/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0295/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0296/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0299/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x029A/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0300/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0304/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0601/*::]*/: { n:\"SHEETINFOQP\", f:parse_SHEETINFOQP },\n\t\t/*::[*/0x0640/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0642/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0701/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0702/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0703/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0704/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0780/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0800/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0801/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0804/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0A80/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x2AF6/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x3231/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x6E49/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x6F44/*::]*/: { n:\"??\" },\n\t\t/*::[*/0xFFFF/*::]*/: { n:\"\" }\n\t};\n\treturn {\n\t\tsheet_to_wk1: sheet_to_wk1,\n\t\tbook_to_wk3: book_to_wk3,\n\t\tto_workbook: lotus_to_workbook\n\t};\n})();\n/* 18.4.7 rPr CT_RPrElt */\nfunction parse_rpr(rpr) {\n\tvar font = {}, m = rpr.match(tagregex), i = 0;\n\tvar pass = false;\n\tif(m) for(;i!=m.length; ++i) {\n\t\tvar y = parsexmltag(m[i]);\n\t\tswitch(y[0].replace(/\\w*:/g,\"\")) {\n\t\t\t/* 18.8.12 condense CT_BooleanProperty */\n\t\t\t/* ** not required . */\n\t\t\tcase '<condense': break;\n\t\t\t/* 18.8.17 extend CT_BooleanProperty */\n\t\t\t/* ** not required . */\n\t\t\tcase '<extend': break;\n\t\t\t/* 18.8.36 shadow CT_BooleanProperty */\n\t\t\t/* ** not required . */\n\t\t\tcase '<shadow':\n\t\t\t\tif(!y.val) break;\n\t\t\t\t/* falls through */\n\t\t\tcase '<shadow>':\n\t\t\tcase '<shadow/>': font.shadow = 1; break;\n\t\t\tcase '</shadow>': break;\n\n\t\t\t/* 18.4.1 charset CT_IntProperty TODO */\n\t\t\tcase '<charset':\n\t\t\t\tif(y.val == '1') break;\n\t\t\t\tfont.cp = CS2CP[parseInt(y.val, 10)];\n\t\t\t\tbreak;\n\n\t\t\t/* 18.4.2 outline CT_BooleanProperty TODO */\n\t\t\tcase '<outline':\n\t\t\t\tif(!y.val) break;\n\t\t\t\t/* falls through */\n\t\t\tcase '<outline>':\n\t\t\tcase '<outline/>': font.outline = 1; break;\n\t\t\tcase '</outline>': break;\n\n\t\t\t/* 18.4.5 rFont CT_FontName */\n\t\t\tcase '<rFont': font.name = y.val; break;\n\n\t\t\t/* 18.4.11 sz CT_FontSize */\n\t\t\tcase '<sz': font.sz = y.val; break;\n\n\t\t\t/* 18.4.10 strike CT_BooleanProperty */\n\t\t\tcase '<strike':\n\t\t\t\tif(!y.val) break;\n\t\t\t\t/* falls through */\n\t\t\tcase '<strike>':\n\t\t\tcase '<strike/>': font.strike = 1; break;\n\t\t\tcase '</strike>': break;\n\n\t\t\t/* 18.4.13 u CT_UnderlineProperty */\n\t\t\tcase '<u':\n\t\t\t\tif(!y.val) break;\n\t\t\t\tswitch(y.val) {\n\t\t\t\t\tcase 'double': font.uval = \"double\"; break;\n\t\t\t\t\tcase 'singleAccounting': font.uval = \"single-accounting\"; break;\n\t\t\t\t\tcase 'doubleAccounting': font.uval = \"double-accounting\"; break;\n\t\t\t\t}\n\t\t\t\t/* falls through */\n\t\t\tcase '<u>':\n\t\t\tcase '<u/>': font.u = 1; break;\n\t\t\tcase '</u>': break;\n\n\t\t\t/* 18.8.2 b */\n\t\t\tcase '<b':\n\t\t\t\tif(y.val == '0') break;\n\t\t\t\t/* falls through */\n\t\t\tcase '<b>':\n\t\t\tcase '<b/>': font.b = 1; break;\n\t\t\tcase '</b>': break;\n\n\t\t\t/* 18.8.26 i */\n\t\t\tcase '<i':\n\t\t\t\tif(y.val == '0') break;\n\t\t\t\t/* falls through */\n\t\t\tcase '<i>':\n\t\t\tcase '<i/>': font.i = 1; break;\n\t\t\tcase '</i>': break;\n\n\t\t\t/* 18.3.1.15 color CT_Color TODO: tint, theme, auto, indexed */\n\t\t\tcase '<color':\n\t\t\t\tif(y.rgb) font.color = y.rgb.slice(2,8);\n\t\t\t\tbreak;\n\t\t\tcase '<color>': case '<color/>': case '</color>': break;\n\n\t\t\t/* 18.8.18 family ST_FontFamily */\n\t\t\tcase '<family': font.family = y.val; break;\n\t\t\tcase '<family>': case '<family/>': case '</family>': break;\n\n\t\t\t/* 18.4.14 vertAlign CT_VerticalAlignFontProperty TODO */\n\t\t\tcase '<vertAlign': font.valign = y.val; break;\n\t\t\tcase '<vertAlign>': case '<vertAlign/>': case '</vertAlign>': break;\n\n\t\t\t/* 18.8.35 scheme CT_FontScheme TODO */\n\t\t\tcase '<scheme': break;\n\t\t\tcase '<scheme>': case '<scheme/>': case '</scheme>': break;\n\n\t\t\t/* 18.2.10 extLst CT_ExtensionList ? */\n\t\t\tcase '<extLst': case '<extLst>': case '</extLst>': break;\n\t\t\tcase '<ext': pass = true; break;\n\t\t\tcase '</ext>': pass = false; break;\n\t\t\tdefault:\n\t\t\t\tif(y[0].charCodeAt(1) !== 47 && !pass) throw new Error('Unrecognized rich format ' + y[0]);\n\t\t}\n\t}\n\treturn font;\n}\n\nvar parse_rs = /*#__PURE__*/(function() {\n\tvar tregex = matchtag(\"t\"), rpregex = matchtag(\"rPr\");\n\t/* 18.4.4 r CT_RElt */\n\tfunction parse_r(r) {\n\t\t/* 18.4.12 t ST_Xstring */\n\t\tvar t = r.match(tregex)/*, cp = 65001*/;\n\t\tif(!t) return {t:\"s\", v:\"\"};\n\n\t\tvar o/*:Cell*/ = ({t:'s', v:unescapexml(t[1])}/*:any*/);\n\t\tvar rpr = r.match(rpregex);\n\t\tif(rpr) o.s = parse_rpr(rpr[1]);\n\t\treturn o;\n\t}\n\tvar rregex = /<(?:\\w+:)?r>/g, rend = /<\\/(?:\\w+:)?r>/;\n\treturn function parse_rs(rs) {\n\t\treturn rs.replace(rregex,\"\").split(rend).map(parse_r).filter(function(r) { return r.v; });\n\t};\n})();\n\n\n/* Parse a list of <r> tags */\nvar rs_to_html = /*#__PURE__*/(function parse_rs_factory() {\n\tvar nlregex = /(\\r\\n|\\n)/g;\n\tfunction parse_rpr2(font, intro, outro) {\n\t\tvar style/*:Array<string>*/ = [];\n\n\t\tif(font.u) style.push(\"text-decoration: underline;\");\n\t\tif(font.uval) style.push(\"text-underline-style:\" + font.uval + \";\");\n\t\tif(font.sz) style.push(\"font-size:\" + font.sz + \"pt;\");\n\t\tif(font.outline) style.push(\"text-effect: outline;\");\n\t\tif(font.shadow) style.push(\"text-shadow: auto;\");\n\t\tintro.push('<span style=\"' + style.join(\"\") + '\">');\n\n\t\tif(font.b) { intro.push(\"<b>\"); outro.push(\"</b>\"); }\n\t\tif(font.i) { intro.push(\"<i>\"); outro.push(\"</i>\"); }\n\t\tif(font.strike) { intro.push(\"<s>\"); outro.push(\"</s>\"); }\n\n\t\tvar align = font.valign || \"\";\n\t\tif(align == \"superscript\" || align == \"super\") align = \"sup\";\n\t\telse if(align == \"subscript\") align = \"sub\";\n\t\tif(align != \"\") { intro.push(\"<\" + align + \">\"); outro.push(\"</\" + align + \">\"); }\n\n\t\toutro.push(\"</span>\");\n\t\treturn font;\n\t}\n\n\t/* 18.4.4 r CT_RElt */\n\tfunction r_to_html(r) {\n\t\tvar terms/*:[Array<string>, string, Array<string>]*/ = [[],r.v,[]];\n\t\tif(!r.v) return \"\";\n\n\t\tif(r.s) parse_rpr2(r.s, terms[0], terms[2]);\n\n\t\treturn terms[0].join(\"\") + terms[1].replace(nlregex,'<br/>') + terms[2].join(\"\");\n\t}\n\n\treturn function parse_rs(rs) {\n\t\treturn rs.map(r_to_html).join(\"\");\n\t};\n})();\n\n/* 18.4.8 si CT_Rst */\nvar sitregex = /<(?:\\w+:)?t[^>]*>([^<]*)<\\/(?:\\w+:)?t>/g, sirregex = /<(?:\\w+:)?r>/;\nvar sirphregex = /<(?:\\w+:)?rPh.*?>([\\s\\S]*?)<\\/(?:\\w+:)?rPh>/g;\nfunction parse_si(x, opts) {\n\tvar html = opts ? opts.cellHTML : true;\n\tvar z = {};\n\tif(!x) return { t: \"\" };\n\t//var y;\n\t/* 18.4.12 t ST_Xstring (Plaintext String) */\n\t// TODO: is whitespace actually valid here?\n\tif(x.match(/^\\s*<(?:\\w+:)?t[^>]*>/)) {\n\t\tz.t = unescapexml(utf8read(x.slice(x.indexOf(\">\")+1).split(/<\\/(?:\\w+:)?t>/)[0]||\"\"));\n\t\tz.r = utf8read(x);\n\t\tif(html) z.h = escapehtml(z.t);\n\t}\n\t/* 18.4.4 r CT_RElt (Rich Text Run) */\n\telse if((/*y = */x.match(sirregex))) {\n\t\tz.r = utf8read(x);\n\t\tz.t = unescapexml(utf8read((x.replace(sirphregex, '').match(sitregex)||[]).join(\"\").replace(tagregex,\"\")));\n\t\tif(html) z.h = rs_to_html(parse_rs(z.r));\n\t}\n\t/* 18.4.3 phoneticPr CT_PhoneticPr (TODO: needed for Asian support) */\n\t/* 18.4.6 rPh CT_PhoneticRun (TODO: needed for Asian support) */\n\treturn z;\n}\n\n/* 18.4 Shared String Table */\nvar sstr0 = /<(?:\\w+:)?sst([^>]*)>([\\s\\S]*)<\\/(?:\\w+:)?sst>/;\nvar sstr1 = /<(?:\\w+:)?(?:si|sstItem)>/g;\nvar sstr2 = /<\\/(?:\\w+:)?(?:si|sstItem)>/;\nfunction parse_sst_xml(data/*:string*/, opts)/*:SST*/ {\n\tvar s/*:SST*/ = ([]/*:any*/), ss = \"\";\n\tif(!data) return s;\n\t/* 18.4.9 sst CT_Sst */\n\tvar sst = data.match(sstr0);\n\tif(sst) {\n\t\tss = sst[2].replace(sstr1,\"\").split(sstr2);\n\t\tfor(var i = 0; i != ss.length; ++i) {\n\t\t\tvar o = parse_si(ss[i].trim(), opts);\n\t\t\tif(o != null) s[s.length] = o;\n\t\t}\n\t\tsst = parsexmltag(sst[1]); s.Count = sst.count; s.Unique = sst.uniqueCount;\n\t}\n\treturn s;\n}\n\nvar straywsregex = /^\\s|\\s$|[\\t\\n\\r]/;\nfunction write_sst_xml(sst/*:SST*/, opts)/*:string*/ {\n\tif(!opts.bookSST) return \"\";\n\tvar o = [XML_HEADER];\n\to[o.length] = (writextag('sst', null, {\n\t\txmlns: XMLNS_main[0],\n\t\tcount: sst.Count,\n\t\tuniqueCount: sst.Unique\n\t}));\n\tfor(var i = 0; i != sst.length; ++i) { if(sst[i] == null) continue;\n\t\tvar s/*:XLString*/ = sst[i];\n\t\tvar sitag = \"<si>\";\n\t\tif(s.r) sitag += s.r;\n\t\telse {\n\t\t\tsitag += \"<t\";\n\t\t\tif(!s.t) s.t = \"\";\n\t\t\tif(s.t.match(straywsregex)) sitag += ' xml:space=\"preserve\"';\n\t\t\tsitag += \">\" + escapexml(s.t) + \"</t>\";\n\t\t}\n\t\tsitag += \"</si>\";\n\t\to[o.length] = (sitag);\n\t}\n\tif(o.length>2){ o[o.length] = ('</sst>'); o[1]=o[1].replace(\"/>\",\">\"); }\n\treturn o.join(\"\");\n}\n/* [MS-XLSB] 2.4.221 BrtBeginSst */\nfunction parse_BrtBeginSst(data) {\n\treturn [data.read_shift(4), data.read_shift(4)];\n}\n\n/* [MS-XLSB] 2.1.7.45 Shared Strings */\nfunction parse_sst_bin(data, opts)/*:SST*/ {\n\tvar s/*:SST*/ = ([]/*:any*/);\n\tvar pass = false;\n\trecordhopper(data, function hopper_sst(val, R, RT) {\n\t\tswitch(RT) {\n\t\t\tcase 0x009F: /* BrtBeginSst */\n\t\t\t\ts.Count = val[0]; s.Unique = val[1]; break;\n\t\t\tcase 0x0013: /* BrtSSTItem */\n\t\t\t\ts.push(val); break;\n\t\t\tcase 0x00A0: /* BrtEndSst */\n\t\t\t\treturn true;\n\n\t\t\tcase 0x0023: /* BrtFRTBegin */\n\t\t\t\tpass = true; break;\n\t\t\tcase 0x0024: /* BrtFRTEnd */\n\t\t\t\tpass = false; break;\n\n\t\t\tdefault:\n\t\t\t\tif(R.T){}\n\t\t\t\tif(!pass || opts.WTF) throw new Error(\"Unexpected record 0x\" + RT.toString(16));\n\t\t}\n\t});\n\treturn s;\n}\n\nfunction write_BrtBeginSst(sst, o) {\n\tif(!o) o = new_buf(8);\n\to.write_shift(4, sst.Count);\n\to.write_shift(4, sst.Unique);\n\treturn o;\n}\n\nvar write_BrtSSTItem = write_RichStr;\n\nfunction write_sst_bin(sst/*::, opts*/) {\n\tvar ba = buf_array();\n\twrite_record(ba, 0x009F /* BrtBeginSst */, write_BrtBeginSst(sst));\n\tfor(var i = 0; i < sst.length; ++i) write_record(ba, 0x0013 /* BrtSSTItem */, write_BrtSSTItem(sst[i]));\n\t/* FRTSST */\n\twrite_record(ba, 0x00A0 /* BrtEndSst */);\n\treturn ba.end();\n}\nfunction _JS2ANSI(str/*:string*/)/*:Array<number>*/ {\n\tif(typeof $cptable !== 'undefined') return $cptable.utils.encode(current_ansi, str);\n\tvar o/*:Array<number>*/ = [], oo = str.split(\"\");\n\tfor(var i = 0; i < oo.length; ++i) o[i] = oo[i].charCodeAt(0);\n\treturn o;\n}\n\n/* [MS-OFFCRYPTO] 2.1.4 Version */\nfunction parse_CRYPTOVersion(blob, length/*:?number*/) {\n\tvar o/*:any*/ = {};\n\to.Major = blob.read_shift(2);\n\to.Minor = blob.read_shift(2);\n\t/*:: if(length == null) return o; */\n\tif(length >= 4) blob.l += length - 4;\n\treturn o;\n}\n\n/* [MS-OFFCRYPTO] 2.1.5 DataSpaceVersionInfo */\nfunction parse_DataSpaceVersionInfo(blob) {\n\tvar o = {};\n\to.id = blob.read_shift(0, 'lpp4');\n\to.R = parse_CRYPTOVersion(blob, 4);\n\to.U = parse_CRYPTOVersion(blob, 4);\n\to.W = parse_CRYPTOVersion(blob, 4);\n\treturn o;\n}\n\n/* [MS-OFFCRYPTO] 2.1.6.1 DataSpaceMapEntry Structure */\nfunction parse_DataSpaceMapEntry(blob) {\n\tvar len = blob.read_shift(4);\n\tvar end = blob.l + len - 4;\n\tvar o = {};\n\tvar cnt = blob.read_shift(4);\n\tvar comps/*:Array<{t:number, v:string}>*/ = [];\n\t/* [MS-OFFCRYPTO] 2.1.6.2 DataSpaceReferenceComponent Structure */\n\twhile(cnt-- > 0) comps.push({ t: blob.read_shift(4), v: blob.read_shift(0, 'lpp4') });\n\to.name = blob.read_shift(0, 'lpp4');\n\to.comps = comps;\n\tif(blob.l != end) throw new Error(\"Bad DataSpaceMapEntry: \" + blob.l + \" != \" + end);\n\treturn o;\n}\n\n/* [MS-OFFCRYPTO] 2.1.6 DataSpaceMap */\nfunction parse_DataSpaceMap(blob) {\n\tvar o = [];\n\tblob.l += 4; // must be 0x8\n\tvar cnt = blob.read_shift(4);\n\twhile(cnt-- > 0) o.push(parse_DataSpaceMapEntry(blob));\n\treturn o;\n}\n\n/* [MS-OFFCRYPTO] 2.1.7 DataSpaceDefinition */\nfunction parse_DataSpaceDefinition(blob)/*:Array<string>*/ {\n\tvar o/*:Array<string>*/ = [];\n\tblob.l += 4; // must be 0x8\n\tvar cnt = blob.read_shift(4);\n\twhile(cnt-- > 0) o.push(blob.read_shift(0, 'lpp4'));\n\treturn o;\n}\n\n/* [MS-OFFCRYPTO] 2.1.8 DataSpaceDefinition */\nfunction parse_TransformInfoHeader(blob) {\n\tvar o = {};\n\t/*var len = */blob.read_shift(4);\n\tblob.l += 4; // must be 0x1\n\to.id = blob.read_shift(0, 'lpp4');\n\to.name = blob.read_shift(0, 'lpp4');\n\to.R = parse_CRYPTOVersion(blob, 4);\n\to.U = parse_CRYPTOVersion(blob, 4);\n\to.W = parse_CRYPTOVersion(blob, 4);\n\treturn o;\n}\n\nfunction parse_Primary(blob) {\n\t/* [MS-OFFCRYPTO] 2.2.6 IRMDSTransformInfo */\n\tvar hdr = parse_TransformInfoHeader(blob);\n\t/* [MS-OFFCRYPTO] 2.1.9 EncryptionTransformInfo */\n\thdr.ename = blob.read_shift(0, '8lpp4');\n\thdr.blksz = blob.read_shift(4);\n\thdr.cmode = blob.read_shift(4);\n\tif(blob.read_shift(4) != 0x04) throw new Error(\"Bad !Primary record\");\n\treturn hdr;\n}\n\n/* [MS-OFFCRYPTO] 2.3.2 Encryption Header */\nfunction parse_EncryptionHeader(blob, length/*:number*/) {\n\tvar tgt = blob.l + length;\n\tvar o = {};\n\to.Flags = (blob.read_shift(4) & 0x3F);\n\tblob.l += 4;\n\to.AlgID = blob.read_shift(4);\n\tvar valid = false;\n\tswitch(o.AlgID) {\n\t\tcase 0x660E: case 0x660F: case 0x6610: valid = (o.Flags == 0x24); break;\n\t\tcase 0x6801: valid = (o.Flags == 0x04); break;\n\t\tcase 0: valid = (o.Flags == 0x10 || o.Flags == 0x04 || o.Flags == 0x24); break;\n\t\tdefault: throw 'Unrecognized encryption algorithm: ' + o.AlgID;\n\t}\n\tif(!valid) throw new Error(\"Encryption Flags/AlgID mismatch\");\n\to.AlgIDHash = blob.read_shift(4);\n\to.KeySize = blob.read_shift(4);\n\to.ProviderType = blob.read_shift(4);\n\tblob.l += 8;\n\to.CSPName = blob.read_shift((tgt-blob.l)>>1, 'utf16le');\n\tblob.l = tgt;\n\treturn o;\n}\n\n/* [MS-OFFCRYPTO] 2.3.3 Encryption Verifier */\nfunction parse_EncryptionVerifier(blob, length/*:number*/) {\n\tvar o = {}, tgt = blob.l + length;\n\tblob.l += 4; // SaltSize must be 0x10\n\to.Salt = blob.slice(blob.l, blob.l+16); blob.l += 16;\n\to.Verifier = blob.slice(blob.l, blob.l+16); blob.l += 16;\n\t/*var sz = */blob.read_shift(4);\n\to.VerifierHash = blob.slice(blob.l, tgt); blob.l = tgt;\n\treturn o;\n}\n\n/* [MS-OFFCRYPTO] 2.3.4.* EncryptionInfo Stream */\nfunction parse_EncryptionInfo(blob) {\n\tvar vers = parse_CRYPTOVersion(blob);\n\tswitch(vers.Minor) {\n\t\tcase 0x02: return [vers.Minor, parse_EncInfoStd(blob, vers)];\n\t\tcase 0x03: return [vers.Minor, parse_EncInfoExt(blob, vers)];\n\t\tcase 0x04: return [vers.Minor, parse_EncInfoAgl(blob, vers)];\n\t}\n\tthrow new Error(\"ECMA-376 Encrypted file unrecognized Version: \" + vers.Minor);\n}\n\n/* [MS-OFFCRYPTO] 2.3.4.5  EncryptionInfo Stream (Standard Encryption) */\nfunction parse_EncInfoStd(blob/*::, vers*/) {\n\tvar flags = blob.read_shift(4);\n\tif((flags & 0x3F) != 0x24) throw new Error(\"EncryptionInfo mismatch\");\n\tvar sz = blob.read_shift(4);\n\t//var tgt = blob.l + sz;\n\tvar hdr = parse_EncryptionHeader(blob, sz);\n\tvar verifier = parse_EncryptionVerifier(blob, blob.length - blob.l);\n\treturn { t:\"Std\", h:hdr, v:verifier };\n}\n/* [MS-OFFCRYPTO] 2.3.4.6  EncryptionInfo Stream (Extensible Encryption) */\nfunction parse_EncInfoExt(/*::blob, vers*/) { throw new Error(\"File is password-protected: ECMA-376 Extensible\"); }\n/* [MS-OFFCRYPTO] 2.3.4.10 EncryptionInfo Stream (Agile Encryption) */\nfunction parse_EncInfoAgl(blob/*::, vers*/) {\n\tvar KeyData = [\"saltSize\",\"blockSize\",\"keyBits\",\"hashSize\",\"cipherAlgorithm\",\"cipherChaining\",\"hashAlgorithm\",\"saltValue\"];\n\tblob.l+=4;\n\tvar xml = blob.read_shift(blob.length - blob.l, 'utf8');\n\tvar o = {};\n\txml.replace(tagregex, function xml_agile(x) {\n\t\tvar y/*:any*/ = parsexmltag(x);\n\t\tswitch(strip_ns(y[0])) {\n\t\t\tcase '<?xml': break;\n\t\t\tcase '<encryption': case '</encryption>': break;\n\t\t\tcase '<keyData': KeyData.forEach(function(k) { o[k] = y[k]; }); break;\n\t\t\tcase '<dataIntegrity': o.encryptedHmacKey = y.encryptedHmacKey; o.encryptedHmacValue = y.encryptedHmacValue; break;\n\t\t\tcase '<keyEncryptors>': case '<keyEncryptors': o.encs = []; break;\n\t\t\tcase '</keyEncryptors>': break;\n\n\t\t\tcase '<keyEncryptor': o.uri = y.uri; break;\n\t\t\tcase '</keyEncryptor>': break;\n\t\t\tcase '<encryptedKey': o.encs.push(y); break;\n\t\t\tdefault: throw y[0];\n\t\t}\n\t});\n\treturn o;\n}\n\n/* [MS-OFFCRYPTO] 2.3.5.1 RC4 CryptoAPI Encryption Header */\nfunction parse_RC4CryptoHeader(blob, length/*:number*/) {\n\tvar o = {};\n\tvar vers = o.EncryptionVersionInfo = parse_CRYPTOVersion(blob, 4); length -= 4;\n\tif(vers.Minor != 2) throw new Error('unrecognized minor version code: ' + vers.Minor);\n\tif(vers.Major > 4 || vers.Major < 2) throw new Error('unrecognized major version code: ' + vers.Major);\n\to.Flags = blob.read_shift(4); length -= 4;\n\tvar sz = blob.read_shift(4); length -= 4;\n\to.EncryptionHeader = parse_EncryptionHeader(blob, sz); length -= sz;\n\to.EncryptionVerifier = parse_EncryptionVerifier(blob, length);\n\treturn o;\n}\n/* [MS-OFFCRYPTO] 2.3.6.1 RC4 Encryption Header */\nfunction parse_RC4Header(blob/*::, length*/) {\n\tvar o = {};\n\tvar vers = o.EncryptionVersionInfo = parse_CRYPTOVersion(blob, 4);\n\tif(vers.Major != 1 || vers.Minor != 1) throw 'unrecognized version code ' + vers.Major + ' : ' + vers.Minor;\n\to.Salt = blob.read_shift(16);\n\to.EncryptedVerifier = blob.read_shift(16);\n\to.EncryptedVerifierHash = blob.read_shift(16);\n\treturn o;\n}\n\n/* [MS-OFFCRYPTO] 2.3.7.1 Binary Document Password Verifier Derivation */\nfunction crypto_CreatePasswordVerifier_Method1(Password/*:string*/) {\n\tvar Verifier = 0x0000, PasswordArray;\n\tvar PasswordDecoded = _JS2ANSI(Password);\n\tvar len = PasswordDecoded.length + 1, i, PasswordByte;\n\tvar Intermediate1, Intermediate2, Intermediate3;\n\tPasswordArray = new_raw_buf(len);\n\tPasswordArray[0] = PasswordDecoded.length;\n\tfor(i = 1; i != len; ++i) PasswordArray[i] = PasswordDecoded[i-1];\n\tfor(i = len-1; i >= 0; --i) {\n\t\tPasswordByte = PasswordArray[i];\n\t\tIntermediate1 = ((Verifier & 0x4000) === 0x0000) ? 0 : 1;\n\t\tIntermediate2 = (Verifier << 1) & 0x7FFF;\n\t\tIntermediate3 = Intermediate1 | Intermediate2;\n\t\tVerifier = Intermediate3 ^ PasswordByte;\n\t}\n\treturn Verifier ^ 0xCE4B;\n}\n\n/* [MS-OFFCRYPTO] 2.3.7.2 Binary Document XOR Array Initialization */\nvar crypto_CreateXorArray_Method1 = /*#__PURE__*/(function() {\n\tvar PadArray = [0xBB, 0xFF, 0xFF, 0xBA, 0xFF, 0xFF, 0xB9, 0x80, 0x00, 0xBE, 0x0F, 0x00, 0xBF, 0x0F, 0x00];\n\tvar InitialCode = [0xE1F0, 0x1D0F, 0xCC9C, 0x84C0, 0x110C, 0x0E10, 0xF1CE, 0x313E, 0x1872, 0xE139, 0xD40F, 0x84F9, 0x280C, 0xA96A, 0x4EC3];\n\tvar XorMatrix = [0xAEFC, 0x4DD9, 0x9BB2, 0x2745, 0x4E8A, 0x9D14, 0x2A09, 0x7B61, 0xF6C2, 0xFDA5, 0xEB6B, 0xC6F7, 0x9DCF, 0x2BBF, 0x4563, 0x8AC6, 0x05AD, 0x0B5A, 0x16B4, 0x2D68, 0x5AD0, 0x0375, 0x06EA, 0x0DD4, 0x1BA8, 0x3750, 0x6EA0, 0xDD40, 0xD849, 0xA0B3, 0x5147, 0xA28E, 0x553D, 0xAA7A, 0x44D5, 0x6F45, 0xDE8A, 0xAD35, 0x4A4B, 0x9496, 0x390D, 0x721A, 0xEB23, 0xC667, 0x9CEF, 0x29FF, 0x53FE, 0xA7FC, 0x5FD9, 0x47D3, 0x8FA6, 0x0F6D, 0x1EDA, 0x3DB4, 0x7B68, 0xF6D0, 0xB861, 0x60E3, 0xC1C6, 0x93AD, 0x377B, 0x6EF6, 0xDDEC, 0x45A0, 0x8B40, 0x06A1, 0x0D42, 0x1A84, 0x3508, 0x6A10, 0xAA51, 0x4483, 0x8906, 0x022D, 0x045A, 0x08B4, 0x1168, 0x76B4, 0xED68, 0xCAF1, 0x85C3, 0x1BA7, 0x374E, 0x6E9C, 0x3730, 0x6E60, 0xDCC0, 0xA9A1, 0x4363, 0x86C6, 0x1DAD, 0x3331, 0x6662, 0xCCC4, 0x89A9, 0x0373, 0x06E6, 0x0DCC, 0x1021, 0x2042, 0x4084, 0x8108, 0x1231, 0x2462, 0x48C4];\n\tvar Ror = function(Byte) { return ((Byte/2) | (Byte*128)) & 0xFF; };\n\tvar XorRor = function(byte1, byte2) { return Ror(byte1 ^ byte2); };\n\tvar CreateXorKey_Method1 = function(Password) {\n\t\tvar XorKey = InitialCode[Password.length - 1];\n\t\tvar CurrentElement = 0x68;\n\t\tfor(var i = Password.length-1; i >= 0; --i) {\n\t\t\tvar Char = Password[i];\n\t\t\tfor(var j = 0; j != 7; ++j) {\n\t\t\t\tif(Char & 0x40) XorKey ^= XorMatrix[CurrentElement];\n\t\t\t\tChar *= 2; --CurrentElement;\n\t\t\t}\n\t\t}\n\t\treturn XorKey;\n\t};\n\treturn function(password/*:string*/) {\n\t\tvar Password = _JS2ANSI(password);\n\t\tvar XorKey = CreateXorKey_Method1(Password);\n\t\tvar Index = Password.length;\n\t\tvar ObfuscationArray = new_raw_buf(16);\n\t\tfor(var i = 0; i != 16; ++i) ObfuscationArray[i] = 0x00;\n\t\tvar Temp, PasswordLastChar, PadIndex;\n\t\tif((Index & 1) === 1) {\n\t\t\tTemp = XorKey >> 8;\n\t\t\tObfuscationArray[Index] = XorRor(PadArray[0], Temp);\n\t\t\t--Index;\n\t\t\tTemp = XorKey & 0xFF;\n\t\t\tPasswordLastChar = Password[Password.length - 1];\n\t\t\tObfuscationArray[Index] = XorRor(PasswordLastChar, Temp);\n\t\t}\n\t\twhile(Index > 0) {\n\t\t\t--Index;\n\t\t\tTemp = XorKey >> 8;\n\t\t\tObfuscationArray[Index] = XorRor(Password[Index], Temp);\n\t\t\t--Index;\n\t\t\tTemp = XorKey & 0xFF;\n\t\t\tObfuscationArray[Index] = XorRor(Password[Index], Temp);\n\t\t}\n\t\tIndex = 15;\n\t\tPadIndex = 15 - Password.length;\n\t\twhile(PadIndex > 0) {\n\t\t\tTemp = XorKey >> 8;\n\t\t\tObfuscationArray[Index] = XorRor(PadArray[PadIndex], Temp);\n\t\t\t--Index;\n\t\t\t--PadIndex;\n\t\t\tTemp = XorKey & 0xFF;\n\t\t\tObfuscationArray[Index] = XorRor(Password[Index], Temp);\n\t\t\t--Index;\n\t\t\t--PadIndex;\n\t\t}\n\t\treturn ObfuscationArray;\n\t};\n})();\n\n/* [MS-OFFCRYPTO] 2.3.7.3 Binary Document XOR Data Transformation Method 1 */\nvar crypto_DecryptData_Method1 = function(password/*:string*/, Data, XorArrayIndex, XorArray, O) {\n\t/* If XorArray is set, use it; if O is not set, make changes in-place */\n\tif(!O) O = Data;\n\tif(!XorArray) XorArray = crypto_CreateXorArray_Method1(password);\n\tvar Index, Value;\n\tfor(Index = 0; Index != Data.length; ++Index) {\n\t\tValue = Data[Index];\n\t\tValue ^= XorArray[XorArrayIndex];\n\t\tValue = ((Value>>5) | (Value<<3)) & 0xFF;\n\t\tO[Index] = Value;\n\t\t++XorArrayIndex;\n\t}\n\treturn [O, XorArrayIndex, XorArray];\n};\n\nvar crypto_MakeXorDecryptor = function(password/*:string*/) {\n\tvar XorArrayIndex = 0, XorArray = crypto_CreateXorArray_Method1(password);\n\treturn function(Data) {\n\t\tvar O = crypto_DecryptData_Method1(\"\", Data, XorArrayIndex, XorArray);\n\t\tXorArrayIndex = O[1];\n\t\treturn O[0];\n\t};\n};\n\n/* 2.5.343 */\nfunction parse_XORObfuscation(blob, length, opts, out) {\n\tvar o = ({ key: parseuint16(blob), verificationBytes: parseuint16(blob) }/*:any*/);\n\tif(opts.password) o.verifier = crypto_CreatePasswordVerifier_Method1(opts.password);\n\tout.valid = o.verificationBytes === o.verifier;\n\tif(out.valid) out.insitu = crypto_MakeXorDecryptor(opts.password);\n\treturn o;\n}\n\n/* 2.4.117 */\nfunction parse_FilePassHeader(blob, length/*:number*/, oo) {\n\tvar o = oo || {}; o.Info = blob.read_shift(2); blob.l -= 2;\n\tif(o.Info === 1) o.Data = parse_RC4Header(blob, length);\n\telse o.Data = parse_RC4CryptoHeader(blob, length);\n\treturn o;\n}\nfunction parse_FilePass(blob, length/*:number*/, opts) {\n\tvar o = ({ Type: opts.biff >= 8 ? blob.read_shift(2) : 0 }/*:any*/); /* wEncryptionType */\n\tif(o.Type) parse_FilePassHeader(blob, length-2, o);\n\telse parse_XORObfuscation(blob, opts.biff >= 8 ? length : length - 2, opts, o);\n\treturn o;\n}\n\n\nvar RTF = /*#__PURE__*/(function() {\n\tfunction rtf_to_sheet(d/*:RawData*/, opts)/*:Worksheet*/ {\n\t\tswitch(opts.type) {\n\t\t\tcase 'base64': return rtf_to_sheet_str(Base64_decode(d), opts);\n\t\t\tcase 'binary': return rtf_to_sheet_str(d, opts);\n\t\t\tcase 'buffer': return rtf_to_sheet_str(has_buf && Buffer.isBuffer(d) ? d.toString('binary') : a2s(d), opts);\n\t\t\tcase 'array':  return rtf_to_sheet_str(cc2str(d), opts);\n\t\t}\n\t\tthrow new Error(\"Unrecognized type \" + opts.type);\n\t}\n\n\t/* TODO: this is a stub */\n\tfunction rtf_to_sheet_str(str/*:string*/, opts)/*:Worksheet*/ {\n\t\tvar o = opts || {};\n\t\tvar ws/*:Worksheet*/ = o.dense ? ([]/*:any*/) : ({}/*:any*/);\n\n\t\tvar rows = str.match(/\\\\trowd.*?\\\\row\\b/g);\n\t\tif(!rows.length) throw new Error(\"RTF missing table\");\n\t\tvar range/*:Range*/ = ({s: {c:0, r:0}, e: {c:0, r:rows.length - 1}}/*:any*/);\n\t\trows.forEach(function(rowtf, R) {\n\t\t\tif(Array.isArray(ws)) ws[R] = [];\n\t\t\tvar rtfre = /\\\\\\w+\\b/g;\n\t\t\tvar last_index = 0;\n\t\t\tvar res;\n\t\t\tvar C = -1;\n\t\t\twhile((res = rtfre.exec(rowtf))) {\n\t\t\t\tswitch(res[0]) {\n\t\t\t\t\tcase \"\\\\cell\":\n\t\t\t\t\t\tvar data = rowtf.slice(last_index, rtfre.lastIndex - res[0].length);\n\t\t\t\t\t\tif(data[0] == \" \") data = data.slice(1);\n\t\t\t\t\t\t++C;\n\t\t\t\t\t\tif(data.length) {\n\t\t\t\t\t\t\t// TODO: value parsing, including codepage adjustments\n\t\t\t\t\t\t\tvar cell = {v: data, t:\"s\"};\n\t\t\t\t\t\t\tif(Array.isArray(ws)) ws[R][C] = cell;\n\t\t\t\t\t\t\telse ws[encode_cell({r:R, c:C})] = cell;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tlast_index = rtfre.lastIndex;\n\t\t\t}\n\t\t\tif(C > range.e.c) range.e.c = C;\n\t\t});\n\t\tws['!ref'] = encode_range(range);\n\t\treturn ws;\n\t}\n\n\tfunction rtf_to_workbook(d/*:RawData*/, opts)/*:Workbook*/ { return sheet_to_workbook(rtf_to_sheet(d, opts), opts); }\n\n\t/* TODO: this is a stub */\n\tfunction sheet_to_rtf(ws/*:Worksheet*//*::, opts*/)/*:string*/ {\n\t\tvar o = [\"{\\\\rtf1\\\\ansi\"];\n\t\tvar r = safe_decode_range(ws['!ref']), cell/*:Cell*/;\n\t\tvar dense = Array.isArray(ws);\n\t\tfor(var R = r.s.r; R <= r.e.r; ++R) {\n\t\t\to.push(\"\\\\trowd\\\\trautofit1\");\n\t\t\tfor(var C = r.s.c; C <= r.e.c; ++C) o.push(\"\\\\cellx\" + (C+1));\n\t\t\to.push(\"\\\\pard\\\\intbl\");\n\t\t\tfor(C = r.s.c; C <= r.e.c; ++C) {\n\t\t\t\tvar coord = encode_cell({r:R,c:C});\n\t\t\t\tcell = dense ? (ws[R]||[])[C]: ws[coord];\n\t\t\t\tif(!cell || cell.v == null && (!cell.f || cell.F)) continue;\n\t\t\t\to.push(\" \" + (cell.w || (format_cell(cell), cell.w)));\n\t\t\t\to.push(\"\\\\cell\");\n\t\t\t}\n\t\t\to.push(\"\\\\pard\\\\intbl\\\\row\");\n\t\t}\n\t\treturn o.join(\"\") + \"}\";\n\t}\n\n\treturn {\n\t\tto_workbook: rtf_to_workbook,\n\t\tto_sheet: rtf_to_sheet,\n\t\tfrom_sheet: sheet_to_rtf\n\t};\n})();\nfunction hex2RGB(h) {\n\tvar o = h.slice(h[0]===\"#\"?1:0).slice(0,6);\n\treturn [parseInt(o.slice(0,2),16),parseInt(o.slice(2,4),16),parseInt(o.slice(4,6),16)];\n}\nfunction rgb2Hex(rgb) {\n\tfor(var i=0,o=1; i!=3; ++i) o = o*256 + (rgb[i]>255?255:rgb[i]<0?0:rgb[i]);\n\treturn o.toString(16).toUpperCase().slice(1);\n}\n\nfunction rgb2HSL(rgb) {\n\tvar R = rgb[0]/255, G = rgb[1]/255, B=rgb[2]/255;\n\tvar M = Math.max(R, G, B), m = Math.min(R, G, B), C = M - m;\n\tif(C === 0) return [0, 0, R];\n\n\tvar H6 = 0, S = 0, L2 = (M + m);\n\tS = C / (L2 > 1 ? 2 - L2 : L2);\n\tswitch(M){\n\t\tcase R: H6 = ((G - B) / C + 6)%6; break;\n\t\tcase G: H6 = ((B - R) / C + 2); break;\n\t\tcase B: H6 = ((R - G) / C + 4); break;\n\t}\n\treturn [H6 / 6, S, L2 / 2];\n}\n\nfunction hsl2RGB(hsl){\n\tvar H = hsl[0], S = hsl[1], L = hsl[2];\n\tvar C = S * 2 * (L < 0.5 ? L : 1 - L), m = L - C/2;\n\tvar rgb = [m,m,m], h6 = 6*H;\n\n\tvar X;\n\tif(S !== 0) switch(h6|0) {\n\t\tcase 0: case 6: X = C * h6; rgb[0] += C; rgb[1] += X; break;\n\t\tcase 1: X = C * (2 - h6);   rgb[0] += X; rgb[1] += C; break;\n\t\tcase 2: X = C * (h6 - 2);   rgb[1] += C; rgb[2] += X; break;\n\t\tcase 3: X = C * (4 - h6);   rgb[1] += X; rgb[2] += C; break;\n\t\tcase 4: X = C * (h6 - 4);   rgb[2] += C; rgb[0] += X; break;\n\t\tcase 5: X = C * (6 - h6);   rgb[2] += X; rgb[0] += C; break;\n\t}\n\tfor(var i = 0; i != 3; ++i) rgb[i] = Math.round(rgb[i]*255);\n\treturn rgb;\n}\n\n/* 18.8.3 bgColor tint algorithm */\nfunction rgb_tint(hex, tint) {\n\tif(tint === 0) return hex;\n\tvar hsl = rgb2HSL(hex2RGB(hex));\n\tif (tint < 0) hsl[2] = hsl[2] * (1 + tint);\n\telse hsl[2] = 1 - (1 - hsl[2]) * (1 - tint);\n\treturn rgb2Hex(hsl2RGB(hsl));\n}\n\n/* 18.3.1.13 width calculations */\n/* [MS-OI29500] 2.1.595 Column Width & Formatting */\nvar DEF_MDW = 6, MAX_MDW = 15, MIN_MDW = 1, MDW = DEF_MDW;\nfunction width2px(width) { return Math.floor(( width + (Math.round(128/MDW))/256 )* MDW ); }\nfunction px2char(px) { return (Math.floor((px - 5)/MDW * 100 + 0.5))/100; }\nfunction char2width(chr) { return (Math.round((chr * MDW + 5)/MDW*256))/256; }\n//function px2char_(px) { return (((px - 5)/MDW * 100 + 0.5))/100; }\n//function char2width_(chr) { return (((chr * MDW + 5)/MDW*256))/256; }\nfunction cycle_width(collw) { return char2width(px2char(width2px(collw))); }\n/* XLSX/XLSB/XLS specify width in units of MDW */\nfunction find_mdw_colw(collw) {\n\tvar delta = Math.abs(collw - cycle_width(collw)), _MDW = MDW;\n\tif(delta > 0.005) for(MDW=MIN_MDW; MDW<MAX_MDW; ++MDW) if(Math.abs(collw - cycle_width(collw)) <= delta) { delta = Math.abs(collw - cycle_width(collw)); _MDW = MDW; }\n\tMDW = _MDW;\n}\n/* XLML specifies width in terms of pixels */\n/*function find_mdw_wpx(wpx) {\n\tvar delta = Infinity, guess = 0, _MDW = MIN_MDW;\n\tfor(MDW=MIN_MDW; MDW<MAX_MDW; ++MDW) {\n\t\tguess = char2width_(px2char_(wpx))*256;\n\t\tguess = (guess) % 1;\n\t\tif(guess > 0.5) guess--;\n\t\tif(Math.abs(guess) < delta) { delta = Math.abs(guess); _MDW = MDW; }\n\t}\n\tMDW = _MDW;\n}*/\n\nfunction process_col(coll/*:ColInfo*/) {\n\tif(coll.width) {\n\t\tcoll.wpx = width2px(coll.width);\n\t\tcoll.wch = px2char(coll.wpx);\n\t\tcoll.MDW = MDW;\n\t} else if(coll.wpx) {\n\t\tcoll.wch = px2char(coll.wpx);\n\t\tcoll.width = char2width(coll.wch);\n\t\tcoll.MDW = MDW;\n\t} else if(typeof coll.wch == 'number') {\n\t\tcoll.width = char2width(coll.wch);\n\t\tcoll.wpx = width2px(coll.width);\n\t\tcoll.MDW = MDW;\n\t}\n\tif(coll.customWidth) delete coll.customWidth;\n}\n\nvar DEF_PPI = 96, PPI = DEF_PPI;\nfunction px2pt(px) { return px * 96 / PPI; }\nfunction pt2px(pt) { return pt * PPI / 96; }\n\n/* [MS-EXSPXML3] 2.4.54 ST_enmPattern */\nvar XLMLPatternTypeMap = {\n\t\"None\": \"none\",\n\t\"Solid\": \"solid\",\n\t\"Gray50\": \"mediumGray\",\n\t\"Gray75\": \"darkGray\",\n\t\"Gray25\": \"lightGray\",\n\t\"HorzStripe\": \"darkHorizontal\",\n\t\"VertStripe\": \"darkVertical\",\n\t\"ReverseDiagStripe\": \"darkDown\",\n\t\"DiagStripe\": \"darkUp\",\n\t\"DiagCross\": \"darkGrid\",\n\t\"ThickDiagCross\": \"darkTrellis\",\n\t\"ThinHorzStripe\": \"lightHorizontal\",\n\t\"ThinVertStripe\": \"lightVertical\",\n\t\"ThinReverseDiagStripe\": \"lightDown\",\n\t\"ThinHorzCross\": \"lightGrid\"\n};\n\n/* 18.8.5 borders CT_Borders */\nfunction parse_borders(t, styles, themes, opts) {\n\tstyles.Borders = [];\n\tvar border = {};\n\tvar pass = false;\n\t(t[0].match(tagregex)||[]).forEach(function(x) {\n\t\tvar y = parsexmltag(x);\n\t\tswitch(strip_ns(y[0])) {\n\t\t\tcase '<borders': case '<borders>': case '</borders>': break;\n\n\t\t\t/* 18.8.4 border CT_Border */\n\t\t\tcase '<border': case '<border>': case '<border/>':\n\t\t\t\tborder = /*::(*/{}/*:: :any)*/;\n\t\t\t\tif(y.diagonalUp) border.diagonalUp = parsexmlbool(y.diagonalUp);\n\t\t\t\tif(y.diagonalDown) border.diagonalDown = parsexmlbool(y.diagonalDown);\n\t\t\t\tstyles.Borders.push(border);\n\t\t\t\tbreak;\n\t\t\tcase '</border>': break;\n\n\t\t\t/* note: not in spec, appears to be CT_BorderPr */\n\t\t\tcase '<left/>': break;\n\t\t\tcase '<left': case '<left>': break;\n\t\t\tcase '</left>': break;\n\n\t\t\t/* note: not in spec, appears to be CT_BorderPr */\n\t\t\tcase '<right/>': break;\n\t\t\tcase '<right': case '<right>': break;\n\t\t\tcase '</right>': break;\n\n\t\t\t/* 18.8.43 top CT_BorderPr */\n\t\t\tcase '<top/>': break;\n\t\t\tcase '<top': case '<top>': break;\n\t\t\tcase '</top>': break;\n\n\t\t\t/* 18.8.6 bottom CT_BorderPr */\n\t\t\tcase '<bottom/>': break;\n\t\t\tcase '<bottom': case '<bottom>': break;\n\t\t\tcase '</bottom>': break;\n\n\t\t\t/* 18.8.13 diagonal CT_BorderPr */\n\t\t\tcase '<diagonal': case '<diagonal>': case '<diagonal/>': break;\n\t\t\tcase '</diagonal>': break;\n\n\t\t\t/* 18.8.25 horizontal CT_BorderPr */\n\t\t\tcase '<horizontal': case '<horizontal>': case '<horizontal/>': break;\n\t\t\tcase '</horizontal>': break;\n\n\t\t\t/* 18.8.44 vertical CT_BorderPr */\n\t\t\tcase '<vertical': case '<vertical>': case '<vertical/>': break;\n\t\t\tcase '</vertical>': break;\n\n\t\t\t/* 18.8.37 start CT_BorderPr */\n\t\t\tcase '<start': case '<start>': case '<start/>': break;\n\t\t\tcase '</start>': break;\n\n\t\t\t/* 18.8.16 end CT_BorderPr */\n\t\t\tcase '<end': case '<end>': case '<end/>': break;\n\t\t\tcase '</end>': break;\n\n\t\t\t/* 18.8.? color CT_Color */\n\t\t\tcase '<color': case '<color>':\n\t\t\t\tbreak;\n\t\t\tcase '<color/>': case '</color>': break;\n\n\t\t\t/* 18.2.10 extLst CT_ExtensionList ? */\n\t\t\tcase '<extLst': case '<extLst>': case '</extLst>': break;\n\t\t\tcase '<ext': pass = true; break;\n\t\t\tcase '</ext>': pass = false; break;\n\t\t\tdefault: if(opts && opts.WTF) {\n\t\t\t\tif(!pass) throw new Error('unrecognized ' + y[0] + ' in borders');\n\t\t\t}\n\t\t}\n\t});\n}\n\n/* 18.8.21 fills CT_Fills */\nfunction parse_fills(t, styles, themes, opts) {\n\tstyles.Fills = [];\n\tvar fill = {};\n\tvar pass = false;\n\t(t[0].match(tagregex)||[]).forEach(function(x) {\n\t\tvar y = parsexmltag(x);\n\t\tswitch(strip_ns(y[0])) {\n\t\t\tcase '<fills': case '<fills>': case '</fills>': break;\n\n\t\t\t/* 18.8.20 fill CT_Fill */\n\t\t\tcase '<fill>': case '<fill': case '<fill/>':\n\t\t\t\tfill = {}; styles.Fills.push(fill); break;\n\t\t\tcase '</fill>': break;\n\n\t\t\t/* 18.8.24 gradientFill CT_GradientFill */\n\t\t\tcase '<gradientFill>': break;\n\t\t\tcase '<gradientFill':\n\t\t\tcase '</gradientFill>': styles.Fills.push(fill); fill = {}; break;\n\n\t\t\t/* 18.8.32 patternFill CT_PatternFill */\n\t\t\tcase '<patternFill': case '<patternFill>':\n\t\t\t\tif(y.patternType) fill.patternType = y.patternType;\n\t\t\t\tbreak;\n\t\t\tcase '<patternFill/>': case '</patternFill>': break;\n\n\t\t\t/* 18.8.3 bgColor CT_Color */\n\t\t\tcase '<bgColor':\n\t\t\t\tif(!fill.bgColor) fill.bgColor = {};\n\t\t\t\tif(y.indexed) fill.bgColor.indexed = parseInt(y.indexed, 10);\n\t\t\t\tif(y.theme) fill.bgColor.theme = parseInt(y.theme, 10);\n\t\t\t\tif(y.tint) fill.bgColor.tint = parseFloat(y.tint);\n\t\t\t\t/* Excel uses ARGB strings */\n\t\t\t\tif(y.rgb) fill.bgColor.rgb = y.rgb.slice(-6);\n\t\t\t\tbreak;\n\t\t\tcase '<bgColor/>': case '</bgColor>': break;\n\n\t\t\t/* 18.8.19 fgColor CT_Color */\n\t\t\tcase '<fgColor':\n\t\t\t\tif(!fill.fgColor) fill.fgColor = {};\n\t\t\t\tif(y.theme) fill.fgColor.theme = parseInt(y.theme, 10);\n\t\t\t\tif(y.tint) fill.fgColor.tint = parseFloat(y.tint);\n\t\t\t\t/* Excel uses ARGB strings */\n\t\t\t\tif(y.rgb != null) fill.fgColor.rgb = y.rgb.slice(-6);\n\t\t\t\tbreak;\n\t\t\tcase '<fgColor/>': case '</fgColor>': break;\n\n\t\t\t/* 18.8.38 stop CT_GradientStop */\n\t\t\tcase '<stop': case '<stop/>': break;\n\t\t\tcase '</stop>': break;\n\n\t\t\t/* 18.8.? color CT_Color */\n\t\t\tcase '<color': case '<color/>': break;\n\t\t\tcase '</color>': break;\n\n\t\t\t/* 18.2.10 extLst CT_ExtensionList ? */\n\t\t\tcase '<extLst': case '<extLst>': case '</extLst>': break;\n\t\t\tcase '<ext': pass = true; break;\n\t\t\tcase '</ext>': pass = false; break;\n\t\t\tdefault: if(opts && opts.WTF) {\n\t\t\t\tif(!pass) throw new Error('unrecognized ' + y[0] + ' in fills');\n\t\t\t}\n\t\t}\n\t});\n}\n\n/* 18.8.23 fonts CT_Fonts */\nfunction parse_fonts(t, styles, themes, opts) {\n\tstyles.Fonts = [];\n\tvar font = {};\n\tvar pass = false;\n\t(t[0].match(tagregex)||[]).forEach(function(x) {\n\t\tvar y = parsexmltag(x);\n\t\tswitch(strip_ns(y[0])) {\n\t\t\tcase '<fonts': case '<fonts>': case '</fonts>': break;\n\n\t\t\t/* 18.8.22 font CT_Font */\n\t\t\tcase '<font': case '<font>': break;\n\t\t\tcase '</font>': case '<font/>':\n\t\t\t\tstyles.Fonts.push(font);\n\t\t\t\tfont = {};\n\t\t\t\tbreak;\n\n\t\t\t/* 18.8.29 name CT_FontName */\n\t\t\tcase '<name': if(y.val) font.name = utf8read(y.val); break;\n\t\t\tcase '<name/>': case '</name>': break;\n\n\t\t\t/* 18.8.2  b CT_BooleanProperty */\n\t\t\tcase '<b': font.bold = y.val ? parsexmlbool(y.val) : 1; break;\n\t\t\tcase '<b/>': font.bold = 1; break;\n\n\t\t\t/* 18.8.26 i CT_BooleanProperty */\n\t\t\tcase '<i': font.italic = y.val ? parsexmlbool(y.val) : 1; break;\n\t\t\tcase '<i/>': font.italic = 1; break;\n\n\t\t\t/* 18.4.13 u CT_UnderlineProperty */\n\t\t\tcase '<u':\n\t\t\t\tswitch(y.val) {\n\t\t\t\t\tcase \"none\": font.underline = 0x00; break;\n\t\t\t\t\tcase \"single\": font.underline = 0x01; break;\n\t\t\t\t\tcase \"double\": font.underline = 0x02; break;\n\t\t\t\t\tcase \"singleAccounting\": font.underline = 0x21; break;\n\t\t\t\t\tcase \"doubleAccounting\": font.underline = 0x22; break;\n\t\t\t\t} break;\n\t\t\tcase '<u/>': font.underline = 1; break;\n\n\t\t\t/* 18.4.10 strike CT_BooleanProperty */\n\t\t\tcase '<strike': font.strike = y.val ? parsexmlbool(y.val) : 1; break;\n\t\t\tcase '<strike/>': font.strike = 1; break;\n\n\t\t\t/* 18.4.2  outline CT_BooleanProperty */\n\t\t\tcase '<outline': font.outline = y.val ? parsexmlbool(y.val) : 1; break;\n\t\t\tcase '<outline/>': font.outline = 1; break;\n\n\t\t\t/* 18.8.36 shadow CT_BooleanProperty */\n\t\t\tcase '<shadow': font.shadow = y.val ? parsexmlbool(y.val) : 1; break;\n\t\t\tcase '<shadow/>': font.shadow = 1; break;\n\n\t\t\t/* 18.8.12 condense CT_BooleanProperty */\n\t\t\tcase '<condense': font.condense = y.val ? parsexmlbool(y.val) : 1; break;\n\t\t\tcase '<condense/>': font.condense = 1; break;\n\n\t\t\t/* 18.8.17 extend CT_BooleanProperty */\n\t\t\tcase '<extend': font.extend = y.val ? parsexmlbool(y.val) : 1; break;\n\t\t\tcase '<extend/>': font.extend = 1; break;\n\n\t\t\t/* 18.4.11 sz CT_FontSize */\n\t\t\tcase '<sz': if(y.val) font.sz = +y.val; break;\n\t\t\tcase '<sz/>': case '</sz>': break;\n\n\t\t\t/* 18.4.14 vertAlign CT_VerticalAlignFontProperty */\n\t\t\tcase '<vertAlign': if(y.val) font.vertAlign = y.val; break;\n\t\t\tcase '<vertAlign/>': case '</vertAlign>': break;\n\n\t\t\t/* 18.8.18 family CT_FontFamily */\n\t\t\tcase '<family': if(y.val) font.family = parseInt(y.val,10); break;\n\t\t\tcase '<family/>': case '</family>': break;\n\n\t\t\t/* 18.8.35 scheme CT_FontScheme */\n\t\t\tcase '<scheme': if(y.val) font.scheme = y.val; break;\n\t\t\tcase '<scheme/>': case '</scheme>': break;\n\n\t\t\t/* 18.4.1 charset CT_IntProperty */\n\t\t\tcase '<charset':\n\t\t\t\tif(y.val == '1') break;\n\t\t\t\ty.codepage = CS2CP[parseInt(y.val, 10)];\n\t\t\t\tbreak;\n\n\t\t\t/* 18.?.? color CT_Color */\n\t\t\tcase '<color':\n\t\t\t\tif(!font.color) font.color = {};\n\t\t\t\tif(y.auto) font.color.auto = parsexmlbool(y.auto);\n\n\t\t\t\tif(y.rgb) font.color.rgb = y.rgb.slice(-6);\n\t\t\t\telse if(y.indexed) {\n\t\t\t\t\tfont.color.index = parseInt(y.indexed, 10);\n\t\t\t\t\tvar icv = XLSIcv[font.color.index];\n\t\t\t\t\tif(font.color.index == 81) icv = XLSIcv[1];\n\t\t\t\t\tif(!icv) icv = XLSIcv[1]; //throw new Error(x); // note: 206 is valid\n\t\t\t\t\tfont.color.rgb = icv[0].toString(16) + icv[1].toString(16) + icv[2].toString(16);\n\t\t\t\t} else if(y.theme) {\n\t\t\t\t\tfont.color.theme = parseInt(y.theme, 10);\n\t\t\t\t\tif(y.tint) font.color.tint = parseFloat(y.tint);\n\t\t\t\t\tif(y.theme && themes.themeElements && themes.themeElements.clrScheme) {\n\t\t\t\t\t\tfont.color.rgb = rgb_tint(themes.themeElements.clrScheme[font.color.theme].rgb, font.color.tint || 0);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\t\t\tcase '<color/>': case '</color>': break;\n\n\t\t\t/* note: sometimes mc:AlternateContent appears bare */\n\t\t\tcase '<AlternateContent': pass = true; break;\n\t\t\tcase '</AlternateContent>': pass = false; break;\n\n\t\t\t/* 18.2.10 extLst CT_ExtensionList ? */\n\t\t\tcase '<extLst': case '<extLst>': case '</extLst>': break;\n\t\t\tcase '<ext': pass = true; break;\n\t\t\tcase '</ext>': pass = false; break;\n\t\t\tdefault: if(opts && opts.WTF) {\n\t\t\t\tif(!pass) throw new Error('unrecognized ' + y[0] + ' in fonts');\n\t\t\t}\n\t\t}\n\t});\n}\n\n/* 18.8.31 numFmts CT_NumFmts */\nfunction parse_numFmts(t, styles, opts) {\n\tstyles.NumberFmt = [];\n\tvar k/*Array<number>*/ = (keys(table_fmt)/*:any*/);\n\tfor(var i=0; i < k.length; ++i) styles.NumberFmt[k[i]] = table_fmt[k[i]];\n\tvar m = t[0].match(tagregex);\n\tif(!m) return;\n\tfor(i=0; i < m.length; ++i) {\n\t\tvar y = parsexmltag(m[i]);\n\t\tswitch(strip_ns(y[0])) {\n\t\t\tcase '<numFmts': case '</numFmts>': case '<numFmts/>': case '<numFmts>': break;\n\t\t\tcase '<numFmt': {\n\t\t\t\tvar f=unescapexml(utf8read(y.formatCode)), j=parseInt(y.numFmtId,10);\n\t\t\t\tstyles.NumberFmt[j] = f;\n\t\t\t\tif(j>0) {\n\t\t\t\t\tif(j > 0x188) {\n\t\t\t\t\t\tfor(j = 0x188; j > 0x3c; --j) if(styles.NumberFmt[j] == null) break;\n\t\t\t\t\t\tstyles.NumberFmt[j] = f;\n\t\t\t\t\t}\n\t\t\t\t\tSSF_load(f,j);\n\t\t\t\t}\n\t\t\t} break;\n\t\t\tcase '</numFmt>': break;\n\t\t\tdefault: if(opts.WTF) throw new Error('unrecognized ' + y[0] + ' in numFmts');\n\t\t}\n\t}\n}\n\nfunction write_numFmts(NF/*:{[n:number|string]:string}*//*::, opts*/) {\n\tvar o = [\"<numFmts>\"];\n\t[[5,8],[23,26],[41,44],[/*63*/50,/*66],[164,*/392]].forEach(function(r) {\n\t\tfor(var i = r[0]; i <= r[1]; ++i) if(NF[i] != null) o[o.length] = (writextag('numFmt',null,{numFmtId:i,formatCode:escapexml(NF[i])}));\n\t});\n\tif(o.length === 1) return \"\";\n\to[o.length] = (\"</numFmts>\");\n\to[0] = writextag('numFmts', null, { count:o.length-2 }).replace(\"/>\", \">\");\n\treturn o.join(\"\");\n}\n\n/* 18.8.10 cellXfs CT_CellXfs */\nvar cellXF_uint = [ \"numFmtId\", \"fillId\", \"fontId\", \"borderId\", \"xfId\" ];\nvar cellXF_bool = [ \"applyAlignment\", \"applyBorder\", \"applyFill\", \"applyFont\", \"applyNumberFormat\", \"applyProtection\", \"pivotButton\", \"quotePrefix\" ];\nfunction parse_cellXfs(t, styles, opts) {\n\tstyles.CellXf = [];\n\tvar xf;\n\tvar pass = false;\n\t(t[0].match(tagregex)||[]).forEach(function(x) {\n\t\tvar y = parsexmltag(x), i = 0;\n\t\tswitch(strip_ns(y[0])) {\n\t\t\tcase '<cellXfs': case '<cellXfs>': case '<cellXfs/>': case '</cellXfs>': break;\n\n\t\t\t/* 18.8.45 xf CT_Xf */\n\t\t\tcase '<xf': case '<xf/>':\n\t\t\t\txf = y;\n\t\t\t\tdelete xf[0];\n\t\t\t\tfor(i = 0; i < cellXF_uint.length; ++i) if(xf[cellXF_uint[i]])\n\t\t\t\t\txf[cellXF_uint[i]] = parseInt(xf[cellXF_uint[i]], 10);\n\t\t\t\tfor(i = 0; i < cellXF_bool.length; ++i) if(xf[cellXF_bool[i]])\n\t\t\t\t\txf[cellXF_bool[i]] = parsexmlbool(xf[cellXF_bool[i]]);\n\t\t\t\tif(styles.NumberFmt && xf.numFmtId > 0x188) {\n\t\t\t\t\tfor(i = 0x188; i > 0x3c; --i) if(styles.NumberFmt[xf.numFmtId] == styles.NumberFmt[i]) { xf.numFmtId = i; break; }\n\t\t\t\t}\n\t\t\t\tstyles.CellXf.push(xf); break;\n\t\t\tcase '</xf>': break;\n\n\t\t\t/* 18.8.1 alignment CT_CellAlignment */\n\t\t\tcase '<alignment': case '<alignment/>':\n\t\t\t\tvar alignment = {};\n\t\t\t\tif(y.vertical) alignment.vertical = y.vertical;\n\t\t\t\tif(y.horizontal) alignment.horizontal = y.horizontal;\n\t\t\t\tif(y.textRotation != null) alignment.textRotation = y.textRotation;\n\t\t\t\tif(y.indent) alignment.indent = y.indent;\n\t\t\t\tif(y.wrapText) alignment.wrapText = parsexmlbool(y.wrapText);\n\t\t\t\txf.alignment = alignment;\n\t\t\t\tbreak;\n\t\t\tcase '</alignment>': break;\n\n\t\t\t/* 18.8.33 protection CT_CellProtection */\n\t\t\tcase '<protection':\n\t\t\t\tbreak;\n\t\t\tcase '</protection>': case '<protection/>': break;\n\n\t\t\t/* note: sometimes mc:AlternateContent appears bare */\n\t\t\tcase '<AlternateContent': pass = true; break;\n\t\t\tcase '</AlternateContent>': pass = false; break;\n\n\t\t\t/* 18.2.10 extLst CT_ExtensionList ? */\n\t\t\tcase '<extLst': case '<extLst>': case '</extLst>': break;\n\t\t\tcase '<ext': pass = true; break;\n\t\t\tcase '</ext>': pass = false; break;\n\t\t\tdefault: if(opts && opts.WTF) {\n\t\t\t\tif(!pass) throw new Error('unrecognized ' + y[0] + ' in cellXfs');\n\t\t\t}\n\t\t}\n\t});\n}\n\nfunction write_cellXfs(cellXfs)/*:string*/ {\n\tvar o/*:Array<string>*/ = [];\n\to[o.length] = (writextag('cellXfs',null));\n\tcellXfs.forEach(function(c) {\n\t\to[o.length] = (writextag('xf', null, c));\n\t});\n\to[o.length] = (\"</cellXfs>\");\n\tif(o.length === 2) return \"\";\n\to[0] = writextag('cellXfs',null, {count:o.length-2}).replace(\"/>\",\">\");\n\treturn o.join(\"\");\n}\n\n/* 18.8 Styles CT_Stylesheet*/\nvar parse_sty_xml= /*#__PURE__*/(function make_pstyx() {\nvar numFmtRegex = /<(?:\\w+:)?numFmts([^>]*)>[\\S\\s]*?<\\/(?:\\w+:)?numFmts>/;\nvar cellXfRegex = /<(?:\\w+:)?cellXfs([^>]*)>[\\S\\s]*?<\\/(?:\\w+:)?cellXfs>/;\nvar fillsRegex = /<(?:\\w+:)?fills([^>]*)>[\\S\\s]*?<\\/(?:\\w+:)?fills>/;\nvar fontsRegex = /<(?:\\w+:)?fonts([^>]*)>[\\S\\s]*?<\\/(?:\\w+:)?fonts>/;\nvar bordersRegex = /<(?:\\w+:)?borders([^>]*)>[\\S\\s]*?<\\/(?:\\w+:)?borders>/;\n\nreturn function parse_sty_xml(data, themes, opts) {\n\tvar styles = {};\n\tif(!data) return styles;\n\tdata = data.replace(/<!--([\\s\\S]*?)-->/mg,\"\").replace(/<!DOCTYPE[^\\[]*\\[[^\\]]*\\]>/gm,\"\");\n\t/* 18.8.39 styleSheet CT_Stylesheet */\n\tvar t;\n\n\t/* 18.8.31 numFmts CT_NumFmts ? */\n\tif((t=data.match(numFmtRegex))) parse_numFmts(t, styles, opts);\n\n\t/* 18.8.23 fonts CT_Fonts ? */\n\tif((t=data.match(fontsRegex))) parse_fonts(t, styles, themes, opts);\n\n\t/* 18.8.21 fills CT_Fills ? */\n\tif((t=data.match(fillsRegex))) parse_fills(t, styles, themes, opts);\n\n\t/* 18.8.5  borders CT_Borders ? */\n\tif((t=data.match(bordersRegex))) parse_borders(t, styles, themes, opts);\n\n\t/* 18.8.9  cellStyleXfs CT_CellStyleXfs ? */\n\t/* 18.8.8  cellStyles CT_CellStyles ? */\n\n\t/* 18.8.10 cellXfs CT_CellXfs ? */\n\tif((t=data.match(cellXfRegex))) parse_cellXfs(t, styles, opts);\n\n\t/* 18.8.15 dxfs CT_Dxfs ? */\n\t/* 18.8.42 tableStyles CT_TableStyles ? */\n\t/* 18.8.11 colors CT_Colors ? */\n\t/* 18.2.10 extLst CT_ExtensionList ? */\n\n\treturn styles;\n};\n})();\n\nfunction write_sty_xml(wb/*:Workbook*/, opts)/*:string*/ {\n\tvar o = [XML_HEADER, writextag('styleSheet', null, {\n\t\t'xmlns': XMLNS_main[0],\n\t\t'xmlns:vt': XMLNS.vt\n\t})], w;\n\tif(wb.SSF && (w = write_numFmts(wb.SSF)) != null) o[o.length] = w;\n\to[o.length] = ('<fonts count=\"1\"><font><sz val=\"12\"/><color theme=\"1\"/><name val=\"Calibri\"/><family val=\"2\"/><scheme val=\"minor\"/></font></fonts>');\n\to[o.length] = ('<fills count=\"2\"><fill><patternFill patternType=\"none\"/></fill><fill><patternFill patternType=\"gray125\"/></fill></fills>');\n\to[o.length] = ('<borders count=\"1\"><border><left/><right/><top/><bottom/><diagonal/></border></borders>');\n\to[o.length] = ('<cellStyleXfs count=\"1\"><xf numFmtId=\"0\" fontId=\"0\" fillId=\"0\" borderId=\"0\"/></cellStyleXfs>');\n\tif((w = write_cellXfs(opts.cellXfs))) o[o.length] = (w);\n\to[o.length] = ('<cellStyles count=\"1\"><cellStyle name=\"Normal\" xfId=\"0\" builtinId=\"0\"/></cellStyles>');\n\to[o.length] = ('<dxfs count=\"0\"/>');\n\to[o.length] = ('<tableStyles count=\"0\" defaultTableStyle=\"TableStyleMedium9\" defaultPivotStyle=\"PivotStyleMedium4\"/>');\n\n\tif(o.length>2){ o[o.length] = ('</styleSheet>'); o[1]=o[1].replace(\"/>\",\">\"); }\n\treturn o.join(\"\");\n}\n/* [MS-XLSB] 2.4.657 BrtFmt */\nfunction parse_BrtFmt(data, length/*:number*/) {\n\tvar numFmtId = data.read_shift(2);\n\tvar stFmtCode = parse_XLWideString(data,length-2);\n\treturn [numFmtId, stFmtCode];\n}\nfunction write_BrtFmt(i/*:number*/, f/*:string*/, o) {\n\tif(!o) o = new_buf(6 + 4 * f.length);\n\to.write_shift(2, i);\n\twrite_XLWideString(f, o);\n\tvar out = (o.length > o.l) ? o.slice(0, o.l) : o;\n\tif(o.l == null) o.l = o.length;\n\treturn out;\n}\n\n/* [MS-XLSB] 2.4.659 BrtFont TODO */\nfunction parse_BrtFont(data, length/*:number*/, opts) {\n\tvar out = ({}/*:any*/);\n\n\tout.sz = data.read_shift(2) / 20;\n\n\tvar grbit = parse_FontFlags(data, 2, opts);\n\tif(grbit.fItalic) out.italic = 1;\n\tif(grbit.fCondense) out.condense = 1;\n\tif(grbit.fExtend) out.extend = 1;\n\tif(grbit.fShadow) out.shadow = 1;\n\tif(grbit.fOutline) out.outline = 1;\n\tif(grbit.fStrikeout) out.strike = 1;\n\n\tvar bls = data.read_shift(2);\n\tif(bls === 0x02BC) out.bold = 1;\n\n\tswitch(data.read_shift(2)) {\n\t\t/* case 0: out.vertAlign = \"baseline\"; break; */\n\t\tcase 1: out.vertAlign = \"superscript\"; break;\n\t\tcase 2: out.vertAlign = \"subscript\"; break;\n\t}\n\n\tvar underline = data.read_shift(1);\n\tif(underline != 0) out.underline = underline;\n\n\tvar family = data.read_shift(1);\n\tif(family > 0) out.family = family;\n\n\tvar bCharSet = data.read_shift(1);\n\tif(bCharSet > 0) out.charset = bCharSet;\n\n\tdata.l++;\n\tout.color = parse_BrtColor(data, 8);\n\n\tswitch(data.read_shift(1)) {\n\t\t/* case 0: out.scheme = \"none\": break; */\n\t\tcase 1: out.scheme = \"major\"; break;\n\t\tcase 2: out.scheme = \"minor\"; break;\n\t}\n\n\tout.name = parse_XLWideString(data, length - 21);\n\n\treturn out;\n}\nfunction write_BrtFont(font/*:any*/, o) {\n\tif(!o) o = new_buf(25+4*32);\n\to.write_shift(2, font.sz * 20);\n\twrite_FontFlags(font, o);\n\to.write_shift(2, font.bold ? 0x02BC : 0x0190);\n\tvar sss = 0;\n\tif(font.vertAlign == \"superscript\") sss = 1;\n\telse if(font.vertAlign == \"subscript\") sss = 2;\n\to.write_shift(2, sss);\n\to.write_shift(1, font.underline || 0);\n\to.write_shift(1, font.family || 0);\n\to.write_shift(1, font.charset || 0);\n\to.write_shift(1, 0);\n\twrite_BrtColor(font.color, o);\n\tvar scheme = 0;\n\tif(font.scheme == \"major\") scheme = 1;\n\tif(font.scheme == \"minor\") scheme = 2;\n\to.write_shift(1, scheme);\n\twrite_XLWideString(font.name, o);\n\treturn o.length > o.l ? o.slice(0, o.l) : o;\n}\n\n/* [MS-XLSB] 2.4.650 BrtFill */\nvar XLSBFillPTNames = [\n\t\"none\",\n\t\"solid\",\n\t\"mediumGray\",\n\t\"darkGray\",\n\t\"lightGray\",\n\t\"darkHorizontal\",\n\t\"darkVertical\",\n\t\"darkDown\",\n\t\"darkUp\",\n\t\"darkGrid\",\n\t\"darkTrellis\",\n\t\"lightHorizontal\",\n\t\"lightVertical\",\n\t\"lightDown\",\n\t\"lightUp\",\n\t\"lightGrid\",\n\t\"lightTrellis\",\n\t\"gray125\",\n\t\"gray0625\"\n];\nvar rev_XLSBFillPTNames/*:EvertNumType*/;\n/* TODO: gradient fill representation */\nvar parse_BrtFill = parsenoop;\nfunction write_BrtFill(fill, o) {\n\tif(!o) o = new_buf(4*3 + 8*7 + 16*1);\n\tif(!rev_XLSBFillPTNames) rev_XLSBFillPTNames = (evert(XLSBFillPTNames)/*:any*/);\n\tvar fls/*:number*/ = rev_XLSBFillPTNames[fill.patternType];\n\tif(fls == null) fls = 0x28;\n\to.write_shift(4, fls);\n\tvar j = 0;\n\tif(fls != 0x28) {\n\t\t/* TODO: custom FG Color */\n\t\twrite_BrtColor({auto:1}, o);\n\t\t/* TODO: custom BG Color */\n\t\twrite_BrtColor({auto:1}, o);\n\n\t\tfor(; j < 12; ++j) o.write_shift(4, 0);\n\t} else {\n\t\tfor(; j < 4; ++j) o.write_shift(4, 0);\n\n\t\tfor(; j < 12; ++j) o.write_shift(4, 0); /* TODO */\n\t\t/* iGradientType */\n\t\t/* xnumDegree */\n\t\t/* xnumFillToLeft */\n\t\t/* xnumFillToRight */\n\t\t/* xnumFillToTop */\n\t\t/* xnumFillToBottom */\n\t\t/* cNumStop */\n\t\t/* xfillGradientStop */\n\t}\n\treturn o.length > o.l ? o.slice(0, o.l) : o;\n}\n\n/* [MS-XLSB] 2.4.824 BrtXF */\nfunction parse_BrtXF(data, length/*:number*/) {\n\tvar tgt = data.l + length;\n\tvar ixfeParent = data.read_shift(2);\n\tvar ifmt = data.read_shift(2);\n\tdata.l = tgt;\n\treturn {ixfe:ixfeParent, numFmtId:ifmt };\n}\nfunction write_BrtXF(data, ixfeP, o) {\n\tif(!o) o = new_buf(16);\n\to.write_shift(2, ixfeP||0);\n\to.write_shift(2, data.numFmtId||0);\n\to.write_shift(2, 0); /* iFont */\n\to.write_shift(2, 0); /* iFill */\n\to.write_shift(2, 0); /* ixBorder */\n\to.write_shift(1, 0); /* trot */\n\to.write_shift(1, 0); /* indent */\n\tvar flow = 0;\n\to.write_shift(1, flow); /* flags */\n\to.write_shift(1, 0); /* flags */\n\to.write_shift(1, 0); /* xfGrbitAtr */\n\to.write_shift(1, 0);\n\treturn o;\n}\n\n/* [MS-XLSB] 2.5.4 Blxf TODO */\nfunction write_Blxf(data, o) {\n\tif(!o) o = new_buf(10);\n\to.write_shift(1, 0); /* dg */\n\to.write_shift(1, 0);\n\to.write_shift(4, 0); /* color */\n\to.write_shift(4, 0); /* color */\n\treturn o;\n}\n/* [MS-XLSB] 2.4.302 BrtBorder TODO */\nvar parse_BrtBorder = parsenoop;\nfunction write_BrtBorder(border, o) {\n\tif(!o) o = new_buf(51);\n\to.write_shift(1, 0); /* diagonal */\n\twrite_Blxf(null, o); /* top */\n\twrite_Blxf(null, o); /* bottom */\n\twrite_Blxf(null, o); /* left */\n\twrite_Blxf(null, o); /* right */\n\twrite_Blxf(null, o); /* diag */\n\treturn o.length > o.l ? o.slice(0, o.l) : o;\n}\n\n/* [MS-XLSB] 2.4.763 BrtStyle TODO */\nfunction write_BrtStyle(style, o) {\n\tif(!o) o = new_buf(12+4*10);\n\to.write_shift(4, style.xfId);\n\to.write_shift(2, 1);\n\to.write_shift(1, +style.builtinId);\n\to.write_shift(1, 0); /* iLevel */\n\twrite_XLNullableWideString(style.name || \"\", o);\n\treturn o.length > o.l ? o.slice(0, o.l) : o;\n}\n\n/* [MS-XLSB] 2.4.272 BrtBeginTableStyles */\nfunction write_BrtBeginTableStyles(cnt, defTableStyle, defPivotStyle) {\n\tvar o = new_buf(4+256*2*4);\n\to.write_shift(4, cnt);\n\twrite_XLNullableWideString(defTableStyle, o);\n\twrite_XLNullableWideString(defPivotStyle, o);\n\treturn o.length > o.l ? o.slice(0, o.l) : o;\n}\n\n/* [MS-XLSB] 2.1.7.50 Styles */\nfunction parse_sty_bin(data, themes, opts) {\n\tvar styles = {};\n\tstyles.NumberFmt = ([]/*:any*/);\n\tfor(var y in table_fmt) styles.NumberFmt[y] = table_fmt[y];\n\n\tstyles.CellXf = [];\n\tstyles.Fonts = [];\n\tvar state/*:Array<string>*/ = [];\n\tvar pass = false;\n\trecordhopper(data, function hopper_sty(val, R, RT) {\n\t\tswitch(RT) {\n\t\t\tcase 0x002C: /* BrtFmt */\n\t\t\t\tstyles.NumberFmt[val[0]] = val[1]; SSF_load(val[1], val[0]);\n\t\t\t\tbreak;\n\t\t\tcase 0x002B: /* BrtFont */\n\t\t\t\tstyles.Fonts.push(val);\n\t\t\t\tif(val.color.theme != null && themes && themes.themeElements && themes.themeElements.clrScheme) {\n\t\t\t\t\tval.color.rgb = rgb_tint(themes.themeElements.clrScheme[val.color.theme].rgb, val.color.tint || 0);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase 0x0401: /* BrtKnownFonts */ break;\n\t\t\tcase 0x002D: /* BrtFill */\n\t\t\t\tbreak;\n\t\t\tcase 0x002E: /* BrtBorder */\n\t\t\t\tbreak;\n\t\t\tcase 0x002F: /* BrtXF */\n\t\t\t\tif(state[state.length - 1] == 0x0269 /* BrtBeginCellXFs */) {\n\t\t\t\t\tstyles.CellXf.push(val);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase 0x0030: /* BrtStyle */\n\t\t\tcase 0x01FB: /* BrtDXF */\n\t\t\tcase 0x023C: /* BrtMRUColor */\n\t\t\tcase 0x01DB: /* BrtIndexedColor */\n\t\t\t\tbreak;\n\n\t\t\tcase 0x0493: /* BrtDXF14 */\n\t\t\tcase 0x0836: /* BrtDXF15 */\n\t\t\tcase 0x046A: /* BrtSlicerStyleElement */\n\t\t\tcase 0x0200: /* BrtTableStyleElement */\n\t\t\tcase 0x082F: /* BrtTimelineStyleElement */\n\t\t\tcase 0x0C00: /* BrtUid */\n\t\t\t\tbreak;\n\n\t\t\tcase 0x0023: /* BrtFRTBegin */\n\t\t\t\tpass = true; break;\n\t\t\tcase 0x0024: /* BrtFRTEnd */\n\t\t\t\tpass = false; break;\n\t\t\tcase 0x0025: /* BrtACBegin */\n\t\t\t\tstate.push(RT); pass = true; break;\n\t\t\tcase 0x0026: /* BrtACEnd */\n\t\t\t\tstate.pop(); pass = false; break;\n\n\t\t\tdefault:\n\t\t\t\tif(R.T > 0) state.push(RT);\n\t\t\t\telse if(R.T < 0) state.pop();\n\t\t\t\telse if(!pass || (opts.WTF && state[state.length-1] != 0x0025 /* BrtACBegin */)) throw new Error(\"Unexpected record 0x\" + RT.toString(16));\n\t\t}\n\t});\n\treturn styles;\n}\n\nfunction write_FMTS_bin(ba, NF/*:?SSFTable*/) {\n\tif(!NF) return;\n\tvar cnt = 0;\n\t[[5,8],[23,26],[41,44],[/*63*/50,/*66],[164,*/392]].forEach(function(r) {\n\t\t/*:: if(!NF) return; */\n\t\tfor(var i = r[0]; i <= r[1]; ++i) if(NF[i] != null) ++cnt;\n\t});\n\n\tif(cnt == 0) return;\n\twrite_record(ba, 0x0267 /* BrtBeginFmts */, write_UInt32LE(cnt));\n\t[[5,8],[23,26],[41,44],[/*63*/50,/*66],[164,*/392]].forEach(function(r) {\n\t\t/*:: if(!NF) return; */\n\t\tfor(var i = r[0]; i <= r[1]; ++i) if(NF[i] != null) write_record(ba, 0x002C /* BrtFmt */, write_BrtFmt(i, NF[i]));\n\t});\n\twrite_record(ba, 0x0268 /* BrtEndFmts */);\n}\n\nfunction write_FONTS_bin(ba/*::, data*/) {\n\tvar cnt = 1;\n\n\tif(cnt == 0) return;\n\twrite_record(ba, 0x0263 /* BrtBeginFonts */, write_UInt32LE(cnt));\n\twrite_record(ba, 0x002B /* BrtFont */, write_BrtFont({\n\t\tsz:12,\n\t\tcolor: {theme:1},\n\t\tname: \"Calibri\",\n\t\tfamily: 2,\n\t\tscheme: \"minor\"\n\t}));\n\t/* 1*65491BrtFont [ACFONTS] */\n\twrite_record(ba, 0x0264 /* BrtEndFonts */);\n}\n\nfunction write_FILLS_bin(ba/*::, data*/) {\n\tvar cnt = 2;\n\n\tif(cnt == 0) return;\n\twrite_record(ba, 0x025B /* BrtBeginFills */, write_UInt32LE(cnt));\n\twrite_record(ba, 0x002D /* BrtFill */, write_BrtFill({patternType:\"none\"}));\n\twrite_record(ba, 0x002D /* BrtFill */, write_BrtFill({patternType:\"gray125\"}));\n\t/* 1*65431BrtFill */\n\twrite_record(ba, 0x025C /* BrtEndFills */);\n}\n\nfunction write_BORDERS_bin(ba/*::, data*/) {\n\tvar cnt = 1;\n\n\tif(cnt == 0) return;\n\twrite_record(ba, 0x0265 /* BrtBeginBorders */, write_UInt32LE(cnt));\n\twrite_record(ba, 0x002E /* BrtBorder */, write_BrtBorder({}));\n\t/* 1*65430BrtBorder */\n\twrite_record(ba, 0x0266 /* BrtEndBorders */);\n}\n\nfunction write_CELLSTYLEXFS_bin(ba/*::, data*/) {\n\tvar cnt = 1;\n\twrite_record(ba, 0x0272 /* BrtBeginCellStyleXFs */, write_UInt32LE(cnt));\n\twrite_record(ba, 0x002F /* BrtXF */, write_BrtXF({\n\t\tnumFmtId: 0,\n\t\tfontId:   0,\n\t\tfillId:   0,\n\t\tborderId: 0\n\t}, 0xFFFF));\n\t/* 1*65430(BrtXF *FRT) */\n\twrite_record(ba, 0x0273 /* BrtEndCellStyleXFs */);\n}\n\nfunction write_CELLXFS_bin(ba, data) {\n\twrite_record(ba, 0x0269 /* BrtBeginCellXFs */, write_UInt32LE(data.length));\n\tdata.forEach(function(c) { write_record(ba, 0x002F /* BrtXF */, write_BrtXF(c,0)); });\n\t/* 1*65430(BrtXF *FRT) */\n\twrite_record(ba, 0x026A /* BrtEndCellXFs */);\n}\n\nfunction write_STYLES_bin(ba/*::, data*/) {\n\tvar cnt = 1;\n\n\twrite_record(ba, 0x026B /* BrtBeginStyles */, write_UInt32LE(cnt));\n\twrite_record(ba, 0x0030 /* BrtStyle */, write_BrtStyle({\n\t\txfId:0,\n\t\tbuiltinId:0,\n\t\tname:\"Normal\"\n\t}));\n\t/* 1*65430(BrtStyle *FRT) */\n\twrite_record(ba, 0x026C /* BrtEndStyles */);\n}\n\nfunction write_DXFS_bin(ba/*::, data*/) {\n\tvar cnt = 0;\n\n\twrite_record(ba, 0x01F9 /* BrtBeginDXFs */, write_UInt32LE(cnt));\n\t/* *2147483647(BrtDXF *FRT) */\n\twrite_record(ba, 0x01FA /* BrtEndDXFs */);\n}\n\nfunction write_TABLESTYLES_bin(ba/*::, data*/) {\n\tvar cnt = 0;\n\n\twrite_record(ba, 0x01FC /* BrtBeginTableStyles */, write_BrtBeginTableStyles(cnt, \"TableStyleMedium9\", \"PivotStyleMedium4\"));\n\t/* *TABLESTYLE */\n\twrite_record(ba, 0x01FD /* BrtEndTableStyles */);\n}\n\nfunction write_COLORPALETTE_bin(/*::ba, data*/) {\n\treturn;\n\t/* BrtBeginColorPalette [INDEXEDCOLORS] [MRUCOLORS] BrtEndColorPalette */\n}\n\n/* [MS-XLSB] 2.1.7.50 Styles */\nfunction write_sty_bin(wb, opts) {\n\tvar ba = buf_array();\n\twrite_record(ba, 0x0116 /* BrtBeginStyleSheet */);\n\twrite_FMTS_bin(ba, wb.SSF);\n\twrite_FONTS_bin(ba, wb);\n\twrite_FILLS_bin(ba, wb);\n\twrite_BORDERS_bin(ba, wb);\n\twrite_CELLSTYLEXFS_bin(ba, wb);\n\twrite_CELLXFS_bin(ba, opts.cellXfs);\n\twrite_STYLES_bin(ba, wb);\n\twrite_DXFS_bin(ba, wb);\n\twrite_TABLESTYLES_bin(ba, wb);\n\twrite_COLORPALETTE_bin(ba, wb);\n\t/* FRTSTYLESHEET*/\n\twrite_record(ba, 0x0117 /* BrtEndStyleSheet */);\n\treturn ba.end();\n}\n/* Even though theme layout is dk1 lt1 dk2 lt2, true order is lt1 dk1 lt2 dk2 */\nvar XLSXThemeClrScheme = [\n\t'</a:lt1>', '</a:dk1>', '</a:lt2>', '</a:dk2>',\n\t'</a:accent1>', '</a:accent2>', '</a:accent3>',\n\t'</a:accent4>', '</a:accent5>', '</a:accent6>',\n\t'</a:hlink>', '</a:folHlink>'\n];\n/* 20.1.6.2 clrScheme CT_ColorScheme */\nfunction parse_clrScheme(t, themes, opts) {\n\tthemes.themeElements.clrScheme = [];\n\tvar color = {};\n\t(t[0].match(tagregex)||[]).forEach(function(x) {\n\t\tvar y = parsexmltag(x);\n\t\tswitch(y[0]) {\n\t\t\t/* 20.1.6.2 clrScheme (Color Scheme) CT_ColorScheme */\n\t\t\tcase '<a:clrScheme': case '</a:clrScheme>': break;\n\n\t\t\t/* 20.1.2.3.32 srgbClr CT_SRgbColor */\n\t\t\tcase '<a:srgbClr':\n\t\t\t\tcolor.rgb = y.val; break;\n\n\t\t\t/* 20.1.2.3.33 sysClr CT_SystemColor */\n\t\t\tcase '<a:sysClr':\n\t\t\t\tcolor.rgb = y.lastClr; break;\n\n\t\t\t/* 20.1.4.1.1 accent1 (Accent 1) */\n\t\t\t/* 20.1.4.1.2 accent2 (Accent 2) */\n\t\t\t/* 20.1.4.1.3 accent3 (Accent 3) */\n\t\t\t/* 20.1.4.1.4 accent4 (Accent 4) */\n\t\t\t/* 20.1.4.1.5 accent5 (Accent 5) */\n\t\t\t/* 20.1.4.1.6 accent6 (Accent 6) */\n\t\t\t/* 20.1.4.1.9 dk1 (Dark 1) */\n\t\t\t/* 20.1.4.1.10 dk2 (Dark 2) */\n\t\t\t/* 20.1.4.1.15 folHlink (Followed Hyperlink) */\n\t\t\t/* 20.1.4.1.19 hlink (Hyperlink) */\n\t\t\t/* 20.1.4.1.22 lt1 (Light 1) */\n\t\t\t/* 20.1.4.1.23 lt2 (Light 2) */\n\t\t\tcase '<a:dk1>': case '</a:dk1>':\n\t\t\tcase '<a:lt1>': case '</a:lt1>':\n\t\t\tcase '<a:dk2>': case '</a:dk2>':\n\t\t\tcase '<a:lt2>': case '</a:lt2>':\n\t\t\tcase '<a:accent1>': case '</a:accent1>':\n\t\t\tcase '<a:accent2>': case '</a:accent2>':\n\t\t\tcase '<a:accent3>': case '</a:accent3>':\n\t\t\tcase '<a:accent4>': case '</a:accent4>':\n\t\t\tcase '<a:accent5>': case '</a:accent5>':\n\t\t\tcase '<a:accent6>': case '</a:accent6>':\n\t\t\tcase '<a:hlink>': case '</a:hlink>':\n\t\t\tcase '<a:folHlink>': case '</a:folHlink>':\n\t\t\t\tif (y[0].charAt(1) === '/') {\n\t\t\t\t\tthemes.themeElements.clrScheme[XLSXThemeClrScheme.indexOf(y[0])] = color;\n\t\t\t\t\tcolor = {};\n\t\t\t\t} else {\n\t\t\t\t\tcolor.name = y[0].slice(3, y[0].length - 1);\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tdefault: if(opts && opts.WTF) throw new Error('Unrecognized ' + y[0] + ' in clrScheme');\n\t\t}\n\t});\n}\n\n/* 20.1.4.1.18 fontScheme CT_FontScheme */\nfunction parse_fontScheme(/*::t, themes, opts*/) { }\n\n/* 20.1.4.1.15 fmtScheme CT_StyleMatrix */\nfunction parse_fmtScheme(/*::t, themes, opts*/) { }\n\nvar clrsregex = /<a:clrScheme([^>]*)>[\\s\\S]*<\\/a:clrScheme>/;\nvar fntsregex = /<a:fontScheme([^>]*)>[\\s\\S]*<\\/a:fontScheme>/;\nvar fmtsregex = /<a:fmtScheme([^>]*)>[\\s\\S]*<\\/a:fmtScheme>/;\n\n/* 20.1.6.10 themeElements CT_BaseStyles */\nfunction parse_themeElements(data, themes, opts) {\n\tthemes.themeElements = {};\n\n\tvar t;\n\n\t[\n\t\t/* clrScheme CT_ColorScheme */\n\t\t['clrScheme', clrsregex, parse_clrScheme],\n\t\t/* fontScheme CT_FontScheme */\n\t\t['fontScheme', fntsregex, parse_fontScheme],\n\t\t/* fmtScheme CT_StyleMatrix */\n\t\t['fmtScheme', fmtsregex, parse_fmtScheme]\n\t].forEach(function(m) {\n\t\tif(!(t=data.match(m[1]))) throw new Error(m[0] + ' not found in themeElements');\n\t\tm[2](t, themes, opts);\n\t});\n}\n\nvar themeltregex = /<a:themeElements([^>]*)>[\\s\\S]*<\\/a:themeElements>/;\n\n/* 14.2.7 Theme Part */\nfunction parse_theme_xml(data/*:string*/, opts) {\n\t/* 20.1.6.9 theme CT_OfficeStyleSheet */\n\tif(!data || data.length === 0) data = write_theme();\n\n\tvar t;\n\tvar themes = {};\n\n\t/* themeElements CT_BaseStyles */\n\tif(!(t=data.match(themeltregex))) throw new Error('themeElements not found in theme');\n\tparse_themeElements(t[0], themes, opts);\n\tthemes.raw = data;\n\treturn themes;\n}\n\nfunction write_theme(Themes, opts)/*:string*/ {\n\tif(opts && opts.themeXLSX) return opts.themeXLSX;\n\tif(Themes && typeof Themes.raw == \"string\") return Themes.raw;\n\tvar o = [XML_HEADER];\n\to[o.length] = '<a:theme xmlns:a=\"http://schemas.openxmlformats.org/drawingml/2006/main\" name=\"Office Theme\">';\n\to[o.length] =  '<a:themeElements>';\n\n\to[o.length] =   '<a:clrScheme name=\"Office\">';\n\to[o.length] =    '<a:dk1><a:sysClr val=\"windowText\" lastClr=\"000000\"/></a:dk1>';\n\to[o.length] =    '<a:lt1><a:sysClr val=\"window\" lastClr=\"FFFFFF\"/></a:lt1>';\n\to[o.length] =    '<a:dk2><a:srgbClr val=\"1F497D\"/></a:dk2>';\n\to[o.length] =    '<a:lt2><a:srgbClr val=\"EEECE1\"/></a:lt2>';\n\to[o.length] =    '<a:accent1><a:srgbClr val=\"4F81BD\"/></a:accent1>';\n\to[o.length] =    '<a:accent2><a:srgbClr val=\"C0504D\"/></a:accent2>';\n\to[o.length] =    '<a:accent3><a:srgbClr val=\"9BBB59\"/></a:accent3>';\n\to[o.length] =    '<a:accent4><a:srgbClr val=\"8064A2\"/></a:accent4>';\n\to[o.length] =    '<a:accent5><a:srgbClr val=\"4BACC6\"/></a:accent5>';\n\to[o.length] =    '<a:accent6><a:srgbClr val=\"F79646\"/></a:accent6>';\n\to[o.length] =    '<a:hlink><a:srgbClr val=\"0000FF\"/></a:hlink>';\n\to[o.length] =    '<a:folHlink><a:srgbClr val=\"800080\"/></a:folHlink>';\n\to[o.length] =   '</a:clrScheme>';\n\n\to[o.length] =   '<a:fontScheme name=\"Office\">';\n\to[o.length] =    '<a:majorFont>';\n\to[o.length] =     '<a:latin typeface=\"Cambria\"/>';\n\to[o.length] =     '<a:ea typeface=\"\"/>';\n\to[o.length] =     '<a:cs typeface=\"\"/>';\n\to[o.length] =     '<a:font script=\"Jpan\" typeface=\"ＭＳ Ｐゴシック\"/>';\n\to[o.length] =     '<a:font script=\"Hang\" typeface=\"맑은 고딕\"/>';\n\to[o.length] =     '<a:font script=\"Hans\" typeface=\"宋体\"/>';\n\to[o.length] =     '<a:font script=\"Hant\" typeface=\"新細明體\"/>';\n\to[o.length] =     '<a:font script=\"Arab\" typeface=\"Times New Roman\"/>';\n\to[o.length] =     '<a:font script=\"Hebr\" typeface=\"Times New Roman\"/>';\n\to[o.length] =     '<a:font script=\"Thai\" typeface=\"Tahoma\"/>';\n\to[o.length] =     '<a:font script=\"Ethi\" typeface=\"Nyala\"/>';\n\to[o.length] =     '<a:font script=\"Beng\" typeface=\"Vrinda\"/>';\n\to[o.length] =     '<a:font script=\"Gujr\" typeface=\"Shruti\"/>';\n\to[o.length] =     '<a:font script=\"Khmr\" typeface=\"MoolBoran\"/>';\n\to[o.length] =     '<a:font script=\"Knda\" typeface=\"Tunga\"/>';\n\to[o.length] =     '<a:font script=\"Guru\" typeface=\"Raavi\"/>';\n\to[o.length] =     '<a:font script=\"Cans\" typeface=\"Euphemia\"/>';\n\to[o.length] =     '<a:font script=\"Cher\" typeface=\"Plantagenet Cherokee\"/>';\n\to[o.length] =     '<a:font script=\"Yiii\" typeface=\"Microsoft Yi Baiti\"/>';\n\to[o.length] =     '<a:font script=\"Tibt\" typeface=\"Microsoft Himalaya\"/>';\n\to[o.length] =     '<a:font script=\"Thaa\" typeface=\"MV Boli\"/>';\n\to[o.length] =     '<a:font script=\"Deva\" typeface=\"Mangal\"/>';\n\to[o.length] =     '<a:font script=\"Telu\" typeface=\"Gautami\"/>';\n\to[o.length] =     '<a:font script=\"Taml\" typeface=\"Latha\"/>';\n\to[o.length] =     '<a:font script=\"Syrc\" typeface=\"Estrangelo Edessa\"/>';\n\to[o.length] =     '<a:font script=\"Orya\" typeface=\"Kalinga\"/>';\n\to[o.length] =     '<a:font script=\"Mlym\" typeface=\"Kartika\"/>';\n\to[o.length] =     '<a:font script=\"Laoo\" typeface=\"DokChampa\"/>';\n\to[o.length] =     '<a:font script=\"Sinh\" typeface=\"Iskoola Pota\"/>';\n\to[o.length] =     '<a:font script=\"Mong\" typeface=\"Mongolian Baiti\"/>';\n\to[o.length] =     '<a:font script=\"Viet\" typeface=\"Times New Roman\"/>';\n\to[o.length] =     '<a:font script=\"Uigh\" typeface=\"Microsoft Uighur\"/>';\n\to[o.length] =     '<a:font script=\"Geor\" typeface=\"Sylfaen\"/>';\n\to[o.length] =    '</a:majorFont>';\n\to[o.length] =    '<a:minorFont>';\n\to[o.length] =     '<a:latin typeface=\"Calibri\"/>';\n\to[o.length] =     '<a:ea typeface=\"\"/>';\n\to[o.length] =     '<a:cs typeface=\"\"/>';\n\to[o.length] =     '<a:font script=\"Jpan\" typeface=\"ＭＳ Ｐゴシック\"/>';\n\to[o.length] =     '<a:font script=\"Hang\" typeface=\"맑은 고딕\"/>';\n\to[o.length] =     '<a:font script=\"Hans\" typeface=\"宋体\"/>';\n\to[o.length] =     '<a:font script=\"Hant\" typeface=\"新細明體\"/>';\n\to[o.length] =     '<a:font script=\"Arab\" typeface=\"Arial\"/>';\n\to[o.length] =     '<a:font script=\"Hebr\" typeface=\"Arial\"/>';\n\to[o.length] =     '<a:font script=\"Thai\" typeface=\"Tahoma\"/>';\n\to[o.length] =     '<a:font script=\"Ethi\" typeface=\"Nyala\"/>';\n\to[o.length] =     '<a:font script=\"Beng\" typeface=\"Vrinda\"/>';\n\to[o.length] =     '<a:font script=\"Gujr\" typeface=\"Shruti\"/>';\n\to[o.length] =     '<a:font script=\"Khmr\" typeface=\"DaunPenh\"/>';\n\to[o.length] =     '<a:font script=\"Knda\" typeface=\"Tunga\"/>';\n\to[o.length] =     '<a:font script=\"Guru\" typeface=\"Raavi\"/>';\n\to[o.length] =     '<a:font script=\"Cans\" typeface=\"Euphemia\"/>';\n\to[o.length] =     '<a:font script=\"Cher\" typeface=\"Plantagenet Cherokee\"/>';\n\to[o.length] =     '<a:font script=\"Yiii\" typeface=\"Microsoft Yi Baiti\"/>';\n\to[o.length] =     '<a:font script=\"Tibt\" typeface=\"Microsoft Himalaya\"/>';\n\to[o.length] =     '<a:font script=\"Thaa\" typeface=\"MV Boli\"/>';\n\to[o.length] =     '<a:font script=\"Deva\" typeface=\"Mangal\"/>';\n\to[o.length] =     '<a:font script=\"Telu\" typeface=\"Gautami\"/>';\n\to[o.length] =     '<a:font script=\"Taml\" typeface=\"Latha\"/>';\n\to[o.length] =     '<a:font script=\"Syrc\" typeface=\"Estrangelo Edessa\"/>';\n\to[o.length] =     '<a:font script=\"Orya\" typeface=\"Kalinga\"/>';\n\to[o.length] =     '<a:font script=\"Mlym\" typeface=\"Kartika\"/>';\n\to[o.length] =     '<a:font script=\"Laoo\" typeface=\"DokChampa\"/>';\n\to[o.length] =     '<a:font script=\"Sinh\" typeface=\"Iskoola Pota\"/>';\n\to[o.length] =     '<a:font script=\"Mong\" typeface=\"Mongolian Baiti\"/>';\n\to[o.length] =     '<a:font script=\"Viet\" typeface=\"Arial\"/>';\n\to[o.length] =     '<a:font script=\"Uigh\" typeface=\"Microsoft Uighur\"/>';\n\to[o.length] =     '<a:font script=\"Geor\" typeface=\"Sylfaen\"/>';\n\to[o.length] =    '</a:minorFont>';\n\to[o.length] =   '</a:fontScheme>';\n\n\to[o.length] =   '<a:fmtScheme name=\"Office\">';\n\to[o.length] =    '<a:fillStyleLst>';\n\to[o.length] =     '<a:solidFill><a:schemeClr val=\"phClr\"/></a:solidFill>';\n\to[o.length] =     '<a:gradFill rotWithShape=\"1\">';\n\to[o.length] =      '<a:gsLst>';\n\to[o.length] =       '<a:gs pos=\"0\"><a:schemeClr val=\"phClr\"><a:tint val=\"50000\"/><a:satMod val=\"300000\"/></a:schemeClr></a:gs>';\n\to[o.length] =       '<a:gs pos=\"35000\"><a:schemeClr val=\"phClr\"><a:tint val=\"37000\"/><a:satMod val=\"300000\"/></a:schemeClr></a:gs>';\n\to[o.length] =       '<a:gs pos=\"100000\"><a:schemeClr val=\"phClr\"><a:tint val=\"15000\"/><a:satMod val=\"350000\"/></a:schemeClr></a:gs>';\n\to[o.length] =      '</a:gsLst>';\n\to[o.length] =      '<a:lin ang=\"16200000\" scaled=\"1\"/>';\n\to[o.length] =     '</a:gradFill>';\n\to[o.length] =     '<a:gradFill rotWithShape=\"1\">';\n\to[o.length] =      '<a:gsLst>';\n\to[o.length] =       '<a:gs pos=\"0\"><a:schemeClr val=\"phClr\"><a:tint val=\"100000\"/><a:shade val=\"100000\"/><a:satMod val=\"130000\"/></a:schemeClr></a:gs>';\n\to[o.length] =       '<a:gs pos=\"100000\"><a:schemeClr val=\"phClr\"><a:tint val=\"50000\"/><a:shade val=\"100000\"/><a:satMod val=\"350000\"/></a:schemeClr></a:gs>';\n\to[o.length] =      '</a:gsLst>';\n\to[o.length] =      '<a:lin ang=\"16200000\" scaled=\"0\"/>';\n\to[o.length] =     '</a:gradFill>';\n\to[o.length] =    '</a:fillStyleLst>';\n\to[o.length] =    '<a:lnStyleLst>';\n\to[o.length] =     '<a:ln w=\"9525\" cap=\"flat\" cmpd=\"sng\" algn=\"ctr\"><a:solidFill><a:schemeClr val=\"phClr\"><a:shade val=\"95000\"/><a:satMod val=\"105000\"/></a:schemeClr></a:solidFill><a:prstDash val=\"solid\"/></a:ln>';\n\to[o.length] =     '<a:ln w=\"25400\" cap=\"flat\" cmpd=\"sng\" algn=\"ctr\"><a:solidFill><a:schemeClr val=\"phClr\"/></a:solidFill><a:prstDash val=\"solid\"/></a:ln>';\n\to[o.length] =     '<a:ln w=\"38100\" cap=\"flat\" cmpd=\"sng\" algn=\"ctr\"><a:solidFill><a:schemeClr val=\"phClr\"/></a:solidFill><a:prstDash val=\"solid\"/></a:ln>';\n\to[o.length] =    '</a:lnStyleLst>';\n\to[o.length] =    '<a:effectStyleLst>';\n\to[o.length] =     '<a:effectStyle>';\n\to[o.length] =      '<a:effectLst>';\n\to[o.length] =       '<a:outerShdw blurRad=\"40000\" dist=\"20000\" dir=\"5400000\" rotWithShape=\"0\"><a:srgbClr val=\"000000\"><a:alpha val=\"38000\"/></a:srgbClr></a:outerShdw>';\n\to[o.length] =      '</a:effectLst>';\n\to[o.length] =     '</a:effectStyle>';\n\to[o.length] =     '<a:effectStyle>';\n\to[o.length] =      '<a:effectLst>';\n\to[o.length] =       '<a:outerShdw blurRad=\"40000\" dist=\"23000\" dir=\"5400000\" rotWithShape=\"0\"><a:srgbClr val=\"000000\"><a:alpha val=\"35000\"/></a:srgbClr></a:outerShdw>';\n\to[o.length] =      '</a:effectLst>';\n\to[o.length] =     '</a:effectStyle>';\n\to[o.length] =     '<a:effectStyle>';\n\to[o.length] =      '<a:effectLst>';\n\to[o.length] =       '<a:outerShdw blurRad=\"40000\" dist=\"23000\" dir=\"5400000\" rotWithShape=\"0\"><a:srgbClr val=\"000000\"><a:alpha val=\"35000\"/></a:srgbClr></a:outerShdw>';\n\to[o.length] =      '</a:effectLst>';\n\to[o.length] =      '<a:scene3d><a:camera prst=\"orthographicFront\"><a:rot lat=\"0\" lon=\"0\" rev=\"0\"/></a:camera><a:lightRig rig=\"threePt\" dir=\"t\"><a:rot lat=\"0\" lon=\"0\" rev=\"1200000\"/></a:lightRig></a:scene3d>';\n\to[o.length] =      '<a:sp3d><a:bevelT w=\"63500\" h=\"25400\"/></a:sp3d>';\n\to[o.length] =     '</a:effectStyle>';\n\to[o.length] =    '</a:effectStyleLst>';\n\to[o.length] =    '<a:bgFillStyleLst>';\n\to[o.length] =     '<a:solidFill><a:schemeClr val=\"phClr\"/></a:solidFill>';\n\to[o.length] =     '<a:gradFill rotWithShape=\"1\">';\n\to[o.length] =      '<a:gsLst>';\n\to[o.length] =       '<a:gs pos=\"0\"><a:schemeClr val=\"phClr\"><a:tint val=\"40000\"/><a:satMod val=\"350000\"/></a:schemeClr></a:gs>';\n\to[o.length] =       '<a:gs pos=\"40000\"><a:schemeClr val=\"phClr\"><a:tint val=\"45000\"/><a:shade val=\"99000\"/><a:satMod val=\"350000\"/></a:schemeClr></a:gs>';\n\to[o.length] =       '<a:gs pos=\"100000\"><a:schemeClr val=\"phClr\"><a:shade val=\"20000\"/><a:satMod val=\"255000\"/></a:schemeClr></a:gs>';\n\to[o.length] =      '</a:gsLst>';\n\to[o.length] =      '<a:path path=\"circle\"><a:fillToRect l=\"50000\" t=\"-80000\" r=\"50000\" b=\"180000\"/></a:path>';\n\to[o.length] =     '</a:gradFill>';\n\to[o.length] =     '<a:gradFill rotWithShape=\"1\">';\n\to[o.length] =      '<a:gsLst>';\n\to[o.length] =       '<a:gs pos=\"0\"><a:schemeClr val=\"phClr\"><a:tint val=\"80000\"/><a:satMod val=\"300000\"/></a:schemeClr></a:gs>';\n\to[o.length] =       '<a:gs pos=\"100000\"><a:schemeClr val=\"phClr\"><a:shade val=\"30000\"/><a:satMod val=\"200000\"/></a:schemeClr></a:gs>';\n\to[o.length] =      '</a:gsLst>';\n\to[o.length] =      '<a:path path=\"circle\"><a:fillToRect l=\"50000\" t=\"50000\" r=\"50000\" b=\"50000\"/></a:path>';\n\to[o.length] =     '</a:gradFill>';\n\to[o.length] =    '</a:bgFillStyleLst>';\n\to[o.length] =   '</a:fmtScheme>';\n\to[o.length] =  '</a:themeElements>';\n\n\to[o.length] =  '<a:objectDefaults>';\n\to[o.length] =   '<a:spDef>';\n\to[o.length] =    '<a:spPr/><a:bodyPr/><a:lstStyle/><a:style><a:lnRef idx=\"1\"><a:schemeClr val=\"accent1\"/></a:lnRef><a:fillRef idx=\"3\"><a:schemeClr val=\"accent1\"/></a:fillRef><a:effectRef idx=\"2\"><a:schemeClr val=\"accent1\"/></a:effectRef><a:fontRef idx=\"minor\"><a:schemeClr val=\"lt1\"/></a:fontRef></a:style>';\n\to[o.length] =   '</a:spDef>';\n\to[o.length] =   '<a:lnDef>';\n\to[o.length] =    '<a:spPr/><a:bodyPr/><a:lstStyle/><a:style><a:lnRef idx=\"2\"><a:schemeClr val=\"accent1\"/></a:lnRef><a:fillRef idx=\"0\"><a:schemeClr val=\"accent1\"/></a:fillRef><a:effectRef idx=\"1\"><a:schemeClr val=\"accent1\"/></a:effectRef><a:fontRef idx=\"minor\"><a:schemeClr val=\"tx1\"/></a:fontRef></a:style>';\n\to[o.length] =   '</a:lnDef>';\n\to[o.length] =  '</a:objectDefaults>';\n\to[o.length] =  '<a:extraClrSchemeLst/>';\n\to[o.length] = '</a:theme>';\n\treturn o.join(\"\");\n}\n/* [MS-XLS] 2.4.326 TODO: payload is a zip file */\nfunction parse_Theme(blob, length, opts) {\n\tvar end = blob.l + length;\n\tvar dwThemeVersion = blob.read_shift(4);\n\tif(dwThemeVersion === 124226) return;\n\tif(!opts.cellStyles) { blob.l = end; return; }\n\tvar data = blob.slice(blob.l);\n\tblob.l = end;\n\tvar zip; try { zip = zip_read(data, {type: \"array\"}); } catch(e) { return; }\n\tvar themeXML = getzipstr(zip, \"theme/theme/theme1.xml\", true);\n\tif(!themeXML) return;\n\treturn parse_theme_xml(themeXML, opts);\n}\n\n/* 2.5.49 */\nfunction parse_ColorTheme(blob/*::, length*/) { return blob.read_shift(4); }\n\n/* 2.5.155 */\nfunction parse_FullColorExt(blob/*::, length*/) {\n\tvar o = {};\n\to.xclrType = blob.read_shift(2);\n\to.nTintShade = blob.read_shift(2);\n\tswitch(o.xclrType) {\n\t\tcase 0: blob.l += 4; break;\n\t\tcase 1: o.xclrValue = parse_IcvXF(blob, 4); break;\n\t\tcase 2: o.xclrValue = parse_LongRGBA(blob, 4); break;\n\t\tcase 3: o.xclrValue = parse_ColorTheme(blob, 4); break;\n\t\tcase 4: blob.l += 4; break;\n\t}\n\tblob.l += 8;\n\treturn o;\n}\n\n/* 2.5.164 TODO: read 7 bits*/\nfunction parse_IcvXF(blob, length) {\n\treturn parsenoop(blob, length);\n}\n\n/* 2.5.280 */\nfunction parse_XFExtGradient(blob, length) {\n\treturn parsenoop(blob, length);\n}\n\n/* [MS-XLS] 2.5.108 */\nfunction parse_ExtProp(blob/*::, length*/)/*:Array<any>*/ {\n\tvar extType = blob.read_shift(2);\n\tvar cb = blob.read_shift(2) - 4;\n\tvar o = [extType];\n\tswitch(extType) {\n\t\tcase 0x04: case 0x05: case 0x07: case 0x08:\n\t\tcase 0x09: case 0x0A: case 0x0B: case 0x0D:\n\t\t\to[1] = parse_FullColorExt(blob, cb); break;\n\t\tcase 0x06: o[1] = parse_XFExtGradient(blob, cb); break;\n\t\tcase 0x0E: case 0x0F: o[1] = blob.read_shift(cb === 1 ? 1 : 2); break;\n\t\tdefault: throw new Error(\"Unrecognized ExtProp type: \" + extType + \" \" + cb);\n\t}\n\treturn o;\n}\n\n/* 2.4.355 */\nfunction parse_XFExt(blob, length) {\n\tvar end = blob.l + length;\n\tblob.l += 2;\n\tvar ixfe = blob.read_shift(2);\n\tblob.l += 2;\n\tvar cexts = blob.read_shift(2);\n\tvar ext/*:AOA*/ = [];\n\twhile(cexts-- > 0) ext.push(parse_ExtProp(blob, end-blob.l));\n\treturn {ixfe:ixfe, ext:ext};\n}\n\n/* xf is an XF, see parse_XFExt for xfext */\nfunction update_xfext(xf, xfext) {\n\txfext.forEach(function(xfe) {\n\t\tswitch(xfe[0]) { /* 2.5.108 extPropData */\n\t\t\tcase 0x04: break; /* foreground color */\n\t\t\tcase 0x05: break; /* background color */\n\t\t\tcase 0x06: break; /* gradient fill */\n\t\t\tcase 0x07: break; /* top cell border color */\n\t\t\tcase 0x08: break; /* bottom cell border color */\n\t\t\tcase 0x09: break; /* left cell border color */\n\t\t\tcase 0x0a: break; /* right cell border color */\n\t\t\tcase 0x0b: break; /* diagonal cell border color */\n\t\t\tcase 0x0d: /* text color */\n\t\t\t\tbreak;\n\t\t\tcase 0x0e: break; /* font scheme */\n\t\t\tcase 0x0f: break; /* indentation level */\n\t\t}\n\t});\n}\n\nfunction parse_BrtMdtinfo(data, length) {\n  return {\n    flags: data.read_shift(4),\n    version: data.read_shift(4),\n    name: parse_XLWideString(data, length - 8)\n  };\n}\nfunction write_BrtMdtinfo(data) {\n  var o = new_buf(12 + 2 * data.name.length);\n  o.write_shift(4, data.flags);\n  o.write_shift(4, data.version);\n  write_XLWideString(data.name, o);\n  return o.slice(0, o.l);\n}\nfunction parse_BrtMdb(data) {\n  var out = [];\n  var cnt = data.read_shift(4);\n  while (cnt-- > 0)\n    out.push([data.read_shift(4), data.read_shift(4)]);\n  return out;\n}\nfunction write_BrtMdb(mdb) {\n  var o = new_buf(4 + 8 * mdb.length);\n  o.write_shift(4, mdb.length);\n  for (var i = 0; i < mdb.length; ++i) {\n    o.write_shift(4, mdb[i][0]);\n    o.write_shift(4, mdb[i][1]);\n  }\n  return o;\n}\nfunction write_BrtBeginEsfmd(cnt, name) {\n  var o = new_buf(8 + 2 * name.length);\n  o.write_shift(4, cnt);\n  write_XLWideString(name, o);\n  return o.slice(0, o.l);\n}\nfunction parse_BrtBeginEsmdb(data) {\n  data.l += 4;\n  return data.read_shift(4) != 0;\n}\nfunction write_BrtBeginEsmdb(cnt, cm) {\n  var o = new_buf(8);\n  o.write_shift(4, cnt);\n  o.write_shift(4, cm ? 1 : 0);\n  return o;\n}\nfunction parse_xlmeta_bin(data, name, _opts) {\n  var out = { Types: [], Cell: [], Value: [] };\n  var opts = _opts || {};\n  var state = [];\n  var pass = false;\n  var metatype = 2;\n  recordhopper(data, function(val, R, RT) {\n    switch (RT) {\n      case 335:\n        out.Types.push({ name: val.name });\n        break;\n      case 51:\n        val.forEach(function(r) {\n          if (metatype == 1)\n            out.Cell.push({ type: out.Types[r[0] - 1].name, index: r[1] });\n          else if (metatype == 0)\n            out.Value.push({ type: out.Types[r[0] - 1].name, index: r[1] });\n        });\n        break;\n      case 337:\n        metatype = val ? 1 : 0;\n        break;\n      case 338:\n        metatype = 2;\n        break;\n      case 35:\n        state.push(RT);\n        pass = true;\n        break;\n      case 36:\n        state.pop();\n        pass = false;\n        break;\n      default:\n        if (R.T) {\n        } else if (!pass || opts.WTF && state[state.length - 1] != 35)\n          throw new Error(\"Unexpected record 0x\" + RT.toString(16));\n    }\n  });\n  return out;\n}\nfunction write_xlmeta_bin() {\n  var ba = buf_array();\n  write_record(ba, 332);\n  write_record(ba, 334, write_UInt32LE(1));\n  write_record(ba, 335, write_BrtMdtinfo({\n    name: \"XLDAPR\",\n    version: 12e4,\n    flags: 3496657072\n  }));\n  write_record(ba, 336);\n  write_record(ba, 339, write_BrtBeginEsfmd(1, \"XLDAPR\"));\n  write_record(ba, 52);\n  write_record(ba, 35, write_UInt32LE(514));\n  write_record(ba, 4096, write_UInt32LE(0));\n  write_record(ba, 4097, writeuint16(1));\n  write_record(ba, 36);\n  write_record(ba, 53);\n  write_record(ba, 340);\n  write_record(ba, 337, write_BrtBeginEsmdb(1, true));\n  write_record(ba, 51, write_BrtMdb([[1, 0]]));\n  write_record(ba, 338);\n  write_record(ba, 333);\n  return ba.end();\n}\nfunction parse_xlmeta_xml(data, name, opts) {\n  var out = { Types: [], Cell: [], Value: [] };\n  if (!data)\n    return out;\n  var pass = false;\n  var metatype = 2;\n  var lastmeta;\n  data.replace(tagregex, function(x) {\n    var y = parsexmltag(x);\n    switch (strip_ns(y[0])) {\n      case \"<?xml\":\n        break;\n      case \"<metadata\":\n      case \"</metadata>\":\n        break;\n      case \"<metadataTypes\":\n      case \"</metadataTypes>\":\n        break;\n      case \"<metadataType\":\n        out.Types.push({ name: y.name });\n        break;\n      case \"</metadataType>\":\n        break;\n      case \"<futureMetadata\":\n        for (var j = 0; j < out.Types.length; ++j)\n          if (out.Types[j].name == y.name)\n            lastmeta = out.Types[j];\n        break;\n      case \"</futureMetadata>\":\n        break;\n      case \"<bk>\":\n        break;\n      case \"</bk>\":\n        break;\n      case \"<rc\":\n        if (metatype == 1)\n          out.Cell.push({ type: out.Types[y.t - 1].name, index: +y.v });\n        else if (metatype == 0)\n          out.Value.push({ type: out.Types[y.t - 1].name, index: +y.v });\n        break;\n      case \"</rc>\":\n        break;\n      case \"<cellMetadata\":\n        metatype = 1;\n        break;\n      case \"</cellMetadata>\":\n        metatype = 2;\n        break;\n      case \"<valueMetadata\":\n        metatype = 0;\n        break;\n      case \"</valueMetadata>\":\n        metatype = 2;\n        break;\n      case \"<extLst\":\n      case \"<extLst>\":\n      case \"</extLst>\":\n      case \"<extLst/>\":\n        break;\n      case \"<ext\":\n        pass = true;\n        break;\n      case \"</ext>\":\n        pass = false;\n        break;\n      case \"<rvb\":\n        if (!lastmeta)\n          break;\n        if (!lastmeta.offsets)\n          lastmeta.offsets = [];\n        lastmeta.offsets.push(+y.i);\n        break;\n      default:\n        if (!pass && opts.WTF)\n          throw new Error(\"unrecognized \" + y[0] + \" in metadata\");\n    }\n    return x;\n  });\n  return out;\n}\nfunction write_xlmeta_xml() {\n  var o = [XML_HEADER];\n  o.push('<metadata xmlns=\"http://schemas.openxmlformats.org/spreadsheetml/2006/main\" xmlns:xlrd=\"http://schemas.microsoft.com/office/spreadsheetml/2017/richdata\" xmlns:xda=\"http://schemas.microsoft.com/office/spreadsheetml/2017/dynamicarray\">\\n  <metadataTypes count=\"1\">\\n    <metadataType name=\"XLDAPR\" minSupportedVersion=\"120000\" copy=\"1\" pasteAll=\"1\" pasteValues=\"1\" merge=\"1\" splitFirst=\"1\" rowColShift=\"1\" clearFormats=\"1\" clearComments=\"1\" assign=\"1\" coerce=\"1\" cellMeta=\"1\"/>\\n  </metadataTypes>\\n  <futureMetadata name=\"XLDAPR\" count=\"1\">\\n    <bk>\\n      <extLst>\\n        <ext uri=\"{bdbb8cdc-fa1e-496e-a857-3c3f30c029c3}\">\\n          <xda:dynamicArrayProperties fDynamic=\"1\" fCollapsed=\"0\"/>\\n        </ext>\\n      </extLst>\\n    </bk>\\n  </futureMetadata>\\n  <cellMetadata count=\"1\">\\n    <bk>\\n      <rc t=\"1\" v=\"0\"/>\\n    </bk>\\n  </cellMetadata>\\n</metadata>');\n  return o.join(\"\");\n}\n/* 18.6 Calculation Chain */\nfunction parse_cc_xml(data/*::, name, opts*/)/*:Array<any>*/ {\n\tvar d = [];\n\tif(!data) return d;\n\tvar i = 1;\n\t(data.match(tagregex)||[]).forEach(function(x) {\n\t\tvar y = parsexmltag(x);\n\t\tswitch(y[0]) {\n\t\t\tcase '<?xml': break;\n\t\t\t/* 18.6.2  calcChain CT_CalcChain 1 */\n\t\t\tcase '<calcChain': case '<calcChain>': case '</calcChain>': break;\n\t\t\t/* 18.6.1  c CT_CalcCell 1 */\n\t\t\tcase '<c': delete y[0]; if(y.i) i = y.i; else y.i = i; d.push(y); break;\n\t\t}\n\t});\n\treturn d;\n}\n\n//function write_cc_xml(data, opts) { }\n\n/* [MS-XLSB] 2.6.4.1 */\nfunction parse_BrtCalcChainItem$(data) {\n\tvar out = {};\n\tout.i = data.read_shift(4);\n\tvar cell = {};\n\tcell.r = data.read_shift(4);\n\tcell.c = data.read_shift(4);\n\tout.r = encode_cell(cell);\n\tvar flags = data.read_shift(1);\n\tif(flags & 0x2) out.l = '1';\n\tif(flags & 0x8) out.a = '1';\n\treturn out;\n}\n\n/* 18.6 Calculation Chain */\nfunction parse_cc_bin(data, name, opts) {\n\tvar out = [];\n\tvar pass = false;\n\trecordhopper(data, function hopper_cc(val, R, RT) {\n\t\tswitch(RT) {\n\t\t\tcase 0x003F: /* 'BrtCalcChainItem$' */\n\t\t\t\tout.push(val); break;\n\n\t\t\tdefault:\n\t\t\t\tif(R.T){/* empty */}\n\t\t\t\telse if(!pass || opts.WTF) throw new Error(\"Unexpected record 0x\" + RT.toString(16));\n\t\t}\n\t});\n\treturn out;\n}\n\n//function write_cc_bin(data, opts) { }\n/* 18.14 Supplementary Workbook Data */\nfunction parse_xlink_xml(/*::data, rel, name:string, _opts*/) {\n\t//var opts = _opts || {};\n\t//if(opts.WTF) throw \"XLSX External Link\";\n}\n\n/* [MS-XLSB] 2.1.7.25 External Link */\nfunction parse_xlink_bin(data, rel, name/*:string*/, _opts) {\n\tif(!data) return data;\n\tvar opts = _opts || {};\n\n\tvar pass = false, end = false;\n\n\trecordhopper(data, function xlink_parse(val, R, RT) {\n\t\tif(end) return;\n\t\tswitch(RT) {\n\t\t\tcase 0x0167: /* 'BrtSupTabs' */\n\t\t\tcase 0x016B: /* 'BrtExternTableStart' */\n\t\t\tcase 0x016C: /* 'BrtExternTableEnd' */\n\t\t\tcase 0x016E: /* 'BrtExternRowHdr' */\n\t\t\tcase 0x016F: /* 'BrtExternCellBlank' */\n\t\t\tcase 0x0170: /* 'BrtExternCellReal' */\n\t\t\tcase 0x0171: /* 'BrtExternCellBool' */\n\t\t\tcase 0x0172: /* 'BrtExternCellError' */\n\t\t\tcase 0x0173: /* 'BrtExternCellString' */\n\t\t\tcase 0x01D8: /* 'BrtExternValueMeta' */\n\t\t\tcase 0x0241: /* 'BrtSupNameStart' */\n\t\t\tcase 0x0242: /* 'BrtSupNameValueStart' */\n\t\t\tcase 0x0243: /* 'BrtSupNameValueEnd' */\n\t\t\tcase 0x0244: /* 'BrtSupNameNum' */\n\t\t\tcase 0x0245: /* 'BrtSupNameErr' */\n\t\t\tcase 0x0246: /* 'BrtSupNameSt' */\n\t\t\tcase 0x0247: /* 'BrtSupNameNil' */\n\t\t\tcase 0x0248: /* 'BrtSupNameBool' */\n\t\t\tcase 0x0249: /* 'BrtSupNameFmla' */\n\t\t\tcase 0x024A: /* 'BrtSupNameBits' */\n\t\t\tcase 0x024B: /* 'BrtSupNameEnd' */\n\t\t\t\tbreak;\n\n\t\t\tcase 0x0023: /* 'BrtFRTBegin' */\n\t\t\t\tpass = true; break;\n\t\t\tcase 0x0024: /* 'BrtFRTEnd' */\n\t\t\t\tpass = false; break;\n\n\t\t\tdefault:\n\t\t\t\tif(R.T){/* empty */}\n\t\t\t\telse if(!pass || opts.WTF) throw new Error(\"Unexpected record 0x\" + RT.toString(16));\n\t\t}\n\t}, opts);\n}\n/* 20.5 DrawingML - SpreadsheetML Drawing */\n/* 20.5.2.35 wsDr CT_Drawing */\nfunction parse_drawing(data, rels/*:any*/) {\n\tif(!data) return \"??\";\n\t/*\n\t  Chartsheet Drawing:\n\t   - 20.5.2.35 wsDr CT_Drawing\n\t    - 20.5.2.1  absoluteAnchor CT_AbsoluteAnchor\n\t     - 20.5.2.16 graphicFrame CT_GraphicalObjectFrame\n\t      - 20.1.2.2.16 graphic CT_GraphicalObject\n\t       - 20.1.2.2.17 graphicData CT_GraphicalObjectData\n          - chart reference\n\t   the actual type is based on the URI of the graphicData\n\t\tTODO: handle embedded charts and other types of graphics\n\t*/\n\tvar id = (data.match(/<c:chart [^>]*r:id=\"([^\"]*)\"/)||[\"\",\"\"])[1];\n\n\treturn rels['!id'][id].Target;\n}\n\n/* L.5.5.2 SpreadsheetML Comments + VML Schema */\nvar _shapeid = 1024;\nfunction write_comments_vml(rId/*:number*/, comments) {\n\tvar csize = [21600, 21600];\n\t/* L.5.2.1.2 Path Attribute */\n\tvar bbox = [\"m0,0l0\",csize[1],csize[0],csize[1],csize[0],\"0xe\"].join(\",\");\n\tvar o = [\n\t\twritextag(\"xml\", null, { 'xmlns:v': XLMLNS.v, 'xmlns:o': XLMLNS.o, 'xmlns:x': XLMLNS.x, 'xmlns:mv': XLMLNS.mv }).replace(/\\/>/,\">\"),\n\t\twritextag(\"o:shapelayout\", writextag(\"o:idmap\", null, {'v:ext':\"edit\", 'data':rId}), {'v:ext':\"edit\"}),\n\t\twritextag(\"v:shapetype\", [\n\t\t\twritextag(\"v:stroke\", null, {joinstyle:\"miter\"}),\n\t\t\twritextag(\"v:path\", null, {gradientshapeok:\"t\", 'o:connecttype':\"rect\"})\n\t\t].join(\"\"), {id:\"_x0000_t202\", 'o:spt':202, coordsize:csize.join(\",\"),path:bbox})\n\t];\n\twhile(_shapeid < rId * 1000) _shapeid += 1000;\n\n\tcomments.forEach(function(x) {\n\tvar c = decode_cell(x[0]);\n\tvar fillopts = /*::(*/{'color2':\"#BEFF82\", 'type':\"gradient\"}/*:: :any)*/;\n\tif(fillopts.type == \"gradient\") fillopts.angle = \"-180\";\n\tvar fillparm = fillopts.type == \"gradient\" ? writextag(\"o:fill\", null, {type:\"gradientUnscaled\", 'v:ext':\"view\"}) : null;\n\tvar fillxml = writextag('v:fill', fillparm, fillopts);\n\n\tvar shadata = ({on:\"t\", 'obscured':\"t\"}/*:any*/);\n\t++_shapeid;\n\n\to = o.concat([\n\t'<v:shape' + wxt_helper({\n\t\tid:'_x0000_s' + _shapeid,\n\t\ttype:\"#_x0000_t202\",\n\t\tstyle:\"position:absolute; margin-left:80pt;margin-top:5pt;width:104pt;height:64pt;z-index:10\" + (x[1].hidden ? \";visibility:hidden\" : \"\") ,\n\t\tfillcolor:\"#ECFAD4\",\n\t\tstrokecolor:\"#edeaa1\"\n\t}) + '>',\n\t\tfillxml,\n\t\twritextag(\"v:shadow\", null, shadata),\n\t\twritextag(\"v:path\", null, {'o:connecttype':\"none\"}),\n\t\t'<v:textbox><div style=\"text-align:left\"></div></v:textbox>',\n\t\t'<x:ClientData ObjectType=\"Note\">',\n\t\t\t'<x:MoveWithCells/>',\n\t\t\t'<x:SizeWithCells/>',\n\t\t\t/* Part 4 19.4.2.3 Anchor (Anchor) */\n\t\t\twritetag('x:Anchor', [c.c+1, 0, c.r+1, 0, c.c+3, 20, c.r+5, 20].join(\",\")),\n\t\t\twritetag('x:AutoFill', \"False\"),\n\t\t\twritetag('x:Row', String(c.r)),\n\t\t\twritetag('x:Column', String(c.c)),\n\t\t\tx[1].hidden ? '' : '<x:Visible/>',\n\t\t'</x:ClientData>',\n\t'</v:shape>'\n\t]); });\n\to.push('</xml>');\n\treturn o.join(\"\");\n}\nfunction sheet_insert_comments(sheet, comments/*:Array<RawComment>*/, threaded/*:boolean*/, people/*:?Array<any>*/) {\n\tvar dense = Array.isArray(sheet);\n\tvar cell/*:Cell*/;\n\tcomments.forEach(function(comment) {\n\t\tvar r = decode_cell(comment.ref);\n\t\tif(dense) {\n\t\t\tif(!sheet[r.r]) sheet[r.r] = [];\n\t\t\tcell = sheet[r.r][r.c];\n\t\t} else cell = sheet[comment.ref];\n\t\tif (!cell) {\n\t\t\tcell = ({t:\"z\"}/*:any*/);\n\t\t\tif(dense) sheet[r.r][r.c] = cell;\n\t\t\telse sheet[comment.ref] = cell;\n\t\t\tvar range = safe_decode_range(sheet[\"!ref\"]||\"BDWGO1000001:A1\");\n\t\t\tif(range.s.r > r.r) range.s.r = r.r;\n\t\t\tif(range.e.r < r.r) range.e.r = r.r;\n\t\t\tif(range.s.c > r.c) range.s.c = r.c;\n\t\t\tif(range.e.c < r.c) range.e.c = r.c;\n\t\t\tvar encoded = encode_range(range);\n\t\t\tif (encoded !== sheet[\"!ref\"]) sheet[\"!ref\"] = encoded;\n\t\t}\n\n\t\tif (!cell.c) cell.c = [];\n\t\tvar o/*:Comment*/ = ({a: comment.author, t: comment.t, r: comment.r, T: threaded});\n\t\tif(comment.h) o.h = comment.h;\n\n\t\t/* threaded comments always override */\n\t\tfor(var i = cell.c.length - 1; i >= 0; --i) {\n\t\t\tif(!threaded && cell.c[i].T) return;\n\t\t\tif(threaded && !cell.c[i].T) cell.c.splice(i, 1);\n\t\t}\n\t\tif(threaded && people) for(i = 0; i < people.length; ++i) {\n\t\t\tif(o.a == people[i].id) { o.a = people[i].name || o.a; break; }\n\t\t}\n\t\tcell.c.push(o);\n\t});\n}\n\n/* 18.7 Comments */\nfunction parse_comments_xml(data/*:string*/, opts)/*:Array<RawComment>*/ {\n\t/* 18.7.6 CT_Comments */\n\tif(data.match(/<(?:\\w+:)?comments *\\/>/)) return [];\n\tvar authors/*:Array<string>*/ = [];\n\tvar commentList/*:Array<RawComment>*/ = [];\n\tvar authtag = data.match(/<(?:\\w+:)?authors>([\\s\\S]*)<\\/(?:\\w+:)?authors>/);\n\tif(authtag && authtag[1]) authtag[1].split(/<\\/\\w*:?author>/).forEach(function(x) {\n\t\tif(x === \"\" || x.trim() === \"\") return;\n\t\tvar a = x.match(/<(?:\\w+:)?author[^>]*>(.*)/);\n\t\tif(a) authors.push(a[1]);\n\t});\n\tvar cmnttag = data.match(/<(?:\\w+:)?commentList>([\\s\\S]*)<\\/(?:\\w+:)?commentList>/);\n\tif(cmnttag && cmnttag[1]) cmnttag[1].split(/<\\/\\w*:?comment>/).forEach(function(x) {\n\t\tif(x === \"\" || x.trim() === \"\") return;\n\t\tvar cm = x.match(/<(?:\\w+:)?comment[^>]*>/);\n\t\tif(!cm) return;\n\t\tvar y = parsexmltag(cm[0]);\n\t\tvar comment/*:RawComment*/ = ({ author: y.authorId && authors[y.authorId] || \"sheetjsghost\", ref: y.ref, guid: y.guid }/*:any*/);\n\t\tvar cell = decode_cell(y.ref);\n\t\tif(opts.sheetRows && opts.sheetRows <= cell.r) return;\n\t\tvar textMatch = x.match(/<(?:\\w+:)?text>([\\s\\S]*)<\\/(?:\\w+:)?text>/);\n\t\tvar rt = !!textMatch && !!textMatch[1] && parse_si(textMatch[1]) || {r:\"\",t:\"\",h:\"\"};\n\t\tcomment.r = rt.r;\n\t\tif(rt.r == \"<t></t>\") rt.t = rt.h = \"\";\n\t\tcomment.t = (rt.t||\"\").replace(/\\r\\n/g,\"\\n\").replace(/\\r/g,\"\\n\");\n\t\tif(opts.cellHTML) comment.h = rt.h;\n\t\tcommentList.push(comment);\n\t});\n\treturn commentList;\n}\n\nfunction write_comments_xml(data/*::, opts*/) {\n\tvar o = [XML_HEADER, writextag('comments', null, { 'xmlns': XMLNS_main[0] })];\n\n\tvar iauthor/*:Array<string>*/ = [];\n\to.push(\"<authors>\");\n\tdata.forEach(function(x) { x[1].forEach(function(w) { var a = escapexml(w.a);\n\t\tif(iauthor.indexOf(a) == -1) {\n\t\t\tiauthor.push(a);\n\t\t\to.push(\"<author>\" + a + \"</author>\");\n\t\t}\n\t\tif(w.T && w.ID && iauthor.indexOf(\"tc=\" + w.ID) == -1) {\n\t\t\tiauthor.push(\"tc=\" + w.ID);\n\t\t\to.push(\"<author>\" + \"tc=\" + w.ID + \"</author>\");\n\t\t}\n\t}); });\n\tif(iauthor.length == 0) { iauthor.push(\"SheetJ5\"); o.push(\"<author>SheetJ5</author>\"); }\n\to.push(\"</authors>\");\n\to.push(\"<commentList>\");\n\tdata.forEach(function(d) {\n\t\t/* 18.7.3 CT_Comment */\n\t\tvar lastauthor = 0, ts = [];\n\t\tif(d[1][0] && d[1][0].T && d[1][0].ID) lastauthor = iauthor.indexOf(\"tc=\" + d[1][0].ID);\n\t\telse d[1].forEach(function(c) {\n\t\t\tif(c.a) lastauthor = iauthor.indexOf(escapexml(c.a));\n\t\t\tts.push(c.t||\"\");\n\t\t});\n\t\to.push('<comment ref=\"' + d[0] + '\" authorId=\"' + lastauthor + '\"><text>');\n\t\tif(ts.length <= 1) o.push(writetag(\"t\", escapexml(ts[0]||\"\")));\n\t\telse {\n\t\t\t/* based on Threaded Comments -> Comments projection */\n\t\t\tvar t = \"Comment:\\n    \" + (ts[0]) + \"\\n\";\n\t\t\tfor(var i = 1; i < ts.length; ++i) t += \"Reply:\\n    \" + ts[i] + \"\\n\";\n\t\t\to.push(writetag(\"t\", escapexml(t)));\n\t\t}\n\t\to.push('</text></comment>');\n\t});\n\to.push(\"</commentList>\");\n\tif(o.length>2) { o[o.length] = ('</comments>'); o[1]=o[1].replace(\"/>\",\">\"); }\n\treturn o.join(\"\");\n}\n\n/* [MS-XLSX] 2.1.17 */\nfunction parse_tcmnt_xml(data/*:string*/, opts)/*:Array<RawComment>*/ {\n\tvar out = [];\n\tvar pass = false, comment = {}, tidx = 0;\n\tdata.replace(tagregex, function xml_tcmnt(x, idx) {\n\t\tvar y/*:any*/ = parsexmltag(x);\n\t\tswitch(strip_ns(y[0])) {\n\t\t\tcase '<?xml': break;\n\n\t\t\t/* 2.6.207 ThreadedComments CT_ThreadedComments */\n\t\t\tcase '<ThreadedComments': break;\n\t\t\tcase '</ThreadedComments>': break;\n\n\t\t\t/* 2.6.205 threadedComment CT_ThreadedComment */\n\t\t\tcase '<threadedComment': comment = {author: y.personId, guid: y.id, ref: y.ref, T: 1}; break;\n\t\t\tcase '</threadedComment>': if(comment.t != null) out.push(comment); break;\n\n\t\t\tcase '<text>': case '<text': tidx = idx + x.length; break;\n\t\t\tcase '</text>': comment.t = data.slice(tidx, idx).replace(/\\r\\n/g, \"\\n\").replace(/\\r/g, \"\\n\"); break;\n\n\t\t\t/* 2.6.206 mentions CT_ThreadedCommentMentions TODO */\n\t\t\tcase '<mentions': case '<mentions>': pass = true; break;\n\t\t\tcase '</mentions>': pass = false; break;\n\n\t\t\t/* 2.6.202 mention CT_Mention TODO */\n\n\t\t\t/* 18.2.10 extLst CT_ExtensionList ? */\n\t\t\tcase '<extLst': case '<extLst>': case '</extLst>': case '<extLst/>': break;\n\t\t\t/* 18.2.7  ext CT_Extension + */\n\t\t\tcase '<ext': pass=true; break;\n\t\t\tcase '</ext>': pass=false; break;\n\n\t\t\tdefault: if(!pass && opts.WTF) throw new Error('unrecognized ' + y[0] + ' in threaded comments');\n\t\t}\n\t\treturn x;\n\t});\n\treturn out;\n}\n\nfunction write_tcmnt_xml(comments, people, opts) {\n\tvar o = [XML_HEADER, writextag('ThreadedComments', null, { 'xmlns': XMLNS.TCMNT }).replace(/[\\/]>/, \">\")];\n\tcomments.forEach(function(carr) {\n\t\tvar rootid = \"\";\n\t\t(carr[1] || []).forEach(function(c, idx) {\n\t\t\tif(!c.T) { delete c.ID; return; }\n\t\t\tif(c.a && people.indexOf(c.a) == -1) people.push(c.a);\n\t\t\tvar tcopts = {\n\t\t\t\tref: carr[0],\n\t\t\t\tid: \"{54EE7951-7262-4200-6969-\" + (\"000000000000\" + opts.tcid++).slice(-12) + \"}\"\n\t\t\t};\n\t\t\tif(idx == 0) rootid = tcopts.id;\n\t\t\telse tcopts.parentId = rootid;\n\t\t\tc.ID = tcopts.id;\n\t\t\tif(c.a) tcopts.personId = \"{54EE7950-7262-4200-6969-\" + (\"000000000000\" + people.indexOf(c.a)).slice(-12) + \"}\";\n\t\t\to.push(writextag('threadedComment', writetag('text', c.t||\"\"), tcopts));\n\t\t});\n\t});\n\to.push('</ThreadedComments>');\n\treturn o.join(\"\");\n}\n\n/* [MS-XLSX] 2.1.18 */\nfunction parse_people_xml(data/*:string*/, opts) {\n\tvar out = [];\n\tvar pass = false;\n\tdata.replace(tagregex, function xml_tcmnt(x) {\n\t\tvar y/*:any*/ = parsexmltag(x);\n\t\tswitch(strip_ns(y[0])) {\n\t\t\tcase '<?xml': break;\n\n\t\t\t/* 2.4.85 personList CT_PersonList */\n\t\t\tcase '<personList': break;\n\t\t\tcase '</personList>': break;\n\n\t\t\t/* 2.6.203 person CT_Person TODO: providers */\n\t\t\tcase '<person': out.push({name: y.displayname, id: y.id }); break;\n\t\t\tcase '</person>': break;\n\n\t\t\t/* 18.2.10 extLst CT_ExtensionList ? */\n\t\t\tcase '<extLst': case '<extLst>': case '</extLst>': case '<extLst/>': break;\n\t\t\t/* 18.2.7  ext CT_Extension + */\n\t\t\tcase '<ext': pass=true; break;\n\t\t\tcase '</ext>': pass=false; break;\n\n\t\t\tdefault: if(!pass && opts.WTF) throw new Error('unrecognized ' + y[0] + ' in threaded comments');\n\t\t}\n\t\treturn x;\n\t});\n\treturn out;\n}\nfunction write_people_xml(people/*, opts*/) {\n\tvar o = [XML_HEADER, writextag('personList', null, {\n\t\t'xmlns': XMLNS.TCMNT,\n\t\t'xmlns:x': XMLNS_main[0]\n\t}).replace(/[\\/]>/, \">\")];\n\tpeople.forEach(function(person, idx) {\n\t\to.push(writextag('person', null, {\n\t\t\tdisplayName: person,\n\t\t\tid: \"{54EE7950-7262-4200-6969-\" + (\"000000000000\" + idx).slice(-12) + \"}\",\n\t\t\tuserId: person,\n\t\t\tproviderId: \"None\"\n\t\t}));\n\t});\n\to.push(\"</personList>\");\n\treturn o.join(\"\");\n}\n/* [MS-XLSB] 2.4.28 BrtBeginComment */\nfunction parse_BrtBeginComment(data) {\n\tvar out = {};\n\tout.iauthor = data.read_shift(4);\n\tvar rfx = parse_UncheckedRfX(data, 16);\n\tout.rfx = rfx.s;\n\tout.ref = encode_cell(rfx.s);\n\tdata.l += 16; /*var guid = parse_GUID(data); */\n\treturn out;\n}\nfunction write_BrtBeginComment(data, o) {\n\tif(o == null) o = new_buf(36);\n\to.write_shift(4, data[1].iauthor);\n\twrite_UncheckedRfX((data[0]/*:any*/), o);\n\to.write_shift(4, 0);\n\to.write_shift(4, 0);\n\to.write_shift(4, 0);\n\to.write_shift(4, 0);\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.327 BrtCommentAuthor */\nvar parse_BrtCommentAuthor = parse_XLWideString;\nfunction write_BrtCommentAuthor(data) { return write_XLWideString(data.slice(0, 54)); }\n\n/* [MS-XLSB] 2.1.7.8 Comments */\nfunction parse_comments_bin(data, opts)/*:Array<RawComment>*/ {\n\tvar out/*:Array<RawComment>*/ = [];\n\tvar authors/*:Array<string>*/ = [];\n\tvar c = {};\n\tvar pass = false;\n\trecordhopper(data, function hopper_cmnt(val, R, RT) {\n\t\tswitch(RT) {\n\t\t\tcase 0x0278: /* 'BrtCommentAuthor' */\n\t\t\t\tauthors.push(val); break;\n\t\t\tcase 0x027B: /* 'BrtBeginComment' */\n\t\t\t\tc = val; break;\n\t\t\tcase 0x027D: /* 'BrtCommentText' */\n\t\t\t\tc.t = val.t; c.h = val.h; c.r = val.r; break;\n\t\t\tcase 0x027C: /* 'BrtEndComment' */\n\t\t\t\tc.author = authors[c.iauthor];\n\t\t\t\tdelete (c/*:any*/).iauthor;\n\t\t\t\tif(opts.sheetRows && c.rfx && opts.sheetRows <= c.rfx.r) break;\n\t\t\t\tif(!c.t) c.t = \"\";\n\t\t\t\tdelete c.rfx; out.push(c); break;\n\n\t\t\tcase 0x0C00: /* 'BrtUid' */\n\t\t\t\tbreak;\n\n\t\t\tcase 0x0023: /* 'BrtFRTBegin' */\n\t\t\t\tpass = true; break;\n\t\t\tcase 0x0024: /* 'BrtFRTEnd' */\n\t\t\t\tpass = false; break;\n\t\t\tcase 0x0025: /* 'BrtACBegin' */ break;\n\t\t\tcase 0x0026: /* 'BrtACEnd' */ break;\n\n\n\t\t\tdefault:\n\t\t\t\tif(R.T){/* empty */}\n\t\t\t\telse if(!pass || opts.WTF) throw new Error(\"Unexpected record 0x\" + RT.toString(16));\n\t\t}\n\t});\n\treturn out;\n}\n\nfunction write_comments_bin(data/*::, opts*/) {\n\tvar ba = buf_array();\n\tvar iauthor/*:Array<string>*/ = [];\n\twrite_record(ba, 0x0274 /* BrtBeginComments */);\n\n\twrite_record(ba, 0x0276 /* BrtBeginCommentAuthors */);\n\tdata.forEach(function(comment) {\n\t\tcomment[1].forEach(function(c) {\n\t\t\tif(iauthor.indexOf(c.a) > -1) return;\n\t\t\tiauthor.push(c.a.slice(0,54));\n\t\t\twrite_record(ba, 0x0278 /* BrtCommentAuthor */, write_BrtCommentAuthor(c.a));\n\t\t});\n\t});\n\twrite_record(ba, 0x0277 /* BrtEndCommentAuthors */);\n\n\twrite_record(ba, 0x0279 /* BrtBeginCommentList */);\n\tdata.forEach(function(comment) {\n\t\tcomment[1].forEach(function(c) {\n\t\t\tc.iauthor = iauthor.indexOf(c.a);\n\t\t\tvar range = {s:decode_cell(comment[0]),e:decode_cell(comment[0])};\n\t\t\twrite_record(ba, 0x027B /* BrtBeginComment */, write_BrtBeginComment([range, c]));\n\t\t\tif(c.t && c.t.length > 0) write_record(ba, 0x027D /* BrtCommentText */, write_BrtCommentText(c));\n\t\t\twrite_record(ba, 0x027C /* BrtEndComment */);\n\t\t\tdelete c.iauthor;\n\t\t});\n\t});\n\twrite_record(ba, 0x027A /* BrtEndCommentList */);\n\n\twrite_record(ba, 0x0275 /* BrtEndComments */);\n\treturn ba.end();\n}\nvar CT_VBA = \"application/vnd.ms-office.vbaProject\";\nfunction make_vba_xls(cfb) {\n  var newcfb = CFB.utils.cfb_new({ root: \"R\" });\n  cfb.FullPaths.forEach(function(p, i) {\n    if (p.slice(-1) === \"/\" || !p.match(/_VBA_PROJECT_CUR/))\n      return;\n    var newpath = p.replace(/^[^\\/]*/, \"R\").replace(/\\/_VBA_PROJECT_CUR\\u0000*/, \"\");\n    CFB.utils.cfb_add(newcfb, newpath, cfb.FileIndex[i].content);\n  });\n  return CFB.write(newcfb);\n}\nfunction fill_vba_xls(cfb, vba) {\n  vba.FullPaths.forEach(function(p, i) {\n    if (i == 0)\n      return;\n    var newpath = p.replace(/[^\\/]*[\\/]/, \"/_VBA_PROJECT_CUR/\");\n    if (newpath.slice(-1) !== \"/\")\n      CFB.utils.cfb_add(cfb, newpath, vba.FileIndex[i].content);\n  });\n}\nvar VBAFMTS = [\"xlsb\", \"xlsm\", \"xlam\", \"biff8\", \"xla\"];\n/* macro and dialog sheet stubs */\nfunction parse_ds_bin(/*::data:any, opts, idx:number, rels, wb, themes, styles*/)/*:Worksheet*/ { return {'!type':'dialog'}; }\nfunction parse_ds_xml(/*::data:any, opts, idx:number, rels, wb, themes, styles*/)/*:Worksheet*/ { return {'!type':'dialog'}; }\nfunction parse_ms_bin(/*::data:any, opts, idx:number, rels, wb, themes, styles*/)/*:Worksheet*/ { return {'!type':'macro'}; }\nfunction parse_ms_xml(/*::data:any, opts, idx:number, rels, wb, themes, styles*/)/*:Worksheet*/ { return {'!type':'macro'}; }\n/* TODO: it will be useful to parse the function str */\nvar rc_to_a1 = /*#__PURE__*/(function(){\n\tvar rcregex = /(^|[^A-Za-z_])R(\\[?-?\\d+\\]|[1-9]\\d*|)C(\\[?-?\\d+\\]|[1-9]\\d*|)(?![A-Za-z0-9_])/g;\n\tvar rcbase/*:Cell*/ = ({r:0,c:0}/*:any*/);\n\tfunction rcfunc($$,$1,$2,$3) {\n\t\tvar cRel = false, rRel = false;\n\n\t\tif($2.length == 0) rRel = true;\n\t\telse if($2.charAt(0) == \"[\") { rRel = true; $2 = $2.slice(1, -1); }\n\n\t\tif($3.length == 0) cRel = true;\n\t\telse if($3.charAt(0) == \"[\") { cRel = true; $3 = $3.slice(1, -1); }\n\n\t\tvar R = $2.length>0?parseInt($2,10)|0:0, C = $3.length>0?parseInt($3,10)|0:0;\n\n\t\tif(cRel) C += rcbase.c; else --C;\n\t\tif(rRel) R += rcbase.r; else --R;\n\t\treturn $1 + (cRel ? \"\" : \"$\") + encode_col(C) + (rRel ? \"\" : \"$\") + encode_row(R);\n\t}\n\treturn function rc_to_a1(fstr/*:string*/, base/*:Cell*/)/*:string*/ {\n\t\trcbase = base;\n\t\treturn fstr.replace(rcregex, rcfunc);\n\t};\n})();\n\nvar crefregex = /(^|[^._A-Z0-9])([$]?)([A-Z]{1,2}|[A-W][A-Z]{2}|X[A-E][A-Z]|XF[A-D])([$]?)(10[0-3]\\d{4}|104[0-7]\\d{3}|1048[0-4]\\d{2}|10485[0-6]\\d|104857[0-6]|[1-9]\\d{0,5})(?![_.\\(A-Za-z0-9])/g;\nvar a1_to_rc = /*#__PURE__*/(function(){\n\treturn function a1_to_rc(fstr/*:string*/, base/*:CellAddress*/) {\n\t\treturn fstr.replace(crefregex, function($0, $1, $2, $3, $4, $5) {\n\t\t\tvar c = decode_col($3) - ($2 ? 0 : base.c);\n\t\t\tvar r = decode_row($5) - ($4 ? 0 : base.r);\n\t\t\tvar R = (r == 0 ? \"\" : !$4 ? \"[\" + r + \"]\" : (r+1));\n\t\t\tvar C = (c == 0 ? \"\" : !$2 ? \"[\" + c + \"]\" : (c+1));\n\t\t\treturn $1 + \"R\" + R + \"C\" + C;\n\t\t});\n\t};\n})();\n\n/* no defined name can collide with a valid cell address A1:XFD1048576 ... except LOG10! */\nfunction shift_formula_str(f/*:string*/, delta/*:Cell*/)/*:string*/ {\n\treturn f.replace(crefregex, function($0, $1, $2, $3, $4, $5) {\n\t\treturn $1+($2==\"$\" ? $2+$3 : encode_col(decode_col($3)+delta.c))+($4==\"$\" ? $4+$5 : encode_row(decode_row($5) + delta.r));\n\t});\n}\n\nfunction shift_formula_xlsx(f/*:string*/, range/*:string*/, cell/*:string*/)/*:string*/ {\n\tvar r = decode_range(range), s = r.s, c = decode_cell(cell);\n\tvar delta = {r:c.r - s.r, c:c.c - s.c};\n\treturn shift_formula_str(f, delta);\n}\n\n/* TODO: parse formula */\nfunction fuzzyfmla(f/*:string*/)/*:boolean*/ {\n\tif(f.length == 1) return false;\n\treturn true;\n}\n\nfunction _xlfn(f/*:string*/)/*:string*/ {\n\treturn f.replace(/_xlfn\\./g,\"\");\n}\nfunction parseread1(blob) { blob.l+=1; return; }\n\n/* [MS-XLS] 2.5.51 */\nfunction parse_ColRelU(blob, length) {\n\tvar c = blob.read_shift(length == 1 ? 1 : 2);\n\treturn [c & 0x3FFF, (c >> 14) & 1, (c >> 15) & 1];\n}\n\n/* [MS-XLS] 2.5.198.105 ; [MS-XLSB] 2.5.97.89 */\nfunction parse_RgceArea(blob, length, opts) {\n\tvar w = 2;\n\tif(opts) {\n\t\tif(opts.biff >= 2 && opts.biff <= 5) return parse_RgceArea_BIFF2(blob, length, opts);\n\t\telse if(opts.biff == 12) w = 4;\n\t}\n\tvar r=blob.read_shift(w), R=blob.read_shift(w);\n\tvar c=parse_ColRelU(blob, 2);\n\tvar C=parse_ColRelU(blob, 2);\n\treturn { s:{r:r, c:c[0], cRel:c[1], rRel:c[2]}, e:{r:R, c:C[0], cRel:C[1], rRel:C[2]} };\n}\n/* BIFF 2-5 encodes flags in the row field */\nfunction parse_RgceArea_BIFF2(blob/*::, length, opts*/) {\n\tvar r=parse_ColRelU(blob, 2), R=parse_ColRelU(blob, 2);\n\tvar c=blob.read_shift(1);\n\tvar C=blob.read_shift(1);\n\treturn { s:{r:r[0], c:c, cRel:r[1], rRel:r[2]}, e:{r:R[0], c:C, cRel:R[1], rRel:R[2]} };\n}\n\n/* [MS-XLS] 2.5.198.105 ; [MS-XLSB] 2.5.97.90 */\nfunction parse_RgceAreaRel(blob, length, opts) {\n\tif(opts.biff < 8) return parse_RgceArea_BIFF2(blob, length, opts);\n\tvar r=blob.read_shift(opts.biff == 12 ? 4 : 2), R=blob.read_shift(opts.biff == 12 ? 4 : 2);\n\tvar c=parse_ColRelU(blob, 2);\n\tvar C=parse_ColRelU(blob, 2);\n\treturn { s:{r:r, c:c[0], cRel:c[1], rRel:c[2]}, e:{r:R, c:C[0], cRel:C[1], rRel:C[2]} };\n}\n\n/* [MS-XLS] 2.5.198.109 ; [MS-XLSB] 2.5.97.91 */\nfunction parse_RgceLoc(blob, length, opts) {\n\tif(opts && opts.biff >= 2 && opts.biff <= 5) return parse_RgceLoc_BIFF2(blob, length, opts);\n\tvar r = blob.read_shift(opts && opts.biff == 12 ? 4 : 2);\n\tvar c = parse_ColRelU(blob, 2);\n\treturn {r:r, c:c[0], cRel:c[1], rRel:c[2]};\n}\nfunction parse_RgceLoc_BIFF2(blob/*::, length, opts*/) {\n\tvar r = parse_ColRelU(blob, 2);\n\tvar c = blob.read_shift(1);\n\treturn {r:r[0], c:c, cRel:r[1], rRel:r[2]};\n}\n\n/* [MS-XLS] 2.5.198.107, 2.5.47 */\nfunction parse_RgceElfLoc(blob/*::, length, opts*/) {\n\tvar r = blob.read_shift(2);\n\tvar c = blob.read_shift(2);\n\treturn {r:r, c:c & 0xFF, fQuoted:!!(c & 0x4000), cRel:c>>15, rRel:c>>15 };\n}\n\n/* [MS-XLS] 2.5.198.111 ; [MS-XLSB] 2.5.97.92 TODO */\nfunction parse_RgceLocRel(blob, length, opts) {\n\tvar biff = opts && opts.biff ? opts.biff : 8;\n\tif(biff >= 2 && biff <= 5) return parse_RgceLocRel_BIFF2(blob, length, opts);\n\tvar r = blob.read_shift(biff >= 12 ? 4 : 2);\n\tvar cl = blob.read_shift(2);\n\tvar cRel = (cl & 0x4000) >> 14, rRel = (cl & 0x8000) >> 15;\n\tcl &= 0x3FFF;\n\tif(rRel == 1) while(r > 0x7FFFF) r -= 0x100000;\n\tif(cRel == 1) while(cl > 0x1FFF) cl = cl - 0x4000;\n\treturn {r:r,c:cl,cRel:cRel,rRel:rRel};\n}\nfunction parse_RgceLocRel_BIFF2(blob/*::, length:number, opts*/) {\n\tvar rl = blob.read_shift(2);\n\tvar c = blob.read_shift(1);\n\tvar rRel = (rl & 0x8000) >> 15, cRel = (rl & 0x4000) >> 14;\n\trl &= 0x3FFF;\n\tif(rRel == 1 && rl >= 0x2000) rl = rl - 0x4000;\n\tif(cRel == 1 && c >= 0x80) c = c - 0x100;\n\treturn {r:rl,c:c,cRel:cRel,rRel:rRel};\n}\n\n/* [MS-XLS] 2.5.198.27 ; [MS-XLSB] 2.5.97.18 */\nfunction parse_PtgArea(blob, length, opts) {\n\tvar type = (blob[blob.l++] & 0x60) >> 5;\n\tvar area = parse_RgceArea(blob, opts.biff >= 2 && opts.biff <= 5 ? 6 : 8, opts);\n\treturn [type, area];\n}\n\n/* [MS-XLS] 2.5.198.28 ; [MS-XLSB] 2.5.97.19 */\nfunction parse_PtgArea3d(blob, length, opts) {\n\tvar type = (blob[blob.l++] & 0x60) >> 5;\n\tvar ixti = blob.read_shift(2, 'i');\n\tvar w = 8;\n\tif(opts) switch(opts.biff) {\n\t\tcase 5: blob.l += 12; w = 6; break;\n\t\tcase 12: w = 12; break;\n\t}\n\tvar area = parse_RgceArea(blob, w, opts);\n\treturn [type, ixti, area];\n}\n\n/* [MS-XLS] 2.5.198.29 ; [MS-XLSB] 2.5.97.20 */\nfunction parse_PtgAreaErr(blob, length, opts) {\n\tvar type = (blob[blob.l++] & 0x60) >> 5;\n\tblob.l += opts && (opts.biff > 8) ? 12 : (opts.biff < 8 ? 6 : 8);\n\treturn [type];\n}\n/* [MS-XLS] 2.5.198.30 ; [MS-XLSB] 2.5.97.21 */\nfunction parse_PtgAreaErr3d(blob, length, opts) {\n\tvar type = (blob[blob.l++] & 0x60) >> 5;\n\tvar ixti = blob.read_shift(2);\n\tvar w = 8;\n\tif(opts) switch(opts.biff) {\n\t\tcase 5: blob.l += 12; w = 6; break;\n\t\tcase 12: w = 12; break;\n\t}\n\tblob.l += w;\n\treturn [type, ixti];\n}\n\n/* [MS-XLS] 2.5.198.31 ; [MS-XLSB] 2.5.97.22 */\nfunction parse_PtgAreaN(blob, length, opts) {\n\tvar type = (blob[blob.l++] & 0x60) >> 5;\n\tvar area = parse_RgceAreaRel(blob, length - 1, opts);\n\treturn [type, area];\n}\n\n/* [MS-XLS] 2.5.198.32 ; [MS-XLSB] 2.5.97.23 */\nfunction parse_PtgArray(blob, length, opts) {\n\tvar type = (blob[blob.l++] & 0x60) >> 5;\n\tblob.l += opts.biff == 2 ? 6 : opts.biff == 12 ? 14 : 7;\n\treturn [type];\n}\n\n/* [MS-XLS] 2.5.198.33 ; [MS-XLSB] 2.5.97.24 */\nfunction parse_PtgAttrBaxcel(blob) {\n\tvar bitSemi = blob[blob.l+1] & 0x01; /* 1 = volatile */\n\tvar bitBaxcel = 1;\n\tblob.l += 4;\n\treturn [bitSemi, bitBaxcel];\n}\n\n/* [MS-XLS] 2.5.198.34 ; [MS-XLSB] 2.5.97.25 */\nfunction parse_PtgAttrChoose(blob, length, opts)/*:Array<number>*/ {\n\tblob.l +=2;\n\tvar offset = blob.read_shift(opts && opts.biff == 2 ? 1 : 2);\n\tvar o/*:Array<number>*/ = [];\n\t/* offset is 1 less than the number of elements */\n\tfor(var i = 0; i <= offset; ++i) o.push(blob.read_shift(opts && opts.biff == 2 ? 1 : 2));\n\treturn o;\n}\n\n/* [MS-XLS] 2.5.198.35 ; [MS-XLSB] 2.5.97.26 */\nfunction parse_PtgAttrGoto(blob, length, opts) {\n\tvar bitGoto = (blob[blob.l+1] & 0xFF) ? 1 : 0;\n\tblob.l += 2;\n\treturn [bitGoto, blob.read_shift(opts && opts.biff == 2 ? 1 : 2)];\n}\n\n/* [MS-XLS] 2.5.198.36 ; [MS-XLSB] 2.5.97.27 */\nfunction parse_PtgAttrIf(blob, length, opts) {\n\tvar bitIf = (blob[blob.l+1] & 0xFF) ? 1 : 0;\n\tblob.l += 2;\n\treturn [bitIf, blob.read_shift(opts && opts.biff == 2 ? 1 : 2)];\n}\n\n/* [MS-XLSB] 2.5.97.28 */\nfunction parse_PtgAttrIfError(blob) {\n\tvar bitIf = (blob[blob.l+1] & 0xFF) ? 1 : 0;\n\tblob.l += 2;\n\treturn [bitIf, blob.read_shift(2)];\n}\n\n/* [MS-XLS] 2.5.198.37 ; [MS-XLSB] 2.5.97.29 */\nfunction parse_PtgAttrSemi(blob, length, opts) {\n\tvar bitSemi = (blob[blob.l+1] & 0xFF) ? 1 : 0;\n\tblob.l += opts && opts.biff == 2 ? 3 : 4;\n\treturn [bitSemi];\n}\n\n/* [MS-XLS] 2.5.198.40 ; [MS-XLSB] 2.5.97.32 */\nfunction parse_PtgAttrSpaceType(blob/*::, length*/) {\n\tvar type = blob.read_shift(1), cch = blob.read_shift(1);\n\treturn [type, cch];\n}\n\n/* [MS-XLS] 2.5.198.38 ; [MS-XLSB] 2.5.97.30 */\nfunction parse_PtgAttrSpace(blob) {\n\tblob.read_shift(2);\n\treturn parse_PtgAttrSpaceType(blob, 2);\n}\n\n/* [MS-XLS] 2.5.198.39 ; [MS-XLSB] 2.5.97.31 */\nfunction parse_PtgAttrSpaceSemi(blob) {\n\tblob.read_shift(2);\n\treturn parse_PtgAttrSpaceType(blob, 2);\n}\n\n/* [MS-XLS] 2.5.198.84 ; [MS-XLSB] 2.5.97.68 TODO */\nfunction parse_PtgRef(blob, length, opts) {\n\t//var ptg = blob[blob.l] & 0x1F;\n\tvar type = (blob[blob.l] & 0x60)>>5;\n\tblob.l += 1;\n\tvar loc = parse_RgceLoc(blob, 0, opts);\n\treturn [type, loc];\n}\n\n/* [MS-XLS] 2.5.198.88 ; [MS-XLSB] 2.5.97.72 TODO */\nfunction parse_PtgRefN(blob, length, opts) {\n\tvar type = (blob[blob.l] & 0x60)>>5;\n\tblob.l += 1;\n\tvar loc = parse_RgceLocRel(blob, 0, opts);\n\treturn [type, loc];\n}\n\n/* [MS-XLS] 2.5.198.85 ; [MS-XLSB] 2.5.97.69 TODO */\nfunction parse_PtgRef3d(blob, length, opts) {\n\tvar type = (blob[blob.l] & 0x60)>>5;\n\tblob.l += 1;\n\tvar ixti = blob.read_shift(2); // XtiIndex\n\tif(opts && opts.biff == 5) blob.l += 12;\n\tvar loc = parse_RgceLoc(blob, 0, opts); // TODO: or RgceLocRel\n\treturn [type, ixti, loc];\n}\n\n\n/* [MS-XLS] 2.5.198.62 ; [MS-XLSB] 2.5.97.45 TODO */\nfunction parse_PtgFunc(blob, length, opts) {\n\t//var ptg = blob[blob.l] & 0x1F;\n\tvar type = (blob[blob.l] & 0x60)>>5;\n\tblob.l += 1;\n\tvar iftab = blob.read_shift(opts && opts.biff <= 3 ? 1 : 2);\n\treturn [FtabArgc[iftab], Ftab[iftab], type];\n}\n/* [MS-XLS] 2.5.198.63 ; [MS-XLSB] 2.5.97.46 TODO */\nfunction parse_PtgFuncVar(blob, length, opts) {\n\tvar type = blob[blob.l++];\n\tvar cparams = blob.read_shift(1), tab = opts && opts.biff <= 3 ? [(type == 0x58 ? -1 : 0), blob.read_shift(1)]: parsetab(blob);\n\treturn [cparams, (tab[0] === 0 ? Ftab : Cetab)[tab[1]]];\n}\n\nfunction parsetab(blob) {\n\treturn [blob[blob.l+1]>>7, blob.read_shift(2) & 0x7FFF];\n}\n\n/* [MS-XLS] 2.5.198.41 ; [MS-XLSB] 2.5.97.33 */\nfunction parse_PtgAttrSum(blob, length, opts) {\n\tblob.l += opts && opts.biff == 2 ? 3 : 4; return;\n}\n\n/* [MS-XLS] 2.5.198.58 ; [MS-XLSB] 2.5.97.40 */\nfunction parse_PtgExp(blob, length, opts) {\n\tblob.l++;\n\tif(opts && opts.biff == 12) return [blob.read_shift(4, 'i'), 0];\n\tvar row = blob.read_shift(2);\n\tvar col = blob.read_shift(opts && opts.biff == 2 ? 1 : 2);\n\treturn [row, col];\n}\n\n/* [MS-XLS] 2.5.198.57 ; [MS-XLSB] 2.5.97.39 */\nfunction parse_PtgErr(blob) { blob.l++; return BErr[blob.read_shift(1)]; }\n\n/* [MS-XLS] 2.5.198.66 ; [MS-XLSB] 2.5.97.49 */\nfunction parse_PtgInt(blob) { blob.l++; return blob.read_shift(2); }\n\n/* [MS-XLS] 2.5.198.42 ; [MS-XLSB] 2.5.97.34 */\nfunction parse_PtgBool(blob) { blob.l++; return blob.read_shift(1)!==0;}\n\n/* [MS-XLS] 2.5.198.79 ; [MS-XLSB] 2.5.97.63 */\nfunction parse_PtgNum(blob) { blob.l++; return parse_Xnum(blob, 8); }\n\n/* [MS-XLS] 2.5.198.89 ; [MS-XLSB] 2.5.97.74 */\nfunction parse_PtgStr(blob, length, opts) { blob.l++; return parse_ShortXLUnicodeString(blob, length-1, opts); }\n\n/* [MS-XLS] 2.5.192.112 + 2.5.192.11{3,4,5,6,7} */\n/* [MS-XLSB] 2.5.97.93 + 2.5.97.9{4,5,6,7} */\nfunction parse_SerAr(blob, biff/*:number*/) {\n\tvar val = [blob.read_shift(1)];\n\tif(biff == 12) switch(val[0]) {\n\t\tcase 0x02: val[0] = 0x04; break; /* SerBool */\n\t\tcase 0x04: val[0] = 0x10; break; /* SerErr */\n\t\tcase 0x00: val[0] = 0x01; break; /* SerNum */\n\t\tcase 0x01: val[0] = 0x02; break; /* SerStr */\n\t}\n\tswitch(val[0]) {\n\t\tcase 0x04: /* SerBool -- boolean */\n\t\t\tval[1] = parsebool(blob, 1) ? 'TRUE' : 'FALSE';\n\t\t\tif(biff != 12) blob.l += 7; break;\n\t\tcase 0x25: /* appears to be an alias */\n\t\tcase 0x10: /* SerErr -- error */\n\t\t\tval[1] = BErr[blob[blob.l]];\n\t\t\tblob.l += ((biff == 12) ? 4 : 8); break;\n\t\tcase 0x00: /* SerNil -- honestly, I'm not sure how to reproduce this */\n\t\t\tblob.l += 8; break;\n\t\tcase 0x01: /* SerNum -- Xnum */\n\t\t\tval[1] = parse_Xnum(blob, 8); break;\n\t\tcase 0x02: /* SerStr -- XLUnicodeString (<256 chars) */\n\t\t\tval[1] = parse_XLUnicodeString2(blob, 0, {biff:biff > 0 && biff < 8 ? 2 : biff}); break;\n\t\tdefault: throw new Error(\"Bad SerAr: \" + val[0]); /* Unreachable */\n\t}\n\treturn val;\n}\n\n/* [MS-XLS] 2.5.198.61 ; [MS-XLSB] 2.5.97.44 */\nfunction parse_PtgExtraMem(blob, cce, opts) {\n\tvar count = blob.read_shift((opts.biff == 12) ? 4 : 2);\n\tvar out/*:Array<Range>*/ = [];\n\tfor(var i = 0; i != count; ++i) out.push(((opts.biff == 12) ? parse_UncheckedRfX : parse_Ref8U)(blob, 8));\n\treturn out;\n}\n\n/* [MS-XLS] 2.5.198.59 ; [MS-XLSB] 2.5.97.41 */\nfunction parse_PtgExtraArray(blob, length, opts) {\n\tvar rows = 0, cols = 0;\n\tif(opts.biff == 12) {\n\t\trows = blob.read_shift(4); // DRw\n\t\tcols = blob.read_shift(4); // DCol\n\t} else {\n\t\tcols = 1 + blob.read_shift(1); //DColByteU\n\t\trows = 1 + blob.read_shift(2); //DRw\n\t}\n\tif(opts.biff >= 2 && opts.biff < 8) { --rows; if(--cols == 0) cols = 0x100; }\n\t// $FlowIgnore\n\tfor(var i = 0, o/*:Array<Array<any>>*/ = []; i != rows && (o[i] = []); ++i)\n\t\tfor(var j = 0; j != cols; ++j) o[i][j] = parse_SerAr(blob, opts.biff);\n\treturn o;\n}\n\n/* [MS-XLS] 2.5.198.76 ; [MS-XLSB] 2.5.97.60 */\nfunction parse_PtgName(blob, length, opts) {\n\tvar type = (blob.read_shift(1) >>> 5) & 0x03;\n\tvar w = (!opts || (opts.biff >= 8)) ? 4 : 2;\n\tvar nameindex = blob.read_shift(w);\n\tswitch(opts.biff) {\n\t\tcase 2: blob.l += 5; break;\n\t\tcase 3: case 4: blob.l += 8; break;\n\t\tcase 5: blob.l += 12; break;\n\t}\n\treturn [type, 0, nameindex];\n}\n\n/* [MS-XLS] 2.5.198.77 ; [MS-XLSB] 2.5.97.61 */\nfunction parse_PtgNameX(blob, length, opts) {\n\tif(opts.biff == 5) return parse_PtgNameX_BIFF5(blob, length, opts);\n\tvar type = (blob.read_shift(1) >>> 5) & 0x03;\n\tvar ixti = blob.read_shift(2); // XtiIndex\n\tvar nameindex = blob.read_shift(4);\n\treturn [type, ixti, nameindex];\n}\nfunction parse_PtgNameX_BIFF5(blob/*::, length, opts*/) {\n\tvar type = (blob.read_shift(1) >>> 5) & 0x03;\n\tvar ixti = blob.read_shift(2, 'i'); // XtiIndex\n\tblob.l += 8;\n\tvar nameindex = blob.read_shift(2);\n\tblob.l += 12;\n\treturn [type, ixti, nameindex];\n}\n\n/* [MS-XLS] 2.5.198.70 ; [MS-XLSB] 2.5.97.54 */\nfunction parse_PtgMemArea(blob, length, opts) {\n\tvar type = (blob.read_shift(1) >>> 5) & 0x03;\n\tblob.l += (opts && opts.biff == 2 ? 3 : 4);\n\tvar cce = blob.read_shift(opts && opts.biff == 2 ? 1 : 2);\n\treturn [type, cce];\n}\n\n/* [MS-XLS] 2.5.198.72 ; [MS-XLSB] 2.5.97.56 */\nfunction parse_PtgMemFunc(blob, length, opts) {\n\tvar type = (blob.read_shift(1) >>> 5) & 0x03;\n\tvar cce = blob.read_shift(opts && opts.biff == 2 ? 1 : 2);\n\treturn [type, cce];\n}\n\n\n/* [MS-XLS] 2.5.198.86 ; [MS-XLSB] 2.5.97.69 */\nfunction parse_PtgRefErr(blob, length, opts) {\n\tvar type = (blob.read_shift(1) >>> 5) & 0x03;\n\tblob.l += 4;\n\tif(opts.biff < 8) blob.l--;\n\tif(opts.biff == 12) blob.l += 2;\n\treturn [type];\n}\n\n/* [MS-XLS] 2.5.198.87 ; [MS-XLSB] 2.5.97.71 */\nfunction parse_PtgRefErr3d(blob, length, opts) {\n\tvar type = (blob[blob.l++] & 0x60) >> 5;\n\tvar ixti = blob.read_shift(2);\n\tvar w = 4;\n\tif(opts) switch(opts.biff) {\n\t\tcase 5: w = 15; break;\n\t\tcase 12: w = 6; break;\n\t}\n\tblob.l += w;\n\treturn [type, ixti];\n}\n\n/* [MS-XLS] 2.5.198.71 ; [MS-XLSB] 2.5.97.55 */\nvar parse_PtgMemErr = parsenoop;\n/* [MS-XLS] 2.5.198.73  ; [MS-XLSB] 2.5.97.57 */\nvar parse_PtgMemNoMem = parsenoop;\n/* [MS-XLS] 2.5.198.92 */\nvar parse_PtgTbl = parsenoop;\n\nfunction parse_PtgElfLoc(blob, length, opts) {\n\tblob.l += 2;\n\treturn [parse_RgceElfLoc(blob, 4, opts)];\n}\nfunction parse_PtgElfNoop(blob/*::, length, opts*/) {\n\tblob.l += 6;\n\treturn [];\n}\n/* [MS-XLS] 2.5.198.46 */\nvar parse_PtgElfCol = parse_PtgElfLoc;\n/* [MS-XLS] 2.5.198.47 */\nvar parse_PtgElfColS = parse_PtgElfNoop;\n/* [MS-XLS] 2.5.198.48 */\nvar parse_PtgElfColSV = parse_PtgElfNoop;\n/* [MS-XLS] 2.5.198.49 */\nvar parse_PtgElfColV = parse_PtgElfLoc;\n/* [MS-XLS] 2.5.198.50 */\nfunction parse_PtgElfLel(blob/*::, length, opts*/) {\n\tblob.l += 2;\n\treturn [parseuint16(blob), blob.read_shift(2) & 0x01];\n}\n/* [MS-XLS] 2.5.198.51 */\nvar parse_PtgElfRadical = parse_PtgElfLoc;\n/* [MS-XLS] 2.5.198.52 */\nvar parse_PtgElfRadicalLel = parse_PtgElfLel;\n/* [MS-XLS] 2.5.198.53 */\nvar parse_PtgElfRadicalS = parse_PtgElfNoop;\n/* [MS-XLS] 2.5.198.54 */\nvar parse_PtgElfRw = parse_PtgElfLoc;\n/* [MS-XLS] 2.5.198.55 */\nvar parse_PtgElfRwV = parse_PtgElfLoc;\n\n/* [MS-XLSB] 2.5.97.52 TODO */\nvar PtgListRT = [\n\t\"Data\",\n\t\"All\",\n\t\"Headers\",\n\t\"??\",\n\t\"?Data2\",\n\t\"??\",\n\t\"?DataHeaders\",\n\t\"??\",\n\t\"Totals\",\n\t\"??\",\n\t\"??\",\n\t\"??\",\n\t\"?DataTotals\",\n\t\"??\",\n\t\"??\",\n\t\"??\",\n\t\"?Current\"\n];\nfunction parse_PtgList(blob/*::, length, opts*/) {\n\tblob.l += 2;\n\tvar ixti = blob.read_shift(2);\n\tvar flags = blob.read_shift(2);\n\tvar idx = blob.read_shift(4);\n\tvar c = blob.read_shift(2);\n\tvar C = blob.read_shift(2);\n\tvar rt = PtgListRT[(flags >> 2) & 0x1F];\n\treturn {ixti: ixti, coltype:(flags&0x3), rt:rt, idx:idx, c:c, C:C};\n}\n/* [MS-XLS] 2.5.198.91 ; [MS-XLSB] 2.5.97.76 */\nfunction parse_PtgSxName(blob/*::, length, opts*/) {\n\tblob.l += 2;\n\treturn [blob.read_shift(4)];\n}\n\n/* [XLS] old spec */\nfunction parse_PtgSheet(blob, length, opts) {\n\tblob.l += 5;\n\tblob.l += 2;\n\tblob.l += (opts.biff == 2 ? 1 : 4);\n\treturn [\"PTGSHEET\"];\n}\nfunction parse_PtgEndSheet(blob, length, opts) {\n\tblob.l += (opts.biff == 2 ? 4 : 5);\n\treturn [\"PTGENDSHEET\"];\n}\nfunction parse_PtgMemAreaN(blob/*::, length, opts*/) {\n\tvar type = (blob.read_shift(1) >>> 5) & 0x03;\n\tvar cce = blob.read_shift(2);\n\treturn [type, cce];\n}\nfunction parse_PtgMemNoMemN(blob/*::, length, opts*/) {\n\tvar type = (blob.read_shift(1) >>> 5) & 0x03;\n\tvar cce = blob.read_shift(2);\n\treturn [type, cce];\n}\nfunction parse_PtgAttrNoop(blob/*::, length, opts*/) {\n\tblob.l += 4;\n\treturn [0, 0];\n}\n\n/* [MS-XLS] 2.5.198.25 ; [MS-XLSB] 2.5.97.16 */\nvar PtgTypes = {\n\t/*::[*/0x01/*::]*/: { n:'PtgExp', f:parse_PtgExp },\n\t/*::[*/0x02/*::]*/: { n:'PtgTbl', f:parse_PtgTbl },\n\t/*::[*/0x03/*::]*/: { n:'PtgAdd', f:parseread1 },\n\t/*::[*/0x04/*::]*/: { n:'PtgSub', f:parseread1 },\n\t/*::[*/0x05/*::]*/: { n:'PtgMul', f:parseread1 },\n\t/*::[*/0x06/*::]*/: { n:'PtgDiv', f:parseread1 },\n\t/*::[*/0x07/*::]*/: { n:'PtgPower', f:parseread1 },\n\t/*::[*/0x08/*::]*/: { n:'PtgConcat', f:parseread1 },\n\t/*::[*/0x09/*::]*/: { n:'PtgLt', f:parseread1 },\n\t/*::[*/0x0A/*::]*/: { n:'PtgLe', f:parseread1 },\n\t/*::[*/0x0B/*::]*/: { n:'PtgEq', f:parseread1 },\n\t/*::[*/0x0C/*::]*/: { n:'PtgGe', f:parseread1 },\n\t/*::[*/0x0D/*::]*/: { n:'PtgGt', f:parseread1 },\n\t/*::[*/0x0E/*::]*/: { n:'PtgNe', f:parseread1 },\n\t/*::[*/0x0F/*::]*/: { n:'PtgIsect', f:parseread1 },\n\t/*::[*/0x10/*::]*/: { n:'PtgUnion', f:parseread1 },\n\t/*::[*/0x11/*::]*/: { n:'PtgRange', f:parseread1 },\n\t/*::[*/0x12/*::]*/: { n:'PtgUplus', f:parseread1 },\n\t/*::[*/0x13/*::]*/: { n:'PtgUminus', f:parseread1 },\n\t/*::[*/0x14/*::]*/: { n:'PtgPercent', f:parseread1 },\n\t/*::[*/0x15/*::]*/: { n:'PtgParen', f:parseread1 },\n\t/*::[*/0x16/*::]*/: { n:'PtgMissArg', f:parseread1 },\n\t/*::[*/0x17/*::]*/: { n:'PtgStr', f:parse_PtgStr },\n\t/*::[*/0x1A/*::]*/: { n:'PtgSheet', f:parse_PtgSheet },\n\t/*::[*/0x1B/*::]*/: { n:'PtgEndSheet', f:parse_PtgEndSheet },\n\t/*::[*/0x1C/*::]*/: { n:'PtgErr', f:parse_PtgErr },\n\t/*::[*/0x1D/*::]*/: { n:'PtgBool', f:parse_PtgBool },\n\t/*::[*/0x1E/*::]*/: { n:'PtgInt', f:parse_PtgInt },\n\t/*::[*/0x1F/*::]*/: { n:'PtgNum', f:parse_PtgNum },\n\t/*::[*/0x20/*::]*/: { n:'PtgArray', f:parse_PtgArray },\n\t/*::[*/0x21/*::]*/: { n:'PtgFunc', f:parse_PtgFunc },\n\t/*::[*/0x22/*::]*/: { n:'PtgFuncVar', f:parse_PtgFuncVar },\n\t/*::[*/0x23/*::]*/: { n:'PtgName', f:parse_PtgName },\n\t/*::[*/0x24/*::]*/: { n:'PtgRef', f:parse_PtgRef },\n\t/*::[*/0x25/*::]*/: { n:'PtgArea', f:parse_PtgArea },\n\t/*::[*/0x26/*::]*/: { n:'PtgMemArea', f:parse_PtgMemArea },\n\t/*::[*/0x27/*::]*/: { n:'PtgMemErr', f:parse_PtgMemErr },\n\t/*::[*/0x28/*::]*/: { n:'PtgMemNoMem', f:parse_PtgMemNoMem },\n\t/*::[*/0x29/*::]*/: { n:'PtgMemFunc', f:parse_PtgMemFunc },\n\t/*::[*/0x2A/*::]*/: { n:'PtgRefErr', f:parse_PtgRefErr },\n\t/*::[*/0x2B/*::]*/: { n:'PtgAreaErr', f:parse_PtgAreaErr },\n\t/*::[*/0x2C/*::]*/: { n:'PtgRefN', f:parse_PtgRefN },\n\t/*::[*/0x2D/*::]*/: { n:'PtgAreaN', f:parse_PtgAreaN },\n\t/*::[*/0x2E/*::]*/: { n:'PtgMemAreaN', f:parse_PtgMemAreaN },\n\t/*::[*/0x2F/*::]*/: { n:'PtgMemNoMemN', f:parse_PtgMemNoMemN },\n\t/*::[*/0x39/*::]*/: { n:'PtgNameX', f:parse_PtgNameX },\n\t/*::[*/0x3A/*::]*/: { n:'PtgRef3d', f:parse_PtgRef3d },\n\t/*::[*/0x3B/*::]*/: { n:'PtgArea3d', f:parse_PtgArea3d },\n\t/*::[*/0x3C/*::]*/: { n:'PtgRefErr3d', f:parse_PtgRefErr3d },\n\t/*::[*/0x3D/*::]*/: { n:'PtgAreaErr3d', f:parse_PtgAreaErr3d },\n\t/*::[*/0xFF/*::]*/: {}\n};\n/* These are duplicated in the PtgTypes table */\nvar PtgDupes = {\n\t/*::[*/0x40/*::]*/: 0x20, /*::[*/0x60/*::]*/: 0x20,\n\t/*::[*/0x41/*::]*/: 0x21, /*::[*/0x61/*::]*/: 0x21,\n\t/*::[*/0x42/*::]*/: 0x22, /*::[*/0x62/*::]*/: 0x22,\n\t/*::[*/0x43/*::]*/: 0x23, /*::[*/0x63/*::]*/: 0x23,\n\t/*::[*/0x44/*::]*/: 0x24, /*::[*/0x64/*::]*/: 0x24,\n\t/*::[*/0x45/*::]*/: 0x25, /*::[*/0x65/*::]*/: 0x25,\n\t/*::[*/0x46/*::]*/: 0x26, /*::[*/0x66/*::]*/: 0x26,\n\t/*::[*/0x47/*::]*/: 0x27, /*::[*/0x67/*::]*/: 0x27,\n\t/*::[*/0x48/*::]*/: 0x28, /*::[*/0x68/*::]*/: 0x28,\n\t/*::[*/0x49/*::]*/: 0x29, /*::[*/0x69/*::]*/: 0x29,\n\t/*::[*/0x4A/*::]*/: 0x2A, /*::[*/0x6A/*::]*/: 0x2A,\n\t/*::[*/0x4B/*::]*/: 0x2B, /*::[*/0x6B/*::]*/: 0x2B,\n\t/*::[*/0x4C/*::]*/: 0x2C, /*::[*/0x6C/*::]*/: 0x2C,\n\t/*::[*/0x4D/*::]*/: 0x2D, /*::[*/0x6D/*::]*/: 0x2D,\n\t/*::[*/0x4E/*::]*/: 0x2E, /*::[*/0x6E/*::]*/: 0x2E,\n\t/*::[*/0x4F/*::]*/: 0x2F, /*::[*/0x6F/*::]*/: 0x2F,\n\t/*::[*/0x58/*::]*/: 0x22, /*::[*/0x78/*::]*/: 0x22,\n\t/*::[*/0x59/*::]*/: 0x39, /*::[*/0x79/*::]*/: 0x39,\n\t/*::[*/0x5A/*::]*/: 0x3A, /*::[*/0x7A/*::]*/: 0x3A,\n\t/*::[*/0x5B/*::]*/: 0x3B, /*::[*/0x7B/*::]*/: 0x3B,\n\t/*::[*/0x5C/*::]*/: 0x3C, /*::[*/0x7C/*::]*/: 0x3C,\n\t/*::[*/0x5D/*::]*/: 0x3D, /*::[*/0x7D/*::]*/: 0x3D\n};\n\nvar Ptg18 = {\n\t/*::[*/0x01/*::]*/: { n:'PtgElfLel', f:parse_PtgElfLel },\n\t/*::[*/0x02/*::]*/: { n:'PtgElfRw', f:parse_PtgElfRw },\n\t/*::[*/0x03/*::]*/: { n:'PtgElfCol', f:parse_PtgElfCol },\n\t/*::[*/0x06/*::]*/: { n:'PtgElfRwV', f:parse_PtgElfRwV },\n\t/*::[*/0x07/*::]*/: { n:'PtgElfColV', f:parse_PtgElfColV },\n\t/*::[*/0x0A/*::]*/: { n:'PtgElfRadical', f:parse_PtgElfRadical },\n\t/*::[*/0x0B/*::]*/: { n:'PtgElfRadicalS', f:parse_PtgElfRadicalS },\n\t/*::[*/0x0D/*::]*/: { n:'PtgElfColS', f:parse_PtgElfColS },\n\t/*::[*/0x0F/*::]*/: { n:'PtgElfColSV', f:parse_PtgElfColSV },\n\t/*::[*/0x10/*::]*/: { n:'PtgElfRadicalLel', f:parse_PtgElfRadicalLel },\n\t/*::[*/0x19/*::]*/: { n:'PtgList', f:parse_PtgList },\n\t/*::[*/0x1D/*::]*/: { n:'PtgSxName', f:parse_PtgSxName },\n\t/*::[*/0xFF/*::]*/: {}\n};\nvar Ptg19 = {\n\t/*::[*/0x00/*::]*/: { n:'PtgAttrNoop', f:parse_PtgAttrNoop },\n\t/*::[*/0x01/*::]*/: { n:'PtgAttrSemi', f:parse_PtgAttrSemi },\n\t/*::[*/0x02/*::]*/: { n:'PtgAttrIf', f:parse_PtgAttrIf },\n\t/*::[*/0x04/*::]*/: { n:'PtgAttrChoose', f:parse_PtgAttrChoose },\n\t/*::[*/0x08/*::]*/: { n:'PtgAttrGoto', f:parse_PtgAttrGoto },\n\t/*::[*/0x10/*::]*/: { n:'PtgAttrSum', f:parse_PtgAttrSum },\n\t/*::[*/0x20/*::]*/: { n:'PtgAttrBaxcel', f:parse_PtgAttrBaxcel },\n\t/*::[*/0x21/*::]*/: { n:'PtgAttrBaxcel', f:parse_PtgAttrBaxcel },\n\t/*::[*/0x40/*::]*/: { n:'PtgAttrSpace', f:parse_PtgAttrSpace },\n\t/*::[*/0x41/*::]*/: { n:'PtgAttrSpaceSemi', f:parse_PtgAttrSpaceSemi },\n\t/*::[*/0x80/*::]*/: { n:'PtgAttrIfError', f:parse_PtgAttrIfError },\n\t/*::[*/0xFF/*::]*/: {}\n};\n\n/* [MS-XLS] 2.5.198.103 ; [MS-XLSB] 2.5.97.87 */\nfunction parse_RgbExtra(blob, length, rgce, opts) {\n\tif(opts.biff < 8) return parsenoop(blob, length);\n\tvar target = blob.l + length;\n\tvar o = [];\n\tfor(var i = 0; i !== rgce.length; ++i) {\n\t\tswitch(rgce[i][0]) {\n\t\t\tcase 'PtgArray': /* PtgArray -> PtgExtraArray */\n\t\t\t\trgce[i][1] = parse_PtgExtraArray(blob, 0, opts);\n\t\t\t\to.push(rgce[i][1]);\n\t\t\t\tbreak;\n\t\t\tcase 'PtgMemArea': /* PtgMemArea -> PtgExtraMem */\n\t\t\t\trgce[i][2] = parse_PtgExtraMem(blob, rgce[i][1], opts);\n\t\t\t\to.push(rgce[i][2]);\n\t\t\t\tbreak;\n\t\t\tcase 'PtgExp': /* PtgExp -> PtgExtraCol */\n\t\t\t\tif(opts && opts.biff == 12) {\n\t\t\t\t\trgce[i][1][1] = blob.read_shift(4);\n\t\t\t\t\to.push(rgce[i][1]);\n\t\t\t\t} break;\n\t\t\tcase 'PtgList': /* TODO: PtgList -> PtgExtraList */\n\t\t\tcase 'PtgElfRadicalS': /* TODO: PtgElfRadicalS -> PtgExtraElf */\n\t\t\tcase 'PtgElfColS': /* TODO: PtgElfColS -> PtgExtraElf */\n\t\t\tcase 'PtgElfColSV': /* TODO: PtgElfColSV -> PtgExtraElf */\n\t\t\t\tthrow \"Unsupported \" + rgce[i][0];\n\t\t\tdefault: break;\n\t\t}\n\t}\n\tlength = target - blob.l;\n\t/* note: this is technically an error but Excel disregards */\n\t//if(target !== blob.l && blob.l !== target - length) throw new Error(target + \" != \" + blob.l);\n\tif(length !== 0) o.push(parsenoop(blob, length));\n\treturn o;\n}\n\n/* [MS-XLS] 2.5.198.104 ; [MS-XLSB] 2.5.97.88 */\nfunction parse_Rgce(blob, length, opts) {\n\tvar target = blob.l + length;\n\tvar R, id, ptgs = [];\n\twhile(target != blob.l) {\n\t\tlength = target - blob.l;\n\t\tid = blob[blob.l];\n\t\tR = PtgTypes[id] || PtgTypes[PtgDupes[id]];\n\t\tif(id === 0x18 || id === 0x19) R = (id === 0x18 ? Ptg18 : Ptg19)[blob[blob.l + 1]];\n\t\tif(!R || !R.f) { /*ptgs.push*/(parsenoop(blob, length)); }\n\t\telse { ptgs.push([R.n, R.f(blob, length, opts)]); }\n\t}\n\treturn ptgs;\n}\n\nfunction stringify_array(f/*:Array<Array<string>>*/)/*:string*/ {\n\tvar o/*:Array<string>*/ = [];\n\tfor(var i = 0; i < f.length; ++i) {\n\t\tvar x = f[i], r/*:Array<string>*/ = [];\n\t\tfor(var j = 0; j < x.length; ++j) {\n\t\t\tvar y = x[j];\n\t\t\tif(y) switch(y[0]) {\n\t\t\t\t// TODO: handle embedded quotes\n\t\t\t\tcase 0x02:\n\t\t\t\t\t/*:: if(typeof y[1] != 'string') throw \"unreachable\"; */\n\t\t\t\t\tr.push('\"' + y[1].replace(/\"/g,'\"\"') + '\"'); break;\n\t\t\t\tdefault: r.push(y[1]);\n\t\t\t} else r.push(\"\");\n\t\t}\n\t\to.push(r.join(\",\"));\n\t}\n\treturn o.join(\";\");\n}\n\n/* [MS-XLS] 2.2.2 ; [MS-XLSB] 2.2.2 TODO */\nvar PtgBinOp = {\n\tPtgAdd: \"+\",\n\tPtgConcat: \"&\",\n\tPtgDiv: \"/\",\n\tPtgEq: \"=\",\n\tPtgGe: \">=\",\n\tPtgGt: \">\",\n\tPtgLe: \"<=\",\n\tPtgLt: \"<\",\n\tPtgMul: \"*\",\n\tPtgNe: \"<>\",\n\tPtgPower: \"^\",\n\tPtgSub: \"-\"\n};\n\n// List of invalid characters needs to be tested further\nfunction formula_quote_sheet_name(sname/*:string*/, opts)/*:string*/ {\n\tif(!sname && !(opts && opts.biff <= 5 && opts.biff >= 2)) throw new Error(\"empty sheet name\");\n\tif (/[^\\w\\u4E00-\\u9FFF\\u3040-\\u30FF]/.test(sname)) return \"'\" + sname + \"'\";\n\treturn sname;\n}\nfunction get_ixti_raw(supbooks, ixti/*:number*/, opts)/*:string*/ {\n\tif(!supbooks) return \"SH33TJSERR0\";\n\tif(opts.biff > 8 && (!supbooks.XTI || !supbooks.XTI[ixti])) return supbooks.SheetNames[ixti];\n\tif(!supbooks.XTI) return \"SH33TJSERR6\";\n\tvar XTI = supbooks.XTI[ixti];\n\tif(opts.biff < 8) {\n\t\tif(ixti > 10000) ixti-= 65536;\n\t\tif(ixti < 0) ixti = -ixti;\n\t\treturn ixti == 0 ? \"\" : supbooks.XTI[ixti - 1];\n\t}\n\tif(!XTI) return \"SH33TJSERR1\";\n\tvar o = \"\";\n\tif(opts.biff > 8) switch(supbooks[XTI[0]][0]) {\n\t\tcase 0x0165: /* 'BrtSupSelf' */\n\t\t\to = XTI[1] == -1 ? \"#REF\" : supbooks.SheetNames[XTI[1]];\n\t\t\treturn XTI[1] == XTI[2] ? o : o + \":\" + supbooks.SheetNames[XTI[2]];\n\t\tcase 0x0166: /* 'BrtSupSame' */\n\t\t\tif(opts.SID != null) return supbooks.SheetNames[opts.SID];\n\t\t\treturn \"SH33TJSSAME\" + supbooks[XTI[0]][0];\n\t\tcase 0x0163: /* 'BrtSupBookSrc' */\n\t\t\t/* falls through */\n\t\tdefault: return \"SH33TJSSRC\" + supbooks[XTI[0]][0];\n\t}\n\tswitch(supbooks[XTI[0]][0][0]) {\n\t\tcase 0x0401:\n\t\t\to = XTI[1] == -1 ? \"#REF\" : (supbooks.SheetNames[XTI[1]] || \"SH33TJSERR3\");\n\t\t\treturn XTI[1] == XTI[2] ? o : o + \":\" + supbooks.SheetNames[XTI[2]];\n\t\tcase 0x3A01: return supbooks[XTI[0]].slice(1).map(function(name) { return name.Name; }).join(\";;\"); //return \"SH33TJSERR8\";\n\t\tdefault:\n\t\t\tif(!supbooks[XTI[0]][0][3]) return \"SH33TJSERR2\";\n\t\t\to = XTI[1] == -1 ? \"#REF\" : (supbooks[XTI[0]][0][3][XTI[1]] || \"SH33TJSERR4\");\n\t\t\treturn XTI[1] == XTI[2] ? o : o + \":\" + supbooks[XTI[0]][0][3][XTI[2]];\n\t}\n}\nfunction get_ixti(supbooks, ixti/*:number*/, opts)/*:string*/ {\n\tvar ixtiraw = get_ixti_raw(supbooks, ixti, opts);\n\treturn ixtiraw == \"#REF\" ? ixtiraw : formula_quote_sheet_name(ixtiraw, opts);\n}\nfunction stringify_formula(formula/*Array<any>*/, range, cell/*:any*/, supbooks, opts)/*:string*/ {\n\tvar biff = (opts && opts.biff) || 8;\n\tvar _range = /*range != null ? range :*/ {s:{c:0, r:0},e:{c:0, r:0}};\n\tvar stack/*:Array<string>*/ = [], e1, e2, /*::type,*/ c/*:CellAddress*/, ixti=0, nameidx=0, r, sname=\"\";\n\tif(!formula[0] || !formula[0][0]) return \"\";\n\tvar last_sp = -1, sp = \"\";\n\tfor(var ff = 0, fflen = formula[0].length; ff < fflen; ++ff) {\n\t\tvar f = formula[0][ff];\n\t\tswitch(f[0]) {\n\t\t\tcase 'PtgUminus': /* [MS-XLS] 2.5.198.93 */\n\t\t\t\tstack.push(\"-\" + stack.pop()); break;\n\t\t\tcase 'PtgUplus': /* [MS-XLS] 2.5.198.95 */\n\t\t\t\tstack.push(\"+\" + stack.pop()); break;\n\t\t\tcase 'PtgPercent': /* [MS-XLS] 2.5.198.81 */\n\t\t\t\tstack.push(stack.pop() + \"%\"); break;\n\n\t\t\tcase 'PtgAdd':    /* [MS-XLS] 2.5.198.26 */\n\t\t\tcase 'PtgConcat': /* [MS-XLS] 2.5.198.43 */\n\t\t\tcase 'PtgDiv':    /* [MS-XLS] 2.5.198.45 */\n\t\t\tcase 'PtgEq':     /* [MS-XLS] 2.5.198.56 */\n\t\t\tcase 'PtgGe':     /* [MS-XLS] 2.5.198.64 */\n\t\t\tcase 'PtgGt':     /* [MS-XLS] 2.5.198.65 */\n\t\t\tcase 'PtgLe':     /* [MS-XLS] 2.5.198.68 */\n\t\t\tcase 'PtgLt':     /* [MS-XLS] 2.5.198.69 */\n\t\t\tcase 'PtgMul':    /* [MS-XLS] 2.5.198.75 */\n\t\t\tcase 'PtgNe':     /* [MS-XLS] 2.5.198.78 */\n\t\t\tcase 'PtgPower':  /* [MS-XLS] 2.5.198.82 */\n\t\t\tcase 'PtgSub':    /* [MS-XLS] 2.5.198.90 */\n\t\t\t\te1 = stack.pop(); e2 = stack.pop();\n\t\t\t\tif(last_sp >= 0) {\n\t\t\t\t\tswitch(formula[0][last_sp][1][0]) {\n\t\t\t\t\t\tcase 0:\n\t\t\t\t\t\t\t// $FlowIgnore\n\t\t\t\t\t\t\tsp = fill(\" \", formula[0][last_sp][1][1]); break;\n\t\t\t\t\t\tcase 1:\n\t\t\t\t\t\t\t// $FlowIgnore\n\t\t\t\t\t\t\tsp = fill(\"\\r\", formula[0][last_sp][1][1]); break;\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\tsp = \"\";\n\t\t\t\t\t\t\t// $FlowIgnore\n\t\t\t\t\t\t\tif(opts.WTF) throw new Error(\"Unexpected PtgAttrSpaceType \" + formula[0][last_sp][1][0]);\n\t\t\t\t\t}\n\t\t\t\t\te2 = e2 + sp;\n\t\t\t\t\tlast_sp = -1;\n\t\t\t\t}\n\t\t\t\tstack.push(e2+PtgBinOp[f[0]]+e1);\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgIsect': /* [MS-XLS] 2.5.198.67 */\n\t\t\t\te1 = stack.pop(); e2 = stack.pop();\n\t\t\t\tstack.push(e2+\" \"+e1);\n\t\t\t\tbreak;\n\t\t\tcase 'PtgUnion': /* [MS-XLS] 2.5.198.94 */\n\t\t\t\te1 = stack.pop(); e2 = stack.pop();\n\t\t\t\tstack.push(e2+\",\"+e1);\n\t\t\t\tbreak;\n\t\t\tcase 'PtgRange': /* [MS-XLS] 2.5.198.83 */\n\t\t\t\te1 = stack.pop(); e2 = stack.pop();\n\t\t\t\tstack.push(e2+\":\"+e1);\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgAttrChoose': /* [MS-XLS] 2.5.198.34 */\n\t\t\t\tbreak;\n\t\t\tcase 'PtgAttrGoto': /* [MS-XLS] 2.5.198.35 */\n\t\t\t\tbreak;\n\t\t\tcase 'PtgAttrIf': /* [MS-XLS] 2.5.198.36 */\n\t\t\t\tbreak;\n\t\t\tcase 'PtgAttrIfError': /* [MS-XLSB] 2.5.97.28 */\n\t\t\t\tbreak;\n\n\n\t\t\tcase 'PtgRef': /* [MS-XLS] 2.5.198.84 */\n\t\t\t\t/*::type = f[1][0]; */c = shift_cell_xls((f[1][1]/*:any*/), _range, opts);\n\t\t\t\tstack.push(encode_cell_xls(c, biff));\n\t\t\t\tbreak;\n\t\t\tcase 'PtgRefN': /* [MS-XLS] 2.5.198.88 */\n\t\t\t\t/*::type = f[1][0]; */c = cell ? shift_cell_xls((f[1][1]/*:any*/), cell, opts) : (f[1][1]/*:any*/);\n\t\t\t\tstack.push(encode_cell_xls(c, biff));\n\t\t\t\tbreak;\n\t\t\tcase 'PtgRef3d': /* [MS-XLS] 2.5.198.85 */\n\t\t\t\t/*::type = f[1][0]; */ixti = /*::Number(*/f[1][1]/*::)*/; c = shift_cell_xls((f[1][2]/*:any*/), _range, opts);\n\t\t\t\tsname = get_ixti(supbooks, ixti, opts);\n\t\t\t\tvar w = sname; /* IE9 fails on defined names */ // eslint-disable-line no-unused-vars\n\t\t\t\tstack.push(sname + \"!\" + encode_cell_xls(c, biff));\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgFunc': /* [MS-XLS] 2.5.198.62 */\n\t\t\tcase 'PtgFuncVar': /* [MS-XLS] 2.5.198.63 */\n\t\t\t\t/* f[1] = [argc, func, type] */\n\t\t\t\tvar argc/*:number*/ = (f[1][0]/*:any*/), func/*:string*/ = (f[1][1]/*:any*/);\n\t\t\t\tif(!argc) argc = 0;\n\t\t\t\targc &= 0x7F;\n\t\t\t\tvar args = argc == 0 ? [] : stack.slice(-argc);\n\t\t\t\tstack.length -= argc;\n\t\t\t\tif(func === 'User') func = args.shift();\n\t\t\t\tstack.push(func + \"(\" + args.join(\",\") + \")\");\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgBool': /* [MS-XLS] 2.5.198.42 */\n\t\t\t\tstack.push(f[1] ? \"TRUE\" : \"FALSE\"); break;\n\t\t\tcase 'PtgInt': /* [MS-XLS] 2.5.198.66 */\n\t\t\t\tstack.push(/*::String(*/f[1]/*::)*/); break;\n\t\t\tcase 'PtgNum': /* [MS-XLS] 2.5.198.79 TODO: precision? */\n\t\t\t\tstack.push(String(f[1])); break;\n\t\t\tcase 'PtgStr': /* [MS-XLS] 2.5.198.89 */\n\t\t\t\t// $FlowIgnore\n\t\t\t\tstack.push('\"' + f[1].replace(/\"/g, '\"\"') + '\"'); break;\n\t\t\tcase 'PtgErr': /* [MS-XLS] 2.5.198.57 */\n\t\t\t\tstack.push(/*::String(*/f[1]/*::)*/); break;\n\t\t\tcase 'PtgAreaN': /* [MS-XLS] 2.5.198.31 TODO */\n\t\t\t\t/*::type = f[1][0]; */r = shift_range_xls(f[1][1], cell ? {s:cell} : _range, opts);\n\t\t\t\tstack.push(encode_range_xls((r/*:any*/), opts));\n\t\t\t\tbreak;\n\t\t\tcase 'PtgArea': /* [MS-XLS] 2.5.198.27 TODO: fixed points */\n\t\t\t\t/*::type = f[1][0]; */r = shift_range_xls(f[1][1], _range, opts);\n\t\t\t\tstack.push(encode_range_xls((r/*:any*/), opts));\n\t\t\t\tbreak;\n\t\t\tcase 'PtgArea3d': /* [MS-XLS] 2.5.198.28 TODO */\n\t\t\t\t/*::type = f[1][0]; */ixti = /*::Number(*/f[1][1]/*::)*/; r = f[1][2];\n\t\t\t\tsname = get_ixti(supbooks, ixti, opts);\n\t\t\t\tstack.push(sname + \"!\" + encode_range_xls((r/*:any*/), opts));\n\t\t\t\tbreak;\n\t\t\tcase 'PtgAttrSum': /* [MS-XLS] 2.5.198.41 */\n\t\t\t\tstack.push(\"SUM(\" + stack.pop() + \")\");\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgAttrBaxcel': /* [MS-XLS] 2.5.198.33 */\n\t\t\tcase 'PtgAttrSemi': /* [MS-XLS] 2.5.198.37 */\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgName': /* [MS-XLS] 2.5.198.76 ; [MS-XLSB] 2.5.97.60 TODO: revisions */\n\t\t\t\t/* f[1] = type, 0, nameindex */\n\t\t\t\tnameidx = (f[1][2]/*:any*/);\n\t\t\t\tvar lbl = (supbooks.names||[])[nameidx-1] || (supbooks[0]||[])[nameidx];\n\t\t\t\tvar name = lbl ? lbl.Name : \"SH33TJSNAME\" + String(nameidx);\n\t\t\t\t/* [MS-XLSB] 2.5.97.10 Ftab -- last verified 20220204 */\n\t\t\t\tif(name && name.slice(0,6) == \"_xlfn.\" && !opts.xlfn) name = name.slice(6);\n\t\t\t\tstack.push(name);\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgNameX': /* [MS-XLS] 2.5.198.77 ; [MS-XLSB] 2.5.97.61 TODO: revisions */\n\t\t\t\t/* f[1] = type, ixti, nameindex */\n\t\t\t\tvar bookidx/*:number*/ = (f[1][1]/*:any*/); nameidx = (f[1][2]/*:any*/); var externbook;\n\t\t\t\t/* TODO: Properly handle missing values -- this should be using get_ixti_raw primarily */\n\t\t\t\tif(opts.biff <= 5) {\n\t\t\t\t\tif(bookidx < 0) bookidx = -bookidx;\n\t\t\t\t\tif(supbooks[bookidx]) externbook = supbooks[bookidx][nameidx];\n\t\t\t\t} else {\n\t\t\t\t\tvar o = \"\";\n\t\t\t\t\tif(((supbooks[bookidx]||[])[0]||[])[0] == 0x3A01){/* empty */}\n\t\t\t\t\telse if(((supbooks[bookidx]||[])[0]||[])[0] == 0x0401){\n\t\t\t\t\t\tif(supbooks[bookidx][nameidx] && supbooks[bookidx][nameidx].itab > 0) {\n\t\t\t\t\t\t\to = supbooks.SheetNames[supbooks[bookidx][nameidx].itab-1] + \"!\";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\telse o = supbooks.SheetNames[nameidx-1]+ \"!\";\n\t\t\t\t\tif(supbooks[bookidx] && supbooks[bookidx][nameidx]) o += supbooks[bookidx][nameidx].Name;\n\t\t\t\t\telse if(supbooks[0] && supbooks[0][nameidx]) o += supbooks[0][nameidx].Name;\n\t\t\t\t\telse {\n\t\t\t\t\t\tvar ixtidata = (get_ixti_raw(supbooks, bookidx, opts)||\"\").split(\";;\");\n\t\t\t\t\t\tif(ixtidata[nameidx - 1]) o = ixtidata[nameidx - 1]; // TODO: confirm this is correct\n\t\t\t\t\t\telse o += \"SH33TJSERRX\";\n\t\t\t\t\t}\n\t\t\t\t\tstack.push(o);\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tif(!externbook) externbook = {Name: \"SH33TJSERRY\"};\n\t\t\t\tstack.push(externbook.Name);\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgParen': /* [MS-XLS] 2.5.198.80 */\n\t\t\t\tvar lp = '(', rp = ')';\n\t\t\t\tif(last_sp >= 0) {\n\t\t\t\t\tsp = \"\";\n\t\t\t\t\tswitch(formula[0][last_sp][1][0]) {\n\t\t\t\t\t\t// $FlowIgnore\n\t\t\t\t\t\tcase 2: lp = fill(\" \", formula[0][last_sp][1][1]) + lp; break;\n\t\t\t\t\t\t// $FlowIgnore\n\t\t\t\t\t\tcase 3: lp = fill(\"\\r\", formula[0][last_sp][1][1]) + lp; break;\n\t\t\t\t\t\t// $FlowIgnore\n\t\t\t\t\t\tcase 4: rp = fill(\" \", formula[0][last_sp][1][1]) + rp; break;\n\t\t\t\t\t\t// $FlowIgnore\n\t\t\t\t\t\tcase 5: rp = fill(\"\\r\", formula[0][last_sp][1][1]) + rp; break;\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t// $FlowIgnore\n\t\t\t\t\t\t\tif(opts.WTF) throw new Error(\"Unexpected PtgAttrSpaceType \" + formula[0][last_sp][1][0]);\n\t\t\t\t\t}\n\t\t\t\t\tlast_sp = -1;\n\t\t\t\t}\n\t\t\t\tstack.push(lp + stack.pop() + rp); break;\n\n\t\t\tcase 'PtgRefErr': /* [MS-XLS] 2.5.198.86 */\n\t\t\t\tstack.push('#REF!'); break;\n\n\t\t\tcase 'PtgRefErr3d': /* [MS-XLS] 2.5.198.87 */\n\t\t\t\tstack.push('#REF!'); break;\n\n\t\t\tcase 'PtgExp': /* [MS-XLS] 2.5.198.58 TODO */\n\t\t\t\tc = {c:(f[1][1]/*:any*/),r:(f[1][0]/*:any*/)};\n\t\t\t\tvar q = ({c: cell.c, r:cell.r}/*:any*/);\n\t\t\t\tif(supbooks.sharedf[encode_cell(c)]) {\n\t\t\t\t\tvar parsedf = (supbooks.sharedf[encode_cell(c)]);\n\t\t\t\t\tstack.push(stringify_formula(parsedf, _range, q, supbooks, opts));\n\t\t\t\t} else {\n\t\t\t\t\tvar fnd = false;\n\t\t\t\t\tfor(e1=0;e1!=supbooks.arrayf.length; ++e1) {\n\t\t\t\t\t\t/* TODO: should be something like range_has */\n\t\t\t\t\t\te2 = supbooks.arrayf[e1];\n\t\t\t\t\t\tif(c.c < e2[0].s.c || c.c > e2[0].e.c) continue;\n\t\t\t\t\t\tif(c.r < e2[0].s.r || c.r > e2[0].e.r) continue;\n\t\t\t\t\t\tstack.push(stringify_formula(e2[1], _range, q, supbooks, opts));\n\t\t\t\t\t\tfnd = true;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tif(!fnd) stack.push(/*::String(*/f[1]/*::)*/);\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgArray': /* [MS-XLS] 2.5.198.32 TODO */\n\t\t\t\tstack.push(\"{\" + stringify_array(/*::(*/f[1]/*:: :any)*/) + \"}\");\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgMemArea': /* [MS-XLS] 2.5.198.70 TODO: confirm this is a non-display */\n\t\t\t\t//stack.push(\"(\" + f[2].map(encode_range).join(\",\") + \")\");\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgAttrSpace': /* [MS-XLS] 2.5.198.38 */\n\t\t\tcase 'PtgAttrSpaceSemi': /* [MS-XLS] 2.5.198.39 */\n\t\t\t\tlast_sp = ff;\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgTbl': /* [MS-XLS] 2.5.198.92 TODO */\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgMemErr': /* [MS-XLS] 2.5.198.71 */\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgMissArg': /* [MS-XLS] 2.5.198.74 */\n\t\t\t\tstack.push(\"\");\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgAreaErr': /* [MS-XLS] 2.5.198.29 */\n\t\t\t\tstack.push(\"#REF!\"); break;\n\n\t\t\tcase 'PtgAreaErr3d': /* [MS-XLS] 2.5.198.30 */\n\t\t\t\tstack.push(\"#REF!\"); break;\n\n\t\t\tcase 'PtgList': /* [MS-XLSB] 2.5.97.52 */\n\t\t\t\t// $FlowIgnore\n\t\t\t\tstack.push(\"Table\" + f[1].idx + \"[#\" + f[1].rt + \"]\");\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgMemAreaN':\n\t\t\tcase 'PtgMemNoMemN':\n\t\t\tcase 'PtgAttrNoop':\n\t\t\tcase 'PtgSheet':\n\t\t\tcase 'PtgEndSheet':\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgMemFunc': /* [MS-XLS] 2.5.198.72 TODO */\n\t\t\t\tbreak;\n\t\t\tcase 'PtgMemNoMem': /* [MS-XLS] 2.5.198.73 TODO */\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgElfCol': /* [MS-XLS] 2.5.198.46 */\n\t\t\tcase 'PtgElfColS': /* [MS-XLS] 2.5.198.47 */\n\t\t\tcase 'PtgElfColSV': /* [MS-XLS] 2.5.198.48 */\n\t\t\tcase 'PtgElfColV': /* [MS-XLS] 2.5.198.49 */\n\t\t\tcase 'PtgElfLel': /* [MS-XLS] 2.5.198.50 */\n\t\t\tcase 'PtgElfRadical': /* [MS-XLS] 2.5.198.51 */\n\t\t\tcase 'PtgElfRadicalLel': /* [MS-XLS] 2.5.198.52 */\n\t\t\tcase 'PtgElfRadicalS': /* [MS-XLS] 2.5.198.53 */\n\t\t\tcase 'PtgElfRw': /* [MS-XLS] 2.5.198.54 */\n\t\t\tcase 'PtgElfRwV': /* [MS-XLS] 2.5.198.55 */\n\t\t\t\tthrow new Error(\"Unsupported ELFs\");\n\n\t\t\tcase 'PtgSxName': /* [MS-XLS] 2.5.198.91 TODO -- find a test case */\n\t\t\t\tthrow new Error('Unrecognized Formula Token: ' + String(f));\n\t\t\tdefault: throw new Error('Unrecognized Formula Token: ' + String(f));\n\t\t}\n\t\tvar PtgNonDisp = ['PtgAttrSpace', 'PtgAttrSpaceSemi', 'PtgAttrGoto'];\n\t\tif(opts.biff != 3) if(last_sp >= 0 && PtgNonDisp.indexOf(formula[0][ff][0]) == -1) {\n\t\t\tf = formula[0][last_sp];\n\t\t\tvar _left = true;\n\t\t\tswitch(f[1][0]) {\n\t\t\t\t/* note: some bad XLSB files omit the PtgParen */\n\t\t\t\tcase 4: _left = false;\n\t\t\t\t/* falls through */\n\t\t\t\tcase 0:\n\t\t\t\t\t// $FlowIgnore\n\t\t\t\t\tsp = fill(\" \", f[1][1]); break;\n\t\t\t\tcase 5: _left = false;\n\t\t\t\t/* falls through */\n\t\t\t\tcase 1:\n\t\t\t\t\t// $FlowIgnore\n\t\t\t\t\tsp = fill(\"\\r\", f[1][1]); break;\n\t\t\t\tdefault:\n\t\t\t\t\tsp = \"\";\n\t\t\t\t\t// $FlowIgnore\n\t\t\t\t\tif(opts.WTF) throw new Error(\"Unexpected PtgAttrSpaceType \" + f[1][0]);\n\t\t\t}\n\t\t\tstack.push((_left ? sp : \"\") + stack.pop() + (_left ? \"\" : sp));\n\t\t\tlast_sp = -1;\n\t\t}\n\t}\n\tif(stack.length > 1 && opts.WTF) throw new Error(\"bad formula stack\");\n\treturn stack[0];\n}\n\n/* [MS-XLS] 2.5.198.1 TODO */\nfunction parse_ArrayParsedFormula(blob, length, opts/*::, ref*/) {\n\tvar target = blob.l + length, len = opts.biff == 2 ? 1 : 2;\n\tvar rgcb, cce = blob.read_shift(len); // length of rgce\n\tif(cce == 0xFFFF) return [[],parsenoop(blob, length-2)];\n\tvar rgce = parse_Rgce(blob, cce, opts);\n\tif(length !== cce + len) rgcb = parse_RgbExtra(blob, length - cce - len, rgce, opts);\n\tblob.l = target;\n\treturn [rgce, rgcb];\n}\n\n/* [MS-XLS] 2.5.198.3 TODO */\nfunction parse_XLSCellParsedFormula(blob, length, opts) {\n\tvar target = blob.l + length, len = opts.biff == 2 ? 1 : 2;\n\tvar rgcb, cce = blob.read_shift(len); // length of rgce\n\tif(cce == 0xFFFF) return [[],parsenoop(blob, length-2)];\n\tvar rgce = parse_Rgce(blob, cce, opts);\n\tif(length !== cce + len) rgcb = parse_RgbExtra(blob, length - cce - len, rgce, opts);\n\tblob.l = target;\n\treturn [rgce, rgcb];\n}\n\n/* [MS-XLS] 2.5.198.21 */\nfunction parse_NameParsedFormula(blob, length, opts, cce) {\n\tvar target = blob.l + length;\n\tvar rgce = parse_Rgce(blob, cce, opts);\n\tvar rgcb;\n\tif(target !== blob.l) rgcb = parse_RgbExtra(blob, target - blob.l, rgce, opts);\n\treturn [rgce, rgcb];\n}\n\n/* [MS-XLS] 2.5.198.118 TODO */\nfunction parse_SharedParsedFormula(blob, length, opts) {\n\tvar target = blob.l + length;\n\tvar rgcb, cce = blob.read_shift(2); // length of rgce\n\tvar rgce = parse_Rgce(blob, cce, opts);\n\tif(cce == 0xFFFF) return [[],parsenoop(blob, length-2)];\n\tif(length !== cce + 2) rgcb = parse_RgbExtra(blob, target - cce - 2, rgce, opts);\n\treturn [rgce, rgcb];\n}\n\n/* [MS-XLS] 2.5.133 TODO: how to emit empty strings? */\nfunction parse_FormulaValue(blob/*::, length*/) {\n\tvar b;\n\tif(__readUInt16LE(blob,blob.l + 6) !== 0xFFFF) return [parse_Xnum(blob),'n'];\n\tswitch(blob[blob.l]) {\n\t\tcase 0x00: blob.l += 8; return [\"String\", 's'];\n\t\tcase 0x01: b = blob[blob.l+2] === 0x1; blob.l += 8; return [b,'b'];\n\t\tcase 0x02: b = blob[blob.l+2]; blob.l += 8; return [b,'e'];\n\t\tcase 0x03: blob.l += 8; return [\"\",'s'];\n\t}\n\treturn [];\n}\nfunction write_FormulaValue(value) {\n\tif(value == null) {\n\t\t// Blank String Value\n\t\tvar o = new_buf(8);\n\t\to.write_shift(1, 0x03);\n\t\to.write_shift(1, 0);\n\t\to.write_shift(2, 0);\n\t\to.write_shift(2, 0);\n\t\to.write_shift(2, 0xFFFF);\n\t\treturn o;\n\t} else if(typeof value == \"number\") return write_Xnum(value);\n\treturn write_Xnum(0);\n}\n\n/* [MS-XLS] 2.4.127 TODO */\nfunction parse_Formula(blob, length, opts) {\n\tvar end = blob.l + length;\n\tvar cell = parse_XLSCell(blob, 6);\n\tif(opts.biff == 2) ++blob.l;\n\tvar val = parse_FormulaValue(blob,8);\n\tvar flags = blob.read_shift(1);\n\tif(opts.biff != 2) {\n\t\tblob.read_shift(1);\n\t\tif(opts.biff >= 5) {\n\t\t\t/*var chn = */blob.read_shift(4);\n\t\t}\n\t}\n\tvar cbf = parse_XLSCellParsedFormula(blob, end - blob.l, opts);\n\treturn {cell:cell, val:val[0], formula:cbf, shared: (flags >> 3) & 1, tt:val[1]};\n}\nfunction write_Formula(cell/*:Cell*/, R/*:number*/, C/*:number*/, opts, os/*:number*/) {\n\t// Cell\n\tvar o1 = write_XLSCell(R, C, os);\n\n\t// FormulaValue\n\tvar o2 = write_FormulaValue(cell.v);\n\n\t// flags + cache\n\tvar o3 = new_buf(6);\n\tvar flags = 0x01 | 0x20;\n\to3.write_shift(2, flags);\n\to3.write_shift(4, 0);\n\n\t// CellParsedFormula\n\tvar bf = new_buf(cell.bf.length);\n\tfor(var i = 0; i < cell.bf.length; ++i) bf[i] = cell.bf[i];\n\n\tvar out = bconcat([o1, o2, o3, bf]);\n\treturn out;\n}\n\n\n/* XLSB Parsed Formula records have the same shape */\nfunction parse_XLSBParsedFormula(data, length, opts) {\n\tvar cce = data.read_shift(4);\n\tvar rgce = parse_Rgce(data, cce, opts);\n\tvar cb = data.read_shift(4);\n\tvar rgcb = cb > 0 ? parse_RgbExtra(data, cb, rgce, opts) : null;\n\treturn [rgce, rgcb];\n}\n\n/* [MS-XLSB] 2.5.97.1 ArrayParsedFormula */\nvar parse_XLSBArrayParsedFormula = parse_XLSBParsedFormula;\n/* [MS-XLSB] 2.5.97.4 CellParsedFormula */\nvar parse_XLSBCellParsedFormula = parse_XLSBParsedFormula;\n/* [MS-XLSB] 2.5.97.8 DVParsedFormula */\n//var parse_XLSBDVParsedFormula = parse_XLSBParsedFormula;\n/* [MS-XLSB] 2.5.97.9 FRTParsedFormula */\n//var parse_XLSBFRTParsedFormula = parse_XLSBParsedFormula2;\n/* [MS-XLSB] 2.5.97.12 NameParsedFormula */\nvar parse_XLSBNameParsedFormula = parse_XLSBParsedFormula;\n/* [MS-XLSB] 2.5.97.98 SharedParsedFormula */\nvar parse_XLSBSharedParsedFormula = parse_XLSBParsedFormula;\nvar Cetab = {\n  0: \"BEEP\",\n  1: \"OPEN\",\n  2: \"OPEN.LINKS\",\n  3: \"CLOSE.ALL\",\n  4: \"SAVE\",\n  5: \"SAVE.AS\",\n  6: \"FILE.DELETE\",\n  7: \"PAGE.SETUP\",\n  8: \"PRINT\",\n  9: \"PRINTER.SETUP\",\n  10: \"QUIT\",\n  11: \"NEW.WINDOW\",\n  12: \"ARRANGE.ALL\",\n  13: \"WINDOW.SIZE\",\n  14: \"WINDOW.MOVE\",\n  15: \"FULL\",\n  16: \"CLOSE\",\n  17: \"RUN\",\n  22: \"SET.PRINT.AREA\",\n  23: \"SET.PRINT.TITLES\",\n  24: \"SET.PAGE.BREAK\",\n  25: \"REMOVE.PAGE.BREAK\",\n  26: \"FONT\",\n  27: \"DISPLAY\",\n  28: \"PROTECT.DOCUMENT\",\n  29: \"PRECISION\",\n  30: \"A1.R1C1\",\n  31: \"CALCULATE.NOW\",\n  32: \"CALCULATION\",\n  34: \"DATA.FIND\",\n  35: \"EXTRACT\",\n  36: \"DATA.DELETE\",\n  37: \"SET.DATABASE\",\n  38: \"SET.CRITERIA\",\n  39: \"SORT\",\n  40: \"DATA.SERIES\",\n  41: \"TABLE\",\n  42: \"FORMAT.NUMBER\",\n  43: \"ALIGNMENT\",\n  44: \"STYLE\",\n  45: \"BORDER\",\n  46: \"CELL.PROTECTION\",\n  47: \"COLUMN.WIDTH\",\n  48: \"UNDO\",\n  49: \"CUT\",\n  50: \"COPY\",\n  51: \"PASTE\",\n  52: \"CLEAR\",\n  53: \"PASTE.SPECIAL\",\n  54: \"EDIT.DELETE\",\n  55: \"INSERT\",\n  56: \"FILL.RIGHT\",\n  57: \"FILL.DOWN\",\n  61: \"DEFINE.NAME\",\n  62: \"CREATE.NAMES\",\n  63: \"FORMULA.GOTO\",\n  64: \"FORMULA.FIND\",\n  65: \"SELECT.LAST.CELL\",\n  66: \"SHOW.ACTIVE.CELL\",\n  67: \"GALLERY.AREA\",\n  68: \"GALLERY.BAR\",\n  69: \"GALLERY.COLUMN\",\n  70: \"GALLERY.LINE\",\n  71: \"GALLERY.PIE\",\n  72: \"GALLERY.SCATTER\",\n  73: \"COMBINATION\",\n  74: \"PREFERRED\",\n  75: \"ADD.OVERLAY\",\n  76: \"GRIDLINES\",\n  77: \"SET.PREFERRED\",\n  78: \"AXES\",\n  79: \"LEGEND\",\n  80: \"ATTACH.TEXT\",\n  81: \"ADD.ARROW\",\n  82: \"SELECT.CHART\",\n  83: \"SELECT.PLOT.AREA\",\n  84: \"PATTERNS\",\n  85: \"MAIN.CHART\",\n  86: \"OVERLAY\",\n  87: \"SCALE\",\n  88: \"FORMAT.LEGEND\",\n  89: \"FORMAT.TEXT\",\n  90: \"EDIT.REPEAT\",\n  91: \"PARSE\",\n  92: \"JUSTIFY\",\n  93: \"HIDE\",\n  94: \"UNHIDE\",\n  95: \"WORKSPACE\",\n  96: \"FORMULA\",\n  97: \"FORMULA.FILL\",\n  98: \"FORMULA.ARRAY\",\n  99: \"DATA.FIND.NEXT\",\n  100: \"DATA.FIND.PREV\",\n  101: \"FORMULA.FIND.NEXT\",\n  102: \"FORMULA.FIND.PREV\",\n  103: \"ACTIVATE\",\n  104: \"ACTIVATE.NEXT\",\n  105: \"ACTIVATE.PREV\",\n  106: \"UNLOCKED.NEXT\",\n  107: \"UNLOCKED.PREV\",\n  108: \"COPY.PICTURE\",\n  109: \"SELECT\",\n  110: \"DELETE.NAME\",\n  111: \"DELETE.FORMAT\",\n  112: \"VLINE\",\n  113: \"HLINE\",\n  114: \"VPAGE\",\n  115: \"HPAGE\",\n  116: \"VSCROLL\",\n  117: \"HSCROLL\",\n  118: \"ALERT\",\n  119: \"NEW\",\n  120: \"CANCEL.COPY\",\n  121: \"SHOW.CLIPBOARD\",\n  122: \"MESSAGE\",\n  124: \"PASTE.LINK\",\n  125: \"APP.ACTIVATE\",\n  126: \"DELETE.ARROW\",\n  127: \"ROW.HEIGHT\",\n  128: \"FORMAT.MOVE\",\n  129: \"FORMAT.SIZE\",\n  130: \"FORMULA.REPLACE\",\n  131: \"SEND.KEYS\",\n  132: \"SELECT.SPECIAL\",\n  133: \"APPLY.NAMES\",\n  134: \"REPLACE.FONT\",\n  135: \"FREEZE.PANES\",\n  136: \"SHOW.INFO\",\n  137: \"SPLIT\",\n  138: \"ON.WINDOW\",\n  139: \"ON.DATA\",\n  140: \"DISABLE.INPUT\",\n  142: \"OUTLINE\",\n  143: \"LIST.NAMES\",\n  144: \"FILE.CLOSE\",\n  145: \"SAVE.WORKBOOK\",\n  146: \"DATA.FORM\",\n  147: \"COPY.CHART\",\n  148: \"ON.TIME\",\n  149: \"WAIT\",\n  150: \"FORMAT.FONT\",\n  151: \"FILL.UP\",\n  152: \"FILL.LEFT\",\n  153: \"DELETE.OVERLAY\",\n  155: \"SHORT.MENUS\",\n  159: \"SET.UPDATE.STATUS\",\n  161: \"COLOR.PALETTE\",\n  162: \"DELETE.STYLE\",\n  163: \"WINDOW.RESTORE\",\n  164: \"WINDOW.MAXIMIZE\",\n  166: \"CHANGE.LINK\",\n  167: \"CALCULATE.DOCUMENT\",\n  168: \"ON.KEY\",\n  169: \"APP.RESTORE\",\n  170: \"APP.MOVE\",\n  171: \"APP.SIZE\",\n  172: \"APP.MINIMIZE\",\n  173: \"APP.MAXIMIZE\",\n  174: \"BRING.TO.FRONT\",\n  175: \"SEND.TO.BACK\",\n  185: \"MAIN.CHART.TYPE\",\n  186: \"OVERLAY.CHART.TYPE\",\n  187: \"SELECT.END\",\n  188: \"OPEN.MAIL\",\n  189: \"SEND.MAIL\",\n  190: \"STANDARD.FONT\",\n  191: \"CONSOLIDATE\",\n  192: \"SORT.SPECIAL\",\n  193: \"GALLERY.3D.AREA\",\n  194: \"GALLERY.3D.COLUMN\",\n  195: \"GALLERY.3D.LINE\",\n  196: \"GALLERY.3D.PIE\",\n  197: \"VIEW.3D\",\n  198: \"GOAL.SEEK\",\n  199: \"WORKGROUP\",\n  200: \"FILL.GROUP\",\n  201: \"UPDATE.LINK\",\n  202: \"PROMOTE\",\n  203: \"DEMOTE\",\n  204: \"SHOW.DETAIL\",\n  206: \"UNGROUP\",\n  207: \"OBJECT.PROPERTIES\",\n  208: \"SAVE.NEW.OBJECT\",\n  209: \"SHARE\",\n  210: \"SHARE.NAME\",\n  211: \"DUPLICATE\",\n  212: \"APPLY.STYLE\",\n  213: \"ASSIGN.TO.OBJECT\",\n  214: \"OBJECT.PROTECTION\",\n  215: \"HIDE.OBJECT\",\n  216: \"SET.EXTRACT\",\n  217: \"CREATE.PUBLISHER\",\n  218: \"SUBSCRIBE.TO\",\n  219: \"ATTRIBUTES\",\n  220: \"SHOW.TOOLBAR\",\n  222: \"PRINT.PREVIEW\",\n  223: \"EDIT.COLOR\",\n  224: \"SHOW.LEVELS\",\n  225: \"FORMAT.MAIN\",\n  226: \"FORMAT.OVERLAY\",\n  227: \"ON.RECALC\",\n  228: \"EDIT.SERIES\",\n  229: \"DEFINE.STYLE\",\n  240: \"LINE.PRINT\",\n  243: \"ENTER.DATA\",\n  249: \"GALLERY.RADAR\",\n  250: \"MERGE.STYLES\",\n  251: \"EDITION.OPTIONS\",\n  252: \"PASTE.PICTURE\",\n  253: \"PASTE.PICTURE.LINK\",\n  254: \"SPELLING\",\n  256: \"ZOOM\",\n  259: \"INSERT.OBJECT\",\n  260: \"WINDOW.MINIMIZE\",\n  265: \"SOUND.NOTE\",\n  266: \"SOUND.PLAY\",\n  267: \"FORMAT.SHAPE\",\n  268: \"EXTEND.POLYGON\",\n  269: \"FORMAT.AUTO\",\n  272: \"GALLERY.3D.BAR\",\n  273: \"GALLERY.3D.SURFACE\",\n  274: \"FILL.AUTO\",\n  276: \"CUSTOMIZE.TOOLBAR\",\n  277: \"ADD.TOOL\",\n  278: \"EDIT.OBJECT\",\n  279: \"ON.DOUBLECLICK\",\n  280: \"ON.ENTRY\",\n  281: \"WORKBOOK.ADD\",\n  282: \"WORKBOOK.MOVE\",\n  283: \"WORKBOOK.COPY\",\n  284: \"WORKBOOK.OPTIONS\",\n  285: \"SAVE.WORKSPACE\",\n  288: \"CHART.WIZARD\",\n  289: \"DELETE.TOOL\",\n  290: \"MOVE.TOOL\",\n  291: \"WORKBOOK.SELECT\",\n  292: \"WORKBOOK.ACTIVATE\",\n  293: \"ASSIGN.TO.TOOL\",\n  295: \"COPY.TOOL\",\n  296: \"RESET.TOOL\",\n  297: \"CONSTRAIN.NUMERIC\",\n  298: \"PASTE.TOOL\",\n  302: \"WORKBOOK.NEW\",\n  305: \"SCENARIO.CELLS\",\n  306: \"SCENARIO.DELETE\",\n  307: \"SCENARIO.ADD\",\n  308: \"SCENARIO.EDIT\",\n  309: \"SCENARIO.SHOW\",\n  310: \"SCENARIO.SHOW.NEXT\",\n  311: \"SCENARIO.SUMMARY\",\n  312: \"PIVOT.TABLE.WIZARD\",\n  313: \"PIVOT.FIELD.PROPERTIES\",\n  314: \"PIVOT.FIELD\",\n  315: \"PIVOT.ITEM\",\n  316: \"PIVOT.ADD.FIELDS\",\n  318: \"OPTIONS.CALCULATION\",\n  319: \"OPTIONS.EDIT\",\n  320: \"OPTIONS.VIEW\",\n  321: \"ADDIN.MANAGER\",\n  322: \"MENU.EDITOR\",\n  323: \"ATTACH.TOOLBARS\",\n  324: \"VBAActivate\",\n  325: \"OPTIONS.CHART\",\n  328: \"VBA.INSERT.FILE\",\n  330: \"VBA.PROCEDURE.DEFINITION\",\n  336: \"ROUTING.SLIP\",\n  338: \"ROUTE.DOCUMENT\",\n  339: \"MAIL.LOGON\",\n  342: \"INSERT.PICTURE\",\n  343: \"EDIT.TOOL\",\n  344: \"GALLERY.DOUGHNUT\",\n  350: \"CHART.TREND\",\n  352: \"PIVOT.ITEM.PROPERTIES\",\n  354: \"WORKBOOK.INSERT\",\n  355: \"OPTIONS.TRANSITION\",\n  356: \"OPTIONS.GENERAL\",\n  370: \"FILTER.ADVANCED\",\n  373: \"MAIL.ADD.MAILER\",\n  374: \"MAIL.DELETE.MAILER\",\n  375: \"MAIL.REPLY\",\n  376: \"MAIL.REPLY.ALL\",\n  377: \"MAIL.FORWARD\",\n  378: \"MAIL.NEXT.LETTER\",\n  379: \"DATA.LABEL\",\n  380: \"INSERT.TITLE\",\n  381: \"FONT.PROPERTIES\",\n  382: \"MACRO.OPTIONS\",\n  383: \"WORKBOOK.HIDE\",\n  384: \"WORKBOOK.UNHIDE\",\n  385: \"WORKBOOK.DELETE\",\n  386: \"WORKBOOK.NAME\",\n  388: \"GALLERY.CUSTOM\",\n  390: \"ADD.CHART.AUTOFORMAT\",\n  391: \"DELETE.CHART.AUTOFORMAT\",\n  392: \"CHART.ADD.DATA\",\n  393: \"AUTO.OUTLINE\",\n  394: \"TAB.ORDER\",\n  395: \"SHOW.DIALOG\",\n  396: \"SELECT.ALL\",\n  397: \"UNGROUP.SHEETS\",\n  398: \"SUBTOTAL.CREATE\",\n  399: \"SUBTOTAL.REMOVE\",\n  400: \"RENAME.OBJECT\",\n  412: \"WORKBOOK.SCROLL\",\n  413: \"WORKBOOK.NEXT\",\n  414: \"WORKBOOK.PREV\",\n  415: \"WORKBOOK.TAB.SPLIT\",\n  416: \"FULL.SCREEN\",\n  417: \"WORKBOOK.PROTECT\",\n  420: \"SCROLLBAR.PROPERTIES\",\n  421: \"PIVOT.SHOW.PAGES\",\n  422: \"TEXT.TO.COLUMNS\",\n  423: \"FORMAT.CHARTTYPE\",\n  424: \"LINK.FORMAT\",\n  425: \"TRACER.DISPLAY\",\n  430: \"TRACER.NAVIGATE\",\n  431: \"TRACER.CLEAR\",\n  432: \"TRACER.ERROR\",\n  433: \"PIVOT.FIELD.GROUP\",\n  434: \"PIVOT.FIELD.UNGROUP\",\n  435: \"CHECKBOX.PROPERTIES\",\n  436: \"LABEL.PROPERTIES\",\n  437: \"LISTBOX.PROPERTIES\",\n  438: \"EDITBOX.PROPERTIES\",\n  439: \"PIVOT.REFRESH\",\n  440: \"LINK.COMBO\",\n  441: \"OPEN.TEXT\",\n  442: \"HIDE.DIALOG\",\n  443: \"SET.DIALOG.FOCUS\",\n  444: \"ENABLE.OBJECT\",\n  445: \"PUSHBUTTON.PROPERTIES\",\n  446: \"SET.DIALOG.DEFAULT\",\n  447: \"FILTER\",\n  448: \"FILTER.SHOW.ALL\",\n  449: \"CLEAR.OUTLINE\",\n  450: \"FUNCTION.WIZARD\",\n  451: \"ADD.LIST.ITEM\",\n  452: \"SET.LIST.ITEM\",\n  453: \"REMOVE.LIST.ITEM\",\n  454: \"SELECT.LIST.ITEM\",\n  455: \"SET.CONTROL.VALUE\",\n  456: \"SAVE.COPY.AS\",\n  458: \"OPTIONS.LISTS.ADD\",\n  459: \"OPTIONS.LISTS.DELETE\",\n  460: \"SERIES.AXES\",\n  461: \"SERIES.X\",\n  462: \"SERIES.Y\",\n  463: \"ERRORBAR.X\",\n  464: \"ERRORBAR.Y\",\n  465: \"FORMAT.CHART\",\n  466: \"SERIES.ORDER\",\n  467: \"MAIL.LOGOFF\",\n  468: \"CLEAR.ROUTING.SLIP\",\n  469: \"APP.ACTIVATE.MICROSOFT\",\n  470: \"MAIL.EDIT.MAILER\",\n  471: \"ON.SHEET\",\n  472: \"STANDARD.WIDTH\",\n  473: \"SCENARIO.MERGE\",\n  474: \"SUMMARY.INFO\",\n  475: \"FIND.FILE\",\n  476: \"ACTIVE.CELL.FONT\",\n  477: \"ENABLE.TIPWIZARD\",\n  478: \"VBA.MAKE.ADDIN\",\n  480: \"INSERTDATATABLE\",\n  481: \"WORKGROUP.OPTIONS\",\n  482: \"MAIL.SEND.MAILER\",\n  485: \"AUTOCORRECT\",\n  489: \"POST.DOCUMENT\",\n  491: \"PICKLIST\",\n  493: \"VIEW.SHOW\",\n  494: \"VIEW.DEFINE\",\n  495: \"VIEW.DELETE\",\n  509: \"SHEET.BACKGROUND\",\n  510: \"INSERT.MAP.OBJECT\",\n  511: \"OPTIONS.MENONO\",\n  517: \"MSOCHECKS\",\n  518: \"NORMAL\",\n  519: \"LAYOUT\",\n  520: \"RM.PRINT.AREA\",\n  521: \"CLEAR.PRINT.AREA\",\n  522: \"ADD.PRINT.AREA\",\n  523: \"MOVE.BRK\",\n  545: \"HIDECURR.NOTE\",\n  546: \"HIDEALL.NOTES\",\n  547: \"DELETE.NOTE\",\n  548: \"TRAVERSE.NOTES\",\n  549: \"ACTIVATE.NOTES\",\n  620: \"PROTECT.REVISIONS\",\n  621: \"UNPROTECT.REVISIONS\",\n  647: \"OPTIONS.ME\",\n  653: \"WEB.PUBLISH\",\n  667: \"NEWWEBQUERY\",\n  673: \"PIVOT.TABLE.CHART\",\n  753: \"OPTIONS.SAVE\",\n  755: \"OPTIONS.SPELL\",\n  808: \"HIDEALL.INKANNOTS\"\n};\nvar Ftab = {\n  0: \"COUNT\",\n  1: \"IF\",\n  2: \"ISNA\",\n  3: \"ISERROR\",\n  4: \"SUM\",\n  5: \"AVERAGE\",\n  6: \"MIN\",\n  7: \"MAX\",\n  8: \"ROW\",\n  9: \"COLUMN\",\n  10: \"NA\",\n  11: \"NPV\",\n  12: \"STDEV\",\n  13: \"DOLLAR\",\n  14: \"FIXED\",\n  15: \"SIN\",\n  16: \"COS\",\n  17: \"TAN\",\n  18: \"ATAN\",\n  19: \"PI\",\n  20: \"SQRT\",\n  21: \"EXP\",\n  22: \"LN\",\n  23: \"LOG10\",\n  24: \"ABS\",\n  25: \"INT\",\n  26: \"SIGN\",\n  27: \"ROUND\",\n  28: \"LOOKUP\",\n  29: \"INDEX\",\n  30: \"REPT\",\n  31: \"MID\",\n  32: \"LEN\",\n  33: \"VALUE\",\n  34: \"TRUE\",\n  35: \"FALSE\",\n  36: \"AND\",\n  37: \"OR\",\n  38: \"NOT\",\n  39: \"MOD\",\n  40: \"DCOUNT\",\n  41: \"DSUM\",\n  42: \"DAVERAGE\",\n  43: \"DMIN\",\n  44: \"DMAX\",\n  45: \"DSTDEV\",\n  46: \"VAR\",\n  47: \"DVAR\",\n  48: \"TEXT\",\n  49: \"LINEST\",\n  50: \"TREND\",\n  51: \"LOGEST\",\n  52: \"GROWTH\",\n  53: \"GOTO\",\n  54: \"HALT\",\n  55: \"RETURN\",\n  56: \"PV\",\n  57: \"FV\",\n  58: \"NPER\",\n  59: \"PMT\",\n  60: \"RATE\",\n  61: \"MIRR\",\n  62: \"IRR\",\n  63: \"RAND\",\n  64: \"MATCH\",\n  65: \"DATE\",\n  66: \"TIME\",\n  67: \"DAY\",\n  68: \"MONTH\",\n  69: \"YEAR\",\n  70: \"WEEKDAY\",\n  71: \"HOUR\",\n  72: \"MINUTE\",\n  73: \"SECOND\",\n  74: \"NOW\",\n  75: \"AREAS\",\n  76: \"ROWS\",\n  77: \"COLUMNS\",\n  78: \"OFFSET\",\n  79: \"ABSREF\",\n  80: \"RELREF\",\n  81: \"ARGUMENT\",\n  82: \"SEARCH\",\n  83: \"TRANSPOSE\",\n  84: \"ERROR\",\n  85: \"STEP\",\n  86: \"TYPE\",\n  87: \"ECHO\",\n  88: \"SET.NAME\",\n  89: \"CALLER\",\n  90: \"DEREF\",\n  91: \"WINDOWS\",\n  92: \"SERIES\",\n  93: \"DOCUMENTS\",\n  94: \"ACTIVE.CELL\",\n  95: \"SELECTION\",\n  96: \"RESULT\",\n  97: \"ATAN2\",\n  98: \"ASIN\",\n  99: \"ACOS\",\n  100: \"CHOOSE\",\n  101: \"HLOOKUP\",\n  102: \"VLOOKUP\",\n  103: \"LINKS\",\n  104: \"INPUT\",\n  105: \"ISREF\",\n  106: \"GET.FORMULA\",\n  107: \"GET.NAME\",\n  108: \"SET.VALUE\",\n  109: \"LOG\",\n  110: \"EXEC\",\n  111: \"CHAR\",\n  112: \"LOWER\",\n  113: \"UPPER\",\n  114: \"PROPER\",\n  115: \"LEFT\",\n  116: \"RIGHT\",\n  117: \"EXACT\",\n  118: \"TRIM\",\n  119: \"REPLACE\",\n  120: \"SUBSTITUTE\",\n  121: \"CODE\",\n  122: \"NAMES\",\n  123: \"DIRECTORY\",\n  124: \"FIND\",\n  125: \"CELL\",\n  126: \"ISERR\",\n  127: \"ISTEXT\",\n  128: \"ISNUMBER\",\n  129: \"ISBLANK\",\n  130: \"T\",\n  131: \"N\",\n  132: \"FOPEN\",\n  133: \"FCLOSE\",\n  134: \"FSIZE\",\n  135: \"FREADLN\",\n  136: \"FREAD\",\n  137: \"FWRITELN\",\n  138: \"FWRITE\",\n  139: \"FPOS\",\n  140: \"DATEVALUE\",\n  141: \"TIMEVALUE\",\n  142: \"SLN\",\n  143: \"SYD\",\n  144: \"DDB\",\n  145: \"GET.DEF\",\n  146: \"REFTEXT\",\n  147: \"TEXTREF\",\n  148: \"INDIRECT\",\n  149: \"REGISTER\",\n  150: \"CALL\",\n  151: \"ADD.BAR\",\n  152: \"ADD.MENU\",\n  153: \"ADD.COMMAND\",\n  154: \"ENABLE.COMMAND\",\n  155: \"CHECK.COMMAND\",\n  156: \"RENAME.COMMAND\",\n  157: \"SHOW.BAR\",\n  158: \"DELETE.MENU\",\n  159: \"DELETE.COMMAND\",\n  160: \"GET.CHART.ITEM\",\n  161: \"DIALOG.BOX\",\n  162: \"CLEAN\",\n  163: \"MDETERM\",\n  164: \"MINVERSE\",\n  165: \"MMULT\",\n  166: \"FILES\",\n  167: \"IPMT\",\n  168: \"PPMT\",\n  169: \"COUNTA\",\n  170: \"CANCEL.KEY\",\n  171: \"FOR\",\n  172: \"WHILE\",\n  173: \"BREAK\",\n  174: \"NEXT\",\n  175: \"INITIATE\",\n  176: \"REQUEST\",\n  177: \"POKE\",\n  178: \"EXECUTE\",\n  179: \"TERMINATE\",\n  180: \"RESTART\",\n  181: \"HELP\",\n  182: \"GET.BAR\",\n  183: \"PRODUCT\",\n  184: \"FACT\",\n  185: \"GET.CELL\",\n  186: \"GET.WORKSPACE\",\n  187: \"GET.WINDOW\",\n  188: \"GET.DOCUMENT\",\n  189: \"DPRODUCT\",\n  190: \"ISNONTEXT\",\n  191: \"GET.NOTE\",\n  192: \"NOTE\",\n  193: \"STDEVP\",\n  194: \"VARP\",\n  195: \"DSTDEVP\",\n  196: \"DVARP\",\n  197: \"TRUNC\",\n  198: \"ISLOGICAL\",\n  199: \"DCOUNTA\",\n  200: \"DELETE.BAR\",\n  201: \"UNREGISTER\",\n  204: \"USDOLLAR\",\n  205: \"FINDB\",\n  206: \"SEARCHB\",\n  207: \"REPLACEB\",\n  208: \"LEFTB\",\n  209: \"RIGHTB\",\n  210: \"MIDB\",\n  211: \"LENB\",\n  212: \"ROUNDUP\",\n  213: \"ROUNDDOWN\",\n  214: \"ASC\",\n  215: \"DBCS\",\n  216: \"RANK\",\n  219: \"ADDRESS\",\n  220: \"DAYS360\",\n  221: \"TODAY\",\n  222: \"VDB\",\n  223: \"ELSE\",\n  224: \"ELSE.IF\",\n  225: \"END.IF\",\n  226: \"FOR.CELL\",\n  227: \"MEDIAN\",\n  228: \"SUMPRODUCT\",\n  229: \"SINH\",\n  230: \"COSH\",\n  231: \"TANH\",\n  232: \"ASINH\",\n  233: \"ACOSH\",\n  234: \"ATANH\",\n  235: \"DGET\",\n  236: \"CREATE.OBJECT\",\n  237: \"VOLATILE\",\n  238: \"LAST.ERROR\",\n  239: \"CUSTOM.UNDO\",\n  240: \"CUSTOM.REPEAT\",\n  241: \"FORMULA.CONVERT\",\n  242: \"GET.LINK.INFO\",\n  243: \"TEXT.BOX\",\n  244: \"INFO\",\n  245: \"GROUP\",\n  246: \"GET.OBJECT\",\n  247: \"DB\",\n  248: \"PAUSE\",\n  251: \"RESUME\",\n  252: \"FREQUENCY\",\n  253: \"ADD.TOOLBAR\",\n  254: \"DELETE.TOOLBAR\",\n  255: \"User\",\n  256: \"RESET.TOOLBAR\",\n  257: \"EVALUATE\",\n  258: \"GET.TOOLBAR\",\n  259: \"GET.TOOL\",\n  260: \"SPELLING.CHECK\",\n  261: \"ERROR.TYPE\",\n  262: \"APP.TITLE\",\n  263: \"WINDOW.TITLE\",\n  264: \"SAVE.TOOLBAR\",\n  265: \"ENABLE.TOOL\",\n  266: \"PRESS.TOOL\",\n  267: \"REGISTER.ID\",\n  268: \"GET.WORKBOOK\",\n  269: \"AVEDEV\",\n  270: \"BETADIST\",\n  271: \"GAMMALN\",\n  272: \"BETAINV\",\n  273: \"BINOMDIST\",\n  274: \"CHIDIST\",\n  275: \"CHIINV\",\n  276: \"COMBIN\",\n  277: \"CONFIDENCE\",\n  278: \"CRITBINOM\",\n  279: \"EVEN\",\n  280: \"EXPONDIST\",\n  281: \"FDIST\",\n  282: \"FINV\",\n  283: \"FISHER\",\n  284: \"FISHERINV\",\n  285: \"FLOOR\",\n  286: \"GAMMADIST\",\n  287: \"GAMMAINV\",\n  288: \"CEILING\",\n  289: \"HYPGEOMDIST\",\n  290: \"LOGNORMDIST\",\n  291: \"LOGINV\",\n  292: \"NEGBINOMDIST\",\n  293: \"NORMDIST\",\n  294: \"NORMSDIST\",\n  295: \"NORMINV\",\n  296: \"NORMSINV\",\n  297: \"STANDARDIZE\",\n  298: \"ODD\",\n  299: \"PERMUT\",\n  300: \"POISSON\",\n  301: \"TDIST\",\n  302: \"WEIBULL\",\n  303: \"SUMXMY2\",\n  304: \"SUMX2MY2\",\n  305: \"SUMX2PY2\",\n  306: \"CHITEST\",\n  307: \"CORREL\",\n  308: \"COVAR\",\n  309: \"FORECAST\",\n  310: \"FTEST\",\n  311: \"INTERCEPT\",\n  312: \"PEARSON\",\n  313: \"RSQ\",\n  314: \"STEYX\",\n  315: \"SLOPE\",\n  316: \"TTEST\",\n  317: \"PROB\",\n  318: \"DEVSQ\",\n  319: \"GEOMEAN\",\n  320: \"HARMEAN\",\n  321: \"SUMSQ\",\n  322: \"KURT\",\n  323: \"SKEW\",\n  324: \"ZTEST\",\n  325: \"LARGE\",\n  326: \"SMALL\",\n  327: \"QUARTILE\",\n  328: \"PERCENTILE\",\n  329: \"PERCENTRANK\",\n  330: \"MODE\",\n  331: \"TRIMMEAN\",\n  332: \"TINV\",\n  334: \"MOVIE.COMMAND\",\n  335: \"GET.MOVIE\",\n  336: \"CONCATENATE\",\n  337: \"POWER\",\n  338: \"PIVOT.ADD.DATA\",\n  339: \"GET.PIVOT.TABLE\",\n  340: \"GET.PIVOT.FIELD\",\n  341: \"GET.PIVOT.ITEM\",\n  342: \"RADIANS\",\n  343: \"DEGREES\",\n  344: \"SUBTOTAL\",\n  345: \"SUMIF\",\n  346: \"COUNTIF\",\n  347: \"COUNTBLANK\",\n  348: \"SCENARIO.GET\",\n  349: \"OPTIONS.LISTS.GET\",\n  350: \"ISPMT\",\n  351: \"DATEDIF\",\n  352: \"DATESTRING\",\n  353: \"NUMBERSTRING\",\n  354: \"ROMAN\",\n  355: \"OPEN.DIALOG\",\n  356: \"SAVE.DIALOG\",\n  357: \"VIEW.GET\",\n  358: \"GETPIVOTDATA\",\n  359: \"HYPERLINK\",\n  360: \"PHONETIC\",\n  361: \"AVERAGEA\",\n  362: \"MAXA\",\n  363: \"MINA\",\n  364: \"STDEVPA\",\n  365: \"VARPA\",\n  366: \"STDEVA\",\n  367: \"VARA\",\n  368: \"BAHTTEXT\",\n  369: \"THAIDAYOFWEEK\",\n  370: \"THAIDIGIT\",\n  371: \"THAIMONTHOFYEAR\",\n  372: \"THAINUMSOUND\",\n  373: \"THAINUMSTRING\",\n  374: \"THAISTRINGLENGTH\",\n  375: \"ISTHAIDIGIT\",\n  376: \"ROUNDBAHTDOWN\",\n  377: \"ROUNDBAHTUP\",\n  378: \"THAIYEAR\",\n  379: \"RTD\",\n  380: \"CUBEVALUE\",\n  381: \"CUBEMEMBER\",\n  382: \"CUBEMEMBERPROPERTY\",\n  383: \"CUBERANKEDMEMBER\",\n  384: \"HEX2BIN\",\n  385: \"HEX2DEC\",\n  386: \"HEX2OCT\",\n  387: \"DEC2BIN\",\n  388: \"DEC2HEX\",\n  389: \"DEC2OCT\",\n  390: \"OCT2BIN\",\n  391: \"OCT2HEX\",\n  392: \"OCT2DEC\",\n  393: \"BIN2DEC\",\n  394: \"BIN2OCT\",\n  395: \"BIN2HEX\",\n  396: \"IMSUB\",\n  397: \"IMDIV\",\n  398: \"IMPOWER\",\n  399: \"IMABS\",\n  400: \"IMSQRT\",\n  401: \"IMLN\",\n  402: \"IMLOG2\",\n  403: \"IMLOG10\",\n  404: \"IMSIN\",\n  405: \"IMCOS\",\n  406: \"IMEXP\",\n  407: \"IMARGUMENT\",\n  408: \"IMCONJUGATE\",\n  409: \"IMAGINARY\",\n  410: \"IMREAL\",\n  411: \"COMPLEX\",\n  412: \"IMSUM\",\n  413: \"IMPRODUCT\",\n  414: \"SERIESSUM\",\n  415: \"FACTDOUBLE\",\n  416: \"SQRTPI\",\n  417: \"QUOTIENT\",\n  418: \"DELTA\",\n  419: \"GESTEP\",\n  420: \"ISEVEN\",\n  421: \"ISODD\",\n  422: \"MROUND\",\n  423: \"ERF\",\n  424: \"ERFC\",\n  425: \"BESSELJ\",\n  426: \"BESSELK\",\n  427: \"BESSELY\",\n  428: \"BESSELI\",\n  429: \"XIRR\",\n  430: \"XNPV\",\n  431: \"PRICEMAT\",\n  432: \"YIELDMAT\",\n  433: \"INTRATE\",\n  434: \"RECEIVED\",\n  435: \"DISC\",\n  436: \"PRICEDISC\",\n  437: \"YIELDDISC\",\n  438: \"TBILLEQ\",\n  439: \"TBILLPRICE\",\n  440: \"TBILLYIELD\",\n  441: \"PRICE\",\n  442: \"YIELD\",\n  443: \"DOLLARDE\",\n  444: \"DOLLARFR\",\n  445: \"NOMINAL\",\n  446: \"EFFECT\",\n  447: \"CUMPRINC\",\n  448: \"CUMIPMT\",\n  449: \"EDATE\",\n  450: \"EOMONTH\",\n  451: \"YEARFRAC\",\n  452: \"COUPDAYBS\",\n  453: \"COUPDAYS\",\n  454: \"COUPDAYSNC\",\n  455: \"COUPNCD\",\n  456: \"COUPNUM\",\n  457: \"COUPPCD\",\n  458: \"DURATION\",\n  459: \"MDURATION\",\n  460: \"ODDLPRICE\",\n  461: \"ODDLYIELD\",\n  462: \"ODDFPRICE\",\n  463: \"ODDFYIELD\",\n  464: \"RANDBETWEEN\",\n  465: \"WEEKNUM\",\n  466: \"AMORDEGRC\",\n  467: \"AMORLINC\",\n  468: \"CONVERT\",\n  724: \"SHEETJS\",\n  469: \"ACCRINT\",\n  470: \"ACCRINTM\",\n  471: \"WORKDAY\",\n  472: \"NETWORKDAYS\",\n  473: \"GCD\",\n  474: \"MULTINOMIAL\",\n  475: \"LCM\",\n  476: \"FVSCHEDULE\",\n  477: \"CUBEKPIMEMBER\",\n  478: \"CUBESET\",\n  479: \"CUBESETCOUNT\",\n  480: \"IFERROR\",\n  481: \"COUNTIFS\",\n  482: \"SUMIFS\",\n  483: \"AVERAGEIF\",\n  484: \"AVERAGEIFS\"\n};\nvar FtabArgc = {\n  2: 1,\n  3: 1,\n  10: 0,\n  15: 1,\n  16: 1,\n  17: 1,\n  18: 1,\n  19: 0,\n  20: 1,\n  21: 1,\n  22: 1,\n  23: 1,\n  24: 1,\n  25: 1,\n  26: 1,\n  27: 2,\n  30: 2,\n  31: 3,\n  32: 1,\n  33: 1,\n  34: 0,\n  35: 0,\n  38: 1,\n  39: 2,\n  40: 3,\n  41: 3,\n  42: 3,\n  43: 3,\n  44: 3,\n  45: 3,\n  47: 3,\n  48: 2,\n  53: 1,\n  61: 3,\n  63: 0,\n  65: 3,\n  66: 3,\n  67: 1,\n  68: 1,\n  69: 1,\n  70: 1,\n  71: 1,\n  72: 1,\n  73: 1,\n  74: 0,\n  75: 1,\n  76: 1,\n  77: 1,\n  79: 2,\n  80: 2,\n  83: 1,\n  85: 0,\n  86: 1,\n  89: 0,\n  90: 1,\n  94: 0,\n  95: 0,\n  97: 2,\n  98: 1,\n  99: 1,\n  101: 3,\n  102: 3,\n  105: 1,\n  106: 1,\n  108: 2,\n  111: 1,\n  112: 1,\n  113: 1,\n  114: 1,\n  117: 2,\n  118: 1,\n  119: 4,\n  121: 1,\n  126: 1,\n  127: 1,\n  128: 1,\n  129: 1,\n  130: 1,\n  131: 1,\n  133: 1,\n  134: 1,\n  135: 1,\n  136: 2,\n  137: 2,\n  138: 2,\n  140: 1,\n  141: 1,\n  142: 3,\n  143: 4,\n  144: 4,\n  161: 1,\n  162: 1,\n  163: 1,\n  164: 1,\n  165: 2,\n  172: 1,\n  175: 2,\n  176: 2,\n  177: 3,\n  178: 2,\n  179: 1,\n  184: 1,\n  186: 1,\n  189: 3,\n  190: 1,\n  195: 3,\n  196: 3,\n  197: 1,\n  198: 1,\n  199: 3,\n  201: 1,\n  207: 4,\n  210: 3,\n  211: 1,\n  212: 2,\n  213: 2,\n  214: 1,\n  215: 1,\n  225: 0,\n  229: 1,\n  230: 1,\n  231: 1,\n  232: 1,\n  233: 1,\n  234: 1,\n  235: 3,\n  244: 1,\n  247: 4,\n  252: 2,\n  257: 1,\n  261: 1,\n  271: 1,\n  273: 4,\n  274: 2,\n  275: 2,\n  276: 2,\n  277: 3,\n  278: 3,\n  279: 1,\n  280: 3,\n  281: 3,\n  282: 3,\n  283: 1,\n  284: 1,\n  285: 2,\n  286: 4,\n  287: 3,\n  288: 2,\n  289: 4,\n  290: 3,\n  291: 3,\n  292: 3,\n  293: 4,\n  294: 1,\n  295: 3,\n  296: 1,\n  297: 3,\n  298: 1,\n  299: 2,\n  300: 3,\n  301: 3,\n  302: 4,\n  303: 2,\n  304: 2,\n  305: 2,\n  306: 2,\n  307: 2,\n  308: 2,\n  309: 3,\n  310: 2,\n  311: 2,\n  312: 2,\n  313: 2,\n  314: 2,\n  315: 2,\n  316: 4,\n  325: 2,\n  326: 2,\n  327: 2,\n  328: 2,\n  331: 2,\n  332: 2,\n  337: 2,\n  342: 1,\n  343: 1,\n  346: 2,\n  347: 1,\n  350: 4,\n  351: 3,\n  352: 1,\n  353: 2,\n  360: 1,\n  368: 1,\n  369: 1,\n  370: 1,\n  371: 1,\n  372: 1,\n  373: 1,\n  374: 1,\n  375: 1,\n  376: 1,\n  377: 1,\n  378: 1,\n  382: 3,\n  385: 1,\n  392: 1,\n  393: 1,\n  396: 2,\n  397: 2,\n  398: 2,\n  399: 1,\n  400: 1,\n  401: 1,\n  402: 1,\n  403: 1,\n  404: 1,\n  405: 1,\n  406: 1,\n  407: 1,\n  408: 1,\n  409: 1,\n  410: 1,\n  414: 4,\n  415: 1,\n  416: 1,\n  417: 2,\n  420: 1,\n  421: 1,\n  422: 2,\n  424: 1,\n  425: 2,\n  426: 2,\n  427: 2,\n  428: 2,\n  430: 3,\n  438: 3,\n  439: 3,\n  440: 3,\n  443: 2,\n  444: 2,\n  445: 2,\n  446: 2,\n  447: 6,\n  448: 6,\n  449: 2,\n  450: 2,\n  464: 2,\n  468: 3,\n  476: 2,\n  479: 1,\n  480: 2,\n  65535: 0\n};\n/* Part 3 TODO: actually parse formulae */\nfunction ods_to_csf_formula(f/*:string*/)/*:string*/ {\n\tif(f.slice(0,3) == \"of:\") f = f.slice(3);\n\t/* 5.2 Basic Expressions */\n\tif(f.charCodeAt(0) == 61) {\n\t\tf = f.slice(1);\n\t\tif(f.charCodeAt(0) == 61) f = f.slice(1);\n\t}\n\tf = f.replace(/COM\\.MICROSOFT\\./g, \"\");\n\t/* Part 3 Section 5.8 References */\n\tf = f.replace(/\\[((?:\\.[A-Z]+[0-9]+)(?::\\.[A-Z]+[0-9]+)?)\\]/g, function($$, $1) { return $1.replace(/\\./g,\"\"); });\n\t/* TODO: something other than this */\n\tf = f.replace(/\\[.(#[A-Z]*[?!])\\]/g, \"$1\");\n\treturn f.replace(/[;~]/g,\",\").replace(/\\|/g,\";\");\n}\n\nfunction csf_to_ods_formula(f/*:string*/)/*:string*/ {\n\tvar o = \"of:=\" + f.replace(crefregex, \"$1[.$2$3$4$5]\").replace(/\\]:\\[/g,\":\");\n\t/* TODO: something other than this */\n\treturn o.replace(/;/g, \"|\").replace(/,/g,\";\");\n}\n\nfunction ods_to_csf_3D(r/*:string*/)/*:[string, string]*/ {\n\tvar a = r.split(\":\");\n\tvar s = a[0].split(\".\")[0];\n\treturn [s, a[0].split(\".\")[1] + (a.length > 1 ? (\":\" + (a[1].split(\".\")[1] || a[1].split(\".\")[0])) : \"\")];\n}\n\nfunction csf_to_ods_3D(r/*:string*/)/*:string*/ {\n\treturn r.replace(/\\./,\"!\");\n}\n\nvar strs = {}; // shared strings\nvar _ssfopts = {}; // spreadsheet formatting options\n\n\n/*global Map */\nvar browser_has_Map = typeof Map !== 'undefined';\n\nfunction get_sst_id(sst/*:SST*/, str/*:string*/, rev)/*:number*/ {\n\tvar i = 0, len = sst.length;\n\tif(rev) {\n\t\tif(browser_has_Map ? rev.has(str) : Object.prototype.hasOwnProperty.call(rev, str)) {\n\t\t\tvar revarr = browser_has_Map ? rev.get(str) : rev[str];\n\t\t\tfor(; i < revarr.length; ++i) {\n\t\t\t\tif(sst[revarr[i]].t === str) { sst.Count ++; return revarr[i]; }\n\t\t\t}\n\t\t}\n\t} else for(; i < len; ++i) {\n\t\tif(sst[i].t === str) { sst.Count ++; return i; }\n\t}\n\tsst[len] = ({t:str}/*:any*/); sst.Count ++; sst.Unique ++;\n\tif(rev) {\n\t\tif(browser_has_Map) {\n\t\t\tif(!rev.has(str)) rev.set(str, []);\n\t\t\trev.get(str).push(len);\n\t\t} else {\n\t\t\tif(!Object.prototype.hasOwnProperty.call(rev, str)) rev[str] = [];\n\t\t\trev[str].push(len);\n\t\t}\n\t}\n\treturn len;\n}\n\nfunction col_obj_w(C/*:number*/, col) {\n\tvar p = ({min:C+1,max:C+1}/*:any*/);\n\t/* wch (chars), wpx (pixels) */\n\tvar wch = -1;\n\tif(col.MDW) MDW = col.MDW;\n\tif(col.width != null) p.customWidth = 1;\n\telse if(col.wpx != null) wch = px2char(col.wpx);\n\telse if(col.wch != null) wch = col.wch;\n\tif(wch > -1) { p.width = char2width(wch); p.customWidth = 1; }\n\telse if(col.width != null) p.width = col.width;\n\tif(col.hidden) p.hidden = true;\n\tif(col.level != null) { p.outlineLevel = p.level = col.level; }\n\treturn p;\n}\n\nfunction default_margins(margins/*:Margins*/, mode/*:?string*/) {\n\tif(!margins) return;\n\tvar defs = [0.7, 0.7, 0.75, 0.75, 0.3, 0.3];\n\tif(mode == 'xlml') defs = [1, 1, 1, 1, 0.5, 0.5];\n\tif(margins.left   == null) margins.left   = defs[0];\n\tif(margins.right  == null) margins.right  = defs[1];\n\tif(margins.top    == null) margins.top    = defs[2];\n\tif(margins.bottom == null) margins.bottom = defs[3];\n\tif(margins.header == null) margins.header = defs[4];\n\tif(margins.footer == null) margins.footer = defs[5];\n}\n\nfunction get_cell_style(styles/*:Array<any>*/, cell/*:Cell*/, opts) {\n\tvar z = opts.revssf[cell.z != null ? cell.z : \"General\"];\n\tvar i = 0x3c, len = styles.length;\n\tif(z == null && opts.ssf) {\n\t\tfor(; i < 0x188; ++i) if(opts.ssf[i] == null) {\n\t\t\tSSF_load(cell.z, i);\n\t\t\t// $FlowIgnore\n\t\t\topts.ssf[i] = cell.z;\n\t\t\topts.revssf[cell.z] = z = i;\n\t\t\tbreak;\n\t\t}\n\t}\n\tfor(i = 0; i != len; ++i) if(styles[i].numFmtId === z) return i;\n\tstyles[len] = {\n\t\tnumFmtId:z,\n\t\tfontId:0,\n\t\tfillId:0,\n\t\tborderId:0,\n\t\txfId:0,\n\t\tapplyNumberFormat:1\n\t};\n\treturn len;\n}\n\nfunction safe_format(p/*:Cell*/, fmtid/*:number*/, fillid/*:?number*/, opts, themes, styles) {\n\ttry {\n\t\tif(opts.cellNF) p.z = table_fmt[fmtid];\n\t} catch(e) { if(opts.WTF) throw e; }\n\tif(p.t === 'z' && !opts.cellStyles) return;\n\tif(p.t === 'd' && typeof p.v === 'string') p.v = parseDate(p.v);\n\tif((!opts || opts.cellText !== false) && p.t !== 'z') try {\n\t\tif(table_fmt[fmtid] == null) SSF_load(SSFImplicit[fmtid] || \"General\", fmtid);\n\t\tif(p.t === 'e') p.w = p.w || BErr[p.v];\n\t\telse if(fmtid === 0) {\n\t\t\tif(p.t === 'n') {\n\t\t\t\tif((p.v|0) === p.v) p.w = p.v.toString(10);\n\t\t\t\telse p.w = SSF_general_num(p.v);\n\t\t\t}\n\t\t\telse if(p.t === 'd') {\n\t\t\t\tvar dd = datenum(p.v);\n\t\t\t\tif((dd|0) === dd) p.w = dd.toString(10);\n\t\t\t\telse p.w = SSF_general_num(dd);\n\t\t\t}\n\t\t\telse if(p.v === undefined) return \"\";\n\t\t\telse p.w = SSF_general(p.v,_ssfopts);\n\t\t}\n\t\telse if(p.t === 'd') p.w = SSF_format(fmtid,datenum(p.v),_ssfopts);\n\t\telse p.w = SSF_format(fmtid,p.v,_ssfopts);\n\t} catch(e) { if(opts.WTF) throw e; }\n\tif(!opts.cellStyles) return;\n\tif(fillid != null) try {\n\t\tp.s = styles.Fills[fillid];\n\t\tif (p.s.fgColor && p.s.fgColor.theme && !p.s.fgColor.rgb) {\n\t\t\tp.s.fgColor.rgb = rgb_tint(themes.themeElements.clrScheme[p.s.fgColor.theme].rgb, p.s.fgColor.tint || 0);\n\t\t\tif(opts.WTF) p.s.fgColor.raw_rgb = themes.themeElements.clrScheme[p.s.fgColor.theme].rgb;\n\t\t}\n\t\tif (p.s.bgColor && p.s.bgColor.theme) {\n\t\t\tp.s.bgColor.rgb = rgb_tint(themes.themeElements.clrScheme[p.s.bgColor.theme].rgb, p.s.bgColor.tint || 0);\n\t\t\tif(opts.WTF) p.s.bgColor.raw_rgb = themes.themeElements.clrScheme[p.s.bgColor.theme].rgb;\n\t\t}\n\t} catch(e) { if(opts.WTF && styles.Fills) throw e; }\n}\n\nfunction check_ws(ws/*:Worksheet*/, sname/*:string*/, i/*:number*/) {\n\tif(ws && ws['!ref']) {\n\t\tvar range = safe_decode_range(ws['!ref']);\n\t\tif(range.e.c < range.s.c || range.e.r < range.s.r) throw new Error(\"Bad range (\" + i + \"): \" + ws['!ref']);\n\t}\n}\nfunction parse_ws_xml_dim(ws/*:Worksheet*/, s/*:string*/) {\n\tvar d = safe_decode_range(s);\n\tif(d.s.r<=d.e.r && d.s.c<=d.e.c && d.s.r>=0 && d.s.c>=0) ws[\"!ref\"] = encode_range(d);\n}\nvar mergecregex = /<(?:\\w:)?mergeCell ref=\"[A-Z0-9:]+\"\\s*[\\/]?>/g;\nvar sheetdataregex = /<(?:\\w+:)?sheetData[^>]*>([\\s\\S]*)<\\/(?:\\w+:)?sheetData>/;\nvar hlinkregex = /<(?:\\w:)?hyperlink [^>]*>/mg;\nvar dimregex = /\"(\\w*:\\w*)\"/;\nvar colregex = /<(?:\\w:)?col\\b[^>]*[\\/]?>/g;\nvar afregex = /<(?:\\w:)?autoFilter[^>]*([\\/]|>([\\s\\S]*)<\\/(?:\\w:)?autoFilter)>/g;\nvar marginregex= /<(?:\\w:)?pageMargins[^>]*\\/>/g;\nvar sheetprregex = /<(?:\\w:)?sheetPr\\b(?:[^>a-z][^>]*)?\\/>/;\nvar sheetprregex2= /<(?:\\w:)?sheetPr[^>]*(?:[\\/]|>([\\s\\S]*)<\\/(?:\\w:)?sheetPr)>/;\nvar svsregex = /<(?:\\w:)?sheetViews[^>]*(?:[\\/]|>([\\s\\S]*)<\\/(?:\\w:)?sheetViews)>/;\n\n/* 18.3 Worksheets */\nfunction parse_ws_xml(data/*:?string*/, opts, idx/*:number*/, rels, wb/*:WBWBProps*/, themes, styles)/*:Worksheet*/ {\n\tif(!data) return data;\n\tif(!rels) rels = {'!id':{}};\n\tif(DENSE != null && opts.dense == null) opts.dense = DENSE;\n\n\t/* 18.3.1.99 worksheet CT_Worksheet */\n\tvar s = opts.dense ? ([]/*:any*/) : ({}/*:any*/);\n\tvar refguess/*:Range*/ = ({s: {r:2000000, c:2000000}, e: {r:0, c:0} }/*:any*/);\n\n\tvar data1 = \"\", data2 = \"\";\n\tvar mtch/*:?any*/ = data.match(sheetdataregex);\n\tif(mtch) {\n\t\tdata1 = data.slice(0, mtch.index);\n\t\tdata2 = data.slice(mtch.index + mtch[0].length);\n\t} else data1 = data2 = data;\n\n\t/* 18.3.1.82 sheetPr CT_SheetPr */\n\tvar sheetPr = data1.match(sheetprregex);\n\tif(sheetPr) parse_ws_xml_sheetpr(sheetPr[0], s, wb, idx);\n\telse if((sheetPr = data1.match(sheetprregex2))) parse_ws_xml_sheetpr2(sheetPr[0], sheetPr[1]||\"\", s, wb, idx, styles, themes);\n\n\t/* 18.3.1.35 dimension CT_SheetDimension */\n\tvar ridx = (data1.match(/<(?:\\w*:)?dimension/)||{index:-1}).index;\n\tif(ridx > 0) {\n\t\tvar ref = data1.slice(ridx,ridx+50).match(dimregex);\n\t\tif(ref) parse_ws_xml_dim(s, ref[1]);\n\t}\n\n\t/* 18.3.1.88 sheetViews CT_SheetViews */\n\tvar svs = data1.match(svsregex);\n\tif(svs && svs[1]) parse_ws_xml_sheetviews(svs[1], wb);\n\n\t/* 18.3.1.17 cols CT_Cols */\n\tvar columns/*:Array<ColInfo>*/ = [];\n\tif(opts.cellStyles) {\n\t\t/* 18.3.1.13 col CT_Col */\n\t\tvar cols = data1.match(colregex);\n\t\tif(cols) parse_ws_xml_cols(columns, cols);\n\t}\n\n\t/* 18.3.1.80 sheetData CT_SheetData ? */\n\tif(mtch) parse_ws_xml_data(mtch[1], s, opts, refguess, themes, styles);\n\n\t/* 18.3.1.2  autoFilter CT_AutoFilter */\n\tvar afilter = data2.match(afregex);\n\tif(afilter) s['!autofilter'] = parse_ws_xml_autofilter(afilter[0]);\n\n\t/* 18.3.1.55 mergeCells CT_MergeCells */\n\tvar merges/*:Array<Range>*/ = [];\n\tvar _merge = data2.match(mergecregex);\n\tif(_merge) for(ridx = 0; ridx != _merge.length; ++ridx)\n\t\tmerges[ridx] = safe_decode_range(_merge[ridx].slice(_merge[ridx].indexOf(\"\\\"\")+1));\n\n\t/* 18.3.1.48 hyperlinks CT_Hyperlinks */\n\tvar hlink = data2.match(hlinkregex);\n\tif(hlink) parse_ws_xml_hlinks(s, hlink, rels);\n\n\t/* 18.3.1.62 pageMargins CT_PageMargins */\n\tvar margins = data2.match(marginregex);\n\tif(margins) s['!margins'] = parse_ws_xml_margins(parsexmltag(margins[0]));\n\n\tif(!s[\"!ref\"] && refguess.e.c >= refguess.s.c && refguess.e.r >= refguess.s.r) s[\"!ref\"] = encode_range(refguess);\n\tif(opts.sheetRows > 0 && s[\"!ref\"]) {\n\t\tvar tmpref = safe_decode_range(s[\"!ref\"]);\n\t\tif(opts.sheetRows <= +tmpref.e.r) {\n\t\t\ttmpref.e.r = opts.sheetRows - 1;\n\t\t\tif(tmpref.e.r > refguess.e.r) tmpref.e.r = refguess.e.r;\n\t\t\tif(tmpref.e.r < tmpref.s.r) tmpref.s.r = tmpref.e.r;\n\t\t\tif(tmpref.e.c > refguess.e.c) tmpref.e.c = refguess.e.c;\n\t\t\tif(tmpref.e.c < tmpref.s.c) tmpref.s.c = tmpref.e.c;\n\t\t\ts[\"!fullref\"] = s[\"!ref\"];\n\t\t\ts[\"!ref\"] = encode_range(tmpref);\n\t\t}\n\t}\n\tif(columns.length > 0) s[\"!cols\"] = columns;\n\tif(merges.length > 0) s[\"!merges\"] = merges;\n\treturn s;\n}\n\nfunction write_ws_xml_merges(merges/*:Array<Range>*/)/*:string*/ {\n\tif(merges.length === 0) return \"\";\n\tvar o = '<mergeCells count=\"' + merges.length + '\">';\n\tfor(var i = 0; i != merges.length; ++i) o += '<mergeCell ref=\"' + encode_range(merges[i]) + '\"/>';\n\treturn o + '</mergeCells>';\n}\n\n/* 18.3.1.82-3 sheetPr CT_ChartsheetPr / CT_SheetPr */\nfunction parse_ws_xml_sheetpr(sheetPr/*:string*/, s, wb/*:WBWBProps*/, idx/*:number*/) {\n\tvar data = parsexmltag(sheetPr);\n\tif(!wb.Sheets[idx]) wb.Sheets[idx] = {};\n\tif(data.codeName) wb.Sheets[idx].CodeName = unescapexml(utf8read(data.codeName));\n}\nfunction parse_ws_xml_sheetpr2(sheetPr/*:string*/, body/*:string*/, s, wb/*:WBWBProps*/, idx/*:number*/) {\n\tparse_ws_xml_sheetpr(sheetPr.slice(0, sheetPr.indexOf(\">\")), s, wb, idx);\n}\nfunction write_ws_xml_sheetpr(ws, wb, idx, opts, o) {\n\tvar needed = false;\n\tvar props = {}, payload = null;\n\tif(opts.bookType !== 'xlsx' && wb.vbaraw) {\n\t\tvar cname = wb.SheetNames[idx];\n\t\ttry { if(wb.Workbook) cname = wb.Workbook.Sheets[idx].CodeName || cname; } catch(e) {}\n\t\tneeded = true;\n\t\tprops.codeName = utf8write(escapexml(cname));\n\t}\n\n\tif(ws && ws[\"!outline\"]) {\n\t\tvar outlineprops = {summaryBelow:1, summaryRight:1};\n\t\tif(ws[\"!outline\"].above) outlineprops.summaryBelow = 0;\n\t\tif(ws[\"!outline\"].left) outlineprops.summaryRight = 0;\n\t\tpayload = (payload||\"\") + writextag('outlinePr', null, outlineprops);\n\t}\n\n\tif(!needed && !payload) return;\n\to[o.length] = (writextag('sheetPr', payload, props));\n}\n\n/* 18.3.1.85 sheetProtection CT_SheetProtection */\nvar sheetprot_deffalse = [\"objects\", \"scenarios\", \"selectLockedCells\", \"selectUnlockedCells\"];\nvar sheetprot_deftrue = [\n\t\"formatColumns\", \"formatRows\", \"formatCells\",\n\t\"insertColumns\", \"insertRows\", \"insertHyperlinks\",\n\t\"deleteColumns\", \"deleteRows\",\n\t\"sort\", \"autoFilter\", \"pivotTables\"\n];\nfunction write_ws_xml_protection(sp)/*:string*/ {\n\t// algorithmName, hashValue, saltValue, spinCount\n\tvar o = ({sheet:1}/*:any*/);\n\tsheetprot_deffalse.forEach(function(n) { if(sp[n] != null && sp[n]) o[n] = \"1\"; });\n\tsheetprot_deftrue.forEach(function(n) { if(sp[n] != null && !sp[n]) o[n] = \"0\"; });\n\t/* TODO: algorithm */\n\tif(sp.password) o.password = crypto_CreatePasswordVerifier_Method1(sp.password).toString(16).toUpperCase();\n\treturn writextag('sheetProtection', null, o);\n}\n\nfunction parse_ws_xml_hlinks(s, data/*:Array<string>*/, rels) {\n\tvar dense = Array.isArray(s);\n\tfor(var i = 0; i != data.length; ++i) {\n\t\tvar val = parsexmltag(utf8read(data[i]), true);\n\t\tif(!val.ref) return;\n\t\tvar rel = ((rels || {})['!id']||[])[val.id];\n\t\tif(rel) {\n\t\t\tval.Target = rel.Target;\n\t\t\tif(val.location) val.Target += \"#\"+unescapexml(val.location);\n\t\t} else {\n\t\t\tval.Target = \"#\" + unescapexml(val.location);\n\t\t\trel = {Target: val.Target, TargetMode: 'Internal'};\n\t\t}\n\t\tval.Rel = rel;\n\t\tif(val.tooltip) { val.Tooltip = val.tooltip; delete val.tooltip; }\n\t\tvar rng = safe_decode_range(val.ref);\n\t\tfor(var R=rng.s.r;R<=rng.e.r;++R) for(var C=rng.s.c;C<=rng.e.c;++C) {\n\t\t\tvar addr = encode_cell({c:C,r:R});\n\t\t\tif(dense) {\n\t\t\t\tif(!s[R]) s[R] = [];\n\t\t\t\tif(!s[R][C]) s[R][C] = {t:\"z\",v:undefined};\n\t\t\t\ts[R][C].l = val;\n\t\t\t} else {\n\t\t\t\tif(!s[addr]) s[addr] = {t:\"z\",v:undefined};\n\t\t\t\ts[addr].l = val;\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunction parse_ws_xml_margins(margin) {\n\tvar o = {};\n\t[\"left\", \"right\", \"top\", \"bottom\", \"header\", \"footer\"].forEach(function(k) {\n\t\tif(margin[k]) o[k] = parseFloat(margin[k]);\n\t});\n\treturn o;\n}\nfunction write_ws_xml_margins(margin)/*:string*/ {\n\tdefault_margins(margin);\n\treturn writextag('pageMargins', null, margin);\n}\n\nfunction parse_ws_xml_cols(columns, cols) {\n\tvar seencol = false;\n\tfor(var coli = 0; coli != cols.length; ++coli) {\n\t\tvar coll = parsexmltag(cols[coli], true);\n\t\tif(coll.hidden) coll.hidden = parsexmlbool(coll.hidden);\n\t\tvar colm=parseInt(coll.min, 10)-1, colM=parseInt(coll.max,10)-1;\n\t\tif(coll.outlineLevel) coll.level = (+coll.outlineLevel || 0);\n\t\tdelete coll.min; delete coll.max; coll.width = +coll.width;\n\t\tif(!seencol && coll.width) { seencol = true; find_mdw_colw(coll.width); }\n\t\tprocess_col(coll);\n\t\twhile(colm <= colM) columns[colm++] = dup(coll);\n\t}\n}\nfunction write_ws_xml_cols(ws, cols)/*:string*/ {\n\tvar o = [\"<cols>\"], col;\n\tfor(var i = 0; i != cols.length; ++i) {\n\t\tif(!(col = cols[i])) continue;\n\t\to[o.length] = (writextag('col', null, col_obj_w(i, col)));\n\t}\n\to[o.length] = \"</cols>\";\n\treturn o.join(\"\");\n}\n\nfunction parse_ws_xml_autofilter(data/*:string*/) {\n\tvar o = { ref: (data.match(/ref=\"([^\"]*)\"/)||[])[1]};\n\treturn o;\n}\nfunction write_ws_xml_autofilter(data, ws, wb, idx)/*:string*/ {\n\tvar ref = typeof data.ref == \"string\" ? data.ref : encode_range(data.ref);\n\tif(!wb.Workbook) wb.Workbook = ({Sheets:[]}/*:any*/);\n\tif(!wb.Workbook.Names) wb.Workbook.Names = [];\n\tvar names/*: Array<any> */ = wb.Workbook.Names;\n\tvar range = decode_range(ref);\n\tif(range.s.r == range.e.r) { range.e.r = decode_range(ws[\"!ref\"]).e.r; ref = encode_range(range); }\n\tfor(var i = 0; i < names.length; ++i) {\n\t\tvar name = names[i];\n\t\tif(name.Name != '_xlnm._FilterDatabase') continue;\n\t\tif(name.Sheet != idx) continue;\n\t\tname.Ref = \"'\" + wb.SheetNames[idx] + \"'!\" + ref; break;\n\t}\n\tif(i == names.length) names.push({ Name: '_xlnm._FilterDatabase', Sheet: idx, Ref: \"'\" + wb.SheetNames[idx] + \"'!\" + ref  });\n\treturn writextag(\"autoFilter\", null, {ref:ref});\n}\n\n/* 18.3.1.88 sheetViews CT_SheetViews */\n/* 18.3.1.87 sheetView CT_SheetView */\nvar sviewregex = /<(?:\\w:)?sheetView(?:[^>a-z][^>]*)?\\/?>/;\nfunction parse_ws_xml_sheetviews(data, wb/*:WBWBProps*/) {\n\tif(!wb.Views) wb.Views = [{}];\n\t(data.match(sviewregex)||[]).forEach(function(r/*:string*/, i/*:number*/) {\n\t\tvar tag = parsexmltag(r);\n\t\t// $FlowIgnore\n\t\tif(!wb.Views[i]) wb.Views[i] = {};\n\t\t// $FlowIgnore\n\t\tif(+tag.zoomScale) wb.Views[i].zoom = +tag.zoomScale;\n\t\t// $FlowIgnore\n\t\tif(parsexmlbool(tag.rightToLeft)) wb.Views[i].RTL = true;\n\t});\n}\nfunction write_ws_xml_sheetviews(ws, opts, idx, wb)/*:string*/ {\n\tvar sview = ({workbookViewId:\"0\"}/*:any*/);\n\t// $FlowIgnore\n\tif((((wb||{}).Workbook||{}).Views||[])[0]) sview.rightToLeft = wb.Workbook.Views[0].RTL ? \"1\" : \"0\";\n\treturn writextag(\"sheetViews\", writextag(\"sheetView\", null, sview), {});\n}\n\nfunction write_ws_xml_cell(cell/*:Cell*/, ref, ws, opts/*::, idx, wb*/)/*:string*/ {\n\tif(cell.c) ws['!comments'].push([ref, cell.c]);\n\tif(cell.v === undefined && typeof cell.f !== \"string\" || cell.t === 'z' && !cell.f) return \"\";\n\tvar vv = \"\";\n\tvar oldt = cell.t, oldv = cell.v;\n\tif(cell.t !== \"z\") switch(cell.t) {\n\t\tcase 'b': vv = cell.v ? \"1\" : \"0\"; break;\n\t\tcase 'n': vv = ''+cell.v; break;\n\t\tcase 'e': vv = BErr[cell.v]; break;\n\t\tcase 'd':\n\t\t\tif(opts && opts.cellDates) vv = parseDate(cell.v, -1).toISOString();\n\t\t\telse {\n\t\t\t\tcell = dup(cell);\n\t\t\t\tcell.t = 'n';\n\t\t\t\tvv = ''+(cell.v = datenum(parseDate(cell.v)));\n\t\t\t}\n\t\t\tif(typeof cell.z === 'undefined') cell.z = table_fmt[14];\n\t\t\tbreak;\n\t\tdefault: vv = cell.v; break;\n\t}\n\tvar v = writetag('v', escapexml(vv)), o = ({r:ref}/*:any*/);\n\t/* TODO: cell style */\n\tvar os = get_cell_style(opts.cellXfs, cell, opts);\n\tif(os !== 0) o.s = os;\n\tswitch(cell.t) {\n\t\tcase 'n': break;\n\t\tcase 'd': o.t = \"d\"; break;\n\t\tcase 'b': o.t = \"b\"; break;\n\t\tcase 'e': o.t = \"e\"; break;\n\t\tcase 'z': break;\n\t\tdefault: if(cell.v == null) { delete cell.t; break; }\n\t\t\tif(cell.v.length > 32767) throw new Error(\"Text length must not exceed 32767 characters\");\n\t\t\tif(opts && opts.bookSST) {\n\t\t\t\tv = writetag('v', ''+get_sst_id(opts.Strings, cell.v, opts.revStrings));\n\t\t\t\to.t = \"s\"; break;\n\t\t\t}\n\t\t\to.t = \"str\"; break;\n\t}\n\tif(cell.t != oldt) { cell.t = oldt; cell.v = oldv; }\n\tif(typeof cell.f == \"string\" && cell.f) {\n\t\tvar ff = cell.F && cell.F.slice(0, ref.length) == ref ? {t:\"array\", ref:cell.F} : null;\n\t\tv = writextag('f', escapexml(cell.f), ff) + (cell.v != null ? v : \"\");\n\t}\n\tif(cell.l) ws['!links'].push([ref, cell.l]);\n\tif(cell.D) o.cm = 1;\n\treturn writextag('c', v, o);\n}\n\nvar parse_ws_xml_data = /*#__PURE__*/(function() {\n\tvar cellregex = /<(?:\\w+:)?c[ \\/>]/, rowregex = /<\\/(?:\\w+:)?row>/;\n\tvar rregex = /r=[\"']([^\"']*)[\"']/, isregex = /<(?:\\w+:)?is>([\\S\\s]*?)<\\/(?:\\w+:)?is>/;\n\tvar refregex = /ref=[\"']([^\"']*)[\"']/;\n\tvar match_v = matchtag(\"v\"), match_f = matchtag(\"f\");\n\nreturn function parse_ws_xml_data(sdata/*:string*/, s, opts, guess/*:Range*/, themes, styles) {\n\tvar ri = 0, x = \"\", cells/*:Array<string>*/ = [], cref/*:?Array<string>*/ = [], idx=0, i=0, cc=0, d=\"\", p/*:any*/;\n\tvar tag, tagr = 0, tagc = 0;\n\tvar sstr, ftag;\n\tvar fmtid = 0, fillid = 0;\n\tvar do_format = Array.isArray(styles.CellXf), cf;\n\tvar arrayf/*:Array<[Range, string]>*/ = [];\n\tvar sharedf = [];\n\tvar dense = Array.isArray(s);\n\tvar rows/*:Array<RowInfo>*/ = [], rowobj = {}, rowrite = false;\n\tvar sheetStubs = !!opts.sheetStubs;\n\tfor(var marr = sdata.split(rowregex), mt = 0, marrlen = marr.length; mt != marrlen; ++mt) {\n\t\tx = marr[mt].trim();\n\t\tvar xlen = x.length;\n\t\tif(xlen === 0) continue;\n\n\t\t/* 18.3.1.73 row CT_Row */\n\t\tvar rstarti = 0;\n\t\touta: for(ri = 0; ri < xlen; ++ri) switch(/*x.charCodeAt(ri)*/x[ri]) {\n\t\t\tcase \">\" /*62*/:\n\t\t\t\tif(/*x.charCodeAt(ri-1) != 47*/x[ri-1] != \"/\") { ++ri; break outa; }\n\t\t\t\tif(opts && opts.cellStyles) {\n\t\t\t\t\t// TODO: avoid duplication\n\t\t\t\t\ttag = parsexmltag(x.slice(rstarti,ri), true);\n\t\t\t\t\ttagr = tag.r != null ? parseInt(tag.r, 10) : tagr+1; tagc = -1;\n\t\t\t\t\tif(opts.sheetRows && opts.sheetRows < tagr) continue;\n\t\t\t\t\trowobj = {}; rowrite = false;\n\t\t\t\t\tif(tag.ht) { rowrite = true; rowobj.hpt = parseFloat(tag.ht); rowobj.hpx = pt2px(rowobj.hpt); }\n\t\t\t\t\tif(tag.hidden == \"1\") { rowrite = true; rowobj.hidden = true; }\n\t\t\t\t\tif(tag.outlineLevel != null) { rowrite = true; rowobj.level = +tag.outlineLevel; }\n\t\t\t\t\tif(rowrite) rows[tagr-1] = rowobj;\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase \"<\" /*60*/: rstarti = ri; break;\n\t\t}\n\t\tif(rstarti >= ri) break;\n\t\ttag = parsexmltag(x.slice(rstarti,ri), true);\n\t\ttagr = tag.r != null ? parseInt(tag.r, 10) : tagr+1; tagc = -1;\n\t\tif(opts.sheetRows && opts.sheetRows < tagr) continue;\n\t\tif(guess.s.r > tagr - 1) guess.s.r = tagr - 1;\n\t\tif(guess.e.r < tagr - 1) guess.e.r = tagr - 1;\n\n\t\tif(opts && opts.cellStyles) {\n\t\t\trowobj = {}; rowrite = false;\n\t\t\tif(tag.ht) { rowrite = true; rowobj.hpt = parseFloat(tag.ht); rowobj.hpx = pt2px(rowobj.hpt); }\n\t\t\tif(tag.hidden == \"1\") { rowrite = true; rowobj.hidden = true; }\n\t\t\tif(tag.outlineLevel != null) { rowrite = true; rowobj.level = +tag.outlineLevel; }\n\t\t\tif(rowrite) rows[tagr-1] = rowobj;\n\t\t}\n\n\t\t/* 18.3.1.4 c CT_Cell */\n\t\tcells = x.slice(ri).split(cellregex);\n\t\tfor(var rslice = 0; rslice != cells.length; ++rslice) if(cells[rslice].trim().charAt(0) != \"<\") break;\n\t\tcells = cells.slice(rslice);\n\t\tfor(ri = 0; ri != cells.length; ++ri) {\n\t\t\tx = cells[ri].trim();\n\t\t\tif(x.length === 0) continue;\n\t\t\tcref = x.match(rregex); idx = ri; i=0; cc=0;\n\t\t\tx = \"<c \" + (x.slice(0,1)==\"<\"?\">\":\"\") + x;\n\t\t\tif(cref != null && cref.length === 2) {\n\t\t\t\tidx = 0; d=cref[1];\n\t\t\t\tfor(i=0; i != d.length; ++i) {\n\t\t\t\t\tif((cc=d.charCodeAt(i)-64) < 1 || cc > 26) break;\n\t\t\t\t\tidx = 26*idx + cc;\n\t\t\t\t}\n\t\t\t\t--idx;\n\t\t\t\ttagc = idx;\n\t\t\t} else ++tagc;\n\t\t\tfor(i = 0; i != x.length; ++i) if(x.charCodeAt(i) === 62) break; ++i;\n\t\t\ttag = parsexmltag(x.slice(0,i), true);\n\t\t\tif(!tag.r) tag.r = encode_cell({r:tagr-1, c:tagc});\n\t\t\td = x.slice(i);\n\t\t\tp = ({t:\"\"}/*:any*/);\n\n\t\t\tif((cref=d.match(match_v))!= null && /*::cref != null && */cref[1] !== '') p.v=unescapexml(cref[1]);\n\t\t\tif(opts.cellFormula) {\n\t\t\t\tif((cref=d.match(match_f))!= null && /*::cref != null && */cref[1] !== '') {\n\t\t\t\t\t/* TODO: match against XLSXFutureFunctions */\n\t\t\t\t\tp.f=unescapexml(utf8read(cref[1])).replace(/\\r\\n/g, \"\\n\");\n\t\t\t\t\tif(!opts.xlfn) p.f = _xlfn(p.f);\n\t\t\t\t\tif(/*::cref != null && cref[0] != null && */cref[0].indexOf('t=\"array\"') > -1) {\n\t\t\t\t\t\tp.F = (d.match(refregex)||[])[1];\n\t\t\t\t\t\tif(p.F.indexOf(\":\") > -1) arrayf.push([safe_decode_range(p.F), p.F]);\n\t\t\t\t\t} else if(/*::cref != null && cref[0] != null && */cref[0].indexOf('t=\"shared\"') > -1) {\n\t\t\t\t\t\t// TODO: parse formula\n\t\t\t\t\t\tftag = parsexmltag(cref[0]);\n\t\t\t\t\t\tvar ___f = unescapexml(utf8read(cref[1]));\n\t\t\t\t\t\tif(!opts.xlfn) ___f = _xlfn(___f);\n\t\t\t\t\t\tsharedf[parseInt(ftag.si, 10)] = [ftag, ___f, tag.r];\n\t\t\t\t\t}\n\t\t\t\t} else if((cref=d.match(/<f[^>]*\\/>/))) {\n\t\t\t\t\tftag = parsexmltag(cref[0]);\n\t\t\t\t\tif(sharedf[ftag.si]) p.f = shift_formula_xlsx(sharedf[ftag.si][1], sharedf[ftag.si][2]/*[0].ref*/, tag.r);\n\t\t\t\t}\n\t\t\t\t/* TODO: factor out contains logic */\n\t\t\t\tvar _tag = decode_cell(tag.r);\n\t\t\t\tfor(i = 0; i < arrayf.length; ++i)\n\t\t\t\t\tif(_tag.r >= arrayf[i][0].s.r && _tag.r <= arrayf[i][0].e.r)\n\t\t\t\t\t\tif(_tag.c >= arrayf[i][0].s.c && _tag.c <= arrayf[i][0].e.c)\n\t\t\t\t\t\t\tp.F = arrayf[i][1];\n\t\t\t}\n\n\t\t\tif(tag.t == null && p.v === undefined) {\n\t\t\t\tif(p.f || p.F) {\n\t\t\t\t\tp.v = 0; p.t = \"n\";\n\t\t\t\t} else if(!sheetStubs) continue;\n\t\t\t\telse p.t = \"z\";\n\t\t\t}\n\t\t\telse p.t = tag.t || \"n\";\n\t\t\tif(guess.s.c > tagc) guess.s.c = tagc;\n\t\t\tif(guess.e.c < tagc) guess.e.c = tagc;\n\t\t\t/* 18.18.11 t ST_CellType */\n\t\t\tswitch(p.t) {\n\t\t\t\tcase 'n':\n\t\t\t\t\tif(p.v == \"\" || p.v == null) {\n\t\t\t\t\t\tif(!sheetStubs) continue;\n\t\t\t\t\t\tp.t = 'z';\n\t\t\t\t\t} else p.v = parseFloat(p.v);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 's':\n\t\t\t\t\tif(typeof p.v == 'undefined') {\n\t\t\t\t\t\tif(!sheetStubs) continue;\n\t\t\t\t\t\tp.t = 'z';\n\t\t\t\t\t} else {\n\t\t\t\t\t\tsstr = strs[parseInt(p.v, 10)];\n\t\t\t\t\t\tp.v = sstr.t;\n\t\t\t\t\t\tp.r = sstr.r;\n\t\t\t\t\t\tif(opts.cellHTML) p.h = sstr.h;\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'str':\n\t\t\t\t\tp.t = \"s\";\n\t\t\t\t\tp.v = (p.v!=null) ? utf8read(p.v) : '';\n\t\t\t\t\tif(opts.cellHTML) p.h = escapehtml(p.v);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'inlineStr':\n\t\t\t\t\tcref = d.match(isregex);\n\t\t\t\t\tp.t = 's';\n\t\t\t\t\tif(cref != null && (sstr = parse_si(cref[1]))) {\n\t\t\t\t\t\tp.v = sstr.t;\n\t\t\t\t\t\tif(opts.cellHTML) p.h = sstr.h;\n\t\t\t\t\t} else p.v = \"\";\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'b': p.v = parsexmlbool(p.v); break;\n\t\t\t\tcase 'd':\n\t\t\t\t\tif(opts.cellDates) p.v = parseDate(p.v, 1);\n\t\t\t\t\telse { p.v = datenum(parseDate(p.v, 1)); p.t = 'n'; }\n\t\t\t\t\tbreak;\n\t\t\t\t/* error string in .w, number in .v */\n\t\t\t\tcase 'e':\n\t\t\t\t\tif(!opts || opts.cellText !== false) p.w = p.v;\n\t\t\t\t\tp.v = RBErr[p.v]; break;\n\t\t\t}\n\t\t\t/* formatting */\n\t\t\tfmtid = fillid = 0;\n\t\t\tcf = null;\n\t\t\tif(do_format && tag.s !== undefined) {\n\t\t\t\tcf = styles.CellXf[tag.s];\n\t\t\t\tif(cf != null) {\n\t\t\t\t\tif(cf.numFmtId != null) fmtid = cf.numFmtId;\n\t\t\t\t\tif(opts.cellStyles) {\n\t\t\t\t\t\tif(cf.fillId != null) fillid = cf.fillId;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tsafe_format(p, fmtid, fillid, opts, themes, styles);\n\t\t\tif(opts.cellDates && do_format && p.t == 'n' && fmt_is_date(table_fmt[fmtid])) { p.t = 'd'; p.v = numdate(p.v); }\n\t\t\tif(tag.cm && opts.xlmeta) {\n\t\t\t\tvar cm = (opts.xlmeta.Cell||[])[+tag.cm-1];\n\t\t\t\tif(cm && cm.type == 'XLDAPR') p.D = true;\n\t\t\t}\n\t\t\tif(dense) {\n\t\t\t\tvar _r = decode_cell(tag.r);\n\t\t\t\tif(!s[_r.r]) s[_r.r] = [];\n\t\t\t\ts[_r.r][_r.c] = p;\n\t\t\t} else s[tag.r] = p;\n\t\t}\n\t}\n\tif(rows.length > 0) s['!rows'] = rows;\n}; })();\n\nfunction write_ws_xml_data(ws/*:Worksheet*/, opts, idx/*:number*/, wb/*:Workbook*//*::, rels*/)/*:string*/ {\n\tvar o/*:Array<string>*/ = [], r/*:Array<string>*/ = [], range = safe_decode_range(ws['!ref']), cell=\"\", ref, rr = \"\", cols/*:Array<string>*/ = [], R=0, C=0, rows = ws['!rows'];\n\tvar dense = Array.isArray(ws);\n\tvar params = ({r:rr}/*:any*/), row/*:RowInfo*/, height = -1;\n\tfor(C = range.s.c; C <= range.e.c; ++C) cols[C] = encode_col(C);\n\tfor(R = range.s.r; R <= range.e.r; ++R) {\n\t\tr = [];\n\t\trr = encode_row(R);\n\t\tfor(C = range.s.c; C <= range.e.c; ++C) {\n\t\t\tref = cols[C] + rr;\n\t\t\tvar _cell = dense ? (ws[R]||[])[C]: ws[ref];\n\t\t\tif(_cell === undefined) continue;\n\t\t\tif((cell = write_ws_xml_cell(_cell, ref, ws, opts, idx, wb)) != null) r.push(cell);\n\t\t}\n\t\tif(r.length > 0 || (rows && rows[R])) {\n\t\t\tparams = ({r:rr}/*:any*/);\n\t\t\tif(rows && rows[R]) {\n\t\t\t\trow = rows[R];\n\t\t\t\tif(row.hidden) params.hidden = 1;\n\t\t\t\theight = -1;\n\t\t\t\tif(row.hpx) height = px2pt(row.hpx);\n\t\t\t\telse if(row.hpt) height = row.hpt;\n\t\t\t\tif(height > -1) { params.ht = height; params.customHeight = 1; }\n\t\t\t\tif(row.level) { params.outlineLevel = row.level; }\n\t\t\t}\n\t\t\to[o.length] = (writextag('row', r.join(\"\"), params));\n\t\t}\n\t}\n\tif(rows) for(; R < rows.length; ++R) {\n\t\tif(rows && rows[R]) {\n\t\t\tparams = ({r:R+1}/*:any*/);\n\t\t\trow = rows[R];\n\t\t\tif(row.hidden) params.hidden = 1;\n\t\t\theight = -1;\n\t\t\tif (row.hpx) height = px2pt(row.hpx);\n\t\t\telse if (row.hpt) height = row.hpt;\n\t\t\tif (height > -1) { params.ht = height; params.customHeight = 1; }\n\t\t\tif (row.level) { params.outlineLevel = row.level; }\n\t\t\to[o.length] = (writextag('row', \"\", params));\n\t\t}\n\t}\n\treturn o.join(\"\");\n}\n\nfunction write_ws_xml(idx/*:number*/, opts, wb/*:Workbook*/, rels)/*:string*/ {\n\tvar o = [XML_HEADER, writextag('worksheet', null, {\n\t\t'xmlns': XMLNS_main[0],\n\t\t'xmlns:r': XMLNS.r\n\t})];\n\tvar s = wb.SheetNames[idx], sidx = 0, rdata = \"\";\n\tvar ws = wb.Sheets[s];\n\tif(ws == null) ws = {};\n\tvar ref = ws['!ref'] || 'A1';\n\tvar range = safe_decode_range(ref);\n\tif(range.e.c > 0x3FFF || range.e.r > 0xFFFFF) {\n\t\tif(opts.WTF) throw new Error(\"Range \" + ref + \" exceeds format limit A1:XFD1048576\");\n\t\trange.e.c = Math.min(range.e.c, 0x3FFF);\n\t\trange.e.r = Math.min(range.e.c, 0xFFFFF);\n\t\tref = encode_range(range);\n\t}\n\tif(!rels) rels = {};\n\tws['!comments'] = [];\n\tvar _drawing = [];\n\n\twrite_ws_xml_sheetpr(ws, wb, idx, opts, o);\n\n\to[o.length] = (writextag('dimension', null, {'ref': ref}));\n\n\to[o.length] = write_ws_xml_sheetviews(ws, opts, idx, wb);\n\n\t/* TODO: store in WB, process styles */\n\tif(opts.sheetFormat) o[o.length] = (writextag('sheetFormatPr', null, {\n\t\tdefaultRowHeight:opts.sheetFormat.defaultRowHeight||'16',\n\t\tbaseColWidth:opts.sheetFormat.baseColWidth||'10',\n\t\toutlineLevelRow:opts.sheetFormat.outlineLevelRow||'7'\n\t}));\n\n\tif(ws['!cols'] != null && ws['!cols'].length > 0) o[o.length] = (write_ws_xml_cols(ws, ws['!cols']));\n\n\to[sidx = o.length] = '<sheetData/>';\n\tws['!links'] = [];\n\tif(ws['!ref'] != null) {\n\t\trdata = write_ws_xml_data(ws, opts, idx, wb, rels);\n\t\tif(rdata.length > 0) o[o.length] = (rdata);\n\t}\n\tif(o.length>sidx+1) { o[o.length] = ('</sheetData>'); o[sidx]=o[sidx].replace(\"/>\",\">\"); }\n\n\t/* sheetCalcPr */\n\n\tif(ws['!protect']) o[o.length] = write_ws_xml_protection(ws['!protect']);\n\n\t/* protectedRanges */\n\t/* scenarios */\n\n\tif(ws['!autofilter'] != null) o[o.length] = write_ws_xml_autofilter(ws['!autofilter'], ws, wb, idx);\n\n\t/* sortState */\n\t/* dataConsolidate */\n\t/* customSheetViews */\n\n\tif(ws['!merges'] != null && ws['!merges'].length > 0) o[o.length] = (write_ws_xml_merges(ws['!merges']));\n\n\t/* phoneticPr */\n\t/* conditionalFormatting */\n\t/* dataValidations */\n\n\tvar relc = -1, rel, rId = -1;\n\tif(/*::(*/ws['!links']/*::||[])*/.length > 0) {\n\t\to[o.length] = \"<hyperlinks>\";\n\t\t/*::(*/ws['!links']/*::||[])*/.forEach(function(l) {\n\t\t\tif(!l[1].Target) return;\n\t\t\trel = ({\"ref\":l[0]}/*:any*/);\n\t\t\tif(l[1].Target.charAt(0) != \"#\") {\n\t\t\t\trId = add_rels(rels, -1, escapexml(l[1].Target).replace(/#.*$/, \"\"), RELS.HLINK);\n\t\t\t\trel[\"r:id\"] = \"rId\"+rId;\n\t\t\t}\n\t\t\tif((relc = l[1].Target.indexOf(\"#\")) > -1) rel.location = escapexml(l[1].Target.slice(relc+1));\n\t\t\tif(l[1].Tooltip) rel.tooltip = escapexml(l[1].Tooltip);\n\t\t\to[o.length] = writextag(\"hyperlink\",null,rel);\n\t\t});\n\t\to[o.length] = \"</hyperlinks>\";\n\t}\n\tdelete ws['!links'];\n\n\t/* printOptions */\n\n\tif(ws['!margins'] != null) o[o.length] =  write_ws_xml_margins(ws['!margins']);\n\n\t/* pageSetup */\n\t/* headerFooter */\n\t/* rowBreaks */\n\t/* colBreaks */\n\t/* customProperties */\n\t/* cellWatches */\n\n\tif(!opts || opts.ignoreEC || (opts.ignoreEC == (void 0))) o[o.length] = writetag(\"ignoredErrors\", writextag(\"ignoredError\", null, {numberStoredAsText:1, sqref:ref}));\n\n\t/* smartTags */\n\n\tif(_drawing.length > 0) {\n\t\trId = add_rels(rels, -1, \"../drawings/drawing\" + (idx+1) + \".xml\", RELS.DRAW);\n\t\to[o.length] = writextag(\"drawing\", null, {\"r:id\":\"rId\" + rId});\n\t\tws['!drawing'] = _drawing;\n\t}\n\n\tif(ws['!comments'].length > 0) {\n\t\trId = add_rels(rels, -1, \"../drawings/vmlDrawing\" + (idx+1) + \".vml\", RELS.VML);\n\t\to[o.length] = writextag(\"legacyDrawing\", null, {\"r:id\":\"rId\" + rId});\n\t\tws['!legacy'] = rId;\n\t}\n\n\t/* legacyDrawingHF */\n\t/* picture */\n\t/* oleObjects */\n\t/* controls */\n\t/* webPublishItems */\n\t/* tableParts */\n\t/* extLst */\n\n\tif(o.length>1) { o[o.length] = ('</worksheet>'); o[1]=o[1].replace(\"/>\",\">\"); }\n\treturn o.join(\"\");\n}\n\n/* [MS-XLSB] 2.4.726 BrtRowHdr */\nfunction parse_BrtRowHdr(data, length) {\n\tvar z = ({}/*:any*/);\n\tvar tgt = data.l + length;\n\tz.r = data.read_shift(4);\n\tdata.l += 4; // TODO: ixfe\n\tvar miyRw = data.read_shift(2);\n\tdata.l += 1; // TODO: top/bot padding\n\tvar flags = data.read_shift(1);\n\tdata.l = tgt;\n\tif(flags & 0x07) z.level = flags & 0x07;\n\tif(flags & 0x10) z.hidden = true;\n\tif(flags & 0x20) z.hpt = miyRw / 20;\n\treturn z;\n}\nfunction write_BrtRowHdr(R/*:number*/, range, ws) {\n\tvar o = new_buf(17+8*16);\n\tvar row = (ws['!rows']||[])[R]||{};\n\to.write_shift(4, R);\n\n\to.write_shift(4, 0); /* TODO: ixfe */\n\n\tvar miyRw = 0x0140;\n\tif(row.hpx) miyRw = px2pt(row.hpx) * 20;\n\telse if(row.hpt) miyRw = row.hpt * 20;\n\to.write_shift(2, miyRw);\n\n\to.write_shift(1, 0); /* top/bot padding */\n\n\tvar flags = 0x0;\n\tif(row.level) flags |= row.level;\n\tif(row.hidden) flags |= 0x10;\n\tif(row.hpx || row.hpt) flags |= 0x20;\n\to.write_shift(1, flags);\n\n\to.write_shift(1, 0); /* phonetic guide */\n\n\t/* [MS-XLSB] 2.5.8 BrtColSpan explains the mechanism */\n\tvar ncolspan = 0, lcs = o.l;\n\to.l += 4;\n\n\tvar caddr = {r:R, c:0};\n\tfor(var i = 0; i < 16; ++i) {\n\t\tif((range.s.c > ((i+1) << 10)) || (range.e.c < (i << 10))) continue;\n\t\tvar first = -1, last = -1;\n\t\tfor(var j = (i<<10); j < ((i+1)<<10); ++j) {\n\t\t\tcaddr.c = j;\n\t\t\tvar cell = Array.isArray(ws) ? (ws[caddr.r]||[])[caddr.c] : ws[encode_cell(caddr)];\n\t\t\tif(cell) { if(first < 0) first = j; last = j; }\n\t\t}\n\t\tif(first < 0) continue;\n\t\t++ncolspan;\n\t\to.write_shift(4, first);\n\t\to.write_shift(4, last);\n\t}\n\n\tvar l = o.l;\n\to.l = lcs;\n\to.write_shift(4, ncolspan);\n\to.l = l;\n\n\treturn o.length > o.l ? o.slice(0, o.l) : o;\n}\nfunction write_row_header(ba, ws, range, R) {\n\tvar o = write_BrtRowHdr(R, range, ws);\n\tif((o.length > 17) || (ws['!rows']||[])[R]) write_record(ba, 0x0000 /* BrtRowHdr */, o);\n}\n\n/* [MS-XLSB] 2.4.820 BrtWsDim */\nvar parse_BrtWsDim = parse_UncheckedRfX;\nvar write_BrtWsDim = write_UncheckedRfX;\n\n/* [MS-XLSB] 2.4.821 BrtWsFmtInfo */\nfunction parse_BrtWsFmtInfo(/*::data, length*/) {\n}\n//function write_BrtWsFmtInfo(ws, o) { }\n\n/* [MS-XLSB] 2.4.823 BrtWsProp */\nfunction parse_BrtWsProp(data, length) {\n\tvar z = {};\n\tvar f = data[data.l]; ++data.l;\n\tz.above = !(f & 0x40);\n\tz.left  = !(f & 0x80);\n\t/* TODO: pull flags */\n\tdata.l += 18;\n\tz.name = parse_XLSBCodeName(data, length - 19);\n\treturn z;\n}\nfunction write_BrtWsProp(str, outl, o) {\n\tif(o == null) o = new_buf(84+4*str.length);\n\tvar f = 0xC0;\n\tif(outl) {\n\t\tif(outl.above) f &= ~0x40;\n\t\tif(outl.left)  f &= ~0x80;\n\t}\n\to.write_shift(1, f);\n\tfor(var i = 1; i < 3; ++i) o.write_shift(1,0);\n\twrite_BrtColor({auto:1}, o);\n\to.write_shift(-4,-1);\n\to.write_shift(-4,-1);\n\twrite_XLSBCodeName(str, o);\n\treturn o.slice(0, o.l);\n}\n\n/* [MS-XLSB] 2.4.306 BrtCellBlank */\nfunction parse_BrtCellBlank(data) {\n\tvar cell = parse_XLSBCell(data);\n\treturn [cell];\n}\nfunction write_BrtCellBlank(cell, ncell, o) {\n\tif(o == null) o = new_buf(8);\n\treturn write_XLSBCell(ncell, o);\n}\nfunction parse_BrtShortBlank(data) {\n\tvar cell = parse_XLSBShortCell(data);\n\treturn [cell];\n}\nfunction write_BrtShortBlank(cell, ncell, o) {\n\tif(o == null) o = new_buf(4);\n\treturn write_XLSBShortCell(ncell, o);\n}\n\n/* [MS-XLSB] 2.4.307 BrtCellBool */\nfunction parse_BrtCellBool(data) {\n\tvar cell = parse_XLSBCell(data);\n\tvar fBool = data.read_shift(1);\n\treturn [cell, fBool, 'b'];\n}\nfunction write_BrtCellBool(cell, ncell, o) {\n\tif(o == null) o = new_buf(9);\n\twrite_XLSBCell(ncell, o);\n\to.write_shift(1, cell.v ? 1 : 0);\n\treturn o;\n}\nfunction parse_BrtShortBool(data) {\n\tvar cell = parse_XLSBShortCell(data);\n\tvar fBool = data.read_shift(1);\n\treturn [cell, fBool, 'b'];\n}\nfunction write_BrtShortBool(cell, ncell, o) {\n\tif(o == null) o = new_buf(5);\n\twrite_XLSBShortCell(ncell, o);\n\to.write_shift(1, cell.v ? 1 : 0);\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.308 BrtCellError */\nfunction parse_BrtCellError(data) {\n\tvar cell = parse_XLSBCell(data);\n\tvar bError = data.read_shift(1);\n\treturn [cell, bError, 'e'];\n}\nfunction write_BrtCellError(cell, ncell, o) {\n\tif(o == null) o = new_buf(9);\n\twrite_XLSBCell(ncell, o);\n\to.write_shift(1, cell.v);\n\treturn o;\n}\nfunction parse_BrtShortError(data) {\n\tvar cell = parse_XLSBShortCell(data);\n\tvar bError = data.read_shift(1);\n\treturn [cell, bError, 'e'];\n}\nfunction write_BrtShortError(cell, ncell, o) {\n\tif(o == null) o = new_buf(8);\n\twrite_XLSBShortCell(ncell, o);\n\to.write_shift(1, cell.v);\n\to.write_shift(2, 0);\n\to.write_shift(1, 0);\n\treturn o;\n}\n\n\n/* [MS-XLSB] 2.4.311 BrtCellIsst */\nfunction parse_BrtCellIsst(data) {\n\tvar cell = parse_XLSBCell(data);\n\tvar isst = data.read_shift(4);\n\treturn [cell, isst, 's'];\n}\nfunction write_BrtCellIsst(cell, ncell, o) {\n\tif(o == null) o = new_buf(12);\n\twrite_XLSBCell(ncell, o);\n\to.write_shift(4, ncell.v);\n\treturn o;\n}\nfunction parse_BrtShortIsst(data) {\n\tvar cell = parse_XLSBShortCell(data);\n\tvar isst = data.read_shift(4);\n\treturn [cell, isst, 's'];\n}\nfunction write_BrtShortIsst(cell, ncell, o) {\n\tif(o == null) o = new_buf(8);\n\twrite_XLSBShortCell(ncell, o);\n\to.write_shift(4, ncell.v);\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.313 BrtCellReal */\nfunction parse_BrtCellReal(data) {\n\tvar cell = parse_XLSBCell(data);\n\tvar value = parse_Xnum(data);\n\treturn [cell, value, 'n'];\n}\nfunction write_BrtCellReal(cell, ncell, o) {\n\tif(o == null) o = new_buf(16);\n\twrite_XLSBCell(ncell, o);\n\twrite_Xnum(cell.v, o);\n\treturn o;\n}\nfunction parse_BrtShortReal(data) {\n\tvar cell = parse_XLSBShortCell(data);\n\tvar value = parse_Xnum(data);\n\treturn [cell, value, 'n'];\n}\nfunction write_BrtShortReal(cell, ncell, o) {\n\tif(o == null) o = new_buf(12);\n\twrite_XLSBShortCell(ncell, o);\n\twrite_Xnum(cell.v, o);\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.314 BrtCellRk */\nfunction parse_BrtCellRk(data) {\n\tvar cell = parse_XLSBCell(data);\n\tvar value = parse_RkNumber(data);\n\treturn [cell, value, 'n'];\n}\nfunction write_BrtCellRk(cell, ncell, o) {\n\tif(o == null) o = new_buf(12);\n\twrite_XLSBCell(ncell, o);\n\twrite_RkNumber(cell.v, o);\n\treturn o;\n}\nfunction parse_BrtShortRk(data) {\n\tvar cell = parse_XLSBShortCell(data);\n\tvar value = parse_RkNumber(data);\n\treturn [cell, value, 'n'];\n}\nfunction write_BrtShortRk(cell, ncell, o) {\n\tif(o == null) o = new_buf(8);\n\twrite_XLSBShortCell(ncell, o);\n\twrite_RkNumber(cell.v, o);\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.323 BrtCellRString */\nfunction parse_BrtCellRString(data) {\n\tvar cell = parse_XLSBCell(data);\n\tvar value = parse_RichStr(data);\n\treturn [cell, value, 'is'];\n}\n\n/* [MS-XLSB] 2.4.317 BrtCellSt */\nfunction parse_BrtCellSt(data) {\n\tvar cell = parse_XLSBCell(data);\n\tvar value = parse_XLWideString(data);\n\treturn [cell, value, 'str'];\n}\nfunction write_BrtCellSt(cell, ncell, o) {\n\tif(o == null) o = new_buf(12 + 4 * cell.v.length);\n\twrite_XLSBCell(ncell, o);\n\twrite_XLWideString(cell.v, o);\n\treturn o.length > o.l ? o.slice(0, o.l) : o;\n}\nfunction parse_BrtShortSt(data) {\n\tvar cell = parse_XLSBShortCell(data);\n\tvar value = parse_XLWideString(data);\n\treturn [cell, value, 'str'];\n}\nfunction write_BrtShortSt(cell, ncell, o) {\n\tif(o == null) o = new_buf(8 + 4 * cell.v.length);\n\twrite_XLSBShortCell(ncell, o);\n\twrite_XLWideString(cell.v, o);\n\treturn o.length > o.l ? o.slice(0, o.l) : o;\n}\n\n/* [MS-XLSB] 2.4.653 BrtFmlaBool */\nfunction parse_BrtFmlaBool(data, length, opts) {\n\tvar end = data.l + length;\n\tvar cell = parse_XLSBCell(data);\n\tcell.r = opts['!row'];\n\tvar value = data.read_shift(1);\n\tvar o = [cell, value, 'b'];\n\tif(opts.cellFormula) {\n\t\tdata.l += 2;\n\t\tvar formula = parse_XLSBCellParsedFormula(data, end - data.l, opts);\n\t\to[3] = stringify_formula(formula, null/*range*/, cell, opts.supbooks, opts);/* TODO */\n\t}\n\telse data.l = end;\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.654 BrtFmlaError */\nfunction parse_BrtFmlaError(data, length, opts) {\n\tvar end = data.l + length;\n\tvar cell = parse_XLSBCell(data);\n\tcell.r = opts['!row'];\n\tvar value = data.read_shift(1);\n\tvar o = [cell, value, 'e'];\n\tif(opts.cellFormula) {\n\t\tdata.l += 2;\n\t\tvar formula = parse_XLSBCellParsedFormula(data, end - data.l, opts);\n\t\to[3] = stringify_formula(formula, null/*range*/, cell, opts.supbooks, opts);/* TODO */\n\t}\n\telse data.l = end;\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.655 BrtFmlaNum */\nfunction parse_BrtFmlaNum(data, length, opts) {\n\tvar end = data.l + length;\n\tvar cell = parse_XLSBCell(data);\n\tcell.r = opts['!row'];\n\tvar value = parse_Xnum(data);\n\tvar o = [cell, value, 'n'];\n\tif(opts.cellFormula) {\n\t\tdata.l += 2;\n\t\tvar formula = parse_XLSBCellParsedFormula(data, end - data.l, opts);\n\t\to[3] = stringify_formula(formula, null/*range*/, cell, opts.supbooks, opts);/* TODO */\n\t}\n\telse data.l = end;\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.656 BrtFmlaString */\nfunction parse_BrtFmlaString(data, length, opts) {\n\tvar end = data.l + length;\n\tvar cell = parse_XLSBCell(data);\n\tcell.r = opts['!row'];\n\tvar value = parse_XLWideString(data);\n\tvar o = [cell, value, 'str'];\n\tif(opts.cellFormula) {\n\t\tdata.l += 2;\n\t\tvar formula = parse_XLSBCellParsedFormula(data, end - data.l, opts);\n\t\to[3] = stringify_formula(formula, null/*range*/, cell, opts.supbooks, opts);/* TODO */\n\t}\n\telse data.l = end;\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.682 BrtMergeCell */\nvar parse_BrtMergeCell = parse_UncheckedRfX;\nvar write_BrtMergeCell = write_UncheckedRfX;\n/* [MS-XLSB] 2.4.107 BrtBeginMergeCells */\nfunction write_BrtBeginMergeCells(cnt, o) {\n\tif(o == null) o = new_buf(4);\n\to.write_shift(4, cnt);\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.662 BrtHLink */\nfunction parse_BrtHLink(data, length/*::, opts*/) {\n\tvar end = data.l + length;\n\tvar rfx = parse_UncheckedRfX(data, 16);\n\tvar relId = parse_XLNullableWideString(data);\n\tvar loc = parse_XLWideString(data);\n\tvar tooltip = parse_XLWideString(data);\n\tvar display = parse_XLWideString(data);\n\tdata.l = end;\n\tvar o = ({rfx:rfx, relId:relId, loc:loc, display:display}/*:any*/);\n\tif(tooltip) o.Tooltip = tooltip;\n\treturn o;\n}\nfunction write_BrtHLink(l, rId) {\n\tvar o = new_buf(50+4*(l[1].Target.length + (l[1].Tooltip || \"\").length));\n\twrite_UncheckedRfX({s:decode_cell(l[0]), e:decode_cell(l[0])}, o);\n\twrite_RelID(\"rId\" + rId, o);\n\tvar locidx = l[1].Target.indexOf(\"#\");\n\tvar loc = locidx == -1 ? \"\" : l[1].Target.slice(locidx+1);\n\twrite_XLWideString(loc || \"\", o);\n\twrite_XLWideString(l[1].Tooltip || \"\", o);\n\twrite_XLWideString(\"\", o);\n\treturn o.slice(0, o.l);\n}\n\n/* [MS-XLSB] 2.4.692 BrtPane */\nfunction parse_BrtPane(/*data, length, opts*/) {\n}\n\n/* [MS-XLSB] 2.4.6 BrtArrFmla */\nfunction parse_BrtArrFmla(data, length, opts) {\n\tvar end = data.l + length;\n\tvar rfx = parse_RfX(data, 16);\n\tvar fAlwaysCalc = data.read_shift(1);\n\tvar o = [rfx]; o[2] = fAlwaysCalc;\n\tif(opts.cellFormula) {\n\t\tvar formula = parse_XLSBArrayParsedFormula(data, end - data.l, opts);\n\t\to[1] = formula;\n\t} else data.l = end;\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.750 BrtShrFmla */\nfunction parse_BrtShrFmla(data, length, opts) {\n\tvar end = data.l + length;\n\tvar rfx = parse_UncheckedRfX(data, 16);\n\tvar o = [rfx];\n\tif(opts.cellFormula) {\n\t\tvar formula = parse_XLSBSharedParsedFormula(data, end - data.l, opts);\n\t\to[1] = formula;\n\t\tdata.l = end;\n\t} else data.l = end;\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.323 BrtColInfo */\n/* TODO: once XLS ColInfo is set, combine the functions */\nfunction write_BrtColInfo(C/*:number*/, col, o) {\n\tif(o == null) o = new_buf(18);\n\tvar p = col_obj_w(C, col);\n\to.write_shift(-4, C);\n\to.write_shift(-4, C);\n\to.write_shift(4, (p.width || 10) * 256);\n\to.write_shift(4, 0/*ixfe*/); // style\n\tvar flags = 0;\n\tif(col.hidden) flags |= 0x01;\n\tif(typeof p.width == 'number') flags |= 0x02;\n\tif(col.level) flags |= (col.level << 8);\n\to.write_shift(2, flags); // bit flag\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.678 BrtMargins */\nvar BrtMarginKeys = [\"left\",\"right\",\"top\",\"bottom\",\"header\",\"footer\"];\nfunction parse_BrtMargins(data/*::, length, opts*/)/*:Margins*/ {\n\tvar margins = ({}/*:any*/);\n\tBrtMarginKeys.forEach(function(k) { margins[k] = parse_Xnum(data, 8); });\n\treturn margins;\n}\nfunction write_BrtMargins(margins/*:Margins*/, o) {\n\tif(o == null) o = new_buf(6*8);\n\tdefault_margins(margins);\n\tBrtMarginKeys.forEach(function(k) { write_Xnum((margins/*:any*/)[k], o); });\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.299 BrtBeginWsView */\nfunction parse_BrtBeginWsView(data/*::, length, opts*/) {\n\tvar f = data.read_shift(2);\n\tdata.l += 28;\n\treturn { RTL: f & 0x20 };\n}\nfunction write_BrtBeginWsView(ws, Workbook, o) {\n\tif(o == null) o = new_buf(30);\n\tvar f = 0x39c;\n\tif((((Workbook||{}).Views||[])[0]||{}).RTL) f |= 0x20;\n\to.write_shift(2, f); // bit flag\n\to.write_shift(4, 0);\n\to.write_shift(4, 0); // view first row\n\to.write_shift(4, 0); // view first col\n\to.write_shift(1, 0); // gridline color ICV\n\to.write_shift(1, 0);\n\to.write_shift(2, 0);\n\to.write_shift(2, 100); // zoom scale\n\to.write_shift(2, 0);\n\to.write_shift(2, 0);\n\to.write_shift(2, 0);\n\to.write_shift(4, 0); // workbook view id\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.309 BrtCellIgnoreEC */\nfunction write_BrtCellIgnoreEC(ref) {\n\tvar o = new_buf(24);\n\to.write_shift(4, 4);\n\to.write_shift(4, 1);\n\twrite_UncheckedRfX(ref, o);\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.748 BrtSheetProtection */\nfunction write_BrtSheetProtection(sp, o) {\n\tif(o == null) o = new_buf(16*4+2);\n\to.write_shift(2, sp.password ? crypto_CreatePasswordVerifier_Method1(sp.password) : 0);\n\to.write_shift(4, 1); // this record should not be written if no protection\n\t[\n\t\t[\"objects\",             false], // fObjects\n\t\t[\"scenarios\",           false], // fScenarios\n\t\t[\"formatCells\",          true], // fFormatCells\n\t\t[\"formatColumns\",        true], // fFormatColumns\n\t\t[\"formatRows\",           true], // fFormatRows\n\t\t[\"insertColumns\",        true], // fInsertColumns\n\t\t[\"insertRows\",           true], // fInsertRows\n\t\t[\"insertHyperlinks\",     true], // fInsertHyperlinks\n\t\t[\"deleteColumns\",        true], // fDeleteColumns\n\t\t[\"deleteRows\",           true], // fDeleteRows\n\t\t[\"selectLockedCells\",   false], // fSelLockedCells\n\t\t[\"sort\",                 true], // fSort\n\t\t[\"autoFilter\",           true], // fAutoFilter\n\t\t[\"pivotTables\",          true], // fPivotTables\n\t\t[\"selectUnlockedCells\", false]  // fSelUnlockedCells\n\t].forEach(function(n) {\n\t\t/*:: if(o == null) throw \"unreachable\"; */\n\t\tif(n[1]) o.write_shift(4, sp[n[0]] != null && !sp[n[0]] ? 1 : 0);\n\t\telse      o.write_shift(4, sp[n[0]] != null && sp[n[0]] ? 0 : 1);\n\t});\n\treturn o;\n}\n\nfunction parse_BrtDVal(/*data, length, opts*/) {\n}\nfunction parse_BrtDVal14(/*data, length, opts*/) {\n}\n/* [MS-XLSB] 2.1.7.61 Worksheet */\nfunction parse_ws_bin(data, _opts, idx, rels, wb/*:WBWBProps*/, themes, styles)/*:Worksheet*/ {\n\tif(!data) return data;\n\tvar opts = _opts || {};\n\tif(!rels) rels = {'!id':{}};\n\tif(DENSE != null && opts.dense == null) opts.dense = DENSE;\n\tvar s/*:Worksheet*/ = (opts.dense ? [] : {});\n\n\tvar ref;\n\tvar refguess = {s: {r:2000000, c:2000000}, e: {r:0, c:0} };\n\n\tvar state/*:Array<string>*/ = [];\n\tvar pass = false, end = false;\n\tvar row, p, cf, R, C, addr, sstr, rr, cell/*:Cell*/;\n\tvar merges/*:Array<Range>*/ = [];\n\topts.biff = 12;\n\topts['!row'] = 0;\n\n\tvar ai = 0, af = false;\n\n\tvar arrayf/*:Array<[Range, string]>*/ = [];\n\tvar sharedf = {};\n\tvar supbooks = opts.supbooks || /*::(*/wb/*:: :any)*/.supbooks || ([[]]/*:any*/);\n\tsupbooks.sharedf = sharedf;\n\tsupbooks.arrayf = arrayf;\n\tsupbooks.SheetNames = wb.SheetNames || wb.Sheets.map(function(x) { return x.name; });\n\tif(!opts.supbooks) {\n\t\topts.supbooks = supbooks;\n\t\tif(wb.Names) for(var i = 0; i < wb.Names.length; ++i) supbooks[0][i+1] = wb.Names[i];\n\t}\n\n\tvar colinfo/*:Array<ColInfo>*/ = [], rowinfo/*:Array<RowInfo>*/ = [];\n\tvar seencol = false;\n\n\tXLSBRecordEnum[0x0010] = { n:\"BrtShortReal\", f:parse_BrtShortReal };\n\n\tvar cm, vm;\n\n\trecordhopper(data, function ws_parse(val, RR, RT) {\n\t\tif(end) return;\n\t\tswitch(RT) {\n\t\t\tcase 0x0094: /* 'BrtWsDim' */\n\t\t\t\tref = val; break;\n\t\t\tcase 0x0000: /* 'BrtRowHdr' */\n\t\t\t\trow = val;\n\t\t\t\tif(opts.sheetRows && opts.sheetRows <= row.r) end=true;\n\t\t\t\trr = encode_row(R = row.r);\n\t\t\t\topts['!row'] = row.r;\n\t\t\t\tif(val.hidden || val.hpt || val.level != null) {\n\t\t\t\t\tif(val.hpt) val.hpx = pt2px(val.hpt);\n\t\t\t\t\trowinfo[val.r] = val;\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 0x0002: /* 'BrtCellRk' */\n\t\t\tcase 0x0003: /* 'BrtCellError' */\n\t\t\tcase 0x0004: /* 'BrtCellBool' */\n\t\t\tcase 0x0005: /* 'BrtCellReal' */\n\t\t\tcase 0x0006: /* 'BrtCellSt' */\n\t\t\tcase 0x0007: /* 'BrtCellIsst' */\n\t\t\tcase 0x0008: /* 'BrtFmlaString' */\n\t\t\tcase 0x0009: /* 'BrtFmlaNum' */\n\t\t\tcase 0x000A: /* 'BrtFmlaBool' */\n\t\t\tcase 0x000B: /* 'BrtFmlaError' */\n\t\t\tcase 0x000D: /* 'BrtShortRk' */\n\t\t\tcase 0x000E: /* 'BrtShortError' */\n\t\t\tcase 0x000F: /* 'BrtShortBool' */\n\t\t\tcase 0x0010: /* 'BrtShortReal' */\n\t\t\tcase 0x0011: /* 'BrtShortSt' */\n\t\t\tcase 0x0012: /* 'BrtShortIsst' */\n\t\t\tcase 0x003E: /* 'BrtCellRString' */\n\t\t\t\tp = ({t:val[2]}/*:any*/);\n\t\t\t\tswitch(val[2]) {\n\t\t\t\t\tcase 'n': p.v = val[1]; break;\n\t\t\t\t\tcase 's': sstr = strs[val[1]]; p.v = sstr.t; p.r = sstr.r; break;\n\t\t\t\t\tcase 'b': p.v = val[1] ? true : false; break;\n\t\t\t\t\tcase 'e': p.v = val[1]; if(opts.cellText !== false) p.w = BErr[p.v]; break;\n\t\t\t\t\tcase 'str': p.t = 's'; p.v = val[1]; break;\n\t\t\t\t\tcase 'is': p.t = 's'; p.v = val[1].t; break;\n\t\t\t\t}\n\t\t\t\tif((cf = styles.CellXf[val[0].iStyleRef])) safe_format(p,cf.numFmtId,null,opts, themes, styles);\n\t\t\t\tC = val[0].c == -1 ? C + 1 : val[0].c;\n\t\t\t\tif(opts.dense) { if(!s[R]) s[R] = []; s[R][C] = p; }\n\t\t\t\telse s[encode_col(C) + rr] = p;\n\t\t\t\tif(opts.cellFormula) {\n\t\t\t\t\taf = false;\n\t\t\t\t\tfor(ai = 0; ai < arrayf.length; ++ai) {\n\t\t\t\t\t\tvar aii = arrayf[ai];\n\t\t\t\t\t\tif(row.r >= aii[0].s.r && row.r <= aii[0].e.r)\n\t\t\t\t\t\t\tif(C >= aii[0].s.c && C <= aii[0].e.c) {\n\t\t\t\t\t\t\t\tp.F = encode_range(aii[0]); af = true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif(!af && val.length > 3) p.f = val[3];\n\t\t\t\t}\n\n\t\t\t\tif(refguess.s.r > row.r) refguess.s.r = row.r;\n\t\t\t\tif(refguess.s.c > C) refguess.s.c = C;\n\t\t\t\tif(refguess.e.r < row.r) refguess.e.r = row.r;\n\t\t\t\tif(refguess.e.c < C) refguess.e.c = C;\n\t\t\t\tif(opts.cellDates && cf && p.t == 'n' && fmt_is_date(table_fmt[cf.numFmtId])) {\n\t\t\t\t\tvar _d = SSF_parse_date_code(p.v); if(_d) { p.t = 'd'; p.v = new Date(_d.y, _d.m-1,_d.d,_d.H,_d.M,_d.S,_d.u); }\n\t\t\t\t}\n\t\t\t\tif(cm) {\n\t\t\t\t\tif(cm.type == 'XLDAPR') p.D = true;\n\t\t\t\t\tcm = void 0;\n\t\t\t\t}\n\t\t\t\tif(vm) vm = void 0;\n\t\t\t\tbreak;\n\n\t\t\tcase 0x0001: /* 'BrtCellBlank' */\n\t\t\tcase 0x000C: /* 'BrtShortBlank' */\n\t\t\t\tif(!opts.sheetStubs || pass) break;\n\t\t\t\tp = ({t:'z',v:void 0}/*:any*/);\n\t\t\t\tC = val[0].c == -1 ? C + 1 : val[0].c;\n\t\t\t\tif(opts.dense) { if(!s[R]) s[R] = []; s[R][C] = p; }\n\t\t\t\telse s[encode_col(C) + rr] = p;\n\t\t\t\tif(refguess.s.r > row.r) refguess.s.r = row.r;\n\t\t\t\tif(refguess.s.c > C) refguess.s.c = C;\n\t\t\t\tif(refguess.e.r < row.r) refguess.e.r = row.r;\n\t\t\t\tif(refguess.e.c < C) refguess.e.c = C;\n\t\t\t\tif(cm) {\n\t\t\t\t\tif(cm.type == 'XLDAPR') p.D = true;\n\t\t\t\t\tcm = void 0;\n\t\t\t\t}\n\t\t\t\tif(vm) vm = void 0;\n\t\t\t\tbreak;\n\n\t\t\tcase 0x00B0: /* 'BrtMergeCell' */\n\t\t\t\tmerges.push(val); break;\n\n\t\t\tcase 0x0031: { /* 'BrtCellMeta' */\n\t\t\t\tcm = ((opts.xlmeta||{}).Cell||[])[val-1];\n\t\t\t} break;\n\n\t\t\tcase 0x01EE: /* 'BrtHLink' */\n\t\t\t\tvar rel = rels['!id'][val.relId];\n\t\t\t\tif(rel) {\n\t\t\t\t\tval.Target = rel.Target;\n\t\t\t\t\tif(val.loc) val.Target += \"#\"+val.loc;\n\t\t\t\t\tval.Rel = rel;\n\t\t\t\t} else if(val.relId == '') {\n\t\t\t\t\tval.Target = \"#\" + val.loc;\n\t\t\t\t}\n\t\t\t\tfor(R=val.rfx.s.r;R<=val.rfx.e.r;++R) for(C=val.rfx.s.c;C<=val.rfx.e.c;++C) {\n\t\t\t\t\tif(opts.dense) {\n\t\t\t\t\t\tif(!s[R]) s[R] = [];\n\t\t\t\t\t\tif(!s[R][C]) s[R][C] = {t:'z',v:undefined};\n\t\t\t\t\t\ts[R][C].l = val;\n\t\t\t\t\t} else {\n\t\t\t\t\t\taddr = encode_cell({c:C,r:R});\n\t\t\t\t\t\tif(!s[addr]) s[addr] = {t:'z',v:undefined};\n\t\t\t\t\t\ts[addr].l = val;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 0x01AA: /* 'BrtArrFmla' */\n\t\t\t\tif(!opts.cellFormula) break;\n\t\t\t\tarrayf.push(val);\n\t\t\t\tcell = ((opts.dense ? s[R][C] : s[encode_col(C) + rr])/*:any*/);\n\t\t\t\tcell.f = stringify_formula(val[1], refguess, {r:row.r, c:C}, supbooks, opts);\n\t\t\t\tcell.F = encode_range(val[0]);\n\t\t\t\tbreak;\n\t\t\tcase 0x01AB: /* 'BrtShrFmla' */\n\t\t\t\tif(!opts.cellFormula) break;\n\t\t\t\tsharedf[encode_cell(val[0].s)] = val[1];\n\t\t\t\tcell = (opts.dense ? s[R][C] : s[encode_col(C) + rr]);\n\t\t\t\tcell.f = stringify_formula(val[1], refguess, {r:row.r, c:C}, supbooks, opts);\n\t\t\t\tbreak;\n\n\t\t\t/* identical to 'ColInfo' in XLS */\n\t\t\tcase 0x003C: /* 'BrtColInfo' */\n\t\t\t\tif(!opts.cellStyles) break;\n\t\t\t\twhile(val.e >= val.s) {\n\t\t\t\t\tcolinfo[val.e--] = { width: val.w/256, hidden: !!(val.flags & 0x01), level: val.level };\n\t\t\t\t\tif(!seencol) { seencol = true; find_mdw_colw(val.w/256); }\n\t\t\t\t\tprocess_col(colinfo[val.e+1]);\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 0x00A1: /* 'BrtBeginAFilter' */\n\t\t\t\ts['!autofilter'] = { ref:encode_range(val) };\n\t\t\t\tbreak;\n\n\t\t\tcase 0x01DC: /* 'BrtMargins' */\n\t\t\t\ts['!margins'] = val;\n\t\t\t\tbreak;\n\n\t\t\tcase 0x0093: /* 'BrtWsProp' */\n\t\t\t\tif(!wb.Sheets[idx]) wb.Sheets[idx] = {};\n\t\t\t\tif(val.name) wb.Sheets[idx].CodeName = val.name;\n\t\t\t\tif(val.above || val.left) s['!outline'] = { above: val.above, left: val.left };\n\t\t\t\tbreak;\n\n\t\t\tcase 0x0089: /* 'BrtBeginWsView' */\n\t\t\t\tif(!wb.Views) wb.Views = [{}];\n\t\t\t\tif(!wb.Views[0]) wb.Views[0] = {};\n\t\t\t\tif(val.RTL) wb.Views[0].RTL = true;\n\t\t\t\tbreak;\n\n\t\t\tcase 0x01E5: /* 'BrtWsFmtInfo' */\n\t\t\t\tbreak;\n\n\t\t\tcase 0x0040: /* 'BrtDVal' */\n\t\t\tcase 0x041D: /* 'BrtDVal14' */\n\t\t\t\tbreak;\n\n\t\t\tcase 0x0097: /* 'BrtPane' */\n\t\t\t\tbreak;\n\t\t\tcase 0x0098: /* 'BrtSel' */\n\t\t\tcase 0x00AF: /* 'BrtAFilterDateGroupItem' */\n\t\t\tcase 0x0284: /* 'BrtActiveX' */\n\t\t\tcase 0x0271: /* 'BrtBigName' */\n\t\t\tcase 0x0232: /* 'BrtBkHim' */\n\t\t\tcase 0x018C: /* 'BrtBrk' */\n\t\t\tcase 0x0458: /* 'BrtCFIcon' */\n\t\t\tcase 0x047A: /* 'BrtCFRuleExt' */\n\t\t\tcase 0x01D7: /* 'BrtCFVO' */\n\t\t\tcase 0x041A: /* 'BrtCFVO14' */\n\t\t\tcase 0x0289: /* 'BrtCellIgnoreEC' */\n\t\t\tcase 0x0451: /* 'BrtCellIgnoreEC14' */\n\t\t\tcase 0x024D: /* 'BrtCellSmartTagProperty' */\n\t\t\tcase 0x025F: /* 'BrtCellWatch' */\n\t\t\tcase 0x0234: /* 'BrtColor' */\n\t\t\tcase 0x041F: /* 'BrtColor14' */\n\t\t\tcase 0x00A8: /* 'BrtColorFilter' */\n\t\t\tcase 0x00AE: /* 'BrtCustomFilter' */\n\t\t\tcase 0x049C: /* 'BrtCustomFilter14' */\n\t\t\tcase 0x01F3: /* 'BrtDRef' */\n\t\t\tcase 0x01FB: /* 'BrtDXF' */\n\t\t\tcase 0x0226: /* 'BrtDrawing' */\n\t\t\tcase 0x00AB: /* 'BrtDynamicFilter' */\n\t\t\tcase 0x00A7: /* 'BrtFilter' */\n\t\t\tcase 0x0499: /* 'BrtFilter14' */\n\t\t\tcase 0x00A9: /* 'BrtIconFilter' */\n\t\t\tcase 0x049D: /* 'BrtIconFilter14' */\n\t\t\tcase 0x0227: /* 'BrtLegacyDrawing' */\n\t\t\tcase 0x0228: /* 'BrtLegacyDrawingHF' */\n\t\t\tcase 0x0295: /* 'BrtListPart' */\n\t\t\tcase 0x027F: /* 'BrtOleObject' */\n\t\t\tcase 0x01DE: /* 'BrtPageSetup' */\n\t\t\tcase 0x0219: /* 'BrtPhoneticInfo' */\n\t\t\tcase 0x01DD: /* 'BrtPrintOptions' */\n\t\t\tcase 0x0218: /* 'BrtRangeProtection' */\n\t\t\tcase 0x044F: /* 'BrtRangeProtection14' */\n\t\t\tcase 0x02A8: /* 'BrtRangeProtectionIso' */\n\t\t\tcase 0x0450: /* 'BrtRangeProtectionIso14' */\n\t\t\tcase 0x0400: /* 'BrtRwDescent' */\n\t\t\tcase 0x0297: /* 'BrtSheetCalcProp' */\n\t\t\tcase 0x0217: /* 'BrtSheetProtection' */\n\t\t\tcase 0x02A6: /* 'BrtSheetProtectionIso' */\n\t\t\tcase 0x01F8: /* 'BrtSlc' */\n\t\t\tcase 0x0413: /* 'BrtSparkline' */\n\t\t\tcase 0x01AC: /* 'BrtTable' */\n\t\t\tcase 0x00AA: /* 'BrtTop10Filter' */\n\t\t\tcase 0x0C00: /* 'BrtUid' */\n\t\t\tcase 0x0032: /* 'BrtValueMeta' */\n\t\t\tcase 0x0816: /* 'BrtWebExtension' */\n\t\t\tcase 0x0415: /* 'BrtWsFmtInfoEx14' */\n\t\t\t\tbreak;\n\n\t\t\tcase 0x0023: /* 'BrtFRTBegin' */\n\t\t\t\tpass = true; break;\n\t\t\tcase 0x0024: /* 'BrtFRTEnd' */\n\t\t\t\tpass = false; break;\n\t\t\tcase 0x0025: /* 'BrtACBegin' */\n\t\t\t\tstate.push(RT); pass = true; break;\n\t\t\tcase 0x0026: /* 'BrtACEnd' */\n\t\t\t\tstate.pop(); pass = false; break;\n\n\t\t\tdefault:\n\t\t\t\tif(RR.T){/* empty */}\n\t\t\t\telse if(!pass || opts.WTF) throw new Error(\"Unexpected record 0x\" + RT.toString(16));\n\t\t}\n\t}, opts);\n\n\tdelete opts.supbooks;\n\tdelete opts['!row'];\n\n\tif(!s[\"!ref\"] && (refguess.s.r < 2000000 || ref && (ref.e.r > 0 || ref.e.c > 0 || ref.s.r > 0 || ref.s.c > 0))) s[\"!ref\"] = encode_range(ref || refguess);\n\tif(opts.sheetRows && s[\"!ref\"]) {\n\t\tvar tmpref = safe_decode_range(s[\"!ref\"]);\n\t\tif(opts.sheetRows <= +tmpref.e.r) {\n\t\t\ttmpref.e.r = opts.sheetRows - 1;\n\t\t\tif(tmpref.e.r > refguess.e.r) tmpref.e.r = refguess.e.r;\n\t\t\tif(tmpref.e.r < tmpref.s.r) tmpref.s.r = tmpref.e.r;\n\t\t\tif(tmpref.e.c > refguess.e.c) tmpref.e.c = refguess.e.c;\n\t\t\tif(tmpref.e.c < tmpref.s.c) tmpref.s.c = tmpref.e.c;\n\t\t\ts[\"!fullref\"] = s[\"!ref\"];\n\t\t\ts[\"!ref\"] = encode_range(tmpref);\n\t\t}\n\t}\n\tif(merges.length > 0) s[\"!merges\"] = merges;\n\tif(colinfo.length > 0) s[\"!cols\"] = colinfo;\n\tif(rowinfo.length > 0) s[\"!rows\"] = rowinfo;\n\treturn s;\n}\n\n/* TODO: something useful -- this is a stub */\nfunction write_ws_bin_cell(ba/*:BufArray*/, cell/*:Cell*/, R/*:number*/, C/*:number*/, opts, ws/*:Worksheet*/, last_seen/*:boolean*/)/*:boolean*/ {\n\tif(cell.v === undefined) return false;\n\tvar vv = \"\";\n\tswitch(cell.t) {\n\t\tcase 'b': vv = cell.v ? \"1\" : \"0\"; break;\n\t\tcase 'd': // no BrtCellDate :(\n\t\t\tcell = dup(cell);\n\t\t\tcell.z = cell.z || table_fmt[14];\n\t\t\tcell.v = datenum(parseDate(cell.v)); cell.t = 'n';\n\t\t\tbreak;\n\t\t/* falls through */\n\t\tcase 'n': case 'e': vv = ''+cell.v; break;\n\t\tdefault: vv = cell.v; break;\n\t}\n\tvar o/*:any*/ = ({r:R, c:C}/*:any*/);\n\t/* TODO: cell style */\n\to.s = get_cell_style(opts.cellXfs, cell, opts);\n\tif(cell.l) ws['!links'].push([encode_cell(o), cell.l]);\n\tif(cell.c) ws['!comments'].push([encode_cell(o), cell.c]);\n\tswitch(cell.t) {\n\t\tcase 's': case 'str':\n\t\t\tif(opts.bookSST) {\n\t\t\t\tvv = get_sst_id(opts.Strings, (cell.v/*:any*/), opts.revStrings);\n\t\t\t\to.t = \"s\"; o.v = vv;\n\t\t\t\tif(last_seen) write_record(ba, 0x0012 /* BrtShortIsst */, write_BrtShortIsst(cell, o));\n\t\t\t\telse write_record(ba, 0x0007 /* BrtCellIsst */, write_BrtCellIsst(cell, o));\n\t\t\t} else {\n\t\t\t\to.t = \"str\";\n\t\t\t\tif(last_seen) write_record(ba, 0x0011 /* BrtShortSt */, write_BrtShortSt(cell, o));\n\t\t\t\telse write_record(ba, 0x0006 /* BrtCellSt */, write_BrtCellSt(cell, o));\n\t\t\t}\n\t\t\treturn true;\n\t\tcase 'n':\n\t\t\t/* TODO: determine threshold for Real vs RK */\n\t\t\tif(cell.v == (cell.v | 0) && cell.v > -1000 && cell.v < 1000) {\n\t\t\t\tif(last_seen) write_record(ba, 0x000D /* BrtShortRk */, write_BrtShortRk(cell, o));\n\t\t\t\telse write_record(ba, 0x0002 /* BrtCellRk */, write_BrtCellRk(cell, o));\n\t\t\t} else {\n\t\t\t\tif(last_seen) write_record(ba, 0x0010 /* BrtShortReal */, write_BrtShortReal(cell, o));\n\t\t\t\telse write_record(ba, 0x0005 /* BrtCellReal */, write_BrtCellReal(cell, o));\n\t\t\t} return true;\n\t\tcase 'b':\n\t\t\to.t = \"b\";\n\t\t\tif(last_seen) write_record(ba, 0x000F /* BrtShortBool */, write_BrtShortBool(cell, o));\n\t\t\telse write_record(ba, 0x0004 /* BrtCellBool */, write_BrtCellBool(cell, o));\n\t\t\treturn true;\n\t\tcase 'e':\n\t\t\to.t = \"e\";\n\t\t\tif(last_seen) write_record(ba, 0x000E /* BrtShortError */, write_BrtShortError(cell, o));\n\t\t\telse write_record(ba, 0x0003 /* BrtCellError */, write_BrtCellError(cell, o));\n\t\t\treturn true;\n\t}\n\tif(last_seen) write_record(ba, 0x000C /* BrtShortBlank */, write_BrtShortBlank(cell, o));\n\telse write_record(ba, 0x0001 /* BrtCellBlank */, write_BrtCellBlank(cell, o));\n\treturn true;\n}\n\nfunction write_CELLTABLE(ba, ws/*:Worksheet*/, idx/*:number*/, opts/*::, wb:Workbook*/) {\n\tvar range = safe_decode_range(ws['!ref'] || \"A1\"), ref, rr = \"\", cols/*:Array<string>*/ = [];\n\twrite_record(ba, 0x0091 /* BrtBeginSheetData */);\n\tvar dense = Array.isArray(ws);\n\tvar cap = range.e.r;\n\tif(ws['!rows']) cap = Math.max(range.e.r, ws['!rows'].length - 1);\n\tfor(var R = range.s.r; R <= cap; ++R) {\n\t\trr = encode_row(R);\n\t\t/* [ACCELLTABLE] */\n\t\t/* BrtRowHdr */\n\t\twrite_row_header(ba, ws, range, R);\n\t\tvar last_seen = false;\n\t\tif(R <= range.e.r) for(var C = range.s.c; C <= range.e.c; ++C) {\n\t\t\t/* *16384CELL */\n\t\t\tif(R === range.s.r) cols[C] = encode_col(C);\n\t\t\tref = cols[C] + rr;\n\t\t\tvar cell = dense ? (ws[R]||[])[C] : ws[ref];\n\t\t\tif(!cell) { last_seen = false; continue; }\n\t\t\t/* write cell */\n\t\t\tlast_seen = write_ws_bin_cell(ba, cell, R, C, opts, ws, last_seen);\n\t\t}\n\t}\n\twrite_record(ba, 0x0092 /* BrtEndSheetData */);\n}\n\nfunction write_MERGECELLS(ba, ws/*:Worksheet*/) {\n\tif(!ws || !ws['!merges']) return;\n\twrite_record(ba, 0x00B1 /* BrtBeginMergeCells */, write_BrtBeginMergeCells(ws['!merges'].length));\n\tws['!merges'].forEach(function(m) { write_record(ba, 0x00B0 /* BrtMergeCell */, write_BrtMergeCell(m)); });\n\twrite_record(ba, 0x00B2 /* BrtEndMergeCells */);\n}\n\nfunction write_COLINFOS(ba, ws/*:Worksheet*//*::, idx:number, opts, wb:Workbook*/) {\n\tif(!ws || !ws['!cols']) return;\n\twrite_record(ba, 0x0186 /* BrtBeginColInfos */);\n\tws['!cols'].forEach(function(m, i) { if(m) write_record(ba, 0x003C /* 'BrtColInfo' */, write_BrtColInfo(i, m)); });\n\twrite_record(ba, 0x0187 /* BrtEndColInfos */);\n}\n\nfunction write_IGNOREECS(ba, ws/*:Worksheet*/) {\n\tif(!ws || !ws['!ref']) return;\n\twrite_record(ba, 0x0288 /* BrtBeginCellIgnoreECs */);\n\twrite_record(ba, 0x0289 /* BrtCellIgnoreEC */, write_BrtCellIgnoreEC(safe_decode_range(ws['!ref'])));\n\twrite_record(ba, 0x028A /* BrtEndCellIgnoreECs */);\n}\n\nfunction write_HLINKS(ba, ws/*:Worksheet*/, rels) {\n\t/* *BrtHLink */\n\tws['!links'].forEach(function(l) {\n\t\tif(!l[1].Target) return;\n\t\tvar rId = add_rels(rels, -1, l[1].Target.replace(/#.*$/, \"\"), RELS.HLINK);\n\t\twrite_record(ba, 0x01EE /* BrtHLink */, write_BrtHLink(l, rId));\n\t});\n\tdelete ws['!links'];\n}\nfunction write_LEGACYDRAWING(ba, ws/*:Worksheet*/, idx/*:number*/, rels) {\n\t/* [BrtLegacyDrawing] */\n\tif(ws['!comments'].length > 0) {\n\t\tvar rId = add_rels(rels, -1, \"../drawings/vmlDrawing\" + (idx+1) + \".vml\", RELS.VML);\n\t\twrite_record(ba, 0x0227 /* BrtLegacyDrawing */, write_RelID(\"rId\" + rId));\n\t\tws['!legacy'] = rId;\n\t}\n}\n\nfunction write_AUTOFILTER(ba, ws, wb, idx) {\n\tif(!ws['!autofilter']) return;\n\tvar data = ws['!autofilter'];\n\tvar ref = typeof data.ref === \"string\" ? data.ref : encode_range(data.ref);\n\n\t/* Update FilterDatabase defined name for the worksheet */\n\tif(!wb.Workbook) wb.Workbook = ({Sheets:[]}/*:any*/);\n\tif(!wb.Workbook.Names) wb.Workbook.Names = [];\n\tvar names/*: Array<any> */ = wb.Workbook.Names;\n\tvar range = decode_range(ref);\n\tif(range.s.r == range.e.r) { range.e.r = decode_range(ws[\"!ref\"]).e.r; ref = encode_range(range); }\n\tfor(var i = 0; i < names.length; ++i) {\n\t\tvar name = names[i];\n\t\tif(name.Name != '_xlnm._FilterDatabase') continue;\n\t\tif(name.Sheet != idx) continue;\n\t\tname.Ref = \"'\" + wb.SheetNames[idx] + \"'!\" + ref; break;\n\t}\n\tif(i == names.length) names.push({ Name: '_xlnm._FilterDatabase', Sheet: idx, Ref: \"'\" + wb.SheetNames[idx] + \"'!\" + ref  });\n\n\twrite_record(ba, 0x00A1 /* BrtBeginAFilter */, write_UncheckedRfX(safe_decode_range(ref)));\n\t/* *FILTERCOLUMN */\n\t/* [SORTSTATE] */\n\t/* BrtEndAFilter */\n\twrite_record(ba, 0x00A2 /* BrtEndAFilter */);\n}\n\nfunction write_WSVIEWS2(ba, ws, Workbook) {\n\twrite_record(ba, 0x0085 /* BrtBeginWsViews */);\n\t{ /* 1*WSVIEW2 */\n\t\t/* [ACUID] */\n\t\twrite_record(ba, 0x0089 /* BrtBeginWsView */, write_BrtBeginWsView(ws, Workbook));\n\t\t/* [BrtPane] */\n\t\t/* *4BrtSel */\n\t\t/* *4SXSELECT */\n\t\t/* *FRT */\n\t\twrite_record(ba, 0x008A /* BrtEndWsView */);\n\t}\n\t/* *FRT */\n\twrite_record(ba, 0x0086 /* BrtEndWsViews */);\n}\n\nfunction write_WSFMTINFO(/*::ba, ws*/) {\n\t/* [ACWSFMTINFO] */\n\t// write_record(ba, 0x01E5 /* BrtWsFmtInfo */, write_BrtWsFmtInfo(ws));\n}\n\nfunction write_SHEETPROTECT(ba, ws) {\n\tif(!ws['!protect']) return;\n\t/* [BrtSheetProtectionIso] */\n\twrite_record(ba, 0x0217 /* BrtSheetProtection */, write_BrtSheetProtection(ws['!protect']));\n}\n\nfunction write_ws_bin(idx/*:number*/, opts, wb/*:Workbook*/, rels) {\n\tvar ba = buf_array();\n\tvar s = wb.SheetNames[idx], ws = wb.Sheets[s] || {};\n\tvar c/*:string*/ = s; try { if(wb && wb.Workbook) c = wb.Workbook.Sheets[idx].CodeName || c; } catch(e) {}\n\tvar r = safe_decode_range(ws['!ref'] || \"A1\");\n\tif(r.e.c > 0x3FFF || r.e.r > 0xFFFFF) {\n\t\tif(opts.WTF) throw new Error(\"Range \" + (ws['!ref'] || \"A1\") + \" exceeds format limit A1:XFD1048576\");\n\t\tr.e.c = Math.min(r.e.c, 0x3FFF);\n\t\tr.e.r = Math.min(r.e.c, 0xFFFFF);\n\t}\n\tws['!links'] = [];\n\t/* passed back to write_zip and removed there */\n\tws['!comments'] = [];\n\twrite_record(ba, 0x0081 /* BrtBeginSheet */);\n\tif(wb.vbaraw || ws['!outline']) write_record(ba, 0x0093 /* BrtWsProp */, write_BrtWsProp(c, ws['!outline']));\n\twrite_record(ba, 0x0094 /* BrtWsDim */, write_BrtWsDim(r));\n\twrite_WSVIEWS2(ba, ws, wb.Workbook);\n\twrite_WSFMTINFO(ba, ws);\n\twrite_COLINFOS(ba, ws, idx, opts, wb);\n\twrite_CELLTABLE(ba, ws, idx, opts, wb);\n\t/* [BrtSheetCalcProp] */\n\twrite_SHEETPROTECT(ba, ws);\n\t/* *([BrtRangeProtectionIso] BrtRangeProtection) */\n\t/* [SCENMAN] */\n\twrite_AUTOFILTER(ba, ws, wb, idx);\n\t/* [SORTSTATE] */\n\t/* [DCON] */\n\t/* [USERSHVIEWS] */\n\twrite_MERGECELLS(ba, ws);\n\t/* [BrtPhoneticInfo] */\n\t/* *CONDITIONALFORMATTING */\n\t/* [DVALS] */\n\twrite_HLINKS(ba, ws, rels);\n\t/* [BrtPrintOptions] */\n\tif(ws['!margins']) write_record(ba, 0x01DC /* BrtMargins */, write_BrtMargins(ws['!margins']));\n\t/* [BrtPageSetup] */\n\t/* [HEADERFOOTER] */\n\t/* [RWBRK] */\n\t/* [COLBRK] */\n\t/* *BrtBigName */\n\t/* [CELLWATCHES] */\n\tif(!opts || opts.ignoreEC || (opts.ignoreEC == (void 0))) write_IGNOREECS(ba, ws);\n\t/* [SMARTTAGS] */\n\t/* [BrtDrawing] */\n\twrite_LEGACYDRAWING(ba, ws, idx, rels);\n\t/* [BrtLegacyDrawingHF] */\n\t/* [BrtBkHim] */\n\t/* [OLEOBJECTS] */\n\t/* [ACTIVEXCONTROLS] */\n\t/* [WEBPUBITEMS] */\n\t/* [LISTPARTS] */\n\t/* FRTWORKSHEET */\n\twrite_record(ba, 0x0082 /* BrtEndSheet */);\n\treturn ba.end();\n}\nfunction parse_Cache(data/*:string*/)/*:[Array<number|string>, string, ?string]*/ {\n\tvar col/*:Array<number|string>*/ = [];\n\tvar num = data.match(/^<c:numCache>/);\n\tvar f;\n\n\t/* 21.2.2.150 pt CT_NumVal */\n\t(data.match(/<c:pt idx=\"(\\d*)\">(.*?)<\\/c:pt>/mg)||[]).forEach(function(pt) {\n\t\tvar q = pt.match(/<c:pt idx=\"(\\d*?)\"><c:v>(.*)<\\/c:v><\\/c:pt>/);\n\t\tif(!q) return;\n\t\tcol[+q[1]] = num ? +q[2] : q[2];\n\t});\n\n\t/* 21.2.2.71 formatCode CT_Xstring */\n\tvar nf = unescapexml((data.match(/<c:formatCode>([\\s\\S]*?)<\\/c:formatCode>/) || [\"\",\"General\"])[1]);\n\n\t(data.match(/<c:f>(.*?)<\\/c:f>/mg)||[]).forEach(function(F) { f = F.replace(/<.*?>/g,\"\"); });\n\n\treturn [col, nf, f];\n}\n\n/* 21.2 DrawingML - Charts */\nfunction parse_chart(data/*:?string*/, name/*:string*/, opts, rels, wb, csheet) {\n\tvar cs/*:Worksheet*/ = ((csheet || {\"!type\":\"chart\"})/*:any*/);\n\tif(!data) return csheet;\n\t/* 21.2.2.27 chart CT_Chart */\n\n\tvar C = 0, R = 0, col = \"A\";\n\tvar refguess = {s: {r:2000000, c:2000000}, e: {r:0, c:0} };\n\n\t/* 21.2.2.120 numCache CT_NumData */\n\t(data.match(/<c:numCache>[\\s\\S]*?<\\/c:numCache>/gm)||[]).forEach(function(nc) {\n\t\tvar cache = parse_Cache(nc);\n\t\trefguess.s.r = refguess.s.c = 0;\n\t\trefguess.e.c = C;\n\t\tcol = encode_col(C);\n\t\tcache[0].forEach(function(n,i) {\n\t\t\tcs[col + encode_row(i)] = {t:'n', v:n, z:cache[1] };\n\t\t\tR = i;\n\t\t});\n\t\tif(refguess.e.r < R) refguess.e.r = R;\n\t\t++C;\n\t});\n\tif(C > 0) cs[\"!ref\"] = encode_range(refguess);\n\treturn cs;\n}\n/* 18.3 Worksheets also covers Chartsheets */\nfunction parse_cs_xml(data/*:?string*/, opts, idx/*:number*/, rels, wb/*::, themes, styles*/)/*:Worksheet*/ {\n\tif(!data) return data;\n\t/* 18.3.1.12 chartsheet CT_ChartSheet */\n\tif(!rels) rels = {'!id':{}};\n\tvar s = ({'!type':\"chart\", '!drawel':null, '!rel':\"\"}/*:any*/);\n\tvar m;\n\n\t/* 18.3.1.83 sheetPr CT_ChartsheetPr */\n\tvar sheetPr = data.match(sheetprregex);\n\tif(sheetPr) parse_ws_xml_sheetpr(sheetPr[0], s, wb, idx);\n\n\t/* 18.3.1.36 drawing CT_Drawing */\n\tif((m = data.match(/drawing r:id=\"(.*?)\"/))) s['!rel'] = m[1];\n\n\tif(rels['!id'][s['!rel']]) s['!drawel'] = rels['!id'][s['!rel']];\n\treturn s;\n}\nfunction write_cs_xml(idx/*:number*/, opts, wb/*:Workbook*/, rels)/*:string*/ {\n\tvar o = [XML_HEADER, writextag('chartsheet', null, {\n\t\t'xmlns': XMLNS_main[0],\n\t\t'xmlns:r': XMLNS.r\n\t})];\n\to[o.length] = writextag(\"drawing\", null, {\"r:id\": \"rId1\"});\n\tadd_rels(rels, -1, \"../drawings/drawing\" + (idx+1) + \".xml\", RELS.DRAW);\n\tif(o.length>2) { o[o.length] = ('</chartsheet>'); o[1]=o[1].replace(\"/>\",\">\"); }\n\treturn o.join(\"\");\n}\n\n/* [MS-XLSB] 2.4.331 BrtCsProp */\nfunction parse_BrtCsProp(data, length/*:number*/) {\n\tdata.l += 10;\n\tvar name = parse_XLWideString(data, length - 10);\n\treturn { name: name };\n}\n\n/* [MS-XLSB] 2.1.7.7 Chart Sheet */\nfunction parse_cs_bin(data, opts, idx/*:number*/, rels, wb/*::, themes, styles*/)/*:Worksheet*/ {\n\tif(!data) return data;\n\tif(!rels) rels = {'!id':{}};\n\tvar s = {'!type':\"chart\", '!drawel':null, '!rel':\"\"};\n\tvar state/*:Array<string>*/ = [];\n\tvar pass = false;\n\trecordhopper(data, function cs_parse(val, R, RT) {\n\t\tswitch(RT) {\n\n\t\t\tcase 0x0226: /* 'BrtDrawing' */\n\t\t\t\ts['!rel'] = val; break;\n\n\t\t\tcase 0x028B: /* 'BrtCsProp' */\n\t\t\t\tif(!wb.Sheets[idx]) wb.Sheets[idx] = {};\n\t\t\t\tif(val.name) wb.Sheets[idx].CodeName = val.name;\n\t\t\t\tbreak;\n\n\t\t\tcase 0x0232: /* 'BrtBkHim' */\n\t\t\tcase 0x028C: /* 'BrtCsPageSetup' */\n\t\t\tcase 0x029D: /* 'BrtCsProtection' */\n\t\t\tcase 0x02A7: /* 'BrtCsProtectionIso' */\n\t\t\tcase 0x0227: /* 'BrtLegacyDrawing' */\n\t\t\tcase 0x0228: /* 'BrtLegacyDrawingHF' */\n\t\t\tcase 0x01DC: /* 'BrtMargins' */\n\t\t\tcase 0x0C00: /* 'BrtUid' */\n\t\t\t\tbreak;\n\n\t\t\tcase 0x0023: /* 'BrtFRTBegin' */\n\t\t\t\tpass = true; break;\n\t\t\tcase 0x0024: /* 'BrtFRTEnd' */\n\t\t\t\tpass = false; break;\n\t\t\tcase 0x0025: /* 'BrtACBegin' */\n\t\t\t\tstate.push(RT); break;\n\t\t\tcase 0x0026: /* 'BrtACEnd' */\n\t\t\t\tstate.pop(); break;\n\n\t\t\tdefault:\n\t\t\t\tif(R.T > 0) state.push(RT);\n\t\t\t\telse if(R.T < 0) state.pop();\n\t\t\t\telse if(!pass || opts.WTF) throw new Error(\"Unexpected record 0x\" + RT.toString(16));\n\t\t}\n\t}, opts);\n\n\tif(rels['!id'][s['!rel']]) s['!drawel'] = rels['!id'][s['!rel']];\n\treturn s;\n}\nfunction write_cs_bin(/*::idx:number, opts, wb:Workbook, rels*/) {\n\tvar ba = buf_array();\n\twrite_record(ba, 0x0081 /* BrtBeginSheet */);\n\t/* [BrtCsProp] */\n\t/* CSVIEWS */\n\t/* [[BrtCsProtectionIso] BrtCsProtection] */\n\t/* [USERCSVIEWS] */\n\t/* [BrtMargins] */\n\t/* [BrtCsPageSetup] */\n\t/* [HEADERFOOTER] */\n\t/* BrtDrawing */\n\t/* [BrtLegacyDrawing] */\n\t/* [BrtLegacyDrawingHF] */\n\t/* [BrtBkHim] */\n\t/* [WEBPUBITEMS] */\n\t/* FRTCHARTSHEET */\n\twrite_record(ba, 0x0082 /* BrtEndSheet */);\n\treturn ba.end();\n}\n/* 18.2.28 (CT_WorkbookProtection) Defaults */\nvar WBPropsDef = [\n\t['allowRefreshQuery',           false, \"bool\"],\n\t['autoCompressPictures',        true,  \"bool\"],\n\t['backupFile',                  false, \"bool\"],\n\t['checkCompatibility',          false, \"bool\"],\n\t['CodeName',                    ''],\n\t['date1904',                    false, \"bool\"],\n\t['defaultThemeVersion',         0,      \"int\"],\n\t['filterPrivacy',               false, \"bool\"],\n\t['hidePivotFieldList',          false, \"bool\"],\n\t['promptedSolutions',           false, \"bool\"],\n\t['publishItems',                false, \"bool\"],\n\t['refreshAllConnections',       false, \"bool\"],\n\t['saveExternalLinkValues',      true,  \"bool\"],\n\t['showBorderUnselectedTables',  true,  \"bool\"],\n\t['showInkAnnotation',           true,  \"bool\"],\n\t['showObjects',                 'all'],\n\t['showPivotChartFilter',        false, \"bool\"],\n\t['updateLinks', 'userSet']\n];\n\n/* 18.2.30 (CT_BookView) Defaults */\nvar WBViewDef = [\n\t['activeTab',                   0,      \"int\"],\n\t['autoFilterDateGrouping',      true,  \"bool\"],\n\t['firstSheet',                  0,      \"int\"],\n\t['minimized',                   false, \"bool\"],\n\t['showHorizontalScroll',        true,  \"bool\"],\n\t['showSheetTabs',               true,  \"bool\"],\n\t['showVerticalScroll',          true,  \"bool\"],\n\t['tabRatio',                    600,    \"int\"],\n\t['visibility',                  'visible']\n\t//window{Height,Width}, {x,y}Window\n];\n\n/* 18.2.19 (CT_Sheet) Defaults */\nvar SheetDef = [\n\t//['state', 'visible']\n];\n\n/* 18.2.2  (CT_CalcPr) Defaults */\nvar CalcPrDef = [\n\t['calcCompleted', 'true'],\n\t['calcMode', 'auto'],\n\t['calcOnSave', 'true'],\n\t['concurrentCalc', 'true'],\n\t['fullCalcOnLoad', 'false'],\n\t['fullPrecision', 'true'],\n\t['iterate', 'false'],\n\t['iterateCount', '100'],\n\t['iterateDelta', '0.001'],\n\t['refMode', 'A1']\n];\n\n/* 18.2.3 (CT_CustomWorkbookView) Defaults */\n/*var CustomWBViewDef = [\n\t['autoUpdate', 'false'],\n\t['changesSavedWin', 'false'],\n\t['includeHiddenRowCol', 'true'],\n\t['includePrintSettings', 'true'],\n\t['maximized', 'false'],\n\t['minimized', 'false'],\n\t['onlySync', 'false'],\n\t['personalView', 'false'],\n\t['showComments', 'commIndicator'],\n\t['showFormulaBar', 'true'],\n\t['showHorizontalScroll', 'true'],\n\t['showObjects', 'all'],\n\t['showSheetTabs', 'true'],\n\t['showStatusbar', 'true'],\n\t['showVerticalScroll', 'true'],\n\t['tabRatio', '600'],\n\t['xWindow', '0'],\n\t['yWindow', '0']\n];*/\n\nfunction push_defaults_array(target, defaults) {\n\tfor(var j = 0; j != target.length; ++j) { var w = target[j];\n\t\tfor(var i=0; i != defaults.length; ++i) { var z = defaults[i];\n\t\t\tif(w[z[0]] == null) w[z[0]] = z[1];\n\t\t\telse switch(z[2]) {\n\t\t\tcase \"bool\": if(typeof w[z[0]] == \"string\") w[z[0]] = parsexmlbool(w[z[0]]); break;\n\t\t\tcase \"int\": if(typeof w[z[0]] == \"string\") w[z[0]] = parseInt(w[z[0]], 10); break;\n\t\t\t}\n\t\t}\n\t}\n}\nfunction push_defaults(target, defaults) {\n\tfor(var i = 0; i != defaults.length; ++i) { var z = defaults[i];\n\t\tif(target[z[0]] == null) target[z[0]] = z[1];\n\t\telse switch(z[2]) {\n\t\t\tcase \"bool\": if(typeof target[z[0]] == \"string\") target[z[0]] = parsexmlbool(target[z[0]]); break;\n\t\t\tcase \"int\": if(typeof target[z[0]] == \"string\") target[z[0]] = parseInt(target[z[0]], 10); break;\n\t\t}\n\t}\n}\n\nfunction parse_wb_defaults(wb) {\n\tpush_defaults(wb.WBProps, WBPropsDef);\n\tpush_defaults(wb.CalcPr, CalcPrDef);\n\n\tpush_defaults_array(wb.WBView, WBViewDef);\n\tpush_defaults_array(wb.Sheets, SheetDef);\n\n\t_ssfopts.date1904 = parsexmlbool(wb.WBProps.date1904);\n}\n\nfunction safe1904(wb/*:Workbook*/)/*:string*/ {\n\t/* TODO: store date1904 somewhere else */\n\tif(!wb.Workbook) return \"false\";\n\tif(!wb.Workbook.WBProps) return \"false\";\n\treturn parsexmlbool(wb.Workbook.WBProps.date1904) ? \"true\" : \"false\";\n}\n\nvar badchars = /*#__PURE__*/\"][*?\\/\\\\\".split(\"\");\nfunction check_ws_name(n/*:string*/, safe/*:?boolean*/)/*:boolean*/ {\n\tif(n.length > 31) { if(safe) return false; throw new Error(\"Sheet names cannot exceed 31 chars\"); }\n\tvar _good = true;\n\tbadchars.forEach(function(c) {\n\t\tif(n.indexOf(c) == -1) return;\n\t\tif(!safe) throw new Error(\"Sheet name cannot contain : \\\\ / ? * [ ]\");\n\t\t_good = false;\n\t});\n\treturn _good;\n}\nfunction check_wb_names(N, S, codes) {\n\tN.forEach(function(n,i) {\n\t\tcheck_ws_name(n);\n\t\tfor(var j = 0; j < i; ++j) if(n == N[j]) throw new Error(\"Duplicate Sheet Name: \" + n);\n\t\tif(codes) {\n\t\t\tvar cn = (S && S[i] && S[i].CodeName) || n;\n\t\t\tif(cn.charCodeAt(0) == 95 && cn.length > 22) throw new Error(\"Bad Code Name: Worksheet\" + cn);\n\t\t}\n\t});\n}\nfunction check_wb(wb) {\n\tif(!wb || !wb.SheetNames || !wb.Sheets) throw new Error(\"Invalid Workbook\");\n\tif(!wb.SheetNames.length) throw new Error(\"Workbook is empty\");\n\tvar Sheets = (wb.Workbook && wb.Workbook.Sheets) || [];\n\tcheck_wb_names(wb.SheetNames, Sheets, !!wb.vbaraw);\n\tfor(var i = 0; i < wb.SheetNames.length; ++i) check_ws(wb.Sheets[wb.SheetNames[i]], wb.SheetNames[i], i);\n\t/* TODO: validate workbook */\n}\n/* 18.2 Workbook */\nvar wbnsregex = /<\\w+:workbook/;\nfunction parse_wb_xml(data, opts)/*:WorkbookFile*/ {\n\tif(!data) throw new Error(\"Could not find file\");\n\tvar wb = /*::(*/{ AppVersion:{}, WBProps:{}, WBView:[], Sheets:[], CalcPr:{}, Names:[], xmlns: \"\" }/*::)*/;\n\tvar pass = false, xmlns = \"xmlns\";\n\tvar dname = {}, dnstart = 0;\n\tdata.replace(tagregex, function xml_wb(x, idx) {\n\t\tvar y/*:any*/ = parsexmltag(x);\n\t\tswitch(strip_ns(y[0])) {\n\t\t\tcase '<?xml': break;\n\n\t\t\t/* 18.2.27 workbook CT_Workbook 1 */\n\t\t\tcase '<workbook':\n\t\t\t\tif(x.match(wbnsregex)) xmlns = \"xmlns\" + x.match(/<(\\w+):/)[1];\n\t\t\t\twb.xmlns = y[xmlns];\n\t\t\t\tbreak;\n\t\t\tcase '</workbook>': break;\n\n\t\t\t/* 18.2.13 fileVersion CT_FileVersion ? */\n\t\t\tcase '<fileVersion': delete y[0]; wb.AppVersion = y; break;\n\t\t\tcase '<fileVersion/>': case '</fileVersion>': break;\n\n\t\t\t/* 18.2.12 fileSharing CT_FileSharing ? */\n\t\t\tcase '<fileSharing':\n\t\t\t\tbreak;\n\t\t\tcase '<fileSharing/>': break;\n\n\t\t\t/* 18.2.28 workbookPr CT_WorkbookPr ? */\n\t\t\tcase '<workbookPr':\n\t\t\tcase '<workbookPr/>':\n\t\t\t\tWBPropsDef.forEach(function(w) {\n\t\t\t\t\tif(y[w[0]] == null) return;\n\t\t\t\t\tswitch(w[2]) {\n\t\t\t\t\t\tcase \"bool\": wb.WBProps[w[0]] = parsexmlbool(y[w[0]]); break;\n\t\t\t\t\t\tcase \"int\": wb.WBProps[w[0]] = parseInt(y[w[0]], 10); break;\n\t\t\t\t\t\tdefault: wb.WBProps[w[0]] = y[w[0]];\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tif(y.codeName) wb.WBProps.CodeName = utf8read(y.codeName);\n\t\t\t\tbreak;\n\t\t\tcase '</workbookPr>': break;\n\n\t\t\t/* 18.2.29 workbookProtection CT_WorkbookProtection ? */\n\t\t\tcase '<workbookProtection':\n\t\t\t\tbreak;\n\t\t\tcase '<workbookProtection/>': break;\n\n\t\t\t/* 18.2.1  bookViews CT_BookViews ? */\n\t\t\tcase '<bookViews': case '<bookViews>': case '</bookViews>': break;\n\t\t\t/* 18.2.30   workbookView CT_BookView + */\n\t\t\tcase '<workbookView': case '<workbookView/>': delete y[0]; wb.WBView.push(y); break;\n\t\t\tcase '</workbookView>': break;\n\n\t\t\t/* 18.2.20 sheets CT_Sheets 1 */\n\t\t\tcase '<sheets': case '<sheets>': case '</sheets>': break; // aggregate sheet\n\t\t\t/* 18.2.19   sheet CT_Sheet + */\n\t\t\tcase '<sheet':\n\t\t\t\tswitch(y.state) {\n\t\t\t\t\tcase \"hidden\": y.Hidden = 1; break;\n\t\t\t\t\tcase \"veryHidden\": y.Hidden = 2; break;\n\t\t\t\t\tdefault: y.Hidden = 0;\n\t\t\t\t}\n\t\t\t\tdelete y.state;\n\t\t\t\ty.name = unescapexml(utf8read(y.name));\n\t\t\t\tdelete y[0]; wb.Sheets.push(y); break;\n\t\t\tcase '</sheet>': break;\n\n\t\t\t/* 18.2.15 functionGroups CT_FunctionGroups ? */\n\t\t\tcase '<functionGroups': case '<functionGroups/>': break;\n\t\t\t/* 18.2.14   functionGroup CT_FunctionGroup + */\n\t\t\tcase '<functionGroup': break;\n\n\t\t\t/* 18.2.9  externalReferences CT_ExternalReferences ? */\n\t\t\tcase '<externalReferences': case '</externalReferences>': case '<externalReferences>': break;\n\t\t\t/* 18.2.8    externalReference CT_ExternalReference + */\n\t\t\tcase '<externalReference': break;\n\n\t\t\t/* 18.2.6  definedNames CT_DefinedNames ? */\n\t\t\tcase '<definedNames/>': break;\n\t\t\tcase '<definedNames>': case '<definedNames': pass=true; break;\n\t\t\tcase '</definedNames>': pass=false; break;\n\t\t\t/* 18.2.5    definedName CT_DefinedName + */\n\t\t\tcase '<definedName': {\n\t\t\t\tdname = {};\n\t\t\t\tdname.Name = utf8read(y.name);\n\t\t\t\tif(y.comment) dname.Comment = y.comment;\n\t\t\t\tif(y.localSheetId) dname.Sheet = +y.localSheetId;\n\t\t\t\tif(parsexmlbool(y.hidden||\"0\")) dname.Hidden = true;\n\t\t\t\tdnstart = idx + x.length;\n\t\t\t}\tbreak;\n\t\t\tcase '</definedName>': {\n\t\t\t\tdname.Ref = unescapexml(utf8read(data.slice(dnstart, idx)));\n\t\t\t\twb.Names.push(dname);\n\t\t\t} break;\n\t\t\tcase '<definedName/>': break;\n\n\t\t\t/* 18.2.2  calcPr CT_CalcPr ? */\n\t\t\tcase '<calcPr': delete y[0]; wb.CalcPr = y; break;\n\t\t\tcase '<calcPr/>': delete y[0]; wb.CalcPr = y; break;\n\t\t\tcase '</calcPr>': break;\n\n\t\t\t/* 18.2.16 oleSize CT_OleSize ? (ref required) */\n\t\t\tcase '<oleSize': break;\n\n\t\t\t/* 18.2.4  customWorkbookViews CT_CustomWorkbookViews ? */\n\t\t\tcase '<customWorkbookViews>': case '</customWorkbookViews>': case '<customWorkbookViews': break;\n\t\t\t/* 18.2.3  customWorkbookView CT_CustomWorkbookView + */\n\t\t\tcase '<customWorkbookView': case '</customWorkbookView>': break;\n\n\t\t\t/* 18.2.18 pivotCaches CT_PivotCaches ? */\n\t\t\tcase '<pivotCaches>': case '</pivotCaches>': case '<pivotCaches': break;\n\t\t\t/* 18.2.17 pivotCache CT_PivotCache ? */\n\t\t\tcase '<pivotCache': break;\n\n\t\t\t/* 18.2.21 smartTagPr CT_SmartTagPr ? */\n\t\t\tcase '<smartTagPr': case '<smartTagPr/>': break;\n\n\t\t\t/* 18.2.23 smartTagTypes CT_SmartTagTypes ? */\n\t\t\tcase '<smartTagTypes': case '<smartTagTypes>': case '</smartTagTypes>': break;\n\t\t\t/* 18.2.22 smartTagType CT_SmartTagType ? */\n\t\t\tcase '<smartTagType': break;\n\n\t\t\t/* 18.2.24 webPublishing CT_WebPublishing ? */\n\t\t\tcase '<webPublishing': case '<webPublishing/>': break;\n\n\t\t\t/* 18.2.11 fileRecoveryPr CT_FileRecoveryPr ? */\n\t\t\tcase '<fileRecoveryPr': case '<fileRecoveryPr/>': break;\n\n\t\t\t/* 18.2.26 webPublishObjects CT_WebPublishObjects ? */\n\t\t\tcase '<webPublishObjects>': case '<webPublishObjects': case '</webPublishObjects>': break;\n\t\t\t/* 18.2.25 webPublishObject CT_WebPublishObject ? */\n\t\t\tcase '<webPublishObject': break;\n\n\t\t\t/* 18.2.10 extLst CT_ExtensionList ? */\n\t\t\tcase '<extLst': case '<extLst>': case '</extLst>': case '<extLst/>': break;\n\t\t\t/* 18.2.7  ext CT_Extension + */\n\t\t\tcase '<ext': pass=true; break; //TODO: check with versions of excel\n\t\t\tcase '</ext>': pass=false; break;\n\n\t\t\t/* Others */\n\t\t\tcase '<ArchID': break;\n\t\t\tcase '<AlternateContent':\n\t\t\tcase '<AlternateContent>': pass=true; break;\n\t\t\tcase '</AlternateContent>': pass=false; break;\n\n\t\t\t/* TODO */\n\t\t\tcase '<revisionPtr': break;\n\n\t\t\tdefault: if(!pass && opts.WTF) throw new Error('unrecognized ' + y[0] + ' in workbook');\n\t\t}\n\t\treturn x;\n\t});\n\tif(XMLNS_main.indexOf(wb.xmlns) === -1) throw new Error(\"Unknown Namespace: \" + wb.xmlns);\n\n\tparse_wb_defaults(wb);\n\n\treturn wb;\n}\n\nfunction write_wb_xml(wb/*:Workbook*//*::, opts:?WriteOpts*/)/*:string*/ {\n\tvar o = [XML_HEADER];\n\to[o.length] = writextag('workbook', null, {\n\t\t'xmlns': XMLNS_main[0],\n\t\t//'xmlns:mx': XMLNS.mx,\n\t\t//'xmlns:s': XMLNS_main[0],\n\t\t'xmlns:r': XMLNS.r\n\t});\n\n\tvar write_names = (wb.Workbook && (wb.Workbook.Names||[]).length > 0);\n\n\t/* fileVersion */\n\t/* fileSharing */\n\n\tvar workbookPr/*:any*/ = ({codeName:\"ThisWorkbook\"}/*:any*/);\n\tif(wb.Workbook && wb.Workbook.WBProps) {\n\t\tWBPropsDef.forEach(function(x) {\n\t\t\t/*:: if(!wb.Workbook || !wb.Workbook.WBProps) throw \"unreachable\"; */\n\t\t\tif((wb.Workbook.WBProps[x[0]]/*:any*/) == null) return;\n\t\t\tif((wb.Workbook.WBProps[x[0]]/*:any*/) == x[1]) return;\n\t\t\tworkbookPr[x[0]] = (wb.Workbook.WBProps[x[0]]/*:any*/);\n\t\t});\n\t\t/*:: if(!wb.Workbook || !wb.Workbook.WBProps) throw \"unreachable\"; */\n\t\tif(wb.Workbook.WBProps.CodeName) { workbookPr.codeName = wb.Workbook.WBProps.CodeName; delete workbookPr.CodeName; }\n\t}\n\to[o.length] = (writextag('workbookPr', null, workbookPr));\n\n\t/* workbookProtection */\n\n\tvar sheets = wb.Workbook && wb.Workbook.Sheets || [];\n\tvar i = 0;\n\n\t/* bookViews only written if first worksheet is hidden */\n\tif(sheets && sheets[0] && !!sheets[0].Hidden) {\n\t\to[o.length] = \"<bookViews>\";\n\t\tfor(i = 0; i != wb.SheetNames.length; ++i) {\n\t\t\tif(!sheets[i]) break;\n\t\t\tif(!sheets[i].Hidden) break;\n\t\t}\n\t\tif(i == wb.SheetNames.length) i = 0;\n\t\to[o.length] = '<workbookView firstSheet=\"' + i + '\" activeTab=\"' + i + '\"/>';\n\t\to[o.length] = \"</bookViews>\";\n\t}\n\n\to[o.length] = \"<sheets>\";\n\tfor(i = 0; i != wb.SheetNames.length; ++i) {\n\t\tvar sht = ({name:escapexml(wb.SheetNames[i].slice(0,31))}/*:any*/);\n\t\tsht.sheetId = \"\"+(i+1);\n\t\tsht[\"r:id\"] = \"rId\"+(i+1);\n\t\tif(sheets[i]) switch(sheets[i].Hidden) {\n\t\t\tcase 1: sht.state = \"hidden\"; break;\n\t\t\tcase 2: sht.state = \"veryHidden\"; break;\n\t\t}\n\t\to[o.length] = (writextag('sheet',null,sht));\n\t}\n\to[o.length] = \"</sheets>\";\n\n\t/* functionGroups */\n\t/* externalReferences */\n\n\tif(write_names) {\n\t\to[o.length] = \"<definedNames>\";\n\t\tif(wb.Workbook && wb.Workbook.Names) wb.Workbook.Names.forEach(function(n) {\n\t\t\tvar d/*:any*/ = {name:n.Name};\n\t\t\tif(n.Comment) d.comment = n.Comment;\n\t\t\tif(n.Sheet != null) d.localSheetId = \"\"+n.Sheet;\n\t\t\tif(n.Hidden) d.hidden = \"1\";\n\t\t\tif(!n.Ref) return;\n\t\t\to[o.length] = writextag('definedName', escapexml(n.Ref), d);\n\t\t});\n\t\to[o.length] = \"</definedNames>\";\n\t}\n\n\t/* calcPr */\n\t/* oleSize */\n\t/* customWorkbookViews */\n\t/* pivotCaches */\n\t/* smartTagPr */\n\t/* smartTagTypes */\n\t/* webPublishing */\n\t/* fileRecoveryPr */\n\t/* webPublishObjects */\n\t/* extLst */\n\n\tif(o.length>2){ o[o.length] = '</workbook>'; o[1]=o[1].replace(\"/>\",\">\"); }\n\treturn o.join(\"\");\n}\n/* [MS-XLSB] 2.4.304 BrtBundleSh */\nfunction parse_BrtBundleSh(data, length/*:number*/) {\n\tvar z = {};\n\tz.Hidden = data.read_shift(4); //hsState ST_SheetState\n\tz.iTabID = data.read_shift(4);\n\tz.strRelID = parse_RelID(data,length-8);\n\tz.name = parse_XLWideString(data);\n\treturn z;\n}\nfunction write_BrtBundleSh(data, o) {\n\tif(!o) o = new_buf(127);\n\to.write_shift(4, data.Hidden);\n\to.write_shift(4, data.iTabID);\n\twrite_RelID(data.strRelID, o);\n\twrite_XLWideString(data.name.slice(0,31), o);\n\treturn o.length > o.l ? o.slice(0, o.l) : o;\n}\n\n/* [MS-XLSB] 2.4.815 BrtWbProp */\nfunction parse_BrtWbProp(data, length)/*:WBProps*/ {\n\tvar o/*:WBProps*/ = ({}/*:any*/);\n\tvar flags = data.read_shift(4);\n\to.defaultThemeVersion = data.read_shift(4);\n\tvar strName = (length > 8) ? parse_XLWideString(data) : \"\";\n\tif(strName.length > 0) o.CodeName = strName;\n\to.autoCompressPictures = !!(flags & 0x10000);\n\to.backupFile = !!(flags & 0x40);\n\to.checkCompatibility = !!(flags & 0x1000);\n\to.date1904 = !!(flags & 0x01);\n\to.filterPrivacy = !!(flags & 0x08);\n\to.hidePivotFieldList = !!(flags & 0x400);\n\to.promptedSolutions = !!(flags & 0x10);\n\to.publishItems = !!(flags & 0x800);\n\to.refreshAllConnections = !!(flags & 0x40000);\n\to.saveExternalLinkValues = !!(flags & 0x80);\n\to.showBorderUnselectedTables = !!(flags & 0x04);\n\to.showInkAnnotation = !!(flags & 0x20);\n\to.showObjects = [\"all\", \"placeholders\", \"none\"][(flags >> 13) & 0x03];\n\to.showPivotChartFilter = !!(flags & 0x8000);\n\to.updateLinks = [\"userSet\", \"never\", \"always\"][(flags >> 8) & 0x03];\n\treturn o;\n}\nfunction write_BrtWbProp(data/*:?WBProps*/, o) {\n\tif(!o) o = new_buf(72);\n\tvar flags = 0;\n\tif(data) {\n\t\t/* TODO: mirror parse_BrtWbProp fields */\n\t\tif(data.filterPrivacy) flags |= 0x08;\n\t}\n\to.write_shift(4, flags);\n\to.write_shift(4, 0);\n\twrite_XLSBCodeName(data && data.CodeName || \"ThisWorkbook\", o);\n\treturn o.slice(0, o.l);\n}\n\nfunction parse_BrtFRTArchID$(data, length) {\n\tvar o = {};\n\tdata.read_shift(4);\n\to.ArchID = data.read_shift(4);\n\tdata.l += length - 8;\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.687 BrtName */\nfunction parse_BrtName(data, length, opts) {\n\tvar end = data.l + length;\n\tdata.l += 4; //var flags = data.read_shift(4);\n\tdata.l += 1; //var chKey = data.read_shift(1);\n\tvar itab = data.read_shift(4);\n\tvar name = parse_XLNameWideString(data);\n\tvar formula = parse_XLSBNameParsedFormula(data, 0, opts);\n\tvar comment = parse_XLNullableWideString(data);\n\t//if(0 /* fProc */) {\n\t\t// unusedstring1: XLNullableWideString\n\t\t// description: XLNullableWideString\n\t\t// helpTopic: XLNullableWideString\n\t\t// unusedstring2: XLNullableWideString\n\t//}\n\tdata.l = end;\n\tvar out = ({Name:name, Ptg:formula}/*:any*/);\n\tif(itab < 0xFFFFFFF) out.Sheet = itab;\n\tif(comment) out.Comment = comment;\n\treturn out;\n}\n\n/* [MS-XLSB] 2.1.7.61 Workbook */\nfunction parse_wb_bin(data, opts)/*:WorkbookFile*/ {\n\tvar wb = { AppVersion:{}, WBProps:{}, WBView:[], Sheets:[], CalcPr:{}, xmlns: \"\" };\n\tvar state/*:Array<string>*/ = [];\n\tvar pass = false;\n\n\tif(!opts) opts = {};\n\topts.biff = 12;\n\n\tvar Names = [];\n\tvar supbooks = ([[]]/*:any*/);\n\tsupbooks.SheetNames = [];\n\tsupbooks.XTI = [];\n\n\tXLSBRecordEnum[0x0010] = { n:\"BrtFRTArchID$\", f:parse_BrtFRTArchID$ };\n\n\trecordhopper(data, function hopper_wb(val, R, RT) {\n\t\tswitch(RT) {\n\t\t\tcase 0x009C: /* 'BrtBundleSh' */\n\t\t\t\tsupbooks.SheetNames.push(val.name);\n\t\t\t\twb.Sheets.push(val); break;\n\n\t\t\tcase 0x0099: /* 'BrtWbProp' */\n\t\t\t\twb.WBProps = val; break;\n\n\t\t\tcase 0x0027: /* 'BrtName' */\n\t\t\t\tif(val.Sheet != null) opts.SID = val.Sheet;\n\t\t\t\tval.Ref = stringify_formula(val.Ptg, null, null, supbooks, opts);\n\t\t\t\tdelete opts.SID;\n\t\t\t\tdelete val.Ptg;\n\t\t\t\tNames.push(val);\n\t\t\t\tbreak;\n\t\t\tcase 0x040C: /* 'BrtNameExt' */ break;\n\n\t\t\tcase 0x0165: /* 'BrtSupSelf' */\n\t\t\tcase 0x0166: /* 'BrtSupSame' */\n\t\t\tcase 0x0163: /* 'BrtSupBookSrc' */\n\t\t\tcase 0x029B: /* 'BrtSupAddin' */\n\t\t\t\tif(!supbooks[0].length) supbooks[0] = [RT, val];\n\t\t\t\telse supbooks.push([RT, val]);\n\t\t\t\tsupbooks[supbooks.length - 1].XTI = [];\n\t\t\t\tbreak;\n\t\t\tcase 0x016A: /* 'BrtExternSheet' */\n\t\t\t\tif(supbooks.length === 0) { supbooks[0] = []; supbooks[0].XTI = []; }\n\t\t\t\tsupbooks[supbooks.length - 1].XTI = supbooks[supbooks.length - 1].XTI.concat(val);\n\t\t\t\tsupbooks.XTI = supbooks.XTI.concat(val);\n\t\t\t\tbreak;\n\t\t\tcase 0x0169: /* 'BrtPlaceholderName' */\n\t\t\t\tbreak;\n\n\t\t\tcase 0x0817: /* 'BrtAbsPath15' */\n\t\t\tcase 0x009E: /* 'BrtBookView' */\n\t\t\tcase 0x008F: /* 'BrtBeginBundleShs' */\n\t\t\tcase 0x0298: /* 'BrtBeginFnGroup' */\n\t\t\tcase 0x0161: /* 'BrtBeginExternals' */\n\t\t\t\tbreak;\n\n\t\t\t/* case 'BrtModelTimeGroupingCalcCol' */\n\t\t\tcase 0x0C00: /* 'BrtUid' */\n\t\t\tcase 0x0C01: /* 'BrtRevisionPtr' */\n\t\t\tcase 0x0216: /* 'BrtBookProtection' */\n\t\t\tcase 0x02A5: /* 'BrtBookProtectionIso' */\n\t\t\tcase 0x009D: /* 'BrtCalcProp' */\n\t\t\tcase 0x0262: /* 'BrtCrashRecErr' */\n\t\t\tcase 0x0802: /* 'BrtDecoupledPivotCacheID' */\n\t\t\tcase 0x009B: /* 'BrtFileRecover' */\n\t\t\tcase 0x0224: /* 'BrtFileSharing' */\n\t\t\tcase 0x02A4: /* 'BrtFileSharingIso' */\n\t\t\tcase 0x0080: /* 'BrtFileVersion' */\n\t\t\tcase 0x0299: /* 'BrtFnGroup' */\n\t\t\tcase 0x0850: /* 'BrtModelRelationship' */\n\t\t\tcase 0x084D: /* 'BrtModelTable' */\n\t\t\tcase 0x0225: /* 'BrtOleSize' */\n\t\t\tcase 0x0805: /* 'BrtPivotTableRef' */\n\t\t\tcase 0x0254: /* 'BrtSmartTagType' */\n\t\t\tcase 0x081C: /* 'BrtTableSlicerCacheID' */\n\t\t\tcase 0x081B: /* 'BrtTableSlicerCacheIDs' */\n\t\t\tcase 0x0822: /* 'BrtTimelineCachePivotCacheID' */\n\t\t\tcase 0x018D: /* 'BrtUserBookView' */\n\t\t\tcase 0x009A: /* 'BrtWbFactoid' */\n\t\t\tcase 0x045D: /* 'BrtWbProp14' */\n\t\t\tcase 0x0229: /* 'BrtWebOpt' */\n\t\t\tcase 0x082B: /* 'BrtWorkBookPr15' */\n\t\t\t\tbreak;\n\n\t\t\tcase 0x0023: /* 'BrtFRTBegin' */\n\t\t\t\tstate.push(RT); pass = true; break;\n\t\t\tcase 0x0024: /* 'BrtFRTEnd' */\n\t\t\t\tstate.pop(); pass = false; break;\n\t\t\tcase 0x0025: /* 'BrtACBegin' */\n\t\t\t\tstate.push(RT); pass = true; break;\n\t\t\tcase 0x0026: /* 'BrtACEnd' */\n\t\t\t\tstate.pop(); pass = false; break;\n\n\t\t\tcase 0x0010: /* 'BrtFRTArchID$' */ break;\n\n\t\t\tdefault:\n\t\t\t\tif(R.T){/* empty */}\n\t\t\t\telse if(!pass || (opts.WTF && state[state.length-1] != 0x0025 /* BrtACBegin */ && state[state.length-1] != 0x0023 /* BrtFRTBegin */)) throw new Error(\"Unexpected record 0x\" + RT.toString(16));\n\t\t}\n\t}, opts);\n\n\tparse_wb_defaults(wb);\n\n\t// $FlowIgnore\n\twb.Names = Names;\n\n\t(wb/*:any*/).supbooks = supbooks;\n\treturn wb;\n}\n\nfunction write_BUNDLESHS(ba, wb/*::, opts*/) {\n\twrite_record(ba, 0x008F /* BrtBeginBundleShs */);\n\tfor(var idx = 0; idx != wb.SheetNames.length; ++idx) {\n\t\tvar viz = wb.Workbook && wb.Workbook.Sheets && wb.Workbook.Sheets[idx] && wb.Workbook.Sheets[idx].Hidden || 0;\n\t\tvar d = { Hidden: viz, iTabID: idx+1, strRelID: 'rId' + (idx+1), name: wb.SheetNames[idx] };\n\t\twrite_record(ba, 0x009C /* BrtBundleSh */, write_BrtBundleSh(d));\n\t}\n\twrite_record(ba, 0x0090 /* BrtEndBundleShs */);\n}\n\n/* [MS-XLSB] 2.4.649 BrtFileVersion */\nfunction write_BrtFileVersion(data, o) {\n\tif(!o) o = new_buf(127);\n\tfor(var i = 0; i != 4; ++i) o.write_shift(4, 0);\n\twrite_XLWideString(\"SheetJS\", o);\n\twrite_XLWideString(XLSX.version, o);\n\twrite_XLWideString(XLSX.version, o);\n\twrite_XLWideString(\"7262\", o);\n\treturn o.length > o.l ? o.slice(0, o.l) : o;\n}\n\n/* [MS-XLSB] 2.4.301 BrtBookView */\nfunction write_BrtBookView(idx, o) {\n\tif(!o) o = new_buf(29);\n\to.write_shift(-4, 0);\n\to.write_shift(-4, 460);\n\to.write_shift(4,  28800);\n\to.write_shift(4,  17600);\n\to.write_shift(4,  500);\n\to.write_shift(4,  idx);\n\to.write_shift(4,  idx);\n\tvar flags = 0x78;\n\to.write_shift(1,  flags);\n\treturn o.length > o.l ? o.slice(0, o.l) : o;\n}\n\nfunction write_BOOKVIEWS(ba, wb/*::, opts*/) {\n\t/* required if hidden tab appears before visible tab */\n\tif(!wb.Workbook || !wb.Workbook.Sheets) return;\n\tvar sheets = wb.Workbook.Sheets;\n\tvar i = 0, vistab = -1, hidden = -1;\n\tfor(; i < sheets.length; ++i) {\n\t\tif(!sheets[i] || !sheets[i].Hidden && vistab == -1) vistab = i;\n\t\telse if(sheets[i].Hidden == 1 && hidden == -1) hidden = i;\n\t}\n\tif(hidden > vistab) return;\n\twrite_record(ba, 0x0087 /* BrtBeginBookViews */);\n\twrite_record(ba, 0x009E /* BrtBookView */, write_BrtBookView(vistab));\n\t/* 1*(BrtBookView *FRT) */\n\twrite_record(ba, 0x0088 /* BrtEndBookViews */);\n}\n\n/* [MS-XLSB] 2.4.305 BrtCalcProp */\n/*function write_BrtCalcProp(data, o) {\n\tif(!o) o = new_buf(26);\n\to.write_shift(4,0); // force recalc\n\to.write_shift(4,1);\n\to.write_shift(4,0);\n\twrite_Xnum(0, o);\n\to.write_shift(-4, 1023);\n\to.write_shift(1, 0x33);\n\to.write_shift(1, 0x00);\n\treturn o;\n}*/\n\n/* [MS-XLSB] 2.4.646 BrtFileRecover */\n/*function write_BrtFileRecover(data, o) {\n\tif(!o) o = new_buf(1);\n\to.write_shift(1,0);\n\treturn o;\n}*/\n\n/* [MS-XLSB] 2.1.7.61 Workbook */\nfunction write_wb_bin(wb, opts) {\n\tvar ba = buf_array();\n\twrite_record(ba, 0x0083 /* BrtBeginBook */);\n\twrite_record(ba, 0x0080 /* BrtFileVersion */, write_BrtFileVersion());\n\t/* [[BrtFileSharingIso] BrtFileSharing] */\n\twrite_record(ba, 0x0099 /* BrtWbProp */, write_BrtWbProp(wb.Workbook && wb.Workbook.WBProps || null));\n\t/* [ACABSPATH] */\n\t/* [[BrtBookProtectionIso] BrtBookProtection] */\n\twrite_BOOKVIEWS(ba, wb, opts);\n\twrite_BUNDLESHS(ba, wb, opts);\n\t/* [FNGROUP] */\n\t/* [EXTERNALS] */\n\t/* *BrtName */\n\t/* write_record(ba, 0x009D BrtCalcProp, write_BrtCalcProp()); */\n\t/* [BrtOleSize] */\n\t/* *(BrtUserBookView *FRT) */\n\t/* [PIVOTCACHEIDS] */\n\t/* [BrtWbFactoid] */\n\t/* [SMARTTAGTYPES] */\n\t/* [BrtWebOpt] */\n\t/* write_record(ba, 0x009B BrtFileRecover, write_BrtFileRecover()); */\n\t/* [WEBPUBITEMS] */\n\t/* [CRERRS] */\n\t/* FRTWORKBOOK */\n\twrite_record(ba, 0x0084 /* BrtEndBook */);\n\n\treturn ba.end();\n}\nfunction parse_wb(data, name/*:string*/, opts)/*:WorkbookFile*/ {\n\tif(name.slice(-4)===\".bin\") return parse_wb_bin((data/*:any*/), opts);\n\treturn parse_wb_xml((data/*:any*/), opts);\n}\n\nfunction parse_ws(data, name/*:string*/, idx/*:number*/, opts, rels, wb, themes, styles)/*:Worksheet*/ {\n\tif(name.slice(-4)===\".bin\") return parse_ws_bin((data/*:any*/), opts, idx, rels, wb, themes, styles);\n\treturn parse_ws_xml((data/*:any*/), opts, idx, rels, wb, themes, styles);\n}\n\nfunction parse_cs(data, name/*:string*/, idx/*:number*/, opts, rels, wb, themes, styles)/*:Worksheet*/ {\n\tif(name.slice(-4)===\".bin\") return parse_cs_bin((data/*:any*/), opts, idx, rels, wb, themes, styles);\n\treturn parse_cs_xml((data/*:any*/), opts, idx, rels, wb, themes, styles);\n}\n\nfunction parse_ms(data, name/*:string*/, idx/*:number*/, opts, rels, wb, themes, styles)/*:Worksheet*/ {\n\tif(name.slice(-4)===\".bin\") return parse_ms_bin((data/*:any*/), opts, idx, rels, wb, themes, styles);\n\treturn parse_ms_xml((data/*:any*/), opts, idx, rels, wb, themes, styles);\n}\n\nfunction parse_ds(data, name/*:string*/, idx/*:number*/, opts, rels, wb, themes, styles)/*:Worksheet*/ {\n\tif(name.slice(-4)===\".bin\") return parse_ds_bin((data/*:any*/), opts, idx, rels, wb, themes, styles);\n\treturn parse_ds_xml((data/*:any*/), opts, idx, rels, wb, themes, styles);\n}\n\nfunction parse_sty(data, name/*:string*/, themes, opts) {\n\tif(name.slice(-4)===\".bin\") return parse_sty_bin((data/*:any*/), themes, opts);\n\treturn parse_sty_xml((data/*:any*/), themes, opts);\n}\n\nfunction parse_theme(data/*:string*/, name/*:string*/, opts) {\n\treturn parse_theme_xml(data, opts);\n}\n\nfunction parse_sst(data, name/*:string*/, opts)/*:SST*/ {\n\tif(name.slice(-4)===\".bin\") return parse_sst_bin((data/*:any*/), opts);\n\treturn parse_sst_xml((data/*:any*/), opts);\n}\n\nfunction parse_cmnt(data, name/*:string*/, opts)/*:Array<RawComment>*/ {\n\tif(name.slice(-4)===\".bin\") return parse_comments_bin((data/*:any*/), opts);\n\treturn parse_comments_xml((data/*:any*/), opts);\n}\n\nfunction parse_cc(data, name/*:string*/, opts) {\n\tif(name.slice(-4)===\".bin\") return parse_cc_bin((data/*:any*/), name, opts);\n\treturn parse_cc_xml((data/*:any*/), name, opts);\n}\n\nfunction parse_xlink(data, rel, name/*:string*/, opts) {\n\tif(name.slice(-4)===\".bin\") return parse_xlink_bin((data/*:any*/), rel, name, opts);\n\treturn parse_xlink_xml((data/*:any*/), rel, name, opts);\n}\n\nfunction parse_xlmeta(data, name/*:string*/, opts) {\n\tif(name.slice(-4)===\".bin\") return parse_xlmeta_bin((data/*:any*/), name, opts);\n\treturn parse_xlmeta_xml((data/*:any*/), name, opts);\n}\n\nfunction write_wb(wb, name/*:string*/, opts) {\n\treturn (name.slice(-4)===\".bin\" ? write_wb_bin : write_wb_xml)(wb, opts);\n}\n\nfunction write_ws(data/*:number*/, name/*:string*/, opts, wb/*:Workbook*/, rels) {\n\treturn (name.slice(-4)===\".bin\" ? write_ws_bin : write_ws_xml)(data, opts, wb, rels);\n}\n\n// eslint-disable-next-line no-unused-vars\nfunction write_cs(data/*:number*/, name/*:string*/, opts, wb/*:Workbook*/, rels) {\n\treturn (name.slice(-4)===\".bin\" ? write_cs_bin : write_cs_xml)(data, opts, wb, rels);\n}\n\nfunction write_sty(data, name/*:string*/, opts) {\n\treturn (name.slice(-4)===\".bin\" ? write_sty_bin : write_sty_xml)(data, opts);\n}\n\nfunction write_sst(data/*:SST*/, name/*:string*/, opts) {\n\treturn (name.slice(-4)===\".bin\" ? write_sst_bin : write_sst_xml)(data, opts);\n}\n\nfunction write_cmnt(data/*:Array<any>*/, name/*:string*/, opts) {\n\treturn (name.slice(-4)===\".bin\" ? write_comments_bin : write_comments_xml)(data, opts);\n}\n/*\nfunction write_cc(data, name:string, opts) {\n\treturn (name.slice(-4)===\".bin\" ? write_cc_bin : write_cc_xml)(data, opts);\n}\n*/\n\nfunction write_xlmeta(name/*:string*/) {\n\treturn (name.slice(-4)===\".bin\" ? write_xlmeta_bin : write_xlmeta_xml)();\n}\nvar attregexg2=/([\\w:]+)=((?:\")([^\"]*)(?:\")|(?:')([^']*)(?:'))/g;\nvar attregex2=/([\\w:]+)=((?:\")(?:[^\"]*)(?:\")|(?:')(?:[^']*)(?:'))/;\nfunction xlml_parsexmltag(tag/*:string*/, skip_root/*:?boolean*/) {\n\tvar words = tag.split(/\\s+/);\n\tvar z/*:any*/ = ([]/*:any*/); if(!skip_root) z[0] = words[0];\n\tif(words.length === 1) return z;\n\tvar m = tag.match(attregexg2), y, j, w, i;\n\tif(m) for(i = 0; i != m.length; ++i) {\n\t\ty = m[i].match(attregex2);\n/*:: if(!y || !y[2]) continue; */\n\t\tif((j=y[1].indexOf(\":\")) === -1) z[y[1]] = y[2].slice(1,y[2].length-1);\n\t\telse {\n\t\t\tif(y[1].slice(0,6) === \"xmlns:\") w = \"xmlns\"+y[1].slice(6);\n\t\t\telse w = y[1].slice(j+1);\n\t\t\tz[w] = y[2].slice(1,y[2].length-1);\n\t\t}\n\t}\n\treturn z;\n}\nfunction xlml_parsexmltagobj(tag/*:string*/) {\n\tvar words = tag.split(/\\s+/);\n\tvar z = {};\n\tif(words.length === 1) return z;\n\tvar m = tag.match(attregexg2), y, j, w, i;\n\tif(m) for(i = 0; i != m.length; ++i) {\n\t\ty = m[i].match(attregex2);\n/*:: if(!y || !y[2]) continue; */\n\t\tif((j=y[1].indexOf(\":\")) === -1) z[y[1]] = y[2].slice(1,y[2].length-1);\n\t\telse {\n\t\t\tif(y[1].slice(0,6) === \"xmlns:\") w = \"xmlns\"+y[1].slice(6);\n\t\t\telse w = y[1].slice(j+1);\n\t\t\tz[w] = y[2].slice(1,y[2].length-1);\n\t\t}\n\t}\n\treturn z;\n}\n\n// ----\n\n/* map from xlml named formats to SSF TODO: localize */\nvar XLMLFormatMap/*: {[string]:string}*/;\n\nfunction xlml_format(format, value)/*:string*/ {\n\tvar fmt = XLMLFormatMap[format] || unescapexml(format);\n\tif(fmt === \"General\") return SSF_general(value);\n\treturn SSF_format(fmt, value);\n}\n\nfunction xlml_set_custprop(Custprops, key, cp, val/*:string*/) {\n\tvar oval/*:any*/ = val;\n\tswitch((cp[0].match(/dt:dt=\"([\\w.]+)\"/)||[\"\",\"\"])[1]) {\n\t\tcase \"boolean\": oval = parsexmlbool(val); break;\n\t\tcase \"i2\": case \"int\": oval = parseInt(val, 10); break;\n\t\tcase \"r4\": case \"float\": oval = parseFloat(val); break;\n\t\tcase \"date\": case \"dateTime.tz\": oval = parseDate(val); break;\n\t\tcase \"i8\": case \"string\": case \"fixed\": case \"uuid\": case \"bin.base64\": break;\n\t\tdefault: throw new Error(\"bad custprop:\" + cp[0]);\n\t}\n\tCustprops[unescapexml(key)] = oval;\n}\n\nfunction safe_format_xlml(cell/*:Cell*/, nf, o) {\n\tif(cell.t === 'z') return;\n\tif(!o || o.cellText !== false) try {\n\t\tif(cell.t === 'e') { cell.w = cell.w || BErr[cell.v]; }\n\t\telse if(nf === \"General\") {\n\t\t\tif(cell.t === 'n') {\n\t\t\t\tif((cell.v|0) === cell.v) cell.w = cell.v.toString(10);\n\t\t\t\telse cell.w = SSF_general_num(cell.v);\n\t\t\t}\n\t\t\telse cell.w = SSF_general(cell.v);\n\t\t}\n\t\telse cell.w = xlml_format(nf||\"General\", cell.v);\n\t} catch(e) { if(o.WTF) throw e; }\n\ttry {\n\t\tvar z = XLMLFormatMap[nf]||nf||\"General\";\n\t\tif(o.cellNF) cell.z = z;\n\t\tif(o.cellDates && cell.t == 'n' && fmt_is_date(z)) {\n\t\t\tvar _d = SSF_parse_date_code(cell.v); if(_d) { cell.t = 'd'; cell.v = new Date(_d.y, _d.m-1,_d.d,_d.H,_d.M,_d.S,_d.u); }\n\t\t}\n\t} catch(e) { if(o.WTF) throw e; }\n}\n\nfunction process_style_xlml(styles, stag, opts) {\n\tif(opts.cellStyles) {\n\t\tif(stag.Interior) {\n\t\t\tvar I = stag.Interior;\n\t\t\tif(I.Pattern) I.patternType = XLMLPatternTypeMap[I.Pattern] || I.Pattern;\n\t\t}\n\t}\n\tstyles[stag.ID] = stag;\n}\n\n/* TODO: there must exist some form of OSP-blessed spec */\nfunction parse_xlml_data(xml, ss, data, cell/*:any*/, base, styles, csty, row, arrayf, o) {\n\tvar nf = \"General\", sid = cell.StyleID, S = {}; o = o || {};\n\tvar interiors = [];\n\tvar i = 0;\n\tif(sid === undefined && row) sid = row.StyleID;\n\tif(sid === undefined && csty) sid = csty.StyleID;\n\twhile(styles[sid] !== undefined) {\n\t\tif(styles[sid].nf) nf = styles[sid].nf;\n\t\tif(styles[sid].Interior) interiors.push(styles[sid].Interior);\n\t\tif(!styles[sid].Parent) break;\n\t\tsid = styles[sid].Parent;\n\t}\n\tswitch(data.Type) {\n\t\tcase 'Boolean':\n\t\t\tcell.t = 'b';\n\t\t\tcell.v = parsexmlbool(xml);\n\t\t\tbreak;\n\t\tcase 'String':\n\t\t\tcell.t = 's'; cell.r = xlml_fixstr(unescapexml(xml));\n\t\t\tcell.v = (xml.indexOf(\"<\") > -1 ? unescapexml(ss||xml).replace(/<.*?>/g, \"\") : cell.r); // todo: BR etc\n\t\t\tbreak;\n\t\tcase 'DateTime':\n\t\t\tif(xml.slice(-1) != \"Z\") xml += \"Z\";\n\t\t\tcell.v = (parseDate(xml) - new Date(Date.UTC(1899, 11, 30))) / (24 * 60 * 60 * 1000);\n\t\t\tif(cell.v !== cell.v) cell.v = unescapexml(xml);\n\t\t\telse if(cell.v<60) cell.v = cell.v -1;\n\t\t\tif(!nf || nf == \"General\") nf = \"yyyy-mm-dd\";\n\t\t\t/* falls through */\n\t\tcase 'Number':\n\t\t\tif(cell.v === undefined) cell.v=+xml;\n\t\t\tif(!cell.t) cell.t = 'n';\n\t\t\tbreak;\n\t\tcase 'Error': cell.t = 'e'; cell.v = RBErr[xml]; if(o.cellText !== false) cell.w = xml; break;\n\t\tdefault:\n\t\t\tif(xml == \"\" && ss == \"\") { cell.t = 'z'; }\n\t\t\telse { cell.t = 's'; cell.v = xlml_fixstr(ss||xml); }\n\t\t\tbreak;\n\t}\n\tsafe_format_xlml(cell, nf, o);\n\tif(o.cellFormula !== false) {\n\t\tif(cell.Formula) {\n\t\t\tvar fstr = unescapexml(cell.Formula);\n\t\t\t/* strictly speaking, the leading = is required but some writers omit */\n\t\t\tif(fstr.charCodeAt(0) == 61 /* = */) fstr = fstr.slice(1);\n\t\t\tcell.f = rc_to_a1(fstr, base);\n\t\t\tdelete cell.Formula;\n\t\t\tif(cell.ArrayRange == \"RC\") cell.F = rc_to_a1(\"RC:RC\", base);\n\t\t\telse if(cell.ArrayRange) {\n\t\t\t\tcell.F = rc_to_a1(cell.ArrayRange, base);\n\t\t\t\tarrayf.push([safe_decode_range(cell.F), cell.F]);\n\t\t\t}\n\t\t} else {\n\t\t\tfor(i = 0; i < arrayf.length; ++i)\n\t\t\t\tif(base.r >= arrayf[i][0].s.r && base.r <= arrayf[i][0].e.r)\n\t\t\t\t\tif(base.c >= arrayf[i][0].s.c && base.c <= arrayf[i][0].e.c)\n\t\t\t\t\t\tcell.F = arrayf[i][1];\n\t\t}\n\t}\n\tif(o.cellStyles) {\n\t\tinteriors.forEach(function(x) {\n\t\t\tif(!S.patternType && x.patternType) S.patternType = x.patternType;\n\t\t});\n\t\tcell.s = S;\n\t}\n\tif(cell.StyleID !== undefined) cell.ixfe = cell.StyleID;\n}\n\nfunction xlml_clean_comment(comment/*:any*/) {\n\tcomment.t = comment.v || \"\";\n\tcomment.t = comment.t.replace(/\\r\\n/g,\"\\n\").replace(/\\r/g,\"\\n\");\n\tcomment.v = comment.w = comment.ixfe = undefined;\n}\n\n/* TODO: Everything */\nfunction parse_xlml_xml(d, _opts)/*:Workbook*/ {\n\tvar opts = _opts || {};\n\tmake_ssf();\n\tvar str = debom(xlml_normalize(d));\n\tif(opts.type == 'binary' || opts.type == 'array' || opts.type == 'base64') {\n\t\tif(typeof $cptable !== 'undefined') str = $cptable.utils.decode(65001, char_codes(str));\n\t\telse str = utf8read(str);\n\t}\n\tvar opening = str.slice(0, 1024).toLowerCase(), ishtml = false;\n\topening = opening.replace(/\".*?\"/g, \"\");\n\tif((opening.indexOf(\">\") & 1023) > Math.min((opening.indexOf(\",\") & 1023), (opening.indexOf(\";\")&1023))) { var _o = dup(opts); _o.type = \"string\"; return PRN.to_workbook(str, _o); }\n\tif(opening.indexOf(\"<?xml\") == -1) [\"html\", \"table\", \"head\", \"meta\", \"script\", \"style\", \"div\"].forEach(function(tag) { if(opening.indexOf(\"<\" + tag) >= 0) ishtml = true; });\n\tif(ishtml) return html_to_workbook(str, opts);\n\n\tXLMLFormatMap = ({\n\t\t\"General Number\": \"General\",\n\t\t\"General Date\": table_fmt[22],\n\t\t\"Long Date\": \"dddd, mmmm dd, yyyy\",\n\t\t\"Medium Date\": table_fmt[15],\n\t\t\"Short Date\": table_fmt[14],\n\t\t\"Long Time\": table_fmt[19],\n\t\t\"Medium Time\": table_fmt[18],\n\t\t\"Short Time\": table_fmt[20],\n\t\t\"Currency\": '\"$\"#,##0.00_);[Red]\\\\(\"$\"#,##0.00\\\\)',\n\t\t\"Fixed\": table_fmt[2],\n\t\t\"Standard\": table_fmt[4],\n\t\t\"Percent\": table_fmt[10],\n\t\t\"Scientific\": table_fmt[11],\n\t\t\"Yes/No\": '\"Yes\";\"Yes\";\"No\";@',\n\t\t\"True/False\": '\"True\";\"True\";\"False\";@',\n\t\t\"On/Off\": '\"Yes\";\"Yes\";\"No\";@'\n\t}/*:any*/);\n\n\n\tvar Rn;\n\tvar state = [], tmp;\n\tif(DENSE != null && opts.dense == null) opts.dense = DENSE;\n\tvar sheets = {}, sheetnames/*:Array<string>*/ = [], cursheet/*:Worksheet*/ = (opts.dense ? [] : {}), sheetname = \"\";\n\tvar cell = ({}/*:any*/), row = {};// eslint-disable-line no-unused-vars\n\tvar dtag = xlml_parsexmltag('<Data ss:Type=\"String\">'), didx = 0;\n\tvar c = 0, r = 0;\n\tvar refguess/*:Range*/ = {s: {r:2000000, c:2000000}, e: {r:0, c:0} };\n\tvar styles = {}, stag = {};\n\tvar ss = \"\", fidx = 0;\n\tvar merges/*:Array<Range>*/ = [];\n\tvar Props = {}, Custprops = {}, pidx = 0, cp = [];\n\tvar comments/*:Array<Comment>*/ = [], comment/*:Comment*/ = ({}/*:any*/);\n\tvar cstys = [], csty, seencol = false;\n\tvar arrayf/*:Array<[Range, string]>*/ = [];\n\tvar rowinfo/*:Array<RowInfo>*/ = [], rowobj = {}, cc = 0, rr = 0;\n\tvar Workbook/*:WBWBProps*/ = ({ Sheets:[], WBProps:{date1904:false} }/*:any*/), wsprops = {};\n\txlmlregex.lastIndex = 0;\n\tstr = str.replace(/<!--([\\s\\S]*?)-->/mg,\"\");\n\tvar raw_Rn3 = \"\";\n\twhile((Rn = xlmlregex.exec(str))) switch((Rn[3] = (raw_Rn3 = Rn[3]).toLowerCase())) {\n\t\tcase 'data' /*case 'Data'*/:\n\t\t\tif(raw_Rn3 == \"data\") {\n\t\t\t\tif(Rn[1]==='/'){if((tmp=state.pop())[0]!==Rn[3]) throw new Error(\"Bad state: \"+tmp.join(\"|\"));}\n\t\t\t\telse if(Rn[0].charAt(Rn[0].length-2) !== '/') state.push([Rn[3], true]);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif(state[state.length-1][1]) break;\n\t\t\tif(Rn[1]==='/') parse_xlml_data(str.slice(didx, Rn.index), ss, dtag, state[state.length-1][0]==/*\"Comment\"*/\"comment\"?comment:cell, {c:c,r:r}, styles, cstys[c], row, arrayf, opts);\n\t\t\telse { ss = \"\"; dtag = xlml_parsexmltag(Rn[0]); didx = Rn.index + Rn[0].length; }\n\t\t\tbreak;\n\t\tcase 'cell' /*case 'Cell'*/:\n\t\t\tif(Rn[1]==='/'){\n\t\t\t\tif(comments.length > 0) cell.c = comments;\n\t\t\t\tif((!opts.sheetRows || opts.sheetRows > r) && cell.v !== undefined) {\n\t\t\t\t\tif(opts.dense) {\n\t\t\t\t\t\tif(!cursheet[r]) cursheet[r] = [];\n\t\t\t\t\t\tcursheet[r][c] = cell;\n\t\t\t\t\t} else cursheet[encode_col(c) + encode_row(r)] = cell;\n\t\t\t\t}\n\t\t\t\tif(cell.HRef) {\n\t\t\t\t\tcell.l = ({Target:unescapexml(cell.HRef)}/*:any*/);\n\t\t\t\t\tif(cell.HRefScreenTip) cell.l.Tooltip = cell.HRefScreenTip;\n\t\t\t\t\tdelete cell.HRef; delete cell.HRefScreenTip;\n\t\t\t\t}\n\t\t\t\tif(cell.MergeAcross || cell.MergeDown) {\n\t\t\t\t\tcc = c + (parseInt(cell.MergeAcross,10)|0);\n\t\t\t\t\trr = r + (parseInt(cell.MergeDown,10)|0);\n\t\t\t\t\tmerges.push({s:{c:c,r:r},e:{c:cc,r:rr}});\n\t\t\t\t}\n\t\t\t\tif(!opts.sheetStubs) { if(cell.MergeAcross) c = cc + 1; else ++c; }\n\t\t\t\telse if(cell.MergeAcross || cell.MergeDown) {\n\t\t\t\t\t/*:: if(!cc) cc = 0; if(!rr) rr = 0; */\n\t\t\t\t\tfor(var cma = c; cma <= cc; ++cma) {\n\t\t\t\t\t\tfor(var cmd = r; cmd <= rr; ++cmd) {\n\t\t\t\t\t\t\tif(cma > c || cmd > r) {\n\t\t\t\t\t\t\t\tif(opts.dense) {\n\t\t\t\t\t\t\t\t\tif(!cursheet[cmd]) cursheet[cmd] = [];\n\t\t\t\t\t\t\t\t\tcursheet[cmd][cma] = {t:'z'};\n\t\t\t\t\t\t\t\t} else cursheet[encode_col(cma) + encode_row(cmd)] = {t:'z'};\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tc = cc + 1;\n\t\t\t\t}\n\t\t\t\telse ++c;\n\t\t\t} else {\n\t\t\t\tcell = xlml_parsexmltagobj(Rn[0]);\n\t\t\t\tif(cell.Index) c = +cell.Index - 1;\n\t\t\t\tif(c < refguess.s.c) refguess.s.c = c;\n\t\t\t\tif(c > refguess.e.c) refguess.e.c = c;\n\t\t\t\tif(Rn[0].slice(-2) === \"/>\") ++c;\n\t\t\t\tcomments = [];\n\t\t\t}\n\t\t\tbreak;\n\t\tcase 'row' /*case 'Row'*/:\n\t\t\tif(Rn[1]==='/' || Rn[0].slice(-2) === \"/>\") {\n\t\t\t\tif(r < refguess.s.r) refguess.s.r = r;\n\t\t\t\tif(r > refguess.e.r) refguess.e.r = r;\n\t\t\t\tif(Rn[0].slice(-2) === \"/>\") {\n\t\t\t\t\trow = xlml_parsexmltag(Rn[0]);\n\t\t\t\t\tif(row.Index) r = +row.Index - 1;\n\t\t\t\t}\n\t\t\t\tc = 0; ++r;\n\t\t\t} else {\n\t\t\t\trow = xlml_parsexmltag(Rn[0]);\n\t\t\t\tif(row.Index) r = +row.Index - 1;\n\t\t\t\trowobj = {};\n\t\t\t\tif(row.AutoFitHeight == \"0\" || row.Height) {\n\t\t\t\t\trowobj.hpx = parseInt(row.Height, 10); rowobj.hpt = px2pt(rowobj.hpx);\n\t\t\t\t\trowinfo[r] = rowobj;\n\t\t\t\t}\n\t\t\t\tif(row.Hidden == \"1\") { rowobj.hidden = true; rowinfo[r] = rowobj; }\n\t\t\t}\n\t\t\tbreak;\n\t\tcase 'worksheet' /*case 'Worksheet'*/: /* TODO: read range from FullRows/FullColumns */\n\t\t\tif(Rn[1]==='/'){\n\t\t\t\tif((tmp=state.pop())[0]!==Rn[3]) throw new Error(\"Bad state: \"+tmp.join(\"|\"));\n\t\t\t\tsheetnames.push(sheetname);\n\t\t\t\tif(refguess.s.r <= refguess.e.r && refguess.s.c <= refguess.e.c) {\n\t\t\t\t\tcursheet[\"!ref\"] = encode_range(refguess);\n\t\t\t\t\tif(opts.sheetRows && opts.sheetRows <= refguess.e.r) {\n\t\t\t\t\t\tcursheet[\"!fullref\"] = cursheet[\"!ref\"];\n\t\t\t\t\t\trefguess.e.r = opts.sheetRows - 1;\n\t\t\t\t\t\tcursheet[\"!ref\"] = encode_range(refguess);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif(merges.length) cursheet[\"!merges\"] = merges;\n\t\t\t\tif(cstys.length > 0) cursheet[\"!cols\"] = cstys;\n\t\t\t\tif(rowinfo.length > 0) cursheet[\"!rows\"] = rowinfo;\n\t\t\t\tsheets[sheetname] = cursheet;\n\t\t\t} else {\n\t\t\t\trefguess = {s: {r:2000000, c:2000000}, e: {r:0, c:0} };\n\t\t\t\tr = c = 0;\n\t\t\t\tstate.push([Rn[3], false]);\n\t\t\t\ttmp = xlml_parsexmltag(Rn[0]);\n\t\t\t\tsheetname = unescapexml(tmp.Name);\n\t\t\t\tcursheet = (opts.dense ? [] : {});\n\t\t\t\tmerges = [];\n\t\t\t\tarrayf = [];\n\t\t\t\trowinfo = [];\n\t\t\t\twsprops = {name:sheetname, Hidden:0};\n\t\t\t\tWorkbook.Sheets.push(wsprops);\n\t\t\t}\n\t\t\tbreak;\n\t\tcase 'table' /*case 'Table'*/:\n\t\t\tif(Rn[1]==='/'){if((tmp=state.pop())[0]!==Rn[3]) throw new Error(\"Bad state: \"+tmp.join(\"|\"));}\n\t\t\telse if(Rn[0].slice(-2) == \"/>\") break;\n\t\t\telse {\n\t\t\t\tstate.push([Rn[3], false]);\n\t\t\t\tcstys = []; seencol = false;\n\t\t\t}\n\t\t\tbreak;\n\n\t\tcase 'style' /*case 'Style'*/:\n\t\t\tif(Rn[1]==='/') process_style_xlml(styles, stag, opts);\n\t\t\telse stag = xlml_parsexmltag(Rn[0]);\n\t\t\tbreak;\n\n\t\tcase 'numberformat' /*case 'NumberFormat'*/:\n\t\t\tstag.nf = unescapexml(xlml_parsexmltag(Rn[0]).Format || \"General\");\n\t\t\tif(XLMLFormatMap[stag.nf]) stag.nf = XLMLFormatMap[stag.nf];\n\t\t\tfor(var ssfidx = 0; ssfidx != 0x188; ++ssfidx) if(table_fmt[ssfidx] == stag.nf) break;\n\t\t\tif(ssfidx == 0x188) for(ssfidx = 0x39; ssfidx != 0x188; ++ssfidx) if(table_fmt[ssfidx] == null) { SSF_load(stag.nf, ssfidx); break; }\n\t\t\tbreak;\n\n\t\tcase 'column' /*case 'Column'*/:\n\t\t\tif(state[state.length-1][0] !== /*'Table'*/'table') break;\n\t\t\tcsty = xlml_parsexmltag(Rn[0]);\n\t\t\tif(csty.Hidden) { csty.hidden = true; delete csty.Hidden; }\n\t\t\tif(csty.Width) csty.wpx = parseInt(csty.Width, 10);\n\t\t\tif(!seencol && csty.wpx > 10) {\n\t\t\t\tseencol = true; MDW = DEF_MDW; //find_mdw_wpx(csty.wpx);\n\t\t\t\tfor(var _col = 0; _col < cstys.length; ++_col) if(cstys[_col]) process_col(cstys[_col]);\n\t\t\t}\n\t\t\tif(seencol) process_col(csty);\n\t\t\tcstys[(csty.Index-1||cstys.length)] = csty;\n\t\t\tfor(var i = 0; i < +csty.Span; ++i) cstys[cstys.length] = dup(csty);\n\t\t\tbreak;\n\n\t\tcase 'namedrange' /*case 'NamedRange'*/:\n\t\t\tif(Rn[1]==='/') break;\n\t\t\tif(!Workbook.Names) Workbook.Names = [];\n\t\t\tvar _NamedRange = parsexmltag(Rn[0]);\n\t\t\tvar _DefinedName/*:DefinedName*/ = ({\n\t\t\t\tName: _NamedRange.Name,\n\t\t\t\tRef: rc_to_a1(_NamedRange.RefersTo.slice(1), {r:0, c:0})\n\t\t\t}/*:any*/);\n\t\t\tif(Workbook.Sheets.length>0) _DefinedName.Sheet=Workbook.Sheets.length-1;\n\t\t\t/*:: if(Workbook.Names) */Workbook.Names.push(_DefinedName);\n\t\t\tbreak;\n\n\t\tcase 'namedcell' /*case 'NamedCell'*/: break;\n\t\tcase 'b' /*case 'B'*/: break;\n\t\tcase 'i' /*case 'I'*/: break;\n\t\tcase 'u' /*case 'U'*/: break;\n\t\tcase 's' /*case 'S'*/: break;\n\t\tcase 'em' /*case 'EM'*/: break;\n\t\tcase 'h2' /*case 'H2'*/: break;\n\t\tcase 'h3' /*case 'H3'*/: break;\n\t\tcase 'sub' /*case 'Sub'*/: break;\n\t\tcase 'sup' /*case 'Sup'*/: break;\n\t\tcase 'span' /*case 'Span'*/: break;\n\t\tcase 'alignment' /*case 'Alignment'*/:\n\t\t\tbreak;\n\t\tcase 'borders' /*case 'Borders'*/: break;\n\t\tcase 'border' /*case 'Border'*/: break;\n\t\tcase 'font' /*case 'Font'*/:\n\t\t\tif(Rn[0].slice(-2) === \"/>\") break;\n\t\t\telse if(Rn[1]===\"/\") ss += str.slice(fidx, Rn.index);\n\t\t\telse fidx = Rn.index + Rn[0].length;\n\t\t\tbreak;\n\t\tcase 'interior' /*case 'Interior'*/:\n\t\t\tif(!opts.cellStyles) break;\n\t\t\tstag.Interior = xlml_parsexmltag(Rn[0]);\n\t\t\tbreak;\n\t\tcase 'protection' /*case 'Protection'*/: break;\n\n\t\tcase 'author' /*case 'Author'*/:\n\t\tcase 'title' /*case 'Title'*/:\n\t\tcase 'description' /*case 'Description'*/:\n\t\tcase 'created' /*case 'Created'*/:\n\t\tcase 'keywords' /*case 'Keywords'*/:\n\t\tcase 'subject' /*case 'Subject'*/:\n\t\tcase 'category' /*case 'Category'*/:\n\t\tcase 'company' /*case 'Company'*/:\n\t\tcase 'lastauthor' /*case 'LastAuthor'*/:\n\t\tcase 'lastsaved' /*case 'LastSaved'*/:\n\t\tcase 'lastprinted' /*case 'LastPrinted'*/:\n\t\tcase 'version' /*case 'Version'*/:\n\t\tcase 'revision' /*case 'Revision'*/:\n\t\tcase 'totaltime' /*case 'TotalTime'*/:\n\t\tcase 'hyperlinkbase' /*case 'HyperlinkBase'*/:\n\t\tcase 'manager' /*case 'Manager'*/:\n\t\tcase 'contentstatus' /*case 'ContentStatus'*/:\n\t\tcase 'identifier' /*case 'Identifier'*/:\n\t\tcase 'language' /*case 'Language'*/:\n\t\tcase 'appname' /*case 'AppName'*/:\n\t\t\tif(Rn[0].slice(-2) === \"/>\") break;\n\t\t\telse if(Rn[1]===\"/\") xlml_set_prop(Props, raw_Rn3, str.slice(pidx, Rn.index));\n\t\t\telse pidx = Rn.index + Rn[0].length;\n\t\t\tbreak;\n\t\tcase 'paragraphs' /*case 'Paragraphs'*/: break;\n\n\t\tcase 'styles' /*case 'Styles'*/:\n\t\tcase 'workbook' /*case 'Workbook'*/:\n\t\t\tif(Rn[1]==='/'){if((tmp=state.pop())[0]!==Rn[3]) throw new Error(\"Bad state: \"+tmp.join(\"|\"));}\n\t\t\telse state.push([Rn[3], false]);\n\t\t\tbreak;\n\n\t\tcase 'comment' /*case 'Comment'*/:\n\t\t\tif(Rn[1]==='/'){\n\t\t\t\tif((tmp=state.pop())[0]!==Rn[3]) throw new Error(\"Bad state: \"+tmp.join(\"|\"));\n\t\t\t\txlml_clean_comment(comment);\n\t\t\t\tcomments.push(comment);\n\t\t\t} else {\n\t\t\t\tstate.push([Rn[3], false]);\n\t\t\t\ttmp = xlml_parsexmltag(Rn[0]);\n\t\t\t\tcomment = ({a:tmp.Author}/*:any*/);\n\t\t\t}\n\t\t\tbreak;\n\n\t\tcase 'autofilter' /*case 'AutoFilter'*/:\n\t\t\tif(Rn[1]==='/'){if((tmp=state.pop())[0]!==Rn[3]) throw new Error(\"Bad state: \"+tmp.join(\"|\"));}\n\t\t\telse if(Rn[0].charAt(Rn[0].length-2) !== '/') {\n\t\t\t\tvar AutoFilter = xlml_parsexmltag(Rn[0]);\n\t\t\t\tcursheet['!autofilter'] = { ref:rc_to_a1(AutoFilter.Range).replace(/\\$/g,\"\") };\n\t\t\t\tstate.push([Rn[3], true]);\n\t\t\t}\n\t\t\tbreak;\n\n\t\tcase 'name' /*case 'Name'*/: break;\n\n\t\tcase 'datavalidation' /*case 'DataValidation'*/:\n\t\t\tif(Rn[1]==='/'){\n\t\t\t\tif((tmp=state.pop())[0]!==Rn[3]) throw new Error(\"Bad state: \"+tmp.join(\"|\"));\n\t\t\t} else {\n\t\t\t\tif(Rn[0].charAt(Rn[0].length-2) !== '/') state.push([Rn[3], true]);\n\t\t\t}\n\t\t\tbreak;\n\n\t\tcase 'pixelsperinch' /*case 'PixelsPerInch'*/:\n\t\t\tbreak;\n\t\tcase 'componentoptions' /*case 'ComponentOptions'*/:\n\t\tcase 'documentproperties' /*case 'DocumentProperties'*/:\n\t\tcase 'customdocumentproperties' /*case 'CustomDocumentProperties'*/:\n\t\tcase 'officedocumentsettings' /*case 'OfficeDocumentSettings'*/:\n\t\tcase 'pivottable' /*case 'PivotTable'*/:\n\t\tcase 'pivotcache' /*case 'PivotCache'*/:\n\t\tcase 'names' /*case 'Names'*/:\n\t\tcase 'mapinfo' /*case 'MapInfo'*/:\n\t\tcase 'pagebreaks' /*case 'PageBreaks'*/:\n\t\tcase 'querytable' /*case 'QueryTable'*/:\n\t\tcase 'sorting' /*case 'Sorting'*/:\n\t\tcase 'schema' /*case 'Schema'*/: //case 'data' /*case 'data'*/:\n\t\tcase 'conditionalformatting' /*case 'ConditionalFormatting'*/:\n\t\tcase 'smarttagtype' /*case 'SmartTagType'*/:\n\t\tcase 'smarttags' /*case 'SmartTags'*/:\n\t\tcase 'excelworkbook' /*case 'ExcelWorkbook'*/:\n\t\tcase 'workbookoptions' /*case 'WorkbookOptions'*/:\n\t\tcase 'worksheetoptions' /*case 'WorksheetOptions'*/:\n\t\t\tif(Rn[1]==='/'){if((tmp=state.pop())[0]!==Rn[3]) throw new Error(\"Bad state: \"+tmp.join(\"|\"));}\n\t\t\telse if(Rn[0].charAt(Rn[0].length-2) !== '/') state.push([Rn[3], true]);\n\t\t\tbreak;\n\n\t\tcase 'null' /*case 'Null'*/: break;\n\n\t\tdefault:\n\t\t\t/* FODS file root is <office:document> */\n\t\t\tif(state.length == 0 && Rn[3] == \"document\") return parse_fods(str, opts);\n\t\t\t/* UOS file root is <uof:UOF> */\n\t\t\tif(state.length == 0 && Rn[3] == \"uof\"/*\"UOF\"*/) return parse_fods(str, opts);\n\n\t\t\tvar seen = true;\n\t\t\tswitch(state[state.length-1][0]) {\n\t\t\t\t/* OfficeDocumentSettings */\n\t\t\t\tcase 'officedocumentsettings' /*case 'OfficeDocumentSettings'*/: switch(Rn[3]) {\n\t\t\t\t\tcase 'allowpng' /*case 'AllowPNG'*/: break;\n\t\t\t\t\tcase 'removepersonalinformation' /*case 'RemovePersonalInformation'*/: break;\n\t\t\t\t\tcase 'downloadcomponents' /*case 'DownloadComponents'*/: break;\n\t\t\t\t\tcase 'locationofcomponents' /*case 'LocationOfComponents'*/: break;\n\t\t\t\t\tcase 'colors' /*case 'Colors'*/: break;\n\t\t\t\t\tcase 'color' /*case 'Color'*/: break;\n\t\t\t\t\tcase 'index' /*case 'Index'*/: break;\n\t\t\t\t\tcase 'rgb' /*case 'RGB'*/: break;\n\t\t\t\t\tcase 'targetscreensize' /*case 'TargetScreenSize'*/: break;\n\t\t\t\t\tcase 'readonlyrecommended' /*case 'ReadOnlyRecommended'*/: break;\n\t\t\t\t\tdefault: seen = false;\n\t\t\t\t} break;\n\n\t\t\t\t/* ComponentOptions */\n\t\t\t\tcase 'componentoptions' /*case 'ComponentOptions'*/: switch(Rn[3]) {\n\t\t\t\t\tcase 'toolbar' /*case 'Toolbar'*/: break;\n\t\t\t\t\tcase 'hideofficelogo' /*case 'HideOfficeLogo'*/: break;\n\t\t\t\t\tcase 'spreadsheetautofit' /*case 'SpreadsheetAutoFit'*/: break;\n\t\t\t\t\tcase 'label' /*case 'Label'*/: break;\n\t\t\t\t\tcase 'caption' /*case 'Caption'*/: break;\n\t\t\t\t\tcase 'maxheight' /*case 'MaxHeight'*/: break;\n\t\t\t\t\tcase 'maxwidth' /*case 'MaxWidth'*/: break;\n\t\t\t\t\tcase 'nextsheetnumber' /*case 'NextSheetNumber'*/: break;\n\t\t\t\t\tdefault: seen = false;\n\t\t\t\t} break;\n\n\t\t\t\t/* ExcelWorkbook */\n\t\t\t\tcase 'excelworkbook' /*case 'ExcelWorkbook'*/: switch(Rn[3]) {\n\t\t\t\t\tcase 'date1904' /*case 'Date1904'*/:\n\t\t\t\t\t\t/*:: if(!Workbook.WBProps) Workbook.WBProps = {}; */\n\t\t\t\t\t\tWorkbook.WBProps.date1904 = true;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'windowheight' /*case 'WindowHeight'*/: break;\n\t\t\t\t\tcase 'windowwidth' /*case 'WindowWidth'*/: break;\n\t\t\t\t\tcase 'windowtopx' /*case 'WindowTopX'*/: break;\n\t\t\t\t\tcase 'windowtopy' /*case 'WindowTopY'*/: break;\n\t\t\t\t\tcase 'tabratio' /*case 'TabRatio'*/: break;\n\t\t\t\t\tcase 'protectstructure' /*case 'ProtectStructure'*/: break;\n\t\t\t\t\tcase 'protectwindow' /*case 'ProtectWindow'*/: break;\n\t\t\t\t\tcase 'protectwindows' /*case 'ProtectWindows'*/: break;\n\t\t\t\t\tcase 'activesheet' /*case 'ActiveSheet'*/: break;\n\t\t\t\t\tcase 'displayinknotes' /*case 'DisplayInkNotes'*/: break;\n\t\t\t\t\tcase 'firstvisiblesheet' /*case 'FirstVisibleSheet'*/: break;\n\t\t\t\t\tcase 'supbook' /*case 'SupBook'*/: break;\n\t\t\t\t\tcase 'sheetname' /*case 'SheetName'*/: break;\n\t\t\t\t\tcase 'sheetindex' /*case 'SheetIndex'*/: break;\n\t\t\t\t\tcase 'sheetindexfirst' /*case 'SheetIndexFirst'*/: break;\n\t\t\t\t\tcase 'sheetindexlast' /*case 'SheetIndexLast'*/: break;\n\t\t\t\t\tcase 'dll' /*case 'Dll'*/: break;\n\t\t\t\t\tcase 'acceptlabelsinformulas' /*case 'AcceptLabelsInFormulas'*/: break;\n\t\t\t\t\tcase 'donotsavelinkvalues' /*case 'DoNotSaveLinkValues'*/: break;\n\t\t\t\t\tcase 'iteration' /*case 'Iteration'*/: break;\n\t\t\t\t\tcase 'maxiterations' /*case 'MaxIterations'*/: break;\n\t\t\t\t\tcase 'maxchange' /*case 'MaxChange'*/: break;\n\t\t\t\t\tcase 'path' /*case 'Path'*/: break;\n\t\t\t\t\tcase 'xct' /*case 'Xct'*/: break;\n\t\t\t\t\tcase 'count' /*case 'Count'*/: break;\n\t\t\t\t\tcase 'selectedsheets' /*case 'SelectedSheets'*/: break;\n\t\t\t\t\tcase 'calculation' /*case 'Calculation'*/: break;\n\t\t\t\t\tcase 'uncalced' /*case 'Uncalced'*/: break;\n\t\t\t\t\tcase 'startupprompt' /*case 'StartupPrompt'*/: break;\n\t\t\t\t\tcase 'crn' /*case 'Crn'*/: break;\n\t\t\t\t\tcase 'externname' /*case 'ExternName'*/: break;\n\t\t\t\t\tcase 'formula' /*case 'Formula'*/: break;\n\t\t\t\t\tcase 'colfirst' /*case 'ColFirst'*/: break;\n\t\t\t\t\tcase 'collast' /*case 'ColLast'*/: break;\n\t\t\t\t\tcase 'wantadvise' /*case 'WantAdvise'*/: break;\n\t\t\t\t\tcase 'boolean' /*case 'Boolean'*/: break;\n\t\t\t\t\tcase 'error' /*case 'Error'*/: break;\n\t\t\t\t\tcase 'text' /*case 'Text'*/: break;\n\t\t\t\t\tcase 'ole' /*case 'OLE'*/: break;\n\t\t\t\t\tcase 'noautorecover' /*case 'NoAutoRecover'*/: break;\n\t\t\t\t\tcase 'publishobjects' /*case 'PublishObjects'*/: break;\n\t\t\t\t\tcase 'donotcalculatebeforesave' /*case 'DoNotCalculateBeforeSave'*/: break;\n\t\t\t\t\tcase 'number' /*case 'Number'*/: break;\n\t\t\t\t\tcase 'refmoder1c1' /*case 'RefModeR1C1'*/: break;\n\t\t\t\t\tcase 'embedsavesmarttags' /*case 'EmbedSaveSmartTags'*/: break;\n\t\t\t\t\tdefault: seen = false;\n\t\t\t\t} break;\n\n\t\t\t\t/* WorkbookOptions */\n\t\t\t\tcase 'workbookoptions' /*case 'WorkbookOptions'*/: switch(Rn[3]) {\n\t\t\t\t\tcase 'owcversion' /*case 'OWCVersion'*/: break;\n\t\t\t\t\tcase 'height' /*case 'Height'*/: break;\n\t\t\t\t\tcase 'width' /*case 'Width'*/: break;\n\t\t\t\t\tdefault: seen = false;\n\t\t\t\t} break;\n\n\t\t\t\t/* WorksheetOptions */\n\t\t\t\tcase 'worksheetoptions' /*case 'WorksheetOptions'*/: switch(Rn[3]) {\n\t\t\t\t\tcase 'visible' /*case 'Visible'*/:\n\t\t\t\t\t\tif(Rn[0].slice(-2) === \"/>\"){/* empty */}\n\t\t\t\t\t\telse if(Rn[1]===\"/\") switch(str.slice(pidx, Rn.index)) {\n\t\t\t\t\t\t\tcase \"SheetHidden\": wsprops.Hidden = 1; break;\n\t\t\t\t\t\t\tcase \"SheetVeryHidden\": wsprops.Hidden = 2; break;\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse pidx = Rn.index + Rn[0].length;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'header' /*case 'Header'*/:\n\t\t\t\t\t\tif(!cursheet['!margins']) default_margins(cursheet['!margins']={}, 'xlml');\n\t\t\t\t\t\tif(!isNaN(+parsexmltag(Rn[0]).Margin)) cursheet['!margins'].header = +parsexmltag(Rn[0]).Margin;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'footer' /*case 'Footer'*/:\n\t\t\t\t\t\tif(!cursheet['!margins']) default_margins(cursheet['!margins']={}, 'xlml');\n\t\t\t\t\t\tif(!isNaN(+parsexmltag(Rn[0]).Margin)) cursheet['!margins'].footer = +parsexmltag(Rn[0]).Margin;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'pagemargins' /*case 'PageMargins'*/:\n\t\t\t\t\t\tvar pagemargins = parsexmltag(Rn[0]);\n\t\t\t\t\t\tif(!cursheet['!margins']) default_margins(cursheet['!margins']={},'xlml');\n\t\t\t\t\t\tif(!isNaN(+pagemargins.Top)) cursheet['!margins'].top = +pagemargins.Top;\n\t\t\t\t\t\tif(!isNaN(+pagemargins.Left)) cursheet['!margins'].left = +pagemargins.Left;\n\t\t\t\t\t\tif(!isNaN(+pagemargins.Right)) cursheet['!margins'].right = +pagemargins.Right;\n\t\t\t\t\t\tif(!isNaN(+pagemargins.Bottom)) cursheet['!margins'].bottom = +pagemargins.Bottom;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'displayrighttoleft' /*case 'DisplayRightToLeft'*/:\n\t\t\t\t\t\tif(!Workbook.Views) Workbook.Views = [];\n\t\t\t\t\t\tif(!Workbook.Views[0]) Workbook.Views[0] = {};\n\t\t\t\t\t\tWorkbook.Views[0].RTL = true;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'freezepanes' /*case 'FreezePanes'*/: break;\n\t\t\t\t\tcase 'frozennosplit' /*case 'FrozenNoSplit'*/: break;\n\n\t\t\t\t\tcase 'splithorizontal' /*case 'SplitHorizontal'*/:\n\t\t\t\t\tcase 'splitvertical' /*case 'SplitVertical'*/:\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'donotdisplaygridlines' /*case 'DoNotDisplayGridlines'*/:\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'activerow' /*case 'ActiveRow'*/: break;\n\t\t\t\t\tcase 'activecol' /*case 'ActiveCol'*/: break;\n\t\t\t\t\tcase 'toprowbottompane' /*case 'TopRowBottomPane'*/: break;\n\t\t\t\t\tcase 'leftcolumnrightpane' /*case 'LeftColumnRightPane'*/: break;\n\n\t\t\t\t\tcase 'unsynced' /*case 'Unsynced'*/: break;\n\t\t\t\t\tcase 'print' /*case 'Print'*/: break;\n\t\t\t\t\tcase 'printerrors' /*case 'PrintErrors'*/: break;\n\t\t\t\t\tcase 'panes' /*case 'Panes'*/: break;\n\t\t\t\t\tcase 'scale' /*case 'Scale'*/: break;\n\t\t\t\t\tcase 'pane' /*case 'Pane'*/: break;\n\t\t\t\t\tcase 'number' /*case 'Number'*/: break;\n\t\t\t\t\tcase 'layout' /*case 'Layout'*/: break;\n\t\t\t\t\tcase 'pagesetup' /*case 'PageSetup'*/: break;\n\t\t\t\t\tcase 'selected' /*case 'Selected'*/: break;\n\t\t\t\t\tcase 'protectobjects' /*case 'ProtectObjects'*/: break;\n\t\t\t\t\tcase 'enableselection' /*case 'EnableSelection'*/: break;\n\t\t\t\t\tcase 'protectscenarios' /*case 'ProtectScenarios'*/: break;\n\t\t\t\t\tcase 'validprinterinfo' /*case 'ValidPrinterInfo'*/: break;\n\t\t\t\t\tcase 'horizontalresolution' /*case 'HorizontalResolution'*/: break;\n\t\t\t\t\tcase 'verticalresolution' /*case 'VerticalResolution'*/: break;\n\t\t\t\t\tcase 'numberofcopies' /*case 'NumberofCopies'*/: break;\n\t\t\t\t\tcase 'activepane' /*case 'ActivePane'*/: break;\n\t\t\t\t\tcase 'toprowvisible' /*case 'TopRowVisible'*/: break;\n\t\t\t\t\tcase 'leftcolumnvisible' /*case 'LeftColumnVisible'*/: break;\n\t\t\t\t\tcase 'fittopage' /*case 'FitToPage'*/: break;\n\t\t\t\t\tcase 'rangeselection' /*case 'RangeSelection'*/: break;\n\t\t\t\t\tcase 'papersizeindex' /*case 'PaperSizeIndex'*/: break;\n\t\t\t\t\tcase 'pagelayoutzoom' /*case 'PageLayoutZoom'*/: break;\n\t\t\t\t\tcase 'pagebreakzoom' /*case 'PageBreakZoom'*/: break;\n\t\t\t\t\tcase 'filteron' /*case 'FilterOn'*/: break;\n\t\t\t\t\tcase 'fitwidth' /*case 'FitWidth'*/: break;\n\t\t\t\t\tcase 'fitheight' /*case 'FitHeight'*/: break;\n\t\t\t\t\tcase 'commentslayout' /*case 'CommentsLayout'*/: break;\n\t\t\t\t\tcase 'zoom' /*case 'Zoom'*/: break;\n\t\t\t\t\tcase 'lefttoright' /*case 'LeftToRight'*/: break;\n\t\t\t\t\tcase 'gridlines' /*case 'Gridlines'*/: break;\n\t\t\t\t\tcase 'allowsort' /*case 'AllowSort'*/: break;\n\t\t\t\t\tcase 'allowfilter' /*case 'AllowFilter'*/: break;\n\t\t\t\t\tcase 'allowinsertrows' /*case 'AllowInsertRows'*/: break;\n\t\t\t\t\tcase 'allowdeleterows' /*case 'AllowDeleteRows'*/: break;\n\t\t\t\t\tcase 'allowinsertcols' /*case 'AllowInsertCols'*/: break;\n\t\t\t\t\tcase 'allowdeletecols' /*case 'AllowDeleteCols'*/: break;\n\t\t\t\t\tcase 'allowinserthyperlinks' /*case 'AllowInsertHyperlinks'*/: break;\n\t\t\t\t\tcase 'allowformatcells' /*case 'AllowFormatCells'*/: break;\n\t\t\t\t\tcase 'allowsizecols' /*case 'AllowSizeCols'*/: break;\n\t\t\t\t\tcase 'allowsizerows' /*case 'AllowSizeRows'*/: break;\n\t\t\t\t\tcase 'nosummaryrowsbelowdetail' /*case 'NoSummaryRowsBelowDetail'*/:\n\t\t\t\t\t\tif(!cursheet[\"!outline\"]) cursheet[\"!outline\"] = {};\n\t\t\t\t\t\tcursheet[\"!outline\"].above = true;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'tabcolorindex' /*case 'TabColorIndex'*/: break;\n\t\t\t\t\tcase 'donotdisplayheadings' /*case 'DoNotDisplayHeadings'*/: break;\n\t\t\t\t\tcase 'showpagelayoutzoom' /*case 'ShowPageLayoutZoom'*/: break;\n\t\t\t\t\tcase 'nosummarycolumnsrightdetail' /*case 'NoSummaryColumnsRightDetail'*/:\n\t\t\t\t\t\tif(!cursheet[\"!outline\"]) cursheet[\"!outline\"] = {};\n\t\t\t\t\t\tcursheet[\"!outline\"].left = true;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'blackandwhite' /*case 'BlackAndWhite'*/: break;\n\t\t\t\t\tcase 'donotdisplayzeros' /*case 'DoNotDisplayZeros'*/: break;\n\t\t\t\t\tcase 'displaypagebreak' /*case 'DisplayPageBreak'*/: break;\n\t\t\t\t\tcase 'rowcolheadings' /*case 'RowColHeadings'*/: break;\n\t\t\t\t\tcase 'donotdisplayoutline' /*case 'DoNotDisplayOutline'*/: break;\n\t\t\t\t\tcase 'noorientation' /*case 'NoOrientation'*/: break;\n\t\t\t\t\tcase 'allowusepivottables' /*case 'AllowUsePivotTables'*/: break;\n\t\t\t\t\tcase 'zeroheight' /*case 'ZeroHeight'*/: break;\n\t\t\t\t\tcase 'viewablerange' /*case 'ViewableRange'*/: break;\n\t\t\t\t\tcase 'selection' /*case 'Selection'*/: break;\n\t\t\t\t\tcase 'protectcontents' /*case 'ProtectContents'*/: break;\n\t\t\t\t\tdefault: seen = false;\n\t\t\t\t} break;\n\n\t\t\t\t/* PivotTable */\n\t\t\t\tcase 'pivottable' /*case 'PivotTable'*/: case 'pivotcache' /*case 'PivotCache'*/: switch(Rn[3]) {\n\t\t\t\t\tcase 'immediateitemsondrop' /*case 'ImmediateItemsOnDrop'*/: break;\n\t\t\t\t\tcase 'showpagemultipleitemlabel' /*case 'ShowPageMultipleItemLabel'*/: break;\n\t\t\t\t\tcase 'compactrowindent' /*case 'CompactRowIndent'*/: break;\n\t\t\t\t\tcase 'location' /*case 'Location'*/: break;\n\t\t\t\t\tcase 'pivotfield' /*case 'PivotField'*/: break;\n\t\t\t\t\tcase 'orientation' /*case 'Orientation'*/: break;\n\t\t\t\t\tcase 'layoutform' /*case 'LayoutForm'*/: break;\n\t\t\t\t\tcase 'layoutsubtotallocation' /*case 'LayoutSubtotalLocation'*/: break;\n\t\t\t\t\tcase 'layoutcompactrow' /*case 'LayoutCompactRow'*/: break;\n\t\t\t\t\tcase 'position' /*case 'Position'*/: break;\n\t\t\t\t\tcase 'pivotitem' /*case 'PivotItem'*/: break;\n\t\t\t\t\tcase 'datatype' /*case 'DataType'*/: break;\n\t\t\t\t\tcase 'datafield' /*case 'DataField'*/: break;\n\t\t\t\t\tcase 'sourcename' /*case 'SourceName'*/: break;\n\t\t\t\t\tcase 'parentfield' /*case 'ParentField'*/: break;\n\t\t\t\t\tcase 'ptlineitems' /*case 'PTLineItems'*/: break;\n\t\t\t\t\tcase 'ptlineitem' /*case 'PTLineItem'*/: break;\n\t\t\t\t\tcase 'countofsameitems' /*case 'CountOfSameItems'*/: break;\n\t\t\t\t\tcase 'item' /*case 'Item'*/: break;\n\t\t\t\t\tcase 'itemtype' /*case 'ItemType'*/: break;\n\t\t\t\t\tcase 'ptsource' /*case 'PTSource'*/: break;\n\t\t\t\t\tcase 'cacheindex' /*case 'CacheIndex'*/: break;\n\t\t\t\t\tcase 'consolidationreference' /*case 'ConsolidationReference'*/: break;\n\t\t\t\t\tcase 'filename' /*case 'FileName'*/: break;\n\t\t\t\t\tcase 'reference' /*case 'Reference'*/: break;\n\t\t\t\t\tcase 'nocolumngrand' /*case 'NoColumnGrand'*/: break;\n\t\t\t\t\tcase 'norowgrand' /*case 'NoRowGrand'*/: break;\n\t\t\t\t\tcase 'blanklineafteritems' /*case 'BlankLineAfterItems'*/: break;\n\t\t\t\t\tcase 'hidden' /*case 'Hidden'*/: break;\n\t\t\t\t\tcase 'subtotal' /*case 'Subtotal'*/: break;\n\t\t\t\t\tcase 'basefield' /*case 'BaseField'*/: break;\n\t\t\t\t\tcase 'mapchilditems' /*case 'MapChildItems'*/: break;\n\t\t\t\t\tcase 'function' /*case 'Function'*/: break;\n\t\t\t\t\tcase 'refreshonfileopen' /*case 'RefreshOnFileOpen'*/: break;\n\t\t\t\t\tcase 'printsettitles' /*case 'PrintSetTitles'*/: break;\n\t\t\t\t\tcase 'mergelabels' /*case 'MergeLabels'*/: break;\n\t\t\t\t\tcase 'defaultversion' /*case 'DefaultVersion'*/: break;\n\t\t\t\t\tcase 'refreshname' /*case 'RefreshName'*/: break;\n\t\t\t\t\tcase 'refreshdate' /*case 'RefreshDate'*/: break;\n\t\t\t\t\tcase 'refreshdatecopy' /*case 'RefreshDateCopy'*/: break;\n\t\t\t\t\tcase 'versionlastrefresh' /*case 'VersionLastRefresh'*/: break;\n\t\t\t\t\tcase 'versionlastupdate' /*case 'VersionLastUpdate'*/: break;\n\t\t\t\t\tcase 'versionupdateablemin' /*case 'VersionUpdateableMin'*/: break;\n\t\t\t\t\tcase 'versionrefreshablemin' /*case 'VersionRefreshableMin'*/: break;\n\t\t\t\t\tcase 'calculation' /*case 'Calculation'*/: break;\n\t\t\t\t\tdefault: seen = false;\n\t\t\t\t} break;\n\n\t\t\t\t/* PageBreaks */\n\t\t\t\tcase 'pagebreaks' /*case 'PageBreaks'*/: switch(Rn[3]) {\n\t\t\t\t\tcase 'colbreaks' /*case 'ColBreaks'*/: break;\n\t\t\t\t\tcase 'colbreak' /*case 'ColBreak'*/: break;\n\t\t\t\t\tcase 'rowbreaks' /*case 'RowBreaks'*/: break;\n\t\t\t\t\tcase 'rowbreak' /*case 'RowBreak'*/: break;\n\t\t\t\t\tcase 'colstart' /*case 'ColStart'*/: break;\n\t\t\t\t\tcase 'colend' /*case 'ColEnd'*/: break;\n\t\t\t\t\tcase 'rowend' /*case 'RowEnd'*/: break;\n\t\t\t\t\tdefault: seen = false;\n\t\t\t\t} break;\n\n\t\t\t\t/* AutoFilter */\n\t\t\t\tcase 'autofilter' /*case 'AutoFilter'*/: switch(Rn[3]) {\n\t\t\t\t\tcase 'autofiltercolumn' /*case 'AutoFilterColumn'*/: break;\n\t\t\t\t\tcase 'autofiltercondition' /*case 'AutoFilterCondition'*/: break;\n\t\t\t\t\tcase 'autofilterand' /*case 'AutoFilterAnd'*/: break;\n\t\t\t\t\tcase 'autofilteror' /*case 'AutoFilterOr'*/: break;\n\t\t\t\t\tdefault: seen = false;\n\t\t\t\t} break;\n\n\t\t\t\t/* QueryTable */\n\t\t\t\tcase 'querytable' /*case 'QueryTable'*/: switch(Rn[3]) {\n\t\t\t\t\tcase 'id' /*case 'Id'*/: break;\n\t\t\t\t\tcase 'autoformatfont' /*case 'AutoFormatFont'*/: break;\n\t\t\t\t\tcase 'autoformatpattern' /*case 'AutoFormatPattern'*/: break;\n\t\t\t\t\tcase 'querysource' /*case 'QuerySource'*/: break;\n\t\t\t\t\tcase 'querytype' /*case 'QueryType'*/: break;\n\t\t\t\t\tcase 'enableredirections' /*case 'EnableRedirections'*/: break;\n\t\t\t\t\tcase 'refreshedinxl9' /*case 'RefreshedInXl9'*/: break;\n\t\t\t\t\tcase 'urlstring' /*case 'URLString'*/: break;\n\t\t\t\t\tcase 'htmltables' /*case 'HTMLTables'*/: break;\n\t\t\t\t\tcase 'connection' /*case 'Connection'*/: break;\n\t\t\t\t\tcase 'commandtext' /*case 'CommandText'*/: break;\n\t\t\t\t\tcase 'refreshinfo' /*case 'RefreshInfo'*/: break;\n\t\t\t\t\tcase 'notitles' /*case 'NoTitles'*/: break;\n\t\t\t\t\tcase 'nextid' /*case 'NextId'*/: break;\n\t\t\t\t\tcase 'columninfo' /*case 'ColumnInfo'*/: break;\n\t\t\t\t\tcase 'overwritecells' /*case 'OverwriteCells'*/: break;\n\t\t\t\t\tcase 'donotpromptforfile' /*case 'DoNotPromptForFile'*/: break;\n\t\t\t\t\tcase 'textwizardsettings' /*case 'TextWizardSettings'*/: break;\n\t\t\t\t\tcase 'source' /*case 'Source'*/: break;\n\t\t\t\t\tcase 'number' /*case 'Number'*/: break;\n\t\t\t\t\tcase 'decimal' /*case 'Decimal'*/: break;\n\t\t\t\t\tcase 'thousandseparator' /*case 'ThousandSeparator'*/: break;\n\t\t\t\t\tcase 'trailingminusnumbers' /*case 'TrailingMinusNumbers'*/: break;\n\t\t\t\t\tcase 'formatsettings' /*case 'FormatSettings'*/: break;\n\t\t\t\t\tcase 'fieldtype' /*case 'FieldType'*/: break;\n\t\t\t\t\tcase 'delimiters' /*case 'Delimiters'*/: break;\n\t\t\t\t\tcase 'tab' /*case 'Tab'*/: break;\n\t\t\t\t\tcase 'comma' /*case 'Comma'*/: break;\n\t\t\t\t\tcase 'autoformatname' /*case 'AutoFormatName'*/: break;\n\t\t\t\t\tcase 'versionlastedit' /*case 'VersionLastEdit'*/: break;\n\t\t\t\t\tcase 'versionlastrefresh' /*case 'VersionLastRefresh'*/: break;\n\t\t\t\t\tdefault: seen = false;\n\t\t\t\t} break;\n\n\t\t\t\tcase 'datavalidation' /*case 'DataValidation'*/:\n\t\t\t\tswitch(Rn[3]) {\n\t\t\t\t\tcase 'range' /*case 'Range'*/: break;\n\n\t\t\t\t\tcase 'type' /*case 'Type'*/: break;\n\t\t\t\t\tcase 'min' /*case 'Min'*/: break;\n\t\t\t\t\tcase 'max' /*case 'Max'*/: break;\n\t\t\t\t\tcase 'sort' /*case 'Sort'*/: break;\n\t\t\t\t\tcase 'descending' /*case 'Descending'*/: break;\n\t\t\t\t\tcase 'order' /*case 'Order'*/: break;\n\t\t\t\t\tcase 'casesensitive' /*case 'CaseSensitive'*/: break;\n\t\t\t\t\tcase 'value' /*case 'Value'*/: break;\n\t\t\t\t\tcase 'errorstyle' /*case 'ErrorStyle'*/: break;\n\t\t\t\t\tcase 'errormessage' /*case 'ErrorMessage'*/: break;\n\t\t\t\t\tcase 'errortitle' /*case 'ErrorTitle'*/: break;\n\t\t\t\t\tcase 'inputmessage' /*case 'InputMessage'*/: break;\n\t\t\t\t\tcase 'inputtitle' /*case 'InputTitle'*/: break;\n\t\t\t\t\tcase 'combohide' /*case 'ComboHide'*/: break;\n\t\t\t\t\tcase 'inputhide' /*case 'InputHide'*/: break;\n\t\t\t\t\tcase 'condition' /*case 'Condition'*/: break;\n\t\t\t\t\tcase 'qualifier' /*case 'Qualifier'*/: break;\n\t\t\t\t\tcase 'useblank' /*case 'UseBlank'*/: break;\n\t\t\t\t\tcase 'value1' /*case 'Value1'*/: break;\n\t\t\t\t\tcase 'value2' /*case 'Value2'*/: break;\n\t\t\t\t\tcase 'format' /*case 'Format'*/: break;\n\n\t\t\t\t\tcase 'cellrangelist' /*case 'CellRangeList'*/: break;\n\t\t\t\t\tdefault: seen = false;\n\t\t\t\t} break;\n\n\t\t\t\tcase 'sorting' /*case 'Sorting'*/:\n\t\t\t\tcase 'conditionalformatting' /*case 'ConditionalFormatting'*/:\n\t\t\t\tswitch(Rn[3]) {\n\t\t\t\t\tcase 'range' /*case 'Range'*/: break;\n\t\t\t\t\tcase 'type' /*case 'Type'*/: break;\n\t\t\t\t\tcase 'min' /*case 'Min'*/: break;\n\t\t\t\t\tcase 'max' /*case 'Max'*/: break;\n\t\t\t\t\tcase 'sort' /*case 'Sort'*/: break;\n\t\t\t\t\tcase 'descending' /*case 'Descending'*/: break;\n\t\t\t\t\tcase 'order' /*case 'Order'*/: break;\n\t\t\t\t\tcase 'casesensitive' /*case 'CaseSensitive'*/: break;\n\t\t\t\t\tcase 'value' /*case 'Value'*/: break;\n\t\t\t\t\tcase 'errorstyle' /*case 'ErrorStyle'*/: break;\n\t\t\t\t\tcase 'errormessage' /*case 'ErrorMessage'*/: break;\n\t\t\t\t\tcase 'errortitle' /*case 'ErrorTitle'*/: break;\n\t\t\t\t\tcase 'cellrangelist' /*case 'CellRangeList'*/: break;\n\t\t\t\t\tcase 'inputmessage' /*case 'InputMessage'*/: break;\n\t\t\t\t\tcase 'inputtitle' /*case 'InputTitle'*/: break;\n\t\t\t\t\tcase 'combohide' /*case 'ComboHide'*/: break;\n\t\t\t\t\tcase 'inputhide' /*case 'InputHide'*/: break;\n\t\t\t\t\tcase 'condition' /*case 'Condition'*/: break;\n\t\t\t\t\tcase 'qualifier' /*case 'Qualifier'*/: break;\n\t\t\t\t\tcase 'useblank' /*case 'UseBlank'*/: break;\n\t\t\t\t\tcase 'value1' /*case 'Value1'*/: break;\n\t\t\t\t\tcase 'value2' /*case 'Value2'*/: break;\n\t\t\t\t\tcase 'format' /*case 'Format'*/: break;\n\t\t\t\t\tdefault: seen = false;\n\t\t\t\t} break;\n\n\t\t\t\t/* MapInfo (schema) */\n\t\t\t\tcase 'mapinfo' /*case 'MapInfo'*/: case 'schema' /*case 'Schema'*/: case 'data' /*case 'data'*/: switch(Rn[3]) {\n\t\t\t\t\tcase 'map' /*case 'Map'*/: break;\n\t\t\t\t\tcase 'entry' /*case 'Entry'*/: break;\n\t\t\t\t\tcase 'range' /*case 'Range'*/: break;\n\t\t\t\t\tcase 'xpath' /*case 'XPath'*/: break;\n\t\t\t\t\tcase 'field' /*case 'Field'*/: break;\n\t\t\t\t\tcase 'xsdtype' /*case 'XSDType'*/: break;\n\t\t\t\t\tcase 'filteron' /*case 'FilterOn'*/: break;\n\t\t\t\t\tcase 'aggregate' /*case 'Aggregate'*/: break;\n\t\t\t\t\tcase 'elementtype' /*case 'ElementType'*/: break;\n\t\t\t\t\tcase 'attributetype' /*case 'AttributeType'*/: break;\n\t\t\t\t/* These are from xsd (XML Schema Definition) */\n\t\t\t\t\tcase 'schema' /*case 'schema'*/:\n\t\t\t\t\tcase 'element' /*case 'element'*/:\n\t\t\t\t\tcase 'complextype' /*case 'complexType'*/:\n\t\t\t\t\tcase 'datatype' /*case 'datatype'*/:\n\t\t\t\t\tcase 'all' /*case 'all'*/:\n\t\t\t\t\tcase 'attribute' /*case 'attribute'*/:\n\t\t\t\t\tcase 'extends' /*case 'extends'*/: break;\n\n\t\t\t\t\tcase 'row' /*case 'row'*/: break;\n\t\t\t\t\tdefault: seen = false;\n\t\t\t\t} break;\n\n\t\t\t\t/* SmartTags (can be anything) */\n\t\t\t\tcase 'smarttags' /*case 'SmartTags'*/: break;\n\n\t\t\t\tdefault: seen = false; break;\n\t\t\t}\n\t\t\tif(seen) break;\n\t\t\t/* CustomDocumentProperties */\n\t\t\tif(Rn[3].match(/!\\[CDATA/)) break;\n\t\t\tif(!state[state.length-1][1]) throw 'Unrecognized tag: ' + Rn[3] + \"|\" + state.join(\"|\");\n\t\t\tif(state[state.length-1][0]===/*'CustomDocumentProperties'*/'customdocumentproperties') {\n\t\t\t\tif(Rn[0].slice(-2) === \"/>\") break;\n\t\t\t\telse if(Rn[1]===\"/\") xlml_set_custprop(Custprops, raw_Rn3, cp, str.slice(pidx, Rn.index));\n\t\t\t\telse { cp = Rn; pidx = Rn.index + Rn[0].length; }\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif(opts.WTF) throw 'Unrecognized tag: ' + Rn[3] + \"|\" + state.join(\"|\");\n\t}\n\tvar out = ({}/*:any*/);\n\tif(!opts.bookSheets && !opts.bookProps) out.Sheets = sheets;\n\tout.SheetNames = sheetnames;\n\tout.Workbook = Workbook;\n\tout.SSF = dup(table_fmt);\n\tout.Props = Props;\n\tout.Custprops = Custprops;\n\treturn out;\n}\n\nfunction parse_xlml(data/*:RawBytes|string*/, opts)/*:Workbook*/ {\n\tfix_read_opts(opts=opts||{});\n\tswitch(opts.type||\"base64\") {\n\t\tcase \"base64\": return parse_xlml_xml(Base64_decode(data), opts);\n\t\tcase \"binary\": case \"buffer\": case \"file\": return parse_xlml_xml(data, opts);\n\t\tcase \"array\": return parse_xlml_xml(a2s(data), opts);\n\t}\n\t/*:: throw new Error(\"unsupported type \" + opts.type); */\n}\n\n/* TODO */\nfunction write_props_xlml(wb/*:Workbook*/, opts)/*:string*/ {\n\tvar o/*:Array<string>*/ = [];\n\t/* DocumentProperties */\n\tif(wb.Props) o.push(xlml_write_docprops(wb.Props, opts));\n\t/* CustomDocumentProperties */\n\tif(wb.Custprops) o.push(xlml_write_custprops(wb.Props, wb.Custprops, opts));\n\treturn o.join(\"\");\n}\n/* TODO */\nfunction write_wb_xlml(/*::wb, opts*/)/*:string*/ {\n\t/* OfficeDocumentSettings */\n\t/* ExcelWorkbook */\n\treturn \"\";\n}\n/* TODO */\nfunction write_sty_xlml(wb, opts)/*:string*/ {\n\t/* Styles */\n\tvar styles/*:Array<string>*/ = ['<Style ss:ID=\"Default\" ss:Name=\"Normal\"><NumberFormat/></Style>'];\n\topts.cellXfs.forEach(function(xf, id) {\n\t\tvar payload/*:Array<string>*/ = [];\n\t\tpayload.push(writextag('NumberFormat', null, {\"ss:Format\": escapexml(table_fmt[xf.numFmtId])}));\n\n\t\tvar o = /*::(*/{\"ss:ID\": \"s\" + (21+id)}/*:: :any)*/;\n\t\tstyles.push(writextag('Style', payload.join(\"\"), o));\n\t});\n\treturn writextag(\"Styles\", styles.join(\"\"));\n}\nfunction write_name_xlml(n) { return writextag(\"NamedRange\", null, {\"ss:Name\": n.Name, \"ss:RefersTo\":\"=\" + a1_to_rc(n.Ref, {r:0,c:0})}); }\nfunction write_names_xlml(wb/*::, opts*/)/*:string*/ {\n\tif(!((wb||{}).Workbook||{}).Names) return \"\";\n\t/*:: if(!wb || !wb.Workbook || !wb.Workbook.Names) throw new Error(\"unreachable\"); */\n\tvar names/*:Array<any>*/ = wb.Workbook.Names;\n\tvar out/*:Array<string>*/ = [];\n\tfor(var i = 0; i < names.length; ++i) {\n\t\tvar n = names[i];\n\t\tif(n.Sheet != null) continue;\n\t\tif(n.Name.match(/^_xlfn\\./)) continue;\n\t\tout.push(write_name_xlml(n));\n\t}\n\treturn writextag(\"Names\", out.join(\"\"));\n}\nfunction write_ws_xlml_names(ws/*:Worksheet*/, opts, idx/*:number*/, wb/*:Workbook*/)/*:string*/ {\n\tif(!ws) return \"\";\n\tif(!((wb||{}).Workbook||{}).Names) return \"\";\n\t/*:: if(!wb || !wb.Workbook || !wb.Workbook.Names) throw new Error(\"unreachable\"); */\n\tvar names/*:Array<any>*/ = wb.Workbook.Names;\n\tvar out/*:Array<string>*/ = [];\n\tfor(var i = 0; i < names.length; ++i) {\n\t\tvar n = names[i];\n\t\tif(n.Sheet != idx) continue;\n\t\t/*switch(n.Name) {\n\t\t\tcase \"_\": continue;\n\t\t}*/\n\t\tif(n.Name.match(/^_xlfn\\./)) continue;\n\t\tout.push(write_name_xlml(n));\n\t}\n\treturn out.join(\"\");\n}\n/* WorksheetOptions */\nfunction write_ws_xlml_wsopts(ws/*:Worksheet*/, opts, idx/*:number*/, wb/*:Workbook*/)/*:string*/ {\n\tif(!ws) return \"\";\n\tvar o/*:Array<string>*/ = [];\n\t/* NOTE: spec technically allows any order, but stick with implied order */\n\n\t/* FitToPage */\n\t/* DoNotDisplayColHeaders */\n\t/* DoNotDisplayRowHeaders */\n\t/* ViewableRange */\n\t/* Selection */\n\t/* GridlineColor */\n\t/* Name */\n\t/* ExcelWorksheetType */\n\t/* IntlMacro */\n\t/* Unsynced */\n\t/* Selected */\n\t/* CodeName */\n\n\tif(ws['!margins']) {\n\t\to.push(\"<PageSetup>\");\n\t\tif(ws['!margins'].header) o.push(writextag(\"Header\", null, {'x:Margin':ws['!margins'].header}));\n\t\tif(ws['!margins'].footer) o.push(writextag(\"Footer\", null, {'x:Margin':ws['!margins'].footer}));\n\t\to.push(writextag(\"PageMargins\", null, {\n\t\t\t'x:Bottom': ws['!margins'].bottom || \"0.75\",\n\t\t\t'x:Left': ws['!margins'].left || \"0.7\",\n\t\t\t'x:Right': ws['!margins'].right || \"0.7\",\n\t\t\t'x:Top': ws['!margins'].top || \"0.75\"\n\t\t}));\n\t\to.push(\"</PageSetup>\");\n\t}\n\n\t/* PageSetup */\n\t/* DisplayPageBreak */\n\t/* TransitionExpressionEvaluation */\n\t/* TransitionFormulaEntry */\n\t/* Print */\n\t/* Zoom */\n\t/* PageLayoutZoom */\n\t/* PageBreakZoom */\n\t/* ShowPageBreakZoom */\n\t/* DefaultRowHeight */\n\t/* DefaultColumnWidth */\n\t/* StandardWidth */\n\n\tif(wb && wb.Workbook && wb.Workbook.Sheets && wb.Workbook.Sheets[idx]) {\n\t\t/* Visible */\n\t\tif(wb.Workbook.Sheets[idx].Hidden) o.push(writextag(\"Visible\", (wb.Workbook.Sheets[idx].Hidden == 1 ? \"SheetHidden\" : \"SheetVeryHidden\"), {}));\n\t\telse {\n\t\t\t/* Selected */\n\t\t\tfor(var i = 0; i < idx; ++i) if(wb.Workbook.Sheets[i] && !wb.Workbook.Sheets[i].Hidden) break;\n\t\t\tif(i == idx) o.push(\"<Selected/>\");\n\t\t}\n\t}\n\n\t/* LeftColumnVisible */\n\n\tif(((((wb||{}).Workbook||{}).Views||[])[0]||{}).RTL) o.push(\"<DisplayRightToLeft/>\");\n\n\t/* GridlineColorIndex */\n\t/* DisplayFormulas */\n\t/* DoNotDisplayGridlines */\n\t/* DoNotDisplayHeadings */\n\t/* DoNotDisplayOutline */\n\t/* ApplyAutomaticOutlineStyles */\n\t/* NoSummaryRowsBelowDetail */\n\t/* NoSummaryColumnsRightDetail */\n\t/* DoNotDisplayZeros */\n\t/* ActiveRow */\n\t/* ActiveColumn */\n\t/* FilterOn */\n\t/* RangeSelection */\n\t/* TopRowVisible */\n\t/* TopRowBottomPane */\n\t/* LeftColumnRightPane */\n\t/* ActivePane */\n\t/* SplitHorizontal */\n\t/* SplitVertical */\n\t/* FreezePanes */\n\t/* FrozenNoSplit */\n\t/* TabColorIndex */\n\t/* Panes */\n\n\t/* NOTE: Password not supported in XLML Format */\n\tif(ws['!protect']) {\n\t\to.push(writetag(\"ProtectContents\", \"True\"));\n\t\tif(ws['!protect'].objects) o.push(writetag(\"ProtectObjects\", \"True\"));\n\t\tif(ws['!protect'].scenarios) o.push(writetag(\"ProtectScenarios\", \"True\"));\n\t\tif(ws['!protect'].selectLockedCells != null && !ws['!protect'].selectLockedCells) o.push(writetag(\"EnableSelection\", \"NoSelection\"));\n\t\telse if(ws['!protect'].selectUnlockedCells != null && !ws['!protect'].selectUnlockedCells) o.push(writetag(\"EnableSelection\", \"UnlockedCells\"));\n\t[\n\t\t[ \"formatCells\", \"AllowFormatCells\" ],\n\t\t[ \"formatColumns\", \"AllowSizeCols\" ],\n\t\t[ \"formatRows\", \"AllowSizeRows\" ],\n\t\t[ \"insertColumns\", \"AllowInsertCols\" ],\n\t\t[ \"insertRows\", \"AllowInsertRows\" ],\n\t\t[ \"insertHyperlinks\", \"AllowInsertHyperlinks\" ],\n\t\t[ \"deleteColumns\", \"AllowDeleteCols\" ],\n\t\t[ \"deleteRows\", \"AllowDeleteRows\" ],\n\t\t[ \"sort\", \"AllowSort\" ],\n\t\t[ \"autoFilter\", \"AllowFilter\" ],\n\t\t[ \"pivotTables\", \"AllowUsePivotTables\" ]\n\t].forEach(function(x) { if(ws['!protect'][x[0]]) o.push(\"<\"+x[1]+\"/>\"); });\n\t}\n\n\tif(o.length == 0) return \"\";\n\treturn writextag(\"WorksheetOptions\", o.join(\"\"), {xmlns:XLMLNS.x});\n}\nfunction write_ws_xlml_comment(comments/*:Array<any>*/)/*:string*/ {\n\treturn comments.map(function(c) {\n\t\t// TODO: formatted text\n\t\tvar t = xlml_unfixstr(c.t||\"\");\n\t\tvar d =writextag(\"ss:Data\", t, {\"xmlns\":\"http://www.w3.org/TR/REC-html40\"});\n\t\treturn writextag(\"Comment\", d, {\"ss:Author\":c.a});\n\t}).join(\"\");\n}\nfunction write_ws_xlml_cell(cell, ref/*:string*/, ws, opts, idx/*:number*/, wb, addr)/*:string*/{\n\tif(!cell || (cell.v == undefined && cell.f == undefined)) return \"\";\n\n\tvar attr = {};\n\tif(cell.f) attr[\"ss:Formula\"] = \"=\" + escapexml(a1_to_rc(cell.f, addr));\n\tif(cell.F && cell.F.slice(0, ref.length) == ref) {\n\t\tvar end = decode_cell(cell.F.slice(ref.length + 1));\n\t\tattr[\"ss:ArrayRange\"] = \"RC:R\" + (end.r == addr.r ? \"\" : \"[\" + (end.r - addr.r) + \"]\") + \"C\" + (end.c == addr.c ? \"\" : \"[\" + (end.c - addr.c) + \"]\");\n\t}\n\n\tif(cell.l && cell.l.Target) {\n\t\tattr[\"ss:HRef\"] = escapexml(cell.l.Target);\n\t\tif(cell.l.Tooltip) attr[\"x:HRefScreenTip\"] = escapexml(cell.l.Tooltip);\n\t}\n\n\tif(ws['!merges']) {\n\t\tvar marr = ws['!merges'];\n\t\tfor(var mi = 0; mi != marr.length; ++mi) {\n\t\t\tif(marr[mi].s.c != addr.c || marr[mi].s.r != addr.r) continue;\n\t\t\tif(marr[mi].e.c > marr[mi].s.c) attr['ss:MergeAcross'] = marr[mi].e.c - marr[mi].s.c;\n\t\t\tif(marr[mi].e.r > marr[mi].s.r) attr['ss:MergeDown'] = marr[mi].e.r - marr[mi].s.r;\n\t\t}\n\t}\n\n\tvar t = \"\", p = \"\";\n\tswitch(cell.t) {\n\t\tcase 'z': if(!opts.sheetStubs) return \"\"; break;\n\t\tcase 'n': t = 'Number'; p = String(cell.v); break;\n\t\tcase 'b': t = 'Boolean'; p = (cell.v ? \"1\" : \"0\"); break;\n\t\tcase 'e': t = 'Error'; p = BErr[cell.v]; break;\n\t\tcase 'd': t = 'DateTime'; p = new Date(cell.v).toISOString(); if(cell.z == null) cell.z = cell.z || table_fmt[14]; break;\n\t\tcase 's': t = 'String'; p = escapexlml(cell.v||\"\"); break;\n\t}\n\t/* TODO: cell style */\n\tvar os = get_cell_style(opts.cellXfs, cell, opts);\n\tattr[\"ss:StyleID\"] = \"s\" + (21+os);\n\tattr[\"ss:Index\"] = addr.c + 1;\n\tvar _v = (cell.v != null ? p : \"\");\n\tvar m = cell.t == 'z' ? \"\" : ('<Data ss:Type=\"' + t + '\">' + _v + '</Data>');\n\n\tif((cell.c||[]).length > 0) m += write_ws_xlml_comment(cell.c);\n\n\treturn writextag(\"Cell\", m, attr);\n}\nfunction write_ws_xlml_row(R/*:number*/, row)/*:string*/ {\n\tvar o = '<Row ss:Index=\"' + (R+1) + '\"';\n\tif(row) {\n\t\tif(row.hpt && !row.hpx) row.hpx = pt2px(row.hpt);\n\t\tif(row.hpx) o += ' ss:AutoFitHeight=\"0\" ss:Height=\"' + row.hpx + '\"';\n\t\tif(row.hidden) o += ' ss:Hidden=\"1\"';\n\t}\n\treturn o + '>';\n}\n/* TODO */\nfunction write_ws_xlml_table(ws/*:Worksheet*/, opts, idx/*:number*/, wb/*:Workbook*/)/*:string*/ {\n\tif(!ws['!ref']) return \"\";\n\tvar range/*:Range*/ = safe_decode_range(ws['!ref']);\n\tvar marr/*:Array<Range>*/ = ws['!merges'] || [], mi = 0;\n\tvar o/*:Array<string>*/ = [];\n\tif(ws['!cols']) ws['!cols'].forEach(function(n, i) {\n\t\tprocess_col(n);\n\t\tvar w = !!n.width;\n\t\tvar p = col_obj_w(i, n);\n\t\tvar k/*:any*/ = {\"ss:Index\":i+1};\n\t\tif(w) k['ss:Width'] = width2px(p.width);\n\t\tif(n.hidden) k['ss:Hidden']=\"1\";\n\t\to.push(writextag(\"Column\",null,k));\n\t});\n\tvar dense = Array.isArray(ws);\n\tfor(var R = range.s.r; R <= range.e.r; ++R) {\n\t\tvar row = [write_ws_xlml_row(R, (ws['!rows']||[])[R])];\n\t\tfor(var C = range.s.c; C <= range.e.c; ++C) {\n\t\t\tvar skip = false;\n\t\t\tfor(mi = 0; mi != marr.length; ++mi) {\n\t\t\t\tif(marr[mi].s.c > C) continue;\n\t\t\t\tif(marr[mi].s.r > R) continue;\n\t\t\t\tif(marr[mi].e.c < C) continue;\n\t\t\t\tif(marr[mi].e.r < R) continue;\n\t\t\t\tif(marr[mi].s.c != C || marr[mi].s.r != R) skip = true;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif(skip) continue;\n\t\t\tvar addr = {r:R,c:C};\n\t\t\tvar ref = encode_cell(addr), cell = dense ? (ws[R]||[])[C] : ws[ref];\n\t\t\trow.push(write_ws_xlml_cell(cell, ref, ws, opts, idx, wb, addr));\n\t\t}\n\t\trow.push(\"</Row>\");\n\t\tif(row.length > 2) o.push(row.join(\"\"));\n\t}\n\treturn o.join(\"\");\n}\nfunction write_ws_xlml(idx/*:number*/, opts, wb/*:Workbook*/)/*:string*/ {\n\tvar o/*:Array<string>*/ = [];\n\tvar s = wb.SheetNames[idx];\n\tvar ws = wb.Sheets[s];\n\n\tvar t/*:string*/ = ws ? write_ws_xlml_names(ws, opts, idx, wb) : \"\";\n\tif(t.length > 0) o.push(\"<Names>\" + t + \"</Names>\");\n\n\t/* Table */\n\tt = ws ? write_ws_xlml_table(ws, opts, idx, wb) : \"\";\n\tif(t.length > 0) o.push(\"<Table>\" + t + \"</Table>\");\n\n\t/* WorksheetOptions */\n\to.push(write_ws_xlml_wsopts(ws, opts, idx, wb));\n\n\treturn o.join(\"\");\n}\nfunction write_xlml(wb, opts)/*:string*/ {\n\tif(!opts) opts = {};\n\tif(!wb.SSF) wb.SSF = dup(table_fmt);\n\tif(wb.SSF) {\n\t\tmake_ssf(); SSF_load_table(wb.SSF);\n\t\t// $FlowIgnore\n\t\topts.revssf = evert_num(wb.SSF); opts.revssf[wb.SSF[65535]] = 0;\n\t\topts.ssf = wb.SSF;\n\t\topts.cellXfs = [];\n\t\tget_cell_style(opts.cellXfs, {}, {revssf:{\"General\":0}});\n\t}\n\tvar d/*:Array<string>*/ = [];\n\td.push(write_props_xlml(wb, opts));\n\td.push(write_wb_xlml(wb, opts));\n\td.push(\"\");\n\td.push(\"\");\n\tfor(var i = 0; i < wb.SheetNames.length; ++i)\n\t\td.push(writextag(\"Worksheet\", write_ws_xlml(i, opts, wb), {\"ss:Name\":escapexml(wb.SheetNames[i])}));\n\td[2] = write_sty_xlml(wb, opts);\n\td[3] = write_names_xlml(wb, opts);\n\treturn XML_HEADER + writextag(\"Workbook\", d.join(\"\"), {\n\t\t'xmlns':      XLMLNS.ss,\n\t\t'xmlns:o':    XLMLNS.o,\n\t\t'xmlns:x':    XLMLNS.x,\n\t\t'xmlns:ss':   XLMLNS.ss,\n\t\t'xmlns:dt':   XLMLNS.dt,\n\t\t'xmlns:html': XLMLNS.html\n\t});\n}\n/* [MS-OLEDS] 2.3.8 CompObjStream */\nfunction parse_compobj(obj/*:CFBEntry*/) {\n\tvar v = {};\n\tvar o = obj.content;\n\t/*:: if(o == null) return; */\n\n\t/* [MS-OLEDS] 2.3.7 CompObjHeader -- All fields MUST be ignored */\n\to.l = 28;\n\n\tv.AnsiUserType = o.read_shift(0, \"lpstr-ansi\");\n\tv.AnsiClipboardFormat = parse_ClipboardFormatOrAnsiString(o);\n\n\tif(o.length - o.l <= 4) return v;\n\n\tvar m/*:number*/ = o.read_shift(4);\n\tif(m == 0 || m > 40) return v;\n\to.l-=4; v.Reserved1 = o.read_shift(0, \"lpstr-ansi\");\n\n\tif(o.length - o.l <= 4) return v;\n\tm = o.read_shift(4);\n\tif(m !== 0x71b239f4) return v;\n\tv.UnicodeClipboardFormat = parse_ClipboardFormatOrUnicodeString(o);\n\n\tm = o.read_shift(4);\n\tif(m == 0 || m > 40) return v;\n\to.l-=4; v.Reserved2 = o.read_shift(0, \"lpwstr\");\n}\n\n/*\n\tContinue logic for:\n\t- 2.4.58 Continue          0x003c\n\t- 2.4.59 ContinueBigName   0x043c\n\t- 2.4.60 ContinueFrt       0x0812\n\t- 2.4.61 ContinueFrt11     0x0875\n\t- 2.4.62 ContinueFrt12     0x087f\n*/\nvar CONTINUE_RT = [ 0x003c, 0x043c, 0x0812, 0x0875, 0x087f ];\nfunction slurp(RecordType, R, blob, length/*:number*/, opts)/*:any*/ {\n\tvar l = length;\n\tvar bufs = [];\n\tvar d = blob.slice(blob.l,blob.l+l);\n\tif(opts && opts.enc && opts.enc.insitu && d.length > 0) switch(RecordType) {\n\tcase 0x0009: case 0x0209: case 0x0409: case 0x0809/* BOF */: case 0x002f /* FilePass */: case 0x0195 /* FileLock */: case 0x00e1 /* InterfaceHdr */: case 0x0196 /* RRDInfo */: case 0x0138 /* RRDHead */: case 0x0194 /* UsrExcl */: case 0x000a /* EOF */:\n\t\tbreak;\n\tcase 0x0085 /* BoundSheet8 */:\n\t\tbreak;\n\tdefault:\n\t\topts.enc.insitu(d);\n\t}\n\tbufs.push(d);\n\tblob.l += l;\n\tvar nextrt = __readUInt16LE(blob,blob.l), next = XLSRecordEnum[nextrt];\n\tvar start = 0;\n\twhile(next != null && CONTINUE_RT.indexOf(nextrt) > -1) {\n\t\tl = __readUInt16LE(blob,blob.l+2);\n\t\tstart = blob.l + 4;\n\t\tif(nextrt == 0x0812 /* ContinueFrt */) start += 4;\n\t\telse if(nextrt == 0x0875 || nextrt == 0x087f) {\n\t\t\tstart += 12;\n\t\t}\n\t\td = blob.slice(start,blob.l+4+l);\n\t\tbufs.push(d);\n\t\tblob.l += 4+l;\n\t\tnext = (XLSRecordEnum[nextrt = __readUInt16LE(blob, blob.l)]);\n\t}\n\tvar b = (bconcat(bufs)/*:any*/);\n\tprep_blob(b, 0);\n\tvar ll = 0; b.lens = [];\n\tfor(var j = 0; j < bufs.length; ++j) { b.lens.push(ll); ll += bufs[j].length; }\n\tif(b.length < length) throw \"XLS Record 0x\" + RecordType.toString(16) + \" Truncated: \" + b.length + \" < \" + length;\n\treturn R.f(b, b.length, opts);\n}\n\nfunction safe_format_xf(p/*:any*/, opts/*:ParseOpts*/, date1904/*:?boolean*/) {\n\tif(p.t === 'z') return;\n\tif(!p.XF) return;\n\tvar fmtid = 0;\n\ttry {\n\t\tfmtid = p.z || p.XF.numFmtId || 0;\n\t\tif(opts.cellNF) p.z = table_fmt[fmtid];\n\t} catch(e) { if(opts.WTF) throw e; }\n\tif(!opts || opts.cellText !== false) try {\n\t\tif(p.t === 'e') { p.w = p.w || BErr[p.v]; }\n\t\telse if(fmtid === 0 || fmtid == \"General\") {\n\t\t\tif(p.t === 'n') {\n\t\t\t\tif((p.v|0) === p.v) p.w = p.v.toString(10);\n\t\t\t\telse p.w = SSF_general_num(p.v);\n\t\t\t}\n\t\t\telse p.w = SSF_general(p.v);\n\t\t}\n\t\telse p.w = SSF_format(fmtid,p.v, {date1904:!!date1904, dateNF: opts && opts.dateNF});\n\t} catch(e) { if(opts.WTF) throw e; }\n\tif(opts.cellDates && fmtid && p.t == 'n' && fmt_is_date(table_fmt[fmtid] || String(fmtid))) {\n\t\tvar _d = SSF_parse_date_code(p.v); if(_d) { p.t = 'd'; p.v = new Date(_d.y, _d.m-1,_d.d,_d.H,_d.M,_d.S,_d.u); }\n\t}\n}\n\nfunction make_cell(val, ixfe, t)/*:Cell*/ {\n\treturn ({v:val, ixfe:ixfe, t:t}/*:any*/);\n}\n\n// 2.3.2\nfunction parse_workbook(blob, options/*:ParseOpts*/)/*:Workbook*/ {\n\tvar wb = ({opts:{}}/*:any*/);\n\tvar Sheets = {};\n\tif(DENSE != null && options.dense == null) options.dense = DENSE;\n\tvar out/*:Worksheet*/ = ((options.dense ? [] : {})/*:any*/);\n\tvar Directory = {};\n\tvar range/*:Range*/ = ({}/*:any*/);\n\tvar last_formula = null;\n\tvar sst/*:SST*/ = ([]/*:any*/);\n\tvar cur_sheet = \"\";\n\tvar Preamble = {};\n\tvar lastcell, last_cell = \"\", cc/*:Cell*/, cmnt, rngC, rngR;\n\tvar sharedf = {};\n\tvar arrayf/*:Array<[Range, string]>*/ = [];\n\tvar temp_val/*:Cell*/;\n\tvar country;\n\tvar XFs = []; /* XF records */\n\tvar palette/*:Array<[number, number, number]>*/ = [];\n\tvar Workbook/*:WBWBProps*/ = ({ Sheets:[], WBProps:{date1904:false}, Views:[{}] }/*:any*/), wsprops = {};\n\tvar get_rgb = function getrgb(icv/*:number*/)/*:[number, number, number]*/ {\n\t\tif(icv < 8) return XLSIcv[icv];\n\t\tif(icv < 64) return palette[icv-8] || XLSIcv[icv];\n\t\treturn XLSIcv[icv];\n\t};\n\tvar process_cell_style = function pcs(cell, line/*:any*/, options) {\n\t\tvar xfd = line.XF.data;\n\t\tif(!xfd || !xfd.patternType || !options || !options.cellStyles) return;\n\t\tline.s = ({}/*:any*/);\n\t\tline.s.patternType = xfd.patternType;\n\t\tvar t;\n\t\tif((t = rgb2Hex(get_rgb(xfd.icvFore)))) { line.s.fgColor = {rgb:t}; }\n\t\tif((t = rgb2Hex(get_rgb(xfd.icvBack)))) { line.s.bgColor = {rgb:t}; }\n\t};\n\tvar addcell = function addcell(cell/*:any*/, line/*:any*/, options/*:any*/) {\n\t\tif(file_depth > 1) return;\n\t\tif(options.sheetRows && cell.r >= options.sheetRows) return;\n\t\tif(options.cellStyles && line.XF && line.XF.data) process_cell_style(cell, line, options);\n\t\tdelete line.ixfe; delete line.XF;\n\t\tlastcell = cell;\n\t\tlast_cell = encode_cell(cell);\n\t\tif(!range || !range.s || !range.e) range = {s:{r:0,c:0},e:{r:0,c:0}};\n\t\tif(cell.r < range.s.r) range.s.r = cell.r;\n\t\tif(cell.c < range.s.c) range.s.c = cell.c;\n\t\tif(cell.r + 1 > range.e.r) range.e.r = cell.r + 1;\n\t\tif(cell.c + 1 > range.e.c) range.e.c = cell.c + 1;\n\t\tif(options.cellFormula && line.f) {\n\t\t\tfor(var afi = 0; afi < arrayf.length; ++afi) {\n\t\t\t\tif(arrayf[afi][0].s.c > cell.c || arrayf[afi][0].s.r > cell.r) continue;\n\t\t\t\tif(arrayf[afi][0].e.c < cell.c || arrayf[afi][0].e.r < cell.r) continue;\n\t\t\t\tline.F = encode_range(arrayf[afi][0]);\n\t\t\t\tif(arrayf[afi][0].s.c != cell.c || arrayf[afi][0].s.r != cell.r) delete line.f;\n\t\t\t\tif(line.f) line.f = \"\" + stringify_formula(arrayf[afi][1], range, cell, supbooks, opts);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\t{\n\t\t\tif(options.dense) {\n\t\t\t\tif(!out[cell.r]) out[cell.r] = [];\n\t\t\t\tout[cell.r][cell.c] = line;\n\t\t\t} else out[last_cell] = line;\n\t\t}\n\t};\n\tvar opts = ({\n\t\tenc: false, // encrypted\n\t\tsbcch: 0, // cch in the preceding SupBook\n\t\tsnames: [], // sheetnames\n\t\tsharedf: sharedf, // shared formulae by address\n\t\tarrayf: arrayf, // array formulae array\n\t\trrtabid: [], // RRTabId\n\t\tlastuser: \"\", // Last User from WriteAccess\n\t\tbiff: 8, // BIFF version\n\t\tcodepage: 0, // CP from CodePage record\n\t\twinlocked: 0, // fLockWn from WinProtect\n\t\tcellStyles: !!options && !!options.cellStyles,\n\t\tWTF: !!options && !!options.wtf\n\t}/*:any*/);\n\tif(options.password) opts.password = options.password;\n\tvar themes;\n\tvar merges/*:Array<Range>*/ = [];\n\tvar objects = [];\n\tvar colinfo/*:Array<ColInfo>*/ = [], rowinfo/*:Array<RowInfo>*/ = [];\n\tvar seencol = false;\n\tvar supbooks = ([]/*:any*/); // 1-indexed, will hold extern names\n\tsupbooks.SheetNames = opts.snames;\n\tsupbooks.sharedf = opts.sharedf;\n\tsupbooks.arrayf = opts.arrayf;\n\tsupbooks.names = [];\n\tsupbooks.XTI = [];\n\tvar last_RT = 0;\n\tvar file_depth = 0; /* TODO: make a real stack */\n\tvar BIFF2Fmt = 0, BIFF2FmtTable/*:Array<string>*/ = [];\n\tvar FilterDatabases = []; /* TODO: sort out supbooks and process elsewhere */\n\tvar last_lbl/*:?DefinedName*/;\n\n\t/* explicit override for some broken writers */\n\topts.codepage = 1200;\n\tset_cp(1200);\n\tvar seen_codepage = false;\n\twhile(blob.l < blob.length - 1) {\n\t\tvar s = blob.l;\n\t\tvar RecordType = blob.read_shift(2);\n\t\tif(RecordType === 0 && last_RT === 0x000a /* EOF */) break;\n\t\tvar length = (blob.l === blob.length ? 0 : blob.read_shift(2));\n\t\tvar R = XLSRecordEnum[RecordType];\n\t\t//console.log(RecordType.toString(16), RecordType, R, blob.l, length, blob.length);\n\t\t//if(!R) console.log(blob.slice(blob.l, blob.l + length));\n\t\tif(R && R.f) {\n\t\t\tif(options.bookSheets) {\n\t\t\t\tif(last_RT === 0x0085 /* BoundSheet8 */ && RecordType !== 0x0085 /* R.n !== 'BoundSheet8' */) break;\n\t\t\t}\n\t\t\tlast_RT = RecordType;\n\t\t\tif(R.r === 2 || R.r == 12) {\n\t\t\t\tvar rt = blob.read_shift(2); length -= 2;\n\t\t\t\tif(!opts.enc && rt !== RecordType && (((rt&0xFF)<<8)|(rt>>8)) !== RecordType) throw new Error(\"rt mismatch: \" + rt + \"!=\" + RecordType);\n\t\t\t\tif(R.r == 12){\n\t\t\t\t\tblob.l += 10; length -= 10;\n\t\t\t\t} // skip FRT\n\t\t\t}\n\t\t\t//console.error(R,blob.l,length,blob.length);\n\t\t\tvar val/*:any*/ = ({}/*:any*/);\n\t\t\tif(RecordType === 0x000a /* EOF */) val = /*::(*/R.f(blob, length, opts)/*:: :any)*/;\n\t\t\telse val = /*::(*/slurp(RecordType, R, blob, length, opts)/*:: :any)*/;\n\t\t\t/*:: val = (val:any); */\n\t\t\tif(file_depth == 0 && [0x0009, 0x0209, 0x0409, 0x0809].indexOf(last_RT) === -1 /* 'BOF' */) continue;\n\t\t\tswitch(RecordType) {\n\t\t\t\tcase 0x0022 /* Date1904 */:\n\t\t\t\t\t/*:: if(!Workbook.WBProps) Workbook.WBProps = {}; */\n\t\t\t\t\twb.opts.Date1904 = Workbook.WBProps.date1904 = val; break;\n\t\t\t\tcase 0x0086 /* WriteProtect */: wb.opts.WriteProtect = true; break;\n\t\t\t\tcase 0x002f /* FilePass */:\n\t\t\t\t\tif(!opts.enc) blob.l = 0;\n\t\t\t\t\topts.enc = val;\n\t\t\t\t\tif(!options.password) throw new Error(\"File is password-protected\");\n\t\t\t\t\tif(val.valid == null) throw new Error(\"Encryption scheme unsupported\");\n\t\t\t\t\tif(!val.valid) throw new Error(\"Password is incorrect\");\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0x005c /* WriteAccess */: opts.lastuser = val; break;\n\t\t\t\tcase 0x0042 /* CodePage */:\n\t\t\t\t\tvar cpval = Number(val);\n\t\t\t\t\t/* overrides based on test cases */\n\t\t\t\t\tswitch(cpval) {\n\t\t\t\t\t\tcase 0x5212: cpval =  1200; break;\n\t\t\t\t\t\tcase 0x8000: cpval = 10000; break;\n\t\t\t\t\t\tcase 0x8001: cpval =  1252; break;\n\t\t\t\t\t}\n\t\t\t\t\tset_cp(opts.codepage = cpval);\n\t\t\t\t\tseen_codepage = true;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0x013d /* RRTabId */: opts.rrtabid = val; break;\n\t\t\t\tcase 0x0019 /* WinProtect */: opts.winlocked = val; break;\n\t\t\t\tcase 0x01b7 /* RefreshAll */: wb.opts[\"RefreshAll\"] = val; break;\n\t\t\t\tcase 0x000c /* CalcCount */: wb.opts[\"CalcCount\"] = val; break;\n\t\t\t\tcase 0x0010 /* CalcDelta */: wb.opts[\"CalcDelta\"] = val; break;\n\t\t\t\tcase 0x0011 /* CalcIter */: wb.opts[\"CalcIter\"] = val; break;\n\t\t\t\tcase 0x000d /* CalcMode */: wb.opts[\"CalcMode\"] = val; break;\n\t\t\t\tcase 0x000e /* CalcPrecision */: wb.opts[\"CalcPrecision\"] = val; break;\n\t\t\t\tcase 0x005f /* CalcSaveRecalc */: wb.opts[\"CalcSaveRecalc\"] = val; break;\n\t\t\t\tcase 0x000f /* CalcRefMode */: opts.CalcRefMode = val; break; // TODO: implement R1C1\n\t\t\t\tcase 0x08a3 /* ForceFullCalculation */: wb.opts.FullCalc = val; break;\n\t\t\t\tcase 0x0081 /* WsBool */:\n\t\t\t\t\tif(val.fDialog) out[\"!type\"] = \"dialog\";\n\t\t\t\t\tif(!val.fBelow) (out[\"!outline\"] || (out[\"!outline\"] = {})).above = true;\n\t\t\t\t\tif(!val.fRight) (out[\"!outline\"] || (out[\"!outline\"] = {})).left = true;\n\t\t\t\t\tbreak; // TODO\n\t\t\t\tcase 0x00e0 /* XF */:\n\t\t\t\t\tXFs.push(val); break;\n\t\t\t\tcase 0x01ae /* SupBook */:\n\t\t\t\t\tsupbooks.push([val]);\n\t\t\t\t\tsupbooks[supbooks.length-1].XTI = [];\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0x0023: case 0x0223 /* ExternName */:\n\t\t\t\t\tsupbooks[supbooks.length-1].push(val);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0x0018: case 0x0218 /* Lbl */:\n\t\t\t\t\tlast_lbl = ({\n\t\t\t\t\t\tName: val.Name,\n\t\t\t\t\t\tRef: stringify_formula(val.rgce,range,null,supbooks,opts)\n\t\t\t\t\t}/*:DefinedName*/);\n\t\t\t\t\tif(val.itab > 0) last_lbl.Sheet = val.itab - 1;\n\t\t\t\t\tsupbooks.names.push(last_lbl);\n\t\t\t\t\tif(!supbooks[0]) { supbooks[0] = []; supbooks[0].XTI = []; }\n\t\t\t\t\tsupbooks[supbooks.length-1].push(val);\n\t\t\t\t\tif(val.Name == \"_xlnm._FilterDatabase\" && val.itab > 0)\n\t\t\t\t\t\tif(val.rgce && val.rgce[0] && val.rgce[0][0] && val.rgce[0][0][0] == 'PtgArea3d')\n\t\t\t\t\t\t\tFilterDatabases[val.itab - 1] = { ref: encode_range(val.rgce[0][0][1][2]) };\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0x0016 /* ExternCount */: opts.ExternCount = val; break;\n\t\t\t\tcase 0x0017 /* ExternSheet */:\n\t\t\t\t\tif(supbooks.length == 0) { supbooks[0] = []; supbooks[0].XTI = []; }\n\t\t\t\t\tsupbooks[supbooks.length - 1].XTI = supbooks[supbooks.length - 1].XTI.concat(val); supbooks.XTI = supbooks.XTI.concat(val); break;\n\t\t\t\tcase 0x0894 /* NameCmt */:\n\t\t\t\t\t/* TODO: search for correct name */\n\t\t\t\t\tif(opts.biff < 8) break;\n\t\t\t\t\tif(last_lbl != null) last_lbl.Comment = val[1];\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0x0012 /* Protect */: out[\"!protect\"] = val; break; /* for sheet or book */\n\t\t\t\tcase 0x0013 /* Password */: if(val !== 0 && opts.WTF) console.error(\"Password verifier: \" + val); break;\n\t\t\t\tcase 0x0085 /* BoundSheet8 */: {\n\t\t\t\t\tDirectory[val.pos] = val;\n\t\t\t\t\topts.snames.push(val.name);\n\t\t\t\t} break;\n\t\t\t\tcase 0x000a /* EOF */: {\n\t\t\t\t\tif(--file_depth) break;\n\t\t\t\t\tif(range.e) {\n\t\t\t\t\t\tif(range.e.r > 0 && range.e.c > 0) {\n\t\t\t\t\t\t\trange.e.r--; range.e.c--;\n\t\t\t\t\t\t\tout[\"!ref\"] = encode_range(range);\n\t\t\t\t\t\t\tif(options.sheetRows && options.sheetRows <= range.e.r) {\n\t\t\t\t\t\t\t\tvar tmpri = range.e.r;\n\t\t\t\t\t\t\t\trange.e.r = options.sheetRows - 1;\n\t\t\t\t\t\t\t\tout[\"!fullref\"] = out[\"!ref\"];\n\t\t\t\t\t\t\t\tout[\"!ref\"] = encode_range(range);\n\t\t\t\t\t\t\t\trange.e.r = tmpri;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\trange.e.r++; range.e.c++;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif(merges.length > 0) out[\"!merges\"] = merges;\n\t\t\t\t\t\tif(objects.length > 0) out[\"!objects\"] = objects;\n\t\t\t\t\t\tif(colinfo.length > 0) out[\"!cols\"] = colinfo;\n\t\t\t\t\t\tif(rowinfo.length > 0) out[\"!rows\"] = rowinfo;\n\t\t\t\t\t\tWorkbook.Sheets.push(wsprops);\n\t\t\t\t\t}\n\t\t\t\t\tif(cur_sheet === \"\") Preamble = out; else Sheets[cur_sheet] = out;\n\t\t\t\t\tout = ((options.dense ? [] : {})/*:any*/);\n\t\t\t\t} break;\n\t\t\t\tcase 0x0009: case 0x0209: case 0x0409: case 0x0809 /* BOF */: {\n\t\t\t\t\tif(opts.biff === 8) opts.biff = {\n\t\t\t\t\t\t/*::[*/0x0009/*::]*/:2,\n\t\t\t\t\t\t/*::[*/0x0209/*::]*/:3,\n\t\t\t\t\t\t/*::[*/0x0409/*::]*/:4\n\t\t\t\t\t}[RecordType] || {\n\t\t\t\t\t\t/*::[*/0x0200/*::]*/:2,\n\t\t\t\t\t\t/*::[*/0x0300/*::]*/:3,\n\t\t\t\t\t\t/*::[*/0x0400/*::]*/:4,\n\t\t\t\t\t\t/*::[*/0x0500/*::]*/:5,\n\t\t\t\t\t\t/*::[*/0x0600/*::]*/:8,\n\t\t\t\t\t\t/*::[*/0x0002/*::]*/:2,\n\t\t\t\t\t\t/*::[*/0x0007/*::]*/:2\n\t\t\t\t\t}[val.BIFFVer] || 8;\n\t\t\t\t\topts.biffguess = val.BIFFVer == 0;\n\t\t\t\t\tif(val.BIFFVer == 0 && val.dt == 0x1000) { opts.biff = 5; seen_codepage = true; set_cp(opts.codepage = 28591); }\n\t\t\t\t\tif(opts.biff == 8 && val.BIFFVer == 0 && val.dt == 16) opts.biff = 2;\n\t\t\t\t\tif(file_depth++) break;\n\t\t\t\t\tout = ((options.dense ? [] : {})/*:any*/);\n\n\t\t\t\t\tif(opts.biff < 8 && !seen_codepage) { seen_codepage = true; set_cp(opts.codepage = options.codepage || 1252); }\n\n\t\t\t\t\tif(opts.biff < 5 || val.BIFFVer == 0 && val.dt == 0x1000) {\n\t\t\t\t\t\tif(cur_sheet === \"\") cur_sheet = \"Sheet1\";\n\t\t\t\t\t\trange = {s:{r:0,c:0},e:{r:0,c:0}};\n\t\t\t\t\t\t/* fake BoundSheet8 */\n\t\t\t\t\t\tvar fakebs8 = {pos: blob.l - length, name:cur_sheet};\n\t\t\t\t\t\tDirectory[fakebs8.pos] = fakebs8;\n\t\t\t\t\t\topts.snames.push(cur_sheet);\n\t\t\t\t\t}\n\t\t\t\t\telse cur_sheet = (Directory[s] || {name:\"\"}).name;\n\t\t\t\t\tif(val.dt == 0x20) out[\"!type\"] = \"chart\";\n\t\t\t\t\tif(val.dt == 0x40) out[\"!type\"] = \"macro\";\n\t\t\t\t\tmerges = [];\n\t\t\t\t\tobjects = [];\n\t\t\t\t\topts.arrayf = arrayf = [];\n\t\t\t\t\tcolinfo = []; rowinfo = [];\n\t\t\t\t\tseencol = false;\n\t\t\t\t\twsprops = {Hidden:(Directory[s]||{hs:0}).hs, name:cur_sheet };\n\t\t\t\t} break;\n\t\t\t\tcase 0x0203 /* Number */: case 0x0003 /* BIFF2NUM */: case 0x0002 /* BIFF2INT */: {\n\t\t\t\t\tif(out[\"!type\"] == \"chart\") if(options.dense ? (out[val.r]||[])[val.c]: out[encode_cell({c:val.c, r:val.r})]) ++val.c;\n\t\t\t\t\ttemp_val = ({ixfe: val.ixfe, XF: XFs[val.ixfe]||{}, v:val.val, t:'n'}/*:any*/);\n\t\t\t\t\tif(BIFF2Fmt > 0) temp_val.z = BIFF2FmtTable[(temp_val.ixfe>>8) & 0x3F];\n\t\t\t\t\tsafe_format_xf(temp_val, options, wb.opts.Date1904);\n\t\t\t\t\taddcell({c:val.c, r:val.r}, temp_val, options);\n\t\t\t\t} break;\n\t\t\t\tcase 0x0005: case 0x0205 /* BoolErr */: {\n\t\t\t\t\ttemp_val = ({ixfe: val.ixfe, XF: XFs[val.ixfe], v:val.val, t:val.t}/*:any*/);\n\t\t\t\t\tif(BIFF2Fmt > 0) temp_val.z = BIFF2FmtTable[(temp_val.ixfe>>8) & 0x3F];\n\t\t\t\t\tsafe_format_xf(temp_val, options, wb.opts.Date1904);\n\t\t\t\t\taddcell({c:val.c, r:val.r}, temp_val, options);\n\t\t\t\t} break;\n\t\t\t\tcase 0x027e /* RK */: {\n\t\t\t\t\ttemp_val = ({ixfe: val.ixfe, XF: XFs[val.ixfe], v:val.rknum, t:'n'}/*:any*/);\n\t\t\t\t\tif(BIFF2Fmt > 0) temp_val.z = BIFF2FmtTable[(temp_val.ixfe>>8) & 0x3F];\n\t\t\t\t\tsafe_format_xf(temp_val, options, wb.opts.Date1904);\n\t\t\t\t\taddcell({c:val.c, r:val.r}, temp_val, options);\n\t\t\t\t} break;\n\t\t\t\tcase 0x00bd /* MulRk */: {\n\t\t\t\t\tfor(var j = val.c; j <= val.C; ++j) {\n\t\t\t\t\t\tvar ixfe = val.rkrec[j-val.c][0];\n\t\t\t\t\t\ttemp_val= ({ixfe:ixfe, XF:XFs[ixfe], v:val.rkrec[j-val.c][1], t:'n'}/*:any*/);\n\t\t\t\t\t\tif(BIFF2Fmt > 0) temp_val.z = BIFF2FmtTable[(temp_val.ixfe>>8) & 0x3F];\n\t\t\t\t\t\tsafe_format_xf(temp_val, options, wb.opts.Date1904);\n\t\t\t\t\t\taddcell({c:j, r:val.r}, temp_val, options);\n\t\t\t\t\t}\n\t\t\t\t} break;\n\t\t\t\tcase 0x0006: case 0x0206: case 0x0406 /* Formula */: {\n\t\t\t\t\tif(val.val == 'String') { last_formula = val; break; }\n\t\t\t\t\ttemp_val = make_cell(val.val, val.cell.ixfe, val.tt);\n\t\t\t\t\ttemp_val.XF = XFs[temp_val.ixfe];\n\t\t\t\t\tif(options.cellFormula) {\n\t\t\t\t\t\tvar _f = val.formula;\n\t\t\t\t\t\tif(_f && _f[0] && _f[0][0] && _f[0][0][0] == 'PtgExp') {\n\t\t\t\t\t\t\tvar _fr = _f[0][0][1][0], _fc = _f[0][0][1][1];\n\t\t\t\t\t\t\tvar _fe = encode_cell({r:_fr, c:_fc});\n\t\t\t\t\t\t\tif(sharedf[_fe]) temp_val.f = \"\"+stringify_formula(val.formula,range,val.cell,supbooks, opts);\n\t\t\t\t\t\t\telse temp_val.F = ((options.dense ? (out[_fr]||[])[_fc]: out[_fe]) || {}).F;\n\t\t\t\t\t\t} else temp_val.f = \"\"+stringify_formula(val.formula,range,val.cell,supbooks, opts);\n\t\t\t\t\t}\n\t\t\t\t\tif(BIFF2Fmt > 0) temp_val.z = BIFF2FmtTable[(temp_val.ixfe>>8) & 0x3F];\n\t\t\t\t\tsafe_format_xf(temp_val, options, wb.opts.Date1904);\n\t\t\t\t\taddcell(val.cell, temp_val, options);\n\t\t\t\t\tlast_formula = val;\n\t\t\t\t} break;\n\t\t\t\tcase 0x0007: case 0x0207 /* String */: {\n\t\t\t\t\tif(last_formula) { /* technically always true */\n\t\t\t\t\t\tlast_formula.val = val;\n\t\t\t\t\t\ttemp_val = make_cell(val, last_formula.cell.ixfe, 's');\n\t\t\t\t\t\ttemp_val.XF = XFs[temp_val.ixfe];\n\t\t\t\t\t\tif(options.cellFormula) {\n\t\t\t\t\t\t\ttemp_val.f = \"\"+stringify_formula(last_formula.formula, range, last_formula.cell, supbooks, opts);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif(BIFF2Fmt > 0) temp_val.z = BIFF2FmtTable[(temp_val.ixfe>>8) & 0x3F];\n\t\t\t\t\t\tsafe_format_xf(temp_val, options, wb.opts.Date1904);\n\t\t\t\t\t\taddcell(last_formula.cell, temp_val, options);\n\t\t\t\t\t\tlast_formula = null;\n\t\t\t\t\t} else throw new Error(\"String record expects Formula\");\n\t\t\t\t} break;\n\t\t\t\tcase 0x0021: case 0x0221 /* Array */: {\n\t\t\t\t\tarrayf.push(val);\n\t\t\t\t\tvar _arraystart = encode_cell(val[0].s);\n\t\t\t\t\tcc = options.dense ? (out[val[0].s.r]||[])[val[0].s.c] : out[_arraystart];\n\t\t\t\t\tif(options.cellFormula && cc) {\n\t\t\t\t\t\tif(!last_formula) break; /* technically unreachable */\n\t\t\t\t\t\tif(!_arraystart || !cc) break;\n\t\t\t\t\t\tcc.f = \"\"+stringify_formula(val[1], range, val[0], supbooks, opts);\n\t\t\t\t\t\tcc.F = encode_range(val[0]);\n\t\t\t\t\t}\n\t\t\t\t} break;\n\t\t\t\tcase 0x04bc /* ShrFmla */: {\n\t\t\t\t\tif(!options.cellFormula) break;\n\t\t\t\t\tif(last_cell) {\n\t\t\t\t\t\t/* TODO: capture range */\n\t\t\t\t\t\tif(!last_formula) break; /* technically unreachable */\n\t\t\t\t\t\tsharedf[encode_cell(last_formula.cell)]= val[0];\n\t\t\t\t\t\tcc = options.dense ? (out[last_formula.cell.r]||[])[last_formula.cell.c] : out[encode_cell(last_formula.cell)];\n\t\t\t\t\t\t(cc||{}).f = \"\"+stringify_formula(val[0], range, lastcell, supbooks, opts);\n\t\t\t\t\t}\n\t\t\t\t} break;\n\t\t\t\tcase 0x00fd /* LabelSst */:\n\t\t\t\t\ttemp_val=make_cell(sst[val.isst].t, val.ixfe, 's');\n\t\t\t\t\tif(sst[val.isst].h) temp_val.h = sst[val.isst].h;\n\t\t\t\t\ttemp_val.XF = XFs[temp_val.ixfe];\n\t\t\t\t\tif(BIFF2Fmt > 0) temp_val.z = BIFF2FmtTable[(temp_val.ixfe>>8) & 0x3F];\n\t\t\t\t\tsafe_format_xf(temp_val, options, wb.opts.Date1904);\n\t\t\t\t\taddcell({c:val.c, r:val.r}, temp_val, options);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0x0201 /* Blank */: if(options.sheetStubs) {\n\t\t\t\t\ttemp_val = ({ixfe: val.ixfe, XF: XFs[val.ixfe], t:'z'}/*:any*/);\n\t\t\t\t\tif(BIFF2Fmt > 0) temp_val.z = BIFF2FmtTable[(temp_val.ixfe>>8) & 0x3F];\n\t\t\t\t\tsafe_format_xf(temp_val, options, wb.opts.Date1904);\n\t\t\t\t\taddcell({c:val.c, r:val.r}, temp_val, options);\n\t\t\t\t} break;\n\t\t\t\tcase 0x00be /* MulBlank */: if(options.sheetStubs) {\n\t\t\t\t\tfor(var _j = val.c; _j <= val.C; ++_j) {\n\t\t\t\t\t\tvar _ixfe = val.ixfe[_j-val.c];\n\t\t\t\t\t\ttemp_val= ({ixfe:_ixfe, XF:XFs[_ixfe], t:'z'}/*:any*/);\n\t\t\t\t\t\tif(BIFF2Fmt > 0) temp_val.z = BIFF2FmtTable[(temp_val.ixfe>>8) & 0x3F];\n\t\t\t\t\t\tsafe_format_xf(temp_val, options, wb.opts.Date1904);\n\t\t\t\t\t\taddcell({c:_j, r:val.r}, temp_val, options);\n\t\t\t\t\t}\n\t\t\t\t} break;\n\t\t\t\tcase 0x00d6 /* RString */:\n\t\t\t\tcase 0x0204 /* Label */: case 0x0004 /* BIFF2STR */:\n\t\t\t\t\ttemp_val=make_cell(val.val, val.ixfe, 's');\n\t\t\t\t\ttemp_val.XF = XFs[temp_val.ixfe];\n\t\t\t\t\tif(BIFF2Fmt > 0) temp_val.z = BIFF2FmtTable[(temp_val.ixfe>>8) & 0x3F];\n\t\t\t\t\tsafe_format_xf(temp_val, options, wb.opts.Date1904);\n\t\t\t\t\taddcell({c:val.c, r:val.r}, temp_val, options);\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 0x0000: case 0x0200 /* Dimensions */: {\n\t\t\t\t\tif(file_depth === 1) range = val; /* TODO: stack */\n\t\t\t\t} break;\n\t\t\t\tcase 0x00fc /* SST */: {\n\t\t\t\t\tsst = val;\n\t\t\t\t} break;\n\t\t\t\tcase 0x041e /* Format */: { /* val = [id, fmt] */\n\t\t\t\t\tif(opts.biff == 4) {\n\t\t\t\t\t\tBIFF2FmtTable[BIFF2Fmt++] = val[1];\n\t\t\t\t\t\tfor(var b4idx = 0; b4idx < BIFF2Fmt + 163; ++b4idx) if(table_fmt[b4idx] == val[1]) break;\n\t\t\t\t\t\tif(b4idx >= 163) SSF_load(val[1], BIFF2Fmt + 163);\n\t\t\t\t\t}\n\t\t\t\t\telse SSF_load(val[1], val[0]);\n\t\t\t\t} break;\n\t\t\t\tcase 0x001e /* BIFF2FORMAT */: {\n\t\t\t\t\tBIFF2FmtTable[BIFF2Fmt++] = val;\n\t\t\t\t\tfor(var b2idx = 0; b2idx < BIFF2Fmt + 163; ++b2idx) if(table_fmt[b2idx] == val) break;\n\t\t\t\t\tif(b2idx >= 163) SSF_load(val, BIFF2Fmt + 163);\n\t\t\t\t} break;\n\n\t\t\t\tcase 0x00e5 /* MergeCells */: merges = merges.concat(val); break;\n\n\t\t\t\tcase 0x005d /* Obj */: objects[val.cmo[0]] = opts.lastobj = val; break;\n\t\t\t\tcase 0x01b6 /* TxO */: opts.lastobj.TxO = val; break;\n\t\t\t\tcase 0x007f /* ImData */: opts.lastobj.ImData = val; break;\n\n\t\t\t\tcase 0x01b8 /* HLink */: {\n\t\t\t\t\tfor(rngR = val[0].s.r; rngR <= val[0].e.r; ++rngR)\n\t\t\t\t\t\tfor(rngC = val[0].s.c; rngC <= val[0].e.c; ++rngC) {\n\t\t\t\t\t\t\tcc = options.dense ? (out[rngR]||[])[rngC] : out[encode_cell({c:rngC,r:rngR})];\n\t\t\t\t\t\t\tif(cc) cc.l = val[1];\n\t\t\t\t\t\t}\n\t\t\t\t} break;\n\t\t\t\tcase 0x0800 /* HLinkTooltip */: {\n\t\t\t\t\tfor(rngR = val[0].s.r; rngR <= val[0].e.r; ++rngR)\n\t\t\t\t\t\tfor(rngC = val[0].s.c; rngC <= val[0].e.c; ++rngC) {\n\t\t\t\t\t\t\tcc = options.dense ? (out[rngR]||[])[rngC] : out[encode_cell({c:rngC,r:rngR})];\n\t\t\t\t\t\t\tif(cc && cc.l) cc.l.Tooltip = val[1];\n\t\t\t\t\t\t\t}\n\t\t\t\t} break;\n\t\t\t\tcase 0x001c /* Note */: {\n\t\t\t\t\tif(opts.biff <= 5 && opts.biff >= 2) break; /* TODO: BIFF5 */\n\t\t\t\t\tcc = options.dense ? (out[val[0].r]||[])[val[0].c] : out[encode_cell(val[0])];\n\t\t\t\t\tvar noteobj = objects[val[2]];\n\t\t\t\t\tif(!cc) {\n\t\t\t\t\t\tif(options.dense) {\n\t\t\t\t\t\t\tif(!out[val[0].r]) out[val[0].r] = [];\n\t\t\t\t\t\t\tcc = out[val[0].r][val[0].c] = ({t:\"z\"}/*:any*/);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tcc = out[encode_cell(val[0])] = ({t:\"z\"}/*:any*/);\n\t\t\t\t\t\t}\n\t\t\t\t\t\trange.e.r = Math.max(range.e.r, val[0].r);\n\t\t\t\t\t\trange.s.r = Math.min(range.s.r, val[0].r);\n\t\t\t\t\t\trange.e.c = Math.max(range.e.c, val[0].c);\n\t\t\t\t\t\trange.s.c = Math.min(range.s.c, val[0].c);\n\t\t\t\t\t}\n\t\t\t\t\tif(!cc.c) cc.c = [];\n\t\t\t\t\tcmnt = {a:val[1],t:noteobj.TxO.t};\n\t\t\t\t\tcc.c.push(cmnt);\n\t\t\t\t} break;\n\t\t\t\tcase 0x087d /* XFExt */: update_xfext(XFs[val.ixfe], val.ext); break;\n\t\t\t\tcase 0x007d /* ColInfo */: {\n\t\t\t\t\tif(!opts.cellStyles) break;\n\t\t\t\t\twhile(val.e >= val.s) {\n\t\t\t\t\t\tcolinfo[val.e--] = { width: val.w/256, level: (val.level || 0), hidden: !!(val.flags & 1) };\n\t\t\t\t\t\tif(!seencol) { seencol = true; find_mdw_colw(val.w/256); }\n\t\t\t\t\t\tprocess_col(colinfo[val.e+1]);\n\t\t\t\t\t}\n\t\t\t\t} break;\n\t\t\t\tcase 0x0208 /* Row */: {\n\t\t\t\t\tvar rowobj = {};\n\t\t\t\t\tif(val.level != null) { rowinfo[val.r] = rowobj; rowobj.level = val.level; }\n\t\t\t\t\tif(val.hidden) { rowinfo[val.r] = rowobj; rowobj.hidden = true; }\n\t\t\t\t\tif(val.hpt) {\n\t\t\t\t\t\trowinfo[val.r] = rowobj;\n\t\t\t\t\t\trowobj.hpt = val.hpt; rowobj.hpx = pt2px(val.hpt);\n\t\t\t\t\t}\n\t\t\t\t} break;\n\t\t\t\tcase 0x0026 /* LeftMargin */:\n\t\t\t\tcase 0x0027 /* RightMargin */:\n\t\t\t\tcase 0x0028 /* TopMargin */:\n\t\t\t\tcase 0x0029 /* BottomMargin */:\n\t\t\t\t\tif(!out['!margins']) default_margins(out['!margins'] = {});\n\t\t\t\t\tout['!margins'][({0x26: \"left\", 0x27:\"right\", 0x28:\"top\", 0x29:\"bottom\"})[RecordType]] = val;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0x00a1 /* Setup */: // TODO\n\t\t\t\t\tif(!out['!margins']) default_margins(out['!margins'] = {});\n\t\t\t\t\tout['!margins'].header = val.header;\n\t\t\t\t\tout['!margins'].footer = val.footer;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0x023e /* Window2 */: // TODO\n\t\t\t\t\t// $FlowIgnore\n\t\t\t\t\tif(val.RTL) Workbook.Views[0].RTL = true;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0x0092 /* Palette */: palette = val; break;\n\t\t\t\tcase 0x0896 /* Theme */: themes = val; break;\n\t\t\t\tcase 0x008c /* Country */: country = val; break;\n\t\t\t\tcase 0x01ba /* CodeName */: {\n\t\t\t\t\t/*:: if(!Workbook.WBProps) Workbook.WBProps = {}; */\n\t\t\t\t\tif(!cur_sheet) Workbook.WBProps.CodeName = val || \"ThisWorkbook\";\n\t\t\t\t\telse wsprops.CodeName = val || wsprops.name;\n\t\t\t\t} break;\n\t\t\t}\n\t\t} else {\n\t\t\tif(!R) console.error(\"Missing Info for XLS Record 0x\" + RecordType.toString(16));\n\t\t\tblob.l += length;\n\t\t}\n\t}\n\twb.SheetNames=keys(Directory).sort(function(a,b) { return Number(a) - Number(b); }).map(function(x){return Directory[x].name;});\n\tif(!options.bookSheets) wb.Sheets=Sheets;\n\tif(!wb.SheetNames.length && Preamble[\"!ref\"]) {\n\t\twb.SheetNames.push(\"Sheet1\");\n\t\t/*jshint -W069 */\n\t\tif(wb.Sheets) wb.Sheets[\"Sheet1\"] = Preamble;\n\t\t/*jshint +W069 */\n\t} else wb.Preamble=Preamble;\n\tif(wb.Sheets) FilterDatabases.forEach(function(r,i) { wb.Sheets[wb.SheetNames[i]]['!autofilter'] = r; });\n\twb.Strings = sst;\n\twb.SSF = dup(table_fmt);\n\tif(opts.enc) wb.Encryption = opts.enc;\n\tif(themes) wb.Themes = themes;\n\twb.Metadata = {};\n\tif(country !== undefined) wb.Metadata.Country = country;\n\tif(supbooks.names.length > 0) Workbook.Names = supbooks.names;\n\twb.Workbook = Workbook;\n\treturn wb;\n}\n\n/* TODO: split props*/\nvar PSCLSID = {\n\tSI: \"e0859ff2f94f6810ab9108002b27b3d9\",\n\tDSI: \"02d5cdd59c2e1b10939708002b2cf9ae\",\n\tUDI: \"05d5cdd59c2e1b10939708002b2cf9ae\"\n};\nfunction parse_xls_props(cfb/*:CFBContainer*/, props, o) {\n\t/* [MS-OSHARED] 2.3.3.2.2 Document Summary Information Property Set */\n\tvar DSI = CFB.find(cfb, '/!DocumentSummaryInformation');\n\tif(DSI && DSI.size > 0) try {\n\t\tvar DocSummary = parse_PropertySetStream(DSI, DocSummaryPIDDSI, PSCLSID.DSI);\n\t\tfor(var d in DocSummary) props[d] = DocSummary[d];\n\t} catch(e) {if(o.WTF) throw e;/* empty */}\n\n\t/* [MS-OSHARED] 2.3.3.2.1 Summary Information Property Set*/\n\tvar SI = CFB.find(cfb, '/!SummaryInformation');\n\tif(SI && SI.size > 0) try {\n\t\tvar Summary = parse_PropertySetStream(SI, SummaryPIDSI, PSCLSID.SI);\n\t\tfor(var s in Summary) if(props[s] == null) props[s] = Summary[s];\n\t} catch(e) {if(o.WTF) throw e;/* empty */}\n\n\tif(props.HeadingPairs && props.TitlesOfParts) {\n\t\tload_props_pairs(props.HeadingPairs, props.TitlesOfParts, props, o);\n\t\tdelete props.HeadingPairs; delete props.TitlesOfParts;\n\t}\n}\nfunction write_xls_props(wb/*:Workbook*/, cfb/*:CFBContainer*/) {\n\tvar DSEntries = [], SEntries = [], CEntries = [];\n\tvar i = 0, Keys;\n\tvar DocSummaryRE/*:{[key:string]:string}*/ = evert_key(DocSummaryPIDDSI, \"n\");\n\tvar SummaryRE/*:{[key:string]:string}*/ = evert_key(SummaryPIDSI, \"n\");\n\tif(wb.Props) {\n\t\tKeys = keys(wb.Props);\n\t\t// $FlowIgnore\n\t\tfor(i = 0; i < Keys.length; ++i) (Object.prototype.hasOwnProperty.call(DocSummaryRE, Keys[i]) ? DSEntries : Object.prototype.hasOwnProperty.call(SummaryRE, Keys[i]) ? SEntries : CEntries).push([Keys[i], wb.Props[Keys[i]]]);\n\t}\n\tif(wb.Custprops) {\n\t\tKeys = keys(wb.Custprops);\n\t\t// $FlowIgnore\n\t\tfor(i = 0; i < Keys.length; ++i) if(!Object.prototype.hasOwnProperty.call((wb.Props||{}), Keys[i])) (Object.prototype.hasOwnProperty.call(DocSummaryRE, Keys[i]) ? DSEntries : Object.prototype.hasOwnProperty.call(SummaryRE, Keys[i]) ? SEntries : CEntries).push([Keys[i], wb.Custprops[Keys[i]]]);\n\t}\n\tvar CEntries2 = [];\n\tfor(i = 0; i < CEntries.length; ++i) {\n\t\tif(XLSPSSkip.indexOf(CEntries[i][0]) > -1 || PseudoPropsPairs.indexOf(CEntries[i][0]) > -1) continue;\n\t\tif(CEntries[i][1] == null) continue;\n\t\tCEntries2.push(CEntries[i]);\n\t}\n\tif(SEntries.length) CFB.utils.cfb_add(cfb, \"/\\u0005SummaryInformation\", write_PropertySetStream(SEntries, PSCLSID.SI, SummaryRE, SummaryPIDSI));\n\tif(DSEntries.length || CEntries2.length) CFB.utils.cfb_add(cfb, \"/\\u0005DocumentSummaryInformation\", write_PropertySetStream(DSEntries, PSCLSID.DSI, DocSummaryRE, DocSummaryPIDDSI, CEntries2.length ? CEntries2 : null, PSCLSID.UDI));\n}\n\nfunction parse_xlscfb(cfb/*:any*/, options/*:?ParseOpts*/)/*:Workbook*/ {\nif(!options) options = {};\nfix_read_opts(options);\nreset_cp();\nif(options.codepage) set_ansi(options.codepage);\nvar CompObj/*:?CFBEntry*/, WB/*:?any*/;\nif(cfb.FullPaths) {\n\tif(CFB.find(cfb, '/encryption')) throw new Error(\"File is password-protected\");\n\tCompObj = CFB.find(cfb, '!CompObj');\n\tWB = CFB.find(cfb, '/Workbook') || CFB.find(cfb, '/Book');\n} else {\n\tswitch(options.type) {\n\t\tcase 'base64': cfb = s2a(Base64_decode(cfb)); break;\n\t\tcase 'binary': cfb = s2a(cfb); break;\n\t\tcase 'buffer': break;\n\t\tcase 'array': if(!Array.isArray(cfb)) cfb = Array.prototype.slice.call(cfb); break;\n\t}\n\tprep_blob(cfb, 0);\n\tWB = ({content: cfb}/*:any*/);\n}\nvar /*::CompObjP, */WorkbookP/*:: :Workbook = XLSX.utils.book_new(); */;\n\nvar _data/*:?any*/;\nif(CompObj) /*::CompObjP = */parse_compobj(CompObj);\nif(options.bookProps && !options.bookSheets) WorkbookP = ({}/*:any*/);\nelse/*:: if(cfb instanceof CFBContainer) */ {\n\tvar T = has_buf ? 'buffer' : 'array';\n\tif(WB && WB.content) WorkbookP = parse_workbook(WB.content, options);\n\t/* Quattro Pro 7-8 */\n\telse if((_data=CFB.find(cfb, 'PerfectOffice_MAIN')) && _data.content) WorkbookP = WK_.to_workbook(_data.content, (options.type = T, options));\n\t/* Quattro Pro 9 */\n\telse if((_data=CFB.find(cfb, 'NativeContent_MAIN')) && _data.content) WorkbookP = WK_.to_workbook(_data.content, (options.type = T, options));\n\t/* Works 4 for Mac */\n\telse if((_data=CFB.find(cfb, 'MN0')) && _data.content) throw new Error(\"Unsupported Works 4 for Mac file\");\n\telse throw new Error(\"Cannot find Workbook stream\");\n\tif(options.bookVBA && cfb.FullPaths && CFB.find(cfb, '/_VBA_PROJECT_CUR/VBA/dir')) WorkbookP.vbaraw = make_vba_xls(cfb);\n}\n\nvar props = {};\nif(cfb.FullPaths) parse_xls_props(/*::((*/cfb/*:: :any):CFBContainer)*/, props, options);\n\nWorkbookP.Props = WorkbookP.Custprops = props; /* TODO: split up properties */\nif(options.bookFiles) WorkbookP.cfb = cfb;\n/*WorkbookP.CompObjP = CompObjP; // TODO: storage? */\nreturn WorkbookP;\n}\n\n\nfunction write_xlscfb(wb/*:Workbook*/, opts/*:WriteOpts*/)/*:CFBContainer*/ {\n\tvar o = opts || {};\n\tvar cfb = CFB.utils.cfb_new({root:\"R\"});\n\tvar wbpath = \"/Workbook\";\n\tswitch(o.bookType || \"xls\") {\n\t\tcase \"xls\": o.bookType = \"biff8\";\n\t\t/* falls through */\n\t\tcase \"xla\": if(!o.bookType) o.bookType = \"xla\";\n\t\t/* falls through */\n\t\tcase \"biff8\": wbpath = \"/Workbook\"; o.biff = 8; break;\n\t\tcase \"biff5\": wbpath = \"/Book\"; o.biff = 5; break;\n\t\tdefault: throw new Error(\"invalid type \" + o.bookType + \" for XLS CFB\");\n\t}\n\tCFB.utils.cfb_add(cfb, wbpath, write_biff_buf(wb, o));\n\tif(o.biff == 8 && (wb.Props || wb.Custprops)) write_xls_props(wb, cfb);\n\t// TODO: SI, DSI, CO\n\tif(o.biff == 8 && wb.vbaraw) fill_vba_xls(cfb, CFB.read(wb.vbaraw, {type: typeof wb.vbaraw == \"string\" ? \"binary\" : \"buffer\"}));\n\treturn cfb;\n}\n/* [MS-XLSB] 2.3 Record Enumeration */\nvar XLSBRecordEnum = {\n\t/*::[*/0x0000/*::]*/: { /* n:\"BrtRowHdr\", */ f:parse_BrtRowHdr },\n\t/*::[*/0x0001/*::]*/: { /* n:\"BrtCellBlank\", */ f:parse_BrtCellBlank },\n\t/*::[*/0x0002/*::]*/: { /* n:\"BrtCellRk\", */ f:parse_BrtCellRk },\n\t/*::[*/0x0003/*::]*/: { /* n:\"BrtCellError\", */ f:parse_BrtCellError },\n\t/*::[*/0x0004/*::]*/: { /* n:\"BrtCellBool\", */ f:parse_BrtCellBool },\n\t/*::[*/0x0005/*::]*/: { /* n:\"BrtCellReal\", */ f:parse_BrtCellReal },\n\t/*::[*/0x0006/*::]*/: { /* n:\"BrtCellSt\", */ f:parse_BrtCellSt },\n\t/*::[*/0x0007/*::]*/: { /* n:\"BrtCellIsst\", */ f:parse_BrtCellIsst },\n\t/*::[*/0x0008/*::]*/: { /* n:\"BrtFmlaString\", */ f:parse_BrtFmlaString },\n\t/*::[*/0x0009/*::]*/: { /* n:\"BrtFmlaNum\", */ f:parse_BrtFmlaNum },\n\t/*::[*/0x000A/*::]*/: { /* n:\"BrtFmlaBool\", */ f:parse_BrtFmlaBool },\n\t/*::[*/0x000B/*::]*/: { /* n:\"BrtFmlaError\", */ f:parse_BrtFmlaError },\n\t/*::[*/0x000C/*::]*/: { /* n:\"BrtShortBlank\", */ f:parse_BrtShortBlank },\n\t/*::[*/0x000D/*::]*/: { /* n:\"BrtShortRk\", */ f:parse_BrtShortRk },\n\t/*::[*/0x000E/*::]*/: { /* n:\"BrtShortError\", */ f:parse_BrtShortError },\n\t/*::[*/0x000F/*::]*/: { /* n:\"BrtShortBool\", */ f:parse_BrtShortBool },\n\t/*::[*/0x0010/*::]*/: { /* n:\"BrtShortReal\", */ f:parse_BrtShortReal },\n\t/*::[*/0x0011/*::]*/: { /* n:\"BrtShortSt\", */ f:parse_BrtShortSt },\n\t/*::[*/0x0012/*::]*/: { /* n:\"BrtShortIsst\", */ f:parse_BrtShortIsst },\n\t/*::[*/0x0013/*::]*/: { /* n:\"BrtSSTItem\", */ f:parse_RichStr },\n\t/*::[*/0x0014/*::]*/: { /* n:\"BrtPCDIMissing\" */ },\n\t/*::[*/0x0015/*::]*/: { /* n:\"BrtPCDINumber\" */ },\n\t/*::[*/0x0016/*::]*/: { /* n:\"BrtPCDIBoolean\" */ },\n\t/*::[*/0x0017/*::]*/: { /* n:\"BrtPCDIError\" */ },\n\t/*::[*/0x0018/*::]*/: { /* n:\"BrtPCDIString\" */ },\n\t/*::[*/0x0019/*::]*/: { /* n:\"BrtPCDIDatetime\" */ },\n\t/*::[*/0x001A/*::]*/: { /* n:\"BrtPCDIIndex\" */ },\n\t/*::[*/0x001B/*::]*/: { /* n:\"BrtPCDIAMissing\" */ },\n\t/*::[*/0x001C/*::]*/: { /* n:\"BrtPCDIANumber\" */ },\n\t/*::[*/0x001D/*::]*/: { /* n:\"BrtPCDIABoolean\" */ },\n\t/*::[*/0x001E/*::]*/: { /* n:\"BrtPCDIAError\" */ },\n\t/*::[*/0x001F/*::]*/: { /* n:\"BrtPCDIAString\" */ },\n\t/*::[*/0x0020/*::]*/: { /* n:\"BrtPCDIADatetime\" */ },\n\t/*::[*/0x0021/*::]*/: { /* n:\"BrtPCRRecord\" */ },\n\t/*::[*/0x0022/*::]*/: { /* n:\"BrtPCRRecordDt\" */ },\n\t/*::[*/0x0023/*::]*/: { /* n:\"BrtFRTBegin\", */ T:1 },\n\t/*::[*/0x0024/*::]*/: { /* n:\"BrtFRTEnd\", */ T:-1 },\n\t/*::[*/0x0025/*::]*/: { /* n:\"BrtACBegin\", */ T:1 },\n\t/*::[*/0x0026/*::]*/: { /* n:\"BrtACEnd\", */ T:-1 },\n\t/*::[*/0x0027/*::]*/: { /* n:\"BrtName\", */ f:parse_BrtName },\n\t/*::[*/0x0028/*::]*/: { /* n:\"BrtIndexRowBlock\" */ },\n\t/*::[*/0x002A/*::]*/: { /* n:\"BrtIndexBlock\" */ },\n\t/*::[*/0x002B/*::]*/: { /* n:\"BrtFont\", */ f:parse_BrtFont },\n\t/*::[*/0x002C/*::]*/: { /* n:\"BrtFmt\", */ f:parse_BrtFmt },\n\t/*::[*/0x002D/*::]*/: { /* n:\"BrtFill\", */ f:parse_BrtFill },\n\t/*::[*/0x002E/*::]*/: { /* n:\"BrtBorder\", */ f:parse_BrtBorder },\n\t/*::[*/0x002F/*::]*/: { /* n:\"BrtXF\", */ f:parse_BrtXF },\n\t/*::[*/0x0030/*::]*/: { /* n:\"BrtStyle\" */ },\n\t/*::[*/0x0031/*::]*/: { /* n:\"BrtCellMeta\", */ f:parse_Int32LE },\n\t/*::[*/0x0032/*::]*/: { /* n:\"BrtValueMeta\" */ },\n\t/*::[*/0x0033/*::]*/: { /* n:\"BrtMdb\" */ f:parse_BrtMdb },\n\t/*::[*/0x0034/*::]*/: { /* n:\"BrtBeginFmd\", */ T:1 },\n\t/*::[*/0x0035/*::]*/: { /* n:\"BrtEndFmd\", */ T:-1 },\n\t/*::[*/0x0036/*::]*/: { /* n:\"BrtBeginMdx\", */ T:1 },\n\t/*::[*/0x0037/*::]*/: { /* n:\"BrtEndMdx\", */ T:-1 },\n\t/*::[*/0x0038/*::]*/: { /* n:\"BrtBeginMdxTuple\", */ T:1 },\n\t/*::[*/0x0039/*::]*/: { /* n:\"BrtEndMdxTuple\", */ T:-1 },\n\t/*::[*/0x003A/*::]*/: { /* n:\"BrtMdxMbrIstr\" */ },\n\t/*::[*/0x003B/*::]*/: { /* n:\"BrtStr\" */ },\n\t/*::[*/0x003C/*::]*/: { /* n:\"BrtColInfo\", */ f:parse_ColInfo },\n\t/*::[*/0x003E/*::]*/: { /* n:\"BrtCellRString\", */ f:parse_BrtCellRString },\n\t/*::[*/0x003F/*::]*/: { /* n:\"BrtCalcChainItem$\", */ f:parse_BrtCalcChainItem$ },\n\t/*::[*/0x0040/*::]*/: { /* n:\"BrtDVal\", */ f:parse_BrtDVal },\n\t/*::[*/0x0041/*::]*/: { /* n:\"BrtSxvcellNum\" */ },\n\t/*::[*/0x0042/*::]*/: { /* n:\"BrtSxvcellStr\" */ },\n\t/*::[*/0x0043/*::]*/: { /* n:\"BrtSxvcellBool\" */ },\n\t/*::[*/0x0044/*::]*/: { /* n:\"BrtSxvcellErr\" */ },\n\t/*::[*/0x0045/*::]*/: { /* n:\"BrtSxvcellDate\" */ },\n\t/*::[*/0x0046/*::]*/: { /* n:\"BrtSxvcellNil\" */ },\n\t/*::[*/0x0080/*::]*/: { /* n:\"BrtFileVersion\" */ },\n\t/*::[*/0x0081/*::]*/: { /* n:\"BrtBeginSheet\", */ T:1 },\n\t/*::[*/0x0082/*::]*/: { /* n:\"BrtEndSheet\", */ T:-1 },\n\t/*::[*/0x0083/*::]*/: { /* n:\"BrtBeginBook\", */ T:1, f:parsenoop, p:0 },\n\t/*::[*/0x0084/*::]*/: { /* n:\"BrtEndBook\", */ T:-1 },\n\t/*::[*/0x0085/*::]*/: { /* n:\"BrtBeginWsViews\", */ T:1 },\n\t/*::[*/0x0086/*::]*/: { /* n:\"BrtEndWsViews\", */ T:-1 },\n\t/*::[*/0x0087/*::]*/: { /* n:\"BrtBeginBookViews\", */ T:1 },\n\t/*::[*/0x0088/*::]*/: { /* n:\"BrtEndBookViews\", */ T:-1 },\n\t/*::[*/0x0089/*::]*/: { /* n:\"BrtBeginWsView\", */ T:1, f:parse_BrtBeginWsView },\n\t/*::[*/0x008A/*::]*/: { /* n:\"BrtEndWsView\", */ T:-1 },\n\t/*::[*/0x008B/*::]*/: { /* n:\"BrtBeginCsViews\", */ T:1 },\n\t/*::[*/0x008C/*::]*/: { /* n:\"BrtEndCsViews\", */ T:-1 },\n\t/*::[*/0x008D/*::]*/: { /* n:\"BrtBeginCsView\", */ T:1 },\n\t/*::[*/0x008E/*::]*/: { /* n:\"BrtEndCsView\", */ T:-1 },\n\t/*::[*/0x008F/*::]*/: { /* n:\"BrtBeginBundleShs\", */ T:1 },\n\t/*::[*/0x0090/*::]*/: { /* n:\"BrtEndBundleShs\", */ T:-1 },\n\t/*::[*/0x0091/*::]*/: { /* n:\"BrtBeginSheetData\", */ T:1 },\n\t/*::[*/0x0092/*::]*/: { /* n:\"BrtEndSheetData\", */ T:-1 },\n\t/*::[*/0x0093/*::]*/: { /* n:\"BrtWsProp\", */ f:parse_BrtWsProp },\n\t/*::[*/0x0094/*::]*/: { /* n:\"BrtWsDim\", */ f:parse_BrtWsDim, p:16 },\n\t/*::[*/0x0097/*::]*/: { /* n:\"BrtPane\", */ f:parse_BrtPane },\n\t/*::[*/0x0098/*::]*/: { /* n:\"BrtSel\" */ },\n\t/*::[*/0x0099/*::]*/: { /* n:\"BrtWbProp\", */ f:parse_BrtWbProp },\n\t/*::[*/0x009A/*::]*/: { /* n:\"BrtWbFactoid\" */ },\n\t/*::[*/0x009B/*::]*/: { /* n:\"BrtFileRecover\" */ },\n\t/*::[*/0x009C/*::]*/: { /* n:\"BrtBundleSh\", */ f:parse_BrtBundleSh },\n\t/*::[*/0x009D/*::]*/: { /* n:\"BrtCalcProp\" */ },\n\t/*::[*/0x009E/*::]*/: { /* n:\"BrtBookView\" */ },\n\t/*::[*/0x009F/*::]*/: { /* n:\"BrtBeginSst\", */ T:1, f:parse_BrtBeginSst },\n\t/*::[*/0x00A0/*::]*/: { /* n:\"BrtEndSst\", */ T:-1 },\n\t/*::[*/0x00A1/*::]*/: { /* n:\"BrtBeginAFilter\", */ T:1, f:parse_UncheckedRfX },\n\t/*::[*/0x00A2/*::]*/: { /* n:\"BrtEndAFilter\", */ T:-1 },\n\t/*::[*/0x00A3/*::]*/: { /* n:\"BrtBeginFilterColumn\", */ T:1 },\n\t/*::[*/0x00A4/*::]*/: { /* n:\"BrtEndFilterColumn\", */ T:-1 },\n\t/*::[*/0x00A5/*::]*/: { /* n:\"BrtBeginFilters\", */ T:1 },\n\t/*::[*/0x00A6/*::]*/: { /* n:\"BrtEndFilters\", */ T:-1 },\n\t/*::[*/0x00A7/*::]*/: { /* n:\"BrtFilter\" */ },\n\t/*::[*/0x00A8/*::]*/: { /* n:\"BrtColorFilter\" */ },\n\t/*::[*/0x00A9/*::]*/: { /* n:\"BrtIconFilter\" */ },\n\t/*::[*/0x00AA/*::]*/: { /* n:\"BrtTop10Filter\" */ },\n\t/*::[*/0x00AB/*::]*/: { /* n:\"BrtDynamicFilter\" */ },\n\t/*::[*/0x00AC/*::]*/: { /* n:\"BrtBeginCustomFilters\", */ T:1 },\n\t/*::[*/0x00AD/*::]*/: { /* n:\"BrtEndCustomFilters\", */ T:-1 },\n\t/*::[*/0x00AE/*::]*/: { /* n:\"BrtCustomFilter\" */ },\n\t/*::[*/0x00AF/*::]*/: { /* n:\"BrtAFilterDateGroupItem\" */ },\n\t/*::[*/0x00B0/*::]*/: { /* n:\"BrtMergeCell\", */ f:parse_BrtMergeCell },\n\t/*::[*/0x00B1/*::]*/: { /* n:\"BrtBeginMergeCells\", */ T:1 },\n\t/*::[*/0x00B2/*::]*/: { /* n:\"BrtEndMergeCells\", */ T:-1 },\n\t/*::[*/0x00B3/*::]*/: { /* n:\"BrtBeginPivotCacheDef\", */ T:1 },\n\t/*::[*/0x00B4/*::]*/: { /* n:\"BrtEndPivotCacheDef\", */ T:-1 },\n\t/*::[*/0x00B5/*::]*/: { /* n:\"BrtBeginPCDFields\", */ T:1 },\n\t/*::[*/0x00B6/*::]*/: { /* n:\"BrtEndPCDFields\", */ T:-1 },\n\t/*::[*/0x00B7/*::]*/: { /* n:\"BrtBeginPCDField\", */ T:1 },\n\t/*::[*/0x00B8/*::]*/: { /* n:\"BrtEndPCDField\", */ T:-1 },\n\t/*::[*/0x00B9/*::]*/: { /* n:\"BrtBeginPCDSource\", */ T:1 },\n\t/*::[*/0x00BA/*::]*/: { /* n:\"BrtEndPCDSource\", */ T:-1 },\n\t/*::[*/0x00BB/*::]*/: { /* n:\"BrtBeginPCDSRange\", */ T:1 },\n\t/*::[*/0x00BC/*::]*/: { /* n:\"BrtEndPCDSRange\", */ T:-1 },\n\t/*::[*/0x00BD/*::]*/: { /* n:\"BrtBeginPCDFAtbl\", */ T:1 },\n\t/*::[*/0x00BE/*::]*/: { /* n:\"BrtEndPCDFAtbl\", */ T:-1 },\n\t/*::[*/0x00BF/*::]*/: { /* n:\"BrtBeginPCDIRun\", */ T:1 },\n\t/*::[*/0x00C0/*::]*/: { /* n:\"BrtEndPCDIRun\", */ T:-1 },\n\t/*::[*/0x00C1/*::]*/: { /* n:\"BrtBeginPivotCacheRecords\", */ T:1 },\n\t/*::[*/0x00C2/*::]*/: { /* n:\"BrtEndPivotCacheRecords\", */ T:-1 },\n\t/*::[*/0x00C3/*::]*/: { /* n:\"BrtBeginPCDHierarchies\", */ T:1 },\n\t/*::[*/0x00C4/*::]*/: { /* n:\"BrtEndPCDHierarchies\", */ T:-1 },\n\t/*::[*/0x00C5/*::]*/: { /* n:\"BrtBeginPCDHierarchy\", */ T:1 },\n\t/*::[*/0x00C6/*::]*/: { /* n:\"BrtEndPCDHierarchy\", */ T:-1 },\n\t/*::[*/0x00C7/*::]*/: { /* n:\"BrtBeginPCDHFieldsUsage\", */ T:1 },\n\t/*::[*/0x00C8/*::]*/: { /* n:\"BrtEndPCDHFieldsUsage\", */ T:-1 },\n\t/*::[*/0x00C9/*::]*/: { /* n:\"BrtBeginExtConnection\", */ T:1 },\n\t/*::[*/0x00CA/*::]*/: { /* n:\"BrtEndExtConnection\", */ T:-1 },\n\t/*::[*/0x00CB/*::]*/: { /* n:\"BrtBeginECDbProps\", */ T:1 },\n\t/*::[*/0x00CC/*::]*/: { /* n:\"BrtEndECDbProps\", */ T:-1 },\n\t/*::[*/0x00CD/*::]*/: { /* n:\"BrtBeginECOlapProps\", */ T:1 },\n\t/*::[*/0x00CE/*::]*/: { /* n:\"BrtEndECOlapProps\", */ T:-1 },\n\t/*::[*/0x00CF/*::]*/: { /* n:\"BrtBeginPCDSConsol\", */ T:1 },\n\t/*::[*/0x00D0/*::]*/: { /* n:\"BrtEndPCDSConsol\", */ T:-1 },\n\t/*::[*/0x00D1/*::]*/: { /* n:\"BrtBeginPCDSCPages\", */ T:1 },\n\t/*::[*/0x00D2/*::]*/: { /* n:\"BrtEndPCDSCPages\", */ T:-1 },\n\t/*::[*/0x00D3/*::]*/: { /* n:\"BrtBeginPCDSCPage\", */ T:1 },\n\t/*::[*/0x00D4/*::]*/: { /* n:\"BrtEndPCDSCPage\", */ T:-1 },\n\t/*::[*/0x00D5/*::]*/: { /* n:\"BrtBeginPCDSCPItem\", */ T:1 },\n\t/*::[*/0x00D6/*::]*/: { /* n:\"BrtEndPCDSCPItem\", */ T:-1 },\n\t/*::[*/0x00D7/*::]*/: { /* n:\"BrtBeginPCDSCSets\", */ T:1 },\n\t/*::[*/0x00D8/*::]*/: { /* n:\"BrtEndPCDSCSets\", */ T:-1 },\n\t/*::[*/0x00D9/*::]*/: { /* n:\"BrtBeginPCDSCSet\", */ T:1 },\n\t/*::[*/0x00DA/*::]*/: { /* n:\"BrtEndPCDSCSet\", */ T:-1 },\n\t/*::[*/0x00DB/*::]*/: { /* n:\"BrtBeginPCDFGroup\", */ T:1 },\n\t/*::[*/0x00DC/*::]*/: { /* n:\"BrtEndPCDFGroup\", */ T:-1 },\n\t/*::[*/0x00DD/*::]*/: { /* n:\"BrtBeginPCDFGItems\", */ T:1 },\n\t/*::[*/0x00DE/*::]*/: { /* n:\"BrtEndPCDFGItems\", */ T:-1 },\n\t/*::[*/0x00DF/*::]*/: { /* n:\"BrtBeginPCDFGRange\", */ T:1 },\n\t/*::[*/0x00E0/*::]*/: { /* n:\"BrtEndPCDFGRange\", */ T:-1 },\n\t/*::[*/0x00E1/*::]*/: { /* n:\"BrtBeginPCDFGDiscrete\", */ T:1 },\n\t/*::[*/0x00E2/*::]*/: { /* n:\"BrtEndPCDFGDiscrete\", */ T:-1 },\n\t/*::[*/0x00E3/*::]*/: { /* n:\"BrtBeginPCDSDTupleCache\", */ T:1 },\n\t/*::[*/0x00E4/*::]*/: { /* n:\"BrtEndPCDSDTupleCache\", */ T:-1 },\n\t/*::[*/0x00E5/*::]*/: { /* n:\"BrtBeginPCDSDTCEntries\", */ T:1 },\n\t/*::[*/0x00E6/*::]*/: { /* n:\"BrtEndPCDSDTCEntries\", */ T:-1 },\n\t/*::[*/0x00E7/*::]*/: { /* n:\"BrtBeginPCDSDTCEMembers\", */ T:1 },\n\t/*::[*/0x00E8/*::]*/: { /* n:\"BrtEndPCDSDTCEMembers\", */ T:-1 },\n\t/*::[*/0x00E9/*::]*/: { /* n:\"BrtBeginPCDSDTCEMember\", */ T:1 },\n\t/*::[*/0x00EA/*::]*/: { /* n:\"BrtEndPCDSDTCEMember\", */ T:-1 },\n\t/*::[*/0x00EB/*::]*/: { /* n:\"BrtBeginPCDSDTCQueries\", */ T:1 },\n\t/*::[*/0x00EC/*::]*/: { /* n:\"BrtEndPCDSDTCQueries\", */ T:-1 },\n\t/*::[*/0x00ED/*::]*/: { /* n:\"BrtBeginPCDSDTCQuery\", */ T:1 },\n\t/*::[*/0x00EE/*::]*/: { /* n:\"BrtEndPCDSDTCQuery\", */ T:-1 },\n\t/*::[*/0x00EF/*::]*/: { /* n:\"BrtBeginPCDSDTCSets\", */ T:1 },\n\t/*::[*/0x00F0/*::]*/: { /* n:\"BrtEndPCDSDTCSets\", */ T:-1 },\n\t/*::[*/0x00F1/*::]*/: { /* n:\"BrtBeginPCDSDTCSet\", */ T:1 },\n\t/*::[*/0x00F2/*::]*/: { /* n:\"BrtEndPCDSDTCSet\", */ T:-1 },\n\t/*::[*/0x00F3/*::]*/: { /* n:\"BrtBeginPCDCalcItems\", */ T:1 },\n\t/*::[*/0x00F4/*::]*/: { /* n:\"BrtEndPCDCalcItems\", */ T:-1 },\n\t/*::[*/0x00F5/*::]*/: { /* n:\"BrtBeginPCDCalcItem\", */ T:1 },\n\t/*::[*/0x00F6/*::]*/: { /* n:\"BrtEndPCDCalcItem\", */ T:-1 },\n\t/*::[*/0x00F7/*::]*/: { /* n:\"BrtBeginPRule\", */ T:1 },\n\t/*::[*/0x00F8/*::]*/: { /* n:\"BrtEndPRule\", */ T:-1 },\n\t/*::[*/0x00F9/*::]*/: { /* n:\"BrtBeginPRFilters\", */ T:1 },\n\t/*::[*/0x00FA/*::]*/: { /* n:\"BrtEndPRFilters\", */ T:-1 },\n\t/*::[*/0x00FB/*::]*/: { /* n:\"BrtBeginPRFilter\", */ T:1 },\n\t/*::[*/0x00FC/*::]*/: { /* n:\"BrtEndPRFilter\", */ T:-1 },\n\t/*::[*/0x00FD/*::]*/: { /* n:\"BrtBeginPNames\", */ T:1 },\n\t/*::[*/0x00FE/*::]*/: { /* n:\"BrtEndPNames\", */ T:-1 },\n\t/*::[*/0x00FF/*::]*/: { /* n:\"BrtBeginPName\", */ T:1 },\n\t/*::[*/0x0100/*::]*/: { /* n:\"BrtEndPName\", */ T:-1 },\n\t/*::[*/0x0101/*::]*/: { /* n:\"BrtBeginPNPairs\", */ T:1 },\n\t/*::[*/0x0102/*::]*/: { /* n:\"BrtEndPNPairs\", */ T:-1 },\n\t/*::[*/0x0103/*::]*/: { /* n:\"BrtBeginPNPair\", */ T:1 },\n\t/*::[*/0x0104/*::]*/: { /* n:\"BrtEndPNPair\", */ T:-1 },\n\t/*::[*/0x0105/*::]*/: { /* n:\"BrtBeginECWebProps\", */ T:1 },\n\t/*::[*/0x0106/*::]*/: { /* n:\"BrtEndECWebProps\", */ T:-1 },\n\t/*::[*/0x0107/*::]*/: { /* n:\"BrtBeginEcWpTables\", */ T:1 },\n\t/*::[*/0x0108/*::]*/: { /* n:\"BrtEndECWPTables\", */ T:-1 },\n\t/*::[*/0x0109/*::]*/: { /* n:\"BrtBeginECParams\", */ T:1 },\n\t/*::[*/0x010A/*::]*/: { /* n:\"BrtEndECParams\", */ T:-1 },\n\t/*::[*/0x010B/*::]*/: { /* n:\"BrtBeginECParam\", */ T:1 },\n\t/*::[*/0x010C/*::]*/: { /* n:\"BrtEndECParam\", */ T:-1 },\n\t/*::[*/0x010D/*::]*/: { /* n:\"BrtBeginPCDKPIs\", */ T:1 },\n\t/*::[*/0x010E/*::]*/: { /* n:\"BrtEndPCDKPIs\", */ T:-1 },\n\t/*::[*/0x010F/*::]*/: { /* n:\"BrtBeginPCDKPI\", */ T:1 },\n\t/*::[*/0x0110/*::]*/: { /* n:\"BrtEndPCDKPI\", */ T:-1 },\n\t/*::[*/0x0111/*::]*/: { /* n:\"BrtBeginDims\", */ T:1 },\n\t/*::[*/0x0112/*::]*/: { /* n:\"BrtEndDims\", */ T:-1 },\n\t/*::[*/0x0113/*::]*/: { /* n:\"BrtBeginDim\", */ T:1 },\n\t/*::[*/0x0114/*::]*/: { /* n:\"BrtEndDim\", */ T:-1 },\n\t/*::[*/0x0115/*::]*/: { /* n:\"BrtIndexPartEnd\" */ },\n\t/*::[*/0x0116/*::]*/: { /* n:\"BrtBeginStyleSheet\", */ T:1 },\n\t/*::[*/0x0117/*::]*/: { /* n:\"BrtEndStyleSheet\", */ T:-1 },\n\t/*::[*/0x0118/*::]*/: { /* n:\"BrtBeginSXView\", */ T:1 },\n\t/*::[*/0x0119/*::]*/: { /* n:\"BrtEndSXVI\", */ T:-1 },\n\t/*::[*/0x011A/*::]*/: { /* n:\"BrtBeginSXVI\", */ T:1 },\n\t/*::[*/0x011B/*::]*/: { /* n:\"BrtBeginSXVIs\", */ T:1 },\n\t/*::[*/0x011C/*::]*/: { /* n:\"BrtEndSXVIs\", */ T:-1 },\n\t/*::[*/0x011D/*::]*/: { /* n:\"BrtBeginSXVD\", */ T:1 },\n\t/*::[*/0x011E/*::]*/: { /* n:\"BrtEndSXVD\", */ T:-1 },\n\t/*::[*/0x011F/*::]*/: { /* n:\"BrtBeginSXVDs\", */ T:1 },\n\t/*::[*/0x0120/*::]*/: { /* n:\"BrtEndSXVDs\", */ T:-1 },\n\t/*::[*/0x0121/*::]*/: { /* n:\"BrtBeginSXPI\", */ T:1 },\n\t/*::[*/0x0122/*::]*/: { /* n:\"BrtEndSXPI\", */ T:-1 },\n\t/*::[*/0x0123/*::]*/: { /* n:\"BrtBeginSXPIs\", */ T:1 },\n\t/*::[*/0x0124/*::]*/: { /* n:\"BrtEndSXPIs\", */ T:-1 },\n\t/*::[*/0x0125/*::]*/: { /* n:\"BrtBeginSXDI\", */ T:1 },\n\t/*::[*/0x0126/*::]*/: { /* n:\"BrtEndSXDI\", */ T:-1 },\n\t/*::[*/0x0127/*::]*/: { /* n:\"BrtBeginSXDIs\", */ T:1 },\n\t/*::[*/0x0128/*::]*/: { /* n:\"BrtEndSXDIs\", */ T:-1 },\n\t/*::[*/0x0129/*::]*/: { /* n:\"BrtBeginSXLI\", */ T:1 },\n\t/*::[*/0x012A/*::]*/: { /* n:\"BrtEndSXLI\", */ T:-1 },\n\t/*::[*/0x012B/*::]*/: { /* n:\"BrtBeginSXLIRws\", */ T:1 },\n\t/*::[*/0x012C/*::]*/: { /* n:\"BrtEndSXLIRws\", */ T:-1 },\n\t/*::[*/0x012D/*::]*/: { /* n:\"BrtBeginSXLICols\", */ T:1 },\n\t/*::[*/0x012E/*::]*/: { /* n:\"BrtEndSXLICols\", */ T:-1 },\n\t/*::[*/0x012F/*::]*/: { /* n:\"BrtBeginSXFormat\", */ T:1 },\n\t/*::[*/0x0130/*::]*/: { /* n:\"BrtEndSXFormat\", */ T:-1 },\n\t/*::[*/0x0131/*::]*/: { /* n:\"BrtBeginSXFormats\", */ T:1 },\n\t/*::[*/0x0132/*::]*/: { /* n:\"BrtEndSxFormats\", */ T:-1 },\n\t/*::[*/0x0133/*::]*/: { /* n:\"BrtBeginSxSelect\", */ T:1 },\n\t/*::[*/0x0134/*::]*/: { /* n:\"BrtEndSxSelect\", */ T:-1 },\n\t/*::[*/0x0135/*::]*/: { /* n:\"BrtBeginISXVDRws\", */ T:1 },\n\t/*::[*/0x0136/*::]*/: { /* n:\"BrtEndISXVDRws\", */ T:-1 },\n\t/*::[*/0x0137/*::]*/: { /* n:\"BrtBeginISXVDCols\", */ T:1 },\n\t/*::[*/0x0138/*::]*/: { /* n:\"BrtEndISXVDCols\", */ T:-1 },\n\t/*::[*/0x0139/*::]*/: { /* n:\"BrtEndSXLocation\", */ T:-1 },\n\t/*::[*/0x013A/*::]*/: { /* n:\"BrtBeginSXLocation\", */ T:1 },\n\t/*::[*/0x013B/*::]*/: { /* n:\"BrtEndSXView\", */ T:-1 },\n\t/*::[*/0x013C/*::]*/: { /* n:\"BrtBeginSXTHs\", */ T:1 },\n\t/*::[*/0x013D/*::]*/: { /* n:\"BrtEndSXTHs\", */ T:-1 },\n\t/*::[*/0x013E/*::]*/: { /* n:\"BrtBeginSXTH\", */ T:1 },\n\t/*::[*/0x013F/*::]*/: { /* n:\"BrtEndSXTH\", */ T:-1 },\n\t/*::[*/0x0140/*::]*/: { /* n:\"BrtBeginISXTHRws\", */ T:1 },\n\t/*::[*/0x0141/*::]*/: { /* n:\"BrtEndISXTHRws\", */ T:-1 },\n\t/*::[*/0x0142/*::]*/: { /* n:\"BrtBeginISXTHCols\", */ T:1 },\n\t/*::[*/0x0143/*::]*/: { /* n:\"BrtEndISXTHCols\", */ T:-1 },\n\t/*::[*/0x0144/*::]*/: { /* n:\"BrtBeginSXTDMPS\", */ T:1 },\n\t/*::[*/0x0145/*::]*/: { /* n:\"BrtEndSXTDMPs\", */ T:-1 },\n\t/*::[*/0x0146/*::]*/: { /* n:\"BrtBeginSXTDMP\", */ T:1 },\n\t/*::[*/0x0147/*::]*/: { /* n:\"BrtEndSXTDMP\", */ T:-1 },\n\t/*::[*/0x0148/*::]*/: { /* n:\"BrtBeginSXTHItems\", */ T:1 },\n\t/*::[*/0x0149/*::]*/: { /* n:\"BrtEndSXTHItems\", */ T:-1 },\n\t/*::[*/0x014A/*::]*/: { /* n:\"BrtBeginSXTHItem\", */ T:1 },\n\t/*::[*/0x014B/*::]*/: { /* n:\"BrtEndSXTHItem\", */ T:-1 },\n\t/*::[*/0x014C/*::]*/: { /* n:\"BrtBeginMetadata\", */ T:1 },\n\t/*::[*/0x014D/*::]*/: { /* n:\"BrtEndMetadata\", */ T:-1 },\n\t/*::[*/0x014E/*::]*/: { /* n:\"BrtBeginEsmdtinfo\", */ T:1 },\n\t/*::[*/0x014F/*::]*/: { /* n:\"BrtMdtinfo\", */ f:parse_BrtMdtinfo },\n\t/*::[*/0x0150/*::]*/: { /* n:\"BrtEndEsmdtinfo\", */ T:-1 },\n\t/*::[*/0x0151/*::]*/: { /* n:\"BrtBeginEsmdb\", */ f:parse_BrtBeginEsmdb, T:1 },\n\t/*::[*/0x0152/*::]*/: { /* n:\"BrtEndEsmdb\", */ T:-1 },\n\t/*::[*/0x0153/*::]*/: { /* n:\"BrtBeginEsfmd\", */ T:1 },\n\t/*::[*/0x0154/*::]*/: { /* n:\"BrtEndEsfmd\", */ T:-1 },\n\t/*::[*/0x0155/*::]*/: { /* n:\"BrtBeginSingleCells\", */ T:1 },\n\t/*::[*/0x0156/*::]*/: { /* n:\"BrtEndSingleCells\", */ T:-1 },\n\t/*::[*/0x0157/*::]*/: { /* n:\"BrtBeginList\", */ T:1 },\n\t/*::[*/0x0158/*::]*/: { /* n:\"BrtEndList\", */ T:-1 },\n\t/*::[*/0x0159/*::]*/: { /* n:\"BrtBeginListCols\", */ T:1 },\n\t/*::[*/0x015A/*::]*/: { /* n:\"BrtEndListCols\", */ T:-1 },\n\t/*::[*/0x015B/*::]*/: { /* n:\"BrtBeginListCol\", */ T:1 },\n\t/*::[*/0x015C/*::]*/: { /* n:\"BrtEndListCol\", */ T:-1 },\n\t/*::[*/0x015D/*::]*/: { /* n:\"BrtBeginListXmlCPr\", */ T:1 },\n\t/*::[*/0x015E/*::]*/: { /* n:\"BrtEndListXmlCPr\", */ T:-1 },\n\t/*::[*/0x015F/*::]*/: { /* n:\"BrtListCCFmla\" */ },\n\t/*::[*/0x0160/*::]*/: { /* n:\"BrtListTrFmla\" */ },\n\t/*::[*/0x0161/*::]*/: { /* n:\"BrtBeginExternals\", */ T:1 },\n\t/*::[*/0x0162/*::]*/: { /* n:\"BrtEndExternals\", */ T:-1 },\n\t/*::[*/0x0163/*::]*/: { /* n:\"BrtSupBookSrc\", */ f:parse_RelID},\n\t/*::[*/0x0165/*::]*/: { /* n:\"BrtSupSelf\" */ },\n\t/*::[*/0x0166/*::]*/: { /* n:\"BrtSupSame\" */ },\n\t/*::[*/0x0167/*::]*/: { /* n:\"BrtSupTabs\" */ },\n\t/*::[*/0x0168/*::]*/: { /* n:\"BrtBeginSupBook\", */ T:1 },\n\t/*::[*/0x0169/*::]*/: { /* n:\"BrtPlaceholderName\" */ },\n\t/*::[*/0x016A/*::]*/: { /* n:\"BrtExternSheet\", */ f:parse_ExternSheet },\n\t/*::[*/0x016B/*::]*/: { /* n:\"BrtExternTableStart\" */ },\n\t/*::[*/0x016C/*::]*/: { /* n:\"BrtExternTableEnd\" */ },\n\t/*::[*/0x016E/*::]*/: { /* n:\"BrtExternRowHdr\" */ },\n\t/*::[*/0x016F/*::]*/: { /* n:\"BrtExternCellBlank\" */ },\n\t/*::[*/0x0170/*::]*/: { /* n:\"BrtExternCellReal\" */ },\n\t/*::[*/0x0171/*::]*/: { /* n:\"BrtExternCellBool\" */ },\n\t/*::[*/0x0172/*::]*/: { /* n:\"BrtExternCellError\" */ },\n\t/*::[*/0x0173/*::]*/: { /* n:\"BrtExternCellString\" */ },\n\t/*::[*/0x0174/*::]*/: { /* n:\"BrtBeginEsmdx\", */ T:1 },\n\t/*::[*/0x0175/*::]*/: { /* n:\"BrtEndEsmdx\", */ T:-1 },\n\t/*::[*/0x0176/*::]*/: { /* n:\"BrtBeginMdxSet\", */ T:1 },\n\t/*::[*/0x0177/*::]*/: { /* n:\"BrtEndMdxSet\", */ T:-1 },\n\t/*::[*/0x0178/*::]*/: { /* n:\"BrtBeginMdxMbrProp\", */ T:1 },\n\t/*::[*/0x0179/*::]*/: { /* n:\"BrtEndMdxMbrProp\", */ T:-1 },\n\t/*::[*/0x017A/*::]*/: { /* n:\"BrtBeginMdxKPI\", */ T:1 },\n\t/*::[*/0x017B/*::]*/: { /* n:\"BrtEndMdxKPI\", */ T:-1 },\n\t/*::[*/0x017C/*::]*/: { /* n:\"BrtBeginEsstr\", */ T:1 },\n\t/*::[*/0x017D/*::]*/: { /* n:\"BrtEndEsstr\", */ T:-1 },\n\t/*::[*/0x017E/*::]*/: { /* n:\"BrtBeginPRFItem\", */ T:1 },\n\t/*::[*/0x017F/*::]*/: { /* n:\"BrtEndPRFItem\", */ T:-1 },\n\t/*::[*/0x0180/*::]*/: { /* n:\"BrtBeginPivotCacheIDs\", */ T:1 },\n\t/*::[*/0x0181/*::]*/: { /* n:\"BrtEndPivotCacheIDs\", */ T:-1 },\n\t/*::[*/0x0182/*::]*/: { /* n:\"BrtBeginPivotCacheID\", */ T:1 },\n\t/*::[*/0x0183/*::]*/: { /* n:\"BrtEndPivotCacheID\", */ T:-1 },\n\t/*::[*/0x0184/*::]*/: { /* n:\"BrtBeginISXVIs\", */ T:1 },\n\t/*::[*/0x0185/*::]*/: { /* n:\"BrtEndISXVIs\", */ T:-1 },\n\t/*::[*/0x0186/*::]*/: { /* n:\"BrtBeginColInfos\", */ T:1 },\n\t/*::[*/0x0187/*::]*/: { /* n:\"BrtEndColInfos\", */ T:-1 },\n\t/*::[*/0x0188/*::]*/: { /* n:\"BrtBeginRwBrk\", */ T:1 },\n\t/*::[*/0x0189/*::]*/: { /* n:\"BrtEndRwBrk\", */ T:-1 },\n\t/*::[*/0x018A/*::]*/: { /* n:\"BrtBeginColBrk\", */ T:1 },\n\t/*::[*/0x018B/*::]*/: { /* n:\"BrtEndColBrk\", */ T:-1 },\n\t/*::[*/0x018C/*::]*/: { /* n:\"BrtBrk\" */ },\n\t/*::[*/0x018D/*::]*/: { /* n:\"BrtUserBookView\" */ },\n\t/*::[*/0x018E/*::]*/: { /* n:\"BrtInfo\" */ },\n\t/*::[*/0x018F/*::]*/: { /* n:\"BrtCUsr\" */ },\n\t/*::[*/0x0190/*::]*/: { /* n:\"BrtUsr\" */ },\n\t/*::[*/0x0191/*::]*/: { /* n:\"BrtBeginUsers\", */ T:1 },\n\t/*::[*/0x0193/*::]*/: { /* n:\"BrtEOF\" */ },\n\t/*::[*/0x0194/*::]*/: { /* n:\"BrtUCR\" */ },\n\t/*::[*/0x0195/*::]*/: { /* n:\"BrtRRInsDel\" */ },\n\t/*::[*/0x0196/*::]*/: { /* n:\"BrtRREndInsDel\" */ },\n\t/*::[*/0x0197/*::]*/: { /* n:\"BrtRRMove\" */ },\n\t/*::[*/0x0198/*::]*/: { /* n:\"BrtRREndMove\" */ },\n\t/*::[*/0x0199/*::]*/: { /* n:\"BrtRRChgCell\" */ },\n\t/*::[*/0x019A/*::]*/: { /* n:\"BrtRREndChgCell\" */ },\n\t/*::[*/0x019B/*::]*/: { /* n:\"BrtRRHeader\" */ },\n\t/*::[*/0x019C/*::]*/: { /* n:\"BrtRRUserView\" */ },\n\t/*::[*/0x019D/*::]*/: { /* n:\"BrtRRRenSheet\" */ },\n\t/*::[*/0x019E/*::]*/: { /* n:\"BrtRRInsertSh\" */ },\n\t/*::[*/0x019F/*::]*/: { /* n:\"BrtRRDefName\" */ },\n\t/*::[*/0x01A0/*::]*/: { /* n:\"BrtRRNote\" */ },\n\t/*::[*/0x01A1/*::]*/: { /* n:\"BrtRRConflict\" */ },\n\t/*::[*/0x01A2/*::]*/: { /* n:\"BrtRRTQSIF\" */ },\n\t/*::[*/0x01A3/*::]*/: { /* n:\"BrtRRFormat\" */ },\n\t/*::[*/0x01A4/*::]*/: { /* n:\"BrtRREndFormat\" */ },\n\t/*::[*/0x01A5/*::]*/: { /* n:\"BrtRRAutoFmt\" */ },\n\t/*::[*/0x01A6/*::]*/: { /* n:\"BrtBeginUserShViews\", */ T:1 },\n\t/*::[*/0x01A7/*::]*/: { /* n:\"BrtBeginUserShView\", */ T:1 },\n\t/*::[*/0x01A8/*::]*/: { /* n:\"BrtEndUserShView\", */ T:-1 },\n\t/*::[*/0x01A9/*::]*/: { /* n:\"BrtEndUserShViews\", */ T:-1 },\n\t/*::[*/0x01AA/*::]*/: { /* n:\"BrtArrFmla\", */ f:parse_BrtArrFmla },\n\t/*::[*/0x01AB/*::]*/: { /* n:\"BrtShrFmla\", */ f:parse_BrtShrFmla },\n\t/*::[*/0x01AC/*::]*/: { /* n:\"BrtTable\" */ },\n\t/*::[*/0x01AD/*::]*/: { /* n:\"BrtBeginExtConnections\", */ T:1 },\n\t/*::[*/0x01AE/*::]*/: { /* n:\"BrtEndExtConnections\", */ T:-1 },\n\t/*::[*/0x01AF/*::]*/: { /* n:\"BrtBeginPCDCalcMems\", */ T:1 },\n\t/*::[*/0x01B0/*::]*/: { /* n:\"BrtEndPCDCalcMems\", */ T:-1 },\n\t/*::[*/0x01B1/*::]*/: { /* n:\"BrtBeginPCDCalcMem\", */ T:1 },\n\t/*::[*/0x01B2/*::]*/: { /* n:\"BrtEndPCDCalcMem\", */ T:-1 },\n\t/*::[*/0x01B3/*::]*/: { /* n:\"BrtBeginPCDHGLevels\", */ T:1 },\n\t/*::[*/0x01B4/*::]*/: { /* n:\"BrtEndPCDHGLevels\", */ T:-1 },\n\t/*::[*/0x01B5/*::]*/: { /* n:\"BrtBeginPCDHGLevel\", */ T:1 },\n\t/*::[*/0x01B6/*::]*/: { /* n:\"BrtEndPCDHGLevel\", */ T:-1 },\n\t/*::[*/0x01B7/*::]*/: { /* n:\"BrtBeginPCDHGLGroups\", */ T:1 },\n\t/*::[*/0x01B8/*::]*/: { /* n:\"BrtEndPCDHGLGroups\", */ T:-1 },\n\t/*::[*/0x01B9/*::]*/: { /* n:\"BrtBeginPCDHGLGroup\", */ T:1 },\n\t/*::[*/0x01BA/*::]*/: { /* n:\"BrtEndPCDHGLGroup\", */ T:-1 },\n\t/*::[*/0x01BB/*::]*/: { /* n:\"BrtBeginPCDHGLGMembers\", */ T:1 },\n\t/*::[*/0x01BC/*::]*/: { /* n:\"BrtEndPCDHGLGMembers\", */ T:-1 },\n\t/*::[*/0x01BD/*::]*/: { /* n:\"BrtBeginPCDHGLGMember\", */ T:1 },\n\t/*::[*/0x01BE/*::]*/: { /* n:\"BrtEndPCDHGLGMember\", */ T:-1 },\n\t/*::[*/0x01BF/*::]*/: { /* n:\"BrtBeginQSI\", */ T:1 },\n\t/*::[*/0x01C0/*::]*/: { /* n:\"BrtEndQSI\", */ T:-1 },\n\t/*::[*/0x01C1/*::]*/: { /* n:\"BrtBeginQSIR\", */ T:1 },\n\t/*::[*/0x01C2/*::]*/: { /* n:\"BrtEndQSIR\", */ T:-1 },\n\t/*::[*/0x01C3/*::]*/: { /* n:\"BrtBeginDeletedNames\", */ T:1 },\n\t/*::[*/0x01C4/*::]*/: { /* n:\"BrtEndDeletedNames\", */ T:-1 },\n\t/*::[*/0x01C5/*::]*/: { /* n:\"BrtBeginDeletedName\", */ T:1 },\n\t/*::[*/0x01C6/*::]*/: { /* n:\"BrtEndDeletedName\", */ T:-1 },\n\t/*::[*/0x01C7/*::]*/: { /* n:\"BrtBeginQSIFs\", */ T:1 },\n\t/*::[*/0x01C8/*::]*/: { /* n:\"BrtEndQSIFs\", */ T:-1 },\n\t/*::[*/0x01C9/*::]*/: { /* n:\"BrtBeginQSIF\", */ T:1 },\n\t/*::[*/0x01CA/*::]*/: { /* n:\"BrtEndQSIF\", */ T:-1 },\n\t/*::[*/0x01CB/*::]*/: { /* n:\"BrtBeginAutoSortScope\", */ T:1 },\n\t/*::[*/0x01CC/*::]*/: { /* n:\"BrtEndAutoSortScope\", */ T:-1 },\n\t/*::[*/0x01CD/*::]*/: { /* n:\"BrtBeginConditionalFormatting\", */ T:1 },\n\t/*::[*/0x01CE/*::]*/: { /* n:\"BrtEndConditionalFormatting\", */ T:-1 },\n\t/*::[*/0x01CF/*::]*/: { /* n:\"BrtBeginCFRule\", */ T:1 },\n\t/*::[*/0x01D0/*::]*/: { /* n:\"BrtEndCFRule\", */ T:-1 },\n\t/*::[*/0x01D1/*::]*/: { /* n:\"BrtBeginIconSet\", */ T:1 },\n\t/*::[*/0x01D2/*::]*/: { /* n:\"BrtEndIconSet\", */ T:-1 },\n\t/*::[*/0x01D3/*::]*/: { /* n:\"BrtBeginDatabar\", */ T:1 },\n\t/*::[*/0x01D4/*::]*/: { /* n:\"BrtEndDatabar\", */ T:-1 },\n\t/*::[*/0x01D5/*::]*/: { /* n:\"BrtBeginColorScale\", */ T:1 },\n\t/*::[*/0x01D6/*::]*/: { /* n:\"BrtEndColorScale\", */ T:-1 },\n\t/*::[*/0x01D7/*::]*/: { /* n:\"BrtCFVO\" */ },\n\t/*::[*/0x01D8/*::]*/: { /* n:\"BrtExternValueMeta\" */ },\n\t/*::[*/0x01D9/*::]*/: { /* n:\"BrtBeginColorPalette\", */ T:1 },\n\t/*::[*/0x01DA/*::]*/: { /* n:\"BrtEndColorPalette\", */ T:-1 },\n\t/*::[*/0x01DB/*::]*/: { /* n:\"BrtIndexedColor\" */ },\n\t/*::[*/0x01DC/*::]*/: { /* n:\"BrtMargins\", */ f:parse_BrtMargins },\n\t/*::[*/0x01DD/*::]*/: { /* n:\"BrtPrintOptions\" */ },\n\t/*::[*/0x01DE/*::]*/: { /* n:\"BrtPageSetup\" */ },\n\t/*::[*/0x01DF/*::]*/: { /* n:\"BrtBeginHeaderFooter\", */ T:1 },\n\t/*::[*/0x01E0/*::]*/: { /* n:\"BrtEndHeaderFooter\", */ T:-1 },\n\t/*::[*/0x01E1/*::]*/: { /* n:\"BrtBeginSXCrtFormat\", */ T:1 },\n\t/*::[*/0x01E2/*::]*/: { /* n:\"BrtEndSXCrtFormat\", */ T:-1 },\n\t/*::[*/0x01E3/*::]*/: { /* n:\"BrtBeginSXCrtFormats\", */ T:1 },\n\t/*::[*/0x01E4/*::]*/: { /* n:\"BrtEndSXCrtFormats\", */ T:-1 },\n\t/*::[*/0x01E5/*::]*/: { /* n:\"BrtWsFmtInfo\", */ f:parse_BrtWsFmtInfo },\n\t/*::[*/0x01E6/*::]*/: { /* n:\"BrtBeginMgs\", */ T:1 },\n\t/*::[*/0x01E7/*::]*/: { /* n:\"BrtEndMGs\", */ T:-1 },\n\t/*::[*/0x01E8/*::]*/: { /* n:\"BrtBeginMGMaps\", */ T:1 },\n\t/*::[*/0x01E9/*::]*/: { /* n:\"BrtEndMGMaps\", */ T:-1 },\n\t/*::[*/0x01EA/*::]*/: { /* n:\"BrtBeginMG\", */ T:1 },\n\t/*::[*/0x01EB/*::]*/: { /* n:\"BrtEndMG\", */ T:-1 },\n\t/*::[*/0x01EC/*::]*/: { /* n:\"BrtBeginMap\", */ T:1 },\n\t/*::[*/0x01ED/*::]*/: { /* n:\"BrtEndMap\", */ T:-1 },\n\t/*::[*/0x01EE/*::]*/: { /* n:\"BrtHLink\", */ f:parse_BrtHLink },\n\t/*::[*/0x01EF/*::]*/: { /* n:\"BrtBeginDCon\", */ T:1 },\n\t/*::[*/0x01F0/*::]*/: { /* n:\"BrtEndDCon\", */ T:-1 },\n\t/*::[*/0x01F1/*::]*/: { /* n:\"BrtBeginDRefs\", */ T:1 },\n\t/*::[*/0x01F2/*::]*/: { /* n:\"BrtEndDRefs\", */ T:-1 },\n\t/*::[*/0x01F3/*::]*/: { /* n:\"BrtDRef\" */ },\n\t/*::[*/0x01F4/*::]*/: { /* n:\"BrtBeginScenMan\", */ T:1 },\n\t/*::[*/0x01F5/*::]*/: { /* n:\"BrtEndScenMan\", */ T:-1 },\n\t/*::[*/0x01F6/*::]*/: { /* n:\"BrtBeginSct\", */ T:1 },\n\t/*::[*/0x01F7/*::]*/: { /* n:\"BrtEndSct\", */ T:-1 },\n\t/*::[*/0x01F8/*::]*/: { /* n:\"BrtSlc\" */ },\n\t/*::[*/0x01F9/*::]*/: { /* n:\"BrtBeginDXFs\", */ T:1 },\n\t/*::[*/0x01FA/*::]*/: { /* n:\"BrtEndDXFs\", */ T:-1 },\n\t/*::[*/0x01FB/*::]*/: { /* n:\"BrtDXF\" */ },\n\t/*::[*/0x01FC/*::]*/: { /* n:\"BrtBeginTableStyles\", */ T:1 },\n\t/*::[*/0x01FD/*::]*/: { /* n:\"BrtEndTableStyles\", */ T:-1 },\n\t/*::[*/0x01FE/*::]*/: { /* n:\"BrtBeginTableStyle\", */ T:1 },\n\t/*::[*/0x01FF/*::]*/: { /* n:\"BrtEndTableStyle\", */ T:-1 },\n\t/*::[*/0x0200/*::]*/: { /* n:\"BrtTableStyleElement\" */ },\n\t/*::[*/0x0201/*::]*/: { /* n:\"BrtTableStyleClient\" */ },\n\t/*::[*/0x0202/*::]*/: { /* n:\"BrtBeginVolDeps\", */ T:1 },\n\t/*::[*/0x0203/*::]*/: { /* n:\"BrtEndVolDeps\", */ T:-1 },\n\t/*::[*/0x0204/*::]*/: { /* n:\"BrtBeginVolType\", */ T:1 },\n\t/*::[*/0x0205/*::]*/: { /* n:\"BrtEndVolType\", */ T:-1 },\n\t/*::[*/0x0206/*::]*/: { /* n:\"BrtBeginVolMain\", */ T:1 },\n\t/*::[*/0x0207/*::]*/: { /* n:\"BrtEndVolMain\", */ T:-1 },\n\t/*::[*/0x0208/*::]*/: { /* n:\"BrtBeginVolTopic\", */ T:1 },\n\t/*::[*/0x0209/*::]*/: { /* n:\"BrtEndVolTopic\", */ T:-1 },\n\t/*::[*/0x020A/*::]*/: { /* n:\"BrtVolSubtopic\" */ },\n\t/*::[*/0x020B/*::]*/: { /* n:\"BrtVolRef\" */ },\n\t/*::[*/0x020C/*::]*/: { /* n:\"BrtVolNum\" */ },\n\t/*::[*/0x020D/*::]*/: { /* n:\"BrtVolErr\" */ },\n\t/*::[*/0x020E/*::]*/: { /* n:\"BrtVolStr\" */ },\n\t/*::[*/0x020F/*::]*/: { /* n:\"BrtVolBool\" */ },\n\t/*::[*/0x0210/*::]*/: { /* n:\"BrtBeginCalcChain$\", */ T:1 },\n\t/*::[*/0x0211/*::]*/: { /* n:\"BrtEndCalcChain$\", */ T:-1 },\n\t/*::[*/0x0212/*::]*/: { /* n:\"BrtBeginSortState\", */ T:1 },\n\t/*::[*/0x0213/*::]*/: { /* n:\"BrtEndSortState\", */ T:-1 },\n\t/*::[*/0x0214/*::]*/: { /* n:\"BrtBeginSortCond\", */ T:1 },\n\t/*::[*/0x0215/*::]*/: { /* n:\"BrtEndSortCond\", */ T:-1 },\n\t/*::[*/0x0216/*::]*/: { /* n:\"BrtBookProtection\" */ },\n\t/*::[*/0x0217/*::]*/: { /* n:\"BrtSheetProtection\" */ },\n\t/*::[*/0x0218/*::]*/: { /* n:\"BrtRangeProtection\" */ },\n\t/*::[*/0x0219/*::]*/: { /* n:\"BrtPhoneticInfo\" */ },\n\t/*::[*/0x021A/*::]*/: { /* n:\"BrtBeginECTxtWiz\", */ T:1 },\n\t/*::[*/0x021B/*::]*/: { /* n:\"BrtEndECTxtWiz\", */ T:-1 },\n\t/*::[*/0x021C/*::]*/: { /* n:\"BrtBeginECTWFldInfoLst\", */ T:1 },\n\t/*::[*/0x021D/*::]*/: { /* n:\"BrtEndECTWFldInfoLst\", */ T:-1 },\n\t/*::[*/0x021E/*::]*/: { /* n:\"BrtBeginECTwFldInfo\", */ T:1 },\n\t/*::[*/0x0224/*::]*/: { /* n:\"BrtFileSharing\" */ },\n\t/*::[*/0x0225/*::]*/: { /* n:\"BrtOleSize\" */ },\n\t/*::[*/0x0226/*::]*/: { /* n:\"BrtDrawing\", */ f:parse_RelID },\n\t/*::[*/0x0227/*::]*/: { /* n:\"BrtLegacyDrawing\" */ },\n\t/*::[*/0x0228/*::]*/: { /* n:\"BrtLegacyDrawingHF\" */ },\n\t/*::[*/0x0229/*::]*/: { /* n:\"BrtWebOpt\" */ },\n\t/*::[*/0x022A/*::]*/: { /* n:\"BrtBeginWebPubItems\", */ T:1 },\n\t/*::[*/0x022B/*::]*/: { /* n:\"BrtEndWebPubItems\", */ T:-1 },\n\t/*::[*/0x022C/*::]*/: { /* n:\"BrtBeginWebPubItem\", */ T:1 },\n\t/*::[*/0x022D/*::]*/: { /* n:\"BrtEndWebPubItem\", */ T:-1 },\n\t/*::[*/0x022E/*::]*/: { /* n:\"BrtBeginSXCondFmt\", */ T:1 },\n\t/*::[*/0x022F/*::]*/: { /* n:\"BrtEndSXCondFmt\", */ T:-1 },\n\t/*::[*/0x0230/*::]*/: { /* n:\"BrtBeginSXCondFmts\", */ T:1 },\n\t/*::[*/0x0231/*::]*/: { /* n:\"BrtEndSXCondFmts\", */ T:-1 },\n\t/*::[*/0x0232/*::]*/: { /* n:\"BrtBkHim\" */ },\n\t/*::[*/0x0234/*::]*/: { /* n:\"BrtColor\" */ },\n\t/*::[*/0x0235/*::]*/: { /* n:\"BrtBeginIndexedColors\", */ T:1 },\n\t/*::[*/0x0236/*::]*/: { /* n:\"BrtEndIndexedColors\", */ T:-1 },\n\t/*::[*/0x0239/*::]*/: { /* n:\"BrtBeginMRUColors\", */ T:1 },\n\t/*::[*/0x023A/*::]*/: { /* n:\"BrtEndMRUColors\", */ T:-1 },\n\t/*::[*/0x023C/*::]*/: { /* n:\"BrtMRUColor\" */ },\n\t/*::[*/0x023D/*::]*/: { /* n:\"BrtBeginDVals\", */ T:1 },\n\t/*::[*/0x023E/*::]*/: { /* n:\"BrtEndDVals\", */ T:-1 },\n\t/*::[*/0x0241/*::]*/: { /* n:\"BrtSupNameStart\" */ },\n\t/*::[*/0x0242/*::]*/: { /* n:\"BrtSupNameValueStart\" */ },\n\t/*::[*/0x0243/*::]*/: { /* n:\"BrtSupNameValueEnd\" */ },\n\t/*::[*/0x0244/*::]*/: { /* n:\"BrtSupNameNum\" */ },\n\t/*::[*/0x0245/*::]*/: { /* n:\"BrtSupNameErr\" */ },\n\t/*::[*/0x0246/*::]*/: { /* n:\"BrtSupNameSt\" */ },\n\t/*::[*/0x0247/*::]*/: { /* n:\"BrtSupNameNil\" */ },\n\t/*::[*/0x0248/*::]*/: { /* n:\"BrtSupNameBool\" */ },\n\t/*::[*/0x0249/*::]*/: { /* n:\"BrtSupNameFmla\" */ },\n\t/*::[*/0x024A/*::]*/: { /* n:\"BrtSupNameBits\" */ },\n\t/*::[*/0x024B/*::]*/: { /* n:\"BrtSupNameEnd\" */ },\n\t/*::[*/0x024C/*::]*/: { /* n:\"BrtEndSupBook\", */ T:-1 },\n\t/*::[*/0x024D/*::]*/: { /* n:\"BrtCellSmartTagProperty\" */ },\n\t/*::[*/0x024E/*::]*/: { /* n:\"BrtBeginCellSmartTag\", */ T:1 },\n\t/*::[*/0x024F/*::]*/: { /* n:\"BrtEndCellSmartTag\", */ T:-1 },\n\t/*::[*/0x0250/*::]*/: { /* n:\"BrtBeginCellSmartTags\", */ T:1 },\n\t/*::[*/0x0251/*::]*/: { /* n:\"BrtEndCellSmartTags\", */ T:-1 },\n\t/*::[*/0x0252/*::]*/: { /* n:\"BrtBeginSmartTags\", */ T:1 },\n\t/*::[*/0x0253/*::]*/: { /* n:\"BrtEndSmartTags\", */ T:-1 },\n\t/*::[*/0x0254/*::]*/: { /* n:\"BrtSmartTagType\" */ },\n\t/*::[*/0x0255/*::]*/: { /* n:\"BrtBeginSmartTagTypes\", */ T:1 },\n\t/*::[*/0x0256/*::]*/: { /* n:\"BrtEndSmartTagTypes\", */ T:-1 },\n\t/*::[*/0x0257/*::]*/: { /* n:\"BrtBeginSXFilters\", */ T:1 },\n\t/*::[*/0x0258/*::]*/: { /* n:\"BrtEndSXFilters\", */ T:-1 },\n\t/*::[*/0x0259/*::]*/: { /* n:\"BrtBeginSXFILTER\", */ T:1 },\n\t/*::[*/0x025A/*::]*/: { /* n:\"BrtEndSXFilter\", */ T:-1 },\n\t/*::[*/0x025B/*::]*/: { /* n:\"BrtBeginFills\", */ T:1 },\n\t/*::[*/0x025C/*::]*/: { /* n:\"BrtEndFills\", */ T:-1 },\n\t/*::[*/0x025D/*::]*/: { /* n:\"BrtBeginCellWatches\", */ T:1 },\n\t/*::[*/0x025E/*::]*/: { /* n:\"BrtEndCellWatches\", */ T:-1 },\n\t/*::[*/0x025F/*::]*/: { /* n:\"BrtCellWatch\" */ },\n\t/*::[*/0x0260/*::]*/: { /* n:\"BrtBeginCRErrs\", */ T:1 },\n\t/*::[*/0x0261/*::]*/: { /* n:\"BrtEndCRErrs\", */ T:-1 },\n\t/*::[*/0x0262/*::]*/: { /* n:\"BrtCrashRecErr\" */ },\n\t/*::[*/0x0263/*::]*/: { /* n:\"BrtBeginFonts\", */ T:1 },\n\t/*::[*/0x0264/*::]*/: { /* n:\"BrtEndFonts\", */ T:-1 },\n\t/*::[*/0x0265/*::]*/: { /* n:\"BrtBeginBorders\", */ T:1 },\n\t/*::[*/0x0266/*::]*/: { /* n:\"BrtEndBorders\", */ T:-1 },\n\t/*::[*/0x0267/*::]*/: { /* n:\"BrtBeginFmts\", */ T:1 },\n\t/*::[*/0x0268/*::]*/: { /* n:\"BrtEndFmts\", */ T:-1 },\n\t/*::[*/0x0269/*::]*/: { /* n:\"BrtBeginCellXFs\", */ T:1 },\n\t/*::[*/0x026A/*::]*/: { /* n:\"BrtEndCellXFs\", */ T:-1 },\n\t/*::[*/0x026B/*::]*/: { /* n:\"BrtBeginStyles\", */ T:1 },\n\t/*::[*/0x026C/*::]*/: { /* n:\"BrtEndStyles\", */ T:-1 },\n\t/*::[*/0x0271/*::]*/: { /* n:\"BrtBigName\" */ },\n\t/*::[*/0x0272/*::]*/: { /* n:\"BrtBeginCellStyleXFs\", */ T:1 },\n\t/*::[*/0x0273/*::]*/: { /* n:\"BrtEndCellStyleXFs\", */ T:-1 },\n\t/*::[*/0x0274/*::]*/: { /* n:\"BrtBeginComments\", */ T:1 },\n\t/*::[*/0x0275/*::]*/: { /* n:\"BrtEndComments\", */ T:-1 },\n\t/*::[*/0x0276/*::]*/: { /* n:\"BrtBeginCommentAuthors\", */ T:1 },\n\t/*::[*/0x0277/*::]*/: { /* n:\"BrtEndCommentAuthors\", */ T:-1 },\n\t/*::[*/0x0278/*::]*/: { /* n:\"BrtCommentAuthor\", */ f:parse_BrtCommentAuthor },\n\t/*::[*/0x0279/*::]*/: { /* n:\"BrtBeginCommentList\", */ T:1 },\n\t/*::[*/0x027A/*::]*/: { /* n:\"BrtEndCommentList\", */ T:-1 },\n\t/*::[*/0x027B/*::]*/: { /* n:\"BrtBeginComment\", */ T:1, f:parse_BrtBeginComment},\n\t/*::[*/0x027C/*::]*/: { /* n:\"BrtEndComment\", */ T:-1 },\n\t/*::[*/0x027D/*::]*/: { /* n:\"BrtCommentText\", */ f:parse_BrtCommentText },\n\t/*::[*/0x027E/*::]*/: { /* n:\"BrtBeginOleObjects\", */ T:1 },\n\t/*::[*/0x027F/*::]*/: { /* n:\"BrtOleObject\" */ },\n\t/*::[*/0x0280/*::]*/: { /* n:\"BrtEndOleObjects\", */ T:-1 },\n\t/*::[*/0x0281/*::]*/: { /* n:\"BrtBeginSxrules\", */ T:1 },\n\t/*::[*/0x0282/*::]*/: { /* n:\"BrtEndSxRules\", */ T:-1 },\n\t/*::[*/0x0283/*::]*/: { /* n:\"BrtBeginActiveXControls\", */ T:1 },\n\t/*::[*/0x0284/*::]*/: { /* n:\"BrtActiveX\" */ },\n\t/*::[*/0x0285/*::]*/: { /* n:\"BrtEndActiveXControls\", */ T:-1 },\n\t/*::[*/0x0286/*::]*/: { /* n:\"BrtBeginPCDSDTCEMembersSortBy\", */ T:1 },\n\t/*::[*/0x0288/*::]*/: { /* n:\"BrtBeginCellIgnoreECs\", */ T:1 },\n\t/*::[*/0x0289/*::]*/: { /* n:\"BrtCellIgnoreEC\" */ },\n\t/*::[*/0x028A/*::]*/: { /* n:\"BrtEndCellIgnoreECs\", */ T:-1 },\n\t/*::[*/0x028B/*::]*/: { /* n:\"BrtCsProp\", */ f:parse_BrtCsProp },\n\t/*::[*/0x028C/*::]*/: { /* n:\"BrtCsPageSetup\" */ },\n\t/*::[*/0x028D/*::]*/: { /* n:\"BrtBeginUserCsViews\", */ T:1 },\n\t/*::[*/0x028E/*::]*/: { /* n:\"BrtEndUserCsViews\", */ T:-1 },\n\t/*::[*/0x028F/*::]*/: { /* n:\"BrtBeginUserCsView\", */ T:1 },\n\t/*::[*/0x0290/*::]*/: { /* n:\"BrtEndUserCsView\", */ T:-1 },\n\t/*::[*/0x0291/*::]*/: { /* n:\"BrtBeginPcdSFCIEntries\", */ T:1 },\n\t/*::[*/0x0292/*::]*/: { /* n:\"BrtEndPCDSFCIEntries\", */ T:-1 },\n\t/*::[*/0x0293/*::]*/: { /* n:\"BrtPCDSFCIEntry\" */ },\n\t/*::[*/0x0294/*::]*/: { /* n:\"BrtBeginListParts\", */ T:1 },\n\t/*::[*/0x0295/*::]*/: { /* n:\"BrtListPart\" */ },\n\t/*::[*/0x0296/*::]*/: { /* n:\"BrtEndListParts\", */ T:-1 },\n\t/*::[*/0x0297/*::]*/: { /* n:\"BrtSheetCalcProp\" */ },\n\t/*::[*/0x0298/*::]*/: { /* n:\"BrtBeginFnGroup\", */ T:1 },\n\t/*::[*/0x0299/*::]*/: { /* n:\"BrtFnGroup\" */ },\n\t/*::[*/0x029A/*::]*/: { /* n:\"BrtEndFnGroup\", */ T:-1 },\n\t/*::[*/0x029B/*::]*/: { /* n:\"BrtSupAddin\" */ },\n\t/*::[*/0x029C/*::]*/: { /* n:\"BrtSXTDMPOrder\" */ },\n\t/*::[*/0x029D/*::]*/: { /* n:\"BrtCsProtection\" */ },\n\t/*::[*/0x029F/*::]*/: { /* n:\"BrtBeginWsSortMap\", */ T:1 },\n\t/*::[*/0x02A0/*::]*/: { /* n:\"BrtEndWsSortMap\", */ T:-1 },\n\t/*::[*/0x02A1/*::]*/: { /* n:\"BrtBeginRRSort\", */ T:1 },\n\t/*::[*/0x02A2/*::]*/: { /* n:\"BrtEndRRSort\", */ T:-1 },\n\t/*::[*/0x02A3/*::]*/: { /* n:\"BrtRRSortItem\" */ },\n\t/*::[*/0x02A4/*::]*/: { /* n:\"BrtFileSharingIso\" */ },\n\t/*::[*/0x02A5/*::]*/: { /* n:\"BrtBookProtectionIso\" */ },\n\t/*::[*/0x02A6/*::]*/: { /* n:\"BrtSheetProtectionIso\" */ },\n\t/*::[*/0x02A7/*::]*/: { /* n:\"BrtCsProtectionIso\" */ },\n\t/*::[*/0x02A8/*::]*/: { /* n:\"BrtRangeProtectionIso\" */ },\n\t/*::[*/0x02A9/*::]*/: { /* n:\"BrtDValList\" */ },\n\t/*::[*/0x0400/*::]*/: { /* n:\"BrtRwDescent\" */ },\n\t/*::[*/0x0401/*::]*/: { /* n:\"BrtKnownFonts\" */ },\n\t/*::[*/0x0402/*::]*/: { /* n:\"BrtBeginSXTupleSet\", */ T:1 },\n\t/*::[*/0x0403/*::]*/: { /* n:\"BrtEndSXTupleSet\", */ T:-1 },\n\t/*::[*/0x0404/*::]*/: { /* n:\"BrtBeginSXTupleSetHeader\", */ T:1 },\n\t/*::[*/0x0405/*::]*/: { /* n:\"BrtEndSXTupleSetHeader\", */ T:-1 },\n\t/*::[*/0x0406/*::]*/: { /* n:\"BrtSXTupleSetHeaderItem\" */ },\n\t/*::[*/0x0407/*::]*/: { /* n:\"BrtBeginSXTupleSetData\", */ T:1 },\n\t/*::[*/0x0408/*::]*/: { /* n:\"BrtEndSXTupleSetData\", */ T:-1 },\n\t/*::[*/0x0409/*::]*/: { /* n:\"BrtBeginSXTupleSetRow\", */ T:1 },\n\t/*::[*/0x040A/*::]*/: { /* n:\"BrtEndSXTupleSetRow\", */ T:-1 },\n\t/*::[*/0x040B/*::]*/: { /* n:\"BrtSXTupleSetRowItem\" */ },\n\t/*::[*/0x040C/*::]*/: { /* n:\"BrtNameExt\" */ },\n\t/*::[*/0x040D/*::]*/: { /* n:\"BrtPCDH14\" */ },\n\t/*::[*/0x040E/*::]*/: { /* n:\"BrtBeginPCDCalcMem14\", */ T:1 },\n\t/*::[*/0x040F/*::]*/: { /* n:\"BrtEndPCDCalcMem14\", */ T:-1 },\n\t/*::[*/0x0410/*::]*/: { /* n:\"BrtSXTH14\" */ },\n\t/*::[*/0x0411/*::]*/: { /* n:\"BrtBeginSparklineGroup\", */ T:1 },\n\t/*::[*/0x0412/*::]*/: { /* n:\"BrtEndSparklineGroup\", */ T:-1 },\n\t/*::[*/0x0413/*::]*/: { /* n:\"BrtSparkline\" */ },\n\t/*::[*/0x0414/*::]*/: { /* n:\"BrtSXDI14\" */ },\n\t/*::[*/0x0415/*::]*/: { /* n:\"BrtWsFmtInfoEx14\" */ },\n\t/*::[*/0x0416/*::]*/: { /* n:\"BrtBeginConditionalFormatting14\", */ T:1 },\n\t/*::[*/0x0417/*::]*/: { /* n:\"BrtEndConditionalFormatting14\", */ T:-1 },\n\t/*::[*/0x0418/*::]*/: { /* n:\"BrtBeginCFRule14\", */ T:1 },\n\t/*::[*/0x0419/*::]*/: { /* n:\"BrtEndCFRule14\", */ T:-1 },\n\t/*::[*/0x041A/*::]*/: { /* n:\"BrtCFVO14\" */ },\n\t/*::[*/0x041B/*::]*/: { /* n:\"BrtBeginDatabar14\", */ T:1 },\n\t/*::[*/0x041C/*::]*/: { /* n:\"BrtBeginIconSet14\", */ T:1 },\n\t/*::[*/0x041D/*::]*/: { /* n:\"BrtDVal14\", */ f: parse_BrtDVal14 },\n\t/*::[*/0x041E/*::]*/: { /* n:\"BrtBeginDVals14\", */ T:1 },\n\t/*::[*/0x041F/*::]*/: { /* n:\"BrtColor14\" */ },\n\t/*::[*/0x0420/*::]*/: { /* n:\"BrtBeginSparklines\", */ T:1 },\n\t/*::[*/0x0421/*::]*/: { /* n:\"BrtEndSparklines\", */ T:-1 },\n\t/*::[*/0x0422/*::]*/: { /* n:\"BrtBeginSparklineGroups\", */ T:1 },\n\t/*::[*/0x0423/*::]*/: { /* n:\"BrtEndSparklineGroups\", */ T:-1 },\n\t/*::[*/0x0425/*::]*/: { /* n:\"BrtSXVD14\" */ },\n\t/*::[*/0x0426/*::]*/: { /* n:\"BrtBeginSXView14\", */ T:1 },\n\t/*::[*/0x0427/*::]*/: { /* n:\"BrtEndSXView14\", */ T:-1 },\n\t/*::[*/0x0428/*::]*/: { /* n:\"BrtBeginSXView16\", */ T:1 },\n\t/*::[*/0x0429/*::]*/: { /* n:\"BrtEndSXView16\", */ T:-1 },\n\t/*::[*/0x042A/*::]*/: { /* n:\"BrtBeginPCD14\", */ T:1 },\n\t/*::[*/0x042B/*::]*/: { /* n:\"BrtEndPCD14\", */ T:-1 },\n\t/*::[*/0x042C/*::]*/: { /* n:\"BrtBeginExtConn14\", */ T:1 },\n\t/*::[*/0x042D/*::]*/: { /* n:\"BrtEndExtConn14\", */ T:-1 },\n\t/*::[*/0x042E/*::]*/: { /* n:\"BrtBeginSlicerCacheIDs\", */ T:1 },\n\t/*::[*/0x042F/*::]*/: { /* n:\"BrtEndSlicerCacheIDs\", */ T:-1 },\n\t/*::[*/0x0430/*::]*/: { /* n:\"BrtBeginSlicerCacheID\", */ T:1 },\n\t/*::[*/0x0431/*::]*/: { /* n:\"BrtEndSlicerCacheID\", */ T:-1 },\n\t/*::[*/0x0433/*::]*/: { /* n:\"BrtBeginSlicerCache\", */ T:1 },\n\t/*::[*/0x0434/*::]*/: { /* n:\"BrtEndSlicerCache\", */ T:-1 },\n\t/*::[*/0x0435/*::]*/: { /* n:\"BrtBeginSlicerCacheDef\", */ T:1 },\n\t/*::[*/0x0436/*::]*/: { /* n:\"BrtEndSlicerCacheDef\", */ T:-1 },\n\t/*::[*/0x0437/*::]*/: { /* n:\"BrtBeginSlicersEx\", */ T:1 },\n\t/*::[*/0x0438/*::]*/: { /* n:\"BrtEndSlicersEx\", */ T:-1 },\n\t/*::[*/0x0439/*::]*/: { /* n:\"BrtBeginSlicerEx\", */ T:1 },\n\t/*::[*/0x043A/*::]*/: { /* n:\"BrtEndSlicerEx\", */ T:-1 },\n\t/*::[*/0x043B/*::]*/: { /* n:\"BrtBeginSlicer\", */ T:1 },\n\t/*::[*/0x043C/*::]*/: { /* n:\"BrtEndSlicer\", */ T:-1 },\n\t/*::[*/0x043D/*::]*/: { /* n:\"BrtSlicerCachePivotTables\" */ },\n\t/*::[*/0x043E/*::]*/: { /* n:\"BrtBeginSlicerCacheOlapImpl\", */ T:1 },\n\t/*::[*/0x043F/*::]*/: { /* n:\"BrtEndSlicerCacheOlapImpl\", */ T:-1 },\n\t/*::[*/0x0440/*::]*/: { /* n:\"BrtBeginSlicerCacheLevelsData\", */ T:1 },\n\t/*::[*/0x0441/*::]*/: { /* n:\"BrtEndSlicerCacheLevelsData\", */ T:-1 },\n\t/*::[*/0x0442/*::]*/: { /* n:\"BrtBeginSlicerCacheLevelData\", */ T:1 },\n\t/*::[*/0x0443/*::]*/: { /* n:\"BrtEndSlicerCacheLevelData\", */ T:-1 },\n\t/*::[*/0x0444/*::]*/: { /* n:\"BrtBeginSlicerCacheSiRanges\", */ T:1 },\n\t/*::[*/0x0445/*::]*/: { /* n:\"BrtEndSlicerCacheSiRanges\", */ T:-1 },\n\t/*::[*/0x0446/*::]*/: { /* n:\"BrtBeginSlicerCacheSiRange\", */ T:1 },\n\t/*::[*/0x0447/*::]*/: { /* n:\"BrtEndSlicerCacheSiRange\", */ T:-1 },\n\t/*::[*/0x0448/*::]*/: { /* n:\"BrtSlicerCacheOlapItem\" */ },\n\t/*::[*/0x0449/*::]*/: { /* n:\"BrtBeginSlicerCacheSelections\", */ T:1 },\n\t/*::[*/0x044A/*::]*/: { /* n:\"BrtSlicerCacheSelection\" */ },\n\t/*::[*/0x044B/*::]*/: { /* n:\"BrtEndSlicerCacheSelections\", */ T:-1 },\n\t/*::[*/0x044C/*::]*/: { /* n:\"BrtBeginSlicerCacheNative\", */ T:1 },\n\t/*::[*/0x044D/*::]*/: { /* n:\"BrtEndSlicerCacheNative\", */ T:-1 },\n\t/*::[*/0x044E/*::]*/: { /* n:\"BrtSlicerCacheNativeItem\" */ },\n\t/*::[*/0x044F/*::]*/: { /* n:\"BrtRangeProtection14\" */ },\n\t/*::[*/0x0450/*::]*/: { /* n:\"BrtRangeProtectionIso14\" */ },\n\t/*::[*/0x0451/*::]*/: { /* n:\"BrtCellIgnoreEC14\" */ },\n\t/*::[*/0x0457/*::]*/: { /* n:\"BrtList14\" */ },\n\t/*::[*/0x0458/*::]*/: { /* n:\"BrtCFIcon\" */ },\n\t/*::[*/0x0459/*::]*/: { /* n:\"BrtBeginSlicerCachesPivotCacheIDs\", */ T:1 },\n\t/*::[*/0x045A/*::]*/: { /* n:\"BrtEndSlicerCachesPivotCacheIDs\", */ T:-1 },\n\t/*::[*/0x045B/*::]*/: { /* n:\"BrtBeginSlicers\", */ T:1 },\n\t/*::[*/0x045C/*::]*/: { /* n:\"BrtEndSlicers\", */ T:-1 },\n\t/*::[*/0x045D/*::]*/: { /* n:\"BrtWbProp14\" */ },\n\t/*::[*/0x045E/*::]*/: { /* n:\"BrtBeginSXEdit\", */ T:1 },\n\t/*::[*/0x045F/*::]*/: { /* n:\"BrtEndSXEdit\", */ T:-1 },\n\t/*::[*/0x0460/*::]*/: { /* n:\"BrtBeginSXEdits\", */ T:1 },\n\t/*::[*/0x0461/*::]*/: { /* n:\"BrtEndSXEdits\", */ T:-1 },\n\t/*::[*/0x0462/*::]*/: { /* n:\"BrtBeginSXChange\", */ T:1 },\n\t/*::[*/0x0463/*::]*/: { /* n:\"BrtEndSXChange\", */ T:-1 },\n\t/*::[*/0x0464/*::]*/: { /* n:\"BrtBeginSXChanges\", */ T:1 },\n\t/*::[*/0x0465/*::]*/: { /* n:\"BrtEndSXChanges\", */ T:-1 },\n\t/*::[*/0x0466/*::]*/: { /* n:\"BrtSXTupleItems\" */ },\n\t/*::[*/0x0468/*::]*/: { /* n:\"BrtBeginSlicerStyle\", */ T:1 },\n\t/*::[*/0x0469/*::]*/: { /* n:\"BrtEndSlicerStyle\", */ T:-1 },\n\t/*::[*/0x046A/*::]*/: { /* n:\"BrtSlicerStyleElement\" */ },\n\t/*::[*/0x046B/*::]*/: { /* n:\"BrtBeginStyleSheetExt14\", */ T:1 },\n\t/*::[*/0x046C/*::]*/: { /* n:\"BrtEndStyleSheetExt14\", */ T:-1 },\n\t/*::[*/0x046D/*::]*/: { /* n:\"BrtBeginSlicerCachesPivotCacheID\", */ T:1 },\n\t/*::[*/0x046E/*::]*/: { /* n:\"BrtEndSlicerCachesPivotCacheID\", */ T:-1 },\n\t/*::[*/0x046F/*::]*/: { /* n:\"BrtBeginConditionalFormattings\", */ T:1 },\n\t/*::[*/0x0470/*::]*/: { /* n:\"BrtEndConditionalFormattings\", */ T:-1 },\n\t/*::[*/0x0471/*::]*/: { /* n:\"BrtBeginPCDCalcMemExt\", */ T:1 },\n\t/*::[*/0x0472/*::]*/: { /* n:\"BrtEndPCDCalcMemExt\", */ T:-1 },\n\t/*::[*/0x0473/*::]*/: { /* n:\"BrtBeginPCDCalcMemsExt\", */ T:1 },\n\t/*::[*/0x0474/*::]*/: { /* n:\"BrtEndPCDCalcMemsExt\", */ T:-1 },\n\t/*::[*/0x0475/*::]*/: { /* n:\"BrtPCDField14\" */ },\n\t/*::[*/0x0476/*::]*/: { /* n:\"BrtBeginSlicerStyles\", */ T:1 },\n\t/*::[*/0x0477/*::]*/: { /* n:\"BrtEndSlicerStyles\", */ T:-1 },\n\t/*::[*/0x0478/*::]*/: { /* n:\"BrtBeginSlicerStyleElements\", */ T:1 },\n\t/*::[*/0x0479/*::]*/: { /* n:\"BrtEndSlicerStyleElements\", */ T:-1 },\n\t/*::[*/0x047A/*::]*/: { /* n:\"BrtCFRuleExt\" */ },\n\t/*::[*/0x047B/*::]*/: { /* n:\"BrtBeginSXCondFmt14\", */ T:1 },\n\t/*::[*/0x047C/*::]*/: { /* n:\"BrtEndSXCondFmt14\", */ T:-1 },\n\t/*::[*/0x047D/*::]*/: { /* n:\"BrtBeginSXCondFmts14\", */ T:1 },\n\t/*::[*/0x047E/*::]*/: { /* n:\"BrtEndSXCondFmts14\", */ T:-1 },\n\t/*::[*/0x0480/*::]*/: { /* n:\"BrtBeginSortCond14\", */ T:1 },\n\t/*::[*/0x0481/*::]*/: { /* n:\"BrtEndSortCond14\", */ T:-1 },\n\t/*::[*/0x0482/*::]*/: { /* n:\"BrtEndDVals14\", */ T:-1 },\n\t/*::[*/0x0483/*::]*/: { /* n:\"BrtEndIconSet14\", */ T:-1 },\n\t/*::[*/0x0484/*::]*/: { /* n:\"BrtEndDatabar14\", */ T:-1 },\n\t/*::[*/0x0485/*::]*/: { /* n:\"BrtBeginColorScale14\", */ T:1 },\n\t/*::[*/0x0486/*::]*/: { /* n:\"BrtEndColorScale14\", */ T:-1 },\n\t/*::[*/0x0487/*::]*/: { /* n:\"BrtBeginSxrules14\", */ T:1 },\n\t/*::[*/0x0488/*::]*/: { /* n:\"BrtEndSxrules14\", */ T:-1 },\n\t/*::[*/0x0489/*::]*/: { /* n:\"BrtBeginPRule14\", */ T:1 },\n\t/*::[*/0x048A/*::]*/: { /* n:\"BrtEndPRule14\", */ T:-1 },\n\t/*::[*/0x048B/*::]*/: { /* n:\"BrtBeginPRFilters14\", */ T:1 },\n\t/*::[*/0x048C/*::]*/: { /* n:\"BrtEndPRFilters14\", */ T:-1 },\n\t/*::[*/0x048D/*::]*/: { /* n:\"BrtBeginPRFilter14\", */ T:1 },\n\t/*::[*/0x048E/*::]*/: { /* n:\"BrtEndPRFilter14\", */ T:-1 },\n\t/*::[*/0x048F/*::]*/: { /* n:\"BrtBeginPRFItem14\", */ T:1 },\n\t/*::[*/0x0490/*::]*/: { /* n:\"BrtEndPRFItem14\", */ T:-1 },\n\t/*::[*/0x0491/*::]*/: { /* n:\"BrtBeginCellIgnoreECs14\", */ T:1 },\n\t/*::[*/0x0492/*::]*/: { /* n:\"BrtEndCellIgnoreECs14\", */ T:-1 },\n\t/*::[*/0x0493/*::]*/: { /* n:\"BrtDxf14\" */ },\n\t/*::[*/0x0494/*::]*/: { /* n:\"BrtBeginDxF14s\", */ T:1 },\n\t/*::[*/0x0495/*::]*/: { /* n:\"BrtEndDxf14s\", */ T:-1 },\n\t/*::[*/0x0499/*::]*/: { /* n:\"BrtFilter14\" */ },\n\t/*::[*/0x049A/*::]*/: { /* n:\"BrtBeginCustomFilters14\", */ T:1 },\n\t/*::[*/0x049C/*::]*/: { /* n:\"BrtCustomFilter14\" */ },\n\t/*::[*/0x049D/*::]*/: { /* n:\"BrtIconFilter14\" */ },\n\t/*::[*/0x049E/*::]*/: { /* n:\"BrtPivotCacheConnectionName\" */ },\n\t/*::[*/0x0800/*::]*/: { /* n:\"BrtBeginDecoupledPivotCacheIDs\", */ T:1 },\n\t/*::[*/0x0801/*::]*/: { /* n:\"BrtEndDecoupledPivotCacheIDs\", */ T:-1 },\n\t/*::[*/0x0802/*::]*/: { /* n:\"BrtDecoupledPivotCacheID\" */ },\n\t/*::[*/0x0803/*::]*/: { /* n:\"BrtBeginPivotTableRefs\", */ T:1 },\n\t/*::[*/0x0804/*::]*/: { /* n:\"BrtEndPivotTableRefs\", */ T:-1 },\n\t/*::[*/0x0805/*::]*/: { /* n:\"BrtPivotTableRef\" */ },\n\t/*::[*/0x0806/*::]*/: { /* n:\"BrtSlicerCacheBookPivotTables\" */ },\n\t/*::[*/0x0807/*::]*/: { /* n:\"BrtBeginSxvcells\", */ T:1 },\n\t/*::[*/0x0808/*::]*/: { /* n:\"BrtEndSxvcells\", */ T:-1 },\n\t/*::[*/0x0809/*::]*/: { /* n:\"BrtBeginSxRow\", */ T:1 },\n\t/*::[*/0x080A/*::]*/: { /* n:\"BrtEndSxRow\", */ T:-1 },\n\t/*::[*/0x080C/*::]*/: { /* n:\"BrtPcdCalcMem15\" */ },\n\t/*::[*/0x0813/*::]*/: { /* n:\"BrtQsi15\" */ },\n\t/*::[*/0x0814/*::]*/: { /* n:\"BrtBeginWebExtensions\", */ T:1 },\n\t/*::[*/0x0815/*::]*/: { /* n:\"BrtEndWebExtensions\", */ T:-1 },\n\t/*::[*/0x0816/*::]*/: { /* n:\"BrtWebExtension\" */ },\n\t/*::[*/0x0817/*::]*/: { /* n:\"BrtAbsPath15\" */ },\n\t/*::[*/0x0818/*::]*/: { /* n:\"BrtBeginPivotTableUISettings\", */ T:1 },\n\t/*::[*/0x0819/*::]*/: { /* n:\"BrtEndPivotTableUISettings\", */ T:-1 },\n\t/*::[*/0x081B/*::]*/: { /* n:\"BrtTableSlicerCacheIDs\" */ },\n\t/*::[*/0x081C/*::]*/: { /* n:\"BrtTableSlicerCacheID\" */ },\n\t/*::[*/0x081D/*::]*/: { /* n:\"BrtBeginTableSlicerCache\", */ T:1 },\n\t/*::[*/0x081E/*::]*/: { /* n:\"BrtEndTableSlicerCache\", */ T:-1 },\n\t/*::[*/0x081F/*::]*/: { /* n:\"BrtSxFilter15\" */ },\n\t/*::[*/0x0820/*::]*/: { /* n:\"BrtBeginTimelineCachePivotCacheIDs\", */ T:1 },\n\t/*::[*/0x0821/*::]*/: { /* n:\"BrtEndTimelineCachePivotCacheIDs\", */ T:-1 },\n\t/*::[*/0x0822/*::]*/: { /* n:\"BrtTimelineCachePivotCacheID\" */ },\n\t/*::[*/0x0823/*::]*/: { /* n:\"BrtBeginTimelineCacheIDs\", */ T:1 },\n\t/*::[*/0x0824/*::]*/: { /* n:\"BrtEndTimelineCacheIDs\", */ T:-1 },\n\t/*::[*/0x0825/*::]*/: { /* n:\"BrtBeginTimelineCacheID\", */ T:1 },\n\t/*::[*/0x0826/*::]*/: { /* n:\"BrtEndTimelineCacheID\", */ T:-1 },\n\t/*::[*/0x0827/*::]*/: { /* n:\"BrtBeginTimelinesEx\", */ T:1 },\n\t/*::[*/0x0828/*::]*/: { /* n:\"BrtEndTimelinesEx\", */ T:-1 },\n\t/*::[*/0x0829/*::]*/: { /* n:\"BrtBeginTimelineEx\", */ T:1 },\n\t/*::[*/0x082A/*::]*/: { /* n:\"BrtEndTimelineEx\", */ T:-1 },\n\t/*::[*/0x082B/*::]*/: { /* n:\"BrtWorkBookPr15\" */ },\n\t/*::[*/0x082C/*::]*/: { /* n:\"BrtPCDH15\" */ },\n\t/*::[*/0x082D/*::]*/: { /* n:\"BrtBeginTimelineStyle\", */ T:1 },\n\t/*::[*/0x082E/*::]*/: { /* n:\"BrtEndTimelineStyle\", */ T:-1 },\n\t/*::[*/0x082F/*::]*/: { /* n:\"BrtTimelineStyleElement\" */ },\n\t/*::[*/0x0830/*::]*/: { /* n:\"BrtBeginTimelineStylesheetExt15\", */ T:1 },\n\t/*::[*/0x0831/*::]*/: { /* n:\"BrtEndTimelineStylesheetExt15\", */ T:-1 },\n\t/*::[*/0x0832/*::]*/: { /* n:\"BrtBeginTimelineStyles\", */ T:1 },\n\t/*::[*/0x0833/*::]*/: { /* n:\"BrtEndTimelineStyles\", */ T:-1 },\n\t/*::[*/0x0834/*::]*/: { /* n:\"BrtBeginTimelineStyleElements\", */ T:1 },\n\t/*::[*/0x0835/*::]*/: { /* n:\"BrtEndTimelineStyleElements\", */ T:-1 },\n\t/*::[*/0x0836/*::]*/: { /* n:\"BrtDxf15\" */ },\n\t/*::[*/0x0837/*::]*/: { /* n:\"BrtBeginDxfs15\", */ T:1 },\n\t/*::[*/0x0838/*::]*/: { /* n:\"BrtEndDxfs15\", */ T:-1 },\n\t/*::[*/0x0839/*::]*/: { /* n:\"BrtSlicerCacheHideItemsWithNoData\" */ },\n\t/*::[*/0x083A/*::]*/: { /* n:\"BrtBeginItemUniqueNames\", */ T:1 },\n\t/*::[*/0x083B/*::]*/: { /* n:\"BrtEndItemUniqueNames\", */ T:-1 },\n\t/*::[*/0x083C/*::]*/: { /* n:\"BrtItemUniqueName\" */ },\n\t/*::[*/0x083D/*::]*/: { /* n:\"BrtBeginExtConn15\", */ T:1 },\n\t/*::[*/0x083E/*::]*/: { /* n:\"BrtEndExtConn15\", */ T:-1 },\n\t/*::[*/0x083F/*::]*/: { /* n:\"BrtBeginOledbPr15\", */ T:1 },\n\t/*::[*/0x0840/*::]*/: { /* n:\"BrtEndOledbPr15\", */ T:-1 },\n\t/*::[*/0x0841/*::]*/: { /* n:\"BrtBeginDataFeedPr15\", */ T:1 },\n\t/*::[*/0x0842/*::]*/: { /* n:\"BrtEndDataFeedPr15\", */ T:-1 },\n\t/*::[*/0x0843/*::]*/: { /* n:\"BrtTextPr15\" */ },\n\t/*::[*/0x0844/*::]*/: { /* n:\"BrtRangePr15\" */ },\n\t/*::[*/0x0845/*::]*/: { /* n:\"BrtDbCommand15\" */ },\n\t/*::[*/0x0846/*::]*/: { /* n:\"BrtBeginDbTables15\", */ T:1 },\n\t/*::[*/0x0847/*::]*/: { /* n:\"BrtEndDbTables15\", */ T:-1 },\n\t/*::[*/0x0848/*::]*/: { /* n:\"BrtDbTable15\" */ },\n\t/*::[*/0x0849/*::]*/: { /* n:\"BrtBeginDataModel\", */ T:1 },\n\t/*::[*/0x084A/*::]*/: { /* n:\"BrtEndDataModel\", */ T:-1 },\n\t/*::[*/0x084B/*::]*/: { /* n:\"BrtBeginModelTables\", */ T:1 },\n\t/*::[*/0x084C/*::]*/: { /* n:\"BrtEndModelTables\", */ T:-1 },\n\t/*::[*/0x084D/*::]*/: { /* n:\"BrtModelTable\" */ },\n\t/*::[*/0x084E/*::]*/: { /* n:\"BrtBeginModelRelationships\", */ T:1 },\n\t/*::[*/0x084F/*::]*/: { /* n:\"BrtEndModelRelationships\", */ T:-1 },\n\t/*::[*/0x0850/*::]*/: { /* n:\"BrtModelRelationship\" */ },\n\t/*::[*/0x0851/*::]*/: { /* n:\"BrtBeginECTxtWiz15\", */ T:1 },\n\t/*::[*/0x0852/*::]*/: { /* n:\"BrtEndECTxtWiz15\", */ T:-1 },\n\t/*::[*/0x0853/*::]*/: { /* n:\"BrtBeginECTWFldInfoLst15\", */ T:1 },\n\t/*::[*/0x0854/*::]*/: { /* n:\"BrtEndECTWFldInfoLst15\", */ T:-1 },\n\t/*::[*/0x0855/*::]*/: { /* n:\"BrtBeginECTWFldInfo15\", */ T:1 },\n\t/*::[*/0x0856/*::]*/: { /* n:\"BrtFieldListActiveItem\" */ },\n\t/*::[*/0x0857/*::]*/: { /* n:\"BrtPivotCacheIdVersion\" */ },\n\t/*::[*/0x0858/*::]*/: { /* n:\"BrtSXDI15\" */ },\n\t/*::[*/0x0859/*::]*/: { /* n:\"BrtBeginModelTimeGroupings\", */ T:1 },\n\t/*::[*/0x085A/*::]*/: { /* n:\"BrtEndModelTimeGroupings\", */ T:-1 },\n\t/*::[*/0x085B/*::]*/: { /* n:\"BrtBeginModelTimeGrouping\", */ T:1 },\n\t/*::[*/0x085C/*::]*/: { /* n:\"BrtEndModelTimeGrouping\", */ T:-1 },\n\t/*::[*/0x085D/*::]*/: { /* n:\"BrtModelTimeGroupingCalcCol\" */ },\n\t/*::[*/0x0C00/*::]*/: { /* n:\"BrtUid\" */ },\n\t/*::[*/0x0C01/*::]*/: { /* n:\"BrtRevisionPtr\" */ },\n\t/*::[*/0x1000/*::]*/: { /* n:\"BrtBeginDynamicArrayPr\", */ T:1 },\n\t/*::[*/0x1001/*::]*/: { /* n:\"BrtEndDynamicArrayPr\", */ T:-1 },\n\t/*::[*/0x138A/*::]*/: { /* n:\"BrtBeginRichValueBlock\", */ T:1 },\n\t/*::[*/0x138B/*::]*/: { /* n:\"BrtEndRichValueBlock\", */ T:-1 },\n\t/*::[*/0x13D9/*::]*/: { /* n:\"BrtBeginRichFilters\", */ T:1 },\n\t/*::[*/0x13DA/*::]*/: { /* n:\"BrtEndRichFilters\", */ T:-1 },\n\t/*::[*/0x13DB/*::]*/: { /* n:\"BrtRichFilter\" */ },\n\t/*::[*/0x13DC/*::]*/: { /* n:\"BrtBeginRichFilterColumn\", */ T:1 },\n\t/*::[*/0x13DD/*::]*/: { /* n:\"BrtEndRichFilterColumn\", */ T:-1 },\n\t/*::[*/0x13DE/*::]*/: { /* n:\"BrtBeginCustomRichFilters\", */ T:1 },\n\t/*::[*/0x13DF/*::]*/: { /* n:\"BrtEndCustomRichFilters\", */ T:-1 },\n\t/*::[*/0x13E0/*::]*/: { /* n:\"BrtCustomRichFilter\" */ },\n\t/*::[*/0x13E1/*::]*/: { /* n:\"BrtTop10RichFilter\" */ },\n\t/*::[*/0x13E2/*::]*/: { /* n:\"BrtDynamicRichFilter\" */ },\n\t/*::[*/0x13E4/*::]*/: { /* n:\"BrtBeginRichSortCondition\", */ T:1 },\n\t/*::[*/0x13E5/*::]*/: { /* n:\"BrtEndRichSortCondition\", */ T:-1 },\n\t/*::[*/0x13E6/*::]*/: { /* n:\"BrtRichFilterDateGroupItem\" */ },\n\t/*::[*/0x13E7/*::]*/: { /* n:\"BrtBeginCalcFeatures\", */ T:1 },\n\t/*::[*/0x13E8/*::]*/: { /* n:\"BrtEndCalcFeatures\", */ T:-1 },\n\t/*::[*/0x13E9/*::]*/: { /* n:\"BrtCalcFeature\" */ },\n\t/*::[*/0x13EB/*::]*/: { /* n:\"BrtExternalLinksPr\" */ },\n\t/*::[*/0xFFFF/*::]*/: { n:\"\" }\n};\n\n/* [MS-XLS] 2.3 Record Enumeration (and other sources) */\nvar XLSRecordEnum = {\n\t/* [MS-XLS] 2.3 Record Enumeration 2021-08-17 */\n\t/*::[*/0x0006/*::]*/: { /* n:\"Formula\", */ f:parse_Formula },\n\t/*::[*/0x000a/*::]*/: { /* n:\"EOF\", */ f:parsenoop2 },\n\t/*::[*/0x000c/*::]*/: { /* n:\"CalcCount\", */ f:parseuint16 }, //\n\t/*::[*/0x000d/*::]*/: { /* n:\"CalcMode\", */ f:parseuint16 }, //\n\t/*::[*/0x000e/*::]*/: { /* n:\"CalcPrecision\", */ f:parsebool }, //\n\t/*::[*/0x000f/*::]*/: { /* n:\"CalcRefMode\", */ f:parsebool }, //\n\t/*::[*/0x0010/*::]*/: { /* n:\"CalcDelta\", */ f:parse_Xnum }, //\n\t/*::[*/0x0011/*::]*/: { /* n:\"CalcIter\", */ f:parsebool }, //\n\t/*::[*/0x0012/*::]*/: { /* n:\"Protect\", */ f:parsebool },\n\t/*::[*/0x0013/*::]*/: { /* n:\"Password\", */ f:parseuint16 },\n\t/*::[*/0x0014/*::]*/: { /* n:\"Header\", */ f:parse_XLHeaderFooter },\n\t/*::[*/0x0015/*::]*/: { /* n:\"Footer\", */ f:parse_XLHeaderFooter },\n\t/*::[*/0x0017/*::]*/: { /* n:\"ExternSheet\", */ f:parse_ExternSheet },\n\t/*::[*/0x0018/*::]*/: { /* n:\"Lbl\", */ f:parse_Lbl },\n\t/*::[*/0x0019/*::]*/: { /* n:\"WinProtect\", */ f:parsebool },\n\t/*::[*/0x001a/*::]*/: { /* n:\"VerticalPageBreaks\", */ },\n\t/*::[*/0x001b/*::]*/: { /* n:\"HorizontalPageBreaks\", */ },\n\t/*::[*/0x001c/*::]*/: { /* n:\"Note\", */ f:parse_Note },\n\t/*::[*/0x001d/*::]*/: { /* n:\"Selection\", */ },\n\t/*::[*/0x0022/*::]*/: { /* n:\"Date1904\", */ f:parsebool },\n\t/*::[*/0x0023/*::]*/: { /* n:\"ExternName\", */ f:parse_ExternName },\n\t/*::[*/0x0026/*::]*/: { /* n:\"LeftMargin\", */ f:parse_Xnum }, // *\n\t/*::[*/0x0027/*::]*/: { /* n:\"RightMargin\", */ f:parse_Xnum }, // *\n\t/*::[*/0x0028/*::]*/: { /* n:\"TopMargin\", */ f:parse_Xnum }, // *\n\t/*::[*/0x0029/*::]*/: { /* n:\"BottomMargin\", */ f:parse_Xnum }, // *\n\t/*::[*/0x002a/*::]*/: { /* n:\"PrintRowCol\", */ f:parsebool },\n\t/*::[*/0x002b/*::]*/: { /* n:\"PrintGrid\", */ f:parsebool },\n\t/*::[*/0x002f/*::]*/: { /* n:\"FilePass\", */ f:parse_FilePass },\n\t/*::[*/0x0031/*::]*/: { /* n:\"Font\", */ f:parse_Font },\n\t/*::[*/0x0033/*::]*/: { /* n:\"PrintSize\", */ f:parseuint16 },\n\t/*::[*/0x003c/*::]*/: { /* n:\"Continue\", */ },\n\t/*::[*/0x003d/*::]*/: { /* n:\"Window1\", */ f:parse_Window1 },\n\t/*::[*/0x0040/*::]*/: { /* n:\"Backup\", */ f:parsebool },\n\t/*::[*/0x0041/*::]*/: { /* n:\"Pane\", */ f:parse_Pane },\n\t/*::[*/0x0042/*::]*/: { /* n:\"CodePage\", */ f:parseuint16 },\n\t/*::[*/0x004d/*::]*/: { /* n:\"Pls\", */ },\n\t/*::[*/0x0050/*::]*/: { /* n:\"DCon\", */ },\n\t/*::[*/0x0051/*::]*/: { /* n:\"DConRef\", */ },\n\t/*::[*/0x0052/*::]*/: { /* n:\"DConName\", */ },\n\t/*::[*/0x0055/*::]*/: { /* n:\"DefColWidth\", */ f:parseuint16 },\n\t/*::[*/0x0059/*::]*/: { /* n:\"XCT\", */ },\n\t/*::[*/0x005a/*::]*/: { /* n:\"CRN\", */ },\n\t/*::[*/0x005b/*::]*/: { /* n:\"FileSharing\", */ },\n\t/*::[*/0x005c/*::]*/: { /* n:\"WriteAccess\", */ f:parse_WriteAccess },\n\t/*::[*/0x005d/*::]*/: { /* n:\"Obj\", */ f:parse_Obj },\n\t/*::[*/0x005e/*::]*/: { /* n:\"Uncalced\", */ },\n\t/*::[*/0x005f/*::]*/: { /* n:\"CalcSaveRecalc\", */ f:parsebool }, //\n\t/*::[*/0x0060/*::]*/: { /* n:\"Template\", */ },\n\t/*::[*/0x0061/*::]*/: { /* n:\"Intl\", */ },\n\t/*::[*/0x0063/*::]*/: { /* n:\"ObjProtect\", */ f:parsebool },\n\t/*::[*/0x007d/*::]*/: { /* n:\"ColInfo\", */ f:parse_ColInfo },\n\t/*::[*/0x0080/*::]*/: { /* n:\"Guts\", */ f:parse_Guts },\n\t/*::[*/0x0081/*::]*/: { /* n:\"WsBool\", */ f:parse_WsBool },\n\t/*::[*/0x0082/*::]*/: { /* n:\"GridSet\", */ f:parseuint16 },\n\t/*::[*/0x0083/*::]*/: { /* n:\"HCenter\", */ f:parsebool },\n\t/*::[*/0x0084/*::]*/: { /* n:\"VCenter\", */ f:parsebool },\n\t/*::[*/0x0085/*::]*/: { /* n:\"BoundSheet8\", */ f:parse_BoundSheet8 },\n\t/*::[*/0x0086/*::]*/: { /* n:\"WriteProtect\", */ },\n\t/*::[*/0x008c/*::]*/: { /* n:\"Country\", */ f:parse_Country },\n\t/*::[*/0x008d/*::]*/: { /* n:\"HideObj\", */ f:parseuint16 },\n\t/*::[*/0x0090/*::]*/: { /* n:\"Sort\", */ },\n\t/*::[*/0x0092/*::]*/: { /* n:\"Palette\", */ f:parse_Palette },\n\t/*::[*/0x0097/*::]*/: { /* n:\"Sync\", */ },\n\t/*::[*/0x0098/*::]*/: { /* n:\"LPr\", */ },\n\t/*::[*/0x0099/*::]*/: { /* n:\"DxGCol\", */ },\n\t/*::[*/0x009a/*::]*/: { /* n:\"FnGroupName\", */ },\n\t/*::[*/0x009b/*::]*/: { /* n:\"FilterMode\", */ },\n\t/*::[*/0x009c/*::]*/: { /* n:\"BuiltInFnGroupCount\", */ f:parseuint16 },\n\t/*::[*/0x009d/*::]*/: { /* n:\"AutoFilterInfo\", */ },\n\t/*::[*/0x009e/*::]*/: { /* n:\"AutoFilter\", */ },\n\t/*::[*/0x00a0/*::]*/: { /* n:\"Scl\", */ f:parse_Scl },\n\t/*::[*/0x00a1/*::]*/: { /* n:\"Setup\", */ f:parse_Setup },\n\t/*::[*/0x00ae/*::]*/: { /* n:\"ScenMan\", */ },\n\t/*::[*/0x00af/*::]*/: { /* n:\"SCENARIO\", */ },\n\t/*::[*/0x00b0/*::]*/: { /* n:\"SxView\", */ },\n\t/*::[*/0x00b1/*::]*/: { /* n:\"Sxvd\", */ },\n\t/*::[*/0x00b2/*::]*/: { /* n:\"SXVI\", */ },\n\t/*::[*/0x00b4/*::]*/: { /* n:\"SxIvd\", */ },\n\t/*::[*/0x00b5/*::]*/: { /* n:\"SXLI\", */ },\n\t/*::[*/0x00b6/*::]*/: { /* n:\"SXPI\", */ },\n\t/*::[*/0x00b8/*::]*/: { /* n:\"DocRoute\", */ },\n\t/*::[*/0x00b9/*::]*/: { /* n:\"RecipName\", */ },\n\t/*::[*/0x00bd/*::]*/: { /* n:\"MulRk\", */ f:parse_MulRk },\n\t/*::[*/0x00be/*::]*/: { /* n:\"MulBlank\", */ f:parse_MulBlank },\n\t/*::[*/0x00c1/*::]*/: { /* n:\"Mms\", */ f:parsenoop2 },\n\t/*::[*/0x00c5/*::]*/: { /* n:\"SXDI\", */ },\n\t/*::[*/0x00c6/*::]*/: { /* n:\"SXDB\", */ },\n\t/*::[*/0x00c7/*::]*/: { /* n:\"SXFDB\", */ },\n\t/*::[*/0x00c8/*::]*/: { /* n:\"SXDBB\", */ },\n\t/*::[*/0x00c9/*::]*/: { /* n:\"SXNum\", */ },\n\t/*::[*/0x00ca/*::]*/: { /* n:\"SxBool\", */ f:parsebool },\n\t/*::[*/0x00cb/*::]*/: { /* n:\"SxErr\", */ },\n\t/*::[*/0x00cc/*::]*/: { /* n:\"SXInt\", */ },\n\t/*::[*/0x00cd/*::]*/: { /* n:\"SXString\", */ },\n\t/*::[*/0x00ce/*::]*/: { /* n:\"SXDtr\", */ },\n\t/*::[*/0x00cf/*::]*/: { /* n:\"SxNil\", */ },\n\t/*::[*/0x00d0/*::]*/: { /* n:\"SXTbl\", */ },\n\t/*::[*/0x00d1/*::]*/: { /* n:\"SXTBRGIITM\", */ },\n\t/*::[*/0x00d2/*::]*/: { /* n:\"SxTbpg\", */ },\n\t/*::[*/0x00d3/*::]*/: { /* n:\"ObProj\", */ },\n\t/*::[*/0x00d5/*::]*/: { /* n:\"SXStreamID\", */ },\n\t/*::[*/0x00d7/*::]*/: { /* n:\"DBCell\", */ },\n\t/*::[*/0x00d8/*::]*/: { /* n:\"SXRng\", */ },\n\t/*::[*/0x00d9/*::]*/: { /* n:\"SxIsxoper\", */ },\n\t/*::[*/0x00da/*::]*/: { /* n:\"BookBool\", */ f:parseuint16 },\n\t/*::[*/0x00dc/*::]*/: { /* n:\"DbOrParamQry\", */ },\n\t/*::[*/0x00dd/*::]*/: { /* n:\"ScenarioProtect\", */ f:parsebool },\n\t/*::[*/0x00de/*::]*/: { /* n:\"OleObjectSize\", */ },\n\t/*::[*/0x00e0/*::]*/: { /* n:\"XF\", */ f:parse_XF },\n\t/*::[*/0x00e1/*::]*/: { /* n:\"InterfaceHdr\", */ f:parse_InterfaceHdr },\n\t/*::[*/0x00e2/*::]*/: { /* n:\"InterfaceEnd\", */ f:parsenoop2 },\n\t/*::[*/0x00e3/*::]*/: { /* n:\"SXVS\", */ },\n\t/*::[*/0x00e5/*::]*/: { /* n:\"MergeCells\", */ f:parse_MergeCells },\n\t/*::[*/0x00e9/*::]*/: { /* n:\"BkHim\", */ },\n\t/*::[*/0x00eb/*::]*/: { /* n:\"MsoDrawingGroup\", */ },\n\t/*::[*/0x00ec/*::]*/: { /* n:\"MsoDrawing\", */ },\n\t/*::[*/0x00ed/*::]*/: { /* n:\"MsoDrawingSelection\", */ },\n\t/*::[*/0x00ef/*::]*/: { /* n:\"PhoneticInfo\", */ },\n\t/*::[*/0x00f0/*::]*/: { /* n:\"SxRule\", */ },\n\t/*::[*/0x00f1/*::]*/: { /* n:\"SXEx\", */ },\n\t/*::[*/0x00f2/*::]*/: { /* n:\"SxFilt\", */ },\n\t/*::[*/0x00f4/*::]*/: { /* n:\"SxDXF\", */ },\n\t/*::[*/0x00f5/*::]*/: { /* n:\"SxItm\", */ },\n\t/*::[*/0x00f6/*::]*/: { /* n:\"SxName\", */ },\n\t/*::[*/0x00f7/*::]*/: { /* n:\"SxSelect\", */ },\n\t/*::[*/0x00f8/*::]*/: { /* n:\"SXPair\", */ },\n\t/*::[*/0x00f9/*::]*/: { /* n:\"SxFmla\", */ },\n\t/*::[*/0x00fb/*::]*/: { /* n:\"SxFormat\", */ },\n\t/*::[*/0x00fc/*::]*/: { /* n:\"SST\", */ f:parse_SST },\n\t/*::[*/0x00fd/*::]*/: { /* n:\"LabelSst\", */ f:parse_LabelSst },\n\t/*::[*/0x00ff/*::]*/: { /* n:\"ExtSST\", */ f:parse_ExtSST },\n\t/*::[*/0x0100/*::]*/: { /* n:\"SXVDEx\", */ },\n\t/*::[*/0x0103/*::]*/: { /* n:\"SXFormula\", */ },\n\t/*::[*/0x0122/*::]*/: { /* n:\"SXDBEx\", */ },\n\t/*::[*/0x0137/*::]*/: { /* n:\"RRDInsDel\", */ },\n\t/*::[*/0x0138/*::]*/: { /* n:\"RRDHead\", */ },\n\t/*::[*/0x013b/*::]*/: { /* n:\"RRDChgCell\", */ },\n\t/*::[*/0x013d/*::]*/: { /* n:\"RRTabId\", */ f:parseuint16a },\n\t/*::[*/0x013e/*::]*/: { /* n:\"RRDRenSheet\", */ },\n\t/*::[*/0x013f/*::]*/: { /* n:\"RRSort\", */ },\n\t/*::[*/0x0140/*::]*/: { /* n:\"RRDMove\", */ },\n\t/*::[*/0x014a/*::]*/: { /* n:\"RRFormat\", */ },\n\t/*::[*/0x014b/*::]*/: { /* n:\"RRAutoFmt\", */ },\n\t/*::[*/0x014d/*::]*/: { /* n:\"RRInsertSh\", */ },\n\t/*::[*/0x014e/*::]*/: { /* n:\"RRDMoveBegin\", */ },\n\t/*::[*/0x014f/*::]*/: { /* n:\"RRDMoveEnd\", */ },\n\t/*::[*/0x0150/*::]*/: { /* n:\"RRDInsDelBegin\", */ },\n\t/*::[*/0x0151/*::]*/: { /* n:\"RRDInsDelEnd\", */ },\n\t/*::[*/0x0152/*::]*/: { /* n:\"RRDConflict\", */ },\n\t/*::[*/0x0153/*::]*/: { /* n:\"RRDDefName\", */ },\n\t/*::[*/0x0154/*::]*/: { /* n:\"RRDRstEtxp\", */ },\n\t/*::[*/0x015f/*::]*/: { /* n:\"LRng\", */ },\n\t/*::[*/0x0160/*::]*/: { /* n:\"UsesELFs\", */ f:parsebool },\n\t/*::[*/0x0161/*::]*/: { /* n:\"DSF\", */ f:parsenoop2 },\n\t/*::[*/0x0191/*::]*/: { /* n:\"CUsr\", */ },\n\t/*::[*/0x0192/*::]*/: { /* n:\"CbUsr\", */ },\n\t/*::[*/0x0193/*::]*/: { /* n:\"UsrInfo\", */ },\n\t/*::[*/0x0194/*::]*/: { /* n:\"UsrExcl\", */ },\n\t/*::[*/0x0195/*::]*/: { /* n:\"FileLock\", */ },\n\t/*::[*/0x0196/*::]*/: { /* n:\"RRDInfo\", */ },\n\t/*::[*/0x0197/*::]*/: { /* n:\"BCUsrs\", */ },\n\t/*::[*/0x0198/*::]*/: { /* n:\"UsrChk\", */ },\n\t/*::[*/0x01a9/*::]*/: { /* n:\"UserBView\", */ },\n\t/*::[*/0x01aa/*::]*/: { /* n:\"UserSViewBegin\", */ },\n\t/*::[*/0x01ab/*::]*/: { /* n:\"UserSViewEnd\", */ },\n\t/*::[*/0x01ac/*::]*/: { /* n:\"RRDUserView\", */ },\n\t/*::[*/0x01ad/*::]*/: { /* n:\"Qsi\", */ },\n\t/*::[*/0x01ae/*::]*/: { /* n:\"SupBook\", */ f:parse_SupBook },\n\t/*::[*/0x01af/*::]*/: { /* n:\"Prot4Rev\", */ f:parsebool },\n\t/*::[*/0x01b0/*::]*/: { /* n:\"CondFmt\", */ },\n\t/*::[*/0x01b1/*::]*/: { /* n:\"CF\", */ },\n\t/*::[*/0x01b2/*::]*/: { /* n:\"DVal\", */ },\n\t/*::[*/0x01b5/*::]*/: { /* n:\"DConBin\", */ },\n\t/*::[*/0x01b6/*::]*/: { /* n:\"TxO\", */ f:parse_TxO },\n\t/*::[*/0x01b7/*::]*/: { /* n:\"RefreshAll\", */ f:parsebool }, //\n\t/*::[*/0x01b8/*::]*/: { /* n:\"HLink\", */ f:parse_HLink },\n\t/*::[*/0x01b9/*::]*/: { /* n:\"Lel\", */ },\n\t/*::[*/0x01ba/*::]*/: { /* n:\"CodeName\", */ f:parse_XLUnicodeString },\n\t/*::[*/0x01bb/*::]*/: { /* n:\"SXFDBType\", */ },\n\t/*::[*/0x01bc/*::]*/: { /* n:\"Prot4RevPass\", */ f:parseuint16 },\n\t/*::[*/0x01bd/*::]*/: { /* n:\"ObNoMacros\", */ },\n\t/*::[*/0x01be/*::]*/: { /* n:\"Dv\", */ },\n\t/*::[*/0x01c0/*::]*/: { /* n:\"Excel9File\", */ f:parsenoop2 },\n\t/*::[*/0x01c1/*::]*/: { /* n:\"RecalcId\", */ f:parse_RecalcId, r:2},\n\t/*::[*/0x01c2/*::]*/: { /* n:\"EntExU2\", */ f:parsenoop2 },\n\t/*::[*/0x0200/*::]*/: { /* n:\"Dimensions\", */ f:parse_Dimensions },\n\t/*::[*/0x0201/*::]*/: { /* n:\"Blank\", */ f:parse_Blank },\n\t/*::[*/0x0203/*::]*/: { /* n:\"Number\", */ f:parse_Number },\n\t/*::[*/0x0204/*::]*/: { /* n:\"Label\", */ f:parse_Label },\n\t/*::[*/0x0205/*::]*/: { /* n:\"BoolErr\", */ f:parse_BoolErr },\n\t/*::[*/0x0207/*::]*/: { /* n:\"String\", */ f:parse_String },\n\t/*::[*/0x0208/*::]*/: { /* n:\"Row\", */ f:parse_Row },\n\t/*::[*/0x020b/*::]*/: { /* n:\"Index\", */ },\n\t/*::[*/0x0221/*::]*/: { /* n:\"Array\", */ f:parse_Array },\n\t/*::[*/0x0225/*::]*/: { /* n:\"DefaultRowHeight\", */ f:parse_DefaultRowHeight },\n\t/*::[*/0x0236/*::]*/: { /* n:\"Table\", */ },\n\t/*::[*/0x023e/*::]*/: { /* n:\"Window2\", */ f:parse_Window2 },\n\t/*::[*/0x027e/*::]*/: { /* n:\"RK\", */ f:parse_RK },\n\t/*::[*/0x0293/*::]*/: { /* n:\"Style\", */ },\n\t/*::[*/0x0418/*::]*/: { /* n:\"BigName\", */ },\n\t/*::[*/0x041e/*::]*/: { /* n:\"Format\", */ f:parse_Format },\n\t/*::[*/0x043c/*::]*/: { /* n:\"ContinueBigName\", */ },\n\t/*::[*/0x04bc/*::]*/: { /* n:\"ShrFmla\", */ f:parse_ShrFmla },\n\t/*::[*/0x0800/*::]*/: { /* n:\"HLinkTooltip\", */ f:parse_HLinkTooltip },\n\t/*::[*/0x0801/*::]*/: { /* n:\"WebPub\", */ },\n\t/*::[*/0x0802/*::]*/: { /* n:\"QsiSXTag\", */ },\n\t/*::[*/0x0803/*::]*/: { /* n:\"DBQueryExt\", */ },\n\t/*::[*/0x0804/*::]*/: { /* n:\"ExtString\", */ },\n\t/*::[*/0x0805/*::]*/: { /* n:\"TxtQry\", */ },\n\t/*::[*/0x0806/*::]*/: { /* n:\"Qsir\", */ },\n\t/*::[*/0x0807/*::]*/: { /* n:\"Qsif\", */ },\n\t/*::[*/0x0808/*::]*/: { /* n:\"RRDTQSIF\", */ },\n\t/*::[*/0x0809/*::]*/: { /* n:\"BOF\", */ f:parse_BOF },\n\t/*::[*/0x080a/*::]*/: { /* n:\"OleDbConn\", */ },\n\t/*::[*/0x080b/*::]*/: { /* n:\"WOpt\", */ },\n\t/*::[*/0x080c/*::]*/: { /* n:\"SXViewEx\", */ },\n\t/*::[*/0x080d/*::]*/: { /* n:\"SXTH\", */ },\n\t/*::[*/0x080e/*::]*/: { /* n:\"SXPIEx\", */ },\n\t/*::[*/0x080f/*::]*/: { /* n:\"SXVDTEx\", */ },\n\t/*::[*/0x0810/*::]*/: { /* n:\"SXViewEx9\", */ },\n\t/*::[*/0x0812/*::]*/: { /* n:\"ContinueFrt\", */ },\n\t/*::[*/0x0813/*::]*/: { /* n:\"RealTimeData\", */ },\n\t/*::[*/0x0850/*::]*/: { /* n:\"ChartFrtInfo\", */ },\n\t/*::[*/0x0851/*::]*/: { /* n:\"FrtWrapper\", */ },\n\t/*::[*/0x0852/*::]*/: { /* n:\"StartBlock\", */ },\n\t/*::[*/0x0853/*::]*/: { /* n:\"EndBlock\", */ },\n\t/*::[*/0x0854/*::]*/: { /* n:\"StartObject\", */ },\n\t/*::[*/0x0855/*::]*/: { /* n:\"EndObject\", */ },\n\t/*::[*/0x0856/*::]*/: { /* n:\"CatLab\", */ },\n\t/*::[*/0x0857/*::]*/: { /* n:\"YMult\", */ },\n\t/*::[*/0x0858/*::]*/: { /* n:\"SXViewLink\", */ },\n\t/*::[*/0x0859/*::]*/: { /* n:\"PivotChartBits\", */ },\n\t/*::[*/0x085a/*::]*/: { /* n:\"FrtFontList\", */ },\n\t/*::[*/0x0862/*::]*/: { /* n:\"SheetExt\", */ },\n\t/*::[*/0x0863/*::]*/: { /* n:\"BookExt\", */ r:12},\n\t/*::[*/0x0864/*::]*/: { /* n:\"SXAddl\", */ },\n\t/*::[*/0x0865/*::]*/: { /* n:\"CrErr\", */ },\n\t/*::[*/0x0866/*::]*/: { /* n:\"HFPicture\", */ },\n\t/*::[*/0x0867/*::]*/: { /* n:\"FeatHdr\", */ f:parsenoop2 },\n\t/*::[*/0x0868/*::]*/: { /* n:\"Feat\", */ },\n\t/*::[*/0x086a/*::]*/: { /* n:\"DataLabExt\", */ },\n\t/*::[*/0x086b/*::]*/: { /* n:\"DataLabExtContents\", */ },\n\t/*::[*/0x086c/*::]*/: { /* n:\"CellWatch\", */ },\n\t/*::[*/0x0871/*::]*/: { /* n:\"FeatHdr11\", */ },\n\t/*::[*/0x0872/*::]*/: { /* n:\"Feature11\", */ },\n\t/*::[*/0x0874/*::]*/: { /* n:\"DropDownObjIds\", */ },\n\t/*::[*/0x0875/*::]*/: { /* n:\"ContinueFrt11\", */ },\n\t/*::[*/0x0876/*::]*/: { /* n:\"DConn\", */ },\n\t/*::[*/0x0877/*::]*/: { /* n:\"List12\", */ },\n\t/*::[*/0x0878/*::]*/: { /* n:\"Feature12\", */ },\n\t/*::[*/0x0879/*::]*/: { /* n:\"CondFmt12\", */ },\n\t/*::[*/0x087a/*::]*/: { /* n:\"CF12\", */ },\n\t/*::[*/0x087b/*::]*/: { /* n:\"CFEx\", */ },\n\t/*::[*/0x087c/*::]*/: { /* n:\"XFCRC\", */ f:parse_XFCRC, r:12 },\n\t/*::[*/0x087d/*::]*/: { /* n:\"XFExt\", */ f:parse_XFExt, r:12 },\n\t/*::[*/0x087e/*::]*/: { /* n:\"AutoFilter12\", */ },\n\t/*::[*/0x087f/*::]*/: { /* n:\"ContinueFrt12\", */ },\n\t/*::[*/0x0884/*::]*/: { /* n:\"MDTInfo\", */ },\n\t/*::[*/0x0885/*::]*/: { /* n:\"MDXStr\", */ },\n\t/*::[*/0x0886/*::]*/: { /* n:\"MDXTuple\", */ },\n\t/*::[*/0x0887/*::]*/: { /* n:\"MDXSet\", */ },\n\t/*::[*/0x0888/*::]*/: { /* n:\"MDXProp\", */ },\n\t/*::[*/0x0889/*::]*/: { /* n:\"MDXKPI\", */ },\n\t/*::[*/0x088a/*::]*/: { /* n:\"MDB\", */ },\n\t/*::[*/0x088b/*::]*/: { /* n:\"PLV\", */ },\n\t/*::[*/0x088c/*::]*/: { /* n:\"Compat12\", */ f:parsebool, r:12 },\n\t/*::[*/0x088d/*::]*/: { /* n:\"DXF\", */ },\n\t/*::[*/0x088e/*::]*/: { /* n:\"TableStyles\", */ r:12 },\n\t/*::[*/0x088f/*::]*/: { /* n:\"TableStyle\", */ },\n\t/*::[*/0x0890/*::]*/: { /* n:\"TableStyleElement\", */ },\n\t/*::[*/0x0892/*::]*/: { /* n:\"StyleExt\", */ },\n\t/*::[*/0x0893/*::]*/: { /* n:\"NamePublish\", */ },\n\t/*::[*/0x0894/*::]*/: { /* n:\"NameCmt\", */ f:parse_NameCmt, r:12 },\n\t/*::[*/0x0895/*::]*/: { /* n:\"SortData\", */ },\n\t/*::[*/0x0896/*::]*/: { /* n:\"Theme\", */ f:parse_Theme, r:12 },\n\t/*::[*/0x0897/*::]*/: { /* n:\"GUIDTypeLib\", */ },\n\t/*::[*/0x0898/*::]*/: { /* n:\"FnGrp12\", */ },\n\t/*::[*/0x0899/*::]*/: { /* n:\"NameFnGrp12\", */ },\n\t/*::[*/0x089a/*::]*/: { /* n:\"MTRSettings\", */ f:parse_MTRSettings, r:12 },\n\t/*::[*/0x089b/*::]*/: { /* n:\"CompressPictures\", */ f:parsenoop2 },\n\t/*::[*/0x089c/*::]*/: { /* n:\"HeaderFooter\", */ },\n\t/*::[*/0x089d/*::]*/: { /* n:\"CrtLayout12\", */ },\n\t/*::[*/0x089e/*::]*/: { /* n:\"CrtMlFrt\", */ },\n\t/*::[*/0x089f/*::]*/: { /* n:\"CrtMlFrtContinue\", */ },\n\t/*::[*/0x08a3/*::]*/: { /* n:\"ForceFullCalculation\", */ f:parse_ForceFullCalculation },\n\t/*::[*/0x08a4/*::]*/: { /* n:\"ShapePropsStream\", */ },\n\t/*::[*/0x08a5/*::]*/: { /* n:\"TextPropsStream\", */ },\n\t/*::[*/0x08a6/*::]*/: { /* n:\"RichTextStream\", */ },\n\t/*::[*/0x08a7/*::]*/: { /* n:\"CrtLayout12A\", */ },\n\t/*::[*/0x1001/*::]*/: { /* n:\"Units\", */ },\n\t/*::[*/0x1002/*::]*/: { /* n:\"Chart\", */ },\n\t/*::[*/0x1003/*::]*/: { /* n:\"Series\", */ },\n\t/*::[*/0x1006/*::]*/: { /* n:\"DataFormat\", */ },\n\t/*::[*/0x1007/*::]*/: { /* n:\"LineFormat\", */ },\n\t/*::[*/0x1009/*::]*/: { /* n:\"MarkerFormat\", */ },\n\t/*::[*/0x100a/*::]*/: { /* n:\"AreaFormat\", */ },\n\t/*::[*/0x100b/*::]*/: { /* n:\"PieFormat\", */ },\n\t/*::[*/0x100c/*::]*/: { /* n:\"AttachedLabel\", */ },\n\t/*::[*/0x100d/*::]*/: { /* n:\"SeriesText\", */ },\n\t/*::[*/0x1014/*::]*/: { /* n:\"ChartFormat\", */ },\n\t/*::[*/0x1015/*::]*/: { /* n:\"Legend\", */ },\n\t/*::[*/0x1016/*::]*/: { /* n:\"SeriesList\", */ },\n\t/*::[*/0x1017/*::]*/: { /* n:\"Bar\", */ },\n\t/*::[*/0x1018/*::]*/: { /* n:\"Line\", */ },\n\t/*::[*/0x1019/*::]*/: { /* n:\"Pie\", */ },\n\t/*::[*/0x101a/*::]*/: { /* n:\"Area\", */ },\n\t/*::[*/0x101b/*::]*/: { /* n:\"Scatter\", */ },\n\t/*::[*/0x101c/*::]*/: { /* n:\"CrtLine\", */ },\n\t/*::[*/0x101d/*::]*/: { /* n:\"Axis\", */ },\n\t/*::[*/0x101e/*::]*/: { /* n:\"Tick\", */ },\n\t/*::[*/0x101f/*::]*/: { /* n:\"ValueRange\", */ },\n\t/*::[*/0x1020/*::]*/: { /* n:\"CatSerRange\", */ },\n\t/*::[*/0x1021/*::]*/: { /* n:\"AxisLine\", */ },\n\t/*::[*/0x1022/*::]*/: { /* n:\"CrtLink\", */ },\n\t/*::[*/0x1024/*::]*/: { /* n:\"DefaultText\", */ },\n\t/*::[*/0x1025/*::]*/: { /* n:\"Text\", */ },\n\t/*::[*/0x1026/*::]*/: { /* n:\"FontX\", */ f:parseuint16 },\n\t/*::[*/0x1027/*::]*/: { /* n:\"ObjectLink\", */ },\n\t/*::[*/0x1032/*::]*/: { /* n:\"Frame\", */ },\n\t/*::[*/0x1033/*::]*/: { /* n:\"Begin\", */ },\n\t/*::[*/0x1034/*::]*/: { /* n:\"End\", */ },\n\t/*::[*/0x1035/*::]*/: { /* n:\"PlotArea\", */ },\n\t/*::[*/0x103a/*::]*/: { /* n:\"Chart3d\", */ },\n\t/*::[*/0x103c/*::]*/: { /* n:\"PicF\", */ },\n\t/*::[*/0x103d/*::]*/: { /* n:\"DropBar\", */ },\n\t/*::[*/0x103e/*::]*/: { /* n:\"Radar\", */ },\n\t/*::[*/0x103f/*::]*/: { /* n:\"Surf\", */ },\n\t/*::[*/0x1040/*::]*/: { /* n:\"RadarArea\", */ },\n\t/*::[*/0x1041/*::]*/: { /* n:\"AxisParent\", */ },\n\t/*::[*/0x1043/*::]*/: { /* n:\"LegendException\", */ },\n\t/*::[*/0x1044/*::]*/: { /* n:\"ShtProps\", */ f:parse_ShtProps },\n\t/*::[*/0x1045/*::]*/: { /* n:\"SerToCrt\", */ },\n\t/*::[*/0x1046/*::]*/: { /* n:\"AxesUsed\", */ },\n\t/*::[*/0x1048/*::]*/: { /* n:\"SBaseRef\", */ },\n\t/*::[*/0x104a/*::]*/: { /* n:\"SerParent\", */ },\n\t/*::[*/0x104b/*::]*/: { /* n:\"SerAuxTrend\", */ },\n\t/*::[*/0x104e/*::]*/: { /* n:\"IFmtRecord\", */ },\n\t/*::[*/0x104f/*::]*/: { /* n:\"Pos\", */ },\n\t/*::[*/0x1050/*::]*/: { /* n:\"AlRuns\", */ },\n\t/*::[*/0x1051/*::]*/: { /* n:\"BRAI\", */ },\n\t/*::[*/0x105b/*::]*/: { /* n:\"SerAuxErrBar\", */ },\n\t/*::[*/0x105c/*::]*/: { /* n:\"ClrtClient\", */ f:parse_ClrtClient },\n\t/*::[*/0x105d/*::]*/: { /* n:\"SerFmt\", */ },\n\t/*::[*/0x105f/*::]*/: { /* n:\"Chart3DBarShape\", */ },\n\t/*::[*/0x1060/*::]*/: { /* n:\"Fbi\", */ },\n\t/*::[*/0x1061/*::]*/: { /* n:\"BopPop\", */ },\n\t/*::[*/0x1062/*::]*/: { /* n:\"AxcExt\", */ },\n\t/*::[*/0x1063/*::]*/: { /* n:\"Dat\", */ },\n\t/*::[*/0x1064/*::]*/: { /* n:\"PlotGrowth\", */ },\n\t/*::[*/0x1065/*::]*/: { /* n:\"SIIndex\", */ },\n\t/*::[*/0x1066/*::]*/: { /* n:\"GelFrame\", */ },\n\t/*::[*/0x1067/*::]*/: { /* n:\"BopPopCustom\", */ },\n\t/*::[*/0x1068/*::]*/: { /* n:\"Fbi2\", */ },\n\n\t/*::[*/0x0000/*::]*/: { /* n:\"Dimensions\", */ f:parse_Dimensions },\n\t/*::[*/0x0001/*::]*/: { /* n:\"BIFF2BLANK\", */ },\n\t/*::[*/0x0002/*::]*/: { /* n:\"BIFF2INT\", */ f:parse_BIFF2INT },\n\t/*::[*/0x0003/*::]*/: { /* n:\"BIFF2NUM\", */ f:parse_BIFF2NUM },\n\t/*::[*/0x0004/*::]*/: { /* n:\"BIFF2STR\", */ f:parse_BIFF2STR },\n\t/*::[*/0x0005/*::]*/: { /* n:\"BoolErr\", */ f:parse_BoolErr },\n\t/*::[*/0x0007/*::]*/: { /* n:\"String\", */ f:parse_BIFF2STRING },\n\t/*::[*/0x0008/*::]*/: { /* n:\"BIFF2ROW\", */ },\n\t/*::[*/0x0009/*::]*/: { /* n:\"BOF\", */ f:parse_BOF },\n\t/*::[*/0x000b/*::]*/: { /* n:\"Index\", */ },\n\t/*::[*/0x0016/*::]*/: { /* n:\"ExternCount\", */ f:parseuint16 },\n\t/*::[*/0x001e/*::]*/: { /* n:\"BIFF2FORMAT\", */ f:parse_BIFF2Format },\n\t/*::[*/0x001f/*::]*/: { /* n:\"BIFF2FMTCNT\", */ }, /* 16-bit cnt of BIFF2FORMAT records */\n\t/*::[*/0x0020/*::]*/: { /* n:\"BIFF2COLINFO\", */ },\n\t/*::[*/0x0021/*::]*/: { /* n:\"Array\", */ f:parse_Array },\n\t/*::[*/0x0024/*::]*/: { /* n:\"COLWIDTH\", */ },\n\t/*::[*/0x0025/*::]*/: { /* n:\"DefaultRowHeight\", */ f:parse_DefaultRowHeight },\n\t// 0x2c ??\n\t// 0x2d ??\n\t// 0x2e ??\n\t// 0x30 FONTCOUNT: number of fonts\n\t/*::[*/0x0032/*::]*/: { /* n:\"BIFF2FONTXTRA\", */ f:parse_BIFF2FONTXTRA },\n\t// 0x35: INFOOPTS\n\t// 0x36: TABLE (BIFF2 only)\n\t// 0x37: TABLE2 (BIFF2 only)\n\t// 0x38: WNDESK\n\t// 0x39 ??\n\t// 0x3a: BEGINPREF\n\t// 0x3b: ENDPREF\n\t/*::[*/0x003e/*::]*/: { /* n:\"BIFF2WINDOW2\", */ },\n\t// 0x3f ??\n\t// 0x46: SHOWSCROLL\n\t// 0x47: SHOWFORMULA\n\t// 0x48: STATUSBAR\n\t// 0x49: SHORTMENUS\n\t// 0x4A:\n\t// 0x4B:\n\t// 0x4C:\n\t// 0x4E:\n\t// 0x4F:\n\t// 0x58: TOOLBAR (BIFF3)\n\n\t/* - - - */\n\t/*::[*/0x0034/*::]*/: { /* n:\"DDEObjName\", */ },\n\t/*::[*/0x0043/*::]*/: { /* n:\"BIFF2XF\", */ },\n\t/*::[*/0x0044/*::]*/: { /* n:\"BIFF2XFINDEX\", */ f:parseuint16 },\n\t/*::[*/0x0045/*::]*/: { /* n:\"BIFF2FONTCLR\", */ },\n\t/*::[*/0x0056/*::]*/: { /* n:\"BIFF4FMTCNT\", */ }, /* 16-bit cnt, similar to BIFF2 */\n\t/*::[*/0x007e/*::]*/: { /* n:\"RK\", */ }, /* Not necessarily same as 0x027e */\n\t/*::[*/0x007f/*::]*/: { /* n:\"ImData\", */ f:parse_ImData },\n\t/*::[*/0x0087/*::]*/: { /* n:\"Addin\", */ },\n\t/*::[*/0x0088/*::]*/: { /* n:\"Edg\", */ },\n\t/*::[*/0x0089/*::]*/: { /* n:\"Pub\", */ },\n\t// 0x8A\n\t// 0x8B LH: alternate menu key flag (BIFF3/4)\n\t// 0x8E\n\t// 0x8F\n\t/*::[*/0x0091/*::]*/: { /* n:\"Sub\", */ },\n\t// 0x93 STYLE\n\t/*::[*/0x0094/*::]*/: { /* n:\"LHRecord\", */ },\n\t/*::[*/0x0095/*::]*/: { /* n:\"LHNGraph\", */ },\n\t/*::[*/0x0096/*::]*/: { /* n:\"Sound\", */ },\n\t// 0xA2 FNPROTO: function prototypes (BIFF4)\n\t// 0xA3\n\t// 0xA8\n\t/*::[*/0x00a9/*::]*/: { /* n:\"CoordList\", */ },\n\t/*::[*/0x00ab/*::]*/: { /* n:\"GCW\", */ },\n\t/*::[*/0x00bc/*::]*/: { /* n:\"ShrFmla\", */ }, /* Not necessarily same as 0x04bc */\n\t/*::[*/0x00bf/*::]*/: { /* n:\"ToolbarHdr\", */ },\n\t/*::[*/0x00c0/*::]*/: { /* n:\"ToolbarEnd\", */ },\n\t/*::[*/0x00c2/*::]*/: { /* n:\"AddMenu\", */ },\n\t/*::[*/0x00c3/*::]*/: { /* n:\"DelMenu\", */ },\n\t/*::[*/0x00d6/*::]*/: { /* n:\"RString\", */ f:parse_RString },\n\t/*::[*/0x00df/*::]*/: { /* n:\"UDDesc\", */ },\n\t/*::[*/0x00ea/*::]*/: { /* n:\"TabIdConf\", */ },\n\t/*::[*/0x0162/*::]*/: { /* n:\"XL5Modify\", */ },\n\t/*::[*/0x01a5/*::]*/: { /* n:\"FileSharing2\", */ },\n\t/*::[*/0x0206/*::]*/: { /* n:\"Formula\", */ f:parse_Formula },\n\t/*::[*/0x0209/*::]*/: { /* n:\"BOF\", */ f:parse_BOF },\n\t/*::[*/0x0218/*::]*/: { /* n:\"Lbl\", */ f:parse_Lbl },\n\t/*::[*/0x0223/*::]*/: { /* n:\"ExternName\", */ f:parse_ExternName },\n\t/*::[*/0x0231/*::]*/: { /* n:\"Font\", */ },\n\t/*::[*/0x0243/*::]*/: { /* n:\"BIFF3XF\", */ },\n\t/*::[*/0x0406/*::]*/: { /* n:\"Formula\", */ f:parse_Formula },\n\t/*::[*/0x0409/*::]*/: { /* n:\"BOF\", */ f:parse_BOF },\n\t/*::[*/0x0443/*::]*/: { /* n:\"BIFF4XF\", */ },\n\t/*::[*/0x086d/*::]*/: { /* n:\"FeatInfo\", */ },\n\t/*::[*/0x0873/*::]*/: { /* n:\"FeatInfo11\", */ },\n\t/*::[*/0x0881/*::]*/: { /* n:\"SXAddl12\", */ },\n\t/*::[*/0x08c0/*::]*/: { /* n:\"AutoWebPub\", */ },\n\t/*::[*/0x08c1/*::]*/: { /* n:\"ListObj\", */ },\n\t/*::[*/0x08c2/*::]*/: { /* n:\"ListField\", */ },\n\t/*::[*/0x08c3/*::]*/: { /* n:\"ListDV\", */ },\n\t/*::[*/0x08c4/*::]*/: { /* n:\"ListCondFmt\", */ },\n\t/*::[*/0x08c5/*::]*/: { /* n:\"ListCF\", */ },\n\t/*::[*/0x08c6/*::]*/: { /* n:\"FMQry\", */ },\n\t/*::[*/0x08c7/*::]*/: { /* n:\"FMSQry\", */ },\n\t/*::[*/0x08c8/*::]*/: { /* n:\"PLV\", */ },\n\t/*::[*/0x08c9/*::]*/: { /* n:\"LnExt\", */ },\n\t/*::[*/0x08ca/*::]*/: { /* n:\"MkrExt\", */ },\n\t/*::[*/0x08cb/*::]*/: { /* n:\"CrtCoopt\", */ },\n\t/*::[*/0x08d6/*::]*/: { /* n:\"FRTArchId$\", */ r:12 },\n\n\t/*::[*/0x7262/*::]*/: {}\n};\n\nfunction write_biff_rec(ba/*:BufArray*/, type/*:number*/, payload, length/*:?number*/)/*:void*/ {\n\tvar t/*:number*/ = type;\n\tif(isNaN(t)) return;\n\tvar len = length || (payload||[]).length || 0;\n\tvar o = ba.next(4);\n\to.write_shift(2, t);\n\to.write_shift(2, len);\n\tif(/*:: len != null &&*/len > 0 && is_buf(payload)) ba.push(payload);\n}\n\nfunction write_biff_continue(ba/*:BufArray*/, type/*:number*/, payload, length/*:?number*/)/*:void*/ {\n\tvar len = length || (payload||[]).length || 0;\n\tif(len <= 8224) return write_biff_rec(ba, type, payload, len);\n\tvar t = type;\n\tif(isNaN(t)) return;\n\tvar parts = payload.parts || [], sidx = 0;\n\tvar i = 0, w = 0;\n\twhile(w + (parts[sidx] || 8224) <= 8224) { w+= (parts[sidx] || 8224); sidx++; }\n\tvar o = ba.next(4);\n\to.write_shift(2, t);\n\to.write_shift(2, w);\n\tba.push(payload.slice(i, i + w));\n\ti += w;\n\twhile(i < len) {\n\t\to = ba.next(4);\n\t\to.write_shift(2, 0x3c); // TODO: figure out correct continue type\n\t\tw = 0;\n\t\twhile(w + (parts[sidx] || 8224) <= 8224) { w+= (parts[sidx] || 8224); sidx++; }\n\t\to.write_shift(2, w);\n\t\tba.push(payload.slice(i, i+w)); i+= w;\n\t}\n}\n\nfunction write_BIFF2Cell(out, r/*:number*/, c/*:number*/) {\n\tif(!out) out = new_buf(7);\n\tout.write_shift(2, r);\n\tout.write_shift(2, c);\n\tout.write_shift(2, 0);\n\tout.write_shift(1, 0);\n\treturn out;\n}\n\nfunction write_BIFF2BERR(r/*:number*/, c/*:number*/, val, t/*:?string*/) {\n\tvar out = new_buf(9);\n\twrite_BIFF2Cell(out, r, c);\n\twrite_Bes(val, t || 'b', out);\n\treturn out;\n}\n\n/* TODO: codepage, large strings */\nfunction write_BIFF2LABEL(r/*:number*/, c/*:number*/, val) {\n\tvar out = new_buf(8 + 2*val.length);\n\twrite_BIFF2Cell(out, r, c);\n\tout.write_shift(1, val.length);\n\tout.write_shift(val.length, val, 'sbcs');\n\treturn out.l < out.length ? out.slice(0, out.l) : out;\n}\n\nfunction write_ws_biff2_cell(ba/*:BufArray*/, cell/*:Cell*/, R/*:number*/, C/*:number*//*::, opts*/) {\n\tif(cell.v != null) switch(cell.t) {\n\t\tcase 'd': case 'n':\n\t\t\tvar v = cell.t == 'd' ? datenum(parseDate(cell.v)) : cell.v;\n\t\t\tif((v == (v|0)) && (v >= 0) && (v < 65536))\n\t\t\t\twrite_biff_rec(ba, 0x0002, write_BIFF2INT(R, C, v));\n\t\t\telse\n\t\t\t\twrite_biff_rec(ba, 0x0003, write_BIFF2NUM(R,C, v));\n\t\t\treturn;\n\t\tcase 'b': case 'e': write_biff_rec(ba, 0x0005, write_BIFF2BERR(R, C, cell.v, cell.t)); return;\n\t\t/* TODO: codepage, sst */\n\t\tcase 's': case 'str':\n\t\t\twrite_biff_rec(ba, 0x0004, write_BIFF2LABEL(R, C, (cell.v||\"\").slice(0,255)));\n\t\t\treturn;\n\t}\n\twrite_biff_rec(ba, 0x0001, write_BIFF2Cell(null, R, C));\n}\n\nfunction write_ws_biff2(ba/*:BufArray*/, ws/*:Worksheet*/, idx/*:number*/, opts/*::, wb:Workbook*/) {\n\tvar dense = Array.isArray(ws);\n\tvar range = safe_decode_range(ws['!ref'] || \"A1\"), ref/*:string*/, rr = \"\", cols/*:Array<string>*/ = [];\n\tif(range.e.c > 0xFF || range.e.r > 0x3FFF) {\n\t\tif(opts.WTF) throw new Error(\"Range \" + (ws['!ref'] || \"A1\") + \" exceeds format limit A1:IV16384\");\n\t\trange.e.c = Math.min(range.e.c, 0xFF);\n\t\trange.e.r = Math.min(range.e.c, 0x3FFF);\n\t\tref = encode_range(range);\n\t}\n\tfor(var R = range.s.r; R <= range.e.r; ++R) {\n\t\trr = encode_row(R);\n\t\tfor(var C = range.s.c; C <= range.e.c; ++C) {\n\t\t\tif(R === range.s.r) cols[C] = encode_col(C);\n\t\t\tref = cols[C] + rr;\n\t\t\tvar cell = dense ? (ws[R]||[])[C] : ws[ref];\n\t\t\tif(!cell) continue;\n\t\t\t/* write cell */\n\t\t\twrite_ws_biff2_cell(ba, cell, R, C, opts);\n\t\t}\n\t}\n}\n\n/* Based on test files */\nfunction write_biff2_buf(wb/*:Workbook*/, opts/*:WriteOpts*/) {\n\tvar o = opts || {};\n\tif(DENSE != null && o.dense == null) o.dense = DENSE;\n\tvar ba = buf_array();\n\tvar idx = 0;\n\tfor(var i=0;i<wb.SheetNames.length;++i) if(wb.SheetNames[i] == o.sheet) idx=i;\n\tif(idx == 0 && !!o.sheet && wb.SheetNames[0] != o.sheet) throw new Error(\"Sheet not found: \" + o.sheet);\n\twrite_biff_rec(ba, (o.biff == 4 ? 0x0409 : (o.biff == 3 ? 0x0209 : 0x0009)), write_BOF(wb, 0x10, o));\n\t/* ... */\n\twrite_ws_biff2(ba, wb.Sheets[wb.SheetNames[idx]], idx, o, wb);\n\t/* ... */\n\twrite_biff_rec(ba, 0x000A);\n\treturn ba.end();\n}\n\nfunction write_FONTS_biff8(ba, data, opts) {\n\twrite_biff_rec(ba, 0x0031 /* Font */, write_Font({\n\t\tsz:12,\n\t\tcolor: {theme:1},\n\t\tname: \"Arial\",\n\t\tfamily: 2,\n\t\tscheme: \"minor\"\n\t}, opts));\n}\n\n\nfunction write_FMTS_biff8(ba, NF/*:?SSFTable*/, opts) {\n\tif(!NF) return;\n\t[[5,8],[23,26],[41,44],[/*63*/50,/*66],[164,*/392]].forEach(function(r) {\n\t\t/*:: if(!NF) return; */\n\t\tfor(var i = r[0]; i <= r[1]; ++i) if(NF[i] != null) write_biff_rec(ba, 0x041E /* Format */, write_Format(i, NF[i], opts));\n\t});\n}\n\nfunction write_FEAT(ba, ws) {\n\t/* [MS-XLS] 2.4.112 */\n\tvar o = new_buf(19);\n\to.write_shift(4, 0x867); o.write_shift(4, 0); o.write_shift(4, 0);\n\to.write_shift(2, 3); o.write_shift(1, 1); o.write_shift(4, 0);\n\twrite_biff_rec(ba, 0x0867 /* FeatHdr */, o);\n\t/* [MS-XLS] 2.4.111 */\n\to = new_buf(39);\n\to.write_shift(4, 0x868); o.write_shift(4, 0); o.write_shift(4, 0);\n\to.write_shift(2, 3); o.write_shift(1, 0); o.write_shift(4, 0);\n\to.write_shift(2, 1); o.write_shift(4, 4); o.write_shift(2, 0);\n\twrite_Ref8U(safe_decode_range(ws['!ref']||\"A1\"), o);\n\to.write_shift(4, 4);\n\twrite_biff_rec(ba, 0x0868 /* Feat */, o);\n}\n\nfunction write_CELLXFS_biff8(ba, opts) {\n\tfor(var i = 0; i < 16; ++i) write_biff_rec(ba, 0x00e0 /* XF */, write_XF({numFmtId:0, style:true}, 0, opts));\n\topts.cellXfs.forEach(function(c) {\n\t\twrite_biff_rec(ba, 0x00e0 /* XF */, write_XF(c, 0, opts));\n\t});\n}\n\nfunction write_ws_biff8_hlinks(ba/*:BufArray*/, ws) {\n\tfor(var R=0; R<ws['!links'].length; ++R) {\n\t\tvar HL = ws['!links'][R];\n\t\twrite_biff_rec(ba, 0x01b8 /* HLink */, write_HLink(HL));\n\t\tif(HL[1].Tooltip) write_biff_rec(ba, 0x0800 /* HLinkTooltip */, write_HLinkTooltip(HL));\n\t}\n\tdelete ws['!links'];\n}\n\nfunction write_ws_cols_biff8(ba, cols) {\n\tif(!cols) return;\n\tvar cnt = 0;\n\tcols.forEach(function(col, idx) {\n\t\tif(++cnt <= 256 && col) {\n\t\t\twrite_biff_rec(ba, 0x007d /* ColInfo */, write_ColInfo(col_obj_w(idx, col), idx));\n\t\t}\n\t});\n}\n\nfunction write_ws_biff8_cell(ba/*:BufArray*/, cell/*:Cell*/, R/*:number*/, C/*:number*/, opts) {\n\tvar os = 16 + get_cell_style(opts.cellXfs, cell, opts);\n\tif(cell.v == null && !cell.bf) {\n\t\twrite_biff_rec(ba, 0x0201 /* Blank */, write_XLSCell(R, C, os));\n\t\treturn;\n\t}\n\tif(cell.bf) write_biff_rec(ba, 0x0006 /* Formula */, write_Formula(cell, R, C, opts, os));\n\telse switch(cell.t) {\n\t\tcase 'd': case 'n':\n\t\t\tvar v = cell.t == 'd' ? datenum(parseDate(cell.v)) : cell.v;\n\t\t\t/* TODO: emit RK as appropriate */\n\t\t\twrite_biff_rec(ba, 0x0203 /* Number */, write_Number(R, C, v, os, opts));\n\t\t\tbreak;\n\t\tcase 'b': case 'e':\n\t\t\twrite_biff_rec(ba, 0x0205 /* BoolErr */, write_BoolErr(R, C, cell.v, os, opts, cell.t));\n\t\t\tbreak;\n\t\t/* TODO: codepage, sst */\n\t\tcase 's': case 'str':\n\t\t\tif(opts.bookSST) {\n\t\t\t\tvar isst = get_sst_id(opts.Strings, cell.v, opts.revStrings);\n\t\t\t\twrite_biff_rec(ba, 0x00fd /* LabelSst */, write_LabelSst(R, C, isst, os, opts));\n\t\t\t} else write_biff_rec(ba, 0x0204 /* Label */, write_Label(R, C, (cell.v||\"\").slice(0,255), os, opts));\n\t\t\tbreak;\n\t\tdefault:\n\t\t\twrite_biff_rec(ba, 0x0201 /* Blank */, write_XLSCell(R, C, os));\n\t}\n}\n\n/* [MS-XLS] 2.1.7.20.5 */\nfunction write_ws_biff8(idx/*:number*/, opts, wb/*:Workbook*/) {\n\tvar ba = buf_array();\n\tvar s = wb.SheetNames[idx], ws = wb.Sheets[s] || {};\n\tvar _WB/*:WBWBProps*/ = ((wb||{}).Workbook||{}/*:any*/);\n\tvar _sheet/*:WBWSProp*/ = ((_WB.Sheets||[])[idx]||{}/*:any*/);\n\tvar dense = Array.isArray(ws);\n\tvar b8 = opts.biff == 8;\n\tvar ref/*:string*/, rr = \"\", cols/*:Array<string>*/ = [];\n\tvar range = safe_decode_range(ws['!ref'] || \"A1\");\n\tvar MAX_ROWS = b8 ? 65536 : 16384;\n\tif(range.e.c > 0xFF || range.e.r >= MAX_ROWS) {\n\t\tif(opts.WTF) throw new Error(\"Range \" + (ws['!ref'] || \"A1\") + \" exceeds format limit A1:IV16384\");\n\t\trange.e.c = Math.min(range.e.c, 0xFF);\n\t\trange.e.r = Math.min(range.e.c, MAX_ROWS-1);\n\t}\n\n\twrite_biff_rec(ba, 0x0809, write_BOF(wb, 0x10, opts));\n\t/* [Uncalced] Index */\n\twrite_biff_rec(ba, 0x000d /* CalcMode */, writeuint16(1));\n\twrite_biff_rec(ba, 0x000c /* CalcCount */, writeuint16(100));\n\twrite_biff_rec(ba, 0x000f /* CalcRefMode */, writebool(true));\n\twrite_biff_rec(ba, 0x0011 /* CalcIter */, writebool(false));\n\twrite_biff_rec(ba, 0x0010 /* CalcDelta */, write_Xnum(0.001));\n\twrite_biff_rec(ba, 0x005f /* CalcSaveRecalc */, writebool(true));\n\twrite_biff_rec(ba, 0x002a /* PrintRowCol */, writebool(false));\n\twrite_biff_rec(ba, 0x002b /* PrintGrid */, writebool(false));\n\twrite_biff_rec(ba, 0x0082 /* GridSet */, writeuint16(1));\n\twrite_biff_rec(ba, 0x0080 /* Guts */, write_Guts([0,0]));\n\t/* DefaultRowHeight WsBool [Sync] [LPr] [HorizontalPageBreaks] [VerticalPageBreaks] */\n\t/* Header (string) */\n\t/* Footer (string) */\n\twrite_biff_rec(ba, 0x0083 /* HCenter */, writebool(false));\n\twrite_biff_rec(ba, 0x0084 /* VCenter */, writebool(false));\n\t/* ... */\n\tif(b8) write_ws_cols_biff8(ba, ws[\"!cols\"]);\n\t/* ... */\n\twrite_biff_rec(ba, 0x200, write_Dimensions(range, opts));\n\t/* ... */\n\n\tif(b8) ws['!links'] = [];\n\tfor(var R = range.s.r; R <= range.e.r; ++R) {\n\t\trr = encode_row(R);\n\t\tfor(var C = range.s.c; C <= range.e.c; ++C) {\n\t\t\tif(R === range.s.r) cols[C] = encode_col(C);\n\t\t\tref = cols[C] + rr;\n\t\t\tvar cell = dense ? (ws[R]||[])[C] : ws[ref];\n\t\t\tif(!cell) continue;\n\t\t\t/* write cell */\n\t\t\twrite_ws_biff8_cell(ba, cell, R, C, opts);\n\t\t\tif(b8 && cell.l) ws['!links'].push([ref, cell.l]);\n\t\t}\n\t}\n\tvar cname/*:string*/ = _sheet.CodeName || _sheet.name || s;\n\t/* ... */\n\tif(b8) write_biff_rec(ba, 0x023e /* Window2 */, write_Window2((_WB.Views||[])[0]));\n\t/* ... */\n\tif(b8 && (ws['!merges']||[]).length) write_biff_rec(ba, 0x00e5 /* MergeCells */, write_MergeCells(ws['!merges']));\n\t/* [LRng] *QUERYTABLE [PHONETICINFO] CONDFMTS */\n\tif(b8) write_ws_biff8_hlinks(ba, ws);\n\t/* [DVAL] */\n\twrite_biff_rec(ba, 0x01ba /* CodeName */, write_XLUnicodeString(cname, opts));\n\t/* *WebPub *CellWatch [SheetExt] */\n\tif(b8) write_FEAT(ba, ws);\n\t/* *FEAT11 *RECORD12 */\n\twrite_biff_rec(ba, 0x000a /* EOF */);\n\treturn ba.end();\n}\n\n/* [MS-XLS] 2.1.7.20.3 */\nfunction write_biff8_global(wb/*:Workbook*/, bufs, opts/*:WriteOpts*/) {\n\tvar A = buf_array();\n\tvar _WB/*:WBWBProps*/ = ((wb||{}).Workbook||{}/*:any*/);\n\tvar _sheets/*:Array<WBWSProp>*/ = (_WB.Sheets||[]);\n\tvar _wb/*:WBProps*/ = /*::((*/_WB.WBProps||{/*::CodeName:\"ThisWorkbook\"*/}/*:: ):any)*/;\n\tvar b8 = opts.biff == 8, b5 = opts.biff == 5;\n\twrite_biff_rec(A, 0x0809, write_BOF(wb, 0x05, opts));\n\tif(opts.bookType == \"xla\") write_biff_rec(A, 0x0087 /* Addin */);\n\twrite_biff_rec(A, 0x00e1 /* InterfaceHdr */, b8 ? writeuint16(0x04b0) : null);\n\twrite_biff_rec(A, 0x00c1 /* Mms */, writezeroes(2));\n\tif(b5) write_biff_rec(A, 0x00bf /* ToolbarHdr */);\n\tif(b5) write_biff_rec(A, 0x00c0 /* ToolbarEnd */);\n\twrite_biff_rec(A, 0x00e2 /* InterfaceEnd */);\n\twrite_biff_rec(A, 0x005c /* WriteAccess */, write_WriteAccess(\"SheetJS\", opts));\n\t/* [FileSharing] */\n\twrite_biff_rec(A, 0x0042 /* CodePage */, writeuint16(b8 ? 0x04b0 : 0x04E4));\n\t/* *2047 Lel */\n\tif(b8) write_biff_rec(A, 0x0161 /* DSF */, writeuint16(0));\n\tif(b8) write_biff_rec(A, 0x01c0 /* Excel9File */);\n\twrite_biff_rec(A, 0x013d /* RRTabId */, write_RRTabId(wb.SheetNames.length));\n\tif(b8 && wb.vbaraw) write_biff_rec(A, 0x00d3 /* ObProj */);\n\t/* [ObNoMacros] */\n\tif(b8 && wb.vbaraw) {\n\t\tvar cname/*:string*/ = _wb.CodeName || \"ThisWorkbook\";\n\t\twrite_biff_rec(A, 0x01ba /* CodeName */, write_XLUnicodeString(cname, opts));\n\t}\n\twrite_biff_rec(A, 0x009c /* BuiltInFnGroupCount */, writeuint16(0x11));\n\t/* *FnGroupName *FnGrp12 */\n\t/* *Lbl */\n\t/* [OleObjectSize] */\n\twrite_biff_rec(A, 0x0019 /* WinProtect */, writebool(false));\n\twrite_biff_rec(A, 0x0012 /* Protect */, writebool(false));\n\twrite_biff_rec(A, 0x0013 /* Password */, writeuint16(0));\n\tif(b8) write_biff_rec(A, 0x01af /* Prot4Rev */, writebool(false));\n\tif(b8) write_biff_rec(A, 0x01bc /* Prot4RevPass */, writeuint16(0));\n\twrite_biff_rec(A, 0x003d /* Window1 */, write_Window1(opts));\n\twrite_biff_rec(A, 0x0040 /* Backup */, writebool(false));\n\twrite_biff_rec(A, 0x008d /* HideObj */, writeuint16(0));\n\twrite_biff_rec(A, 0x0022 /* Date1904 */, writebool(safe1904(wb)==\"true\"));\n\twrite_biff_rec(A, 0x000e /* CalcPrecision */, writebool(true));\n\tif(b8) write_biff_rec(A, 0x01b7 /* RefreshAll */, writebool(false));\n\twrite_biff_rec(A, 0x00DA /* BookBool */, writeuint16(0));\n\t/* ... */\n\twrite_FONTS_biff8(A, wb, opts);\n\twrite_FMTS_biff8(A, wb.SSF, opts);\n\twrite_CELLXFS_biff8(A, opts);\n\t/* ... */\n\tif(b8) write_biff_rec(A, 0x0160 /* UsesELFs */, writebool(false));\n\tvar a = A.end();\n\n\tvar C = buf_array();\n\t/* METADATA [MTRSettings] [ForceFullCalculation] */\n\tif(b8) write_biff_rec(C, 0x008C, write_Country());\n\t/* *SUPBOOK *LBL *RTD [RecalcId] *HFPicture *MSODRAWINGGROUP */\n\n\t/* BIFF8: [SST *Continue] ExtSST */\n\tif(b8 && opts.Strings) write_biff_continue(C, 0x00FC, write_SST(opts.Strings, opts));\n\n\t/* *WebPub [WOpt] [CrErr] [BookExt] *FeatHdr *DConn [THEME] [CompressPictures] [Compat12] [GUIDTypeLib] */\n\twrite_biff_rec(C, 0x000A /* EOF */);\n\tvar c = C.end();\n\n\tvar B = buf_array();\n\tvar blen = 0, j = 0;\n\tfor(j = 0; j < wb.SheetNames.length; ++j) blen += (b8 ? 12 : 11) + (b8 ? 2 : 1) * wb.SheetNames[j].length;\n\tvar start = a.length + blen + c.length;\n\tfor(j = 0; j < wb.SheetNames.length; ++j) {\n\t\tvar _sheet/*:WBWSProp*/ = _sheets[j] || ({}/*:any*/);\n\t\twrite_biff_rec(B, 0x0085 /* BoundSheet8 */, write_BoundSheet8({pos:start, hs:_sheet.Hidden||0, dt:0, name:wb.SheetNames[j]}, opts));\n\t\tstart += bufs[j].length;\n\t}\n\t/* 1*BoundSheet8 */\n\tvar b = B.end();\n\tif(blen != b.length) throw new Error(\"BS8 \" + blen + \" != \" + b.length);\n\n\tvar out = [];\n\tif(a.length) out.push(a);\n\tif(b.length) out.push(b);\n\tif(c.length) out.push(c);\n\treturn bconcat(out);\n}\n\n/* [MS-XLS] 2.1.7.20 Workbook Stream */\nfunction write_biff8_buf(wb/*:Workbook*/, opts/*:WriteOpts*/) {\n\tvar o = opts || {};\n\tvar bufs = [];\n\n\tif(wb && !wb.SSF) {\n\t\twb.SSF = dup(table_fmt);\n\t}\n\tif(wb && wb.SSF) {\n\t\tmake_ssf(); SSF_load_table(wb.SSF);\n\t\t// $FlowIgnore\n\t\to.revssf = evert_num(wb.SSF); o.revssf[wb.SSF[65535]] = 0;\n\t\to.ssf = wb.SSF;\n\t}\n\n\to.Strings = /*::((*/[]/*:: :any):SST)*/; o.Strings.Count = 0; o.Strings.Unique = 0;\n\tfix_write_opts(o);\n\n\to.cellXfs = [];\n\tget_cell_style(o.cellXfs, {}, {revssf:{\"General\":0}});\n\n\tif(!wb.Props) wb.Props = {};\n\n\tfor(var i = 0; i < wb.SheetNames.length; ++i) bufs[bufs.length] = write_ws_biff8(i, o, wb);\n\tbufs.unshift(write_biff8_global(wb, bufs, o));\n\treturn bconcat(bufs);\n}\n\nfunction write_biff_buf(wb/*:Workbook*/, opts/*:WriteOpts*/) {\n\tfor(var i = 0; i <= wb.SheetNames.length; ++i) {\n\t\tvar ws = wb.Sheets[wb.SheetNames[i]];\n\t\tif(!ws || !ws[\"!ref\"]) continue;\n\t\tvar range = decode_range(ws[\"!ref\"]);\n\t\tif(range.e.c > 255) { // note: 255 is IV\n\t\tif(typeof console != \"undefined\" && console.error) console.error(\"Worksheet '\" + wb.SheetNames[i] + \"' extends beyond column IV (255).  Data may be lost.\");\n\t\t}\n\t}\n\n\tvar o = opts || {};\n\tswitch(o.biff || 2) {\n\t\tcase 8: case 5: return write_biff8_buf(wb, opts);\n\t\tcase 4: case 3: case 2: return write_biff2_buf(wb, opts);\n\t}\n\tthrow new Error(\"invalid type \" + o.bookType + \" for BIFF\");\n}\n/* note: browser DOM element cannot see mso- style attrs, must parse */\nfunction html_to_sheet(str/*:string*/, _opts)/*:Workbook*/ {\n\tvar opts = _opts || {};\n\tif(DENSE != null && opts.dense == null) opts.dense = DENSE;\n\tvar ws/*:Worksheet*/ = opts.dense ? ([]/*:any*/) : ({}/*:any*/);\n\tstr = str.replace(/<!--.*?-->/g, \"\");\n\tvar mtch/*:any*/ = str.match(/<table/i);\n\tif(!mtch) throw new Error(\"Invalid HTML: could not find <table>\");\n\tvar mtch2/*:any*/ = str.match(/<\\/table/i);\n\tvar i/*:number*/ = mtch.index, j/*:number*/ = mtch2 && mtch2.index || str.length;\n\tvar rows = split_regex(str.slice(i, j), /(:?<tr[^>]*>)/i, \"<tr>\");\n\tvar R = -1, C = 0, RS = 0, CS = 0;\n\tvar range/*:Range*/ = {s:{r:10000000, c:10000000},e:{r:0,c:0}};\n\tvar merges/*:Array<Range>*/ = [];\n\tfor(i = 0; i < rows.length; ++i) {\n\t\tvar row = rows[i].trim();\n\t\tvar hd = row.slice(0,3).toLowerCase();\n\t\tif(hd == \"<tr\") { ++R; if(opts.sheetRows && opts.sheetRows <= R) { --R; break; } C = 0; continue; }\n\t\tif(hd != \"<td\" && hd != \"<th\") continue;\n\t\tvar cells = row.split(/<\\/t[dh]>/i);\n\t\tfor(j = 0; j < cells.length; ++j) {\n\t\t\tvar cell = cells[j].trim();\n\t\t\tif(!cell.match(/<t[dh]/i)) continue;\n\t\t\tvar m = cell, cc = 0;\n\t\t\t/* TODO: parse styles etc */\n\t\t\twhile(m.charAt(0) == \"<\" && (cc = m.indexOf(\">\")) > -1) m = m.slice(cc+1);\n\t\t\tfor(var midx = 0; midx < merges.length; ++midx) {\n\t\t\t\tvar _merge/*:Range*/ = merges[midx];\n\t\t\t\tif(_merge.s.c == C && _merge.s.r < R && R <= _merge.e.r) { C = _merge.e.c + 1; midx = -1; }\n\t\t\t}\n\t\t\tvar tag = parsexmltag(cell.slice(0, cell.indexOf(\">\")));\n\t\t\tCS = tag.colspan ? +tag.colspan : 1;\n\t\t\tif((RS = +tag.rowspan)>1 || CS>1) merges.push({s:{r:R,c:C},e:{r:R + (RS||1) - 1, c:C + CS - 1}});\n\t\t\tvar _t/*:string*/ = tag.t || tag[\"data-t\"] || \"\";\n\t\t\t/* TODO: generate stub cells */\n\t\t\tif(!m.length) { C += CS; continue; }\n\t\t\tm = htmldecode(m);\n\t\t\tif(range.s.r > R) range.s.r = R; if(range.e.r < R) range.e.r = R;\n\t\t\tif(range.s.c > C) range.s.c = C; if(range.e.c < C) range.e.c = C;\n\t\t\tif(!m.length) { C += CS; continue; }\n\t\t\tvar o/*:Cell*/ = {t:'s', v:m};\n\t\t\tif(opts.raw || !m.trim().length || _t == 's'){}\n\t\t\telse if(m === 'TRUE') o = {t:'b', v:true};\n\t\t\telse if(m === 'FALSE') o = {t:'b', v:false};\n\t\t\telse if(!isNaN(fuzzynum(m))) o = {t:'n', v:fuzzynum(m)};\n\t\t\telse if(!isNaN(fuzzydate(m).getDate())) {\n\t\t\t\to = ({t:'d', v:parseDate(m)}/*:any*/);\n\t\t\t\tif(!opts.cellDates) o = ({t:'n', v:datenum(o.v)}/*:any*/);\n\t\t\t\to.z = opts.dateNF || table_fmt[14];\n\t\t\t}\n\t\t\tif(opts.dense) { if(!ws[R]) ws[R] = []; ws[R][C] = o; }\n\t\t\telse ws[encode_cell({r:R, c:C})] = o;\n\t\t\tC += CS;\n\t\t}\n\t}\n\tws['!ref'] = encode_range(range);\n\tif(merges.length) ws[\"!merges\"] = merges;\n\treturn ws;\n}\nfunction make_html_row(ws/*:Worksheet*/, r/*:Range*/, R/*:number*/, o/*:Sheet2HTMLOpts*/)/*:string*/ {\n\tvar M/*:Array<Range>*/ = (ws['!merges'] ||[]);\n\tvar oo/*:Array<string>*/ = [];\n\tfor(var C = r.s.c; C <= r.e.c; ++C) {\n\t\tvar RS = 0, CS = 0;\n\t\tfor(var j = 0; j < M.length; ++j) {\n\t\t\tif(M[j].s.r > R || M[j].s.c > C) continue;\n\t\t\tif(M[j].e.r < R || M[j].e.c < C) continue;\n\t\t\tif(M[j].s.r < R || M[j].s.c < C) { RS = -1; break; }\n\t\t\tRS = M[j].e.r - M[j].s.r + 1; CS = M[j].e.c - M[j].s.c + 1; break;\n\t\t}\n\t\tif(RS < 0) continue;\n\t\tvar coord = encode_cell({r:R,c:C});\n\t\tvar cell = o.dense ? (ws[R]||[])[C] : ws[coord];\n\t\t/* TODO: html entities */\n\t\tvar w = (cell && cell.v != null) && (cell.h || escapehtml(cell.w || (format_cell(cell), cell.w) || \"\")) || \"\";\n\t\tvar sp = ({}/*:any*/);\n\t\tif(RS > 1) sp.rowspan = RS;\n\t\tif(CS > 1) sp.colspan = CS;\n\t\tif(o.editable) w = '<span contenteditable=\"true\">' + w + '</span>';\n\t\telse if(cell) {\n\t\t\tsp[\"data-t\"] = cell && cell.t || 'z';\n\t\t\tif(cell.v != null) sp[\"data-v\"] = cell.v;\n\t\t\tif(cell.z != null) sp[\"data-z\"] = cell.z;\n\t\t\tif(cell.l && (cell.l.Target || \"#\").charAt(0) != \"#\") w = '<a href=\"' + cell.l.Target +'\">' + w + '</a>';\n\t\t}\n\t\tsp.id = (o.id || \"sjs\") + \"-\" + coord;\n\t\too.push(writextag('td', w, sp));\n\t}\n\tvar preamble = \"<tr>\";\n\treturn preamble + oo.join(\"\") + \"</tr>\";\n}\n\nvar HTML_BEGIN = '<html><head><meta charset=\"utf-8\"/><title>SheetJS Table Export</title></head><body>';\nvar HTML_END = '</body></html>';\n\nfunction html_to_workbook(str/*:string*/, opts)/*:Workbook*/ {\n\tvar mtch = str.match(/<table[\\s\\S]*?>[\\s\\S]*?<\\/table>/gi);\n\tif(!mtch || mtch.length == 0) throw new Error(\"Invalid HTML: could not find <table>\");\n\tif(mtch.length == 1) return sheet_to_workbook(html_to_sheet(mtch[0], opts), opts);\n\tvar wb = book_new();\n\tmtch.forEach(function(s, idx) { book_append_sheet(wb, html_to_sheet(s, opts), \"Sheet\" + (idx+1)); });\n\treturn wb;\n}\n\nfunction make_html_preamble(ws/*:Worksheet*/, R/*:Range*/, o/*:Sheet2HTMLOpts*/)/*:string*/ {\n\tvar out/*:Array<string>*/ = [];\n\treturn out.join(\"\") + '<table' + (o && o.id ? ' id=\"' + o.id + '\"' : \"\") + '>';\n}\n\nfunction sheet_to_html(ws/*:Worksheet*/, opts/*:?Sheet2HTMLOpts*//*, wb:?Workbook*/)/*:string*/ {\n\tvar o = opts || {};\n\tvar header = o.header != null ? o.header : HTML_BEGIN;\n\tvar footer = o.footer != null ? o.footer : HTML_END;\n\tvar out/*:Array<string>*/ = [header];\n\tvar r = decode_range(ws['!ref']);\n\to.dense = Array.isArray(ws);\n\tout.push(make_html_preamble(ws, r, o));\n\tfor(var R = r.s.r; R <= r.e.r; ++R) out.push(make_html_row(ws, r, R, o));\n\tout.push(\"</table>\" + footer);\n\treturn out.join(\"\");\n}\n\nfunction sheet_add_dom(ws/*:Worksheet*/, table/*:HTMLElement*/, _opts/*:?any*/)/*:Worksheet*/ {\n\tvar opts = _opts || {};\n\tif(DENSE != null) opts.dense = DENSE;\n\tvar or_R = 0, or_C = 0;\n\tif(opts.origin != null) {\n\t\tif(typeof opts.origin == 'number') or_R = opts.origin;\n\t\telse {\n\t\t\tvar _origin/*:CellAddress*/ = typeof opts.origin == \"string\" ? decode_cell(opts.origin) : opts.origin;\n\t\t\tor_R = _origin.r; or_C = _origin.c;\n\t\t}\n\t}\n\n\tvar rows/*:HTMLCollection<HTMLTableRowElement>*/ = table.getElementsByTagName('tr');\n\tvar sheetRows = Math.min(opts.sheetRows||10000000, rows.length);\n\tvar range/*:Range*/ = {s:{r:0,c:0},e:{r:or_R,c:or_C}};\n\tif(ws[\"!ref\"]) {\n\t\tvar _range/*:Range*/ = decode_range(ws[\"!ref\"]);\n\t\trange.s.r = Math.min(range.s.r, _range.s.r);\n\t\trange.s.c = Math.min(range.s.c, _range.s.c);\n\t\trange.e.r = Math.max(range.e.r, _range.e.r);\n\t\trange.e.c = Math.max(range.e.c, _range.e.c);\n\t\tif(or_R == -1) range.e.r = or_R = _range.e.r + 1;\n\t}\n\tvar merges/*:Array<Range>*/ = [], midx = 0;\n\tvar rowinfo/*:Array<RowInfo>*/ = ws[\"!rows\"] || (ws[\"!rows\"] = []);\n\tvar _R = 0, R = 0, _C = 0, C = 0, RS = 0, CS = 0;\n\tif(!ws[\"!cols\"]) ws['!cols'] = [];\n\tfor(; _R < rows.length && R < sheetRows; ++_R) {\n\t\tvar row/*:HTMLTableRowElement*/ = rows[_R];\n\t\tif (is_dom_element_hidden(row)) {\n\t\t\tif (opts.display) continue;\n\t\t\trowinfo[R] = {hidden: true};\n\t\t}\n\t\tvar elts/*:HTMLCollection<HTMLTableCellElement>*/ = (row.children/*:any*/);\n\t\tfor(_C = C = 0; _C < elts.length; ++_C) {\n\t\t\tvar elt/*:HTMLTableCellElement*/ = elts[_C];\n\t\t\tif (opts.display && is_dom_element_hidden(elt)) continue;\n\t\t\tvar v/*:?string*/ = elt.hasAttribute('data-v') ? elt.getAttribute('data-v') : elt.hasAttribute('v') ? elt.getAttribute('v') : htmldecode(elt.innerHTML);\n\t\t\tvar z/*:?string*/ = elt.getAttribute('data-z') || elt.getAttribute('z');\n\t\t\tfor(midx = 0; midx < merges.length; ++midx) {\n\t\t\t\tvar m/*:Range*/ = merges[midx];\n\t\t\t\tif(m.s.c == C + or_C && m.s.r < R + or_R && R + or_R <= m.e.r) { C = m.e.c+1 - or_C; midx = -1; }\n\t\t\t}\n\t\t\t/* TODO: figure out how to extract nonstandard mso- style */\n\t\t\tCS = +elt.getAttribute(\"colspan\") || 1;\n\t\t\tif( ((RS = (+elt.getAttribute(\"rowspan\") || 1)))>1 || CS>1) merges.push({s:{r:R + or_R,c:C + or_C},e:{r:R + or_R + (RS||1) - 1, c:C + or_C + (CS||1) - 1}});\n\t\t\tvar o/*:Cell*/ = {t:'s', v:v};\n\t\t\tvar _t/*:string*/ = elt.getAttribute(\"data-t\") || elt.getAttribute(\"t\") || \"\";\n\t\t\tif(v != null) {\n\t\t\t\tif(v.length == 0) o.t = _t || 'z';\n\t\t\t\telse if(opts.raw || v.trim().length == 0 || _t == \"s\"){}\n\t\t\t\telse if(v === 'TRUE') o = {t:'b', v:true};\n\t\t\t\telse if(v === 'FALSE') o = {t:'b', v:false};\n\t\t\t\telse if(!isNaN(fuzzynum(v))) o = {t:'n', v:fuzzynum(v)};\n\t\t\t\telse if(!isNaN(fuzzydate(v).getDate())) {\n\t\t\t\t\to = ({t:'d', v:parseDate(v)}/*:any*/);\n\t\t\t\t\tif(!opts.cellDates) o = ({t:'n', v:datenum(o.v)}/*:any*/);\n\t\t\t\t\to.z = opts.dateNF || table_fmt[14];\n\t\t\t\t}\n\t\t\t}\n\t\t\tif(o.z === undefined && z != null) o.z = z;\n\t\t\t/* The first link is used.  Links are assumed to be fully specified.\n\t\t\t * TODO: The right way to process relative links is to make a new <a> */\n\t\t\tvar l = \"\", Aelts = elt.getElementsByTagName(\"A\");\n\t\t\tif(Aelts && Aelts.length) for(var Aelti = 0; Aelti < Aelts.length; ++Aelti)\tif(Aelts[Aelti].hasAttribute(\"href\")) {\n\t\t\t\tl = Aelts[Aelti].getAttribute(\"href\"); if(l.charAt(0) != \"#\") break;\n\t\t\t}\n\t\t\tif(l && l.charAt(0) != \"#\") o.l = ({ Target: l });\n\t\t\tif(opts.dense) { if(!ws[R + or_R]) ws[R + or_R] = []; ws[R + or_R][C + or_C] = o; }\n\t\t\telse ws[encode_cell({c:C + or_C, r:R + or_R})] = o;\n\t\t\tif(range.e.c < C + or_C) range.e.c = C + or_C;\n\t\t\tC += CS;\n\t\t}\n\t\t++R;\n\t}\n\tif(merges.length) ws['!merges'] = (ws[\"!merges\"] || []).concat(merges);\n\trange.e.r = Math.max(range.e.r, R - 1 + or_R);\n\tws['!ref'] = encode_range(range);\n\tif(R >= sheetRows) ws['!fullref'] = encode_range((range.e.r = rows.length-_R+R-1 + or_R,range)); // We can count the real number of rows to parse but we don't to improve the performance\n\treturn ws;\n}\n\nfunction parse_dom_table(table/*:HTMLElement*/, _opts/*:?any*/)/*:Worksheet*/ {\n\tvar opts = _opts || {};\n\tvar ws/*:Worksheet*/ = opts.dense ? ([]/*:any*/) : ({}/*:any*/);\n\treturn sheet_add_dom(ws, table, _opts);\n}\n\nfunction table_to_book(table/*:HTMLElement*/, opts/*:?any*/)/*:Workbook*/ {\n\treturn sheet_to_workbook(parse_dom_table(table, opts), opts);\n}\n\nfunction is_dom_element_hidden(element/*:HTMLElement*/)/*:boolean*/ {\n\tvar display/*:string*/ = '';\n\tvar get_computed_style/*:?function*/ = get_get_computed_style_function(element);\n\tif(get_computed_style) display = get_computed_style(element).getPropertyValue('display');\n\tif(!display) display = element.style && element.style.display;\n\treturn display === 'none';\n}\n\n/* global getComputedStyle */\nfunction get_get_computed_style_function(element/*:HTMLElement*/)/*:?function*/ {\n\t// The proper getComputedStyle implementation is the one defined in the element window\n\tif(element.ownerDocument.defaultView && typeof element.ownerDocument.defaultView.getComputedStyle === 'function') return element.ownerDocument.defaultView.getComputedStyle;\n\t// If it is not available, try to get one from the global namespace\n\tif(typeof getComputedStyle === 'function') return getComputedStyle;\n\treturn null;\n}\n/* OpenDocument */\nfunction parse_text_p(text/*:string*//*::, tag*/)/*:Array<any>*/ {\n\t/* 6.1.2 White Space Characters */\n\tvar fixed = text\n\t\t.replace(/[\\t\\r\\n]/g, \" \").trim().replace(/ +/g, \" \")\n\t\t.replace(/<text:s\\/>/g,\" \")\n\t\t.replace(/<text:s text:c=\"(\\d+)\"\\/>/g, function($$,$1) { return Array(parseInt($1,10)+1).join(\" \"); })\n\t\t.replace(/<text:tab[^>]*\\/>/g,\"\\t\")\n\t\t.replace(/<text:line-break\\/>/g,\"\\n\");\n\tvar v = unescapexml(fixed.replace(/<[^>]*>/g,\"\"));\n\n\treturn [v];\n}\n\nvar number_formats_ods = {\n\t/* ods name: [short ssf fmt, long ssf fmt] */\n\tday:           [\"d\",   \"dd\"],\n\tmonth:         [\"m\",   \"mm\"],\n\tyear:          [\"y\",   \"yy\"],\n\thours:         [\"h\",   \"hh\"],\n\tminutes:       [\"m\",   \"mm\"],\n\tseconds:       [\"s\",   \"ss\"],\n\t\"am-pm\":       [\"A/P\", \"AM/PM\"],\n\t\"day-of-week\": [\"ddd\", \"dddd\"],\n\tera:           [\"e\",   \"ee\"],\n\t/* there is no native representation of LO \"Q\" format */\n\tquarter:       [\"\\\\Qm\", \"m\\\\\\\"th quarter\\\"\"]\n};\n\n\nfunction parse_content_xml(d/*:string*/, _opts)/*:Workbook*/ {\n\t\tvar opts = _opts || {};\n\t\tif(DENSE != null && opts.dense == null) opts.dense = DENSE;\n\t\tvar str = xlml_normalize(d);\n\t\tvar state/*:Array<any>*/ = [], tmp;\n\t\tvar tag/*:: = {}*/;\n\t\tvar NFtag = {name:\"\"}, NF = \"\", pidx = 0;\n\t\tvar sheetag/*:: = {name:\"\", '名称':\"\"}*/;\n\t\tvar rowtag/*:: = {'行号':\"\"}*/;\n\t\tvar Sheets = {}, SheetNames/*:Array<string>*/ = [];\n\t\tvar ws = opts.dense ? ([]/*:any*/) : ({}/*:any*/);\n\t\tvar Rn, q/*:: :any = ({t:\"\", v:null, z:null, w:\"\",c:[],}:any)*/;\n\t\tvar ctag = ({value:\"\"}/*:any*/);\n\t\tvar textp = \"\", textpidx = 0, textptag/*:: = {}*/;\n\t\tvar textR = [];\n\t\tvar R = -1, C = -1, range = {s: {r:1000000,c:10000000}, e: {r:0, c:0}};\n\t\tvar row_ol = 0;\n\t\tvar number_format_map = {};\n\t\tvar merges/*:Array<Range>*/ = [], mrange = {}, mR = 0, mC = 0;\n\t\tvar rowinfo/*:Array<RowInfo>*/ = [], rowpeat = 1, colpeat = 1;\n\t\tvar arrayf/*:Array<[Range, string]>*/ = [];\n\t\tvar WB = {Names:[]};\n\t\tvar atag = ({}/*:any*/);\n\t\tvar _Ref/*:[string, string]*/ = [\"\", \"\"];\n\t\tvar comments/*:Array<Comment>*/ = [], comment/*:Comment*/ = ({}/*:any*/);\n\t\tvar creator = \"\", creatoridx = 0;\n\t\tvar isstub = false, intable = false;\n\t\tvar i = 0;\n\t\txlmlregex.lastIndex = 0;\n\t\tstr = str.replace(/<!--([\\s\\S]*?)-->/mg,\"\").replace(/<!DOCTYPE[^\\[]*\\[[^\\]]*\\]>/gm,\"\");\n\t\twhile((Rn = xlmlregex.exec(str))) switch((Rn[3]=Rn[3].replace(/_.*$/,\"\"))) {\n\n\t\t\tcase 'table': case '工作表': // 9.1.2 <table:table>\n\t\t\t\tif(Rn[1]==='/') {\n\t\t\t\t\tif(range.e.c >= range.s.c && range.e.r >= range.s.r) ws['!ref'] = encode_range(range);\n\t\t\t\t\telse ws['!ref'] = \"A1:A1\";\n\t\t\t\t\tif(opts.sheetRows > 0 && opts.sheetRows <= range.e.r) {\n\t\t\t\t\t\tws['!fullref'] = ws['!ref'];\n\t\t\t\t\t\trange.e.r = opts.sheetRows - 1;\n\t\t\t\t\t\tws['!ref'] = encode_range(range);\n\t\t\t\t\t}\n\t\t\t\t\tif(merges.length) ws['!merges'] = merges;\n\t\t\t\t\tif(rowinfo.length) ws[\"!rows\"] = rowinfo;\n\t\t\t\t\tsheetag.name = sheetag['名称'] || sheetag.name;\n\t\t\t\t\tif(typeof JSON !== 'undefined') JSON.stringify(sheetag);\n\t\t\t\t\tSheetNames.push(sheetag.name);\n\t\t\t\t\tSheets[sheetag.name] = ws;\n\t\t\t\t\tintable = false;\n\t\t\t\t}\n\t\t\t\telse if(Rn[0].charAt(Rn[0].length-2) !== '/') {\n\t\t\t\t\tsheetag = parsexmltag(Rn[0], false);\n\t\t\t\t\tR = C = -1;\n\t\t\t\t\trange.s.r = range.s.c = 10000000; range.e.r = range.e.c = 0;\n\t\t\t\t\tws = opts.dense ? ([]/*:any*/) : ({}/*:any*/); merges = [];\n\t\t\t\t\trowinfo = [];\n\t\t\t\t\tintable = true;\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 'table-row-group': // 9.1.9 <table:table-row-group>\n\t\t\t\tif(Rn[1] === \"/\") --row_ol; else ++row_ol;\n\t\t\t\tbreak;\n\t\t\tcase 'table-row': case '行': // 9.1.3 <table:table-row>\n\t\t\t\tif(Rn[1] === '/') { R+=rowpeat; rowpeat = 1; break; }\n\t\t\t\trowtag = parsexmltag(Rn[0], false);\n\t\t\t\tif(rowtag['行号']) R = rowtag['行号'] - 1; else if(R == -1) R = 0;\n\t\t\t\trowpeat = +rowtag['number-rows-repeated'] || 1;\n\t\t\t\t/* TODO: remove magic */\n\t\t\t\tif(rowpeat < 10) for(i = 0; i < rowpeat; ++i) if(row_ol > 0) rowinfo[R + i] = {level: row_ol};\n\t\t\t\tC = -1; break;\n\t\t\tcase 'covered-table-cell': // 9.1.5 <table:covered-table-cell>\n\t\t\t\tif(Rn[1] !== '/') ++C;\n\t\t\t\tif(opts.sheetStubs) {\n\t\t\t\t\tif(opts.dense) { if(!ws[R]) ws[R] = []; ws[R][C] = {t:'z'}; }\n\t\t\t\t\telse ws[encode_cell({r:R,c:C})] = {t:'z'};\n\t\t\t\t}\n\t\t\t\ttextp = \"\"; textR = [];\n\t\t\t\tbreak; /* stub */\n\t\t\tcase 'table-cell': case '数据':\n\t\t\t\tif(Rn[0].charAt(Rn[0].length-2) === '/') {\n\t\t\t\t\t++C;\n\t\t\t\t\tctag = parsexmltag(Rn[0], false);\n\t\t\t\t\tcolpeat = parseInt(ctag['number-columns-repeated']||\"1\", 10);\n\t\t\t\t\tq = ({t:'z', v:null/*:: , z:null, w:\"\",c:[]*/}/*:any*/);\n\t\t\t\t\tif(ctag.formula && opts.cellFormula != false) q.f = ods_to_csf_formula(unescapexml(ctag.formula));\n\t\t\t\t\tif((ctag['数据类型'] || ctag['value-type']) == \"string\") {\n\t\t\t\t\t\tq.t = \"s\"; q.v = unescapexml(ctag['string-value'] || \"\");\n\t\t\t\t\t\tif(opts.dense) {\n\t\t\t\t\t\t\tif(!ws[R]) ws[R] = [];\n\t\t\t\t\t\t\tws[R][C] = q;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tws[encode_cell({r:R,c:C})] = q;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tC+= colpeat-1;\n\t\t\t\t} else if(Rn[1]!=='/') {\n\t\t\t\t\t++C;\n\t\t\t\t\ttextp = \"\"; textpidx = 0; textR = [];\n\t\t\t\t\tcolpeat = 1;\n\t\t\t\t\tvar rptR = rowpeat ? R + rowpeat - 1 : R;\n\t\t\t\t\tif(C > range.e.c) range.e.c = C;\n\t\t\t\t\tif(C < range.s.c) range.s.c = C;\n\t\t\t\t\tif(R < range.s.r) range.s.r = R;\n\t\t\t\t\tif(rptR > range.e.r) range.e.r = rptR;\n\t\t\t\t\tctag = parsexmltag(Rn[0], false);\n\t\t\t\t\tcomments = []; comment = ({}/*:any*/);\n\t\t\t\t\tq = ({t:ctag['数据类型'] || ctag['value-type'], v:null/*:: , z:null, w:\"\",c:[]*/}/*:any*/);\n\t\t\t\t\tif(opts.cellFormula) {\n\t\t\t\t\t\tif(ctag.formula) ctag.formula = unescapexml(ctag.formula);\n\t\t\t\t\t\tif(ctag['number-matrix-columns-spanned'] && ctag['number-matrix-rows-spanned']) {\n\t\t\t\t\t\t\tmR = parseInt(ctag['number-matrix-rows-spanned'],10) || 0;\n\t\t\t\t\t\t\tmC = parseInt(ctag['number-matrix-columns-spanned'],10) || 0;\n\t\t\t\t\t\t\tmrange = {s: {r:R,c:C}, e:{r:R + mR-1,c:C + mC-1}};\n\t\t\t\t\t\t\tq.F = encode_range(mrange);\n\t\t\t\t\t\t\tarrayf.push([mrange, q.F]);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif(ctag.formula) q.f = ods_to_csf_formula(ctag.formula);\n\t\t\t\t\t\telse for(i = 0; i < arrayf.length; ++i)\n\t\t\t\t\t\t\tif(R >= arrayf[i][0].s.r && R <= arrayf[i][0].e.r)\n\t\t\t\t\t\t\t\tif(C >= arrayf[i][0].s.c && C <= arrayf[i][0].e.c)\n\t\t\t\t\t\t\t\t\tq.F = arrayf[i][1];\n\t\t\t\t\t}\n\t\t\t\t\tif(ctag['number-columns-spanned'] || ctag['number-rows-spanned']) {\n\t\t\t\t\t\tmR = parseInt(ctag['number-rows-spanned'],10) || 0;\n\t\t\t\t\t\tmC = parseInt(ctag['number-columns-spanned'],10) || 0;\n\t\t\t\t\t\tmrange = {s: {r:R,c:C}, e:{r:R + mR-1,c:C + mC-1}};\n\t\t\t\t\t\tmerges.push(mrange);\n\t\t\t\t\t}\n\n\t\t\t\t\t/* 19.675.2 table:number-columns-repeated */\n\t\t\t\t\tif(ctag['number-columns-repeated']) colpeat = parseInt(ctag['number-columns-repeated'], 10);\n\n\t\t\t\t\t/* 19.385 office:value-type */\n\t\t\t\t\tswitch(q.t) {\n\t\t\t\t\t\tcase 'boolean': q.t = 'b'; q.v = parsexmlbool(ctag['boolean-value']); break;\n\t\t\t\t\t\tcase 'float': q.t = 'n'; q.v = parseFloat(ctag.value); break;\n\t\t\t\t\t\tcase 'percentage': q.t = 'n'; q.v = parseFloat(ctag.value); break;\n\t\t\t\t\t\tcase 'currency': q.t = 'n'; q.v = parseFloat(ctag.value); break;\n\t\t\t\t\t\tcase 'date': q.t = 'd'; q.v = parseDate(ctag['date-value']);\n\t\t\t\t\t\t\tif(!opts.cellDates) { q.t = 'n'; q.v = datenum(q.v); }\n\t\t\t\t\t\t\tq.z = 'm/d/yy'; break;\n\t\t\t\t\t\tcase 'time': q.t = 'n'; q.v = parse_isodur(ctag['time-value'])/86400;\n\t\t\t\t\t\t\tif(opts.cellDates) { q.t = 'd'; q.v = numdate(q.v); }\n\t\t\t\t\t\t\tq.z = 'HH:MM:SS'; break;\n\t\t\t\t\t\tcase 'number': q.t = 'n'; q.v = parseFloat(ctag['数据数值']); break;\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\tif(q.t === 'string' || q.t === 'text' || !q.t) {\n\t\t\t\t\t\t\t\tq.t = 's';\n\t\t\t\t\t\t\t\tif(ctag['string-value'] != null) { textp = unescapexml(ctag['string-value']); textR = []; }\n\t\t\t\t\t\t\t} else throw new Error('Unsupported value type ' + q.t);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tisstub = false;\n\t\t\t\t\tif(q.t === 's') {\n\t\t\t\t\t\tq.v = textp || '';\n\t\t\t\t\t\tif(textR.length) q.R = textR;\n\t\t\t\t\t\tisstub = textpidx == 0;\n\t\t\t\t\t}\n\t\t\t\t\tif(atag.Target) q.l = atag;\n\t\t\t\t\tif(comments.length > 0) { q.c = comments; comments = []; }\n\t\t\t\t\tif(textp && opts.cellText !== false) q.w = textp;\n\t\t\t\t\tif(isstub) { q.t = \"z\"; delete q.v; }\n\t\t\t\t\tif(!isstub || opts.sheetStubs) {\n\t\t\t\t\t\tif(!(opts.sheetRows && opts.sheetRows <= R)) {\n\t\t\t\t\t\t\tfor(var rpt = 0; rpt < rowpeat; ++rpt) {\n\t\t\t\t\t\t\t\tcolpeat = parseInt(ctag['number-columns-repeated']||\"1\", 10);\n\t\t\t\t\t\t\t\tif(opts.dense) {\n\t\t\t\t\t\t\t\t\tif(!ws[R + rpt]) ws[R + rpt] = [];\n\t\t\t\t\t\t\t\t\tws[R + rpt][C] = rpt == 0 ? q : dup(q);\n\t\t\t\t\t\t\t\t\twhile(--colpeat > 0) ws[R + rpt][C + colpeat] = dup(q);\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tws[encode_cell({r:R + rpt,c:C})] = q;\n\t\t\t\t\t\t\t\t\twhile(--colpeat > 0) ws[encode_cell({r:R + rpt,c:C + colpeat})] = dup(q);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif(range.e.c <= C) range.e.c = C;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tcolpeat = parseInt(ctag['number-columns-repeated']||\"1\", 10);\n\t\t\t\t\tC += colpeat-1; colpeat = 0;\n\t\t\t\t\tq = {/*:: t:\"\", v:null, z:null, w:\"\",c:[]*/};\n\t\t\t\t\ttextp = \"\"; textR = [];\n\t\t\t\t}\n\t\t\t\tatag = ({}/*:any*/);\n\t\t\t\tbreak; // 9.1.4 <table:table-cell>\n\n\t\t\t/* pure state */\n\t\t\tcase 'document': // TODO: <office:document> is the root for FODS\n\t\t\tcase 'document-content': case '电子表格文档': // 3.1.3.2 <office:document-content>\n\t\t\tcase 'spreadsheet': case '主体': // 3.7 <office:spreadsheet>\n\t\t\tcase 'scripts': // 3.12 <office:scripts>\n\t\t\tcase 'styles': // TODO <office:styles>\n\t\t\tcase 'font-face-decls': // 3.14 <office:font-face-decls>\n\t\t\tcase 'master-styles': // 3.15.4 <office:master-styles> -- relevant for FODS\n\t\t\t\tif(Rn[1]==='/'){if((tmp=state.pop())[0]!==Rn[3]) throw \"Bad state: \"+tmp;}\n\t\t\t\telse if(Rn[0].charAt(Rn[0].length-2) !== '/') state.push([Rn[3], true]);\n\t\t\t\tbreak;\n\n\t\t\tcase 'annotation': // 14.1 <office:annotation>\n\t\t\t\tif(Rn[1]==='/'){\n\t\t\t\t\tif((tmp=state.pop())[0]!==Rn[3]) throw \"Bad state: \"+tmp;\n\t\t\t\t\tcomment.t = textp;\n\t\t\t\t\tif(textR.length) /*::(*/comment/*:: :any)*/.R = textR;\n\t\t\t\t\tcomment.a = creator;\n\t\t\t\t\tcomments.push(comment);\n\t\t\t\t}\n\t\t\t\telse if(Rn[0].charAt(Rn[0].length-2) !== '/') {state.push([Rn[3], false]);}\n\t\t\t\tcreator = \"\"; creatoridx = 0;\n\t\t\t\ttextp = \"\"; textpidx = 0; textR = [];\n\t\t\t\tbreak;\n\n\t\t\tcase 'creator': // 4.3.2.7 <dc:creator>\n\t\t\t\tif(Rn[1]==='/') { creator = str.slice(creatoridx,Rn.index); }\n\t\t\t\telse creatoridx = Rn.index + Rn[0].length;\n\t\t\t\tbreak;\n\n\t\t\t/* ignore state */\n\t\t\tcase 'meta': case '元数据': // TODO: <office:meta> <uof:元数据> FODS/UOF\n\t\t\tcase 'settings': // TODO: <office:settings>\n\t\t\tcase 'config-item-set': // TODO: <office:config-item-set>\n\t\t\tcase 'config-item-map-indexed': // TODO: <office:config-item-map-indexed>\n\t\t\tcase 'config-item-map-entry': // TODO: <office:config-item-map-entry>\n\t\t\tcase 'config-item-map-named': // TODO: <office:config-item-map-entry>\n\t\t\tcase 'shapes': // 9.2.8 <table:shapes>\n\t\t\tcase 'frame': // 10.4.2 <draw:frame>\n\t\t\tcase 'text-box': // 10.4.3 <draw:text-box>\n\t\t\tcase 'image': // 10.4.4 <draw:image>\n\t\t\tcase 'data-pilot-tables': // 9.6.2 <table:data-pilot-tables>\n\t\t\tcase 'list-style': // 16.30 <text:list-style>\n\t\t\tcase 'form': // 13.13 <form:form>\n\t\t\tcase 'dde-links': // 9.8 <table:dde-links>\n\t\t\tcase 'event-listeners': // TODO\n\t\t\tcase 'chart': // TODO\n\t\t\t\tif(Rn[1]==='/'){if((tmp=state.pop())[0]!==Rn[3]) throw \"Bad state: \"+tmp;}\n\t\t\t\telse if(Rn[0].charAt(Rn[0].length-2) !== '/') state.push([Rn[3], false]);\n\t\t\t\ttextp = \"\"; textpidx = 0; textR = [];\n\t\t\t\tbreak;\n\n\t\t\tcase 'scientific-number': // TODO: <number:scientific-number>\n\t\t\t\tbreak;\n\t\t\tcase 'currency-symbol': // TODO: <number:currency-symbol>\n\t\t\t\tbreak;\n\t\t\tcase 'currency-style': // TODO: <number:currency-style>\n\t\t\t\tbreak;\n\t\t\tcase 'number-style': // 16.27.2 <number:number-style>\n\t\t\tcase 'percentage-style': // 16.27.9 <number:percentage-style>\n\t\t\tcase 'date-style': // 16.27.10 <number:date-style>\n\t\t\tcase 'time-style': // 16.27.18 <number:time-style>\n\t\t\t\tif(Rn[1]==='/'){\n\t\t\t\t\tnumber_format_map[NFtag.name] = NF;\n\t\t\t\t\tif((tmp=state.pop())[0]!==Rn[3]) throw \"Bad state: \"+tmp;\n\t\t\t\t} else if(Rn[0].charAt(Rn[0].length-2) !== '/') {\n\t\t\t\t\tNF = \"\";\n\t\t\t\t\tNFtag = parsexmltag(Rn[0], false);\n\t\t\t\t\tstate.push([Rn[3], true]);\n\t\t\t\t} break;\n\n\t\t\tcase 'script': break; // 3.13 <office:script>\n\t\t\tcase 'libraries': break; // TODO: <ooo:libraries>\n\t\t\tcase 'automatic-styles': break; // 3.15.3 <office:automatic-styles>\n\n\t\t\tcase 'default-style': // TODO: <style:default-style>\n\t\t\tcase 'page-layout': break; // TODO: <style:page-layout>\n\t\t\tcase 'style': // 16.2 <style:style>\n\t\t\t\tbreak;\n\t\t\tcase 'map': break; // 16.3 <style:map>\n\t\t\tcase 'font-face': break; // 16.21 <style:font-face>\n\n\t\t\tcase 'paragraph-properties': break; // 17.6 <style:paragraph-properties>\n\t\t\tcase 'table-properties': break; // 17.15 <style:table-properties>\n\t\t\tcase 'table-column-properties': break; // 17.16 <style:table-column-properties>\n\t\t\tcase 'table-row-properties': break; // 17.17 <style:table-row-properties>\n\t\t\tcase 'table-cell-properties': break; // 17.18 <style:table-cell-properties>\n\n\t\t\tcase 'number': // 16.27.3 <number:number>\n\t\t\t\tswitch(state[state.length-1][0]) {\n\t\t\t\t\tcase 'time-style':\n\t\t\t\t\tcase 'date-style':\n\t\t\t\t\t\ttag = parsexmltag(Rn[0], false);\n\t\t\t\t\t\tNF += number_formats_ods[Rn[3]][tag.style==='long'?1:0]; break;\n\t\t\t\t} break;\n\n\t\t\tcase 'fraction': break; // TODO 16.27.6 <number:fraction>\n\n\t\t\tcase 'day': // 16.27.11 <number:day>\n\t\t\tcase 'month': // 16.27.12 <number:month>\n\t\t\tcase 'year': // 16.27.13 <number:year>\n\t\t\tcase 'era': // 16.27.14 <number:era>\n\t\t\tcase 'day-of-week': // 16.27.15 <number:day-of-week>\n\t\t\tcase 'week-of-year': // 16.27.16 <number:week-of-year>\n\t\t\tcase 'quarter': // 16.27.17 <number:quarter>\n\t\t\tcase 'hours': // 16.27.19 <number:hours>\n\t\t\tcase 'minutes': // 16.27.20 <number:minutes>\n\t\t\tcase 'seconds': // 16.27.21 <number:seconds>\n\t\t\tcase 'am-pm': // 16.27.22 <number:am-pm>\n\t\t\t\tswitch(state[state.length-1][0]) {\n\t\t\t\t\tcase 'time-style':\n\t\t\t\t\tcase 'date-style':\n\t\t\t\t\t\ttag = parsexmltag(Rn[0], false);\n\t\t\t\t\t\tNF += number_formats_ods[Rn[3]][tag.style==='long'?1:0]; break;\n\t\t\t\t} break;\n\n\t\t\tcase 'boolean-style': break; // 16.27.23 <number:boolean-style>\n\t\t\tcase 'boolean': break; // 16.27.24 <number:boolean>\n\t\t\tcase 'text-style': break; // 16.27.25 <number:text-style>\n\t\t\tcase 'text': // 16.27.26 <number:text>\n\t\t\t\tif(Rn[0].slice(-2) === \"/>\") break;\n\t\t\t\telse if(Rn[1]===\"/\") switch(state[state.length-1][0]) {\n\t\t\t\t\tcase 'number-style':\n\t\t\t\t\tcase 'date-style':\n\t\t\t\t\tcase 'time-style':\n\t\t\t\t\t\tNF += str.slice(pidx, Rn.index);\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\telse pidx = Rn.index + Rn[0].length;\n\t\t\t\tbreak;\n\n\t\t\tcase 'named-range': // 9.4.12 <table:named-range>\n\t\t\t\ttag = parsexmltag(Rn[0], false);\n\t\t\t\t_Ref = ods_to_csf_3D(tag['cell-range-address']);\n\t\t\t\tvar nrange = ({Name:tag.name, Ref:_Ref[0] + '!' + _Ref[1]}/*:any*/);\n\t\t\t\tif(intable) nrange.Sheet = SheetNames.length;\n\t\t\t\tWB.Names.push(nrange);\n\t\t\t\tbreak;\n\n\t\t\tcase 'text-content': break; // 16.27.27 <number:text-content>\n\t\t\tcase 'text-properties': break; // 16.27.27 <style:text-properties>\n\t\t\tcase 'embedded-text': break; // 16.27.4 <number:embedded-text>\n\n\t\t\tcase 'body': case '电子表格': break; // 3.3 16.9.6 19.726.3\n\n\t\t\tcase 'forms': break; // 12.25.2 13.2\n\t\t\tcase 'table-column': break; // 9.1.6 <table:table-column>\n\t\t\tcase 'table-header-rows': break; // 9.1.7 <table:table-header-rows>\n\t\t\tcase 'table-rows': break; // 9.1.12 <table:table-rows>\n\t\t\t/* TODO: outline levels */\n\t\t\tcase 'table-column-group': break; // 9.1.10 <table:table-column-group>\n\t\t\tcase 'table-header-columns': break; // 9.1.11 <table:table-header-columns>\n\t\t\tcase 'table-columns': break; // 9.1.12 <table:table-columns>\n\n\t\t\tcase 'null-date': break; // 9.4.2 <table:null-date> TODO: date1904\n\n\t\t\tcase 'graphic-properties': break; // 17.21 <style:graphic-properties>\n\t\t\tcase 'calculation-settings': break; // 9.4.1 <table:calculation-settings>\n\t\t\tcase 'named-expressions': break; // 9.4.11 <table:named-expressions>\n\t\t\tcase 'label-range': break; // 9.4.9 <table:label-range>\n\t\t\tcase 'label-ranges': break; // 9.4.10 <table:label-ranges>\n\t\t\tcase 'named-expression': break; // 9.4.13 <table:named-expression>\n\t\t\tcase 'sort': break; // 9.4.19 <table:sort>\n\t\t\tcase 'sort-by': break; // 9.4.20 <table:sort-by>\n\t\t\tcase 'sort-groups': break; // 9.4.22 <table:sort-groups>\n\n\t\t\tcase 'tab': break; // 6.1.4 <text:tab>\n\t\t\tcase 'line-break': break; // 6.1.5 <text:line-break>\n\t\t\tcase 'span': break; // 6.1.7 <text:span>\n\t\t\tcase 'p': case '文本串': // 5.1.3 <text:p>\n\t\t\t\tif(['master-styles'].indexOf(state[state.length-1][0]) > -1) break;\n\t\t\t\tif(Rn[1]==='/' && (!ctag || !ctag['string-value'])) {\n\t\t\t\t\tvar ptp = parse_text_p(str.slice(textpidx,Rn.index), textptag);\n\t\t\t\t\ttextp = (textp.length > 0 ? textp + \"\\n\" : \"\") + ptp[0];\n\t\t\t\t} else { textptag = parsexmltag(Rn[0], false); textpidx = Rn.index + Rn[0].length; }\n\t\t\t\tbreak; // <text:p>\n\t\t\tcase 's': break; // <text:s>\n\n\t\t\tcase 'database-range': // 9.4.15 <table:database-range>\n\t\t\t\tif(Rn[1]==='/') break;\n\t\t\t\ttry {\n\t\t\t\t\t_Ref = ods_to_csf_3D(parsexmltag(Rn[0])['target-range-address']);\n\t\t\t\t\tSheets[_Ref[0]]['!autofilter'] = { ref:_Ref[1] };\n\t\t\t\t} catch(e) {/* empty */}\n\t\t\t\tbreak;\n\n\t\t\tcase 'date': break; // <*:date>\n\n\t\t\tcase 'object': break; // 10.4.6.2 <draw:object>\n\t\t\tcase 'title': case '标题': break; // <*:title> OR <uof:标题>\n\t\t\tcase 'desc': break; // <*:desc>\n\t\t\tcase 'binary-data': break; // 10.4.5 TODO: b64 blob\n\n\t\t\t/* 9.2 Advanced Tables */\n\t\t\tcase 'table-source': break; // 9.2.6\n\t\t\tcase 'scenario': break; // 9.2.6\n\n\t\t\tcase 'iteration': break; // 9.4.3 <table:iteration>\n\t\t\tcase 'content-validations': break; // 9.4.4 <table:\n\t\t\tcase 'content-validation': break; // 9.4.5 <table:\n\t\t\tcase 'help-message': break; // 9.4.6 <table:\n\t\t\tcase 'error-message': break; // 9.4.7 <table:\n\t\t\tcase 'database-ranges': break; // 9.4.14 <table:database-ranges>\n\t\t\tcase 'filter': break; // 9.5.2 <table:filter>\n\t\t\tcase 'filter-and': break; // 9.5.3 <table:filter-and>\n\t\t\tcase 'filter-or': break; // 9.5.4 <table:filter-or>\n\t\t\tcase 'filter-condition': break; // 9.5.5 <table:filter-condition>\n\n\t\t\tcase 'list-level-style-bullet': break; // 16.31 <text:\n\t\t\tcase 'list-level-style-number': break; // 16.32 <text:\n\t\t\tcase 'list-level-properties': break; // 17.19 <style:\n\n\t\t\t/* 7.3 Document Fields */\n\t\t\tcase 'sender-firstname': // 7.3.6.2\n\t\t\tcase 'sender-lastname': // 7.3.6.3\n\t\t\tcase 'sender-initials': // 7.3.6.4\n\t\t\tcase 'sender-title': // 7.3.6.5\n\t\t\tcase 'sender-position': // 7.3.6.6\n\t\t\tcase 'sender-email': // 7.3.6.7\n\t\t\tcase 'sender-phone-private': // 7.3.6.8\n\t\t\tcase 'sender-fax': // 7.3.6.9\n\t\t\tcase 'sender-company': // 7.3.6.10\n\t\t\tcase 'sender-phone-work': // 7.3.6.11\n\t\t\tcase 'sender-street': // 7.3.6.12\n\t\t\tcase 'sender-city': // 7.3.6.13\n\t\t\tcase 'sender-postal-code': // 7.3.6.14\n\t\t\tcase 'sender-country': // 7.3.6.15\n\t\t\tcase 'sender-state-or-province': // 7.3.6.16\n\t\t\tcase 'author-name': // 7.3.7.1\n\t\t\tcase 'author-initials': // 7.3.7.2\n\t\t\tcase 'chapter': // 7.3.8\n\t\t\tcase 'file-name': // 7.3.9\n\t\t\tcase 'template-name': // 7.3.9\n\t\t\tcase 'sheet-name': // 7.3.9\n\t\t\t\tbreak;\n\n\t\t\tcase 'event-listener':\n\t\t\t\tbreak;\n\t\t\t/* TODO: FODS Properties */\n\t\t\tcase 'initial-creator':\n\t\t\tcase 'creation-date':\n\t\t\tcase 'print-date':\n\t\t\tcase 'generator':\n\t\t\tcase 'document-statistic':\n\t\t\tcase 'user-defined':\n\t\t\tcase 'editing-duration':\n\t\t\tcase 'editing-cycles':\n\t\t\t\tbreak;\n\n\t\t\t/* TODO: FODS Config */\n\t\t\tcase 'config-item':\n\t\t\t\tbreak;\n\n\t\t\t/* TODO: style tokens */\n\t\t\tcase 'page-number': break; // TODO <text:page-number>\n\t\t\tcase 'page-count': break; // TODO <text:page-count>\n\t\t\tcase 'time': break; // TODO <text:time>\n\n\t\t\t/* 9.3 Advanced Table Cells */\n\t\t\tcase 'cell-range-source': break; // 9.3.1 <table:\n\t\t\tcase 'detective': break; // 9.3.2 <table:\n\t\t\tcase 'operation': break; // 9.3.3 <table:\n\t\t\tcase 'highlighted-range': break; // 9.3.4 <table:\n\n\t\t\t/* 9.6 Data Pilot Tables <table: */\n\t\t\tcase 'data-pilot-table': // 9.6.3\n\t\t\tcase 'source-cell-range': // 9.6.5\n\t\t\tcase 'source-service': // 9.6.6\n\t\t\tcase 'data-pilot-field': // 9.6.7\n\t\t\tcase 'data-pilot-level': // 9.6.8\n\t\t\tcase 'data-pilot-subtotals': // 9.6.9\n\t\t\tcase 'data-pilot-subtotal': // 9.6.10\n\t\t\tcase 'data-pilot-members': // 9.6.11\n\t\t\tcase 'data-pilot-member': // 9.6.12\n\t\t\tcase 'data-pilot-display-info': // 9.6.13\n\t\t\tcase 'data-pilot-sort-info': // 9.6.14\n\t\t\tcase 'data-pilot-layout-info': // 9.6.15\n\t\t\tcase 'data-pilot-field-reference': // 9.6.16\n\t\t\tcase 'data-pilot-groups': // 9.6.17\n\t\t\tcase 'data-pilot-group': // 9.6.18\n\t\t\tcase 'data-pilot-group-member': // 9.6.19\n\t\t\t\tbreak;\n\n\t\t\t/* 10.3 Drawing Shapes */\n\t\t\tcase 'rect': // 10.3.2\n\t\t\t\tbreak;\n\n\t\t\t/* 14.6 DDE Connections */\n\t\t\tcase 'dde-connection-decls': // 14.6.2 <text:\n\t\t\tcase 'dde-connection-decl': // 14.6.3 <text:\n\t\t\tcase 'dde-link': // 14.6.4 <table:\n\t\t\tcase 'dde-source': // 14.6.5 <office:\n\t\t\t\tbreak;\n\n\t\t\tcase 'properties': break; // 13.7 <form:properties>\n\t\t\tcase 'property': break; // 13.8 <form:property>\n\n\t\t\tcase 'a': // 6.1.8 hyperlink\n\t\t\t\tif(Rn[1]!== '/') {\n\t\t\t\t\tatag = parsexmltag(Rn[0], false);\n\t\t\t\t\tif(!atag.href) break;\n\t\t\t\t\tatag.Target = unescapexml(atag.href); delete atag.href;\n\t\t\t\t\tif(atag.Target.charAt(0) == \"#\" && atag.Target.indexOf(\".\") > -1) {\n\t\t\t\t\t\t_Ref = ods_to_csf_3D(atag.Target.slice(1));\n\t\t\t\t\t\tatag.Target = \"#\" + _Ref[0] + \"!\" + _Ref[1];\n\t\t\t\t\t} else if(atag.Target.match(/^\\.\\.[\\\\\\/]/)) atag.Target = atag.Target.slice(3);\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\t/* non-standard */\n\t\t\tcase 'table-protection': break;\n\t\t\tcase 'data-pilot-grand-total': break; // <table:\n\t\t\tcase 'office-document-common-attrs': break; // bare\n\t\t\tdefault: switch(Rn[2]) {\n\t\t\t\tcase 'dc:':       // TODO: properties\n\t\t\t\tcase 'calcext:':  // ignore undocumented extensions\n\t\t\t\tcase 'loext:':    // ignore undocumented extensions\n\t\t\t\tcase 'ooo:':      // ignore undocumented extensions\n\t\t\t\tcase 'chartooo:': // ignore undocumented extensions\n\t\t\t\tcase 'draw:':     // TODO: drawing\n\t\t\t\tcase 'style:':    // TODO: styles\n\t\t\t\tcase 'chart:':    // TODO: charts\n\t\t\t\tcase 'form:':     // TODO: forms\n\t\t\t\tcase 'uof:':      // TODO: uof\n\t\t\t\tcase '表:':       // TODO: uof\n\t\t\t\tcase '字:':       // TODO: uof\n\t\t\t\t\tbreak;\n\t\t\t\tdefault: if(opts.WTF) throw new Error(Rn);\n\t\t\t}\n\t\t}\n\t\tvar out/*:Workbook*/ = ({\n\t\t\tSheets: Sheets,\n\t\t\tSheetNames: SheetNames,\n\t\t\tWorkbook: WB\n\t\t}/*:any*/);\n\t\tif(opts.bookSheets) delete /*::(*/out/*:: :any)*/.Sheets;\n\t\treturn out;\n}\n\nfunction parse_ods(zip/*:ZIPFile*/, opts/*:?ParseOpts*/)/*:Workbook*/ {\n\topts = opts || ({}/*:any*/);\n\tif(safegetzipfile(zip, 'META-INF/manifest.xml')) parse_manifest(getzipdata(zip, 'META-INF/manifest.xml'), opts);\n\tvar content = getzipstr(zip, 'content.xml');\n\tif(!content) throw new Error(\"Missing content.xml in ODS / UOF file\");\n\tvar wb = parse_content_xml(utf8read(content), opts);\n\tif(safegetzipfile(zip, 'meta.xml')) wb.Props = parse_core_props(getzipdata(zip, 'meta.xml'));\n\treturn wb;\n}\nfunction parse_fods(data/*:string*/, opts/*:?ParseOpts*/)/*:Workbook*/ {\n\treturn parse_content_xml(data, opts);\n}\n\n/* OpenDocument */\nvar write_styles_ods/*:{(wb:any, opts:any):string}*/ = /* @__PURE__ */(function() {\n\tvar master_styles = [\n\t\t'<office:master-styles>',\n\t\t\t'<style:master-page style:name=\"mp1\" style:page-layout-name=\"mp1\">',\n\t\t\t\t'<style:header/>',\n\t\t\t\t'<style:header-left style:display=\"false\"/>',\n\t\t\t\t'<style:footer/>',\n\t\t\t\t'<style:footer-left style:display=\"false\"/>',\n\t\t\t'</style:master-page>',\n\t\t'</office:master-styles>'\n\t].join(\"\");\n\n\tvar payload = '<office:document-styles ' + wxt_helper({\n\t\t'xmlns:office':   \"urn:oasis:names:tc:opendocument:xmlns:office:1.0\",\n\t\t'xmlns:table':    \"urn:oasis:names:tc:opendocument:xmlns:table:1.0\",\n\t\t'xmlns:style':    \"urn:oasis:names:tc:opendocument:xmlns:style:1.0\",\n\t\t'xmlns:text':     \"urn:oasis:names:tc:opendocument:xmlns:text:1.0\",\n\t\t'xmlns:draw':     \"urn:oasis:names:tc:opendocument:xmlns:drawing:1.0\",\n\t\t'xmlns:fo':       \"urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0\",\n\t\t'xmlns:xlink':    \"http://www.w3.org/1999/xlink\",\n\t\t'xmlns:dc':       \"http://purl.org/dc/elements/1.1/\",\n\t\t'xmlns:number':   \"urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0\",\n\t\t'xmlns:svg':      \"urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0\",\n\t\t'xmlns:of':       \"urn:oasis:names:tc:opendocument:xmlns:of:1.2\",\n\t\t'office:version': \"1.2\"\n\t}) + '>' + master_styles + '</office:document-styles>';\n\n\treturn function wso(/*::wb, opts*/) {\n\t\treturn XML_HEADER + payload;\n\t};\n})();\nvar write_content_ods/*:{(wb:any, opts:any):string}*/ = /* @__PURE__ */(function() {\n\t/* 6.1.2 White Space Characters */\n\tvar write_text_p = function(text/*:string*/)/*:string*/ {\n\t\treturn escapexml(text)\n\t\t\t.replace(/  +/g, function($$){return '<text:s text:c=\"'+$$.length+'\"/>';})\n\t\t\t.replace(/\\t/g, \"<text:tab/>\")\n\t\t\t.replace(/\\n/g, \"</text:p><text:p>\")\n\t\t\t.replace(/^ /, \"<text:s/>\").replace(/ $/, \"<text:s/>\");\n\t};\n\n\tvar null_cell_xml = '          <table:table-cell />\\n';\n\tvar covered_cell_xml = '          <table:covered-table-cell/>\\n';\n\tvar write_ws = function(ws, wb/*:Workbook*/, i/*:number*//*::, opts*/)/*:string*/ {\n\t\t/* Section 9 Tables */\n\t\tvar o/*:Array<string>*/ = [];\n\t\to.push('      <table:table table:name=\"' + escapexml(wb.SheetNames[i]) + '\" table:style-name=\"ta1\">\\n');\n\t\tvar R=0,C=0, range = decode_range(ws['!ref']||\"A1\");\n\t\tvar marr/*:Array<Range>*/ = ws['!merges'] || [], mi = 0;\n\t\tvar dense = Array.isArray(ws);\n\t\tif(ws[\"!cols\"]) {\n\t\t\tfor(C = 0; C <= range.e.c; ++C) o.push('        <table:table-column' + (ws[\"!cols\"][C] ? ' table:style-name=\"co' + ws[\"!cols\"][C].ods + '\"' : '') + '></table:table-column>\\n');\n\t\t}\n\t\tvar H = \"\", ROWS = ws[\"!rows\"]||[];\n\t\tfor(R = 0; R < range.s.r; ++R) {\n\t\t\tH = ROWS[R] ? ' table:style-name=\"ro' + ROWS[R].ods + '\"' : \"\";\n\t\t\to.push('        <table:table-row' + H + '></table:table-row>\\n');\n\t\t}\n\t\tfor(; R <= range.e.r; ++R) {\n\t\t\tH = ROWS[R] ? ' table:style-name=\"ro' + ROWS[R].ods + '\"' : \"\";\n\t\t\to.push('        <table:table-row' + H + '>\\n');\n\t\t\tfor(C=0; C < range.s.c; ++C) o.push(null_cell_xml);\n\t\t\tfor(; C <= range.e.c; ++C) {\n\t\t\t\tvar skip = false, ct = {}, textp = \"\";\n\t\t\t\tfor(mi = 0; mi != marr.length; ++mi) {\n\t\t\t\t\tif(marr[mi].s.c > C) continue;\n\t\t\t\t\tif(marr[mi].s.r > R) continue;\n\t\t\t\t\tif(marr[mi].e.c < C) continue;\n\t\t\t\t\tif(marr[mi].e.r < R) continue;\n\t\t\t\t\tif(marr[mi].s.c != C || marr[mi].s.r != R) skip = true;\n\t\t\t\t\tct['table:number-columns-spanned'] = (marr[mi].e.c - marr[mi].s.c + 1);\n\t\t\t\t\tct['table:number-rows-spanned'] =    (marr[mi].e.r - marr[mi].s.r + 1);\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tif(skip) { o.push(covered_cell_xml); continue; }\n\t\t\t\tvar ref = encode_cell({r:R, c:C}), cell = dense ? (ws[R]||[])[C]: ws[ref];\n\t\t\t\tif(cell && cell.f) {\n\t\t\t\t\tct['table:formula'] = escapexml(csf_to_ods_formula(cell.f));\n\t\t\t\t\tif(cell.F) {\n\t\t\t\t\t\tif(cell.F.slice(0, ref.length) == ref) {\n\t\t\t\t\t\t\tvar _Fref = decode_range(cell.F);\n\t\t\t\t\t\t\tct['table:number-matrix-columns-spanned'] = (_Fref.e.c - _Fref.s.c + 1);\n\t\t\t\t\t\t\tct['table:number-matrix-rows-spanned'] =    (_Fref.e.r - _Fref.s.r + 1);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif(!cell) { o.push(null_cell_xml); continue; }\n\t\t\t\tswitch(cell.t) {\n\t\t\t\t\tcase 'b':\n\t\t\t\t\t\ttextp = (cell.v ? 'TRUE' : 'FALSE');\n\t\t\t\t\t\tct['office:value-type'] = \"boolean\";\n\t\t\t\t\t\tct['office:boolean-value'] = (cell.v ? 'true' : 'false');\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'n':\n\t\t\t\t\t\ttextp = (cell.w||String(cell.v||0));\n\t\t\t\t\t\tct['office:value-type'] = \"float\";\n\t\t\t\t\t\tct['office:value'] = (cell.v||0);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 's': case 'str':\n\t\t\t\t\t\ttextp = cell.v == null ? \"\" : cell.v;\n\t\t\t\t\t\tct['office:value-type'] = \"string\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'd':\n\t\t\t\t\t\ttextp = (cell.w||(parseDate(cell.v).toISOString()));\n\t\t\t\t\t\tct['office:value-type'] = \"date\";\n\t\t\t\t\t\tct['office:date-value'] = (parseDate(cell.v).toISOString());\n\t\t\t\t\t\tct['table:style-name'] = \"ce1\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t//case 'e':\n\t\t\t\t\tdefault: o.push(null_cell_xml); continue;\n\t\t\t\t}\n\t\t\t\tvar text_p = write_text_p(textp);\n\t\t\t\tif(cell.l && cell.l.Target) {\n\t\t\t\t\tvar _tgt = cell.l.Target;\n\t\t\t\t\t_tgt = _tgt.charAt(0) == \"#\" ? \"#\" + csf_to_ods_3D(_tgt.slice(1)) : _tgt;\n\t\t\t\t\t// TODO: choose correct parent path format based on link delimiters\n\t\t\t\t\tif(_tgt.charAt(0) != \"#\" && !_tgt.match(/^\\w+:/)) _tgt = '../' + _tgt;\n\t\t\t\t\ttext_p = writextag('text:a', text_p, {'xlink:href': _tgt.replace(/&/g, \"&amp;\")});\n\t\t\t\t}\n\t\t\t\to.push('          ' + writextag('table:table-cell', writextag('text:p', text_p, {}), ct) + '\\n');\n\t\t\t}\n\t\t\to.push('        </table:table-row>\\n');\n\t\t}\n\t\to.push('      </table:table>\\n');\n\t\treturn o.join(\"\");\n\t};\n\n\tvar write_automatic_styles_ods = function(o/*:Array<string>*/, wb) {\n\t\to.push(' <office:automatic-styles>\\n');\n\n\t\to.push('  <number:date-style style:name=\"N37\" number:automatic-order=\"true\">\\n');\n\t\to.push('   <number:month number:style=\"long\"/>\\n');\n\t\to.push('   <number:text>/</number:text>\\n');\n\t\to.push('   <number:day number:style=\"long\"/>\\n');\n\t\to.push('   <number:text>/</number:text>\\n');\n\t\to.push('   <number:year/>\\n');\n\t\to.push('  </number:date-style>\\n');\n\n\t\t/* column styles */\n\t\tvar cidx = 0;\n\t\twb.SheetNames.map(function(n) { return wb.Sheets[n]; }).forEach(function(ws) {\n\t\t\tif(!ws) return;\n\t\t\tif(ws[\"!cols\"]) {\n\t\t\t\tfor(var C = 0; C < ws[\"!cols\"].length; ++C) if(ws[\"!cols\"][C]) {\n\t\t\t\t\tvar colobj = ws[\"!cols\"][C];\n\t\t\t\t\tif(colobj.width == null && colobj.wpx == null && colobj.wch == null) continue;\n\t\t\t\t\tprocess_col(colobj);\n\t\t\t\t\tcolobj.ods = cidx;\n\t\t\t\t\tvar w = ws[\"!cols\"][C].wpx + \"px\";\n\t\t\t\t\to.push('  <style:style style:name=\"co' + cidx + '\" style:family=\"table-column\">\\n');\n\t\t\t\t\to.push('   <style:table-column-properties fo:break-before=\"auto\" style:column-width=\"' + w + '\"/>\\n');\n\t\t\t\t\to.push('  </style:style>\\n');\n\t\t\t\t\t++cidx;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\t/* row styles */\n\t\tvar ridx = 0;\n\t\twb.SheetNames.map(function(n) { return wb.Sheets[n]; }).forEach(function(ws) {\n\t\t\tif(!ws) return;\n\t\t\tif(ws[\"!rows\"]) {\n\t\t\t\tfor(var R = 0; R < ws[\"!rows\"].length; ++R) if(ws[\"!rows\"][R]) {\n\t\t\t\t\tws[\"!rows\"][R].ods = ridx;\n\t\t\t\t\tvar h = ws[\"!rows\"][R].hpx + \"px\";\n\t\t\t\t\to.push('  <style:style style:name=\"ro' + ridx + '\" style:family=\"table-row\">\\n');\n\t\t\t\t\to.push('   <style:table-row-properties fo:break-before=\"auto\" style:row-height=\"' + h + '\"/>\\n');\n\t\t\t\t\to.push('  </style:style>\\n');\n\t\t\t\t\t++ridx;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\t/* table */\n\t\to.push('  <style:style style:name=\"ta1\" style:family=\"table\" style:master-page-name=\"mp1\">\\n');\n\t\to.push('   <style:table-properties table:display=\"true\" style:writing-mode=\"lr-tb\"/>\\n');\n\t\to.push('  </style:style>\\n');\n\n\t\t/* table cells, text */\n\t\to.push('  <style:style style:name=\"ce1\" style:family=\"table-cell\" style:parent-style-name=\"Default\" style:data-style-name=\"N37\"/>\\n');\n\n\t\t/* page-layout */\n\n\t\to.push(' </office:automatic-styles>\\n');\n\t};\n\n\treturn function wcx(wb, opts) {\n\t\tvar o = [XML_HEADER];\n\t\t/* 3.1.3.2 */\n\t\tvar attr = wxt_helper({\n\t\t\t'xmlns:office':       \"urn:oasis:names:tc:opendocument:xmlns:office:1.0\",\n\t\t\t'xmlns:table':        \"urn:oasis:names:tc:opendocument:xmlns:table:1.0\",\n\t\t\t'xmlns:style':        \"urn:oasis:names:tc:opendocument:xmlns:style:1.0\",\n\t\t\t'xmlns:text':         \"urn:oasis:names:tc:opendocument:xmlns:text:1.0\",\n\t\t\t'xmlns:draw':         \"urn:oasis:names:tc:opendocument:xmlns:drawing:1.0\",\n\t\t\t'xmlns:fo':           \"urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0\",\n\t\t\t'xmlns:xlink':        \"http://www.w3.org/1999/xlink\",\n\t\t\t'xmlns:dc':           \"http://purl.org/dc/elements/1.1/\",\n\t\t\t'xmlns:meta':         \"urn:oasis:names:tc:opendocument:xmlns:meta:1.0\",\n\t\t\t'xmlns:number':       \"urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0\",\n\t\t\t'xmlns:presentation': \"urn:oasis:names:tc:opendocument:xmlns:presentation:1.0\",\n\t\t\t'xmlns:svg':          \"urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0\",\n\t\t\t'xmlns:chart':        \"urn:oasis:names:tc:opendocument:xmlns:chart:1.0\",\n\t\t\t'xmlns:dr3d':         \"urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0\",\n\t\t\t'xmlns:math':         \"http://www.w3.org/1998/Math/MathML\",\n\t\t\t'xmlns:form':         \"urn:oasis:names:tc:opendocument:xmlns:form:1.0\",\n\t\t\t'xmlns:script':       \"urn:oasis:names:tc:opendocument:xmlns:script:1.0\",\n\t\t\t'xmlns:ooo':          \"http://openoffice.org/2004/office\",\n\t\t\t'xmlns:ooow':         \"http://openoffice.org/2004/writer\",\n\t\t\t'xmlns:oooc':         \"http://openoffice.org/2004/calc\",\n\t\t\t'xmlns:dom':          \"http://www.w3.org/2001/xml-events\",\n\t\t\t'xmlns:xforms':       \"http://www.w3.org/2002/xforms\",\n\t\t\t'xmlns:xsd':          \"http://www.w3.org/2001/XMLSchema\",\n\t\t\t'xmlns:xsi':          \"http://www.w3.org/2001/XMLSchema-instance\",\n\t\t\t'xmlns:sheet':        \"urn:oasis:names:tc:opendocument:sh33tjs:1.0\",\n\t\t\t'xmlns:rpt':          \"http://openoffice.org/2005/report\",\n\t\t\t'xmlns:of':           \"urn:oasis:names:tc:opendocument:xmlns:of:1.2\",\n\t\t\t'xmlns:xhtml':        \"http://www.w3.org/1999/xhtml\",\n\t\t\t'xmlns:grddl':        \"http://www.w3.org/2003/g/data-view#\",\n\t\t\t'xmlns:tableooo':     \"http://openoffice.org/2009/table\",\n\t\t\t'xmlns:drawooo':      \"http://openoffice.org/2010/draw\",\n\t\t\t'xmlns:calcext':      \"urn:org:documentfoundation:names:experimental:calc:xmlns:calcext:1.0\",\n\t\t\t'xmlns:loext':        \"urn:org:documentfoundation:names:experimental:office:xmlns:loext:1.0\",\n\t\t\t'xmlns:field':        \"urn:openoffice:names:experimental:ooo-ms-interop:xmlns:field:1.0\",\n\t\t\t'xmlns:formx':        \"urn:openoffice:names:experimental:ooxml-odf-interop:xmlns:form:1.0\",\n\t\t\t'xmlns:css3t':        \"http://www.w3.org/TR/css3-text/\",\n\t\t\t'office:version':     \"1.2\"\n\t\t});\n\n\t\tvar fods = wxt_helper({\n\t\t\t'xmlns:config':    \"urn:oasis:names:tc:opendocument:xmlns:config:1.0\",\n\t\t\t'office:mimetype': \"application/vnd.oasis.opendocument.spreadsheet\"\n\t\t});\n\n\t\tif(opts.bookType == \"fods\") {\n\t\t\to.push('<office:document' + attr + fods + '>\\n');\n\t\t\to.push(write_meta_ods().replace(/office:document-meta/g, \"office:meta\"));\n\t\t\t// TODO: settings (equiv of settings.xml for ODS)\n\t\t} else o.push('<office:document-content' + attr  + '>\\n');\n\t\t// o.push('  <office:scripts/>\\n');\n\t\twrite_automatic_styles_ods(o, wb);\n\t\to.push('  <office:body>\\n');\n\t\to.push('    <office:spreadsheet>\\n');\n\t\tfor(var i = 0; i != wb.SheetNames.length; ++i) o.push(write_ws(wb.Sheets[wb.SheetNames[i]], wb, i, opts));\n\t\to.push('    </office:spreadsheet>\\n');\n\t\to.push('  </office:body>\\n');\n\t\tif(opts.bookType == \"fods\") o.push('</office:document>');\n\t\telse o.push('</office:document-content>');\n\t\treturn o.join(\"\");\n\t};\n})();\n\nfunction write_ods(wb/*:any*/, opts/*:any*/) {\n\tif(opts.bookType == \"fods\") return write_content_ods(wb, opts);\n\n\tvar zip = zip_new();\n\tvar f = \"\";\n\n\tvar manifest/*:Array<Array<string> >*/ = [];\n\tvar rdf/*:Array<[string, string]>*/ = [];\n\n\t/* Part 3 Section 3.3 MIME Media Type */\n\tf = \"mimetype\";\n\tzip_add_file(zip, f, \"application/vnd.oasis.opendocument.spreadsheet\");\n\n\t/* Part 1 Section 2.2 Documents */\n\tf = \"content.xml\";\n\tzip_add_file(zip, f, write_content_ods(wb, opts));\n\tmanifest.push([f, \"text/xml\"]);\n\trdf.push([f, \"ContentFile\"]);\n\n\t/* TODO: these are hard-coded styles to satiate excel */\n\tf = \"styles.xml\";\n\tzip_add_file(zip, f, write_styles_ods(wb, opts));\n\tmanifest.push([f, \"text/xml\"]);\n\trdf.push([f, \"StylesFile\"]);\n\n\t/* TODO: this is hard-coded to satiate excel */\n\tf = \"meta.xml\";\n\tzip_add_file(zip, f, XML_HEADER + write_meta_ods(/*::wb, opts*/));\n\tmanifest.push([f, \"text/xml\"]);\n\trdf.push([f, \"MetadataFile\"]);\n\n\t/* Part 3 Section 6 Metadata Manifest File */\n\tf = \"manifest.rdf\";\n\tzip_add_file(zip, f, write_rdf(rdf/*, opts*/));\n\tmanifest.push([f, \"application/rdf+xml\"]);\n\n\t/* Part 3 Section 4 Manifest File */\n\tf = \"META-INF/manifest.xml\";\n\tzip_add_file(zip, f, write_manifest(manifest/*, opts*/));\n\n\treturn zip;\n}\n\n/*! sheetjs (C) 2013-present SheetJS -- http://sheetjs.com */\nfunction u8_to_dataview(array) {\n  return new DataView(array.buffer, array.byteOffset, array.byteLength);\n}\nfunction u8str(u8) {\n  return typeof TextDecoder != \"undefined\" ? new TextDecoder().decode(u8) : utf8read(a2s(u8));\n}\nfunction stru8(str) {\n  return typeof TextEncoder != \"undefined\" ? new TextEncoder().encode(str) : s2a(utf8write(str));\n}\nfunction u8contains(body, search) {\n  outer:\n    for (var L = 0; L <= body.length - search.length; ++L) {\n      for (var j = 0; j < search.length; ++j)\n        if (body[L + j] != search[j])\n          continue outer;\n      return true;\n    }\n  return false;\n}\nfunction u8concat(u8a) {\n  var len = u8a.reduce(function(acc, x) {\n    return acc + x.length;\n  }, 0);\n  var out = new Uint8Array(len);\n  var off = 0;\n  u8a.forEach(function(u8) {\n    out.set(u8, off);\n    off += u8.length;\n  });\n  return out;\n}\nfunction popcnt(x) {\n  x -= x >> 1 & 1431655765;\n  x = (x & 858993459) + (x >> 2 & 858993459);\n  return (x + (x >> 4) & 252645135) * 16843009 >>> 24;\n}\nfunction readDecimal128LE(buf, offset) {\n  var exp = (buf[offset + 15] & 127) << 7 | buf[offset + 14] >> 1;\n  var mantissa = buf[offset + 14] & 1;\n  for (var j = offset + 13; j >= offset; --j)\n    mantissa = mantissa * 256 + buf[j];\n  return (buf[offset + 15] & 128 ? -mantissa : mantissa) * Math.pow(10, exp - 6176);\n}\nfunction writeDecimal128LE(buf, offset, value) {\n  var exp = Math.floor(value == 0 ? 0 : Math.LOG10E * Math.log(Math.abs(value))) + 6176 - 20;\n  var mantissa = value / Math.pow(10, exp - 6176);\n  buf[offset + 15] |= exp >> 7;\n  buf[offset + 14] |= (exp & 127) << 1;\n  for (var i = 0; mantissa >= 1; ++i, mantissa /= 256)\n    buf[offset + i] = mantissa & 255;\n  buf[offset + 15] |= value >= 0 ? 0 : 128;\n}\nfunction parse_varint49(buf, ptr) {\n  var l = ptr ? ptr[0] : 0;\n  var usz = buf[l] & 127;\n  varint:\n    if (buf[l++] >= 128) {\n      usz |= (buf[l] & 127) << 7;\n      if (buf[l++] < 128)\n        break varint;\n      usz |= (buf[l] & 127) << 14;\n      if (buf[l++] < 128)\n        break varint;\n      usz |= (buf[l] & 127) << 21;\n      if (buf[l++] < 128)\n        break varint;\n      usz += (buf[l] & 127) * Math.pow(2, 28);\n      ++l;\n      if (buf[l++] < 128)\n        break varint;\n      usz += (buf[l] & 127) * Math.pow(2, 35);\n      ++l;\n      if (buf[l++] < 128)\n        break varint;\n      usz += (buf[l] & 127) * Math.pow(2, 42);\n      ++l;\n      if (buf[l++] < 128)\n        break varint;\n    }\n  if (ptr)\n    ptr[0] = l;\n  return usz;\n}\nfunction write_varint49(v) {\n  var usz = new Uint8Array(7);\n  usz[0] = v & 127;\n  var L = 1;\n  sz:\n    if (v > 127) {\n      usz[L - 1] |= 128;\n      usz[L] = v >> 7 & 127;\n      ++L;\n      if (v <= 16383)\n        break sz;\n      usz[L - 1] |= 128;\n      usz[L] = v >> 14 & 127;\n      ++L;\n      if (v <= 2097151)\n        break sz;\n      usz[L - 1] |= 128;\n      usz[L] = v >> 21 & 127;\n      ++L;\n      if (v <= 268435455)\n        break sz;\n      usz[L - 1] |= 128;\n      usz[L] = v / 256 >>> 21 & 127;\n      ++L;\n      if (v <= 34359738367)\n        break sz;\n      usz[L - 1] |= 128;\n      usz[L] = v / 65536 >>> 21 & 127;\n      ++L;\n      if (v <= 4398046511103)\n        break sz;\n      usz[L - 1] |= 128;\n      usz[L] = v / 16777216 >>> 21 & 127;\n      ++L;\n    }\n  return usz.slice(0, L);\n}\nfunction varint_to_i32(buf) {\n  var l = 0, i32 = buf[l] & 127;\n  varint:\n    if (buf[l++] >= 128) {\n      i32 |= (buf[l] & 127) << 7;\n      if (buf[l++] < 128)\n        break varint;\n      i32 |= (buf[l] & 127) << 14;\n      if (buf[l++] < 128)\n        break varint;\n      i32 |= (buf[l] & 127) << 21;\n      if (buf[l++] < 128)\n        break varint;\n      i32 |= (buf[l] & 127) << 28;\n    }\n  return i32;\n}\nfunction parse_shallow(buf) {\n  var out = [], ptr = [0];\n  while (ptr[0] < buf.length) {\n    var off = ptr[0];\n    var num = parse_varint49(buf, ptr);\n    var type = num & 7;\n    num = Math.floor(num / 8);\n    var len = 0;\n    var res;\n    if (num == 0)\n      break;\n    switch (type) {\n      case 0:\n        {\n          var l = ptr[0];\n          while (buf[ptr[0]++] >= 128)\n            ;\n          res = buf.slice(l, ptr[0]);\n        }\n        break;\n      case 5:\n        len = 4;\n        res = buf.slice(ptr[0], ptr[0] + len);\n        ptr[0] += len;\n        break;\n      case 1:\n        len = 8;\n        res = buf.slice(ptr[0], ptr[0] + len);\n        ptr[0] += len;\n        break;\n      case 2:\n        len = parse_varint49(buf, ptr);\n        res = buf.slice(ptr[0], ptr[0] + len);\n        ptr[0] += len;\n        break;\n      case 3:\n      case 4:\n      default:\n        throw new Error(\"PB Type \".concat(type, \" for Field \").concat(num, \" at offset \").concat(off));\n    }\n    var v = { data: res, type: type };\n    if (out[num] == null)\n      out[num] = [v];\n    else\n      out[num].push(v);\n  }\n  return out;\n}\nfunction write_shallow(proto) {\n  var out = [];\n  proto.forEach(function(field, idx) {\n    field.forEach(function(item) {\n      if (!item.data)\n        return;\n      out.push(write_varint49(idx * 8 + item.type));\n      if (item.type == 2)\n        out.push(write_varint49(item.data.length));\n      out.push(item.data);\n    });\n  });\n  return u8concat(out);\n}\nfunction mappa(data, cb) {\n  return (data == null ? void 0 : data.map(function(d) {\n    return cb(d.data);\n  })) || [];\n}\nfunction parse_iwa_file(buf) {\n  var _a;\n  var out = [], ptr = [0];\n  while (ptr[0] < buf.length) {\n    var len = parse_varint49(buf, ptr);\n    var ai = parse_shallow(buf.slice(ptr[0], ptr[0] + len));\n    ptr[0] += len;\n    var res = {\n      id: varint_to_i32(ai[1][0].data),\n      messages: []\n    };\n    ai[2].forEach(function(b) {\n      var mi = parse_shallow(b.data);\n      var fl = varint_to_i32(mi[3][0].data);\n      res.messages.push({\n        meta: mi,\n        data: buf.slice(ptr[0], ptr[0] + fl)\n      });\n      ptr[0] += fl;\n    });\n    if ((_a = ai[3]) == null ? void 0 : _a[0])\n      res.merge = varint_to_i32(ai[3][0].data) >>> 0 > 0;\n    out.push(res);\n  }\n  return out;\n}\nfunction write_iwa_file(ias) {\n  var bufs = [];\n  ias.forEach(function(ia) {\n    var ai = [];\n    ai[1] = [{ data: write_varint49(ia.id), type: 0 }];\n    ai[2] = [];\n    if (ia.merge != null)\n      ai[3] = [{ data: write_varint49(+!!ia.merge), type: 0 }];\n    var midata = [];\n    ia.messages.forEach(function(mi) {\n      midata.push(mi.data);\n      mi.meta[3] = [{ type: 0, data: write_varint49(mi.data.length) }];\n      ai[2].push({ data: write_shallow(mi.meta), type: 2 });\n    });\n    var aipayload = write_shallow(ai);\n    bufs.push(write_varint49(aipayload.length));\n    bufs.push(aipayload);\n    midata.forEach(function(mid) {\n      return bufs.push(mid);\n    });\n  });\n  return u8concat(bufs);\n}\nfunction parse_snappy_chunk(type, buf) {\n  if (type != 0)\n    throw new Error(\"Unexpected Snappy chunk type \".concat(type));\n  var ptr = [0];\n  var usz = parse_varint49(buf, ptr);\n  var chunks = [];\n  while (ptr[0] < buf.length) {\n    var tag = buf[ptr[0]] & 3;\n    if (tag == 0) {\n      var len = buf[ptr[0]++] >> 2;\n      if (len < 60)\n        ++len;\n      else {\n        var c = len - 59;\n        len = buf[ptr[0]];\n        if (c > 1)\n          len |= buf[ptr[0] + 1] << 8;\n        if (c > 2)\n          len |= buf[ptr[0] + 2] << 16;\n        if (c > 3)\n          len |= buf[ptr[0] + 3] << 24;\n        len >>>= 0;\n        len++;\n        ptr[0] += c;\n      }\n      chunks.push(buf.slice(ptr[0], ptr[0] + len));\n      ptr[0] += len;\n      continue;\n    } else {\n      var offset = 0, length = 0;\n      if (tag == 1) {\n        length = (buf[ptr[0]] >> 2 & 7) + 4;\n        offset = (buf[ptr[0]++] & 224) << 3;\n        offset |= buf[ptr[0]++];\n      } else {\n        length = (buf[ptr[0]++] >> 2) + 1;\n        if (tag == 2) {\n          offset = buf[ptr[0]] | buf[ptr[0] + 1] << 8;\n          ptr[0] += 2;\n        } else {\n          offset = (buf[ptr[0]] | buf[ptr[0] + 1] << 8 | buf[ptr[0] + 2] << 16 | buf[ptr[0] + 3] << 24) >>> 0;\n          ptr[0] += 4;\n        }\n      }\n      chunks = [u8concat(chunks)];\n      if (offset == 0)\n        throw new Error(\"Invalid offset 0\");\n      if (offset > chunks[0].length)\n        throw new Error(\"Invalid offset beyond length\");\n      if (length >= offset) {\n        chunks.push(chunks[0].slice(-offset));\n        length -= offset;\n        while (length >= chunks[chunks.length - 1].length) {\n          chunks.push(chunks[chunks.length - 1]);\n          length -= chunks[chunks.length - 1].length;\n        }\n      }\n      chunks.push(chunks[0].slice(-offset, -offset + length));\n    }\n  }\n  var o = u8concat(chunks);\n  if (o.length != usz)\n    throw new Error(\"Unexpected length: \".concat(o.length, \" != \").concat(usz));\n  return o;\n}\nfunction decompress_iwa_file(buf) {\n  var out = [];\n  var l = 0;\n  while (l < buf.length) {\n    var t = buf[l++];\n    var len = buf[l] | buf[l + 1] << 8 | buf[l + 2] << 16;\n    l += 3;\n    out.push(parse_snappy_chunk(t, buf.slice(l, l + len)));\n    l += len;\n  }\n  if (l !== buf.length)\n    throw new Error(\"data is not a valid framed stream!\");\n  return u8concat(out);\n}\nfunction compress_iwa_file(buf) {\n  var out = [];\n  var l = 0;\n  while (l < buf.length) {\n    var c = Math.min(buf.length - l, 268435455);\n    var frame = new Uint8Array(4);\n    out.push(frame);\n    var usz = write_varint49(c);\n    var L = usz.length;\n    out.push(usz);\n    if (c <= 60) {\n      L++;\n      out.push(new Uint8Array([c - 1 << 2]));\n    } else if (c <= 256) {\n      L += 2;\n      out.push(new Uint8Array([240, c - 1 & 255]));\n    } else if (c <= 65536) {\n      L += 3;\n      out.push(new Uint8Array([244, c - 1 & 255, c - 1 >> 8 & 255]));\n    } else if (c <= 16777216) {\n      L += 4;\n      out.push(new Uint8Array([248, c - 1 & 255, c - 1 >> 8 & 255, c - 1 >> 16 & 255]));\n    } else if (c <= 4294967296) {\n      L += 5;\n      out.push(new Uint8Array([252, c - 1 & 255, c - 1 >> 8 & 255, c - 1 >> 16 & 255, c - 1 >>> 24 & 255]));\n    }\n    out.push(buf.slice(l, l + c));\n    L += c;\n    frame[0] = 0;\n    frame[1] = L & 255;\n    frame[2] = L >> 8 & 255;\n    frame[3] = L >> 16 & 255;\n    l += c;\n  }\n  return u8concat(out);\n}\nfunction parse_old_storage(buf, sst, rsst, v) {\n  var dv = u8_to_dataview(buf);\n  var flags = dv.getUint32(4, true);\n  var data_offset = (v > 1 ? 12 : 8) + popcnt(flags & (v > 1 ? 3470 : 398)) * 4;\n  var ridx = -1, sidx = -1, ieee = NaN, dt = new Date(2001, 0, 1);\n  if (flags & 512) {\n    ridx = dv.getUint32(data_offset, true);\n    data_offset += 4;\n  }\n  data_offset += popcnt(flags & (v > 1 ? 12288 : 4096)) * 4;\n  if (flags & 16) {\n    sidx = dv.getUint32(data_offset, true);\n    data_offset += 4;\n  }\n  if (flags & 32) {\n    ieee = dv.getFloat64(data_offset, true);\n    data_offset += 8;\n  }\n  if (flags & 64) {\n    dt.setTime(dt.getTime() + dv.getFloat64(data_offset, true) * 1e3);\n    data_offset += 8;\n  }\n  var ret;\n  switch (buf[2]) {\n    case 0:\n      break;\n    case 2:\n      ret = { t: \"n\", v: ieee };\n      break;\n    case 3:\n      ret = { t: \"s\", v: sst[sidx] };\n      break;\n    case 5:\n      ret = { t: \"d\", v: dt };\n      break;\n    case 6:\n      ret = { t: \"b\", v: ieee > 0 };\n      break;\n    case 7:\n      ret = { t: \"n\", v: ieee / 86400 };\n      break;\n    case 8:\n      ret = { t: \"e\", v: 0 };\n      break;\n    case 9:\n      {\n        if (ridx > -1)\n          ret = { t: \"s\", v: rsst[ridx] };\n        else if (sidx > -1)\n          ret = { t: \"s\", v: sst[sidx] };\n        else if (!isNaN(ieee))\n          ret = { t: \"n\", v: ieee };\n        else\n          throw new Error(\"Unsupported cell type \".concat(buf.slice(0, 4)));\n      }\n      break;\n    default:\n      throw new Error(\"Unsupported cell type \".concat(buf.slice(0, 4)));\n  }\n  return ret;\n}\nfunction parse_new_storage(buf, sst, rsst) {\n  var dv = u8_to_dataview(buf);\n  var flags = dv.getUint32(8, true);\n  var data_offset = 12;\n  var ridx = -1, sidx = -1, d128 = NaN, ieee = NaN, dt = new Date(2001, 0, 1);\n  if (flags & 1) {\n    d128 = readDecimal128LE(buf, data_offset);\n    data_offset += 16;\n  }\n  if (flags & 2) {\n    ieee = dv.getFloat64(data_offset, true);\n    data_offset += 8;\n  }\n  if (flags & 4) {\n    dt.setTime(dt.getTime() + dv.getFloat64(data_offset, true) * 1e3);\n    data_offset += 8;\n  }\n  if (flags & 8) {\n    sidx = dv.getUint32(data_offset, true);\n    data_offset += 4;\n  }\n  if (flags & 16) {\n    ridx = dv.getUint32(data_offset, true);\n    data_offset += 4;\n  }\n  var ret;\n  switch (buf[1]) {\n    case 0:\n      break;\n    case 2:\n      ret = { t: \"n\", v: d128 };\n      break;\n    case 3:\n      ret = { t: \"s\", v: sst[sidx] };\n      break;\n    case 5:\n      ret = { t: \"d\", v: dt };\n      break;\n    case 6:\n      ret = { t: \"b\", v: ieee > 0 };\n      break;\n    case 7:\n      ret = { t: \"n\", v: ieee / 86400 };\n      break;\n    case 8:\n      ret = { t: \"e\", v: 0 };\n      break;\n    case 9:\n      {\n        if (ridx > -1)\n          ret = { t: \"s\", v: rsst[ridx] };\n        else\n          throw new Error(\"Unsupported cell type \".concat(buf[1], \" : \").concat(flags & 31, \" : \").concat(buf.slice(0, 4)));\n      }\n      break;\n    case 10:\n      ret = { t: \"n\", v: d128 };\n      break;\n    default:\n      throw new Error(\"Unsupported cell type \".concat(buf[1], \" : \").concat(flags & 31, \" : \").concat(buf.slice(0, 4)));\n  }\n  return ret;\n}\nfunction write_new_storage(cell, sst) {\n  var out = new Uint8Array(32), dv = u8_to_dataview(out), l = 12, flags = 0;\n  out[0] = 5;\n  switch (cell.t) {\n    case \"n\":\n      out[1] = 2;\n      writeDecimal128LE(out, l, cell.v);\n      flags |= 1;\n      l += 16;\n      break;\n    case \"b\":\n      out[1] = 6;\n      dv.setFloat64(l, cell.v ? 1 : 0, true);\n      flags |= 2;\n      l += 8;\n      break;\n    case \"s\":\n      if (sst.indexOf(cell.v) == -1)\n        throw new Error(\"Value \".concat(cell.v, \" missing from SST!\"));\n      out[1] = 3;\n      dv.setUint32(l, sst.indexOf(cell.v), true);\n      flags |= 8;\n      l += 4;\n      break;\n    default:\n      throw \"unsupported cell type \" + cell.t;\n  }\n  dv.setUint32(8, flags, true);\n  return out.slice(0, l);\n}\nfunction write_old_storage(cell, sst) {\n  var out = new Uint8Array(32), dv = u8_to_dataview(out), l = 12, flags = 0;\n  out[0] = 3;\n  switch (cell.t) {\n    case \"n\":\n      out[2] = 2;\n      dv.setFloat64(l, cell.v, true);\n      flags |= 32;\n      l += 8;\n      break;\n    case \"b\":\n      out[2] = 6;\n      dv.setFloat64(l, cell.v ? 1 : 0, true);\n      flags |= 32;\n      l += 8;\n      break;\n    case \"s\":\n      if (sst.indexOf(cell.v) == -1)\n        throw new Error(\"Value \".concat(cell.v, \" missing from SST!\"));\n      out[2] = 3;\n      dv.setUint32(l, sst.indexOf(cell.v), true);\n      flags |= 16;\n      l += 4;\n      break;\n    default:\n      throw \"unsupported cell type \" + cell.t;\n  }\n  dv.setUint32(4, flags, true);\n  return out.slice(0, l);\n}\nfunction parse_cell_storage(buf, sst, rsst) {\n  switch (buf[0]) {\n    case 0:\n    case 1:\n    case 2:\n    case 3:\n      return parse_old_storage(buf, sst, rsst, buf[0]);\n    case 5:\n      return parse_new_storage(buf, sst, rsst);\n    default:\n      throw new Error(\"Unsupported payload version \".concat(buf[0]));\n  }\n}\nfunction parse_TSP_Reference(buf) {\n  var pb = parse_shallow(buf);\n  return parse_varint49(pb[1][0].data);\n}\nfunction write_TSP_Reference(idx) {\n  var out = [];\n  out[1] = [{ type: 0, data: write_varint49(idx) }];\n  return write_shallow(out);\n}\nfunction parse_TST_TableDataList(M, root) {\n  var pb = parse_shallow(root.data);\n  var type = varint_to_i32(pb[1][0].data);\n  var entries = pb[3];\n  var data = [];\n  (entries || []).forEach(function(entry) {\n    var le = parse_shallow(entry.data);\n    var key = varint_to_i32(le[1][0].data) >>> 0;\n    switch (type) {\n      case 1:\n        data[key] = u8str(le[3][0].data);\n        break;\n      case 8:\n        {\n          var rt = M[parse_TSP_Reference(le[9][0].data)][0];\n          var rtp = parse_shallow(rt.data);\n          var rtpref = M[parse_TSP_Reference(rtp[1][0].data)][0];\n          var mtype = varint_to_i32(rtpref.meta[1][0].data);\n          if (mtype != 2001)\n            throw new Error(\"2000 unexpected reference to \".concat(mtype));\n          var tswpsa = parse_shallow(rtpref.data);\n          data[key] = tswpsa[3].map(function(x) {\n            return u8str(x.data);\n          }).join(\"\");\n        }\n        break;\n    }\n  });\n  return data;\n}\nfunction parse_TST_TileRowInfo(u8, type) {\n  var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n;\n  var pb = parse_shallow(u8);\n  var R = varint_to_i32(pb[1][0].data) >>> 0;\n  var cnt = varint_to_i32(pb[2][0].data) >>> 0;\n  var wide_offsets = ((_b = (_a = pb[8]) == null ? void 0 : _a[0]) == null ? void 0 : _b.data) && varint_to_i32(pb[8][0].data) > 0 || false;\n  var used_storage_u8, used_storage;\n  if (((_d = (_c = pb[7]) == null ? void 0 : _c[0]) == null ? void 0 : _d.data) && type != 0) {\n    used_storage_u8 = (_f = (_e = pb[7]) == null ? void 0 : _e[0]) == null ? void 0 : _f.data;\n    used_storage = (_h = (_g = pb[6]) == null ? void 0 : _g[0]) == null ? void 0 : _h.data;\n  } else if (((_j = (_i = pb[4]) == null ? void 0 : _i[0]) == null ? void 0 : _j.data) && type != 1) {\n    used_storage_u8 = (_l = (_k = pb[4]) == null ? void 0 : _k[0]) == null ? void 0 : _l.data;\n    used_storage = (_n = (_m = pb[3]) == null ? void 0 : _m[0]) == null ? void 0 : _n.data;\n  } else\n    throw \"NUMBERS Tile missing \".concat(type, \" cell storage\");\n  var width = wide_offsets ? 4 : 1;\n  var used_storage_offsets = u8_to_dataview(used_storage_u8);\n  var offsets = [];\n  for (var C = 0; C < used_storage_u8.length / 2; ++C) {\n    var off = used_storage_offsets.getUint16(C * 2, true);\n    if (off < 65535)\n      offsets.push([C, off]);\n  }\n  if (offsets.length != cnt)\n    throw \"Expected \".concat(cnt, \" cells, found \").concat(offsets.length);\n  var cells = [];\n  for (C = 0; C < offsets.length - 1; ++C)\n    cells[offsets[C][0]] = used_storage.subarray(offsets[C][1] * width, offsets[C + 1][1] * width);\n  if (offsets.length >= 1)\n    cells[offsets[offsets.length - 1][0]] = used_storage.subarray(offsets[offsets.length - 1][1] * width);\n  return { R: R, cells: cells };\n}\nfunction parse_TST_Tile(M, root) {\n  var _a;\n  var pb = parse_shallow(root.data);\n  var storage = ((_a = pb == null ? void 0 : pb[7]) == null ? void 0 : _a[0]) ? varint_to_i32(pb[7][0].data) >>> 0 > 0 ? 1 : 0 : -1;\n  var ri = mappa(pb[5], function(u8) {\n    return parse_TST_TileRowInfo(u8, storage);\n  });\n  return {\n    nrows: varint_to_i32(pb[4][0].data) >>> 0,\n    data: ri.reduce(function(acc, x) {\n      if (!acc[x.R])\n        acc[x.R] = [];\n      x.cells.forEach(function(cell, C) {\n        if (acc[x.R][C])\n          throw new Error(\"Duplicate cell r=\".concat(x.R, \" c=\").concat(C));\n        acc[x.R][C] = cell;\n      });\n      return acc;\n    }, [])\n  };\n}\nfunction parse_TST_TableModelArchive(M, root, ws) {\n  var _a;\n  var pb = parse_shallow(root.data);\n  var range = { s: { r: 0, c: 0 }, e: { r: 0, c: 0 } };\n  range.e.r = (varint_to_i32(pb[6][0].data) >>> 0) - 1;\n  if (range.e.r < 0)\n    throw new Error(\"Invalid row varint \".concat(pb[6][0].data));\n  range.e.c = (varint_to_i32(pb[7][0].data) >>> 0) - 1;\n  if (range.e.c < 0)\n    throw new Error(\"Invalid col varint \".concat(pb[7][0].data));\n  ws[\"!ref\"] = encode_range(range);\n  var store = parse_shallow(pb[4][0].data);\n  var sst = parse_TST_TableDataList(M, M[parse_TSP_Reference(store[4][0].data)][0]);\n  var rsst = ((_a = store[17]) == null ? void 0 : _a[0]) ? parse_TST_TableDataList(M, M[parse_TSP_Reference(store[17][0].data)][0]) : [];\n  var tile = parse_shallow(store[3][0].data);\n  var _R = 0;\n  tile[1].forEach(function(t) {\n    var tl = parse_shallow(t.data);\n    var ref = M[parse_TSP_Reference(tl[2][0].data)][0];\n    var mtype = varint_to_i32(ref.meta[1][0].data);\n    if (mtype != 6002)\n      throw new Error(\"6001 unexpected reference to \".concat(mtype));\n    var _tile = parse_TST_Tile(M, ref);\n    _tile.data.forEach(function(row, R) {\n      row.forEach(function(buf, C) {\n        var addr = encode_cell({ r: _R + R, c: C });\n        var res = parse_cell_storage(buf, sst, rsst);\n        if (res)\n          ws[addr] = res;\n      });\n    });\n    _R += _tile.nrows;\n  });\n}\nfunction parse_TST_TableInfoArchive(M, root) {\n  var pb = parse_shallow(root.data);\n  var out = { \"!ref\": \"A1\" };\n  var tableref = M[parse_TSP_Reference(pb[2][0].data)];\n  var mtype = varint_to_i32(tableref[0].meta[1][0].data);\n  if (mtype != 6001)\n    throw new Error(\"6000 unexpected reference to \".concat(mtype));\n  parse_TST_TableModelArchive(M, tableref[0], out);\n  return out;\n}\nfunction parse_TN_SheetArchive(M, root) {\n  var _a;\n  var pb = parse_shallow(root.data);\n  var out = {\n    name: ((_a = pb[1]) == null ? void 0 : _a[0]) ? u8str(pb[1][0].data) : \"\",\n    sheets: []\n  };\n  var shapeoffs = mappa(pb[2], parse_TSP_Reference);\n  shapeoffs.forEach(function(off) {\n    M[off].forEach(function(m) {\n      var mtype = varint_to_i32(m.meta[1][0].data);\n      if (mtype == 6e3)\n        out.sheets.push(parse_TST_TableInfoArchive(M, m));\n    });\n  });\n  return out;\n}\nfunction parse_TN_DocumentArchive(M, root) {\n  var out = book_new();\n  var pb = parse_shallow(root.data);\n  var sheetoffs = mappa(pb[1], parse_TSP_Reference);\n  sheetoffs.forEach(function(off) {\n    M[off].forEach(function(m) {\n      var mtype = varint_to_i32(m.meta[1][0].data);\n      if (mtype == 2) {\n        var root2 = parse_TN_SheetArchive(M, m);\n        root2.sheets.forEach(function(sheet, idx) {\n          book_append_sheet(out, sheet, idx == 0 ? root2.name : root2.name + \"_\" + idx, true);\n        });\n      }\n    });\n  });\n  if (out.SheetNames.length == 0)\n    throw new Error(\"Empty NUMBERS file\");\n  return out;\n}\nfunction parse_numbers_iwa(cfb) {\n  var _a, _b, _c, _d;\n  var M = {}, indices = [];\n  cfb.FullPaths.forEach(function(p) {\n    if (p.match(/\\.iwpv2/))\n      throw new Error(\"Unsupported password protection\");\n  });\n  cfb.FileIndex.forEach(function(s) {\n    if (!s.name.match(/\\.iwa$/))\n      return;\n    var o;\n    try {\n      o = decompress_iwa_file(s.content);\n    } catch (e) {\n      return console.log(\"?? \" + s.content.length + \" \" + (e.message || e));\n    }\n    var packets;\n    try {\n      packets = parse_iwa_file(o);\n    } catch (e) {\n      return console.log(\"## \" + (e.message || e));\n    }\n    packets.forEach(function(packet) {\n      M[packet.id] = packet.messages;\n      indices.push(packet.id);\n    });\n  });\n  if (!indices.length)\n    throw new Error(\"File has no messages\");\n  var docroot = ((_d = (_c = (_b = (_a = M == null ? void 0 : M[1]) == null ? void 0 : _a[0]) == null ? void 0 : _b.meta) == null ? void 0 : _c[1]) == null ? void 0 : _d[0].data) && varint_to_i32(M[1][0].meta[1][0].data) == 1 && M[1][0];\n  if (!docroot)\n    indices.forEach(function(idx) {\n      M[idx].forEach(function(iwam) {\n        var mtype = varint_to_i32(iwam.meta[1][0].data) >>> 0;\n        if (mtype == 1) {\n          if (!docroot)\n            docroot = iwam;\n          else\n            throw new Error(\"Document has multiple roots\");\n        }\n      });\n    });\n  if (!docroot)\n    throw new Error(\"Cannot find Document root\");\n  return parse_TN_DocumentArchive(M, docroot);\n}\nfunction write_tile_row(tri, data, SST) {\n  var _a, _b, _c, _d;\n  if (!((_a = tri[6]) == null ? void 0 : _a[0]) || !((_b = tri[7]) == null ? void 0 : _b[0]))\n    throw \"Mutation only works on post-BNC storages!\";\n  var wide_offsets = ((_d = (_c = tri[8]) == null ? void 0 : _c[0]) == null ? void 0 : _d.data) && varint_to_i32(tri[8][0].data) > 0 || false;\n  if (wide_offsets)\n    throw \"Math only works with normal offsets\";\n  var cnt = 0;\n  var dv = u8_to_dataview(tri[7][0].data), last_offset = 0, cell_storage = [];\n  var _dv = u8_to_dataview(tri[4][0].data), _last_offset = 0, _cell_storage = [];\n  for (var C = 0; C < data.length; ++C) {\n    if (data[C] == null) {\n      dv.setUint16(C * 2, 65535, true);\n      _dv.setUint16(C * 2, 65535);\n      continue;\n    }\n    dv.setUint16(C * 2, last_offset, true);\n    _dv.setUint16(C * 2, _last_offset, true);\n    var celload, _celload;\n    switch (typeof data[C]) {\n      case \"string\":\n        celload = write_new_storage({ t: \"s\", v: data[C] }, SST);\n        _celload = write_old_storage({ t: \"s\", v: data[C] }, SST);\n        break;\n      case \"number\":\n        celload = write_new_storage({ t: \"n\", v: data[C] }, SST);\n        _celload = write_old_storage({ t: \"n\", v: data[C] }, SST);\n        break;\n      case \"boolean\":\n        celload = write_new_storage({ t: \"b\", v: data[C] }, SST);\n        _celload = write_old_storage({ t: \"b\", v: data[C] }, SST);\n        break;\n      default:\n        throw new Error(\"Unsupported value \" + data[C]);\n    }\n    cell_storage.push(celload);\n    last_offset += celload.length;\n    _cell_storage.push(_celload);\n    _last_offset += _celload.length;\n    ++cnt;\n  }\n  tri[2][0].data = write_varint49(cnt);\n  for (; C < tri[7][0].data.length / 2; ++C) {\n    dv.setUint16(C * 2, 65535, true);\n    _dv.setUint16(C * 2, 65535, true);\n  }\n  tri[6][0].data = u8concat(cell_storage);\n  tri[3][0].data = u8concat(_cell_storage);\n  return cnt;\n}\nfunction write_numbers_iwa(wb, opts) {\n  if (!opts || !opts.numbers)\n    throw new Error(\"Must pass a `numbers` option -- check the README\");\n  var ws = wb.Sheets[wb.SheetNames[0]];\n  if (wb.SheetNames.length > 1)\n    console.error(\"The Numbers writer currently writes only the first table\");\n  var range = decode_range(ws[\"!ref\"]);\n  range.s.r = range.s.c = 0;\n  var trunc = false;\n  if (range.e.c > 9) {\n    trunc = true;\n    range.e.c = 9;\n  }\n  if (range.e.r > 49) {\n    trunc = true;\n    range.e.r = 49;\n  }\n  if (trunc)\n    console.error(\"The Numbers writer is currently limited to \".concat(encode_range(range)));\n  var data = sheet_to_json(ws, { range: range, header: 1 });\n  var SST = [\"~Sh33tJ5~\"];\n  data.forEach(function(row) {\n    return row.forEach(function(cell) {\n      if (typeof cell == \"string\")\n        SST.push(cell);\n    });\n  });\n  var dependents = {};\n  var indices = [];\n  var cfb = CFB.read(opts.numbers, { type: \"base64\" });\n  cfb.FileIndex.map(function(fi, idx) {\n    return [fi, cfb.FullPaths[idx]];\n  }).forEach(function(row) {\n    var fi = row[0], fp = row[1];\n    if (fi.type != 2)\n      return;\n    if (!fi.name.match(/\\.iwa/))\n      return;\n    var old_content = fi.content;\n    var raw1 = decompress_iwa_file(old_content);\n    var x2 = parse_iwa_file(raw1);\n    x2.forEach(function(packet2) {\n      indices.push(packet2.id);\n      dependents[packet2.id] = { deps: [], location: fp, type: varint_to_i32(packet2.messages[0].meta[1][0].data) };\n    });\n  });\n  indices.sort(function(x2, y2) {\n    return x2 - y2;\n  });\n  var indices_varint = indices.filter(function(x2) {\n    return x2 > 1;\n  }).map(function(x2) {\n    return [x2, write_varint49(x2)];\n  });\n  cfb.FileIndex.map(function(fi, idx) {\n    return [fi, cfb.FullPaths[idx]];\n  }).forEach(function(row) {\n    var fi = row[0], fp = row[1];\n    if (!fi.name.match(/\\.iwa/))\n      return;\n    var x2 = parse_iwa_file(decompress_iwa_file(fi.content));\n    x2.forEach(function(ia) {\n      ia.messages.forEach(function(m) {\n        indices_varint.forEach(function(ivi) {\n          if (ia.messages.some(function(mess) {\n            return varint_to_i32(mess.meta[1][0].data) != 11006 && u8contains(mess.data, ivi[1]);\n          })) {\n            dependents[ivi[0]].deps.push(ia.id);\n          }\n        });\n      });\n    });\n  });\n  function get_unique_msgid() {\n    for (var i = 927262; i < 2e6; ++i)\n      if (!dependents[i])\n        return i;\n    throw new Error(\"Too many messages\");\n  }\n  var entry = CFB.find(cfb, dependents[1].location);\n  var x = parse_iwa_file(decompress_iwa_file(entry.content));\n  var docroot;\n  for (var xi = 0; xi < x.length; ++xi) {\n    var packet = x[xi];\n    if (packet.id == 1)\n      docroot = packet;\n  }\n  var sheetrootref = parse_TSP_Reference(parse_shallow(docroot.messages[0].data)[1][0].data);\n  entry = CFB.find(cfb, dependents[sheetrootref].location);\n  x = parse_iwa_file(decompress_iwa_file(entry.content));\n  for (xi = 0; xi < x.length; ++xi) {\n    packet = x[xi];\n    if (packet.id == sheetrootref)\n      docroot = packet;\n  }\n  sheetrootref = parse_TSP_Reference(parse_shallow(docroot.messages[0].data)[2][0].data);\n  entry = CFB.find(cfb, dependents[sheetrootref].location);\n  x = parse_iwa_file(decompress_iwa_file(entry.content));\n  for (xi = 0; xi < x.length; ++xi) {\n    packet = x[xi];\n    if (packet.id == sheetrootref)\n      docroot = packet;\n  }\n  sheetrootref = parse_TSP_Reference(parse_shallow(docroot.messages[0].data)[2][0].data);\n  entry = CFB.find(cfb, dependents[sheetrootref].location);\n  x = parse_iwa_file(decompress_iwa_file(entry.content));\n  for (xi = 0; xi < x.length; ++xi) {\n    packet = x[xi];\n    if (packet.id == sheetrootref)\n      docroot = packet;\n  }\n  var pb = parse_shallow(docroot.messages[0].data);\n  {\n    pb[6][0].data = write_varint49(range.e.r + 1);\n    pb[7][0].data = write_varint49(range.e.c + 1);\n    var cruidsref = parse_TSP_Reference(pb[46][0].data);\n    var oldbucket = CFB.find(cfb, dependents[cruidsref].location);\n    var _x = parse_iwa_file(decompress_iwa_file(oldbucket.content));\n    {\n      for (var j = 0; j < _x.length; ++j) {\n        if (_x[j].id == cruidsref)\n          break;\n      }\n      if (_x[j].id != cruidsref)\n        throw \"Bad ColumnRowUIDMapArchive\";\n      var cruids = parse_shallow(_x[j].messages[0].data);\n      cruids[1] = [];\n      cruids[2] = [], cruids[3] = [];\n      for (var C = 0; C <= range.e.c; ++C) {\n        var uuid = [];\n        uuid[1] = uuid[2] = [{ type: 0, data: write_varint49(C + 420690) }];\n        cruids[1].push({ type: 2, data: write_shallow(uuid) });\n        cruids[2].push({ type: 0, data: write_varint49(C) });\n        cruids[3].push({ type: 0, data: write_varint49(C) });\n      }\n      cruids[4] = [];\n      cruids[5] = [], cruids[6] = [];\n      for (var R = 0; R <= range.e.r; ++R) {\n        uuid = [];\n        uuid[1] = uuid[2] = [{ type: 0, data: write_varint49(R + 726270) }];\n        cruids[4].push({ type: 2, data: write_shallow(uuid) });\n        cruids[5].push({ type: 0, data: write_varint49(R) });\n        cruids[6].push({ type: 0, data: write_varint49(R) });\n      }\n      _x[j].messages[0].data = write_shallow(cruids);\n    }\n    oldbucket.content = compress_iwa_file(write_iwa_file(_x));\n    oldbucket.size = oldbucket.content.length;\n    delete pb[46];\n    var store = parse_shallow(pb[4][0].data);\n    {\n      store[7][0].data = write_varint49(range.e.r + 1);\n      var row_headers = parse_shallow(store[1][0].data);\n      var row_header_ref = parse_TSP_Reference(row_headers[2][0].data);\n      oldbucket = CFB.find(cfb, dependents[row_header_ref].location);\n      _x = parse_iwa_file(decompress_iwa_file(oldbucket.content));\n      {\n        if (_x[0].id != row_header_ref)\n          throw \"Bad HeaderStorageBucket\";\n        var base_bucket = parse_shallow(_x[0].messages[0].data);\n        for (R = 0; R < data.length; ++R) {\n          var _bucket = parse_shallow(base_bucket[2][0].data);\n          _bucket[1][0].data = write_varint49(R);\n          _bucket[4][0].data = write_varint49(data[R].length);\n          base_bucket[2][R] = { type: base_bucket[2][0].type, data: write_shallow(_bucket) };\n        }\n        _x[0].messages[0].data = write_shallow(base_bucket);\n      }\n      oldbucket.content = compress_iwa_file(write_iwa_file(_x));\n      oldbucket.size = oldbucket.content.length;\n      var col_header_ref = parse_TSP_Reference(store[2][0].data);\n      oldbucket = CFB.find(cfb, dependents[col_header_ref].location);\n      _x = parse_iwa_file(decompress_iwa_file(oldbucket.content));\n      {\n        if (_x[0].id != col_header_ref)\n          throw \"Bad HeaderStorageBucket\";\n        base_bucket = parse_shallow(_x[0].messages[0].data);\n        for (C = 0; C <= range.e.c; ++C) {\n          _bucket = parse_shallow(base_bucket[2][0].data);\n          _bucket[1][0].data = write_varint49(C);\n          _bucket[4][0].data = write_varint49(range.e.r + 1);\n          base_bucket[2][C] = { type: base_bucket[2][0].type, data: write_shallow(_bucket) };\n        }\n        _x[0].messages[0].data = write_shallow(base_bucket);\n      }\n      oldbucket.content = compress_iwa_file(write_iwa_file(_x));\n      oldbucket.size = oldbucket.content.length;\n      var sstref = parse_TSP_Reference(store[4][0].data);\n      (function() {\n        var sentry = CFB.find(cfb, dependents[sstref].location);\n        var sx = parse_iwa_file(decompress_iwa_file(sentry.content));\n        var sstroot;\n        for (var sxi = 0; sxi < sx.length; ++sxi) {\n          var packet2 = sx[sxi];\n          if (packet2.id == sstref)\n            sstroot = packet2;\n        }\n        var sstdata = parse_shallow(sstroot.messages[0].data);\n        {\n          sstdata[3] = [];\n          var newsst = [];\n          SST.forEach(function(str, i) {\n            newsst[1] = [{ type: 0, data: write_varint49(i) }];\n            newsst[2] = [{ type: 0, data: write_varint49(1) }];\n            newsst[3] = [{ type: 2, data: stru8(str) }];\n            sstdata[3].push({ type: 2, data: write_shallow(newsst) });\n          });\n        }\n        sstroot.messages[0].data = write_shallow(sstdata);\n        var sy = write_iwa_file(sx);\n        var raw32 = compress_iwa_file(sy);\n        sentry.content = raw32;\n        sentry.size = sentry.content.length;\n      })();\n      var tile = parse_shallow(store[3][0].data);\n      {\n        var t = tile[1][0];\n        delete tile[2];\n        var tl = parse_shallow(t.data);\n        {\n          var tileref = parse_TSP_Reference(tl[2][0].data);\n          (function() {\n            var tentry = CFB.find(cfb, dependents[tileref].location);\n            var tx = parse_iwa_file(decompress_iwa_file(tentry.content));\n            var tileroot;\n            for (var sxi = 0; sxi < tx.length; ++sxi) {\n              var packet2 = tx[sxi];\n              if (packet2.id == tileref)\n                tileroot = packet2;\n            }\n            var tiledata = parse_shallow(tileroot.messages[0].data);\n            {\n              delete tiledata[6];\n              delete tile[7];\n              var rowload = new Uint8Array(tiledata[5][0].data);\n              tiledata[5] = [];\n              var cnt = 0;\n              for (var R2 = 0; R2 <= range.e.r; ++R2) {\n                var tilerow = parse_shallow(rowload);\n                cnt += write_tile_row(tilerow, data[R2], SST);\n                tilerow[1][0].data = write_varint49(R2);\n                tiledata[5].push({ data: write_shallow(tilerow), type: 2 });\n              }\n              tiledata[1] = [{ type: 0, data: write_varint49(range.e.c + 1) }];\n              tiledata[2] = [{ type: 0, data: write_varint49(range.e.r + 1) }];\n              tiledata[3] = [{ type: 0, data: write_varint49(cnt) }];\n              tiledata[4] = [{ type: 0, data: write_varint49(range.e.r + 1) }];\n            }\n            tileroot.messages[0].data = write_shallow(tiledata);\n            var ty = write_iwa_file(tx);\n            var raw32 = compress_iwa_file(ty);\n            tentry.content = raw32;\n            tentry.size = tentry.content.length;\n          })();\n        }\n        t.data = write_shallow(tl);\n      }\n      store[3][0].data = write_shallow(tile);\n    }\n    pb[4][0].data = write_shallow(store);\n  }\n  docroot.messages[0].data = write_shallow(pb);\n  var y = write_iwa_file(x);\n  var raw3 = compress_iwa_file(y);\n  entry.content = raw3;\n  entry.size = entry.content.length;\n  return cfb;\n}\nfunction fix_opts_func(defaults/*:Array<Array<any> >*/)/*:{(o:any):void}*/ {\n\treturn function fix_opts(opts) {\n\t\tfor(var i = 0; i != defaults.length; ++i) {\n\t\t\tvar d = defaults[i];\n\t\t\tif(opts[d[0]] === undefined) opts[d[0]] = d[1];\n\t\t\tif(d[2] === 'n') opts[d[0]] = Number(opts[d[0]]);\n\t\t}\n\t};\n}\n\nfunction fix_read_opts(opts) {\nfix_opts_func([\n\t['cellNF', false], /* emit cell number format string as .z */\n\t['cellHTML', true], /* emit html string as .h */\n\t['cellFormula', true], /* emit formulae as .f */\n\t['cellStyles', false], /* emits style/theme as .s */\n\t['cellText', true], /* emit formatted text as .w */\n\t['cellDates', false], /* emit date cells with type `d` */\n\n\t['sheetStubs', false], /* emit empty cells */\n\t['sheetRows', 0, 'n'], /* read n rows (0 = read all rows) */\n\n\t['bookDeps', false], /* parse calculation chains */\n\t['bookSheets', false], /* only try to get sheet names (no Sheets) */\n\t['bookProps', false], /* only try to get properties (no Sheets) */\n\t['bookFiles', false], /* include raw file structure (keys, files, cfb) */\n\t['bookVBA', false], /* include vba raw data (vbaraw) */\n\n\t['password',''], /* password */\n\t['WTF', false] /* WTF mode (throws errors) */\n])(opts);\n}\n\nfunction fix_write_opts(opts) {\nfix_opts_func([\n\t['cellDates', false], /* write date cells with type `d` */\n\n\t['bookSST', false], /* Generate Shared String Table */\n\n\t['bookType', 'xlsx'], /* Type of workbook (xlsx/m/b) */\n\n\t['compression', false], /* Use file compression */\n\n\t['WTF', false] /* WTF mode (throws errors) */\n])(opts);\n}\nfunction get_sheet_type(n/*:string*/)/*:string*/ {\n\tif(RELS.WS.indexOf(n) > -1) return \"sheet\";\n\tif(RELS.CS && n == RELS.CS) return \"chart\";\n\tif(RELS.DS && n == RELS.DS) return \"dialog\";\n\tif(RELS.MS && n == RELS.MS) return \"macro\";\n\treturn (n && n.length) ? n : \"sheet\";\n}\nfunction safe_parse_wbrels(wbrels, sheets) {\n\tif(!wbrels) return 0;\n\ttry {\n\t\twbrels = sheets.map(function pwbr(w) { if(!w.id) w.id = w.strRelID; return [w.name, wbrels['!id'][w.id].Target, get_sheet_type(wbrels['!id'][w.id].Type)]; });\n\t} catch(e) { return null; }\n\treturn !wbrels || wbrels.length === 0 ? null : wbrels;\n}\n\nfunction safe_parse_sheet(zip, path/*:string*/, relsPath/*:string*/, sheet, idx/*:number*/, sheetRels, sheets, stype/*:string*/, opts, wb, themes, styles) {\n\ttry {\n\t\tsheetRels[sheet]=parse_rels(getzipstr(zip, relsPath, true), path);\n\t\tvar data = getzipdata(zip, path);\n\t\tvar _ws;\n\t\tswitch(stype) {\n\t\t\tcase 'sheet':  _ws = parse_ws(data, path, idx, opts, sheetRels[sheet], wb, themes, styles); break;\n\t\t\tcase 'chart':  _ws = parse_cs(data, path, idx, opts, sheetRels[sheet], wb, themes, styles);\n\t\t\t\tif(!_ws || !_ws['!drawel']) break;\n\t\t\t\tvar dfile = resolve_path(_ws['!drawel'].Target, path);\n\t\t\t\tvar drelsp = get_rels_path(dfile);\n\t\t\t\tvar draw = parse_drawing(getzipstr(zip, dfile, true), parse_rels(getzipstr(zip, drelsp, true), dfile));\n\t\t\t\tvar chartp = resolve_path(draw, dfile);\n\t\t\t\tvar crelsp = get_rels_path(chartp);\n\t\t\t\t_ws = parse_chart(getzipstr(zip, chartp, true), chartp, opts, parse_rels(getzipstr(zip, crelsp, true), chartp), wb, _ws);\n\t\t\t\tbreak;\n\t\t\tcase 'macro':  _ws = parse_ms(data, path, idx, opts, sheetRels[sheet], wb, themes, styles); break;\n\t\t\tcase 'dialog': _ws = parse_ds(data, path, idx, opts, sheetRels[sheet], wb, themes, styles); break;\n\t\t\tdefault: throw new Error(\"Unrecognized sheet type \" + stype);\n\t\t}\n\t\tsheets[sheet] = _ws;\n\n\t\t/* scan rels for comments and threaded comments */\n\t\tvar tcomments = [];\n\t\tif(sheetRels && sheetRels[sheet]) keys(sheetRels[sheet]).forEach(function(n) {\n\t\t\tvar dfile = \"\";\n\t\t\tif(sheetRels[sheet][n].Type == RELS.CMNT) {\n\t\t\t\tdfile = resolve_path(sheetRels[sheet][n].Target, path);\n\t\t\t\tvar comments = parse_cmnt(getzipdata(zip, dfile, true), dfile, opts);\n\t\t\t\tif(!comments || !comments.length) return;\n\t\t\t\tsheet_insert_comments(_ws, comments, false);\n\t\t\t}\n\t\t\tif(sheetRels[sheet][n].Type == RELS.TCMNT) {\n\t\t\t\tdfile = resolve_path(sheetRels[sheet][n].Target, path);\n\t\t\t\ttcomments = tcomments.concat(parse_tcmnt_xml(getzipdata(zip, dfile, true), opts));\n\t\t\t}\n\t\t});\n\t\tif(tcomments && tcomments.length) sheet_insert_comments(_ws, tcomments, true, opts.people || []);\n\t} catch(e) { if(opts.WTF) throw e; }\n}\n\nfunction strip_front_slash(x/*:string*/)/*:string*/ { return x.charAt(0) == '/' ? x.slice(1) : x; }\n\nfunction parse_zip(zip/*:ZIP*/, opts/*:?ParseOpts*/)/*:Workbook*/ {\n\tmake_ssf();\n\topts = opts || {};\n\tfix_read_opts(opts);\n\n\t/* OpenDocument Part 3 Section 2.2.1 OpenDocument Package */\n\tif(safegetzipfile(zip, 'META-INF/manifest.xml')) return parse_ods(zip, opts);\n\t/* UOC */\n\tif(safegetzipfile(zip, 'objectdata.xml')) return parse_ods(zip, opts);\n\t/* Numbers */\n\tif(safegetzipfile(zip, 'Index/Document.iwa')) {\n\t\tif(typeof Uint8Array == \"undefined\") throw new Error('NUMBERS file parsing requires Uint8Array support');\n\t\tif(typeof parse_numbers_iwa != \"undefined\") {\n\t\t\tif(zip.FileIndex) return parse_numbers_iwa(zip);\n\t\t\tvar _zip = CFB.utils.cfb_new();\n\t\t\tzipentries(zip).forEach(function(e) { zip_add_file(_zip, e, getzipbin(zip, e)); });\n\t\t\treturn parse_numbers_iwa(_zip);\n\t\t}\n\t\tthrow new Error('Unsupported NUMBERS file');\n\t}\n\tif(!safegetzipfile(zip, '[Content_Types].xml')) {\n\t\tif(safegetzipfile(zip, 'index.xml.gz')) throw new Error('Unsupported NUMBERS 08 file');\n\t\tif(safegetzipfile(zip, 'index.xml')) throw new Error('Unsupported NUMBERS 09 file');\n\t\tthrow new Error('Unsupported ZIP file');\n\t}\n\n\tvar entries = zipentries(zip);\n\tvar dir = parse_ct((getzipstr(zip, '[Content_Types].xml')/*:?any*/));\n\tvar xlsb = false;\n\tvar sheets, binname;\n\tif(dir.workbooks.length === 0) {\n\t\tbinname = \"xl/workbook.xml\";\n\t\tif(getzipdata(zip,binname, true)) dir.workbooks.push(binname);\n\t}\n\tif(dir.workbooks.length === 0) {\n\t\tbinname = \"xl/workbook.bin\";\n\t\tif(!getzipdata(zip,binname,true)) throw new Error(\"Could not find workbook\");\n\t\tdir.workbooks.push(binname);\n\t\txlsb = true;\n\t}\n\tif(dir.workbooks[0].slice(-3) == \"bin\") xlsb = true;\n\n\tvar themes = ({}/*:any*/);\n\tvar styles = ({}/*:any*/);\n\tif(!opts.bookSheets && !opts.bookProps) {\n\t\tstrs = [];\n\t\tif(dir.sst) try { strs=parse_sst(getzipdata(zip, strip_front_slash(dir.sst)), dir.sst, opts); } catch(e) { if(opts.WTF) throw e; }\n\n\t\tif(opts.cellStyles && dir.themes.length) themes = parse_theme(getzipstr(zip, dir.themes[0].replace(/^\\//,''), true)||\"\",dir.themes[0], opts);\n\n\t\tif(dir.style) styles = parse_sty(getzipdata(zip, strip_front_slash(dir.style)), dir.style, themes, opts);\n\t}\n\n\t/*var externbooks = */dir.links.map(function(link) {\n\t\ttry {\n\t\t\tvar rels = parse_rels(getzipstr(zip, get_rels_path(strip_front_slash(link))), link);\n\t\t\treturn parse_xlink(getzipdata(zip, strip_front_slash(link)), rels, link, opts);\n\t\t} catch(e) {}\n\t});\n\n\tvar wb = parse_wb(getzipdata(zip, strip_front_slash(dir.workbooks[0])), dir.workbooks[0], opts);\n\n\tvar props = {}, propdata = \"\";\n\n\tif(dir.coreprops.length) {\n\t\tpropdata = getzipdata(zip, strip_front_slash(dir.coreprops[0]), true);\n\t\tif(propdata) props = parse_core_props(propdata);\n\t\tif(dir.extprops.length !== 0) {\n\t\t\tpropdata = getzipdata(zip, strip_front_slash(dir.extprops[0]), true);\n\t\t\tif(propdata) parse_ext_props(propdata, props, opts);\n\t\t}\n\t}\n\n\tvar custprops = {};\n\tif(!opts.bookSheets || opts.bookProps) {\n\t\tif (dir.custprops.length !== 0) {\n\t\t\tpropdata = getzipstr(zip, strip_front_slash(dir.custprops[0]), true);\n\t\t\tif(propdata) custprops = parse_cust_props(propdata, opts);\n\t\t}\n\t}\n\n\tvar out = ({}/*:any*/);\n\tif(opts.bookSheets || opts.bookProps) {\n\t\tif(wb.Sheets) sheets = wb.Sheets.map(function pluck(x){ return x.name; });\n\t\telse if(props.Worksheets && props.SheetNames.length > 0) sheets=props.SheetNames;\n\t\tif(opts.bookProps) { out.Props = props; out.Custprops = custprops; }\n\t\tif(opts.bookSheets && typeof sheets !== 'undefined') out.SheetNames = sheets;\n\t\tif(opts.bookSheets ? out.SheetNames : opts.bookProps) return out;\n\t}\n\tsheets = {};\n\n\tvar deps = {};\n\tif(opts.bookDeps && dir.calcchain) deps=parse_cc(getzipdata(zip, strip_front_slash(dir.calcchain)),dir.calcchain,opts);\n\n\tvar i=0;\n\tvar sheetRels = ({}/*:any*/);\n\tvar path, relsPath;\n\n\t{\n\t\tvar wbsheets = wb.Sheets;\n\t\tprops.Worksheets = wbsheets.length;\n\t\tprops.SheetNames = [];\n\t\tfor(var j = 0; j != wbsheets.length; ++j) {\n\t\t\tprops.SheetNames[j] = wbsheets[j].name;\n\t\t}\n\t}\n\n\tvar wbext = xlsb ? \"bin\" : \"xml\";\n\tvar wbrelsi = dir.workbooks[0].lastIndexOf(\"/\");\n\tvar wbrelsfile = (dir.workbooks[0].slice(0, wbrelsi+1) + \"_rels/\" + dir.workbooks[0].slice(wbrelsi+1) + \".rels\").replace(/^\\//,\"\");\n\tif(!safegetzipfile(zip, wbrelsfile)) wbrelsfile = 'xl/_rels/workbook.' + wbext + '.rels';\n\tvar wbrels = parse_rels(getzipstr(zip, wbrelsfile, true), wbrelsfile.replace(/_rels.*/, \"s5s\"));\n\n\tif((dir.metadata || []).length >= 1) {\n\t\t/* TODO: MDX and other types of metadata */\n\t\topts.xlmeta = parse_xlmeta(getzipdata(zip, strip_front_slash(dir.metadata[0])),dir.metadata[0],opts);\n\t}\n\n\tif((dir.people || []).length >= 1) {\n\t\topts.people = parse_people_xml(getzipdata(zip, strip_front_slash(dir.people[0])),opts);\n\t}\n\n\tif(wbrels) wbrels = safe_parse_wbrels(wbrels, wb.Sheets);\n\n\t/* Numbers iOS hack */\n\tvar nmode = (getzipdata(zip,\"xl/worksheets/sheet.xml\",true))?1:0;\n\twsloop: for(i = 0; i != props.Worksheets; ++i) {\n\t\tvar stype = \"sheet\";\n\t\tif(wbrels && wbrels[i]) {\n\t\t\tpath = 'xl/' + (wbrels[i][1]).replace(/[\\/]?xl\\//, \"\");\n\t\t\tif(!safegetzipfile(zip, path)) path = wbrels[i][1];\n\t\t\tif(!safegetzipfile(zip, path)) path = wbrelsfile.replace(/_rels\\/.*$/,\"\") + wbrels[i][1];\n\t\t\tstype = wbrels[i][2];\n\t\t} else {\n\t\t\tpath = 'xl/worksheets/sheet'+(i+1-nmode)+\".\" + wbext;\n\t\t\tpath = path.replace(/sheet0\\./,\"sheet.\");\n\t\t}\n\t\trelsPath = path.replace(/^(.*)(\\/)([^\\/]*)$/, \"$1/_rels/$3.rels\");\n\t\tif(opts && opts.sheets != null) switch(typeof opts.sheets) {\n\t\t\tcase \"number\": if(i != opts.sheets) continue wsloop; break;\n\t\t\tcase \"string\": if(props.SheetNames[i].toLowerCase() != opts.sheets.toLowerCase()) continue wsloop; break;\n\t\t\tdefault: if(Array.isArray && Array.isArray(opts.sheets)) {\n\t\t\t\tvar snjseen = false;\n\t\t\t\tfor(var snj = 0; snj != opts.sheets.length; ++snj) {\n\t\t\t\t\tif(typeof opts.sheets[snj] == \"number\" && opts.sheets[snj] == i) snjseen=1;\n\t\t\t\t\tif(typeof opts.sheets[snj] == \"string\" && opts.sheets[snj].toLowerCase() == props.SheetNames[i].toLowerCase()) snjseen = 1;\n\t\t\t\t}\n\t\t\t\tif(!snjseen) continue wsloop;\n\t\t\t}\n\t\t}\n\t\tsafe_parse_sheet(zip, path, relsPath, props.SheetNames[i], i, sheetRels, sheets, stype, opts, wb, themes, styles);\n\t}\n\n\tout = ({\n\t\tDirectory: dir,\n\t\tWorkbook: wb,\n\t\tProps: props,\n\t\tCustprops: custprops,\n\t\tDeps: deps,\n\t\tSheets: sheets,\n\t\tSheetNames: props.SheetNames,\n\t\tStrings: strs,\n\t\tStyles: styles,\n\t\tThemes: themes,\n\t\tSSF: dup(table_fmt)\n\t}/*:any*/);\n\tif(opts && opts.bookFiles) {\n\t\tif(zip.files) {\n\t\t\tout.keys = entries;\n\t\t\tout.files = zip.files;\n\t\t} else {\n\t\t\tout.keys = [];\n\t\t\tout.files = {};\n\t\t\tzip.FullPaths.forEach(function(p, idx) {\n\t\t\t\tp = p.replace(/^Root Entry[\\/]/, \"\");\n\t\t\t\tout.keys.push(p);\n\t\t\t\tout.files[p] = zip.FileIndex[idx];\n\t\t\t});\n\t\t}\n\t}\n\tif(opts && opts.bookVBA) {\n\t\tif(dir.vba.length > 0) out.vbaraw = getzipdata(zip,strip_front_slash(dir.vba[0]),true);\n\t\telse if(dir.defaults && dir.defaults.bin === CT_VBA) out.vbaraw = getzipdata(zip, 'xl/vbaProject.bin',true);\n\t}\n\treturn out;\n}\n\n/* [MS-OFFCRYPTO] 2.1.1 */\nfunction parse_xlsxcfb(cfb, _opts/*:?ParseOpts*/)/*:Workbook*/ {\n\tvar opts = _opts || {};\n\tvar f = 'Workbook', data = CFB.find(cfb, f);\n\ttry {\n\tf = '/!DataSpaces/Version';\n\tdata = CFB.find(cfb, f); if(!data || !data.content) throw new Error(\"ECMA-376 Encrypted file missing \" + f);\n\t/*var version = */parse_DataSpaceVersionInfo(data.content);\n\n\t/* 2.3.4.1 */\n\tf = '/!DataSpaces/DataSpaceMap';\n\tdata = CFB.find(cfb, f); if(!data || !data.content) throw new Error(\"ECMA-376 Encrypted file missing \" + f);\n\tvar dsm = parse_DataSpaceMap(data.content);\n\tif(dsm.length !== 1 || dsm[0].comps.length !== 1 || dsm[0].comps[0].t !== 0 || dsm[0].name !== \"StrongEncryptionDataSpace\" || dsm[0].comps[0].v !== \"EncryptedPackage\")\n\t\tthrow new Error(\"ECMA-376 Encrypted file bad \" + f);\n\n\t/* 2.3.4.2 */\n\tf = '/!DataSpaces/DataSpaceInfo/StrongEncryptionDataSpace';\n\tdata = CFB.find(cfb, f); if(!data || !data.content) throw new Error(\"ECMA-376 Encrypted file missing \" + f);\n\tvar seds = parse_DataSpaceDefinition(data.content);\n\tif(seds.length != 1 || seds[0] != \"StrongEncryptionTransform\")\n\t\tthrow new Error(\"ECMA-376 Encrypted file bad \" + f);\n\n\t/* 2.3.4.3 */\n\tf = '/!DataSpaces/TransformInfo/StrongEncryptionTransform/!Primary';\n\tdata = CFB.find(cfb, f); if(!data || !data.content) throw new Error(\"ECMA-376 Encrypted file missing \" + f);\n\t/*var hdr = */parse_Primary(data.content);\n\t} catch(e) {}\n\n\tf = '/EncryptionInfo';\n\tdata = CFB.find(cfb, f); if(!data || !data.content) throw new Error(\"ECMA-376 Encrypted file missing \" + f);\n\tvar einfo = parse_EncryptionInfo(data.content);\n\n\t/* 2.3.4.4 */\n\tf = '/EncryptedPackage';\n\tdata = CFB.find(cfb, f); if(!data || !data.content) throw new Error(\"ECMA-376 Encrypted file missing \" + f);\n\n/*global decrypt_agile */\n/*:: declare var decrypt_agile:any; */\n\tif(einfo[0] == 0x04 && typeof decrypt_agile !== 'undefined') return decrypt_agile(einfo[1], data.content, opts.password || \"\", opts);\n/*global decrypt_std76 */\n/*:: declare var decrypt_std76:any; */\n\tif(einfo[0] == 0x02 && typeof decrypt_std76 !== 'undefined') return decrypt_std76(einfo[1], data.content, opts.password || \"\", opts);\n\tthrow new Error(\"File is password-protected\");\n}\n\nfunction write_zip(wb/*:Workbook*/, opts/*:WriteOpts*/)/*:ZIP*/ {\n\tif(opts.bookType == \"ods\") return write_ods(wb, opts);\n\tif(opts.bookType == \"numbers\") return write_numbers_iwa(wb, opts);\n\tif(opts.bookType == \"xlsb\") return write_zip_xlsxb(wb, opts);\n\treturn write_zip_xlsx(wb, opts);\n}\n\n/* XLSX and XLSB writing are very similar.  Originally they were unified in one\n   export function.  This is horrible for tree shaking in the common case (most\n   applications need to export files in one format) so this function supports\n   both formats while write_zip_xlsx only handles XLSX */\nfunction write_zip_xlsxb(wb/*:Workbook*/, opts/*:WriteOpts*/)/*:ZIP*/ {\n\t_shapeid = 1024;\n\tif(wb && !wb.SSF) {\n\t\twb.SSF = dup(table_fmt);\n\t}\n\tif(wb && wb.SSF) {\n\t\tmake_ssf(); SSF_load_table(wb.SSF);\n\t\t// $FlowIgnore\n\t\topts.revssf = evert_num(wb.SSF); opts.revssf[wb.SSF[65535]] = 0;\n\t\topts.ssf = wb.SSF;\n\t}\n\topts.rels = {}; opts.wbrels = {};\n\topts.Strings = /*::((*/[]/*:: :any):SST)*/; opts.Strings.Count = 0; opts.Strings.Unique = 0;\n\tif(browser_has_Map) opts.revStrings = new Map();\n\telse { opts.revStrings = {}; opts.revStrings.foo = []; delete opts.revStrings.foo; }\n\tvar wbext = opts.bookType == \"xlsb\" ? \"bin\" : \"xml\";\n\tvar vbafmt = VBAFMTS.indexOf(opts.bookType) > -1;\n\tvar ct = new_ct();\n\tfix_write_opts(opts = opts || {});\n\tvar zip = zip_new();\n\tvar f = \"\", rId = 0;\n\n\topts.cellXfs = [];\n\tget_cell_style(opts.cellXfs, {}, {revssf:{\"General\":0}});\n\n\tif(!wb.Props) wb.Props = {};\n\n\tf = \"docProps/core.xml\";\n\tzip_add_file(zip, f, write_core_props(wb.Props, opts));\n\tct.coreprops.push(f);\n\tadd_rels(opts.rels, 2, f, RELS.CORE_PROPS);\n\n\t/*::if(!wb.Props) throw \"unreachable\"; */\n\tf = \"docProps/app.xml\";\n\tif(wb.Props && wb.Props.SheetNames){/* empty */}\n\telse if(!wb.Workbook || !wb.Workbook.Sheets) wb.Props.SheetNames = wb.SheetNames;\n\telse {\n\t\tvar _sn = [];\n\t\tfor(var _i = 0; _i < wb.SheetNames.length; ++_i)\n\t\t\tif((wb.Workbook.Sheets[_i]||{}).Hidden != 2) _sn.push(wb.SheetNames[_i]);\n\t\twb.Props.SheetNames = _sn;\n\t}\n\twb.Props.Worksheets = wb.Props.SheetNames.length;\n\tzip_add_file(zip, f, write_ext_props(wb.Props, opts));\n\tct.extprops.push(f);\n\tadd_rels(opts.rels, 3, f, RELS.EXT_PROPS);\n\n\tif(wb.Custprops !== wb.Props && keys(wb.Custprops||{}).length > 0) {\n\t\tf = \"docProps/custom.xml\";\n\t\tzip_add_file(zip, f, write_cust_props(wb.Custprops, opts));\n\t\tct.custprops.push(f);\n\t\tadd_rels(opts.rels, 4, f, RELS.CUST_PROPS);\n\t}\n\n\tfor(rId=1;rId <= wb.SheetNames.length; ++rId) {\n\t\tvar wsrels = {'!id':{}};\n\t\tvar ws = wb.Sheets[wb.SheetNames[rId-1]];\n\t\tvar _type = (ws || {})[\"!type\"] || \"sheet\";\n\t\tswitch(_type) {\n\t\tcase \"chart\":\n\t\t\t/* falls through */\n\t\tdefault:\n\t\t\tf = \"xl/worksheets/sheet\" + rId + \".\" + wbext;\n\t\t\tzip_add_file(zip, f, write_ws(rId-1, f, opts, wb, wsrels));\n\t\t\tct.sheets.push(f);\n\t\t\tadd_rels(opts.wbrels, -1, \"worksheets/sheet\" + rId + \".\" + wbext, RELS.WS[0]);\n\t\t}\n\n\t\tif(ws) {\n\t\t\tvar comments = ws['!comments'];\n\t\t\tvar need_vml = false;\n\t\t\tvar cf = \"\";\n\t\t\tif(comments && comments.length > 0) {\n\t\t\t\tcf = \"xl/comments\" + rId + \".\" + wbext;\n\t\t\t\tzip_add_file(zip, cf, write_cmnt(comments, cf, opts));\n\t\t\t\tct.comments.push(cf);\n\t\t\t\tadd_rels(wsrels, -1, \"../comments\" + rId + \".\" + wbext, RELS.CMNT);\n\t\t\t\tneed_vml = true;\n\t\t\t}\n\t\t\tif(ws['!legacy']) {\n\t\t\t\tif(need_vml) zip_add_file(zip, \"xl/drawings/vmlDrawing\" + (rId) + \".vml\", write_comments_vml(rId, ws['!comments']));\n\t\t\t}\n\t\t\tdelete ws['!comments'];\n\t\t\tdelete ws['!legacy'];\n\t\t}\n\n\t\tif(wsrels['!id'].rId1) zip_add_file(zip, get_rels_path(f), write_rels(wsrels));\n\t}\n\n\tif(opts.Strings != null && opts.Strings.length > 0) {\n\t\tf = \"xl/sharedStrings.\" + wbext;\n\t\tzip_add_file(zip, f, write_sst(opts.Strings, f, opts));\n\t\tct.strs.push(f);\n\t\tadd_rels(opts.wbrels, -1, \"sharedStrings.\" + wbext, RELS.SST);\n\t}\n\n\tf = \"xl/workbook.\" + wbext;\n\tzip_add_file(zip, f, write_wb(wb, f, opts));\n\tct.workbooks.push(f);\n\tadd_rels(opts.rels, 1, f, RELS.WB);\n\n\t/* TODO: something more intelligent with themes */\n\n\tf = \"xl/theme/theme1.xml\";\n\tzip_add_file(zip, f, write_theme(wb.Themes, opts));\n\tct.themes.push(f);\n\tadd_rels(opts.wbrels, -1, \"theme/theme1.xml\", RELS.THEME);\n\n\t/* TODO: something more intelligent with styles */\n\n\tf = \"xl/styles.\" + wbext;\n\tzip_add_file(zip, f, write_sty(wb, f, opts));\n\tct.styles.push(f);\n\tadd_rels(opts.wbrels, -1, \"styles.\" + wbext, RELS.STY);\n\n\tif(wb.vbaraw && vbafmt) {\n\t\tf = \"xl/vbaProject.bin\";\n\t\tzip_add_file(zip, f, wb.vbaraw);\n\t\tct.vba.push(f);\n\t\tadd_rels(opts.wbrels, -1, \"vbaProject.bin\", RELS.VBA);\n\t}\n\n\tf = \"xl/metadata.\" + wbext;\n\tzip_add_file(zip, f, write_xlmeta(f));\n\tct.metadata.push(f);\n\tadd_rels(opts.wbrels, -1, \"metadata.\" + wbext, RELS.XLMETA);\n\n\tzip_add_file(zip, \"[Content_Types].xml\", write_ct(ct, opts));\n\tzip_add_file(zip, '_rels/.rels', write_rels(opts.rels));\n\tzip_add_file(zip, 'xl/_rels/workbook.' + wbext + '.rels', write_rels(opts.wbrels));\n\n\tdelete opts.revssf; delete opts.ssf;\n\treturn zip;\n}\n\nfunction write_zip_xlsx(wb/*:Workbook*/, opts/*:WriteOpts*/)/*:ZIP*/ {\n\t_shapeid = 1024;\n\tif(wb && !wb.SSF) {\n\t\twb.SSF = dup(table_fmt);\n\t}\n\tif(wb && wb.SSF) {\n\t\tmake_ssf(); SSF_load_table(wb.SSF);\n\t\t// $FlowIgnore\n\t\topts.revssf = evert_num(wb.SSF); opts.revssf[wb.SSF[65535]] = 0;\n\t\topts.ssf = wb.SSF;\n\t}\n\topts.rels = {}; opts.wbrels = {};\n\topts.Strings = /*::((*/[]/*:: :any):SST)*/; opts.Strings.Count = 0; opts.Strings.Unique = 0;\n\tif(browser_has_Map) opts.revStrings = new Map();\n\telse { opts.revStrings = {}; opts.revStrings.foo = []; delete opts.revStrings.foo; }\n\tvar wbext = \"xml\";\n\tvar vbafmt = VBAFMTS.indexOf(opts.bookType) > -1;\n\tvar ct = new_ct();\n\tfix_write_opts(opts = opts || {});\n\tvar zip = zip_new();\n\tvar f = \"\", rId = 0;\n\n\topts.cellXfs = [];\n\tget_cell_style(opts.cellXfs, {}, {revssf:{\"General\":0}});\n\n\tif(!wb.Props) wb.Props = {};\n\n\tf = \"docProps/core.xml\";\n\tzip_add_file(zip, f, write_core_props(wb.Props, opts));\n\tct.coreprops.push(f);\n\tadd_rels(opts.rels, 2, f, RELS.CORE_PROPS);\n\n\t/*::if(!wb.Props) throw \"unreachable\"; */\n\tf = \"docProps/app.xml\";\n\tif(wb.Props && wb.Props.SheetNames){/* empty */}\n\telse if(!wb.Workbook || !wb.Workbook.Sheets) wb.Props.SheetNames = wb.SheetNames;\n\telse {\n\t\tvar _sn = [];\n\t\tfor(var _i = 0; _i < wb.SheetNames.length; ++_i)\n\t\t\tif((wb.Workbook.Sheets[_i]||{}).Hidden != 2) _sn.push(wb.SheetNames[_i]);\n\t\twb.Props.SheetNames = _sn;\n\t}\n\twb.Props.Worksheets = wb.Props.SheetNames.length;\n\tzip_add_file(zip, f, write_ext_props(wb.Props, opts));\n\tct.extprops.push(f);\n\tadd_rels(opts.rels, 3, f, RELS.EXT_PROPS);\n\n\tif(wb.Custprops !== wb.Props && keys(wb.Custprops||{}).length > 0) {\n\t\tf = \"docProps/custom.xml\";\n\t\tzip_add_file(zip, f, write_cust_props(wb.Custprops, opts));\n\t\tct.custprops.push(f);\n\t\tadd_rels(opts.rels, 4, f, RELS.CUST_PROPS);\n\t}\n\n\tvar people = [\"SheetJ5\"];\n\topts.tcid = 0;\n\n\tfor(rId=1;rId <= wb.SheetNames.length; ++rId) {\n\t\tvar wsrels = {'!id':{}};\n\t\tvar ws = wb.Sheets[wb.SheetNames[rId-1]];\n\t\tvar _type = (ws || {})[\"!type\"] || \"sheet\";\n\t\tswitch(_type) {\n\t\tcase \"chart\":\n\t\t\t/* falls through */\n\t\tdefault:\n\t\t\tf = \"xl/worksheets/sheet\" + rId + \".\" + wbext;\n\t\t\tzip_add_file(zip, f, write_ws_xml(rId-1, opts, wb, wsrels));\n\t\t\tct.sheets.push(f);\n\t\t\tadd_rels(opts.wbrels, -1, \"worksheets/sheet\" + rId + \".\" + wbext, RELS.WS[0]);\n\t\t}\n\n\t\tif(ws) {\n\t\t\tvar comments = ws['!comments'];\n\t\t\tvar need_vml = false;\n\t\t\tvar cf = \"\";\n\t\t\tif(comments && comments.length > 0) {\n\t\t\t\tvar needtc = false;\n\t\t\t\tcomments.forEach(function(carr) {\n\t\t\t\t\tcarr[1].forEach(function(c) { if(c.T == true) needtc = true; });\n\t\t\t\t});\n\t\t\t\tif(needtc) {\n\t\t\t\t\tcf = \"xl/threadedComments/threadedComment\" + rId + \".\" + wbext;\n\t\t\t\t\tzip_add_file(zip, cf, write_tcmnt_xml(comments, people, opts));\n\t\t\t\t\tct.threadedcomments.push(cf);\n\t\t\t\t\tadd_rels(wsrels, -1, \"../threadedComments/threadedComment\" + rId + \".\" + wbext, RELS.TCMNT);\n\t\t\t\t}\n\n\t\t\t\tcf = \"xl/comments\" + rId + \".\" + wbext;\n\t\t\t\tzip_add_file(zip, cf, write_comments_xml(comments, opts));\n\t\t\t\tct.comments.push(cf);\n\t\t\t\tadd_rels(wsrels, -1, \"../comments\" + rId + \".\" + wbext, RELS.CMNT);\n\t\t\t\tneed_vml = true;\n\t\t\t}\n\t\t\tif(ws['!legacy']) {\n\t\t\t\tif(need_vml) zip_add_file(zip, \"xl/drawings/vmlDrawing\" + (rId) + \".vml\", write_comments_vml(rId, ws['!comments']));\n\t\t\t}\n\t\t\tdelete ws['!comments'];\n\t\t\tdelete ws['!legacy'];\n\t\t}\n\n\t\tif(wsrels['!id'].rId1) zip_add_file(zip, get_rels_path(f), write_rels(wsrels));\n\t}\n\n\tif(opts.Strings != null && opts.Strings.length > 0) {\n\t\tf = \"xl/sharedStrings.\" + wbext;\n\t\tzip_add_file(zip, f, write_sst_xml(opts.Strings, opts));\n\t\tct.strs.push(f);\n\t\tadd_rels(opts.wbrels, -1, \"sharedStrings.\" + wbext, RELS.SST);\n\t}\n\n\tf = \"xl/workbook.\" + wbext;\n\tzip_add_file(zip, f, write_wb_xml(wb, opts));\n\tct.workbooks.push(f);\n\tadd_rels(opts.rels, 1, f, RELS.WB);\n\n\t/* TODO: something more intelligent with themes */\n\n\tf = \"xl/theme/theme1.xml\";\n\tzip_add_file(zip, f, write_theme(wb.Themes, opts));\n\tct.themes.push(f);\n\tadd_rels(opts.wbrels, -1, \"theme/theme1.xml\", RELS.THEME);\n\n\t/* TODO: something more intelligent with styles */\n\n\tf = \"xl/styles.\" + wbext;\n\tzip_add_file(zip, f, write_sty_xml(wb, opts));\n\tct.styles.push(f);\n\tadd_rels(opts.wbrels, -1, \"styles.\" + wbext, RELS.STY);\n\n\tif(wb.vbaraw && vbafmt) {\n\t\tf = \"xl/vbaProject.bin\";\n\t\tzip_add_file(zip, f, wb.vbaraw);\n\t\tct.vba.push(f);\n\t\tadd_rels(opts.wbrels, -1, \"vbaProject.bin\", RELS.VBA);\n\t}\n\n\tf = \"xl/metadata.\" + wbext;\n\tzip_add_file(zip, f, write_xlmeta_xml());\n\tct.metadata.push(f);\n\tadd_rels(opts.wbrels, -1, \"metadata.\" + wbext, RELS.XLMETA);\n\n\tif(people.length > 1) {\n\t\tf = \"xl/persons/person.xml\";\n\t\tzip_add_file(zip, f, write_people_xml(people, opts));\n\t\tct.people.push(f);\n\t\tadd_rels(opts.wbrels, -1, \"persons/person.xml\", RELS.PEOPLE);\n\t}\n\n\tzip_add_file(zip, \"[Content_Types].xml\", write_ct(ct, opts));\n\tzip_add_file(zip, '_rels/.rels', write_rels(opts.rels));\n\tzip_add_file(zip, 'xl/_rels/workbook.' + wbext + '.rels', write_rels(opts.wbrels));\n\n\tdelete opts.revssf; delete opts.ssf;\n\treturn zip;\n}\n\nfunction firstbyte(f/*:RawData*/,o/*:?TypeOpts*/)/*:Array<number>*/ {\n\tvar x = \"\";\n\tswitch((o||{}).type || \"base64\") {\n\t\tcase 'buffer': return [f[0], f[1], f[2], f[3], f[4], f[5], f[6], f[7]];\n\t\tcase 'base64': x = Base64_decode(f.slice(0,12)); break;\n\t\tcase 'binary': x = f; break;\n\t\tcase 'array':  return [f[0], f[1], f[2], f[3], f[4], f[5], f[6], f[7]];\n\t\tdefault: throw new Error(\"Unrecognized type \" + (o && o.type || \"undefined\"));\n\t}\n\treturn [x.charCodeAt(0), x.charCodeAt(1), x.charCodeAt(2), x.charCodeAt(3), x.charCodeAt(4), x.charCodeAt(5), x.charCodeAt(6), x.charCodeAt(7)];\n}\n\nfunction read_cfb(cfb/*:CFBContainer*/, opts/*:?ParseOpts*/)/*:Workbook*/ {\n\tif(CFB.find(cfb, \"EncryptedPackage\")) return parse_xlsxcfb(cfb, opts);\n\treturn parse_xlscfb(cfb, opts);\n}\n\nfunction read_zip(data/*:RawData*/, opts/*:?ParseOpts*/)/*:Workbook*/ {\n\tvar zip, d = data;\n\tvar o = opts||{};\n\tif(!o.type) o.type = (has_buf && Buffer.isBuffer(data)) ? \"buffer\" : \"base64\";\n\tzip = zip_read(d, o);\n\treturn parse_zip(zip, o);\n}\n\nfunction read_plaintext(data/*:string*/, o/*:ParseOpts*/)/*:Workbook*/ {\n\tvar i = 0;\n\tmain: while(i < data.length) switch(data.charCodeAt(i)) {\n\t\tcase 0x0A: case 0x0D: case 0x20: ++i; break;\n\t\tcase 0x3C: return parse_xlml(data.slice(i),o);\n\t\tdefault: break main;\n\t}\n\treturn PRN.to_workbook(data, o);\n}\n\nfunction read_plaintext_raw(data/*:RawData*/, o/*:ParseOpts*/)/*:Workbook*/ {\n\tvar str = \"\", bytes = firstbyte(data, o);\n\tswitch(o.type) {\n\t\tcase 'base64': str = Base64_decode(data); break;\n\t\tcase 'binary': str = data; break;\n\t\tcase 'buffer': str = data.toString('binary'); break;\n\t\tcase 'array': str = cc2str(data); break;\n\t\tdefault: throw new Error(\"Unrecognized type \" + o.type);\n\t}\n\tif(bytes[0] == 0xEF && bytes[1] == 0xBB && bytes[2] == 0xBF) str = utf8read(str);\n\to.type = \"binary\";\n\treturn read_plaintext(str, o);\n}\n\nfunction read_utf16(data/*:RawData*/, o/*:ParseOpts*/)/*:Workbook*/ {\n\tvar d = data;\n\tif(o.type == 'base64') d = Base64_decode(d);\n\td = $cptable.utils.decode(1200, d.slice(2), 'str');\n\to.type = \"binary\";\n\treturn read_plaintext(d, o);\n}\n\nfunction bstrify(data/*:string*/)/*:string*/ {\n\treturn !data.match(/[^\\x00-\\x7F]/) ? data : utf8write(data);\n}\n\nfunction read_prn(data, d, o, str) {\n\tif(str) { o.type = \"string\"; return PRN.to_workbook(data, o); }\n\treturn PRN.to_workbook(d, o);\n}\n\nfunction readSync(data/*:RawData*/, opts/*:?ParseOpts*/)/*:Workbook*/ {\n\treset_cp();\n\tvar o = opts||{};\n\tif(typeof ArrayBuffer !== 'undefined' && data instanceof ArrayBuffer) return readSync(new Uint8Array(data), (o = dup(o), o.type = \"array\", o));\n\tif(typeof Uint8Array !== 'undefined' && data instanceof Uint8Array && !o.type) o.type = typeof Deno !== \"undefined\" ? \"buffer\" : \"array\";\n\tvar d = data, n = [0,0,0,0], str = false;\n\tif(o.cellStyles) { o.cellNF = true; o.sheetStubs = true; }\n\t_ssfopts = {};\n\tif(o.dateNF) _ssfopts.dateNF = o.dateNF;\n\tif(!o.type) o.type = (has_buf && Buffer.isBuffer(data)) ? \"buffer\" : \"base64\";\n\tif(o.type == \"file\") { o.type = has_buf ? \"buffer\" : \"binary\"; d = read_binary(data); if(typeof Uint8Array !== 'undefined' && !has_buf) o.type = \"array\"; }\n\tif(o.type == \"string\") { str = true; o.type = \"binary\"; o.codepage = 65001; d = bstrify(data); }\n\tif(o.type == 'array' && typeof Uint8Array !== 'undefined' && data instanceof Uint8Array && typeof ArrayBuffer !== 'undefined') {\n\t\t// $FlowIgnore\n\t\tvar ab=new ArrayBuffer(3), vu=new Uint8Array(ab); vu.foo=\"bar\";\n\t\t// $FlowIgnore\n\t\tif(!vu.foo) {o=dup(o); o.type='array'; return readSync(ab2a(d), o);}\n\t}\n\tswitch((n = firstbyte(d, o))[0]) {\n\t\tcase 0xD0: if(n[1] === 0xCF && n[2] === 0x11 && n[3] === 0xE0 && n[4] === 0xA1 && n[5] === 0xB1 && n[6] === 0x1A && n[7] === 0xE1) return read_cfb(CFB.read(d, o), o); break;\n\t\tcase 0x09: if(n[1] <= 0x08) return parse_xlscfb(d, o); break;\n\t\tcase 0x3C: return parse_xlml(d, o);\n\t\tcase 0x49:\n\t\t\tif(n[1] === 0x49 && n[2] === 0x2a && n[3] === 0x00) throw new Error(\"TIFF Image File is not a spreadsheet\");\n\t\t\tif(n[1] === 0x44) return read_wb_ID(d, o);\n\t\t\tbreak;\n\t\tcase 0x54: if(n[1] === 0x41 && n[2] === 0x42 && n[3] === 0x4C) return DIF.to_workbook(d, o); break;\n\t\tcase 0x50: return (n[1] === 0x4B && n[2] < 0x09 && n[3] < 0x09) ? read_zip(d, o) : read_prn(data, d, o, str);\n\t\tcase 0xEF: return n[3] === 0x3C ? parse_xlml(d, o) : read_prn(data, d, o, str);\n\t\tcase 0xFF:\n\t\t\tif(n[1] === 0xFE) { return read_utf16(d, o); }\n\t\t\telse if(n[1] === 0x00 && n[2] === 0x02 && n[3] === 0x00) return WK_.to_workbook(d, o);\n\t\t\tbreak;\n\t\tcase 0x00:\n\t\t\tif(n[1] === 0x00) {\n\t\t\t\tif(n[2] >= 0x02 && n[3] === 0x00) return WK_.to_workbook(d, o);\n\t\t\t\tif(n[2] === 0x00 && (n[3] === 0x08 || n[3] === 0x09)) return WK_.to_workbook(d, o);\n\t\t\t}\n\t\t\tbreak;\n\t\tcase 0x03: case 0x83: case 0x8B: case 0x8C: return DBF.to_workbook(d, o);\n\t\tcase 0x7B: if(n[1] === 0x5C && n[2] === 0x72 && n[3] === 0x74) return RTF.to_workbook(d, o); break;\n\t\tcase 0x0A: case 0x0D: case 0x20: return read_plaintext_raw(d, o);\n\t\tcase 0x89: if(n[1] === 0x50 && n[2] === 0x4E && n[3] === 0x47) throw new Error(\"PNG Image File is not a spreadsheet\"); break;\n\t}\n\tif(DBF_SUPPORTED_VERSIONS.indexOf(n[0]) > -1 && n[2] <= 12 && n[3] <= 31) return DBF.to_workbook(d, o);\n\treturn read_prn(data, d, o, str);\n}\n\nfunction readFileSync(filename/*:string*/, opts/*:?ParseOpts*/)/*:Workbook*/ {\n\tvar o = opts||{}; o.type = 'file';\n\treturn readSync(filename, o);\n}\nfunction write_cfb_ctr(cfb/*:CFBContainer*/, o/*:WriteOpts*/)/*:any*/ {\n\tswitch(o.type) {\n\t\tcase \"base64\": case \"binary\": break;\n\t\tcase \"buffer\": case \"array\": o.type = \"\"; break;\n\t\tcase \"file\": return write_dl(o.file, CFB.write(cfb, {type:has_buf ? 'buffer' : \"\"}));\n\t\tcase \"string\": throw new Error(\"'string' output type invalid for '\" + o.bookType + \"' files\");\n\t\tdefault: throw new Error(\"Unrecognized type \" + o.type);\n\t}\n\treturn CFB.write(cfb, o);\n}\n\n/*:: declare var encrypt_agile:any; */\nfunction write_zip_type(wb/*:Workbook*/, opts/*:?WriteOpts*/)/*:any*/ {\n\tvar o = dup(opts||{});\n\tvar z = write_zip(wb, o);\n\treturn write_zip_denouement(z, o);\n}\nfunction write_zip_typeXLSX(wb/*:Workbook*/, opts/*:?WriteOpts*/)/*:any*/ {\n\tvar o = dup(opts||{});\n\tvar z = write_zip_xlsx(wb, o);\n\treturn write_zip_denouement(z, o);\n}\nfunction write_zip_denouement(z/*:any*/, o/*:?WriteOpts*/)/*:any*/ {\n\tvar oopts = {};\n\tvar ftype = has_buf ? \"nodebuffer\" : (typeof Uint8Array !== \"undefined\" ? \"array\" : \"string\");\n\tif(o.compression) oopts.compression = 'DEFLATE';\n\tif(o.password) oopts.type = ftype;\n\telse switch(o.type) {\n\t\tcase \"base64\": oopts.type = \"base64\"; break;\n\t\tcase \"binary\": oopts.type = \"string\"; break;\n\t\tcase \"string\": throw new Error(\"'string' output type invalid for '\" + o.bookType + \"' files\");\n\t\tcase \"buffer\":\n\t\tcase \"file\": oopts.type = ftype; break;\n\t\tdefault: throw new Error(\"Unrecognized type \" + o.type);\n\t}\n\tvar out = z.FullPaths ? CFB.write(z, {fileType:\"zip\", type: /*::(*/{\"nodebuffer\": \"buffer\", \"string\": \"binary\"}/*:: :any)*/[oopts.type] || oopts.type, compression: !!o.compression}) : z.generate(oopts);\n\tif(typeof Deno !== \"undefined\") {\n\t\tif(typeof out == \"string\") {\n\t\t\tif(o.type == \"binary\" || o.type == \"base64\") return out;\n\t\t\tout = new Uint8Array(s2ab(out));\n\t\t}\n\t}\n/*jshint -W083 */\n\tif(o.password && typeof encrypt_agile !== 'undefined') return write_cfb_ctr(encrypt_agile(out, o.password), o); // eslint-disable-line no-undef\n/*jshint +W083 */\n\tif(o.type === \"file\") return write_dl(o.file, out);\n\treturn o.type == \"string\" ? utf8read(/*::(*/out/*:: :any)*/) : out;\n}\n\nfunction write_cfb_type(wb/*:Workbook*/, opts/*:?WriteOpts*/)/*:any*/ {\n\tvar o = opts||{};\n\tvar cfb/*:CFBContainer*/ = write_xlscfb(wb, o);\n\treturn write_cfb_ctr(cfb, o);\n}\n\nfunction write_string_type(out/*:string*/, opts/*:WriteOpts*/, bom/*:?string*/)/*:any*/ {\n\tif(!bom) bom = \"\";\n\tvar o = bom + out;\n\tswitch(opts.type) {\n\t\tcase \"base64\": return Base64_encode(utf8write(o));\n\t\tcase \"binary\": return utf8write(o);\n\t\tcase \"string\": return out;\n\t\tcase \"file\": return write_dl(opts.file, o, 'utf8');\n\t\tcase \"buffer\": {\n\t\t\tif(has_buf) return Buffer_from(o, 'utf8');\n\t\t\telse if(typeof TextEncoder !== \"undefined\") return new TextEncoder().encode(o);\n\t\t\telse return write_string_type(o, {type:'binary'}).split(\"\").map(function(c) { return c.charCodeAt(0); });\n\t\t}\n\t}\n\tthrow new Error(\"Unrecognized type \" + opts.type);\n}\n\nfunction write_stxt_type(out/*:string*/, opts/*:WriteOpts*/)/*:any*/ {\n\tswitch(opts.type) {\n\t\tcase \"base64\": return Base64_encode(out);\n\t\tcase \"binary\": return out;\n\t\tcase \"string\": return out; /* override in sheet_to_txt */\n\t\tcase \"file\": return write_dl(opts.file, out, 'binary');\n\t\tcase \"buffer\": {\n\t\t\tif(has_buf) return Buffer_from(out, 'binary');\n\t\t\telse return out.split(\"\").map(function(c) { return c.charCodeAt(0); });\n\t\t}\n\t}\n\tthrow new Error(\"Unrecognized type \" + opts.type);\n}\n\n/* TODO: test consistency */\nfunction write_binary_type(out, opts/*:WriteOpts*/)/*:any*/ {\n\tswitch(opts.type) {\n\t\tcase \"string\":\n\t\tcase \"base64\":\n\t\tcase \"binary\":\n\t\t\tvar bstr = \"\";\n\t\t\t// $FlowIgnore\n\t\t\tfor(var i = 0; i < out.length; ++i) bstr += String.fromCharCode(out[i]);\n\t\t\treturn opts.type == 'base64' ? Base64_encode(bstr) : opts.type == 'string' ? utf8read(bstr) : bstr;\n\t\tcase \"file\": return write_dl(opts.file, out);\n\t\tcase \"buffer\": return out;\n\t\tdefault: throw new Error(\"Unrecognized type \" + opts.type);\n\t}\n}\n\nfunction writeSyncXLSX(wb/*:Workbook*/, opts/*:?WriteOpts*/) {\n\treset_cp();\n\tcheck_wb(wb);\n\tvar o = dup(opts||{});\n\tif(o.cellStyles) { o.cellNF = true; o.sheetStubs = true; }\n\tif(o.type == \"array\") { o.type = \"binary\"; var out/*:string*/ = (writeSyncXLSX(wb, o)/*:any*/); o.type = \"array\"; return s2ab(out); }\n\treturn write_zip_typeXLSX(wb, o);\n}\n\nfunction writeSync(wb/*:Workbook*/, opts/*:?WriteOpts*/) {\n\treset_cp();\n\tcheck_wb(wb);\n\tvar o = dup(opts||{});\n\tif(o.cellStyles) { o.cellNF = true; o.sheetStubs = true; }\n\tif(o.type == \"array\") { o.type = \"binary\"; var out/*:string*/ = (writeSync(wb, o)/*:any*/); o.type = \"array\"; return s2ab(out); }\n\tvar idx = 0;\n\tif(o.sheet) {\n\t\tif(typeof o.sheet == \"number\") idx = o.sheet;\n\t\telse idx = wb.SheetNames.indexOf(o.sheet);\n\t\tif(!wb.SheetNames[idx]) throw new Error(\"Sheet not found: \" + o.sheet + \" : \" + (typeof o.sheet));\n\t}\n\tswitch(o.bookType || 'xlsb') {\n\t\tcase 'xml':\n\t\tcase 'xlml': return write_string_type(write_xlml(wb, o), o);\n\t\tcase 'slk':\n\t\tcase 'sylk': return write_string_type(SYLK.from_sheet(wb.Sheets[wb.SheetNames[idx]], o), o);\n\t\tcase 'htm':\n\t\tcase 'html': return write_string_type(sheet_to_html(wb.Sheets[wb.SheetNames[idx]], o), o);\n\t\tcase 'txt': return write_stxt_type(sheet_to_txt(wb.Sheets[wb.SheetNames[idx]], o), o);\n\t\tcase 'csv': return write_string_type(sheet_to_csv(wb.Sheets[wb.SheetNames[idx]], o), o, \"\\ufeff\");\n\t\tcase 'dif': return write_string_type(DIF.from_sheet(wb.Sheets[wb.SheetNames[idx]], o), o);\n\t\tcase 'dbf': return write_binary_type(DBF.from_sheet(wb.Sheets[wb.SheetNames[idx]], o), o);\n\t\tcase 'prn': return write_string_type(PRN.from_sheet(wb.Sheets[wb.SheetNames[idx]], o), o);\n\t\tcase 'rtf': return write_string_type(RTF.from_sheet(wb.Sheets[wb.SheetNames[idx]], o), o);\n\t\tcase 'eth': return write_string_type(ETH.from_sheet(wb.Sheets[wb.SheetNames[idx]], o), o);\n\t\tcase 'fods': return write_string_type(write_ods(wb, o), o);\n\t\tcase 'wk1': return write_binary_type(WK_.sheet_to_wk1(wb.Sheets[wb.SheetNames[idx]], o), o);\n\t\tcase 'wk3': return write_binary_type(WK_.book_to_wk3(wb, o), o);\n\t\tcase 'biff2': if(!o.biff) o.biff = 2; /* falls through */\n\t\tcase 'biff3': if(!o.biff) o.biff = 3; /* falls through */\n\t\tcase 'biff4': if(!o.biff) o.biff = 4; return write_binary_type(write_biff_buf(wb, o), o);\n\t\tcase 'biff5': if(!o.biff) o.biff = 5; /* falls through */\n\t\tcase 'biff8':\n\t\tcase 'xla':\n\t\tcase 'xls': if(!o.biff) o.biff = 8; return write_cfb_type(wb, o);\n\t\tcase 'xlsx':\n\t\tcase 'xlsm':\n\t\tcase 'xlam':\n\t\tcase 'xlsb':\n\t\tcase 'numbers':\n\t\tcase 'ods': return write_zip_type(wb, o);\n\t\tdefault: throw new Error (\"Unrecognized bookType |\" + o.bookType + \"|\");\n\t}\n}\n\nfunction resolve_book_type(o/*:WriteFileOpts*/) {\n\tif(o.bookType) return;\n\tvar _BT = {\n\t\t\"xls\": \"biff8\",\n\t\t\"htm\": \"html\",\n\t\t\"slk\": \"sylk\",\n\t\t\"socialcalc\": \"eth\",\n\t\t\"Sh33tJS\": \"WTF\"\n\t};\n\tvar ext = o.file.slice(o.file.lastIndexOf(\".\")).toLowerCase();\n\tif(ext.match(/^\\.[a-z]+$/)) o.bookType = ext.slice(1);\n\to.bookType = _BT[o.bookType] || o.bookType;\n}\n\nfunction writeFileSync(wb/*:Workbook*/, filename/*:string*/, opts/*:?WriteFileOpts*/) {\n\tvar o = opts||{}; o.type = 'file';\n\to.file = filename;\n\tresolve_book_type(o);\n\treturn writeSync(wb, o);\n}\n\nfunction writeFileSyncXLSX(wb/*:Workbook*/, filename/*:string*/, opts/*:?WriteFileOpts*/) {\n\tvar o = opts||{}; o.type = 'file';\n\to.file = filename;\n\tresolve_book_type(o);\n\treturn writeSyncXLSX(wb, o);\n}\n\n\nfunction writeFileAsync(filename/*:string*/, wb/*:Workbook*/, opts/*:?WriteFileOpts*/, cb/*:?(e?:ErrnoError)=>void*/) {\n\tvar o = opts||{}; o.type = 'file';\n\to.file = filename;\n\tresolve_book_type(o);\n\to.type = 'buffer';\n\tvar _cb = cb; if(!(_cb instanceof Function)) _cb = (opts/*:any*/);\n\treturn _fs.writeFile(filename, writeSync(wb, o), _cb);\n}\n/*::\ntype MJRObject = {\n\trow: any;\n\tisempty: boolean;\n};\n*/\nfunction make_json_row(sheet/*:Worksheet*/, r/*:Range*/, R/*:number*/, cols/*:Array<string>*/, header/*:number*/, hdr/*:Array<any>*/, dense/*:boolean*/, o/*:Sheet2JSONOpts*/)/*:MJRObject*/ {\n\tvar rr = encode_row(R);\n\tvar defval = o.defval, raw = o.raw || !Object.prototype.hasOwnProperty.call(o, \"raw\");\n\tvar isempty = true;\n\tvar row/*:any*/ = (header === 1) ? [] : {};\n\tif(header !== 1) {\n\t\tif(Object.defineProperty) try { Object.defineProperty(row, '__rowNum__', {value:R, enumerable:false}); } catch(e) { row.__rowNum__ = R; }\n\t\telse row.__rowNum__ = R;\n\t}\n\tif(!dense || sheet[R]) for (var C = r.s.c; C <= r.e.c; ++C) {\n\t\tvar val = dense ? sheet[R][C] : sheet[cols[C] + rr];\n\t\tif(val === undefined || val.t === undefined) {\n\t\t\tif(defval === undefined) continue;\n\t\t\tif(hdr[C] != null) { row[hdr[C]] = defval; }\n\t\t\tcontinue;\n\t\t}\n\t\tvar v = val.v;\n\t\tswitch(val.t){\n\t\t\tcase 'z': if(v == null) break; continue;\n\t\t\tcase 'e': v = (v == 0 ? null : void 0); break;\n\t\t\tcase 's': case 'd': case 'b': case 'n': break;\n\t\t\tdefault: throw new Error('unrecognized type ' + val.t);\n\t\t}\n\t\tif(hdr[C] != null) {\n\t\t\tif(v == null) {\n\t\t\t\tif(val.t == \"e\" && v === null) row[hdr[C]] = null;\n\t\t\t\telse if(defval !== undefined) row[hdr[C]] = defval;\n\t\t\t\telse if(raw && v === null) row[hdr[C]] = null;\n\t\t\t\telse continue;\n\t\t\t} else {\n\t\t\t\trow[hdr[C]] = raw && (val.t !== \"n\" || (val.t === \"n\" && o.rawNumbers !== false)) ? v : format_cell(val,v,o);\n\t\t\t}\n\t\t\tif(v != null) isempty = false;\n\t\t}\n\t}\n\treturn { row: row, isempty: isempty };\n}\n\n\nfunction sheet_to_json(sheet/*:Worksheet*/, opts/*:?Sheet2JSONOpts*/) {\n\tif(sheet == null || sheet[\"!ref\"] == null) return [];\n\tvar val = {t:'n',v:0}, header = 0, offset = 1, hdr/*:Array<any>*/ = [], v=0, vv=\"\";\n\tvar r = {s:{r:0,c:0},e:{r:0,c:0}};\n\tvar o = opts || {};\n\tvar range = o.range != null ? o.range : sheet[\"!ref\"];\n\tif(o.header === 1) header = 1;\n\telse if(o.header === \"A\") header = 2;\n\telse if(Array.isArray(o.header)) header = 3;\n\telse if(o.header == null) header = 0;\n\tswitch(typeof range) {\n\t\tcase 'string': r = safe_decode_range(range); break;\n\t\tcase 'number': r = safe_decode_range(sheet[\"!ref\"]); r.s.r = range; break;\n\t\tdefault: r = range;\n\t}\n\tif(header > 0) offset = 0;\n\tvar rr = encode_row(r.s.r);\n\tvar cols/*:Array<string>*/ = [];\n\tvar out/*:Array<any>*/ = [];\n\tvar outi = 0, counter = 0;\n\tvar dense = Array.isArray(sheet);\n\tvar R = r.s.r, C = 0;\n\tvar header_cnt = {};\n\tif(dense && !sheet[R]) sheet[R] = [];\n\tvar colinfo/*:Array<ColInfo>*/ = o.skipHidden && sheet[\"!cols\"] || [];\n\tvar rowinfo/*:Array<ColInfo>*/ = o.skipHidden && sheet[\"!rows\"] || [];\n\tfor(C = r.s.c; C <= r.e.c; ++C) {\n\t\tif(((colinfo[C]||{}).hidden)) continue;\n\t\tcols[C] = encode_col(C);\n\t\tval = dense ? sheet[R][C] : sheet[cols[C] + rr];\n\t\tswitch(header) {\n\t\t\tcase 1: hdr[C] = C - r.s.c; break;\n\t\t\tcase 2: hdr[C] = cols[C]; break;\n\t\t\tcase 3: hdr[C] = o.header[C - r.s.c]; break;\n\t\t\tdefault:\n\t\t\t\tif(val == null) val = {w: \"__EMPTY\", t: \"s\"};\n\t\t\t\tvv = v = format_cell(val, null, o);\n\t\t\t\tcounter = header_cnt[v] || 0;\n\t\t\t\tif(!counter) header_cnt[v] = 1;\n\t\t\t\telse {\n\t\t\t\t\tdo { vv = v + \"_\" + (counter++); } while(header_cnt[vv]); header_cnt[v] = counter;\n\t\t\t\t\theader_cnt[vv] = 1;\n\t\t\t\t}\n\t\t\t\thdr[C] = vv;\n\t\t}\n\t}\n\tfor (R = r.s.r + offset; R <= r.e.r; ++R) {\n\t\tif ((rowinfo[R]||{}).hidden) continue;\n\t\tvar row = make_json_row(sheet, r, R, cols, header, hdr, dense, o);\n\t\tif((row.isempty === false) || (header === 1 ? o.blankrows !== false : !!o.blankrows)) out[outi++] = row.row;\n\t}\n\tout.length = outi;\n\treturn out;\n}\n\nvar qreg = /\"/g;\nfunction make_csv_row(sheet/*:Worksheet*/, r/*:Range*/, R/*:number*/, cols/*:Array<string>*/, fs/*:number*/, rs/*:number*/, FS/*:string*/, o/*:Sheet2CSVOpts*/)/*:?string*/ {\n\tvar isempty = true;\n\tvar row/*:Array<string>*/ = [], txt = \"\", rr = encode_row(R);\n\tfor(var C = r.s.c; C <= r.e.c; ++C) {\n\t\tif (!cols[C]) continue;\n\t\tvar val = o.dense ? (sheet[R]||[])[C]: sheet[cols[C] + rr];\n\t\tif(val == null) txt = \"\";\n\t\telse if(val.v != null) {\n\t\t\tisempty = false;\n\t\t\ttxt = ''+(o.rawNumbers && val.t == \"n\" ? val.v : format_cell(val, null, o));\n\t\t\tfor(var i = 0, cc = 0; i !== txt.length; ++i) if((cc = txt.charCodeAt(i)) === fs || cc === rs || cc === 34 || o.forceQuotes) {txt = \"\\\"\" + txt.replace(qreg, '\"\"') + \"\\\"\"; break; }\n\t\t\tif(txt == \"ID\") txt = '\"ID\"';\n\t\t} else if(val.f != null && !val.F) {\n\t\t\tisempty = false;\n\t\t\ttxt = '=' + val.f; if(txt.indexOf(\",\") >= 0) txt = '\"' + txt.replace(qreg, '\"\"') + '\"';\n\t\t} else txt = \"\";\n\t\t/* NOTE: Excel CSV does not support array formulae */\n\t\trow.push(txt);\n\t}\n\tif(o.blankrows === false && isempty) return null;\n\treturn row.join(FS);\n}\n\nfunction sheet_to_csv(sheet/*:Worksheet*/, opts/*:?Sheet2CSVOpts*/)/*:string*/ {\n\tvar out/*:Array<string>*/ = [];\n\tvar o = opts == null ? {} : opts;\n\tif(sheet == null || sheet[\"!ref\"] == null) return \"\";\n\tvar r = safe_decode_range(sheet[\"!ref\"]);\n\tvar FS = o.FS !== undefined ? o.FS : \",\", fs = FS.charCodeAt(0);\n\tvar RS = o.RS !== undefined ? o.RS : \"\\n\", rs = RS.charCodeAt(0);\n\tvar endregex = new RegExp((FS==\"|\" ? \"\\\\|\" : FS)+\"+$\");\n\tvar row = \"\", cols/*:Array<string>*/ = [];\n\to.dense = Array.isArray(sheet);\n\tvar colinfo/*:Array<ColInfo>*/ = o.skipHidden && sheet[\"!cols\"] || [];\n\tvar rowinfo/*:Array<ColInfo>*/ = o.skipHidden && sheet[\"!rows\"] || [];\n\tfor(var C = r.s.c; C <= r.e.c; ++C) if (!((colinfo[C]||{}).hidden)) cols[C] = encode_col(C);\n\tvar w = 0;\n\tfor(var R = r.s.r; R <= r.e.r; ++R) {\n\t\tif ((rowinfo[R]||{}).hidden) continue;\n\t\trow = make_csv_row(sheet, r, R, cols, fs, rs, FS, o);\n\t\tif(row == null) { continue; }\n\t\tif(o.strip) row = row.replace(endregex,\"\");\n\t\tif(row || (o.blankrows !== false)) out.push((w++ ? RS : \"\") + row);\n\t}\n\tdelete o.dense;\n\treturn out.join(\"\");\n}\n\nfunction sheet_to_txt(sheet/*:Worksheet*/, opts/*:?Sheet2CSVOpts*/) {\n\tif(!opts) opts = {}; opts.FS = \"\\t\"; opts.RS = \"\\n\";\n\tvar s = sheet_to_csv(sheet, opts);\n\tif(typeof $cptable == 'undefined' || opts.type == 'string') return s;\n\tvar o = $cptable.utils.encode(1200, s, 'str');\n\treturn String.fromCharCode(255) + String.fromCharCode(254) + o;\n}\n\nfunction sheet_to_formulae(sheet/*:Worksheet*/)/*:Array<string>*/ {\n\tvar y = \"\", x, val=\"\";\n\tif(sheet == null || sheet[\"!ref\"] == null) return [];\n\tvar r = safe_decode_range(sheet['!ref']), rr = \"\", cols/*:Array<string>*/ = [], C;\n\tvar cmds/*:Array<string>*/ = [];\n\tvar dense = Array.isArray(sheet);\n\tfor(C = r.s.c; C <= r.e.c; ++C) cols[C] = encode_col(C);\n\tfor(var R = r.s.r; R <= r.e.r; ++R) {\n\t\trr = encode_row(R);\n\t\tfor(C = r.s.c; C <= r.e.c; ++C) {\n\t\t\ty = cols[C] + rr;\n\t\t\tx = dense ? (sheet[R]||[])[C] : sheet[y];\n\t\t\tval = \"\";\n\t\t\tif(x === undefined) continue;\n\t\t\telse if(x.F != null) {\n\t\t\t\ty = x.F;\n\t\t\t\tif(!x.f) continue;\n\t\t\t\tval = x.f;\n\t\t\t\tif(y.indexOf(\":\") == -1) y = y + \":\" + y;\n\t\t\t}\n\t\t\tif(x.f != null) val = x.f;\n\t\t\telse if(x.t == 'z') continue;\n\t\t\telse if(x.t == 'n' && x.v != null) val = \"\" + x.v;\n\t\t\telse if(x.t == 'b') val = x.v ? \"TRUE\" : \"FALSE\";\n\t\t\telse if(x.w !== undefined) val = \"'\" + x.w;\n\t\t\telse if(x.v === undefined) continue;\n\t\t\telse if(x.t == 's') val = \"'\" + x.v;\n\t\t\telse val = \"\"+x.v;\n\t\t\tcmds[cmds.length] = y + \"=\" + val;\n\t\t}\n\t}\n\treturn cmds;\n}\n\nfunction sheet_add_json(_ws/*:?Worksheet*/, js/*:Array<any>*/, opts)/*:Worksheet*/ {\n\tvar o = opts || {};\n\tvar offset = +!o.skipHeader;\n\tvar ws/*:Worksheet*/ = _ws || ({}/*:any*/);\n\tvar _R = 0, _C = 0;\n\tif(ws && o.origin != null) {\n\t\tif(typeof o.origin == 'number') _R = o.origin;\n\t\telse {\n\t\t\tvar _origin/*:CellAddress*/ = typeof o.origin == \"string\" ? decode_cell(o.origin) : o.origin;\n\t\t\t_R = _origin.r; _C = _origin.c;\n\t\t}\n\t}\n\tvar cell/*:Cell*/;\n\tvar range/*:Range*/ = ({s: {c:0, r:0}, e: {c:_C, r:_R + js.length - 1 + offset}}/*:any*/);\n\tif(ws['!ref']) {\n\t\tvar _range = safe_decode_range(ws['!ref']);\n\t\trange.e.c = Math.max(range.e.c, _range.e.c);\n\t\trange.e.r = Math.max(range.e.r, _range.e.r);\n\t\tif(_R == -1) { _R = _range.e.r + 1; range.e.r = _R + js.length - 1 + offset; }\n\t} else {\n\t\tif(_R == -1) { _R = 0; range.e.r = js.length - 1 + offset; }\n\t}\n\tvar hdr/*:Array<string>*/ = o.header || [], C = 0;\n\n\tjs.forEach(function (JS, R/*:number*/) {\n\t\tkeys(JS).forEach(function(k) {\n\t\t\tif((C=hdr.indexOf(k)) == -1) hdr[C=hdr.length] = k;\n\t\t\tvar v = JS[k];\n\t\t\tvar t = 'z';\n\t\t\tvar z = \"\";\n\t\t\tvar ref = encode_cell({c:_C + C,r:_R + R + offset});\n\t\t\tcell = ws_get_cell_stub(ws, ref);\n\t\t\tif(v && typeof v === 'object' && !(v instanceof Date)){\n\t\t\t\tws[ref] = v;\n\t\t\t} else {\n\t\t\t\tif(typeof v == 'number') t = 'n';\n\t\t\t\telse if(typeof v == 'boolean') t = 'b';\n\t\t\t\telse if(typeof v == 'string') t = 's';\n\t\t\t\telse if(v instanceof Date) {\n\t\t\t\t\tt = 'd';\n\t\t\t\t\tif(!o.cellDates) { t = 'n'; v = datenum(v); }\n\t\t\t\t\tz = (o.dateNF || table_fmt[14]);\n\t\t\t\t}\n\t\t\t\telse if(v === null && o.nullError) { t = 'e'; v = 0; }\n\t\t\t\tif(!cell) ws[ref] = cell = ({t:t, v:v}/*:any*/);\n\t\t\t\telse {\n\t\t\t\t\tcell.t = t; cell.v = v;\n\t\t\t\t\tdelete cell.w; delete cell.R;\n\t\t\t\t\tif(z) cell.z = z;\n\t\t\t\t}\n\t\t\t\tif(z) cell.z = z;\n\t\t\t}\n\t\t});\n\t});\n\trange.e.c = Math.max(range.e.c, _C + hdr.length - 1);\n\tvar __R = encode_row(_R);\n\tif(offset) for(C = 0; C < hdr.length; ++C) ws[encode_col(C + _C) + __R] = {t:'s', v:hdr[C]};\n\tws['!ref'] = encode_range(range);\n\treturn ws;\n}\nfunction json_to_sheet(js/*:Array<any>*/, opts)/*:Worksheet*/ { return sheet_add_json(null, js, opts); }\n\n/* get cell, creating a stub if necessary */\nfunction ws_get_cell_stub(ws/*:Worksheet*/, R, C/*:?number*/)/*:Cell*/ {\n\t/* A1 cell address */\n\tif(typeof R == \"string\") {\n\t\t/* dense */\n\t\tif(Array.isArray(ws)) {\n\t\t\tvar RC = decode_cell(R);\n\t\t\tif(!ws[RC.r]) ws[RC.r] = [];\n\t\t\treturn ws[RC.r][RC.c] || (ws[RC.r][RC.c] = {t:'z'});\n\t\t}\n\t\treturn ws[R] || (ws[R] = {t:'z'});\n\t}\n\t/* cell address object */\n\tif(typeof R != \"number\") return ws_get_cell_stub(ws, encode_cell(R));\n\t/* R and C are 0-based indices */\n\treturn ws_get_cell_stub(ws, encode_cell({r:R,c:C||0}));\n}\n\n/* find sheet index for given name / validate index */\nfunction wb_sheet_idx(wb/*:Workbook*/, sh/*:number|string*/) {\n\tif(typeof sh == \"number\") {\n\t\tif(sh >= 0 && wb.SheetNames.length > sh) return sh;\n\t\tthrow new Error(\"Cannot find sheet # \" + sh);\n\t} else if(typeof sh == \"string\") {\n\t\tvar idx = wb.SheetNames.indexOf(sh);\n\t\tif(idx > -1) return idx;\n\t\tthrow new Error(\"Cannot find sheet name |\" + sh + \"|\");\n\t} else throw new Error(\"Cannot find sheet |\" + sh + \"|\");\n}\n\n/* simple blank workbook object */\nfunction book_new()/*:Workbook*/ {\n\treturn { SheetNames: [], Sheets: {} };\n}\n\n/* add a worksheet to the end of a given workbook */\nfunction book_append_sheet(wb/*:Workbook*/, ws/*:Worksheet*/, name/*:?string*/, roll/*:?boolean*/)/*:string*/ {\n\tvar i = 1;\n\tif(!name) for(; i <= 0xFFFF; ++i, name = undefined) if(wb.SheetNames.indexOf(name = \"Sheet\" + i) == -1) break;\n\tif(!name || wb.SheetNames.length >= 0xFFFF) throw new Error(\"Too many worksheets\");\n\tif(roll && wb.SheetNames.indexOf(name) >= 0) {\n\t\tvar m = name.match(/(^.*?)(\\d+)$/);\n\t\ti = m && +m[2] || 0;\n\t\tvar root = m && m[1] || name;\n\t\tfor(++i; i <= 0xFFFF; ++i) if(wb.SheetNames.indexOf(name = root + i) == -1) break;\n\t}\n\tcheck_ws_name(name);\n\tif(wb.SheetNames.indexOf(name) >= 0) throw new Error(\"Worksheet with name |\" + name + \"| already exists!\");\n\n\twb.SheetNames.push(name);\n\twb.Sheets[name] = ws;\n\treturn name;\n}\n\n/* set sheet visibility (visible/hidden/very hidden) */\nfunction book_set_sheet_visibility(wb/*:Workbook*/, sh/*:number|string*/, vis/*:number*/) {\n\tif(!wb.Workbook) wb.Workbook = {};\n\tif(!wb.Workbook.Sheets) wb.Workbook.Sheets = [];\n\n\tvar idx = wb_sheet_idx(wb, sh);\n\t// $FlowIgnore\n\tif(!wb.Workbook.Sheets[idx]) wb.Workbook.Sheets[idx] = {};\n\n\tswitch(vis) {\n\t\tcase 0: case 1: case 2: break;\n\t\tdefault: throw new Error(\"Bad sheet visibility setting \" + vis);\n\t}\n\t// $FlowIgnore\n\twb.Workbook.Sheets[idx].Hidden = vis;\n}\n\n/* set number format */\nfunction cell_set_number_format(cell/*:Cell*/, fmt/*:string|number*/) {\n\tcell.z = fmt;\n\treturn cell;\n}\n\n/* set cell hyperlink */\nfunction cell_set_hyperlink(cell/*:Cell*/, target/*:string*/, tooltip/*:?string*/) {\n\tif(!target) {\n\t\tdelete cell.l;\n\t} else {\n\t\tcell.l = ({ Target: target }/*:Hyperlink*/);\n\t\tif(tooltip) cell.l.Tooltip = tooltip;\n\t}\n\treturn cell;\n}\nfunction cell_set_internal_link(cell/*:Cell*/, range/*:string*/, tooltip/*:?string*/) { return cell_set_hyperlink(cell, \"#\" + range, tooltip); }\n\n/* add to cell comments */\nfunction cell_add_comment(cell/*:Cell*/, text/*:string*/, author/*:?string*/) {\n\tif(!cell.c) cell.c = [];\n\tcell.c.push({t:text, a:author||\"SheetJS\"});\n}\n\n/* set array formula and flush related cells */\nfunction sheet_set_array_formula(ws/*:Worksheet*/, range, formula/*:string*/, dynamic/*:boolean*/) {\n\tvar rng = typeof range != \"string\" ? range : safe_decode_range(range);\n\tvar rngstr = typeof range == \"string\" ? range : encode_range(range);\n\tfor(var R = rng.s.r; R <= rng.e.r; ++R) for(var C = rng.s.c; C <= rng.e.c; ++C) {\n\t\tvar cell = ws_get_cell_stub(ws, R, C);\n\t\tcell.t = 'n';\n\t\tcell.F = rngstr;\n\t\tdelete cell.v;\n\t\tif(R == rng.s.r && C == rng.s.c) {\n\t\t\tcell.f = formula;\n\t\t\tif(dynamic) cell.D = true;\n\t\t}\n\t}\n\treturn ws;\n}\n\nvar utils/*:any*/ = {\n\tencode_col: encode_col,\n\tencode_row: encode_row,\n\tencode_cell: encode_cell,\n\tencode_range: encode_range,\n\tdecode_col: decode_col,\n\tdecode_row: decode_row,\n\tsplit_cell: split_cell,\n\tdecode_cell: decode_cell,\n\tdecode_range: decode_range,\n\tformat_cell: format_cell,\n\tsheet_add_aoa: sheet_add_aoa,\n\tsheet_add_json: sheet_add_json,\n\tsheet_add_dom: sheet_add_dom,\n\taoa_to_sheet: aoa_to_sheet,\n\tjson_to_sheet: json_to_sheet,\n\ttable_to_sheet: parse_dom_table,\n\ttable_to_book: table_to_book,\n\tsheet_to_csv: sheet_to_csv,\n\tsheet_to_txt: sheet_to_txt,\n\tsheet_to_json: sheet_to_json,\n\tsheet_to_html: sheet_to_html,\n\tsheet_to_formulae: sheet_to_formulae,\n\tsheet_to_row_object_array: sheet_to_json,\n\tsheet_get_cell: ws_get_cell_stub,\n\tbook_new: book_new,\n\tbook_append_sheet: book_append_sheet,\n\tbook_set_sheet_visibility: book_set_sheet_visibility,\n\tcell_set_number_format: cell_set_number_format,\n\tcell_set_hyperlink: cell_set_hyperlink,\n\tcell_set_internal_link: cell_set_internal_link,\n\tcell_add_comment: cell_add_comment,\n\tsheet_set_array_formula: sheet_set_array_formula,\n\tconsts: {\n\t\tSHEET_VISIBLE: 0,\n\t\tSHEET_HIDDEN: 1,\n\t\tSHEET_VERY_HIDDEN: 2\n\t}\n};\n\nvar _Readable;\nfunction set_readable(R) { _Readable = R; }\n\nfunction write_csv_stream(sheet/*:Worksheet*/, opts/*:?Sheet2CSVOpts*/) {\n\tvar stream = _Readable();\n\tvar o = opts == null ? {} : opts;\n\tif(sheet == null || sheet[\"!ref\"] == null) { stream.push(null); return stream; }\n\tvar r = safe_decode_range(sheet[\"!ref\"]);\n\tvar FS = o.FS !== undefined ? o.FS : \",\", fs = FS.charCodeAt(0);\n\tvar RS = o.RS !== undefined ? o.RS : \"\\n\", rs = RS.charCodeAt(0);\n\tvar endregex = new RegExp((FS==\"|\" ? \"\\\\|\" : FS)+\"+$\");\n\tvar row/*:?string*/ = \"\", cols/*:Array<string>*/ = [];\n\to.dense = Array.isArray(sheet);\n\tvar colinfo/*:Array<ColInfo>*/ = o.skipHidden && sheet[\"!cols\"] || [];\n\tvar rowinfo/*:Array<RowInfo>*/ = o.skipHidden && sheet[\"!rows\"] || [];\n\tfor(var C = r.s.c; C <= r.e.c; ++C) if (!((colinfo[C]||{}).hidden)) cols[C] = encode_col(C);\n\tvar R = r.s.r;\n\tvar BOM = false, w = 0;\n\tstream._read = function() {\n\t\tif(!BOM) { BOM = true; return stream.push(\"\\uFEFF\"); }\n\t\twhile(R <= r.e.r) {\n\t\t\t++R;\n\t\t\tif ((rowinfo[R-1]||{}).hidden) continue;\n\t\t\trow = make_csv_row(sheet, r, R-1, cols, fs, rs, FS, o);\n\t\t\tif(row != null) {\n\t\t\t\tif(o.strip) row = row.replace(endregex,\"\");\n\t\t\t\tif(row || (o.blankrows !== false)) return stream.push((w++ ? RS : \"\") + row);\n\t\t\t}\n\t\t}\n\t\treturn stream.push(null);\n\t};\n\treturn stream;\n}\n\nfunction write_html_stream(ws/*:Worksheet*/, opts/*:?Sheet2HTMLOpts*/) {\n\tvar stream = _Readable();\n\n\tvar o = opts || {};\n\tvar header = o.header != null ? o.header : HTML_BEGIN;\n\tvar footer = o.footer != null ? o.footer : HTML_END;\n\tstream.push(header);\n\tvar r = decode_range(ws['!ref']);\n\to.dense = Array.isArray(ws);\n\tstream.push(make_html_preamble(ws, r, o));\n\tvar R = r.s.r;\n\tvar end = false;\n\tstream._read = function() {\n\t\tif(R > r.e.r) {\n\t\t\tif(!end) { end = true; stream.push(\"</table>\" + footer); }\n\t\t\treturn stream.push(null);\n\t\t}\n\t\twhile(R <= r.e.r) {\n\t\t\tstream.push(make_html_row(ws, r, R, o));\n\t\t\t++R;\n\t\t\tbreak;\n\t\t}\n\t};\n\treturn stream;\n}\n\nfunction write_json_stream(sheet/*:Worksheet*/, opts/*:?Sheet2CSVOpts*/) {\n\tvar stream = _Readable({objectMode:true});\n\n\tif(sheet == null || sheet[\"!ref\"] == null) { stream.push(null); return stream; }\n\tvar val = {t:'n',v:0}, header = 0, offset = 1, hdr/*:Array<any>*/ = [], v=0, vv=\"\";\n\tvar r = {s:{r:0,c:0},e:{r:0,c:0}};\n\tvar o = opts || {};\n\tvar range = o.range != null ? o.range : sheet[\"!ref\"];\n\tif(o.header === 1) header = 1;\n\telse if(o.header === \"A\") header = 2;\n\telse if(Array.isArray(o.header)) header = 3;\n\tswitch(typeof range) {\n\t\tcase 'string': r = safe_decode_range(range); break;\n\t\tcase 'number': r = safe_decode_range(sheet[\"!ref\"]); r.s.r = range; break;\n\t\tdefault: r = range;\n\t}\n\tif(header > 0) offset = 0;\n\tvar rr = encode_row(r.s.r);\n\tvar cols/*:Array<string>*/ = [];\n\tvar counter = 0;\n\tvar dense = Array.isArray(sheet);\n\tvar R = r.s.r, C = 0;\n\tvar header_cnt = {};\n\tif(dense && !sheet[R]) sheet[R] = [];\n\tvar colinfo/*:Array<ColInfo>*/ = o.skipHidden && sheet[\"!cols\"] || [];\n\tvar rowinfo/*:Array<RowInfo>*/ = o.skipHidden && sheet[\"!rows\"] || [];\n\tfor(C = r.s.c; C <= r.e.c; ++C) {\n\t\tif(((colinfo[C]||{}).hidden)) continue;\n\t\tcols[C] = encode_col(C);\n\t\tval = dense ? sheet[R][C] : sheet[cols[C] + rr];\n\t\tswitch(header) {\n\t\t\tcase 1: hdr[C] = C - r.s.c; break;\n\t\t\tcase 2: hdr[C] = cols[C]; break;\n\t\t\tcase 3: hdr[C] = o.header[C - r.s.c]; break;\n\t\t\tdefault:\n\t\t\t\tif(val == null) val = {w: \"__EMPTY\", t: \"s\"};\n\t\t\t\tvv = v = format_cell(val, null, o);\n\t\t\t\tcounter = header_cnt[v] || 0;\n\t\t\t\tif(!counter) header_cnt[v] = 1;\n\t\t\t\telse {\n\t\t\t\t\tdo { vv = v + \"_\" + (counter++); } while(header_cnt[vv]); header_cnt[v] = counter;\n\t\t\t\t\theader_cnt[vv] = 1;\n\t\t\t\t}\n\t\t\t\thdr[C] = vv;\n\t\t}\n\t}\n\tR = r.s.r + offset;\n\tstream._read = function() {\n\t\twhile(R <= r.e.r) {\n\t\t\tif ((rowinfo[R-1]||{}).hidden) continue;\n\t\t\tvar row = make_json_row(sheet, r, R, cols, header, hdr, dense, o);\n\t\t\t++R;\n\t\t\tif((row.isempty === false) || (header === 1 ? o.blankrows !== false : !!o.blankrows)) {\n\t\t\t\tstream.push(row.row);\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t\treturn stream.push(null);\n\t};\n\treturn stream;\n}\n\nvar __stream = {\n\tto_json: write_json_stream,\n\tto_html: write_html_stream,\n\tto_csv: write_csv_stream,\n  set_readable: set_readable\n};\nexport const version = XLSX.version;\nexport {\n\tparse_xlscfb,\n\tparse_zip,\n\treadSync as read,\n\treadFileSync as readFile,\n\treadFileSync,\n\twriteSync as write,\n\twriteFileSync as writeFile,\n\twriteFileSync,\n\twriteFileAsync,\n\twriteSyncXLSX as writeXLSX,\n\twriteFileSyncXLSX as writeFileXLSX,\n\tutils,\n\t__stream as stream,\n\tSSF,\n\tCFB\n};\n"],"names":["e","t","n","Object","setPrototypeOf","__proto__","Array","prototype","hasOwnProperty","call","TypeError","String","r","this","constructor","create","assign","arguments","length","o","apply","indexOf","getOwnPropertySymbols","propertyIsEnumerable","Promise","i","c","s","next","a","throw","done","value","then","label","sent","trys","ops","return","Symbol","iterator","pop","push","error","slice","concat","globalThis","window","g","self","u","__esModule","default","l","exports","f","d","h","Math","p","Function","y","v","defineProperty","get","m","bind","b","w","S","getOwnPropertyDescriptor","k","enumerable","_","I","configurable","writable","O","x","T","C","j","L","R","toString","W","Z","E","G","split","A","P","X","F","K","N","document","all","U","IS_HTMLDDA","D","H","Y","J","z","V","M","isPrototypeOf","B","Q","process","q","Deno","$","versions","version","ee","v8","match","te","ne","sham","re","oe","ie","ce","ae","se","ue","le","fe","de","he","pe","ye","mode","copyright","license","source","ve","me","be","ge","hasOwn","we","Se","random","ke","_e","Ie","Oe","xe","for","Te","withoutSetter","Ce","je","Le","We","valueOf","Re","Ze","Ee","createElement","Ge","Ae","Pe","Xe","Fe","Ke","Ne","Ue","De","He","Ye","Je","Ve","ze","Me","Be","Qe","EXISTS","PROPER","name","CONFIGURABLE","qe","inspectSource","$e","et","tt","nt","rt","WeakMap","ot","test","it","ct","at","st","ut","state","lt","ft","dt","has","ht","set","facade","pt","yt","enforce","getterFor","type","vt","replace","getter","setter","arity","join","mt","global","unsafe","nonConfigurable","nonWritable","bt","ceil","gt","floor","wt","trunc","St","kt","max","_t","min","It","Ot","xt","Tt","Ct","jt","includes","Lt","Rt","Wt","Zt","Et","Gt","getOwnPropertyNames","At","Pt","Xt","Ft","Kt","Nt","Dt","Ut","Yt","Ht","normalize","toLowerCase","data","NATIVE","POLYFILL","Jt","Vt","zt","target","stat","dontCallGetSet","forced","Mt","Bt","Qt","qt","$t","en","tn","callee","nn","rn","on","cn","an","sn","un","ln","fn","startsWith","dn","hn","pn","yn","proto","vn","mn","isArray","bn","gn","wn","Sn","kn","_n","In","On","exec","xn","Tn","Cn","Ln","Rn","Wn","Zn","En","Gn","An","Pn","foo","Boolean","Xn","Fn","Kn","Nn","keys","Un","defineProperties","Dn","Hn","Yn","Jn","Vn","zn","write","close","parentWindow","Mn","ActiveXObject","domain","style","display","appendChild","src","contentWindow","open","Bn","Qn","qn","$n","er","nr","tr","rr","or","ir","cr","ar","sr","ur","lr","fr","dr","hr","pr","yr","vr","mr","br","gr","wr","Sr","kr","_r","QObject","Ir","Or","xr","Tr","Cr","jr","Lr","Rr","Wr","findChild","Zr","Er","tag","description","Gr","Ar","Kr","Pr","Xr","Fr","wrap","useSetter","useSimple","Nr","keyFor","Ur","Dr","Hr","Yr","Jr","Vr","zr","Reflect","Mr","Br","Qr","qr","charAt","$r","charCodeAt","eo","to","no","ro","oo","io","co","ao","so","stringify","uo","lo","fo","ho","po","yo","vo","mo","bo","go","wo","So","JSON","ko","_o","Io","Oo","xo","To","Co","jo","codeAt","Lo","getPrototypeOf","Ro","Wo","Zo","Eo","Go","Ao","Po","Xo","IteratorPrototype","BUGGY_SAFARI_ITERATORS","Fo","Ko","No","Uo","Do","Ho","Yo","Jo","Vo","zo","Mo","Bo","Qo","entries","values","qo","$o","ei","ti","string","index","ni","ri","oi","ii","ci","ai","si","ui","li","fi","di","hi","pi","yi","from","vi","mi","bi","gi","wi","Si","ArrayBuffer","DataView","ki","_i","Ii","Oi","Int8Array","xi","Ti","Uint8ClampedArray","Ci","ji","Li","Ri","Wi","Zi","Ei","Gi","opera","Ai","Pi","Uint8Array","Int16Array","Uint16Array","Int32Array","Uint32Array","Float32Array","Float64Array","Xi","BigInt64Array","BigUint64Array","Fi","TypedArrayConstructor","Ki","Ni","NATIVE_ARRAY_BUFFER_VIEWS","TYPED_ARRAY_TAG","aTypedArray","aTypedArrayConstructor","exportTypedArrayMethod","exportTypedArrayStaticMethod","getTypedArrayConstructor","isView","isTypedArray","TypedArray","TypedArrayPrototype","Ui","Di","Yi","Ji","Vi","Hi","zi","Mi","Bi","Qi","qi","$i","ec","tc","nc","rc","kind","oc","Arguments","ic","isExtensible","cc","ac","sc","preventExtensions","uc","objectID","weakData","enable","splice","fastKey","getWeakData","onFreeze","lc","fc","stopped","result","dc","hc","that","AS_ENTRIES","IS_RECORD","IS_ITERATOR","INTERRUPTED","pc","yc","vc","mc","bc","gc","wc","Sc","kc","getConstructor","first","last","size","key","previous","removed","clear","delete","forEach","add","setStrong","_c","resolve","reject","Ic","status","reason","Set","Oc","setTimeout","xc","Tc","Cc","_state","_handled","_value","_deferreds","Ec","jc","_immediateFn","onFulfilled","onRejected","Rc","promise","Lc","Wc","_unhandledRejectionFn","Zc","catch","finally","allSettled","race","setImmediate","console","warn","Gc","Error","subarray","fromCharCode","Buffer","encoding","encode","stream","Blob","URL","createObjectURL","buffer","byteOffset","byteLength","XMLHttpRequest","send","responseText","revokeObjectURL","fatal","isEncoding","RangeError","ignoreBOM","decode","TextEncoder","TextDecoder","ReferenceError","listeners","callback","options","once","removeEventListener","defaultPrevented","construct","Proxy","aborted","onabort","Event","createEvent","initEvent","createEventObject","bubbles","cancelable","signal","dispatchEvent","toStringTag","__FORCE_INSTALL_ABORTCONTROLLER_POLYFILL","log","Request","AbortController","AbortSignal","Ac","locked","Map","addToLocked","unshift","isLocked","lock","unlock","getInstance","instance","Pc","__awaiter","__generator","acquiredIatSet","id","Date","now","acquireLock","releaseLock","releaseLock__private__","waitForSomethingToChange","refreshLockWhileAcquired","waiters","localStorage","getItem","setItem","iat","timeoutKey","timeAcquired","timeRefreshed","parse","lockCorrector","removeFromWaiting","clearTimeout","addEventListener","addToWaiting","filter","notifyWaiters","removeItem","Xc","Fc","timeoutInSeconds","Kc","Nc","Uc","Dc","error_description","fromPayload","Hc","appState","Yc","Jc","popup","Vc","zc","mfa_token","Mc","ia","audience","scope","Bc","setInterval","closed","clearInterval","response","Qc","crypto","msCrypto","qc","subtle","webkitSubtle","$c","getRandomValues","ea","btoa","ta","map","encodeURIComponent","na","digest","oncomplete","onerror","ra","decodeURIComponent","atob","oa","ca","ok","statusText","url","responseURL","text","json","blob","clone","headers","method","onload","getAllResponseHeaders","withCredentials","credentials","setRequestHeader","body","aa","abort","sa","auth","timeout","fetchUrl","fetchOptions","useFormData","MessageChannel","port1","onmessage","postMessage","port2","ua","la","message","fa","baseUrl","auth0Client","ha","da","trim","pa","prefix","client_id","toKey","fromKey","fromCacheEntry","ya","remove","allKeys","va","enclosedCache","ma","cache","keyManifest","nowProvider","getCacheKeys","matchExistingCacheKey","expiresAt","refresh_token","wrapCacheEntry","reduce","clearSync","expires_in","decodedToken","claims","exp","ba","storage","clientId","storageKey","transaction","save","daysUntilExpire","ga","wa","Sa","id_token","__raw","encoded","header","payload","signature","user","iss","sub","alg","aud","azp","nonce","max_age","auth_time","leeway","setUTCSeconds","parseInt","nbf","organizationId","org_id","ka","__assign","expires","setMilliseconds","getMilliseconds","toUTCString","path","secure","sameSite","cookie","getAll","Za","_a","Ia","Oa","xa","location","protocol","cookieDomain","Ta","Ca","sessionStorage","Ea","substring","ja","Worker","Ga","Aa","manifestKey","createManifestKeyFrom","Pa","Xa","memory","localstorage","Fa","Na","_releaseLockOnPageHide","cacheLocation","httpTimeoutMs","httpTimeoutInSeconds","cookieStorage","legacySameSiteCookie","orgHintCookieName","isAuthenticatedCookieName","sessionCheckExpiryDays","useCookiesForTransactions","transactionManager","cacheManager","domainUrl","tokenIssuer","issuer","defaultScope","advancedOptions","useRefreshTokens","navigator","userAgent","worker","customOptions","authorizeTimeoutInSeconds","redirect_uri","useRefreshTokensFallback","_url","_getParams","detailedResponse","response_type","response_mode","code_challenge","code_challenge_method","_authorizeUrl","_verifyIdToken","_parseNumber","_processOrgIdHint","buildAuthorizeUrl","fragment","organization","code_verifier","loginWithPopup","screenX","innerWidth","screenY","innerHeight","origin","href","code","grant_type","getUser","getIdTokenClaims","loginWithRedirect","redirectMethod","handleRedirectCallback","substr","oauthTokenScope","checkSession","getTokenSilently","ignoreCache","_getTokenSilently","access_token","_getEntryFromCache","_getTokenUsingRefreshToken","_getTokenFromIFrame","getTokenWithPopup","isAuthenticated","buildLogoutUrl","federated","logout","localOnly","prompt","crossOriginIsolated","setAttribute","contains","removeChild","module","toPrimitive","BASEMAPS","DARK_MATTER","GOOGLE_CUSTOM","GOOGLE_HYBRID","GOOGLE_ROADMAP","GOOGLE_SATELLITE","GoogleMap","POSITRON","VOYAGER","mapStyle","mapTypeId","getOwnPropertyDescriptors","basemap","viewState","layers","getTooltip","onClick","onResize","onViewStateChange","apiKey","mapId","customVersion","useRef","google","maps","event","trigger","position","zIndex","left","top","width","height","center","lat","latitude","lng","longitude","mapTypeControl","heading","bearing","tilt","pitch","zoom","fullscreenControl","zoomControl","streetViewControl","current","children","cartoGmap","GoogleMapsOverlay","debounce","getCenter","getZoom","getTilt","getHeading","cartoViewState","addListener","getDiv","offsetHeight","offsetWidth","onresize","cartoDeck","setMap","setCenter","setHeading","setTilt","setZoom","setOptions","setProps","useEffect","querySelector","async","getElementsByTagName","parentNode","insertBefore","ref","AggregationTypes","EDIT_MODES","FEATURE_SELECTION_MODES","FiltersLogicalOperators","GroupDateTypes","InvalidColumnError","MASK_ID","Provider","REQUEST_GET_MAX_URL_LENGTH","SpatialIndex","_FeatureFlags","_FilterTypes","_applyFilters","_assert","_buildFeatureFilter","_clearFeatureFlags","_filtersToSQL","_getApplicableFilters","_getClient","_hasFeatureFlag","_setClient","_setFeatureFlags","aggregationFunctions","encodeParameter","geojsonFeatures","getColumnNameFromGeoColumn","getGeometryToIntersect","getMonday","getRequest","getSpatialIndexFromGeoColumn","groupValuesByColumn","groupValuesByDateColumn","histogram","isGlobalViewport","makeIntervalComplete","normalizeGeometry","postRequest","randomString","scatterPlot","throttle","tileFeatures","Accept","getDay","getDate","setDate","UTC","getUTCFullYear","getUTCMonth","getUTCDate","coordinates","geometry","getType","polygon","multiPolygon","Number","MIN_SAFE_INTEGER","MAX_SAFE_INTEGER","freeze","H3","S2","QUADBIN","AND","OR","COUNT","AVG","MIN","MAX","SUM","CUSTOM","valuesColumns","joinOperation","keysColumn","operation","ticks","bin","start","end","find","xAxisColumns","xAxisJoinOperation","yAxisColumns","yAxisJoinOperation","BigQuery","Redshift","Postgres","Snowflake","Databricks","IN","BETWEEN","CLOSED_OPEN","TIME","STRING_SEARCH","getTime","isFinite","some","useRegExp","mustStart","mustEnd","RegExp","caseSensitive","keepSpecialCharacters","owner","ignore","toISOString","params","filters","filtersLogicalOperator","properties","every","MVT","GEOJSON","BINARY","Bigint","Geometry","Timestamp","Variant","Unknown","log2","PI","west","north","east","south","Point","MultiPoint","LineString","MultiLineString","Polygon","MultiPolygon","tan","primitivePolygonIndices","pathIndices","pointIndices","featureIds","numericProps","fields","uniqueId","tileIsFullyVisible","geometryIntersection","uniqueIdProperty","positions","tiles","geometryToIntersect","geoColumName","spatialIndex","getResolution","h3GetResolution","geometryToCells","polyfill","isVisible","viewport","tileFormat","bbox","points","lines","polygons","geojson","features","YEARS","MONTHS","WEEKS","DAYS","HOURS","MINUTES","SECONDS","getUTCHours","getUTCMinutes","getUTCSeconds","groupType","isNaN","sort","POLYGON","RECTANGLE","CIRCLE","LASSO_TOOL","EDIT","REMOTE_WIDGETS","EVENT_TYPES","EditableCartoGeoJsonLayer","updateState","props","oldProps","context","changeFlags","eventManager","_removeEventHandlers","_addEventHandlers","super","_getEventManager","eventHandler","_editableLayerState","eventType","priority","_eventManager","undefined","off","deck","useEventManager","isEdit","isSelected","selectedMode","isGmaps","carto","customEventManager","useMemo","disableDragAndDrop","gestureHandling","makePublicApi","stub","publicApi","onReady","defineGlobal","api","existingGlobalVariable","configuration","eventTarget","eventName","listener","addEventListeners","eventNames","capture","passive","listenerWithMonitor","isTrusted","__ddIsTrusted","allowUntrustedEvents","stop","listenerTarget","EventTarget","PageExitReason","HIDDEN","UNLOADING","PAGEHIDE","FROZEN","createPageMayExitObservable","observable","stopListeners","visibilityState","notify","stopBeforeUnloadListener","isPageExitReason","runOnReadyState","expectedReadyState","readyState","asyncRunOnReadyState","INTAKE_SITE_STAGING","INTAKE_SITE_FED_STAGING","INTAKE_SITE_US1","INTAKE_SITE_EU1","INTAKE_SITE_US1_FED","PCI_INTAKE_HOST_US1","INTAKE_URL_PARAMETERS","getConnectivity","onLine","interfaces","connection","effective_type","effectiveType","NO_ERROR_STACK_PRESENT_MESSAGE","computeRawError","stackTrace","originalError","handlingStack","componentStack","startClocks","nonErrorPrefix","handling","isErrorInstance","isError","computeMessage","stack","hasUsableStack","causes","flattenErrorCauses","fingerprint","tryToGetFingerprint","tryToGetErrorContext","dd_fingerprint","dd_context","parentSource","currentError","cause","ErrorSource","AGENT","CONSOLE","LOGGER","NETWORK","SOURCE","REPORT","TelemetryType","usage","ALLOWED_FRAME_URLS","TELEMETRY_EXCLUDED_SITES","preStartTelemetryBuffer","onRawTelemetryEventCollected","startTelemetry","telemetryService","contextProvider","alreadySentEvents","telemetryEnabled","site","telemetrySampleRate","telemetryEnabledPerType","telemetryConfigurationSampleRate","telemetryUsageSampleRate","runtimeEnvInfo","is_local_file","is_worker","rawEvent","stringifiedEvent","jsonStringify","maxTelemetryEventsPerPage","date","service","_dd","format_version","telemetry","runtime_env","connectivity","sdk_setup","experimental_features","toTelemetryEvent","sendToExtension","addTelemetryError","setContextProvider","provider","enabled","drainPreStartTelemetry","drain","isTelemetryReplicationAllowed","addTelemetryDebug","debug","formatError","addTelemetryConfiguration","addTelemetryUsage","computeStackTrace","scrubCustomerFrames","frame","allowedFrameUrl","BUFFER_LIMIT","createBoundedBuffer","arg","catchUserErrors","errorMsg","args","err","ConsoleApiName","info","globalConsole","originalConsoleMethods","PREFIX","DOCS_ORIGIN","DOCS_TROUBLESHOOTING","MORE_DETAILS","ExperimentalFeature","enabledExperimentalFeatures","initFeatureFlags","enableExperimentalFeatures","flag","isExperimentalFeatureEnabled","featureName","getExperimentalFeatures","getGlobalObject","globalObject","_dd_temp_","getZoneJsOriginalValue","browserWindow","original","Zone","__symbol__","instrumentMethod","targetPrototype","onPreCall","computeHandlingStack","instrumentation","parameters","postCallCallback","onPostCall","instrumentSetter","property","after","originalDescriptor","stoppedInstrumentation","instrumentationWrapper","mergeInto","destination","circularReferenceChecker","WeakSet","hasAlreadyBeenSeen","array","createCircularReferenceChecker","flags","ignoreCase","multiline","sticky","unicode","merged","deepClone","combine","sources","onMonitorErrorCollected","debugMode","startMonitorErrorCollection","newOnMonitorErrorCollected","setDebugMode","newDebugMode","monitor","callMonitored","monitorError","displayIfDebugEnabled","Observable","onFirstSubscribe","observers","subscribe","onLastUnsubscribe","unsubscribe","other","observer","mergeObservables","observables","globalObservable","subscriptions","subscription","requestIdleCallback","opts","cancelIdleCallback","timeoutId","didTimeout","timeRemaining","MAX_TASK_TIME","requestIdleCallbackShim","__ddBrowserSdkExtensionCallback","replacer","space","restoreObjectPrototypeToJson","detachToJsonMethod","restoreArrayPrototypeToJson","restoreValuePrototypeToJson","restoreValueToJson","object","objectToJson","toJSON","SANITIZE_DEFAULT_MAX_CHARACTER_COUNT","JSON_PATH_ROOT_ELEMENT","KEY_DECORATION_LENGTH","sanitize","maxCharacterCount","containerQueue","visitedObjectsWithPath","sanitizedData","sanitizeProcessor","serializedSanitizedData","accumulatedCharacterCount","containerToProcess","shift","separatorLength","targetData","warnOverCharacterLimit","parentPath","queue","sourceToSanitize","tryToApplyToJSON","sanitizedSource","sanitizeObjects","sourceAsObject","currentPath","currentTarget","changeType","UNKNOWN_FUNCTION","ex","stackProperty","tryToGetString","exString","line","stackFrame","parts","CHROME_LINE_RE","isNative","isEval","submatch","CHROME_EVAL_RE","column","func","parseChromeLine","CHROME_ANONYMOUS_FUNCTION_RE","parseChromeAnonymousLine","WINJS_LINE_RE","parseWinLine","GECKO_LINE_RE","GECKO_EVAL_RE","parseGeckoLine","fileUrl","filePosition","candidate","computeStackTraceFromOnErrorMessage","messageObj","ERROR_TYPES_RE","tryToParseMessage","createHandlingStack","formattedStack","toStackTraceString","formatErrorMessage","delay","item","isChromium","detectBrowserCached","isSafari","browserCache","chrome","vendor","detectBrowser","ONE_KIBI_BYTE","ONE_MEBI_BYTE","HAS_MULTI_BYTES_CHARACTERS","computeBytesCount","concatBuffers","buffers","total","offset","wait","needLeadingExecution","leading","needTrailingExecution","trailing","pendingExecutionWithParameters","pendingTimeoutId","inWaitPeriod","throttled","cancel","noop","performDraw","threshold","round","num","decimals","toFixed","isPercentage","isNumber","shallowClone","objectHasValue","isEmptyObject","mapValues","newObject","findLast","predicate","objectValues","objectEntries","isServerError","tryToClone","ONE_SECOND","ONE_MINUTE","ONE_HOUR","ONE_YEAR","relativeToClocks","relative","timeStamp","getCorrectedTimeStamp","timeStampToClocks","getRelativeTime","relativeTime","correctedOrigin","dateNow","performance","getNavigationStart","addDuration","getTimeStamp","currentDrift","toServerDuration","duration","timeStampNow","relativeNow","clocksNow","clocksOrigin","elapsed","timestamp","looksLikeRelativeTime","time","navigationStart","timing","normalizeUrl","buildUrl","isValidUrl","getPathName","pathname","base","supportedURL","isURLSupported","originalURL","getSupportedUrl","doc","anchorElement","implementation","createHTMLDocument","baseElement","head","getEventBridge","eventBridgeGlobal","DatadogEventBridge","getCapabilities","getPrivacyLevel","getAllowedWebViewHosts","viewId","view","bridgeSupports","capability","bridge","canUseEventBridge","currentHost","hostname","allowedHost","endsWith","MAX_ONGOING_BYTES_COUNT","MAX_ONGOING_REQUESTS","MAX_QUEUE_BYTES_COUNT","MAX_BACKOFF_TIME","INITIAL_BACKOFF_TIME","sendWithRetryStrategy","sendStrategy","trackType","reportError","transportStatus","queuedPayloads","bandwidthMonitor","canHandle","onSuccess","retryQueuedPayloads","onFailure","enqueue","scheduleRetry","dequeue","currentBackoffTime","shouldRetryRequest","ongoingRequestCount","retry","count","lastFailureStatus","isFull","queueFullReported","previousQueue","newPayloadQueue","bytesCount","createHttpRequest","endpointBuilder","bytesLimit","retryState","ongoingByteCount","sendStrategyForRetry","onResponse","isKeepAliveSupported","build","fetch","keepalive","fetchStrategy","fetchKeepAliveStrategy","sendOnExit","sendBeacon","beaconUrl","hasReportedBeaconError","reportBeaconError","sendBeaconStrategy","__spreadArray","pack","monitored","__","descriptor","originalMethod","search","arrayFrom","arrayLike","toAssign","CUSTOMER_DATA_BYTES_LIMIT","CUSTOMER_COMPRESSED_DATA_BYTES_LIMIT","BYTES_COMPUTATION_THROTTLING_DELAY","createCustomerDataTracker","checkCustomerDataLimit","bytesCountCache","computeBytesCountThrottled","cancelComputeBytesCount","resetBytesCount","updateCustomerData","resetCustomerData","getBytesCount","set_1","merged_1","sources_1","_this","createContextManager","customerDataTracker","changeObservable","contextManager","getContext","setContext","newContext","clearContext","setContextProperty","removeContextProperty","TrackingConsent","GRANTED","NOT_GRANTED","_b","storageListeners","storeContextManager","productKey","customerDataType","buildStorageKey","getFromStorage","rawContext","sanitizeUser","newUser","displayAlreadyInitializedError","sdkName","initConfiguration","silentMultipleInit","isAuthorized","handlerType","logger","loggerHandler","getHandler","sanitizedHandlerType","STATUS_PRIORITIES","getLevel","StatusType","notice","critical","alert","emerg","createErrorFieldFromRawError","rawError","includeMessage","HandlerType","STATUSES","Logger","handleLogStrategy","level","loggerContext","logImplementation","messageContext","sanitizedMessageContext","setHandler","handler","setLevel","decorators","desc","decorate","__decorate","createLoggerMethod","fetchObservable","initFetchObservable","input","init","methodFromParams","toUpperCase","responsePromise","startContext","reportFetch","partialContext","responseType","isAborted","DOMException","ABORT_ERR","afterSend","beforeSend","generateUUID","placeholder","initCookieParsed","getCurrentSiteCache","COMMA_SEPARATED_KEY_VALUE","safeTruncate","suffix","lastChar","correctedLength","setCookie","expireDelay","setTime","crossSite","partitioned","getCookie","rawString","lastIndex","findCommaSeparatedValue","getInitCookie","findCommaSeparatedValues","deleteCookie","SESSION_STORE_KEY","SESSION_TIME_OUT_DELAY","SESSION_EXPIRATION_DELAY","SESSION_ENTRY_REGEXP","SESSION_ENTRY_SEPARATOR","EXPIRED","getExpiredSessionState","isExpired","isSessionInNotStartedState","session","isSessionStarted","isSessionInExpiredState","sessionState","created","expire","expandSessionState","toSessionString","toSessionState","sessionString","isValidSessionString","entry","matches","OLD_SESSION_COOKIE_NAME","OLD_RUM_COOKIE_NAME","OLD_LOGS_COOKIE_NAME","RUM_SESSION_KEY","LOGS_SESSION_KEY","retrieveSessionCookie","LOCAL_STORAGE_TEST_KEY","persistInLocalStorage","retrieveSessionFromLocalStorage","expireSessionFromLocalStorage","ongoingOperations","LOCK_RETRY_DELAY","LOCK_MAX_TRIES","bufferedOperations","processSessionStoreOperations","operations","sessionStoreStrategy","numberOfRetries","isLockEnabled","persistSession","expireSession","persistWithLock","currentLock","retrieveStore","retrieveSession","currentStore","retryLater","processedSession","sessionStore","currentNumberOfRetries","nextOperations","STORAGE_POLL_DELAY","selectSessionStoreStrategyType","sessionStoreStrategyType","cookieOptions","useSecureSessionCookie","usePartitionedCrossSiteSessionCookie","useCrossSiteSessionCookie","trackSessionAcrossSubdomains","testCookieName","domainLevels","candidateDomain","getCurrentSite","buildCookieOptions","testCookieValue","isCookieCorrectlySet","areCookiesAuthorized","selectCookieStrategy","allowFallbackToLocalStorage","testKey","retrievedId","selectLocalStorageStrategy","startSessionStore","computeSessionState","sessionCache","cookieStore","renewObservable","expireObservable","sessionStateUpdateObservable","documentMode","expireSessionCookie","cookieStoreStrategy","oldSessionId","oldRumType","oldLogsType","tryOldCookiesMigration","watchSessionTimeoutId","synchronizeSession","startSession","synchronizedSession","trackingType","isTracked","expandOrRenewSessionState","hasSessionInCache","renewSessionInCache","throttledExpandOrRenewSession","cancelExpandOrRenewSession","isSessionInCacheOutdated","previousState","newState","expandOrRenewSession","expandSession","getSession","restartSession","updateSessionState","partialSessionState","createEndpointBuilder","configurationTags","buildUrlWithParameters","proxy","normalizedProxyUrl_1","host","internalAnalyticsSubdomain","usePciIntake","domainParts","extension","buildEndpointHost","createEndpointUrlWithParametersBuilder","clientToken","tags","reverse","buildEndpointParameters","urlPrefix","TAG_SIZE_LIMIT","buildTag","rawValue","valueSizeLimit","supportUnicodePropertyEscapes","hasForbiddenCharacters","sanitizedValue","isString","tagName","isSampleRate","sampleRate","validateAndBuildConfiguration","_d","sessionSampleRate","env","trackingConsent","storeContextsAcrossPages","batchBytesLimit","eventRateLimiterThreshold","flushTimeout","batchMessagesLimit","messageBytesLimit","datacenter","buildTags","endpointBuilders","logsEndpointBuilder","rumEndpointBuilder","sessionReplayEndpointBuilder","computeEndpointBuilders","intakeUrlPrefixes","builder","computeIntakeUrlPrefixes","replicaConfiguration","replica","replicaEndpointBuilders","applicationId","computeReplicaConfiguration","isIntakeUrl","intakeEndpoint","computeTransportConfiguration","RawReportType","intervention","deprecation","cspViolation","buildRawReportError","partial","buildStack","sourceFile","lineNumber","columnNumber","DEFAULT_REQUEST_ERROR_RESPONSE_LENGTH_LIMIT","validateAndBuildForwardOption","option","allowedValues","createPreStartStrategy","getCommonContext","trackingConsentState","doStartLogs","cachedInitConfiguration","cachedConfiguration","bufferApiCalls","trackingConsentStateSubscription","tryStartLogs","isGranted","startLogsResult","overrideInitConfigurationForBridge","baseConfiguration","forwardConsoleLogs","forwardReports","forwardErrorsToLogs","requestErrorResponseLengthLimit","sendLogsAfterSessionExpiration","validateAndBuildLogsConfiguration","tryToInit","getInternalContext","handleLog","statusType","LOGS_STORAGE_KEY","SYNTHETICS_TEST_ID_COOKIE_NAME","SYNTHETICS_RESULT_ID_COOKIE_NAME","SYNTHETICS_INJECTS_RUM_COOKIE_NAME","willSyntheticsInjectRum","_DATADOG_SYNTHETICS_INJECTS_RUM","getSyntheticsResultId","_DATADOG_SYNTHETICS_RESULT_ID","END_OF_TIMES","Infinity","CLEAR_OLD_VALUES_INTERVAL","VISIBILITY_CHECK_DELAY","SESSION_CONTEXT_TIMEOUT_DELAY","stopCallbacks","startSessionManager","sessionContextHistory","maxEntries","clearOldValuesInterval","oldTimeThreshold","endTime","clearOldValues","startTime","returnInactive","entries_1","closeActive","latestEntry","findAll","reset","createValueHistory","buildSessionContext","isReplayForced","forcedReplay","trackActivity","expandSessionWhenVisible","visibilityCheckInterval","trackVisibility","cb","trackResume","findSession","computeTrackingType","logsSentBeforeRumInjectionTelemetryAdded","getRUMInternalContext","getInternalContextFromRumGlobal","DD_RUM_SYNTHETICS","testId","_DATADOG_SYNTHETICS_PUBLIC_ID","resultId","DD_RUM","rumGlobal","startLogsAssembly","sessionManager","lifeCycle","statusWithCustom","logRateLimiters","limit","onLimitReached","eventCount","allowNextEvent","isLimitReached","rawLogsEvent","savedCommonContext","domainContext","findTrackedSession","commonContext","session_id","usr","consoleObservablesByApi","xhrObservable","LogStatusForApi","xhrContexts","openXhr","xhr","abortXhr","startNetworkErrorCollection","xhrSubscription","stopInstrumentingStart","stopInstrumentingSend","hasBeenReported","stopInstrumentingOnReadyStateChange","DONE","onEnd","unsubscribeLoadEndListener","completeContext","sendXhr","stopInstrumentingAbort","createXhrObservable","initXhrObservable","handleResponse","fetchSubscription","request","onResponseDataAvailable","responseData","format","http","status_code","isRejected","truncateResponseText","computeXhrResponseData","clonedResponse","reader","getReader","chunks","readBytesCount","onDone","bytes","limitExceeded","collectStreamBody","completeBuffer_1","offset_1","chunk","readMore","read","readBytesFromStream","truncateResponseStream","computeFetchResponseText","computeFetchErrorText","trackRuntimeError","errorObservable","handleRuntimeError","stopInstrumentingOnError","errorObj","stopInstrumentingOnUnhandledRejection","instrumentUnhandledRejection","LifeCycle","AbstractLifeCycle","callbacks","eventCallbacks","loggerToConsoleApiName","createBatch","encoder","flushController","upsertBuffer","flushSubscription","flushObservable","upsertMessages","isPageExit","isAsync","encoderResult","finishSync","outputBytesCount","formatPayloadFromEncoder","pendingMessages","pendingData","isEmpty","finish","flush","addOrUpdate","serializedMessage","estimatedMessageBytesCount","estimateEncodedBytesCount","hasMessageFor","removedMessage","messageBytesCount","notifyAfterRemoveMessage","notifyBeforeAddMessage","notifyAfterAddMessage","realMessageBytesCount","upsert","output","xhrUrl","sendXHR","createFlushController","durationLimitTimeoutId","messagesLimit","durationLimit","pageExitObservable","sessionExpireObservable","pageExitSubscription","sessionExpireSubscription","currentBytesCount","currentMessagesCount","flushReason","messagesCount","cancelDurationLimitTimeout","messageBytesCountDiff","startBatchWithReplica","primary","batchFactoryImp","primaryBatch","createBatchFromConfig","replicaBatch","endpoint","replicated","transformMessage","createIdentityEncoder","additionalEncodedBytesCount","rawBytesCount","startLogsTelemetry","event_1","_f","application","application_id","action","user_action","cleanupTasks","bridge_1","telemetrySubscription_1","telemetryBatch_1","telemetrySubscription_2","baseSerializedInitConfiguration","session_sample_rate","telemetry_sample_rate","telemetry_configuration_sample_rate","telemetry_usage_sample_rate","use_before_send","use_cross_site_session_cookie","use_partitioned_cross_site_session_cookie","use_secure_session_cookie","use_proxy","silent_multiple_init","track_session_across_subdomains","allow_fallback_to_local_storage","store_contexts_across_pages","allow_untrusted_events","tracking_consent","forward_errors_to_logs","forward_console_logs","forward_reports","use_pci_intake","send_logs_after_session_expiration","serializeLogsConfiguration","task","datadogLogs","startLogsImpl","currentConsent","customerDataTrackerManager","compressionStatus","customerDataTrackers","alreadyWarned","initialBytesCount","bytesCountLimit","tracker","displayCustomerDataLimitReachedWarning","createDetachedTracker","getOrCreateTracker","setCompressionStatus","newCompressionStatus","getCompressionStatus","createCustomerDataTrackerManager","globalContextManager","userContextManager","update","referrer","buildCommonContext","strategy","startReportError","createPageExitObservable","startLogsSessionManagerStub","rawTrackingType","rawSessionType","hasValidLoggerSession","startLogsSessionManager","stopLogsTelemetry","rawErrorObservable","startRuntimeErrorCollection","apis","consoleObservables","originalConsoleApi","param","formatConsoleParameters","firstErrorParam","buildConsoleLog","createConsoleObservable","collectedData","startConsoleCollection","blockedURI","effectiveDirective","csp","disposition","originalPolicy","buildRawReportErrorFromCspViolation","createCspViolationReportObservable","reportTypes","ReportingObserver","handleReports","reports","report","buildRawReportErrorFromReport","types","buffered","observe","disconnect","createReportObservable","initReportObservable","getFileFromStackTraceString","startReportCollection","logsMessage","savedDate","displayInConsole","rawLogEventData","startLoggerCollection","serverLogsEvent","startLogsBridge","stopLogsBatch_1","batch","startLogsBatch","trackedSession","createPostStartStrategy","customLoggers","mainLogger","setTrackingConsent","feature","getGlobalContext","setGlobalContext","setGlobalContextProperty","removeGlobalContextProperty","clearGlobalContext","createLogger","conf","getLogger","getInitConfiguration","setUser","isValid","checkUser","setUserProperty","sanitizedProperty","removeUserProperty","clearUser","makeLogsPublicApi","CustomerContextKey","userContext","globalContext","accountContext","ContextManagerMethod","startDurationVital","vitalsByName","vitalsByReference","vital","reference","__dd_vital_reference","stopDurationVital","stopCallback","nameOrRef","vitalStart","stopOptions","stopClocks","buildDurationVital","callPluginsMethod","plugins","methodName","parameter","plugin","SESSION_COOKIE_EXPIRATION_DELAY","SessionPersistence","COOKIE","LOCAL_STORAGE","previousSessionState","expiredSessionState","trackAnonymousUser","anonymousId","sessionPersistence","initCookieStrategy","initLocalStorageStrategy","normalizedProxyUrl","profilingEndpointBuilder","DefaultPrivacyLevel","ALLOW","MASK","MASK_USER_INPUT","TraceContextInjection","ALL","SAMPLED","isMatchOption","itemType","matchList","list","useStartsWith","createSpanIdentifier","createIdentifier","bits","radix","high","low","str","mod","toPaddedHexadecimalString","padStart","sampleDecisionCache","clearTracingIfNeeded","traceId","spanId","traceSampled","injectHeadersIfTracingAllowed","inject","tracingOption","allowedTracingUrls","sessionId","decision","BigInt","identifier","knuthFactor","twoPow64","sampleUsingKnuthFactor","isTraceSampled","traceSampleRate","traceContextInjection","propagatorTypes","tracingHeaders","propagatorType","traceparent","tracestate","b3","USER_ACCOUNT_TRACE_HEADER","propagateTraceBaggage","baggageItems","userId","accountId","baggageHeader","makeTracingHeaders","DEFAULT_PROPAGATOR_TYPES","validateAndBuildRumConfiguration","_g","trackFeatureFlagsForEvents","sessionReplaySampleRate","excludedActivityUrls","tracingOptions","expectedItem","isTracingOption","validateAndBuildTracingOptions","profilingEnabled","PROFILING","actionNameAttribute","startSessionReplayRecordingManually","rulePsr","workerUrl","compressIntakeRequests","trackUserInteractions","trackViewsManually","trackResources","trackLongTasks","subdomain","defaultPrivacyLevel","enablePrivacyForActionName","customerDataTelemetrySampleRate","profilingSampleRate","getSelectedTracingPropagators","usedTracingPropagators","REMOTE_CONFIGURATION_VERSION","displayRemoteConfigurationFetchingError","CONTEXT_STORE_KEY_PREFIX","contextFromStorage","ensureProperties","propertiesConfig","required","isDefined","maybeContext","checkContext","buildGlobalContextManager","buildUserContextManager","email","buildAccountContextManager","ignoreInitIfSyntheticsWillInjectRum","startDeflateWorker","customVitalsState","doStartRum","bufferContextCalls","firstStartViewCall","deflateWorker","tryStartRum","emptyContext","initialViewOptions","startRumResult","doInit","eventBridgeAvailable","baseSerializedConfiguration","track_anonymous_user","session_persistence","session_replay_sample_rate","start_session_replay_recording_manually","trace_sample_rate","trace_context_injection","action_name_attribute","use_allowed_tracing_urls","selected_tracing_propagators","default_privacy_level","enable_privacy_for_action_name","use_excluded_activity_urls","use_worker_url","compress_intake_requests","track_views_manually","track_user_interactions","track_resources","track_long_task","getConfigurationTelemetry","track_feature_flags_for_events","serializeRumConfiguration","addDurationVital","remoteConfigurationId","remoteConfiguration","rum","buildEndpoint","fetchRemoteConfiguration","remoteInitConfiguration","applyRemoteConfiguration","fetchAndApplyRemoteConfiguration","stopSession","addTiming","startView","setViewName","setViewContext","setViewContextProperty","getViewContext","addAction","addError","providedError","addFeatureFlagEvaluation","preStartContextManager","makeRumPublicApi","startRumImpl","recorderApi","profilerApi","createTrackingConsentState","createDeflateEncoder","streamId","onRumStart","viewHistory","preStartStrategy","sanitizedOptions","defineContextMethod","contextName","rumPublicApi","setAccount","getAccount","setAccountProperty","removeAccountProperty","clearAccount","getSessionReplayLink","startSessionReplayRecording","force","stopSessionReplayRecording","getMutationObserverConstructor","MutationObserver","patchedInstance","originalInstance","cleanupHistoriesInterval","clearExpiredValues","VIEW_CONTEXT_TIME_OUT_DELAY","FAKE_INITIAL_DOCUMENT","RESOURCE_TYPES","initiatorType","areInOrder","numbers","isResourceEntryRequestType","computeResourceEntryDuration","responseEnd","computeResourceEntryDetails","hasValidResourceEntryTimings","fetchStart","workerStart","redirectStart","redirectEnd","domainLookupStart","domainLookupEnd","connectStart","secureConnectionStart","connectEnd","requestStart","responseStart","details","download","formatTiming","first_byte","connect","ssl","dns","redirect","hasValidResourceEntryDuration","areCommonTimingsInOrder","areRedirectionTimingsInOrder","hasRedirection","computeResourceEntryProtocol","nextHopProtocol","computeResourceEntryDeliveryType","deliveryType","computeResourceEntrySize","encodedBodySize","decodedBodySize","transferSize","encoded_body_size","decoded_body_size","transfer_size","isAllowedRequestUrl","DATA_URL_REGEX","MAX_ATTRIBUTE_VALUE_CHAR_LENGTH","isLongDataUrl","sanitizeDataUrl","nextRequestIndex","startRequestCollection","tracer","traceFetch","append","Headers","traceXhr","startTracer","requestIndex","getNextRequestIndex","trackXhr","completeBuffer","POSITIVE_INFINITY","waitForResponseToComplete","trackFetch","discardNegativeDuration","trackEventCounts","isChildEvent","onChange","eventCounts","errorCount","longTaskCount","resourceCount","actionCount","frustrationCount","frustration","discarded","RumPerformanceEntryType","createPerformanceObservable","PerformanceObserver","handlePerformanceEntries","rumPerformanceEntries","entryType","RESOURCE","isForbiddenResource","filterRumPerformanceEntries","isObserverInitializing","getEntries","NAVIGATION","LONG_TASK","PAINT","getEntriesByType","entryTypes","stopFirstInputTiming","resourceTimingBufferFullListener","clearResourceTimings","manageResourceTimingBufferFull","supportPerformanceTimingEvent","FIRST_INPUT","startTimeStamp","timingSent","removeEventListeners","evt","processingStart","processingEnd","sendTiming","sendTimingIfPointerIsNotCancelled","retrieveFirstInputTiming","supportedEntryTypes","PAGE_ACTIVITY_VALIDATION_DELAY","PAGE_ACTIVITY_END_DELAY","waitPageActivityEnd","domMutationObservable","windowOpenObservable","pageActivityEndCallback","maxDuration","pageActivityObservable","firstRequestIndex","pendingRequestsCount","notifyPageActivity","isExcludedUrl","startEvent","isBusy","createPageActivityObservable","pageActivityEndTimeoutId","hasCompleted","validationTimeoutId","complete","hadActivity","maxDurationTimeoutId","pageActivitySubscription","lastChangeTime","doWaitPageActivityEnd","requestUrl","isTextNode","node","nodeType","Node","TEXT_NODE","isElementNode","ELEMENT_NODE","isNodeShadowHost","shadowRoot","isNodeShadowRoot","DOCUMENT_FRAGMENT_NODE","hasChildNodes","childNodes","forEachChildNodes","child","firstChild","nextSibling","getParentNode","NodePrivacyLevel","IGNORE","PRIVACY_ATTR_NAME","PRIVACY_ATTR_VALUE_HIDDEN","PRIVACY_CLASS_PREFIX","CENSORED_STRING_MARK","CENSORED_IMG_MARK","FORM_PRIVATE_TAG_NAMES","INPUT","OUTPUT","TEXTAREA","SELECT","OPTION","DATALIST","OPTGROUP","getNodePrivacyLevel","parentNodePrivacyLevel","nodePrivacyLevel","reducePrivacyLevel","getNodeSelfPrivacyLevel","childPrivacyLevel","inputElement","autocomplete","getAttribute","getPrivacySelector","element","nodeName","relAttribute","getLowerCaseAttribute","nameAttribute","propertyAttribute","hasAttribute","shouldIgnoreElement","shouldMaskNode","privacyLevel","isFormElement","censorText","getTextContent","textNode","ignoreWhiteSpace","parentTagName","parentElement","textContent","DEFAULT_PROGRAMMATIC_ACTION_NAME_ATTRIBUTE","ACTION_NAME_PLACEHOLDER","getActionNameFromElementProgrammatically","targetElement","programmaticAttribute","elementWithAttribute","closest","truncate","normalizeWhitespace","priorityStrategies","userProgrammaticAttribute","labels","getActionNameFromTextualContent","nameSource","privacyEnabledActionName","getActionNameFromStandardAttribute","labelledByAttribute","refElement","ownerDocument","getElementById","getTextualContent","fallbackStrategies","MAX_PARENTS_TO_CONSIDER","getActionNameFromElementForStrategies","strategies","recursionCounter","actionName","trimmedName","attribute","isContentEditable","innerText","removeTextFromElements","query","querySelectorAll","textToReplace","STABLE_ATTRIBUTES","GLOBALLY_UNIQUE_SELECTOR_GETTERS","getStableAttributeSelector","isGeneratedValue","CSS","escape","UNIQUE_AMONG_CHILDREN_SELECTOR_GETTERS","classList","className","getSelectorFromElement","isConnected","targetElementSelector","currentElement","globallyUniqueSelector","findSelector","isSelectorUniqueGlobally","isSelectorUniqueAmongSiblings","combineSelector","getPositionSelector","selector","getAttributeSelector","attributeName","sibling","firstElementChild","elementIndex","nextElementSibling","selectorGetters","childSelector","selectorGetter","elementSelector","currentElementSelector","isSiblingMatching","scopedSelector","parent","MAX_DURATION_BETWEEN_CLICKS","MAX_DISTANCE_BETWEEN_CLICKS","isSelectionEmpty","selection","getSelection","isCollapsed","isValidPointerEvent","Element","isPrimary","MIN_CLICKS_PER_SECOND_TO_CONSIDER_RAGE","DEAD_CLICK_EXCLUDE_SELECTOR","isDead","click","hasPageActivity","getUserActivity","scroll","CLICK_ACTION_MAX_DURATION","interactionSelectorCache","updateInteractionSelector","relativeTimestamp","ACTION_CONTEXT_TIME_OUT_DELAY","trackClickActions","history","stopObservable","currentClickChain","stopClickChain","stopActionEventsListener","onPointerDown","onPointerUp","selectionEmptyAtPointerDown","clickContext","userActivity","localUserActivity","listenActionEvents","pointerDownEvent","clickActionBase","rect","getBoundingClientRect","defaultActionName","getActionNameFromElement","clientX","clientY","computeClickActionBase","hadActivityOnPointerDown","pageActivityEndEvent","processPointerDown","appendClickToClickChain","newClick","stopWaitPageActivityEnd","discard","viewEndedSubscription","endClocks","stopSubscription","startClickAction","actionContexts","findActionId","tryAppend","rageClick","firstClick","onFinalize","bufferedClicks","maxDurationBetweenClicksTimeoutId","appendClick","tryFinalize","dontAcceptMoreClick","isStopped","second","sqrt","pow","createClickChain","clicks","isRage","addFrustration","hasError","hasSelectionChanged","computeFrustration","validate","finalizeClicks","historyEntry","eventCountsSubscription","activityEndTime","frustrationTypes","newActivityEndTime","frustrationType","domEvents","clickAction","counts","events","processAction","autoActionProperties","isAutoAction","loading_time","long_task","resource","name_source","actionEvent","customerContext","rawRumEvent","startErrorCollection","initConsoleObservable","consoleLog","trackConsoleError","trackReportError","processError","doStartErrorCollection","handling_stack","component_stack","source_type","IDLE_CALLBACK_TIMEOUT","MAX_EXECUTION_TIME_ON_TIMEOUT","alreadyMatchedEntries","INITIAL_DOCUMENT_OUTDATED_TRACE_ID_THRESHOLD","getDocumentTraceId","traceIdMeta","traceTimeMeta","createDocumentTraceData","content","getDocumentTraceDataFromMeta","comment","getTraceCommentFromNode","findTraceComment","getDocumentTraceDataFromComment","traceTime","rawTraceTime","COMMENT_NODE","isCommentNode","getNavigationEntry","navigationEntry","timings","numberKey","timingElement","computeTimingsFromDeprecatedPerformanceTiming","loadEventEnd","retrieveInitialDocumentResourceTiming","getNavigationEntryImpl","startResourceCollection","pageStateHistory","taskQueue","pendingTasks","run","deadline","executionTimeRemaining","scheduleNextRun","createTaskQueue","retrieveInitialDocumentResourceTimingImpl","handleResource","matchingTiming","sameNameEntries","getEntriesByName","candidates","isBetween","matchRequestResourceEntry","tracingInfo","span_id","trace_id","rule_psr","computeRequestTracingInfo","correspondingTimingOverrides","computeResourceEntryMetrics","wasInPageStateDuringPeriod","computeRequestDuration","resourceEvent","delivery_type","performanceEntry","requestInput","requestInit","processRequest","performanceResourceSubscription","processResourceEntry","computeRawEvent","computeResourceEntryTracingInfo","isType","computeResourceEntryType","entryMetrics","statusCode","responseStatus","renderBlockingStatus","render_blocking_status","DISCARDED","FCP_MAXIMUM_DELAY","LCP_MAXIMUM_DELAY","trackFirstHidden","VISIBILITY_STATE","firstHiddenEntry","trackInitialViewMetrics","setLoadEvent","scheduleViewUpdate","initialViewMetrics","stopNavigationTracking","stopOnReadyState","waitAfterLoadEvent","isIncompleteNavigation","domComplete","domContentLoaded","domContentLoadedEventEnd","domInteractive","loadEvent","firstByte","processNavigationEntry","trackNavigationTimings","navigationTimings","firstHidden","stopFCPTracking","fcpEntry","firstContentfulPaint","trackFirstContentfulPaint","stopLCPTracking","firstInteractionTimestamp","stopEventListener","biggestLcpSize","performanceLcpSubscription","LARGEST_CONTENTFUL_PAINT","lcpEntry","lcpTargetSelector","largestContentfulPaint","targetSelector","resourceUrl","trackLargestContentfulPaint","stopFIDTracking","performanceFirstInputSubscription","firstInputEntry","firstInputDelay","firstInputTargetSelector","firstInput","trackFirstInput","calculateArea","getClsAttributionImpactedArea","previousRect","currentRect","rect1","rect2","right","bottom","calculateIntersectionArea","getTopImpactedElement","topImpactedSource","currentImpactedArea","asRumRect","MAX_WINDOW_DURATION","MAX_UPDATE_GAP","interactionCountEstimate","minKnownInteractionId","maxKnownInteractionId","getInteractionCount","interactionCount","MAX_INTERACTION_ENTRIES","MAX_INP_VALUE","getScrollX","scrollX","visual","visualViewport","pageLeft","offsetLeft","pageXOffset","getScrollY","scrollY","pageTop","offsetTop","pageYOffset","viewportObservable","initViewportObservable","updateDimension","getViewportDimension","createViewportObservable","scale","THROTTLE_SCROLL_DURATION","trackCommonViewMetrics","loadingType","viewStart","commonViewMetrics","stopLoadingTimeTracking","loadType","isWaitingForLoadEvent","isWaitingForActivityLoadingTime","loadingTimeCandidates","invokeCallbackIfAllCandidatesAreReceived","loadingTime","newLoadingTime","trackLoadingTime","stopScrollMetricsTracking","scrollValues","throttleDuration","ResizeObserver","throttledNotify","scrollTop","scrollHeight","scrollingElement","documentElement","scrollDepth","computeScrollValues","observerTarget","resizeObserver","eventListener","createScrollValuesObservable","maxScrollDepth","maxScrollHeight","maxScrollHeightTime","shouldUpdate","maxDepth","maxDepthScrollTop","trackScrollMetrics","newScrollMetrics","stopCLSTracking","LAYOUT_SHIFT","biggestShift","maxClsValue","slidingWindow","cumulatedValue","maxValue","isMaxValue","slidingSessionWindow","performanceSubscription","hadRecentInput","attribution","WeakRef","devicePixelRatio","deref","trackCumulativeLayoutShift","cumulativeLayoutShift","stopINPTracking","getInteractionToNextPaint","setViewEnd","viewLoadingType","EVENT","PerformanceEventTiming","getViewInteractionCount","stopViewInteractionCount","interactionId","durationThreshold","previousInteractionCount","computeViewInteractionCount","trackViewInteractionCount","viewEnd","longestInteractions","sortAndTrimLongestInteractions","interactionIndex","findIndex","interaction","minLongestInteraction","estimateP98Interaction","trackLongestInteractions","interactionToNextPaintTargetSelector","interactionToNextPaintStartTime","interactionToNextPaint","handleEntries","newInteraction","getInteractionSelector","firstInputSubscription","eventSubscription","viewEndTime","trackInteractionToNextPaint","getCommonViewMetrics","THROTTLE_VIEW_UPDATE_PERIOD","SESSION_KEEP_ALIVE_INTERVAL","KEEP_TRACKING_AFTER_VIEW_DELAY","getPathFromHash","hash","startViewCollection","hooks","pageOpenObservable","locationChangeObservable","_h","_j","_k","_l","_m","_p","_q","_s","replayStats","getReplayStats","clsDevicePixelRatio","viewEvent","document_version","documentVersion","replay_stats","cls","device_pixel_ratio","cumulative_layout_shift","cumulative_layout_shift_time","cumulative_layout_shift_target_selector","dom_complete","dom_content_loaded","dom_interactive","first_contentful_paint","first_input_delay","first_input_time","first_input_target_selector","interaction_to_next_paint","interaction_to_next_paint_time","interaction_to_next_paint_target_selector","is_active","isActive","largest_contentful_paint","largest_contentful_paint_target_selector","load_event","loading_type","computeViewPerformanceData","time_spent","max_depth","max_depth_scroll_top","max_scroll_height","max_scroll_height_time","privacy","replay_level","customTimings","custom_timings","processViewUpdate","register","findView","areViewsTrackedAutomatically","activeViews","locationChangeSubscription","currentView","startNewView","viewOptions","newlyCreatedView","initialLocation","sessionIsActive","viewCreatedEvent","cancelScheduleViewUpdate","triggerViewUpdate","stopCommonViewMetricsTracking","stopInitialViewMetricsTracking","stopEventCountsTracking","trackViewEventCounts","keepAliveIntervalId","pageMayExitSubscription","pageMayExitEvent","triggerBeforeViewUpdate","currentEnd","sanitized","sanitizeTiming","updatedName","newView","oldLocation","newLocation","currentLocation","otherLocation","correspondingId","isHashAnAnchor","renewViewOnLocationChange","trackViews","score","target_selector","previous_rect","current_rect","fcp","fid","inp","lcp","resource_url","isTypeTracked","rumSessionType","pageMightExit","pageMayExitObservable","startRumBatch","telemetryEventObservable","createEncoder","serverRumEvent","URL_CONTEXT_TIME_OUT_DELAY","getHistoryInstrumentationTarget","History","FEATURE_FLAG_CONTEXT_TIME_OUT_DELAY","MEASURES_PERIOD_DURATION","currentPeriodMeasures","batchHasRumEvent","sendCurrentPeriodMeasures","batchCount","initCurrentPeriodMeasures","updateMeasure","measure","sum","batchBytesCount","batchMessagesCount","MAX_PAGE_STATE_ENTRIES","MAX_PAGE_STATE_ENTRIES_SELECTABLE","PAGE_STATE_CONTEXT_TIME_OUT_DELAY","processPageStates","pageStateEntries","eventStartTime","maxPageStateEntriesSelectable","getPageState","hasFocus","WATCH_COOKIE_INTERVAL_DELAY","createCookieObservable","cookieName","previousCookieValue","watchCookieIntervalId","cookieValue","watchCookieStrategy","CI_VISIBILITY_TEST_ID_COOKIE_NAME","createEventRateLimiter","limitModification","modifiableFieldPaths","modifier","fieldPath","fieldType","setValueAtPath","pathSegments","field","restPathSegments","isValidObject","newType","setNestedValue","VIEW_MODIFIABLE_FIELD_PATHS","USER_CUSTOMIZABLE_FIELD_PATHS","ROOT_MODIFIABLE_FIELD_PATHS","modifiableFieldPathsByEvent","startRum","hookName","unregister","triggerHook","hookCallbacks","results","createHooks","startRumTelemetry","sessionReplay","setForcedReplay","startRumSessionManagerStub","hasValidRumSession","sessionEntity","startRumSessionManager","startRumEventBridge","batchFlushObservable","startCustomerDataTelemetry","attributes","characterData","childList","subtree","createDOMMutationObservable","stopHistoryTracking","onHistoryChange","stopInstrumentingPushState","stopInstrumentingReplaceState","removeListener","trackHistory","onLocationChange","stopHashTracking","onHashChange","trackHash","createLocationChangeObservable","stopWindowOpen","createWindowOpenObservable","pageStateEntryHistory","currentPageState","addPageState","stopEventListeners","persisted","computePageState","nextPageState","pageState","page_states","in_foreground","startPageStateHistory","viewValueHistory","buildViewHistoryEntry","viewUpdate","startViewHistory","urlContexts","urlContextHistory","previousViewUrl","viewUrl","buildUrlContext","changeTime","urlContext","findUrl","startUrlContexts","featureFlagContexts","featureFlagContext","feature_flags","currentContext","startFeatureFlagContexts","hasReplay","sampledForReplay","isRecording","has_replay","sampled_for_replay","startSessionContext","startConnectivityContext","startGlobalContext","anonymous_id","startUserContext","accountContextManager","account","startAccountContext","stopRumEventCollection","actionCollection","actionId","startActionCollection","displayContext","animationFrameId","requestAnimationFrame","unsubscribeViewport","viewportDimension","cancelAnimationFrame","startDisplayContext","ciVisibilityContext","cookieObservable","testExecutionId","Cypress","cookieObservableSubscription","ci_test","test_execution_id","startCiVisibilityContext","getSyntheticsTestId","synthetics","test_id","result_id","injected","startSyntheticsContext","WRITABLE_RESOURCE_GRAPHQL","eventRateLimiters","rumContext","drift","browser_sdk_version","assembledEvent","shouldSend","startRumAssembly","startRumEventCollection","stopViewCollection","stopResourceCollection","LONG_ANIMATION_FRAME","stopLongAnimationFrameCollection","entry_type","blocking_duration","blockingDuration","first_ui_event_timestamp","firstUIEventTimestamp","render_start","renderStart","style_and_layout_start","styleAndLayoutStart","start_time","scripts","script","pause_duration","pauseDuration","forced_style_and_layout_duration","forcedStyleAndLayoutDuration","execution_start","executionStart","source_url","sourceURL","source_function_name","sourceFunctionName","source_char_position","sourceCharPosition","invoker","invoker_type","invokerType","window_attribution","windowAttribution","startLongAnimationFrameCollection","startLongTaskCollection","vitalCollection","valueComputedBySdk","computed_value","processVital","startVitalCollection","internalContext","viewContext","startInternalContext","getSessionReplayUrl","errorType","rumConfiguration","getSiteDefaultSubdomain","getDatadogSiteUrl","MAX_STATS_HISTORY","statsPerView","getSegmentsCount","getOrCreateReplayStats","segments_count","addSegment","addRecord","records_count","addWroteData","additionalBytesCount","segments_total_raw_size","toDelete","deleteOldestStats","compressedDataTrailer","compressedData","nextWriteActionId","pendingWriteActions","removeMessageListener","workerResponse","trailer","nextPendingAction","writeCallback","finishCallback","consumeResult","sendResetIfNeeded","pendingWriteAction","reportScriptLoadingError","configuredUrl","scriptType","baseMessage","INITIALIZATION_TIME_OUT_DELAY","createDeflateWorker","onInitializationFailure","createDeflateWorkerImpl","removeErrorListener","onError","initializationFailureCallbacks","onTimeout","doStartDeflateWorker","getDeflateWorkerStatus","worker_version","stream_id","isBrowserSupported","CSSSupportsRule","NodeList","loadRecorder","getOrCreateDeflateEncoder","stopRecording","doStart","startRecordingImpl","deflateEncoder","canStartRecording","isRecordingInProgress","shouldForceReplay","isRecordingStarted","getErrorType","importRecorder","startRecording","lazyLoadProfiler","importProfilerImpl","importProfiler","createRumProfiler","shouldStartImmediately","cachedDeflateEncoder","makeRecorderApi","importRecorderImpl","profiler","Profiler","makeProfilerApi","datadogRum","DEFAULT_USER_COMPONENT_IN_URL","API_VERSIONS","V1","V2","V3","SchemaFieldType","FilterTypes","NO_TRANSITION_PROPS","transitionDuration","INERTIA_EASING","pinchEventWorkaround","Controller","isDragging","transitionManager","getControllerState","ControllerState","_onTransition","onStateChange","_setInteractionState","handleEvent","makeViewport","customEvents","toggleEvents","_customEvents","finalize","_events","_this$eventManager","_controllerState","eventStartBlocked","_eventStartBlocked","_onPanStart","_onPan","_onPanEnd","_onPinchStart","_onPinch","_onPinchEnd","_onTriplePanStart","_onTriplePan","_onTriplePanEnd","_onDoubleTap","_onWheel","_onKeyDown","controllerState","offsetCenter","isPointInBounds","pos","handled","inside","stopPropagation","isFunctionKeyPressed","srcEvent","metaKey","altKey","ctrlKey","shiftKey","_interactionState","blockEvents","timer","dragMode","transitionInterpolator","_getTransitionProps","processViewStateChange","inertia","scrollZoom","dragPan","dragRotate","doubleClickZoom","touchZoom","touchRotate","keyboard","isInteractive","updateTransition","updateViewport","newControllerState","extraProps","interactionState","getViewportProps","changed","getState","oldViewState","newStates","alternateMode","rightButton","invertPan","_panMove","_onPanMove","_onPanRotate","_onPanMoveEnd","_onPanRotateEnd","pan","isPanning","velocity","endPos","velocityX","velocityY","panEnd","transitionEasing","rotate","isRotating","rotateEnd","preventDefault","speed","smooth","delta","abs","around","isZooming","rotateStart","deltaX","zoomStart","_startPinchRotation","rotation","_lastPinchEvent","deltaAngleX","velocityZ","deltaTime","endScale","zoomEnd","isZoomOut","funcKey","zoomSpeed","moveSpeed","rotateSpeedX","rotateSpeedY","zoomOut","zoomIn","rotateLeft","moveLeft","rotateRight","moveRight","rotateUp","moveUp","rotateDown","moveDown","transition","MapState","altitude","maxZoom","minZoom","maxPitch","minPitch","startPanLngLat","startZoomLngLat","startRotatePos","startBearing","startPitch","startZoom","panStart","_getUpdatedState","_unproject","startPos","newProps","panByPosition","deltaAngleY","newRotation","_getNewRotation","zoomedViewport","_zoomFromCenter","_panFromCenter","shortestPathFrom","fromProps","applyConstraints","unproject","deltaY","centerY","startY","deltaScaleX","deltaScaleY","MapController","transitionProps","compare","TRANSITION_EVENTS","BREAK","SNAP_TO_END","DEFAULT_EASING","DEFAULT_INTERRUPTION","TransitionManager","settings","interpolator","startProps","endProps","easing","interpolateProps","propsInTransition","timeline","getViewportInTransition","nextProps","transitionTriggered","currentProps","_shouldIgnoreViewportChange","_isTransitionEnabled","inProgress","interruption","_triggerTransition","_isUpdateDueToCurrentTransition","arePropsEqual","startViewstate","endViewStateProps","getDuration","initialProps","initializeProps","transitionSettings","transitionInterruption","onStart","onTransitionStart","onUpdate","_onTransitionUpdate","onInterrupt","_onTransitionEnd","onTransitionInterrupt","onTransitionEnd","inTransition","ViewState","_viewportProps","loggers","handlers","arg1","arg2","arg3","DEFAULT_LIGHT_COLOR","DEFAULT_LIGHT_INTENSITY","idCount","AmbientLight","color","intensity","DEFAULT_LIGHT_DIRECTION","DirectionalLight","direction","_shadow","toArray","shadow","getProjectedLight","ShadowPass","gl","shadowMap","depthBuffer","fbo","attachments","render","depthRange","depthTest","blend","clearColor","viewports","pixelRatio","resize","pass","shouldDrawLayer","layer","shadowEnabled","getModuleParameters","drawToShadowMap","DEFAULT_AMBIENT_LIGHT_PROPS","DEFAULT_DIRECTIONAL_LIGHT_PROPS","DEFAULT_SHADOW_COLOR","LightingEffect","ambientLight","directionalLights","pointLights","lightSource","_applyDefaultLights","light","preRender","layerFilter","onViewportActive","views","shadowMatrices","_calculateMatrices","shadowPasses","_createShadowPasses","programManager","getDefaultProgramManager","addDefaultModule","dummyShadowMap","moduleParameters","shadowLightId","shadowMaps","shadowColor","lightSources","directionalLight","pointLight","cleanup","shadowPass","removeDefaultModule","lightMatrices","viewMatrix","lookAt","eye","negate","DEFAULT_ATTENUATION","DEFAULT_LIGHT_POSITION","PointLight","attenuation","getAttenuation","projectedLight","coordinateSystem","coordinateOrigin","fromCoordinateSystem","isGeospatial","LNGLAT","CARTESIAN","fromCoordinateOrigin","CameraLight","modelMatrix","project_uCameraPosition","DEGREES_TO_RADIANS","DAY_IN_MS","JD1970","JD2000","M0","M1","THETA0","THETA1","getSunDirection","azimuth","longitudeWestInRadians","phi","toJulianDay","toDays","dates","meanAnomaly","sin","getEclipticLongitude","declination","getDeclination","rightAscension","getRightAscension","getSunCoords","getSiderealTime","getAzimuth","getAltitude","getSunPosition","cos","eclipticLongitude","lambda","atan2","asin","hourAngle","latitudeInRadians","SunLight","resolution","ScreenPass","fs","model","modules","drawingBufferWidth","drawingBufferHeight","framebuffer","outputBuffer","_renderPass","inputBuffer","draw","moduleSettings","uniforms","texture","texSize","depthWrite","PostProcessEffect","postRender","passes","getFragmentShaderForRenderPass","idn","createPasses","swapBuffer","switchBuffer","FILTER_FS_TEMPLATE","SAMPLER_FS_TEMPLATE","sampler","getViewMatrix","focalDistance","orbitAxis","rotationX","rotationOrbit","up","rotateX","rotateZ","rotateY","projectionScale","OrbitViewport","projectionMatrix","fovy","projectedCenter","project","xyz","topLeft","y2","pixelUnprojectionMatrix","coords","pixel","p0","nextCenter","getProjectionMatrix","near","far","padding","offsetX","offsetY","ortho","OrthographicViewport","flipY","zoomX","zoomY","zoom_","distanceScales","scaleX","scaleY","unitsPerMeter","metersPerUnit","projectFlat","unprojectFlat","fromLocation","toLocation","translate","vec2","newCenter","FirstPersonViewport","dir","toVector3","transformAsVector","FirstPersonState","startZoomPosition","getDirection","_move","radians","fromPosition","use2D","FirstPersonController","FirstPersonView","ViewportType","ControllerType","OrbitState","minRotationX","maxRotationX","startPanPosition","startRotationX","startRotationOrbit","startPosition","newZoom","_calculateNewZoom","OrbitController","OrbitView","OrthographicState","zoomAxis","deltaZoom","newZoomX","newZoomY","OrthographicController","OrthographicView","GlobeState","GlobeController","GlobeView","LINEARLY_INTERPOLATED_PROPS","DEFAULT_OPTS","curve","FlyToInterpolator","extract","ShaderAttribute","dataColumn","getValue","getBuffer","accessor","getAccessor","constantValue","elementOffset","getStride","stride","bytesPerElement","resolveShaderAttribute","baseAccessor","shaderAttributeOptions","vertexOffset","DataColumn","logicalType","doublePrecision","bufferType","defaultValue","fill","isIndexed","ELEMENT_INDEX_UINT32","defaultType","glType","glArrayFromType","fp64","BYTES_PER_ELEMENT","externalBuffer","bufferAccessor","allocatedValue","numInstances","bounds","constant","_buffer","isConstant","release","getShaderAttributes","shaderAttributes","isBuffer64Bit","doubleShaderAttributeDefs","resolvedOptions","resolveDoublePrecisionShaderAttributes","shaderAttributeDef","getBounds","len","setData","_normalizeValue","normalized","normalizeConstant","_areValuesEqual","_checkExternalBuffer","requiredBufferSize","reallocate","setAccessor","subData","updateSubBuffer","startOffset","endOffset","startIndex","endIndex","allocate","copy","oldValue","ArrayType","illegalArrayType","out","value1","value2","EMPTY","FULL","Attribute","startIndices","lastExternalBuffer","binaryValue","binaryAccessor","needsUpdate","needsRedraw","updateRanges","_autoUpdater","seal","_validateAttributeUpdaters","layout","clearChangedFlags","getUpdateTriggers","supportsTransition","getTransitionSetting","layerSettings","userSettings","setNeedsUpdate","dataRange","setNeedsRedraw","startRow","endRow","rangeList","range","newRangeList","insertPosition","range0","clearNeedsUpdate","noAlloc","updateBuffer","updated","getVertexOffset","_checkAttributeArray","setConstantValue","setExternalBuffer","setBinaryValue","transform","assert","needsNormalize","nested","row","shaderAttributeDefs","shaderAttributeName","accessorFunc","iterable","objectInfo","objectValue","numVertices","valid","TRANSITION_TYPES","interpolation","attributeInTransition","currentStartIndices","currentLength","attributeType","vs","defines","ATTRIBUTE_TYPE","varyings","getTransform","bufferOpts","padBufferOpts","fromLength","fromStartIndices","getData","enter","elementCount","sourceBuffers","aFrom","aTo","feedbackBuffers","vCurrent","spring","border","mipmaps","dataFormat","getTexture","getFramebuffer","aPrev","aCur","vNext","clearRenderTarget","stiffness","damping","blendFunc","blendEquation","AttributeTransitionManager","transitions","isSupported","_removeTransition","_updateAttribute","getAttributes","animatedAttributes","isNew","TransitionType","TRACE_INVALIDATE","AttributeManager","stats","memoize","updateTriggers","userData","attributeTransitionManager","getNeedsRedraw","clearRedrawFlags","redraw","_add","addInstanced","instanced","attributeNameArray","invalidate","triggerName","invalidatedAttributes","_invalidateTrigger","invalidateAll","timeStart","accessorName","timeEnd","transitionUpdated","attributeNames","_this$attributes$attr","mergeBoundsMemoized","getChangedAttributes","changedAttributes","excludeAttributes","_createAttribute","_mapUpdateTriggersToAttributes","divisor","triggers","padArrayChunk","sourceLength","targetLength","datum","DEFAULT_TRANSITION_SETTINGS","normalizeTransitionSettings","getSourceBufferAttribute","getAttributeTypeFromSize","cycleBuffers","getAttributeBufferLength","multiplier","padBuffer","precisionMultiplier","toStartIndices","hasStartIndices","toLength","toData","srcByteOffset","getMissingData","sourceStartIndices","targetStartIndices","sourceIndex","targetIndex","getChunkData","nextSourceIndex","nextTargetIndex","padArray","CompositeLayer","isComposite","isLoaded","getSubLayers","internalState","subLayers","initializeState","setState","updateObject","getPickingInfo","__source","filterSubLayer","shouldRenderSubLayer","subLayerId","getSubLayerClass","DefaultLayerClass","_subLayerProps","overridingProps","getSubLayerRow","sourceObject","sourceObjectIndex","getSubLayerAccessor","getSubLayerProps","sublayerProps","_this$props$updateTri","opacity","pickable","visible","getPolygonOffset","highlightedObjectIndex","autoHighlight","highlightColor","wrapLongitude","positionFormat","extensions","overridingSublayerProps","overridingSublayerTriggers","sublayerId","propTypes","subLayerPropTypes","_propTypes","propType","passThroughProps","_updateAutoHighlight","updateAutoHighlight","_getAttributeManager","_postUpdate","updateParams","forceUpdate","subLayersList","renderLayers","COORDINATE_SYSTEM","DEFAULT","METER_OFFSETS","LNGLAT_OFFSETS","deprecated","PROJECTION_MODE","WEB_MERCATOR","GLOBE","WEB_MERCATOR_AUTO_OFFSET","IDENTITY","UNIT","common","meters","pixels","EVENTS","panstart","panmove","panend","OPERATION","DRAW","TERRAIN","DrawLayersPass","DeckRenderer","drawPickingColors","drawLayersPass","pickLayersPass","renderCount","_needsRedraw","renderBuffers","lastPostProcessEffect","layerPass","renderOpts","isPicking","getDefaultFramebuffer","effects","_preRender","renderStats","_postRender","preRenderStats","effect","_resizeRenderBuffers","ViewManager","controllers","_viewports","_viewportMap","_isUpdating","_needsUpdate","_eventCallbacks","onInteractionStateChange","controller","updateViewStates","getViewports","containsPixel","getViews","viewMap","getView","getViewState","viewOrViewId","getViewStateId","filterViewState","getViewport","_setViews","_setViewState","_setSize","_update","_rebuildViewports","flatten","_diffViews","_onViewStateChange","_createController","_this$getView","_updateController","controllerProps","resolvedProps","oldControllers","invalidateControllers","oldController","hasController","_buildViewportMap","newViews","oldViews","equals","DEFAULT_LIGHTING_EFFECT","EffectManager","_setEffects","addDefaultEffect","defaultEffects","_defaultEffects","compareEffects","e2","_e1$order","order","_e2$order","getEffects","_resolvedEffects","oldEffectsMap","nextEffects","oldEffect","removedEffectId","NO_PICKED_OBJECT","pickedColor","pickedObjectIndex","getClosestObject","pickedColors","decodePickingColor","deviceX","deviceY","deviceRadius","deviceRect","minSquareDistanceToCenter","closestPixelIndex","dy","dy2","col","dx","d2","pickedObject","pickedX","pickedY","getEmptyPickingInfo","pickInfo","coordinate","pickedViewport","getViewportFromCoordinates","pickedViewports","point","picked","devicePixel","processPickInfo","lastPickedInfo","pickedLayer","affectedLayers","lastPickedPixelIndex","lastPickedLayerId","layerId","pickedLayerId","lastPickedLayer","baseInfo","infos","getLayerPickingInfo","rootLayer","sourceLayer","DeckPicker","_pickable","pickingFBO","depthFBO","pickObject","_pickClosestObject","pickObjects","_pickVisibleObjects","getLastPickedObject","lastPickedViewportId","_resizeBuffer","_this$pickingFBO","_this$depthFBO","colorBufferFloat","attach","canvas","_getPickable","pickableLayers","radius","depth","unproject3D","emptyInfo","devicePixelRange","_getPickingRect","deviceWidth","deviceHeight","cullRect","_drawAndSample","pickedColors2","disablePickingIndex","restorePickingColors","maxObjects","leftTop","deviceLeft","deviceTop","rightBottom","deviceRight","deviceBottom","pickInfos","uniqueColors","colorKey","getUniqueObjects","uniqueInfos","isMaxObjects","_info$object","pickedObjectKey","pickZ","useInPicking","sourceX","sourceY","sourceWidth","sourceHeight","defaultStyle","pointerEvents","backgroundColor","Tooltip","canvasParent","el","setTooltip","displayInfo","html","innerHTML","defaultProps","initialViewState","pickingRadius","glOptions","useDevicePixels","touchAction","eventRecognizerOptions","_framebuffer","_animate","_typedArrayManagerProps","_customRender","onWebGLInitialized","onBeforeRender","onAfterRender","onLoad","onHover","onDragStart","onDrag","onDragEnd","_onMetrics","getCursor","Deck","_pickRequest","leftButton","layerManager","mousePosition","eventOptions","getLayers","deckPicker","_lastPointerDownInfo","layerHandler","rootHandler","pickedInfo","_pick","cursorState","isHovering","_createCanvas","animationLoop","_createAnimationLoop","metrics","fps","setPropsTime","updateAttributesTime","framesRedrawn","pickTime","pickCount","gpuTime","gpuTimePerFrame","cpuTime","cpuTimePerFrame","bufferMemory","textureMemory","renderbufferMemory","gpuMemory","_metricsCounter","_this$animationLoop","_this$layerManager","_this$viewManager","_this$effectManager","_this$deckRenderer","_this$deckPicker","_this$tooltip","_this$canvas$parentEl","viewManager","effectManager","deckRenderer","destroy","tooltip","_setCanvasSize","_getViews","_getViewState","activateViewport","viewManagerNeedsRedraw","layerManagerNeedsRedraw","effectManagerNeedsRedraw","deckRendererNeedsRedraw","redrawReason","incrementCount","_drawLayers","isInitialized","getCanvas","pickMultipleObjects","_addResources","resources","resourceManager","resourceId","_removeResources","resourceIds","_addDefaultEffect","statKey","cssWidth","_props$style","cssHeight","_updateCanvasSize","_canvas$clientWidth","_canvas$clientHeight","newWidth","clientWidth","newHeight","clientHeight","_this$viewManager2","_this$layerManager2","autoResizeDrawingBuffer","autoResizeViewport","onCreateContext","onContextLost","_onContextLost","onInitialize","_setGLContext","onRender","_onRenderFrame","_pickAndCallback","_info$layer","_updateCursor","container","cursor","copyState","polygonOffsetFill","depthFunc","play","attachTimeline","recognizerOptions","pointerdown","_onPointerDown","pointermove","_onPointerMove","pointerleave","_onEvent","_onInteractionStateChange","renderOptions","animationProps","_getFrameStats","_getMetrics","table","updateLayers","animationLoopStats","addTime","lastTiming","getHz","getAverageTime","memoryStats","mimeTypes","testText","firstChar","parseTextSync","VERSION","existingVersion","_registerLoggers","imagebitmap","premultiplyAlpha","checkVersion","LayerExtension","componentName","extensionName","getShaders","propDef","propValue","onNeedsRedraw","getNeedsPickingBuffer","finalizeState","Resource","consumer","_subscribers","inUse","_error","_content","_loader","_data","loadCount","_loadCount","loader","load","subscriber","ResourceManager","_context","_resources","_consumers","_pruneRequest","persistent","res","consumerId","requestId","prune","_track","_prune","consumers","oldResource","DEFAULT_MODULES","SHADER_HOOKS","createProgramManager","shaderModule","shaderHook","addShaderHook","LayerManager","_viewport","_finalizeLayer","layerNeedsRedraw","_nextLayers","_lastRenderedLayers","layerIds","_debug","setLayers","newLayers","flatLayers","_updateLayers","_handleError","stage","raiseError","oldLayers","oldLayerMap","oldLayer","generatedLayers","_updateSublayersRecursively","_finalizeOldLayers","hasUniformTransition","newLayer","sublayers","validateProps","_transferLayerState","_updateLayer","_initializeLayer","_initialize","lifecycle","INITIALIZED","_transferState","MATCHED","AWAITING_GC","AWAITING_FINALIZATION","_finalize","FINALIZED","CPUInterpolationTransition","_onUpdate","fromValue","toValue","EPSILON","updateSpringElement","prev","cur","dest","distance","distanceSquare","CPUSpringTransition","_currValue","_prevValue","nextValue","updateSpring","UniformTransitionManager","active","DEFAULT_TEXTURE_PARAMETERS","internalTextures","TYPE_DEFINITIONS","boolean","equal","number","optional","valueType","getTypeOf","isInteger","function","component","dataTransform","image","specialTextureParameters","compressed","createTexture","textureParameters","parsePropType","normalizePropDefinition","getPropsPrototype","componentClass","cacheKey","ExtensionClass","getOwnProperty","parentDefaultProps","componentPropDefs","propDefs","deprecatedProps","propName","deprecatedFor","parsePropTypes","extensionDefaultProps","getComponentName","createPropsPrototype","defaultValues","descriptors","getDescriptorForAsyncProp","addAsyncPropsToPropPrototype","newValue","nameStr","newPropName","addDeprecatedPropsToPropPrototype","createPropsPrototypeAndTypes","hasAsyncProp","getAsyncProp","prop","counter","Component","propObjects","propsPrototype","propsInstance","createProps","asyncProps","EMPTY_PROPS","ComponentState","onAsyncPropUpdated","oldAsyncProps","asyncProp","resolvedValue","resetOldProps","getOldProps","isAsyncPropLoading","pendingLoadCount","resolvedLoadCount","reloadAsyncProp","_watchPromise","setAsyncProps","resolvedValues","originalValues","_createAsyncPropData","_updateAsyncProp","_fetch","_onResolve","_onError","_didAsyncInputValueChange","_resolveAsyncIterable","_setPropValue","_freezeAsyncOldProps","lastValue","_postProcessValue","_setAsyncPropValue","LayerState","attributeManager","usesPickingColorCache","onDataLoad","MAX_PICKING_COLOR_CACHE_SIZE","EMPTY_ARRAY","areViewportsEqual","oldViewport","pickingColorCache","dataComparator","_dataDiff","__diff","loaders","loadOptions","_loadOptions","getLoadOptions","inResourceManager","_layer$internalState","colorFormat","layerIndex","Layer","NO_STATE","layerName","root","worldPosition","pixelProjectionMatrix","xy","projectPosition","partialState","setChangeFlags","stateChanged","isPickable","getModels","models","setModuleParameters","updateModuleSettings","getAttributeManager","getCurrentLayer","use64bitPositions","pickingEvent","nullPickingColor","encodePickingColor","i1","i2","i3","getNumInstances","getStartIndices","_this$getAttributeMan","shaders","shouldUpdateState","propsOrDataChanged","dataChanged","hasPickingBuffer","needsPickingBuffer","pickingColors","instancePickingColors","pickingColorsAttribute","uniformTransitions","_this$props$onError","_this$props","_this$context","_this$context$onError","_getNeedsRedraw","_getUpdateParams","_this$internalState","viewportChanged","invalidateAttribute","updateAttributes","_setModelAttributes","_updateAttributes","_updateAttributeTransition","_updateUniformTransition","calculateInstancePickingColors","cacheSize","maxCount","newCacheSize","pickingColor","setAttributes","objectIndex","_disablePickingIndex","colors","externalColorAttribute","objectColor","_clearChangeFlags","_onAsyncPropUpdated","propsChanged","extensionsChanged","_diffProps","stateNeedsUpdate","currentViewport","oldModels","modelChanged","_drawLayer","offsets","polygonOffset","getChangeFlags","_this$internalState2","flagChanged","dataChangedReason","prevDataChangedReason","updateTriggersChanged","somethingChanged","transitionsChanged","_newProps$transitions","pickingModuleParameters","pickingSelectedColor","pickingHighlightColor","setInstanceCount","attributeManagerNeedsRedraw","LIFECYCLE","COMPONENT_SYMBOL","PROP_TYPES_SYMBOL","DEPRECATED_PROPS_SYMBOL","ASYNC_DEFAULTS_SYMBOL","ASYNC_ORIGINAL_SYMBOL","ASYNC_RESOLVED_SYMBOL","diffProps","propsChangedReason","compareProps","ignoreProps","diffDataProps","updateTriggersChangedReason","diffUpdateTrigger","diffUpdateTriggers","diffExtensions","diffTransitions","comparePropValues","newProp","oldProp","oldExtensions","newTriggers","oldTriggers","LayersPass","clearStack","clearCanvas","targetFramebuffer","clearGLCanvas","_lastRenderIndex","drawLayerParams","_getDrawLayerParams","subViewports","subViewport","_drawLayersInViewport","evaluateShouldDrawOnly","indexResolver","layerIndexResolver","drawContext","renderPass","layerFilterCache","_shouldDrawLayer","layerParam","layerRenderIndex","_getModuleParameters","layerParameters","getLayerParameters","globalModuleParameters","glViewport","useTarget","dimensions","getGLViewport","clearOpts","scissorTest","scissor","renderStatus","totalCount","visibleCount","compositeCount","pickableCount","rootLayerId","overrides","autoWrapLongitude","pickingActive","_effect$getModulePara","layerIndices","resolvers","resolveLayerIndex","isDrawn","indexOverride","_offset","parentId","resolver","Pass","PICKING_PARAMETERS","PickLayersPass","_drawPickingBuffer","colorEncoderState","_resetColorEncoder","depthMask","colorMask","_colorEncoderState","decodeColor","pickingAttribute","pickParameters","blendColor","byLayer","byAlpha","encodeColor","injection","DEFAULT_COORDINATE_ORIGIN","lngLatZToWorldPosition","lngLatZ","offsetMode","getDistanceScales","getWorldPosition","normalizeParameters","autoOffset","geospatialOrigin","shaderCoordinateOrigin","positionCommonSpace","COORDINATE_SYSTEM_GLSL_CONSTANTS","PROJECTION_MODE_GLSL_CONSTANTS","UNIT_GLSL_CONSTANTS","INITIAL_MODULE_OPTIONS","dependencies","fp32","getUniforms","ZERO_VECTOR","VECTOR_TO_POINT_MATRIX","IDENTITY_MATRIX","DEFAULT_PIXELS_PER_UNIT2","getMemoizedViewportUniforms","projectionCenter","viewProjectionMatrix","originCommon","cameraPosCommon","viewMatrixUncentered","cameraPosition","getOffsetOrigin","calculateMatrixAndOffset","viewportSize","project_uCoordinateSystem","project_uProjectionMode","projectionMode","project_uCoordinateOrigin","project_uCommonOrigin","project_uCenter","project_uPseudoMeters","_pseudoMeters","project_uViewportSize","project_uDevicePixelRatio","project_uFocalDistance","project_uCommonUnitsPerMeter","project_uCommonUnitsPerWorldUnit","project_uCommonUnitsPerWorldUnit2","project_uScale","project_uWrapLongitude","project_uViewProjectionMatrix","project_uModelMatrix","distanceScalesAtOrigin","unitsPerMeter2","unitsPerDegree","unitsPerDegree2","fround","unprojectPosition","getUniformsFromViewport","getMemoizedViewportCenterPosition","invert","getMemoizedViewProjectionMatrices","projectionMatrices","farZ","corners","coord","screenToCommonSpace","shadowMatrix","corner","multiplyRight","shadow_uDrawShadowMap","shadow_uUseShadowMap","shadow_uColor","shadow_uLightId","shadow_uLightCount","projectCenters","viewProjectionMatrices","viewProjectionMatrixCentered","createShadowUniforms","DEFAULT_PROPS","DEFAULT_REQUIRED_PROPS","LinearInterpolator","normalizedOpts","startViewport","endViewport","aroundPosition","_propsToExtract","TransitionInterpolator","_propsToCompare","_requiredProps","startViewStateProps","_checkRequiredProps","Transition","_inProgress","_handle","_timeline","_this$settings$onStar","_this$settings","_this$settings$onEnd","_this$settings2","removeChannel","_this$settings$onInte","_this$settings3","_this$settings$onUpda","_this$settings4","addChannel","isFinished","condition","ERR_NOT_OBJECT","ERR_NOT_CONTAINER","isPlainObject","deepEqual","aKeys","bKeys","flattenArray","fillArray","copied","copyWithin","placeholderArray","createIterable","isAsyncIterable","asyncIterator","getAccessorFromBuffer","typedArray","elementStride","vertexCount","createMat4","modulus","getCameraPosition","viewMatrixInverse","getFrustumPlanes","getFrustumPlane","scratchVector","normal","fp64LowPart","scratchArray","toDoublePrecisionArray","mergeBounds","boundsList","mergedBounds","isMerged","isEqual","compute","cachedResult","cachedArgs","mergeShaders","mergedInjection","Tesselator","typedArrayManager","_attributeDefs","updateGeometry","getGeometry","geometryBuffer","positionSize","getGeometryFromBuffer","_rebuildGeometry","updatePartialGeometry","_allocate","instanceCount","def","_forEachGeometry","visitor","indexStarts","vertexStarts","normalizedData","dataIndex","normalizedGeometry","getGeometrySize","byteStride","bufferValue","vertexStart","indexStart","vertexEnd","geometrySize","geometryIndex","updateGeometryAttributes","overAlloc","poolSize","initialize","Type","newSize","maxSize","newArray","_release","sizeToAllocate","pool","_pool","RADIANS_TO_DEGREES","EARTH_RADIUS","GLOBE_RADIUS","degreesPerUnit","GlobeViewport","nearZMultiplier","farZMultiplier","halfFov","atan","relativeScale","fovyRadians","unprojectOption","targetZ","transformVector","coord0","coord1","lSqr","l0Sqr","l1Sqr","dSqr","cosPhi","matrix","vector","DEFAULT_DISTANCE_SCALES","Viewport","displayName","_initProps","_initMatrices","metersPerPixel","targetZWorld","topRight","bottomLeft","bottomRight","highPrecision","_frustumPlanes","meterOffset","orthographic","aspect","perspective","createProjectionMatrix","vpm","viewportMatrix","WebMercatorViewport","nearZ","repeat","worldOffset","legacyMeterSizes","projectionParameters","multiplyLeft","_subViewports","minOffset","maxOffset","offsetViewport","addMetersToLngLat","fitBounds","MapView","PERCENT_OR_PIXELS_REGEX","parsePosition","parseFloat","getPosition","extent","View","viewportInstance","_x","_y","_width","_height","_padding","viewportDimensions","getDimensions","newViewState","DataSource","fetchFunction","getFetchFunction","setNeedsRefresh","_needsRefresh","getNeedsRefresh","needsRefresh","ImageSource","ImageService","getMetadata","getImage","granularParameters","getGranularParameters","getURLFromTemplate","arrayBuffer","uncapitalizeKeys","XMLLoader","xml","parser","removeNSPrefix","textNodeName","arrayPaths","_options$xml","xmlOptions","fastXMLOptions","allowBooleanAttributes","ignoreDeclaration","jpath","isLeafNode","isAttribute","_xmlOptions$arrayPath","_fastXML","ignoreAttributes","attributeNamePrefix","fastParseXML","getXMLArray","xmlValue","getXMLStringArray","xmlArray","getXMLFloat","getXMLInteger","getXMLBoolean","parseWMSCapabilities","xmlText","parsedXML","xmlCapabilities","WMT_MS_Capabilities","WMS_Capabilities","capabilities","_xml$Service","_xml$Service2","_xml$Service3","_xml$Service4","_xml$Service5","_xml$Service6","_xml$Service6$Keyword","_xml$Service7","_xml$Service8","_xml$Service9","_xml$Service10","_xml$Service11","_xml$Service12","_xml$Service13","_xml$Capability","_xml$Capability2","Service","Name","title","Title","abstract","Abstract","keywords","KeywordList","Keyword","fees","Fees","accessConstraints","AccessConstraints","layerLimit","LayerLimit","maxWidth","maxHeight","requests","extractRequests","Capability","exceptions","extractExceptions","Exception","xmlLayers","xmlSubLayer","extractLayer","extractCapabilities","inheritedLayerProps","addInheritedLayerProps","includeRawData","raw","includeXMLText","xmlRequests","xmlRequest","Format","xmlException","xmlLayer","_xmlLayer$KeywordList","crs","CRS","SRS","geographicBoundingBox","EX_GeographicBoundingBox","xmlBoundingBox","westBoundLongitude","northBoundLatitude","eastBoundLongitude","southBoundLatitude","extractEXBoundingBox","LatLonBoundingBox","minx","miny","maxx","maxy","extractLatLonBoundingBox","boundingBoxes","BoundingBox","xmlBox","resx","resy","boundingBox","xResolution","yResolution","extractWMSBoundingBox","Dimension","xmlDimension","units","dimension","unitSymbol","multipleValues","nearestValue","extractDimension","opaque","cascaded","queryable","subLayer","WMSCapabilitiesLoader","wms","parseWMSFeatureInfo","_parsedXML$FeatureInf","xmlFeatureInfo","FeatureInfoResponse","FIELDS","xmlFeature","extractFeature","WMSFeatureInfoLoader","parseWMSLayerDescription","_XMLLoader$parseTextS","WMSLayerDescriptionLoader","WMSErrorLoader","throwOnError","parseSync","wmsOptions","_parsedXML$ServiceExc","_parsedXML$ogcServic","serviceExceptionXML","ServiceExceptionReport","ServiceException","parseWMSError","minimalErrors","WMSService","_props$substituteCRS","substituteCRS84","flipCRS","wmsParameters","query_layers","styles","info_format","transparent","elevation","vendorParameters","normalizeMetadata","getMap","getCapabilitiesURL","_checkResponse","getMapURL","_parseError","getFeatureInfo","getFeatureInfoURL","getFeatureInfoText","describeLayer","describeLayerURL","getLegendGraphic","getLegendGraphicURL","_getWMSUrl","_getWMS130Parameters","_parseWMSUrl","searchParams","allParameters","IGNORE_EMPTY_KEYS","_getURLParameter","encodeURI","newParameters","srs","_flipBoundingBox","bboxValue","_fetchArrayBuffer","contentType","baseOptions","newOptions","mergeLoaderOptions","ArcGISImageServer","metadata","exportImage","metadataURL","exportImageURL","arcgisOptions","getUrl","extra","checkResponse","SERVICES","HALF_EARTH_CIRCUMFERENCE","WGS84ToPseudoMercator","mercator","serviceType","onMetadataLoad","onMetadataLoadError","onImageLoadStart","onImageLoad","onImageLoadError","WMSLayer","_this$state","loadCounter","_nextRequestId","lastRequestId","imageSource","_createImageSource","_loadMetadata","loadImage","lastRequestParameters","_imageCoordinateSystem","_this$state$imageSour","_this$state$imageSour2","testURL","guessServiceType","createImageSource","_this$getCurrentLayer","_this$getCurrentLayer2","getRequestId","requestParams","minX","minY","maxX","maxY","_this$getCurrentLayer3","_this$getCurrentLayer4","ms","_timeoutId","GreatCircleLayer","getHeight","greatCircle","GeoCellLayer","indexToBounds","elevationScale","extruded","wireframe","filled","stroked","lineWidthUnits","lineWidthScale","lineWidthMinPixels","lineWidthMaxPixels","lineJointRounded","lineMiterLimit","lineDashJustified","getElevation","getFillColor","getLineColor","getLineWidth","material","CellLayer","boundsUpdateTriggers","boundsProps","FACE_BITS","POS_BITS","RADIAN_TO_DEGREE","IJToST","ij","singleSTtoUV","FaceUVToXYZ","face","XYZToLngLat","rotateAndFlipQuadrant","rx","ry","getS2Polygon","token","s2cell","hilbertQuadkey","maxLevel","bit","val","FromHilbertQuadKey","paddedToken","padEnd","getIdFromToken","idS","lsbIndex","lastIndexOf","faceB","posB","levelN","faceS","posS","toHilbertQuadkey","getS2QuadKey","ptIndex","prevLng","nextOffset","stepI","stepJ","lngLat","deltaLng","getGeoBounds","S2Layer","getS2Token","_normalize","getPolygon","QuadkeyLayer","getQuadkey","coverage","quadkey","mask","quadkeyToWorldBounds","getQuadkeyPolygon","throttleRequests","maxRequests","RequestScheduler","scheduleRequest","handle","getPriority","requestMap","requestQueue","_issueNewRequests","_issueRequest","isDone","activeRequestCount","deferredUpdate","_issueNewRequestsAsync","freeSlots","_updateAllRequests","_updateRequest","Tile2DHeader","_abortController","_loaderId","_isLoaded","_isCancelled","_needsReload","_bbox","isLoading","needsReload","_loadData","requestScheduler","loaderId","requestToken","tile","tileData","loadData","setNeedsReload","_this$_abortControlle","INTERSECTION","scratchNormal","minimum","maximum","halfDiagonal","subtract","transformAsPoint","intersectPlane","plane","dot","distanceTo","distanceSquaredTo","distanceSquared","scratchVector2","fromCenterRadius","fromCornerPoints","oppositeCorner","union","boundingSphere","leftCenter","leftRadius","rightCenter","rightRadius","toRightCenter","centerSeparation","magnitude","halfDistanceBetweenTangentPoints","expand","mat4","distanceToPlane","scratchVector3","scratchOffset","scratchVectorU","scratchVectorV","scratchVectorW","scratchCorner","scratchToCenter","OrientedBoundingBox","halfAxes","halfSize","xAxis","getColumn","yAxis","zAxis","quaternion","normXAxis","normYAxis","normZAxis","fromMatrix3","fromCenterHalfSizeQuaternion","quaternionObject","directionsMatrix","fromQuaternion","getBoundingSphere","cornerVector","normalX","normalY","normalZ","radEffective","uHalf","vHalf","wHalf","computePlaneDistances","minDist","maxDist","NEGATIVE_INFINITY","toCenter","mag","transformation","scratchPosition","fromNormalDistance","fromPointNormal","fromCoefficients","getPointDistance","matrix4","projectPointOntoPlane","pointDistance","scaledNormal","faces","scratchPlaneCenter","scratchPlaneNormal","planes","fromBoundingSphere","planeIndex","faceNormal","plane0","plane1","plane0Center","plane1Center","negatedFaceNormal","computeVisibility","boundingVolume","intersect","computeVisibilityWithPlaneMask","parentPlaneMask","MASK_OUTSIDE","MASK_INSIDE","scratchMatrix","scratchUnitary","scratchDiagonal","jMatrix","jMatrixTranspose","rowVal","colVal","offDiagonalFrobeniusNorm","norm","temp","getElementIndex","shurDecomposition","tolerance","EPSILON15","maxDiagonal","rotAxis","tau","scratchVector4","scratchVector5","scratchVector6","scratchCovarianceResult","scratchEigenResult","diagonal","unitary","makeOrientedBoundingBoxFromPoints","meanPoint","invLength","multiplyByScalar","exx","exy","exz","eyy","eyz","ezz","covarianceMatrix","EIGEN_TOLERANCE","EPSILON20","sweep","unitaryMatrix","diagonalMatrix","identity","epsilon","computeFrobeniusNorm","transpose","toTarget","computeEigenDecomposition","v1","v2","v3","u1","MAX_VALUE","u2","u3","l1","l2","l3","scaleMatrix","REF_POINTS_5","REF_POINTS_9","REF_POINTS_11","OSMNode","_children","cullingVolume","elevationBounds","minZ","maxZ","getBoundingVolume","insideBounds","childVisible","selected","getSelected","zRange","refPoints","refPointPositions","osmTile2lngLat","originX","originY","DEFAULT_EXTENT","urlType","transformBox","transformedCoords","transformedBox","template","regex","getCullBounds","getCullBoundsInViewport","bounds0","bounds1","getScale","tileSize","tile2XY","tileToBoundingBox","getTileIndices","modelMatrixInverse","zoomOffset","transformedExtent","elevationMin","elevationMax","minLng","minLat","maxLng","maxLat","traversalParams","getOSMTileIndices","getBoundingBox","transformedTileIndex","getIndexingCoords","indices","getIdentityTileIndices","STRATEGY_DEFAULT","STRATEGIES","allTiles","getPlaceholderInAncestors","getPlaceholderInChildren","sortedTiles","t1","t2","DEFAULT_TILESET2D_PROPS","maxCacheSize","maxCacheByteSize","refinementStrategy","onTileLoad","onTileUnload","onTileError","Tileset2D","_this$opts$onTileLoad","_this$opts","_cacheByteSize","_resizeCache","_requestScheduler","_cache","_tiles","_dirty","_zRange","_selectedTiles","_frameNumber","_modelMatrix","_modelMatrixInverse","selectedTiles","_maxZoom","_minZoom","reloadAll","modelMatrixAsMatrix4","isModelMatrixNew","_getTile","tileIndices","_rebuildTree","updateTileStates","_pruneRequests","isTileVisible","boundsArr","_getCullBounds","overlaps","y0","y1","getTileId","getTileZoom","getTileMetadata","getParentIndex","visibilities","abortCandidates","_getNearestAncestor","_this$opts$onTileUnlo","_this$opts2","getTileData","startTile","TilesetClass","renderSubLayers","onViewportLoad","TileLayer","tileset","_this$state$tileset","_this$state2","_this$state2$tileset","_this$state2$tileset$","_getTilesetOptions","_updateTileset","_onTileLoad","_onTileError","_onTileUnload","frameNumber","loadingStateChanged","tilesetChanged","_onViewportLoad","getSubLayerPropsByTile","sourceTile","subLayerProps","TripsLayer","timestamps","instanceTimestamps","instanceNextTimestamps","fadeTrail","trailLength","currentTime","getTimestamps","normalizeLongitudes","vertices","refLng","getHexagonCentroid","getHexagon","hexagonId","h3ToGeo","h3ToPolygon","hexId","h3ToGeoBoundary","factor","actualCount","scalePolygon","centerHexagon","hexagon","H3HexagonLayer","_checkH3Lib","edgeLengthKM","_shouldUseHighPrecision","dataProps","_calculateH3DataProps","_updateVertices","hasPentagon","hasMultipleRes","hexResolution","h3IsPentagon","edgeLength","centerHex","hex","geoToH3","h3Distance","centerLat","centerLng","centerX","_renderPolygonLayer","_renderColumnLayer","_getForwardProps","SubLayerClass","forwardProps","mergeTriggers","_windingOrder","flattenPolygon","flatShading","diskResolution","H3ClusterLayer","getHexagons","hexagons","h3SetToMultiPolygon","MeshLayer","pbr","featureIdsPickingColors","calculateFeatureIdsPickingColors","pbrMaterial","updatePbrMaterialUniforms","setUniforms","u_Camera","pickFeatureIds","getModel","mesh","materialParser","parseMaterial","COLOR_0","HAS_UV_REGIONS","uvRegions","isInstanced","_this$state$materialP","unlit","pbrMetallicRoughness","baseColorTexture","NORMAL","normals","TEXCOORD_0","texCoords","pbrDebug","imageBasedLightingEnvironment","lights","useTangents","_this$state$materialP2","WGS84_RADIUS_X","WGS84_RADIUS_Y","WGS84_RADIUS_Z","scaleToGeodeticSurfaceIntersection","scaleToGeodeticSurfaceGradient","scratchOrigin","VECTOR_PRODUCT_LOCAL_FRAME","down","degeneratePositionLocalFrame","scratchAxisVectors","scratchVector1","localFrameToFixedFrame","ellipsoid","firstAxis","secondAxis","thirdAxis","cartesianOrigin","thirdAxisInferred","firstAxisVector","secondAxisVector","thirdAxisVector","sign","fromArray","geodeticSurfaceNormal","cross","scratchK","scratchHeight","scratchCartesian","Ellipsoid","EPSILON1","radii","radiiSquared","radiiToTheFourth","oneOverRadii","oneOverRadiiSquared","minimumRadius","maximumRadius","squaredXOverSquaredZ","cartographicToCartesian","cartographic","geodeticSurfaceNormalCartographic","gamma","cartesianToCartographic","cartesian","scaleToGeodeticSurface","toCartographic","vec3","_cartographicRadians","eastNorthUpToFixedFrame","geocentricSurfaceNormal","cartographicVectorRadians","fromCartographic","fromCartographicToRadians","cosLatitude","centerToleranceSquared","positionX","positionY","positionZ","oneOverRadiiX","oneOverRadiiY","oneOverRadiiZ","x2","z2","squaredNorm","ratio","intersection","oneOverRadiiSquaredX","oneOverRadiiSquaredY","oneOverRadiiSquaredZ","gradient","xMultiplier","yMultiplier","zMultiplier","correction","xMultiplier2","yMultiplier2","zMultiplier2","EPSILON12","scaleToGeocentricSurface","beta","multiplyScalar","transformPositionToScaledSpace","transformPositionFromScaledSpace","getSurfaceNormalIntersectionWithZAxis","DoublyLinkedListNode","DoublyLinkedList","_length","tail","nextNode","_insert","oldNodeNext","TilesetCache","_list","_sentinel","_trimTiles","touch","_cacheNode","addCallback","unloadTile","unloadCallback","unloadTiles","trimTiles","maximumMemoryUsageInBytes","maximumMemoryUsage","sentinel","gpuMemoryUsageInBytes","getFrameState","cameraDirection","cameraUp","viewportCenterCartesian","worldToCartesian","enuToFixedTransform","WGS84","cameraPositionCartographic","cameraPositionCartesian","cameraDirectionCartesian","cameraUpCartesian","frustumPlanes","nearCenterCommon","closestPointOnPlane","nearCenterCartesian","cameraCartesian","cartesianPos","commonSpacePlanesToWGS84","ViewportClass","camera","topDownViewport","sseDenominator","refPoint","distanceToRef","cartographicPos","getZoomFromFullExtent","fullExtent","cartorgraphicCenter","cartesianCenter","extentVertex","xmax","ymax","zmax","extentSize","TILE_REFINEMENT","ADD","REPLACE","TILE_TYPE","SCENEGRAPH","POINTCLOUD","MESH","TILESET_TYPE","LOD_METRIC_TYPE","scratchPoint","scratchScale","scratchNorthWest","scratchSouthEast","createBoundingVolume","boundingVolumeHeader","box","transformByQuaternion","createBox","region","minHeight","northWest","southEast","centerInCartesian","addVectors","subVectors","createSphere","sphere","uniformScale","addToCartographicBounds","toEye","cameraPositionEnu","extraVertexEnu","projectedOriginVector","enuToCartesianMatrix","cartesianToEnuMatrix","getProjectedRadius","frameState","mbsLat","mbs","mbsLon","mbsZ","mbsR","mbsCenterCartesian","projection","extraZ","extraVectorCartesian","sphereMbsBorderVertexCartesian","sphereMbsBorderVertexCartographic","projectedOrigin","projectedMbsBorderVertex","ManagedArray","_array","_map","peek","reserve","loadSiblings","skipLevelOfDetail","maximumScreenSpaceError","updateTransforms","onTraversalEnd","viewportTraversersMap","basePath","TilesetTraverser","traversalFinished","traverse","updateTile","executeTraversal","requestedTiles","emptyTiles","_traversalStack","_emptyTraversalStack","_selectionDepth","shouldRefine","canTraverse","updateChildTiles","updateAndPushChildren","hasRenderContent","parentRefines","_shouldRefine","stoppedRefining","refine","loadTile","selectTile","touchTile","newTime","lastUpdate","updateDebounceTime","compareDistanceToCamera","checkRefines","hasVisibleChild","refines","isVisibleAndInRequestVolume","childRefines","_inRequestVolume","contentAvailable","executeEmptyTraversal","updateTileVisibility","shouldSelectTile","_selectedFrame","shouldLoadTile","_requestedFrame","_priority","_getPriority","_touchedFrame","useParentMetric","ignoreVisibility","hasChildren","hasTilesetContent","contentExpired","hasUnloadedContent","screenSpaceError","_screenSpaceError","getScreenSpaceError","viewportIds","updateVisibility","_distanceToCamera","anyChildrenVisible","anyVisible","allDescendantsLoaded","hasEmptyContent","Tile3D","parentHeader","extendedId","_getRefine","contentUrl","_initializeLodMetric","_initializeTransforms","_initializeBoundingVolumes","_initializeContent","_initializeRenderingState","isDestroyed","_visible","contentReady","contentState","_expiredContent","contentFailed","contentUnloaded","distanceToCamera","_boundingBox","orientedBoundingBoxToCartographicBounds","axis","boundingSphereToCartographicBounds","getCartographicBounds","useParentLodMetric","parentLodMetricValue","lodMetricValue","viewDistanceScale","dynamicScreenSpaceError","dynamicScreenSpaceErrorComputedDensity","density","dynamicScreenSpaceErrorFactor","dynamicError","scalar","fog","getDynamicScreenSpaceError","getTiles3DScreenSpaceError","unselect","_getGpuMemoryUsageInBytes","traverser","_traverser","maySkipTile","rootScreenSpaceError","loadContent","_expireDate","getTileUrl","isTileset","_getLoaderSpecificOptions","contentLoader","_isTileset","_initializeTileHeaders","_onContentLoaded","unloadContent","parentVisibilityPlaneMask","_visibilityPlaneMask","MASK_INDETERMINATE","parentTransform","computedTransform","_updateTransform","distanceToTile","visibility","insideViewerRequestVolume","contentVisibility","cameraSpaceZDepth","_ref","viewerRequestVolume","_viewerRequestVolume","updateExpiration","lessThan","extras","lodMetricType","tileHeader","parentInitialTransform","_initialTransform","_contentBoundingVolume","_updateBoundingVolume","_tileset","_tile","_centerZDepth","_stackLength","_visitedFrame","disableSkipLevelOfDetail","i3s","_tileOptions","attributeUrls","textureUrl","textureFormat","textureLoaderOptions","materialDefinition","isDracoGeometry","_tilesetOptions","store","attributeStorageInfo","isTileHeader","assetGltfUpAxis","asset","gltfUpAxis","Tileset3DTraverser","meetsScreenSpaceErrorEarly","useOptimization","_optimChildrenWithinParent","I3SPendingTilesRegister","viewportId","viewportMap","frameNumberMap","oldCount","deregister","isZero","_this$frameNumberMap$","I3STileManager","_statusMap","pendingTilesRegister","actualFrameNumber","newFrameNumber","newViewportId","hasPendingTiles","I3STilesetTraverser","_tileManager","_lodJudge","screenSize","getLodStatus","childTiles","childTile","_loadTile","nodePages","nodePagesTile","formTileFromNodePages","nodeId","nodeUrl","maximumTilesSelected","debounceTime","onTraversalComplete","loadTiles","attributions","TILES_TOTAL","TILES_IN_MEMORY","TILES_IN_VIEW","TILES_RENDERABLE","TILES_LOADED","TILES_LOADING","TILES_UNLOADED","TILES_LOAD_FAILED","POINTS_COUNT","TILES_GPU_MEMORY","Tileset3D","draco","meshopt","dds","ktx2","_initializeTraverser","_initializeStats","tilesetInitializationPromise","_initializeTileSet","_destroy","_pendingCount","_requestedTiles","queryParams","URLSearchParams","_queryParams","tilePath","hasExtension","_extensionsUsed","lastUpdatedVieports","doUpdate","selectTiles","updatePromise","traverseCounter","preparedViewports","viewportsToTraverse","_needTraverse","roots","traverserId","_onTraversalEnd","frameStateData","_emptyTiles","currentFrameStateData","filteredSelectedTiles","unselectedTiles","tuples","viewportLongitude","viewportLatitude","deltaLon","deltaLat","tuplesSorted","limitSelectedTiles","_updateTiles","frameStateKey","frameStateDataValue","_loadTiles","_unloadTiles","_updateStats","_tilesChanged","oldSelectedTiles","set1","set2","_unloadTile","tilesRenderable","pointsRenderable","pointCount","tilesetJson","calculateViewPropsI3S","_initializeTiles3DTileset","calculateViewPropsTiles3D","_initializeI3STileset","_this$tileset$store","xmin","ymin","zmin","cartographicCenter","getZoomFromExtent","obbSize","axeY","axeZ","getObbSize","getZoomFromBoundingVolume","parentTileHeader","rootTile","childHeader","_childTile$contentUrl","TraverserClass","_destroyTileHeaders","parentTile","_destroySubtree","loaded","_onStartTileLoading","_onTileLoadError","_onEndTileLoading","_this$tileset","_this$tileset$nodePag","nodesInNodePages","addCount","rtcCenter","rotationY","isQuantized","quantizedVolumeOffset","quantizedVolumeScale","cartesianModelMatrix","cartographicOrigin","toFixedFrameMatrix","cartographicModelMatrix","calculateTransformProps","updateContentTypes","_addTileToCache","contentFormats","_tile$content","extensionsRemoved","gltf","decrementCount","_updateCacheStats","_destroyTile","queryString","fromEntries","tilesetVersion","credits","geometricError","extensionsUsed","TILE3D_TYPE","COMPOSITE","POINT_CLOUD","BATCHED_3D_MODEL","INSTANCED_3D_MODEL","GEOMETRY","VECTOR","GLTF","getStringFromArrayBuffer","textDecoder","GL_TYPE","BYTE","UNSIGNED_BYTE","SHORT","UNSIGNED_SHORT","INT","UNSIGNED_INT","FLOAT","DOUBLE","POINTS","LINES","LINE_LOOP","LINE_STRIP","TRIANGLES","TRIANGLE_STRIP","TRIANGLE_FAN","GL_TYPE_TO_ARRAY_TYPE","NAME_TO_GL_TYPE","ERR_TYPE_CONVERSION","GLType","fromTypedArray","arrayOrType","fromName","getArrayType","UNSIGNED_SHORT_5_6_5","UNSIGNED_SHORT_4_4_4_4","UNSIGNED_SHORT_5_5_5_1","getByteSize","createTypedArray","Tile3DFeatureTable","featureTableJson","featureTableBinary","getExtension","hasProperty","propertyName","getGlobalProperty","componentType","componentLength","jsonValue","_getTypedArrayFromBinary","getPropertyArray","featuresLength","_getTypedArrayFromArray","getProperty","featureId","cachedTypedArrays","_cachedTypedArrays","COMPONENTS_PER_ATTRIBUTE","SCALAR","VEC2","VEC3","VEC4","MAT2","MAT3","MAT4","UNPACKER","PACKER","traverseHierarchy","hierarchy","instanceIndex","endConditionCallback","parentCounts","parentIds","classIds","parentIndexes","instancesLength","visited","scratchVisited","visitedMarker","marker","scratchStack","parentCount","parentIndex","traverseHierarchyMultipleParents","hasParent","traverseHierarchySingleParent","validateInstance","IGNORED_PROPERTY_FIELDS","HIERARCHY","Tile3DBatchTableParser","binary","featureCount","_this$json","_extensions","_properties","_binaryProperties","_initializeBinaryProperties","_hierarchy","batchTable","jsonHeader","binaryBody","legacyHierarchy","hierarchyJson","classId","classes","parentIdsLength","GL","AttributeType","getBinaryAccessor","createArrayBufferView","classesLength","classInstancesLength","instances","binaryProperties","getBinaryProperties","classCounts","classIndexes","validateHierarchy","initializeHierarchyValues","initializeHierarchy","memorySizeInBytes","isClass","batchId","_checkBatchId","isExactClass","getExactClassName","_hasPropertyInHierarchy","getPropertyNames","propertyNames","_getPropertyNamesInHierarchy","binaryProperty","_getBinaryProperty","propertyValues","hierarchyProperty","_getHierarchyProperty","setProperty","_setBinaryProperty","_setHierarchyProperty","unpack","_initializeBinaryProperty","tile3DAccessor","unpacker","packer","createTypedArrayFromAccessor","componentCount","instanceClass","indexInClass","SIZEOF_UINT32","parse3DTileHeaderSync","magic","getUint32","DEPRECATION_WARNING","parse3DTileTablesHeaderSync","batchLength","featureTableJsonByteLength","featureTableBinaryByteLength","batchTableJsonByteLength","batchTableBinaryByteLength","parse3DTileTablesSync","BATCH_LENGTH","featureTableString","parse3DTileFeatureTable","batchTableString","batchTableJson","batchTableBinary","parse3DTileBatchTable","decodeRGB565","rgb565","r5","g6","b5","normalize3DTileColorAttribute","batchIds","isRGB565","colorArray","fromSNorm","rangeMaximum","signNotZero","octDecode","rangeMax","oldVX","octDecodeInRange","parsePointCloud3DTile","isTranslucent","isOctEncoded16P","initializeTile","featureTable","pointsLength","batchFeatureLength","parseBatchIds","parsePointCloudTables","dracoBuffer","dracoFeatureTableProperties","dracoBatchTableProperties","batchTableDraco","featureTableDraco","dracoByteOffset","dracoByteLength","hasPositions","POSITION","hasColors","RGB","RGBA","hasNormals","hasBatchIds","BATCH_ID","dracoData","featureTableProperties","batchTableProperties","dequantizeInShader","dracoOptions","extraAttributes","decodedPositions","decodedColors","decodedNormals","decodedBatchIds","isQuantizedDraco","quantization","isOctEncodedDraco","minValues","quantizedRange","quantizationBits","octEncodedRange","batchTableAttributes","loadDraco","parseDraco","decodeQuantizedPositions","decodedArray","multiply","normalize3DTilePositionAttribute","parsePositions","constantRGBA","parseColors","normalize3DTileNormalAttribute","parseNormals","GLTF_FORMAT","URI","EMBEDDED","parse3DTileGLTFViewSync","rotateYtoZ","gltfByteLength","gltfArrayBuffer","gltfByteOffset","extractGLTF","gltfFormat","tile3DOptions","gltfUrlBytes","gltfUrl","extractGLTFBufferOrURL","loadGLTF","parse3DTile","dataView","getUint8","getMagicString","tilesLength","subtile","parseComposite3DTile","_tile$gltf","parseBatchedModel","CESIUM_RTC","parseBatchedModel3DTile","parseGltf3DTile","eastNorthUp","_batchTable","collectionOptions","instancePosition","instanceNormalRight","instanceNormalUp","instanceNormalForward","instanceRotation","instanceQuaternion","instanceScale","instanceTranslationRotationScale","instanceTransform","scratch1","scratch2","MAX_UNSIGNED_SHORT","translation","normalUp","normalRight","hasCustomOrientation","octNormalUp","octNormalRight","getRotationMatrix3","setColumn","nonUniformScale","rotationMatrix","extractInstancedAttributes","parseInstancedModel","parseInstancedModel3DTile","getExplicitBitstream","internalBinaryBuffer","bufferViewIndex","bufferView","bufferViews","uri","bufferUri","bitstreamRelativeUri","resolvedUri","decodeURI","basePathWithProtocol","resolveBufferUri","parseUint64Value","Tile3DSubtreeLoader","tests","jsonByteLength","stringAttribute","binaryByteLength","tileAvailability","explicitBitstream","contentAvailability","childSubtreeAvailability","wasm","WebAssembly","Instance","Module","unsigned","isLong","obj","ctz32","clz32","__isLong__","INT_CACHE","UINT_CACHE","fromInt","cachedObj","fromBits","fromNumber","UZERO","ZERO","TWO_PWR_64_DBL","MAX_UNSIGNED_VALUE","TWO_PWR_63_DBL","MIN_VALUE","neg","TWO_PWR_32_DBL","lowBits","highBits","pow_dbl","fromString","radixToPower","power","mul","TWO_PWR_16_DBL","TWO_PWR_24","ONE","UONE","NEG_ONE","LongPrototype","toInt","toNumber","isNegative","eq","radixLong","div","rem1","rem","remDiv","digits","getHighBits","getHighBitsUnsigned","getLowBits","getLowBitsUnsigned","getNumBitsAbs","eqz","isPositive","isOdd","isEven","notEquals","neq","comp","lessThanOrEqual","lte","greaterThan","greaterThanOrEqual","gte","thisNeg","otherNeg","not","addend","a48","a32","a16","a00","b48","b32","b16","c48","c32","c16","c00","subtrahend","b00","divide","approx","toUnsigned","shru","shr","shl","LN2","approxRes","approxRem","modulo","countLeadingZeros","clz","countTrailingZeros","ctz","and","xor","shiftLeft","numBits","shiftRight","shiftRightUnsigned","shr_u","rotl","rotr","toSigned","toBytes","toBytesLE","toBytesBE","fromBytes","fromBytesLE","fromBytesBE","MAXIMUM_TOKEN_LENGTH","getS2CellIdFromToken","_ref2","tokenOrKey","cellId","getS2QuadkeyFromCellId","getS2CellFromQuadKey","get2DRegionFromS2Corners","longitudes","latitudes","convertS2BoundingVolumetoOBB","s2VolumeInfo","heightInfo","minimumHeight","maximumHeight","corns","getS2Region","getS2OrientedBoundingBoxCornerPoints","s2Cell","uv","getS2LngLatFromS2Cell","centerPointAdditional","obb","SUBDIVISION_COUNT_MAP","QUADTREE","OCTREE","getChildS2VolumeBox","s2VolumeBox","subdivisionScheme","childCellId","newLsb","lsb","getS2ChildCellId","childToken","numZeroDigits","trailingZeroHexChars","hexString","getS2TokenFromCellId","s2ChildVolumeInfo","sizeZ","midZ","parseImplicitTiles","parentData","mortonIndex","childIndex","globalData","subtreeLevels","maximumLevel","contentUrlTemplate","subtreesUriTemplate","childrenPerTile","childX","childY","childZ","levelOffset","childTileMortonIndex","concatBits","tileAvailabilityIndex","childTileX","childTileY","childTileZ","isChildSubtreeAvailable","getAvailabilityResult","lev","childSubtreeUrl","replaceContentUrlTemplate","childTileLevel","pData","childS2VolumeBox","childTileParsed","formattedTile","formatTileData","availabilityData","availabilityIndex","availabilityBuffer","bitIndex","getBooleanValueFromBitstream","childCoordinates","getRefine","getTileType","rootLodMetricValue","rootBoundingVolume","boundingVolumeForChildTile","boundingVolumesCount","sizeX","sizeY","childWest","childEast","childSouth","childNorth","childMinimumHeight","childMaximumHeight","calculateBoundingVolumeForChildTile","templateUrl","mapUrl","items","generateMapUrl","matched","fileExtension","resolveUri","normalizeTileData","contentUri","transformMatrix","normalizeImplicitTileHeaders","implicitTilingExtension","_tileset$root","_tile$boundingVolume$","subtrees","subtreeUrl","implicitOptions","rootSubtree","normalizeImplicitTileData","getImplicitTilingExtensionData","_tile$extensions","implicitTiling","Tiles3DLoader","loaderOptions","_tilesetJson$root","rootImplicitTilingExtension","childImplicitTilingExtension","normalizeTileHeaders","parseTileset","parseTile","SINGLE_DATA","getPointColor","pointSize","onTilesetLoad","tileset3d","_getMeshColor","Tile3DLayer","layerMap","activeViewports","lastUpdatedViewports","_this$state$tileset3d","_loadTileset","lastViewport","layerCache","tilesetUrl","actualTilesetUrl","preload","preloadOptions","viewportsNumber","_getSubLayer","_makePointCloudLayer","_make3DModelLayer","_makeSimpleMeshLayer","getColor","_lighting","scenegraph","getTransformMatrix","drawMode","getMeshGeometry","contentAttributes","DUMMY_DATA","elevationData","meshMaxError","elevationDecoder","rScaler","gScaler","bScaler","terrain","tesselator","skirtHeight","urlTemplateToUpdateTrigger","TerrainLayer","elevationDataChanged","isTiled","shouldReload","loadTerrain","getTiledTerrainData","dataUrl","surface","_instanced","ranges","arr","bound","shaderFunction","shaderModuleVs","injectionVs","shaderModuleFs","injectionFs","ClipExtension","clipByInstance","clipBounds","clip_bounds","corner0","corner1","binaryToGeojson","globalFeatureId","dataArray","normalizeInput","currValue","globalFeatureIds","parseFeature","getSingleFeature","parseFeatureCollection","parseFeatures","binaryToGeometry","ringToGeoJson","pointToGeoJson","ringCoordinates","lineStringToGeoJson","polygonToGeoJson","unexpectedInput","polygonIndices","parseType","parseProperties","parseFields","polygonCoordinates","availableTransformations","multiPoint","getPoints","multiLineString","lineString","pointX","pointY","nw","polygonRing","GEOM_TYPES","findIndexByType","geomData","startFeatureIndex","endFeatureIndex","layerRange","__layers","layerNames","getLayerRange","featureIndex","vertexIndex","elem","__ids","getGlobalFeatureId","highlightedFeatureId","category","mvt","shape","layerProperty","tileIndex","MVTLayer","tileJSON","hoveredFeatureId","hoveredFeatureLayerName","_updateTileData","_setWGS84PropertyForTiles","minzoom","maxzoom","_this$state3","loadProps","mimeType","gis","worldScale","xScale","yScale","xOffset","yOffset","hoveredFeature","newHoveredFeatureId","newHoveredFeatureLayerName","getFeatureUniqueId","getFeatureLayerName","isWGS84","transformTileCoordsToWGS84","getHighlightedObjectIndex","isHighlighted","isFeatureIdDefined","featureIdToHighlight","isMatchingId","isMatchingLayer","findIndexBinary","_pickObjects","getRenderedFeatures","maxFeatures","featureCache","renderedFeatures","_contentWGS84","_feature$properties","wgs84Geom","projectedBbox","BASE32_CODES_DICT","BASE32_CODES","GeohashLayer","getGeohash","geohash","mid","isLon","maxLon","minLon","hashValue","getGeohashBounds","getGeohashPolygon","MAX_LATITUDE","createDeckInstance","overlay","_googleMap","destroyDeckInstance","eventListeners","rightclick","dblclick","mousemove","mouseout","newDeck","interleaved","getContainer","handleMouseEvent","_eventListeners","_overlay$getPanes","_overlay$getMap","getPanes","overlayLayer","getViewPropsFromCoordinateTransformer","transformer","getMapSize","getCameraParams","pixelToLngLat","latLng","fromContainerPixelToLatLng","getEventPixel","mockEvent","tapCount","HIDE_ALL_LAYERS","GL_STATE","UNINITIALIZED","RenderingType","_this$_overlay","getRenderingType","_overlay","requestRedraw","_createOverlay","_deck","parentStyle","renderingType","WebGLOverlayView","OverlayView","onAdd","onContextRestored","_onContextRestored","onDraw","_onDrawVectorInterleaved","_onAdd","_onDrawVectorOverlay","_onDrawRaster","onRemove","_onRemove","_renderFrame","ab","getParameter","bindBuffer","_this$_deck","rest","getProjection","getNorthEast","sw","getSouthWest","fromLatLngToDivPixel","centerLngLat","centerH","LatLng","centerContainerPx","fromLatLngToContainerPixel","centerDivPx","leftOffset","topOffset","topLngLat","bottomLngLat","verticalAngle","viewDiagonal","mapDiagonal","getViewPropsFromOverlay","stencilFunc","DEFAULT_COLOR","getSourcePosition","sourcePosition","getTargetPosition","targetPosition","getSourceColor","getTargetColor","getWidth","numSegments","widthUnits","widthScale","widthMinPixels","widthMaxPixels","ArcLayer","project32","picking","instanceSourcePositions","instanceTargetPositions","instanceSourceColors","instanceTargetColors","instanceWidths","instanceHeights","instanceTilts","_this$state$model","_getModel","useShortestPath","DEFAULT_INDICES","DEFAULT_TEX_COORDS","interpolateQuad","quad","desaturate","transparentColor","tintColor","BitmapLayer","oldMesh","_createMesh","setVertexCount","_getCoordinateUniforms","bitmap","fracUV","unpackUVsFromRGB","disablePicking","normalizedBounds","isRectangularBounds","createQuad","maxXSpan","maxYSpan","uCount","vCount","vertex","createMesh","coordinateConversion","bitmapTexture","imageCoordinateSystem","defaultImageCoordinateSystem","ColumnGeometry","nradial","flatMap","COUNTER_CLOCKWISE","isExtruded","vertsAroundEdge","stepAngle","tesselateColumn","angle","radiusUnits","ColumnLayer","transpileToGLSL100","useDerivatives","GLSL_DERIVATIVES","FLAT_SHADING","instancePositions","instanceElevations","instanceFillColors","instanceLineColors","instanceStrokeWidths","regenerateModels","_updateGeometry","hasThinkness","meanVertexDistance","edgeDistance","fillVertexCount","wireframeVertexCount","setDrawMode","isStroke","POINT_LAYER","circle","pointRadiusMaxPixels","pointRadiusMinPixels","pointRadiusScale","pointRadiusUnits","pointAntialiasing","pointBillboard","getPointRadius","icon","iconAtlas","iconMapping","iconSizeMaxPixels","iconSizeMinPixels","iconSizeScale","iconSizeUnits","iconAlphaCutoff","iconBillboard","getIcon","getIconAngle","getIconColor","getIconPixelOffset","getIconSize","textSizeMaxPixels","textSizeMinPixels","textSizeScale","textSizeUnits","textBackground","textBackgroundPadding","textFontFamily","textFontWeight","textLineHeight","textMaxWidth","textOutlineColor","textOutlineWidth","textWordBreak","textCharacterSet","textBillboard","textFontSettings","getText","getTextAngle","getTextColor","getTextPixelOffset","getTextSize","getTextAnchor","getTextAlignmentBaseline","getTextBackgroundColor","getTextBorderColor","getTextBorderWidth","LINE_LAYER","lineCapRounded","lineBillboard","POLYGON_LAYER","_full3d","getDefaultProps","mapping","sourceKey","targetKey","separateGeojsonFeatures","wrapFeature","separated","pointFeatures","lineFeatures","polygonFeatures","polygonOutlineFeatures","geometries","separateGeometry","sourceFeature","sourceFeatureIndex","nestLevel","COORDINATE_NEST_LEVEL","validateGeometry","getCoordinates","FEATURE_TYPES","pointType","getRadius","GeoJsonLayer","layerProps","_updateStateBinary","_updateStateJSON","geojsonBinary","polygonsOutline","customPickingColors","calculatePickingColors","getPath","_pathType","triangles","createLayerPropsFromBinary","getGeojsonFeatures","newFeatures","featuresDiff","oldFeatures","partialFeatures","getIndex","createLayerPropsFromFeatures","featureType","pointLayerIdPrefix","sourceIsPoints","PolygonFillLayer","forwardedProps","useLineColor","lineColors","_renderLineLayers","polygonStrokeLayerId","lineStringsLayerId","PolygonStrokeLayer","LineStringsLayer","_renderPointLayers","pointLayers","PointLayerMapping","PointsLayer","pointsLayerProps","polygonFillLayer","propertiesIndex","numericPropsIndex","getPropertiesForIndex","binaryToFeatureForAccesor","resizeImage","ctx","imageData","resizeRatio","clearRect","drawImage","getIconId","buildRowMapping","columns","IconManager","_this$_texture","_texture","_externalTexture","getIconMapping","_autoPacking","_mapping","autoPacking","_this$_texture2","_textureParameters","packIcons","icons","cachedIcons","getDiffIcons","rowHeight","canvasHeight","canvasWidth","buildMapping","_canvasWidth","_rowHeight","_xOffset","_yOffset","_canvasHeight","oldWidth","oldHeight","newTexture","targetY","resizeTexture","_canvas","_loadIcons","willReadFrequently","iconDef","setSubImageData","generateMipmap","sizeScale","billboard","sizeUnits","sizeMinPixels","sizeMaxPixels","alphaCutoff","getSize","getAngle","getPixelOffset","onIconError","IconLayer","iconManager","instanceSizes","instanceOffsets","getInstanceOffset","instanceIconFrames","getInstanceIconFrame","instanceColorModes","getInstanceColorMode","instanceColors","instanceAngles","instancePixelOffset","prePacked","iconsTexture","iconsTextureDim","anchorX","anchorY","LineLayer","GridCellLayer","cellSize","isWireframe","PathTesselator","segmentTypes","gridResolution","flatPath","normalizePath","isCut","subPath","numPoints","getPathLength","isClosed","_updateSegmentTypes","_updatePositions","isPathClosed","getPointOnPath","loop","lastPointIndex","jointRounded","capRounded","miterLimit","rounded","ATTRIBUTE_TRANSITION","PathLayer","calculatePositions","instanceLeftPositions","instanceStartPositions","instanceEndPositions","instanceRightPositions","instanceTypes","calculateSegmentTypes","pathTesselator","jointType","capType","DEFAULT_NORMAL","getNormal","radiusPixels","PointCloudLayer","instanceNormals","normalizeData","defaultLineColor","PolygonLayer","paths","getLineDashArray","geometryChanged","pathsDiff","_getPaths","holeIndices","FillLayer","StrokeLayer","polygonLayer","dashJustified","getDashArray","radiusScale","radiusMinPixels","radiusMaxPixels","antialiasing","strokeWidth","outline","ScatterplotLayer","instanceRadius","instanceLineWidths","OUTER_POLYGON_WINDING","CLOCKWISE","HOLE_POLYGON_WINDING","windingOptions","getPositions","getHoleIndices","copyNestedRing","targetStartIndex","simplePolygon","windingDirection","p1","isNestedRingClosed","copyFlatRing","srcStartIndex","srcEndIndex","srcLength","isFlatRingClosed","srcPositions","srcHoleIndices","isNested","isSimple","polygonIndex","getPlaneArea","xIndex","yIndex","numVerts","area","permutePositions","getSurfaceIndices","preproject","full3d","positionIndex","is3d","xyArea","xzArea","yzArea","PolygonTesselator","IndexType","vertexValid","externalIndices","normalizedPolygon","edgeTypes","maxLatitude","subPolygon","_updateIndices","_updateVertexValid","polygonPositions","SolidPolygonLayer","RING_WINDING_ORDER_CW","polygonTesselator","calculateIndices","nextPositions","calculateVertexValid","elevations","fillColors","topModel","sideModel","renderUniforms","_this$state$models","_getModels","NON_INSTANCED_MODEL","vertexPositions","isSideVertex","DEFAULT_BUFFER","MultiIconLayer","outlineColor","sdf","outlineWidth","smoothing","outlineBuffer","sdfBuffer","getIconOffsets","getBoundingRect","TextBackgroundLayer","instanceRects","instancePixelOffsets","INF","TinySDF","fontSize","cutoff","fontFamily","fontWeight","fontStyle","font","textBaseline","textAlign","fillStyle","gridOuter","gridInner","char","glyphAdvance","actualBoundingBoxAscent","actualBoundingBoxDescent","actualBoundingBoxLeft","actualBoundingBoxRight","measureText","glyphTop","glyphWidth","glyphHeight","glyph","glyphLeft","fillText","imgData","getImageData","edt","x0","gridSize","edt1d","grid","q2","SINGLE_LINE","getTextWidth","_mapping$character","layoutWidth","breakAll","rowStartCharIndex","rowOffsetLeft","textWidth","autoWrapping","wordBreak","groupStartCharIndex","groupEndCharIndex","groupWidth","breakWord","transformRow","leftOffsets","rowSize","character","layoutHeight","codePointAt","LRUCache","_deleteOrder","_appendOrder","_order","DEFAULT_FONT_SETTINGS","characterSet","charSet","getDefaultCharacterSet","populateAlphaChannel","alphaChannel","setTextStyle","FontAtlasManager","_atlas","_key","_getKey","newCharSet","cachedFontAtlas","getNewChars","fontAtlas","_generateFontAtlas","getFontWidth","fontHeight","maxCanvasWidth","putImageData","tinySDF","layoutOffsetY","createImageData","TEXT_ANCHOR","middle","ALIGNMENT_BASELINE","background","getBackgroundColor","getBorderColor","getBorderWidth","backgroundPadding","lineHeight","fontSettings","getAlignmentBaseline","TextLayer","transformParagraph","fontAtlasManager","rowWidth","numCharacters","rowOffset","styleVersion","_updateText","_updateFontAtlas","fontProps","_attributes","textBuffer","autoCharacterSet","texts","characterCount","codes","codesAtIndex","fromCodePoint","charCode","getTextFromBuffer","paragraph","characters","autoWrappingEnabled","rowOffsetTop","lineStartIndex","lineEndIndex","rows","rowIndex","rowStart","rowEnd","_iconMapping$char","CharactersLayerClass","BackgroundLayerClass","fontAtlasCacheLimit","setFontAtlasCacheLimit","replaceInRange","replaceStart","replaceEnd","endChunk","ScenegraphNode","_setScenegraphNodeProps","setPosition","setRotation","setScale","setMatrix","setMatrixComponents","updateMatrix","rot","rotateXYZ","getCoordinateUniforms","worldMatrix","worldInverse","worldInverseTranspose","objectMatrix","worldInverseMatrix","worldInverseTransposeMatrix","GroupNode","_len","removeAll","ATTRIBUTE_TYPE_TO_COMPONENTS","ATTRIBUTE_COMPONENT_TYPE_TO_ARRAY","accessorToJsArray","_animation","components","slicedArray","helperMatrix","GLTFAnimation","playing","channels","animate","timeMs","_ref3","animationTime","nextIndex","previousIndex","previousTime","nextTime","stepInterpolate","slerp","linearInterpolate","tDiff","outTangent0","inTangent1","m0","m1","cubicsplineInterpolate","interpolate","gltfNode","applyTranslationRotationScale","_node","GLTFAnimator","animations","animation","samplers","_ref4","accessors","_ref5","nodes","getAnimations","ModelNode","AfterRender","_setModelNodeProps","managedResources","addVersionToShader","DEFAULT_OPTIONS","modelOptions","GLTFInstantiator","instantiate","scenes","scene","createScene","createAnimator","gltfScene","createNode","gltfMesh","_mesh","primitives","gltfPrimitive","createPrimitive","getVertexCount","generatedTextures","createGLTFModel","createAttributes","loadedAttributes","attrName","createAccessor","createBuffer","ARRAY_BUFFER","ELEMENT_ARRAY_BUFFER","generated","lumaBuffers","createSampler","gltfSampler","needsPOT","getScene","getAnimator","animator","_animations","_imageBasedLightingEnvironment","getOrientation","getTranslation","ScenegraphLayer","instanceModelMatrix","_updateScenegraph","_applyAnimationsProp","_deleteScenegraph","scenegraphData","gltfObjects","instantiator","createGLTFObjects","_getModelOptions","remaining","uniform","waitWhileCondition","waitForGLTFAssets","_applyAllAttributes","attributesAvailable","allAttributes","animationsProp","findResult","waitForFullLoad","composeModelMatrix","sceneModelMatrix","validateGeometryAttributes","useMeshColors","SimpleMeshLayer","DERIVATIVES_AVAILABLE","_mesh$header","positionBounds","_useMeshColors","emptyTexture","setTexture","hasTexture","RADIAN_PER_DEGREE","valueArray","calculateTransformMatrix","targetMatrix","orientation","yaw","roll","sp","cp","cw","scx","scy","scz","getExtendedMat3FromMat4","MATRIX_ATTRIBUTES","instanceModelMatrix__LOCATION_0","instanceModelMatrix__LOCATION_1","instanceModelMatrix__LOCATION_2","instanceTranslation","arrayMatrix","constantMatrix","constantScale","constantOrientation","constantTranslation","hasMatrix","instanceModelMatrixData","shouldComposeModelMatrix","useLayoutEffect","inheritsFrom","ParentType","MAP_STYLE","evaluateChildren","childProps","isComponent","_child$props","cloneElement","deckGLViewProps","needsDeckGLViewProps","wrapInView","CANVAS_ONLY_STYLES","mixBlendMode","redrawDeck","thisRef","DeckGL","forwardRef","setVersion","useState","control","containerRef","canvasRef","jsxProps","reactChildren","jsxLayers","jsxViews","reactElement","ElementType","LayerType","reactProps","createLayer","extractJSXLayers","inRender","handleViewStateChange","_props$onViewStateCha","viewStateUpdateRequested","handleInteractionStateChange","_props$onInteractionS","interactionStateUpdateRequested","deckProps","DeckClass","lastRenderedViewports","_thisRef$deck","useImperativeHandle","getRefHandles","currentViewports","ContextProvider","containerStyle","canvasStyle","extractStyles","childrenUnderViews","defaultViewId","viewChildren","viewElement","contextValue","offsetParent","positionChildrenUnderViews","StyleSheet","_insertTag","before","insertionPoint","prepend","isSpeedy","speedy","ctr","_proto","hydrate","insert","rule","createTextNode","createStyleElement","sheet","styleSheets","ownerNode","sheetForTag","insertRule","cssRules","pattern","replacement","indexof","begin","caret","alloc","dealloc","delimit","delimiter","whitespace","escaping","commenter","COMMENT","compile","rules","rulesets","pseudo","declarations","atrule","variable","scanning","ampersand","declaration","ruleset","post","identifierWithPointTracking","fixedElements","compat","isImplicitRule","parsed","toRules","getRules","parentRules","removeLabel","defaultStylisPlugins","createCache","ssrStyles","stylisPlugins","inserted","nodesToHydrate","attrib","currentSheet","collection","finalizingPlugins","serializer","serialized","shouldCache","registered","EmotionCacheContext","createContext","HTMLElement","CacheProvider","withEmotionCache","useContext","ThemeContext","useInsertionEffect","useInsertionEffectMaybe","typePropName","createEmotionProps","Insertion","isStringTag","Emotion","cssProp","css","WrappedComponent","registeredStyles","Fragment","jsx","argsLength","createElementArgArray","Global","sheetRef","rehydrating","sheetRefCurrent","keyframes","insertable","anim","classnames","toAdd","serializedArr","ClassNames","cx","_len2","_key2","rawClassName","merge","theme","ele","unitlessKeys","animationIterationCount","aspectRatio","borderImageOutset","borderImageSlice","borderImageWidth","boxFlex","boxFlexGroup","boxOrdinalGroup","columnCount","flex","flexGrow","flexPositive","flexShrink","flexNegative","flexOrder","gridRow","gridRowEnd","gridRowSpan","gridRowStart","gridColumn","gridColumnEnd","gridColumnSpan","gridColumnStart","msGridRow","msGridRowSpan","msGridColumn","msGridColumnSpan","orphans","tabSize","widows","WebkitLineClamp","fillOpacity","floodOpacity","stopOpacity","strokeDasharray","strokeDashoffset","strokeMiterlimit","strokeOpacity","hyphenateRegex","animationRegex","isCustomProperty","isProcessableValue","processStyleName","styleName","processStyleValue","p2","handleInterpolation","mergedProps","__emotion_styles","interpolated","createStringFromObject","previousCursor","cached","labelPattern","serializeStyles","stringMode","strings","identifierName","getRegisteredStyles","classNames","registerStyles","insertStyles","isFunction","isObject","isPureObject","isIterable","isResponse","Response","isBlob","isBuffer","isReadableStream","ReadableStream","tee","isReadableDOMStream","pipe","isBoolean","readable","isReadableNodeStream","pathPrefix","fileAliases","DATA_URL_PATTERN","MIME_TYPE_PATTERN","parseMIMETypeFromURL","QUERY_STRING_PATTERN","stripQueryString","getResourceUrl","getResourceMIMEType","contentTypeHeader","noQueryUrl","mimeString","parseMIMEType","contentLength","getResourceContentLength","initialDataUrl","blobSlice","FileReader","_event$target","readAsDataURL","base64","arrayBufferToBase64","getInitialDataUrl","fetchFile","filename","alias","resolvePath","globalOptions","terminate","workerURLCache","getLoadableWorkerURLFromSource","workerSource","getTransferList","recursive","transfers","transfersSet","isTransferable","MessagePort","ImageBitmap","OffscreenCanvas","NOOP","WorkerThread","onMessage","_createBrowserWorker","_createNodeWorker","terminated","isRunning","transferList","_getErrorFromErrorEvent","lineno","colno","_loadableURL","workerURL","getLoadableWorkerURL","onmessageerror","eval","WorkerJob","jobName","workerThread","_resolve","_reject","WorkerPool","idleQueue","maxConcurrency","maxMobileConcurrency","reuseWorkers","onDebug","startJob","job","startPromise","jobQueue","_startQueuedJob","_getAvailableWorker","queuedJob","backlog","returnWorkerToQueue","_getMaxConcurrency","WorkerFarm","getWorkerFarm","_workerFarm","workerPools","workerPool","_getWorkerPoolProps","getWorkerPool","NPM_TAG","parseWithWorker","parseOnMainThread","workerOptions","workerFile","_workerType","versionTag","getWorkerURL","DEFAULT_CHUNK_SIZE","_toArrayBuffer","makeStreamIterator","nextBatchPromise","currentBatchPromise","_streamReadAhead","makeBrowserStreamIterator","makeNodeStreamIterator","ERR_DATA","getArrayBufferOrStringFromData","isArrayBuffer","getArrayBufferOrStringFromDataSync","getResponseError","chunkSize","textEncoder","chunkLength","makeStringIterator","chunkByteLength","sourceArray","makeArrayBufferIterator","makeBlobIterator","arrayBuffers","concatenateArrayBuffersAsync","EXT_PATTERN","selectLoaderSync","validHTTPResponse","candidateLoaders","ignoreRegisteredLoaders","normalizeLoaders","testUrl","findLoaderByMIMEType","loaderExtension","findLoaderByExtension","findLoaderByUrl","testDataAgainstText","testDataAgainstBinary","findLoaderByInitialBytes","getFirstCharacters","fallbackMimeType","selectLoaderInternal","nothrow","getNoValidLoaderMessage","firstCharacters","testBinary","contextLoaders","getLoadersFromContext","selectLoader","parentContext","extractQueryString","getLoaderContext","validateWorkerVersion","redirected","dataType","_nodeWorkers","canParseWithWorker","parseText","parseWithLoader","getGlobalLoaderRegistry","loaderRegistry","registerLoaders","normalizedLoader","registeredLoader","getRegisteredLoaders","isLoaderObject","normalizeLoader","_loader2","_loader3","probeLog","NullLog","DEFAULT_LOADER_OPTIONS","_len3","_key3","_len4","_key4","CDN","_limitMB","batchSize","batchDebounceMs","transforms","REMOVED_LOADER_OPTIONS","throws","referrerPolicy","integrity","getGlobalLoaderState","getGlobalLoaderOptions","normalizeOptions","validateOptionsObject","idOptions","deprecatedOptions","validateOptions","mergedOptions","baseUri","addUrlOptions","mergeNestedFields","normalizeOptionsInternal","defaultOptions","loaderName","isSubOptions","suggestion","findSimilarOption","optionKey","lowerCaseOptionKey","bestSuggestion","lowerCaseKey","DEFAULT_DRACO_OPTIONS","decoderType","libraryPath","attributeNameEntry","DracoLoader","shapes","Field","nullable","typeId","compareTo","_Symbol$toStringTag","_Symbol$toStringTag2","_Symbol$toStringTag3","_Symbol$toStringTag4","_Symbol$toStringTag5","_Symbol$toStringTag6","_Symbol$toStringTag7","_Symbol$toStringTag8","DataType","isNull","Null","isInt","Int","isFloat","Float","isBinary","Binary","isUtf8","Utf8","isBool","Bool","isDecimal","Decimal","isDate","isTime","Time","isTimestamp","isInterval","Interval","isList","List","isStruct","Struct","isUnion","Union","isFixedSizeBinary","FixedSizeBinary","isFixedSizeList","FixedSizeList","isMap","isDictionary","Dictionary","NONE","isSigned","bitWidth","Int8","Int16","Int32","Uint8","Uint16","Uint32","precision","Float32","Float64","listSize","valueField","usedNames","checkNames","select","nameMap","columnNames","selectedFields","selectAt","columnIndices","schemaOrFields","otherSchema","mergeMaps","fieldMap","mergedFields","m2","getArrowFieldFromAttribute","loaderData","optionalMetadata","getArrowTypeFromTypedArray","makeMeshAttributeMetadata","deduceMeshField","makeMetadata","metadataMap","DRACO_TO_GLTF_ATTRIBUTE_NAME_MAP","COLOR","TEX_COORD","DRACO_DATA_TYPE_TO_TYPED_ARRAY_MAP","DracoParser","decoder","Decoder","metadataQuerier","MetadataQuerier","DecoderBuffer","Init","_disableAttributeTransforms","geometry_type","GetEncodedGeometryType","dracoGeometry","TRIANGULAR_MESH","Mesh","PointCloud","dracoStatus","DecodeBufferToMesh","DecodeBufferToPointCloud","ptr","error_msg","_getDracoLoaderData","_getMeshData","schema","namedLoaderDataAttributes","dracoAttribute","transformAttributesLoaderData","indicesField","getDracoSchema","num_points","_getTopLevelMetadata","_getDracoAttributes","num_attributes","num_faces","dracoAttributes","attributeId","GetAttribute","_getAttributeMetadata","unique_id","attribute_type","data_type","num_components","byte_offset","byte_stride","attribute_index","_getQuantizationTransform","quantization_transform","octahedron","_getOctahedronTransform","octahedron_transform","_getMeshAttributes","topology","_getTriangleStripIndices","_getTriangleListIndices","loaderAttribute","_deduceAttributeName","_getAttributeValues","numIndices","_malloc","GetTrianglesUInt32Array","HEAPF32","_free","dracoArray","DracoInt32Array","GetTriangleStripsFromMesh","numValues","intArray","GetValue","getUint32Array","TypedArrayCtor","numComponents","DT_FLOAT32","DT_INT8","DT_INT16","DT_INT32","DT_UINT8","DT_UINT16","DT_UINT32","DT_INVALID","getDracoDataType","GetAttributeDataArrayForAllPoints","attributeUniqueId","thisAttributeType","dracoAttributeConstant","entryName","dracoMetadata","GetMetadata","_getDracoMetadata","GetAttributeMetadata","numEntries","NumEntries","entryIndex","GetEntryName","_getDracoMetadataField","GetIntEntryArray","getInt32Array","int","GetIntEntry","GetStringEntry","double","GetDoubleEntry","quantizedAttributes","octahedronAttributes","skipAttributes","dracoAttributeName","SkipAttributeTransform","AttributeQuantizationTransform","InitFromAttribute","quantization_bits","min_values","min_value","STATIC_DECODER_URL","DRACO_JS_DECODER_URL","DRACO_WASM_WRAPPER_URL","DRACO_WASM_DECODER_URL","loadDecoderPromise","draco3d","createDecoderModule","DracoDecoderModule","wasmBinary","onModuleLoaded","initializeDracoDecoder","loadDracoDecoder","loadDracoDecoderModule","dracoParser","BASIS_CDN_ENCODER_WASM","BASIS_CDN_ENCODER_JS","loadBasisTranscoderPromise","loadBasisEncoderPromise","loadBasisTrascoderModule","basis","BASIS","BasisModule","BasisFile","initializeBasis","initializeBasisTrascoderModule","loadBasisTrascoder","loadBasisEncoderModule","basisEncoder","BASIS_ENCODER","BasisEncoderModule","KTX2File","BasisEncoder","initializeBasisEncoderModule","loadBasisEncoder","BROWSER_PREFIXES","WEBGL_EXTENSIONS","WEBGL_compressed_texture_s3tc","WEBGL_compressed_texture_s3tc_srgb","WEBGL_compressed_texture_etc1","WEBGL_compressed_texture_etc","WEBGL_compressed_texture_pvrtc","WEBGL_compressed_texture_atc","WEBGL_compressed_texture_astc","EXT_texture_compression_rgtc","formats","BASISLZ","ZSTD","ZLIB","BASICFORMAT","UNSPECIFIED","ETC1S","UASTC","SRGB","LINEAR","ITU","NTSC","SLOG","SLOG2","ALPHA_STRAIGHT","ALPHA_PREMULTIPLIED","RRR","GGG","AAA","RRRG","KTX2_ID","OutputFormat","etc1","basisFormat","etc2","bc1","bc3","bc4","bc5","rgba32","bgr565","rgba4444","parseBasisFile","basisFile","startTranscoding","imageCount","getNumImages","images","imageIndex","levelsCount","getNumLevels","levels","levelIndex","transcodeImage","getImageWidth","getImageHeight","hasAlpha","getHasAlpha","getBasisOptions","decodedSize","getImageTranscodedSizeInBytes","decodedData","parseKTX2File","ktx2File","getLevels","transcodeKTX2Image","alphaFlag","getImageLevelInfo","levelSize","selectSupportedBasisFormat","alpha","noAlpha","supportedFormats","getWebGLContext","gpuTextureFormat","getSupportedGPUTextureFormats","BasisLoader","containerFormat","isKTX","fileConstructors","resolveUrl","padToNBytes","copyToArray","targetOffset","srcByteLength","DEFAULT_GLTF_JSON","generator","GLTFScenegraph","getApplicationData","getExtraData","isExtension","getUsedExtensions","getRequiredExtension","getRequiredExtensions","extensionsRequired","getRemovedExtensions","getObjectExtension","getObject","getNode","getSkin","getMesh","getMaterial","getSampler","getBufferView","getTypedArrayForBufferView","bufferIndex","binChunk","getTypedArrayForAccessor","getTypedArrayForImageData","addApplicationData","addExtraData","addObjectExtension","registerUsedExtension","setObjectExtension","removeObjectExtension","addExtension","extensionData","addRequiredExtension","registerRequiredExtension","ext","removeExtension","_removeStringFromArray","setDefaultScene","sceneIndex","addScene","nodeIndices","addNode","meshIndex","nodeData","addMesh","glTFMesh","_addAttributes","indicesAccessor","_addIndices","meshes","addPointCloud","addImage","mimeTypeOpt","glTFImage","addBufferView","glTFBufferView","addAccessor","glTFAccessor","addBinaryBuffer","sourceBuffer","minMax","_getAccessorMinMax","accessorDefaults","addTexture","glTFTexture","textures","addMaterial","pbrMaterialInfo","materials","createBinaryChunk","_this$json$buffers","totalByteLength","targetArray","dstByteOffset","found","attributeKey","attributeData","_getGltfAttributeName","initValues","componentIndex","wasm_base","wasm_simd","detector","wasmpack","FILTERS","OCTAHEDRAL","QUATERNION","EXPONENTIAL","DECODERS","ATTRIBUTES","INDICES","wasmPromise","EXT_MESHOPT_COMPRESSION","gltfData","_options$gltf","decompressMeshes","promises","decodeMeshoptBufferView","meshoptExtension","ch","__wasm_call_ctors","loadWasmModule","loadWasmInstance","fun","sbrk","count4","tp","heap","meshoptDecodeGltfBuffer","mimeTypeSupportedSync","isImageFormatSupported","supported","toDataURL","testBrowserImageFormatSupport","checkBrowserImageFormatSupport","NODE_FORMAT_SUPPORT","_parseImageNode","_imageFormatsNode","checkNodeImageFormatSupport","EXT_TEXTURE_WEBP","preprocess","KHR_TEXTURE_BASISU","getGLTFAccessor","convertTypedArrays","toTypedArray","getAccessorData","KHR_DRACO_MESH_COMPRESSION","primitive","makeMeshPrimitiveIterator","decompressPrimitive","compressMesh","dracoExtension","bufferCopy","decodedAttributes","getGLTFAccessors","decodedAttribute","accessorIndex","checkPrimitive","_context$parseSync","DracoWriter","encodeSync","fauxAccessors","_addFauxAttributes","COMPONENTS","BYTES","EXT_MESHOPT_TRANSFORM","scratchRotationMatrix","scratchScaleMatrix","transformTexCoords","materialIndex","_gltfData$json$materi","_material$pbrMetallic","_material$pbrMetallic2","processedTexCoords","transformPrimitives","emisiveTexture","emissiveTexture","normalTexture","occlusionTexture","metallicRoughnessTexture","transformParameters","_texture$extensions","textureInfo","texCoord","originalTexCoord","newTexCoord","translationMatirx","rotationMatirx","makeTransformationMatrix","getTransformParameters","transformPrimitive","texCoordAccessor","_gltfData$json$access","_gltfData$json$buffer","bufferByteOffset","elementAddressScale","transformByMatrix3","newTexCoordArray","updateGltf","originalAccessor","createAttribute","KHR_LIGHTS_PUNCTUAL","gltfScenegraph","nodeExtension","KHR_MATERIALS_UNLIT","KHR_materials_unlit","KHR_TECHNIQUES_WEBGL","techniques","techniquesExtension","programs","shader","program","fragmentShader","vertexShader","technique","resolveTechniques","materialExtension","resolveValues","EXT_FEATURE_METADATA","_extension$schema","schemaClasses","featureTables","featureTextures","schemaName","schemaClass","findFeatureTableByName","handleFeatureTableProperties","decodeExtFeatureMetadata","_featureTable$propert","schemaProperty","featureTableProperty","numberOfFeatures","getPropertyDataFromBinarySource","stringOffsetBufferView","offsetsData","stringsCount","stringsArray","stringOffset","stringByteSize","stringData","getStringAttributes","schemaClassName","featureTableName","class","EXTENSIONS","useExtension","excludes","excludeExtensions","KHR_BINARY_GLTF","GLTF_ARRAYS","skins","GLTF_KEYS","skin","GLTFV1Normalizer","_addAsset","_convertTopLevelObjectsToArrays","_convertObjectIdsToArrayIndices","_updateObjects","_updateMaterial","arrayName","_convertTopLevelObjectToArray","mapName","objectMap","idToIndexMap","_convertIdsToIndices","_convertIdToIndex","_convertTextureIds","_convertMeshIds","_convertNodeIds","_convertSceneIds","topLevelArrayName","_material$values","_material$values2","_material$values3","baseColorFactor","metallicFactor","roughnessFactor","textureId","tex","texture2d_0","diffuseTex","textureIndex","SAMPLER_PARAMETER_GLTF_TO_GL","magFilter","minFilter","wrapS","wrapT","DEFAULT_SAMPLER","GLTFPostProcessor","postProcess","_resolveTree","bufView","_resolveBufferView","_resolveImage","_resolveSampler","_resolveTexture","_resolveAccessor","_resolveMaterial","_resolveMesh","_resolveNode","_resolveSkin","_resolveScene","_get","getCamera","accum","inverseBindMatrices","occlustionTexture","emmisiveTexture","emissiveFactor","bytesPerComponent","cutBuffer","_getValueFromInterleavedBuffer","glEnum","_enumSamplerParameter","preloadedImage","_resolveCamera","MAGIC_glTF","GLB_FILE_HEADER_SIZE","GLB_CHUNK_HEADER_SIZE","GLB_CHUNK_TYPE_JSON","GLB_CHUNK_TYPE_BIN","GLB_CHUNK_TYPE_JSON_XVIZ_DEPRECATED","GLB_CHUNK_TYPE_BIX_XVIZ_DEPRECATED","GLB_V1_CONTENT_FORMAT_JSON","LE","parseJSONChunk","glb","jsonChunk","jsonText","parseBINChunk","hasBinChunk","binChunks","parseGLTF","arrayBufferOrString","_options$gltf2","_options$gltf3","_options$gltf4","magic1","parseJSON","contentFormat","parseGLBV1","chunkFormat","strict","parseGLBChunksSync","parseGLBV2","parseGLBSync","_glb","parseGLTFContainerSync","normalizeGLTFV1","_extension$preprocess","preprocessExtensions","loadBuffers","_context$fetch","_response$arrayBuffer","loadImages","imageIndices","getReferencesImageIndices","_extension$decode","decodeExtensions","postProcessGLTF","parsedImage","GLTFLoader","fetchImages","createImages","decompress","TYPES","ARRAY_CONSTRUCTOR_TO_WEBGL_CONSTANT","ARRAY_TO_COMPONENT_TYPE","ATTRIBUTE_COMPONENT_TYPE_TO_BYTE_SIZE","getAccessorTypeFromSize","getComponentTypeFromArray","getAccessorArrayTypeAndLength","getMemoryUsageGLTF","imageBufferViews","acc","pixelCount","IMAGE_SUPPORTED","Image","IMAGE_BITMAP_SUPPORTED","NODE_IMAGE_SUPPORTED","DATA_SUPPORTED","getImageType","getImageTypeOrNull","SVG_DATA_URL_PATTERN","SVG_URL_PATTERN","isSVG","getBlob","parseToImage","blobOrDataUrl","unescape","getBlobOrSVGDataUrl","webkitURL","objectUrl","loadToImage","EMPTY_OBJECT","imagebitmapOptionsSupported","ImageLoader","imageType","getDefaultImageType","isImageTypeSupported","getLoadableImageType","imagebitmapOptions","createImageBitmap","safeCreateImageBitmap","parseToImageBitmap","parseToNodeImage","BIG_ENDIAN","LITTLE_ENDIAN","getBinaryImageMetadata","binaryData","toDataView","getPngMetadata","getUint16","tableMarkers","sofMarkers","getJpegMarkers","getJpegMetadata","getGifMetadata","getBmpMetadata","mediaType","headerBytes","checkString","decodeMajorBrand","getISOBMFFMediaType","getISOBMFFMetadata","compareArrayBuffers","arrayBuffer1","arrayBuffer2","array1","array2","concatenateArrayBuffers","sourceArrays","source2","sliceArrayBuffer","subArray","isBrowser","browser","slashIndex","dirname","getMeshBoundingBox","globals","global_","isWorker","importScripts","isMobile","readFileAsArrayBuffer","readFileAsText","requireFromFile","requireFromString","loadLibraryPromises","loadLibrary","libraryUrl","moduleName","library","getLibraryUrl","scriptSource","loadLibraryFromString","loadLibraryFromFile","DEPTH_BUFFER_BIT","STENCIL_BUFFER_BIT","COLOR_BUFFER_BIT","SRC_COLOR","ONE_MINUS_SRC_COLOR","SRC_ALPHA","ONE_MINUS_SRC_ALPHA","DST_ALPHA","ONE_MINUS_DST_ALPHA","DST_COLOR","ONE_MINUS_DST_COLOR","SRC_ALPHA_SATURATE","CONSTANT_COLOR","ONE_MINUS_CONSTANT_COLOR","CONSTANT_ALPHA","ONE_MINUS_CONSTANT_ALPHA","FUNC_ADD","FUNC_SUBTRACT","FUNC_REVERSE_SUBTRACT","BLEND_EQUATION","BLEND_EQUATION_RGB","BLEND_EQUATION_ALPHA","BLEND_DST_RGB","BLEND_SRC_RGB","BLEND_DST_ALPHA","BLEND_SRC_ALPHA","BLEND_COLOR","ARRAY_BUFFER_BINDING","ELEMENT_ARRAY_BUFFER_BINDING","LINE_WIDTH","ALIASED_POINT_SIZE_RANGE","ALIASED_LINE_WIDTH_RANGE","CULL_FACE_MODE","FRONT_FACE","DEPTH_RANGE","DEPTH_WRITEMASK","DEPTH_CLEAR_VALUE","DEPTH_FUNC","STENCIL_CLEAR_VALUE","STENCIL_FUNC","STENCIL_FAIL","STENCIL_PASS_DEPTH_FAIL","STENCIL_PASS_DEPTH_PASS","STENCIL_REF","STENCIL_VALUE_MASK","STENCIL_WRITEMASK","STENCIL_BACK_FUNC","STENCIL_BACK_FAIL","STENCIL_BACK_PASS_DEPTH_FAIL","STENCIL_BACK_PASS_DEPTH_PASS","STENCIL_BACK_REF","STENCIL_BACK_VALUE_MASK","STENCIL_BACK_WRITEMASK","VIEWPORT","SCISSOR_BOX","COLOR_CLEAR_VALUE","COLOR_WRITEMASK","UNPACK_ALIGNMENT","PACK_ALIGNMENT","MAX_TEXTURE_SIZE","MAX_VIEWPORT_DIMS","SUBPIXEL_BITS","RED_BITS","GREEN_BITS","BLUE_BITS","ALPHA_BITS","DEPTH_BITS","STENCIL_BITS","POLYGON_OFFSET_UNITS","POLYGON_OFFSET_FACTOR","TEXTURE_BINDING_2D","SAMPLE_BUFFERS","SAMPLES","SAMPLE_COVERAGE_VALUE","SAMPLE_COVERAGE_INVERT","COMPRESSED_TEXTURE_FORMATS","VENDOR","RENDERER","IMPLEMENTATION_COLOR_READ_TYPE","IMPLEMENTATION_COLOR_READ_FORMAT","BROWSER_DEFAULT_WEBGL","STATIC_DRAW","STREAM_DRAW","DYNAMIC_DRAW","BUFFER_SIZE","BUFFER_USAGE","CURRENT_VERTEX_ATTRIB","VERTEX_ATTRIB_ARRAY_ENABLED","VERTEX_ATTRIB_ARRAY_SIZE","VERTEX_ATTRIB_ARRAY_STRIDE","VERTEX_ATTRIB_ARRAY_TYPE","VERTEX_ATTRIB_ARRAY_NORMALIZED","VERTEX_ATTRIB_ARRAY_POINTER","VERTEX_ATTRIB_ARRAY_BUFFER_BINDING","CULL_FACE","FRONT","BACK","FRONT_AND_BACK","BLEND","DEPTH_TEST","DITHER","POLYGON_OFFSET_FILL","SAMPLE_ALPHA_TO_COVERAGE","SAMPLE_COVERAGE","SCISSOR_TEST","STENCIL_TEST","NO_ERROR","INVALID_ENUM","INVALID_VALUE","INVALID_OPERATION","OUT_OF_MEMORY","CONTEXT_LOST_WEBGL","CW","CCW","DONT_CARE","FASTEST","NICEST","GENERATE_MIPMAP_HINT","DEPTH_COMPONENT","ALPHA","LUMINANCE","LUMINANCE_ALPHA","FRAGMENT_SHADER","VERTEX_SHADER","COMPILE_STATUS","DELETE_STATUS","LINK_STATUS","VALIDATE_STATUS","ATTACHED_SHADERS","ACTIVE_ATTRIBUTES","ACTIVE_UNIFORMS","MAX_VERTEX_ATTRIBS","MAX_VERTEX_UNIFORM_VECTORS","MAX_VARYING_VECTORS","MAX_COMBINED_TEXTURE_IMAGE_UNITS","MAX_VERTEX_TEXTURE_IMAGE_UNITS","MAX_TEXTURE_IMAGE_UNITS","MAX_FRAGMENT_UNIFORM_VECTORS","SHADER_TYPE","SHADING_LANGUAGE_VERSION","CURRENT_PROGRAM","NEVER","ALWAYS","LESS","EQUAL","LEQUAL","GREATER","GEQUAL","NOTEQUAL","KEEP","INCR","DECR","INVERT","INCR_WRAP","DECR_WRAP","NEAREST","NEAREST_MIPMAP_NEAREST","LINEAR_MIPMAP_NEAREST","NEAREST_MIPMAP_LINEAR","LINEAR_MIPMAP_LINEAR","TEXTURE_MAG_FILTER","TEXTURE_MIN_FILTER","TEXTURE_WRAP_S","TEXTURE_WRAP_T","TEXTURE_2D","TEXTURE","TEXTURE_CUBE_MAP","TEXTURE_BINDING_CUBE_MAP","TEXTURE_CUBE_MAP_POSITIVE_X","TEXTURE_CUBE_MAP_NEGATIVE_X","TEXTURE_CUBE_MAP_POSITIVE_Y","TEXTURE_CUBE_MAP_NEGATIVE_Y","TEXTURE_CUBE_MAP_POSITIVE_Z","TEXTURE_CUBE_MAP_NEGATIVE_Z","MAX_CUBE_MAP_TEXTURE_SIZE","TEXTURE0","ACTIVE_TEXTURE","REPEAT","CLAMP_TO_EDGE","MIRRORED_REPEAT","TEXTURE_WIDTH","TEXTURE_HEIGHT","FLOAT_VEC2","FLOAT_VEC3","FLOAT_VEC4","INT_VEC2","INT_VEC3","INT_VEC4","BOOL","BOOL_VEC2","BOOL_VEC3","BOOL_VEC4","FLOAT_MAT2","FLOAT_MAT3","FLOAT_MAT4","SAMPLER_2D","SAMPLER_CUBE","LOW_FLOAT","MEDIUM_FLOAT","HIGH_FLOAT","LOW_INT","MEDIUM_INT","HIGH_INT","FRAMEBUFFER","RENDERBUFFER","RGBA4","RGB5_A1","RGB565","DEPTH_COMPONENT16","STENCIL_INDEX","STENCIL_INDEX8","DEPTH_STENCIL","RENDERBUFFER_WIDTH","RENDERBUFFER_HEIGHT","RENDERBUFFER_INTERNAL_FORMAT","RENDERBUFFER_RED_SIZE","RENDERBUFFER_GREEN_SIZE","RENDERBUFFER_BLUE_SIZE","RENDERBUFFER_ALPHA_SIZE","RENDERBUFFER_DEPTH_SIZE","RENDERBUFFER_STENCIL_SIZE","FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE","FRAMEBUFFER_ATTACHMENT_OBJECT_NAME","FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL","FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE","COLOR_ATTACHMENT0","DEPTH_ATTACHMENT","STENCIL_ATTACHMENT","DEPTH_STENCIL_ATTACHMENT","FRAMEBUFFER_COMPLETE","FRAMEBUFFER_INCOMPLETE_ATTACHMENT","FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT","FRAMEBUFFER_INCOMPLETE_DIMENSIONS","FRAMEBUFFER_UNSUPPORTED","FRAMEBUFFER_BINDING","RENDERBUFFER_BINDING","READ_FRAMEBUFFER","DRAW_FRAMEBUFFER","MAX_RENDERBUFFER_SIZE","INVALID_FRAMEBUFFER_OPERATION","UNPACK_FLIP_Y_WEBGL","UNPACK_PREMULTIPLY_ALPHA_WEBGL","UNPACK_COLORSPACE_CONVERSION_WEBGL","READ_BUFFER","UNPACK_ROW_LENGTH","UNPACK_SKIP_ROWS","UNPACK_SKIP_PIXELS","PACK_ROW_LENGTH","PACK_SKIP_ROWS","PACK_SKIP_PIXELS","TEXTURE_BINDING_3D","UNPACK_SKIP_IMAGES","UNPACK_IMAGE_HEIGHT","MAX_3D_TEXTURE_SIZE","MAX_ELEMENTS_VERTICES","MAX_ELEMENTS_INDICES","MAX_TEXTURE_LOD_BIAS","MAX_FRAGMENT_UNIFORM_COMPONENTS","MAX_VERTEX_UNIFORM_COMPONENTS","MAX_ARRAY_TEXTURE_LAYERS","MIN_PROGRAM_TEXEL_OFFSET","MAX_PROGRAM_TEXEL_OFFSET","MAX_VARYING_COMPONENTS","FRAGMENT_SHADER_DERIVATIVE_HINT","RASTERIZER_DISCARD","VERTEX_ARRAY_BINDING","MAX_VERTEX_OUTPUT_COMPONENTS","MAX_FRAGMENT_INPUT_COMPONENTS","MAX_SERVER_WAIT_TIMEOUT","MAX_ELEMENT_INDEX","RED","RGB8","RGBA8","RGB10_A2","TEXTURE_3D","TEXTURE_WRAP_R","TEXTURE_MIN_LOD","TEXTURE_MAX_LOD","TEXTURE_BASE_LEVEL","TEXTURE_MAX_LEVEL","TEXTURE_COMPARE_MODE","TEXTURE_COMPARE_FUNC","SRGB8","SRGB8_ALPHA8","COMPARE_REF_TO_TEXTURE","RGBA32F","RGB32F","RGBA16F","RGB16F","TEXTURE_2D_ARRAY","TEXTURE_BINDING_2D_ARRAY","R11F_G11F_B10F","RGB9_E5","RGBA32UI","RGB32UI","RGBA16UI","RGB16UI","RGBA8UI","RGB8UI","RGBA32I","RGB32I","RGBA16I","RGB16I","RGBA8I","RGB8I","RED_INTEGER","RGB_INTEGER","RGBA_INTEGER","R8","RG8","R16F","R32F","RG16F","RG32F","R8I","R8UI","R16I","R16UI","R32I","R32UI","RG8I","RG8UI","RG16I","RG16UI","RG32I","RG32UI","R8_SNORM","RG8_SNORM","RGB8_SNORM","RGBA8_SNORM","RGB10_A2UI","TEXTURE_IMMUTABLE_FORMAT","TEXTURE_IMMUTABLE_LEVELS","UNSIGNED_INT_2_10_10_10_REV","UNSIGNED_INT_10F_11F_11F_REV","UNSIGNED_INT_5_9_9_9_REV","FLOAT_32_UNSIGNED_INT_24_8_REV","UNSIGNED_INT_24_8","HALF_FLOAT","RG","RG_INTEGER","INT_2_10_10_10_REV","CURRENT_QUERY","QUERY_RESULT","QUERY_RESULT_AVAILABLE","ANY_SAMPLES_PASSED","ANY_SAMPLES_PASSED_CONSERVATIVE","MAX_DRAW_BUFFERS","DRAW_BUFFER0","DRAW_BUFFER1","DRAW_BUFFER2","DRAW_BUFFER3","DRAW_BUFFER4","DRAW_BUFFER5","DRAW_BUFFER6","DRAW_BUFFER7","DRAW_BUFFER8","DRAW_BUFFER9","DRAW_BUFFER10","DRAW_BUFFER11","DRAW_BUFFER12","DRAW_BUFFER13","DRAW_BUFFER14","DRAW_BUFFER15","MAX_COLOR_ATTACHMENTS","COLOR_ATTACHMENT1","COLOR_ATTACHMENT2","COLOR_ATTACHMENT3","COLOR_ATTACHMENT4","COLOR_ATTACHMENT5","COLOR_ATTACHMENT6","COLOR_ATTACHMENT7","COLOR_ATTACHMENT8","COLOR_ATTACHMENT9","COLOR_ATTACHMENT10","COLOR_ATTACHMENT11","COLOR_ATTACHMENT12","COLOR_ATTACHMENT13","COLOR_ATTACHMENT14","COLOR_ATTACHMENT15","SAMPLER_3D","SAMPLER_2D_SHADOW","SAMPLER_2D_ARRAY","SAMPLER_2D_ARRAY_SHADOW","SAMPLER_CUBE_SHADOW","INT_SAMPLER_2D","INT_SAMPLER_3D","INT_SAMPLER_CUBE","INT_SAMPLER_2D_ARRAY","UNSIGNED_INT_SAMPLER_2D","UNSIGNED_INT_SAMPLER_3D","UNSIGNED_INT_SAMPLER_CUBE","UNSIGNED_INT_SAMPLER_2D_ARRAY","MAX_SAMPLES","SAMPLER_BINDING","PIXEL_PACK_BUFFER","PIXEL_UNPACK_BUFFER","PIXEL_PACK_BUFFER_BINDING","PIXEL_UNPACK_BUFFER_BINDING","COPY_READ_BUFFER","COPY_WRITE_BUFFER","COPY_READ_BUFFER_BINDING","COPY_WRITE_BUFFER_BINDING","FLOAT_MAT2x3","FLOAT_MAT2x4","FLOAT_MAT3x2","FLOAT_MAT3x4","FLOAT_MAT4x2","FLOAT_MAT4x3","UNSIGNED_INT_VEC2","UNSIGNED_INT_VEC3","UNSIGNED_INT_VEC4","UNSIGNED_NORMALIZED","SIGNED_NORMALIZED","VERTEX_ATTRIB_ARRAY_INTEGER","VERTEX_ATTRIB_ARRAY_DIVISOR","TRANSFORM_FEEDBACK_BUFFER_MODE","MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS","TRANSFORM_FEEDBACK_VARYINGS","TRANSFORM_FEEDBACK_BUFFER_START","TRANSFORM_FEEDBACK_BUFFER_SIZE","TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN","MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS","MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS","INTERLEAVED_ATTRIBS","SEPARATE_ATTRIBS","TRANSFORM_FEEDBACK_BUFFER","TRANSFORM_FEEDBACK_BUFFER_BINDING","TRANSFORM_FEEDBACK","TRANSFORM_FEEDBACK_PAUSED","TRANSFORM_FEEDBACK_ACTIVE","TRANSFORM_FEEDBACK_BINDING","FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING","FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE","FRAMEBUFFER_ATTACHMENT_RED_SIZE","FRAMEBUFFER_ATTACHMENT_GREEN_SIZE","FRAMEBUFFER_ATTACHMENT_BLUE_SIZE","FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE","FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE","FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE","FRAMEBUFFER_DEFAULT","DEPTH24_STENCIL8","DRAW_FRAMEBUFFER_BINDING","READ_FRAMEBUFFER_BINDING","RENDERBUFFER_SAMPLES","FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER","FRAMEBUFFER_INCOMPLETE_MULTISAMPLE","UNIFORM_BUFFER","UNIFORM_BUFFER_BINDING","UNIFORM_BUFFER_START","UNIFORM_BUFFER_SIZE","MAX_VERTEX_UNIFORM_BLOCKS","MAX_FRAGMENT_UNIFORM_BLOCKS","MAX_COMBINED_UNIFORM_BLOCKS","MAX_UNIFORM_BUFFER_BINDINGS","MAX_UNIFORM_BLOCK_SIZE","MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS","MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS","UNIFORM_BUFFER_OFFSET_ALIGNMENT","ACTIVE_UNIFORM_BLOCKS","UNIFORM_TYPE","UNIFORM_SIZE","UNIFORM_BLOCK_INDEX","UNIFORM_OFFSET","UNIFORM_ARRAY_STRIDE","UNIFORM_MATRIX_STRIDE","UNIFORM_IS_ROW_MAJOR","UNIFORM_BLOCK_BINDING","UNIFORM_BLOCK_DATA_SIZE","UNIFORM_BLOCK_ACTIVE_UNIFORMS","UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES","UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER","UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER","OBJECT_TYPE","SYNC_CONDITION","SYNC_STATUS","SYNC_FLAGS","SYNC_FENCE","SYNC_GPU_COMMANDS_COMPLETE","UNSIGNALED","SIGNALED","ALREADY_SIGNALED","TIMEOUT_EXPIRED","CONDITION_SATISFIED","WAIT_FAILED","SYNC_FLUSH_COMMANDS_BIT","DEPTH","STENCIL","DEPTH_COMPONENT24","STREAM_READ","STREAM_COPY","STATIC_READ","STATIC_COPY","DYNAMIC_READ","DYNAMIC_COPY","DEPTH_COMPONENT32F","DEPTH32F_STENCIL8","INVALID_INDEX","TIMEOUT_IGNORED","MAX_CLIENT_WAIT_TIMEOUT_WEBGL","VERTEX_ATTRIB_ARRAY_DIVISOR_ANGLE","UNMASKED_VENDOR_WEBGL","UNMASKED_RENDERER_WEBGL","MAX_TEXTURE_MAX_ANISOTROPY_EXT","TEXTURE_MAX_ANISOTROPY_EXT","COMPRESSED_RGB_S3TC_DXT1_EXT","COMPRESSED_RGBA_S3TC_DXT1_EXT","COMPRESSED_RGBA_S3TC_DXT3_EXT","COMPRESSED_RGBA_S3TC_DXT5_EXT","COMPRESSED_R11_EAC","COMPRESSED_SIGNED_R11_EAC","COMPRESSED_RG11_EAC","COMPRESSED_SIGNED_RG11_EAC","COMPRESSED_RGB8_ETC2","COMPRESSED_RGBA8_ETC2_EAC","COMPRESSED_SRGB8_ETC2","COMPRESSED_SRGB8_ALPHA8_ETC2_EAC","COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2","COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2","COMPRESSED_RGB_PVRTC_4BPPV1_IMG","COMPRESSED_RGBA_PVRTC_4BPPV1_IMG","COMPRESSED_RGB_PVRTC_2BPPV1_IMG","COMPRESSED_RGBA_PVRTC_2BPPV1_IMG","COMPRESSED_RGB_ETC1_WEBGL","COMPRESSED_RGB_ATC_WEBGL","COMPRESSED_RGBA_ATC_EXPLICIT_ALPHA_WEBGL","COMPRESSED_RGBA_ATC_INTERPOLATED_ALPHA_WEBGL","UNSIGNED_INT_24_8_WEBGL","HALF_FLOAT_OES","RGBA32F_EXT","RGB32F_EXT","FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE_EXT","UNSIGNED_NORMALIZED_EXT","MIN_EXT","MAX_EXT","SRGB_EXT","SRGB_ALPHA_EXT","SRGB8_ALPHA8_EXT","FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING_EXT","FRAGMENT_SHADER_DERIVATIVE_HINT_OES","COLOR_ATTACHMENT0_WEBGL","COLOR_ATTACHMENT1_WEBGL","COLOR_ATTACHMENT2_WEBGL","COLOR_ATTACHMENT3_WEBGL","COLOR_ATTACHMENT4_WEBGL","COLOR_ATTACHMENT5_WEBGL","COLOR_ATTACHMENT6_WEBGL","COLOR_ATTACHMENT7_WEBGL","COLOR_ATTACHMENT8_WEBGL","COLOR_ATTACHMENT9_WEBGL","COLOR_ATTACHMENT10_WEBGL","COLOR_ATTACHMENT11_WEBGL","COLOR_ATTACHMENT12_WEBGL","COLOR_ATTACHMENT13_WEBGL","COLOR_ATTACHMENT14_WEBGL","COLOR_ATTACHMENT15_WEBGL","DRAW_BUFFER0_WEBGL","DRAW_BUFFER1_WEBGL","DRAW_BUFFER2_WEBGL","DRAW_BUFFER3_WEBGL","DRAW_BUFFER4_WEBGL","DRAW_BUFFER5_WEBGL","DRAW_BUFFER6_WEBGL","DRAW_BUFFER7_WEBGL","DRAW_BUFFER8_WEBGL","DRAW_BUFFER9_WEBGL","DRAW_BUFFER10_WEBGL","DRAW_BUFFER11_WEBGL","DRAW_BUFFER12_WEBGL","DRAW_BUFFER13_WEBGL","DRAW_BUFFER14_WEBGL","DRAW_BUFFER15_WEBGL","MAX_COLOR_ATTACHMENTS_WEBGL","MAX_DRAW_BUFFERS_WEBGL","VERTEX_ARRAY_BINDING_OES","QUERY_COUNTER_BITS_EXT","CURRENT_QUERY_EXT","QUERY_RESULT_EXT","QUERY_RESULT_AVAILABLE_EXT","TIME_ELAPSED_EXT","TIMESTAMP_EXT","GPU_DISJOINT_EXT","INDEX_OFFSETS","TruncatedConeGeometry","bottomRadius","topRadius","nvertical","verticalAxis","topCap","bottomCap","slant","msin","mcos","mpi","cosSlant","sinSlant","indexOffset","ringRadius","tesselateTruncatedCone","ConeGeometry","cap","CylinderGeometry","ICO_POSITIONS","ICO_INDICES","IcoSphereGeometry","iterations","PI2","getMiddlePoint","pointMemo","maxi","x1","z1","xm","ym","zm","indices2","in1","in2","in3","iu1","iu2","iu3","acos","x3","y3","z3","vec1","newIndex","tesselateIcosaHedron","PlaneGeometry","flipCull","c1len","c2len","subdivisions1","subdivisions2","numVertsAcross","unpackedAttributes","unpackedValue","unpackIndexedGeometry","tesselatePlane","SphereGeometry","nlat","nlong","latRange","longRange","n1","n2","n3","theta","sinTheta","cosTheta","sinPhi","ux","uy","uz","numVertsAround","tesselateSphere","fp64ify","hiPart","loPart","fp64ifyMatrix4","matrixFP64","CONST_UNIFORMS","DEFAULT_MODULE_OPTIONS","cameraPositionWorld","lightDirection","dirlight","dirlight_uLightDirection","channelHandles","animationHandles","Timeline","lastEngineTime","rate","channel","_setChannelTime","animationHandle","detachAnimation","animationData","pause","attachAnimation","channelHandle","engineTime","offsetTime","CUBE_INDICES","CUBE_POSITIONS","CUBE_NORMALS","CUBE_TEX_COORDS","CubeGeometry","DRAW_MODE","_setAttributes","_calculateVertexCount","_print","Query","webgl2","hasTimerQuery","TIMER_QUERY","_queryPending","_pollingPromise","beginTimeElapsedQuery","beginOcclusionQuery","conservative","beginTransformFeedbackQuery","gl2","beginQuery","endQuery","isResultAvailable","resultAvailable","getQueryParameter","isTimerDisjoint","getResult","getTimerMilliseconds","createPoll","poll","_createHandle","createQuery","_deleteHandle","deleteQuery","isPage","statIdCounter","AnimationLoop","onAddHTML","createFramebuffer","useDevicePixelRatio","frameRate","_initialized","_running","_animationFrameId","_nextFramePromise","_resolveNextFrame","_cpuStartTime","_pageLoadPromise","_onMousemove","_onMouseleave","_setDisplay","_getPageLoadPromise","_createWebGLContext","_createFramebuffer","_startEventHandling","_initializeCallbackData","_updateCallbackData","_resizeCanvasDrawingBuffer","_resizeViewport","_gpuTimeQuery","appContext","_addCallbackData","_startLoop","isContextLost","_beginTimers","_setupFrame","_clearNeedsRedraw","offScreen","commit","_endTimers","_finalizeCallbackData","_cancelAnimationFrame","detachTimeline","waitForRender","getHTMLControlValue","setViewParameters","renderFrame","_requestAnimationFrame","timerId","renderFrameCallback","_resizeFramebuffer","tick","tock","_loop","_animationLoop","_mousePosition","_getSizeAndAspect","_offScreen","_createInfoDiv","wrapperDiv","VertexArrayObject","constantAttributeZero","getDefaultArray","luma","defaultVertexArray","isDefaultArray","getMaxAttributes","MAX_ATTRIBUTES","setConstant","_setConstantFloatArray","_setConstantIntArray","_setConstantUintArray","setElementBuffer","elementBuffer","setBuffer","integer","vertexAttribIPointer","vertexAttribPointer","enableVertexAttribArray","vertexAttribDivisor","disableVertexAttribArray","getConstantBuffer","_normalizeConstantArrayValue","updateNeeded","_compareConstantArrayValues","getScratchArray","arrayValue","vertexAttrib1fv","vertexAttrib2fv","vertexAttrib3fv","vertexAttrib4fv","vertexAttribI1iv","vertexAttribI2iv","vertexAttribI3iv","vertexAttribI4iv","vertexAttribI1uiv","vertexAttribI2uiv","vertexAttribI3uiv","vertexAttribI4uiv","createVertexArray","deleteVertexArray","elements","_bindHandle","bindVertexArray","_getParameter","pname","getVertexAttribOffset","getVertexAttrib","MULTI_LOCATION_ATTRIBUTE_REGEXP","DEPRECATIONS_V6","VertexArray","elementsAccessor","unused","drawParams","vertexArrayObject","bindOnUse","clearDrawParams","getDrawParams","_updateDrawParams","locationOrName","_setAttribute","appAccessor","_resolveLocationAndAccessor","unbindBuffers","bindBuffers","bindForDraw","_setConstantAttributes","valueAccessor","INVALID_RESULT","_getAttributeIndex","accessInfo","_getAttributeInfo","currentAccessor","getAttributeInfo","multiLocation","locationOffset","getAttributeLocation","_setConstantAttributeZero","_setConstantAttribute","indexCount","_updateDrawParamsForLocation","getElementCount","indexType","setElements","formatValue","maxElts","terminator","formatArrayValue","toPrecision","getDebugTableRow","vertexArray","verts","getDebugData","getGLSLDeclaration","typeAndName","getDebugTableForUniforms","undefinedOnly","PROJECT_MODULE_UNIFORM_REGEXP","uniformLocations","_uniformSetters","uniformNames","uniformName","addUniformToTable","unusedCount","unusedTable","isUniformDefined","attributeInfo","GLTF_TO_LUMA_ATTRIBUTE_MAP","TEXCOORD_1","TEXCOORD_2","mapAttributeName","attributeMap","inferAttributeAccessor","DRAW_PARAMS","Model","lastLogTime","animated","_programManagerState","_managedProgram","bufferMode","programProps","_programDirty","_checkProgram","getModuleUniforms","geometryBuffers","_setModelProps","_deleteGeometryBuffers","getDrawMode","getInstanceCount","getProgram","setProgram","setGeometry","remappedName","getBuffersFromGeometry","normalizedAttributes","transformFeedback","logPriority","_logDrawCallStart","vertexArrayInstanced","didDraw","_logDrawCallEnd","unbindModels","_setFeedbackBuffers","_feedbackBuffers","stateHash","_setAnimationProps","setBuffers","logLevel","logDrawTimeout","group","collapsed","attributeTable","attributeLocation","rowHeader","getDebugTableForVertexArray","uniformTable","missingTable","missingCount","configTable","config","attributeInfos","glslDeclaration","varyingInfo","varyingInfos","getDebugTableForProgramConfiguration","groupEnd","resolveModules","moduleMap","moduleDepth","getDependencyGraph","getShaderDependencies","instantiateModules","seen","GL_VENDOR","GL_RENDERER","GL_VERSION","GL_SHADING_LANGUAGE_VERSION","WEBGL_FEATURES","GLSL_FRAG_DATA","GLSL_FRAG_DEPTH","GLSL_TEXTURE_LOD","FEATURES","compiledGlslExtensions","canCompileGLGSExtension","isMSIE","isTrident","isOldIE","behavior","createShader","shaderSource","compileShader","canCompile","getShaderParameter","deleteShader","hasFeatures","WebGL2RenderingContext","_version","isWebGL2","getFeature","testVariable","qualifier","ES300_REPLACEMENTS","ES300_VERTEX_REPLACEMENTS","ES300_FRAGMENT_REPLACEMENTS","ES100_REPLACEMENTS","ES100_VERTEX_REPLACEMENTS","ES100_FRAGMENT_REPLACEMENTS","ES100_FRAGMENT_OUTPUT_NAME","ES300_FRAGMENT_OUTPUT_REGEX","REGEX_START_OF_MAIN","convertShader","replacements","INJECT_SHADER_DECLARATIONS","assembleShader","hookFunctions","prologue","isVertex","sourceLines","glslVersion","versionLine","coreSource","allDefines","getDefines","assembledSource","getShaderName","getShaderType","debugInfo","renderer","gpuVendor","identifyGPUVendor","shadingLanguageVersion","getContextInfo","getPlatformShaderDefines","isFragment","versionDefines","getVersionDefines","sourceText","define","getApplicationDefines","hookFunctionMap","hook","normalizeHookFunctions","hookInjections","declInjections","mainInjections","checkDeprecations","getModuleSource","injections","injectionType","hookFunction","footer","getHookFunctions","targetGLSLVersion","outputMatch","outputName","convertFragmentShaderTo300","convertFragmentShaderTo100","transpileShader","assembleGetUniforms","moduleUniforms","ProgramManager","defaultProgramManager","_programCache","_getUniforms","_registeredModules","_hookFunctions","_defaultModules","_hashes","_hashCounter","_useCounts","_getModuleList","vsHash","_getHash","fsHash","moduleHashes","varyingHashes","defineKeys","injectKeys","defineHashes","injectHashes","assembled","assembleShaders","appModules","FS_GLES","FS300","getQualifierDetails","qualifiers","words","definition","getPassthroughFS","inputType","outputValue","convertToVec4","BufferTransform","currentIndex","feedbackMap","bindings","setupResources","binding","_setupTransformFeedback","updateModelProps","getDrawOptions","swap","_getNextIndex","_setupBuffers","varyingName","bufferOrParams","_getFeedbackBuffers","sourceName","feedbackName","bufferName","bufferOrRef","_createNewBuffer","_updateBindings","_updateBinding","_swapBuffers","srcName","dstName","getShaderVersion","SIZE_UNIFORM_PREFIX","VS_POS_VARIABLE","SRC_TEX_PARAMETER_OVERRIDES","TextureTransform","_swapTexture","targetTextureVarying","targetTextureType","samplerTextureMap","updatedModelProps","_processVertexShader","sourceTextures","targetTexture","hasSourceTextures","hasTargetTexture","transform_elementID","elementIDBuffer","textureName","_setSourceTextureParameters","sizeUniforms","sourceTextureMap","getSizeUniforms","_setupTextures","getTargetTexture","packed","channelCount","typeToChannelCount","packedPixels","packCount","ownTexture","_targetTextureVarying","_createTargetTexture","textureOrReference","refTexture","_targetRefTexName","_createNewTexture","_sourceTextures","_targetTexture","_updateElementIDBuffer","elementIds","_swapTextures","resizeAttachments","setParameters","pixelStore","sourceCount","updatedVs","finalInject","vsLines","updateVsLines","textureMap","getAttributeDefinition","updatedLine","samplerName","sizeName","uniformDeclerations","getSamplerDeclerations","typeToChannelSuffix","sampleInstruction","processAttributeDefinition","varying","qualaiferDetails","getVaryingType","updateForTextures","combinedInject","_fs","Transform","bufferTransform","textureTransform","updatedOpts","_updateDrawOptions","swapped","resourceTransforms","resourceTransform","_buildResourceTransforms","_updateModelProps","updatedProps","canCreateBufferTransform","canCreateTextureTransform","POSITIONS","ClipSpace","TEX_COORDS","aClipSpacePosition","aTexCoord","aCoordinate","GLTFMaterialParser","MANUAL_SRGB","SRGB_FAST_APPROXIMATION","USE_TEX_LOD","u_MetallicRoughnessValues","u_DiffuseEnvSampler","getDiffuseEnvSampler","u_SpecularEnvSampler","getSpecularEnvSampler","u_brdfLUT","getBrdfTexture","u_ScaleIBLAmbient","u_ScaleDiffBaseMR","u_ScaleFGDSpec","defineIfPresent","TANGENT","parseTexture","gltfTexture","textureOptions","parsePbrMetallicRoughness","u_BaseColorFactor","pbr_uUnlit","u_NormalScale","strength","u_OcclusionStrength","u_EmissiveFactor","alphaMode","ALPHA_CUTOFF","u_AlphaCutoff","ERR_CONTEXT","ERR_WEBGL2","isWebGL","WebGLRenderingContext","getWebGL2Context","assertWebGLContext","assertWebGL2Context","glErrorShadow","WebGLVertexArrayObjectOES","isAlive","hasBeenBound","elementArrayBuffer","attribs","maxVertexAttribs","VertexAttrib","maxAttrib","recache","OESVertexArrayObject","getError","wrapGLError","currentVertexArrayObject","defaultVertexArrayObject","vao","currentArrayBuffer","indx","instrumentExtension","reset_","vertexArrayObjects","bindVertexArrayOES","createVertexArrayOES","arrayObject","deleteVertexArrayOES","isVertexArrayOES","opt_msg","msg","oldVAO","newVAO","currentBinding","oldAttrib","bufferChanged","OES_element_index","WEBGL_draw_buffers","WEBGL_debug_renderer_info","getWebGL2ValueOrZero","WEBGL_PARAMETERS","ANGLE_instanced_arrays","WEBGL2_CONTEXT_POLYFILLS","meta","isVertexArray","drawElementsInstanced","drawArraysInstanced","drawBuffers","getQuery","getQueryObject","WEBGL2_CONTEXT_OVERRIDES","readBuffer","originalFunc","attachment","getExtensionData","getProgramParameter","getInternalformatParameter","getTexParameter","originalGetParameter","hint","polyfillExtension","target2","defaults","extKey","polyfillContext","polyfilled","original_getSupportedExtensions","getSupportedExtensions","original_getExtension","__OESVertexArrayObject","polyfillVertexArrayObject","initializeExtensions","polyfills","installPolyfills","installOverrides","GL_PARAMETER_DEFAULTS","disable","pixelStorei","GL_PARAMETER_SETTERS","cullFace","clearDepth","bindFramebuffer","frontFace","lineWidth","clearStencil","stencilMaskSeparate","blendEquationSeparate","blendFuncSeparate","cull","dither","derivativeHint","mipmapHint","sampleCoverage","stencilTest","stencilMask","backMask","backFunc","backRef","stencilFuncSeparate","stencilOp","sfail","dpfail","dppass","backSfail","backDpfail","backDppass","stencilOpSeparate","GL_COMPOSITE_PARAMETER_SETTERS","stencilFuncFront","stencilFuncBack","stencilOpFront","stencilOpBack","GL_HOOKED_SETTERS","modeRGB","modeAlpha","dst","srcRGB","dstRGB","srcAlpha","dstAlpha","zNear","zFar","fail","zfail","zpass","isEnabled","GL_PARAMETER_GETTERS","isObjectEmpty","deepArrayEqual","isArrayX","isArrayY","installGetterOverride","functionName","originalGetterFunc","installSetterSpy","originalSetterFunc","valueChanged","_updateCache","GLState","stateStack","getParameters","oldValues","trackContextState","originalUseProgram","useProgram","installProgramSpy","popContextState","compositeSetters","glConstant","compositeSetter","parameterKeys","resetParameters","withParameters","nocatch","pushContextState","cssToDeviceRatio","cachedSize","canvasSizeInfo","cssToDevicePixels","cssPixel","yInvert","xHigh","yHigh","scalePixels","CONTEXT_DEFAULTS","webgl1","manageState","createGLContext","targetCanvas","errorMessage","onCreateError","statusMessage","createBrowserContext","instrumentGLContext","webGL","vendorMasked","rendererMasked","getContextDebugInfo","driver","logInfo","_instrumented","getVersion","makeDebugContext","resizeGLContext","clampedPixelRatio","setDevicePixelRatio","windowRatio","getDevicePixelRatio","MODULE_INJECTORS","DECLARATION_INJECT_MARKER","REGEX_END_OF_MAIN","fragments","injectShader","injectStandardStubs","fragmentData","fragmentString","combineInjects","injects","ShaderModule","deprecations","_parseDeprecationDefinitions","normalizeInjections","moduleSource","_defaultGetUniforms","old","new","private","normalizeShaderModule","convertColor","lightSourceUniforms","lighting_uPointLightCount","lighting_uDirectionalLightCount","getLightSourceUniforms","lighting_uEnabled","MAX_LIGHTS","LIGHTING_FRAGMENT","ambient","diffuse","shininess","specularColor","lighting_uAmbient","lighting_uDiffuse","lighting_uShininess","lighting_uSpecularColor","getMaterialUniforms","gouraudLighting","LIGHTING_VERTEX","phongLighting","selectedColor","picking_uSelectedColorValid","picking_uSelectedColor","picking_uHighlightColor","picking_uActive","picking_uAttribute","DEFAULT_ACCESSOR_VALUES","PROP_CHECKS","Accessor","getBytesPerElement","getBytesPerVertex","_assign","BYTES_PER_VERTEX","DEPRECATED_PROPS","PROP_CHECKS_INITIALIZE","removedProps","replacedProps","PROP_CHECKS_SET_PROPS","stubRemovedMethods","debugData","_setData","_setByteLength","bytesUsed","srcOffset","bufferSubData","_inferType","copyData","readOffset","writeOffset","copyBufferSubData","dstData","dstOffset","clamped","sourceAvailableElementCount","_getAvailableElementCount","dstElementOffset","dstAvailableElementCount","dstElementCount","copyElementCount","getBufferSubData","bindBufferRange","bindBufferBase","unbind","invalidateDebugData","_trackDeallocatedMemory","_getTarget","bufferData","_trackAllocatedMemory","sourceElementOffset","deleteBuffer","getBufferParameter","setByteLength","updateAccessor","GL_DEPTH_BUFFER_BIT","GL_STENCIL_BUFFER_BIT","GL_COLOR_BUFFER_BIT","GL_COLOR","GL_DEPTH","GL_STENCIL","GL_DEPTH_STENCIL","ERR_ARGUMENTS","stencil","clearFlags","clearBuffer","drawBuffer","clearBufferiv","clearBufferuiv","clearBufferfv","clearBufferfi","glFormatToComponents","readPixelsToArray","sourceFormat","sourceAttachment","sourceType","deleteFramebuffer","pixelArray","getPixelArray","prevHandle","readPixels","readPixelsToBuffer","targetByteOffset","byteCount","glTypeToBytes","copyToDataUrl","targetMaxHeight","copyToTexture","targetMipmaplevel","targetInternalFormat","targetX","isSubCopy","copyTexSubImage2D","copyTexSubImage3D","copyTexImage2D","ERR_MULTIPLE_RENDERTARGETS","Framebuffer","colorBufferHalfFloat","defaultFramebuffer","ownResources","check","_createDefaultAttachments","clearAttachments","checkStatus","_setReadBuffer","_setDrawBuffers","attachmentPoint","newAttachments","_attachRenderbuffer","renderbuffer","_attachTexture","_unattach","getStatus","STATUS","_getFrameBufferStatus","checkFramebufferStatus","copyToImage","blit","invalidateFramebuffer","getAttachmentParameter","_getAttachmentParameterFallback","getFramebufferAttachmentParameter","getAttachmentParameters","ATTACHMENT_PARAMETERS","attachmentName","show","defaultAttachments","oldAttachment","framebufferRenderbuffer","framebufferTexture2D","bindTexture","framebufferTextureLayer","mapIndexToCubeMapFace","drawBuffersWEBGL","caps","WEBGL2","EXT_sRGB","UNIFORM_SETTERS","getArraySetter","toFloatArray","setVectorUniform","toIntArray","setMatrixUniform","getSamplerSetter","toUIntArray","FLOAT_ARRAY","INT_ARRAY","UINT_ARRAY","uniformLength","getUniformSetter","parseUniformName","checkUniformValue","checkLength","checkUniformArray","copyUniform","uniform1i","uniformSetter","cacheLength","ProgramConfiguration","attributeInfosByName","attributeInfosByLocation","varyingInfosByName","_readAttributesFromProgram","_readVaryingsFromProgram","getAttributeAccessor","getVaryingInfo","getVaryingIndex","getVaryingAccessor","getActiveAttrib","getAttribLocation","_addAttribute","getTransformFeedbackVarying","_addVarying","compositeType","_inferProperties","GL_SEPARATE_ATTRIBS","V6_DEPRECATED_METHODS","Program","_isCached","_setId","_textureUniforms","transformFeedbackVaryings","_compileAndLink","_readUniformLocationsFromLinkedProgram","fb","_areTexturesRenderable","primitiveMode","_bindTextures","drawRangeElements","drawElements","drawArrays","uniformMap","checkUniformValues","textureUpdate","_textureIndexCounter","texturesRenderable","createProgram","deleteProgram","_getOptionsFromHandle","shaderHandles","getAttachedShaders","shaderHandle","programName","_getName","getName","attachShader","linkProgram","getProgramInfoLog","validateProgram","_uniformCount","getActiveUniform","getUniformLocation","getActiveUniforms","uniformIndices","getUniformBlockIndex","blockName","getActiveUniformBlockParameter","blockIndex","uniformBlockBinding","blockBinding","EXT_FLOAT_WEBGL2","bpp","Renderbuffer","gl1","isFormatSupported","getSamplesForFormat","samples","bindRenderbuffer","renderbufferStorageMultisample","renderbufferStorage","createRenderbuffer","deleteRenderbuffer","_syncHandle","getRenderbufferParameter","ERR_RESOURCE_METHOD_UNDEFINED","_bound","_addStats","deleteChildren","_removeStats","funcOrHandle","PARAMETERS","isWebgl2","webgl1Default","webgl2Default","setParameter","_setParameter","methodNames","_getOptsFromHandle","_trackAllocatedMemoryForContext","_trackDeallocatedMemoryForContext","subtractCount","defaultName","formatErrors","errors","segments","padLeft","Shader","getTypeName","shaderType","shaderName","_compile","getSource","getShaderSource","getTranslatedSource","getTranslatedShaderSource","infoLog","getShaderInfoLog","warnings","errLog","errorStrings","shaderDescription","getShaderTypeName","errorString","delim","maxDigits","addLineNumbers","parseGLSLCompilerError","VertexShader","FragmentShader","Texture2D","crossOrigin","Texture3D","unpackFlipY","setImageData","texImage3D","channelSize","FACES","TextureCube","setCubeMapImageData","subImage","mipmapLevel","_subImage","imageDataMap","resolvedFaces","facePixels","lodLevel","texImage2D","setImageDataForFace","resolvedImageData","TEXTURE_FORMATS","DATA_FORMAT_CHANNELS","TYPE_SIZES","isLinearFilteringSupported","NPOT_MIN_FILTERS","WebGLBuffer","Texture","linearFiltering","textureUnit","isVideo","HTMLVideoElement","HAVE_METADATA","_video","recreate","_deduceParameters","activeTexture","_isNPOT","_updateForNPOT","video","lastTime","HAVE_CURRENT_DATA","_getDataType","compressedTextureSize","levelData","compressedTexImage2D","ndarray","compressedTexSubImage2D","texSubImage2D","copyFramebuffer","getActiveUnit","_deduceImageSize","ImageData","HTMLImageElement","naturalWidth","naturalHeight","HTMLCanvasElement","videoWidth","videoHeight","deleteTexture","_getNPOTParam","texParameterf","texParameteri","TransformFeedback","_unbindBuffers","_getVaryingIndex","byteSize","_getBufferParams","_bindBuffer","bindTransformFeedback","_bindBuffers","beginTransformFeedback","endTransformFeedback","_getVaryingInfo","createTransformFeedback","deleteTransformFeedback","LOG_UNSUPPORTED_FEATURE","hasFeature","isFeatureSupported","getFeatures","featureDefinition","queryFeature","VERTEX_ARRAY_OBJECT","INSTANCED_RENDERING","MULTIPLE_RENDER_TARGETS","BLEND_EQUATION_MINMAX","FLOAT_BLEND","COLOR_ENCODING_SRGB","TEXTURE_DEPTH","TEXTURE_FLOAT","TEXTURE_HALF_FLOAT","TEXTURE_FILTER_LINEAR_FLOAT","TEXTURE_FILTER_LINEAR_HALF_FLOAT","TEXTURE_FILTER_ANISOTROPIC","COLOR_ATTACHMENT_RGBA32F","COLOR_ATTACHMENT_FLOAT","COLOR_ATTACHMENT_HALF_FLOAT","testTexture","testFb","lumaStats","nodeIO","checkProps","propChecks","replacementProp","upgradeMessage","uidCounters","uid","isPowerOfTwo","GL_BYTE","GL_UNSIGNED_BYTE","GL_SHORT","GL_UNSIGNED_SHORT","GL_POINTS","GL_LINES","GL_LINE_LOOP","GL_LINE_STRIP","GL_TRIANGLES","GL_TRIANGLE_STRIP","GL_TRIANGLE_FAN","GL_FLOAT","GL_INT","GL_UNSIGNED_INT","COMPOSITE_GL_TYPES","getPrimitiveDrawMode","decomposeCompositeGLType","compositeGLType","typeAndSize","getCompositeGLType","compType","compComponents","getKeyValue","getKey","cloneTextureFrom","TextureType","toFramebuffer","ERR_TYPE_DEDUCTION","getGLTypeFromTypedArray","getTypedArrayFromGLType","flipRows","bytesPerPixel","bytesPerRow","bottomOffset","newData","tilebelt","tileToFeature","tileToGeoJSON","getTiles","geom","limits","max_zoom","tileHash","pointToTile","toID","lineCover","polygonCover","min_zoom","appendHashTiles","mergedTiles","parentTileHash","parentTiles","id2","id3","id4","mergeTiles","tileArray","intersections","ring","compareTiles","prevX","prevY","pointToTileFraction","sx","sy","tMaxX","tMaxY","tdx","tdy","dim","indexes","tileToQuadkey","MathArray","ExtendableBuiltin","_extendableBuiltin","ELEMENTS","arrayOrObject","fromObject","toObject","toFloat32Array","formatString","printTypes","exactEquals","lerp","clamp","minVector","maxVector","vectors","setScalar","addScalar","subScalar","divideScalar","clampScalar","Matrix","printRowMajor","RANK","getElement","setElement","columnIndex","firstIndex","columnVector","Vector","lengthSquared","magnitudeSquared","mathArray","dist","product","lengthSq","distanceToSquared","getComponent","setComponent","multiplyVectors","addScaledVector","Matrix3","IDENTITY_MATRIX3","ZERO_MATRIX3","m00","m10","m20","m01","m11","m21","m02","m12","m22","setRowMajor","determinant","vec","transformVector2","transformVector3","DEFAULT_FOVY","DEFAULT_ASPECT","DEFAULT_NEAR","DEFAULT_FAR","Matrix4","m30","m31","m32","m03","m13","m23","m33","toRowMajor","frustum","column0Row0","column1Row1","column2Row0","column2Row1","column3Row2","computeInfinitePerspectiveOffCenter","checkRadians","halfY","getRotation","scaleResult","inverseScale0","inverseScale1","inverseScale2","angleXYZ","rotateAxis","transformPoint","transformDirection","makeRotationX","makeTranslation","possiblyDegrees","setAxisAngle","rad","ax","ay","az","aw","bx","by","bz","bw","vec4","tmpvec3","xUnitVec3","yUnitVec3","squaredLength","rotationTo","mat3","IDENTITY_QUATERNION","Quaternion","fRoot","fTrace","fromAxisRotation","vectorA","vectorB","calculateW","conjugate","a0","a1","a2","a3","invDot","arg0","cosom","omega","sinom","scale0","scale1","transformVector4","setFromAxisAngle","premultiply","SphericalCoordinates","fromLngLatZ","fromVector3","makeSafe","Vector2","horizontalAngle","matrix3","transformByMatrix2x3","matrix2x3","transformByMatrix2","matrix2","ORIGIN","Vector3","Vector4","applyMatrix4","printDegrees","configure","toRadians","degrees","toDegrees","oldEpsilon","withEpsilon","oldPrecision","duplicateArray","vec2_transformMat4AsVector","vec3_transformMat4AsVector","vec3_transformMat2","vec4_transformMat2","vec4_transformMat3","EPSILON2","EPSILON3","EPSILON4","EPSILON5","EPSILON6","EPSILON7","EPSILON8","EPSILON9","EPSILON10","EPSILON11","EPSILON13","EPSILON14","EPSILON16","EPSILON17","EPSILON18","EPSILON19","PI_OVER_TWO","PI_OVER_FOUR","PI_OVER_SIX","TWO_PI","checkNumber","checkVector","callerName","validateVector","WINDING","getPolygonWindingDirection","numSwaps","b1","b2","tmp","reversePolygon","earcut","areas","hasHoles","outerLen","outerNode","linkedList","invSize","steiner","getLeftmost","compareX","eliminateHole","filterPoints","eliminateHoles","earcutLinked","clockwise","insertNode","removeNode","again","ear","zOrder","prevZ","nextZ","numMerges","pSize","qSize","inSize","sortLinked","indexCurve","isEarHashed","isEar","cureLocalIntersections","splitEarcut","pointInTriangle","minTX","minTY","maxTX","maxTY","intersects","locallyInside","isValidDiagonal","splitPolygon","hole","hx","hy","qx","mx","my","tanMin","sectorContainsSector","findHoleBridge","leftmost","cy","px","py","intersectsPolygon","middleInside","q1","o1","o2","o3","o4","onSegment","bp","edge","snap","bitCode","isDuplicate","startI","cutPolylineByGrid","broken","gridOffset","part","codeB","cell","getGridCell","codeAlt","moveToNeighborCell","TYPE_INSIDE","TYPE_BORDER","concatInPlace","arr1","arr2","cutPolygonByGrid","holes","bisectPolygon","polygonLow","polygonHigh","resultLow","resultHigh","typesLow","typesHigh","side","prevSide","prevType","lowPointCount","highPointCount","DEFAULT_MAX_LATITUDE","cutPolylineByMercatorBounds","newPositions","wrapLongitudesForShortestPath","shiftLongitudesIntoRange","cutPolygonByMercatorBounds","newHoleIndices","ringIndex","splitIndex","findSplitIndex","insertPoleVertices","pointIndex","firstLng","lastLng","LOG2E","PI_4","TILE_SIZE","EARTH_CIRCUMFERENCE","DEFAULT_ALTITUDE","zoomToScale","scaleToZoom","lngLatToWorld","phi2","worldToLngLat","lambda2","getMeterZoom","latCosine","worldSize","unitsPerDegreeX","unitsPerDegreeY","altUnitsPerMeter","latCosine2","unitsPerDegreeY2","altUnitsPerDegree2","altUnitsPerMeter2","z0","worldspace","newLngLat","newZ","vm","getProjectionParameters","altitudeToFovy","fovRadians","pitchRadians","fovyToAltitude","cameraToSeaLevelDistance","fovAboveCenter","topHalfSurfaceDistance","furthestDistance","horizonDistance","fov","worldToPixels","pixelsToWorld","minExtent","getPaddingObject","targetSize","unprojectOps","unprojectOnFarPlane","mInverse","getMapCenterByLngLatPosition","getBoundingRegion","getLocationAtPoint","normalizeViewportProps","halfHeightPixels","minLatitude","VIEWPORT_TRANSITION_PROPS","flyToViewport","startCenterXY","uDelta","w0","rho","rho2","r0","getFlyToTransitionParams","startValue","endValue","step","cosh","tanh","sinh","newCenterWorld","getFlyToDuration","screenSpeed","startCenter","startScale","endZoom","endCenter","endCenterXY","w1","_u1","b0","r1","A100","A200","A400","A700","black","white","createMixins","breakpoints","mixins","toolbar","_excluded","secondary","disabled","divider","paper","hover","hoverOpacity","selectedOpacity","disabledBackground","disabledOpacity","focus","focusOpacity","activatedOpacity","dark","addLightOrDark","intent","shade","tonalOffset","tonalOffsetLight","tonalOffsetDark","main","createShadow","mobileStepper","fab","speedDial","appBar","drawer","modal","snackbar","mixinsInput","palette","paletteInput","transitionsInput","typography","typographyInput","vars","contrastThreshold","blue","getDefaultPrimary","purple","getDefaultSecondary","red","getDefaultError","lightBlue","getDefaultInfo","success","green","getDefaultSuccess","warning","orange","getDefaultWarning","getContrastText","augmentColor","mainShade","lightShade","darkShade","contrastText","modes","deepmerge","grey","createPalette","systemTheme","muiTheme","shadows","createTypography","createTransitions","argument","unstable_sxConfig","defaultSxConfig","unstable_sx","styleFunctionSx","createMuiTheme","easeInOut","easeOut","easeIn","sharp","shortest","shorter","short","standard","complex","enteringScreen","leavingScreen","formatMs","milliseconds","getAutoHeightDuration","inputTransitions","mergedEasing","mergedDuration","durationOption","easingOption","animatedProp","caseAllCaps","textTransform","defaultFontFamily","fontWeightLight","fontWeightRegular","fontWeightMedium","fontWeightBold","htmlFontSize","allVariants","pxToRem","pxToRem2","coef","buildVariant","letterSpacing","casing","variants","h1","h2","h3","h4","h5","h6","subtitle1","subtitle2","body1","body2","button","caption","overline","inherit","useTheme","borderTransform","createBorderStyle","themeKey","borderTop","borderRight","borderBottom","borderLeft","borderColor","borderTopColor","borderRightColor","borderBottomColor","borderLeftColor","borderRadius","styleFromPropValue","filterProps","xs","sm","md","lg","xl","defaultBreakpoints","handleBreakpoints","themeBreakpoints","breakpoint","cssKey","createEmptyBreakpointObject","breakpointsInput","_breakpointsInput$key","removeUnusedBreakpoints","breakpointKeys","breakpointOutput","mergeBreakpointsInOrder","emptyBreakpoints","mergedOutput","resolveBreakpointValues","breakpointValues","customBase","breakpointsKeys","computeBreakpointsBase","styleFunction","newStyleFunction","extended","hexToRgb","decomposeColor","colorSpace","colorChannel","decomposedColor","idx","private_safeColorChannel","recomposeColor","rgbToHex","intToHex","hslToRgb","rgb","getLuminance","getContrastRatio","foreground","lumA","lumB","private_safeAlpha","darken","coefficient","private_safeDarken","lighten","private_safeLighten","emphasize","private_safeEmphasize","sortBreakpointsValues","breakpointsAsArray","breakpoint1","breakpoint2","createBreakpoints","unit","sortedValues","between","only","keyIndex","createSpacing","spacingInput","mui","spacing","argsInput","shapeInput","gap","columnGap","rowGap","gridAutoFlow","gridAutoColumns","gridAutoRows","gridTemplateColumns","gridTemplateRows","gridTemplateAreas","gridArea","paletteTransform","userValue","bgcolor","cssProperty","sizingTransform","_props$theme","_props$theme2","minWidth","sizeWidth","sizeHeight","boxSizing","directions","aliases","marginX","marginY","paddingX","paddingY","getCssProperties","marginKeys","paddingKeys","spacingKeys","createUnaryUnit","_getPath","themeSpacing","createUnarySpacing","transformed","getStyleFromPropValue","cssProperties","resolveCssProperty","margin","checkVars","getStyleValue","themeMapping","propValueFinal","pb","pl","paddingTop","paddingRight","paddingBottom","paddingLeft","paddingInline","paddingInlineStart","paddingInlineEnd","paddingBlock","paddingBlockStart","paddingBlockEnd","mb","ml","marginTop","marginRight","marginBottom","marginLeft","marginInline","marginInlineStart","marginInlineEnd","marginBlock","marginBlockStart","marginBlockEnd","displayPrint","overflow","textOverflow","whiteSpace","flexBasis","flexDirection","flexWrap","justifyContent","alignItems","alignContent","alignSelf","justifyItems","justifySelf","boxShadow","unstable_createStyleFunctionSx","getThemeValue","_theme$unstable_sxCon","sxInput","sxObject","styleKey","maybeFn","breakpointsValues","objects","objectsHaveSameKeys","systemDefaultTheme","defaultTheme","contextTheme","capitalize","formatMuiErrorMessage","_typeof","_geojsonEditMode","GeoJsonEditMode","_modifyMode","ModifyMode","_resizeCircleMode","ResizeCircleMode","_translateMode","TranslateMode","_scaleMode","ScaleMode","_rotateMode","RotateMode","_duplicateMode","DuplicateMode","_extendLineStringMode","ExtendLineStringMode","_splitPolygonMode","SplitPolygonMode","_extrudeMode","ExtrudeMode","_elevationMode","ElevationMode","_transformMode","TransformMode","_drawPointMode","DrawPointMode","_drawLineStringMode","DrawLineStringMode","_drawPolygonMode","DrawPolygonMode","_drawRectangleMode","DrawRectangleMode","_drawSquareMode","DrawSquareMode","_drawRectangleFromCenterMode","DrawRectangleFromCenterMode","_drawSquareFromCenterMode","DrawSquareFromCenterMode","_drawCircleByDiameterMode","DrawCircleByDiameterMode","_drawCircleFromCenterMode","DrawCircleFromCenterMode","_drawEllipseByBoundingBoxMode","DrawEllipseByBoundingBoxMode","_drawEllipseUsingThreePointsMode","DrawEllipseUsingThreePointsMode","_drawRectangleUsingThreePointsMode","DrawRectangleUsingThreePointsMode","_draw90degreePolygonMode","Draw90DegreePolygonMode","_drawPolygonByDraggingMode","DrawPolygonByDraggingMode","_immutableFeatureCollection","ImmutableFeatureCollection","_viewMode","ViewMode","_measureDistanceMode","MeasureDistanceMode","_measureAreaMode","MeasureAreaMode","_measureAngleMode","MeasureAngleMode","_compositeMode","CompositeMode","_snappableMode","SnappableMode","_memoize","utils","_getRequireWildcardCache","newObj","hasPropertyDescriptor","_interopRequireWildcard","_unsupportedIterableToArray","minLen","_arrayLikeToArray","_defineProperties","_assertThisInitialized","_getPrototypeOf","_setPrototypeOf","_GeoJsonEditMode","subClass","superClass","_inherits","Constructor","protoProps","Derived","_super","Super","_isNativeReflectConstruct","NewTarget","_possibleConstructorReturn","_classCallCheck","_modes","resultEval","_coalesce","handleClick","handlePointerMove","handleStartDragging","handleStopDragging","handleDragging","_step","allGuides","_iterator","normalCompletion","didErr","_e2","_createForOfIteratorHelper","_arrayWithoutHoles","getGuides","iter","_iterableToArray","_nonIterableSpread","_destination","_interopRequireDefault","_bearing","_lineIntersect","_distance","_helpers","_utils","_toConsumableArray","receiver","_superPropBase","p3","clickSequence","getClickSequence","mapCoords","lastPointerMoveEvent","generatePointsParallelToLinePoints","_arrayWithHoles","_arr","_iterableToArrayLimit","_nonIterableRest","guideType","guides","tentativeFeature","createTentativeFeature","getEditHandlesForGeometry","onUpdateCursor","picks","getTentativeGuide","addClickSequence","clickedEditHandle","getPickedEditHandle","positionIndexes","polygonToAdd","finalizedCoordinates","resetClickSequence","editAction","getAddFeatureOrBooleanPolygonAction","onEdit","fakePointerMoveEvent","screenCoords","pointerDownPicks","pointerDownScreenCoords","pointerDownMapCoords","cancelPan","sourceEvent","getIntermediatePoint","angle1","p4","angle2","angles","newAngle1","newAngle2","indexFirst","line1","indexSecond","line2","_circle","_TwoClickPolygonMode","coord2","modeConfig","_ref$steps","steps","centerCoordinates","getIntermediatePosition","TwoClickPolygonMode","_bboxPolygon","_ellipse","polygonPoints","xSemiAxis","ySemiAxis","_ThreeClickPolygonMod","coord3","ThreeClickPolygonMode","positionAdded","lineStringToAdd","getAddFeatureAction","updatedData","editType","editContext","_guides$features","lastCoords","editHandles","clickedCoord","editHandleType","_lodash","_DrawPolygonMode","_defineProperty","throttleMs","handleDraggingThrottled","handleDraggingAux","overlappingLines","preventOverlappingLines","currentLine","otherLines","rectangle","_generatePointsParall2","_along","coord4","distance1","distance2","shortestDistance","closestPoint","square","_TranslateMode","_geometryBeforeTranslate","getAddManyFeaturesAction","_isTranslatable","defaultCalculateElevationChange","_ModifyMode","staticProps","_ref2$minElevation","minElevation","_ref2$maxElevation","maxElevation","_ref2$calculateElevat","calculateElevationChange","editHandle","makeElevatedEvent","selectedGeometry","getSelectedGeometry","selectedIndexes","selectedLineString","getSingleSelectedLineString","drawAtFront","addPosition","featureIndexes","_slicedToArray","coordinatesSize","isPointAdded","nextPositionIndexes","getPointForPositionIndexes","prevPositionIndexes","replacePosition","selectedFeatureIndexes","getPickedIntermediateEditHandle","_editHandle$propertie","isOrthogonal","_generatePointsParall4","_positionIndexes","prevPoint","nextPoint","currentPoint","prevAngle","getBearing","nextAngle","_positionIndexes3","_positionIndexes4","_b2","position1","position2","_union","_difference","_intersect","_rewind","DEFAULT_GUIDES","DEFAULT_TOOLTIPS","getSelectedFeature","selectedIndex","_clickSequence","pickedFeatures","getNonGuidePicks","pickedHandles","getPickedEditHandles","pickedIndexes","featureOrGeometry","featureOrGeometryAsAny","rewindFeature","rewindPolygon","addFeature","featuresToAdd","initialIndex","updatedIndexes","geometryAsAny","selectedFeature","booleanOperation","updatedGeometry","replaceGeometry","ownKeys","enumerableOnly","symbols","sym","_objectSpread","featureCollection","updatedPosition","isPolygonal","immutablyReplacePosition","immutablyRemovePosition","holeIndex","removeHoleIfNecessary","prunePolygonIfNecessary","lineStringIndex","pruneMultiLineStringIfNecessary","pruneMultiPolygonIfNecessary","pruneGeometryIfNecessary","positionToAdd","immutablyAddPosition","updatedFeature","addFeatures","deleteFeatures","getUpdatedPosition","previousPosition","_center","point1","point2","tooltips","formatTooltip","measurementCallback","_getTooltips","_area","_centroid","propsWithoutEdit","tentativeGuide","centroid","_midpoint","positionA","positionB","turfOptions","_ref4$centerTooltipsO","centerTooltipsOnLine","_isMeasuringSessionFinished","_currentTooltips","_currentDistance","_calculateDistanceForTooltip","tooltipPosition","_formatTooltip","clickSequenceLength","_ref5$centerTooltipsO","handles","_index","_props$modeConfig","featureAsPick","getPickedExistingEditHandle","pick","isGuide","lockRectangles","intermediatePoint","positionIndexPrefix","referencePoint","recursivelyTraverseNestedArrays","lineStringFeature","candidateIntermediatePoint","getNearestPoint","_intermediatePoint","inPoint","nearestPointOnProjectedLine","nearestPointOnLine","pickedExistingHandle","pickedIntermediateHandle","_pickedExistingHandle","removePosition","ignored","_props$modeConfig2","_pickedIntermediateHa","_featureIndex","_updatedData","_dragEditHandle","_props$modeConfig3","editHandleProperties","editedFeature","updateRectanglePosition","_nearestPointOnLine","_this2","_isResizing","numberOfSteps","selectedEditHandle","_selectedEditHandle","_meta","_invariant","_transformRotate","_polygonToLine","getGeom","_isRotating","_geometryBeingRotated","getSelectedFeaturesAsFeatureCollection","_isSinglePointGeometrySelected","previousCoord","topEdgeMidpointCoords","longestEdgeLength","coordEach","edgeMidpoint","rotateHandleCoords","lineFromEnvelopeToRotateHandle","rotateHandle","rotateAction","getRotateAction","updateCursor","startDragPoint","bearing1","getRotationAngle","rotatedFeatures","pivot","movedFeature","_transformScale","selectedHandle","selectedHandleIndex","guidePointCount","_cornerGuidePoints","oppositeIndex","editedData","oppositeHandle","_getOppositeScaleHandle","getCoord","scaleFactor","startDistance","getScaleFactor","scaledFeatures","_geometryBeingScaled","_getUpdatedData","_cursor","cursorGeometry","positiveBearing","_isScaling","scaleAction","getScaleAction","cornerGuidePoints","coordIndex","cornerPoint","_handler","snapSource","snapTarget","getPickedSnapSourceEditHandle","snapSourceHandle","_snapSourceHandle$pro","snapSourceFeature","additionalSnapTargets","_getSnapTargets","enableSnapping","_getPickedSnapSource","_getSnapTargetHandles","_getUpdatedSnapSourceHandle","_guides$features2","_getPickedSnapTarget","_getSnappedMouseEvent","_getSnapAwareEvent","_booleanPointInPolygon","lock90Degree","firstPoint","minDistance","snapPoint","distanceFromOrigin","lastBearing","currentDistance","lastPoint","approximatePoint","calculateMapCoords","isPointInPolygon","_modeConfig$gap","_modeConfig$units","updatedCoordinates","_updatedGeometry$geom","agg","hoveredCoord","getThreeClickPolygon","_CompositeMode","updatedCursor","scaleMode","translateMode","filteredModes","isEditHandleSelected","compositeGuides","rotateMode","nonEnvelopeGuides","guide","guidesToFilterOut","getIsRotating","_transformTranslate","_viewportMercatorProject","getTranslateAction","isSelectionPicked","viewportDesc","screenSpace","distanceMoved","movedFeatures","dragToDraw","checkAndFinishPolygon","corner2","getTwoClickPolygon","toDeckColor","defaultColor","ddistance","_pointToLineDistance","lineBearing","orthogonalBearing","distance2d","mix","wmViewport","projectedCoords","_ref2$","_wmViewport$project2","minPointInfo","_projectedCoords","_minPointInfo","_projectedCoords2","_projectedCoords2$","_projectedCoords$inde","_projectedCoords$inde2","lineLength","_lines$geometry","_lines$geometry2","flattenEach","segmentIdx","getCoords","pointCoords","lineCoordinates","pointCoordinate","lineCoordinate","slope","inverseSlope","rl2","ln2","lnm12","dist2","calcrl2","pixelToLatLong","_ref6","getEditHandlesForCoordinates","editHandleIndex","PROJECTED_PIXEL_SIZE_MULTIPLIER","_editableGeojsonLayer","_layers","_editModes","_constants","_editableLayer","_editablePathLayer","DEFAULT_LINE_COLOR","DEFAULT_FILL_COLOR","DEFAULT_SELECTED_LINE_COLOR","DEFAULT_SELECTED_FILL_COLOR","DEFAULT_TENTATIVE_LINE_COLOR","DEFAULT_TENTATIVE_FILL_COLOR","DEFAULT_EDITING_EXISTING_POINT_COLOR","DEFAULT_EDITING_INTERMEDIATE_POINT_COLOR","DEFAULT_EDITING_SNAP_POINT_COLOR","DEFAULT_EDITING_POINT_OUTLINE_COLOR","DEFAULT_TOOLTIP_FONT_SIZE","DEFAULT_EDIT_MODE","guideAccessor","guideMaybeWrapped","unwrapGuide","getEditHandleColor","pickingDepth","pickingLineWidthExtraPixels","getTentativeLineColor","getTentativeFillColor","getTentativeLineWidth","editHandlePointRadiusScale","editHandlePointOutline","editHandlePointStrokeWidth","editHandlePointRadiusUnits","editHandlePointRadiusMinPixels","editHandlePointRadiusMaxPixels","getEditHandlePointColor","getEditHandlePointOutlineColor","getEditHandlePointRadius","editHandleIconAtlas","editHandleIconMapping","editHandleIconSizeScale","editHandleIconSizeUnits","getEditHandleIcon","getEditHandleIconSize","getEditHandleIconColor","getEditHandleIconAngle","modeNameMapping","modify","duplicate","extrude","drawPoint","drawLineString","drawPolygon","drawRectangle","drawSquare","drawRectangleFromCenter","drawSquareFromCenter","drawCircleFromCenter","drawCircleByBoundingBox","drawEllipseByBoundingBox","drawRectangleUsing3Points","drawEllipseUsing3Points","draw90DegreePolygon","drawPolygonByDragging","EditableGeoJsonLayer","_EditableLayer","selectionAwareAccessor","linestrings","createGuidesLayers","createTooltipsLayers","selectedFeatures","_mode","ModeConstructor","isFeatureSelected","getActiveMode","getModeProps","getTooltips","handleKeyUp","_geoLayers","_h3Js","EMPTY_FEATURE_COLLECTION","hexIds","getEditedCluster","updatedHexagons","existingCluster","EditableH3ClusterLayer","tentativeHexagonIDs","hexIDs","getDerivedHexagonIDs","_coords","hexID","getDerivedHexagonID","finalHexagonIDs","committedHexagonIDs","getSelectedHexIDs","_existingCluster","cumulativeHexIDs","selectedCluster","_core","EditableLayer","_CompositeLayer","_forwardEventToCurrentLayer","_step2","_iterator2","currentLayer","getScreenCoords","getMapCoords","getPicks","onLayerClick","onLayerKeyUp","onStartDragging","stopImmediatePropagation","_this$state$_editable","onDragging","_this$state$_editable2","onStopDragging","_this$state$_editable3","onPointerMove","pointerEvent","EditablePathLayer","_PathLayer","_shaders$inject","ElevatedEditHandleLayer","getStrokeWidth","JunctionScatterplotLayer","getStrokeColor","getInnerRadius","Arrow2DGeometry","_Geometry","getArrowAttributes","_ref$length","_ref$headSize","headSize","_ref$tailWidth","tailWidth","_ref$tailStart","tailStart","_ref$getPath","_ref$getDirection","_ref$getColor","_ref$getMarkerPercent","getMarkerPercentages","markers","DEFAULT_DIRECTION","vPoints","_math","vPointsReverse","getLineLength","percentage","forward","createMarkerAlongPath","backward","_marker","distanceAlong","previousDistance","along","vCenter","_meshLayers","_pathOutlineLayer","_arrow2dGeometry","_createPathMarkers","_polyline","DEFAULT_MARKER_LAYER","DEFAULT_MARKER_LAYER_PROPS","MarkerLayer","markerLayerProps","highlightIndex","highlightPoint","getMarkerColor","PathMarkerLayer","_viewport$metersToLng2","metersToLngLatDelta","_coordinateOrigin","_xyz","_dx","_dy","_coordinateOrigin2","_x2","_recalculateClosestPoint","_this$props2","getClosestPointOnPolyline","closestPoints","getClosestPointOnLine","pClosest","pClosestOnLine","distanceToLineSquared","_ref$clampToLine","clampToLine","lineVector","pointVector","dotProduct","_outline","_constants2","injectShaderCode","_ref$code","PathOutlineLayer","outlineFramebuffer","dummyTexture","instanceZLevel","outlineEnabled","outlineRenderShadowmap","outlineShadowmap","getZLevel","SELECTION_TYPE","_MODE_MAP","MODE_MAP","MODE_CONFIG_MAP","selectionType","onSelect","EMPTY_DATA","LAYER_ID_BLOCKER","PASS_THROUGH_PROPS","SelectionLayer","_this$context$viewpor2","_this$context$viewpor4","pickingInfos","bigPolygon","mousePoints","allX","mousePoint","allY","landPointsPoly","bigBuffer","pendingPolygonSelection","blockerId","inheritedProps","_selectRectangleObjects","_selectPolygonObjects","_ref2$changeFlags","INITIAL_STATE","_default","outline_uEnabled","outline_uRenderOutlines","outline_uShadowmap","MAX_ARROWS","DEFAULT_ARROWS","ArrowStyles","FORWARD","BACKWARD","BOTH","groundCoords","toInsert","getBrowser","mockUserAgent","navigator_","safari","mozInnerScreenX","isElectron","realUserAgent","__VERSION__","LocalStorage","defaultConfig","getStorage","_loadConfiguration","getConfiguration","setConfiguration","serializedConfiguration","formatImage","imageUrl","WHITE","window_","process_","getHiResTimestamp","_window$performance","_window$performance$n","_process$hrtime","timeParts","hrtime","originalConsole","DEFAULT_SETTINGS","ONCE","Log","_storage","predefined","propNames","autobind","newLevel","getTotal","_startTs","getDelta","_deltaTs","newPriority","setting","_getLogFunction","oldUsage","newUsage","probe","getTableHeader","_shouldLog","img","logImageInBrowser","logImageInNode","normalizeArguments","groupCollapsed","withGroup","trace","normalizeLogLevel","padLength","leftPad","formatted","formatTime","decorateMessage","resolvedLevel","messageType","Stat","setSampleSize","sampleSize","_count","_samples","_checkSampling","_time","_startTime","_timerPending","getSampleAverageCount","lastSampleCount","getSampleAverageTime","lastSampleTime","getSampleHz","getAverageCount","Stats","_getOrCreate","getTable","average","hz","invariant_1","hasRequiredInvariant","toPropertyKey","getDefaultExportFromCjs$1","invariant","argIndex","framesToPop","MapContext","unregisterEvent","unregisterEvents","applyUpdatersToPropsAndRegisterEvents","updaterMap","eventMap","prevProps","registeredEvents","registeredList","googleEventName","onEventName","newAcc","registerEvents","applyUpdaterToNextProps","eventMap$i","onDblClick","onMapTypeIdChanged","onMouseMove","onMouseOut","onMouseOver","onMouseDown","onMouseUp","onRightClick","onTilesLoaded","onBoundsChanged","onCenterChanged","onHeadingChanged","onIdle","onProjectionChanged","onTiltChanged","onZoomChanged","updaterMap$i","extraMapTypes","mapTypes","clickableIcons","clickable","setClickableIcons","setMapTypeId","streetView","setStreetView","memo","mapContainerStyle","mapContainerClassName","onUnmount","centerChangedListener","setCenterChangedListener","dblclickListener","setDblclickListener","dragendListener","setDragendListener","dragstartListener","setDragstartListener","mousedownListener","setMousedownListener","mousemoveListener","setMousemoveListener","mouseoutListener","setMouseoutListener","mouseoverListener","setMouseoverListener","mouseupListener","setMouseupListener","rightclickListener","setRightclickListener","clickListener","setClickListener","dragListener","setDragListener","PureComponent","mapRef","panTo","componentDidMount","setMapCallback","componentDidUpdate","componentWillUnmount","getRef","asyncGeneratorStep","_asyncToGenerator","_next","_throw","makeLoadScriptUrl","googleMapsApiKey","googleMapsClientId","language","libraries","mapIds","authReferrerPolicy","apiUrl","injectScript","existingScript","windowWithGoogleMap","dataStateAttribute","originalInitMap","initMap","originalErrorCallback","isGoogleFontStyle","styleSheet","cssText","preventGoogleFonts","trueInsertBefore","newElement","referenceElement","trueAppend","cleaningUp","DefaultLoadingElement","previouslyLoadedUrl","defaultLoadScriptProps","LoadScript","link","preventGoogleFontsLoading","isCleaningUp","cleanupCallback","jsxs","loadingElement","_objectWithoutProperties","_objectWithoutPropertiesLoose","_excluded$1","defaultLoadingElement","getDefaultExportFromCjs","hookOptions","loadError","isMounted","setLoaded","setLoadError","setLoadedIfMounted","prevLibraries","useLoadScript","SuppressedError","LoaderStatus","fastDeepEqual$1","DEFAULT_ID","Loader","client","retries","loading","FAILURE","SUCCESS","LOADING","failed","createUrl","deleteScript","loadPromise","loadCallback","importLibrary","execute","setScript","thisArg","fulfilled","rejected","libraryPromises","ErrorEvent","loadErrorCallback","onerrorEvent","resetIfRetryingFailed","defaultLibraries","useJsApiLoader","ownKeys$f","_objectSpread$f","eventMap$h","updaterMap$h","setInstance","trafficLayer","TrafficLayer","setTrafficLayerCallback","bicyclingLayer","BicyclingLayer","setBicyclingLayerCallback","transitLayer","TransitLayer","setTransitLayerCallback","ownKeys$e","_objectSpread$e","eventMap$g","onCircleComplete","onMarkerComplete","onOverlayComplete","onPolygonComplete","onPolylineComplete","onRectangleComplete","updaterMap$g","drawingMode","setDrawingMode","circlecompleteListener","setCircleCompleteListener","markercompleteListener","setMarkerCompleteListener","overlaycompleteListener","setOverlayCompleteListener","polygoncompleteListener","setPolygonCompleteListener","polylinecompleteListener","setPolylineCompleteListener","rectanglecompleteListener","setRectangleCompleteListener","drawing","drawingManager","DrawingManager","setDrawingManagerCallback","ownKeys$d","_objectSpread$d","eventMap$f","onAnimationChanged","onClickableChanged","onCursorChanged","onDraggableChanged","onFlatChanged","onIconChanged","onPositionChanged","onShapeChanged","onTitleChanged","onVisibleChanged","onZindexChanged","updaterMap$f","setAnimation","setClickable","setCursor","draggable","setDraggable","setIcon","setLabel","setOpacity","setShape","setTitle","setVisible","setZIndex","defaultOptions$5","clusterer","noClustererRedraw","clickableChangedListener","setClickableChangedListener","cursorChangedListener","setCursorChangedListener","animationChangedListener","setAnimationChangedListener","draggableChangedListener","setDraggableChangedListener","flatChangedListener","setFlatChangedListener","iconChangedListener","setIconChangedListener","positionChangedListener","setPositionChangedListener","shapeChangedListener","setShapeChangedListener","titleChangedListener","setTitleChangedListener","visibleChangedListener","setVisibleChangedListener","zIndexChangedListener","setZindexChangedListener","markerOptions","Marker","addMarker","removeMarker","chx","Children","isValidElement","elementChild","anchor","ClusterIcon","cluster","getClusterer","extend","clusterClassName","getClusterClass","sums","boundsChangedListener","anchorText","anchorIcon","textColor","textSize","textDecoration","backgroundPosition","cMouseDownInCluster","cDraggingMapByCluster","timeOut","hide","useStyle","getPosFromLatLng","markerClusterer_1","getZoomOnClick","maxZoom_1","getMaxZoom","bounds_1","cancelBubble","overlayMouseTarget","divTitle","getTitle","spriteH","spriteV","alt","enableRetinaIcons","clip","textElm","getStyles","latlng","Cluster$1","Cluster","markerClusterer","getGridSize","minClusterSize","getMinimumClusterSize","averageCenter","getAverageCenter","clusterIcon","getMarkers","isMarkerInClusterBounds","calculateBounds","updateIcon","isMarkerAlreadyAdded","LatLngBounds","markers_1","length_1","isAdded","mCount","getExtendedBounds","getCalculator","CALCULATOR","numStyles","numberOfDigits","IMAGE_SIZES","Clusterer","optMarkers","optOptions","setMinimumClusterSize","getEnableRetinaIcons","setEnableRetinaIcons","addToClosestCluster","getImageExtension","setImageExtension","setAverageCenter","getTotalClusters","fitMapToMarkers","getIgnoreHidden","setIgnoreHidden","setClusterClass","getTotalMarkers","setZoomOnClick","getBatchSizeIE","setBatchSizeIE","createClusters","getImageSizes","setImageSizes","setCalculator","removeMarkers","resetViewport","getImagePath","setImagePath","pushMarkerTo","clearMarkers","setupStyles","setGridSize","getClusters","setMaxZoom","addMarkers","setStyles","repaint","clusters","activeMap","ready","minimumClusterSize","zoomOnClick","ignoreHidden","imagePath","imageExtension","imageSizes","calculator","batchSizeIE","clusterClass","timerRefStatic","fromDivPixelToLatLng","getVisibleRegion","getWorldWidth","bindTo","setValues","unbindAll","optNoDraw","getDraggable","removeMarker_","markers_2","oldClusters","oldClusters_1","trPix","blPix","optHide","distanceBetweenPoints","dLat","dLon","isMarkerInBounds","clusterToAddTo","iFirst","mapBounds","extendedMapBounds","iLast","getVisible","obj1","obj2","ownKeys$c","eventMap$e","onClusteringBegin","onClusteringEnd","updaterMap$e","defaultOptions$4","clusteringBeginListener","setClusteringBeginListener","clusteringEndListener","setClusteringEndListener","clustererOptions","_objectSpread$c","ClustererComponent","setClustererCallback","cancelHandler","InfoBox","getCloseClickHandler","closeClickHandler","createInfoBoxDiv","addClickHandler","getCloseBoxImg","getBoxWidths","setBoxStyle","setContent","getContent","getZIndex","panBox","disableAutoPan","pixelOffset","Size","boxClass","boxStyle","closeBoxMargin","closeBoxURL","infoBoxClearance","isHidden","alignBottom","pane","enableEventPropagation","closeListener","moveListener","mapListener","contextListener","fixedWidthSet","panes","events_1","returnValue","disablePan","mapDiv","mapWidth","mapHeight","iwOffsetX","iwOffsetY","iwWidth","iwHeight","padX","padY","pixPosition","panBy","webkitTransform","msFilter","defaultView","computedStyle","getComputedStyle","borderTopWidth","borderBottomWidth","borderLeftWidth","borderRightWidth","currentStyle","_excluded2","ownKeys$b","_objectSpread$b","fastDeepEqual","hasRequiredFastDeepEqual","eventMap$d","onCloseClick","onContentChanged","onDomReady","updaterMap$d","defaultOptions$3","closeClickListener","setCloseClickListener","domReadyClickListener","setDomReadyClickListener","contentChangedClickListener","setContentChangedClickListener","positionChangedClickListener","setPositionChangedClickListener","zIndexChangedClickListener","setZindexChangedClickListener","containerElementRef","positionLatLng","_position","infoBoxOptions","infoBox","createPortal","InfoBoxComponent","containerElement","setInfoBoxCallback","fastDeepEqualExports","ARRAY_TYPES","KDBush","versionAndType","nodeSize","numItems","IndexArrayType","arrayTypeIndex","coordsByteSize","idsByteSize","padCoords","ids","_pos","_finished","numAdded","within","qy","r2","sqDist","sd","swapItem","defaultOptions$2","minPoints","generateId","OFFSET_ID","OFFSET_NUM","OFFSET_PROP","Supercluster","trees","clusterProps","lngX","latY","tree","_createTree","_cluster","easternHem","westernHem","_limitZoom","getClusterJSON","getChildren","clusterId","originId","_getOriginId","originZoom","_getOriginZoom","getLeaves","leaves","_appendLeaves","getTile","_addTileFeatures","getClusterExpansionZoom","expansionZoom","cluster_id","skipped","point_count","isCluster","getClusterProperties","nextData","neighborIds","numPointsOrigin","neighborId","wx","wy","clusterProperties","clusterPropIndex","_neighborId","numPoints2","_neighborId2","_k2","abbrev","propIndex","point_count_abbreviated","MarkerUtils","isAdvancedMarkerAvailable","getMapCapabilities","isAdvancedMarkersAvailable","isAdvancedMarker","AdvancedMarkerElement","AbstractAlgorithm","noop$1","MarkerClustererEvents","SuperClusterAlgorithm","__rest","superCluster","calculate","_ref10","transformCluster","_ref11","leaf","ClusterStats","clusterMarkerCounts","clusterMarkerSum","mean","DefaultRenderer","_ref14","svg","MAX_ZINDEX","svgEl","DOMParser","parseFromString","_clusterOptions","clusterOptions","OverlayViewSafe","type1","type2","defaultOnClusterClickHandler","MarkerClusterer","_ref15","algorithmOptions","algorithm","onClusterClick","noDraw","CLUSTERING_BEGIN","mapCanvasProjection","singleMarker","groupMarkers","_cluster2","renderClusters","CLUSTERING_END","idleListener","CLUSTER_CLICK","ownKeys$a","_objectSpread$a","useGoogleMap","setMarkerClusterer","markerCluster","useGoogleMarkerClusterer","eventMap$c","updaterMap$c","closeclickListener","domreadyclickListener","contentchangedclickListener","positionchangedclickListener","zindexchangedclickListener","infoWindow","InfoWindow","setInfoWindowCallback","ownKeys$9","_objectSpread$9","eventMap$b","updaterMap$b","editable","setEditable","setPath","defaultOptions$1","polyline","Polyline","setPolylineCallback","ownKeys$8","_objectSpread$8","eventMap$a","updaterMap$a","setPaths","polygonOptions","ownKeys$7","_objectSpread$7","eventMap$9","updaterMap$9","setBounds","rightClickListener","setRightClickListener","setBoundsChangedListener","Rectangle","setRectangleCallback","ownKeys$6","_objectSpread$6","eventMap$8","onRadiusChanged","updaterMap$8","setRadius","radiusChangedListener","setRadiusChangedListener","Circle","setCircleCallback","_this$state$circle","ownKeys$5","_objectSpread$5","eventMap$7","onAddFeature","onRemoveFeature","onRemoveProperty","onSetGeometry","onSetProperty","updaterMap$7","addgeojson","addGeoJson","foreach","loadgeojson","loadGeoJson","overridestyle","overrideStyle","revertstyle","revertStyle","controlposition","controlPosition","setControlPosition","controls","setControls","drawingmode","setStyle","togeojson","toGeoJson","addFeatureListener","setAddFeatureListener","removeFeatureListener","setRemoveFeatureListener","removePropertyListener","setRemovePropertyListener","setGeometryListener","setSetGeometryListener","setPropertyListener","setSetPropertyListener","Data","setDataCallback","ownKeys$4","_objectSpread$4","eventMap$6","onDefaultViewportChanged","onStatusChanged","updaterMap$6","setUrl","KmlLayer","kmlLayer","setKmlLayerCallback","getOffsetOverride","getPixelPositionOffset","createLatLng","inst","createLatLngBounds","getLayoutStyles","getLayoutStylesByBounds","getLayoutStylesByPosition","factory","ensureOfType","ownKeys$3","ownKeys$2","convertToLatLngString","latLngLike","convertToLatLngBoundsString","latLngBoundsLike","mapPaneName","Overlay","_this$getPanes","_objectSpread$3","layoutStyles","createOverlay","paneEl","mapPanes","overlayView","_this$props$onLoad","updatePane","_layoutStyles$top","_layoutStyles$left","_layoutStyles$width","_layoutStyles$height","currentPosition","_objectSpread$2","onPositionElement","_this$props$onUnmount","createRef","prevPositionString","positionString","prevBoundsString","boundsString","ownKeys$1","_objectSpread$1","eventMap$5","updaterMap$5","imageBounds","groundOverlay","GroundOverlay","newBounds","setGroundOverlayCallback","eventMap$4","updaterMap$4","visualization","heatmapLayer","HeatmapLayer","setHeatmapLayerCallback","eventMap$3","onPanoChanged","onPovChanged","updaterMap$3","registerPanoProvider","links","setLinks","motionTracking","setMotionTracking","pano","setPano","pov","setPov","StreetViewPanorama","streetViewPanorama","_this$context$getStre","getStreetView","setStreetViewPanoramaCallback","StreetViewService","streetViewService","setStreetViewServiceCallback","eventMap$2","onDirectionsChanged","updaterMap$2","setDirections","panel","setPanel","routeIndex","setRouteIndex","DirectionsRenderer","directionsRenderer","setDirectionsRendererCallback","eventMap$1","onPlacesChanged","updaterMap$1","StandaloneSearchBox","searchBox","places","SearchBox","setSearchBoxCallback","onPlaceChanged","restrictions","setComponentRestrictions","setFields","setTypes","Autocomplete","_this$containerElemen","setAutocompleteCallback","createThunkMiddleware","extraArgument","dispatch","thunk","withExtraArgument","extendStatics","__extends","il","__defProp","__defProps","__getOwnPropDescs","__getOwnPropSymbols","__hasOwnProp","__propIsEnum","__defNormalProp","__spreadValues","__spreadProps","composeWithDevTools","__REDUX_DEVTOOLS_EXTENSION_COMPOSE__","__REDUX_DEVTOOLS_EXTENSION__","MiddlewareArray","species","freezeDraftable","IS_PRODUCTION","configureStore","rootReducer","curriedGetDefaultMiddleware","middlewareArray","immutableCheck","serializableCheck","getDefaultMiddleware","reducer","middleware","devTools","preloadedState","enhancers","baseProto","finalMiddleware","middlewareEnhancer","finalCompose","storeEnhancers","composedEnhancer","createAction","prepareAction","actionCreator","prepared","executeReducerBuilderCallback","builderCallback","defaultCaseReducer","actionsMap","actionMatchers","addCase","typeOrActionCreator","addMatcher","matcher","addDefaultCase","createSlice","_reducer","initialState","reducers","reducerNames","sliceCaseReducersByName","sliceCaseReducersByType","actionCreators","buildReducer","extraReducers","finalCaseReducers","mapOrBuilderCallback","getInitialState","finalActionMatchers","finalDefaultCaseReducer","frozenInitialState_1","caseReducers","caseReducer","draft","createReducer","actionMatchers_1","reducerName","prepareCallback","maybeReducerWithPrepare","prepare","actions","commonProperties","RejectWithValue","FulfillWithMeta","miniSerializeError","simpleError","commonProperties_1","createAsyncThunk","createAsyncThunk2","typePrefix","payloadCreator","requestStatus","pending","serializeError","rejectedWithValue","AC","class_1","throwIfAborted","abortReason","idGenerator","nanoid","abortController","promise2","__this","__arguments","finalAction","conditionResult","abortedPromise","err_1","verb","op","getPendingMeta","rejectWithValue","fulfillWithValue","dispatchConditionRejection","unwrap","unwrapResult","withTypes","alm","queueMicrotask","_extends","Action","PopStateEventType","createBrowserHistory","getLocation","createHref","validateLocation","v5Compat","globalHistory","Pop","handlePop","listen","encodeLocation","createClientSideURL","createPath","Push","createLocation","historyState","getHistoryState","pushState","Replace","replaceState","getUrlBasedHistory","parsePath","parsedPath","hashIndex","searchIndex","ResultType","matchRoutes","routes","locationArg","basename","stripBasename","branches","flattenRoutes","compareIndexes","routesMeta","childrenIndex","rankRouteBranches","matchRouteBranch","safelyDecodeURI","parentsMeta","route","relativePath","joinPaths","computeScore","paramRe","dynamicSegmentValue","indexRouteValue","emptySegmentValue","staticSegmentValue","splatPenalty","isSplat","initialScore","segment","branch","matchedParams","matchedPathname","remainingPathname","matchPath","pathnameBase","normalizePathname","paramNames","regexpSource","paramName","compilePath","captureGroups","splatValue","safelyDecodeURIComponent","nextChar","cond","getInvalidPathError","getPathContributingMatches","resolveTo","toArg","routePathnames","locationPathname","isPathRelative","isEmptyPath","toPathname","routePathnameIndex","toSegments","fromPathname","resolvePathname","normalizeSearch","normalizeHash","hasExplicitTrailingSlash","hasCurrentTrailingSlash","AbortedDeferredError","ErrorResponse","internal","isRouteErrorResponse","validActionMethodsArr","validRequestMethodsArr","loggedInStatus","samlAuthWindow","samlCompletionPromise","releaseVersion","SSO_REDIRECTION_MARKER_GUID","AuthFailureType","AuthStatus","AuthEvent","authEE","setAuthEE","eventEmitter","notifyAuthSDKSuccess","emit","SDK_SUCCESS","SDK_NOT_INITIALIZED","notifyAuthSuccess","sessionInfo","SESSION_INFO_FAILED","notifyAuthFailure","failureType","notifyLogout","LOGOUT","isLoggedIn","thoughtSpotHost","postLoginService","disableSDKTracking","getReleaseVersion","isAtSSORedirectUrl","removeSSORedirectUrlMarker","updatedHash","doSSOAuth","embedConfig","ssoEndPoint","ssoURL","inPopup","triggerContainer","triggerText","popupClosedCheck","openPopup","samlCompletionResolved","SAML_POPUP_CLOSED_NO_AUTH","WAITING_FOR_POPUP","containerEl","authElem","SAMLComplete","accessToken","TRIGGER_SSO_POPUP","samlPopupFlow","authTriggerContainer","authTriggerText","cachedToken","authenticate","authType","SSO","SAMLRedirect","SAML","ssoRedirectUrl","redirectPath","SAML_LOGIN_TEMPLATE","doSamlAuth","OIDC","OIDCRedirect","noRedirect","baseEndpoint","OIDC_LOGIN_TEMPLATE","doOIDCAuth","AuthServer","TrustedAuthToken","username","authEndpoint","getAuthToken","authToken","resp","detectCookieAccessSlow","doTokenAuth","TrustedAuthTokenCookieless","authSuccess","doCookielessTokenAuth","Basic","password","doBasicAuth","cacheAuthTokenKey","getCacheAuthToken","storeAuthTokenInCache","getAuthenticationToken","skipvalidation","cachedAuthToken","disableTokenVerification","isCachedTokenStillValid","validateAuthToken","INVALID_TOKEN_ERROR","suppressAlert","INVALID_TOKEN_TYPE_ERROR","invalidType","suppressErrorAlerts","DUPLICATE_TOKEN_ERR","resetCachedAuthToken","urlRegex","getThoughtSpotHost","INVALID_THOUGHTSPOT_HOST","urlParts","getV2BasePath","basepath","tsHost","URL_MAX_LENGTH","DEFAULT_EMBED_WIDTH","DEFAULT_EMBED_HEIGHT","Page","DataPanelCustomColumnGroupsAccordionState","HomePageSearchBarMode","PrimaryNavbarVersion","HomePage","ListPage","AppEmbed","domSelector","viewConfig","embedComponentType","defaultHeight","lazyLoadScrollContainers","sendFullHeightLazyLoadData","iFrame","enableScrollableContainerLazyLoading","lazyLoadingForFullHeight","fullHeight","VisibleEmbedCoordinates","requestVisibleEmbedCoordinatesHandler","responder","visibleCoordinatesData","RequestVisibleEmbedCoordinates","updateIFrameHeight","setIFrameHeight","embedIframeCenter","getIframeCenter","EmbedIframeCenter","setIframeHeightForNonEmbedLiveboard","frameHeight","frameParams","RouteChange","EmbedHeight","getAppInitData","defaultAppInitData","sidebarInitData","handleError","getEmbedParams","hideTagFilterChips","hideObjects","liveboardV2","showPrimaryNavbar","disableProfileAndHelp","hideHamburger","hideObjectSearch","hideNotification","hideApplicationSwitcher","hideOrgSwitcher","enableSearchAssist","newConnectionsExperience","dataPanelV2","hideLiveboardHeader","showLiveboardTitle","showLiveboardDescription","showMaskedFilterChip","isLiveboardMasterpiecesEnabled","newChartsLibrary","hideHomepageLeftNav","modularHomeExperience","isLiveboardHeaderSticky","enableAskSage","collapseSearchBarInitially","enable2ColumnLayout","enableCustomColumnGroups","dataPanelCustomGroupsAccordionInitialState","EXPAND_ALL","collapseSearchBar","isLiveboardCompactHeaderEnabled","showLiveboardVerifiedBadge","showLiveboardReverifyBanner","hideIrrelevantChipsInLiveboardTabs","isEnhancedFilterInteractivityEnabled","homePageSearchBarMode","isUnifiedSearchExperienceEnabled","enablePendoHelp","discoveryExperience","coverAndFilterOptionInPDF","isLiveboardStylingAndGroupingEnabled","isPNGInScheduledEmailsEnabled","isLiveboardXLSXCSVDownloadEnabled","isGranularXLSXCSVSchedulesEnabled","isCentralizedLiveboardFilterUXEnabled","isLinkParametersEnabled","updatedSpotterChatPrompt","enableStopAnswerGenerationEmbed","spotterChatConfig","isThisPeriodInDateFiltersEnabled","enableHomepageAnnouncement","isContinuousLiveboardPDFEnabled","enableLiveboardDataCache","PrimaryNavHidden","HideProfleAndHelp","HideApplicationSwitcher","HideOrgSwitcher","HideLiveboardHeader","ShowLiveboardTitle","ShowLiveboardDescription","ShowMaskedFilterChip","IsLiveboardMasterpiecesEnabled","EnableNewChartLibrary","LiveboardHeaderSticky","IsFullAppEmbed","LiveboardHeaderV2","IsEnhancedFilterInteractivityEnabled","ShowLiveboardVerifiedBadge","ShowLiveboardReverifyBanner","HideIrrelevantFiltersInTab","IsUnifiedSearchExperienceEnabled","CoverAndFilterOptionInPDF","getBaseQueryParams","UpdatedSpotterChatPrompt","EnableStopAnswerGenerationEmbed","hideToolResponseCardBranding","toolResponseCardBrandingLabel","spotterFileUploadEnabled","spotterFileUploadFileTypes","HideToolResponseCardBranding","ToolResponseCardBrandingLabel","SpotterFileUploadEnabled","SpotterFileUploadFileTypes","HideObjectSearch","HideHamburger","HideNotification","IsLazyLoadingForEmbedEnabled","lazyLoadingMargin","RootMarginForLazyLoad","Tag","HideObjects","LiveboardV2Enabled","EnableSearchAssist","EnableConnectionNewExperience","Enable2ColumnLayout","EnablePendoHelp","IsLiveboardStylingAndGroupingEnabled","HideTagFilterChips","IsThisPeriodInDateFiltersEnabled","EnableHomepageAnnouncement","IsWYSIWYGLiveboardPDFEnabled","EnableLiveboardDataCache","DataPanelV2Enabled","HideHomepageLeftNav","ModularHomeExperienceEnabled","CollapseSearchBarInitially","EnableCustomColumnGroups","COLLAPSE_ALL","EXPAND_FIRST","DataPanelCustomGroupsAccordionInitialState","NavigationVersion","HomepageVersion","primaryNavbarVersion","Sliding","homePage","Modular","ModularWithStylingChanges","listPageVersion","ListPageVersion","Focused","getIFrameSrc","pageId","pageRoute","formatPath","getPageRoute","getRootIframeSrc","getThoughtSpotPostUrlParams","Search","Answers","Liveboards","Pinboards","SpotIQ","Monitor","Home","navigateToPage","noReload","Navigate","iframeSrc","embedPath","unregisterLazyLoadEvents","registerLazyLoadEvents","scrollContainer","resizeTargets","lazyLoadResizeObserver","resizeTarget","renderV1Embed","ReportType","globalObserver","CONFIG_DEFAULTS","loginFailedMessage","None","ERROR","waitForCleanupOnDestroy","cleanupTimeout","authPromise","getAuthPromise","handleAuth","SDK","hostUrlToFeatureUrl","SearchEmbed","LiveboardEmbed","FullApp","VizEmbed","initFlagKey","initPromise","initPromiseResolve","withResolvers","initFlagStore","isInitCalled","isInitCompleted","ignoreIfAlreadyExists","curVal","createAndSetInitPromise","getInitPromise","getIsInitCompleted","getIsInitCalled","sanity","newConfig","backwardCompat","overrideExisting","MISSING_REPORTING_OBSERVER","reportBody","isThoughtSpotHost","isFrameHostError","CSP_VIOLATION","CSP_VIOLATION_ALERT","CSP_FRAME_HOST_VIOLATION_LOG_MESSAGE","registerReportingObserver","configToTrack","VISUAL_SDK_CALLED_INIT","usedCustomizationSheet","customizations","customCSSUrl","usedCustomizationVariables","customCSS","variables","usedCustomizationRules","rules_UNSTABLE","usedCustomizationStrings","usedCustomizationIconSprite","iconSpriteUrl","callPrefetch","prefetchFeatures","additionalFlags","hostUrl","prefetchFlags","EmbedApp","prefetchUrl","prefetch","disableAutoLogin","autoLogin","renderQueue","renderInQueue","queueMultiRenders","ConversationMessage","getEmbedParamsObject","HideActions","isSpotterAgentEmbed","getIframeSrc","genNo","acSessionId","acGenNo","convId","messageId","queryParamsString","tsPostHashParams","getEmbedBasePath","renderIFrame","SpotterEmbed","excludeRuntimeFiltersfromURL","excludeRuntimeParametersfromURL","worksheetId","searchOptions","disableSourceSelection","hideSourceSelection","showSpotterLimitations","hideSampleQuestions","runtimeFilters","runtimeParameters","VALIDATION_ERROR","SPOTTER_EMBED_WORKSHEED_ID_NOT_FOUND","WORKSHEET_ID_NOT_FOUND","SpotterEnabled","DisableSourceSelection","HideSourceSelection","ShowSpotterLimitations","HideSampleQuestions","filterQuery","parameterQuery","worksheet","searchQuery","ConversationEmbed","configKey","getEmbedConfig","setEmbedConfig","UIPassthroughEvent","currentLiveboardState","liveboardId","vizId","activeTabId","personalizedViewId","enableVizTransformations","visibleVizs","hideTabPanel","oAuthPollingInterval","isForceRedirect","dataSourceId","preventLiveboardFilterRemoval","preventPinboardFilterRemoval","EnableVizTransformations","livedBoardEmbed","vizEmbed","HideTabPanel","OauthPollingInterval","IsForceRedirect","DataSourceId","getIframeSuffixSrc","legacyViewId","liveboardGuid","effectiveViewId","additionalParams","pinboardId","LIVEBOARD_VIZ_ID_VALIDATION","LIVEBOARD_ID_MISSING","setActiveTab","tabId","showPreviewLoader","preview","getPreview","vizContent","insertAdjacentHTML","previewDiv","hostElement","beforePrerenderVisible","embedObj","getPreRenderObj","executeAfterEmbedContainerLoaded","navigateToLiveboard","handleRenderForPrerender","prerenderGeneric","dataWithVizId","SetActiveTab","isRendered","preRenderId","getLiveboardUrl","SearchBarEmbed","dataSource","dataSources","useLastSelectedSources","excludeSearchTokenStringFromURL","DataSources","searchTokenString","executeSearch","UseLastSelectedDataSource","searchEmbed","getSearchInitData","HiddenActionItemByDefaultForSearchEmbed","EditACopy","SaveAsView","UpdateTML","EditTML","AnswerDelete","getDataSourceMode","dataSourceMode","Expanded","collapseDataSources","collapseDataPanel","Collapsed","hideDataSources","Hidden","visualOverrides","embedParams","visualOverridesParams","hideResults","forceTable","hideSearchBar","focusSearchBarOnRender","HideResult","ForceTable","HideSearchBar","FocusSearchBarOnRender","DataSourceMode","answerId","answerPath","suppressSearchEmbedBetaWarning","SEARCHEMBED_BETA_WRANING_MESSAGE","resolveEnablePastConversationsSidebar","spotterSidebarConfigValue","standaloneValue","buildSpotterSidebarAppInitData","spotterSidebarConfig","enablePastConversationsSidebar","resolvedEnablePastConversations","resolvedSidebarConfig","spotterDocumentationUrl","validationError","INVALID_SPOTTER_DOCUMENTATION_URL","INVALID_URL","buildSpotterVizAppInitData","initData","spotterViz","spotterVizConfig","customActionValidationConfig","LIVEBOARD","PRIMARY","MENU","allowedMetadataIds","allowedDataModelIds","allowedFields","VIZ","CONTEXTMENU","ANSWER","SPOTTER","processAuthFailure","disableLoginFailurePage","isEmbeddedSSO","EmbeddedSSO","isTrustedAuth","isEmbeddedSSOInfoFailure","UNAUTHENTICATED_FAILURE","IDLE_SESSION_TIMEOUT","OTHER","createValidationError","isValidationError","embedErrorDetails","HOST_EVENT_VALIDATION","END","PASSTHROUGH_MAP","Pin","PinAnswerToLiveboard","SaveAnswer","UpdateFilters","DrillDown","Drilldown","GetAnswerSession","GetFilters","GetIframeUrl","GetParameters","GetTML","GetTabs","getExportRequestForCurrentPinboard","GetExportRequestForCurrentPinboard","HostEventClient","availablePassthroughKeysCache","customHandlers","handlePinEvent","handleSaveAnswerEvent","handleUpdateFiltersEvent","handleDrillDownEvent","processTrigger","thoughtspotHost","handleHostEventWithParam","apiName","triggerUIPassthroughApi","hostEventFallback","hostEvent","getDataWithPassthroughFallback","passthroughEvent","setIframeElement","getAvailableUIPassthroughKeys","GetAvailableUIPassthroughs","UIPassthrough","formattedPayload","newPinboardName","newLiveboardName","Save","saveResponse","Answer__save","answer","isValidFilter","hasColumn","columnName","hasOperator","oper","operator","hasValues","validType","hasValidFilter","hasValidFilters","isValidUpdateFiltersPayload","UPDATEFILTERS_INVALID_PAYLOAD","hasClickedPoint","clickedPoint","hasSelectedPoints","selectedPoints","isValidDrillDownPayload","DRILLDOWN_INVALID_PAYLOAD","triggerHostEvent","customHandler","DefaultInterceptUrlsMap","AnswerData","LiveboardData","processInterceptUrls","interceptUrls","processedUrls","apiType","apiTypeUrls","formatInterceptUrl","getInterceptInitData","combinedUrls","isOnBeforeGetVizDataInterceptEnabled","interceptTimeout","parseJson","jsonString","processLegacyInterceptResponse","errorText","errorDescription","isUserError","TS_EMBED_ID","V1EventMap","TsEmbed","hostEventClient","embedNodeKey","isAppInitialized","shouldEncodeUrlQueryParams","defaultHiddenActions","ReportError","fullscreenChangeHandler","subscribedListeners","messageEventListener","getEventType","eventPort","getEventPort","eventData","formatEventData","processedEventData","CustomAction","embedAnswerData","contextMenuPoints","answerService","processCustomAction","AuthInit","userGUID","NoCookieAccess","suppressNoCookieAccessAlert","ignoreNoCookieAccess","THIRD_PARTY_COOKIE_BLOCKED_ALERT","NO_COOKIE_ACCESS","processNoCookieAccess","AuthFailure","AuthLogout","processAuthLogout","ExitPresentMode","disableFullscreenPresentation","processExitPresentMode","CLEAR_INFO_CACHE","processEventData","isPreRendered","preRenderWrapper","ApiIntercept","handleApiInterceptEvent","executeCallbacks","appInitCb","appInitData","APP_INIT","handleAuthFailure","tokenRefresh","refreshAuthTokenForCookieless","RefreshAuthToken","updateAuthToken","autoLoginConfig","AuthExpire","EXPIRY","idleSessionTimeout","IdleSessionTimeout","registerAppInit","embedListenerReadyHandler","createEmbedContainerHandler","EmbedListenerReady","authInitHandler","showPreRenderByDefault","createEmbedEventResponder","payloadToSend","OnBeforeGetVizDataIntercept","processApiInterceptResponse","getPayloadToSend","triggerEventOnPort","isEmbedContainerLoaded","embedContainerReadyCallbacks","processEmbedContainerReady","executeEmbedContainerReadyCallbacks","eventHandlerMap","VISUAL_SDK_EMBED_CREATE","thoughtSpotV2Base","shouldWaitForRenderPromise","afterInit","useEventForSAMLPopup","isReadyForRenderPromise","throwInitError","INIT_SDK_REQUIRED","INIT_ERROR","errorDetails","__type","ports","isPreAuthCacheEnabled","overrideOrgId","disablePreauthCache","isFullAppEmbedWithVisiblePrimaryNavbar","appViewConfig","subscribeToNetworkEvents","unsubscribeToNetworkEvents","onlineEventListener","Reload","offlineEventListener","OFFLINE_WARNING","NETWORK_ERROR","offlineWarning","online","offline","executeEvent","getUnsavedAnswerTml","interceptData","bodyParseError","eventDataString","parsedData","parsedBody","parseInterceptData","API","ERROR_PARSING_API_INTERCEPT_BODY","PARSING_API_INTERCEPT_BODY_ERROR","contextBookId","answerDataUrls","legacyInterceptEnabled","legacyPayload","getUrlType","handleInterceptEvent","_eventType","triggerUIPassThrough","GetUnsavedAnswerTML","subscribeToMessageEvents","unsubscribeToMessageEvents","subscribeToEvents","unsubscribeToEvents","getAuthTokenForCookielessInit","getDefaultAppInitData","customActionsResult","customActions","validActions","validation","missingFields","validateActionStructure","MISSING_REQUIRED_FIELDS","INVALID_ACTION_OBJECT","actionsWithUniqueIds","duplicateErrors","idMap","actionsWithSameId","duplicateNames","DUPLICATE_IDS","filterDuplicateIds","finalValidActions","validationErrors","primaryActionsPerTarget","targetType","metadataIds","dataModelIds","UNSUPPORTED_TARGET","supportedPositions","INVALID_POSITION","invalidMetadataIds","supportedMetadataIds","INVALID_METADATA_IDS","invalidDataModelIds","supportedDataModelIds","INVALID_DATA_MODEL_IDS","invalidFields","supportedFields","INVALID_FIELDS","validateCustomAction","toLocaleLowerCase","getCustomActions","CUSTOM_ACTION_VALIDATION","customisations","runtimeFilterParams","runtimeParameterParams","hiddenHomepageModules","reorderedHomepageModules","hostConfig","hiddenHomeLeftNavItems","customVariablesForThirdPartyTools","hiddenListColumns","embedExpiryInAuthToken","refreshAuthTokenOnNearExpiry","forceRefresh","getUpdateEmbedParamsObject","hostAppUrl","blockNonEmbedFullAppAccess","HostAppUrl","ViewPortHeight","ViewPortWidth","Version","AuthType","AutoLogin","disableLoginRedirect","DisableLoginRedirect","ForceSAMLAutoRedirect","cookieless","pendoTrackingKey","PendoTrackingKey","numberFormatLocale","NumberFormatLocale","dateFormatLocale","DateFormatLocale","currencyFormat","CurrencyFormat","disabledActions","disabledActionReason","hiddenActions","visibleActions","hiddenTabs","visibleTabs","showAlerts","additionalFlagsFromView","locale","contextMenuTrigger","linkOverride","enableLinkOverridesV2","insertInToSlide","disableRedirectionLinksInNewTab","exposeTranslationIDs","primaryAction","additionalFlagsFromInit","CONFLICTING_ACTIONS_CONFIG","CONFLICTING_TABS_CONFIG","PrimaryAction","DisableActions","DisableActionReason","ExposeTranslationIDs","VisibleActions","HiddenTabs","VisibleTabs","LEFT_CLICK","ContextMenuTrigger","RIGHT_CLICK","BOTH_CLICKS","embedCustomizations","spriteUrl","IconSpriteUrl","stringIDsUrl","StringIDsUrl","ShowAlerts","Locale","EnableLinkOverridesV2","LinkOverride","ShowInsertToSlide","DisableRedirectionLinksInNewTab","OverrideOrgId","preAuthCache","OverrideNativeConsole","ClientLogLevel","getV1EmbedBasePath","createIframeEl","frameSrc","allowFullscreen","webkitallowfullscreen","mozallowfullscreen","allow","frameWidth","restParams","isPreRenderEmbed","handleInsertionIntoDOM","insertIntoDOMForPreRender","insertIntoDOM","insertedDomEl","nextInQueue","initTimestamp","VISUAL_SDK_RENDER_START","loadTimestamp","Load","VISUAL_SDK_RENDER_COMPLETE","elWidth","elHeight","timeTookToLoad","InfoSuccess","setupFullscreenChangeHandler","prefetchIframe","VISUAL_SDK_RENDER_FAILED","LOGIN_FAILED","createPreRenderWrapper","preRenderIds","getPreRenderIds","wrapper","connectPreRendered","preRenderWrapperElement","preRenderChild","HTMLIFrameElement","isPreRenderConnected","createPreRenderChild","divChildNode","createPreRenderPlaceholder","placeHolder","showPreRender","hidePreRender","insertAsSibling","shouldSkipEvent","useHostEventsV2","shouldBypassPayloadValidation","dataStatus","callbackObj","START","getCompatibleEventType","offsetTopClient","scrollTopClient","viewPortHeight","iframeHeight","iframeScrolled","iframeVisibleViewPort","iframeOffset","iframeCenter","isRegisteredBySDK","VISUAL_SDK_ON","checkEmbedContainerLoaded","preRenderObj","VISUAL_SDK_TRIGGER","HOST_EVENT_TYPE_UNDEFINED","RENDER_BEFORE_EVENTS_REQUIRED","RENDER_NOT_CALLED","RENDER_CALLED_BEFORE_INIT","getCurrentContext","GetPageContext","subscribedEvent","Subscribed","replaceExistingPreRender","PRERENDER_ID_MISSING","urlHash","postHashParams","postURLParams","queryParamsObj","postURLParamsObj","addKeyValuePairCb","tsParams","removeFullscreenChangeHandler","DestroyEmbed","getUnderlyingFrameElement","prerenderFrameSrc","UpdateEmbedParams","UPDATE_PARAMS_FAILED","existingHeight","placeHolderId","oldEle","syncPreRenderStyle","doNotTrackPreRenderSize","observeTarget","contentRect","getPreRenderPlaceHolderElement","SYNC_STYLE_CALLED_BEFORE_RENDER","elBoundingClient","placeHolderEle","getAnswerService","fullscreenElement","V1Embed","test__executeCallbacks","enableV2Shell_experimental","ERROR_MESSAGE","TRIGGER_TIMED_OUT","MIXPANEL_TOKEN_NOT_FOUND","SPOTTER_AGENT_NOT_INITIALIZED","SSR_ENVIRONMENT_ERROR","CUSTOM_ACTIONS_ERROR_MESSAGE","invalidIds","supportedIds","keptName","mixpanelLib","mixpanelInstance","MIXPANEL_EVENT","VISUAL_SDK_IFRAME_LOAD_PERFORMANCE","VERCEL_INTEGRATION_COMPLETED","isMixpanelInitialized","eventQueue","uploadMixpanelEvent","eventId","eventProps","track","initMixpanel","mixpanelToken","isPublicCluster","isPublicUser","identify","register_once","clusterName","sdkVersion","tar","dequal","bar","ctor","getInt8","componentFactory","EmbedConstructor","isPreRenderedComponent","forwardedRef","embedProps","accu","getViewPropsAndListeners","tsEmbed","handlePreRenderRendering","handleDefaultRendering","handleRendering","handleDestroy","signalRef","useDeepCompareMemoize","preRenderStyles","useEmbedRef","otherProps","tokenizedFetch","req","HomeLeftNavItem","RuntimeFilterOp","HomepageModule","ListPageColumns","EmbedEvent","HostEvent","DataSourceVisualMode","Param","PrefetchFeatures","ContextMenuTriggerOptions","CustomActionsPosition","CustomActionTarget","LogLevel","ErrorDetailsTypes","EmbedErrorCodes","ContextType","InterceptedApiType","DataLabelFilterOperator","ConditionalFormattingOperator","BackgroundFormatType","ConditionalFormattingComparisonType","LegendPosition","TableTheme","TableContentDensity","mergeArrays","withOptions","getFilterQuery","valueIndex","filterExpr","encodedValue","getRuntimeParameters","getQueryParamString","shouldSerializeParamValues","qp","serializedValue","paramToString","getCssDimension","isValidCssMargin","isUndefined","cssUnitPattern","trimmedPart","getSSOMarker","markerId","appendToUrlHash","stringToAppend","outputUrl","splitAdder","getRedirectUrl","targetUrl","getEncodedQueryParamsString","getOffsetTop","embedEventStatus","checkReleaseVersionInBeta","suppressBetaWarning","splittedReleaseVersion","majorVersion","getCustomisations","customizationsFromViewConfig","customizationsFromEmbedConfig","getRuntimeFilters","runtimefilters","getDOMNode","deepMerge","getOperationNameFromQuery","removeTypename","setStyleProperties","styleProperties","styleProperty","removeStyleProperties","removeProperty","getTypeFromValue","sdkWindowKey","storeValueInWindow","isWindowUndefined","getValueFromWindow","arrayIncludesString","isInFullscreen","webkitFullscreenElement","mozFullScreenElement","msFullscreenElement","handlePresentEvent","iframe","fullscreenMethods","handleExitPresentMode","exitFullscreenMethods","scrollableOverflowPattern","clippingOverflowPattern","getParentElementAcrossShadowRoot","rootNode","getRootNode","ShadowRoot","hasMatchingOverflow","overflowPattern","overflowX","overflowY","getScrollableAncestors","ancestors","getIntersectedRect","clipRect","getEffectiveClippingAncestors","elementRect","getClippingAncestors","ancestor","currentVisibleRect","nextClipRect","clipsElement","rectB","rectA","calculateVisibleElementData","useClippingAncestors","clipTop","clipLeft","clipBottom","clipRight","ancestorRect","frameRelativeTop","frameRelativeLeft","frameRelativeBottom","frameRelativeRight","formatTemplate","getHostEventsConfig","validateHttpUrl","parsedUrl","setParamIfDefined","asBoolean","EndPoints","AUTH_VERIFICATION","SESSION_INFO","PREAUTH_INFO","TOKEN_LOGIN","BASIC_LOGIN","EXECUTE_TML","EXPORT_TML","IS_ACTIVE","failureLoggedFetch","verifyTokenService","authVerificationUrl","Authorization","fetchAuthTokenService","fetchAuthService","fetchUrlParams","fetchAuthPostService","bodyPrams","fetchBasicAuthService","tokenizedFailureLoggedFetch","fetchPreauthInfoService","sessionInfoPath","fetchSessionInfoService","isActiveService","isActiveUrl","sourceDetailCache","bachSessionId","getUnaggregatedAnswerSession","removeColumns","addColumns","addFilter","getAnswer","getAnswerData","addVizToLiveboard","OperationType","DATA_TYPES","AnswerService","tmlOverride","getSourceDetail","sourceId","guid","souceDetails","columnIds","executeQuery","logicalColumnIds","colId","logicalColumnId","addColumnsByName","columnGuids","getGuidsFromColumnNames","filterContent","filterType","filterGroupId","updateDisplayMode","displayMode","getSQLQuery","fetchSQLWithAllColumns","sql","fetchData","dataPaginationParams","isClientPaginated","visualizations","viz","fetchCSVBlob","userLocale","includeInfo","getFetchCSVBlobUrl","fetchPNGBlob","omitBackground","deviceScaleFactor","getFetchPNGBlobUrl","getUnderlyingDataForPoint","outputColumnNames","underlyingDataPoint","addPointFromColVal","dataValue","epochRange","startEpoch","endEpoch","columnId","selectedAttributes","getSelectedPointsForUnderlyingDataQuery","ouputColumnGuids","unAggAnswer","unaggAnswerSession","currentColumns","referencedColumns","columnsToAdd","columnsToRemove","isCompositeQuery","getTML","edoc","addDisplayedVizToLiveboard","__typename","getDisplayedViz","setTMLOverride","override","sourceDetail","colNames","cols","colSet","colName","graphqlQuery","operationName","accept","dataValues","logFunctions","SILENT","WARN","INFO","DEBUG","TRACE","globalLogLevelOverride","setGlobalLogLevelOverride","logLevelToNumber","compareLogLevels","logLevel1","logLevel2","setLogLevel","newLogLevel","getLogLevel","canLog","logMessages","logFn","reload","TRIGGER_TIMEOUT","rej","Present","postIframeMessage","resetAllCachedServices","preauthInfo","formatPreauthInfo","preauthInfoResp","getPreauthInfo","allowCache","sessionResponse","processedPreauthInfo","getSessionInfo","processedSessionInfo","getSessionDetails","sessionInfoResp","devMixpanelToken","configInfo","mixpanelConfig","devSdkKey","prodMixpanelToken","prodSdkKey","production","selfClusterId","selfClusterName","resetCachedSessionInfo","resetCachedPreauthInfo","__importDefault","bearing_1","destination_1","distance_1","helpers_1","travelled","overshot","feat","coordinates_1","radiansToLength","factors","lengthToRadians","radiansToDegrees","earthRadius","centimeters","centimetres","feet","inches","kilometers","kilometres","metres","miles","millimeters","millimetres","nauticalmiles","yards","unitsFactors","areaFactors","acres","hectares","_options","lineStrings","geometryCollection","lengthToDegrees","bearingToAzimuth","degreesToRadians","convertLength","originalUnit","finalUnit","convertArea","startFactor","finalFactor","validateBBox","validateId","containsNumber","geojsonType","featureOf","collectionOf","_name","meta_1","RADIUS","polygonArea","ringArea","lowerIndex","middleIndex","upperIndex","coordsLength","geomReduce","helpers","excludeWrapCoord","stopG","geometryMaybeCollection","isGeometryCollection","wrapShrink","isFeatureCollection","isFeature","geomIndex","multiFeatureIndex","geomType","propEach","featureEach","geomEach","featureProperties","featureBBox","segmentEach","segmentIndex","previousCoords","previousFeatureIndex","previousMultiIndex","prevGeomIndex","currentCoord","featureIndexCoord","multiPartIndexCoord","currentSegment","lineEach","coordAll","coordReduce","initialValue","previousValue","featureReduce","currentFeature","findPoint","findSegment","flattenReduce","currentGeometry","lineReduce","propReduce","currentProperties","segmentReduce","started","lineclip_1","clipPolygon","rings","outRings","rings_1","clipped","polygonclip","lines_1","lineclip","poly","lastCode","codeA","prevInside","lowLeft","lowRight","final","bear","calculateFinalBearing","coordinates1","coordinates2","lon1","lon2","lat1","lat2","boolean_point_in_polygon_1","line_intersect_1","polygon_to_line_1","isPointOnLine","isPointOnLineSegment","isLineInPoly","lineSegmentStart","lineSegmentEnd","dxc","dyc","dxl","dyl","feature1","feature2","bool","flatten1","flatten2","geom1","geom2","pair1","pair2","lineString1","lineString2","isPolyInPoly","disjoint","boolean_disjoint_1","inRing","ignoreBoundary","isInside","xj","yj","polys","inBBox","insidePoly","inHole","excludeBoundary","ptCoords","lineCoords","ignoreEndVertices","bbox_1","boolean_point_on_line_1","doBBoxOverlap","bbox1","bbox2","compareCoords","isPointInMultiPoint","multiPoint1","multiPoint2","anyMatch","isMultiPointInMultiPoint","foundInsidePoint","isMultiPointOnLine","isMultiPointInPoly","isLineOnLine","linestring","midpoint","geometry1","geometry2","poly1Bbox","turfJsts","d3Geo","_interopDefaultLegacy","center__default","bufferFeature","multiBuffered","geoAzimuthalEquidistant","defineProjection","projected","projectCoords","GeoJSONReader","BufferOp","bufferOp","coordsIsNaN","GeoJSONWriter","unprojectCoords","proj","xSum","ySum","longitude1","latitude1","bearingRad","latitude2","longitude2","polygonClipping","polygonClipping__default","difference","polygon1","polygon2","differenced","rhumbDestination","transformRotate","rhumbDestination__default","transformRotate__default","ellipse","centerCoords","angleRad","getTanDeg","newx","newy","deg","radians2degrees","degrees2radians","distanceToDegrees","distanceToRadians","radiansToDistance","bearingToAngle","convertDistance","polygon_clipping_1","poly1","poly2","getGeomType","line_segment_1","geojson_rbush_1","coords1","coords2","x4","y4","denom","uA","uB","unique","currentCoords","createSegments","lineSegmentFeature","feature$$1","mutliPartIndexCoord","bearing__default","destination__default","distance__default","closestPt","stop_1","sectionLength","heightDistance","perpendicularPt1","perpendicularPt2","intersectPt","rhumb_distance_1","calcDistance","c1","c2","distanceToSegment","polygonToLine","coordsToLine","multiPolygonToLine","multiPoly","cloneFeature","cloned","cloneProperties","cloneGeometry","deepSlice","rewindLineString","mutate","cloneFeatureCollection","calculateRhumbBearing","phi1","deltaLambda","deltaPsi","bear360","wasNegativeDistance","distanceInMeters","lambda1","DeltaPhi","DeltaPsi","calculateRhumbDestination","DeltaLambda","calculateRhumbDistance","rhumbBearing","rhumbDistance","centroid__default","rhumbBearing__default","rhumbDistance__default","clone__default","finalAngle","newCoords","turfBBox","turfBBox__default","transformScale","originIsPoint","isPoint","defineOrigin","originalDistance","newDistance","newCoord","transformTranslate","zTranslation","unioned","makeNull","exists","allowEmptyString","missing","missingOrEmpty","toStringOrNull","attrToNumber","valueParsed","attrToBoolean","arr_1","GenericUtils","attrToString","referenceCompare","jsonEquals","val1","val2","defaultComparator","valueA","valueB","accentedCompare","valueAMissing","valueBMissing","doQuickCompare","localeCompare","ColumnKeyCreator","existingKeys","addExistingKeys","getUniqueKey","colField","idToTry","iterateObject","cloneObject","deepCloneDefinition","keysToSkip","sourceIsSimpleObject","isNonNullObject","copyPropertyIfPresent","getAllKeysInObjects","allValues","getAllValuesInObject","anyObject","ret","mergeDeep","copyUndefined","makeCopyOfSimpleObjects","sourceValue","destValue","getValueUsingField","fieldContainsDots","currentObject","removeAllReferences","objectName","ObjectUtils","deepCloneObject","copyPropertiesIfPresent","missingOrEmptyObject","expression","objectToRead","objectToUpdate","doOnceFlags","doOnce","getFunctionName","funcConstructor","executeInAWhile","funcs","executeAfter","executeNextVMTurnFuncs","executeNextVMTurnPending","executeNextVMTurn","funcsCopy","previousCall","currentCall","waitUntil","timeoutMessage","interval","executed","internalCallback","reachedTimeout","callIfPresent","FunctionUtils","compose","fns","composed","__read$w","Context","beanWrappers","destroyed","beanClasses","contextParams","createBeans","beanInstances","getBeanInstances","wireBeans","beanEntry","beanInstance","createBean","bean","afterPreCreateCallback","autoWireBeans","methodWireBeans","callLifeCycleMethods","createBeanWrapper","constructorParamsMeta","__agBeanMetaData","autowireMethods","agConstructor","constructorParams","getBeansForParameters","newInstance","__spread$p","createdBeanNames","BeanClass","metaData","beanName","forEachMetaDataInHierarchy","agClassAttributes","otherBean","lookupBeanInstance","wireParams","initParams","getBeanName","constructorString","beansList","paramIndex","otherBeanName","wiringBean","providedBeanInstances","lifeCycleMethod","callLifeCycleMethodsOnBean","methodToIgnore","allMethods","methods","getBean","destroyBeans","destroyBean","beans","beanAny","PreConstruct","getOrCreateProps$1","preConstructMethods","PostConstruct","postConstructMethods","PreDestroy","preDestroyMethods","Bean","classConstructor","Autowired","propertyKey","autowiredFunc","Optional","classPrototype","methodOrAttributeName","Qualifier","ModuleNames","__decorate$2z","__param$a","decorator","EventService","allSyncListeners","allAsyncListeners","globalSyncListeners","globalAsyncListeners","asyncFunctionsQueue","scheduled","firedEvents","setBeans","loggerFactory","gridOptionsService","frameworkOverrides","globalEventListener","useAsyncEvents","addGlobalListener","getListeners","autoCreateListenerCollection","listenerMap","noRegisteredListenersExist","removeGlobalListener","agEvent","columnApi","dispatchToListeners","dispatchEventOnce","browserEvent","eventPath","composedPath","dispatchAsync","processEventListeners","flushAsyncQueue","queueCopy","ModuleRegistry","moduleBased","runVersionChecks","modulesMap","setModuleBased","currentModuleVersion","errorResult","setIsBundled","isBundled","registerModules","assertRegistered","isRegistered","warningMessage","warningKey","modName","__read$v","getRegisteredModules","isPackageBased","__decorate$2y","__read$u","instanceIdSequence$4","getNextColInstanceId","Column","colDef","userProvidedColDef","instanceId","autoHeaderHeight","moving","menuVisible","filterActive","eventService","tooltipEnabled","rowGroupActive","pivotActive","aggregationActive","getInstanceId","initialSort","sortIndex","initialSortIndex","initialHide","pinned","setPinned","initialPinned","initialFlex","setColDef","initMinAndMaxWidths","initDotNotation","createColumnEvent","getUserProvidedColDef","setParent","getParent","setOriginalParent","originalParent","getOriginalParent","initialise","resetActualWidth","initTooltip","suppressDotNotation","is","tooltipFieldContainsDots","tooltipField","columnUtils","calculateColMinWidth","calculateColMaxWidth","tooltipValueGetter","tooltipComponent","tooltipComponentFramework","initialWidth","calculateColInitialWidth","setActualWidth","isEmptyGroup","isRowGroupDisplayed","showRowGroup","showingAllGroups","showingThisGroup","isFilterAllowed","filterFramework","isFieldContainsDots","isTooltipEnabled","isTooltipFieldContainsDots","colDefAny","warnOnce","isRowModelType","RowGroupingModule","itemsUsed","cellEditor","RichSelectModule","isTreeData","menuTabs","communityMenuTabs_1","enterpriseMenuTabs_1","MenuModule","tab","__spread$o","columnsMenuParams","ColumnsToolPanelModule","pinnedRowCellRenderer","pinnedRowCellRendererParams","pinnedRowCellRendererFramework","columnGroupShow","createColumnFunctionCallbackParams","rowNode","isSuppressNavigable","suppressNavigable","userFunc","isCellEditable","isColumnFunc","isSuppressFillHandle","suppressFillHandle","isAutoHeight","autoHeight","isAutoHeaderHeight","isRowDrag","rowDrag","isDndSource","dndSource","isCellCheckboxSelection","checkboxSelection","isSuppressPaste","suppressPaste","isResizable","resizable","setMoving","isMoving","getSort","setSort","setMenuVisible","isMenuVisible","isSortAscending","isSortDescending","isSortNone","isSorting","getSortIndex","setSortIndex","sortOrder","setAggFunc","aggFunc","getAggFunc","getLeft","getOldLeft","oldLeft","getRight","actualWidth","setLeft","isFilterActive","setFilterActive","additionalEventAttributes","filterChangedEvent","isHovered","columnHoverService","setFirstRightPinned","firstRightPinned","setLastLeftPinned","lastLeftPinned","isFirstRightPinned","isLastLeftPinned","isPinned","isPinnedLeft","isPinnedRight","getPinned","isSpanHeaderHeight","getColDef","spanHeaderHeight","getColumnGroupShow","getColId","getId","getUniqueId","getDefinition","getActualWidth","getAutoHeaderHeight","setAutoHeaderHeight","createBaseColDefParams","getColSpan","colSpan","getRowSpan","rowSpan","silent","fireColumnWidthChangedEvent","isGreaterThanMax","getMinWidth","getMaxWidth","getFlex","setFlex","setMinimum","setRowGroupActive","rowGroup","isRowGroupActive","setPivotActive","isPivotActive","isAnyFunctionActive","isValueActive","isAnyFunctionAllowed","isAllowPivot","isAllowRowGroup","isAllowValue","setValueActive","enablePivot","enableValue","enableRowGroup","getMenuTabs","EVENT_MOVING_CHANGED","EVENT_LEFT_CHANGED","EVENT_WIDTH_CHANGED","EVENT_LAST_LEFT_PINNED_CHANGED","EVENT_FIRST_RIGHT_PINNED_CHANGED","EVENT_VISIBLE_CHANGED","EVENT_FILTER_CHANGED","EVENT_FILTER_ACTIVE_CHANGED","EVENT_SORT_CHANGED","EVENT_COL_DEF_CHANGED","EVENT_MENU_VISIBLE_CHANGED","EVENT_ROW_GROUP_CHANGED","EVENT_PIVOT_CHANGED","EVENT_VALUE_CHANGED","ProvidedColumnGroup","colGroupDef","groupId","localEventService","expandable","expandableListenerRemoveCallback","expanded","openByDefault","isPadding","setExpanded","EVENT_EXPANDED_CHANGED","isExpandable","isExpanded","getGroupId","setChildren","getColGroupDef","getLeafColumns","addLeafColumns","leafColumns","setupExpandable","setExpandable","onColumnVisibilityChanged","atLeastOneShowingWhenOpen","atLeastOneShowingWhenClosed","atLeastOneChangeable","findChildrenRemovingPadding","abstractColumn","headerGroupShow","EVENT_EXPANDABLE_CHANGED","__decorate$2x","DefaultColumnTypes","numericColumn","headerClass","cellClass","rightAligned","firstExistingValue","areEqual","comparator","sortNumerically","removeFromArray","removeAllFromArray","toRemove","insertIntoArray","toIndex","moveInArray","objectsToMove","arrayOfArrays","pushAll","ArrayUtils","existsAndNotEmpty","shallowCompare","removeRepeatsFromArray","thisOneMatches","nextOneMatches","insertArrayIntoArray","toStrings","forEachReverse","AG_GRID_STOP_PROPAGATION","PASSIVE_EVENTS$1","supports","stopPropagationForAgGrid","isStopPropagationForAgGrid","isEventSupported","change","submit","getCtrlForEventTarget","sourceElement","renderedComp","getDomData","isElementInEventPath","getEventPath","createEventPath","pointer","eventNoType","addSafePassiveEventListener","eElement","EventUtils","__decorate$2w","BeanStub","destroyFunctions","__v_skip","getFrameworkOverrides","EVENT_DESTROYED","dispatchEventAsync","addManagedListener","destroyFunc","addManagedPropertyListener","addDestroyFunc","createManagedBean","__extends$2S","__decorate$2v","ColumnFactory","createColumnTree","defs","primaryColumns","existingTree","columnKeyCreator","extractExistingTreeData","existingCols","existingGroups","existingColKeys","unbalancedTree","recursivelyCreateColumns","treeDept","findMaxDept","columnTree","balanceColumnTree","depthFirstOriginalTreeSearch","createForAutoGroups","autoGroupCols","gridBalancedTree","createAutoGroupTreeItem","balancedColumnTree","nextChild","findDepth","autoGroup","dept","currentDept","columnDept","originalGroup","newChildren","firstPaddedGroup","currentPaddedGroup","newColId","colGroupDefMerged","createMergedColGroupDef","paddedGroup","treeChildren","maxDeptThisLevel","newDept","existingColsCopy","isColumnGroup","createColumnGroup","createColumn","existingColumns","providedGroup","existingGroup","findExistingGroup","colDefMerged","mergeColDefs","findExistingColumn","applyColumnState","widthBeforeUpdate","newColDef","existingCol","existingColDef","newHasId","newHasField","newGroupDef","defaultColDef","columnType","assignColumnTypes","autoGroupColDef","isSortingCoupled","isColumnsSortingCoupledToGroup","typeKeys","allColumnTypes","typeColDef","abstractColDef","ColDefUtil","ColDefPropertyMap","headerName","toolPanelClass","headerValueGetter","pivotKeys","headerTooltip","initialAggFunc","defaultAggFunc","chartDataType","cellEditorPopupPosition","headerGroupComponent","headerGroupComponentFramework","headerGroupComponentParams","cellStyle","cellRenderer","cellRendererParams","cellRendererFramework","cellEditorFramework","cellEditorParams","filterParams","pivotValueColumn","headerComponent","headerComponentFramework","headerComponentParams","floatingFilterComponent","floatingFilterComponentParams","floatingFilterComponentFramework","tooltipComponentParams","refData","sortingOrder","allowedAggFuncs","pivotTotalColumnIds","cellClassRules","rowGroupIndex","initialRowGroupIndex","pivotIndex","initialPivotIndex","suppressCellFlash","suppressColumnsToolPanel","suppressFiltersToolPanel","marryChildren","stickyLabel","initialRowGroup","initialPivot","showDisabledCheckboxes","headerCheckboxSelection","headerCheckboxSelectionFilteredOnly","headerCheckboxSelectionCurrentPageOnly","suppressMenu","suppressMovable","lockPosition","lockVisible","lockPinned","unSortIcon","suppressSizeToFit","suppressAutoSize","enableCellChangeFlash","wrapText","sortable","singleClickEdit","floatingFilter","cellEditorPopup","wrapHeaderText","dndSourceOnRowDrag","valueGetter","valueSetter","filterValueGetter","keyCreator","valueFormatter","valueParser","pivotComparator","suppressKeyboardEvent","suppressHeaderKeyboardEvent","getQuickFilterText","onCellValueChanged","onCellClicked","onCellDoubleClicked","onCellContextMenu","rowDragText","cellRendererSelector","cellEditorSelector","ALL_PROPERTIES","FRAMEWORK_PROPERTIES","Events","EVENT_COLUMN_EVERYTHING_CHANGED","EVENT_NEW_COLUMNS_LOADED","EVENT_COLUMN_PIVOT_MODE_CHANGED","EVENT_COLUMN_ROW_GROUP_CHANGED","EVENT_EXPAND_COLLAPSE_ALL","EVENT_COLUMN_PIVOT_CHANGED","EVENT_GRID_COLUMNS_CHANGED","EVENT_COLUMN_VALUE_CHANGED","EVENT_COLUMN_MOVED","EVENT_COLUMN_VISIBLE","EVENT_COLUMN_PINNED","EVENT_COLUMN_GROUP_OPENED","EVENT_COLUMN_RESIZED","EVENT_DISPLAYED_COLUMNS_CHANGED","EVENT_VIRTUAL_COLUMNS_CHANGED","EVENT_ASYNC_TRANSACTIONS_FLUSHED","EVENT_ROW_GROUP_OPENED","EVENT_ROW_DATA_CHANGED","EVENT_ROW_DATA_UPDATED","EVENT_PINNED_ROW_DATA_CHANGED","EVENT_RANGE_SELECTION_CHANGED","EVENT_CHART_CREATED","EVENT_CHART_RANGE_SELECTION_CHANGED","EVENT_CHART_OPTIONS_CHANGED","EVENT_CHART_DESTROYED","EVENT_TOOL_PANEL_VISIBLE_CHANGED","EVENT_TOOL_PANEL_SIZE_CHANGED","EVENT_INTERNAL_TOOL_PANEL_VISIBLE_CHANGED","EVENT_COLUMN_PANEL_ITEM_DRAG_START","EVENT_COLUMN_PANEL_ITEM_DRAG_END","EVENT_MODEL_UPDATED","EVENT_PASTE_START","EVENT_PASTE_END","EVENT_FILL_START","EVENT_FILL_END","EVENT_UNDO_STARTED","EVENT_UNDO_ENDED","EVENT_REDO_STARTED","EVENT_REDO_ENDED","EVENT_KEY_SHORTCUT_CHANGED_CELL_START","EVENT_KEY_SHORTCUT_CHANGED_CELL_END","EVENT_CELL_CLICKED","EVENT_CELL_DOUBLE_CLICKED","EVENT_CELL_MOUSE_DOWN","EVENT_CELL_CONTEXT_MENU","EVENT_CELL_VALUE_CHANGED","EVENT_CELL_EDIT_REQUEST","EVENT_ROW_VALUE_CHANGED","EVENT_CELL_FOCUSED","EVENT_CELL_FOCUS_CLEARED","EVENT_FULL_WIDTH_ROW_FOCUSED","EVENT_ROW_SELECTED","EVENT_SELECTION_CHANGED","EVENT_CELL_KEY_DOWN","EVENT_CELL_KEY_PRESS","EVENT_CELL_MOUSE_OVER","EVENT_CELL_MOUSE_OUT","EVENT_FILTER_MODIFIED","EVENT_FILTER_OPENED","EVENT_VIRTUAL_ROW_REMOVED","EVENT_ROW_CLICKED","EVENT_ROW_DOUBLE_CLICKED","EVENT_GRID_READY","EVENT_GRID_SIZE_CHANGED","EVENT_VIEWPORT_CHANGED","EVENT_SCROLLBAR_WIDTH_CHANGED","EVENT_FIRST_DATA_RENDERED","EVENT_DRAG_STARTED","EVENT_DRAG_STOPPED","EVENT_CHECKBOX_CHANGED","EVENT_ROW_EDITING_STARTED","EVENT_ROW_EDITING_STOPPED","EVENT_CELL_EDITING_STARTED","EVENT_CELL_EDITING_STOPPED","EVENT_BODY_SCROLL","EVENT_BODY_SCROLL_END","EVENT_HEIGHT_SCALE_CHANGED","EVENT_PAGINATION_CHANGED","EVENT_COMPONENT_STATE_CHANGED","EVENT_STORE_REFRESHED","EVENT_BODY_HEIGHT_CHANGED","EVENT_DISPLAYED_COLUMNS_WIDTH_CHANGED","EVENT_SCROLL_VISIBILITY_CHANGED","EVENT_COLUMN_HOVER_CHANGED","EVENT_FLASH_CELLS","EVENT_PAGINATION_PIXEL_OFFSET_CHANGED","EVENT_DISPLAYED_ROWS_CHANGED","EVENT_LEFT_PINNED_WIDTH_CHANGED","EVENT_RIGHT_PINNED_WIDTH_CHANGED","EVENT_ROW_CONTAINER_HEIGHT_CHANGED","EVENT_HEADER_HEIGHT_CHANGED","EVENT_COLUMN_HEADER_HEIGHT_CHANGED","EVENT_ROW_DRAG_ENTER","EVENT_ROW_DRAG_MOVE","EVENT_ROW_DRAG_LEAVE","EVENT_ROW_DRAG_END","EVENT_GRID_STYLES_CHANGED","EVENT_POPUP_TO_FRONT","EVENT_COLUMN_ROW_GROUP_CHANGE_REQUEST","EVENT_COLUMN_PIVOT_CHANGE_REQUEST","EVENT_COLUMN_VALUE_CHANGE_REQUEST","EVENT_COLUMN_AGG_FUNC_CHANGE_REQUEST","EVENT_KEYBOARD_FOCUS","EVENT_MOUSE_FOCUS","EVENT_STORE_UPDATED","EVENT_FILTER_DESTROYED","__read$t","__spread$n","PropertyKeys","STRING_PROPERTIES","OBJECT_PROPERTIES","ARRAY_PROPERTIES","NUMBER_PROPERTIES","BOOLEAN_PROPERTIES","FUNCTIONAL_PROPERTIES","CALLBACK_PROPERTIES","FUNCTION_PROPERTIES","__assign$l","__read$s","ComponentUtil","getCallbackForEvent","getCoercionLookup","coercionLookup","__spread$m","EVENT_CALLBACKS","coercionStep","toBoolean","getGridOptionKeys","isVue","copyAttributesToGridOptions","gridOptions","pGridOptions","coercedValue","processOnChange","changes","changesToApply","columnTypes","setColumnTypes","currentValue","autoGroupColumnDef","setAutoGroupColumnDef","setDefaultColDef","columnDefs","setColumnDefs","gridKey","__setProperty","EXCLUDED_INTERNAL_EVENTS","PUBLIC_EVENTS","ALL_PROPERTIES_SET","fuzzyCheckStrings","inputValues","validValues","allSuggestions","fuzzyMatches","invalidInputs","inputValue","validValue","invalidInput","fuzzySuggestions","hideIrrelevant","filterByPercentageOfBestMatch","thisSuggestions","relevance","stringWeightedDistances","limit_1","str1","str2","weight","FuzzyMatchUtils","__decorate$2u","__read$r","__spread$l","logDeprecation","newPropMsg","GridOptionsValidator","deprecatedProperties","serverSideInfiniteScroll","rememberGroupStateWhenNewData","suppressEnterpriseResetOnNewColumns","suppressColumnStateEvents","defaultExportParams","stopEditingWhenGridLosesFocus","copyToNewProp","applyColumnDefOrder","groupMultiAutoColumn","newPropValue","groupUseEntireRow","defaultGroupSortComparator","enableMultiRowDragging","colWidth","minColWidth","maxColWidth","reactUi","suppressCellSelection","clipboardDeliminator","getRowNodeId","defaultGroupOrderComparator","groupRowAggNodes","postSort","isFullWidthCell","localeTextFunc","serverSideFilteringAlwaysResets","serverSideSortingAlwaysResets","suppressReactUi","processSecondaryColDef","processSecondaryColGroupDef","getServerSideStoreParams","enableChartToolPanelsButton","functionsPassive","onColumnRowGroupChangeRequest","onColumnPivotChangeRequest","onColumnValueChangeRequest","onColumnAggFuncChangeRequest","pickOneWarning","prop1","prop2","checkForDeprecated","checkForViolations","suppressPropertyNamesCheck","checkGridOptionsProperties","checkColumnDefProperties","checkColumnDefViolations","domLayout","RangeSelectionModule","validateRegistered","SideBarModule","StatusBarModule","GridChartsModule","validProperties","validateColDef","userProperties","checkProperties","rowModel","unsupportedProperties","infinite","serverSide","clientSide","validPropertiesAndExceptions","containerName","docsUrl","invalidProperties","oldPropValue","groupSuppressAutoColumn","treeData","immutableData","getRowId","serverSideStoreType","suppressServerSideInfiniteScroll","treeDataViolations","matchesGroupDisplayType","toMatch","supplied","groupDisplayTypeValues","ColumnGroup","providedColumnGroup","partId","displayedChildren","createUniqueId","allLeafColumns","getProvidedColumnGroup","checkLeft","lastChildLeft","firstChildLeft","createAgEvent","getPartId","isChildInThisGroupDeepSearch","wantedChild","foundChild","groupActualWidth","groupChild","addChild","getDisplayedChildren","getDisplayedLeafColumns","addDisplayedLeafColumns","getOriginalColumnGroup","getPaddingLevel","calculateDisplayedColumns","parentWithExpansion","EVENT_DISPLAYED_CHILDREN_CHANGED","__decorate$2t","GroupInstanceIdCreator","existingIds","getInstanceIdForKey","lastResult","__extends$2R","__decorate$2s","GROUP_AUTO_COLUMN_ID","AutoGroupColService","createAutoGroupColumns","rowGroupColumns","groupAutoColumns","doingTreeData","doingMultiAutoColumn","isGroupMultiAutoColumn","rowGroupCol","createOneAutoGroupColumn","defaultAutoColDef","generateDefaultColDef","columnFactory","newCol","userDef","localeService","getLocaleTextFunc","columnModel","getDisplayNameForColumn","innerRenderer","innerRendererFramework","innerRendererParams","reUnescapedHtml","HTML_ESCAPES","capitalise","escapeString","toEscape","skipEscapingHtmlChars","stringResult","chr","camelCaseToHumanText","camelCase","word","StringUtils","utf8_encode","stringFromCharCode","createByte","encodeCodePoint","symbol","checkScalarValue","codePoints","ucs2decode","byteString","convertToMap","pair","MapUtils","mapById","__extends$2Q","__decorate$2r","__values$6","__read$q","__spread$k","ColumnModel","primaryHeaderRowCount","secondaryHeaderRowCount","gridHeaderRowCount","displayedColumnsLeft","displayedColumnsRight","displayedColumnsCenter","displayedColumns","displayedColumnsAndGroupsMap","viewportColumns","viewportColumnsHash","headerViewportColumns","viewportColumnsCenter","headerViewportColumnsCenter","autoHeightActiveAtLeastOnce","valueColumns","pivotColumns","autoGroupsNeedBuilding","forceRecreateAutoGroups","pivotMode","bodyWidth","leftWidth","rightWidth","bodyWidthDirty","suppressColumnVirtualisation","isPivotSettingAllowed","usingTreeData","onAutoGroupColumnDefChanged","onSharedColDefChanged","updateGridColumns","updateDisplayedColumns","createColumnsFromColumnDefs","colsPreviouslyExisted","destroyOldColumns","oldTree","newTree","oldObjectsById","colsToDestroy","destroyColumns","primaryColumnTree","secondaryBalancedTree","groupAutoColsBalancedTree","dispatchEventsFunc","compareColumnStatesAndDispatchEvents","valueCache","oldPrimaryColumns","oldPrimaryTree","balancedTreeResult","getColumnsFromTree","primaryColumnsMap","extractRowGroupColumns","extractPivotColumns","extractValueColumns","gridColsNotProcessed","gridColsArePrimary","orderGridColumnsLikePrimary","checkViewportColumns","dispatchEverythingChanged","dispatchNewColumnsLoaded","newColumnsLoadedEvent","eventEverythingChanged","gridColumns","colA","colB","primaryIndexA","primaryIndexB","indexAPresent","indexBPresent","placeLockedColumns","getAllDisplayedAutoHeightCols","displayedAutoHeightCols","setViewport","viewportLeft","scrollPosition","scrollWidth","viewportRight","getDisplayedColumnsStartingAt","currentColumn","getDisplayedColAfter","extractViewport","setViewportPosition","isPivotMode","setPivotMode","getSecondaryPivotColumn","valueColKey","secondaryColumns","valueColumnToFind","getPrimaryColumn","foundColumn","thisPivotKeys","setFirstRightAndLastLeftPinned","lastLeft","firstRight","autoSizeColumns","skipHeader","skipHeaderGroups","stopAtGroup","animationFrameService","flushAllFrames","columnsAutosized","changesThisTimeAround","shouldSkipHeader","shouldSkipHeaderGroups","actionOnGridColumns","preferredWidth","autoWidthCalculator","getPreferredWidthForColumn","normaliseColumnWidth","autoSizeColumnGroupsByColumns","dispatchColumnResizedEvent","finished","flexColumns","dispatchColumnChangedEvent","dispatchColumnMovedEvent","movedColumns","dispatchColumnPinnedEvent","changedColumns","getCommonValue","dispatchColumnVisibleEvent","autoSizeColumn","e_1","e_2","headerGroupCtrl","columnGroups","getGridColumns","columnGroups_1","columnGroups_1_1","columnGroup","ctrlsService","getHeaderRowContainerCtrls","getHeaderCtrlForColumn","e_2_1","resizeLeafColumnsToFit","e_1_1","autoSizeAllColumns","allDisplayedColumns","getAllDisplayedColumns","rootColumns","recursiveFindColumns","childColumns","getAllDisplayedTrees","displayedTreeLeft","displayedTreeRight","displayedTreeCentre","getPrimaryColumnTree","getHeaderRowCount","getDisplayedTreeLeft","getDisplayedTreeRight","getDisplayedTreeCentre","isColumnDisplayed","getViewportColumns","getDisplayedLeftColumnsForRow","colSpanActive","getDisplayedColumnsForRow","getDisplayedRightColumnsForRow","isColSpanActive","filterCallback","emptySpaceBeforeColumn","out_i_1","lastConsideredCol","_loop_1","filterPasses","maxAllowedColSpan","columnsToCheckFilter","colsToRemove","colForFilter","getViewportCenterColumnsForRow","isColumnInRowViewport","getAriaColumnIndex","getAllGridColumns","isColumnInHeaderViewport","columnLeft","columnRight","leftBounds","rightBounds","getDisplayedColumnsLeftWidth","getWidthOfColsInList","getDisplayedColumnsRightWidth","updatePrimaryColumnList","masterList","actionIsAdd","columnCallback","atLeastOne","columnToAdd","setRowGroupColumns","colKeys","setPrimaryColumnList","setColumnVisible","addRowGroupColumn","addRowGroupColumns","removeRowGroupColumns","removeRowGroupColumn","addPivotColumns","setPivotColumns","added","addPivotColumn","removePivotColumns","removePivotColumn","setValueColumns","aggFuncService","getDefaultAggFunc","addValueColumns","addValueColumn","colKey","removeValueColumn","removeValueColumns","getPrimaryOrGridColumn","getGridColumn","setColumnWidths","columnWidths","sets","columnWidth","ratios","otherCol","widthDiff","otherColWidth","resizeColumnSets","resizeSets","checkMinAndMaxWidthsForSet","columnResizeSet","minWidthAccumulated","maxWidthAccumulated","maxWidthActive","changedCols","allResizedCols","newWidths","finishedCols","finishedColsGrew","loopCount","_loop_2","subsetCols","subsetRatioTotal","pixelsToDistribute","ratioThisCol","ratioScale","colNewWidth","atLeastOneColChanged","flexedCols","refreshFlexedColumns","resizingCols","skipSetLeft","setLeftValues","updateBodyWidths","colsForEvent","setColumnAggFunc","moveRowGroupColumn","fromIndex","moveColumns","columnsToMoveKeys","columnAnimationService","doesMovePassRules","columnsToMove","proposedColumnOrder","getProposedColumnOrder","doesOrderPassRules","gridOrder","doesMovePassMarryChildren","doesMovePassLockedPositions","sortColumnsLikeGridColumns","lastPlacement","rulePassed","placement","allColumnsCopy","newIndexes","newColIndex","moveColumn","moveColumnByIndex","getColumnDefs","lastPrimaryOrder","columnDefFactory","buildColumnDefs","getBodyContainerWidth","getContainerWidth","newBodyWidth","newLeftWidth","newRightWidth","event_2","getValueColumns","getPivotColumns","getRowGroupColumns","getDisplayedCenterColumns","getDisplayedLeftColumns","getDisplayedRightColumns","getDisplayedColumns","getAllPrimaryColumns","getSecondaryColumns","getAllColumnsForQuickFilter","columnsForQuickFilter","isRowGroupEmpty","setColumnsVisible","setColumnPinned","setColumnsPinned","actualPinned","isDomLayout","updatedColumns","event_3","getDisplayedColBefore","oldIndex","getDisplayedGroupAfter","getDisplayedGroupAtDirection","getDisplayedGroupBefore","requiredLevel","colGroupLeafColumns","getDisplayColMethod","groupPointer","getColumnGroupAtLevel","isPinningLeft","isPinningRight","getPrimaryAndSecondaryAndAutoColumns","createStateItemFromColumn","getColumnState","orderColumnStateList","columnStateList","colIdToGridIndexMap","itemA","itemB","resetColumnState","columnStates","letRowGroupIndex","letPivotIndex","colsToProcess","getValueOrNull","stateItem","applyOrder","applyStates","states","getById","columnsWithNoState","rowGroupIndexes","pivotIndexes","autoGroupColumnStates","unmatchedAndAutoStates","unmatchedCount","previousRowGroupCols","previousPivotCols","syncColumnWithStateItem","defaultState","applyDefaultsFunc","oldList","indexA","indexB","aHasIndex","bHasIndex","oldIndexA","oldIndexB","aHasOldIndex","autoGroupColsCopy","autoCol","getAutoColumn","applyOrderAfterApplyState","getSecondaryColumn","newOrder","processedColIds","gridColumnsMap","autoGroupInsertIndex","startState","columnStateBefore","columnStateBeforeMap","colsForState","dispatchWhenListsDifferent","colsBefore","colsAfter","idMapper","getChangedColumns","changedPredicate","colStateBefore","columnIdMapper","cs","oldActive","activeChanged","aggFuncChanged","sortController","dispatchSortChangedEvents","normaliseColumnMovedEventForColumnState","firstValue","colStateAfter","colStateAfterMapped","colsIntersectIds","beforeFiltered","afterFiltered","csAfter","csBefore","gridCol","key1","key2","calculated","getColumns","columnLookupCallback","foundColumns","getColumnWithValidation","secondaryColumnsMap","columnList","columnMap","columnsMatch","getSourceColumnsForGroupColumn","groupCol","sourceColumnId","columnMatches","colDefMatches","idMatches","includeAggFunc","getHeaderName","wrapHeaderNameWithAggFunc","getDisplayNameForProvidedColumnGroup","getDisplayNameForColumnGroup","expressionService","evaluate","aggFuncFound","isCollapsedHeaderEnabled","isTotalColumn","measureActive","aggregationPresent","aggFuncString","getColumnGroup","allColumnGroups","checkPartId","depthFirstAllColumnTreeSearch","isReady","extractColumns","previousCols","setFlagFunc","getIndexFunc","getInitialIndexFunc","getValueFunc","getInitialValueFunc","colsWithIndex","colsWithValue","colIsNew","getIndexForCol","defaultIndex","resetColumnGroupState","stateItems","groupState","setColumnGroupState","getColumnGroupState","columnGroupState","impactedGroups","groupKey","updateGroupsAndDisplayedColumns","setColumnGroupOpened","keyAsString","calculateColumnsForDisplay","isAutoGroupCol","isValueCol","checkColSpanActiveInCols","calculateColumnsForGroupDisplay","groupDisplayColumns","groupDisplayColumnsMap","checkFunc","underlyingColumn","getGroupDisplayColumns","getGroupDisplayColumnForGroup","rowGroupColumnId","columnsForDisplay","buildDisplayedTrees","isSecondaryColumnsPresent","setSecondaryColumns","colDefs","newColsPresent","processSecondaryColumnDefinitions","previousSecondaryColumns","groupCallback","searchForColDefs","colDefs2","sortOrderToRecover","prevGridCols","lastSecondaryOrder","hasSameColumns","createGroupAutoColumnsIfNeeded","groupAutoColsMap_1","addAutoGroupToGridColumns","orderGridColsLike","refreshQuickFilterColumns","clearDisplayedAndViewportColumns","setAutoHeightActive","event_4","autoHeightActive","colsOrder","lastOrderMapped","noColsFound","gridColsMap","oldColsOrdered","oldColsMap","newColsOrdered","newGridColumns","siblings","leafCol","presentInNewGriColumns","noYetInSiblings","isPrimaryColumnGroupsPresent","newAutoColsTree","viewportRowLeft","viewportRowRight","viewportRowCenter","updateOpenClosedVisibilityInColumnGroups","deriveDisplayedColumns","derivedDisplayedColumnsFromDisplayedTree","joinDisplayedColumns","isAutoRowHeightActive","wasAutoRowHeightEverActive","setLeftValuesOfColumns","setLeftValuesOfGroups","allColumns","doingRtl","left_1","left_2","depthFirstDisplayedColumnTreeSearch","extractViewportColumns","getVirtualHeaderGroupRow","calculateHeaderRows","virtualColIds","testGroup","addThisItem","newHash","viewportWidth","flexViewportWidth","flexAfterDisplayIndex","indexOfCol","isColFlex","afterResizingCols","knownWidthColumns","flexingColumns","spaceForFlexingColumns","flexingColumnSizes","outer","totalFlex","widthByFlexRule","constrainedWidth","remainingSpace","fireResizedEvent","sizeColumnsToFit","gridWidth","limitsMap","columnLimits","doColumnsAlreadyFit","colsToSpread","colsToNotSpread","colsToDispatchEventFor","finishedResizing","moveToNotSpread","availablePixels","widthOverride","defaultMinWidth","pixelsForLastCol","minOverride","maxOverride","defaultMaxWidth","colMinWidth","colMaxWidth","visibleColumns","leftVisibleColumns","rightVisibleColumns","centerVisibleColumns","groupInstanceIdCreator","displayedGroupCreator","createDisplayedGroups","updateDisplayedMap","isDisplayed","getGroupAutoColumns","groupFullWidthRow","isGroupUseEntireRow","suppressAutoColumn","isGroupSuppressAutoColumn","newAutoGroupCols","autoGroupColService","autoColsEqual","groupDisplayType","treeDataDisplayTypeValues","treeDataDisplayType","colsA","colsB","getGridBalancedTree","hasFloatingFilters","getFirstDisplayedColumn","isRtl","queryOrder","setColumnHeaderHeight","event_5","getColumnGroupHeaderRowHeight","getPivotGroupHeaderHeight","getGroupHeaderHeight","getColumnHeaderRowHeight","getPivotHeaderHeight","getHeaderHeight","displayedHeights","getNum","environment","getFromTheme","getFloatingFiltersHeight","__extends$2P","ColumnUtils","getMinColWidth","colDefWidth","colDefInitialWidth","getOriginalPathForColumn","originalBalancedTree","recursePath","__decorate$2q","__extends$2O","DisplayedGroupCreator","sortedVisibleColumns","oldDisplayedGroups","previousRealPath","previousOriginalPath","oldColumnsMapped","mapOldGroupsById","currentOriginalPath","currentRealPath","firstColumn","newGroup","setupParentsIntoColumns","displayedGroups","columnsOrGroups","columnOrGroup","columnsOrGroup","__decorate$2p","__extends$2N","AgStackComponentsRegistry","componentsMappedByName","setupComponents","componentMeta","addComponent","classUpperCase","getComponentClass","htmlTag","__decorate$2o","toggleAriaAttribute","removeAriaAttribute","setAriaAttribute","ariaAttributeName","removeAttribute","setAriaRole","role","getAriaSortState","sortDirection","getAriaLevel","getAriaPosInSet","setAriaLabel","setAriaLabelledBy","labelledBy","setAriaDescription","setAriaDescribedBy","describedby","setAriaLevel","setAriaDisabled","setAriaHidden","hidden","setAriaExpanded","removeAriaExpanded","setAriaSetSize","setsize","setAriaPosInSet","setAriaMultiSelectable","multiSelectable","setAriaRowCount","rowCount","setAriaRowIndex","setAriaColCount","colCount","setAriaColIndex","colIndex","setAriaColSpan","setAriaSort","removeAriaSort","setAriaSelected","setAriaChecked","checked","safariVersion","isChrome","isFirefox","isMacOs","isIOS","invisibleScrollbar","browserScrollbarWidth","AriaUtils","getAriaDescribedBy","setAriaLive","live","isBrowserSafari","getSafariVersion","versionMatch","isBrowserChrome","win","webstore","runtime","isBrowserFirefox","isMacOsUserAgent","platform","isIOSUserAgent","maxTouchPoints","browserSupportsPreventScroll","getTabIndex","numberTabIndex","tabIndex","getMaxDivHeight","testUpTo","getBodyWidth","getBodyHeight","getScrollbarWidth","initScrollbarWidthAndVisibility","msOverflowStyle","isInvisibleScrollbar","BrowserUtils","padStartWidthZeros","totalStringSize","createArrayOfNumbers","formatNumberCommas","thousandSeparator","decimalSeparator","NumberUtils","cleanNumber","decToHex","formatNumberTwoDecimalPlacesAndCommas","zeroOrGreater","oneOrGreater","valueNumber","__read$p","serialiseDate","includeTime","separator","serialised","getFullYear","getMonth","getHours","getMinutes","getSeconds","calculateOrdinal","dateToFormattedString","fullYear","months","days","YYYY","YY","MMMM","MMM","MM","DD","dddd","ddd","dd","do","regexp","parseDateTimeFromString","dateStr","timeStr","year","month","day","hours","minutes","seconds","setHours","setMinutes","setSeconds","rtlNegativeScroll","DateUtils","__read$o","FOCUSABLE_SELECTOR","FOCUSABLE_EXCLUDE","isFocusableFormField","msMatchesSelector","isFocusable","isNotFocusable","isElementVisible","setDisplayed","displayed","skipAriaHidden","toggle","setDisabled","addOrRemoveDisabledAttribute","nodeListForEach","isElementChildOfClass","maxNest","getElementSize","getInnerHeight","getInnerWidth","getAbsoluteHeight","getAbsoluteWidth","marginWidth","isRtlNegativeScroll","scrollLeft","getScrollLeft","rtl","setScrollLeft","clearElement","removeFromParent","loadTemplate","tempDiv","ensureDomOrder","eContainer","eChild","eChildBefore","focusedEl","activeElement","eChildHasFocus","insertAdjacentElement","preventScroll","setDomChildOrder","orderedChildren","correctCellAtIndex","actualCellAtIndex","insertWithDomOrder","eToInsert","addStylesToElement","__values$5","parsedKey","valueAsString","isHorizontalScrollShowing","isVerticalScrollShowing","setElementWidth","setFixedWidth","formatSize","setFixedHeight","isNodeOrElement","copyNodeList","nodeList","iterateNamedNodeMap","attr","addOrRemoveAttribute","DomUtils","radioCssClass","elementClass","otherElementClass","removeElement","cssSelector","appendHtml","htmlTemplate","lastChild","getElementAttribute","prependDC","documentFragment","setElementHeight","iconNameClassMap","columnGroupOpened","columnGroupClosed","columnSelectClosed","columnSelectOpen","columnSelectIndeterminate","columnMovePin","columnMoveHide","columnMoveMove","columnMoveLeft","columnMoveRight","columnMoveGroup","columnMoveValue","columnMovePivot","dropNotAllowed","groupContracted","groupExpanded","setFilterGroupClosed","setFilterGroupOpen","setFilterGroupIndeterminate","chart","linked","unlinked","colorPicker","groupLoading","menu","maximize","minimize","menuPin","menuValue","menuAddRowGroup","menuRemoveRowGroup","clipboardCopy","clipboardCut","clipboardPaste","pivotPanel","rowGroupPanel","valuePanel","columnDrag","csvExport","excelExport","smallDown","smallLeft","smallRight","smallUp","sortAscending","sortDescending","sortUnSort","createIcon","iconName","iconContents","createIconNoSpan","eResult","forceCreate","userProvidedIcon","optionsIcons","span","cssClass","rendererResult","IconUtils","KeyCode","BACKSPACE","TAB","ENTER","ESCAPE","SPACE","LEFT","UP","RIGHT","DOWN","DELETE","F2","PAGE_UP","PAGE_DOWN","PAGE_HOME","PAGE_END","isEventFromPrintableCharacter","isUserSuppressingKeyboardEvent","keyboardEvent","editing","colDefFunc","isUserSuppressingHeaderKeyboardEvent","headerRowIndex","normaliseQwertyAzerty","keyCode","isDeleteKey","alwaysReturnFalseOnBackspace","KeyboardUtils","areEventsNear","e1","diffX","diffY","MouseUtils","RowNodeUtils","sortRowNodesByOrder","rowNodes","rowNodeOrder","nodeA","nodeB","__objectId","atLeastOneOutOfOrder","traverseNodesWithKey","keyParts","recursiveSearchNodes","currentNodes","childrenAfterGroup","convertToSet","AgPromiseStatus","SetUtils","__assign$k","NumberSequence","initValue","valToReturn","skip","TooltipStates","AgPromise","IN_PROGRESS","onReject","remainingToResolve","combinedValues","RESOLVED","resolveNow","ifNotResolvedValue","ifResolved","waiter","Timer","print","__extends$2M","__assign$j","__decorate$2n","CustomTooltipFeature","parentComp","DEFAULT_SHOW_TOOLTIP_DELAY","DEFAULT_HIDE_TOOLTIP_DELAY","SHOW_QUICK_TOOLTIP_DIFF","FADE_OUT_TOOLTIP_TIMEOUT","NOTHING","tooltipInstanceCount","tooltipMouseTrack","postConstruct","tooltipShowDelay","getTooltipDelay","tooltipHideDelay","getGui","onMouseEnter","onMouseLeave","onKeyDown","setToDoNothing","isLastTooltipHiddenRecently","showTooltipTimeoutId","showTooltip","lastMouseEvent","WAITING_TO_SHOW","SHOWING","hideTooltip","clearTimeouts","tooltipComp","positionTooltipUnderLastMouseEvent","capitalisedType","destroyTooltipComp","lastTooltipHideTime","tooltipPopupDestroyFunc","getTooltipParams","newTooltipComponentCallback","userComponentFactory","getTooltipCompDetails","newAgStackInstance","tooltipInstanceCopy","eGui","addPopupRes","popupService","addPopup","ariaLabel","hideFunc","hideTooltipTimeoutId","positionPopupUnderMouseEvent","mouseEvent","ePopup","nudgeY","skipObserver","CssClassManager","cssClassStates","addCssClass","removeCssClass","containsCssClass","addOrRemoveCssClass","addOrRemove","__extends$2L","__decorate$2m","compIdSequence","compId","cssClassManager","setTemplate","preConstructOnComponent","usingBrowserTooltips","getCompId","tooltipText","newTooltipText","tooltipFeature","createChildComponentsFromTags","paramsMap","childNode","childComp","createComponentFromElement","copyAttributesFromNode","addItems","swapComponentForNode","componentParams","ComponentClass","agStackComponentsRegistry","elementGettingCreated","newComponent","setParentComponent","eComponent","replaceChild","createComment","swapInComponentForQuerySelectors","thisNoType","iterateOverQuerySelectors","thisPrototype","__agComponentMetaData","currentProtoName","querySelectors","setTemplateFromElement","__agComponent","wireQuerySelectors","createChildComponentsPreConstruct","setResult","refSelector","resultOfQuery","getFocusableElement","parentComponent","getParentComponent","setGui","queryForHtmlElement","queryForHtmlInputElement","newChild","childComponent","EVENT_DISPLAYED_CHANGED","addGuiEventListener","getRefElement","refName","QuerySelector","querySelectorFunc","RefSelector","instanceName","getOrCreateProps","__extends$2K","__decorate$2l","ReadOnlyFloatingFilter","eFloatingFilterText","setInputAriaLabel","onParentModelChanged","parentModel","parentFilterInstance","filterInstance","getModelAsString","modelAsString","setValue","DateCompWrapper","dateComponentParams","eParent","alive","getDateCompDetails","dateComp","afterGuiAttached","tempValue","setDateCompDisabled","setInputPlaceholder","__assign$i","OptionsFactory","customFilterOptions","filterOptions","mapCustomOptions","selectDefaultItem","checkForDeprecatedParams","opt","hideFilterInput","getFilterOptions","filterOption","mutatedFilterOptions","cv","numberOfInputs","displayKey","defaultOption","firstFilterOption","getDefaultOption","getCustomOption","DEFAULT_FILTER_LOCALE_TEXT","applyFilter","clearFilter","resetFilter","cancelFilter","textFilter","numberFilter","dateFilter","setFilter","filterOoo","empty","notEqual","inRange","inRangeStart","inRangeEnd","notContains","blank","notBlank","andCondition","orCondition","dateFormatOoo","__extends$2J","__assign$h","__decorate$2k","ManagedFocusFeature","eFocusableElement","shouldStopEventPropagation","onTabKeyDown","nextRoot","focusService","findNextFocusableElement","FOCUS_MANAGED_CLASS","addKeyDownListeners","onFocusIn","onFocusOut","handleKeyDown","__extends$2I","__decorate$2j","RESIZE_CONTAINER_STYLE","RESIZE_TEMPLATE","PositionableFeature","dragStartPosition","lastSize","positioned","resizersAdded","resizeListeners","boundaryEl","isResizing","movable","currentResizer","offsetElement","initialisePosition","centered","forcePopupParentAsOffsetParent","setOffsetParent","computedMinHeight","computedMinWidth","findBoundaryElement","offsetParentComputedStyles","paddingWidth","paddingHeight","setWidth","setHeight","refreshSize","top_1","isPositioned","setMovable","moveElement","moveElementDragListener","onMoveStart","onMove","onDragStop","onMoveEnd","dragService","addDragSource","removeDragSource","setResizable","clearResizeListeners","addResizers","removeResizers","isSideResizable","resizerEl","getResizerElement","dragStartPixels","onResizeStart","onResizeEnd","removeSizeFromEl","restoreLastSize","isPercent","availableHeight","getAvailableHeight","elRect","offsetParentRect","yPosition","parentTop","additionalHeight","parentEl","xPosition","positionPopup","keepWithinBounds","updatePosition","constrainSizeToAvailableHeight","constrain","resizeObserverSubscriber","resizeObserverService","observeResize","getPopupParent","updateDragStartPosition","calculateMouseMovement","isLeft","isTop","anywhereWithin","topBuffer","xDiff","yDiff","movementX","shouldSkipX","movementY","shouldSkipY","diff","parentRect","boundaryElRect","skipX","skipY","createResizeMap","resizerMap","resizers","isRight","isBottom","applySizeToSiblings","getSiblings","getMinSizeOfSiblings","currentEl","isFlex","nextHeight","nextWidth","vertical","containerToFlex","isHorizontal","isVertical","skipWidth","skipHeight","calculateTopBuffer","__extends$2H","__decorate$2i","ProvidedFilter","filterNameKey","applyActive","hidePopup","debouncePending","appliedModel","resetTemplate","positionableFeature","getPositionableElement","getFilterTitle","onFormSubmit","templateString","getCssIdentifier","createBodyTemplate","isReadOnly","providedFilterParams","readOnly","setParams","resetUiToDefaults","updateUiVisibility","setupOnBtApplyDebounce","isUseApplyButton","createButtonPanel","buttons","eButtonsPanel","onBtApply","onBtClear","onBtReset","onBtCancel","addButton","getDefaultDebounceMs","debounceMs","getDebounceMs","debounceFunc","checkApplyDebounce","onBtApplyDebounce","setModel","setModelIntoUi","applyModel","resetUiToActiveModel","handleCancelEnd","closeOnApply","currentModel","afterUiUpdatedFunc","afterAppliedFunc","onUiChanged","newModel","getModelFromUi","isModelValid","previousModel","areModelsEqual","afterFloatingFilter","afterDataChange","filterChangedCallback","onNewRowsLoaded","fromFloatingFilter","filterModifiedCallback","refreshFilterResizer","containerType","isFloatingFilter","afterGuiDetached","debounceDefault","getCellValue","eFilterBody","__extends$2G","AgAbstractLabel","labelSeparator","labelAlignment","eLabel","labelWidth","setLabelSeparator","setLabelWidth","setLabelAlignment","refreshLabel","getLabelId","getLabel","alignment","eGuiClassList","setLabelEllipsis","hasEllipsis","isDisabled","__decorate$2h","__extends$2F","AgAbstractField","onValueChange","callbackFn","EVENT_CHANGED","getPreviousValue","__extends$2E","__decorate$2g","AgPickerField","pickerIcon","ariaRole","isPickerDisplayed","isDestroyingPicker","skipClick","displayId","eDisplayField","eWrapper","clickHandler","pickerComponent","showPicker","eIcon","setInputWidth","__extends$2D","AgList","cssIdentifier","itemEls","highlightedEl","setValueByIndex","isDown","itemToHighlight","nextPos","highlightItem","addOptions","listOptions","listOption","addOption","sanitisedText","renderOption","updateIndices","itemEl","clearHighlighted","fireItemSelected","displayValue","fireChangeEvent","getDisplayValue","refreshHighlighted","ACTIVE_CLASS","EVENT_ITEM_SELECTED","__decorate$2f","__extends$2C","__decorate$2e","AgSelect","listComponent","hideList","listGui","eDocument","getDocument","destroyMouseWheelFunc","destroyFocusOutFunc","relatedTarget","closeOnEsc","closedCallback","positionPopupByComponent","eventSource","fromPicker","__extends$2B","__decorate$2d","AgAbstractInputField","displayFieldTag","setInputType","eInput","addInputListeners","getInputElement","setInputName","setMaxLength","maxLength","__extends$2A","AgCheckbox","onCheckboxClick","getNextValue","setPassive","setReadOnly","dispatchChange","refreshSelectedClass","setSelected","setName","indeterminate","checkboxChangedEvent","__extends$2z","AgRadioButton","__extends$2y","__read$n","SimpleFilterModelFormatter","optionsFactory","isCombined","combinedModel","conditions","condition1","condition2","joinOperatorTranslateKey","SimpleFilter","BLANK","NOT_BLANK","customOption","conditionToString","eTypes","eJoinOperatorPanels","eJoinOperatorsAnd","eJoinOperatorsOr","eConditionBodies","lastUiCompletePosition","joinOperatorId","getNumberOfInputs","customOpts","zeroInputTypes","IN_RANGE","onFloatingFilterChanged","setTypeFromFloatingFilter","setValueFromFloatingFilter","eType","getUiCompleteConditions","maxNumConditions","getFilterType","getJoinOperator","getConditionTypes","getConditionType","defaultJoinOperator","aIsSimple","bIsSimple","aSimple","bSimple","areSimpleModelsEqual","aCombined","bCombined","aModel","bModel","numConditions","validateAndUpdateConditions","numPrevConditions","getNumConditions","removeConditionsAndOperators","createJoinOperatorPanel","createOption","orChecked_1","eJoinOperatorAnd","eJoinOperatorOr","setConditionIntoUi","simpleModel","createMissingConditionsAndOperators","doesFilterPass","__spread$j","individualConditionPasses","setNumConditions","getDefaultJoinOperator","filterPlaceholder","getDefaultFilterOptions","suppressAndOrCondition","alwaysShowBothConditions","numAlwaysVisibleConditions","eConditionBody","createValueElement","putOptionsIntoDropdown","resetType","forEachPositionInput","resetInput","addChangedListeners","eJoinOperatorPanel","createJoinOperator","uniqueGroupId","resetJoinOperatorAnd","resetJoinOperatorOr","eJoinOperators","andOr","eJoinOperator","createBoilerplateListOption","createCustomListOption","isAllowTwoConditions","joinOperator","updateNumConditions","updateConditionStatusesAndValues","areAllConditionsUiComplete","isConditionUiComplete","shouldAddNewConditionAtEnd","activePosition","removeStartPosition","numConditionsToRemove","isConditionDisabled","isConditionBodyVisible","orChecked","forEachInput","setElementDisplayed","setElementDisabled","resetPlaceholder","deleteCount","removeComponents","removeElements","removeValueElements","joinOperatorIndex","removeItems","suppressFocus","getInputs","updatedLastUiCompletePosition","conditionsRemoved","positionBeforeLastUiCompletePosition","shouldUpdateConditionStatusesAndValues","updateJoinOperatorsDisabled","getPlaceholderText","defaultPlaceholder","filterPlaceholderFn","filterOptionKey","globalTranslate","setElementValue","attachElementOnChange","forEachPositionTypeInput","inputs","getValues","createCondition","filteringLabel","resetJoinOperator","isDefaultOperator","updateJoinOperatorDisabled","mapValuesFromModel","elPosition","filterModel","cellValue","customFilterOption","customFilterResult","evaluateCustomFilter","evaluateNullValue","evaluateNonNullValue","isBlank","EQUALS","NOT_EQUAL","LESS_THAN","LESS_THAN_OR_EQUAL","GREATER_THAN","GREATER_THAN_OR_EQUAL","CONTAINS","NOT_CONTAINS","STARTS_WITH","ENDS_WITH","__extends$2x","ScalarFilter","scalarFilterParams","includeBlanksInEquals","includeBlanksInGreaterThan","includeBlanksInLessThan","includeBlanksInRange","compareResult","compareToResult","inRangeInclusive","__extends$2w","__assign$g","DEFAULT_MAX_YEAR","DateFilterModelFormatter","dateFilterParams","isRange","dateFrom","dateTo","inRangeFloatingFilterDateFormat","DateFilter","eConditionPanelsFrom","eConditionPanelsTo","dateConditionFromComps","dateConditionToComps","minValidYear","maxValidYear","filterDate","yearParser","fallback","filterModelFormatter","createDateCompWrapper","dateCompWrapper","onDateChanged","DEFAULT_FILTER_OPTIONS","eCondition","createFromToElement","eConditionPanels","dateConditionComps","fromTo","eConditionPanel","removeDateComps","_elPosition","__decorate$2c","__extends$2v","SimpleFloatingFilter","isEventFromFloatingFilter","isEventFromDataChange","getLastType","lastType","setLastTypeFromModel","canWeEditAfterModelFromParentFilter","isTypeEditable","doesFilterHaveSingleInput","uneditableTypes","__extends$2u","__decorate$2b","DateFloatingFilter","createDateComponent","eReadOnlyText","eDateWrapper","allowEditing","dateModel","filterValueText","getFilterModelFormatter","__extends$2t","DefaultDateComponent","eDateInput","shouldUseBrowserDatePicker","usingSafariDatePicker","browserDatePicker","__decorate$2a","__extends$2s","AgInputTextField","allowedCharPattern","preventDisallowedCharacters","clipboardData","__extends$2r","AgInputNumberField","floatedValue","normalizeValue","onWheel","adjustPrecision","floatString","setMin","setMax","setPrecision","setStep","__extends$2q","NumberFilterModelFormatter","filterTo","getAllowedCharPattern","DragSourceType","VerticalDirection","HorizontalDirection","NumberFilter","eValuesFrom","eValuesTo","processValue","numberFilterParams","eValues","eValue","stringToFloat","filterText","numberParser","__extends$2p","__assign$f","TextFilterModelFormatter","TextFilter","trimInput","trimmedInput","textFilterParams","getTextMatcher","formatter","textFormatter","DEFAULT_FORMATTER","DEFAULT_LOWERCASE_FORMATTER","legacyComparator","textCustomComparator","textMatcher","DEFAULT_MATCHER","cleanValue","filterTypesAllowNulls","formattedValues","cellValueFormatted","matcherParams","__extends$2o","__decorate$29","FloatingFilterTextInputService","setupGui","eFloatingFilterTextInput","addValueChangedListener","inputGui","TextInputFloatingFilter","floatingFilterInputService","createFloatingFilterInputService","eFloatingFilterInputContainer","toDebounce","syncUpWithParentFilter","enterKeyPressed","__extends$2n","FloatingFilterNumberInputService","numberInputActive","eFloatingFilterNumberInput","getActiveInputElement","setupListeners","NumberFloatingFilter","__extends$2m","TextFloatingFilter","TouchListener","preventMouseClick","destroyFuncs","touching","startListener","onTouchStart","onTouchMove","endListener","onTouchEnd","getActiveTouch","touchList","touchStart","touchEvent","touches","moved","touchStartCopy","touchesMatch","EVENT_LONG_TAP","EVENT_TAP","checkForDoubleTap","lastTapTime","DOUBLE_TAP_MILLIS","EVENT_DOUBLE_TAP","__extends$2l","__decorate$28","SortIndicatorComp","skipTemplate","TEMPLATE","attachCustomElements","eSortOrder","eSortAsc","eSortDesc","eSortMixed","eSortNone","setupSort","suppressOrder","setupMultiSortIndicator","addInIcon","onSortChanged","updateIcons","updateSortOrder","getDisplaySortForColumn","isAscending","isDescending","alwaysHideNoSort","isNone","isColumnShowingRowGroup","updateMultiSortIndicator","isMixedSort","allColumnsWithSorting","getColumnsWithSortingOrdered","indexThisCol","getDisplaySortIndexForColumn","moreThanOneColSorting","showIndex","__extends$2k","__decorate$27","HeaderComp","lastMovingChanged","refresh","workOutTemplate","currentTemplate","workOutShowMenu","currentShowMenu","workOutSort","currentSort","setDisplayName","setupTap","setupIcons","setMenu","setupFilterIcon","currentDisplayName","displayNameSanitised","eText","eMenu","eFilter","touchListener","suppressMenuHide","tapMenuButton","menuTouchListener","enableMenu","showColumnMenuAfterMouseClick","enableSorting","progressSort","menuHides","onIpadAndMenuHides","showMenu","menuFactory","showMenuAfterButtonClick","eSortIndicator","sortUsingCtrl","movedRecently","multiSort","onSortingChanged","sourceColumns","isMultiSorting","sourceCol","onFilterChanged","filterPresent","__extends$2j","__decorate$26","HeaderGroupComp","checkWarnings","setupLabel","addGroupExpandIcon","setupExpandIcons","expandAction","newExpandedValue","addTouchAndClickListeners","eCloseIcon","eOpenIcon","stopPropagationAction","updateIconVisibility","__extends$2i","PopupComponent","isPopup","__extends$2h","LargeTextCellEditor","focusAfterAttached","cellStartedEdit","eTextArea","setCols","setRows","parseValue","__decorate$25","__extends$2g","__decorate$24","SelectCellEditor","startedByEnter","eventKey","hasValue","valueFormatted","valueFormatterService","valueFormattedExits","eSelect","stopEditing","focusIn","__extends$2f","TextCellEditor","charPress","getStartValue","highlightAllOnFocus","inputEl","setSelectionRange","focusEl","useFormatter","__decorate$23","__extends$2e","AnimateShowChangeCellRenderer","refreshCount","eDelta","showDelta","absDelta","valueToUse","deltaUp","setTimerToRemoveDelta","refreshCountCopy","hideDeltaValue","filterManager","isSuppressFlashingCellsBecauseFiltering","__decorate$22","__extends$2d","AnimateSlideCellRenderer","eCurrent","addSlideAnimation","ePrevious","__decorate$21","__assign$e","RowNode","childrenMapped","rowTop","oldRowTop","selectable","OBJECT_ID_SEQUENCE","__autoHeights","alreadyRendered","highlighted","hovered","setDataCommon","updateData","oldData","onDataChanged","updateDataOnDetailNode","checkRowSelectable","resetQuickFilterAggregateText","createDataChangedEvent","dispatchLocalEvent","detailNode","EVENT_DATA_CHANGED","createLocalRowEvent","getRowIndexString","rowPinned","createDaemonNode","oldNode","__daemon","setDataAndId","setId","selectionService","syncInRowNode","isRowSelectableFunc","setRowSelectable","newVal","EVENT_SELECTABLE_CHANGED","calculateSelectedFromChildren","setSelectedParams","getRowIdFunc","parentKeys","getGroupKeys","ID_PREFIX_ROW_GROUP","excludeSelf","isPixelInRange","setFirstChild","EVENT_FIRST_CHILD_CHANGED","setLastChild","EVENT_LAST_CHILD_CHANGED","setChildIndex","EVENT_CHILD_INDEX_CHANGED","setRowTop","EVENT_TOP_CHANGED","clearRowTopAndRowIndex","setRowIndex","setDragging","dragging","EVENT_DRAGGING_CHANGED","setHighlighted","EVENT_HIGHLIGHT_CHANGED","setHovered","setAllChildrenCount","allChildrenCount","EVENT_ALL_CHILDREN_COUNT_CHANGED","setMaster","master","EVENT_MASTER_CHANGED","setGroup","updateHasChildren","EVENT_GROUP_CHANGED","setRowHeight","estimated","rowHeightEstimated","EVENT_HEIGHT_CHANGED","setRowAutoHeight","cellHeight","checkAutoHeightsDebounced","checkAutoHeights","notAllPresent","nonePresent","newRowHeight","autoHeights","activeColsForRow","getRowHeightForNode","onRowHeightChangedDebounced","EVENT_ROW_INDEX_CHANGED","setUiLevel","uiLevel","EVENT_UI_LEVEL_CHANGED","createGlobalRowEvent","rowNodeEventThrottle","dispatchExpanded","rowRenderer","refreshCells","setDataValue","getValueFromValueService","dispatchEventForSaveValueReadOnly","valueService","dispatchCellChangedEvent","lockedClosedGroup","leafGroup","isOpenGroup","groupFootersEnabled","groupAlwaysShowAggData","ignoreAggData","setGroupValue","groupData","setAggData","newAggData","colIds","aggData","oldAggData","isGroupFunc","__hasChildren","EVENT_HAS_CHILDREN_CHANGED","isEmptyRowGroupNode","cellChangedEvent","EVENT_CELL_CHANGED","quickFilterAggregateText","depthFirstSearch","atLeastOneSelected","atLeastOneDeSelected","atLeastOneMixed","childState","setSelectedInitialValue","selectThisNode","selectionNotAllowed","selectionNotChanged","clearSelection","suppressFinishActions","rangeSelect","setNodeSelected","isRowPinned","isParentOfNode","potentialParent","EVENT_MOUSE_ENTER","EVENT_MOUSE_LEAVE","getFirstChildOfFirstChild","rowGroupColumn","currentRowNode","isCandidate","foundFirstChildPath","nodeToSwapIn","parentRowNode","isFullWidthCellFunc","getIsFullWidthCellFunc","isFullWidthRow","getCallback","getRoute","createFooter","footerNode","ID_PREFIX_TOP_PINNED","ID_PREFIX_BOTTOM_PINNED","__extends$2c","__assign$d","__decorate$20","CheckboxSelectionComponent","eCheckbox","getCheckboxId","onSelectionChanged","onSelectableChanged","showOrHideSelect","stateName","onCheckedClicked","groupSelectsFiltered","onUncheckedClicked","getIsVisible","showOrHideSelectListener","extraParams","callbackParams","removeHidden","__extends$2b","__decorate$1$","__values$4","ExcelFactoryMode","DragAndDropService","dragSourceAndParamsList","dropTargets","DragAndDropService_1","ePinnedIcon","eHideIcon","eMoveIcon","eLeftIcon","eRightIcon","eGroupIcon","eAggregateIcon","ePivotIcon","eDropNotAllowedIcon","dragSource","allowTouch","sourceAndParams","clearDragSourceParamsList","nudge","eventLastTime","dragItem","getDragItem","lastDropTarget","dragSourceDropTarget","onDragStarted","createGhost","onDragStopped","draggingEvent","createDropTargetEvent","removeGhost","fromNudge","hDirection","getHorizontalDirection","vDirection","getVerticalDirection","positionGhost","validDropTargets","isMouseOnDropTarget","dropTarget","findCurrentDropTarget","leaveLastTargetIfExists","onGridExit","onGridEnter","enterDragTargetIfExists","getAllContainersFromDropTarget","secondaryContainers","getSecondaryContainers","containers","allContainersIntersect","containers_1","containers_1_1","horizontalFit","verticalFit","allContainersFromDropTarget","mouseOverTarget","allContainersFromDropTarget_1","allContainersFromDropTarget_1_1","currentContainers","targetContainsSource","isInterestedIn","e_3","e_4","elementStack","elementsFromPoint","elementStack_1","elementStack_1_1","validDropTargets_1","validDropTargets_1_1","e_4_1","e_3_1","onDragEnter","dragEnterEvent","setGhostIcon","getIconName","onDragLeave","dragLeaveEvent","addDropTarget","removeDropTarget","hasExternalDropZones","zones","external","findExternalZone","zone","eClientX","Left","Right","eClientY","Up","Down","dropZoneTarget","gridApi","ghost","eGhost","ghostHeight","browserWidth","browserHeight","pageY","pageX","windowScrollY","windowScrollX","eGhostParent","GHOST_TEMPLATE","mouseEventService","stampTopLevelGridCompWithGridInstance","getTheme","eGhostIcon","dragItemName","targetEl","shake","defaultIconName","ICON_NOT_ALLOWED","ICON_PINNED","ICON_MOVE","ICON_LEFT","ICON_RIGHT","ICON_GROUP","ICON_AGGREGATE","ICON_PIVOT","ICON_HIDE","__extends$2a","__decorate$1_","RowDragComp","cellValueFn","customGui","suppressVisibilityChange","isCustomGui","setDragElement","checkCompatibility","ManagedVisibilityStrategy","NonManagedVisibilityStrategy","dragElement","getSelectedNodes","managed","defaultTextValue","getRowDragText","RowDrag","dragItemCount","dragSourceDomDataKey","getDomDataKey","dragAndDropService","VisibilityStrategy","setDisplayedOrVisible","neverDisplayed","displayedOptions","shown","isShownSometimes","onSuppressRowDrag","workOutVisibility","rowDragFeature","getGridBodyCtrl","getRowDragFeature","shouldPreventRowMove","suppressRowDrag","__extends$29","__assign$c","__decorate$1Z","GroupCellRendererCtrl","eExpanded","eContracted","compClass","topLevelFooter","isTopLevelFooter","embeddedRowMismatch","isEmbeddedRowMismatch","isNullValueAndNotMaster","skipCell","cellIsBlank","setupShowingValueForOpenedParent","findDisplayedGroupNode","addFullWidthRowDraggerIfNeeded","addExpandAndContract","addCheckboxIfNeeded","addValueElement","setupIndent","refreshAriaExpanded","expandListener","eParentOfValue","rowGroupCols","fullWidth","pinnedLeftCell","pinnedRightCell","bodyCell","showingValueForOpenedParent","displayedGroupNode","keyOfGroupingColumn","valPresent","addFooterValue","addGroupValue","addChildCount","paramsAdjusted","adjustParamsWithDetailsFromRelatedColumn","innerCompDetails","getInnerCompDetails","valueWhenNoRenderer","setInnerRenderer","relatedColumn","footerValueGetter","footerValue","paramsClone","getFullWidthGroupRowInnerCellRenderer","getInnerRendererDetails","isGroupRowRenderer","relatedColDef","relatedCompDetails","getCellRendererDetails","suppressCount","updateChildCount","countString","isShowRowGroupForThisRow","setChildCount","eExpandedIcon","eContractedIcon","eGroupCell","eGridCell","suppressDoubleClickExpand","onCellDblClicked","onExpandClicked","showExpandAndContractIcons","expandableChangedListener","onRowNodeIsExpandableChanged","onExpandOrContract","nextExpandState","scrollToStickyNode","getScrollFeature","setVerticalScrollPosition","stickyRowTop","reducedLeafNode","displayedGroup","setExpandedDisplayed","setContractedDisplayed","pivotModeAndLeafGroup","addExpandableCss","isTotalFooterNode","setIndent","suppressPadding","fullWithRow","paddingCount","indentClass","rowDragComp","isUserWantsSelected","paramsCheckbox","checkbox","checkboxNeeded","detail","cbSelectionComponent_1","setCheckboxVisible","suppressEnterExpand","__extends$28","__decorate$1Y","GroupCellRenderer","compProxy","compDetails","valueToDisplay","setRenderDetails","eChildCount","ctrl","componentPromise","destroyComp","innerCellRenderer","__extends$27","__decorate$1X","LoadingCellRenderer","failedLoad","setupFailed","setupLoading","eLoadingText","eLoadingIcon","__extends$26","LoadingOverlayComponent$1","LoadingOverlayComponent","DEFAULT_LOADING_OVERLAY_TEMPLATE","localisedTemplate","__extends$25","NoRowsOverlayComponent$1","NoRowsOverlayComponent","DEFAULT_NO_ROWS_TEMPLATE","__extends$24","TooltipComponent$1","TooltipComponent","__extends$23","__decorate$1W","__read$m","UserComponentRegistry","agGridDefaults","agDateInput","agColumnHeader","agColumnGroupHeader","agSortIndicator","agTextColumnFloatingFilter","agNumberColumnFloatingFilter","agDateColumnFloatingFilter","agReadOnlyFloatingFilter","agAnimateShowChangeCellRenderer","agAnimateSlideCellRenderer","agGroupCellRenderer","agGroupRowRenderer","agLoadingCellRenderer","agCellEditor","agTextCellEditor","agSelectCellEditor","agLargeTextCellEditor","agTextColumnFilter","agNumberColumnFilter","agDateColumnFilter","agLoadingOverlay","agNoRowsOverlay","agTooltipComponent","enterpriseAgDefaultCompsModule","agSetColumnFilter","SetFilterModule","agSetColumnFloatingFilter","agMultiColumnFilter","MultiFilterModule","agMultiColumnFloatingFilter","agGroupColumnFilter","agGroupColumnFloatingFilter","agRichSelect","agRichSelectCellEditor","agDetailCellRenderer","MasterDetailModule","agSparklineCellRenderer","SparklinesModule","deprecatedAgGridDefaults","agPopupTextCellEditor","agPopupSelectCellEditor","jsComps","fwComps","registerJsComponent","frameworkComponents","registerFwComponent","registerDefaultComponent","retrieve","createResult","componentFromFramework","registeredViaFrameworkComp","frameworkComponent","jsComponent","isFrameworkComponent","defaultComponent","moduleForComponent","warnAboutMissingComponent","suggestions","__spread$i","DateComponent","HeaderComponent","HeaderGroupComponent","CellRendererComponent","CellEditorComponent","InnerRendererComponent","FilterComponent","FloatingFilterComponent","ToolPanelComponent","StatusPanelComponent","FullWidth","FullWidthLoading","FullWidthGroup","FullWidthDetail","FloatingFilterMapper","getFloatingFilterType","filterToFloatingFilterMapping","multi","__extends$22","__decorate$1V","UserComponentFactory","getHeaderCompDetails","getCompDetails","getHeaderGroupCompDetails","getFullWidthCellRendererDetails","getFullWidthLoadingCellRendererDetails","getFullWidthGroupCellRendererDetails","getFullWidthDetailCellRendererDetails","getCellEditorDetails","getFilterDetails","defaultFilter","getLoadingOverlayCompDetails","getNoRowsOverlayCompDetails","getSetFilterCellRendererDetails","getFloatingFilterCompDetails","defaultFloatingFilter","getToolPanelCompDetails","toolPanelDef","getStatusPanelCompDetails","defObject","mandatory","getCompKeys","compName","jsComp","fwComp","paramsFromSelector","popupFromSelector","popupPositionFromSelector","lookupFromRegistry","userComponentRegistry","agComponentUtils","doesImplementIComponent","adaptFunction","paramsMerged","mergeParamsWithApplicationProvidedParams","defObjectAny","selectorFunc","selectorRes","assignComp","providedJsComp","providedFwComp","xxxFrameworkDeprecatedWarn","warningMessage_1","popupPosition","thisComponentConfig","componentMetadataProvider","frameworkComponentWrapper","mandatoryMethodList","optionalMethodList","deferredInit","initComponent","paramsFromGrid","userParams","getDefaultFloatingFilterType","defaultFloatingFilterType","RowHighlightPosition","ClientSideRowModelSteps","__extends$21","__decorate$1U","DragService","dragEndFunctions","dragSources","removeAllListeners","dragSourceAndListener","mouseDownListener","touchEnabled","touchStartListener","includeTouch","mouseListener","suppressTouch","getStartTarget","startTarget","currentDragParams","touchLastTime","touchEndEvent","onTouchUp","addTemporaryEvents","onCommonMove","skipMouseEvent","_alreadyProcessedByDragService","mouseStartEvent","currentEvent","isEventNearStartEvent","getFirstActiveTouch","isEventFromThisGrid","isOverFormFieldElement","changedTouches","onUpCommon","eventOrTouch","__decorate$1T","unwrapUserComp","compAsAny","getFrameworkComponentInstance","LayoutCssClasses","GridApi","detailGridInfoMap","destroyCalled","registerOverlayWrapperComp","overlayWrapperComp","registerSideBarComp","sideBarComp","clientSideRowModel","infiniteRowModel","serverSideRowModel","whenReady","gridBodyCtrl","__getAlignedGridService","alignedGridsService","__getContext","getSetterMethod","setterName","addDetailGridInfo","gridInfo","removeDetailGridInfo","getDetailGridInfo","forEachDetailGridInfo","getDataAsCsv","CsvExportModule","csvCreator","exportDataAsCsv","getExcelExportMode","baseParams","exportMode","assertNotExcelMultiSheet","ExcelExportModule","excelCreator","getFactoryMode","MULTI_SHEET","getDataAsExcel","exportDataAsExcel","getSheetDataForExcel","setFactoryMode","getMultipleSheetsAsExcel","exportMultipleSheetsAsExcel","setGridAriaProperty","eGrid","ariaProperty","logMissingRowModel","apiMethod","requiredRowModels","setServerSideDatasource","datasource","setDatasource","setCacheBlockSize","blockSize","resetRootStore","setViewportDatasource","viewportDatasource","setRowData","rowData","immutableService","setPinnedTopRowData","pinnedRowModel","setPinnedBottomRowData","getPinnedTopRowCount","getPinnedBottomRowCount","getPinnedTopRow","getPinnedBottomRow","expireValueCache","getVerticalPixelRange","getVScrollPosition","getHorizontalPixelRange","getHScrollPosition","setAlwaysShowHorizontalScroll","setAlwaysShowVerticalScroll","flashCells","redrawRows","setFunctionsReadOnly","refreshHeader","isAnyFilterPresent","isColumnFilterPresent","isAggregateFilterPresent","isQuickFilterPresent","setRowNodeExpanded","expandParents","onGroupExpandedOrCollapsed","refreshModel","MAP","refreshClientSideRowModel","isAnimationFrameQueueEmpty","isQueueEmpty","flushAllAnimationFrames","getRowNode","getSizesForCurrentTheme","getRowHeightAsNumber","headerHeight","expandAll","expandOrCollapseAll","collapseAll","addRenderedRowListener","getQuickFilter","setQuickFilter","newFilter","setExcludeHiddenColumnsFromQuickFilter","selectAll","selectAllRowNodes","deselectAll","deselectAllRowNodes","selectAllFiltered","justFiltered","deselectAllFiltered","getServerSideSelectionState","setServerSideSelectionState","selectAllOnCurrentPage","justCurrentPage","deselectAllOnCurrentPage","showLoadingOverlay","showNoRowsOverlay","hideOverlay","getSelectedRows","getBestCostNodeSelection","getRenderedNodes","ensureColumnVisible","ensureIndexVisible","ensureNodeVisible","nodeSelector","forEachLeafNode","forEachNode","includeFooterNodes","forEachNodeAfterFilter","forEachNodeAfterFilterAndSort","getFilterInstance","getFilterInstanceImpl","unwrapped","filterPromise","getFilterComponent","filterComp","destroyFilter","getStatusPanel","statusBarService","getColumnDef","setFilterModel","getFilterModel","getFocusedCell","clearFocusedCell","setFocusedCell","forceBrowserFocus","setSuppressRowDrag","setSuppressMoveWhenRowDragging","setSuppressRowClickSelection","addRowDropZone","removeRowDropZone","activeDropTarget","getRowDropZoneParams","getRowDropZone","setHeaderHeight","setDomLayout","setEnableCellTextSelection","setCellTextSelection","setFillHandleDirection","setGroupHeaderHeight","setFloatingFiltersHeight","setPivotHeaderHeight","setPivotGroupHeaderHeight","setAnimateRows","animateRows","setIsExternalFilterPresent","isExternalFilterPresentFunc","setDoesExternalFilterPass","doesExternalFilterPassFunc","setNavigateToNextCell","navigateToNextCellFunc","setTabToNextCell","tabToNextCellFunc","setTabToNextHeader","tabToNextHeaderFunc","setNavigateToNextHeader","navigateToNextHeaderFunc","setRowGroupPanelShow","rowGroupPanelShow","setGroupRowAggNodes","groupRowAggNodesFunc","setGetGroupRowAgg","getGroupRowAggFunc","setGetBusinessKeyForNode","getBusinessKeyForNodeFunc","setGetChildCount","getChildCountFunc","setProcessRowPostCreate","processRowPostCreateFunc","setGetRowNodeId","getRowNodeIdFunc","setGetRowId","setGetRowClass","rowClassFunc","setIsFullWidthCell","setIsFullWidthRow","isFullWidthRowFunc","setIsRowSelectable","setIsRowMaster","isRowMasterFunc","setPostSort","postSortFunc","setPostSortRows","postSortRowsFunc","setGetDocument","getDocumentFunc","setGetContextMenuItems","getContextMenuItemsFunc","setGetMainMenuItems","getMainMenuItemsFunc","setProcessCellForClipboard","processCellForClipboardFunc","setSendToClipboard","sendToClipboardFunc","setProcessCellFromClipboard","processCellFromClipboardFunc","setProcessSecondaryColDef","processSecondaryColDefFunc","setProcessPivotResultColDef","setProcessSecondaryColGroupDef","processSecondaryColGroupDefFunc","setProcessPivotResultColGroupDef","processPivotResultColDefFunc","processPivotResultColGroupDefFunc","setPostProcessPopup","postProcessPopupFunc","setDefaultGroupOrderComparator","defaultGroupOrderComparatorFunc","setInitialGroupOrderComparator","initialGroupOrderComparatorFunc","setGetChartToolbarItems","getChartToolbarItemsFunc","setPaginationNumberFormatter","paginationNumberFormatterFunc","setGetServerSideStoreParams","getServerSideStoreParamsFunc","setGetServerSideGroupLevelParams","getServerSideGroupLevelParamsFunc","setIsServerSideGroupOpenByDefault","isServerSideGroupOpenByDefaultFunc","setIsApplyServerSideTransaction","isApplyServerSideTransactionFunc","setIsServerSideGroup","isServerSideGroupFunc","setGetServerSideGroupKey","getServerSideGroupKeyFunc","setGetRowStyle","rowStyleFunc","setGetRowHeight","rowHeightFunc","assertSideBarLoaded","isSideBarVisible","setSideBarVisible","setSideBarPosition","openToolPanel","closeToolPanel","getOpenedToolPanel","openedItem","refreshToolPanel","isToolPanelShowing","getToolPanelInstance","getSideBar","getDef","setSideBar","setSuppressClipboardPaste","resetRowHeights","setGroupRemoveSingleChildren","setGroupRemoveLowestSingleChildren","setGroupDisplayType","setRowClass","setDeltaSort","setRowCount","maxRowFound","onRowHeightChanged","gridCtrl","getGridCtrl","destroyGridUi","cleanDownReferencesToAvoidMemoryLeakInCaseApplicationIsKeepingReferenceToDestroyedGrid","warnIfDestroyed","resetQuickFilter","resetQuickFilterCache","getCellRanges","rangeService","addCellRange","clearRangeSelection","removeAllCellRanges","undoCellEditing","undoRedoService","undo","redoCellEditing","redo","getCurrentUndoSize","getCurrentUndoStackSize","getCurrentRedoSize","getCurrentRedoStackSize","getChartModels","chartService","getChartRef","chartId","getChartImageDataURL","downloadChart","openChartToolPanel","closeChartToolPanel","createRangeChart","createCrossFilterChart","restoreChart","chartModel","chartContainer","createPivotChart","copyToClipboard","ClipboardModule","clipboardService","cutToClipboard","copySelectedRowsToClipboard","copySelectedRangeToClipboard","copySelectedRangeDown","copyRangeDown","showColumnMenuAfterButtonClick","buttonElement","showMenuAfterMouseEvent","hidePopupMenu","contextMenuFactory","hideActiveMenu","setPopupParent","ePopupParent","tabToNextCell","navigationService","tabToPreviousCell","getCellRendererInstances","getCellEditorInstances","getEditingCells","startEditingCell","cellPosition","getCellByPosition","startRowOrCellEdit","addAggFunc","addAggFuncs","aggFuncs","clearAggFuncs","applyServerSideTransaction","serverSideTransactionManager","applyTransaction","applyServerSideTransactionAsync","applyTransactionAsync","retryServerSideLoads","retryLoads","flushServerSideAsyncTransactions","flushAsyncTransactions","rowDataTransaction","updateRowData","batchUpdateRowData","setSuppressModelUpdateAfterUpdateTransaction","refreshInfiniteCache","refreshCache","purgeInfiniteCache","purgeCache","refreshServerSide","refreshStore","refreshServerSideStore","getServerSideStoreState","getServerSideGroupLevelState","getStoreState","getInfiniteRowCount","getRowCount","isLastRowIndexKnown","getCacheBlockState","rowNodeBlockLoader","getBlockState","getFirstDisplayedRow","getFirstVirtualRenderedRow","getLastDisplayedRow","getLastVirtualRenderedRow","getDisplayedRowAtIndex","getRow","getDisplayedRowCount","setPagination","paginationIsLastPageFound","paginationProxy","isLastPageFound","paginationGetPageSize","getPageSize","paginationSetPageSize","paginationGetCurrentPage","getCurrentPage","paginationGetTotalPages","getTotalPages","paginationGetRowCount","getMasterRowCount","paginationGoToNextPage","goToNextPage","paginationGoToPreviousPage","goToPreviousPage","paginationGoToFirstPage","goToFirstPage","paginationGoToLastPage","goToLastPage","paginationGoToPage","page","goToPage","__extends$20","__assign$b","__decorate$1S","FilterManager","allColumnFilters","activeAggregateFilters","activeColumnFilters","quickFilter","quickFilterParts","processingFilterChange","FilterManager_1","onColumnsChanged","refreshFiltersForAggregations","onExcludeHiddenColumnsFromQuickFilterChanged","parseQuickFilter","setQuickFilterParts","allowShowChangeAfterFilter","externalFilterPresent","isExternalFilterPresentCallback","isFilterPresent","doesExternalFilterPass","allPromises","modelKeys_1","filterWrapper","setModelOnFilterWrapper","getOrCreateFilterWrapper","promiseFilter","isExternalFilterPresent","doAggregateFiltersPass","filterToSkip","doColumnFiltersPass","updateActiveFilters","groupFilterEnabled","getGroupAggFiltering","isShowingPrimaryColumns","isAggFilter","updateFilterFlagInColumns","targetAggregates","targetedFilters","targetedData","parsedFilter","callOnFilterChangedOutsideRenderCycle","isRefreshInProgress","updateDependantFilters","onAnyFilterChanged","doesRowPassOtherFilters","doesRowPassFilter","filterInstanceToSkip","doesRowPassQuickFilterNoCache","filterPart","getQuickFilterTextForColumn","doesRowPassQuickFilterCache","aggregateRowForQuickFilter","doesRowPassQuickFilter","usingCache","doesRowPassAggregateFilters","stringParts","QUICK_FILTER_SEPARATOR","createValueGetter","createIfDoesNotExist","cachedFilter","putIntoGui","createFilterWrapper","createFilterInstance","createFilterParams","doesRowPassOtherFilter","compiledElement","guiPromise","eFilterGui","guiFromFilter","disposeFilterWrapper","groupColumns","groupColumn","showParentFilter","finalFilterParams","currentParentModel","getCurrentFloatingFilterParentModel","filterComponent","suppressFilterButton","__extends$1$","AbstractHeaderCellComp","getCtrl","__extends$1_","__decorate$1R","HeaderFilterCellComp","cssClassName","addOrRemoveBodyCssClass","eFloatingFilterBody","setButtonWrapperDisplayed","eButtonWrapper","setCompDetails","getFloatingFilterComp","compPromise","setMenuIcon","eButtonShowMainFilter","setComp","afterCompCreated","__extends$1Z","RowAnimationCssClasses","LayoutFeature","updateLayoutClasses","getDomLayout","AUTO_HEIGHT","PRINT","__decorate$1Q","__extends$1Y","__assign$a","__decorate$1P","GridBodyScrollFeature","eBodyViewport","nextScrollTop","resetLastHScrollDebounced","eLastHScroll","resetLastVScrollDebounced","eLastVScroll","enableRtl","onDisplayedColumnsWidthChanged","centerRowContainerCtrl","addScrollListener","fakeHScroll","getFakeHScrollComp","fakeVScroll","getFakeVScrollComp","getViewportElement","onHScroll","onFakeHScroll","isDebounce","onVScroll","onFakeVScroll","horizontallyScrollHeaderCenterAndFloatingCenter","getCenterViewportScrollLeft","topCenterContainer","getTopCenterRowContainerCtrl","stickyTopCenterContainer","getStickyTopCenterRowContainerCtrl","bottomCenterContainer","getBottomCenterRowContainerCtrl","getHeaderRowContainerCtrl","setHorizontalScroll","setContainerTranslateX","centerViewport","isControllingHScroll","eDiv","isControllingVScroll","fakeHScrollViewport","onHScrollCommon","centerContainerViewport","eSource","shouldBlockScrollUpdate","doHorizontalScroll","fakeVScrollViewport","onVScrollCommon","setScrollTop","scrollGridIfNeeded","schedule","fakeScrollLeft","fireScrollEvent","onHorizontalViewportChanged","bodyScrollEvent","scrollTimer","bodyScrollEndEvent","scrollTo","touchOnly","shouldBlockVerticalScroll","shouldBlockHorizontalScroll","getCenterWidth","redrawRowsAfterScroll","checkScrollLeft","frameNeeded","setHorizontalScrollPosition","hScrollPosition","maxScrollLeft","vScrollPosition","scrollHorizontally","oldScrollPosition","scrollToTop","indexToSelect","goToPageWithIndex","rowGotShiftedDuringOperation","stickyTopHeight","getStickyTopHeight","startingRowTop","startingRowHeight","paginationOffset","rowTopPixel","rowBottomPixel","heightOffset","heightScaler","getDivStretchOffset","vScrollTop","vScrollBottom","viewportHeight","pxTop","getScrollPositionForPixel","pxBottom","pxMiddle","newScrollPosition","redrawAfterScroll","newHorizontalScroll","getPositionedHorizontalScroll","setCenterViewportScrollLeft","isColumnOutsideViewport","columnBeforeStart","columnAfterEnd","viewportTooSmallForColumn","alignColToStart","alignColToEnd","isMiddle","getColumnBounds","colLeft","colMiddle","colRight","getViewportBounds","viewportStart","viewportEnd","colLeftPixel","AutoScrollService","tickingInterval","onScrollCallback","scrollAxis","scrollVertically","scrollByTick","getVerticalPosition","setVerticalPosition","getHorizontalPosition","setHorizontalPosition","shouldSkipVerticalScroll","shouldSkipHorizontalScroll","forceSkipVerticalScroll","skipVerticalScroll","scrollTick","tickLeft","tickRight","tickUp","tickDown","ensureTickingStarted","ensureCleared","doTick","tickCount","tickAmount","__extends$1X","__assign$9","__decorate$1O","__read$l","RowDragFeature","isMultiRowDrag","isGridSorted","isGridFiltered","refreshStatus","onRowGroupChanged","gridBodyCon","autoScrollService","getBodyViewportElement","lastDraggingEvent","isSortActive","rowGroups","getRowNodes","isFromThisGrid","isRowDragMultiRow","selectedNodes","__spread$h","getRowIndexNumber","currentNode","dispatchGridEvent","onEnterOrDragging","isDropZoneWithinThisGrid","gridGui","getNormalisedPosition","doManagedDrag","managedDrag","highlightRowAtPixel","moveRows","moveRowAndClearHighlight","lastHighlightedRowNode","getLastHighlightedRowNode","isBelow","Below","increment","getRowIdFunc_1","addIndex","getRowIndexAtPixel","getHighlightPosition","Above","clearRowHighlight","ensureRowsAtPixel","processedParams","fromGrid","draggingToRowDragEvent","overNode","vDirectionString","yNormalised","overIndex","getCurrentPageHeight","stopDragging","__extends$1W","__decorate$1N","SelectionHandleType","CellRangeType","CSS_CLASS_CELL_SELECTABLE","CSS_CLASS_FORCE_VERTICAL_SCROLL","GridBodyCtrl","bodyScrollFeature","eGridBody","eTop","eBottom","eStickyTop","addRowDragListener","setupRowAnimationCssClass","addFocusListeners","onGridColumnsChanged","addBodyViewportListener","setFloatingHeights","disableBrowserDragging","addStopEditingWhenGridLosesFocus","registerGridBodyCtrl","getComp","onScrollVisibilityChanged","onPinnedRowDataChanged","onHeaderHeightChanged","isFocusedElementNested","gridContainRelatedTarget","isNestedRelatedTarget","setColumnMovingCss","setCellSelectableCss","scrollVisibleService","setVerticalScrollPaddingVisible","setStickyTopWidth","setBodyViewportWidth","setColumnCount","focusOutListener","elementWithFocus","clickInsideGrid","isElementInThisGrid","getActivePopups","isElementWithinCustomPopup","updateRowCount","headerCount","headerNavigationService","registerBodyViewportResizeListener","setPinnedTopBottomOverflowY","allowVerticalScroll","setAlwaysVerticalScrollClass","isAnimateRows","rowContainerHeightService","isStretching","animateRowsCssClass","ANIMATION_ON","ANIMATION_OFF","setRowAnimationCssOnBodyViewport","getGridBodyElement","onBodyViewportContextMenu","mockContextMenuForIPad","onBodyViewportWheel","onStickyTopWheel","addFullWidthContainerWheelListener","fullWidthContainer","eCenterColsViewport","onFullWidthContainerWheel","scrollBy","getCenterRowContainerCtrl","onContextMenu","hasAnchoredPopup","floatingTopHeight","getPinnedTopTotalHeight","floatingBottomHeight","getPinnedBottomTotalHeight","setTopHeight","setBottomHeight","setTopDisplay","setBottomDisplay","setStickyTopOffsetTop","setStickyTopHeight","vScrollVisible","scrollbarWidth","getGridHeaderCtrl","pinnedTopHeight","setStickyTopTop","nextTimeout","scrollWidthToRemove","availableWidth","addScrollEventListener","removeScrollEventListener","RowType$1","CSS_CELL_RANGE_SELECTED","CellRangeFeature","cellCtrl","cellComp","onRangeSelectionChanged","rangeCount","getCellRangeCount","getCellPosition","hasChartRange","getHasChartRange","isSingleCell","updateRangeBorders","refreshHandle","rangeBorders","getRangeBorders","isMoreThanOneCell","cellRanges","DIMENSION","VALUE","updateRangeBordersIfRangeCount","leftCol","rightCol","thisCol","isCellInSpecificRange","getRangeStartRow","getRangeEndRow","rowPositionUtils","sameRow","shouldHaveSelectionHandle","selectionHandle","addSelectionHandle","rangesLen","cellRange","isFillHandleAvailable","isRangeHandleAvailable","handleIsAvailable","isEditing","isCategoryCell","isContiguousRange","isBottomRightCell","cellRangeType","FILL","RANGE","selectionHandleFactory","createSelectionHandle","__extends$1V","CellPositionFeature","setupColSpan","setupRowSpan","onLeftChanged","onWidthChanged","applyRowSpan","onDisplayColumnsChanged","colsSpanning","getColSpanningList","getCellWidth","modifyLeftForPrintLayout","getCellLeft","leftPosition","isPrintLayout","totalRowHeight","__extends$1U","CellCustomStyleFeature","staticClasses","applyUserStyles","applyCellClassRules","applyClassesFromColDef","cellClassParams","stylingService","processClassRules","cellStyleParams","cellStyleFunc","setUserStyles","getStaticCellClasses","__extends$1T","TooltipFeature","setupTooltip","browserTooltips","updateTooltipText","createTooltipFeatureIfNeeded","getTooltipValue","genericTooltipFeature","refreshToolTip","getRowIndex","getTooltipText","getValueFormatted","__decorate$1M","Beans","doingMasterDetail","isMasterDetail","__extends$1S","CellMouseListenerFeature","onMouseEvent","isDoubleClickOnIPad","multiKeyPressed","intersectLastRange","cellClickedEvent","nowMillis","lastIPadMouseClickEvent","cellDoubleClickedEvent","isRightClickInExistingRange","focusCell","containsWidget","thisCell","extendLatestRangeToCell","ctrlKeyPressed","setRangeToCell","isCellInAnyRange","mouseStayingInsideCell","cellMouseOutEvent","clearMouseOver","cellMouseOverEvent","setMouseOver","cellContainsTarget","cellContainsRelatedTarget","__extends$1R","CellKeyboardListenerFeature","rowCtrl","onEnterKeyDown","onF2KeyDown","onEscapeKeyDown","onBackspaceOrDeleteKeyPressed","onNavigationKeyPressed","isRangeSelectionEnabled","onShiftRangeSelect","navigateToNextCell","endCell","extendLatestRangeInDirection","ensureCellVisible","isEnableRangeSelection","clearCellRangeCellValues","stopEditingAndFocus","stopRowOrCellEdit","onKeyPress","pressedChar","onSpaceKeyPressed","isRowSelection","currentSelection","newSelection","updatedCount","__extends$1Q","DndSourceComp","eCell","checkVisibility","dragEvent","providedOnRowDrag","dataTransfer","setDragImage","jsonData","defaultOnRowDrag","__decorate$1L","__extends$1P","__assign$8","instanceIdSequence$3","CellCtrl","cellRangeFeature","cellPositionFeature","cellCustomStyleFeature","cellMouseListenerFeature","cellKeyboardListenerFeature","suppressRefreshCell","onCellCompAttachedFuncs","createCellPosition","addTooltipFeature","tooltipCtrl","eCellWrapper","printLayout","startEditing","updateAndFormatValue","addDomData","onCellFocused","applyStaticCssClasses","setWrapText","onFirstRightPinnedChanged","onLastLeftPinnedChanged","onColumnHover","setupControlComps","setupAutoHeight","setTabIndex","colIdSanitised","setColId","setRole","showValue","eParentCell","minRowHeight","measureHeight","timesCalled","extraHeight","destroyResizeObserver","forceNewCellRendererInstance","createCellRendererParams","includeSelection","isIncludeControl","includeRowDrag","includeDndSource","setIncludeSelection","setIncludeDndSource","setIncludeRowDrag","isForceWrapper","refreshShouldDestroy","selectionChanged","rowDragChanged","dndSourceChanged","editorParams","createCellEditorParams","setEditing","setEditDetails","stopRowEditing","onPopupEditorClosed","takeValueFromCellEditor","noValueResult","newValueExists","getCellEditor","isCancelAfterEnd","saveNewValue","refreshCell","suppressFlash","dispatchEditingStoppedEvent","editingStoppedEvent","getParentOfValue","registerRowDragger","rowDraggerElement","setFocusOutOnEditor","focusOut","setFocusInOnEditor","onCellChanged","noValueProvided","valuesDifferent","flashCell","suppressNavigateAfterEdit","navigateAfterEdit","delays","flashDelay","fadeDelay","animateCell","cssName","fullName","animationFullName","onFlashCells","cellPositionUtils","createId","cells","callValueFormatter","oldValueFormatted","valuesAreEqual","setDomData","DOM_DATA_KEY_CELL_CTRL","domEvent","onDisplayedColumnsChanged","colIdx","getBeans","htmlElement","startRowEditing","getRowCtrl","getRowPosition","onRowIndexChanged","cellFocused","isCellFocused","preventScrollOnBrowserFocus","fullRowEdit","onColDefChanged","dispatchCellContextMenuEvent","cellContextMenuEvent","getCellRenderer","createSelectionCheckbox","cbSelectionComponent","createDndSource","dndSourceComp","customElement","customRowDragComp","newComp","createRowDragComp","pagination","rowDragManaged","clientSideRowModelActive","__extends$1O","__read$k","RowType","RowContainerName","RowContainerType","instanceIdSequence$2","RowCtrl","animateIn","useAnimationFrameForCreate","allRowGuis","centerCellCtrls","leftCellCtrls","rightCellCtrls","slideInAnimation","fadeInAnimation","lastMouseDownOnDragger","updateColumnListsPending","businessKeySanitised","paginationPage","setAnimateFlags","initRowBusinessKey","rowFocused","isRowFocused","rowLevel","rowCssClassCalculator","calculateRowLevel","setRowType","addListeners","businessKeyForNodeFunc","businessKey","isSticky","rowComp","gui","leftGui","rightGui","FULL_WIDTH","fullWidthGui","centerGui","initialiseRowComp","rowType","dispatchFirstDataRenderedEvent","unsetComp","rowGui","isCacheable","setCached","rg","gos","updateRowIndexes","setFocusedClasses","setStylesFromGridOptions","onRowSelected","updateColumnLists","getInitialRowClasses","executeSlideAndFadeAnimations","rowIdSanitised","setRowId","setRowBusinessKey","isFullWidth","DOM_DATA_KEY_ROW_CTRL","createTask","addHoverFunctionality","setupFullWidth","addRowDraggerToRow","addDestroyTask","executeProcessRowPostCreateFunc","onTopChanged","getPinnedForContainer","createFullWidthParams","showFullWidth","getFullWidthCellRenderer","getCellElement","getCellCtrl","areAllContainersReady","eRow","ePinnedLeftRow","ePinnedRightRow","isLeftReady","isCenterReady","isRightReady","isStub","isDetailCell","isFullWidthGroup","Normal","suppressAnimationFrame","useFlushSync","updateColumnListsImpl","createCellCtrls","addCell","colInstanceId","prevCellCtrl","isCellEligibleToBeRemoved","centerCols","leftCols","rightCols","cellControls","setCellCtrls","nextContainerPinned","REMOVE_CELL","focused","column_1","oldRowTopExists","pinningLeft","pinningRight","editingRow","getRowType","refreshFullWidth","tryRefresh","fullWidthSuccess","centerSuccess","leftSuccess","rightSuccess","updateExpandedCss","onRowNodeDataChanged","onRowNodeCellChanged","onRowNodeHighlightChanged","onRowNodeDraggingChanged","onUiLevelChanged","onPaginationPixelOffsetChanged","onVirtualColumnsChanged","onCellFocusCleared","onPaginationChanged","onModelUpdated","onColumnMoved","addListenersForCellComps","getAllCellCtrls","refreshFullWidthRow","postProcessCss","postProcessClassesFromGridOptions","postProcessRowClassRules","postProcessRowDragging","aboveOn","belowOn","onKeyboardNavigate","currentFullWidthComp","lastFocusedCell","currentFullWidthContainer","isFullWidthContainerFocused","nextEl","onFullWidthRowFocused","isFocused","removeCellCtrl","cellCtrlToRemove","onRowDblClick","onRowClick","onRowMouseDown","createRowEvent","createRowEventWithSource","multiSelectKeyPressed","shiftKeyPressed","multiSelectOnClick","rowDeselectionWithCtrl","setupDetailRowAutoHeight","eDetailGui","checkRowSizeFunc","resizeObserverDestroyFunc","addFullWidthRowDragging","classToAdd_1","classToRemove_1","isFirstRowOnPage","getPageFirstRow","isLastRowOnPage","getPageLastRow","refreshFirstAndLastRowStyles","newFirst","newLast","firstRowOnPage","lastRowOnPage","stoppingRowEdit","isRowEdit","fireRowEditEvent","cellControls_1","__values$3","cellControls_1_1","setEditingRow","setInlineEditingCss","sourceRenderedCell","__spread$g","cssClasses","processClassesFromGridOptions","classStr","processRowClassRules","rowStyles","processStylesFromGridOptions","forEachGui","rowContainerType","fadeRowIn","rowIsEven","fullWidthRow","rowStyle","rowStyleFuncResult","createAriaLabel","isUseAnimationFrameForCreate","roundRowTopToBounds","minPixel","applyPaginationOffset","maxPixel","defaultRowHeight","getDefaultRowHeight","heightFromFunc","isGetRowHeightFunction","destroyFirstPass","setupRemoveAnimation","destroySecondPass","destroyCellCtrls","ctrls","onCellFocusChanged","currentPage","topPx","afterPaginationPixels","getRealPixelPosition","setRowTopStyle","getInitialRowTop","getInitialRowTopShared","getInitialTransform","suppressRowTransform","setTop","setTransform","rowIndexStr","headerRowCount","ariaRowIndex","getPinnedLeftRowElement","getPinnedRightRowElement","getBodyRowElement","getFullWidthRowElement","__extends$1N","__decorate$1K","RowContainerEventsFeature","addMouseListeners","addKeyboardEvents","processKeyboardEvent","processMouseEvent","getRowForEvent","getRenderedCellForEvent","handleContextMenuMouseEvent","rowCon","anchorToElement","processCellKeyboardEvent","processFullWidthRowKeyboardEvent","handlePageScrollingKey","doGridOperations","cellKeyDownEvent","cellKeyPressEvent","focusedCell","onCtrlAndA","onCtrlAndC","onCtrlAndX","onCtrlAndV","onCtrlAndD","onCtrlAndZ","onCtrlAndY","isRowsToRender","__read$j","floatingStart","floatingEnd","getPinnedBottomRowData","setCellRange","rowStartIndex","rowStartPinned","rowEndIndex","rowEndPinned","columnStart","columnEnd","pasteFromClipboard","__extends$1M","__decorate$1J","ViewportSizeFeature","centerContainerCtrl","listenForResize","onScrollbarWidthChanged","onCenterViewportResized","registerViewportResizeListener","checkViewportAndScrolls","isViewportVisible","centerWidth","bodyHeight","updateScrollVisibleService","checkBodyHeight","updateScrollVisibleServiceImpl","horizontalScrollShowing","verticalScrollShowing","setScrollsVisible","getViewportScrollLeft","__extends$1L","__decorate$1I","SetPinnedLeftWidthFeature","onPinnedLeftWidthChanged","pinnedWidthService","getPinnedLeftWidth","__extends$1K","__decorate$1H","SetPinnedRightWidthFeature","onPinnedRightWidthChanged","getPinnedRightWidth","__extends$1J","__decorate$1G","SetHeightFeature","onHeightChanged","maxDivHeightScaler","getUiContainerHeight","heightString","__extends$1I","__decorate$1F","DragListenerFeature","__extends$1H","__decorate$1E","CenterWidthFeature","addSpacer","totalWidth","__extends$1G","__decorate$1D","__read$i","getRowContainerTypeForName","CENTER","TOP_CENTER","STICKY_TOP_CENTER","BOTTOM_CENTER","TOP_LEFT","STICKY_TOP_LEFT","BOTTOM_LEFT","TOP_RIGHT","STICKY_TOP_RIGHT","BOTTOM_RIGHT","TOP_FULL_WIDTH","STICKY_TOP_FULL_WIDTH","BOTTOM_FULL_WIDTH","HeaderRowType","ContainerCssClasses","ViewportCssClasses","WrapperCssClasses","RowContainerCtrl","EMPTY_CTRLS","isFullWithContainer","getRowContainerCssClasses","embedFullWidthRows","forContainers","viewportSizeFeature","registerWithCtrlsService","registerCenterRowContainerCtrl","registerLeftRowContainerCtrl","registerRightRowContainerCtrl","registerTopCenterRowContainerCtrl","registerTopLeftRowContainerCon","registerTopRightRowContainerCtrl","registerStickyTopCenterRowContainerCtrl","registerStickyTopLeftRowContainerCon","registerStickyTopRightRowContainerCtrl","registerBottomCenterRowContainerCtrl","registerBottomLeftRowContainerCtrl","registerBottomRightRowContainerCtrl","names","getContainerElement","getViewportSizeFeature","eViewport","addPreventScrollWhileDragging","listenOnDomOrder","stopHScrollOnPinnedRows","allTopNoFW","allStickyTopNoFW","allNoFW","__spread$f","allMiddle","allCenter","allLeft","allRight","pinnedWidthFeature","onPinnedWidthChanged","setContainerWidth","pinnedWidthChangedEvent","refreshPaddingForFakeScrollbar","sideToCheck","pinnedWidth","marginSide","onDisplayedRowsChanged","afterScroll","setDomOrder","isEnsureDomOrder","setViewportHeight","unsubscribeFromResize","amount","isContainerVisible","printLayout_1","rowsThisContainer","getRowCtrls","embedFW","setRowCtrls","getTopRowCtrls","getStickyTopRowCtrls","getBottomRowCtrls","__extends$1F","__decorate$1C","GRID_BODY_TEMPLATE","GridBodyComp","eBodyClipper","eBody","bodyViewportClassList","getFloatingTopBottom","__extends$1E","__decorate$1B","ScrollVisibleService","updateImpl","centerRowCtrl","__extends$1D","__decorate$1A","MouseEventService","gridInstanceId","MouseEventService_1","gridInstanceSequence","eGridDiv","GRID_DOM_KEY","getCellPositionForEvent","gridPanelHasScrolls","vRange","__extends$1C","__assign$7","__decorate$1z","NavigationService","onPageDown","onPageUp","rangeServiceShouldHandleShift","currentCell","processed","onHomeOrEndKey","onCtrlUpDownLeftRight","navigateTo","navigateParams","scrollIndex","scrollType","scrollColumn","focusIndex","focusColumn","gridCell","pixelsInOnePage","getViewportHeight","pagingPixelOffset","currentPageBottomPixel","currentPageBottomRow","navigateToNextPageWithAutoHeight","navigateToNextPage","currentPageTopPixel","currentPageTopRow","firstRow","lastRow","rowPixelDiff","nextCellPixel","isRowTallerThanView","getNextFocusIndexForAutoHeight","lastRowIndex","pixelSum","currentCellHeight","cellToFocus","cellNavigationService","getNextCellToFocus","homeKey","columnToSelect","backwards","tabToNextCellCommon","focusNextGridCoreContainer","focusLastHeader","cellOrRow","getRowByPosition","moveToNextEditingRow","moveToNextEditingCell","moveToNextCellNotEditing","getFocusedHeader","previousCell","previousPos","nextCell","findNextCellToFocusOn","previousEditable","nextEditable","rowsMatch","cellPos","tryToFocusFullWidthRow","nextPosition","getLastCellOfColSpan","getNextTabbedCell","userCell","previousCellPosition","nextCellPosition","floating","headerLen","focusHeaderPosition","headerPosition","lookupRowNodeForCell","allowUserOverride","hitEdgeOfGrid","isValidNavigateCell","normalisedPosition","focusPosition","currentCellFocused","fromBelow","focusEvent","colSpanningList","isGroupStickyEnabled","__extends$1B","PopupEditorWrapper","DOM_KEY_POPUP_EDITOR_WRAPPER","addKeyDownListener","__decorate$1y","__extends$1A","CellComp","rendererVersion","editorVersion","forceWrapper","refreshWrapper","actualElement","include","eCellValue","cellEditorPopupWrapper","firstRender","controlWrapperChanged","refreshEditStyles","refreshCellRenderer","destroyRenderer","createCellRendererInstance","insertValueWithoutCellRenderer","createCellEditorInstance","destroyEditor","removeControls","checkboxSelectionComp","rowDraggingComp","providingControls","usingWrapper","putWrapperIn","takeWrapperOut","usingCellValue","putCellValueIn","takeCellValueOut","templateChanged","addControls","versionCopy","cellEditorPromise","afterCellEditorCreated","escapedValue","destroyEditorAndRenderer","cellRendererGui","hideEditorPopup","cellEditorGui","compClassAndParams","cellRendererClass","useTaskService","displayComponentVersionCopy","createCellRendererFunc","afterCellRendererCreated","cellRendererVersion","requestVersion","isCancelBeforeStart","cellEditorInPopup","addPopupCellEditor","addInCellEditor","clearParentOfValue","ePopupGui","useModelPopup","positionToUse","getPopupPosition","positionParams","alignSide","positionCallback","detach","__extends$1z","RowComp","cellComps","getInitialStyle","domOrder","cellCtrls","rowId","setFullWidthRowComp","cellsToRemove","newCellComp","cellCompsToRemove","destroyCells","elementsInOrder","destroyAllCells","cellsToDestroy","fullWidthRowComponent","fullWidthCellRenderer","__extends$1y","__assign$6","__decorate$1x","RowContainerComp","template1","template2","rowComps","rowCtrls","preDestroy","oldRows","lastPlacedElement","existingRowComp","appendRow","oldRowComp","__decorate$1w","BodyDropPivotTarget","columnsToAggregate","columnsToGroup","columnsToPivot","clearColumnsList","dragColumns","__decorate$1v","MoveColumnFeature","needToMoveLeft","needToMoveRight","lastMovedInfo","centerContainer","ToolPanel","visibleState_1","visibleState","ensureIntervalCleared","allowedCols","normaliseX","checkCenterForScrolling","xAdjustedForScroll","firstVisiblePixel","lastVisiblePixel","ensureIntervalStarted","fromEnter","fakeEvent","mouseX","normaliseDirection","dragSourceType","allMovingColumns","attemptMoveColumns","draggingLeft","draggingRight","HeaderCell","newCols_1","movingGroup","allMovingColumnsOrdered","validMoves","calculateValidMoves","calculateOldIndex","firstValidMove","constrainDirection","displayedCols","potentialMoves","targetOrder","move","displayedOrder","fragCount","groupFragCount","movingCols","gridCols","parents","__read$h","allDisplayedCols","allGridCols","movingDisplayedCols","otherDisplayedCols","otherGridCols","displayIndex","widthOfMovingDisplayedCols_1","leftColumn","numberComparator","displacedCol","isColumnHidden","movingIntervalId","intervalCount","failedMoveAttempts","moveInterval","pixelsToMove","pixelsMoved","scrollFeature","columnsThatCanPin","pinType","__extends$1x","__decorate$1u","BodyDropTarget","eSecondaryContainers","leftRowContainerCtrl","bottomLeftRowContainerCtrl","topLeftRowContainerCtrl","rightRowContainerCtrl","bottomRightRowContainerCtrl","topRightRowContainerCtrl","bottomCenterRowContainerCtrl","topCenterRowContainerCtrl","moveColumnFeature","bodyDropPivotTarget","currentDropListener","isDropColumnInPivotMode","__read$g","CssClassApplier","getHeaderClassesFromColDef","getColumnClassesFromCollDef","getToolPanelClassesFromColDef","getClassParams","classesOrFunc","classToUse","__spread$e","__extends$1w","__decorate$1t","HeaderCellComp","headerCompVersion","getColumnGroupChild","setUserCompDetails","getUserCompInstance","headerComp","eResize","eHeaderCompWrapper","selectAllGui","getSelectAllGui","destroyHeaderComp","headerCompGui","setDragSource","__extends$1v","__decorate$1s","HeaderGroupCellComp","setResizableDisplayed","afterHeaderCompCreated","headerGroupComp","__extends$1u","__decorate$1r","HeaderNavigationDirection","HeaderRowComp","headerComps","extraClass","COLUMN_GROUP","FLOATING_FILTER","setHeaderCtrls","destroyHeaderCtrls","oldComps","createHeaderComp","comps","headerCtrl","__extends$1t","__decorate$1q","instanceIdSequence$1","AbstractHeaderCellCtrl","columnGroupChild","parentRowCtrl","lastFocusEvent","getWrapperHasFocus","wrapperHasFocus","DOM_DATA_KEY_HEADER_CTRL","getParentRowCtrl","__extends$1s","SetLeftFeature","ariaEl","setColsSpanning","getColumnOrGroup","setLeftFirstTime","suppressMoveAnimation","oldLeftExists","animateInLeft","colOrGroup","oldActualLeft","actualLeft","indexColumn","__decorate$1p","__extends$1r","__decorate$1o","HoverFeature","addMouseHoverListeners","__extends$1q","__decorate$1n","HeaderFilterCellCtrl","filterExists","floatingFilterExists","setupWidth","setupLeft","setupHover","setupFocus","setupUserComp","setupSyncWithFilter","setupUi","updateFilterButton","eMenuIcon","nextFocusableEl","scrollToColumn","nextFocusableColumn","findNextColumnWithFloatingFilter","columModel","nextCol","focusInto","notFromHeaderWrapper","fromWithinHeader","fromTab","shouldFocusLast","setFocusedHeader","setLeftFeature","syncWithFilter","__extends$1p","__decorate$1m","ResizeFeature","canResize","canAutosize","destroyResizeFuncs","removeResize","autoSize","finishedWithResizeFunc","horizontalResizeService","addResizeBar","eResizeBar","onResizing","skipHeaderOnAutoSize_1","autoSizeColListener_1","touchListener_1","addResize","addRefreshFunction","resizeAmount","resizeAmountNormalised","normaliseResizeAmount","resizeStartWidth","resizeWithShiftKey","dragChange","notPinningLeft","__extends$1o","__decorate$1l","SelectAllFeature","cbSelectAllVisible","processingEventFromCheckbox","filteredOnly","currentPageOnly","cbSelectAll","getCheckboxGui","headerCellCtrl","showOrHideSelectAll","onModelChanged","onCbSelectAll","refreshSelectAllLabel","isCheckboxSelection","checkRightRowModelType","updateStateOfCheckbox","allSelected","getSelectAllState","ariaStatus","setAriaDescriptionProperty","refreshAriaDescription","rowModelType","__extends$1n","__decorate$1k","HeaderCellCtrl","refreshFunctions","userHeaderClasses","ariaDescriptionProperties","setupMovingCss","setupMenuClass","setupSortableClass","setupWrapTextClass","refreshSpanHeaderHeight","addColumnHoverListener","setupFilterCss","setupColId","setupClassesFromColDef","addActiveHeaderMouseListeners","setupSelectAll","refreshAria","onColumnValueChanged","onColumnRowGroupChanged","onColumnPivotChanged","lookupUserCompDetails","userCompDetails","createParams","menuEnabled","showColumnMenu","setSortForColumn","eGridHeader","selectAllFeature","onEnterKeyPressed","isMenuEnabled","setActiveHeader","refreshHeaderClasses","oldClasses","dragSourceElement","hideColumnOnExit","moveDragSource","createDragItem","unlockedColumns","calculateDisplayName","workOutDraggable","refreshHeaderComp","newCompDetails","attemptHeaderCompRefresh","checkDisplayName","updateSortableCssClass","refreshAriaSort","getColumnGroupPaddingInfo","numberOfParents","isSpanningTotal","groupHeaderHeight","wrapperElement","stopResizeObserver","isMeasuring","checkMeasuring","stopMeasuring","startMeasuring","refreshAriaMenu","descriptionArray","__extends$1m","__decorate$1j","GroupResizeFeature","calculateInitialValues","takeFromGroup","takeFromLeafCols","resizeTakeFromCols","resizeTakeFromStartWidth","resizeTakeFromRatios","normaliseDragChange","resizeColumns","preferredSize","getPreferredWidthForColumnGroup","resizeCols","resizeRatios","leafCols","__extends$1l","GroupWidthFeature","removeChildListenersFuncs","addListenersToChildrenColumns","onDisplayedChildrenChanged","removeListenersOnChildrenColumns","widthChangedListener","__decorate$1i","__extends$1k","__decorate$1h","HeaderGroupCellCtrl","addClasses","addAttributes","groupResizeFeature","providedColGroup","refreshExpanded","eHeaderGroup","isSuppressMoving","getDragItemForGroup","allColumnsOriginalOrder","allColumnsCurrentOrder","childSuppressesMoving","__extends$1j","__decorate$1g","instanceIdSequence","HeaderRowCtrl","headerCellCtrls","onColumnResized","getHeaderCellCtrl","getWidthForRow","sizes","numberOfFloating","groupHeight","numberOfGroups","thisRowHeight","oldCtrls","getColumnsInViewport","idOfChild","oldCtrl","isHeaderWrapperFocused","ctrlsToDisplay","getColumnsInViewportPrintLayout","getColumnsInViewportNormalLayout","actualDepth","getActualDepth","focusHeader","__extends$1i","__decorate$1f","__read$f","HeaderRowContainerCtrl","groupsRowCtrls","setupCenterWidth","setupPinnedWidth","setupDragAndDrop","registerHeaderContainer","dropContainer","bodyDropTarget","keepColumns","needNewInstance","sequence","focusedHeaderPosition","getFocusHeaderToUseAfterRefresh","groupRowCount","refreshColumnGroups","columnsRowCtrl","COLUMN","destroyPreviousComp","filtersRowCtrl","rowIndexMismatch","refreshFilters","allCtrls","getAllCtrls","setCtrls","restoreFocusOnHeader","__spread$d","setCenterWidth","setViewportScrollLeft","hiddenChanged","widthWithPadding","setPinnedContainerWidth","getHtmlElementForColumnHeader","__extends$1h","__decorate$1e","HeaderRowContainerComp","headerRowComps","rowCompsList","selectAndSetTemplate","eCenterContainer","pinnedLeft","pinnedRight","PINNED_LEFT_TEMPLATE","PINNED_RIGHT_TEMPLATE","CENTER_TEMPLATE","eRowContainer","destroyRowComps","destroyRowComp","prevGui","oldRowComps","ctrlId","existingComp","appendEnsuringDomOrder","__extends$1g","__decorate$1d","HeaderNavigationService","centerHeaderContainer","navigateVertically","fromHeader","rowLen","headerPositionUtils","getColumnVisibleParent","getColumnVisibleChild","nextRow","nextFocusColumn","skipColumn","navigateHorizontally","nextHeader","normalisedDirection","focusedHeader","findHeader","focusNextHeaderRow","nextRowIndex","findColAtEdgeForHeaderRow","columnToScrollTo","__extends$1f","__decorate$1c","GridHeaderCtrl","onPivotModeChanged","setupHeaderHeight","registerGridHeaderCtrl","totalHeaderHeight","setHeightAndMinHeight","shouldAllowOverflow","clearFocusedHeader","__extends$1e","GridHeaderComp","addContainer","__decorate$1b","__extends$1d","__decorate$1a","HorizontalResizeService","dragStartX","setResizeIcons","MouseEvent","setResizeCursor","disableUserSelect","resetIcons","__extends$1c","__decorate$19","StandardMenuFactory","showPopup","tabListener","trapFocusWithin","isKeyboardEvent","KeyboardEvent","focusableEl","findTabbableParent","__extends$1b","__decorate$18","TabbedLayout","getTemplate","tabbedItemScrollMap","addItem","activeItem","tabbedItem","afterDetachedCallback","eHeader","isRightKey","nextItem","showItemWrapper","eHeaderButton","isTargetUnderManagedComponent","findFocusableElementBeforeTabGuard","setAfterAttachedParams","afterAttachedParams","showFirstItem","titleLabel","showItem","itemWrapper","onItemClicked","lastScrollListener","bodyPromise","onlyUnmanaged","isKeyboardMode","afterAttachedCallback","keepScrollPosition","scrollableContainer_1","getScrollableContainer","scrollPosition_1","onActiveItemClicked","simpleHttpRequest","httpRequest","onreadystatechange","ServerSideTransactionResultStatus","__extends$1a","ResizeObserverService","polyfillFunctions","widthLastTime","heightLastTime","running","periodicallyCheckWidthAndHeight","suppressResize","doNextPolyfillTurn","schedulePolyfill","polyfillScheduled","__decorate$17","__extends$19","__decorate$16","AnimationFrameService","createTasksP1","sorted","createTasksP2","destroyTasks","ticking","scrollGoingDown","lastPage","lastScrollTop","taskCount","cancelledTasks","isPaginationActive","useAnimationFrame","isOn","verifyAnimationFrameOn","taskItem","createOrder","addTaskToList","cancelTask","taskList","sortTaskList","executeFrame","millis","p1TaskList","p1Tasks","p2TaskList","p2Tasks","frameStart","noMaxMillis","requestFrame","stopTicking","webkitRequestAnimationFrame","__extends$18","__decorate$15","AutoWidthCalculator","eHeaderCell","getHeaderCellForColumn","getAllCellsForColumn","addElementsToContainerAndGetWidth","eDummyContainer","eBodyContainer","cloneItemIntoDummy","dummyContainerWidth","getAutoSizePadding","eCellClone","cloneNode","eCloneParent","eCloneParentClassList","__extends$17","__decorate$14","__read$e","StickyRowFeature","createRowCon","destroyRowCtrls","stickyRowCtrls","containerHeight","isClientSide","getStickyRowCtrls","checkStickyRows","stickyRows","firstPixel","getFirstVisibleVerticalPixel","addStickyRow","stickyRow","lastChildBottom","lastAncestor","childrenAfterSort","storeBounds","childStore","getStoreBounds","heightPx","stickRowBottom","thisRowLastPx","firstPixelAfterStickyRows","firstMissingParent","refreshNodesAndContainerHeight","refreshStickyNode","stickRowNode","allStickyNodes","removedCtrls","addedNodes","ctrlsToDestroy","removedCtrl","__values$2","newCtrls","__spread$c","__extends$16","__decorate$13","__read$d","__spread$b","RowRenderer","destroyFuncsForColumnListeners","rowCtrlsByRowIndex","zombieRowCtrls","allRowCtrls","topRowCtrls","bottomRowCtrls","refreshInProgress","dataFirstRenderedFired","onPageLoaded","onBodyScroll","onDomLayoutChanged","stickyRowFeature","registerCellEventListeners","initialiseCache","redrawAfterModelUpdate","countProp","getKeepDetailRowsCount","cachedRowCtrls","RowCtrlCache","keepDetailRowsCount","updateAllRowCtrls","liveList","zombieList","cachedList","getFullWidthRowCtrls","refreshListenersToColumnsForCellComps","removeGridColumnListeners","forEachCellWithThisCol","leftChangedListener","firstRightPinnedChangedListener","lastLeftPinnedChangedListener","colDefChangedListener","destroyRows","domLayoutChanged","datasourceChanged","firstRenderedRow","lastRenderedRow","rowIndexesToRemove","removeRowCtrls","recycleRows","keepRenderedRows","newPage","onlyBody","getAllRowCtrls","refreshFloatingRowComps","refreshFloatingRows","getPinnedTopRowData","getRenderedIndexesForRowNodes","renderedRow","partialRefresh","indexesToRemove","getCellToRestoreFocusToAfterRefresh","suppressKeepFocus","getFocusCellToUseAfterRefresh","cellDomData","rowDomData","getLockOnRefresh","updateContainerHeights","scrollToTopIfNewData","rowsToRecycle","removeAllRowComps","dispatchDisplayedRowsChanged","restoreFocusedCell","releaseLockOnRefresh","suppressScrollToTop","setModelHeight","rowCtrlsLength","cellCtrlsLength","__values$1","getCellCtrls","refreshCellParams","fullWidthRowCtrl","cellRenderers","fullWidthRenderers","rowIdMap","mapRowNodes","isRowInMap","fullWidthRenderer","rowIdsMap","colIdsMap","stubNodeIndexes","ctrlsByIdMap","rowsToRemove","indexToRemove","newFocusedCell","removeRowCompsNotToDraw","indexesToDraw","indexesToDrawMap","indexesNotToDraw","calculateIndexesToDraw","checkRowToDraw","indexStr","doNotUnVirtualiseRow","updateOffset","workOutFirstAndLastRowsToRender","createOrUpdateRowCtrl","redrawFullWidthEmbeddedRows","fullWidthCtrl","rowNodesMap","rowCtrlsMap","executeInAWhileFuncs","addRow","getRowBuffer","rowBuffer","getRowBufferInPixels","bufferPixels","suppressRowVirtualisation","rowHeightsChanged","lastPixel","getCurrentPagePixelRange","pageFirstPixel","pageLastPixel","divStretchOffset","bodyVRange","bodyTopPixel","bodyBottomPixel","firstVisibleVPixel","ensureAllRowsInRangeHaveHeightsCalculated","firstRowIndex","pageFirstRow","pageLastRow","rowLayoutNormal","suppressRowCountRestriction","rowBufferMaxSize","firstDiffers","lastDiffers","topPixel","bottomPixel","ensureRowHeightsValid","rowHasFocus","isRowNodeFocused","rowIsEditing","rowIsDetail","isRowPresent","rowCtrlFromCache","renderedRows","rowPosition","isRangeInRenderedViewport","blockAfterViewport","entriesMap","entriesList","rowCtrlToDestroy","removeFromCache","rowNodeId","__extends$15","__decorate$12","ValueFormatterService","suppliedFormatter","useFormatterFromColumn","__extends$14","__decorate$11","PinnedRowModel","pinnedTopRows","pinnedBottomRows","getRowAtPixel","createNodesFromData","allData","nextRowTop_1","dataItem","idPrefix","getTotalHeight","forEachPinnedTopRow","forEachPinnedBottomRow","lastNode","TabGuardClassNames","ChangedPath","keepingColumns","nodeIdsToColumns","mapToItems","pathRoot","setInactive","depthFirstSearchChangedPath","pathItem","depthFirstSearchEverything","traverseEverything","forEachChangedNodeDepthFirst","traverseLeafNodes","includeUnchangedNodes","executeFromRootNode","createPathItems","newEntryCount","newEntry","populateColumnsMap","linkPathItems","thisItem","parentItem","addParentNode","canSkip","getValueColumnsForNode","colsForThisNode","getNotValueColumnsForNode","__extends$13","RowNodeBlock","STATE_WAITING_TO_LOAD","STATE_LOADING","loadFromDatasource","setStateWaitingToLoad","pageLoadFailed","isRequestMostRecentAndLive","STATE_FAILED","processServerFail","dispatchLoadCompleted","successCommon","pageLoaded","thisIsMostRecentRequest","weAreNotDestroyed","STATE_LOADED","processServerResult","EVENT_LOAD_COMPLETE","block","__extends$12","__decorate$10","RowNodeBlockLoader","activeBlockLoadsCount","blocks","RowNodeBlockLoader_1","maxConcurrentRequests","getMaxConcurrentDatasourceRequests","blockLoadDebounceMillis","checkBlockToLoadDebounce","performCheckBlocksToLoad","addBlock","loadComplete","checkBlockToLoad","removeBlock","BLOCK_LOADED_EVENT","BLOCK_LOADER_FINISHED_EVENT","printCacheStatus","loadAvailability","getAvailableLoadingCount","blocksToLoad","registerLoads","getBlockStates","getBlockStateJson","isLogging","__extends$11","__decorate$$","PaginationProxy","topDisplayedRowIndex","bottomDisplayedRowIndex","masterRowCount","paginateChildRows","isPaginateChildRows","onPaginationPageSizeChanged","startPixel","endPixel","startLimitIndex","endLimitIndex","calculatePages","modelUpdatedEvent","paginationChangedEvent","topRowBounds","bottomRowBounds","forEachNodeOnPage","getRowBounds","getPageForIndex","pageSize","pageNumber","isRowInPage","totalPages","setPageSize","calculatePagesAllRows","calculatePagesMasterRowsOnly","calculatedPagesNotActive","setPixelOffset","setZeroRows","adjustCurrentPageIfInvalid","getTopLevelRowCount","masterLastRowIndex","masterPageStartIndex","masterPageEndIndex","getTopLevelRowDisplayedIndex","firstIndexNotToShow","maxRowIndex","__extends$10","__decorate$_","StylingService","processAllCellClasses","onApplicableClass","onNotApplicableClass","processStaticCellClasses","classRules","classesToApply","classesToRemove","resultOfRule","this_1","singleClass","classOrClasses","cssClassItem","__extends$$","AgToggleButton","__extends$_","AgInputTextArea","__extends$Z","AgInputRange","setMinValue","setMaxValue","__extends$Y","__decorate$Z","AgSlider","eSlider","eventChanged","textValue","sliderValue","setSliderWidth","setTextFieldWidth","minValue","__extends$X","__decorate$Y","AgGroupComponent","suppressEnabledCheckbox","suppressOpenCloseIcons","initialItems","cbGroupEnabled","setEnabled","setAlignItems","hideEnabledCheckbox","hideOpenCloseIcons","setupExpandContract","refreshAriaStatus","refreshChildDisplay","eGroupClosedIcon","eGroupOpenedIcon","eTitleBar","toggleGroupExpand","showIcon","eToolbar","newCls","EVENT_EXPANDED","EVENT_COLLAPSED","hideItem","eTitle","addCssClassToTitleBar","skipToggle","refreshDisabledStyles","onEnableChange","__extends$W","__decorate$X","DIRECTION","TabGuardCtrl","skipTabGuardFocus","eTopGuard","eBottomGuard","focusInnerElement","providedFocusInnerElement","providedFocusIn","providedFocusOut","providedShouldStopEventPropagation","providedOnTabKeyDown","providedHandleKeyDown","activateTabGuards","guard","onFocus","tabGuardsAreActive","getGridTabIndex","deactivateTabGuards","fromBottom","getNextFocusableElement","focusable","findFocusableElements","forceFocusOutOfContainer","tabGuardToFocus","__extends$V","__read$c","TabGuardComp","initialiseTabGuard","createTabGuard","tabGuards","tabGuard","addTabGuards","tabGuardCtrl","TAB_GUARD_TOP","TAB_GUARD_BOTTOM","TAB_GUARD","topTabGuard","bottomTabGuard","removeAllChildrenExceptTabGuards","__spread$a","__extends$U","__assign$5","__decorate$W","AgMenuList","menuItems","parentGui","closeIfIsChild","handleNavKey","topMenu","findTopMenu","clearActiveItem","activeMenuItem","deactivate","addMenuItems","menuItemOrString","addSeparator","menuItemDef","menuItem","AgMenuItemComponent","isAnotherSubMenuOpen","isSubMenuOpen","EVENT_MENU_ITEM_SELECTED","EVENT_MENU_ITEM_ACTIVATED","activateFirstItem","currentItem","activate","nextParent","findNextItem","openChild","closeSubMenu","openSubMenu","foundCurrent","__extends$T","AgMenuPanel","wrappedComponent","closePanel","__decorate$V","__extends$S","__decorate$U","subMenuIsOpen","getClassName","addIcon","addName","addShortcut","addSubMenu","addTooltip","onItemSelected","subMenu","destroySubMenu","currentLevel","nextLevel","childMenu_1","cancelDeactivate","subMenu_1","menuPanel","subMenuGui_1","mouseEvent_1","mouseEnterListener_1","positionPopupForMenu","hideSubMenu","cancelActivate","onItemActivated","isCompact","shortcut","activateTimeoutId","deactivateTimeoutId","ACTIVATION_DELAY","__extends$R","__decorate$T","AgPanel","closable","hideTitleBar","setBodyComponent","setClosable","eTitleBarButtons","eContentWrapper","renderComponent","closeButtonComp","CLOSE_BTN_TEMPLATE","addTitleBarButton","onBtClose","bodyComponent","__extends$Q","__assign$4","AgDialog","isMaximizable","isMaximized","maximizeListeners","resizeListenerDestroy","lastPosition","maximizable","bringPopupToFront","setMaximizable","alwaysOnTop","toggleMaximize","refreshMaximizeIcon","maximizeIcon","minimizeIcon","clearMaximizebleListeners","destroyListener","maximizeButtonComp","buildMaximizeAndMinimizeElements","__decorate$S","__extends$P","__assign$3","__decorate$R","__read$b","FocusService","FocusService_1","addKeyboardModeEvents","docControllers","instancesMonitored","toggleKeyboardMode","removeKeyboardModeEvents","newControllers","__spread$9","currentGridCore","isKeyboardActive","keyboardModeActive","controllersForDoc","clearFocusedCellListener","onColumnEverythingChanged","unregisterGridCompController","gridCompController","focusedCellPosition","colFromColumnModel","isDomDataMissingInHierarchy","eBrowserCell","ePointer","getFocusEventParams","focusedColumn","focusedHeaderRowIndex","previousHeaderPosition","nextHeaderPosition","focusGridView","focusFirstHeader","isAnyCellFocused","exclude","focusableString","excludeString","excludeNodes","focusableElements","toFocus","referenceIndex","lastTabGuardIndex","onlyManaged","activeEl","managedContainers","getLastRow","getFirstRow","forceOut","focusNextInnerContainer","isDetailGrid","AG_KEYBOARD_FOCUS","__extends$O","__decorate$Q","__read$a","LoadingType","instanceIdSeq","PopupService","popupList","PopupService_1","sourceRect","getParentRect","keepXYWithinBounds","xRightPosition","xLeftPosition","nudgeX","calculatePointerAlign","postProcessCallback","callPostProcessPopup","updatePopupPosition","fromResizeObserver","horizontal","resizeObserverDestroyFunc_1","WAIT_FOR_POPUP_CONTENT_RESIZE","getPopupList","popupParent","sizeProperty","anchorProperty","offsetProperty","scrollPositionProperty","docElement","documentRect","isBody","offsetSize","sizeOfParent","keepPopupPositionedRelativeTo","initialDiffTop","initialDiffLeft","lastDiffTop","lastDiffLeft","leftPx","pRect","sRect","currentDiffTop","newTop","currentDiffLeft","newLeft","intervalId","destroyPositionTracker","stopAnchoringPromise","allThemes","__spread$8","setAlwaysOnTop","popupHidden","hidePopupOnKeyboardEvent","hidePopupOnMouseEvent","hidePopupOnTouchEvent","popupParams","isEventFromCurrentPopup","isEventSameChainAsOriginalEvent","originalMouseEvent","isAnchored","indexOfThisChild","mouseEventOrTouch","screenX_1","screenY_1","xMatch","yMatch","getWrapper","popupLen","alwaysOnTopList","onTopLength","innerEls","innerElsScrollMap","__extends$N","__decorate$P","VirtualList","listName","getItemHeight","addResizeObserver","setAriaProperties","onGridStylesChanged","destroyObserver","drawVirtualRows","focusRow","lastFocusedRowIndex","navigate","getLastFocusedRow","rowNumber","getComponentAt","rowComponent","forEachRenderedRow","getListItemHeight","viewportTopPixel","viewportScrolledBeforeRow","setComponentCreator","componentCreator","setComponentUpdater","componentUpdater","getRowHeight","getScrollTop","softRefresh","canSoftRefresh","clearVirtualRows","areRowsEqual","removeRow","ensureRowsRendered","refreshRows","insertRow","isRowSelected","OUTSIDE_ANGULAR_EVENTS","PASSIVE_EVENTS","VanillaFrameworkOverrides","isOutsideAngular","useCapture","isPassive","__extends$M","__decorate$O","__read$9","CellNavigationService","ctrlPressed","getNextCellToFocusWithCtrlPressed","getNextCellToFocusWithoutCtrlPressed","upKey","downKey","leftKey","getCellAbove","getCellBelow","getCellToLeft","getCellToRight","isCellGoodToFocusOn","lastCell","colToLeft","colToRight","getRowBelow","isLastRowInContainer","getNextStickyPosition","__spread$7","nextCtrl","rowBelow","getRowAbove","getLastBodyCell","getLastFloatingTopRow","rowAbove","getNextTabbedCellBackwards","getNextTabbedCellForwards","newRowIndex","newFloating","newColumn","__extends$L","__decorate$N","AlignedGridsService","consuming","fireColumnEvent","fireEvent","otherGrids","otherGridOptions","alignedGridService","onEvent","onColumnEvent","onScrollEvent","getMasterColumns","getColumnIds","colEvent","processColumnEvent","groupOpenedEvent","processGroupOpenedEvent","masterColumnGroup","otherColumnGroup","masterColumn","otherColumn","masterColumns","movedEvent","destColState","visibleEvent","pinnedEvent","resizedEvent","columnWidths_1","alignedGrids","__extends$K","__assign$2","__decorate$M","SelectionService","groupSelectsChildren","propChange","rowSelection","isMultiselect","lastSelectedNode","getLastSelectedNode","nodesChanged","selectRange","setLastSelectedNode","selectChildren","clearOtherNodes","updateGroupsFromChildrenSelections","fromNode","toNode","nodesToSelect","getNodesInRangeForSelection","childrenAfterAggFilter","selectedRows","getSelectionCount","filterFromSelection","newSelectedNodes","__read$8","changedPath","rowNodeToKeepSelected","groupsToRefresh","otherRowNode","syncInOldRowNode","syncInNewRowNode","topLevelNodes","getTopLevelNodes","maybeGroup","rowModelClientSide","getNodesToSelect","selectedCount","notSelectedCount","recursivelyAddChildren_1","childrenAfterFilter","__decorate$L","ColumnApi","isPinning","getAllDisplayedVirtualColumns","setColumnWidth","getPivotResultColumn","getLeftDisplayedColumnGroups","getCenterDisplayedColumnGroups","getRightDisplayedColumnGroups","getAllDisplayedColumnGroups","setPivotResultColumns","getPivotResultColumns","getAllColumns","getPrimaryColumns","__extends$J","__decorate$K","ValueService","initialised","cellExpressions","callColumnCellValueChangedHandler","forFilter","groupDataExists","aggDataExists","executeFilterValueGetter","executeValueGetter","cellValueGetter","openedGroup","getOpenedGroup","valueWasDifferent","setValueUsingField","valuesAreSame","fieldPieces","fieldPiece","getValueCallback","valueFromCache","getKeyForNode","__extends$I","__decorate$J","ExpressionService","expressionToFunctionCache","evaluateExpression","createExpressionFunction","javaScriptFunction","functionBody","createFunctionBody","theFunction","__extends$H","TemplateService","templateCache","waitingCallbacks","templateFromCache","callbackList","handleHttpResult","httpResult","__decorate$I","__extends$G","__decorate$H","LoggerFactory","logging","isLoggingFunc","__extends$F","__decorate$G","GridCtrl","eGridHostDiv","addRtlSupport","addOrRemoveKeyboardFocusClass","onGridSizeChanged","registerGridCtrl","showDropZones","showSideBar","showStatusBar","showWatermark","EnterpriseCoreModule","setRtlClass","setUserSelect","focusableContainers","getFocusableContainers","nextIdx","lastColumn","__extends$E","__decorate$F","GridComp","userSelect","webkitUserSelect","createTemplate","insertGridIntoDom","eRootWrapperBodyClassList","eRootWrapperBody","gridBodyComp","__extends$D","__decorate$E","__read$7","__spread$6","SortController","SortController_1","nextDirection","getNextSortDirection","columnsToUpdate","sortableRowGroupColumns","clearSortBarTheseColumns","updateSortIndex","lastColToChange","isCoupled","groupParent","lastSortIndexCol","allSortedCols","allSortedColsWithoutChanges","sortedCols","columnsToSkip","columnToClear","DEFAULT_SORTING_ORDER","notInArray","lastItemInArray","getIndexedSortMap","includeRedundantColumns","sortedRowGroupCols","isSortLinked","allColsIndexes","iA","iB","indexMap","groupDisplayCol","idx1","getSortModel","getSortOptions","canColumnDisplayMixedSort","isColumnSortCouplingActive","isGroupDisplayColumn","linkedColumns","sortableColumns","firstSort","__extends$C","ColumnHoverService","selectedColumns","__decorate$D","__extends$B","__decorate$C","ColumnAnimationService","executeNextFuncs","executeLaterFuncs","animationThreadCount","ensureAnimationCssClassPresent","executeLaterVMTurn","animationThreadCountCopy","nowFuncs","waitFuncs","__extends$A","__decorate$B","PaginationAutoPageSizeService","centerRowContainerCon","checkPageSize","notActive","update_1","newPageSize","isBodyRendered","__extends$z","__decorate$A","ValueCache","cacheVersion","neverExpires","__cacheVersion","__cacheData","__extends$y","__decorate$z","ChangeDetectionService","doChangeDetection","onlyChangedColumns","doAggregate","__extends$x","__decorate$y","AgComponentUtils","jsCompFunc","functionAdapter","adaptCellRendererFunction","Adapter","callbackResult","__extends$w","__decorate$x","ComponentMetadataProvider","componentMetaData","dateComponent","detailCellRenderer","loadingCellRenderer","loadingOverlayComponent","noRowsOverlayComponent","floatingFilterWrapperComponent","groupRowRenderer","statusPanel","toolPanel","__extends$v","__decorate$w","__read$6","HARD_CODED_SIZES","headerCellMinWidth","listItemHeight","BASE_GRID_SIZE","chartMenuPanelWidth","MAT_GRID_SIZE","BALHAM_GRID_SIZE","ALPINE_GRID_SIZE","SASS_PROPERTY_BUILDER","Environment","calculatedSizes","mutationObserver","fireGridStylesChangedEvent","attributeFilter","getSassVariable","themeFamily","calculateValueForSassProperty","themeElement","classesFromThemeElement","__spread$5","prevEl","currentClass","currentDiv","calculatedValue","isThemeDark","reg","themeMatch","sassVariableName","setRowHeightVariable","getPropertyValue","measuredMin","__extends$u","__decorate$v","RowContainerHeightService","uiBodyHeight","agWire","maxDivHeight","stretching","newScrollY","newBodyHeight","getUiBodyHeight","calculateOffset","setUiContainerHeight","pixelsToShave","modelHeight","uiContainerHeight","maxScrollY","scrollPercent","setDivStretchOffset","clearOffset","newOffset","newOffsetFloor","modelPixel","__extends$t","__decorate$u","SelectableService","updateSelectableAfterGrouping","recurseDown","nextChildrenFunc","rowSelectable","__extends$s","__decorate$t","PaginationComp","previousAndFirstButtonsDisabled","nextButtonDisabled","lastButtonDisabled","areListenersSetup","btFirst","btPrevious","btNext","btLast","paginationPanelEnabled","enableOrDisableButtons","updateRowLabels","setCurrentPageLabel","setTotalLabels","onBtFirst","onBtPrevious","onBtNext","onBtLast","pagesExist","toDisplay","lbCurrent","formatNumber","strPage","strTo","strOf","strFirst","strPrevious","strNext","strLast","toggleButtonDisabled","zeroPagesToDisplay","isZeroPagesToDisplay","onLastPage","lbFirstRowOnPage","lbLastRowOnPage","lastPageFound","setTotalLabelsToZero","lbTotal","lbRecordCount","moreText","__extends$r","__decorate$s","OverlayWrapperComponent","destroyRequested","manuallyDisplayed","overlayWrapperClassList","eOverlayWrapper","onRowDataUpdated","onNewColumnsLoaded","setWrapperTypeClass","Loading","NoRows","showOverlay","workItem","destroyActiveOverlay","activeOverlay","showOrHideOverlay","isSuppressNoRowsOverlay","__extends$q","__decorate$r","RowPositionUtils","pinnedBottomCount","pinnedTopCount","rowA","rowB","rowMax","rowMin","__extends$p","CellPositionUtils","createIdFromValues","cellA","cellB","colsMatch","floatingMatch","indexMatch","__decorate$q","__extends$o","UndoRedoAction","cellValueChanges","RangeUndoRedoAction","initialRange","finalRange","UndoRedoStack","maxStackSize","actionStack","DEFAULT_STACK_SIZE","getCurrentStackSize","__extends$n","__assign$1","__decorate$p","__read$5","UndoRedoService","activeCellEdit","activeRowEdit","isPasting","isRangeInAction","eventCell","isCellEditing","isRowEditing","cellValueChange","clearStacks","undoStack","redoStack","undoRedoLimit","addRowEditingListeners","addCellEditingListeners","addPasteListeners","addFillListeners","addCellKeyListeners","keepUndoRedoStack","operationPerformed","undoRedo","endEvent","undoRedoStack","opposingUndoRedoStack","rangeProperty","cellValueChangeProperty","undoRedoAction","processRange","processCell","valueExtractor","currentRow","startColumn","setLastFocusedCell","cellRangeParams","pushActionsToUndoStack","__spread$4","__extends$m","__decorate$o","HeaderPositionUtils","nextColumn","getGroupMethod","getColMethod","getHeaderRowType","isAnyChildSpanningHeaderHeight","currentRowType","isColumn","leafChild","ColumnDefFactory","colGroupDefs","addToResult","childDef","createDefFromColumn","parentDef","existingParentDef","createDefFromGroup","defCloned","colDefCloned","__decorate$n","__decorate$m","RowCssClassCalculator","extraCssClass","preProcessRowClassRules","rowCls","rowClass","rowClassParams","__extends$l","__decorate$l","RowNodeSorter","isAccentedSort","primaryColumnsSortGroups","doFullSort","sortOptions","sortedRowNodes","currentPos","compareRowNodes","sortedNodeA","sortedNodeB","comparatorResult","sortOption","providedComparator","getComparator","comparatorOnCol","groupLeafField","primaryColumn","allLeafChildren","displayCol","__extends$k","CtrlsService","readyCallbacks","CtrlsService_1","checkReady","stickyTopCenterRowContainerCtrl","stickyTopLeftRowContainerCtrl","stickyTopRightRowContainerCtrl","centerHeaderRowContainerCtrl","leftHeaderRowContainerCtrl","rightHeaderRowContainerCtrl","fakeHScrollComp","fakeVScrollComp","gridHeaderCtrl","p_1","createReadyParams","registerFakeHScrollComp","registerFakeVScrollComp","NAME","__decorate$k","__extends$j","CtrlsFactory","registry","controllerName","controllerClass","ControllerClass","__decorate$j","__extends$i","__decorate$i","AbstractFakeScrollComp","hideTimeout","initialiseInvisibleScrollbar","hideAndShowInvisibleScrollAsNeeded","addActiveListenerToggles","setScrollVisible","__extends$h","__decorate$h","FakeHScrollComp","spacerWidthsListener","setFakeHScrollSpacerWidths","refreshCompBottom","bottomPinnedHeight","vScrollShowing","rightSpacing","scrollOnRight","eRightSpacer","leftSpacing","eLeftSpacer","hScrollShowing","isSuppressHorizontalScroll","scrollContainerSize","__extends$g","__decorate$g","PinnedWidthService","checkContainerWidths","__extends$f","__decorate$f","RowNodeEventThrottle","dispatchExpandedDebounced","onRowGroupOpened","__decorate$e","__param$1","__read$4","isTrue","BarColumnLabelPlacement","GridOptionsService","domDataKey","propertyEventService","gridOptionLookup","__spread$3","globalEventHandler","mergeGridCommonParams","mergedParams","eventParams","callbackMethodName","allowEstimate","isNumeric","getMasterDetailRowHeight","detailRowHeight","domData","getAsyncTransactionWaitMillis","asyncTransactionWaitMillis","groupAggFiltering","__extends$e","LocaleService","getLocaleText","variableValues","localeText","localisedText","__decorate$d","__extends$d","FakeVScrollComp","adjustedScrollbarWidth","__decorate$c","__read$3","__spread$2","Grid","GridCoreCreator","gridComp","createUi","acceptChanges","registeredModules","createBeansList","createProvidedBeans","contextLogger","registerModuleUserComponents","registerStackComponents","registerControllers","setColumnsAndData","dispatchGridReadyEvent","isEnterprise","ctrlsFactory","agStackComponents","createAgStackComponentsList","passedViaConstructor","allModules","mapNames","addModule","currentModule","dependantModules","extractModuleEntity","userComponents","compMeta","seed","moduleAgStackComps","rowModelModules","rowModelModuleNames","ClientSideRowModelModule","InfiniteRowModelModule","ServerSideRowModelModule","ViewportRowModelModule","moduleBeans","beansNoDuplicates","moduleEntities","extractor","readyEvent","BaseComponentWrapper","OriginalConstructor","createWrapper","createMethod","addMethod","createMethodProxy","hasMethod","callMethod","DEFAULT_CHART_GROUPS","barGroup","pieGroup","lineGroup","scatterGroup","areaGroup","histogramGroup","combinationGroup","CHART_TOOL_PANEL_ALLOW_LIST","CHART_TOOLBAR_ALLOW_LIST","CHART_TOOL_PANEL_MENU_OPTIONS","__FORCE_MODULE_DETECTION","globalObj","HTMLButtonElement","HTMLSelectElement","HTMLInputElement","RecursionType","__read$2","__spread$1","ClientSideNodeManager","nextId","allNodesMap","ROOT_NODE_ID","suppressParentsInRowNodes","getCopyOfNodesMap","TOP_LEVEL","rowDataTran","rowNodeTransaction","nodesToUnselect","executeRemove","executeUpdate","executeAdd","updateSelection","newNodes","normalisedAddIndex","nodesBeforeIndex","nodesAfterIndex","rowIdsRemoved","lookupRowNode","setMasterForRow","masterRowLevel","expandByDefault","__extends$c","__decorate$b","__read$1","__spread","ClientSideRowModel","onRowHeightChanged_debounced","rowsToDisplay","refreshEverythingFunc","EVERYTHING","refreshEverythingAfterColsChangedFunc","afterColumnsChanged","onValueChanged","PIVOT","onGridStylesChanges","refreshMapListener","nodeManager","atLeastOneChange","rowAtStartPixel","rowAtEndPixel","setRowTopAndRowIndex","nextRowTop","displayedRowsMapped","changedPathActive","clearIfNotDisplayed","recurse","isRootNode","indexAtPixelNow","rowNodeAtPixelNow","keepEditingRows","highlight","lastHighlightedRow","filteredChildren","topLevelIndex","FILTER","FILTER_AGGREGATES","SORT","AGGREGATE","createChangePath","rowNodeTransactions","noTransactions","isSuppressModelUpdateAfterUpdateTransaction","transWithAddsOrDeletes","tx","buildRefreshModelParams","paramsStep","stepsMapped","everything","aggregate","paramsOrStep","doRowGrouping","doFilter","doPivot","doFilterAggregates","doSort","doRowsToDisplay","displayedNodesMapped","rowsMissing","firstInRange","lastInRange","firstRowHit","lastRowHit","groupsSelectChildren","lookingForLastRow","childOfLastRow","pixelToMatch","bottomPointer","topPointer","oldBottomPointer","oldTopPointer","midPointer","isRowInPixel","recursivelyWalkNodesAndCallback","recursionType","AfterFilter","AfterFilterAndSort","forEachPivotNode","PivotNodes","firstNode","nodeChildren","aggregationStage","filterAggregatesStage","usingPivotMode","recursiveExpandOrCollapse","actionRow","sortStage","groupStage","restoreGroupState","filterStage","pivotStage","getGroupState","res_1","rowDataUpdatedEvent","applyAsyncTransactionsTimeout","rowDataTransactionBatch","waitMillis","executeBatchUpdateRowData","callbackFuncsBound","rowNodeTrans","forceRowNodeOrder","tranItem","rowNodeTran","commonUpdateRowData","createRowNodeOrder","orderMap","flattenStage","resetRowHeightsForAllRowNodes","__extends$b","__decorate$a","FilterStage","filterService","__extends$a","__decorate$9","SortStage","sortActive","deltaSort","sortContainsGroupColumns","sortService","__extends$9","__decorate$8","FlattenStage","skipLeafNodes","showRootNode","topList","recursivelyAddToRowsToDisplay","addRowNodeToRowsToDisplay","rowsToFlatten","hideOpenParents","groupRemoveSingleChildren","groupRemoveLowestSingleChildren","isParent","isSkippedLeafNode","isRemovedSingleChildrenGroup","isRemovedLowestSingleChildrenGroup","neverAllowToExpand","isHiddenOpenParent","excludedParent","uiLevelForChildren","createDetailNode","masterNode","__extends$8","__decorate$7","SortService","getPostSortFunc","useDeltaSort","groupMaintainOrder","groupColumnsPresent","allDirtyNodes","calculateDirtyNodes","pullDownGroupDataForHideOpenParents","skipSortingPivotLeafs","childrenToBeSorted","indexedOrders_1","row1","row2","doDeltaSort","rowNodeSorter","updateChildIndexes","updateGroupDataForHideOpenParents","postSortRows","dirtyNodes","addNodesFunc","tran","allTouchedNodes","unsortedRows","oldSortedRows","untouchedRowsMap","touchedRows","sortedUntouchedRows","mapNodeToSortedNode","sortedChangedRows","mergeSortedArrays","listToSort","clearOperation","childRowNode","displayingGroupKey","parentToStealFrom","__extends$7","__decorate$6","FilterService","filterNodes","includeChildNodes","passBecauseChildren","passBecauseDataPasses","doingTreeDataFiltering","treeDataDepthFirstFilter_1","alreadyFoundInParent","foundInParent","__extends$6","__decorate$5","ImmutableService","getRowIdProvided","transactionAndMap","createTransactionForRowData","__read","orderIdMap","existingNodesMap","existingNode","__extends$5","__decorate$4","InfiniteBlock","parentCache","createRowNodes","blockNumber","getStartRow","getEndRow","pageStatus","createLoadParams","getRows","successCallback","failCallback","sortModel","getLastAccessed","lastAccessed","dontTouchLastAccessed","lastAccessedSequence","localIndex","finalRowCount","destroyRowNodes","__extends$4","__decorate$3","InfiniteCache","lastRowIndexKnown","blockCount","initialRowCount","dontCreatePage","blockId","createBlock","newBlock","purgeBlocksIfNeeded","getBlocksInOrder","destroyAllBlocks","destroyBlock","checkRowCount","onCacheUpdated","blockToExclude","blocksForPurging","maxBlocksProvided","maxBlocksInCache","blocksToKeep","emptyBlocksToKeep","MAX_EMPTY_BLOCKS_TO_KEEP","isBlockCurrentlyDisplayed","isBlockFocused","removeBlockFromCache","blockIndexStart","blockIndexEnd","blockToRemove","lastRowIndexPlusOverflow","overflowSize","forEachNodeDeep","destroyAllBlocksPastVirtualRowCount","blocksToDestroy","getRowNodesInRange","lastBlockId","inActiveRange","numberSequence","foundGapInSelection","hitFirstOrLast","__extends$3","__decorate$2","InfiniteRowModel","destroyCache","verifyProps","destroyDatasource","onColumnEverything","cacheParams","isSortModelDifferent","infiniteCache","resetCache","createModelUpdatedEvent","defaultIfInvalid","rowIndexForPixel","BaseCreator","getFileName","fileName","getDefaultFileExtension","getDefaultFileName","serializingSession","createSerializingSession","gridSerializer","serialize","BaseGridSerializingSession","processCellCallback","processHeaderCallback","processGroupHeaderCallback","processRowGroupCallback","columnsToExport","extractHeaderValue","extractRowCellValue","accumulatedRowIndex","shouldRenderGroupSummaryCell","createValueForGroupNode","processedValue","currentColumnIndex","isFooter","groupValue","Downloader","__extends$2","CsvSerializingSession","isFirstLine","suppressQuotes","columnSeparator","addCustomContent","beginNewLine","putInQuotes","mergeAcross","appendEmptyCells","onNewHeaderGroupingRow","onColumn","onNewHeaderGroupingRowColumn","onNewHeaderRow","onNewHeaderRowColumn","onNewBodyRow","onNewBodyRowColumn","stringValue","__extends$1","__decorate$1","CsvCreator","getMergedParams","export","isExportSuppressed","packagedFile","skipDefaultParams","GridSerializer","gridSerializingSession","getColumnsToExport","columnKeys","prepareSession","prependContent","exportColumnGroups","exportHeaders","processPinnedTopRows","processRows","processPinnedBottomRows","appendContent","serializeChain","processRow","rowSkipper","shouldRowBeSkipped","skipSingleChildrenGroup","skipLowestSingleChildrenGroup","isExplicitExportSelection","rowPositions","onlySelected","skipRowGroups","skipGroups","shouldSkipLowestGroup","shouldSkipCurrentGroup","skipPinnedTop","skipPinnedBottom","rowAccumulator","getCustomContentBelowRow","customFooter","customHeader","skipColumnGroupHeaders","recursivelyAddHeaderGroups","skipColumnHeaders","gridRowIterator_1","usingCsrm","usingSsrm","onlySelectedNonStandardModel","exportedRows","onlySelectedAllPages","replicateSortedOrder","compareNodes","directChildrenHeaderGroups","doAddHeaderHeader","gridRowIterator","collapsibleGroupRanges","collapsibleGroups","currentIdx","lastGroup","LINE_SEPARATOR","XmlFactory","createHeader","headerElement","standalone","headerStart","createXml","xmlElement","booleanTransformer","prefixedAttributes","prefixedSet","returnAttributeIfPopulated","rawMap","crcTable","ZipContainer","addFolders","addFolder","folders","isBase64","addFile","files","textOutput","buildFileStream","uInt8Output","buildUint8Array","clearStream","fData","totalFiles","foData","lL","cL","totalFiles_1","__values","totalFiles_1_1","currentFile","getHeader","fileHeader","folderHeader","buildFolderEnd","utfPath","isUTF8","convertTime","convertDate","extraFields","uExtraFieldPath","getFromCrc32Table","getConvertedContent","convertedContent","tLen","cLen","lLen","uint8","crc","AllCommunityModules","MD5","ieCompatibility","md5","md5cycle","ff","gg","hh","add32","cmn","md51","md5blk","md5blks","rhex","hex_chr","add32Compat","add32Std","lsw","__read$1c","LicenseManager","watermarkMessage","validateLicense","licenseKey","isWebsiteUrl","outputMissingLicenseKey","outputInvalidLicenseKey","extractLicenseComponents","isTrial","validateLicenseKeyForVersion","validateLegacyKey","extractExpiry","restrictionHashed","cleanedLicenseKey","hashStart","extractBracketedInformation","getLicenseDetails","trialExpired","expiry","formatDate","isDisplayWatermark","isLocalhost","getWatermarkMessage","getHostname","monthIndex","getGridReleaseDate","RELEASE_INFORMATION","keystr","utf8_decode","setLicenseKey","validateForTrial","gridReleaseDate","formattedExpiryDate","formattedReleaseDate","outputIncompatibleVersion","outputExpiredTrialKey","__extends$3l","GridLicenseManager","licenseManager","__extends$3k","WatermarkComp","shouldDisplayWatermark","eLicenseTextRef","VERSION$i","__extends$3j","__values$D","SOURCE_PASTE","EXPORT_TYPE_DRAG_COPY","EXPORT_TYPE_CLIPBOARD","CellClearType","ClipboardService","lastPasteOperationTime","navigatorApiFailed","ClipboardService_1","clipboard","readText","processClipboardData","pasteFromClipboardLegacy","handlePasteEvent","currentPastOperationTime","executeOnTempElement","textArea","refocusLastFocusedCell","getClipboardDelimiter","stringToArray","removeLastLineIfBlank","doPasteOperation","cellsToFlash","updatedRowNodes","hasOnlyOneValueToPaste","pasteIntoActiveRange","pasteStartingFromFocusedCell","strData","isNewline","insideQuotedField","out_row_1","out_column_1","out_position_1","previousChar","currentChar","ensureDataExists","pasteOperationFunc","dispatchFlashCells","fireRowChanged","abortRepeatingPasteIntoRows","getRangeSize","dataRowIndex","iterateActiveRanges","currentRowData","columnsToPasteInto","isPasteSingleValueIntoRange","pasteSingleValueIntoRange","pasteMultipleValues","updateCellValue","firstRowValues","firstRowValue","lastLine","clipboardGridData","rowPointer","skipGroupRows","clipboardRowData","getNextGoodRowNode","copyOrCutToClipboard","cut","includeHeaders","includeGroupHeaders","copyParams","shouldCopyRows","cellClearType","shouldSkipSingleCellRange","SelectedRows","copyFocusedCellToClipboard","FocusedCell","CellRange","clearCellsAfterCopy","clearSelectedRows","clearCellValue","selected_1","selected_1_1","columns_1","columns_1_1","onlyFirst","rowCallback","iterateActiveRange","isLastRange","rangeIndex","isLastRow","areAllRangesAbleToMerge","buildDataFromMergedRanges","buildDataFromRanges","copyDataToClipboard","columnsSet","rowPositionsMap","allRowPositions","allCellsToFlash","getRangeRowPositionsAndCellsToFlash","rowPositionAsString","exportedColumns","buildExportParams","exportParams","processCellForClipboard","userProvidedFunc","writeText","copyDataToClipboardLegacy","focusedElementBefore","execCommand","callbackNow","callbackAfter","eDoc","eTempInput","guiRoot","startRangeIndex","endRangeIndex","VERSION$h","__extends$3i","ExpandState","PrimaryColsHeaderPanel","createExpandIcons","eExpand","onSelectClicked","eFilterTextField","onFilterTextChanged","onMiniFilterKeyPress","showOrHideOptions","eExpandChecked","eExpandUnchecked","eExpandIndeterminate","setExpandState","EXPANDED","showFilter","suppressColumnFilter","showSelect","suppressColumnSelectAll","showExpand","suppressColumnExpandAll","groupsPresent","onFilterTextChangedDebounced","DEBOUNCE_DELAY","selectState","expandState","COLLAPSED","INDETERMINATE","setSelectionState","ColumnModelItem","isGroup","getDisplayName","getDept","isPassesFilter","passesFilter","setPassesFilter","__extends$3h","__read$1b","__spread$J","__values$C","ToolPanelContextMenu","initializeProperties","buildMenuItemMap","displayContextMenu","allowGrouping","allowValues","allowPivoting","menuItemMap","allowedFunction","activeFunction","activateLabel","deactivateLabel","activateFunction","groupedColumns","addColumnsToList","deActivateFunction","removeColumnsFromList","removeIcon","menuList","menuItemsMapped","getMappedMenuItems","isInactive","__extends$3g","ToolPanelColumnGroupComp","modelItem","allowDragging","focusWrapper","processingColumnStateChange","eDragHandle","checkboxGui","cbSelect","checkboxInput","onColumnStateChanged","onLabelClicked","onCheckboxChanged","onExpandChanged","setOpenClosedIcons","setupDragging","addVisibilityListenersToAllChildren","refreshAriaLabel","isSelectable","onSelectAllChanged","contextMenu","onChangeCommon","onExpandOrContractClicked","eColumnGroupIcons","nextState","getVisibleLeafColumns","extractCols","modelItemUtils","selectAllChildren","columnLabel","checkboxValue","visibilityLabel","selectedValue","workOutSelectedValue","readOnlyValue","workOutReadOnlyValue","visibleLeafColumns","checkedCount","uncheckedCount","isColumnChecked","colsThatCanAction","pivoted","grouped","aggregated","oldState","folderOpen","cbValue","__extends$3f","PRIMARY_COLS_LIST_ITEM_HOVERED","PrimaryColsListPanelItemDragFeature","virtualList","currentDragColumn","lastHoveredColumnItem","columnPanelItemDragStart","columnPanelItemDragEnd","createDropTarget","createAutoScrollService","getCurrentColumns","moveBlocked","virtualListGui","hoveredColumnItem","getDragColumnItem","clearHoveredItems","maxLen","getDisplayedColsList","normalizedRowIndex","getTargetIndex","getMoveDiff","targetColumn","columnItemComponent","isBefore","targetColumnIndex","adjustedTarget","__extends$3e","ToolPanelColumnComp","groupsExist","indent","anyFunctionActive","canBeToggled","canBeDragged","functionsReadOnly","noFunctionsAllowed","checkboxPassive","__extends$3d","UIColumnModel","PRIMARY_COLS_LIST_PANEL_CLASS","PrimaryColsListPanel","destroyColumnItemFuncs","destroyColumnTree","allColsTree","suppressSyncLayoutWithGrid","fireSelectionChangedEvent","expandGroupsByDefault","contractColumnSelection","columnListName","listItemElement","createComponentFromItem","suppressColumnMove","renderedGroup","columnComp","expandedStates","getExpandedStates","pivotModeActive","buildTreeFromProvidedColumnDefs","buildTreeFromWhatGridIsDisplaying","setExpandedStates","markFilteredColumns","flattenAndFilterModel","displayedColsList","forEachItem","colGroup","colDefService","syncLayoutWithGrid","setColumnLayout","buildListModel","columnExpandedListener","onColumnExpanded","recursivelyBuild","parentList","createGroupItem","createColumnItem","columnGroupDef","removeFunc","recursiveFunc","focusedRow","focusRowIfAlive","notifyListeners","doSetExpandedAll","setGroupsExpanded","groupIds","expandedGroupIds","unrecognisedGroupIds","getExpandState","expandedCount","notExpandedCount","doSetSelectedAll","selectAllChecked","getSelectionState","setFilterText","recursivelyCheckFilter","parentPasses","atLeastOneChildPassed","groupPasses_1","childPasses","fireGroupExpandedEvent","selectionState","__extends$3c","PivotModePanel","cbPivotMode","onBtPivotMode","__extends$3b","AggregationStage","noValueColumns","noUserAgg","aggDetails","createAggDetails","recursivelyCreateAggData","getGroupRowAgg","measureColumns","isSuppressAggFilteredOnly","notPivoting","aggregateRowNode","aggResult","measureColumnsMissing","pivotColumnsMissing","aggregateRowNodeUsingValuesOnly","aggregateRowNodeUsingValuesAndPivot","secondaryCol","getValuesFromMappedSet","getValuesPivotNonLeaf","aggregateValues","aggResults","currentColId","changedValueColumns","notChangedValueColumns","values2d","getValuesNormal","valueColumn","mappedSet","mapPointer","valueColumnCount","aggFuncOrString","pivotResultColumn","BatchRemover","allSets","allParents","removeFromChildrenAfterGroup","getSet","isRemoveFromAllLeafChildren","removeFromAllLeafChildren","preventRemoveFromAllLeafChildren","getAllParents","nodeDetails","__extends$3a","__read$1a","__spread$I","GroupStage","groupIdSequence","getDataPath","createGroupingDetails","transactions","handleTransaction","afterColsChanged","shotgunResetEverything","positionLeafsAndGroups","orderGroups","selectableService","unbalancedNode_1","leafNodes_1","groupNodes_1","groupedCols","includeParents","groupedColCount","batchRemover","removeNodes","moveNodesInWrongPath","insertNodes","parentsWithChildrenRemoved","removeEmptyGroups","sortChildren","getInitialGroupOrderComparator","recursiveSort","initialGroupOrderComparator","getExistingPathForNode","infoToKeyMapper","oldPath","newPath","getGroupInfo","moveNode","removeNodesInStages","insertOneNode","newParent","leafRowNodes","removeNodesFromParents","postRemoveCreateFillerNodes","nodeParents","forEachParentGroup","nodesToRemove","provided","batchRemoverIsLocal","batchRemoverToUse","nodeToRemove","newGroupNode_1","findParentForNode","possibleEmptyGroups","checkAgain","possibleEmptyGroup","mapKey","getChildrenMappedKey","groupShouldBeRemoved","addToParent","areGroupColsEqual","d1","checkAllGroupDataAfterColsChanged","groupInfo","setGroupData","noChangeInGroupingColumns","noFurtherProcessingNeeded","newGroupDisplayColIds","oldGroupingDetails","oldGroupDisplayColIds","newRowNodes","isMove","parentGroup","swapGroupWithUserNode","getOrCreateNextNode","fillerGroup","userGroup","createGroup","groupNode","setExpandedInitialValue","userCallback","getGroupInfoFromCallback","getGroupInfoFromGroupColumns","keyExists","__extends$39","__assign$O","__read$19","__spread$H","PivotColDefService","PivotColDefService_1","createPivotColumnDefs","uniqueValues","levelsDeep","pivotColumnGroupDefs","recursiveBuildGroup","pivotColumnDefs","extractColDefs","addRowGroupTotals","addExpandablePivotGroups","addPivotTotalsToGroups","uniqueValue","primaryPivotColumns","buildMeasureCols","primaryPivotColumnDefs","headerNameComparator","leafCols_1","newPivotKeys","createColDef","groups","generateColumnGroupId","measureCol","recursivelyAddSubTotals","groupDef","currentPivotColumnDefs","childAcc_1","grp","firstGroup_1","totalColDef","pivotValueColId","insertAfter","valueCols","valueCol","sameAggFuncs","recursivelyAddPivotTotal","childColIds","extractColIdsForValueColumn","createRowGroupTotal","parentChildren","addGroup","PIVOT_ROW_TOTAL_PREFIX","valueGroup","totalColumn","colDefToCopy","generateColumnId","userComparator","existingList","updatedList","measureColumnId","__extends$38","PivotStage","executePivotOn","executePivotOff","aggregationColumnsHashLastTime","bucketUpRowNodes","uniqueValuesChanged","setUniqueValues","aggregationColumns","aggregationColumnsHash","aggregationFuncsHash","aggregationColumnsChanged","aggregationFuncsChanged","aggregationFuncsHashLastTime","groupColumnsHash","groupColumnsChanged","groupColumnsHashLastTime","pivotColDefService","newValues","recursivelyBucketFilteredChildren","bucketRowNode","bucketChildren","mappedChildren","pivotColumn","result_1","getPivotColumnDefs","__extends$37","AGBigInt","AggFuncService","aggFuncsMap","AggFuncService_1","initialiseWithDefaultAggregations","AGG_SUM","aggSum","AGG_FIRST","aggFirst","AGG_LAST","aggLast","AGG_MIN","aggMin","AGG_MAX","aggMax","AGG_COUNT","aggCount","AGG_AVG","aggAvg","isAggFuncPossible","getFuncNames","allowed","funcExists","defaultAgg","userAllowedFuncs","valueToAdd","existingAggData","__extends$36","DropZoneColumnComp","dropZonePurpose","popupShowing","isFunctionsReadOnly","addElementClasses","eButton","setupAria","getColumnAndAggFuncName","aggFuncName","aggSeparator","asc","columnSort","isSortSuppressed","ariaInstructions","isGroupingZone","isAggregationZone","aggregationMenuAria","sortProgressAria","deleteAria","canSort","performSort_1","setTextValue","setupRemove","onShowAggFuncSelection","EVENT_COLUMN_REMOVE","isEnter","displayValueSanitised","createAggSelect","selectItem","rowToFocus","aggFuncStringTranslated","AggItemComp","itemSelected","__extends$35","__read$18","__spread$G","BaseDropZonePanel","STATE_NOT_DRAGGING","guiDestroyFunctions","childColumnComponents","resizeEnabled","eColumnDropList","toggleResizable","destroyGui","refreshGui","setupDropTarget","getAriaLabel","isNext","isPrevious","checkInsertIndex","getNewInsertIndex","insertIndex","mouseLocation","hoveredIndex","checkDragStartedBySelf","STATE_REARRANGE_COLUMNS","potentialDndColumns","STATE_NEW_COLUMNS_IN","goodDragColumns","isColumnDroppable","isRowGroupPanel","colModel","isPotentialDndColumns","rearrangeColumns","newColumnList","getExistingColumns","updateColumns","colsToAddNoDuplicates","getNonGhostColumns","focusedIndex","getFocusedItem","alternateElement","addIconAndTitleToGui","addEmptyMessageToGui","addColumnsToGui","restoreFocus","itemsToAddToGui","createColumnComponent","dndColumns","columnComponent","addArrow","addAriaLabelsToComponents","isExistingColumnsEmpty","eMessage","emptyMessage","__extends$34","RowGroupDropZonePanel","passBeansUp","dragAndDropIcon","__extends$33","PivotDropZonePanel","__extends$32","GridHeaderDropZones","createNorthPanel","topPanelGui","dropPanelVisibleListener","onDropPanelVisible","rowGroupComp","pivotComp","bothDisplayed","grouping","__extends$31","FilterAggregatesStage","isAggFilterActive","applyFilterToNode","preserveChildren","setAllChildrenCountTreeData","setAllChildrenCountGridGrouping","VERSION$g","__extends$30","GroupFilter","validateParams","updateGroups","updateGroupField","getUnderlyingFilters","getSourceColumns","eGroupField","eGroupFieldSelect","allSourceColumns","sourceColumn","selectedColumn","createGroupFieldSelectElement","updateSelectedColumn","filterColumnPairs","selectedFilter","filterPromises","addUnderlyingFilterElement","eUnderlyingFilter","afterGuiAttachedParams","selectedFilterColumnPair","getFilterColumnPair","EVENT_SELECTED_COLUMN_CHANGED","getSelectedFilter","getSelectedColumn","__extends$2$","GroupFloatingFilterComp","canShowUnderlyingFloatingFilter","setupUnderlyingFloatingFilterElement","setupReadOnlyFloatingFilterElement","onSelectedColumnChanged","updateDisplayedValue","eFloatingFilter","showingUnderlyingFloatingFilter","underlyingFloatingFilter","columnVisibleChangedListener","onColumnVisibleChanged","_model","__extends$2_","ValuesDropZonePanel","__extends$2Z","PrimaryColsPanel","primaryColsHeaderPanel","hideFilter","hideSelect","primaryColsListPanel","onGroupExpanded","onSelectionChange","onExpandAll","onCollapseAll","onSelectAll","onUnselectAll","expandGroups","collapseGroups","__extends$2Y","__assign$N","ColumnToolPanel","childDestroyFuncs","defaultParams","suppressPivotMode","suppressRowGroups","suppressValues","suppressPivots","isRowGroupingModuleLoaded","pivotModePanel","primaryColsPanel","rowGroupDropZonePanel","valuesDropZonePanel","pivotDropZonePanel","setLastVisible","pivotModeListener_1","resetChildrenHeight","setPivotModeSectionVisible","setRowGroupsSectionVisible","setValuesSectionVisible","setPivotSectionVisible","setResizers","columnDrop","columnDropEls","lastVisible","expandColumnGroups","collapseColumnGroups","destroyChildren","__extends$2X","HorizontalResizeComp","setElementToResize","elementToResize","setInverted","dispatchResizeEvent","ended","startingWidth","isEnd","inverted","setMaxWidth","setMinWidth","__extends$2W","SideBarButtonComp","getToolPanelId","eToggleButton","onButtonPressed","labelKey","labelDefault","eIconWrapper","iconKey","EVENT_TOGGLE_BUTTON_CLICKED","__extends$2V","SideBarButtonsComp","buttonComps","setToolPanelDefs","toolPanelDefs","addButtonComp","setActiveButton","buttonComp","EVENT_SIDE_BAR_BUTTON_CLICKED","toolPanelId","clearButtons","SideBarDefParser","toParse","toolPanels","DEFAULT_COLUMN_COMP","DEFAULT_FILTER_COMP","defaultToolPanel","comps_1","lookupResult","DEFAULT_BY_KEY","parseComponents","hiddenByDefault","__extends$2U","ToolPanelWrapper","setupResize","resizeBar","setToolPanelDef","setToolPanelComponent","compInstance","toolPanelCompInstance","setResizerSizerSide","__extends$2T","SideBarComp","toolPanelWrappers","sideBarButtonsComp","onToolPanelButtonClicked","setSideBarDef","clearDownUi","sideBarGui","openPanel","currentButton","innerButton","destroyToolPanelWrappers","sideBarRaw","sideBar","shouldDisplaySideBar","setupToolPanels","resizerSide","FiltersToolPanelModule","currentlyOpenedKey","raiseToolPanelVisibleEvent","toolPanelWrapper","previousKey","oldEvent","activeToolPanel","ToolPanelColDefService","isColGroupDef","invalidColIds","createDummyColGroup","children_1","mappedResults","syncLayoutCallback","leafPathTrees","getLeafPathTrees","mergeLeafPathTrees","getLeafPathTree","leafPathTree","allPrimaryGridColumns","pathA","pathB","mergeTrees","treeA","treeB","mergeResult","groupToMerge","addChildrenToGroup","currentGroup","groupToAdd","currentSubGroup","currentSubGroupToAdd","existingChildIds","childGroupAlreadyExists","lastChildIsDifferent","subGroupIsSplit","subGroup","VERSION$f","ModelItemUtils","colTree","extractAllLeafColumns","setAllColumns","setAllPivot","setAllVisible","allItems","colStateItems","setAllPivotPassive","setAllPivotActive","copyOfPivotColumns","copyOfValueColumns","copyOfRowGroupColumns","pivotChanged","rowGroupChanged","VERSION$e","workbook","ss","xmlns","excelWorkbook","Width","styleId","MergeAcross","StyleID","ws","documentProperties","Vertical","Horizontal","Indent","ReadingOrder","readingOrder","Rotate","ShrinkToFit","shrinkToFit","VerticalText","verticalText","WrapText","borders","Position","LineStyle","lineStyle","Weight","Color","Bold","bold","FontName","fontName","Italic","italic","Outline","Shadow","StrikeThrough","strikeThrough","Underline","underline","VerticalAlign","verticalAlign","CharSet","Family","family","interior","Pattern","PatternColor","patternColor","protection","Protected","protected","HideFormula","hideFormula","numberFormat","ID","ExcelXmlFactory","createExcel","currentWorksheet","excelXmlHeader","docProps","eWorkbook","wb","docProperties","stylesXmlElement","styleXmlElement","addProperty","factoryMode","SINGLE_SHEET","INCH_TO_EMU","numberFormatMap","pixelsToPoint","pointsToPixel","pixelsToEMU","getFontFamilyId","getHeightFromProperty","finalHeight","setExcelImageTotalWidth","columnsInSpan","setExcelImageTotalHeight","totalHeight","nextRowHeight","createXmlPart","getExcelColumnName","tableIdx","__assign$M","__read$17","__spread$F","BaseExcelSerializingSession","mixedStyles","mixedStyleCounter","stylesByIds","baseExcelStyles","excelStyles","customContent","rowObj","excelStyleId","getStyleId","createCell","getDataTypeForValue","createMergedCell","outlineLevel","currentCells","headerRowHeight","collapsibleRanges","styleIds","styleLinker","HEADER_GROUPING","onNewRow","onNewHeaderColumn","onNewBodyColumn","convertColumnToExcel","longestRow","sheetName","isFormula","autoConvertFormulas","isNumerical","getStyleById","nameForCol","HEADER","onNewColumnAccumulator","skipCols","valueForCell","BODY","addedImage","addNewMixedStyle","excelID","excelId","resultantStyle","excelStyle","ExcelXmlSerializingSession","actualStyle","typeTransformed","getValueTransformed","suppressTextAsCDATA","cdataStart","cdataEnd","cdataEndRegex","convertBoolean","numOfCells","coreFactory","author","jsonDate","dcterms","dcmitype","xsi","contentTypeFactory","ContentType","Extension","PartName","__read$16","__spread$E","contentTypesFactory","sheetLen","worksheets","sheetsWithImages","ExcelXlsxFactory","worksheetImages","imageTypesObject","workbookImageIds","imageDocs","imageTypes","getAnchor","imageAnchor","getExt","recolor","getNvPicPr","descr","altText","preferRelativeResize","getColorDetails","saturation","tint","getDuoTone","primaryColor","secondaryColor","getBlipFill","blipChildren","transparency","amt","bright","contrast","getSpPr","imageBoxSize","xfrm","prst","getImageBoxSize","fitCell","getPicture","worksheetImageIndex","drawingFactory","sheetIndex","sheetImages","sheetImageIds","worksheetImageIds","boxSize","editAs","__read$15","getColorChildren","lastClr","colorScheme","__read$14","getFont$1","typeface","panose","fontScheme","__read$13","getPropertyVal","getGs","schemeColor","satMod","lumMod","getSolidFill","getGradFill","rotWithShape","gs1","gs2","gs3","lin","ang","scaled","getLine","cmpd","algn","lim","getEffectStyle","blurRad","getFillStyleList","getLineStyleList","getEffectStyleList","getBgFillStyleList","formatScheme","themeElements","officeTheme","buildSharedString","strMap","sharedStrings","uniqueCount","numberFormatFactory","formatCode","numFmtId","numberFormatsFactory","numberFormats","fontFactory","colorTheme","scheme","fontsFactory","fonts","fillFactory","patternType","fgTheme","fgTint","fgRgb","bgRgb","bgIndexed","pf","indexed","fillsFactory","fills","getWeightName","mappedBorderNames","Dot","Dash","Double","DashDot","DashDotDot","SlantDashDot","mediumBorders","colorMap","Solid","Gray50","Gray75","Gray25","HorzStripe","VertStripe","ReverseDiagStripe","DiagStripe","DiagCross","ThickDiagCross","ThinHorzStripe","ThinVertStripe","ThinReverseDiagStripe","ThinDiagStripe","ThinHorzCross","ThinDiagCross","Gray125","Gray0625","horizontalAlignmentMap","Automatic","Center","Fill","Justify","CenterAcrossSelection","Distributed","JustifyDistributed","verticalAlignmentMap","Top","Bottom","convertLegacyPattern","convertLegacyColor","convertLegacyBorder","namedWeight","mappedName","convertLegacyHorizontalAlignment","convertLegacyVerticalAlignment","borderFactory$1","leftChildren","rightChildren","topChildren","bottomChildren","diagonalChildren","bordersFactory","getReadingOrderId","alignmentFactory","textRotation","protectionFactory","xfFactory","xf","borderId","fillId","fontId","xfId","applyAlignment","applyProtection","applyBorder","applyFill","applyFont","applyNumberFormat","cellStylesXfsFactory","xfs","cellXfsFactory","borderFactory","builtinId","cellStylesFactory","cellStyles","__assign$L","stylesMap","registeredNumberFmts","registeredFonts","registeredFills","registeredBorders","registeredCellStyleXfs","registeredCellXfs","registeredCellStyles","getStyleName","resetStylesheetValues","registerFill","convertedPattern","convertedFillColor","convertedPatternColor","currentFill","registerNumberFmt","currentFormat","registerBorders","bottomStyle","topStyle","leftStyle","rightStyle","bottomColor","topColor","leftColor","rightColor","currentBorder","clS","clC","crS","crC","ctS","ctC","cbS","cbC","registerFont","utf8Name","convertedColor","familyId","convertedUnderline","convertedVerticalAlign","currentFont","registerStyle","currentNumberFmt","stylesheetFactory","defaultFontSize","cellStylesXfs","cellXfs","defaultPivotStyle","defaultTableStyle","_currentSheet","sheetFactory","sheetId","sheetsFactory","workbookFactory","getExcelCellWidth","bestFit","excelWidth","customWidth","convertLegacyType","cellFactory","convertedType","__read$12","__spread$D","addEmptyCells","rowIdx","mergeMap","posCounter","excelPos","mergedCells","shouldDisplayCell","rowFactory","customHeight","spans","mergeCellFactory","getMergedCellsAndAddColumnGroups","cellsWithCollapsibleGroups","lastCol","merges","cellIdx","outputRow","rangeMap","currentRange","rangeString","refCol","currentOutlineLevel","getPageOrientation","addSheetData","sheetNumber","addMergeCells","mergeCells","mergedCell","addPageMargins","margins","addPageSetup","pageSetup","horizontalDpi","verticalDpi","paperSize","replaceHeaderFooterTokens","getHeaderPosition","applyHeaderFontStyle","headerString","processHeaderFooterContent","curr","buildHeaderFooter","headerFooterConfig","headersAndFooters","headerFooter","namePrefix","nameSuffix","addHeaderFooter","differentFirst","differentOddEven","even","addDrawingRel","addSheetPr","summaryBelow","addSheetFormatPr","maxOutline","baseColWidth","outlineLevelRow","worksheetFactory","createWorksheetChildren","relationshipFactory","Id","Target","relationshipsFactory","relationship","__read$11","__spread$C","addSheetName","sheetNames","createWorksheet","buildImageMap","currentSheetIndex","registeredImage","calculatedImage","currentSheetImages","currentImage","buildSheetImageMap","worksheetImageIdMap","getStringPosition","resetFactory","createWorkbook","createStylesheet","createSharedStrings","createCore","createContentTypes","createRels","rs","createTheme","createWorkbookRels","createDrawing","createDrawingRel","XMLArr","createWorksheetDrawingRel","currentRelationIndex","ExcelXlsxSerializingSession","addImageToCell","__assign$K","hasImages","imgCounter_1","firstImage","imageRelationCounter","createImageRelationsForSheet","contents","drawingFolder","drawingFileName","relFileName","worksheetRelFile","ExcelCreator","setExportMode","packageFile","getExportMode","isXlsx","isHeader","isGroupHeader","headerClasses","applicableStyles","VERSION$d","EXPAND_STATE","FiltersToolPanelHeaderPanel","preConstruct","onSearchTextChanged","showFilterSearch","suppressFilterSearch","suppressExpandAll","filterGroupsPresent","onSearchTextChangedDebounced","searchText","currentExpandState","ToolPanelFilterComp","hideHeader","eFilterName","eFilterToolPanelHeader","toggleExpanded","onFilterOpened","eFilterIcon","onFilterDestroyed","getColumnFilterName","removeFilterElement","addFilterElement","collapse","filterPanelWrapper","underlyingFilter","filterContainerEl","agFilterToolPanelBody","refreshFilter","refreshVirtualList","ToolPanelFilterGroupComp","childFilterComps","expandedCallback","showingColumn","filterGroupComp","setGroupTitle","refreshFilterClass","addExpandCollapseListeners","addFilterChangedListeners","getFilterGroupName","filterGroupName","getFilterGroupId","hideGroupItem","hideGroup","forEachToolPanelFilterChild","collapseListener","getColumnGroupName","getColumnName","destroyFilters","FiltersToolPanelListPanel","filterGroupComps","syncFilterLayout","toolPanelColDefService","setFiltersLayout","recreateFilters","expansionState","getExpansionState","recursivelyAddComps","setFirstAndLastVisible","searchFilterText","searchFilters","fireExpandedEvent","recursivelyAddFilterGroupComps","shouldDisplayFilter","filtersExistInChildren","newDepth","recursiveGetExpansionState","expandFilterGroups","updatedGroupIds","updateGroupExpandState","filterGroup","expandFilters","updatedColIds","anyChildrenChanged_1","updateFilterExpandState","unrecognisedColIds","updateExpandCounts","performFilterSearch","searchFilter","firstVisible","groupName","recursivelySearch","filterItem","groupNamePasses","alreadyPassed","anyChildPasses","firstIdx","lastIdx","__assign$J","FiltersToolPanel","listenerDestroyFuncs","filtersToolPanelHeaderPanel","filtersToolPanelListPanel","hideExpand","hideSearch","onSearchChanged","setFilterLayout","collapseFilterGroups","collapseFilters","VERSION$c","TimeInterval","rangeCallback","_encode","_decode","_rangeCallback","e0","CountableTimeInterval","getOffset","snapTo","initialOffset_1","encode$b","decode$b","millisecond","durationSecond","durationMinute","durationHour","durationDay","durationWeek","durationMonth","durationYear","offset$2","getTimezoneOffset","encode$a","decode$a","offset$1","encode$9","decode$9","minute","encode$8","decode$8","hour","encode$7","utc","decode$7","baseSunday","weekday","sunday","monday","tuesday","wednesday","thursday","friday","saturday","encode$6","decode$6","encode$5","decode$5","setFullYear","setMonth","encode$4","decode$4","utcMinute","encode$3","decode$3","utcHour","encode$2","decode$2","setUTCDate","setUTCHours","utcDay","encode$1","decode$1","utcMonth","setUTCFullYear","setUTCMonth","utcYear","MOBILE","isDesktop","HdpiCanvas","domLayer","overrideDevicePixelRatio","_container","_enabled","_pixelRatio","NaN","setPixelRatio","snapshot","resetTransform","restore","toImage","getDataURL","fileFormat","overrideScale","imageRendering","_textMeasuringContext","_svgText","createElementNS","svgText","_has","textMetrics","textMeasuringContext","measureSvgText","textSizeCache","fontCache","size_1","getBBox","$save","$restore","$setTransform","verifyDepthZero","name_1","__assign$I","__read$10","BBox","containsPoint","collidesBBox","isInfinite","shrink","grow","paddingCopy","boxes","__read$$","AxB","multiplySelf","preMultiplySelf","inverse","rD","inverseTo","invertSelf","transformBBox","xx","yx","yy","h_w","h_h","toContext","flyweight","sourceMatrix","updateTransformMatrix","scalingX","scalingY","translationX","translationY","bbcx","bbcy","scalingCenterX","scalingCenterY","rcx","rcy","rotationCenterX","rotationCenterY","ty","tx4","ty4","fromContext","domMatrix","ID_MAP","RedrawType","createId$1","windowValue","WINDOW","evalAvailable","EVAL_USEABLE","SceneChangeDetection","TRIVIAL","changeCb","convertor","checkDirtyOnAssignment","privateKey","setterJs","getterJs","markDirty","markDirtyTransform","_dirtyPath","_dirtyFont","ChangeDetectable","MAJOR","_source","markClean","_opts","isDirty","__values$B","__read$_","__spread$B","PointerEvents","zIndexChangedCallback","dirtyZIndex","zIndexChanged","serialNumber","_nextSerialNumber","isContainerNode","childSet","inverseMatrix","_dirtyTransform","zIndexSubOrder","All","_datum","_parent","_setLayerManager","_layerManager","nodes_1","nodes_1_1","calculateCumulativeMatrix","computeTransformMatrix","inverseTransformPoint","inverseTransformBBox","pickNode","hit","computeBBox","findNodes","childResult","computeTransformedBBox","renderCtx","nodesRendered","clearBBox","parentType","visibilityChanged","e_5","dirtyCount","nodeCount","childCount","childVisibleCount","childDirtyCount","e_5_1","ascendingStringNumberUndefined","compoundAscending","toLiteral","doOnceFlags$1","doOnce$1","__read$Z","__spread$A","logContent","errorOnce","__assign$H","__values$A","__read$Y","__spread$z","Group","lastBBox","moveLayer","isLayer","removeLayer","addLayer","getComputedOpacity","getVisibility","MINOR","dirty","forceRender","clipBBox","resized","canvasCtxTransform","isChildDirty","currentBBox","layersSkipped","nodesSkipped","groupVisible","ctxTransform","clipCtx","globalAlpha","childRenderContext","children_1_1","layersRendered","beginPath","moveTo","lineTo","closePath","setClipRectInGroupCoordinateSpace","HdpiOffscreenCanvas","transferToImageBitmap","__assign$G","__awaiter$f","_arguments","__generator$f","__read$X","__spread$y","__values$z","buildSceneNodeHighlight","Scene","_nextZIndex","_nextLayerId","_root","dirtyTree","renderBoundingBoxes","sceneNodeHighlight","pendingSize","lessThanZero","nan","sortLayers","domCanvases","newLayerIndex","newZIndex","newZIndexSubOrder","strip","layers_1","layers_1_1","debugSplitTimes","extraDebugStats","canvasCleared","redrawType","buildTree","debugStats","debugNodes","buildDirtyTree","debugSceneNodeHighlight","renderCtxStats","pct","rendered","time_1","splits","fillRect","stats_1","stats_1_1","regexpPredicate","stringPredicate","sceneNodeHighlight_1","sceneNodeHighlight_1_1","strokeStyle","strokeRect","strokeText","childTree","treeNodeName","childrenDirtyTree","allEventListeners","hasEventListener","clearEventListeners","isString$1","isStringObject$1","isDate$1","isDiscrete","isContinuous","isNumber$4","checkDatum","isContinuousScale","__values$y","BREAK_TRANSFORM_CHAIN","CONFIG_KEY","initialiseConfig","propertyKeyOrSymbol","valueStoreKey","setters","getters","prevSet","prevGet","setters_1","setters_1_1","transformFn","addTransformToInstanceProperty","createDeprecationWarning","Deprecated","DeprecatedAndRenamedTo","mapValue","warnDeprecated","__read$W","validColorString","parseHex","stringToRgba","nameToHex","fromHexString","fromRgbaString","tryParseFromString","rgba","fromHSB","HSBtoRGB","padHex","toHexString","toRgbaString","fractionDigits","toHSB","RGBtoHSB","gc_1","derive","hueShift","saturationFactor","brightnessFactor","opacityFactor","hsb","brighter","darker","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","blanchedalmond","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkgrey","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","greenyellow","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightgrey","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","rebeccapurple","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","teal","thistle","tomato","turquoise","violet","wheat","whitesmoke","yellow","yellowgreen","Validate","cleanKey","targetClass","targetClassName","predicateWithMessage","OPTIONAL","ARRAY","OPT_ARRAY","predicates","isComparable","otherField","FUNCTION","OPT_FUNCTION","BOOLEAN","OPT_BOOLEAN","STRING","OPT_STRING","DATE","OPT_DATE","DATETIME_MS","NUMBER","OPT_DATETIME_MS","OPT_DATE_OR_DATETIME_MS","colorMessage","COLOR_STRING","OPT_COLOR_STRING","COLOR_STRING_ARRAY","OPT_COLOR_STRING_ARRAY","OPT_NUMBER","NUMBER_OR_NAN","NUMBER_ARRAY","OPT_NUMBER_ARRAY","STRING_ARRAY","STRING_UNION","BOOLEAN_ARRAY","FONT_WEIGHTS","FONT_STYLE","OPT_FONT_STYLE","FONT_WEIGHT","OPT_FONT_WEIGHT","LINE_DASH","OPT_LINE_DASH","LINE_CAPS","LINE_CAP","LINE_JOINS","LINE_JOIN","INTERACTION_RANGES","INTERACTION_RANGE","Layers","ChartAxisDirection","__values$x","DEFAULT_TOOLTIP_CLASS","defaultTooltipCss$1","toTooltipHtml$1","POSITION_TYPES","POSITION_TYPE","TooltipPosition","canvasElement","enableInteraction","lastClass","showTimeout","showArrow","tooltipRoot","IntersectionObserver","entries_1_1","intersectionRatio","tooltipDocuments","styleElement","unobserve","updateClass","newClass","toggleClass","instantly","actual","canvasRect","naiveLeft","naiveTop","windowBounds","getWindowBoundingBox","maxLeft","maxTop","offsetApplied","constrained","pointerLeftOntoTooltip","classListContains","__assign$F","__values$w","__read$V","__spread$x","SeriesNodePickMode","warnSeriesDeprecated","keyProperty","continuous","valueProperty","sumProperties","SeriesNodeBaseClickEvent","nativeEvent","series","seriesId","_series","SeriesNodeClickEvent","SeriesNodeDoubleClickEvent","SeriesItemHighlightStyle","stroke","SeriesHighlightStyle","dimOpacity","TextHighlightStyle","HighlightStyle","SeriesTooltip","SeriesTooltipInteraction","Series","useSeriesGroupLayer","useLabelLayer","pickModes","NEAREST_BY_MAIN_AXIS_FIRST","directionKeys","rootGroup","nodeDataRefresh","showInLegend","nodeClickRange","_declarationOrder","highlightStyle","contentGroup","SERIES_LAYER_ZINDEX","highlightGroup","highlightNode","highlightLabel","labelGroup","SERIES_LABEL_ZINDEX","hasData","visibleChanged","getBandScalePadding","inner","getKeys","resolvedDirection","resolveKeyDirection","array_1","array_1_1","addValue","markNodeDataDirty","getOpacity","isItemIdHighlighted","defaultStrokeWidth","highlightedDatum","highlightManager","getActiveHighlight","itemId","limitPickModes","pickModes_1","pickModes_1_1","pickMode","EXACT_SHAPE_MATCH","pickNodeExactShape","NEAREST_BY_MAIN_CATEGORY_AXIS_FIRST","pickNodeMainAxisFirst","NEAREST_NODE","pickNodeClosestDatum","_point","_requireCategoryAxis","fireNodeClickEvent","eventObject","getNodeClickEvent","fireNodeDoubleClickEvent","getNodeDoubleClickEvent","toggleSeriesItem","_itemId","toggleOtherSeriesItems","_seriesToggled","_datumToggled","_suggestedEnabled","fixNumericExtent","calculatePadding","highlightedZIndex","Padding$1","Padding","Selection","classOrFactory","_nodes","_factory","each","iterate","selectByClass","Class","selectByTag","Gradient","stops","twoPi","normalizeAngle360","normalizeAngle360Inclusive","normalizeAngle180","toRadians$1","LinearGradient","createGradient","quarteredAngle","diagonalAngle","gradient_1","createLinearGradient","addColorStop","LINEAR_GRADIENT_REGEXP","Shape","lastInstanceId","defaultStyles","lineDash","lineDashOffset","lineCap","lineJoin","fillShadow","createInstance","_setParent","restoreOwnStyles","restoreAllStyles","restoreOverriddenStyles","protoStyles","updateGradient","linearGradientMatch","colors_1","colorsPart","colorRegex","align","alignedStart","fillStroke","renderFill","renderStroke","applyFillAlpha","applyShadow","shadowOffsetX","shadowOffsetY","shadowBlur","blur","setLineDash","isPointInPath","SceneFontChangeDetection","Text","_splitText","_font","getFont","getPreciseBBox","getApproximateBBox","baselineDistance","fontBoundingBoxAscent","emHeightAscent","fontBoundingBoxDescent","emHeightDescent","getVerticalOffset","firstLineHeight","lineSize","getLineHeight","renderLines","renderCallback","lineHeights","linearRoot","quadraticRoots","cubicRoots","third","Im","t_1","thirdA","twoSqrtQ","t3","__values$v","segmentIntersection","ax1","ay1","ax2","ay2","bx1","by1","bx2","by2","ub","cubicSegmentIntersections","px1","py1","px2","py2","px3","py3","px4","py4","bezierCoefficients","roots_1","roots_1_1","ttt","P1","P2","P3","P4","arcIntersections","startAngle","endAngle","counterClockwise","i1x","i2x","intersectionAngle","__values$u","Command","Path2D","previousCommands","previousParams","previousClosedPath","commands","_closedPath","commands_1","commands_1_1","Move","Line","Curve","bezierCurveTo","Arc","arc","ClosePath","sAngle","eAngle","antiClockwise","endX","endY","cubicCurveTo","cx1","cy1","cx2","cy2","trackChanges","ox","oy","intersectionCount","ScenePathChangeDetection","Path","checkPathDirty","dirtyPath","closedPath","isDirtyPath","updatePath","clipPath","clipMode","__values$t","half","applyPath","moves","moves_1","moves_1_1","Square","hs","ProxyPropertyOnWrite","childName","childProperty","ActionOnSet","newValueFn","oldValueFn","changeValueFn","changeValue","MarkerLabel","_markerSize","_spacing","markerSize","Cross","Diamond","Heart","degree","Plus","Triangle","ChartUpdateType","getMarker$1","__values$s","gridLayout","bboxes","itemPaddingY","itemPaddingX","forceResult","processedBBoxCount","rawPages","processBBoxes","pageIndices","buildPages","startingGuess","estimateStartingGuess","guess","calculatePage","primaryCount","sumSecondary","currentMaxSecondary","currentPrimaryIndices","maxPrimaryValues","bboxIndex","primaryValueIdx","primaryValue","currentSecondaryDimension","returnResult","maxPageWidth","maxPageHeight","pages","colIndices","colBBoxes","columnHeight","pageWidth","pageHeight","innerData","dataIdx","itemIdx","primarySum","PaginationLabel","PaginationMarkerStyle","PaginationMarker","_shape","onMarkerShapeChange","Pagination","chartUpdateCallback","pageUpdateCallback","interactionManager","cursorManager","labelNode","activeStyle","inactiveStyle","previousButtonDisabled","_orientation","_nextButton","_previousButton","nextButton","previousButton","onPaginationClick","onPaginationMouseMove","updateMarkers","updateGroupVisibility","updateLabel","updatePositions","updateLabelPosition","updateNextButtonPosition","markerPadding","labelBBox","highlightActive","buttonStyle","updateMarker","onFirstPage","nextButtonContainsPoint","previousButtonContainsPoint","incrementPage","consume","decrementPage","SCENE_RENDER","attachPagination","__read$U","__spread$w","__values$r","ORIENTATIONS","OPT_ORIENTATION","LegendLabel","LegendMarker","LegendItem","toggleSeriesVisible","LegendListeners","legendItemClick","legendItemDoubleClick","Legend","tooltipManager","layoutService","LEGEND_ZINDEX","itemSelection","oldSize","maxPageSize","paginationTrackingIndex","truncatedItems","reverseOrder","destroyFns","characterWidths","updatePageNumber","interactionListeners","checkLegendClick","checkLegendDoubleClick","handleLegendMouseMove","layoutListeners","positionLegend","shrinkRect","getCharacterWidths","attachLegend","performLayout","markerShape","maxItemWidth","paddedMarkerWidth","markerLabel","updatePagination","maxCharLength","textChars","addEllipsis","truncatedText","cumulativeWidth","textChars_1","textChars_1_1","trackingIndex","calculatePagination","paginationBBox","paginationVertical","newCurrentPage","legendItemsWidth","legendItemsHeight","paginationX","paginationY","lastPassPaginationBBox","stableOutput","visibleStart","visibleEnd","itemHeight","rowSumColumnWidths","pageIndex","markerFill","markerStroke","markerStrokeWidth","markerFillOpacity","markerStrokeOpacity","getDatumForPoint","visibleChildBBoxes","closestLeftTop","childBBox","distX","distY","computePagedBBox","actualBBox","newEnabled","updateHighlight","PROCESS_DATA","forceNodeDataRefresh","legendData","ls","getLegendData","visibleItemsCount","clickedItem","seriesItemCounts","seriesItemEnabledCounts","eachSeriesHasSingleItem_1","singleEnabledInEachSeries","singleSelectedWasNotClicked_1","singleEnabledInEachSeriesWasNotClicked_1","legendBBox","pointerInsideLegend","removeTooltip","updateTooltip","newShrinkRect","calculateLegendDimensions","legendWidth","legendHeight","calculateTranslationPerpendicularDimension","legendPadding","legendPositionedBBox","updateExclusiveRect","heightCoefficient","widthCoefficient","__values$q","SizeMonitor","NativeResizeObserver","checkSize","checkClientSize","circleRectOverlap","edgeX","edgeY","rectRectOverlap","w2","xOverlap","yOverlap","rectContainsRect","r2x","r2y","r2w","r2h","isPointLabelDatum","placeLabels","overlapPoints","overlapLabels","axisLabelsOverlap","state_1","__awaiter$e","__generator$e","debouncedAnimationFrame","buildScheduler","debouncedCallback","scheduleFn","awaitingPromise","awaitingDone","scheduleCount","promiseRunning","busy","scheduleCb","maybePromise","await","MARKER_SHAPES","MARKER_SHAPE","SeriesMarker","__read$T","ContinuousScale","nice","defaultTickCount","minTickCount","maxTickCount","niceDomain","strictClampByDefault","cacheProps","transformInvert","fromDomain","getDomain","convert","d0","isReversed","toDomain","didChange","isDenseInterval","defaultMaxTickCount","__read$S","BandScale$5","BandScale","ordinalRange","_domain","_bandwidth","_rawBandwidth","_paddingInner","_paddingOuter","paddingInner","paddingOuter","rawStep","bandwidth","rawBandwidth","isEqual$2","fractionOrSignificantDigits","LN10","ArcType","Open","Chord","Round","fullPie","Caption","PADDING","_lineHeight","areArrayItemsStrictlyEqual","arrA","arrB","areArrayNumbersEqual","minCount","tickStep","NumericTicks","tickMultipliers","log10","isWithinBounds","diffCount","singleTickDomain","fractionalDigits","expNo","countDigits","toExponential","CONSTANTS","periods","shortDays","shortMonths","dayOfYear","startOfYear","timeDiff","weekOfYear","startDay","firstWeekStartOffset","SUNDAY","MONDAY","THURSDAY","isoWeekOfYear","firstOfYearDay","timezone","unsignedOffset","pad","FORMATTERS","PADS","padChar","buildFormatter","formatParts","nextEscapeIdx","literalPart","maybePadSpecifier","maybePad","maybeFormatterSpecifier","maybeFormatter","dateTime","dateTimeAsDate","__values$p","__read$R","__spread$v","_a$2","DefaultTimeFormats","formatStrings","MILLISECOND","SECOND","MINUTE","HOUR","WEEK_DAY","SHORT_MONTH","MONTH","SHORT_YEAR","YEAR","TimeScale$1","TimeScale","week","tickIntervals","calculateDefaultTickFormat","defaultTimeFormat","updateFormat","ticks_1","ticks_1_1","getLowestGranularityFormat","firstTick","lastTick","startYear","yearChange","buildFormatString","formatStringArray","timeEndIndex","weekDayIndex","defaultTickFormat","getTickInterval","countableTimeInterval","diff0","diff1","t0","getTicksForInterval","getDefaultTicks","ticks_2","absInterval","reversedInterval","timeInterval","tickInterval","stopDate","tickFormat","specifier","updateNiceDomain","updateNiceDomainIteration","n0","intervalRange","__read$Q","__spread$u","_a$1","optionalGroup","nonCapturingGroup","formatRegEx","surroundedRegEx","parseFormatter","surrounded","zero","comma","formatBody","decimalTypes","integerTypes","removeTrailingZeros","insertSeparator","addSign","getSIPrefix","addPadding","absFloor","getSIPrefixPower","numString","dotIndex","integerChars","fractionalPart","siPrefixes","minSIPrefix","maxSIPrefix","minusSign","signType","padWidth","padRight","__read$P","__spread$t","LogScale","baseLog","basePow","updateLogFn","updatePowFn","logBase_1","pow10","absDiff","ticks$1","availableSpacing","lastTickPosition","nextMagnitudeTickPosition","tickPosition","prevSpacing","nextSpacing","Default","replaces","extent$4","Label$1","Label","calculateLabelRotation","parallelFlipRotation","regularFlipRotation","labelRotation","parallelFlipFlag","regularFlipFlag","autoRotation","parallel","__read$O","__spread$s","TICK_COUNT","OPT_TICK_COUNT","OPT_TICK_INTERVAL","GRID_STYLE_KEYS","GRID_STYLE","Tags","AxisLine","AxisTick","minSpacing","maxSpacing","AxisLabel","autoRotate","autoRotateAngle","avoidCollisions","mirrored","Axis","dataDomain","axisGroup","AXIS_ZINDEX","lineNode","tickLineGroup","tickLabelGroup","crossLineGroup","gridGroup","gridLineGroup","AXIS_GRID_ZINDEX","gridArcGroup","tickLineGroupSelection","tickLabelGroupSelection","gridLineGroupSelection","gridArcGroupSelection","_crossLines","baseline","requestedRange","_visibleRange","_title","_gridLength","gridStyle","_radialGrid","gridPadding","seriesAreaPadding","thickness","_scale","refreshScale","crossLine","detachCrossLine","attachCrossLine","initCrossLine","crossLines","updateRange","visibleRange","clippedRange","setCrossLinesVisible","attachAxis","detachAxis","inRangeEx","onLabelFormatChange","defaultLabelFormatter","labelFormatter","oldTitle","setTickCount","setTickInterval","updateTitle","setDomain","tickValues","tickMin","tickMax","primaryTickCount","calculateDomain","gridLength","parallelLabels","requestedRangeMin","requestedRangeMax","anySeriesActive","isAnySeriesActive","sideFlag","halfBandwidth","updateLine","labelOverlap","estimateTickCount","secondaryAxis","checkForOverlap","tickSpacing","maxIterations","unchanged","prevTicks","filterTicks","keepEvery_1","secondaryAxisTicks","updateSecondaryAxisTicks","updateSelections","updateLabels","labelData","rotated","labelSpacing","getLabelSpacing","updateGridLines","anyTickVisible","visibleFn","availableRange","defaultMinSpacing","defaultTickMinSpacing","_primaryTickCount","radialGrid","GridLine","GridArc","TickLine","TickLabel","translationFn","styleCount_1","angularGridLength_1","labelAutoRotation","labelBboxes","labelX","labelMatrix","labelSelection","formatTickDatum","userHidden","translatedBBox","labelTextBaseline","labelRotated","labelAutoRotated","labelTextAlign","combinedRotation","titleVisible","titleNode","titleRotationFlag","bboxYDimension","tickBBox","tickWidth","formatDatum","clipTickLines","clipGrid","_max","__read$N","LinearScale$1","LinearScale","prev0","prev1","__assign$E","__read$M","__spread$r","__values$o","flipChartAxisDirection","ChartAxis","moduleCtx","boundSeries","includeInvisibleDomains","useCalculatedTickCount","axisContext","linkedTo","domains_1","normaliseDataDomain","getLayoutState","tickSize","optionsKey","axisId","seriesKeys","scaleValueFormatter","scaleBandwidth","scaleConvert","scaleInvert","moduleMeta","initialiseModule","removeModule","isModuleEnabled","__read$L","__spread$q","CategoryAxis","_paddingOverrideEnabled","groupPaddingInner","valuesSet","paddings","__assign$D","__read$K","__values$n","jsonDiff","classify","lhs","rhs","allProps","propsChangedCount","take","lhsType","rhsType","allProps_1","allProps_1_1","NOT_SPECIFIED","jsonMerge","avoidDeepClone","finalValue","nextProp","props_1","props_1_1","jsonApply","matcherPath","constructors","allowedTypes","targetAny","_loop_3","propertyMatcherPath","propertyPath","currentValueType","newValueType","allowableTypes","newValueArray","jsonWalk","visit","jsons","jsonType","_loop_4","otherValues","__awaiter$d","__generator$d","__read$J","__values$m","DEFAULT_DIRECTION_KEYS","CartesianSeriesNodeBaseClickEvent","xKey","yKey","CartesianSeriesNodeClickEvent","CartesianSeriesNodeDoubleClickEvent","CartesianSeries","_contextNodeData","nodeDataDependencies","highlightSelection","hasMarkers","markerFactory","nodeFactory","highlightLabelSelection","subGroups","subGroupId","seriesItemEnabled","pathsPerSeries","pathsZIndexSubOrderOffset","renderLayerPerSubSeries","checkDomainXY","isContinuousX","isContinuousY","checkRangeXY","seriesRect","seriesHighlighted","anySeriesItemEnabled","newNodeDataDependencies","seriesRectWidth","seriesRectHeight","updateNodes","updateHighlightSelection","isPathOrSelectionDirty","createNodeData","updateSeriesGroups","updateSeriesGroupSelections","seriesIdx","datumSelection","markerSelection","contextData","updatePaths","updateDatumSelection","updateLabelSelection","updateMarkerSelection","contextNodeData","totalGroups","subGroupZOffset","dataNodeGroup","markerGroup","pathParentGroup","paths_1","paths_1_1","seriesOpacity","subGroupOpacities","isSubGroupOpacityDifferent","subOp","updateMarkerNodes","isHighlight","updateDatumNodes","updateLabelNodes","subGroupVisible","subGroupOpacity","paths_2","paths_2_1","updatePathNodes","labelItem","itemId_1","contextNodeData_1","contextNodeData_1_1","updateHighlightSelectionItem","isLabelEnabled","ld","updateHighlightSelectionLabel","e_6","closestDatum","hitPoint","contextNodeData_2","contextNodeData_2_1","datumX","datumY","e_6_1","requireCategoryAxis","e_7","e_8","primaryDirection","hitPointCoords","contextNodeData_3","contextNodeData_3_1","point_1","newMinDistance","e_8_1","e_7_1","e_9","e_9_1","getLabelData","isAnySeriesVisible","e_10","e_10_1","validateXYData","xData","yData","yDepth","hasNumber","validationResult","CartesianSeriesMarker","sleep","sleepTimeoutMs","ChartOverlays","noData","__read$I","__values$l","Listeners","registeredListeners","cancellableDispatch","cancelled","listeners_1","listeners_1_1","reduceDispatch","reduceFn","listenerResult","listeners_2","listeners_2_1","listenerSymbol","BaseManager","__assign$C","__awaiter$c","__generator$c","__values$k","WINDOW_EVENT_HANDLERS","EVENT_HANDLERS","InteractionManager","processEvent","mouseDown","touchDown","rootElement","EVENT_HANDLERS_1","EVENT_HANDLERS_1_1","WINDOW_EVENT_HANDLERS_1","WINDOW_EVENT_HANDLERS_1_1","interactionDocuments","WINDOW_EVENT_HANDLERS_2","WINDOW_EVENT_HANDLERS_2_1","EVENT_HANDLERS_2","EVENT_HANDLERS_2_1","decideInteractionEventTypes","types_1","types_1_1","calculateCoordinates","interactionEvent","buildEvent","consumed","dragStartElement","isEventOverElement","mouseButtonDown","fixOffsets","TouchEvent","lastTouch","NULL_COORDS","PageTransitionEvent","offsetDragStart","offsetEvent","pageRect","builtEvent","__read$H","CursorManager","callerId","styleToApply","__read$G","isEqual$1","HighlightManager","activeHighlight","previousHighlight","highlightToApply","currentHighlight","__values$j","__read$F","TooltipManager","exclusiveAreas","hoverRef","checkExclusiveRects","getTooltipMeta","destroyFn","newAppliedExclusiveArea","entryId","appliedExclusiveArea","contentToApply","metaToApply","appliedState","renderInstantly","__assign$B","__values$i","__read$E","ZoomManager","currentZoom","updateZoom","zoomToApply","__assign$A","isLayoutStage","isLayoutComplete","LayoutService","layoutProcessors","dispatchPerformLayout","dispatchLayoutComplete","UpdateService","updateCallback","ChartHighlight","__assign$z","__awaiter$b","__generator$b","__values$h","__read$D","Chart","processedOptions","userOptions","queuedUserOptions","seriesRoot","subtitle","footnote","_destroyed","_pendingFactoryUpdates","_performUpdateNoRenderCount","_performUpdateType","seriesToUpdate","performUpdateTrigger","error_1","performUpdate","_lastPerformUpdateError","_axes","lastInteractionEvent","pointerScheduler","handlePointer","onSeriesNodeClick","seriesNodeClickEvent","onSeriesNodeDoubleClick","seriesNodeDoubleClick","zoomManager","updateService","_lastAutoSize","positionPadding","positionCaptions","legend","overlays","onDoubleClick","onLeave","disablePointer","changeHighlightDatum","getOptions","autoSizeChanged","getModuleContext","keepTransferableResources","axes","highlightOnly","requestFactoryUpdate","_processCallbacks","updatePending","awaitUpdateCompletion","seriesToUpdate_1","seriesToUpdate_1_1","performUpdateType","seriesRect_1","seriesUpdates","tooltipMeta","PERFORM_LAYOUT","SERIES_UPDATE","TOOLTIP_RECALCULATION","processData","handleOverlays","durationMs","removedAxes","removeAllSeries","addSeries","allSeries","beforeIndex","initSeries","addSeriesListeners","freeSeries","updateAllSeriesListeners","assignSeriesToAxes","assignAxesToSeries","directionToAxesMap","directionAxes","newAxis","findMatchingAxis","directionAxes_1","directionAxes_1_1","axisKeys","directionKeys_1","directionKeys_1_1","directionKey","updateLegend","visibleSeries","positionTopAndShrinkBBox","baseY","bboxHeight","positionBottomAndShrinkBBox","getSeriesRect","pickSeriesNode","exactMatchOnly","maxDistance","reverseSeries","reverseSeries_1","reverseSeries_1_1","lastPick","hoverRect","handlePointerTooltip","handlePointerNode","pixelRange","isNewDatum","getTooltipHtml","isPixelRange","exactlyMatched","shouldUpdateTooltip","mergePointerDatum","checkSeriesNodeRange","checkSeriesNodeClick","checkSeriesNodeDoubleClick","nearestNode","nodeMidPoint","newSeries","newDatum","lastSeries","lastDatum","waitForUpdate","timeoutMs","handleNoDataOverlay","shouldDisplayNoDataOverlay","TreeNode","subtreeLeft","subtreeRight","leafCount","prelim","getLeftSibling","getLeftmostSibling","nextLeft","thread","nextRight","ticksToTree","insertTick","pathParts","lastPartIndex","pathPart","partIndex","isNotLeaf","moveSubtree","wm","wp","vim","defaultAncestor","executeShifts","apportion","vop","vip","vom","sip","sop","sim","som","firstWalk","defaultAncestor_1","leftSibling","Dimensions","secondWalk","thirdWalk","treeLayout","TreeLayout","leafNodes","nonLeafNodes","shiftX","shiftY","flipX","xSteps","ySteps","existingSpacingX","existingSpacingY","screenDimensions","__read$C","GroupedCategoryAxisLabel","GroupedCategoryAxis","tickScale","labelColor","gridLineSelection","axisLineSelection","separatorSelection","resizeTickTree","tickTreeLayout","domains","isNumericX","domain_1","tickTree","tickScaleDomain","rangeStart","rangeEnd","treeLabels","isLabelTree","labelBBoxes","maxLeafLabelWidth","labelGrid","separatorData","lineCount","styles_1","__assign$y","__awaiter$a","__generator$a","__values$g","__read$B","CartesianChart","paired","_lastAxisWidths","_lastVisibility","clipSeries","seriesPaddedRect","updateAxes","paddedRect","inputShrinkRect","axisWidths","liveAxisWidths","records","stableOutputs","otherAxisWidths","otherVisibility","otherW","lastPassAxisWidths","lastPassVisibility","updateAxesPass","lastPassSeriesRect","newAxisWidths","primaryTickCounts","paddedBounds","applySeriesPadding","crossLinePadding","buildCrossLinePadding","axisBound","buildAxisBound","buildSeriesRect","calculateAxisDimensions","addInterAxisPadding","newClipSeries","axisThickness","axisOffset","positionAxis","reversedAxes","horizontalPadding","verticalPadding","clampToOutsideSeriesRect","clampBounds","axisLeftRightRange","PolarSeries","computeLabelsBBox","__awaiter$9","__generator$9","PolarChart","fullSeriesRect","computeSeriesRect","computeCircle","seriesBox","polarSeries","setSeriesCircle","initialRadius","hideWhenNecessary","labelBoxes","labelBox","refined","refineCircle","labelsBox","circleLeft","circleTop","circleRight","circleBottom","padTop","padBottom","availCircleWidth","availCircleHeight","newRadius","minHorizontalRadius","minVerticalRadius","minRadius","padHeight","__awaiter$8","__generator$8","HierarchyChart","__read$A","interpolatePattern","valueName","formatName","locales","toLocaleString","toDateString","sanitizeHtml","calculateNiceSecondaryAxis","getTickStep","calculateNiceStart","getTicks","stepPower","calculateNextNiceStep","__read$z","NumberAxis","NON_ZERO_NUMBER","LogAxis","isInverted","crossesZero","hasZeroExtent","__assign$x","__values$f","__read$y","extendDomain","values_1","values_1_1","sumValues","accumulator","values_2","values_2_1","toKeyString","SMALLEST_KEY_INTERVAL","smallestSoFar","nextX","SUM_VALUE_EXTENT","processedData","DataModel","dataVisible","processors","resolveProcessedDataIndex","resolveProcessedDataDef","groupByKeys","normaliseTo","extractData","sumData","normaliseData","reduceData","postProcessData","keyDefs","valueDefs","initDataDomainProcessor","resultData","resultDataIdx","dataLoop","data_1","data_1_1","keyIdx","keyDefs_1","keyDefs_1_1","valueIdx","valueDefs_1","valueDefs_1_1","propertyDomain","e_11","e_12","keyStr","existingData","e_11_1","e_12_1","e_13","e_14","e_15","sumDefs","resultSumValues","resultSumValueIndices","resultIdx","resultSumValueIndices_1","resultSumValueIndices_1_1","groupDomain","distinctValues","values_3","values_3_1","e_15_1","e_14_1","e_13_1","e_16","e_17","e_18","e_19","e_20","e_21","e_22","normalise","sumIdx","sumAbsExtent","sums_1","sums_1_1","sumAbs","e_16_1","sumRangeIdx","sums_2","sums_2_1","e_17_1","sumValues_1","valuesSumExtent","e_19_1","values_4","values_4_1","e_21_1","e_20_1","e_22_1","e_18_1","e_23","e_24","reducerDefs","accValues","reducerIndex","reducers_1","reducers_1_1","e_24_1","e_23_1","accIdx","reduced","e_25","processorDefs","processorDefs_1","processorDefs_1_1","e_25_1","initDataDomainKey","updateDataDomain","initDataDomain","valueInDatum","missingValueDef","missingValue","invalidValue","TimeAxis","datumFormat","datumFormatter","_min","__awaiter$7","__generator$7","__read$x","__values$e","AreaSeriesLabel","AreaSeriesTooltip","AreaSeriesTag","AreaSeries","strokes","_xKey","xName","_yKeys","_visibles","yNames","processSeriesItemEnabled","visibles","_normalizedTo","absValue","yKeys","normalizedTo","enabledYKeys","dataModel","keyDef","yExtent","ySumExtent","groupedData","contexts","continuousY","xDataCount","cumulativePathValues","cumulativeMarkerValues","createPathCoordinates","createMarkerCoordinate","xDatum","yDatum","currY","prevYCoordinate","currYCoordinate","rawYDatum","normalizedAndValid","yKeyDataIndex","labelSelectionData","markerSelectionData","strokeSelectionData","yValues","fillSelectionData","fillPoints","fillPhantomPoints","strokePoints","datumIdx","datumGroup","datumArray","valuesArray","labelText","seriesDatum","nextValuesSameGroup","nextDatumGroup","nextXDatum","rawNextYIdx","rawNextYDatum","nextYDatum","cumulativeValue","yValue","windowX","windowY","currCoordinates","nextCoordinates","Stroke","points_1","points_1_1","moveTo_1","points_2","points_2_1","isDatumHighlighted","seriesFillOpacity","highlightedFill","highlightFillOpacity","highlightedStroke","highlightedDatumStrokeWidth","customMarker","yKeyIndex","labelEnabled","nodeDatum","xValue","markerFormatter","xString","yString","processedYValue","yName","tooltipRenderer","tooltipFormat","Rect","borderPath","crisp","lastUpdatePathStrokeWidth","effectiveStrokeWidth","microPixelEffectOpacity","pixelSize","lx","borderClipPath","ly","halfStrokeWidth","__awaiter$6","__generator$6","BAR_LABEL_PLACEMENTS","OPT_BAR_LABEL_PLACEMENT","BarSeriesNodeTag","BarSeriesLabel","BarSeriesTooltip","is2dArray$1","BarSeries","flipXY","groupScale","cumYKeyCount","flatYKeys","hideInLegend","yKeysCache","_grouped","stackGroups","smallestDataInterval","processYKeys","flattenKeys","flatKeys_1","keysInStacks_1","ungroupedKeys","newKeysIndices_1","prevYKeyCount_1","visibleStacks_1","visiblesIdx","getStackGroup","processYNames","map_1","activeSeriesItems","activeStacks","getCategoryAxis","getValueAxis","smallestX","keysExtent","calculateStep","smallestInterval","intervals","maxBands","bands","labelFontStyle","labelFontWeight","labelFontSize","labelFontFamily","labelPlacement","xBandWidth","barWidth","stackIndex","stackYKeys","prevMinY","prevMaxY","barX","bottomY","labelY","colorIndex","Bar","visibleMin","visibleMax","stackGroup","fillIndex","startLevel","visibleStacks","__awaiter$5","__generator$5","HISTOGRAM_AGGREGATIONS","HISTOGRAM_AGGREGATION","HistogramSeriesNodeTag","HistogramSeriesLabel","defaultBinCount","HistogramBin","domainMin","domainMax","aggregatedValue","frequency","addDatum","domainWidth","calculateAggregatedValue","aggregationName","aggregationFunction","getY","areaPlot","relativeHeight","HistogramSeriesTooltip","HistogramSeries","binnedData","xDomain","yDomain","bins","aggregation","binCount","deriveBins","binStarts","binSize_1","firstBinEnd","calculateNiceBins","startGuess","binSize","getBins","placeDataInBins","derivedBins","sortedData","currentBin","yMinMax","firstBin","lastBin","xMin","xMax","binOfData","xDomainMin","xDomainMax","xMinPx","xMaxPx","yZeroPx","yMaxPx","selectionDatumLabel","Bin","rangeMin","__awaiter$4","__generator$4","__values$d","LineSeriesLabel","LineSeriesTooltip","LineSeries","pointsData","_yKey","markerEnabled","prevXInRange","actualLength","xInRange","nextXInRange","linePath","nodeData_1","nodeData_1_1","lineStroke","__assign$w","__awaiter$3","__generator$3","__values$c","ScatterSeriesNodeBaseClickEvent","sizeKey","ScatterSeriesNodeClickEvent","ScatterSeriesNodeDoubleClickEvent","ScatterSeriesTooltip","ScatterSeries","labelName","_sizeKey","sizeKeyIdx","processedSize","xDataIdx","yDataIdx","placedLabels","placedNodeDatum","isPointInSector","sector","innerRadius","outerRadius","lineCollidesSector","outerStart","outerEnd","innerStart","innerEnd","boxCollidesSector","Sector","angleOffset","__assign$v","__awaiter$2","__generator$2","PieSeriesNodeBaseClickEvent","angleKey","calloutLabelKey","sectorLabelKey","radiusKey","PieSeriesNodeClickEvent","PieSeriesNodeDoubleClickEvent","PieNodeTag","PieSeriesCalloutLabel","minAngle","maxCollisionOffset","PieSeriesSectorLabel","positionOffset","positionRatio","PieSeriesCalloutLine","PieSeriesTooltip","PieTitle","DoughnutInnerLabel","DoughnutInnerCircle","PieSeries","groupSelection","groupSelectionData","sectorFormatData","angleScale","calloutLabel","sectorLabel","calloutLine","callout","angleName","innerLabels","radiusName","radiusMin","radiusMax","calloutLabelName","sectorLabelName","legendItemKey","outerRadiusOffset","outerRadiusRatio","innerRadiusOffset","innerRadiusRatio","datumSectorRefs","backgroundGroup","SERIES_BACKGROUND_ZINDEX","pieCalloutLabels","pieSectorLabels","calloutLabelSelection","sectorLabelSelection","innerLabelsSelection","_innerCircleConfig","_innerCircleNode","angleData","angleDataTotal","angleDataRatios","sectorLabelData","radiusData","getLabelFormatterParams","showValueDeprecationWarning_1","sectorLabelFormatter","min_1","delta_1","halfPi","datumIndex","quadrantTextOpts","angleValue","radiusValue","labelValue","calloutLabelValue","sectorLabelValue","deprecatedValue","formatterParams","getSectorFormat","midAngle","midCos","midSin","labelMinAngle","labelVisible","quadrantOffset","quadrantIndex","collisionTextAlign","collisionOffsetY","sectorFormat","highlightedStyle","getOuterRadius","updateRadiusScale","getTitleTranslationY","titleOffset","minLabelY","updateNodeMidPoint","updateGroupSelection","Callout","updateSectorFn","updateInnerCircle","sectorParent","sectorGrandParent","updateCalloutLineNodes","updateCalloutLabelNodes","updateSectorLabelNodes","updateInnerLabelNodes","calloutLength","calloutStrokeWidth","calloutColors","paddedLength","getLabelOverflow","seriesLeft","seriesRight","seriesTop","seriesBottom","visibleTextPart","hasVerticalOverflow","textLength","computeCalloutLabelCollisionOffsets","fullData","leftLabels","rightLabels","topLabels","bottomLabels","tempTextNode","getTextBBox","labelRadius","setTextDimensionalProps","avoidNeighbourYCollision","avoidYCollisions","midLabel","midIndex","avoidXCollisions","labelsCollideLabelsByY","paddedBoxes","labelsCollideLabelsByX","sectors","labelsCollideSectors","displayText","textBoxes","isTooShort","isDoughnut","singleVisibleSector","isTextVisible","sectorBounds_1","circleRadius","textBBoxes","getMarginTop","getMarginBottom","labelsVisible","textBottoms","formattedAngleValue","titleText","labelParts","seriesToggled","datumToggled","suggestedEnabled","pieSeriesToggled","datumToggledLegendItemValue","HierarchySeries","DropShadow","interpolateColor","ColorScale","_range","parsedRange","__assign$u","__awaiter$1","__generator$1","TreemapSeriesTooltip","TreemapSeriesNodeBaseClickEvent","TreemapSeriesNodeClickEvent","TreemapSeriesNodeDoubleClickEvent","TreemapSeriesLabel","TreemapValueLabel","TextNodeTag","validateColor","TreemapTextHighlightStyle","TreemapHighlightStyle","TreemapSeries","large","medium","small","nodePadding","colorDomain","colorRange","groupFill","groupStroke","groupStrokeWidth","tileStroke","tileStrokeWidth","colorName","rootName","highlightGroups","tileShadow","labelShadow","getNodePaddingTop","isLeaf","getNodePadding","squarify","outputNodesBoxes","stackSum","minRatioDiff","partitionSum","partition","isVertical_1","partThickness","partLength","firstTileLength","stackThickness","start_1","childBox","width_2","height_2","colorScale","createTreeNodeDatum","colorScaleValue","childNodeDatum","dataRoot","descendants","nameLabel","valueLabel","Value","getTileFormat","highlightedFillOpacity","highlightedTextColor","labelMeta","updateRectFn","updateLabelFn","buildLabelMeta","fillColor","hAlign","vAlign","treeNodeDatum","labelStyle","labelSize","availTextWidth","availTextHeight","valueConfig","valueStyle","valueMargin","valueText","valueSize","hasValueText","_direction","valueKey","types$1","scatter","treemap","pie","CHART_TYPES","seriesType","chartType","isCartesian","isPolar","isHierarchy","seriesTypes","cartesianTypes","polarTypes","hierarchyTypes","deepMerge$1","__assign$t","palette$8","BOLD","INSIDE","ChartTheme","createChartConfigPerChartType","getDefaults","polar","applyOverrides","overrideOpts","chartConfig","getPalette","getAxisDefaults","getSeriesDefaults","getBarSeriesDefaults","getLineSeriesDefaults","seriesDefaults","getAreaSeriesDefaults","getScatterSeriesDefaults","getCartesianSeriesMarkerDefaults","getChartDefaults","typeToAliases","groupedCategory","getOverridesByType","seriesThemeOverrides","mergeWithParentDefaults","parentDefaults","cartesianDefaults","minHandle","gripLineGap","gripLineLength","maxHandle","polarDefaults","hierarchyDefaults","__assign$s","DarkTheme","fontColor","mutedFontColor","axisDefaults","seriesLabelDefaults","chartAxesDefaults","chartDefaults","seriesDarkThemeOverrides","__values$b","BaseModuleInstance","REGISTERED_MODULES","registerModule","otherModule","packageType","RangeHandle$1","RangeHandle","_fill","_stroke","_strokeWidth","_lineCap","_centerX","_centerY","_gripLineGap","_gripLineLength","axw","ayh","RangeMask","_fillOpacity","minRange","onRangeChange","computeVisibleRangeBBox","__assign$r","RangeSelector","updateHandles","NavigatorMask","rangeMask","rm","NavigatorHandle","rangeHandle","rh","Navigator","minHandleDragging","maxHandleDragging","panHandleOffset","layoutComplete","navigatorTotalHeight","getRatio","stopHandleDragging","CHART_NAVIGATOR_MODULE","chartTypes","Background","onLayoutComplete","rectNode","layoutHandle","CHART_BACKGROUND_MODULE","builtinSeriesTypes","extraSeriesFactories","initialisedSeriesModules","initialiseSeriesModules","initialiseSeriesModule","seriesFactory","themes","chartTheme","darkTheme","getSeries","SeriesConstructor","DEFAULT_CARTESIAN_CHART_OVERRIDES","DEFAULT_BAR_CHART_OVERRIDES","DEFAULT_SCATTER_HISTOGRAM_CHART_OVERRIDES","__assign$q","is2dArray","yNamesMapping","yKeysMapping","barSeriesTransform","identityTransform","SERIES_TRANSFORMS","applySeriesTransform","palette$7","MaterialLight","palette$6","MaterialDark","palette$5","PastelLight","palette$4","PastelDark","palette$3","SolarLight","palette$2","SolarDark","palette$1","VividLight","VividDark","__assign$p","lightTheme","lightThemes","null","darkThemes","themes$1","getChartTheme","stockTheme","baseTheme","flattenedTheme","__assign$o","__values$a","groupSeriesByType","seriesOptions","seriesOptions_1","seriesOptions_1_1","stacked","groupingKey","indexKey","FAIL","SKIP","ARRAY_REDUCER","BOOLEAN_OR_REDUCER","DEFAULTING_ARRAY_REDUCER","sparse","YKEYS_REDUCER","activationValue","STACK_GROUPS_REDUCER","REDUCE_CONFIG","hideInChart","outputProp","reduceSeries","reducerConfig","defaultReduce","processSeriesOptions","preprocessed","CHART_AXES_TYPES","axisType","axesTypes","__assign$n","__values$9","optionsType","isAgCartesianChartOptions","specifiedType","isAgHierarchyChartOptions","isAgPolarChartOptions","isSeriesOptionType","isAxisOptionType","countArrayElements","input_1","input_1_1","takeColours","colours","colourIndex","noDataCloneMergeOptions","prepareOptions","fallbackOptions","sanityCheckOptions","userSuppliedOptionsType","globalTooltipPositionOptions","checkSeriesType","defaultSeriesType","defaultOverrides","prepareMainOptions","axesThemes","seriesThemes","mergedSeries","mergeSeriesOptions","preparePieOptions","prepareSeries","checkAxisType","isAxisType","validAxesTypes","prepareAxis","prepareEnabledOptions","mergedTooltipPosition","prepareTheme","cleanedTheme","themeConfig","paletteOptions","calculateSeriesPalette","colourCount","axisTheme","removeOptions","crossLinesTheme_1","visitingUserOpts","visitingMergedOpts","_enabledFromTheme","pieSeriesTheme","horizontalCrosslineTranslationDirections","xTranslationDirection","yTranslationDirection","insideLeft","insideRight","insideTop","insideBottom","insideTopLeft","insideBottomLeft","insideTopRight","insideBottomRight","verticalCrossLineTranslationDirections","calculateLabelTranslation","yDirection","crossLineTranslationDirections","xTranslation","yTranslation","POSITION_TOP_COORDINATES","xEnd","yStart","yEnd","POSITION_LEFT_COORDINATES","xStart","POSITION_RIGHT_COORDINATES","POSITION_BOTTOM_COORDINATES","POSITION_INSIDE_COORDINATES","POSITION_TOP_LEFT_COORDINATES","POSITION_BOTTOM_LEFT_COORDINATES","POSITION_TOP_RIGHT_COORDINATES","POSITION_BOTTOM_RIGHT_COORDINATES","labeldDirectionHandling","__assign$m","Range","startLine","endLine","CROSSLINE_LABEL_POSITIONS","OPT_CROSSLINE_LABEL_POSITION","OPT_CROSSLINE_TYPE","CrossLineLabel","CrossLine","LINE_LAYER_ZINDEX","crossLineRange","crossLineLabel","labelPoint","updateRangeNode","positionLabel","clippedRangeClamper","getRange","clampedYStart","clampedYEnd","validRange","computeLabelBBox","RANGE_LAYER_ZINDEX","crossLineLabelBBox","labelHeight","SERIES_CROSSLINE_LINE_ZINDEX","SERIES_CROSSLINE_RANGE_ZINDEX","sourceImage","BackgroundImage","_image","loadedSynchronously","containerWidth","calculatePosition","__values$8","AgChart","AgChartInternal","createOrUpdate","AgChartInstanceProxy","isInstance","updateDelta","deltaOptions","updateUserDelta","getImageDataURL","signatureProps","mixinOpts","createChartInstance","chartToUpdate","queuedOptionsIdx","lastUpdateOptions","maybeClone","prepareResizedChart","currentWidth","currentHeight","clonedChart","oldChart","transferableResource","applyChartOptions","optionalParams","completeOptions","modulesChanged","applyModules","registerListeners","applyOptionValues","applySeries","applyAxes","seriesOpts","seriesDataUpdate","otherRefreshUpdate","updateType","rootModules","rootModules_1","rootModules_1_1","shouldBeEnabled","optSeries","matchingTypes","seriesDiff","applySeriesValues","createSeries","optAxes","oldOpts_1","axisDiff","createAxis","seriesInstance","moduleContext","axisOptions","applyAxisModules","rootModules_2","rootModules_2_1","JSON_APPLY_OPTIONS","innerCircle","ctrs","seriesTypeOverrides","VERSION$b","ChartDatasource","crossFiltering","chartData","pivoting","updatePivotKeysForSSRM","extractRowsFromGridRowModel","aggregateRowsByDimension","numRows","extractedRowData","groupNodeIndexes","groupsToRemove","filteredNodes","allRowNodes","getFilteredRowNodes","getAllRowNodes","modelLastRow","gridRowModel","dimensionCols","valueObject","valueString","getGroupLabels","ChartDataModel","DEFAULT_CATEGORY","columnNamesArr","filteredOutColId","actualValue","isScatter","groupIndexesToRemove_1","dataFromGrid","lastColId","dataAggregated","currentMap","groupItem_1","__children","dimCol","dimColId","groupItem","dataToAgg","dataToAggFiltered","aggResultFiltered","pivotKeySeparator","extractPivotKeySeparator","extractSeparator","childId","firstSecondaryCol","initialLabel","sortRowNodes","valueColState","dimensionColState","suppressComboChartWarnings","pivotChart","chartThemeName","referenceCellRange","suppliedCellRange","suppressChartRanges","unlinkChart","seriesChartTypes","initComboCharts","seriesChartTypesExist","savedCustomSeriesChartTypes","updateCellRanges","updatedColState","valueCellRange","getAllChartColumns","allColsFromRanges","getAllColumnsFromRanges","updateColumnState","setDimensionCellRange","setValueCellRange","syncDimensionCellRange","updateSeriesChartTypes","isComboChart","seriesChartType","primaryOnly","updateChartSeriesTypesForBuiltInCombos","updateSeriesChartTypesForCustomCombo","SUPPORTED_COMBO_CHART_TYPES","updatedSeriesChartTypes","primaryChartType","secondaryChartType","selectedCols","lineIndex","getRowIndexes","isGrouping","getSelectedDimension","getSelectedValueCols","isGroupActive","groupDimensionSelected","getColDisplayName","getChartDataType","createCellRange","dimensionCellRange","endRowPosition","isNumberCol","extractLeafData","childRow","allCols","isInitialising","hasSelectedDimension","aggFuncDimension","defaultCategory","chartTranslationService","valueColumnsFromReferenceRange","updatedCol","idsMatch","orderedColIds","reorderColState","ascColStateOrder","colsInRange","selectedDimensionColState","aggFuncDimension_1","selectedValueCols","orderedColIds_1","selectedDimension","VALID_SERIES_TYPES","getSeriesType","ALL_AXIS_TYPES","getLegacyAxisType","createAgChartTheme","chartProxyParams","isTitleEnabled","chartOptionsToRestore","chartPaletteToRestore","chartThemeToRestore","themeName","getSelectedTheme","isStockTheme","rootTheme","lookupCustomChartTheme","gridOptionsThemeOverrides","getGridOptionsChartThemeOverrides","apiThemeOverrides","apiChartThemeOverrides","crossFilterThemeOverridePoint","crossFilteringOverrides","createCrossFilterThemeOverrides","formattingPanelOverrides","inbuiltStockThemeOverrides","isIdenticalPalette","paletteA","paletteB","arrayCompare","overrideType","getChart","crossFilterCallback","STATIC_INBUILT_STOCK_THEME_AXES_OVERRIDES","titleEnabled","extraPadding","getExtraPaddingDirections","getChartThemeName","availableThemes","getChartThemes","customChartThemes","customChartTheme","DEFAULT_THEMES","ChartController","setChartRange","updateForRangeChange","setCellRanges","updateForGridChange","updateForDataChange","raiseChartModelUpdateEvent","raiseChartRangeSelectionChangedEvent","updateForPanelChange","getChartUpdateParams","getSelectedValueColState","getChartData","getChartId","getCrossFilteringContext","lastSelectedChartId","getSeriesChartTypes","getChartModel","modelType","chartOptions","chartProxy","getChartThemeOverrides","chartPalette","getChartPalette","getCellRangeParams","getChartType","setChartType","raiseChartOptionsChangedEvent","setChartThemeName","isPivotChart","getThemes","getPalettes","getValueColState","displayNameMapper","getDimensionColState","getColStateForMenu","isDefaultCategorySelected","detachChartRange","setChartProxy","getChartProxy","isActiveXYChart","isChartLinked","customComboExists","updateSeriesChartType","updateChartType","prevSeriesChartType","EVENT_CHART_TYPE_CHANGED","EVENT_CHART_SERIES_CHART_TYPE_CHANGED","getActiveSeriesChartTypes","selectedColIds","getChartSeriesTypes","firstCellRange","EVENT_CHART_MODEL_UPDATE","raiseChartUpdatedEvent","EVENT_CHART_UPDATED","__values$7","DefaultDataPanelDef","isOpen","ChartDataPanel","chartController","chartOptionsService","columnComps","updatePanels","clearComponents","currentChartType","groupExpandedState","getGroupExpandedState","getSeriesLabel_1","generateGetSeriesLabel","seriesChartTypeGroupComp","seriesChartTypeIndex","getDataPanelDef","prevVal","createSeriesChartTypeGroup","createCategoriesGroup","createSeriesGroup","restoreGroupExpandedState","categoriesGroupComp","seriesGroupComp","defaultExpanded","createComponent","addComponentAtIndex","addChangeListener","columnState","getCategoryGroupTitle","inputName","getSeriesGroupTitle","pairedModeToggle","getPairedMode","setPairedMode","getSeriesLabel","addDragHandle","seriesGroupGui","seriesItemGroup","secondaryAxisComp","defaultText","availableChartTypes","chartTypeComp","ChartPanel","isBubble","isInPairedMode","selectedValuesCount","indexToAxisLabel","axisLabel","escapedLabel","dataPanel","getSeriesOption","itemHovered","checkHoveredItem","lastDraggedColumn","lastHoveredItem","lastHoveredComp","lastHoveredPosition","draggedColumnState","FontPanel","activeComps","fontGroup","initGroup","initFontFamilySelect","initFontWeightStyleSelect","initFontSizeSelect","initFontColorPicker","addCompToPanel","families","initialFont","capitalisedFontValue","familySelect","setFont","sizeSelect","weightStyles","selectedOption","weightStyleSelect","selectedWeightStyle","newColor","addItemToPanel","destroyActiveComps","LegendPanel","isExpandedOnInit","activePanels","legendGroup","initLegendGroup","initLegendPosition","initLegendPadding","initLegendItems","initLabelPanel","getChartOption","setChartOption","legendPositionSelect","legendPaddingSlider","getMaxValue","initSlider","defaultMaxValue","markerSizeSlider","markerStrokeSlider","markerPaddingSlider","itemPaddingXSlider","itemPaddingYSlider","fontPanelComp","destroyActivePanels","AxisTicksPanel","axisTicksGroup","initAxisTicks","axisTicksColorPicker","getAxisProperty","setAxisProperty","initInput","axisTicksWidthSlider","axisTicksSizeSlider","AgAngleSelect","eParentCircle","parentCircleRect","calculateAngleDrag","eAngleValue","floatValue","updateNumberInput","normalizeNegativeValue","normalizedValue","positionChildCircle","eChildCircle","calculatePolar","calculateCartesian","setOffsetX","setOffsetY","radiansValue","AxisPanel","axisLabelUpdateFuncs","prevXRotation","prevYRotation","initAxis","initAxisLabels","axisColorInput","axisLineWidthSlider","axisTicksComp","labelPanelComp","addAdditionalLabelComps","addLabelPadding","createRotationWidgets","xRotationComp","yRotationComp","autoRotateCb","initLabelRotations","xRotation","yRotation","getLabelRotation","setLabelRotation","autoRotateCheckbox","degreesSymbol","createRotationComp","angleSelect","labelPaddingSlider","NavigatorPanel","navigatorGroup","initNavigator","navigatorHeightSlider","PaddingPanel","chartPaddingGroup","updateTopPadding","initChartPaddingItems","paddingTopSlider","paddingRightSlider","paddingBottomSlider","paddingLeftSlider","topPadding","BackgroundPanel","chartBackgroundGroup","initColorPicker","TitlePanel","initFontPanel","titlePlaceholder","hasTitle","getOption","isSilent","setOption","fontPanelParams","toolbarExists","currentTitleText","replaceableTitleText","createSpacingSlicer","spacingSlider","toolbarItemsFunc","defaultItems","chartGroup","initTitles","initPaddingPanel","initBackgroundPanel","titlePanelComp","paddingPanelComp","backgroundPanelComp","ShadowPanel","getSelectedSeries","shadowGroup","shadowBlurSlider","shadowXOffsetSlider","shadowYOffsetSlider","initSeriesShadow","setSeriesOption","shadowColorPicker","initFontPanelParams","seriesOptionLabelProperty","getFontOptionExpression","fontOption","getFontOption","setFontOption","MarkersPanel","seriesMarkersGroup","initMarkers","seriesMarkerShapeSelect","shouldHideEnabledCheckbox","seriesMarkerMinSizeSlider","seriesMarkerSizeSlider","seriesMarkerStrokeWidthSlider","CalloutPanel","calloutGroup","initCalloutOptions","calloutLengthSlider","calloutStrokeWidthSlider","labelOffsetSlider","SeriesPanel","widgetFuncs","initLineWidth","initStrokeWidth","initLineDash","initLineOpacity","initFillOpacity","initLabels","initShadow","initTooltips","initBins","seriesWidgetMappings","getChartSeriesType","seriesGroup","refreshWidgets","updateSeriesType","initSeriesSelect","seriesSelect","getSeriesSelectOptions","seriesTooltipsToggle","addWidget","seriesStrokeWidthSlider","seriesLineWidthSlider","seriesLineDashSlider","seriesLineOpacitySlider","seriesFillOpacitySlider","labelParams","calloutPanelComp","sectorParams","sectorPanelComp","positionRatioComp","getSectorLabelPositionRatio","shadowPanelComp","markersPanelComp","seriesBinCountSlider","widget","seriesSelectOptions","activeChartTypes","DefaultFormatPanelDef","FormatPanel","panels","isGroupPanelShownInSeries","createPanels","destroyPanels","getFormatPanelDef","formatPanel","MiniChart","tooltipName","MiniChartWithAxes","axisOvershoot","addAxes","leftAxis","bottomAxis","createColumnRects","xScalePadding","xScaleDomain","yScaleDomain","createBars","createLinePaths","linesGroup","MiniColumn","columnData","updateColors","MiniStackedColumn","stackedColumns","MiniNormalizedColumn","MiniBar","bars","MiniStackedBar","MiniNormalizedBar","MiniDoughnut","centerRadiusScaler","MiniPie","MiniLine","MiniScatter","pointsGroup","MiniBubble","MiniArea","pathData","MiniStackedArea","MiniNormalizedArea","MiniHistogram","MiniColumnLineCombo","lineData","MiniAreaColumnCombo","areaData","yZero","firstX","lastX","MiniCustomCombo","axisStroke","penIcon","buildPenIconPath","miniChartMapping","stackedColumn","normalizedColumn","stackedBar","normalizedBar","doughnut","bubble","stackedArea","normalizedArea","columnLineCombo","areaColumnCombo","customCombo","MiniChartsContainer","chartGroups","wrappers","chartGroupValues","groupComponent","MiniClass","miniWrapper","miniClassChartType","updateSelectedMiniChart","selectedChartType","miniChartType","ChartSettingsPanel","miniChartsContainers","cardItems","activePaletteIndex","palettes","resetPalettes","ePrevBtn","eNextBtn","setActivePalette","getPrev","getNext","scrollSelectedIntoView","currentChart","parent_1","eMiniChartsContainer","forceReset","settingsPanel","chartGroupsDef","isAnimating","eCardSelector","destroyMiniCharts","isActivePalette","miniChartsContainer","addCardLink","eNavBar","animationDirection","currentPalette","currentGui","futurePalette","nextGui","animatingClass","TabbedChartMenu","tabs","panelType","createTab","getPanelClass","tabbedLayout","TabPanelClass","eWrapperDiv","titleEl","translatedTitle","showTab","tabItem","TAB_DATA","TAB_FORMAT","ChartMenu","eChartContainer","eMenuPanelContainer","chartSettings","defaultPanel","chartFormat","chartLink","toggleDetached","chartUnlink","chartDownload","saveChart","createButtons","refreshMenuClasses","eHideButton","toggleMenu","chartToolbarOptions","getToolbarOptions","defaultChartToolbarOptions","panelsOverride","menuOption","tabOptions","isLegacyToolbar_1","ignoreOptions_1","tooltipKey","tooltipTitle","menuEl","buttonConfig","buttonEl","EVENT_DOWNLOAD_CHART","createMenuPanel","defaultTab","tabbedMenu","hideMenu","showContainer","showParent","hideParent","eHideButtonIcon","TitleEdit","chartMenu","destroyableChartListeners","handleEndEditing","updateHeight","endEditing","refreshTitle","destroyDbleClickListener","wasInTitle","destroyMouseMoveListener","inTitle","titleBBox","inputWidth","inputStyle","isTitlePlaceholder","oldTitleLines","currentTitleLines","fixedLineHeight","titleColor","awaitChartOptionUpdate","deproxy","chartOrProxy","ChartProxy","clearThemeOverrides","chartInstance","standaloneChartType","getCommonChartOptions","rawChart","imageFileName","getChartOptions","setPaired","isPaired","transformData","categoryKey","categoryAxis","existingOptions","getActiveFormattingPanelOverrides","inUseTheme","keepChartInstance","destroyChart","CartesianChartProxy","crossFilteringAllPoints","crossFilteringSelectedPoints","getAxes","supportsCrossFiltering","xAxisIsCategory","getCrossFilterData","getDataTransformedData","isCategoryAxis","getXAxisType","isTimeAxis","testDatum","crossFilteringReset","crossFilteringPointSelected","crossFilteringDeselectedPoints","extractLineAreaCrossFilterSeries","nodeClick","multiSelection","crossFilteringAddSelectedPoint","pointSelected","emptyTarget","cloneUnlessOtherwiseSpecified","isMergeableObject","defaultArrayMerge","getMergeFunction","customMerge","getEnumerableOwnPropertySymbols","propertyIsOnObject","propertyIsUnsafe","mergeObject","defaultIsMergeableObject","isSpecial","arrayMerge","sourceIsArray","hexToRGBA","changeOpacity","BarChartProxy","isBar","isNormalised","numberAxis","isGrouped","extractCrossFilterSeries","updateFilteredOutSeries","primarySeries","AreaChartProxy","LineChartProxy","PieChartProxy","numFields","currentOffset","offsetAmount","getFields","calculateOffsets","primaryOpts","filteredOutOptions","ScatterChartProxy","_params","seriesDefinitions","getSeriesDefinitions","labelFieldDefinition","seriesDefinition","xField","yField","sizeField","filteredOutKey","updatedSeries","markerDomain","calcMarkerDomain","filterableEvent","isBubbleChart","currentXField","HistogramChartProxy","firstField","ChartOptionsService","chartSeriesTypes","createChartOptions","updateChart","getUpdateAxisOptions","getAxis","chartAxis","isMatchingSeries","chartRef","ComboChartProxy","fieldsMap","getYKeys","primaryYKeys","secondaryYKeys","secondaryYKey","secondaryAxisOptions","primaryYAxis","primaryYKey","lastSecondaryAxis","GridChartComp","availableChartThemes","modelParams","validateCustomThemes","createChart","insideDialog","addDialog","addMenu","addTitleEditComp","setActiveChartCellRange","raiseChartCreatedEvent","suppliedThemes","customThemeName","chartThemeOverrides","crossFilteringContext","crossFilteringResetCallback","crossFilterService","eChart","toTranslate","createChartProxy","titleEdit","getBestDialogSize","chartDialog","eMenuContainer","eTitleEditContainer","shouldRecreateChart","getCurrentChartType","handleEmptyChart","chartUpdateParams","pivotModeDisabled","minFieldsRequired","isEmptyChart","eEmpty","getUnderlyingChart","raiseChartDestroyedEvent","VERSION$a","upgradeChartModel","heuristicVersionDetection","migrateIfBefore","migrateV23","migrateV24","migrateV25_1","migrateV26","migrateV26_1","migrateV26_2","migrateV28","migrateV28_2","migrateV29","jsonRename","jsonDelete","LEGACY_PALETTES","jsonMutate","jsonDeleteDefault","highlightOptUpdate","jsonMove","otherChartOptions","otherModelProps","chartTypeMixin","minimalAxis_1","updatedAxes_1","axisProps","updatedChartOptions","jsonBackfill","jsonMoveIfMissing","modelAny","hasKey","hints","matchingHints","maxVersion","migration","versionNumber","versionParts","major","minor","patch","jsonMutateProperty","valueToMove","valueFound","renameTo","skipMissing","mutator","pathElements","parentPathElements","targetName","pathOptions","pathOptions_1","pathOptions_1_1","pathOption","jsonProp","borneo","pastel","flat","ChartService","activeCharts","activeChartComps","versionedModel","chartComp","createChartFromCurrentRange","selectedRange","getSelectedRange","getCellRange","createCellRangeFromCellRangeParams","cellRange_1","chartAllRangeParams","createChartContainerFunc","createChartRef","chartElement","destroyAllActiveCharts","CHARTS_VERSION","ChartTranslationService","ChartTranslationService_1","DEFAULT_TRANSLATIONS","pivotChartTitle","rangeChartTitle","categories","xyValues","xType","automatic","calloutLabels","sectorLabels","minSize","itemSpacing","layoutHorizontalSpacing","layoutVerticalSpacing","boldItalic","histogramBinCount","groupedColumnTooltip","stackedColumnTooltip","normalizedColumnTooltip","groupedBarTooltip","stackedBarTooltip","normalizedBarTooltip","pieTooltip","doughnutTooltip","lineTooltip","groupedAreaTooltip","stackedAreaTooltip","normalizedAreaTooltip","scatterTooltip","bubbleTooltip","histogramTooltip","columnLineComboTooltip","areaColumnComboTooltip","customComboTooltip","noDataToChart","pivotChartRequiresPivotMode","chartSettingsToolbarTooltip","chartLinkToolbarTooltip","chartUnlinkToolbarTooltip","chartDownloadToolbarTooltip","histogramFrequency","ChartCrossFilterService","ChartCrossFilterService_1","resetFilters","extractFilterColId","isValidColumnFilter","updateFilters","dataKey","existingGridValues","getCurrentGridValuesForCategory","updatedValues","getUpdatedFilterModel","getColumnFilterType","filterModels","filteredValues","getColumnById","RangeService","bodyScrollListener","intersectionRange","refreshLastRangeStart","beforeCols","dispatchChangedEvent","countBefore","lastRange","refreshRangeStart","rangeColumns","allPositions","pinnedBottomRowCount","appendRange","calculateColumnsBetween","rowForCell","setNewestRangeStartCell","newestRangeStartCell","updateRangeEnd","endColumn","colsToAdd","isLastCellOfRange","moveColInCellRange","colToMove","moveToFront","otherCols","getRangeEdgeColumns","allIndices","startCell","firstCol","endCellIndex","endCellFloating","newEndCell","newRange","forEachRowInRange","startsOnTheRight","columnsString","rowToColumnMap","rowName","currentRangeColIds","filteredColumns","currentValString","topRow","bottomRow","columnInRange","rowInRange","isRowInRange","rangeFirstIndexColumn","rangeLastIndexColumn","lastRangeColumn","isRightColumn","thisRow","equalsFirstRow","equalsLastRow","afterFirstRow","beforeLastRow","getDraggingRange","draggingRange","extendRange","updateValuesOnMove","lastCellHovered","mouseRowPosition","fromMouseClick","intersectionStartRow","intersectionEndRow","newRanges","intersectCols","rangeCountBefore","cellHasChanged","isMouseAndStartInPinned","columnFrom","columnTo","isSameColumn","AbstractSelectionHandle","changedCalculatedValues","shouldDestroyOnEndDragging","clearValues","getDraggingCssClass","preventRangeExtension","setCellCtrl","rangeStartRow","setRangeStartRow","rangeEndRow","setRangeEndRow","getLastCellHovered","cellHoverListener","oldCellComp","removeListeners","findLineByLeastSquares","maxDecimals","splitExponent","sum_x","sum_y","sum_xy","sum_xx","FillHandle","markedCells","cellValues","isUp","isReduce","initialXY","newX","newY","allowedDirection","getFillHandleDirection","dragAxis","initialPosition","markPathFrom","isX","colLen","lastCellMarked","raiseFillStartEvent","handleValueChanged","raiseFillEndEvent","fillStartEvent","fillEndEvent","initialRangeEndRow","initialRangeStartRow","finalRangeEndRow","finalRangeStartRow","withinInitialRange","initialValues","resetValues","iterateAcrossCells","fillValues","currentValues","updateInitialSet","skipValue","processValues","fromUserFunction","clearCellsInRange","userFillOperation","userResult","currentCellValue","allNumbers","asFloat","clearMarkedPath","clearCellValues","reduceVertical","extendVertical","initialColumn","reduceHorizontal","extendHorizontal","endPosition","isMovingUp","rowPos","cellInRange","isInitialRow","celPos","isMovingLeft","startCol","endCol","colsToMark","rangeFixed","fixRangeStartEnd","SelectionHandleFactory","VERSION$9","AgColorPanel","isSpectrumDragging","isSpectrumHueDragging","isSpectrumAlphaDragging","colorChanged","picker","initRecentColors","spectrumVal","onSpectrumDraggerDown","onSpectrumDraggerMove","spectrumHue","onSpectrumHueDown","onSpectrumHueMove","spectrumAlpha","onSpectrumAlphaDown","onSpectrumAlphaMove","recentColors","onRecentColorClick","refreshSpectrumRect","spectrumValRect","refreshHueRect","spectrumHueRect","refreshAlphaRect","spectrumAlphaRect","moveDragger","moveHueSlider","moveAlphaSlider","valRect","setSpectrumValue","hueRect","slider","spectrumHueSlider","sliderRect","alphaRect","spectrumAlphaSlider","spectrumColor","rgbaColor","spectrumDragger","brightness","dragger","draggerRect","innerHtml","addRecentColor","currentColor","maxRecentColors","AgColorPicker","eGuiRect","colorDialog","colorPanel","VERSION_CHECKING_FIRST_GRID_MAJOR_VERSION","VERSION_CHECKING_FIRST_CHARTS_MAJOR_VERSION","isValidVersion","isValidMajorVersion","gridMajorVersion","chartsMajorVersion","gridMajor","chartsMajor","gridMajorDifference","gridChartVersion","gridVersion","gridMinor","gridMajorMinor","chartsMajorMinor","validGridChartsVersionErrorMessage","chartsVersion","invalidMessage","validGridChartsVersion","chartsMinor","isValidMajor","__FORCE_MODULE_DETECTION_AG_GRID_CORE_EXT","agCharts","DetailCellRendererCtrl","loadRowDataVersion","needRefresh","setAutoHeightClasses","setupRefreshStrategy","addThemeToDetailGrid","createDetailGrid","loadRowData","eventRow","parentClass","detailClass","addOrRemoveDetailGridCssClass","providedStrategy","refreshStrategy","detailGridOptions","setDetailGrid","registerDetailWithMaster","masterGridApi","detailGridInfo","versionThisCall","getDetailRowData","DetailCellRenderer","eDetailGrid","setDefaultTemplate","templateFunc","agGridReact","agGridReactCloned","detailApi","VERSION$8","EnterpriseMenuFactory","activeMenu","restrictToTabs","getMenuParams","eMenuGui","currentHeaderPosition","closedFuncs","getClosedCallback","addStopAnchoring","showTabBasedOnPreviousSelection","EnterpriseMenu","EVENT_TAB_SELECTED","lastSelectedTab","columnToFocus","closedFuncsArr","stopAnchoringFunc","TABS_DEFAULT","initialSelection","restrictTo","tabFactories","includeChecks","TAB_GENERAL","createMainPanel","TAB_FILTER","createFilterPanel","TAB_COLUMNS","createColumnsPanel","getTabsToCreate","onHidePopup","onTabItemClicked","mainMenuList","tabName","isValidMenuTabItem","isNotSuppressed","isModuleLoaded","menuTabName","itemsToConsider","toShow","tabItemColumns","tabItemFilter","tabItemGeneral","activateTab","ev","getMenuItems","defaultMenuOptions","getDefaultMenuOptions","MENU_ITEM_SEPARATOR","allowPinning","rowGroupCount","doingGrouping","groupedByThisColumn","allowValue","allowRowGroup","pivotModeOn","isInMemoryRowModel","allowValueAgg","menuItemMapper","mapWithStockItems","hidePopupFunc","columnSelectPanel","columnLayout","columnSelectPanelGui","CSS_MENU","CSS_CONTEXT_MENU_OPEN","ContextMenuFactory","csvModuleMissing","excelModuleMissing","suppressExcel","suppressCsv","blockMiddleClickScrollsIfNeeded","which","eGridBodyGui","ContextMenu","currentFocusedCell","MenuItemMapper","originalList","resultList","getStockMenuItem","resultDef","skipHeaderOnAutoSize","createAggregationSubMenu","isEditable","exportSubMenuItems","csvModuleLoaded","excelModuleLoaded","chartMenuItemMapper","getChartItems","columnToUse","columnIsAlreadyAggValue_1","funcNames","funcName","VERSION$7","ChartMenuItemMapper","ChartMenuItemMapper_1","PivotMenuItemMapper","RangeMenuItemMapper","topLevelMenuItem","getMenuItem","filterAndOrderChartMenu","getConfigLookup","cleanInternals","removeKey","buildLookup","itemLookup","configLookup","menuItemLookup","orderedAndFiltered","chartConfigGroup","subMenus","itemKey","localeKey","MultiFilter","filterDefs","guiDestroyFuncs","activeFilterIndices","lastActivatedMenuItem","afterFiltersReadyFuncs","getFilterDefs","filterDef","createFilter","lastOpenedInContainer","filterGui","filterTitle","insertFilterMenu","insertFilterGroup","filterWithoutType","params_1","getLastActiveFilterIndex","rowPasses","providedFilter","updateActiveList","getChildFilterInstance","executeFunctionIfExists","executeWhenAllFiltersReady","filterChanged","changedFilter","lastActiveIndex","activeFilter","MultiFloatingFilterComp","floatingFilters","floatingFilterPromises","floatingFilterParams","parentMultiFilterInstance","floatingFilterPromise","createFloatingFilter","lastActiveFloatingFilterIndex_1","shouldShow","defaultComponentName","VERSION$6","bindCellRendererToHtmlElement","cellRendererPromise","eTarget","RichSelectRow","populateWithRenderer","populateWithoutRenderer","updateSelected","valueToRender","RichSelectCellEditor","selectionConfirmed","searchString","originalSelectedValue","createRowComponent","eList","renderSelectedValue","debounceDelay","searchDebounceDelay","clearSearchString","confirmSelection","valueToSelect","setSelectedValue","runSearch","keyString","searchStrings","keyParams","topSuggestion","topValue","cmp","mouseY","VERSION$5","FullStore","ssrmParams","storeParams","nodeIdSequence","groupLevel","nodeIdPrefix","blockUtils","createNodeIdPrefix","groupColVo","groupField","isRootStore","userInitialRowCount","storeUtils","getServerSideInitialRowCount","initialiseRowNodes","nodesAfterSort","nodesAfterFilter","loadingRowsCount","loadingRowNode","createRowNode","parentBlock","createDataNode","defaultId","prefixId","setDataIntoRowNode","addRowNode","checkOpenByDefault","fireStoreUpdatedEvent","storeInfo","groupLevelInfo","nodesToRecycle","createOrRecycleNodes","filterAndSortNodes","nodeToRecycle","foundNode","lookupNodeToRecycle","updateDataIntoRowNode","recycleNode","filterRowNodes","serverIsSorting","isServerSideSortAllLevels","isServerSideSortOnServer","noSortApplied","serverIsFiltering","isServerSideFilterAllLevels","isServerSideFilterOnServer","clearDisplayIndexes","displayIndexStart","displayIndexEnd","clearDisplayIndex","getDisplayIndexEnd","isDisplayIndexInStore","setDisplayIndexes","displayIndexSeq","visibleNodeIds","setDisplayIndex","forEachStoreDeep","childCache","forEachNodeDeepAfterFilterAndSort","getRowUsingDisplayIndex","displayRowIndex","binarySearchForDisplayIndex","extractRowBounds","lastRowNode","lastRowNodeBottomPx","res2","getIndexAtPixel","getChildStore","forEachChildStoreShallow","refreshAfterFilter","storeIsImpacted","isServerRefreshNeeded","refreshAfterSort","StoreLoadingFailed","StoreLoading","StoreWaitingToLoad","applyCallback","Cancelled","Applied","newRowNode","addStoreStates","suppressInfiniteScroll","purge","loadingRowsToShow","scheduleLoad","LazyBlockLoader","loadingNodes","checkForLoadQueued","loaderTimeout","nextBlockToLoad","queueLoadAction","isRowLoading","getBlockToLoad","firstRowInViewport","lastRowInViewport","getNodeCachedByDisplayIndex","lazyNode","getNodes","getBy","__needsRefreshWhenVisible","getBlockStartIndexForIndex","nodesToRefresh","getNodesToRefresh","nodeToRefresh","nodeToRefreshDist","distToViewportTop","distToViewportBottom","lazyIndex","executeLoad","getSsrmParams","pivotCols","groupKeys","removeNodesFromLoadingMap","onLoadSuccess","onLoadFailed","addNodesToLoadingMap","getNextBlockToLoad","getBlockSize","queueLoadCheck","startRowString","endRow_1","startRow_1","attemptLoad","availableLoadingCount","cacheBlockSize","DEFAULT_BLOCK_SIZE","storeIndex","getBlockBoundsForIndex","startOfBlock","MultiIndexMap","getIterator","LazyCache","numberOfRows","isLastRowKnown","nodeMap","nodeDisplayIndexMap","defaultNodeIdPrefix","rowLoader","destroyRowNode","getRowByDisplayIndex","getDisplayIndexStart","createStubNode","contiguouslyPreviousNode","lazyCacheNode","adjacentNodes","getSurroundingNodesByDisplayIndex","storeIndexFromEndIndex_1","previousNode","displayIndexDiff","newStoreIndex","storeIndexFromEndIndex","rowBounds","newNode","createRowAtIndex","getRowByStoreIndex","skipDisplayIndexes","numberOfRowsToSkip","orderedMap","stringIndex","numericIndex","numberOfRowsToSkip_1","purgeExcessRows","getDisplayIndexFromStoreIndex","nodeAtIndex","storeIndexDiff","atStoreIndex","createNodeCallback","doesNodeMatch","destroyRowAtIndex","lazyNode_1","markBlockForVerify","getRowDetails","getPrefixedId","getIdSequence","blockCounts","blockStates","blockStart","rowState","statePriorityMap","needsLoading","blockPrefix","uniqueStates","sortedStates","priorityState","loadedRowCount","purgeStubsOutsideOfViewport","firstRowBlockStart","lastRowBlockEnd","getBlocksDistanceFromRow","otherDisplayIndex","blockDistanceToMiddle","blockEnd","distEnd","distStart","lastLazyNode","farthest","allLoadedBlocks","blocksInViewport","numberOfBlocksToRetain","blocksToRemove","lastRowBlockStart","disposableNodes","rowBlockStart","isNodeCached","midViewportRow","blockDistanceArray","isNodeFocused","extractDuplicateIds","newIds","duplicates","numberOfRowsExpected","setStoreInfo","duplicateIdText","wasRefreshing","responseRowIndex","nodeFromCache","finishedRefreshing","fireRefreshFinishedEvent","lastInferredRow","markNodesForRefresh","isNodeInCache","updateRowNodes","updates","updatedNodes","insertRowNodes","inserts","indexToAdd","uniqueInsertsMap","dataId","uniqueInserts","numberOfInserts","nodesToMove","uniqueInsertOffset","getOrderedNodeMap","removeRowNodes","idsToRemove","removedNodes","nodesToVerify","deletedNodeCount","remainingIdsToRemove","allNodes","contiguousIndex","matchIndex","idToRemove","numericStoreIndex","LazyStore","idSequence","idFunc","insertedNodes","allIdsToRemove","allUniqueIdsToRemove","updateSelectionAfterTransaction","fireSelectionUpdatedEvent","orderedNodes","thisNode","boundsFromRow","numberOfRowDiff_1","distToPreviousNodeTop","distToNextNodeTop","distBetween","indexOfRow","nextTop_1","numberOfRowDiff_2","nextTop","numberOfRowDiff","ServerSideRowModel","pauseStoreUpdateListening","onStoreUpdated","resetListener","getRootStore","rowGroupColumnVos","columnsToValueObjects","valueColumnVos","pivotColumnVos","areColsSame","oldCols","allColsUnchanged","newCols","equivalentCol","missingCols","allowRemovedColumns","sortModelDifferent","sortListener","extractSortModel","rowGroupDifferent","pivotDifferent","newParams","createStoreParams","destroyRootStore","newSortModel","rootStore","storeFactory","createStore","updateRowIndexesAndBounds","rowDataChangedEvent","dispatchModelUpdated","dynamicRowHeight","getParams","newFilterModel","executeOnStore","storeToExecuteOn","nodeRange","thisRowIndex","StoreUtils","getRowsParams","currentCache","findNodeFunc","keyListForNextLevel","nextStore","valueColChanged","secondaryColChanged","colIdThisGroup","affectedGroupCols","assertRowModelIsServerSide","assertNotTreeData","GROUP_MISSING_KEY_ID","BlockUtils","usingMasterDetail","preserveStore","setTreeGroupInfo","getKeyFunc","setRowGroupInfo","setMasterDetailInfo","isMasterFunc","setChildCountIntoRowNode","cachedRowHeight","setGroupDataIntoRowNode","getChildCount","groupDisplayCols","expandedMasterRow","NodeManager","TransactionManager","asyncTransactions","asyncTransactionsTimeout","scheduleExecuteAsync","executeAsyncTransactions","resultFuncs","resultsForEvent","transactionsToRetry","atLeastOneTransactionApplied","txWrapper","StoreNotFound","removedRowIds","deleteSelectionStateFromParent","ExpandListener","storeUpdatedEvent","SortListener","replaceAutoGroupColumnWithActualRowGroupColumns","removeMultiColumnPrefixOnColumnIds","multiColumnPrefix","autoGroupSortModel","autoGroupIndex","newModels","oldSortModel","findChangedColumnsInSort","listenerUtils","isSortingWithValueColumn","isSortingWithSecondaryColumn","allColsInBothSorts","oldSortItem","newSortItem","differentSorts","differentIndexes","FilterListener","oldModel","findChangedColumns","allColKeysMap","StoreFactory","getStoreParams","userStoreParams","getLevelSpecificParams","infiniteScroll","isInfiniteScroll","getMaxBlocksInCache","storeType","isSuppressServerSideInfiniteScroll","ListenerUtils","changedColumnsInSort","valueColIds","secondaryColIds","DefaultStrategy","selectedState","toggledNodes","lastSelected","selectAllUsed","getSelectedState","setSelectedState","removedNodeIds","anyNodesToggled","onlyThisNode","updateNodeState","processNewRow","isNodeSelected","isToggled","clearedRows","GroupSelectsChildrenStrategy","removeRedundantState","recursivelySerializeState","normalisedState","toggledNodes_1","recursivelyDeserializeState","parentSelected","innerState","isThisNodeSelected","convertedChildren","doesRedundantStateExist","parentRoute","parentState","remainingRoute","anyStateChanged","getRouteToNode","completedRoutes_1","recursivelySelectNode","idPathToNode","isNodePathSelected","pathToNode","tempNode","recursivelyRemoveState","allChildNodesFound","noIndeterminateChildren","doesStateAlreadyExist","ServerSideSelectionService","selectionStrategy","StrategyClazz","shotgunResetNodeSelectionState","changedNodes","storeRoute","VERSION$4","ClientSideValuesExtractor","createKey","caseFormat","treeDataOrGrouping","extractUniqueValues","existingValues","existingFormattedKeys","extractExistingFormattedKeys","formattedKeys","unformattedKey","formattedKey","keyToAdd","existingUnformattedKey","addValueForTreeDataOrGrouping","convertValuesToStrings","addValueForConvertValuesToString","processedPart","dataPath","treeKey","SetFilterDisplayValue","SELECT_ALL","FlatSetDisplayValueModel","displayedKeys","updateDisplayedValuesToAllAvailable","_getValue","_allKeys","availableKeys","updateDisplayedValuesToMatchMiniFilter","matchesFilter","nullMatchesFilter","availableKeys_1","availableKeys_1_1","valueFormatterValue","getDisplayedValueCount","getDisplayedItem","getSelectAllItem","getDisplayedKeys","forEachDisplayedKey","someDisplayedKey","hasGroups","TreeSetDisplayValueModel","treeListPathGetter","treeListFormatter","allDisplayedItemsTree","activeDisplayedItemsFlat","selectAllItem","available","parentTreeKeys","generateItemTree","updateAvailable","updateExpandAll","flattenItems","updateFilter","getTreeListPathGetter","allKeys_1","allKeys_1_1","DATE_TREE_LIST_PATH_GETTER","recursivelyFlattenDisplayedItems","recursiveFilterReset","recursiveItemCheck","recursiveForEachItem","topParentExpanded","recursiveSomeItem","recursiveExpansionCheck","someTrue","someFalse","items_1","items_1_1","item_1","childExpanded","checkFunction","itemProp","itemPasses","isAvailable","SetFilterModelValuesType","SetValueModel","miniFilterText","providedValues","selectedKeys","usingComplexObjects","treeDataTreeList","groupingTreeList","suppressSorting","treeList","setIsLoading","keyComparator","compareByValue","entryComparator","createTreeDataOrGroupingComparator","aValue","bValue","clientSideValuesExtractor","valuesType","TAKEN_FROM_GRID_VALUES","PROVIDED_LIST","PROVIDED_CALLBACK","displayValueModel","updateAllValues","updatedKeys","resetSelectionState","refreshValues","overrideValues","valuesToUse","allValuesPromise","refreshAfterAnyFilterChanged","showAvailableOnly","updateAvailableKeys","isInitialised","processAllKeys","callback_1","getFromRows","getValuesFromRows","validateProvidedValues","sortedKeys","sortKeys","setValuesType","getValuesType","isKeyAvailable","EVENT_AVAILABLE_VALUES_CHANGED","updateDisplayedValues","nullableValues","excelMode","removeUnavailableValues","setMiniFilter","getMiniFilter","formattedFilterText","valueToCheck","hasSelections","defaultToNothingSelected","selectAllMatchingMiniFilter","clearExistingSelection","deselectAllMatchingMiniFilter","selectKey","deselectKey","isEverythingVisibleSelected","isKeySelected","isNothingVisibleSelected","existingFormattedKeys_1","convertAndGetKey","SetFilterListItem","GROUP_TEMPLATE","isTree","hasIndeterminateExpandState","refreshVariableAriaLabels","setupExpansion","eGroupIndeterminateIcon","setExpandedIcons","toggleSelected","setupFixedAriaLabels","itemLabel","valueFunction","setTooltipAndCellRendererParams","cellRendererComponent","renderCellWithoutCellRenderer","formattedValue","getFormattedValue","renderCell","showTooltips","tooltipValue","getComponentHolder","DEFAULT_LOCALE_TEXT","loadingOoo","blanks","searchOoo","selectAllSearchResults","noMatches","SetFilterModelFormatter","valueModel","getValueModel","SetFilter","setFilterParams","hardRefreshVirtualList","noValueFormatterSupplied","appliedModelKeys","noAppliedModelKeys","translateForSetFilter","handleKeySpace","handleKeyEnter","handleKeyLeft","handleKeyRight","getComponentForKeyEvent","eMiniFilter","eSetFilterList","setModelAndRefresh","applyExcelModeOptions","setValueFormatter","isGroupCol","generateCreateKey","initialiseFilterBodyUi","addEventListenersForDataChanges","providedValueFormatter","isRefData","getKeyCreatorParams","applyMiniFilterWhileTyping","isValuesTakenFromGrid","syncAfterDataChange","eFilterLoading","initVirtualList","initMiniFilter","filterListName","createSetListItem","updateSetListItem","suppressSelectAll","ModelWrapper","ModelWrapperWithSelectAll","isSelectAllSelected","TreeModelWrapper","getSelectAllLabel","selectedListener","expandedListener","isSetFilterModelTreeItem","onGroupItemSelected","onExpandedChanged","isSelectedExpanded","itemParams","translateKey","listItem","areAllChildrenSelected","suppressMiniFilter","onMiniFilterInput","resetExpansion","resetMiniFilter","showOrHideResults","doesFilterPassForTreeData","doesFilterPassForGrouping","getValueFromNode","doesFilterPassForConvertValuesToString","isInAppliedModel","checkMakeNullDataPath","setFilterValues","resetFilterValues","refreshFilterValues","filterOnAllVisibleValues","updateUiAfterMiniFilterChange","eNoMatches","applyImmediately","refreshAfterSelection","recursiveGroupSelection","childItem","recursiveExpansion","refreshAfterExpansion","newMiniFilter","getFilterKeys","getFilterValues","refreshValuesOnOpen","recursiveChildSelectionCheck","someTrue_1","someFalse_1","childSelected","valueToFormat","recursiveCollapse_1","oldRow","newRow","SetFloatingFilterComp","availableValuesListenerAdded","updateFloatingFilterText","parentSetFilterInstance","addAvailableValuesListener","setValueModel","VERSION$3","StatusBarService","allComponents","registerStatusPanel","StatusBar","statusPanels","leftStatusPanelComponents","componentConfig","createAndRenderComponents","eStatusBarLeft","centerStatusPanelComponents","eStatusBarCenter","rightStatusPanelComponents","eStatusBarRight","statusBarComponents","ePanelComponent","componentDetails","componentDetail","NameValueComp","TotalAndFilteredRowsComp","getFilteredRowCountValue","totalRowCount","getTotalRowCount","localeTextFunc_1","filteredRowCount","FilteredRowsComp","totalRowCountValue","getTotalRowCountValue","filteredRowCountValue","TotalRowsComp","getRowCountValue","SelectedRowsComp","isValidRowModel","onRowSelectionChanged","selectedRowCount","AggregationComp","avgAggregationComp","countAggregationComp","minAggregationComp","maxAggregationComp","sumAggregationComp","setAggregationComponentValue","statusBarValueComponent","getAggregationValueComponent","refComponentName","statusBar","aggregationPanelConfig","statusPanelParams","numberCount","cellsSoFar","gotResult","gotNumberResult","VERSION$2","VERSION$1","DEFAULT_VIEWPORT_ROW_MODEL_PAGE_SIZE","DEFAULT_VIEWPORT_ROW_MODEL_BUFFER_SIZE","ViewportRowModel","rowNodesByIndex","onViewportChanged","getViewportRowModelPageSize","getViewportRowModelBufferSize","calculateFirstRow","bufferSize","afterBuffer","calculateLastRow","purgeRowsNotInViewport","setViewportRange","createBlankRowNode","firstNodeOutOfRange","lastNodeOutOfRange","callbackCount","defaultTooltipCss","extent$3","isNumber$3","isStringObject","BandScale$4","ZINDICIES","SparklineAxis","Sparkline","layoutId","defaultDateFormatter","Intl","DateTimeFormat","hour12","_onMouseMove","_onMouseOut","setupDomEventListeners","mouseMoveEvent","updateHitPoint","scheduleLayout","updateYScale","updateYScaleRange","updateYScaleDomain","updateXScale","getXScale","updateXScaleRange","updateXScaleDomain","xMinMax","updateAxisLine","updateCrosshairs","updateXCrosshairLine","updateYCrosshairLine","generateNodeData","getNodeData","highlightDatum","dehighlightDatum","pickClosestSeriesNodeDatum","oldHighlightedDatum","handleTooltip","invalidData","getDataType","xValueType","setSmallestXInterval","getDatum","setSparklineDimensions","shrunkWidth","shrunkHeight","getDistance","tooltipOptions","tooltipRendererResult","formatNumericDatum","cleanupDomEventListeners","toTooltipHtml","titleHtml","contentHtml","SparklineTooltip","tooltipRect","containerRect","getMarker","getLineDash","buttOrNull","solid","dash","dashDot","dashDotDot","shortDot","shortDash","shortDashDot","shortDashDotDot","longDash","longDashDot","longDashDotDot","roundOrSquare","extent$2","BandScale$3","SparklineMarker$1","SparklineLine$1","SparklineCrosshairs$1","xLine","yLine","AreaSparkline","strokePath","fillPath","xCrosshairLine","yCrosshairLine","areaSparklineGroup","xAxisLine","crosshairs","AXIS_LINE_ZINDEX","SERIES_FILL_ZINDEX","SERIES_STROKE_ZINDEX","CROSSHAIR_ZINDEX","SERIES_MARKERS_ZINDEX","fillData","strokeData","updateStroke","updateFill","yMin","yMax","firstValidX","lastValidX","previousX","selectionData","highlightSize","highlightFill","highlightStroke","highlightStrokeWidth","markerFormat","extent$1","BandScale$2","SparklineMarker","SparklineLine","SparklineCrosshairs","LineSparkline","lineSparklineGroup","BarColumnNodeTag","BarColumnLabel","InsideEnd","BarColumnSparkline","valueAxisDomain","axisLine","bandWidth","sparklineGroup","rectGroup","rectSelection","nodeSelectionData","updateRectSelection","updateRectNodes","gaps","nodeFormatter","nodeFormat","nodeFill","nodeStroke","nodeStrokeWidth","formatLabelValue","isNumber$2","BandScale$1","BarSparkline","invalidDatum","midPoint","isPositiveY","OutsideEnd","isNumber$1","ColumnSparkline","textHeight","AgSparkline","sparkline","getSparklineInstance","initSparkline","initSparklineByType","initBarColumnSparkline","initAreaSparkline","initLineSparkline","setValueIfPropertyExists","initPaddingOptions","initAxisOptions","initHighlightStyleOptions","initMarkerOptions","initLineOptions","initCrosshairsOptions","initLabelOptions","initCrosshairLineOptions","offsetValidator","defaultOffset","validators","validator","SparklineCellRenderer","firstTimeIn","sparklineOptions","sparklineTooltipSingleton","getSparklineTooltip","eSparkline","SparklineTooltipSingleton","destroyTooltip","AllEnterpriseModules","AllModules","__createBinding","k2","__setModuleDefault","__importStar","AgGridReact","react_1","agGridReactLegacy_1","agGridReactUi_1","setGridApi","AgGridReactLegacy","AgGridReactUi","ag_grid_community_1","prop_types_1","legacyReactComponent_1","newReactComponent_1","portalManager_1","reactFrameworkOverrides_1","SYNCHRONOUS_CHANGE_PROPERTIES","portalManager","PortalManager","componentWrappingElement","maxComponentCreationTimeMs","createStyleForDiv","getPortals","gridParams","ReactFrameworkComponentWrapper","ReactFrameworkOverrides","checkForDeprecations","rowDataChangeDetectionStrategy","shouldComponentUpdate","processPropsChanges","extractGridPropertyChanges","processSynchronousChanges","processAsynchronousChanges","debugLogging","propKey","isDisableStaticMarkup","disableStaticMarkup","isLegacyComponentRendering","legacyComponentRendering","asyncChanges","synchronousChanges_1","synchronousChangeProperty","MAX_COMPONENT_CREATION_TIME_IN_MS","addProperties","listOfProps","UserReactComponent","LegacyReactComponent","NewReactComponent","react_dom_1","reactComponent_1","server_1","keyGenerator_1","reactComponent","staticMarkup","staticRenderTime","eParentElement","createParentElement","renderStaticMarkup","createReactComponent","isStatelessComponent","componentInstance","addParentContainerStyleAndClasses","removeStaticMarkup","portal","mountReactPortal","isSlowRenderer","fallbackMethodAvailable","fallbackMethod","SLOW_RENDERING_THRESHOLD","isNullValue","originalConsoleError","renderToStaticMarkup","statelessComponentRendered","ReactComponent","gridComp_1","whenReadyFuncs","renderedAfterMount","mounted","processChanges","processWhenReady","BeansContext","utils_1","beansContext_1","useEffectOnce_1","CssClasses","setCssClasses","gridCssClasses","setGridCssClasses","setDetailGridOptions","detailRowData","setDetailRowData","ctrlRef","eGuiRef","topClassName","gridClassName","useLayoutEffectOnce","setClass","useCallback","jsComp_1","eValueRef","eCheckboxRef","eExpandedRef","eContractedRef","setInnerCompDetails","expandedCssClasses","setExpandedCssClasses","contractedCssClasses","setContractedCssClasses","checkboxCssClasses","setCheckboxCssClasses","showJsComp","expandedClassName","contractedClassName","checkboxClassName","useFwRenderer","FwRenderer","useValue","CellCompState","popupEditorComp_1","showJsRenderer_1","renderDetails","editDetails","renderKey","setRenderKey","userStyles","jsEditorComp","setJsEditorComp","cellRendererRef","jsCellRendererRef","cellEditorRef","cellWrapperVersion","setCellWrapperVersion","setCellWrapperRef","cellValueVersion","setCellValueVersion","setCellValueRef","showCellWrapper","setCellEditorRef","msg_1","msg_2","checkCellEditorDeprecations","setPopupCellEditorRef","setInlineCellEditorRef","lastRenderDetails","oldDetails","newDetails","oldCompDetails","createSyncJsComp","compGui","addComp","eGui_1","cellWrapperOrUndefined","reactCellRendererStateless","isComponentStateless","cellInstanceId","showContents","showDetails","setECellValue","noCellRenderer","reactCellRenderer","CellRendererClass","valueForNoCellRenderer","bodyJsxFunc","jsxShowValue","CellEditorClass","reactInlineEditor","reactPopupEditor","jsPopupEditor","wrappedContent","jsChildComp","jsxEditValue","popupEditorWrapper","setPopupEditorWrapper","eChildGui","showTools","destroyCellRenderer","jsCompDetails","comp_1","refreshResult","useEffectOnce","gridHeaderComp_1","reactComment_1","rowContainerComp_1","rowAnimationClass","setRowAnimationClass","topHeight","bottomHeight","stickyTopTop","stickyTopWidth","topDisplay","bottomDisplay","forceVerticalScrollClass","setForceVerticalScrollClass","topAndBottomOverflowY","setTopAndBottomOverflowY","cellSelectableCss","layoutClass","setLayoutClass","eRoot","beansToDestroy","CompClass","rootClasses","classesList","bodyViewportClasses","bodyClasses","bodyClipperClasses","topClasses","stickyTopClasses","bottomClasses","stickyTopStyle","createRowContainer","createSection","section","gridBodyComp_1","tabGuardComp_1","rtlClass","keyboardFocusClass","setKeyboardFocusClass","setInitialised","tabGuardReady","setTabGuardReady","gridCtrlRef","eRootWrapperRef","tabGuardRef","eGridBodyParentRef","focusInnerElementRef","currentController","els","gridBodyCompEl","sideBarEl","HeaderDropZonesClass","SideBarClass","StatusBarClass","WatermarkClass","PaginationClass","additionalEls","eRootWrapper","eGridBodyParent","headerDropZonesComp","statusBarComp","paginationComp","watermarkComp","rootWrapperClasses","rootWrapperBodyClasses","WebkitUserSelect","setTabGuardCompRef","headerRowContainerComp_1","ariaSort","ariaDescription","userCompRef","userCompStateless","reactUserComp","UserCompClass","cssBodyClasses","setBodyCssClasses","cssButtonWrapperClasses","setButtonWrapperCssClasses","buttonWrapperAriaHidden","setButtonWrapperAriaHidden","alreadyResolved","userCompResolve","userCompPromise","bodyClassName","buttonWrapperClassName","cssResizableClasses","setResizableCssClasses","resizableAriaHidden","setResizableAriaHidden","ariaExpanded","userCompDomElement","resizableClassName","__spreadArrays","jl","headerCellComp_1","headerGroupCellComp_1","headerFilterCellComp_1","typeColumn","typeGroup","typeFilter","setCellCtrlsMaintainOrder","prevMap","nextMap","oldCtrlsWeAreKeeping","createCellJsx","headerRowComp_1","ariaHidden","headerRowCtrls","setHeaderRowCtrls","centre","insertRowsJsx","setRef","eForCommentRef","eForComment","eComment","cellComp_1","rowBusinessKey","instanceIdMap","fullWidthCompDetails","setFullWidthCompDetails","fullWidthCompRef","autoHeightSetup","autoHeightSetupAttempt","setAutoHeightSetupAttempt","agFlushSync","oldCellCtrls","newCellCtrls","newInstanceIdMap","tempMap","maintainOrderOnColumns","FullWidthComp","showFullWidthFramework","showCells","reactFullWidthCellRendererStateless","rowComp_1","rowCtrlsOrdered","setRowCtrlsOrdered","rowCtrlsRef","domOrderRef","wrapperClasses","viewportClasses","containerClasses","template3","topLevelRef","updateRowCtrlsOrdered","newRows","useFlush","buildContainer","topTabGuardRef","bottomTabGuardRef","tabGuardCtrlRef","effectFn","effectCalled","setVal","initialClasses","classesMap","isReactComponent","$$typeof","createRootAndFlushSyncAvailable","createRoot","flushSync","ChangeDetectionStrategyType","oldPortal","portalKey","createOrUpdatePortal","valueRenderedIsNull","refreshComponent","updateReactPortal","wrappingElement","portals","hasPendingPortalUpdate","destroyPortal","curPortal","batchUpdate","getComponentWrappingElement","waitForInstance","newPortal","getReactComponentName","statelessComponent","isStateless","reactContainer","getReactContainerStyle","getReactContainerClasses","childElementCount","getMemoType","hasSymbol","frameworkComponentInstance","groupCellRenderer_1","detailCellRenderer_1","file","acceptedFiles","acceptedFilesArray","baseMimeType","installedModules","moduleId","isFormData","FormData","isArrayBufferView","isFile","isStream","isURLSearchParams","isStandardBrowserEnv","assignValue","__webpack_require__","paramsSerializer","serializedParams","hashmarkIndex","__CANCEL__","normalizeHeaderName","DEFAULT_CONTENT_TYPE","setContentTypeIfUnset","adapter","transformRequest","transformResponse","xsrfCookieName","xsrfHeaderName","maxContentLength","validateStatus","settle","buildURL","parseHeaders","isURLSameOrigin","createError","requestData","requestHeaders","responseHeaders","ontimeout","cookies","xsrfValue","onDownloadProgress","onUploadProgress","upload","cancelToken","enhanceError","config1","config2","Cancel","cov_15j8tpybze","gcv","coverageData","statementMap","fnMap","decl","loc","branchMap","locations","_coverageSchema","_axios2","_initialiseProps","timeouts","cancelMethods","reqMethod","isPending","pendingMethod","isPolling","pollingInProgress","pollingMethod","isUpdating","updating","updatingMethod","setOffPendingStatus","setOffPendingStatusThen","setOffPendingStatusCatch","errorHandler","cl","pollingRequest","sendRequest","continuePolling","lockable","axiosOption","CancelToken","Axios","mergeConfig","axios","instanceConfig","isCancel","spread","InterceptorManager","dispatchRequest","interceptors","chain","interceptor","getUri","use","eject","isAbsoluteURL","combineURLs","throwIfCancellationRequested","throwIfRequested","baseURL","cachedSetTimeout","cachedClearTimeout","defaultSetTimout","defaultClearTimeout","runTimeout","currentQueue","draining","queueIndex","cleanUpNextTick","drainQueue","runClearTimeout","Item","nextTick","argv","prependListener","prependOnceListener","cwd","chdir","umask","normalizedName","isAxiosError","ignoreDuplicateOf","originURL","msie","urlParsingNode","resolveURL","port","requestURL","toGMTString","relativeURL","executor","resolvePromise","argType","___CSS_LOADER_API_IMPORT___","useSourceMap","sourceMap","cssMapping","sourceMapping","sourceURLs","sourceRoot","cssWithMappingToString","mediaQuery","dedupe","alreadyImportedModules","Adder","adder","bv","av","epsilon2","quarterPi","haversin","streamGeometry","streamGeometryType","streamObjectType","Feature","FeatureCollection","Sphere","streamLine","streamPolygon","GeometryCollection","lineStart","lineEnd","polygonStart","polygonEnd","lambda00","phi00","lambda0","cosPhi0","sinPhi0","areaRingSum","areaSum","areaStream","areaRingStart","areaRingEnd","areaRing","areaPointFirst","areaPoint","dLambda","sdLambda","adLambda","spherical","cartesianDot","cartesianCross","cartesianAddInPlace","cartesianScale","cartesianNormalizeInPlace","phi0","W0","W1","X0","Y0","Z0","X1","Y1","Z1","X2","Y2","Z2","deltaSum","boundsStream","boundsPoint","boundsLineStart","boundsLineEnd","boundsRingPoint","boundsRingStart","boundsRingEnd","linePoint","inflection","phii","lambdai","antimeridian","rangeCompare","rangeContains","deltaMax","centroidStream","centroidPoint","centroidLineStart","centroidLineEnd","centroidRingStart","centroidRingEnd","centroidPointCartesian","centroidLinePointFirst","centroidLinePoint","centroidRingPointFirst","centroidRingPoint","cz","rotationIdentity","rotateRadians","deltaPhi","deltaGamma","rotationLambda","rotationPhiGamma","forwardRotationLambda","cosDeltaPhi","sinDeltaPhi","cosDeltaGamma","sinDeltaGamma","circleStream","cosRadius","sinRadius","rejoin","Intersection","compareIntersection","startInside","subject","pointEqual","isSubject","arrays","clipMax","clipMin","clipExtent","comparePoint","x__","y__","v__","x_","y_","v_","clean","activeStream","bufferStream","clipStream","winding","polygonInside","cleanInside","cacheStream","point0","sinPhi1","cosPhi1","phiArc","lengthSum","lengthStream","lengthPointFirst","lengthLineEnd","lengthPoint","cosDelta","containsObjectType","containsGeometry","containsGeometryType","containsLine","containsPolygon","polygonContains","ringRadians","pointRadians","graticuleX","graticuleY","graticule","DX","DY","extentMajor","extentMinor","stepMajor","stepMinor","graticule10","cy0","sy0","sy1","kx0","ky0","kx1","ky1","x00","y00","centroidPointFirstLine","centroidPointLine","centroidPointFirstRing","centroidPointRing","PathContext","_radius","pointRadius","_line","lengthRing","PathString","_string","projectionStream","contextStream","pointVisible","clipLine","sink","rotatedStart","ringBuffer","ringSink","polygonStarted","pointRing","ringStart","ringEnd","pointLine","ringSegments","validSegment","sign0","sign1","sinLambda0Lambda1","clipAntimeridianIntersect","TransformStream","fitExtent","fitSize","cosMinDistance","delta2","resampleLineTo","c0","dx2","dz","resampleStream","ringPoint","resampleNone","transformRadians","projectionMutator","projectAt","projectRotate","preclip","postclip","projectResample","resample","projectTransform","recenter","clipAngle","smallRadius","notHemisphere","two","n2n2","n1n2","n1xn2","uu","v0","v00","conicProjection","parallels","conicEqualAreaRaw","cylindricalEqualAreaRaw","r0y","conicEqualArea","lower48Point","alaskaPoint","hawaiiPoint","lower48","albers","alaska","hawaii","pointStream","albersUsa","streams","azimuthalRaw","azimuthalInvert","azimuthalEqualAreaRaw","cxcy","azimuthalEquidistantRaw","mercatorRaw","mercatorProjection","reclip","tany","conicConformalRaw","fy","equirectangularRaw","conicEquidistantRaw","gy","nx","gnomonicRaw","scaleTranslate","kx","ky","reflectX","reflectY","naturalEarth1Raw","phi4","orthographicRaw","stereographicRaw","transverseMercatorRaw","getDefaultOptions","setDefaultOptions","_index2","_index3","_index4","_index5","_index6","_index7","formatTimezoneShort","dirtyDelimiter","absOffset","formatTimezoneWithOptionalMinutes","formatTimezone","localize","era","signedYear","ordinalNumber","signedWeekYear","weekYear","twoDigitYear","isoWeekYear","quarter","isoWeek","dayOfWeek","getUTCDay","localDayOfWeek","weekStartsOn","isoDayOfWeek","dayPeriodEnumValue","dayPeriod","_localize","timezoneOffset","_originalDate","originalDate","getUTCMilliseconds","fractionalSeconds","dateLongFormatter","formatLong","timeLongFormatter","dateTimeFormat","matchResult","datePattern","timePattern","utcDate","dirtyDate","MILLISECONDS_IN_DAY","MILLISECONDS_IN_WEEK","fourthOfJanuaryOfNextYear","startOfNextYear","fourthOfJanuaryOfThisYear","startOfThisYear","_options$firstWeekCon","_options$locale","_options$locale$optio","_defaultOptions$local","_defaultOptions$local2","firstWeekContainsDate","firstWeekOfNextYear","firstWeekOfThisYear","isProtectedDayOfYearToken","protectedDayOfYearTokens","isProtectedWeekYearToken","protectedWeekYearTokens","throwProtectedError","fourthOfJanuary","_options$weekStartsOn","firstWeek","dirtyNumber","dirtyAmount","getTimezoneOffsetInMilliseconds","requiredArgs","roundingMap","defaultRoundingMethod","getRoundingMethod","toInteger","addDays","MILLISECONDS_IN_HOUR","addHours","addMilliseconds","addMonths","dayOfMonth","endOfDesiredMonth","addWeeks","addYears","compareAsc","dirtyDateLeft","dirtyDateRight","dateLeft","dateRight","millisecondsInMinute","millisecondsInHour","differenceInCalendarDays","startOfDayLeft","startOfDayRight","timestampLeft","timestampRight","differenceInCalendarMonths","compareLocalAsc","differenceInDays","differenceInHours","roundingMethod","differenceInMilliseconds","differenceInMinutes","differenceInMonths","toDate","isLastMonthNotFull","endOfDay","endOfMonth","isLastDayOfMonth","differenceInSeconds","differenceInYears","differenceInCalendarYears","isLastYearNotFull","eachDayOfInterval","dirtyInterval","_options$step","startDate","currentDate","eachWeekOfInterval","endDate","startDateWeek","endDateWeek","weeks","currentWeek","startOfUTCISOWeek","getUTCISOWeekYear","startOfUTCWeek","getUTCWeekYear","addLeadingZeros","lightFormatters","startOfUTCWeekYear","getUTCWeek","startOfUTCISOWeekYear","getUTCISOWeek","getUTCDayOfYear","formattingTokensRegExp","longFormattingTokensRegExp","escapedStringRegExp","doubleQuoteRegExp","unescapedLatinCharacterRegExp","dirtyFormatStr","_options$locale2","_options$locale2$opti","_ref7","_options$locale3","_options$locale3$opti","_defaultOptions$local3","_defaultOptions$local4","formatStr","defaultLocale","subMilliseconds","formatterOptions","firstCharacter","longFormatter","useAdditionalWeekYearTokens","useAdditionalDayOfYearTokens","getISOWeeksInYear","thisYear","getWeek","startOfWeek","getWeekYear","startOfWeekYear","isAfter","dirtyDateToCompare","dateToCompare","dirtyLeftDate","dirtyRightDate","isSameDay","dateLeftStartOfDay","dateRightStartOfDay","isToday","lastDayOfWeek","buildFormatLongFn","defaultWidth","full","long","formatDistance","formatRelative","formatDistanceLocale","lessThanXSeconds","one","xSeconds","halfAMinute","lessThanXMinutes","xMinutes","aboutXHours","xHours","xDays","aboutXWeeks","xWeeks","aboutXMonths","xMonths","aboutXYears","xYears","overXYears","almostXYears","tokenValue","addSuffix","comparison","formatRelativeLocale","lastWeek","yesterday","today","tomorrow","nextWeek","_date","_baseDate","buildLocalizeFn","dirtyIndex","formattingValues","defaultFormattingWidth","_defaultWidth","argumentCallback","rem100","narrow","abbreviated","wide","am","pm","midnight","noon","morning","afternoon","evening","night","buildMatchFn","matchPattern","matchPatterns","defaultMatchWidth","matchedString","parsePatterns","defaultParseWidth","findKey","valueCallback","parsePattern","parseResult","any","parseISO","_options$additionalDi","additionalDigits","dateStrings","dateString","timeString","patterns","dateTimeDelimiter","timeZoneDelimiter","splitDateString","parseYearResult","captures","restDateString","century","parseYear","dateRegex","isWeekDate","parseDateUnit","_year","validateWeekDate","dayOfISOWeekYear","daysInMonths","isLeapYearIndex","validateDate","validateDayOfYearDate","parseDate","timeRegex","parseTimeUnit","validateTime","parseTime","timezoneString","timezoneRegex","_hours","validateTimezone","parseTimezone","startOfDay","startOfISOWeek","startOfISOWeekYear","getISOWeekYear","startOfTomorrow","subDays","subHours","subYears","argStr","_index9","_index10","_index11","_index8","_typeof2","singleMatcher","multiMatcher","decodeComponents","tokens","encodedURI","replaceMap","customDecodeURIComponent","signedArea","bridgeReverse","deviation","trianglesArea","EChartsReact","echarts","EChartsReactCore","isInitialResize","renderNewEcharts","shouldSetOption","onEvents","dispose","pickKeys","updateEChartsOption","getEchartsInstance","getInstanceByDom","onChartReady","echartsInstance","bindEvents","_bindEvent","notMerge","lazyUpdate","showLoading","loadingOption","echartInstance","hideLoading","newStyle","Browser","firefox","newEdge","weChat","wxa","svgSupported","touchEventsSupported","pointerEventsSupported","domSupported","transformSupported","transform3dSupported","hasGlobalWindow","getSystemInfoSync","SVGRect","WebKitCSSMatrix","detect","_ctx","_cachedFont","DEFAULT_FONT_SIZE","DEFAULT_FONT_FAMILY","DEFAULT_FONT","DEFAULT_TEXT_WIDTH_MAP","mapStr","getTextWidthMap","createCanvas","preCalcWidth","setPlatformAPI","newPlatformApis","BUILTIN_OBJECT","TYPED_ARRAY","objToString","arrayProto","nativeForEach","nativeFilter","nativeSlice","nativeMap","ctorFunction","protoFunction","protoKey","idStart","logError","typeStr","isPrimitive","Ctor","isDom","overwrite","targetProp","sourceProp","isBuiltInObject","mergeAll","targetAndSources","keysArr","inherits","clazz","baseClazz","clazzPrototype","mixin","keyList","isArrayLike","curry","isGradientObject","colorStops","isImagePatternObject","isRegExp","eqNaN","retrieve2","value0","retrieve3","normalizeCssArray","primitiveKey","setAsPrimitive","MapPolyfill","existed","isNativeMapSupported","HashMap","isArr","thisMap","createHashMap","concatArray","createObject","StyleCtor","dom","domStyle","webkitTapHighlightColor","own","scaleAndAdd","lenSquare","lengthSquare","distSquare","applyTransform","topTarget","Draggable","_dragStart","_drag","_dragEnd","draggingTarget","__hostTarget","_draggingTarget","dispatchToElement","findHover","_dropTarget","Eventful","eventProcessors","_$eventProcessor","_$handlers","eventProcessor","normalizeQuery","callAtLast","zrEventfulCallAtLast","lastWrap","newList","argLen","hItem","afterTrigger","triggerWithContext","rank","rowMask","colMask","detCache","fullRank","colStart","subRowMask","subRowStart","colLocalIdx","colTag","buildTransformer","mA","det","vh","srcPointX","srcPointY","pk","EVENT_SAVED_PROP","_calcOut","transformCoordWithViewport","inX","inY","isCanvasEl","saved","propLR","propTB","idxLR","idxTB","prepareCoordMarkers","transformerName","oldSrcCoords","srcCoords","destCoords","oldCoordTheSame","preparePointerTransformer","replaceReg","encodeHTML","MOUSE_EVENT_REG","firefoxNotSupportOffsetXY","clientToLocal","calculateZrXY","layerX","zrX","zrY","layerY","ey","getNativeEvent","normalizeEvent","targetTouches","wheelDelta","rawWheelDelta","getWheelDeltaMayPolyfill","zrDelta","isMiddleOrRightButtonOnMouseUpDown","GestureMgr","recognize","_doTrack","_recognize","trackItem","recognizers","gestureInfo","pointPair","pinch","tracks","trackLen","pinchEnd","pinchPre","pinchScale","pinchCenter","pinchX","pinchY","out0","out1","out2","out3","out4","out5","atx","ad","aty","vx","vy","onet","mathMin","mathMax","rb","lb","minTv","maxTv","BoundingRect","calculateTransform","mtv","ax0","ay0","bx0","by0","overlap","dMin","dMax","d3","contain","plain","stopEvent","EmptyProxy","HoveredResult","handlerNames","tmpRect","Handler","painter","painterRoot","pointerSize","_hovered","_pointerSize","setHandlerProxy","_draggingMgr","isOutside","isOutsideBoundary","lastHovered","lastHoveredTarget","__zr","hoveredTarget","eventControl","zrEventControl","eventArgs","setCursorStyle","cursorStyle","targetInfo","eventPacket","eveType","gestureEvent","zrByTouch","makeEventPacket","eachOtherLayer","getDisplayList","setHoverTarget","targetSizeHalf","pointerRect","ignoreCoarsePointer","thetaStep","processGesture","_gestureMgr","gestureMgr","isHover","displayable","rectHover","ignoreClip","getClipPath","hoverCheckResult","handlerInstance","_downEl","_downPoint","_upEl","DEFAULT_MIN_GALLOPING","makeAscendingRun","runHi","reverseRun","binaryInsertionSort","gallopLeft","lastOffset","gallopRight","runLength","ts","runStart","minGallop","stackSize","mergeAt","start1","length1","start2","length2","cursor1","cursor2","count1","count2","exit","_minGallop","mergeLow","customCursor","customDest","mergeHigh","mergeRuns","forceMergeRuns","pushRun","_runStart","_runLength","TimSort","minRun","minRunLength","REDRAW_BIT","SHAPE_CHANGED_BIT","invalidZErrorLogged","logInvalidZError","shapeCompareFunc","zlevel","Storage","_roots","_displayList","_displayListLen","displayableSortFunc","includeIgnore","displayList","updateDisplayList","_updateAndAddDisplayable","clipPaths","beforeUpdate","afterUpdate","userSetClipPath","currentClipPath","parentClipPath","updateTransform","childrenRef","__dirty","disp","__clipPaths","decalEl","getDecalElement","textGuide","getTextGuideLine","textEl","addRoot","delRoot","delAllRoots","getRoots","msRequestAnimationFrame","mozRequestAnimationFrame","easingFuncs","linear","quadraticIn","quadraticOut","quadraticInOut","cubicIn","cubicOut","cubicInOut","quarticIn","quarticOut","quarticInOut","quinticIn","quinticOut","quinticInOut","sinusoidalIn","sinusoidalOut","sinusoidalInOut","exponentialIn","exponentialOut","exponentialInOut","circularIn","circularOut","circularInOut","elasticIn","elasticOut","elasticInOut","backIn","backOut","backInOut","bounceIn","bounceOut","bounceInOut","mathPow","mathSqrt","EPSILON_NUMERIC","THREE_SQRT","ONE_THIRD","_v0","_v1","_v2","isAroundZero","isNotAroundZero","cubicDerivativeAt","cubicRootAt","disc","discSqrt","ASqrt","extrema","cubicSubdivide","p01","p12","p23","p012","p123","p0123","cubicProjectPoint","cubicLength","iteration","quadraticProjectPoint","quadraticLength","createCubicEasingFunc","cubicEasingStr","cubic","a_1","b_1","c_1","d_1","Clip","_inited","_pausedTime","_paused","_life","life","_delay","onframe","ondestroy","onrestart","setEasing","globalTime","elapsedTime","percent","easingFunc","remainder","resume","Entry","LinkedList","insertEntry","LRU","_maxSize","put","_lastRemovedEntry","leastUsedEntry","kCSSColorTable","clampCssByte","clampCssFloat","parseCssInt","parseCssFloat","cssHueToRgb","lerpNumber","setRgba","copyRgba","colorCache","lastRemovedArr","putToCache","colorStr","rgbaArr","iv","strLen","ep","fname","hsla2rgba","hsla","lift","colorArr","toHex","fastLerp","leftIndex","rightIndex","dv","fastMapToColor","fullOutput","mapToColor","modifyHSL","vMin","vMax","deltaR","deltaG","deltaB","rgba2hsla","clampCssAngle","modifyAlpha","arrColor","lum","backgroundLum","mathRound","normalizeColor","round3","round4","TEXT_ALIGN_TO_ANCHOR","isImagePattern","isPattern","svgElement","isSVGPattern","isLinearGradient","isRadialGradient","isGradient","getIdURL","getPathPrecision","getGlobalScale","getSRTTransformString","skewX","skewY","encodeBase64","arraySlice","interpolateNumber","interpolate1DArray","add1DArray","add2DArray","len2","fillColorStops","val0","len0","len1","shorterArr","shorterLen","arrDim","arr0","arr0Len","arr1Len","cloneValue","rgba2String","isGradientValueType","valType","isArrayValueType","tmpRgba","Track","discrete","_invalid","_needsSort","_lastFr","_lastFrP","setFinished","_additiveTrack","needsAnimate","getAdditiveTrack","addKeyframe","arrayDim","guessArrayDim","parsedGradient","colorStop","kf","maxTime","additiveTrack","kfs","kfsLen","lastKf","additiveValue","frameIdx","nextFrame","isAdditive","kfsNum","isValueColor","lastFrame","targetArr","_additiveValue","interpolate2DArray","nextVal_1","isLinearGradient_1","nextColorStop","_addToTarget","Animator","allowDiscreteAnimation","additiveTo","_tracks","_trackKeys","_maxTime","_started","_clip","_target","_additiveAnimators","_allowDiscrete","getMaxTime","getDelay","getLoop","getTarget","changeTarget","when","whenWithKeys","_getAdditiveTrack","addtiveTrackKfs","lastFinalKf","isPaused","_force","_doneCallback","_setTracksFinished","doneList","_doneCbs","_abortedCallback","abortedList","_abortedCbs","removeClip","tracksKeys","trackName","additiveAnimators","getTrack","stillHasAdditiveAnimator","onframeList","_onframeCbs","addClip","forwardToLast","during","getClip","getTracks","stopTracks","allAborted","saveTo","trackKeys","firstOrLast","__changeFinalValue","finalProps","Animation","_pauseStart","_head","_tail","addAnimator","removeAnimator","notTriggerFrameAndStageUpdate","nextClip","mouseHandlerNames","pointerEventNameMap","globalEventSupported","localNativeListenerNames","pointerup","pointerout","mouse","nm","globalNativeListenerNames","wheelEventSupported","isPointerFromTouch","pointerType","markTouch","isLocalEl","elTmp","isLocal","domBelongToZr","FakeGlobalEvent","localDOMHandlers","mousedown","__mayPointerCapture","downPoint","__togglePointerCapture","mouseup","toElement","__pointerCapturing","wheel","mousewheel","touchstart","__lastTouchMoment","touchmove","touchend","globalDOMHandlers","pointerCaptureReleasing","mountSingleDOMEventListener","nativeEventName","listenerOpts","domTarget","unmountDOMEventListeners","DOMHandlerScope","domHandlers","HandlerDomProxy","_localHandlerScope","_globalHandlerScope","touchTimer","setTouchTimer","isPointerCapturing","globalHandlerScope","mount","normalizeGlobalEvent","mountGlobalDOMEventListeners","dpr","screen","deviceXDPI","logicalXDPI","DARK_LABEL_COLOR","LIGHT_LABEL_COLOR","mIdentity","scaleTmp","tmpTransform","originTransform","Transformable","getLocalTransform","setSkew","setOrigin","needLocalTransform","_resolveGlobalScaleRatio","invTransform","globalScaleRatio","relX","relY","getComputedTransform","transformNode","setLocalTransform","shearX","decomposeTransform","transformCoordToLocal","transformCoordToGlobal","getLineScale","copyTransform","initDefaultProps","TRANSFORMABLE_PROPS","textWidthCache","cacheOfFont","innerGetBoundingRect","adjustTextX","textLines","uniondRect","parsePercent","calculateTextPosition","textPosition","halfHeight","textVerticalAlign","PRESERVED_NORMAL_STATE","PRIMARY_STATES_KEYS","DEFAULT_ANIMATABLE_MAP","tmpTextPosCalcRes","tmpBoundingRect","animators","currentStates","_init","markRedraw","updateInnerText","_textContent","textConfig","local","innerTransformable","textStyleChanged","innerOrigin","layoutRect","textOrigin","relOriginX","relOriginY","textOffset","innerTextDefaultStyle","_innerTextDefaultStyle","textFill","textStroke","autoStroke","canBeInsideText","insideFill","insideStroke","getInsideTextFill","getInsideTextStroke","outsideFill","outsideStroke","getOutsideFill","getOutsideStroke","setDefaultTextStyle","dirtyStyle","isDarkMode","isDark","attrKV","setTextConfig","setTextContent","setClipPath","keyOrObj","saveCurrentToNormalState","toState","_innerSaveToNormal","normalState","_normalState","fromStateTransition","__fromStateTransition","_savePrimaryToNormal","primaryKeys","hasState","ensureState","clearStates","noAnimation","keepCurrentStates","forceUseHoverLayer","toNormalState","animationCfg","stateTransition","stateProxy","useHoverLayer","hoverLayer","_toggleHoverLayerFlag","_applyStateObj","__inHover","_textGuide","_updateAnimationTargets","useStates","stateObjects","notChange","stateObj","lastStateObj","mergedState","_mergeStates","removeState","forceAdd","newStateExists","toggleState","mergedTextConfig","needsRestoreToNormal","transitionTarget","hasTransition","propNeedsTransition","_transitionState","_attachComponent","componentEl","addSelfToZr","_detachComponent","removeSelfFromZr","_clipPath","removeClipPath","previousTextContent","removeTextContent","cfg","removeTextConfig","setTextGuideLine","guideLine","removeTextGuideLine","refreshHover","inHover","updateDuringAnimation","wakeUp","stopAnimation","leftAnimators","animateTo","animateFrom","getPaintRect","elProto","createLegacyProperty","enhanceArray","animatable","animateToShallow","finishCount","doneHappened","cfgDone","cfgAborted","doneCb","abortedCb","copyArrShallow","copyValue","sourceArr","topKey","animateObj","targetKeys","additive","setToFinal","animateAll","existsAnimators","animationKeys","innerKey","targetVal","keyLen","is1DArraySame","revertedSource","reversedTarget","sourceClone","childAt","childOfName","_doAdd","addBefore","oldChild","replaceAt","eachChild","includeChildren","tmpMat","invisible","childRect","painterCtors","ZRender","_sleepAfterStill","_stillFrameAccum","_needsRefreshHover","_darkMode","rendererType","useDirtyRect","ssrMode","ssr","ssrOnly","handerProxy","HandlerProxy","getViewportRoot","useCoarsePointer","_flush","configLayer","zLevel","setBackgroundColor","_backgroundColor","totalLum","setDarkMode","darkMode","refreshImmediately","fromInside","triggerRendered","refreshHoverImmediately","setSleepAfterStill","stillFramesCount","clearAnimation","disposeAll","registerPainter","RADIAN_EPSILON","ROUND_SUPPORTED_PRECISION_MAX","linearMap","subDomain","subRange","returnStr","getPrecision","getPrecisionSafe","eIndex","significandPartLen","decimalPartLen","getPixelPrecision","dataExtent","pixelExtent","dataQuantity","sizeQuantity","getPercentWithPrecision","valueList","getPercentSeats","votesPerQuota","targetSeats","seats","votes","currentSum","maxId","seat","addSafe","maxPrecision","remRadian","radian","pi2","isRadianAroundZero","TIME_REG","quantity","exponent","exp10","quantile","ascArr","reformIntervals","littleThan","currClose","close_1","numericToNumber","valFloat","getRandomIdBase","getGreatestCommonDividor","getLeastCommonMultiple","DUMMY_COMPONENT_NAME_PREFIX","INTERNAL_COMPONENT_ID_PREFIX","normalizeToArray","defaultEmphasis","subOpts","emphasis","subOptName","TEXT_STYLE_OPTIONS","getDataItemValue","isDataItemOption","mappingToExists","existings","newCmptOptions","isNormalMergeMode","isReplaceMergeMode","isReplaceAllMode","existingIdIdxMap","cmptOption","mapResult","existing","isComponentIdInternal","newOption","keyInfo","brandNew","prepareResult","optionId","makeComparableKey","existingIdx","resultItem","mappingById","keyExistAndEqual","mappingByName","mappingByIndex","mappingInReplaceAllMode","idNum","convertOptionIdName","idOrName","isNameSpecified","componentModel","queryDataIndex","dataIndexInside","indexOfRawIndex","indexOfName","makeInner","innerUniqueIndex","hostObj","parseFinder","ecModel","finderInput","preParseFinder","mainTypeSpecified","queryOptionMap","others","defaultMainType","queryOption","mainType","queryResult","queryReferringComponents","useDefault","enableAll","enableNone","finder","queryType","includeMainTypes","SINGLE_REFERRING","MULTIPLE_REFERRING","userOption","indexOption","idOption","nameOption","specified","firstCmpt","queryComponents","buckets","interpolateRawValues","targetValue","isAutoPrecision","leftArr","rightArr","getDimensionInfo","leftVal","rightVal","TYPE_DELIMITER","IS_CONTAINER","IS_EXTENDED_CLASS","parseClassType","typeArr","enableClassExtend","rootClz","mandatoryMethods","$constructor","ExtendedClass","superCall","superApply","mountExtend","SubClz","SupperClz","classBase","enableClassManagement","registerClass","componentFullType","componentTypeInfo","makeContainer","getClass","subType","throwWhenNotFound","getClassesByMainType","hasClass","getAllClassMainTypes","hasSubTypes","makeStyleMapper","ignoreParent","getShallow","getAreaStyle","AreaStyleMixin","globalImageCache","findExistImage","newImageOrSrc","cachedImgObj","createOrUpdateImage","hostEl","cbPayload","__zrImageSrc","pendingWrap","isImageReady","imageOnLoad","__cachedImgObj","STYLE_REG","truncateText","ellipsis","prepareTruncateOptions","truncateSingleLine","preparedOpts","minChar","cnCharWidth","ascCharWidth","contentWidth","ellipsisWidth","textLine","subLength","estimateLength","RichTextToken","RichTextLine","RichTextContentBlock","contentHeight","outerWidth","outerHeight","pushTokens","wrapInfo","strLines","linesWidths","isEmptyStr","tokenStyle","rich","newLine","tokenPadding","tokenPaddingH","outerWidth_1","accumWidth","isLineHolder","tokensLen","breakCharMap","isWordBreakChar","isAlphabeticLetter","isBreakAll","lastAccumWidth","currentWord","currentWordWidth","chWidth","inWord","STYLE_MAGIC_KEY","DEFAULT_COMMON_STYLE","DEFAULT_COMMON_ANIMATION_PROPS","PRIMARY_STATES_KEYS_IN_HOVER_LAYER","Displayable","dispProto","beforeBrush","afterBrush","innerBeforeBrush","innerAfterBrush","shouldBePainted","viewWidth","viewHeight","considerClipPath","considerAncestors","culling","viewRect","isZeroArea","rectContain","_paintRect","shadowSize","dirtyRectTolerance","setPrevPaintRect","paintRect","_prevPaintRect","getPrevPaintRect","animateStyle","notRedraw","_rect","styleChanged","styleUpdated","createStyle","__hoverStyle","isStyleObject","_mergeStyle","targetStyle","sourceStyle","changedKeys","getAnimationStyleProps","statesKeys","mergedStyle","incremental","mathSin","mathCos","extremity","fromPoints","fromLine","xDim","yDim","fromCubic","cubicExtrema","cubicAt","fromQuadratic","quadraticExtremum","quadraticAt","fromArc","anticlockwise","vec2Min","vec2Max","CMD","tmpOutX","tmpOutY","min2","max2","mathAbs","hasTypedArray","tmpAngles","modPI2","normalizeArcAngles","newStartAngle","newEndAngle","PathProxy","notSaveData","_xi","_yi","_x0","_y0","_saveData","increaseVersion","segmentIgnoreThreshold","_ux","_uy","setDPR","_pathSegLen","_pathLen","_drawPendingPt","addData","exceedUnit","_pendingPtDist","_pendingPtX","_pendingPtY","quadraticCurveTo","arcTo","toStatic","appendPath","appendSize","appendPathData","cmd","_expandData","isFirst","_calculateLength","pathSegLen","pathTotalLen","segCount","rebuildPath","displayedLength","pendingPtX","pendingPtY","drawPart","accumLength","pendingPtDist","psi","isEllipse","breakBuild","newProxy","containStroke","normalizeRadian","windingLine","windingCubic","nRoots","nExtrema","y0_","y1_","windingQuadratic","windingArc","dTheta","tmp_1","containPath","DEFAULT_PATH_STYLE","strokePercent","strokeNoScale","strokeFirst","DEFAULT_PATH_ANIMATION_PROPS","pathCopyParams","pathProto","decal","_decalEl","buildPath","decalElStyle","getDefaultShape","getDefaultStyle","hasFill","pathFill","fillLum","shapeCfg","inBatch","pathUpdated","getUpdatedPathProxy","createPathProxy","hasStroke","needsUpdateRect","firstInvoke","rectStroke","_rectStroke","lineScale","strokeContainThreshold","localPos","pathProxy","dirtyShape","animateShape","shapeChanged","targetShape","targetShapePrimaryProps","shapeKeys","mergedShape","Sub","subPixelOptimize","autoBatch","DEFAULT_TSPAN_STYLE","TSpan","setBoundingRect","DEFAULT_IMAGE_STYLE","DEFAULT_IMAGE_ANIMATION_PROPS","sWidth","sHeight","ZRImage","_getSize","__image","otherDim","otherDimSize","subPixelOptimizeLine","outputShape","inputShape","subPixelOptimizeRect","originWidth","originHeight","positiveOrNegative","doubledPosition","RectShape","subPixelOptimizeOutputShape","optimizedShape","r3","r4","DEFAULT_RICH_TEXT_COLOR","DEFAULT_TEXT_ANIMATION_PROPS","textShadowColor","textShadowBlur","textShadowOffsetX","textShadowOffsetY","borderWidth","ZRText","_defaultStyle","_updateSubTexts","_childCursor","normalizeStyle","_updateRichTexts","_updatePlainTexts","defaultTextStyle","sourceRich","targetRich","_mergeRich","richNames","richName","_getOrCreateChild","textFont","textPadding","contentBlock","calculatedLineHeight","bgColorDrawn","truncateLineOverflow","lineOverflow","truncateMinChar","parsePlainText","getStyleText","needDrawBg","needDrawBackground","baseX","textX","textY","boxX","boxY","_renderBackground","getTextXForPadding","defaultLineWidth","useDefaultFill","getFill","getStroke","hasShadow","fixedBoundingRect","subElStyle","setSeparateFont","topWidth","matchedIndex","pendingList","calculatedHeight","calculatedWidth","stlPadding","truncateLine","finishLine","paddingH","tokenHeight","styleTokenWidth","tokenWidthNotSpecified","percentWidth","textBackgroundColor","bgImg","remainTruncWidth","parseRichText","xLeft","lineTop","xRight","tokenCount","remainedWidth","lineXLeft","lineXRight","_placeToken","parentBgColorDrawn","rectEl","imgEl","rectStyle","textBorderWidth","textBorderColor","isImageBg","isPlainOrGradientBg","textBorderRadius","rectShape","imgStyle","borderDash","borderDashOffset","commonStyle","makeFont","hasSeparateFont","parseFontSize","VALID_TEXT_ALIGN","VALID_TEXT_VERTICAL_ALIGN","FONT_PARTS","fontProp","getECData","setCommonECData","seriesIndex","ecData","childECData","_highlightNextDigit","_highlightKeyMap","getSavedStates","getComponentStates","HOVER_STATE_NORMAL","HOVER_STATE_BLUR","HOVER_STATE_EMPHASIS","SPECIAL_STATES","DISPLAY_STATES","Z2_EMPHASIS_LIFT","Z2_SELECT_LIFT","HIGHLIGHT_ACTION_TYPE","DOWNPLAY_ACTION_TYPE","SELECT_ACTION_TYPE","UNSELECT_ACTION_TYPE","TOGGLE_SELECT_ACTION_TYPE","hasFillOrStroke","fillOrStroke","liftedColorCache","liftColor","liftedColor","doChangeHoverState","hoverStateEnum","onHoverStateChange","hoverState","singleEnterEmphasis","singleLeaveEmphasis","singleEnterBlur","singleLeaveBlur","singleEnterSelect","singleLeaveSelect","updateElementState","updater","commonParam","traverseUpdateState","setStatesFlag","elementStateProxy","targetStates","hasSelect","fromFill","selectFill","normalFill","fromStroke","selectStroke","normalStroke","emphasisStyle","z2EmphasisLift","createEmphasisDefaultState","hasBlur","currentOpacity","fromState","toStateName","getFromStateStyle","blurStyle","createBlurDefaultState","z2SelectLift","createSelectDefaultState","setDefaultStateProxy","enterEmphasisWhenMouseOver","shouldSilent","__highByOuter","leaveEmphasisWhenMouseOut","enterEmphasis","highlightDigit","leaveEmphasis","enterBlur","leaveBlur","enterSelect","leaveSelect","__highDownSilentOnTouch","allLeaveBlur","leaveBlurredSeries","allComponentViews","eachComponent","componentStates","isSeries","getViewOfSeriesModel","getViewOfComponentModel","isBlured","toggleBlurSeries","blurSeries","targetSeriesIndex","blurScope","leaveBlurOfIndices","dataIndices","getItemGraphicEl","targetSeriesModel","getSeriesByIndex","targetCoordSys","blurredSeries","eachSeries","seriesModel","sameSeries","coordSys","dataTypes","blurComponent","componentMainType","focusBlurEnabled","findComponentHighDownDispatchers","focusSelf","dispatchers","findHighDownDispatchers","updateSeriesElementSelection","getAllData","eachItemGraphicEl","getAllSelectedIndices","getSelectedDataIndices","enableHoverEmphasis","setAsHighDownDispatcher","enableHoverFocus","toggleHoverEmphasis","disableHoverEmphasis","OTHER_STATES","defaultStyleGetterMap","itemStyle","areaStyle","setStatesStylesFromModel","itemModel","styleType","asDispatcher","extendedEl","highDownSilentOnTouch","__highDownDispatcher","isHighDownDispatcher","isSelectChangePayload","payloadType","isHighDownPayload","transitionStore","getAnimationConfig","animationType","animatableModel","extraOpts","extraDelayParams","animationPayload","updatePayload","getUpdatePayload","isUpdate","isAnimationEnabled","animateOrSetProps","removeOpt","isFrom","isRemove","animationConfig","getAnimationDelayParams","animateConfig","updateProps","initProps","isElementRemoved","fadeOutDisplayable","removeElementWithFadeOut","doRemove","saveOldStyle","oldStyle","EMPTY_OBJ","setLabelText","labelTexts","oldStates","getLabelText","stateModels","interpolatedValue","baseText","labelFetcher","labelDataIndex","labelDimIndex","normalModel","getFormattedLabel","statesText","stateModel","setLabelStyle","labelStatesModels","stateSpecified","isSetOnText","needsCreateText","labelStatesTexts","showNormal","normalStyle","createTextStyle","createTextConfig","stateShow","enableTextSetter","labelInner","getLabelStatesModels","statesModels","textStyleModel","specifiedTextStyle","isNotNormal","isAttached","textStyle","richResult","globalTextStyle","richItemNames","richItemNameMap","richKeys","getRichItemNames","richTextStyle","setTokenTextStyle","setTextStyleCommon","labelPosition","labelRotate","labelDistance","labelOffset","defaultOutsidePosition","inheritColor","TEXT_PROPS_WITH_GLOBAL","TEXT_PROPS_SELF","TEXT_PROPS_BOX","isBlock","inRich","strokeColor","textBorderType","textBorderDashOffset","defaultOpacity","disableBox","borderType","gTextStyleModel","setLabelValueAnimation","getDefaultText","prevValue","normalLabelModel","valueAnimation","defaultInterpolatedText","animateLabelValue","labelInnerStore","PATH_COLOR","textStyleParams","tmpText","TextStyleMixin","isEmphasis","getTextRect","classAttr","LINE_STYLE_KEY_MAP","getLineStyle","LineStyleMixin","ITEM_STYLE_KEY_MAP","getItemStyle","ItemStyleMixin","mergeOption","_doGet","hasPath","pathFinal","resolveParentPath","restoreData","pathArr","getUID","inheritDefaultOption","superOption","subOption","LOCALE_ZH","LOCALE_EN","DEFAULT_LOCALE","localeStorage","localeModels","SYSTEM_LANG","lang","browserLanguage","registerLocale","localeObj","getLocaleModel","monthAbbr","dayOfWeekAbbr","toolbox","brush","lineX","lineY","keep","dataZoom","back","magicType","tiled","saveAsImage","typeNames","effectScatter","radar","boxplot","candlestick","heatmap","graph","sankey","funnel","gauge","pictorialBar","themeRiver","sunburst","aria","general","withTitle","withoutTitle","single","withName","withoutName","multiple","partialData","ONE_DAY","defaultLeveledFormatter","none","fullDayFormatter","fullLeveledFormatter","primaryTimeUnits","timeUnits","getPrimaryTimeUnit","timeUnit","isUTC","fullYearGetterName","monthGetterName","dateGetterName","hoursGetterName","minutesGetterName","secondsGetterName","millisecondsGetterName","timeModel","getUnitFromValue","isSecond","isMinute","isHour","isDay","isMonth","getUnitValue","fullYearSetterName","monthSetterName","dateSetterName","hoursSetterName","minutesSetterName","secondsSetterName","millisecondsSetterName","addCommas","toCamelCase","upperCaseFirst","group1","makeValueReadable","useUTC","stringToUserReadable","isNumberUserReadable","isTypeTime","isValueDate","numericResult","TPL_VAR_ALIAS","wrapVar","varName","formatTpl","tpl","paramsList","seriesLen","$vars","getTooltipMarker","inOpt","extraCssText","renderMode","getUTC","capitalFirst","convertToColorString","windowOpen","opener","LOCATION_PARAMS","HV_NAMES","boxLayout","orient","currentLineMaxSize","nextY","nextChildRect","moveX","newline","moveY","getLayoutRect","positionInfo","verticalMargin","horizontalMargin","positionElement","hv","boundingMode","fetchLayoutMode","ins","layoutMode","mergeLayoutParam","targetOption","ignoreSize","hResult","vResult","hvIdx","newValueCount","mergedValueCount","hasProp","getLayoutParams","copyLayoutParams","ComponentModel","mergeDefaultAndTheme","inputPositionParams","optionUpdated","newCptOption","isInit","isExtendedClass","optList","getReferringComponents","idKey","getBoxLayoutParams","boxLayoutModel","getZLevelKey","setZLevel","protoInitialize","subTypeDefaulters","registerSubTypeDefaulter","defaulter","determineSubType","componentTypeMain","entity","dependencyGetter","createDependencyGraphItem","predecessor","successor","topologicalTravel","targetNameList","fullNameList","noEntryList","deps","availableDeps","originalDeps","dep","getAvailableDependencies","entryCount","dependentName","thatItem","makeDepndencyGraph","targetNameSet","currComponentType","currVertex","isInTargetNameSet","removeEdgeAndAdd","removeEdge","succComponentType","decalColor","colorBy","gradientColor","decals","dashArrayX","dashArrayY","symbolSize","blendMode","stateAnimation","animationDuration","animationDurationUpdate","animationEasing","animationEasingUpdate","animationThreshold","progressiveThreshold","progressive","hoverLayerThreshold","VISUAL_DIMENSIONS","SOURCE_FORMAT_ARRAY_ROWS","SOURCE_FORMAT_KEYED_COLUMNS","SOURCE_FORMAT_TYPED_ARRAY","SOURCE_FORMAT_UNKNOWN","SERIES_LAYOUT_BY_COLUMN","SERIES_LAYOUT_BY_ROW","BE_ORDINAL","Must","Might","Not","innerGlobalModel","makeSeriesEncodeForAxisCoordSys","coordDimensions","datasetModel","querySeriesUpstreamDatasetModel","baseCategoryDimIndex","categoryWayValueDimStart","encodeItemName","encodeSeriesName","datasetMap","seriesLayoutBy","coordDimInfoLoose","coordDimIdx","coordDimInfo","getDataDimCountOnCoordDim","datasetRecord","categoryWayDim","valueWayDim","pushDim","dimIdxArr","idxFrom","idxCount","dimsDef","coordDimName","itemName","seriesName","makeSeriesEncodeForNameBased","dimCount","potentialNameDimIndex","dimensionsDefine","idxResult","idxRes0","idxRes1","guessRecords","guessResult","doGuessOrdinal","isPureNumber","nameDimIndex","guessOrdinal","dimIndex","dimName","dimType","dimDefItem","dataArrayRows","sample","detectValue","dataObjectRows","dataKeyedColumns","dataOriginal","beStr","reCreateSeriesIndices","assertSeriesInitialized","initBase","internalOptionCreatorMap","innerColor","innerDecal","PaletteMixin","getColorFromPalette","requestNum","defaultPalette","layeredPalette","getFromPalette","clearColorPalette","paletteIdx","paletteNameMap","clearPalette","getDecalFromPalette","defaultDecals","scopeFields","requestColorNum","paletteNum","getNearestPalette","pickedPaletteItem","OPTION_INNER_KEY","GlobalModel","optionManager","_theme","_locale","_optionManager","optionPreprocessorFuncs","innerOpt","normalizeSetOptionInput","_resetOption","resetOption","optionChanged","baseOption","mountOption","_mergeOption","timelineOption","getTimelineOption","mediaOptions","getMediaOption","mediaOption","componentsMap","_componentsMap","componentsCount","_componentsCount","newCmptTypes","newCmptTypeMap","replaceMergeMainTypeMap","componentOption","mainTypeInReplaceMerge","newCmptOptionList","internalOptionCreator","internalOptions","concatInternalOptions","oldCmptList","mappingResult","componentModelCtor","newCmptOption","existComponent","tooltipExists","optionsByMainType","cmptsByMainType","cmptsCountByMainType","isSeriesType","ComponentModelClass","extraOpt","__requireNewView","_seriesIndices","optInMainType","realLen","metNonInner","setUpdatePayload","_payload","cmpt","cmpts","queryByIdOrName","filterBySubType","findComponents","indexAttr","idAttr","nameAttr","queryCond","ctxForAll_1","cbForAll_1","getSeriesByName","oneSeries","getSeriesByType","getSeriesCount","rawSeriesIndex","eachRawSeries","eachSeriesByType","eachRawSeriesByType","isSeriesFiltered","_seriesIndicesMap","getCurrentSeriesIndices","filterSeries","newSeriesIndices","seriesRawIdx","componentTypes","isNotTargetSeries","internalField","seriesIndices","airaOption","notMergeColorLayer","colorLayer","themeItem","mergeTheme","globalDefault","keyMap_1","idOrNameItem","idName_1","replaceMerge","availableMethods","ecInstance","coordinateSystemCreators","CoordinateSystemManager","_coordinateSystems","coordinateSystems","creator","getCoordinateSystems","QUERY_REG","OptionManager","_timelineOptions","_mediaList","_currentMediaIndices","_api","rawOption","dataset","optionBackup","_optionBackup","newParsedOption","mediaDefault","mediaList","declaredBaseOption","timelineOnRoot","timelineOptionsOnRoot","mediaOnRoot","media","hasMedia","hasTimeline","doPreprocess","preProcess","singleMedia","timelineOptions","parseRawOption","_newBaseOption","isRecreate","_mediaDefault","timelineModel","getCurrentIndex","indices1","ecWidth","ecHeight","applyMediaQuery","realMap","aspectratio","applicable","realAttr","real","expect","POSSIBLE_STYLES","compatEC2ItemStyle","itemStyleOpt","normalItemStyleOpt","emphasisItemStyleOpt","convertNormalEmphasis","optType","useExtend","normalOpt","emphasisOpt","removeEC3NormalStatus","compatTextStyle","labelOptSingle","textPropName","compatEC3CommonStyles","toArr","toObj","compatLayoutProperties","LAYOUT_PROPERTIES","COMPATITABLE_COMPONENTS","BAR_ITEM_STYLE_MAP","compatBarItemStyle","oldName","newName","compatPieLabel","alignTo","compatSunburstState","downplay","traverseTree","globalBackwardCompat","isTheme","seriesOpt","markPoint","markLine","markArea","edgeData","edges","mpData","mlData","breadcrumb","processSeries","axisName","axisOpt","axisPointer","parallelOpt","parallelAxisDefault","calendar","calendarOpt","radarOpt","nameGap","axisNameGap","geo","geoOpt","regions","regionObj","timelineOpt","toolboxOpt","featureOpt","clipOverflow","clockWise","hoverOffset","scaleSize","pointerColor","backgroundStyle","highlightPolicy","focusNodeAdjacency","compatGraphFocus","mapType","mapLocation","hoverAnimation","visualMap","calculateStack","stackInfoList","targetStackInfo","idxInStack","resultVal","resultNaN","dims","stackResultDimension","stackedOverDimension","isStackedByIndex","stackStrategy","byValue","stackedDataRawIndex","stackedDimension","getRawIndex","stackedByDimension","stackedOver","stackInfo","rawIndexOf","getByRawIndex","providerMethods","mountMethods","SourceImpl","dimensionsDetectedCount","metaRawOption","isSourceInstance","createSource","sourceData","thisMetaRawOption","detectSourceFormat","determined","sourceHeader","normalizeDimensionsOption","arrayRowsTravelFirst","objectRowsCollectDimensions","colArr","determineSourceDimensions","createSourceFromSeriesDataOption","rawItem","exist","maxLoop","shouldRetrieveDataByName","DefaultDataProvider","sourceParam","dimSize","_dimSize","appendData","pure","getMethodMapKey","getItemForTypedArray","countForTypedArray","fillStorage","fillStorageForTypedArray","rawItemGetter","getRawSourceItemGetter","rawCounter","getRawSourceDataCounter","dimExtent","appendDataSimply","oldCol","getItemSimply","rawData","rawSourceItemGetterMap","countSimply","rawSourceDataCounterMap","getRawValueSimply","rawSourceValueGetterMap","getRawSourceValueGetter","retrieveRawValue","getRawDataItem","getStore","getDimensionIndex","getDimensionProperty","DIMENSION_LABEL_REG","DataFormatMixin","getDataParams","getRawValue","rawDataIndex","itemOpt","getItemVisual","userOutput","componentSubType","dimensionNames","fullDimensions","extendParams","getItemModel","dimensionIndex","dimStr","dimLoose","multipleSeries","normalizeTooltipFormatResult","markupText","markupFragment","frag","Task","_reset","_plan","plan","_onDirty","onDirty","perform","performArgs","planResult","upTask","_upstream","outputData","__pipeline","currentTask","forceFirstProgress","lastModBy","normalizeModBy","_modBy","lastModDataCount","_modDataCount","modBy","modDataCount","_doReset","_dueEnd","_outputDueEnd","_progress","_dueIndex","progress","_doProgress","outputDueEnd","_settedOutputEnd","unfinished","_callingProgress","downstream","_downstream","downTask","_disposed","getUpstream","getDownstream","setOutputEnd","winCount","sStep","sCount","modNext","sequentialNext","throwError","parseDataValue","valueParserMap","getRawValueParser","ORDER_COMPARISON_OP_MAP","lval","rval","FilterOrderComparator","_opFn","_rvalFloat","SortOrderComparator","incomparable","isDesc","_resultLT","_incomparable","lvalFloat","rvalFloat","lvalNotNumeric","rvalNotNumeric","lvalIsStr","rvalIsStr","FilterEqualityComparator","isEq","_rval","_isEQ","_rvalTypeof","eqResult","lvalTypeof","createFilterComparator","ExternalSource","getRawData","cloneRawData","cloneAllDimensionInfo","retrieveValue","retrieveValueFromItem","convertValue","rawVal","dimInfo","upstream","isSupportedSourceFormat","dimsByName","externalTransformMap","applySingleDataTransform","transOption","upSourceList","infoForPrint","pipeIndex","transType","externalTransform","extUpSourceList","upSource","internalSource","extSource","sourceHeaderCount","dimDef","dimDefExt","__isBuiltIn","rawValueGetter","createExternalSource","upstreamList","resultIndex","resultMetaRawOption","firstUpSource","defaultDimValueGetters","UNDEFINED","CtorUint32Array","CtorUint16Array","CtorInt32Array","CtorFloat64Array","dataCtors","getIndicesCtor","rawCount","prepareStore","dimIdx","DataCtor","oldStore","oldLen","newStore","DataStore","_chunks","_rawExtent","_extent","_rawCount","_calcDimNameToIdx","inputDimensions","dimValueGetter","_provider","_indices","_getRawIdxIdentity","defaultGetter","defaultDimValueGetter","_dimValueGetter","_dimensions","_initDataFromProvider","getProvider","ensureCalculationDimension","calcDimNameToIdx","calcDimIdx","collectOrdinalMeta","ordinalMeta","rawExtents","ordinalOffset","dimRawExtent","parseAndCollect","getOrdinalMeta","appendValues","minFillLen","dimLen","rawExtent","emptyDataItem","sourceIdx","arrayRows","dimNames","dimStorage","dimStore","dimArr","rawIdx","getSum","getMedian","dimDataArray","sortedDimDataArray","rawIndex","indicesOfNearest","dimData","nearestIndices","minDiff","nearestIndicesLen","getIndices","newIndices","thisCount","dim0","_updateGetRawIdx","originalCount","storeArr","quickFinished","dimStorage2","dimk","_updateDims","targetChunks","tmpRetValue","dataCount","retValue","rawExtentOnDim","lttbDownSample","valueDimension","maxArea","nextRawIndex","sampledIndex","frameSize","currentRawIndex","nextFrameStart","nextFrameEnd","avgX","avgY","frameEnd","pointAX","pointAY","firstNaNIndex","countNaN","_getRawIdx","downSample","sampleValue","sampleIndex","targetStorage","frameValues","sampleFrameIdx","getDataExtent","initialExtent","currEnd","clonedDims","ignoreIndices","originalChunk","clonedDimsMap","_copyCommonProps","_cloneIndices","getDimValueSimply","objectRows","keyedColumns","SourceManager","sourceHost","_sourceList","_storeList","_upstreamSignList","_versionSignBase","_sourceHost","_setLocalSource","sourceList","upstreamSignList","_getVersionSign","prepareSource","_isDirty","_createSource","resultSourceList","upSourceMgrList","_getUpstreamSourceManagers","hasUpstream","upSourceMgr","newMetaRawOption","_getSourceMetaRawOption","upMetaRawOption","_applyTransform","upMgrList","transformOption","fromTransformResult","doThrow","upMgr","rawTransOption","pipedTransOption","pipeLen","applyDataTransform","upSrcMgr","getSharedDataStore","seriesDimRequest","makeStoreSchema","_innerGetDataStore","storeDims","seriesSource","sourceReadKey","storeList","cachedStoreMap","cachedStore","getSourceManager","queryDatasetUpstreamDatasetModels","disableTransformOptionMerge","errMsg","TOOLTIP_LINE_HEIGHT_CSS","getTooltipTextStyle","nameFontColor","nameFontSize","nameFontWeight","valueFontColor","valueFontSize","valueFontWeight","nameStyle","HTML_GAPS","RICH_TEXT_GAPS","createTooltipMarkup","isSectionFragment","getBuilder","buildSection","buildNameValue","getBlockGapLevel","gapLevel_1","subBlockLen","hasInnerGap_1","noHeader","subBlock","subGapLevel","topMarginForOuterGap","toolTipTextStyle","gapLevel","richText","subMarkupTextList","subBlocks","orderMode","sortBlocks","valueAsc","valueDesc","comparator_1","sortParam","subMarkupText","wrapBlockHTML","displayableHeader","wrapInlineNameRichText","noName","noValue","noMarker","markerType","valueTypeOption","markerStr","markupStyleCreator","makeTooltipMarker","markerColor","readableName","readableValueList","valueAlignRight","valueCloseToMarker","alignRight","wrapRichTextStyle","wrapInlineValueRichText","leftHasMarker","wrapInlineNameHTML","wrapInlineValueHTML","buildTooltipMarkup","encodedContent","topGap","retrieveVisualColorForTooltipMarker","visualDrawType","getPaddingFromTooltipModel","TooltipMarkupStyleCreator","richTextStyles","_nextStyleNameId","_generateStyleName","finalStl","stl","defaultSeriesFormatTooltip","inlineValue","inlineValueType","tooltipDims","mapDimensionsAll","tooltipDimLen","isValueArr","formatArrResult","isValueMultipleLine","dimItem","inlineValues","inlineValueTypes","setEachItem","otherDims","formatTooltipArrayValue","seriesNameSpecified","inlineName","getSelectionKey","SERIES_UNIVERSAL_TRANSITION_PROP","SeriesModel","_selectedDataIndicesMap","dataTask","dataTaskCount","dataTaskReset","sourceManager","getInitialData","wrapData","dataBeforeProcessed","autoSeriesName","_initSelectedMapFromData","themeSubType","fillDataTextStyle","newSeriesOption","getCurrentTask","getLinkedData","mainData","getLinkedDataAll","getEncode","getColorBy","isColorBySeries","getBaseAxis","animationEnabled","coordDimToDataDim","coordDim","getProgressive","getProgressiveThreshold","innerDataIndices","_innerSelect","selectedMap","nameOrId","toggleSelect","tmpArr","selectedDataIndicesMap","nameOrIds","isUniversalTransitionEnabled","universalTransitionOpt","universalTransition","lastDataIndex","hasItemOption","ignoreStyleOnData","hasSymbolVisual","defaultSymbol","visualStyleAccessPath","dataDims","nameArr","dataDim","getSeriesAutoName","cloneShallow","dataTaskProgress","CHANGABLE_METHODS","DOWNSAMPLE_METHODS","wrapMethod","onDataChange","scheduler","pipeline","getPipeline","agentStubMap","ComponentView","updateView","updateLayout","updateVisual","seriesModels","isBlur","eachRendered","createRenderPlanner","pipelineContext","originalLarge","originalProgressive","progressiveRender","mathAtan2","transformPath","nPoint","vMag","vRatio","vAngle","processArc","psiDeg","xp","yp","cxp","cyp","commandReg","numberReg","SVGPath","isPathProxy","createPathOptions","prevCmd","cpx","cpy","subpathX","subpathY","cmdList","cmdText","cmdStr","pLen","ctlPtx","ctlPty","createPathProxyFromString","innerOpts","createFromString","clonePath","sourcePath","bakeTransform","toLocal","CircleShape","EllipseShape","Ellipse","mathACos","mathATan2","computeCornerTangents","x01","y01","x11","y11","x10","y10","cx0","dx0","dy0","dx1","dy1","SectorShape","cornerRadius","hasRadius","icrStart","icrEnd","ocrStart","ocrEnd","ocrs","ocre","icrs","icre","ocrMax","icrMax","limitedOcrMax","limitedIcrMax","xre","yre","xirs","yirs","xrs","yrs","xire","yire","hasArc","normalizeCornerRadius","halfRd","it_1","dx10","dy10","dx32","dy32","crStart","crEnd","ct0","ct1","RingShape","Ring","controlPoints","isLoop","constraint","cps","cp0","cp1","smoothBezier","smoothConstraint","cp2","PolygonShape","PolylineShape","LineShape","pointAt","BezierCurveShape","cpx1","cpy1","someVectorAt","isTangent","cpx2","cpy2","BezierCurve","tangentAt","ArcShape","unitX","unitY","CompoundPath","_updatePathDirty","globalCoord","RadialGradient","extent2","OrientedBoundingRect","_corners","_origin","fromBoundingRect","overlapped","noMtv","_intersectCheckOneSide","_getProjMinMaxOnAxis","dist0","dist1","proj_1","IncrementalDisplayable","notClear","_displayables","_temporaryDisplayables","clearDisplaybles","clearTemporalDisplayables","addDisplayable","notPersistent","addDisplayables","displayables","getDisplayables","getTemporalDisplayables","eachPendingDisplayable","_customShapeMap","extendShape","extendPathFromString","defaultOpts","extendPath","registerShape","ShapeClass","getShapeClass","makePath","centerGraphic","resizePath","makeImage","zrImg","boundingRect","pathEls","pathList","pathEl","pathBundle","mat","hBase","vBase","isNotGroup","groupTransition","g1","g2","elMap","elMap1","anid","oldEl","getAnimatableProps","isPath","clipPointsByRect","clipRectByRect","targetRect","iconStr","linePolygonIntersect","a1x","a1y","a2x","a2y","lineLineIntersect","b1x","b1y","b2x","b2y","ny","nmCrossProduct","crossProduct2d","nearZero","b1a1x","b1a1y","setTooltipConfig","itemTooltipOption","itemTooltipOptionObj","formatterParamsExtra","tooltipConfig","traverseElement","traverseElements","renderPlanner","ChartView","renderTask","renderTaskPlan","renderTaskReset","toggleHighlight","markUpdateMethod","updateMethod","elSetState","highlightKey","getHighlightDigit","progressMethodMap","incrementalPrepareRender","incrementalRender","ORIGIN_METHOD","RATE","THROTTLE_TYPE","currCall","debounceNextCall","lastCall","lastExec","cbArgs","thisDelay","thisDebounce","fnAttr","throttleType","originFn","lastThrottleType","defaultStyleMappers","defaultColorKey","getStyleMapper","stylePath","visualStyleMapper","getDefaultColorKey","seriesStyleTask","createOnAllSeries","performRawSeries","styleModel","globalStyle","getStyle","decalOption","setVisual","colorCallback","hasAutoColor","colorPalette","dataEach","dataParams","setItemVisual","sharedModel","dataStyleTask","getVisual","ensureUniqueItemVisual","dataColorPaletteTask","overallReset","paletteScopeGroupByType","colorScope","dataAll","idxMap","Scheduler","dataProcessorHandlers","visualHandlers","_stageTaskMap","_dataProcessorHandlers","_visualHandlers","_allHandlers","taskRecord","overallTask","getPerformArgs","_pipelineMap","pCtx","progressiveEnabled","__idxInPipeline","pipelineId","updateStreamModes","dataLen","restorePipelines","pipelineMap","preventIncremental","_pipe","prepareStageTasks","stageTaskMap","record","_createSeriesStageTask","_createOverallStageTask","prepareView","__block","performDataProcessorTasks","_performStageTasks","performVisualTasks","stageHandlers","needSetDirty","setDirty","dirtyMap","stageHandler","visualType","stageHandlerRecord","seriesTaskMap","overallNeedDirty_1","performArgs_1","performSeriesTasks","oldSeriesTaskMap","newSeriesTaskMap","getTargetSeries","seriesTaskPlan","seriesTaskReset","seriesTaskCount","useClearVisual","isVisual","isLayout","overallTaskReset","oldAgentStubMap","newAgentStubMap","overallProgress","shouldOverallTaskDirty","createStub","stubReset","stubOnDirty","agent","wrapStageHandler","detectSeriseType","stubProgress","clearAllVisual","resetDefines","makeSeriesTaskProgress","singleSeriesTaskProgress","resetDefineIdx","resetDefine","legacyFunc","ecModelMock","apiMock","mockMethods","Clz","colorAll","contrastColor","axisCommon","splitLine","splitArea","minorSplitLine","crossStyle","subtextStyle","iconStyle","brushStyle","handleStyle","moveHandleStyle","fillerColor","dataBackground","selectedDataBackground","controlStyle","dayLabel","monthLabel","yearLabel","timeAxis","logAxis","valueAxis","color0","borderColor0","ECEventProcessor","cptQuery","dataQuery","otherQuery","condCptType","suffixes_1","dataKeys_1","reserved","propSuffix","suffixPos","eventInfo","packedEvent","filterForExposedEvent","propOnHost","SYMBOL_PROPS_WITH_CB","SYMBOL_PROPS","seriesSymbolTask","legendIcon","symbolOptions","symbolOptionsCb","hasCallback","symbolPropName","symbolKeepAspect","symbolPropsCb","dataSymbolTask","getItemVisualFromData","getVisualFromData","setItemVisualFromData","createLegacyDataSelectAction","ecRegisterAction","getSeriesIndices","eventsMap","dispatchAction","handleSeriesLegacySelectEvents","eventPostfix","ecIns","legacyEventName","fromActionPayload","findEventDispatcher","returnFirstMatch","wmUniqueIndex","supportDefineProperty","_id","_guard","tanX","tanY","cpLen","cpLen2","Arrow","symbolShapeMakers","roundRect","diamond","pin","arrow","triangle","symbolBuildProxies","SymbolClz","symbolType","inBundle","proxySymbol","symbolPathSetColor","symbolStyle","__isEmptyBrush","keepAspect","symbolPath","setColor","normalizeSymbolSize","normalizeSymbolOffset","symbolOffset","isSafeNum","getCanvasGradient","canvasGradient","createRadialGradient","parseInt10","whIdx","wh","cwh","plt","prb","lineType","lineScale_1","pathProxyForDraw","styleHasStroke","isValidStrokeFillStyle","strokeOrFill","styleHasFill","doFillPath","originalGlobalAlpha","doStrokePath","createCanvasPattern","canvasPattern","createPattern","DOMMatrix","translateSelf","rotateSelf","scaleSelf","SHADOW_NUMBER_PROPS","STROKE_PROPS","bindCommonProps","prevStyle","forceSetAll","flushPathDrawn","globalCompositeOperation","bindPathAndTextCommonStyle","newLineWidth","setContextTransform","DRAW_TYPE_PATH","DRAW_TYPE_IMAGE","DRAW_TYPE_TEXT","DRAW_TYPE_INCREMENTAL","batchFill","batchStroke","brushSingle","isLast","__isRendered","prevElClipPaths","forceSetTransform","forceSetStyle","prevClipPaths","isClipPathChanged","allClipped","updateClipStatus","canBatchPath","canPathBatch","lastDrawType","strokePart","firstDraw","dirtyFlag","hasFillGradient","hasStrokeGradient","hasFillPattern","hasStrokePattern","fillGradient","strokeGradient","fillPattern","strokePattern","__canvasFillGradient","__canvasStrokeGradient","__canvasFillPattern","__canvasStrokePattern","needsRebuild","brushPath","brushText","bindImageStyle","brushImage","temporalDisplayables","innerScope","i_1","len_1","brushIncremental","decalMap","decalCache","decalKeys","createOrUpdatePatternFromDecal","decalObject","getZr","oldPattern","decalOpt","maxTileWidth","maxTileHeight","isValidKey","normalizeDashArrayX","dashValue_1","dashValue","normalizeDashArrayY","symbolArray","normalizeSymbolArray","lineBlockLengthsX","getLineBlockLengthY","lineBlockLengthY","svgRoot","attrs","xlen","symbolRepeats","getPatternSize","yId","yIdTotal","xId0","symbolYId","xId1","xId1Total","symbolXId","brushSymbol","symbolVNode","renderOneToVNode","brushDecal","svgWidth","svgHeight","setPatternnSource","isAllString","isAllNumber","blockLength","implsStore","getImpl","zrender","PRIORITY_PROCESSOR_DEFAULT","PRIORITY_VISUAL_LAYOUT","PRIORITY_VISUAL_GLOBAL","PRIORITY_VISUAL_CHART","PRIORITY_VISUAL_CHART_DATA_CUSTOM","PRIORITY","PROCESSOR","SERIES_FILTER","STATISTIC","VISUAL","LAYOUT","PROGRESSIVE_LAYOUT","GLOBAL","CHART","POST_CHART_LAYOUT","COMPONENT","BRUSH","CHART_ITEM","ARIA","DECAL","IN_MAIN_PROCESS_KEY","PENDING_UPDATE","STATUS_NEEDS_UPDATE_KEY","ACTION_REG","CONNECT_STATUS_KEY","createRegisterEventWithLowercaseECharts","isDisposed","toLowercaseNameAndCallEventful","disposedWarning","createRegisterEventWithLowercaseMessageCenter","updateDirectly","updateMethods","doConvertPixel","doDispatchAction","flushPendingActions","triggerUpdatedEvent","bindRenderedEvent","bindMouseEvent","renderComponents","renderSeries","createExtensionAPI","enableConnect","markStatusToUpdate","applyChangedStates","MessageCenter","messageCenterProto","ECharts","_chartsViews","_chartsMap","_componentsViews","_pendingActions","themeStorage","_dom","_zr","_ssr","_throttledZrFlush","createLocaleObject","_coordSysMgr","CoordinateSystem","prioritySortFunc","__prio","visualFuncs","dataProcessorFuncs","_scheduler","_messageCenter","_initEvents","_onframe","remainTime","getDom","isSSR","transitionOpt","seriesTransition","setTheme","getRenderedCanvas","renderToCanvas","renderToSVGString","renderToString","useViewBox","getSvgDataURL","excludeComponents","excludesComponentViews","__viewId","getConnectedDataURL","isSvg","MAX_NUMBER","connectedGroups","right_1","bottom_1","canvasList_1","dpr_1","getSvgDom","zr_1","content_1","getSvgRoot","connectedBackgroundColor","convertToPixel","convertFromPixel","containPixel","containPoint","parsedFinder","messageCenter","MOUSE_EVENT_NAMES","eveName","eventActionMap","actionType","isFromClick","fromAction","DOM_ATTRIBUTE_KEY","_loadingFX","needPrepare","loadingEffects","makeActionFromEvent","eventObj","updateLabelLayout","applyElementStates","updateZ","preventAutoZ","doUpdateZ","maxZ2","labelLine","textGuideLineConfig","showAbove","prevStates","updateStates","stateAnimationModel","enableAnimation","savePathStates","viewList","__alive","doPrepare","requireNewView","classType","__id","__model","__ecComponentInfo","excludeSeriesIdMap","excludeSeriesId","modelId","notBlur","focus_1","blurSeriesFromHighlightPayload","dispatcher","toggleSelectionFromPayload","callView","prepareAndUpdate","coordSysMgr","componentDirtyList","componentView","seriesDirtyMap","chartView","coordSysList","chartsMap","escapeConnect","actionWrap","actionInfo","cptTypeTmp","cptType","payloads","batched","eventObjBatch","isSelectChange","isHighDown","batchItem","pendingActions","componentHighDownName","handleGlobalMouseOverForHighDown","handleGlobalMouseOutForHighDown","componentZLevels","seriesZLevels","hasSeperateZLevel","zlevelKey","lastSeriesZLevel_1","lastSeriesKey_1","zLevels","allocateZlevels","dirtyList","updateBlend","elCount","preventUsingHoverLayer","updateHoverLayerStatus","getComponentByElement","modelInfo","updateConnectedChartsStatus","charts","action_1","otherCharts_1","otherChart","echartsProto","wrapped","args2","idBase","groupIdBase","isClient","existInstance","disConnect","getInstanceById","registerTheme","registerPreprocessor","preprocessorFunc","registerProcessor","processor","normalizeRegister","registerPostInit","postInitFunc","registerUpdateLifecycle","registerPostUpdate","postUpdateFunc","registerAction","registerCoordinateSystem","coordSysCreator","getCoordinateSystemDimensions","getDimensionsInfo","registerLayout","layoutTask","registerVisual","visualTask","registeredTasks","targetList","defaultPriority","registerLoading","loadingFx","setCanvasCreator","registerMap","geoJson","specialAreas","registerTransform","typeParsed","isBuiltIn","hasItemVisual","stackInfoMap","getCalculationInfo","setCalculationInfo","maskColor","showSpinner","spinnerRadius","labelRect","dataTool","extensionRegisters","registerImpl","impl","registerComponentModel","registerComponentView","ComponentViewClass","registerSeriesModel","SeriesModelClass","registerChartView","ChartViewClass","painterType","PainterCtor","singleExt","install","dataIndexMapValueLength","valNumOrArrLengthMoreThan2","defaultKeyGetter","DataDiffer","oldArr","newArr","oldKeyGetter","newKeyGetter","diffMode","_old","_new","_oldKeyGetter","_newKeyGetter","_diffModeMultiple","updateManyToOne","_updateManyToOne","updateOneToMany","_updateOneToMany","updateManyToMany","_updateManyToMany","_remove","_executeOneToOne","newDataIndexMap","oldDataKeyArr","newDataKeyArr","_initIndexMap","oldKey","newIdxMapVal","newIdxMapValLen","newIdx","_performRestAdd","_executeMultiple","oldDataIndexMap","oldIdxMapVal","oldIdxMapValLen","newKey","idxMapValLen","keyArr","keyGetterName","cbModeMultiple","idxMapVal","DimensionUserOuput","dimRequest","_schema","_getFullDimensionNames","_cachedDimNames","makeOutputDimensionNames","getOrCreateEncodeArr","getDimensionTypeByAxis","dimTypeShort","float","ordinal","SeriesDataSchema","_dimOmitted","dimensionOmitted","_fullDimCount","fullDimensionCount","_updateDimOmitted","isDimensionOmitted","_dimNameMap","ensureSourceDimNameMap","getSourceDimensionIndex","getSourceDimension","willRetrieveDataByName","makeHashStrict","shouldOmitUnusedDimensions","dimHash","fullDimIdx","seriesDimIdx","seriesDimDef","storeDimIndex","sourceDimDef","isCalculationCoord","appendCalculationDimension","isSeriesDataSchema","createDimNameMap","dataDimNameMap","dimDefItemRaw","userDimName","innerSource","dimNameMap","prepareInvertedIndex","getIdNameFromStore","normalizeDimensions","transferProperties","cloneListForMapAndSample","makeIdFromName","TRANSFERABLE_PROPERTIES","CLONE_PROPERTIES","SeriesData","dimensionsInput","hostModel","_nameList","_idList","_visual","_layout","_itemVisuals","_itemLayouts","_graphicEls","_approximateExtent","_calculationInfo","TRANSFERABLE_METHODS","assignStoreDimIdx","dimensionInfos","invertedIndicesMap","needsHasOwn","emptyObj","dimInfoInput","dimensionInfo","dimensionName","coordDimIndex","createInvertedIndices","_nameDimIdx","_idDimIdx","_dimInfos","_initGetDimensionInfo","_invertedIndicesMap","dimIdxToName_1","_dimIdxToName","getDimension","_recognizeDimIndex","_getDimInfo","_getStoreDimIndex","getDimensionsOnCoord","_dimSummary","dataDimsOnCoord","mapDimension","dimensionsSummary","encodeFirstDimNotExtra","_store","nameList","_nameRepeatCount","_doInit","summary","notExtraCoordDimMap","defaultedLabel","defaultedTooltip","userOutputEncode","isExtraCoord","defaultTooltip","encodeArr","dataDimIndicesOnCoord","encodeLabel","encodeTooltip","summarizeDimensions","shouldMakeIdFromName","_shouldMakeIdFromName","_updateOrdinalMeta","idList","sharedDataItem","getApproximateExtent","setApproximateExtent","_getCategory","fCtx","dimIndices","filterSelf","innerRange","mapArray","ctxCompat","otherList","thisList","kvObj","itemVisual","itemVisuals","setLayout","getLayout","getItemLayout","setItemLayout","clearItemLayouts","setItemGraphicEl","injectFunction","__wrappedMethods","invertedIndices","nameDimIdx","idDimIdx","nameRepeatCount","nmCnt","createDimensions","prepareSeriesDataSchema","sysDims","coordDimNameMap","optDimCount","sysDimItem","sysDimItemDimsDef","getDimCount","dimensionsCount","omitUnusedDimensions","canOmitUnusedDimensions","isUsingSourceDimensionsDef","encodeDef","encodeDefine","encodeDefaulter","encodeDefMap","indicesMap","getResultItem","dataDimsRaw","validDataDims","resultDimIdxOrName","resultDimIdx","applyDim","availDimIdx","sysDimItemRaw","sysDimItemOtherDims","sysDimItemDimsDefItem","generateCoord","generateCoordCount","fromZero","ifNoNameFillWithCoordName","item0","item1","genCoordDimName","duplicationMap","dimOriginalName","removeDuplication","CoordSysInfo","coordSysName","coordSysDims","axisMap","categoryAxisMap","fetchers","cartesian2d","xAxisModel","yAxisModel","isCategory","firstCategoryDimIndex","singleAxis","singleAxisModel","polarModel","radiusAxisModel","findAxisModel","angleAxisModel","parallelModel","parallelAxisIndex","axisIndex","axisModel","axisDim","enableDataStack","dimensionDefineList","byIndex","stackedCoordDimension","isLegacyDimensionsInput","stackedByDimInfo","stackedDimInfo","mayStack","stackedDimCoordDim_1","stackedDimType","stackedDimCoordIndex_1","stackedOverDimensionDefine","stackResultDimensionDefine","isDimensionStacked","stackedDim","getStackedDimension","targetDim","sourceRaw","isOriginalSource","coordSysInfo","getCoordSysInfoBySeries","coordSysDimDefs","registeredCoordSys","getCoordSysDimDefs","useEncodeDefaulter","dimInfoList","hasNameEncode","categoryAxisModel","injectOrdinalMeta","stackCalculationInfo","sampleItem","firstDataNotNull","isNeedCompleteOrdinalData","Scale","_setting","getSetting","unionExtent","unionExtentFromData","getExtent","setExtent","thisExtent","isInExtentRange","_isBlank","setBlank","uidBase","OrdinalMeta","_needCollect","needCollect","_deduplication","deduplication","createByAxisModel","dedplication","getOrdinal","_getOrCreateMap","isIntervalOrLogScale","increaseInterval","getIntervalPrecision","niceTickExtent","OrdinalScale","_ordinalMeta","_getTickNumber","getRawOrdinalNumber","getMinorTicks","splitNumber","setSortInfo","infoOrdinalNumbers","ordinalNumbers","ordinalsByTick","_ordinalNumbersByTick","ticksByOrdinal","_ticksByOrdinalNumber","tickNum","allCategoryLen","unusedOrdinal","ticksByOrdinalNumber","tickNumber","ordinalNumbersByTick","cateogry","calcNiceTicks","calcNiceExtent","roundNumber","IntervalScale","_interval","_intervalPrecision","getInterval","_niceExtent","expandToNicedExtent","intervalPrecision","lastNiceTick","minorTicks","prevTick","minorTicksGroup","minorInterval","minorTick","minInterval","maxInterval","fixExtent","expandSize","fixMax","fixMin","setNiceExtent","supportFloat32Array","Float32ArrayCtor","createFloat32Array","STACK_PREFIX","getSeriesStackId","getAxisKey","prepareLayoutBarSeries","isOnCartesian","makeColumnLayout","barSeries","axisMinGaps","axisValues","baseAxis","cnt","valuesInAxis","getValueAxesMinGaps","seriesInfoList","axisExtent","getBandWidth","minGap","extentSpan","scaleSpan","barMaxWidth","barMinWidth","isInLargeMode","barGap","barCategoryGap","axisKey","stackId","doCalBarWidthAndOffset","columnsMap","seriesInfo","columnsOnAxis","autoWidthCount","categoryGap","stacks","categoryGapPercent","barGapPercent","autoWidth","finalWidth","widthSum","barWidthAndOffset","columnLayoutInfo","columnOffset","createProgressiveLayout","getOtherAxis","valueDimIdx","baseDimIdx","drawBackground","valueDim","stackResultDim","isValueAxisH","valueAxisStart","toGlobalCoord","dataToCoord","getValueAxisStart","isLarge","barMinHeight","stackedDimIdx","largePoints","largeBackgroundPoints","largeDataIndices","coordLayout","getRect","bgSize","idxOffset","baseValue","baseCoord","dataToPoint","valueAxisHorizontal","getDefaultFormatPrecisionOfInterval","_minLevelUnit","mergedFormatter","levelId","leveledFormat","innerTicks","bottomUnitName","approxInterval","unitNames","addTicksInSpan","minTimestamp","maxTimestamp","getMethodName","setMethodName","notAdd","addLevelTicks","unitName","lastLevelTicks","levelTicks","newAddedTicks","isFirstLevel","dateA","dateB","isSame","isSameYear","isSameMonth","isSameHour","isSameMinute","isSameSecond","isUnitValueSame","getFirstTimestampOfUnit","startTick","endTick","getterName","getMonthInterval","getDateInterval","getHourInterval","getMinutesAndSecondsInterval","getMillisecondsInterval","levelsTicks","currentLevelTicks","lastLevelTickCount","primaryTimeUnit","levelTicksRemoveDuplicated","tickValue","targetTickNum","levelsTicksInExtent","getIntervalTicks","_approxInterval","approxTickNum","scaleIntervalsLen","scaleIntervals","bisect","daysInMonth","isMinutes","outDate","scaleProto","intervalScaleProto","roundingErrorFix","mathFloor","mathCeil","mathLog","_originalScale","originalScale","originalExtent","powVal","_fixMin","fixRoundingError","_fixMax","niceExtent","originalVal","ScaleRawExtentInfo","_prepareParams","_dataMin","_dataMax","isOrdinal","_isOrdinal","_needCrossZero","getNeedCrossZero","modelMinRaw","_modelMinRaw","_modelMinNum","parseAxisModelMinMax","modelMaxRaw","_modelMaxRaw","_modelMaxNum","_axisDataLen","getCategories","boundaryGap","boundaryGapArr","_boundaryGapInner","dataMin","dataMax","axisDataLen","boundaryGapInner","minFixed","maxFixed","determinedMin","_determinedMin","determinedMax","_determinedMax","modifyDataMinMax","minMaxName","DATA_MIN_MAX_ATTR","setDeterminedMinMax","DETERMINED_MIN_MAX_ATTR","frozen","ensureScaleRawExtentInfo","rawExtentInfo","getScaleExtent","scaleType","rawExtentResult","barSeriesModels","isBaseAxisAndHasBarSeries_1","adjustedScale","axisLength","barsOnCurrentAxis","retrieveColumnLayout","minOverflow","maxOverflow","totalOverFlow","oldRange","overflowBuffer","adjustScaleForOverflow","niceScaleExtent","inModel","extentInfo","isIntervalOrTime","createScaleByModel","Ordinal","makeLabelFormatter","getLabelModel","categoryTickStart","getAxisRawValue","rotateTextRect","textRect","beforeWidth","beforeHeight","afterWidth","afterHeight","getOptionCategoryInterval","shouldShowAllLabels","getDataDimensionsOnAxis","dataDimMap","AxisModelCommonMixin","getCoordSysModel","createList","createScale","mixinAxisModelCommonMethods","TMP_TRANSFORM","transformPoints","updateBBoxFromPoints","Region","calcCenter","GeoJSONPolygonGeometry","exterior","interiors","GeoJSONLineStringGeometry","GeoJSONRegion","largestGeo","largestGeoSize","loopGeo","transformTo","newRegion","GeoSVGRegion","elOnlyForCalculate","_elOnlyForCalculate","isGeoSVGGraphicRoot","decodeRings","encodeOffsets","encodeScale","decodeRing","parseGeoJSON","nameProperty","UTF8Encoding","jsonCompressed","UTF8Scale","featureObj","makeCategoryLabelsActually","labelModel","numericLabelInterval","labelsCache","getListCache","optionLabelInterval","listCacheGet","makeLabelsByCustomizedCategoryInterval","autoInterval","calculateCategoryInterval","makeAutoCategoryInterval","makeLabelsByNumericCategoryInterval","listCacheSet","labelCategoryInterval","categoryInterval","onlyTick","ordinalScale","ordinalExtent","showAllLabel","includeMinLabel","includeMaxLabel","tickObj","formattedLabel","rawLabel","NORMALIZED_EXTENT","onBand","containData","fixExtentWithBands","coordToData","pointToData","getTicksCoords","tickModel","getTickModel","ticksCoords","tickCategoryInterval","ticksCache","optionTickInterval","labelsResult","makeCategoryTicks","createAxisTicks","tickVal","alignWithLabel","ticksLen","diffSize","crossLen","shift_1","ticksItem","fixOnBandTicksCoords","getMinorTicksCoords","getViewLabels","makeCategoryLabels","makeRealNumberLabels","axisRotate","getRotate","fetchAutoCategoryIntervalCalculationParams","unitSpan","unitW","unitH","maxW","maxH","dw","dh","lastAutoInterval","lastTickCount","axisExtent0","axisExtent1","nTick","extendComponentModel","extendComponentView","extendSeriesModel","extendChartView","DEFAULT_SEARCH_SPACE","getCandidateAnchor","outPt","outDir","projectPointToArc","projectPointToLine","limitToEnds","lineLen","projectPointToRect","tmpPt","nearestPointOnRect","nearestPointOnPath","pt0","pt1","pt2","dir2","updateLabelLinePoints","labelLineModel","labelGuideConfig","searchSpace","anchorPoint","targetTransform","targetInversedTransform","limitTurnAngle","tmpProjPoint","linePoints","minTurnAngle","angleCos","limitSurfaceAngle","surfaceNormal","maxSurfaceAngle","HALF_PI","newAngle","setLabelLineState","isNormal","styleObj","buildLabelLinePath","moveLen","midPoint0","midPoint2","midPoint1","setLabelLineStyle","labelIgnoreNormal","getLabelLineStatesModels","labelLineName","prepareLayoutList","defaultAttr","localRect","isAxisAligned","minMargin","globalRect","layoutOption","computedLayoutOption","axisAligned","shiftLayout","xyDim","sizeDim","minBound","maxBound","balanceShift","lastPos","adjusted","shifts","totalShifts","shiftList","maxGap","updateMinMaxGap","squeezeGaps","takeBoundsGap","squeezeWhenBailout","gapThisBound","gapOtherBound","moveDir","moveFromMaxGap","remained","maxSqeezePercent","totalGaps","prevItemRect","squeezePercent","moveForEachLabel","shiftLayoutOnY","topBound","bottomBound","hideOverlap","labelList","displayedLabels","hideEl","emphasisState","existsTextCfg","labelGuideIgnore","cloneArr","newPoints","prepareLayoutCallbackParams","hostRect","labelLinePoints","LABEL_OPTION_TO_STYLE_KEYS","dummyTransformable","labelLayoutInnerStore","labelLineAnimationStore","extendWithKeys","LABEL_LAYOUT_PROPS","LabelManager","_labelList","_chartViewList","clearLabels","_addLabel","labelTransform","labelGuide","attachedPos","attachedRot","addLabelsOfSeries","disableLabelLayout","updateLayoutConfig","createDragHandler","defaultLabelAttr","degreeToRadian","needsUpdateLabelLine","labelsNeedsAdjustOnX","moveOverlap","labelsNeedsAdjustOnY","processLabelsOverall","ignoreLabelLineUpdate","forceLabelAnimation","_updateLabelLine","_animateLabels","visualStyle","disableLabelAnimation","oldLayout","layoutStore","oldLayoutSelect","oldLayoutEmphasis","oldOpacity","layoutSelect","layoutEmphasis","newLayout","getLabelManager","installLabelLayout","registers","labelManager","createDom","newDom","newDomStyle","motionBlur","lastFrameAlpha","virtual","maxRepaintRectCount","__firstTimePaint","__used","__drawIndex","__startIndex","__endIndex","__prevStartIndex","__prevEndIndex","onselectstart","initContext","setUnpainted","createBackBuffer","domBack","ctxBack","createRepaintRects","prevList","hasIntersections","mergedRepaintRects","pendingRect","addRectToMergePool","minDeltaArea","bestRectToMergeIdx","mergedRect","pendingRect_1","aArea","bArea","deltaArea","shouldPaint","prevRect","curRect","_paintRects","debugGetPaintRects","clearAll","repaintRects","haveMotionBLur","doClear","clearColorGradientOrPattern","__width","__height","__canvasGradient","__painter","HOVER_LAYER_ZLEVEL","CANVAS_ZLEVEL","EL_AFTER_INCREMENTAL_INC","CanvasPainter","_zlevelList","_prevDisplayList","_layerConfig","_needsManuallyCompositing","singleCanvas","_singleCanvas","zlevelList","rootCanvas","mainLayer","__builtin__","_domRoot","domRoot","isSingleCanvas","getViewportRootOffset","viewportRoot","paintAll","_redrawId","_paintList","_paintHoverList","_hoverlayer","getLayer","getHoverLayer","paintOne","redrawId","_updateLayerStatus","_doPaintList","needsRefreshHover","_compositeManually","eachLayer","self_1","eachBuiltinLayer","layerList","useTimer","firstEl","repaintRect","_doPaintEl","insertLayer","layersMap","prevLayer","isLayerValid","prevDom","updatePrevLayer","prevZlevel","incrementalLayerCount","_clearLayer","layerConfig","_zlevel","delLayer","clearLayer","imageLayer","width_1","height_1","SVGPathRebuilder","_start","_str","dThetaPositive","isCircle","unifiedTheta","xRot","dTheta_1","vals","generateStr","getStr","strokeProps","svgStrokeProps","SVGNS","XLINKNS","XMLNS","XML_NAMESPACE","createVNode","vNodeToString","convertElToString","attrsStr","createElementOpen","createBrushScope","zrId","shadowCache","patternCache","gradientCache","clipPathCache","cssNodes","cssAnims","cssClassIdx","cssAnimIdx","shadowIdx","gradientIdx","patternIdx","clipPathIdx","createSVGVNode","EASING_MAP","transformOriginKey","buildPathString","kfShape","svgPathBuilder","setTransformOrigin","ANIMATE_STYLE_MAP","addAnimation","cssAnim","animationName","getEasingFunc","createCSSAnimation","onlyShape","cssAnimations","cssAnimationCfg","cssAnimationName","composedAnim","subScope","animNames","lastAnim","createCompoundPathCSSAnimation","groupAnimators","cfgArr","createSingleCSSAnimation","groupAnimator","transformKfs","shapeKfs","finalKfs","animationTimingFunctionAttrName","saveAnimatorTrackToCssKfs","cssKfs","toCssAttrName","kfEasing","timingFunction","canAnimateShape","newLen","transformOrigin","percents","allTransformOriginSame","isCanvasLike","setStyleAttrs","updateAttr","pathHasFill","pathHasStroke","strokeScale","mapStyleToAttrs","isFillStroke","setGradient","setPattern","shadowKey","globalScale","getShadowKey","shadowId","blur_1","stdDeviation","setShadow","noRotateScale","compress","noTranslate","getMatrixStr","convertPolyShape","strArr","validatePolyShape","normalizedDesc","builtinShapesDef","brushSVGPath","builtinShpDef","svgElType","willUpdate","hasShapeAnimation","needBuildPath","pathVersion","elExt","__svgPathBuilder","__svgPathVersion","__svgPathStrokePercent","brushSVGImage","adjustTextY","separatedFontStr","brushSVGTSpan","gradientTag","gradientAttrs","stopsAttrs","gradientKey","gradientId","patternAttrs","noRepeat","repeatX","repeatY","imageWidth_1","imageWidth","imageHeight_1","imageHeight","imageSrc","patternImage","setSizeToVNode_1","vNode","elm","createdImage","patternVNode","patternWidth","patternHeight","patternUnits","patternTransform","patternKey","patternId","clipPathId","clipPathAttrs","referenceNode","colonChar","xChar","emptyNode","isUndef","isDef","createKeyToOldIdx","beginIdx","endIdx","sameVnode","vnode1","vnode2","isSameKey","createElm","vnode","updateAttrs","addVnodes","parentElm","vnodes","startIdx","removeVnodes","oldVnode","oldAttrs","setAttributeNS","patchVnode","oldCh","newCh","oldKeyToIdx","idxInOld","elmToMove","oldStartIdx","newStartIdx","oldEndIdx","oldStartVnode","oldEndVnode","newEndIdx","newStartVnode","newEndVnode","updateChildren","svgId","SVGPainter","_oldVNode","svgDom","_svgDom","renderToVNode","parent_2","bgVNode","_bgVNode","createBackgroundVNode","mainVNode","_mainVNode","animationCssStr","selectorNodes","animationNodes","bracketBegin","bracketEnd","selectors","getCssString","styleNode","cssAnimation","currentClipPathGroup","listLen","clipPathsGroupsStack","clipPathsGroupsStackDepth","clipGroupNodeIdx","prevLen","lca","i_2","groupAttrs","viewportStyle","bgEl","LineSeriesModel","getLegendIcon","itemWidth","visualRotate","symbolRotate","iconRotate","legendHoverLink","endLabel","smoothMonotone","showSymbol","showAllSymbol","connectNulls","sampling","divideShape","triggerLineEvent","getDefaultLabel","labelDims","getDefaultInterpolatedLabel","seriesScope","_createSymbol","driftSymbol","_symbolType","stopSymbolAnimation","toLastFrame","getSymbolType","getSymbolPath","setZ","hasCursorOption","getSymbolSize","disableAnimation","_updateCommon","_sizeX","_sizeY","emphasisItemStyle","blurItemStyle","selectItemStyle","emphasisDisabled","hoverScale","emphasisModel","visualColor","pathStyle","symbolInnerColor","liftZ","z2Origin","_z2","useNameLabel","scaleRatio","setSymbolScale","fadeOut","animationOpt","fadeLabel","symbolNeedsDraw","isIgnore","clipShape","normalizeUpdateOpt","makeSeriesScope","SymbolDraw","SymbolCtor","_SymbolCtor","_progressiveEls","symbolUpdateOpt","getSymbolPoint","symbolEl","oldIdx","newSymbolType","oldSymbolType","_getSymbolPoint","incrementalPrepareUpdate","_seriesScope","incrementalUpdate","taskParams","updateIncrementalAndHover","prepareDataCoordInfo","valueOrigin","valueStart","getValueStart","baseAxisDim","valueAxisDim","baseDim","baseDataOffset","dataDimsForPoint","getStackedOnPoint","dataCoordInfo","stackedData","isPointNull","drawSegment","segLen","allLen","cpx0","cpy0","tmpK","ratioNextSeg","nextCpx0","nextCpy0","lenPrevSeg","lenNextSeg","dir_1","dir_2","ECPolylineShape","ECPolyline","getPointOn","xOrY","isDimX","nRoot","ECPolygonShape","ECPolygon","stackedOnPoints","stackedOnSmooth","createGridClipPath","hasAnimation","getArea","isAxisInversed","duringCb","createPolarClipPath","sectorArea","createClipPath","isCoordinateSystemType","isPointsSame","points1","points2","bboxFromPoints","getBoundingDiff","min1","max1","getSmooth","turnPointsIntoStep","stepTurnAt","baseIndex","stepPoints","stepPt","nextPt","filteredPoints","stepPt2","getPointAtIndex","anyStateShowEndLabel","createLineClipPath","lineView","endLabelModel_1","valueAnimation_1","labelAnimationRecord_1","lastFrameIndex","_endLabelOnDuring","_endLabel","originalX","originalY","LineView","symbolDraw","_symbolDraw","_lineGroup","lineStyleModel","areaStyleModel","isCoordSysPolar","prevCoordSys","_coordSys","_polygon","isAreaChart","getStackedOnPoints","isIgnoreFunc","isAuto","getAxesByScale","availSize","canShowAllSymbolForCategory","categoryDataDim","labelMap","getIsIgnoreFunc","__temp","clipShapeForSymbol","_clipShapeForSymbol","visualMetaList","visualMeta","stopLen","outerColors","colorStopsInRange","prevOutOfRangeColorStop","prevInRangeColorStop","newColorStops","lerpStop","stop0","stop1","clippedCoord","clipColorStops","inRangeStopLen","minCoord","maxCoord","coordSpan","getVisualGradient","_newPolygon","_initOrUpdateEndLabel","oldClipPath","_stackedOnPoints","_points","_doUpdateAnimation","_initSymbolLabelAnimation","_newPolyline","stackedOnSeries","changePolyState","_changePolyState","_valueOrigin","packEventData","symbolLabel","isHorizontalOrRadial","isAxisInverse","seriesDuration","seriesDelay","seriesDelayValue","polarClip","pointToCoord","gridClip","endLabelModel","data_2","getLastIndexNotNull","isBaseInversed","getEndLabelStateSpecified","animationRecord","distanceX","distanceY","dataIndexRange","prevIndex","getIndexRange","oldStackedOnPoints","newStackedOnPoints","oldCoordSys","newCoordSys","oldValueOrigin","newValueOrigin","diffResult","diffData","currPoints","nextPoints","currStackedPoints","nextStackedPoints","sortedIndices","rawIndices","newDataOldCoordInfo","oldPoints","diffItem","pointAdded","oldIdx2","newIdx2","currentX","currentY","newDataDimsForPoint","oldPt","stackedOnPoint","sortedCurrPoints","sortedNextPoints","sortedCurrStackedPoints","sortedNextStackedPoints","sortedStatus","idx2","stackedOnCurrent","stackedOnNext","lineAnimationDiff","__points","updatedDataInfo","diffStatus","ptIdx","pointsLayout","forceStoreInTypedArray","useTypedArray","dimIdx0","dimIdx1","tmpIn","tmpOut","nearest","indexSampler","dataSample","BaseBarSeriesModel","getMarkerPosition","startingAtTick","clampData","clampData_1","pt_1","tickCoords","targetTickId","leftCoord","stepTickValue","tickCoord","offsetIndex","barMinAngle","largeThreshold","progressiveChunkMode","BarSeriesModel","brushSelector","BaseBarSeries","roundCap","showBackground","realtimeSort","SausageShape","SausagePath","rCenter","lessThanCircle","unitStartX","unitStartY","unitEndX","unitEndY","adjustAngleDistanceX","adjustAngleDistanceY","getSectorCornerRadius","zeroIfNull","BarView","_isFirstFrame","_removeOnRenderedListener","_updateDrawMode","coordinateSystemType","_isLargeDraw","_renderLarge","_renderNormal","_clear","_updateLargeClip","_incrementalRenderLarge","isLargeDraw","animationModel","realtimeSortCfg","realtimeSortOption","otherAxis","shouldRealtimeSort","_enableRealtimeSort","needsClip","coordSysClipArea","expandWidth","getClipArea","backgroundModel","barBorderRadius","bgEls","oldBgEls","_backgroundEls","isInitSort","isChangeOrder","createBackground","bgLayout","createBackgroundShape","createBackgroundEl","isValidLayout","isClipped","elementCreator","updateStyle","updateRealtimeAnimation","bgGroup","_backgroundGroup","createLarge","_removeBackground","_dispatchInitSort","orderMapping_1","_onRendered","_updateSortWithinSameData","_dataSort","orderMapping","mappedValue","_isOrderChangedWithinSameData","ordinalDataDim","_isOrderDifferentInView","orderInfo","sortInfo","sortResult","coordSysBoundingRect","signWidth","signHeight","coordSysX2","coordSysY2","xClipped","yClipped","signR","__dataIndex","isRadial","positionMapping","isRoundCap","positionMap","createPolarPositionMapping","mappedSectorPosition","middleR","middleAngle","extraDist","animateProperty","animateTarget","seriesAnimationModel","seriesTarget","axisTarget","checkPropertiesNotValid","rectPropties","polarPropties","fixedLineWidth","rawLayout","signX","signY","arcOrAngle","sectorShape","labelPositionOutside","rotateType","anchorAngle","setSectorTextRotation","isZeroOnPolar","LagePathShape","LargePath","startPoint","progressiveEls","bgPoints","largePathUpdateDataIndex","largePath","largePathFindDataIndex","RADIAN","getViewRect","getBasicPieLayout","pieLayout","validDataCount","unitRadian","roseType","stillShowZeroSum","restAngle","valueSumLargerThanMinAngle","currentAngle","angle_1","layout_1","layout_2","dataFilter","legendModels","adjustSingleSide","viewLeft","viewTop","farthestX","labelAlignTo","topSemi","bottomSemi","semi","rA","rB","recalculateXOnSemiToAlignOnEllipseCurve","recalculateX","rB2","rA2","constrainTextWidth","targetTextWidth","forceRecalculate","labelStyleWidth","bgColor","oldOuterWidth","innerRect","availableInnerWidth","unconstrainedWidth","newRect","isPositionCenter","PiePiece","firstCreate","_updateLabel","visualOpacity","PieView","_emptyCircleSector","piePiece","labelLayoutList","hasLabelRotate","minShowLabelRadian","setNotShow","bleedMargin","labelLineLen","labelLineLen2","isLabelShown","isLabelInside","leftList","rightList","leftmostX","rightmostX","isAlignToEdge","extraPaddingH","realTextWidth","avoidOverlap","notShowLabel","itemLayout","createSeriesDataSimply","LegendVisualProvider","getDataWithEncodedVisual","_getDataWithEncodedVisual","_getRawData","getAllNames","containName","PieSeriesModel","legendVisualProvider","_defaultLabelLine","dataInner","valueList_1","labelLineNormalOpt","labelLineEmphasisOpt","minShowLabelAngle","selectedOffset","percentPrecision","distanceToLabelLine","borderJoin","showEmptyCircle","emptyCircleStyle","labelLayout","avoidLabelOverlap","animationTypeUpdate","ScatterSeriesModel","LargeSymbolPathShape","LargeSymbolPath","_off","hoverDataIdx","symbolProxy","symbolProxyShape","canBoost","softClipShape","findDataIndex","LargeSymbolDraw","_create","_setCommon","lastAdded","_newAdded","extrudeShadow","ScatterView","_updateSymbolDraw","_getClipShape","clipArea","GridModel","containLabel","CartesianAxisModel","nameLocation","nameRotate","nameTruncate","nameTextStyle","triggerEvent","onZero","onZeroAxisIndex","axisTick","showMinLabel","showMaxLabel","logBase","AXIS_TYPES","axisModelCreator","BaseAxisModelClass","extraDefaultOption","axisDefault","AxisModel","getAxisType","__ordinalMeta","Cartesian","_dimList","addAxis","cartesian2DDimensions","canCalculateAffineTransform","Cartesian2D","calcAffineTransform","_transform","_invTransform","xAxisScale","yAxisScale","xScaleExtent","yScaleExtent","xScaleSpan","yScaleSpan","translateX","translateY","axisX","axisY","toLocalCoord","containZone","data1","data2","zoneDiag1","zoneDiag2","xVal","yVal","xAxisExtent","yAxisExtent","xExtent","getGlobalExtent","Axis2D","coordExtent","setCategorySortInfo","categorySortInfo","gridModel","otherAxisOnZeroOf","getAxesOnZeroOf","rawAxisPosition","axisPosition","rectBound","posBound","onZeroCoord","labelDirection","tickDirection","nameDirection","labelInside","isCartesian2DSeries","findAxisModels","axisModelMap","alignScaleTicks","alignToScale","alignToTicks","alignToNicedTicks","alignToSplitNumber","alignToInterval","scaleExtent","isMinFixed","isMaxFixed","_coordsMap","_coordsList","_axesMap","_axesList","axisPointerEnabled","_initCartesian","axesMap","updateAxisTicks","axesIndices","axisNeedsAlign","_updateScale","onZeroRecords","fixAxisOnZero","ignoreContainLabel","boxLayoutParams","isContainLabel","gridRect","axesList","adjustAxes","coordBase","axisExtentSum","updateAxisTransform","labelUnionRect","realNumberScaleTicks","categoryScaleExtent","axisLabelModel","singleRect","estimateLabelUnionRect","axesMapOnDim","getCartesian","xAxisIndex","yAxisIndex","coordList","getCartesians","_findConvertTarget","coordsList","axisPositionUsed","axesCount","createAxisCreator","isAxisUsedInTheGrid","axesModelMap","getTooltipAxes","baseAxes","otherAxes","grids","otherAxisDim","canOnZeroToAxis","getOnZeroRecordKey","ifAxisCrossZero","AxisBuilder","handleAutoShown","transformGroup","_transformGroup","hasBuilder","builders","getGroup","innerTextLayout","axisRotation","rotationDiff","makeAxisEventDataBase","isLabelSilent","tooltipOpt","arrows","arrowSize","arrowOffset","symbolWidth_1","symbolHeight_1","axisTickLabel","ticksEls","tickEndCoord","createTicks","buildAxisMajorTicks","labelEls","axisLabelShow","labelMargin","rawCategoryData","itemLabelModel","rawCategoryItem","tickIndex","buildAxisLabel","tickEls","firstLabel","nextLabel","lastLabel","prevLabel","ignoreEl","isTwoLabelOverlapped","fixMinMaxLabelShow","minorTickModel","minorTicksCoords","minorTickLineStyle","minorTicksEls","buildAxisMinorTicks","axisNameAvailableWidth","gapSignal","isNameLocationCenter","nameRotation","textRotate","onLeft","endTextLayout","truncateOpt","nameTruncateMaxWidth","__fullText","firstRect","nextRect","mRotationBack","tickTransform","tickLineStyle","anidPrefix","tickEl","checkPropInLink","linkPropValue","axisPropValue","getAxisInfo","coordSysAxesInfo","axesInfo","makeKey","isHandleTrigger","axisPointerModel","axisPointerClazz","AxisView","axisPointerClass","axisInfo","useHandle","_doUpdateAxisPointerClass","updateAxisPointer","_axisPointer","_disposeAxisPointer","Clazz","getAxisPointerClass","registerAxisPointerClass","rectCoordAxisBuildSplitArea","axisView","splitAreaModel","areaColors","areaColorsLen","lastSplitAreaColors","splitAreaColors","newSplitAreaColors","cIndex","rectCoordAxisHandleRemove","axisBuilderAttrs","selfBuilderAttrs","CartesianAxisView","oldAxisGroup","_axisGroup","axisBuilder","elementType","cartesians","axisElementBuilders","splitLineModel","CartesianXAxisView","CartesianYAxisView","GridView","extraOption","radarLayout","getIndicatorAxes","isValidPoint","getValueMissingPoint","radarBackwardCompat","polarOptArr","polarNotRadar_1","polarOpt","indicator","polarIndex","radarIndex","RadarView","createSymbol","updateSymbols","symbolGroup","__dimIdx","getInitialPoints","itemGroup","polygonIgnore","stateIgnore","itemHoverStyle","RadarSeriesModel","indicatorAxes","nameToDisplay","getTooltipPosition","coordToPoint","valueAxisDefault","defaultsShow","RadarModel","showName","nameFormatter","indicatorModels","indicatorOpt","iNameTextStyle","innerIndicatorOpt","indName","_indicatorModels","getIndicatorModels","radarModel","_buildAxes","_buildSplitLineAndArea","indicatorAxis","showSplitLine","showSplitArea","splitLineColors","splitLineColorsArr","splitAreaColorsArr","splitLines","splitAreas","ticksRadius","getColorIndex","realSplitNumber_1","axesTicksPoints","prevPoints","areaOrLine","areaOrLineColorList","IndicatorAxis","radiusExtent","Radar","_indicatorAxes","indicatorModel","indicatorIndex","closestAxis","minRadianDiff","closestAxisIdx","viewSize","radarSeries","dummyScale","radarList","ATTR","isTaken","resourceKey","RoamController","mousedownHandler","_mousedownHandler","mousemoveHandler","_mousemoveHandler","mouseupHandler","_mouseupHandler","mousewheelHandler","_mousewheelHandler","pinchHandler","_pinchHandler","controlType","_opt","zoomOnMouseWheel","moveOnMouseMove","moveOnMouseWheel","preventDefaultMouseMove","_dragging","isPinching","_pinching","setPointerChecker","pointerChecker","isAvailableBehavior","oldX","oldY","shouldZoom","shouldMove","absWheelDeltaDelta","checkPointerAndTrigger","scrollDelta","behaviorToCheck","contollerEvent","updateViewOnPan","controllerHost","updateViewOnZoom","zoomDelta","zoomLimit","zoomMin","zoomMax","zoomScale","nodeParsers","IRRELEVANT_EXCLUDES","onIrrelevantElement","targetCoordSysModel","parseXML","svgNode","INHERITABLE_STYLE_ATTRIBUTES_MAP","INHERITABLE_STYLE_ATTRIBUTES_MAP_KEYS","SELF_STYLE_ATTRIBUTES_MAP","SELF_STYLE_ATTRIBUTES_MAP_KEYS","SVGParser","_defs","_defsUsePending","named","viewBox","parseAttributes","viewBoxRect","viewBoxTransform","_parseNode","defsUsePending","applyDefs","viewBoxArr","splitNumberSequence","makeViewBoxTransform","ignoreViewBox","elRoot","ignoreRootClip","xmlNode","namedFrom","isInDefs","isInText","namedFromForSub","parser_1","newNamed","svgNodeTagLower","paintServerParsers","_parseText","_textX","_textY","inheritStyle","parentSelfStyle","__selfStyle","zrTextBaseline","parentInheritedStyle","__inheritedStyle","zrTextAlign","applyTextAlignment","pointsArr","pointsStr","parsePoints","parsePaintServerUnit","parseGradientColorStops","offsetStr","styleVals","parseInlineStyle","stopColor","pointsString","onlyInlineStyle","isTextGroup","inheritedStyle","selfStyle","transformOps_1","transformRegex","valueArr","DEGREE_TO_ANGLE","parseTransformAttribute","inheritableStyleResult","selfStyleResult","svgAttrName","attrValue","parseAttributeStyle","getFillStrokeStyle","urlMatch","rawStr","styleRegex","styleRegResult","svgStlAttr","zrInheritableStlAttr","zrSelfStlAttr","REGION_AVAILABLE_SVG_TAG_MAP","GeoSVGResource","_usedGraphicMap","_freedGraphics","_mapName","_parsedXML","firstGraphic","_firstGraphic","_buildGraphic","_boundingRect","regionsMap","namedItem","createRegions","_regions","_regionsMap","svgXML","rootFromParse","bRectX","bRectY","bRectWidth","bRectHeight","calculatedBoundingRect","useGraphic","hostKey","usedRootMap","svgGraphic","freeGraphic","geoCoord","nanhaiName","coordsOffsetMap","GeoJSONResource","geoJSON","_parsedMap","_specialAreas","_geoJSON","rawRegions","_parseToRegions","calculateBoundingRect","finalRegions","regionName","fixNanhai","coordFix","fixDiaoyuIsland","specialArea","getMapForUser","regionRect","rawDef","rawSpecialAreas","getGeoResource","OPTION_STYLE_ENABLED_TAGS","OPTION_STYLE_ENABLED_TAG_MAP","STATE_TRIGGER_TAG_MAP","LABEL_HOST_MAP","mapLabelRaw","getFixedItemStyle","areaColor","fixLineStyle","styleHost","MapDraw","_controller","_controllerHost","_regionsGroup","_svgGroup","mapOrGeoModel","fromView","isGeo","mapSeries","getHostGeoModel","regionsGroup","transformInfo","getTransformInfo","transformInfoRaw","transformInfoRoam","roam","isVisualEncodedByVisualMap","viewBuildCtx","resourceType","_buildGeoJSON","_buildSVG","_updateMapSelectHandler","regionsGroupByName","_regionsGroupByName","regionsInfoByName","transformPolygonPoints","inPoints","outPoints","newPt","getPolyShape","regionGroup","regionModel","getRegionModel","polygonSubpaths","polylineSubpaths","projectPolys","centerPt","createCompoundPath","subpaths","isLine","compoundPath","applyOptionStyleForRegion","resetLabelForRegion","resetEventTriggerForRegion","resetTooltipForRegion","resetStateTriggerForRegion","_svgResourceChanged","_freeSVG","_useSVG","svgDispatcherMap","_svgDispatcherMap","_svgGraphicRecord","_enableBlurEntireSVG","opacity_1","geoModel","_svgMapName","geoSourceManager","makeActionBase","_mouseDownFlag","resetForLabelLayout","mapDraw","normalStyleModel","emphasisStyleModel","blurStyleModel","selectStyleModel","selectStyle","labelXY","isDataNaN","showLabel","specifiedTextOpt","eventTrigger","geoIndex","enableComponentHighDownFeatures","createStream","curPoly","startPolygon","endPolygon","mapModel","_mapDraw","needsDrawMap","_renderSymbols","originalData","originalDataIndex","mainSeries","fullIndex_1","MapSeries","getRegion","dataNameMap","toAppendNames","name_2","getMapType","seriesNames","otherIndex","iconType","aspectScale","showLegendSymbol","boundingCoords","scaleLimit","mapDataStatistic","seriesGroups","hostGeoModel","seriesList","datas","statisticType","mapSymbolLayout","processedMapType","mapSymbolOffsets","subMapSeries","v2ApplyTransform","_roamTransformable","_rawTransformable","setViewRect","_transformTo","_viewRect","rawTransform","rawParent","centerCoord","_updateCenterAndZoom","_zoom","getDefaultCenter","rawRect","getRoamTransform","rawTransformMatrix","roamTransform","defaultCenter","roamTransformable","rawTransformable","_rawTransform","getViewRectAfterRoam","noRoam","getCoordSys","GEO_DEFAULT_PARAMS","invertLongitute","geo2DDimensions","Geo","_nameCoordMap","_invertLongitute","getRegionByCoord","addGeoCoord","getGeoCoord","projectedToPoint","pointToProjected","resizeGeo","leftTop_1","rightBottom_1","projection_1","sampleLine","centerOption","sizeOption","useCenterAndSize","boxLayoutOption","GeoCreator","geoList","getCommonGeoProperties","mapModelGroupBySeries","nameMapList","singleMapSeries","setGeoCoords","getFilledRegions","originRegionArr","regionsArr","GeoModel","_optionModelMap","optionModelMap","regionOpt","unSelect","getCenterCoord","updateCenterAndZoom","previousZoom","fixX","fixY","GeoView","_handleRegionClick","updateSelectStatus","geoId","makeAction","separation","isExpand","subtreeW","hierNode","subtreeV","nodeOutRight","nodeInRight","nodeOutLeft","nodeInLeft","sumOutRight","sumInRight","sumOutLeft","sumInLeft","nextAncestor","nodeX","defaultSeparation","radialCoordinate","wl","node1","node2","TreeEdgeShape","parentPoint","childPoints","TreePath","childLen","firstChildPos","lastChildPos","forkDim","forkPosition","tmpPoint","TreeView","_mainGroup","layoutInfo","_updateViewCoordSys","updateNode","_nodeScaleRatio","_updateNodeAndLinkScale","oldMin","oldMax","viewCoordSys","nodeScale","_getNodeGlobalScale","nodeScaleRatio","groupZoom","getNodeByDataIndex","virtualRoot","sourceSymbolEl","sourceLayout","sourceOldLayout","__oldX","__oldY","rawX","__radialOldRawX","rawY","__radialOldRawY","targetLayout","__radialRawX","__radialRawY","realRoot","rootLayout","labelRotateRadian","focusDataIndices","getAncestorsIndices","getDescendantIndices","edgeShape","getOrient","curvature","edgeForkPosition","__edge","getEdgeShape","childLayout","drawEdge","removeNodeEdge","removeAnimationOpt","getSourceNode","sourceEdge","layoutOpt","radialCoor1","radialCoor2","radialCoor3","radialCoor4","transferInjection","linkAll","linkSingle","changeInjection","struct","cloneShallowInjection","structAttr","datasAttr","hostTree","isRemoved","eachNode","suppressVisitSub","updateDepthAndHeight","getNodeById","getAncestors","includeSelf","currNode","getLevelModel","levelModels","getChildIndex","isAncestorOf","isDescendantOf","Tree","clearLayouts","createTree","beforeLink","listData","dimMax","buildHierarchy","dataNode","retrieveTargetInfo","validPayloadTypes","targetNode","targetNodeId","getPathToRoot","aboveViewRoot","viewRoot","wrapTreePathInfo","treePathInfo","nodeDataIndex","TreeSeriesModel","leavesModel","treeDepth","expandTreeDepth","expandAndCollapse","initialTreeDepth","treeAncestors","curveness","eachBefore","inRoot","eachAfter","tx_1","kx_1","ky_1","coorX_1","coorY_1","finalCoor","orient_1","commonLayout","treeVisual","actionTypes","enableAriaDecalForTree","decalPaletteScope","completeTreeValue","childValue","thisValue","TreemapSeriesModel","designatedVisualItemStyle","designatedVisualModel","hasColorDefine","hasDecalDefine","globalColorList","globalDecalList","levelDefine","modelColor","modelDecal","level0","setDefault","levelModel","resetViewRoot","setLayoutInfo","mapIdToIndex","idIndexMap","_idIndexMap","_idIndexMapCount","getViewRoot","_viewRoot","enableAriaDecal","clipWindow","squareRatio","leafDepth","drillDownIcon","zoomToNodeRatio","emptyItemWidth","upperLabel","colorAlpha","colorSaturation","gapWidth","borderColorSaturation","visualDimension","visualMin","visualMax","colorMappingBy","childrenVisibleMin","Breadcrumb","containerGroup","thisGroup","emphasisTextStyleModel","layoutParam","renderList","_prepare","_renderContent","TEXT_PADDING","availableSize","itemNode","makeItemPoints","onclick","selfType","AnimationWrap","_elExistsMap","_finishedCallback","checkTerminate","PATH_LABEL_NOAMAL","PATH_UPPERLABEL_NORMAL","Z2_BASE","Z2_BG","Z2_CONTENT","getStateItemStyle","getItemStyleNormal","TreemapView","nodeGroup","_oldTree","thisStorage","reRoot","rootNodeGroup","_giveContainerGroup","renderResult","_doRender","renderFinally","_doAnimation","_resetController","_renderBreadcrumb","_containerGroup","thisTree","lastsForAnimation","oldStorage","willInvisibleEls","doRenderNode","thisLayout","nodeModel","isInView","thisWidth","thisHeight","thisInvisible","thisRawIndex","oldRawIndex","thisViewChildren","upperHeight","itemStyleNormalModel","itemStyleEmphasisModel","itemStyleBlurModel","itemStyleSelectModel","giveGraphic","nodeWidth","nodeHeight","isAboveViewRoot","bg","useUpperLabel","processInvisible","visualBorderColor","upperLabelWidth","prepareText","renderBackground","upperLabelHeight","focusOrIndices","nodeStyle","renderContent","disableMorphing","upperLabelRect","isShow","addDrillDownIcon","textEmphasisState","isLeafRoot","iconChar","storageName","lasts","lastCfg","oldShape","prepareAnimationWhenHasOld","z2InLevel","calculateZ2","parentOldX","parentOldY","parentOldBg","fadein","prepareAnimationWhenNoOld","renderNode","dualTravel","oldViewChildren","sameTree","processNode","willDeleteEls","delEls","willDelete","clearStorage","animationWrap","innerStore","_onZoom","_clearController","rootRect","findTarget","_rootToNode","_zoomToNode","linkTarget","_breadcrumb","CATEGORY_DEFAULT_VISUAL_INDEX","VisualMapping","mappingMethod","thisOption","_normalizeData","normalizers","visualHandler","applyVisual","getColorMapper","_normalizedToVisual","normalizeVisualRange","pieceList","hasSpecialVisual","piece","originIndex","preprocessForPiecewise","categoryMap","cate","visualArr_1","setVisualToOption","preprocessForSpecifiedCategory","mapValueToVisual","getNormalizer","listVisualTypes","isValidType","eachVisual","mapVisual","newVisual","retrieveVisuals","hasVisual","prepareVisualTypes","visualTypes","dependsOn","visualType1","visualType2","findPieceIndex","findClosestWhenOutside","possibleI","pieceValue","updatePossible","newAbs","makeApplyVisual","isNormalized","doMapCategory","returnRGBArray","parsedVisual","piecewise","getSpecifiedVisual","fixed","doMapFixed","colorHue","makePartialColorVisualHandler","colorLightness","createNormalizedToNumericVisual","doMapToArray","visualArr","applyValue","sourceExtent","pieceIndex","travelTree","designatedVisual","viewRootAncestors","nodeLayout","thisNodeColor","nodeItemStyleModel","visuals","visualName","buildVisuals","existsStyle","calculateBorderColor","calculateColor","mapping_1","rangeVisual","getRangeVisual","drColorMappingBy","buildVisualMapping","childVisual","childVisuals","mappingType","getValueVisualDefine","PATH_BORDER_WIDTH","PATH_GAP_WIDTH","PATH_UPPER_LABEL_SHOW","PATH_UPPER_LABEL_HEIGHT","seriesOption","viewAbovePath","rootSize","defaultSize","viewArea","currNodeValue","getUpperLabelHeight","estimateRootSize","sort_1","viewRootLayout_1","treeRoot","defaultPosition","targetCenter","calculateRootPosition","prunning","hideChildren","halfGapWidth","layoutOffset","layoutOffsetUpper","totalArea","orderBy","overLeafDepth","statistic","deletePoint","filterByThreshold","initChildren","rowFixedLength","best","worst","areaMax","areaMin","squareArea","idx0WhenH","idx1WhenH","rowOtherLength","wh1","remain","modWH","wh0","nodeInViewAbovePath","childClipRect","categoryFilter","graphSeries","categoriesData","getCategoriesData","getGraph","categoryNames","categoryVisual","paletteScope","categoryNameIdxMap","symbolVisualList","symbolVisual","categoryIdx","categoryStyle","visualList","graphEdgeVisual","getEdgeData","getEdgeByIndex","KEY_DELIMITER","getAutoCurvenessParams","createCurveness","appendLength","autoCurvenessParmas","curvenessList","__curvenessList","getKeyOfEdges","getOppositeKey","getEdgeFromMap","__edgeMap","getTotalLengthBetweenNodes","getEdgeMapLengthWithKey","edgeMap","getCurvenessForEdge","needReverse","autoCurvenessParams","isArrayParam","edgeArray","edgeIndex","totalLen","curKey","parityCorrection","isForward","oppositeKey","resValue","simpleLayout","simpleLayoutEdge","eachEdge","graphSimpleLayout","dimensions_1","getNodeGlobalScale","_symbolRadiansHalf","circularLayout","basedOn","draggingNode","tempX","tempY","rotateNodeLabel","_layoutNodesBasedOn","x12","y12","unitAngle","radianHalf","sumRadian","symbolRadianHalf","halfRemainRadian","circularRotateLabel","getGraphicEl","graphCircularLayout","graphForceLayout","preservedPoints_1","preservedPoints","graph_1","forceModel","initLayout","nodeDataExtent_1","edgeDataExtent_1","repulsion","repulsionArr_1","edgeLengthArr_1","rep","edgeModel","ignoreForceLayout","forceInstance","inNodes","inEdges","gravity","pp","beforeStepCallback","afterStepCallback","initialFriction","friction","warmUp","setFixed","setUnfixed","beforeStep","afterStep","v12","nLen","repFact","forceLayout","getNodeByIndex","createViewCoordSys","coordSysType","bbWidth","bbHeight","straightLineProto","bezierCurveProto","StraightLineShape","isStraightLine","ECLinePath","SYMBOL_CATEGORIES","makeSymbolTypeKey","symbolCategory","makeSymbolTypeValue","symbolSizeArr","symbolOffsetArr","__specifiedRotation","setLinePoints","_createLine","createLine","_updateCommonStl","getLinePath","emphasisLineStyle","blurLineStyle","selectLineStyle","lineState","lineStateStyle","stateStyle","labelNormalModel","__align","__verticalAlign","__position","__labelDistance","symbolFrom","symbolTo","invScale","fromPos","toPos","setSymbolRotation","halfPercent","tangent","specifiedRotation","isPointNaN","lineNeedsDraw","pts","LineDraw","LineCtor","_LineCtor","lineDraw","oldLineData","_lineData","_doUpdate","isEffectObject","newLineData","v2DistSquare","intersectCurveCircle","curvePoints","radiusSquare","nextDiff","adjustEdge","tmp0","quadraticSubdivide","pts2","fromSymbol","toSymbol","__original","originalPoints","isViewCoordSys","GraphView","_lineDraw","_firstRender","groupNewProp","_layoutTimeout","layoutAnimation","_startForceLayoutIteration","_layouting","getAdjacentDataIndices","generateNodeKey","Graph","directed","_nodesMap","_edgesMap","_directed","isDirected","nodesMap","GraphNode","hostGraph","addEdge","edgesMap","GraphEdge","outEdges","getEdge","breadthFirstTraverse","startNode","edgeType","__visited","otherNode","inDegree","outDegree","adjacentEdge","getTrajectoryDataIndices","connectedEdgesMap","connectedNodesMap","sourceNodesQueue","targetNodesQueue","nodeIteratorIndex","sourceNode","sourceNodes","targetNodes","createGraphDataProxyMixin","hostName","dataName","createGraphFromNodeEdge","linkNameList","validEdges","linkCount","coordSysCtor","GraphSeriesModel","_categoriesData","_updateCategoriesData","categoryModel","_categoriesModels","oldGetModel","newGetModel","newPathArr","oppositeEdges","createEdgeMapForCurveness","circular","rotateLabel","edgeSymbol","edgeSymbolSize","edgeLabel","PointerShape","PointerPath","formatLabel","GaugeView","colorList","posInfo","_renderMain","axisLineModel","MainPath","showAxis","axisLineWidth","angleRangeSpan","prevEndAngle","_renderTicks","_renderTitleAndDetail","_renderAnchor","_renderPointer","minVal","maxVal","subSplitNumber","splitLineLen","tickLen","subStep","splitLineStyle","splitLineDistance","autoColor","textStyleX","textStyleY","tickLine","oldProgressData","_progressEls","progressList","showPointer","progressModel","showProgress","valueExtent","angleExtent","createPointer","pointerModel","pointerWidth","pointerLength","pointerStr","pointerOffset","pointerOffsetX","pointerOffsetY","pointerKeepAspect","createProgress","ProgressPath","isOverlap","progressWidth","isClip","previousPointer","previousRotate","previousProgress","anchorModel","anchorSize","anchorType","anchorKeepAspect","newTitleEls","newDetailEls","showPointerAbove","_titleEls","_detailEls","itemTitleModel","titleOffsetCenter","titleX","titleY","labelEl","itemDetailModel","detailOffsetCenter","detailX","detailY","detailColor","formatter_1","fmt","GaugeSeriesModel","opacityAccessPath","FunnelPiece","FunnelView","funnelPiece","FunnelSeriesModel","funnelAlign","funnelLayout","getSortedIndices","sizeExtent","itemSize","getLinePoints","ParallelView","_dataGroup","dataGroup","newDataIndex","updateElCommon","addEl","oldDataIndex","createLinePoints","createGridClipShape","isEmptyValue","makeDefaultEncode","dataDimIndex","ParallelSeriesModel","getRawIndicesByActiveState","activeState","eachActiveState","theActiveState","parallelIndex","inactiveOpacity","activeOpacity","opacityMap","inactive","itemOpacity","parallelPreprocessor","hasParallelSeries","createParallelIfNeeded","parallelAxis","axisOption","parallelOption","mergeAxisOptionFromParallel","_handlers","_throttledDispatchExpand","_dispatchExpand","checkTrigger","_mouseDownPoint","mouseDownPoint","getSlidedAxisExpandWindow","axisExpandWindow","triggerOn","ParallelModel","_initDimensions","setAxisExpand","axisExpandable","axisExpandCenter","axisExpandCount","axisExpandWidth","axisExpandRate","axisExpandDebounce","axisExpandSlideTriggerArea","axisExpandTriggerOn","ParallelAxis","sliderMove","handleEnds","handleIndex","minSpan","maxSpan","restrict","handleSpan","originalDistSign","getSpanSign","currDistSign","extentMinSpan","realExtent","Parallel","_axesLayout","_updateAxesFromSeries","_makeLayoutInfo","axisBase","layoutBase","pixelDimIndex","pAxis","pLayout","layoutLength","_layoutAxes","winSize","layoutExtent","axisCount","axisCollapseWidth","winInnerIndices","axisExpandWindow0Pos","layoutAxisWithExpand","layoutAxisWithoutExpand","positionTable","rotationTable","axisCoordToPoint","dataDimensions","axisModels","hasActiveSet","hasAxisBrushed","lenj","getActiveState","getAxisLayout","pointCoord","triggerArea","useJump","winSize2","ParallelAxisModel","activeIntervals","getAreaSelectStyle","setActiveIntervals","BRUSH_PANEL_GLOBAL","COVER_Z","UNSELECT_THRESHOLD","MIN_RESIZE_LINE_WIDTH","MUTEX_RESOURCE_KEY","DIRECTION_MAP","CURSOR_MAP","DEFAULT_BRUSH_OPT","transformable","brushMode","removeOnClick","baseUID","BrushController","_covers","_uid","pointerHandlers","enableBrush","brushOption","_brushType","_doDisableBrush","brushType","_doEnableBrush","_enableGlobalPan","userKey","_brushOption","setPanels","panelOpts","panels_1","_panels","panelId","enableGlobalPan","updateCovers","coverConfigList","coverConfig","oldCovers","newCovers","creatingCover","_creatingCover","cover","__brushOption","newBrushInternal","endCreating","createCover","updateCoverAfterCreation","unmount","clearCovers","coverRenderers","coverRenderer","getCoverRenderer","updateCoverShape","updateCommon","getPanelByPoint","localCursorPoint","isTargetByCursor","getPanelByCover","covers","originalLength","getTrackEnds","createBaseRectCover","rectRangeConverter","edgeNameSequences","makeStyle","driftRect","ondragend","nameSequence","updateBaseRect","localRange","handleSize","x2a","y2a","widtha","heighta","updateRectShape","mainEl","globalDir","getGlobalDirection1","localDirNameSeq","getGlobalDirection2","pointsToRect","clipByPanel","formatRectRange","localDirName","dirNameSequence","rectRange","toRectRange","localDelta","toLocalDelta","dirName","ind","fromRectRange","driftPolygon","localD","localZero","rawE","mainShapeContain","updateCoverByMouse","_creatingPanel","thisBrushOption","shouldShowCover","determineBrushType","getCreatingRange","defaultBrushType","handleDragEnd","isOutsideZrArea","currPanel","resetCursor","getLineRenderer","returnInput","localTrack","ends","xyIndex","otherExtent","getLinearBrushOtherExtent","makeRectPanelClipPath","normalizeRect","localPoints","makeLinearBrushOtherExtent","specifiedXYIndex","brushWidth","makeRectIsTargetByCursor","targetModel","elementList","ParallelAxisView","_brushController","_onBrush","fromAxisAreaSelect","coordSysModel","areaSelectStyle","areaWidth","builderOpt","_refreshBrushController","extentLen","getCoverInfoList","eventParam","coverInfoList","coverInfo","realtime","parallelAxisId","defaultAxisOption","parallelAxisModel","installParallelActions","SankeyPathShape","SankeyPath","SankeyView","_focusAdjacencyDisabled","sankeyView","n1Layout","node1Model","dragX1","dragY1","n2Layout","node2Model","dragX2","dragY2","edgeLayout","applyCurveStyle","defaultEdgeLabelText","edgeLabelStateModels","dragX","dragY","localX","localY","curveProps","sourceColor","targetColor","SankeySeriesModel","nodeDepth","setNodePosition","localPosition","rawDataOpt","edgeValue","nodeValue","nodeGap","layoutIterations","nodeAlign","sankeyLayout","getEdgeValue","nodeRawValue","computeNodeValues","remainEdges","indegreeArr","zeroIndegrees","nextTargetNode","maxNodeDepth","isItemDepth","edgeIdx","nextSourceNode","remainNodes","skNodeHeight","isNodeDepth","moveSinksRight","adjustNodeWithNodeAlign","scaleNodeBreadths","computeNodeBreadths","nodesByBreadth","keyAttr","groupResult","prepareNodesByBreadth","minKy","nodeDy","edgeDy","initializeNodeDepth","resolveCollisions","relaxRightToLeft","relaxLeftToRight","computeNodeDepths","computeEdgeDepths","layoutSankey","nodeDyAttr","weightedTarget","centerTarget","nodeY","weightedSource","centerSource","sankeyVisual","minValue_1","maxValue_1","mapValueToColor","customColor","edgeStyle","WhiskerBoxCommonMixin","addOrdinal","xAxisType","yAxisType","coordDims","baseAxisDimIndex","_baseAxisDim","baseAxisType","otherAxisType","newOptionData_1","newItem","defaultValueDimensions","BoxplotSeriesModel","boxWidth","BoxplotView","constDim","createNormalBox","updateNormalBoxData","BoxPathShape","BoxPath","transInit","initBaseline","boxplotLayout","axisList","groupSeriesByAxis","seriesCount","boxWidthList","boxOffsetList","boundList","maxDataCount_1","boxWidthBound","boxGap","calculateBase","halfWidth","cDimIdx","vDimIdx","cDim","vDims","axisDimVal","median","getPoint","end1","end2","end4","end5","addBodyEnd","layEndLine","layoutSingleSeries","boxplotTransform","boxData","outliers","boundIQR","useExtreme","ascList","Q1","Q2","Q3","itemNameFormatter","outlier","prepareBoxplotData","SKIP_PROPS","CandlestickView","_incrementalRenderNormal","isSimpleBox","isNormalBoxClipped","setBoxCommon","NormalBoxPathShape","NormalBoxPath","__simpleBox","LargeBoxPathShape","LargeBoxPath","__sign","elP","elN","elDoji","setLargeStyle","CandlestickSeriesModel","getShadowDim","brushRect","borderColorDoji","candlestickPreprocessor","seriesItem","positiveBorderColorQuery","negativeBorderColorQuery","dojiBorderColorQuery","positiveColorQuery","negativeColorQuery","candlestickLayout","candleWidth","calculateCandleWidth","cDimI","vDimsI","openDimI","closeDimI","lowestDimI","highestDimI","hasDojiColor","openVal","closeVal","lowestVal","highestVal","getSign","ocLow","ocHigh","ocLowPoint","ocHighPoint","lowestPoint","highestPoint","subPixelOptimizePoint","makeBrushRect","pmin","pmax","updateRipplePath","rippleGroup","effectCfg","rippleEffectColor","ripplePath","EffectSymbol","stopEffectAnimation","startEffectAnimation","rippleNumber","period","effectOffset","rippleScale","updateEffectAnimation","oldEffectCfg","_effectCfg","DIFFICULT_PROPS","showEffectOn","EffectScatterView","effectSymbolDraw","_updateGroupTransform","EffectScatterSeriesModel","effectType","rippleEffect","EffectLine","_updateEffectSymbol","effectModel","_symbolScale","_updateEffectAnimation","roundTrip","constantSpeed","delayExpr","_updateAnimationPoints","_getLineLength","_period","_roundTrip","delayNum","__t","_animateSymbol","_updateSymbolPosition","__p1","__cp1","__p2","quadraticDerivativeAt","__lastT","_createPolyline","EffectPolyline","_lastFrame","_lastFramePercent","accLenArr","_offsets","LargeLinesPathShape","segs","LargeLinesPath","LargeLineDraw","lineEl","oldSegs","newSegs","isIncremental","linesLayout","isPolyline","totalCoordsCount","getLineCoordsCount","getLineCoords","LinesView","_updateLineDraw","_lastZlevel","_showEffect","hasEffect","_hasEffet","_isPolyline","Uint32Arr","Float64Arr","compatEc2","toName","LinesSeriesModel","_processFlatCoordsArray","_flatCoords","flatCoords","_flatCoordsOffset","flatCoordsOffset","_getCoordsFromItemModel","coordsOffsetAndLenStorage","coordsStorage","coordsCursor","offsetCursor","blurSize","maxOpacity","minOpacity","_gradientPixels","outOfRange","colorFunc","isInRange","_getBrush","gradientInRange","_getGradient","gradientOutOfRange","pixelLen","diffOpacity","gradientOffset","brushCanvas","_brushCanvas","gradientPixels","pixelsSingleState","isGeoCoordSys","HeatmapView","visualMapOfThisSeries","eachTargetSeries","targetSeries","_renderOnCartesianAndCalendar","_renderOnGeo","isCartesian2d","dataDimX","dataDimY","dataToRect","contentShape","emphasisModel_1","visualMapModel","inRangeVisuals","targetVisuals","outOfRangeVisuals","hmLayer","_hmLayer","dataSpan","getIsInContinuousRange","getIsInPiecewiseRange","getPieceList","HeatmapSeriesModel","BAR_BORDER_WIDTH_QUERY","LAYOUT_ATTRS","posDesc","pathForLineWidth","getSymbolMeta","symbolRepeat","symbolClip","symbolPosition","symbolPatternSize","symbolMeta","symbolRepeatDirection","outputSymbolMeta","boundingLength","symbolBoundingData","zeroPx","pxSignIdx","symbolBoundingExtent","convertToCoordOnAxis","coordSysExtent","repeatCutLength","pxSign","prepareBarLength","parsedSymbolSize","categoryDim","categorySize","symbolScale","prepareSymbolSize","valueLineWidth","prepareLineWidth","unitLength","pathLen","absBoundingLength","symbolMargin","hasEndGap","symbolMarginNumeric","uLenWithMargin","endFix","repeatSpecified","repeatTimes","toIntTimes","sizeFix","pathPosition","bundlePosition","barRectShape","ecSize","prepareLayoutInfo","createOrUpdateRepeatSymbols","bundle","__pictorialBundle","eachPath","__pictorialAnimationIndex","__pictorialRepeatTimes","makeTarget","createOrUpdateSingleSymbol","mainPath","__pictorialMainPath","createOrUpdateBarRect","barRect","__pictorialBarRect","createOrUpdateClip","__pictorialClipPath","createBar","__pictorialShapeStr","getShapeStr","__pictorialSymbolMeta","removeBar","immediateAttrs","animationAttrs","barPositionOutside","times","roundedTimes","PictorialBarView","coordSysRect","pictorialShapeStr","updateBar","PictorialBarSeriesModel","ThemeRiverView","layersSeries","getLayerSeries","keyGetter","dataDiffer","_layersSeries","newLayersGroups","oldLayersGroups","points0","textLayout","layerGroup","ThemeRiverSeriesModel","fixData","rawDataLength","timeValueKeys","layerData","dataList","layerNum","timeValue","filterData","lenCount","indexArr","timeDim","layerSeries","index1","index2","getAxisTooltipData","nestestValue","nearestIdx","pointNum","theValue","singleAxisIndex","themeRiverLayout","doThemeRiverLayout","baseY0","layerPoints","singleLayer","computeBaseline","baseLine","SunburstPiece","_seriesModel","_ecModel","itemStyleModel","isNormalShown","getLabelAttr","stateAttr","labelStateModel","isShown","sectorState","labelPadding","ROOT_TO_NODE_ACTION","HIGHLIGHT_ACTION","SunburstView","newRoot","renderLabelForZeroData","oldChildren","_oldChildren","virtualPiece","renderRollUp","targetFound","SunburstSeriesModel","_levelModels","sunburstLayout","rootDepth","renderRollupNode","rPerLevel","rStart","rEnd","r0_1","r_1","radius_1","siblingAngle_1","sortTargets","isAsc_1","sunburstVisual","treeHeight","pickColor","STYLE_VISUAL_TYPE","NON_STYLE_VISUAL_PROPS","customInnerStore","CustomSeriesModel","currentZLevel","currentZ","dataToCoordSize","dataSize","isEC4CompatibleStyle","elType","hasOwnTextContentOption","hasOwnTextConfig","legacy","convertFromEC4CompatibleStyle","hostStyle","textContentStyle","srcStyle","hasOwnPos","textDistance","convertEC4CompatibleRichItem","richItem","textStrokeWidth","textBoxShadowColor","textBoxShadowBlur","textBoxShadowOffsetX","textBoxShadowOffsetY","convertToEC4StyleForCustomSerise","itemStl","txStl","txCfg","hostFill","convertToEC4RichItem","textFillNotSet","LEGACY_TRANSFORM_PROPS_MAP","LEGACY_TRANSFORM_PROPS","ELEMENT_ANIMATABLE_PROPS","transitionInnerStore","getElementAnimationConfig","elOption","animationProp","userDuring","duringCall","applyUpdateTransition","clearStyle","styleOpt","transFromProps","propsToSet","legacyName","xyName","legacyArr","prepareTransformAllPropsFinal","prepareShapeOrExtraAllPropsFinal","transitionKeys","isTransitionAll","elVal","prepareTransformTransitionFrom","prepareShapeOrExtraTransitionFrom","fromEl","transFromStyleProps","fromElStyle","styleTransition","elTransition","animationStyleProps","styleKeys","prepareStyleTransitionFrom","allPropsFinal","applyPropsDirectly","applyMiscProps","enterFromProps_1","enterFrom","applyPropsTransition","updateLeaveTo","leaveToProps","leaveTo","applyLeaveTransition","tmpDuringScope","transitionDuringAPI","getShape","setExtra","getExtra","latestUserDuring","scopeUserDuring","mainAttr","attrOpt","transFromPropsInAttr","elPropsInAttr","attrTransition","elPropsInAttrKeys","isNonStyleTransitionEnabled","allPropsInAttr","keysInAttr","optVal","getStateToRestore","KEYFRAME_EXCLUDE_KEYS","stopPreviousKeyframeAnimationAndRestore","applyKeyframeAnimation","animationOpts","singleAnimationOpts","stateToRestore","targetPropName","kfValues","propKeys","savedTarget","EMPHASIS","BLUR","STATES","PATH_ITEM_STYLE","PATH_LABEL","DEFAULT_TRANSITION","GROUP_DIFF_PREFIX","attachedTxInfoTmp","prepareCustoms","radiusAxis","getRadiusAxis","angleAxis","getAngleAxis","dataToRadius","dataToAngle","rangeInfo","getRangeInfo","cellWidth","getCellHeight","dayCount","allDay","isDisplayable","CustomChartView","customSeries","renderItem","makeRenderItem","createOrUpdateItem","setIncrementalAndHoverLayer","elementName","createEl","graphicType","pathRect","getPathData","customPathData","customImagePath","customGraphicType","updateElNormal","attachedTxInfo","txCfgOpt","textOptionStyle","decalPattern","decalObj","__decalPattern","keyframeAnimation","updateElOnState","elStateOpt","elDisplayable","existingEmphasisState","updateZForEachState","retrieveStateOption","optZ2","currDataIndexInside","currItemModel","userAPI","userProps","getItemStyleModel","preFetchFromExtra","applyUserPropsAfter","ordinalRawValue","styleEmphasis","style_1","barLayout","widthAndOffsets","getLayoutOnAxis","currentSeriesIndices","dataInsideLength","wrapEncodeDef","currItemStyleModels","currLabelModels","seriesItemStyleModels","seriesLabelModels","existsEl","doCreateOrUpdateEl","toBeReplacedIdx","doesElNeedRecreate","sourceEl","morph","conOpt","isLegacy","processTxInfo","txConOptNormal","txConOptEmphasis","txConOptBlur","txConOptSelect","txConStlOptNormal","txConOptOtherState","retrieveStyleOptionOnState","doCreateOrUpdateAttachedTx","clipPathOpt","doCreateOrUpdateClipPath","otherStateOpt","mergeChildren","$mergeChildren","byName","diffChildrenByName","processAddUpdate","processRemove","removeChildFromGroup","elInner","elOptionType","elOptionShape","elOptionStyle","stateOpt","txConOpt","convertResult","txConOptNormal_1","stateOptionNormal","stateOption","childOption","BaseAxisPointer","_axisModel","_axisPointerModel","_lastValue","_lastStatus","_group","makeElOption","graphicKey","_lastGraphicKey","moveAnimation","_moveAnimation","determineAnimation","doUpdateProps","updatePointerEl","updateLabelEl","createPointerEl","createLabelEl","updateMandatoryProps","_renderHandle","useSnap","seriesDataCount","pointerOption","pointerEl","updateLabelShowHide","updateHandleTransform","handleModel","onmousemove","onmousedown","_onHandleDragMove","_onHandleDragEnd","_moveHandleToValue","getHandleTransProps","getHandleTransform","trans","_payloadInfo","lastProp","_doDispatchAxisPointer","payloadInfo","cursorPoint","tooltipOption","buildLabel","xDimIndex","propsEqual","lastProps","equals_1","buildElStyle","axisPointerType","buildLabelElOption","labelPos","getValueLabel","confineInContainer","seriesDataIndices","axisDimension","seriesData","idxItem","getTransformedPosition","buildCartesianSingleLabelElOption","makeLineShape","makeRectShape","makeSectorShape","CartesianAxisPointer","pixelValue","elStyle","pointerShapeBuilder","currPosition","cursorOtherValue","getAxisDimIndex","AxisPointerModel","triggerTooltip","triggerEmphasis","shadowStyle","useHandler","dis","pendings","showTip","hideTip","makeDispatchAction","actuallyPayload","showLen","hideLen","dispatchTooltipFinally","initialized","doEnter","initGlobalListeners","currTrigger","AxisPointerView","globalAxisPointerModel","globalTooltipModel","findPointFromSeries","isStacked","axisTrigger","illegalPoint","isIllegalPoint","inputAxesInfo","shouldHide","outputPayload","showValueMap","dataByCoordSys","updaters","coordSysMap","coordSysKey","coordSysContainsPoint","inputAxisInfo","findInputAxisInfo","processOnAxis","linkTriggers","tarAxisInfo","tarKey","linkGroup","srcAxisInfo","srcKey","srcValItem","mapper","makeMapperParam","outputAxesInfo","valItem","payloadBatch","updateModelActually","dataByAxis","dispatchTooltipActually","highDownKey","lastHighlights","newHighlights","toHighlight","toDownplay","dispatchHighDownActually","noSnap","outputFinder","involveSeries","snapToValue","seriesNestestValue","buildPayloadsBySeries","coordSysItem","coordSysId","coordSysIndex","coordSysMainType","valueLabelOpt","seriesInvolved","linksOption","linkGroups","axesInfoInCoordSys","baseTooltipModel","saveTooltipAxisInfo","triggerAxis","tooltipAxes","fromTooltip","axisPointerShow","tooltipAxisPointerModel","volatileOption","labelOption","tooltipAxisPointerLabelShow","makeAxisPointerModel","groupIndex","linkOption","getLinkGroupIndex","collectAxesInfo","seriesTooltipTrigger","seriesTooltipShow","collectSeriesInfo","collect","PolarAxisPointer","coordValue","axisAngle","getLabelPosition","PolarModel","foundAxisModel","PolarAxisModel","AngleAxisModel","RadiusAxisModel","RadiusAxis","radiusToData","AngleAxis","angleToData","polarDimensions","Polar","_radiusAxis","_angleAxis","maxAngle","updatePolarScale","setAxis","isAngleAxisModel","polarList","parsedRadius","resizePolar","getAxisLineShape","rExtent","getRadiusIdx","fixAngleOverlap","firstItem","lastItem","AngleAxisView","ticksAngles","minorTickAngles","angelAxisElementsBuilders","rId","r0Id","tickAngleItem","tickAngles","commonLabelModel","labelTextVerticalAlign","RadiusAxisView","newAxisGroup","layoutAxis","prevRadius","lastStackCoords","calRadialBar","clampLayout","radiusSpan","angleSpan","angleAxisExtraOption","radiusAxisExtraOption","PolarView","SingleAxisView","SingleAxisModel","SingleAxis","singleDimensions","Single","_axis","_adjustAxis","_updateAxisTransform","extentSum","singleModel","singles","XY","WH","SingleAxisPointer","getPointDimIndex","SingleView","mergeAndNormalizeLayoutParams","cellSizeArr","sizeCalculable","CalendarModel","getCellSize","firstDay","CalendarView","calendarModel","rangeData","localeModel","_renderDayRect","_renderLines","_renderYearText","_renderMonthText","_renderWeekText","itemRectStyleModel","sh","getNextNDay","tl","_tlpoints","_blpoints","_firstDayOfMonth","_firstDayPoints","addPoints","formatedDate","getDateInfo","_getLinePointsOfOneWeek","_drawSplitline","_getEdgesPoints","poyline","parsedDate","tmpD","_formatterLabel","_yearTextPositionControl","aligns","posPoints","yearText","_monthTextPositionControl","isCenter","termPoints","firstDayPoints","yyyy","monthText","_weekTextPositionControl","isStart","firstDayOfWeek","getFirstDayOfWeek","lweek","fweek","weekText","PROXIMATE_ONE_DAY","Calendar","_rangeInfo","_sw","_sh","_orient","_firstDayOfWeek","mStr","dStr","_lineWidth","_getRangeInfo","_initRangeOption","whNames","layoutParams","cellNumbers","cellSizeSpecified","whGlobal","calendarRect","dayInfo","nthWeek","pointToDate","bl","nthX","nthY","_getDateByWeeksAndDay","normalizedRange","rangeStr","reversed","startDateNum","endDateNum","dateNum","nthDay","calendarList","calendarSeries","isSetLoc","isSet","TRANSITION_PROPS_TO_COPY","ROOT_TRANSITION_PROPS_TO_COPY","copyTransitionInfo","GraphicComponentModel","existList","flattenedList","_flatten","elOptionsToUpdate","_elOptionsToUpdate","newElOption","existElOption","newElParentOption","parentOption","setKeyInfoToNewElOption","newElOptCopy","$action","mergeNewElOptionToExist","existItem","existingGroupOpt","newGroupOpt","setLayoutInfoToExist","optionList","useElOptionsToUpdate","nonShapeGraphicElements","GraphicComponentView","_elMap","graphicModel","_lastGraphicModel","_updateElements","_relocate","globalZ","globalZLevel","elExisting","targetElParent","textContentOption","elOptionCleaned","getCleanedElOption","isMerge","isReplace","el_1","updateCommonAttrs","removeEl","el_2","textContentExisting","clipPathOption","clipPathType","newEl","setEventData","elOptions","apiWidth","apiHeight","isParentRoot","parentElInner","layoutPos","layouted","bounding","animatePos","defaultZ","defaultZlevel","DATA_ZOOM_AXIS_DIMENSIONS","SERIES_COORDS","getAxisMainType","collectReferCoordSysModelInfo","dataZoomModel","coordSysInfoWrap","infoList","infoMap","eachTargetAxis","coordSysUid","DataZoomAxisInfo","indexList","axisCmptIdx","DataZoomModel","_autoThrottle","_noTarget","_rangePropMode","inputRawOption","retrieveRawOption","settledOption","_setDefaultThrottle","_updateRangeUse","_resetTarget","optionOrient","targetAxisIndexMap","_targetAxisInfoMap","_fillSpecifiedTargetAxis","_makeAutoOrientByTargetAxis","_fillAutoTargetAxisByOrient","hasAxisSpecified","refering","needAuto","setParallelAxis","gridModel_1","axModel","globalOption","rangePropMode","rangeModeInOption","percentSpecified","valueSpecified","noTarget","getFirstTargetAxisModel","firstAxisModel","getAxisProxy","getAxisModel","__dzAxisProxy","setRawRange","setCalculatedRange","getPercentRange","axisProxy","findRepresentativeAxisProxy","getDataPercentWindow","getValueRange","getDataValueWindow","firstProxy","axisDimList","hostedBy","getRangePropMode","filterMode","SelectDataZoomModel","DataZoomView","SelectDataZoomView","AxisProxy","_dimName","_axisIndex","_dataZoomModel","_valueWindow","_percentWindow","getTargetSeriesModels","coordType","isCoordSupported","axisMainType","getMinMaxSpan","_minMaxSpan","calculateDataWindow","hasPropModeValue","_dataExtent","percentExtent","percentWindow","valueWindow","boundPercent","boundValue","restrictSet","fromWindow","toWindow","fromExtent","toExtent","seriesExtent","unionAxisExtentFromData","calculateDataExtent","_updateMinMaxSpan","dataWindow","_setAxisModel","store_1","dataDimIndices_1","leftOut","rightOut","thisHasValue","thisLeftOut","thisRightOut","isInWindow","minMaxSpan","percentSpan","valueSpan","eachAxisModel","proxyList","seriesModelMap","percentRange","valueRange","installed","installCommon","foundNewLink","axisRecords","effectedModels","effectedModelMap","addToEffected","processSingle","isLink","axisIdxArr","isLinked","findEffectedDataZooms","installDataZoomAction","SelectZoomModel","SelectZoomView","ToolboxFeature","registerFeature","ToolboxModel","itemGap","showTitle","makeBackground","ToolboxView","toolboxModel","featureOpts","_features","featureNames","_featureNames","processFeature","__title","emphasisTextConfig","emphasisTextState","emphasisTextStyle","needPutOnTop","featureModel","newTitle","isUserFeatureName","isToolboxFeature","unusable","iconsMap","titlesMap","iconStyleModel","iconStyleEmphasisModel","getIcons","titles","iconPaths","hoverStyle","defaultTextPosition","createIconPaths","setIconStatus","iconStatus","SaveAsImage","$a","msSaveOrOpenBlob","base64Encoded","bstr","u8arr","INNER_STACK_KEYWORD","radioTypes","MagicType","availableIcons","seriesOptGenreator","radio","newSeriesOpt","currentType","isStack","BLOCK_SPLITER","ITEM_SPLITER","itemSplitRegex","viewMain","textarea","optionToContent","contentToOption","tables","seriesGroupByCategoryAxis","otherSeries","groupSeries","getContentFromModel","htmlOrDom","blockMetaList","buttonContainer","closeButton","refreshButton","isTSVFormat","tsv","tsvLines","parseTSVContents","blockMeta","hasName","parseListContents","parseContents","textareaColor","textareaBorderColor","buttonColor","buttonTextColor","tryMergeDataOption","shouldDeleteName","newSeriesOptList","getStoreSnapshots","snapshots","RestoreOption","INCLUDE_FINDER_MAIN_TYPES","BrushTargetManager","_targetInfoList","foundCpts","targetInfoBuilders","setOutputRanges","matchOutputRanges","coordRange","coordRanges","coordConvert","__rangeOffset","diffProcessor","xyMinMax","findTargetInfo","coordSyses","setInputRanges","xyMinMaxCurr","xyMinMaxOrigin","sizeCurr","sizeOrigin","scales","rangeOffset","makePanelOpts","getDefaultBrushType","getPanelRect","controlSeries","targetInfoList","areaPanelId","targetInfoMatchers","formatMinMax","xAxisModels","yAxisModels","gridModels","gridModelMap","xAxesHas","yAxesHas","panelRectBuilders","xAxisDeclared","yAxisDeclared","geoModels","axisConvert","rangeOrCoordRange","xminymin","xmaxymax","axisNameIndex","axisDiffProcessor","refer","DATA_ZOOM_ID_BASE","DataZoomFeature","zoomActive","_isZoomActive","dataZoomSelectActive","makeAxisFinder","updateZoomBtnStatus","updateBackBtnStatus","setBatch","newSnapshot","storedSnapshots","dataZoomId","_dispatchZoomAction","dzModel","findDataZoom","minValueSpan","maxValueSpan","nextActive","dzFeatureModel","xAxisId","yAxisId","featureDataZoomPath","dzOptions","finderResult","buildInternalOptions","axisIndexPropName","newOpt","$fromToolbox","TooltipModel","showContent","alwaysShowContent","confine","showDelay","hideDelay","enterable","shouldTooltipConfine","tooltipModel","confineOption","testStyle","styleProps","TRANSFORM_VENDOR","toCSSVendorPrefix","styleVendor","styleProp","CSS_TRANSITION_VENDOR","CSS_TRANSFORM_VENDOR","gCssText","assembleTransform","makeStyleCoord","appendToBody","zrPainter","zrViewportRoot","elFrom","elTarget","transformLocalCoord","viewportRootOffset","TooltipHTMLContent","_show","_styleCoord","_enterable","_alwaysShowContent","_firstShow","_longHide","_appendToBody","onmouseenter","_hideTimeout","_inContent","onmouseleave","hideLater","_hideDelay","_moveIfResized","nearPointColor","_longHideTimeout","styleCoord","enableTransition","onlyFade","transitionCurve","transitionOption","transitionText","assembleTransition","borderName","assembleFont","assembleCssText","arrowPosition","rotateDeg","arrowPos","positionStyle","transformStyle","rotateRadian","arrowWH","rotatedWH","borderStyle","SQRT2","assembleArrow","arrowEl","setEnterable","ratioX","ratioY","willChange","mathMaxWith0","calcShadowOuterSize","TooltipRichContent","shadowOuterSize","proxyRect","TooltipView","renderModeOption","_renderMode","_tooltipContent","_tooltipModel","tooltipContent","_initGlobalListener","_keepShow","_tryShow","_hide","_lastX","_lastY","_refreshUpdateTimeout","manuallyShowTip","_lastDataByCoordSys","_ticket","cmptRef","subEl","findComponentReference","positionDefault","_manuallyAxisShowTip","pointInfo","manuallyHideTip","buildTooltipModel","_showAxisTooltip","seriesDispatcher_1","cmptDispatcher_1","_showSeriesItemTooltip","_showComponentItemTooltip","_showOrMove","_showTimout","singleTooltipModel","cbParamsList","articleMarkup","markupTextArrLegacy","itemCoordSys","axisItem","axisValue","axisValueLabel","axisSectionMarkup","cbParams","seriesTooltipResult","positionExpr","builtMarkupText","blockBreak","allMarkupText","_updateContentNotChangedOnAxis","_updatePosition","_showTooltipContent","tooltipTrigger","asyncTicket","tooltipModelCascade","subTooltipModel","defaultHtml","_getNearestPoint","params0","cbTicket","tooltipDataParams","contentSize","boxLayoutPosition","domWidth","domHeight","rectWidth","rectHeight","calcTooltipPosition","gapH","gapV","refixTooltipPosition","isCenterAlign","confineTooltipPosition","lastCoordSys","lastCbParamsList","_cbParamsList","contentNotChanged","lastItemCoordSys","indexCoordSys","lastDataByAxis","thisDataByAxis","indexAxis","lastIndices","lastIdxItem","newIdxItem","lastCbParams","modelCascade","defaultTooltipOption","resultModel","DEFAULT_TOOLBOX_BTNS","brushPreprocessor","brushComponents","brushComponentSpecifiedBtns","brushOpt","tbs","toolboxFeature","toolboxBrush","brushTypes","removeDuplicate","hasKeys","createVisualMappings","stateList","supplementVisualOption","visualMappings","Creater","mappings","__hidden","visualData","mappingOption","__alphaForOpacity","replaceVisualOption","getLineSelectors","inLineRange","layoutRange","STATE_LIST","DISPATCH_METHOD","DISPATCH_FLAG","layoutCovers","brushModel","brushTargetManager","brushVisual","throttleDelay","brushSelected","setBrushOption","brushIndex","thisBrushSelected","brushId","brushName","brushLink","linkedSeriesMap","selectedDataIndexForLink","rangeInfoBySeries","hasBrushExists","boundingRectBuilders","selectableArea","makeBrushCommonSelectorForSeries","linkOthers","brushed","rangeInfoList","stepAParallel","brushModelNotControll","checkInRange","stepAOthers","seriesBrushSelected","getValueState","visualTypesMap","eachItem","valueOrIndex","rawDataItem","valueState","doDispatch","getBoundingRectFromMinMax","BrushView","$from","generateBrushOption","BrushModel","inBrush","outOfBrush","setAreas","BrushFeature","isBrushed","_brushMode","command","TitleModel","subtext","subtarget","TitleView","titleModel","subtextStyleModel","subText","subTextEl","sublink","groupRect","alignStyle","TimelineModel","_initData","setCurrentIndex","isIndexMax","setPlayState","autoPlay","getPlayState","processedDataArr","dataArr","_names","rewind","playInterval","SliderTimelineModel","checkpointStyle","showPlayBtn","showPrevBtn","showNextBtn","playIcon","stopIcon","nextIcon","prevIcon","prevBtnSize","nextBtnSize","TimelineView","TimelineAxis","labelDataIndexStore","SliderTimelineView","layoutInfo_1","mainGroup_1","_createGroup","axis_1","_createAxis","_renderAxisLabel","_doPlayStop","_updateTicksStatus","_clearTimer","parsedLabelPos","playPosition","prevBtnPosition","nextBtnPosition","labelPosOpt","labelAlignMap","labelBaselineMap","rotationMap","mainLength","controlModel","showControl","controlSize","controlGap","sizePlusGap","labelAlign","labelBaseline","mainGroup","_labelGroup","rotateOriginX","rotateOriginY","viewBound","getBound","mainBound","labelBound","mainPosition","labelsPosition","mainBoundIdx","targetGroup","toBound","boundIdx","_renderAxisLine","progressLine","_progressLine","_currentPointer","_renderAxisTick","_tickSymbols","hoverStyleModel","progressStyleModel","symbolOpt","_changeTimeline","giveSymbol","_tickLabels","hoverLabelModel","progressLabelModel","_renderControl","playState","makeBtn","willRotate","iconSize","btn","objPath","makeControlIcon","_handlePlayClick","_renderCurrentPointer","onCreate","_handlePointerDrag","_handlePointerDragend","pointerMoveTo","_pointerChangeTimeline","mousePos","toCoord","_toAxisCoord","targetDataIndex","_findNearestTick","_timer","axisCoord","tickSymbols","tickLabels","timelinePreprocessor","ec2Types","transferItem","compatibleEC2","itemStyleEmphasis","labelNormal","excludeLabelAttr","checkMarkerInSeries","seriesOptArr","fillLabel","MarkerModel","createdBySelf","hostSeries","__hostSeries","markerOpt","markerModel","createMarkerModelFromSeries","getMarkerModelFromSeries","MarkPointModel","masterMarkerModel","hasXOrY","markerTypeCalculatorWithExtent","otherDataDim","targetDataDim","otherCoordIndex","targetCoordIndex","coordArr","calcDataDim","numCalculate","coordArrValue","markerTypeCalculator","hasXAndY","coordInfo","baseDataDim","valueDataDim","dataDimToCoordDim","createMarkerDimValueGetter","inCoordSys","sum_1","count_1","MarkerView","markerGroupMap","markKeep","drawGroup","seriesModelList","updateMarkerLayout","xPx","yPx","MarkPointView","markPointModel","mpModel","symbolDrawMap","coordDimsInfos","dataOpt","createData","MarkLineModel","markLineTransform","mlModel","itemArray","mlType","mlFrom","mlTo","normalizedItem","isInfinity","ifMarkLineHasOnlyDim","fromCoord","otherDimIndex","markLineFilter","updateSingleMarkerEndLayout","MarkLineView","markLineModel","mlData_1","fromData_1","toData_1","lineDrawMap","fromData","optData","updateDataVisualAndLayout","fromSymbolKeepAspect","fromSymbolOffset","fromSymbolRotate","fromSymbolSize","toSymbolKeepAspect","toSymbolOffset","toSymbolRotate","toSymbolSize","MarkAreaModel","markAreaTransform","maModel","ltCoord","rbCoord","ifMarkAreaHasOnlyDim","markAreaFilter","item2","getSingleMarkerEndPoint","pointValue0","pointValue1","clampPointValue0","clampPointValue1","pointValue","dimPermutations","MarkAreaView","markAreaModel","areaData_1","areaGroupMap","polygonGroup","coordDimsInfos_1","xPointExtent","yPointExtent","LegendModel","_updateSelector","getDefaultSelectorOptions","_updateData","hasSelected","potentialData","availableNames","isPotential","_availableNames","legendNameMap","allSelect","inverseSelect","inactiveColor","inactiveBorderColor","inactiveBorderWidth","borderCap","borderMiterLimit","inactiveWidth","dashOffset","selectorLabel","selectorPosition","selectorItemGap","selectorButtonGap","LegendView","newlineDisabled","_contentGroup","_selectorGroup","_isFirstRender","getContentGroup","getSelectorGroup","legendModel","isFirstRender","resetInner","itemAlign","renderInner","mainRect","layoutInner","_backgroundEl","legendDrawnMap","selectMode","legendItemModel","lineVisualStyle","_createItem","dispatchSelectAction","dispatchHighlightAction","dispatchDownplayAction","_createSelector","selectorGroup","selectorItem","itemVisualStyle","symboType","drawType","legendIconType","handleCommonProps","propVal","iconBrushType","decalStyle","legendLineModel","visualHasBorder","getLegendStyle","hitRect","__legendDataIndex","contentPos","selectorRect","selectorPos","orientIdx","hw","isUseHoverLayer","legendFilter","legendSelectActionHandler","isToggleSelect","isItemSelected","installLegendAction","ScrollableLegendModel","setScrollDataIndex","scrollDataIndex","pageButtonItemGap","pageButtonGap","pageButtonPosition","pageFormatter","pageIcons","pageIconColor","pageIconInactiveColor","pageIconSize","pageTextStyle","ScrollableLegendView","_currentIndex","_controllerGroup","__rectSize","controllerGroup","pageIconSizeArr","createPageButton","pageTextStyleModel","iconIdx","pageDataIndexName","_pageGo","processMaxSize","_layoutContentAndController","controllerRect","showController","_showController","containerPos","controllerPos","pageInfo","_getPageInfo","contentPosition","_updatePageInfoView","legendId","canJump","pageText","pageCount","containerRectSize","targetItemIndex","_findTargetItemIndex","targetItem","itemCount","pCount","pagePrevDataIndex","pageNextDataIndex","targetItemInfo","getItemInfo","winStartItemInfo","winEndItemInfo","currItemInfo","itemRect","itemInfo","winStart","legendDataIdx","installScrollableLegendAction","InsideZoomModel","zoomLock","disposeCoordSysRecord","coordSysRecordMap","coordSysRecord","InsideZoomView","dzInfo","dataZoomInfoMap","getRangeHandlers","scrollMove","coordSysKeyArr","dzUid","directionInfo","getDirectionInfo","percentPoint","pixelStart","pixelLength","makeMover","getPercentDelta","oldPoint","newPoint","apiInner","dzCoordSysInfo","dzReferCoordSysInfo","createCoordSysRecord","firstDzInfo","firstDzKey","controllerParams","typePriority","dataZoomInfo","oneType","mergeControllerParams","installDataZoomRoamProcessor","SliderZoomModel","handleIcon","moveHandleSize","moveHandleIcon","showDetail","showDataShadow","brushSelect","HORIZONTAL","VERTICAL","SHOW_DATA_SHADOW_SERIES_TYPE","REALTIME_ANIMATION_CONFIG","SliderZoomView","_onBrushEnd","_buildView","_updateView","_brushing","_resetLocation","_resetInterval","sliderGroup","_renderDataShadow","_positionGroup","coordRect","_findCoordRect","_location","_size","targetAxisModel","otherAxisInverse","_dataShadowInfo","_getViewExtent","clickPanel","_onClickPanel","_onBrushStart","_prepareDataShadowInfo","dataShadowSegs","_shadowSize","candlestickDim","polygonPts","_shadowPolygonPts","polylinePts","_shadowPolylinePts","_shadowData","_shadowDim","otherDataExtent_1","otherOffset","lastIsEmpty_1","otherShadowExtent_1","thisShadowExtent","areaPoints_1","linePoints_1","step_1","thisCoord_1","stride_1","otherCoord","createDataShadowGroup","isSelectedArea","thisAxis","thisDim","handleLabels","filler","_onDragMove","_onDragEnd","onmouseover","_showDataInfo","onmouseout","bRect","_handleHeight","_handleWidth","handleColor","actualMoveZone","moveHandleHeight","moveHandle_1","moveHandle","moveZoneExpandSize","moveZone","ondragstart","viewExtent","_handleEnds","_updateInterval","viewExtend","nonRealtime","displaybles","handleInterval","handleHeight","segIntervals","segGroup","_updateDataInfo","dataInterval","_formatLabel","orderedHandleEnds","barTransform","textPoint","labelPrecision","valueStr","showOrHide","localPoint","_brushStart","_brushStartTime","brushShape","_updateBrushRect","brushStart","endPoint","coordSysInfoList","visualDefault","VisualMapModel","replacableOptionKeys","dataBound","controllerVisuals","resetItemSize","completeVisualOption","resetVisual","getItemSymbol","getTargetSeriesIndices","optionSeriesIndex","isTargetSeries","formatValueText","edgeSymbols","isMinMax","resetExtent","getDataDimensionIndex","optDim","completeSingle","stateExist","stateAbsent","optExist","optAbsent","defa","symbolExists","symbolSizeExists","max_1","getVisualMeta","getColorVisual","contentColor","textGap","DEFAULT_BAR_BOUND","ContinuousModel","_resetRange","auto","findTargetDataIndices","oVals","getColorStopValues","iVals","setStop","iIdx","oIdx","iLen","oLen","stopsLen","calculable","hoverLink","indicatorIcon","indicatorSize","indicatorStyle","stopValues","VisualMapView","autoPositionValues","doRender","getControllerVisual","visualCluster","forceState","visualObj","visualMapping","convertOpacityToAlpha","positionGroup","paramsSet","getItemAlign","modelOption","realIndex","reals","fakeValue","layoutInput","rParam","makeHighDownBatch","ContinuousView","_shapes","_dataInterval","_hoverLinkDataIndices","_useHandle","_renderBar","dataRangeText","_renderEndsText","_enableHoverLinkToSeries","_enableHoverLinkFromSeries","endsIndex","_createBarGroup","gradientBarGroup","createPolygon","_dragHandle","handleThumbs","handleLabelPoints","_createIndicator","onDrift","handleThumb","handleLabel","handleLabelPoint","indicatorLabel","indicatorLabelPoint","_firstShowIndicator","_hideIndicator","visualMapId","_hovering","_clearHoverLinkToSeries","useHoverLinkOnHandle","_doHoverLinkToSeries","forSketch","outOfRangeHandleEnds","inRangeHandleEnds","visualInRange","_createBarVisual","visualOutOfRange","barColor","barPoints","_updateHandle","_makeColorGradient","symbolSizes","_createBarPoints","handlesColor","_showIndicator","cursorValue","rangeSymbol","halfHoverLinkSize","oldIndicatorPos","indicatorNewProps","labelNewProps","_hoverLinkFromSeriesMouseOver","_clearHoverLinkFromSeries","cursorPos","hoverOnBar","HOVER_LINK_SIZE","hoverLinkDataSize","getHalfHoverLinkSize","hoverRange","oldBatch","newBatch","resultBatches","batchA","batchB","mapA","mapB","makeMap","mapToArray","sourceBatch","otherMap","otherDataIndices","isData","_dispatchHighDown","currECData","hoverLinkOnHandle","visualMapActionInfo","visualMapActionHander","visualMapEncodingHandlers","resultVisual","visualMapPreprocessor","pieces","splitList","PiecewiseModel","_pieceList","_determineMode","resetMethods","_resetSelected","visualTypesInPieces","getSelectedMapKey","hasSel_1","getRepresentValue","representValue","pieceInterval","minOpen","maxOpen","itemSymbol","outPieceList","splitStep","normalizeReverse","pieceListItem","closeList","infinityList","useMinMax","PiecewiseVisualMapView","_getItemAlign","viewData","_getViewData","endsText","viewPieceList","_onItemClick","_enableHoverLink","indexInModelPieceList","_createItemSymbol","visualState","onHoverLink","shapeParam","PiecewiseView","DEFAULT_OPTION","ariaVisual","ariaModel","paletteScopeGroupByType_1","decalScope","paletteDecal","specifiedDecal","mergeDecal","dataAll_1","idxMap_1","decalScope_1","dataCount_1","resultDecal","setDecal","labelLocale","seriesCnt","maxDataCnt","maxSeriesCnt","displaySeriesCnt","seriesLabels_1","seriesLabel","displayCnt","middleSeparator_1","endSeparator_1","dataLabels","dataLabel","separatorModel","middleSeparator","endSeparator","keyValues","ariaPreprocessor","RELATIONAL_EXPRESSION_OP_ALIAS_MAP","RegExpEvaluator","rVal","_condVal","lVal","ConstConditionInternal","AndConditionInternal","OrConditionInternal","NotConditionInternal","RelationalConditionInternal","needParse","tarValRaw","valueGetterParam","tarValParsed","subCondList","parseOption","exprOption","isObjectNotArray","parseAndOrOption","parseNotOption","prepareGetValue","exprKeys","parserName","keyRaw","valueGetterAttrMap","condValueRaw","condValueParsed","evaluator","parseRelationalOption","subOptionArr","ConditionalExpressionParsed","_cond","filterTransform","sortTransform","orderExprList","orderDefList","orderExpr","orderDef","DatasetModel","_sourceManager","DatasetView","aroundEqual","pathToBezierCurves","currentSubpath","bezierArrayGroups","createNewSubpath","addLine","addArc","s1","s2","adpativeBezier","PIXEL_DISTANCE","PIXEL_DISTANCE_SQR","cp1LenSqr","cp2LenSqr","projLen1","projLen2","tmpSegX","tmpSegY","getDividingGrids","rowDim","columnSize","divideSector","outShapes","arcLen","isAngleRow","newShape","projPtOnLine","lineA","lineB","addToPoly","binaryDividePolygon","polygonShape","intersectionPt","projPt","splitPt0","splitPt1","splitPt0Arr","splitPt1Arr","newPolyA","newPolyB","splitPolygonByLine","binaryDivideRecursive","copyPathProps","alignSubpath","subpath1","subpath2","shorterPath","shorterBezierCount","eachCurveSubDivCount","newSubpath","actualSubDivCount","createSubpath","lastSubpathSubpath","otherSubpath","lastY","findBestRingOffset","fromSubBeziers","toSubBeziers","fromCp","toCp","bezierCount","bestScore","bestOffset","cursorOffset","isCombineMorphing","__isCombineMorphing","SAVED_METHOD_PREFIX","saveAndModifyMethod","modifiers","savedMethodName","restoreMethod","applyTransformOnBeziers","bezierCurves","mm","subBeziers","prepareMorphPath","fromPath","toPath","fromPathProxy","toPathProxy","lastSubpath1","lastSubpath2","newArray1","newArray2","newSubpath1","newSubpath2","alignBezierCurves","fromBezierCurves","toBezierCurves","fromPathTransform","toPathTransform","morphingData","fromArr","searchAngleIteration","searchAngleRange","fromNeedsReverse","fromSubpathBezier","toSubpathBezier","newFromSubpathBezier","newToSubpathBezier","bestAngle","newX1","newY1","findBestMorphingRotation","__morphT","newCp","x0_1","y0_1","morphPath","oldDone","oldDuring","hilbert","sortPaths","defaultDividePath","OutShapeCtor","isHorizontalRow","rowSizeDim","columnSizeDim","columnDim","divideRect","beziers","pathToPolygons","polygonConvert","polygonCount","totalArea_1","selfCount","isMultiple","prepareMorphBatches","many","batches","moveFrom","pathDividers","approxOpacity","applyMorphAnimation","animateOtherProps","updateAnimationCfg","animationDelay","fromIsMany","morphBatches","animateCount","animateIndex","morphOneBatch","forceManyOne","batchMany","batchOne","separateAnimationCfg","dividePath","individualDelay","fromList","fromPathList","addFromPath","separateCount","fromIndividuals","toIndividuals","toSubPathList","addToSubPathListToZr","restoreToPath","toLen","animating_1","eachDone","indivdualAnimationOpts","combineMorph","toPathList","fromLen","separateMorph","individualAnimationCfg","batchFrom","batchTo","getPathList","pathList_1","DATA_COUNT_THRESHOLD","getUniversalTransitionGlobalStore","flattenDataDiffItems","groupDim","itemGroupId","getGroupIdDimension","dataGroupId","fadeInElement","transitionBetween","oldDiffItems","newDiffItems","updateMorphingPathProps","rawFrom","rawTo","findKeyDim","oldKeyDim","newKeyDim","hasMorphAnimation","createKeyGetter","isOld","onlyGetId","keyDim","dimOrdinalMeta","itemVal","useId","oldItem","isAllIdSame","isElementStillInChart","updateOneToOne","getOldStyle","animateElementStyles","oldIndices","oldElsList","newElsList","newSeris","getSeriesTransitionKey","convertArraySeriesKeyToString","seriesKey","getDivideShapeFromData","querySeries","curValue","RadarSeries","TreeSeries","installTreeAction","treemapVisual","treemapLayout","originViewRoot","installTreemapAction","GraphSeries","GaugeSeries","FunnelSeries","ParallelSeries","SankeySeries","BoxplotSeries","CandlestickSeries","EffectScatterSeries","LinesSeries","HeatmapSeries","PictorialBarSeries","ThemeRiverSeries","SunburstSeries","installSunburstAction","CustomSeries","graphicOption","graphic","DataZoom","Restore","Brush","installTimelineAction","ecMOdel","transOpt","globalStore","oldSeries","oldDataGroupIds","transitionSeriesFromOpt","updateBatches_1","updateBatches","oldDataMap","oldDataMapForSplit","oldDataGroupId","transitionKey","transitionKeyStr","newDataGroupId","oldSeries_1","oldData_1","findTransitionSeriesBatches","savedSeries","savedDataGroupIds","savedData","EE","emitter","_eventsCount","clearEvent","EventEmitter","listenerCount","a4","a5","prefixed","canUseDOM","ExecutionEnvironment","canUseWorkers","canUseEventListeners","attachEvent","canUseViewport","XMLParser","XMLBuilder","XMLValidator","nameStartChar","nameRegexp","regexName","isExist","arrayMode","isName","getAllMatches","allmatches","util","unpairedTags","isWhiteSpace","readPI","xmlData","tagname","getErrorObject","getLineNumberForPosition","readCommentAndCDATA","angleBracketsCount","tagFound","reachedRoot","tagStartPos","closingTag","readAttributeStr","attrStr","attrStrStart","validateAttributeString","tagClosed","otg","openPos","afterAmp","validateAmpersand","doubleQuote","singleQuote","startChar","validAttrStrRegxp","attrNames","getPositionFromMatch","validateAttrName","validateNumberAmpersand","buildFromOrderedJs","attributesGroupName","cdataPropName","indentBy","suppressEmptyNode","suppressUnpairedNode","suppressBooleanAttributes","tagValueProcessor","attributeValueProcessor","preserveOrder","commentPropName","entities","processEntities","stopNodes","oneListGroup","Builder","attrPrefixLen","processTextOrObjNode","indentate","tagEndChar","j2x","buildTextValNode","buildObjectNode","jObj","arrayNodeName","buildAttrPairStr","newval","replaceEntitiesValue","arrLen","listTagVal","Ks","closeTag","tagEndExp","piClosingChar","arrToStr","jPath","indentation","xmlStr","isPreviousElementTag","tagObj","newJPath","tagText","isStopNode","attStr","attr_to_str","tempInd","piTextNodeName","newIdentation","tagStart","tagValue","attrMap","attrVal","jArray","readEntityExp","entityName","isComment","isEntity","isElement","isAttlist","isNotation","validateEntityName","hasBody","regx","parseTagValue","parseAttributeValue","trimValues","numberParseOptions","leadingZeros","eNotation","alwaysCreateTextNode","htmlEntities","ignorePiTags","transformTagName","transformAttributeName","updateTag","buildOptions","readDocType","addExternalEntities","externalEntities","entKeys","ent","lastEntities","parseTextData","dontTrim","hasAttributes","escapeEntities","resolveNameSpace","attrsRegx","buildAttributesMap","oldVal","aName","attrCollection","parseXml","xmlObj","textData","closeIndex","findClosingIndex","colonIndex","saveTextToParentTag","lastTagName","tagsNodeStack","tagData","readTagExp","tagExp","attrExpPresent","docTypeEntities","rawTagName","lastTag","isItStopNode","tagContent","readStopNodeData","ampEntity","currentTagName","allNodesExp","stopNodePath","stopNodeExp","closingIndex","closingChar","attrBoundary","tagExpWithClosingIndex","separatorIndex","trimStart","openTagCount","shouldParse","OrderedObjParser","prettify","validationOption","orderedObjParser","orderedResult","addEntity","compressedObj","newJpath","isLeafTag","assignAttributes","atrrName","propCount","getTag","MISSING_KEY_PROPERTY","INVALID_KEY_WEIGHT_VALUE","KeyStore","_keys","_keyMap","totalWeight","keyId","getFn","createKeyPath","createKeyId","Config","isCaseSensitive","includeScore","shouldSort","sortFn","includeMatches","findAllMatches","minMatchCharLength","useExtendedSearch","deepGet","isObjectLike","baseToString","ignoreLocation","ignoreFieldNorm","fieldNormWeight","FuseIndex","mantissa","numTokens","isCreated","setIndexRecords","setSources","docs","setKeys","_keysMap","docIndex","_addString","_addObject","removeAt","getValueForItemAtKeyId","subRecords","nestedArrIndex","subRecord","createIndex","myIndex","computeScore$1","expectedLocation","accuracy","proximity","MAX_BITS","createPatternAlphabet","BitapSearch","addChunk","alphabet","searchIn","isMatch","totalScore","hasMatches","patternAlphabet","patternLen","textLen","currentThreshold","bestLocation","computeMatches","matchMask","lastBitArr","finalScore","binMax","binMin","binMid","bitArr","charMatch","matchmask","convertMaskToIndices","BaseMatch","isMultiMatch","getMatch","multiRegex","isSingleMatch","singleRegex","FuzzyMatch","_bitapSearch","IncludeMatch","searchers","searchersLen","SPACE_RE","MultiMatchSet","registeredSearchers","createSearcher","searcherClass","LogicalOperator","KeyType","isExpression","convertToExplicit","isQueryPath","LOGICAL_SEARCH_INVALID_QUERY_FOR_KEY","searcher","transformMatches","refIndex","transformScore","Fuse","_keyStore","setCollection","_docs","_myIndex","_searchStringList","_searchObjectList","_searchLogical","transformers","_findMatches","resultMap","expResults","parseIndex","parseQuery","queryItem","numMatches","qLen","rbush","geojsonRbush","toBBox","collides","fromJSON","ARRAY_TYPE","hypot","a01","a02","a12","a10","a11","a20","a21","a22","b01","b11","b21","b02","b10","b12","b20","b22","fromQuat","zx","zy","zz","wz","a03","a13","a23","a30","a31","a33","b03","b04","b05","b06","b07","b08","b09","getScaling","rl","tb","nf","eyex","eyey","eyez","upx","upy","upz","centerx","centery","centerz","a6","a7","a8","a9","a14","a15","b4","b6","b7","b8","b9","b13","b14","b15","transformMat2","transformMat2d","transformMat3","transformMat4","fromValues","transformQuat","qz","qw","uvx","uvy","uvz","uuvx","uuvy","uuvz","cosine","sqrLen","ix","iy","iz","iw","libh3","moduleOverrides","readAsync","arguments_","scriptDirectory","currentScript","tryParseAsDataURI","tempRet0","getTempRet0","ABORT","getCFunc","ident","HEAP8","HEAPU8","HEAP16","HEAP32","HEAPF64","UTF8Decoder","UTF8ToString","maxBytesToRead","u8Array","endPtr","u0","UTF8ArrayToString","alignUp","updateGlobalBufferAndViews","buf","INITIAL_TOTAL_MEMORY","callRuntimeCallbacks","DYNAMICTOP_PTR","__ATPRERUN__","__ATINIT__","__ATMAIN__","__ATPOSTRUN__","Math_abs","Math_ceil","Math_floor","Math_min","runDependencies","runDependencyWatcher","dependenciesFulfilled","tempDouble","tempI64","memoryInitializer","dataURIPrefix","isDataURI","demangleAll","jsStackTrace","_emscripten_get_heap_size","emscripten_realloc_buffer","newBuffer","_emscripten_replace_memory","decodeBase64","chr1","chr2","chr3","enc2","enc3","enc4","decoded","intArrayFromBase64","calledRun","asm","imul","hd","Fb","bd","cd","Lb","Rb","Nb","Pb","Mb","za","Sb","Vb","Wb","jb","ed","Ba","Da","Ha","Ja","Ka","La","Ma","Qa","Ra","Ua","Va","Wa","gb","bb","db","eb","hb","sb","Ab","Bb","Cb","Eb","Ob","Ya","Qb","Tb","Ub","$b","qa","jd","fd","gd","___uremdi3","_bitshift64Lshr","_bitshift64Shl","_calloc","_cellAreaKm2","_cellAreaM2","_cellAreaRads2","_compact","_destroyLinkedPolygon","_edgeLengthKm","_edgeLengthM","_exactEdgeLengthKm","_exactEdgeLengthM","_exactEdgeLengthRads","_experimentalH3ToLocalIj","_experimentalLocalIjToH3","_geoToH3","_getDestinationH3IndexFromUnidirectionalEdge","_getH3IndexesFromUnidirectionalEdge","_getH3UnidirectionalEdge","_getH3UnidirectionalEdgeBoundary","_getH3UnidirectionalEdgesFromHexagon","_getOriginH3IndexFromUnidirectionalEdge","_getPentagonIndexes","_getRes0Indexes","_h3Distance","_h3GetBaseCell","_h3GetFaces","Yb","_h3GetResolution","_h3IndexesAreNeighbors","_h3IsPentagon","_h3IsResClassIII","_h3IsValid","_h3Line","_h3LineSize","_h3SetToLinkedGeo","_h3ToCenterChild","_h3ToChildren","_h3ToGeo","_h3ToGeoBoundary","_h3ToParent","_h3UnidirectionalEdgeIsValid","_hexAreaKm2","_hexAreaM2","_hexRing","_i64Subtract","_kRing","_kRingDistances","_llvm_minnum_f64","_llvm_round_f64","_maxFaceCount","_maxH3ToChildrenSize","_maxKringSize","_maxPolyfillSize","_maxUncompactSize","_memcpy","_memset","_numHexagons","_pentagonIndexCount","_pointDistKm","_pointDistM","_pointDistRads","_polyfill","_res0IndexCount","_round","_sbrk","_sizeOfCoordIJ","_sizeOfGeoBoundary","_sizeOfGeoCoord","_sizeOfGeoPolygon","_sizeOfGeofence","_sizeOfH3Index","_sizeOfLinkedGeoPolygon","_uncompact","establishStackSpace","stackAlloc","stackRestore","stackSave","requestedSize","PAGE_MULTIPLE","LIMIT","js","returnType","argTypes","numericArgs","toC","outPtr","maxBytesToWrite","outU8Array","outIdx","stringToUTF8Array","stringToUTF8","writeArrayToMemory","cArgs","converter","convertReturnValue","ccall","noSafe","applyMemoryInitializer","removeRunDependency","doBrowserLoad","memoryInitializerBytes","useRequest","doRun","postRun","preRun","what","runCaller","cwrap","BASE_16","SZ_INT","SZ_PTR","SZ_DBL","SZ_H3INDEX","sizeOfH3Index","SZ_GEOCOORD","sizeOfGeoCoord","SZ_GEOBOUNDARY","sizeOfGeoBoundary","SZ_GEOPOLYGON","sizeOfGeoPolygon","SZ_GEOFENCE","sizeOfGeofence","SZ_LINKED_GEOPOLYGON","sizeOfLinkedGeoPolygon","SZ_COORDIJ","sizeOfCoordIJ","UNITS","km","km2","rads","rads2","validateRes","INVALID_HEXIDECIMAL_CHAR","h3IndexToSplitLong","h3Index","upper","hexFrom32Bit","tempStr","zeroPad","splitLongToh3Index","lower","fullLen","numStr","numZeroes","outStr","polygonArrayToGeofence","polygonArray","geofence","isGeoJson","geoCoordArray","latIndex","lngIndex","degsToRads","HEAPU32","readLong","invocation","readH3Index","readH3IndexFromPointer","cAddress","storeH3Index","readArrayOfHexagons","storeArrayOfHexagons","storeGeoCoord","readSingleCoord","radsToDegs","readGeoCoord","readGeoCoordGeoJson","readGeoBoundary","geoBoundary","geoJsonCoords","closedLoop","vertsPos","readCoord","h3IsValid","h3IsResClassIII","h3GetBaseCell","h3GetFaces","maxFaceCount","readArrayOfPositiveIntegers","formatAsGeoJson","h3ToParent","h3ToChildren","maxH3ToChildrenSize","h3ToCenterChild","kRing","ringSize","maxKringSize","kRingDistances","kRings","distances","i$1","hexLower","hexUpper","hexRing","geoPolygon","numHoles","numHolesOffset","holesOffset","coordinatesToGeoPolygon","arrayLen","maxPolyfillSize","geofenceArrayOffset","destroyGeoPolygon","h3Indexes","originalPolygon","h3SetToLinkedGeo","loops","readMultiPolygon","destroyLinkedPolygon","compact","h3Set","compactedSet","uncompact","maxUncompactedNum","maxUncompactSize","uncompactedSet","h3IndexesAreNeighbors","oLower","oUpper","ref$1","dLower","dUpper","getH3UnidirectionalEdge","getOriginH3IndexFromUnidirectionalEdge","getDestinationH3IndexFromUnidirectionalEdge","h3UnidirectionalEdgeIsValid","getH3IndexesFromUnidirectionalEdge","getH3UnidirectionalEdgesFromHexagon","getH3UnidirectionalEdgeBoundary","h3Line","h3LineSize","experimentalH3ToLocalIj","retVal","experimentalLocalIjToH3","pointDist","latlng1","latlng2","pointDistM","pointDistKm","pointDistRads","cellArea","cellAreaM2","cellAreaKm2","cellAreaRads2","exactEdgeLength","exactEdgeLengthM","exactEdgeLengthKm","exactEdgeLengthRads","hexArea","hexAreaM2","hexAreaKm2","edgeLengthM","edgeLengthKm","numHexagons","getRes0Indexes","res0IndexCount","getPentagonIndexes","pentagonIndexCount","exportName","VENDOR_PREFIXES","TEST_ELEMENT","TYPE_FUNCTION","setTimeoutContext","bindFn","invokeArrayArg","deprecate","deprecationMessage","nextKey","childP","baseP","boolOrFn","ifUndefined","splitStr","inStr","inArray","findByKey","uniqueArray","camelProp","_uniqueId","getWindowForElement","SUPPORT_TOUCH","SUPPORT_POINTER_EVENTS","SUPPORT_ONLY_TOUCH","INPUT_TYPE_TOUCH","INPUT_TYPE_MOUSE","COMPUTE_INTERVAL","INPUT_START","INPUT_END","INPUT_CANCEL","DIRECTION_NONE","DIRECTION_LEFT","DIRECTION_RIGHT","DIRECTION_UP","DIRECTION_DOWN","DIRECTION_HORIZONTAL","DIRECTION_VERTICAL","DIRECTION_ALL","PROPS_XY","PROPS_CLIENT_XY","Input","manager","inputTarget","domHandler","inputHandler","pointersLen","pointers","changedPointersLen","changedPointers","isFinal","pointersLength","simpleCloneInputData","firstMultiple","offsetDelta","prevDelta","prevInput","computeDeltaXY","offsetDirection","overallVelocity","getVelocity","overallVelocityX","overallVelocityY","maxPointers","lastInterval","computeIntervalInputData","computeInputData","evEl","evTarget","evWin","MOUSE_INPUT_MAP","MOUSE_ELEMENT_EVENTS","MOUSE_WINDOW_EVENTS","MouseInput","pressed","POINTER_INPUT_MAP","pointercancel","IE10_POINTER_TYPE_ENUM","POINTER_ELEMENT_EVENTS","POINTER_WINDOW_EVENTS","PointerEventInput","MSPointerEvent","PointerEvent","removePointer","eventTypeNormalized","isTouch","pointerId","SINGLE_TOUCH_INPUT_MAP","touchcancel","SingleTouchInput","normalizeSingleTouches","TOUCH_INPUT_MAP","TOUCH_TARGET_EVENTS","TouchInput","targetIds","getTouches","allTouches","changedTargetTouches","DEDUP_TIMEOUT","TouchMouseInput","primaryTouch","lastTouches","recordTouches","setLastTouch","lts","isSyntheticEvent","inputEvent","inputData","isMouse","sourceCapabilities","firesTouchEvents","PREFIXED_TOUCH_ACTION","NATIVE_TOUCH_ACTION","TOUCH_ACTION_COMPUTE","TOUCH_ACTION_AUTO","TOUCH_ACTION_MANIPULATION","TOUCH_ACTION_NONE","TOUCH_ACTION_PAN_X","TOUCH_ACTION_PAN_Y","TOUCH_ACTION_MAP","touchMap","cssSupports","getTouchActionProps","TouchAction","recognizer","getTouchAction","hasPanX","hasPanY","cleanTouchActions","preventDefaults","prevented","hasNone","isTapPointer","isTapMovement","isTapTouchTime","preventSrc","STATE_POSSIBLE","Recognizer","simultaneous","requireFail","stateStr","directionStr","getRecognizerByNameIfManager","otherRecognizer","AttrRecognizer","PanRecognizer","pX","pY","PinchRecognizer","PressRecognizer","_input","RotateRecognizer","SwipeRecognizer","TapRecognizer","pTime","pCenter","Hammer","preset","Manager","oldCssProps","inputClass","toggleCssProps","recognizeWith","requireFailure","cssProps","dropRecognizeWith","dropRequireFailure","hasRequireFailures","canRecognizeWith","additionalEvent","tryEmit","canEmit","inputDataClone","attrTest","optionPointers","isRecognized","directionTest","hasMoved","inOut","validPointers","validMovement","validTime","taps","posThreshold","validTouchTime","failTimeout","validInterval","validMultiTap","touchSelect","touchCallout","contentZooming","userDrag","tapHighlightColor","curRecognizer","gesture","triggerDomEvent","INPUT_MOVE","STATE_BEGAN","STATE_CHANGED","STATE_ENDED","STATE_RECOGNIZED","STATE_CANCELLED","Tap","Pan","Swipe","Pinch","Press","reactIs","REACT_STATICS","childContextTypes","contextType","contextTypes","getDerivedStateFromError","getDerivedStateFromProps","KNOWN_STATICS","caller","MEMO_STATICS","TYPE_STATICS","getStatics","isMemo","ForwardRef","Memo","objectPrototype","hoistNonReactStatics","targetComponent","sourceComponent","blacklist","inheritedComponent","targetStatics","sourceStatics","isLE","mLen","nBytes","eLen","eMax","eBias","nBits","csv","fieldName","msSaveBlob","FUNC_ERROR_TEXT","NAN","symbolTag","reTrim","reIsBadHex","reIsBinary","reIsOctal","freeParseInt","freeGlobal","freeSelf","objectToString","nativeMax","nativeMin","isSymbol","lastArgs","lastThis","maxWait","lastCallTime","lastInvokeTime","maxing","invokeFunc","shouldInvoke","timeSinceLastCall","timerExpired","trailingEdge","remainingWait","debounced","isInvoking","leadingEdge","getNative","hashClear","hashDelete","hashGet","hashHas","hashSet","Hash","listCacheClear","listCacheDelete","listCacheHas","ListCache","mapCacheClear","mapCacheDelete","mapCacheGet","mapCacheHas","mapCacheSet","MapCache","setCacheAdd","setCacheHas","SetCache","__data__","stackClear","stackDelete","stackGet","stackHas","stackSet","Stack","iteratee","resIndex","baseIndexOf","baseTimes","isArguments","isIndex","inherited","isArg","isBuff","skipIndexes","baseAssignValue","objValue","copyObject","keysIn","arrayEach","baseAssign","baseAssignIn","cloneBuffer","copyArray","copySymbols","copySymbolsIn","getAllKeys","getAllKeysIn","initCloneArray","initCloneByTag","initCloneObject","argsTag","funcTag","objectTag","cloneableTags","baseClone","bitmask","customizer","isDeep","isFlat","isFunc","subValue","objectCreate","baseCreate","arrayIncludes","arrayIncludesWith","arrayMap","baseUnary","cacheHas","isCommon","valuesLength","computed","valuesIndex","baseForOwn","baseEach","createBaseEach","fromRight","arrayPush","isFlattenable","baseFlatten","isStrict","baseFor","createBaseFor","castPath","keysFunc","symbolsFunc","getRawTag","symToStringTag","baseFindIndex","baseIsNaN","strictIndexOf","othLength","othIndex","caches","baseGetTag","baseIsEqualDeep","baseIsEqual","equalArrays","equalByTag","equalObjects","arrayTag","equalFunc","objIsArr","othIsArr","objTag","othTag","objIsObj","othIsObj","isSameTag","objIsWrapped","othIsWrapped","objUnwrapped","othUnwrapped","matchData","noCustomizer","srcValue","COMPARE_PARTIAL_FLAG","isMasked","toSource","reIsHostCtor","funcProto","objectProto","funcToString","reIsNative","isLength","typedArrayTags","baseMatches","baseMatchesProperty","isPrototype","nativeKeys","nativeKeysIn","isProto","baseIsMatch","getMatchData","matchesStrictComparable","hasIn","isKey","isStrictComparable","assignMergeValue","baseMergeDeep","safeGet","baseMerge","srcIndex","cloneTypedArray","isArrayLikeObject","toPlainObject","mergeFunc","isTyped","baseGet","baseIteratee","baseMap","baseSortBy","compareMultiple","iteratees","orders","basePickBy","baseSet","overRest","setToString","baseSetToString","comparer","symbolProto","symbolToString","trimmedEndIndex","reTrimStart","createSet","setToArray","seenIndex","stringToPath","baseSlice","freeExports","freeModule","allocUnsafe","cloneArrayBuffer","reFlags","symbolValueOf","valIsDefined","valIsNull","valIsReflexive","valIsSymbol","othIsDefined","othIsNull","othIsReflexive","othIsSymbol","compareAscending","objCriteria","criteria","othCriteria","ordersLength","getSymbols","getSymbolsIn","coreJsData","baseRest","isIterateeCall","assigner","eachFunc","castSlice","hasUnicode","strSymbols","nativeIsFinite","arraySome","isPartial","arrLength","arrStacked","othStacked","arrValue","othValue","compared","objProps","objLength","objStacked","skipCtor","objCtor","othCtor","baseGetAllKeys","isKeyable","baseIsNative","getPrototype","overArg","nativeObjectToString","isOwn","unmasked","arrayFilter","stubArray","nativeGetSymbols","mapTag","promiseTag","setTag","weakMapTag","dataViewTag","dataViewCtorString","mapCtorString","promiseCtorString","setCtorString","weakMapCtorString","ctorString","hasFunc","reHasUnicode","nativeCreate","cloneDataView","cloneRegExp","cloneSymbol","spreadableSymbol","isConcatSpreadable","reIsUint","reIsDeepProp","reIsPlainProp","maskSrcKey","IE_PROTO","assocIndexOf","getMapData","freeProcess","nodeUtil","require","otherArgs","shortOut","nativeNow","lastCalled","stamp","pairs","LARGE_ARRAY_SIZE","asciiToArray","unicodeToArray","memoizeCapped","rePropName","reEscapeChar","quote","subString","reWhitespace","rsAstralRange","rsAstral","rsCombo","rsFitz","rsNonAstral","rsRegional","rsSurrPair","reOptMod","rsModifier","rsOptVar","rsSeq","rsSymbol","reUnicode","upperFirst","nativeCeil","CLONE_DEEP_FLAG","timeWaiting","baseDifference","differenceBy","baseHasIn","baseIntersection","castArrayLikeObject","mapped","baseIsArguments","stubFalse","baseKeys","baseIsMap","nodeIsMap","objectCtorString","baseIsSet","nodeIsSet","baseIsTypedArray","nodeIsTypedArray","arrayLikeKeys","baseKeysIn","HASH_UNDEFINED","PLACEHOLDER","WRAP_PARTIAL_FLAG","WRAP_ARY_FLAG","INFINITY","MAX_ARRAY_LENGTH","wrapFlags","boolTag","dateTag","errorTag","genTag","numberTag","regexpTag","stringTag","arrayBufferTag","float32Tag","float64Tag","int8Tag","int16Tag","int32Tag","uint8Tag","uint8ClampedTag","uint16Tag","uint32Tag","reEmptyStringLeading","reEmptyStringMiddle","reEmptyStringTrailing","reEscapedHtml","reHasEscapedHtml","reHasUnescapedHtml","reEscape","reEvaluate","reInterpolate","reRegExpChar","reHasRegExpChar","reWrapComment","reWrapDetails","reSplitDetails","reAsciiWord","reForbiddenIdentifierChars","reEsTemplate","reLatin","reNoMatch","reUnescapedString","rsComboRange","rsComboMarksRange","rsDingbatRange","rsLowerRange","rsUpperRange","rsVarRange","rsBreakRange","rsMathOpRange","rsBreak","rsDigits","rsDingbat","rsLower","rsMisc","rsUpper","rsZWJ","rsMiscLower","rsMiscUpper","rsOptContrLower","rsOptContrUpper","rsEmoji","reApos","reComboMark","reUnicodeWord","reHasUnicodeWord","contextProps","templateCounter","stringEscapes","freeParseFloat","moduleExports","nodeIsArrayBuffer","nodeIsDate","nodeIsRegExp","arrayAggregator","arrayEachRight","arrayEvery","arrayReduce","initAccum","arrayReduceRight","asciiSize","baseProperty","baseFindKey","baseIndexOfWith","baseMean","baseSum","basePropertyOf","baseReduce","baseTrim","baseValues","charsStartIndex","chrSymbols","charsEndIndex","deburrLetter","escapeHtmlChar","escapeStringChar","replaceHolders","setToPairs","stringSize","unicodeSize","unescapeHtmlChar","runInContext","idCounter","oldDash","symIterator","ctxClearTimeout","ctxNow","ctxSetTimeout","nativeFloor","nativeIsBuffer","nativeJoin","nativeParseInt","nativeRandom","nativeReverse","metaMap","realNames","lodash","LazyWrapper","LodashWrapper","wrapperClone","baseLodash","chainAll","__wrapped__","__actions__","__chain__","__index__","__values__","__dir__","__filtered__","__iteratees__","__takeCount__","__views__","arraySample","baseRandom","arraySampleSize","shuffleSelf","baseClamp","arrayShuffle","baseAggregator","baseAt","baseConformsTo","baseDelay","templateSettings","baseEachRight","baseForOwnRight","baseEvery","baseExtremum","baseFilter","baseForRight","baseFunctions","baseGt","baseHas","baseInvoke","baseLt","baseNth","baseOrderBy","getIteratee","basePullAll","basePullAt","baseUnset","baseRepeat","baseSample","baseSampleSize","baseSetData","baseShuffle","baseSome","baseSortedIndex","retHighest","baseSortedIndexBy","valIsNaN","valIsUndefined","setLow","baseSortedUniq","baseToNumber","baseUniq","baseUpdate","baseWhile","isDrop","baseWrapperValue","baseXor","baseZipObject","assignFunc","valsLength","castFunction","castRest","composeArgs","partials","holders","isCurried","argsIndex","holdersLength","leftLength","rangeLength","isUncurried","composeArgsRight","holdersIndex","rightLength","createAggregator","initializer","createAssigner","createCaseFirst","createCompounder","deburr","createCtor","thisBinding","createFind","findIndexFunc","createFlow","flatRest","prereq","thru","getFuncName","isLaziable","plant","createHybrid","partialsRight","holdersRight","argPos","ary","isAry","isBind","isBindKey","isFlip","getHolder","holdersCount","countHolders","newHolders","createRecurry","oldArray","reorder","createInverter","toIteratee","baseInverter","createMathOperation","createOver","arrayFunc","createPadding","chars","charsLength","createRange","toFinite","baseRange","createRelationalOperation","wrapFunc","isCurry","setWrapToString","createRound","createToPairs","baseToPairs","createWrap","srcBitmask","newBitmask","isCombo","mergeData","createCurry","createPartial","createBind","customDefaultsAssignIn","customDefaultsMerge","customOmitClone","otherFunc","isMaskable","insertWrapDetails","updateWrapDetails","getWrapDetails","rand","differenceWith","findLastIndex","intersectionBy","intersectionWith","pull","pullAll","pullAt","unionBy","unionWith","unzip","unzipWith","without","xorBy","xorWith","zip","zipWith","wrapperAt","countBy","forEachRight","groupBy","invokeMap","keyBy","sortBy","bindKey","WRAP_BIND_FLAG","defer","memoized","Cache","overArgs","funcsLength","partialRight","rearg","iteratorToArray","assignIn","assignInWith","assignWith","propsIndex","propsLength","defaultsDeep","mergeWith","invertBy","invoke","omit","basePick","pickBy","toPairs","toPairsIn","kebabCase","lowerCase","lowerFirst","snakeCase","startCase","upperCase","hasUnicodeWord","unicodeWords","asciiWords","attempt","bindAll","flow","flowRight","methodOf","over","overEvery","overSome","basePropertyDeep","rangeRight","augend","dividend","multiplicand","minuend","castArray","conforms","baseConforms","curryRight","drop","dropRight","dropRightWhile","dropWhile","baseFill","flatMapDeep","flatMapDepth","flattenDeep","flattenDepth","flip","fromPairs","functions","functionsIn","initial","mapKeys","matchesProperty","nthArg","omitBy","propertyOf","pullAllBy","pullAllWith","setWith","shuffle","sortedUniq","sortedUniqBy","takeRight","takeRightWhile","takeWhile","tap","isArrLike","unary","uniq","uniqBy","uniqWith","unset","updateWith","valuesIn","zipObject","zipObjectDeep","entriesIn","extendWith","cloneDeep","cloneDeepWith","cloneWith","conformsTo","defaultTo","escapeRegExp","findLastKey","forIn","forInRight","forOwn","forOwnRight","baseInRange","isEqualWith","isMatchWith","isNil","isSafeInteger","isWeakMap","isWeakSet","strictLastIndexOf","maxBy","meanBy","minBy","stubObject","stubString","stubTrue","nth","noConflict","strLength","reduceRight","sortedIndex","sortedIndexBy","sortedIndexOf","sortedLastIndex","sortedLastIndexBy","sortedLastIndexOf","sumBy","imports","importsKeys","importsValues","isEscaping","isEvaluating","reDelimiters","escapeValue","interpolateValue","esTemplateValue","evaluateValue","toLower","toSafeInteger","toUpper","trimEnd","omission","newEnd","eachRight","isFilter","takeName","dropName","checkIteratee","isTaker","lodashFunc","retUnwrapped","isLazy","useLazy","isHybrid","isUnwrapped","onlyLazy","chainName","iterLength","takeCount","iterIndex","Long","ERR_UNKNOWN_ORDER","ALMOST_ONE","RotationOrder","Euler","ZYX","YXZ","XZY","ZXY","YZX","XYZ","RollPitchYaw","DefaultOrder","RotationOrders","rotationOrder","ysqr","t4","toArray4","checkOrder","fromRollPitchYaw","fromRotationMatrix","_fromRotationMatrix","getRotationMatrix","_getRotationMatrix","getQuaternion","af","bf","cf","df","toQuaternion","Pose","pose","getTransformationMatrix","getTransformationMatrixFromPose","getTransformationMatrixToPose","safeIsNaN","areInputsEqual","newInputs","lastInputs","resultFn","calledOnce","newArgs","srcByModuleId","noDocument","updateCss","isUrlRequest","getScriptSrc","lastScriptTag","fileMap","splitResult","mapRule","getCurrentScriptUrl","reloaded","getReloadUrl","reloadStyle","locals","urlString","cssReload","hot","window$1","LIB_VERSION","escapee","ArrayProto","FuncProto","ObjProto","windowConsole","document$1","windowOpera","nativeBind","nativeIndexOf","nativeIsArray","breaker","log_func_with_prefix","console_with_prefix","needle","subclass","superclass","encodeDates","strip_empty_properties","JSONEncode","mixed_val","escapable","holder","mind","JSONDecode","SyntaxError","uffff","base64Encode","b64","enc","tmp_arr","utf8Encode","stringl","utftext","UUID","byte_array","UA","BLOCKED_UA_STRS","isBlockedUA","HTTPBuildQuery","formdata","arg_separator","use_val","use_key","getQueryParam","nameEQ","set_seconds","is_cross_subdomain","is_secure","is_cross_site","domain_override","cdomain","extract_domain","new_cookie_val","_localStorageSupported","localStorageSupported","forceCheck","cheap_guid","is_supported","force_check","register_event","fixEvent","oldSchool","ontype","old_handler","new_handler","old_handlers","old_result","new_result","makeHandler","TOKEN_MATCH_REGEX","dom_query","getAllChildren","bad_whitespace","getElementsBySelector","foundCount","currentContextIndex","token_match","attrOperator","CAMPAIGN_KEYWORDS","CLICK_IDS","campaignParams","default_value","kw","kwkey","clickParams","idkey","marketingParams","searchEngine","searchInfo","keyword","user_agent","browserVersion","os","device","referringDomain","people_properties","mpPageViewProperties","maxlen","SIMPLE_DOMAIN_MATCH_REGEX","DOMAIN_MATCH_REGEX","domain_regex","tld","JSONStringify","JSONParse","DomTracker","create_properties","event_handler","after_track_handler","mixpanel_instance","mp","event_name","user_callback","override_event","get_config","track_callback","timeout_occured","callback_fired","LinkTracker","new_tab","FormTracker","logger$2","SharedLock","pollIntervalMS","timeoutMS","withLock","lockedCB","errorCB","pid","keyX","keyY","keyZ","waitFor","getSetY","valY","criticalSection","logger$1","RequestQueue","errorReporter","memQueue","flushInterval","queueEntry","succeeded","storedQueue","readFromStorage","saveToStorage","fillBatch","idsInBatch","orphaned","filterOutIDsAndInvalid","idSet","filteredItems","removeItemsByID","removeFromStorage","updatePayloads","existingItems","itemsToUpdate","newItems","newPayload","storageEntry","RequestBatcher","libConfig","sendRequestFunc","beforeSendHook","stopAllBatching","stopAllBatchingFunc","consecutiveRemovalFailures","itemIdsSentSuccessfully","timeoutID","resetBatchSize","resetFlush","scheduleFlush","flushMS","requestInProgress","currentBatchSize","dataForRequest","transformedItems","addPayload","timesSent","batchSendCallback","removeItemsFromQueue","unloading","xhr_req","retryMS","retryAfter","halvedBatchSize","requestOptions","verbose","ignore_json_errors","timeout_ms","transport","GDPR_DEFAULT_PERSISTENCE_PREFIX","optIn","_optInOut","optOut","hasOptedIn","_getStorageValue","hasOptedOut","ignoreDnt","nav","hasDntOn","dntValue","_hasDoNotTrackFlagOn","optedOut","addOptOutCheckMixpanelLib","_addOptOutCheck","addOptOutCheckMixpanelPeople","_get_config","addOptOutCheckMixpanelGroup","clearOptInOut","_getStorage","_getStorageKey","crossSubdomainCookie","persistenceType","persistencePrefix","optValue","cookieExpiration","secureCookie","crossSiteCookie","trackEventName","trackProperties","getConfigValue","SET_ACTION","SET_ONCE_ACTION","UNSET_ACTION","ADD_ACTION","APPEND_ACTION","UNION_ACTION","REMOVE_ACTION","apiActions","set_action","$set","_is_reserved_property","unset_action","$unset","set_once_action","$set_once","union_action","list_name","$union","append_action","$append","remove_action","$remove","delete_action","MixpanelGroup","group_key","group_id","_mixpanel","_group_key","_group_id","_send_request","set_once","date_encoded_data","_track_or_batch","batcher","request_batchers","MixpanelPeople","update_referrer_info","get_referrer_info","$add","track_charge","clear_charges","delete_user","_identify_called","get_distinct_id","device_id","get_property","user_id","had_persisted_distinct_id","people","_enqueue","conf_var","_flags","identify_called","_add_to_people_queue","_flush_one_queue","action_method","queue_to_params_fn","queued_data","_get_queue","action_params","_pop_from_people_queue","_set_callback","_add_callback","_append_callback","_set_once_callback","_union_callback","_unset_callback","_remove_callback","$append_queue","$remove_queue","$append_item","append_callback","$remove_item","remove_callback","init_type","mixpanel_master","SET_QUEUE_KEY","SET_ONCE_QUEUE_KEY","UNSET_QUEUE_KEY","ADD_QUEUE_KEY","APPEND_QUEUE_KEY","REMOVE_QUEUE_KEY","UNION_QUEUE_KEY","PEOPLE_DISTINCT_ID_KEY","ALIAS_ID_KEY","EVENT_TIMERS_KEY","RESERVED_PROPERTIES","MixpanelPersistence","campaign_params_saved","storage_type","update_config","upgrade","old_cookie_name","old_cookie","upgrade_from_old_lib","expire_days","cross_subdomain","cross_site","cookie_domain","default_expiry","update_search_keyword","safe_merge","set_disabled","set_cookie_domain","set_cross_site","set_cross_subdomain","set_secure","get_cross_subdomain","q_key","_get_queue_key","q_data","set_q","_get_or_create_queue","set_once_q","unset_q","add_q","union_q","remove_q","append_q","enqueued_obj","append_obj","queued_action","default_val","set_event_timer","timers","remove_event_timer","IDENTITY_FUNC","NOOP_FUNC","PRIMARY_INSTANCE_NAME","PAYLOAD_TYPE_BASE64","DEVICE_ID_PREFIX","USE_XHR","ENQUEUE_REQUESTS","DEFAULT_CONFIG","DOM_LOADED","MixpanelLib","create_mplib","_cached_groups","utm_params","initial_utm_params","has_utm","utm_value","utm_key","_execute_array","report_error","_loaded","variable_features","set_config","__dom_loaded_queue","__request_queue","__disabled_events","_batch_requests","init_batchers","flush_on_unload","unpersisted_superprops","_gdpr_init","uuid","track_pageview","_set_default_superprops","_dom_loaded","_track_dom","has_opted_out_tracking","DomClass","_prepare_callback","jsc","randomized_cb","callback_string","body_data","use_post","use_sendBeacon","verbose_mode","lib","headerValue","fn_name","alias_calls","other_calls","tracking_calls","calls","are_batchers_initialized","batcher_for","queue_suffix","_encode_data_for_request","_run_hook","stop_batch_senders","start_batch_senders","disable_all_events","encoded_data","truncated_data","should_send_immediately","send_request_options","request_enqueued_or_initiated","send_request_immediately","skip_hooks","_event_is_disabled","start_timestamp","duration_in_ms","marketing_properties","property_blacklist","blacklisted_prop","set_group","group_ids","add_group","old_values","remove_group","old_value","track_with_groups","tracking_props","_create_map_key","_remove_group_from_cache","get_group","map_key","default_page_properties","event_properties","track_links","track_forms","time_event","REGISTER_DEFAULTS","options_for_register","days_or_options","_register_single","new_distinct_id","previous_distinct_id","name_tag","prop_name","hook_name","property_name","has_opted_in_tracking","opt_in_tracking","opt_out_tracking","clear_opt_in_out_tracking","_gdpr_update_persistence","_gdpr_call_func","mixpanel","dom_loaded_handler","toplevel","frameElement","doScroll","do_scroll_check","add_dom_loaded_handler","oldHandler","predict","enhancePointerEventInput","hammer","RECOGNIZERS","RECOGNIZER_COMPATIBLE_MAP","tripan","doubletap","anytap","RECOGNIZER_FALLBACK_MAP","BASIC_EVENT_ALIASES","INPUT_EVENT_TYPES","KEY_EVENTS","MOUSE_EVENTS","WHEEL_EVENTS","EVENT_RECOGNIZER_MAP","press","pinchin","pinchout","pinchstart","pinchmove","pinchend","pinchcancel","rotatestart","rotatemove","rotateend","rotatecancel","tripanstart","tripanmove","tripanup","tripandown","tripanleft","tripanright","tripanend","tripancancel","panup","pandown","panleft","panright","pancancel","swipe","swipeleft","swiperight","swipeup","swipedown","GESTURE_EVENT_ALIASES","anyclick","mouseover","mouseleave","passiveSupported","EVENT_TYPE","WHEEL_DELTA_MAGIC_SCALER","WheelInput","WheelEvent","deltaMode","DOM_DELTA_PIXEL","DOM_DELTA_LINE","enableEventType","MOVE_EVENT_TYPE","OVER_EVENT_TYPE","OUT_EVENT_TYPE","ENTER_EVENT_TYPE","LEAVE_EVENT_TYPE","MoveInput","handleOverEvent","handleOutEvent","handleEnterEvent","handleLeaveEvent","handleMoveEvent","enableMoveEvent","enableLeaveEvent","enableEnterEvent","enableOutEvent","enableOverEvent","_emit","DOWN_EVENT_TYPE","UP_EVENT_TYPE","KeyInput","srcElement","enableDownEvent","enableUpEvent","ContextmenuInput","whichButtons","middleButton","getOffsetPosition","clientLeft","clientTop","EventRegistrar","mjolnirEvent","_normalizeEvent","handlersByElement","_active","immediatePropagationStopped","entriesToRemove","EventManager","_onBasicInput","_onOtherEvent","ManagerClass","otherName","recognizerName","recognizerOption","wheelInput","moveInput","keyInput","contextmenuInput","eventAlias","eventRegistrar","_toggleRecognizer","_addEventHandler","watch","_removeEventHandler","fallbackRecognizers","isRecognizerUsed","eh","IS_PAPA_WORKER","dynamicTyping","dynamicTypingFunction","WORKERS_SUPPORTED","BLOB_URL","userStep","userChunk","userComplete","userError","workerId","NODE_STREAM_INPUT","File","unparse","BAD_DELIMITERS","quotes","skipEmptyLines","quoteChar","escapeChar","escapeFormulae","RECORD_SEP","UNIT_SEP","BYTE_ORDER_MARK","LocalChunkSize","RemoteChunkSize","DefaultDelimiter","Parser","ParserHandle","NetworkStreamer","FileStreamer","StringStreamer","ReadableStreamStreamer","jQuery","inputElem","_completed","_halted","_baseIndex","_partialLine","_rowCount","_nextChunk","isFirstChunk","_completeResults","streamer","_config","parseChunk","beforeFirstChunk","paused","WORKER_ID","_sendError","_readChunk","_chunkLoaded","_chunkError","downloadRequestBody","downloadRequestHeaders","getResponseHeader","webkitSlice","mozSlice","FileReaderSync","readAsText","_streamData","_streamEnd","_streamError","_checkIsFinished","_streamCleanUp","transformHeader","comments","successful","bestDelimiter","delimitersToGuess","getCharIndex","fastMode","linebreak","truncated","Pbf","ieee754","Varint","Fixed64","Bytes","Fixed32","SHIFT_LEFT_32","SHIFT_RIGHT_32","utf8TextDecoder","readPackedEnd","pbf","readVarint","toNum","makeRoomForExtraLength","extraLen","realloc","writePackedVarint","writeVarint","writePackedSVarint","writeSVarint","writePackedFloat","writeFloat","writePackedDouble","writeDouble","writePackedBoolean","writeBoolean","writePackedFixed32","writeFixed32","writePackedSFixed32","writeSFixed32","writePackedFixed64","writeFixed64","writePackedSFixed64","writeSFixed64","readUInt32","writeInt32","readInt32","readFields","readField","readMessage","readFixed32","readSFixed32","readFixed64","readSFixed64","readFloat","readDouble","readVarintRemainder","readVarint64","readSVarint","readBoolean","readString","readUtf8TextDecoder","bytesPerSequence","readUtf8","readBytes","readPackedVarint","readPackedSVarint","readPackedBoolean","readPackedFloat","readPackedDouble","readPackedFixed32","readPackedSFixed32","readPackedFixed64","readPackedSFixed64","writeTag","writeBigVarintLow","writeBigVarintHigh","writeBigVarint","writeString","lead","writeUtf8","writeBytes","writeRawMessage","writeMessage","writeBytesField","writeFixed32Field","writeSFixed32Field","writeFixed64Field","writeSFixed64Field","writeVarintField","writeSVarintField","writeStringField","writeFloatField","writeDoubleField","writeBooleanField","DEFAULT_COMPARE","splay","printRow","isTail","printNode","_comparator","findStatic","minNode","maxNode","toList","presort","loadRecursive","mergedList","mergeLists","sortedListToBST","isInBbox","ll","getBboxOverlap","lowerX","upperX","epsilon$1","EPSILON_SQ","CoordRounder","prevNode","rounder","xRounder","yRounder","splitter","resulterrbound","elen","flen","Qnew","bvirt","enow","fnow","eindex","findex","hindex","ccwerrboundB","ccwerrboundC","C1","C2","orient2d","detleft","detright","detsum","acxtail","acytail","bcxtail","bcytail","ahi","alo","bhi","blo","_0","s0","acx","bcx","acy","bcy","estimate","errbound","C1len","C2len","Dlen","orient2dadapt","crossProduct","compareVectorAngles","basePt","endPt1","endPt2","sineOfAngle","pShared","pBase","pAngle","cosineOfAngle","horizontalIntersection","verticalIntersection","SweepEvent","ptCmp","comparePoints","Segment","aPt","bPt","otherEvents","iMax","checkForConsuming","numEvents","evt1","consumedBy","evt2","otherSE","getAvailableLinkedEvents","ringOut","isInResult","getLeftmostComparator","baseEvent","fillCache","linkedEvent","nextEvent","sine","asine","acosine","bsine","bcosine","segmentId","alx","leftSE","blx","arx","rightSE","brx","aly","bly","bry","aCmpBLeft","bCmpARight","bCmpALeft","aCmpBRight","windings","fromRing","leftPt","rightPt","cmpPts","replaceRightSE","newRightSE","isAnEndpoint","lPt","rPt","yDist","xFromYDist","xDist","yFromXDist","getIntersection","tBbox","oBbox","bboxOverlap","tlp","trp","olp","orp","touchesOtherLSE","touchesThisLSE","touchesOtherRSE","touchesThisRSE","kross","intersection$1","newEvents","alreadyLinked","newLeftSE","oldRightSE","newSeg","swapEvents","tmpEvt","consumee","prevInResult","_prevInResult","beforeState","_beforeState","seg","afterState","multiPolys","_afterState","ringsAfter","windingsAfter","mpsAfter","polysAfter","polysExclude","isExterior","_isInResult","mpsBefore","noBefores","noAfters","least","most","numMultiPolys","isJustSubject","mps","RingIn","geomRing","getSweepEvents","sweepEvents","PolyIn","geomPoly","exteriorRing","interiorRings","ringSweepEvents","jMax","MultiPolyIn","polySweepEvents","RingOut","allSegments","ringsOut","prevEvent","startingPoint","intersectionLEs","availableLEs","firstPt","lastPt","indexLE","intersectionLE","ringEvents","prevPt","isExteriorRing","iStart","iEnd","orderedPoints","_isExteriorRing","enclosing","enclosingRing","_enclosingRing","_calcEnclosingRing","leftMostEvt","prevSeg","prevPrevSeg","PolyOut","addInterior","ringGeom","MultiPolyOut","_composePolys","polyGeom","SweepLine","nextSeg","prevMySplitter","prevInter","newEventsFromSplit","_splitSafely","nextMySplitter","nextInter","mySplitter","inter","POLYGON_CLIPPING_MAX_QUEUE_SIZE","POLYGON_CLIPPING_MAX_SWEEPLINE_SEGMENTS","moreGeoms","multipolys","mpA","sweepLine","prevQueueSize","subjectGeom","clippingGeoms","ReactPropTypesSecret","emptyFunction","emptyFunctionWithReset","resetWarningCache","shim","propFullName","secret","getShim","isRequired","ReactPropTypes","bigint","arrayOf","instanceOf","objectOf","oneOf","oneOfType","exact","checkPropTypes","PropTypes","cellToParent","cellToTile","tileToCell","bigIntToHex","hexToBigInt","tile_cover_1","quadbin","zparent","strictUriEncode","decodeComponent","splitOnFirst","filterObject","encodeFragmentIdentifier","validateArrayFormatSeparator","keysSorter","removeHash","queryStart","parseNumbers","parseBooleans","arrayFormat","arrayFormatSeparator","isEncodedArray","parserForArrayFormat","shouldFilter","skipNull","skipEmptyString","keyValueSep","encoderForArrayFormat","objectCopy","parseUrl","url_","parseFragmentIdentifier","fragmentIdentifier","stringifyUrl","queryFromUrl","parsedQueryFromUrl","getHash","exclusionFilter","_maxEntries","_minEntries","_all","_build","_splitRoot","_condense","compareMinX","compareMinY","_chooseSubtree","_split","_adjustParentBBoxes","_chooseSplitAxis","_chooseSplitIndex","_allDistMargin","startOfMonth","dirtyMonth","dateWithDesiredMonth","lastDayOfMonth","getDaysInMonth","setYear","dirtyYear","cleanDate","endOfWeek","endOfISOWeek","dirtyDatesArray","datesArray","getISOWeek","getWeeksInMonth","startOfWeekLeft","startOfWeekRight","differenceInCalendarWeeks","isDayPickerMultiple","isDayPickerRange","isDayPickerSingle","defaultClassNames","multiple_months","with_weeknumber","vhidden","button_reset","caption_start","caption_end","caption_between","caption_label","caption_dropdowns","dropdown","dropdown_month","dropdown_year","dropdown_icon","tbody","tfoot","head_row","head_cell","nav_button","nav_button_previous","nav_button_next","nav_icon","weeknumber","day_today","day_outside","day_selected","day_disabled","day_hidden","day_range_start","day_range_end","day_range_middle","formatters","formatCaption","formatDay","formatMonthCaption","formatWeekNumber","weekNumber","formatWeekdayName","formatYearCaption","labelDay","activeModifiers","labelMonthDropdown","labelNext","labelPrevious","labelWeekNumber","labelWeekday","labelYearDropdown","DayPickerContext","DayPickerProvider","defaultContextValues","captionLayout","modifiersClassNames","numberOfMonths","fromYear","toYear","fromMonth","toMonth","fromDate","parseFromToProps","useDayPicker","CaptionLabel","displayMonth","IconDropdown","fillRule","Dropdown","dayPicker","IconDropdownComponent","MonthsDropdown","dropdownMonths","DropdownComponent","selectedMonth","newMonth","YearsDropdown","years","NavigationContext","NavigationProvider","initialMonth","defaultMonth","getInitialMonth","controlledValue","uncontrolledValue","useControlledValue","disableNavigation","onMonthChange","useNavigationState","currentMonth","goToMonth","displayMonths","reverseMonths","monthsDiff","nextMonth","getDisplayMonths","startingMonth","pagedNavigation","getNextMonth","previousMonth","getPreviousMonth","isDateDisplayed","goToDate","refDate","useNavigation","CaptionDropdowns","handleMonthChange","CaptionLabelComponent","captionLabel","IconLeft","IconRight","Button","classNamesArr","Navigation","previousLabel","previousClassName","nextClassName","IconRightComponent","IconLeftComponent","hidePrevious","onPreviousClick","hideNext","onNextClick","CaptionNavigation","Footer","HeadRow","showWeekNumber","ISOWeek","weekdays","getWeekdays","Head","HeadRowComponent","DayContent","SelectMultipleContext","SelectMultipleProvider","SelectMultipleProviderInternal","isMaxSelected","selectedDay","onDayClick","selectedDays","useSelectMultiple","InternalModifier","SelectRangeContext","SelectRangeProvider","range_start","range_end","range_middle","SelectRangeProviderInternal","selectedFrom","selectedTo","addToRange","useSelectRange","matcherToArray","Selected","Disabled","Today","RangeEnd","RangeMiddle","RangeStart","Outside","ModifiersContext","ModifiersProvider","internalModifiers","selectMultiple","getInternalModifiers","customModifiers","dayModifiers","getCustomModifiers","useModifiers","getActiveModifiers","matchedModifiers","matchers","isArrayOfDates","isDateRange","isDayOfWeekType","isDateInterval","isDayBefore","isDayAfter","isDateAfterType","isDateBeforeType","outside","MAX_RETRY","getNextFocus","focusedDay","moveBy","lastFocused","newFocusedDay","FocusContext","FocusProvider","navigation","setFocusedDay","setLastFocused","initialFocusTarget","firstFocusableDay","firstDayInMonth","lastDayInMonth","getInitialFocusTarget","focusTarget","moveFocus","nextFocused","focusDayAfter","focusDayBefore","focusWeekAfter","focusWeekBefore","focusMonthBefore","focusMonthAfter","focusYearBefore","focusYearAfter","focusStartOfWeek","focusEndOfWeek","useFocusContext","SelectSingleContext","SelectSingleProvider","SelectSingleProviderInternal","useSelectSingle","useDayRender","buttonRef","focusContext","useActiveModifiers","eventHandlers","onDayFocus","onBlur","onDayBlur","onDayKeyDown","onKeyUp","onDayKeyUp","onDayMouseEnter","onDayMouseLeave","onPointerEnter","onDayPointerEnter","onPointerLeave","onDayPointerLeave","onTouchCancel","onDayTouchCancel","onDayTouchEnd","onDayTouchMove","onDayTouchStart","useDayEventHandlers","useSelectedDays","isButton","customClassName","isInternalModifier","internalClassName","getDayClassNames","modifiersStyles","getDayStyle","showOutsideDays","DayContentComponent","divProps","isFocusTarget","buttonProps","Day","dayRender","WeekNumber","onWeekNumberClick","Row","weekNumberCell","DayComponent","WeeknumberComponent","getUnixTime","daysToMonthWeeks","toWeek","fromWeek","nOfDays","existingWeek","Table","hideHead","fixedWeeks","weeksInMonth","useFixedWeeks","nrOfMonthWeeks","lastDate","extraWeeks","getMonthWeeks","HeadComponent","RowComponent","FooterComponent","useIsomorphicLayoutEffect","serverHandoffComplete","genId","Month","captionId","providedId","initialId","tableId","CaptionComponent","Months","Root","hasInitialFocus","setHasInitialFocus","initialFocus","dataAttributes","MonthsComponent","RootProvider","DayPicker","acceptsBooleans","attributeNamespace","mustUseProperty","sanitizeURL","removeEmptyString","xlinkHref","lineClamp","insertionMode","__html","generateStaticMarkup","_currentValue2","parentValue","enqueueSetState","_reactInternals","enqueueReplaceState","enqueueForceUpdate","getSnapshotBeforeUpdate","UNSAFE_componentWillMount","componentWillMount","ib","ob","memoizedState","qb","vb","xb","readContext","useReducer","useDebugValue","useDeferredValue","useTransition","treeContext","useMutableSource","useSyncExternalStore","yb","__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","ReactCurrentDispatcher","zb","allPendingTasks","pendingRootTasks","ping","pingedTasks","blockedBoundary","blockedSegment","abortSet","legacyContext","parentFlushed","formatContext","boundary","lastPushedText","textEmbedded","onShellError","onFatalError","fatalError","Db","getChildContext","Gb","rootSegmentID","forceClientRender","completedSegments","fallbackAbortableTasks","errorDigest","Hb","responseState","_defaultValue","Ib","Jb","Kb","clientRenderedBoundaries","onAllReady","completedRootSegment","onShellReady","completedBoundaries","partialBoundaries","nextSegmentId","placeholderPrefix","nextSuspenseID","boundaryPrefix","progressiveChunkSize","segmentPrefix","startInlineScript","sentCompleteBoundaryFunction","sentCompleteSegmentFunction","bootstrapChunks","errorComponentStack","sentClientRenderFunction","nb","abortableTasks","identifierPrefix","renderToNodeStream","renderToStaticNodeStream","kb","Xb","Zb","_currentValue","kd","renderToReadableStream","bootstrapScriptContent","bootstrapScripts","bootstrapModules","namespaceURI","highWaterMark","allReady","prepareStackTrace","_valueTracker","stopTracking","defaultChecked","_wrapperState","initialChecked","controlled","defaultSelected","dangerouslySetInnerHTML","MSApp","execUnsafeLocalFunction","menuitem","embed","keygen","wbr","correspondingUseElement","stateNode","alternate","dehydrated","unstable_scheduleCallback","unstable_cancelCallback","unstable_shouldYield","unstable_requestPaint","unstable_now","unstable_getCurrentPriorityLevel","unstable_ImmediatePriority","unstable_UserBlockingPriority","unstable_NormalPriority","unstable_LowPriority","unstable_IdlePriority","pendingLanes","suspendedLanes","pingedLanes","entangledLanes","entanglements","eventTimes","blockedOn","domEventName","eventSystemFlags","targetContainers","isDehydrated","containerInfo","ReactCurrentBatchConfig","nd","od","pd","qd","rd","_reactName","_targetInst","isDefaultPrevented","isPropagationStopped","persist","isPersistent","wd","xd","yd","eventPhase","td","ud","vd","Ad","getModifierState","zd","fromElement","Bd","Dd","Fd","Hd","pseudoElement","Jd","Ld","Md","Esc","Spacebar","Del","Win","Menu","Apps","Scroll","MozPrintableKey","Nd","Od","Alt","Control","Meta","Shift","Pd","Qd","Rd","Td","pressure","tangentialPressure","tiltX","tiltY","twist","Vd","Xd","Yd","wheelDeltaX","wheelDeltaY","deltaZ","Zd","$d","datetime","tel","oninput","detachEvent","compareDocumentPosition","contentEditable","focusedElem","selectionRange","selectionStart","selectionEnd","anchorNode","anchorOffset","focusNode","focusOffset","setStart","removeAllRanges","addRange","setEnd","animationend","animationiteration","animationstart","transitionend","ef","gf","hf","lf","mf","of","qf","rf","sf","tf","uf","vf","wf","yf","zf","Af","Bf","Cf","Df","Ef","Ff","Gf","Hf","Jf","If","Kf","Lf","Mf","previousSibling","Nf","Of","Pf","Qf","Rf","Sf","Tf","Uf","Vf","Wf","Xf","Yf","__reactInternalMemoizedUnmaskedChildContext","__reactInternalMemoizedMaskedChildContext","Zf","$f","ag","cg","__reactInternalMemoizedMergedChildContext","dg","eg","fg","hg","jg","kg","mg","ng","og","pg","qg","sg","tg","ug","vg","wg","xg","yg","zg","Ag","Bg","deletions","Cg","pendingProps","retryLane","Dg","Eg","Fg","Gg","memoizedProps","Hg","Ig","Jg","Kg","Lg","_owner","_stringRef","refs","Mg","Ng","Og","Pg","Qg","Rg","Sg","Tg","Ug","Vg","Wg","Xg","Yg","Zg","$g","ah","bh","childLanes","firstContext","lanes","memoizedValue","fh","gh","ih","jh","kh","updateQueue","baseState","firstBaseUpdate","lastBaseUpdate","shared","lh","mh","eventTime","lane","nh","oh","ph","qh","th","uh","xh","yh","zh","Ah","Bh","Ch","revealOrder","Dh","Eh","_workInProgressVersionPrimary","Fh","Gh","Hh","Ih","Jh","Kh","Lh","Mh","Nh","Oh","Ph","Qh","Rh","Sh","Th","baseQueue","Uh","Vh","Wh","lastRenderedReducer","hasEagerState","eagerState","lastRenderedState","Xh","Yh","Zh","$h","getSnapshot","lastEffect","stores","unstable_isNewReconciler","isPureReactComponent","componentWillReceiveProps","UNSAFE_componentWillReceiveProps","componentDidCatch","pingCache","ReactCurrentOwner","aj","bj","cj","dj","baseLanes","cachePool","ej","fj","gj","hj","UNSAFE_componentWillUpdate","componentWillUpdate","jj","kj","pendingContext","lj","zj","Aj","Bj","Cj","mj","nj","oj","pj","qj","sj","dgst","tj","uj","_reactRetry","rj","subtreeFlags","vj","wj","isBackwards","rendering","renderingStartTime","tailMode","Dj","Ej","Fj","wasMultiple","suppressHydrationWarning","autoFocus","Gj","Hj","Ij","Jj","Kj","Lj","Mj","Nj","Pj","Qj","Rj","Sj","Tj","Uj","Vj","_reactRootContainer","Wj","Xj","Yj","Zj","onCommitFiberUnmount","ak","bk","ck","dk","ek","fk","gk","hk","ik","jk","kk","__reactInternalSnapshotBeforeUpdate","Vk","lk","mk","nk","qk","rk","sk","tk","uk","vk","wk","xk","yk","zk","Ak","Bk","Ck","Dk","callbackNode","expirationTimes","expiredLanes","callbackPriority","ig","Ek","Fk","Gk","Hk","Ik","Jk","Kk","Lk","Mk","Nk","Ok","finishedWork","finishedLanes","Pk","timeoutHandle","Qk","Rk","Sk","Tk","Uk","mutableReadLanes","Oj","onCommitFiberRoot","onRecoverableError","Wk","onPostCommitFiberRoot","Xk","Yk","$k","pendingChildren","al","mutableSourceEagerHydrationData","pendingSuspenseBoundaries","dl","fl","hl","Zk","kl","_internalRoot","nl","ol","ql","unstable_scheduleHydration","form","sl","usingClientEntryPoint","findFiberByHostInstance","bundleType","rendererPackageName","ul","rendererConfig","overrideHookState","overrideHookStateDeletePath","overrideHookStateRenamePath","overrideProps","overridePropsDeletePath","overridePropsRenamePath","setErrorHandler","setSuspenseHandler","scheduleUpdate","currentDispatcherRef","findHostInstanceByFiber","findHostInstancesForRefresh","scheduleRefresh","scheduleRoot","setRefreshHandler","getCurrentFiber","reconcilerVersion","__REACT_DEVTOOLS_GLOBAL_HOOK__","vl","supportsFiber","unstable_strictMode","findDOMNode","hydrateRoot","hydratedSources","_getVersion","unmountComponentAtNode","unstable_batchedUpdates","unstable_renderSubtreeIntoContainer","checkDCE","_DraggableCore","React","nodeInterop","_reactDom","_clsx2","_domFns","_positionFns","_shims","_log","cacheBabelInterop","cacheNodeInterop","_React$Component","hasNativeReflectConstruct","coreData","createDraggableData","dragged","uiData","slackX","slackY","_getBoundPosition2","getBoundPosition","newStateX","newStateY","onStop","_this$props$position","prevPropsPosition","isElementSVG","SVGElement","_this$props$nodeRef$c","_this$props$nodeRef","nodeRef","_clsx","defaultClassName","defaultClassNameDragging","defaultClassNameDragged","draggableCoreProps","excluded","sourceKeys","sourceSymbolKeys","svgTransform","validPosition","transformOpts","canDragX","canDragY","createSVGTransform","createCSSTransform","dontSetMe","eventsFor","dragEventFor","DraggableCore","touchIdentifier","allowAnyClick","matchesSelectorAndParentsTo","getTouchIdentifier","getControlPosition","coreEvent","createCoreData","enableUserSelectHack","addUserSelectStyles","addEvent","handleDrag","handleDragStop","_snapToGrid2","snapToGrid","initMouseEvent","_snapToGrid4","removeUserSelectStyles","removeEvent","handleDragStart","_this$props2$nodeRef","_require","addClassName","inputOptions","styleEl","controlPos","_getPrefix","browserPrefixToKey","getTouch","findInArray","matchesSelector","baseNode","offsetXYFromParent","removeClassName","matchesSelectorFunc","unitSuffix","defaultX","defaultY","browserPrefixToStyle","getPrefix","prefixes","_window$document","_window$document$docu","shouldCapitalize","kebabToTitleCase","isNum","cloneBounds","boundNode","ownerWindow","boundNodeEl","boundNodeStyle","draggableCore","touchObj","pendingX","pendingY","clsx","COMMON_MIME_TYPES","toFileWithPath","withMimeType","webkitRelativePath","FILES_TO_IGNORE","getInputFiles","getFsHandleFiles","getFile","getDataTransferFiles","toFilePromises","noIgnoredFiles","webkitGetAsEntry","fromDataTransferItem","isDirectory","fromDirEntry","getAsFile","fwp","fromEntry","fromFileEntry","createReader","readEntries","fullPath","getInvalidTypeRejectionErr","messageSuffix","getTooLargeRejectionErr","getTooSmallRejectionErr","TOO_MANY_FILES_REJECTION","fileAccepted","isAcceptable","fileMatchSize","isEvtWithFiles","onDocumentDragOver","composeEventHandlers","isMIMEType","isExt","_excluded3","_excluded4","Dropzone","_useDropzone","_defaultProps$props","getFilesFromEvent","maxFiles","onDragOver","onDrop","onDropAccepted","onDropRejected","onFileDialogCancel","onFileDialogOpen","useFsAccessApi","preventDropOnDocument","noClick","noKeyboard","noDrag","noDragEventsBubbling","acceptAttr","acceptPropAsAcceptAttr","pickerTypes","pickerOptionsFromAccept","onFileDialogOpenCb","onFileDialogCancelCb","rootRef","inputRef","_useReducer2","isFileDialogActive","fsAccessApiWorksRef","isSecureContext","onWindowFocus","dragTargetsRef","onDocumentDrop","onErrCb","onDragEnterCb","fileCount","isDragAccept","accepted","sizeMatch","customErrors","allFilesAccepted","isDragReject","isDragActive","onDragOverCb","hasFiles","dropEffect","_unused","onDragLeaveCb","targets","targetIdx","setFiles","fileRejections","_fileAccepted2","acceptError","_fileMatchSize2","sizeError","onDropCb","openFileDialog","showOpenFilePicker","SECURITY_ERR","isSecurityError","onKeyDownCb","isEqualNode","onFocusCb","onBlurCb","onClickCb","isIe","isEdge","isIeOrEdge","composeHandler","composeKeyboardHandler","composeDragHandler","getRootProps","_ref2$refKey","refKey","onInputElementClick","getInputProps","_ref3$refKey","useDropzone","obs","_react","_useState2","setIgnored","_useState4","setSize","RObserver","_entries$0$contentRec","styleToObject","_$0","$1","noTextChildNodes","possibleStandardNames","acceptcharset","accesskey","allowfullscreen","autocapitalize","autocorrect","autofocus","autoplay","autosave","cellpadding","cellspacing","charset","classid","classname","colspan","contenteditable","contextmenu","controlslist","crossorigin","dangerouslysetinnerhtml","defaultchecked","defaultvalue","enctype","formmethod","formaction","formenctype","formnovalidate","formtarget","frameborder","hreflang","htmlfor","httpequiv","innerhtml","inputmode","itemid","itemprop","itemref","itemscope","itemtype","keyparams","keytype","marginwidth","marginheight","maxlength","mediagroup","minlength","nomodule","novalidate","playsinline","radiogroup","readonly","referrerpolicy","rowspan","spellcheck","srcdoc","srclang","srcset","tabindex","typemustmatch","usemap","accentheight","alignmentbaseline","allowreorder","arabicform","attributename","attributetype","autoreverse","basefrequency","baselineshift","baseprofile","calcmode","capheight","clippath","clippathunits","cliprule","colorinterpolation","colorinterpolationfilters","colorprofile","colorrendering","contentscripttype","contentstyletype","diffuseconstant","dominantbaseline","edgemode","enablebackground","externalresourcesrequired","fillopacity","fillrule","filterres","filterunits","floodopacity","floodcolor","fontfamily","fontsize","fontsizeadjust","fontstretch","fontstyle","fontvariant","fontweight","glyphname","glyphorientationhorizontal","glyphorientationvertical","glyphref","gradienttransform","gradientunits","horizadvx","horizoriginx","imagerendering","kernelmatrix","kernelunitlength","keypoints","keysplines","keytimes","lengthadjust","letterspacing","lightingcolor","limitingconeangle","markerend","markerheight","markermid","markerstart","markerunits","markerwidth","maskcontentunits","maskunits","numoctaves","overlineposition","overlinethickness","paintorder","pathlength","patterncontentunits","patterntransform","patternunits","pointerevents","pointsatx","pointsaty","pointsatz","preservealpha","preserveaspectratio","primitiveunits","refx","refy","renderingintent","repeatcount","repeatdur","requiredextensions","requiredfeatures","shaperendering","specularconstant","specularexponent","spreadmethod","startoffset","stddeviation","stitchtiles","stopcolor","stopopacity","strikethroughposition","strikethroughthickness","strokedasharray","strokedashoffset","strokelinecap","strokelinejoin","strokemiterlimit","strokewidth","strokeopacity","suppresscontenteditablewarning","suppresshydrationwarning","surfacescale","systemlanguage","tablevalues","targetx","targety","textanchor","textdecoration","textlength","textrendering","underlineposition","underlinethickness","unicodebidi","unicoderange","unitsperem","unselectable","valphabetic","vectoreffect","vertadvy","vertoriginx","vertoriginy","vhanging","videographic","viewbox","viewtarget","vmathematical","wordspacing","writingmode","xchannelselector","xheight","xlinkactuate","xlinkarcrole","xlinkhref","xlinkrole","xlinkshow","xlinktitle","xlinktype","xmlbase","xmllang","xmlnsxlink","xmlspace","ychannelselector","zoomandpan","onblur","onchange","oncontextmenu","ondoubleclick","ondrag","ondragenter","ondragexit","ondragleave","ondragover","ondrop","onfocus","oninvalid","onkeydown","onkeypress","onkeyup","onmouseup","onscroll","onsubmit","ontouchcancel","ontouchend","ontouchmove","ontouchstart","onwheel","convertFromNode","randomKey","pre","reactKey","nodeClassNames","childNodeList","parseChildren","nodeText","parentNodeName","nodeOnly","convertFromString","FAILED","LOADED","PENDING","READY","UNSUPPORTED","cacheStore","InlineSVG","handleCacheQueue","handleLoad","cacheRequests","fileType","currentSrc","hasCache","uniqueHash","letters","supportsInlineSVG","prevState","processSVG","preProcessor","updateSVGAttributes","uniquifyIDs","replaceableAttributes","linkAttributes","attributes_1","SVGSVGElement","originalDesc","descElement","originalTitle","titleElement","inlineSrc","dataURI","innerRef","elementProps","removeProperties","AsyncMode","ConcurrentMode","ContextConsumer","Lazy","Portal","StrictMode","Suspense","isAsyncMode","isConcurrentMode","isContextConsumer","isContextProvider","isForwardRef","isPortal","isProfiler","isStrictMode","isSuspense","isValidElementType","typeOf","_react2","_jsonToCsvExport2","__reactInternalSnapshotFlag","__reactInternalSnapshot","foundWillMountName","foundWillReceivePropsName","foundWillUpdateName","newApiName","maybeSnapshot","__suppressDeprecationWarning","document_","allowArrayLike","refProps","toJS","layerRef","normalizedLayer","interactive","mapboxApiAccessToken","mapboxApiUrl","attributionControl","preserveDrawingBuffer","reuseMaps","mapOptions","preventStyleDiffing","asyncRender","MapboxAccessToken","REACT_APP_MAPBOX_ACCESS_TOKEN","getAccessToken","Mapbox","mapboxgl","_checkStyleSheet","_frame","_render","savedMap","oldContainer","newContainer","isStyleLoaded","_fireLoadEvent","_reuse","trackResize","baseApiUrl","_updateMapViewport","_updateMapSize","sizeChanged","_updateMapStyle","jumpTo","_viewStateToMapboxProps","_ref$pitch","_ref$bearing","_ref$altitude","mapboxVersion","testElement","MAPBOX_LIMITS","_ref$maxZoom","_ref$minZoom","_ref$maxPitch","_ref$minPitch","_applyConstraints","_getUpdatedMapState","_this$_calculateNewLn","_calculateNewLngLat","_this$_calculateNewLn2","_ref5$deltaAngleX","_ref5$deltaAngleY","_this$_state","_calculateNewPitchAndBearing","_getRotationParams","_this$_state2","_zoomedViewport$getMa","_zoomedViewport$getMa2","_ref8","_ref9","_this$_viewportProps","_this$_viewportProps2","_this$_viewportProps3","onViewportChange","MapContextProvider","_useState","NO_TOKEN_WARNING","CONTAINER_STYLE","disableTokenWarning","visibilityConstraints","NoTokenWarning","StaticMap","accessTokenValid","setTokenState","_useState3","mapboxRef","mapDivRef","overlayRef","mapbox","queryRenderedFeatures","onScroll","constraints","constraintName","checkVisibilityConstraints","assertThisInitialized","WRAPPED_ANGULAR_PROPS","getEndValueByShortestPath","isWrappedAngularProp","REQUIRED_PROPS","_TransitionInterpolat","ViewportFlyToInterpolator","startViewportProps","endViewportProps","_startValue","_endValue","_step3","_iterator3","aroundLngLat","_WebMercatorViewport$","_WebMercatorViewport$2","_animationFrame","_onTransitionFrame","_updateViewport","_isTransitionInProgress","cropEasingFunction","_endTransition","shouldEnd","mapState","LINEAR_TRANSITION_PROPS","DEFAULT_INERTIA","newViewport","_transitionManager","getMapState","_event$offsetCenter","newMapState","viewStateChanged","mapStateProps","_options$eventManager","_options$isInteractiv","_options$scrollZoom","_options$dragPan","_options$dragRotate","_options$doubleClickZ","_options$touchZoom","_options$touchRotate","_options$keyboard","prevOptions","dimensionChanged","processViewportChange","_this3","_panRotate","_this$dragPan$inertia","_this$dragRotate$iner","_this$scrollZoom","_this$scrollZoom$spee","_this$scrollZoom$smoo","_this$touchZoom$inert","_newMapState","startPinchRotation","_this$touchRotate$ine","_newMapState2","_this$keyboard","_this$keyboard$zoomSp","_this$keyboard$moveSp","_this$keyboard$rotate","_this$keyboard$rotate2","clickRadius","interactiveLayerIds","onNativeClick","callbackName","isEntering","isExiting","onPointerClick","isDoubleClickEnabled","InteractiveMap","eventCanvasRef","staticMapRef","viewportUpdateRequested","stateUpdateRequested","handleViewportChange","_thisRef$props","_interactionState$isD","updateControllerOpts","eventCanvasStyle","_child","mapControlDefaultProps","captureScroll","captureDrag","captureClick","captureDoubleClick","capturePointerMove","mapControlPropTypes","useMapControl","onMount","_useMapControl","_containerRef","BaseControl","_PureComponent","_onScroll","_onDragStart","_onDblClick","_onClick","draggableControlPropTypes","draggableControlDefaultProps","getDragEventPosition","getDragLngLat","dragPos","dragOffset","_event$center","getDragEventOffset","setDragPos","setDragOffset","callbackEvent","crispPixel","crispPercentage","origSize","useDraggableControl","_getPosition","_context$viewport$pro","_context$viewport$pro2","_getPosition2","ANCHOR_POSITION","ANCHOR_TYPES","tipSize","closeOnClick","dynamicPosition","sortByDepth","onClose","Popup","contentRef","positionType","selfWidth","selfHeight","_ref$padding","_ANCHOR_POSITION$anch","cutoffY","bestAnchorY","minCutoff","xStep","cutoffX","bestAnchorX","_minCutoff","anchorPosition","getDynamicPosition","xPercentage","yPercentage","getContainerStyle","onReactClick","toggleLabel","customAttribution","AttributionControl","innerContainerRef","showCompact","setShowCompact","attributionContainer","_innerContainer","_updateAttributions","_updateEditLink","setupAttributioncontrol","removeAttributionControl","toggleAttribution","FullscreenControl","isFullscreen","setIsFullscreen","showButton","setShowButton","_useState5","_useState6","mapboxFullscreenControl","createMapboxFullscreenControl","_checkFullscreenSupport","onFullscreenChange","_fullscreen","_fullscreenchange","_onClickFullscreen","disabledLabel","positionOptions","fitBoundsOptions","trackUserLocation","showUserLocation","showAccuracyCircle","onGeolocate","enableHighAccuracy","GeolocateControl","geolocateButtonRef","mapboxGeolocateControl","createMapboxGeolocateControl","supportsGeolocation","setSupportsGeolocation","permissions","geolocation","geolocateButton","_getUIString","_setupUI","_geolocateButton","_watchState","setupMapboxGeolocateControl","_updateCamera","LngLat","toBounds","_ne","_context$viewport$fit","updateCamera","_clearWatch","triggerGeolocate","showCompass","showZoom","zoomInLabel","zoomOutLabel","compassLabel","VERSION_LEGACY","VERSION_1_6","renderButton","NavigationControl","uiVersion","version1","version2","part1","part2","compareVersions","renderCompass","ScaleControl","mapboxScaleControl","createMapboxScaleControl","_onMove","CanvasOverlay","setDrawingContext","HTMLOverlay","SVGOverlay","setRTLTextPlugin","workerBundleString","sharedChunk","p1x","p1y","p2x","p2y","sampleCurveX","sampleCurveY","sampleCurveDerivativeX","solveCurveX","solve","_sub","multByPoint","_multByPoint","divByPoint","_divByPoint","mult","_mult","_div","_rotate","rotateAround","_rotateAround","matMult","_matMult","_unit","perp","_perp","distSqr","angleTo","angleWith","angleWithSep","WorkerGlobalScope","mozCancelAnimationFrame","webkitCancelAnimationFrame","msCancelAnimationFrame","hardwareConcurrency","prefersReducedMotion","matchMedia","API_URL","EVENTS_URL","FEEDBACK_URL","REQUIRE_ACCESS_TOKEN","ACCESS_TOKEN","MAX_PARALLEL_IMAGE_REQUESTS","testSupport","_transformRequestFn","_customAccessToken","_createSkuToken","tokenExpiresAt","_skuToken","_skuTokenExpiresAt","_isSkuTokenExpired","normalizeStyleURL","_makeAPIURL","normalizeGlyphsURL","normalizeSourceURL","authority","normalizeSpriteURL","normalizeTileURL","canonicalizeTileURL","canonicalizeTileset","anonId","pendingRequest","getStorageKey","fetchEventData","saveEventData","processRequests","postEvent","sdkIdentifier","skuId","queueRequest","skuToken","postMapLoadEvent","postTurnstileEvent","lastSuccess","tokenU","Style","Source","Tile","Glyphs","SpriteImage","SpriteJSON","actor","requestParameters","cacheControl","_listeners","_oneTimeListeners","fire","listens","_eventedParent","_eventedParentData","setEventedParent","$version","$root","sprite","glyphs","source_vector","tms","promoteId","volatile","source_raster","raster","source_raster_dem","terrarium","source_geojson","clusterRadius","clusterMaxZoom","clusterMinPoints","lineMetrics","source_video","urls","source_image","hillshade","paint","layout_background","layout_fill","layout_circle","layout_heatmap","layout_line","butt","bevel","miter","requires","layout_symbol","both","uppercase","lowercase","layout_raster","layout_hillshade","filter_operator","in","exponential","categorical","lab","hcl","function_stop","paint_fill","paint_line","paint_circle","paint_heatmap","paint_symbol","overridable","paint_raster","paint_hillshade","paint_background","__line__","parseCSSColor","sensitivity","collator","Collator","resolvedLocale","fontStack","sections","expectedType","outputDefined","availableImages","parseColor","featureState","formattedSection","_parseColorCache","canonical","geometryType","canonicalID","_evaluate","definitions","overloads","checkSubtype","diacriticSensitive","boundExpression","_parse","typeAnnotation","outputs","interpolationFactor","haystack","cases","otherwise","outputIndex$1","beginIndex","hasUntypedArgument","currency","minFractionDigits","maxFractionDigits","NumberFormat","minimumFractionDigits","maximumFractionDigits","case","coalesce","let","literal","var","typeof","heatmapDensity","lineProgress","accumulated","isSupportedScript","upcase","downcase","_warningHistory","_evaluator","_enumValues","enum","resolvedImage","evaluateWithoutErrorHandling","_styleExpression","isStateDependent","zoomStops","interpolationType","_parameters","_specification","valueSpec","objectElementValidators","styleSpec","objectKey","arrayElementValidator","arrayIndex","expressionContext","propertyType","deserialize","needGeometry","layerType","constants","paintProperty","layoutProperty","_insertReadonly","_forEachCell","_insertCell","_queryCell","_convertToCellCoord","_convertFromCellCoord","toArrayBuffer","writeable","klass","shallow","_classRegistryKey","jn","$name","lastIntegerZoom","lastIntegerZoomTime","lastZoom","lastFloorZoom","Arabic","Khmer","Hiragana","Katakana","Bopomofo","Kanbun","pluginStatus","pluginURL","applyArabicShaping","processBidirectionalText","processStyledBidirectionalText","isParsed","getPluginURL","fadeDuration","zoomHistory","crossFadingFactor","getCrossfadeParameters","fromScale","toScale","specification","isDataDriven","possiblyEvaluate","transitioned","untransitioned","_values","defaultTransitionablePropertyValues","getTransition","setTransition","prior","defaultTransitioningPropertyValues","defaultPropertyValues","constantOr","defaultPossiblyEvaluatedValues","_calculate","overridableProperties","_featureFilter","_unevaluatedLayout","_transitionablePaint","setPaintProperty","setLayoutProperty","_transitioningPaint","_crossfadeParameters","getLayoutProperty","_validate","getPaintProperty","_handleSpecialPaintPropertyUpdate","_handleOverridablePaintPropertyUpdate","updateTransitions","recalculate","is3D","isTileClipped","hasOffscreenPass","_structArray","_pos1","_pos2","_pos4","_pos8","isTransferred","capacity","members","_trim","_refreshViews","int16","emplaceBack","emplace","float32","uint16","uint32","anchorPointX","anchorPointY","sourceLayerIndex","bucketIndex","glyphStartIndex","numGlyphs","vertexStartIndex","lowerSize","upperSize","lineOffsetX","lineOffsetY","writingMode","placedOrientation","crossTileID","associatedIconIndex","rightJustifiedTextSymbolIndex","centerJustifiedTextSymbolIndex","leftJustifiedTextSymbolIndex","verticalPlacedTextSymbolIndex","placedIconSymbolIndex","verticalPlacedIconSymbolIndex","textBoxStartIndex","textBoxEndIndex","verticalTextBoxStartIndex","verticalTextBoxEndIndex","iconBoxStartIndex","iconBoxEndIndex","verticalIconBoxStartIndex","verticalIconBoxEndIndex","numHorizontalGlyphVertices","numVerticalGlyphVertices","numIconVertices","numVerticalIconVertices","useRuntimeCollisionCircles","textBoxScale","textOffset0","textOffset1","collisionCircleDiameter","getoffsetX","getx","gety","gettileUnitDistanceFromAnchor","prepareSegment","MAX_VERTEX_ARRAY_LENGTH","vertexLength","sortKey","primitiveOffset","primitiveLength","vaos","simpleSegment","murmur3","murmur2","uniform1f","uniform2f","uniform3f","uniform4f","uniformMatrix4fv","setUniform","getBinding","patternFrom","patternTo","pixelRatioFrom","pixelRatioTo","setConstantPatternPositions","tlbr","paintVertexAttributes","paintVertexArray","populatePaintArray","_setPaintValue","updatePaintArray","paintVertexBuffer","createVertexBuffer","useIntegerZoom","zoomInPaintVertexArray","zoomOutPaintVertexArray","_setPaintValues","zoomInPaintVertexBuffer","zoomOutPaintVertexBuffer","binders","_buffers","populatePaintArrays","updatePaintArrays","getBinderAttributes","getBinderUniforms","getPaintVertexBuffers","updatePaintBuffers","programConfigurations","needsUpload","_featureMap","_bufferOffset","composite","loadGeometry","overscaling","hasPattern","layoutVertexArray","indexArray","stateDependentLayerIds","populate","stateDependentLayers","uploadPending","uploaded","layoutVertexBuffer","indexBuffer","createIndexBuffer","createBucket","queryRadius","queryIntersectsFeature","cameraToCenterDistance","clips","evaluationKey","_updateColorRamp","colorRamp","colorRampTexture","heatmapFbo","es","ns","as","patternDependencies","patternFeatures","indexArray2","segments2","indexBuffer2","us","ps","_pbf","_geometry","ys","ds","toGeoJSON","gs","bs","VectorTile","VectorTileFeature","VectorTileLayer","As","Ss","ks","Is","zs","Es","Cs","Ps","Ms","Bs","Ts","Vs","Fs","lineClipsArray","gradients","layoutVertexArray2","maxLineLength","layoutVertexBuffer2","lineFeatureClips","mapbox_clip_start","mapbox_clip_end","lineClips","scaledDistance","totalDistance","updateScaledDistance","updateDistance","addCurrentVertex","addHalfVertex","Ds","Ls","Os","Rs","gradientVersion","stepInterpolant","gradientExpression","Us","qs","Ns","Gs","Zs","toLocaleUpperCase","Xs","Js","Hs","Ys","$s","Ws","Qs","tu","eu","ru","nu","iu","au","ou","su","lu","pu","cu","hu","fu","yu","du","mu","advance","vu","gu","stretchX","stretchY","xu","displaySize","bu","haveRenderCallbacks","addImages","iconPositions","patternPositions","hasRenderCallback","patchUpdatedImages","dispatchRenderCallbacks","updatedImages","patchUpdatedImage","wu","horizontalOnly","_u","imageName","forText","forImage","Au","sectionIndex","imageSectionID","Su","fromFeature","verticalizePunctuation","Mu","positionedLines","iconsInText","verticalizable","getMaxScale","positionedGlyphs","lineOffset","getSection","getSectionIndex","getCharCode","ku","Tu","Bu","horizontalAlign","addImageSection","addTextSection","getNextImageSectionCharCode","Iu","zu","Cu","Eu","Pu","badness","priorBreak","Vu","collisionPadding","Fu","Du","layoutSize","Lu","uSize","uSizeT","Ou","Ru","getSizeData","evaluateSizeForFeature","evaluateSizeForZoom","SIZE_PACK_FACTOR","Uu","angleDelta","ju","qu","Nu","Ku","Gu","Zu","Xu","Ju","Yu","stretch","$u","glyphOffset","pixelOffsetTL","pixelOffsetBR","minFontScaleX","minFontScaleY","isSDF","Hu","Wu","boxStartIndex","circleDiameter","boxEndIndex","Qu","_down","_up","allowVerticalPlacement","textSizeData","compositeTextSizes","addSymbols","placedSymbolArray","compareText","yl","dynamicLayoutVertexArray","opacityVertexArray","dynamicLayoutVertexBuffer","opacityVertexBuffer","layoutAttributes","collisionVertexArray","collisionVertexBuffer","collisionBoxArray","hasRTLText","sortKeyRanges","collisionCircleArray","placementInvProjMatrix","placementViewportMatrix","iconSizeData","canOverlap","sortFeaturesByKey","sortFeaturesByY","writingModes","sourceID","createArrays","glyphOffsetArray","lineVertexArray","symbolInstances","calculateGlyphDependencies","iconDependencies","glyphDependencies","getValueAndResolveTokens","hasDebugData","textCollisionBox","iconCollisionBox","destroyDebugData","addToLineVertexArray","tileUnitDistanceFromAnchor","_addCollisionDebugVertex","addCollisionDebugVertices","addDebugCollisionBoxes","generateCollisionDebugBuffers","_deserializeCollisionBoxesForSymbol","textBox","textFeatureIndex","verticalTextBox","verticalTextFeatureIndex","iconBox","iconFeatureIndex","verticalIconBox","verticalIconFeatureIndex","deserializeCollisionBoxes","collisionArrays","hasTextData","hasIconData","hasTextCollisionBoxData","hasIconCollisionBoxData","addIndicesForPlacedSymbol","getSortedSymbolIndexes","sortedAngle","symbolInstanceIndexes","addToSortKeyRanges","symbolInstanceEnd","symbolInstanceStart","sortFeatures","featureSortOrder","MAX_GLYPHS","addDynamicAttributes","runtimeType","getOverride","hasOverride","_setPaintOverrides","hasPaintOverride","_interpolationType","Al","Sl","Il","renderingMode","prerender","zl","Cl","El","Pl","Ml","Bl","Tl","useMipmap","pixelStoreUnpackFlipY","pixelStoreUnpack","pixelStoreUnpackPremultiplyAlpha","isSizePowerOfTwo","Vl","_callback","_triggered","_channel","Fl","tasks","cancelCallbacks","receive","globalScope","Dl","targetMapId","mustQueue","sourceMapId","processTask","getWorkerSource","Ll","setSouthWest","setNorthEast","Ol","getNorthWest","getWest","getNorth","getSouthEast","getEast","getSouth","lon","Rl","Ul","Nl","Kl","Gl","fromLngLat","toLngLat","toAltitude","meterInMercatorCoordinateUnits","Zl","Hl","getTilePoint","Xl","Jl","overscaledZ","scaledTo","calculateScaledKey","isChildOf","isLessThan","unwrapTo","overscaleFactor","toUnwrapped","Yl","_idx","_unpackTerrarium","_unpackMapbox","getUnpackVector","getPixels","backfillBorder","$l","_stringToNumber","_numberToString","Wl","_vectorTileFeature","_z","Ql","stateChanges","deletedStates","removeFeatureState","initializeTileState","setFeatureState","coalesceChanges","tileID","grid3D","featureIndexArray","rp","np","ip","loadVTLayers","vtLayers","rawTileData","sourceLayerCoder","queryGeometry","queryPadding","cameraQueryGeometry","loadMatchingFeature","pixelPosMatrix","bucketLayerIDs","intersectionZ","lookupSymbolFeatures","hasLayer","ap","uses","expirationTime","hasSymbolBuckets","expiredRequestCount","registerFadeDuration","timeAdded","fadeEndTime","wasRequested","loadVectorData","unloadVectorData","latestFeatureIndex","latestRawTileData","justReloaded","imageAtlas","glyphAtlasImage","imageAtlasTexture","glyphAtlasTexture","getBucket","querySourceFeatures","_geojsonTileLayer","patternsLoaded","setExpiryData","getExpiryTimeout","holdingForFade","symbolFadeHoldUntil","symbolFadeFinished","clearFadeHold","setHoldDuration","setDependencies","hasDependency","_marks","mark","clearMarks","clearMeasures","Actor","AlphaImage","CanonicalTileID","CollisionBoxArray","DEMData","DataConstantProperty","DictionaryCoder","EXTENT","EvaluationParameters","Evented","FeatureIndex","FillBucket","FillExtrusionBucket","ImageAtlas","ImagePosition","LineBucket","LngLatBounds","MercatorCoordinate","ONE_EM","OverscaledTileID","Point$1","Properties","Protobuf","RGBAImage","RequestManager","RequestPerformance","ResourceType","SegmentVector","SourceFeatureState","StructArrayLayout1ui2","StructArrayLayout2f1f2i16","StructArrayLayout2i4","StructArrayLayout3ui6","StructArrayLayout4i8","SymbolBucket","Transitionable","Uniform1f","Uniform1i","Uniform2f","Uniform3f","Uniform4f","UniformColor","UniformMatrix4f","UnwrappedTileID","ValidationError","WritingMode","ZoomHistory","asyncAll","bezier","cacheEntryPossiblyAdded","getActor","clearTileCache","clone$1","clone$2","collisionCircleLayout","create$1","create$2","createCommonjsModule","createExpression","createLayout","createStyleLayer","dot$1","ease","emitValidationErrors","enforceCacheSizeLimit","evaluateVariableOffset","evented","featureFilter","fromRotation","getAnchorAlignment","getAnchorJustification","getArrayBuffer","getJSON","getRTLTextPluginStatus","getReferrer","getVideo","muted","onloadstart","isChar","isMapboxURL","keysDifference","makeRequest","mapObject","mercatorXfromLng","mercatorYfromLat","mercatorZfromAltitude","nextPowerOfTwo","offscreenCanvasSupported","parseGlyphPBF","performSymbolLayout","tilePixelRatio","iconsNeedLinear","compositeIconSizes","layoutTextSize","layoutIconSize","textMaxSize","sdfIcons","polygonIntersectsPolygon","potpack","refProperties","registerForPluginStateChange","renderColorRamp","scale$1","scale$2","setCacheLimits","sphericalToCartesian","triggerPluginCompletionEvent","validateCustomStyleLayer","validateLight","validateStyle","vectorTile","webpSupported","keyCache","_layerConfigs","familiesBySource","showCollisionBoxes","collectResourceTiming","returnDependencies","glyphMap","iconMap","glyphPositions","resourceTiming","reloadTile","reloadCallback","abortTile","removeTile","rawImageData","offscreenCanvas","offscreenCanvasContext","_feature","rawGeometry","keycache","valuecache","fromVectorTileJs","fromGeojsonVt","GeoJSONWrapper","numSimplified","numFeatures","tileCoords","indexMaxZoom","indexMaxPoints","splitTile","_geoJSONIndex","loadGeoJSON","_pendingCallback","abandoned","_pendingLoadDataParams","superclusterOptions","geojsonVtOptions","removeSource","getClusterChildren","getClusterLeaves","layerIndexes","workerSourceTypes","workerSources","demWorkerSources","registerWorkerSource","registerRTLTextPlugin","setReferrer","setImages","getLayerIndex","removedIds","loadDEMTile","getDEMWorkerSource","removeDEMTile","loadWorkerSource","syncRTLPluginState","getAvailableImages","isSealed","isFrozen","failIfMajorPerformanceCaveat","webGLContextAttributes","probablySupportsContext","supportsContext","notSupportedReason","antialias","createNS","disableDrag","enableDrag","userImage","suppressClick","touchPos","mouseButton","InstallTrigger","callbackDispatchedThisFrame","requestors","atlasImage","_notify","_validateStretch","_validateContent","updateImage","removeImage","listImages","getImages","getPixelSize","getPattern","_updatePatternAtlas","atlasTexture","beginFrame","requestManager","localIdeographFontFamily","setURL","getGlyphs","_tinySDF","loadGlyphRange","_doesCharSupportLocalGlyph","_transitionable","setLight","_transitioning","getLight","dashEntry","getDash","addDash","getDashRanges","isDash","zeroLength","addRoundDash","addRegularDash","actors","currentActor","acquire","vector_layers","vectorLayers","vectorLayerIds","broadcast","validateBounds","reparseOverscaled","_collectResourceTiming","_tileJSONRequest","_requestManager","tileBounds","_getMapId","sourceDataType","hasTile","setSourceProperty","sourceCaches","clearTiles","setTiles","_refreshExpiredTiles","roundZoom","getTileTexture","extTextureFilterAnisotropic","extTextureFilterAnisotropicMax","saveTileTexture","dem","needsHillshadePrepare","neighboringTiles","_getNeighboringTiles","backfilled","demTexture","_removed","_resourceTiming","_updateWorkerData","_finishLoading","setCoordinates","_boundsArray","boundsBuffer","boundsSegments","triggerRepaint","seek","seekable","_hasInvalidDimensions","_playing","calculatePosMatrix","maxPitchScaleFactor","tilesIn","wrappedTileID","queryResults","getFeatureState","_getAndRemoveByKey","getAndRemove","getByKey","setMaxSize","dynamicDraw","unbindVAO","bindElementBuffer","bindVertexBuffer","enableAttributes","setVertexAttribPointers","getDefault","extVertexArrayObject","colorAttachment","depthAttachment","ReadOnly","ReadWrite","depthFail","blendFunction","unblended","alphaBlended","backCCW","cullFaceSide","extTextureHalfFloat","extRenderToTextureHalfFloat","extTimerQuery","maxTextureSize","setCullFace","setDepthMode","setStencilMode","setColorMode","_sourceLoaded","_sourceErrored","_timers","_cacheTimers","_maxTileCacheSize","_loadedParentTiles","_coveredTiles","_shouldReloadOnResume","_abortTile","imageManager","getIds","getRenderableIds","_isIdRenderable","hasRenderableParent","findLoadedParent","_reloadTile","_tileLoaded","refreshedUponExpiration","_setTileReloadTimer","_backfillDEM","getTileByID","_retainLoadedChildren","_getLoadedTile","updateCacheSize","handleWrapJump","_prevLng","used","getVisibleUnwrappedCoordinates","coveringTiles","coveringZoomLevel","maxOverzooming","maxUnderzooming","_updateRetainedTiles","_addTile","_fadeDuration","_removeTile","_updateLoadedParentTileCache","releaseSymbolFadeTiles","getCameraQueryGeometry","getVisibleCoordinates","posMatrix","reloadTilesForDependencies","workers","workerCount","numActive","isPreloaded","addSource","setGeoJSONSourceData","setLayerZoomRange","setLayerProperty","setBearing","setPitch","setSprite","setGlyphs","_distances","boxCells","circleCells","xCellCount","yCellCount","circleKeys","boxKeys","circles","boxUid","circleUid","labelPlaneMatrix","glCoordMatrix","signedDistanceFromCamera","useVertical","notEnoughRoom","needsFlipping","keysLength","_insertBoxCell","insertCircle","_insertCircleCell","_query","hitTest","seenUids","_queryCircle","_queryCellCircle","hitTestCircle","_circleAndRectCollide","_circlesCollide","_convertToXCellCoord","_convertToYCellCoord","ignoredGrid","pitchfactor","_pitch","screenRightBoundary","screenBottomBoundary","gridRightBoundary","gridBottomBoundary","placeCollisionBox","projectAndGetPerspectiveRatio","perspectiveRatio","isInsideGrid","offscreen","isOffscreen","placeCollisionCircles","collisionDetected","queryRenderedSymbols","bucketInstanceId","insertCollisionBox","collisionGroupID","insertCollisionCircles","getViewportMatrix","placed","skipFade","invProjMatrix","crossSourceCollisions","maxGroupID","collisionGroups","collisionIndex","placements","opacities","variableOffsets","stale","commitTime","retainedQueryData","collisionCircleArrays","prevPlacement","placedOrientations","getBucketParts","bucket","textLabelPlaneMatrix","labelToScreenMatrix","textPixelRatio","partiallyEvaluatedTextSize","collisionGroup","attemptAnchorPlacement","prevAnchor","markUsedJustification","markUsedOrientation","placedGlyphBoxes","placeLayerBucketPart","zoomAtLastRecencyCheck","prevZoomAdjustment","zoomAdjustment","symbolFadeChange","lastPlacementChangeTime","updateLayerOpacities","updateBucketOpacities","hasTransitions","stillRecent","setStale","_sortAcrossTiles","_currentTileIndex","_currentPartIndex","_seenCrossTileIDs","_bucketParts","continuePlacement","_currentPlacementIndex","_forceFullPlacement","_showCollisionBoxes","_done","_inProgressLayer","indexedSymbolInstances","getScaledCoordinates","findMatches","maxCrossTileID","generate","usedCrossTileIDs","addBucket","removeBucketCrossTileIDs","removeStaleBuckets","crossTileIDs","maxBucketInstanceId","bucketsInCurrentPlacement","pruneUnusedLayers","glyphManager","lineAtlas","crossTileSymbolIndex","_serializedLayers","_availableImages","_resetUpdates","_rtlTextPluginCallback","_validateLayer","loadURL","_request","_load","loadJSON","loadEmpty","stylesheet","_loadSprite","_serializeLayers","_spriteRequest","_updatedSources","_checkLoaded","_changed","_updatedLayers","_removedLayers","_updateWorkerLayers","_reloadSource","_clearSource","_updateTilesForChangedImages","_updatedPaintProps","_changedImages","_afterImageUpdated","isSourceLoaded","_layerOrderChanged","getFilter","_flattenAndSortRenderedFeatures","addSourceType","getSourceType","setSourceType","workerSourceURL","_updateSources","_generateCollisionBoxes","_updatePlacement","pauseablePlacement","_releaseSymbolFadeTiles","getResource","fragmentSource","vertexSource","staticAttributes","staticUniforms","prelude","backgroundPattern","clippingMask","heatmapTexture","collisionBox","collisionCircle","fillOutline","fillOutlinePattern","fillExtrusion","fillExtrusionPattern","hillshadePrepare","lineGradient","linePattern","lineSDF","symbolIcon","symbolSDF","symbolTextAndIcon","boundProgram","boundLayoutVertexBuffer","boundPaintVertexBuffers","boundIndexBuffer","boundVertexOffset","boundDynamicVertexBuffer","boundDynamicVertexBuffer2","freshBind","numAttributes","currentNumAttributes","failedToCreate","bindAttribLocation","fixedUniforms","binderUniforms","tileZoom","u_image","u_texsize","u_scale","u_fade","u_pixel_coord_upper","u_pixel_coord_lower","u_matrix","u_lightpos","u_lightintensity","u_lightcolor","u_vertical_gradient","u_opacity","u_height_factor","u_world","pixelsToGLUnits","u_camera_to_center_distance","u_scale_with_map","translatePosMatrix","u_pitch_with_map","u_device_pixel_ratio","u_extrude_scale","u_pixels_to_tile_units","u_overscale_factor","u_inv_matrix","u_viewport_size","u_color","u_overlay","u_overlay_scale","u_intensity","u_ratio","u_units_to_pixels","u_image_height","u_patternscale_a","u_patternscale_b","u_sdfgamma","u_tex_y_a","u_tex_y_b","u_mix","u_tl_parent","u_scale_parent","u_buffer_scale","u_fade_t","u_image0","u_image1","u_brightness_low","u_brightness_high","u_saturation_factor","u_contrast_factor","u_spin_weights","u_is_size_zoom_constant","u_is_size_feature_constant","u_size_t","u_size","u_pitch","u_rotate_symbol","u_aspect_ratio","u_fade_change","u_label_plane_matrix","u_coord_matrix","u_is_text","u_texture","u_gamma_scale","u_is_halo","u_texsize_icon","u_texture_icon","u_pattern_tl_a","u_pattern_br_a","u_pattern_tl_b","u_pattern_br_b","u_pattern_size_a","u_pattern_size_b","u_scale_a","u_scale_b","u_tile_units_to_pixels","u_color_ramp","u_latrange","u_light","u_shadow","u_highlight","u_accent","u_dimension","u_zoom","u_unpack","circleArray","circleOffset","colorModeForRenderPass","shiftedAnchor","depthModeForSublayer","rotating","zooming","uniformValues","atlasTextureIcon","atlasInterpolation","atlasInterpolationIcon","hasHalo","TEXTURE1","stencilModeForClipping","rasterBoundsBuffer","quadTriangleIndexBuffer","rasterBoundsSegments","debugBuffer","tileBorderIndexBuffer","debugSegments","initDebugOverlayCanvas","debugOverlayCanvas","debugOverlayTexture","programConfiguration","viewportBuffer","viewportSegments","opaquePassEnabledForLayer","depthRangeFor3D","stencilModeFor3D","stencilConfigForOverlap","isPatternMissing","tileExtentBuffer","tileExtentSegments","custom","setCustomLayerDefaults","customLayerMatrix","setBaseState","_tileTextures","setup","numSublayers","depthEpsilon","gpuTimers","stencilClearMode","nextStencilID","currentStencilSource","_renderTileClippingMasks","_tileClippingMaskIDs","_showOverdrawInspector","opaquePassCutoff","renderLayer","showOverdrawInspector","showTileBoundaries","showPadding","centerPoint","gpuTimingStart","gpuTimingEnd","gpuTiming","createQueryEXT","beginQueryEXT","endQueryEXT","collectGpuTimers","queryGpuTimers","getQueryObjectEXT","deleteQueryEXT","fromInvProjectionMatrix","quadrant","maxValidLatitude","_renderWorldCopies","_minPitch","_maxPitch","setMaxBounds","_fov","_unmodified","_edgeInsets","_posMatrixCache","_alignedPosMatrixCache","renderWorldCopies","centerOffset","unmodified","_calcMatrices","zoomFraction","_constrain","isPaddingEqual","interpolatePadding","scaleZoom","aabb","fullyVisible","distanceSq","setLocationAtPoint","locationCoordinate","coordinateLocation","locationPoint","coordinatePoint","pointLocation","pixelMatrixInverse","pixelMatrix","getMaxBounds","lngRange","alignedProjMatrix","projMatrix","mercatorMatrix","_constraining","getCameraPoint","_hashName","_updateHash","_updateHashUnthrottled","addTo","_onHashChange","getHashString","getPitch","_getCurrentHash","touchZoomRotate","linearity","deceleration","maxSpeed","_inertiaBuffer","_drainInertiaBuffer","_onMoveEnd","pinchAround","bearingDelta","pitchDelta","panDelta","noMoveStart","getCanvasContainer","originalEvent","_defaultPrevented","lngLats","_clickTolerance","clickTolerance","_mousedownPos","_firePreventable","_delayContextMenu","_contextMenuEvent","_el","_startPos","_lastPos","mousemoveWindow","_box","_fireEvent","mouseupWindow","cameraAnimation","fitScreenCoordinates","keydown","numTouches","singleTap","numTaps","lastTap","_zoomIn","_zoomOut","easeTo","_moved","_lastPoint","_eventButton","_correctButton","_minTouches","_touches","_sum","_calculateTransform","_firstTwoTouches","_aroundCenter","_startDistance","_minDiameter","_startVector","_vector","_isBelowThreshold","_valid","_firstMove","_lastPoints","gestureBeginsVertically","panStep","bearingStep","pitchStep","_panStep","_bearingStep","_pitchStep","_rotationDisabled","easeId","disableRotation","enableRotation","_delta","_defaultZoomRate","_wheelZoomRate","setZoomRate","setWheelZoomRate","_finishTimeout","_zooming","_lastWheelEventTime","_type","_timeout","_onTimeout","_lastWheelEvent","_frameId","_around","_aroundPoint","_triggerRenderFrame","_targetZoom","_startZoom","_easing","_smoothOutEasing","noInertia","needsRenderFrame","_prevEase","_clickZoom","_tapZoom","_tap","_swipePoint","_swipeTouch","_tapTime","_mousePan","_touchPan","_inertiaOptions","_pitchWithRotate","pitchWithRotate","_mouseRotate","_mousePitch","_touchZoom","_touchRotate","_tapDragZoom","drag","_handlersById","_changes","_inertia","_bearingSnap","bearingSnap","_previousActiveHandlers","_eventsInProgress","_addDefaultHandlers","handleWindowEvent","boxZoom","touchPitch","handlerName","_updatingCamera","_fireEvents","_blockedByActive","_getMapTouches","mergeHandlerResult","_stop","_applyChanges","_updateMapTransform","resetNorth","_requestFrame","_renderTaskQueue","_moving","zoomTo","getPadding","setPadding","rotateTo","resetNorthPitch","snapToNorth","cameraForBounds","_cameraForBoxAndBearing","_fitInternal","flyTo","essential","_normalizeBearing","_normalizeCenter","_rotating","pitching","_pitching","_easeId","_prepareEase","_ease","_fireMoveEvents","_afterEase","isEasing","_easeFrameId","_cancelRenderFrame","_onEaseFrame","_onEaseEnd","_easeStart","_easeOptions","_requestRenderFrame","_renderFrameCallback","getDefaultPosition","_compactButton","_toggleAttribution","_setElementTitle","_updateCompact","_attribHTML","_editLink","styleOwner","_hash","rel","_updateLogo","_logoRequired","mapbox_logo","_queue","_cleared","_currentlyRunning","refreshExpiredTiles","maxTileCacheSize","_interactive","_failIfMajorPerformanceCaveat","_preserveDrawingBuffer","_antialias","_trackResize","_crossSourceCollisions","_crossFadingFactor","_controls","_mapId","maxBounds","_setupContainer","_setupPainter","_onWindowOnline","_onWindowResize","_localIdeographFontFamily","addControl","logoPosition","_controlPositions","removeControl","hasControl","_containerDimensions","_resizeCanvas","setMinZoom","getMinZoom","setMinPitch","getMinPitch","setMaxPitch","getMaxPitch","getRenderWorldCopies","setRenderWorldCopies","_createDelegatedListener","delegates","_delegatedListeners","_diffStyle","_updateStyle","_lazyInitEmptyStyle","_updateDiff","areTilesLoaded","hasImage","_canvasContainer","_detectMissingCSS","_missingCSSCanary","_contextLost","_contextRestored","_controlContainer","_onMapScroll","_styleDirty","_sourcesDirty","_placementDirty","layerTimes","_repaint","_fullyLoaded","loseContext","_showTileBoundaries","_showPadding","_vertices","_setCacheLimits","visualizePitch","_zoomInButton","_createButton","_zoomOutButton","_compass","_compassIcon","_updateZoomButtons","_rotateCompassArrow","_setButtonTitle","mouseRotate","mousePitch","offTemp","_anchor","_color","_draggable","_isDragging","_rotation","_rotationAlignment","rotationAlignment","_pitchAlignment","pitchAlignment","_element","_defaultMarker","_popup","_onMapClick","_addDragHandler","_onUp","getLngLat","_lngLat","setLngLat","setPopup","_onKeyPress","_originalTabIndex","togglePopup","getPopup","setOffset","_pointerdownPos","_positionDelta","isDraggable","setRotationAlignment","getRotationAlignment","setPitchAlignment","getPitchAlignment","maximumAge","_geolocationWatchID","clearWatch","_userLocationDotMarker","_accuracyCircleMarker","_isOutOfMapMaxBounds","_setErrorState","_onSuccess","_updateMarker","_finish","_lastKnownPosition","_dotElement","geolocateSource","_accuracy","_updateCircleRadius","_circleElement","_setup","watchPosition","getCurrentPosition","setUnit","_changeIcon","fullscreenEnabled","mozFullScreenEnabled","msFullscreenEnabled","webkitFullscreenEnabled","_fullscreenButton","_updateTitle","_getTitle","_isFullscreen","exitFullscreen","mozCancelFullScreen","msExitFullscreen","webkitCancelFullScreen","requestFullscreen","mozRequestFullScreen","msRequestFullscreen","webkitRequestFullscreen","focusAfterOpen","_onClose","closeOnMove","_focusFirstElement","_trackPointer","_onMouseUp","_onDrag","trackPointer","setText","setDOMContent","setHTML","createDocumentFragment","_createCloseButton","toggleClassName","_closeButton","_tip","prewarm","clearPrewarmedResources","maxParallelImageRequests","bodyOpenClassName","portalClassName","_createClass","_reactDom2","_propTypes2","_ModalPortal2","ariaAppHider","_safeHTMLElement","_safeHTMLElement2","_reactLifecyclesCompat","isReact16","createHTMLElement","getCreatePortal","getParentElement","parentSelector","Modal","_Component","_temp","removePortal","portalRef","renderPortal","prevParent","_props","closesAt","closeTimeoutMS","beforeClose","closeWithTimeout","htmlOpenClassName","afterOpen","overlayClassName","appElement","SafeHTMLCollection","SafeNodeList","onAfterOpen","onRequestClose","ariaHideApp","shouldFocusAfterRender","shouldCloseOnOverlayClick","shouldReturnFocusAfterClose","contentLabel","shouldCloseOnEsc","overlayElement","contentElement","contentEl","WebkitOverflowScrolling","focusManager","_scopeTab2","_portalOpenInstances2","CLASS_NAMES","ariaHiddenInstances","ModalPortal","setOverlayRef","setContentRef","afterClose","parentDocument","returnFocus","teardownScopedFocus","popWithoutFocus","onAfterClose","beforeOpen","closeTimer","setupScopedFocus","markForFocusLater","openAnimationFrame","overlayEl","closeWithoutTimeout","focusContent","contentHasFocus","isTabKey","isEscKey","requestClose","handleOverlayOnClick","shouldClose","ownerHandlesClose","handleContentOnMouseUp","handleOverlayOnMouseDown","handleContentOnClick","handleContentOnMouseDown","shouldBeClosed","buildClassName","additional","attributesFromObject","moveFromContentToOverlay","_props2","contentStyles","overlayStyles","overlayProps","contentProps","resetState","globalElement","assertNodeList","useElement","validateElement","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_iteratorNormalCompletion2","_didIteratorError2","_iteratorError2","documentNotReadyOrSSRTesting","_warning2","HTMLCollection","_arr2","_i2","openInstances","htmlClassList","removeClass","_cls","docBodyClassList","classString","classListRef","incrementReference","decrementReference","focusLaterElements","handleBlur","handleFocus","modalElement","_tabbable2","needToFocus","portalOpenInstances","PortalOpenInstances","openInstance","subscribers","SafeHTMLElement","tabbable","getActiveElement","checkSafari","findTabbableDescendants","DISPLAY_NONE","DISPLAY_CONTENTS","tabbableNode","hidesContents","zeroSize","isNotOverflowing","exception","isTabIndexNaN","isTabIndexNotNaN","_Modal2","ReactReduxContext","getBatch","nullListeners","createSubscription","parentSub","handleChangeWrapper","trySubscribe","addNestedSub","isSubscribed","createListenerCollection","notifyNestedSubs","tryUnsubscribe","NO_SUBSCRIPTION_ARRAY","storeStateUpdatesReducer","updateCount","useIsomorphicLayoutEffectWithArgs","effectFunc","effectArgs","captureWrapperProps","lastWrapperProps","lastChildProps","renderIsScheduled","wrapperProps","actualChildProps","childPropsFromStoreUpdate","subscribeUpdates","shouldHandleStateChanges","childPropsSelector","forceComponentUpdateDispatch","didUnsubscribe","lastThrownError","checkForUpdates","newChildProps","latestStoreState","initStateUpdates","connectAdvanced","selectorFactory","_ref2$getDisplayName","_ref2$methodName","_ref2$renderCountProp","renderCountProp","_ref2$shouldHandleSta","_ref2$storeKey","storeKey","_ref2$forwardRef","withRef","_ref2$context","connectOptions","wrappedComponentName","selectorFactoryOptions","usePureOnlyMemo","ConnectFunction","_useMemo","reactReduxForwardedRef","propsContext","ContextToUse","Consumer","didStoreComeFromProps","createChildSelector","_useMemo2","overriddenContextValue","_useReducer","previousStateUpdateResult","renderedWrappedComponent","Connect","forwarded","shallowEqual","objA","objB","keysA","keysB","wrapMapToPropsConstant","getConstant","constantSelector","dependsOnOwnProps","getDependsOnOwnProps","mapToProps","wrapMapToPropsFunc","stateOrDispatch","ownProps","mapDispatchToProps","boundActionCreators","bindActionCreators","mapStateToProps","defaultMergeProps","stateProps","dispatchProps","mergeProps","areMergedPropsEqual","hasRunOnce","nextMergedProps","wrapMergePropsFunc","impureFinalPropsSelectorFactory","pureFinalPropsSelectorFactory","areStatesEqual","areOwnPropsEqual","areStatePropsEqual","hasRunAtLeastOnce","nextOwnProps","nextStateProps","statePropsChanged","handleSubsequentCalls","finalPropsSelectorFactory","initMapStateToProps","initMapDispatchToProps","initMergeProps","factories","strictEqual","createConnect","_ref$connectHOC","connectHOC","_ref$mapStateToPropsF","mapStateToPropsFactories","_ref$mapDispatchToPro","mapDispatchToPropsFactories","_ref$mergePropsFactor","mergePropsFactories","_ref$selectorFactory","_ref3$pure","_ref3$areStatesEqual","_ref3$areOwnPropsEqua","_ref3$areStatePropsEq","_ref3$areMergedPropsE","extraOptions","createStoreHook","useReduxContext","createDispatchHook","useStore","useDispatch","refEquality","createSelectorHook","equalityFn","_useReduxContext","contextSub","latestSubscriptionCallbackError","latestSelector","latestSelectedState","storeState","newSelectedState","newStoreState","_newSelectedState","useSelectorWithStoreAndSubscription","useSelector","createSearchParams","BrowserRouter","historyRef","navigationType","Link","reloadDocument","preventScrollReset","internalOnClick","replaceProp","isModifiedEvent","shouldProcessLinkClick","useLinkClickHandler","DataRouterHook","DataRouterStateHook","useSearchParams","defaultInit","defaultSearchParamsRef","locationSearch","defaultSearchParams","getSearchParamsForLocation","setSearchParams","nextInit","navigateOptions","newSearchParams","DataStaticRouterContext","DataRouterContext","DataRouterStateContext","LocationContext","RouteContext","outlet","RouteErrorContext","useHref","useInRouterContext","useResolvedPath","joinedPathname","useLocation","useNavigate","routePathnamesJson","activeRef","useParams","routeMatch","_temp2","DefaultErrorElement","_state$errors","useDataRouterState","UseRouteError","thisRoute","useRouteError","preStyles","codeStyles","RenderErrorBoundary","errorInfo","RenderedRoute","routeContext","dataStaticRouterContext","errorElement","_deepestRenderedBoundaryId","AwaitRenderStatus","dataRouterState","Route","Router","basenameProp","locationProp","static","staticProp","navigationContext","trailingPathname","Routes","dataRouterContext","dataRouterStateContext","parentMatches","parentParams","parentPathnameBase","locationFromContext","_parsedLocationArg$pa","parsedLocationArg","renderedMatches","errorIndex","_renderMatches","useRoutes","router","createRoutesFromChildren","treePath","hasErrorBoundary","shouldRevalidate","stateManagedProps","_ref$defaultOptions","propsDefaultOptions","_ref$cacheOptions","cacheOptions","propsLoadOptions","_ref$isLoading","propsIsLoading","propsOnInputChange","onInputChange","_ref$filterOption","restSelectProps","propsInputValue","lastRequest","stateInputValue","setStateInputValue","_useState7","_useState8","loadedInputValue","setLoadedInputValue","_useState9","_useState10","loadedOptions","setLoadedOptions","_useState11","_useState12","passEmptyOptions","setPassEmptyOptions","_useState13","_useState14","optionsCache","setOptionsCache","_useState15","_useState16","prevDefaultOptions","setPrevDefaultOptions","_useState17","_useState18","prevCacheOptions","setPrevCacheOptions","actionMeta","useAsync","selectProps","A11yText","defaultAriaLiveMessages","guidance","isSearchable","isMulti","tabSelectsValue","_props$label","_props$label2","selectValue","getArrayIndex","onFilter","resultsMessage","LiveRegion","ariaSelection","focusedOption","focusedValue","focusableOptions","ariaLiveMessages","getOptionLabel","isOptionDisabled","menuIsOpen","screenReaderStatus","ariaLive","messages","ariaSelected","selectedOptions","removedValue","removedValues","asOption","multiSelected","onChangeProps","ariaFocused","focusMsg","onFocusProps","ariaResults","resultsMsg","ariaGuidance","guidanceMsg","ariaContext","ScreenReaderText","isInitialFocus","diacritics","anyDiacritic","diacriticToBase","diacritic","stripDiacritics","memoizedStripDiacriticsForInput","trimString","defaultStringify","DummyInput","filteredProps","caretColor","STYLE_KEYS","LOCK_STYLES","preventTouchMove","allowTouchMove","preventInertiaScroll","totalScroll","currentScroll","isTouchDevice","activeScrollLocks","listenerOptions","blurSelectInput","ScrollManager","lockEnabled","_ref$captureEnabled","captureEnabled","setScrollCaptureTarget","onBottomArrive","onBottomLeave","onTopArrive","onTopLeave","scrollTarget","handleEventDelta","_scrollTarget$current","isDeltaPositive","availableScroll","shouldCancelScroll","cancelScroll","startListening","notPassive","stopListening","useScrollCapture","setScrollLockTarget","_ref$accountForScroll","accountForScrollbars","originalStyles","addScrollLock","touchScrollTarget","currentPadding","adjustedPadding","removeScrollLock","useScrollLock","clearIndicator","dropdownIndicator","groupHeading","indicatorsContainer","indicatorSeparator","loadingIndicator","loadingMessage","menuPortal","multiValue","multiValueLabel","multiValueRemove","noOptionsMessage","singleValue","valueContainer","primary75","primary50","primary25","danger","dangerLight","neutral0","neutral5","neutral10","neutral20","neutral30","neutral40","neutral50","neutral60","neutral70","neutral80","neutral90","baseUnit","controlHeight","menuGutter","backspaceRemovesValue","blurInputOnSelect","captureMenuScroll","closeMenuOnSelect","closeMenuOnScroll","controlShouldRenderValue","escapeClearsValue","rawInput","__isNew__","_ignoreCase$ignoreAcc","ignoreAccents","matchFrom","formatGroupLabel","getOptionValue","maxMenuHeight","minMenuHeight","menuPlacement","menuPosition","menuShouldBlockScroll","menuShouldScrollIntoView","openMenuOnFocus","openMenuOnClick","toCategorizedOption","_isOptionDisabled","_isOptionSelected","buildCategorizedOptions","groupOrOption","groupOrOptionIndex","categorizedOptions","optionIndex","categorizedOption","buildFocusableOptionsFromCategorizedOptions","optionsAccumulator","_props$inputValue","shouldHideSelectedOptions","_filterOption","isOptionSelected","hideSelectedOptions","Select","inputIsHidden","clearFocusValueOnUpdate","prevWasFocused","inputIsHiddenAfterUpdate","blockOptionHover","isComposing","commonProps","initialTouchX","initialTouchY","instancePrefix","openAfterFocus","scrollToFocusedOptionOnUpdate","userIsDragging","controlRef","getControlRef","focusedOptionRef","getFocusedOptionRef","menuListRef","getMenuListRef","getInputRef","focusInput","blurInput","ariaOnChange","prevInputValue","onMenuClose","selectOption","_this$props3","deselected","removeValue","clearValue","popValue","lastSelectedValue","classNamePrefix","getElementId","getComponents","getCategorizedOptions","buildFocusableOptions","getFocusableOptions","onMenuMouseDown","onMenuMouseMove","onControlMouseDown","openMenu","onDropdownIndicatorMouseDown","_this$props4","onClearIndicatorMouseDown","onCompositionStart","onCompositionEnd","onControlTouchEnd","onClearIndicatorTouchEnd","onDropdownIndicatorTouchEnd","handleInputChange","onMenuOpen","onInputFocus","onInputBlur","onOptionHover","_this$props5","isClearable","focusValue","focusOption","startListeningComposition","startListeningToTouch","_this$props6","stopListeningComposition","stopListeningToTouch","openAtIndex","nextFocus","_this$props7","formatOptionLabel","_inputValue","_selectValue","_this$props8","inputId","_this$state4","ariaAttributes","autoCapitalize","autoComplete","autoCorrect","spellCheck","inputMode","_this$getComponents2","MultiValue","MultiValueContainer","MultiValueLabel","MultiValueRemove","SingleValue","Placeholder","_this$props9","_this$state5","innerProps","isOptionFocused","Container","Remove","removeProps","ClearIndicator","_this$props10","LoadingIndicator","_this$props11","_this$getComponents5","DropdownIndicator","IndicatorSeparator","_this4","_this$getComponents7","GroupHeading","MenuList","MenuPortal","LoadingMessage","NoOptionsMessage","Option","_this$props12","menuPortalTarget","onMenuScrollToTop","onMenuScrollToBottom","menuUI","hasOptions","headingId","Heading","headingProps","_message","menuPlacementProps","menuElement","_ref4$placerProps","placerProps","scrollTargetRef","appendTo","controlElement","_this5","_this$props13","_this$state6","_this$getComponents8","IndicatorsContainer","SelectContainer","ValueContainer","_this$props14","getCommonProps","renderLiveRegion","renderPlaceholderOrValue","renderInput","renderClearIndicator","renderLoadingIndicator","renderIndicatorSeparator","renderDropdownIndicator","renderMenu","renderFormField","newMenuOptionsState","nextSelectValue","lastFocusedIndex","getNextFocusedValue","lastFocusedOption","getNextFocusedOption","newInputIsHiddenState","newAriaSelection","hasKeptFocus","_objectSpread2","_createSuper","_excluded$3","applyPrefixToName","cleanCommonProps","_newValue","isDocumentElement","animatedScrollTo","animateScroll","scrollIntoView","menuRect","focusedRect","overScroll","isTouchCapable","isMobileDevice","passiveOptionAccessed","supportsPassiveEvents","notNullish","valueTernary","singleValueAsValue","multiValueAsValue","propsObj","coercePlacement","menuCSS","_ref2$theme","alignToControl","PortalPlacementContext","getPortalPlacement","MenuPlacer","getPlacement","isFixedPosition","shouldScroll","scrollParent","excludeStaticParent","overflowRx","getScrollParent","_menuEl$getBoundingCl","menuBottom","menuHeight","menuTop","containerTop","viewSpaceAbove","viewSpaceBelow","scrollSpaceAbove","scrollSpaceBelow","scrollDown","scrollUp","scrollDuration","_constrainedHeight","spaceAbove","_constrainedHeight2","getMenuPlacement","getUpdatedProps","menuListCSS","noticeCSS","_ref5$theme","noOptionsMessageCSS","loadingMessageCSS","_templateObject","menuPortalCSS","_Component2","_super2","isFixed","getBoundingClientObj","scrollDistance","menuWrapper","containerCSS","valueContainerCSS","indicatorsContainerCSS","_excluded$2","Svg","CrossIcon","DownChevron","baseCSS","_ref3$theme","dropdownIndicatorCSS","clearIndicatorCSS","indicatorSeparatorCSS","_ref4$theme","loadingDotAnimations","loadingIndicatorCSS","LoadingDot","css$1","_ref$theme","groupCSS","groupHeadingCSS","inputCSS","spacingStyle","multiValueCSS","multiValueLabelCSS","cropWithEllipsis","multiValueRemoveCSS","MultiValueGeneric","optionCSS","WebkitTapHighlightColor","placeholderCSS","_cleanCommonProps","indicators","inputClassName","emotionCx","defaultComponents","baseSelectProps","useStateManager","_ref$defaultInputValu","defaultInputValue","_ref$defaultMenuIsOpe","defaultMenuIsOpen","_ref$defaultValue","propsMenuIsOpen","propsOnChange","propsOnMenuClose","propsOnMenuOpen","propsValue","stateMenuIsOpen","setStateMenuIsOpen","stateValue","setStateValue","ArrowContainer","jsx_runtime_1","useArrowContainer_1","popoverRect","arrowColor","arrowClassName","externalArrowStyle","arrowStyle","externalArrowContainerStyle","useArrowContainer","arrowContainerStyle","mergedContainerStyle","mergedArrowStyle","Popover","usePopover","PopoverPortal_1","util_1","usePopover_1","useMemoizedArray_1","useHandlePrevValues_1","ArrowContainer_1","DEFAULT_POSITIONS","PopoverInternal","externalRef","externalPositions","reposition","boundaryElement","containerClassName","transformMode","boundaryInset","onClickOutside","clickOutsideCapture","useMemoizedArray","useHandlePrevValues","updatePrevValues","childRef","nudgedLeft","nudgedTop","EMPTY_RECT","boundaryRect","violations","hasViolations","popoverState","setPopoverState","onPositionPopover","positionPopover","popoverRef","scoutRef","updatePopover","rectsAreEqual","popoverElement","handleOnClickOutside","handleWindowResize","handleRef","PopoverPortal","scoutElement","arrowWidth","lowerBound","leftUpperBound","topUpperBound","useElementRef","createContainer","prevPositions","prevReposition","prevTransformMode","prevTransform","prevBoundaryElement","prevBoundaryInset","externalArray","prevArrayRef","useElementRef_1","POPOVER_STYLE","SCOUT_STYLE","scoutRect","inputTop","inputLeft","finalLeft_1","finalTop_1","createRect","isExhausted","getNewPopoverRect","boundaryViolation","shouldNudge","getNudgedPopoverRect","finalTop","finalLeft","potentialViolations","transformTop","transformLeft","popoverRectForPosition","targetMidX","targetMidY","topBoundary","leftBoundary","rightBoundary","bottomBoundary","windowObject","cancelFrame","clearTimeoutFn","setTimeoutFn","cancelAnimationFrameFn","requestAnimationFrameFn","animationFrameID","AutoSizer","scaledHeight","scaledWidth","_autoSizer","_detectElementResize","_parentNode","_resizeObserver","_onResize","disableHeight","disableWidth","_setRef","autoSizer","ResizeObserverInstance","animationKeyframes","animationStartEvent","animationStyle","checkTriggers","resetTriggers","scrollListener","__resizeTriggers__","contract","lastElementChild","expandChild","__resizeLast__","__resizeRAF__","__resizeListeners__","keyframeprefix","domPrefixes","startEvents","pfx","addResizeListener","elementStyle","createStyles","expandTrigger","contractTrigger","__animationListener__","removeResizeListener","createDetectElementResize","doNotBailOutOnEmptyChildren","outerStyle","childParams","bailoutOnChildren","cancelTimeout","getScrollbarSize","cachedRTLResult","getRTLOffsetType","outerDiv","innerDiv","innerStyle","defaultItemKey$1","createListComponent","_class","getItemOffset","getEstimatedTotalSize","getItemSize","getOffsetForIndexAndAlignment","getStartIndexForOffset","getStopIndexForStartIndex","initInstanceProps","shouldResetStyleCacheOnItemSizeChange","_instanceProps","_outerRef","_resetIsScrollingTimeoutId","isScrolling","scrollDirection","scrollOffset","initialScrollOffset","scrollUpdateWasRequested","_callOnItemsRendered","overscanStartIndex","overscanStopIndex","visibleStartIndex","visibleStopIndex","onItemsRendered","_callOnScroll","_getItemStyle","itemStyleCache","_getItemStyleCache","offsetHorizontal","___","_onScrollHorizontal","_event$currentTarget","_resetIsScrollingDebounced","_onScrollVertical","_event$currentTarget2","_outerRefSetter","outerRef","_resetIsScrolling","validateSharedProps$1","scrollToItem","scrollbarSize","_callPropsCallbacks","innerElementType","innerTagName","itemData","_this$props5$itemKey","outerElementType","outerTagName","useIsScrolling","_this$_getRangeToRend","_getRangeToRender","stopIndex","estimatedTotalSize","_this$_getRangeToRend2","_overscanStartIndex","_overscanStopIndex","_visibleStartIndex","_visibleStopIndex","_scrollDirection","_scrollOffset","_scrollUpdateWasRequested","overscanCount","overscanBackward","overscanForward","getItemMetadata$1","instanceProps","itemMetadataMap","lastMeasuredIndex","itemMetadata","findNearestItemBinarySearch$1","estimatedItemSize","totalSizeOfMeasuredItems","VariableSizeList","findNearestItemExponentialSearch$1","findNearestItem$1","resetAfterIndex","shouldForceUpdate","__self","_status","_result","act","_threadCount","_globalName","createFactory","lazy","startTransition","unstable_act","formatProdErrorMessage","$$observable","ActionTypes","INIT","PROBE_UNKNOWN_ACTION","enhancer","currentReducer","currentState","currentListeners","nextListeners","isDispatching","ensureCanMutateNextListeners","replaceReducer","nextReducer","outerSubscribe","observeState","combineReducers","reducerKeys","finalReducers","shapeAssertionError","finalReducerKeys","assertReducerShape","hasChanged","previousStateForKey","nextStateForKey","bindActionCreator","applyMiddleware","middlewares","_dispatch","middlewareAPI","NOT_FOUND","defaultEqualityCheck","defaultMemoize","equalityCheckOrOptions","providedOptions","equalityCheck","_providedOptions$equa","_providedOptions$maxS","resultEqualityCheck","createCacheKeyComparator","cacheIndex","createLruCache","matchingEntry","clearCache","createSelectorCreator","memoizeOptionsFromArgs","_lastResult","_recomputations","directlyPassedOptions","memoizeOptions","resultFunc","_directlyPassedOption2","finalMemoizeOptions","dependencyTypes","getDependencies","memoizedResultFunc","recomputations","resetRecomputations","createSelector","MapShim","__entries__","global$1","requestAnimationFrame$1","mutationObserverSupported","ResizeObserverController","connected_","mutationEventsAdded_","mutationsObserver_","observers_","onTransitionEnd_","leadingCall","trailingCall","resolvePending","timeoutCallback","addObserver","connect_","removeObserver","disconnect_","updateObservers_","activeObservers","gatherActive","hasActive","broadcastActive","instance_","defineConfigurable","getWindowOf","emptyRect","createRectInit","toFloat","getBordersSize","isSVGGraphicsElement","SVGGraphicsElement","getContentRect","getSVGContentRect","positions_1","getPaddings","horizPad","vertPad","vertScrollbar","horizScrollbar","getHTMLElementContentRect","ResizeObservation","broadcastWidth","broadcastHeight","contentRect_","broadcastRect","ResizeObserverEntry","rectInit","Constr","DOMRectReadOnly","ResizeObserverSPI","callbackCtx","activeObservations_","observations_","callback_","controller_","callbackCtx_","observations","clearActive","observation","priorityLevel","scheduling","isInputPending","unstable_Profiling","unstable_continueExecution","unstable_forceFrameRate","unstable_getFirstCallbackNode","unstable_next","unstable_pauseExecution","unstable_runWithPriority","unstable_wrapCallback","SizeSensorId","SensorTabIndex","SensorClassName","_sensorPool","sensor","getSensor","removeSensor","Sensors","_sensors","_constant","sensorId","newId","createSensor","_object","_debounce","whenDestroy","resizeListener","contentDocument","newSensor","hexRegex","numRegex","consider","decimalPoint","trimmedStr","skipLike","numTrimmedByZeros","oldLocals","isNamedExport","isEqualLocals","styleTarget","stylesInDom","getIndexByIdentifier","modulesToDom","idCountMap","identifiers","references","addStyle","insertStyleElement","textStore","replaceText","applyToSingletonTag","cssNode","applyToTag","singleton","singletonCounter","styleIndex","removeStyleElement","lastIdentifiers","newLastIdentifiers","d2r","r2d","tileToBBOX","tile2lon","tile2lat","tilesEqual","tile1","tile2","hasSiblings","quadkeyToTile","bboxToTile","bboxCoords","getBboxZoom","root_","size_","array_","addAll","interfaces_","equalsWithTolerance","doubleToLongBits","longBitsToDouble","NULL_ORDINATE","DimensionalComparator","serialVersionUID","setOrdinate","equals2D","getOrdinate","equals3D","equalInZ","distance3D","hashCode","setCoordinate","_dimensionsToTest","INTERIOR","BOUNDARY","EXTERIOR","toLocationSymbol","LOG_10","setCharAt","intValue","isWhitespace","_hi","_lo","PI_2","EPS","SPLIT","MAX_PRINT_DIGITS","TEN","SCI_NOT_EXPONENT_CHAR","SCI_NOT_ZERO","extractSignificantDigits","selfAdd","sqr","doubleValue","selfSubtract","getSpecialNumberString","selfDivide","dump","createNaN","selfMultiply","reciprocal","rint","selfSqr","toStandardNotation","toSciNotation","stringOfChar","signum","isDigit","DP_SAFE_EPSILON","orientationIndex","orientationIndexFilter","signOfDet2x2","getCoordinate","getCoordinateCopy","getX","expandEnvelope","toCoordinateArray","arraycopy","_minx","_maxx","_miny","_maxy","getMaxX","getMaxY","getMinX","getMinY","expandToInclude","setToNull","maxExtent","expandBy","emptyTypeStr","spaces","parenComma","doubleParenComma","trimParens","geometryFactory","extractGeometry","getGeometryType","_coordinates","multipoint","_geometries","linearring","multilinestring","_shell","_holes","multipolygon","geometrycollection","createPoint","createMultiPoint","createLineString","createLinearRing","createMultiLineString","createMultiPolygon","createGeometryCollection","toLineString","shouldNeverReachHere","_inputLines","_intPt","_intLineIndex","_isProper","_pa","_pb","_precisionModel","DONT_INTERSECT","DO_INTERSECT","COLLINEAR","NO_INTERSECTION","POINT_INTERSECTION","COLLINEAR_INTERSECTION","getIndexAlongSegment","computeIntLineIndex","getTopologySummary","isEndPoint","isCollinear","computeIntersection","computeIntersect","getIntersectionNum","getEdgeDistance","isProper","hasIntersection","setPrecisionModel","isInteriorIntersection","computeEdgeDistance","getEndpoint","isIntersection","getIntersectionAlongSegment","nonRobustComputeEdgeDistance","isInSegmentEnvelopes","normalizeToMinimum","smallestInAbsValue","safeHCoordinateIntersection","nearestEndpoint","intersectionWithNormalization","makePrecise","checkDD","println","normalizeToEnvCentre","computeCollinearIntersection","distancePointLine","_crossingCount","_isPointOnSegment","countSegment","isOnSegment","locatePointInRing","COUNTERCLOCKWISE","STRAIGHT","distanceLineLine","isPointInRing","computeLength","isCCW","computeOrientation","distancePointLinePerpendicular","isOnLine","_envelope","_SRID","_userData","getSRID","SORTINDEX_POINT","SORTINDEX_MULTIPOINT","SORTINDEX_LINESTRING","SORTINDEX_LINEARRING","SORTINDEX_MULTILINESTRING","SORTINDEX_POLYGON","SORTINDEX_MULTIPOLYGON","SORTINDEX_GEOMETRYCOLLECTION","geometryChangedFilter","getFactory","getGeometryN","isRectangle","equalsTopo","equalsExact","geometryChangedAction","equalsNorm","getLength","getNumGeometries","compareToSameClass","getUserData","getEnvelope","toGeometry","getEnvelopeInternal","checkNotGeometryCollection","getPrecisionModel","computeEnvelopeInternal","setSRID","setUserData","hasNext","isGeometryCollectionOrDerived","hasNonEmptyElements","hasNullElements","Mod2BoundaryNodeRule","EndPointBoundaryNodeRule","MultiValentEndPointBoundaryNodeRule","MonoValentEndPointBoundaryNodeRule","MOD2_BOUNDARY_RULE","ENDPOINT_BOUNDARY_RULE","MULTIVALENT_ENDPOINT_BOUNDARY_RULE","MONOVALENT_ENDPOINT_BOUNDARY_RULE","OGC_SFS_BOUNDARY_RULE","isInBoundary","ensureCapacity","arrayList_","position_","coordArrayType","closeRing","ForwardComparator","BidirectionalComparator","isRing","ptNotInList","hasRepeatedPoints","removeRepeatedPoints","removeNull","copyDeep","isEqualReversed","envelope","atLeastNCoordinatesOrNothing","increasingDirection","minCoordinate","OLDcompare","entrySet","hashSet_","fixAfterInsertion","getFirstEntry","treeSet_","asList","FALSE","TRUE","DONTCARE","SYM_FALSE","SYM_TRUE","SYM_DONTCARE","SYM_P","SYM_L","SYM_A","toDimensionSymbol","toDimensionValue","isGeometryChanged","getNumPoints","isEquivalentClass","getBoundaryDimension","getBoundary","_geom","_geomFact","_bnRule","_endpointMap","boundaryMultiLineString","getEmptyMultiPoint","computeBoundaryCoordinates","createMultiPointFromCoords","boundaryLineString","getStartPoint","getEndPoint","addEndpoint","getCoordinateN","NEWLINE","SIMPLE_ORDINATE_FORMAT","getStackTrace","printStackTrace","readLine","copyCoord","ensureValidRing","createClosedRing","getPointN","getCoordinateSequence","getCoordinateSequenceFactory","isCoordinate","getNumInteriorRing","convexHull","getExteriorRing","getInteriorRingN","validateConstruction","MINIMUM_VALID_SIZE","_isUserDataCopied","NoOpGeometryOperation","CoordinateOperation","CoordinateSequenceOperation","setCopyUserData","edit","editInternal","editGeometryCollection","editPolygon","GeometryEditorOperation","editCoordinates","_dimension","instanceObject","readResolve","map_","_modelType","FLOATING","FIXED","maximumPreciseValue","getMaximumSignificantDigits","isFloating","FLOATING_SINGLE","mostPrecise","nameToTypeMap","_coordinateSequenceFactory","getDefaultCoordinateSequenceFactory","buildGeometry","toGeometryArray","toPolygonArray","toLineStringArray","toPointArray","createGeometry","toMultiPolygonArray","toMultiLineStringArray","toMultiPointArray","toLinearRingArray","createPointFromInternalCoord","precisionModel","reducePrecision","ON","opposite","_minIndex","_minCoord","_minDe","_orientedDe","getRightmostSide","getRightmostSideOfSegment","checkForRightmostCoordinate","findRightmostEdgeAtVertex","findRightmostEdgeAtNode","getEdges","getRightmostEdge","getSym","findEdge","msgWithCoord","addLast","removeFirst","_finder","_dirEdgeList","_rightMostCoord","_env","clearVisitedEdges","setVisited","getRightmostCoordinate","computeNodeDepth","isVisited","computeDepths","copySymDepths","computeDepth","setEdgeDepths","addReachable","findResultEdges","getDepth","isInteriorAreaEdge","setInResult","setDepth","getDirectedEdges","setAllLocations","setAllLocationsIfNull","getLocations","setLocations","isArea","isAnyNull","setLocation","isEqualOnSide","allPositionsEqual","elt","getGeometryCount","toLine","toLineLabel","_startDe","_maxNodeDegree","_edges","_pts","_label","_ring","_isHole","_geometryFactory","computePoints","computeRing","isIsolated","getEdgeRing","mergeLabel","setEdgeRing","getLinearRing","computeMaxNodeDegree","getOutgoingDegree","isHole","addHole","isShell","getMaxNodeDegree","getShell","setShell","toPolygon","setMinEdgeRing","getNextMin","buildMinimalRings","getMinEdgeRing","linkDirectedEdgesForMinimalEdgeRings","linkMinimalDirectedEdges","_isCovered","_isCoveredSet","_isVisited","isCovered","isCoveredSet","setCovered","updateIM","computeIM","_coord","isIncidentEdgeInResult","computeMergedLocation","setNode","setLabelBoundary","nodeFact","getBoundaryNodes","NE","NW","SW","SE","isNorthern","isOpposite","commonHalfPlane","isInHalfPlane","_edge","_p0","_p1","_quadrant","compareDirection","getDy","getDirectedCoordinate","getDx","getQuadrant","computeLabel","_isForward","_sym","_nextMin","_edgeRing","_minEdgeRing","_depth","computeDirectedLabel","setNextMin","getDepthDelta","isLineEdge","printEdge","printReverse","setSym","setVisitedEdge","setNext","depthFactor","_edgeEndList","printEdges","eiList","getNodeIterator","linkResultDirectedEdges","debugPrintln","isBoundaryNode","linkAllDirectedEdges","matchInSameDirection","getEdgeEnds","debugPrint","getEdgeIterator","findEdgeInSameDirection","insertEdge","findEdgeEnd","addEdges","_shellList","sortShellsAndHoles","computePolygons","placeFreeHoles","findEdgeRingContaining","buildMinimalEdgeRings","findShell","placePolygonHoles","buildMaximalEdgeRings","getPolygons","_bounds","_item","_items","visitItem","_childBoundables","_level","getChildBoundables","addChildBoundable","computeBounds","singletonList","_boundable1","_boundable2","_itemDistance","expandToQueue","isLeaves","getBoundable","_built","_itemBoundables","_nodeCapacity","DEFAULT_NODE_CAPACITY","IntersectsOp","getNodeCapacity","itemsTree","boundablesAtLevel","getIntersectsOp","createHigherLevels","getRoot","createParentBoundables","compareDoubles","STRtreeNode","xComparator","yComparator","intersectsOp","createParentBoundablesFromVerticalSlices","createParentBoundablesFromVerticalSlice","verticalSlices","nearestNeighbour","centreX","avg","centreY","relativeSign","compareValue","_segString","_segmentOctant","_isInterior","isInterior","_nodeMap","getSplitCoordinates","addEndpoints","addEdgeCoordinates","addCollapsedNodes","findCollapsesFromInsertedNodes","findCollapsesFromExistingVertices","addSplitEdges","createSplitEdge","findCollapseIndex","getSegmentOctant","checkSplitEdgesCorrectness","octant","addIntersection","_nodeList","safeOctant","addIntersectionNode","getNodeList","addIntersections","getNodedSubstrings","projectionFactor","distancePerpendicular","lineIntersection","pointAlongOffset","segmentFraction","pointAlong","tempEnv1","tempEnv2","_overlapSeg1","_overlapSeg2","getLineSegment","_end","computeSelect","computeOverlaps","computeOverlapsInternal","getEndIndex","getStartIndex","getChainStartIndices","findChainEnd","getChains","computeNodes","_segInt","setSegmentIntersector","_monoChains","_idCounter","_nodedSegStrings","_nOverlaps","SegmentOverlapAction","getMonotoneChains","intersectChains","_si","processIntersections","_quadrantSegments","DEFAULT_QUADRANT_SEGMENTS","_endCapStyle","CAP_ROUND","_joinStyle","JOIN_ROUND","_mitreLimit","DEFAULT_MITRE_LIMIT","_isSingleSided","_simplifyFactor","DEFAULT_SIMPLIFY_FACTOR","setQuadrantSegments","setEndCapStyle","setJoinStyle","setMitreLimit","CAP_FLAT","CAP_SQUARE","JOIN_MITRE","JOIN_BEVEL","getEndCapStyle","isSingleSided","getJoinStyle","setSimplifyFactor","getSimplifyFactor","getQuadrantSegments","getMitreLimit","setSingleSided","bufferDistanceError","_distanceTol","_isDeleted","_angleOrientation","_inputLine","NUM_PTS_TO_CHECK","isDeletable","isConcave","isShallow","isShallowSampled","deleteShallowConcavities","findNextNonDeletedIndex","isShallowConcavity","simplify","collapseLine","_ptList","_minimimVertexDistance","COORDINATE_ARRAY_TYPE","addPt","isRedundant","revere","addPts","setMinimumVertexDistance","PI_TIMES_2","PI_OVER_2","PI_OVER_4","isAcute","isObtuse","interiorAngle","normalizePositive","angleBetween","getTurn","angleBetweenOriented","_maxCurveSegmentError","_filletAngleQuantum","_closingSegLengthFactor","_segList","_bufParams","_li","_s0","_s1","_s2","_seg0","_seg1","_offset0","_offset1","_side","_hasNarrowConcaveAngle","MAX_CLOSING_SEG_LEN_FACTOR","OFFSET_SEGMENT_SEPARATION_FACTOR","INSIDE_TURN_VERTEX_SNAP_DISTANCE_FACTOR","CURVE_VERTEX_SNAP_DISTANCE_FACTOR","addNextSegment","computeOffsetSegment","addCollinear","addOutsideTurn","addInsideTurn","addLineEndCap","addFilletArc","addMitreJoin","addLimitedMitreJoin","addFilletCorner","addBevelJoin","createSquare","addSegments","addFirstSegment","addLastSegment","initSideSegments","createCircle","hasNarrowConcaveAngle","getOffsetCurve","getSegGen","computePointCurve","computeOffsetCurve","computeSingleSidedBufferCurve","simplifyTolerance","computeRingBufferCurve","computeLineBufferCurve","getLineCurve","getBufferParameters","getRingCurve","copyCoordinates","_subgraphs","_seg","_cga","DepthSegment","findStabbedSegments","_leftDepth","_upwardSeg","interpolateZ","longestSideLength","circumcentre","area3D","inCentre","perpendicularBisector","angleBisector","_inputGeom","_curveBuilder","_curveList","addPoint","addCurve","addPolygon","isErodedCompletely","addPolygonRing","isTriangleErodedCompletely","addLineString","getCurves","addCollection","locate","_atStart","_subcollectionIterator","isAtomic","containsPointInPolygon","_edgeMap","_edgeList","_ptInAreaLocation","getNextCW","propagateSideLabels","isAreaLabelsConsistent","computeEdgeEndLabels","getBoundaryNodeRule","checkAreaLabelsConsistent","computeLabelling","getDegree","insertEdgeEnd","_resultAreaEdgeList","_SCANNING_FOR_INCOMING","_LINKING_TO_OUTGOING","getResultAreaEdges","updateLabelling","mergeSymLabels","findCoveredLineEdges","compareOriented","_ocaMap","findEdgeIndex","findEqualEdge","_hasIntersection","_hasProper","_hasProperInterior","_hasInterior","_properIntersectionPoint","_isSelfIntersection","numIntersections","numInteriorIntersections","numProperIntersections","numTests","isTrivialIntersection","isAdjacentSegments","getProperIntersectionPoint","hasProperInteriorIntersection","getLineIntersector","hasProperIntersection","hasInteriorIntersection","getSegmentIndex","env1","env2","computeIntersectsForChain","getStartIndexes","computeIntersects","NULL_VALUE","depthAtLocation","_mce","_isIsolated","_depthDelta","getCollapsedEdge","setIsolated","getMaximumSegmentIndex","getMonotoneChainEdge","isPointwiseEqual","setDepthDelta","getEdgeIntersectionList","setAtLeastIfValid","_workingPrecisionModel","_workingNoder","_graph","setWorkingPrecisionModel","insertUniqueEdge","depthDelta","buildSubgraphs","createSubgraphs","createEmptyResultGeometry","getNoder","computeNodedEdges","setNoder","convertSegStrings","_noder","_scaleFactor","_offsetX","_offsetY","_isScaled","isIntegerPrecision","rescale","_segStrings","fact","checkEndPtVertexIntersections","checkInteriorIntersections","checkValid","checkCollapses","checkCollapse","_pt","_originalPt","_ptScaled","_p0Scaled","_p1Scaled","_corner","_safeEnv","initCorners","SAFE_ENV_EXPANSION_FACTOR","intersectsScaled","intersectsToleranceSquare","copyScaled","getSafeEnvelope","intersectsPixelClosure","addSnappedNode","selectedSegment","HotPixelSnapAction","isNodeAdded","_hotPixel","_parentEdge","_hotPixelVertexIndex","_isNodeAdded","_interiorIntersections","getInteriorIntersections","_pm","_pointSnapper","checkCorrectness","snapRound","findInteriorIntersections","computeIntersectionSnaps","computeVertexSnaps","_argGeom","_resultGeometry","_saveException","CAP_BUTT","MAX_PRECISION_DIGITS","bufferFixedPrecision","bufferReducedPrecision","precisionScaleFactor","computeGeometry","bufferOriginalPrecision","getResultGeometry","_isNull","setMaximum","computeDistance","_maxPtDist","MaxPointDistanceFilter","MaxMidpointDistanceFilter","computeMaxMidpointDistance","getMaxPointDistance","computeMaxVertexDistance","findDistance","getDistancePoints","_minPtDist","_comps","_lines","_isForcedToLineString","setForceToLineString","getLines","_boundaryRule","_isIn","_numBoundaries","locateInternal","locateInPolygonRing","updateLocationInfo","computeLocation","_component","_segIndex","INSIDE_AREA","isInsideArea","getGeometryComponent","_locations","_terminateDistance","_ptLocator","_minDistanceLocation","_minDistance","computeContainmentDistance","computeMinDistanceLinesPoints","computeMinDistance","computeFacetDistance","computeMinDistanceLines","updateMinDistance","computeMinDistancePoints","nearestLocations","nearestPoints","isWithinDistance","_g0","_g1","_ptDist","_densifyFrac","MaxDensifiedByFractionDistanceFilter","setDensifyFraction","computeOrientedDistance","orientedDistance","_euclideanDist","_numSubSegs","_minValidDistance","_maxValidDistance","_minDistanceFound","_maxDistanceFound","_isValid","_errMsg","_errorLocation","_errorIndicator","_bufDistance","VERBOSE","MAX_DISTANCE_DIFF_FRAC","checkMaximumDistance","checkPositiveValid","checkNegativeValid","getPolygonLines","checkMinimumDistance","getErrorIndicator","getErrorLocation","getErrorMessage","_errorMsg","MAX_ENV_DIFF_FRAC","checkPolygonal","checkExpectedEmpty","checkEnvelope","checkArea","checkDistance","isValidMsg","_findAllIntersections","_isCheckEndSegmentsOnly","_interiorIntersection","_intSegments","_intersections","_intersectionCount","_keepIntersections","getInteriorIntersection","setCheckEndSegmentsOnly","getIntersectionSegments","getIntersections","setFindAllIntersections","setKeepIntersections","isEndSegment","createAllIntersectionsFinder","createAnyIntersectionFinder","createIntersectionCounter","computeIntersections","_nv","toSegmentStrings","_mapOp","_op","_lineEdgesList","_resultLineList","collectLines","collectLineEdge","collectBoundaryTouchEdge","labelIsolatedLine","getArgGeometry","buildLines","isResultOfOp","isCoveredByA","labelIsolatedLines","_resultPointList","filterCoveredNodeToPoint","isCoveredByLA","extractNonCoveredResultNodes","_pruneEmptyGeometry","_preserveGeometryCollectionType","_preserveCollections","_preserveType","transformCoordinates","transformPolygon","transformLinearRing","createCoordinateSequence","getInputGeometry","transformMultiLineString","transformLineString","transformMultiPoint","transformMultiPolygon","transformGeometryCollection","_snapTolerance","_srcPts","_allowSnappingToSourceVertices","_isClosed","snapVertices","findSnapForVertex","snapSegments","findSegmentIndexToSnap","setAllowSnappingToSourceVertices","_srcGeom","SNAP_PRECISION_FACTOR","extractTargetCoordinates","snapToSelf","computeSnapTolerance","computeMinimumSegmentLength","computeOverlaySnapTolerance","computeSizeBasedSnapTolerance","_snapPts","_isSelfSnap","snapLine","_isFirst","_commonMantissaBitsCount","_commonBits","_commonSignExp","getCommon","signExpBits","numCommonMostSigMantissaBits","zeroLowerBits","toBinaryString","getBit","_commonCoord","_ccFilter","CommonCoordinateFilter","Translater","addCommonBits","removeCommonBits","getCommonCoordinate","_commonBitsX","_commonBitsY","_cbr","selfSnap","overlayOp","UNION","symDifference","SYMDIFFERENCE","DIFFERENCE","mce","chainIndex","_xValue","_insertEvent","_deleteEventIndex","_obj","INSERT","isDelete","setDeleteEventIndex","getInsertEvent","isInsert","isSameLabel","getDeleteEventIndex","_includeProper","_recordIsolated","_numIntersections","_bdyNodes","_isDone","_isDoneWhenProperInt","setIsDoneIfProperInt","isBoundaryPointInternal","isBoundaryPoint","setBoundaryNodes","nOverlaps","prepareEvents","processOverlaps","NodeComparator","getMin","getMax","_node1","_node2","buildExtent","_leaves","buildLevel","buildRoot","getItems","SegmentVisitor","IntervalIndexedGeometry","_counter","_parentGeom","_lineEdgeMap","_boundaryNodeRule","_useBoundaryDeterminationRule","_argIndex","_boundaryNodes","_hasTooFewPoints","_invalidPoint","_areaPtLocator","insertBoundaryPoint","determineBoundary","computeSelfNodes","createEdgeSetIntersector","addSelfIntersectionNodes","computeSplitEdges","computeEdgeIntersections","hasTooFewPoints","insertPoint","getInvalidPoint","getBoundaryPoints","addSelfIntersectionNode","_resultPrecisionModel","_arg","setComputationPrecision","MapOp","_resultGeom","_resultPolyList","cancelDuplicateResultEdges","createEmptyResult","replaceCollapsedEdges","updateNodeLabelling","computeOverlay","insertUniqueEdges","copyPoints","computeLabelsFromDepths","labelIncompleteNodes","findResultAreaEdges","labelIncompleteNode","resultDimension","_boundaryDistanceTolerance","_linework","extractLinework","isWithinToleranceOfBoundary","getLinework","_doLeft","_doRight","extractPoints","computeOffsetPoints","setSidesToGenerate","_locFinder","_invalidLocation","TOLERANCE","_testCoords","computeBoundaryDistanceTolerance","reportResult","addTestPts","hasLocation","isValidResult","getInvalidLocation","_geomFactory","_skipEmpty","_inputGeoms","extractFactory","extractElements","_inputPolys","STRTREE_NODE_CAPACITY","reduceToGeometries","unionTree","extractByEnvelope","unionOptimized","unionActual","unionUsingEnvelopeIntersection","binaryUnion","unionSafe","repeatedUnion","restrictToPolygons","bufferUnion","OverlayOp","UnionOp","extractSize","boxProp","sizeType","useResizeObserver","onResizeRef","resizeObserverRef","didUnmount","refCallback","refOrElement","lastReportRef","refOrElementRef","cbElementRef","evaluateSubscription","cbElement","useResolvedElement","reportedWidth","reportedHeight","randomUUID","rnds8","rng","byteToHex","rnds","unsafeStringify","isCallable","tryToString","$TypeError","$String","toIndexedObject","toAbsoluteIndex","lengthOfArrayLike","IS_INCLUDES","$this","uncurryThis","stringSlice","getOwnPropertyDescriptorModule","definePropertyModule","DESCRIPTORS","createPropertyDescriptor","makeBuiltIn","defineGlobalProperty","simple","fails","ENVIRONMENT","classof","userAgentStartsWith","Bun","createNonEnumerableProperty","defineBuiltIn","copyConstructorProperties","isForced","targetProperty","sourceProperty","TARGET","STATIC","NATIVE_BIND","FunctionPrototype","aCallable","getDescriptor","classofRaw","uncurryThisWithBind","namespace","isNullOrUndefined","getBuiltIn","$Object","functionToString","NATIVE_WEAK_MAP","sharedKey","hiddenKeys","OBJECT_ALREADY_INITIALIZED","STATE","TYPE","documentAll","detection","USE_SYMBOL_AS_UID","$Symbol","CONFIGURABLE_FUNCTION_NAME","InternalStateModule","enforceInternalState","getInternalState","CONFIGURABLE_LENGTH","IE8_DOM_DEFINE","V8_PROTOTYPE_DEFINE_BUG","anObject","$defineProperty","$getOwnPropertyDescriptor","ENUMERABLE","WRITABLE","Attributes","propertyIsEnumerableModule","internalObjectKeys","$propertyIsEnumerable","NASHORN_BUG","pref","getOwnPropertyNamesModule","getOwnPropertySymbolsModule","hasIndices","dotAll","unicodeSets","USER_AGENT","validateArgumentsLength","WRAP","hasTimeArg","firstParamIndex","boundArgs","IS_PURE","SHARED","V8_VERSION","$location","IS_IOS","IS_NODE","clearImmediate","Dispatch","ONREADYSTATECHANGE","runner","globalPostMessageDefer","toIntegerOrInfinity","IndexedObject","requireObjectCoercible","getMethod","ordinaryToPrimitive","wellKnownSymbol","TO_PRIMITIVE","exoticToPrim","postfix","NATIVE_SYMBOL","passed","WellKnownSymbolsStore","createWellKnownSymbol","defineBuiltInAccessor","regExpFlags","RegExpPrototype","INDICES_SUPPORT","expected","addGetter","setTask","schedulersFix","libraryName","xlsx","getWorksheetColumnWidths","getJsonSheetRow","getContentProperty","xlsx_1","accessContentProperties","jsonSheetRow","getWorksheetColumnIds","columnRange","decode_range","address","encode_col","extraLength","cellContentLength","cellFormatLength","largestWidth","jsonSheets","workbookCallback","book_new","actualSheet","actualIndex","jsonSheet","jsonSheetRows","contentItem","json_to_sheet","columnFormats","columnFormat","decode_col","encode_cell","applyColumnFormat","jsonSheetColumn","getWorksheet","worksheetName","book_append_sheet","RTL","Workbook","Views","writeOptions","writeMode","writeFile","writeWorkbook","_inheritsLoose","unsupportedIterableToArray","arrayLikeToArray","combineComparators","comparatorA","comparatorB","createIsCircular","areItemsEqual","cachedA","cachedB","getStrictProperties","sameValueZeroEqual","PREACT_VNODE","PREACT_OWNER","REACT_OWNER","areArrayBuffersEqual","areTypedArraysEqual","areArraysEqual","areDataViewsEqual","areDatesEqual","areErrorsEqual","areFunctionsEqual","areMapsEqual","matchedIndices","aIterable","aResult","bResult","bIterable","hasMatch","aEntry","bEntry","areNumbersEqual","areObjectsEqual","isPropertyEqual","areObjectsEqualStrict","descriptorA","descriptorB","arePrimitiveWrappersEqual","areRegExpsEqual","areSetsEqual","areUrlsEqual","ARRAY_BUFFER_TAG","ARGUMENTS_TAG","BOOLEAN_TAG","DATA_VIEW_TAG","DATE_TAG","ERROR_TAG","MAP_TAG","NUMBER_TAG","OBJECT_TAG","REG_EXP_TAG","SET_TAG","STRING_TAG","TYPED_ARRAY_TAGS","URL_TAG","createCustomEqual","createInternalComparator","createCustomInternalComparator","createState","createCustomConfig","unknownTagComparators","createEqualityComparatorConfig","unknownTagComparator","shortTag","createEqualityComparator","createIsEqual","_indexOrKeyA","_indexOrKeyB","_parentA","_parentB","assertNotNull","filterMarkersToPaddedViewport","viewportPaddingPixels","extendBoundsToPaddedViewport","numPixels","northEast","southWest","latLngBoundsToPixelBounds","extendedPixelBounds","extendPixelBounds","pixelBoundsToLatLngBounds","sinDLat","sinDLon","AbstractViewportAlgorithm","viewportPadding","GridAlgorithm","markerClickEventName","GMP_CLICK","AxiosError","CanceledError","toFormData","AxiosHeaders","HttpStatusCode","formToJSON","getAdapter","kindOf","thing","kindOfTest","typeOfTest","isFileList","isRequest","isHeaders","allOwnKeys","_global","isContextDefined","isHTMLForm","reduceDescriptors","reducedDescriptors","isAsyncFn","_setImmediate","setImmediateSupported","postMessageSupported","asap","caseless","stripBOM","superConstructor","toFlatObject","sourceObj","destObj","propFilter","forEachEntry","matchAll","regExp","hasOwnProp","freezeMethods","toObjectSet","arrayOrString","toFiniteNumber","isSpecCompliantForm","toJSONObject","reducedValue","isThenable","captureStackTrace","customProps","axiosError","isVisitable","removeBrackets","dots","formData","metaTokens","defaultVisitor","useBlob","isFlatArray","exposedHelpers","charMap","AxiosURLSearchParams","_pairs","serializeFn","synchronous","runWhen","silentJSONParsing","forcedJSONParsing","clarifyTimeoutError","protocols","hasBrowserEnv","_navigator","hasStandardBrowserEnv","hasStandardBrowserWebWorkerEnv","isNumericKey","arrayToObject","parsePropPath","transitional","getContentType","hasJSONContentType","isObjectPayload","setContentType","isNode","toURLEncodedForm","formSerializer","_FormData","stringifySafely","JSONRequested","strictJSONParsing","ERR_BAD_RESPONSE","maxBodyLength","$internals","normalizeHeader","matchHeaderValue","isHeaderNameFilter","valueOrRewrite","rewrite","setHeader","_header","_rewrite","lHeader","setHeaders","rawHeaders","tokensRE","parseTokens","deleted","deleteHeader","formatHeader","asStrings","getSetCookie","defineAccessor","buildAccessors","ERR_CANCELED","ERR_BAD_REQUEST","progressEventReducer","isDownloadStream","freq","bytesNotified","_speedometer","samplesCount","firstSampleTS","startedAt","lengthComputable","progressBytes","progressEventDecorator","asyncDecorator","buildFullPath","requestedURL","allowAbsoluteUrls","isRelativeUrl","headersToObject","getMergedValue","mergeDeepProperties","valueFromConfig2","defaultToConfig2","mergeDirectKeys","withXSRFToken","beforeRedirect","httpAgent","httpsAgent","socketPath","responseEncoding","configValue","resolveConfig","onCanceled","uploadThrottled","downloadThrottled","flushUpload","flushDownload","onloadend","ECONNABORTED","ERR_NETWORK","timeoutErrorMessage","ETIMEDOUT","parseProtocol","signals","streamChunk","trackStream","onProgress","onFinish","readStream","_onFinish","loadedBytes","isFetchSupported","isReadableStreamSupported","encodeText","supportsRequestStream","duplexAccessed","hasContentType","duplex","supportsResponseStream","ERR_NOT_SUPPORT","knownAdapters","composedSignal","toAbortSignal","requestContentLength","getContentLength","getBodyLength","resolveBodyLength","isCredentialsSupported","isStreamResponse","responseContentLength","renderReason","isResolvedHandle","adapters","nameOrAdapter","rejectedReasons","reasons","deprecatedWarnings","formatMessage","ERR_DEPRECATED","spelling","correctSpelling","assertOptions","allowUnknown","ERR_BAD_OPTION_VALUE","ERR_BAD_OPTION","configOrUrl","dummy","withXsrfToken","contextHeaders","requestInterceptorChain","synchronousRequestInterceptors","responseInterceptorChain","generateHTTPMethod","isForm","onfulfilled","Continue","SwitchingProtocols","Processing","EarlyHints","Created","Accepted","NonAuthoritativeInformation","NoContent","ResetContent","PartialContent","MultiStatus","AlreadyReported","ImUsed","MultipleChoices","MovedPermanently","Found","SeeOther","NotModified","UseProxy","Unused","TemporaryRedirect","PermanentRedirect","BadRequest","Unauthorized","PaymentRequired","Forbidden","NotFound","MethodNotAllowed","NotAcceptable","ProxyAuthenticationRequired","RequestTimeout","Conflict","Gone","LengthRequired","PreconditionFailed","PayloadTooLarge","UriTooLong","UnsupportedMediaType","RangeNotSatisfiable","ExpectationFailed","ImATeapot","MisdirectedRequest","UnprocessableEntity","Locked","FailedDependency","TooEarly","UpgradeRequired","PreconditionRequired","TooManyRequests","RequestHeaderFieldsTooLarge","UnavailableForLegalReasons","InternalServerError","NotImplemented","BadGateway","ServiceUnavailable","GatewayTimeout","HttpVersionNotSupported","VariantAlsoNegotiates","InsufficientStorage","LoopDetected","NotExtended","NetworkAuthenticationRequired","newDateUTC","typeToPos","dtfCache","MILLISECONDS_IN_MINUTE","timezoneZ","timezoneHH","timezoneHHMM","tzParseTimezone","isUtcDate","absoluteOffset","timeZoneString","validIANATimezoneCache","timeZone","isValidTimezoneIANAString","toUtcDate","calcOffset","fixedOffset","utcGuess","fixOffset","dtf","testDateFormatted","hourCycle","hourCycleSupported","getDateTimeFormat","formatToParts","partsOffset","hackyOffset","tzTokenizeDate","asUTC","asTS","tzIntlTimeZoneName","timeZoneName","getDTF","partsTimeZone","tzNameMatch","hackyTimeZone","getTimeZoneOffset","timeZoneOffset","dirtyDelimeter","delimeter","tzFormattingTokensRegExp","dirtyOptions","precededByQuotedSection","replaced","DEFAULT_ADDITIONAL_DIGITS","dateTimePattern","plainTime","YYY","YYYYY","DDD","MMDD","Www","WwwD","HH","HHMM","HHMMSS","patternYYY","patternYYYYY","yearString","centuryString","isLeapYear","DAYS_IN_MONTH","DAYS_IN_MONTH_LEAP_YEAR","utcToZonedTime","offsetMilliseconds","resultDate","zonedTimeToUtc","extendedOptions","revocable","revoke","deleteProperty","produce","produceWithPatches","useProxies","setUseProxies","autoFreeze","setAutoFreeze","createDraft","finishDraft","applyPatches","Keycloak","requiredProperties","callbackStorage","refreshQueue","loginIframe","didInitialize","useNonce","logWarn","getRealmUrl","authServerUrl","realm","processCallback","oauth","timeLocal","onActionUpdate","login","loginOptions","errorData","onAuthError","setError","setSuccess","endpoints","redirectUri","pkceCodeVerifier","tokenResponse","scheduleCheckIframe","refreshToken","idToken","fulfillPromise","setToken","idTokenParsed","storedNonce","clearToken","onAuthSuccess","fileLoaded","tokenTimeoutHandle","refreshTokenParsed","decodeToken","tokenParsed","sid","authenticated","realmAccess","realm_access","resourceAccess","resource_access","timeSkew","onTokenExpired","expiresIn","createUUID","parseCallback","supportedParams","newUrl","queryIndex","fragmentIndex","responseMode","parseCallbackParams","paramsString","oauthParams","parseCallbackUrl","oauthState","createPromise","setupCheckLoginIframe","authUrl","authorize","iframeOrigin","checkSessionIframe","checkLoginIframe","loadAdapter","createLoginUrl","logoutMethod","createLogoutUrl","id_token_hint","post_logout_redirect_uri","createRegisterUrl","accountManagement","accountUrl","createAccountUrl","encodeHash","cordovaOpenWindowWrapper","loginUrl","cordova","InAppBrowser","createCordovaOptions","cordovaOptions","optionName","shallowCloneCordovaOptions","formatCordovaOptions","getCordovaRedirectUri","completed","closeBrowser","logoutUrl","registerUrl","universalLinks","browsertab","openUrl","initOptions","CookieStorage","createCallbackStorage","Cordova","checkLoginIframeInterval","loginRequired","silentCheckSsoRedirectUri","silentCheckSsoFallback","pkceMethod","enableLogging","acrValues","messageReceiveTimeout","configPromise","configUrl","setupOidcEndoints","oidcConfiguration","authorization_endpoint","token_endpoint","end_session_endpoint","check_session_iframe","userinfo","userinfo_endpoint","thirdPartyCookiesIframe","oidcProviderConfigUrl","oidcProvider","loadConfig","doLogin","checkSsoSilently","ifrm","messageCallback","processInit","updateToken","timeoutPromise","applyTimeoutToPromise","check3pCookiesSupported","callbackState","maxAge","loginHint","idpHint","acr","claimsParameter","codeVerifier","randomData","generateRandomData","generateRandomString","pkceChallenge","binString","bytesToBase64","sha256Digest","generatePkceChallenge","hasRealmRole","access","roles","hasResourceRole","loadUserProfile","profile","loadUserInfo","userInfo","isTokenExpired","minValidity","onAuthRefreshSuccess","onAuthRefreshError","onAuthLogout","STORAGE_KEY_PREFIX","clearInvalidValues","getStoredEntries","parseExpiry","parsedValue","clearAllValues","expirationDate","replaceAll","b64DecodeUnicode","base64UrlDecode","toUtc","dstChange","MSEC_IN_HOUR","epoch","summerOffset","winterOffset","startUtc","endUtc","hem","isOffset","utcOffset","gmtOffset","toIana","safeIntl","cities","city","tz","toCardinal","getEpoch","beADate","parseArray","parseObject","parseNumber","getNow","_today","tonight","startOf","christmas","walk","startUnit","halfStep","walkTo","wants","longMonths","sep","parseMonth","parseMs","ampm","timezones","british","season","givenTz","longDays","tues","weds","wedn","thur","thurs","titleCaseEnabled","applyCaseFormat","titleCase","dayName","monthName","hour24","AMPM","numeric","iso","h24","mdy","dmy","ymd","GG","GGGG","yyy","yyyyy","QQ","QQQ","QQQQ","ww","EEE","EEEE","EEEEE","eee","eeee","eeeee","aaa","aaaa","h12","SSS","zzz","zzzz","ZZ","ZZZ","ZZZZ","addAlias","doUnit","endOf","climb","msDiff","fastYear","quarters","waterfall","reverseDiff","almost","pluralize","later","earlier","qualified","precise","englishValues","englishValue","nextUnit","soften","quarterhour","_weekStart","hemisphere","seasons","decade","epochShift","hasDst","default_offset","summer","winter","isDST","hasDST","unixFmt","escapeChars","combineRepeated","txt","leapYear","prog","since","goto","isAwake","isAsleep","logYear","fromNow","weekStart","inDST","want","fwdBkwd","goFwd","minus","hourFloat","sec","dayTime","breakfast","lunch","dinner","clearMinutes","thisOne","skipWeeks","millenium","getMonthLength","dstAwareUnits","keepDate","SpaceTime","jul","dec","quick","Space","parsers","toLocalDate","toNativeDate","daysBack","wantYear","haveYear","plus","tzAware","same","isInclusive","i18n","useTitleCase","setToday","whereIts","startHour","endHour","tzs","yLat","XLSX","current_codepage","current_ansi","VALID_ANSI","CS2CP","set_ansi","set_cp","reset_cp","char_codes","utf16beread","$cptable","debom","utf16leread","_getchar","_getansi","set_cptable","cptable","cpdoit","DENSE","Base64_map","Base64_encode","c3","e3","e4","Base64_decode","has_buf","Buffer_from","nbfs","new_raw_buf","new_unsafe_buf","s2a","s2ab","a2s","ab2a","bconcat","bufs","chr0","_strrev","pad0","pad_","rpad_","p2_32","pad0r","pad0r1","pad0r2","SSF_isgeneral","table_fmt","SSF_default_map","SSF_default_str","SSF_frac","mixed","sgn","P_2","P_1","Q_2","Q_1","SSF_parse_date_code","dow","dout","date1904","SSF_fix_hijri","SSFbasedate","SSFdnthresh","SSFbase1904","datenum_local","SSF_strip_decimal","SSF_general_num","LOG10E","SSF_small_exp","SSF_large_exp","SSF_normalize_exp","SSF_general","SSF_format","SSF_write_date","ss0","outl","commaify","pct1","write_num_exp","fakee","$$","$2","$3","frac1","dec1","closeparen","phone","hashq","rnd","_frac","write_num_flt","ffmt","write_num","write_num_cm","sfmt","write_num_pct","aval","den","myn","myd","write_num_f1","carry","lres","rres","flr","write_num_exp2","write_num_int","write_num_cm2","write_num_pct2","write_num_f2","SSF_abstime","fmt_is_date","cfregex2","chkcond","thresh","dateNF","in_str","SSF_split_fmt","choose_fmt","lst","ssm","nstr","myv","ostr","vv","decpt","lasti","retval","eval_fmt","SSF_load","SSF_load_table","tbl","make_ssf","SSF","_table","load_table","parse_date_code","is_date","get_table","SSFImplicit","dateNFregex","CRC32","T0","signed_crc_table","TT","slice_by_16_tables","T1","T2","T3","T4","T5","T6","T7","T8","T9","CFB","write_dos_date","hms","write_shift","parse_extra_field","prep_blob","read_shift","sz","tgt","mtime","atime","ctime","get_fs","parse_zip","mboundary","FileIndex","FullPaths","init_cfb","start_di","fcnt","parse_mime","parse_mad","mver","nmfs","difat_sec_cnt","dir_start","minifat_start","difat_start","ssz","fat_addrs","mv","chk","HEADER_SIGNATURE","check_get_mver","check_shifts","dir_cnt","nsectors","sectorify","sleuth_fat","sector_list","chkd","buf_chain","addr","__readInt32LE","__toBuffer","make_sector_list","ENDOFCHAIN","Paths","mini","minifat_store","namelen","__utf16le","clsid","read_date","get_sector_list","get_mfat_entry","read_directory","FI","FP","dad","build_full_paths","MSSZ","new_buf","__readUInt32LE","cfb","CLSID","rebuild_cfb","seed_cfb","_file","fullPaths","HEADER_CLSID","namecmp","_write","fp","cstr","dispcnt","csl","get_content_type","write_quoted_printable","write_base64_76","write_mad","cdirs","compression","start_cd","crcs","sz_cd","namebuf","outbuf","_zlib","deflateRawSync","_deflate","write_zip","mini_size","fat_size","mfat_cnt","fat_base","fat_cnt","difat_cnt","HEADER_SIG","chainit","consts","DIFSECT","FATSECT","_nm","MAXREGSECT","FREESECT","HEADER_MINOR_VERSION","MAXREGSID","NOSTREAM","EntryTypes","CLEN_ORDER","LEN_LN","DST_LN","use_typed_arrays","bitswap8","bit_swap_n","rev","read_bits_2","read_bits_3","read_bits_5","read_bits_7","read_bits_n","write_bits_3","write_bits_1","write_bits_8","write_bits_16","zero_fill_array","build_tree","clens","cmap","ccode","bl_count","ctree","cleni","fix_lmap","fix_dmap","dlens","_deflateRaw","DST_LN_RE","LEN_LN_RE","boff","write_stored","addrs","mlen","len_eb","dst_eb","write_huff_fixed","dyn_lmap","dyn_dmap","dyn_cmap","dyn_len_1","dyn_len_2","dyn","_HLIT","_HDIST","_HCLEN","read_bits_4","next_code","hcodes","_inflate","usz","woff","OL","max_len_1","max_len_2","inflate","warn_or_throw","wrn","csz","efsz","fcsz","EF","parse_local_file","meth","parse_dos_date","_csz","_usz","InflRaw","InflateRaw","_processChunk","_finishFlushFlag","bytesRead","_inflateRawSync","cfb_add","ContentTypeMap","ctype","fdata","cte","parse_quoted_printable","fpath","cfb_gc","UCFullPaths","UCPaths","UCPath","readFileSync","read_file","writeFileSync","cfb_new","cfb_del","cfb_mov","old_name","new_name","ReadShift","CheckField","use_zlib","zlib","_inflateRaw","set_fs","blobify","a2u","write_dl","utf8write","IE_SaveFile","saveAs","downloads","Folder","evert_key","evert","evert_num","basedate","datenum","refdate","dnthresh","refoffset","numdate","parse_isodur","good_pd_date_1","good_pd_date","good_pd","fixdate","cc2str","debomit","dup","fuzzynum","lower_months","fuzzydate","getYear","split_regex","safe_split_regex","getdatastr","asNodeBuffer","asBinary","getdatabin","safegetzipfile","getzipfile","getzipdata","safe","getzipstr","getzipbin","zipentries","zip_add_file","widx","ridx","utf8decode","zip_new","zip_read","resolve_path","XML_HEADER","attregexg","tagregex1","tagregex","nsregex","nsregex2","parsexmltag","skip_root","skip_LC","quot","strip_ns","encodings","rencoding","unescapexml","encregex","coderegex","decregex","charegex","escapexml","escapexmltag","htmlcharegex","escapehtml","xlml_fixstr","entregex","entrepl","parsexmlbool","utf8reada","orig","utf8readb","utf8readc","utf8corpus","utf8read","matchtag","mtcache","htmldecode","vtregex","vt_cache","vtvregex","vtmregex","parseVector","baseType","WTF","wtregex","writetag","wxt_helper","writextag","write_w3cdtf","xlml_normalize","xlmlregex","CORE_PROPS","CUST_PROPS","EXT_PROPS","CT","RELS","TCMNT","XMLNS_main","XLMLNS","___toBuffer","___utf16le","__readUInt16LE","___hexlify","__hexlify","___utf8","__readUInt8","__utf8","___lpstr","__lpstr","___cpstr","__cpstr","___lpwstr","__lpwstr","___lpp4","__lpp4","___8lpp4","__8lpp4","___double","read_double_le","__double","is_buf","readUInt32LE","readDoubleLE","__readInt16LE","__readInt32BE","oI","oR","lens","__writeUInt32LE","__writeInt32LE","__writeUInt16LE","WriteShift","cppayload","write_double_le","hexstr","fld","parsenoop","recordhopper","tmpbyte","cntbyte","RT","XLSBRecordEnum","buf_array","blksz","newblk","curbuf","endbuf","_bufs","write_record","shift_cell_xls","cRel","rRel","biff","shift_range_xls","encode_cell_xls","encode_range_xls","encode_row","decode_row","rowstr","colstr","decode_cell","encode_range","safe_decode_range","format_cell","BErr","XF","safe_format_cell","sheet_to_workbook","sheets","SheetNames","Sheets","sheet_add_aoa","_ws","dense","_R","_C","__R","__C","nullError","sheetStubs","cellDates","cell_ref","aoa_to_sheet","write_UInt32LE","parse_XLWideString","cchCharacters","write_XLWideString","_null","parse_StrRun","ich","ifnt","parse_RichStr","rgsStrRun","dwSizeStrRun","parse_BrtCommentText","parse_XLSBCell","iStyleRef","write_XLSBCell","parse_XLSBShortCell","write_XLSBShortCell","parse_XLSBCodeName","write_XLSBCodeName","parse_XLNullableWideString","write_XLNullableWideString","parse_XLNameWideString","parse_RelID","write_RelID","parse_RkNumber","fX100","fInt","RK","write_RkNumber","d100","parse_RfX","parse_UncheckedRfX","write_UncheckedRfX","parse_Xnum","write_Xnum","write_BrtColor","nTS","parse_ClipboardFormatOrString","VT_I2","VT_I4","VT_VARIANT","VT_STRING","VT_USTR","VT_CUSTOM","DocSummaryPIDDSI","SummaryPIDSI","CountryEnum","XLSFillPattern","rgbify","XLSIcv","RBErr","ct2type","CT_LIST","workbooks","xlsm","xlsb","xlam","xltx","strs","dialogs","macros","write_ct","type2ct","evert_arr","xsd","f1","bookType","f2","f3","WB","SHEET","HLINK","VML","XPATH","XMISS","XLINK","CXML","CXMLP","CMNT","SST","STY","THEME","CHARTEX","CS","WS","DS","MS","IMG","XLMETA","PEOPLE","VBA","get_rels_path","parse_rels","currentFilePath","rels","TargetMode","canonictarget","write_rels","rid","add_rels","relobj","targetmode","CT_ODS","write_rdf_type","write_meta_ods","CORE_PROPS_REGEX","parse_core_props","cp_doit","write_core_props","Props","CreatedDate","ModifiedDate","PseudoPropsPairs","load_props_pairs","HP","TOP","hp","Worksheets","NamedRanges","DefinedNames","Chartsheets","ChartNames","write_ext_props","Application","custregex","write_cust_props","write_vt","evert_XLMLDPM","XLMLDocPropsMap","Subject","Author","Keywords","Comments","LastAuthor","RevNumber","LastPrinted","Category","Company","AppVersion","ContentStatus","Identifier","Language","xlml_set_prop","parse_FILETIME","dwLowDateTime","dwHighDateTime","parse_lpstr","parse_lpwstr","parse_VtStringBase","stringType","parse_VtString","parse_VtHeadingPair","headingString","parse_TypedPropertyValue","parse_dictionary","CodePage","dict","parse_BLOB","parse_ClipboardData","parse_VtUnalignedString","cElements","parse_VtVecHeadingPairValue","parse_VtVecLpwstrValue","parse_VtVecUnalignedLpstrValue","write_TypedPropertyValue","write_FILETIME","parse_PropertySet","PIDSI","start_addr","NumProps","DictObj","PropID","Offset","PropH","piddsi","oldpos","parsebool","XLSPSSkip","guess_property_type","write_PropertySet","RE","hdr","piao","pio","pinfo","parse_PropertySetStream","NumSets","FMTID0","FMTID1","Offset0","Offset1","SystemIdentifier","PSet1","PSet0","FMTID","write_PropertySetStream","entries2","clsid2","ps0","ps1","parsenoop2","writebool","parseuint16","writeuint16","parseuint16a","parslurp","write_Bes","parse_ShortXLUnicodeString","cch","parse_XLUnicodeRichExtendedString","cbExtRst","fExtSt","fRichSt","cRun","write_XLUnicodeRichExtendedString","xlstr","otext","parse_XLUnicodeStringNoCch","parse_XLUnicodeString","parse_XLUnicodeString2","write_XLUnicodeString","parse_HyperlinkString","write_HyperlinkString","write_Hyperlink","hashidx","Pretarget","parse_LongRGBA","parse_LongRGB","parse_XLSCell","ixfe","write_XLSCell","parse_XTI","parse_RkRec","parse_Ref8U","rwFirst","rwLast","write_Ref8U","parse_RefU","parse_Ref","parse_FtCmo","parse_FtSkip","FtTab","fSharedNote","parse_BOF","BIFFVer","write_BOF","write_BoundSheet8","parse_DefaultRowHeight","miyRw","Unsynced","DyZero","ExAsc","ExDsc","write_Format","parse_BIFF2Format","parse_Dimensions","write_XF","ixfeP","parse_BoolErr","parse_Bes","parse_XLHeaderFooter","parse_ExternName","fBuiltIn","fWantAdvise","fWantPict","fOle","fOleLink","fIcon","sbcch","udfName","parse_AddinUdf","XLSLblBuiltIn","parse_Lbl","chKey","cce","itab","npflen","rgce","rgcb","parse_Rgce","parse_RgbExtra","parse_NameParsedFormula","parse_ExternSheet","parse_BIFF5ExternSheet","parse_Array","parse_ArrayParsedFormula","parse_BIFF5OT","cchName","write_HLink","write_HLinkTooltip","parse_ColInfo","colFirst","colLast","coldx","parse_Blank","parse_Scl","parse_String","DBF_SUPPORTED_VERSIONS","DBF","dbf_codepage_map","dbf_reverse_map","dbf_to_sheet","vfp","l7","nrow","fpos","rlen","current_cp","codepage","hend","sheetRows","dbf_to_aoa","wch","_RLEN","to_workbook","to_sheet","from_sheet","aoa","sheet_to_json","hcnt","coltypes","colwidths","coldecimals","_guess","rout","SYLK","sylk_escapes","AA","BA","CA","DA","HA","JA","AE","BE","CE","HE","AI","BI","CI","HI","AO","BO","CO","DO","HO","AU","BU","CU","HU","KC","DN","Hy","sylk_char_regex","sylk_char_fn","decode_sylk_char","newcc","sylk_to_aoa_str","next_cell_format","sht","rowinfo","colinfo","Mval","rstr","C_seen_K","C_seen_X","C_seen_S","C_seen_E","formula","rc_to_a1","shrbase","shift_formula_str","F_seen","process_col","hpt","hpx","pt2px","sylk_to_sheet","aoasht","sylk_to_aoa","write_ws_cell_sylk","a1_to_rc","preamble","RS","rec","wpx","width2px","px2char","px2pt","write_ws_rows_sylk","DIF","dif_to_aoa_str","dif_to_sheet","dif_to_aoa","push_field","topic","push_value","ETH","eth_to_sheet","eth_to_aoa","sheet_to_eth_data","PRN","set_text_arr","guess_seps","guess_sep_weights","guess_sep","instr","dsv_to_sheet_str","FS","sepcc","startcc","_re","finish_cell","datestr","timestr","dateNF_fix","cellText","cellNF","prn_to_sheet","firstbyte","prn_to_aoa_str","prn_to_sheet_str","WK_","lotushopper","Enum","WK1Enum","lotus_to_workbook_buf","next_n","sidx","snames","realnames","refguess","vers","qpro","tmpcell","WK3Enum","osheets","rnames","parse_cell","parse_LABEL","write_LABEL","write_INTEGER","write_NUMBER","wk1_parse_rc","FuncTab","BinOpTab","parse_cell_3","write_LABEL_16","wsidx","parse_NUMBER_17","write_NUMBER_17","parse_NUMBER_27","parse_SHEETNAMECS","write_XFORMAT_SHEETNAME","argc","argL","argR","wk1_fmla_to_csf","sheet_to_wk1","write_biff_rec","write_RANGE","max_R","book_to_wk3","wscnt","write_BOF_WK3","parse_rs","tregex","rpregex","parse_r","rpr","strike","uval","valign","parse_rpr","rregex","rend","rs_to_html","nlregex","r_to_html","terms","intro","outro","parse_rpr2","sitregex","sirregex","sirphregex","parse_si","cellHTML","sstr0","sstr1","sstr2","straywsregex","write_sst_xml","sst","bookSST","Count","Unique","sitag","write_BrtSSTItem","write_sst_bin","write_BrtBeginSst","_JS2ANSI","parse_CRYPTOVersion","Major","Minor","parse_DataSpaceMapEntry","parse_EncryptionHeader","Flags","AlgID","AlgIDHash","KeySize","ProviderType","CSPName","parse_EncryptionVerifier","Salt","Verifier","VerifierHash","parse_EncInfoStd","parse_EncInfoExt","parse_EncInfoAgl","KeyData","encryptedHmacKey","encryptedHmacValue","encs","crypto_CreatePasswordVerifier_Method1","Password","PasswordArray","PasswordDecoded","crypto_CreateXorArray_Method1","PadArray","InitialCode","XorMatrix","XorRor","byte1","byte2","Byte","Temp","PasswordLastChar","PadIndex","XorKey","CurrentElement","Char","CreateXorKey_Method1","Index","ObfuscationArray","RTF","rtf_to_sheet","rtf_to_sheet_str","rowtf","rtfre","last_index","rgb2Hex","rgb_tint","hsl","H6","L2","rgb2HSL","hsl2RGB","DEF_MDW","MAX_MDW","MIN_MDW","MDW","char2width","cycle_width","collw","find_mdw_colw","_MDW","coll","PPI","XLMLPatternTypeMap","cellXF_uint","cellXF_bool","parse_sty_xml","numFmtRegex","cellXfRegex","fillsRegex","fontsRegex","bordersRegex","NumberFmt","parse_numFmts","Fonts","condense","vertAlign","icv","clrScheme","parse_fonts","Fills","fgColor","parse_fills","Borders","diagonalUp","diagonalDown","parse_borders","CellXf","parse_cellXfs","write_sty_xml","NF","write_numFmts","write_cellXfs","write_BrtFmt","rev_XLSBFillPTNames","XLSBFillPTNames","parse_BrtFill","write_BrtFill","fls","write_BrtXF","write_Blxf","parse_BrtBorder","write_sty_bin","write_FMTS_bin","grbit","write_FontFlags","sss","write_BrtFont","write_FONTS_bin","write_FILLS_bin","write_BORDERS_bin","write_CELLSTYLEXFS_bin","write_CELLXFS_bin","write_STYLES_bin","write_DXFS_bin","write_TABLESTYLES_bin","XLSXThemeClrScheme","parse_clrScheme","parse_fontScheme","parse_fmtScheme","clrsregex","fntsregex","fmtsregex","themeltregex","parse_theme_xml","write_theme","parse_themeElements","Themes","themeXLSX","parse_ExtProp","extType","xclrType","nTintShade","xclrValue","parse_IcvXF","parse_ColorTheme","parse_FullColorExt","parse_XFExtGradient","write_xlmeta_bin","write_BrtBeginEsfmd","cm","write_BrtBeginEsmdb","mdb","write_BrtMdb","write_xlmeta_xml","_shapeid","write_comments_vml","csize","joinstyle","gradientshapeok","coordsize","fillopts","fillparm","fillxml","fillcolor","strokecolor","sheet_insert_comments","threaded","write_comments_xml","iauthor","lastauthor","write_tcmnt_xml","carr","rootid","tcopts","tcid","personId","parse_BrtCommentAuthor","write_comments_bin","write_BrtCommentAuthor","write_BrtBeginComment","write_StrRun","CT_VBA","VBAFMTS","rcregex","rcbase","rcfunc","fstr","crefregex","$0","$4","$5","shift_formula_xlsx","_xlfn","parseread1","parse_ColRelU","parse_RgceArea","parse_RgceArea_BIFF2","parse_RgceLoc","parse_RgceLoc_BIFF2","parse_RgceElfLoc","fQuoted","parse_PtgAttrBaxcel","bitSemi","parse_PtgAttrSpaceType","parse_SerAr","parse_PtgExtraMem","parse_PtgExtraArray","parse_PtgElfLoc","parse_PtgElfNoop","parse_PtgElfLel","PtgListRT","PtgTypes","iftab","FtabArgc","Ftab","cparams","parsetab","Cetab","nameindex","parse_RgceLocRel_BIFF2","parse_RgceLocRel","parse_RgceAreaRel","ixti","parse_PtgNameX_BIFF5","PtgDupes","Ptg18","coltype","Ptg19","bitIf","bitGoto","ptgs","stringify_array","PtgBinOp","PtgAdd","PtgConcat","PtgDiv","PtgEq","PtgGe","PtgGt","PtgLe","PtgLt","PtgMul","PtgNe","PtgPower","PtgSub","get_ixti_raw","supbooks","XTI","SID","get_ixti","ixtiraw","sname","formula_quote_sheet_name","stringify_formula","nameidx","last_sp","fflen","lbl","xlfn","externbook","bookidx","ixtidata","lp","sharedf","parsedf","fnd","arrayf","_left","parse_SharedParsedFormula","parse_Formula","parse_FormulaValue","cbf","parse_XLSCellParsedFormula","parse_XLSBParsedFormula","parse_XLSBArrayParsedFormula","parse_XLSBCellParsedFormula","parse_XLSBNameParsedFormula","parse_XLSBSharedParsedFormula","ods_to_csf_formula","ods_to_csf_3D","_ssfopts","browser_has_Map","get_sst_id","revarr","col_obj_w","default_margins","get_cell_style","revssf","ssf","safe_format","fmtid","fillid","raw_rgb","check_ws","mergecregex","sheetdataregex","hlinkregex","dimregex","colregex","afregex","marginregex","sheetprregex","sheetprregex2","svsregex","parse_ws_xml_sheetpr","sheetPr","codeName","CodeName","sheetprot_deffalse","sheetprot_deftrue","sviewregex","write_ws_xml_cell","oldt","oldv","Strings","revStrings","parse_ws_xml_data","cellregex","rowregex","isregex","refregex","match_v","match_f","sdata","sstr","ftag","cref","tagr","tagc","do_format","rowobj","rowrite","marr","marrlen","rstarti","outa","rslice","cellFormula","___f","_tag","xlmeta","Cell","write_ws_xml","rdata","_drawing","needed","vbaraw","cname","outlineprops","summaryRight","above","write_ws_xml_sheetpr","sview","workbookViewId","rightToLeft","write_ws_xml_sheetviews","sheetFormat","_cell","write_ws_xml_data","write_ws_xml_protection","Names","Sheet","Ref","write_ws_xml_autofilter","relc","ignoreEC","numberStoredAsText","sqref","write_row_header","ncolspan","lcs","caddr","write_BrtRowHdr","parse_BrtWsDim","write_BrtWsDim","parse_BrtShortReal","parse_BrtMergeCell","write_BrtMergeCell","BrtMarginKeys","write_ws_bin_cell","last_seen","ncell","write_BrtShortIsst","write_BrtCellIsst","write_BrtShortSt","write_BrtCellSt","write_BrtShortRk","write_BrtCellRk","write_BrtShortReal","write_BrtCellReal","write_BrtShortBool","write_BrtCellBool","write_BrtShortError","write_BrtCellError","write_BrtShortBlank","write_BrtCellBlank","write_ws_bin","write_BrtWsProp","write_BrtBeginWsView","write_WSVIEWS2","write_BrtColInfo","write_COLINFOS","write_CELLTABLE","write_SHEETPROTECT","write_AUTOFILTER","write_MERGECELLS","locidx","write_BrtHLink","write_HLINKS","write_IGNOREECS","write_LEGACYDRAWING","WBPropsDef","WBViewDef","SheetDef","CalcPrDef","push_defaults_array","push_defaults","parse_wb_defaults","WBProps","CalcPr","WBView","badchars","check_ws_name","_good","check_wb","wbnsregex","write_wb_xml","write_names","workbookPr","Comment","localSheetId","parse_BrtFRTArchID$","ArchID","write_wb_bin","write_BrtFileVersion","filterPrivacy","write_BrtWbProp","vistab","write_BOOKVIEWS","iTabID","strRelID","write_BrtBundleSh","write_BUNDLESHS","parse_ws","seencol","RR","aii","relId","Rel","rfx","tmpref","parse_ws_bin","mtch","parse_ws_xml_sheetpr2","parse_ws_xml_dim","svs","parse_ws_xml_sheetviews","coli","colm","colM","parse_ws_xml_cols","afilter","parse_ws_xml_autofilter","_merge","hlink","parse_ws_xml_hlinks","parse_ws_xml","write_ws","write_cmnt","XLMLFormatMap","attregexg2","attregex2","xlml_parsexmltag","xlml_parsexmltagobj","xlml_set_custprop","Custprops","oval","process_style_xlml","stag","Interior","parse_xlml_data","csty","Parent","safe_format_xlml","Formula","ArrayRange","xlml_clean_comment","parse_xlml_xml","opening","ishtml","html_to_sheet","html_to_workbook","sheetnames","cursheet","sheetname","dtag","didx","fidx","pidx","cstys","wsprops","raw_Rn3","HRef","HRefScreenTip","MergeDown","cma","AutoFitHeight","Height","ssfidx","_col","Span","_NamedRange","_DefinedName","RefersTo","AutoFilter","parse_fods","Margin","pagemargins","bookSheets","bookProps","parse_xlml","fix_read_opts","write_name_xlml","write_ws_xlml_cell","_v","write_ws_xlml_row","write_ws_xlml","write_ws_xlml_names","write_ws_xlml_table","scenarios","selectLockedCells","selectUnlockedCells","write_ws_xlml_wsopts","write_xlml","xlml_write_docprops","BLACKLIST","xlml_write_custprops","write_props_xlml","write_sty_xlml","write_names_xlml","CONTINUE_RT","slurp","RecordType","insitu","nextrt","XLSRecordEnum","safe_format_xf","make_cell","PSCLSID","SI","DSI","UDI","parse_xlscfb","CompObj","WorkbookP","AnsiUserType","AnsiClipboardFormat","parse_ClipboardFormatOrAnsiString","Reserved1","UnicodeClipboardFormat","parse_ClipboardFormatOrUnicodeString","Reserved2","parse_compobj","lastcell","cmnt","rngC","rngR","temp_val","country","Directory","last_formula","cur_sheet","Preamble","last_cell","XFs","get_rgb","addcell","file_depth","xfd","icvFore","icvBack","process_cell_style","afi","rrtabid","lastuser","winlocked","wtf","last_lbl","last_RT","BIFF2Fmt","BIFF2FmtTable","FilterDatabases","seen_codepage","Date1904","WriteProtect","cpval","CalcRefMode","FullCalc","fDialog","fBelow","fRight","ExternCount","tmpri","biffguess","fakebs8","rknum","rkrec","_fr","_fc","_fe","_arraystart","isst","_ixfe","b4idx","b2idx","cmo","lastobj","TxO","ImData","noteobj","xfe","Encryption","Metadata","Country","parse_workbook","bookVBA","newcfb","newpath","make_vba_xls","DocSummary","Summary","HeadingPairs","TitlesOfParts","parse_xls_props","bookFiles","Ptg","fBold","fItalic","fUnderline","fStrikeout","fOutline","fShadow","fCondense","fExtend","parse_FontFlags","bCharSet","xColorType","bR","bG","bB","parse_BrtColor","ixfeParent","ifmt","defaultThemeVersion","strName","autoCompressPictures","backupFile","hidePivotFieldList","promptedSolutions","publishItems","refreshAllConnections","saveExternalLinkValues","showBorderUnselectedTables","showInkAnnotation","showObjects","showPivotChartFilter","updateLinks","fAlwaysCalc","idObj","stAuthor","parse_NoteSh","Info","EncryptionVersionInfo","EncryptedVerifier","EncryptedVerifierHash","parse_RC4Header","EncryptionHeader","EncryptionVerifier","parse_RC4CryptoHeader","parse_FilePassHeader","XorArrayIndex","XorArray","verificationBytes","verifier","crypto_DecryptData_Method1","parse_XORObfuscation","dyHeight","Pos","Dim","CurTab","FirstTab","TabRatio","UserName","fts","parse_BIFF5Obj","parse_FtArray","ccv","rw","rkrecs","lastcol","ixfes","fStyle","alc","fWrap","alcV","fJustLast","trot","cIndent","fShrinkToFit","iReadOrder","fAtrNum","fAtrFnt","fAtrAlc","fAtrBdr","fAtrPat","fAtrProt","dgLeft","dgRight","dgTop","dgBottom","icvLeft","icvRight","grbitDiag","icvTop","icvBottom","icvDiag","dgDiag","fsxButton","parse_CellStyleXF","cmcs","ucnt","extsst","dsst","ctab","virtPath","rgst","accel","parse_ControlInfo","cchText","sVer","targetFrameName","moniker","oleMoniker","fileTime","Loc","parse_URLMoniker","cAnti","ansiPath","parse_FileMoniker","parse_HyperlinkMoniker","parse_Hyperlink","xnum","cUse","wzTooltip","cxfs","cexts","cchComment","themeXML","parse_frtHeader","lcb","write_BIFF2Cell","write_ws_biff2_cell","write_BIFF2INT","write_BIFF2NUM","write_BIFF2BERR","write_BIFF2LABEL","write_ws_biff8_cell","write_FormulaValue","write_Formula","write_Number","write_BoolErr","write_LabelSst","write_Label","write_ws_biff8","guts","_WB","_sheet","MAX_ROWS","write_ColInfo","write_ws_cols_biff8","write_Dimensions","write_Window2","write_MergeCells","HL","write_ws_biff8_hlinks","write_FEAT","write_biff8_global","_sheets","_wb","writezeroes","write_WriteAccess","write_RRTabId","safe1904","write_Font","write_FONTS_biff8","write_FMTS_biff8","write_CELLXFS_biff8","write_Country","write_biff_continue","write_SST","blen","write_biff_buf","fix_write_opts","write_biff8_buf","write_ws_biff2","write_biff2_buf","mtch2","midx","make_html_row","HTML_BEGIN","HTML_END","make_html_preamble","sheet_to_html","sheet_add_dom","or_R","or_C","is_dom_element_hidden","elts","Aelts","Aelti","parse_dom_table","get_computed_style","get_get_computed_style_function","number_formats_ods","parse_content_xml","sheetag","rowtag","NFtag","ctag","textp","textpidx","textR","row_ol","number_format_map","mrange","rowpeat","colpeat","atag","_Ref","creatoridx","isstub","intable","rptR","rpt","nrange","ptp","parse_ods","FEtag","parse_manifest","write_styles_ods","master_styles","write_content_ods","null_cell_xml","ods","ROWS","_Fref","text_p","_tgt","fods","cidx","colobj","write_automatic_styles_ods","write_ods","manifest","rdf","write_rdf","write_manifest","u8_to_dataview","u8str","u8","stru8","u8concat","u8a","popcnt","parse_varint49","varint","write_varint49","varint_to_i32","i32","parse_shallow","write_shallow","mappa","parse_iwa_file","write_iwa_file","ias","midata","aipayload","parse_snappy_chunk","decompress_iwa_file","compress_iwa_file","write_new_storage","writeDecimal128LE","setFloat64","setUint32","write_old_storage","parse_cell_storage","rsst","data_offset","ieee","getFloat64","parse_old_storage","d128","readDecimal128LE","parse_new_storage","parse_TSP_Reference","parse_TST_TableDataList","rtp","rtpref","mtype","tswpsa","parse_TST_TableInfoArchive","tableref","used_storage_u8","used_storage","wide_offsets","used_storage_offsets","parse_TST_TileRowInfo","nrows","parse_TST_Tile","parse_TST_TableModelArchive","parse_numbers_iwa","packets","packet","docroot","iwam","root2","parse_TN_SheetArchive","parse_TN_DocumentArchive","write_tile_row","tri","last_offset","cell_storage","_dv","_last_offset","_cell_storage","celload","_celload","setUint16","fix_opts_func","safe_parse_sheet","relsPath","sheetRels","stype","parse_cs_bin","parse_cs_xml","parse_cs","dfile","drelsp","parse_drawing","chartp","crelsp","csheet","parse_Cache","parse_chart","parse_ds","tcomments","authors","parse_comments_bin","commentList","authtag","cmnttag","authorId","textMatch","parse_comments_xml","parse_cmnt","tidx","parse_tcmnt_xml","strip_front_slash","_zip","binname","threadedcomments","coreprops","extprops","custprops","calcchains","vba","drawings","TODO","ctext","calcchain","parse_ct","parse_sst_bin","parse_sst_xml","parse_sst","parse_theme","parse_sty_bin","parse_sty","parse_xlink_bin","parse_xlink","parse_wb_bin","dname","dnstart","parse_wb_xml","parse_wb","propdata","parse_ext_props","toks","parse_cust_props","bookDeps","parse_cc_bin","parse_cc_xml","wbsheets","wbext","wbrelsi","wbrelsfile","wbrels","Types","metatype","parse_xlmeta_bin","lastmeta","parse_xlmeta_xml","parse_xlmeta","displayname","parse_people_xml","safe_parse_wbrels","nmode","wsloop","snjseen","snj","Deps","Styles","parse_xlsxcfb","dsm","parse_DataSpaceMap","seds","parse_DataSpaceDefinition","parse_TransformInfoHeader","ename","cmode","parse_Primary","einfo","parse_EncryptionInfo","decrypt_agile","decrypt_std76","dependents","packet2","indices_varint","ivi","mess","u8contains","sheetrootref","cruidsref","oldbucket","cruids","row_header_ref","base_bucket","_bucket","col_header_ref","sstref","sstroot","sentry","sxi","sstdata","newsst","raw32","tileref","tileroot","tentry","tiledata","rowload","R2","tilerow","raw3","write_numbers_iwa","vbafmt","_sn","wsrels","need_vml","rId1","write_sst","write_wb","write_sty","write_zip_xlsxb","write_zip_xlsx","needtc","person","providerId","write_people_xml","read_plaintext","read_prn","readSync","infile","read_binary","bstrify","read_cfb","OLD_WTF","read_wb_ID","read_zip","read_utf16","read_plaintext_raw","write_cfb_ctr","write_zip_denouement","oopts","ftype","encrypt_agile","write_string_type","bom","write_binary_type","writeSyncXLSX","write_zip_typeXLSX","writeSync","write_stxt_type","sheet_to_txt","sheet_to_csv","wbpath","Keys","DSEntries","SEntries","CEntries","DocSummaryRE","SummaryRE","CEntries2","write_xls_props","fill_vba_xls","write_xlscfb","write_cfb_type","write_zip_type","resolve_book_type","writeFileSyncXLSX","writeFileAsync","_cb","make_json_row","defval","isempty","__rowNum__","rawNumbers","outi","header_cnt","skipHidden","blankrows","qreg","make_csv_row","forceQuotes","endregex","sheet_add_json","JS","ws_get_cell_stub","RC","cell_set_hyperlink","_Readable","split_cell","table_to_sheet","table_to_book","sheet_to_formulae","cmds","sheet_to_row_object_array","sheet_get_cell","book_set_sheet_visibility","vis","wb_sheet_idx","cell_set_number_format","cell_set_internal_link","cell_add_comment","sheet_set_array_formula","dynamic","rngstr","SHEET_VISIBLE","SHEET_HIDDEN","SHEET_VERY_HIDDEN","__stream","to_json","objectMode","_read","to_html","to_csv","BOM","set_readable"],"sourceRoot":""}